<?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>192316</bug_id>
          
          <creation_ts>2018-12-03 11:55:18 -0800</creation_ts>
          <short_desc>Update libwebrtc up to 0d007d7c4f</short_desc>
          <delta_ts>2018-12-07 15:38:48 -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 Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>alex</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>tsaunier</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1484429</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-03 11:55:18 -0800</bug_when>
    <thetext>Update libwebrtc up to 0d007d7c4f</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484434</commentid>
    <comment_count>1</comment_count>
      <attachid>356390</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-03 12:02:15 -0800</bug_when>
    <thetext>Created attachment 356390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484624</commentid>
    <comment_count>2</comment_count>
      <attachid>356436</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-03 16:53:03 -0800</bug_when>
    <thetext>Created attachment 356436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484738</commentid>
    <comment_count>3</comment_count>
      <attachid>356469</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-03 22:20:46 -0800</bug_when>
    <thetext>Created attachment 356469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485964</commentid>
    <comment_count>4</comment_count>
      <attachid>356793</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-12-07 02:56:07 -0800</bug_when>
    <thetext>Created attachment 356793
GTK patch

This patch fixes compilation for GTK with the upgrade. I have also made some small test with webrtc in appr.tc and it works for chrome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485965</commentid>
    <comment_count>5</comment_count>
      <attachid>356793</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-12-07 02:59:00 -0800</bug_when>
    <thetext>Comment on attachment 356793
GTK patch

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

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/rtc_base/logging.cc:84
&gt;                             const char* tag) {
&gt; -  OnLogMessage(tag + (&quot;: &quot; + msg));
&gt; +  OnLogMessage(tag + (&quot;: &quot; + msg), severity);
&gt; +}
&gt; +
&gt; +void LogSink::OnLogMessage(const std::string&amp; msg,
&gt; +                           LoggingSeverity /* severity */) {
&gt; +  OnLogMessage(msg);
&gt;  }

This change adds again code removed previously in WebKit, not sure the reason we removed this originally.

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/rtc_base/task_queue_libevent.cc:31
&gt; +#if defined(WEBRTC_LINUX)
&gt; +#include &lt;event2/event.h&gt;
&gt; +#include &lt;event2/event_compat.h&gt;
&gt; +#include &lt;event2/event_struct.h&gt;
&gt; +#else
&gt;  #include &quot;base/third_party/libevent/event.h&quot;
&gt; +#endif

This is the usual requirement to use system libevent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486011</commentid>
    <comment_count>6</comment_count>
      <attachid>356816</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-07 08:57:14 -0800</bug_when>
    <thetext>Created attachment 356816
Patch with GTK changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486103</commentid>
    <comment_count>7</comment_count>
      <attachid>356816</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-12-07 12:01:00 -0800</bug_when>
    <thetext>Comment on attachment 356816
Patch with GTK changes

rs=me once the bots are happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486126</commentid>
    <comment_count>8</comment_count>
      <attachid>356816</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 13:44:44 -0800</bug_when>
    <thetext>Comment on attachment 356816
Patch with GTK changes

Clearing flags on attachment: 356816

Committed r238967: &lt;https://trac.webkit.org/changeset/238967&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486127</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 13:44:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486128</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-07 13:45:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/46563726&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486171</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-07 14:59:50 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486172</commentid>
    <comment_count>12</comment_count>
      <attachid>356841</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-07 14:59:51 -0800</bug_when>
    <thetext>Created attachment 356841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486189</commentid>
    <comment_count>13</comment_count>
      <attachid>356841</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 15:38:46 -0800</bug_when>
    <thetext>Comment on attachment 356841
Patch

Clearing flags on attachment: 356841

Committed r238971: &lt;https://trac.webkit.org/changeset/238971&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486190</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 15:38:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356390</attachid>
            <date>2018-12-03 12:02:15 -0800</date>
            <delta_ts>2018-12-03 16:29:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192316-20181203120213.patch</filename>
            <type>text/plain</type>
            <size>8290382</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA2OTAxMTExMmZhOGI1ZWNlNjYwY2UyZjg3N2UzOTBjZGUwMDMzMWRlLi4zOWI0
NWQ2N2RkNzA5YjViYzc1OGNmZDVjMTkxMDdkODI0ZDgxODMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMi0wMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB1cCB0
byAwZDAwN2Q3YzRmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTIzMTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGluZyB0byBsYXRlc3QgbGlid2VicnRjIHdpbGwgYWxsb3dzIGNoZXJyeS1waWNr
aW5nIGltcG9ydGFudCBidWcgZml4ZXMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAg
ICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcDogcmVmcmVzaGVkLgorICAgICAgICAq
IFNvdXJjZS93ZWJydGM6IHJlZnJlc2hlZC4KKyAgICAgICAgKiBXZWJLaXQvMDAwMS1saWJ3ZWJy
dGMtY2hhbmdlcy5wYXRjaDogUmVtb3ZlZC4KKyAgICAgICAgKiBsaWJ3ZWJydGMueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMS0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIG9mIG1zaWQgaW5mb3JtYXRpb24gaW4gdGhlIFNE
UCBzaG91bGQgdHJpZ2dlciB0aGUgY29ycmVzcG9uZGluZyB0cmFjayBldmVudHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAyMjVkNmFiOTI3MmY2NWYwMmNjYTIxNTVjY2Y4OGNiMmY5NTEwYzE3Li5lOGY0ZGY0YWNk
ZmJhNTI2MDc0NzdhOGVjMmNmNjZhODhjNjYwYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTgtMTItMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAg
ICAgIFVwZGF0ZSBsaWJ3ZWJydGMgdXAgdG8gMGQwMDdkN2M0ZgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzE2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGluY2x1ZGUgYWNjb3JkaW5nIG5l
dyBsaWJ3ZWJydGMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuY3BwOgorCiAyMDE4LTExLTMwICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2Ugb2YgbXNpZCBpbmZvcm1hdGlvbiBpbiB0
aGUgU0RQIHNob3VsZCB0cmlnZ2VyIHRoZSBjb3JyZXNwb25kaW5nIHRyYWNrIGV2ZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBmODhiMGQ0MGI1OGE3NzU4MThjYzFkZTFkMjU4NzExZmRmOGFhOGNiLi4xYzY3ZmY5
Yzc3OGIzMWYzMmU3ZWVlYWMwYTFlYzhjZmZjODYwN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDE4LTEyLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBVcGRhdGUgbGlid2VicnRjIHVwIHRvIDBkMDA3ZDdjNGYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMxNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIGJhc2UgYWNjb3JkaW5n
IG5ldyBsaWJ3ZWJydGMgYmFja2VuZAorICAgICAgICBJbiBwYXJ0aWN1bGFyLCB1c2UgZGlyZWN0
bHkgaW50NjRfdCBmb3IgcGFja2V0IHRpbWUuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9X
ZWJLaXQueGNjb25maWc6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldENsaWVu
dDo6c2lnbmFsUmVhZFBhY2tldCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ1NvY2tldENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDU29ja2V0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENTb2NrZXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXQ6OnNp
Z25hbFJlYWRQYWNrZXQpOgorCiAyMDE4LTExLTI4ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFw
cGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgZ2VuZXJhdGUte2Rlcml2ZWQsdW5pZmllZH0tc291
cmNlcyBzY3JpcHRzIHRvIHN1cHBvcnQgZ2VuZXJhdGluZyAueGNmaWxlbGlzdCBmaWxlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGQ5NWQ1MWVhMGM4MTdhZDA2YWNlODBlYTJkMDI2YzQ4
M2FlN2IyYWIuLjYyMjg2ZWRjNTUyZGFhZGQyOWQzMTQzNzM4NTA3MTc1NTY0ZGVlYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJy
dGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTIxOCw3ICsyMTgsNiBAQCBfX1pOSzZ3ZWJydGMxOFJ0
cFNlbmRlckludGVyZmFjZTE5aW5pdF9zZW5kX2VuY29kaW5nc0V2CiBfX1pOSzZ3ZWJydGMxOFJ0
cFNlbmRlckludGVyZmFjZTE3R2V0RnJhbWVFbmNyeXB0b3JFdgogX19aTjZ3ZWJydGMxOFJ0cFNl
bmRlckludGVyZmFjZTE3U2V0RnJhbWVFbmNyeXB0b3JFTjNydGMxM3Njb3BlZF9yZWZwdHJJTlNf
MjNGcmFtZUVuY3J5cHRvckludGVyZmFjZUVFRQogX19aTjZ3ZWJydGMzMFBlZXJDb25uZWN0aW9u
RmFjdG9yeUludGVyZmFjZTE3Q3JlYXRlVmlkZW9Tb3VyY2VFTlN0M19fMTEwdW5pcXVlX3B0cklO
N2NyaWNrZXQxM1ZpZGVvQ2FwdHVyZXJFTlMxXzE0ZGVmYXVsdF9kZWxldGVJUzRfRUVFRQotX19a
TkszcnRjMTROZXR3b3JrTWFuYWdlcjE2R2V0TURuc1Jlc3BvbmRlckV2CiBfX1pUVk42d2VicnRj
MThSdHBTZW5kZXJJbnRlcmZhY2VFCiBfX1pOM3J0YzIzUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3JD
MUVQTlNfNlRocmVhZEVTMl8KIF9fWk4zcnRjOUtleVBhcmFtczNSU0FFaWkKQEAgLTIzMywzICsy
MzIsOSBAQCBfX1pONndlYnJ0YzI2UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXNDMUVQTlNfMjJQ
ZWVyQ29ubmVjdGlvbk9ic2VydmVyRQogX19aTjZ3ZWJydGMzMFBlZXJDb25uZWN0aW9uRmFjdG9y
eUludGVyZmFjZTIwQ3JlYXRlUGVlckNvbm5lY3Rpb25FUktOU18yM1BlZXJDb25uZWN0aW9uSW50
ZXJmYWNlMTZSVENDb25maWd1cmF0aW9uRU5TdDNfXzExMHVuaXF1ZV9wdHJJTjdjcmlja2V0MTNQ
b3J0QWxsb2NhdG9yRU5TNV8xNGRlZmF1bHRfZGVsZXRlSVM4X0VFRUVOUzZfSU4zcnRjMzJSVEND
ZXJ0aWZpY2F0ZUdlbmVyYXRvckludGVyZmFjZUVOUzlfSVNEX0VFRUVQTlNfMjJQZWVyQ29ubmVj
dGlvbk9ic2VydmVyRQogX19aTjZ3ZWJydGMyOVNldFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVy
OU9uRmFpbHVyZUVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJY0VF
TlMxXzlhbGxvY2F0b3JJY0VFRUUKIF9fWk42d2VicnRjMzJDcmVhdGVTZXNzaW9uRGVzY3JpcHRp
b25PYnNlcnZlcjlPbkZhaWx1cmVFUktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMV8xMWNoYXJf
dHJhaXRzSWNFRU5TMV85YWxsb2NhdG9ySWNFRUVFCitfX1pONndlYnJ0YzEzQ3J5cHRvT3B0aW9u
c0MxRVJLUzBfCitfX1pONndlYnJ0YzEzQ3J5cHRvT3B0aW9uc0QxRXYKK19fWk5LNndlYnJ0YzIw
QXVkaW9Tb3VyY2VJbnRlcmZhY2U3b3B0aW9uc0V2CitfX1pUVk42d2VicnRjMjBBdWRpb1NvdXJj
ZUludGVyZmFjZUUKK19fWk42d2VicnRjMjNQZWVyQ29ubmVjdGlvbkludGVyZmFjZTIxcGVlcl9j
b25uZWN0aW9uX3N0YXRlRXYKK19fWk5LM3J0YzE0TmV0d29ya01hbmFnZXIxNkdldE1kbnNSZXNw
b25kZXJFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCmluZGV4IDE5ZDBmZTZiMjAxZDk2
Y2JmZDFjMWMxZDA4Njc0MDk3NzEwN2E2ZjAuLmUzMTI2YmYwNmZkOTg3MGFhOWYzZjk5YzQ3NTNj
ZTFjODAxMzhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKQEAgLTIxOSw3ICsy
MTksNiBAQCBfX1pOSzZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFjZTE5aW5pdF9zZW5kX2VuY29k
aW5nc0V2CiBfX1pOSzZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFjZTE3R2V0RnJhbWVFbmNyeXB0
b3JFdgogX19aTjZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFjZTE3U2V0RnJhbWVFbmNyeXB0b3JF
TjNydGMxM3Njb3BlZF9yZWZwdHJJTlNfMjNGcmFtZUVuY3J5cHRvckludGVyZmFjZUVFRQogX19a
TjZ3ZWJydGMzMFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTE3Q3JlYXRlVmlkZW9Tb3Vy
Y2VFTlN0M19fMTEwdW5pcXVlX3B0cklON2NyaWNrZXQxM1ZpZGVvQ2FwdHVyZXJFTlMxXzE0ZGVm
YXVsdF9kZWxldGVJUzRfRUVFRQotX19aTkszcnRjMTROZXR3b3JrTWFuYWdlcjE2R2V0TURuc1Jl
c3BvbmRlckV2CiBfX1pUVk42d2VicnRjMThSdHBTZW5kZXJJbnRlcmZhY2VFCiBfX1pOM3J0YzIz
UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3JDMUVQTlNfNlRocmVhZEVTMl8KIF9fWk4zcnRjOUtleVBh
cmFtczNSU0FFaWkKQEAgLTIzNCwzICsyMzMsOSBAQCBfX1pONndlYnJ0YzI2UGVlckNvbm5lY3Rp
b25EZXBlbmRlbmNpZXNDMUVQTlNfMjJQZWVyQ29ubmVjdGlvbk9ic2VydmVyRQogX19aTjZ3ZWJy
dGMzMFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTIwQ3JlYXRlUGVlckNvbm5lY3Rpb25F
UktOU18yM1BlZXJDb25uZWN0aW9uSW50ZXJmYWNlMTZSVENDb25maWd1cmF0aW9uRU5TdDNfXzEx
MHVuaXF1ZV9wdHJJTjdjcmlja2V0MTNQb3J0QWxsb2NhdG9yRU5TNV8xNGRlZmF1bHRfZGVsZXRl
SVM4X0VFRUVOUzZfSU4zcnRjMzJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvckludGVyZmFjZUVOUzlf
SVNEX0VFRUVQTlNfMjJQZWVyQ29ubmVjdGlvbk9ic2VydmVyRQogX19aTjZ3ZWJydGMyOVNldFNl
c3Npb25EZXNjcmlwdGlvbk9ic2VydmVyOU9uRmFpbHVyZUVSS05TdDNfXzExMmJhc2ljX3N0cmlu
Z0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMxXzlhbGxvY2F0b3JJY0VFRUUKIF9fWk42d2VicnRj
MzJDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjlPbkZhaWx1cmVFUktOU3QzX18xMTJi
YXNpY19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5TMV85YWxsb2NhdG9ySWNFRUVFCitf
X1pONndlYnJ0YzEzQ3J5cHRvT3B0aW9uc0MxRVJLUzBfCitfX1pONndlYnJ0YzEzQ3J5cHRvT3B0
aW9uc0QxRXYKK19fWk5LNndlYnJ0YzIwQXVkaW9Tb3VyY2VJbnRlcmZhY2U3b3B0aW9uc0V2Citf
X1pUVk42d2VicnRjMjBBdWRpb1NvdXJjZUludGVyZmFjZUUKK19fWk42d2VicnRjMjNQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTIxcGVlcl9jb25uZWN0aW9uX3N0YXRlRXYKK19fWk5LM3J0YzE0TmV0
d29ya01hbmFnZXIxNkdldE1kbnNSZXNwb25kZXJFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmlu
ZGV4IDE5ZDBmZTZiMjAxZDk2Y2JmZDFjMWMxZDA4Njc0MDk3NzEwN2E2ZjAuLmUzMTI2YmYwNmZk
OTg3MGFhOWYzZjk5YzQ3NTNjZTFjODAxMzhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAK
QEAgLTIxOSw3ICsyMTksNiBAQCBfX1pOSzZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFjZTE5aW5p
dF9zZW5kX2VuY29kaW5nc0V2CiBfX1pOSzZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFjZTE3R2V0
RnJhbWVFbmNyeXB0b3JFdgogX19aTjZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFjZTE3U2V0RnJh
bWVFbmNyeXB0b3JFTjNydGMxM3Njb3BlZF9yZWZwdHJJTlNfMjNGcmFtZUVuY3J5cHRvckludGVy
ZmFjZUVFRQogX19aTjZ3ZWJydGMzMFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTE3Q3Jl
YXRlVmlkZW9Tb3VyY2VFTlN0M19fMTEwdW5pcXVlX3B0cklON2NyaWNrZXQxM1ZpZGVvQ2FwdHVy
ZXJFTlMxXzE0ZGVmYXVsdF9kZWxldGVJUzRfRUVFRQotX19aTkszcnRjMTROZXR3b3JrTWFuYWdl
cjE2R2V0TURuc1Jlc3BvbmRlckV2CiBfX1pUVk42d2VicnRjMThSdHBTZW5kZXJJbnRlcmZhY2VF
CiBfX1pOM3J0YzIzUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3JDMUVQTlNfNlRocmVhZEVTMl8KIF9f
Wk4zcnRjOUtleVBhcmFtczNSU0FFaWkKQEAgLTIzNCwzICsyMzMsOSBAQCBfX1pONndlYnJ0YzI2
UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXNDMUVQTlNfMjJQZWVyQ29ubmVjdGlvbk9ic2VydmVy
RQogX19aTjZ3ZWJydGMzMFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTIwQ3JlYXRlUGVl
ckNvbm5lY3Rpb25FUktOU18yM1BlZXJDb25uZWN0aW9uSW50ZXJmYWNlMTZSVENDb25maWd1cmF0
aW9uRU5TdDNfXzExMHVuaXF1ZV9wdHJJTjdjcmlja2V0MTNQb3J0QWxsb2NhdG9yRU5TNV8xNGRl
ZmF1bHRfZGVsZXRlSVM4X0VFRUVOUzZfSU4zcnRjMzJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcklu
dGVyZmFjZUVOUzlfSVNEX0VFRUVQTlNfMjJQZWVyQ29ubmVjdGlvbk9ic2VydmVyRQogX19aTjZ3
ZWJydGMyOVNldFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyOU9uRmFpbHVyZUVSS05TdDNfXzEx
MmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMxXzlhbGxvY2F0b3JJY0VFRUUK
IF9fWk42d2VicnRjMzJDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjlPbkZhaWx1cmVF
UktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5TMV85YWxsb2Nh
dG9ySWNFRUVFCitfX1pONndlYnJ0YzEzQ3J5cHRvT3B0aW9uc0MxRVJLUzBfCitfX1pONndlYnJ0
YzEzQ3J5cHRvT3B0aW9uc0QxRXYKK19fWk5LNndlYnJ0YzIwQXVkaW9Tb3VyY2VJbnRlcmZhY2U3
b3B0aW9uc0V2CitfX1pUVk42d2VicnRjMjBBdWRpb1NvdXJjZUludGVyZmFjZUUKK19fWk42d2Vi
cnRjMjNQZWVyQ29ubmVjdGlvbkludGVyZmFjZTIxcGVlcl9jb25uZWN0aW9uX3N0YXRlRXYKK19f
Wk5LM3J0YzE0TmV0d29ya01hbmFnZXIxNkdldE1kbnNSZXNwb25kZXJFdgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L0NNYWtlL0Fic2VpbEhlbHBlcnMuY21ha2UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQWJzZWlsSGVscGVycy5jbWFrZQpp
bmRleCBlNGVhZmU0OWU0NzkwNjUxNWU0NDhhMmRlZjU5Zjc2MjliMmJhMzkzLi4wYzkzNDE3NDc1
MTJjZWI2MTczNTQxYzdmNGEyNjY3YTE1YjU3NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQWJzZWls
SGVscGVycy5jbWFrZQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQWJzZWlsSGVscGVycy5jbWFrZQpAQCAtMTIzLDcg
KzEyMyw3IEBAIGVuZGZ1bmN0aW9uKCkKICMKICMgYWxsIHRlc3RzIHdpbGwgYmUgcmVnaXN0ZXIg
Zm9yIGV4ZWN1dGlvbiB3aXRoIGFkZF90ZXN0KCkKICMKLSMgdGVzdCBjb21waWxhdGlvbiBhbmQg
ZXhlY3V0aW9uIGlzIGRpc2FibGUgd2hlbiBCVUlMRF9URVNUSU5HPU9GRgorIyB0ZXN0IGNvbXBp
bGF0aW9uIGFuZCBleGVjdXRpb24gaXMgZGlzYWJsZSB3aGVuIEFCU0xfUlVOX1RFU1RTPU9GRgog
IwogZnVuY3Rpb24oYWJzbF90ZXN0KQogCkBAIC0xMzUsNyArMTM1LDcgQEAgZnVuY3Rpb24oYWJz
bF90ZXN0KQogICApCiAKIAotICBpZihCVUlMRF9URVNUSU5HKQorICBpZihBQlNMX1JVTl9URVNU
UykKIAogICAgIHNldChfTkFNRSAke0FCU0xfVEVTVF9UQVJHRVR9KQogICAgIHN0cmluZyhUT1VQ
UEVSICR7X05BTUV9IF9VUFBFUl9OQU1FKQpAQCAtMTUzLDcgKzE1Myw3IEBAIGZ1bmN0aW9uKGFi
c2xfdGVzdCkKICAgICBzZXRfcHJvcGVydHkoVEFSR0VUICR7X05BTUV9X2JpbiBQUk9QRVJUWSBG
T0xERVIgJHtBQlNMX0lERV9GT0xERVJ9KQogCiAgICAgYWRkX3Rlc3QoJHtfTkFNRX0gJHtfTkFN
RX1fYmluKQotICBlbmRpZihCVUlMRF9URVNUSU5HKQorICBlbmRpZihBQlNMX1JVTl9URVNUUykK
IAogZW5kZnVuY3Rpb24oKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2VM
aXN0cy50eHQKaW5kZXggODlhMzM4NmY3ZTI1OGVmYzk3MzliMzUxNzU2NmM1OTFmMDJhZGU3ZS4u
OWE3ZTEwMzFiMjM1MTEwNGUzZWM4MzIxMTRhOGQ2Yjc1ZDU1MDRjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZUxpc3RzLnR4dApAQCAtMzIsNyArMzIsNyBAQCBpZiAo
TVNWQykKICAgIyAvd2Q0MjQ0ICBjb252ZXJzaW9uIGZyb20gJ3R5cGUxJyB0byAndHlwZTInCiAg
ICMgL3dkNDI2NyAgY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICd0eXBlMicKICAgIyAvd2Q0
ODAwICBmb3JjZSB2YWx1ZSB0byBib29sICd0cnVlJyBvciAnZmFsc2UnIChwZXJmb3JtYW5jZSB3
YXJuaW5nKQotICBhZGRfY29tcGlsZV9vcHRpb25zKC9XMyAvV1ggL3dkNDAwNSAvd2Q0MDY4IC93
ZDQyNDQgL3dkNDI2NyAvd2Q0ODAwKQorICBhZGRfY29tcGlsZV9vcHRpb25zKC9XMyAvd2Q0MDA1
IC93ZDQwNjggL3dkNDI0NCAvd2Q0MjY3IC93ZDQ4MDApCiAgIGFkZF9kZWZpbml0aW9ucygvRE5P
TUlOTUFYIC9EV0lOMzJfTEVBTl9BTkRfTUVBTj0xIC9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1Mg
L0RfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUykKIGVsc2UoKQogICBzZXQoQUJTTF9TVERfQ1hYX0ZM
QUcgIi1zdGQ9YysrMTEiIENBQ0hFIFNUUklORyAiYysrIHN0ZCBmbGFnIChkZWZhdWx0OiBjKysx
MSkiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9PV05FUlMKaW5kZXggY2VjYTRhOGJhMmNiMTZi
ZDhkMWQ3ODMzYmVkZjc4ZTZmMDljOTNhMS4uMzhlYmFmMjI5NWQxYTYxNjA1NjY1MDQwM2FiYjg5
YTA5MjgwZGQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvT1dORVJTCkBAIC0xLDIgKzEs
NCBAQAorZGFuaWxjaGFwQGNocm9taXVtLm9yZwora3dpYmVyZ0BjaHJvbWl1bS5vcmcKIG1ib25h
ZGVpQGNocm9taXVtLm9yZwogcGhvZ2x1bmRAY2hyb21pdW0ub3JnCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvUkVB
RE1FLmNocm9taXVtIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL1JFQURNRS5jaHJvbWl1bQppbmRleCA5MWQ2ZDM4MWE0NzcwNDQ1MGI1
OTlhMDA5ZjA0OWM3MDdiMWE5MjMyLi42MDI2YTJmNGUyMDYxM2VkYjUzZTE2OGJmYjQzOGYyMGZl
NGMxZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvUkVBRE1FLmNocm9taXVtCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9SRUFETUUuY2hyb21p
dW0KQEAgLTQsNyArNCw3IEBAIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL2Fic2VpbC9hYnNlaWwt
Y3BwCiBMaWNlbnNlOiBBcGFjaGUgMi4wCiBMaWNlbnNlIEZpbGU6IExJQ0VOU0UKIFZlcnNpb246
IDAKLVJldmlzaW9uOiBiZWE4NWI1MjczMzAyMjI5NGVlZjEwOGEyZTQyZDc3YjYxNmRkY2EyCitS
ZXZpc2lvbjogZmI0NjIyMjRjMDU4NDg3NzYzZjI2M2I3OTk1ZDcwZWZkMDI0MmMxNwogU2VjdXJp
dHkgQ3JpdGljYWw6IHllcwogCiBEZXNjcmlwdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9XT1JLU1BBQ0Ug
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvV09SS1NQQUNFCmluZGV4IGU0YTkxMTk3OGRjNjgyNTY5NWEyODQxM2JkZmEyMzU1YWNjZGEy
N2QuLjcyZWYxMzk4MGMyOTI2MzgzMmNiYjIyZjk4Zjc5YWU4NTk4MjFmZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9XT1JLU1BBQ0UKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL1dPUktTUEFDRQpAQCAtNSwxMSArNSwxMSBAQCBsb2FkKCJAYmF6
ZWxfdG9vbHMvL3Rvb2xzL2J1aWxkX2RlZnMvcmVwbzpodHRwLmJ6bCIsICJodHRwX2FyY2hpdmUi
KQogaHR0cF9hcmNoaXZlKAogICBuYW1lID0gImJhemVsX3Rvb2xjaGFpbnMiLAogICB1cmxzID0g
WwotICAgICJodHRwczovL21pcnJvci5iYXplbC5idWlsZC9naXRodWIuY29tL2JhemVsYnVpbGQv
YmF6ZWwtdG9vbGNoYWlucy9hcmNoaXZlLzI4N2I2NGUwYTIxMWZiN2MyM2I3NDY5NWY4ZDVmNTIw
NWI2MWY0ZWIudGFyLmd6IiwKLSAgICAiaHR0cHM6Ly9naXRodWIuY29tL2JhemVsYnVpbGQvYmF6
ZWwtdG9vbGNoYWlucy9hcmNoaXZlLzI4N2I2NGUwYTIxMWZiN2MyM2I3NDY5NWY4ZDVmNTIwNWI2
MWY0ZWIudGFyLmd6IiwKKyAgICAiaHR0cHM6Ly9taXJyb3IuYmF6ZWwuYnVpbGQvZ2l0aHViLmNv
bS9iYXplbGJ1aWxkL2JhemVsLXRvb2xjaGFpbnMvYXJjaGl2ZS9iYzA5Yjk5NWMxMzdkZjA0MmJi
ODBhMzk1YjczZDdjZTZmMjZhZmJlLnRhci5neiIsCisgICAgImh0dHBzOi8vZ2l0aHViLmNvbS9i
YXplbGJ1aWxkL2JhemVsLXRvb2xjaGFpbnMvYXJjaGl2ZS9iYzA5Yjk5NWMxMzdkZjA0MmJiODBh
Mzk1YjczZDdjZTZmMjZhZmJlLnRhci5neiIsCiAgIF0sCi0gIHN0cmlwX3ByZWZpeCA9ICJiYXpl
bC10b29sY2hhaW5zLTI4N2I2NGUwYTIxMWZiN2MyM2I3NDY5NWY4ZDVmNTIwNWI2MWY0ZWIiLAot
ICBzaGEyNTYgPSAiYWNhOGFjNmFmZDc3NDUwMjdlZTRhNDMwMzJiNTFhNzI1YTYxYTc1YTMwZjAy
Y2M1ODY4MWVlODdlNGRjZGY0YiIsCisgIHN0cmlwX3ByZWZpeCA9ICJiYXplbC10b29sY2hhaW5z
LWJjMDliOTk1YzEzN2RmMDQyYmI4MGEzOTViNzNkN2NlNmYyNmFmYmUiLAorICBzaGEyNTYgPSAi
NDMyOTY2M2ZlNmM1MjM0MjVhZDRkM2M5ODlhOGFjMDI2YjA0ZTFhY2VkZWNlYjU2YWE0YjE5MGZh
N2YzOTczYyIsCiApCiAKICMgR29vZ2xlVGVzdC9Hb29nbGVNb2NrIGZyYW1ld29yay4gVXNlZCBi
eSBtb3N0IHVuaXQtdGVzdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL0NNYWtlTGlzdHMudHh0CmluZGV4IDY4OWY2NGUyNThiYWFjOTkyMDFjZmE3ODk0ZGJjYjgw
NTQyNDA4ZGYuLjFkMDliMTkzNWQ4NDczNWQ2ZGM5MDc0MmE2NDViMjg4NTBhZWVjNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL0NNYWtlTGlzdHMudHh0CkBA
IC0yMCw2ICsyMCw3IEBAIGFkZF9zdWJkaXJlY3RvcnkoYmFzZSkKIGFkZF9zdWJkaXJlY3Rvcnko
YWxnb3JpdGhtKQogYWRkX3N1YmRpcmVjdG9yeShjb250YWluZXIpCiBhZGRfc3ViZGlyZWN0b3J5
KGRlYnVnZ2luZykKK2FkZF9zdWJkaXJlY3RvcnkoaGFzaCkKIGFkZF9zdWJkaXJlY3RvcnkobWVt
b3J5KQogYWRkX3N1YmRpcmVjdG9yeShtZXRhKQogYWRkX3N1YmRpcmVjdG9yeShudW1lcmljKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2NvbnRhaW5lci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGht
L2NvbnRhaW5lci5oCmluZGV4IDZhZjhjMDk3OTllNTZmMjIzYWQzZWVjYTI0NmQ4M2FiMDcwNjNh
MTkuLjUzYWIxNTY4NmM2ZTEwZTYyMTdlZDQ3YjBiNGQ3YTMzMzc1NjgwN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2FsZ29yaXRobS9jb250YWluZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFp
bmVyLmgKQEAgLTQ5NCw3ICs0OTQsNyBAQCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgY19jb3B5X2Jh
Y2t3YXJkKGNvbnN0IEMmIHNyYywKIC8vIENvbnRhaW5lci1iYXNlZCB2ZXJzaW9uIG9mIHRoZSA8
YWxnb3JpdGhtPiBgc3RkOjptb3ZlKClgIGZ1bmN0aW9uIHRvIG1vdmUKIC8vIGEgY29udGFpbmVy
J3MgZWxlbWVudHMgaW50byBhbiBpdGVyYXRvci4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDLCB0eXBl
bmFtZSBPdXRwdXRJdGVyYXRvcj4KLU91dHB1dEl0ZXJhdG9yIGNfbW92ZShDJiBzcmMsIE91dHB1
dEl0ZXJhdG9yIGRlc3QpIHsKK091dHB1dEl0ZXJhdG9yIGNfbW92ZShDJiYgc3JjLCBPdXRwdXRJ
dGVyYXRvciBkZXN0KSB7CiAgIHJldHVybiBzdGQ6Om1vdmUoY29udGFpbmVyX2FsZ29yaXRobV9p
bnRlcm5hbDo6Y19iZWdpbihzcmMpLAogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9hbGdv
cml0aG1faW50ZXJuYWw6OmNfZW5kKHNyYyksIGRlc3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YWxnb3JpdGhtL2NvbnRhaW5lcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2NvbnRhaW5lcl90
ZXN0LmNjCmluZGV4IGRlNjZmMTQ2ODBmMWI4ZjIyZDJlOTY1ZDQ0MWEwNWVmYzU4YTZjMDMuLjE1
MDJiMTdmODYzNmIwZDVlZGVjOWZhNDUzNWM2ZThiODBkMzUwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2FsZ29yaXRobS9jb250YWluZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFp
bmVyX3Rlc3QuY2MKQEAgLTYzNiw2ICs2MzYsMjEgQEAgVEVTVChNdXRhdGluZ1Rlc3QsIE1vdmUp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRlZSg1KSkpOwogfQogCitU
RVNUKE11dGF0aW5nVGVzdCwgTW92ZVdpdGhSdmFsdWUpIHsKKyAgYXV0byBNYWtlUlZhbHVlU3Jj
ID0gW10geworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBzcmM7CisgICAg
c3JjLmVtcGxhY2VfYmFjayhhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDEpKTsKKyAgICBzcmMuZW1w
bGFjZV9iYWNrKGFic2w6Om1ha2VfdW5pcXVlPGludD4oMikpOworICAgIHNyYy5lbXBsYWNlX2Jh
Y2soYWJzbDo6bWFrZV91bmlxdWU8aW50PigzKSk7CisgICAgcmV0dXJuIHNyYzsKKyAgfTsKKwor
ICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gZGVzdCA9IE1ha2VSVmFsdWVTcmMo
KTsKKyAgYWJzbDo6Y19tb3ZlKE1ha2VSVmFsdWVTcmMoKSwgc3RkOjpiYWNrX2luc2VydGVyKGRl
c3QpKTsKKyAgRVhQRUNUX1RIQVQoZGVzdCwgRWxlbWVudHNBcmUoUG9pbnRlZSgxKSwgUG9pbnRl
ZSgyKSwgUG9pbnRlZSgzKSwgUG9pbnRlZSgxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUG9pbnRlZSgyKSwgUG9pbnRlZSgzKSkpOworfQorCiBURVNUKE11dGF0aW5nVGVzdCwg
U3dhcFJhbmdlcykgewogICBzdGQ6OnZlY3RvcjxpbnQ+IG9kZHMgPSB7MiwgNCwgNn07CiAgIHN0
ZDo6dmVjdG9yPGludD4gZXZlbnMgPSB7MSwgMywgNX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9CVUlMRC5iYXplbAppbmRleCAwNmQwOTJlYmRmYTgz
YWJmOTI0YmIzZWUwMzI2OTQyNTliMmU0YjJkLi5mN2Q4MTAxMzViOGNjYzVmYjA1ZGU0YWI3MjVk
NmMxY2Q4ZGYzYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmJhemVsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvQlVJTEQuYmF6ZWwKQEAgLTE5LDYgKzE5LDcgQEAgbG9hZCgKICAgICAiQUJTTF9E
RUZBVUxUX0NPUFRTIiwKICAgICAiQUJTTF9URVNUX0NPUFRTIiwKICAgICAiQUJTTF9FWENFUFRJ
T05TX0ZMQUciLAorICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyIsCiApCiAKIHBh
Y2thZ2UoZGVmYXVsdF92aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHVibGljIl0pCkBAIC0y
OSw2ICszMCw3IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJzcGlubG9ja193YWl0IiwKICAg
ICBzcmNzID0gWwogICAgICAgICAiaW50ZXJuYWwvc3BpbmxvY2tfYWthcm9zLmluYyIsCisgICAg
ICAgICJpbnRlcm5hbC9zcGlubG9ja19saW51eC5pbmMiLAogICAgICAgICAiaW50ZXJuYWwvc3Bp
bmxvY2tfcG9zaXguaW5jIiwKICAgICAgICAgImludGVybmFsL3NwaW5sb2NrX3dhaXQuY2MiLAog
ICAgICAgICAiaW50ZXJuYWwvc3BpbmxvY2tfd2luMzIuaW5jIiwKQEAgLTE3OSw2ICsxODEsNyBA
QCBjY19saWJyYXJ5KAogICAgIHNyY3MgPSBbImludGVybmFsL3Rocm93X2RlbGVnYXRlLmNjIl0s
CiAgICAgaGRycyA9IFsiaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuaCJdLAogICAgIGNvcHRzID0g
QUJTTF9ERUZBVUxUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMg
PSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWwogICAg
ICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNfXyIsCiAgICAgXSwKQEAgLTE5Myw2ICsxOTYsNyBA
QCBjY190ZXN0KAogICAgIG5hbWUgPSAidGhyb3dfZGVsZWdhdGVfdGVzdCIsCiAgICAgc3JjcyA9
IFsidGhyb3dfZGVsZWdhdGVfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRT
ICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNf
RkxBR19MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnRocm93X2RlbGVnYXRlIiwK
ICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKQEAgLTIyNSw2
ICsyMjksNyBAQCBjY19saWJyYXJ5KAogICAgIHNyY3MgPSBbImludGVybmFsL2V4Y2VwdGlvbl9z
YWZldHlfdGVzdGluZy5jYyJdLAogICAgIGhkcnMgPSBbImludGVybmFsL2V4Y2VwdGlvbl9zYWZl
dHlfdGVzdGluZy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQ
VElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRT
LAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZSIsCiAgICAgICAgICI6Y29uZmlnIiwKQEAg
LTI0MSw2ICsyNDYsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiZXhjZXB0aW9uX3NhZmV0eV90
ZXN0aW5nX3Rlc3QiLAogICAgIHNyY3MgPSBbImV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZ190ZXN0
LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxB
RywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRl
cHMgPSBbCiAgICAgICAgICI6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nIiwKICAgICAgICAgIi8v
YWJzbC9tZW1vcnkiLApAQCAtMjk5LDYgKzMwNSw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJt
ZWRpdW0iLAogICAgIHNyY3MgPSBbInNwaW5sb2NrX3Rlc3RfY29tbW9uLmNjIl0sCiAgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgdGFncyA9IFsibm9fdGVzdF93YXNtIl0sCiAgICAg
ZGVwcyA9IFsKICAgICAgICAgIjpiYXNlIiwKICAgICAgICAgIjpjb3JlX2hlYWRlcnMiLApAQCAt
MzM3LDYgKzM0NCw5IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJjb25maWdfdGVzdCIsCiAgICAg
c3JjcyA9IFsiY29uZmlnX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICB0YWdzID0gWworICAgICAgICAibm9fdGVzdF93YXNtIiwKKyAgICBdLAogICAgIGRlcHMg
PSBbCiAgICAgICAgICI6Y29uZmlnIiwKICAgICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb246
dGhyZWFkX3Bvb2wiLApAQCAtMzQ4LDYgKzM1OCw5IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJj
YWxsX29uY2VfdGVzdCIsCiAgICAgc3JjcyA9IFsiY2FsbF9vbmNlX3Rlc3QuY2MiXSwKICAgICBj
b3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0gWworICAgICAgICAibm9fdGVzdF93
YXNtIiwKKyAgICBdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZSIsCiAgICAgICAgICI6
Y29yZV9oZWFkZXJzIiwKQEAgLTQwMSw2ICs0MTQsOSBAQCBjY190ZXN0KAogICAgICAgICAiLy9h
YnNsOndpbmRvd3MiOiBbXSwKICAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItcHRo
cmVhZCJdLAogICAgIH0pLAorICAgIHRhZ3MgPSBbCisgICAgICAgICJub190ZXN0X3dhc20iLAor
ICAgIF0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpiYXNlIiwKICAgICAgICAgIjpjb3JlX2hl
YWRlcnMiLApAQCAtNDIxLDMgKzQzNywyMyBAQCBjY190ZXN0KAogICAgICAgICAiQGNvbV9naXRo
dWJfZ29vZ2xlX2JlbmNobWFyay8vOmJlbmNobWFya19tYWluIiwKICAgICBdLAogKQorCitjY19s
aWJyYXJ5KAorICAgIG5hbWUgPSAiYml0cyIsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvYml0cy5o
Il0sCisgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18i
LAorICAgIF0sCisgICAgZGVwcyA9IFsiOmNvcmVfaGVhZGVycyJdLAorKQorCitjY190ZXN0KAor
ICAgIG5hbWUgPSAiYml0c190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0g
WyJpbnRlcm5hbC9iaXRzX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBkZXBzID0gWworICAgICAgICAiOmJpdHMiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29v
Z2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9CVUlMRC5nbgppbmRleCBhNzE0NjU2NDYyMjkwYmNkNDBj
ZDQ5OTljYTFmZWYyMGM4NjM3ZTdkLi42YzU0MGYzYjJiYjI5Y2E5NmU0NTY5NmExY2IzMzVjY2I0
YTBiMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
QlVJTEQuZ24KQEAgLTIzLDYgKzIzLDcgQEAgc291cmNlX3NldCgic3BpbmxvY2tfd2FpdCIpIHsK
ICAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNs
dWRlX2NvbmZpZyIgXQogICBzb3VyY2VzID0gWwogICAgICJpbnRlcm5hbC9zcGlubG9ja19ha2Fy
b3MuaW5jIiwKKyAgICAiaW50ZXJuYWwvc3BpbmxvY2tfbGludXguaW5jIiwKICAgICAiaW50ZXJu
YWwvc3BpbmxvY2tfcG9zaXguaW5jIiwKICAgICAiaW50ZXJuYWwvc3BpbmxvY2tfd2FpdC5jYyIs
CiAgICAgImludGVybmFsL3NwaW5sb2NrX3dpbjMyLmluYyIsCkBAIC03MSw2ICs3Miw3IEBAIHNv
dXJjZV9zZXQoImR5bmFtaWNfYW5ub3RhdGlvbnMiKSB7CiAgIHB1YmxpYyA9IFsKICAgICAiZHlu
YW1pY19hbm5vdGF0aW9ucy5oIiwKICAgXQorCiAgICMgQWJzZWlsJ3MgZHluYW1pYyBhbm5vdGF0
aW9ucyBhcmUgb25seSB2aXNpYmxlIGluc2lkZSBBYnNlaWwgYmVjYXVzZQogICAjIHRoZWlyIHVz
YWdlIGlzIGRlcHJlY2F0ZWQgaW4gQ2hyb21pdW0gKHNlZSBSRUFETUUuY2hyb21pdW0gZm9yIG1v
cmUgaW5mbykuCiAgIHZpc2liaWxpdHkgPSBbXQpAQCAtMjk2LDMgKzI5OCwxOSBAQCBzb3VyY2Vf
c2V0KCJlbmRpYW4iKSB7CiAgICAgIjpjb3JlX2hlYWRlcnMiLAogICBdCiB9CisKK3NvdXJjZV9z
ZXQoImJpdHMiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hy
b21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGls
ZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNs
X2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL2Jp
dHMuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNvcmVfaGVhZGVycyIsCisgIF0KKyAgdmlz
aWJpbGl0eSA9IFtdCisgIHZpc2liaWxpdHkgKz0gWyAiLi4vKiIgXQorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQ01ha2VMaXN0cy50eHQKaW5k
ZXggMDFkMmFmMDg1ZjU4ZTE1ZjNlMjYzOWM1MTZjZjY2ZDQ2ZDEyMWJlZC4uMDRhNmViMzE5NTVi
NjAyMjAyYWQ1OTdiYTJiMzRlYzA0YmM3ZTU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0NNYWtlTGlzdHMudHh0CkBAIC0zMSw2ICszMSw3
IEBAIGxpc3QoQVBQRU5EIEJBU0VfUFVCTElDX0hFQURFUlMKIAogbGlzdChBUFBFTkQgQkFTRV9J
TlRFUk5BTF9IRUFERVJTCiAgICJpbnRlcm5hbC9hdG9taWNfaG9vay5oIgorICAiaW50ZXJuYWwv
Yml0cy5oIgogICAiaW50ZXJuYWwvY3ljbGVjbG9jay5oIgogICAiaW50ZXJuYWwvZGlyZWN0X21t
YXAuaCIKICAgImludGVybmFsL2VuZGlhbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9hdHRy
aWJ1dGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaAppbmRleCBiMTg4M2I2ZDc1MmNjMTVj
ZDc2ZTA3OTI0MGQwODU3Y2UxOGU4ZDBhLi5lODUwMDIyNDQ0M2JjZTViZjY1YmE1Y2UxZmNkMDBk
OGM3MDQ0YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2F0dHJpYnV0ZXMuaApAQCAtMTAwLDcgKzEwMCw3IEBACiAvLyBBQlNMX1BSSU5URl9B
VFRSSUJVVEUKIC8vIEFCU0xfU0NBTkZfQVRUUklCVVRFCiAvLwotLy8gVGVsbHMgdGhlIGNvbXBp
bGVyIHRvIHBlcmZvcm0gYHByaW50ZmAgZm9ybWF0IHN0ZDo6c3RyaW5nIGNoZWNraW5nIGlmIHRo
ZQorLy8gVGVsbHMgdGhlIGNvbXBpbGVyIHRvIHBlcmZvcm0gYHByaW50ZmAgZm9ybWF0IHN0cmlu
ZyBjaGVja2luZyBpZiB0aGUKIC8vIGNvbXBpbGVyIHN1cHBvcnRzIGl0OyBzZWUgdGhlICdmb3Jt
YXQnIGF0dHJpYnV0ZSBpbgogLy8gPGh0dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy00
LjcuMC9nY2MvRnVuY3Rpb24tQXR0cmlidXRlcy5odG1sPi4KIC8vCkBAIC00OTQsMTQgKzQ5NCwy
NyBAQAogI2RlZmluZSBBQlNMX1hSQVlfTE9HX0FSR1MoTikKICNlbmRpZgogCisvLyBBQlNMX0FU
VFJJQlVURV9SRUlOSVRJQUxJWkVTCisvLworLy8gSW5kaWNhdGVzIHRoYXQgYSBtZW1iZXIgZnVu
Y3Rpb24gcmVpbml0aWFsaXplcyB0aGUgZW50aXJlIG9iamVjdCB0byBhIGtub3duCisvLyBzdGF0
ZSwgaW5kZXBlbmRlbnQgb2YgdGhlIHByZXZpb3VzIHN0YXRlIG9mIHRoZSBvYmplY3QuCisvLwor
Ly8gVGhlIGNsYW5nLXRpZHkgY2hlY2sgYnVncHJvbmUtdXNlLWFmdGVyLW1vdmUgYWxsb3dzIG1l
bWJlciBmdW5jdGlvbnMgbWFya2VkCisvLyB3aXRoIHRoaXMgYXR0cmlidXRlIHRvIGJlIGNhbGxl
ZCBvbiBvYmplY3RzIHRoYXQgaGF2ZSBiZWVuIG1vdmVkIGZyb207CisvLyB3aXRob3V0IHRoZSBh
dHRyaWJ1dGUsIHRoaXMgd291bGQgcmVzdWx0IGluIGEgdXNlLWFmdGVyLW1vdmUgd2FybmluZy4K
KyNpZiBBQlNMX0hBVkVfQ1BQX0FUVFJJQlVURShjbGFuZzo6cmVpbml0aWFsaXplcykKKyNkZWZp
bmUgQUJTTF9BVFRSSUJVVEVfUkVJTklUSUFMSVpFUyBbW2NsYW5nOjpyZWluaXRpYWxpemVzXV0K
KyNlbHNlCisjZGVmaW5lIEFCU0xfQVRUUklCVVRFX1JFSU5JVElBTElaRVMKKyNlbmRpZgorCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gVmFyaWFibGUgQXR0cmlidXRlcwogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogLy8gQUJTTF9BVFRSSUJVVEVfVU5VU0VECiAvLwotLy8gUHJldmVu
dHMgdGhlIGNvbXBpbGVyIGZyb20gY29tcGxhaW5pbmcgYWJvdXQgb3Igb3B0aW1pemluZyBhd2F5
IHZhcmlhYmxlcwotLy8gdGhhdCBhcHBlYXIgdW51c2VkLgorLy8gUHJldmVudHMgdGhlIGNvbXBp
bGVyIGZyb20gY29tcGxhaW5pbmcgYWJvdXQgdmFyaWFibGVzIHRoYXQgYXBwZWFyIHVudXNlZC4K
ICNpZiBBQlNMX0hBVkVfQVRUUklCVVRFKHVudXNlZCkgfHwgKGRlZmluZWQoX19HTlVDX18pICYm
ICFkZWZpbmVkKF9fY2xhbmdfXykpCiAjdW5kZWYgQUJTTF9BVFRSSUJVVEVfVU5VU0VECiAjZGVm
aW5lIEFCU0xfQVRUUklCVVRFX1VOVVNFRCBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2NvbmZpZy5oCmluZGV4
IDY4OTBlMzEzYmYyN2FmN2U1ZThhNWMwNTEzMjUwMTNlMjcyMTVhMGUuLmQ0ZWI3ZDBjYmQ3NmI3
MThmNDI4OTc5ZGNlNzU1ZDczNWFmY2IwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uZmln
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9jb25maWcuaApAQCAtMTk5LDcgKzE5OSw3IEBACiAjZGVmaW5l
IEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4IDEKICNlbGlmIGRlZmluZWQoX19DVURBQ0NfXykK
IC8vIF9fQ1VEQUNDX1ZFUl9fIGlzIGEgZnVsbCB2ZXJzaW9uIG51bWJlciBiZWZvcmUgQ1VEQSA5
LCBhbmQgaXMgZGVmaW5lZCB0byBhCi0vLyBzdGQ6OnN0cmluZyBleHBsYWluaW5nIHRoYXQgaXQg
aGFzIGJlZW4gcmVtb3ZlZCBzdGFydGluZyB3aXRoIENVREEgOS4gV2UgdXNlCisvLyBzdHJpbmcg
ZXhwbGFpbmluZyB0aGF0IGl0IGhhcyBiZWVuIHJlbW92ZWQgc3RhcnRpbmcgd2l0aCBDVURBIDku
IFdlIHVzZQogLy8gbmVzdGVkICNpZnMgYmVjYXVzZSB0aGVyZSBpcyBubyBzaG9ydC1jaXJjdWl0
aW5nIGluIHRoZSBwcmVwcm9jZXNzb3IuCiAvLyBOT1RFOiBgX19DVURBQ0NfX2AgY291bGQgYmUg
dW5kZWZpbmVkIHdoaWxlIGBfX0NVREFDQ19WRVJfX2AgaXMgZGVmaW5lZC4KICNpZiBfX0NVREFD
Q19WRVJfXyA+PSA3MDAwMApAQCAtNDE0LDE0ICs0MTQsMTMgQEAKIC8vIDxzdHJpbmdfdmlldz4s
IDx2YXJpYW50PiBpcyBpbXBsZW1lbnRlZCkgb3IgaGlnaGVyLiBBbHNvLCBgX19jcGx1c3BsdXNg
IGlzCiAvLyBub3QgY29ycmVjdGx5IHNldCBieSBNU1ZDLCBzbyB3ZSB1c2UgYF9NU1ZDX0xBTkdg
IHRvIGNoZWNrIHRoZSBsYW5ndWFnZQogLy8gdmVyc2lvbi4KLS8vIFRPRE8oemhhbmd4eSk6IGZp
eCB0ZXN0cyBiZWZvcmUgZW5hYmxpbmcgYWxpYXNpbmcgZm9yIGBzdGQ6OmFueWAsCi0vLyBgc3Rk
OjpzdHJpbmdfdmlld2AuCisvLyBUT0RPKHpoYW5neHkpOiBmaXggdGVzdHMgYmVmb3JlIGVuYWJs
aW5nIGFsaWFzaW5nIGZvciBgc3RkOjphbnlgLgogI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9N
U0NfVkVSID49IDE5MTAgJiYgXAogICAgICgoZGVmaW5lZChfTVNWQ19MQU5HKSAmJiBfTVNWQ19M
QU5HID4gMjAxNDAyKSB8fCBfX2NwbHVzcGx1cyA+IDIwMTQwMikKIC8vICNkZWZpbmUgQUJTTF9I
QVZFX1NURF9BTlkgMQogI2RlZmluZSBBQlNMX0hBVkVfU1REX09QVElPTkFMIDEKICNkZWZpbmUg
QUJTTF9IQVZFX1NURF9WQVJJQU5UIDEKLS8vICNkZWZpbmUgQUJTTF9IQVZFX1NURF9TVFJJTkdf
VklFVyAxCisjZGVmaW5lIEFCU0xfSEFWRV9TVERfU1RSSU5HX1ZJRVcgMQogI2VuZGlmCiAKICNl
bmRpZiAgLy8gQUJTTF9CQVNFX0NPTkZJR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9leGNl
cHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvZXhjZXB0aW9uX3NhZmV0
eV90ZXN0aW5nX3Rlc3QuY2MKaW5kZXggOTdjOGQ2ZjgzMTg5NGE4ODBhOTg0YTFkMGUwOTBlMDQ4
NzcyODJlZS4uMTA2YmMzNGIwMGY3Y2UyN2E3YjQzNzUyYWQ3MTA2OTlmYmM0NTVmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZ190ZXN0LmNjCkBAIC0zOCw3ICszOCw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgogdm9pZCBFeHBlY3ROb1Rocm93KGNvbnN0IEYmIGYp
IHsKICAgdHJ5IHsKICAgICBmKCk7Ci0gIH0gY2F0Y2ggKFRlc3RFeGNlcHRpb24gZSkgeworICB9
IGNhdGNoIChjb25zdCBUZXN0RXhjZXB0aW9uJiBlKSB7CiAgICAgQUREX0ZBSUxVUkUoKSA8PCAi
VW5leHBlY3RlZCBleGNlcHRpb24gdGhyb3duIGZyb20gIiA8PCBlLndoYXQoKTsKICAgfQogfQpA
QCAtMTc5LDcgKzE3OSw3IEBAIFRFU1QoVGhyb3dpbmdWYWx1ZVRlc3QsIFRocm93aW5nU3RyZWFt
T3BzKSB7CiB9CiAKIC8vIFRlc3RzIHRoZSBvcGVyYXRvcjw8IG9mIFRocm93aW5nVmFsdWUgYnkg
Zm9yY2luZyBDb25zdHJ1Y3RvclRyYWNrZXIgdG8gZW1pdAotLy8gYSBub25mYXRhbCBmYWlsdXJl
IHRoYXQgY29udGFpbnMgdGhlIHN0ZDo6c3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBUaHJv
d2VyCisvLyBhIG5vbmZhdGFsIGZhaWx1cmUgdGhhdCBjb250YWlucyB0aGUgc3RyaW5nIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSBUaHJvd2VyCiBURVNUKFRocm93aW5nVmFsdWVUZXN0LCBTdHJlYW1P
cHNPdXRwdXQpIHsKICAgdXNpbmcgOjp0ZXN0aW5nOjpUeXBlU3BlYzsKICAgZXhjZXB0aW9uc19p
bnRlcm5hbDo6Q29uc3RydWN0b3JUcmFja2VyIGN0KGV4Y2VwdGlvbnNfaW50ZXJuYWw6OmNvdW50
ZG93bik7CkBAIC01NDgsMjEgKzU0OCwyMSBAQCBURVNUKEV4Y2VwdGlvblNhZmV0eVRlc3RlclRl
c3QsIEluY29tcGxldGVUeXBlc0FyZU5vdFRlc3RhYmxlKSB7CiAgIC8vIFRlc3QgdGhhdCBwcm92
aWRpbmcgb3BlcmF0aW9uIGFuZCBpbnZlcmlhbnRzIHN0aWxsIGRvZXMgbm90IGFsbG93IGZvciB0
aGUKICAgLy8gdGhlIGludm9jYXRpb24gb2YgLlRlc3QoKSBhbmQgLlRlc3Qob3ApIGJlY2F1c2Ug
aXQgbGFja3MgYSBmYWN0b3J5CiAgIGF1dG8gd2l0aG91dF9mYWMgPQotICAgICAgdGVzdGluZzo6
TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpLldpdGhPcGVyYXRpb24ob3ApLldpdGhJbnZhcmlh
bnRzKAorICAgICAgdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpLldpdGhPcGVy
YXRpb24ob3ApLldpdGhDb250cmFjdHMoCiAgICAgICAgICAgaW52LCB0ZXN0aW5nOjpzdHJvbmdf
Z3VhcmFudGVlKTsKICAgRVhQRUNUX0ZBTFNFKEhhc051bGxhcnlUZXN0KHdpdGhvdXRfZmFjKSk7
CiAgIEVYUEVDVF9GQUxTRShIYXNVbmFyeVRlc3Qod2l0aG91dF9mYWMpKTsKIAotICAvLyBUZXN0
IHRoYXQgcHJvdmlkaW5nIGludmFyaWFudHMgYW5kIGZhY3RvcnkgYWxsb3dzIHRoZSBpbnZvY2F0
aW9uIG9mCisgIC8vIFRlc3QgdGhhdCBwcm92aWRpbmcgY29udHJhY3RzIGFuZCBmYWN0b3J5IGFs
bG93cyB0aGUgaW52b2NhdGlvbiBvZgogICAvLyAuVGVzdChvcCkgYnV0IGRvZXMgbm90IGFsbG93
IGZvciAuVGVzdCgpIGJlY2F1c2UgaXQgbGFja3MgYW4gb3BlcmF0aW9uCiAgIGF1dG8gd2l0aG91
dF9vcCA9IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQotICAgICAgICAgICAg
ICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKGludiwgdGVzdGluZzo6c3Ryb25nX2d1YXJhbnRl
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKGludiwgdGVzdGluZzo6
c3Ryb25nX2d1YXJhbnRlZSkKICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoRmFjdG9yeShm
YWMpOwogICBFWFBFQ1RfRkFMU0UoSGFzTnVsbGFyeVRlc3Qod2l0aG91dF9vcCkpOwogICBFWFBF
Q1RfVFJVRShIYXNVbmFyeVRlc3Qod2l0aG91dF9vcCkpOwogCiAgIC8vIFRlc3QgdGhhdCBwcm92
aWRpbmcgb3BlcmF0aW9uIGFuZCBmYWN0b3J5IHN0aWxsIGRvZXMgbm90IGFsbG93IGZvciB0aGUK
LSAgLy8gdGhlIGludm9jYXRpb24gb2YgLlRlc3QoKSBhbmQgLlRlc3Qob3ApIGJlY2F1c2UgaXQg
bGFja3MgaW52YXJpYW50cworICAvLyB0aGUgaW52b2NhdGlvbiBvZiAuVGVzdCgpIGFuZCAuVGVz
dChvcCkgYmVjYXVzZSBpdCBsYWNrcyBjb250cmFjdHMKICAgYXV0byB3aXRob3V0X2ludiA9CiAg
ICAgICB0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aE9wZXJhdGlvbihv
cCkuV2l0aEZhY3RvcnkoZmFjKTsKICAgRVhQRUNUX0ZBTFNFKEhhc051bGxhcnlUZXN0KHdpdGhv
dXRfaW52KSk7CkBAIC01NzcsNyArNTc3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEV4YW1wbGVTdHJ1
Y3Q+IEV4YW1wbGVGdW5jdGlvbkZhY3RvcnkoKSB7CiAKIHZvaWQgRXhhbXBsZUZ1bmN0aW9uT3Bl
cmF0aW9uKEV4YW1wbGVTdHJ1Y3QqKSB7fQogCi10ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgRXhh
bXBsZUZ1bmN0aW9uSW52YXJpYW50KEV4YW1wbGVTdHJ1Y3QqKSB7Cit0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHQgRXhhbXBsZUZ1bmN0aW9uQ29udHJhY3QoRXhhbXBsZVN0cnVjdCopIHsKICAgcmV0
dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIH0KIApAQCAtNTkzLDE2ICs1OTMsMTYg
QEAgc3RydWN0IHsKIAogc3RydWN0IHsKICAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IG9wZXJh
dG9yKCkoRXhhbXBsZVN0cnVjdCogZXhhbXBsZV9zdHJ1Y3QpIGNvbnN0IHsKLSAgICByZXR1cm4g
RXhhbXBsZUZ1bmN0aW9uSW52YXJpYW50KGV4YW1wbGVfc3RydWN0KTsKKyAgICByZXR1cm4gRXhh
bXBsZUZ1bmN0aW9uQ29udHJhY3QoZXhhbXBsZV9zdHJ1Y3QpOwogICB9Ci19IGV4YW1wbGVfc3Ry
dWN0X2ludmFyaWFudDsKK30gZXhhbXBsZV9zdHJ1Y3RfY29udHJhY3Q7CiAKIGF1dG8gZXhhbXBs
ZV9sYW1iZGFfZmFjdG9yeSA9IFtdKCkgeyByZXR1cm4gRXhhbXBsZUZ1bmN0aW9uRmFjdG9yeSgp
OyB9OwogCiBhdXRvIGV4YW1wbGVfbGFtYmRhX29wZXJhdGlvbiA9IFtdKEV4YW1wbGVTdHJ1Y3Qq
KSB7fTsKIAotYXV0byBleGFtcGxlX2xhbWJkYV9pbnZhcmlhbnQgPSBbXShFeGFtcGxlU3RydWN0
KiBleGFtcGxlX3N0cnVjdCkgewotICByZXR1cm4gRXhhbXBsZUZ1bmN0aW9uSW52YXJpYW50KGV4
YW1wbGVfc3RydWN0KTsKK2F1dG8gZXhhbXBsZV9sYW1iZGFfY29udHJhY3QgPSBbXShFeGFtcGxl
U3RydWN0KiBleGFtcGxlX3N0cnVjdCkgeworICByZXR1cm4gRXhhbXBsZUZ1bmN0aW9uQ29udHJh
Y3QoZXhhbXBsZV9zdHJ1Y3QpOwogfTsKIAogLy8gVGVzdGluZyB0aGF0IGZ1bmN0aW9uIHJlZmVy
ZW5jZXMsIHBvaW50ZXJzLCBzdHJ1Y3RzIHdpdGggb3BlcmF0b3IoKSBhbmQKQEAgLTYxMiwyOCAr
NjEyLDI4IEBAIFRFU1QoRXhjZXB0aW9uU2FmZXR5VGVzdGVyVGVzdCwgTWl4ZWRGdW5jdGlvblR5
cGVzKSB7CiAgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIo
KQogICAgICAgICAgICAgICAgICAgLldpdGhGYWN0b3J5KEV4YW1wbGVGdW5jdGlvbkZhY3Rvcnkp
CiAgICAgICAgICAgICAgICAgICAuV2l0aE9wZXJhdGlvbihFeGFtcGxlRnVuY3Rpb25PcGVyYXRp
b24pCi0gICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoRXhhbXBsZUZ1bmN0aW9uSW52
YXJpYW50KQorICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoRXhhbXBsZUZ1bmN0aW9u
Q29udHJhY3QpCiAgICAgICAgICAgICAgICAgICAuVGVzdCgpKTsKIAogICAvLyBmdW5jdGlvbiBw
b2ludGVyCiAgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIo
KQogICAgICAgICAgICAgICAgICAgLldpdGhGYWN0b3J5KCZFeGFtcGxlRnVuY3Rpb25GYWN0b3J5
KQogICAgICAgICAgICAgICAgICAgLldpdGhPcGVyYXRpb24oJkV4YW1wbGVGdW5jdGlvbk9wZXJh
dGlvbikKLSAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cygmRXhhbXBsZUZ1bmN0aW9u
SW52YXJpYW50KQorICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoJkV4YW1wbGVGdW5j
dGlvbkNvbnRyYWN0KQogICAgICAgICAgICAgICAgICAgLlRlc3QoKSk7CiAKICAgLy8gc3RydWN0
CiAgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAg
ICAgICAgICAgICAgICAgLldpdGhGYWN0b3J5KGV4YW1wbGVfc3RydWN0X2ZhY3RvcnkpCiAgICAg
ICAgICAgICAgICAgICAuV2l0aE9wZXJhdGlvbihleGFtcGxlX3N0cnVjdF9vcGVyYXRpb24pCi0g
ICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoZXhhbXBsZV9zdHJ1Y3RfaW52YXJpYW50
KQorICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoZXhhbXBsZV9zdHJ1Y3RfY29udHJh
Y3QpCiAgICAgICAgICAgICAgICAgICAuVGVzdCgpKTsKIAogICAvLyBsYW1iZGEKICAgRVhQRUNU
X1RSVUUodGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAgICAgICAg
ICAgICAuV2l0aEZhY3RvcnkoZXhhbXBsZV9sYW1iZGFfZmFjdG9yeSkKICAgICAgICAgICAgICAg
ICAgIC5XaXRoT3BlcmF0aW9uKGV4YW1wbGVfbGFtYmRhX29wZXJhdGlvbikKLSAgICAgICAgICAg
ICAgICAgIC5XaXRoSW52YXJpYW50cyhleGFtcGxlX2xhbWJkYV9pbnZhcmlhbnQpCisgICAgICAg
ICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhleGFtcGxlX2xhbWJkYV9jb250cmFjdCkKICAgICAg
ICAgICAgICAgICAgIC5UZXN0KCkpOwogfQogCkBAIC02NTgsOSArNjU4LDkgQEAgc3RydWN0IHsK
IH0gaW52b2tlcjsKIAogYXV0byB0ZXN0ZXIgPQotICAgIHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25T
YWZldHlUZXN0ZXIoKS5XaXRoT3BlcmF0aW9uKGludm9rZXIpLldpdGhJbnZhcmlhbnRzKAorICAg
IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoT3BlcmF0aW9uKGludm9r
ZXIpLldpdGhDb250cmFjdHMoCiAgICAgICAgIENoZWNrTm9uTmVnYXRpdmVJbnZhcmlhbnRzKTsK
LWF1dG8gc3Ryb25nX3Rlc3RlciA9IHRlc3Rlci5XaXRoSW52YXJpYW50cyh0ZXN0aW5nOjpzdHJv
bmdfZ3VhcmFudGVlKTsKK2F1dG8gc3Ryb25nX3Rlc3RlciA9IHRlc3Rlci5XaXRoQ29udHJhY3Rz
KHRlc3Rpbmc6OnN0cm9uZ19ndWFyYW50ZWUpOwogCiBzdHJ1Y3QgRmFpbHNCYXNpY0d1YXJhbnRl
ZSA6IHB1YmxpYyBOb25OZWdhdGl2ZSB7CiAgIHZvaWQgb3BlcmF0b3IoKSgpIHsKQEAgLTY5MCw3
ICs2OTAsNyBAQCBURVNUKEV4Y2VwdGlvbkNoZWNrVGVzdCwgU3Ryb25nR3VhcmFudGVlRmFpbHVy
ZSkgewogICBFWFBFQ1RfRkFMU0Uoc3Ryb25nX3Rlc3Rlci5XaXRoSW5pdGlhbFZhbHVlKEZvbGxv
d3NCYXNpY0d1YXJhbnRlZXt9KS5UZXN0KCkpOwogfQogCi1zdHJ1Y3QgQmFzaWNHdWFyYW50ZWVX
aXRoRXh0cmFJbnZhcmlhbnRzIDogcHVibGljIE5vbk5lZ2F0aXZlIHsKK3N0cnVjdCBCYXNpY0d1
YXJhbnRlZVdpdGhFeHRyYUNvbnRyYWN0cyA6IHB1YmxpYyBOb25OZWdhdGl2ZSB7CiAgIC8vIEFm
dGVyIG9wZXJhdG9yKCksIGkgaXMgaW5jcmVtZW50ZWQuICBJZiBvcGVyYXRvcigpIHRocm93cywg
aSBpcyBzZXQgdG8gOTk5OQogICB2b2lkIG9wZXJhdG9yKCkoKSB7CiAgICAgaW50IG9sZF9pID0g
aTsKQEAgLTcwMSwyMSArNzAxLDIxIEBAIHN0cnVjdCBCYXNpY0d1YXJhbnRlZVdpdGhFeHRyYUlu
dmFyaWFudHMgOiBwdWJsaWMgTm9uTmVnYXRpdmUgewogCiAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IGtFeGNlcHRpb25TZW50aW5lbCA9IDk5OTk7CiB9OwotY29uc3RleHByIGludCBCYXNpY0d1YXJh
bnRlZVdpdGhFeHRyYUludmFyaWFudHM6OmtFeGNlcHRpb25TZW50aW5lbDsKK2NvbnN0ZXhwciBp
bnQgQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFDb250cmFjdHM6OmtFeGNlcHRpb25TZW50aW5lbDsK
IAotVEVTVChFeGNlcHRpb25DaGVja1Rlc3QsIEJhc2ljR3VhcmFudGVlV2l0aEV4dHJhSW52YXJp
YW50cykgeworVEVTVChFeGNlcHRpb25DaGVja1Rlc3QsIEJhc2ljR3VhcmFudGVlV2l0aEV4dHJh
Q29udHJhY3RzKSB7CiAgIGF1dG8gdGVzdGVyX3dpdGhfdmFsID0KLSAgICAgIHRlc3Rlci5XaXRo
SW5pdGlhbFZhbHVlKEJhc2ljR3VhcmFudGVlV2l0aEV4dHJhSW52YXJpYW50c3t9KTsKKyAgICAg
IHRlc3Rlci5XaXRoSW5pdGlhbFZhbHVlKEJhc2ljR3VhcmFudGVlV2l0aEV4dHJhQ29udHJhY3Rz
e30pOwogICBFWFBFQ1RfVFJVRSh0ZXN0ZXJfd2l0aF92YWwuVGVzdCgpKTsKICAgRVhQRUNUX1RS
VUUoCiAgICAgICB0ZXN0ZXJfd2l0aF92YWwKLSAgICAgICAgICAuV2l0aEludmFyaWFudHMoW10o
QmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFJbnZhcmlhbnRzKiBvKSB7Ci0gICAgICAgICAgICBpZiAo
by0+aSA9PSBCYXNpY0d1YXJhbnRlZVdpdGhFeHRyYUludmFyaWFudHM6OmtFeGNlcHRpb25TZW50
aW5lbCkgeworICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFtdKEJhc2ljR3VhcmFudGVlV2l0aEV4
dHJhQ29udHJhY3RzKiBvKSB7CisgICAgICAgICAgICBpZiAoby0+aSA9PSBCYXNpY0d1YXJhbnRl
ZVdpdGhFeHRyYUNvbnRyYWN0czo6a0V4Y2VwdGlvblNlbnRpbmVsKSB7CiAgICAgICAgICAgICAg
IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCiAgICAgICAgICAgICAg
ICAgICAgPDwgImkgc2hvdWxkIGJlICIKLSAgICAgICAgICAgICAgICAgICA8PCBCYXNpY0d1YXJh
bnRlZVdpdGhFeHRyYUludmFyaWFudHM6OmtFeGNlcHRpb25TZW50aW5lbAorICAgICAgICAgICAg
ICAgICAgIDw8IEJhc2ljR3VhcmFudGVlV2l0aEV4dHJhQ29udHJhY3RzOjprRXhjZXB0aW9uU2Vu
dGluZWwKICAgICAgICAgICAgICAgICAgICA8PCAiLCBidXQgaXMgIiA8PCBvLT5pOwogICAgICAg
ICAgIH0pCiAgICAgICAgICAgLlRlc3QoKSk7CkBAIC03NDAsNyArNzQwLDcgQEAgc3RydWN0IEhh
c1Jlc2V0IDogcHVibGljIE5vbk5lZ2F0aXZlIHsKICAgdm9pZCByZXNldCgpIHsgaSA9IDA7IH0K
IH07CiAKLXRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBDaGVja0hhc1Jlc2V0SW52YXJpYW50cyhI
YXNSZXNldCogaCkgewordGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IENoZWNrSGFzUmVzZXRDb250
cmFjdHMoSGFzUmVzZXQqIGgpIHsKICAgaC0+cmVzZXQoKTsKICAgcmV0dXJuIHRlc3Rpbmc6OkFz
c2VydGlvblJlc3VsdChoLT5pID09IDApOwogfQpAQCAtNzU5LDE0ICs3NTksMTQgQEAgVEVTVChF
eGNlcHRpb25DaGVja1Rlc3QsIE1vZGlmeWluZ0NoZWNrZXIpIHsKICAgfTsKIAogICBFWFBFQ1Rf
RkFMU0UodGVzdGVyLldpdGhJbml0aWFsVmFsdWUoRm9sbG93c0Jhc2ljR3VhcmFudGVle30pCi0g
ICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKHNldF90b18xMDAwLCBpc18xMDAwKQor
ICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKHNldF90b18xMDAwLCBpc18xMDAwKQog
ICAgICAgICAgICAgICAgICAgIC5UZXN0KCkpOwogICBFWFBFQ1RfVFJVRShzdHJvbmdfdGVzdGVy
LldpdGhJbml0aWFsVmFsdWUoRm9sbG93c1N0cm9uZ0d1YXJhbnRlZXt9KQotICAgICAgICAgICAg
ICAgICAgLldpdGhJbnZhcmlhbnRzKGluY3JlbWVudCkKKyAgICAgICAgICAgICAgICAgIC5XaXRo
Q29udHJhY3RzKGluY3JlbWVudCkKICAgICAgICAgICAgICAgICAgIC5UZXN0KCkpOwogICBFWFBF
Q1RfVFJVRSh0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAg
ICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKEhhc1Jlc2V0e30pCi0gICAgICAgICAgICAgICAgICAu
V2l0aEludmFyaWFudHMoQ2hlY2tIYXNSZXNldEludmFyaWFudHMpCisgICAgICAgICAgICAgICAg
ICAuV2l0aENvbnRyYWN0cyhDaGVja0hhc1Jlc2V0Q29udHJhY3RzKQogICAgICAgICAgICAgICAg
ICAgLlRlc3QoaW52b2tlcikpOwogfQogCkBAIC03OTksNyArNzk5LDcgQEAgVEVTVChFeGNlcHRp
b25DaGVja1Rlc3QsIE5vbkVxdWFsaXR5Q29tcGFyYWJsZSkgewogICAgIHJldHVybiB0ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHQobmVjLT5pID09IE5vbkVxdWFsaXR5Q29tcGFyYWJsZSgpLmkpOwog
ICB9OwogICBhdXRvIHN0cm9uZ19uZWNfdGVzdGVyID0gdGVzdGVyLldpdGhJbml0aWFsVmFsdWUo
Tm9uRXF1YWxpdHlDb21wYXJhYmxle30pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LldpdGhJbnZhcmlhbnRzKG5lY19pc19zdHJvbmcpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC5XaXRoQ29udHJhY3RzKG5lY19pc19zdHJvbmcpOwogCiAgIEVYUEVDVF9UUlVFKHN0
cm9uZ19uZWNfdGVzdGVyLlRlc3QoKSk7CiAgIEVYUEVDVF9GQUxTRShzdHJvbmdfbmVjX3Rlc3Rl
ci5UZXN0KApAQCAtODMzLDE0ICs4MzMsMTQgQEAgc3RydWN0IHsKICAgdGVzdGluZzo6QXNzZXJ0
aW9uUmVzdWx0IG9wZXJhdG9yKCkoRXhoYXVzdGl2ZW5lc3NUZXN0ZXI8VD4qKSBjb25zdCB7CiAg
ICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQotfSBDaGVja0V4aGF1
c3RpdmVuZXNzVGVzdGVySW52YXJpYW50czsKK30gQ2hlY2tFeGhhdXN0aXZlbmVzc1Rlc3RlckNv
bnRyYWN0czsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB1bnNpZ25lZCBjaGFyIEV4aGF1c3Rp
dmVuZXNzVGVzdGVyPFQ+OjpzdWNjZXNzZXMgPSAwOwogCiBURVNUKEV4Y2VwdGlvbkNoZWNrVGVz
dCwgRXhoYXVzdGl2ZW5lc3MpIHsKICAgYXV0byBleGhhdXN0X3Rlc3RlciA9IHRlc3Rpbmc6Ok1h
a2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5X
aXRoSW52YXJpYW50cyhDaGVja0V4aGF1c3RpdmVuZXNzVGVzdGVySW52YXJpYW50cykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhDaGVja0V4aGF1c3RpdmVuZXNz
VGVzdGVyQ29udHJhY3RzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoT3BlcmF0
aW9uKGludm9rZXIpOwogCiAgIEVYUEVDVF9UUlVFKApAQCAtODQ5LDcgKzg0OSw3IEBAIFRFU1Qo
RXhjZXB0aW9uQ2hlY2tUZXN0LCBFeGhhdXN0aXZlbmVzcykgewogCiAgIEVYUEVDVF9UUlVFKAog
ICAgICAgZXhoYXVzdF90ZXN0ZXIuV2l0aEluaXRpYWxWYWx1ZShFeGhhdXN0aXZlbmVzc1Rlc3Rl
cjxUaHJvd2luZ1ZhbHVlPD4+e30pCi0gICAgICAgICAgLldpdGhJbnZhcmlhbnRzKHRlc3Rpbmc6
OnN0cm9uZ19ndWFyYW50ZWUpCisgICAgICAgICAgLldpdGhDb250cmFjdHModGVzdGluZzo6c3Ry
b25nX2d1YXJhbnRlZSkKICAgICAgICAgICAuVGVzdCgpKTsKICAgRVhQRUNUX0VRKEV4aGF1c3Rp
dmVuZXNzVGVzdGVyPFRocm93aW5nVmFsdWU8Pj46OnN1Y2Nlc3NlcywgMHhGKTsKIH0KQEAgLTkz
MSw4ICs5MzEsOCBAQCBURVNUKFRocm93aW5nVmFsdWVUcmFpdHNUZXN0LCBSZWxhdGlvbmFsT3Bl
cmF0b3JzKSB7CiB9CiAKIFRFU1QoVGhyb3dpbmdBbGxvY2F0b3JUcmFpdHNUZXN0LCBBc3NpZ25h
YmxpbGl0eSkgewotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTxUaHJvd2lu
Z0FsbG9jYXRvcjxpbnQ+Pjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2NvcHlfYXNz
aWduYWJsZTxUaHJvd2luZ0FsbG9jYXRvcjxpbnQ+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShh
YnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8VGhyb3dpbmdBbGxvY2F0b3I8aW50Pj46OnZhbHVlKTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPFRocm93aW5nQWxsb2NhdG9y
PGludD4+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbm90aHJvd19tb3ZlX2Fzc2ln
bmFibGU8VGhyb3dpbmdBbGxvY2F0b3I8aW50Pj46OnZhbHVlKTsKICAgRVhQRUNUX1RSVUUoc3Rk
Ojppc19ub3Rocm93X2NvcHlfYXNzaWduYWJsZTxUaHJvd2luZ0FsbG9jYXRvcjxpbnQ+Pjo6dmFs
dWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2ludGVybmFsL2JpdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzdmYWFlZTNiMjU3ZWRjMzdjZDkwOTBi
Nzc3N2Q3MDM1ZDNjM2I4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9i
aXRzLmgKQEAgLTAsMCArMSwxOTMgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9CQVNFX0lOVEVSTkFMX0JJVFNfSF8KKyNkZWZpbmUgQUJT
TF9CQVNFX0lOVEVSTkFMX0JJVFNfSF8KKworLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGJpdHdpc2Ug
b3BzIHdoaWNoIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHZhcmlvdXMKKy8vIGFic2wg
bGlicmFyaWVzLgorCisjaW5jbHVkZSA8Y3N0ZGludD4KKworLy8gQ2xhbmcgb24gV2luZG93cyBo
YXMgX19idWlsdGluX2NsemxsOyBvdGhlcndpc2Ugd2UgbmVlZCB0byB1c2UgdGhlCisvLyB3aW5k
b3dzIGludHJpbnNpYyBmdW5jdGlvbnMuCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNpbmNsdWRl
IDxpbnRyaW4uaD4KKyNpZiBkZWZpbmVkKF9NX1g2NCkKKyNwcmFnbWEgaW50cmluc2ljKF9CaXRT
Y2FuUmV2ZXJzZTY0KQorI3ByYWdtYSBpbnRyaW5zaWMoX0JpdFNjYW5Gb3J3YXJkNjQpCisjZW5k
aWYKKyNwcmFnbWEgaW50cmluc2ljKF9CaXRTY2FuUmV2ZXJzZSkKKyNwcmFnbWEgaW50cmluc2lj
KF9CaXRTY2FuRm9yd2FyZCkKKyNlbmRpZgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0
ZXMuaCIKKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisvLyBXZSBjYW4gYWNoaWV2ZSBzb21ldGhp
bmcgc2ltaWxhciB0byBhdHRyaWJ1dGUoKGFsd2F5c19pbmxpbmUpKSB3aXRoIE1TVkMgYnkKKy8v
IHVzaW5nIHRoZSBfX2ZvcmNlaW5saW5lIGtleXdvcmQsIGhvd2V2ZXIgdGhpcyBpcyBub3QgcGVy
ZmVjdC4gTVNWQyBpcworLy8gbXVjaCBsZXNzIGFnZ3Jlc3NpdmUgYWJvdXQgaW5saW5pbmcsIGFu
ZCBldmVuIHdpdGggdGhlIF9fZm9yY2VpbmxpbmUga2V5d29yZC4KKyNkZWZpbmUgQUJTTF9CQVNF
X0lOVEVSTkFMX0ZPUkNFSU5MSU5FIF9fZm9yY2VpbmxpbmUKKyNlbHNlCisvLyBVc2UgZGVmYXVs
dCBhdHRyaWJ1dGUgaW5saW5lLgorI2RlZmluZSBBQlNMX0JBU0VfSU5URVJOQUxfRk9SQ0VJTkxJ
TkUgaW5saW5lIEFCU0xfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKKyNlbmRpZgorCisKK25hbWVz
cGFjZSBhYnNsIHsKK25hbWVzcGFjZSBiYXNlX2ludGVybmFsIHsKKworQUJTTF9CQVNFX0lOVEVS
TkFMX0ZPUkNFSU5MSU5FIGludCBDb3VudExlYWRpbmdaZXJvczY0U2xvdyh1aW50NjRfdCBuKSB7
CisgIGludCB6ZXJvZXMgPSA2MDsKKyAgaWYgKG4gPj4gMzIpIHplcm9lcyAtPSAzMiwgbiA+Pj0g
MzI7CisgIGlmIChuID4+IDE2KSB6ZXJvZXMgLT0gMTYsIG4gPj49IDE2OworICBpZiAobiA+PiA4
KSB6ZXJvZXMgLT0gOCwgbiA+Pj0gODsKKyAgaWYgKG4gPj4gNCkgemVyb2VzIC09IDQsIG4gPj49
IDQ7CisgIHJldHVybiAiXDRcM1wyXDJcMVwxXDFcMVwwXDBcMFwwXDBcMFwwIltuXSArIHplcm9l
czsKK30KKworQUJTTF9CQVNFX0lOVEVSTkFMX0ZPUkNFSU5MSU5FIGludCBDb3VudExlYWRpbmda
ZXJvczY0KHVpbnQ2NF90IG4pIHsKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9N
X1g2NCkKKyAgLy8gTVNWQyBkb2VzIG5vdCBoYXZlIF9fYnVpdGluX2NsemxsLiBVc2UgX0JpdFNj
YW5SZXZlcnNlNjQuCisgIHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsgIC8vIE5PTElOVChydW50
aW1lL2ludCkKKyAgaWYgKF9CaXRTY2FuUmV2ZXJzZTY0KCZyZXN1bHQsIG4pKSB7CisgICAgcmV0
dXJuIDYzIC0gcmVzdWx0OworICB9CisgIHJldHVybiA2NDsKKyNlbGlmIGRlZmluZWQoX01TQ19W
RVIpCisgIC8vIE1TVkMgZG9lcyBub3QgaGF2ZSBfX2J1aXRpbl9jbHpsbC4gQ29tcG9zZSB0d28g
Y2FsbHMgdG8gX0JpdFNjYW5SZXZlcnNlCisgIHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsgIC8v
IE5PTElOVChydW50aW1lL2ludCkKKyAgaWYgKChuID4+IDMyKSAmJiBfQml0U2NhblJldmVyc2Uo
JnJlc3VsdCwgbiA+PiAzMikpIHsKKyAgICByZXR1cm4gMzEgLSByZXN1bHQ7CisgIH0KKyAgaWYg
KF9CaXRTY2FuUmV2ZXJzZSgmcmVzdWx0LCBuKSkgeworICAgIHJldHVybiA2MyAtIHJlc3VsdDsK
KyAgfQorICByZXR1cm4gNjQ7CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorICAvLyBVc2UgX19i
dWlsdGluX2NsemxsLCB3aGljaCB1c2VzIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zOgorICAv
LyAgeDg2OiBic3IKKyAgLy8gIEFSTTY0OiBjbHoKKyAgLy8gIFBQQzogY250bHpkCisgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykgPT0gc2l6ZW9mKG4pLCAgLy8gTk9M
SU5UKHJ1bnRpbWUvaW50KQorICAgICAgICAgICAgICAgICJfX2J1aWx0aW5fY2x6bGwgZG9lcyBu
b3QgdGFrZSA2NC1iaXQgYXJnIik7CisKKyAgLy8gSGFuZGxlIDAgYXMgYSBzcGVjaWFsIGNhc2Ug
YmVjYXVzZSBfX2J1aWx0aW5fY2x6bGwoMCkgaXMgdW5kZWZpbmVkLgorICBpZiAobiA9PSAwKSB7
CisgICAgcmV0dXJuIDY0OworICB9CisgIHJldHVybiBfX2J1aWx0aW5fY2x6bGwobik7CisjZWxz
ZQorICByZXR1cm4gQ291bnRMZWFkaW5nWmVyb3M2NFNsb3cobik7CisjZW5kaWYKK30KKworQUJT
TF9CQVNFX0lOVEVSTkFMX0ZPUkNFSU5MSU5FIGludCBDb3VudExlYWRpbmdaZXJvczMyU2xvdyh1
aW50NjRfdCBuKSB7CisgIGludCB6ZXJvZXMgPSAyODsKKyAgaWYgKG4gPj4gMTYpIHplcm9lcyAt
PSAxNiwgbiA+Pj0gMTY7CisgIGlmIChuID4+IDgpIHplcm9lcyAtPSA4LCBuID4+PSA4OworICBp
ZiAobiA+PiA0KSB6ZXJvZXMgLT0gNCwgbiA+Pj0gNDsKKyAgcmV0dXJuICJcNFwzXDJcMlwxXDFc
MVwxXDBcMFwwXDBcMFwwXDAiW25dICsgemVyb2VzOworfQorCitBQlNMX0JBU0VfSU5URVJOQUxf
Rk9SQ0VJTkxJTkUgaW50IENvdW50TGVhZGluZ1plcm9zMzIodWludDMyX3QgbikgeworI2lmIGRl
ZmluZWQoX01TQ19WRVIpCisgIHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsgIC8vIE5PTElOVChy
dW50aW1lL2ludCkKKyAgaWYgKF9CaXRTY2FuUmV2ZXJzZSgmcmVzdWx0LCBuKSkgeworICAgIHJl
dHVybiAzMSAtIHJlc3VsdDsKKyAgfQorICByZXR1cm4gMzI7CisjZWxpZiBkZWZpbmVkKF9fR05V
Q19fKQorICAvLyBVc2UgX19idWlsdGluX2Nseiwgd2hpY2ggdXNlcyB0aGUgZm9sbG93aW5nIGlu
c3RydWN0aW9uczoKKyAgLy8gIHg4NjogYnNyCisgIC8vICBBUk02NDogY2x6CisgIC8vICBQUEM6
IGNudGx6ZAorICBzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQpID09IHNpemVvZihuKSwKKyAgICAg
ICAgICAgICAgICAiX19idWlsdGluX2NseiBkb2VzIG5vdCB0YWtlIDMyLWJpdCBhcmciKTsKKwor
ICAvLyBIYW5kbGUgMCBhcyBhIHNwZWNpYWwgY2FzZSBiZWNhdXNlIF9fYnVpbHRpbl9jbHooMCkg
aXMgdW5kZWZpbmVkLgorICBpZiAobiA9PSAwKSB7CisgICAgcmV0dXJuIDMyOworICB9CisgIHJl
dHVybiBfX2J1aWx0aW5fY2x6KG4pOworI2Vsc2UKKyAgcmV0dXJuIENvdW50TGVhZGluZ1plcm9z
MzJTbG93KG4pOworI2VuZGlmCit9CisKK0FCU0xfQkFTRV9JTlRFUk5BTF9GT1JDRUlOTElORSBp
bnQgQ291bnRUcmFpbGluZ1plcm9zTm9uWmVybzY0U2xvdyh1aW50NjRfdCBuKSB7CisgIGludCBj
ID0gNjM7CisgIG4gJj0gfm4gKyAxOworICBpZiAobiAmIDB4MDAwMDAwMDBGRkZGRkZGRikgYyAt
PSAzMjsKKyAgaWYgKG4gJiAweDAwMDBGRkZGMDAwMEZGRkYpIGMgLT0gMTY7CisgIGlmIChuICYg
MHgwMEZGMDBGRjAwRkYwMEZGKSBjIC09IDg7CisgIGlmIChuICYgMHgwRjBGMEYwRjBGMEYwRjBG
KSBjIC09IDQ7CisgIGlmIChuICYgMHgzMzMzMzMzMzMzMzMzMzMzKSBjIC09IDI7CisgIGlmIChu
ICYgMHg1NTU1NTU1NTU1NTU1NTU1KSBjIC09IDE7CisgIHJldHVybiBjOworfQorCitBQlNMX0JB
U0VfSU5URVJOQUxfRk9SQ0VJTkxJTkUgaW50IENvdW50VHJhaWxpbmdaZXJvc05vblplcm82NCh1
aW50NjRfdCBuKSB7CisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfTV9YNjQpCisg
IHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgX0Jp
dFNjYW5Gb3J3YXJkNjQoJnJlc3VsdCwgbik7CisgIHJldHVybiByZXN1bHQ7CisjZWxpZiBkZWZp
bmVkKF9NU0NfVkVSKQorICB1bnNpZ25lZCBsb25nIHJlc3VsdCA9IDA7ICAvLyBOT0xJTlQocnVu
dGltZS9pbnQpCisgIGlmIChzdGF0aWNfY2FzdDx1aW50MzJfdD4obikgPT0gMCkgeworICAgIF9C
aXRTY2FuRm9yd2FyZCgmcmVzdWx0LCBuID4+IDMyKTsKKyAgICByZXR1cm4gcmVzdWx0ICsgMzI7
CisgIH0KKyAgX0JpdFNjYW5Gb3J3YXJkKCZyZXN1bHQsIG4pOworICByZXR1cm4gcmVzdWx0Owor
I2VsaWYgZGVmaW5lZChfX0dOVUNfXykKKyAgc3RhdGljX2Fzc2VydChzaXplb2YodW5zaWduZWQg
bG9uZyBsb25nKSA9PSBzaXplb2YobiksICAvLyBOT0xJTlQocnVudGltZS9pbnQpCisgICAgICAg
ICAgICAgICAgIl9fYnVpbHRpbl9jdHpsbCBkb2VzIG5vdCB0YWtlIDY0LWJpdCBhcmciKTsKKyAg
cmV0dXJuIF9fYnVpbHRpbl9jdHpsbChuKTsKKyNlbHNlCisgIHJldHVybiBDb3VudFRyYWlsaW5n
WmVyb3NOb25aZXJvNjRTbG93KG4pOworI2VuZGlmCit9CisKK0FCU0xfQkFTRV9JTlRFUk5BTF9G
T1JDRUlOTElORSBpbnQgQ291bnRUcmFpbGluZ1plcm9zTm9uWmVybzMyU2xvdyh1aW50MzJfdCBu
KSB7CisgIGludCBjID0gMzE7CisgIG4gJj0gfm4gKyAxOworICBpZiAobiAmIDB4MDAwMEZGRkYp
IGMgLT0gMTY7CisgIGlmIChuICYgMHgwMEZGMDBGRikgYyAtPSA4OworICBpZiAobiAmIDB4MEYw
RjBGMEYpIGMgLT0gNDsKKyAgaWYgKG4gJiAweDMzMzMzMzMzKSBjIC09IDI7CisgIGlmIChuICYg
MHg1NTU1NTU1NSkgYyAtPSAxOworICByZXR1cm4gYzsKK30KKworQUJTTF9CQVNFX0lOVEVSTkFM
X0ZPUkNFSU5MSU5FIGludCBDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvMzIodWludDMyX3Qgbikg
eworI2lmIGRlZmluZWQoX01TQ19WRVIpCisgIHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsgIC8v
IE5PTElOVChydW50aW1lL2ludCkKKyAgX0JpdFNjYW5Gb3J3YXJkKCZyZXN1bHQsIG4pOworICBy
ZXR1cm4gcmVzdWx0OworI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKKyAgc3RhdGljX2Fzc2VydChz
aXplb2YoaW50KSA9PSBzaXplb2YobiksCisgICAgICAgICAgICAgICAgIl9fYnVpbHRpbl9jdHog
ZG9lcyBub3QgdGFrZSAzMi1iaXQgYXJnIik7CisgIHJldHVybiBfX2J1aWx0aW5fY3R6KG4pOwor
I2Vsc2UKKyAgcmV0dXJuIENvdW50VHJhaWxpbmdaZXJvc05vblplcm8zMlNsb3cobik7CisjZW5k
aWYKK30KKworI3VuZGVmIEFCU0xfQkFTRV9JTlRFUk5BTF9GT1JDRUlOTElORQorCit9ICAvLyBu
YW1lc3BhY2UgYmFzZV9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAv
LyBBQlNMX0JBU0VfSU5URVJOQUxfQklUU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC9iaXRzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHNfdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNWQ5OTFkNjcyNTg3NGFhOWRiODAzYjE1MTE3ODE3YWEzMDg2YjUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9iaXRzX3Rlc3QuY2MKQEAgLTAsMCArMSw5
NyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUg
ImFic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
CituYW1lc3BhY2UgeworCitpbnQgQ0xaNjQodWludDY0X3QgbikgeworICBpbnQgZmFzdCA9IGFi
c2w6OmJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQobik7CisgIGludCBzbG93ID0g
YWJzbDo6YmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NFNsb3cobik7CisgIEVYUEVD
VF9FUShmYXN0LCBzbG93KSA8PCBuOworICByZXR1cm4gZmFzdDsKK30KKworVEVTVChCaXRzVGVz
dCwgQ291bnRMZWFkaW5nWmVyb3M2NCkgeworICBFWFBFQ1RfRVEoNjQsIENMWjY0KHVpbnQ2NF90
e30pKTsKKyAgRVhQRUNUX0VRKDAsIENMWjY0KH51aW50NjRfdHt9KSk7CisKKyAgZm9yIChpbnQg
aW5kZXggPSAwOyBpbmRleCA8IDY0OyBpbmRleCsrKSB7CisgICAgdWludDY0X3QgeCA9IHN0YXRp
Y19jYXN0PHVpbnQ2NF90PigxKSA8PCBpbmRleDsKKyAgICBjb25zdCBhdXRvIGNudCA9IDYzIC0g
aW5kZXg7CisgICAgQVNTRVJUX0VRKGNudCwgQ0xaNjQoeCkpIDw8IGluZGV4OworICAgIEFTU0VS
VF9FUShjbnQsIENMWjY0KHggKyB4IC0gMSkpIDw8IGluZGV4OworICB9Cit9CisKK2ludCBDTFoz
Mih1aW50MzJfdCBuKSB7CisgIGludCBmYXN0ID0gYWJzbDo6YmFzZV9pbnRlcm5hbDo6Q291bnRM
ZWFkaW5nWmVyb3MzMihuKTsKKyAgaW50IHNsb3cgPSBhYnNsOjpiYXNlX2ludGVybmFsOjpDb3Vu
dExlYWRpbmdaZXJvczMyU2xvdyhuKTsKKyAgRVhQRUNUX0VRKGZhc3QsIHNsb3cpIDw8IG47Cisg
IHJldHVybiBmYXN0OworfQorCitURVNUKEJpdHNUZXN0LCBDb3VudExlYWRpbmdaZXJvczMyKSB7
CisgIEVYUEVDVF9FUSgzMiwgQ0xaMzIodWludDMyX3R7fSkpOworICBFWFBFQ1RfRVEoMCwgQ0xa
MzIofnVpbnQzMl90e30pKTsKKworICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgMzI7IGlu
ZGV4KyspIHsKKyAgICB1aW50MzJfdCB4ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEpIDw8IGlu
ZGV4OworICAgIGNvbnN0IGF1dG8gY250ID0gMzEgLSBpbmRleDsKKyAgICBBU1NFUlRfRVEoY250
LCBDTFozMih4KSkgPDwgaW5kZXg7CisgICAgQVNTRVJUX0VRKGNudCwgQ0xaMzIoeCArIHggLSAx
KSkgPDwgaW5kZXg7CisgICAgQVNTRVJUX0VRKENMWjY0KHgpLCBDTFozMih4KSArIDMyKTsKKyAg
fQorfQorCitpbnQgQ1RaNjQodWludDY0X3QgbikgeworICBpbnQgZmFzdCA9IGFic2w6OmJhc2Vf
aW50ZXJuYWw6OkNvdW50VHJhaWxpbmdaZXJvc05vblplcm82NChuKTsKKyAgaW50IHNsb3cgPSBh
YnNsOjpiYXNlX2ludGVybmFsOjpDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvNjRTbG93KG4pOwor
ICBFWFBFQ1RfRVEoZmFzdCwgc2xvdykgPDwgbjsKKyAgcmV0dXJuIGZhc3Q7Cit9CisKK1RFU1Qo
Qml0c1Rlc3QsIENvdW50VHJhaWxpbmdaZXJvc05vblplcm82NCkgeworICBFWFBFQ1RfRVEoMCwg
Q1RaNjQofnVpbnQ2NF90e30pKTsKKworICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgNjQ7
IGluZGV4KyspIHsKKyAgICB1aW50NjRfdCB4ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8
IGluZGV4OworICAgIGNvbnN0IGF1dG8gY250ID0gaW5kZXg7CisgICAgQVNTRVJUX0VRKGNudCwg
Q1RaNjQoeCkpIDw8IGluZGV4OworICAgIEFTU0VSVF9FUShjbnQsIENUWjY0KH4oeCAtIDEpKSkg
PDwgaW5kZXg7CisgIH0KK30KKworaW50IENUWjMyKHVpbnQzMl90IG4pIHsKKyAgaW50IGZhc3Qg
PSBhYnNsOjpiYXNlX2ludGVybmFsOjpDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvMzIobik7Cisg
IGludCBzbG93ID0gYWJzbDo6YmFzZV9pbnRlcm5hbDo6Q291bnRUcmFpbGluZ1plcm9zTm9uWmVy
bzMyU2xvdyhuKTsKKyAgRVhQRUNUX0VRKGZhc3QsIHNsb3cpIDw8IG47CisgIHJldHVybiBmYXN0
OworfQorCitURVNUKEJpdHNUZXN0LCBDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvMzIpIHsKKyAg
RVhQRUNUX0VRKDAsIENUWjMyKH51aW50MzJfdHt9KSk7CisKKyAgZm9yIChpbnQgaW5kZXggPSAw
OyBpbmRleCA8IDMyOyBpbmRleCsrKSB7CisgICAgdWludDMyX3QgeCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PigxKSA8PCBpbmRleDsKKyAgICBjb25zdCBhdXRvIGNudCA9IGluZGV4OworICAgIEFT
U0VSVF9FUShjbnQsIENUWjMyKHgpKSA8PCBpbmRleDsKKyAgICBBU1NFUlRfRVEoY250LCBDVFoz
Mih+KHggLSAxKSkpIDw8IGluZGV4OworICB9Cit9CisKKworfSAgLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmcuaAppbmRleCA4YzJm
NTA5M2ZjNGRhODI4YWZhODIzNDJiZTQ0OTk1ZDE4YTNiYmU3Li41NjY1YTFiNjdkYjJlYzRjYTJh
ZDgwZmZhMDZmZTZlOWNmYzQ5MWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2V4
Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0
aW9uX3NhZmV0eV90ZXN0aW5nLmgKQEAgLTE5MSwxOSArMTkxLDE5IEBAIGNsYXNzIFRyYWNrZWRP
YmplY3QgewogICB+VHJhY2tlZE9iamVjdCgpIG5vZXhjZXB0IHsgQ29uc3RydWN0b3JUcmFja2Vy
OjpPYmplY3REZXN0cnVjdGVkKHRoaXMpOyB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRmFj
dG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBlbmFtZSBJbnZhcmlhbnQ+Ci1hYnNsOjpvcHRp
b25hbDx0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ+IFRlc3RTaW5nbGVJbnZhcmlhbnRBdENvdW50
ZG93bkltcGwoCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9u
LCB0eXBlbmFtZSBDb250cmFjdD4KK2Fic2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlvblJl
c3VsdD4gVGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRvd25JbXBsKAogICAgIGNvbnN0IEZhY3Rv
cnkmIGZhY3RvcnksIGNvbnN0IE9wZXJhdGlvbiYgb3BlcmF0aW9uLCBpbnQgY291bnQsCi0gICAg
Y29uc3QgSW52YXJpYW50JiBpbnZhcmlhbnQpIHsKKyAgICBjb25zdCBDb250cmFjdCYgY29udHJh
Y3QpIHsKICAgYXV0byB0X3B0ciA9IGZhY3RvcnkoKTsKICAgYWJzbDo6b3B0aW9uYWw8dGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0PiBjdXJyZW50X3JlczsKICAgU2V0Q291bnRkb3duKGNvdW50KTsK
ICAgdHJ5IHsKICAgICBvcGVyYXRpb24odF9wdHIuZ2V0KCkpOwogICB9IGNhdGNoIChjb25zdCBl
eGNlcHRpb25zX2ludGVybmFsOjpUZXN0RXhjZXB0aW9uJiBlKSB7Ci0gICAgY3VycmVudF9yZXMu
ZW1wbGFjZShpbnZhcmlhbnQodF9wdHIuZ2V0KCkpKTsKKyAgICBjdXJyZW50X3Jlcy5lbXBsYWNl
KGNvbnRyYWN0KHRfcHRyLmdldCgpKSk7CiAgICAgaWYgKCFjdXJyZW50X3Jlcy52YWx1ZSgpKSB7
Ci0gICAgICAqY3VycmVudF9yZXMgPDwgZS53aGF0KCkgPDwgIiBmYWlsZWQgaW52YXJpYW50IGNo
ZWNrIjsKKyAgICAgICpjdXJyZW50X3JlcyA8PCBlLndoYXQoKSA8PCAiIGZhaWxlZCBjb250cmFj
dCBjaGVjayI7CiAgICAgfQogICB9CiAgIFVuc2V0Q291bnRkb3duKCk7CkBAIC0yMTEsMjIgKzIx
MSwyMiBAQCBhYnNsOjpvcHRpb25hbDx0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ+IFRlc3RTaW5n
bGVJbnZhcmlhbnRBdENvdW50ZG93bkltcGwoCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGYWN0
b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24+Ci1hYnNsOjpvcHRpb25hbDx0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHQ+IFRlc3RTaW5nbGVJbnZhcmlhbnRBdENvdW50ZG93bkltcGwoCithYnNsOjpvcHRp
b25hbDx0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ+IFRlc3RTaW5nbGVDb250cmFjdEF0Q291bnRk
b3duSW1wbCgKICAgICBjb25zdCBGYWN0b3J5JiBmYWN0b3J5LCBjb25zdCBPcGVyYXRpb24mIG9w
ZXJhdGlvbiwgaW50IGNvdW50LAogICAgIFN0cm9uZ0d1YXJhbnRlZVRhZ1R5cGUpIHsKICAgdXNp
bmcgVFB0ciA9IHR5cGVuYW1lIGRlY2x0eXBlKGZhY3RvcnkoKSk6OnBvaW50ZXI7CiAgIGF1dG8g
dF9pc19zdHJvbmcgPSBbJl0oVFB0ciB0KSB7IHJldHVybiAqdCA9PSAqZmFjdG9yeSgpOyB9Owot
ICByZXR1cm4gVGVzdFNpbmdsZUludmFyaWFudEF0Q291bnRkb3duSW1wbChmYWN0b3J5LCBvcGVy
YXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0X2lzX3N0cm9uZyk7CisgIHJldHVybiBUZXN0U2luZ2xlQ29udHJhY3RBdENvdW50ZG93bklt
cGwoZmFjdG9yeSwgb3BlcmF0aW9uLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0X2lzX3N0cm9uZyk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBG
YWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24sIHR5cGVuYW1lIEludmFyaWFudD4KLWludCBUZXN0
U2luZ2xlSW52YXJpYW50QXRDb3VudGRvd24oCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwg
dHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBlbmFtZSBDb250cmFjdD4KK2ludCBUZXN0U2luZ2xlQ29u
dHJhY3RBdENvdW50ZG93bigKICAgICBjb25zdCBGYWN0b3J5JiBmYWN0b3J5LCBjb25zdCBPcGVy
YXRpb24mIG9wZXJhdGlvbiwgaW50IGNvdW50LAotICAgIGNvbnN0IEludmFyaWFudCYgaW52YXJp
YW50LAorICAgIGNvbnN0IENvbnRyYWN0JiBjb250cmFjdCwKICAgICBhYnNsOjpvcHRpb25hbDx0
ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ+KiByZWR1Y2VkX3JlcykgewogICAvLyBJZiByZWR1Y2Vk
X3JlcyBpcyBlbXB0eSwgaXQgbWVhbnMgdGhlIGN1cnJlbnQgY2FsbCB0bwotICAvLyBUZXN0U2lu
Z2xlSW52YXJpYW50QXRDb3VudGRvd24oLi4uKSBpcyB0aGUgZmlyc3QgdGVzdCBiZWluZyBydW4g
c28gd2UgZG8KKyAgLy8gVGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRvd24oLi4uKSBpcyB0aGUg
Zmlyc3QgdGVzdCBiZWluZyBydW4gc28gd2UgZG8KICAgLy8gd2FudCB0byBydW4gaXQuIEFsdGVy
bmF0aXZlbHksIGlmIGl0J3Mgbm90IGVtcHR5IChtZWFuaW5nIGEgcHJldmlvdXMgdGVzdAogICAv
LyBoYXMgcnVuKSB3ZSB3YW50IHRvIGNoZWNrIGlmIGl0IHBhc3NlZC4gSWYgdGhlIHByZXZpb3Vz
IHRlc3QgZGlkIHBhc3MsIHdlCiAgIC8vIHdhbnQgdG8gY29udGluZSBydW5uaW5nIHRlc3RzIHNv
IHdlIGRvIHdhbnQgdG8gcnVuIHRoZSBjdXJyZW50IG9uZS4gSWYgaXQKQEAgLTIzNCwyMiArMjM0
LDIyIEBAIGludCBUZXN0U2luZ2xlSW52YXJpYW50QXRDb3VudGRvd24oCiAgIC8vIG91dHB1dC4g
SWYgdGhhdCdzIHRoZSBjYXNlLCB3ZSBkbyBub3QgcnVuIHRoZSBjdXJyZW50IHRlc3QgYW5kIGlu
c3RlYWQgd2UKICAgLy8gc2ltcGx5IHJldHVybi4KICAgaWYgKCFyZWR1Y2VkX3Jlcy0+aGFzX3Zh
bHVlKCkgfHwgcmVkdWNlZF9yZXMtPnZhbHVlKCkpIHsKLSAgICAqcmVkdWNlZF9yZXMgPSBUZXN0
U2luZ2xlSW52YXJpYW50QXRDb3VudGRvd25JbXBsKGZhY3RvcnksIG9wZXJhdGlvbiwgY291bnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnZhcmlhbnQpOworICAgICpyZWR1Y2VkX3JlcyA9CisgICAgICAgIFRlc3RTaW5nbGVDb250cmFj
dEF0Q291bnRkb3duSW1wbChmYWN0b3J5LCBvcGVyYXRpb24sIGNvdW50LCBjb250cmFjdCk7CiAg
IH0KICAgcmV0dXJuIDA7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFt
ZSBPcGVyYXRpb24sIHR5cGVuYW1lLi4uIEludmFyaWFudHM+Ci1pbmxpbmUgYWJzbDo6b3B0aW9u
YWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0PiBUZXN0QWxsSW52YXJpYW50c0F0Q291bnRkb3du
KAordGVtcGxhdGUgPHR5cGVuYW1lIEZhY3RvcnksIHR5cGVuYW1lIE9wZXJhdGlvbiwgdHlwZW5h
bWUuLi4gQ29udHJhY3RzPgoraW5saW5lIGFic2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdD4gVGVzdEFsbENvbnRyYWN0c0F0Q291bnRkb3duKAogICAgIGNvbnN0IEZhY3Rvcnkm
IGZhY3RvcnksIGNvbnN0IE9wZXJhdGlvbiYgb3BlcmF0aW9uLCBpbnQgY291bnQsCi0gICAgY29u
c3QgSW52YXJpYW50cyYuLi4gaW52YXJpYW50cykgeworICAgIGNvbnN0IENvbnRyYWN0cyYuLi4g
Y29udHJhY3RzKSB7CiAgIGFic2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4g
cmVkdWNlZF9yZXM7CiAKICAgLy8gUnVuIGVhY2ggY2hlY2tlciwgc2hvcnQgY2lyY3VpdGluZyBh
ZnRlciB0aGUgZmlyc3QgZmFpbHVyZQogICBpbnQgZHVtbXlbXSA9IHsKLSAgICAgIDAsIChUZXN0
U2luZ2xlSW52YXJpYW50QXRDb3VudGRvd24oZmFjdG9yeSwgb3BlcmF0aW9uLCBjb3VudCwgaW52
YXJpYW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlZHVj
ZWRfcmVzKSkuLi59OworICAgICAgMCwgKFRlc3RTaW5nbGVDb250cmFjdEF0Q291bnRkb3duKGZh
Y3RvcnksIG9wZXJhdGlvbiwgY291bnQsIGNvbnRyYWN0cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmcmVkdWNlZF9yZXMpKS4uLn07CiAgIHN0YXRpY19jYXN0PHZv
aWQ+KGR1bW15KTsKICAgcmV0dXJuIHJlZHVjZWRfcmVzOwogfQpAQCAtODU4LDcgKzg1OCw3IEBA
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBUZXN0Tm90aHJvd09wKGNvbnN0IE9wZXJhdGlvbiYg
b3BlcmF0aW9uKSB7CiAgIHRyeSB7CiAgICAgb3BlcmF0aW9uKCk7CiAgICAgcmV0dXJuIHRlc3Rp
bmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLSAgfSBjYXRjaCAoZXhjZXB0aW9uc19pbnRlcm5hbDo6
VGVzdEV4Y2VwdGlvbikgeworICB9IGNhdGNoIChjb25zdCBleGNlcHRpb25zX2ludGVybmFsOjpU
ZXN0RXhjZXB0aW9uJikgewogICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkK
ICAgICAgICAgICAgPDwgIlRlc3RFeGNlcHRpb24gdGhyb3duIGR1cmluZyBjYWxsIHRvIG9wZXJh
dGlvbigpIHdoZW4gbm90aHJvdyAiCiAgICAgICAgICAgICAgICJndWFyYW50ZWUgd2FzIGV4cGVj
dGVkLiI7CkBAIC04ODQsMTUgKzg4NCwxNSBAQCBjbGFzcyBEZWZhdWx0RmFjdG9yeSB7CiAgIFQg
dF87CiB9OwogCi10ZW1wbGF0ZSA8c2l6ZV90IExhenlJbnZhcmlhbnRzQ291bnQsIHR5cGVuYW1l
IExhenlGYWN0b3J5LAordGVtcGxhdGUgPHNpemVfdCBMYXp5Q29udHJhY3RzQ291bnQsIHR5cGVu
YW1lIExhenlGYWN0b3J5LAogICAgICAgICAgIHR5cGVuYW1lIExhenlPcGVyYXRpb24+CiB1c2lu
ZyBFbmFibGVJZlRlc3RhYmxlID0gdHlwZW5hbWUgYWJzbDo6ZW5hYmxlX2lmX3Q8Ci0gICAgTGF6
eUludmFyaWFudHNDb3VudCAhPSAwICYmCisgICAgTGF6eUNvbnRyYWN0c0NvdW50ICE9IDAgJiYK
ICAgICAhc3RkOjppc19zYW1lPExhenlGYWN0b3J5LCBVbmluaXRpYWxpemVkVD46OnZhbHVlICYm
CiAgICAgIXN0ZDo6aXNfc2FtZTxMYXp5T3BlcmF0aW9uLCBVbmluaXRpYWxpemVkVD46OnZhbHVl
PjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZhY3RvcnkgPSBVbmluaXRpYWxpemVkVCwKLSAgICAg
ICAgICB0eXBlbmFtZSBPcGVyYXRpb24gPSBVbmluaXRpYWxpemVkVCwgdHlwZW5hbWUuLi4gSW52
YXJpYW50cz4KKyAgICAgICAgICB0eXBlbmFtZSBPcGVyYXRpb24gPSBVbmluaXRpYWxpemVkVCwg
dHlwZW5hbWUuLi4gQ29udHJhY3RzPgogY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyOwogCiB9
ICAvLyBuYW1lc3BhY2UgZXhjZXB0aW9uc19pbnRlcm5hbApAQCAtOTAzLDcgKzkwMyw3IEBAIG5h
bWVzcGFjZSBleGNlcHRpb25zX2ludGVybmFsIHsKIAogLyoKICAqIEJ1aWxkcyBhIHRlc3RlciBv
YmplY3QgdGhhdCB0ZXN0cyBpZiBwZXJmb3JtaW5nIGEgb3BlcmF0aW9uIG9uIGEgVCBmb2xsb3dz
Ci0gKiBleGNlcHRpb24gc2FmZXR5IGd1YXJhbnRlZXMuIFZlcmlmaWNhdGlvbiBpcyBkb25lIHZp
YSBpbnZhcmlhbnQgYXNzZXJ0aW9uCisgKiBleGNlcHRpb24gc2FmZXR5IGd1YXJhbnRlZXMuIFZl
cmlmaWNhdGlvbiBpcyBkb25lIHZpYSBjb250cmFjdCBhc3NlcnRpb24KICAqIGNhbGxiYWNrcyBh
cHBsaWVkIHRvIFQgaW5zdGFuY2VzIHBvc3QtdGhyb3cuCiAgKgogICogVGVtcGxhdGUgcGFyYW1l
dGVycyBmb3IgRXhjZXB0aW9uU2FmZXR5VGVzdGVyOgpAQCAtOTIxLDE4ICs5MjEsMTggQEAgbmFt
ZXNwYWNlIGV4Y2VwdGlvbnNfaW50ZXJuYWwgewogICogICBmcmVzaCBUIGluc3RhbmNlIHNvIGl0
J3MgZnJlZSB0byBtb2RpZnkgYW5kIGRlc3Ryb3kgdGhlIFQgaW5zdGFuY2VzIGFzIGl0CiAgKiAg
IHBsZWFzZXMuCiAgKgotICogLSBJbnZhcmlhbnRzLi4uOiBUaGUgaW52YXJpYW50IGFzc2VydGlv
biBjYWxsYmFjayBvYmplY3RzIChwYXNzZWQgaW4gdmlhCi0gKiAgIHRlc3Rlci5XaXRoSW52YXJp
YW50cyguLi4pKSBtdXN0IGJlIGludm9jYWJsZSB3aXRoIHRoZSBzaWduYXR1cmUKKyAqIC0gQ29u
dHJhY3RzLi4uOiBUaGUgY29udHJhY3QgYXNzZXJ0aW9uIGNhbGxiYWNrIG9iamVjdHMgKHBhc3Nl
ZCBpbiB2aWEKKyAqICAgdGVzdGVyLldpdGhDb250cmFjdHMoLi4uKSkgbXVzdCBiZSBpbnZvY2Fi
bGUgd2l0aCB0aGUgc2lnbmF0dXJlCiAgKiAgIGB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgb3Bl
cmF0b3IoKShUKikgY29uc3RgIHdoZXJlIFQgaXMgdGhlIHR5cGUgYmVpbmcKLSAqICAgdGVzdGVk
LiBJbnZhcmlhbnQgYXNzZXJ0aW9uIGNhbGxiYWNrcyBhcmUgcHJvdmlkZWQgVCBpbnN0YW5jZXMg
cG9zdC10aHJvdy4KLSAqICAgVGhleSBtdXN0IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNj
ZXNzIHdoZW4gdGhlIHR5cGUgaW52YXJpYW50cyBvZiB0aGUKLSAqICAgcHJvdmlkZWQgVCBpbnN0
YW5jZSBob2xkLiBJZiB0aGUgdHlwZSBpbnZhcmlhbnRzIG9mIHRoZSBUIGluc3RhbmNlIGRvIG5v
dAorICogICB0ZXN0ZWQuIENvbnRyYWN0IGFzc2VydGlvbiBjYWxsYmFja3MgYXJlIHByb3ZpZGVk
IFQgaW5zdGFuY2VzIHBvc3QtdGhyb3cuCisgKiAgIFRoZXkgbXVzdCByZXR1cm4gdGVzdGluZzo6
QXNzZXJ0aW9uU3VjY2VzcyB3aGVuIHRoZSB0eXBlIGNvbnRyYWN0cyBvZiB0aGUKKyAqICAgcHJv
dmlkZWQgVCBpbnN0YW5jZSBob2xkLiBJZiB0aGUgdHlwZSBjb250cmFjdHMgb2YgdGhlIFQgaW5z
dGFuY2UgZG8gbm90CiAgKiAgIGhvbGQsIHRoZXkgbXVzdCByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZS4gRXhlY3V0aW9uIG9yZGVyIG9mCi0gKiAgIEludmFyaWFudHMuLi4gaXMgdW5z
cGVjaWZpZWQuIFRoZXkgd2lsbCBlYWNoIGluZGl2aWR1YWxseSBnZXQgYSBmcmVzaCBUCisgKiAg
IENvbnRyYWN0cy4uLiBpcyB1bnNwZWNpZmllZC4gVGhleSB3aWxsIGVhY2ggaW5kaXZpZHVhbGx5
IGdldCBhIGZyZXNoIFQKICAqICAgaW5zdGFuY2Ugc28gdGhleSBhcmUgZnJlZSB0byBtb2RpZnkg
YW5kIGRlc3Ryb3kgdGhlIFQgaW5zdGFuY2VzIGFzIHRoZXkKICAqICAgcGxlYXNlLgogICovCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBlbmFtZS4u
LiBJbnZhcmlhbnRzPgordGVtcGxhdGUgPHR5cGVuYW1lIEZhY3RvcnksIHR5cGVuYW1lIE9wZXJh
dGlvbiwgdHlwZW5hbWUuLi4gQ29udHJhY3RzPgogY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVy
IHsKICBwdWJsaWM6CiAgIC8qCkBAIC05NDgsNyArOTQ4LDcgQEAgY2xhc3MgRXhjZXB0aW9uU2Fm
ZXR5VGVzdGVyIHsKICAgICogICB0ZXN0ZXIuV2l0aEZhY3RvcnkoLi4uKS4KICAgICovCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8RGVmYXVsdEZhY3Rv
cnk8VD4sIE9wZXJhdGlvbiwgSW52YXJpYW50cy4uLj4KKyAgRXhjZXB0aW9uU2FmZXR5VGVzdGVy
PERlZmF1bHRGYWN0b3J5PFQ+LCBPcGVyYXRpb24sIENvbnRyYWN0cy4uLj4KICAgV2l0aEluaXRp
YWxWYWx1ZShjb25zdCBUJiB0KSBjb25zdCB7CiAgICAgcmV0dXJuIFdpdGhGYWN0b3J5KERlZmF1
bHRGYWN0b3J5PFQ+KHQpKTsKICAgfQpAQCAtOTYxLDkgKzk2MSw5IEBAIGNsYXNzIEV4Y2VwdGlv
blNhZmV0eVRlc3RlciB7CiAgICAqIG1ldGhvZCB0ZXN0ZXIuV2l0aEluaXRpYWxWYWx1ZSguLi4p
LgogICAgKi8KICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5ld0ZhY3Rvcnk+Ci0gIEV4Y2VwdGlvblNh
ZmV0eVRlc3RlcjxhYnNsOjpkZWNheV90PE5ld0ZhY3Rvcnk+LCBPcGVyYXRpb24sIEludmFyaWFu
dHMuLi4+CisgIEV4Y2VwdGlvblNhZmV0eVRlc3RlcjxhYnNsOjpkZWNheV90PE5ld0ZhY3Rvcnk+
LCBPcGVyYXRpb24sIENvbnRyYWN0cy4uLj4KICAgV2l0aEZhY3RvcnkoY29uc3QgTmV3RmFjdG9y
eSYgbmV3X2ZhY3RvcnkpIGNvbnN0IHsKLSAgICByZXR1cm4ge25ld19mYWN0b3J5LCBvcGVyYXRp
b25fLCBpbnZhcmlhbnRzX307CisgICAgcmV0dXJuIHtuZXdfZmFjdG9yeSwgb3BlcmF0aW9uXywg
Y29udHJhY3RzX307CiAgIH0KIAogICAvKgpAQCAtOTcyLDM5ICs5NzIsMzkgQEAgY2xhc3MgRXhj
ZXB0aW9uU2FmZXR5VGVzdGVyIHsKICAgICogdGVzdGVyLgogICAgKi8KICAgdGVtcGxhdGUgPHR5
cGVuYW1lIE5ld09wZXJhdGlvbj4KLSAgRXhjZXB0aW9uU2FmZXR5VGVzdGVyPEZhY3RvcnksIGFi
c2w6OmRlY2F5X3Q8TmV3T3BlcmF0aW9uPiwgSW52YXJpYW50cy4uLj4KKyAgRXhjZXB0aW9uU2Fm
ZXR5VGVzdGVyPEZhY3RvcnksIGFic2w6OmRlY2F5X3Q8TmV3T3BlcmF0aW9uPiwgQ29udHJhY3Rz
Li4uPgogICBXaXRoT3BlcmF0aW9uKGNvbnN0IE5ld09wZXJhdGlvbiYgbmV3X29wZXJhdGlvbikg
Y29uc3QgewotICAgIHJldHVybiB7ZmFjdG9yeV8sIG5ld19vcGVyYXRpb24sIGludmFyaWFudHNf
fTsKKyAgICByZXR1cm4ge2ZhY3RvcnlfLCBuZXdfb3BlcmF0aW9uLCBjb250cmFjdHNffTsKICAg
fQogCiAgIC8qCi0gICAqIFJldHVybnMgYSBuZXcgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHdpdGgg
dGhlIHByb3ZpZGVkIE1vcmVJbnZhcmlhbnRzLi4uCi0gICAqIGNvbWJpbmVkIHdpdGggdGhlIElu
dmFyaWFudHMuLi4gdGhhdCB3ZXJlIGFscmVhZHkgaW5jbHVkZWQgaW4gdGhlIGluc3RhbmNlCi0g
ICAqIG9uIHdoaWNoIHRoZSBtZXRob2Qgd2FzIGNhbGxlZC4gSW52YXJpYW50cy4uLiBjYW5ub3Qg
YmUgcmVtb3ZlZCBvciByZXBsYWNlZAorICAgKiBSZXR1cm5zIGEgbmV3IEV4Y2VwdGlvblNhZmV0
eVRlc3RlciB3aXRoIHRoZSBwcm92aWRlZCBNb3JlQ29udHJhY3RzLi4uCisgICAqIGNvbWJpbmVk
IHdpdGggdGhlIENvbnRyYWN0cy4uLiB0aGF0IHdlcmUgYWxyZWFkeSBpbmNsdWRlZCBpbiB0aGUg
aW5zdGFuY2UKKyAgICogb24gd2hpY2ggdGhlIG1ldGhvZCB3YXMgY2FsbGVkLiBDb250cmFjdHMu
Li4gY2Fubm90IGJlIHJlbW92ZWQgb3IgcmVwbGFjZWQKICAgICogb25jZSBhZGRlZCB0byBhbiBF
eGNlcHRpb25TYWZldHlUZXN0ZXIgaW5zdGFuY2UuIEEgZnJlc2ggb2JqZWN0IG11c3QgYmUKLSAg
ICogY3JlYXRlZCBpbiBvcmRlciB0byBnZXQgYW4gZW1wdHkgSW52YXJpYW50cy4uLiBsaXN0Lgor
ICAgKiBjcmVhdGVkIGluIG9yZGVyIHRvIGdldCBhbiBlbXB0eSBDb250cmFjdHMuLi4gbGlzdC4K
ICAgICoKLSAgICogSW4gYWRkaXRpb24gdG8gcGFzc2luZyBpbiBjdXN0b20gaW52YXJpYW50IGFz
c2VydGlvbiBjYWxsYmFja3MsIHRoaXMgbWV0aG9kCisgICAqIEluIGFkZGl0aW9uIHRvIHBhc3Np
bmcgaW4gY3VzdG9tIGNvbnRyYWN0IGFzc2VydGlvbiBjYWxsYmFja3MsIHRoaXMgbWV0aG9kCiAg
ICAqIGFjY2VwdHMgYHRlc3Rpbmc6OnN0cm9uZ19ndWFyYW50ZWVgIGFzIGFuIGFyZ3VtZW50IHdo
aWNoIGNoZWNrcyBUIGluc3RhbmNlcwogICAgKiBwb3N0LXRocm93IGFnYWluc3QgZnJlc2hseSBj
cmVhdGVkIFQgaW5zdGFuY2VzIHZpYSBvcGVyYXRvcj09IHRvIHZlcmlmeQogICAgKiB0aGF0IGFu
eSBzdGF0ZSBjaGFuZ2VzIG1hZGUgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIG9wZXJhdGlv
biB3ZXJlCiAgICAqIHByb3Blcmx5IHJvbGxlZCBiYWNrLgogICAgKi8KLSAgdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIE1vcmVJbnZhcmlhbnRzPgotICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8RmFjdG9y
eSwgT3BlcmF0aW9uLCBJbnZhcmlhbnRzLi4uLAotICAgICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6ZGVjYXlfdDxNb3JlSW52YXJpYW50cz4uLi4+Ci0gIFdpdGhJbnZhcmlhbnRzKGNvbnN0IE1v
cmVJbnZhcmlhbnRzJi4uLiBtb3JlX2ludmFyaWFudHMpIGNvbnN0IHsKLSAgICByZXR1cm4ge2Zh
Y3RvcnlfLCBvcGVyYXRpb25fLAotICAgICAgICAgICAgc3RkOjp0dXBsZV9jYXQoaW52YXJpYW50
c18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnR1cGxlPGFic2w6OmRlY2F5X3Q8
TW9yZUludmFyaWFudHM+Li4uPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Jl
X2ludmFyaWFudHMuLi4pKX07CisgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBNb3JlQ29udHJhY3Rz
PgorICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8RmFjdG9yeSwgT3BlcmF0aW9uLCBDb250cmFjdHMu
Li4sCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpkZWNheV90PE1vcmVDb250cmFjdHM+
Li4uPgorICBXaXRoQ29udHJhY3RzKGNvbnN0IE1vcmVDb250cmFjdHMmLi4uIG1vcmVfY29udHJh
Y3RzKSBjb25zdCB7CisgICAgcmV0dXJuIHsKKyAgICAgICAgZmFjdG9yeV8sIG9wZXJhdGlvbl8s
CisgICAgICAgIHN0ZDo6dHVwbGVfY2F0KGNvbnRyYWN0c18sIHN0ZDo6dHVwbGU8YWJzbDo6ZGVj
YXlfdDxNb3JlQ29udHJhY3RzPi4uLj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb3JlX2NvbnRyYWN0cy4uLikpfTsKICAgfQogCiAgIC8qCiAgICAqIFJldHVybnMg
YSB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgdGhhdCBpcyB0aGUgcmVkdWNlZCByZXN1bHQgb2Yg
dGhlCiAgICAqIGV4Y2VwdGlvbiBzYWZldHkgYWxnb3JpdGhtLiBUaGUgYWxnb3JpdGhtIHNob3J0
IGNpcmN1aXRzIGFuZCByZXR1cm5zCi0gICAqIEFzc2VydGlvbkZhaWx1cmUgYWZ0ZXIgdGhlIGZp
cnN0IGludmFyaWFudCBjYWxsYmFjayByZXR1cm5zIGFuCi0gICAqIEFzc2VydGlvbkZhaWx1cmUu
IE90aGVyd2lzZSwgaWYgYWxsIGludmFyaWFudCBjYWxsYmFja3MgcmV0dXJuIGFuCisgICAqIEFz
c2VydGlvbkZhaWx1cmUgYWZ0ZXIgdGhlIGZpcnN0IGNvbnRyYWN0IGNhbGxiYWNrIHJldHVybnMg
YW4KKyAgICogQXNzZXJ0aW9uRmFpbHVyZS4gT3RoZXJ3aXNlLCBpZiBhbGwgY29udHJhY3QgY2Fs
bGJhY2tzIHJldHVybiBhbgogICAgKiBBc3NlcnRpb25TdWNjZXNzLCB0aGUgcmVkdWNlZCByZXN1
bHQgaXMgQXNzZXJ0aW9uU3VjY2Vzcy4KICAgICoKICAgICogVGhlIHBhc3NlZC1pbiB0ZXN0YWJs
ZSBvcGVyYXRpb24gd2lsbCBub3QgYmUgc2F2ZWQgaW4gYSBuZXcgdGVzdGVyIGluc3RhbmNlCkBA
IC0xMDEzLDMzICsxMDEzLDMzIEBAIGNsYXNzIEV4Y2VwdGlvblNhZmV0eVRlc3RlciB7CiAgICAq
CiAgICAqIFByZWNvbmRpdGlvbnMgZm9yIHRlc3Rlci5UZXN0KGNvbnN0IE5ld09wZXJhdGlvbiYg
bmV3X29wZXJhdGlvbik6CiAgICAqCi0gICAqIC0gTWF5IG9ubHkgYmUgY2FsbGVkIGFmdGVyIGF0
IGxlYXN0IG9uZSBpbnZhcmlhbnQgYXNzZXJ0aW9uIGNhbGxiYWNrIGFuZCBhCisgICAqIC0gTWF5
IG9ubHkgYmUgY2FsbGVkIGFmdGVyIGF0IGxlYXN0IG9uZSBjb250cmFjdCBhc3NlcnRpb24gY2Fs
bGJhY2sgYW5kIGEKICAgICogICBmYWN0b3J5IG9yIGluaXRpYWwgdmFsdWUgaGF2ZSBiZWVuIHBy
b3ZpZGVkLgogICAgKi8KICAgdGVtcGxhdGUgPAogICAgICAgdHlwZW5hbWUgTmV3T3BlcmF0aW9u
LAotICAgICAgdHlwZW5hbWUgPSBFbmFibGVJZlRlc3RhYmxlPHNpemVvZi4uLihJbnZhcmlhbnRz
KSwgRmFjdG9yeSwgTmV3T3BlcmF0aW9uPj4KKyAgICAgIHR5cGVuYW1lID0gRW5hYmxlSWZUZXN0
YWJsZTxzaXplb2YuLi4oQ29udHJhY3RzKSwgRmFjdG9yeSwgTmV3T3BlcmF0aW9uPj4KICAgdGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IFRlc3QoY29uc3QgTmV3T3BlcmF0aW9uJiBuZXdfb3BlcmF0
aW9uKSBjb25zdCB7Ci0gICAgcmV0dXJuIFRlc3RJbXBsKG5ld19vcGVyYXRpb24sIGFic2w6Omlu
ZGV4X3NlcXVlbmNlX2ZvcjxJbnZhcmlhbnRzLi4uPigpKTsKKyAgICByZXR1cm4gVGVzdEltcGwo
bmV3X29wZXJhdGlvbiwgYWJzbDo6aW5kZXhfc2VxdWVuY2VfZm9yPENvbnRyYWN0cy4uLj4oKSk7
CiAgIH0KIAogICAvKgogICAgKiBSZXR1cm5zIGEgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IHRo
YXQgaXMgdGhlIHJlZHVjZWQgcmVzdWx0IG9mIHRoZQogICAgKiBleGNlcHRpb24gc2FmZXR5IGFs
Z29yaXRobS4gVGhlIGFsZ29yaXRobSBzaG9ydCBjaXJjdWl0cyBhbmQgcmV0dXJucwotICAgKiBB
c3NlcnRpb25GYWlsdXJlIGFmdGVyIHRoZSBmaXJzdCBpbnZhcmlhbnQgY2FsbGJhY2sgcmV0dXJu
cyBhbgotICAgKiBBc3NlcnRpb25GYWlsdXJlLiBPdGhlcndpc2UsIGlmIGFsbCBpbnZhcmlhbnQg
Y2FsbGJhY2tzIHJldHVybiBhbgorICAgKiBBc3NlcnRpb25GYWlsdXJlIGFmdGVyIHRoZSBmaXJz
dCBjb250cmFjdCBjYWxsYmFjayByZXR1cm5zIGFuCisgICAqIEFzc2VydGlvbkZhaWx1cmUuIE90
aGVyd2lzZSwgaWYgYWxsIGNvbnRyYWN0IGNhbGxiYWNrcyByZXR1cm4gYW4KICAgICogQXNzZXJ0
aW9uU3VjY2VzcywgdGhlIHJlZHVjZWQgcmVzdWx0IGlzIEFzc2VydGlvblN1Y2Nlc3MuCiAgICAq
CiAgICAqIFByZWNvbmRpdGlvbnMgZm9yIHRlc3Rlci5UZXN0KCk6CiAgICAqCi0gICAqIC0gTWF5
IG9ubHkgYmUgY2FsbGVkIGFmdGVyIGF0IGxlYXN0IG9uZSBpbnZhcmlhbnQgYXNzZXJ0aW9uIGNh
bGxiYWNrLCBhCisgICAqIC0gTWF5IG9ubHkgYmUgY2FsbGVkIGFmdGVyIGF0IGxlYXN0IG9uZSBj
b250cmFjdCBhc3NlcnRpb24gY2FsbGJhY2ssIGEKICAgICogICBmYWN0b3J5IG9yIGluaXRpYWwg
dmFsdWUgYW5kIGEgdGVzdGFibGUgb3BlcmF0aW9uIGhhdmUgYmVlbiBwcm92aWRlZC4KICAgICov
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXp5T3BlcmF0aW9uID0gT3BlcmF0aW9uLAotICAgICAg
ICAgICAgdHlwZW5hbWUgPQotICAgICAgICAgICAgICAgIEVuYWJsZUlmVGVzdGFibGU8c2l6ZW9m
Li4uKEludmFyaWFudHMpLCBGYWN0b3J5LCBMYXp5T3BlcmF0aW9uPj4KKyAgdGVtcGxhdGUgPAor
ICAgICAgdHlwZW5hbWUgTGF6eU9wZXJhdGlvbiA9IE9wZXJhdGlvbiwKKyAgICAgIHR5cGVuYW1l
ID0gRW5hYmxlSWZUZXN0YWJsZTxzaXplb2YuLi4oQ29udHJhY3RzKSwgRmFjdG9yeSwgTGF6eU9w
ZXJhdGlvbj4+CiAgIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBUZXN0KCkgY29uc3QgewotICAg
IHJldHVybiBUZXN0SW1wbChvcGVyYXRpb25fLCBhYnNsOjppbmRleF9zZXF1ZW5jZV9mb3I8SW52
YXJpYW50cy4uLj4oKSk7CisgICAgcmV0dXJuIFRlc3RJbXBsKG9wZXJhdGlvbl8sIGFic2w6Omlu
ZGV4X3NlcXVlbmNlX2ZvcjxDb250cmFjdHMuLi4+KCkpOwogICB9CiAKICBwcml2YXRlOgpAQCAt
MTA1MSw4ICsxMDUxLDggQEAgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKICAgRXhjZXB0
aW9uU2FmZXR5VGVzdGVyKCkge30KIAogICBFeGNlcHRpb25TYWZldHlUZXN0ZXIoY29uc3QgRmFj
dG9yeSYgZiwgY29uc3QgT3BlcmF0aW9uJiBvLAotICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjp0dXBsZTxJbnZhcmlhbnRzLi4uPiYgaSkKLSAgICAgIDogZmFjdG9yeV8oZiksIG9w
ZXJhdGlvbl8obyksIGludmFyaWFudHNfKGkpIHt9CisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnR1cGxlPENvbnRyYWN0cy4uLj4mIGkpCisgICAgICA6IGZhY3RvcnlfKGYpLCBv
cGVyYXRpb25fKG8pLCBjb250cmFjdHNfKGkpIHt9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNl
bGVjdGVkT3BlcmF0aW9uLCBzaXplX3QuLi4gSW5kaWNlcz4KICAgdGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IFRlc3RJbXBsKGNvbnN0IFNlbGVjdGVkT3BlcmF0aW9uJiBzZWxlY3RlZF9vcGVyYXRp
b24sCkBAIC0xMDY0LDI4ICsxMDY0LDI4IEBAIGNsYXNzIEV4Y2VwdGlvblNhZmV0eVRlc3RlciB7
CiAKICAgICAgIC8vIFJ1biB0aGUgZnVsbCBleGNlcHRpb24gc2FmZXR5IHRlc3QgYWxnb3JpdGht
IGZvciB0aGUgY3VycmVudCBjb3VudGRvd24KICAgICAgIGF1dG8gcmVkdWNlZF9yZXMgPQotICAg
ICAgICAgIFRlc3RBbGxJbnZhcmlhbnRzQXRDb3VudGRvd24oZmFjdG9yeV8sIHNlbGVjdGVkX29w
ZXJhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmdldDxJbmRpY2VzPihpbnZhcmlhbnRzXykuLi4pOwotICAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gdmFsdWUgaW4gdGhlIG9wdGlvbmFsLCBubyBpbnZhcmlhbnRzIHdlcmUgcnVuIGJlY2F1c2Ug
bm8KKyAgICAgICAgICBUZXN0QWxsQ29udHJhY3RzQXRDb3VudGRvd24oZmFjdG9yeV8sIHNlbGVj
dGVkX29wZXJhdGlvbiwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6Z2V0PEluZGljZXM+KGNvbnRyYWN0c18pLi4uKTsKKyAgICAgIC8vIElmIHRoZXJl
IGlzIG5vIHZhbHVlIGluIHRoZSBvcHRpb25hbCwgbm8gY29udHJhY3RzIHdlcmUgcnVuIGJlY2F1
c2Ugbm8KICAgICAgIC8vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLiBUaGlzIG1lYW5zIHRoYXQgdGhl
IHRlc3QgaXMgY29tcGxldGUgYW5kIHRoZSBsb29wCiAgICAgICAvLyBjYW4gZXhpdCBzdWNjZXNz
ZnVsbHkuCiAgICAgICBpZiAoIXJlZHVjZWRfcmVzLmhhc192YWx1ZSgpKSB7CiAgICAgICAgIHJl
dHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAgICAgICB9Ci0gICAgICAvLyBJZiB0
aGUgb3B0aW9uYWwgaXMgbm90IGVtcHR5IGFuZCB0aGUgdmFsdWUgaXMgZmFsc3ksIGFuIGludmFy
aWFudCBjaGVjaworICAgICAgLy8gSWYgdGhlIG9wdGlvbmFsIGlzIG5vdCBlbXB0eSBhbmQgdGhl
IHZhbHVlIGlzIGZhbHN5LCBhbiBjb250cmFjdCBjaGVjawogICAgICAgLy8gZmFpbGVkIHNvIHRo
ZSB0ZXN0IG11c3QgZXhpdCB0byBwcm9wZWdhdGUgdGhlIGZhaWx1cmUuCiAgICAgICBpZiAoIXJl
ZHVjZWRfcmVzLnZhbHVlKCkpIHsKICAgICAgICAgcmV0dXJuIHJlZHVjZWRfcmVzLnZhbHVlKCk7
CiAgICAgICB9CiAgICAgICAvLyBJZiB0aGUgb3B0aW9uYWwgaXMgbm90IGVtcHR5IGFuZCB0aGUg
dmFsdWUgaXMgbm90IGZhbHN5LCBpdCBtZWFucwotICAgICAgLy8gZXhjZXB0aW9ucyB3ZXJlIHRo
cm93biBidXQgdGhlIGludmFyaWFudHMgcGFzc2VkIHNvIHRoZSB0ZXN0IG11c3QKKyAgICAgIC8v
IGV4Y2VwdGlvbnMgd2VyZSB0aHJvd24gYnV0IHRoZSBjb250cmFjdHMgcGFzc2VkIHNvIHRoZSB0
ZXN0IG11c3QKICAgICAgIC8vIGNvbnRpbnVlIHRvIHJ1bi4KICAgICB9CiAgIH0KIAogICBGYWN0
b3J5IGZhY3RvcnlfOwogICBPcGVyYXRpb24gb3BlcmF0aW9uXzsKLSAgc3RkOjp0dXBsZTxJbnZh
cmlhbnRzLi4uPiBpbnZhcmlhbnRzXzsKKyAgc3RkOjp0dXBsZTxDb250cmFjdHMuLi4+IGNvbnRy
YWN0c187CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgZXhjZXB0aW9uc19pbnRlcm5hbApAQCAtMTA5
Niw3ICsxMDk2LDcgQEAgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKICAqIGluc3RhbmNl
cyBvZiBFeGNlcHRpb25TYWZldHlUZXN0ZXIuCiAgKgogICogSW4gb3JkZXIgdG8gdGVzdCBhIFQg
Zm9yIGV4Y2VwdGlvbiBzYWZldHksIGEgZmFjdG9yeSBmb3IgdGhhdCBULCBhIHRlc3RhYmxlCi0g
KiBvcGVyYXRpb24sIGFuZCBhdCBsZWFzdCBvbmUgaW52YXJpYW50IGNhbGxiYWNrIHJldHVybmlu
ZyBhbiBhc3NlcnRpb24KKyAqIG9wZXJhdGlvbiwgYW5kIGF0IGxlYXN0IG9uZSBjb250cmFjdCBj
YWxsYmFjayByZXR1cm5pbmcgYW4gYXNzZXJ0aW9uCiAgKiByZXN1bHQgbXVzdCBiZSBhcHBsaWVk
IHVzaW5nIHRoZSByZXNwZWN0aXZlIG1ldGhvZHMuCiAgKi8KIGlubGluZSBleGNlcHRpb25zX2lu
dGVybmFsOjpFeGNlcHRpb25TYWZldHlUZXN0ZXI8PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZl
bF9hbGxvYy5jYwppbmRleCAwNjI2Y2Q1NDc4ZDk3MDA0ZWIxZTljZGUyMTVhOTBlNDg2MmQyOWYx
Li4xNTlmOTQ1ZjVlZGQwNzA3OGY4Y2FmY2VhOGIzNzMwYTNlOGM3MThkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL2xvd19sZXZlbF9hbGxvYy5jYwpAQCAtNDAxLDE2ICs0MDEsMjAgQEAgYm9vbCBMb3dM
ZXZlbEFsbG9jOjpEZWxldGVBcmVuYShBcmVuYSAqYXJlbmEpIHsKICAgICBBQlNMX1JBV19DSEVD
SyhtdW5tYXBfcmVzdWx0ICE9IDAsCiAgICAgICAgICAgICAgICAgICAgIkxvd0xldmVsQWxsb2M6
OkRlbGV0ZUFyZW5hOiBWaXR1YWxGcmVlIGZhaWxlZCIpOwogI2Vsc2UKKyNpZm5kZWYgQUJTTF9M
T1dfTEVWRUxfQUxMT0NfQVNZTkNfU0lHTkFMX1NBRkVfTUlTU0lORwogICAgIGlmICgoYXJlbmEt
PmZsYWdzICYgTG93TGV2ZWxBbGxvYzo6a0FzeW5jU2lnbmFsU2FmZSkgPT0gMCkgewogICAgICAg
bXVubWFwX3Jlc3VsdCA9IG11bm1hcChyZWdpb24sIHNpemUpOwogICAgIH0gZWxzZSB7CiAgICAg
ICBtdW5tYXBfcmVzdWx0ID0gYmFzZV9pbnRlcm5hbDo6RGlyZWN0TXVubWFwKHJlZ2lvbiwgc2l6
ZSk7CiAgICAgfQorI2Vsc2UKKyAgICBtdW5tYXBfcmVzdWx0ID0gbXVubWFwKHJlZ2lvbiwgc2l6
ZSk7CisjZW5kaWYgIC8vIEFCU0xfTE9XX0xFVkVMX0FMTE9DX0FTWU5DX1NJR05BTF9TQUZFX01J
U1NJTkcKICAgICBpZiAobXVubWFwX3Jlc3VsdCAhPSAwKSB7CiAgICAgICBBQlNMX1JBV19MT0co
RkFUQUwsICJMb3dMZXZlbEFsbG9jOjpEZWxldGVBcmVuYTogbXVubWFwIGZhaWxlZDogJWQiLAog
ICAgICAgICAgICAgICAgICAgIGVycm5vKTsKICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAgLy8gX1dJ
TjMyCiAgIH0KICAgc2VjdGlvbi5MZWF2ZSgpOwogICBhcmVuYS0+fkFyZW5hKCk7CkBAIC01NDUs
NiArNTQ5LDcgQEAgc3RhdGljIHZvaWQgKkRvQWxsb2NXaXRoQXJlbmEoc2l6ZV90IHJlcXVlc3Qs
IExvd0xldmVsQWxsb2M6OkFyZW5hICphcmVuYSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE1FTV9SRVNFUlZFIHwgTUVNX0NPTU1JVCwgUEFHRV9SRUFEV1JJVEUpOwogICAgICAg
QUJTTF9SQVdfQ0hFQ0sobmV3X3BhZ2VzICE9IG51bGxwdHIsICJWaXJ0dWFsQWxsb2MgZmFpbGVk
Iik7CiAjZWxzZQorI2lmbmRlZiBBQlNMX0xPV19MRVZFTF9BTExPQ19BU1lOQ19TSUdOQUxfU0FG
RV9NSVNTSU5HCiAgICAgICBpZiAoKGFyZW5hLT5mbGFncyAmIExvd0xldmVsQWxsb2M6OmtBc3lu
Y1NpZ25hbFNhZmUpICE9IDApIHsKICAgICAgICAgbmV3X3BhZ2VzID0gYmFzZV9pbnRlcm5hbDo6
RGlyZWN0TW1hcChudWxscHRyLCBuZXdfcGFnZXNfc2l6ZSwKICAgICAgICAgICAgIFBST1RfV1JJ
VEV8UFJPVF9SRUFELCBNQVBfQU5PTllNT1VTfE1BUF9QUklWQVRFLCAtMSwgMCk7CkBAIC01NTIs
MTAgKzU1NywxNSBAQCBzdGF0aWMgdm9pZCAqRG9BbGxvY1dpdGhBcmVuYShzaXplX3QgcmVxdWVz
dCwgTG93TGV2ZWxBbGxvYzo6QXJlbmEgKmFyZW5hKSB7CiAgICAgICAgIG5ld19wYWdlcyA9IG1t
YXAobnVsbHB0ciwgbmV3X3BhZ2VzX3NpemUsIFBST1RfV1JJVEUgfCBQUk9UX1JFQUQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgTUFQX0FOT05ZTU9VUyB8IE1BUF9QUklWQVRFLCAtMSwgMCk7
CiAgICAgICB9CisjZWxzZQorICAgICAgbmV3X3BhZ2VzID0gbW1hcChudWxscHRyLCBuZXdfcGFn
ZXNfc2l6ZSwgUFJPVF9XUklURSB8IFBST1RfUkVBRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
TUFQX0FOT05ZTU9VUyB8IE1BUF9QUklWQVRFLCAtMSwgMCk7CisjZW5kaWYgIC8vIEFCU0xfTE9X
X0xFVkVMX0FMTE9DX0FTWU5DX1NJR05BTF9TQUZFX01JU1NJTkcKICAgICAgIGlmIChuZXdfcGFn
ZXMgPT0gTUFQX0ZBSUxFRCkgewogICAgICAgICBBQlNMX1JBV19MT0coRkFUQUwsICJtbWFwIGVy
cm9yOiAlZCIsIGVycm5vKTsKICAgICAgIH0KLSNlbmRpZgorCisjZW5kaWYgIC8vIF9XSU4zMgog
ICAgICAgYXJlbmEtPm11LkxvY2soKTsKICAgICAgIHMgPSByZWludGVycHJldF9jYXN0PEFsbG9j
TGlzdCAqPihuZXdfcGFnZXMpOwogICAgICAgcy0+aGVhZGVyLnNpemUgPSBuZXdfcGFnZXNfc2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvYy5oCmluZGV4IDNjMTU2MDViZWQzNTc4
ODk5Mzg5Y2M0ZWEyOTZjZWI1YmE1N2ExNWUuLmZiYTk0NjZhNzU3NDI3YzAxZWQxMjE0NjRjM2Fi
MTEyZGUyMGM5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2Fs
bG9jLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuaApAQCAtMzks
MTAgKzM5LDEzIEBACiAjZGVmaW5lIEFCU0xfTE9XX0xFVkVMX0FMTE9DX01JU1NJTkcgMQogI2Vu
ZGlmCiAKLS8vIFVzaW5nIExvd0xldmVsQWxsb2Mgd2l0aCBrQXN5bmNTaWduYWxTYWZlIGlzbid0
IHN1cHBvcnRlZCBvbiBXaW5kb3dzLgorLy8gVXNpbmcgTG93TGV2ZWxBbGxvYyB3aXRoIGtBc3lu
Y1NpZ25hbFNhZmUgaXNuJ3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3Mgb3IKKy8vIGFzbS5qcyAvIFdl
YkFzc2VtYmx5LgorLy8gU2VlIGh0dHBzOi8va3JpcGtlbi5naXRodWIuaW8vZW1zY3JpcHRlbi1z
aXRlL2RvY3MvcG9ydGluZy9wdGhyZWFkcy5odG1sCisvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K
ICNpZmRlZiBBQlNMX0xPV19MRVZFTF9BTExPQ19BU1lOQ19TSUdOQUxfU0FGRV9NSVNTSU5HCiAj
ZXJyb3IgQUJTTF9MT1dfTEVWRUxfQUxMT0NfQVNZTkNfU0lHTkFMX1NBRkVfTUlTU0lORyBjYW5u
b3QgYmUgZGlyZWN0bHkgc2V0Ci0jZWxpZiBkZWZpbmVkKF9XSU4zMikKKyNlbGlmIGRlZmluZWQo
X1dJTjMyKSB8fCBkZWZpbmVkKF9fYXNtanNfXykgfHwgZGVmaW5lZChfX3dhc21fXykKICNkZWZp
bmUgQUJTTF9MT1dfTEVWRUxfQUxMT0NfQVNZTkNfU0lHTkFMX1NBRkVfTUlTU0lORyAxCiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oCmluZGV4IDY3YWJmZDMwNzk4ZGI4ZmZmNjBi
Mjg0YWE2YzkyZGZlMjNhNDViZWYuLjc5YTdiYjliMmY3YTYyYmIxOTY5Y2VlYWMwMTc4MmNlNGU5
ZGVjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgKQEAgLTExNCw3ICsxMTQsNyBAQCB2
b2lkIFNhZmVXcml0ZVRvU3RkZXJyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pOwogCiAvLyBj
b21waWxlLXRpbWUgZnVuY3Rpb24gdG8gZ2V0IHRoZSAiYmFzZSIgZmlsZW5hbWUsIHRoYXQgaXMs
IHRoZSBwYXJ0IG9mCiAvLyBhIGZpbGVuYW1lIGFmdGVyIHRoZSBsYXN0ICIvIiBvciAiXCIgcGF0
aCBzZXBhcmF0b3IuICBUaGUgc2VhcmNoIHN0YXJ0cyBhdAotLy8gdGhlIGVuZCBvZiB0aGUgc3Rk
OjpzdHJpbmc7IHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0ZDo6
c3RyaW5nLgorLy8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nOyB0aGUgc2Vjb25kIHBhcmFtZXRlciBp
cyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCiBjb25zdGV4cHIgY29uc3QgY2hhciogQmFzZW5h
bWUoY29uc3QgY2hhciogZm5hbWUsIGludCBvZmZzZXQpIHsKICAgcmV0dXJuIG9mZnNldCA9PSAw
IHx8IGZuYW1lW29mZnNldCAtIDFdID09ICcvJyB8fCBmbmFtZVtvZmZzZXQgLSAxXSA9PSAnXFwn
CiAgICAgICAgICAgICAgPyBmbmFtZSArIG9mZnNldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9zcGlubG9ja19saW51eC5pbmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2Nr
X2xpbnV4LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGM4NjFkYzZjYTIzYzI4ZWQyMDgyMjg5YmEyM2VmMjUz
ODYwMTAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19s
aW51eC5pbmMKQEAgLTAsMCArMSw3MiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBB
dXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKy8vCisvLyBUaGlzIGZpbGUgaXMgYSBMaW51eC1zcGVjaWZpYyBwYXJ0IG9mIHNw
aW5sb2NrX3dhaXQuY2MKKworI2luY2x1ZGUgPGxpbnV4L2Z1dGV4Lmg+CisjaW5jbHVkZSA8c3lz
L3N5c2NhbGwuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2luY2x1ZGUgPGF0b21pYz4KKyNp
bmNsdWRlIDxjZXJybm8+CisjaW5jbHVkZSA8Y2xpbWl0cz4KKyNpbmNsdWRlIDxjc3RkaW50Pgor
I2luY2x1ZGUgPGN0aW1lPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKKwor
Ly8gVGhlIFNwaW5Mb2NrIGxvY2t3b3JkIGlzIGBzdGQ6OmF0b21pYzx1aW50MzJfdD5gLiBIZXJl
IHdlIGFzc2VydCB0aGF0CisvLyBgc3RkOjphdG9taWM8dWludDMyX3Q+YCBpcyBiaXR3aXNlIGVx
dWl2YWxlbnQgb2YgdGhlIGBpbnRgIGV4cGVjdGVkCisvLyBieSBTWVNfZnV0ZXguIFdlIGFsc28g
YXNzdW1lIHRoYXQgcmVhZHMvd3JpdGVzIGRvbmUgdG8gdGhlIGxvY2t3b3JkCisvLyBieSBTWVNf
ZnV0ZXggaGF2ZSByYXRpb25hbCBzZW1hbnRpY3Mgd2l0aCByZWdhcmQgdG8gdGhlCisvLyBzdGQ6
OmF0b21pYzw+IEFQSS4gQysrIHByb3ZpZGVzIG5vIGd1YXJhbnRlZXMgb2YgdGhlc2UgYXNzdW1w
dGlvbnMsCisvLyBidXQgdGhleSBhcmUgYmVsaWV2ZWQgdG8gaG9sZCBpbiBwcmFjdGljZS4KK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKHN0ZDo6YXRvbWljPHVpbnQzMl90PikgPT0gc2l6ZW9mKGludCks
CisgICAgICAgICAgICAgICJTcGluTG9jayBsb2Nrd29yZCBoYXMgdGhlIHdyb25nIHNpemUgZm9y
IGEgZnV0ZXgiKTsKKworLy8gU29tZSBBbmRyb2lkIGhlYWRlcnMgYXJlIG1pc3NpbmcgdGhlc2Ug
ZGVmaW5pdGlvbnMgZXZlbiB0aG91Z2ggdGhleQorLy8gc3VwcG9ydCB0aGVzZSBmdXRleCBvcGVy
YXRpb25zLgorI2lmZGVmIF9fQklPTklDX18KKyNpZm5kZWYgU1lTX2Z1dGV4CisjZGVmaW5lIFNZ
U19mdXRleCBfX05SX2Z1dGV4CisjZW5kaWYKKyNpZm5kZWYgRlVURVhfUFJJVkFURV9GTEFHCisj
ZGVmaW5lIEZVVEVYX1BSSVZBVEVfRkxBRyAxMjgKKyNlbmRpZgorI2VuZGlmCisKK2V4dGVybiAi
QyIgeworCitBQlNMX0FUVFJJQlVURV9XRUFLIHZvaWQgQWJzbEludGVybmFsU3BpbkxvY2tEZWxh
eSgKKyAgICBzdGQ6OmF0b21pYzx1aW50MzJfdD4gKncsIHVpbnQzMl90IHZhbHVlLCBpbnQgbG9v
cCwKKyAgICBhYnNsOjpiYXNlX2ludGVybmFsOjpTY2hlZHVsaW5nTW9kZSkgeworICBpZiAobG9v
cCAhPSAwKSB7CisgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKKyAgICBzdHJ1Y3QgdGltZXNw
ZWMgdG07CisgICAgdG0udHZfc2VjID0gMDsKKyAgICAvLyBJbmNyZWFzZSB0aGUgZGVsYXk7IHdl
IGV4cGVjdCAoYnV0IGRvIG5vdCByZWx5IG9uKSBleHBsaWNpdCB3YWtldXBzLgorICAgIC8vIFdl
IGRvbid0IHJlbHkgb24gZXhwbGljaXQgd2FrZXVwcyBiZWNhdXNlIHdlIGludGVudGlvbmFsbHkg
YWxsb3cgZm9yCisgICAgLy8gYSByYWNlIG9uIHRoZSBrU3BpbkxvY2tTbGVlcGVyIGJpdC4KKyAg
ICB0bS50dl9uc2VjID0gMTYgKiBhYnNsOjpiYXNlX2ludGVybmFsOjpTcGluTG9ja1N1Z2dlc3Rl
ZERlbGF5TlMobG9vcCk7CisgICAgc3lzY2FsbChTWVNfZnV0ZXgsIHcsIEZVVEVYX1dBSVQgfCBG
VVRFWF9QUklWQVRFX0ZMQUcsIHZhbHVlLCAmdG0pOworICAgIGVycm5vID0gc2F2ZV9lcnJubzsK
KyAgfQorfQorCitBQlNMX0FUVFJJQlVURV9XRUFLIHZvaWQgQWJzbEludGVybmFsU3BpbkxvY2tX
YWtlKHN0ZDo6YXRvbWljPHVpbnQzMl90PiAqdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGwpIHsKKyAgc3lzY2FsbChTWVNfZnV0ZXgs
IHcsIEZVVEVYX1dBS0UgfCBGVVRFWF9QUklWQVRFX0ZMQUcsIGFsbCA/IElOVF9NQVggOiAxLCAw
KTsKK30KKworfSAgLy8gZXh0ZXJuICJDIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5h
bC9zcGlubG9ja193YWl0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193YWl0LmNj
CmluZGV4IDlmNmU5OTExZTEwOTZiMmYxODdjYzZhODQzMDU0NGU5ZmMxNjYzMzMuLjBmZGU5YzA0
YjczYmFmNTdkMTM0OTk4MjBjYmQ0NDcxZjM1ZmRkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvc3BpbmxvY2tfd2FpdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5s
b2NrX3dhaXQuY2MKQEAgLTEzLDcgKzEzLDcgQEAKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgogCiAvLyBUaGUgT1Mtc3BlY2lmaWMgaGVhZGVyIGluY2x1ZGVkIGJlbG93IG11c3Qg
cHJvdmlkZSB0d28gY2FsbHM6Ci0vLyBiYXNlOjpzdWJ0bGU6OlNwaW5Mb2NrRGVsYXkoKSBhbmQg
YmFzZTo6c3VidGxlOjpTcGluTG9ja1dha2UoKS4KKy8vIEFic2xJbnRlcm5hbFNwaW5Mb2NrRGVs
YXkoKSBhbmQgQWJzbEludGVybmFsU3BpbkxvY2tXYWtlKCkuCiAvLyBTZWUgc3BpbmxvY2tfd2Fp
dC5oIGZvciB0aGUgc3BlY3MuCiAKICNpbmNsdWRlIDxhdG9taWM+CkBAIC0yMyw2ICsyMyw4IEBA
CiAKICNpZiBkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvc3Bp
bmxvY2tfd2luMzIuaW5jIgorI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCisjaW5jbHVkZSAiYWJz
bC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX2xpbnV4LmluYyIKICNlbGlmIGRlZmluZWQoX19ha2Fy
b3NfXykKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfYWthcm9zLmluYyIK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmNjCmluZGV4IDY3OGU4NTY4
ZDc0MjFlNTE0OGU5ZDE5Y2Q1NmU2ODA4NGEwMDM3MDUuLmNmZjljMWI0ZjRkYzM5NTQyYjJhZWQ5
NDRjOGM3ZWQwNjYzZmEyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFk
X2lkZW50aXR5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmNj
CkBAIC02OCw2ICs2OCwxNCBAQCB2b2lkIFNldEN1cnJlbnRUaHJlYWRJZGVudGl0eSgKICAgLy8g
Tk9URTogTm90IGFzeW5jLXNhZmUuICBCdXQgY2FuIGJlIG9wZW4tY29kZWQuCiAgIGFic2w6OmNh
bGxfb25jZShpbml0X3RocmVhZF9pZGVudGl0eV9rZXlfb25jZSwgQWxsb2NhdGVUaHJlYWRJZGVu
dGl0eUtleSwKICAgICAgICAgICAgICAgICAgIHJlY2xhaW1lcik7CisKKyNpZmRlZiBfX0VNU0NS
SVBURU5fXworICAvLyBFbXNjcmlwdGVuIFBUaHJlYWQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qg
c3VwcG9ydCBzaWduYWxzLgorICAvLyBTZWUgaHR0cHM6Ly9rcmlwa2VuLmdpdGh1Yi5pby9lbXNj
cmlwdGVuLXNpdGUvZG9jcy9wb3J0aW5nL3B0aHJlYWRzLmh0bWwKKyAgLy8gZm9yIG1vcmUgaW5m
b3JtYXRpb24uCisgIHB0aHJlYWRfc2V0c3BlY2lmaWModGhyZWFkX2lkZW50aXR5X3B0aHJlYWRf
a2V5LAorICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlkZW50
aXR5KSk7CisjZWxzZQogICAvLyBXZSBtdXN0IG1hc2sgc2lnbmFscyBhcm91bmQgdGhlIGNhbGwg
dG8gc2V0c3BlY2lmaWMgYXMgd2l0aCBjdXJyZW50IGdsaWJjLAogICAvLyBhIGNvbmN1cnJlbnQg
Z2V0c3BlY2lmaWMgKG5lZWRlZCBmb3IgR2V0Q3VycmVudFRocmVhZElkZW50aXR5SWZQcmVzZW50
KCkpCiAgIC8vIG1heSB6ZXJvIG91ciB2YWx1ZS4KQEAgLTgxLDYgKzg5LDggQEAgdm9pZCBTZXRD
dXJyZW50VGhyZWFkSWRlbnRpdHkoCiAgIHB0aHJlYWRfc2V0c3BlY2lmaWModGhyZWFkX2lkZW50
aXR5X3B0aHJlYWRfa2V5LAogICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGlkZW50aXR5KSk7CiAgIHB0aHJlYWRfc2lnbWFzayhTSUdfU0VUTUFTSywgJmN1cnJf
c2lnbmFscywgbnVsbHB0cik7CisjZW5kaWYgIC8vICFfX0VNU0NSSVBURU5fXworCiAjZWxpZiBB
QlNMX1RIUkVBRF9JREVOVElUWV9NT0RFID09IEFCU0xfVEhSRUFEX0lERU5USVRZX01PREVfVVNF
X1RMUwogICAvLyBOT1RFOiBOb3QgYXN5bmMtc2FmZS4gIEJ1dCBjYW4gYmUgb3Blbi1jb2RlZC4K
ICAgYWJzbDo6Y2FsbF9vbmNlKGluaXRfdGhyZWFkX2lkZW50aXR5X2tleV9vbmNlLCBBbGxvY2F0
ZVRocmVhZElkZW50aXR5S2V5LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bmFs
aWduZWRfYWNjZXNzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3VuYWxpZ25lZF9hY2Nlc3MuaApp
bmRleCA1Yzc1MTdhYmQ3MWE2YmY1MjUwNzE5ZDFkNThjYzdhMDVhOTA2ZTFhLi5mOWRmM2I3ODQ4
YzQwYTk3NGZkOTY5N2RlZjhjZjdmZmJmZTAyOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL3VuYWxpZ25lZF9hY2Nlc3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3VuYWxp
Z25lZF9hY2Nlc3MuaApAQCAtNjUsNiArNjUsNyBAQCB2b2lkIF9fc2FuaXRpemVyX3VuYWxpZ25l
ZF9zdG9yZTY0KHZvaWQgKnAsIHVpbnQ2NF90IHYpOwogfSAgLy8gZXh0ZXJuICJDIgogCiBuYW1l
c3BhY2UgYWJzbCB7CituYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7CiAKIGlubGluZSB1aW50MTZf
dCBVbmFsaWduZWRMb2FkMTYoY29uc3Qgdm9pZCAqcCkgewogICByZXR1cm4gX19zYW5pdGl6ZXJf
dW5hbGlnbmVkX2xvYWQxNihwKTsKQEAgLTkwLDIyICs5MSwyNyBAQCBpbmxpbmUgdm9pZCBVbmFs
aWduZWRTdG9yZTY0KHZvaWQgKnAsIHVpbnQ2NF90IHYpIHsKICAgX19zYW5pdGl6ZXJfdW5hbGln
bmVkX3N0b3JlNjQocCwgdik7CiB9CiAKK30gIC8vIG5hbWVzcGFjZSBiYXNlX2ludGVybmFsCiB9
ICAvLyBuYW1lc3BhY2UgYWJzbAogCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xP
QUQxNihfcCkgKGFic2w6OlVuYWxpZ25lZExvYWQxNihfcCkpCi0jZGVmaW5lIEFCU0xfSU5URVJO
QUxfVU5BTElHTkVEX0xPQUQzMihfcCkgKGFic2w6OlVuYWxpZ25lZExvYWQzMihfcCkpCi0jZGVm
aW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQ2NChfcCkgKGFic2w6OlVuYWxpZ25lZExv
YWQ2NChfcCkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQxNihfcCkgXAor
ICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkTG9hZDE2KF9wKSkKKyNkZWZpbmUgQUJT
TF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDMyKF9wKSBcCisgIChhYnNsOjpiYXNlX2ludGVybmFs
OjpVbmFsaWduZWRMb2FkMzIoX3ApKQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9M
T0FENjQoX3ApIFwKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZExvYWQ2NChfcCkp
CiAKICNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkUxNihfcCwgX3ZhbCkgXAot
ICAoYWJzbDo6VW5hbGlnbmVkU3RvcmUxNihfcCwgX3ZhbCkpCisgIChhYnNsOjpiYXNlX2ludGVy
bmFsOjpVbmFsaWduZWRTdG9yZTE2KF9wLCBfdmFsKSkKICNkZWZpbmUgQUJTTF9JTlRFUk5BTF9V
TkFMSUdORURfU1RPUkUzMihfcCwgX3ZhbCkgXAotICAoYWJzbDo6VW5hbGlnbmVkU3RvcmUzMihf
cCwgX3ZhbCkpCisgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRTdG9yZTMyKF9wLCBf
dmFsKSkKICNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkU2NChfcCwgX3ZhbCkg
XAotICAoYWJzbDo6VW5hbGlnbmVkU3RvcmU2NChfcCwgX3ZhbCkpCisgIChhYnNsOjpiYXNlX2lu
dGVybmFsOjpVbmFsaWduZWRTdG9yZTY0KF9wLCBfdmFsKSkKIAogI2VsaWYgZGVmaW5lZChVTkRF
RklORURfQkVIQVZJT1JfU0FOSVRJWkVSKQogCiBuYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
YmFzZV9pbnRlcm5hbCB7CiAKIGlubGluZSB1aW50MTZfdCBVbmFsaWduZWRMb2FkMTYoY29uc3Qg
dm9pZCAqcCkgewogICB1aW50MTZfdCB0OwpAQCAtMTMxLDE4ICsxMzcsMjIgQEAgaW5saW5lIHZv
aWQgVW5hbGlnbmVkU3RvcmUzMih2b2lkICpwLCB1aW50MzJfdCB2KSB7IG1lbWNweShwLCAmdiwg
c2l6ZW9mIHYpOyB9CiAKIGlubGluZSB2b2lkIFVuYWxpZ25lZFN0b3JlNjQodm9pZCAqcCwgdWlu
dDY0X3QgdikgeyBtZW1jcHkocCwgJnYsIHNpemVvZiB2KTsgfQogCit9ICAvLyBuYW1lc3BhY2Ug
YmFzZV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIAotI2RlZmluZSBBQlNMX0lOVEVS
TkFMX1VOQUxJR05FRF9MT0FEMTYoX3ApIChhYnNsOjpVbmFsaWduZWRMb2FkMTYoX3ApKQotI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMzIoX3ApIChhYnNsOjpVbmFsaWduZWRM
b2FkMzIoX3ApKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FENjQoX3ApIChh
YnNsOjpVbmFsaWduZWRMb2FkNjQoX3ApKQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05F
RF9MT0FEMTYoX3ApIFwKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZExvYWQxNihf
cCkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQzMihfcCkgXAorICAoYWJz
bDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkTG9hZDMyKF9wKSkKKyNkZWZpbmUgQUJTTF9JTlRF
Uk5BTF9VTkFMSUdORURfTE9BRDY0KF9wKSBcCisgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFs
aWduZWRMb2FkNjQoX3ApKQogCiAjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JF
MTYoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVuYWxpZ25lZFN0b3JlMTYoX3AsIF92YWwpKQorICAo
YWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmUxNihfcCwgX3ZhbCkpCiAjZGVmaW5l
IEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFMzIoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVu
YWxpZ25lZFN0b3JlMzIoX3AsIF92YWwpKQorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGln
bmVkU3RvcmUzMihfcCwgX3ZhbCkpCiAjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NU
T1JFNjQoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92YWwpKQor
ICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmU2NChfcCwgX3ZhbCkpCiAKICNl
bGlmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpIHx8IGRlZmluZWQoX19p
Mzg2KSB8fCBcCiAgICAgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRl
ZmluZWQoX19QUENfXykgfHwgICAgXApAQCAtMTk5LDcgKzIwOSw3IEBAIGlubGluZSB2b2lkIFVu
YWxpZ25lZFN0b3JlNjQodm9pZCAqcCwgdWludDY0X3QgdikgeyBtZW1jcHkocCwgJnYsIHNpemVv
ZiB2KTsgfQogLy8gc28gd2UgZG8gdGhhdC4KIAogbmFtZXNwYWNlIGFic2wgewotbmFtZXNwYWNl
IGludGVybmFsIHsKK25hbWVzcGFjZSBiYXNlX2ludGVybmFsIHsKIAogc3RydWN0IFVuYWxpZ25l
ZDE2U3RydWN0IHsKICAgdWludDE2X3QgdmFsdWU7CkBAIC0yMTEsMjIgKzIyMSwyNSBAQCBzdHJ1
Y3QgVW5hbGlnbmVkMzJTdHJ1Y3QgewogICB1aW50OF90IGR1bW15OyAgLy8gVG8gbWFrZSB0aGUg
c2l6ZSBub24tcG93ZXItb2YtdHdvLgogfSBBQlNMX0FUVFJJQlVURV9QQUNLRUQ7CiAKLX0gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKIH0gIC8v
IG5hbWVzcGFjZSBhYnNsCiAKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2
KF9wKSBcCi0gICgocmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OmFic2w6OmludGVybmFsOjpVbmFs
aWduZWQxNlN0cnVjdCAqPihfcCkpLT52YWx1ZSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFM
SUdORURfTE9BRDMyKF9wKSBcCi0gICgocmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OmFic2w6Omlu
dGVybmFsOjpVbmFsaWduZWQzMlN0cnVjdCAqPihfcCkpLT52YWx1ZSkKKyNkZWZpbmUgQUJTTF9J
TlRFUk5BTF9VTkFMSUdORURfTE9BRDE2KF9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICgocmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OmFic2w6OmJhc2VfaW50ZXJuYWw6
OlVuYWxpZ25lZDE2U3RydWN0ICo+KF9wKSkgXAorICAgICAgIC0+dmFsdWUpCisjZGVmaW5lIEFC
U0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQzMihfcCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAoKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjphYnNsOjpiYXNlX2ludGVy
bmFsOjpVbmFsaWduZWQzMlN0cnVjdCAqPihfcCkpIFwKKyAgICAgICAtPnZhbHVlKQogCi0jZGVm
aW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFMTYoX3AsIF92YWwpICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICgocmVpbnRlcnByZXRfY2FzdDwgOjphYnNsOjppbnRlcm5hbDo6
VW5hbGlnbmVkMTZTdHJ1Y3QgKj4oX3ApKS0+dmFsdWUgPSBcCi0gICAgICAgKF92YWwpKQotI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTMyKF9wLCBfdmFsKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAoKHJlaW50ZXJwcmV0X2Nhc3Q8IDo6YWJzbDo6aW50ZXJuYWw6
OlVuYWxpZ25lZDMyU3RydWN0ICo+KF9wKSktPnZhbHVlID0gXAotICAgICAgIChfdmFsKSkKKyNk
ZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkUxNihfcCwgX3ZhbCkgICAgICAgICAg
ICAgICAgICAgICAgXAorICAoKHJlaW50ZXJwcmV0X2Nhc3Q8IDo6YWJzbDo6YmFzZV9pbnRlcm5h
bDo6VW5hbGlnbmVkMTZTdHJ1Y3QgKj4oX3ApKSBcCisgICAgICAgLT52YWx1ZSA9IChfdmFsKSkK
KyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkUzMihfcCwgX3ZhbCkgICAgICAg
ICAgICAgICAgICAgICAgXAorICAoKHJlaW50ZXJwcmV0X2Nhc3Q8IDo6YWJzbDo6YmFzZV9pbnRl
cm5hbDo6VW5hbGlnbmVkMzJTdHJ1Y3QgKj4oX3ApKSBcCisgICAgICAgLT52YWx1ZSA9IChfdmFs
KSkKIAogbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgewogCiBpbmxp
bmUgdWludDY0X3QgVW5hbGlnbmVkTG9hZDY0KGNvbnN0IHZvaWQgKnApIHsKICAgdWludDY0X3Qg
dDsKQEAgLTIzNiwxMSArMjQ5LDEzIEBAIGlubGluZSB1aW50NjRfdCBVbmFsaWduZWRMb2FkNjQo
Y29uc3Qgdm9pZCAqcCkgewogCiBpbmxpbmUgdm9pZCBVbmFsaWduZWRTdG9yZTY0KHZvaWQgKnAs
IHVpbnQ2NF90IHYpIHsgbWVtY3B5KHAsICZ2LCBzaXplb2Ygdik7IH0KIAorfSAgLy8gbmFtZXNw
YWNlIGJhc2VfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKLSNkZWZpbmUgQUJTTF9J
TlRFUk5BTF9VTkFMSUdORURfTE9BRDY0KF9wKSAoYWJzbDo6VW5hbGlnbmVkTG9hZDY0KF9wKSkK
KyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDY0KF9wKSBcCisgIChhYnNsOjpi
YXNlX2ludGVybmFsOjpVbmFsaWduZWRMb2FkNjQoX3ApKQogI2RlZmluZSBBQlNMX0lOVEVSTkFM
X1VOQUxJR05FRF9TVE9SRTY0KF9wLCBfdmFsKSBcCi0gIChhYnNsOjpVbmFsaWduZWRTdG9yZTY0
KF9wLCBfdmFsKSkKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZFN0b3JlNjQoX3As
IF92YWwpKQogCiAjZWxzZQogCkBAIC0yNTIsNiArMjY3LDcgQEAgaW5saW5lIHZvaWQgVW5hbGln
bmVkU3RvcmU2NCh2b2lkICpwLCB1aW50NjRfdCB2KSB7IG1lbWNweShwLCAmdiwgc2l6ZW9mIHYp
OyB9CiAvLyB1bmFsaWduZWQgbG9hZHMgYW5kIHN0b3Jlcy4KIAogbmFtZXNwYWNlIGFic2wgewor
bmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgewogCiBpbmxpbmUgdWludDE2X3QgVW5hbGlnbmVkTG9h
ZDE2KGNvbnN0IHZvaWQgKnApIHsKICAgdWludDE2X3QgdDsKQEAgLTI3NywxOCArMjkzLDIyIEBA
IGlubGluZSB2b2lkIFVuYWxpZ25lZFN0b3JlMzIodm9pZCAqcCwgdWludDMyX3QgdikgeyBtZW1j
cHkocCwgJnYsIHNpemVvZiB2KTsgfQogCiBpbmxpbmUgdm9pZCBVbmFsaWduZWRTdG9yZTY0KHZv
aWQgKnAsIHVpbnQ2NF90IHYpIHsgbWVtY3B5KHAsICZ2LCBzaXplb2Ygdik7IH0KIAorfSAgLy8g
bmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKLSNkZWZpbmUg
QUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2KF9wKSAoYWJzbDo6VW5hbGlnbmVkTG9hZDE2
KF9wKSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDMyKF9wKSAoYWJzbDo6
VW5hbGlnbmVkTG9hZDMyKF9wKSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9B
RDY0KF9wKSAoYWJzbDo6VW5hbGlnbmVkTG9hZDY0KF9wKSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5B
TF9VTkFMSUdORURfTE9BRDE2KF9wKSBcCisgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWdu
ZWRMb2FkMTYoX3ApKQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMzIoX3Ap
IFwKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZExvYWQzMihfcCkpCisjZGVmaW5l
IEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQ2NChfcCkgXAorICAoYWJzbDo6YmFzZV9pbnRl
cm5hbDo6VW5hbGlnbmVkTG9hZDY0KF9wKSkKIAogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJ
R05FRF9TVE9SRTE2KF9wLCBfdmFsKSBcCi0gIChhYnNsOjpVbmFsaWduZWRTdG9yZTE2KF9wLCBf
dmFsKSkKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZFN0b3JlMTYoX3AsIF92YWwp
KQogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTMyKF9wLCBfdmFsKSBcCi0g
IChhYnNsOjpVbmFsaWduZWRTdG9yZTMyKF9wLCBfdmFsKSkKKyAgKGFic2w6OmJhc2VfaW50ZXJu
YWw6OlVuYWxpZ25lZFN0b3JlMzIoX3AsIF92YWwpKQogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VO
QUxJR05FRF9TVE9SRTY0KF9wLCBfdmFsKSBcCi0gIChhYnNsOjpVbmFsaWduZWRTdG9yZTY0KF9w
LCBfdmFsKSkKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92
YWwpKQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9sb2dfc2V2ZXJpdHkuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvbG9nX3NldmVyaXR5LmgKaW5kZXggZTI5MzFjMzRkMWRmNTRhN2JiZjdlZDcx
ZGU4NTg1MDMzNjJjNzMzNy4uNTc3MGQzNjI5ZTcyNjQ2ODlmNjAyOWNiNmQ2NDI4NTU0NWJmNGZk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9sb2dfc2V2ZXJpdHkuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L2xvZ19zZXZlcml0eS5oCkBAIC0zOSw3ICszOSw3IEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PGFi
c2w6OkxvZ1NldmVyaXR5LCA0PiBMb2dTZXZlcml0aWVzKCkgewogICAgICAgICAgICBhYnNsOjpM
b2dTZXZlcml0eTo6a0Vycm9yLCBhYnNsOjpMb2dTZXZlcml0eTo6a0ZhdGFsfX07CiB9CiAKLS8v
IFJldHVybnMgdGhlIGFsbC1jYXBzIHN0ZDo6c3RyaW5nIHJlcHJlc2VudGF0aW9uIChlLmcuICJJ
TkZPIikgb2YgdGhlIHNwZWNpZmllZAorLy8gUmV0dXJucyB0aGUgYWxsLWNhcHMgc3RyaW5nIHJl
cHJlc2VudGF0aW9uIChlLmcuICJJTkZPIikgb2YgdGhlIHNwZWNpZmllZAogLy8gc2V2ZXJpdHkg
bGV2ZWwgaWYgaXQgaXMgb25lIG9mIHRoZSBub3JtYWwgbGV2ZWxzIGFuZCAiVU5LTk9XTiIgb3Ro
ZXJ3aXNlLgogY29uc3RleHByIGNvbnN0IGNoYXIqIExvZ1NldmVyaXR5TmFtZShhYnNsOjpMb2dT
ZXZlcml0eSBzKSB7CiAgIHJldHVybiBzID09IGFic2w6OkxvZ1NldmVyaXR5OjprSW5mbwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9yYXdfbG9nZ2luZ190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9yYXdf
bG9nZ2luZ190ZXN0LmNjCmluZGV4IGViYmM1ZGI5MDY3MjdmNmNiMmMwM2E2M2U5OWE4OTdmNWNl
YjVhYTQuLmIyMWNmNjUxNzU4ZTNjMjQ5MjYyZTY5YzFjOGJhMTdjMWM5YTdhZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvcmF3X2xvZ2dpbmdfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3Jhd19s
b2dnaW5nX3Rlc3QuY2MKQEAgLTQwLDcgKzQwLDcgQEAgVEVTVChSYXdMb2dnaW5nQ29tcGlsYXRp
b25UZXN0LCBQYXNzaW5nQ2hlY2spIHsKIH0KIAogLy8gTm90IGFsbCBwbGF0Zm9ybXMgc3VwcG9y
dCBvdXRwdXQgZnJvbSByYXcgbG9nLCBzbyB3ZSBkb24ndCB2ZXJpZnkgYW55Ci0vLyBwYXJ0aWN1
bGFyIG91dHB1dCBmb3IgUkFXIGNoZWNrIGZhaWx1cmVzIChleHBlY3RpbmcgdGhlIGVtcHR5IHN0
ZDo6c3RyaW5nCisvLyBwYXJ0aWN1bGFyIG91dHB1dCBmb3IgUkFXIGNoZWNrIGZhaWx1cmVzIChl
eHBlY3RpbmcgdGhlIGVtcHR5IHN0cmluZwogLy8gYWNjb21wbGlzaGVzIHRoaXMpLiAgVGhpcyB0
ZXN0IGlzIHByaW1hcmlseSBhIGNvbXBpbGF0aW9uIHRlc3QsIGJ1dCB3ZQogLy8gYXJlIHZlcmlm
eWluZyBwcm9jZXNzIGRlYXRoIHdoZW4gRVhQRUNUX0RFQVRIIHdvcmtzIGZvciBhIHBsYXRmb3Jt
LgogY29uc3QgY2hhciBrRXhwZWN0ZWREZWF0aE91dHB1dFtdID0gIiI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvQlVJTEQuYmF6ZWwK
aW5kZXggNmQ1Yzk1OGYzODJiYTYzOTdmMGIwZGYxY2Y5OTY2NzhhN2EzYzVhNi4uZjIyMTBlM2Mx
OTc5ODNmYWI2MDM0ZDgxODE1NDc3OWI3MTczMmYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL0JVSUxELmJhemVsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5iYXplbApAQCAtMTks
NiArMTksNyBAQCBsb2FkKAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAogICAgICJBQlNMX1RF
U1RfQ09QVFMiLAogICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBRyIsCisgICAgIkFCU0xfRVhDRVBU
SU9OU19GTEFHX0xJTktPUFRTIiwKICkKIAogcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBb
Ii8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKQEAgLTYyLDkgKzYzLDExIEBAIGNjX3Rlc3QoCiAgICAg
bmFtZSA9ICJmaXhlZF9hcnJheV90ZXN0IiwKICAgICBzcmNzID0gWyJmaXhlZF9hcnJheV90ZXN0
LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxB
RywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRl
cHMgPSBbCiAgICAgICAgICI6Zml4ZWRfYXJyYXkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhj
ZXB0aW9uX3Rlc3RpbmciLAorICAgICAgICAiLy9hYnNsL2hhc2g6aGFzaF90ZXN0aW5nIiwKICAg
ICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8v
Omd0ZXN0X21haW4iLAogICAgIF0sCkBAIC03Nyw2ICs4MCw3IEBAIGNjX3Rlc3QoCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIjpmaXhlZF9hcnJheSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNl
cHRpb25fdGVzdGluZyIsCisgICAgICAgICIvL2Fic2wvaGFzaDpoYXNoX3Rlc3RpbmciLAogICAg
ICAgICAiLy9hYnNsL21lbW9yeSIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86
Z3Rlc3RfbWFpbiIsCiAgICAgXSwKQEAgLTg2LDYgKzkwLDcgQEAgY2NfdGVzdCgKICAgICBuYW1l
ID0gImZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdCIsCiAgICAgc3JjcyA9IFsiZml4
ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhD
RVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Zml4ZWRfYXJy
YXkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nIiwKQEAg
LTEyMCwxMiArMTI1LDE0IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJpbmxpbmVkX3ZlY3Rvcl90
ZXN0IiwKICAgICBzcmNzID0gWyJpbmxpbmVkX3ZlY3Rvcl90ZXN0LmNjIl0sCiAgICAgY29wdHMg
PSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9
IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6
aW5saW5lZF92ZWN0b3IiLAogICAgICAgICAiOnRlc3RfaW5zdGFuY2VfdHJhY2tlciIsCiAgICAg
ICAgICIvL2Fic2wvYmFzZSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAog
ICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3Rlc3RpbmciLAorICAgICAgICAiLy9hYnNs
L2hhc2g6aGFzaF90ZXN0aW5nIiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAgICAgICAi
Ly9hYnNsL3N0cmluZ3MiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0
X21haW4iLApAQCAtMTQyLDYgKzE0OSw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICIvL2Fic2wvYmFz
ZSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAogICAgICAgICAiLy9hYnNs
L2Jhc2U6ZXhjZXB0aW9uX3Rlc3RpbmciLAorICAgICAgICAiLy9hYnNsL2hhc2g6aGFzaF90ZXN0
aW5nIiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAgICAgICAiLy9hYnNsL3N0cmluZ3Mi
LAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLApAQCAtMTgx
LDMgKzE4OSw0NTkgQEAgY2NfdGVzdCgKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3Qv
LzpndGVzdF9tYWluIiwKICAgICBdLAogKQorCitOT1RFU1RfVEFHU19OT05NT0JJTEUgPSBbCisg
ICAgIm5vX3Rlc3RfZGFyd2luX3g4Nl82NCIsCisgICAgIm5vX3Rlc3RfbG9vbml4IiwKK10KKwor
Tk9URVNUX1RBR1NfTU9CSUxFID0gWworICAgICJub190ZXN0X2FuZHJvaWRfYXJtIiwKKyAgICAi
bm9fdGVzdF9hbmRyb2lkX2FybTY0IiwKKyAgICAibm9fdGVzdF9hbmRyb2lkX3g4NiIsCisgICAg
Im5vX3Rlc3RfaW9zX3g4Nl82NCIsCitdCisKK05PVEVTVF9UQUdTID0gTk9URVNUX1RBR1NfTU9C
SUxFICsgTk9URVNUX1RBR1NfTk9OTU9CSUxFCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJm
bGF0X2hhc2hfbWFwIiwKKyAgICBoZHJzID0gWyJmbGF0X2hhc2hfbWFwLmgiXSwKKyAgICBjb3B0
cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmNvbnRhaW5l
cl9tZW1vcnkiLAorICAgICAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAorICAgICAgICAi
OnJhd19oYXNoX21hcCIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAgICBdLAorKQorCitj
Y190ZXN0KAorICAgIG5hbWUgPSAiZmxhdF9oYXNoX21hcF90ZXN0IiwKKyAgICBzcmNzID0gWyJm
bGF0X2hhc2hfbWFwX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIFsi
LURVTk9SREVSRURfTUFQX0NYWDE3Il0sCisgICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklM
RSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmZsYXRfaGFzaF9tYXAiLAorICAgICAgICAiOmhh
c2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICAgICAiOnVub3JkZXJlZF9tYXBfY29uc3RydWN0
b3JfdGVzdCIsCisgICAgICAgICI6dW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdCIsCisgICAgICAg
ICI6dW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdCIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6
YW55IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAg
ICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiZmxhdF9oYXNoX3NldCIsCisgICAg
aGRycyA9IFsiZmxhdF9oYXNoX3NldC5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09Q
VFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb250YWluZXJfbWVtb3J5IiwKKyAgICAgICAg
IjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzIiwKKyAgICAgICAgIjpyYXdfaGFzaF9zZXQiLAorICAg
ICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnki
LAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJmbGF0X2hhc2hfc2V0X3Rlc3Qi
LAorICAgIHNyY3MgPSBbImZsYXRfaGFzaF9zZXRfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJT
TF9URVNUX0NPUFRTICsgWyItRFVOT1JERVJFRF9TRVRfQ1hYMTciXSwKKyAgICB0YWdzID0gTk9U
RVNUX1RBR1NfTk9OTU9CSUxFLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZmxhdF9oYXNoX3Nl
dCIsCisgICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgICAgICI6dW5vcmRl
cmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfc2V0X2xvb2t1
cF90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0IiwKKyAgICAg
ICAgIi8vYWJzbC9tZW1vcnkiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAi
QGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX2xp
YnJhcnkoCisgICAgbmFtZSA9ICJub2RlX2hhc2hfbWFwIiwKKyAgICBoZHJzID0gWyJub2RlX2hh
c2hfbWFwLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBzID0g
WworICAgICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICAgICAiOmhhc2hfZnVuY3Rpb25f
ZGVmYXVsdHMiLAorICAgICAgICAiOm5vZGVfaGFzaF9wb2xpY3kiLAorICAgICAgICAiOnJhd19o
YXNoX21hcCIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAgICBdLAorKQorCitjY190ZXN0
KAorICAgIG5hbWUgPSAibm9kZV9oYXNoX21hcF90ZXN0IiwKKyAgICBzcmNzID0gWyJub2RlX2hh
c2hfbWFwX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIFsiLURVTk9S
REVSRURfTUFQX0NYWDE3Il0sCisgICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwKKyAg
ICBkZXBzID0gWworICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICAgICAi
Om5vZGVfaGFzaF9tYXAiLAorICAgICAgICAiOnRyYWNrZWQiLAorICAgICAgICAiOnVub3JkZXJl
ZF9tYXBfY29uc3RydWN0b3JfdGVzdCIsCisgICAgICAgICI6dW5vcmRlcmVkX21hcF9sb29rdXBf
dGVzdCIsCisgICAgICAgICI6dW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdCIsCisgICAgICAg
ICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2Nf
bGlicmFyeSgKKyAgICBuYW1lID0gIm5vZGVfaGFzaF9zZXQiLAorICAgIGhkcnMgPSBbIm5vZGVf
aGFzaF9zZXQuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMg
PSBbCisgICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgICAgICI6aGFzaF9mdW5jdGlv
bl9kZWZhdWx0cyIsCisgICAgICAgICI6bm9kZV9oYXNoX3BvbGljeSIsCisgICAgICAgICI6cmF3
X2hhc2hfc2V0IiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgIF0sCispCisKK2NjX3Rl
c3QoCisgICAgbmFtZSA9ICJub2RlX2hhc2hfc2V0X3Rlc3QiLAorICAgIHNyY3MgPSBbIm5vZGVf
aGFzaF9zZXRfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgWyItRFVO
T1JERVJFRF9TRVRfQ1hYMTciXSwKKyAgICB0YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxFLAor
ICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgICAg
ICI6bm9kZV9oYXNoX3NldCIsCisgICAgICAgICI6dW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90
ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0IiwKKyAgICAgICAgIjp1
bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2ds
ZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUg
PSAiY29udGFpbmVyX21lbW9yeSIsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvY29udGFpbmVyX21l
bW9yeS5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsK
KyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgICAgICAiLy9hYnNsL3V0aWxpdHkiLAorICAg
IF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJjb250YWluZXJfbWVtb3J5X3Rlc3QiLAor
ICAgIHNyY3MgPSBbImludGVybmFsL2NvbnRhaW5lcl9tZW1vcnlfdGVzdC5jYyJdLAorICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIHRhZ3MgPSBOT1RFU1RfVEFHU19OT05NT0JJTEUs
CisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpjb250YWluZXJfbWVtb3J5IiwKKyAgICAgICAgIi8v
YWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9t
YWluIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFzaF9mdW5jdGlv
bl9kZWZhdWx0cyIsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0
cy5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAg
ICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCisgICAgICAgICIvL2Fic2wvaGFzaCIsCisgICAg
ICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0g
Imhhc2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVzdCIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvaGFz
aF9mdW5jdGlvbl9kZWZhdWx0c190ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMsCisgICAgdGFncyA9IE5PVEVTVF9UQUdTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFz
aF9mdW5jdGlvbl9kZWZhdWx0cyIsCisgICAgICAgICIvL2Fic2wvaGFzaCIsCisgICAgICAgICIv
L2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3Rf
bWFpbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImhhc2hfZ2VuZXJh
dG9yX3Rlc3RpbmciLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9o
YXNoX2dlbmVyYXRvcl90ZXN0aW5nLmNjIl0sCisgICAgaGRycyA9IFsiaW50ZXJuYWwvaGFzaF9n
ZW5lcmF0b3JfdGVzdGluZy5oIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAg
ZGVwcyA9IFsKKyAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAgICAgIi8vYWJz
bC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICBdLAor
KQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAg
dGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBbImludGVybmFsL2hhc2hfcG9saWN5X3Rlc3Rpbmcu
aCJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAg
ICIvL2Fic2wvaGFzaCIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgXSwKKykKKwor
Y2NfdGVzdCgKKyAgICBuYW1lID0gImhhc2hfcG9saWN5X3Rlc3RpbmdfdGVzdCIsCisgICAgc3Jj
cyA9IFsiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZ190ZXN0LmNjIl0sCisgICAgY29wdHMg
PSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpoYXNoX3BvbGljeV90
ZXN0aW5nIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwK
KyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFzaF9wb2xpY3lfdHJhaXRz
IiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaCJdLAorICAgIGNv
cHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMgPSBbIi8vYWJzbC9tZXRhOnR5cGVf
dHJhaXRzIl0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJoYXNoX3BvbGljeV90cmFpdHNf
dGVzdCIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzX3Rlc3QuY2Mi
XSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAi
Omhhc2hfcG9saWN5X3RyYWl0cyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86
Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImhhc2h0
YWJsZV9kZWJ1ZyIsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnLmgiXSwK
KyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAi
Omhhc2h0YWJsZV9kZWJ1Z19ob29rcyIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBu
YW1lID0gImhhc2h0YWJsZV9kZWJ1Z19ob29rcyIsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvaGFz
aHRhYmxlX2RlYnVnX2hvb2tzLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywK
KykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gIm5vZGVfaGFzaF9wb2xpY3kiLAorICAgIGhk
cnMgPSBbImludGVybmFsL25vZGVfaGFzaF9wb2xpY3kuaCJdLAorICAgIGNvcHRzID0gQUJTTF9E
RUZBVUxUX0NPUFRTLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAibm9kZV9oYXNoX3BvbGlj
eV90ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5X3Rlc3QuY2Mi
XSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAi
Omhhc2hfcG9saWN5X3RyYWl0cyIsCisgICAgICAgICI6bm9kZV9oYXNoX3BvbGljeSIsCisgICAg
ICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKwor
Y2NfbGlicmFyeSgKKyAgICBuYW1lID0gInJhd19oYXNoX21hcCIsCisgICAgaGRycyA9IFsiaW50
ZXJuYWwvcmF3X2hhc2hfbWFwLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywK
KyAgICBkZXBzID0gWworICAgICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICAgICAiOnJh
d19oYXNoX3NldCIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInJhd19o
YXNoX3NldCIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmNjIl0sCisgICAg
aGRycyA9IFsiaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVG
QVVMVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmNvbXByZXNzZWRfdHVwbGUiLAor
ICAgICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICAgICAiOmhhc2hfcG9saWN5X3RyYWl0
cyIsCisgICAgICAgICI6aGFzaHRhYmxlX2RlYnVnX2hvb2tzIiwKKyAgICAgICAgIjpsYXlvdXQi
LAorICAgICAgICAiLy9hYnNsL2Jhc2U6Yml0cyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb25m
aWciLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJz
bC9iYXNlOmVuZGlhbiIsCisgICAgICAgICIvL2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8vYWJz
bC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpvcHRpb25hbCIsCisg
ICAgICAgICIvL2Fic2wvdXRpbGl0eSIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1l
ID0gInJhd19oYXNoX3NldF90ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9yYXdfaGFzaF9z
ZXRfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtzdGF0
aWMgPSAxLAorICAgIHRhZ3MgPSBOT1RFU1RfVEFHUywKKyAgICBkZXBzID0gWworICAgICAgICAi
OmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAor
ICAgICAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICAgICAiOmhhc2h0YWJsZV9kZWJ1
ZyIsCisgICAgICAgICI6cmF3X2hhc2hfc2V0IiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAg
ICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5n
cyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAg
XSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInJhd19oYXNoX3NldF9hbGxvY2F0b3JfdGVz
dCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvcmF3X2hhc2hf
c2V0X2FsbG9jYXRvcl90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjpyYXdfaGFzaF9zZXQiLAorICAgICAgICAiOnRyYWNrZWQi
LAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIkBjb21fZ29v
Z2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAor
ICAgIG5hbWUgPSAibGF5b3V0IiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9sYXlvdXQuaCJdLAor
ICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICIv
L2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFp
dHMiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOnNw
YW4iLAorICAgICAgICAiLy9hYnNsL3V0aWxpdHkiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisg
ICAgbmFtZSA9ICJsYXlvdXRfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9
IFsiaW50ZXJuYWwvbGF5b3V0X3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UywKKyAgICB0YWdzID0gTk9URVNUX1RBR1MsCisgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmls
aXR5OnByaXZhdGUiXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmxheW91dCIsCisgICAgICAg
ICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAg
ICAgICAiLy9hYnNsL3R5cGVzOnNwYW4iLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVz
dC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJ0
cmFja2VkIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvdHJhY2tl
ZC5oIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCispCisKK2NjX2xpYnJhcnkoCisg
ICAgbmFtZSA9ICJ1bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QiLAorICAgIHRlc3Rvbmx5
ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rl
c3QuaCJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAg
ICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgICAgICI6aGFzaF9wb2xpY3lfdGVz
dGluZyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3QiLAorICAgIF0s
CispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJ1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0
IiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX21h
cF9sb29rdXBfdGVzdC5oIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVw
cyA9IFsKKyAgICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAgICAgIjpoYXNo
X3BvbGljeV90ZXN0aW5nIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVz
dCIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInVub3JkZXJlZF9tYXBf
bW9kaWZpZXJzX3Rlc3QiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5h
bC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVT
VF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3Rpbmci
LAorICAgICAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICAgICAiQGNvbV9nb29nbGVf
Z29vZ2xldGVzdC8vOmd0ZXN0IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUg
PSAidW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0IiwKKyAgICB0ZXN0b25seSA9IDEsCisg
ICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0LmgiXSwK
KyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmhh
c2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0IiwKKyAgICBdLAorKQorCitj
Y19saWJyYXJ5KAorICAgIG5hbWUgPSAidW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdCIsCisgICAg
dGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBbImludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3Vw
X3Rlc3QuaCJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisg
ICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgICAgICI6aGFzaF9wb2xpY3lf
dGVzdGluZyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3QiLAorICAg
IF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJ1bm9yZGVyZWRfc2V0X21vZGlmaWVy
c190ZXN0IiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRl
cmVkX3NldF9tb2RpZmllcnNfdGVzdC5oIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMs
CisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAg
ICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRl
c3QvLzpndGVzdCIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInVub3JkZXJl
ZF9zZXRfdGVzdCIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF90ZXN0LmNj
Il0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgdGFncyA9IE5PVEVTVF9UQUdT
X05PTk1PQklMRSwKKyAgICBkZXBzID0gWworICAgICAgICAiOnVub3JkZXJlZF9zZXRfY29uc3Ry
dWN0b3JfdGVzdCIsCisgICAgICAgICI6dW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdCIsCisgICAg
ICAgICI6dW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdCIsCisgICAgICAgICJAY29tX2dvb2ds
ZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBu
YW1lID0gInVub3JkZXJlZF9tYXBfdGVzdCIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvdW5vcmRl
cmVkX21hcF90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgdGFn
cyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwKKyAgICBkZXBzID0gWworICAgICAgICAiOnVub3Jk
ZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdCIsCisgICAgICAgICI6dW5vcmRlcmVkX21hcF9sb29r
dXBfdGVzdCIsCisgICAgICAgICI6dW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdCIsCisgICAg
ICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlM
RC5nbgppbmRleCAwMDFhMmEzNmQ0ODQ2ZDU3ZTg1MWY4MTQzZjhhYWE1Yzk5MTU4MzBhLi5hMmZi
ZDU0MzMxNmQ0NTZiNWRmMTQ3MzEzM2UzMWQwNDA5YjcyNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmduCkBAIC04NCwz
ICs4NCwzODkgQEAgc291cmNlX3NldCgidGVzdF9pbnN0YW5jZV90cmFja2VyIikgewogICB2aXNp
YmlsaXR5ID0gW10KICAgdmlzaWJpbGl0eSArPSBbICIuLi8qIiBdCiB9CisKK3NvdXJjZV9zZXQo
ImZsYXRfaGFzaF9tYXAiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGls
ZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9
IFsKKyAgICAiZmxhdF9oYXNoX21hcC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29udGFp
bmVyX21lbW9yeSIsCisgICAgIjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzIiwKKyAgICAiOnJhd19o
YXNoX21hcCIsCisgICAgIi4uL21lbW9yeSIsCisgIF0KK30KKworc291cmNlX3NldCgiZmxhdF9o
YXNoX3NldCIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJv
bWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
ZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAg
ICJmbGF0X2hhc2hfc2V0LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb250YWluZXJfbWVt
b3J5IiwKKyAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAorICAgICI6cmF3X2hhc2hfc2V0
IiwKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi9tZW1vcnkiLAorICBdCit9
CisKK3NvdXJjZV9zZXQoIm5vZGVfaGFzaF9tYXAiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNf
Y29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmln
IiBdCisgIHB1YmxpYyA9IFsKKyAgICAibm9kZV9oYXNoX21hcC5oIiwKKyAgXQorICBkZXBzID0g
WworICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgIjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRz
IiwKKyAgICAiOm5vZGVfaGFzaF9wb2xpY3kiLAorICAgICI6cmF3X2hhc2hfbWFwIiwKKyAgICAi
Li4vbWVtb3J5IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJub2RlX2hhc2hfc2V0IikgeworICBj
b25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAg
Y29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2Nv
ZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19j
YyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6
YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgIm5vZGVfaGFzaF9zZXQu
aCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICI6aGFz
aF9mdW5jdGlvbl9kZWZhdWx0cyIsCisgICAgIjpub2RlX2hhc2hfcG9saWN5IiwKKyAgICAiOnJh
d19oYXNoX3NldCIsCisgICAgIi4uL21lbW9yeSIsCisgIF0KK30KKworc291cmNlX3NldCgiY29u
dGFpbmVyX21lbW9yeSIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0g
WworICAgICJpbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiLAorICBdCisgIGRlcHMgPSBbCisg
ICAgIi4uL21lbW9yeSIsCisgICAgIi4uL3V0aWxpdHkiLAorICBdCit9CisKK3NvdXJjZV9zZXQo
Imhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmln
cyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisg
IHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiwKKyAg
XQorICBkZXBzID0gWworICAgICIuLi9iYXNlOmNvbmZpZyIsCisgICAgIi4uL2hhc2giLAorICAg
ICIuLi9zdHJpbmdzIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJoYXNoX2dlbmVyYXRvcl90ZXN0
aW5nIikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZp
Zy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxk
L2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdz
ID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAg
c291cmNlcyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5jYyIsCisg
IF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmgi
LAorICBdCisgIGRlcHMgPSBbCisgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAiLi4v
bWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi4uL3N0cmluZ3MiLAorICBdCit9CisKK3NvdXJjZV9z
ZXQoImhhc2hfcG9saWN5X3Rlc3RpbmciKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdz
IC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmln
cyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAor
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisg
IF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9p
bmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL2hhc2hfcG9saWN5
X3Rlc3RpbmcuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vaGFzaCIsCisgICAgIi4uL3N0
cmluZ3MiLAorICBdCit9CisKK3NvdXJjZV9zZXQoImhhc2hfcG9saWN5X3RyYWl0cyIpIHsKKyAg
Y29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisg
IGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9j
b2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3Nf
Y2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9oYXNo
X3BvbGljeV90cmFpdHMuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vbWV0YTp0eXBlX3Ry
YWl0cyIsCisgIF0KK30KKworc291cmNlX3NldCgiaGFzaHRhYmxlX2RlYnVnIikgeworICBjb25m
aWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29u
ZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUi
LAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIs
CisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJz
bF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL2hhc2h0YWJs
ZV9kZWJ1Zy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6aGFzaHRhYmxlX2RlYnVnX2hvb2tz
IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJoYXNodGFibGVfZGVidWdfaG9va3MiKSB7CisgIGNv
bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBj
b25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29k
ZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2Nj
IiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaHRh
YmxlX2RlYnVnX2hvb2tzLmgiLAorICBdCit9CisKK3NvdXJjZV9zZXQoIm5vZGVfaGFzaF9wb2xp
Y3kiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1f
Y29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9f
Y2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1
bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50
ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJyYXdfaGFz
aF9tYXAiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21p
dW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6
bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2Rl
ZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAi
aW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb250YWlu
ZXJfbWVtb3J5IiwKKyAgICAiOnJhd19oYXNoX3NldCIsCisgIF0KK30KKworc291cmNlX3NldCgi
cmF3X2hhc2hfc2V0IikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVy
OmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2Nv
bXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6
YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2VzID0g
WworICAgICJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAg
ICAiaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb21w
cmVzc2VkX3R1cGxlIiwKKyAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICI6aGFzaF9wb2xp
Y3lfdHJhaXRzIiwKKyAgICAiOmhhc2h0YWJsZV9kZWJ1Z19ob29rcyIsCisgICAgIjpsYXlvdXQi
LAorICAgICIuLi9iYXNlOmJpdHMiLAorICAgICIuLi9iYXNlOmNvbmZpZyIsCisgICAgIi4uL2Jh
c2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vYmFzZTplbmRpYW4iLAorICAgICIuLi9tZW1vcnki
LAorICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAiLi4vdHlwZXM6b3B0aW9uYWwiLAor
ICAgICIuLi91dGlsaXR5IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJsYXlvdXQiKSB7CisgIGNv
bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBj
b25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29k
ZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2Nj
IiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvbGF5b3V0
LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAi
Li4vbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi4uL3N0cmluZ3MiLAorICAgICIuLi90eXBlczpz
cGFuIiwKKyAgICAiLi4vdXRpbGl0eSIsCisgIF0KK30KKworc291cmNlX3NldCgidHJhY2tlZCIp
IHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1Ymxp
YyA9IFsKKyAgICAiaW50ZXJuYWwvdHJhY2tlZC5oIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1
bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBj
b25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAg
Y29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2Nv
ZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19j
YyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6
YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL3Vub3Jk
ZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6aGFz
aF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAi
Ly90ZXN0aW5nL2d0ZXN0IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfbWFwX2xv
b2t1cF90ZXN0IikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxk
L2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIv
L2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19j
b25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWci
IF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0
LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAg
ICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAorICBdCit9
CisKK3NvdXJjZV9zZXQoInVub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QiKSB7CisgIHRlc3Rv
bmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9t
aXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVy
Om5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9k
ZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAg
ImludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCIsCisgIF0KKyAgZGVwcyA9
IFsKKyAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICI6aGFzaF9wb2xpY3lfdGVz
dGluZyIsCisgICAgIi8vdGVzdGluZy9ndGVzdCIsCisgIF0KK30KKworc291cmNlX3NldCgidW5v
cmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0IikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29u
ZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNv
bmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2Rl
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2Mi
LAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFi
c2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC91bm9yZGVy
ZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmhhc2hf
Z2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgIi8v
dGVzdGluZy9ndGVzdCIsCisgIF0KK30KKworc291cmNlX3NldCgidW5vcmRlcmVkX3NldF9sb29r
dXBfdGVzdCIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9j
b25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9i
dWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29u
ZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBd
CisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdC5o
IiwKKyAgXQorICBkZXBzID0gWworICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAg
IjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgXQorfQor
Citzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0IikgeworICB0ZXN0b25s
eSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1
bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpu
b19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVm
YXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJp
bnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmgiLAorICBdCisgIGRlcHMgPSBb
CisgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAiOmhhc2hfcG9saWN5X3Rlc3Rp
bmciLAorICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAorICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvQ01ha2VMaXN0cy50eHQK
aW5kZXggMTIzZTRjNDg0OWFhYmUyZWVkZWEyMWYwNWVmZDJkMDI2MzgzMGZiOC4uOWU0MDY5MDJi
MDU4NWRlZGEzYmEzMDcyYmVlMGZmMjc3NDg0ZWJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9DTWFrZUxpc3RzLnR4dApA
QCAtMTcsMTggKzE3LDQyIEBACiAKIGxpc3QoQVBQRU5EIENPTlRBSU5FUl9QVUJMSUNfSEVBREVS
UwogICAiZml4ZWRfYXJyYXkuaCIKKyAgImZsYXRfaGFzaF9tYXAuaCIKKyAgImZsYXRfaGFzaF9z
ZXQuaCIKICAgImlubGluZWRfdmVjdG9yLmgiCisgICJub2RlX2hhc2hfbWFwLmgiCisgICJub2Rl
X2hhc2hfc2V0LmgiCiApCiAKIAogbGlzdChBUFBFTkQgQ09OVEFJTkVSX0lOVEVSTkFMX0hFQURF
UlMKKyAgImludGVybmFsL2NvbXByZXNzZWRfdHVwbGUuaCIKKyAgImludGVybmFsL2NvbnRhaW5l
cl9tZW1vcnkuaCIKKyAgImludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMuaCIKKyAgImlu
dGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIKKyAgImludGVybmFsL2hhc2hfcG9saWN5
X3Rlc3RpbmcuaCIKKyAgImludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oIgorICAiaW50ZXJu
YWwvaGFzaHRhYmxlX2RlYnVnLmgiCisgICJpbnRlcm5hbC9sYXlvdXQuaCIKKyAgImludGVybmFs
L25vZGVfaGFzaF9wb2xpY3kuaCIKKyAgImludGVybmFsL3Jhd19oYXNoX21hcC5oIgorICAiaW50
ZXJuYWwvcmF3X2hhc2hfc2V0LmgiCiAgICJpbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIu
aCIKKyAgImludGVybmFsL3RyYWNrZWQuaCIKKyAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfY29u
c3RydWN0b3JfdGVzdC5oIgorICAiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdC5o
IgorICAiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oIgorICAiaW50ZXJu
YWwvdW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0LmgiCisgICJpbnRlcm5hbC91bm9yZGVy
ZWRfc2V0X2xvb2t1cF90ZXN0LmgiCisgICJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVy
c190ZXN0LmgiCiApCiAKIAotYWJzbF9oZWFkZXJfbGlicmFyeSgKK2Fic2xfbGlicmFyeSgKICAg
VEFSR0VUCiAgICAgYWJzbF9jb250YWluZXIKKyAgU09VUkNFUworICAgICJpbnRlcm5hbC9yYXdf
aGFzaF9zZXQuY2MiCiAgIEVYUE9SVF9OQU1FCiAgICAgY29udGFpbmVyCiApCkBAIC0xNDIsMyAr
MTY2LDExIEBAIGFic2xfdGVzdCgKICkKIAogCithYnNsX3Rlc3QoCisgIFRBUkdFVAorICAgIHJh
d19oYXNoX3NldF90ZXN0CisgIFNPVVJDRVMKKyAgICAiaW50ZXJuYWwvcmF3X2hhc2hfc2V0X3Rl
c3QuY2MiCisgIFBVQkxJQ19MSUJSQVJJRVMKKyAgICBhYnNsOjpiYXNlIGFic2w6Omhhc2ggYWJz
bF90aHJvd19kZWxlZ2F0ZSB0ZXN0X2luc3RhbmNlX3RyYWNrZXJfbGliCispCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9h
cnJheS5oCmluZGV4IDE4MjI1OGY2MjNlMTNhZWE4MGI3NTc4ZTE5MDZkYWQ5NDc4Mzg4YjAuLjZk
OWZhNWY3NDVkY2M5NTYzYzdhNzA5MTYwZGIxODM3Y2ZmYmMyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9maXhlZF9hcnJheS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJh
eS5oCkBAIC0xMzgsOCArMTM4LDggQEAgY2xhc3MgRml4ZWRBcnJheSB7CiAgIGV4cGxpY2l0IEZp
eGVkQXJyYXkoc2l6ZV90eXBlIG4sIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhID0gYWxsb2NhdG9y
X3R5cGUoKSkKICAgICAgIDogc3RvcmFnZV8obiwgYSkgewogICAgIGlmIChEZWZhdWx0Q29uc3Ry
dWN0b3JJc05vblRyaXZpYWwoKSkgewotICAgICAgbWVtb3J5X2ludGVybmFsOjpDb25zdHJ1Y3RT
dG9yYWdlKHN0b3JhZ2VfLmFsbG9jKCksIHN0b3JhZ2VfLmJlZ2luKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZV8uZW5kKCkpOworICAgICAgbWVtb3J5
X2ludGVybmFsOjpDb25zdHJ1Y3RSYW5nZShzdG9yYWdlXy5hbGxvYygpLCBzdG9yYWdlXy5iZWdp
bigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlXy5lbmQo
KSk7CiAgICAgfQogICB9CiAKQEAgLTE0Nyw4ICsxNDcsOCBAQCBjbGFzcyBGaXhlZEFycmF5IHsK
ICAgRml4ZWRBcnJheShzaXplX3R5cGUgbiwgY29uc3QgdmFsdWVfdHlwZSYgdmFsLAogICAgICAg
ICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgICAg
IDogc3RvcmFnZV8obiwgYSkgewotICAgIG1lbW9yeV9pbnRlcm5hbDo6Q29uc3RydWN0U3RvcmFn
ZShzdG9yYWdlXy5hbGxvYygpLCBzdG9yYWdlXy5iZWdpbigpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdG9yYWdlXy5lbmQoKSwgdmFsKTsKKyAgICBtZW1vcnlfaW50
ZXJuYWw6OkNvbnN0cnVjdFJhbmdlKHN0b3JhZ2VfLmFsbG9jKCksIHN0b3JhZ2VfLmJlZ2luKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlXy5lbmQoKSwgdmFs
KTsKICAgfQogCiAgIC8vIENyZWF0ZXMgYW4gYXJyYXkgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc2l6
ZSBhbmQgY29udGVudHMgb2YgYGluaXRfbGlzdGAuCkBAIC0xNjMsMTMgKzE2MywxMiBAQCBjbGFz
cyBGaXhlZEFycmF5IHsKICAgRml4ZWRBcnJheShJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFz
dCwKICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYSA9IGFsbG9jYXRvcl90eXBl
KCkpCiAgICAgICA6IHN0b3JhZ2VfKHN0ZDo6ZGlzdGFuY2UoZmlyc3QsIGxhc3QpLCBhKSB7Ci0g
ICAgbWVtb3J5X2ludGVybmFsOjpDb3B5VG9TdG9yYWdlRnJvbVJhbmdlKHN0b3JhZ2VfLmFsbG9j
KCksIHN0b3JhZ2VfLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpcnN0LCBsYXN0KTsKKyAgICBtZW1vcnlfaW50ZXJuYWw6OkNvcHlSYW5nZShz
dG9yYWdlXy5hbGxvYygpLCBzdG9yYWdlXy5iZWdpbigpLCBmaXJzdCwgbGFzdCk7CiAgIH0KIAog
ICB+Rml4ZWRBcnJheSgpIG5vZXhjZXB0IHsKICAgICBmb3IgKGF1dG8qIGN1ciA9IHN0b3JhZ2Vf
LmJlZ2luKCk7IGN1ciAhPSBzdG9yYWdlXy5lbmQoKTsgKytjdXIpIHsKLSAgICAgIEFsbG9jYXRv
clRyYWl0czo6ZGVzdHJveSgqc3RvcmFnZV8uYWxsb2MoKSwgY3VyKTsKKyAgICAgIEFsbG9jYXRv
clRyYWl0czo6ZGVzdHJveShzdG9yYWdlXy5hbGxvYygpLCBjdXIpOwogICAgIH0KICAgfQogCkBA
IC0zNTksNiArMzU4LDEzIEBAIGNsYXNzIEZpeGVkQXJyYXkgewogICBmcmllbmQgYm9vbCBvcGVy
YXRvcj49KGNvbnN0IEZpeGVkQXJyYXkmIGxocywgY29uc3QgRml4ZWRBcnJheSYgcmhzKSB7CiAg
ICAgcmV0dXJuICEobGhzIDwgcmhzKTsKICAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgor
ICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgY29uc3QgRml4ZWRBcnJheSYgdikgeworICAg
IHJldHVybiBIOjpjb21iaW5lKEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6Om1vdmUoaCksIHYu
ZGF0YSgpLCB2LnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgdi5zaXplKCkpOworICB9
CisKICBwcml2YXRlOgogICAvLyBTdG9yYWdlRWxlbWVudAogICAvLwpAQCAtNDQ2LDE1ICs0NTIs
MTUgQEAgY2xhc3MgRml4ZWRBcnJheSB7CiAgICAgICBpZiAoVXNpbmdJbmxpbmVkU3RvcmFnZShz
aXplKCkpKSB7CiAgICAgICAgIElubGluZWRTdG9yYWdlOjpBbm5vdGF0ZURlc3RydWN0KHNpemUo
KSk7CiAgICAgICB9IGVsc2UgewotICAgICAgICBBbGxvY2F0b3JUcmFpdHM6OmRlYWxsb2NhdGUo
KmFsbG9jKCksIEFzVmFsdWVUeXBlKGJlZ2luKCkpLCBzaXplKCkpOworICAgICAgICBBbGxvY2F0
b3JUcmFpdHM6OmRlYWxsb2NhdGUoYWxsb2MoKSwgQXNWYWx1ZVR5cGUoYmVnaW4oKSksIHNpemUo
KSk7CiAgICAgICB9CiAgICAgfQogCiAgICAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7IHJldHVy
biBzaXplX2FsbG9jXy50ZW1wbGF0ZSBnZXQ8MD4oKTsgfQogICAgIFN0b3JhZ2VFbGVtZW50KiBi
ZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRhdGFfOyB9CiAgICAgU3RvcmFnZUVsZW1lbnQqIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIGJlZ2luKCkgKyBzaXplKCk7IH0KLSAgICBhbGxvY2F0b3JfdHlwZSog
YWxsb2MoKSB7Ci0gICAgICByZXR1cm4gc3RkOjphZGRyZXNzb2Yoc2l6ZV9hbGxvY18udGVtcGxh
dGUgZ2V0PDE+KCkpOworICAgIGFsbG9jYXRvcl90eXBlJiBhbGxvYygpIHsKKyAgICAgIHJldHVy
biBzaXplX2FsbG9jXy50ZW1wbGF0ZSBnZXQ8MT4oKTsKICAgICB9CiAKICAgIHByaXZhdGU6CkBA
IC00NjgsNyArNDc0LDcgQEAgY2xhc3MgRml4ZWRBcnJheSB7CiAgICAgICAgIHJldHVybiBJbmxp
bmVkU3RvcmFnZTo6ZGF0YSgpOwogICAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8U3RvcmFnZUVsZW1lbnQqPigKLSAgICAgICAgICAgIEFsbG9jYXRvclRyYWl0
czo6YWxsb2NhdGUoKmFsbG9jKCksIHNpemUoKSkpOworICAgICAgICAgICAgQWxsb2NhdG9yVHJh
aXRzOjphbGxvY2F0ZShhbGxvYygpLCBzaXplKCkpKTsKICAgICAgIH0KICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNj
CmluZGV4IGMxMjNjMmExYzBkMmQzODQ4NDA1NmMzNGY4OTEwMTQ4OWU1YzE0MjQuLmRhNjNkYmZl
MzhlNzFkMzRhMzNlODAwZGZlNDJhYTlmM2VhMzE3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9maXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwpAQCAtOTcsNyArOTcs
NyBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUmVhZE1lbW9yeShGaXhlZEFyciogZml4ZWRf
YXJyKSB7CiAKIFRFU1QoRml4ZWRBcnJheUV4Y2VwdGlvblNhZmV0eSwgRmlsbCkgewogICBhdXRv
IHRlc3RfZmlsbCA9IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQotICAgICAg
ICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoUmVhZE1lbW9yeSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgLldpdGhDb250cmFjdHMoUmVhZE1lbW9yeSkKICAgICAgICAgICAgICAgICAg
ICAgICAgLldpdGhPcGVyYXRpb24oWyZdKEZpeGVkQXJyKiBmaXhlZF9hcnJfcHRyKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byB0aHJvd2VyID0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGhyb3dlcihrVXBkYXRlZFZhbHVlLCB0ZXN0aW5nOjpub3Rocm93X2N0b3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvZml4ZWRfYXJyYXlfdGVzdC5jYwppbmRleCBiMDdlYmNiNmQ5Y2E2YjBlNDI2Y2E2
M2FjMzRjMDZmODE0MDk4M2NlLi4yMDVmZjQxZmUxMTQyYmJlOGUxODdhNDRmMTdhNWE1YTczYjVj
NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfdGVzdC5jYwpAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNs
dWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJh
YnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgiCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5Lmgi
CiAKIHVzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmVBcnJheTsKQEAgLTg2Nyw0ICs4NjgsNSBA
QCBURVNUKEZpeGVkQXJyYXlUZXN0LCBBZGRyZXNzU2FuaXRpemVyQW5ub3RhdGlvbnM0KSB7CiAg
IEVYUEVDVF9ERUFUSChyYXdbMjFdID0gVGhyZWVJbnRzKCksICJjb250YWluZXItb3ZlcmZsb3ci
KTsKIH0KICNlbmRpZiAgLy8gQUREUkVTU19TQU5JVElaRVIKKwogfSAgLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ZsYXRfaGFzaF9tYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTU3MGQxMDA0NDEzMTY2YWJkZGRiNmM1
NDZiYjU3Y2FiZDRiZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRf
aGFzaF9tYXAuaApAQCAtMCwwICsxLDUyOCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogZmxhdF9o
YXNoX21hcC5oCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEFuIGBhYnNsOjpmbGF0
X2hhc2hfbWFwPEssIFY+YCBpcyBhbiB1bm9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIG9m
CisvLyB1bmlxdWUga2V5cyBhbmQgYXNzb2NpYXRlZCB2YWx1ZXMgZGVzaWduZWQgdG8gYmUgYSBt
b3JlIGVmZmljaWVudCByZXBsYWNlbWVudAorLy8gZm9yIGBzdGQ6OnVub3JkZXJlZF9tYXBgLiBM
aWtlIGB1bm9yZGVyZWRfbWFwYCwgc2VhcmNoLCBpbnNlcnRpb24sIGFuZAorLy8gZGVsZXRpb24g
b2YgbWFwIGVsZW1lbnRzIGNhbiBiZSBkb25lIGFzIGFuIGBPKDEpYCBvcGVyYXRpb24uIEhvd2V2
ZXIsCisvLyBgZmxhdF9oYXNoX21hcGAgKGFuZCBvdGhlciB1bm9yZGVyZWQgYXNzb2NpYXRpdmUg
Y29udGFpbmVycyBrbm93biBhcyB0aGUKKy8vIGNvbGxlY3Rpb24gb2YgQWJzZWlsICJTd2lzcyB0
YWJsZXMiKSBjb250YWluIG90aGVyIG9wdGltaXphdGlvbnMgdGhhdCByZXN1bHQKKy8vIGluIGJv
dGggbWVtb3J5IGFuZCBjb21wdXRhdGlvbiBhZHZhbnRhZ2VzLgorLy8KKy8vIEluIG1vc3QgY2Fz
ZXMsIHlvdXIgZGVmYXVsdCBjaG9pY2UgZm9yIGEgaGFzaCBtYXAgc2hvdWxkIGJlIGEgbWFwIG9m
IHR5cGUKKy8vIGBmbGF0X2hhc2hfbWFwYC4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9GTEFU
X0hBU0hfTUFQX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0ZMQVRfSEFTSF9NQVBfSF8KKwor
I2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8bmV3PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9jb250YWluZXJfbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
aGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX21hcC5oIiAgLy8gSVdZVSBwcmFn
bWE6IGV4cG9ydAorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorCituYW1lc3BhY2Ug
YWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK3RlbXBsYXRlIDxjbGFzcyBL
LCBjbGFzcyBWPgorc3RydWN0IEZsYXRIYXNoTWFwUG9saWN5OworfSAgLy8gbmFtZXNwYWNlIGNv
bnRhaW5lcl9pbnRlcm5hbAorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6Zmxh
dF9oYXNoX21hcAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBBbiBgYWJzbDo6Zmxh
dF9oYXNoX21hcDxLLCBWPmAgaXMgYW4gdW5vcmRlcmVkIGFzc29jaWF0aXZlIGNvbnRhaW5lciB3
aGljaAorLy8gaGFzIGJlZW4gb3B0aW1pemVkIGZvciBib3RoIHNwZWVkIGFuZCBtZW1vcnkgZm9v
dHByaW50IGluIG1vc3QgY29tbW9uIHVzZQorLy8gY2FzZXMuIEl0cyBpbnRlcmZhY2UgaXMgc2lt
aWxhciB0byB0aGF0IG9mIGBzdGQ6OnVub3JkZXJlZF9tYXA8SywgVj5gIHdpdGgKKy8vIHRoZSBm
b2xsb3dpbmcgbm90YWJsZSBkaWZmZXJlbmNlczoKKy8vCisvLyAqIFJlcXVpcmVzIGtleXMgdGhh
dCBhcmUgQ29weUNvbnN0cnVjdGlibGUKKy8vICogUmVxdWlyZXMgdmFsdWVzIHRoYXQgYXJlIE1v
dmVDb25zdHJ1Y3RpYmxlCisvLyAqIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCB0aHJv
dWdoIGBmaW5kKClgLCBgb3BlcmF0b3JbXSgpYCBhbmQKKy8vICAgYGluc2VydCgpYCwgcHJvdmlk
ZWQgdGhhdCB0aGUgbWFwIGlzIHByb3ZpZGVkIGEgY29tcGF0aWJsZSBoZXRlcm9nZW5lb3VzCisv
LyAgIGhhc2hpbmcgZnVuY3Rpb24gYW5kIGVxdWFsaXR5IG9wZXJhdG9yLgorLy8gKiBJbnZhbGlk
YXRlcyBhbnkgcmVmZXJlbmNlcyBhbmQgcG9pbnRlcnMgdG8gZWxlbWVudHMgd2l0aGluIHRoZSB0
YWJsZSBhZnRlcgorLy8gICBgcmVoYXNoKClgLgorLy8gKiBDb250YWlucyBhIGBjYXBhY2l0eSgp
YCBtZW1iZXIgZnVuY3Rpb24gaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIGVsZW1lbnQKKy8vICAg
c2xvdHMgKG9wZW4sIGRlbGV0ZWQsIGFuZCBlbXB0eSkgd2l0aGluIHRoZSBoYXNoIG1hcC4KKy8v
ICogUmV0dXJucyBgdm9pZGAgZnJvbSB0aGUgYGVyYXNlKGl0ZXJhdG9yKWAgb3ZlcmxvYWQuCisv
LworLy8gQnkgZGVmYXVsdCwgYGZsYXRfaGFzaF9tYXBgIHVzZXMgdGhlIGBhYnNsOjpIYXNoYCBo
YXNoaW5nIGZyYW1ld29yay4KKy8vIEFsbCBmdW5kYW1lbnRhbCBhbmQgQWJzZWlsIHR5cGVzIHRo
YXQgc3VwcG9ydCB0aGUgYGFic2w6Okhhc2hgIGZyYW1ld29yayBoYXZlCisvLyBhIGNvbXBhdGli
bGUgZXF1YWxpdHkgb3BlcmF0b3IgZm9yIGNvbXBhcmluZyBpbnNlcnRpb25zIGludG8gYGZsYXRf
aGFzaF9tYXBgLgorLy8gSWYgeW91ciB0eXBlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoZSBg
YXNibDo6SGFzaGAgZnJhbWV3b3JrLCBzZWUKKy8vIGFic2wvaGFzaC9oYXNoLmggZm9yIGluZm9y
bWF0aW9uIG9uIGV4dGVuZGluZyBBYnNlaWwgaGFzaGluZyB0byB1c2VyLWRlZmluZWQKKy8vIHR5
cGVzLgorLy8KKy8vIE5PVEU6IEEgYGZsYXRfaGFzaF9tYXBgIHN0b3JlcyBpdHMgdmFsdWUgdHlw
ZXMgZGlyZWN0bHkgaW5zaWRlIGl0cworLy8gaW1wbGVtZW50YXRpb24gYXJyYXkgdG8gYXZvaWQg
bWVtb3J5IGluZGlyZWN0aW9uLiBCZWNhdXNlIGEgYGZsYXRfaGFzaF9tYXBgCisvLyBpcyBkZXNp
Z25lZCB0byBtb3ZlIGRhdGEgd2hlbiByZWhhc2hlZCwgbWFwIHZhbHVlcyB3aWxsIG5vdCByZXRh
aW4gcG9pbnRlcgorLy8gc3RhYmlsaXR5LiBJZiB5b3UgcmVxdWlyZSBwb2ludGVyIHN0YWJpbGl0
eSwgb3IgeW91ciB2YWx1ZXMgYXJlIGxhcmdlLAorLy8gY29uc2lkZXIgdXNpbmcgYGFic2w6OmZs
YXRfaGFzaF9tYXA8S2V5LCBzdGQ6OnVuaXF1ZV9wdHI8VmFsdWU+PmAgaW5zdGVhZC4KKy8vIElm
IHlvdXIgdHlwZXMgYXJlIG5vdCBtb3ZlYWJsZSBvciB5b3UgcmVxdWlyZSBwb2ludGVyIHN0YWJp
bGl0eSBmb3Iga2V5cywKKy8vIGNvbnNpZGVyIGBhYnNsOjpub2RlX2hhc2hfbWFwYC4KKy8vCisv
LyBFeGFtcGxlOgorLy8KKy8vICAgLy8gQ3JlYXRlIGEgZmxhdCBoYXNoIG1hcCBvZiB0aHJlZSBz
dHJpbmdzICh0aGF0IG1hcCB0byBzdHJpbmdzKQorLy8gICBhYnNsOjpmbGF0X2hhc2hfbWFwPHN0
ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gZHVja3MgPQorLy8gICAgIHt7ImEiLCAiaHVleSJ9LCB7
ImIiLCAiZGV3ZXkifSwgeyJjIiwgImxvdWllIn19OworLy8KKy8vICAvLyBJbnNlcnQgYSBuZXcg
ZWxlbWVudCBpbnRvIHRoZSBmbGF0IGhhc2ggbWFwCisvLyAgZHVja3MuaW5zZXJ0KHsiZCIsICJk
b25hbGQifSk7CisvLworLy8gIC8vIEZvcmNlIGEgcmVoYXNoIG9mIHRoZSBmbGF0IGhhc2ggbWFw
CisvLyAgZHVja3MucmVoYXNoKDApOworLy8KKy8vICAvLyBGaW5kIHRoZSBlbGVtZW50IHdpdGgg
dGhlIGtleSAiYiIKKy8vICBzdGQ6OnN0cmluZyBzZWFyY2hfa2V5ID0gImIiOworLy8gIGF1dG8g
cmVzdWx0ID0gZHVja3MuZmluZChzZWFyY2hfa2V5KTsKKy8vICBpZiAocmVzdWx0ICE9IGR1Y2tz
LmVuZCgpKSB7CisvLyAgICBzdGQ6OmNvdXQgPDwgIlJlc3VsdDogIiA8PCByZXN1bHQtPnNlY29u
ZCA8PCBzdGQ6OmVuZGw7CisvLyAgfQordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFYsCisgICAg
ICAgICAgY2xhc3MgSGFzaCA9IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZhdWx0
X2hhc2g8Sz4sCisgICAgICAgICAgY2xhc3MgRXEgPSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6
Omhhc2hfZGVmYXVsdF9lcTxLPiwKKyAgICAgICAgICBjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFs
bG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgSywgVj4+PgorY2xhc3MgZmxhdF9oYXNoX21hcCA6IHB1
YmxpYyBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OnJhd19oYXNoX21hcDwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpGbGF0SGFzaE1hcFBvbGlj
eTxLLCBWPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCwgRXEsIEFsbG9jYXRvcj4g
eworICB1c2luZyBCYXNlID0gdHlwZW5hbWUgZmxhdF9oYXNoX21hcDo6cmF3X2hhc2hfbWFwOwor
CisgcHVibGljOgorICBmbGF0X2hhc2hfbWFwKCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKKwor
ICAvLyBmbGF0X2hhc2hfbWFwOjpiZWdpbigpCisgIC8vCisgIC8vIFJldHVybnMgYW4gaXRlcmF0
b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYGZsYXRfaGFzaF9tYXBgLgorICB1c2luZyBCYXNl
OjpiZWdpbjsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpjYmVnaW4oKQorICAvLworICAvLyBSZXR1
cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYGZsYXRfaGFzaF9t
YXBgLgorICB1c2luZyBCYXNlOjpjYmVnaW47CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6Y2VuZCgp
CisgIC8vCisgIC8vIFJldHVybnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBg
ZmxhdF9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmNlbmQ7CisKKyAgLy8gZmxhdF9oYXNoX21h
cDo6ZW5kKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRo
ZSBgZmxhdF9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmVuZDsKKworICAvLyBmbGF0X2hhc2hf
bWFwOjpjYXBhY2l0eSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50
IHNsb3RzIChhc3NpZ25lZCwgZGVsZXRlZCwgYW5kIGVtcHR5KQorICAvLyBhdmFpbGFibGUgd2l0
aGluIHRoZSBgZmxhdF9oYXNoX21hcGAuCisgIC8vCisgIC8vIE5PVEU6IHRoaXMgbWVtYmVyIGZ1
bmN0aW9uIGlzIHBhcnRpY3VsYXIgdG8gYGFic2w6OmZsYXRfaGFzaF9tYXBgIGFuZCBpcworICAv
LyBub3QgcHJvdmlkZWQgaW4gdGhlIGBzdGQ6OnVub3JkZXJlZF9tYXBgIEFQSS4KKyAgdXNpbmcg
QmFzZTo6Y2FwYWNpdHk7CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6ZW1wdHkoKQorICAvLworICAv
LyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBgZmxhdF9oYXNoX21hcGAgaXMgZW1wdHkuCisg
IHVzaW5nIEJhc2U6OmVtcHR5OworCisgIC8vIGZsYXRfaGFzaF9tYXA6Om1heF9zaXplKCkKKyAg
Ly8KKyAgLy8gUmV0dXJucyB0aGUgbGFyZ2VzdCB0aGVvcmV0aWNhbCBwb3NzaWJsZSBudW1iZXIg
b2YgZWxlbWVudHMgd2l0aGluIGEKKyAgLy8gYGZsYXRfaGFzaF9tYXBgIHVuZGVyIGN1cnJlbnQg
bWVtb3J5IGNvbnN0cmFpbnRzLiBUaGlzIHZhbHVlIGNhbiBiZSB0aG91Z2h0CisgIC8vIG9mIHRo
ZSBsYXJnZXN0IHZhbHVlIG9mIGBzdGQ6OmRpc3RhbmNlKGJlZ2luKCksIGVuZCgpKWAgZm9yIGEK
KyAgLy8gYGZsYXRfaGFzaF9tYXA8SywgVj5gLgorICB1c2luZyBCYXNlOjptYXhfc2l6ZTsKKwor
ICAvLyBmbGF0X2hhc2hfbWFwOjpzaXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVy
IG9mIGVsZW1lbnRzIGN1cnJlbnRseSB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfbWFwYC4KKyAgdXNp
bmcgQmFzZTo6c2l6ZTsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpjbGVhcigpCisgIC8vCisgIC8v
IFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGBmbGF0X2hhc2hfbWFwYC4gSW52YWxpZGF0
ZXMgYW55IHJlZmVyZW5jZXMsCisgIC8vIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgcmVmZXJyaW5n
IHRvIGNvbnRhaW5lZCBlbGVtZW50cy4KKyAgLy8KKyAgLy8gTk9URTogdGhpcyBvcGVyYXRpb24g
bWF5IHNocmluayB0aGUgdW5kZXJseWluZyBidWZmZXIuIFRvIGF2b2lkIHNocmlua2luZworICAv
LyB0aGUgdW5kZXJseWluZyBidWZmZXIgY2FsbCBgZXJhc2UoYmVnaW4oKSwgZW5kKCkpYC4KKyAg
dXNpbmcgQmFzZTo6Y2xlYXI7CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6ZXJhc2UoKQorICAvLwor
ICAvLyBFcmFzZXMgZWxlbWVudHMgd2l0aGluIHRoZSBgZmxhdF9oYXNoX21hcGAuIEVyYXNpbmcg
ZG9lcyBub3QgdHJpZ2dlciBhCisgIC8vIHJlaGFzaC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVs
b3cuCisgIC8vCisgIC8vIHZvaWQgZXJhc2UoY29uc3RfaXRlcmF0b3IgcG9zKToKKyAgLy8KKyAg
Ly8gICBFcmFzZXMgdGhlIGVsZW1lbnQgYXQgYHBvc2l0aW9uYCBvZiB0aGUgYGZsYXRfaGFzaF9t
YXBgLCByZXR1cm5pbmcKKyAgLy8gICBgdm9pZGAuCisgIC8vCisgIC8vICAgTk9URTogdGhpcyBy
ZXR1cm4gYmVoYXZpb3IgaXMgZGlmZmVyZW50IHRoYW4gdGhhdCBvZiBTVEwgY29udGFpbmVycyBp
bgorICAvLyAgIGdlbmVyYWwgYW5kIGBzdGQ6OnVub3JkZXJlZF9tYXBgIGluIHBhcnRpY3VsYXIu
CisgIC8vCisgIC8vIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9p
dGVyYXRvciBsYXN0KToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnRzIGluIHRoZSBv
cGVuIGludGVydmFsIFtgZmlyc3RgLCBgbGFzdGApLCByZXR1cm5pbmcgYW4KKyAgLy8gICBpdGVy
YXRvciBwb2ludGluZyB0byBgbGFzdGAuCisgIC8vCisgIC8vIHNpemVfdHlwZSBlcmFzZShjb25z
dCBrZXlfdHlwZSYga2V5KToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnQgd2l0aCB0
aGUgbWF0Y2hpbmcga2V5LCBpZiBpdCBleGlzdHMuCisgIHVzaW5nIEJhc2U6OmVyYXNlOworCisg
IC8vIGZsYXRfaGFzaF9tYXA6Omluc2VydCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVu
dCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGludG8gdGhlIGBmbGF0X2hhc2hfbWFwYCwKKyAgLy8g
cmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVt
ZW50LCBwcm92aWRlZCB0aGF0CisgIC8vIGFuIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGRv
ZXMgbm90IGFscmVhZHkgZXhpc3QuIElmIHJlaGFzaGluZyBvY2N1cnMKKyAgLy8gZHVlIHRvIHRo
ZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLiBPdmVybG9hZHMgYXJl
IGxpc3RlZAorICAvLyBiZWxvdy4KKyAgLy8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9yLGJvb2w+
IGluc2VydChjb25zdCBpbml0X3R5cGUmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEg
dmFsdWUgaW50byB0aGUgYGZsYXRfaGFzaF9tYXBgLiBSZXR1cm5zIGEgcGFpciBjb25zaXN0aW5n
IG9mIGFuCisgIC8vICAgaXRlcmF0b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9yIHRvIHRo
ZSBlbGVtZW50IHRoYXQgcHJldmVudGVkIHRoZQorICAvLyAgIGluc2VydGlvbikgYW5kIGEgYm9v
bCBkZW5vdGluZyB3aGV0aGVyIHRoZSBpbnNlcnRpb24gdG9vayBwbGFjZS4KKyAgLy8KKyAgLy8g
c3RkOjpwYWlyPGl0ZXJhdG9yLGJvb2w+IGluc2VydChUJiYgdmFsdWUpOgorICAvLyBzdGQ6OnBh
aXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0KGluaXRfdHlwZSYmIHZhbHVlKToKKyAgLy8KKyAgLy8g
ICBJbnNlcnRzIGEgbW92ZWFibGUgdmFsdWUgaW50byB0aGUgYGZsYXRfaGFzaF9tYXBgLiBSZXR1
cm5zIGEgcGFpcgorICAvLyAgIGNvbnNpc3Rpbmcgb2YgYW4gaXRlcmF0b3IgdG8gdGhlIGluc2Vy
dGVkIGVsZW1lbnQgKG9yIHRvIHRoZSBlbGVtZW50IHRoYXQKKyAgLy8gICBwcmV2ZW50ZWQgdGhl
IGluc2VydGlvbikgYW5kIGEgYm9vbCBkZW5vdGluZyB3aGV0aGVyIHRoZSBpbnNlcnRpb24gdG9v
aworICAvLyAgIHBsYWNlLgorICAvLworICAvLyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0
b3IgaGludCwgY29uc3QgaW5pdF90eXBlJiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChj
b25zdF9pdGVyYXRvciBoaW50LCBUJiYgdmFsdWUpOgorICAvLyBpdGVyYXRvciBpbnNlcnQoY29u
c3RfaXRlcmF0b3IgaGludCwgaW5pdF90eXBlJiYgdmFsdWUpOworICAvLworICAvLyAgIEluc2Vy
dHMgYSB2YWx1ZSwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5n
IHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFy
Y2guIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlCisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudCwg
b3IgdG8gdGhlIGV4aXN0aW5nIGVsZW1lbnQgdGhhdCBwcmV2ZW50ZWQgdGhlCisgIC8vICAgaW5z
ZXJ0aW9uLgorICAvLworICAvLyB2b2lkIGluc2VydChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1
dEl0ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEluc2VydHMgYSByYW5nZSBvZiB2YWx1ZXMg
W2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisgIC8vICAgTk9URTogQWx0aG91Z2ggdGhlIFNUTCBk
b2VzIG5vdCBzcGVjaWZ5IHdoaWNoIGVsZW1lbnQgbWF5IGJlIGluc2VydGVkIGlmCisgIC8vICAg
bXVsdGlwbGUga2V5cyBjb21wYXJlIGVxdWl2YWxlbnRseSwgZm9yIGBmbGF0X2hhc2hfbWFwYCB3
ZSBndWFyYW50ZWUgdGhlCisgIC8vICAgZmlyc3QgbWF0Y2ggaXMgaW5zZXJ0ZWQuCisgIC8vCisg
IC8vIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGlsaXN0KToK
KyAgLy8KKyAgLy8gICBJbnNlcnRzIHRoZSBlbGVtZW50cyB3aXRoaW4gdGhlIGluaXRpYWxpemVy
IGxpc3QgYGlsaXN0YC4KKyAgLy8KKyAgLy8gICBOT1RFOiBBbHRob3VnaCB0aGUgU1RMIGRvZXMg
bm90IHNwZWNpZnkgd2hpY2ggZWxlbWVudCBtYXkgYmUgaW5zZXJ0ZWQgaWYKKyAgLy8gICBtdWx0
aXBsZSBrZXlzIGNvbXBhcmUgZXF1aXZhbGVudGx5IHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIgbGlz
dCwgZm9yCisgIC8vICAgYGZsYXRfaGFzaF9tYXBgIHdlIGd1YXJhbnRlZSB0aGUgZmlyc3QgbWF0
Y2ggaXMgaW5zZXJ0ZWQuCisgIHVzaW5nIEJhc2U6Omluc2VydDsKKworICAvLyBmbGF0X2hhc2hf
bWFwOjppbnNlcnRfb3JfYXNzaWduKCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9m
IHRoZSBzcGVjaWZpZWQgdmFsdWUgaW50byB0aGUgYGZsYXRfaGFzaF9tYXBgIHByb3ZpZGVkCisg
IC8vIHRoYXQgYSB2YWx1ZSB3aXRoIHRoZSBnaXZlbiBrZXkgZG9lcyBub3QgYWxyZWFkeSBleGlz
dCwgb3IgcmVwbGFjZXMgaXQgd2l0aAorICAvLyB0aGUgZWxlbWVudCB2YWx1ZSBpZiBhIGtleSBm
b3IgdGhhdCB2YWx1ZSBhbHJlYWR5IGV4aXN0cywgcmV0dXJuaW5nIGFuCisgIC8vIGl0ZXJhdG9y
IHBvaW50aW5nIHRvIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50LiAgSWYgcmVoYXNoaW5nIG9j
Y3VycyBkdWUKKyAgLy8gdG8gdGhlIGluc2VydGlvbiwgYWxsIGV4aXN0aW5nIGl0ZXJhdG9ycyBh
cmUgaW52YWxpZGF0ZWQuIE92ZXJsb2FkcyBhcmUKKyAgLy8gbGlzdGVkIGJlbG93LgorICAvLwor
ICAvLyBwYWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnRfb3JfYXNzaWduKGNvbnN0IGluaXRfdHlw
ZSYgaywgVCYmIG9iaik6CisgIC8vIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydF9vcl9hc3Np
Z24oaW5pdF90eXBlJiYgaywgVCYmIG9iaik6CisgIC8vCisgIC8vICAgSW5zZXJ0cy9Bc3NpZ25z
IChvciBtb3ZlcykgdGhlIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW50byB0aGUKKyAg
Ly8gICBgZmxhdF9oYXNoX21hcGAuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydF9vcl9hc3Np
Z24oY29uc3RfaXRlcmF0b3IgaGludCwKKyAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbml0X3R5cGUmIGssIFQmJiBvYmopOgorICAvLyBpdGVyYXRvciBpbnNlcnRfb3JfYXNz
aWduKGNvbnN0X2l0ZXJhdG9yIGhpbnQsIGluaXRfdHlwZSYmIGssIFQmJiBvYmopOgorICAvLwor
ICAvLyAgIEluc2VydHMvQXNzaWducyAob3IgbW92ZXMpIHRoZSBlbGVtZW50IG9mIHRoZSBzcGVj
aWZpZWQga2V5IGludG8gdGhlCisgIC8vICAgYGZsYXRfaGFzaF9tYXBgIHVzaW5nIHRoZSBwb3Np
dGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZyBzdWdnZXN0aW9uCisgIC8vICAgZm9yIHdo
ZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLgorICB1c2luZyBCYXNlOjppbnNlcnRf
b3JfYXNzaWduOworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmVtcGxhY2UoKQorICAvLworICAvLyBJ
bnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3Rpbmcg
aXQgaW4tcGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgZmxhdF9oYXNoX21hcGAsIHByb3ZpZGVkIHRo
YXQgbm8gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkKKyAgLy8gYWxyZWFkeSBleGlzdHMuCisg
IC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFs
cmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQorICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5lciwg
aW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8v
IGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJlZmVyIGB0cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91
ciBrZXkgaXMgbm90CisgIC8vIGNvcHlhYmxlIG9yIG1vdmVhYmxlLgorICAvLworICAvLyBJZiBy
ZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBp
bnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZTsKKworICAvLyBmbGF0X2hhc2hfbWFw
OjplbXBsYWNlX2hpbnQoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNw
ZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4tcGxhY2UKKyAgLy8gd2l0aGluIHRo
ZSBgZmxhdF9oYXNoX21hcGAsIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24t
YmluZGluZworICAvLyBzdWdnZXN0aW9uIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9u
IHNlYXJjaCwgYW5kIG9ubHkgaW5zZXJ0cworICAvLyBwcm92aWRlZCB0aGF0IG5vIGVsZW1lbnQg
d2l0aCB0aGUgZ2l2ZW4ga2V5IGFscmVhZHkgZXhpc3RzLgorICAvLworICAvLyBUaGUgZWxlbWVu
dCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQg
d2l0aCB0aGUKKyAgLy8ga2V5IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5l
d2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQorICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRl
bHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlvdXIga2V5IGlzIG5vdAorICAvLyBj
b3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8KKyAgLy8gSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUg
dG8gdGhlIGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIHVzaW5n
IEJhc2U6OmVtcGxhY2VfaGludDsKKworICAvLyBmbGF0X2hhc2hfbWFwOjp0cnlfZW1wbGFjZSgp
CisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5
IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfbWFw
YCwgcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJl
YWR5IGV4aXN0cy4gVW5saWtlIGBlbXBsYWNlKClgLCBpZiBhbiBlbGVtZW50IHdpdGggdGhlIGdp
dmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cywgd2UgZ3VhcmFudGVlIHRoYXQgbm8gZWxlbWVu
dCBpcyBjb25zdHJ1Y3RlZC4KKyAgLy8KKyAgLy8gSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUgdG8g
dGhlIGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIC8vIE92ZXJs
b2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+
IHRyeV9lbXBsYWNlKGNvbnN0IGtleV90eXBlJiBrLCBBcmdzJiYuLi4gYXJncyk6CisgIC8vICAg
cGFpcjxpdGVyYXRvciwgYm9vbD4gdHJ5X2VtcGxhY2Uoa2V5X3R5cGUmJiBrLCBBcmdzJiYuLi4g
YXJncyk6CisgIC8vCisgIC8vIEluc2VydHMgKHZpYSBjb3B5IG9yIG1vdmUpIHRoZSBlbGVtZW50
IG9mIHRoZSBzcGVjaWZpZWQga2V5IGludG8gdGhlCisgIC8vIGBmbGF0X2hhc2hfbWFwYC4KKyAg
Ly8KKyAgLy8gICBpdGVyYXRvciB0cnlfZW1wbGFjZShjb25zdF9pdGVyYXRvciBoaW50LAorICAv
LyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaXRfdHlwZSYgaywgQXJncyYmLi4uIGFy
Z3MpOgorICAvLyAgIGl0ZXJhdG9yIHRyeV9lbXBsYWNlKGNvbnN0X2l0ZXJhdG9yIGhpbnQsIGlu
aXRfdHlwZSYmIGssIEFyZ3MmJi4uLiBhcmdzKToKKyAgLy8KKyAgLy8gSW5zZXJ0cyAodmlhIGNv
cHkgb3IgbW92ZSkgdGhlIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW50byB0aGUKKyAg
Ly8gYGZsYXRfaGFzaF9tYXBgIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24t
YmluZGluZyBzdWdnZXN0aW9uCisgIC8vIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9u
IHNlYXJjaC4KKyAgdXNpbmcgQmFzZTo6dHJ5X2VtcGxhY2U7CisKKyAgLy8gZmxhdF9oYXNoX21h
cDo6ZXh0cmFjdCgpCisgIC8vCisgIC8vIEV4dHJhY3RzIHRoZSBpbmRpY2F0ZWQgZWxlbWVudCwg
ZXJhc2luZyBpdCBpbiB0aGUgcHJvY2VzcywgYW5kIHJldHVybnMgaXQKKyAgLy8gYXMgYSBDKysx
Ny1jb21wYXRpYmxlIG5vZGUgaGFuZGxlLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAg
Ly8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3QoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24pOgorICAv
LworICAvLyAgIEV4dHJhY3RzIHRoZSBrZXksdmFsdWUgcGFpciBvZiB0aGUgZWxlbWVudCBhdCB0
aGUgaW5kaWNhdGVkIHBvc2l0aW9uIGFuZAorICAvLyAgIHJldHVybnMgYSBub2RlIGhhbmRsZSBv
d25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4KKyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3Qo
Y29uc3Qga2V5X3R5cGUmIHgpOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBrZXksdmFsdWUg
cGFpciBvZiB0aGUgZWxlbWVudCB3aXRoIGEga2V5IG1hdGNoaW5nIHRoZSBwYXNzZWQKKyAgLy8g
ICBrZXkgdmFsdWUgYW5kIHJldHVybnMgYSBub2RlIGhhbmRsZSBvd25pbmcgdGhhdCBleHRyYWN0
ZWQgZGF0YS4gSWYgdGhlCisgIC8vICAgYGZsYXRfaGFzaF9tYXBgIGRvZXMgbm90IGNvbnRhaW4g
YW4gZWxlbWVudCB3aXRoIGEgbWF0Y2hpbmcga2V5LCB0aGlzCisgIC8vICAgZnVuY3Rpb24gcmV0
dXJucyBhbiBlbXB0eSBub2RlIGhhbmRsZS4KKyAgdXNpbmcgQmFzZTo6ZXh0cmFjdDsKKworICAv
LyBmbGF0X2hhc2hfbWFwOjptZXJnZSgpCisgIC8vCisgIC8vIEV4dHJhY3RzIGVsZW1lbnRzIGZy
b20gYSBnaXZlbiBgc291cmNlYCBmbGF0IGhhc2ggbWFwIGludG8gdGhpcworICAvLyBgZmxhdF9o
YXNoX21hcGAuIElmIHRoZSBkZXN0aW5hdGlvbiBgZmxhdF9oYXNoX21hcGAgYWxyZWFkeSBjb250
YWlucyBhbgorICAvLyBlbGVtZW50IHdpdGggYW4gZXF1aXZhbGVudCBrZXksIHRoYXQgZWxlbWVu
dCBpcyBub3QgZXh0cmFjdGVkLgorICB1c2luZyBCYXNlOjptZXJnZTsKKworICAvLyBmbGF0X2hh
c2hfbWFwOjpzd2FwKGZsYXRfaGFzaF9tYXAmIG90aGVyKQorICAvLworICAvLyBFeGNoYW5nZXMg
dGhlIGNvbnRlbnRzIG9mIHRoaXMgYGZsYXRfaGFzaF9tYXBgIHdpdGggdGhvc2Ugb2YgdGhlIGBv
dGhlcmAKKyAgLy8gZmxhdCBoYXNoIG1hcCwgYXZvaWRpbmcgaW52b2NhdGlvbiBvZiBhbnkgbW92
ZSwgY29weSwgb3Igc3dhcCBvcGVyYXRpb25zIG9uCisgIC8vIGluZGl2aWR1YWwgZWxlbWVudHMu
CisgIC8vCisgIC8vIEFsbCBpdGVyYXRvcnMgYW5kIHJlZmVyZW5jZXMgb24gdGhlIGBmbGF0X2hh
c2hfbWFwYCByZW1haW4gdmFsaWQsIGV4Y2VwdGluZworICAvLyBmb3IgdGhlIHBhc3QtdGhlLWVu
ZCBpdGVyYXRvciwgd2hpY2ggaXMgaW52YWxpZGF0ZWQuCisgIC8vCisgIC8vIGBzd2FwKClgIHJl
cXVpcmVzIHRoYXQgdGhlIGZsYXQgaGFzaCBtYXAncyBoYXNoaW5nIGFuZCBrZXkgZXF1aXZhbGVu
Y2UKKyAgLy8gZnVuY3Rpb25zIGJlIFN3YXBwYWJsZSwgYW5kIGFyZSBleGNoYWdlZCB1c2luZyB1
bnF1YWxpZmllZCBjYWxscyB0bworICAvLyBub24tbWVtYmVyIGBzd2FwKClgLiBJZiB0aGUgbWFw
J3MgYWxsb2NhdG9yIGhhcworICAvLyBgc3RkOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcl90
eXBlPjo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZWAKKyAgLy8gc2V0IHRvIGB0
cnVlYCwgdGhlIGFsbG9jYXRvcnMgYXJlIGFsc28gZXhjaGFuZ2VkIHVzaW5nIGFuIHVucXVhbGlm
aWVkIGNhbGwKKyAgLy8gdG8gbm9uLW1lbWJlciBgc3dhcCgpYDsgb3RoZXJ3aXNlLCB0aGUgYWxs
b2NhdG9ycyBhcmUgbm90IHN3YXBwZWQuCisgIHVzaW5nIEJhc2U6OnN3YXA7CisKKyAgLy8gZmxh
dF9oYXNoX21hcDo6cmVoYXNoKGNvdW50KQorICAvLworICAvLyBSZWhhc2hlcyB0aGUgYGZsYXRf
aGFzaF9tYXBgLCBzZXR0aW5nIHRoZSBudW1iZXIgb2Ygc2xvdHMgdG8gYmUgYXQgbGVhc3QKKyAg
Ly8gdGhlIHBhc3NlZCB2YWx1ZS4gSWYgdGhlIG5ldyBudW1iZXIgb2Ygc2xvdHMgaW5jcmVhc2Vz
IHRoZSBsb2FkIGZhY3RvciBtb3JlCisgIC8vIHRoYW4gdGhlIGN1cnJlbnQgbWF4aW11bSBsb2Fk
IGZhY3RvcgorICAvLyAoYGNvdW50YCA8IGBzaXplKClgIC8gYG1heF9sb2FkX2ZhY3RvcigpYCks
IHRoZW4gdGhlIG5ldyBudW1iZXIgb2Ygc2xvdHMKKyAgLy8gd2lsbCBiZSBhdCBsZWFzdCBgc2l6
ZSgpYCAvIGBtYXhfbG9hZF9mYWN0b3IoKWAuCisgIC8vCisgIC8vIFRvIGZvcmNlIGEgcmVoYXNo
LCBwYXNzIHJlaGFzaCgwKS4KKyAgLy8KKyAgLy8gTk9URTogdW5saWtlIGJlaGF2aW9yIGluIGBz
dGQ6OnVub3JkZXJlZF9tYXBgLCByZWZlcmVuY2VzIGFyZSBhbHNvCisgIC8vIGludmFsaWRhdGVk
IHVwb24gYSBgcmVoYXNoKClgLgorICB1c2luZyBCYXNlOjpyZWhhc2g7CisKKyAgLy8gZmxhdF9o
YXNoX21hcDo6cmVzZXJ2ZShjb3VudCkKKyAgLy8KKyAgLy8gU2V0cyB0aGUgbnVtYmVyIG9mIHNs
b3RzIGluIHRoZSBgZmxhdF9oYXNoX21hcGAgdG8gdGhlIG51bWJlciBuZWVkZWQgdG8KKyAgLy8g
YWNjb21tb2RhdGUgYXQgbGVhc3QgYGNvdW50YCB0b3RhbCBlbGVtZW50cyB3aXRob3V0IGV4Y2Vl
ZGluZyB0aGUgY3VycmVudAorICAvLyBtYXhpbXVtIGxvYWQgZmFjdG9yLCBhbmQgbWF5IHJlaGFz
aCB0aGUgY29udGFpbmVyIGlmIG5lZWRlZC4KKyAgdXNpbmcgQmFzZTo6cmVzZXJ2ZTsKKworICAv
LyBmbGF0X2hhc2hfbWFwOjphdCgpCisgIC8vCisgIC8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8g
dGhlIG1hcHBlZCB2YWx1ZSBvZiB0aGUgZWxlbWVudCB3aXRoIGtleSBlcXVpdmFsZW50CisgIC8v
IHRvIHRoZSBwYXNzZWQga2V5LgorICB1c2luZyBCYXNlOjphdDsKKworICAvLyBmbGF0X2hhc2hf
bWFwOjpjb250YWlucygpCisgIC8vCisgIC8vIERldGVybWluZXMgd2hldGhlciBhbiBlbGVtZW50
IHdpdGggYSBrZXkgY29tcGFyaW5nIGVxdWFsIHRvIHRoZSBnaXZlbiBga2V5YAorICAvLyBleGlz
dHMgd2l0aGluIHRoZSBgZmxhdF9oYXNoX21hcGAsIHJldHVybmluZyBgdHJ1ZWAgaWYgc28gb3Ig
YGZhbHNlYAorICAvLyBvdGhlcndpc2UuCisgIHVzaW5nIEJhc2U6OmNvbnRhaW5zOworCisgIC8v
IGZsYXRfaGFzaF9tYXA6OmNvdW50KGNvbnN0IEtleSYga2V5KSBjb25zdAorICAvLworICAvLyBS
ZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgd2l0aCBhIGtleSBjb21wYXJpbmcgZXF1YWwg
dG8gdGhlIGdpdmVuCisgIC8vIGBrZXlgIHdpdGhpbiB0aGUgYGZsYXRfaGFzaF9tYXBgLiBub3Rl
IHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybgorICAvLyBlaXRoZXIgYDFgIG9yIGAwYCBz
aW5jZSBkdXBsaWNhdGUga2V5cyBhcmUgbm90IGFsbG93ZWQgd2l0aGluIGEKKyAgLy8gYGZsYXRf
aGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpjb3VudDsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpl
cXVhbF9yYW5nZSgpCisgIC8vCisgIC8vIFJldHVybnMgYSBjbG9zZWQgcmFuZ2UgW2ZpcnN0LCBs
YXN0XSwgZGVmaW5lZCBieSBhIGBzdGQ6OnBhaXJgIG9mIHR3bworICAvLyBpdGVyYXRvcnMsIGNv
bnRhaW5pbmcgYWxsIGVsZW1lbnRzIHdpdGggdGhlIHBhc3NlZCBrZXkgaW4gdGhlCisgIC8vIGBm
bGF0X2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6ZXF1YWxfcmFuZ2U7CisKKyAgLy8gZmxhdF9o
YXNoX21hcDo6ZmluZCgpCisgIC8vCisgIC8vIEZpbmRzIGFuIGVsZW1lbnQgd2l0aCB0aGUgcGFz
c2VkIGBrZXlgIHdpdGhpbiB0aGUgYGZsYXRfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpmaW5k
OworCisgIC8vIGZsYXRfaGFzaF9tYXA6Om9wZXJhdG9yW10oKQorICAvLworICAvLyBSZXR1cm5z
IGEgcmVmZXJlbmNlIHRvIHRoZSB2YWx1ZSBtYXBwZWQgdG8gdGhlIHBhc3NlZCBrZXkgd2l0aGlu
IHRoZQorICAvLyBgZmxhdF9oYXNoX21hcGAsIHBlcmZvcm1pbmcgYW4gYGluc2VydCgpYCBpZiB0
aGUga2V5IGRvZXMgbm90IGFscmVhZHkKKyAgLy8gZXhpc3QuCisgIC8vCisgIC8vIElmIGFuIGlu
c2VydGlvbiBvY2N1cnMgYW5kIHJlc3VsdHMgaW4gYSByZWhhc2hpbmcgb2YgdGhlIGNvbnRhaW5l
ciwgYWxsCisgIC8vIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuIE90aGVyd2lzZSBpdGVyYXRv
cnMgYXJlIG5vdCBhZmZlY3RlZCBhbmQKKyAgLy8gcmVmZXJlbmNlcyBhcmUgbm90IGludmFsaWRh
dGVkLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gVCYgb3BlcmF0b3Jb
XShjb25zdCBLZXkmIGtleSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhbiBpbml0X3R5cGUgb2Jq
ZWN0IGNvbnN0cnVjdGVkIGluLXBsYWNlIGlmIHRoZSBlbGVtZW50IHdpdGggdGhlCisgIC8vICAg
Z2l2ZW4ga2V5IGRvZXMgbm90IGV4aXN0LgorICAvLworICAvLyBUJiBvcGVyYXRvcltdKEtleSYm
IGtleSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhbiBpbml0X3R5cGUgb2JqZWN0IGNvbnN0cnVj
dGVkIGluLXBsYWNlIHByb3ZpZGVkIHRoYXQgYW4gZWxlbWVudAorICAvLyAgIHdpdGggdGhlIGdp
dmVuIGtleSBkb2VzIG5vdCBleGlzdC4KKyAgdXNpbmcgQmFzZTo6b3BlcmF0b3JbXTsKKworICAv
LyBmbGF0X2hhc2hfbWFwOjpidWNrZXRfY291bnQoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBu
dW1iZXIgb2YgImJ1Y2tldHMiIHdpdGhpbiB0aGUgYGZsYXRfaGFzaF9tYXBgLiBOb3RlIHRoYXQK
KyAgLy8gYmVjYXVzZSBhIGZsYXQgaGFzaCBtYXAgY29udGFpbnMgYWxsIGVsZW1lbnRzIHdpdGhp
biBpdHMgaW50ZXJuYWwgc3RvcmFnZSwKKyAgLy8gdGhpcyB2YWx1ZSBzaW1wbHkgZXF1YWxzIHRo
ZSBjdXJyZW50IGNhcGFjaXR5IG9mIHRoZSBgZmxhdF9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6
OmJ1Y2tldF9jb3VudDsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpsb2FkX2ZhY3RvcigpCisgIC8v
CisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgbG9hZCBmYWN0b3Igb2YgdGhlIGBmbGF0X2hhc2hf
bWFwYCAodGhlIGF2ZXJhZ2UgbnVtYmVyCisgIC8vIG9mIHNsb3RzIG9jY3VwaWVkIHdpdGggYSB2
YWx1ZSB3aXRoaW4gdGhlIGhhc2ggbWFwKS4KKyAgdXNpbmcgQmFzZTo6bG9hZF9mYWN0b3I7CisK
KyAgLy8gZmxhdF9oYXNoX21hcDo6bWF4X2xvYWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8gTWFuYWdl
cyB0aGUgbWF4aW11bSBsb2FkIGZhY3RvciBvZiB0aGUgYGZsYXRfaGFzaF9tYXBgLiBPdmVybG9h
ZHMgYXJlCisgIC8vIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gZmxvYXQgZmxhdF9oYXNoX21h
cDo6bWF4X2xvYWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8gICBSZXR1cm5zIHRoZSBjdXJyZW50IG1h
eGltdW0gbG9hZCBmYWN0b3Igb2YgdGhlIGBmbGF0X2hhc2hfbWFwYC4KKyAgLy8KKyAgLy8gdm9p
ZCBmbGF0X2hhc2hfbWFwOjptYXhfbG9hZF9mYWN0b3IoZmxvYXQgbWwpCisgIC8vCisgIC8vICAg
U2V0cyB0aGUgbWF4aW11bSBsb2FkIGZhY3RvciBvZiB0aGUgYGZsYXRfaGFzaF9tYXBgIHRvIHRo
ZSBwYXNzZWQgdmFsdWUuCisgIC8vCisgIC8vICAgTk9URTogVGhpcyBvdmVybG9hZCBpcyBwcm92
aWRlZCBvbmx5IGZvciBBUEkgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBTVEw7CisgIC8vICAgYGZs
YXRfaGFzaF9tYXBgIHdpbGwgaWdub3JlIGFueSBzZXQgbG9hZCBmYWN0b3IgYW5kIG1hbmFnZSBp
dHMgcmVoYXNoaW5nCisgIC8vICAgaW50ZXJuYWxseSBhcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRh
aWwuCisgIHVzaW5nIEJhc2U6Om1heF9sb2FkX2ZhY3RvcjsKKworICAvLyBmbGF0X2hhc2hfbWFw
OjpnZXRfYWxsb2NhdG9yKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0
aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBmbGF0X2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6
Z2V0X2FsbG9jYXRvcjsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpoYXNoX2Z1bmN0aW9uKCkKKyAg
Ly8KKyAgLy8gUmV0dXJucyB0aGUgaGFzaGluZyBmdW5jdGlvbiB1c2VkIHRvIGhhc2ggdGhlIGtl
eXMgd2l0aGluIHRoaXMKKyAgLy8gYGZsYXRfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpoYXNo
X2Z1bmN0aW9uOworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmtleV9lcSgpCisgIC8vCisgIC8vIFJl
dHVybnMgdGhlIGZ1bmN0aW9uIHVzZWQgZm9yIGNvbXBhcmluZyBrZXlzIGVxdWFsaXR5LgorICB1
c2luZyBCYXNlOjprZXlfZXE7Cit9OworCituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsK
KwordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+CitzdHJ1Y3QgRmxhdEhhc2hNYXBQb2xpY3kg
eworICB1c2luZyBzbG90X3R5cGUgPSBjb250YWluZXJfaW50ZXJuYWw6OnNsb3RfdHlwZTxLLCBW
PjsKKyAgdXNpbmcga2V5X3R5cGUgPSBLOworICB1c2luZyBtYXBwZWRfdHlwZSA9IFY7CisgIHVz
aW5nIGluaXRfdHlwZSA9IHN0ZDo6cGFpcjwvKm5vbiBjb25zdCovIGtleV90eXBlLCBtYXBwZWRf
dHlwZT47CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvciwgY2xhc3MuLi4gQXJncz4KKyAg
c3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCwg
QXJncyYmLi4uIGFyZ3MpIHsKKyAgICBzbG90X3R5cGU6OmNvbnN0cnVjdChhbGxvYywgc2xvdCwg
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBB
bGxvY2F0b3I+CisgIHN0YXRpYyB2b2lkIGRlc3Ryb3koQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90
eXBlKiBzbG90KSB7CisgICAgc2xvdF90eXBlOjpkZXN0cm95KGFsbG9jLCBzbG90KTsKKyAgfQor
CisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0YXRpYyB2b2lkIHRyYW5zZmVyKEFs
bG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogbmV3X3Nsb3QsCisgICAgICAgICAgICAgICAgICAg
ICAgIHNsb3RfdHlwZSogb2xkX3Nsb3QpIHsKKyAgICBzbG90X3R5cGU6OnRyYW5zZmVyKGFsbG9j
LCBuZXdfc2xvdCwgb2xkX3Nsb3QpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNz
Li4uIEFyZ3M+CisgIHN0YXRpYyBkZWNsdHlwZShhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkRl
Y29tcG9zZVBhaXIoCisgICAgICBzdGQ6OmRlY2x2YWw8Rj4oKSwgc3RkOjpkZWNsdmFsPEFyZ3M+
KCkuLi4pKQorICBhcHBseShGJiYgZiwgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICByZXR1cm4gYWJz
bDo6Y29udGFpbmVyX2ludGVybmFsOjpEZWNvbXBvc2VQYWlyKHN0ZDo6Zm9yd2FyZDxGPihmKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICBzdGF0aWMgc2l6ZV90IHNwYWNlX3Vz
ZWQoY29uc3Qgc2xvdF90eXBlKikgeyByZXR1cm4gMDsgfQorCisgIHN0YXRpYyBzdGQ6OnBhaXI8
Y29uc3QgSywgVj4mIGVsZW1lbnQoc2xvdF90eXBlKiBzbG90KSB7IHJldHVybiBzbG90LT52YWx1
ZTsgfQorCisgIHN0YXRpYyBWJiB2YWx1ZShzdGQ6OnBhaXI8Y29uc3QgSywgVj4qIGt2KSB7IHJl
dHVybiBrdi0+c2Vjb25kOyB9CisgIHN0YXRpYyBjb25zdCBWJiB2YWx1ZShjb25zdCBzdGQ6OnBh
aXI8Y29uc3QgSywgVj4qIGt2KSB7IHJldHVybiBrdi0+c2Vjb25kOyB9Cit9OworCit9ICAvLyBu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlm
ICAvLyBBQlNMX0NPTlRBSU5FUl9GTEFUX0hBU0hfTUFQX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvZmxhdF9oYXNoX21hcF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFz
aF9tYXBfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGE3ODFmZmQ2YzdkOWQxNDkwODZlNDQzMTc0YTdh
YTc2YWQyMmFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9t
YXBfdGVzdC5jYwpAQCAtMCwwICsxLDI0MSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXAuaCIK
KworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3Rp
bmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2Nv
bnN0cnVjdG9yX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9y
ZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMv
YW55LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwg
eworbmFtZXNwYWNlIHsKK3VzaW5nIDo6YWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2lu
dGVybmFsOjpFbnVtOwordXNpbmcgOjphYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfaW50
ZXJuYWw6OkVudW1DbGFzczsKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6
UGFpcjsKK3VzaW5nIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmU7CisKK3RlbXBsYXRl
IDxjbGFzcyBLLCBjbGFzcyBWPgordXNpbmcgTWFwID0KKyAgICBmbGF0X2hhc2hfbWFwPEssIFYs
IFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRlZnVsVGVzdGluZ0VxdWFsLCBBbGxvYzw+PjsKKwor
c3RhdGljX2Fzc2VydCghc3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8Tm9uU3RhbmRhcmRMYXlvdXQ+
KCksICIiKTsKKwordXNpbmcgTWFwVHlwZXMgPQorICAgIDo6dGVzdGluZzo6VHlwZXM8TWFwPGlu
dCwgaW50PiwgTWFwPHN0ZDo6c3RyaW5nLCBpbnQ+LCBNYXA8RW51bSwgc3RkOjpzdHJpbmc+LAor
ICAgICAgICAgICAgICAgICAgICAgTWFwPEVudW1DbGFzcywgaW50PiwgTWFwPGludCwgTm9uU3Rh
bmRhcmRMYXlvdXQ+LAorICAgICAgICAgICAgICAgICAgICAgTWFwPE5vblN0YW5kYXJkTGF5b3V0
LCBpbnQ+PjsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoRmxhdEhhc2hNYXAsIENv
bnN0cnVjdG9yVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
RmxhdEhhc2hNYXAsIExvb2t1cFRlc3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKEZsYXRIYXNoTWFwLCBNb2RpZmllcnNUZXN0LCBNYXBUeXBlcyk7CisKK1RFU1Qo
RmxhdEhhc2hNYXAsIFN0YW5kYXJkTGF5b3V0KSB7CisgIHN0cnVjdCBJbnQgeworICAgIGV4cGxp
Y2l0IEludChzaXplX3QgdmFsdWUpIDogdmFsdWUodmFsdWUpIHt9CisgICAgSW50KCkgOiB2YWx1
ZSgwKSB7IEFERF9GQUlMVVJFKCk7IH0KKyAgICBJbnQoY29uc3QgSW50JiBvdGhlcikgOiB2YWx1
ZShvdGhlci52YWx1ZSkgeyBBRERfRkFJTFVSRSgpOyB9CisgICAgSW50KEludCYmKSA9IGRlZmF1
bHQ7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlID09IG90aGVyLnZhbHVlOyB9CisgICAgc2l6ZV90IHZhbHVlOworICB9OworICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc3RhbmRhcmRfbGF5b3V0PEludD4oKSwgIiIpOworCisgIHN0cnVj
dCBIYXNoIHsKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBJbnQmIG9iaikgY29uc3QgeyBy
ZXR1cm4gb2JqLnZhbHVlOyB9CisgIH07CisKKyAgLy8gVmVyaWZ5IHRoYXQgbmVpdGhlciB0aGUg
a2V5IG5vciB0aGUgdmFsdWUgZ2V0IGRlZmF1bHQtY29uc3RydWN0ZWQgb3IKKyAgLy8gY29weS1j
b25zdHJ1Y3RlZC4KKyAgeworICAgIGZsYXRfaGFzaF9tYXA8SW50LCBJbnQsIEhhc2g+IG07Cisg
ICAgbS50cnlfZW1wbGFjZShJbnQoMSksIEludCgyKSk7CisgICAgbS50cnlfZW1wbGFjZShJbnQo
MyksIEludCg0KSk7CisgICAgbS5lcmFzZShJbnQoMSkpOworICAgIG0ucmVoYXNoKDIgKiBtLmJ1
Y2tldF9jb3VudCgpKTsKKyAgfQorICB7CisgICAgZmxhdF9oYXNoX21hcDxJbnQsIEludCwgSGFz
aD4gbTsKKyAgICBtLnRyeV9lbXBsYWNlKEludCgxKSwgSW50KDIpKTsKKyAgICBtLnRyeV9lbXBs
YWNlKEludCgzKSwgSW50KDQpKTsKKyAgICBtLmVyYXNlKEludCgxKSk7CisgICAgbS5jbGVhcigp
OworICB9Cit9CisKKy8vIGdjYyBiZWNvbWVzIHVuaGFwcHkgaWYgdGhpcyBpcyBpbnNpZGUgdGhl
IG1ldGhvZCwgc28gcHVsbCBpdCBvdXQgaGVyZS4KK3N0cnVjdCBiYWxhc3Qge307CisKK1RFU1Qo
RmxhdEhhc2hNYXAsIEl0ZXJhdGVzTXNhbikgeworICAvLyBCZWNhdXNlIFN3aXNzVGFibGUgcmFu
ZG9taXplcyBvbiBwb2ludGVyIGFkZHJlc3Nlcywgd2Uga2VlcCBvbGQgdGFibGVzCisgIC8vIGFy
b3VuZCB0byBlbnN1cmUgd2UgZG9uJ3QgcmV1c2Ugb2xkIG1lbW9yeS4KKyAgc3RkOjp2ZWN0b3I8
YWJzbDo6ZmxhdF9oYXNoX21hcDxpbnQsIGJhbGFzdD4+IGdhcmJhZ2U7CisgIGZvciAoaW50IGkg
PSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICBhYnNsOjpmbGF0X2hhc2hfbWFwPGludCwgYmFsYXN0
PiB0OworICAgIGZvciAoaW50IGogPSAwOyBqIDwgMTAwOyArK2opIHsKKyAgICAgIHRbal07Cisg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHAgOiB0KSBFWFBFQ1RfVEhBVChwLCBQYWlyKF8sIF8pKTsK
KyAgICB9CisgICAgZ2FyYmFnZS5wdXNoX2JhY2soc3RkOjptb3ZlKHQpKTsKKyAgfQorfQorCisv
LyBEZW1vbnN0cmF0aW9uIG9mIHRoZSAiTGF6eSBLZXkiIHBhdHRlcm4uICBUaGlzIHVzZXMgaGV0
ZXJvZ2Vub3VzIGluc2VydCB0bworLy8gYXZvaWQgY3JlYXRpbmcgZXhwZW5zaXZlIGtleSBlbGVt
ZW50cyB3aGVuIHRoZSBpdGVtIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUKKy8vIG1hcC4KK3N0
cnVjdCBMYXp5SW50IHsKKyAgZXhwbGljaXQgTGF6eUludChzaXplX3QgdmFsdWUsIGludCogdHJh
Y2tlcikKKyAgICAgIDogdmFsdWUodmFsdWUpLCB0cmFja2VyKHRyYWNrZXIpIHt9CisKKyAgZXhw
bGljaXQgb3BlcmF0b3Igc2l6ZV90KCkgY29uc3QgeworICAgICsrKnRyYWNrZXI7CisgICAgcmV0
dXJuIHZhbHVlOworICB9CisKKyAgc2l6ZV90IHZhbHVlOworICBpbnQqIHRyYWNrZXI7Cit9Owor
CitzdHJ1Y3QgSGFzaCB7CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKyAgaW50KiB0
cmFja2VyOworICBzaXplX3Qgb3BlcmF0b3IoKShzaXplX3Qgb2JqKSBjb25zdCB7CisgICAgKysq
dHJhY2tlcjsKKyAgICByZXR1cm4gb2JqOworICB9CisgIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0
IExhenlJbnQmIG9iaikgY29uc3QgeworICAgICsrKnRyYWNrZXI7CisgICAgcmV0dXJuIG9iai52
YWx1ZTsKKyAgfQorfTsKKworc3RydWN0IEVxIHsKKyAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2
b2lkOworICBib29sIG9wZXJhdG9yKCkoc2l6ZV90IGxocywgc2l6ZV90IHJocykgY29uc3Qgewor
ICAgIHJldHVybiBsaHMgPT0gcmhzOworICB9CisgIGJvb2wgb3BlcmF0b3IoKShzaXplX3QgbGhz
LCBjb25zdCBMYXp5SW50JiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gbGhzID09IHJocy52YWx1
ZTsKKyAgfQorfTsKKworVEVTVChGbGF0SGFzaE1hcCwgTGF6eUtleVBhdHRlcm4pIHsKKyAgLy8g
aGFzaGVzIGFyZSBvbmx5IGd1YXJhbnRlZWQgaW4gb3B0IG1vZGUsIHdlIHVzZSBhc3NlcnRpb25z
IHRvIHRyYWNrIGludGVybmFsCisgIC8vIHN0YXRlIHRoYXQgY2FuIGNhdXNlIGV4dHJhIGNhbGxz
IHRvIGhhc2guCisgIGludCBjb252ZXJzaW9ucyA9IDA7CisgIGludCBoYXNoZXMgPSAwOworICBm
bGF0X2hhc2hfbWFwPHNpemVfdCwgc2l6ZV90LCBIYXNoLCBFcT4gbSgwLCBIYXNoeyZoYXNoZXN9
KTsKKworICBtW0xhenlJbnQoMSwgJmNvbnZlcnNpb25zKV0gPSAxOworICBFWFBFQ1RfVEhBVCht
LCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKDEsIDEpKSk7CisgIEVYUEVDVF9FUShjb252ZXJz
aW9ucywgMSk7CisjaWZkZWYgTkRFQlVHCisgIEVYUEVDVF9FUShoYXNoZXMsIDEpOworI2VuZGlm
CisKKyAgbVtMYXp5SW50KDEsICZjb252ZXJzaW9ucyldID0gMjsKKyAgRVhQRUNUX1RIQVQobSwg
VW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigxLCAyKSkpOworICBFWFBFQ1RfRVEoY29udmVyc2lv
bnMsIDEpOworI2lmZGVmIE5ERUJVRworICBFWFBFQ1RfRVEoaGFzaGVzLCAyKTsKKyNlbmRpZgor
CisgIG0udHJ5X2VtcGxhY2UoTGF6eUludCgyLCAmY29udmVyc2lvbnMpLCAzKTsKKyAgRVhQRUNU
X1RIQVQobSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigxLCAyKSwgUGFpcigyLCAzKSkpOwor
ICBFWFBFQ1RfRVEoY29udmVyc2lvbnMsIDIpOworI2lmZGVmIE5ERUJVRworICBFWFBFQ1RfRVEo
aGFzaGVzLCAzKTsKKyNlbmRpZgorCisgIG0udHJ5X2VtcGxhY2UoTGF6eUludCgyLCAmY29udmVy
c2lvbnMpLCA0KTsKKyAgRVhQRUNUX1RIQVQobSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigx
LCAyKSwgUGFpcigyLCAzKSkpOworICBFWFBFQ1RfRVEoY29udmVyc2lvbnMsIDIpOworI2lmZGVm
IE5ERUJVRworICBFWFBFQ1RfRVEoaGFzaGVzLCA0KTsKKyNlbmRpZgorfQorCitURVNUKEZsYXRI
YXNoTWFwLCBCaXRmaWVsZEFyZ3VtZW50KSB7CisgIHVuaW9uIHsKKyAgICBpbnQgbiA6IDE7Cisg
IH07CisgIG4gPSAwOworICBmbGF0X2hhc2hfbWFwPGludCwgaW50PiBtOworICBtLmVyYXNlKG4p
OworICBtLmNvdW50KG4pOworICBtLnByZWZldGNoKG4pOworICBtLmZpbmQobik7CisgIG0uY29u
dGFpbnMobik7CisgIG0uZXF1YWxfcmFuZ2Uobik7CisgIG0uaW5zZXJ0X29yX2Fzc2lnbihuLCBu
KTsKKyAgbS5pbnNlcnRfb3JfYXNzaWduKG0uZW5kKCksIG4sIG4pOworICBtLnRyeV9lbXBsYWNl
KG4pOworICBtLnRyeV9lbXBsYWNlKG0uZW5kKCksIG4pOworICBtLmF0KG4pOworICBtW25dOwor
fQorCitURVNUKEZsYXRIYXNoTWFwLCBNZXJnZUV4dHJhY3RJbnNlcnQpIHsKKyAgLy8gV2UgY2Fu
J3QgdGVzdCBtdXRhYmxlIGtleXMsIG9yIG5vbi1jb3B5YWJsZSBrZXlzIHdpdGggZmxhdF9oYXNo
X21hcC4KKyAgLy8gVGVzdCB0aGF0IHRoZSBub2RlcyBoYXZlIHRoZSBwcm9wZXIgQVBJLgorICBh
YnNsOjpmbGF0X2hhc2hfbWFwPGludCwgaW50PiBtID0ge3sxLCA3fSwgezIsIDl9fTsKKyAgYXV0
byBub2RlID0gbS5leHRyYWN0KDEpOworICBFWFBFQ1RfVFJVRShub2RlKTsKKyAgRVhQRUNUX0VR
KG5vZGUua2V5KCksIDEpOworICBFWFBFQ1RfRVEobm9kZS5tYXBwZWQoKSwgNyk7CisgIEVYUEVD
VF9USEFUKG0sIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoMiwgOSkpKTsKKworICBub2RlLm1h
cHBlZCgpID0gMTc7CisgIG0uaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7CisgIEVYUEVDVF9USEFU
KG0sIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoMSwgMTcpLCBQYWlyKDIsIDkpKSk7Cit9Cisj
aWYgIWRlZmluZWQoX19BTkRST0lEX18pICYmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmlu
ZWQoX19FTVNDUklQVEVOX18pCitURVNUKEZsYXRIYXNoTWFwLCBBbnkpIHsKKyAgYWJzbDo6Zmxh
dF9oYXNoX21hcDxpbnQsIGFic2w6OmFueT4gbTsKKyAgbS5lbXBsYWNlKDEsIDcpOworICBhdXRv
IGl0ID0gbS5maW5kKDEpOworICBBU1NFUlRfTkUoaXQsIG0uZW5kKCkpOworICBFWFBFQ1RfRVEo
NywgYWJzbDo6YW55X2Nhc3Q8aW50PihpdC0+c2Vjb25kKSk7CisKKyAgbS5lbXBsYWNlKHN0ZDo6
cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjptYWtlX3R1cGxlKDIpLCBzdGQ6Om1ha2VfdHVwbGUo
OCkpOworICBpdCA9IG0uZmluZCgyKTsKKyAgQVNTRVJUX05FKGl0LCBtLmVuZCgpKTsKKyAgRVhQ
RUNUX0VRKDgsIGFic2w6OmFueV9jYXN0PGludD4oaXQtPnNlY29uZCkpOworCisgIG0uZW1wbGFj
ZShzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6bWFrZV90dXBsZSgzKSwKKyAgICAgICAg
ICAgIHN0ZDo6bWFrZV90dXBsZShhYnNsOjphbnkoOSkpKTsKKyAgaXQgPSBtLmZpbmQoMyk7Cisg
IEFTU0VSVF9ORShpdCwgbS5lbmQoKSk7CisgIEVYUEVDVF9FUSg5LCBhYnNsOjphbnlfY2FzdDxp
bnQ+KGl0LT5zZWNvbmQpKTsKKworICBzdHJ1Y3QgSCB7CisgICAgc2l6ZV90IG9wZXJhdG9yKCko
Y29uc3QgYWJzbDo6YW55JikgY29uc3QgeyByZXR1cm4gMDsgfQorICB9OworICBzdHJ1Y3QgRSB7
CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IGFic2w6OmFueSYsIGNvbnN0IGFic2w6OmFueSYp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgfTsKKyAgYWJzbDo6ZmxhdF9oYXNoX21hcDxhYnNs
OjphbnksIGludCwgSCwgRT4gbTI7CisgIG0yLmVtcGxhY2UoMSwgNyk7CisgIGF1dG8gaXQyID0g
bTIuZmluZCgxKTsKKyAgQVNTRVJUX05FKGl0MiwgbTIuZW5kKCkpOworICBFWFBFQ1RfRVEoNywg
aXQyLT5zZWNvbmQpOworfQorI2VuZGlmICAvLyBfX0FORFJPSURfXworCit9ICAvLyBuYW1lc3Bh
Y2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ZsYXRfaGFzaF9zZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGFlYWQxYThhZTIwOWUyYTQ1
YTk1NjE2N2JlOTVlNzI3MGM1NDRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ZsYXRfaGFzaF9zZXQuaApAQCAtMCwwICsxLDQzOSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTog
ZmxhdF9oYXNoX3NldC5oCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEFuIGBhYnNs
OjpmbGF0X2hhc2hfc2V0PFQ+YCBpcyBhbiB1bm9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVy
IGRlc2lnbmVkIHRvCisvLyBiZSBhIG1vcmUgZWZmaWNpZW50IHJlcGxhY2VtZW50IGZvciBgc3Rk
Ojp1bm9yZGVyZWRfc2V0YC4gTGlrZQorLy8gYHVub3JkZXJlZF9zZXRgLCBzZWFyY2gsIGluc2Vy
dGlvbiwgYW5kIGRlbGV0aW9uIG9mIHNldCBlbGVtZW50cyBjYW4gYmUgZG9uZQorLy8gYXMgYW4g
YE8oMSlgIG9wZXJhdGlvbi4gSG93ZXZlciwgYGZsYXRfaGFzaF9zZXRgIChhbmQgb3RoZXIgdW5v
cmRlcmVkCisvLyBhc3NvY2lhdGl2ZSBjb250YWluZXJzIGtub3duIGFzIHRoZSBjb2xsZWN0aW9u
IG9mIEFic2VpbCAiU3dpc3MgdGFibGVzIikKKy8vIGNvbnRhaW4gb3RoZXIgb3B0aW1pemF0aW9u
cyB0aGF0IHJlc3VsdCBpbiBib3RoIG1lbW9yeSBhbmQgY29tcHV0YXRpb24KKy8vIGFkdmFudGFn
ZXMuCisvLworLy8gSW4gbW9zdCBjYXNlcywgeW91ciBkZWZhdWx0IGNob2ljZSBmb3IgYSBoYXNo
IHNldCBzaG91bGQgYmUgYSBzZXQgb2YgdHlwZQorLy8gYGZsYXRfaGFzaF9zZXRgLgorI2lmbmRl
ZiBBQlNMX0NPTlRBSU5FUl9GTEFUX0hBU0hfU0VUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVS
X0ZMQVRfSEFTSF9TRVRfSF8KKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0
aWxpdHk+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvY29u
dGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMuaCIgIC8vIElXWVUgcHJhZ21h
OiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQu
aCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnku
aCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBGbGF0SGFzaFNldFBvbGljeTsKK30gIC8vIG5h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IGFic2w6OmZsYXRfaGFzaF9zZXQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQW4g
YGFic2w6OmZsYXRfaGFzaF9zZXQ8VD5gIGlzIGFuIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250
YWluZXIgd2hpY2ggaGFzCisvLyBiZWVuIG9wdGltaXplZCBmb3IgYm90aCBzcGVlZCBhbmQgbWVt
b3J5IGZvb3RwcmludCBpbiBtb3N0IGNvbW1vbiB1c2UgY2FzZXMuCisvLyBJdHMgaW50ZXJmYWNl
IGlzIHNpbWlsYXIgdG8gdGhhdCBvZiBgc3RkOjp1bm9yZGVyZWRfc2V0PFQ+YCB3aXRoIHRoZQor
Ly8gZm9sbG93aW5nIG5vdGFibGUgZGlmZmVyZW5jZXM6CisvLworLy8gKiBSZXF1aXJlcyBrZXlz
IHRoYXQgYXJlIENvcHlDb25zdHJ1Y3RpYmxlCisvLyAqIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMg
bG9va3VwLCB0aHJvdWdoIGBmaW5kKClgLCBgb3BlcmF0b3JbXSgpYCBhbmQKKy8vICAgYGluc2Vy
dCgpYCwgcHJvdmlkZWQgdGhhdCB0aGUgc2V0IGlzIHByb3ZpZGVkIGEgY29tcGF0aWJsZSBoZXRl
cm9nZW5lb3VzCisvLyAgIGhhc2hpbmcgZnVuY3Rpb24gYW5kIGVxdWFsaXR5IG9wZXJhdG9yLgor
Ly8gKiBJbnZhbGlkYXRlcyBhbnkgcmVmZXJlbmNlcyBhbmQgcG9pbnRlcnMgdG8gZWxlbWVudHMg
d2l0aGluIHRoZSB0YWJsZSBhZnRlcgorLy8gICBgcmVoYXNoKClgLgorLy8gKiBDb250YWlucyBh
IGBjYXBhY2l0eSgpYCBtZW1iZXIgZnVuY3Rpb24gaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIGVs
ZW1lbnQKKy8vICAgc2xvdHMgKG9wZW4sIGRlbGV0ZWQsIGFuZCBlbXB0eSkgd2l0aGluIHRoZSBo
YXNoIHNldC4KKy8vICogUmV0dXJucyBgdm9pZGAgZnJvbSB0aGUgYGVyYXNlKGl0ZXJhdG9yKWAg
b3ZlcmxvYWQuCisvLworLy8gQnkgZGVmYXVsdCwgYGZsYXRfaGFzaF9zZXRgIHVzZXMgdGhlIGBh
YnNsOjpIYXNoYCBoYXNoaW5nIGZyYW1ld29yay4gQWxsCisvLyBmdW5kYW1lbnRhbCBhbmQgQWJz
ZWlsIHR5cGVzIHRoYXQgc3VwcG9ydCB0aGUgYGFic2w6Okhhc2hgIGZyYW1ld29yayBoYXZlIGEK
Ky8vIGNvbXBhdGlibGUgZXF1YWxpdHkgb3BlcmF0b3IgZm9yIGNvbXBhcmluZyBpbnNlcnRpb25z
IGludG8gYGZsYXRfaGFzaF9tYXBgLgorLy8gSWYgeW91ciB0eXBlIGlzIG5vdCB5ZXQgc3VwcG9y
dGVkIGJ5IHRoZSBgYXNibDo6SGFzaGAgZnJhbWV3b3JrLCBzZWUKKy8vIGFic2wvaGFzaC9oYXNo
LmggZm9yIGluZm9ybWF0aW9uIG9uIGV4dGVuZGluZyBBYnNlaWwgaGFzaGluZyB0byB1c2VyLWRl
ZmluZWQKKy8vIHR5cGVzLgorLy8KKy8vIE5PVEU6IEEgYGZsYXRfaGFzaF9zZXRgIHN0b3JlcyBp
dHMga2V5cyBkaXJlY3RseSBpbnNpZGUgaXRzIGltcGxlbWVudGF0aW9uCisvLyBhcnJheSB0byBh
dm9pZCBtZW1vcnkgaW5kaXJlY3Rpb24uIEJlY2F1c2UgYSBgZmxhdF9oYXNoX3NldGAgaXMgZGVz
aWduZWQgdG8KKy8vIG1vdmUgZGF0YSB3aGVuIHJlaGFzaGVkLCBzZXQga2V5cyB3aWxsIG5vdCBy
ZXRhaW4gcG9pbnRlciBzdGFiaWxpdHkuIElmIHlvdQorLy8gcmVxdWlyZSBwb2ludGVyIHN0YWJp
bGl0eSwgY29uc2lkZXIgdXNpbmcKKy8vIGBhYnNsOjpmbGF0X2hhc2hfc2V0PHN0ZDo6dW5pcXVl
X3B0cjxUPj5gLiBJZiB5b3VyIHR5cGUgaXMgbm90IG1vdmVhYmxlIGFuZAorLy8geW91IHJlcXVp
cmUgcG9pbnRlciBzdGFiaWxpdHksIGNvbnNpZGVyIGBhYnNsOjpub2RlX2hhc2hfc2V0YCBpbnN0
ZWFkLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICAvLyBDcmVhdGUgYSBmbGF0IGhhc2ggc2V0
IG9mIHRocmVlIHN0cmluZ3MKKy8vICAgYWJzbDo6ZmxhdF9oYXNoX3NldDxzdGQ6OnN0cmluZz4g
ZHVja3MgPQorLy8gICAgIHsiaHVleSIsICJkZXdleSIsICJsb3VpZSJ9OworLy8KKy8vICAvLyBJ
bnNlcnQgYSBuZXcgZWxlbWVudCBpbnRvIHRoZSBmbGF0IGhhc2ggc2V0CisvLyAgZHVja3MuaW5z
ZXJ0KCJkb25hbGQifTsKKy8vCisvLyAgLy8gRm9yY2UgYSByZWhhc2ggb2YgdGhlIGZsYXQgaGFz
aCBzZXQKKy8vICBkdWNrcy5yZWhhc2goMCk7CisvLworLy8gIC8vIFNlZSBpZiAiZGV3ZXkiIGlz
IHByZXNlbnQKKy8vICBpZiAoZHVja3MuY29udGFpbnMoImRld2V5IikpIHsKKy8vICAgIHN0ZDo6
Y291dCA8PCAiV2UgZm91bmQgZGV3ZXkhIiA8PCBzdGQ6OmVuZGw7CisvLyAgfQordGVtcGxhdGUg
PGNsYXNzIFQsIGNsYXNzIEhhc2ggPSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfZGVm
YXVsdF9oYXNoPFQ+LAorICAgICAgICAgIGNsYXNzIEVxID0gYWJzbDo6Y29udGFpbmVyX2ludGVy
bmFsOjpoYXNoX2RlZmF1bHRfZXE8VD4sCisgICAgICAgICAgY2xhc3MgQWxsb2NhdG9yID0gc3Rk
OjphbGxvY2F0b3I8VD4+CitjbGFzcyBmbGF0X2hhc2hfc2V0CisgICAgOiBwdWJsaWMgYWJzbDo6
Y29udGFpbmVyX2ludGVybmFsOjpyYXdfaGFzaF9zZXQ8CisgICAgICAgICAgYWJzbDo6Y29udGFp
bmVyX2ludGVybmFsOjpGbGF0SGFzaFNldFBvbGljeTxUPiwgSGFzaCwgRXEsIEFsbG9jYXRvcj4g
eworICB1c2luZyBCYXNlID0gdHlwZW5hbWUgZmxhdF9oYXNoX3NldDo6cmF3X2hhc2hfc2V0Owor
CisgcHVibGljOgorICBmbGF0X2hhc2hfc2V0KCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKKwor
ICAvLyBmbGF0X2hhc2hfc2V0OjpiZWdpbigpCisgIC8vCisgIC8vIFJldHVybnMgYW4gaXRlcmF0
b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYGZsYXRfaGFzaF9zZXRgLgorICB1c2luZyBCYXNl
OjpiZWdpbjsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpjYmVnaW4oKQorICAvLworICAvLyBSZXR1
cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYGZsYXRfaGFzaF9z
ZXRgLgorICB1c2luZyBCYXNlOjpjYmVnaW47CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6Y2VuZCgp
CisgIC8vCisgIC8vIFJldHVybnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBg
ZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmNlbmQ7CisKKyAgLy8gZmxhdF9oYXNoX3Nl
dDo6ZW5kKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRo
ZSBgZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmVuZDsKKworICAvLyBmbGF0X2hhc2hf
c2V0OjpjYXBhY2l0eSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50
IHNsb3RzIChhc3NpZ25lZCwgZGVsZXRlZCwgYW5kIGVtcHR5KQorICAvLyBhdmFpbGFibGUgd2l0
aGluIHRoZSBgZmxhdF9oYXNoX3NldGAuCisgIC8vCisgIC8vIE5PVEU6IHRoaXMgbWVtYmVyIGZ1
bmN0aW9uIGlzIHBhcnRpY3VsYXIgdG8gYGFic2w6OmZsYXRfaGFzaF9zZXRgIGFuZCBpcworICAv
LyBub3QgcHJvdmlkZWQgaW4gdGhlIGBzdGQ6OnVub3JkZXJlZF9tYXBgIEFQSS4KKyAgdXNpbmcg
QmFzZTo6Y2FwYWNpdHk7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6ZW1wdHkoKQorICAvLworICAv
LyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBgZmxhdF9oYXNoX3NldGAgaXMgZW1wdHkuCisg
IHVzaW5nIEJhc2U6OmVtcHR5OworCisgIC8vIGZsYXRfaGFzaF9zZXQ6Om1heF9zaXplKCkKKyAg
Ly8KKyAgLy8gUmV0dXJucyB0aGUgbGFyZ2VzdCB0aGVvcmV0aWNhbCBwb3NzaWJsZSBudW1iZXIg
b2YgZWxlbWVudHMgd2l0aGluIGEKKyAgLy8gYGZsYXRfaGFzaF9zZXRgIHVuZGVyIGN1cnJlbnQg
bWVtb3J5IGNvbnN0cmFpbnRzLiBUaGlzIHZhbHVlIGNhbiBiZSB0aG91Z2h0CisgIC8vIG9mIHRo
ZSBsYXJnZXN0IHZhbHVlIG9mIGBzdGQ6OmRpc3RhbmNlKGJlZ2luKCksIGVuZCgpKWAgZm9yIGEK
KyAgLy8gYGZsYXRfaGFzaF9zZXQ8VD5gLgorICB1c2luZyBCYXNlOjptYXhfc2l6ZTsKKworICAv
LyBmbGF0X2hhc2hfc2V0OjpzaXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9m
IGVsZW1lbnRzIGN1cnJlbnRseSB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfc2V0YC4KKyAgdXNpbmcg
QmFzZTo6c2l6ZTsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpjbGVhcigpCisgIC8vCisgIC8vIFJl
bW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGBmbGF0X2hhc2hfc2V0YC4gSW52YWxpZGF0ZXMg
YW55IHJlZmVyZW5jZXMsCisgIC8vIHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgcmVmZXJyaW5nIHRv
IGNvbnRhaW5lZCBlbGVtZW50cy4KKyAgLy8KKyAgLy8gTk9URTogdGhpcyBvcGVyYXRpb24gbWF5
IHNocmluayB0aGUgdW5kZXJseWluZyBidWZmZXIuIFRvIGF2b2lkIHNocmlua2luZworICAvLyB0
aGUgdW5kZXJseWluZyBidWZmZXIgY2FsbCBgZXJhc2UoYmVnaW4oKSwgZW5kKCkpYC4KKyAgdXNp
bmcgQmFzZTo6Y2xlYXI7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6ZXJhc2UoKQorICAvLworICAv
LyBFcmFzZXMgZWxlbWVudHMgd2l0aGluIHRoZSBgZmxhdF9oYXNoX3NldGAuIEVyYXNpbmcgZG9l
cyBub3QgdHJpZ2dlciBhCisgIC8vIHJlaGFzaC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cu
CisgIC8vCisgIC8vIHZvaWQgZXJhc2UoY29uc3RfaXRlcmF0b3IgcG9zKToKKyAgLy8KKyAgLy8g
ICBFcmFzZXMgdGhlIGVsZW1lbnQgYXQgYHBvc2l0aW9uYCBvZiB0aGUgYGZsYXRfaGFzaF9zZXRg
LCByZXR1cm5pbmcKKyAgLy8gICBgdm9pZGAuCisgIC8vCisgIC8vICAgTk9URTogdGhpcyByZXR1
cm4gYmVoYXZpb3IgaXMgZGlmZmVyZW50IHRoYW4gdGhhdCBvZiBTVEwgY29udGFpbmVycyBpbgor
ICAvLyAgIGdlbmVyYWwgYW5kIGBzdGQ6OnVub3JkZXJlZF9tYXBgIGluIHBhcnRpY3VsYXIuCisg
IC8vCisgIC8vIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVy
YXRvciBsYXN0KToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnRzIGluIHRoZSBvcGVu
IGludGVydmFsIFtgZmlyc3RgLCBgbGFzdGApLCByZXR1cm5pbmcgYW4KKyAgLy8gICBpdGVyYXRv
ciBwb2ludGluZyB0byBgbGFzdGAuCisgIC8vCisgIC8vIHNpemVfdHlwZSBlcmFzZShjb25zdCBr
ZXlfdHlwZSYga2V5KToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnQgd2l0aCB0aGUg
bWF0Y2hpbmcga2V5LCBpZiBpdCBleGlzdHMuCisgIHVzaW5nIEJhc2U6OmVyYXNlOworCisgIC8v
IGZsYXRfaGFzaF9zZXQ6Omluc2VydCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBv
ZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGludG8gdGhlIGBmbGF0X2hhc2hfc2V0YCwKKyAgLy8gcmV0
dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50
LCBwcm92aWRlZCB0aGF0CisgIC8vIGFuIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGRvZXMg
bm90IGFscmVhZHkgZXhpc3QuIElmIHJlaGFzaGluZyBvY2N1cnMKKyAgLy8gZHVlIHRvIHRoZSBp
bnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLiBPdmVybG9hZHMgYXJlIGxp
c3RlZAorICAvLyBiZWxvdy4KKyAgLy8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9yLGJvb2w+IGlu
c2VydChjb25zdCBUJiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHZhbHVlIGludG8g
dGhlIGBmbGF0X2hhc2hfc2V0YC4gUmV0dXJucyBhIHBhaXIgY29uc2lzdGluZyBvZiBhbgorICAv
LyAgIGl0ZXJhdG9yIHRvIHRoZSBpbnNlcnRlZCBlbGVtZW50IChvciB0byB0aGUgZWxlbWVudCB0
aGF0IHByZXZlbnRlZCB0aGUKKyAgLy8gICBpbnNlcnRpb24pIGFuZCBhIGJvb2wgZGVub3Rpbmcg
d2hldGhlciB0aGUgaW5zZXJ0aW9uIHRvb2sgcGxhY2UuCisgIC8vCisgIC8vIHN0ZDo6cGFpcjxp
dGVyYXRvcixib29sPiBpbnNlcnQoVCYmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEg
bW92ZWFibGUgdmFsdWUgaW50byB0aGUgYGZsYXRfaGFzaF9zZXRgLiBSZXR1cm5zIGEgcGFpcgor
ICAvLyAgIGNvbnNpc3Rpbmcgb2YgYW4gaXRlcmF0b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQg
KG9yIHRvIHRoZSBlbGVtZW50IHRoYXQKKyAgLy8gICBwcmV2ZW50ZWQgdGhlIGluc2VydGlvbikg
YW5kIGEgYm9vbCBkZW5vdGluZyB3aGV0aGVyIHRoZSBpbnNlcnRpb24gdG9vaworICAvLyAgIHBs
YWNlLgorICAvLworICAvLyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgY29u
c3QgVCYgdmFsdWUpOgorICAvLyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwg
VCYmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUsIHVzaW5nIHRoZSBwb3Np
dGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZyBzdWdnZXN0aW9uCisgIC8vICAgZm9yIHdo
ZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLiBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRv
IHRoZQorICAvLyAgIGluc2VydGVkIGVsZW1lbnQsIG9yIHRvIHRoZSBleGlzdGluZyBlbGVtZW50
IHRoYXQgcHJldmVudGVkIHRoZQorICAvLyAgIGluc2VydGlvbi4KKyAgLy8KKyAgLy8gdm9pZCBp
bnNlcnQoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KToKKyAgLy8KKyAg
Ly8gICBJbnNlcnRzIGEgcmFuZ2Ugb2YgdmFsdWVzIFtgZmlyc3RgLCBgbGFzdGApLgorICAvLwor
ICAvLyAgIE5PVEU6IEFsdGhvdWdoIHRoZSBTVEwgZG9lcyBub3Qgc3BlY2lmeSB3aGljaCBlbGVt
ZW50IG1heSBiZSBpbnNlcnRlZCBpZgorICAvLyAgIG11bHRpcGxlIGtleXMgY29tcGFyZSBlcXVp
dmFsZW50bHksIGZvciBgZmxhdF9oYXNoX3NldGAgd2UgZ3VhcmFudGVlIHRoZQorICAvLyAgIGZp
cnN0IG1hdGNoIGlzIGluc2VydGVkLgorICAvLworICAvLyB2b2lkIGluc2VydChzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8VD4gaWxpc3QpOgorICAvLworICAvLyAgIEluc2VydHMgdGhlIGVsZW1lbnRz
IHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBgaWxpc3RgLgorICAvLworICAvLyAgIE5PVEU6
IEFsdGhvdWdoIHRoZSBTVEwgZG9lcyBub3Qgc3BlY2lmeSB3aGljaCBlbGVtZW50IG1heSBiZSBp
bnNlcnRlZCBpZgorICAvLyAgIG11bHRpcGxlIGtleXMgY29tcGFyZSBlcXVpdmFsZW50bHkgd2l0
aGluIHRoZSBpbml0aWFsaXplciBsaXN0LCBmb3IKKyAgLy8gICBgZmxhdF9oYXNoX3NldGAgd2Ug
Z3VhcmFudGVlIHRoZSBmaXJzdCBtYXRjaCBpcyBpbnNlcnRlZC4KKyAgdXNpbmcgQmFzZTo6aW5z
ZXJ0OworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmVtcGxhY2UoKQorICAvLworICAvLyBJbnNlcnRz
IGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4t
cGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgZmxhdF9oYXNoX3NldGAsIHByb3ZpZGVkIHRoYXQgbm8g
ZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkKKyAgLy8gYWxyZWFkeSBleGlzdHMuCisgIC8vCisg
IC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkg
aXMgYW4gZWxlbWVudCB3aXRoIHRoZQorICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hp
Y2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8vIGRlc3Ry
b3llZCBpbW1lZGlhdGVseS4gUHJlZmVyIGB0cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkg
aXMgbm90CisgIC8vIGNvcHlhYmxlIG9yIG1vdmVhYmxlLgorICAvLworICAvLyBJZiByZWhhc2hp
bmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlk
YXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZTsKKworICAvLyBmbGF0X2hhc2hfc2V0OjplbXBs
YWNlX2hpbnQoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmll
ZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4tcGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgZmxh
dF9oYXNoX3NldGAsIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGlu
ZworICAvLyBzdWdnZXN0aW9uIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJj
aCwgYW5kIG9ubHkgaW5zZXJ0cworICAvLyBwcm92aWRlZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0
aGUgZ2l2ZW4ga2V5IGFscmVhZHkgZXhpc3RzLgorICAvLworICAvLyBUaGUgZWxlbWVudCBtYXkg
YmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0
aGUKKyAgLy8ga2V5IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNv
bnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQorICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuIFBy
ZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlvdXIga2V5IGlzIG5vdAorICAvLyBjb3B5YWJs
ZSBvciBtb3ZlYWJsZS4KKyAgLy8KKyAgLy8gSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUgdG8gdGhl
IGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIHVzaW5nIEJhc2U6
OmVtcGxhY2VfaGludDsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpleHRyYWN0KCkKKyAgLy8KKyAg
Ly8gRXh0cmFjdHMgdGhlIGluZGljYXRlZCBlbGVtZW50LCBlcmFzaW5nIGl0IGluIHRoZSBwcm9j
ZXNzLCBhbmQgcmV0dXJucyBpdAorICAvLyBhcyBhIEMrKzE3LWNvbXBhdGlibGUgbm9kZSBoYW5k
bGUuIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyBub2RlX3R5cGUgZXh0
cmFjdChjb25zdF9pdGVyYXRvciBwb3NpdGlvbik6CisgIC8vCisgIC8vICAgRXh0cmFjdHMgdGhl
IGVsZW1lbnQgYXQgdGhlIGluZGljYXRlZCBwb3NpdGlvbiBhbmQgcmV0dXJucyBhIG5vZGUgaGFu
ZGxlCisgIC8vICAgb3duaW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEuCisgIC8vCisgIC8vIG5vZGVf
dHlwZSBleHRyYWN0KGNvbnN0IGtleV90eXBlJiB4KToKKyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0
aGUgZWxlbWVudCB3aXRoIHRoZSBrZXkgbWF0Y2hpbmcgdGhlIHBhc3NlZCBrZXkgdmFsdWUgYW5k
CisgIC8vICAgcmV0dXJucyBhIG5vZGUgaGFuZGxlIG93bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRh
LiBJZiB0aGUgYGZsYXRfaGFzaF9zZXRgCisgIC8vICAgZG9lcyBub3QgY29udGFpbiBhbiBlbGVt
ZW50IHdpdGggYSBtYXRjaGluZyBrZXksIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbgorICAvLyAg
IGVtcHR5IG5vZGUgaGFuZGxlLgorICB1c2luZyBCYXNlOjpleHRyYWN0OworCisgIC8vIGZsYXRf
aGFzaF9zZXQ6Om1lcmdlKCkKKyAgLy8KKyAgLy8gRXh0cmFjdHMgZWxlbWVudHMgZnJvbSBhIGdp
dmVuIGBzb3VyY2VgIGZsYXQgaGFzaCBtYXAgaW50byB0aGlzCisgIC8vIGBmbGF0X2hhc2hfc2V0
YC4gSWYgdGhlIGRlc3RpbmF0aW9uIGBmbGF0X2hhc2hfc2V0YCBhbHJlYWR5IGNvbnRhaW5zIGFu
CisgIC8vIGVsZW1lbnQgd2l0aCBhbiBlcXVpdmFsZW50IGtleSwgdGhhdCBlbGVtZW50IGlzIG5v
dCBleHRyYWN0ZWQuCisgIHVzaW5nIEJhc2U6Om1lcmdlOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6
OnN3YXAoZmxhdF9oYXNoX3NldCYgb3RoZXIpCisgIC8vCisgIC8vIEV4Y2hhbmdlcyB0aGUgY29u
dGVudHMgb2YgdGhpcyBgZmxhdF9oYXNoX3NldGAgd2l0aCB0aG9zZSBvZiB0aGUgYG90aGVyYAor
ICAvLyBmbGF0IGhhc2ggbWFwLCBhdm9pZGluZyBpbnZvY2F0aW9uIG9mIGFueSBtb3ZlLCBjb3B5
LCBvciBzd2FwIG9wZXJhdGlvbnMgb24KKyAgLy8gaW5kaXZpZHVhbCBlbGVtZW50cy4KKyAgLy8K
KyAgLy8gQWxsIGl0ZXJhdG9ycyBhbmQgcmVmZXJlbmNlcyBvbiB0aGUgYGZsYXRfaGFzaF9zZXRg
IHJlbWFpbiB2YWxpZCwgZXhjZXB0aW5nCisgIC8vIGZvciB0aGUgcGFzdC10aGUtZW5kIGl0ZXJh
dG9yLCB3aGljaCBpcyBpbnZhbGlkYXRlZC4KKyAgLy8KKyAgLy8gYHN3YXAoKWAgcmVxdWlyZXMg
dGhhdCB0aGUgZmxhdCBoYXNoIHNldCdzIGhhc2hpbmcgYW5kIGtleSBlcXVpdmFsZW5jZQorICAv
LyBmdW5jdGlvbnMgYmUgU3dhcHBhYmxlLCBhbmQgYXJlIGV4Y2hhZ2VkIHVzaW5nIHVucXVhbGlm
aWVkIGNhbGxzIHRvCisgIC8vIG5vbi1tZW1iZXIgYHN3YXAoKWAuIElmIHRoZSBtYXAncyBhbGxv
Y2F0b3IgaGFzCisgIC8vIGBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yX3R5cGU+Ojpw
cm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA6OnZhbHVlYAorICAvLyBzZXQgdG8gYHRydWVgLCB0
aGUgYWxsb2NhdG9ycyBhcmUgYWxzbyBleGNoYW5nZWQgdXNpbmcgYW4gdW5xdWFsaWZpZWQgY2Fs
bAorICAvLyB0byBub24tbWVtYmVyIGBzd2FwKClgOyBvdGhlcndpc2UsIHRoZSBhbGxvY2F0b3Jz
IGFyZSBub3Qgc3dhcHBlZC4KKyAgdXNpbmcgQmFzZTo6c3dhcDsKKworICAvLyBmbGF0X2hhc2hf
c2V0OjpyZWhhc2goY291bnQpCisgIC8vCisgIC8vIFJlaGFzaGVzIHRoZSBgZmxhdF9oYXNoX3Nl
dGAsIHNldHRpbmcgdGhlIG51bWJlciBvZiBzbG90cyB0byBiZSBhdCBsZWFzdAorICAvLyB0aGUg
cGFzc2VkIHZhbHVlLiBJZiB0aGUgbmV3IG51bWJlciBvZiBzbG90cyBpbmNyZWFzZXMgdGhlIGxv
YWQgZmFjdG9yIG1vcmUKKyAgLy8gdGhhbiB0aGUgY3VycmVudCBtYXhpbXVtIGxvYWQgZmFjdG9y
CisgIC8vIChgY291bnRgIDwgYHNpemUoKWAgLyBgbWF4X2xvYWRfZmFjdG9yKClgKSwgdGhlbiB0
aGUgbmV3IG51bWJlciBvZiBzbG90cworICAvLyB3aWxsIGJlIGF0IGxlYXN0IGBzaXplKClgIC8g
YG1heF9sb2FkX2ZhY3RvcigpYC4KKyAgLy8KKyAgLy8gVG8gZm9yY2UgYSByZWhhc2gsIHBhc3Mg
cmVoYXNoKDApLgorICAvLworICAvLyBOT1RFOiB1bmxpa2UgYmVoYXZpb3IgaW4gYHN0ZDo6dW5v
cmRlcmVkX3NldGAsIHJlZmVyZW5jZXMgYXJlIGFsc28KKyAgLy8gaW52YWxpZGF0ZWQgdXBvbiBh
IGByZWhhc2goKWAuCisgIHVzaW5nIEJhc2U6OnJlaGFzaDsKKworICAvLyBmbGF0X2hhc2hfc2V0
OjpyZXNlcnZlKGNvdW50KQorICAvLworICAvLyBTZXRzIHRoZSBudW1iZXIgb2Ygc2xvdHMgaW4g
dGhlIGBmbGF0X2hhc2hfc2V0YCB0byB0aGUgbnVtYmVyIG5lZWRlZCB0bworICAvLyBhY2NvbW1v
ZGF0ZSBhdCBsZWFzdCBgY291bnRgIHRvdGFsIGVsZW1lbnRzIHdpdGhvdXQgZXhjZWVkaW5nIHRo
ZSBjdXJyZW50CisgIC8vIG1heGltdW0gbG9hZCBmYWN0b3IsIGFuZCBtYXkgcmVoYXNoIHRoZSBj
b250YWluZXIgaWYgbmVlZGVkLgorICB1c2luZyBCYXNlOjpyZXNlcnZlOworCisgIC8vIGZsYXRf
aGFzaF9zZXQ6OmNvbnRhaW5zKCkKKyAgLy8KKyAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGVs
ZW1lbnQgY29tcGFyaW5nIGVxdWFsIHRvIHRoZSBnaXZlbiBga2V5YCBleGlzdHMKKyAgLy8gd2l0
aGluIHRoZSBgZmxhdF9oYXNoX3NldGAsIHJldHVybmluZyBgdHJ1ZWAgaWYgc28gb3IgYGZhbHNl
YCBvdGhlcndpc2UuCisgIHVzaW5nIEJhc2U6OmNvbnRhaW5zOworCisgIC8vIGZsYXRfaGFzaF9z
ZXQ6OmNvdW50KGNvbnN0IEtleSYga2V5KSBjb25zdAorICAvLworICAvLyBSZXR1cm5zIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMgY29tcGFyaW5nIGVxdWFsIHRvIHRoZSBnaXZlbiBga2V5YCB3aXRo
aW4KKyAgLy8gdGhlIGBmbGF0X2hhc2hfc2V0YC4gbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2ls
bCByZXR1cm4gZWl0aGVyIGAxYCBvciBgMGAKKyAgLy8gc2luY2UgZHVwbGljYXRlIGVsZW1lbnRz
IGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gYSBgZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6
OmNvdW50OworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmVxdWFsX3JhbmdlKCkKKyAgLy8KKyAgLy8g
UmV0dXJucyBhIGNsb3NlZCByYW5nZSBbZmlyc3QsIGxhc3RdLCBkZWZpbmVkIGJ5IGEgYHN0ZDo6
cGFpcmAgb2YgdHdvCisgIC8vIGl0ZXJhdG9ycywgY29udGFpbmluZyBhbGwgZWxlbWVudHMgd2l0
aCB0aGUgcGFzc2VkIGtleSBpbiB0aGUKKyAgLy8gYGZsYXRfaGFzaF9zZXRgLgorICB1c2luZyBC
YXNlOjplcXVhbF9yYW5nZTsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpmaW5kKCkKKyAgLy8KKyAg
Ly8gRmluZHMgYW4gZWxlbWVudCB3aXRoIHRoZSBwYXNzZWQgYGtleWAgd2l0aGluIHRoZSBgZmxh
dF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmZpbmQ7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6
YnVja2V0X2NvdW50KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mICJidWNrZXRz
IiB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfc2V0YC4gTm90ZSB0aGF0CisgIC8vIGJlY2F1c2UgYSBm
bGF0IGhhc2ggbWFwIGNvbnRhaW5zIGFsbCBlbGVtZW50cyB3aXRoaW4gaXRzIGludGVybmFsIHN0
b3JhZ2UsCisgIC8vIHRoaXMgdmFsdWUgc2ltcGx5IGVxdWFscyB0aGUgY3VycmVudCBjYXBhY2l0
eSBvZiB0aGUgYGZsYXRfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjpidWNrZXRfY291bnQ7CisK
KyAgLy8gZmxhdF9oYXNoX3NldDo6bG9hZF9mYWN0b3IoKQorICAvLworICAvLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IGxvYWQgZmFjdG9yIG9mIHRoZSBgZmxhdF9oYXNoX3NldGAgKHRoZSBhdmVyYWdl
IG51bWJlcgorICAvLyBvZiBzbG90cyBvY2N1cGllZCB3aXRoIGEgdmFsdWUgd2l0aGluIHRoZSBo
YXNoIG1hcCkuCisgIHVzaW5nIEJhc2U6OmxvYWRfZmFjdG9yOworCisgIC8vIGZsYXRfaGFzaF9z
ZXQ6Om1heF9sb2FkX2ZhY3RvcigpCisgIC8vCisgIC8vIE1hbmFnZXMgdGhlIG1heGltdW0gbG9h
ZCBmYWN0b3Igb2YgdGhlIGBmbGF0X2hhc2hfc2V0YC4gT3ZlcmxvYWRzIGFyZQorICAvLyBsaXN0
ZWQgYmVsb3cuCisgIC8vCisgIC8vIGZsb2F0IGZsYXRfaGFzaF9zZXQ6Om1heF9sb2FkX2ZhY3Rv
cigpCisgIC8vCisgIC8vICAgUmV0dXJucyB0aGUgY3VycmVudCBtYXhpbXVtIGxvYWQgZmFjdG9y
IG9mIHRoZSBgZmxhdF9oYXNoX3NldGAuCisgIC8vCisgIC8vIHZvaWQgZmxhdF9oYXNoX3NldDo6
bWF4X2xvYWRfZmFjdG9yKGZsb2F0IG1sKQorICAvLworICAvLyAgIFNldHMgdGhlIG1heGltdW0g
bG9hZCBmYWN0b3Igb2YgdGhlIGBmbGF0X2hhc2hfc2V0YCB0byB0aGUgcGFzc2VkIHZhbHVlLgor
ICAvLworICAvLyAgIE5PVEU6IFRoaXMgb3ZlcmxvYWQgaXMgcHJvdmlkZWQgb25seSBmb3IgQVBJ
IGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgU1RMOworICAvLyAgIGBmbGF0X2hhc2hfc2V0YCB3aWxs
IGlnbm9yZSBhbnkgc2V0IGxvYWQgZmFjdG9yIGFuZCBtYW5hZ2UgaXRzIHJlaGFzaGluZworICAv
LyAgIGludGVybmFsbHkgYXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgorICB1c2luZyBCYXNl
OjptYXhfbG9hZF9mYWN0b3I7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6Z2V0X2FsbG9jYXRvcigp
CisgIC8vCisgIC8vIFJldHVybnMgdGhlIGFsbG9jYXRvciBmdW5jdGlvbiBhc3NvY2lhdGVkIHdp
dGggdGhpcyBgZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmdldF9hbGxvY2F0b3I7CisK
KyAgLy8gZmxhdF9oYXNoX3NldDo6aGFzaF9mdW5jdGlvbigpCisgIC8vCisgIC8vIFJldHVybnMg
dGhlIGhhc2hpbmcgZnVuY3Rpb24gdXNlZCB0byBoYXNoIHRoZSBrZXlzIHdpdGhpbiB0aGlzCisg
IC8vIGBmbGF0X2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6aGFzaF9mdW5jdGlvbjsKKworICAv
LyBmbGF0X2hhc2hfc2V0OjprZXlfZXEoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBmdW5jdGlv
biB1c2VkIGZvciBjb21wYXJpbmcga2V5cyBlcXVhbGl0eS4KKyAgdXNpbmcgQmFzZTo6a2V5X2Vx
OworfTsKKworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxjbGFz
cyBUPgorc3RydWN0IEZsYXRIYXNoU2V0UG9saWN5IHsKKyAgdXNpbmcgc2xvdF90eXBlID0gVDsK
KyAgdXNpbmcga2V5X3R5cGUgPSBUOworICB1c2luZyBpbml0X3R5cGUgPSBUOworICB1c2luZyBj
b25zdGFudF9pdGVyYXRvcnMgPSBzdGQ6OnRydWVfdHlwZTsKKworICB0ZW1wbGF0ZSA8Y2xhc3Mg
QWxsb2NhdG9yLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2Nh
dG9yKiBhbGxvYywgc2xvdF90eXBlKiBzbG90LCBBcmdzJiYuLi4gYXJncykgeworICAgIGFic2w6
OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KCphbGxvYywgc2xvdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4K
KyAgc3RhdGljIHZvaWQgZGVzdHJveShBbGxvY2F0b3IqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3Qp
IHsKKyAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koKmFsbG9j
LCBzbG90KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0YXRpYyB2
b2lkIHRyYW5zZmVyKEFsbG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogbmV3X3Nsb3QsCisgICAg
ICAgICAgICAgICAgICAgICAgIHNsb3RfdHlwZSogb2xkX3Nsb3QpIHsKKyAgICBjb25zdHJ1Y3Qo
YWxsb2MsIG5ld19zbG90LCBzdGQ6Om1vdmUoKm9sZF9zbG90KSk7CisgICAgZGVzdHJveShhbGxv
Yywgb2xkX3Nsb3QpOworICB9CisKKyAgc3RhdGljIFQmIGVsZW1lbnQoc2xvdF90eXBlKiBzbG90
KSB7IHJldHVybiAqc2xvdDsgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcy4uLiBBcmdz
PgorICBzdGF0aWMgZGVjbHR5cGUoYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpEZWNvbXBvc2VW
YWx1ZSgKKyAgICAgIHN0ZDo6ZGVjbHZhbDxGPigpLCBzdGQ6OmRlY2x2YWw8QXJncz4oKS4uLikp
CisgIGFwcGx5KEYmJiBmLCBBcmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiBhYnNsOjpjb250
YWluZXJfaW50ZXJuYWw6OkRlY29tcG9zZVZhbHVlKAorICAgICAgICBzdGQ6OmZvcndhcmQ8Rj4o
ZiksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICBzdGF0aWMgc2l6ZV90
IHNwYWNlX3VzZWQoY29uc3QgVCopIHsgcmV0dXJuIDA7IH0KK307Cit9ICAvLyBuYW1lc3BhY2Ug
Y29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNM
X0NPTlRBSU5FUl9GTEFUX0hBU0hfU0VUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
ZmxhdF9oYXNoX3NldF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9zZXRfdGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNTJmZDUzMmNiZWVjNzUxNThiZTYyMDVlNTYxMTgxY2IxNzRkNGJi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9zZXRfdGVzdC5j
YwpAQCAtMCwwICsxLDEyNiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9zZXQuaCIKKworI2luY2x1
ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2Vu
ZXJhdG9yX3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9y
ZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oIgorI2luY2x1ZGUg
ImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmll
dy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsK
K25hbWVzcGFjZSB7CisKK3VzaW5nIDo6YWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2lu
dGVybmFsOjpFbnVtOwordXNpbmcgOjphYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfaW50
ZXJuYWw6OkVudW1DbGFzczsKK3VzaW5nIDo6dGVzdGluZzo6UG9pbnRlZTsKK3VzaW5nIDo6dGVz
dGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmU7Cit1c2luZyA6OnRlc3Rpbmc6OlVub3JkZXJlZEVs
ZW1lbnRzQXJlQXJyYXk7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgordXNpbmcgU2V0ID0KKyAgICBh
YnNsOjpmbGF0X2hhc2hfc2V0PFQsIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRlZnVsVGVzdGlu
Z0VxdWFsLCBBbGxvYzxUPj47CisKK3VzaW5nIFNldFR5cGVzID0KKyAgICA6OnRlc3Rpbmc6OlR5
cGVzPFNldDxpbnQ+LCBTZXQ8c3RkOjpzdHJpbmc+LCBTZXQ8RW51bT4sIFNldDxFbnVtQ2xhc3M+
PjsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoRmxhdEhhc2hTZXQsIENvbnN0cnVj
dG9yVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoRmxhdEhh
c2hTZXQsIExvb2t1cFRlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FT
RV9QKEZsYXRIYXNoU2V0LCBNb2RpZmllcnNUZXN0LCBTZXRUeXBlcyk7CisKK1RFU1QoRmxhdEhh
c2hTZXQsIEVtcGxhY2VTdHJpbmcpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSB7
ImEiLCAiYiJ9OworICBhYnNsOjpmbGF0X2hhc2hfc2V0PGFic2w6OnN0cmluZ192aWV3PiBocyh2
LmJlZ2luKCksIHYuZW5kKCkpOworICBFWFBFQ1RfVEhBVChocywgVW5vcmRlcmVkRWxlbWVudHNB
cmVBcnJheSh2KSk7Cit9CisKK1RFU1QoRmxhdEhhc2hTZXQsIEJpdGZpZWxkQXJndW1lbnQpIHsK
KyAgdW5pb24geworICAgIGludCBuIDogMTsKKyAgfTsKKyAgbiA9IDA7CisgIGFic2w6OmZsYXRf
aGFzaF9zZXQ8aW50PiBzID0ge259OworICBzLmluc2VydChuKTsKKyAgcy5pbnNlcnQocy5lbmQo
KSwgbik7CisgIHMuaW5zZXJ0KHtufSk7CisgIHMuZXJhc2Uobik7CisgIHMuY291bnQobik7Cisg
IHMucHJlZmV0Y2gobik7CisgIHMuZmluZChuKTsKKyAgcy5jb250YWlucyhuKTsKKyAgcy5lcXVh
bF9yYW5nZShuKTsKK30KKworVEVTVChGbGF0SGFzaFNldCwgTWVyZ2VFeHRyYWN0SW5zZXJ0KSB7
CisgIHN0cnVjdCBIYXNoIHsKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8aW50PiYgcCkgY29uc3QgeyByZXR1cm4gKnA7IH0KKyAgfTsKKyAgc3RydWN0IEVxIHsK
KyAgICBib29sIG9wZXJhdG9yKCkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPGludD4mIGEsCisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxpbnQ+JiBiKSBjb25zdCB7Cisg
ICAgICByZXR1cm4gKmEgPT0gKmI7CisgICAgfQorICB9OworICBhYnNsOjpmbGF0X2hhc2hfc2V0
PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBIYXNoLCBFcT4gc2V0MSwgc2V0MjsKKyAgc2V0MS5pbnNl
cnQoYWJzbDo6bWFrZV91bmlxdWU8aW50Pig3KSk7CisgIHNldDEuaW5zZXJ0KGFic2w6Om1ha2Vf
dW5pcXVlPGludD4oMTcpKTsKKworICBzZXQyLmluc2VydChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+
KDcpKTsKKyAgc2V0Mi5pbnNlcnQoYWJzbDo6bWFrZV91bmlxdWU8aW50PigxOSkpOworCisgIEVY
UEVDVF9USEFUKHNldDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoNyksIFBvaW50ZWUo
MTcpKSk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUo
NyksIFBvaW50ZWUoMTkpKSk7CisKKyAgc2V0MS5tZXJnZShzZXQyKTsKKworICBFWFBFQ1RfVEhB
VChzZXQxLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQb2ludGVlKDcpLCBQb2ludGVlKDE3KSwgUG9p
bnRlZSgxOSkpKTsKKyAgRVhQRUNUX1RIQVQoc2V0MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9p
bnRlZSg3KSkpOworCisgIGF1dG8gbm9kZSA9IHNldDEuZXh0cmFjdChhYnNsOjptYWtlX3VuaXF1
ZTxpbnQ+KDcpKTsKKyAgRVhQRUNUX1RSVUUobm9kZSk7CisgIEVYUEVDVF9USEFUKG5vZGUudmFs
dWUoKSwgUG9pbnRlZSg3KSk7CisgIEVYUEVDVF9USEFUKHNldDEsIFVub3JkZXJlZEVsZW1lbnRz
QXJlKFBvaW50ZWUoMTcpLCBQb2ludGVlKDE5KSkpOworCisgIGF1dG8gaW5zZXJ0X3Jlc3VsdCA9
IHNldDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7CisgIEVYUEVDVF9GQUxTRShub2RlKTsKKyAg
RVhQRUNUX0ZBTFNFKGluc2VydF9yZXN1bHQuaW5zZXJ0ZWQpOworICBFWFBFQ1RfVFJVRShpbnNl
cnRfcmVzdWx0Lm5vZGUpOworICBFWFBFQ1RfVEhBVChpbnNlcnRfcmVzdWx0Lm5vZGUudmFsdWUo
KSwgUG9pbnRlZSg3KSk7CisgIEVYUEVDVF9FUSgqKmluc2VydF9yZXN1bHQucG9zaXRpb24sIDcp
OworICBFWFBFQ1RfTkUoaW5zZXJ0X3Jlc3VsdC5wb3NpdGlvbi0+Z2V0KCksIGluc2VydF9yZXN1
bHQubm9kZS52YWx1ZSgpLmdldCgpKTsKKyAgRVhQRUNUX1RIQVQoc2V0MiwgVW5vcmRlcmVkRWxl
bWVudHNBcmUoUG9pbnRlZSg3KSkpOworCisgIG5vZGUgPSBzZXQxLmV4dHJhY3QoYWJzbDo6bWFr
ZV91bmlxdWU8aW50PigxNykpOworICBFWFBFQ1RfVFJVRShub2RlKTsKKyAgRVhQRUNUX1RIQVQo
bm9kZS52YWx1ZSgpLCBQb2ludGVlKDE3KSk7CisgIEVYUEVDVF9USEFUKHNldDEsIFVub3JkZXJl
ZEVsZW1lbnRzQXJlKFBvaW50ZWUoMTkpKSk7CisKKyAgbm9kZS52YWx1ZSgpID0gYWJzbDo6bWFr
ZV91bmlxdWU8aW50PigyMyk7CisKKyAgaW5zZXJ0X3Jlc3VsdCA9IHNldDIuaW5zZXJ0KHN0ZDo6
bW92ZShub2RlKSk7CisgIEVYUEVDVF9GQUxTRShub2RlKTsKKyAgRVhQRUNUX1RSVUUoaW5zZXJ0
X3Jlc3VsdC5pbnNlcnRlZCk7CisgIEVYUEVDVF9GQUxTRShpbnNlcnRfcmVzdWx0Lm5vZGUpOwor
ICBFWFBFQ1RfRVEoKippbnNlcnRfcmVzdWx0LnBvc2l0aW9uLCAyMyk7CisgIEVYUEVDVF9USEFU
KHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoNyksIFBvaW50ZWUoMjMpKSk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAor
fSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVk
X3ZlY3Rvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yLmgKaW5kZXggY2EzNmZk
MzY5OWI5MDVjMmVkZTliYjEwNzI1YjRkOWI2Njk4Njg3Ny4uMTI3NTZiYjgyMGNmNmFlOTU2Y2E0
NjRhOGFjN2NkNzMyY2JjOWUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRf
dmVjdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yLmgKQEAgLTYyMCw2
ICs2MjAsMTIgQEAgY2xhc3MgSW5saW5lZFZlY3RvciB7CiAgIC8vIFJldHVybnMgdGhlIGFsbG9j
YXRvciBvZiB0aGlzIGlubGluZWQgdmVjdG9yLgogICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2Nh
dG9yKCkgY29uc3QgeyByZXR1cm4gYWxsb2NhdG9yKCk7IH0KIAorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIGNvbnN0IElubGluZWRWZWN0b3Im
IHYpIHsKKyAgICByZXR1cm4gSDo6Y29tYmluZShIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjpt
b3ZlKGgpLCB2LmRhdGEoKSwgdi5zaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgIHYuc2l6
ZSgpKTsKKyAgfQorCiAgcHJpdmF0ZToKICAgc3RhdGljX2Fzc2VydChOID4gMCwgImlubGluZWQg
dmVjdG9yIHdpdGggbm9ucG9zaXRpdmUgc2l6ZSIpOwogCkBAIC02NDgsOCArNjU0LDcgQEAgY2xh
c3MgSW5saW5lZFZlY3RvciB7CiAgIC8vIG91ciBpbnN0YW5jZSBvZiBpdCBmb3IgZnJlZS4KICAg
Y2xhc3MgQWxsb2NhdG9yQW5kVGFnIDogcHJpdmF0ZSBhbGxvY2F0b3JfdHlwZSB7CiAgICBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgQWxsb2NhdG9yQW5kVGFnKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBh
LCBUYWcgdCA9IFRhZygpKQotICAgICAgICA6IGFsbG9jYXRvcl90eXBlKGEpLCB0YWdfKHQpIHt9
CisgICAgZXhwbGljaXQgQWxsb2NhdG9yQW5kVGFnKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhKSA6
IGFsbG9jYXRvcl90eXBlKGEpIHt9CiAgICAgVGFnJiB0YWcoKSB7IHJldHVybiB0YWdfOyB9CiAg
ICAgY29uc3QgVGFnJiB0YWcoKSBjb25zdCB7IHJldHVybiB0YWdfOyB9CiAgICAgYWxsb2NhdG9y
X3R5cGUmIGFsbG9jYXRvcigpIHsgcmV0dXJuICp0aGlzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW5saW5lZF92ZWN0b3JfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
bGluZWRfdmVjdG9yX2JlbmNobWFyay5jYwppbmRleCAyNGYyMTc0OTI4YTM4YjAxZmVmOTlhZTI3
Y2I4OWU0MTk4MjY1YWIzLi5hM2FkMGY4YWU0ZjFhMTYzYzdmMjMyOTMyZTQ2YTM4ZWU0ZWE2NzBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3JfYmVuY2htYXJrLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl9iZW5jaG1hcmsuY2MKQEAgLTY2
LDcgKzY2LDcgQEAgQkVOQ0hNQVJLKEJNX1N0ZFZlY3RvckZpbGwpLT5SYW5nZSgwLCAxMDI0KTsK
IC8vIFRoZSBwdXJwb3NlIG9mIHRoZSBuZXh0IHR3byBiZW5jaG1hcmtzIGlzIHRvIHZlcmlmeSB0
aGF0CiAvLyBhYnNsOjpJbmxpbmVkVmVjdG9yIGlzIGVmZmljaWVudCB3aGVuIG1vdmluZyBpcyBt
b3JlIGVmZmljZW50IHRoYW4KIC8vIGNvcHlpbmcuIFRvIGRvIHNvLCB3ZSB1c2Ugc3RyaW5ncyB0
aGF0IGFyZSBsYXJnZXIgdGhhbiB0aGUgc2hvcnQKLS8vIHN0ZDo6c3RyaW5nIG9wdGltaXphdGlv
bi4KKy8vIHN0cmluZyBvcHRpbWl6YXRpb24uCiBib29sIFN0cmluZ1JlcHJlc2VudGVkSW5saW5l
KHN0ZDo6c3RyaW5nIHMpIHsKICAgY29uc3QgY2hhciogY2hhcnMgPSBzLmRhdGEoKTsKICAgc3Rk
OjpzdHJpbmcgczEgPSBzdGQ6Om1vdmUocyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
aW5saW5lZF92ZWN0b3JfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl90
ZXN0LmNjCmluZGV4IDE5NmExYmVkOTc2YzRiYmQwNjBhMGM4MWEzMDgxOWFjZWQ0NjY5YjIuLjA4
ZGNkM2VmNjZmYjZhMzMwMmY4NjJjNTJhZDkxZjUzNjI2MGQ0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bmxpbmVkX3ZlY3Rvcl90ZXN0LmNjCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiYWJzbC9i
YXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5o
IgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tl
ci5oIgorI2luY2x1ZGUgImFic2wvaGFzaC9oYXNoX3Rlc3RpbmcuaCIKICNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgogCkBA
IC0xNzg4LDQgKzE3ODksNSBAQCBURVNUKEFsbG9jYXRvclN1cHBvcnRUZXN0LCBTaXplQWxsb2ND
b25zdHJ1Y3RvcikgewogICAgIEVYUEVDVF9USEFUKHYsIEFsbE9mKFNpemVJcyhsZW4pLCBFYWNo
KDApKSk7CiAgIH0KIH0KKwogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZjNWQyZGY2NzMx
NGU4MjlmYzlmNTkxYjM2ZTY1YWI5ZGYzZTBjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgKQEAgLTAsMCArMSw0MDUgQEAKKy8v
IENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9DT05U
QUlORVJfSU5URVJOQUxfQ09OVEFJTkVSX01FTU9SWV9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5F
Ul9JTlRFUk5BTF9DT05UQUlORVJfTUVNT1JZX0hfCisKKyNpZmRlZiBBRERSRVNTX1NBTklUSVpF
UgorI2luY2x1ZGUgPHNhbml0aXplci9hc2FuX2ludGVyZmFjZS5oPgorI2VuZGlmCisKKyNpZmRl
ZiBNRU1PUllfU0FOSVRJWkVSCisjaW5jbHVkZSA8c2FuaXRpemVyL21zYW5faW50ZXJmYWNlLmg+
CisjZW5kaWYKKworI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNs
dWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+Cisj
aW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2lu
Y2x1ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCisvLyBBbGxvY2F0ZXMgYXQgbGVhc3QgbiBieXRl
cyBhbGlnbmVkIHRvIHRoZSBzcGVjaWZpZWQgYWxpZ25tZW50LgorLy8gQWxpZ25tZW50IG11c3Qg
YmUgYSBwb3dlciBvZiAyLiBJdCBtdXN0IGJlIHBvc2l0aXZlLgorLy8KKy8vIE5vdGUgdGhhdCBt
YW55IGFsbG9jYXRvcnMgZG9uJ3QgaG9ub3IgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBhYm92ZSBj
ZXJ0YWluCisvLyB0aHJlc2hvbGQgKHVzdWFsbHkgZWl0aGVyIGFsaWdub2Yoc3RkOjptYXhfYWxp
Z25fdCkgb3IgYWxpZ25vZih2b2lkKikpLgorLy8gQWxsb2NhdGUoKSBkb2Vzbid0IGFwcGx5IGFs
aWdubWVudCBjb3JyZWN0aW9ucy4gSWYgdGhlIHVuZGVybHlpbmcgYWxsb2NhdG9yCisvLyByZXR1
cm5zIGluc3VmZmljaWVudGx5IGFsaWdubWVudCBwb2ludGVyLCB0aGF0J3Mgd2hhdCB5b3UgYXJl
IGdvaW5nIHRvIGdldC4KK3RlbXBsYXRlIDxzaXplX3QgQWxpZ25tZW50LCBjbGFzcyBBbGxvYz4K
K3ZvaWQqIEFsbG9jYXRlKEFsbG9jKiBhbGxvYywgc2l6ZV90IG4pIHsKKyAgc3RhdGljX2Fzc2Vy
dChBbGlnbm1lbnQgPiAwLCAiIik7CisgIGFzc2VydChuICYmICJuIG11c3QgYmUgcG9zaXRpdmUi
KTsKKyAgc3RydWN0IGFsaWduYXMoQWxpZ25tZW50KSBNIHt9OworICB1c2luZyBBID0gdHlwZW5h
bWUgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OnRlbXBsYXRlIHJlYmluZF9hbGxvYzxN
PjsKKyAgdXNpbmcgQVQgPSB0eXBlbmFtZSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6
dGVtcGxhdGUgcmViaW5kX3RyYWl0czxNPjsKKyAgQSBtZW1fYWxsb2MoKmFsbG9jKTsKKyAgdm9p
ZCogcCA9IEFUOjphbGxvY2F0ZShtZW1fYWxsb2MsIChuICsgc2l6ZW9mKE0pIC0gMSkgLyBzaXpl
b2YoTSkpOworICBhc3NlcnQocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHApICUgQWxpZ25t
ZW50ID09IDAgJiYKKyAgICAgICAgICJhbGxvY2F0b3IgZG9lcyBub3QgcmVzcGVjdCBhbGlnbm1l
bnQiKTsKKyAgcmV0dXJuIHA7Cit9CisKKy8vIFRoZSBwb2ludGVyIG11c3QgaGF2ZSBiZWVuIHBy
ZXZpb3VzbHkgb2J0YWluZWQgYnkgY2FsbGluZworLy8gQWxsb2NhdGU8QWxpZ25tZW50PihhbGxv
YywgbikuCit0ZW1wbGF0ZSA8c2l6ZV90IEFsaWdubWVudCwgY2xhc3MgQWxsb2M+Cit2b2lkIERl
YWxsb2NhdGUoQWxsb2MqIGFsbG9jLCB2b2lkKiBwLCBzaXplX3QgbikgeworICBzdGF0aWNfYXNz
ZXJ0KEFsaWdubWVudCA+IDAsICIiKTsKKyAgYXNzZXJ0KG4gJiYgIm4gbXVzdCBiZSBwb3NpdGl2
ZSIpOworICBzdHJ1Y3QgYWxpZ25hcyhBbGlnbm1lbnQpIE0ge307CisgIHVzaW5nIEEgPSB0eXBl
bmFtZSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6dGVtcGxhdGUgcmViaW5kX2FsbG9j
PE0+OworICB1c2luZyBBVCA9IHR5cGVuYW1lIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+
Ojp0ZW1wbGF0ZSByZWJpbmRfdHJhaXRzPE0+OworICBBIG1lbV9hbGxvYygqYWxsb2MpOworICBB
VDo6ZGVhbGxvY2F0ZShtZW1fYWxsb2MsIHN0YXRpY19jYXN0PE0qPihwKSwKKyAgICAgICAgICAg
ICAgICAgKG4gKyBzaXplb2YoTSkgLSAxKSAvIHNpemVvZihNKSk7Cit9CisKK25hbWVzcGFjZSBt
ZW1vcnlfaW50ZXJuYWwgeworCisvLyBDb25zdHJ1Y3RzIFQgaW50byB1bmluaXRpYWxpemVkIHN0
b3JhZ2UgcG9pbnRlZCBieSBgcHRyYCB1c2luZyB0aGUgYXJncworLy8gc3BlY2lmaWVkIGluIHRo
ZSB0dXBsZS4KK3RlbXBsYXRlIDxjbGFzcyBBbGxvYywgY2xhc3MgVCwgY2xhc3MgVHVwbGUsIHNp
emVfdC4uLiBJPgordm9pZCBDb25zdHJ1Y3RGcm9tVHVwbGVJbXBsKEFsbG9jKiBhbGxvYywgVCog
cHRyLCBUdXBsZSYmIHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6aW5kZXhf
c2VxdWVuY2U8SS4uLj4pIHsKKyAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OmNvbnN0
cnVjdCgKKyAgICAgICphbGxvYywgcHRyLCBzdGQ6OmdldDxJPihzdGQ6OmZvcndhcmQ8VHVwbGU+
KHQpKS4uLik7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBGPgorc3RydWN0IFdpdGhD
b25zdHJ1Y3RlZEltcGxGIHsKKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIGRlY2x0eXBl
KHN0ZDo6ZGVjbHZhbDxGPigpKHN0ZDo6ZGVjbHZhbDxUPigpKSkgb3BlcmF0b3IoKSgKKyAgICAg
IEFyZ3MmJi4uLiBhcmdzKSBjb25zdCB7CisgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihmKShU
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICB9CisgIEYmJiBmOworfTsKKwordGVt
cGxhdGUgPGNsYXNzIFQsIGNsYXNzIFR1cGxlLCBzaXplX3QuLi4gSXMsIGNsYXNzIEY+CitkZWNs
dHlwZShzdGQ6OmRlY2x2YWw8Rj4oKShzdGQ6OmRlY2x2YWw8VD4oKSkpIFdpdGhDb25zdHJ1Y3Rl
ZEltcGwoCisgICAgVHVwbGUmJiB0LCBhYnNsOjppbmRleF9zZXF1ZW5jZTxJcy4uLj4sIEYmJiBm
KSB7CisgIHJldHVybiBXaXRoQ29uc3RydWN0ZWRJbXBsRjxULCBGPntzdGQ6OmZvcndhcmQ8Rj4o
Zil9KAorICAgICAgc3RkOjpnZXQ8SXM+KHN0ZDo6Zm9yd2FyZDxUdXBsZT4odCkpLi4uKTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdC4uLiBJcz4KK2F1dG8gVHVwbGVSZWZJbXBsKFQm
JiB0LCBhYnNsOjppbmRleF9zZXF1ZW5jZTxJcy4uLj4pCisgICAgLT4gZGVjbHR5cGUoc3RkOjpm
b3J3YXJkX2FzX3R1cGxlKHN0ZDo6Z2V0PElzPihzdGQ6OmZvcndhcmQ8VD4odCkpLi4uKSkgewor
ICByZXR1cm4gc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHN0ZDo6Z2V0PElzPihzdGQ6OmZvcndhcmQ8
VD4odCkpLi4uKTsKK30KKworLy8gUmV0dXJucyBhIHR1cGxlIG9mIHJlZmVyZW5jZXMgdG8gdGhl
IGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB0dXBsZS4gVCBtdXN0IGJlIGEKKy8vIHR1cGxlLgordGVt
cGxhdGUgPGNsYXNzIFQ+CithdXRvIFR1cGxlUmVmKFQmJiB0KSAtPiBkZWNsdHlwZSgKKyAgICBU
dXBsZVJlZkltcGwoc3RkOjpmb3J3YXJkPFQ+KHQpLAorICAgICAgICAgICAgICAgICBhYnNsOjpt
YWtlX2luZGV4X3NlcXVlbmNlPAorICAgICAgICAgICAgICAgICAgICAgc3RkOjp0dXBsZV9zaXpl
PHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+Ojp2YWx1ZT4oKSkpIHsKKyAgcmV0dXJuIFR1
cGxlUmVmSW1wbCgKKyAgICAgIHN0ZDo6Zm9yd2FyZDxUPih0KSwKKyAgICAgIGFic2w6Om1ha2Vf
aW5kZXhfc2VxdWVuY2U8CisgICAgICAgICAgc3RkOjp0dXBsZV9zaXplPHR5cGVuYW1lIHN0ZDo6
ZGVjYXk8VD46OnR5cGU+Ojp2YWx1ZT4oKSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBGLCBjbGFz
cyBLLCBjbGFzcyBWPgorZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEY+KCkoc3RkOjpkZWNsdmFsPGNv
bnN0IEsmPigpLCBzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmRlY2x2YWw8c3RkOjp0dXBsZTxLPj4oKSwgc3RkOjpkZWNsdmFsPFY+KCkp
KQorRGVjb21wb3NlUGFpckltcGwoRiYmIGYsIHN0ZDo6cGFpcjxzdGQ6OnR1cGxlPEs+LCBWPiBw
KSB7CisgIGNvbnN0IGF1dG8mIGtleSA9IHN0ZDo6Z2V0PDA+KHAuZmlyc3QpOworICByZXR1cm4g
c3RkOjpmb3J3YXJkPEY+KGYpKGtleSwgc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6Om1v
dmUocC5maXJzdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHAuc2Vj
b25kKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBtZW1vcnlfaW50ZXJuYWwKKworLy8gQ29uc3Ry
dWN0cyBUIGludG8gdW5pbml0aWFsaXplZCBzdG9yYWdlIHBvaW50ZWQgYnkgYHB0cmAgdXNpbmcg
dGhlIGFyZ3MKKy8vIHNwZWNpZmllZCBpbiB0aGUgdHVwbGUuCit0ZW1wbGF0ZSA8Y2xhc3MgQWxs
b2MsIGNsYXNzIFQsIGNsYXNzIFR1cGxlPgordm9pZCBDb25zdHJ1Y3RGcm9tVHVwbGUoQWxsb2Mq
IGFsbG9jLCBUKiBwdHIsIFR1cGxlJiYgdCkgeworICBtZW1vcnlfaW50ZXJuYWw6OkNvbnN0cnVj
dEZyb21UdXBsZUltcGwoCisgICAgICBhbGxvYywgcHRyLCBzdGQ6OmZvcndhcmQ8VHVwbGU+KHQp
LAorICAgICAgYWJzbDo6bWFrZV9pbmRleF9zZXF1ZW5jZTwKKyAgICAgICAgICBzdGQ6OnR1cGxl
X3NpemU8dHlwZW5hbWUgc3RkOjpkZWNheTxUdXBsZT46OnR5cGU+Ojp2YWx1ZT4oKSk7Cit9CisK
Ky8vIENvbnN0cnVjdHMgVCB1c2luZyB0aGUgYXJncyBzcGVjaWZpZWQgaW4gdGhlIHR1cGxlIGFu
ZCBjYWxscyBGIHdpdGggdGhlCisvLyBjb25zdHJ1Y3RlZCB2YWx1ZS4KK3RlbXBsYXRlIDxjbGFz
cyBULCBjbGFzcyBUdXBsZSwgY2xhc3MgRj4KK2RlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxGPigpKHN0
ZDo6ZGVjbHZhbDxUPigpKSkgV2l0aENvbnN0cnVjdGVkKAorICAgIFR1cGxlJiYgdCwgRiYmIGYp
IHsKKyAgcmV0dXJuIG1lbW9yeV9pbnRlcm5hbDo6V2l0aENvbnN0cnVjdGVkSW1wbDxUPigKKyAg
ICAgIHN0ZDo6Zm9yd2FyZDxUdXBsZT4odCksCisgICAgICBhYnNsOjptYWtlX2luZGV4X3NlcXVl
bmNlPAorICAgICAgICAgIHN0ZDo6dHVwbGVfc2l6ZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFR1cGxl
Pjo6dHlwZT46OnZhbHVlPigpLAorICAgICAgc3RkOjpmb3J3YXJkPEY+KGYpKTsKK30KKworLy8g
R2l2ZW4gYXJndW1lbnRzIG9mIGFuIHN0ZDo6cGFpcidzIGNvbnNydWN0b3IsIFBhaXJBcmdzKCkg
cmV0dXJucyBhIHBhaXIgb2YKKy8vIHR1cGxlcyB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHBhc3Nl
ZCBhcmd1bWVudHMuIFRoZSB0dXBsZXMgY29udGFpbgorLy8gY29uc3RydWN0b3IgYXJndW1lbnRz
IGZvciB0aGUgZmlyc3QgYW5kIHRoZSBzZWNvbmQgZWxlbWVudHMgb2YgdGhlIHBhaXIuCisvLwor
Ly8gVGhlIGZvbGxvd2luZyB0d28gc25pcHBldHMgYXJlIGVxdWl2YWxlbnQuCisvLworLy8gMS4g
c3RkOjpwYWlyPEYsIFM+IHAoYXJncy4uLik7CisvLworLy8gMi4gYXV0byBhID0gUGFpckFyZ3Mo
YXJncy4uLik7CisvLyAgICBzdGQ6OnBhaXI8RiwgUz4gcChzdGQ6OnBpZWNld2lzZV9jb25zdHJ1
Y3QsCisvLyAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUocC5maXJzdCksIHN0ZDo6bW92
ZShwLnNlY29uZCkpOworaW5saW5lIHN0ZDo6cGFpcjxzdGQ6OnR1cGxlPD4sIHN0ZDo6dHVwbGU8
Pj4gUGFpckFyZ3MoKSB7IHJldHVybiB7fTsgfQordGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIFM+
CitzdGQ6OnBhaXI8c3RkOjp0dXBsZTxGJiY+LCBzdGQ6OnR1cGxlPFMmJj4+IFBhaXJBcmdzKEYm
JiBmLCBTJiYgcykgeworICByZXR1cm4ge3N0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjpm
b3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2FyZDxGPihmKSksCisgICAgICAgICAgc3RkOjpmb3J3
YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2FyZDxTPihzKSl9OworfQordGVtcGxhdGUgPGNsYXNzIEYs
IGNsYXNzIFM+CitzdGQ6OnBhaXI8c3RkOjp0dXBsZTxjb25zdCBGJj4sIHN0ZDo6dHVwbGU8Y29u
c3QgUyY+PiBQYWlyQXJncygKKyAgICBjb25zdCBzdGQ6OnBhaXI8RiwgUz4mIHApIHsKKyAgcmV0
dXJuIFBhaXJBcmdzKHAuZmlyc3QsIHAuc2Vjb25kKTsKK30KK3RlbXBsYXRlIDxjbGFzcyBGLCBj
bGFzcyBTPgorc3RkOjpwYWlyPHN0ZDo6dHVwbGU8RiYmPiwgc3RkOjp0dXBsZTxTJiY+PiBQYWly
QXJncyhzdGQ6OnBhaXI8RiwgUz4mJiBwKSB7CisgIHJldHVybiBQYWlyQXJncyhzdGQ6OmZvcndh
cmQ8Rj4ocC5maXJzdCksIHN0ZDo6Zm9yd2FyZDxTPihwLnNlY29uZCkpOworfQordGVtcGxhdGUg
PGNsYXNzIEYsIGNsYXNzIFM+CithdXRvIFBhaXJBcmdzKHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVj
dF90LCBGJiYgZiwgUyYmIHMpCisgICAgLT4gZGVjbHR5cGUoc3RkOjptYWtlX3BhaXIobWVtb3J5
X2ludGVybmFsOjpUdXBsZVJlZihzdGQ6OmZvcndhcmQ8Rj4oZikpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lbW9yeV9pbnRlcm5hbDo6VHVwbGVSZWYoc3RkOjpmb3J3YXJkPFM+
KHMpKSkpIHsKKyAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1lbW9yeV9pbnRlcm5hbDo6VHVwbGVS
ZWYoc3RkOjpmb3J3YXJkPEY+KGYpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9p
bnRlcm5hbDo6VHVwbGVSZWYoc3RkOjpmb3J3YXJkPFM+KHMpKSk7Cit9CisKKy8vIEEgaGVscGVy
IGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcgYXBwbHkoKSBpbiBtYXAgcG9saWNpZXMuCit0ZW1w
bGF0ZSA8Y2xhc3MgRiwgY2xhc3MuLi4gQXJncz4KK2F1dG8gRGVjb21wb3NlUGFpcihGJiYgZiwg
QXJncyYmLi4uIGFyZ3MpCisgICAgLT4gZGVjbHR5cGUobWVtb3J5X2ludGVybmFsOjpEZWNvbXBv
c2VQYWlySW1wbCgKKyAgICAgICAgc3RkOjpmb3J3YXJkPEY+KGYpLCBQYWlyQXJncyhzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKSkgeworICByZXR1cm4gbWVtb3J5X2ludGVybmFsOjpEZWNv
bXBvc2VQYWlySW1wbCgKKyAgICAgIHN0ZDo6Zm9yd2FyZDxGPihmKSwgUGFpckFyZ3Moc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Cit9CisKKy8vIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBp
bXBsZW1lbnRpbmcgYXBwbHkoKSBpbiBzZXQgcG9saWNpZXMuCit0ZW1wbGF0ZSA8Y2xhc3MgRiwg
Y2xhc3MgQXJnPgorZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEY+KCkoc3RkOjpkZWNsdmFsPGNvbnN0
IEFyZyY+KCksIHN0ZDo6ZGVjbHZhbDxBcmc+KCkpKQorRGVjb21wb3NlVmFsdWUoRiYmIGYsIEFy
ZyYmIGFyZykgeworICBjb25zdCBhdXRvJiBrZXkgPSBhcmc7CisgIHJldHVybiBzdGQ6OmZvcndh
cmQ8Rj4oZikoa2V5LCBzdGQ6OmZvcndhcmQ8QXJnPihhcmcpKTsKK30KKworLy8gSGVscGVyIGZ1
bmN0aW9ucyBmb3IgYXNhbiBhbmQgbXNhbi4KK2lubGluZSB2b2lkIFNhbml0aXplclBvaXNvbk1l
bW9yeVJlZ2lvbihjb25zdCB2b2lkKiBtLCBzaXplX3QgcykgeworI2lmZGVmIEFERFJFU1NfU0FO
SVRJWkVSCisgIEFTQU5fUE9JU09OX01FTU9SWV9SRUdJT04obSwgcyk7CisjZW5kaWYKKyNpZmRl
ZiBNRU1PUllfU0FOSVRJWkVSCisgIF9fbXNhbl9wb2lzb24obSwgcyk7CisjZW5kaWYKKyAgKHZv
aWQpbTsKKyAgKHZvaWQpczsKK30KKworaW5saW5lIHZvaWQgU2FuaXRpemVyVW5wb2lzb25NZW1v
cnlSZWdpb24oY29uc3Qgdm9pZCogbSwgc2l6ZV90IHMpIHsKKyNpZmRlZiBBRERSRVNTX1NBTklU
SVpFUgorICBBU0FOX1VOUE9JU09OX01FTU9SWV9SRUdJT04obSwgcyk7CisjZW5kaWYKKyNpZmRl
ZiBNRU1PUllfU0FOSVRJWkVSCisgIF9fbXNhbl91bnBvaXNvbihtLCBzKTsKKyNlbmRpZgorICAo
dm9pZCltOworICAodm9pZClzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSB2
b2lkIFNhbml0aXplclBvaXNvbk9iamVjdChjb25zdCBUKiBvYmplY3QpIHsKKyAgU2FuaXRpemVy
UG9pc29uTWVtb3J5UmVnaW9uKG9iamVjdCwgc2l6ZW9mKFQpKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBTYW5pdGl6ZXJVbnBvaXNvbk9iamVjdChjb25zdCBUKiBv
YmplY3QpIHsKKyAgU2FuaXRpemVyVW5wb2lzb25NZW1vcnlSZWdpb24ob2JqZWN0LCBzaXplb2Yo
VCkpOworfQorCituYW1lc3BhY2UgbWVtb3J5X2ludGVybmFsIHsKKworLy8gSWYgUGFpciBpcyBh
IHN0YW5kYXJkLWxheW91dCB0eXBlLCBPZmZzZXRPZjxQYWlyPjo6a0ZpcnN0IGFuZAorLy8gT2Zm
c2V0T2Y8UGFpcj46OmtTZWNvbmQgYXJlIGVxdWl2YWxlbnQgdG8gb2Zmc2V0b2YoUGFpciwgZmly
c3QpIGFuZAorLy8gb2Zmc2V0b2YoUGFpciwgc2Vjb25kKSByZXNwZWN0aXZlbHkuIE90aGVyd2lz
ZSB0aGV5IGFyZSAtMS4KKy8vCisvLyBUaGUgcHVycG9zZSBvZiBPZmZzZXRPZiBpcyB0byBhdm9p
ZCBjYWxsaW5nIG9mZnNldG9mKCkgb24gbm9uLXN0YW5kYXJkLWxheW91dAorLy8gdHlwZSwgd2hp
Y2ggaXMgbm9uLXBvcnRhYmxlLgordGVtcGxhdGUgPGNsYXNzIFBhaXIsIGNsYXNzID0gc3RkOjp0
cnVlX3R5cGU+CitzdHJ1Y3QgT2Zmc2V0T2YgeworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBr
Rmlyc3QgPSAtMTsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1NlY29uZCA9IC0xOworfTsK
KwordGVtcGxhdGUgPGNsYXNzIFBhaXI+CitzdHJ1Y3QgT2Zmc2V0T2Y8UGFpciwgdHlwZW5hbWUg
c3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8UGFpcj46OnR5cGU+IHsKKyAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3Qga0ZpcnN0ID0gb2Zmc2V0b2YoUGFpciwgZmlyc3QpOworICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBrU2Vjb25kID0gb2Zmc2V0b2YoUGFpciwgc2Vjb25kKTsKK307CisKK3RlbXBs
YXRlIDxjbGFzcyBLLCBjbGFzcyBWPgorc3RydWN0IElzTGF5b3V0Q29tcGF0aWJsZSB7CisgcHJp
dmF0ZToKKyAgc3RydWN0IFBhaXIgeworICAgIEsgZmlyc3Q7CisgICAgViBzZWNvbmQ7CisgIH07
CisKKyAgLy8gSXMgUCBsYXlvdXQtY29tcGF0aWJsZSB3aXRoIFBhaXI/CisgIHRlbXBsYXRlIDxj
bGFzcyBQPgorICBzdGF0aWMgY29uc3RleHByIGJvb2wgTGF5b3V0Q29tcGF0aWJsZSgpIHsKKyAg
ICByZXR1cm4gc3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8UD4oKSAmJiBzaXplb2YoUCkgPT0gc2l6
ZW9mKFBhaXIpICYmCisgICAgICAgICAgIGFsaWdub2YoUCkgPT0gYWxpZ25vZihQYWlyKSAmJgor
ICAgICAgICAgICBtZW1vcnlfaW50ZXJuYWw6Ok9mZnNldE9mPFA+OjprRmlyc3QgPT0KKyAgICAg
ICAgICAgICAgIG1lbW9yeV9pbnRlcm5hbDo6T2Zmc2V0T2Y8UGFpcj46OmtGaXJzdCAmJgorICAg
ICAgICAgICBtZW1vcnlfaW50ZXJuYWw6Ok9mZnNldE9mPFA+OjprU2Vjb25kID09CisgICAgICAg
ICAgICAgICBtZW1vcnlfaW50ZXJuYWw6Ok9mZnNldE9mPFBhaXI+OjprU2Vjb25kOworICB9CisK
KyBwdWJsaWM6CisgIC8vIFdoZXRoZXIgcGFpcjxjb25zdCBLLCBWPiBhbmQgcGFpcjxLLCBWPiBh
cmUgbGF5b3V0LWNvbXBhdGlibGUuIElmIHRoZXkgYXJlLAorICAvLyB0aGVuIGl0IGlzIHNhZmUg
dG8gc3RvcmUgdGhlbSBpbiBhIHVuaW9uIGFuZCByZWFkIGZyb20gZWl0aGVyLgorICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgdmFsdWUgPSBzdGQ6OmlzX3N0YW5kYXJkX2xheW91dDxLPigpICYmCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfc3RhbmRhcmRfbGF5b3V0PFBh
aXI+KCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X2ludGVybmFs
OjpPZmZzZXRPZjxQYWlyPjo6a0ZpcnN0ID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGF5b3V0Q29tcGF0aWJsZTxzdGQ6OnBhaXI8SywgVj4+KCkgJiYKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0Q29tcGF0aWJsZTxzdGQ6OnBhaXI8Y29uc3Qg
SywgVj4+KCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgbWVtb3J5X2ludGVybmFsCisKKy8vIElm
IGtNdXRhYmxlS2V5cyBpcyBmYWxzZSwgb25seSB0aGUgdmFsdWUgbWVtYmVyIGlzIGFjY2Vzc2Vk
LgorLy8KKy8vIElmIGtNdXRhYmxlS2V5cyBpcyB0cnVlLCBrZXkgaXMgYWNjZXNzZWQgdGhyb3Vn
aCBhbGwgc2xvdHMgd2hpbGUgdmFsdWUgYW5kCisvLyBtdXRhYmxlX3ZhbHVlIGFyZSBhY2Nlc3Nl
ZCBvbmx5IHZpYSBJTklUSUFMSVpFRCBzbG90cy4gU2xvdHMgYXJlIGNyZWF0ZWQgYW5kCisvLyBk
ZXN0cm95ZWQgdmlhIG11dGFibGVfdmFsdWUgc28gdGhhdCB0aGUga2V5IGNhbiBiZSBtb3ZlZCBs
YXRlci4KK3RlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBWPgordW5pb24gc2xvdF90eXBlIHsKKyBw
cml2YXRlOgorICBzdGF0aWMgdm9pZCBlbXBsYWNlKHNsb3RfdHlwZSogc2xvdCkgeworICAgIC8v
IFRoZSBjb25zdHJ1Y3Rpb24gb2YgdW5pb24gZG9lc24ndCBkbyBhbnl0aGluZyBhdCBydW50aW1l
IGJ1dCBpdCBhbGxvd3MgdXMKKyAgICAvLyB0byBhY2Nlc3MgaXRzIG1lbWJlcnMgd2l0aG91dCB2
aW9sYXRpbmcgYWxpYXNpbmcgcnVsZXMuCisgICAgbmV3IChzbG90KSBzbG90X3R5cGU7CisgIH0K
KyAgLy8gSWYgcGFpcjxjb25zdCBLLCBWPiBhbmQgcGFpcjxLLCBWPiBhcmUgbGF5b3V0LWNvbXBh
dGlibGUsIHdlIGNhbiBhY2NlcHQgb25lCisgIC8vIG9yIHRoZSBvdGhlciB2aWEgc2xvdF90eXBl
LiBXZSBhcmUgYWxzbyBmcmVlIHRvIGFjY2VzcyB0aGUga2V5IHZpYQorICAvLyBzbG90X3R5cGU6
OmtleSBpbiB0aGlzIGNhc2UuCisgIHVzaW5nIGtNdXRhYmxlS2V5cyA9CisgICAgICBzdGQ6Omlu
dGVncmFsX2NvbnN0YW50PGJvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9y
eV9pbnRlcm5hbDo6SXNMYXlvdXRDb21wYXRpYmxlPEssIFY+Ojp2YWx1ZT47CisKKyBwdWJsaWM6
CisgIHNsb3RfdHlwZSgpIHt9CisgIH5zbG90X3R5cGUoKSA9IGRlbGV0ZTsKKyAgdXNpbmcgdmFs
dWVfdHlwZSA9IHN0ZDo6cGFpcjxjb25zdCBLLCBWPjsKKyAgdXNpbmcgbXV0YWJsZV92YWx1ZV90
eXBlID0gc3RkOjpwYWlyPEssIFY+OworCisgIHZhbHVlX3R5cGUgdmFsdWU7CisgIG11dGFibGVf
dmFsdWVfdHlwZSBtdXRhYmxlX3ZhbHVlOworICBLIGtleTsKKworICB0ZW1wbGF0ZSA8Y2xhc3Mg
QWxsb2NhdG9yLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2Nh
dG9yKiBhbGxvYywgc2xvdF90eXBlKiBzbG90LCBBcmdzJiYuLi4gYXJncykgeworICAgIGVtcGxh
Y2Uoc2xvdCk7CisgICAgaWYgKGtNdXRhYmxlS2V5czo6dmFsdWUpIHsKKyAgICAgIGFic2w6OmFs
bG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KCphbGxvYywgJnNsb3QtPm11dGFi
bGVfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0gZWxzZSB7CisgICAgICBh
YnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdCgqYWxsb2MsICZzbG90
LT52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorICB9CisKKyAgLy8gQ29u
c3RydWN0IHRoaXMgc2xvdCBieSBtb3ZpbmcgZnJvbSBhbm90aGVyIHNsb3QuCisgIHRlbXBsYXRl
IDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvY2F0b3IqIGFs
bG9jLCBzbG90X3R5cGUqIHNsb3QsIHNsb3RfdHlwZSogb3RoZXIpIHsKKyAgICBlbXBsYWNlKHNs
b3QpOworICAgIGlmIChrTXV0YWJsZUtleXM6OnZhbHVlKSB7CisgICAgICBhYnNsOjphbGxvY2F0
b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdCgKKyAgICAgICAgICAqYWxsb2MsICZzbG90
LT5tdXRhYmxlX3ZhbHVlLCBzdGQ6Om1vdmUob3RoZXItPm11dGFibGVfdmFsdWUpKTsKKyAgICB9
IGVsc2UgeworICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1
Y3QoKmFsbG9jLCAmc2xvdC0+dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUob3RoZXItPnZhbHVlKSk7CisgICAgfQorICB9
CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgZGVzdHJveShB
bGxvY2F0b3IqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QpIHsKKyAgICBpZiAoa011dGFibGVLZXlz
Ojp2YWx1ZSkgeworICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0
cm95KCphbGxvYywgJnNsb3QtPm11dGFibGVfdmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICBh
YnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koKmFsbG9jLCAmc2xvdC0+
dmFsdWUpOworICAgIH0KKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0
YXRpYyB2b2lkIHRyYW5zZmVyKEFsbG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogbmV3X3Nsb3Qs
CisgICAgICAgICAgICAgICAgICAgICAgIHNsb3RfdHlwZSogb2xkX3Nsb3QpIHsKKyAgICBlbXBs
YWNlKG5ld19zbG90KTsKKyAgICBpZiAoa011dGFibGVLZXlzOjp2YWx1ZSkgeworICAgICAgYWJz
bDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoCisgICAgICAgICAgKmFs
bG9jLCAmbmV3X3Nsb3QtPm11dGFibGVfdmFsdWUsIHN0ZDo6bW92ZShvbGRfc2xvdC0+bXV0YWJs
ZV92YWx1ZSkpOworICAgIH0gZWxzZSB7CisgICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFs
bG9jYXRvcj46OmNvbnN0cnVjdCgqYWxsb2MsICZuZXdfc2xvdC0+dmFsdWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUob2xkX3Ns
b3QtPnZhbHVlKSk7CisgICAgfQorICAgIGRlc3Ryb3koYWxsb2MsIG9sZF9zbG90KTsKKyAgfQor
CisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0YXRpYyB2b2lkIHN3YXAoQWxsb2Nh
dG9yKiBhbGxvYywgc2xvdF90eXBlKiBhLCBzbG90X3R5cGUqIGIpIHsKKyAgICBpZiAoa011dGFi
bGVLZXlzOjp2YWx1ZSkgeworICAgICAgdXNpbmcgc3RkOjpzd2FwOworICAgICAgc3dhcChhLT5t
dXRhYmxlX3ZhbHVlLCBiLT5tdXRhYmxlX3ZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgdmFs
dWVfdHlwZSB0bXAgPSBzdGQ6Om1vdmUoYS0+dmFsdWUpOworICAgICAgYWJzbDo6YWxsb2NhdG9y
X3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0cm95KCphbGxvYywgJmEtPnZhbHVlKTsKKyAgICAgIGFi
c2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KCphbGxvYywgJmEtPnZh
bHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptb3ZlKGItPnZhbHVlKSk7CisgICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9j
YXRvcj46OmRlc3Ryb3koKmFsbG9jLCAmYi0+dmFsdWUpOworICAgICAgYWJzbDo6YWxsb2NhdG9y
X3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoKmFsbG9jLCAmYi0+dmFsdWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUodG1w
KSk7CisgICAgfQorICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGlj
IHZvaWQgbW92ZShBbGxvY2F0b3IqIGFsbG9jLCBzbG90X3R5cGUqIHNyYywgc2xvdF90eXBlKiBk
ZXN0KSB7CisgICAgaWYgKGtNdXRhYmxlS2V5czo6dmFsdWUpIHsKKyAgICAgIGRlc3QtPm11dGFi
bGVfdmFsdWUgPSBzdGQ6Om1vdmUoc3JjLT5tdXRhYmxlX3ZhbHVlKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0cm95KCphbGxvYywg
JmRlc3QtPnZhbHVlKTsKKyAgICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6
Y29uc3RydWN0KCphbGxvYywgJmRlc3QtPnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHNyYy0+dmFsdWUpKTsKKyAgICB9
CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgorICBzdGF0aWMgdm9pZCBtb3Zl
KEFsbG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogZmlyc3QsIHNsb3RfdHlwZSogbGFzdCwKKyAg
ICAgICAgICAgICAgICAgICBzbG90X3R5cGUqIHJlc3VsdCkgeworICAgIGZvciAoc2xvdF90eXBl
ICpzcmMgPSBmaXJzdCwgKmRlc3QgPSByZXN1bHQ7IHNyYyAhPSBsYXN0OyArK3NyYywgKytkZXN0
KQorICAgICAgbW92ZShhbGxvYywgc3JjLCBkZXN0KTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNw
YWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAv
LyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9DT05UQUlORVJfTUVNT1JZX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeV90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnlfdGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMWM0MDU4Mjk4YzE1NzQwOWZlYzlhYzk5MDg1MGMwYjE0OTQ5NzFmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnlfdGVzdC5jYwpA
QCAtMCwwICsxLDE4OCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIK
KworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dXRpbGl0
eT4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKworbmFtZXNwYWNlIGFic2wg
eworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCit1c2luZyA6
OnRlc3Rpbmc6OlBhaXI7CisKK1RFU1QoTWVtb3J5LCBBbGlnbm1lbnRMYXJnZXJUaGFuQmFzZSkg
eworICBzdGQ6OmFsbG9jYXRvcjxpbnQ4X3Q+IGFsbG9jOworICB2b2lkKiBtZW0gPSBBbGxvY2F0
ZTwyPigmYWxsb2MsIDMpOworICBFWFBFQ1RfRVEoMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KG1lbSkgJSAyKTsKKyAgbWVtY3B5KG1lbSwgImFiYyIsIDMpOworICBEZWFsbG9jYXRlPDI+
KCZhbGxvYywgbWVtLCAzKTsKK30KKworVEVTVChNZW1vcnksIEFsaWdubWVudFNtYWxsZXJUaGFu
QmFzZSkgeworICBzdGQ6OmFsbG9jYXRvcjxpbnQ2NF90PiBhbGxvYzsKKyAgdm9pZCogbWVtID0g
QWxsb2NhdGU8Mj4oJmFsbG9jLCAzKTsKKyAgRVhQRUNUX0VRKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihtZW0pICUgMik7CisgIG1lbWNweShtZW0sICJhYmMiLCAzKTsKKyAgRGVhbGxv
Y2F0ZTwyPigmYWxsb2MsIG1lbSwgMyk7Cit9CisKK2NsYXNzIEZpeHR1cmUgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsKKyAgdXNpbmcgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnN0cmlu
Zz47CisKKyBwdWJsaWM6CisgIEZpeHR1cmUoKSB7IHB0cl8gPSBzdGQ6OmFsbG9jYXRvcl90cmFp
dHM8QWxsb2M+OjphbGxvY2F0ZSgqYWxsb2MoKSwgMSk7IH0KKyAgfkZpeHR1cmUoKSBvdmVycmlk
ZSB7CisgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6ZGVzdHJveSgqYWxsb2MoKSwg
cHRyXyk7CisgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6ZGVhbGxvY2F0ZSgqYWxs
b2MoKSwgcHRyXywgMSk7CisgIH0KKyAgc3RkOjpzdHJpbmcqIHB0cigpIHsgcmV0dXJuIHB0cl87
IH0KKyAgQWxsb2MqIGFsbG9jKCkgeyByZXR1cm4gJmFsbG9jXzsgfQorCisgcHJpdmF0ZToKKyAg
QWxsb2MgYWxsb2NfOworICBzdGQ6OnN0cmluZyogcHRyXzsKK307CisKK1RFU1RfRihGaXh0dXJl
LCBDb25zdHJ1Y3ROb0FyZ3MpIHsKKyAgQ29uc3RydWN0RnJvbVR1cGxlKGFsbG9jKCksIHB0cigp
LCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoKSk7CisgIEVYUEVDVF9FUSgqcHRyKCksICIiKTsKK30K
KworVEVTVF9GKEZpeHR1cmUsIENvbnN0cnVjdE9uZUFyZykgeworICBDb25zdHJ1Y3RGcm9tVHVw
bGUoYWxsb2MoKSwgcHRyKCksIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgiYWJjZGUiKSk7CisgIEVY
UEVDVF9FUSgqcHRyKCksICJhYmNkZSIpOworfQorCitURVNUX0YoRml4dHVyZSwgQ29uc3RydWN0
VHdvQXJnKSB7CisgIENvbnN0cnVjdEZyb21UdXBsZShhbGxvYygpLCBwdHIoKSwgc3RkOjpmb3J3
YXJkX2FzX3R1cGxlKDUsICdhJykpOworICBFWFBFQ1RfRVEoKnB0cigpLCAiYWFhYWEiKTsKK30K
KworVEVTVChQYWlyQXJncywgTm9BcmdzKSB7CisgIEVYUEVDVF9USEFUKFBhaXJBcmdzKCksCisg
ICAgICAgICAgICAgIFBhaXIoc3RkOjpmb3J3YXJkX2FzX3R1cGxlKCksIHN0ZDo6Zm9yd2FyZF9h
c190dXBsZSgpKSk7Cit9CisKK1RFU1QoUGFpckFyZ3MsIFR3b0FyZ3MpIHsKKyAgRVhQRUNUX0VR
KAorICAgICAgc3RkOjptYWtlX3BhaXIoc3RkOjpmb3J3YXJkX2FzX3R1cGxlKDEpLCBzdGQ6OmZv
cndhcmRfYXNfdHVwbGUoJ0EnKSksCisgICAgICBQYWlyQXJncygxLCAnQScpKTsKK30KKworVEVT
VChQYWlyQXJncywgUGFpcikgeworICBFWFBFQ1RfRVEoCisgICAgICBzdGQ6Om1ha2VfcGFpcihz
dGQ6OmZvcndhcmRfYXNfdHVwbGUoMSksIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgnQScpKSwKKyAg
ICAgIFBhaXJBcmdzKHN0ZDo6bWFrZV9wYWlyKDEsICdBJykpKTsKK30KKworVEVTVChQYWlyQXJn
cywgUGllY2V3aXNlKSB7CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6
Zm9yd2FyZF9hc190dXBsZSgxKSwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKCdBJykpLAorICAgICAg
UGFpckFyZ3Moc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUo
MSksCisgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoJ0EnKSkpOworfQorCitU
RVNUKFdpdGhDb25zdHJ1Y3RlZCwgU2ltcGxlKSB7CisgIEVYUEVDVF9FUSgxLCBXaXRoQ29uc3Ry
dWN0ZWQ8YWJzbDo6c3RyaW5nX3ZpZXc+KAorICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV90
dXBsZShzdGQ6OnN0cmluZygiYSIpKSwKKyAgICAgICAgICAgICAgICAgICBbXShhYnNsOjpzdHJp
bmdfdmlldyBzdHIpIHsgcmV0dXJuIHN0ci5zaXplKCk7IH0pKTsKK30KKwordGVtcGxhdGUgPGNs
YXNzIEYsIGNsYXNzIEFyZz4KK2RlY2x0eXBlKERlY29tcG9zZVZhbHVlKHN0ZDo6ZGVjbHZhbDxG
PigpLCBzdGQ6OmRlY2x2YWw8QXJnPigpKSkKK0RlY29tcG9zZVZhbHVlSW1wbChpbnQsIEYmJiBm
LCBBcmcmJiBhcmcpIHsKKyAgcmV0dXJuIERlY29tcG9zZVZhbHVlKHN0ZDo6Zm9yd2FyZDxGPihm
KSwgc3RkOjpmb3J3YXJkPEFyZz4oYXJnKSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBGLCBjbGFz
cyBBcmc+Citjb25zdCBjaGFyKiBEZWNvbXBvc2VWYWx1ZUltcGwoY2hhciwgRiYmIGYsIEFyZyYm
IGFyZykgeworICByZXR1cm4gIm5vdCBkZWNvbXBvc2FibGUiOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgRiwgY2xhc3MgQXJnPgorZGVjbHR5cGUoRGVjb21wb3NlVmFsdWVJbXBsKDAsIHN0ZDo6ZGVj
bHZhbDxGPigpLCBzdGQ6OmRlY2x2YWw8QXJnPigpKSkKK1RyeURlY29tcG9zZVZhbHVlKEYmJiBm
LCBBcmcmJiBhcmcpIHsKKyAgcmV0dXJuIERlY29tcG9zZVZhbHVlSW1wbCgwLCBzdGQ6OmZvcndh
cmQ8Rj4oZiksIHN0ZDo6Zm9yd2FyZDxBcmc+KGFyZykpOworfQorCitURVNUKERlY29tcG9zZVZh
bHVlLCBEZWNvbXBvc2FibGUpIHsKKyAgYXV0byBmID0gW10oY29uc3QgaW50JiB4LCBpbnQmJiB5
KSB7CisgICAgRVhQRUNUX0VRKCZ4LCAmeSk7CisgICAgRVhQRUNUX0VRKDQyLCB4KTsKKyAgICBy
ZXR1cm4gJ0EnOworICB9OworICBFWFBFQ1RfRVEoJ0EnLCBUcnlEZWNvbXBvc2VWYWx1ZShmLCA0
MikpOworfQorCitURVNUKERlY29tcG9zZVZhbHVlLCBOb3REZWNvbXBvc2FibGUpIHsKKyAgYXV0
byBmID0gW10odm9pZCopIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJNdXN0IG5vdCBiZSBjYWxs
ZWQiOworICAgIHJldHVybiAnQSc7CisgIH07CisgIEVYUEVDVF9TVFJFUSgibm90IGRlY29tcG9z
YWJsZSIsIFRyeURlY29tcG9zZVZhbHVlKGYsIDQyKSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBG
LCBjbGFzcy4uLiBBcmdzPgorZGVjbHR5cGUoRGVjb21wb3NlUGFpcihzdGQ6OmRlY2x2YWw8Rj4o
KSwgc3RkOjpkZWNsdmFsPEFyZ3M+KCkuLi4pKQorRGVjb21wb3NlUGFpckltcGwoaW50LCBGJiYg
ZiwgQXJncyYmLi4uIGFyZ3MpIHsKKyAgcmV0dXJuIERlY29tcG9zZVBhaXIoc3RkOjpmb3J3YXJk
PEY+KGYpLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgRiwgY2xhc3MuLi4gQXJncz4KK2NvbnN0IGNoYXIqIERlY29tcG9zZVBhaXJJbXBsKGNoYXIs
IEYmJiBmLCBBcmdzJiYuLi4gYXJncykgeworICByZXR1cm4gIm5vdCBkZWNvbXBvc2FibGUiOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MuLi4gQXJncz4KK2RlY2x0eXBlKERlY29tcG9z
ZVBhaXJJbXBsKDAsIHN0ZDo6ZGVjbHZhbDxGPigpLCBzdGQ6OmRlY2x2YWw8QXJncz4oKS4uLikp
CitUcnlEZWNvbXBvc2VQYWlyKEYmJiBmLCBBcmdzJiYuLi4gYXJncykgeworICByZXR1cm4gRGVj
b21wb3NlUGFpckltcGwoMCwgc3RkOjpmb3J3YXJkPEY+KGYpLCBzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworfQorCitURVNUKERlY29tcG9zZVBhaXIsIERlY29tcG9zYWJsZSkgeworICBh
dXRvIGYgPSBbXShjb25zdCBpbnQmIHgsIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdF90LCBzdGQ6
OnR1cGxlPGludCYmPiBrLAorICAgICAgICAgICAgICBzdGQ6OnR1cGxlPGRvdWJsZT4mJiB2KSB7
CisgICAgRVhQRUNUX0VRKCZ4LCAmc3RkOjpnZXQ8MD4oaykpOworICAgIEVYUEVDVF9FUSg0Miwg
eCk7CisgICAgRVhQRUNUX0VRKDAuNSwgc3RkOjpnZXQ8MD4odikpOworICAgIHJldHVybiAnQSc7
CisgIH07CisgIEVYUEVDVF9FUSgnQScsIFRyeURlY29tcG9zZVBhaXIoZiwgNDIsIDAuNSkpOwor
ICBFWFBFQ1RfRVEoJ0EnLCBUcnlEZWNvbXBvc2VQYWlyKGYsIHN0ZDo6bWFrZV9wYWlyKDQyLCAw
LjUpKSk7CisgIEVYUEVDVF9FUSgnQScsIFRyeURlY29tcG9zZVBhaXIoZiwgc3RkOjpwaWVjZXdp
c2VfY29uc3RydWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFr
ZV90dXBsZSg0MiksIHN0ZDo6bWFrZV90dXBsZSgwLjUpKSk7Cit9CisKK1RFU1QoRGVjb21wb3Nl
UGFpciwgTm90RGVjb21wb3NhYmxlKSB7CisgIGF1dG8gZiA9IFtdKC4uLikgeworICAgIEFERF9G
QUlMVVJFKCkgPDwgIk11c3Qgbm90IGJlIGNhbGxlZCI7CisgICAgcmV0dXJuICdBJzsKKyAgfTsK
KyAgRVhQRUNUX1NUUkVRKCJub3QgZGVjb21wb3NhYmxlIiwKKyAgICAgICAgICAgICAgIFRyeURl
Y29tcG9zZVBhaXIoZikpOworICBFWFBFQ1RfU1RSRVEoIm5vdCBkZWNvbXBvc2FibGUiLAorICAg
ICAgICAgICAgICAgVHJ5RGVjb21wb3NlUGFpcihmLCBzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3Qs
IHN0ZDo6bWFrZV90dXBsZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1ha2VfdHVwbGUoMC41KSkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFj
ZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ZjBkNzk0ZDk2NjM4ODE4NmRkN2RmZDY5YThhZTlhNmFkZjcwOWY2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMuaApAQCAt
MCwwICsxLDE0MyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLyBEZWZpbmUgdGhlIGRlZmF1bHQgSGFzaCBhbmQgRXEgZnVuY3Rpb25zIGZvciBTd2lzc1Rh
YmxlIGNvbnRhaW5lcnMuCisvLworLy8gc3RkOjpoYXNoPFQ+IGFuZCBzdGQ6OmVxdWFsX3RvPFQ+
IGFyZSBub3QgYXBwcm9wcmlhdGUgaGFzaCBhbmQgZXF1YWwKKy8vIGZ1bmN0aW9ucyBmb3IgU3dp
c3NUYWJsZSBjb250YWluZXJzLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yIHRoaXMuCisvLwor
Ly8gU3dpc3NUYWJsZSBjb250YWluZXJzIGFyZSBwb3dlciBvZiAyIHNpemVkIGNvbnRhaW5lcnM6
CisvLworLy8gVGhpcyBtZWFucyB0aGV5IHVzZSB0aGUgbG93ZXIgYml0cyBvZiB0aGUgaGFzaCB2
YWx1ZSB0byBmaW5kIHRoZSBzbG90IGZvcgorLy8gZWFjaCBlbnRyeS4gVGhlIHR5cGljYWwgaGFz
aCBmdW5jdGlvbiBmb3IgaW50ZWdyYWwgdHlwZXMgaXMgdGhlIGlkZW50aXR5LgorLy8gVGhpcyBp
cyBhIHZlcnkgd2VhayBoYXNoIGZ1bmN0aW9uIGZvciBTd2lzc1RhYmxlIGFuZCBhbnkgcG93ZXIg
b2YgMiBzaXplZAorLy8gaGFzaHRhYmxlIGltcGxlbWVudGF0aW9uIHdoaWNoIHdpbGwgbGVhZCB0
byBleGNlc3NpdmUgY29sbGlzaW9ucy4gRm9yCisvLyBTd2lzc1RhYmxlIHdlIHVzZSBtdXJtdXIz
IHN0eWxlIG1peGluZyB0byByZWR1Y2UgY29sbGlzaW9ucyB0byBhIG1pbmltdW0uCisvLworLy8g
U3dpc3NUYWJsZSBjb250YWluZXJzIHN1cHBvcnQgaGV0ZXJvZ2VuZW91cyBsb29rdXA6CisvLwor
Ly8gSW4gb3JkZXIgdG8gbWFrZSBoZXRlcm9nZW5lb3VzIGxvb2t1cCB3b3JrLCBoYXNoIGFuZCBl
cXVhbCBmdW5jdGlvbnMgbXVzdCBiZQorLy8gcG9seW1vcnBoaWMuIEF0IHRoZSBzYW1lIHRpbWUg
dGhleSBoYXZlIHRvIHNhdGlzZnkgdGhlIHNhbWUgcmVxdWlyZW1lbnRzIHRoZQorLy8gQysrIHN0
YW5kYXJkIGltcG9zZXMgb24gaGFzaCBmdW5jdGlvbnMgYW5kIGVxdWFsaXR5IG9wZXJhdG9ycy4g
VGhhdCBpczoKKy8vCisvLyAgIGlmIGhhc2hfZGVmYXVsdF9lcTxUPihhLCBiKSByZXR1cm5zIHRy
dWUgZm9yIGFueSBhIGFuZCBiIG9mIHR5cGUgVCwgdGhlbgorLy8gICBoYXNoX2RlZmF1bHRfaGFz
aDxUPihhKSBtdXN0IGVxdWFsIGhhc2hfZGVmYXVsdF9oYXNoPFQ+KGIpCisvLworLy8gRm9yIFN3
aXNzVGFibGUgY29udGFpbmVycyB0aGlzIHJlcXVpcmVtZW50IGlzIHJlbGF4ZWQgdG8gYWxsb3cg
YSBhbmQgYiBvZgorLy8gYW55IGFuZCBwb3NzaWJseSBkaWZmZXJlbnQgdHlwZXMuIE5vdGUgdGhh
dCBsaWtlIHRoZSBzdGFuZGFyZCB0aGUgaGFzaCBhbmQKKy8vIGVxdWFsIGZ1bmN0aW9ucyBhcmUg
c3RpbGwgYm91bmQgdG8gVC4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBzb21lIHR5cGUgVQor
Ly8gY2FuIGJlIGhhc2hlZCBieS90ZXN0ZWQgZm9yIGVxdWFsaXR5IGRpZmZlcmVudGx5IGRlcGVu
ZGluZyBvbiBULiBBIG5vdGFibGUKKy8vIGV4YW1wbGUgaXMgYGNvbnN0IGNoYXIqYC4gYGNvbnN0
IGNoYXIqYCBpcyB0cmVhdGVkIGFzIGEgYy1zdHlsZSBzdHJpbmcgd2hlbgorLy8gdGhlIGhhc2gg
ZnVuY3Rpb24gaXMgaGFzaDxzdHJpbmc+IGJ1dCBhcyBhIHBvaW50ZXIgd2hlbiB0aGUgaGFzaCBm
dW5jdGlvbiBpcworLy8gaGFzaDx2b2lkKj4uCisvLworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9J
TlRFUk5BTF9IQVNIX0ZVTkNUSU9OX0RFRkFVTFRTX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVS
X0lOVEVSTkFMX0hBU0hfRlVOQ1RJT05fREVGQVVMVFNfSF8KKworI2luY2x1ZGUgPHN0ZGludC5o
PgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0cmlu
Zz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcu
aCIKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9z
dHJpbmdfdmlldy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2lu
dGVybmFsIHsKKworLy8gVGhlIGhhc2ggb2YgYW4gb2JqZWN0IG9mIHR5cGUgVCBpcyBjb21wdXRl
ZCBieSB1c2luZyBhYnNsOjpIYXNoLgordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEUgPSB2b2lk
Pgorc3RydWN0IEhhc2hFcSB7CisgIHVzaW5nIEhhc2ggPSBhYnNsOjpIYXNoPFQ+OworICB1c2lu
ZyBFcSA9IHN0ZDo6ZXF1YWxfdG88VD47Cit9OworCitzdHJ1Y3QgU3RyaW5nSGFzaCB7CisgIHVz
aW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKworICBzaXplX3Qgb3BlcmF0b3IoKShhYnNsOjpz
dHJpbmdfdmlldyB2KSBjb25zdCB7CisgICAgcmV0dXJuIGFic2w6Okhhc2g8YWJzbDo6c3RyaW5n
X3ZpZXc+e30odik7CisgIH0KK307CisKKy8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3Vw
IGZvciBzdHJpbmctbGlrZSBlbGVtZW50cy4KK3N0cnVjdCBTdHJpbmdIYXNoRXEgeworICB1c2lu
ZyBIYXNoID0gU3RyaW5nSGFzaDsKKyAgc3RydWN0IEVxIHsKKyAgICB1c2luZyBpc190cmFuc3Bh
cmVudCA9IHZvaWQ7CisgICAgYm9vbCBvcGVyYXRvcigpKGFic2w6OnN0cmluZ192aWV3IGxocywg
YWJzbDo6c3RyaW5nX3ZpZXcgcmhzKSBjb25zdCB7CisgICAgICByZXR1cm4gbGhzID09IHJoczsK
KyAgICB9CisgIH07Cit9OwordGVtcGxhdGUgPD4KK3N0cnVjdCBIYXNoRXE8c3RkOjpzdHJpbmc+
IDogU3RyaW5nSGFzaEVxIHt9OwordGVtcGxhdGUgPD4KK3N0cnVjdCBIYXNoRXE8YWJzbDo6c3Ry
aW5nX3ZpZXc+IDogU3RyaW5nSGFzaEVxIHt9OworCisvLyBTdXBwb3J0cyBoZXRlcm9nZW5lb3Vz
IGxvb2t1cCBmb3IgcG9pbnRlcnMgYW5kIHNtYXJ0IHBvaW50ZXJzLgordGVtcGxhdGUgPGNsYXNz
IFQ+CitzdHJ1Y3QgSGFzaEVxPFQqPiB7CisgIHN0cnVjdCBIYXNoIHsKKyAgICB1c2luZyBpc190
cmFuc3BhcmVudCA9IHZvaWQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIFU+CisgICAgc2l6ZV90IG9w
ZXJhdG9yKCkoY29uc3QgVSYgcHRyKSBjb25zdCB7CisgICAgICByZXR1cm4gYWJzbDo6SGFzaDxj
b25zdCBUKj57fShIYXNoRXE6OlRvUHRyKHB0cikpOworICAgIH0KKyAgfTsKKyAgc3RydWN0IEVx
IHsKKyAgICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7CisgICAgdGVtcGxhdGUgPGNsYXNz
IEEsIGNsYXNzIEI+CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEEmIGEsIGNvbnN0IEImIGIp
IGNvbnN0IHsKKyAgICAgIHJldHVybiBIYXNoRXE6OlRvUHRyKGEpID09IEhhc2hFcTo6VG9QdHIo
Yik7CisgICAgfQorICB9OworCisgcHJpdmF0ZToKKyAgc3RhdGljIGNvbnN0IFQqIFRvUHRyKGNv
bnN0IFQqIHB0cikgeyByZXR1cm4gcHRyOyB9CisgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcyBE
PgorICBzdGF0aWMgY29uc3QgVCogVG9QdHIoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFUsIEQ+JiBw
dHIpIHsKKyAgICByZXR1cm4gcHRyLmdldCgpOworICB9CisgIHRlbXBsYXRlIDxjbGFzcyBVPgor
ICBzdGF0aWMgY29uc3QgVCogVG9QdHIoY29uc3Qgc3RkOjpzaGFyZWRfcHRyPFU+JiBwdHIpIHsK
KyAgICByZXR1cm4gcHRyLmdldCgpOworICB9Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xh
c3MgRD4KK3N0cnVjdCBIYXNoRXE8c3RkOjp1bmlxdWVfcHRyPFQsIEQ+PiA6IEhhc2hFcTxUKj4g
e307Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBIYXNoRXE8c3RkOjpzaGFyZWRfcHRyPFQ+
PiA6IEhhc2hFcTxUKj4ge307CisKKy8vIFRoaXMgaGVhZGVyJ3MgdmlzaWJpbGl0eSBpcyByZXN0
cmljdGVkLiAgSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBkZWZhdWx0CisvLyBoYXNoZXIgcGxl
YXNlIHVzZSB0aGUgY29udGFpbmVyJ3MgOjpoYXNoZXIgYWxpYXMgaW5zdGVhZC4KKy8vCisvLyBF
eGFtcGxlOiB0eXBlbmFtZSBIYXNoID0gdHlwZW5hbWUgYWJzbDo6ZmxhdF9oYXNoX21hcDxLLCBW
Pjo6aGFzaGVyCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3VzaW5nIGhhc2hfZGVmYXVsdF9oYXNoID0g
dHlwZW5hbWUgY29udGFpbmVyX2ludGVybmFsOjpIYXNoRXE8VD46Okhhc2g7CisKKy8vIFRoaXMg
aGVhZGVyJ3MgdmlzaWJpbGl0eSBpcyByZXN0cmljdGVkLiAgSWYgeW91IG5lZWQgdG8gYWNjZXNz
IHRoZSBkZWZhdWx0CisvLyBrZXkgZXF1YWwgcGxlYXNlIHVzZSB0aGUgY29udGFpbmVyJ3MgOjpr
ZXlfZXF1YWwgYWxpYXMgaW5zdGVhZC4KKy8vCisvLyBFeGFtcGxlOiB0eXBlbmFtZSBFcSA9IHR5
cGVuYW1lIGFic2w6OmZsYXRfaGFzaF9tYXA8SywgViwgSGFzaD46OmtleV9lcXVhbAordGVtcGxh
dGUgPGNsYXNzIFQ+Cit1c2luZyBoYXNoX2RlZmF1bHRfZXEgPSB0eXBlbmFtZSBjb250YWluZXJf
aW50ZXJuYWw6Okhhc2hFcTxUPjo6RXE7CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50
ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJf
SU5URVJOQUxfSEFTSF9GVU5DVElPTl9ERUZBVUxUU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzX3Rlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDY0YmFhZTAyY2RkYjBjNDFlNjEyZTU5Nzg4ZDgzN2Q1OWY5MTdmYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzX3Rl
c3QuY2MKQEAgLTAsMCArMSwyOTkgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9u
X2RlZmF1bHRzLmgiCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lu
Y2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6dGVz
dGluZzo6VHlwZXM7CisKK1RFU1QoRXEsIEludDMyKSB7CisgIGhhc2hfZGVmYXVsdF9lcTxpbnQz
Ml90PiBlcTsKKyAgRVhQRUNUX1RSVUUoZXEoMSwgMXUpKTsKKyAgRVhQRUNUX1RSVUUoZXEoMSwg
Y2hhcnsxfSkpOworICBFWFBFQ1RfVFJVRShlcSgxLCB0cnVlKSk7CisgIEVYUEVDVF9UUlVFKGVx
KDEsIGRvdWJsZXsxLjF9KSk7CisgIEVYUEVDVF9GQUxTRShlcSgxLCBjaGFyezJ9KSk7CisgIEVY
UEVDVF9GQUxTRShlcSgxLCAydSkpOworICBFWFBFQ1RfRkFMU0UoZXEoMSwgZmFsc2UpKTsKKyAg
RVhQRUNUX0ZBTFNFKGVxKDEsIDIuKSk7Cit9CisKK1RFU1QoSGFzaCwgSW50MzIpIHsKKyAgaGFz
aF9kZWZhdWx0X2hhc2g8aW50MzJfdD4gaGFzaDsKKyAgYXV0byBoID0gaGFzaCgxKTsKKyAgRVhQ
RUNUX0VRKGgsIGhhc2goMXUpKTsKKyAgRVhQRUNUX0VRKGgsIGhhc2goY2hhcnsxfSkpOworICBF
WFBFQ1RfRVEoaCwgaGFzaCh0cnVlKSk7CisgIEVYUEVDVF9FUShoLCBoYXNoKGRvdWJsZXsxLjF9
KSk7CisgIEVYUEVDVF9ORShoLCBoYXNoKDJ1KSk7CisgIEVYUEVDVF9ORShoLCBoYXNoKGNoYXJ7
Mn0pKTsKKyAgRVhQRUNUX05FKGgsIGhhc2goZmFsc2UpKTsKKyAgRVhQRUNUX05FKGgsIGhhc2go
Mi4pKTsKK30KKworZW51bSBjbGFzcyBNeUVudW0geyBBLCBCLCBDLCBEIH07CisKK1RFU1QoRXEs
IEVudW0pIHsKKyAgaGFzaF9kZWZhdWx0X2VxPE15RW51bT4gZXE7CisgIEVYUEVDVF9UUlVFKGVx
KE15RW51bTo6QSwgTXlFbnVtOjpBKSk7CisgIEVYUEVDVF9GQUxTRShlcShNeUVudW06OkEsIE15
RW51bTo6QikpOworfQorCitURVNUKEhhc2gsIEVudW0pIHsKKyAgaGFzaF9kZWZhdWx0X2hhc2g8
TXlFbnVtPiBoYXNoOworCisgIGZvciAoTXlFbnVtIGUgOiB7TXlFbnVtOjpBLCBNeUVudW06OkIs
IE15RW51bTo6Q30pIHsKKyAgICBhdXRvIGggPSBoYXNoKGUpOworICAgIEVYUEVDVF9FUShoLCBo
YXNoX2RlZmF1bHRfaGFzaDxpbnQ+e30oc3RhdGljX2Nhc3Q8aW50PihlKSkpOworICAgIEVYUEVD
VF9ORShoLCBoYXNoKE15RW51bTo6RCkpOworICB9Cit9CisKK3VzaW5nIFN0cmluZ1R5cGVzID0g
Ojp0ZXN0aW5nOjpUeXBlczxzdGQ6OnN0cmluZywgYWJzbDo6c3RyaW5nX3ZpZXc+OworCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBFcVN0cmluZyA6IDo6dGVzdGluZzo6VGVzdCB7CisgIGhh
c2hfZGVmYXVsdF9lcTxUPiBrZXlfZXE7Cit9OworCitUWVBFRF9URVNUX0NBU0UoRXFTdHJpbmcs
IFN0cmluZ1R5cGVzKTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgSGFzaFN0cmluZyA6
IDo6dGVzdGluZzo6VGVzdCB7CisgIGhhc2hfZGVmYXVsdF9oYXNoPFQ+IGhhc2hlcjsKK307CisK
K1RZUEVEX1RFU1RfQ0FTRShIYXNoU3RyaW5nLCBTdHJpbmdUeXBlcyk7CisKK1RZUEVEX1RFU1Qo
RXFTdHJpbmcsIFdvcmtzKSB7CisgIGF1dG8gZXEgPSB0aGlzLT5rZXlfZXE7CisgIEVYUEVDVF9U
UlVFKGVxKCJhIiwgImEiKSk7CisgIEVYUEVDVF9UUlVFKGVxKCJhIiwgYWJzbDo6c3RyaW5nX3Zp
ZXcoImEiKSkpOworICBFWFBFQ1RfVFJVRShlcSgiYSIsIHN0ZDo6c3RyaW5nKCJhIikpKTsKKyAg
RVhQRUNUX0ZBTFNFKGVxKCJhIiwgImIiKSk7CisgIEVYUEVDVF9GQUxTRShlcSgiYSIsIGFic2w6
OnN0cmluZ192aWV3KCJiIikpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKCJhIiwgc3RkOjpzdHJpbmco
ImIiKSkpOworfQorCitUWVBFRF9URVNUKEhhc2hTdHJpbmcsIFdvcmtzKSB7CisgIGF1dG8gaGFz
aCA9IHRoaXMtPmhhc2hlcjsKKyAgYXV0byBoID0gaGFzaCgiYSIpOworICBFWFBFQ1RfRVEoaCwg
aGFzaChhYnNsOjpzdHJpbmdfdmlldygiYSIpKSk7CisgIEVYUEVDVF9FUShoLCBoYXNoKHN0ZDo6
c3RyaW5nKCJhIikpKTsKKyAgRVhQRUNUX05FKGgsIGhhc2goYWJzbDo6c3RyaW5nX3ZpZXcoImIi
KSkpOworICBFWFBFQ1RfTkUoaCwgaGFzaChzdGQ6OnN0cmluZygiYiIpKSk7Cit9CisKK3N0cnVj
dCBOb0RlbGV0ZXIgeworICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgdm9pZCBvcGVyYXRvcigpKGNv
bnN0IFQqIHB0cikgY29uc3Qge30KK307CisKK3VzaW5nIFBvaW50ZXJUeXBlcyA9CisgICAgOjp0
ZXN0aW5nOjpUeXBlczxjb25zdCBpbnQqLCBpbnQqLCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgaW50
PiwKKyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBpbnQsIE5vRGVs
ZXRlcj4sCisgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8aW50Piwgc3RkOjp1
bmlxdWVfcHRyPGludCwgTm9EZWxldGVyPiwKKyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2hh
cmVkX3B0cjxjb25zdCBpbnQ+LCBzdGQ6OnNoYXJlZF9wdHI8aW50Pj47CisKK3RlbXBsYXRlIDxj
bGFzcyBUPgorc3RydWN0IEVxUG9pbnRlciA6IDo6dGVzdGluZzo6VGVzdCB7CisgIGhhc2hfZGVm
YXVsdF9lcTxUPiBrZXlfZXE7Cit9OworCitUWVBFRF9URVNUX0NBU0UoRXFQb2ludGVyLCBQb2lu
dGVyVHlwZXMpOworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBIYXNoUG9pbnRlciA6IDo6
dGVzdGluZzo6VGVzdCB7CisgIGhhc2hfZGVmYXVsdF9oYXNoPFQ+IGhhc2hlcjsKK307CisKK1RZ
UEVEX1RFU1RfQ0FTRShIYXNoUG9pbnRlciwgUG9pbnRlclR5cGVzKTsKKworVFlQRURfVEVTVChF
cVBvaW50ZXIsIFdvcmtzKSB7CisgIGludCBkdW1teTsKKyAgYXV0byBlcSA9IHRoaXMtPmtleV9l
cTsKKyAgYXV0byBzcHRyID0gc3RkOjptYWtlX3NoYXJlZDxpbnQ+KCk7CisgIHN0ZDo6c2hhcmVk
X3B0cjxjb25zdCBpbnQ+IGNzcHRyID0gc3B0cjsKKyAgaW50KiBwdHIgPSBzcHRyLmdldCgpOwor
ICBjb25zdCBpbnQqIGNwdHIgPSBwdHI7CisgIHN0ZDo6dW5pcXVlX3B0cjxpbnQsIE5vRGVsZXRl
cj4gdXB0cihwdHIpOworICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgaW50LCBOb0RlbGV0ZXI+IGN1
cHRyKHB0cik7CisKKyAgRVhQRUNUX1RSVUUoZXEocHRyLCBjcHRyKSk7CisgIEVYUEVDVF9UUlVF
KGVxKHB0ciwgc3B0cikpOworICBFWFBFQ1RfVFJVRShlcShwdHIsIHVwdHIpKTsKKyAgRVhQRUNU
X1RSVUUoZXEocHRyLCBjc3B0cikpOworICBFWFBFQ1RfVFJVRShlcShwdHIsIGN1cHRyKSk7Cisg
IEVYUEVDVF9GQUxTRShlcSgmZHVtbXksIGNwdHIpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKCZkdW1t
eSwgc3B0cikpOworICBFWFBFQ1RfRkFMU0UoZXEoJmR1bW15LCB1cHRyKSk7CisgIEVYUEVDVF9G
QUxTRShlcSgmZHVtbXksIGNzcHRyKSk7CisgIEVYUEVDVF9GQUxTRShlcSgmZHVtbXksIGN1cHRy
KSk7Cit9CisKK1RFU1QoSGFzaCwgRGVyaXZlZEFuZEJhc2UpIHsKKyAgc3RydWN0IEJhc2Uge307
CisgIHN0cnVjdCBEZXJpdmVkIDogQmFzZSB7fTsKKworICBoYXNoX2RlZmF1bHRfaGFzaDxCYXNl
Kj4gaGFzaGVyOworCisgIEJhc2UgYmFzZTsKKyAgRGVyaXZlZCBkZXJpdmVkOworICBFWFBFQ1Rf
TkUoaGFzaGVyKCZiYXNlKSwgaGFzaGVyKCZkZXJpdmVkKSk7CisgIEVYUEVDVF9FUShoYXNoZXIo
c3RhdGljX2Nhc3Q8QmFzZSo+KCZkZXJpdmVkKSksIGhhc2hlcigmZGVyaXZlZCkpOworCisgIGF1
dG8gZHAgPSBzdGQ6Om1ha2Vfc2hhcmVkPERlcml2ZWQ+KCk7CisgIEVYUEVDVF9FUShoYXNoZXIo
c3RhdGljX2Nhc3Q8QmFzZSo+KGRwLmdldCgpKSksIGhhc2hlcihkcCkpOworfQorCitURVNUKEhh
c2gsIEZ1bmN0aW9uUG9pbnRlcikgeworICB1c2luZyBGdW5jID0gaW50ICgqKSgpOworICBoYXNo
X2RlZmF1bHRfaGFzaDxGdW5jPiBoYXNoZXI7CisgIGhhc2hfZGVmYXVsdF9lcTxGdW5jPiBlcTsK
KworICBGdW5jIHAxID0gW10geyByZXR1cm4gMTsgfSwgcDIgPSBbXSB7IHJldHVybiAyOyB9Owor
ICBFWFBFQ1RfRVEoaGFzaGVyKHAxKSwgaGFzaGVyKHAxKSk7CisgIEVYUEVDVF9UUlVFKGVxKHAx
LCBwMSkpOworCisgIEVYUEVDVF9ORShoYXNoZXIocDEpLCBoYXNoZXIocDIpKTsKKyAgRVhQRUNU
X0ZBTFNFKGVxKHAxLCBwMikpOworfQorCitUWVBFRF9URVNUKEhhc2hQb2ludGVyLCBXb3Jrcykg
eworICBpbnQgZHVtbXk7CisgIGF1dG8gaGFzaCA9IHRoaXMtPmhhc2hlcjsKKyAgYXV0byBzcHRy
ID0gc3RkOjptYWtlX3NoYXJlZDxpbnQ+KCk7CisgIHN0ZDo6c2hhcmVkX3B0cjxjb25zdCBpbnQ+
IGNzcHRyID0gc3B0cjsKKyAgaW50KiBwdHIgPSBzcHRyLmdldCgpOworICBjb25zdCBpbnQqIGNw
dHIgPSBwdHI7CisgIHN0ZDo6dW5pcXVlX3B0cjxpbnQsIE5vRGVsZXRlcj4gdXB0cihwdHIpOwor
ICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgaW50LCBOb0RlbGV0ZXI+IGN1cHRyKHB0cik7CisKKyAg
RVhQRUNUX0VRKGhhc2gocHRyKSwgaGFzaChjcHRyKSk7CisgIEVYUEVDVF9FUShoYXNoKHB0ciks
IGhhc2goc3B0cikpOworICBFWFBFQ1RfRVEoaGFzaChwdHIpLCBoYXNoKHVwdHIpKTsKKyAgRVhQ
RUNUX0VRKGhhc2gocHRyKSwgaGFzaChjc3B0cikpOworICBFWFBFQ1RfRVEoaGFzaChwdHIpLCBo
YXNoKGN1cHRyKSk7CisgIEVYUEVDVF9ORShoYXNoKCZkdW1teSksIGhhc2goY3B0cikpOworICBF
WFBFQ1RfTkUoaGFzaCgmZHVtbXkpLCBoYXNoKHNwdHIpKTsKKyAgRVhQRUNUX05FKGhhc2goJmR1
bW15KSwgaGFzaCh1cHRyKSk7CisgIEVYUEVDVF9ORShoYXNoKCZkdW1teSksIGhhc2goY3NwdHIp
KTsKKyAgRVhQRUNUX05FKGhhc2goJmR1bW15KSwgaGFzaChjdXB0cikpOworfQorCisvLyBDYXJ0
ZXNpYW4gcHJvZHVjdCBvZiAoc3RyaW5nLCBzdGQ6OnN0cmluZywgYWJzbDo6c3RyaW5nX3ZpZXcp
CisvLyB3aXRoIChzdHJpbmcsIHN0ZDo6c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldywgY29uc3Qg
Y2hhciopLgordXNpbmcgU3RyaW5nVHlwZXNDYXJ0ZXNpYW5Qcm9kdWN0ID0gVHlwZXM8CisgICAg
Ly8gY2xhbmctZm9ybWF0IG9mZgorCisgICAgc3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0
cmluZz4sCisgICAgc3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldz4sCisg
ICAgc3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBjb25zdCBjaGFyKj4sCisKKyAgICBzdGQ6OnBhaXI8
YWJzbDo6c3RyaW5nX3ZpZXcsIHN0ZDo6c3RyaW5nPiwKKyAgICBzdGQ6OnBhaXI8YWJzbDo6c3Ry
aW5nX3ZpZXcsIGFic2w6OnN0cmluZ192aWV3PiwKKyAgICBzdGQ6OnBhaXI8YWJzbDo6c3RyaW5n
X3ZpZXcsIGNvbnN0IGNoYXIqPj47CisvLyBjbGFuZy1mb3JtYXQgb24KKworY29uc3RleHByIGNo
YXIga0ZpcnN0U3RyaW5nW10gPSAiYWJjMTIzIjsKK2NvbnN0ZXhwciBjaGFyIGtTZWNvbmRTdHJp
bmdbXSA9ICJpams0NTYiOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBTdHJpbmdM
aWtlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICB0eXBlbmFtZSBUOjpmaXJzdF90
eXBlIGExe2tGaXJzdFN0cmluZ307CisgIHR5cGVuYW1lIFQ6OnNlY29uZF90eXBlIGIxe2tGaXJz
dFN0cmluZ307CisgIHR5cGVuYW1lIFQ6OmZpcnN0X3R5cGUgYTJ7a1NlY29uZFN0cmluZ307Cisg
IHR5cGVuYW1lIFQ6OnNlY29uZF90eXBlIGIye2tTZWNvbmRTdHJpbmd9OworICBoYXNoX2RlZmF1
bHRfZXE8dHlwZW5hbWUgVDo6Zmlyc3RfdHlwZT4gZXE7CisgIGhhc2hfZGVmYXVsdF9oYXNoPHR5
cGVuYW1lIFQ6OmZpcnN0X3R5cGU+IGhhc2g7Cit9OworCitUWVBFRF9URVNUX0NBU0VfUChTdHJp
bmdMaWtlVGVzdCk7CisKK1RZUEVEX1RFU1RfUChTdHJpbmdMaWtlVGVzdCwgRXEpIHsKKyAgRVhQ
RUNUX1RSVUUodGhpcy0+ZXEodGhpcy0+YTEsIHRoaXMtPmIxKSk7CisgIEVYUEVDVF9UUlVFKHRo
aXMtPmVxKHRoaXMtPmIxLCB0aGlzLT5hMSkpOworfQorCitUWVBFRF9URVNUX1AoU3RyaW5nTGlr
ZVRlc3QsIE5vdEVxKSB7CisgIEVYUEVDVF9GQUxTRSh0aGlzLT5lcSh0aGlzLT5hMSwgdGhpcy0+
YjIpKTsKKyAgRVhQRUNUX0ZBTFNFKHRoaXMtPmVxKHRoaXMtPmIyLCB0aGlzLT5hMSkpOworfQor
CitUWVBFRF9URVNUX1AoU3RyaW5nTGlrZVRlc3QsIEhhc2hFcSkgeworICBFWFBFQ1RfRVEodGhp
cy0+aGFzaCh0aGlzLT5hMSksIHRoaXMtPmhhc2godGhpcy0+YjEpKTsKKyAgRVhQRUNUX0VRKHRo
aXMtPmhhc2godGhpcy0+YTIpLCB0aGlzLT5oYXNoKHRoaXMtPmIyKSk7CisgIC8vIEl0IHdvdWxk
IGJlIGEgcG9vciBoYXNoIGZ1bmN0aW9uIHdoaWNoIGNvbGxpZGVzIG9uIHRoZXNlIHN0cmluZ3Mu
CisgIEVYUEVDVF9ORSh0aGlzLT5oYXNoKHRoaXMtPmExKSwgdGhpcy0+aGFzaCh0aGlzLT5iMikp
OworfQorCitUWVBFRF9URVNUX0NBU0UoU3RyaW5nTGlrZVRlc3QsIFN0cmluZ1R5cGVzQ2FydGVz
aWFuUHJvZHVjdCk7CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5l
cl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworZW51bSBIYXNoIDogc2l6ZV90IHsK
KyAga1N0ZCA9IDB4MiwgICAgICAgLy8gc3RkOjpoYXNoCisjaWZkZWYgX01TQ19WRVIKKyAga0V4
dGVuc2lvbiA9IGtTdGQsICAvLyBJbiBNU1ZDLCBzdGQ6Omhhc2ggPT0gOjpoYXNoCisjZWxzZSAg
ICAgICAgICAgICAgICAgLy8gX01TQ19WRVIKKyAga0V4dGVuc2lvbiA9IDB4NCwgIC8vIDo6aGFz
aCAoR0NDIGV4dGVuc2lvbikKKyNlbmRpZiAgICAgICAgICAgICAgICAvLyBfTVNDX1ZFUgorfTsK
KworLy8gSCBpcyBhIGJpdG1hc2sgb2YgSGFzaCBlbnVtZXJhdGlvbnMuCisvLyBIYXNoYWJsZTxI
PiBpcyBoYXNoYWJsZSB2aWEgYWxsIG1lYW5zIHNwZWNpZmllZCBpbiBILgordGVtcGxhdGUgPGlu
dCBIPgorc3RydWN0IEhhc2hhYmxlIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIEhhc2hhYmxl
QnkoSGFzaCBoKSB7IHJldHVybiBoICYgSDsgfQorfTsKKworbmFtZXNwYWNlIHN0ZCB7Cit0ZW1w
bGF0ZSA8aW50IEg+CitzdHJ1Y3QgaGFzaDxIYXNoYWJsZTxIPj4geworICB0ZW1wbGF0ZSA8Y2xh
c3MgRSA9IEhhc2hhYmxlPEg+LAorICAgICAgICAgICAgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxFOjpIYXNoYWJsZUJ5KGtTdGQpPjo6dHlwZT4KKyAgc2l6ZV90IG9wZXJhdG9yKCko
RSkgY29uc3QgeworICAgIHJldHVybiBrU3RkOworICB9Cit9OworfSAgLy8gbmFtZXNwYWNlIHN0
ZAorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25h
bWVzcGFjZSB7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc2l6ZV90IEhhc2goY29uc3QgVCYgdikg
eworICByZXR1cm4gaGFzaF9kZWZhdWx0X2hhc2g8VD4oKSh2KTsKK30KKworVEVTVChEZWxlZ2F0
ZSwgSGFzaERpc3BhdGNoKSB7CisgIEVYUEVDVF9FUShIYXNoKGtTdGQpLCBIYXNoKEhhc2hhYmxl
PGtTdGQ+KCkpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFp
bmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDZhOWRm
MTZmOGEzMzZjMTQzYWZhZWVjMjA2OTE0MjM2MWI4ODljCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuY2MKQEAgLTAsMCAr
MSw3MiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIKKwor
I2luY2x1ZGUgPGRlcXVlPgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVy
X2ludGVybmFsIHsKK25hbWVzcGFjZSBoYXNoX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK2Ns
YXNzIFJhbmRvbURldmljZVNlZWRTZXEgeworIHB1YmxpYzoKKyAgdXNpbmcgcmVzdWx0X3R5cGUg
PSB0eXBlbmFtZSBzdGQ6OnJhbmRvbV9kZXZpY2U6OnJlc3VsdF90eXBlOworCisgIHRlbXBsYXRl
IDxjbGFzcyBJdGVyYXRvcj4KKyAgdm9pZCBnZW5lcmF0ZShJdGVyYXRvciBzdGFydCwgSXRlcmF0
b3IgZW5kKSB7CisgICAgd2hpbGUgKHN0YXJ0ICE9IGVuZCkgeworICAgICAgKnN0YXJ0ID0gZ2Vu
XygpOworICAgICAgKytzdGFydDsKKyAgICB9CisgIH0KKworIHByaXZhdGU6CisgIHN0ZDo6cmFu
ZG9tX2RldmljZSBnZW5fOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK3N0ZDo6bXQxOTkzN182
NCogR2V0VGhyZWFkTG9jYWxSbmcoKSB7CisgIFJhbmRvbURldmljZVNlZWRTZXEgc2VlZF9zZXE7
CisgIHRocmVhZF9sb2NhbCBhdXRvKiBybmcgPSBuZXcgc3RkOjptdDE5OTM3XzY0KHNlZWRfc2Vx
KTsKKyAgcmV0dXJuIHJuZzsKK30KKworc3RkOjpzdHJpbmcgR2VuZXJhdG9yPHN0ZDo6c3RyaW5n
Pjo6b3BlcmF0b3IoKSgpIGNvbnN0IHsKKyAgLy8gTk9MSU5UTkVYVExJTkUocnVudGltZS9pbnQp
CisgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPHNob3J0PiBjaGFycygweDIwLCAweDdF
KTsKKyAgc3RkOjpzdHJpbmcgcmVzOworICByZXMucmVzaXplKDMyKTsKKyAgc3RkOjpnZW5lcmF0
ZShyZXMuYmVnaW4oKSwgcmVzLmVuZCgpLAorICAgICAgICAgICAgICAgIFsmXSgpIHsgcmV0dXJu
IGNoYXJzKCpHZXRUaHJlYWRMb2NhbFJuZygpKTsgfSk7CisgIHJldHVybiByZXM7Cit9CisKK2Fi
c2w6OnN0cmluZ192aWV3IEdlbmVyYXRvcjxhYnNsOjpzdHJpbmdfdmlldz46Om9wZXJhdG9yKCko
KSBjb25zdCB7CisgIHN0YXRpYyBhdXRvKiBhcmVuYSA9IG5ldyBzdGQ6OmRlcXVlPHN0ZDo6c3Ry
aW5nPigpOworICAvLyBOT0xJTlRORVhUTElORShydW50aW1lL2ludCkKKyAgc3RkOjp1bmlmb3Jt
X2ludF9kaXN0cmlidXRpb248c2hvcnQ+IGNoYXJzKDB4MjAsIDB4N0UpOworICBhcmVuYS0+ZW1w
bGFjZV9iYWNrKCk7CisgIGF1dG8mIHJlcyA9IGFyZW5hLT5iYWNrKCk7CisgIHJlcy5yZXNpemUo
MzIpOworICBzdGQ6OmdlbmVyYXRlKHJlcy5iZWdpbigpLCByZXMuZW5kKCksCisgICAgICAgICAg
ICAgICAgWyZdKCkgeyByZXR1cm4gY2hhcnMoKkdldFRocmVhZExvY2FsUm5nKCkpOyB9KTsKKyAg
cmV0dXJuIHJlczsKK30KKworfSAgLy8gbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwKK30gIC8vIG5h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MGQ3NzEwMjZjN2I1MDA1MTM1ZDI4NjMxNjVhMDA5Y2I0ZGJjYTk4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3Rpbmcu
aApAQCAtMCwwICsxLDE1MCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLyBHZW5lcmF0ZXMgcmFuZG9tIHZhbHVlcyBmb3IgdGVzdGluZy4gU3BlY2lhbGl6
ZWQgb25seSBmb3IgdGhlIGZldyB0eXBlcyB3ZQorLy8gY2FyZSBhYm91dC4KKworI2lmbmRlZiBB
QlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIX0dFTkVSQVRPUl9URVNUSU5HX0hfCisjZGVmaW5l
IEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hfR0VORVJBVE9SX1RFU1RJTkdfSF8KKworI2lu
Y2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxpb3Nmd2Q+
CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHR1cGxlPgorI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nLmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJh
aXRzLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25hbWVzcGFj
ZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIGhhc2hf
aW50ZXJuYWwgeworbmFtZXNwYWNlIGdlbmVyYXRvcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxj
bGFzcyBDb250YWluZXIsIGNsYXNzID0gdm9pZD4KK3N0cnVjdCBJc01hcCA6IHN0ZDo6ZmFsc2Vf
dHlwZSB7fTsKKwordGVtcGxhdGUgPGNsYXNzIE1hcD4KK3N0cnVjdCBJc01hcDxNYXAsIGFic2w6
OnZvaWRfdDx0eXBlbmFtZSBNYXA6Om1hcHBlZF90eXBlPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsK
KworfSAgLy8gbmFtZXNwYWNlIGdlbmVyYXRvcl9pbnRlcm5hbAorCitzdGQ6Om10MTk5MzdfNjQq
IEdldFRocmVhZExvY2FsUm5nKCk7CisKK2VudW0gRW51bSB7CisgIGtFbnVtRW1wdHksCisgIGtF
bnVtRGVsZXRlZCwKK307CisKK2VudW0gY2xhc3MgRW51bUNsYXNzIDogdWludDY0X3QgeworICBr
RW1wdHksCisgIGtEZWxldGVkLAorfTsKKworaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0mIG8sIGNvbnN0IEVudW1DbGFzcyYgZWMpIHsKKyAgcmV0dXJuIG8gPDwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVjKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNz
IEUgPSB2b2lkPgorc3RydWN0IEdlbmVyYXRvcjsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1
Y3QgR2VuZXJhdG9yPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8
VD46OnZhbHVlPjo6dHlwZT4geworICBUIG9wZXJhdG9yKCkoKSBjb25zdCB7CisgICAgc3RkOjp1
bmlmb3JtX2ludF9kaXN0cmlidXRpb248VD4gZGlzdDsKKyAgICByZXR1cm4gZGlzdCgqR2V0VGhy
ZWFkTG9jYWxSbmcoKSk7CisgIH0KK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgR2VuZXJhdG9y
PEVudW0+IHsKKyAgRW51bSBvcGVyYXRvcigpKCkgY29uc3QgeworICAgIHN0ZDo6dW5pZm9ybV9p
bnRfZGlzdHJpYnV0aW9uPHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEVudW0+Ojp0eXBl
PgorICAgICAgICBkaXN0OworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBhdXRvIHZhcmlhdGUg
PSBkaXN0KCpHZXRUaHJlYWRMb2NhbFJuZygpKTsKKyAgICAgIGlmICh2YXJpYXRlICE9IGtFbnVt
RW1wdHkgJiYgdmFyaWF0ZSAhPSBrRW51bURlbGV0ZWQpCisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxFbnVtPih2YXJpYXRlKTsKKyAgICB9CisgIH0KK307CisKK3RlbXBsYXRlIDw+CitzdHJ1
Y3QgR2VuZXJhdG9yPEVudW1DbGFzcz4geworICBFbnVtQ2xhc3Mgb3BlcmF0b3IoKSgpIGNvbnN0
IHsKKyAgICBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjwKKyAgICAgICAgdHlwZW5hbWUg
c3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bUNsYXNzPjo6dHlwZT4KKyAgICAgICAgZGlzdDsKKyAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgRW51bUNsYXNzIHZhcmlhdGUgPSBzdGF0aWNfY2FzdDxF
bnVtQ2xhc3M+KGRpc3QoKkdldFRocmVhZExvY2FsUm5nKCkpKTsKKyAgICAgIGlmICh2YXJpYXRl
ICE9IEVudW1DbGFzczo6a0VtcHR5ICYmIHZhcmlhdGUgIT0gRW51bUNsYXNzOjprRGVsZXRlZCkK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudW1DbGFzcz4odmFyaWF0ZSk7CisgICAgfQor
ICB9Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IEdlbmVyYXRvcjxzdGQ6OnN0cmluZz4gewor
ICBzdGQ6OnN0cmluZyBvcGVyYXRvcigpKCkgY29uc3Q7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3Ry
dWN0IEdlbmVyYXRvcjxhYnNsOjpzdHJpbmdfdmlldz4geworICBhYnNsOjpzdHJpbmdfdmlldyBv
cGVyYXRvcigpKCkgY29uc3Q7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IEdlbmVyYXRvcjxO
b25TdGFuZGFyZExheW91dD4geworICBOb25TdGFuZGFyZExheW91dCBvcGVyYXRvcigpKCkgY29u
c3QgeworICAgIHJldHVybiBOb25TdGFuZGFyZExheW91dChHZW5lcmF0b3I8c3RkOjpzdHJpbmc+
KCkoKSk7CisgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBWPgorc3RydWN0IEdl
bmVyYXRvcjxzdGQ6OnBhaXI8SywgVj4+IHsKKyAgc3RkOjpwYWlyPEssIFY+IG9wZXJhdG9yKCko
KSBjb25zdCB7CisgICAgcmV0dXJuIHN0ZDo6cGFpcjxLLCBWPihHZW5lcmF0b3I8dHlwZW5hbWUg
c3RkOjpkZWNheTxLPjo6dHlwZT4oKSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Vu
ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8Vj46OnR5cGU+KCkoKSk7CisgIH0KK307CisKK3Rl
bXBsYXRlIDxjbGFzcy4uLiBUcz4KK3N0cnVjdCBHZW5lcmF0b3I8c3RkOjp0dXBsZTxUcy4uLj4+
IHsKKyAgc3RkOjp0dXBsZTxUcy4uLj4gb3BlcmF0b3IoKSgpIGNvbnN0IHsKKyAgICByZXR1cm4g
c3RkOjp0dXBsZTxUcy4uLj4oR2VuZXJhdG9yPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VHM+Ojp0eXBl
PigpKCkuLi4pOworICB9Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVT4KK3N0cnVjdCBHZW5lcmF0
b3I8VSwgYWJzbDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxVJj4oKS5rZXkoKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxVJj4o
KS52YWx1ZSgpKT4+CisgICAgOiBHZW5lcmF0b3I8c3RkOjpwYWlyPAorICAgICAgICAgIHR5cGVu
YW1lIHN0ZDo6ZGVjYXk8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFUmPigpLmtleSgpKT46OnR5cGUs
CisgICAgICAgICAgdHlwZW5hbWUgc3RkOjpkZWNheTxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VSY+
KCkudmFsdWUoKSk+Ojp0eXBlPj4ge307CisKK3RlbXBsYXRlIDxjbGFzcyBDb250YWluZXI+Cit1
c2luZyBHZW5lcmF0ZWRUeXBlID0gZGVjbHR5cGUoCisgICAgc3RkOjpkZWNsdmFsPGNvbnN0IEdl
bmVyYXRvcjwKKyAgICAgICAgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxnZW5lcmF0b3JfaW50
ZXJuYWw6OklzTWFwPENvbnRhaW5lcj46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDb250YWluZXI6OmtleV90eXBlPjo6dHlwZT4m
PigpKCkpOworCit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNl
IGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBB
QlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIX0dFTkVSQVRPUl9URVNUSU5HX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZmM3NmVhZDdhNjg0MmU5ZmNiY2YzMjA0MmYxMmY3ZWFjNmU5Zjk4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaApAQCAtMCww
ICsxLDE3OCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
LyBVdGlsaXRpZXMgdG8gaGVscCB0ZXN0cyB2ZXJpZnkgdGhhdCBoYXNoIHRhYmxlcyBwcm9wZXJs
eSBoYW5kbGUgc3RhdGVmdWwKKy8vIGFsbG9jYXRvcnMgYW5kIGhhc2ggZnVuY3Rpb25zLgorCisj
aWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hfUE9MSUNZX1RFU1RJTkdfSF8KKyNk
ZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSF9QT0xJQ1lfVEVTVElOR19IXworCisj
aW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPG9zdHJlYW0+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRp
bGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaC5oIgor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorCituYW1lc3BhY2UgYWJzbCB7
CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSBoYXNoX3Rlc3Rpbmdf
aW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xhc3MgRGVyaXZlZD4KK3N0cnVjdCBXaXRoSWQgewor
ICBXaXRoSWQoKSA6IGlkXyhuZXh0X2lkPERlcml2ZWQ+KCkpIHt9CisgIFdpdGhJZChjb25zdCBX
aXRoSWQmIHRoYXQpIDogaWRfKHRoYXQuaWRfKSB7fQorICBXaXRoSWQoV2l0aElkJiYgdGhhdCkg
OiBpZF8odGhhdC5pZF8pIHsgdGhhdC5pZF8gPSAwOyB9CisgIFdpdGhJZCYgb3BlcmF0b3I9KGNv
bnN0IFdpdGhJZCYgdGhhdCkgeworICAgIGlkXyA9IHRoYXQuaWRfOworICAgIHJldHVybiAqdGhp
czsKKyAgfQorICBXaXRoSWQmIG9wZXJhdG9yPShXaXRoSWQmJiB0aGF0KSB7CisgICAgaWRfID0g
dGhhdC5pZF87CisgICAgdGhhdC5pZF8gPSAwOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisg
IHNpemVfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIGlkXzsgfQorCisgIGZyaWVuZCBib29sIG9wZXJh
dG9yPT0oY29uc3QgV2l0aElkJiBhLCBjb25zdCBXaXRoSWQmIGIpIHsKKyAgICByZXR1cm4gYS5p
ZF8gPT0gYi5pZF87CisgIH0KKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXaXRoSWQm
IGEsIGNvbnN0IFdpdGhJZCYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CisKKyBwcm90ZWN0ZWQ6
CisgIGV4cGxpY2l0IFdpdGhJZChzaXplX3QgaWQpIDogaWRfKGlkKSB7fQorCisgcHJpdmF0ZToK
KyAgc2l6ZV90IGlkXzsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgc3RhdGljIHNpemVfdCBu
ZXh0X2lkKCkgeworICAgIC8vIDAgaXMgcmVzZXJ2ZWQgZm9yIG1vdmVkIGZyb20gc3RhdGUuCisg
ICAgc3RhdGljIHNpemVfdCBnSWQgPSAxOworICAgIHJldHVybiBnSWQrKzsKKyAgfQorfTsKKwor
fSAgLy8gbmFtZXNwYWNlIGhhc2hfdGVzdGluZ19pbnRlcm5hbAorCitzdHJ1Y3QgTm9uU3RhbmRh
cmRMYXlvdXQgeworICBOb25TdGFuZGFyZExheW91dCgpIHt9CisgIGV4cGxpY2l0IE5vblN0YW5k
YXJkTGF5b3V0KHN0ZDo6c3RyaW5nIHMpIDogdmFsdWUoc3RkOjptb3ZlKHMpKSB7fQorICB2aXJ0
dWFsIH5Ob25TdGFuZGFyZExheW91dCgpIHt9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBOb25TdGFuZGFyZExheW91dCYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBOb25TdGFuZGFyZExheW91dCYgYikgeworICAgIHJldHVybiBhLnZhbHVlID09IGIudmFsdWU7
CisgIH0KKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb25TdGFuZGFyZExheW91dCYg
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOb25TdGFuZGFyZExheW91dCYgYikg
eworICAgIHJldHVybiBhLnZhbHVlICE9IGIudmFsdWU7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIGNvbnN0IE5vblN0YW5kYXJk
TGF5b3V0JiB2KSB7CisgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCB2LnZhbHVl
KTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIHZhbHVlOworfTsKKworc3RydWN0IFN0YXRlZnVsVGVz
dGluZ0hhc2gKKyAgICA6IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF90ZXN0aW5nX2lu
dGVybmFsOjpXaXRoSWQ8CisgICAgICAgICAgU3RhdGVmdWxUZXN0aW5nSGFzaD4geworICB0ZW1w
bGF0ZSA8Y2xhc3MgVD4KKyAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgVCYgdCkgY29uc3Qgewor
ICAgIHJldHVybiBhYnNsOjpIYXNoPFQ+e30odCk7CisgIH0KK307CisKK3N0cnVjdCBTdGF0ZWZ1
bFRlc3RpbmdFcXVhbAorICAgIDogYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX3Rlc3Rp
bmdfaW50ZXJuYWw6OldpdGhJZDwKKyAgICAgICAgICBTdGF0ZWZ1bFRlc3RpbmdFcXVhbD4gewor
ICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFQm
IHQsIGNvbnN0IFUmIHUpIGNvbnN0IHsKKyAgICByZXR1cm4gdCA9PSB1OworICB9Cit9OworCisv
LyBJdCBpcyBleHBlY3RlZCB0aGF0IEFsbG9jKCkgPT0gQWxsb2MoKSBmb3IgYWxsIGFsbG9jYXRv
cnMgc28gd2UgY2Fubm90IHVzZQorLy8gV2l0aElkIGJhc2UuIFdlIG5lZWQgdG8gZXhwbGljaXRs
eSBhc3NpZ24gaWRzLgordGVtcGxhdGUgPGNsYXNzIFQgPSBpbnQ+CitzdHJ1Y3QgQWxsb2MgOiBz
dGQ6OmFsbG9jYXRvcjxUPiB7CisgIHVzaW5nIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcCA9
IHN0ZDo6dHJ1ZV90eXBlOworCisgIC8vIFVzaW5nIG9sZCBwYXJhZGlnbSBmb3IgdGhpcyB0byBl
bnN1cmUgY29tcGF0aWJpbGl0eS4KKyAgZXhwbGljaXQgQWxsb2Moc2l6ZV90IGlkID0gMCkgOiBp
ZF8oaWQpIHt9CisKKyAgQWxsb2MoY29uc3QgQWxsb2MmKSA9IGRlZmF1bHQ7CisgIEFsbG9jJiBv
cGVyYXRvcj0oY29uc3QgQWxsb2MmKSA9IGRlZmF1bHQ7CisKKyAgdGVtcGxhdGUgPGNsYXNzIFU+
CisgIEFsbG9jKGNvbnN0IEFsbG9jPFU+JiB0aGF0KSA6IHN0ZDo6YWxsb2NhdG9yPFQ+KHRoYXQp
LCBpZF8odGhhdC5pZCgpKSB7fQorCisgIHRlbXBsYXRlIDxjbGFzcyBVPgorICBzdHJ1Y3QgcmVi
aW5kIHsKKyAgICB1c2luZyBvdGhlciA9IEFsbG9jPFU+OworICB9OworCisgIHNpemVfdCBpZCgp
IGNvbnN0IHsgcmV0dXJuIGlkXzsgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
QWxsb2MmIGEsIGNvbnN0IEFsbG9jJiBiKSB7CisgICAgcmV0dXJuIGEuaWRfID09IGIuaWRfOwor
ICB9CisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgQWxsb2MmIGEsIGNvbnN0IEFsbG9j
JiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KKworIHByaXZhdGU6CisgIHNpemVfdCBpZF8gPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworfTsKKwordGVtcGxhdGUgPGNsYXNz
IE1hcD4KK2F1dG8gaXRlbXMoY29uc3QgTWFwJiBtKSAtPiBzdGQ6OnZlY3RvcjwKKyAgICBzdGQ6
OnBhaXI8dHlwZW5hbWUgTWFwOjprZXlfdHlwZSwgdHlwZW5hbWUgTWFwOjptYXBwZWRfdHlwZT4+
IHsKKyAgdXNpbmcgc3RkOjpnZXQ7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjx0eXBlbmFtZSBN
YXA6OmtleV90eXBlLCB0eXBlbmFtZSBNYXA6Om1hcHBlZF90eXBlPj4gcmVzOworICByZXMucmVz
ZXJ2ZShtLnNpemUoKSk7CisgIGZvciAoY29uc3QgYXV0byYgdiA6IG0pIHJlcy5lbXBsYWNlX2Jh
Y2soZ2V0PDA+KHYpLCBnZXQ8MT4odikpOworICByZXR1cm4gcmVzOworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgU2V0PgorYXV0byBrZXlzKGNvbnN0IFNldCYgcykKKyAgICAtPiBzdGQ6OnZlY3Rvcjx0
eXBlbmFtZSBzdGQ6OmRlY2F5PHR5cGVuYW1lIFNldDo6a2V5X3R5cGU+Ojp0eXBlPiB7CisgIHN0
ZDo6dmVjdG9yPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8dHlwZW5hbWUgU2V0OjprZXlfdHlwZT46OnR5
cGU+IHJlczsKKyAgcmVzLnJlc2VydmUocy5zaXplKCkpOworICBmb3IgKGNvbnN0IGF1dG8mIHYg
OiBzKSByZXMuZW1wbGFjZV9iYWNrKHYpOworICByZXR1cm4gcmVzOworfQorCit9ICAvLyBuYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisvLyBBQlNM
X1VOT1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUyBpcyBmYWxzZSBmb3IgZ2xpYmN4eCB2ZXJz
aW9ucworLy8gd2hlcmUgdGhlIHVub3JkZXJlZCBjb250YWluZXJzIGFyZSBtaXNzaW5nIGNlcnRh
aW4gY29uc3RydWN0b3JzIHRoYXQKKy8vIHRha2UgYWxsb2NhdG9yIGFyZ3VtZW50cy4gVGhpcyB0
ZXN0IGlzIGRlZmluZWQgYWQtaG9jIGZvciB0aGUgcGxhdGZvcm1zCisvLyB3ZSBjYXJlIGFib3V0
IChub3RhYmx5IENyb3NzdG9vbCAxNykgYmVjYXVzZSBsaWJzdGRjeHgncyB1c2VsZXNzCisvLyB2
ZXJzaW9uaW5nIHNjaGVtZSBwcmVjbHVkZXMgYSBtb3JlIHByaW5jaXBsZWQgc29sdXRpb24uCisj
aWYgZGVmaW5lZChfX0dMSUJDWFhfXykgJiYgX19HTElCQ1hYX18gPD0gMjAxNDA0MjUKKyNkZWZp
bmUgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMgMAorI2Vsc2UKKyNkZWZpbmUg
QUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMgMQorI2VuZGlmCisKKyNlbmRpZiAg
Ly8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSF9QT0xJQ1lfVEVTVElOR19IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmdfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzIxNWM0MjM3YWU1NTE2ODZkZDgyNGQ0MmRhN2NmYjkzYjBjZTkxNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0
aW5nX3Rlc3QuY2MKQEAgLTAsMCArMSw0MyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9s
aWN5X3Rlc3RpbmcuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSBh
YnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworVEVT
VChfLCBIYXNoKSB7CisgIFN0YXRlZnVsVGVzdGluZ0hhc2ggaDE7CisgIEVYUEVDVF9FUSgxLCBo
MS5pZCgpKTsKKyAgU3RhdGVmdWxUZXN0aW5nSGFzaCBoMjsKKyAgRVhQRUNUX0VRKDIsIGgyLmlk
KCkpOworICBTdGF0ZWZ1bFRlc3RpbmdIYXNoIGgxYyhoMSk7CisgIEVYUEVDVF9FUSgxLCBoMWMu
aWQoKSk7CisgIFN0YXRlZnVsVGVzdGluZ0hhc2ggaDJtKHN0ZDo6bW92ZShoMikpOworICBFWFBF
Q1RfRVEoMiwgaDJtLmlkKCkpOworICBFWFBFQ1RfRVEoMCwgaDIuaWQoKSk7CisgIFN0YXRlZnVs
VGVzdGluZ0hhc2ggaDM7CisgIEVYUEVDVF9FUSgzLCBoMy5pZCgpKTsKKyAgaDMgPSBTdGF0ZWZ1
bFRlc3RpbmdIYXNoKCk7CisgIEVYUEVDVF9FUSg0LCBoMy5pZCgpKTsKKyAgaDMgPSBzdGQ6Om1v
dmUoaDEpOworICBFWFBFQ1RfRVEoMSwgaDMuaWQoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQor
fSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMjllNDdlMTc1YzlkZmFlMzUyNGI3Y2IxNTM5MzEwMjZkZTViZjk3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oCkBA
IC0wLDAgKzEsMTg5IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
CisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hfUE9MSUNZX1RSQUlUU19IXwor
I2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIX1BPTElDWV9UUkFJVFNfSF8KKwor
I2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFp
dHMuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7
CisKKy8vIERlZmluZXMgaG93IHNsb3RzIGFyZSBpbml0aWFsaXplZC9kZXN0cm95ZWQvbW92ZWQu
Cit0ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5LCBjbGFzcyA9IHZvaWQ+CitzdHJ1Y3QgaGFzaF9wb2xp
Y3lfdHJhaXRzIHsKKyBwcml2YXRlOgorICBzdHJ1Y3QgUmV0dXJuS2V5IHsKKyAgICAvLyBXZSBy
ZXR1cm4gYEtleWAgaGVyZS4KKyAgICAvLyBXaGVuIEtleT1UJiwgd2UgZm9yd2FyZCB0aGUgbHZh
bHVlIHJlZmVyZW5jZS4KKyAgICAvLyBXaGVuIEtleT1ULCB3ZSByZXR1cm4gYnkgdmFsdWUgdG8g
YXZvaWQgYSBkYW5nbGluZyByZWZlcmVuY2UuCisgICAgLy8gZWcsIGZvciBzdHJpbmdfaGFzaF9t
YXAuCisgICAgdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MuLi4gQXJncz4KKyAgICBLZXkgb3Bl
cmF0b3IoKShLZXkmJiBrLCBjb25zdCBBcmdzJi4uLikgY29uc3QgeworICAgICAgcmV0dXJuIHN0
ZDo6Zm9yd2FyZDxLZXk+KGspOworICAgIH0KKyAgfTsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgUCA9
IFBvbGljeSwgY2xhc3MgPSB2b2lkPgorICBzdHJ1Y3QgQ29uc3RhbnRJdGVyYXRvcnNJbXBsIDog
c3RkOjpmYWxzZV90eXBlIHt9OworCisgIHRlbXBsYXRlIDxjbGFzcyBQPgorICBzdHJ1Y3QgQ29u
c3RhbnRJdGVyYXRvcnNJbXBsPFAsIGFic2w6OnZvaWRfdDx0eXBlbmFtZSBQOjpjb25zdGFudF9p
dGVyYXRvcnM+PgorICAgICAgOiBQOjpjb25zdGFudF9pdGVyYXRvcnMge307CisKKyBwdWJsaWM6
CisgIC8vIFRoZSBhY3R1YWwgb2JqZWN0IHN0b3JlZCBpbiB0aGUgaGFzaCB0YWJsZS4KKyAgdXNp
bmcgc2xvdF90eXBlID0gdHlwZW5hbWUgUG9saWN5OjpzbG90X3R5cGU7CisKKyAgLy8gVGhlIHR5
cGUgb2YgdGhlIGtleXMgc3RvcmVkIGluIHRoZSBoYXNodGFibGUuCisgIHVzaW5nIGtleV90eXBl
ID0gdHlwZW5hbWUgUG9saWN5OjprZXlfdHlwZTsKKworICAvLyBUaGUgYXJndW1lbnQgdHlwZSBm
b3IgaW5zZXJ0aW9ucyBpbnRvIHRoZSBoYXNodGFibGUuIFRoaXMgaXMgZGlmZmVyZW50CisgIC8v
IGZyb20gdmFsdWVfdHlwZSBmb3IgaW5jcmVhc2VkIHBlcmZvcm1hbmNlLiBTZWUgaW5pdGlhbGl6
ZXJfbGlzdCBjb25zdHJ1Y3RvcgorICAvLyBhbmQgaW5zZXJ0KCkgbWVtYmVyIGZ1bmN0aW9ucyBm
b3IgbW9yZSBkZXRhaWxzLgorICB1c2luZyBpbml0X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3k6Omlu
aXRfdHlwZTsKKworICB1c2luZyByZWZlcmVuY2UgPSBkZWNsdHlwZShQb2xpY3k6OmVsZW1lbnQo
c3RkOjpkZWNsdmFsPHNsb3RfdHlwZSo+KCkpKTsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxyZWZlcmVuY2U+Ojp0eXBlKjsKKyAgdXNpbmcgdmFsdWVf
dHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxyZWZlcmVuY2U+Ojp0eXBlOwor
CisgIC8vIFBvbGljaWVzIGNhbiBzZXQgdGhpcyB2YXJpYWJsZSB0byB0ZWxsIHJhd19oYXNoX3Nl
dCB0aGF0IGFsbCBpdGVyYXRvcnMKKyAgLy8gc2hvdWxkIGJlIGNvbnN0YW50LCBldmVuIGBpdGVy
YXRvcmAuIFRoaXMgaXMgdXNlZnVsIGZvciBzZXQtbGlrZQorICAvLyBjb250YWluZXJzLgorICAv
LyBEZWZhdWx0cyB0byBmYWxzZSBpZiBub3QgcHJvdmlkZWQgYnkgdGhlIHBvbGljeS4KKyAgdXNp
bmcgY29uc3RhbnRfaXRlcmF0b3JzID0gQ29uc3RhbnRJdGVyYXRvcnNJbXBsPD47CisKKyAgLy8g
UFJFQ09ORElUSU9OOiBgc2xvdGAgaXMgVU5JTklUSUFMSVpFRAorICAvLyBQT1NUQ09ORElUSU9O
OiBgc2xvdGAgaXMgSU5JVElBTElaRUQKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jLCBjbGFzcy4u
LiBBcmdzPgorICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2MqIGFsbG9jLCBzbG90X3R5cGUq
IHNsb3QsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgUG9saWN5Ojpjb25zdHJ1Y3QoYWxsb2MsIHNs
b3QsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICAvLyBQUkVDT05ESVRJ
T046IGBzbG90YCBpcyBJTklUSUFMSVpFRAorICAvLyBQT1NUQ09ORElUSU9OOiBgc2xvdGAgaXMg
VU5JTklUSUFMSVpFRAorICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2M+CisgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koQWxsb2MqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QpIHsKKyAgICBQb2xpY3k6OmRlc3Ry
b3koYWxsb2MsIHNsb3QpOworICB9CisKKyAgLy8gVHJhbnNmZXJzIHRoZSBgb2xkX3Nsb3RgIHRv
IGBuZXdfc2xvdGAuIEFueSBtZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZQorICAvLyBhbGxvY2F0b3Ig
aW5zaWRlIGBvbGRfc2xvdGAgdG8gYG5ld19zbG90YCBjYW4gYmUgdHJhbnNmZXJlZC4KKyAgLy8K
KyAgLy8gT1BUSU9OQUw6IGRlZmF1bHRzIHRvOgorICAvLworICAvLyAgICAgY2xvbmUobmV3X3Ns
b3QsIHN0ZDo6bW92ZSgqb2xkX3Nsb3QpKTsKKyAgLy8gICAgIGRlc3Ryb3kob2xkX3Nsb3QpOwor
ICAvLworICAvLyBQUkVDT05ESVRJT046IGBuZXdfc2xvdGAgaXMgVU5JTklUSUFMSVpFRCBhbmQg
YG9sZF9zbG90YCBpcyBJTklUSUFMSVpFRAorICAvLyBQT1NUQ09ORElUSU9OOiBgbmV3X3Nsb3Rg
IGlzIElOSVRJQUxJWkVEIGFuZCBgb2xkX3Nsb3RgIGlzCisgIC8vICAgICAgICAgICAgICAgIFVO
SU5JVElBTElaRUQKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jPgorICBzdGF0aWMgdm9pZCB0cmFu
c2ZlcihBbGxvYyogYWxsb2MsIHNsb3RfdHlwZSogbmV3X3Nsb3QsIHNsb3RfdHlwZSogb2xkX3Ns
b3QpIHsKKyAgICB0cmFuc2Zlcl9pbXBsKGFsbG9jLCBuZXdfc2xvdCwgb2xkX3Nsb3QsIDApOwor
ICB9CisKKyAgLy8gUFJFQ09ORElUSU9OOiBgc2xvdGAgaXMgSU5JVElBTElaRUQKKyAgLy8gUE9T
VENPTkRJVElPTjogYHNsb3RgIGlzIElOSVRJQUxJWkVECisgIHRlbXBsYXRlIDxjbGFzcyBQID0g
UG9saWN5PgorICBzdGF0aWMgYXV0byBlbGVtZW50KHNsb3RfdHlwZSogc2xvdCkgLT4gZGVjbHR5
cGUoUDo6ZWxlbWVudChzbG90KSkgeworICAgIHJldHVybiBQOjplbGVtZW50KHNsb3QpOworICB9
CisKKyAgLy8gUmV0dXJucyB0aGUgYW1vdW50IG9mIG1lbW9yeSBvd25lZCBieSBgc2xvdGAsIGV4
Y2x1c2l2ZSBvZiBgc2l6ZW9mKCpzbG90KWAuCisgIC8vCisgIC8vIElmIGBzbG90YCBpcyBudWxs
cHRyLCByZXR1cm5zIHRoZSBjb25zdGFudCBhbW91bnQgb2YgbWVtb3J5IG93bmVkIGJ5IGFueQor
ICAvLyBmdWxsIHNsb3Qgb3IgLTEgaWYgc2xvdHMgb3duIHZhcmlhYmxlIGFtb3VudHMgb2YgbWVt
b3J5LgorICAvLworICAvLyBQUkVDT05ESVRJT046IGBzbG90YCBpcyBJTklUSUFMSVpFRCBvciBu
dWxscHRyCisgIHRlbXBsYXRlIDxjbGFzcyBQID0gUG9saWN5PgorICBzdGF0aWMgc2l6ZV90IHNw
YWNlX3VzZWQoY29uc3Qgc2xvdF90eXBlKiBzbG90KSB7CisgICAgcmV0dXJuIFA6OnNwYWNlX3Vz
ZWQoc2xvdCk7CisgIH0KKworICAvLyBQcm92aWRlcyBnZW5lcmFsaXplZCBhY2Nlc3MgdG8gdGhl
IGtleSBmb3IgZWxlbWVudHMsIGJvdGggZm9yIGVsZW1lbnRzIGluCisgIC8vIHRoZSB0YWJsZSBh
bmQgZm9yIGVsZW1lbnRzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gaW5zZXJ0ZWQgKG9yIGV2ZW4K
KyAgLy8gY29uc3RydWN0ZWQpLiAgV2Ugd291bGQgbGlrZSBhbiBBUEkgdGhhdCBhbGxvd3MgdXMg
dG8gc2F5OiBga2V5KGFyZ3MuLi4pYAorICAvLyBidXQgd2UgY2Fubm90IGRvIHRoYXQgZm9yIGFs
bCBjYXNlcywgc28gd2UgdXNlIHRoaXMgbW9yZSBnZW5lcmFsIEFQSSB0aGF0CisgIC8vIGNhbiBi
ZSB1c2VkIGZvciBtYW55IHRoaW5ncywgaW5jbHVkaW5nIHRoZSBmb2xsb3dpbmc6CisgIC8vCisg
IC8vICAgLSBHaXZlbiBhbiBlbGVtZW50IGluIGEgdGFibGUsIGdldCBpdHMga2V5LgorICAvLyAg
IC0gR2l2ZW4gYW4gZWxlbWVudCBpbml0aWFsaXplciwgZ2V0IGl0cyBrZXkuCisgIC8vICAgLSBH
aXZlbiBgZW1wbGFjZSgpYCBhcmd1bWVudHMsIGdldCB0aGUgZWxlbWVudCBrZXkuCisgIC8vCisg
IC8vIEltcGxlbWVudGF0aW9ucyBvZiB0aGlzIG11c3QgYWRoZXJlIHRvIGEgdmVyeSBzdHJpY3Qg
dGVjaG5pY2FsCisgIC8vIHNwZWNpZmljYXRpb24gYXJvdW5kIGFsaWFzaW5nIGFuZCBjb25zdW1p
bmcgYXJndW1lbnRzOgorICAvLworICAvLyBMZXQgYHZhbHVlX3R5cGVgIGJlIHRoZSByZXN1bHQg
dHlwZSBvZiBgZWxlbWVudCgpYCB3aXRob3V0IHJlZi0gYW5kCisgIC8vIGN2LXF1YWxpZmllcnMu
IFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIGZ1bmN0b3IsIHRoZSByZXN0IGFyZSBjb25zdHJ1Y3Rv
cgorICAvLyBhcmd1bWVudHMgZm9yIGB2YWx1ZV90eXBlYC4gUmV0dXJucyBgc3RkOjpmb3J3YXJk
PEY+KGYpKGssIHhzLi4uKWAsIHdoZXJlCisgIC8vIGBrYCBpcyB0aGUgZWxlbWVudCBrZXksIGFu
ZCBgeHMuLi5gIGFyZSB0aGUgbmV3IGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBmb3IKKyAgLy8gYHZh
bHVlX3R5cGVgLiBJdCdzIGFsbG93ZWQgZm9yIGBrYCB0byBhbGlhcyBgeHMuLi5gLCBhbmQgZm9y
IGJvdGggdG8gYWxpYXMKKyAgLy8gYHRzLi4uYC4gVGhlIGtleSB3b24ndCBiZSB0b3VjaGVkIG9u
Y2UgYHhzLi4uYCBhcmUgdXNlZCB0byBjb25zdHJ1Y3QgYW4KKyAgLy8gZWxlbWVudDsgYHRzLi4u
YCB3b24ndCBiZSB0b3VjaGVkIGF0IGFsbCwgd2hpY2ggYWxsb3dzIGBhcHBseSgpYCB0byBjb25z
dW1lCisgIC8vIGFueSBydmFsdWVzIGFtb25nIHRoZW0uCisgIC8vCisgIC8vIElmIGB2YWx1ZV90
eXBlYCBpcyBjb25zdHJ1Y3RpYmxlIGZyb20gYFRzJiYuLi5gLCBgUG9saWN5OjphcHBseSgpYCBt
dXN0IG5vdAorICAvLyB0cmlnZ2VyIGEgaGFyZCBjb21waWxlIGVycm9yIHVubGVzcyBpdCBvcmln
aW5hdGVzIGZyb20gYGZgLiBJbiBvdGhlciB3b3JkcywKKyAgLy8gYFBvbGljeTo6YXBwbHkoKWAg
bXVzdCBiZSBTRklOQUUtZnJpZW5kbHkuIElmIGB2YWx1ZV90eXBlYCBpcyBub3QKKyAgLy8gY29u
c3RydWN0aWJsZSBmcm9tIGBUcyYmLi4uYCwgZWl0aGVyIFNGSU5BRSBvciBhIGhhcmQgY29tcGls
ZSBlcnJvciBpcyBPSy4KKyAgLy8KKyAgLy8gSWYgYFRzLi4uYCBpcyBgW2N2XSB2YWx1ZV90eXBl
WyZdYCBvciBgW2N2XSBpbml0X3R5cGVbJl1gLAorICAvLyBgUG9saWN5OjphcHBseSgpYCBtdXN0
IHdvcmsuIEEgY29tcGlsZSBlcnJvciBpcyBub3QgYWxsb3dlZCwgU0ZJTkFFIG9yIG5vdC4KKyAg
dGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzLi4uIFRzLCBjbGFzcyBQID0gUG9saWN5PgorICBzdGF0
aWMgYXV0byBhcHBseShGJiYgZiwgVHMmJi4uLiB0cykKKyAgICAgIC0+IGRlY2x0eXBlKFA6OmFw
cGx5KHN0ZDo6Zm9yd2FyZDxGPihmKSwgc3RkOjpmb3J3YXJkPFRzPih0cykuLi4pKSB7CisgICAg
cmV0dXJuIFA6OmFwcGx5KHN0ZDo6Zm9yd2FyZDxGPihmKSwgc3RkOjpmb3J3YXJkPFRzPih0cyku
Li4pOworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgImtleSIgcG9ydGlvbiBvZiB0aGUgc2xvdC4K
KyAgLy8gVXNlZCBmb3Igbm9kZSBoYW5kbGUgbWFuaXB1bGF0aW9uLgorICB0ZW1wbGF0ZSA8Y2xh
c3MgUCA9IFBvbGljeT4KKyAgc3RhdGljIGF1dG8ga2V5KHNsb3RfdHlwZSogc2xvdCkKKyAgICAg
IC0+IGRlY2x0eXBlKFA6OmFwcGx5KFJldHVybktleSgpLCBlbGVtZW50KHNsb3QpKSkgeworICAg
IHJldHVybiBQOjphcHBseShSZXR1cm5LZXkoKSwgZWxlbWVudChzbG90KSk7CisgIH0KKworICAv
LyBSZXR1cm5zIHRoZSAidmFsdWUiIChhcyBvcHBvc2VkIHRvIHRoZSAia2V5IikgcG9ydGlvbiBv
ZiB0aGUgZWxlbWVudC4gVXNlZAorICAvLyBieSBtYXBzIHRvIGltcGxlbWVudCBgb3BlcmF0b3Jb
XWAsIGBhdCgpYCBhbmQgYGluc2VydF9vcl9hc3NpZ24oKWAuCisgIHRlbXBsYXRlIDxjbGFzcyBU
LCBjbGFzcyBQID0gUG9saWN5PgorICBzdGF0aWMgYXV0byB2YWx1ZShUKiBlbGVtKSAtPiBkZWNs
dHlwZShQOjp2YWx1ZShlbGVtKSkgeworICAgIHJldHVybiBQOjp2YWx1ZShlbGVtKTsKKyAgfQor
CisgcHJpdmF0ZToKKyAgLy8gVXNlIGF1dG8gLT4gZGVjbHR5cGUgYXMgYW4gZW5hYmxlci4KKyAg
dGVtcGxhdGUgPGNsYXNzIEFsbG9jLCBjbGFzcyBQID0gUG9saWN5PgorICBzdGF0aWMgYXV0byB0
cmFuc2Zlcl9pbXBsKEFsbG9jKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG90X3R5cGUqIG9sZF9zbG90LCBpbnQpCisgICAgICAtPiBk
ZWNsdHlwZSgodm9pZClQOjp0cmFuc2ZlcihhbGxvYywgbmV3X3Nsb3QsIG9sZF9zbG90KSkgewor
ICAgIFA6OnRyYW5zZmVyKGFsbG9jLCBuZXdfc2xvdCwgb2xkX3Nsb3QpOworICB9CisgIHRlbXBs
YXRlIDxjbGFzcyBBbGxvYz4KKyAgc3RhdGljIHZvaWQgdHJhbnNmZXJfaW1wbChBbGxvYyogYWxs
b2MsIHNsb3RfdHlwZSogbmV3X3Nsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xv
dF90eXBlKiBvbGRfc2xvdCwgY2hhcikgeworICAgIGNvbnN0cnVjdChhbGxvYywgbmV3X3Nsb3Qs
IHN0ZDo6bW92ZShlbGVtZW50KG9sZF9zbG90KSkpOworICAgIGRlc3Ryb3koYWxsb2MsIG9sZF9z
bG90KTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9I
QVNIX1BPTElDWV9UUkFJVFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNoX3BvbGljeV90cmFpdHNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9o
YXNoX3BvbGljeV90cmFpdHNfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjNmMTU0OGU3Y2ExMzhlZTVh
Y2EwOTI0MmFmZDNiYzRmOTcyYjI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0c190ZXN0LmNjCkBAIC0wLDAgKzEsMTQyIEBACisv
LyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzLmgiCisKKyNpbmNsdWRlIDxmdW5j
dGlvbmFsPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxuZXc+CisKKyNpbmNsdWRlICJn
bW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSBhYnNs
IHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKwordXNpbmcg
Ojp0ZXN0aW5nOjpNb2NrRnVuY3Rpb247Cit1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKK3VzaW5n
IDo6dGVzdGluZzo6UmV0dXJuUmVmOworCit1c2luZyBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGlu
dD47Cit1c2luZyBTbG90ID0gaW50OworCitzdHJ1Y3QgUG9saWN5V2l0aG91dE9wdGlvbmFsT3Bz
IHsKKyAgdXNpbmcgc2xvdF90eXBlID0gU2xvdDsKKyAgdXNpbmcga2V5X3R5cGUgPSBTbG90Owor
ICB1c2luZyBpbml0X3R5cGUgPSBTbG90OworCisgIHN0YXRpYyBzdGQ6OmZ1bmN0aW9uPHZvaWQo
dm9pZCosIFNsb3QqLCBTbG90KT4gY29uc3RydWN0OworICBzdGF0aWMgc3RkOjpmdW5jdGlvbjx2
b2lkKHZvaWQqLCBTbG90Kik+IGRlc3Ryb3k7CisKKyAgc3RhdGljIHN0ZDo6ZnVuY3Rpb248U2xv
dCYoU2xvdCopPiBlbGVtZW50OworICBzdGF0aWMgaW50IGFwcGx5KGludCB2KSB7IHJldHVybiBh
cHBseV9pbXBsKHYpOyB9CisgIHN0YXRpYyBzdGQ6OmZ1bmN0aW9uPGludChpbnQpPiBhcHBseV9p
bXBsOworICBzdGF0aWMgc3RkOjpmdW5jdGlvbjxTbG90JihTbG90Kik+IHZhbHVlOworfTsKKwor
c3RkOjpmdW5jdGlvbjx2b2lkKHZvaWQqLCBTbG90KiwgU2xvdCk+IFBvbGljeVdpdGhvdXRPcHRp
b25hbE9wczo6Y29uc3RydWN0Oworc3RkOjpmdW5jdGlvbjx2b2lkKHZvaWQqLCBTbG90Kik+IFBv
bGljeVdpdGhvdXRPcHRpb25hbE9wczo6ZGVzdHJveTsKKworc3RkOjpmdW5jdGlvbjxTbG90JihT
bG90Kik+IFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6ZWxlbWVudDsKK3N0ZDo6ZnVuY3Rpb248
aW50KGludCk+IFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6YXBwbHlfaW1wbDsKK3N0ZDo6ZnVu
Y3Rpb248U2xvdCYoU2xvdCopPiBQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHM6OnZhbHVlOworCitz
dHJ1Y3QgUG9saWN5V2l0aE9wdGlvbmFsT3BzIDogUG9saWN5V2l0aG91dE9wdGlvbmFsT3BzIHsK
KyAgc3RhdGljIHN0ZDo6ZnVuY3Rpb248dm9pZCh2b2lkKiwgU2xvdCosIFNsb3QqKT4gdHJhbnNm
ZXI7Cit9OworCitzdGQ6OmZ1bmN0aW9uPHZvaWQodm9pZCosIFNsb3QqLCBTbG90Kik+IFBvbGlj
eVdpdGhPcHRpb25hbE9wczo6dHJhbnNmZXI7CisKK3N0cnVjdCBUZXN0IDogOjp0ZXN0aW5nOjpU
ZXN0IHsKKyAgVGVzdCgpIHsKKyAgICBQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHM6OmNvbnN0cnVj
dCA9IFsmXSh2b2lkKiBhMSwgU2xvdCogYTIsIFNsb3QgYTMpIHsKKyAgICAgIGNvbnN0cnVjdC5D
YWxsKGExLCBhMiwgc3RkOjptb3ZlKGEzKSk7CisgICAgfTsKKyAgICBQb2xpY3lXaXRob3V0T3B0
aW9uYWxPcHM6OmRlc3Ryb3kgPSBbJl0odm9pZCogYTEsIFNsb3QqIGEyKSB7CisgICAgICBkZXN0
cm95LkNhbGwoYTEsIGEyKTsKKyAgICB9OworCisgICAgUG9saWN5V2l0aG91dE9wdGlvbmFsT3Bz
OjplbGVtZW50ID0gWyZdKFNsb3QqIGExKSAtPiBTbG90JiB7CisgICAgICByZXR1cm4gZWxlbWVu
dC5DYWxsKGExKTsKKyAgICB9OworICAgIFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6YXBwbHlf
aW1wbCA9IFsmXShpbnQgYTEpIC0+IGludCB7CisgICAgICByZXR1cm4gYXBwbHkuQ2FsbChhMSk7
CisgICAgfTsKKyAgICBQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHM6OnZhbHVlID0gWyZdKFNsb3Qq
IGExKSAtPiBTbG90JiB7CisgICAgICByZXR1cm4gdmFsdWUuQ2FsbChhMSk7CisgICAgfTsKKwor
ICAgIFBvbGljeVdpdGhPcHRpb25hbE9wczo6dHJhbnNmZXIgPSBbJl0odm9pZCogYTEsIFNsb3Qq
IGEyLCBTbG90KiBhMykgeworICAgICAgcmV0dXJuIHRyYW5zZmVyLkNhbGwoYTEsIGEyLCBhMyk7
CisgICAgfTsKKyAgfQorCisgIHN0ZDo6YWxsb2NhdG9yPGludD4gYWxsb2M7CisgIGludCBhID0g
NTM7CisKKyAgTW9ja0Z1bmN0aW9uPHZvaWQodm9pZCosIFNsb3QqLCBTbG90KT4gY29uc3RydWN0
OworICBNb2NrRnVuY3Rpb248dm9pZCh2b2lkKiwgU2xvdCopPiBkZXN0cm95OworCisgIE1vY2tG
dW5jdGlvbjxTbG90JihTbG90Kik+IGVsZW1lbnQ7CisgIE1vY2tGdW5jdGlvbjxpbnQoaW50KT4g
YXBwbHk7CisgIE1vY2tGdW5jdGlvbjxTbG90JihTbG90Kik+IHZhbHVlOworCisgIE1vY2tGdW5j
dGlvbjx2b2lkKHZvaWQqLCBTbG90KiwgU2xvdCopPiB0cmFuc2ZlcjsKK307CisKK1RFU1RfRihU
ZXN0LCBjb25zdHJ1Y3QpIHsKKyAgRVhQRUNUX0NBTEwoY29uc3RydWN0LCBDYWxsKCZhbGxvYywg
JmEsIDUzKSk7CisgIGhhc2hfcG9saWN5X3RyYWl0czxQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHM+
Ojpjb25zdHJ1Y3QoJmFsbG9jLCAmYSwgNTMpOworfQorCitURVNUX0YoVGVzdCwgZGVzdHJveSkg
eworICBFWFBFQ1RfQ0FMTChkZXN0cm95LCBDYWxsKCZhbGxvYywgJmEpKTsKKyAgaGFzaF9wb2xp
Y3lfdHJhaXRzPFBvbGljeVdpdGhvdXRPcHRpb25hbE9wcz46OmRlc3Ryb3koJmFsbG9jLCAmYSk7
Cit9CisKK1RFU1RfRihUZXN0LCBlbGVtZW50KSB7CisgIGludCBiID0gMDsKKyAgRVhQRUNUX0NB
TEwoZWxlbWVudCwgQ2FsbCgmYSkpLldpbGxPbmNlKFJldHVyblJlZihiKSk7CisgIEVYUEVDVF9F
USgmYiwgJmhhc2hfcG9saWN5X3RyYWl0czxQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHM+OjplbGVt
ZW50KCZhKSk7Cit9CisKK1RFU1RfRihUZXN0LCBhcHBseSkgeworICBFWFBFQ1RfQ0FMTChhcHBs
eSwgQ2FsbCg0MikpLldpbGxPbmNlKFJldHVybigxMzM3KSk7CisgIEVYUEVDVF9FUSgxMzM3LCAo
aGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeVdpdGhvdXRPcHRpb25hbE9wcz46OmFwcGx5KDQyKSkp
OworfQorCitURVNUX0YoVGVzdCwgdmFsdWUpIHsKKyAgaW50IGIgPSAwOworICBFWFBFQ1RfQ0FM
TCh2YWx1ZSwgQ2FsbCgmYSkpLldpbGxPbmNlKFJldHVyblJlZihiKSk7CisgIEVYUEVDVF9FUSgm
YiwgJmhhc2hfcG9saWN5X3RyYWl0czxQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHM+Ojp2YWx1ZSgm
YSkpOworfQorCitURVNUX0YoVGVzdCwgd2l0aG91dF90cmFuc2ZlcikgeworICBpbnQgYiA9IDQy
OworICBFWFBFQ1RfQ0FMTChlbGVtZW50LCBDYWxsKCZiKSkuV2lsbE9uY2UoOjp0ZXN0aW5nOjpS
ZXR1cm5SZWYoYikpOworICBFWFBFQ1RfQ0FMTChjb25zdHJ1Y3QsIENhbGwoJmFsbG9jLCAmYSwg
YikpOworICBFWFBFQ1RfQ0FMTChkZXN0cm95LCBDYWxsKCZhbGxvYywgJmIpKTsKKyAgaGFzaF9w
b2xpY3lfdHJhaXRzPFBvbGljeVdpdGhvdXRPcHRpb25hbE9wcz46OnRyYW5zZmVyKCZhbGxvYywg
JmEsICZiKTsKK30KKworVEVTVF9GKFRlc3QsIHdpdGhfdHJhbnNmZXIpIHsKKyAgaW50IGIgPSA0
MjsKKyAgRVhQRUNUX0NBTEwodHJhbnNmZXIsIENhbGwoJmFsbG9jLCAmYSwgJmIpKTsKKyAgaGFz
aF9wb2xpY3lfdHJhaXRzPFBvbGljeVdpdGhPcHRpb25hbE9wcz46OnRyYW5zZmVyKCZhbGxvYywg
JmEsICZiKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVy
X2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL2hhc2h0YWJsZV9kZWJ1Zy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L2hhc2h0YWJsZV9kZWJ1Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzYmQ2NWM5YzRlYzUyZDVmNGE3OTZmNzZi
MThkYmNkYTcyOTJiMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvaGFzaHRhYmxlX2RlYnVnLmgKQEAgLTAsMCArMSwxMDggQEAKKy8vIENvcHlyaWdodCAyMDE4
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIEFQSXMg
dG8gZGVidWcgdGhlIHByb2JpbmcgYmVoYXZpb3Igb2YgaGFzaCB0YWJsZXMuCisvLworLy8gSW4g
Z2VuZXJhbCwgdGhlIHByb2JpbmcgYmVoYXZpb3IgaXMgYSBibGFjayBib3ggZm9yIHVzZXJzIGFu
ZCBvbmx5IHRoZQorLy8gc2lkZSBlZmZlY3RzIGNhbiBiZSBtZWFzdXJlZCBpbiB0aGUgZm9ybSBv
ZiBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlcy4KKy8vIFRoZXNlIEFQSXMgZ2l2ZSBhIGdsaW1wc2Ug
b24gdGhlIGFjdHVhbCBiZWhhdmlvciBvZiB0aGUgcHJvYmluZyBhbGdvcml0aG1zIGluCisvLyB0
aGVzZSBoYXNodGFibGVzIGdpdmVuIGEgc3BlY2lmaWVkIGhhc2ggZnVuY3Rpb24gYW5kIGEgc2V0
IG9mIGVsZW1lbnRzLgorLy8KKy8vIFRoZSBwcm9iZSBjb3VudCBkaXN0cmlidXRpb24gY2FuIGJl
IHVzZWQgdG8gYXNzZXNzIHRoZSBxdWFsaXR5IG9mIHRoZSBoYXNoCisvLyBmdW5jdGlvbiBmb3Ig
dGhhdCBwYXJ0aWN1bGFyIGhhc2ggdGFibGUuIE5vdGUgdGhhdCBhIGhhc2ggZnVuY3Rpb24gdGhh
dAorLy8gcGVyZm9ybXMgd2VsbCBpbiBvbmUgaGFzaCB0YWJsZSBpbXBsZW1lbnRhdGlvbiBkb2Vz
IG5vdCBuZWNlc3NhcmlseSBwZXJmb3JtcworLy8gd2VsbCBpbiBhIGRpZmZlcmVudCBvbmUuCisv
LworLy8gVGhpcyBsaWJyYXJ5IHN1cHBvcnRzIHN0ZDo6dW5vcmRlcmVkX3tzZXQsbWFwfSwgZGVu
c2VfaGFzaF97c2V0LG1hcH0gYW5kCisvLyBhYnNsOjp7ZmxhdCxub2RlLHN0cmluZ31faGFzaF97
c2V0LG1hcH0uCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSFRBQkxFX0RF
QlVHX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hUQUJMRV9ERUJVR19I
XworCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnX2hvb2tzLmgiCisKK25hbWVzcGFjZSBhYnNsIHsK
K25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCisvLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgcHJvYmVzIHJlcXVpcmVkIHRvIGxvb2t1cCBga2V5YC4gIFJldHVybnMgMCBmb3IgYQorLy8g
c2VhcmNoIHdpdGggbm8gY29sbGlzaW9ucy4gIEhpZ2hlciB2YWx1ZXMgbWVhbiBtb3JlIGhhc2gg
Y29sbGlzaW9ucyBvY2N1cnJlZDsKKy8vIGhvd2V2ZXIsIHRoZSBleGFjdCBtZWFuaW5nIG9mIHRo
aXMgbnVtYmVyIHZhcmllcyBhY2NvcmRpbmcgdG8gdGhlIGNvbnRhaW5lcgorLy8gdHlwZS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDPgorc2l6ZV90IEdldEhhc2h0YWJsZURlYnVnTnVtUHJvYmVzKAor
ICAgIGNvbnN0IEMmIGMsIGNvbnN0IHR5cGVuYW1lIEM6OmtleV90eXBlJiBrZXkpIHsKKyAgcmV0
dXJuIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaHRhYmxlX2RlYnVnX2ludGVybmFsOjoK
KyAgICAgIEhhc2h0YWJsZURlYnVnQWNjZXNzPEM+OjpHZXROdW1Qcm9iZXMoYywga2V5KTsKK30K
KworLy8gR2V0cyBhIGhpc3RvZ3JhbSBvZiB0aGUgbnVtYmVyIG9mIHByb2JlcyBmb3IgZWFjaCBl
bGVtZW50cyBpbiB0aGUgY29udGFpbmVyLgorLy8gVGhlIHN1bSBvZiBhbGwgdGhlIHZhbHVlcyBp
biB0aGUgdmVjdG9yIGlzIGVxdWFsIHRvIGNvbnRhaW5lci5zaXplKCkuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQz4KK3N0ZDo6dmVjdG9yPHNpemVfdD4gR2V0SGFzaHRhYmxlRGVidWdOdW1Qcm9iZXNI
aXN0b2dyYW0oY29uc3QgQyYgY29udGFpbmVyKSB7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gdjsK
KyAgZm9yIChhdXRvIGl0ID0gY29udGFpbmVyLmJlZ2luKCk7IGl0ICE9IGNvbnRhaW5lci5lbmQo
KTsgKytpdCkgeworICAgIHNpemVfdCBudW1fcHJvYmVzID0gR2V0SGFzaHRhYmxlRGVidWdOdW1Q
cm9iZXMoCisgICAgICAgIGNvbnRhaW5lciwKKyAgICAgICAgYWJzbDo6Y29udGFpbmVyX2ludGVy
bmFsOjpoYXNodGFibGVfZGVidWdfaW50ZXJuYWw6OkdldEtleTxDPigqaXQsIDApKTsKKyAgICB2
LnJlc2l6ZShzdGQ6Om1heCh2LnNpemUoKSwgbnVtX3Byb2JlcyArIDEpKTsKKyAgICB2W251bV9w
cm9iZXNdKys7CisgIH0KKyAgcmV0dXJuIHY7Cit9CisKK3N0cnVjdCBIYXNodGFibGVEZWJ1Z1By
b2JlU3VtbWFyeSB7CisgIHNpemVfdCB0b3RhbF9lbGVtZW50czsKKyAgc2l6ZV90IHRvdGFsX251
bV9wcm9iZXM7CisgIGRvdWJsZSBtZWFuOworfTsKKworLy8gR2V0cyBhIHN1bW1hcnkgb2YgdGhl
IHByb2JlIGNvdW50IGRpc3RyaWJ1dGlvbiBmb3IgdGhlIGVsZW1lbnRzIGluIHRoZQorLy8gY29u
dGFpbmVyLgordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitIYXNodGFibGVEZWJ1Z1Byb2JlU3VtbWFy
eSBHZXRIYXNodGFibGVEZWJ1Z1Byb2JlU3VtbWFyeShjb25zdCBDJiBjb250YWluZXIpIHsKKyAg
YXV0byBwcm9iZXMgPSBHZXRIYXNodGFibGVEZWJ1Z051bVByb2Jlc0hpc3RvZ3JhbShjb250YWlu
ZXIpOworICBIYXNodGFibGVEZWJ1Z1Byb2JlU3VtbWFyeSBzdW1tYXJ5ID0ge307CisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJvYmVzLnNpemUoKTsgKytpKSB7CisgICAgc3VtbWFyeS50b3Rh
bF9lbGVtZW50cyArPSBwcm9iZXNbaV07CisgICAgc3VtbWFyeS50b3RhbF9udW1fcHJvYmVzICs9
IHByb2Jlc1tpXSAqIGk7CisgIH0KKyAgc3VtbWFyeS5tZWFuID0gMS4wICogc3VtbWFyeS50b3Rh
bF9udW1fcHJvYmVzIC8gc3VtbWFyeS50b3RhbF9lbGVtZW50czsKKyAgcmV0dXJuIHN1bW1hcnk7
Cit9CisKKy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZXF1ZXN0ZWQgZnJvbSB0aGUg
YWxsb2NhdG9yIGJ5IHRoZSBjb250YWluZXIKKy8vIGFuZCBub3QgZnJlZWQuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQz4KK3NpemVfdCBBbGxvY2F0ZWRCeXRlU2l6ZShjb25zdCBDJiBjKSB7CisgIHJl
dHVybiBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2h0YWJsZV9kZWJ1Z19pbnRlcm5hbDo6
CisgICAgICBIYXNodGFibGVEZWJ1Z0FjY2VzczxDPjo6QWxsb2NhdGVkQnl0ZVNpemUoYyk7Cit9
CisKKy8vIFJldHVybnMgYSB0aWdodCBsb3dlciBib3VuZCBmb3IgQWxsb2NhdGVkQnl0ZVNpemUo
Yykgd2hlcmUgYGNgIGlzIG9mIHR5cGUgYENgCisvLyBhbmQgYGMuc2l6ZSgpYCBpcyBlcXVhbCB0
byBgbnVtX2VsZW1lbnRzYC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDPgorc2l6ZV90IExvd2VyQm91
bmRBbGxvY2F0ZWRCeXRlU2l6ZShzaXplX3QgbnVtX2VsZW1lbnRzKSB7CisgIHJldHVybiBhYnNs
Ojpjb250YWluZXJfaW50ZXJuYWw6Omhhc2h0YWJsZV9kZWJ1Z19pbnRlcm5hbDo6CisgICAgICBI
YXNodGFibGVEZWJ1Z0FjY2VzczxDPjo6TG93ZXJCb3VuZEFsbG9jYXRlZEJ5dGVTaXplKG51bV9l
bGVtZW50cyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFT
SFRBQkxFX0RFQlVHX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFz
aHRhYmxlX2RlYnVnX2hvb2tzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxl
X2RlYnVnX2hvb2tzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGYyMTk3MjZiZWUwMWZlOTdhOGYxMGUzMzA2NDk0
ODY4MDk0ZTkyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9o
YXNodGFibGVfZGVidWdfaG9va3MuaApAQCAtMCwwICsxLDgxIEBACisvLyBDb3B5cmlnaHQgMjAx
OCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIFByb3ZpZGVzIHRoZSBpbnRlcm5hbCBBUEkg
Zm9yIGhhc2h0YWJsZV9kZWJ1Zy5oLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFM
X0hBU0hUQUJMRV9ERUJVR19IT09LU19IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5B
TF9IQVNIVEFCTEVfREVCVUdfSE9PS1NfSF8KKworI2luY2x1ZGUgPGNzdGRkZWY+CisKKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dmVjdG9y
PgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25h
bWVzcGFjZSBoYXNodGFibGVfZGVidWdfaW50ZXJuYWwgeworCisvLyBJZiBpdCBpcyBhIG1hcCwg
Y2FsbCBnZXQ8MD4oKS4KK3VzaW5nIHN0ZDo6Z2V0OwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lID0gdHlwZW5hbWUgVDo6bWFwcGVkX3R5cGU+CithdXRvIEdldEtleShjb25zdCB0eXBl
bmFtZSBUOjp2YWx1ZV90eXBlJiBwYWlyLCBpbnQpIC0+IGRlY2x0eXBlKGdldDwwPihwYWlyKSkg
eworICByZXR1cm4gZ2V0PDA+KHBhaXIpOworfQorCisvLyBJZiBpdCBpcyBub3QgYSBtYXAsIHJl
dHVybiB0aGUgdmFsdWUgZGlyZWN0bHkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IHR5
cGVuYW1lIFQ6OmtleV90eXBlJiBHZXRLZXkoY29uc3QgdHlwZW5hbWUgVDo6a2V5X3R5cGUmIGtl
eSwgY2hhcikgeworICByZXR1cm4ga2V5OworfQorCisvLyBDb250YWluZXJzIHNob3VsZCBzcGVj
aWFsaXplIHRoaXMgdG8gcHJvdmlkZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgdGhhdAorLy8gY29u
dGFpbmVyLgordGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lciwgdHlwZW5hbWUgRW5hYmxlciA9IHZv
aWQ+CitzdHJ1Y3QgSGFzaHRhYmxlRGVidWdBY2Nlc3MgeworICAvLyBSZXR1cm5zIHRoZSBudW1i
ZXIgb2YgcHJvYmVzIHJlcXVpcmVkIHRvIGZpbmQgYGtleWAgaW4gYGNgLiAgVGhlICJudW1iZXIg
b2YKKyAgLy8gcHJvYmVzIiBpcyBhIGNvbmNlcHQgdGhhdCBjYW4gdmFyeSBieSBjb250YWluZXIu
ICBJbXBsZW1lbnRhdGlvbnMgc2hvdWxkCisgIC8vIHJldHVybiAwIHdoZW4gYGtleWAgd2FzIGZv
dW5kIGluIHRoZSBtaW5pbXVtIG51bWJlciBvZiBvcGVyYXRpb25zIGFuZAorICAvLyBzaG91bGQg
aW5jcmVtZW50IHRoZSByZXN1bHQgZm9yIGVhY2ggbm9uLXRyaXZpYWwgb3BlcmF0aW9uIHJlcXVp
cmVkIHRvIGZpbmQKKyAgLy8gYGtleWAuCisgIC8vCisgIC8vIFRoZSBkZWZhdWx0IGltcGxlbWVu
dGF0aW9uIHVzZXMgdGhlIGJ1Y2tldCBhcGkgZnJvbSB0aGUgc3RhbmRhcmQgYW5kIHRodXMKKyAg
Ly8gd29ya3MgZm9yIGBzdGQ6OnVub3JkZXJlZF8qYCBjb250YWluZXJzLgorICBzdGF0aWMgc2l6
ZV90IEdldE51bVByb2Jlcyhjb25zdCBDb250YWluZXImIGMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIENvbnRhaW5lcjo6a2V5X3R5cGUmIGtleSkgeworICAg
IGlmICghYy5idWNrZXRfY291bnQoKSkgcmV0dXJuIHt9OworICAgIHNpemVfdCBudW1fcHJvYmVz
ID0gMDsKKyAgICBzaXplX3QgYnVja2V0ID0gYy5idWNrZXQoa2V5KTsKKyAgICBmb3IgKGF1dG8g
aXQgPSBjLmJlZ2luKGJ1Y2tldCksIGUgPSBjLmVuZChidWNrZXQpOzsgKytpdCwgKytudW1fcHJv
YmVzKSB7CisgICAgICBpZiAoaXQgPT0gZSkgcmV0dXJuIG51bV9wcm9iZXM7CisgICAgICBpZiAo
Yy5rZXlfZXEoKShrZXksIEdldEtleTxDb250YWluZXI+KCppdCwgMCkpKSByZXR1cm4gbnVtX3By
b2JlczsKKyAgICB9CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVx
dWVzdGVkIGZyb20gdGhlIGFsbG9jYXRvciBieSB0aGUgY29udGFpbmVyCisgIC8vIGFuZCBub3Qg
ZnJlZWQuCisgIC8vCisgIC8vIHN0YXRpYyBzaXplX3QgQWxsb2NhdGVkQnl0ZVNpemUoY29uc3Qg
Q29udGFpbmVyJiBjKTsKKworICAvLyBSZXR1cm5zIGEgdGlnaHQgbG93ZXIgYm91bmQgZm9yIEFs
bG9jYXRlZEJ5dGVTaXplKGMpIHdoZXJlIGBjYCBpcyBvZiB0eXBlCisgIC8vIGBDb250YWluZXJg
IGFuZCBgYy5zaXplKClgIGlzIGVxdWFsIHRvIGBudW1fZWxlbWVudHNgLgorICAvLworICAvLyBz
dGF0aWMgc2l6ZV90IExvd2VyQm91bmRBbGxvY2F0ZWRCeXRlU2l6ZShzaXplX3QgbnVtX2VsZW1l
bnRzKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBoYXNodGFibGVfZGVidWdfaW50ZXJuYWwKK30g
IC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisK
KyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSFRBQkxFX0RFQlVHX0hPT0tT
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc2YzdkNjdlZTY4ZGNk
NTY2ZTE3MDk0ZDQ5NThlMzc0NzU0N2Q5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9sYXlvdXQuaApAQCAtMCwwICsxLDczMiBAQAorLy8gQ29weXJpZ2h0IDIw
MTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1PVElWQVRJT04gQU5EIFRVVE9SSUFMCisvLworLy8gSWYgeW91IHdhbnQgdG8gcHV0IGluIGEg
c2luZ2xlIGhlYXAgYWxsb2NhdGlvbiBOIGRvdWJsZXMgZm9sbG93ZWQgYnkgTSBpbnRzLAorLy8g
aXQncyBlYXN5IGlmIE4gYW5kIE0gYXJlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KKy8vCisvLyAg
IHN0cnVjdCBTIHsKKy8vICAgICBkb3VibGUgYVtOXTsKKy8vICAgICBpbnQgYltNXTsKKy8vICAg
fTsKKy8vCisvLyAgIFMqIHAgPSBuZXcgUzsKKy8vCisvLyBCdXQgd2hhdCBpZiBOIGFuZCBNIGFy
ZSBrbm93biBvbmx5IGluIHJ1biB0aW1lPyBDbGFzcyB0ZW1wbGF0ZSBMYXlvdXQgdG8gdGhlCisv
LyByZXNjdWUhIEl0J3MgYSBwb3J0YWJsZSBnZW5lcmFsaXphdGlvbiBvZiB0aGUgdGVjaG5pcXVl
IGtub3duIGFzIHN0cnVjdCBoYWNrLgorLy8KKy8vICAgLy8gVGhpcyBvYmplY3Qgd2lsbCB0ZWxs
IHVzIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBrbm93IGFib3V0IHRoZSBtZW1vcnkKKy8vICAgLy8g
bGF5b3V0IG9mIGRvdWJsZVtOXSBmb2xsb3dlZCBieSBpbnRbTV0uIEl0J3Mgc3RydWN0dXJhbGx5
IGlkZW50aWNhbCB0bworLy8gICAvLyBzaXplX3RbMl0gdGhhdCBzdG9yZXMgTiBhbmQgTS4gSXQn
cyB2ZXJ5IGNoZWFwIHRvIGNyZWF0ZS4KKy8vICAgY29uc3QgTGF5b3V0PGRvdWJsZSwgaW50PiBs
YXlvdXQoTiwgTSk7CisvLworLy8gICAvLyBBbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBib3Ro
IGFycmF5cy4gYEFsbG9jU2l6ZSgpYCB0ZWxscyB1cyBob3cgbXVjaAorLy8gICAvLyBtZW1vcnkg
aXMgbmVlZGVkLiBXZSBhcmUgZnJlZSB0byB1c2UgYW55IGFsbG9jYXRpb24gZnVuY3Rpb24gd2Ug
d2FudCBhcworLy8gICAvLyBsb25nIGFzIGl0IHJldHVybnMgYWxpZ25lZCBtZW1vcnkuCisvLyAg
IHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IHAobmV3IHVuc2lnbmVkIGNoYXJbbGF5
b3V0LkFsbG9jU2l6ZSgpXSk7CisvLworLy8gICAvLyBPYnRhaW4gdGhlIHBvaW50ZXIgdG8gdGhl
IGFycmF5IG9mIGRvdWJsZXMuCisvLyAgIC8vIEVxdWl2YWxlbnQgdG8gYHJlaW50ZXJwcmV0X2Nh
c3Q8ZG91YmxlKj4ocC5nZXQoKSlgLgorLy8gICAvLworLy8gICAvLyBXZSBjb3VsZCBoYXZlIHdy
aXR0ZW4gbGF5b3V0LlBvaW50ZXI8MD4ocCkgaW5zdGVhZC4gSWYgYWxsIHRoZSB0eXBlcyBhcmUK
Ky8vICAgLy8gdW5pcXVlIHlvdSBjYW4gdXNlIGVpdGhlciBmb3JtLCBidXQgaWYgc29tZSB0eXBl
cyBhcmUgcmVwZWF0ZWQgeW91IG11c3QKKy8vICAgLy8gdXNlIHRoZSBpbmRleCBmb3JtLgorLy8g
ICBkb3VibGUqIGEgPSBsYXlvdXQuUG9pbnRlcjxkb3VibGU+KHAuZ2V0KCkpOworLy8KKy8vICAg
Ly8gT2J0YWluIHRoZSBwb2ludGVyIHRvIHRoZSBhcnJheSBvZiBpbnRzLgorLy8gICAvLyBFcXVp
dmFsZW50IHRvIGByZWludGVycHJldF9jYXN0PGludCo+KHAuZ2V0KCkgKyBOICogOClgLgorLy8g
ICBpbnQqIGIgPSBsYXlvdXQuUG9pbnRlcjxpbnQ+KHApOworLy8KKy8vIElmIHdlIGFyZSB1bmFi
bGUgdG8gc3BlY2lmeSBzaXplcyBvZiBhbGwgZmllbGRzLCB3ZSBjYW4gcGFzcyBhcyBtYW55IHNp
emVzIGFzCisvLyB3ZSBjYW4gdG8gYFBhcnRpYWwoKWAuIEluIHJldHVybiwgaXQnbGwgYWxsb3cg
dXMgdG8gYWNjZXNzIHRoZSBmaWVsZHMgd2hvc2UKKy8vIGxvY2F0aW9ucyBhbmQgc2l6ZXMgY2Fu
IGJlIGNvbXB1dGVkIGZyb20gdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLgorLy8gYFBhcnRpYWwo
KWAgY29tZXMgaW4gaGFuZHkgd2hlbiB0aGUgYXJyYXkgc2l6ZXMgYXJlIGVtYmVkZGVkIGludG8g
dGhlCisvLyBhbGxvY2F0aW9uLgorLy8KKy8vICAgLy8gc2l6ZV90WzFdIGNvbnRhaW5pbmcgTiwg
c2l6ZV90WzFdIGNvbnRhaW5pbmcgTSwgZG91YmxlW05dLCBpbnRbTV0uCisvLyAgIHVzaW5nIEwg
PSBMYXlvdXQ8c2l6ZV90LCBzaXplX3QsIGRvdWJsZSwgaW50PjsKKy8vCisvLyAgIHVuc2lnbmVk
IGNoYXIqIEFsbG9jYXRlKHNpemVfdCBuLCBzaXplX3QgbSkgeworLy8gICAgIGNvbnN0IEwgbGF5
b3V0KDEsIDEsIG4sIG0pOworLy8gICAgIHVuc2lnbmVkIGNoYXIqIHAgPSBuZXcgdW5zaWduZWQg
Y2hhcltsYXlvdXQuQWxsb2NTaXplKCldOworLy8gICAgICpsYXlvdXQuUG9pbnRlcjwwPihwKSA9
IG47CisvLyAgICAgKmxheW91dC5Qb2ludGVyPDE+KHApID0gbTsKKy8vICAgICByZXR1cm4gcDsK
Ky8vICAgfQorLy8KKy8vICAgdm9pZCBVc2UodW5zaWduZWQgY2hhciogcCkgeworLy8gICAgIC8v
IEZpcnN0LCBleHRyYWN0IE4gYW5kIE0uCisvLyAgICAgLy8gU3BlY2lmeSB0aGF0IHRoZSBmaXJz
dCBhcnJheSBoYXMgb25seSBvbmUgZWxlbWVudC4gVXNpbmcgYHByZWZpeGAgd2UKKy8vICAgICAv
LyBjYW4gYWNjZXNzIHRoZSBmaXJzdCB0d28gYXJyYXlzIGJ1dCBub3QgbW9yZS4KKy8vICAgICBj
b25zdGV4cHIgYXV0byBwcmVmaXggPSBMOjpQYXJ0aWFsKDEpOworLy8gICAgIHNpemVfdCBuID0g
KnByZWZpeC5Qb2ludGVyPDA+KHApOworLy8gICAgIHNpemVfdCBtID0gKnByZWZpeC5Qb2ludGVy
PDE+KHApOworLy8KKy8vICAgICAvLyBOb3cgd2UgY2FuIGdldCBwb2ludGVycyB0byB0aGUgcGF5
bG9hZC4KKy8vICAgICBjb25zdCBMIGxheW91dCgxLCAxLCBuLCBtKTsKKy8vICAgICBkb3VibGUq
IGEgPSBsYXlvdXQuUG9pbnRlcjxkb3VibGU+KHApOworLy8gICAgIGludCogYiA9IGxheW91dC5Q
b2ludGVyPGludD4ocCk7CisvLyAgIH0KKy8vCisvLyBUaGUgbGF5b3V0IHdlIHVzZWQgYWJvdmUg
Y29tYmluZXMgZml4ZWQtc2l6ZSB3aXRoIGR5bmFtaWNhbGx5LXNpemVkIGZpZWxkcy4KKy8vIFRo
aXMgaXMgcXVpdGUgY29tbW9uLiBMYXlvdXQgaXMgb3B0aW1pemVkIGZvciB0aGlzIHVzZSBjYXNl
IGFuZCBnZW5lcmF0ZXMKKy8vIG9wdGltYWwgY29kZS4gQWxsIGNvbXB1dGF0aW9ucyB0aGF0IGNh
biBiZSBwZXJmb3JtZWQgYXQgY29tcGlsZSB0aW1lIGFyZQorLy8gaW5kZWVkIHBlcmZvcm1lZCBh
dCBjb21waWxlIHRpbWUuCisvLworLy8gRWZmaWNpZW5jeSB0aXA6IFRoZSBvcmRlciBvZiBmaWVs
ZHMgbWF0dGVycy4gSW4gYExheW91dDxUMSwgLi4uLCBUTj5gIHRyeSB0bworLy8gZW5zdXJlIHRo
YXQgYGFsaWdub2YoVDEpID49IC4uLiA+PSBhbGlnbm9mKFROKWAuIFRoaXMgd2F5IHlvdSdsbCBo
YXZlIG5vCisvLyBwYWRkaW5nIGluIGJldHdlZW4gYXJyYXlzLgorLy8KKy8vIFlvdSBjYW4gbWFu
dWFsbHkgb3ZlcnJpZGUgdGhlIGFsaWdubWVudCBvZiBhbiBhcnJheSBieSB3cmFwcGluZyB0aGUg
dHlwZSBpbgorLy8gYEFsaWduZWQ8VCwgTj5gLiBgTGF5b3V0PC4uLiwgQWxpZ25lZDxULCBOPiwg
Li4uPmAgaGFzIGV4YWN0bHkgdGhlIHNhbWUgQVBJCisvLyBhbmQgYmVoYXZpb3IgYXMgYExheW91
dDwuLi4sIFQsIC4uLj5gIGV4Y2VwdCB0aGF0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZQorLy8g
YXJyYXkgb2YgYFRgIGlzIGFsaWduZWQgdG8gYE5gICh0aGUgcmVzdCBvZiB0aGUgZWxlbWVudHMg
Zm9sbG93IHdpdGhvdXQKKy8vIHBhZGRpbmcpLiBgTmAgY2Fubm90IGJlIGxlc3MgdGhhbiBgYWxp
Z25vZihUKWAuCisvLworLy8gYEFsbG9jU2l6ZSgpYCBhbmQgYFBvaW50ZXIoKWAgYXJlIHRoZSBt
b3N0IGJhc2ljIG1ldGhvZHMgZm9yIGRlYWxpbmcgd2l0aAorLy8gbWVtb3J5IGxheW91dHMuIENo
ZWNrIG91dCB0aGUgcmVmZXJlbmNlIG9yIGNvZGUgYmVsb3cgdG8gZGlzY292ZXIgbW9yZS4KKy8v
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWEFNUExFCisvLworLy8gICAvLyBJbW11
dGFibGUgbW92ZS1vbmx5IHN0cmluZyB3aXRoIHNpemVvZiBlcXVhbCB0byBzaXplb2Yodm9pZCop
LiBUaGUKKy8vICAgLy8gc3RyaW5nIHNpemUgYW5kIHRoZSBjaGFyYWN0ZXJzIGFyZSBrZXB0IGlu
IHRoZSBzYW1lIGhlYXAgYWxsb2NhdGlvbi4KKy8vICAgY2xhc3MgQ29tcGFjdFN0cmluZyB7Cisv
LyAgICBwdWJsaWM6CisvLyAgICAgQ29tcGFjdFN0cmluZyhjb25zdCBjaGFyKiBzID0gIiIpIHsK
Ky8vICAgICAgIGNvbnN0IHNpemVfdCBzaXplID0gc3RybGVuKHMpOworLy8gICAgICAgLy8gc2l6
ZV90WzFdIGZvbGxvd2VkIGJ5IGNoYXJbc2l6ZSArIDFdLgorLy8gICAgICAgY29uc3QgTCBsYXlv
dXQoMSwgc2l6ZSArIDEpOworLy8gICAgICAgcF8ucmVzZXQobmV3IHVuc2lnbmVkIGNoYXJbbGF5
b3V0LkFsbG9jU2l6ZSgpXSk7CisvLyAgICAgICAvLyBJZiBydW5uaW5nIHVuZGVyIEFTQU4sIG1h
cmsgdGhlIHBhZGRpbmcgYnl0ZXMsIGlmIGFueSwgdG8gY2F0Y2gKKy8vICAgICAgIC8vIG1lbW9y
eSBlcnJvcnMuCisvLyAgICAgICBsYXlvdXQuUG9pc29uUGFkZGluZyhwXy5nZXQoKSk7CisvLyAg
ICAgICAvLyBTdG9yZSB0aGUgc2l6ZSBpbiB0aGUgYWxsb2NhdGlvbi4KKy8vICAgICAgICpsYXlv
dXQuUG9pbnRlcjxzaXplX3Q+KHBfLmdldCgpKSA9IHNpemU7CisvLyAgICAgICAvLyBTdG9yZSB0
aGUgY2hhcmFjdGVycyBpbiB0aGUgYWxsb2NhdGlvbi4KKy8vICAgICAgIG1lbWNweShsYXlvdXQu
UG9pbnRlcjxjaGFyPihwXy5nZXQoKSksIHMsIHNpemUgKyAxKTsKKy8vICAgICB9CisvLworLy8g
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeworLy8gICAgICAgLy8gRXF1aXZhbGVudCB0byByZWlu
dGVycHJldF9jYXN0PHNpemVfdCY+KCpwKS4KKy8vICAgICAgIHJldHVybiAqTDo6UGFydGlhbCgp
LlBvaW50ZXI8c2l6ZV90PihwXy5nZXQoKSk7CisvLyAgICAgfQorLy8KKy8vICAgICBjb25zdCBj
aGFyKiBjX3N0cigpIGNvbnN0IHsKKy8vICAgICAgIC8vIEVxdWl2YWxlbnQgdG8gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4ocC5nZXQoKSArIHNpemVvZihzaXplX3QpKS4KKy8vICAgICAgIC8vIFRo
ZSBhcmd1bWVudCBpbiBQYXJ0aWFsKDEpIHNwZWNpZmllcyB0aGF0IHdlIGhhdmUgc2l6ZV90WzFd
IGluIGZyb250CisvLyAgICAgICAvLyBvZiB0aGUgY2hhcmFjdGVycy4KKy8vICAgICAgIHJldHVy
biBMOjpQYXJ0aWFsKDEpLlBvaW50ZXI8Y2hhcj4ocF8uZ2V0KCkpOworLy8gICAgIH0KKy8vCisv
LyAgICBwcml2YXRlOgorLy8gICAgIC8vIE91ciBoZWFwIGFsbG9jYXRpb24gY29udGFpbnMgYSBz
aXplX3QgZm9sbG93ZWQgYnkgYW4gYXJyYXkgb2YgY2hhcnMuCisvLyAgICAgdXNpbmcgTCA9IExh
eW91dDxzaXplX3QsIGNoYXI+OworLy8gICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFy
W10+IHBfOworLy8gICB9OworLy8KKy8vICAgaW50IG1haW4oKSB7CisvLyAgICAgQ29tcGFjdFN0
cmluZyBzID0gImhlbGxvIjsKKy8vICAgICBhc3NlcnQocy5zaXplKCkgPT0gNSk7CisvLyAgICAg
YXNzZXJ0KHN0cmNtcChzLmNfc3RyKCksICJoZWxsbyIpID09IDApOworLy8gICB9CisvLworLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE9DVU1FTlRBVElPTgorLy8KKy8vIFRoZSBp
bnRlcmZhY2UgZXhwb3J0ZWQgYnkgdGhpcyBmaWxlIGNvbnNpc3RzIG9mOgorLy8gLSBjbGFzcyBg
TGF5b3V0PD5gIGFuZCBpdHMgcHVibGljIG1lbWJlcnMuCisvLyAtIFRoZSBwdWJsaWMgbWVtYmVy
cyBvZiBjbGFzcyBgaW50ZXJuYWxfbGF5b3V0OjpMYXlvdXRJbXBsPD5gLiBUaGF0IGNsYXNzCisv
LyAgIGlzbid0IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHksIGFuZCBpdHMgbmFtZSBhbmQg
dGVtcGxhdGUgcGFyYW1ldGVyCisvLyAgIGxpc3QgYXJlIGludGVybmFsIGltcGxlbWVudGF0aW9u
IGRldGFpbHMsIGJ1dCB0aGUgY2xhc3MgaXRzZWxmIHByb3ZpZGVzCisvLyAgIG1vc3Qgb2YgdGhl
IGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBmaWxlLiBTZWUgY29tbWVudHMgb24gaXRzIG1lbWJlcnMg
Zm9yCisvLyAgIGRldGFpbGVkIGRvY3VtZW50YXRpb24uCisvLworLy8gYExheW91dDxUMSwuLi4g
VG4+OjpQYXJ0aWFsKGNvdW50MSwuLi4sIGNvdW50bSlgICh3aGVyZSBgbWAgPD0gYG5gKSByZXR1
cm5zIGEKKy8vIGBMYXlvdXRJbXBsPD5gIG9iamVjdC4gYExheW91dDxUMSwuLi4sIFRuPiBsYXlv
dXQoY291bnQxLC4uLiwgY291bnRuKWAKKy8vIGNyZWF0ZXMgYSBgTGF5b3V0YCBvYmplY3QsIHdo
aWNoIGV4cG9zZXMgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSBieSBpbmhlcml0aW5nCisvLyBmcm9t
IGBMYXlvdXRJbXBsPD5gLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0xBWU9V
VF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9MQVlPVVRfSF8KKworI2luY2x1
ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgor
I2luY2x1ZGUgPG9zdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR1cGxlPgor
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHR5cGVpbmZvPgorI2luY2x1ZGUgPHV0
aWxpdHk+CisKKyNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgorI2luY2x1ZGUgPHNhbml0aXplci9h
c2FuX2ludGVyZmFjZS5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFp
dHMuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wv
dHlwZXMvc3Bhbi5oIgorI2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5LmgiCisKKyNpZiBk
ZWZpbmVkKF9fR1hYX1JUVEkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfSEFTX0NYQV9ERU1BTkdM
RQorI2VuZGlmCisKKyNpZmRlZiBBQlNMX0lOVEVSTkFMX0hBU19DWEFfREVNQU5HTEUKKyNpbmNs
dWRlIDxjeHhhYmkuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29u
dGFpbmVyX2ludGVybmFsIHsKKworLy8gQSB0eXBlIHdyYXBwZXIgdGhhdCBpbnN0cnVjdHMgYExh
eW91dGAgdG8gdXNlIHRoZSBzcGVjaWZpYyBhbGlnbm1lbnQgZm9yIHRoZQorLy8gYXJyYXkuIGBM
YXlvdXQ8Li4uLCBBbGlnbmVkPFQsIE4+LCAuLi4+YCBoYXMgZXhhY3RseSB0aGUgc2FtZSBBUEkK
Ky8vIGFuZCBiZWhhdmlvciBhcyBgTGF5b3V0PC4uLiwgVCwgLi4uPmAgZXhjZXB0IHRoYXQgdGhl
IGZpcnN0IGVsZW1lbnQgb2YgdGhlCisvLyBhcnJheSBvZiBgVGAgaXMgYWxpZ25lZCB0byBgTmAg
KHRoZSByZXN0IG9mIHRoZSBlbGVtZW50cyBmb2xsb3cgd2l0aG91dAorLy8gcGFkZGluZykuCisv
LworLy8gUmVxdWlyZXM6IGBOID49IGFsaWdub2YoVClgIGFuZCBgTmAgaXMgYSBwb3dlciBvZiAy
LgordGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgorc3RydWN0IEFsaWduZWQ7CisKK25hbWVz
cGFjZSBpbnRlcm5hbF9sYXlvdXQgeworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBOb3RB
bGlnbmVkIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+CitzdHJ1Y3QgTm90QWxp
Z25lZDxjb25zdCBBbGlnbmVkPFQsIE4+PiB7CisgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09
IDAsICJBbGlnbmVkPFQsIE4+IGNhbm5vdCBiZSBjb25zdC1xdWFsaWZpZWQiKTsKK307CisKK3Rl
bXBsYXRlIDxzaXplX3Q+Cit1c2luZyBJbnRUb1NpemUgPSBzaXplX3Q7CisKK3RlbXBsYXRlIDxj
bGFzcz4KK3VzaW5nIFR5cGVUb1NpemUgPSBzaXplX3Q7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgor
c3RydWN0IFR5cGUgOiBOb3RBbGlnbmVkPFQ+IHsKKyAgdXNpbmcgdHlwZSA9IFQ7Cit9OworCit0
ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+CitzdHJ1Y3QgVHlwZTxBbGlnbmVkPFQsIE4+PiB7
CisgIHVzaW5nIHR5cGUgPSBUOworfTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgU2l6
ZU9mIDogTm90QWxpZ25lZDxUPiwgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIHNpemVv
ZihUKT4ge307CisKK3RlbXBsYXRlIDxjbGFzcyBULCBzaXplX3QgTj4KK3N0cnVjdCBTaXplT2Y8
QWxpZ25lZDxULCBOPj4gOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgc2l6ZW9mKFQp
PiB7fTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgQWxpZ25PZiA6IE5vdEFsaWduZWQ8
VD4sIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBhbGlnbm9mKFQpPiB7fTsKKwordGVt
cGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgorc3RydWN0IEFsaWduT2Y8QWxpZ25lZDxULCBOPj4g
OiBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgTj4geworICBzdGF0aWNfYXNzZXJ0KE4g
JSBhbGlnbm9mKFQpID09IDAsCisgICAgICAgICAgICAgICAgIkN1c3RvbSBhbGlnbm1lbnQgY2Fu
J3QgYmUgbG93ZXIgdGhhbiB0aGUgdHlwZSdzIGFsaWdubWVudCIpOworfTsKKworLy8gRG9lcyBg
VHMuLi5gIGNvbnRhaW4gYFRgPwordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzLi4uIFRzPgordXNp
bmcgQ29udGFpbnMgPSBhYnNsOjpkaXNqdW5jdGlvbjxzdGQ6OmlzX3NhbWU8VCwgVHM+Li4uPjsK
KwordGVtcGxhdGUgPGNsYXNzIEZyb20sIGNsYXNzIFRvPgordXNpbmcgQ29weUNvbnN0ID0KKyAg
ICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8RnJvbT46OnZhbHVlLCBj
b25zdCBUbywgVG8+Ojp0eXBlOworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3VzaW5nIFNsaWNlVHlw
ZSA9IGFic2w6OlNwYW48VD47CisKKy8vIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIG5vIHR5cGVz
LiBJdCBwcmV2ZW50cyBmdW5jdGlvbnMgZGVmaW5lZCBpbiBpdCBmcm9tCisvLyBiZWluZyBmb3Vu
ZCBieSBBREwuCituYW1lc3BhY2UgYWRsX2JhcnJpZXIgeworCit0ZW1wbGF0ZSA8Y2xhc3MgTmVl
ZGxlLCBjbGFzcy4uLiBUcz4KK2NvbnN0ZXhwciBzaXplX3QgRmluZChOZWVkbGUsIE5lZWRsZSwg
VHMuLi4pIHsKKyAgc3RhdGljX2Fzc2VydCghQ29udGFpbnM8TmVlZGxlLCBUcy4uLj4oKSwgIkR1
cGxpY2F0ZSBlbGVtZW50IHR5cGUiKTsKKyAgcmV0dXJuIDA7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBOZWVkbGUsIGNsYXNzIFQsIGNsYXNzLi4uIFRzPgorY29uc3RleHByIHNpemVfdCBGaW5kKE5l
ZWRsZSwgVCwgVHMuLi4pIHsKKyAgcmV0dXJuIGFkbF9iYXJyaWVyOjpGaW5kKE5lZWRsZSgpLCBU
cygpLi4uKSArIDE7Cit9CisKK2NvbnN0ZXhwciBib29sIElzUG93MihzaXplX3QgbikgeyByZXR1
cm4gIShuICYgKG4gLSAxKSk7IH0KKworLy8gUmV0dXJucyBgcSAqIG1gIGZvciB0aGUgc21hbGxl
c3QgYHFgIHN1Y2ggdGhhdCBgcSAqIG0gPj0gbmAuCisvLyBSZXF1aXJlczogYG1gIGlzIGEgcG93
ZXIgb2YgdHdvLiBJdCdzIGVuZm9yY2VkIGJ5IElzTGVnYWxFbGVtZW50VHlwZSBiZWxvdy4KK2Nv
bnN0ZXhwciBzaXplX3QgQWxpZ24oc2l6ZV90IG4sIHNpemVfdCBtKSB7IHJldHVybiAobiArIG0g
LSAxKSAmIH4obSAtIDEpOyB9CisKK2NvbnN0ZXhwciBzaXplX3QgTWluKHNpemVfdCBhLCBzaXpl
X3QgYikgeyByZXR1cm4gYiA8IGEgPyBiIDogYTsgfQorCitjb25zdGV4cHIgc2l6ZV90IE1heChz
aXplX3QgYSkgeyByZXR1cm4gYTsgfQorCit0ZW1wbGF0ZSA8Y2xhc3MuLi4gVHM+Citjb25zdGV4
cHIgc2l6ZV90IE1heChzaXplX3QgYSwgc2l6ZV90IGIsIFRzLi4uIHJlc3QpIHsKKyAgcmV0dXJu
IGFkbF9iYXJyaWVyOjpNYXgoYiA8IGEgPyBhIDogYiwgcmVzdC4uLik7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBUPgorc3RkOjpzdHJpbmcgVHlwZU5hbWUoKSB7CisgIHN0ZDo6c3RyaW5nIG91dDsK
KyAgaW50IHN0YXR1cyA9IDA7CisgIGNoYXIqIGRlbWFuZ2xlZCA9IG51bGxwdHI7CisjaWZkZWYg
QUJTTF9JTlRFUk5BTF9IQVNfQ1hBX0RFTUFOR0xFCisgIGRlbWFuZ2xlZCA9IGFiaTo6X19jeGFf
ZGVtYW5nbGUodHlwZWlkKFQpLm5hbWUoKSwgbnVsbHB0ciwgbnVsbHB0ciwgJnN0YXR1cyk7Cisj
ZW5kaWYKKyAgaWYgKHN0YXR1cyA9PSAwICYmIGRlbWFuZ2xlZCAhPSBudWxscHRyKSB7ICAvLyBE
ZW1hbmdsaW5nIHN1Y2NlZWVkZWQuCisgICAgYWJzbDo6U3RyQXBwZW5kKCZvdXQsICI8IiwgZGVt
YW5nbGVkLCAiPiIpOworICAgIGZyZWUoZGVtYW5nbGVkKTsKKyAgfSBlbHNlIHsKKyNpZiBkZWZp
bmVkKF9fR1hYX1JUVEkpIHx8IGRlZmluZWQoX0NQUFJUVEkpCisgICAgYWJzbDo6U3RyQXBwZW5k
KCZvdXQsICI8IiwgdHlwZWlkKFQpLm5hbWUoKSwgIj4iKTsKKyNlbmRpZgorICB9CisgIHJldHVy
biBvdXQ7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhZGxfYmFycmllcgorCit0ZW1wbGF0ZSA8Ym9v
bCBDPgordXNpbmcgRW5hYmxlSWYgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxDLCBpbnQ+Ojp0
eXBlOworCisvLyBDYW4gYFRgIGJlIGEgdGVtcGxhdGUgYXJndW1lbnQgb2YgYExheW91dGA/Cit0
ZW1wbGF0ZSA8Y2xhc3MgVD4KK3VzaW5nIElzTGVnYWxFbGVtZW50VHlwZSA9IHN0ZDo6aW50ZWdy
YWxfY29uc3RhbnQ8CisgICAgYm9vbCwgIXN0ZDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSAmJiAh
c3RkOjppc192b2xhdGlsZTxUPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgIXN0ZDo6aXNfcmVm
ZXJlbmNlPHR5cGVuYW1lIFR5cGU8VD46OnR5cGU+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAh
c3RkOjppc192b2xhdGlsZTx0eXBlbmFtZSBUeXBlPFQ+Ojp0eXBlPjo6dmFsdWUgJiYKKyAgICAg
ICAgICAgICAgYWRsX2JhcnJpZXI6OklzUG93MihBbGlnbk9mPFQ+Ojp2YWx1ZSk+OworCit0ZW1w
bGF0ZSA8Y2xhc3MgRWxlbWVudHMsIGNsYXNzIFNpemVTZXEsIGNsYXNzIE9mZnNldFNlcT4KK2Ns
YXNzIExheW91dEltcGw7CisKKy8vIFB1YmxpYyBiYXNlIGNsYXNzIG9mIGBMYXlvdXRgIGFuZCB0
aGUgcmVzdWx0IHR5cGUgb2YgYExheW91dDo6UGFydGlhbCgpYC4KKy8vCisvLyBgRWxlbWVudHMu
Li5gIGNvbnRhaW5zIGFsbCB0ZW1wbGF0ZSBhcmd1bWVudHMgb2YgYExheW91dGAgdGhhdCBjcmVh
dGVkIHRoaXMKKy8vIGluc3RhbmNlLgorLy8KKy8vIGBTaXplU2VxLi4uYCBpcyBgWzAsIE51bVNp
emVzKWAgd2hlcmUgYE51bVNpemVzYCBpcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cworLy8gcGFz
c2VkIHRvIGBMYXlvdXQ6OlBhcnRpYWwoKWAgb3IgYExheW91dDo6TGF5b3V0KClgLgorLy8KKy8v
IGBPZmZzZXRTZXEuLi5gIGlzIGBbMCwgTnVtT2Zmc2V0cylgIHdoZXJlIGBOdW1PZmZzZXRzYCBp
cworLy8gYE1pbihzaXplb2YuLi4oRWxlbWVudHMpLCBOdW1TaXplcyArIDEpYCAodGhlIG51bWJl
ciBvZiBhcnJheXMgZm9yIHdoaWNoIHdlCisvLyBjYW4gY29tcHV0ZSBvZmZzZXRzKS4KK3RlbXBs
YXRlIDxjbGFzcy4uLiBFbGVtZW50cywgc2l6ZV90Li4uIFNpemVTZXEsIHNpemVfdC4uLiBPZmZz
ZXRTZXE+CitjbGFzcyBMYXlvdXRJbXBsPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+LCBhYnNsOjpp
bmRleF9zZXF1ZW5jZTxTaXplU2VxLi4uPiwKKyAgICAgICAgICAgICAgICAgYWJzbDo6aW5kZXhf
c2VxdWVuY2U8T2Zmc2V0U2VxLi4uPj4geworIHByaXZhdGU6CisgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mLi4uKEVsZW1lbnRzKSA+IDAsICJBdCBsZWFzdCBvbmUgZmllbGQgaXMgcmVxdWlyZWQiKTsK
KyAgc3RhdGljX2Fzc2VydChhYnNsOjpjb25qdW5jdGlvbjxJc0xlZ2FsRWxlbWVudFR5cGU8RWxl
bWVudHM+Li4uPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIkludmFsaWQgZWxlbWVudCB0eXBl
IChzZWUgSXNMZWdhbEVsZW1lbnRUeXBlKSIpOworCisgIGVudW0geworICAgIE51bVR5cGVzID0g
c2l6ZW9mLi4uKEVsZW1lbnRzKSwKKyAgICBOdW1TaXplcyA9IHNpemVvZi4uLihTaXplU2VxKSwK
KyAgICBOdW1PZmZzZXRzID0gc2l6ZW9mLi4uKE9mZnNldFNlcSksCisgIH07CisKKyAgLy8gVGhl
c2UgYXJlIGd1YXJhbnRlZWQgYnkgYExheW91dGAuCisgIHN0YXRpY19hc3NlcnQoTnVtT2Zmc2V0
cyA9PSBhZGxfYmFycmllcjo6TWluKE51bVR5cGVzLCBOdW1TaXplcyArIDEpLAorICAgICAgICAg
ICAgICAgICJJbnRlcm5hbCBlcnJvciIpOworICBzdGF0aWNfYXNzZXJ0KE51bVR5cGVzID4gMCwg
IkludGVybmFsIGVycm9yIik7CisKKyAgLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgYFRgIGluIGBF
bGVtZW50cy4uLmAuIFJlc3VsdHMgaW4gYSBjb21waWxhdGlvbiBlcnJvcgorICAvLyBpZiBgRWxl
bWVudHMuLi5gIGRvZXNuJ3QgY29udGFpbiBleGFjdGx5IG9uZSBpbnN0YW5jZSBvZiBgVGAuCisg
IHRlbXBsYXRlIDxjbGFzcyBUPgorICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBFbGVtZW50SW5k
ZXgoKSB7CisgICAgc3RhdGljX2Fzc2VydChDb250YWluczxUeXBlPFQ+LCBUeXBlPHR5cGVuYW1l
IFR5cGU8RWxlbWVudHM+Ojp0eXBlPi4uLj4oKSwKKyAgICAgICAgICAgICAgICAgICJUeXBlIG5v
dCBmb3VuZCIpOworICAgIHJldHVybiBhZGxfYmFycmllcjo6RmluZChUeXBlPFQ+KCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU8dHlwZW5hbWUgVHlwZTxFbGVtZW50cz46OnR5
cGU+KCkuLi4pOworICB9CisKKyAgdGVtcGxhdGUgPHNpemVfdCBOPgorICB1c2luZyBFbGVtZW50
QWxpZ25tZW50ID0KKyAgICAgIEFsaWduT2Y8dHlwZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PE4s
IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+Pjo6dHlwZT47CisKKyBwdWJsaWM6CisgIC8vIEVsZW1l
bnQgdHlwZXMgb2YgYWxsIGFycmF5cyBwYWNrZWQgaW4gYSB0dXBsZS4KKyAgdXNpbmcgRWxlbWVu
dFR5cGVzID0gc3RkOjp0dXBsZTx0eXBlbmFtZSBUeXBlPEVsZW1lbnRzPjo6dHlwZS4uLj47CisK
KyAgLy8gRWxlbWVudCB0eXBlIG9mIHRoZSBOdGggYXJyYXkuCisgIHRlbXBsYXRlIDxzaXplX3Qg
Tj4KKyAgdXNpbmcgRWxlbWVudFR5cGUgPSB0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8Tiwg
RWxlbWVudFR5cGVzPjo6dHlwZTsKKworICBjb25zdGV4cHIgZXhwbGljaXQgTGF5b3V0SW1wbChJ
bnRUb1NpemU8U2l6ZVNlcT4uLi4gc2l6ZXMpCisgICAgICA6IHNpemVfe3NpemVzLi4ufSB7fQor
CisgIC8vIEFsaWdubWVudCBvZiB0aGUgbGF5b3V0LCBlcXVhbCB0byB0aGUgc3RyaWN0ZXN0IGFs
aWdubWVudCBvZiBhbGwgZWxlbWVudHMuCisgIC8vIEFsbCBwb2ludGVycyBwYXNzZWQgdG8gdGhl
IG1ldGhvZHMgb2YgbGF5b3V0IG11c3QgYmUgYWxpZ25lZCB0byB0aGlzIHZhbHVlLgorICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBBbGlnbm1lbnQoKSB7CisgICAgcmV0dXJuIGFkbF9iYXJyaWVy
OjpNYXgoQWxpZ25PZjxFbGVtZW50cz46OnZhbHVlLi4uKTsKKyAgfQorCisgIC8vIE9mZnNldCBp
biBieXRlcyBvZiB0aGUgTnRoIGFycmF5LgorICAvLworICAvLyAgIC8vIGludFszXSwgNCBieXRl
cyBvZiBwYWRkaW5nLCBkb3VibGVbNF0uCisgIC8vICAgTGF5b3V0PGludCwgZG91YmxlPiB4KDMs
IDQpOworICAvLyAgIGFzc2VydCh4Lk9mZnNldDwwPigpID09IDApOyAgIC8vIFRoZSBpbnRzIHN0
YXJ0cyBmcm9tIDAuCisgIC8vICAgYXNzZXJ0KHguT2Zmc2V0PDE+KCkgPT0gMTYpOyAgLy8gVGhl
IGRvdWJsZXMgc3RhcnRzIGZyb20gMTYuCisgIC8vCisgIC8vIFJlcXVpcmVzOiBgTiA8PSBOdW1T
aXplcyAmJiBOIDwgc2l6ZW9mLi4uKFRzKWAuCisgIHRlbXBsYXRlIDxzaXplX3QgTiwgRW5hYmxl
SWY8TiA9PSAwPiA9IDA+CisgIGNvbnN0ZXhwciBzaXplX3QgT2Zmc2V0KCkgY29uc3QgeworICAg
IHJldHVybiAwOworICB9CisKKyAgdGVtcGxhdGUgPHNpemVfdCBOLCBFbmFibGVJZjxOICE9IDA+
ID0gMD4KKyAgY29uc3RleHByIHNpemVfdCBPZmZzZXQoKSBjb25zdCB7CisgICAgc3RhdGljX2Fz
c2VydChOIDwgTnVtT2Zmc2V0cywgIkluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICByZXR1cm4g
YWRsX2JhcnJpZXI6OkFsaWduKAorICAgICAgICBPZmZzZXQ8TiAtIDE+KCkgKyBTaXplT2Y8RWxl
bWVudFR5cGU8TiAtIDE+PigpICogc2l6ZV9bTiAtIDFdLAorICAgICAgICBFbGVtZW50QWxpZ25t
ZW50PE4+KCkpOworICB9CisKKyAgLy8gT2Zmc2V0IGluIGJ5dGVzIG9mIHRoZSBhcnJheSB3aXRo
IHRoZSBzcGVjaWZpZWQgZWxlbWVudCB0eXBlLiBUaGVyZSBtdXN0CisgIC8vIGJlIGV4YWN0bHkg
b25lIHN1Y2ggYXJyYXkgYW5kIGl0cyB6ZXJvLWJhc2VkIGluZGV4IG11c3QgYmUgYXQgbW9zdAor
ICAvLyBgTnVtU2l6ZXNgLgorICAvLworICAvLyAgIC8vIGludFszXSwgNCBieXRlcyBvZiBwYWRk
aW5nLCBkb3VibGVbNF0uCisgIC8vICAgTGF5b3V0PGludCwgZG91YmxlPiB4KDMsIDQpOworICAv
LyAgIGFzc2VydCh4Lk9mZnNldDxpbnQ+KCkgPT0gMCk7ICAgICAgLy8gVGhlIGludHMgc3RhcnRz
IGZyb20gMC4KKyAgLy8gICBhc3NlcnQoeC5PZmZzZXQ8ZG91YmxlPigpID09IDE2KTsgIC8vIFRo
ZSBkb3VibGVzIHN0YXJ0cyBmcm9tIDE2LgorICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgY29uc3Rl
eHByIHNpemVfdCBPZmZzZXQoKSBjb25zdCB7CisgICAgcmV0dXJuIE9mZnNldDxFbGVtZW50SW5k
ZXg8VD4oKT4oKTsKKyAgfQorCisgIC8vIE9mZnNldHMgaW4gYnl0ZXMgb2YgYWxsIGFycmF5cyBm
b3Igd2hpY2ggdGhlIG9mZnNldHMgYXJlIGtub3duLgorICBjb25zdGV4cHIgc3RkOjphcnJheTxz
aXplX3QsIE51bU9mZnNldHM+IE9mZnNldHMoKSBjb25zdCB7CisgICAgcmV0dXJuIHt7T2Zmc2V0
PE9mZnNldFNlcT4oKS4uLn19OworICB9CisKKyAgLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBp
biB0aGUgTnRoIGFycmF5LiBUaGlzIGlzIHRoZSBOdGggYXJndW1lbnQgb2YKKyAgLy8gYExheW91
dDo6UGFydGlhbCgpYCBvciBgTGF5b3V0OjpMYXlvdXQoKWAgKHplcm8tYmFzZWQpLgorICAvLwor
ICAvLyAgIC8vIGludFszXSwgNCBieXRlcyBvZiBwYWRkaW5nLCBkb3VibGVbNF0uCisgIC8vICAg
TGF5b3V0PGludCwgZG91YmxlPiB4KDMsIDQpOworICAvLyAgIGFzc2VydCh4LlNpemU8MD4oKSA9
PSAzKTsKKyAgLy8gICBhc3NlcnQoeC5TaXplPDE+KCkgPT0gNCk7CisgIC8vCisgIC8vIFJlcXVp
cmVzOiBgTiA8IE51bVNpemVzYC4KKyAgdGVtcGxhdGUgPHNpemVfdCBOPgorICBjb25zdGV4cHIg
c2l6ZV90IFNpemUoKSBjb25zdCB7CisgICAgc3RhdGljX2Fzc2VydChOIDwgTnVtU2l6ZXMsICJJ
bmRleCBvdXQgb2YgYm91bmRzIik7CisgICAgcmV0dXJuIHNpemVfW05dOworICB9CisKKyAgLy8g
VGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYXJyYXkgd2l0aCB0aGUgc3BlY2lmaWVkIGVs
ZW1lbnQgdHlwZS4KKyAgLy8gVGhlcmUgbXVzdCBiZSBleGFjdGx5IG9uZSBzdWNoIGFycmF5IGFu
ZCBpdHMgemVyby1iYXNlZCBpbmRleCBtdXN0IGJlCisgIC8vIGF0IG1vc3QgYE51bVNpemVzYC4K
KyAgLy8KKyAgLy8gICAvLyBpbnRbM10sIDQgYnl0ZXMgb2YgcGFkZGluZywgZG91YmxlWzRdLgor
ICAvLyAgIExheW91dDxpbnQsIGRvdWJsZT4geCgzLCA0KTsKKyAgLy8gICBhc3NlcnQoeC5TaXpl
PGludD4oKSA9PSAzKTsKKyAgLy8gICBhc3NlcnQoeC5TaXplPGRvdWJsZT4oKSA9PSA0KTsKKyAg
dGVtcGxhdGUgPGNsYXNzIFQ+CisgIGNvbnN0ZXhwciBzaXplX3QgU2l6ZSgpIGNvbnN0IHsKKyAg
ICByZXR1cm4gU2l6ZTxFbGVtZW50SW5kZXg8VD4oKT4oKTsKKyAgfQorCisgICAgLy8gVGhlIG51
bWJlciBvZiBlbGVtZW50cyBvZiBhbGwgYXJyYXlzIGZvciB3aGljaCB0aGV5IGFyZSBrbm93bi4K
KyAgY29uc3RleHByIHN0ZDo6YXJyYXk8c2l6ZV90LCBOdW1TaXplcz4gU2l6ZXMoKSBjb25zdCB7
CisgICAgcmV0dXJuIHt7U2l6ZTxTaXplU2VxPigpLi4ufX07CisgIH0KKworICAvLyBQb2ludGVy
IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIE50aCBhcnJheS4KKyAgLy8KKyAgLy8gYENoYXJgIG11
c3QgYmUgYFtjb25zdF0gW3NpZ25lZHx1bnNpZ25lZF0gY2hhcmAuCisgIC8vCisgIC8vICAgLy8g
aW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGRvdWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50
LCBkb3VibGU+IHgoMywgNCk7CisgIC8vICAgdW5zaWduZWQgY2hhciogcCA9IG5ldyB1bnNpZ25l
ZCBjaGFyW3guQWxsb2NTaXplKCldOworICAvLyAgIGludCogaW50cyA9IHguUG9pbnRlcjwwPihw
KTsKKyAgLy8gICBkb3VibGUqIGRvdWJsZXMgPSB4LlBvaW50ZXI8MT4ocCk7CisgIC8vCisgIC8v
IFJlcXVpcmVzOiBgTiA8PSBOdW1TaXplcyAmJiBOIDwgc2l6ZW9mLi4uKFRzKWAuCisgIC8vIFJl
cXVpcmVzOiBgcGAgaXMgYWxpZ25lZCB0byBgQWxpZ25tZW50KClgLgorICB0ZW1wbGF0ZSA8c2l6
ZV90IE4sIGNsYXNzIENoYXI+CisgIENvcHlDb25zdDxDaGFyLCBFbGVtZW50VHlwZTxOPj4qIFBv
aW50ZXIoQ2hhciogcCkgY29uc3QgeworICAgIHVzaW5nIEMgPSB0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9jb25zdDxDaGFyPjo6dHlwZTsKKyAgICBzdGF0aWNfYXNzZXJ0KAorICAgICAgICBzdGQ6Omlz
X3NhbWU8QywgY2hhcj4oKSB8fCBzdGQ6OmlzX3NhbWU8QywgdW5zaWduZWQgY2hhcj4oKSB8fAor
ICAgICAgICAgICAgc3RkOjppc19zYW1lPEMsIHNpZ25lZCBjaGFyPigpLAorICAgICAgICAiVGhl
IGFyZ3VtZW50IG11c3QgYmUgYSBwb2ludGVyIHRvIFtjb25zdF0gW3NpZ25lZHx1bnNpZ25lZF0g
Y2hhciIpOworICAgIGNvbnN0ZXhwciBzaXplX3QgYWxpZ25tZW50ID0gQWxpZ25tZW50KCk7Cisg
ICAgKHZvaWQpYWxpZ25tZW50OworICAgIGFzc2VydChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4ocCkgJSBhbGlnbm1lbnQgPT0gMCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q29w
eUNvbnN0PENoYXIsIEVsZW1lbnRUeXBlPE4+Pio+KHAgKyBPZmZzZXQ8Tj4oKSk7CisgIH0KKwor
ICAvLyBQb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5IHdpdGggdGhlIHNwZWNp
ZmllZCBlbGVtZW50IHR5cGUuCisgIC8vIFRoZXJlIG11c3QgYmUgZXhhY3RseSBvbmUgc3VjaCBh
cnJheSBhbmQgaXRzIHplcm8tYmFzZWQgaW5kZXggbXVzdCBiZSBhdAorICAvLyBtb3N0IGBOdW1T
aXplc2AuCisgIC8vCisgIC8vIGBDaGFyYCBtdXN0IGJlIGBbY29uc3RdIFtzaWduZWR8dW5zaWdu
ZWRdIGNoYXJgLgorICAvLworICAvLyAgIC8vIGludFszXSwgNCBieXRlcyBvZiBwYWRkaW5nLCBk
b3VibGVbNF0uCisgIC8vICAgTGF5b3V0PGludCwgZG91YmxlPiB4KDMsIDQpOworICAvLyAgIHVu
c2lnbmVkIGNoYXIqIHAgPSBuZXcgdW5zaWduZWQgY2hhclt4LkFsbG9jU2l6ZSgpXTsKKyAgLy8g
ICBpbnQqIGludHMgPSB4LlBvaW50ZXI8aW50PihwKTsKKyAgLy8gICBkb3VibGUqIGRvdWJsZXMg
PSB4LlBvaW50ZXI8ZG91YmxlPihwKTsKKyAgLy8KKyAgLy8gUmVxdWlyZXM6IGBwYCBpcyBhbGln
bmVkIHRvIGBBbGlnbm1lbnQoKWAuCisgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBDaGFyPgor
ICBDb3B5Q29uc3Q8Q2hhciwgVD4qIFBvaW50ZXIoQ2hhciogcCkgY29uc3QgeworICAgIHJldHVy
biBQb2ludGVyPEVsZW1lbnRJbmRleDxUPigpPihwKTsKKyAgfQorCisgIC8vIFBvaW50ZXJzIHRv
IGFsbCBhcnJheXMgZm9yIHdoaWNoIHBvaW50ZXJzIGFyZSBrbm93bi4KKyAgLy8KKyAgLy8gYENo
YXJgIG11c3QgYmUgYFtjb25zdF0gW3NpZ25lZHx1bnNpZ25lZF0gY2hhcmAuCisgIC8vCisgIC8v
ICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGRvdWJsZVs0XS4KKyAgLy8gICBMYXlv
dXQ8aW50LCBkb3VibGU+IHgoMywgNCk7CisgIC8vICAgdW5zaWduZWQgY2hhciogcCA9IG5ldyB1
bnNpZ25lZCBjaGFyW3guQWxsb2NTaXplKCldOworICAvLworICAvLyAgIGludCogaW50czsKKyAg
Ly8gICBkb3VibGUqIGRvdWJsZXM7CisgIC8vICAgc3RkOjp0aWUoaW50cywgZG91YmxlcykgPSB4
LlBvaW50ZXJzKHApOworICAvLworICAvLyBSZXF1aXJlczogYHBgIGlzIGFsaWduZWQgdG8gYEFs
aWdubWVudCgpYC4KKyAgLy8KKyAgLy8gTm90ZTogV2UncmUgbm90IHVzaW5nIEVsZW1lbnRUeXBl
IGFsaWFzIGhlcmUgYmVjYXVzZSBpdCBkb2VzIG5vdCBjb21waWxlCisgIC8vIHVuZGVyIE1TVkMu
CisgIHRlbXBsYXRlIDxjbGFzcyBDaGFyPgorICBzdGQ6OnR1cGxlPENvcHlDb25zdDwKKyAgICAg
IENoYXIsIHR5cGVuYW1lIHN0ZDo6dHVwbGVfZWxlbWVudDxPZmZzZXRTZXEsIEVsZW1lbnRUeXBl
cz46OnR5cGU+Ki4uLj4KKyAgUG9pbnRlcnMoQ2hhciogcCkgY29uc3QgeworICAgIHJldHVybiBz
dGQ6OnR1cGxlPENvcHlDb25zdDxDaGFyLCBFbGVtZW50VHlwZTxPZmZzZXRTZXE+PiouLi4+KAor
ICAgICAgICBQb2ludGVyPE9mZnNldFNlcT4ocCkuLi4pOworICB9CisKKyAgLy8gVGhlIE50aCBh
cnJheS4KKyAgLy8KKyAgLy8gYENoYXJgIG11c3QgYmUgYFtjb25zdF0gW3NpZ25lZHx1bnNpZ25l
ZF0gY2hhcmAuCisgIC8vCisgIC8vICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGRv
dWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+IHgoMywgNCk7CisgIC8vICAgdW5z
aWduZWQgY2hhciogcCA9IG5ldyB1bnNpZ25lZCBjaGFyW3guQWxsb2NTaXplKCldOworICAvLyAg
IFNwYW48aW50PiBpbnRzID0geC5TbGljZTwwPihwKTsKKyAgLy8gICBTcGFuPGRvdWJsZT4gZG91
YmxlcyA9IHguU2xpY2U8MT4ocCk7CisgIC8vCisgIC8vIFJlcXVpcmVzOiBgTiA8IE51bVNpemVz
YC4KKyAgLy8gUmVxdWlyZXM6IGBwYCBpcyBhbGlnbmVkIHRvIGBBbGlnbm1lbnQoKWAuCisgIHRl
bXBsYXRlIDxzaXplX3QgTiwgY2xhc3MgQ2hhcj4KKyAgU2xpY2VUeXBlPENvcHlDb25zdDxDaGFy
LCBFbGVtZW50VHlwZTxOPj4+IFNsaWNlKENoYXIqIHApIGNvbnN0IHsKKyAgICByZXR1cm4gU2xp
Y2VUeXBlPENvcHlDb25zdDxDaGFyLCBFbGVtZW50VHlwZTxOPj4+KFBvaW50ZXI8Tj4ocCksIFNp
emU8Tj4oKSk7CisgIH0KKworICAvLyBUaGUgYXJyYXkgd2l0aCB0aGUgc3BlY2lmaWVkIGVsZW1l
bnQgdHlwZS4gVGhlcmUgbXVzdCBiZSBleGFjdGx5IG9uZQorICAvLyBzdWNoIGFycmF5IGFuZCBp
dHMgemVyby1iYXNlZCBpbmRleCBtdXN0IGJlIGxlc3MgdGhhbiBgTnVtU2l6ZXNgLgorICAvLwor
ICAvLyBgQ2hhcmAgbXVzdCBiZSBgW2NvbnN0XSBbc2lnbmVkfHVuc2lnbmVkXSBjaGFyYC4KKyAg
Ly8KKyAgLy8gICAvLyBpbnRbM10sIDQgYnl0ZXMgb2YgcGFkZGluZywgZG91YmxlWzRdLgorICAv
LyAgIExheW91dDxpbnQsIGRvdWJsZT4geCgzLCA0KTsKKyAgLy8gICB1bnNpZ25lZCBjaGFyKiBw
ID0gbmV3IHVuc2lnbmVkIGNoYXJbeC5BbGxvY1NpemUoKV07CisgIC8vICAgU3BhbjxpbnQ+IGlu
dHMgPSB4LlNsaWNlPGludD4ocCk7CisgIC8vICAgU3Bhbjxkb3VibGU+IGRvdWJsZXMgPSB4LlNs
aWNlPGRvdWJsZT4ocCk7CisgIC8vCisgIC8vIFJlcXVpcmVzOiBgcGAgaXMgYWxpZ25lZCB0byBg
QWxpZ25tZW50KClgLgorICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQ2hhcj4KKyAgU2xpY2VU
eXBlPENvcHlDb25zdDxDaGFyLCBUPj4gU2xpY2UoQ2hhciogcCkgY29uc3QgeworICAgIHJldHVy
biBTbGljZTxFbGVtZW50SW5kZXg8VD4oKT4ocCk7CisgIH0KKworICAvLyBBbGwgYXJyYXlzIHdp
dGgga25vd24gc2l6ZXMuCisgIC8vCisgIC8vIGBDaGFyYCBtdXN0IGJlIGBbY29uc3RdIFtzaWdu
ZWR8dW5zaWduZWRdIGNoYXJgLgorICAvLworICAvLyAgIC8vIGludFszXSwgNCBieXRlcyBvZiBw
YWRkaW5nLCBkb3VibGVbNF0uCisgIC8vICAgTGF5b3V0PGludCwgZG91YmxlPiB4KDMsIDQpOwor
ICAvLyAgIHVuc2lnbmVkIGNoYXIqIHAgPSBuZXcgdW5zaWduZWQgY2hhclt4LkFsbG9jU2l6ZSgp
XTsKKyAgLy8KKyAgLy8gICBTcGFuPGludD4gaW50czsKKyAgLy8gICBTcGFuPGRvdWJsZT4gZG91
YmxlczsKKyAgLy8gICBzdGQ6OnRpZShpbnRzLCBkb3VibGVzKSA9IHguU2xpY2VzKHApOworICAv
LworICAvLyBSZXF1aXJlczogYHBgIGlzIGFsaWduZWQgdG8gYEFsaWdubWVudCgpYC4KKyAgLy8K
KyAgLy8gTm90ZTogV2UncmUgbm90IHVzaW5nIEVsZW1lbnRUeXBlIGFsaWFzIGhlcmUgYmVjYXVz
ZSBpdCBkb2VzIG5vdCBjb21waWxlCisgIC8vIHVuZGVyIE1TVkMuCisgIHRlbXBsYXRlIDxjbGFz
cyBDaGFyPgorICBzdGQ6OnR1cGxlPFNsaWNlVHlwZTxDb3B5Q29uc3Q8CisgICAgICBDaGFyLCB0
eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8U2l6ZVNlcSwgRWxlbWVudFR5cGVzPjo6dHlwZT4+
Li4uPgorICBTbGljZXMoQ2hhciogcCkgY29uc3QgeworICAgIC8vIFdvcmthcm91bmQgZm9yIGh0
dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTYzODc1IChmaXhlZAor
ICAgIC8vIGluIDYuMSkuCisgICAgKHZvaWQpcDsKKyAgICByZXR1cm4gc3RkOjp0dXBsZTxTbGlj
ZVR5cGU8Q29weUNvbnN0PENoYXIsIEVsZW1lbnRUeXBlPFNpemVTZXE+Pj4uLi4+KAorICAgICAg
ICBTbGljZTxTaXplU2VxPihwKS4uLik7CisgIH0KKworICAvLyBUaGUgc2l6ZSBvZiB0aGUgYWxs
b2NhdGlvbiB0aGF0IGZpdHMgYWxsIGFycmF5cy4KKyAgLy8KKyAgLy8gICAvLyBpbnRbM10sIDQg
Ynl0ZXMgb2YgcGFkZGluZywgZG91YmxlWzRdLgorICAvLyAgIExheW91dDxpbnQsIGRvdWJsZT4g
eCgzLCA0KTsKKyAgLy8gICB1bnNpZ25lZCBjaGFyKiBwID0gbmV3IHVuc2lnbmVkIGNoYXJbeC5B
bGxvY1NpemUoKV07ICAvLyA0OCBieXRlcworICAvLworICAvLyBSZXF1aXJlczogYE51bVNpemVz
ID09IHNpemVvZi4uLihUcylgLgorICBjb25zdGV4cHIgc2l6ZV90IEFsbG9jU2l6ZSgpIGNvbnN0
IHsKKyAgICBzdGF0aWNfYXNzZXJ0KE51bVR5cGVzID09IE51bVNpemVzLCAiWW91IG11c3Qgc3Bl
Y2lmeSBzaXplcyBvZiBhbGwgZmllbGRzIik7CisgICAgcmV0dXJuIE9mZnNldDxOdW1UeXBlcyAt
IDE+KCkgKworICAgICAgICAgICBTaXplT2Y8RWxlbWVudFR5cGU8TnVtVHlwZXMgLSAxPj4oKSAq
IHNpemVfW051bVR5cGVzIC0gMV07CisgIH0KKworICAvLyBJZiBidWlsdCB3aXRoIC0tY29uZmln
PWFzYW4sIHBvaXNvbnMgcGFkZGluZyBieXRlcyAoaWYgYW55KSBpbiB0aGUKKyAgLy8gYWxsb2Nh
dGlvbi4gVGhlIHBvaW50ZXIgbXVzdCBwb2ludCB0byBhIG1lbW9yeSBibG9jayBhdCBsZWFzdAor
ICAvLyBgQWxsb2NTaXplKClgIGJ5dGVzIGluIGxlbmd0aC4KKyAgLy8KKyAgLy8gYENoYXJgIG11
c3QgYmUgYFtjb25zdF0gW3NpZ25lZHx1bnNpZ25lZF0gY2hhcmAuCisgIC8vCisgIC8vIFJlcXVp
cmVzOiBgcGAgaXMgYWxpZ25lZCB0byBgQWxpZ25tZW50KClgLgorICB0ZW1wbGF0ZSA8Y2xhc3Mg
Q2hhciwgc2l6ZV90IE4gPSBOdW1PZmZzZXRzIC0gMSwgRW5hYmxlSWY8TiA9PSAwPiA9IDA+Cisg
IHZvaWQgUG9pc29uUGFkZGluZyhjb25zdCBDaGFyKiBwKSBjb25zdCB7CisgICAgUG9pbnRlcjww
PihwKTsgIC8vIHZlcmlmeSB0aGUgcmVxdWlyZW1lbnRzIG9uIGBDaGFyYCBhbmQgYHBgCisgIH0K
KworICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhciwgc2l6ZV90IE4gPSBOdW1PZmZzZXRzIC0gMSwgRW5h
YmxlSWY8TiAhPSAwPiA9IDA+CisgIHZvaWQgUG9pc29uUGFkZGluZyhjb25zdCBDaGFyKiBwKSBj
b25zdCB7CisgICAgc3RhdGljX2Fzc2VydChOIDwgTnVtT2Zmc2V0cywgIkluZGV4IG91dCBvZiBi
b3VuZHMiKTsKKyAgICAodm9pZClwOworI2lmZGVmIEFERFJFU1NfU0FOSVRJWkVSCisgICAgUG9p
c29uUGFkZGluZzxDaGFyLCBOIC0gMT4ocCk7CisgICAgLy8gVGhlIGBpZmAgaXMgYW4gb3B0aW1p
emF0aW9uLiBJdCBkb2Vzbid0IGFmZmVjdCB0aGUgb2JzZXJ2YWJsZSBiZWhhdmlvdXIuCisgICAg
aWYgKEVsZW1lbnRBbGlnbm1lbnQ8TiAtIDE+KCkgJSBFbGVtZW50QWxpZ25tZW50PE4+KCkpIHsK
KyAgICAgIHNpemVfdCBzdGFydCA9CisgICAgICAgICAgT2Zmc2V0PE4gLSAxPigpICsgU2l6ZU9m
PEVsZW1lbnRUeXBlPE4gLSAxPj4oKSAqIHNpemVfW04gLSAxXTsKKyAgICAgIEFTQU5fUE9JU09O
X01FTU9SWV9SRUdJT04ocCArIHN0YXJ0LCBPZmZzZXQ8Tj4oKSAtIHN0YXJ0KTsKKyAgICB9Cisj
ZW5kaWYKKyAgfQorCisgIC8vIEh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBtZW1v
cnkgbGF5b3V0LiBVc2VmdWwgZm9yIGRlYnVnZ2luZy4KKyAgLy8gU2xvdy4KKyAgLy8KKyAgLy8g
ICAvLyBjaGFyWzVdLCAzIGJ5dGVzIG9mIHBhZGRpbmcsIGludFszXSwgNCBieXRlcyBvZiBwYWRk
aW5nLCBmb2xsb3dlZAorICAvLyAgIC8vIGJ5IGFuIHVua25vd24gbnVtYmVyIG9mIGRvdWJsZXMu
CisgIC8vICAgYXV0byB4ID0gTGF5b3V0PGNoYXIsIGludCwgZG91YmxlPjo6UGFydGlhbCg1LCAz
KTsKKyAgLy8gICBhc3NlcnQoeC5EZWJ1Z1N0cmluZygpID09CisgIC8vICAgICAgICAgICJAMDxj
aGFyPigxKVs1XTsgQDg8aW50Pig0KVszXTsgQDI0PGRvdWJsZT4oOCkiKTsKKyAgLy8KKyAgLy8g
RWFjaCBmaWVsZCBpcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDogQG9mZnNldDx0eXBlPihzaXpl
b2YpW3NpemVdICg8dHlwZT4KKyAgLy8gbWF5IGJlIG1pc3NpbmcgZGVwZW5kaW5nIG9uIHRoZSB0
YXJnZXQgcGxhdGZvcm0pLiBGb3IgZXhhbXBsZSwKKyAgLy8gQDg8aW50Pig0KVszXSBtZWFucyB0
aGF0IGF0IG9mZnNldCA4IHdlIGhhdmUgYW4gYXJyYXkgb2YgaW50cywgd2hlcmUgZWFjaAorICAv
LyBpbnQgaXMgNCBieXRlcywgYW5kIHdlIGhhdmUgMyBvZiB0aG9zZSBpbnRzLiBUaGUgc2l6ZSBv
ZiB0aGUgbGFzdCBmaWVsZCBtYXkKKyAgLy8gYmUgbWlzc2luZyAoYXMgaW4gdGhlIGV4YW1wbGUg
YWJvdmUpLiBPbmx5IGZpZWxkcyB3aXRoIGtub3duIG9mZnNldHMgYXJlCisgIC8vIGRlc2NyaWJl
ZC4gVHlwZSBuYW1lcyBtYXkgZGlmZmVyIGFjcm9zcyBwbGF0Zm9ybXM6IG9uZSBjb21waWxlciBt
aWdodAorICAvLyBwcm9kdWNlICJ1bnNpZ25lZCoiIHdoZXJlIGFub3RoZXIgcHJvZHVjZXMgInVu
c2lnbmVkIGludCAqIi4KKyAgc3RkOjpzdHJpbmcgRGVidWdTdHJpbmcoKSBjb25zdCB7CisgICAg
Y29uc3QgYXV0byBvZmZzZXRzID0gT2Zmc2V0cygpOworICAgIGNvbnN0IHNpemVfdCBzaXplc1td
ID0ge1NpemVPZjxFbGVtZW50VHlwZTxPZmZzZXRTZXE+PigpLi4ufTsKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyB0eXBlc1tdID0ge2FkbF9iYXJyaWVyOjpUeXBlTmFtZTxFbGVtZW50VHlwZTxPZmZz
ZXRTZXE+PigpLi4ufTsKKyAgICBzdGQ6OnN0cmluZyByZXMgPSBhYnNsOjpTdHJDYXQoIkAwIiwg
dHlwZXNbMF0sICIoIiwgc2l6ZXNbMF0sICIpIik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
IT0gTnVtT2Zmc2V0cyAtIDE7ICsraSkgeworICAgICAgYWJzbDo6U3RyQXBwZW5kKCZyZXMsICJb
Iiwgc2l6ZV9baV0sICJdOyBAIiwgb2Zmc2V0c1tpICsgMV0sIHR5cGVzW2kgKyAxXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAiKCIsIHNpemVzW2kgKyAxXSwgIikiKTsKKyAgICB9CisgICAgLy8g
TnVtU2l6ZXMgaXMgYSBjb25zdGFudCB0aGF0IG1heSBiZSB6ZXJvLiBTb21lIGNvbXBpbGVycyBj
YW5ub3Qgc2VlIHRoYXQKKyAgICAvLyBpbnNpZGUgdGhlIGlmIHN0YXRlbWVudCAic2l6ZV9bTnVt
U2l6ZXMgLSAxXSIgbXVzdCBiZSB2YWxpZC4KKyAgICBpbnQgbGFzdCA9IHN0YXRpY19jYXN0PGlu
dD4oTnVtU2l6ZXMpIC0gMTsKKyAgICBpZiAoTnVtVHlwZXMgPT0gTnVtU2l6ZXMgJiYgbGFzdCA+
PSAwKSB7CisgICAgICBhYnNsOjpTdHJBcHBlbmQoJnJlcywgIlsiLCBzaXplX1tsYXN0XSwgIl0i
KTsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gQXJndW1l
bnRzIG9mIGBMYXlvdXQ6OlBhcnRpYWwoKWAgb3IgYExheW91dDo6TGF5b3V0KClgLgorICBzaXpl
X3Qgc2l6ZV9bTnVtU2l6ZXMgPiAwID8gTnVtU2l6ZXMgOiAxXTsKK307CisKK3RlbXBsYXRlIDxz
aXplX3QgTnVtU2l6ZXMsIGNsYXNzLi4uIFRzPgordXNpbmcgTGF5b3V0VHlwZSA9IExheW91dElt
cGw8CisgICAgc3RkOjp0dXBsZTxUcy4uLj4sIGFic2w6Om1ha2VfaW5kZXhfc2VxdWVuY2U8TnVt
U2l6ZXM+LAorICAgIGFic2w6Om1ha2VfaW5kZXhfc2VxdWVuY2U8YWRsX2JhcnJpZXI6Ok1pbihz
aXplb2YuLi4oVHMpLCBOdW1TaXplcyArIDEpPj47CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bF9sYXlvdXQKKworLy8gRGVzY3JpcHRvciBvZiBhcnJheXMgb2YgdmFyaW91cyB0eXBlcyBhbmQg
c2l6ZXMgbGFpZCBvdXQgaW4gbWVtb3J5IG9uZSBhZnRlcgorLy8gYW5vdGhlci4gU2VlIHRoZSB0
b3Agb2YgdGhlIGZpbGUgZm9yIGRvY3VtZW50YXRpb24uCisvLworLy8gQ2hlY2sgb3V0IHRoZSBw
dWJsaWMgQVBJIG9mIGludGVybmFsX2xheW91dDo6TGF5b3V0SW1wbCBhYm92ZS4gVGhlIHR5cGUg
aXMKKy8vIGludGVybmFsIHRvIHRoZSBsaWJyYXJ5IGJ1dCBpdHMgbWV0aG9kcyBhcmUgcHVibGlj
LCBhbmQgdGhleSBhcmUgaW5oZXJpdGVkCisvLyBieSBgTGF5b3V0YC4KK3RlbXBsYXRlIDxjbGFz
cy4uLiBUcz4KK2NsYXNzIExheW91dCA6IHB1YmxpYyBpbnRlcm5hbF9sYXlvdXQ6OkxheW91dFR5
cGU8c2l6ZW9mLi4uKFRzKSwgVHMuLi4+IHsKKyBwdWJsaWM6CisgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mLi4uKFRzKSA+IDAsICJBdCBsZWFzdCBvbmUgZmllbGQgaXMgcmVxdWlyZWQiKTsKKyAgc3Rh
dGljX2Fzc2VydCgKKyAgICAgIGFic2w6OmNvbmp1bmN0aW9uPGludGVybmFsX2xheW91dDo6SXNM
ZWdhbEVsZW1lbnRUeXBlPFRzPi4uLj46OnZhbHVlLAorICAgICAgIkludmFsaWQgZWxlbWVudCB0
eXBlIChzZWUgSXNMZWdhbEVsZW1lbnRUeXBlKSIpOworCisgIC8vIFRoZSByZXN1bHQgdHlwZSBv
ZiBgUGFydGlhbCgpYCB3aXRoIGBOdW1TaXplc2AgYXJndW1lbnRzLgorICB0ZW1wbGF0ZSA8c2l6
ZV90IE51bVNpemVzPgorICB1c2luZyBQYXJ0aWFsVHlwZSA9IGludGVybmFsX2xheW91dDo6TGF5
b3V0VHlwZTxOdW1TaXplcywgVHMuLi4+OworCisgIC8vIGBMYXlvdXRgIGtub3dzIHRoZSBlbGVt
ZW50IHR5cGVzIG9mIHRoZSBhcnJheXMgd2Ugd2FudCB0byBsYXkgb3V0IGluCisgIC8vIG1lbW9y
eSBidXQgbm90IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gZWFjaCBhcnJheS4KKyAgLy8gYFBh
cnRpYWwoc2l6ZTEsIC4uLiwgc2l6ZU4pYCBhbGxvd3MgdXMgdG8gc3BlY2lmeSB0aGUgbGF0dGVy
LiBUaGUKKyAgLy8gcmVzdWx0aW5nIGltbXV0YWJsZSBvYmplY3QgY2FuIGJlIHVzZWQgdG8gb2J0
YWluIHBvaW50ZXJzIHRvIHRoZQorICAvLyBpbmRpdmlkdWFsIGFycmF5cy4KKyAgLy8KKyAgLy8g
SXQncyBhbGxvd2VkIHRvIHBhc3MgZmV3ZXIgYXJyYXkgc2l6ZXMgdGhhbiB0aGUgbnVtYmVyIG9m
IGFycmF5cy4gRS5nLiwKKyAgLy8gaWYgYWxsIHlvdSBuZWVkIGlzIHRvIHRoZSBvZmZzZXQgb2Yg
dGhlIHNlY29uZCBhcnJheSwgeW91IG9ubHkgbmVlZCB0bworICAvLyBwYXNzIG9uZSBhcmd1bWVu
dCAtLSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBmaXJzdCBhcnJheXMuCisgIC8vCisg
IC8vICAgLy8gaW50WzNdIGZvbGxvd2VkIGJ5IDQgYnl0ZXMgb2YgcGFkZGluZyBhbmQgYW4gdW5r
bm93biBudW1iZXIgb2YKKyAgLy8gICAvLyBkb3VibGVzLgorICAvLyAgIGF1dG8geCA9IExheW91
dDxpbnQsIGRvdWJsZT46OlBhcnRpYWwoMyk7CisgIC8vICAgLy8gZG91YmxlcyBzdGFydCBhdCBi
eXRlIDE2LgorICAvLyAgIGFzc2VydCh4Lk9mZnNldDwxPigpID09IDE2KTsKKyAgLy8KKyAgLy8g
SWYgeW91IGtub3cgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhbGwgYXJyYXlzLCB5b3UgY2Fu
IHN0aWxsIGNhbGwKKyAgLy8gYFBhcnRpYWwoKWAgYnV0IGl0J3MgbW9yZSBjb252ZW5pZW50IHRv
IHVzZSB0aGUgY29uc3RydWN0b3Igb2YgYExheW91dGAuCisgIC8vCisgIC8vICAgTGF5b3V0PGlu
dCwgZG91YmxlPiB4KDMsIDUpOworICAvLworICAvLyBOb3RlOiBUaGUgc2l6ZXMgb2YgdGhlIGFy
cmF5cyBtdXN0IGJlIHNwZWNpZmllZCBpbiBudW1iZXIgb2YgZWxlbWVudHMsCisgIC8vIG5vdCBp
biBieXRlcy4KKyAgLy8KKyAgLy8gUmVxdWlyZXM6IGBzaXplb2YuLi4oU2l6ZXMpIDw9IHNpemVv
Zi4uLihUcylgLgorICAvLyBSZXF1aXJlczogYWxsIGFyZ3VtZW50cyBhcmUgY29udmVydGlibGUg
dG8gYHNpemVfdGAuCisgIHRlbXBsYXRlIDxjbGFzcy4uLiBTaXplcz4KKyAgc3RhdGljIGNvbnN0
ZXhwciBQYXJ0aWFsVHlwZTxzaXplb2YuLi4oU2l6ZXMpPiBQYXJ0aWFsKFNpemVzJiYuLi4gc2l6
ZXMpIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZi4uLihTaXplcykgPD0gc2l6ZW9mLi4uKFRz
KSwgIiIpOworICAgIHJldHVybiBQYXJ0aWFsVHlwZTxzaXplb2YuLi4oU2l6ZXMpPihhYnNsOjpm
b3J3YXJkPFNpemVzPihzaXplcykuLi4pOworICB9CisKKyAgLy8gQ3JlYXRlcyBhIGxheW91dCB3
aXRoIHRoZSBzaXplcyBvZiBhbGwgYXJyYXlzIHNwZWNpZmllZC4gSWYgeW91IGtub3cKKyAgLy8g
b25seSB0aGUgc2l6ZXMgb2YgdGhlIGZpcnN0IE4gYXJyYXlzICh3aGVyZSBOIGNhbiBiZSB6ZXJv
KSwgeW91IGNhbiB1c2UKKyAgLy8gYFBhcnRpYWwoKWAgZGVmaW5lZCBhYm92ZS4gVGhlIGNvbnN0
cnVjdG9yIGlzIGVzc2VudGlhbGx5IGVxdWl2YWxlbnQgdG8KKyAgLy8gY2FsbGluZyBgUGFydGlh
bCgpYCBhbmQgcGFzc2luZyBpbiBhbGwgYXJyYXkgc2l6ZXM7IHRoZSBjb25zdHJ1Y3RvciBpcwor
ICAvLyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbnQgYWJicmV2aWF0aW9uLgorICAvLworICAvLyBO
b3RlOiBUaGUgc2l6ZXMgb2YgdGhlIGFycmF5cyBtdXN0IGJlIHNwZWNpZmllZCBpbiBudW1iZXIg
b2YgZWxlbWVudHMsCisgIC8vIG5vdCBpbiBieXRlcy4KKyAgY29uc3RleHByIGV4cGxpY2l0IExh
eW91dChpbnRlcm5hbF9sYXlvdXQ6OlR5cGVUb1NpemU8VHM+Li4uIHNpemVzKQorICAgICAgOiBp
bnRlcm5hbF9sYXlvdXQ6OkxheW91dFR5cGU8c2l6ZW9mLi4uKFRzKSwgVHMuLi4+KHNpemVzLi4u
KSB7fQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFt
ZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9MQVlPVVRf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXRfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXRfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzUx
NTdhM2JkODUyMTk4ODY5NDZmZDA2MjY5MWM1NzA1M2IyZWRlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dF90ZXN0LmNjCkBAIC0wLDAgKzEsMTU1MiBA
QAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFi
c2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dC5oIgorCisvLyBXZSBuZWVkIDo6bWF4X2FsaWdu
X3QgYmVjYXVzZSBzb21lIGxpYnN0ZGMrKyB2ZXJzaW9ucyBkb24ndCBwcm92aWRlCisvLyBzdGQ6
Om1heF9hbGlnbl90CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNp
bmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJh
YnNsL3R5cGVzL3NwYW4uaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5l
cl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCit1c2luZyA6OmFic2w6OlNwYW47Cit1c2luZyA6
OnRlc3Rpbmc6OkVsZW1lbnRzQXJlOworCitzaXplX3QgRGlzdGFuY2UoY29uc3Qgdm9pZCogZnJv
bSwgY29uc3Qgdm9pZCogdG8pIHsKKyAgQUJTTF9SQVdfQ0hFQ0soZnJvbSA8PSB0bywgIkRpc3Rh
bmNlIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4odG8pIC0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZyb20pOworfQorCit0ZW1wbGF0
ZSA8Y2xhc3MgRXhwZWN0ZWQsIGNsYXNzIEFjdHVhbD4KK0V4cGVjdGVkIFR5cGUoQWN0dWFsIHZh
bCkgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxFeHBlY3RlZCwgQWN0dWFsPigpLCAi
Iik7CisgIHJldHVybiB2YWw7Cit9CisKK3VzaW5nIEludDEyOCA9IGludDY0X3RbMl07CisKKy8v
IFByb3BlcnRpZXMgb2YgdHlwZXMgdGhhdCB0aGlzIHRlc3QgcmVsaWVzIG9uLgorc3RhdGljX2Fz
c2VydChzaXplb2YoaW50OF90KSA9PSAxLCAiIik7CitzdGF0aWNfYXNzZXJ0KGFsaWdub2YoaW50
OF90KSA9PSAxLCAiIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQxNl90KSA9PSAyLCAiIik7
CitzdGF0aWNfYXNzZXJ0KGFsaWdub2YoaW50MTZfdCkgPT0gMiwgIiIpOworc3RhdGljX2Fzc2Vy
dChzaXplb2YoaW50MzJfdCkgPT0gNCwgIiIpOworc3RhdGljX2Fzc2VydChhbGlnbm9mKGludDMy
X3QpID09IDQsICIiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEludDEyOCkgPT0gMTYsICIiKTsK
K3N0YXRpY19hc3NlcnQoYWxpZ25vZihJbnQxMjgpID09IDgsICIiKTsKKwordGVtcGxhdGUgPGNs
YXNzIEV4cGVjdGVkLCBjbGFzcyBBY3R1YWw+Cit2b2lkIFNhbWVUeXBlKCkgeworICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZTxFeHBlY3RlZCwgQWN0dWFsPigpLCAiIik7Cit9CisKK1RFU1Qo
TGF5b3V0LCBFbGVtZW50VHlwZSkgeworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90
PjsKKyAgICBTYW1lVHlwZTxpbnQzMl90LCBMOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1l
VHlwZTxpbnQzMl90LCBkZWNsdHlwZShMOjpQYXJ0aWFsKCkpOjpFbGVtZW50VHlwZTwwPj4oKTsK
KyAgICBTYW1lVHlwZTxpbnQzMl90LCBkZWNsdHlwZShMOjpQYXJ0aWFsKDApKTo6RWxlbWVudFR5
cGU8MD4+KCk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJf
dD47CisgICAgU2FtZVR5cGU8aW50MzJfdCwgTDo6RWxlbWVudFR5cGU8MD4+KCk7CisgICAgU2Ft
ZVR5cGU8aW50MzJfdCwgTDo6RWxlbWVudFR5cGU8MT4+KCk7CisgICAgU2FtZVR5cGU8aW50MzJf
dCwgZGVjbHR5cGUoTDo6UGFydGlhbCgpKTo6RWxlbWVudFR5cGU8MD4+KCk7CisgICAgU2FtZVR5
cGU8aW50MzJfdCwgZGVjbHR5cGUoTDo6UGFydGlhbCgpKTo6RWxlbWVudFR5cGU8MT4+KCk7Cisg
ICAgU2FtZVR5cGU8aW50MzJfdCwgZGVjbHR5cGUoTDo6UGFydGlhbCgwKSk6OkVsZW1lbnRUeXBl
PDA+PigpOworICAgIFNhbWVUeXBlPGludDMyX3QsIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCkpOjpF
bGVtZW50VHlwZTwxPj4oKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3Qs
IGludDMyX3QsIEludDEyOD47CisgICAgU2FtZVR5cGU8aW50OF90LCBMOjpFbGVtZW50VHlwZTww
Pj4oKTsKKyAgICBTYW1lVHlwZTxpbnQzMl90LCBMOjpFbGVtZW50VHlwZTwxPj4oKTsKKyAgICBT
YW1lVHlwZTxJbnQxMjgsIEw6OkVsZW1lbnRUeXBlPDI+PigpOworICAgIFNhbWVUeXBlPGludDhf
dCwgZGVjbHR5cGUoTDo6UGFydGlhbCgpKTo6RWxlbWVudFR5cGU8MD4+KCk7CisgICAgU2FtZVR5
cGU8aW50OF90LCBkZWNsdHlwZShMOjpQYXJ0aWFsKDApKTo6RWxlbWVudFR5cGU8MD4+KCk7Cisg
ICAgU2FtZVR5cGU8aW50MzJfdCwgZGVjbHR5cGUoTDo6UGFydGlhbCgwKSk6OkVsZW1lbnRUeXBl
PDE+PigpOworICAgIFNhbWVUeXBlPGludDhfdCwgZGVjbHR5cGUoTDo6UGFydGlhbCgwLCAwKSk6
OkVsZW1lbnRUeXBlPDA+PigpOworICAgIFNhbWVUeXBlPGludDMyX3QsIGRlY2x0eXBlKEw6OlBh
cnRpYWwoMCwgMCkpOjpFbGVtZW50VHlwZTwxPj4oKTsKKyAgICBTYW1lVHlwZTxJbnQxMjgsIGRl
Y2x0eXBlKEw6OlBhcnRpYWwoMCwgMCkpOjpFbGVtZW50VHlwZTwyPj4oKTsKKyAgICBTYW1lVHlw
ZTxpbnQ4X3QsIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCwgMCwgMCkpOjpFbGVtZW50VHlwZTwwPj4o
KTsKKyAgICBTYW1lVHlwZTxpbnQzMl90LCBkZWNsdHlwZShMOjpQYXJ0aWFsKDAsIDAsIDApKTo6
RWxlbWVudFR5cGU8MT4+KCk7CisgICAgU2FtZVR5cGU8SW50MTI4LCBkZWNsdHlwZShMOjpQYXJ0
aWFsKDAsIDAsIDApKTo6RWxlbWVudFR5cGU8Mj4+KCk7CisgIH0KK30KKworVEVTVChMYXlvdXQs
IEVsZW1lbnRUeXBlcykgeworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAg
ICBTYW1lVHlwZTxzdGQ6OnR1cGxlPGludDMyX3Q+LCBMOjpFbGVtZW50VHlwZXM+KCk7CisgICAg
U2FtZVR5cGU8c3RkOjp0dXBsZTxpbnQzMl90PiwgZGVjbHR5cGUoTDo6UGFydGlhbCgpKTo6RWxl
bWVudFR5cGVzPigpOworICAgIFNhbWVUeXBlPHN0ZDo6dHVwbGU8aW50MzJfdD4sIGRlY2x0eXBl
KEw6OlBhcnRpYWwoMCkpOjpFbGVtZW50VHlwZXM+KCk7CisgIH0KKyAgeworICAgIHVzaW5nIEwg
PSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAgU2FtZVR5cGU8c3RkOjp0dXBsZTxpbnQz
Ml90LCBpbnQzMl90PiwgTDo6RWxlbWVudFR5cGVzPigpOworICAgIFNhbWVUeXBlPHN0ZDo6dHVw
bGU8aW50MzJfdCwgaW50MzJfdD4sIGRlY2x0eXBlKEw6OlBhcnRpYWwoKSk6OkVsZW1lbnRUeXBl
cz4oKTsKKyAgICBTYW1lVHlwZTxzdGQ6OnR1cGxlPGludDMyX3QsIGludDMyX3Q+LCBkZWNsdHlw
ZShMOjpQYXJ0aWFsKDApKTo6RWxlbWVudFR5cGVzPigpOworICB9CisgIHsKKyAgICB1c2luZyBM
ID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBTYW1lVHlwZTxzdGQ6OnR1
cGxlPGludDhfdCwgaW50MzJfdCwgSW50MTI4PiwgTDo6RWxlbWVudFR5cGVzPigpOworICAgIFNh
bWVUeXBlPHN0ZDo6dHVwbGU8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+LAorICAgICAgICAgICAg
IGRlY2x0eXBlKEw6OlBhcnRpYWwoKSk6OkVsZW1lbnRUeXBlcz4oKTsKKyAgICBTYW1lVHlwZTxz
dGQ6OnR1cGxlPGludDhfdCwgaW50MzJfdCwgSW50MTI4PiwKKyAgICAgICAgICAgICBkZWNsdHlw
ZShMOjpQYXJ0aWFsKDApKTo6RWxlbWVudFR5cGVzPigpOworICAgIFNhbWVUeXBlPHN0ZDo6dHVw
bGU8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+LAorICAgICAgICAgICAgIGRlY2x0eXBlKEw6OlBh
cnRpYWwoMCwgMCkpOjpFbGVtZW50VHlwZXM+KCk7CisgICAgU2FtZVR5cGU8c3RkOjp0dXBsZTxp
bnQ4X3QsIGludDMyX3QsIEludDEyOD4sCisgICAgICAgICAgICAgZGVjbHR5cGUoTDo6UGFydGlh
bCgwLCAwLCAwKSk6OkVsZW1lbnRUeXBlcz4oKTsKKyAgfQorfQorCitURVNUKExheW91dCwgT2Zm
c2V0QnlJbmRleCkgeworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBF
WFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgpLk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
TDo6UGFydGlhbCgzKS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEwoMykuT2Zmc2V0
PDA+KCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3QsIGludDMyX3Q+
OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKCkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVD
VF9FUSgwLCBMOjpQYXJ0aWFsKDMpLk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMTIsIEw6
OlBhcnRpYWwoMykuT2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDMs
IDUpLk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMTIsIEw6OlBhcnRpYWwoMywgNSkuT2Zm
c2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMKDMsIDUpLk9mZnNldDwwPigpKTsKKyAgICBF
WFBFQ1RfRVEoMTIsIEwoMywgNSkuT2Zmc2V0PDE+KCkpOworICB9CisgIHsKKyAgICB1c2luZyBM
ID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6
UGFydGlhbCgpLk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5P
ZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCkuT2Zmc2V0PDE+KCkp
OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDEpLk9mZnNldDwwPigpKTsKKyAgICBFWFBF
Q1RfRVEoNCwgTDo6UGFydGlhbCgxKS5PZmZzZXQ8MT4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6
OlBhcnRpYWwoNSkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFsKDUp
Lk9mZnNldDwxPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwLCAwKS5PZmZzZXQ8
MD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCwgMCkuT2Zmc2V0PDE+KCkpOwor
ICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDApLk9mZnNldDwyPigpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgTDo6UGFydGlhbCgxLCAwKS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDQs
IEw6OlBhcnRpYWwoMSwgMCkuT2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0
aWFsKDEsIDApLk9mZnNldDwyPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCg1LCAz
KS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEw6OlBhcnRpYWwoNSwgMykuT2Zmc2V0
PDE+KCkpOworICAgIEVYUEVDVF9FUSgyNCwgTDo6UGFydGlhbCg1LCAzKS5PZmZzZXQ8Mj4oKSk7
CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCwgMCwgMCkuT2Zmc2V0PDA+KCkpOworICAg
IEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDAsIDApLk9mZnNldDwxPigpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgTDo6UGFydGlhbCgwLCAwLCAwKS5PZmZzZXQ8Mj4oKSk7CisgICAgRVhQRUNUX0VR
KDAsIEw6OlBhcnRpYWwoMSwgMCwgMCkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSg0LCBM
OjpQYXJ0aWFsKDEsIDAsIDApLk9mZnNldDwxPigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFy
dGlhbCgxLCAwLCAwKS5PZmZzZXQ8Mj4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwo
NSwgMywgMSkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSgyNCwgTDo6UGFydGlhbCg1LCAz
LCAxKS5PZmZzZXQ8Mj4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEw6OlBhcnRpYWwoNSwgMywgMSku
T2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMKDUsIDMsIDEpLk9mZnNldDwwPigpKTsK
KyAgICBFWFBFQ1RfRVEoMjQsIEwoNSwgMywgMSkuT2Zmc2V0PDI+KCkpOworICAgIEVYUEVDVF9F
USg4LCBMKDUsIDMsIDEpLk9mZnNldDwxPigpKTsKKyAgfQorfQorCitURVNUKExheW91dCwgT2Zm
c2V0QnlUeXBlKSB7CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVY
UEVDVF9FUSgwLCBMOjpQYXJ0aWFsKCkuT2Zmc2V0PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9F
USgwLCBMOjpQYXJ0aWFsKDMpLk9mZnNldDxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
TCgzKS5PZmZzZXQ8aW50MzJfdD4oKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8
aW50OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKCku
T2Zmc2V0PGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCkuT2Zmc2V0
PGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCkuT2Zmc2V0PGludDMy
X3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDEpLk9mZnNldDxpbnQ4X3Q+KCkp
OworICAgIEVYUEVDVF9FUSg0LCBMOjpQYXJ0aWFsKDEpLk9mZnNldDxpbnQzMl90PigpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCg1KS5PZmZzZXQ8aW50OF90PigpKTsKKyAgICBFWFBF
Q1RfRVEoOCwgTDo6UGFydGlhbCg1KS5PZmZzZXQ8aW50MzJfdD4oKSk7CisgICAgRVhQRUNUX0VR
KDAsIEw6OlBhcnRpYWwoMCwgMCkuT2Zmc2V0PGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDAs
IEw6OlBhcnRpYWwoMCwgMCkuT2Zmc2V0PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBM
OjpQYXJ0aWFsKDAsIDApLk9mZnNldDxJbnQxMjg+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQ
YXJ0aWFsKDEsIDApLk9mZnNldDxpbnQ4X3Q+KCkpOworICAgIEVYUEVDVF9FUSg0LCBMOjpQYXJ0
aWFsKDEsIDApLk9mZnNldDxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlh
bCgxLCAwKS5PZmZzZXQ8SW50MTI4PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCg1
LCAzKS5PZmZzZXQ8aW50OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCg1LCAz
KS5PZmZzZXQ8aW50MzJfdD4oKSk7CisgICAgRVhQRUNUX0VRKDI0LCBMOjpQYXJ0aWFsKDUsIDMp
Lk9mZnNldDxJbnQxMjg+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDAsIDAp
Lk9mZnNldDxpbnQ4X3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDAsIDAp
Lk9mZnNldDxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwLCAwLCAw
KS5PZmZzZXQ8SW50MTI4PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgxLCAwLCAw
KS5PZmZzZXQ8aW50OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoNCwgTDo6UGFydGlhbCgxLCAwLCAw
KS5PZmZzZXQ8aW50MzJfdD4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEw6OlBhcnRpYWwoMSwgMCwg
MCkuT2Zmc2V0PEludDEyOD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoNSwgMywg
MSkuT2Zmc2V0PGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDI0LCBMOjpQYXJ0aWFsKDUsIDMs
IDEpLk9mZnNldDxJbnQxMjg+KCkpOworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFsKDUsIDMs
IDEpLk9mZnNldDxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTCg1LCAzLCAxKS5PZmZz
ZXQ8aW50OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoMjQsIEwoNSwgMywgMSkuT2Zmc2V0PEludDEy
OD4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEwoNSwgMywgMSkuT2Zmc2V0PGludDMyX3Q+KCkpOwor
ICB9Cit9CisKK1RFU1QoTGF5b3V0LCBPZmZzZXRzKSB7CisgIHsKKyAgICB1c2luZyBMID0gTGF5
b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoKS5PZmZzZXRzKCksIEVs
ZW1lbnRzQXJlKDApKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDMpLk9mZnNldHMoKSwg
RWxlbWVudHNBcmUoMCkpOworICAgIEVYUEVDVF9USEFUKEwoMykuT2Zmc2V0cygpLCBFbGVtZW50
c0FyZSgwKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJf
dD47CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgpLk9mZnNldHMoKSwgRWxlbWVudHNBcmUo
MCkpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoMykuT2Zmc2V0cygpLCBFbGVtZW50c0Fy
ZSgwLCAxMikpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoMywgNSkuT2Zmc2V0cygpLCBF
bGVtZW50c0FyZSgwLCAxMikpOworICAgIEVYUEVDVF9USEFUKEwoMywgNSkuT2Zmc2V0cygpLCBF
bGVtZW50c0FyZSgwLCAxMikpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhf
dCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKCkuT2Zmc2V0
cygpLCBFbGVtZW50c0FyZSgwKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgxKS5PZmZz
ZXRzKCksIEVsZW1lbnRzQXJlKDAsIDQpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDUp
Lk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCwgOCkpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRp
YWwoMCwgMCkuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgwLCAwLCAwKSk7CisgICAgRVhQRUNUX1RI
QVQoTDo6UGFydGlhbCgxLCAwKS5PZmZzZXRzKCksIEVsZW1lbnRzQXJlKDAsIDQsIDgpKTsKKyAg
ICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDUsIDMpLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCwg
OCwgMjQpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDAsIDAsIDApLk9mZnNldHMoKSwg
RWxlbWVudHNBcmUoMCwgMCwgMCkpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoMSwgMCwg
MCkuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgwLCA0LCA4KSk7CisgICAgRVhQRUNUX1RIQVQoTDo6
UGFydGlhbCg1LCAzLCAxKS5PZmZzZXRzKCksIEVsZW1lbnRzQXJlKDAsIDgsIDI0KSk7CisgICAg
RVhQRUNUX1RIQVQoTCg1LCAzLCAxKS5PZmZzZXRzKCksIEVsZW1lbnRzQXJlKDAsIDgsIDI0KSk7
CisgIH0KK30KKworVEVTVChMYXlvdXQsIEFsbG9jU2l6ZSkgeworICB7CisgICAgdXNpbmcgTCA9
IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5BbGxvY1Np
emUoKSk7CisgICAgRVhQRUNUX0VRKDEyLCBMOjpQYXJ0aWFsKDMpLkFsbG9jU2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoMTIsIEwoMykuQWxsb2NTaXplKCkpOworICB9CisgIHsKKyAgICB1c2luZyBM
ID0gTGF5b3V0PGludDMyX3QsIGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgzMiwgTDo6UGFydGlh
bCgzLCA1KS5BbGxvY1NpemUoKSk7CisgICAgRVhQRUNUX0VRKDMyLCBMKDMsIDUpLkFsbG9jU2l6
ZSgpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIElu
dDEyOD47CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCwgMCwgMCkuQWxsb2NTaXplKCkp
OworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFsKDEsIDAsIDApLkFsbG9jU2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCgwLCAxLCAwKS5BbGxvY1NpemUoKSk7CisgICAgRVhQ
RUNUX0VRKDE2LCBMOjpQYXJ0aWFsKDAsIDAsIDEpLkFsbG9jU2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoMjQsIEw6OlBhcnRpYWwoMSwgMSwgMSkuQWxsb2NTaXplKCkpOworICAgIEVYUEVDVF9FUSgx
MzYsIEw6OlBhcnRpYWwoMywgNSwgNykuQWxsb2NTaXplKCkpOworICAgIEVYUEVDVF9FUSgxMzYs
IEwoMywgNSwgNykuQWxsb2NTaXplKCkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBTaXplQnlJ
bmRleCkgeworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1Rf
RVEoMCwgTDo6UGFydGlhbCgwKS5TaXplPDA+KCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0
aWFsKDMpLlNpemU8MD4oKSk7CisgICAgRVhQRUNUX0VRKDMsIEwoMykuU2l6ZTwwPigpKTsKKyAg
fQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90LCBpbnQzMl90PjsKKyAgICBFWFBF
Q1RfRVEoMCwgTDo6UGFydGlhbCgwKS5TaXplPDA+KCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQ
YXJ0aWFsKDMpLlNpemU8MD4oKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywgNSku
U2l6ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTDo6UGFydGlhbCgzLCA1KS5TaXplPDE+KCkp
OworICAgIEVYUEVDVF9FUSgzLCBMKDMsIDUpLlNpemU8MD4oKSk7CisgICAgRVhQRUNUX0VRKDUs
IEwoMywgNSkuU2l6ZTwxPigpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4
X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2l6
ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1KS5TaXplPDA+KCkpOwor
ICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNpemU8MT4oKSk7CisgICAgRVhQRUNU
X0VRKDMsIEw6OlBhcnRpYWwoMywgNSwgNykuU2l6ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoNSwg
TDo6UGFydGlhbCgzLCA1LCA3KS5TaXplPDE+KCkpOworICAgIEVYUEVDVF9FUSg3LCBMOjpQYXJ0
aWFsKDMsIDUsIDcpLlNpemU8Mj4oKSk7CisgICAgRVhQRUNUX0VRKDMsIEwoMywgNSwgNykuU2l6
ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTCgzLCA1LCA3KS5TaXplPDE+KCkpOworICAgIEVY
UEVDVF9FUSg3LCBMKDMsIDUsIDcpLlNpemU8Mj4oKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQs
IFNpemVCeVR5cGUpIHsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdD47CisgICAg
RVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCkuU2l6ZTxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1Rf
RVEoMywgTDo6UGFydGlhbCgzKS5TaXplPGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgzLCBM
KDMpLlNpemU8aW50MzJfdD4oKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50
OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNp
emU8aW50OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1KS5TaXplPGlu
dDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSkuU2l6ZTxpbnQzMl90
PigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1LCA3KS5TaXplPGludDhfdD4o
KSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSwgNykuU2l6ZTxpbnQzMl90Pigp
KTsKKyAgICBFWFBFQ1RfRVEoNywgTDo6UGFydGlhbCgzLCA1LCA3KS5TaXplPEludDEyOD4oKSk7
CisgICAgRVhQRUNUX0VRKDMsIEwoMywgNSwgNykuU2l6ZTxpbnQ4X3Q+KCkpOworICAgIEVYUEVD
VF9FUSg1LCBMKDMsIDUsIDcpLlNpemU8aW50MzJfdD4oKSk7CisgICAgRVhQRUNUX0VRKDcsIEwo
MywgNSwgNykuU2l6ZTxJbnQxMjg+KCkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBTaXplcykg
eworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfVEhBVChM
OjpQYXJ0aWFsKCkuU2l6ZXMoKSwgRWxlbWVudHNBcmUoKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6
UGFydGlhbCgzKS5TaXplcygpLCBFbGVtZW50c0FyZSgzKSk7CisgICAgRVhQRUNUX1RIQVQoTCgz
KS5TaXplcygpLCBFbGVtZW50c0FyZSgzKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlv
dXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgpLlNpemVz
KCksIEVsZW1lbnRzQXJlKCkpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoMykuU2l6ZXMo
KSwgRWxlbWVudHNBcmUoMykpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoMywgNSkuU2l6
ZXMoKSwgRWxlbWVudHNBcmUoMywgNSkpOworICAgIEVYUEVDVF9USEFUKEwoMywgNSkuU2l6ZXMo
KSwgRWxlbWVudHNBcmUoMywgNSkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGlu
dDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKCkuU2l6
ZXMoKSwgRWxlbWVudHNBcmUoKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzKS5TaXpl
cygpLCBFbGVtZW50c0FyZSgzKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzLCA1KS5T
aXplcygpLCBFbGVtZW50c0FyZSgzLCA1KSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgz
LCA1LCA3KS5TaXplcygpLCBFbGVtZW50c0FyZSgzLCA1LCA3KSk7CisgICAgRVhQRUNUX1RIQVQo
TCgzLCA1LCA3KS5TaXplcygpLCBFbGVtZW50c0FyZSgzLCA1LCA3KSk7CisgIH0KK30KKworVEVT
VChMYXlvdXQsIFBvaW50ZXJCeUluZGV4KSB7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0
IHVuc2lnbmVkIGNoYXIgcFsxMDBdID0ge307CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGlu
dDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3Qq
PihMOjpQYXJ0aWFsKCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFu
Y2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgzKS5Qb2ludGVyPDA+KHApKSkp
OworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMKDMp
LlBvaW50ZXI8MD4ocCkpKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJf
dCwgaW50MzJfdD47CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50
MzJfdCo+KEw6OlBhcnRpYWwoKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBE
aXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8MD4o
cCkpKSk7CisgICAgRVhQRUNUX0VRKDEyLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3Qq
PihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAg
ICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMywg
NSkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMTIsCisgICAgICAgICAgICAgIERp
c3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMywgNSkuUG9pbnRlcjwx
PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90
Kj4oTCgzLCA1KS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgxMiwgRGlzdGFuY2Uo
cCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTCgzLCA1KS5Qb2ludGVyPDE+KHApKSkpOworICB9Cisg
IHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBF
WFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKCku
UG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxjb25z
dCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDApLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VR
KDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMCkuUG9pbnRl
cjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4
X3QqPihMOjpQYXJ0aWFsKDEpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDQsIERp
c3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMSkuUG9pbnRlcjwxPihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihM
OjpQYXJ0aWFsKDUpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNl
KHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoNSkuUG9pbnRlcjwxPihwKSkpKTsK
KyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBp
bnQ4X3QqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VR
KDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBh
cnRpYWwoMCwgMCkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAg
ICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPihMOjpQYXJ0aWFsKDAsIDApLlBv
aW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNl
KHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2ludGVyPDA+KHApKSkp
OworICAgIEVYUEVDVF9FUSg0LAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0
IGludDMyX3QqPihMOjpQYXJ0aWFsKDEsIDApLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNU
X0VRKDgsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oTDo6
UGFydGlhbCgxLCAwKS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAg
ICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwoNSwgMyku
UG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwKKyAgICAgICAgICAgICAgRGlzdGFu
Y2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPDE+KHAp
KSkpOworICAgIEVYUEVDVF9FUSgyNCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxj
b25zdCBJbnQxMjgqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQ
RUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBh
cnRpYWwoMCwgMCwgMCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAg
IDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMCwgMCwgMCku
UG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAs
IFR5cGU8Y29uc3QgSW50MTI4Kj4oTDo6UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPDI+KHApKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4
X3QqPihMOjpQYXJ0aWFsKDEsIDAsIDApLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VR
KAorICAgICAgICA0LCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFs
KDEsIDAsIDApLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LCBE
aXN0YW5jZShwLCBUeXBlPGNvbnN0IEludDEyOCo+KEw6OlBhcnRpYWwoMSwgMCwgMCkuUG9pbnRl
cjwyPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8
Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCg1LCAzLCAxKS5Qb2ludGVyPDA+KHApKSkpOworICAg
IEVYUEVDVF9FUSgKKyAgICAgICAgMjQsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3Qg
SW50MTI4Kj4oTDo6UGFydGlhbCg1LCAzLCAxKS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVYUEVD
VF9FUSgKKyAgICAgICAgOCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFy
dGlhbCg1LCAzLCAxKS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5j
ZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEwoNSwgMywgMSkuUG9pbnRlcjwwPihwKSkpKTsKKyAg
ICBFWFBFQ1RfRVEoMjQsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oTCg1LCAzLCAx
KS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVYUEVDVF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPGNv
bnN0IGludDMyX3QqPihMKDUsIDMsIDEpLlBvaW50ZXI8MT4ocCkpKSk7CisgIH0KK30KKworVEVT
VChMYXlvdXQsIFBvaW50ZXJCeVR5cGUpIHsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgY29uc3Qg
dW5zaWduZWQgY2hhciBwWzEwMF0gPSB7fTsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50
MzJfdD47CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAg
IEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMy
X3QqPihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VR
KDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEwoMykuUG9pbnRlcjxpbnQzMl90
PihwKSkpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3Qs
IEludDEyOD47CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90
Kj4oTDo6UGFydGlhbCgpLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwK
KyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFs
KDApLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAg
ICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgwKS5Qb2ludGVy
PGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5j
ZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwoMSkuUG9pbnRlcjxpbnQ4X3Q+KHAp
KSkpOworICAgIEVYUEVDVF9FUSg0LAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNv
bnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDEpLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90
Kj4oTDo6UGFydGlhbCg1KS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgs
CisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRp
YWwoNSkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAs
IERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCgwLCAwKS5Qb2ludGVy
PGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBU
eXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8aW50MzJfdD4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBl
PGNvbnN0IEludDEyOCo+KEw6OlBhcnRpYWwoMCwgMCkuUG9pbnRlcjxJbnQxMjg+KHApKSkpOwor
ICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3Qq
PihMOjpQYXJ0aWFsKDEsIDApLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
CisgICAgICAgIDQsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwo
MSwgMCkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgs
CisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oTDo6UGFydGlhbCgxLCAw
KS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0
YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwoNSwgMykuUG9pbnRlcjxpbnQ4
X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwgRGlzdGFuY2UocCwgVHlwZTxj
b25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOwor
ICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMjQsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29u
c3QgSW50MTI4Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGlu
dDhfdCo+KEw6OlBhcnRpYWwoMCwgMCwgMCkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVY
UEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQz
Ml90Kj4oTDo6UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVY
UEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IEludDEyOCo+KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTDo6UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPEludDEyOD4o
cCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBU
eXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwoMSwgMCwgMCkuUG9pbnRlcjxpbnQ4X3Q+KHAp
KSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgNCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlw
ZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVyPGludDMyX3Q+KHAp
KSkpOworICAgIEVYUEVDVF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IEludDEyOCo+KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDo6UGFydGlhbCgxLCAwLCAwKS5Qb2lu
dGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBE
aXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwoNSwgMywgMSkuUG9pbnRl
cjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgyNCwgRGlzdGFuY2UocCwgVHlwZTxjb25z
dCBJbnQxMjgqPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOjpQYXJ0aWFs
KDUsIDMsIDEpLlBvaW50ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAg
IDgsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwo
NSwgMywgMSkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMjQsCisgICAg
ICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oTCg1LCAzLCAxKS5Qb2lu
dGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8Y29u
c3QgaW50MzJfdCo+KEwoNSwgMywgMSkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgfQorfQor
CitURVNUKExheW91dCwgTXV0YWJsZVBvaW50ZXJCeUluZGV4KSB7CisgIGFsaWduYXMobWF4X2Fs
aWduX3QpIHVuc2lnbmVkIGNoYXIgcFsxMDBdOworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxp
bnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6
UGFydGlhbCgpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAs
IFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMykuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTCgzKS5Qb2ludGVyPDA+KHApKSkp
OworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3QsIGludDMyX3Q+OworICAg
IEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKCkuUG9p
bnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90
Kj4oTDo6UGFydGlhbCgzKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgxMiwgRGlz
dGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgzKS5Qb2ludGVyPDE+KHApKSkpOwor
ICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDMs
IDUpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDEyLCBEaXN0YW5jZShwLCBUeXBl
PGludDMyX3QqPihMOjpQYXJ0aWFsKDMsIDUpLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNU
X0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEwoMywgNSkuUG9pbnRlcjwwPihwKSkp
KTsKKyAgICBFWFBFQ1RfRVEoMTIsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEwoMywgNSku
UG9pbnRlcjwxPihwKSkpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3Qs
IGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50
OF90Kj4oTDo6UGFydGlhbCgpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERp
c3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgwKS5Qb2ludGVyPDA+KHApKSkpOwor
ICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDAp
LlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50
OF90Kj4oTDo6UGFydGlhbCgxKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSg0LCBE
aXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDEpLlBvaW50ZXI8MT4ocCkpKSk7
CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCg1
KS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPGlu
dDMyX3QqPihMOjpQYXJ0aWFsKDUpLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAs
IERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgwLCAwKS5Qb2ludGVyPDA+KHAp
KSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0
aWFsKDAsIDApLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAs
IFR5cGU8SW50MTI4Kj4oTDo6UGFydGlhbCgwLCAwKS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVY
UEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEw6OlBhcnRpYWwoMSwgMCkuUG9p
bnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoNCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90
Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSg4LCBE
aXN0YW5jZShwLCBUeXBlPEludDEyOCo+KEw6OlBhcnRpYWwoMSwgMCkuUG9pbnRlcjwyPihwKSkp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFs
KDUsIDMpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5
cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoNSwgMykuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBF
Q1RfRVEoMjQsIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2lu
dGVyPDI+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+
KEw6OlBhcnRpYWwoMCwgMCwgMCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
RGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPDE+
KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPEludDEyOCo+KEw6OlBh
cnRpYWwoMCwgMCwgMCkuUG9pbnRlcjwyPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFu
Y2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDEsIDAsIDApLlBvaW50ZXI8MD4ocCkpKSk7
CisgICAgRVhQRUNUX0VRKDQsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwo
MSwgMCwgMCkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwg
VHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDEsIDAsIDApLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCg1LCAzLCAx
KS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgyNCwKKyAgICAgICAgICAgICAgRGlz
dGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8Mj4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRp
YWwoNSwgMywgMSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2Uo
cCwgVHlwZTxpbnQ4X3QqPihMKDUsIDMsIDEpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNU
X0VRKDI0LCBEaXN0YW5jZShwLCBUeXBlPEludDEyOCo+KEwoNSwgMywgMSkuUG9pbnRlcjwyPihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTCg1LCAz
LCAxKS5Qb2ludGVyPDE+KHApKSkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBNdXRhYmxlUG9p
bnRlckJ5VHlwZSkgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSB1bnNpZ25lZCBjaGFyIHBbMTAw
XTsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdD47CisgICAgRVhQRUNUX0VRKDAs
IERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoKS5Qb2ludGVyPGludDMyX3Q+
KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQ
YXJ0aWFsKDMpLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3Rh
bmNlKHAsIFR5cGU8aW50MzJfdCo+KEwoMykuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgfQor
ICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAg
RVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgpLlBvaW50
ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4
X3QqPihMOjpQYXJ0aWFsKDApLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgwKS5Qb2ludGVyPGludDMy
X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEw6
OlBhcnRpYWwoMSkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSg0LCBEaXN0
YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDEpLlBvaW50ZXI8aW50MzJfdD4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlh
bCg1KS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAs
IFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoNSkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDAsIDAp
LlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlw
ZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgwLCAwKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAg
IEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPEludDEyOCo+KEw6
OlBhcnRpYWwoMCwgMCkuUG9pbnRlcjxJbnQxMjg+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBE
aXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEw6OlBhcnRpYWwoMSwgMCkuUG9pbnRlcjxpbnQ4X3Q+
KHApKSkpOworICAgIEVYUEVDVF9FUSg0LCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQ
YXJ0aWFsKDEsIDApLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsCisg
ICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6UGFydGlhbCgxLCAwKS5Q
b2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8
aW50OF90Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQ
RUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoNSwgMykuUG9p
bnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMjQsCisgICAgICAgICAgICAgIERp
c3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPEludDEyOD4o
cCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
aW50OF90Kj4oTDo6UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6
OlBhcnRpYWwoMCwgMCwgMCkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
CisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6UGFydGlhbCgwLCAwLCAw
KS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAg
IERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVyPGlu
dDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDQsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAs
IFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMSwgMCwgMCkuUG9pbnRlcjxpbnQzMl90PihwKSkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4o
TDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VR
KDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCg1
LCAzLCAxKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAy
NCwgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8
SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwKKyAgICAgICAgICAgICAgRGlzdGFuY2Uo
cCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCg1LCAzLCAxKS5Qb2ludGVyPGludDMyX3Q+KHAp
KSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEwoNSwgMywg
MSkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgyNCwgRGlzdGFuY2UocCwg
VHlwZTxJbnQxMjgqPihMKDUsIDMsIDEpLlBvaW50ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBF
Q1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTCg1LCAzLCAxKS5Qb2ludGVyPGlu
dDMyX3Q+KHApKSkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBQb2ludGVycykgeworICBhbGln
bmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIHBbMTAwXSA9IHt9OworICB1c2lu
ZyBMID0gTGF5b3V0PGludDhfdCwgaW50OF90LCBJbnQxMjg+OworICB7CisgICAgY29uc3QgYXV0
byB4ID0gTDo6UGFydGlhbCgpOworICAgIEVYUEVDVF9FUShzdGQ6Om1ha2VfdHVwbGUoeC5Qb2lu
dGVyPDA+KHApKSwKKyAgICAgICAgICAgICAgVHlwZTxzdGQ6OnR1cGxlPGNvbnN0IGludDhfdCo+
Pih4LlBvaW50ZXJzKHApKSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRp
YWwoMSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50ZXI8MD4ocCksIHgu
UG9pbnRlcjwxPihwKSksCisgICAgICAgICAgICAgIChUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50
OF90KiwgY29uc3QgaW50OF90Kj4+KHguUG9pbnRlcnMocCkpKSk7CisgIH0KKyAgeworICAgIGNv
bnN0IGF1dG8geCA9IEw6OlBhcnRpYWwoMSwgMik7CisgICAgRVhQRUNUX0VRKAorICAgICAgICBz
dGQ6Om1ha2VfdHVwbGUoeC5Qb2ludGVyPDA+KHApLCB4LlBvaW50ZXI8MT4ocCksIHguUG9pbnRl
cjwyPihwKSksCisgICAgICAgIChUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50OF90KiwgY29uc3Qg
aW50OF90KiwgY29uc3QgSW50MTI4Kj4+KAorICAgICAgICAgICAgeC5Qb2ludGVycyhwKSkpKTsK
KyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgxLCAyLCAzKTsKKyAgICBF
WFBFQ1RfRVEoCisgICAgICAgIHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50ZXI8MD4ocCksIHguUG9p
bnRlcjwxPihwKSwgeC5Qb2ludGVyPDI+KHApKSwKKyAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxj
b25zdCBpbnQ4X3QqLCBjb25zdCBpbnQ4X3QqLCBjb25zdCBJbnQxMjgqPj4oCisgICAgICAgICAg
ICB4LlBvaW50ZXJzKHApKSkpOworICB9CisgIHsKKyAgICBjb25zdCBMIHgoMSwgMiwgMyk7Cisg
ICAgRVhQRUNUX0VRKAorICAgICAgICBzdGQ6Om1ha2VfdHVwbGUoeC5Qb2ludGVyPDA+KHApLCB4
LlBvaW50ZXI8MT4ocCksIHguUG9pbnRlcjwyPihwKSksCisgICAgICAgIChUeXBlPHN0ZDo6dHVw
bGU8Y29uc3QgaW50OF90KiwgY29uc3QgaW50OF90KiwgY29uc3QgSW50MTI4Kj4+KAorICAgICAg
ICAgICAgeC5Qb2ludGVycyhwKSkpKTsKKyAgfQorfQorCitURVNUKExheW91dCwgTXV0YWJsZVBv
aW50ZXJzKSB7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIHVuc2lnbmVkIGNoYXIgcFsxMDBdOwor
ICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50OF90LCBJbnQxMjg+OworICB7CisgICAgY29u
c3QgYXV0byB4ID0gTDo6UGFydGlhbCgpOworICAgIEVYUEVDVF9FUShzdGQ6Om1ha2VfdHVwbGUo
eC5Qb2ludGVyPDA+KHApKSwKKyAgICAgICAgICAgICAgVHlwZTxzdGQ6OnR1cGxlPGludDhfdCo+
Pih4LlBvaW50ZXJzKHApKSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRp
YWwoMSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50ZXI8MD4ocCksIHgu
UG9pbnRlcjwxPihwKSksCisgICAgICAgICAgICAgIChUeXBlPHN0ZDo6dHVwbGU8aW50OF90Kiwg
aW50OF90Kj4+KHguUG9pbnRlcnMocCkpKSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9
IEw6OlBhcnRpYWwoMSwgMik7CisgICAgRVhQRUNUX0VRKAorICAgICAgICBzdGQ6Om1ha2VfdHVw
bGUoeC5Qb2ludGVyPDA+KHApLCB4LlBvaW50ZXI8MT4ocCksIHguUG9pbnRlcjwyPihwKSksCisg
ICAgICAgIChUeXBlPHN0ZDo6dHVwbGU8aW50OF90KiwgaW50OF90KiwgSW50MTI4Kj4+KHguUG9p
bnRlcnMocCkpKSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRpYWwoMSwg
MiwgMyk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICBzdGQ6Om1ha2VfdHVwbGUoeC5Qb2ludGVy
PDA+KHApLCB4LlBvaW50ZXI8MT4ocCksIHguUG9pbnRlcjwyPihwKSksCisgICAgICAgIChUeXBl
PHN0ZDo6dHVwbGU8aW50OF90KiwgaW50OF90KiwgSW50MTI4Kj4+KHguUG9pbnRlcnMocCkpKSk7
CisgIH0KKyAgeworICAgIGNvbnN0IEwgeCgxLCAyLCAzKTsKKyAgICBFWFBFQ1RfRVEoCisgICAg
ICAgIHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50ZXI8MD4ocCksIHguUG9pbnRlcjwxPihwKSwgeC5Q
b2ludGVyPDI+KHApKSwKKyAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxpbnQ4X3QqLCBpbnQ4X3Qq
LCBJbnQxMjgqPj4oeC5Qb2ludGVycyhwKSkpKTsKKyAgfQorfQorCitURVNUKExheW91dCwgU2xp
Y2VCeUluZGV4U2l6ZSkgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBj
aGFyIHBbMTAwXSA9IHt9OworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAg
ICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5TbGljZTwwPihwKS5zaXplKCkpOworICAgIEVY
UEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNsaWNlPDA+KHApLnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKDMsIEwoMykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9
IExheW91dDxpbnQzMl90LCBpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgz
KS5TbGljZTwwPihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUp
LlNsaWNlPDE+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEwoMywgNSkuU2xpY2U8MT4o
cCkuc2l6ZSgpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMy
X3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8MD4ocCku
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1KS5TbGljZTwwPihwKS5z
aXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDE+KHApLnNp
emUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8MD4ocCku
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTDo6UGFydGlhbCgzLCA1LCA3KS5TbGljZTwxPihw
KS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg3LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNsaWNlPDI+
KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEwoMywgNSwgNykuU2xpY2U8MD4ocCkuc2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTCgzLCA1LCA3KS5TbGljZTwxPihwKS5zaXplKCkpOwor
ICAgIEVYUEVDVF9FUSg3LCBMKDMsIDUsIDcpLlNsaWNlPDI+KHApLnNpemUoKSk7CisgIH0KK30K
KworVEVTVChMYXlvdXQsIFNsaWNlQnlUeXBlU2l6ZSkgeworICBhbGlnbmFzKG1heF9hbGlnbl90
KSBjb25zdCB1bnNpZ25lZCBjaGFyIHBbMTAwXSA9IHt9OworICB7CisgICAgdXNpbmcgTCA9IExh
eW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5TbGljZTxpbnQz
Ml90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNsaWNlPGlu
dDMyX3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEwoMykuU2xpY2U8aW50MzJfdD4o
cCkuc2l6ZSgpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMy
X3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8aW50OF90
PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPGlu
dDhfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTDo6UGFydGlhbCgzLCA1KS5TbGlj
ZTxpbnQzMl90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUs
IDcpLlNsaWNlPGludDhfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTDo6UGFydGlh
bCgzLCA1LCA3KS5TbGljZTxpbnQzMl90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg3LCBM
OjpQYXJ0aWFsKDMsIDUsIDcpLlNsaWNlPEludDEyOD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoMywgTCgzLCA1LCA3KS5TbGljZTxpbnQ4X3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KDUsIEwoMywgNSwgNykuU2xpY2U8aW50MzJfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
NywgTCgzLCA1LCA3KS5TbGljZTxJbnQxMjg+KHApLnNpemUoKSk7CisgIH0KK30KKworVEVTVChM
YXlvdXQsIE11dGFibGVTbGljZUJ5SW5kZXhTaXplKSB7CisgIGFsaWduYXMobWF4X2FsaWduX3Qp
IHVuc2lnbmVkIGNoYXIgcFsxMDBdOworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90
PjsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5TbGljZTwwPihwKS5zaXplKCkpOwor
ICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNsaWNlPDA+KHApLnNpemUoKSk7CisgICAg
RVhQRUNUX0VRKDMsIEwoMykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgfQorICB7CisgICAgdXNp
bmcgTCA9IExheW91dDxpbnQzMl90LCBpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFy
dGlhbCgzKS5TbGljZTwwPihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFs
KDMsIDUpLlNsaWNlPDE+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEwoMywgNSkuU2xp
Y2U8MT4ocCkuc2l6ZSgpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3Qs
IGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8
MD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1KS5TbGljZTww
PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDE+
KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8
MD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTDo6UGFydGlhbCgzLCA1LCA3KS5TbGlj
ZTwxPihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg3LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNs
aWNlPDI+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEwoMywgNSwgNykuU2xpY2U8MD4o
cCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTCgzLCA1LCA3KS5TbGljZTwxPihwKS5zaXpl
KCkpOworICAgIEVYUEVDVF9FUSg3LCBMKDMsIDUsIDcpLlNsaWNlPDI+KHApLnNpemUoKSk7Cisg
IH0KK30KKworVEVTVChMYXlvdXQsIE11dGFibGVTbGljZUJ5VHlwZVNpemUpIHsKKyAgYWxpZ25h
cyhtYXhfYWxpZ25fdCkgdW5zaWduZWQgY2hhciBwWzEwMF07CisgIHsKKyAgICB1c2luZyBMID0g
TGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDApLlNsaWNlPGlu
dDMyX3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8
aW50MzJfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzKS5TbGljZTxpbnQzMl90
PihwKS5zaXplKCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50
MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTxpbnQ4
X3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8
aW50OF90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNs
aWNlPGludDMyX3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywg
NSwgNykuU2xpY2U8aW50OF90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0
aWFsKDMsIDUsIDcpLlNsaWNlPGludDMyX3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDcs
IEw6OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8SW50MTI4PihwKS5zaXplKCkpOworICAgIEVYUEVD
VF9FUSgzLCBMKDMsIDUsIDcpLlNsaWNlPGludDhfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoNSwgTCgzLCA1LCA3KS5TbGljZTxpbnQzMl90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9F
USg3LCBMKDMsIDUsIDcpLlNsaWNlPEludDEyOD4ocCkuc2l6ZSgpKTsKKyAgfQorfQorCitURVNU
KExheW91dCwgU2xpY2VCeUluZGV4RGF0YSkgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25z
dCB1bnNpZ25lZCBjaGFyIHBbMTAwXSA9IHt9OworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxp
bnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAs
IFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgwKS5TbGljZTwwPihwKSkuZGF0
YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBU
eXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMykuU2xpY2U8MD4ocCkpLmRhdGEo
KSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50MzJf
dD4+KEwoMykuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0g
TGF5b3V0PGludDMyX3QsIGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAg
ICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDMp
LlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAg
ICAgIERpc3RhbmNlKHAsCisgICAgICAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90
Pj4oTDo6UGFydGlhbCgzLCA1KS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VR
KAorICAgICAgICAxMiwKKyAgICAgICAgRGlzdGFuY2UocCwKKyAgICAgICAgICAgICAgICAgVHlw
ZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDE+KHApKS5kYXRh
KCkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxT
cGFuPGNvbnN0IGludDMyX3Q+PihMKDMsIDUpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBF
WFBFQ1RfRVEoMTIsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBp
bnQzMl90Pj4oTCgzLCA1KS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgIH0KKyAgeworICAgIHVz
aW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgK
KyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+
KEw6OlBhcnRpYWwoMCkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAg
ICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6
OlBhcnRpYWwoMSkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAg
ICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6OlBh
cnRpYWwoNSkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAg
MCwgRGlzdGFuY2UoCisgICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4o
TDo6UGFydGlhbCgwLCAwKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAor
ICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLAorICAgICAgICAgICAgICAgICBUeXBlPFNw
YW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMCwgMCkuU2xpY2U8MT4ocCkpLmRhdGEoKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UoCisgICAgICAgICAgICAgICBw
LCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCgxLCAwKS5TbGljZTwwPihwKSku
ZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA0LAorICAgICAgICBEaXN0YW5jZShw
LAorICAgICAgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwo
MSwgMCkuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwg
RGlzdGFuY2UoCisgICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6
UGFydGlhbCg1LCAzKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAg
ICAgICA4LAorICAgICAgICBEaXN0YW5jZShwLAorICAgICAgICAgICAgICAgICBUeXBlPFNwYW48
Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoNSwgMykuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOwor
ICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAg
ICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCgwLCAwLCAwKS5TbGljZTww
PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0
YW5jZSgKKyAgICAgICAgICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50MzJf
dD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVD
VF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLAorICAg
ICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IEludDEyOD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xp
Y2U8Mj4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAg
RGlzdGFuY2UoCisgICAgICAgICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFy
dGlhbCgxLCAwLCAwKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAg
ICAgICA0LAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsCisgICAgICAgICAgICBU
eXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMSwgMCwgMCkuU2xpY2U8MT4ocCkp
LmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwKKyAgICAgICAgRGlzdGFuY2Uo
CisgICAgICAgICAgICBwLAorICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IEludDEyOD4+KEw6
OlBhcnRpYWwoMSwgMCwgMCkuU2xpY2U8Mj4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgK
KyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLCBUeXBlPFNwYW48
Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCg1LCAzLCAxKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7
CisgICAgRVhQRUNUX0VRKAorICAgICAgICAyNCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAg
ICAgICBwLAorICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IEludDEyOD4+KEw6OlBhcnRpYWwo
NSwgMywgMSkuU2xpY2U8Mj4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAg
OCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLAorICAgICAgICAgICAgVHlwZTxT
cGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPDE+KHApKS5kYXRh
KCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxj
b25zdCBpbnQ4X3Q+PihMKDUsIDMsIDEpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDI0LAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3Qg
SW50MTI4Pj4oTCg1LCAzLCAxKS5TbGljZTwyPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VR
KAorICAgICAgICA4LCBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEwoNSwg
MywgMSkuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBTbGlj
ZUJ5VHlwZURhdGEpIHsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgY29uc3QgdW5zaWduZWQgY2hh
ciBwWzEwMF0gPSB7fTsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdD47CisgICAg
RVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAs
IFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgwKS5TbGljZTxpbnQzMl90Pihw
KSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5j
ZSgKKyAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgz
KS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAw
LCBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEwoMykuU2xpY2U8aW50MzJf
dD4ocCkpLmRhdGEoKSkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwg
aW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKAor
ICAgICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6OlBhcnRpYWwoMCku
U2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBE
aXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQ
YXJ0aWFsKDEpLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAg
ICAgICAgMCwgRGlzdGFuY2UoCisgICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50
OF90Pj4oTDo6UGFydGlhbCg1KS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwgVHlw
ZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6OlBhcnRpYWwoMCwgMCkuU2xpY2U8aW50OF90PihwKSku
ZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgK
KyAgICAgICAgICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6
OlBhcnRpYWwoMCwgMCkuU2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9F
USgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLCBUeXBlPFNw
YW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCgxLCAwKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRh
KCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDQsCisgICAgICAgIERpc3RhbmNlKAorICAg
ICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFy
dGlhbCgxLCAwKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAor
ICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxj
b25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDUsIDMpLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAg
ICAgICBwLAorICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFs
KDUsIDMpLlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAg
ICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5
cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPGludDhfdD4o
cCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFu
Y2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNl
PGludDMyX3Q+KHApKQorICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEoKSkpOworICAgIEVY
UEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgSW50MTI4Pj4oCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPEludDEy
OD4ocCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGF0YSgpKSk7CisgICAg
RVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAs
CisgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCgxLCAwLCAw
KS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDQs
CisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlh
bCgxLCAwLCAwKS5TbGljZTxpbnQzMl90PihwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5k
YXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IElu
dDEyOD4+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDo6UGFydGlhbCgxLCAw
LCAwKS5TbGljZTxJbnQxMjg+KHApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2Uo
CisgICAgICAgICAgICBwLAorICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6
OlBhcnRpYWwoNSwgMywgMSkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNU
X0VRKDI0LCBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgSW50MTI4Pj4oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTDo6UGFydGlhbCg1LCAzLCAxKS5TbGljZTxJbnQxMjg+
KHApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKCkpKTsKKyAgICBF
WFBFQ1RfRVEoCisgICAgICAgIDgsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25z
dCBpbnQzMl90Pj4oTDo6UGFydGlhbCg1LCAzLCAxKS5TbGljZTxpbnQzMl90PihwKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAs
CisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMKDUsIDMsIDEp
LlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMjQs
CisgICAgICAgIERpc3RhbmNlKHAsCisgICAgICAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBJ
bnQxMjg+PihMKDUsIDMsIDEpLlNsaWNlPEludDEyOD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVD
VF9FUSgKKyAgICAgICAgOCwgRGlzdGFuY2UoCisgICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48
Y29uc3QgaW50MzJfdD4+KEwoNSwgMywgMSkuU2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOwor
ICB9Cit9CisKK1RFU1QoTGF5b3V0LCBNdXRhYmxlU2xpY2VCeUluZGV4RGF0YSkgeworICBhbGln
bmFzKG1heF9hbGlnbl90KSB1bnNpZ25lZCBjaGFyIHBbMTAwXTsKKyAgeworICAgIHVzaW5nIEwg
PSBMYXlvdXQ8aW50MzJfdD47CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3Rh
bmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCgwKS5TbGljZTwwPihwKSkuZGF0
YSgpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCgzKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAg
RVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTCgzKS5TbGljZTww
PihwKSkuZGF0YSgpKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwg
aW50MzJfdD47CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5
cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCgzKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7Cisg
ICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50MzJfdD4+
KEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgK
KyAgICAgICAgMTIsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6
UGFydGlhbCgzLCA1KS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDAsIERp
c3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTCgzLCA1KS5TbGljZTwwPihwKSkuZGF0YSgp
KSk7CisgICAgRVhQRUNUX0VRKDEyLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50MzJfdD4+KEwo
MywgNSkuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5
b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAg
ICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoMCkuU2xpY2U8
MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5j
ZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCgxKS5TbGljZTwwPihwKSkuZGF0YSgp
KSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3Bh
bjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDUpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0
aWFsKDAsIDApLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAg
IDAsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCgwLCAwKS5TbGlj
ZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZShw
LCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCgxLCAwKS5TbGljZTwwPihwKSkuZGF0YSgp
KSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA0LCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50
MzJfdD4+KEw6OlBhcnRpYWwoMSwgMCkuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVD
VF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRp
YWwoNSwgMykuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAg
OCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDUsIDMpLlNsaWNl
PDE+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERp
c3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPDA+
KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3Rh
bmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCgwLCAwLCAwKS5TbGljZTwxPihw
KSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZSgKKyAgICAg
ICAgICAgICAgIHAsIFR5cGU8U3BhbjxJbnQxMjg+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNl
PDI+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERp
c3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDAsIDApLlNsaWNlPDA+
KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDQsCisgICAgICAgIERpc3Rh
bmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCgxLCAwLCAwKS5TbGljZTwxPihw
KSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LCBEaXN0YW5jZSgKKyAgICAg
ICAgICAgICAgIHAsIFR5cGU8U3BhbjxJbnQxMjg+PihMOjpQYXJ0aWFsKDEsIDAsIDApLlNsaWNl
PDI+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERp
c3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPDA+
KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDI0LCBEaXN0YW5jZSgKKyAg
ICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48SW50MTI4Pj4oTDo6UGFydGlhbCg1LCAzLCAxKS5T
bGljZTwyPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LAorICAgICAg
ICBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoNSwgMywgMSkuU2xp
Y2U8MT4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPFNw
YW48aW50OF90Pj4oTCg1LCAzLCAxKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNU
X0VRKDI0LAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48SW50MTI4Pj4oTCg1
LCAzLCAxKS5TbGljZTwyPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNl
KHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTCg1LCAzLCAxKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7
CisgIH0KK30KKworVEVTVChMYXlvdXQsIE11dGFibGVTbGljZUJ5VHlwZURhdGEpIHsKKyAgYWxp
Z25hcyhtYXhfYWxpZ25fdCkgdW5zaWduZWQgY2hhciBwWzEwMF07CisgIHsKKyAgICB1c2luZyBM
ID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAg
RGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDApLlNsaWNlPGludDMy
X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERp
c3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCgzKS5TbGljZTxpbnQzMl90
PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxp
bnQzMl90Pj4oTCgzKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7CisgIH0KKyAgeworICAg
IHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9F
USgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwo
MCkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAw
LCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCgxKS5TbGljZTxpbnQ4
X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAs
IFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDUpLlNsaWNlPGludDhfdD4ocCkpLmRhdGEo
KSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlw
ZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoMCwgMCkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgp
KSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAg
IHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCgwLCAwKS5TbGljZTxpbnQzMl90Pihw
KSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5j
ZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCgxLCAwKS5TbGljZTxpbnQ4X3Q+KHAp
KS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDQsIERpc3RhbmNlKAorICAgICAg
ICAgICAgICAgcCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDEsIDApLlNsaWNlPGlu
dDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAg
IERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDUsIDMpLlNsaWNlPGlu
dDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwgRGlzdGFuY2Uo
CisgICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoNSwgMyku
U2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwg
RGlzdGFuY2UoCisgICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlh
bCgwLCAwLCAwKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisg
ICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGlu
dDMyX3Q+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsK
KyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAg
ICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3BhbjxJbnQxMjg+PihMOjpQYXJ0aWFsKDAsIDAsIDAp
LlNsaWNlPEludDEyOD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwg
RGlzdGFuY2UoCisgICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlh
bCgxLCAwLCAwKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisg
ICAgICAgIDQsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGlu
dDMyX3Q+PihMOjpQYXJ0aWFsKDEsIDAsIDApLlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsK
KyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAg
ICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3BhbjxJbnQxMjg+PihMOjpQYXJ0aWFsKDEsIDAsIDAp
LlNsaWNlPEludDEyOD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwg
RGlzdGFuY2UoCisgICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlh
bCg1LCAzLCAxKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisg
ICAgICAgIDI0LAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsCisgICAgICAgICAg
ICBUeXBlPFNwYW48SW50MTI4Pj4oTDo6UGFydGlhbCg1LCAzLCAxKS5TbGljZTxJbnQxMjg+KHAp
KS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsCisgICAgICAgIERpc3RhbmNl
KAorICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDUsIDMsIDEp
LlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAg
ICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+KEwoNSwgMywgMSkuU2xpY2U8aW50
OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAyNCwKKyAgICAgICAg
RGlzdGFuY2UocCwgVHlwZTxTcGFuPEludDEyOD4+KEwoNSwgMywgMSkuU2xpY2U8SW50MTI4Pihw
KSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LCBEaXN0YW5jZShwLCBUeXBl
PFNwYW48aW50MzJfdD4+KEwoNSwgMywgMSkuU2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOwor
ICB9Cit9CisKK01BVENIRVJfUChJc1NhbWVTbGljZSwgc2xpY2UsICIiKSB7CisgIHJldHVybiBh
cmcuc2l6ZSgpID09IHNsaWNlLnNpemUoKSAmJiBhcmcuZGF0YSgpID09IHNsaWNlLmRhdGEoKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIE0+CitjbGFzcyBUdXBsZU1hdGNoZXIgeworIHB1
YmxpYzoKKyAgZXhwbGljaXQgVHVwbGVNYXRjaGVyKE0uLi4gbWF0Y2hlcnMpIDogbWF0Y2hlcnNf
KHN0ZDo6bW92ZShtYXRjaGVycykuLi4pIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxl
PgorICBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBUdXBsZSYgcCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogLyogbGlzdGVuZXIgKi8pIGNv
bnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6dHVwbGVfc2l6ZTxUdXBsZT46OnZhbHVlID09
IHNpemVvZi4uLihNKSwgIiIpOworICAgIHJldHVybiBNYXRjaEFuZEV4cGxhaW5JbXBsKAorICAg
ICAgICBwLCBhYnNsOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxUdXBsZT46
OnZhbHVlPnt9KTsKKyAgfQorCisgIC8vIEZvciB0aGUgbWF0Y2hlciBjb25jZXB0LiBMZWZ0IGVt
cHR5IGFzIHdlIGRvbid0IHJlYWxseSBuZWVkIHRoZSBkaWFnbm9zdGljcworICAvLyByaWdodCBu
b3cuCisgIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHt9CisgIHZv
aWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Qge30KKworIHBy
aXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZSwgc2l6ZV90Li4uIElzPgorICBib29s
IE1hdGNoQW5kRXhwbGFpbkltcGwoY29uc3QgVHVwbGUmIHAsIGFic2w6OmluZGV4X3NlcXVlbmNl
PElzLi4uPikgY29uc3QgeworICAgIC8vIFVzaW5nIHN0ZDo6bWluIGFzIGEgc2ltcGxlIHZhcmlh
ZGljICJhbmQiLgorICAgIHJldHVybiBzdGQ6Om1pbigKKyAgICAgICAge3RydWUsIHRlc3Rpbmc6
OlNhZmVNYXRjaGVyQ2FzdDwKKyAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlbmFtZSBzdGQ6
OnR1cGxlX2VsZW1lbnQ8SXMsIFR1cGxlPjo6dHlwZSY+KAorICAgICAgICAgICAgICAgICAgIHN0
ZDo6Z2V0PElzPihtYXRjaGVyc18pKQorICAgICAgICAgICAgICAgICAgIC5NYXRjaGVzKHN0ZDo6
Z2V0PElzPihwKSkuLi59KTsKKyAgfQorCisgIHN0ZDo6dHVwbGU8TS4uLj4gbWF0Y2hlcnNfOwor
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIE0+Cit0ZXN0aW5nOjpQb2x5bW9ycGhpY01hdGNo
ZXI8VHVwbGVNYXRjaGVyPE0uLi4+PiBUdXBsZShNLi4uIG1hdGNoZXJzKSB7CisgIHJldHVybiB0
ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyKAorICAgICAgVHVwbGVNYXRjaGVyPE0uLi4+
KHN0ZDo6bW92ZShtYXRjaGVycykuLi4pKTsKK30KKworVEVTVChMYXlvdXQsIFNsaWNlcykgewor
ICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIHBbMTAwXSA9IHt9Owor
ICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50OF90LCBJbnQxMjg+OworICB7CisgICAgY29u
c3QgYXV0byB4ID0gTDo6UGFydGlhbCgpOworICAgIEVYUEVDVF9USEFUKFR5cGU8c3RkOjp0dXBs
ZTw+Pih4LlNsaWNlcyhwKSksIFR1cGxlKCkpOworICB9CisgIHsKKyAgICBjb25zdCBhdXRvIHgg
PSBMOjpQYXJ0aWFsKDEpOworICAgIEVYUEVDVF9USEFUKFR5cGU8c3RkOjp0dXBsZTxTcGFuPGNv
bnN0IGludDhfdD4+Pih4LlNsaWNlcyhwKSksCisgICAgICAgICAgICAgICAgVHVwbGUoSXNTYW1l
U2xpY2UoeC5TbGljZTwwPihwKSkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6
UGFydGlhbCgxLCAyKTsKKyAgICBFWFBFQ1RfVEhBVCgKKyAgICAgICAgKFR5cGU8c3RkOjp0dXBs
ZTxTcGFuPGNvbnN0IGludDhfdD4sIFNwYW48Y29uc3QgaW50OF90Pj4+KHguU2xpY2VzKHApKSks
CisgICAgICAgIFR1cGxlKElzU2FtZVNsaWNlKHguU2xpY2U8MD4ocCkpLCBJc1NhbWVTbGljZSh4
LlNsaWNlPDE+KHApKSkpOworICB9CisgIHsKKyAgICBjb25zdCBhdXRvIHggPSBMOjpQYXJ0aWFs
KDEsIDIsIDMpOworICAgIEVYUEVDVF9USEFUKChUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25zdCBp
bnQ4X3Q+LCBTcGFuPGNvbnN0IGludDhfdD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTcGFuPGNvbnN0IEludDEyOD4+Pih4LlNsaWNlcyhwKSkpLAorICAgICAgICAgICAgICAg
IFR1cGxlKElzU2FtZVNsaWNlKHguU2xpY2U8MD4ocCkpLCBJc1NhbWVTbGljZSh4LlNsaWNlPDE+
KHApKSwKKyAgICAgICAgICAgICAgICAgICAgICBJc1NhbWVTbGljZSh4LlNsaWNlPDI+KHApKSkp
OworICB9CisgIHsKKyAgICBjb25zdCBMIHgoMSwgMiwgMyk7CisgICAgRVhQRUNUX1RIQVQoKFR5
cGU8c3RkOjp0dXBsZTxTcGFuPGNvbnN0IGludDhfdD4sIFNwYW48Y29uc3QgaW50OF90PiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwYW48Y29uc3QgSW50MTI4Pj4+KHguU2xp
Y2VzKHApKSksCisgICAgICAgICAgICAgICAgVHVwbGUoSXNTYW1lU2xpY2UoeC5TbGljZTwwPihw
KSksIElzU2FtZVNsaWNlKHguU2xpY2U8MT4ocCkpLAorICAgICAgICAgICAgICAgICAgICAgIElz
U2FtZVNsaWNlKHguU2xpY2U8Mj4ocCkpKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIE11dGFi
bGVTbGljZXMpIHsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgdW5zaWduZWQgY2hhciBwWzEwMF0g
PSB7fTsKKyAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDhfdCwgSW50MTI4PjsKKyAgewor
ICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRpYWwoKTsKKyAgICBFWFBFQ1RfVEhBVChUeXBlPHN0
ZDo6dHVwbGU8Pj4oeC5TbGljZXMocCkpLCBUdXBsZSgpKTsKKyAgfQorICB7CisgICAgY29uc3Qg
YXV0byB4ID0gTDo6UGFydGlhbCgxKTsKKyAgICBFWFBFQ1RfVEhBVChUeXBlPHN0ZDo6dHVwbGU8
U3BhbjxpbnQ4X3Q+Pj4oeC5TbGljZXMocCkpLAorICAgICAgICAgICAgICAgIFR1cGxlKElzU2Ft
ZVNsaWNlKHguU2xpY2U8MD4ocCkpKSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6
OlBhcnRpYWwoMSwgMik7CisgICAgRVhQRUNUX1RIQVQoKFR5cGU8c3RkOjp0dXBsZTxTcGFuPGlu
dDhfdD4sIFNwYW48aW50OF90Pj4+KHguU2xpY2VzKHApKSksCisgICAgICAgICAgICAgICAgVHVw
bGUoSXNTYW1lU2xpY2UoeC5TbGljZTwwPihwKSksIElzU2FtZVNsaWNlKHguU2xpY2U8MT4ocCkp
KSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRpYWwoMSwgMiwgMyk7Cisg
ICAgRVhQRUNUX1RIQVQoCisgICAgICAgIChUeXBlPHN0ZDo6dHVwbGU8U3BhbjxpbnQ4X3Q+LCBT
cGFuPGludDhfdD4sIFNwYW48SW50MTI4Pj4+KHguU2xpY2VzKHApKSksCisgICAgICAgIFR1cGxl
KElzU2FtZVNsaWNlKHguU2xpY2U8MD4ocCkpLCBJc1NhbWVTbGljZSh4LlNsaWNlPDE+KHApKSwK
KyAgICAgICAgICAgICAgSXNTYW1lU2xpY2UoeC5TbGljZTwyPihwKSkpKTsKKyAgfQorICB7Cisg
ICAgY29uc3QgTCB4KDEsIDIsIDMpOworICAgIEVYUEVDVF9USEFUKAorICAgICAgICAoVHlwZTxz
dGQ6OnR1cGxlPFNwYW48aW50OF90PiwgU3BhbjxpbnQ4X3Q+LCBTcGFuPEludDEyOD4+Pih4LlNs
aWNlcyhwKSkpLAorICAgICAgICBUdXBsZShJc1NhbWVTbGljZSh4LlNsaWNlPDA+KHApKSwgSXNT
YW1lU2xpY2UoeC5TbGljZTwxPihwKSksCisgICAgICAgICAgICAgIElzU2FtZVNsaWNlKHguU2xp
Y2U8Mj4ocCkpKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFVuYWxpZ25lZFR5cGVzKSB7Cisg
IGNvbnN0ZXhwciBMYXlvdXQ8dW5zaWduZWQgY2hhciwgdW5zaWduZWQgY2hhciwgdW5zaWduZWQg
Y2hhcj4geCgxLCAyLCAzKTsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgdW5zaWduZWQgY2hhciBw
W3guQWxsb2NTaXplKCkgKyAxXTsKKyAgRVhQRUNUX1RIQVQoeC5Qb2ludGVycyhwICsgMSksIFR1
cGxlKHAgKyAxLCBwICsgMiwgcCArIDQpKTsKK30KKworVEVTVChMYXlvdXQsIEN1c3RvbUFsaWdu
bWVudCkgeworICBjb25zdGV4cHIgTGF5b3V0PHVuc2lnbmVkIGNoYXIsIEFsaWduZWQ8dW5zaWdu
ZWQgY2hhciwgOD4+IHgoMSwgMik7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIHVuc2lnbmVkIGNo
YXIgcFt4LkFsbG9jU2l6ZSgpXTsKKyAgRVhQRUNUX0VRKDEwLCB4LkFsbG9jU2l6ZSgpKTsKKyAg
RVhQRUNUX1RIQVQoeC5Qb2ludGVycyhwKSwgVHVwbGUocCArIDAsIHAgKyA4KSk7Cit9CisKK1RF
U1QoTGF5b3V0LCBPdmVyQWxpZ25lZCkgeworICBjb25zdGV4cHIgc2l6ZV90IE0gPSBhbGlnbm9m
KG1heF9hbGlnbl90KTsKKyAgY29uc3RleHByIExheW91dDx1bnNpZ25lZCBjaGFyLCBBbGlnbmVk
PHVuc2lnbmVkIGNoYXIsIDIgKiBNPj4geCgxLCAzKTsKKyAgYWxpZ25hcygyICogTSkgdW5zaWdu
ZWQgY2hhciBwW3guQWxsb2NTaXplKCldOworICBFWFBFQ1RfRVEoMiAqIE0gKyAzLCB4LkFsbG9j
U2l6ZSgpKTsKKyAgRVhQRUNUX1RIQVQoeC5Qb2ludGVycyhwKSwgVHVwbGUocCArIDAsIHAgKyAy
ICogTSkpOworfQorCitURVNUKExheW91dCwgQWxpZ25tZW50KSB7CisgIHN0YXRpY19hc3NlcnQo
TGF5b3V0PGludDhfdD46OkFsaWdubWVudCgpID09IDEsICIiKTsKKyAgc3RhdGljX2Fzc2VydChM
YXlvdXQ8aW50MzJfdD46OkFsaWdubWVudCgpID09IDQsICIiKTsKKyAgc3RhdGljX2Fzc2VydChM
YXlvdXQ8aW50NjRfdD46OkFsaWdubWVudCgpID09IDgsICIiKTsKKyAgc3RhdGljX2Fzc2VydChM
YXlvdXQ8QWxpZ25lZDxpbnQ4X3QsIDY0Pj46OkFsaWdubWVudCgpID09IDY0LCAiIik7CisgIHN0
YXRpY19hc3NlcnQoTGF5b3V0PGludDhfdCwgaW50MzJfdCwgaW50NjRfdD46OkFsaWdubWVudCgp
ID09IDgsICIiKTsKKyAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50OF90LCBpbnQ2NF90LCBpbnQz
Ml90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQz
Ml90LCBpbnQ4X3QsIGludDY0X3Q+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7CisgIHN0YXRpY19h
c3NlcnQoTGF5b3V0PGludDMyX3QsIGludDY0X3QsIGludDhfdD46OkFsaWdubWVudCgpID09IDgs
ICIiKTsKKyAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50NjRfdCwgaW50OF90LCBpbnQzMl90Pjo6
QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQ2NF90LCBp
bnQzMl90LCBpbnQ4X3Q+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7Cit9CisKK1RFU1QoTGF5b3V0
LCBDb25zdGV4cHJQYXJ0aWFsKSB7CisgIGNvbnN0ZXhwciBzaXplX3QgTSA9IGFsaWdub2YobWF4
X2FsaWduX3QpOworICBjb25zdGV4cHIgTGF5b3V0PHVuc2lnbmVkIGNoYXIsIEFsaWduZWQ8dW5z
aWduZWQgY2hhciwgMiAqIE0+PiB4KDEsIDMpOworICBzdGF0aWNfYXNzZXJ0KHguUGFydGlhbCgx
KS50ZW1wbGF0ZSBPZmZzZXQ8MT4oKSA9PSAyICogTSwgIiIpOworfQorLy8gW2Zyb20sIHRvKQor
c3RydWN0IFJlZ2lvbiB7CisgIHNpemVfdCBmcm9tOworICBzaXplX3QgdG87Cit9OworCit2b2lk
IEV4cGVjdFJlZ2lvblBvaXNvbmVkKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAsIHNpemVfdCBuLCBi
b29sIHBvaXNvbmVkKSB7CisjaWZkZWYgQUREUkVTU19TQU5JVElaRVIKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgIT0gbjsgKytpKSB7CisgICAgRVhQRUNUX0VRKHBvaXNvbmVkLCBfX2FzYW5fYWRk
cmVzc19pc19wb2lzb25lZChwICsgaSkpOworICB9CisjZW5kaWYKK30KKwordGVtcGxhdGUgPHNp
emVfdCBOPgordm9pZCBFeHBlY3RQb2lzb25lZChjb25zdCB1bnNpZ25lZCBjaGFyICgmYnVmKVtO
XSwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PFJlZ2lvbj4gcmVn
KSB7CisgIHNpemVfdCBwcmV2ID0gMDsKKyAgZm9yIChjb25zdCBSZWdpb24mIHIgOiByZWcpIHsK
KyAgICBFeHBlY3RSZWdpb25Qb2lzb25lZChidWYgKyBwcmV2LCByLmZyb20gLSBwcmV2LCBmYWxz
ZSk7CisgICAgRXhwZWN0UmVnaW9uUG9pc29uZWQoYnVmICsgci5mcm9tLCByLnRvIC0gci5mcm9t
LCB0cnVlKTsKKyAgICBwcmV2ID0gci50bzsKKyAgfQorICBFeHBlY3RSZWdpb25Qb2lzb25lZChi
dWYgKyBwcmV2LCBOIC0gcHJldiwgZmFsc2UpOworfQorCitURVNUKExheW91dCwgUG9pc29uUGFk
ZGluZykgeworICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50NjRfdCwgaW50MzJfdCwgSW50
MTI4PjsKKworICBjb25zdGV4cHIgc2l6ZV90IG4gPSBMOjpQYXJ0aWFsKDEsIDIsIDMsIDQpLkFs
bG9jU2l6ZSgpOworICB7CisgICAgY29uc3RleHByIGF1dG8geCA9IEw6OlBhcnRpYWwoKTsKKyAg
ICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIGNbbl0gPSB7fTsKKyAg
ICB4LlBvaXNvblBhZGRpbmcoYyk7CisgICAgRVhQRUNUX0VRKHguU2xpY2VzKGMpLCB4LlNsaWNl
cyhjKSk7CisgICAgRXhwZWN0UG9pc29uZWQoYywge30pOworICB9CisgIHsKKyAgICBjb25zdGV4
cHIgYXV0byB4ID0gTDo6UGFydGlhbCgxKTsKKyAgICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25z
dCB1bnNpZ25lZCBjaGFyIGNbbl0gPSB7fTsKKyAgICB4LlBvaXNvblBhZGRpbmcoYyk7CisgICAg
RVhQRUNUX0VRKHguU2xpY2VzKGMpLCB4LlNsaWNlcyhjKSk7CisgICAgRXhwZWN0UG9pc29uZWQo
Yywge3sxLCA4fX0pOworICB9CisgIHsKKyAgICBjb25zdGV4cHIgYXV0byB4ID0gTDo6UGFydGlh
bCgxLCAyKTsKKyAgICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIGNb
bl0gPSB7fTsKKyAgICB4LlBvaXNvblBhZGRpbmcoYyk7CisgICAgRVhQRUNUX0VRKHguU2xpY2Vz
KGMpLCB4LlNsaWNlcyhjKSk7CisgICAgRXhwZWN0UG9pc29uZWQoYywge3sxLCA4fX0pOworICB9
CisgIHsKKyAgICBjb25zdGV4cHIgYXV0byB4ID0gTDo6UGFydGlhbCgxLCAyLCAzKTsKKyAgICBh
bGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIGNbbl0gPSB7fTsKKyAgICB4
LlBvaXNvblBhZGRpbmcoYyk7CisgICAgRVhQRUNUX0VRKHguU2xpY2VzKGMpLCB4LlNsaWNlcyhj
KSk7CisgICAgRXhwZWN0UG9pc29uZWQoYywge3sxLCA4fSwgezM2LCA0MH19KTsKKyAgfQorICB7
CisgICAgY29uc3RleHByIGF1dG8geCA9IEw6OlBhcnRpYWwoMSwgMiwgMywgNCk7CisgICAgYWxp
Z25hcyhtYXhfYWxpZ25fdCkgY29uc3QgdW5zaWduZWQgY2hhciBjW25dID0ge307CisgICAgeC5Q
b2lzb25QYWRkaW5nKGMpOworICAgIEVYUEVDVF9FUSh4LlNsaWNlcyhjKSwgeC5TbGljZXMoYykp
OworICAgIEV4cGVjdFBvaXNvbmVkKGMsIHt7MSwgOH0sIHszNiwgNDB9fSk7CisgIH0KKyAgewor
ICAgIGNvbnN0ZXhwciBMIHgoMSwgMiwgMywgNCk7CisgICAgYWxpZ25hcyhtYXhfYWxpZ25fdCkg
Y29uc3QgdW5zaWduZWQgY2hhciBjW25dID0ge307CisgICAgeC5Qb2lzb25QYWRkaW5nKGMpOwor
ICAgIEVYUEVDVF9FUSh4LlNsaWNlcyhjKSwgeC5TbGljZXMoYykpOworICAgIEV4cGVjdFBvaXNv
bmVkKGMsIHt7MSwgOH0sIHszNiwgNDB9fSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIERlYnVn
U3RyaW5nKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGludDY0X3R5cGUgPQorI2lmZGVmIF9NU0Nf
VkVSCisgICJfX2ludDY0IjsKKyNlbHNlICAgLy8gX01TQ19WRVIKKyAgc3RkOjppc19zYW1lPGlu
dDY0X3QsIGxvbmcgbG9uZz46OnZhbHVlID8gImxvbmcgbG9uZyIgOiAibG9uZyI7ICAvLyBOT0xJ
TlQKKyNlbmRpZiAgLy8gX01TQ19WRVIKKyAgeworICAgIGNvbnN0ZXhwciBhdXRvIHggPSBMYXlv
dXQ8aW50OF90LCBpbnQzMl90LCBpbnQ4X3QsIEludDEyOD46OlBhcnRpYWwoKTsKKyAgICBFWFBF
Q1RfRVEoIkAwPHNpZ25lZCBjaGFyPigxKSIsIHguRGVidWdTdHJpbmcoKSk7CisgIH0KKyAgewor
ICAgIGNvbnN0ZXhwciBhdXRvIHggPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBpbnQ4X3QsIElu
dDEyOD46OlBhcnRpYWwoMSk7CisgICAgRVhQRUNUX0VRKCJAMDxzaWduZWQgY2hhcj4oMSlbMV07
IEA0PGludD4oNCkiLCB4LkRlYnVnU3RyaW5nKCkpOworICB9CisgIHsKKyAgICBjb25zdGV4cHIg
YXV0byB4ID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgaW50OF90LCBJbnQxMjg+OjpQYXJ0aWFs
KDEsIDIpOworICAgIEVYUEVDVF9FUSgiQDA8c2lnbmVkIGNoYXI+KDEpWzFdOyBANDxpbnQ+KDQp
WzJdOyBAMTI8c2lnbmVkIGNoYXI+KDEpIiwKKyAgICAgICAgICAgICAgeC5EZWJ1Z1N0cmluZygp
KTsKKyAgfQorICB7CisgICAgY29uc3RleHByIGF1dG8geCA9IExheW91dDxpbnQ4X3QsIGludDMy
X3QsIGludDhfdCwgSW50MTI4Pjo6UGFydGlhbCgxLCAyLCAzKTsKKyAgICBFWFBFQ1RfRVEoCisg
ICAgICAgICJAMDxzaWduZWQgY2hhcj4oMSlbMV07IEA0PGludD4oNClbMl07IEAxMjxzaWduZWQg
Y2hhcj4oMSlbM107ICIKKyAgICAgICAgIkAxNjwiICsKKyAgICAgICAgICAgIGludDY0X3R5cGUg
KyAiIFsyXT4oMTYpIiwKKyAgICAgICAgeC5EZWJ1Z1N0cmluZygpKTsKKyAgfQorICB7CisgICAg
Y29uc3RleHByIGF1dG8geCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIGludDhfdCwgSW50MTI4
Pjo6UGFydGlhbCgxLCAyLCAzLCA0KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgICJAMDxzaWdu
ZWQgY2hhcj4oMSlbMV07IEA0PGludD4oNClbMl07IEAxMjxzaWduZWQgY2hhcj4oMSlbM107ICIK
KyAgICAgICAgIkAxNjwiICsKKyAgICAgICAgICAgIGludDY0X3R5cGUgKyAiIFsyXT4oMTYpWzRd
IiwKKyAgICAgICAgeC5EZWJ1Z1N0cmluZygpKTsKKyAgfQorICB7CisgICAgY29uc3RleHByIExh
eW91dDxpbnQ4X3QsIGludDMyX3QsIGludDhfdCwgSW50MTI4PiB4KDEsIDIsIDMsIDQpOworICAg
IEVYUEVDVF9FUSgKKyAgICAgICAgIkAwPHNpZ25lZCBjaGFyPigxKVsxXTsgQDQ8aW50Pig0KVsy
XTsgQDEyPHNpZ25lZCBjaGFyPigxKVszXTsgIgorICAgICAgICAiQDE2PCIgKworICAgICAgICAg
ICAgaW50NjRfdHlwZSArICIgWzJdPigxNilbNF0iLAorICAgICAgICB4LkRlYnVnU3RyaW5nKCkp
OworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBDaGFyVHlwZXMpIHsKKyAgY29uc3RleHByIExheW91
dDxpbnQzMl90PiB4KDEpOworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjaGFyIGNbeC5BbGxvY1Np
emUoKV0gPSB7fTsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgdW5zaWduZWQgY2hhciB1Y1t4LkFs
bG9jU2l6ZSgpXSA9IHt9OworICBhbGlnbmFzKG1heF9hbGlnbl90KSBzaWduZWQgY2hhciBzY1t4
LkFsbG9jU2l6ZSgpXSA9IHt9OworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCBjaGFyIGNj
W3guQWxsb2NTaXplKCldID0ge307CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2ln
bmVkIGNoYXIgY3VjW3guQWxsb2NTaXplKCldID0ge307CisgIGFsaWduYXMobWF4X2FsaWduX3Qp
IGNvbnN0IHNpZ25lZCBjaGFyIGNzY1t4LkFsbG9jU2l6ZSgpXSA9IHt9OworCisgIFR5cGU8aW50
MzJfdCo+KHguUG9pbnRlcjwwPihjKSk7CisgIFR5cGU8aW50MzJfdCo+KHguUG9pbnRlcjwwPih1
YykpOworICBUeXBlPGludDMyX3QqPih4LlBvaW50ZXI8MD4oc2MpKTsKKyAgVHlwZTxjb25zdCBp
bnQzMl90Kj4oeC5Qb2ludGVyPDA+KGNjKSk7CisgIFR5cGU8Y29uc3QgaW50MzJfdCo+KHguUG9p
bnRlcjwwPihjdWMpKTsKKyAgVHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2ludGVyPDA+KGNzYykp
OworCisgIFR5cGU8aW50MzJfdCo+KHguUG9pbnRlcjxpbnQzMl90PihjKSk7CisgIFR5cGU8aW50
MzJfdCo+KHguUG9pbnRlcjxpbnQzMl90Pih1YykpOworICBUeXBlPGludDMyX3QqPih4LlBvaW50
ZXI8aW50MzJfdD4oc2MpKTsKKyAgVHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2ludGVyPGludDMy
X3Q+KGNjKSk7CisgIFR5cGU8Y29uc3QgaW50MzJfdCo+KHguUG9pbnRlcjxpbnQzMl90PihjdWMp
KTsKKyAgVHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2ludGVyPGludDMyX3Q+KGNzYykpOworCisg
IFR5cGU8c3RkOjp0dXBsZTxpbnQzMl90Kj4+KHguUG9pbnRlcnMoYykpOworICBUeXBlPHN0ZDo6
dHVwbGU8aW50MzJfdCo+Pih4LlBvaW50ZXJzKHVjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxpbnQz
Ml90Kj4+KHguUG9pbnRlcnMoc2MpKTsKKyAgVHlwZTxzdGQ6OnR1cGxlPGNvbnN0IGludDMyX3Qq
Pj4oeC5Qb2ludGVycyhjYykpOworICBUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50MzJfdCo+Pih4
LlBvaW50ZXJzKGN1YykpOworICBUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50MzJfdCo+Pih4LlBv
aW50ZXJzKGNzYykpOworCisgIFR5cGU8U3BhbjxpbnQzMl90Pj4oeC5TbGljZTwwPihjKSk7Cisg
IFR5cGU8U3BhbjxpbnQzMl90Pj4oeC5TbGljZTwwPih1YykpOworICBUeXBlPFNwYW48aW50MzJf
dD4+KHguU2xpY2U8MD4oc2MpKTsKKyAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+Pih4LlNsaWNl
PDA+KGNjKSk7CisgIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oeC5TbGljZTwwPihjdWMpKTsK
KyAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+Pih4LlNsaWNlPDA+KGNzYykpOworCisgIFR5cGU8
c3RkOjp0dXBsZTxTcGFuPGludDMyX3Q+Pj4oeC5TbGljZXMoYykpOworICBUeXBlPHN0ZDo6dHVw
bGU8U3BhbjxpbnQzMl90Pj4+KHguU2xpY2VzKHVjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxTcGFu
PGludDMyX3Q+Pj4oeC5TbGljZXMoc2MpKTsKKyAgVHlwZTxzdGQ6OnR1cGxlPFNwYW48Y29uc3Qg
aW50MzJfdD4+Pih4LlNsaWNlcyhjYykpOworICBUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25zdCBp
bnQzMl90Pj4+KHguU2xpY2VzKGN1YykpOworICBUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25zdCBp
bnQzMl90Pj4+KHguU2xpY2VzKGNzYykpOworfQorCitURVNUKExheW91dCwgQ29uc3RFbGVtZW50
VHlwZSkgeworICBjb25zdGV4cHIgTGF5b3V0PGNvbnN0IGludDMyX3Q+IHgoMSk7CisgIGFsaWdu
YXMoaW50MzJfdCkgY2hhciBjW3guQWxsb2NTaXplKCldID0ge307CisgIGNvbnN0IGNoYXIqIGNj
ID0gYzsKKyAgY29uc3QgaW50MzJfdCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJf
dCo+KGNjKTsKKworICBFWFBFQ1RfRVEoYWxpZ25vZihpbnQzMl90KSwgeC5BbGlnbm1lbnQoKSk7
CisKKyAgRVhQRUNUX0VRKDAsIHguT2Zmc2V0PDA+KCkpOworICBFWFBFQ1RfRVEoMCwgeC5PZmZz
ZXQ8Y29uc3QgaW50MzJfdD4oKSk7CisKKyAgRVhQRUNUX1RIQVQoeC5PZmZzZXRzKCksIEVsZW1l
bnRzQXJlKDApKTsKKworICBFWFBFQ1RfRVEoMSwgeC5TaXplPDA+KCkpOworICBFWFBFQ1RfRVEo
MSwgeC5TaXplPGNvbnN0IGludDMyX3Q+KCkpOworCisgIEVYUEVDVF9USEFUKHguU2l6ZXMoKSwg
RWxlbWVudHNBcmUoMSkpOworCisgIEVYUEVDVF9FUShzaXplb2YoaW50MzJfdCksIHguQWxsb2NT
aXplKCkpOworCisgIEVYUEVDVF9FUShwLCBUeXBlPGNvbnN0IGludDMyX3QqPih4LlBvaW50ZXI8
MD4oYykpKTsKKyAgRVhQRUNUX0VRKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KHguUG9pbnRlcjww
PihjYykpKTsKKworICBFWFBFQ1RfRVEocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2ludGVy
PGNvbnN0IGludDMyX3Q+KGMpKSk7CisgIEVYUEVDVF9FUShwLCBUeXBlPGNvbnN0IGludDMyX3Qq
Pih4LlBvaW50ZXI8Y29uc3QgaW50MzJfdD4oY2MpKSk7CisKKyAgRVhQRUNUX1RIQVQoVHlwZTxz
dGQ6OnR1cGxlPGNvbnN0IGludDMyX3QqPj4oeC5Qb2ludGVycyhjKSksIFR1cGxlKHApKTsKKyAg
RVhQRUNUX1RIQVQoVHlwZTxzdGQ6OnR1cGxlPGNvbnN0IGludDMyX3QqPj4oeC5Qb2ludGVycyhj
YykpLCBUdXBsZShwKSk7CisKKyAgRVhQRUNUX1RIQVQoVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+
Pih4LlNsaWNlPDA+KGMpKSwKKyAgICAgICAgICAgICAgSXNTYW1lU2xpY2UoU3Bhbjxjb25zdCBp
bnQzMl90PihwLCAxKSkpOworICBFWFBFQ1RfVEhBVChUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+
KHguU2xpY2U8MD4oY2MpKSwKKyAgICAgICAgICAgICAgSXNTYW1lU2xpY2UoU3Bhbjxjb25zdCBp
bnQzMl90PihwLCAxKSkpOworCisgIEVYUEVDVF9USEFUKFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90
Pj4oeC5TbGljZTxjb25zdCBpbnQzMl90PihjKSksCisgICAgICAgICAgICAgIElzU2FtZVNsaWNl
KFNwYW48Y29uc3QgaW50MzJfdD4ocCwgMSkpKTsKKyAgRVhQRUNUX1RIQVQoVHlwZTxTcGFuPGNv
bnN0IGludDMyX3Q+Pih4LlNsaWNlPGNvbnN0IGludDMyX3Q+KGNjKSksCisgICAgICAgICAgICAg
IElzU2FtZVNsaWNlKFNwYW48Y29uc3QgaW50MzJfdD4ocCwgMSkpKTsKKworICBFWFBFQ1RfVEhB
VChUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4+KHguU2xpY2VzKGMpKSwKKyAg
ICAgICAgICAgICAgVHVwbGUoSXNTYW1lU2xpY2UoU3Bhbjxjb25zdCBpbnQzMl90PihwLCAxKSkp
KTsKKyAgRVhQRUNUX1RIQVQoVHlwZTxzdGQ6OnR1cGxlPFNwYW48Y29uc3QgaW50MzJfdD4+Pih4
LlNsaWNlcyhjYykpLAorICAgICAgICAgICAgICBUdXBsZShJc1NhbWVTbGljZShTcGFuPGNvbnN0
IGludDMyX3Q+KHAsIDEpKSkpOworfQorCituYW1lc3BhY2UgZXhhbXBsZSB7CisKKy8vIEltbXV0
YWJsZSBtb3ZlLW9ubHkgc3RyaW5nIHdpdGggc2l6ZW9mIGVxdWFsIHRvIHNpemVvZih2b2lkKiku
IFRoZSBzdHJpbmcKKy8vIHNpemUgYW5kIHRoZSBjaGFyYWN0ZXJzIGFyZSBrZXB0IGluIHRoZSBz
YW1lIGhlYXAgYWxsb2NhdGlvbi4KK2NsYXNzIENvbXBhY3RTdHJpbmcgeworIHB1YmxpYzoKKyAg
Q29tcGFjdFN0cmluZyhjb25zdCBjaGFyKiBzID0gIiIpIHsgIC8vIE5PTElOVAorICAgIGNvbnN0
IHNpemVfdCBzaXplID0gc3RybGVuKHMpOworICAgIC8vIHNpemVfdFsxXSwgZm9sbG93ZWQgYnkg
Y2hhcltzaXplICsgMV0uCisgICAgLy8gVGhpcyBzdGF0ZW1lbnQgZG9lc24ndCBhbGxvY2F0ZSBt
ZW1vcnkuCisgICAgY29uc3QgTCBsYXlvdXQoMSwgc2l6ZSArIDEpOworICAgIC8vIEFsbG9jU2l6
ZSgpIHRlbGxzIHVzIGhvdyBtdWNoIG1lbW9yeSB3ZSBuZWVkIHRvIGFsbG9jYXRlIGZvciBhbGwg
b3VyCisgICAgLy8gZGF0YS4KKyAgICBwXy5yZXNldChuZXcgdW5zaWduZWQgY2hhcltsYXlvdXQu
QWxsb2NTaXplKCldKTsKKyAgICAvLyBJZiBydW5uaW5nIHVuZGVyIEFTQU4sIG1hcmsgdGhlIHBh
ZGRpbmcgYnl0ZXMsIGlmIGFueSwgdG8gY2F0Y2ggbWVtb3J5CisgICAgLy8gZXJyb3JzLgorICAg
IGxheW91dC5Qb2lzb25QYWRkaW5nKHBfLmdldCgpKTsKKyAgICAvLyBTdG9yZSB0aGUgc2l6ZSBp
biB0aGUgYWxsb2NhdGlvbi4KKyAgICAvLyBQb2ludGVyPHNpemVfdD4oKSBpcyBhIHN5bm9ueW0g
Zm9yIFBvaW50ZXI8MD4oKS4KKyAgICAqbGF5b3V0LlBvaW50ZXI8c2l6ZV90PihwXy5nZXQoKSkg
PSBzaXplOworICAgIC8vIFN0b3JlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBhbGxvY2F0aW9uLgor
ICAgIG1lbWNweShsYXlvdXQuUG9pbnRlcjxjaGFyPihwXy5nZXQoKSksIHMsIHNpemUgKyAxKTsK
KyAgfQorCisgIHNpemVfdCBzaXplKCkgY29uc3QgeworICAgIC8vIEVxdWl2YWxlbnQgdG8gcmVp
bnRlcnByZXRfY2FzdDxzaXplX3QmPigqcCkuCisgICAgcmV0dXJuICpMOjpQYXJ0aWFsKCkuUG9p
bnRlcjxzaXplX3Q+KHBfLmdldCgpKTsKKyAgfQorCisgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29u
c3QgeworICAgIC8vIEVxdWl2YWxlbnQgdG8gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocC5nZXQo
KSArIHNpemVvZihzaXplX3QpKS4KKyAgICAvLyBUaGUgYXJndW1lbnQgaW4gUGFydGlhbCgxKSBz
cGVjaWZpZXMgdGhhdCB3ZSBoYXZlIHNpemVfdFsxXSBpbiBmcm9udCBvZgorICAgIC8vIHRoZQor
ICAgIC8vIGNoYXJhY3RlcnMuCisgICAgcmV0dXJuIEw6OlBhcnRpYWwoMSkuUG9pbnRlcjxjaGFy
PihwXy5nZXQoKSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIE91ciBoZWFwIGFsbG9jYXRpb24g
Y29udGFpbnMgYSBzaXplX3QgZm9sbG93ZWQgYnkgYW4gYXJyYXkgb2YgY2hhcnMuCisgIHVzaW5n
IEwgPSBMYXlvdXQ8c2l6ZV90LCBjaGFyPjsKKyAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNo
YXJbXT4gcF87Cit9OworCitURVNUKENvbXBhY3RTdHJpbmcsIFdvcmtzKSB7CisgIENvbXBhY3RT
dHJpbmcgcyA9ICJoZWxsbyI7CisgIEVYUEVDVF9FUSg1LCBzLnNpemUoKSk7CisgIEVYUEVDVF9T
VFJFUSgiaGVsbG8iLCBzLmNfc3RyKCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UgZXhhbXBsZQor
Cit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30g
IC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
bm9kZV9oYXNoX3BvbGljeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL25vZGVfaGFzaF9w
b2xpY3kuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNjVlNzAwOWU3ZTdlNGM1YjAzM2E1ZDI1OGNhZDkzNTcyY2Zk
YTVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL25vZGVfaGFz
aF9wb2xpY3kuaApAQCAtMCwwICsxLDg4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vIEFkYXB0cyBhIHBvbGljeSBmb3Igbm9kZXMuCisvLworLy8gVGhl
IG5vZGUgcG9saWN5IHNob3VsZCBtb2RlbDoKKy8vCisvLyBzdHJ1Y3QgUG9saWN5IHsKKy8vICAg
Ly8gUmV0dXJucyBhIG5ldyBub2RlIGFsbG9jYXRlZCBhbmQgY29uc3RydWN0ZWQgdXNpbmcgdGhl
IGFsbG9jYXRvciwgdXNpbmcKKy8vICAgLy8gdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuCisvLyAg
IHRlbXBsYXRlIDxjbGFzcyBBbGxvYywgY2xhc3MuLi4gQXJncz4KKy8vICAgdmFsdWVfdHlwZSog
bmV3X2VsZW1lbnQoQWxsb2MqIGFsbG9jLCBBcmdzJiYuLi4gYXJncykgY29uc3Q7CisvLworLy8g
ICAvLyBEZXN0cm95cyBhbmQgZGVhbGxvY2F0ZXMgbm9kZSB1c2luZyB0aGUgYWxsb2NhdG9yLgor
Ly8gICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2M+CisvLyAgIHZvaWQgZGVsZXRlX2VsZW1lbnQoQWxs
b2MqIGFsbG9jLCB2YWx1ZV90eXBlKiBub2RlKSBjb25zdDsKKy8vIH07CisvLworLy8gSXQgbWF5
IGFsc28gb3B0aW9uYWxseSBkZWZpbmUgYHZhbHVlKClgIGFuZCBgYXBwbHkoKWAuIEZvciBkb2N1
bWVudGF0aW9uIG9uCisvLyB0aGVzZSwgc2VlIGhhc2hfcG9saWN5X3RyYWl0cy5oLgorCisjaWZu
ZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX05PREVfSEFTSF9QT0xJQ1lfSF8KKyNkZWZpbmUg
QUJTTF9DT05UQUlORVJfSU5URVJOQUxfTk9ERV9IQVNIX1BPTElDWV9IXworCisjaW5jbHVkZSA8
Y2Fzc2VydD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFJlZmVyZW5j
ZSwgY2xhc3MgUG9saWN5Pgorc3RydWN0IG5vZGVfaGFzaF9wb2xpY3kgeworICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxSZWZlcmVuY2U+Ojp2YWx1ZSwgIiIpOworCisg
IHVzaW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PAorICAgICAgdHlwZW5h
bWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFJlZmVyZW5jZT46OnR5cGU+Ojp0eXBlKjsKKworICB0
ZW1wbGF0ZSA8Y2xhc3MgQWxsb2MsIGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdChBbGxvYyogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCwgQXJncyYmLi4uIGFyZ3MpIHsKKyAg
ICAqc2xvdCA9IFBvbGljeTo6bmV3X2VsZW1lbnQoYWxsb2MsIHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2M+CisgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koQWxsb2MqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QpIHsKKyAgICBQb2xpY3k6OmRl
bGV0ZV9lbGVtZW50KGFsbG9jLCAqc2xvdCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxs
b2M+CisgIHN0YXRpYyB2b2lkIHRyYW5zZmVyKEFsbG9jKiwgc2xvdF90eXBlKiBuZXdfc2xvdCwg
c2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAgICpuZXdfc2xvdCA9ICpvbGRfc2xvdDsKKyAgfQor
CisgIHN0YXRpYyBzaXplX3Qgc3BhY2VfdXNlZChjb25zdCBzbG90X3R5cGUqIHNsb3QpIHsKKyAg
ICBpZiAoc2xvdCA9PSBudWxscHRyKSByZXR1cm4gUG9saWN5OjplbGVtZW50X3NwYWNlX3VzZWQo
bnVsbHB0cik7CisgICAgcmV0dXJuIFBvbGljeTo6ZWxlbWVudF9zcGFjZV91c2VkKCpzbG90KTsK
KyAgfQorCisgIHN0YXRpYyBSZWZlcmVuY2UgZWxlbWVudChzbG90X3R5cGUqIHNsb3QpIHsgcmV0
dXJuICoqc2xvdDsgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQID0gUG9saWN5Pgor
ICBzdGF0aWMgYXV0byB2YWx1ZShUKiBlbGVtKSAtPiBkZWNsdHlwZShQOjp2YWx1ZShlbGVtKSkg
eworICAgIHJldHVybiBQOjp2YWx1ZShlbGVtKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcy4u
LiBUcywgY2xhc3MgUCA9IFBvbGljeT4KKyAgc3RhdGljIGF1dG8gYXBwbHkoVHMmJi4uLiB0cykg
LT4gZGVjbHR5cGUoUDo6YXBwbHkoc3RkOjpmb3J3YXJkPFRzPih0cykuLi4pKSB7CisgICAgcmV0
dXJuIFA6OmFwcGx5KHN0ZDo6Zm9yd2FyZDxUcz4odHMpLi4uKTsKKyAgfQorfTsKKworfSAgLy8g
bmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2Vu
ZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9OT0RFX0hBU0hfUE9MSUNZX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL25vZGVfaGFzaF9wb2xpY3lfdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40M2QyODdlM2M0YTA0ZWJkNjE4YzMwNWExNWI3NjMwNWY3MmE3NDk3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL25vZGVfaGFzaF9wb2xpY3lfdGVz
dC5jYwpAQCAtMCwwICsxLDY3IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhv
cnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGlj
eS5oIgorCisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L2hhc2hfcG9saWN5X3RyYWl0cy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29u
dGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6dGVzdGluZzo6UG9pbnRl
ZTsKKworc3RydWN0IFBvbGljeSA6IG5vZGVfaGFzaF9wb2xpY3k8aW50JiwgUG9saWN5PiB7Cisg
IHVzaW5nIGtleV90eXBlID0gaW50OworICB1c2luZyBpbml0X3R5cGUgPSBpbnQ7CisKKyAgdGVt
cGxhdGUgPGNsYXNzIEFsbG9jPgorICBzdGF0aWMgaW50KiBuZXdfZWxlbWVudChBbGxvYyogYWxs
b2MsIGludCB2YWx1ZSkgeworICAgIHJldHVybiBuZXcgaW50KHZhbHVlKTsKKyAgfQorCisgIHRl
bXBsYXRlIDxjbGFzcyBBbGxvYz4KKyAgc3RhdGljIHZvaWQgZGVsZXRlX2VsZW1lbnQoQWxsb2Mq
IGFsbG9jLCBpbnQqIGVsZW0pIHsKKyAgICBkZWxldGUgZWxlbTsKKyAgfQorfTsKKwordXNpbmcg
Tm9kZVBvbGljeSA9IGhhc2hfcG9saWN5X3RyYWl0czxQb2xpY3k+OworCitzdHJ1Y3QgTm9kZVRl
c3QgOiA6OnRlc3Rpbmc6OlRlc3QgeworICBzdGQ6OmFsbG9jYXRvcjxpbnQ+IGFsbG9jOworICBp
bnQgbiA9IDUzOworICBpbnQqIGEgPSAmbjsKK307CisKK1RFU1RfRihOb2RlVGVzdCwgQ29uc3Ry
dWN0RGVzdHJveSkgeworICBOb2RlUG9saWN5Ojpjb25zdHJ1Y3QoJmFsbG9jLCAmYSwgNDIpOwor
ICBFWFBFQ1RfVEhBVChhLCBQb2ludGVlKDQyKSk7CisgIE5vZGVQb2xpY3k6OmRlc3Ryb3koJmFs
bG9jLCAmYSk7Cit9CisKK1RFU1RfRihOb2RlVGVzdCwgdHJhbnNmZXIpIHsKKyAgaW50IHMgPSA0
MjsKKyAgaW50KiBiID0gJnM7CisgIE5vZGVQb2xpY3k6OnRyYW5zZmVyKCZhbGxvYywgJmEsICZi
KTsKKyAgRVhQRUNUX0VRKCZzLCBhKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX21hcC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL3Jhd19oYXNoX21hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlZGMwMDcxZTdkZTgyOWRl
MmRkYzc5Njc1ODQ2NjMyZjY2MDRjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgKQEAgLTAsMCArMSwxODIgQEAKKy8vIENvcHlyaWdo
dCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5U
RVJOQUxfUkFXX0hBU0hfTUFQX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1JB
V19IQVNIX01BUF9IXworCisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L2NvbnRhaW5lcl9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9y
YXdfaGFzaF9zZXQuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKworbmFtZXNwYWNlIGFic2wg
eworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBQb2xp
Y3ksIGNsYXNzIEhhc2gsIGNsYXNzIEVxLCBjbGFzcyBBbGxvYz4KK2NsYXNzIHJhd19oYXNoX21h
cCA6IHB1YmxpYyByYXdfaGFzaF9zZXQ8UG9saWN5LCBIYXNoLCBFcSwgQWxsb2M+IHsKKyAgLy8g
UCBpcyBQb2xpY3kuIEl0J3MgcGFzc2VkIGFzIGEgdGVtcGxhdGUgYXJndW1lbnQgdG8gc3VwcG9y
dCBtYXBzIHRoYXQgaGF2ZQorICAvLyBpbmNvbXBsZXRlIHR5cGVzIGFzIHZhbHVlcywgYXMgaW4g
dW5vcmRlcmVkX21hcDxLLCBJbmNvbXBsZXRlVHlwZT4uCisgIC8vIE1hcHBlZFJlZmVyZW5jZTw+
IG1heSBiZSBhIG5vbi1yZWZlcmVuY2UgdHlwZS4KKyAgdGVtcGxhdGUgPGNsYXNzIFA+CisgIHVz
aW5nIE1hcHBlZFJlZmVyZW5jZSA9IGRlY2x0eXBlKFA6OnZhbHVlKAorICAgICAgc3RkOjphZGRy
ZXNzb2Yoc3RkOjpkZWNsdmFsPHR5cGVuYW1lIHJhd19oYXNoX21hcDo6cmVmZXJlbmNlPigpKSkp
OworCisgIC8vIE1hcHBlZENvbnN0UmVmZXJlbmNlPD4gbWF5IGJlIGEgbm9uLXJlZmVyZW5jZSB0
eXBlLgorICB0ZW1wbGF0ZSA8Y2xhc3MgUD4KKyAgdXNpbmcgTWFwcGVkQ29uc3RSZWZlcmVuY2Ug
PSBkZWNsdHlwZShQOjp2YWx1ZSgKKyAgICAgIHN0ZDo6YWRkcmVzc29mKHN0ZDo6ZGVjbHZhbDx0
eXBlbmFtZSByYXdfaGFzaF9tYXA6OmNvbnN0X3JlZmVyZW5jZT4oKSkpKTsKKworIHB1YmxpYzoK
KyAgdXNpbmcga2V5X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3k6OmtleV90eXBlOworICB1c2luZyBt
YXBwZWRfdHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6bWFwcGVkX3R5cGU7CisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBLPgorICB1c2luZyBrZXlfYXJnID0gdHlwZW5hbWUgcmF3X2hhc2hfbWFwOjpyYXdf
aGFzaF9zZXQ6OnRlbXBsYXRlIGtleV9hcmc8Sz47CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjpp
c19yZWZlcmVuY2U8a2V5X3R5cGU+Ojp2YWx1ZSwgIiIpOworICAvLyBUT0RPKGFsa2lzKTogcmVt
b3ZlIHRoaXMgYXNzZXJ0aW9uIGFuZCB2ZXJpZnkgdGhhdCByZWZlcmVuY2UgbWFwcGVkX3R5cGUg
aXMKKyAgLy8gc3VwcG9ydGVkLgorICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3JlZmVyZW5jZTxt
YXBwZWRfdHlwZT46OnZhbHVlLCAiIik7CisKKyAgdXNpbmcgaXRlcmF0b3IgPSB0eXBlbmFtZSBy
YXdfaGFzaF9tYXA6OnJhd19oYXNoX3NldDo6aXRlcmF0b3I7CisgIHVzaW5nIGNvbnN0X2l0ZXJh
dG9yID0gdHlwZW5hbWUgcmF3X2hhc2hfbWFwOjpyYXdfaGFzaF9zZXQ6OmNvbnN0X2l0ZXJhdG9y
OworCisgIHJhd19oYXNoX21hcCgpIHt9CisgIHVzaW5nIHJhd19oYXNoX21hcDo6cmF3X2hhc2hf
c2V0OjpyYXdfaGFzaF9zZXQ7CisKKyAgLy8gVGhlIGxhc3QgdHdvIHRlbXBsYXRlIHBhcmFtZXRl
cnMgZW5zdXJlIHRoYXQgYm90aCBhcmd1bWVudHMgYXJlIHJ2YWx1ZXMKKyAgLy8gKGx2YWx1ZSBh
cmd1bWVudHMgYXJlIGhhbmRsZWQgYnkgdGhlIG92ZXJsb2FkcyBiZWxvdykuIFRoaXMgaXMgbmVj
ZXNzYXJ5CisgIC8vIGZvciBzdXBwb3J0aW5nIGJpdGZpZWxkIGFyZ3VtZW50cy4KKyAgLy8KKyAg
Ly8gICB1bmlvbiB7IGludCBuIDogMTsgfTsKKyAgLy8gICBmbGF0X2hhc2hfbWFwPGludCwgaW50
PiBtOworICAvLyAgIG0uaW5zZXJ0X29yX2Fzc2lnbihuLCBuKTsKKyAgdGVtcGxhdGUgPGNsYXNz
IEsgPSBrZXlfdHlwZSwgY2xhc3MgViA9IG1hcHBlZF90eXBlLCBLKiA9IG51bGxwdHIsCisgICAg
ICAgICAgICBWKiA9IG51bGxwdHI+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0
X29yX2Fzc2lnbihrZXlfYXJnPEs+JiYgaywgViYmIHYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X29y
X2Fzc2lnbl9pbXBsKHN0ZDo6Zm9yd2FyZDxLPihrKSwgc3RkOjpmb3J3YXJkPFY+KHYpKTsKKyAg
fQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzIFYgPSBtYXBwZWRfdHlw
ZSwgSyogPSBudWxscHRyPgorICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydF9vcl9h
c3NpZ24oa2V5X2FyZzxLPiYmIGssIGNvbnN0IFYmIHYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X29y
X2Fzc2lnbl9pbXBsKHN0ZDo6Zm9yd2FyZDxLPihrKSwgdik7CisgIH0KKworICB0ZW1wbGF0ZSA8
Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBWID0gbWFwcGVkX3R5cGUsIFYqID0gbnVsbHB0cj4K
KyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnRfb3JfYXNzaWduKGNvbnN0IGtleV9h
cmc8Sz4mIGssIFYmJiB2KSB7CisgICAgcmV0dXJuIGluc2VydF9vcl9hc3NpZ25faW1wbChrLCBz
dGQ6OmZvcndhcmQ8Vj4odikpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlw
ZSwgY2xhc3MgViA9IG1hcHBlZF90eXBlPgorICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGlu
c2VydF9vcl9hc3NpZ24oY29uc3Qga2V5X2FyZzxLPiYgaywgY29uc3QgViYgdikgeworICAgIHJl
dHVybiBpbnNlcnRfb3JfYXNzaWduX2ltcGwoaywgdik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xh
c3MgSyA9IGtleV90eXBlLCBjbGFzcyBWID0gbWFwcGVkX3R5cGUsIEsqID0gbnVsbHB0ciwKKyAg
ICAgICAgICAgIFYqID0gbnVsbHB0cj4KKyAgaXRlcmF0b3IgaW5zZXJ0X29yX2Fzc2lnbihjb25z
dF9pdGVyYXRvciwga2V5X2FyZzxLPiYmIGssIFYmJiB2KSB7CisgICAgcmV0dXJuIGluc2VydF9v
cl9hc3NpZ24oc3RkOjpmb3J3YXJkPEs+KGspLCBzdGQ6OmZvcndhcmQ8Vj4odikpLmZpcnN0Owor
ICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MgViA9IG1hcHBlZF90
eXBlLCBLKiA9IG51bGxwdHI+CisgIGl0ZXJhdG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3RfaXRl
cmF0b3IsIGtleV9hcmc8Sz4mJiBrLCBjb25zdCBWJiB2KSB7CisgICAgcmV0dXJuIGluc2VydF9v
cl9hc3NpZ24oc3RkOjpmb3J3YXJkPEs+KGspLCB2KS5maXJzdDsKKyAgfQorCisgIHRlbXBsYXRl
IDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzIFYgPSBtYXBwZWRfdHlwZSwgViogPSBudWxscHRy
PgorICBpdGVyYXRvciBpbnNlcnRfb3JfYXNzaWduKGNvbnN0X2l0ZXJhdG9yLCBjb25zdCBrZXlf
YXJnPEs+JiBrLCBWJiYgdikgeworICAgIHJldHVybiBpbnNlcnRfb3JfYXNzaWduKGssIHN0ZDo6
Zm9yd2FyZDxWPih2KSkuZmlyc3Q7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90
eXBlLCBjbGFzcyBWID0gbWFwcGVkX3R5cGU+CisgIGl0ZXJhdG9yIGluc2VydF9vcl9hc3NpZ24o
Y29uc3RfaXRlcmF0b3IsIGNvbnN0IGtleV9hcmc8Sz4mIGssIGNvbnN0IFYmIHYpIHsKKyAgICBy
ZXR1cm4gaW5zZXJ0X29yX2Fzc2lnbihrLCB2KS5maXJzdDsKKyAgfQorCisgIHRlbXBsYXRlIDxj
bGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzLi4uIEFyZ3MsCisgICAgICAgICAgICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICAhc3RkOjppc19jb252ZXJ0aWJsZTxLLCBj
b25zdF9pdGVyYXRvcj46OnZhbHVlLCBpbnQ+Ojp0eXBlID0gMCwKKyAgICAgICAgICAgIEsqID0g
bnVsbHB0cj4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiB0cnlfZW1wbGFjZShrZXlfYXJn
PEs+JiYgaywgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICByZXR1cm4gdHJ5X2VtcGxhY2VfaW1wbChz
dGQ6OmZvcndhcmQ8Sz4oayksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKwor
ICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcy4uLiBBcmdzLAorICAgICAgICAg
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICAgIXN0ZDo6aXNfY29u
dmVydGlibGU8SywgY29uc3RfaXRlcmF0b3I+Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9IDA+CisgIHN0
ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gdHJ5X2VtcGxhY2UoY29uc3Qga2V5X2FyZzxLPiYgaywg
QXJncyYmLi4uIGFyZ3MpIHsKKyAgICByZXR1cm4gdHJ5X2VtcGxhY2VfaW1wbChrLCBzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlf
dHlwZSwgY2xhc3MuLi4gQXJncywgSyogPSBudWxscHRyPgorICBpdGVyYXRvciB0cnlfZW1wbGFj
ZShjb25zdF9pdGVyYXRvciwga2V5X2FyZzxLPiYmIGssIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAg
cmV0dXJuIHRyeV9lbXBsYWNlKHN0ZDo6Zm9yd2FyZDxLPihrKSwgc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKS5maXJzdDsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUs
IGNsYXNzLi4uIEFyZ3M+CisgIGl0ZXJhdG9yIHRyeV9lbXBsYWNlKGNvbnN0X2l0ZXJhdG9yLCBj
b25zdCBrZXlfYXJnPEs+JiBrLCBBcmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiB0cnlfZW1w
bGFjZShrLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pLmZpcnN0OworICB9CisKKyAgdGVt
cGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MgUCA9IFBvbGljeT4KKyAgTWFwcGVkUmVm
ZXJlbmNlPFA+IGF0KGNvbnN0IGtleV9hcmc8Sz4mIGtleSkgeworICAgIGF1dG8gaXQgPSB0aGlz
LT5maW5kKGtleSk7CisgICAgaWYgKGl0ID09IHRoaXMtPmVuZCgpKSBzdGQ6OmFib3J0KCk7Cisg
ICAgcmV0dXJuIFBvbGljeTo6dmFsdWUoJippdCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3Mg
SyA9IGtleV90eXBlLCBjbGFzcyBQID0gUG9saWN5PgorICBNYXBwZWRDb25zdFJlZmVyZW5jZTxQ
PiBhdChjb25zdCBrZXlfYXJnPEs+JiBrZXkpIGNvbnN0IHsKKyAgICBhdXRvIGl0ID0gdGhpcy0+
ZmluZChrZXkpOworICAgIGlmIChpdCA9PSB0aGlzLT5lbmQoKSkgc3RkOjphYm9ydCgpOworICAg
IHJldHVybiBQb2xpY3k6OnZhbHVlKCYqaXQpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsg
PSBrZXlfdHlwZSwgY2xhc3MgUCA9IFBvbGljeSwgSyogPSBudWxscHRyPgorICBNYXBwZWRSZWZl
cmVuY2U8UD4gb3BlcmF0b3JbXShrZXlfYXJnPEs+JiYga2V5KSB7CisgICAgcmV0dXJuIFBvbGlj
eTo6dmFsdWUoJip0cnlfZW1wbGFjZShzdGQ6OmZvcndhcmQ8Sz4oa2V5KSkuZmlyc3QpOworICB9
CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MgUCA9IFBvbGljeT4KKyAg
TWFwcGVkUmVmZXJlbmNlPFA+IG9wZXJhdG9yW10oY29uc3Qga2V5X2FyZzxLPiYga2V5KSB7Cisg
ICAgcmV0dXJuIFBvbGljeTo6dmFsdWUoJip0cnlfZW1wbGFjZShrZXkpLmZpcnN0KTsKKyAgfQor
CisgcHJpdmF0ZToKKyAgdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+CisgIHN0ZDo6cGFpcjxp
dGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fzc2lnbl9pbXBsKEsmJiBrLCBWJiYgdikgeworICAg
IGF1dG8gcmVzID0gdGhpcy0+ZmluZF9vcl9wcmVwYXJlX2luc2VydChrKTsKKyAgICBpZiAocmVz
LnNlY29uZCkKKyAgICAgIHRoaXMtPmVtcGxhY2VfYXQocmVzLmZpcnN0LCBzdGQ6OmZvcndhcmQ8
Sz4oayksIHN0ZDo6Zm9yd2FyZDxWPih2KSk7CisgICAgZWxzZQorICAgICAgUG9saWN5Ojp2YWx1
ZSgmKnRoaXMtPml0ZXJhdG9yX2F0KHJlcy5maXJzdCkpID0gc3RkOjpmb3J3YXJkPFY+KHYpOwor
ICAgIHJldHVybiB7dGhpcy0+aXRlcmF0b3JfYXQocmVzLmZpcnN0KSwgcmVzLnNlY29uZH07Cisg
IH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcy4uLiBBcmdzPgorICBz
dGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHRyeV9lbXBsYWNlX2ltcGwoSyYmIGssIEFyZ3MmJi4u
LiBhcmdzKSB7CisgICAgYXV0byByZXMgPSB0aGlzLT5maW5kX29yX3ByZXBhcmVfaW5zZXJ0KGsp
OworICAgIGlmIChyZXMuc2Vjb25kKQorICAgICAgdGhpcy0+ZW1wbGFjZV9hdChyZXMuZmlyc3Qs
IHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpm
b3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2FyZDxLPihrKSksCisgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsK
KyAgICByZXR1cm4ge3RoaXMtPml0ZXJhdG9yX2F0KHJlcy5maXJzdCksIHJlcy5zZWNvbmR9Owor
ICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1l
c3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1JBV19IQVNI
X01BUF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3Nl
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTAxNTMxMjlmZDFlNmViZTc1MTMwMDllYTg0MjNmZGVjNDVlMzYzNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MKQEAgLTAsMCAr
MSw0NSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5oIgorCisjaW5jbHVkZSA8
Y3N0ZGRlZj4KKworI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK2NvbnN0ZXhwciBzaXplX3Qg
R3JvdXA6OmtXaWR0aDsKKworLy8gUmV0dXJucyAicmFuZG9tIiBzZWVkLgoraW5saW5lIHNpemVf
dCBSYW5kb21TZWVkKCkgeworI2lmIEFCU0xfSEFWRV9USFJFQURfTE9DQUwKKyAgc3RhdGljIHRo
cmVhZF9sb2NhbCBzaXplX3QgY291bnRlciA9IDA7CisgIHNpemVfdCB2YWx1ZSA9ICsrY291bnRl
cjsKKyNlbHNlICAgLy8gQUJTTF9IQVZFX1RIUkVBRF9MT0NBTAorICBzdGF0aWMgc3RkOjphdG9t
aWM8c2l6ZV90PiBjb3VudGVyOworICBzaXplX3QgdmFsdWUgPSBjb3VudGVyLmZldGNoX2FkZCgx
LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyNlbmRpZiAgLy8gQUJTTF9IQVZFX1RIUkVB
RF9MT0NBTAorICByZXR1cm4gdmFsdWUgXiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PigmY291bnRlcikpOworfQorCitib29sIFNob3VsZEluc2VydEJhY2t3
YXJkcyhzaXplX3QgaGFzaCwgY3RybF90KiBjdHJsKSB7CisgIC8vIFRvIGF2b2lkIHByb2JsZW1z
IHdpdGggd2VhayBoYXNoZXMgYW5kIHNpbmdsZSBiaXQgdGVzdHMsIHdlIHVzZSAlIDEzLgorICAv
LyBUT0RPKGtmbSxzYmVuemEpOiByZXZpc2l0IGFmdGVyIHdlIGRvIHVuY29uZGl0aW9uYWwgbWl4
aW5nCisgIHJldHVybiAoSDEoaGFzaCwgY3RybCkgXiBSYW5kb21TZWVkKCkpICUgMTMgPiA2Owor
fQorCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcw
ZGE5MGY3OWE0ZmM2M2E5Njc2NTgyNzI3Y2ZlY2M3ZWQ4YzJiZTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgKQEAgLTAsMCArMSwxOTE1
IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIEFuIG9w
ZW4tYWRkcmVzc2luZworLy8gaGFzaHRhYmxlIHdpdGggcXVhZHJhdGljIHByb2JpbmcuCisvLwor
Ly8gVGhpcyBpcyBhIGxvdyBsZXZlbCBoYXNodGFibGUgb24gdG9wIG9mIHdoaWNoIGRpZmZlcmVu
dCBpbnRlcmZhY2VzIGNhbiBiZQorLy8gaW1wbGVtZW50ZWQsIGxpa2UgZmxhdF9oYXNoX3NldCwg
bm9kZV9oYXNoX3NldCwgc3RyaW5nX2hhc2hfc2V0LCBldGMuCisvLworLy8gVGhlIHRhYmxlIGlu
dGVyZmFjZSBpcyBzaW1pbGFyIHRvIHRoYXQgb2Ygc3RkOjp1bm9yZGVyZWRfc2V0LiBOb3RhYmxl
CisvLyBkaWZmZXJlbmNlcyBhcmUgdGhhdCBtb3N0IG1lbWJlciBmdW5jdGlvbnMgc3VwcG9ydCBo
ZXRlcm9nZW5lb3VzIGtleXMgd2hlbgorLy8gQk9USCB0aGUgaGFzaCBhbmQgZXEgZnVuY3Rpb25z
IGFyZSBtYXJrZWQgYXMgdHJhbnNwYXJlbnQuIFRoZXkgZG8gc28gYnkKKy8vIHByb3ZpZGluZyBh
IHR5cGVkZWYgY2FsbGVkIGBpc190cmFuc3BhcmVudGAuCisvLworLy8gV2hlbiBoZXRlcm9nZW5l
b3VzIGxvb2t1cCBpcyBlbmFibGVkLCBmdW5jdGlvbnMgdGhhdCB0YWtlIGtleV90eXBlIGFjdCBh
cyBpZgorLy8gdGhleSBoYXZlIGFuIG92ZXJsb2FkIHNldCBsaWtlOgorLy8KKy8vICAgaXRlcmF0
b3IgZmluZChjb25zdCBrZXlfdHlwZSYga2V5KTsKKy8vICAgdGVtcGxhdGUgPGNsYXNzIEs+Cisv
LyAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgSyYga2V5KTsKKy8vCisvLyAgIHNpemVfdHlwZSBlcmFz
ZShjb25zdCBrZXlfdHlwZSYga2V5KTsKKy8vICAgdGVtcGxhdGUgPGNsYXNzIEs+CisvLyAgIHNp
emVfdHlwZSBlcmFzZShjb25zdCBLJiBrZXkpOworLy8KKy8vICAgc3RkOjpwYWlyPGl0ZXJhdG9y
LCBpdGVyYXRvcj4gZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUmIGtleSk7CisvLyAgIHRlbXBs
YXRlIDxjbGFzcyBLPgorLy8gICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGl0ZXJhdG9yPiBlcXVhbF9y
YW5nZShjb25zdCBLJiBrZXkpOworLy8KKy8vIFdoZW4gaGV0ZXJvZ2VuZW91cyBsb29rdXAgaXMg
ZGlzYWJsZWQsIG9ubHkgdGhlIGV4cGxpY2l0IGBrZXlfdHlwZWAgb3ZlcmxvYWRzCisvLyBleGlz
dC4KKy8vCisvLyBmaW5kKCkgYWxzbyBzdXBwb3J0cyBwYXNzaW5nIHRoZSBoYXNoIGV4cGxpY2l0
bHk6CisvLworLy8gICBpdGVyYXRvciBmaW5kKGNvbnN0IGtleV90eXBlJiBrZXksIHNpemVfdCBo
YXNoKTsKKy8vICAgdGVtcGxhdGUgPGNsYXNzIFU+CisvLyAgIGl0ZXJhdG9yIGZpbmQoY29uc3Qg
VSYga2V5LCBzaXplX3QgaGFzaCk7CisvLworLy8gSW4gYWRkaXRpb24gdGhlIHBvaW50ZXIgdG8g
ZWxlbWVudCBhbmQgaXRlcmF0b3Igc3RhYmlsaXR5IGd1YXJhbnRlZXMgYXJlCisvLyB3ZWFrZXI6
IGFsbCBpdGVyYXRvcnMgYW5kIHBvaW50ZXJzIGFyZSBpbnZhbGlkYXRlZCBhZnRlciBhIG5ldyBl
bGVtZW50IGlzCisvLyBpbnNlcnRlZC4KKy8vCisvLyBJTVBMRU1FTlRBVElPTiBERVRBSUxTCisv
LworLy8gVGhlIHRhYmxlIHN0b3JlcyBlbGVtZW50cyBpbmxpbmUgaW4gYSBzbG90IGFycmF5LiBJ
biBhZGRpdGlvbiB0byB0aGUgc2xvdAorLy8gYXJyYXkgdGhlIHRhYmxlIG1haW50YWlucyBzb21l
IGNvbnRyb2wgc3RhdGUgcGVyIHNsb3QuIFRoZSBleHRyYSBzdGF0ZSBpcyBvbmUKKy8vIGJ5dGUg
cGVyIHNsb3QgYW5kIHN0b3JlcyBlbXB0eSBvciBkZWxldGVkIG1hcmtzLCBvciBhbHRlcm5hdGl2
ZWx5IDcgYml0cyBmcm9tCisvLyB0aGUgaGFzaCBvZiBhbiBvY2N1cGllZCBzbG90LiBUaGUgdGFi
bGUgaXMgc3BsaXQgaW50byBsb2dpY2FsIGdyb3VwcyBvZgorLy8gc2xvdHMsIGxpa2Ugc286Cisv
LworLy8gICAgICBHcm91cCAxICAgICAgICAgR3JvdXAgMiAgICAgICAgR3JvdXAgMworLy8gKy0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKworLy8gfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfAorLy8gKy0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKworLy8KKy8vIE9uIGxvb2t1
cCB0aGUgaGFzaCBpcyBzcGxpdCBpbnRvIHR3byBwYXJ0czoKKy8vIC0gSDI6IDcgYml0cyAodGhv
c2Ugc3RvcmVkIGluIHRoZSBjb250cm9sIGJ5dGVzKQorLy8gLSBIMTogdGhlIHJlc3Qgb2YgdGhl
IGJpdHMKKy8vIFRoZSBncm91cHMgYXJlIHByb2JlZCB1c2luZyBIMS4gRm9yIGVhY2ggZ3JvdXAg
dGhlIHNsb3RzIGFyZSBtYXRjaGVkIHRvIEgyIGluCisvLyBwYXJhbGxlbC4gQmVjYXVzZSBIMiBp
cyA3IGJpdHMgKDEyOCBzdGF0ZXMpIGFuZCB0aGUgbnVtYmVyIG9mIHNsb3RzIHBlciBncm91cAor
Ly8gaXMgbG93ICg4IG9yIDE2KSBpbiBhbG1vc3QgYWxsIGNhc2VzIGEgbWF0Y2ggaW4gSDIgaXMg
YWxzbyBhIGxvb2t1cCBoaXQuCisvLworLy8gT24gaW5zZXJ0LCBvbmNlIHRoZSByaWdodCBncm91
cCBpcyBmb3VuZCAoYXMgaW4gbG9va3VwKSwgaXRzIHNsb3RzIGFyZQorLy8gZmlsbGVkIGluIG9y
ZGVyLgorLy8KKy8vIE9uIGVyYXNlIGEgc2xvdCBpcyBjbGVhcmVkLiBJbiBjYXNlIHRoZSBncm91
cCBkaWQgbm90IGhhdmUgYW55IGVtcHR5IHNsb3RzCisvLyBiZWZvcmUgdGhlIGVyYXNlLCB0aGUg
ZXJhc2VkIHNsb3QgaXMgbWFya2VkIGFzIGRlbGV0ZWQuCisvLworLy8gR3JvdXBzIHdpdGhvdXQg
ZW1wdHkgc2xvdHMgKGJ1dCBtYXliZSB3aXRoIGRlbGV0ZWQgc2xvdHMpIGV4dGVuZCB0aGUgcHJv
YmUKKy8vIHNlcXVlbmNlLiBUaGUgcHJvYmluZyBhbGdvcml0aG0gaXMgcXVhZHJhdGljLiBHaXZl
biBOIHRoZSBudW1iZXIgb2YgZ3JvdXBzLAorLy8gdGhlIHByb2JpbmcgZnVuY3Rpb24gZm9yIHRo
ZSBpJ3RoIHByb2JlIGlzOgorLy8KKy8vICAgUCgwKSA9IEgxICUgTgorLy8KKy8vICAgUChpKSA9
IChQKGkgLSAxKSArIGkpICUgTgorLy8KKy8vIFRoaXMgcHJvYmluZyBmdW5jdGlvbiBndWFyYW50
ZWVzIHRoYXQgYWZ0ZXIgTiBwcm9iZXMsIGFsbCB0aGUgZ3JvdXBzIG9mIHRoZQorLy8gdGFibGUg
d2lsbCBiZSBwcm9iZWQgZXhhY3RseSBvbmNlLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lO
VEVSTkFMX1JBV19IQVNIX1NFVF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9S
QVdfSEFTSF9TRVRfSF8KKworI2lmbmRlZiBTV0lTU1RBQkxFX0hBVkVfU1NFMgorI2lmZGVmIF9f
U1NFMl9fCisjZGVmaW5lIFNXSVNTVEFCTEVfSEFWRV9TU0UyIDEKKyNlbHNlCisjZGVmaW5lIFNX
SVNTVEFCTEVfSEFWRV9TU0UyIDAKKyNlbmRpZgorI2VuZGlmCisKKyNpZm5kZWYgU1dJU1NUQUJM
RV9IQVZFX1NTU0UzCisjaWZkZWYgX19TU1NFM19fCisjZGVmaW5lIFNXSVNTVEFCTEVfSEFWRV9T
U1NFMyAxCisjZWxzZQorI2RlZmluZSBTV0lTU1RBQkxFX0hBVkVfU1NTRTMgMAorI2VuZGlmCisj
ZW5kaWYKKworI2lmIFNXSVNTVEFCTEVfSEFWRV9TU1NFMyAmJiAhU1dJU1NUQUJMRV9IQVZFX1NT
RTIKKyNlcnJvciAiQmFkIGNvbmZpZ3VyYXRpb24hIgorI2VuZGlmCisKKyNpZiBTV0lTU1RBQkxF
X0hBVkVfU1NFMgorI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxh
bGdvcml0aG0+CisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRl
IDxjc3RyaW5nPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNs
dWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+Cisj
aW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmgi
CisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2VuZGlhbi5oIgorI2luY2x1ZGUgImFic2wv
YmFzZS9wb3J0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29tcHJlc3Nl
ZF90dXBsZS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9t
ZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90
cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVi
dWdfaG9va3MuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXQuaCIK
KyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlw
ZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAi
YWJzbC91dGlsaXR5L3V0aWxpdHkuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNv
bnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxzaXplX3QgV2lkdGg+CitjbGFzcyBwcm9i
ZV9zZXEgeworIHB1YmxpYzoKKyAgcHJvYmVfc2VxKHNpemVfdCBoYXNoLCBzaXplX3QgbWFzaykg
eworICAgIGFzc2VydCgoKG1hc2sgKyAxKSAmIG1hc2spID09IDAgJiYgIm5vdCBhIG1hc2siKTsK
KyAgICBtYXNrXyA9IG1hc2s7CisgICAgb2Zmc2V0XyA9IGhhc2ggJiBtYXNrXzsKKyAgfQorICBz
aXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0XzsgfQorICBzaXplX3Qgb2Zmc2V0
KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiAob2Zmc2V0XyArIGkpICYgbWFza187IH0KKworICB2
b2lkIG5leHQoKSB7CisgICAgaW5kZXhfICs9IFdpZHRoOworICAgIG9mZnNldF8gKz0gaW5kZXhf
OworICAgIG9mZnNldF8gJj0gbWFza187CisgIH0KKyAgLy8gMC1iYXNlZCBwcm9iZSBpbmRleC4g
VGhlIGktdGggcHJvYmUgaW4gdGhlIHByb2JlIHNlcXVlbmNlLgorICBzaXplX3QgaW5kZXgoKSBj
b25zdCB7IHJldHVybiBpbmRleF87IH0KKworIHByaXZhdGU6CisgIHNpemVfdCBtYXNrXzsKKyAg
c2l6ZV90IG9mZnNldF87CisgIHNpemVfdCBpbmRleF8gPSAwOworfTsKKwordGVtcGxhdGUgPGNs
YXNzIENvbnRhaW5lcktleSwgY2xhc3MgSGFzaCwgY2xhc3MgRXE+CitzdHJ1Y3QgUmVxdWlyZVVz
YWJsZUtleSB7CisgIHRlbXBsYXRlIDxjbGFzcyBQYXNzZWRLZXksIGNsYXNzLi4uIEFyZ3M+Cisg
IHN0ZDo6cGFpcjwKKyAgICAgIGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxjb25zdCBIYXNoJj4oKShz
dGQ6OmRlY2x2YWw8Y29uc3QgUGFzc2VkS2V5Jj4oKSkpLAorICAgICAgZGVjbHR5cGUoc3RkOjpk
ZWNsdmFsPGNvbnN0IEVxJj4oKShzdGQ6OmRlY2x2YWw8Y29uc3QgQ29udGFpbmVyS2V5Jj4oKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpkZWNsdmFsPGNv
bnN0IFBhc3NlZEtleSY+KCkpKT4qCisgIG9wZXJhdG9yKCkoY29uc3QgUGFzc2VkS2V5JiwgY29u
c3QgQXJncyYuLi4pIGNvbnN0OworfTsKKwordGVtcGxhdGUgPGNsYXNzIEUsIGNsYXNzIFBvbGlj
eSwgY2xhc3MgSGFzaCwgY2xhc3MgRXEsIGNsYXNzLi4uIFRzPgorc3RydWN0IElzRGVjb21wb3Nh
YmxlIDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5LCBjbGFz
cyBIYXNoLCBjbGFzcyBFcSwgY2xhc3MuLi4gVHM+CitzdHJ1Y3QgSXNEZWNvbXBvc2FibGU8Cisg
ICAgYWJzbDo6dm9pZF90PGRlY2x0eXBlKAorICAgICAgICBQb2xpY3k6OmFwcGx5KFJlcXVpcmVV
c2FibGVLZXk8dHlwZW5hbWUgUG9saWN5OjprZXlfdHlwZSwgSGFzaCwgRXE+KCksCisgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpkZWNsdmFsPFRzPigpLi4uKSk+LAorICAgIFBvbGljeSwgSGFz
aCwgRXEsIFRzLi4uPiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MsIGNs
YXNzID0gdm9pZD4KK3N0cnVjdCBJc1RyYW5zcGFyZW50IDogc3RkOjpmYWxzZV90eXBlIHt9Owor
dGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgSXNUcmFuc3BhcmVudDxULCBhYnNsOjp2b2lkX3Q8
dHlwZW5hbWUgVDo6aXNfdHJhbnNwYXJlbnQ+PgorICAgIDogc3RkOjp0cnVlX3R5cGUge307CisK
Ky8vIFRPRE8oYWxraXMpOiBTd2l0Y2ggdG8gc3RkOjppc19ub3Rocm93X3N3YXBwYWJsZSB3aGVu
IGdjYy9jbGFuZyBzdXBwb3J0cyBpdC4KK3RlbXBsYXRlIDxjbGFzcyBUPgorY29uc3RleHByIGJv
b2wgSXNOb1Rocm93U3dhcHBhYmxlKCkgeworICB1c2luZyBzdGQ6OnN3YXA7CisgIHJldHVybiBu
b2V4Y2VwdChzd2FwKHN0ZDo6ZGVjbHZhbDxUJj4oKSwgc3RkOjpkZWNsdmFsPFQmPigpKSk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW50IFRyYWlsaW5nWmVyb3MoVCB4KSB7CisgIHJl
dHVybiBzaXplb2YoVCkgPT0gOCA/IGJhc2VfaW50ZXJuYWw6OkNvdW50VHJhaWxpbmdaZXJvc05v
blplcm82NCh4KQorICAgICAgICAgICAgICAgICAgICAgICAgOiBiYXNlX2ludGVybmFsOjpDb3Vu
dFRyYWlsaW5nWmVyb3NOb25aZXJvMzIoeCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
aW50IExlYWRpbmdaZXJvcyhUIHgpIHsKKyAgcmV0dXJuIHNpemVvZihUKSA9PSA4ID8gYmFzZV9p
bnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NCh4KQorICAgICAgICAgICAgICAgICAgICAgICAg
OiBiYXNlX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczMyKHgpOworfQorCisvLyBBbiBhYnN0
cmFjdGlvbiBvdmVyIGEgYml0bWFzay4gSXQgcHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gaXRlcmF0
ZSB0aHJvdWdoIHRoZQorLy8gaW5kZXhlcyBvZiB0aGUgc2V0IGJpdHMgb2YgYSBiaXRtYXNrLiAg
V2hlbiBTaGlmdD0wIChwbGF0Zm9ybXMgd2l0aCBTU0UpLAorLy8gdGhpcyBpcyBhIHRydWUgYml0
bWFzay4gIE9uIG5vbi1TU0UsIHBsYXRmb3JtcyB0aGUgYXJpdGhlbWF0aWMgdXNlZCB0bworLy8g
ZW11bGF0ZSB0aGUgU1NFIGJlaGF2aW9yIHdvcmtzIGluIGJ5dGVzIChTaGlmdD0zKSBhbmQgbGVh
dmVzIGVhY2ggYnl0ZXMgYXMKKy8vIGVpdGhlciAweDAwIG9yIDB4ODAuCisvLworLy8gRm9yIGV4
YW1wbGU6CisvLyAgIGZvciAoaW50IGkgOiBCaXRNYXNrPHVpbnQzMl90LCAxNj4oMHg1KSkgLT4g
eWllbGRzIDAsIDIKKy8vICAgZm9yIChpbnQgaSA6IEJpdE1hc2s8dWludDY0X3QsIDgsIDM+KDB4
MDAwMDAwMDA4MDgwMDAwMCkpIC0+IHlpZWxkcyAyLCAzCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgaW50
IFNpZ25pZmljYW50Qml0cywgaW50IFNoaWZ0ID0gMD4KK2NsYXNzIEJpdE1hc2sgeworICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8VD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3Nl
cnQoU2hpZnQgPT0gMCB8fCBTaGlmdCA9PSAzLCAiIik7CisKKyBwdWJsaWM6CisgIC8vIFRoZXNl
IGFyZSB1c2VmdWwgZm9yIHVuaXQgdGVzdHMgKGd1bml0KS4KKyAgdXNpbmcgdmFsdWVfdHlwZSA9
IGludDsKKyAgdXNpbmcgaXRlcmF0b3IgPSBCaXRNYXNrOworICB1c2luZyBjb25zdF9pdGVyYXRv
ciA9IEJpdE1hc2s7CisKKyAgZXhwbGljaXQgQml0TWFzayhUIG1hc2spIDogbWFza18obWFzaykg
e30KKyAgQml0TWFzayYgb3BlcmF0b3IrKygpIHsKKyAgICBtYXNrXyAmPSAobWFza18gLSAxKTsK
KyAgICByZXR1cm4gKnRoaXM7CisgIH0KKyAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuIG1hc2tfICE9IDA7IH0KKyAgaW50IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJu
IExvd2VzdEJpdFNldCgpOyB9CisgIGludCBMb3dlc3RCaXRTZXQoKSBjb25zdCB7CisgICAgcmV0
dXJuIGNvbnRhaW5lcl9pbnRlcm5hbDo6VHJhaWxpbmdaZXJvcyhtYXNrXykgPj4gU2hpZnQ7Cisg
IH0KKyAgaW50IEhpZ2hlc3RCaXRTZXQoKSBjb25zdCB7CisgICAgcmV0dXJuIChzaXplb2YoVCkg
KiBDSEFSX0JJVCAtIGNvbnRhaW5lcl9pbnRlcm5hbDo6TGVhZGluZ1plcm9zKG1hc2tfKSAtCisg
ICAgICAgICAgICAxKSA+PgorICAgICAgICAgICBTaGlmdDsKKyAgfQorCisgIEJpdE1hc2sgYmVn
aW4oKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICBCaXRNYXNrIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIEJpdE1hc2soMCk7IH0KKworICBpbnQgVHJhaWxpbmdaZXJvcygpIGNvbnN0IHsKKyAgICBy
ZXR1cm4gY29udGFpbmVyX2ludGVybmFsOjpUcmFpbGluZ1plcm9zKG1hc2tfKSA+PiBTaGlmdDsK
KyAgfQorCisgIGludCBMZWFkaW5nWmVyb3MoKSBjb25zdCB7CisgICAgY29uc3RleHByIGludCB0
b3RhbF9zaWduaWZpY2FudF9iaXRzID0gU2lnbmlmaWNhbnRCaXRzIDw8IFNoaWZ0OworICAgIGNv
bnN0ZXhwciBpbnQgZXh0cmFfYml0cyA9IHNpemVvZihUKSAqIDggLSB0b3RhbF9zaWduaWZpY2Fu
dF9iaXRzOworICAgIHJldHVybiBjb250YWluZXJfaW50ZXJuYWw6OkxlYWRpbmdaZXJvcyhtYXNr
XyA8PCBleHRyYV9iaXRzKSA+PiBTaGlmdDsKKyAgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBCaXRNYXNrJiBhLCBjb25zdCBCaXRNYXNrJiBiKSB7CisgICAg
cmV0dXJuIGEubWFza18gPT0gYi5tYXNrXzsKKyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEJpdE1hc2smIGEsIGNvbnN0IEJpdE1hc2smIGIpIHsKKyAgICByZXR1cm4gYS5tYXNr
XyAhPSBiLm1hc2tfOworICB9CisKKyAgVCBtYXNrXzsKK307CisKK3VzaW5nIGN0cmxfdCA9IHNp
Z25lZCBjaGFyOwordXNpbmcgaDJfdCA9IHVpbnQ4X3Q7CisKKy8vIFRoZSB2YWx1ZXMgaGVyZSBh
cmUgc2VsZWN0ZWQgZm9yIG1heGltdW0gcGVyZm9ybWFuY2UuIFNlZSB0aGUgc3RhdGljIGFzc2Vy
dHMKKy8vIGJlbG93IGZvciBkZXRhaWxzLgorZW51bSBDdHJsIDogY3RybF90IHsKKyAga0VtcHR5
ID0gLTEyOCwgICAvLyAwYjEwMDAwMDAwCisgIGtEZWxldGVkID0gLTIsICAgLy8gMGIxMTExMTEx
MAorICBrU2VudGluZWwgPSAtMSwgIC8vIDBiMTExMTExMTEKK307CitzdGF0aWNfYXNzZXJ0KAor
ICAgIGtFbXB0eSAmIGtEZWxldGVkICYga1NlbnRpbmVsICYgMHg4MCwKKyAgICAiU3BlY2lhbCBt
YXJrZXJzIG5lZWQgdG8gaGF2ZSB0aGUgTVNCIHRvIG1ha2UgY2hlY2tpbmcgZm9yIHRoZW0gZWZm
aWNpZW50Iik7CitzdGF0aWNfYXNzZXJ0KGtFbXB0eSA8IGtTZW50aW5lbCAmJiBrRGVsZXRlZCA8
IGtTZW50aW5lbCwKKyAgICAgICAgICAgICAgImtFbXB0eSBhbmQga0RlbGV0ZWQgbXVzdCBiZSBz
bWFsbGVyIHRoYW4ga1NlbnRpbmVsIHRvIG1ha2UgdGhlICIKKyAgICAgICAgICAgICAgIlNJTUQg
dGVzdCBvZiBJc0VtcHR5T3JEZWxldGVkKCkgZWZmaWNpZW50Iik7CitzdGF0aWNfYXNzZXJ0KGtT
ZW50aW5lbCA9PSAtMSwKKyAgICAgICAgICAgICAgImtTZW50aW5lbCBtdXN0IGJlIC0xIHRvIGVs
aWRlIGxvYWRpbmcgaXQgZnJvbSBtZW1vcnkgaW50byBTSU1EICIKKyAgICAgICAgICAgICAgInJl
Z2lzdGVycyAocGNtcGVxZCB4bW0sIHhtbSkiKTsKK3N0YXRpY19hc3NlcnQoa0VtcHR5ID09IC0x
MjgsCisgICAgICAgICAgICAgICJrRW1wdHkgbXVzdCBiZSAtMTI4IHRvIG1ha2UgdGhlIFNJTUQg
Y2hlY2sgZm9yIGl0cyAiCisgICAgICAgICAgICAgICJleGlzdGVuY2UgZWZmaWNpZW50IChwc2ln
bmIgeG1tLCB4bW0pIik7CitzdGF0aWNfYXNzZXJ0KH5rRW1wdHkgJiB+a0RlbGV0ZWQgJiBrU2Vu
dGluZWwgJiAweDdGLAorICAgICAgICAgICAgICAia0VtcHR5IGFuZCBrRGVsZXRlZCBtdXN0IHNo
YXJlIGFuIHVuc2V0IGJpdCB0aGF0IGlzIG5vdCBzaGFyZWQgIgorICAgICAgICAgICAgICAiYnkg
a1NlbnRpbmVsIHRvIG1ha2UgdGhlIHNjYWxhciB0ZXN0IGZvciBNYXRjaEVtcHR5T3JEZWxldGVk
KCkgIgorICAgICAgICAgICAgICAiZWZmaWNpZW50Iik7CitzdGF0aWNfYXNzZXJ0KGtEZWxldGVk
ID09IC0yLAorICAgICAgICAgICAgICAia0RlbGV0ZWQgbXVzdCBiZSAtMiB0byBtYWtlIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZiAiCisgICAgICAgICAgICAgICJDb252ZXJ0U3BlY2lhbFRvRW1wdHlB
bmRGdWxsVG9EZWxldGVkIGVmZmljaWVudCIpOworCisvLyBBIHNpbmdsZSBibG9jayBvZiBlbXB0
eSBjb250cm9sIGJ5dGVzIGZvciB0YWJsZXMgd2l0aG91dCBhbnkgc2xvdHMgYWxsb2NhdGVkLgor
Ly8gVGhpcyBlbmFibGVzIHJlbW92aW5nIGEgYnJhbmNoIGluIHRoZSBob3QgcGF0aCBvZiBmaW5k
KCkuCitpbmxpbmUgY3RybF90KiBFbXB0eUdyb3VwKCkgeworICBhbGlnbmFzKDE2KSBzdGF0aWMg
Y29uc3RleHByIGN0cmxfdCBlbXB0eV9ncm91cFtdID0geworICAgICAga1NlbnRpbmVsLCBrRW1w
dHksIGtFbXB0eSwga0VtcHR5LCBrRW1wdHksIGtFbXB0eSwga0VtcHR5LCBrRW1wdHksCisgICAg
ICBrRW1wdHksICAgIGtFbXB0eSwga0VtcHR5LCBrRW1wdHksIGtFbXB0eSwga0VtcHR5LCBrRW1w
dHksIGtFbXB0eX07CisgIHJldHVybiBjb25zdF9jYXN0PGN0cmxfdCo+KGVtcHR5X2dyb3VwKTsK
K30KKworLy8gTWl4ZXMgYSByYW5kb21seSBnZW5lcmF0ZWQgcGVyLXByb2Nlc3Mgc2VlZCB3aXRo
IGBoYXNoYCBhbmQgYGN0cmxgIHRvCisvLyByYW5kb21pemUgaW5zZXJ0aW9uIG9yZGVyIHdpdGhp
biBncm91cHMuCitib29sIFNob3VsZEluc2VydEJhY2t3YXJkcyhzaXplX3QgaGFzaCwgY3RybF90
KiBjdHJsKTsKKworLy8gUmV0dXJucyBhIGhhc2ggc2VlZC4KKy8vCisvLyBUaGUgc2VlZCBjb25z
aXN0cyBvZiB0aGUgY3RybF8gcG9pbnRlciwgd2hpY2ggYWRkcyBlbm91Z2ggZW50cm9weSB0byBl
bnN1cmUKKy8vIG5vbi1kZXRlcm1pbmlzbSBvZiBpdGVyYXRpb24gb3JkZXIgaW4gbW9zdCBjYXNl
cy4KK2lubGluZSBzaXplX3QgSGFzaFNlZWQoY29uc3QgY3RybF90KiBjdHJsKSB7CisgIC8vIFRo
ZSBsb3cgYml0cyBvZiB0aGUgcG9pbnRlciBoYXZlIGxpdHRsZSBvciBubyBlbnRyb3B5IGJlY2F1
c2Ugb2YKKyAgLy8gYWxpZ25tZW50LiBXZSBzaGlmdCB0aGUgcG9pbnRlciB0byB0cnkgdG8gdXNl
IGhpZ2hlciBlbnRyb3B5IGJpdHMuIEEKKyAgLy8gZ29vZCBudW1iZXIgc2VlbXMgdG8gYmUgMTIg
Yml0cywgYmVjYXVzZSB0aGF0IGFsaWducyB3aXRoIHBhZ2Ugc2l6ZS4KKyAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjdHJsKSA+PiAxMjsKK30KKworaW5saW5lIHNpemVfdCBI
MShzaXplX3QgaGFzaCwgY29uc3QgY3RybF90KiBjdHJsKSB7CisgIHJldHVybiAoaGFzaCA+PiA3
KSBeIEhhc2hTZWVkKGN0cmwpOworfQoraW5saW5lIGN0cmxfdCBIMihzaXplX3QgaGFzaCkgeyBy
ZXR1cm4gaGFzaCAmIDB4N0Y7IH0KKworaW5saW5lIGJvb2wgSXNFbXB0eShjdHJsX3QgYykgeyBy
ZXR1cm4gYyA9PSBrRW1wdHk7IH0KK2lubGluZSBib29sIElzRnVsbChjdHJsX3QgYykgeyByZXR1
cm4gYyA+PSAwOyB9CitpbmxpbmUgYm9vbCBJc0RlbGV0ZWQoY3RybF90IGMpIHsgcmV0dXJuIGMg
PT0ga0RlbGV0ZWQ7IH0KK2lubGluZSBib29sIElzRW1wdHlPckRlbGV0ZWQoY3RybF90IGMpIHsg
cmV0dXJuIGMgPCBrU2VudGluZWw7IH0KKworI2lmIFNXSVNTVEFCTEVfSEFWRV9TU0UyCitzdHJ1
Y3QgR3JvdXAgeworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrV2lkdGggPSAxNjsgIC8vIHRo
ZSBudW1iZXIgb2Ygc2xvdHMgcGVyIGdyb3VwCisKKyAgZXhwbGljaXQgR3JvdXAoY29uc3QgY3Ry
bF90KiBwb3MpIHsKKyAgICBjdHJsID0gX21tX2xvYWR1X3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgX19tMTI4aSo+KHBvcykpOworICB9CisKKyAgLy8gUmV0dXJucyBhIGJpdG1hc2sgcmVw
cmVzZW50aW5nIHRoZSBwb3NpdGlvbnMgb2Ygc2xvdHMgdGhhdCBtYXRjaCBoYXNoLgorICBCaXRN
YXNrPHVpbnQzMl90LCBrV2lkdGg+IE1hdGNoKGgyX3QgaGFzaCkgY29uc3QgeworICAgIGF1dG8g
bWF0Y2ggPSBfbW1fc2V0MV9lcGk4KGhhc2gpOworICAgIHJldHVybiBCaXRNYXNrPHVpbnQzMl90
LCBrV2lkdGg+KAorICAgICAgICBfbW1fbW92ZW1hc2tfZXBpOChfbW1fY21wZXFfZXBpOChtYXRj
aCwgY3RybCkpKTsKKyAgfQorCisgIC8vIFJldHVybnMgYSBiaXRtYXNrIHJlcHJlc2VudGluZyB0
aGUgcG9zaXRpb25zIG9mIGVtcHR5IHNsb3RzLgorICBCaXRNYXNrPHVpbnQzMl90LCBrV2lkdGg+
IE1hdGNoRW1wdHkoKSBjb25zdCB7CisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTU0UzCisgICAgLy8g
VGhpcyBvbmx5IHdvcmtzIGJlY2F1c2Uga0VtcHR5IGlzIC0xMjguCisgICAgcmV0dXJuIEJpdE1h
c2s8dWludDMyX3QsIGtXaWR0aD4oCisgICAgICAgIF9tbV9tb3ZlbWFza19lcGk4KF9tbV9zaWdu
X2VwaTgoY3RybCwgY3RybCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIE1hdGNoKGtFbXB0eSk7Cisj
ZW5kaWYKKyAgfQorCisgIC8vIFJldHVybnMgYSBiaXRtYXNrIHJlcHJlc2VudGluZyB0aGUgcG9z
aXRpb25zIG9mIGVtcHR5IG9yIGRlbGV0ZWQgc2xvdHMuCisgIEJpdE1hc2s8dWludDMyX3QsIGtX
aWR0aD4gTWF0Y2hFbXB0eU9yRGVsZXRlZCgpIGNvbnN0IHsKKyAgICBhdXRvIHNwZWNpYWwgPSBf
bW1fc2V0MV9lcGk4KGtTZW50aW5lbCk7CisgICAgcmV0dXJuIEJpdE1hc2s8dWludDMyX3QsIGtX
aWR0aD4oCisgICAgICAgIF9tbV9tb3ZlbWFza19lcGk4KF9tbV9jbXBndF9lcGk4KHNwZWNpYWws
IGN0cmwpKSk7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdHJhaWxpbmcgZW1w
dHkgb3IgZGVsZXRlZCBlbGVtZW50cyBpbiB0aGUgZ3JvdXAuCisgIHVpbnQzMl90IENvdW50TGVh
ZGluZ0VtcHR5T3JEZWxldGVkKCkgY29uc3QgeworICAgIGF1dG8gc3BlY2lhbCA9IF9tbV9zZXQx
X2VwaTgoa1NlbnRpbmVsKTsKKyAgICByZXR1cm4gVHJhaWxpbmdaZXJvcyhfbW1fbW92ZW1hc2tf
ZXBpOChfbW1fY21wZ3RfZXBpOChzcGVjaWFsLCBjdHJsKSkgKyAxKTsKKyAgfQorCisgIHZvaWQg
Q29udmVydFNwZWNpYWxUb0VtcHR5QW5kRnVsbFRvRGVsZXRlZChjdHJsX3QqIGRzdCkgY29uc3Qg
eworICAgIGF1dG8gbXNicyA9IF9tbV9zZXQxX2VwaTgoMHg4MCk7CisgICAgYXV0byB4MTI2ID0g
X21tX3NldDFfZXBpOCgxMjYpOworI2lmIFNXSVNTVEFCTEVfSEFWRV9TU1NFMworICAgIGF1dG8g
cmVzID0gX21tX29yX3NpMTI4KF9tbV9zaHVmZmxlX2VwaTgoeDEyNiwgY3RybCksIG1zYnMpOwor
I2Vsc2UKKyAgICBhdXRvIHplcm8gPSBfbW1fc2V0emVyb19zaTEyOCgpOworICAgIGF1dG8gc3Bl
Y2lhbF9tYXNrID0gX21tX2NtcGd0X2VwaTgoemVybywgY3RybCk7CisgICAgYXV0byByZXMgPSBf
bW1fb3Jfc2kxMjgobXNicywgX21tX2FuZG5vdF9zaTEyOChzcGVjaWFsX21hc2ssIHgxMjYpKTsK
KyNlbmRpZgorICAgIF9tbV9zdG9yZXVfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpKj4o
ZHN0KSwgcmVzKTsKKyAgfQorCisgIF9fbTEyOGkgY3RybDsKK307CisjZWxzZQorc3RydWN0IEdy
b3VwIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1dpZHRoID0gODsKKworICBleHBsaWNp
dCBHcm91cChjb25zdCBjdHJsX3QqIHBvcykgOiBjdHJsKGxpdHRsZV9lbmRpYW46OkxvYWQ2NChw
b3MpKSB7fQorCisgIEJpdE1hc2s8dWludDY0X3QsIGtXaWR0aCwgMz4gTWF0Y2goaDJfdCBoYXNo
KSBjb25zdCB7CisgICAgLy8gRm9yIHRoZSB0ZWNobmlxdWUsIHNlZToKKyAgICAvLyBodHRwOi8v
Z3JhcGhpY3Muc3RhbmZvcmQuZWR1L35zZWFuZGVyL2JpdGhhY2tzLmh0bWwjI1ZhbHVlSW5Xb3Jk
CisgICAgLy8gKERldGVybWluZSBpZiBhIHdvcmQgaGFzIGEgYnl0ZSBlcXVhbCB0byBuKS4KKyAg
ICAvLworICAgIC8vIENhdmVhdDogdGhlcmUgYXJlIGZhbHNlIHBvc2l0aXZlcyBidXQ6CisgICAg
Ly8gLSB0aGV5IG9ubHkgb2NjdXIgaWYgdGhlcmUgaXMgYSByZWFsIG1hdGNoCisgICAgLy8gLSB0
aGV5IG5ldmVyIG9jY3VyIG9uIGtFbXB0eSwga0RlbGV0ZWQsIGtTZW50aW5lbAorICAgIC8vIC0g
dGhleSB3aWxsIGJlIGhhbmRsZWQgZ3JhY2VmdWxseSBieSBzdWJzZXF1ZW50IGNoZWNrcyBpbiBj
b2RlCisgICAgLy8KKyAgICAvLyBFeGFtcGxlOgorICAgIC8vICAgdiA9IDB4MTcxNjE1MTQxMzEy
MTExMAorICAgIC8vICAgaGFzaCA9IDB4MTIKKyAgICAvLyAgIHJldHZhbCA9ICh2IC0gbHNicykg
JiB+diAmIG1zYnMgPSAweDAwMDAwMDAwODA4MDAwMDAKKyAgICBjb25zdGV4cHIgdWludDY0X3Qg
bXNicyA9IDB4ODA4MDgwODA4MDgwODA4MFVMTDsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbHNi
cyA9IDB4MDEwMTAxMDEwMTAxMDEwMVVMTDsKKyAgICBhdXRvIHggPSBjdHJsIF4gKGxzYnMgKiBo
YXNoKTsKKyAgICByZXR1cm4gQml0TWFzazx1aW50NjRfdCwga1dpZHRoLCAzPigoeCAtIGxzYnMp
ICYgfnggJiBtc2JzKTsKKyAgfQorCisgIEJpdE1hc2s8dWludDY0X3QsIGtXaWR0aCwgMz4gTWF0
Y2hFbXB0eSgpIGNvbnN0IHsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbXNicyA9IDB4ODA4MDgw
ODA4MDgwODA4MFVMTDsKKyAgICByZXR1cm4gQml0TWFzazx1aW50NjRfdCwga1dpZHRoLCAzPigo
Y3RybCAmICh+Y3RybCA8PCA2KSkgJiBtc2JzKTsKKyAgfQorCisgIEJpdE1hc2s8dWludDY0X3Qs
IGtXaWR0aCwgMz4gTWF0Y2hFbXB0eU9yRGVsZXRlZCgpIGNvbnN0IHsKKyAgICBjb25zdGV4cHIg
dWludDY0X3QgbXNicyA9IDB4ODA4MDgwODA4MDgwODA4MFVMTDsKKyAgICByZXR1cm4gQml0TWFz
azx1aW50NjRfdCwga1dpZHRoLCAzPigoY3RybCAmICh+Y3RybCA8PCA3KSkgJiBtc2JzKTsKKyAg
fQorCisgIHVpbnQzMl90IENvdW50TGVhZGluZ0VtcHR5T3JEZWxldGVkKCkgY29uc3QgeworICAg
IGNvbnN0ZXhwciB1aW50NjRfdCBnYXBzID0gMHgwMEZFRkVGRUZFRkVGRUZFVUxMOworICAgIHJl
dHVybiAoVHJhaWxpbmdaZXJvcygoKH5jdHJsICYgKGN0cmwgPj4gNykpIHwgZ2FwcykgKyAxKSAr
IDcpID4+IDM7CisgIH0KKworICB2b2lkIENvbnZlcnRTcGVjaWFsVG9FbXB0eUFuZEZ1bGxUb0Rl
bGV0ZWQoY3RybF90KiBkc3QpIGNvbnN0IHsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbXNicyA9
IDB4ODA4MDgwODA4MDgwODA4MFVMTDsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbHNicyA9IDB4
MDEwMTAxMDEwMTAxMDEwMVVMTDsKKyAgICBhdXRvIHggPSBjdHJsICYgbXNiczsKKyAgICBhdXRv
IHJlcyA9ICh+eCArICh4ID4+IDcpKSAmIH5sc2JzOworICAgIGxpdHRsZV9lbmRpYW46OlN0b3Jl
NjQoZHN0LCByZXMpOworICB9CisKKyAgdWludDY0X3QgY3RybDsKK307CisjZW5kaWYgIC8vIFNX
SVNTVEFCTEVfSEFWRV9TU0UyCisKK3RlbXBsYXRlIDxjbGFzcyBQb2xpY3ksIGNsYXNzIEhhc2gs
IGNsYXNzIEVxLCBjbGFzcyBBbGxvYz4KK2NsYXNzIHJhd19oYXNoX3NldDsKKworCitpbmxpbmUg
Ym9vbCBJc1ZhbGlkQ2FwYWNpdHkoc2l6ZV90IG4pIHsKKyAgcmV0dXJuICgobiArIDEpICYgbikg
PT0gMCAmJiBuID49IEdyb3VwOjprV2lkdGggLSAxOworfQorCisvLyBQUkVDT05ESVRJT046Cisv
LyAgIElzVmFsaWRDYXBhY2l0eShjYXBhY2l0eSkKKy8vICAgY3RybFtjYXBhY2l0eV0gPT0ga1Nl
bnRpbmVsCisvLyAgIGN0cmxbaV0gIT0ga1NlbnRpbmVsIGZvciBhbGwgaSA8IGNhcGFjaXR5Cisv
LyBBcHBsaWVzIG1hcHBpbmcgZm9yIGV2ZXJ5IGJ5dGUgaW4gY3RybDoKKy8vICAgREVMRVRFRCAt
PiBFTVBUWQorLy8gICBFTVBUWSAtPiBFTVBUWQorLy8gICBGVUxMIC0+IERFTEVURUQKK2lubGlu
ZSB2b2lkIENvbnZlcnREZWxldGVkVG9FbXB0eUFuZEZ1bGxUb0RlbGV0ZWQoCisgICAgY3RybF90
KiBjdHJsLCBzaXplX3QgY2FwYWNpdHkpIHsKKyAgYXNzZXJ0KGN0cmxbY2FwYWNpdHldID09IGtT
ZW50aW5lbCk7CisgIGFzc2VydChJc1ZhbGlkQ2FwYWNpdHkoY2FwYWNpdHkpKTsKKyAgZm9yIChj
dHJsX3QqIHBvcyA9IGN0cmw7IHBvcyAhPSBjdHJsICsgY2FwYWNpdHkgKyAxOyBwb3MgKz0gR3Jv
dXA6OmtXaWR0aCkgeworICAgIEdyb3Vwe3Bvc30uQ29udmVydFNwZWNpYWxUb0VtcHR5QW5kRnVs
bFRvRGVsZXRlZChwb3MpOworICB9CisgIC8vIENvcHkgdGhlIGNsb25lZCBjdHJsIGJ5dGVzLgor
ICBzdGQ6Om1lbWNweShjdHJsICsgY2FwYWNpdHkgKyAxLCBjdHJsLCBHcm91cDo6a1dpZHRoKTsK
KyAgY3RybFtjYXBhY2l0eV0gPSBrU2VudGluZWw7Cit9CisKKy8vIFJvdW5kcyB1cCB0aGUgY2Fw
YWNpdHkgdG8gdGhlIG5leHQgcG93ZXIgb2YgMiBtaW51cyAxIGFuZCBlbnN1cmVzIGl0IGlzCisv
LyBncmVhdGVyIG9yIGVxdWFsIHRvIEdyb3VwOjprV2lkdGggLSAxLgoraW5saW5lIHNpemVfdCBO
b3JtYWxpemVDYXBhY2l0eShzaXplX3QgbikgeworICBjb25zdGV4cHIgc2l6ZV90IGtNaW5DYXBh
Y2l0eSA9IEdyb3VwOjprV2lkdGggLSAxOworICByZXR1cm4gbiA8PSBrTWluQ2FwYWNpdHkKKyAg
ICAgICAgICAgICA/IGtNaW5DYXBhY2l0eQorICAgICAgICAgICAgIDogc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSA+PiBMZWFkaW5nWmVyb3Mobik7Cit9CisKKy8vIFRoZSBub2Rl
X2hhbmRsZSBjb25jZXB0IGZyb20gQysrMTcuCisvLyBXZSBzcGVjaWFsaXplIG5vZGVfaGFuZGxl
IGZvciBzZXRzIGFuZCBtYXBzLiBub2RlX2hhbmRsZV9iYXNlIGhvbGRzIHRoZQorLy8gY29tbW9u
IEFQSSBvZiBib3RoLgordGVtcGxhdGUgPHR5cGVuYW1lIFBvbGljeSwgdHlwZW5hbWUgQWxsb2M+
CitjbGFzcyBub2RlX2hhbmRsZV9iYXNlIHsKKyBwcm90ZWN0ZWQ6CisgIHVzaW5nIFBvbGljeVRy
YWl0cyA9IGhhc2hfcG9saWN5X3RyYWl0czxQb2xpY3k+OworICB1c2luZyBzbG90X3R5cGUgPSB0
eXBlbmFtZSBQb2xpY3lUcmFpdHM6OnNsb3RfdHlwZTsKKworIHB1YmxpYzoKKyAgdXNpbmcgYWxs
b2NhdG9yX3R5cGUgPSBBbGxvYzsKKworICBjb25zdGV4cHIgbm9kZV9oYW5kbGVfYmFzZSgpIHt9
CisgIG5vZGVfaGFuZGxlX2Jhc2Uobm9kZV9oYW5kbGVfYmFzZSYmIG90aGVyKSBub2V4Y2VwdCB7
CisgICAgKnRoaXMgPSBzdGQ6Om1vdmUob3RoZXIpOworICB9CisgIH5ub2RlX2hhbmRsZV9iYXNl
KCkgeyBkZXN0cm95KCk7IH0KKyAgbm9kZV9oYW5kbGVfYmFzZSYgb3BlcmF0b3I9KG5vZGVfaGFu
ZGxlX2Jhc2UmJiBvdGhlcikgeworICAgIGRlc3Ryb3koKTsKKyAgICBpZiAoIW90aGVyLmVtcHR5
KCkpIHsKKyAgICAgIGFsbG9jXyA9IG90aGVyLmFsbG9jXzsKKyAgICAgIFBvbGljeVRyYWl0czo6
dHJhbnNmZXIoYWxsb2MoKSwgc2xvdCgpLCBvdGhlci5zbG90KCkpOworICAgICAgb3RoZXIucmVz
ZXQoKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgYm9vbCBlbXB0eSgpIGNv
bnN0IG5vZXhjZXB0IHsgcmV0dXJuICFhbGxvY187IH0KKyAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuICFlbXB0eSgpOyB9CisgIGFsbG9jYXRvcl90eXBl
IGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiAqYWxsb2NfOyB9CisKKyBwcm90ZWN0ZWQ6
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4KKyAg
ZnJpZW5kIGNsYXNzIHJhd19oYXNoX3NldDsKKworICBub2RlX2hhbmRsZV9iYXNlKGNvbnN0IGFs
bG9jYXRvcl90eXBlJiBhLCBzbG90X3R5cGUqIHMpIDogYWxsb2NfKGEpIHsKKyAgICBQb2xpY3lU
cmFpdHM6OnRyYW5zZmVyKGFsbG9jKCksIHNsb3QoKSwgcyk7CisgIH0KKworICB2b2lkIGRlc3Ry
b3koKSB7CisgICAgaWYgKCFlbXB0eSgpKSB7CisgICAgICBQb2xpY3lUcmFpdHM6OmRlc3Ryb3ko
YWxsb2MoKSwgc2xvdCgpKTsKKyAgICAgIHJlc2V0KCk7CisgICAgfQorICB9CisKKyAgdm9pZCBy
ZXNldCgpIHsKKyAgICBhc3NlcnQoYWxsb2NfLmhhc192YWx1ZSgpKTsKKyAgICBhbGxvY18gPSBh
YnNsOjpudWxsb3B0OworICB9CisKKyAgc2xvdF90eXBlKiBzbG90KCkgY29uc3QgeworICAgIGFz
c2VydCghZW1wdHkoKSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8c2xvdF90eXBlKj4o
c3RkOjphZGRyZXNzb2Yoc2xvdF9zcGFjZV8pKTsKKyAgfQorICBhbGxvY2F0b3JfdHlwZSogYWxs
b2MoKSB7IHJldHVybiBzdGQ6OmFkZHJlc3NvZigqYWxsb2NfKTsgfQorCisgcHJpdmF0ZToKKyAg
YWJzbDo6b3B0aW9uYWw8YWxsb2NhdG9yX3R5cGU+IGFsbG9jXzsKKyAgbXV0YWJsZSBhYnNsOjph
bGlnbmVkX3N0b3JhZ2VfdDxzaXplb2Yoc2xvdF90eXBlKSwgYWxpZ25vZihzbG90X3R5cGUpPgor
ICAgICAgc2xvdF9zcGFjZV87Cit9OworCisvLyBGb3Igc2V0cy4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBQb2xpY3ksIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSA9IHZvaWQ+CitjbGFzcyBub2RlX2hh
bmRsZSA6IHB1YmxpYyBub2RlX2hhbmRsZV9iYXNlPFBvbGljeSwgQWxsb2M+IHsKKyAgdXNpbmcg
QmFzZSA9IHR5cGVuYW1lIG5vZGVfaGFuZGxlOjpub2RlX2hhbmRsZV9iYXNlOworCisgcHVibGlj
OgorICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgQmFzZTo6UG9saWN5VHJhaXRzOjp2YWx1
ZV90eXBlOworCisgIGNvbnN0ZXhwciBub2RlX2hhbmRsZSgpIHt9CisKKyAgdmFsdWVfdHlwZSYg
dmFsdWUoKSBjb25zdCB7CisgICAgcmV0dXJuIEJhc2U6OlBvbGljeVRyYWl0czo6ZWxlbWVudCh0
aGlzLT5zbG90KCkpOworICB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5
cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWU+CisgIGZyaWVuZCBjbGFzcyByYXdfaGFzaF9zZXQ7
CisKKyAgbm9kZV9oYW5kbGUoY29uc3QgQWxsb2MmIGEsIHR5cGVuYW1lIEJhc2U6OnNsb3RfdHlw
ZSogcykgOiBCYXNlKGEsIHMpIHt9Cit9OworCisvLyBGb3IgbWFwcy4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBQb2xpY3ksIHR5cGVuYW1lIEFsbG9jPgorY2xhc3Mgbm9kZV9oYW5kbGU8UG9saWN5LCBB
bGxvYywgYWJzbDo6dm9pZF90PHR5cGVuYW1lIFBvbGljeTo6bWFwcGVkX3R5cGU+PgorICAgIDog
cHVibGljIG5vZGVfaGFuZGxlX2Jhc2U8UG9saWN5LCBBbGxvYz4geworICB1c2luZyBCYXNlID0g
dHlwZW5hbWUgbm9kZV9oYW5kbGU6Om5vZGVfaGFuZGxlX2Jhc2U7CisKKyBwdWJsaWM6CisgIHVz
aW5nIGtleV90eXBlID0gdHlwZW5hbWUgUG9saWN5OjprZXlfdHlwZTsKKyAgdXNpbmcgbWFwcGVk
X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3k6Om1hcHBlZF90eXBlOworCisgIGNvbnN0ZXhwciBub2Rl
X2hhbmRsZSgpIHt9CisKKyAgYXV0byBrZXkoKSBjb25zdCAtPiBkZWNsdHlwZShCYXNlOjpQb2xp
Y3lUcmFpdHM6OmtleSh0aGlzLT5zbG90KCkpKSB7CisgICAgcmV0dXJuIEJhc2U6OlBvbGljeVRy
YWl0czo6a2V5KHRoaXMtPnNsb3QoKSk7CisgIH0KKworICBtYXBwZWRfdHlwZSYgbWFwcGVkKCkg
Y29uc3QgeworICAgIHJldHVybiBCYXNlOjpQb2xpY3lUcmFpdHM6OnZhbHVlKAorICAgICAgICAm
QmFzZTo6UG9saWN5VHJhaXRzOjplbGVtZW50KHRoaXMtPnNsb3QoKSkpOworICB9CisKKyBwcml2
YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWU+
CisgIGZyaWVuZCBjbGFzcyByYXdfaGFzaF9zZXQ7CisKKyAgbm9kZV9oYW5kbGUoY29uc3QgQWxs
b2MmIGEsIHR5cGVuYW1lIEJhc2U6OnNsb3RfdHlwZSogcykgOiBCYXNlKGEsIHMpIHt9Cit9Owor
CisvLyBJbXBsZW1lbnQgdGhlIGluc2VydF9yZXR1cm5fdHlwZTw+IGNvbmNlcHQgb2YgQysrMTcu
Cit0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIE5vZGVUeXBlPgorc3RydWN0IGluc2Vy
dF9yZXR1cm5fdHlwZSB7CisgIEl0ZXJhdG9yIHBvc2l0aW9uOworICBib29sIGluc2VydGVkOwor
ICBOb2RlVHlwZSBub2RlOworfTsKKworLy8gSGVscGVyIHRyYWl0IHRvIGFsbG93IG9yIGRpc2Fs
bG93IGFyYml0cmFyeSBrZXlzIHdoZW4gdGhlIGhhc2ggYW5kCisvLyBlcSBmdW5jdGlvbnMgYXJl
IHRyYW5zcGFyZW50LgorLy8gSXQgaXMgdmVyeSBpbXBvcnRhbnQgdGhhdCB0aGUgaW5uZXIgdGVt
cGxhdGUgaXMgYW4gYWxpYXMgYW5kIHRoYXQgdGhlIHR5cGUgaXQKKy8vIHByb2R1Y2VzIGlzIG5v
dCBhIGRlcGVuZGVudCB0eXBlLiBPdGhlcndpc2UsIHR5cGUgZGVkdWN0aW9uIHdvdWxkIGZhaWwu
Cit0ZW1wbGF0ZSA8Ym9vbCBpc190cmFuc3BhcmVudD4KK3N0cnVjdCBLZXlBcmcgeworICAvLyBU
cmFuc3BhcmVudC4gRm9yd2FyZCBgS2AuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFt
ZSBrZXlfdHlwZT4KKyAgdXNpbmcgdHlwZSA9IEs7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0
IEtleUFyZzxmYWxzZT4geworICAvLyBOb3QgdHJhbnNwYXJlbnQuIEFsd2F5cyB1c2UgYGtleV90
eXBlYC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIGtleV90eXBlPgorICB1c2lu
ZyB0eXBlID0ga2V5X3R5cGU7Cit9OworCisvLyBQb2xpY3k6IGEgcG9saWN5IGRlZmluZXMgaG93
IHRvIHBlcmZvcm0gZGlmZmVyZW50IG9wZXJhdGlvbnMgb24KKy8vIHRoZSBzbG90cyBvZiB0aGUg
aGFzaHRhYmxlIChzZWUgaGFzaF9wb2xpY3lfdHJhaXRzLmggZm9yIHRoZSBmdWxsIGludGVyZmFj
ZQorLy8gb2YgcG9saWN5KS4KKy8vCisvLyBIYXNoOiBhIChwb3NzaWJseSBwb2x5bW9ycGhpYykg
ZnVuY3RvciB0aGF0IGhhc2hlcyBrZXlzIG9mIHRoZSBoYXNodGFibGUuIFRoZQorLy8gZnVuY3Rv
ciBzaG91bGQgYWNjZXB0IGEga2V5IGFuZCByZXR1cm4gc2l6ZV90IGFzIGhhc2guIEZvciBiZXN0
IHBlcmZvcm1hbmNlCisvLyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgaGFzaCBmdW5jdGlvbiBw
cm92aWRlcyBoaWdoIGVudHJvcHkgYWNyb3NzIGFsbCBiaXRzCisvLyBvZiB0aGUgaGFzaC4KKy8v
CisvLyBFcTogYSAocG9zc2libHkgcG9seW1vcnBoaWMpIGZ1bmN0b3IgdGhhdCBjb21wYXJlcyB0
d28ga2V5cyBmb3IgZXF1YWxpdHkuIEl0CisvLyBzaG91bGQgYWNjZXB0IHR3byAob2YgcG9zc2li
bHkgZGlmZmVyZW50IHR5cGUpIGtleXMgYW5kIHJldHVybiBhIGJvb2w6IHRydWUKKy8vIGlmIHRo
ZXkgYXJlIGVxdWFsLCBmYWxzZSBpZiB0aGV5IGFyZSBub3QuIElmIHR3byBrZXlzIGNvbXBhcmUg
ZXF1YWwsIHRoZW4KKy8vIHRoZWlyIGhhc2ggdmFsdWVzIGFzIGRlZmluZWQgYnkgSGFzaCBNVVNU
IGJlIGVxdWFsLgorLy8KKy8vIEFsbG9jYXRvcjogYW4gQWxsb2NhdG9yIFtodHRwOi8vZGV2ZG9j
cy5pby9jcHAvY29uY2VwdC9hbGxvY2F0b3JdIHdpdGggd2hpY2gKKy8vIHRoZSBzdG9yYWdlIG9m
IHRoZSBoYXNodGFibGUgd2lsbCBiZSBhbGxvY2F0ZWQgYW5kIHRoZSBlbGVtZW50cyB3aWxsIGJl
CisvLyBjb25zdHJ1Y3RlZCBhbmQgZGVzdHJveWVkLgordGVtcGxhdGUgPGNsYXNzIFBvbGljeSwg
Y2xhc3MgSGFzaCwgY2xhc3MgRXEsIGNsYXNzIEFsbG9jPgorY2xhc3MgcmF3X2hhc2hfc2V0IHsK
KyAgdXNpbmcgUG9saWN5VHJhaXRzID0gaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeT47CisgIHVz
aW5nIEtleUFyZ0ltcGwgPSBjb250YWluZXJfaW50ZXJuYWw6OktleUFyZzxJc1RyYW5zcGFyZW50
PEVxPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElzVHJhbnNwYXJlbnQ8SGFzaD46OnZhbHVlPjsKKworIHB1YmxpYzoKKyAgdXNpbmcg
aW5pdF90eXBlID0gdHlwZW5hbWUgUG9saWN5VHJhaXRzOjppbml0X3R5cGU7CisgIHVzaW5nIGtl
eV90eXBlID0gdHlwZW5hbWUgUG9saWN5VHJhaXRzOjprZXlfdHlwZTsKKyAgLy8gVE9ETyhzYmVu
emEpOiBIaWRlIHNsb3RfdHlwZSBhcyBpdCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuIE5l
ZWRzIHVzZXIKKyAgLy8gY29kZSBmaXhlcyEKKyAgdXNpbmcgc2xvdF90eXBlID0gdHlwZW5hbWUg
UG9saWN5VHJhaXRzOjpzbG90X3R5cGU7CisgIHVzaW5nIGFsbG9jYXRvcl90eXBlID0gQWxsb2M7
CisgIHVzaW5nIHNpemVfdHlwZSA9IHNpemVfdDsKKyAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0g
cHRyZGlmZl90OworICB1c2luZyBoYXNoZXIgPSBIYXNoOworICB1c2luZyBrZXlfZXF1YWwgPSBF
cTsKKyAgdXNpbmcgcG9saWN5X3R5cGUgPSBQb2xpY3k7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0
eXBlbmFtZSBQb2xpY3lUcmFpdHM6OnZhbHVlX3R5cGU7CisgIHVzaW5nIHJlZmVyZW5jZSA9IHZh
bHVlX3R5cGUmOworICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBjb25zdCB2YWx1ZV90eXBlJjsK
KyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8CisgICAg
ICBhbGxvY2F0b3JfdHlwZT46OnRlbXBsYXRlIHJlYmluZF90cmFpdHM8dmFsdWVfdHlwZT46OnBv
aW50ZXI7CisgIHVzaW5nIGNvbnN0X3BvaW50ZXIgPSB0eXBlbmFtZSBhYnNsOjphbGxvY2F0b3Jf
dHJhaXRzPAorICAgICAgYWxsb2NhdG9yX3R5cGU+Ojp0ZW1wbGF0ZSByZWJpbmRfdHJhaXRzPHZh
bHVlX3R5cGU+Ojpjb25zdF9wb2ludGVyOworCisgIC8vIEFsaWFzIHVzZWQgZm9yIGhldGVyb2dl
bmVvdXMgbG9va3VwIGZ1bmN0aW9ucy4KKyAgLy8gYGtleV9hcmc8Sz5gIGV2YWx1YXRlcyB0byBg
S2Agd2hlbiB0aGUgZnVuY3RvcnMgYXJlIHRyYW5wYXJlbnQgYW5kIHRvCisgIC8vIGBrZXlfdHlw
ZWAgb3RoZXJ3aXNlLiBJdCBwZXJtaXRzIHRlbXBsYXRlIGFyZ3VtZW50IGRlZHVjdGlvbiBvbiBg
S2AgZm9yIHRoZQorICAvLyB0cmFuc3BhcmVudCBjYXNlLgorICB0ZW1wbGF0ZSA8Y2xhc3MgSz4K
KyAgdXNpbmcga2V5X2FyZyA9IHR5cGVuYW1lIEtleUFyZ0ltcGw6OnRlbXBsYXRlIHR5cGU8Sywg
a2V5X3R5cGU+OworCisgcHJpdmF0ZToKKyAgLy8gR2l2ZSBhbiBlYXJseSBlcnJvciB3aGVuIGtl
eV90eXBlIGlzIG5vdCBoYXNoYWJsZS9lcS4KKyAgYXV0byBLZXlUeXBlQ2FuQmVIYXNoZWQoY29u
c3QgSGFzaCYgaCwgY29uc3Qga2V5X3R5cGUmIGspIC0+IGRlY2x0eXBlKGgoaykpOworICBhdXRv
IEtleVR5cGVDYW5CZUVxKGNvbnN0IEVxJiBlcSwgY29uc3Qga2V5X3R5cGUmIGspIC0+IGRlY2x0
eXBlKGVxKGssIGspKTsKKworICB1c2luZyBMYXlvdXQgPSBhYnNsOjpjb250YWluZXJfaW50ZXJu
YWw6OkxheW91dDxjdHJsX3QsIHNsb3RfdHlwZT47CisKKyAgc3RhdGljIExheW91dCBNYWtlTGF5
b3V0KHNpemVfdCBjYXBhY2l0eSkgeworICAgIGFzc2VydChJc1ZhbGlkQ2FwYWNpdHkoY2FwYWNp
dHkpKTsKKyAgICByZXR1cm4gTGF5b3V0KGNhcGFjaXR5ICsgR3JvdXA6OmtXaWR0aCArIDEsIGNh
cGFjaXR5KTsKKyAgfQorCisgIHVzaW5nIEFsbG9jVHJhaXRzID0gYWJzbDo6YWxsb2NhdG9yX3Ry
YWl0czxhbGxvY2F0b3JfdHlwZT47CisgIHVzaW5nIFNsb3RBbGxvYyA9IHR5cGVuYW1lIGFic2w6
OmFsbG9jYXRvcl90cmFpdHM8CisgICAgICBhbGxvY2F0b3JfdHlwZT46OnRlbXBsYXRlIHJlYmlu
ZF9hbGxvYzxzbG90X3R5cGU+OworICB1c2luZyBTbG90QWxsb2NUcmFpdHMgPSB0eXBlbmFtZSBh
YnNsOjphbGxvY2F0b3JfdHJhaXRzPAorICAgICAgYWxsb2NhdG9yX3R5cGU+Ojp0ZW1wbGF0ZSBy
ZWJpbmRfdHJhaXRzPHNsb3RfdHlwZT47CisKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2x2YWx1
ZV9yZWZlcmVuY2U8cmVmZXJlbmNlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgIlBvbGljeTo6
ZWxlbWVudCgpIG11c3QgcmV0dXJuIGEgcmVmZXJlbmNlIik7CisKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgIHN0cnVjdCBTYW1lQXNFbGVtZW50UmVmZXJlbmNlCisgICAgICA6IHN0ZDo6aXNf
c2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8cmVmZXJlbmNlPjo6dHlwZT46OnR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGU+Ojp0
eXBlPiB7fTsKKworICAvLyBBbiBlbmFibGVyIGZvciBpbnNlcnQoVCYmKTogVCBtdXN0IGJlIGNv
bnZlcnRpYmxlIHRvIGluaXRfdHlwZSBvciBiZSB0aGUKKyAgLy8gc2FtZSBhcyBbY3ZdIHZhbHVl
X3R5cGUgW3JlZl0uCisgIC8vIE5vdGU6IHdlIHNlcGFyYXRlIFNhbWVBc0VsZW1lbnRSZWZlcmVu
Y2UgaW50byBpdHMgb3duIHR5cGUgdG8gYXZvaWQgdXNpbmcKKyAgLy8gcmVmZXJlbmNlIHVubGVz
cyB3ZSBuZWVkIHRvLiBNU1ZDIGRvZXNuJ3Qgc2VlbSB0byBsaWtlIGl0IGluIHNvbWUKKyAgLy8g
Y2FzZXMuCisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICB1c2luZyBSZXF1aXJlc0luc2VydGFibGUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgIGFic2w6OmRpc2p1bmN0aW9uPHN0ZDo6
aXNfY29udmVydGlibGU8VCwgaW5pdF90eXBlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNh
bWVBc0VsZW1lbnRSZWZlcmVuY2U8VD4+Ojp2YWx1ZSwKKyAgICAgIGludD46OnR5cGU7CisKKyAg
Ly8gUmVxdWlyZXNOb3RJbml0IGlzIGEgd29ya2Fyb3VuZCBmb3IgZ2NjIHByaW9yIHRvIDcuMS4K
KyAgLy8gU2VlIGh0dHBzOi8vZ29kYm9sdC5vcmcvZy9ZNHhzVWguCisgIHRlbXBsYXRlIDxjbGFz
cyBUPgorICB1c2luZyBSZXF1aXJlc05vdEluaXQgPQorICAgICAgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8IXN0ZDo6aXNfc2FtZTxULCBpbml0X3R5cGU+Ojp2YWx1ZSwgaW50Pjo6dHlwZTsKKwor
ICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gVHM+CisgIHVzaW5nIElzRGVjb21wb3NhYmxlID0gSXNEZWNv
bXBvc2FibGU8dm9pZCwgUG9saWN5VHJhaXRzLCBIYXNoLCBFcSwgVHMuLi4+OworCisgcHVibGlj
OgorICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxwb2ludGVyLCB2YWx1ZV90eXBlKj46OnZh
bHVlLAorICAgICAgICAgICAgICAgICJBbGxvY2F0b3JzIHdpdGggY3VzdG9tIHBvaW50ZXIgdHlw
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Y29u
c3RfcG9pbnRlciwgY29uc3QgdmFsdWVfdHlwZSo+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAi
QWxsb2NhdG9ycyB3aXRoIGN1c3RvbSBwb2ludGVyIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkIik7
CisKKyAgY2xhc3MgaXRlcmF0b3IgeworICAgIGZyaWVuZCBjbGFzcyByYXdfaGFzaF9zZXQ7CisK
KyAgIHB1YmxpYzoKKyAgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IHN0ZDo6Zm9yd2FyZF9p
dGVyYXRvcl90YWc7CisgICAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIHJhd19oYXNoX3Nl
dDo6dmFsdWVfdHlwZTsKKyAgICB1c2luZyByZWZlcmVuY2UgPQorICAgICAgICBhYnNsOjpjb25k
aXRpb25hbF90PFBvbGljeVRyYWl0czo6Y29uc3RhbnRfaXRlcmF0b3JzOjp2YWx1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlJiwgdmFsdWVfdHlwZSY+Owor
ICAgIHVzaW5nIHBvaW50ZXIgPSBhYnNsOjpyZW1vdmVfcmVmZXJlbmNlX3Q8cmVmZXJlbmNlPio7
CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gdHlwZW5hbWUgcmF3X2hhc2hfc2V0OjpkaWZm
ZXJlbmNlX3R5cGU7CisKKyAgICBpdGVyYXRvcigpIHt9CisKKyAgICAvLyBQUkVDT05ESVRJT046
IG5vdCBhbiBlbmQoKSBpdGVyYXRvci4KKyAgICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3Qg
eyByZXR1cm4gUG9saWN5VHJhaXRzOjplbGVtZW50KHNsb3RfKTsgfQorCisgICAgLy8gUFJFQ09O
RElUSU9OOiBub3QgYW4gZW5kKCkgaXRlcmF0b3IuCisgICAgcG9pbnRlciBvcGVyYXRvci0+KCkg
Y29uc3QgeyByZXR1cm4gJm9wZXJhdG9yKigpOyB9CisKKyAgICAvLyBQUkVDT05ESVRJT046IG5v
dCBhbiBlbmQoKSBpdGVyYXRvci4KKyAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpIHsKKyAgICAg
ICsrY3RybF87CisgICAgICArK3Nsb3RfOworICAgICAgc2tpcF9lbXB0eV9vcl9kZWxldGVkKCk7
CisgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIC8vIFBSRUNPTkRJVElPTjogbm90IGFu
IGVuZCgpIGl0ZXJhdG9yLgorICAgIGl0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7CisgICAgICBh
dXRvIHRtcCA9ICp0aGlzOworICAgICAgKysqdGhpczsKKyAgICAgIHJldHVybiB0bXA7CisgICAg
fQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgYSwgY29uc3Qg
aXRlcmF0b3ImIGIpIHsKKyAgICAgIHJldHVybiBhLmN0cmxfID09IGIuY3RybF87CisgICAgfQor
ICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIGEsIGNvbnN0IGl0ZXJh
dG9yJiBiKSB7CisgICAgICByZXR1cm4gIShhID09IGIpOworICAgIH0KKworICAgcHJpdmF0ZToK
KyAgICBpdGVyYXRvcihjdHJsX3QqIGN0cmwpIDogY3RybF8oY3RybCkge30gIC8vIGZvciBlbmQo
KQorICAgIGl0ZXJhdG9yKGN0cmxfdCogY3RybCwgc2xvdF90eXBlKiBzbG90KSA6IGN0cmxfKGN0
cmwpLCBzbG90XyhzbG90KSB7fQorCisgICAgdm9pZCBza2lwX2VtcHR5X29yX2RlbGV0ZWQoKSB7
CisgICAgICB3aGlsZSAoSXNFbXB0eU9yRGVsZXRlZCgqY3RybF8pKSB7CisgICAgICAgIC8vIGN0
cmwgaXMgbm90IG5lY2Vzc2FyaWx5IGFsaWduZWQgdG8gR3JvdXA6OmtXaWR0aC4gSXQgaXMgYWxz
byBsaWtlbHkKKyAgICAgICAgLy8gdG8gcmVhZCBwYXN0IHRoZSBzcGFjZSBmb3IgY3RybCBieXRl
cyBhbmQgaW50byBzbG90cy4gVGhpcyBpcyBvaworICAgICAgICAvLyBiZWNhdXNlIGN0cmwgaGFz
IHNpemVvZigpID09IDEgYW5kIHNsb3QgaGFzIHNpemVvZigpID49IDEgc28gdGhlcmUKKyAgICAg
ICAgLy8gaXMgbm8gd2F5IHRvIHJlYWQgb3V0c2lkZSB0aGUgY29tYmluZWQgc2xvdCBhcnJheS4K
KyAgICAgICAgdWludDMyX3Qgc2hpZnQgPSBHcm91cHtjdHJsX30uQ291bnRMZWFkaW5nRW1wdHlP
ckRlbGV0ZWQoKTsKKyAgICAgICAgY3RybF8gKz0gc2hpZnQ7CisgICAgICAgIHNsb3RfICs9IHNo
aWZ0OworICAgICAgfQorICAgIH0KKworICAgIGN0cmxfdCogY3RybF8gPSBudWxscHRyOworICAg
IHNsb3RfdHlwZSogc2xvdF87CisgIH07CisKKyAgY2xhc3MgY29uc3RfaXRlcmF0b3IgeworICAg
IGZyaWVuZCBjbGFzcyByYXdfaGFzaF9zZXQ7CisKKyAgIHB1YmxpYzoKKyAgICB1c2luZyBpdGVy
YXRvcl9jYXRlZ29yeSA9IHR5cGVuYW1lIGl0ZXJhdG9yOjppdGVyYXRvcl9jYXRlZ29yeTsKKyAg
ICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgcmF3X2hhc2hfc2V0Ojp2YWx1ZV90eXBlOwor
ICAgIHVzaW5nIHJlZmVyZW5jZSA9IHR5cGVuYW1lIHJhd19oYXNoX3NldDo6Y29uc3RfcmVmZXJl
bmNlOworICAgIHVzaW5nIHBvaW50ZXIgPSB0eXBlbmFtZSByYXdfaGFzaF9zZXQ6OmNvbnN0X3Bv
aW50ZXI7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gdHlwZW5hbWUgcmF3X2hhc2hfc2V0
OjpkaWZmZXJlbmNlX3R5cGU7CisKKyAgICBjb25zdF9pdGVyYXRvcigpIHt9CisgICAgLy8gSW1w
bGljaXQgY29uc3RydWN0aW9uIGZyb20gaXRlcmF0b3IuCisgICAgY29uc3RfaXRlcmF0b3IoaXRl
cmF0b3IgaSkgOiBpbm5lcl8oc3RkOjptb3ZlKGkpKSB7fQorCisgICAgcmVmZXJlbmNlIG9wZXJh
dG9yKigpIGNvbnN0IHsgcmV0dXJuICppbm5lcl87IH0KKyAgICBwb2ludGVyIG9wZXJhdG9yLT4o
KSBjb25zdCB7IHJldHVybiBpbm5lcl8ub3BlcmF0b3ItPigpOyB9CisKKyAgICBjb25zdF9pdGVy
YXRvciYgb3BlcmF0b3IrKygpIHsKKyAgICAgICsraW5uZXJfOworICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKyAgICBjb25zdF9pdGVyYXRvciBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gaW5u
ZXJfKys7IH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgY29uc3RfaXRlcmF0
b3ImIGEsIGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBiKSB7CisgICAgICByZXR1cm4gYS5pbm5lcl8g
PT0gYi5pbm5lcl87CisgICAgfQorICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgY29u
c3RfaXRlcmF0b3ImIGEsIGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBiKSB7CisgICAgICByZXR1cm4g
IShhID09IGIpOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBjb25zdF9pdGVyYXRvcihjb25z
dCBjdHJsX3QqIGN0cmwsIGNvbnN0IHNsb3RfdHlwZSogc2xvdCkKKyAgICAgICAgOiBpbm5lcl8o
Y29uc3RfY2FzdDxjdHJsX3QqPihjdHJsKSwgY29uc3RfY2FzdDxzbG90X3R5cGUqPihzbG90KSkg
e30KKworICAgIGl0ZXJhdG9yIGlubmVyXzsKKyAgfTsKKworICB1c2luZyBub2RlX3R5cGUgPSBj
b250YWluZXJfaW50ZXJuYWw6Om5vZGVfaGFuZGxlPFBvbGljeSwgQWxsb2M+OworCisgIHJhd19o
YXNoX3NldCgpIG5vZXhjZXB0KAorICAgICAgc3RkOjppc19ub3Rocm93X2RlZmF1bHRfY29uc3Ry
dWN0aWJsZTxoYXNoZXI+Ojp2YWx1ZSYmCisgICAgICAgICAgc3RkOjppc19ub3Rocm93X2RlZmF1
bHRfY29uc3RydWN0aWJsZTxrZXlfZXF1YWw+Ojp2YWx1ZSYmCisgICAgICAgICAgICAgIHN0ZDo6
aXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdGlibGU8YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSkg
e30KKworICBleHBsaWNpdCByYXdfaGFzaF9zZXQoc2l6ZV90IGJ1Y2tldF9jb3VudCwgY29uc3Qg
aGFzaGVyJiBoYXNoID0gaGFzaGVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBr
ZXlfZXF1YWwmIGVxID0ga2V5X2VxdWFsKCksCisgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgpKQorICAgICAgOiBjdHJs
XyhFbXB0eUdyb3VwKCkpLCBzZXR0aW5nc18oMCwgaGFzaCwgZXEsIGFsbG9jKSB7CisgICAgaWYg
KGJ1Y2tldF9jb3VudCkgeworICAgICAgY2FwYWNpdHlfID0gTm9ybWFsaXplQ2FwYWNpdHkoYnVj
a2V0X2NvdW50KTsKKyAgICAgIGdyb3d0aF9sZWZ0KCkgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNh
cGFjaXR5XyAqIGtNYXhMb2FkRmFjdG9yKTsKKyAgICAgIGluaXRpYWxpemVfc2xvdHMoKTsKKyAg
ICB9CisgIH0KKworICByYXdfaGFzaF9zZXQoc2l6ZV90IGJ1Y2tldF9jb3VudCwgY29uc3QgaGFz
aGVyJiBoYXNoLAorICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jKQor
ICAgICAgOiByYXdfaGFzaF9zZXQoYnVja2V0X2NvdW50LCBoYXNoLCBrZXlfZXF1YWwoKSwgYWxs
b2MpIHt9CisKKyAgcmF3X2hhc2hfc2V0KHNpemVfdCBidWNrZXRfY291bnQsIGNvbnN0IGFsbG9j
YXRvcl90eXBlJiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hfc2V0KGJ1Y2tldF9jb3VudCwgaGFz
aGVyKCksIGtleV9lcXVhbCgpLCBhbGxvYykge30KKworICBleHBsaWNpdCByYXdfaGFzaF9zZXQo
Y29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jKQorICAgICAgOiByYXdfaGFzaF9zZXQoMCwgaGFz
aGVyKCksIGtleV9lcXVhbCgpLCBhbGxvYykge30KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJ
dGVyPgorICByYXdfaGFzaF9zZXQoSW5wdXRJdGVyIGZpcnN0LCBJbnB1dEl0ZXIgbGFzdCwgc2l6
ZV90IGJ1Y2tldF9jb3VudCA9IDAsCisgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImIGhhc2gg
PSBoYXNoZXIoKSwgY29uc3Qga2V5X2VxdWFsJiBlcSA9IGtleV9lcXVhbCgpLAorICAgICAgICAg
ICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jID0gYWxsb2NhdG9yX3R5cGUoKSkKKyAg
ICAgIDogcmF3X2hhc2hfc2V0KGJ1Y2tldF9jb3VudCwgaGFzaCwgZXEsIGFsbG9jKSB7CisgICAg
aW5zZXJ0KGZpcnN0LCBsYXN0KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXI+
CisgIHJhd19oYXNoX3NldChJbnB1dEl0ZXIgZmlyc3QsIElucHV0SXRlciBsYXN0LCBzaXplX3Qg
YnVja2V0X2NvdW50LAorICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiBoYXNoLCBjb25zdCBh
bGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNoX3NldChmaXJzdCwgbGFzdCwg
YnVja2V0X2NvdW50LCBoYXNoLCBrZXlfZXF1YWwoKSwgYWxsb2MpIHt9CisKKyAgdGVtcGxhdGUg
PGNsYXNzIElucHV0SXRlcj4KKyAgcmF3X2hhc2hfc2V0KElucHV0SXRlciBmaXJzdCwgSW5wdXRJ
dGVyIGxhc3QsIHNpemVfdCBidWNrZXRfY291bnQsCisgICAgICAgICAgICAgICBjb25zdCBhbGxv
Y2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNoX3NldChmaXJzdCwgbGFzdCwgYnVj
a2V0X2NvdW50LCBoYXNoZXIoKSwga2V5X2VxdWFsKCksIGFsbG9jKSB7fQorCisgIHRlbXBsYXRl
IDxjbGFzcyBJbnB1dEl0ZXI+CisgIHJhd19oYXNoX3NldChJbnB1dEl0ZXIgZmlyc3QsIElucHV0
SXRlciBsYXN0LCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNo
X3NldChmaXJzdCwgbGFzdCwgMCwgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBhbGxvYykge30KKwor
ICAvLyBJbnN0ZWFkIG9mIGFjY2VwdGluZyBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlw
ZT4gYXMgdGhlIGZpcnN0CisgIC8vIGFyZ3VtZW50IGxpa2Ugc3RkOjp1bm9yZGVyZWRfc2V0PHZh
bHVlX3R5cGU+IGRvZXMsIHdlIGhhdmUgdHdvIG92ZXJsb2FkcworICAvLyB0aGF0IGFjY2VwdCBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gYW5kIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5
cGU+LgorICAvLyBUaGlzIGlzIGFkdmFudGFnZW91cyBmb3IgcGVyZm9ybWFuY2UuCisgIC8vCisg
IC8vICAgLy8gVHVybnMgeyJhYmMiLCAiZGVmIn0gaW50byBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
c3RkOjpzdHJpbmc+LCB0aGVuIGNvcGllcworICAvLyAgIC8vIHRoZSBzdHJpbmdzIGludG8gdGhl
IHNldC4KKyAgLy8gICBzdGQ6OnVub3JkZXJlZF9zZXQ8c3RkOjpzdHJpbmc+IHMgPSB7ImFiYyIs
ICJkZWYifTsKKyAgLy8KKyAgLy8gICAvLyBUdXJucyB7ImFiYyIsICJkZWYifSBpbnRvIHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4sIHRoZW4KKyAgLy8gICAvLyBjb3BpZXMgdGhl
IHN0cmluZ3MgaW50byB0aGUgc2V0LgorICAvLyAgIGFic2w6OmZsYXRfaGFzaF9zZXQ8c3RkOjpz
dHJpbmc+IHMgPSB7ImFiYyIsICJkZWYifTsKKyAgLy8KKyAgLy8gVGhlIHNhbWUgdHJpY2sgaXMg
dXNlZCBpbiBpbnNlcnQoKS4KKyAgLy8KKyAgLy8gVGhlIGVuYWJsZXIgaXMgbmVjZXNzYXJ5IHRv
IHByZXZlbnQgdGhpcyBjb25zdHJ1Y3RvciBmcm9tIHRyaWdnZXJpbmcgd2hlcmUKKyAgLy8gdGhl
IGNvcHkgY29uc3RydWN0b3IgaXMgbWVhbnQgdG8gYmUgY2FsbGVkLgorICAvLworICAvLyAgIGFi
c2w6OmZsYXRfaGFzaF9zZXQ8aW50PiBhLCBie2F9OworICAvLworICAvLyBSZXF1aXJlc05vdElu
aXQ8VD4gaXMgYSB3b3JrYXJvdW5kIGZvciBnY2MgcHJpb3IgdG8gNy4xLgorICB0ZW1wbGF0ZSA8
Y2xhc3MgVCwgUmVxdWlyZXNOb3RJbml0PFQ+ID0gMCwgUmVxdWlyZXNJbnNlcnRhYmxlPFQ+ID0g
MD4KKyAgcmF3X2hhc2hfc2V0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbml0LCBzaXplX3Qg
YnVja2V0X2NvdW50ID0gMCwKKyAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYgaGFzaCA9IGhh
c2hlcigpLCBjb25zdCBrZXlfZXF1YWwmIGVxID0ga2V5X2VxdWFsKCksCisgICAgICAgICAgICAg
ICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgpKQorICAgICAg
OiByYXdfaGFzaF9zZXQoaW5pdC5iZWdpbigpLCBpbml0LmVuZCgpLCBidWNrZXRfY291bnQsIGhh
c2gsIGVxLCBhbGxvYykge30KKworICByYXdfaGFzaF9zZXQoc3RkOjppbml0aWFsaXplcl9saXN0
PGluaXRfdHlwZT4gaW5pdCwgc2l6ZV90IGJ1Y2tldF9jb3VudCA9IDAsCisgICAgICAgICAgICAg
ICBjb25zdCBoYXNoZXImIGhhc2ggPSBoYXNoZXIoKSwgY29uc3Qga2V5X2VxdWFsJiBlcSA9IGtl
eV9lcXVhbCgpLAorICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jID0g
YWxsb2NhdG9yX3R5cGUoKSkKKyAgICAgIDogcmF3X2hhc2hfc2V0KGluaXQuYmVnaW4oKSwgaW5p
dC5lbmQoKSwgYnVja2V0X2NvdW50LCBoYXNoLCBlcSwgYWxsb2MpIHt9CisKKyAgdGVtcGxhdGUg
PGNsYXNzIFQsIFJlcXVpcmVzTm90SW5pdDxUPiA9IDAsIFJlcXVpcmVzSW5zZXJ0YWJsZTxUPiA9
IDA+CisgIHJhd19oYXNoX3NldChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaW5pdCwgc2l6ZV90
IGJ1Y2tldF9jb3VudCwKKyAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYgaGFzaCwgY29uc3Qg
YWxsb2NhdG9yX3R5cGUmIGFsbG9jKQorICAgICAgOiByYXdfaGFzaF9zZXQoaW5pdCwgYnVja2V0
X2NvdW50LCBoYXNoLCBrZXlfZXF1YWwoKSwgYWxsb2MpIHt9CisKKyAgcmF3X2hhc2hfc2V0KHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGluaXQsIHNpemVfdCBidWNrZXRfY291bnQs
CisgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImIGhhc2gsIGNvbnN0IGFsbG9jYXRvcl90eXBl
JiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hfc2V0KGluaXQsIGJ1Y2tldF9jb3VudCwgaGFzaCwg
a2V5X2VxdWFsKCksIGFsbG9jKSB7fQorCisgIHRlbXBsYXRlIDxjbGFzcyBULCBSZXF1aXJlc05v
dEluaXQ8VD4gPSAwLCBSZXF1aXJlc0luc2VydGFibGU8VD4gPSAwPgorICByYXdfaGFzaF9zZXQo
c3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGluaXQsIHNpemVfdCBidWNrZXRfY291bnQsCisgICAg
ICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNo
X3NldChpbml0LCBidWNrZXRfY291bnQsIGhhc2hlcigpLCBrZXlfZXF1YWwoKSwgYWxsb2MpIHt9
CisKKyAgcmF3X2hhc2hfc2V0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGluaXQs
IHNpemVfdCBidWNrZXRfY291bnQsCisgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlw
ZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNoX3NldChpbml0LCBidWNrZXRfY291bnQsIGhhc2hl
cigpLCBrZXlfZXF1YWwoKSwgYWxsb2MpIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFQsIFJlcXVp
cmVzTm90SW5pdDxUPiA9IDAsIFJlcXVpcmVzSW5zZXJ0YWJsZTxUPiA9IDA+CisgIHJhd19oYXNo
X3NldChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaW5pdCwgY29uc3QgYWxsb2NhdG9yX3R5cGUm
IGFsbG9jKQorICAgICAgOiByYXdfaGFzaF9zZXQoaW5pdCwgMCwgaGFzaGVyKCksIGtleV9lcXVh
bCgpLCBhbGxvYykge30KKworICByYXdfaGFzaF9zZXQoc3RkOjppbml0aWFsaXplcl9saXN0PGlu
aXRfdHlwZT4gaW5pdCwKKyAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxv
YykKKyAgICAgIDogcmF3X2hhc2hfc2V0KGluaXQsIDAsIGhhc2hlcigpLCBrZXlfZXF1YWwoKSwg
YWxsb2MpIHt9CisKKyAgcmF3X2hhc2hfc2V0KGNvbnN0IHJhd19oYXNoX3NldCYgdGhhdCkKKyAg
ICAgIDogcmF3X2hhc2hfc2V0KHRoYXQsIEFsbG9jVHJhaXRzOjpzZWxlY3Rfb25fY29udGFpbmVy
X2NvcHlfY29uc3RydWN0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQu
YWxsb2NfcmVmKCkpKSB7fQorCisgIHJhd19oYXNoX3NldChjb25zdCByYXdfaGFzaF9zZXQmIHRo
YXQsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhKQorICAgICAgOiByYXdfaGFzaF9zZXQoMCwgdGhh
dC5oYXNoX3JlZigpLCB0aGF0LmVxX3JlZigpLCBhKSB7CisgICAgcmVzZXJ2ZSh0aGF0LnNpemUo
KSk7CisgICAgLy8gQmVjYXVzZSB0aGUgdGFibGUgaXMgZ3VhcmFudGVlZCB0byBiZSBlbXB0eSwg
d2UgY2FuIGRvIHNvbWV0aGluZyBmYXN0ZXIKKyAgICAvLyB0aGFuIGEgZnVsbCBgaW5zZXJ0YC4K
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHYgOiB0aGF0KSB7CisgICAgICBjb25zdCBzaXplX3QgaGFz
aCA9IFBvbGljeVRyYWl0czo6YXBwbHkoSGFzaEVsZW1lbnR7aGFzaF9yZWYoKX0sIHYpOworICAg
ICAgY29uc3Qgc2l6ZV90IGkgPSBmaW5kX2ZpcnN0X25vbl9mdWxsKGhhc2gpOworICAgICAgc2V0
X2N0cmwoaSwgSDIoaGFzaCkpOworICAgICAgZW1wbGFjZV9hdChpLCB2KTsKKyAgICB9CisgICAg
c2l6ZV8gPSB0aGF0LnNpemUoKTsKKyAgICBncm93dGhfbGVmdCgpIC09IHRoYXQuc2l6ZSgpOwor
ICB9CisKKyAgcmF3X2hhc2hfc2V0KHJhd19oYXNoX3NldCYmIHRoYXQpIG5vZXhjZXB0KAorICAg
ICAgc3RkOjppc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxoYXNoZXI+Ojp2YWx1ZSYmCisg
ICAgICAgICAgc3RkOjppc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxrZXlfZXF1YWw+Ojp2
YWx1ZSYmCisgICAgICAgICAgICAgIHN0ZDo6aXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8
YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSkKKyAgICAgIDogY3RybF8oYWJzbDo6ZXhjaGFuZ2UodGhh
dC5jdHJsXywgRW1wdHlHcm91cCgpKSksCisgICAgICAgIHNsb3RzXyhhYnNsOjpleGNoYW5nZSh0
aGF0LnNsb3RzXywgbnVsbHB0cikpLAorICAgICAgICBzaXplXyhhYnNsOjpleGNoYW5nZSh0aGF0
LnNpemVfLCAwKSksCisgICAgICAgIGNhcGFjaXR5XyhhYnNsOjpleGNoYW5nZSh0aGF0LmNhcGFj
aXR5XywgMCkpLAorICAgICAgICAvLyBIYXNoLCBlcXVhbGl0eSBhbmQgYWxsb2NhdG9yIGFyZSBj
b3BpZWQgaW5zdGVhZCBvZiBtb3ZlZCBiZWNhdXNlCisgICAgICAgIC8vIGB0aGF0YCBtdXN0IGJl
IGxlZnQgdmFsaWQuIElmIEhhc2ggaXMgc3RkOjpmdW5jdGlvbjxLZXk+LCBtb3ZpbmcgaXQKKyAg
ICAgICAgLy8gd291bGQgY3JlYXRlIGEgbnVsbHB0ciBmdW5jdG9yIHRoYXQgY2Fubm90IGJlIGNh
bGxlZC4KKyAgICAgICAgc2V0dGluZ3NfKHRoYXQuc2V0dGluZ3NfKSB7CisgICAgLy8gZ3Jvd3Ro
X2xlZnQgd2FzIGNvcGllZCBhYm92ZSwgcmVzZXQgdGhlIG9uZSBmcm9tIGB0aGF0YC4KKyAgICB0
aGF0Lmdyb3d0aF9sZWZ0KCkgPSAwOworICB9CisKKyAgcmF3X2hhc2hfc2V0KHJhd19oYXNoX3Nl
dCYmIHRoYXQsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhKQorICAgICAgOiBjdHJsXyhFbXB0eUdy
b3VwKCkpLAorICAgICAgICBzbG90c18obnVsbHB0ciksCisgICAgICAgIHNpemVfKDApLAorICAg
ICAgICBjYXBhY2l0eV8oMCksCisgICAgICAgIHNldHRpbmdzXygwLCB0aGF0Lmhhc2hfcmVmKCks
IHRoYXQuZXFfcmVmKCksIGEpIHsKKyAgICBpZiAoYSA9PSB0aGF0LmFsbG9jX3JlZigpKSB7Cisg
ICAgICBzdGQ6OnN3YXAoY3RybF8sIHRoYXQuY3RybF8pOworICAgICAgc3RkOjpzd2FwKHNsb3Rz
XywgdGhhdC5zbG90c18pOworICAgICAgc3RkOjpzd2FwKHNpemVfLCB0aGF0LnNpemVfKTsKKyAg
ICAgIHN0ZDo6c3dhcChjYXBhY2l0eV8sIHRoYXQuY2FwYWNpdHlfKTsKKyAgICAgIHN0ZDo6c3dh
cChncm93dGhfbGVmdCgpLCB0aGF0Lmdyb3d0aF9sZWZ0KCkpOworICAgIH0gZWxzZSB7CisgICAg
ICByZXNlcnZlKHRoYXQuc2l6ZSgpKTsKKyAgICAgIC8vIE5vdGU6IHRoaXMgd2lsbCBjb3B5IGVs
ZW1lbnRzIG9mIGRlbnNlX3NldCBhbmQgdW5vcmRlcmVkX3NldCBpbnN0ZWFkIG9mCisgICAgICAv
LyBtb3ZpbmcgdGhlbS4gVGhpcyBjYW4gYmUgZml4ZWQgaWYgaXQgZXZlciBiZWNvbWVzIGFuIGlz
c3VlLgorICAgICAgZm9yIChhdXRvJiBlbGVtIDogdGhhdCkgaW5zZXJ0KHN0ZDo6bW92ZShlbGVt
KSk7CisgICAgfQorICB9CisKKyAgcmF3X2hhc2hfc2V0JiBvcGVyYXRvcj0oY29uc3QgcmF3X2hh
c2hfc2V0JiB0aGF0KSB7CisgICAgcmF3X2hhc2hfc2V0IHRtcCh0aGF0LAorICAgICAgICAgICAg
ICAgICAgICAgQWxsb2NUcmFpdHM6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25t
ZW50Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhhdC5hbGxvY19yZWYoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgIDogYWxsb2NfcmVmKCkpOworICAgIHN3YXAodG1wKTsK
KyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICByYXdfaGFzaF9zZXQmIG9wZXJhdG9yPShyYXdf
aGFzaF9zZXQmJiB0aGF0KSBub2V4Y2VwdCgKKyAgICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8
YWxsb2NhdG9yX3R5cGU+Ojppc19hbHdheXNfZXF1YWw6OnZhbHVlJiYKKyAgICAgICAgICBzdGQ6
OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPGhhc2hlcj46OnZhbHVlJiYKKyAgICAgICAgICAg
ICAgc3RkOjppc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxrZXlfZXF1YWw+Ojp2YWx1ZSkgewor
ICAgIC8vIFRPRE8oc2JlbnphKTogV2Ugc2hvdWxkIG9ubHkgdXNlIHRoZSBvcGVyYXRpb25zIGZy
b20gdGhlIG5vZXhjZXB0IGNsYXVzZQorICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBh
ZGhlcmUgdG8gdGhhdCBjb250cmFjdC4KKyAgICByZXR1cm4gbW92ZV9hc3NpZ24oCisgICAgICAg
IHN0ZDo6bW92ZSh0aGF0KSwKKyAgICAgICAgdHlwZW5hbWUgQWxsb2NUcmFpdHM6OnByb3BhZ2F0
ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50KCkpOworICB9CisKKyAgfnJhd19oYXNoX3Nl
dCgpIHsgZGVzdHJveV9zbG90cygpOyB9CisKKyAgaXRlcmF0b3IgYmVnaW4oKSB7CisgICAgYXV0
byBpdCA9IGl0ZXJhdG9yX2F0KDApOworICAgIGl0LnNraXBfZW1wdHlfb3JfZGVsZXRlZCgpOwor
ICAgIHJldHVybiBpdDsKKyAgfQorICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiB7Y3RybF8gKyBj
YXBhY2l0eV99OyB9CisKKyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7CisgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8cmF3X2hhc2hfc2V0Kj4odGhpcyktPmJlZ2luKCk7CisgIH0KKyAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxyYXdfaGFzaF9zZXQq
Pih0aGlzKS0+ZW5kKCk7IH0KKyAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1
cm4gYmVnaW4oKTsgfQorICBjb25zdF9pdGVyYXRvciBjZW5kKCkgY29uc3QgeyByZXR1cm4gZW5k
KCk7IH0KKworICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQorICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVfOyB9CisgIHNpemVfdCBjYXBhY2l0eSgpIGNv
bnN0IHsgcmV0dXJuIGNhcGFjaXR5XzsgfQorICBzaXplX3QgbWF4X3NpemUoKSBjb25zdCB7IHJl
dHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOyB9CisKKyAgdm9pZCBjbGVh
cigpIHsKKyAgICAvLyBJdGVyYXRpbmcgb3ZlciB0aGlzIGNvbnRhaW5lciBpcyBPKGJ1Y2tldF9j
b3VudCgpKS4gV2hlbiBidWNrZXRfY291bnQoKQorICAgIC8vIGlzIG11Y2ggZ3JlYXRlciB0aGFu
IHNpemUoKSwgaXRlcmF0aW9uIGJlY29tZXMgcHJvaGliaXRpdmVseSBleHBlbnNpdmUuCisgICAg
Ly8gRm9yIGNsZWFyKCkgaXQgaXMgbW9yZSBpbXBvcnRhbnQgdG8gcmV1c2UgdGhlIGFsbG9jYXRl
ZCBhcnJheSB3aGVuIHRoZQorICAgIC8vIGNvbnRhaW5lciBpcyBzbWFsbCBiZWNhdXNlIGFsbG9j
YXRpb24gdGFrZXMgY29tcGFyYXRpdmVseSBsb25nIHRpbWUKKyAgICAvLyBjb21wYXJlZCB0byBk
ZXN0cnVjdGlvbiBvZiB0aGUgZWxlbWVudHMgb2YgdGhlIGNvbnRhaW5lci4gU28gd2UgcGljayB0
aGUKKyAgICAvLyBsYXJnZXN0IGJ1Y2tldF9jb3VudCgpIHRocmVzaG9sZCBmb3Igd2hpY2ggaXRl
cmF0aW9uIGlzIHN0aWxsIGZhc3QgYW5kCisgICAgLy8gcGFzdCB0aGF0IHdlIHNpbXBseSBkZWFs
bG9jYXRlIHRoZSBhcnJheS4KKyAgICBpZiAoY2FwYWNpdHlfID4gMTI3KSB7CisgICAgICBkZXN0
cm95X3Nsb3RzKCk7CisgICAgfSBlbHNlIGlmIChjYXBhY2l0eV8pIHsKKyAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpICE9IGNhcGFjaXR5XzsgKytpKSB7CisgICAgICAgIGlmIChJc0Z1bGwoY3Ry
bF9baV0pKSB7CisgICAgICAgICAgUG9saWN5VHJhaXRzOjpkZXN0cm95KCZhbGxvY19yZWYoKSwg
c2xvdHNfICsgaSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHNpemVfID0gMDsKKyAgICAg
IHJlc2V0X2N0cmwoKTsKKyAgICAgIGdyb3d0aF9sZWZ0KCkgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KGNhcGFjaXR5XyAqIGtNYXhMb2FkRmFjdG9yKTsKKyAgICB9CisgICAgYXNzZXJ0KGVtcHR5KCkp
OworICB9CisKKyAgLy8gVGhpcyBvdmVybG9hZCBraWNrcyBpbiB3aGVuIHRoZSBhcmd1bWVudCBp
cyBhbiBydmFsdWUgb2YgaW5zZXJ0YWJsZSBhbmQKKyAgLy8gZGVjb21wb3NhYmxlIHR5cGUgb3Ro
ZXIgdGhhbiBpbml0X3R5cGUuCisgIC8vCisgIC8vICAgZmxhdF9oYXNoX21hcDxzdGQ6OnN0cmlu
ZywgaW50PiBtOworICAvLyAgIG0uaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKCJhYmMiLCA0MikpOwor
ICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgUmVxdWlyZXNJbnNlcnRhYmxlPFQ+ID0gMCwKKyAgICAgICAg
ICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzRGVjb21wb3NhYmxlPFQ+Ojp2YWx1ZSwgaW50
Pjo6dHlwZSA9IDAsCisgICAgICAgICAgICBUKiA9IG51bGxwdHI+CisgIHN0ZDo6cGFpcjxpdGVy
YXRvciwgYm9vbD4gaW5zZXJ0KFQmJiB2YWx1ZSkgeworICAgIHJldHVybiBlbXBsYWNlKHN0ZDo6
Zm9yd2FyZDxUPih2YWx1ZSkpOworICB9CisKKyAgLy8gVGhpcyBvdmVybG9hZCBraWNrcyBpbiB3
aGVuIHRoZSBhcmd1bWVudCBpcyBhIGJpdGZpZWxkIG9yIGFuIGx2YWx1ZSBvZgorICAvLyBpbnNl
cnRhYmxlIGFuZCBkZWNvbXBvc2FibGUgdHlwZS4KKyAgLy8KKyAgLy8gICB1bmlvbiB7IGludCBu
IDogMTsgfTsKKyAgLy8gICBmbGF0X2hhc2hfc2V0PGludD4gczsKKyAgLy8gICBzLmluc2VydChu
KTsKKyAgLy8KKyAgLy8gICBmbGF0X2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBzOworICAvLyAgIGNv
bnN0IGNoYXIqIHAgPSAiaGVsbG8iOworICAvLyAgIHMuaW5zZXJ0KHApOworICAvLworICAvLyBU
T0RPKHJvbWFucCk6IE9uY2Ugd2Ugc3RvcCBzdXBwb3J0aW5nIGdjYyA1LjEgYW5kIGJlbG93LCBy
ZXBsYWNlCisgIC8vIFJlcXVpcmVzSW5zZXJ0YWJsZTxUPiB3aXRoIFJlcXVpcmVzSW5zZXJ0YWJs
ZTxjb25zdCBUJj4uCisgIC8vIFdlIGFyZSBoaXR0aW5nIHRoaXMgYnVnOiBodHRwczovL2dvZGJv
bHQub3JnL2cvMVZodDRmLgorICB0ZW1wbGF0ZSA8CisgICAgICBjbGFzcyBULCBSZXF1aXJlc0lu
c2VydGFibGU8VD4gPSAwLAorICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNEZWNvbXBv
c2FibGU8Y29uc3QgVCY+Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9IDA+CisgIHN0ZDo6cGFpcjxpdGVy
YXRvciwgYm9vbD4gaW5zZXJ0KGNvbnN0IFQmIHZhbHVlKSB7CisgICAgcmV0dXJuIGVtcGxhY2Uo
dmFsdWUpOworICB9CisKKyAgLy8gVGhpcyBvdmVybG9hZCBraWNrcyBpbiB3aGVuIHRoZSBhcmd1
bWVudCBpcyBhbiBydmFsdWUgb2YgaW5pdF90eXBlLiBJdHMKKyAgLy8gcHVycG9zZSBpcyB0byBo
YW5kbGUgYnJhY2UtaW5pdC1saXN0IGFyZ3VtZW50cy4KKyAgLy8KKyAgLy8gICBmbGF0X2hhc2hf
c2V0PHN0ZDo6c3RyaW5nLCBpbnQ+IHM7CisgIC8vICAgcy5pbnNlcnQoeyJhYmMiLCA0Mn0pOwor
ICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydChpbml0X3R5cGUmJiB2YWx1ZSkgewor
ICAgIHJldHVybiBlbXBsYWNlKHN0ZDo6bW92ZSh2YWx1ZSkpOworICB9CisKKyAgdGVtcGxhdGUg
PGNsYXNzIFQsIFJlcXVpcmVzSW5zZXJ0YWJsZTxUPiA9IDAsCisgICAgICAgICAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxJc0RlY29tcG9zYWJsZTxUPjo6dmFsdWUsIGludD46OnR5cGUgPSAw
LAorICAgICAgICAgICAgVCogPSBudWxscHRyPgorICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRl
cmF0b3IsIFQmJiB2YWx1ZSkgeworICAgIHJldHVybiBpbnNlcnQoc3RkOjpmb3J3YXJkPFQ+KHZh
bHVlKSkuZmlyc3Q7CisgIH0KKworICAvLyBUT0RPKHJvbWFucCk6IE9uY2Ugd2Ugc3RvcCBzdXBw
b3J0aW5nIGdjYyA1LjEgYW5kIGJlbG93LCByZXBsYWNlCisgIC8vIFJlcXVpcmVzSW5zZXJ0YWJs
ZTxUPiB3aXRoIFJlcXVpcmVzSW5zZXJ0YWJsZTxjb25zdCBUJj4uCisgIC8vIFdlIGFyZSBoaXR0
aW5nIHRoaXMgYnVnOiBodHRwczovL2dvZGJvbHQub3JnL2cvMVZodDRmLgorICB0ZW1wbGF0ZSA8
CisgICAgICBjbGFzcyBULCBSZXF1aXJlc0luc2VydGFibGU8VD4gPSAwLAorICAgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNEZWNvbXBvc2FibGU8Y29uc3QgVCY+Ojp2YWx1ZSwgaW50Pjo6
dHlwZSA9IDA+CisgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciwgY29uc3QgVCYgdmFs
dWUpIHsKKyAgICByZXR1cm4gaW5zZXJ0KHZhbHVlKS5maXJzdDsKKyAgfQorCisgIGl0ZXJhdG9y
IGluc2VydChjb25zdF9pdGVyYXRvciwgaW5pdF90eXBlJiYgdmFsdWUpIHsKKyAgICByZXR1cm4g
aW5zZXJ0KHN0ZDo6bW92ZSh2YWx1ZSkpLmZpcnN0OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNz
IElucHV0SXQ+CisgIHZvaWQgaW5zZXJ0KElucHV0SXQgZmlyc3QsIElucHV0SXQgbGFzdCkgewor
ICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KSBpbnNlcnQoKmZpcnN0KTsKKyAgfQor
CisgIHRlbXBsYXRlIDxjbGFzcyBULCBSZXF1aXJlc05vdEluaXQ8VD4gPSAwLCBSZXF1aXJlc0lu
c2VydGFibGU8Y29uc3QgVCY+ID0gMD4KKyAgdm9pZCBpbnNlcnQoc3RkOjppbml0aWFsaXplcl9s
aXN0PFQ+IGlsaXN0KSB7CisgICAgaW5zZXJ0KGlsaXN0LmJlZ2luKCksIGlsaXN0LmVuZCgpKTsK
KyAgfQorCisgIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGls
aXN0KSB7CisgICAgaW5zZXJ0KGlsaXN0LmJlZ2luKCksIGlsaXN0LmVuZCgpKTsKKyAgfQorCisg
IGluc2VydF9yZXR1cm5fdHlwZTxpdGVyYXRvciwgbm9kZV90eXBlPiBpbnNlcnQobm9kZV90eXBl
JiYgbm9kZSkgeworICAgIGlmICghbm9kZSkgcmV0dXJuIHtlbmQoKSwgZmFsc2UsIG5vZGVfdHlw
ZSgpfTsKKyAgICBjb25zdCBhdXRvJiBlbGVtID0gUG9saWN5VHJhaXRzOjplbGVtZW50KG5vZGUu
c2xvdCgpKTsKKyAgICBhdXRvIHJlcyA9IFBvbGljeVRyYWl0czo6YXBwbHkoCisgICAgICAgIElu
c2VydFNsb3Q8ZmFsc2U+eyp0aGlzLCBzdGQ6Om1vdmUoKm5vZGUuc2xvdCgpKX0sIGVsZW0pOwor
ICAgIGlmIChyZXMuc2Vjb25kKSB7CisgICAgICBub2RlLnJlc2V0KCk7CisgICAgICByZXR1cm4g
e3Jlcy5maXJzdCwgdHJ1ZSwgbm9kZV90eXBlKCl9OworICAgIH0gZWxzZSB7CisgICAgICByZXR1
cm4ge3Jlcy5maXJzdCwgZmFsc2UsIHN0ZDo6bW92ZShub2RlKX07CisgICAgfQorICB9CisKKyAg
aXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yLCBub2RlX3R5cGUmJiBub2RlKSB7CisgICAg
cmV0dXJuIGluc2VydChzdGQ6Om1vdmUobm9kZSkpLmZpcnN0OworICB9CisKKyAgLy8gVGhpcyBv
dmVybG9hZCBraWNrcyBpbiBpZiB3ZSBjYW4gZGVkdWNlIHRoZSBrZXkgZnJvbSBhcmdzLiBUaGlz
IGVuYWJsZXMgdXMKKyAgLy8gdG8gYXZvaWQgY29uc3RydWN0aW5nIHZhbHVlX3R5cGUgaWYgYW4g
ZW50cnkgd2l0aCB0aGUgc2FtZSBrZXkgYWxyZWFkeQorICAvLyBleGlzdHMuCisgIC8vCisgIC8v
IEZvciBleGFtcGxlOgorICAvLworICAvLyAgIGZsYXRfaGFzaF9tYXA8c3RkOjpzdHJpbmcsIHN0
ZDo6c3RyaW5nPiBtID0ge3siYWJjIiwgImRlZiJ9fTsKKyAgLy8gICAvLyBDcmVhdGVzIG5vIHN0
ZDo6c3RyaW5nIGNvcGllcyBhbmQgbWFrZXMgbm8gaGVhcCBhbGxvY2F0aW9ucy4KKyAgLy8gICBt
LmVtcGxhY2UoImFiYyIsICJ4eXoiKTsKKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3MsIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzRGVj
b21wb3NhYmxlPEFyZ3MuLi4+Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9IDA+CisgIHN0ZDo6cGFpcjxp
dGVyYXRvciwgYm9vbD4gZW1wbGFjZShBcmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiBQb2xp
Y3lUcmFpdHM6OmFwcGx5KEVtcGxhY2VEZWNvbXBvc2FibGV7KnRoaXN9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKwor
ICAvLyBUaGlzIG92ZXJsb2FkIGtpY2tzIGluIGlmIHdlIGNhbm5vdCBkZWR1Y2UgdGhlIGtleSBm
cm9tIGFyZ3MuIEl0IGNvbnN0cnVjdHMKKyAgLy8gdmFsdWVfdHlwZSB1bmNvbmRpdGlvbmFsbHkg
YW5kIHRoZW4gZWl0aGVyIG1vdmVzIGl0IGludG8gdGhlIHRhYmxlIG9yCisgIC8vIGRlc3Ryb3lz
LgorICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncywgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIUlzRGVjb21wb3NhYmxlPEFyZ3MuLi4+Ojp2
YWx1ZSwgaW50Pjo6dHlwZSA9IDA+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFj
ZShBcmdzJiYuLi4gYXJncykgeworICAgIHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNp
emVvZihzbG90X3R5cGUpLCBhbGlnbm9mKHNsb3RfdHlwZSk+Ojp0eXBlCisgICAgICAgIHJhdzsK
KyAgICBzbG90X3R5cGUqIHNsb3QgPSByZWludGVycHJldF9jYXN0PHNsb3RfdHlwZSo+KCZyYXcp
OworCisgICAgUG9saWN5VHJhaXRzOjpjb25zdHJ1Y3QoJmFsbG9jX3JlZigpLCBzbG90LCBzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIGNvbnN0IGF1dG8mIGVsZW0gPSBQb2xpY3lU
cmFpdHM6OmVsZW1lbnQoc2xvdCk7CisgICAgcmV0dXJuIFBvbGljeVRyYWl0czo6YXBwbHkoSW5z
ZXJ0U2xvdDx0cnVlPnsqdGhpcywgc3RkOjptb3ZlKCpzbG90KX0sIGVsZW0pOworICB9CisKKyAg
dGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9p
dGVyYXRvciwgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICByZXR1cm4gZW1wbGFjZShzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pLmZpcnN0OworICB9CisKKyAgLy8gRXh0ZW5zaW9uIEFQSTogc3Vw
cG9ydCBmb3IgbGF6eSBlbXBsYWNlLgorICAvLworICAvLyBMb29rcyB1cCBrZXkgaW4gdGhlIHRh
YmxlLiBJZiBmb3VuZCwgcmV0dXJucyB0aGUgaXRlcmF0b3IgdG8gdGhlIGVsZW1lbnQuCisgIC8v
IE90aGVyd2lzZSBjYWxscyBmIHdpdGggb25lIGFyZ3VtZW50IG9mIHR5cGUgcmF3X2hhc2hfc2V0
Ojpjb25zdHJ1Y3Rvci4gZgorICAvLyBNVVNUIGNhbGwgcmF3X2hhc2hfc2V0Ojpjb25zdHJ1Y3Rv
ciB3aXRoIGFyZ3VtZW50cyBhcyBpZiBhCisgIC8vIHJhd19oYXNoX3NldDo6dmFsdWVfdHlwZSBp
cyBjb25zdHJ1Y3RlZCwgb3RoZXJ3aXNlIHRoZSBiZWhhdmlvciBpcworICAvLyB1bmRlZmluZWQu
CisgIC8vCisgIC8vIEZvciBleGFtcGxlOgorICAvLworICAvLyAgIHN0ZDo6dW5vcmRlcmVkX3Nl
dDxBcmVuYVN0cmluZz4gczsKKyAgLy8gICAvLyBNYWtlcyBBcmVuYVN0ciBldmVuIGlmICJhYmMi
IGlzIGluIHRoZSBtYXAuCisgIC8vICAgcy5pbnNlcnQoQXJlbmFTdHJpbmcoJmFyZW5hLCAiYWJj
IikpOworICAvLworICAvLyAgIGZsYXRfaGFzaF9zZXQ8QXJlbmFTdHI+IHM7CisgIC8vICAgLy8g
TWFrZXMgQXJlbmFTdHIgb25seSBpZiAiYWJjIiBpcyBub3QgaW4gdGhlIG1hcC4KKyAgLy8gICBz
LmxhenlfZW1wbGFjZSgiYWJjIiwgWyZdKGNvbnN0IGNvbnN0cnVjdG9yJiBjdG9yKSB7CisgIC8v
ICAgICBjdG9yKCZhcmVuYSwgImFiYyIpOworICAvLyAgIH0pOworICAvLworICAvLyBXQVJOSU5H
OiBUaGlzIEFQSSBpcyBjdXJyZW50bHkgZXhwZXJpbWVudGFsLiBJZiB0aGVyZSBpcyBhIHdheSB0
byBpbXBsZW1lbnQKKyAgLy8gdGhlIHNhbWUgdGhpbmcgd2l0aCB0aGUgcmVzdCBvZiB0aGUgQVBJ
LCBwcmVmZXIgdGhhdC4KKyAgY2xhc3MgY29uc3RydWN0b3IgeworICAgIGZyaWVuZCBjbGFzcyBy
YXdfaGFzaF9zZXQ7CisKKyAgIHB1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4K
KyAgICB2b2lkIG9wZXJhdG9yKCkoQXJncyYmLi4uIGFyZ3MpIGNvbnN0IHsKKyAgICAgIGFzc2Vy
dCgqc2xvdF8pOworICAgICAgUG9saWN5VHJhaXRzOjpjb25zdHJ1Y3QoYWxsb2NfLCAqc2xvdF8s
IHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAqc2xvdF8gPSBudWxscHRyOwor
ICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBjb25zdHJ1Y3RvcihhbGxvY2F0b3JfdHlwZSogYSwg
c2xvdF90eXBlKiogc2xvdCkgOiBhbGxvY18oYSksIHNsb3RfKHNsb3QpIHt9CisKKyAgICBhbGxv
Y2F0b3JfdHlwZSogYWxsb2NfOworICAgIHNsb3RfdHlwZSoqIHNsb3RfOworICB9OworCisgIHRl
bXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzIEY+CisgIGl0ZXJhdG9yIGxhenlfZW1w
bGFjZShjb25zdCBrZXlfYXJnPEs+JiBrZXksIEYmJiBmKSB7CisgICAgYXV0byByZXMgPSBmaW5k
X29yX3ByZXBhcmVfaW5zZXJ0KGtleSk7CisgICAgaWYgKHJlcy5zZWNvbmQpIHsKKyAgICAgIHNs
b3RfdHlwZSogc2xvdCA9IHNsb3RzXyArIHJlcy5maXJzdDsKKyAgICAgIHN0ZDo6Zm9yd2FyZDxG
PihmKShjb25zdHJ1Y3RvcigmYWxsb2NfcmVmKCksICZzbG90KSk7CisgICAgICBhc3NlcnQoIXNs
b3QpOworICAgIH0KKyAgICByZXR1cm4gaXRlcmF0b3JfYXQocmVzLmZpcnN0KTsKKyAgfQorCisg
IC8vIEV4dGVuc2lvbiBBUEk6IHN1cHBvcnQgZm9yIGhldGVyb2dlbmVvdXMga2V5cy4KKyAgLy8K
KyAgLy8gICBzdGQ6OnVub3JkZXJlZF9zZXQ8c3RkOjpzdHJpbmc+IHM7CisgIC8vICAgLy8gVHVy
bnMgImFiYyIgaW50byBzdGQ6OnN0cmluZy4KKyAgLy8gICBzLmVyYXNlKCJhYmMiKTsKKyAgLy8K
KyAgLy8gICBmbGF0X2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBzOworICAvLyAgIC8vIFVzZXMgImFi
YyIgZGlyZWN0bHkgd2l0aG91dCBjb3B5aW5nIGl0IGludG8gc3RkOjpzdHJpbmcuCisgIC8vICAg
cy5lcmFzZSgiYWJjIik7CisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGU+CisgIHNpemVf
dHlwZSBlcmFzZShjb25zdCBrZXlfYXJnPEs+JiBrZXkpIHsKKyAgICBhdXRvIGl0ID0gZmluZChr
ZXkpOworICAgIGlmIChpdCA9PSBlbmQoKSkgcmV0dXJuIDA7CisgICAgZXJhc2UoaXQpOworICAg
IHJldHVybiAxOworICB9CisKKyAgLy8gRXJhc2VzIHRoZSBlbGVtZW50IHBvaW50ZWQgdG8gYnkg
YGl0YC4gIFVubGlrZSBgc3RkOjp1bm9yZGVyZWRfc2V0OjplcmFzZWAsCisgIC8vIHRoaXMgbWV0
aG9kIHJldHVybnMgdm9pZCB0byByZWR1Y2UgYWxnb3JpdGhtaWMgY29tcGxleGl0eSB0byBPKDEp
LiAgSW4KKyAgLy8gb3JkZXIgdG8gZXJhc2Ugd2hpbGUgaXRlcmF0aW5nIGFjcm9zcyBhIG1hcCwg
dXNlIHRoZSBmb2xsb3dpbmcgaWRpb20gKHdoaWNoCisgIC8vIGFsc28gd29ya3MgZm9yIHN0YW5k
YXJkIGNvbnRhaW5lcnMpOgorICAvLworICAvLyBmb3IgKGF1dG8gaXQgPSBtLmJlZ2luKCksIGVu
ZCA9IG0uZW5kKCk7IGl0ICE9IGVuZDspIHsKKyAgLy8gICBpZiAoPHByZWQ+KSB7CisgIC8vICAg
ICBtLmVyYXNlKGl0KyspOworICAvLyAgIH0gZWxzZSB7CisgIC8vICAgICArK2l0OworICAvLyAg
IH0KKyAgLy8gfQorICB2b2lkIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGNpdCkgeyBlcmFzZShjaXQu
aW5uZXJfKTsgfQorCisgIC8vIFRoaXMgb3ZlcmxvYWQgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugb3Ro
ZXJ3aXNlIGVyYXNlPEs+KGNvbnN0IEsmKSB3b3VsZCBiZQorICAvLyBhIGJldHRlciBtYXRjaCBp
ZiBub24tY29uc3QgaXRlcmF0b3IgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LgorICB2b2lkIGVy
YXNlKGl0ZXJhdG9yIGl0KSB7CisgICAgYXNzZXJ0KGl0ICE9IGVuZCgpKTsKKyAgICBQb2xpY3lU
cmFpdHM6OmRlc3Ryb3koJmFsbG9jX3JlZigpLCBpdC5zbG90Xyk7CisgICAgZXJhc2VfbWV0YV9v
bmx5KGl0KTsKKyAgfQorCisgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBj
b25zdF9pdGVyYXRvciBsYXN0KSB7CisgICAgd2hpbGUgKGZpcnN0ICE9IGxhc3QpIHsKKyAgICAg
IGVyYXNlKGZpcnN0KyspOworICAgIH0KKyAgICByZXR1cm4gbGFzdC5pbm5lcl87CisgIH0KKwor
ICAvLyBNb3ZlcyBlbGVtZW50cyBmcm9tIGBzcmNgIGludG8gYHRoaXNgLgorICAvLyBJZiB0aGUg
ZWxlbWVudCBhbHJlYWR5IGV4aXN0cyBpbiBgdGhpc2AsIGl0IGlzIGxlZnQgdW5tb2RpZmllZCBp
biBgc3JjYC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIEU+CisgIHZvaWQgbWVy
Z2UocmF3X2hhc2hfc2V0PFBvbGljeSwgSCwgRSwgQWxsb2M+JiBzcmMpIHsgIC8vIE5PTElOVAor
ICAgIGFzc2VydCh0aGlzICE9ICZzcmMpOworICAgIGZvciAoYXV0byBpdCA9IHNyYy5iZWdpbigp
LCBlID0gc3JjLmVuZCgpOyBpdCAhPSBlOyArK2l0KSB7CisgICAgICBpZiAoUG9saWN5VHJhaXRz
OjphcHBseShJbnNlcnRTbG90PGZhbHNlPnsqdGhpcywgc3RkOjptb3ZlKCppdC5zbG90Xyl9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9saWN5VHJhaXRzOjplbGVtZW50KGl0LnNs
b3RfKSkKKyAgICAgICAgICAgICAgLnNlY29uZCkgeworICAgICAgICBzcmMuZXJhc2VfbWV0YV9v
bmx5KGl0KTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwg
dHlwZW5hbWUgRT4KKyAgdm9pZCBtZXJnZShyYXdfaGFzaF9zZXQ8UG9saWN5LCBILCBFLCBBbGxv
Yz4mJiBzcmMpIHsKKyAgICBtZXJnZShzcmMpOworICB9CisKKyAgbm9kZV90eXBlIGV4dHJhY3Qo
Y29uc3RfaXRlcmF0b3IgcG9zaXRpb24pIHsKKyAgICBub2RlX3R5cGUgbm9kZShhbGxvY19yZWYo
KSwgcG9zaXRpb24uaW5uZXJfLnNsb3RfKTsKKyAgICBlcmFzZV9tZXRhX29ubHkocG9zaXRpb24p
OworICAgIHJldHVybiBub2RlOworICB9CisKKyAgdGVtcGxhdGUgPAorICAgICAgY2xhc3MgSyA9
IGtleV90eXBlLAorICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxL
LCBpdGVyYXRvcj46OnZhbHVlLCBpbnQ+Ojp0eXBlID0gMD4KKyAgbm9kZV90eXBlIGV4dHJhY3Qo
Y29uc3Qga2V5X2FyZzxLPiYga2V5KSB7CisgICAgYXV0byBpdCA9IGZpbmQoa2V5KTsKKyAgICBy
ZXR1cm4gaXQgPT0gZW5kKCkgPyBub2RlX3R5cGUoKSA6IGV4dHJhY3QoY29uc3RfaXRlcmF0b3J7
aXR9KTsKKyAgfQorCisgIHZvaWQgc3dhcChyYXdfaGFzaF9zZXQmIHRoYXQpIG5vZXhjZXB0KAor
ICAgICAgSXNOb1Rocm93U3dhcHBhYmxlPGhhc2hlcj4oKSAmJiBJc05vVGhyb3dTd2FwcGFibGU8
a2V5X2VxdWFsPigpICYmCisgICAgICAoIUFsbG9jVHJhaXRzOjpwcm9wYWdhdGVfb25fY29udGFp
bmVyX3N3YXA6OnZhbHVlIHx8CisgICAgICAgSXNOb1Rocm93U3dhcHBhYmxlPGFsbG9jYXRvcl90
eXBlPigpKSkgeworICAgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgICBzd2FwKGN0cmxfLCB0aGF0LmN0
cmxfKTsKKyAgICBzd2FwKHNsb3RzXywgdGhhdC5zbG90c18pOworICAgIHN3YXAoc2l6ZV8sIHRo
YXQuc2l6ZV8pOworICAgIHN3YXAoY2FwYWNpdHlfLCB0aGF0LmNhcGFjaXR5Xyk7CisgICAgc3dh
cChncm93dGhfbGVmdCgpLCB0aGF0Lmdyb3d0aF9sZWZ0KCkpOworICAgIHN3YXAoaGFzaF9yZWYo
KSwgdGhhdC5oYXNoX3JlZigpKTsKKyAgICBzd2FwKGVxX3JlZigpLCB0aGF0LmVxX3JlZigpKTsK
KyAgICBpZiAoQWxsb2NUcmFpdHM6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWUp
IHsKKyAgICAgIHN3YXAoYWxsb2NfcmVmKCksIHRoYXQuYWxsb2NfcmVmKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAvLyBJZiB0aGUgYWxsb2NhdG9ycyBkbyBub3QgY29tcGFyZSBlcXVhbCBpdCBp
cyBvZmZpY2lhbGx5IHVuZGVmaW5lZAorICAgICAgLy8gYmVoYXZpb3IuIFdlIGNob29zZSB0byBk
byBub3RoaW5nLgorICAgIH0KKyAgfQorCisgIHZvaWQgcmVoYXNoKHNpemVfdCBuKSB7CisgICAg
aWYgKG4gPT0gMCAmJiBjYXBhY2l0eV8gPT0gMCkgcmV0dXJuOworICAgIGlmIChuID09IDAgJiYg
c2l6ZV8gPT0gMCkgcmV0dXJuIGRlc3Ryb3lfc2xvdHMoKTsKKyAgICBhdXRvIG0gPSBOb3JtYWxp
emVDYXBhY2l0eShzdGQ6Om1heChuLCBOdW1TbG90c0Zhc3Qoc2l6ZSgpKSkpOworICAgIC8vIG4g
PT0gMCB1bmNvbmRpdGlvbmFsbHkgcmVoYXNoZXMgYXMgcGVyIHRoZSBzdGFuZGFyZC4KKyAgICBp
ZiAobiA9PSAwIHx8IG0gPiBjYXBhY2l0eV8pIHsKKyAgICAgIHJlc2l6ZShtKTsKKyAgICB9Cisg
IH0KKworICB2b2lkIHJlc2VydmUoc2l6ZV90IG4pIHsKKyAgICByZWhhc2goTnVtU2xvdHNGYXN0
KG4pKTsKKyAgfQorCisgIC8vIEV4dGVuc2lvbiBBUEk6IHN1cHBvcnQgZm9yIGhldGVyb2dlbmVv
dXMga2V5cy4KKyAgLy8KKyAgLy8gICBzdGQ6OnVub3JkZXJlZF9zZXQ8c3RkOjpzdHJpbmc+IHM7
CisgIC8vICAgLy8gVHVybnMgImFiYyIgaW50byBzdGQ6OnN0cmluZy4KKyAgLy8gICBzLmNvdW50
KCJhYmMiKTsKKyAgLy8KKyAgLy8gICBjaF9zZXQ8c3RkOjpzdHJpbmc+IHM7CisgIC8vICAgLy8g
VXNlcyAiYWJjIiBkaXJlY3RseSB3aXRob3V0IGNvcHlpbmcgaXQgaW50byBzdGQ6OnN0cmluZy4K
KyAgLy8gICBzLmNvdW50KCJhYmMiKTsKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZT4K
KyAgc2l6ZV90IGNvdW50KGNvbnN0IGtleV9hcmc8Sz4mIGtleSkgY29uc3QgeworICAgIHJldHVy
biBmaW5kKGtleSkgPT0gZW5kKCkgPyAwIDogMTsKKyAgfQorCisgIC8vIElzc3VlcyBDUFUgcHJl
ZmV0Y2ggaW5zdHJ1Y3Rpb25zIGZvciB0aGUgbWVtb3J5IG5lZWRlZCB0byBmaW5kIG9yIGluc2Vy
dAorICAvLyBhIGtleS4gIExpa2UgYWxsIGxvb2t1cCBmdW5jdGlvbnMsIHRoaXMgc3VwcG9ydCBo
ZXRlcm9nZW5lb3VzIGtleXMuCisgIC8vCisgIC8vIE5PVEU6IFRoaXMgaXMgYSB2ZXJ5IGxvdyBs
ZXZlbCBvcGVyYXRpb24gYW5kIHNob3VsZCBub3QgYmUgdXNlZCB3aXRob3V0CisgIC8vIHNwZWNp
ZmljIGJlbmNobWFya3MgaW5kaWNhdGluZyBpdHMgaW1wb3J0YW5jZS4KKyAgdGVtcGxhdGUgPGNs
YXNzIEsgPSBrZXlfdHlwZT4KKyAgdm9pZCBwcmVmZXRjaChjb25zdCBrZXlfYXJnPEs+JiBrZXkp
IGNvbnN0IHsKKyAgICAodm9pZClrZXk7CisjaWYgZGVmaW5lZChfX0dOVUNfXykKKyAgICBhdXRv
IHNlcSA9IHByb2JlKGhhc2hfcmVmKCkoa2V5KSk7CisgICAgX19idWlsdGluX3ByZWZldGNoKHN0
YXRpY19jYXN0PGNvbnN0IHZvaWQqPihjdHJsXyArIHNlcS5vZmZzZXQoKSkpOworICAgIF9fYnVp
bHRpbl9wcmVmZXRjaChzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oc2xvdHNfICsgc2VxLm9mZnNl
dCgpKSk7CisjZW5kaWYgIC8vIF9fR05VQ19fCisgIH0KKworICAvLyBUaGUgQVBJIG9mIGZpbmQo
KSBoYXMgdHdvIGV4dGVuc2lvbnMuCisgIC8vCisgIC8vIDEuIFRoZSBoYXNoIGNhbiBiZSBwYXNz
ZWQgYnkgdGhlIHVzZXIuIEl0IG11c3QgYmUgZXF1YWwgdG8gdGhlIGhhc2ggb2YgdGhlCisgIC8v
IGtleS4KKyAgLy8KKyAgLy8gMi4gVGhlIHR5cGUgb2YgdGhlIGtleSBhcmd1bWVudCBkb2Vzbid0
IGhhdmUgdG8gYmUga2V5X3R5cGUuIFRoaXMgaXMgc28KKyAgLy8gY2FsbGVkIGhldGVyb2dlbmVv
dXMga2V5IHN1cHBvcnQuCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGU+CisgIGl0ZXJh
dG9yIGZpbmQoY29uc3Qga2V5X2FyZzxLPiYga2V5LCBzaXplX3QgaGFzaCkgeworICAgIGF1dG8g
c2VxID0gcHJvYmUoaGFzaCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIEdyb3VwIGd7Y3Ry
bF8gKyBzZXEub2Zmc2V0KCl9OworICAgICAgZm9yIChpbnQgaSA6IGcuTWF0Y2goSDIoaGFzaCkp
KSB7CisgICAgICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShQb2xpY3lUcmFpdHM6OmFwcGx5KAor
ICAgICAgICAgICAgICAgIEVxdWFsRWxlbWVudDxLPntrZXksIGVxX3JlZigpfSwKKyAgICAgICAg
ICAgICAgICBQb2xpY3lUcmFpdHM6OmVsZW1lbnQoc2xvdHNfICsgc2VxLm9mZnNldChpKSkpKSkK
KyAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfYXQoc2VxLm9mZnNldChpKSk7CisgICAgICB9Cisg
ICAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUoZy5NYXRjaEVtcHR5KCkpKSByZXR1cm4gZW5kKCk7
CisgICAgICBzZXEubmV4dCgpOworICAgIH0KKyAgfQorICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtl
eV90eXBlPgorICBpdGVyYXRvciBmaW5kKGNvbnN0IGtleV9hcmc8Sz4mIGtleSkgeworICAgIHJl
dHVybiBmaW5kKGtleSwgaGFzaF9yZWYoKShrZXkpKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFz
cyBLID0ga2V5X3R5cGU+CisgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X2FyZzxLPiYg
a2V5LCBzaXplX3QgaGFzaCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PHJhd19oYXNo
X3NldCo+KHRoaXMpLT5maW5kKGtleSwgaGFzaCk7CisgIH0KKyAgdGVtcGxhdGUgPGNsYXNzIEsg
PSBrZXlfdHlwZT4KKyAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBrZXlfYXJnPEs+JiBrZXkp
IGNvbnN0IHsKKyAgICByZXR1cm4gZmluZChrZXksIGhhc2hfcmVmKCkoa2V5KSk7CisgIH0KKwor
ICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlPgorICBib29sIGNvbnRhaW5zKGNvbnN0IGtl
eV9hcmc8Sz4mIGtleSkgY29uc3QgeworICAgIHJldHVybiBmaW5kKGtleSkgIT0gZW5kKCk7Cisg
IH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlPgorICBzdGQ6OnBhaXI8aXRlcmF0
b3IsIGl0ZXJhdG9yPiBlcXVhbF9yYW5nZShjb25zdCBrZXlfYXJnPEs+JiBrZXkpIHsKKyAgICBh
dXRvIGl0ID0gZmluZChrZXkpOworICAgIGlmIChpdCAhPSBlbmQoKSkgcmV0dXJuIHtpdCwgc3Rk
OjpuZXh0KGl0KX07CisgICAgcmV0dXJuIHtpdCwgaXR9OworICB9CisgIHRlbXBsYXRlIDxjbGFz
cyBLID0ga2V5X3R5cGU+CisgIHN0ZDo6cGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0
b3I+IGVxdWFsX3JhbmdlKAorICAgICAgY29uc3Qga2V5X2FyZzxLPiYga2V5KSBjb25zdCB7Cisg
ICAgYXV0byBpdCA9IGZpbmQoa2V5KTsKKyAgICBpZiAoaXQgIT0gZW5kKCkpIHJldHVybiB7aXQs
IHN0ZDo6bmV4dChpdCl9OworICAgIHJldHVybiB7aXQsIGl0fTsKKyAgfQorCisgIHNpemVfdCBi
dWNrZXRfY291bnQoKSBjb25zdCB7IHJldHVybiBjYXBhY2l0eV87IH0KKyAgZmxvYXQgbG9hZF9m
YWN0b3IoKSBjb25zdCB7CisgICAgcmV0dXJuIGNhcGFjaXR5XyA/IHN0YXRpY19jYXN0PGRvdWJs
ZT4oc2l6ZSgpKSAvIGNhcGFjaXR5XyA6IDAuMDsKKyAgfQorICBmbG9hdCBtYXhfbG9hZF9mYWN0
b3IoKSBjb25zdCB7IHJldHVybiAxLjBmOyB9CisgIHZvaWQgbWF4X2xvYWRfZmFjdG9yKGZsb2F0
KSB7CisgICAgLy8gRG9lcyBub3RoaW5nLgorICB9CisKKyAgaGFzaGVyIGhhc2hfZnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBoYXNoX3JlZigpOyB9CisgIGtleV9lcXVhbCBrZXlfZXEoKSBjb25z
dCB7IHJldHVybiBlcV9yZWYoKTsgfQorICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkg
Y29uc3QgeyByZXR1cm4gYWxsb2NfcmVmKCk7IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IHJhd19oYXNoX3NldCYgYSwgY29uc3QgcmF3X2hhc2hfc2V0JiBiKSB7CisgICAgaWYg
KGEuc2l6ZSgpICE9IGIuc2l6ZSgpKSByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgcmF3X2hhc2hf
c2V0KiBvdXRlciA9ICZhOworICAgIGNvbnN0IHJhd19oYXNoX3NldCogaW5uZXIgPSAmYjsKKyAg
ICBpZiAob3V0ZXItPmNhcGFjaXR5KCkgPiBpbm5lci0+Y2FwYWNpdHkoKSkgc3RkOjpzd2FwKG91
dGVyLCBpbm5lcik7CisgICAgZm9yIChjb25zdCB2YWx1ZV90eXBlJiBlbGVtIDogKm91dGVyKQor
ICAgICAgaWYgKCFpbm5lci0+aGFzX2VsZW1lbnQoZWxlbSkpIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcmF3X2hh
c2hfc2V0JiBhLCBjb25zdCByYXdfaGFzaF9zZXQmIGIpIHsKKyAgICByZXR1cm4gIShhID09IGIp
OworICB9CisKKyAgZnJpZW5kIHZvaWQgc3dhcChyYXdfaGFzaF9zZXQmIGEsCisgICAgICAgICAg
ICAgICAgICAgcmF3X2hhc2hfc2V0JiBiKSBub2V4Y2VwdChub2V4Y2VwdChhLnN3YXAoYikpKSB7
CisgICAgYS5zd2FwKGIpOworICB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8Y2xhc3MgQ29u
dGFpbmVyLCB0eXBlbmFtZSBFbmFibGVyPgorICBmcmllbmQgc3RydWN0IGFic2w6OmNvbnRhaW5l
cl9pbnRlcm5hbDo6aGFzaHRhYmxlX2RlYnVnX2ludGVybmFsOjoKKyAgICAgIEhhc2h0YWJsZURl
YnVnQWNjZXNzOworCisgIHN0cnVjdCBGaW5kRWxlbWVudCB7CisgICAgdGVtcGxhdGUgPGNsYXNz
IEssIGNsYXNzLi4uIEFyZ3M+CisgICAgY29uc3RfaXRlcmF0b3Igb3BlcmF0b3IoKShjb25zdCBL
JiBrZXksIEFyZ3MmJi4uLikgY29uc3QgeworICAgICAgcmV0dXJuIHMuZmluZChrZXkpOworICAg
IH0KKyAgICBjb25zdCByYXdfaGFzaF9zZXQmIHM7CisgIH07CisKKyAgc3RydWN0IEhhc2hFbGVt
ZW50IHsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MuLi4gQXJncz4KKyAgICBzaXplX3Qg
b3BlcmF0b3IoKShjb25zdCBLJiBrZXksIEFyZ3MmJi4uLikgY29uc3QgeworICAgICAgcmV0dXJu
IGgoa2V5KTsKKyAgICB9CisgICAgY29uc3QgaGFzaGVyJiBoOworICB9OworCisgIHRlbXBsYXRl
IDxjbGFzcyBLMT4KKyAgc3RydWN0IEVxdWFsRWxlbWVudCB7CisgICAgdGVtcGxhdGUgPGNsYXNz
IEsyLCBjbGFzcy4uLiBBcmdzPgorICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBLMiYgbGhzLCBB
cmdzJiYuLi4pIGNvbnN0IHsKKyAgICAgIHJldHVybiBlcShsaHMsIHJocyk7CisgICAgfQorICAg
IGNvbnN0IEsxJiByaHM7CisgICAgY29uc3Qga2V5X2VxdWFsJiBlcTsKKyAgfTsKKworICBzdHJ1
Y3QgRW1wbGFjZURlY29tcG9zYWJsZSB7CisgICAgdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzLi4u
IEFyZ3M+CisgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBvcGVyYXRvcigpKGNvbnN0IEsm
IGtleSwgQXJncyYmLi4uIGFyZ3MpIGNvbnN0IHsKKyAgICAgIGF1dG8gcmVzID0gcy5maW5kX29y
X3ByZXBhcmVfaW5zZXJ0KGtleSk7CisgICAgICBpZiAocmVzLnNlY29uZCkgeworICAgICAgICBz
LmVtcGxhY2VfYXQocmVzLmZpcnN0LCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAg
ICAgfQorICAgICAgcmV0dXJuIHtzLml0ZXJhdG9yX2F0KHJlcy5maXJzdCksIHJlcy5zZWNvbmR9
OworICAgIH0KKyAgICByYXdfaGFzaF9zZXQmIHM7CisgIH07CisKKyAgdGVtcGxhdGUgPGJvb2wg
ZG9fZGVzdHJveT4KKyAgc3RydWN0IEluc2VydFNsb3QgeworICAgIHRlbXBsYXRlIDxjbGFzcyBL
LCBjbGFzcy4uLiBBcmdzPgorICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gb3BlcmF0b3Io
KShjb25zdCBLJiBrZXksIEFyZ3MmJi4uLikgJiYgeworICAgICAgYXV0byByZXMgPSBzLmZpbmRf
b3JfcHJlcGFyZV9pbnNlcnQoa2V5KTsKKyAgICAgIGlmIChyZXMuc2Vjb25kKSB7CisgICAgICAg
IFBvbGljeVRyYWl0czo6dHJhbnNmZXIoJnMuYWxsb2NfcmVmKCksIHMuc2xvdHNfICsgcmVzLmZp
cnN0LCAmc2xvdCk7CisgICAgICB9IGVsc2UgaWYgKGRvX2Rlc3Ryb3kpIHsKKyAgICAgICAgUG9s
aWN5VHJhaXRzOjpkZXN0cm95KCZzLmFsbG9jX3JlZigpLCAmc2xvdCk7CisgICAgICB9CisgICAg
ICByZXR1cm4ge3MuaXRlcmF0b3JfYXQocmVzLmZpcnN0KSwgcmVzLnNlY29uZH07CisgICAgfQor
ICAgIHJhd19oYXNoX3NldCYgczsKKyAgICAvLyBDb25zdHJ1Y3RlZCBzbG90LiBFaXRoZXIgbW92
ZWQgaW50byBwbGFjZSBvciBkZXN0cm95ZWQuCisgICAgc2xvdF90eXBlJiYgc2xvdDsKKyAgfTsK
KworICAvLyBDb21wdXRlcyBzdGQ6OmNlaWwobiAvIGtNYXhMb2FkRmFjdG9yKS4gRmFzdGVyIHRo
YW4gY2FsbGluZyBzdGQ6OmNlaWwuCisgIHN0YXRpYyBpbmxpbmUgc2l6ZV90IE51bVNsb3RzRmFz
dChzaXplX3QgbikgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KAorICAgICAgICAo
biAqIGtNYXhMb2FkRmFjdG9yRGVub21pbmF0b3IgKyAoa01heExvYWRGYWN0b3JOdW1lcmF0b3Ig
LSAxKSkgLworICAgICAgICBrTWF4TG9hZEZhY3Rvck51bWVyYXRvcik7CisgIH0KKworICAvLyAi
ZXJhc2VzIiB0aGUgb2JqZWN0IGZyb20gdGhlIGNvbnRhaW5lciwgZXhjZXB0IHRoYXQgaXQgZG9l
c24ndCBhY3R1YWxseQorICAvLyBkZXN0cm95IHRoZSBvYmplY3QuIEl0IG9ubHkgdXBkYXRlcyBh
bGwgdGhlIG1ldGFkYXRhIG9mIHRoZSBjbGFzcy4KKyAgLy8gVGhpcyBjYW4gYmUgdXNlZCBpbiBj
b25qdW5jdGlvbiB3aXRoIFBvbGljeTo6dHJhbnNmZXIgdG8gbW92ZSB0aGUgb2JqZWN0IHRvCisg
IC8vIGFub3RoZXIgcGxhY2UuCisgIHZvaWQgZXJhc2VfbWV0YV9vbmx5KGNvbnN0X2l0ZXJhdG9y
IGl0KSB7CisgICAgYXNzZXJ0KElzRnVsbCgqaXQuaW5uZXJfLmN0cmxfKSAmJiAiZXJhc2luZyBh
IGRhbmdsaW5nIGl0ZXJhdG9yIik7CisgICAgLS1zaXplXzsKKyAgICBjb25zdCBzaXplX3QgaW5k
ZXggPSBpdC5pbm5lcl8uY3RybF8gLSBjdHJsXzsKKyAgICBjb25zdCBzaXplX3QgaW5kZXhfYmVm
b3JlID0gKGluZGV4IC0gR3JvdXA6OmtXaWR0aCkgJiBjYXBhY2l0eV87CisgICAgY29uc3QgYXV0
byBlbXB0eV9hZnRlciA9IEdyb3VwKGl0LmlubmVyXy5jdHJsXykuTWF0Y2hFbXB0eSgpOworICAg
IGNvbnN0IGF1dG8gZW1wdHlfYmVmb3JlID0gR3JvdXAoY3RybF8gKyBpbmRleF9iZWZvcmUpLk1h
dGNoRW1wdHkoKTsKKworICAgIC8vIFdlIGNvdW50IGhvdyBtYW55IGNvbnNlY3V0aXZlIG5vbiBl
bXB0aWVzIHdlIGhhdmUgdG8gdGhlIHJpZ2h0IGFuZCB0byB0aGUKKyAgICAvLyBsZWZ0IG9mIGBp
dGAuIElmIHRoZSBzdW0gaXMgPj0ga1dpZHRoIHRoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBy
b2JlCisgICAgLy8gd2luZG93IHRoYXQgbWlnaHQgaGF2ZSBzZWVuIGEgZnVsbCBncm91cC4KKyAg
ICBib29sIHdhc19uZXZlcl9mdWxsID0KKyAgICAgICAgZW1wdHlfYmVmb3JlICYmIGVtcHR5X2Fm
dGVyICYmCisgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oZW1wdHlfYWZ0ZXIuVHJhaWxpbmda
ZXJvcygpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eV9iZWZvcmUuTGVhZGlu
Z1plcm9zKCkpIDwgR3JvdXA6OmtXaWR0aDsKKworICAgIHNldF9jdHJsKGluZGV4LCB3YXNfbmV2
ZXJfZnVsbCA/IGtFbXB0eSA6IGtEZWxldGVkKTsKKyAgICBncm93dGhfbGVmdCgpICs9IHdhc19u
ZXZlcl9mdWxsOworICB9CisKKyAgdm9pZCBpbml0aWFsaXplX3Nsb3RzKCkgeworICAgIGFzc2Vy
dChjYXBhY2l0eV8pOworICAgIGF1dG8gbGF5b3V0ID0gTWFrZUxheW91dChjYXBhY2l0eV8pOwor
ICAgIGNoYXIqIG1lbSA9IHN0YXRpY19jYXN0PGNoYXIqPigKKyAgICAgICAgQWxsb2NhdGU8TGF5
b3V0OjpBbGlnbm1lbnQoKT4oJmFsbG9jX3JlZigpLCBsYXlvdXQuQWxsb2NTaXplKCkpKTsKKyAg
ICBjdHJsXyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y3RybF90Kj4obGF5b3V0LnRlbXBsYXRlIFBvaW50
ZXI8MD4obWVtKSk7CisgICAgc2xvdHNfID0gbGF5b3V0LnRlbXBsYXRlIFBvaW50ZXI8MT4obWVt
KTsKKyAgICByZXNldF9jdHJsKCk7CisgICAgZ3Jvd3RoX2xlZnQoKSA9IHN0YXRpY19jYXN0PHNp
emVfdD4oY2FwYWNpdHlfICoga01heExvYWRGYWN0b3IpIC0gc2l6ZV87CisgIH0KKworICB2b2lk
IGRlc3Ryb3lfc2xvdHMoKSB7CisgICAgaWYgKCFjYXBhY2l0eV8pIHJldHVybjsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSAhPSBjYXBhY2l0eV87ICsraSkgeworICAgICAgaWYgKElzRnVsbChj
dHJsX1tpXSkpIHsKKyAgICAgICAgUG9saWN5VHJhaXRzOjpkZXN0cm95KCZhbGxvY19yZWYoKSwg
c2xvdHNfICsgaSk7CisgICAgICB9CisgICAgfQorICAgIGF1dG8gbGF5b3V0ID0gTWFrZUxheW91
dChjYXBhY2l0eV8pOworICAgIC8vIFVucG9pc29uIGJlZm9yZSByZXR1cm5pbmcgdGhlIG1lbW9y
eSB0byB0aGUgYWxsb2NhdG9yLgorICAgIFNhbml0aXplclVucG9pc29uTWVtb3J5UmVnaW9uKHNs
b3RzXywgc2l6ZW9mKHNsb3RfdHlwZSkgKiBjYXBhY2l0eV8pOworICAgIERlYWxsb2NhdGU8TGF5
b3V0OjpBbGlnbm1lbnQoKT4oJmFsbG9jX3JlZigpLCBjdHJsXywgbGF5b3V0LkFsbG9jU2l6ZSgp
KTsKKyAgICBjdHJsXyA9IEVtcHR5R3JvdXAoKTsKKyAgICBzbG90c18gPSBudWxscHRyOworICAg
IHNpemVfID0gMDsKKyAgICBjYXBhY2l0eV8gPSAwOworICAgIGdyb3d0aF9sZWZ0KCkgPSAwOwor
ICB9CisKKyAgdm9pZCByZXNpemUoc2l6ZV90IG5ld19jYXBhY2l0eSkgeworICAgIGFzc2VydChJ
c1ZhbGlkQ2FwYWNpdHkobmV3X2NhcGFjaXR5KSk7CisgICAgYXV0byogb2xkX2N0cmwgPSBjdHJs
XzsKKyAgICBhdXRvKiBvbGRfc2xvdHMgPSBzbG90c187CisgICAgY29uc3Qgc2l6ZV90IG9sZF9j
YXBhY2l0eSA9IGNhcGFjaXR5XzsKKyAgICBjYXBhY2l0eV8gPSBuZXdfY2FwYWNpdHk7CisgICAg
aW5pdGlhbGl6ZV9zbG90cygpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gb2xkX2Nh
cGFjaXR5OyArK2kpIHsKKyAgICAgIGlmIChJc0Z1bGwob2xkX2N0cmxbaV0pKSB7CisgICAgICAg
IHNpemVfdCBoYXNoID0gUG9saWN5VHJhaXRzOjphcHBseShIYXNoRWxlbWVudHtoYXNoX3JlZigp
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGljeVRyYWl0
czo6ZWxlbWVudChvbGRfc2xvdHMgKyBpKSk7CisgICAgICAgIHNpemVfdCBuZXdfaSA9IGZpbmRf
Zmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAgICAgIHNldF9jdHJsKG5ld19pLCBIMihoYXNoKSk7
CisgICAgICAgIFBvbGljeVRyYWl0czo6dHJhbnNmZXIoJmFsbG9jX3JlZigpLCBzbG90c18gKyBu
ZXdfaSwgb2xkX3Nsb3RzICsgaSk7CisgICAgICB9CisgICAgfQorICAgIGlmIChvbGRfY2FwYWNp
dHkpIHsKKyAgICAgIFNhbml0aXplclVucG9pc29uTWVtb3J5UmVnaW9uKG9sZF9zbG90cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzbG90X3R5cGUpICogb2xk
X2NhcGFjaXR5KTsKKyAgICAgIGF1dG8gbGF5b3V0ID0gTWFrZUxheW91dChvbGRfY2FwYWNpdHkp
OworICAgICAgRGVhbGxvY2F0ZTxMYXlvdXQ6OkFsaWdubWVudCgpPigmYWxsb2NfcmVmKCksIG9s
ZF9jdHJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuQWxs
b2NTaXplKCkpOworICAgIH0KKyAgfQorCisgIHZvaWQgZHJvcF9kZWxldGVzX3dpdGhvdXRfcmVz
aXplKCkgQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUgeworICAgIGFzc2VydChJc1ZhbGlkQ2FwYWNp
dHkoY2FwYWNpdHlfKSk7CisgICAgLy8gQWxnb3JpdGhtOgorICAgIC8vIC0gbWFyayBhbGwgREVM
RVRFRCBzbG90cyBhcyBFTVBUWQorICAgIC8vIC0gbWFyayBhbGwgRlVMTCBzbG90cyBhcyBERUxF
VEVECisgICAgLy8gLSBmb3IgZWFjaCBzbG90IG1hcmtlZCBhcyBERUxFVEVECisgICAgLy8gICAg
IGhhc2ggPSBIYXNoKGVsZW1lbnQpCisgICAgLy8gICAgIHRhcmdldCA9IGZpbmRfZmlyc3Rfbm9u
X2Z1bGwoaGFzaCkKKyAgICAvLyAgICAgaWYgdGFyZ2V0IGlzIGluIHRoZSBzYW1lIGdyb3VwCisg
ICAgLy8gICAgICAgbWFyayBzbG90IGFzIEZVTEwKKyAgICAvLyAgICAgZWxzZSBpZiB0YXJnZXQg
aXMgRU1QVFkKKyAgICAvLyAgICAgICB0cmFuc2ZlciBlbGVtZW50IHRvIHRhcmdldAorICAgIC8v
ICAgICAgIG1hcmsgc2xvdCBhcyBFTVBUWQorICAgIC8vICAgICAgIG1hcmsgdGFyZ2V0IGFzIEZV
TEwKKyAgICAvLyAgICAgZWxzZSBpZiB0YXJnZXQgaXMgREVMRVRFRAorICAgIC8vICAgICAgIHN3
YXAgY3VycmVudCBlbGVtZW50IHdpdGggdGFyZ2V0IGVsZW1lbnQKKyAgICAvLyAgICAgICBtYXJr
IHRhcmdldCBhcyBGVUxMCisgICAgLy8gICAgICAgcmVwZWF0IHByb2NlZHVyZSBmb3IgY3VycmVu
dCBzbG90IHdpdGggbW92ZWQgZnJvbSBlbGVtZW50ICh0YXJnZXQpCisgICAgQ29udmVydERlbGV0
ZWRUb0VtcHR5QW5kRnVsbFRvRGVsZXRlZChjdHJsXywgY2FwYWNpdHlfKTsKKyAgICB0eXBlbmFt
ZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2Yoc2xvdF90eXBlKSwgYWxpZ25vZihzbG90X3R5
cGUpPjo6dHlwZQorICAgICAgICByYXc7CisgICAgc2xvdF90eXBlKiBzbG90ID0gcmVpbnRlcnBy
ZXRfY2FzdDxzbG90X3R5cGUqPigmcmF3KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBj
YXBhY2l0eV87ICsraSkgeworICAgICAgaWYgKCFJc0RlbGV0ZWQoY3RybF9baV0pKSBjb250aW51
ZTsKKyAgICAgIHNpemVfdCBoYXNoID0gUG9saWN5VHJhaXRzOjphcHBseShIYXNoRWxlbWVudHto
YXNoX3JlZigpfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xp
Y3lUcmFpdHM6OmVsZW1lbnQoc2xvdHNfICsgaSkpOworICAgICAgc2l6ZV90IG5ld19pID0gZmlu
ZF9maXJzdF9ub25fZnVsbChoYXNoKTsKKworICAgICAgLy8gVmVyaWZ5IGlmIHRoZSBvbGQgYW5k
IG5ldyBpIGZhbGwgd2l0aGluIHRoZSBzYW1lIGdyb3VwIHdydCB0aGUgaGFzaC4KKyAgICAgIC8v
IElmIHRoZXkgZG8sIHdlIGRvbid0IG5lZWQgdG8gbW92ZSB0aGUgb2JqZWN0IGFzIGl0IGZhbGxz
IGFscmVhZHkgaW4gdGhlCisgICAgICAvLyBiZXN0IHByb2JlIHdlIGNhbi4KKyAgICAgIGNvbnN0
IGF1dG8gcHJvYmVfaW5kZXggPSBbJl0oc2l6ZV90IHBvcykgeworICAgICAgICByZXR1cm4gKChw
b3MgLSBwcm9iZShoYXNoKS5vZmZzZXQoKSkgJiBjYXBhY2l0eV8pIC8gR3JvdXA6OmtXaWR0aDsK
KyAgICAgIH07CisKKyAgICAgIC8vIEVsZW1lbnQgZG9lc24ndCBtb3ZlLgorICAgICAgaWYgKEFC
U0xfUFJFRElDVF9UUlVFKHByb2JlX2luZGV4KG5ld19pKSA9PSBwcm9iZV9pbmRleChpKSkpIHsK
KyAgICAgICAgc2V0X2N0cmwoaSwgSDIoaGFzaCkpOworICAgICAgICBjb250aW51ZTsKKyAgICAg
IH0KKyAgICAgIGlmIChJc0VtcHR5KGN0cmxfW25ld19pXSkpIHsKKyAgICAgICAgLy8gVHJhbnNm
ZXIgZWxlbWVudCB0byB0aGUgZW1wdHkgc3BvdC4KKyAgICAgICAgLy8gc2V0X2N0cmwgcG9pc29u
cy91bnBvaXNvbnMgdGhlIHNsb3RzIHNvIHdlIGhhdmUgdG8gY2FsbCBpdCBhdCB0aGUKKyAgICAg
ICAgLy8gcmlnaHQgdGltZS4KKyAgICAgICAgc2V0X2N0cmwobmV3X2ksIEgyKGhhc2gpKTsKKyAg
ICAgICAgUG9saWN5VHJhaXRzOjp0cmFuc2ZlcigmYWxsb2NfcmVmKCksIHNsb3RzXyArIG5ld19p
LCBzbG90c18gKyBpKTsKKyAgICAgICAgc2V0X2N0cmwoaSwga0VtcHR5KTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIGFzc2VydChJc0RlbGV0ZWQoY3RybF9bbmV3X2ldKSk7CisgICAgICAgIHNl
dF9jdHJsKG5ld19pLCBIMihoYXNoKSk7CisgICAgICAgIC8vIFVudGlsIHdlIGFyZSBkb25lIHJl
aGFzaGluZywgREVMRVRFRCBtYXJrcyBwcmV2aW91c2x5IEZVTEwgc2xvdHMuCisgICAgICAgIC8v
IFN3YXAgaSBhbmQgbmV3X2kgZWxlbWVudHMuCisgICAgICAgIFBvbGljeVRyYWl0czo6dHJhbnNm
ZXIoJmFsbG9jX3JlZigpLCBzbG90LCBzbG90c18gKyBpKTsKKyAgICAgICAgUG9saWN5VHJhaXRz
Ojp0cmFuc2ZlcigmYWxsb2NfcmVmKCksIHNsb3RzXyArIGksIHNsb3RzXyArIG5ld19pKTsKKyAg
ICAgICAgUG9saWN5VHJhaXRzOjp0cmFuc2ZlcigmYWxsb2NfcmVmKCksIHNsb3RzXyArIG5ld19p
LCBzbG90KTsKKyAgICAgICAgLS1pOyAgLy8gcmVwZWF0CisgICAgICB9CisgICAgfQorICAgIGdy
b3d0aF9sZWZ0KCkgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNhcGFjaXR5XyAqIGtNYXhMb2FkRmFj
dG9yKSAtIHNpemVfOworICB9CisKKyAgdm9pZCByZWhhc2hfYW5kX2dyb3dfaWZfbmVjZXNzYXJ5
KCkgeworICAgIGlmIChjYXBhY2l0eV8gPT0gMCkgeworICAgICAgcmVzaXplKEdyb3VwOjprV2lk
dGggLSAxKTsKKyAgICB9IGVsc2UgaWYgKHNpemUoKSA8PSBrTWF4TG9hZEZhY3RvciAvIDIgKiBj
YXBhY2l0eV8pIHsKKyAgICAgIC8vIFNxdWFzaCBERUxFVEVEIHdpdGhvdXQgZ3Jvd2luZyBpZiB0
aGVyZSBpcyBlbm91Z2ggY2FwYWNpdHkuCisgICAgICBkcm9wX2RlbGV0ZXNfd2l0aG91dF9yZXNp
emUoKTsKKyAgICB9IGVsc2UgeworICAgICAgLy8gT3RoZXJ3aXNlIGdyb3cgdGhlIGNvbnRhaW5l
ci4KKyAgICAgIHJlc2l6ZShjYXBhY2l0eV8gKiAyICsgMSk7CisgICAgfQorICB9CisKKyAgYm9v
bCBoYXNfZWxlbWVudChjb25zdCB2YWx1ZV90eXBlJiBlbGVtKSBjb25zdCB7CisgICAgc2l6ZV90
IGhhc2ggPSBQb2xpY3lUcmFpdHM6OmFwcGx5KEhhc2hFbGVtZW50e2hhc2hfcmVmKCl9LCBlbGVt
KTsKKyAgICBhdXRvIHNlcSA9IHByb2JlKGhhc2gpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICBHcm91cCBne2N0cmxfICsgc2VxLm9mZnNldCgpfTsKKyAgICAgIGZvciAoaW50IGkgOiBnLk1h
dGNoKEgyKGhhc2gpKSkgeworICAgICAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUoUG9saWN5VHJh
aXRzOjplbGVtZW50KHNsb3RzXyArIHNlcS5vZmZzZXQoaSkpID09CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbGVtKSkKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAg
ICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShnLk1hdGNoRW1wdHkoKSkpIHJldHVybiBmYWxzZTsK
KyAgICAgIHNlcS5uZXh0KCk7CisgICAgICBhc3NlcnQoc2VxLmluZGV4KCkgPCBjYXBhY2l0eV8g
JiYgImZ1bGwgdGFibGUhIik7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIC8v
IFByb2JlcyB0aGUgcmF3X2hhc2hfc2V0IHdpdGggdGhlIHByb2JlIHNlcXVlbmNlIGZvciBoYXNo
IGFuZCByZXR1cm5zIHRoZQorICAvLyBwb2ludGVyIHRvIHRoZSBmaXJzdCBlbXB0eSBvciBkZWxl
dGVkIHNsb3QuCisgIC8vIE5PVEU6IHRoaXMgZnVuY3Rpb24gbXVzdCB3b3JrIHdpdGggdGFibGVz
IGhhdmluZyBib3RoIGtFbXB0eSBhbmQga0RlbGV0ZQorICAvLyBpbiBvbmUgZ3JvdXAuIFN1Y2gg
dGFibGVzIGFwcGVhcnMgZHVyaW5nIGRyb3BfZGVsZXRlc193aXRob3V0X3Jlc2l6ZS4KKyAgLy8K
KyAgLy8gVGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IHVzZWZ1bCB3aGVuIGluc2VydGlvbnMgaGFwcGVu
IGFuZDoKKyAgLy8gLSB0aGUgaW5wdXQgaXMgYWxyZWFkeSBhIHNldAorICAvLyAtIHRoZXJlIGFy
ZSBlbm91Z2ggc2xvdHMKKyAgLy8gLSB0aGUgZWxlbWVudCB3aXRoIHRoZSBoYXNoIGlzIG5vdCBp
biB0aGUgdGFibGUKKyAgc2l6ZV90IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoc2l6ZV90IGhhc2gpIHsK
KyAgICBhdXRvIHNlcSA9IHByb2JlKGhhc2gpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBH
cm91cCBne2N0cmxfICsgc2VxLm9mZnNldCgpfTsKKyAgICAgIGF1dG8gbWFzayA9IGcuTWF0Y2hF
bXB0eU9yRGVsZXRlZCgpOworICAgICAgaWYgKG1hc2spIHsKKyNpZiAhZGVmaW5lZChOREVCVUcp
CisgICAgICAgIC8vIFdlIHdhbnQgdG8gZm9yY2Ugc21hbGwgdGFibGVzIHRvIGhhdmUgcmFuZG9t
IGVudHJpZXMgdG9vLCBzbworICAgICAgICAvLyBpbiBkZWJ1ZyBidWlsZCB3ZSB3aWxsIHJhbmRv
bWx5IGluc2VydCBpbiBlaXRoZXIgdGhlIGZyb250IG9yIGJhY2sgb2YKKyAgICAgICAgLy8gdGhl
IGdyb3VwLgorICAgICAgICAvLyBUT0RPKGtmbSxzYmVuemEpOiByZXZpc2l0IGFmdGVyIHdlIGRv
IHVuY29uZGl0aW9uYWwgbWl4aW5nCisgICAgICAgIGlmIChTaG91bGRJbnNlcnRCYWNrd2FyZHMo
aGFzaCwgY3RybF8pKQorICAgICAgICAgIHJldHVybiBzZXEub2Zmc2V0KG1hc2suSGlnaGVzdEJp
dFNldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIHJldHVybiBzZXEub2Zmc2V0KG1hc2su
TG93ZXN0Qml0U2V0KCkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIHNlcS5vZmZzZXQobWFzay5M
b3dlc3RCaXRTZXQoKSk7CisjZW5kaWYKKyAgICAgIH0KKyAgICAgIGFzc2VydChzZXEuaW5kZXgo
KSA8IGNhcGFjaXR5XyAmJiAiZnVsbCB0YWJsZSEiKTsKKyAgICAgIHNlcS5uZXh0KCk7CisgICAg
fQorICB9CisKKyAgLy8gVE9ETyhhbGtpcyk6IE9wdGltaXplIHRoaXMgYXNzdW1pbmcgKnRoaXMg
YW5kIHRoYXQgZG9uJ3Qgb3ZlcmxhcC4KKyAgcmF3X2hhc2hfc2V0JiBtb3ZlX2Fzc2lnbihyYXdf
aGFzaF9zZXQmJiB0aGF0LCBzdGQ6OnRydWVfdHlwZSkgeworICAgIHJhd19oYXNoX3NldCB0bXAo
c3RkOjptb3ZlKHRoYXQpKTsKKyAgICBzd2FwKHRtcCk7CisgICAgcmV0dXJuICp0aGlzOworICB9
CisgIHJhd19oYXNoX3NldCYgbW92ZV9hc3NpZ24ocmF3X2hhc2hfc2V0JiYgdGhhdCwgc3RkOjpm
YWxzZV90eXBlKSB7CisgICAgcmF3X2hhc2hfc2V0IHRtcChzdGQ6Om1vdmUodGhhdCksIGFsbG9j
X3JlZigpKTsKKyAgICBzd2FwKHRtcCk7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyBwcm90
ZWN0ZWQ6CisgIHRlbXBsYXRlIDxjbGFzcyBLPgorICBzdGQ6OnBhaXI8c2l6ZV90LCBib29sPiBm
aW5kX29yX3ByZXBhcmVfaW5zZXJ0KGNvbnN0IEsmIGtleSkgeworICAgIGF1dG8gaGFzaCA9IGhh
c2hfcmVmKCkoa2V5KTsKKyAgICBhdXRvIHNlcSA9IHByb2JlKGhhc2gpOworICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICBHcm91cCBne2N0cmxfICsgc2VxLm9mZnNldCgpfTsKKyAgICAgIGZvciAo
aW50IGkgOiBnLk1hdGNoKEgyKGhhc2gpKSkgeworICAgICAgICBpZiAoQUJTTF9QUkVESUNUX1RS
VUUoUG9saWN5VHJhaXRzOjphcHBseSgKKyAgICAgICAgICAgICAgICBFcXVhbEVsZW1lbnQ8Sz57
a2V5LCBlcV9yZWYoKX0sCisgICAgICAgICAgICAgICAgUG9saWN5VHJhaXRzOjplbGVtZW50KHNs
b3RzXyArIHNlcS5vZmZzZXQoaSkpKSkpCisgICAgICAgICAgcmV0dXJuIHtzZXEub2Zmc2V0KGkp
LCBmYWxzZX07CisgICAgICB9CisgICAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUoZy5NYXRjaEVt
cHR5KCkpKSBicmVhazsKKyAgICAgIHNlcS5uZXh0KCk7CisgICAgfQorICAgIHJldHVybiB7cHJl
cGFyZV9pbnNlcnQoaGFzaCksIHRydWV9OworICB9CisKKyAgc2l6ZV90IHByZXBhcmVfaW5zZXJ0
KHNpemVfdCBoYXNoKSBBQlNMX0FUVFJJQlVURV9OT0lOTElORSB7CisgICAgc2l6ZV90IHRhcmdl
dCA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxT
RShncm93dGhfbGVmdCgpID09IDAgJiYgIUlzRGVsZXRlZChjdHJsX1t0YXJnZXRdKSkpIHsKKyAg
ICAgIHJlaGFzaF9hbmRfZ3Jvd19pZl9uZWNlc3NhcnkoKTsKKyAgICAgIHRhcmdldCA9IGZpbmRf
Zmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAgfQorICAgICsrc2l6ZV87CisgICAgZ3Jvd3RoX2xl
ZnQoKSAtPSBJc0VtcHR5KGN0cmxfW3RhcmdldF0pOworICAgIHNldF9jdHJsKHRhcmdldCwgSDIo
aGFzaCkpOworICAgIHJldHVybiB0YXJnZXQ7CisgIH0KKworICAvLyBDb25zdHJ1Y3RzIHRoZSB2
YWx1ZSBpbiB0aGUgc3BhY2UgcG9pbnRlZCBieSB0aGUgaXRlcmF0b3IuIFRoaXMgb25seSB3b3Jr
cworICAvLyBhZnRlciBhbiB1bnN1Y2Nlc3NmdWwgZmluZF9vcl9wcmVwYXJlX2luc2VydCgpIGFu
ZCBiZWZvcmUgYW55IG90aGVyCisgIC8vIG1vZGlmaWNhdGlvbnMgaGFwcGVuIGluIHRoZSByYXdf
aGFzaF9zZXQuCisgIC8vCisgIC8vIFBSRUNPTkRJVElPTjogaSBpcyBhbiBpbmRleCByZXR1cm5l
ZCBmcm9tIGZpbmRfb3JfcHJlcGFyZV9pbnNlcnQoayksIHdoZXJlCisgIC8vIGsgaXMgdGhlIGtl
eSBkZWNvbXBvc2VkIGZyb20gYGZvcndhcmQ8QXJncz4oYXJncykuLi5gLCBhbmQgdGhlIGJvb2wK
KyAgLy8gcmV0dXJuZWQgYnkgZmluZF9vcl9wcmVwYXJlX2luc2VydChrKSB3YXMgdHJ1ZS4KKyAg
Ly8gUE9TVENPTkRJVElPTjogKm0uaXRlcmF0b3JfYXQoaSkgPT0gdmFsdWVfdHlwZShmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKS4KKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQgZW1w
bGFjZV9hdChzaXplX3QgaSwgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICBQb2xpY3lUcmFpdHM6OmNv
bnN0cnVjdCgmYWxsb2NfcmVmKCksIHNsb3RzXyArIGksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKworICAgIGFzc2VydChQb2xpY3lU
cmFpdHM6OmFwcGx5KEZpbmRFbGVtZW50eyp0aGlzfSwgKml0ZXJhdG9yX2F0KGkpKSA9PQorICAg
ICAgICAgICAgICAgaXRlcmF0b3JfYXQoaSkgJiYKKyAgICAgICAgICAgImNvbnN0cnVjdGVkIHZh
bHVlIGRvZXMgbm90IG1hdGNoIHRoZSBsb29rdXAga2V5Iik7CisgIH0KKworICBpdGVyYXRvciBp
dGVyYXRvcl9hdChzaXplX3QgaSkgeyByZXR1cm4ge2N0cmxfICsgaSwgc2xvdHNfICsgaX07IH0K
KyAgY29uc3RfaXRlcmF0b3IgaXRlcmF0b3JfYXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIHtj
dHJsXyArIGksIHNsb3RzXyArIGl9OyB9CisKKyBwcml2YXRlOgorICBmcmllbmQgc3RydWN0IFJh
d0hhc2hTZXRUZXN0T25seUFjY2VzczsKKworICBwcm9iZV9zZXE8R3JvdXA6OmtXaWR0aD4gcHJv
YmUoc2l6ZV90IGhhc2gpIGNvbnN0IHsKKyAgICByZXR1cm4gcHJvYmVfc2VxPEdyb3VwOjprV2lk
dGg+KEgxKGhhc2gsIGN0cmxfKSwgY2FwYWNpdHlfKTsKKyAgfQorCisgIC8vIFJlc2V0IGFsbCBj
dHJsIGJ5dGVzIGJhY2sgdG8ga0VtcHR5LCBleGNlcHQgdGhlIHNlbnRpbmVsLgorICB2b2lkIHJl
c2V0X2N0cmwoKSB7CisgICAgc3RkOjptZW1zZXQoY3RybF8sIGtFbXB0eSwgY2FwYWNpdHlfICsg
R3JvdXA6OmtXaWR0aCk7CisgICAgY3RybF9bY2FwYWNpdHlfXSA9IGtTZW50aW5lbDsKKyAgICBT
YW5pdGl6ZXJQb2lzb25NZW1vcnlSZWdpb24oc2xvdHNfLCBzaXplb2Yoc2xvdF90eXBlKSAqIGNh
cGFjaXR5Xyk7CisgIH0KKworICAvLyBTZXRzIHRoZSBjb250cm9sIGJ5dGUsIGFuZCBpZiBgaSA8
IEdyb3VwOjprV2lkdGhgLCBzZXQgdGhlIGNsb25lZCBieXRlIGF0CisgIC8vIHRoZSBlbmQgdG9v
LgorICB2b2lkIHNldF9jdHJsKHNpemVfdCBpLCBjdHJsX3QgaCkgeworICAgIGFzc2VydChpIDwg
Y2FwYWNpdHlfKTsKKworICAgIGlmIChJc0Z1bGwoaCkpIHsKKyAgICAgIFNhbml0aXplclVucG9p
c29uT2JqZWN0KHNsb3RzXyArIGkpOworICAgIH0gZWxzZSB7CisgICAgICBTYW5pdGl6ZXJQb2lz
b25PYmplY3Qoc2xvdHNfICsgaSk7CisgICAgfQorCisgICAgY3RybF9baV0gPSBoOworICAgIGN0
cmxfWygoaSAtIEdyb3VwOjprV2lkdGgpICYgY2FwYWNpdHlfKSArIEdyb3VwOjprV2lkdGhdID0g
aDsKKyAgfQorCisgIHNpemVfdCYgZ3Jvd3RoX2xlZnQoKSB7IHJldHVybiBzZXR0aW5nc18udGVt
cGxhdGUgZ2V0PDA+KCk7IH0KKworICBoYXNoZXImIGhhc2hfcmVmKCkgeyByZXR1cm4gc2V0dGlu
Z3NfLnRlbXBsYXRlIGdldDwxPigpOyB9CisgIGNvbnN0IGhhc2hlciYgaGFzaF9yZWYoKSBjb25z
dCB7IHJldHVybiBzZXR0aW5nc18udGVtcGxhdGUgZ2V0PDE+KCk7IH0KKyAga2V5X2VxdWFsJiBl
cV9yZWYoKSB7IHJldHVybiBzZXR0aW5nc18udGVtcGxhdGUgZ2V0PDI+KCk7IH0KKyAgY29uc3Qg
a2V5X2VxdWFsJiBlcV9yZWYoKSBjb25zdCB7IHJldHVybiBzZXR0aW5nc18udGVtcGxhdGUgZ2V0
PDI+KCk7IH0KKyAgYWxsb2NhdG9yX3R5cGUmIGFsbG9jX3JlZigpIHsgcmV0dXJuIHNldHRpbmdz
Xy50ZW1wbGF0ZSBnZXQ8Mz4oKTsgfQorICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2NfcmVm
KCkgY29uc3QgeworICAgIHJldHVybiBzZXR0aW5nc18udGVtcGxhdGUgZ2V0PDM+KCk7CisgIH0K
KworICAvLyBPbiBhdmVyYWdlIGVhY2ggZ3JvdXAgaGFzIDIgZW1wdHkgc2xvdCAoZm9yIHRoZSB2
ZWN0b3JpemVkIGNhc2UpLgorICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qga01heExvYWRGYWN0
b3JOdW1lcmF0b3IgPSAxNDsKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IGtNYXhMb2FkRmFj
dG9yRGVub21pbmF0b3IgPSAxNjsKKyAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBrTWF4TG9hZEZh
Y3RvciA9CisgICAgICAxLjAgKiBrTWF4TG9hZEZhY3Rvck51bWVyYXRvciAvIGtNYXhMb2FkRmFj
dG9yRGVub21pbmF0b3I7CisKKyAgLy8gVE9ETyhhbGtpcyk6IEludmVzdGlnYXRlIHJlbW92aW5n
IHNvbWUgb2YgdGhlc2UgZmllbGRzOgorICAvLyAtIGN0cmwvc2xvdHMgY2FuIGJlIGRlcml2ZWQg
ZnJvbSBlYWNoIG90aGVyCisgIC8vIC0gc2l6ZSBjYW4gYmUgbW92ZWQgaW50byB0aGUgc2xvdCBh
cnJheQorICBjdHJsX3QqIGN0cmxfID0gRW1wdHlHcm91cCgpOyAgICAvLyBbKGNhcGFjaXR5ICsg
MSkgKiBjdHJsX3RdCisgIHNsb3RfdHlwZSogc2xvdHNfID0gbnVsbHB0cjsgICAgIC8vIFtjYXBh
Y2l0eSAqIHNsb3RfdHlwZV0KKyAgc2l6ZV90IHNpemVfID0gMDsgICAgICAgICAgICAgICAgLy8g
bnVtYmVyIG9mIGZ1bGwgc2xvdHMKKyAgc2l6ZV90IGNhcGFjaXR5XyA9IDA7ICAgICAgICAgICAg
Ly8gdG90YWwgbnVtYmVyIG9mIHNsb3RzCisgIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6Q29t
cHJlc3NlZFR1cGxlPHNpemVfdCAvKiBncm93dGhfbGVmdCAqLywgaGFzaGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfZXF1YWwsIGFsbG9jYXRvcl90
eXBlPgorICAgICAgc2V0dGluZ3NfezAsIGhhc2hlcnt9LCBrZXlfZXF1YWx7fSwgYWxsb2NhdG9y
X3R5cGV7fX07Cit9OworCituYW1lc3BhY2UgaGFzaHRhYmxlX2RlYnVnX2ludGVybmFsIHsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBTZXQ+CitzdHJ1Y3QgSGFzaHRhYmxlRGVidWdBY2Nlc3M8U2V0LCBh
YnNsOjp2b2lkX3Q8dHlwZW5hbWUgU2V0OjpyYXdfaGFzaF9zZXQ+PiB7CisgIHVzaW5nIFRyYWl0
cyA9IHR5cGVuYW1lIFNldDo6UG9saWN5VHJhaXRzOworICB1c2luZyBTbG90ID0gdHlwZW5hbWUg
VHJhaXRzOjpzbG90X3R5cGU7CisKKyAgc3RhdGljIHNpemVfdCBHZXROdW1Qcm9iZXMoY29uc3Qg
U2V0JiBzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIFNl
dDo6a2V5X3R5cGUmIGtleSkgeworICAgIHNpemVfdCBudW1fcHJvYmVzID0gMDsKKyAgICBzaXpl
X3QgaGFzaCA9IHNldC5oYXNoX3JlZigpKGtleSk7CisgICAgYXV0byBzZXEgPSBzZXQucHJvYmUo
aGFzaCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIGNvbnRhaW5lcl9pbnRlcm5hbDo6R3Jv
dXAgZ3tzZXQuY3RybF8gKyBzZXEub2Zmc2V0KCl9OworICAgICAgZm9yIChpbnQgaSA6IGcuTWF0
Y2goY29udGFpbmVyX2ludGVybmFsOjpIMihoYXNoKSkpIHsKKyAgICAgICAgaWYgKFRyYWl0czo6
YXBwbHkoCisgICAgICAgICAgICAgICAgdHlwZW5hbWUgU2V0Ojp0ZW1wbGF0ZSBFcXVhbEVsZW1l
bnQ8dHlwZW5hbWUgU2V0OjprZXlfdHlwZT57CisgICAgICAgICAgICAgICAgICAgIGtleSwgc2V0
LmVxX3JlZigpfSwKKyAgICAgICAgICAgICAgICBUcmFpdHM6OmVsZW1lbnQoc2V0LnNsb3RzXyAr
IHNlcS5vZmZzZXQoaSkpKSkKKyAgICAgICAgICByZXR1cm4gbnVtX3Byb2JlczsKKyAgICAgICAg
KytudW1fcHJvYmVzOworICAgICAgfQorICAgICAgaWYgKGcuTWF0Y2hFbXB0eSgpKSByZXR1cm4g
bnVtX3Byb2JlczsKKyAgICAgIHNlcS5uZXh0KCk7CisgICAgICArK251bV9wcm9iZXM7CisgICAg
fQorICB9CisKKyAgc3RhdGljIHNpemVfdCBBbGxvY2F0ZWRCeXRlU2l6ZShjb25zdCBTZXQmIGMp
IHsKKyAgICBzaXplX3QgY2FwYWNpdHkgPSBjLmNhcGFjaXR5XzsKKyAgICBpZiAoY2FwYWNpdHkg
PT0gMCkgcmV0dXJuIDA7CisgICAgYXV0byBsYXlvdXQgPSBTZXQ6Ok1ha2VMYXlvdXQoY2FwYWNp
dHkpOworICAgIHNpemVfdCBtID0gbGF5b3V0LkFsbG9jU2l6ZSgpOworCisgICAgc2l6ZV90IHBl
cl9zbG90ID0gVHJhaXRzOjpzcGFjZV91c2VkKHN0YXRpY19jYXN0PGNvbnN0IFNsb3QqPihudWxs
cHRyKSk7CisgICAgaWYgKHBlcl9zbG90ICE9IH5zaXplX3R7fSkgeworICAgICAgbSArPSBwZXJf
c2xvdCAqIGMuc2l6ZSgpOworICAgIH0gZWxzZSB7CisgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSAhPSBjYXBhY2l0eTsgKytpKSB7CisgICAgICAgIGlmIChjb250YWluZXJfaW50ZXJuYWw6Oklz
RnVsbChjLmN0cmxfW2ldKSkgeworICAgICAgICAgIG0gKz0gVHJhaXRzOjpzcGFjZV91c2VkKGMu
c2xvdHNfICsgaSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG07Cisg
IH0KKworICBzdGF0aWMgc2l6ZV90IExvd2VyQm91bmRBbGxvY2F0ZWRCeXRlU2l6ZShzaXplX3Qg
c2l6ZSkgeworICAgIHNpemVfdCBjYXBhY2l0eSA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6Tm9ybWFs
aXplQ2FwYWNpdHkoCisgICAgICAgIHN0ZDo6Y2VpbChzaXplIC8gU2V0OjprTWF4TG9hZEZhY3Rv
cikpOworICAgIGlmIChjYXBhY2l0eSA9PSAwKSByZXR1cm4gMDsKKyAgICBhdXRvIGxheW91dCA9
IFNldDo6TWFrZUxheW91dChjYXBhY2l0eSk7CisgICAgc2l6ZV90IG0gPSBsYXlvdXQuQWxsb2NT
aXplKCk7CisgICAgc2l6ZV90IHBlcl9zbG90ID0gVHJhaXRzOjpzcGFjZV91c2VkKHN0YXRpY19j
YXN0PGNvbnN0IFNsb3QqPihudWxscHRyKSk7CisgICAgaWYgKHBlcl9zbG90ICE9IH5zaXplX3R7
fSkgeworICAgICAgbSArPSBwZXJfc2xvdCAqIHNpemU7CisgICAgfQorICAgIHJldHVybiBtOwor
ICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgaGFzaHRhYmxlX2RlYnVnX2ludGVybmFsCit9ICAv
LyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisj
ZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1JBV19IQVNIX1NFVF9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldF9hbGxvY2F0b3JfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXRfYWxsb2NhdG9yX3Rl
c3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODkxZmE0NTBmZTA4YzIyM2UyMDJiNThmYzM4YTAyYjhiZjc3ODIy
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9z
ZXRfYWxsb2NhdG9yX3Rlc3QuY2MKQEAgLTAsMCArMSw0MjggQEAKKy8vIENvcHlyaWdodCAyMDE4
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8c2Nv
cGVkX2FsbG9jYXRvcj4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvdHJhY2tlZC5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
Y29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK2VudW0gQWxsb2NTcGVjIHsKKyAg
a1Byb3BhZ2F0ZU9uQ29weSA9IDEsCisgIGtQcm9wYWdhdGVPbk1vdmUgPSAyLAorICBrUHJvcGFn
YXRlT25Td2FwID0gNCwKK307CisKK3N0cnVjdCBBbGxvY1N0YXRlIHsKKyAgc2l6ZV90IG51bV9h
bGxvY3MgPSAwOworICBzdGQ6OnNldDx2b2lkKj4gb3duZWQ7Cit9OworCit0ZW1wbGF0ZSA8Y2xh
c3MgVCwKKyAgICAgICAgICBpbnQgU3BlYyA9IGtQcm9wYWdhdGVPbkNvcHkgfCBrUHJvcGFnYXRl
T25Nb3ZlIHwga1Byb3BhZ2F0ZU9uU3dhcD4KK2NsYXNzIENoZWNrZWRBbGxvYyB7CisgcHVibGlj
OgorICB0ZW1wbGF0ZSA8Y2xhc3MsIGludD4KKyAgZnJpZW5kIGNsYXNzIENoZWNrZWRBbGxvYzsK
KworICB1c2luZyB2YWx1ZV90eXBlID0gVDsKKworICBDaGVja2VkQWxsb2MoKSB7fQorICBleHBs
aWNpdCBDaGVja2VkQWxsb2Moc2l6ZV90IGlkKSA6IGlkXyhpZCkge30KKyAgQ2hlY2tlZEFsbG9j
KGNvbnN0IENoZWNrZWRBbGxvYyYpID0gZGVmYXVsdDsKKyAgQ2hlY2tlZEFsbG9jJiBvcGVyYXRv
cj0oY29uc3QgQ2hlY2tlZEFsbG9jJikgPSBkZWZhdWx0OworCisgIHRlbXBsYXRlIDxjbGFzcyBV
PgorICBDaGVja2VkQWxsb2MoY29uc3QgQ2hlY2tlZEFsbG9jPFUsIFNwZWM+JiB0aGF0KQorICAg
ICAgOiBpZF8odGhhdC5pZF8pLCBzdGF0ZV8odGhhdC5zdGF0ZV8pIHt9CisKKyAgdGVtcGxhdGUg
PGNsYXNzIFU+CisgIHN0cnVjdCByZWJpbmQgeworICAgIHVzaW5nIG90aGVyID0gQ2hlY2tlZEFs
bG9jPFUsIFNwZWM+OworICB9OworCisgIHVzaW5nIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29w
eV9hc3NpZ25tZW50ID0KKyAgICAgIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKFNwZWMg
JiBrUHJvcGFnYXRlT25Db3B5KSAhPSAwPjsKKworICB1c2luZyBwcm9wYWdhdGVfb25fY29udGFp
bmVyX21vdmVfYXNzaWdubWVudCA9CisgICAgICBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2ws
IChTcGVjICYga1Byb3BhZ2F0ZU9uTW92ZSkgIT0gMD47CisKKyAgdXNpbmcgcHJvcGFnYXRlX29u
X2NvbnRhaW5lcl9zd2FwID0KKyAgICAgIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKFNw
ZWMgJiBrUHJvcGFnYXRlT25Td2FwKSAhPSAwPjsKKworICBDaGVja2VkQWxsb2Mgc2VsZWN0X29u
X2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbigpIGNvbnN0IHsKKyAgICBpZiAoU3BlYyAmIGtQ
cm9wYWdhdGVPbkNvcHkpIHJldHVybiAqdGhpczsKKyAgICByZXR1cm4ge307CisgIH0KKworICBU
KiBhbGxvY2F0ZShzaXplX3QgbikgeworICAgIFQqIHB0ciA9IHN0ZDo6YWxsb2NhdG9yPFQ+KCku
YWxsb2NhdGUobik7CisgICAgdHJhY2tfYWxsb2MocHRyKTsKKyAgICByZXR1cm4gcHRyOworICB9
CisgIHZvaWQgZGVhbGxvY2F0ZShUKiBwdHIsIHNpemVfdCBuKSB7CisgICAgbWVtc2V0KHB0ciwg
MCwgbiAqIHNpemVvZihUKSk7ICAvLyBUaGUgZnJlZWQgbWVtb3J5IG11c3QgYmUgdW5wb2lzb25l
ZC4KKyAgICB0cmFja19kZWFsbG9jKHB0cik7CisgICAgcmV0dXJuIHN0ZDo6YWxsb2NhdG9yPFQ+
KCkuZGVhbGxvY2F0ZShwdHIsIG4pOworICB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDaGVja2VkQWxsb2MmIGEsIGNvbnN0IENoZWNrZWRBbGxvYyYgYikgeworICAgIHJldHVy
biBhLmlkXyA9PSBiLmlkXzsKKyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENo
ZWNrZWRBbGxvYyYgYSwgY29uc3QgQ2hlY2tlZEFsbG9jJiBiKSB7CisgICAgcmV0dXJuICEoYSA9
PSBiKTsKKyAgfQorCisgIHNpemVfdCBudW1fYWxsb2NzKCkgY29uc3QgeyByZXR1cm4gc3RhdGVf
LT5udW1fYWxsb2NzOyB9CisKKyAgdm9pZCBzd2FwKENoZWNrZWRBbGxvYyYgdGhhdCkgeworICAg
IHVzaW5nIHN0ZDo6c3dhcDsKKyAgICBzd2FwKGlkXywgdGhhdC5pZF8pOworICAgIHN3YXAoc3Rh
dGVfLCB0aGF0LnN0YXRlXyk7CisgIH0KKworICBmcmllbmQgdm9pZCBzd2FwKENoZWNrZWRBbGxv
YyYgYSwgQ2hlY2tlZEFsbG9jJiBiKSB7IGEuc3dhcChiKTsgfQorCisgIGZyaWVuZCBzdGQ6Om9z
dHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvLCBjb25zdCBDaGVja2VkQWxsb2MmIGEp
IHsKKyAgICByZXR1cm4gbyA8PCAiYWxsb2MoIiA8PCBhLmlkXyA8PCAiKSI7CisgIH0KKworIHBy
aXZhdGU6CisgIHZvaWQgdHJhY2tfYWxsb2Modm9pZCogcHRyKSB7CisgICAgQWxsb2NTdGF0ZSog
c3RhdGUgPSBzdGF0ZV8uZ2V0KCk7CisgICAgKytzdGF0ZS0+bnVtX2FsbG9jczsKKyAgICBpZiAo
IXN0YXRlLT5vd25lZC5pbnNlcnQocHRyKS5zZWNvbmQpCisgICAgICBBRERfRkFJTFVSRSgpIDw8
ICp0aGlzIDw8ICIgZ290IHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeTogIiA8PCBwdHI7Cisg
IH0KKyAgdm9pZCB0cmFja19kZWFsbG9jKHZvaWQqIHB0cikgeworICAgIGlmIChzdGF0ZV8tPm93
bmVkLmVyYXNlKHB0cikgIT0gMSkKKyAgICAgIEFERF9GQUlMVVJFKCkgPDwgKnRoaXMKKyAgICAg
ICAgICAgICAgICAgICAgPDwgIiBkZWxldGluZyBtZW1vcnkgb3duZWQgYnkgYW5vdGhlciBhbGxv
Y2F0b3I6ICIgPDwgcHRyOworICB9CisKKyAgc2l6ZV90IGlkXyA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCk7CisKKyAgc3RkOjpzaGFyZWRfcHRyPEFsbG9jU3RhdGU+IHN0YXRl
XyA9IHN0ZDo6bWFrZV9zaGFyZWQ8QWxsb2NTdGF0ZT4oKTsKK307CisKK3N0cnVjdCBJZGVudGl0
eSB7CisgIGludDMyX3Qgb3BlcmF0b3IoKShpbnQzMl90IHYpIGNvbnN0IHsgcmV0dXJuIHY7IH0K
K307CisKK3N0cnVjdCBQb2xpY3kgeworICB1c2luZyBzbG90X3R5cGUgPSBUcmFja2VkPGludDMy
X3Q+OworICB1c2luZyBpbml0X3R5cGUgPSBUcmFja2VkPGludDMyX3Q+OworICB1c2luZyBrZXlf
dHlwZSA9IGludDMyX3Q7CisKKyAgdGVtcGxhdGUgPGNsYXNzIGFsbG9jYXRvcl90eXBlLCBjbGFz
cy4uLiBBcmdzPgorICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoYWxsb2NhdG9yX3R5cGUqIGFsbG9j
LCBzbG90X3R5cGUqIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICBBcmdzJiYuLi4gYXJn
cykgeworICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT46OmNvbnN0cnVj
dCgKKyAgICAgICAgKmFsbG9jLCBzbG90LCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwor
ICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIGFsbG9jYXRvcl90eXBlPgorICBzdGF0aWMgdm9pZCBk
ZXN0cm95KGFsbG9jYXRvcl90eXBlKiBhbGxvYywgc2xvdF90eXBlKiBzbG90KSB7CisgICAgc3Rk
OjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcl90eXBlPjo6ZGVzdHJveSgqYWxsb2MsIHNsb3Qp
OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIGFsbG9jYXRvcl90eXBlPgorICBzdGF0aWMgdm9p
ZCB0cmFuc2ZlcihhbGxvY2F0b3JfdHlwZSogYWxsb2MsIHNsb3RfdHlwZSogbmV3X3Nsb3QsCisg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3RfdHlwZSogb2xkX3Nsb3QpIHsKKyAgICBjb25zdHJ1
Y3QoYWxsb2MsIG5ld19zbG90LCBzdGQ6Om1vdmUoKm9sZF9zbG90KSk7CisgICAgZGVzdHJveShh
bGxvYywgb2xkX3Nsb3QpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEY+CisgIHN0YXRpYyBh
dXRvIGFwcGx5KEYmJiBmLCBpbnQzMl90IHYpIC0+IGRlY2x0eXBlKHN0ZDo6Zm9yd2FyZDxGPihm
KSh2LCB2KSkgeworICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8Rj4oZikodiwgdik7CisgIH0KKwor
ICB0ZW1wbGF0ZSA8Y2xhc3MgRj4KKyAgc3RhdGljIGF1dG8gYXBwbHkoRiYmIGYsIGNvbnN0IHNs
b3RfdHlwZSYgdikKKyAgICAgIC0+IGRlY2x0eXBlKHN0ZDo6Zm9yd2FyZDxGPihmKSh2LnZhbCgp
LCB2KSkgeworICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8Rj4oZikodi52YWwoKSwgdik7CisgIH0K
KworICB0ZW1wbGF0ZSA8Y2xhc3MgRj4KKyAgc3RhdGljIGF1dG8gYXBwbHkoRiYmIGYsIHNsb3Rf
dHlwZSYmIHYpCisgICAgICAtPiBkZWNsdHlwZShzdGQ6OmZvcndhcmQ8Rj4oZikodi52YWwoKSwg
c3RkOjptb3ZlKHYpKSkgeworICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8Rj4oZikodi52YWwoKSwg
c3RkOjptb3ZlKHYpKTsKKyAgfQorCisgIHN0YXRpYyBzbG90X3R5cGUmIGVsZW1lbnQoc2xvdF90
eXBlKiBzbG90KSB7IHJldHVybiAqc2xvdDsgfQorfTsKKwordGVtcGxhdGUgPGludCBTcGVjPgor
c3RydWN0IFByb3BhZ2F0ZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgdXNpbmcg
QWxsb2MgPSBDaGVja2VkQWxsb2M8VHJhY2tlZDxpbnQzMl90PiwgU3BlYz47CisKKyAgdXNpbmcg
VGFibGUgPSByYXdfaGFzaF9zZXQ8UG9saWN5LCBJZGVudGl0eSwgc3RkOjplcXVhbF90bzxpbnQz
Ml90PiwgQWxsb2M+OworCisgIFByb3BhZ2F0ZVRlc3QoKSB7CisgICAgRVhQRUNUX0VRKGExLCB0
MS5nZXRfYWxsb2NhdG9yKCkpOworICAgIEVYUEVDVF9ORShhMiwgdDEuZ2V0X2FsbG9jYXRvcigp
KTsKKyAgfQorCisgIEFsbG9jIGExID0gQWxsb2MoMSk7CisgIFRhYmxlIHQxID0gVGFibGUoMCwg
YTEpOworICBBbGxvYyBhMiA9IEFsbG9jKDIpOworfTsKKwordXNpbmcgUHJvcGFnYXRlT25BbGwg
PQorICAgIFByb3BhZ2F0ZVRlc3Q8a1Byb3BhZ2F0ZU9uQ29weSB8IGtQcm9wYWdhdGVPbk1vdmUg
fCBrUHJvcGFnYXRlT25Td2FwPjsKK3VzaW5nIE5vUHJvcGFnYXRlT25Db3B5ID0gUHJvcGFnYXRl
VGVzdDxrUHJvcGFnYXRlT25Nb3ZlIHwga1Byb3BhZ2F0ZU9uU3dhcD47Cit1c2luZyBOb1Byb3Bh
Z2F0ZU9uTW92ZSA9IFByb3BhZ2F0ZVRlc3Q8a1Byb3BhZ2F0ZU9uQ29weSB8IGtQcm9wYWdhdGVP
blN3YXA+OworCitURVNUX0YoUHJvcGFnYXRlT25BbGwsIEVtcHR5KSB7IEVYUEVDVF9FUSgwLCBh
MS5udW1fYWxsb2NzKCkpOyB9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgSW5zZXJ0QWxsb2Nh
dGVzKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIEVYUEVDVF9FUSgxLCBh
MS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQ
RUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoUHJvcGFnYXRlT25BbGws
IEluc2VydERlY29tcG9zZXMpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAg
RVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21v
dmVzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7CisKKyAgRVhQRUNUX0ZB
TFNFKHQxLmluc2VydCgwKS5zZWNvbmQpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygp
KTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+
bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBSZWhhc2hNb3Zlcykg
eworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBFWFBFQ1RfRVEoMCwgaXQtPm51
bV9tb3ZlcygpKTsKKyAgdDEucmVoYXNoKDIgKiB0MS5jYXBhY2l0eSgpKTsKKyAgRVhQRUNUX0VR
KDIsIGExLm51bV9hbGxvY3MoKSk7CisgIGl0ID0gdDEuZmluZCgwKTsKKyAgRVhQRUNUX0VRKDEs
IGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX2NvcGllcygpKTsKK30K
KworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBDb3B5Q29uc3RydWN0b3IpIHsKKyAgYXV0byBpdCA9
IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdSh0MSk7CisgIEVYUEVDVF9FUSgyLCBhMS5u
dW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNU
X0VRKDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVPbkNvcHks
IENvcHlDb25zdHJ1Y3RvcikgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBU
YWJsZSB1KHQxKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9F
USgxLCB1LmdldF9hbGxvY2F0b3IoKS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQt
Pm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitU
RVNUX0YoUHJvcGFnYXRlT25BbGwsIENvcHlDb25zdHJ1Y3RvcldpdGhTYW1lQWxsb2MpIHsKKyAg
YXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdSh0MSwgYTEpOworICBFWFBF
Q1RfRVEoMiwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMo
KSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKE5vUHJv
cGFnYXRlT25Db3B5LCBDb3B5Q29uc3RydWN0b3JXaXRoU2FtZUFsbG9jKSB7CisgIGF1dG8gaXQg
PSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUodDEsIGExKTsKKyAgRVhQRUNUX0VRKDIs
IGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBF
WFBFQ1RfRVEoMSwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFs
bCwgQ29weUNvbnN0cnVjdG9yV2l0aERpZmZlcmVudEFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5p
bnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUodDEsIGEyKTsKKyAgRVhQRUNUX0VRKGEyLCB1Lmdl
dF9hbGxvY2F0b3IoKSk7CisgIEVYUEVDVF9FUSgxLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBF
Q1RfRVEoMSwgYTIubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMo
KSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKE5vUHJv
cGFnYXRlT25Db3B5LCBDb3B5Q29uc3RydWN0b3JXaXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0
byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdSh0MSwgYTIpOworICBFWFBFQ1Rf
RVEoYTIsIHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3Mo
KSk7CisgIEVYUEVDVF9FUSgxLCBhMi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQt
Pm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitU
RVNUX0YoUHJvcGFnYXRlT25BbGwsIE1vdmVDb25zdHJ1Y3RvcikgeworICBhdXRvIGl0ID0gdDEu
aW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KHN0ZDo6bW92ZSh0MSkpOworICBFWFBFQ1RfRVEo
MSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7Cisg
IEVYUEVDVF9FUSgwLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRl
T25Nb3ZlLCBNb3ZlQ29uc3RydWN0b3IpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJz
dDsKKyAgVGFibGUgdShzdGQ6Om1vdmUodDEpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxv
Y3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMCwg
aXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgTW92ZUNvbnN0
cnVjdG9yV2l0aFNhbWVBbGxvYykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0Owor
ICBUYWJsZSB1KHN0ZDo6bW92ZSh0MSksIGExKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxv
Y3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMCwg
aXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihOb1Byb3BhZ2F0ZU9uTW92ZSwgTW92ZUNv
bnN0cnVjdG9yV2l0aFNhbWVBbGxvYykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0
OworICBUYWJsZSB1KHN0ZDo6bW92ZSh0MSksIGExKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9h
bGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEo
MCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgTW92ZUNv
bnN0cnVjdG9yV2l0aERpZmZlcmVudEFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCku
Zmlyc3Q7CisgIFRhYmxlIHUoc3RkOjptb3ZlKHQxKSwgYTIpOworICBpdCA9IHUuZmluZCgwKTsK
KyAgRVhQRUNUX0VRKGEyLCB1LmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVDVF9FUSgxLCBhMS5u
dW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMSwgYTIubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNU
X0VRKDEsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX2NvcGllcygp
KTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRlT25Nb3ZlLCBNb3ZlQ29uc3RydWN0b3JXaXRoRGlm
ZmVyZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUg
dShzdGQ6Om1vdmUodDEpLCBhMik7CisgIGl0ID0gdS5maW5kKDApOworICBFWFBFQ1RfRVEoYTIs
IHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7Cisg
IEVYUEVDVF9FUSgxLCBhMi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMSwgaXQtPm51bV9t
b3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0Yo
UHJvcGFnYXRlT25BbGwsIENvcHlBc3NpZ25tZW50V2l0aFNhbWVBbGxvYykgeworICBhdXRvIGl0
ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KDAsIGExKTsKKyAgdSA9IHQxOworICBF
WFBFQ1RfRVEoMiwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92
ZXMoKSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKE5v
UHJvcGFnYXRlT25Db3B5LCBDb3B5QXNzaWdubWVudFdpdGhTYW1lQWxsb2MpIHsKKyAgYXV0byBp
dCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdSgwLCBhMSk7CisgIHUgPSB0MTsKKyAg
RVhQRUNUX0VRKDIsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21v
dmVzKCkpOworICBFWFBFQ1RfRVEoMSwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQ
cm9wYWdhdGVPbkFsbCwgQ29weUFzc2lnbm1lbnRXaXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0
byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdSgwLCBhMik7CisgIHUgPSB0MTsK
KyAgRVhQRUNUX0VRKGExLCB1LmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVDVF9FUSgyLCBhMS5u
dW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgYTIubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNU
X0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+bnVtX2NvcGllcygp
KTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRlT25Db3B5LCBDb3B5QXNzaWdubWVudFdpdGhEaWZm
ZXJlbnRBbGxvYykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1
KDAsIGEyKTsKKyAgdSA9IHQxOworICBFWFBFQ1RfRVEoYTIsIHUuZ2V0X2FsbG9jYXRvcigpKTsK
KyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgxLCBhMi5udW1f
YWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VR
KDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoUHJvcGFnYXRlT25BbGwsIE1vdmVB
c3NpZ25tZW50V2l0aFNhbWVBbGxvYykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0
OworICBUYWJsZSB1KDAsIGExKTsKKyAgdSA9IHN0ZDo6bW92ZSh0MSk7CisgIEVYUEVDVF9FUShh
MSwgdS5nZXRfYWxsb2NhdG9yKCkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsK
KyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVt
X2NvcGllcygpKTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRlT25Nb3ZlLCBNb3ZlQXNzaWdubWVu
dFdpdGhTYW1lQWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFi
bGUgdSgwLCBhMSk7CisgIHUgPSBzdGQ6Om1vdmUodDEpOworICBFWFBFQ1RfRVEoYTEsIHUuZ2V0
X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVD
VF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMo
KSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgTW92ZUFzc2lnbm1lbnRXaXRoRGlmZmVy
ZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdSgw
LCBhMik7CisgIHUgPSBzdGQ6Om1vdmUodDEpOworICBFWFBFQ1RfRVEoYTEsIHUuZ2V0X2FsbG9j
YXRvcigpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgw
LCBhMi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAg
RVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVP
bk1vdmUsIE1vdmVBc3NpZ25tZW50V2l0aERpZmZlcmVudEFsbG9jKSB7CisgIGF1dG8gaXQgPSB0
MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUoMCwgYTIpOworICB1ID0gc3RkOjptb3ZlKHQx
KTsKKyAgaXQgPSB1LmZpbmQoMCk7CisgIEVYUEVDVF9FUShhMiwgdS5nZXRfYWxsb2NhdG9yKCkp
OworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDEsIGEyLm51
bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1Rf
RVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgU3dh
cCkgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KDAsIGEyKTsK
KyAgdS5zd2FwKHQxKTsKKyAgRVhQRUNUX0VRKGExLCB1LmdldF9hbGxvY2F0b3IoKSk7CisgIEVY
UEVDVF9FUShhMiwgdDEuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9h
bGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBhMi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEo
MCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwK
K30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvcmF3X2hhc2hfc2V0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hh
c2hfc2V0X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2QzM2EzYWNiOTE3ODg4ODg1NWZmOTFkZTk0MTQ2
OTM0YzgzNzU1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9y
YXdfaGFzaF9zZXRfdGVzdC5jYwpAQCAtMCwwICsxLDE5NjEgQEAKKy8vIENvcHlyaWdodCAyMDE4
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9yYXdfaGFzaF9zZXQuaCIKKworI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPGNtYXRoPgor
I2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8ZGVxdWU+CisjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxyYW5k
b20+CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgiCisj
aW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2N5Y2xlY2xvY2suaCIKKyNpbmNsdWRlICJhYnNs
L2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Ry
aW5nX3ZpZXcuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRl
cm5hbCB7CisKK3N0cnVjdCBSYXdIYXNoU2V0VGVzdE9ubHlBY2Nlc3MgeworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQz4KKyAgc3RhdGljIGF1dG8gR2V0U2xvdHMoY29uc3QgQyYgYykgLT4gZGVjbHR5
cGUoYy5zbG90c18pIHsKKyAgICByZXR1cm4gYy5zbG90c187CisgIH0KK307CisKK25hbWVzcGFj
ZSB7CisKK3VzaW5nIDo6dGVzdGluZzo6RG91YmxlTmVhcjsKK3VzaW5nIDo6dGVzdGluZzo6RWxl
bWVudHNBcmU7Cit1c2luZyA6OnRlc3Rpbmc6Ok9wdGlvbmFsOwordXNpbmcgOjp0ZXN0aW5nOjpQ
YWlyOwordXNpbmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZTsKKworVEVTVChVdGls
LCBOb3JtYWxpemVDYXBhY2l0eSkgeworICBjb25zdGV4cHIgc2l6ZV90IGtNaW5DYXBhY2l0eSA9
IEdyb3VwOjprV2lkdGggLSAxOworICBFWFBFQ1RfRVEoa01pbkNhcGFjaXR5LCBOb3JtYWxpemVD
YXBhY2l0eSgwKSk7CisgIEVYUEVDVF9FUShrTWluQ2FwYWNpdHksIE5vcm1hbGl6ZUNhcGFjaXR5
KDEpKTsKKyAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSwgTm9ybWFsaXplQ2FwYWNpdHkoMikpOwor
ICBFWFBFQ1RfRVEoa01pbkNhcGFjaXR5LCBOb3JtYWxpemVDYXBhY2l0eShrTWluQ2FwYWNpdHkp
KTsKKyAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSAqIDIgKyAxLCBOb3JtYWxpemVDYXBhY2l0eShr
TWluQ2FwYWNpdHkgKyAxKSk7CisgIEVYUEVDVF9FUShrTWluQ2FwYWNpdHkgKiAyICsgMSwgTm9y
bWFsaXplQ2FwYWNpdHkoa01pbkNhcGFjaXR5ICsgMikpOworfQorCitURVNUKFV0aWwsIHByb2Jl
X3NlcSkgeworICBwcm9iZV9zZXE8MTY+IHNlcSgwLCAxMjcpOworICBhdXRvIGdlbiA9IFsmXSgp
IHsKKyAgICBzaXplX3QgcmVzID0gc2VxLm9mZnNldCgpOworICAgIHNlcS5uZXh0KCk7CisgICAg
cmV0dXJuIHJlczsKKyAgfTsKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBvZmZzZXRzKDgpOworICBz
dGQ6OmdlbmVyYXRlX24ob2Zmc2V0cy5iZWdpbigpLCA4LCBnZW4pOworICBFWFBFQ1RfVEhBVChv
ZmZzZXRzLCBFbGVtZW50c0FyZSgwLCAxNiwgNDgsIDk2LCAzMiwgMTEyLCA4MCwgNjQpKTsKKyAg
c2VxID0gcHJvYmVfc2VxPDE2PigxMjgsIDEyNyk7CisgIHN0ZDo6Z2VuZXJhdGVfbihvZmZzZXRz
LmJlZ2luKCksIDgsIGdlbik7CisgIEVYUEVDVF9USEFUKG9mZnNldHMsIEVsZW1lbnRzQXJlKDAs
IDE2LCA0OCwgOTYsIDMyLCAxMTIsIDgwLCA2NCkpOworfQorCitURVNUKEJpdE1hc2ssIFNtb2tl
KSB7CisgIEVYUEVDVF9GQUxTRSgoQml0TWFzazx1aW50OF90LCA4PigwKSkpOworICBFWFBFQ1Rf
VFJVRSgoQml0TWFzazx1aW50OF90LCA4Pig1KSkpOworCisgIEVYUEVDVF9USEFUKChCaXRNYXNr
PHVpbnQ4X3QsIDg+KDApKSwgRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9USEFUKChCaXRNYXNr
PHVpbnQ4X3QsIDg+KDB4MSkpLCBFbGVtZW50c0FyZSgwKSk7CisgIEVYUEVDVF9USEFUKChCaXRN
YXNrPHVpbnQ4X3QsIDg+KDB4MikpLCBFbGVtZW50c0FyZSgxKSk7CisgIEVYUEVDVF9USEFUKChC
aXRNYXNrPHVpbnQ4X3QsIDg+KDB4MykpLCBFbGVtZW50c0FyZSgwLCAxKSk7CisgIEVYUEVDVF9U
SEFUKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDB4NCkpLCBFbGVtZW50c0FyZSgyKSk7CisgIEVYUEVD
VF9USEFUKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDB4NSkpLCBFbGVtZW50c0FyZSgwLCAyKSk7Cisg
IEVYUEVDVF9USEFUKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDB4NTUpKSwgRWxlbWVudHNBcmUoMCwg
MiwgNCwgNikpOworICBFWFBFQ1RfVEhBVCgoQml0TWFzazx1aW50OF90LCA4PigweEFBKSksIEVs
ZW1lbnRzQXJlKDEsIDMsIDUsIDcpKTsKK30KKworVEVTVChCaXRNYXNrLCBXaXRoU2hpZnQpIHsK
KyAgLy8gU2VlIHRoZSBub24tU1NFIHZlcnNpb24gb2YgR3JvdXAgZm9yIGRldGFpbHMgb24gd2hh
dCB0aGlzIG1hdGggaXMgZm9yLgorICB1aW50NjRfdCBjdHJsID0gMHgxNzE2MTUxNDEzMTIxMTEw
OworICB1aW50NjRfdCBoYXNoID0gMHgxMjsKKyAgY29uc3RleHByIHVpbnQ2NF90IG1zYnMgPSAw
eDgwODA4MDgwODA4MDgwODBVTEw7CisgIGNvbnN0ZXhwciB1aW50NjRfdCBsc2JzID0gMHgwMTAx
MDEwMTAxMDEwMTAxVUxMOworICBhdXRvIHggPSBjdHJsIF4gKGxzYnMgKiBoYXNoKTsKKyAgdWlu
dDY0X3QgbWFzayA9ICh4IC0gbHNicykgJiB+eCAmIG1zYnM7CisgIEVYUEVDVF9FUSgweDAwMDAw
MDAwODA4MDAwMDAsIG1hc2spOworCisgIEJpdE1hc2s8dWludDY0X3QsIDgsIDM+IGIobWFzayk7
CisgIEVYUEVDVF9FUSgqYiwgMik7Cit9CisKK1RFU1QoQml0TWFzaywgTGVhZGluZ1RyYWlsaW5n
KSB7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDBiMDAwMTEwMTAwMTAwMDAw
MCkuTGVhZGluZ1plcm9zKCkpLCAzKTsKKyAgRVhQRUNUX0VRKChCaXRNYXNrPHVpbnQzMl90LCAx
Nj4oMGIwMDAxMTAxMDAxMDAwMDAwKS5UcmFpbGluZ1plcm9zKCkpLCA2KTsKKworICBFWFBFQ1Rf
RVEoKEJpdE1hc2s8dWludDMyX3QsIDE2PigwYjAwMDAwMDAwMDAwMDAwMDEpLkxlYWRpbmdaZXJv
cygpKSwgMTUpOworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMyX3QsIDE2PigwYjAwMDAwMDAw
MDAwMDAwMDEpLlRyYWlsaW5nWmVyb3MoKSksIDApOworCisgIEVYUEVDVF9FUSgoQml0TWFzazx1
aW50MzJfdCwgMTY+KDBiMTAwMDAwMDAwMDAwMDAwMCkuTGVhZGluZ1plcm9zKCkpLCAwKTsKKyAg
RVhQRUNUX0VRKChCaXRNYXNrPHVpbnQzMl90LCAxNj4oMGIxMDAwMDAwMDAwMDAwMDAwKS5UcmFp
bGluZ1plcm9zKCkpLCAxNSk7CisKKyAgRVhQRUNUX0VRKChCaXRNYXNrPHVpbnQ2NF90LCA4LCAz
PigweDAwMDAwMDgwODA4MDgwMDApLkxlYWRpbmdaZXJvcygpKSwgMyk7CisgIEVYUEVDVF9FUSgo
Qml0TWFzazx1aW50NjRfdCwgOCwgMz4oMHgwMDAwMDA4MDgwODA4MDAwKS5UcmFpbGluZ1plcm9z
KCkpLCAxKTsKKworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDY0X3QsIDgsIDM+KDB4MDAwMDAw
MDAwMDAwMDA4MCkuTGVhZGluZ1plcm9zKCkpLCA3KTsKKyAgRVhQRUNUX0VRKChCaXRNYXNrPHVp
bnQ2NF90LCA4LCAzPigweDAwMDAwMDAwMDAwMDAwODApLlRyYWlsaW5nWmVyb3MoKSksIDApOwor
CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50NjRfdCwgOCwgMz4oMHg4MDAwMDAwMDAwMDAwMDAw
KS5MZWFkaW5nWmVyb3MoKSksIDApOworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDY0X3QsIDgs
IDM+KDB4ODAwMDAwMDAwMDAwMDAwMCkuVHJhaWxpbmdaZXJvcygpKSwgNyk7Cit9CisKK1RFU1Qo
R3JvdXAsIEVtcHR5R3JvdXApIHsKKyAgZm9yIChoMl90IGggPSAwOyBoICE9IDEyODsgKytoKSBF
WFBFQ1RfRkFMU0UoR3JvdXB7RW1wdHlHcm91cCgpfS5NYXRjaChoKSk7Cit9CisKKyNpZiBTV0lT
U1RBQkxFX0hBVkVfU1NFMgorVEVTVChHcm91cCwgTWF0Y2gpIHsKKyAgY3RybF90IGdyb3VwW10g
PSB7a0VtcHR5LCAxLCBrRGVsZXRlZCwgMywga0VtcHR5LCA1LCBrU2VudGluZWwsIDcsCisgICAg
ICAgICAgICAgICAgICAgIDcsICAgICAgNSwgMywgICAgICAgIDEsIDEsICAgICAgMSwgMSwgICAg
ICAgICAxfTsKKyAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDApLCBFbGVtZW50c0Fy
ZSgpKTsKKyAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDEpLCBFbGVtZW50c0FyZSgx
LCAxMSwgMTIsIDEzLCAxNCwgMTUpKTsKKyAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNo
KDMpLCBFbGVtZW50c0FyZSgzLCAxMCkpOworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0
Y2goNSksIEVsZW1lbnRzQXJlKDUsIDkpKTsKKyAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1h
dGNoKDcpLCBFbGVtZW50c0FyZSg3LCA4KSk7Cit9CisKK1RFU1QoR3JvdXAsIE1hdGNoRW1wdHkp
IHsKKyAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCBrRGVsZXRlZCwgMywga0VtcHR5LCA1
LCBrU2VudGluZWwsIDcsCisgICAgICAgICAgICAgICAgICAgIDcsICAgICAgNSwgMywgICAgICAg
IDEsIDEsICAgICAgMSwgMSwgICAgICAgICAxfTsKKyAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9
Lk1hdGNoRW1wdHkoKSwgRWxlbWVudHNBcmUoMCwgNCkpOworfQorCitURVNUKEdyb3VwLCBNYXRj
aEVtcHR5T3JEZWxldGVkKSB7CisgIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwga0RlbGV0
ZWQsIDMsIGtFbXB0eSwgNSwga1NlbnRpbmVsLCA3LAorICAgICAgICAgICAgICAgICAgICA3LCAg
ICAgIDUsIDMsICAgICAgICAxLCAxLCAgICAgIDEsIDEsICAgICAgICAgMX07CisgIEVYUEVDVF9U
SEFUKEdyb3Vwe2dyb3VwfS5NYXRjaEVtcHR5T3JEZWxldGVkKCksIEVsZW1lbnRzQXJlKDAsIDIs
IDQpKTsKK30KKyNlbHNlCitURVNUKEdyb3VwLCBNYXRjaCkgeworICBjdHJsX3QgZ3JvdXBbXSA9
IHtrRW1wdHksIDEsIDIsIGtEZWxldGVkLCAyLCAxLCBrU2VudGluZWwsIDF9OworICBFWFBFQ1Rf
VEhBVChHcm91cHtncm91cH0uTWF0Y2goMCksIEVsZW1lbnRzQXJlKCkpOworICBFWFBFQ1RfVEhB
VChHcm91cHtncm91cH0uTWF0Y2goMSksIEVsZW1lbnRzQXJlKDEsIDUsIDcpKTsKKyAgRVhQRUNU
X1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDIpLCBFbGVtZW50c0FyZSgyLCA0KSk7Cit9CitURVNU
KEdyb3VwLCBNYXRjaEVtcHR5KSB7CisgIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwgMiwg
a0RlbGV0ZWQsIDIsIDEsIGtTZW50aW5lbCwgMX07CisgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3Vw
fS5NYXRjaEVtcHR5KCksIEVsZW1lbnRzQXJlKDApKTsKK30KKworVEVTVChHcm91cCwgTWF0Y2hF
bXB0eU9yRGVsZXRlZCkgeworICBjdHJsX3QgZ3JvdXBbXSA9IHtrRW1wdHksIDEsIDIsIGtEZWxl
dGVkLCAyLCAxLCBrU2VudGluZWwsIDF9OworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0
Y2hFbXB0eU9yRGVsZXRlZCgpLCBFbGVtZW50c0FyZSgwLCAzKSk7Cit9CisjZW5kaWYKKworVEVT
VChCYXRjaCwgRHJvcERlbGV0ZXMpIHsKKyAgY29uc3RleHByIHNpemVfdCBrQ2FwYWNpdHkgPSA2
MzsKKyAgY29uc3RleHByIHNpemVfdCBrR3JvdXBXaWR0aCA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6
R3JvdXA6OmtXaWR0aDsKKyAgc3RkOjp2ZWN0b3I8Y3RybF90PiBjdHJsKGtDYXBhY2l0eSArIDEg
KyBrR3JvdXBXaWR0aCk7CisgIGN0cmxba0NhcGFjaXR5XSA9IGtTZW50aW5lbDsKKyAgc3RkOjp2
ZWN0b3I8Y3RybF90PiBwYXR0ZXJuID0ge2tFbXB0eSwgMiwga0RlbGV0ZWQsIDIsIGtFbXB0eSwg
MSwga0RlbGV0ZWR9OworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBrQ2FwYWNpdHk7ICsraSkg
eworICAgIGN0cmxbaV0gPSBwYXR0ZXJuW2kgJSBwYXR0ZXJuLnNpemUoKV07CisgICAgaWYgKGkg
PCBrR3JvdXBXaWR0aCAtIDEpCisgICAgICBjdHJsW2kgKyBrQ2FwYWNpdHkgKyAxXSA9IHBhdHRl
cm5baSAlIHBhdHRlcm4uc2l6ZSgpXTsKKyAgfQorICBDb252ZXJ0RGVsZXRlZFRvRW1wdHlBbmRG
dWxsVG9EZWxldGVkKGN0cmwuZGF0YSgpLCBrQ2FwYWNpdHkpOworICBBU1NFUlRfRVEoY3RybFtr
Q2FwYWNpdHldLCBrU2VudGluZWwpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtDYXBhY2l0
eSArIDEgKyBrR3JvdXBXaWR0aDsgKytpKSB7CisgICAgY3RybF90IGV4cGVjdGVkID0gcGF0dGVy
bltpICUgKGtDYXBhY2l0eSArIDEpICUgcGF0dGVybi5zaXplKCldOworICAgIGlmIChpID09IGtD
YXBhY2l0eSkgZXhwZWN0ZWQgPSBrU2VudGluZWw7CisgICAgaWYgKGV4cGVjdGVkID09IGtEZWxl
dGVkKSBleHBlY3RlZCA9IGtFbXB0eTsKKyAgICBpZiAoSXNGdWxsKGV4cGVjdGVkKSkgZXhwZWN0
ZWQgPSBrRGVsZXRlZDsKKyAgICBFWFBFQ1RfRVEoY3RybFtpXSwgZXhwZWN0ZWQpCisgICAgICAg
IDw8IGkgPDwgIiAiIDw8IGludHtwYXR0ZXJuW2kgJSBwYXR0ZXJuLnNpemUoKV19OworICB9Cit9
CisKK1RFU1QoR3JvdXAsIENvdW50TGVhZGluZ0VtcHR5T3JEZWxldGVkKSB7CisgIGNvbnN0IHN0
ZDo6dmVjdG9yPGN0cmxfdD4gZW1wdHlfZXhhbXBsZXMgPSB7a0VtcHR5LCBrRGVsZXRlZH07Cisg
IGNvbnN0IHN0ZDo6dmVjdG9yPGN0cmxfdD4gZnVsbF9leGFtcGxlcyA9IHswLCAxLCAyLCAzLCA1
LCA5LCAxMjcsIGtTZW50aW5lbH07CisKKyAgZm9yIChjdHJsX3QgZW1wdHkgOiBlbXB0eV9leGFt
cGxlcykgeworICAgIHN0ZDo6dmVjdG9yPGN0cmxfdD4gZShHcm91cDo6a1dpZHRoLCBlbXB0eSk7
CisgICAgRVhQRUNUX0VRKEdyb3VwOjprV2lkdGgsIEdyb3Vwe2UuZGF0YSgpfS5Db3VudExlYWRp
bmdFbXB0eU9yRGVsZXRlZCgpKTsKKyAgICBmb3IgKGN0cmxfdCBmdWxsIDogZnVsbF9leGFtcGxl
cykgeworICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gR3JvdXA6OmtXaWR0aDsgKytpKSB7
CisgICAgICAgIHN0ZDo6dmVjdG9yPGN0cmxfdD4gZihHcm91cDo6a1dpZHRoLCBlbXB0eSk7Cisg
ICAgICAgIGZbaV0gPSBmdWxsOworICAgICAgICBFWFBFQ1RfRVEoaSwgR3JvdXB7Zi5kYXRhKCl9
LkNvdW50TGVhZGluZ0VtcHR5T3JEZWxldGVkKCkpOworICAgICAgfQorICAgICAgc3RkOjp2ZWN0
b3I8Y3RybF90PiBmKEdyb3VwOjprV2lkdGgsIGVtcHR5KTsKKyAgICAgIGZbR3JvdXA6OmtXaWR0
aCAqIDIgLyAzXSA9IGZ1bGw7CisgICAgICBmW0dyb3VwOjprV2lkdGggLyAyXSA9IGZ1bGw7Cisg
ICAgICBFWFBFQ1RfRVEoCisgICAgICAgICAgR3JvdXA6OmtXaWR0aCAvIDIsIEdyb3Vwe2YuZGF0
YSgpfS5Db3VudExlYWRpbmdFbXB0eU9yRGVsZXRlZCgpKTsKKyAgICB9CisgIH0KK30KKworc3Ry
dWN0IEludFBvbGljeSB7CisgIHVzaW5nIHNsb3RfdHlwZSA9IGludDY0X3Q7CisgIHVzaW5nIGtl
eV90eXBlID0gaW50NjRfdDsKKyAgdXNpbmcgaW5pdF90eXBlID0gaW50NjRfdDsKKworICBzdGF0
aWMgdm9pZCBjb25zdHJ1Y3Qodm9pZCosIGludDY0X3QqIHNsb3QsIGludDY0X3QgdikgeyAqc2xv
dCA9IHY7IH0KKyAgc3RhdGljIHZvaWQgZGVzdHJveSh2b2lkKiwgaW50NjRfdCopIHt9CisgIHN0
YXRpYyB2b2lkIHRyYW5zZmVyKHZvaWQqLCBpbnQ2NF90KiBuZXdfc2xvdCwgaW50NjRfdCogb2xk
X3Nsb3QpIHsKKyAgICAqbmV3X3Nsb3QgPSAqb2xkX3Nsb3Q7CisgIH0KKworICBzdGF0aWMgaW50
NjRfdCYgZWxlbWVudChzbG90X3R5cGUqIHNsb3QpIHsgcmV0dXJuICpzbG90OyB9CisKKyAgdGVt
cGxhdGUgPGNsYXNzIEY+CisgIHN0YXRpYyBhdXRvIGFwcGx5KEYmJiBmLCBpbnQ2NF90IHgpIC0+
IGRlY2x0eXBlKHN0ZDo6Zm9yd2FyZDxGPihmKSh4LCB4KSkgeworICAgIHJldHVybiBzdGQ6OmZv
cndhcmQ8Rj4oZikoeCwgeCk7CisgIH0KK307CisKK2NsYXNzIFN0cmluZ1BvbGljeSB7CisgIHRl
bXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBLLCBjbGFzcyBWLAorICAgICAgICAgICAgY2xhc3MgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRp
YmxlPGNvbnN0IEsmLCBhYnNsOjpzdHJpbmdfdmlldz46OnZhbHVlPjo6dHlwZT4KKyAgZGVjbHR5
cGUoc3RkOjpkZWNsdmFsPEY+KCkoCisgICAgICBzdGQ6OmRlY2x2YWw8Y29uc3QgYWJzbDo6c3Ry
aW5nX3ZpZXcmPigpLCBzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsCisgICAgICBzdGQ6OmRlY2x2
YWw8c3RkOjp0dXBsZTxLPj4oKSwKKyAgICAgIHN0ZDo6ZGVjbHZhbDxWPigpKSkgc3RhdGljIGFw
cGx5X2ltcGwoRiYmIGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6cGFpcjxzdGQ6OnR1cGxlPEs+LCBWPiBwKSB7CisgICAgY29uc3QgYWJzbDo6c3Ry
aW5nX3ZpZXcmIGtleSA9IHN0ZDo6Z2V0PDA+KHAuZmlyc3QpOworICAgIHJldHVybiBzdGQ6OmZv
cndhcmQ8Rj4oZikoa2V5LCBzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6bW92ZShwLmZp
cnN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShwLnNlY29uZCkp
OworICB9CisKKyBwdWJsaWM6CisgIHN0cnVjdCBzbG90X3R5cGUgeworICAgIHN0cnVjdCBjdG9y
IHt9OworCisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIFRzPgorICAgIHNsb3RfdHlwZShjdG9yLCBU
cyYmLi4uIHRzKSA6IHBhaXIoc3RkOjpmb3J3YXJkPFRzPih0cykuLi4pIHt9CisKKyAgICBzdGQ6
OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBwYWlyOworICB9OworCisgIHVzaW5nIGtl
eV90eXBlID0gc3RkOjpzdHJpbmc7CisgIHVzaW5nIGluaXRfdHlwZSA9IHN0ZDo6cGFpcjxzdGQ6
OnN0cmluZywgc3RkOjpzdHJpbmc+OworCisgIHRlbXBsYXRlIDxjbGFzcyBhbGxvY2F0b3JfdHlw
ZSwgY2xhc3MuLi4gQXJncz4KKyAgc3RhdGljIHZvaWQgY29uc3RydWN0KGFsbG9jYXRvcl90eXBl
KiBhbGxvYywgc2xvdF90eXBlKiBzbG90LCBBcmdzLi4uIGFyZ3MpIHsKKyAgICBzdGQ6OmFsbG9j
YXRvcl90cmFpdHM8YWxsb2NhdG9yX3R5cGU+Ojpjb25zdHJ1Y3QoCisgICAgICAgICphbGxvYywg
c2xvdCwgdHlwZW5hbWUgc2xvdF90eXBlOjpjdG9yKCksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgYWxsb2NhdG9yX3R5cGU+CisgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koYWxsb2NhdG9yX3R5cGUqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QpIHsK
KyAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yX3R5cGU+OjpkZXN0cm95KCphbGxv
Yywgc2xvdCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgYWxsb2NhdG9yX3R5cGU+CisgIHN0
YXRpYyB2b2lkIHRyYW5zZmVyKGFsbG9jYXRvcl90eXBlKiBhbGxvYywgc2xvdF90eXBlKiBuZXdf
c2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAg
IGNvbnN0cnVjdChhbGxvYywgbmV3X3Nsb3QsIHN0ZDo6bW92ZShvbGRfc2xvdC0+cGFpcikpOwor
ICAgIGRlc3Ryb3koYWxsb2MsIG9sZF9zbG90KTsKKyAgfQorCisgIHN0YXRpYyBzdGQ6OnBhaXI8
c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiYgZWxlbWVudChzbG90X3R5cGUqIHNsb3QpIHsKKyAg
ICByZXR1cm4gc2xvdC0+cGFpcjsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcy4u
LiBBcmdzPgorICBzdGF0aWMgYXV0byBhcHBseShGJiYgZiwgQXJncyYmLi4uIGFyZ3MpCisgICAg
ICAtPiBkZWNsdHlwZShhcHBseV9pbXBsKHN0ZDo6Zm9yd2FyZDxGPihmKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGFpckFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkp
IHsKKyAgICByZXR1cm4gYXBwbHlfaW1wbChzdGQ6OmZvcndhcmQ8Rj4oZiksCisgICAgICAgICAg
ICAgICAgICAgICAgUGFpckFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgIH0K
K307CisKK3N0cnVjdCBTdHJpbmdIYXNoIDogYWJzbDo6SGFzaDxhYnNsOjpzdHJpbmdfdmlldz4g
eworICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7Cit9Oworc3RydWN0IFN0cmluZ0VxIDog
c3RkOjplcXVhbF90bzxhYnNsOjpzdHJpbmdfdmlldz4geworICB1c2luZyBpc190cmFuc3BhcmVu
dCA9IHZvaWQ7Cit9OworCitzdHJ1Y3QgU3RyaW5nVGFibGUKKyAgICA6IHJhd19oYXNoX3NldDxT
dHJpbmdQb2xpY3ksIFN0cmluZ0hhc2gsIFN0cmluZ0VxLCBzdGQ6OmFsbG9jYXRvcjxpbnQ+PiB7
CisgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBTdHJpbmdUYWJsZTo6cmF3X2hhc2hfc2V0OworICBT
dHJpbmdUYWJsZSgpIHt9CisgIHVzaW5nIEJhc2U6OkJhc2U7Cit9OworCitzdHJ1Y3QgSW50VGFi
bGUKKyAgICA6IHJhd19oYXNoX3NldDxJbnRQb2xpY3ksIGNvbnRhaW5lcl9pbnRlcm5hbDo6aGFz
aF9kZWZhdWx0X2hhc2g8aW50NjRfdD4sCisgICAgICAgICAgICAgICAgICAgc3RkOjplcXVhbF90
bzxpbnQ2NF90Piwgc3RkOjphbGxvY2F0b3I8aW50NjRfdD4+IHsKKyAgdXNpbmcgQmFzZSA9IHR5
cGVuYW1lIEludFRhYmxlOjpyYXdfaGFzaF9zZXQ7CisgIEludFRhYmxlKCkge30KKyAgdXNpbmcg
QmFzZTo6QmFzZTsKK307CisKK3N0cnVjdCBCYWRGYXN0SGFzaCB7CisgIHRlbXBsYXRlIDxjbGFz
cyBUPgorICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBUJikgY29uc3QgeworICAgIHJldHVybiAw
OworICB9Cit9OworCitzdHJ1Y3QgQmFkVGFibGUgOiByYXdfaGFzaF9zZXQ8SW50UG9saWN5LCBC
YWRGYXN0SGFzaCwgc3RkOjplcXVhbF90bzxpbnQ+LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6YWxsb2NhdG9yPGludD4+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIEJh
ZFRhYmxlOjpyYXdfaGFzaF9zZXQ7CisgIEJhZFRhYmxlKCkge30KKyAgdXNpbmcgQmFzZTo6QmFz
ZTsKK307CisKK1RFU1QoVGFibGUsIEVtcHR5RnVuY3Rvck9wdGltaXphdGlvbikgeworICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfZW1wdHk8c3RkOjplcXVhbF90bzxhYnNsOjpzdHJpbmdfdmlldz4+
Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZW1wdHk8c3RkOjphbGxvY2F0
b3I8aW50Pj46OnZhbHVlLCAiIik7CisKKyAgc3RydWN0IE1vY2tUYWJsZSB7CisgICAgdm9pZCog
Y3RybDsKKyAgICB2b2lkKiBzbG90czsKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBzaXplX3QgY2Fw
YWNpdHk7CisgICAgc2l6ZV90IGdyb3d0aF9sZWZ0OworICB9OworICBzdHJ1Y3QgU3RhdGVsZXNz
SGFzaCB7CisgICAgc2l6ZV90IG9wZXJhdG9yKCkoYWJzbDo6c3RyaW5nX3ZpZXcpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KKyAgfTsKKyAgc3RydWN0IFN0YXRlZnVsSGFzaCA6IFN0YXRlbGVzc0hhc2gg
eworICAgIHNpemVfdCBkdW1teTsKKyAgfTsKKworICBFWFBFQ1RfRVEoCisgICAgICBzaXplb2Yo
TW9ja1RhYmxlKSwKKyAgICAgIHNpemVvZigKKyAgICAgICAgICByYXdfaGFzaF9zZXQ8U3RyaW5n
UG9saWN5LCBTdGF0ZWxlc3NIYXNoLAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVxdWFs
X3RvPGFic2w6OnN0cmluZ192aWV3Piwgc3RkOjphbGxvY2F0b3I8aW50Pj4pKTsKKworICBFWFBF
Q1RfRVEoCisgICAgICBzaXplb2YoTW9ja1RhYmxlKSArIHNpemVvZihTdGF0ZWZ1bEhhc2gpLAor
ICAgICAgc2l6ZW9mKAorICAgICAgICAgIHJhd19oYXNoX3NldDxTdHJpbmdQb2xpY3ksIFN0YXRl
ZnVsSGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjplcXVhbF90bzxhYnNsOjpzdHJp
bmdfdmlldz4sIHN0ZDo6YWxsb2NhdG9yPGludD4+KSk7Cit9CisKK1RFU1QoVGFibGUsIEVtcHR5
KSB7CisgIEludFRhYmxlIHQ7CisgIEVYUEVDVF9FUSgwLCB0LnNpemUoKSk7CisgIEVYUEVDVF9U
UlVFKHQuZW1wdHkoKSk7Cit9CisKKyNpZmRlZiBfX0dOVUNfXwordGVtcGxhdGUgPGNsYXNzIFQ+
CitBQlNMX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FIGlubGluZSB2b2lkIERvTm90T3B0aW1pemUo
Y29uc3QgVCYgdikgeworICBhc20gdm9sYXRpbGUoIiIgOiA6ICJyLG0iKHYpIDogIm1lbW9yeSIp
OworfQorI2VuZGlmCisKK1RFU1QoVGFibGUsIFByZWZldGNoKSB7CisgIEludFRhYmxlIHQ7Cisg
IHQuZW1wbGFjZSgxKTsKKyAgLy8gV29ya3MgZm9yIGJvdGggcHJlc2VudCBhbmQgYWJzZW50IGtl
eXMuCisgIHQucHJlZmV0Y2goMSk7CisgIHQucHJlZmV0Y2goMik7CisKKyAgLy8gRG8gbm90IHJ1
biBpbiBkZWJ1ZyBtb2RlLCB3aGVuIHByZWZldGNoIGlzIG5vdCBpbXBsZW1lbnRlZCwgb3Igd2hl
bgorICAvLyBzYW5pdGl6ZXJzIGFyZSBlbmFibGVkLgorI2lmIGRlZmluZWQoTkRFQlVHKSAmJiBk
ZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgJiYgXAorICAg
ICFkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpICYmICFkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIp
ICYmICAgICAgICAgICAgXAorICAgICFkZWZpbmVkKFVOREVGSU5FRF9CRUhBVklPUl9TQU5JVEla
RVIpCisgIGNvbnN0IGF1dG8gbm93ID0gW10geyByZXR1cm4gYWJzbDo6YmFzZV9pbnRlcm5hbDo6
Q3ljbGVDbG9jazo6Tm93KCk7IH07CisKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc2l6ZSA9IDEw
MDAwMDA7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB0Lmluc2VydChpKTsKKwor
ICBpbnQ2NF90IG5vX3ByZWZldGNoID0gMCwgcHJlZmV0Y2ggPSAwOworICBmb3IgKGludCBpdGVy
ID0gMDsgaXRlciA8IDEwOyArK2l0ZXIpIHsKKyAgICBpbnQ2NF90IHRpbWUgPSBub3coKTsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgRG9Ob3RPcHRpbWl6ZSh0
LmZpbmQoaSkpOworICAgIH0KKyAgICBub19wcmVmZXRjaCArPSBub3coKSAtIHRpbWU7CisKKyAg
ICB0aW1lID0gbm93KCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAg
ICAgIHQucHJlZmV0Y2goaSArIDIwKTsKKyAgICAgIERvTm90T3B0aW1pemUodC5maW5kKGkpKTsK
KyAgICB9CisgICAgcHJlZmV0Y2ggKz0gbm93KCkgLSB0aW1lOworICB9CisKKyAgLy8gbm9fcHJl
ZmV0Y2ggaXMgYXQgbGVhc3QgMzAlIHNsb3dlci4KKyAgRVhQRUNUX0dFKDEuMCAqIG5vX3ByZWZl
dGNoIC8gcHJlZmV0Y2gsIDEuMyk7CisjZW5kaWYKK30KKworVEVTVChUYWJsZSwgTG9va3VwRW1w
dHkpIHsKKyAgSW50VGFibGUgdDsKKyAgYXV0byBpdCA9IHQuZmluZCgwKTsKKyAgRVhQRUNUX1RS
VUUoaXQgPT0gdC5lbmQoKSk7Cit9CisKK1RFU1QoVGFibGUsIEluc2VydDEpIHsKKyAgSW50VGFi
bGUgdDsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDApID09IHQuZW5kKCkpOworICBhdXRvIHJlcyA9
IHQuZW1wbGFjZSgwKTsKKyAgRVhQRUNUX1RSVUUocmVzLnNlY29uZCk7CisgIEVYUEVDVF9USEFU
KCpyZXMuZmlyc3QsIDApOworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworICBFWFBFQ1RfVEhB
VCgqdC5maW5kKDApLCAwKTsKK30KKworVEVTVChUYWJsZSwgSW5zZXJ0MikgeworICBJbnRUYWJs
ZSB0OworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7CisgIGF1dG8gcmVzID0g
dC5lbXBsYWNlKDApOworICBFWFBFQ1RfVFJVRShyZXMuc2Vjb25kKTsKKyAgRVhQRUNUX1RIQVQo
KnJlcy5maXJzdCwgMCk7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIEVYUEVDVF9UUlVF
KHQuZmluZCgxKSA9PSB0LmVuZCgpKTsKKyAgcmVzID0gdC5lbXBsYWNlKDEpOworICBFWFBFQ1Rf
VFJVRShyZXMuc2Vjb25kKTsKKyAgRVhQRUNUX1RIQVQoKnJlcy5maXJzdCwgMSk7CisgIEVYUEVD
VF9FUSgyLCB0LnNpemUoKSk7CisgIEVYUEVDVF9USEFUKCp0LmZpbmQoMCksIDApOworICBFWFBF
Q1RfVEhBVCgqdC5maW5kKDEpLCAxKTsKK30KKworVEVTVChUYWJsZSwgSW5zZXJ0Q29sbGlzaW9u
KSB7CisgIEJhZFRhYmxlIHQ7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgxKSA9PSB0LmVuZCgpKTsK
KyAgYXV0byByZXMgPSB0LmVtcGxhY2UoMSk7CisgIEVYUEVDVF9UUlVFKHJlcy5zZWNvbmQpOwor
ICBFWFBFQ1RfVEhBVCgqcmVzLmZpcnN0LCAxKTsKKyAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsK
KworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMikgPT0gdC5lbmQoKSk7CisgIHJlcyA9IHQuZW1wbGFj
ZSgyKTsKKyAgRVhQRUNUX1RIQVQoKnJlcy5maXJzdCwgMik7CisgIEVYUEVDVF9UUlVFKHJlcy5z
ZWNvbmQpOworICBFWFBFQ1RfRVEoMiwgdC5zaXplKCkpOworCisgIEVYUEVDVF9USEFUKCp0LmZp
bmQoMSksIDEpOworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDIpLCAyKTsKK30KKworLy8gVGVzdCB0
aGF0IHdlIGRvIG5vdCBhZGQgZXhpc3RlbnQgZWxlbWVudCBpbiBjYXNlIHdlIG5lZWQgdG8gc2Vh
cmNoIHRocm91Z2gKKy8vIG1hbnkgZ3JvdXBzIHdpdGggZGVsZXRlZCBlbGVtZW50cworVEVTVChU
YWJsZSwgSW5zZXJ0Q29sbGlzaW9uQW5kRmluZEFmdGVyRGVsZXRlKSB7CisgIEJhZFRhYmxlIHQ7
ICAvLyBhbGwgZWxlbWVudHMgZ28gdG8gdGhlIHNhbWUgZ3JvdXAuCisgIC8vIEhhdmUgYXQgbGVh
c3QgMiBncm91cHMgd2l0aCBHcm91cDo6a1dpZHRoIGNvbGxpc2lvbnMKKyAgLy8gcGx1cyBzb21l
IGV4dHJhIGNvbGxpc2lvbnMgaW4gdGhlIGxhc3QgZ3JvdXAuCisgIGNvbnN0ZXhwciBzaXplX3Qg
a051bUluc2VydHMgPSBHcm91cDo6a1dpZHRoICogMiArIDU7CisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwga051bUluc2VydHM7ICsraSkgeworICAgIGF1dG8gcmVzID0gdC5lbXBsYWNlKGkpOwor
ICAgIEVYUEVDVF9UUlVFKHJlcy5zZWNvbmQpOworICAgIEVYUEVDVF9USEFUKCpyZXMuZmlyc3Qs
IGkpOworICAgIEVYUEVDVF9FUShpICsgMSwgdC5zaXplKCkpOworICB9CisKKyAgLy8gUmVtb3Zl
IGVsZW1lbnRzIG9uZSBieSBvbmUgYW5kIGNoZWNrCisgIC8vIHRoYXQgd2Ugc3RpbGwgY2FuIGZp
bmQgYWxsIG90aGVyIGVsZW1lbnRzLgorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtOdW1JbnNl
cnRzOyArK2kpIHsKKyAgICBFWFBFQ1RfRVEoMSwgdC5lcmFzZShpKSkgPDwgaTsKKyAgICBmb3Ig
KHNpemVfdCBqID0gaSArIDE7IGogPCBrTnVtSW5zZXJ0czsgKytqKSB7CisgICAgICBFWFBFQ1Rf
VEhBVCgqdC5maW5kKGopLCBqKTsKKyAgICAgIGF1dG8gcmVzID0gdC5lbXBsYWNlKGopOworICAg
ICAgRVhQRUNUX0ZBTFNFKHJlcy5zZWNvbmQpIDw8IGkgPDwgIiAiIDw8IGo7CisgICAgICBFWFBF
Q1RfVEhBVCgqcmVzLmZpcnN0LCBqKTsKKyAgICAgIEVYUEVDVF9FUShrTnVtSW5zZXJ0cyAtIGkg
LSAxLCB0LnNpemUoKSk7CisgICAgfQorICB9CisgIEVYUEVDVF9UUlVFKHQuZW1wdHkoKSk7Cit9
CisKK1RFU1QoVGFibGUsIExhenlFbXBsYWNlKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIGJvb2wg
Y2FsbGVkID0gZmFsc2U7CisgIGF1dG8gaXQgPSB0LmxhenlfZW1wbGFjZSgiYWJjIiwgWyZdKGNv
bnN0IFN0cmluZ1RhYmxlOjpjb25zdHJ1Y3RvciYgZikgeworICAgIGNhbGxlZCA9IHRydWU7Cisg
ICAgZigiYWJjIiwgIkFCQyIpOworICB9KTsKKyAgRVhQRUNUX1RSVUUoY2FsbGVkKTsKKyAgRVhQ
RUNUX1RIQVQoKml0LCBQYWlyKCJhYmMiLCAiQUJDIikpOworICBjYWxsZWQgPSBmYWxzZTsKKyAg
aXQgPSB0LmxhenlfZW1wbGFjZSgiYWJjIiwgWyZdKGNvbnN0IFN0cmluZ1RhYmxlOjpjb25zdHJ1
Y3RvciYgZikgeworICAgIGNhbGxlZCA9IHRydWU7CisgICAgZigiYWJjIiwgIkRFRiIpOworICB9
KTsKKyAgRVhQRUNUX0ZBTFNFKGNhbGxlZCk7CisgIEVYUEVDVF9USEFUKCppdCwgUGFpcigiYWJj
IiwgIkFCQyIpKTsKK30KKworVEVTVChUYWJsZSwgQ29udGFpbnNFbXB0eSkgeworICBJbnRUYWJs
ZSB0OworCisgIEVYUEVDVF9GQUxTRSh0LmNvbnRhaW5zKDApKTsKK30KKworVEVTVChUYWJsZSwg
Q29udGFpbnMxKSB7CisgIEludFRhYmxlIHQ7CisKKyAgRVhQRUNUX1RSVUUodC5pbnNlcnQoMCku
c2Vjb25kKTsKKyAgRVhQRUNUX1RSVUUodC5jb250YWlucygwKSk7CisgIEVYUEVDVF9GQUxTRSh0
LmNvbnRhaW5zKDEpKTsKKworICBFWFBFQ1RfRVEoMSwgdC5lcmFzZSgwKSk7CisgIEVYUEVDVF9G
QUxTRSh0LmNvbnRhaW5zKDApKTsKK30KKworVEVTVChUYWJsZSwgQ29udGFpbnMyKSB7CisgIElu
dFRhYmxlIHQ7CisKKyAgRVhQRUNUX1RSVUUodC5pbnNlcnQoMCkuc2Vjb25kKTsKKyAgRVhQRUNU
X1RSVUUodC5jb250YWlucygwKSk7CisgIEVYUEVDVF9GQUxTRSh0LmNvbnRhaW5zKDEpKTsKKwor
ICB0LmNsZWFyKCk7CisgIEVYUEVDVF9GQUxTRSh0LmNvbnRhaW5zKDApKTsKK30KKworaW50IGRl
Y29tcG9zZV9jb25zdHJ1Y3RlZDsKK3N0cnVjdCBEZWNvbXBvc2VUeXBlIHsKKyAgRGVjb21wb3Nl
VHlwZShpbnQgaSkgOiBpKGkpIHsgIC8vIE5PTElOVAorICAgICsrZGVjb21wb3NlX2NvbnN0cnVj
dGVkOworICB9CisKKyAgZXhwbGljaXQgRGVjb21wb3NlVHlwZShjb25zdCBjaGFyKiBkKSA6IERl
Y29tcG9zZVR5cGUoKmQpIHt9CisKKyAgaW50IGk7Cit9OworCitzdHJ1Y3QgRGVjb21wb3NlSGFz
aCB7CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKyAgc2l6ZV90IG9wZXJhdG9yKCko
RGVjb21wb3NlVHlwZSBhKSBjb25zdCB7IHJldHVybiBhLmk7IH0KKyAgc2l6ZV90IG9wZXJhdG9y
KCkoaW50IGEpIGNvbnN0IHsgcmV0dXJuIGE7IH0KKyAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3Qg
Y2hhciogYSkgY29uc3QgeyByZXR1cm4gKmE7IH0KK307CisKK3N0cnVjdCBEZWNvbXBvc2VFcSB7
CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKyAgYm9vbCBvcGVyYXRvcigpKERlY29t
cG9zZVR5cGUgYSwgRGVjb21wb3NlVHlwZSBiKSBjb25zdCB7IHJldHVybiBhLmkgPT0gYi5pOyB9
CisgIGJvb2wgb3BlcmF0b3IoKShEZWNvbXBvc2VUeXBlIGEsIGludCBiKSBjb25zdCB7IHJldHVy
biBhLmkgPT0gYjsgfQorICBib29sIG9wZXJhdG9yKCkoRGVjb21wb3NlVHlwZSBhLCBjb25zdCBj
aGFyKiBiKSBjb25zdCB7IHJldHVybiBhLmkgPT0gKmI7IH0KK307CisKK3N0cnVjdCBEZWNvbXBv
c2VQb2xpY3kgeworICB1c2luZyBzbG90X3R5cGUgPSBEZWNvbXBvc2VUeXBlOworICB1c2luZyBr
ZXlfdHlwZSA9IERlY29tcG9zZVR5cGU7CisgIHVzaW5nIGluaXRfdHlwZSA9IERlY29tcG9zZVR5
cGU7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdCh2
b2lkKiwgRGVjb21wb3NlVHlwZSogc2xvdCwgVCYmIHYpIHsKKyAgICAqc2xvdCA9IERlY29tcG9z
ZVR5cGUoc3RkOjpmb3J3YXJkPFQ+KHYpKTsKKyAgfQorICBzdGF0aWMgdm9pZCBkZXN0cm95KHZv
aWQqLCBEZWNvbXBvc2VUeXBlKikge30KKyAgc3RhdGljIERlY29tcG9zZVR5cGUmIGVsZW1lbnQo
c2xvdF90eXBlKiBzbG90KSB7IHJldHVybiAqc2xvdDsgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBG
LCBjbGFzcyBUPgorICBzdGF0aWMgYXV0byBhcHBseShGJiYgZiwgY29uc3QgVCYgeCkgLT4gZGVj
bHR5cGUoc3RkOjpmb3J3YXJkPEY+KGYpKHgsIHgpKSB7CisgICAgcmV0dXJuIHN0ZDo6Zm9yd2Fy
ZDxGPihmKSh4LCB4KTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEhhc2gsIHR5cGVu
YW1lIEVxPgordm9pZCBUZXN0RGVjb21wb3NlKGJvb2wgY29uc3RydWN0X3RocmVlKSB7CisgIERl
Y29tcG9zZVR5cGUgZWxlbXswfTsKKyAgY29uc3QgaW50IG9uZSA9IDE7CisgIGNvbnN0IGNoYXIq
IHRocmVlX3AgPSAiMyI7CisgIGNvbnN0IGF1dG8mIHRocmVlID0gdGhyZWVfcDsKKworICByYXdf
aGFzaF9zZXQ8RGVjb21wb3NlUG9saWN5LCBIYXNoLCBFcSwgc3RkOjphbGxvY2F0b3I8aW50Pj4g
c2V0MTsKKworICBkZWNvbXBvc2VfY29uc3RydWN0ZWQgPSAwOworICBpbnQgZXhwZWN0ZWRfY29u
c3RydWN0ZWQgPSAwOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9z
ZV9jb25zdHJ1Y3RlZCk7CisgIHNldDEuaW5zZXJ0KGVsZW0pOworICBFWFBFQ1RfRVEoZXhwZWN0
ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgIHNldDEuaW5zZXJ0KDEp
OworICBFWFBFQ1RfRVEoKytleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVj
dGVkKTsKKyAgc2V0MS5lbXBsYWNlKCIzIik7CisgIEVYUEVDVF9FUSgrK2V4cGVjdGVkX2NvbnN0
cnVjdGVkLCBkZWNvbXBvc2VfY29uc3RydWN0ZWQpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29u
c3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisKKyAgeyAgLy8gaW5zZXJ0KFQmJikK
KyAgICBzZXQxLmluc2VydCgxKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQs
IGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgIH0KKworICB7ICAvLyBpbnNlcnQoY29uc3QgVCYp
CisgICAgc2V0MS5pbnNlcnQob25lKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0
ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgIH0KKworICB7ICAvLyBpbnNlcnQoaGludCwg
VCYmKQorICAgIHNldDEuaW5zZXJ0KHNldDEuYmVnaW4oKSwgMSk7CisgICAgRVhQRUNUX0VRKGV4
cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBvc2VfY29uc3RydWN0ZWQpOworICB9CisKKyAgeyAg
Ly8gaW5zZXJ0KGhpbnQsIGNvbnN0IFQmKQorICAgIHNldDEuaW5zZXJ0KHNldDEuYmVnaW4oKSwg
b25lKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25z
dHJ1Y3RlZCk7CisgIH0KKworICB7ICAvLyBlbXBsYWNlKC4uLikKKyAgICBzZXQxLmVtcGxhY2Uo
MSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBvc2VfY29uc3Ry
dWN0ZWQpOworICAgIHNldDEuZW1wbGFjZSgiMyIpOworICAgIGV4cGVjdGVkX2NvbnN0cnVjdGVk
ICs9IGNvbnN0cnVjdF90aHJlZTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQs
IGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgICAgc2V0MS5lbXBsYWNlKG9uZSk7CisgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBvc2VfY29uc3RydWN0ZWQpOworICAg
IHNldDEuZW1wbGFjZSh0aHJlZSk7CisgICAgZXhwZWN0ZWRfY29uc3RydWN0ZWQgKz0gY29uc3Ry
dWN0X3RocmVlOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3Nl
X2NvbnN0cnVjdGVkKTsKKyAgfQorCisgIHsgIC8vIGVtcGxhY2VfaGludCguLi4pCisgICAgc2V0
MS5lbXBsYWNlX2hpbnQoc2V0MS5iZWdpbigpLCAxKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRf
Y29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgICAgc2V0MS5lbXBsYWNlX2hp
bnQoc2V0MS5iZWdpbigpLCAiMyIpOworICAgIGV4cGVjdGVkX2NvbnN0cnVjdGVkICs9IGNvbnN0
cnVjdF90aHJlZTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9z
ZV9jb25zdHJ1Y3RlZCk7CisgICAgc2V0MS5lbXBsYWNlX2hpbnQoc2V0MS5iZWdpbigpLCBvbmUp
OworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVj
dGVkKTsKKyAgICBzZXQxLmVtcGxhY2VfaGludChzZXQxLmJlZ2luKCksIHRocmVlKTsKKyAgICBl
eHBlY3RlZF9jb25zdHJ1Y3RlZCArPSBjb25zdHJ1Y3RfdGhyZWU7CisgICAgRVhQRUNUX0VRKGV4
cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBvc2VfY29uc3RydWN0ZWQpOworICB9Cit9CisKK1RF
U1QoVGFibGUsIERlY29tcG9zZSkgeworICBUZXN0RGVjb21wb3NlPERlY29tcG9zZUhhc2gsIERl
Y29tcG9zZUVxPihmYWxzZSk7CisKKyAgc3RydWN0IFRyYW5zcGFyZW50SGFzaEludE92ZXJsb2Fk
IHsKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShEZWNvbXBvc2VUeXBlIGEpIGNvbnN0IHsgcmV0dXJu
IGEuaTsgfQorICAgIHNpemVfdCBvcGVyYXRvcigpKGludCBhKSBjb25zdCB7IHJldHVybiBhOyB9
CisgIH07CisgIHN0cnVjdCBUcmFuc3BhcmVudEVxSW50T3ZlcmxvYWQgeworICAgIGJvb2wgb3Bl
cmF0b3IoKShEZWNvbXBvc2VUeXBlIGEsIERlY29tcG9zZVR5cGUgYikgY29uc3QgeworICAgICAg
cmV0dXJuIGEuaSA9PSBiLmk7CisgICAgfQorICAgIGJvb2wgb3BlcmF0b3IoKShEZWNvbXBvc2VU
eXBlIGEsIGludCBiKSBjb25zdCB7IHJldHVybiBhLmkgPT0gYjsgfQorICB9OworICBUZXN0RGVj
b21wb3NlPFRyYW5zcGFyZW50SGFzaEludE92ZXJsb2FkLCBEZWNvbXBvc2VFcT4odHJ1ZSk7Cisg
IFRlc3REZWNvbXBvc2U8VHJhbnNwYXJlbnRIYXNoSW50T3ZlcmxvYWQsIFRyYW5zcGFyZW50RXFJ
bnRPdmVybG9hZD4odHJ1ZSk7CisgIFRlc3REZWNvbXBvc2U8RGVjb21wb3NlSGFzaCwgVHJhbnNw
YXJlbnRFcUludE92ZXJsb2FkPih0cnVlKTsKK30KKworLy8gUmV0dXJucyB0aGUgbGFyZ2VzdCBt
IHN1Y2ggdGhhdCBhIHRhYmxlIHdpdGggbSBlbGVtZW50cyBoYXMgdGhlIHNhbWUgbnVtYmVyCisv
LyBvZiBidWNrZXRzIGFzIGEgdGFibGUgd2l0aCBuIGVsZW1lbnRzLgorc2l6ZV90IE1heERlbnNp
dHlTaXplKHNpemVfdCBuKSB7CisgIEludFRhYmxlIHQ7CisgIHQucmVzZXJ2ZShuKTsKKyAgZm9y
IChzaXplX3QgaSA9IDA7IGkgIT0gbjsgKytpKSB0LmVtcGxhY2UoaSk7CisgIGNvbnN0IHNpemVf
dCBjID0gdC5idWNrZXRfY291bnQoKTsKKyAgd2hpbGUgKGMgPT0gdC5idWNrZXRfY291bnQoKSkg
dC5lbXBsYWNlKG4rKyk7CisgIHJldHVybiB0LnNpemUoKSAtIDE7Cit9CisKK3N0cnVjdCBNb2R1
bG8xMDAwSGFzaCB7CisgIHNpemVfdCBvcGVyYXRvcigpKGludCB4KSBjb25zdCB7IHJldHVybiB4
ICUgMTAwMDsgfQorfTsKKworc3RydWN0IE1vZHVsbzEwMDBIYXNoVGFibGUKKyAgICA6IHB1Ymxp
YyByYXdfaGFzaF9zZXQ8SW50UG9saWN5LCBNb2R1bG8xMDAwSGFzaCwgc3RkOjplcXVhbF90bzxp
bnQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFsbG9jYXRvcjxpbnQ+PiB7fTsK
KworLy8gVGVzdCB0aGF0IHJlaGFzaCB3aXRoIG5vIHJlc2l6ZSBoYXBwZW4gaW4gY2FzZSBvZiBt
YW55IGRlbGV0ZWQgc2xvdHMuCitURVNUKFRhYmxlLCBSZWhhc2hXaXRoTm9SZXNpemUpIHsKKyAg
TW9kdWxvMTAwMEhhc2hUYWJsZSB0OworICAvLyBBZGRpbmcgdGhlIHNhbWUgbGVuZ3RoIChhbmQg
dGhlIHNhbWUgaGFzaCkgc3RyaW5ncworICAvLyB0byBoYXZlIGF0IGxlYXN0IGtNaW5GdWxsR3Jv
dXBzIGdyb3VwcworICAvLyB3aXRoIEdyb3VwOjprV2lkdGggY29sbGlzaW9ucy4gVGhlbiBmZWVs
IHVwdG8gTWF4RGVuc2l0eVNpemU7CisgIGNvbnN0IHNpemVfdCBrTWluRnVsbEdyb3VwcyA9IDc7
CisgIHN0ZDo6dmVjdG9yPGludD4ga2V5czsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBNYXhE
ZW5zaXR5U2l6ZShHcm91cDo6a1dpZHRoICoga01pbkZ1bGxHcm91cHMpOyArK2kpIHsKKyAgICBp
bnQgayA9IGkgKiAxMDAwOworICAgIHQuZW1wbGFjZShrKTsKKyAgICBrZXlzLnB1c2hfYmFjayhr
KTsKKyAgfQorICBjb25zdCBzaXplX3QgY2FwYWNpdHkgPSB0LmNhcGFjaXR5KCk7CisKKyAgLy8g
UmVtb3ZlIGVsZW1lbnRzIGZyb20gYWxsIGdyb3VwcyBleGNlcHQgdGhlIGZpcnN0IGFuZCB0aGUg
bGFzdCBvbmUuCisgIC8vIEFsbCBlbGVtZW50cyByZW1vdmVkIGZyb20gZnVsbCBncm91cHMgd2ls
bCBiZSBtYXJrZWQgYXMga0RlbGV0ZWQuCisgIGNvbnN0IHNpemVfdCBlcmFzZV9iZWdpbiA9IEdy
b3VwOjprV2lkdGggLyAyOworICBjb25zdCBzaXplX3QgZXJhc2VfZW5kID0gKHQuc2l6ZSgpIC8g
R3JvdXA6OmtXaWR0aCAtIDEpICogR3JvdXA6OmtXaWR0aDsKKyAgZm9yIChzaXplX3QgaSA9IGVy
YXNlX2JlZ2luOyBpIDwgZXJhc2VfZW5kOyArK2kpIHsKKyAgICBFWFBFQ1RfRVEoMSwgdC5lcmFz
ZShrZXlzW2ldKSkgPDwgaTsKKyAgfQorICBrZXlzLmVyYXNlKGtleXMuYmVnaW4oKSArIGVyYXNl
X2JlZ2luLCBrZXlzLmJlZ2luKCkgKyBlcmFzZV9lbmQpOworCisgIGF1dG8gbGFzdF9rZXkgPSBr
ZXlzLmJhY2soKTsKKyAgc2l6ZV90IGxhc3Rfa2V5X251bV9wcm9iZXMgPSBHZXRIYXNodGFibGVE
ZWJ1Z051bVByb2Jlcyh0LCBsYXN0X2tleSk7CisKKyAgLy8gTWFrZSBzdXJlIHRoYXQgd2UgaGF2
ZSB0byBtYWtlIGEgbG90IG9mIHByb2JlcyBmb3IgbGFzdCBrZXkuCisgIEFTU0VSVF9HVChsYXN0
X2tleV9udW1fcHJvYmVzLCBrTWluRnVsbEdyb3Vwcyk7CisKKyAgaW50IHggPSAxOworICAvLyBJ
bnNlcnQgYW5kIGVyYXNlIG9uZSBlbGVtZW50LCBiZWZvcmUgaW5wbGFjZSByZWhhc2ggaGFwcGVu
LgorICB3aGlsZSAobGFzdF9rZXlfbnVtX3Byb2JlcyA9PSBHZXRIYXNodGFibGVEZWJ1Z051bVBy
b2Jlcyh0LCBsYXN0X2tleSkpIHsKKyAgICB0LmVtcGxhY2UoeCk7CisgICAgQVNTRVJUX0VRKGNh
cGFjaXR5LCB0LmNhcGFjaXR5KCkpOworICAgIC8vIEFsbCBlbGVtZW50cyBzaG91bGQgYmUgdGhl
cmUuCisgICAgQVNTRVJUX1RSVUUodC5maW5kKHgpICE9IHQuZW5kKCkpIDw8IHg7CisgICAgZm9y
IChjb25zdCBhdXRvJiBrIDoga2V5cykgeworICAgICAgQVNTRVJUX1RSVUUodC5maW5kKGspICE9
IHQuZW5kKCkpIDw8IGs7CisgICAgfQorICAgIHQuZXJhc2UoeCk7CisgICAgKyt4OworICB9Cit9
CisKK1RFU1QoVGFibGUsIEluc2VydEVyYXNlU3RyZXNzVGVzdCkgeworICBJbnRUYWJsZSB0Owor
ICBjb25zdCBzaXplX3Qga01pbkVsZW1lbnRDb3VudCA9IDI1MDsKKyAgc3RkOjpkZXF1ZTxpbnQ+
IGtleXM7CisgIHNpemVfdCBpID0gMDsKKyAgZm9yICg7IGkgPCBNYXhEZW5zaXR5U2l6ZShrTWlu
RWxlbWVudENvdW50KTsgKytpKSB7CisgICAgdC5lbXBsYWNlKGkpOworICAgIGtleXMucHVzaF9i
YWNrKGkpOworICB9CisgIGNvbnN0IHNpemVfdCBrTnVtSXRlcmF0aW9ucyA9IDEwMDAwMDA7Cisg
IGZvciAoOyBpIDwga051bUl0ZXJhdGlvbnM7ICsraSkgeworICAgIEFTU0VSVF9FUSgxLCB0LmVy
YXNlKGtleXMuZnJvbnQoKSkpOworICAgIGtleXMucG9wX2Zyb250KCk7CisgICAgdC5lbXBsYWNl
KGkpOworICAgIGtleXMucHVzaF9iYWNrKGkpOworICB9Cit9CisKK1RFU1QoVGFibGUsIEluc2Vy
dE92ZXJsb2FkcykgeworICBTdHJpbmdUYWJsZSB0OworICAvLyBUaGVzZSBzaG91bGQgYWxsIHRy
aWdnZXIgdGhlIGluc2VydChpbml0X3R5cGUpIG92ZXJsb2FkLgorICB0Lmluc2VydCh7e30sIHt9
fSk7CisgIHQuaW5zZXJ0KHsiQUJDIiwge319KTsKKyAgdC5pbnNlcnQoeyJERUYiLCAiISEhIn0p
OworCisgIEVYUEVDVF9USEFUKHQsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoIiIsICIiKSwg
UGFpcigiQUJDIiwgIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YWlyKCJERUYiLCAiISEhIikpKTsKK30KKworVEVTVChUYWJsZSwgTGFyZ2VUYWJsZSkgeworICBJ
bnRUYWJsZSB0OworICBmb3IgKGludDY0X3QgaSA9IDA7IGkgIT0gMTAwMDAwOyArK2kpIHQuZW1w
bGFjZShpIDw8IDQwKTsKKyAgZm9yIChpbnQ2NF90IGkgPSAwOyBpICE9IDEwMDAwMDsgKytpKSBB
U1NFUlRfRVEoaSA8PCA0MCwgKnQuZmluZChpIDw8IDQwKSk7Cit9CisKKy8vIFRpbWVvdXQgaWYg
Y29weSBpcyBxdWFkcmF0aWMgYXMgaXQgd2FzIGluIFJ1c3QuCitURVNUKFRhYmxlLCBFbnN1cmVO
b25RdWFkcmF0aWNBc0luUnVzdCkgeworICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtMYXJnZVNpemUg
PSAxIDw8IDE1OworCisgIEludFRhYmxlIHQ7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGtM
YXJnZVNpemU7ICsraSkgeworICAgIHQuaW5zZXJ0KGkpOworICB9CisKKyAgLy8gSWYgdGhpcyBp
cyBxdWFkcmF0aWMsIHRoZSB0ZXN0IHdpbGwgdGltZW91dC4KKyAgSW50VGFibGUgdDI7CisgIGZv
ciAoY29uc3QgYXV0byYgZW50cnkgOiB0KSB0Mi5pbnNlcnQoZW50cnkpOworfQorCitURVNUKFRh
YmxlLCBDbGVhckJ1ZykgeworICBJbnRUYWJsZSB0OworICBjb25zdGV4cHIgc2l6ZV90IGNhcGFj
aXR5ID0gY29udGFpbmVyX2ludGVybmFsOjpHcm91cDo6a1dpZHRoIC0gMTsKKyAgY29uc3RleHBy
IHNpemVfdCBtYXhfc2l6ZSA9IGNhcGFjaXR5IC8gMjsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtYXhfc2l6ZTsgKytpKSB7CisgICAgdC5pbnNlcnQoaSk7CisgIH0KKyAgQVNTRVJUX0VRKGNh
cGFjaXR5LCB0LmNhcGFjaXR5KCkpOworICBpbnRwdHJfdCBvcmlnaW5hbCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KCYqdC5maW5kKDIpKTsKKyAgdC5jbGVhcigpOworICBBU1NFUlRfRVEo
Y2FwYWNpdHksIHQuY2FwYWNpdHkoKSk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4X3Np
emU7ICsraSkgeworICAgIHQuaW5zZXJ0KGkpOworICB9CisgIEFTU0VSVF9FUShjYXBhY2l0eSwg
dC5jYXBhY2l0eSgpKTsKKyAgaW50cHRyX3Qgc2Vjb25kID0gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oJip0LmZpbmQoMikpOworICAvLyBXZSBhcmUgY2hlY2tpbmcgdGhhdCBvcmlnaW5hbCBh
bmQgc2Vjb25kIGFyZSBjbG9zZSBlbm91Z2ggdG8gZWFjaCBvdGhlcgorICAvLyB0aGF0IHRoZXkg
YXJlIHByb2JhYmx5IHN0aWxsIGluIHRoZSBzYW1lIGdyb3VwLiAgVGhpcyBpcyBub3Qgc3RyaWN0
bHkKKyAgLy8gZ3VhcmFudGVlZC4KKyAgRVhQRUNUX0xUKHN0ZDo6YWJzKG9yaWdpbmFsIC0gc2Vj
b25kKSwKKyAgICAgICAgICAgIGNhcGFjaXR5ICogc2l6ZW9mKEludFRhYmxlOjp2YWx1ZV90eXBl
KSk7Cit9CisKK1RFU1QoVGFibGUsIEVyYXNlKSB7CisgIEludFRhYmxlIHQ7CisgIEVYUEVDVF9U
UlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsKKyAgYXV0byByZXMgPSB0LmVtcGxhY2UoMCk7Cisg
IEVYUEVDVF9UUlVFKHJlcy5zZWNvbmQpOworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworICB0
LmVyYXNlKHJlcy5maXJzdCk7CisgIEVYUEVDVF9FUSgwLCB0LnNpemUoKSk7CisgIEVYUEVDVF9U
UlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsKK30KKworLy8gQ29sbGVjdCBOIGJhZCBrZXlzIGJ5
IGZvbGxvd2luZyBhbGdvcml0aG06CisvLyAxLiBDcmVhdGUgYW4gZW1wdHkgdGFibGUgYW5kIHJl
c2VydmUgaXQgdG8gMiAqIE4uCisvLyAyLiBJbnNlcnQgTiByYW5kb20gZWxlbWVudHMuCisvLyAz
LiBUYWtlIGZpcnN0IEdyb3VwOjprV2lkdGggLSAxIHRvIGJhZF9rZXlzIGFycmF5LgorLy8gNC4g
Q2xlYXIgdGhlIHRhYmxlIHdpdGhvdXQgcmVzaXplLgorLy8gNS4gR28gdG8gcG9pbnQgMiB3aGls
ZSBOIGtleXMgbm90IGNvbGxlY3RlZAorc3RkOjp2ZWN0b3I8aW50NjRfdD4gQ29sbGVjdEJhZE1l
cmdlS2V5cyhzaXplX3QgTikgeworICBzdGF0aWMgY29uc3RleHByIGludCBrR3JvdXBTaXplID0g
R3JvdXA6OmtXaWR0aCAtIDE7CisKKyAgYXV0byB0b3BrX3JhbmdlID0gW10oc2l6ZV90IGIsIHNp
emVfdCBlLCBJbnRUYWJsZSogdCkgLT4gc3RkOjp2ZWN0b3I8aW50NjRfdD4geworICAgIGZvciAo
c2l6ZV90IGkgPSBiOyBpICE9IGU7ICsraSkgeworICAgICAgdC0+ZW1wbGFjZShpKTsKKyAgICB9
CisgICAgc3RkOjp2ZWN0b3I8aW50NjRfdD4gcmVzOworICAgIHJlcy5yZXNlcnZlKGtHcm91cFNp
emUpOworICAgIGF1dG8gaXQgPSB0LT5iZWdpbigpOworICAgIGZvciAoc2l6ZV90IGkgPSBiOyBp
ICE9IGUgJiYgaSAhPSBiICsga0dyb3VwU2l6ZTsgKytpLCArK2l0KSB7CisgICAgICByZXMucHVz
aF9iYWNrKCppdCk7CisgICAgfQorICAgIHJldHVybiByZXM7CisgIH07CisKKyAgc3RkOjp2ZWN0
b3I8aW50NjRfdD4gYmFkX2tleXM7CisgIGJhZF9rZXlzLnJlc2VydmUoTik7CisgIEludFRhYmxl
IHQ7CisgIHQucmVzZXJ2ZShOICogMik7CisKKyAgZm9yIChzaXplX3QgYiA9IDA7IGJhZF9rZXlz
LnNpemUoKSA8IE47IGIgKz0gTikgeworICAgIGF1dG8ga2V5cyA9IHRvcGtfcmFuZ2UoYiwgYiAr
IE4sICZ0KTsKKyAgICBiYWRfa2V5cy5pbnNlcnQoYmFkX2tleXMuZW5kKCksIGtleXMuYmVnaW4o
KSwga2V5cy5lbmQoKSk7CisgICAgdC5lcmFzZSh0LmJlZ2luKCksIHQuZW5kKCkpOworICAgIEVY
UEVDVF9UUlVFKHQuZW1wdHkoKSk7CisgIH0KKyAgcmV0dXJuIGJhZF9rZXlzOworfQorCitzdHJ1
Y3QgUHJvYmVTdGF0cyB7CisgIC8vIE51bWJlciBvZiBlbGVtZW50cyB3aXRoIHNwZWNpZmljIHBy
b2JlIGxlbmd0aCBvdmVyIGFsbCB0ZXN0ZWQgdGFibGVzLgorICBzdGQ6OnZlY3RvcjxzaXplX3Q+
IGFsbF9wcm9iZXNfaGlzdG9ncmFtOworICAvLyBSYXRpb3MgdG90YWxfcHJvYmVfbGVuZ3RoL3Np
emUgZm9yIGV2ZXJ5IHRlc3RlZCB0YWJsZS4KKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBzaW5nbGVf
dGFibGVfcmF0aW9zOworCisgIGZyaWVuZCBQcm9iZVN0YXRzIG9wZXJhdG9yKyhjb25zdCBQcm9i
ZVN0YXRzJiBhLCBjb25zdCBQcm9iZVN0YXRzJiBiKSB7CisgICAgUHJvYmVTdGF0cyByZXMgPSBh
OworICAgIHJlcy5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5yZXNpemUoc3RkOjptYXgocmVzLmFsbF9w
cm9iZXNfaGlzdG9ncmFtLnNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGIuYWxsX3Byb2Jlc19oaXN0b2dyYW0uc2l6ZSgpKSk7CisgICAgc3RkOjp0
cmFuc2Zvcm0oYi5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5iZWdpbigpLCBiLmFsbF9wcm9iZXNfaGlz
dG9ncmFtLmVuZCgpLAorICAgICAgICAgICAgICAgICAgIHJlcy5hbGxfcHJvYmVzX2hpc3RvZ3Jh
bS5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgIHJlcy5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5i
ZWdpbigpLCBzdGQ6OnBsdXM8c2l6ZV90PigpKTsKKyAgICByZXMuc2luZ2xlX3RhYmxlX3JhdGlv
cy5pbnNlcnQocmVzLnNpbmdsZV90YWJsZV9yYXRpb3MuZW5kKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGIuc2luZ2xlX3RhYmxlX3JhdGlvcy5iZWdpbigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLnNpbmdsZV90YWJsZV9yYXRpb3MuZW5kKCkp
OworICAgIHJldHVybiByZXM7CisgIH0KKworICAvLyBBdmVyYWdlIHJhdGlvIHRvdGFsX3Byb2Jl
X2xlbmd0aC9zaXplIG92ZXIgdGFibGVzLgorICBkb3VibGUgQXZnUmF0aW8oKSBjb25zdCB7Cisg
ICAgcmV0dXJuIHN0ZDo6YWNjdW11bGF0ZShzaW5nbGVfdGFibGVfcmF0aW9zLmJlZ2luKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVfdGFibGVfcmF0aW9zLmVuZCgpLCAwLjAp
IC8KKyAgICAgICAgICAgc2luZ2xlX3RhYmxlX3JhdGlvcy5zaXplKCk7CisgIH0KKworICAvLyBN
YXhpbXVtIHJhdGlvIHRvdGFsX3Byb2JlX2xlbmd0aC9zaXplIG92ZXIgdGFibGVzLgorICBkb3Vi
bGUgTWF4UmF0aW8oKSBjb25zdCB7CisgICAgcmV0dXJuICpzdGQ6Om1heF9lbGVtZW50KHNpbmds
ZV90YWJsZV9yYXRpb3MuYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lu
Z2xlX3RhYmxlX3JhdGlvcy5lbmQoKSk7CisgIH0KKworICAvLyBQZXJjZW50aWxlIHJhdGlvIHRv
dGFsX3Byb2JlX2xlbmd0aC9zaXplIG92ZXIgdGFibGVzLgorICBkb3VibGUgUGVyY2VudGlsZVJh
dGlvKGRvdWJsZSBQZXJjZW50aWxlID0gMC45NSkgY29uc3QgeworICAgIGF1dG8gciA9IHNpbmds
ZV90YWJsZV9yYXRpb3M7CisgICAgYXV0byBtaWQgPSByLmJlZ2luKCkgKyBzdGF0aWNfY2FzdDxz
aXplX3Q+KHIuc2l6ZSgpICogUGVyY2VudGlsZSk7CisgICAgaWYgKG1pZCAhPSByLmVuZCgpKSB7
CisgICAgICBzdGQ6Om50aF9lbGVtZW50KHIuYmVnaW4oKSwgbWlkLCByLmVuZCgpKTsKKyAgICAg
IHJldHVybiAqbWlkOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gTWF4UmF0aW8oKTsKKyAg
ICB9CisgIH0KKworICAvLyBNYXhpbXVtIHByb2JlIGxlbmd0aCBvdmVyIGFsbCBlbGVtZW50cyBh
bmQgYWxsIHRhYmxlcy4KKyAgc2l6ZV90IE1heFByb2JlKCkgY29uc3QgeyByZXR1cm4gYWxsX3By
b2Jlc19oaXN0b2dyYW0uc2l6ZSgpOyB9CisKKyAgLy8gRnJhY3Rpb24gb2YgZWxlbWVudHMgd2l0
aCBzcGVjaWZpZWQgcHJvYmUgbGVuZ3RoLgorICBzdGQ6OnZlY3Rvcjxkb3VibGU+IFByb2JlTm9y
bWFsaXplZEhpc3RvZ3JhbSgpIGNvbnN0IHsKKyAgICBkb3VibGUgdG90YWxfZWxlbWVudHMgPSBz
dGQ6OmFjY3VtdWxhdGUoYWxsX3Byb2Jlc19oaXN0b2dyYW0uYmVnaW4oKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsX3Byb2Jlc19oaXN0b2dyYW0uZW5k
KCksIDB1bGwpOworICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gcmVzOworICAgIGZvciAoc2l6ZV90
IHAgOiBhbGxfcHJvYmVzX2hpc3RvZ3JhbSkgeworICAgICAgcmVzLnB1c2hfYmFjayhwIC8gdG90
YWxfZWxlbWVudHMpOworICAgIH0KKyAgICByZXR1cm4gcmVzOworICB9CisKKyAgc2l6ZV90IFBl
cmNlbnRpbGVQcm9iZShkb3VibGUgUGVyY2VudGlsZSA9IDAuOTkpIGNvbnN0IHsKKyAgICBzaXpl
X3QgaWR4ID0gMDsKKyAgICBmb3IgKGRvdWJsZSBwIDogUHJvYmVOb3JtYWxpemVkSGlzdG9ncmFt
KCkpIHsKKyAgICAgIGlmIChQZXJjZW50aWxlID4gcCkgeworICAgICAgICBQZXJjZW50aWxlIC09
IHA7CisgICAgICAgICsraWR4OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGlkeDsK
KyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGlkeDsKKyAgfQorCisgIGZyaWVuZCBzdGQ6Om9z
dHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0IFByb2JlU3RhdHMmIHMp
IHsKKyAgICBvdXQgPDwgIntBdmdSYXRpbzoiIDw8IHMuQXZnUmF0aW8oKSA8PCAiLCBNYXhSYXRp
bzoiIDw8IHMuTWF4UmF0aW8oKQorICAgICAgICA8PCAiLCBQZXJjZW50aWxlUmF0aW86IiA8PCBz
LlBlcmNlbnRpbGVSYXRpbygpCisgICAgICAgIDw8ICIsIE1heFByb2JlOiIgPDwgcy5NYXhQcm9i
ZSgpIDw8ICIsIFByb2Jlcz1bIjsKKyAgICBmb3IgKGRvdWJsZSBwIDogcy5Qcm9iZU5vcm1hbGl6
ZWRIaXN0b2dyYW0oKSkgeworICAgICAgb3V0IDw8IHAgPDwgIiwiOworICAgIH0KKyAgICBvdXQg
PDwgIl19IjsKKworICAgIHJldHVybiBvdXQ7CisgIH0KK307CisKK3N0cnVjdCBFeHBlY3RlZFN0
YXRzIHsKKyAgZG91YmxlIGF2Z19yYXRpbzsKKyAgZG91YmxlIG1heF9yYXRpbzsKKyAgc3RkOjp2
ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcGVjZW50aWxlX3JhdGlvczsKKyAgc3Rk
Ojp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcGVjZW50aWxlX3Byb2JlczsKKwor
ICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3V0LCBjb25z
dCBFeHBlY3RlZFN0YXRzJiBzKSB7CisgICAgb3V0IDw8ICJ7QXZnUmF0aW86IiA8PCBzLmF2Z19y
YXRpbyA8PCAiLCBNYXhSYXRpbzoiIDw8IHMubWF4X3JhdGlvCisgICAgICAgIDw8ICIsIFBlcmNl
bnRpbGVSYXRpb3M6IFsiOworICAgIGZvciAoYXV0byBlbCA6IHMucGVjZW50aWxlX3JhdGlvcykg
eworICAgICAgb3V0IDw8IGVsLmZpcnN0IDw8ICI6IiA8PCBlbC5zZWNvbmQgPDwgIiwgIjsKKyAg
ICB9CisgICAgb3V0IDw8ICJdLCBQZXJjZW50aWxlUHJvYmVzOiBbIjsKKyAgICBmb3IgKGF1dG8g
ZWwgOiBzLnBlY2VudGlsZV9wcm9iZXMpIHsKKyAgICAgIG91dCA8PCBlbC5maXJzdCA8PCAiOiIg
PDwgZWwuc2Vjb25kIDw8ICIsICI7CisgICAgfQorICAgIG91dCA8PCAiXX0iOworCisgICAgcmV0
dXJuIG91dDsKKyAgfQorfTsKKwordm9pZCBWZXJpZnlTdGF0cyhzaXplX3Qgc2l6ZSwgY29uc3Qg
RXhwZWN0ZWRTdGF0cyYgZXhwLAorICAgICAgICAgICAgICAgICBjb25zdCBQcm9iZVN0YXRzJiBz
dGF0cykgeworICBFWFBFQ1RfTFQoc3RhdHMuQXZnUmF0aW8oKSwgZXhwLmF2Z19yYXRpbykgPDwg
c2l6ZSA8PCAiICIgPDwgc3RhdHM7CisgIEVYUEVDVF9MVChzdGF0cy5NYXhSYXRpbygpLCBleHAu
bWF4X3JhdGlvKSA8PCBzaXplIDw8ICIgIiA8PCBzdGF0czsKKyAgZm9yIChhdXRvIHByIDogZXhw
LnBlY2VudGlsZV9yYXRpb3MpIHsKKyAgICBFWFBFQ1RfTEUoc3RhdHMuUGVyY2VudGlsZVJhdGlv
KHByLmZpcnN0KSwgcHIuc2Vjb25kKQorICAgICAgICA8PCBzaXplIDw8ICIgIiA8PCBwci5maXJz
dCA8PCAiICIgPDwgc3RhdHM7CisgIH0KKworICBmb3IgKGF1dG8gcHIgOiBleHAucGVjZW50aWxl
X3Byb2JlcykgeworICAgIEVYUEVDVF9MRShzdGF0cy5QZXJjZW50aWxlUHJvYmUocHIuZmlyc3Qp
LCBwci5zZWNvbmQpCisgICAgICAgIDw8IHNpemUgPDwgIiAiIDw8IHByLmZpcnN0IDw8ICIgIiA8
PCBzdGF0czsKKyAgfQorfQorCit1c2luZyBQcm9iZVN0YXRzUGVyU2l6ZSA9IHN0ZDo6bWFwPHNp
emVfdCwgUHJvYmVTdGF0cz47CisKKy8vIENvbGxlY3QgdG90YWwgUHJvYmVTdGF0cyBvbiBudW1f
aXRlcnMgaXRlcmF0aW9ucyBvZiB0aGUgZm9sbG93aW5nIGFsZ29yaXRobToKKy8vIDEuIENyZWF0
ZSBuZXcgdGFibGUgYW5kIHJlc2VydmUgaXQgdG8ga2V5cy5zaXplKCkgKiAyCisvLyAyLiBJbnNl
cnQgYWxsIGtleXMgeG9yZWQgd2l0aCBzZWVkCisvLyAzLiBDb2xsZWN0IFByb2JlU3RhdHMgZnJv
bSBmaW5hbCB0YWJsZS4KK1Byb2JlU3RhdHMgQ29sbGVjdFByb2JlU3RhdHNPbktleXNYb3JlZFdp
dGhTZWVkKGNvbnN0IHN0ZDo6dmVjdG9yPGludDY0X3Q+JiBrZXlzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9pdGVycykgeworICBj
b25zdCBzaXplX3QgcmVzZXJ2ZV9zaXplID0ga2V5cy5zaXplKCkgKiAyOworCisgIFByb2JlU3Rh
dHMgc3RhdHM7CisKKyAgaW50NjRfdCBzZWVkID0gMHg3MWIxYTE5YjkwN2Q2ZTMzOworICB3aGls
ZSAobnVtX2l0ZXJzLS0pIHsKKyAgICBzZWVkID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHNlZWQpICogMTcgKyAxMyk7CisgICAgSW50VGFibGUgdDE7CisgICAg
dDEucmVzZXJ2ZShyZXNlcnZlX3NpemUpOworICAgIGZvciAoY29uc3QgYXV0byYga2V5IDoga2V5
cykgeworICAgICAgdDEuZW1wbGFjZShrZXkgXiBzZWVkKTsKKyAgICB9CisKKyAgICBhdXRvIHBy
b2JlX2hpc3RvZ3JhbSA9IEdldEhhc2h0YWJsZURlYnVnTnVtUHJvYmVzSGlzdG9ncmFtKHQxKTsK
KyAgICBzdGF0cy5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5yZXNpemUoCisgICAgICAgIHN0ZDo6bWF4
KHN0YXRzLmFsbF9wcm9iZXNfaGlzdG9ncmFtLnNpemUoKSwgcHJvYmVfaGlzdG9ncmFtLnNpemUo
KSkpOworICAgIHN0ZDo6dHJhbnNmb3JtKHByb2JlX2hpc3RvZ3JhbS5iZWdpbigpLCBwcm9iZV9o
aXN0b2dyYW0uZW5kKCksCisgICAgICAgICAgICAgICAgICAgc3RhdHMuYWxsX3Byb2Jlc19oaXN0
b2dyYW0uYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICBzdGF0cy5hbGxfcHJvYmVzX2hpc3Rv
Z3JhbS5iZWdpbigpLCBzdGQ6OnBsdXM8c2l6ZV90PigpKTsKKworICAgIHNpemVfdCB0b3RhbF9w
cm9iZV9zZXFfbGVuZ3RoID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2JlX2hp
c3RvZ3JhbS5zaXplKCk7ICsraSkgeworICAgICAgdG90YWxfcHJvYmVfc2VxX2xlbmd0aCArPSBp
ICogcHJvYmVfaGlzdG9ncmFtW2ldOworICAgIH0KKyAgICBzdGF0cy5zaW5nbGVfdGFibGVfcmF0
aW9zLnB1c2hfYmFjayh0b3RhbF9wcm9iZV9zZXFfbGVuZ3RoICogMS4wIC8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzLnNpemUoKSk7CisgICAgdDEuZXJhc2Uo
dDEuYmVnaW4oKSwgdDEuZW5kKCkpOworICB9CisgIHJldHVybiBzdGF0czsKK30KKworRXhwZWN0
ZWRTdGF0cyBYb3JTZWVkRXhwZWN0ZWRTdGF0cygpIHsKKyAgY29uc3RleHByIGJvb2wga1JhbmRv
bWl6ZXNJbnNlcnRzID0KKyNpZiBOREVCVUcKKyAgICAgIGZhbHNlOworI2Vsc2UgICAvLyBOREVC
VUcKKyAgICAgIHRydWU7CisjZW5kaWYgIC8vIE5ERUJVRworCisgIC8vIFRoZSBlZmZlY3RpdmUg
bG9hZCBmYWN0b3IgaXMgbGFyZ2VyIGluIG5vbi1vcHQgbW9kZSBiZWNhdXNlIHdlIGluc2VydAor
ICAvLyBlbGVtZW50cyBvdXQgb2Ygb3JkZXIuCisgIHN3aXRjaCAoY29udGFpbmVyX2ludGVybmFs
OjpHcm91cDo6a1dpZHRoKSB7CisgICAgY2FzZSA4OgorICAgICAgaWYgKGtSYW5kb21pemVzSW5z
ZXJ0cykgeworICByZXR1cm4gezAuMDUsCisgICAgICAgICAgMS4wLAorICAgICAgICAgIHt7MC45
NSwgMC41fX0sCisgICAgICAgICAge3swLjk1LCAwfSwgezAuOTksIDJ9LCB7MC45OTksIDR9LCB7
MC45OTk5LCAxMH19fTsKKyAgICAgIH0gZWxzZSB7CisgIHJldHVybiB7MC4wNSwKKyAgICAgICAg
ICAyLjAsCisgICAgICAgICAge3swLjk1LCAwLjF9fSwKKyAgICAgICAgICB7ezAuOTUsIDB9LCB7
MC45OSwgMn0sIHswLjk5OSwgNH0sIHswLjk5OTksIDEwfX19OworICAgICAgfQorICAgICAgYnJl
YWs7CisgICAgY2FzZSAxNjoKKyAgICAgIGlmIChrUmFuZG9taXplc0luc2VydHMpIHsKKyAgICAg
ICAgcmV0dXJuIHswLjEsCisgICAgICAgICAgICAgICAgMS4wLAorICAgICAgICAgICAgICAgIHt7
MC45NSwgMC4xfX0sCisgICAgICAgICAgICAgICAge3swLjk1LCAwfSwgezAuOTksIDF9LCB7MC45
OTksIDh9LCB7MC45OTk5LCAxNX19fTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiB7
MC4wNSwKKyAgICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgICAge3swLjk1LCAwLjA1
fX0sCisgICAgICAgICAgICAgICAge3swLjk1LCAwfSwgezAuOTksIDF9LCB7MC45OTksIDR9LCB7
MC45OTk5LCAxMH19fTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICBBQlNMX1JBV19MT0coRkFUQUwsICIlcyIsICJVbmtub3duIEdyb3VwIHdpZHRoIik7CisgIH0K
KyAgcmV0dXJuIHt9OworfQorVEVTVChUYWJsZSwgRElTQUJMRURfRW5zdXJlTm9uUXVhZHJhdGlj
VG9wTlhvclNlZWRCeVByb2JlU2VxTGVuZ3RoKSB7CisgIFByb2JlU3RhdHNQZXJTaXplIHN0YXRz
OworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IHNpemVzID0ge0dyb3VwOjprV2lkdGggPDwgNSwgR3Jv
dXA6OmtXaWR0aCA8PCAxMH07CisgIGZvciAoc2l6ZV90IHNpemUgOiBzaXplcykgeworICAgIHN0
YXRzW3NpemVdID0KKyAgICAgICAgQ29sbGVjdFByb2JlU3RhdHNPbktleXNYb3JlZFdpdGhTZWVk
KENvbGxlY3RCYWRNZXJnZUtleXMoc2l6ZSksIDIwMCk7CisgIH0KKyAgYXV0byBleHBlY3RlZCA9
IFhvclNlZWRFeHBlY3RlZFN0YXRzKCk7CisgIGZvciAoc2l6ZV90IHNpemUgOiBzaXplcykgewor
ICAgIGF1dG8mIHN0YXQgPSBzdGF0c1tzaXplXTsKKyAgICBWZXJpZnlTdGF0cyhzaXplLCBleHBl
Y3RlZCwgc3RhdCk7CisgIH0KK30KKworLy8gQ29sbGVjdCB0b3RhbCBQcm9iZVN0YXRzIG9uIG51
bV9pdGVycyBpdGVyYXRpb25zIG9mIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOgorLy8gMS4gQ3Jl
YXRlIG5ldyB0YWJsZQorLy8gMi4gU2VsZWN0IDEwJSBvZiBrZXlzIGFuZCBpbnNlcnQgMTAgZWxl
bWVudHMga2V5ICogMTcgKyBqICogMTMKKy8vIDMuIENvbGxlY3QgUHJvYmVTdGF0cyBmcm9tIGZp
bmFsIHRhYmxlCitQcm9iZVN0YXRzIENvbGxlY3RQcm9iZVN0YXRzT25MaW5lYXJseVRyYW5zZm9y
bWVkS2V5cygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ2NF90PiYga2V5cywgc2l6ZV90IG51
bV9pdGVycykgeworICBQcm9iZVN0YXRzIHN0YXRzOworCisgIHN0ZDo6cmFuZG9tX2RldmljZSBy
ZDsKKyAgc3RkOjptdDE5OTM3IHJuZyhyZCgpKTsKKyAgYXV0byBsaW5lYXJfdHJhbnNmb3JtID0g
W10oc2l6ZV90IHgsIHNpemVfdCB5KSB7IHJldHVybiB4ICogMTcgKyB5ICogMTM7IH07CisgIHN0
ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPHNpemVfdD4gZGlzdCgwLCBrZXlzLnNpemUoKS0x
KTsKKyAgd2hpbGUgKG51bV9pdGVycy0tKSB7CisgICAgSW50VGFibGUgdDE7CisgICAgc2l6ZV90
IG51bV9rZXlzID0ga2V5cy5zaXplKCkgLyAxMDsKKyAgICBzaXplX3Qgc3RhcnQgPSBkaXN0KHJu
Zyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbnVtX2tleXM7ICsraSkgeworICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogIT0gMTA7ICsraikgeworICAgICAgICB0MS5lbXBsYWNlKGxp
bmVhcl90cmFuc2Zvcm0oa2V5c1soaSArIHN0YXJ0KSAlIGtleXMuc2l6ZSgpXSwgaikpOworICAg
ICAgfQorICAgIH0KKworICAgIGF1dG8gcHJvYmVfaGlzdG9ncmFtID0gR2V0SGFzaHRhYmxlRGVi
dWdOdW1Qcm9iZXNIaXN0b2dyYW0odDEpOworICAgIHN0YXRzLmFsbF9wcm9iZXNfaGlzdG9ncmFt
LnJlc2l6ZSgKKyAgICAgICAgc3RkOjptYXgoc3RhdHMuYWxsX3Byb2Jlc19oaXN0b2dyYW0uc2l6
ZSgpLCBwcm9iZV9oaXN0b2dyYW0uc2l6ZSgpKSk7CisgICAgc3RkOjp0cmFuc2Zvcm0ocHJvYmVf
aGlzdG9ncmFtLmJlZ2luKCksIHByb2JlX2hpc3RvZ3JhbS5lbmQoKSwKKyAgICAgICAgICAgICAg
ICAgICBzdGF0cy5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5iZWdpbigpLAorICAgICAgICAgICAgICAg
ICAgIHN0YXRzLmFsbF9wcm9iZXNfaGlzdG9ncmFtLmJlZ2luKCksIHN0ZDo6cGx1czxzaXplX3Q+
KCkpOworCisgICAgc2l6ZV90IHRvdGFsX3Byb2JlX3NlcV9sZW5ndGggPSAwOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJvYmVfaGlzdG9ncmFtLnNpemUoKTsgKytpKSB7CisgICAgICB0
b3RhbF9wcm9iZV9zZXFfbGVuZ3RoICs9IGkgKiBwcm9iZV9oaXN0b2dyYW1baV07CisgICAgfQor
ICAgIHN0YXRzLnNpbmdsZV90YWJsZV9yYXRpb3MucHVzaF9iYWNrKHRvdGFsX3Byb2JlX3NlcV9s
ZW5ndGggKiAxLjAgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQx
LnNpemUoKSk7CisgICAgdDEuZXJhc2UodDEuYmVnaW4oKSwgdDEuZW5kKCkpOworICB9CisgIHJl
dHVybiBzdGF0czsKK30KKworRXhwZWN0ZWRTdGF0cyBMaW5lYXJUcmFuc2Zvcm1FeHBlY3RlZFN0
YXRzKCkgeworICBjb25zdGV4cHIgYm9vbCBrUmFuZG9taXplc0luc2VydHMgPQorI2lmIE5ERUJV
RworICAgICAgZmFsc2U7CisjZWxzZSAgIC8vIE5ERUJVRworICAgICAgdHJ1ZTsKKyNlbmRpZiAg
Ly8gTkRFQlVHCisKKyAgLy8gVGhlIGVmZmVjdGl2ZSBsb2FkIGZhY3RvciBpcyBsYXJnZXIgaW4g
bm9uLW9wdCBtb2RlIGJlY2F1c2Ugd2UgaW5zZXJ0CisgIC8vIGVsZW1lbnRzIG91dCBvZiBvcmRl
ci4KKyAgc3dpdGNoIChjb250YWluZXJfaW50ZXJuYWw6Okdyb3VwOjprV2lkdGgpIHsKKyAgICBj
YXNlIDg6CisgICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7CisgICAgICAgIHJldHVybiB7
MC4xLAorICAgICAgICAgICAgICAgIDAuNSwKKyAgICAgICAgICAgICAgICB7ezAuOTUsIDAuM319
LAorICAgICAgICAgICAgICAgIHt7MC45NSwgMH0sIHswLjk5LCAxfSwgezAuOTk5LCA4fSwgezAu
OTk5OSwgMTV9fX07CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gezAuMTUsCisgICAg
ICAgICAgICAgICAgMC41LAorICAgICAgICAgICAgICAgIHt7MC45NSwgMC4zfX0sCisgICAgICAg
ICAgICAgICAge3swLjk1LCAwfSwgezAuOTksIDN9LCB7MC45OTksIDE1fSwgezAuOTk5OSwgMjV9
fX07CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIDE2OgorICAgICAgaWYgKGtSYW5k
b21pemVzSW5zZXJ0cykgeworICAgICAgICByZXR1cm4gezAuMSwKKyAgICAgICAgICAgICAgICAw
LjQsCisgICAgICAgICAgICAgICAge3swLjk1LCAwLjN9fSwKKyAgICAgICAgICAgICAgICB7ezAu
OTUsIDB9LCB7MC45OSwgMX0sIHswLjk5OSwgOH0sIHswLjk5OTksIDE1fX19OworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcmV0dXJuIHswLjA1LAorICAgICAgICAgICAgICAgIDAuMiwKKyAgICAg
ICAgICAgICAgICB7ezAuOTUsIDAuMX19LAorICAgICAgICAgICAgICAgIHt7MC45NSwgMH0sIHsw
Ljk5LCAxfSwgezAuOTk5LCA2fSwgezAuOTk5OSwgMTB9fX07CisgICAgICB9CisgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgQUJTTF9SQVdfTE9HKEZBVEFMLCAiJXMiLCAiVW5rbm93
biBHcm91cCB3aWR0aCIpOworICB9CisgIHJldHVybiB7fTsKK30KK1RFU1QoVGFibGUsIERJU0FC
TEVEX0Vuc3VyZU5vblF1YWRyYXRpY1RvcE5MaW5lYXJUcmFuc2Zvcm1CeVByb2JlU2VxTGVuZ3Ro
KSB7CisgIFByb2JlU3RhdHNQZXJTaXplIHN0YXRzOworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IHNp
emVzID0ge0dyb3VwOjprV2lkdGggPDwgNSwgR3JvdXA6OmtXaWR0aCA8PCAxMH07CisgIGZvciAo
c2l6ZV90IHNpemUgOiBzaXplcykgeworICAgIHN0YXRzW3NpemVdID0gQ29sbGVjdFByb2JlU3Rh
dHNPbkxpbmVhcmx5VHJhbnNmb3JtZWRLZXlzKAorICAgICAgICBDb2xsZWN0QmFkTWVyZ2VLZXlz
KHNpemUpLCAzMDApOworICB9CisgIGF1dG8gZXhwZWN0ZWQgPSBMaW5lYXJUcmFuc2Zvcm1FeHBl
Y3RlZFN0YXRzKCk7CisgIGZvciAoc2l6ZV90IHNpemUgOiBzaXplcykgeworICAgIGF1dG8mIHN0
YXQgPSBzdGF0c1tzaXplXTsKKyAgICBWZXJpZnlTdGF0cyhzaXplLCBleHBlY3RlZCwgc3RhdCk7
CisgIH0KK30KKworVEVTVChUYWJsZSwgRXJhc2VDb2xsaXNpb24pIHsKKyAgQmFkVGFibGUgdDsK
KworICAvLyAxIDIgMworICB0LmVtcGxhY2UoMSk7CisgIHQuZW1wbGFjZSgyKTsKKyAgdC5lbXBs
YWNlKDMpOworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDEpLCAxKTsKKyAgRVhQRUNUX1RIQVQoKnQu
ZmluZCgyKSwgMik7CisgIEVYUEVDVF9USEFUKCp0LmZpbmQoMyksIDMpOworICBFWFBFQ1RfRVEo
MywgdC5zaXplKCkpOworCisgIC8vIDEgREVMRVRFRCAzCisgIHQuZXJhc2UodC5maW5kKDIpKTsK
KyAgRVhQRUNUX1RIQVQoKnQuZmluZCgxKSwgMSk7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgyKSA9
PSB0LmVuZCgpKTsKKyAgRVhQRUNUX1RIQVQoKnQuZmluZCgzKSwgMyk7CisgIEVYUEVDVF9FUSgy
LCB0LnNpemUoKSk7CisKKyAgLy8gREVMRVRFRCBERUxFVEVEIDMKKyAgdC5lcmFzZSh0LmZpbmQo
MSkpOworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMSkgPT0gdC5lbmQoKSk7CisgIEVYUEVDVF9UUlVF
KHQuZmluZCgyKSA9PSB0LmVuZCgpKTsKKyAgRVhQRUNUX1RIQVQoKnQuZmluZCgzKSwgMyk7Cisg
IEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisKKyAgLy8gREVMRVRFRCBERUxFVEVEIERFTEVURUQK
KyAgdC5lcmFzZSh0LmZpbmQoMykpOworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMSkgPT0gdC5lbmQo
KSk7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgyKSA9PSB0LmVuZCgpKTsKKyAgRVhQRUNUX1RSVUUo
dC5maW5kKDMpID09IHQuZW5kKCkpOworICBFWFBFQ1RfRVEoMCwgdC5zaXplKCkpOworfQorCitU
RVNUKFRhYmxlLCBFcmFzZUluc2VydFByb2JpbmcpIHsKKyAgQmFkVGFibGUgdCgxMDApOworCisg
IC8vIDEgMiAzIDQKKyAgdC5lbXBsYWNlKDEpOworICB0LmVtcGxhY2UoMik7CisgIHQuZW1wbGFj
ZSgzKTsKKyAgdC5lbXBsYWNlKDQpOworCisgIC8vIDEgREVMRVRFRCAzIERFTEVURUQKKyAgdC5l
cmFzZSh0LmZpbmQoMikpOworICB0LmVyYXNlKHQuZmluZCg0KSk7CisKKyAgLy8gMSAxMCAzIDEx
IDEyCisgIHQuZW1wbGFjZSgxMCk7CisgIHQuZW1wbGFjZSgxMSk7CisgIHQuZW1wbGFjZSgxMik7
CisKKyAgRVhQRUNUX0VRKDUsIHQuc2l6ZSgpKTsKKyAgRVhQRUNUX1RIQVQodCwgVW5vcmRlcmVk
RWxlbWVudHNBcmUoMSwgMTAsIDMsIDExLCAxMikpOworfQorCitURVNUKFRhYmxlLCBDbGVhcikg
eworICBJbnRUYWJsZSB0OworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7Cisg
IHQuY2xlYXIoKTsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDApID09IHQuZW5kKCkpOworICBhdXRv
IHJlcyA9IHQuZW1wbGFjZSgwKTsKKyAgRVhQRUNUX1RSVUUocmVzLnNlY29uZCk7CisgIEVYUEVD
VF9FUSgxLCB0LnNpemUoKSk7CisgIHQuY2xlYXIoKTsKKyAgRVhQRUNUX0VRKDAsIHQuc2l6ZSgp
KTsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDApID09IHQuZW5kKCkpOworfQorCitURVNUKFRhYmxl
LCBTd2FwKSB7CisgIEludFRhYmxlIHQ7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgwKSA9PSB0LmVu
ZCgpKTsKKyAgYXV0byByZXMgPSB0LmVtcGxhY2UoMCk7CisgIEVYUEVDVF9UUlVFKHJlcy5zZWNv
bmQpOworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworICBJbnRUYWJsZSB1OworICB0LnN3YXAo
dSk7CisgIEVYUEVDVF9FUSgwLCB0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7
CisgIEVYUEVDVF9UUlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsKKyAgRVhQRUNUX1RIQVQoKnUu
ZmluZCgwKSwgMCk7Cit9CisKK1RFU1QoVGFibGUsIFJlaGFzaCkgeworICBJbnRUYWJsZSB0Owor
ICBFWFBFQ1RfVFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7CisgIHQuZW1wbGFjZSgwKTsKKyAg
dC5lbXBsYWNlKDEpOworICBFWFBFQ1RfRVEoMiwgdC5zaXplKCkpOworICB0LnJlaGFzaCgxMjgp
OworICBFWFBFQ1RfRVEoMiwgdC5zaXplKCkpOworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDApLCAw
KTsKKyAgRVhQRUNUX1RIQVQoKnQuZmluZCgxKSwgMSk7Cit9CisKK1RFU1QoVGFibGUsIFJlaGFz
aERvZXNOb3RSZWhhc2hXaGVuTm90TmVjZXNzYXJ5KSB7CisgIEludFRhYmxlIHQ7CisgIHQuZW1w
bGFjZSgwKTsKKyAgdC5lbXBsYWNlKDEpOworICBhdXRvKiBwID0gJip0LmZpbmQoMCk7CisgIHQu
cmVoYXNoKDEpOworICBFWFBFQ1RfRVEocCwgJip0LmZpbmQoMCkpOworfQorCitURVNUKFRhYmxl
LCBSZWhhc2haZXJvRG9lc05vdEFsbG9jYXRlT25FbXB0eVRhYmxlKSB7CisgIEludFRhYmxlIHQ7
CisgIHQucmVoYXNoKDApOworICBFWFBFQ1RfRVEoMCwgdC5idWNrZXRfY291bnQoKSk7Cit9CisK
K1RFU1QoVGFibGUsIFJlaGFzaFplcm9EZWFsbG9jYXRlc0VtcHR5VGFibGUpIHsKKyAgSW50VGFi
bGUgdDsKKyAgdC5lbXBsYWNlKDApOworICB0LmNsZWFyKCk7CisgIEVYUEVDVF9ORSgwLCB0LmJ1
Y2tldF9jb3VudCgpKTsKKyAgdC5yZWhhc2goMCk7CisgIEVYUEVDVF9FUSgwLCB0LmJ1Y2tldF9j
b3VudCgpKTsKK30KKworVEVTVChUYWJsZSwgUmVoYXNoWmVyb0ZvcmNlc1JlaGFzaCkgeworICBJ
bnRUYWJsZSB0OworICB0LmVtcGxhY2UoMCk7CisgIHQuZW1wbGFjZSgxKTsKKyAgYXV0byogcCA9
ICYqdC5maW5kKDApOworICB0LnJlaGFzaCgwKTsKKyAgRVhQRUNUX05FKHAsICYqdC5maW5kKDAp
KTsKK30KKworVEVTVChUYWJsZSwgQ29uc3RydWN0RnJvbUluaXRMaXN0KSB7CisgIHVzaW5nIFAg
PSBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPjsKKyAgc3RydWN0IFEgeworICAg
IG9wZXJhdG9yIFAoKSBjb25zdCB7IHJldHVybiB7fTsgfQorICB9OworICBTdHJpbmdUYWJsZSB0
ID0ge1AoKSwgUSgpLCB7fSwge3t9LCB7fX19OworfQorCitURVNUKFRhYmxlLCBDb3B5Q29uc3Ry
dWN0KSB7CisgIEludFRhYmxlIHQ7CisgIHQubWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsKKyAgdC5l
bXBsYWNlKDApOworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworICB7CisgICAgSW50VGFibGUg
dSh0KTsKKyAgICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOworICAgIEVYUEVDVF9FUSh0Lm1heF9s
b2FkX2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKKyAgICBFWFBFQ1RfVEhBVCgqdS5m
aW5kKDApLCAwKTsKKyAgfQorICB7CisgICAgSW50VGFibGUgdXt0fTsKKyAgICBFWFBFQ1RfRVEo
MSwgdS5zaXplKCkpOworICAgIEVYUEVDVF9FUSh0Lm1heF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9s
b2FkX2ZhY3RvcigpKTsKKyAgICBFWFBFQ1RfVEhBVCgqdS5maW5kKDApLCAwKTsKKyAgfQorICB7
CisgICAgSW50VGFibGUgdSA9IHQ7CisgICAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAgICBF
WFBFQ1RfRVEodC5tYXhfbG9hZF9mYWN0b3IoKSwgdS5tYXhfbG9hZF9mYWN0b3IoKSk7CisgICAg
RVhQRUNUX1RIQVQoKnUuZmluZCgwKSwgMCk7CisgIH0KK30KKworVEVTVChUYWJsZSwgQ29weUNv
bnN0cnVjdFdpdGhBbGxvYykgeworICBTdHJpbmdUYWJsZSB0OworICB0Lm1heF9sb2FkX2ZhY3Rv
ciguMzIxZik7CisgIHQuZW1wbGFjZSgiYSIsICJiIik7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUo
KSk7CisgIFN0cmluZ1RhYmxlIHUodCwgQWxsb2M8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6
OnN0cmluZz4+KCkpOworICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOworICBFWFBFQ1RfRVEodC5t
YXhfbG9hZF9mYWN0b3IoKSwgdS5tYXhfbG9hZF9mYWN0b3IoKSk7CisgIEVYUEVDVF9USEFUKCp1
LmZpbmQoImEiKSwgUGFpcigiYSIsICJiIikpOworfQorCitzdHJ1Y3QgRXhwbGljaXRBbGxvY0lu
dFRhYmxlCisgICAgOiByYXdfaGFzaF9zZXQ8SW50UG9saWN5LCBjb250YWluZXJfaW50ZXJuYWw6
Omhhc2hfZGVmYXVsdF9oYXNoPGludDY0X3Q+LAorICAgICAgICAgICAgICAgICAgIHN0ZDo6ZXF1
YWxfdG88aW50NjRfdD4sIEFsbG9jPGludDY0X3Q+PiB7CisgIEV4cGxpY2l0QWxsb2NJbnRUYWJs
ZSgpIHt9Cit9OworCitURVNUKFRhYmxlLCBBbGxvY1dpdGhFeHBsaWNpdEN0b3IpIHsKKyAgRXhw
bGljaXRBbGxvY0ludFRhYmxlIHQ7CisgIEVYUEVDVF9FUSgwLCB0LnNpemUoKSk7Cit9CisKK1RF
U1QoVGFibGUsIE1vdmVDb25zdHJ1Y3QpIHsKKyAgeworICAgIFN0cmluZ1RhYmxlIHQ7CisgICAg
dC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOworICAgIGNvbnN0IGZsb2F0IGxmID0gdC5tYXhfbG9h
ZF9mYWN0b3IoKTsKKyAgICB0LmVtcGxhY2UoImEiLCAiYiIpOworICAgIEVYUEVDVF9FUSgxLCB0
LnNpemUoKSk7CisKKyAgICBTdHJpbmdUYWJsZSB1KHN0ZDo6bW92ZSh0KSk7CisgICAgRVhQRUNU
X0VRKDEsIHUuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGYsIHUubWF4X2xvYWRfZmFjdG9yKCkp
OworICAgIEVYUEVDVF9USEFUKCp1LmZpbmQoImEiKSwgUGFpcigiYSIsICJiIikpOworICB9Cisg
IHsKKyAgICBTdHJpbmdUYWJsZSB0OworICAgIHQubWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsKKyAg
ICBjb25zdCBmbG9hdCBsZiA9IHQubWF4X2xvYWRfZmFjdG9yKCk7CisgICAgdC5lbXBsYWNlKCJh
IiwgImIiKTsKKyAgICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworCisgICAgU3RyaW5nVGFibGUg
dXtzdGQ6Om1vdmUodCl9OworICAgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKGxmLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKKyAgICBFWFBFQ1RfVEhBVCgqdS5maW5kKCJh
IiksIFBhaXIoImEiLCAiYiIpKTsKKyAgfQorICB7CisgICAgU3RyaW5nVGFibGUgdDsKKyAgICB0
Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7CisgICAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9sb2Fk
X2ZhY3RvcigpOworICAgIHQuZW1wbGFjZSgiYSIsICJiIik7CisgICAgRVhQRUNUX0VRKDEsIHQu
c2l6ZSgpKTsKKworICAgIFN0cmluZ1RhYmxlIHUgPSBzdGQ6Om1vdmUodCk7CisgICAgRVhQRUNU
X0VRKDEsIHUuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGYsIHUubWF4X2xvYWRfZmFjdG9yKCkp
OworICAgIEVYUEVDVF9USEFUKCp1LmZpbmQoImEiKSwgUGFpcigiYSIsICJiIikpOworICB9Cit9
CisKK1RFU1QoVGFibGUsIE1vdmVDb25zdHJ1Y3RXaXRoQWxsb2MpIHsKKyAgU3RyaW5nVGFibGUg
dDsKKyAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOworICBjb25zdCBmbG9hdCBsZiA9IHQubWF4
X2xvYWRfZmFjdG9yKCk7CisgIHQuZW1wbGFjZSgiYSIsICJiIik7CisgIEVYUEVDVF9FUSgxLCB0
LnNpemUoKSk7CisgIFN0cmluZ1RhYmxlIHUoc3RkOjptb3ZlKHQpLCBBbGxvYzxzdGQ6OnBhaXI8
c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4oKSk7CisgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7
CisgIEVYUEVDVF9FUShsZiwgdS5tYXhfbG9hZF9mYWN0b3IoKSk7CisgIEVYUEVDVF9USEFUKCp1
LmZpbmQoImEiKSwgUGFpcigiYSIsICJiIikpOworfQorCitURVNUKFRhYmxlLCBDb3B5QXNzaWdu
KSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIHQubWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsKKyAgdC5l
bXBsYWNlKCJhIiwgImIiKTsKKyAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsKKyAgU3RyaW5nVGFi
bGUgdTsKKyAgdSA9IHQ7CisgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7CisgIEVYUEVDVF9FUSh0
Lm1heF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKKyAgRVhQRUNUX1RIQVQo
KnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7Cit9CisKK1RFU1QoVGFibGUsIENvcHlTZWxm
QXNzaWduKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIHQubWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsK
KyAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9sb2FkX2ZhY3RvcigpOworICB0LmVtcGxhY2UoImEi
LCAiYiIpOworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworICB0ID0gKiZ0OworICBFWFBFQ1Rf
RVEoMSwgdC5zaXplKCkpOworICBFWFBFQ1RfRVEobGYsIHQubWF4X2xvYWRfZmFjdG9yKCkpOwor
ICBFWFBFQ1RfVEhBVCgqdC5maW5kKCJhIiksIFBhaXIoImEiLCAiYiIpKTsKK30KKworVEVTVChU
YWJsZSwgTW92ZUFzc2lnbikgeworICBTdHJpbmdUYWJsZSB0OworICB0Lm1heF9sb2FkX2ZhY3Rv
ciguMzIxZik7CisgIGNvbnN0IGZsb2F0IGxmID0gdC5tYXhfbG9hZF9mYWN0b3IoKTsKKyAgdC5l
bXBsYWNlKCJhIiwgImIiKTsKKyAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsKKyAgU3RyaW5nVGFi
bGUgdTsKKyAgdSA9IHN0ZDo6bW92ZSh0KTsKKyAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAg
RVhQRUNUX0VRKGxmLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKKyAgRVhQRUNUX1RIQVQoKnUuZmlu
ZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7Cit9CisKK1RFU1QoVGFibGUsIEVxdWFsaXR5KSB7Cisg
IFN0cmluZ1RhYmxlIHQ7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3Rk
OjpzdHJpbmc+PiB2ID0ge3siYSIsICJiIn0sIHsiYWEiLCAiYmIifX07CisgIHQuaW5zZXJ0KHN0
ZDo6YmVnaW4odiksIHN0ZDo6ZW5kKHYpKTsKKyAgU3RyaW5nVGFibGUgdSA9IHQ7CisgIEVYUEVD
VF9FUSh1LCB0KTsKK30KKworVEVTVChUYWJsZSwgRXF1YWxpdHkyKSB7CisgIFN0cmluZ1RhYmxl
IHQ7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PiB2
MSA9IHt7ImEiLCAiYiJ9LCB7ImFhIiwgImJiIn19OworICB0Lmluc2VydChzdGQ6OmJlZ2luKHYx
KSwgc3RkOjplbmQodjEpKTsKKyAgU3RyaW5nVGFibGUgdTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpw
YWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYyID0ge3siYSIsICJhIn0sIHsiYWEiLCAi
YWEifX07CisgIHUuaW5zZXJ0KHN0ZDo6YmVnaW4odjIpLCBzdGQ6OmVuZCh2MikpOworICBFWFBF
Q1RfTkUodSwgdCk7Cit9CisKK1RFU1QoVGFibGUsIEVxdWFsaXR5MykgeworICBTdHJpbmdUYWJs
ZSB0OworICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4g
djEgPSB7eyJiIiwgImIifSwgeyJiYiIsICJiYiJ9fTsKKyAgdC5pbnNlcnQoc3RkOjpiZWdpbih2
MSksIHN0ZDo6ZW5kKHYxKSk7CisgIFN0cmluZ1RhYmxlIHU7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6
cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PiB2MiA9IHt7ImEiLCAiYSJ9LCB7ImFhIiwg
ImFhIn19OworICB1Lmluc2VydChzdGQ6OmJlZ2luKHYyKSwgc3RkOjplbmQodjIpKTsKKyAgRVhQ
RUNUX05FKHUsIHQpOworfQorCitURVNUKFRhYmxlLCBOdW1EZWxldGVkUmVncmVzc2lvbikgewor
ICBJbnRUYWJsZSB0OworICB0LmVtcGxhY2UoMCk7CisgIHQuZXJhc2UodC5maW5kKDApKTsKKyAg
Ly8gY29uc3RydWN0IG92ZXIgYSBkZWxldGVkIHNsb3QuCisgIHQuZW1wbGFjZSgwKTsKKyAgdC5j
bGVhcigpOworfQorCitURVNUKFRhYmxlLCBGaW5kRnVsbERlbGV0ZWRSZWdyZXNzaW9uKSB7Cisg
IEludFRhYmxlIHQ7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgdC5l
bXBsYWNlKGkpOworICAgIHQuZXJhc2UodC5maW5kKGkpKTsKKyAgfQorICBFWFBFQ1RfRVEoMCwg
dC5zaXplKCkpOworfQorCitURVNUKFRhYmxlLCBSZXBsYWNpbmdEZWxldGVkU2xvdERvZXNOb3RS
ZWhhc2gpIHsKKyAgc2l6ZV90IG47CisgIHsKKyAgICAvLyBDb21wdXRlIG4gc3VjaCB0aGF0IG4g
aXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGJlZm9yZSByZWhhc2guCisgICAgSW50
VGFibGUgdDsKKyAgICB0LmVtcGxhY2UoMCk7CisgICAgc2l6ZV90IGMgPSB0LmJ1Y2tldF9jb3Vu
dCgpOworICAgIGZvciAobiA9IDE7IGMgPT0gdC5idWNrZXRfY291bnQoKTsgKytuKSB0LmVtcGxh
Y2Uobik7CisgICAgLS1uOworICB9CisgIEludFRhYmxlIHQ7CisgIHQucmVoYXNoKG4pOworICBj
b25zdCBzaXplX3QgYyA9IHQuYnVja2V0X2NvdW50KCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IG47ICsraSkgdC5lbXBsYWNlKGkpOworICBFWFBFQ1RfRVEoYywgdC5idWNrZXRfY291bnQo
KSkgPDwgInJlaGFzaGluZyB0aHJlc2hvbGQgPSAiIDw8IG47CisgIHQuZXJhc2UoMCk7CisgIHQu
ZW1wbGFjZSgwKTsKKyAgRVhQRUNUX0VRKGMsIHQuYnVja2V0X2NvdW50KCkpIDw8ICJyZWhhc2hp
bmcgdGhyZXNob2xkID0gIiA8PCBuOworfQorCitURVNUKFRhYmxlLCBOb1Rocm93TW92ZUNvbnN0
cnVjdCkgeworICBBU1NFUlRfVFJVRSgKKyAgICAgIHN0ZDo6aXNfbm90aHJvd19jb3B5X2NvbnN0
cnVjdGlibGU8YWJzbDo6SGFzaDxhYnNsOjpzdHJpbmdfdmlldz4+Ojp2YWx1ZSk7CisgIEFTU0VS
VF9UUlVFKHN0ZDo6aXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8CisgICAgICAgICAgICAg
IHN0ZDo6ZXF1YWxfdG88YWJzbDo6c3RyaW5nX3ZpZXc+Pjo6dmFsdWUpOworICBBU1NFUlRfVFJV
RShzdGQ6OmlzX25vdGhyb3dfY29weV9jb25zdHJ1Y3RpYmxlPHN0ZDo6YWxsb2NhdG9yPGludD4+
Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGli
bGU8U3RyaW5nVGFibGU+Ojp2YWx1ZSk7Cit9CisKK1RFU1QoVGFibGUsIE5vVGhyb3dNb3ZlQXNz
aWduKSB7CisgIEFTU0VSVF9UUlVFKAorICAgICAgc3RkOjppc19ub3Rocm93X21vdmVfYXNzaWdu
YWJsZTxhYnNsOjpIYXNoPGFic2w6OnN0cmluZ192aWV3Pj46OnZhbHVlKTsKKyAgQVNTRVJUX1RS
VUUoCisgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPHN0ZDo6ZXF1YWxfdG88
YWJzbDo6c3RyaW5nX3ZpZXc+Pjo6dmFsdWUpOworICBBU1NFUlRfVFJVRShzdGQ6OmlzX25vdGhy
b3dfbW92ZV9hc3NpZ25hYmxlPHN0ZDo6YWxsb2NhdG9yPGludD4+Ojp2YWx1ZSk7CisgIEFTU0VS
VF9UUlVFKAorICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxzdGQ6OmFsbG9jYXRvcjxpbnQ+
Pjo6aXNfYWx3YXlzX2VxdWFsOjp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbm90aHJv
d19tb3ZlX2Fzc2lnbmFibGU8U3RyaW5nVGFibGU+Ojp2YWx1ZSk7Cit9CisKK1RFU1QoVGFibGUs
IE5vVGhyb3dTd2FwcGFibGUpIHsKKyAgQVNTRVJUX1RSVUUoCisgICAgICBjb250YWluZXJfaW50
ZXJuYWw6OklzTm9UaHJvd1N3YXBwYWJsZTxhYnNsOjpIYXNoPGFic2w6OnN0cmluZ192aWV3Pj4o
KSk7CisgIEFTU0VSVF9UUlVFKGNvbnRhaW5lcl9pbnRlcm5hbDo6SXNOb1Rocm93U3dhcHBhYmxl
PAorICAgICAgICAgICAgICBzdGQ6OmVxdWFsX3RvPGFic2w6OnN0cmluZ192aWV3Pj4oKSk7Cisg
IEFTU0VSVF9UUlVFKGNvbnRhaW5lcl9pbnRlcm5hbDo6SXNOb1Rocm93U3dhcHBhYmxlPHN0ZDo6
YWxsb2NhdG9yPGludD4+KCkpOworICBFWFBFQ1RfVFJVRShjb250YWluZXJfaW50ZXJuYWw6Oklz
Tm9UaHJvd1N3YXBwYWJsZTxTdHJpbmdUYWJsZT4oKSk7Cit9CisKK1RFU1QoVGFibGUsIEhldGVy
b2dlbmVvdXNMb29rdXApIHsKKyAgc3RydWN0IEhhc2ggeworICAgIHNpemVfdCBvcGVyYXRvcigp
KGludDY0X3QgaSkgY29uc3QgeyByZXR1cm4gaTsgfQorICAgIHNpemVfdCBvcGVyYXRvcigpKGRv
dWJsZSBpKSBjb25zdCB7CisgICAgICBBRERfRkFJTFVSRSgpOworICAgICAgcmV0dXJuIGk7Cisg
ICAgfQorICB9OworICBzdHJ1Y3QgRXEgeworICAgIGJvb2wgb3BlcmF0b3IoKShpbnQ2NF90IGEs
IGludDY0X3QgYikgY29uc3QgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgYm9vbCBvcGVyYXRvcigp
KGRvdWJsZSBhLCBpbnQ2NF90IGIpIGNvbnN0IHsKKyAgICAgIEFERF9GQUlMVVJFKCk7CisgICAg
ICByZXR1cm4gYSA9PSBiOworICAgIH0KKyAgICBib29sIG9wZXJhdG9yKCkoaW50NjRfdCBhLCBk
b3VibGUgYikgY29uc3QgeworICAgICAgQUREX0ZBSUxVUkUoKTsKKyAgICAgIHJldHVybiBhID09
IGI7CisgICAgfQorICAgIGJvb2wgb3BlcmF0b3IoKShkb3VibGUgYSwgZG91YmxlIGIpIGNvbnN0
IHsKKyAgICAgIEFERF9GQUlMVVJFKCk7CisgICAgICByZXR1cm4gYSA9PSBiOworICAgIH0KKyAg
fTsKKworICBzdHJ1Y3QgVEhhc2ggeworICAgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsK
KyAgICBzaXplX3Qgb3BlcmF0b3IoKShpbnQ2NF90IGkpIGNvbnN0IHsgcmV0dXJuIGk7IH0KKyAg
ICBzaXplX3Qgb3BlcmF0b3IoKShkb3VibGUgaSkgY29uc3QgeyByZXR1cm4gaTsgfQorICB9Owor
ICBzdHJ1Y3QgVEVxIHsKKyAgICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7CisgICAgYm9v
bCBvcGVyYXRvcigpKGludDY0X3QgYSwgaW50NjRfdCBiKSBjb25zdCB7IHJldHVybiBhID09IGI7
IH0KKyAgICBib29sIG9wZXJhdG9yKCkoZG91YmxlIGEsIGludDY0X3QgYikgY29uc3QgeyByZXR1
cm4gYSA9PSBiOyB9CisgICAgYm9vbCBvcGVyYXRvcigpKGludDY0X3QgYSwgZG91YmxlIGIpIGNv
bnN0IHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIGJvb2wgb3BlcmF0b3IoKShkb3VibGUgYSwgZG91
YmxlIGIpIGNvbnN0IHsgcmV0dXJuIGEgPT0gYjsgfQorICB9OworCisgIHJhd19oYXNoX3NldDxJ
bnRQb2xpY3ksIEhhc2gsIEVxLCBBbGxvYzxpbnQ2NF90Pj4gc3swLCAxLCAyfTsKKyAgLy8gSXQg
d2lsbCBjb252ZXJ0IHRvIGludDY0X3QgYmVmb3JlIHRoZSBxdWVyeS4KKyAgRVhQRUNUX0VRKDEs
ICpzLmZpbmQoZG91YmxlezEuMX0pKTsKKworICByYXdfaGFzaF9zZXQ8SW50UG9saWN5LCBUSGFz
aCwgVEVxLCBBbGxvYzxpbnQ2NF90Pj4gdHN7MCwgMSwgMn07CisgIC8vIEl0IHdpbGwgdHJ5IHRv
IHVzZSB0aGUgZG91YmxlLCBhbmQgZmFpbCB0byBmaW5kIHRoZSBvYmplY3QuCisgIEVYUEVDVF9U
UlVFKHRzLmZpbmQoMS4xKSA9PSB0cy5lbmQoKSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUYWJs
ZT4KK3VzaW5nIENhbGxGaW5kID0gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFRhYmxlJj4oKS5maW5k
KDE3KSk7CisKK3RlbXBsYXRlIDxjbGFzcyBUYWJsZT4KK3VzaW5nIENhbGxFcmFzZSA9IGRlY2x0
eXBlKHN0ZDo6ZGVjbHZhbDxUYWJsZSY+KCkuZXJhc2UoMTcpKTsKKwordGVtcGxhdGUgPGNsYXNz
IFRhYmxlPgordXNpbmcgQ2FsbEV4dHJhY3QgPSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VGFibGUm
PigpLmV4dHJhY3QoMTcpKTsKKwordGVtcGxhdGUgPGNsYXNzIFRhYmxlPgordXNpbmcgQ2FsbFBy
ZWZldGNoID0gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFRhYmxlJj4oKS5wcmVmZXRjaCgxNykpOwor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVGFibGU+Cit1c2luZyBDYWxsQ291bnQgPSBkZWNsdHlwZShzdGQ6
OmRlY2x2YWw8VGFibGUmPigpLmNvdW50KDE3KSk7CisKK3RlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlw
ZW5hbWU+IGNsYXNzIEMsIGNsYXNzIFRhYmxlLCBjbGFzcyA9IHZvaWQ+CitzdHJ1Y3QgVmVyaWZ5
UmVzdWx0T2YgOiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlw
ZW5hbWU+IGNsYXNzIEMsIGNsYXNzIFRhYmxlPgorc3RydWN0IFZlcmlmeVJlc3VsdE9mPEMsIFRh
YmxlLCBhYnNsOjp2b2lkX3Q8QzxUYWJsZT4+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCitURVNU
KFRhYmxlLCBIZXRlcm9nZW5lb3VzTG9va3VwT3ZlcmxvYWRzKSB7CisgIHVzaW5nIE5vblRyYW5z
cGFyZW50VGFibGUgPQorICAgICAgcmF3X2hhc2hfc2V0PFN0cmluZ1BvbGljeSwgYWJzbDo6SGFz
aDxhYnNsOjpzdHJpbmdfdmlldz4sCisgICAgICAgICAgICAgICAgICAgc3RkOjplcXVhbF90bzxh
YnNsOjpzdHJpbmdfdmlldz4sIHN0ZDo6YWxsb2NhdG9yPGludD4+OworCisgIEVYUEVDVF9GQUxT
RSgoVmVyaWZ5UmVzdWx0T2Y8Q2FsbEZpbmQsIE5vblRyYW5zcGFyZW50VGFibGU+KCkpKTsKKyAg
RVhQRUNUX0ZBTFNFKChWZXJpZnlSZXN1bHRPZjxDYWxsRXJhc2UsIE5vblRyYW5zcGFyZW50VGFi
bGU+KCkpKTsKKyAgRVhQRUNUX0ZBTFNFKChWZXJpZnlSZXN1bHRPZjxDYWxsRXh0cmFjdCwgTm9u
VHJhbnNwYXJlbnRUYWJsZT4oKSkpOworICBFWFBFQ1RfRkFMU0UoKFZlcmlmeVJlc3VsdE9mPENh
bGxQcmVmZXRjaCwgTm9uVHJhbnNwYXJlbnRUYWJsZT4oKSkpOworICBFWFBFQ1RfRkFMU0UoKFZl
cmlmeVJlc3VsdE9mPENhbGxDb3VudCwgTm9uVHJhbnNwYXJlbnRUYWJsZT4oKSkpOworCisgIHVz
aW5nIFRyYW5zcGFyZW50VGFibGUgPSByYXdfaGFzaF9zZXQ8CisgICAgICBTdHJpbmdQb2xpY3ks
CisgICAgICBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfZGVmYXVsdF9oYXNoPGFic2w6
OnN0cmluZ192aWV3PiwKKyAgICAgIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZh
dWx0X2VxPGFic2w6OnN0cmluZ192aWV3PiwKKyAgICAgIHN0ZDo6YWxsb2NhdG9yPGludD4+Owor
CisgIEVYUEVDVF9UUlVFKChWZXJpZnlSZXN1bHRPZjxDYWxsRmluZCwgVHJhbnNwYXJlbnRUYWJs
ZT4oKSkpOworICBFWFBFQ1RfVFJVRSgoVmVyaWZ5UmVzdWx0T2Y8Q2FsbEVyYXNlLCBUcmFuc3Bh
cmVudFRhYmxlPigpKSk7CisgIEVYUEVDVF9UUlVFKChWZXJpZnlSZXN1bHRPZjxDYWxsRXh0cmFj
dCwgVHJhbnNwYXJlbnRUYWJsZT4oKSkpOworICBFWFBFQ1RfVFJVRSgoVmVyaWZ5UmVzdWx0T2Y8
Q2FsbFByZWZldGNoLCBUcmFuc3BhcmVudFRhYmxlPigpKSk7CisgIEVYUEVDVF9UUlVFKChWZXJp
ZnlSZXN1bHRPZjxDYWxsQ291bnQsIFRyYW5zcGFyZW50VGFibGU+KCkpKTsKK30KKworLy8gVE9E
TyhhbGtpcyk6IEV4cGFuZCBpdGVyYXRvciB0ZXN0cy4KK1RFU1QoSXRlcmF0b3IsIElzRGVmYXVs
dENvbnN0cnVjdGlibGUpIHsKKyAgU3RyaW5nVGFibGU6Oml0ZXJhdG9yIGk7CisgIEVYUEVDVF9U
UlVFKGkgPT0gU3RyaW5nVGFibGU6Oml0ZXJhdG9yKCkpOworfQorCitURVNUKENvbnN0SXRlcmF0
b3IsIElzRGVmYXVsdENvbnN0cnVjdGlibGUpIHsKKyAgU3RyaW5nVGFibGU6OmNvbnN0X2l0ZXJh
dG9yIGk7CisgIEVYUEVDVF9UUlVFKGkgPT0gU3RyaW5nVGFibGU6OmNvbnN0X2l0ZXJhdG9yKCkp
OworfQorCitURVNUKEl0ZXJhdG9yLCBDb252ZXJ0c1RvQ29uc3RJdGVyYXRvcikgeworICBTdHJp
bmdUYWJsZTo6aXRlcmF0b3IgaTsKKyAgRVhQRUNUX1RSVUUoaSA9PSBTdHJpbmdUYWJsZTo6Y29u
c3RfaXRlcmF0b3IoKSk7Cit9CisKK1RFU1QoSXRlcmF0b3IsIEl0ZXJhdGVzKSB7CisgIEludFRh
YmxlIHQ7CisgIGZvciAoc2l6ZV90IGkgPSAzOyBpICE9IDY7ICsraSkgRVhQRUNUX1RSVUUodC5l
bXBsYWNlKGkpLnNlY29uZCk7CisgIEVYUEVDVF9USEFUKHQsIFVub3JkZXJlZEVsZW1lbnRzQXJl
KDMsIDQsIDUpKTsKK30KKworVEVTVChUYWJsZSwgTWVyZ2UpIHsKKyAgU3RyaW5nVGFibGUgdDEs
IHQyOworICB0MS5lbXBsYWNlKCIwIiwgIi0wIik7CisgIHQxLmVtcGxhY2UoIjEiLCAiLTEiKTsK
KyAgdDIuZW1wbGFjZSgiMCIsICJ+MCIpOworICB0Mi5lbXBsYWNlKCIyIiwgIn4yIik7CisKKyAg
RVhQRUNUX1RIQVQodDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoIjAiLCAiLTAiKSwgUGFp
cigiMSIsICItMSIpKSk7CisgIEVYUEVDVF9USEFUKHQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQ
YWlyKCIwIiwgIn4wIiksIFBhaXIoIjIiLCAifjIiKSkpOworCisgIHQxLm1lcmdlKHQyKTsKKyAg
RVhQRUNUX1RIQVQodDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoIjAiLCAiLTAiKSwgUGFp
cigiMSIsICItMSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFp
cigiMiIsICJ+MiIpKSk7CisgIEVYUEVDVF9USEFUKHQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQ
YWlyKCIwIiwgIn4wIikpKTsKK30KKworVEVTVChOb2RlcywgRW1wdHlOb2RlVHlwZSkgeworICB1
c2luZyBub2RlX3R5cGUgPSBTdHJpbmdUYWJsZTo6bm9kZV90eXBlOworICBub2RlX3R5cGUgbjsK
KyAgRVhQRUNUX0ZBTFNFKG4pOworICBFWFBFQ1RfVFJVRShuLmVtcHR5KCkpOworCisgIEVYUEVD
VF9UUlVFKChzdGQ6OmlzX3NhbWU8bm9kZV90eXBlOjphbGxvY2F0b3JfdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTdHJpbmdUYWJsZTo6YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSkp
OworfQorCitURVNUKE5vZGVzLCBFeHRyYWN0SW5zZXJ0KSB7CisgIGNvbnN0ZXhwciBjaGFyIGsw
W10gPSAiVmVyeSBsb25nIHN0ZDo6c3RyaW5nIHplcm8uIjsKKyAgY29uc3RleHByIGNoYXIgazFb
XSA9ICJWZXJ5IGxvbmcgc3RkOjpzdHJpbmcgb25lLiI7CisgIGNvbnN0ZXhwciBjaGFyIGsyW10g
PSAiVmVyeSBsb25nIHN0ZDo6c3RyaW5nIHR3by4iOworICBTdHJpbmdUYWJsZSB0ID0ge3trMCwg
IiJ9LCB7azEsICIifSwge2syLCAiIn19OworICBFWFBFQ1RfVEhBVCh0LAorICAgICAgICAgICAg
ICBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKGswLCAiIiksIFBhaXIoazEsICIiKSwgUGFpcihr
MiwgIiIpKSk7CisKKyAgYXV0byBub2RlID0gdC5leHRyYWN0KGswKTsKKyAgRVhQRUNUX1RIQVQo
dCwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcihrMSwgIiIpLCBQYWlyKGsyLCAiIikpKTsKKyAg
RVhQRUNUX1RSVUUobm9kZSk7CisgIEVYUEVDVF9GQUxTRShub2RlLmVtcHR5KCkpOworCisgIFN0
cmluZ1RhYmxlIHQyOworICBhdXRvIHJlcyA9IHQyLmluc2VydChzdGQ6Om1vdmUobm9kZSkpOwor
ICBFWFBFQ1RfVFJVRShyZXMuaW5zZXJ0ZWQpOworICBFWFBFQ1RfVEhBVCgqcmVzLnBvc2l0aW9u
LCBQYWlyKGswLCAiIikpOworICBFWFBFQ1RfRkFMU0UocmVzLm5vZGUpOworICBFWFBFQ1RfVEhB
VCh0MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcihrMCwgIiIpKSk7CisKKyAgLy8gTm90IHRo
ZXJlLgorICBFWFBFQ1RfVEhBVCh0LCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKGsxLCAiIiks
IFBhaXIoazIsICIiKSkpOworICBub2RlID0gdC5leHRyYWN0KCJOb3QgdGhlcmUhIik7CisgIEVY
UEVDVF9USEFUKHQsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoazEsICIiKSwgUGFpcihrMiwg
IiIpKSk7CisgIEVYUEVDVF9GQUxTRShub2RlKTsKKworICAvLyBJbnNlcnRpbmcgbm90aGluZy4K
KyAgcmVzID0gdDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7CisgIEVYUEVDVF9GQUxTRShyZXMu
aW5zZXJ0ZWQpOworICBFWFBFQ1RfRVEocmVzLnBvc2l0aW9uLCB0Mi5lbmQoKSk7CisgIEVYUEVD
VF9GQUxTRShyZXMubm9kZSk7CisgIEVYUEVDVF9USEFUKHQyLCBVbm9yZGVyZWRFbGVtZW50c0Fy
ZShQYWlyKGswLCAiIikpKTsKKworICB0LmVtcGxhY2UoazAsICIxIik7CisgIG5vZGUgPSB0LmV4
dHJhY3QoazApOworCisgIC8vIEluc2VydCBkdXBsaWNhdGUuCisgIHJlcyA9IHQyLmluc2VydChz
dGQ6Om1vdmUobm9kZSkpOworICBFWFBFQ1RfRkFMU0UocmVzLmluc2VydGVkKTsKKyAgRVhQRUNU
X1RIQVQoKnJlcy5wb3NpdGlvbiwgUGFpcihrMCwgIiIpKTsKKyAgRVhQRUNUX1RSVUUocmVzLm5v
ZGUpOworICBFWFBFQ1RfRkFMU0Uobm9kZSk7Cit9CisKK1N0cmluZ1RhYmxlIE1ha2VTaW1wbGVU
YWJsZShzaXplX3Qgc2l6ZSkgeworICBTdHJpbmdUYWJsZSB0OworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgdC5lbXBsYWNlKHN0ZDo6c3RyaW5nKDEsICdBJyArIGkpLCAiIik7
CisgIHJldHVybiB0OworfQorCitzdGQ6OnN0cmluZyBPcmRlck9mSXRlcmF0aW9uKGNvbnN0IFN0
cmluZ1RhYmxlJiB0KSB7CisgIHN0ZDo6c3RyaW5nIG9yZGVyOworICBmb3IgKGF1dG8mIHAgOiB0
KSBvcmRlciArPSBwLmZpcnN0OworICByZXR1cm4gb3JkZXI7Cit9CisKK1RFU1QoVGFibGUsIEl0
ZXJhdGlvbk9yZGVyQ2hhbmdlc0J5SW5zdGFuY2UpIHsKKyAgLy8gTmVlZHMgdG8gYmUgbW9yZSB0
aGFuIGtXaWR0aCBlbGVtZW50cyB0byBiZSBhYmxlIHRvIGFmZmVjdCBvcmRlci4KKyAgY29uc3Qg
U3RyaW5nVGFibGUgcmVmZXJlbmNlID0gTWFrZVNpbXBsZVRhYmxlKDIwKTsKKworICAvLyBTaW5j
ZSBvcmRlciBpcyBub24tZGV0ZXJtaW5pc3RpYyB3ZSBjYW4ndCBqdXN0IHRyeSBvbmNlIGFuZCB2
ZXJpZnkuCisgIC8vIFdlJ2xsIHRyeSB1bnRpbCB3ZSBmaW5kIHRoYXQgb3JkZXIgY2hhbmdlZC4g
SXQgc2hvdWxkIG5vdCB0YWtlIG1hbnkgdHJpZXMKKyAgLy8gZm9yIHRoYXQuCisgIC8vIEltcG9y
dGFudDogd2UgaGF2ZSB0byBrZWVwIHRoZSBvbGQgdGFibGVzIGFyb3VuZC4gT3RoZXJ3aXNlIHRj
bWFsbG9jIHdpbGwKKyAgLy8ganVzdCBnaXZlIHVzIHRoZSBzYW1lIGJsb2NrcyBhbmQgd2Ugd291
bGQgYmUgZG9pbmcgdGhlIHNhbWUgb3JkZXIgYWdhaW4uCisgIHN0ZDo6dmVjdG9yPFN0cmluZ1Rh
YmxlPiBnYXJiYWdlOworICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICBhdXRv
IHRyaWFsID0gTWFrZVNpbXBsZVRhYmxlKDIwKTsKKyAgICBpZiAoT3JkZXJPZkl0ZXJhdGlvbih0
cmlhbCkgIT0gT3JkZXJPZkl0ZXJhdGlvbihyZWZlcmVuY2UpKSB7CisgICAgICAvLyBXZSBhcmUg
ZG9uZS4KKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgZ2FyYmFnZS5wdXNoX2JhY2soc3RkOjpt
b3ZlKHRyaWFsKSk7CisgIH0KKyAgRkFJTCgpOworfQorCitURVNUKFRhYmxlLCBJdGVyYXRpb25P
cmRlckNoYW5nZXNPblJlaGFzaCkgeworICAvLyBTaW5jZSBvcmRlciBpcyBub24tZGV0ZXJtaW5p
c3RpYyB3ZSBjYW4ndCBqdXN0IHRyeSBvbmNlIGFuZCB2ZXJpZnkuCisgIC8vIFdlJ2xsIHRyeSB1
bnRpbCB3ZSBmaW5kIHRoYXQgb3JkZXIgY2hhbmdlZC4gSXQgc2hvdWxkIG5vdCB0YWtlIG1hbnkg
dHJpZXMKKyAgLy8gZm9yIHRoYXQuCisgIC8vIEltcG9ydGFudDogd2UgaGF2ZSB0byBrZWVwIHRo
ZSBvbGQgdGFibGVzIGFyb3VuZC4gT3RoZXJ3aXNlIHRjbWFsbG9jIHdpbGwKKyAgLy8ganVzdCBn
aXZlIHVzIHRoZSBzYW1lIGJsb2NrcyBhbmQgd2Ugd291bGQgYmUgZG9pbmcgdGhlIHNhbWUgb3Jk
ZXIgYWdhaW4uCisgIHN0ZDo6dmVjdG9yPFN0cmluZ1RhYmxlPiBnYXJiYWdlOworICBmb3IgKGlu
dCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICAvLyBOZWVkcyB0byBiZSBtb3JlIHRoYW4ga1dp
ZHRoIGVsZW1lbnRzIHRvIGJlIGFibGUgdG8gYWZmZWN0IG9yZGVyLgorICAgIFN0cmluZ1RhYmxl
IHQgPSBNYWtlU2ltcGxlVGFibGUoMjApOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHJlZmVyZW5j
ZSA9IE9yZGVyT2ZJdGVyYXRpb24odCk7CisgICAgLy8gRm9yY2UgcmVoYXNoIHRvIHRoZSBzYW1l
IHNpemUuCisgICAgdC5yZWhhc2goMCk7CisgICAgc3RkOjpzdHJpbmcgdHJpYWwgPSBPcmRlck9m
SXRlcmF0aW9uKHQpOworICAgIGlmICh0cmlhbCAhPSByZWZlcmVuY2UpIHsKKyAgICAgIC8vIFdl
IGFyZSBkb25lLgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnYXJiYWdlLnB1c2hfYmFjayhz
dGQ6Om1vdmUodCkpOworICB9CisgIEZBSUwoKTsKK30KKworVEVTVChUYWJsZSwgSXRlcmF0aW9u
T3JkZXJDaGFuZ2VzRm9yU21hbGxUYWJsZXMpIHsKKyAgLy8gU2luY2Ugb3JkZXIgaXMgbm9uLWRl
dGVybWluaXN0aWMgd2UgY2FuJ3QganVzdCB0cnkgb25jZSBhbmQgdmVyaWZ5LgorICAvLyBXZSds
bCB0cnkgdW50aWwgd2UgZmluZCB0aGF0IG9yZGVyIGNoYW5nZWQuCisgIC8vIEltcG9ydGFudDog
d2UgaGF2ZSB0byBrZWVwIHRoZSBvbGQgdGFibGVzIGFyb3VuZC4gT3RoZXJ3aXNlIHRjbWFsbG9j
IHdpbGwKKyAgLy8ganVzdCBnaXZlIHVzIHRoZSBzYW1lIGJsb2NrcyBhbmQgd2Ugd291bGQgYmUg
ZG9pbmcgdGhlIHNhbWUgb3JkZXIgYWdhaW4uCisgIFN0cmluZ1RhYmxlIHJlZmVyZW5jZV90YWJs
ZSA9IE1ha2VTaW1wbGVUYWJsZSg1KTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcmVmZXJlbmNlID0g
T3JkZXJPZkl0ZXJhdGlvbihyZWZlcmVuY2VfdGFibGUpOworICBzdGQ6OnZlY3RvcjxTdHJpbmdU
YWJsZT4gZ2FyYmFnZTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgU3Ry
aW5nVGFibGUgdCA9IE1ha2VTaW1wbGVUYWJsZSg1KTsKKyAgICBzdGQ6OnN0cmluZyB0cmlhbCA9
IE9yZGVyT2ZJdGVyYXRpb24odCk7CisgICAgaWYgKHRyaWFsICE9IHJlZmVyZW5jZSkgeworICAg
ICAgLy8gV2UgYXJlIGRvbmUuCisgICAgICByZXR1cm47CisgICAgfQorICAgIGdhcmJhZ2UucHVz
aF9iYWNrKHN0ZDo6bW92ZSh0KSk7CisgIH0KKyAgRkFJTCgpIDw8ICJJdGVyYXRpb24gb3JkZXIg
cmVtYWluZWQgdGhlIHNhbWUgYWNyb3NzIG1hbnkgYXR0ZW1wdHMuIjsKK30KKworLy8gRmlsbCB0
aGUgdGFibGUgdG8gMyBkaWZmZXJlbnQgbG9hZCBmYWN0b3JzIChtaW4sIG1lZGlhbiwgbWF4KSBh
bmQgZXZhbHVhdGUKKy8vIHRoZSBwZXJjZW50YWdlIG9mIHBlcmZlY3QgaGl0cyB1c2luZyB0aGUg
ZGVidWcgQVBJLgordGVtcGxhdGUgPGNsYXNzIFRhYmxlLCBjbGFzcyBBZGRGbj4KK3N0ZDo6dmVj
dG9yPGRvdWJsZT4gQ29sbGVjdFBlcmZlY3RSYXRpb3MoVGFibGUgdCwgQWRkRm4gYWRkKSB7Cisg
IHVzaW5nIEtleSA9IHR5cGVuYW1lIFRhYmxlOjprZXlfdHlwZTsKKworICAvLyBGaXJzdCwgZmls
bCBlbm91Z2ggdG8gaGF2ZSBhIGdvb2QgZGlzdHJpYnV0aW9uLgorICBjb25zdGV4cHIgc2l6ZV90
IGtNaW5TaXplID0gMTAwMDA7CisgIHN0ZDo6dmVjdG9yPEtleT4ga2V5czsKKyAgd2hpbGUgKHQu
c2l6ZSgpIDwga01pblNpemUpIGtleXMucHVzaF9iYWNrKGFkZCh0KSk7CisgIC8vIFRoZW4sIGlu
c2VydCB1bnRpbCB3ZSByZWFjaCBtaW4gbG9hZCBmYWN0b3IuCisgIGRvdWJsZSBsZiA9IHQubG9h
ZF9mYWN0b3IoKTsKKyAgd2hpbGUgKGxmIDw9IHQubG9hZF9mYWN0b3IoKSkga2V5cy5wdXNoX2Jh
Y2soYWRkKHQpKTsKKworICAvLyBXZSBhcmUgbm93IGF0IG1pbiBsb2FkIGZhY3Rvci4gVGFrZSBh
IHNuYXBzaG90LgorICBzaXplX3QgcGVyZmVjdCA9IDA7CisgIGF1dG8gdXBkYXRlX3BlcmZlY3Qg
PSBbJl0oS2V5IGspIHsKKyAgICBwZXJmZWN0ICs9IEdldEhhc2h0YWJsZURlYnVnTnVtUHJvYmVz
KHQsIGspID09IDA7CisgIH07CisgIGZvciAoY29uc3QgYXV0byYgayA6IGtleXMpIHVwZGF0ZV9w
ZXJmZWN0KGspOworCisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gcGVyZmVjdF9yYXRpb3M7CisgIC8v
IEtlZXAgZ29pbmcgdW50aWwgd2UgaGl0IG1heCBsb2FkIGZhY3Rvci4KKyAgd2hpbGUgKHQubG9h
ZF9mYWN0b3IoKSA8IC42KSB7CisgICAgcGVyZmVjdF9yYXRpb3MucHVzaF9iYWNrKDEuMCAqIHBl
cmZlY3QgLyB0LnNpemUoKSk7CisgICAgdXBkYXRlX3BlcmZlY3QoYWRkKHQpKTsKKyAgfQorICB3
aGlsZSAodC5sb2FkX2ZhY3RvcigpID4gLjUpIHsKKyAgICBwZXJmZWN0X3JhdGlvcy5wdXNoX2Jh
Y2soMS4wICogcGVyZmVjdCAvIHQuc2l6ZSgpKTsKKyAgICB1cGRhdGVfcGVyZmVjdChhZGQodCkp
OworICB9CisgIHJldHVybiBwZXJmZWN0X3JhdGlvczsKK30KKworc3RkOjp2ZWN0b3I8c3RkOjpw
YWlyPGRvdWJsZSwgZG91YmxlPj4gU3RyaW5nVGFibGVQZWZlY3RSYXRpb3MoKSB7CisgIGNvbnN0
ZXhwciBib29sIGtSYW5kb21pemVzSW5zZXJ0cyA9CisjaWYgTkRFQlVHCisgICAgICBmYWxzZTsK
KyNlbHNlICAgLy8gTkRFQlVHCisgICAgICB0cnVlOworI2VuZGlmICAvLyBOREVCVUcKKworICAv
LyBUaGUgZWZmZWN0aXZlIGxvYWQgZmFjdG9yIGlzIGxhcmdlciBpbiBub24tb3B0IG1vZGUgYmVj
YXVzZSB3ZSBpbnNlcnQKKyAgLy8gZWxlbWVudHMgb3V0IG9mIG9yZGVyLgorICBzd2l0Y2ggKGNv
bnRhaW5lcl9pbnRlcm5hbDo6R3JvdXA6OmtXaWR0aCkgeworICAgIGNhc2UgODoKKyAgICAgIGlm
IChrUmFuZG9taXplc0luc2VydHMpIHsKKyAgICAgICAgcmV0dXJuIHt7MC45ODYsIDAuMDJ9LCB7
MC45NSwgMC4wMn0sIHswLjg5LCAwLjAyfX07CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1
cm4ge3swLjk5NSwgMC4wMX0sIHswLjk3LCAwLjAxfSwgezAuODksIDAuMDJ9fTsKKyAgICAgIH0K
KyAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRz
KSB7CisgICAgICAgIHJldHVybiB7ezAuOTczLCAwLjAxfSwgezAuOTY1LCAwLjAxfSwgezAuOTIs
IDAuMDJ9fTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiB7ezAuOTk1LCAwLjAwNX0s
IHswLjk5LCAwLjAwNX0sIHswLjk0LCAwLjAxfX07CisgICAgICB9CisgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgLy8gSWdub3JlIGFueXRoaW5nIGVsc2UuCisgICAgICByZXR1cm4g
e307CisgIH0KK30KKworLy8gVGhpcyBpcyBhbG1vc3QgYSBjaGFuZ2UgZGV0ZWN0b3IsIGJ1dCBp
dCBhbGxvd3MgdXMgdG8ga25vdyBob3cgd2UgYXJlCisvLyBhZmZlY3RpbmcgdGhlIHByb2JlIGRp
c3RyaWJ1dGlvbi4KK1RFU1QoVGFibGUsIEVmZmVjdGl2ZUxvYWRGYWN0b3JTdHJpbmdzKSB7Cisg
IHN0ZDo6dmVjdG9yPGRvdWJsZT4gcGVyZmVjdF9yYXRpb3MgPQorICAgICAgQ29sbGVjdFBlcmZl
Y3RSYXRpb3MoU3RyaW5nVGFibGUoKSwgW10oU3RyaW5nVGFibGUmIHQpIHsKKyAgICAgICAgcmV0
dXJuIHQuZW1wbGFjZShzdGQ6OnRvX3N0cmluZyh0LnNpemUoKSksICIiKS5maXJzdC0+Zmlyc3Q7
CisgICAgICB9KTsKKworICBhdXRvIHJhdGlvcyA9IFN0cmluZ1RhYmxlUGVmZWN0UmF0aW9zKCk7
CisgIGlmIChyYXRpb3MuZW1wdHkoKSkgcmV0dXJuOworCisgIEVYUEVDVF9USEFUKHBlcmZlY3Rf
cmF0aW9zLmZyb250KCksCisgICAgICAgICAgICAgIERvdWJsZU5lYXIocmF0aW9zWzBdLmZpcnN0
LCByYXRpb3NbMF0uc2Vjb25kKSk7CisgIEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zW3BlcmZl
Y3RfcmF0aW9zLnNpemUoKSAvIDJdLAorICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1sx
XS5maXJzdCwgcmF0aW9zWzFdLnNlY29uZCkpOworICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlv
cy5iYWNrKCksCisgICAgICAgICAgICAgIERvdWJsZU5lYXIocmF0aW9zWzJdLmZpcnN0LCByYXRp
b3NbMl0uc2Vjb25kKSk7Cit9CisKK3N0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJs
ZT4+IEludFRhYmxlUGVmZWN0UmF0aW9zKCkgeworICBjb25zdGV4cHIgYm9vbCBrUmFuZG9taXpl
c0luc2VydHMgPQorI2lmZGVmIE5ERUJVRworICAgICAgZmFsc2U7CisjZWxzZSAgIC8vIE5ERUJV
RworICAgICAgdHJ1ZTsKKyNlbmRpZiAgLy8gTkRFQlVHCisKKyAgLy8gVGhlIGVmZmVjdGl2ZSBs
b2FkIGZhY3RvciBpcyBsYXJnZXIgaW4gbm9uLW9wdCBtb2RlIGJlY2F1c2Ugd2UgaW5zZXJ0Cisg
IC8vIGVsZW1lbnRzIG91dCBvZiBvcmRlci4KKyAgc3dpdGNoIChjb250YWluZXJfaW50ZXJuYWw6
Okdyb3VwOjprV2lkdGgpIHsKKyAgICBjYXNlIDg6CisgICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNl
cnRzKSB7CisgICAgICAgIHJldHVybiB7ezAuOTksIDAuMDJ9LCB7MC45ODUsIDAuMDJ9LCB7MC45
NSwgMC4wNX19OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHt7MC45OSwgMC4wMX0s
IHswLjk5LCAwLjAxfSwgezAuOTUsIDAuMDJ9fTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAg
IGNhc2UgMTY6CisgICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7CisgICAgICAgIHJldHVy
biB7ezAuOTgsIDAuMDJ9LCB7MC45NzgsIDAuMDJ9LCB7MC45NiwgMC4wMn19OworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgcmV0dXJuIHt7MC45OTgsIDAuMDAzfSwgezAuOTk1LCAwLjAxfSwgezAu
OTc1LCAwLjAyfX07CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
Ly8gSWdub3JlIGFueXRoaW5nIGVsc2UuCisgICAgICByZXR1cm4ge307CisgIH0KK30KKworLy8g
VGhpcyBpcyBhbG1vc3QgYSBjaGFuZ2UgZGV0ZWN0b3IsIGJ1dCBpdCBhbGxvd3MgdXMgdG8ga25v
dyBob3cgd2UgYXJlCisvLyBhZmZlY3RpbmcgdGhlIHByb2JlIGRpc3RyaWJ1dGlvbi4KK1RFU1Qo
VGFibGUsIEVmZmVjdGl2ZUxvYWRGYWN0b3JJbnRzKSB7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4g
cGVyZmVjdF9yYXRpb3MgPSBDb2xsZWN0UGVyZmVjdFJhdGlvcygKKyAgICAgIEludFRhYmxlKCks
IFtdKEludFRhYmxlJiB0KSB7IHJldHVybiAqdC5lbXBsYWNlKHQuc2l6ZSgpKS5maXJzdDsgfSk7
CisKKyAgYXV0byByYXRpb3MgPSBJbnRUYWJsZVBlZmVjdFJhdGlvcygpOworICBpZiAocmF0aW9z
LmVtcHR5KCkpIHJldHVybjsKKworICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlvcy5mcm9udCgp
LAorICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1swXS5maXJzdCwgcmF0aW9zWzBdLnNl
Y29uZCkpOworICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlvc1twZXJmZWN0X3JhdGlvcy5zaXpl
KCkgLyAyXSwKKyAgICAgICAgICAgICAgRG91YmxlTmVhcihyYXRpb3NbMV0uZmlyc3QsIHJhdGlv
c1sxXS5zZWNvbmQpKTsKKyAgRVhQRUNUX1RIQVQocGVyZmVjdF9yYXRpb3MuYmFjaygpLAorICAg
ICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1syXS5maXJzdCwgcmF0aW9zWzJdLnNlY29uZCkp
OworfQorCisvLyBDb25maXJtIHRoYXQgd2UgYXNzZXJ0IGlmIHdlIHRyeSB0byBlcmFzZSgpIGVu
ZCgpLgorVEVTVChUYWJsZURlYXRoVGVzdCwgRXJhc2VPZkVuZEFzc2VydHMpIHsKKyAgLy8gVXNl
IGFuIGFzc2VydCB3aXRoIHNpZGUtZWZmZWN0cyB0byBmaWd1cmUgb3V0IGlmIHRoZXkgYXJlIGFj
dHVhbGx5IGVuYWJsZWQuCisgIGJvb2wgYXNzZXJ0X2VuYWJsZWQgPSBmYWxzZTsKKyAgYXNzZXJ0
KFsmXSgpIHsKKyAgICBhc3NlcnRfZW5hYmxlZCA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cisg
IH0oKSk7CisgIGlmICghYXNzZXJ0X2VuYWJsZWQpIHJldHVybjsKKworICBJbnRUYWJsZSB0Owor
ICAvLyBFeHRyYSBzaW1wbGUgInJlZ2V4cCIgYXMgcmVnZXhwIHN1cHBvcnQgaXMgaGlnaGx5IHZh
cmllZCBhY3Jvc3MgcGxhdGZvcm1zLgorICBjb25zdGV4cHIgY2hhciBrRGVhdGhNc2dbXSA9ICJp
dCAhPSBlbmQiOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHQuZXJhc2UodC5lbmQoKSks
IGtEZWF0aE1zZyk7Cit9CisKKyNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgorVEVTVChTYW5pdGl6
ZXIsIFBvaXNvbmluZ1VudXNlZCkgeworICBJbnRUYWJsZSB0OworICAvLyBJbnNlcnQgc29tZXRo
aW5nIHRvIGZvcmNlIGFuIGFsbG9jYXRpb24uCisgIGludDY0X3QmIHYxID0gKnQuaW5zZXJ0KDAp
LmZpcnN0OworCisgIC8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBzb21ldGhpbmcgdG8gdGVzdC4KKyAg
QVNTRVJUX0dUKHQuY2FwYWNpdHkoKSwgMSk7CisKKyAgaW50NjRfdCogc2xvdHMgPSBSYXdIYXNo
U2V0VGVzdE9ubHlBY2Nlc3M6OkdldFNsb3RzKHQpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHQuY2FwYWNpdHkoKTsgKytpKSB7CisgICAgRVhQRUNUX0VRKHNsb3RzICsgaSAhPSAmdjEsIF9f
YXNhbl9hZGRyZXNzX2lzX3BvaXNvbmVkKHNsb3RzICsgaSkpOworICB9Cit9CisKK1RFU1QoU2Fu
aXRpemVyLCBQb2lzb25pbmdPbkVyYXNlKSB7CisgIEludFRhYmxlIHQ7CisgIGludDY0X3QmIHYg
PSAqdC5pbnNlcnQoMCkuZmlyc3Q7CisKKyAgRVhQRUNUX0ZBTFNFKF9fYXNhbl9hZGRyZXNzX2lz
X3BvaXNvbmVkKCZ2KSk7CisgIHQuZXJhc2UoMCk7CisgIEVYUEVDVF9UUlVFKF9fYXNhbl9hZGRy
ZXNzX2lzX3BvaXNvbmVkKCZ2KSk7Cit9CisjZW5kaWYgIC8vIEFERFJFU1NfU0FOSVRJWkVSCisK
K30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90
ZXN0X2luc3RhbmNlX3RyYWNrZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9p
bnN0YW5jZV90cmFja2VyLmNjCmluZGV4IGZlMDBhY2E4ZmI5OGYxMjBmMjM1MjAyMzY5YjBiNWJl
ODc2ZDQ3NDcuLmIxOGUwYmI3YTFlYTVmZmZkYzk2MThmMWU3OTNiOGZmOTJlZDkwMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5jYwpA
QCAtMjEsNiArMjEsNyBAQCBpbnQgQmFzZUNvdW50ZWRJbnN0YW5jZTo6bnVtX2xpdmVfaW5zdGFu
Y2VzXyA9IDA7CiBpbnQgQmFzZUNvdW50ZWRJbnN0YW5jZTo6bnVtX21vdmVzXyA9IDA7CiBpbnQg
QmFzZUNvdW50ZWRJbnN0YW5jZTo6bnVtX2NvcGllc18gPSAwOwogaW50IEJhc2VDb3VudGVkSW5z
dGFuY2U6Om51bV9zd2Fwc18gPSAwOworaW50IEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9jb21w
YXJpc29uc18gPSAwOwogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdF9pbnRlcm5hbAogfSAgLy8gbmFt
ZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2lu
c3RhbmNlX3RyYWNrZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNl
X3RyYWNrZXIuaAppbmRleCBjZjhmM2E1MzFlNjIxMmZjYWExM2Q2NTM1MTcwYWY4NmJmZmE2OThh
Li5lYzQ1ZjU3NDAzN2ZjOGUwYjY5MzdiY2Q4ZmMxZjQyNzU2ZTA4MTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5oCkBAIC0yMiw4ICsy
Miw4IEBAIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSB0ZXN0X2ludGVybmFsIHsKIAogLy8g
QSB0eXBlIHRoYXQgY291bnRzIG51bWJlciBvZiBvY2N1cmVuY2VzIG9mIHRoZSB0eXBlLCB0aGUg
bGl2ZSBvY2N1cnJlbmNlcyBvZgotLy8gdGhlIHR5cGUsIGFzIHdlbGwgYXMgdGhlIG51bWJlciBv
ZiBjb3BpZXMsIG1vdmVzLCBhbmQgc3dhcHMgdGhhdCBoYXZlCi0vLyBvY2N1cnJlZCBvbiB0aGUg
dHlwZS4gVGhpcyBpcyB1c2VkIGFzIGEgYmFzZSBjbGFzcyBmb3IgdGhlIGNvcHlhYmxlLAorLy8g
dGhlIHR5cGUsIGFzIHdlbGwgYXMgdGhlIG51bWJlciBvZiBjb3BpZXMsIG1vdmVzLCBzd2Fwcywg
YW5kIGNvbXBhcmlzb25zIHRoYXQKKy8vIGhhdmUgb2NjdXJyZWQgb24gdGhlIHR5cGUuIFRoaXMg
aXMgdXNlZCBhcyBhIGJhc2UgY2xhc3MgZm9yIHRoZSBjb3B5YWJsZSwKIC8vIGNvcHlhYmxlK21v
dmFibGUsIGFuZCBtb3ZhYmxlIHR5cGVzIGJlbG93IHRoYXQgYXJlIHVzZWQgaW4gYWN0dWFsIHRl
c3RzLiBVc2UKIC8vIEluc3RhbmNlVHJhY2tlciBpbiB0ZXN0cyB0byB0cmFjayB0aGUgbnVtYmVy
IG9mIGluc3RhbmNlcy4KIGNsYXNzIEJhc2VDb3VudGVkSW5zdGFuY2UgewpAQCAtNjYsNiArNjYs
MzYgQEAgY2xhc3MgQmFzZUNvdW50ZWRJbnN0YW5jZSB7CiAgICAgcmV0dXJuICp0aGlzOwogICB9
CiAKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJhc2VDb3VudGVkSW5zdGFuY2UmIHgpIGNvbnN0
IHsKKyAgICArK251bV9jb21wYXJpc29uc187CisgICAgcmV0dXJuIHZhbHVlXyA9PSB4LnZhbHVl
XzsKKyAgfQorCisgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCYXNlQ291bnRlZEluc3RhbmNlJiB4
KSBjb25zdCB7CisgICAgKytudW1fY29tcGFyaXNvbnNfOworICAgIHJldHVybiB2YWx1ZV8gIT0g
eC52YWx1ZV87CisgIH0KKworICBib29sIG9wZXJhdG9yPChjb25zdCBCYXNlQ291bnRlZEluc3Rh
bmNlJiB4KSBjb25zdCB7CisgICAgKytudW1fY29tcGFyaXNvbnNfOworICAgIHJldHVybiB2YWx1
ZV8gPCB4LnZhbHVlXzsKKyAgfQorCisgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IEJhc2VDb3VudGVk
SW5zdGFuY2UmIHgpIGNvbnN0IHsKKyAgICArK251bV9jb21wYXJpc29uc187CisgICAgcmV0dXJu
IHZhbHVlXyA+IHgudmFsdWVfOworICB9CisKKyAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IEJhc2VD
b3VudGVkSW5zdGFuY2UmIHgpIGNvbnN0IHsKKyAgICArK251bV9jb21wYXJpc29uc187CisgICAg
cmV0dXJuIHZhbHVlXyA8PSB4LnZhbHVlXzsKKyAgfQorCisgIGJvb2wgb3BlcmF0b3I+PShjb25z
dCBCYXNlQ291bnRlZEluc3RhbmNlJiB4KSBjb25zdCB7CisgICAgKytudW1fY29tcGFyaXNvbnNf
OworICAgIHJldHVybiB2YWx1ZV8gPj0geC52YWx1ZV87CisgIH0KKwogICBpbnQgdmFsdWUoKSBj
b25zdCB7CiAgICAgaWYgKCFpc19saXZlXykgc3RkOjphYm9ydCgpOwogICAgIHJldHVybiB2YWx1
ZV87CkBAIC0xMDgsNiArMTM4LDkgQEAgY2xhc3MgQmFzZUNvdW50ZWRJbnN0YW5jZSB7CiAKICAg
Ly8gTnVtYmVyIG9mIHRpbWVzIHRoYXQgQmFzZUNvdW50ZWRJbnN0YW5jZSBvYmplY3RzIHdlcmUg
c3dhcHBlZC4KICAgc3RhdGljIGludCBudW1fc3dhcHNfOworCisgIC8vIE51bWJlciBvZiB0aW1l
cyB0aGF0IEJhc2VDb3VudGVkSW5zdGFuY2Ugb2JqZWN0cyB3ZXJlIGNvbXBhcmVkLgorICBzdGF0
aWMgaW50IG51bV9jb21wYXJpc29uc187CiB9OwogCiAvLyBIZWxwZXIgdG8gdHJhY2sgdGhlIEJh
c2VDb3VudGVkSW5zdGFuY2UgaW5zdGFuY2UgY291bnRlcnMuIEV4cGVjdHMgdGhhdCB0aGUKQEAg
LTE1MiwxMyArMTg1LDIxIEBAIGNsYXNzIEluc3RhbmNlVHJhY2tlciB7CiAgIC8vIGNvbnN0cnVj
dGlvbiBvciB0aGUgbGFzdCBjYWxsIHRvIFJlc2V0Q29waWVzTW92ZXNTd2FwcygpLgogICBpbnQg
c3dhcHMoKSBjb25zdCB7IHJldHVybiBCYXNlQ291bnRlZEluc3RhbmNlOjpudW1fc3dhcHNfIC0g
c3RhcnRfc3dhcHNfOyB9CiAKLSAgLy8gUmVzZXRzIHRoZSBiYXNlIHZhbHVlcyBmb3IgbW92ZXMs
IGNvcGllcyBhbmQgc3dhcHMgdG8gdGhlIGN1cnJlbnQgdmFsdWVzLAotICAvLyBzbyB0aGF0IHN1
YnNlcXVlbnQgR2V0KigpIGNhbGxzIGZvciBtb3ZlcywgY29waWVzIGFuZCBzd2FwcyB3aWxsIGNv
bXBhcmUgdG8KLSAgLy8gdGhlIHNpdHVhdGlvbiBhdCB0aGUgcG9pbnQgb2YgdGhpcyBjYWxsLgor
ICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY29tcGFyaXNvbnMgb24gQmFzZUNvdW50ZWRJbnN0
YW5jZSBvYmplY3RzIHNpbmNlCisgIC8vIGNvbnN0cnVjdGlvbiBvciB0aGUgbGFzdCBjYWxsIHRv
IFJlc2V0Q29waWVzTW92ZXNTd2FwcygpLgorICBpbnQgY29tcGFyaXNvbnMoKSBjb25zdCB7Cisg
ICAgcmV0dXJuIEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9jb21wYXJpc29uc18gLSBzdGFydF9j
b21wYXJpc29uc187CisgIH0KKworICAvLyBSZXNldHMgdGhlIGJhc2UgdmFsdWVzIGZvciBtb3Zl
cywgY29waWVzLCBjb21wYXJpc29ucywgYW5kIHN3YXBzIHRvIHRoZQorICAvLyBjdXJyZW50IHZh
bHVlcywgc28gdGhhdCBzdWJzZXF1ZW50IEdldCooKSBjYWxscyBmb3IgbW92ZXMsIGNvcGllcywK
KyAgLy8gY29tcGFyaXNvbnMsIGFuZCBzd2FwcyB3aWxsIGNvbXBhcmUgdG8gdGhlIHNpdHVhdGlv
biBhdCB0aGUgcG9pbnQgb2YgdGhpcworICAvLyBjYWxsLgogICB2b2lkIFJlc2V0Q29waWVzTW92
ZXNTd2FwcygpIHsKICAgICBzdGFydF9tb3Zlc18gPSBCYXNlQ291bnRlZEluc3RhbmNlOjpudW1f
bW92ZXNfOwogICAgIHN0YXJ0X2NvcGllc18gPSBCYXNlQ291bnRlZEluc3RhbmNlOjpudW1fY29w
aWVzXzsKICAgICBzdGFydF9zd2Fwc18gPSBCYXNlQ291bnRlZEluc3RhbmNlOjpudW1fc3dhcHNf
OworICAgIHN0YXJ0X2NvbXBhcmlzb25zXyA9IEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9jb21w
YXJpc29uc187CiAgIH0KIAogIHByaXZhdGU6CkBAIC0xNjcsNiArMjA4LDcgQEAgY2xhc3MgSW5z
dGFuY2VUcmFja2VyIHsKICAgaW50IHN0YXJ0X21vdmVzXzsKICAgaW50IHN0YXJ0X2NvcGllc187
CiAgIGludCBzdGFydF9zd2Fwc187CisgIGludCBzdGFydF9jb21wYXJpc29uc187CiB9OwogCiAv
LyBDb3B5YWJsZSwgbm90IG1vdmFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyX3Rlc3QuY2MKaW5kZXggOWVmYjY3NzFjZjA4NmRi
MTZmZWYzOTQ2MGM1OTE5MjFlY2Q1ZjY5MS4uMGFlNTc2MzZkZjIxMzM4OTc5MjEwMzk1YmIzOTk2
YmJkOGM5N2I4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5z
dGFuY2VfdHJhY2tlcl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0
X2luc3RhbmNlX3RyYWNrZXJfdGVzdC5jYwpAQCAtMTU3LDQgKzE1NywyNiBAQCBURVNUKFRlc3RJ
bnN0YW5jZVRyYWNrZXIsIEV4aXN0aW5nSW5zdGFuY2VzKSB7CiAgIEVYUEVDVF9FUSgxLCB0cmFj
a2VyLm1vdmVzKCkpOwogfQogCitURVNUKFRlc3RJbnN0YW5jZVRyYWNrZXIsIENvbXBhcmlzb25z
KSB7CisgIEluc3RhbmNlVHJhY2tlciB0cmFja2VyOworICBNb3ZhYmxlT25seUluc3RhbmNlIG9u
ZSgxKSwgdHdvKDIpOworCisgIEVYUEVDVF9FUSgwLCB0cmFja2VyLmNvbXBhcmlzb25zKCkpOwor
ICBFWFBFQ1RfRkFMU0Uob25lID09IHR3byk7CisgIEVYUEVDVF9FUSgxLCB0cmFja2VyLmNvbXBh
cmlzb25zKCkpOworICBFWFBFQ1RfVFJVRShvbmUgIT0gdHdvKTsKKyAgRVhQRUNUX0VRKDIsIHRy
YWNrZXIuY29tcGFyaXNvbnMoKSk7CisgIEVYUEVDVF9UUlVFKG9uZSA8IHR3byk7CisgIEVYUEVD
VF9FUSgzLCB0cmFja2VyLmNvbXBhcmlzb25zKCkpOworICBFWFBFQ1RfRkFMU0Uob25lID4gdHdv
KTsKKyAgRVhQRUNUX0VRKDQsIHRyYWNrZXIuY29tcGFyaXNvbnMoKSk7CisgIEVYUEVDVF9UUlVF
KG9uZSA8PSB0d28pOworICBFWFBFQ1RfRVEoNSwgdHJhY2tlci5jb21wYXJpc29ucygpKTsKKyAg
RVhQRUNUX0ZBTFNFKG9uZSA+PSB0d28pOworICBFWFBFQ1RfRVEoNiwgdHJhY2tlci5jb21wYXJp
c29ucygpKTsKKworICB0cmFja2VyLlJlc2V0Q29waWVzTW92ZXNTd2FwcygpOworICBFWFBFQ1Rf
RVEoMCwgdHJhY2tlci5jb21wYXJpc29ucygpKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdHJhY2tlZC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL3RyYWNrZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDE0YWYwMzEzOGQzZWZkNjYyMzdi
Nzk3ZjNlZjczYzAwM2M4ODE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL3RyYWNrZWQuaApAQCAtMCwwICsxLDc4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1RSQUNL
RURfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVFJBQ0tFRF9IXworCisjaW5j
bHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CisK
K25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCisvLyBB
IGNsYXNzIHRoYXQgdHJhY2tzIGl0cyBjb3BpZXMgYW5kIG1vdmVzIHNvIHRoYXQgaXQgY2FuIGJl
IHF1ZXJpZWQgaW4gdGVzdHMuCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIFRyYWNrZWQgewor
IHB1YmxpYzoKKyAgVHJhY2tlZCgpIHt9CisgIC8vIE5PTElOVE5FWFRMSU5FKHJ1bnRpbWUvZXhw
bGljaXQpCisgIFRyYWNrZWQoY29uc3QgVCYgdmFsKSA6IHZhbF8odmFsKSB7fQorICBUcmFja2Vk
KGNvbnN0IFRyYWNrZWQmIHRoYXQpCisgICAgICA6IHZhbF8odGhhdC52YWxfKSwKKyAgICAgICAg
bnVtX21vdmVzXyh0aGF0Lm51bV9tb3Zlc18pLAorICAgICAgICBudW1fY29waWVzXyh0aGF0Lm51
bV9jb3BpZXNfKSB7CisgICAgKysoKm51bV9jb3BpZXNfKTsKKyAgfQorICBUcmFja2VkKFRyYWNr
ZWQmJiB0aGF0KQorICAgICAgOiB2YWxfKHN0ZDo6bW92ZSh0aGF0LnZhbF8pKSwKKyAgICAgICAg
bnVtX21vdmVzXyhzdGQ6Om1vdmUodGhhdC5udW1fbW92ZXNfKSksCisgICAgICAgIG51bV9jb3Bp
ZXNfKHN0ZDo6bW92ZSh0aGF0Lm51bV9jb3BpZXNfKSkgeworICAgICsrKCpudW1fbW92ZXNfKTsK
KyAgfQorICBUcmFja2VkJiBvcGVyYXRvcj0oY29uc3QgVHJhY2tlZCYgdGhhdCkgeworICAgIHZh
bF8gPSB0aGF0LnZhbF87CisgICAgbnVtX21vdmVzXyA9IHRoYXQubnVtX21vdmVzXzsKKyAgICBu
dW1fY29waWVzXyA9IHRoYXQubnVtX2NvcGllc187CisgICAgKysoKm51bV9jb3BpZXNfKTsKKyAg
fQorICBUcmFja2VkJiBvcGVyYXRvcj0oVHJhY2tlZCYmIHRoYXQpIHsKKyAgICB2YWxfID0gc3Rk
Ojptb3ZlKHRoYXQudmFsXyk7CisgICAgbnVtX21vdmVzXyA9IHN0ZDo6bW92ZSh0aGF0Lm51bV9t
b3Zlc18pOworICAgIG51bV9jb3BpZXNfID0gc3RkOjptb3ZlKHRoYXQubnVtX2NvcGllc18pOwor
ICAgICsrKCpudW1fbW92ZXNfKTsKKyAgfQorCisgIGNvbnN0IFQmIHZhbCgpIGNvbnN0IHsgcmV0
dXJuIHZhbF87IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYWNrZWQmIGEs
IGNvbnN0IFRyYWNrZWQmIGIpIHsKKyAgICByZXR1cm4gYS52YWxfID09IGIudmFsXzsKKyAgfQor
ICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRyYWNrZWQmIGEsIGNvbnN0IFRyYWNrZWQm
IGIpIHsKKyAgICByZXR1cm4gIShhID09IGIpOworICB9CisKKyAgc2l6ZV90IG51bV9jb3BpZXMo
KSB7IHJldHVybiAqbnVtX2NvcGllc187IH0KKyAgc2l6ZV90IG51bV9tb3ZlcygpIHsgcmV0dXJu
ICpudW1fbW92ZXNfOyB9CisKKyBwcml2YXRlOgorICBUIHZhbF87CisgIHN0ZDo6c2hhcmVkX3B0
cjxzaXplX3Q+IG51bV9tb3Zlc18gPSBzdGQ6Om1ha2Vfc2hhcmVkPHNpemVfdD4oMCk7CisgIHN0
ZDo6c2hhcmVkX3B0cjxzaXplX3Q+IG51bV9jb3BpZXNfID0gc3RkOjptYWtlX3NoYXJlZDxzaXpl
X3Q+KDApOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8g
bmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9UUkFD
S0VEX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21h
cF9jb25zdHJ1Y3Rvcl90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVk
X21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZmYjY0NmNiMjY0YTY1ZWZhNGJl
Y2NkZWYyY2EyOGUxNGU5YTVkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QuaApAQCAtMCwwICsxLDQwNCBA
QAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNM
X0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfTUFQX0NPTlNUUlVDVE9SX1RFU1RfSF8KKyNk
ZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX01BUF9DT05TVFJVQ1RPUl9U
RVNUX0hfCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5j
bHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
ImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIKKyNpbmNs
dWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nLmgiCisKK25h
bWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCit0ZW1wbGF0
ZSA8Y2xhc3MgVW5vcmRNYXA+CitjbGFzcyBDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHt9OworCitUWVBFRF9URVNUX0NBU0VfUChDb25zdHJ1Y3RvclRlc3QpOworCitU
WVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBOb0FyZ3MpIHsKKyAgVHlwZVBhcmFtIG07Cisg
IEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5v
cmRlcmVkRWxlbWVudHNBcmUoKSk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3Qs
IEJ1Y2tldENvdW50KSB7CisgIFR5cGVQYXJhbSBtKDEyMyk7CisgIEVYUEVDVF9UUlVFKG0uZW1w
dHkoKSk7CisgIEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUo
KSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworfQorCitUWVBFRF9URVNU
X1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2gpIHsKKyAgdXNpbmcgSCA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICBIIGhhc2hlcjsKKyAgVHlwZVBhcmFtIG0oMTIzLCBo
YXNoZXIpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIGhhc2hlcik7CisgIEVYUEVD
VF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRlcmVk
RWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworfQor
CitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2hFcXVhbCkgewor
ICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBl
bmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIFR5
cGVQYXJhbSBtKDEyMywgaGFzaGVyLCBlcXVhbCk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rp
b24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIGVxdWFsKTsKKyAgRVhQRUNU
X1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRF
bGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisK
K1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaEVxdWFsQWxsb2Mp
IHsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0g
dHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBl
UGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxv
YygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIEVYUEVD
VF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCks
IGVxdWFsKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVD
VF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRlcmVk
RWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworfQor
CitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEFsbG9jKSB7CisjaWYg
ZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hY
MTcpCisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBB
IGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgxMjMsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uZ2V0
X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVD
VF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9H
RShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25z
dHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaEFsbG9jKSB7CisjaWYgZGVmaW5lZChVTk9SREVS
RURfTUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCisgIHVzaW5nIEgg
PSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQ
YXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBBIGFsbG9jKDApOworICBUeXBl
UGFyYW0gbSgxMjMsIGhhc2hlciwgYWxsb2MpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9u
KCksIGhhc2hlcik7CisgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBF
WFBFQ1RfVFJVRShtLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChtLCA6OnRlc3Rpbmc6OlVub3Jk
ZXJlZEVsZW1lbnRzQXJlKCkpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsK
KyNlbmRpZgorfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRBbGxvYykg
eworI2lmIEFCU0xfVU5PUkRFUkVEX1NVUFBPUlRTX0FMTE9DX0NUT1JTCisgIHVzaW5nIEEgPSB0
eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBBIGFsbG9jKDApOworICBUeXBl
UGFyYW0gbShhbGxvYyk7CisgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOwor
ICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChtLCA6OnRlc3Rpbmc6OlVu
b3JkZXJlZEVsZW1lbnRzQXJlKCkpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1
Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoRXF1YWxBbGxvYykgeworICB1c2luZyBU
ID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0g
dHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFy
YW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9y
X3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBzdGQ6OnZl
Y3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFs
dWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4o
KSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCksIDEyMywgaGFz
aGVyLCBlcXVhbCwgYWxsb2MpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIGhhc2hl
cik7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBlcXVhbCk7CisgIEVYUEVDVF9FUShtLmdldF9h
bGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpV
bm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBFWFBFQ1RfR0UobS5idWNrZXRf
Y291bnQoKSwgMTIzKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJ
dGVyYXRvckJ1Y2tldEFsbG9jKSB7CisjaWYgZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE0KSB8
fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFs
OjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFy
YW06OmFsbG9jYXRvcl90eXBlOworICBBIGFsbG9jKDApOworICBzdGQ6OnZlY3RvcjxUPiB2YWx1
ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwgMTAsCisg
ICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQ
YXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCksIDEyMywgYWxsb2MpOworICBFWFBF
Q1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RIQVQoaXRlbXMobSks
IDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNU
X0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENv
bnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvYykgeworI2lmIGRlZmlu
ZWQoVU5PUkRFUkVEX01BUF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE3KQor
ICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1
c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEEgPSB0eXBlbmFt
ZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgQSBhbGxvYygwKTsK
KyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2lu
c2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgp
LCAxMjMsIGhhc2hlciwgYWxsb2MpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIGhh
c2hlcik7CisgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1Rf
VEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVl
cykpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKKyNlbmRpZgorfQorCitU
WVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKKyAgdXNpbmcg
VCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9
IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRv
cl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBh
cmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IDEwOyArK2kpIG0uaW5zZXJ0KGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkpOwor
ICBUeXBlUGFyYW0gbihtKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBuLmhhc2hf
ZnVuY3Rpb24oKSk7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBuLmtleV9lcSgpKTsKKyAgRVhQ
RUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBuLmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVDVF9F
UShtLCBuKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVj
dG9yQWxsb2MpIHsKKyNpZiBBQlNMX1VOT1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUworICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2lu
ZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBU
eXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxs
b2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBU
eXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgIT0gMTA7ICsraSkgbS5pbnNlcnQoaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCko
KSk7CisgIFR5cGVQYXJhbSBuKG0sIEEoMTEpKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlv
bigpLCBuLmhhc2hfZnVuY3Rpb24oKSk7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBuLmtleV9l
cSgpKTsKKyAgRVhQRUNUX05FKG0uZ2V0X2FsbG9jYXRvcigpLCBuLmdldF9hbGxvY2F0b3IoKSk7
CisgIEVYUEVDVF9FUShtLCBuKTsKKyNlbmRpZgorfQorCisvLyBUT0RPKGFsa2lzKTogVGVzdCBu
b24tcHJvcGFnYXRpbmcgYWxsb2NhdG9ycyBvbiBjb3B5IGNvbnN0cnVjdG9ycy4KKworVFlQRURf
VEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92ZUNvbnN0cnVjdG9yKSB7CisgIHVzaW5nIFQgPSBo
YXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBl
bmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlw
ZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBt
KDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSAx
MDsgKytpKSBtLmluc2VydChoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpKTsKKyAgVHlw
ZVBhcmFtIHQobSk7CisgIFR5cGVQYXJhbSBuKHN0ZDo6bW92ZSh0KSk7CisgIEVYUEVDVF9FUSht
Lmhhc2hfZnVuY3Rpb24oKSwgbi5oYXNoX2Z1bmN0aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlf
ZXEoKSwgbi5rZXlfZXEoKSk7CisgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgbi5nZXRf
YWxsb2NhdG9yKCkpOworICBFWFBFQ1RfRVEobSwgbik7Cit9CisKK1RZUEVEX1RFU1RfUChDb25z
dHJ1Y3RvclRlc3QsIE1vdmVDb25zdHJ1Y3RvckFsbG9jKSB7CisjaWYgQUJTTF9VTk9SREVSRURf
U1VQUE9SVFNfQUxMT0NfQ1RPUlMKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRl
ZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVy
OworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEg
PSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBl
cXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsLCBh
bGxvYyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IDEwOyArK2kpIG0uaW5zZXJ0KGhhc2hf
aW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkpOworICBUeXBlUGFyYW0gdChtKTsKKyAgVHlwZVBh
cmFtIG4oc3RkOjptb3ZlKHQpLCBBKDEpKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigp
LCBuLmhhc2hfZnVuY3Rpb24oKSk7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBuLmtleV9lcSgp
KTsKKyAgRVhQRUNUX05FKG0uZ2V0X2FsbG9jYXRvcigpLCBuLmdldF9hbGxvY2F0b3IoKSk7Cisg
IEVYUEVDVF9FUShtLCBuKTsKKyNlbmRpZgorfQorCisvLyBUT0RPKGFsa2lzKTogVGVzdCBub24t
cHJvcGFnYXRpbmcgYWxsb2NhdG9ycyBvbiBtb3ZlIGNvbnN0cnVjdG9ycy4KKworVFlQRURfVEVT
VF9QKENvbnN0cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEVxdWFsQWxsb2Mp
IHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsK
KyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgc3RkOjppbml0aWFsaXplcl9s
aXN0PFQ+IHZhbHVlcyA9IHtnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCl9OworICB1
c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFt
ZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOwor
ICBUeXBlUGFyYW0gbSh2YWx1ZXMsIDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBFWFBF
Q1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIGhhc2hlcik7CisgIEVYUEVDVF9FUShtLmtleV9lcSgp
LCBlcXVhbCk7CisgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBF
Q1RfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZh
bHVlcykpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKK30KKworVFlQRURf
VEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2MpIHsKKyNp
ZiBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX01BUF9D
WFgxNykKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFt
PjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxU
PiB2YWx1ZXMgPSB7Z2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpfTsKKyAgQSBhbGxv
YygwKTsKKyAgVHlwZVBhcmFtIG0odmFsdWVzLCAxMjMsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0u
Z2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rp
bmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CisgIEVYUEVDVF9HRShtLmJ1
Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3Rv
clRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvYykgeworI2lmIGRlZmluZWQoVU5P
UkRFUkVEX01BUF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE3KQorICB1c2lu
ZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBI
ID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBl
UGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgQSBhbGxvYygwKTsKKyAgaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgc3RkOjppbml0aWFsaXplcl9saXN0PFQ+
IHZhbHVlcyA9IHtnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCl9OworICBUeXBlUGFy
YW0gbSh2YWx1ZXMsIDEyMywgaGFzaGVyLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVu
Y3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7
CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJl
QXJyYXkodmFsdWVzKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2Vu
ZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnQpIHsKKyAg
dXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNp
bmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUg
VHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFs
bG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAg
aGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgVHlwZVBhcmFtIG0oe2dlbigpLCBn
ZW4oKSwgZ2VuKCl9LCAxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgVHlwZVBhcmFtIG47
CisgIG4gPSBtOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIG4uaGFzaF9mdW5jdGlv
bigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkpOworICBFWFBFQ1RfRVEo
bSwgbik7Cit9CisKKy8vIFRPRE8oYWxraXMpOiBUZXN0IFtub24tXXByb3BhZ2F0aW5nIGFsbG9j
YXRvcnMgb24gbW92ZS9jb3B5IGFzc2lnbm1lbnRzCisvLyAoaXQgZGVwZW5kcyBvbiB0cmFpdHMp
LgorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQXNzaWdubWVudCkgeworICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2lu
ZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBU
eXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxs
b2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBo
YXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBUeXBlUGFyYW0gbSh7Z2VuKCksIGdl
bigpLCBnZW4oKX0sIDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBUeXBlUGFyYW0gdCht
KTsKKyAgVHlwZVBhcmFtIG47CisgIG4gPSBzdGQ6Om1vdmUodCk7CisgIEVYUEVDVF9FUShtLmhh
c2hfZnVuY3Rpb24oKSwgbi5oYXNoX2Z1bmN0aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlfZXEo
KSwgbi5rZXlfZXEoKSk7CisgIEVYUEVDVF9FUShtLCBuKTsKK30KKworVFlQRURfVEVTVF9QKENv
bnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudEZyb21Jbml0aWFsaXplckxpc3QpIHsKKyAgdXNpbmcg
VCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgaGFzaF9pbnRl
cm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVl
cyA9IHtnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCl9OworICBUeXBlUGFyYW0gbTsK
KyAgbSA9IHZhbHVlczsKKyAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRl
cmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGluZykgeworICB1c2luZyBUID0gaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0b3I8VD4gZ2VuOworICBUeXBlUGFyYW0gbSh7Z2VuKCksIGdlbigpLCBnZW4oKX0pOwor
ICBUeXBlUGFyYW0gbih7Z2VuKCl9KTsKKyAgbiA9IG07CisgIEVYUEVDVF9FUShtLCBuKTsKK30K
KworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92ZUFzc2lnbm1lbnRPdmVyd3JpdGVz
RXhpc3RpbmcpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlw
ZVBhcmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgVHlwZVBhcmFt
IG0oe2dlbigpLCBnZW4oKSwgZ2VuKCl9KTsKKyAgVHlwZVBhcmFtIHQobSk7CisgIFR5cGVQYXJh
bSBuKHtnZW4oKX0pOworICBuID0gc3RkOjptb3ZlKHQpOworICBFWFBFQ1RfRVEobSwgbik7Cit9
CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6
ZXJMaXN0T3ZlcndyaXRlc0V4aXN0aW5nKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBn
ZW47CisgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1ZXMgPSB7Z2VuKCksIGdlbigpLCBn
ZW4oKSwgZ2VuKCksIGdlbigpfTsKKyAgVHlwZVBhcmFtIG07CisgIG0gPSB2YWx1ZXM7CisgIEVY
UEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
dmFsdWVzKSk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnRP
blNlbGYpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBh
cmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgc3RkOjppbml0aWFs
aXplcl9saXN0PFQ+IHZhbHVlcyA9IHtnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCl9
OworICBUeXBlUGFyYW0gbSh2YWx1ZXMpOworICBtID0gKiZtOyAgLy8gQXZvaWQgLVdzZWxmLWFz
c2lnbgorICBFWFBFQ1RfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50
c0FyZUFycmF5KHZhbHVlcykpOworfQorCisvLyBXZSBjYW5ub3QgdGVzdCBzZWxmIG1vdmUgYXMg
c3RhbmRhcmQgc3RhdGVzIHRoYXQgaXQgbGVhdmVzIHN0YW5kYXJkCisvLyBjb250YWluZXJzIGlu
IHVuc3BlY2lmaWVkIHN0YXRlIChhbmQgaW4gcHJhY3RpY2UgaW4gY2F1c2VzIG1lbW9yeS1sZWFr
CisvLyBhY2NvcmRpbmcgdG8gaGVhcC1jaGVja2VyISkuCisKK1JFR0lTVEVSX1RZUEVEX1RFU1Rf
Q0FTRV9QKAorICAgIENvbnN0cnVjdG9yVGVzdCwgTm9BcmdzLCBCdWNrZXRDb3VudCwgQnVja2V0
Q291bnRIYXNoLCBCdWNrZXRDb3VudEhhc2hFcXVhbCwKKyAgICBCdWNrZXRDb3VudEhhc2hFcXVh
bEFsbG9jLCBCdWNrZXRDb3VudEFsbG9jLCBCdWNrZXRDb3VudEhhc2hBbGxvYywKKyAgICBCdWNr
ZXRBbGxvYywgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hFcXVhbEFsbG9jLCBJbnB1dEl0ZXJhdG9y
QnVja2V0QWxsb2MsCisgICAgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvYywgQ29weUNvbnN0
cnVjdG9yLCBDb3B5Q29uc3RydWN0b3JBbGxvYywKKyAgICBNb3ZlQ29uc3RydWN0b3IsIE1vdmVD
b25zdHJ1Y3RvckFsbG9jLCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoRXF1YWxBbGxvYywKKyAg
ICBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvYywgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFs
bG9jLCBBc3NpZ25tZW50LAorICAgIE1vdmVBc3NpZ25tZW50LCBBc3NpZ25tZW50RnJvbUluaXRp
YWxpemVyTGlzdCwKKyAgICBBc3NpZ25tZW50T3ZlcndyaXRlc0V4aXN0aW5nLCBNb3ZlQXNzaWdu
bWVudE92ZXJ3cml0ZXNFeGlzdGluZywKKyAgICBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlz
dE92ZXJ3cml0ZXNFeGlzdGluZywgQXNzaWdubWVudE9uU2VsZik7CisKK30gIC8vIG5hbWVzcGFj
ZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisjZW5kaWYgIC8vIEFC
U0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9NQVBfQ09OU1RSVUNUT1JfVEVTVF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3Vw
X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90
ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWYxYjZiNDg5YjMwMWViOWZhZGQxYmY4NDkxOWNhZDYzN2M5YWI4
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRf
bWFwX2xvb2t1cF90ZXN0LmgKQEAgLTAsMCArMSwxMTQgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRo
ZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5P
UkRFUkVEX01BUF9MT09LVVBfVEVTVF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5B
TF9VTk9SREVSRURfTUFQX0xPT0tVUF9URVNUX0hfCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFt
ZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBVbm9yZE1hcD4K
K2NsYXNzIExvb2t1cFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitUWVBFRF9U
RVNUX0NBU0VfUChMb29rdXBUZXN0KTsKKworVFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIEF0KSB7
CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47Cisg
IHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNl
cnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVy
YXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG0odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7
CisgIGZvciAoY29uc3QgYXV0byYgcCA6IHZhbHVlcykgeworICAgIGNvbnN0IGF1dG8mIHZhbCA9
IG0uYXQocC5maXJzdCk7CisgICAgRVhQRUNUX0VRKHAuc2Vjb25kLCB2YWwpIDw8IDo6dGVzdGlu
Zzo6UHJpbnRUb1N0cmluZyhwLmZpcnN0KTsKKyAgfQorfQorCitUWVBFRF9URVNUX1AoTG9va3Vw
VGVzdCwgT3BlcmF0b3JCcmFja2V0KSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5l
cmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIFYgPSB0eXBlbmFtZSBUeXBlUGFyYW06Om1h
cHBlZF90eXBlOworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihz
dGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2lu
dGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtOworICBmb3IgKGNvbnN0IGF1
dG8mIHAgOiB2YWx1ZXMpIHsKKyAgICBhdXRvJiB2YWwgPSBtW3AuZmlyc3RdOworICAgIEVYUEVD
VF9FUShWKCksIHZhbCkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHAuZmlyc3QpOworICAg
IHZhbCA9IHAuc2Vjb25kOworICB9CisgIGZvciAoY29uc3QgYXV0byYgcCA6IHZhbHVlcykKKyAg
ICBFWFBFQ1RfRVEocC5zZWNvbmQsIG1bcC5maXJzdF0pIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZyhwLmZpcnN0KTsKK30KKworVFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIENvdW50KSB7Cisg
IHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0
ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRl
cih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRv
cjxUPigpKTsKKyAgVHlwZVBhcmFtIG07CisgIGZvciAoY29uc3QgYXV0byYgcCA6IHZhbHVlcykK
KyAgICBFWFBFQ1RfRVEoMCwgbS5jb3VudChwLmZpcnN0KSkgPDwgOjp0ZXN0aW5nOjpQcmludFRv
U3RyaW5nKHAuZmlyc3QpOworICBtLmluc2VydCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgp
KTsKKyAgZm9yIChjb25zdCBhdXRvJiBwIDogdmFsdWVzKQorICAgIEVYUEVDVF9FUSgxLCBtLmNv
dW50KHAuZmlyc3QpKSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcocC5maXJzdCk7Cit9CisK
K1RZUEVEX1RFU1RfUChMb29rdXBUZXN0LCBGaW5kKSB7CisgIHVzaW5nIHN0ZDo6Z2V0OworICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6
OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIo
dmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8
VD4oKSk7CisgIFR5cGVQYXJhbSBtOworICBmb3IgKGNvbnN0IGF1dG8mIHAgOiB2YWx1ZXMpCisg
ICAgRVhQRUNUX1RSVUUobS5lbmQoKSA9PSBtLmZpbmQocC5maXJzdCkpCisgICAgICAgIDw8IDo6
dGVzdGluZzo6UHJpbnRUb1N0cmluZyhwLmZpcnN0KTsKKyAgbS5pbnNlcnQodmFsdWVzLmJlZ2lu
KCksIHZhbHVlcy5lbmQoKSk7CisgIGZvciAoY29uc3QgYXV0byYgcCA6IHZhbHVlcykgeworICAg
IGF1dG8gaXQgPSBtLmZpbmQocC5maXJzdCk7CisgICAgRVhQRUNUX1RSVUUobS5lbmQoKSAhPSBp
dCkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHAuZmlyc3QpOworICAgIEVYUEVDVF9FUShw
LnNlY29uZCwgZ2V0PDE+KCppdCkpIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhwLmZpcnN0
KTsKKyAgfQorfQorCitUWVBFRF9URVNUX1AoTG9va3VwVGVzdCwgRXF1YWxSYW5nZSkgeworICB1
c2luZyBzdGQ6OmdldDsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8
VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24o
c3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbTsKKyAgZm9yIChjb25zdCBh
dXRvJiBwIDogdmFsdWVzKSB7CisgICAgYXV0byByID0gbS5lcXVhbF9yYW5nZShwLmZpcnN0KTsK
KyAgICBBU1NFUlRfRVEoMCwgc3RkOjpkaXN0YW5jZShyLmZpcnN0LCByLnNlY29uZCkpOworICB9
CisgIG0uaW5zZXJ0KHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBmb3IgKGNvbnN0
IGF1dG8mIHAgOiB2YWx1ZXMpIHsKKyAgICBhdXRvIHIgPSBtLmVxdWFsX3JhbmdlKHAuZmlyc3Qp
OworICAgIEFTU0VSVF9FUSgxLCBzdGQ6OmRpc3RhbmNlKHIuZmlyc3QsIHIuc2Vjb25kKSk7Cisg
ICAgRVhQRUNUX0VRKHAuc2Vjb25kLCBnZXQ8MT4oKnIuZmlyc3QpKSA8PCA6OnRlc3Rpbmc6OlBy
aW50VG9TdHJpbmcocC5maXJzdCk7CisgIH0KK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNF
X1AoTG9va3VwVGVzdCwgQXQsIE9wZXJhdG9yQnJhY2tldCwgQ291bnQsIEZpbmQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFcXVhbFJhbmdlKTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRh
aW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKyNlbmRpZiAgLy8gQUJTTF9DT05U
QUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX01BUF9MT09LVVBfVEVTVF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjZjNjMzYWUyNzM1N2MxNDVlNmUxZjIwNmJhMmQyY2MyNGM4ODU0YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21v
ZGlmaWVyc190ZXN0LmgKQEAgLTAsMCArMSwyNzIgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRF
UkVEX01BUF9NT0RJRklFUlNfVEVTVF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5B
TF9VTk9SREVSRURfTUFQX01PRElGSUVSU19URVNUX0hfCisKKyNpbmNsdWRlICJnbW9jay9nbW9j
ay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgorI2luY2x1ZGUgImFic2wvY29udGFp
bmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIKKworbmFtZXNwYWNlIGFic2wgewor
bmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBVbm9yZE1h
cD4KK2NsYXNzIE1vZGlmaWVyc1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitU
WVBFRF9URVNUX0NBU0VfUChNb2RpZmllcnNUZXN0KTsKKworVFlQRURfVEVTVF9QKE1vZGlmaWVy
c1Rlc3QsIENsZWFyKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBl
PFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9u
KHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hf
aW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG0odmFsdWVzLmJlZ2luKCks
IHZhbHVlcy5lbmQoKSk7CisgIEFTU0VSVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3Jk
ZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CisgIG0uY2xlYXIoKTsKKyAgRVhQRUNUX1RI
QVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVD
VF9UUlVFKG0uZW1wdHkoKSk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBJbnNl
cnQpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFt
PjsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6bWFwcGVkX3R5cGU7CisgIFQgdmFs
ID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKTsKKyAgVHlwZVBhcmFtIG07CisgIGF1
dG8gcCA9IG0uaW5zZXJ0KHZhbCk7CisgIEVYUEVDVF9UUlVFKHAuc2Vjb25kKTsKKyAgRVhQRUNU
X0VRKHZhbCwgKnAuZmlyc3QpOworICBUIHZhbDIgPSB7dmFsLmZpcnN0LCBoYXNoX2ludGVybmFs
OjpHZW5lcmF0b3I8Vj4oKSgpfTsKKyAgcCA9IG0uaW5zZXJ0KHZhbDIpOworICBFWFBFQ1RfRkFM
U0UocC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqcC5maXJzdCk7Cit9CisKK1RZUEVEX1RF
U1RfUChNb2RpZmllcnNUZXN0LCBJbnNlcnRIaW50KSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVy
bmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIFYgPSB0eXBlbmFtZSBUeXBl
UGFyYW06Om1hcHBlZF90eXBlOworICBUIHZhbCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxU
PigpKCk7CisgIFR5cGVQYXJhbSBtOworICBhdXRvIGl0ID0gbS5pbnNlcnQobS5lbmQoKSwgdmFs
KTsKKyAgRVhQRUNUX1RSVUUoaXQgIT0gbS5lbmQoKSk7CisgIEVYUEVDVF9FUSh2YWwsICppdCk7
CisgIFQgdmFsMiA9IHt2YWwuZmlyc3QsIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxWPigpKCl9
OworICBpdCA9IG0uaW5zZXJ0KGl0LCB2YWwyKTsKKyAgRVhQRUNUX1RSVUUoaXQgIT0gbS5lbmQo
KSk7CisgIEVYUEVDVF9FUSh2YWwsICppdCk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNU
ZXN0LCBJbnNlcnRSYW5nZSkgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVk
VHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJh
dGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBo
YXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtOworICBtLmluc2Vy
dCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgQVNTRVJUX1RIQVQoaXRlbXMobSks
IDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKK30KKworVFlQ
RURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEluc2VydE9yQXNzaWduKSB7CisjaWZkZWYgVU5PUkRF
UkVEX01BUF9DWFgxNworICB1c2luZyBzdGQ6OmdldDsKKyAgdXNpbmcgSyA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6a2V5X3R5cGU7CisgIHVzaW5nIFYgPSB0eXBlbmFtZSBUeXBlUGFyYW06Om1hcHBl
ZF90eXBlOworICBLIGsgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8Sz4oKSgpOworICBWIHZh
bCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxWPigpKCk7CisgIFR5cGVQYXJhbSBtOworICBh
dXRvIHAgPSBtLmluc2VydF9vcl9hc3NpZ24oaywgdmFsKTsKKyAgRVhQRUNUX1RSVUUocC5zZWNv
bmQpOworICBFWFBFQ1RfRVEoaywgZ2V0PDA+KCpwLmZpcnN0KSk7CisgIEVYUEVDVF9FUSh2YWws
IGdldDwxPigqcC5maXJzdCkpOworICBWIHZhbDIgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8
Vj4oKSgpOworICBwID0gbS5pbnNlcnRfb3JfYXNzaWduKGssIHZhbDIpOworICBFWFBFQ1RfRkFM
U0UocC5zZWNvbmQpOworICBFWFBFQ1RfRVEoaywgZ2V0PDA+KCpwLmZpcnN0KSk7CisgIEVYUEVD
VF9FUSh2YWwyLCBnZXQ8MT4oKnAuZmlyc3QpKTsKKyNlbmRpZgorfQorCitUWVBFRF9URVNUX1Ao
TW9kaWZpZXJzVGVzdCwgSW5zZXJ0T3JBc3NpZ25IaW50KSB7CisjaWZkZWYgVU5PUkRFUkVEX01B
UF9DWFgxNworICB1c2luZyBzdGQ6OmdldDsKKyAgdXNpbmcgSyA9IHR5cGVuYW1lIFR5cGVQYXJh
bTo6a2V5X3R5cGU7CisgIHVzaW5nIFYgPSB0eXBlbmFtZSBUeXBlUGFyYW06Om1hcHBlZF90eXBl
OworICBLIGsgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8Sz4oKSgpOworICBWIHZhbCA9IGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxWPigpKCk7CisgIFR5cGVQYXJhbSBtOworICBhdXRvIGl0
ID0gbS5pbnNlcnRfb3JfYXNzaWduKG0uZW5kKCksIGssIHZhbCk7CisgIEVYUEVDVF9UUlVFKGl0
ICE9IG0uZW5kKCkpOworICBFWFBFQ1RfRVEoaywgZ2V0PDA+KCppdCkpOworICBFWFBFQ1RfRVEo
dmFsLCBnZXQ8MT4oKml0KSk7CisgIFYgdmFsMiA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxW
PigpKCk7CisgIGl0ID0gbS5pbnNlcnRfb3JfYXNzaWduKGl0LCBrLCB2YWwyKTsKKyAgRVhQRUNU
X0VRKGssIGdldDwwPigqaXQpKTsKKyAgRVhQRUNUX0VRKHZhbDIsIGdldDwxPigqaXQpKTsKKyNl
bmRpZgorfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgRW1wbGFjZSkgeworICB1c2lu
ZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBW
ID0gdHlwZW5hbWUgVHlwZVBhcmFtOjptYXBwZWRfdHlwZTsKKyAgVCB2YWwgPSBoYXNoX2ludGVy
bmFsOjpHZW5lcmF0b3I8VD4oKSgpOworICBUeXBlUGFyYW0gbTsKKyAgLy8gVE9ETyhhbGtpcyk6
IFdlIG5lZWQgYSB3YXkgdG8gcnVuIGVtcGxhY2UgaW4gYSBtb3JlIG1lYW5pbmdmdWwgd2F5LiBQ
ZXJoYXBzCisgIC8vIHdpdGggdGVzdCB0cmFpdHMvcG9saWN5LgorICBhdXRvIHAgPSBtLmVtcGxh
Y2UodmFsKTsKKyAgRVhQRUNUX1RSVUUocC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqcC5m
aXJzdCk7CisgIFQgdmFsMiA9IHt2YWwuZmlyc3QsIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxW
PigpKCl9OworICBwID0gbS5lbXBsYWNlKHZhbDIpOworICBFWFBFQ1RfRkFMU0UocC5zZWNvbmQp
OworICBFWFBFQ1RfRVEodmFsLCAqcC5maXJzdCk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmll
cnNUZXN0LCBFbXBsYWNlSGludCkgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJh
dGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBWID0gdHlwZW5hbWUgVHlwZVBhcmFtOjptYXBw
ZWRfdHlwZTsKKyAgVCB2YWwgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpOworICBU
eXBlUGFyYW0gbTsKKyAgLy8gVE9ETyhhbGtpcyk6IFdlIG5lZWQgYSB3YXkgdG8gcnVuIGVtcGxh
Y2UgaW4gYSBtb3JlIG1lYW5pbmdmdWwgd2F5LiBQZXJoYXBzCisgIC8vIHdpdGggdGVzdCB0cmFp
dHMvcG9saWN5LgorICBhdXRvIGl0ID0gbS5lbXBsYWNlX2hpbnQobS5lbmQoKSwgdmFsKTsKKyAg
RVhQRUNUX0VRKHZhbCwgKml0KTsKKyAgVCB2YWwyID0ge3ZhbC5maXJzdCwgaGFzaF9pbnRlcm5h
bDo6R2VuZXJhdG9yPFY+KCkoKX07CisgIGl0ID0gbS5lbXBsYWNlX2hpbnQoaXQsIHZhbDIpOwor
ICBFWFBFQ1RfRVEodmFsLCAqaXQpOworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwg
VHJ5RW1wbGFjZSkgeworI2lmZGVmIFVOT1JERVJFRF9NQVBfQ1hYMTcKKyAgdXNpbmcgVCA9IGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgViA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6bWFwcGVkX3R5cGU7CisgIFQgdmFsID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdG9yPFQ+KCkoKTsKKyAgVHlwZVBhcmFtIG07CisgIC8vIFRPRE8oYWxraXMpOiBXZSBuZWVk
IGEgd2F5IHRvIHJ1biBlbXBsYWNlIGluIGEgbW9yZSBtZWFuaW5nZnVsIHdheS4gUGVyaGFwcwor
ICAvLyB3aXRoIHRlc3QgdHJhaXRzL3BvbGljeS4KKyAgYXV0byBwID0gbS50cnlfZW1wbGFjZSh2
YWwuZmlyc3QsIHZhbC5zZWNvbmQpOworICBFWFBFQ1RfVFJVRShwLnNlY29uZCk7CisgIEVYUEVD
VF9FUSh2YWwsICpwLmZpcnN0KTsKKyAgVCB2YWwyID0ge3ZhbC5maXJzdCwgaGFzaF9pbnRlcm5h
bDo6R2VuZXJhdG9yPFY+KCkoKX07CisgIHAgPSBtLnRyeV9lbXBsYWNlKHZhbDIuZmlyc3QsIHZh
bDIuc2Vjb25kKTsKKyAgRVhQRUNUX0ZBTFNFKHAuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKHZhbCwg
KnAuZmlyc3QpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBUcnlF
bXBsYWNlSGludCkgeworI2lmZGVmIFVOT1JERVJFRF9NQVBfQ1hYMTcKKyAgdXNpbmcgVCA9IGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgViA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6bWFwcGVkX3R5cGU7CisgIFQgdmFsID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdG9yPFQ+KCkoKTsKKyAgVHlwZVBhcmFtIG07CisgIC8vIFRPRE8oYWxraXMpOiBXZSBuZWVk
IGEgd2F5IHRvIHJ1biBlbXBsYWNlIGluIGEgbW9yZSBtZWFuaW5nZnVsIHdheS4gUGVyaGFwcwor
ICAvLyB3aXRoIHRlc3QgdHJhaXRzL3BvbGljeS4KKyAgYXV0byBpdCA9IG0udHJ5X2VtcGxhY2Uo
bS5lbmQoKSwgdmFsLmZpcnN0LCB2YWwuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKHZhbCwgKml0KTsK
KyAgVCB2YWwyID0ge3ZhbC5maXJzdCwgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+KCkoKX07
CisgIGl0ID0gbS50cnlfZW1wbGFjZShpdCwgdmFsMi5maXJzdCwgdmFsMi5zZWNvbmQpOworICBF
WFBFQ1RfRVEodmFsLCAqaXQpOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDxjbGFzcyBWPgordXNp
bmcgSWZOb3RWb2lkID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfdm9pZDxWPjo6
dmFsdWUsIFY+Ojp0eXBlOworCisvLyBJbiBvcGVubWFwIHdlIGNob3NlIG5vdCB0byByZXR1cm4g
dGhlIGl0ZXJhdG9yIGZyb20gZXJhc2UgYmVjYXVzZSB0aGF0J3MKKy8vIG1vcmUgZXhwZW5zaXZl
LiBBcyBzdWNoIHdlIGFkYXB0IGVyYXNlIHRvIHJldHVybiBhbiBpdGVyYXRvciBoZXJlLgorc3Ry
dWN0IEVyYXNlRmlyc3QgeworICB0ZW1wbGF0ZSA8Y2xhc3MgTWFwPgorICBhdXRvIG9wZXJhdG9y
KCkoTWFwKiBtLCBpbnQpIGNvbnN0CisgICAgICAtPiBJZk5vdFZvaWQ8ZGVjbHR5cGUobS0+ZXJh
c2UobS0+YmVnaW4oKSkpPiB7CisgICAgcmV0dXJuIG0tPmVyYXNlKG0tPmJlZ2luKCkpOworICB9
CisgIHRlbXBsYXRlIDxjbGFzcyBNYXA+CisgIHR5cGVuYW1lIE1hcDo6aXRlcmF0b3Igb3BlcmF0
b3IoKShNYXAqIG0sIC4uLikgY29uc3QgeworICAgIGF1dG8gaXQgPSBtLT5iZWdpbigpOworICAg
IG0tPmVyYXNlKGl0KyspOworICAgIHJldHVybiBpdDsKKyAgfQorfTsKKworVFlQRURfVEVTVF9Q
KE1vZGlmaWVyc1Rlc3QsIEVyYXNlKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5l
cmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIHN0ZDo6Z2V0OworICBzdGQ6OnZlY3RvcjxU
PiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwg
MTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7Cisg
IFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBBU1NFUlRfVEhB
VChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykp
OworICBhdXRvJiBmaXJzdCA9ICptLmJlZ2luKCk7CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczI7
CisgIGZvciAoY29uc3QgYXV0byYgdmFsIDogdmFsdWVzKQorICAgIGlmIChnZXQ8MD4odmFsKSAh
PSBnZXQ8MD4oZmlyc3QpKSB2YWx1ZXMyLnB1c2hfYmFjayh2YWwpOworICBhdXRvIGl0ID0gRXJh
c2VGaXJzdCgpKCZtLCAwKTsKKyAgQVNTRVJUX1RSVUUoaXQgIT0gbS5lbmQoKSk7CisgIEVYUEVD
VF9FUSgxLCBzdGQ6OmNvdW50KHZhbHVlczIuYmVnaW4oKSwgdmFsdWVzMi5lbmQoKSwgKml0KSk7
CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJl
QXJyYXkodmFsdWVzMi5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczIuZW5kKCkpKTsKK30KKworVFlQRURf
VEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEVyYXNlUmFuZ2UpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50
ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVz
OworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAg
ICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFy
YW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgQVNTRVJUX1RIQVQoaXRlbXMo
bSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgYXV0
byBpdCA9IG0uZXJhc2UobS5iZWdpbigpLCBtLmVuZCgpKTsKKyAgRVhQRUNUX1RIQVQoaXRlbXMo
bSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9UUlVFKGl0
ID09IG0uZW5kKCkpOworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgRXJhc2VLZXkp
IHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsK
KyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2lu
c2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgp
KTsKKyAgQVNTRVJUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNB
cmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0VRKDEsIG0uZXJhc2UodmFsdWVzWzBdLmZpcnN0
KSk7CisgIEVYUEVDVF9FUSgwLCBzdGQ6OmNvdW50KG0uYmVnaW4oKSwgbS5lbmQoKSwgdmFsdWVz
WzBdKSk7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1l
bnRzQXJlQXJyYXkodmFsdWVzLmJlZ2luKCkgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5lbmQoKSkpOworfQor
CitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgU3dhcCkgeworICB1c2luZyBUID0gaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZlY3RvcjxUPiB2MTsK
KyAgc3RkOjp2ZWN0b3I8VD4gdjI7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0
ZXIodjEpLCA1LCBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIHN0ZDo6Z2VuZXJh
dGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodjIpLCA1LCBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8
VD4oKSk7CisgIFR5cGVQYXJhbSBtMSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7CisgIFR5cGVQYXJh
bSBtMih2Mi5iZWdpbigpLCB2Mi5lbmQoKSk7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0xKSwgOjp0
ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHYxKSk7CisgIEVYUEVDVF9USEFUKGl0
ZW1zKG0yKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHYyKSk7CisgIG0x
LnN3YXAobTIpOworICBFWFBFQ1RfVEhBVChpdGVtcyhtMSksIDo6dGVzdGluZzo6VW5vcmRlcmVk
RWxlbWVudHNBcmVBcnJheSh2MikpOworICBFWFBFQ1RfVEhBVChpdGVtcyhtMiksIDo6dGVzdGlu
Zzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2MSkpOworfQorCisvLyBUT0RPKGFsa2lzKTog
V3JpdGUgdGVzdHMgZm9yIGV4dHJhY3QuCisvLyBUT0RPKGFsa2lzKTogV3JpdGUgdGVzdHMgZm9y
IG1lcmdlLgorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChNb2RpZmllcnNUZXN0LCBDbGVh
ciwgSW5zZXJ0LCBJbnNlcnRIaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zZXJ0
UmFuZ2UsIEluc2VydE9yQXNzaWduLCBJbnNlcnRPckFzc2lnbkhpbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFbXBsYWNlLCBFbXBsYWNlSGludCwgVHJ5RW1wbGFjZSwgVHJ5RW1wbGFj
ZUhpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBFcmFzZSwgRXJhc2VSYW5nZSwgRXJh
c2VLZXksIFN3YXApOworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAv
LyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9S
REVSRURfTUFQX01PRElGSUVSU19URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvdW5vcmRlcmVkX21hcF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L3Vub3JkZXJlZF9tYXBfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGU3OTljZGE4OWMzYzkwNTUzYjM4
ZGI3YWIzMmEyYzE0ZWQwMjgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL3Vub3JkZXJlZF9tYXBfdGVzdC5jYwpAQCAtMCwwICsxLDM4IEBACisvLyBDb3B5cmln
aHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4K
KworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3Ry
dWN0b3JfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJl
ZF9tYXBfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91
bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKwordXNpbmcgTWFwVHlwZXMg
PSA6OnRlc3Rpbmc6OlR5cGVzPAorICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxpbnQsIGludCwgU3Rh
dGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsCisgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG9jPHN0ZDo6cGFpcjxjb25zdCBpbnQsIGludD4+PiwKKyAgICBzdGQ6OnVub3Jk
ZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLAor
ICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgQWxsb2M8c3RkOjpwYWlyPGNvbnN0IHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmlu
Zz4+Pj47CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVub3JkZXJlZE1hcCwgQ29u
c3RydWN0b3JUZXN0LCBNYXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChV
bm9yZGVyZWRNYXAsIExvb2t1cFRlc3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKFVub3JkZXJlZE1hcCwgTW9kaWZpZXJzVGVzdCwgTWFwVHlwZXMpOworCit9ICAv
LyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5h
bWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRl
cmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5v
cmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I1OTM3MDQ2ODVjNDdm
YWJhMTMwM2UyYzUzOTdiYzE1NTI0NGUyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaApAQCAtMCwwICsx
LDQwOCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRl
ZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0NPTlNUUlVDVE9SX1RFU1Rf
SF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NFVF9DT05TVFJV
Q1RPUl9URVNUX0hfCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8dmVjdG9yPgor
CisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lu
Y2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIK
KyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nLmgi
CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCit0
ZW1wbGF0ZSA8Y2xhc3MgVW5vcmRNYXA+CitjbGFzcyBDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHt9OworCitUWVBFRF9URVNUX0NBU0VfUChDb25zdHJ1Y3RvclRlc3Qp
OworCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBOb0FyZ3MpIHsKKyAgVHlwZVBhcmFt
IG07CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6
dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25z
dHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50KSB7CisgIFR5cGVQYXJhbSBtKDEyMyk7CisgIEVYUEVD
VF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5v
cmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMp
OworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2gpIHsK
KyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICBIIGhhc2hlcjsKKyAg
VHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCks
IGhhc2hlcik7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKGtleXMo
bSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShtLmJ1
Y2tldF9jb3VudCgpLCAxMjMpOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBC
dWNrZXRDb3VudEhhc2hFcXVhbCkgeworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpo
YXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgSCBo
YXNoZXI7CisgIEUgZXF1YWw7CisgIFR5cGVQYXJhbSBtKDEyMywgaGFzaGVyLCBlcXVhbCk7Cisg
IEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0ua2V5
X2VxKCksIGVxdWFsKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQo
a2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dF
KG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRl
c3QsIEJ1Y2tldENvdW50SGFzaEVxdWFsQWxsb2MpIHsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1
YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBI
IGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBo
YXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFz
aGVyKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIGVxdWFsKTsKKyAgRVhQRUNUX0VRKG0uZ2V0
X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVD
VF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVY
UEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworCisgIGNvbnN0IGF1dG8mIGNtID0gbTsK
KyAgRVhQRUNUX0VRKGNtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKGNt
LmtleV9lcSgpLCBlcXVhbCk7CisgIEVYUEVDVF9FUShjbS5nZXRfYWxsb2NhdG9yKCksIGFsbG9j
KTsKKyAgRVhQRUNUX1RSVUUoY20uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKGtleXMoY20pLCA6
OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOworICBFWFBFQ1RfR0UoY20uYnVja2V0
X2NvdW50KCksIDEyMyk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tl
dENvdW50QWxsb2MpIHsKKyNpZiBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmlu
ZWQoVU5PUkRFUkVEX1NFVF9DWFgxNykKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
YWxsb2NhdG9yX3R5cGU7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKDEyMywgYWxsb2Mp
OworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUo
bS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRF
bGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5k
aWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRIYXNoQWxs
b2MpIHsKKyNpZiBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRF
UkVEX1NFVF9DWFgxNykKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOwor
ICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNo
ZXI7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKDEyMywgaGFzaGVyLCBhbGxvYyk7Cisg
IEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0uZ2V0
X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVD
VF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVY
UEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldEFsbG9jKSB7CisjaWYgQUJTTF9VTk9SREVSRURfU1VQ
UE9SVFNfQUxMT0NfQ1RPUlMKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2Nh
dG9yX3R5cGU7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKGFsbG9jKTsKKyAgRVhQRUNU
X0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7
CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUo
KSk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVy
YXRvckJ1Y2tldEhhc2hFcXVhbEFsbG9jKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06
Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICB1
c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7
CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgIT0gMTA7ICsraSkKKyAgICB2YWx1ZXMucHVzaF9iYWNrKGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVn
aW4oKSwgdmFsdWVzLmVuZCgpLCAxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgRVhQRUNU
X0VRKG0uaGFzaF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwg
ZXF1YWwpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNU
X1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVl
cykpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKK30KKworVFlQRURfVEVT
VF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jKSB7CisjaWYgZGVm
aW5lZChVTk9SREVSRURfU0VUX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTcp
CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47Cisg
IHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBBIGFsbG9j
KDApOworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9
IDEwOyArK2kpCisgICAgdmFsdWVzLnB1c2hfYmFjayhoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8
VD4oKSgpKTsKKyAgVHlwZVBhcmFtIG0odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSwgMTIz
LCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBF
Q1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFs
dWVzKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9CisK
K1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxs
b2MpIHsKKyNpZiBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRF
UkVEX1NFVF9DWFgxNykKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8
VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1
c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7
CisgIEEgYWxsb2MoMCk7CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgIT0gMTA7ICsraSkKKyAgICB2YWx1ZXMucHVzaF9iYWNrKGhhc2hfaW50ZXJuYWw6
OkdlbmVyYXRvcjxUPigpKCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVz
LmVuZCgpLCAxMjMsIGhhc2hlciwgYWxsb2MpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9u
KCksIGhhc2hlcik7CisgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBF
WFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
dmFsdWVzKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9
CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3RvcikgeworICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2lu
ZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBU
eXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxs
b2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBU
eXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgIT0gMTA7ICsraSkgbS5pbnNlcnQoaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCko
KSk7CisgIFR5cGVQYXJhbSBuKG0pOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIG4u
aGFzaF9mdW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkpOwor
ICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQ
RUNUX0VRKG0sIG4pOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29u
c3RydWN0b3JBbGxvYykgeworI2lmIEFCU0xfVU5PUkRFUkVEX1NVUFBPUlRTX0FMTE9DX0NUT1JT
CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47Cisg
IHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFt
OjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7
CisgIFR5cGVQYXJhbSBtKDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBmb3IgKHNpemVf
dCBpID0gMDsgaSAhPSAxMDsgKytpKSBtLmluc2VydChoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8
VD4oKSgpKTsKKyAgVHlwZVBhcmFtIG4obSwgQSgxMSkpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1
bmN0aW9uKCksIG4uaGFzaF9mdW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4u
a2V5X2VxKCkpOworICBFWFBFQ1RfTkUobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRv
cigpKTsKKyAgRVhQRUNUX0VRKG0sIG4pOworI2VuZGlmCit9CisKKy8vIFRPRE8oYWxraXMpOiBU
ZXN0IG5vbi1wcm9wYWdhdGluZyBhbGxvY2F0b3JzIG9uIGNvcHkgY29uc3RydWN0b3JzLgorCitU
WVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3IpIHsKKyAgdXNpbmcg
VCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9
IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRv
cl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBh
cmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IDEwOyArK2kpIG0uaW5zZXJ0KGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkpOwor
ICBUeXBlUGFyYW0gdChtKTsKKyAgVHlwZVBhcmFtIG4oc3RkOjptb3ZlKHQpKTsKKyAgRVhQRUNU
X0VRKG0uaGFzaF9mdW5jdGlvbigpLCBuLmhhc2hfZnVuY3Rpb24oKSk7CisgIEVYUEVDVF9FUSht
LmtleV9lcSgpLCBuLmtleV9lcSgpKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBu
LmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVDVF9FUShtLCBuKTsKK30KKworVFlQRURfVEVTVF9Q
KENvbnN0cnVjdG9yVGVzdCwgTW92ZUNvbnN0cnVjdG9yQWxsb2MpIHsKKyNpZiBBQlNMX1VOT1JE
RVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpo
YXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNp
bmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOwor
ICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgZXF1
YWwsIGFsbG9jKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gMTA7ICsraSkgbS5pbnNlcnQo
aGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKSk7CisgIFR5cGVQYXJhbSB0KG0pOworICBU
eXBlUGFyYW0gbihzdGQ6Om1vdmUodCksIEEoMSkpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0
aW9uKCksIG4uaGFzaF9mdW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5
X2VxKCkpOworICBFWFBFQ1RfTkUobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigp
KTsKKyAgRVhQRUNUX0VRKG0sIG4pOworI2VuZGlmCit9CisKKy8vIFRPRE8oYWxraXMpOiBUZXN0
IG5vbi1wcm9wYWdhdGluZyBhbGxvY2F0b3JzIG9uIG1vdmUgY29uc3RydWN0b3JzLgorCitUWVBF
RF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoRXF1YWxB
bGxvYykgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFy
YW0+OworICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8VD4gdmFsdWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07
CisgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5
cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2Mo
MCk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcywgMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7Cisg
IEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0ua2V5
X2VxKCksIGVxdWFsKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7Cisg
IEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJh
eSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisKK1RZ
UEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jKSB7
CisjaWYgZGVmaW5lZChVTk9SREVSRURfU0VUX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9T
RVRfQ1hYMTcpCisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQ
YXJhbT47CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOwor
ICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VD4gdmFsdWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIEEg
YWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcywgMTIzLCBhbGxvYyk7CisgIEVYUEVDVF9F
UShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRl
c3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CisgIEVYUEVDVF9HRSht
LmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1
Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvYykgeworI2lmIGRlZmluZWQo
VU5PUkRFUkVEX1NFVF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfU0VUX0NYWDE3KQorICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2lu
ZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBU
eXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgQSBhbGxvYygwKTsKKyAg
aGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgc3RkOjppbml0aWFsaXplcl9saXN0
PFQ+IHZhbHVlcyA9IHtnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCl9OworICBUeXBl
UGFyYW0gbSh2YWx1ZXMsIDEyMywgaGFzaGVyLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hf
ZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxv
Yyk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNB
cmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cisj
ZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudCkgewor
ICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1
c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFt
ZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOwor
ICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBUeXBlUGFyYW0gbSh7Z2VuKCks
IGdlbigpLCBnZW4oKX0sIDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBUeXBlUGFyYW0g
bjsKKyAgbiA9IG07CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgbi5oYXNoX2Z1bmN0
aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CisgIEVYUEVDVF9F
UShtLCBuKTsKK30KKworLy8gVE9ETyhhbGtpcyk6IFRlc3QgW25vbi1dcHJvcGFnYXRpbmcgYWxs
b2NhdG9ycyBvbiBtb3ZlL2NvcHkgYXNzaWdubWVudHMKKy8vIChpdCBkZXBlbmRzIG9uIHRyYWl0
cykuCisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIE1vdmVBc3NpZ25tZW50KSB7Cisg
IHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVz
aW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1l
IFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjph
bGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7Cisg
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIFR5cGVQYXJhbSBtKHtnZW4oKSwg
Z2VuKCksIGdlbigpfSwgMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIFR5cGVQYXJhbSB0
KG0pOworICBUeXBlUGFyYW0gbjsKKyAgbiA9IHN0ZDo6bW92ZSh0KTsKKyAgRVhQRUNUX0VRKG0u
aGFzaF9mdW5jdGlvbigpLCBuLmhhc2hfZnVuY3Rpb24oKSk7CisgIEVYUEVDVF9FUShtLmtleV9l
cSgpLCBuLmtleV9lcSgpKTsKKyAgRVhQRUNUX0VRKG0sIG4pOworfQorCitUWVBFRF9URVNUX1Ao
Q29uc3RydWN0b3JUZXN0LCBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdCkgeworICB1c2lu
ZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBoYXNoX2lu
dGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gdmFs
dWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIFR5cGVQYXJhbSBt
OworICBtID0gdmFsdWVzOworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3Jk
ZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1
Y3RvclRlc3QsIEFzc2lnbm1lbnRPdmVyd3JpdGVzRXhpc3RpbmcpIHsKKyAgdXNpbmcgVCA9IGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6
R2VuZXJhdG9yPFQ+IGdlbjsKKyAgVHlwZVBhcmFtIG0oe2dlbigpLCBnZW4oKSwgZ2VuKCl9KTsK
KyAgVHlwZVBhcmFtIG4oe2dlbigpfSk7CisgIG4gPSBtOworICBFWFBFQ1RfRVEobSwgbik7Cit9
CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIE1vdmVBc3NpZ25tZW50T3ZlcndyaXRl
c0V4aXN0aW5nKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5
cGVQYXJhbT47CisgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIFR5cGVQYXJh
bSBtKHtnZW4oKSwgZ2VuKCksIGdlbigpfSk7CisgIFR5cGVQYXJhbSB0KG0pOworICBUeXBlUGFy
YW0gbih7Z2VuKCl9KTsKKyAgbiA9IHN0ZDo6bW92ZSh0KTsKKyAgRVhQRUNUX0VRKG0sIG4pOwor
fQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBBc3NpZ25tZW50RnJvbUluaXRpYWxp
emVyTGlzdE92ZXJ3cml0ZXNFeGlzdGluZykgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6
R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4g
Z2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gdmFsdWVzID0ge2dlbigpLCBnZW4oKSwg
Z2VuKCksIGdlbigpLCBnZW4oKX07CisgIFR5cGVQYXJhbSBtOworICBtID0gdmFsdWVzOworICBF
WFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
dmFsdWVzKSk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnRP
blNlbGYpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBh
cmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgc3RkOjppbml0aWFs
aXplcl9saXN0PFQ+IHZhbHVlcyA9IHtnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCl9
OworICBUeXBlUGFyYW0gbSh2YWx1ZXMpOworICBtID0gKiZtOyAgLy8gQXZvaWQgLVdzZWxmLWFz
c2lnbi4KKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50
c0FyZUFycmF5KHZhbHVlcykpOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCgKKyAg
ICBDb25zdHJ1Y3RvclRlc3QsIE5vQXJncywgQnVja2V0Q291bnQsIEJ1Y2tldENvdW50SGFzaCwg
QnVja2V0Q291bnRIYXNoRXF1YWwsCisgICAgQnVja2V0Q291bnRIYXNoRXF1YWxBbGxvYywgQnVj
a2V0Q291bnRBbGxvYywgQnVja2V0Q291bnRIYXNoQWxsb2MsCisgICAgQnVja2V0QWxsb2MsIElu
cHV0SXRlcmF0b3JCdWNrZXRIYXNoRXF1YWxBbGxvYywgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9j
LAorICAgIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxsb2MsIENvcHlDb25zdHJ1Y3RvciwgQ29w
eUNvbnN0cnVjdG9yQWxsb2MsCisgICAgTW92ZUNvbnN0cnVjdG9yLCBNb3ZlQ29uc3RydWN0b3JB
bGxvYywgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEVxdWFsQWxsb2MsCisgICAgSW5pdGlhbGl6
ZXJMaXN0QnVja2V0QWxsb2MsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hBbGxvYywgQXNzaWdu
bWVudCwKKyAgICBNb3ZlQXNzaWdubWVudCwgQXNzaWdubWVudEZyb21Jbml0aWFsaXplckxpc3Qs
CisgICAgQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGluZywgTW92ZUFzc2lnbm1lbnRPdmVyd3Jp
dGVzRXhpc3RpbmcsCisgICAgQXNzaWdubWVudEZyb21Jbml0aWFsaXplckxpc3RPdmVyd3JpdGVz
RXhpc3RpbmcsIEFzc2lnbm1lbnRPblNlbGYpOworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVy
X2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5F
Ul9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0NPTlNUUlVDVE9SX1RFU1RfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFjYTljNmE1ZGY3YjcyNWMxNzU5OTNmNDcwNjlkYTRlOTIxNzI5ZDMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9sb29rdXBf
dGVzdC5oCkBAIC0wLDAgKzEsODggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NFVF9M
T09LVVBfVEVTVF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURf
U0VUX0xPT0tVUF9URVNUX0hfCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9n
ZW5lcmF0b3JfdGVzdGluZy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hh
c2hfcG9saWN5X3Rlc3RpbmcuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRh
aW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBVbm9yZFNldD4KK2NsYXNzIExvb2t1
cFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitUWVBFRF9URVNUX0NBU0VfUChM
b29rdXBUZXN0KTsKKworVFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIENvdW50KSB7CisgIHVzaW5n
IFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVj
dG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1
ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigp
KTsKKyAgVHlwZVBhcmFtIG07CisgIGZvciAoY29uc3QgYXV0byYgdiA6IHZhbHVlcykKKyAgICBF
WFBFQ1RfRVEoMCwgbS5jb3VudCh2KSkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHYpOwor
ICBtLmluc2VydCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgZm9yIChjb25zdCBh
dXRvJiB2IDogdmFsdWVzKQorICAgIEVYUEVDVF9FUSgxLCBtLmNvdW50KHYpKSA8PCA6OnRlc3Rp
bmc6OlByaW50VG9TdHJpbmcodik7Cit9CisKK1RZUEVEX1RFU1RfUChMb29rdXBUZXN0LCBGaW5k
KSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47
CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19p
bnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6Okdl
bmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG07CisgIGZvciAoY29uc3QgYXV0byYgdiA6IHZh
bHVlcykKKyAgICBFWFBFQ1RfVFJVRShtLmVuZCgpID09IG0uZmluZCh2KSkgPDwgOjp0ZXN0aW5n
OjpQcmludFRvU3RyaW5nKHYpOworICBtLmluc2VydCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVu
ZCgpKTsKKyAgZm9yIChjb25zdCBhdXRvJiB2IDogdmFsdWVzKSB7CisgICAgdHlwZW5hbWUgVHlw
ZVBhcmFtOjppdGVyYXRvciBpdCA9IG0uZmluZCh2KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxjb25zdCB0eXBlbmFtZSBUeXBlUGFyYW06OnZhbHVlX3R5cGUmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlY2x0eXBlKCppdCk+Ojp2YWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxjb25zdCB0eXBlbmFt
ZSBUeXBlUGFyYW06OnZhbHVlX3R5cGUqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlY2x0eXBlKGl0Lm9wZXJhdG9yLT4oKSk+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICIi
KTsKKyAgICBFWFBFQ1RfVFJVRShtLmVuZCgpICE9IGl0KSA8PCA6OnRlc3Rpbmc6OlByaW50VG9T
dHJpbmcodik7CisgICAgRVhQRUNUX0VRKHYsICppdCkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3Ry
aW5nKHYpOworICB9Cit9CisKK1RZUEVEX1RFU1RfUChMb29rdXBUZXN0LCBFcXVhbFJhbmdlKSB7
CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47Cisg
IHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNl
cnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVy
YXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG07CisgIGZvciAoY29uc3QgYXV0byYgdiA6IHZhbHVl
cykgeworICAgIGF1dG8gciA9IG0uZXF1YWxfcmFuZ2Uodik7CisgICAgQVNTRVJUX0VRKDAsIHN0
ZDo6ZGlzdGFuY2Uoci5maXJzdCwgci5zZWNvbmQpKTsKKyAgfQorICBtLmluc2VydCh2YWx1ZXMu
YmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgZm9yIChjb25zdCBhdXRvJiB2IDogdmFsdWVzKSB7
CisgICAgYXV0byByID0gbS5lcXVhbF9yYW5nZSh2KTsKKyAgICBBU1NFUlRfRVEoMSwgc3RkOjpk
aXN0YW5jZShyLmZpcnN0LCByLnNlY29uZCkpOworICAgIEVYUEVDVF9FUSh2LCAqci5maXJzdCk7
CisgIH0KK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoTG9va3VwVGVzdCwgQ291bnQs
IEZpbmQsIEVxdWFsUmFuZ2UpOworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
Cit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5B
TF9VTk9SREVSRURfU0VUX0xPT0tVUF9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
YmVhY2YzMzE2OTczZGQ3YmNkY2I5MzgyYTEzNmMxOGQwYThjNzZiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3Qu
aApAQCAtMCwwICsxLDE4NyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX01PRElG
SUVSU19URVNUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9T
RVRfTU9ESUZJRVJTX1RFU1RfSF8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
X2dlbmVyYXRvcl90ZXN0aW5nLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
aGFzaF9wb2xpY3lfdGVzdGluZy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29u
dGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFVub3JkU2V0PgorY2xhc3MgTW9k
aWZpZXJzVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK1RZUEVEX1RFU1RfQ0FT
RV9QKE1vZGlmaWVyc1Rlc3QpOworCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgQ2xlYXIp
IHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsK
KyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2lu
c2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgp
KTsKKyAgQVNTRVJUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0Fy
ZUFycmF5KHZhbHVlcykpOworICBtLmNsZWFyKCk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6
dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHko
KSk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBJbnNlcnQpIHsKKyAgdXNpbmcg
VCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgVCB2YWwgPSBo
YXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpOworICBUeXBlUGFyYW0gbTsKKyAgYXV0byBw
ID0gbS5pbnNlcnQodmFsKTsKKyAgRVhQRUNUX1RSVUUocC5zZWNvbmQpOworICBFWFBFQ1RfRVEo
dmFsLCAqcC5maXJzdCk7CisgIHAgPSBtLmluc2VydCh2YWwpOworICBFWFBFQ1RfRkFMU0UocC5z
ZWNvbmQpOworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgSW5zZXJ0SGludCkgewor
ICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBU
IHZhbCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCk7CisgIFR5cGVQYXJhbSBtOwor
ICBhdXRvIGl0ID0gbS5pbnNlcnQobS5lbmQoKSwgdmFsKTsKKyAgRVhQRUNUX1RSVUUoaXQgIT0g
bS5lbmQoKSk7CisgIEVYUEVDVF9FUSh2YWwsICppdCk7CisgIGl0ID0gbS5pbnNlcnQoaXQsIHZh
bCk7CisgIEVYUEVDVF9UUlVFKGl0ICE9IG0uZW5kKCkpOworICBFWFBFQ1RfRVEodmFsLCAqaXQp
OworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgSW5zZXJ0UmFuZ2UpIHsKKyAgdXNp
bmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2
ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZh
bHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+
KCkpOworICBUeXBlUGFyYW0gbTsKKyAgbS5pbnNlcnQodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5l
bmQoKSk7CisgIEFTU0VSVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheSh2YWx1ZXMpKTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEVt
cGxhY2UpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBh
cmFtPjsKKyAgVCB2YWwgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpOworICBUeXBl
UGFyYW0gbTsKKyAgLy8gVE9ETyhhbGtpcyk6IFdlIG5lZWQgYSB3YXkgdG8gcnVuIGVtcGxhY2Ug
aW4gYSBtb3JlIG1lYW5pbmdmdWwgd2F5LiBQZXJoYXBzCisgIC8vIHdpdGggdGVzdCB0cmFpdHMv
cG9saWN5LgorICBhdXRvIHAgPSBtLmVtcGxhY2UodmFsKTsKKyAgRVhQRUNUX1RSVUUocC5zZWNv
bmQpOworICBFWFBFQ1RfRVEodmFsLCAqcC5maXJzdCk7CisgIHAgPSBtLmVtcGxhY2UodmFsKTsK
KyAgRVhQRUNUX0ZBTFNFKHAuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKHZhbCwgKnAuZmlyc3QpOwor
fQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgRW1wbGFjZUhpbnQpIHsKKyAgdXNpbmcg
VCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgVCB2YWwgPSBo
YXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpOworICBUeXBlUGFyYW0gbTsKKyAgLy8gVE9E
TyhhbGtpcyk6IFdlIG5lZWQgYSB3YXkgdG8gcnVuIGVtcGxhY2UgaW4gYSBtb3JlIG1lYW5pbmdm
dWwgd2F5LiBQZXJoYXBzCisgIC8vIHdpdGggdGVzdCB0cmFpdHMvcG9saWN5LgorICBhdXRvIGl0
ID0gbS5lbXBsYWNlX2hpbnQobS5lbmQoKSwgdmFsKTsKKyAgRVhQRUNUX0VRKHZhbCwgKml0KTsK
KyAgaXQgPSBtLmVtcGxhY2VfaGludChpdCwgdmFsKTsKKyAgRVhQRUNUX0VRKHZhbCwgKml0KTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFY+Cit1c2luZyBJZk5vdFZvaWQgPSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjwhc3RkOjppc192b2lkPFY+Ojp2YWx1ZSwgVj46OnR5cGU7CisKKy8vIEluIG9w
ZW5tYXAgd2UgY2hvc2Ugbm90IHRvIHJldHVybiB0aGUgaXRlcmF0b3IgZnJvbSBlcmFzZSBiZWNh
dXNlIHRoYXQncworLy8gbW9yZSBleHBlbnNpdmUuIEFzIHN1Y2ggd2UgYWRhcHQgZXJhc2UgdG8g
cmV0dXJuIGFuIGl0ZXJhdG9yIGhlcmUuCitzdHJ1Y3QgRXJhc2VGaXJzdCB7CisgIHRlbXBsYXRl
IDxjbGFzcyBNYXA+CisgIGF1dG8gb3BlcmF0b3IoKShNYXAqIG0sIGludCkgY29uc3QKKyAgICAg
IC0+IElmTm90Vm9pZDxkZWNsdHlwZShtLT5lcmFzZShtLT5iZWdpbigpKSk+IHsKKyAgICByZXR1
cm4gbS0+ZXJhc2UobS0+YmVnaW4oKSk7CisgIH0KKyAgdGVtcGxhdGUgPGNsYXNzIE1hcD4KKyAg
dHlwZW5hbWUgTWFwOjppdGVyYXRvciBvcGVyYXRvcigpKE1hcCogbSwgLi4uKSBjb25zdCB7Cisg
ICAgYXV0byBpdCA9IG0tPmJlZ2luKCk7CisgICAgbS0+ZXJhc2UoaXQrKyk7CisgICAgcmV0dXJu
IGl0OworICB9Cit9OworCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgRXJhc2UpIHsKKyAg
dXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3Rk
Ojp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVy
KHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9y
PFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAg
QVNTRVJUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5
KHZhbHVlcykpOworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXMyOworICBmb3IgKGNvbnN0IGF1dG8m
IHZhbCA6IHZhbHVlcykKKyAgICBpZiAodmFsICE9ICptLmJlZ2luKCkpIHZhbHVlczIucHVzaF9i
YWNrKHZhbCk7CisgIGF1dG8gaXQgPSBFcmFzZUZpcnN0KCkoJm0sIDApOworICBBU1NFUlRfVFJV
RShpdCAhPSBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKDEsIHN0ZDo6Y291bnQodmFsdWVzMi5iZWdp
bigpLCB2YWx1ZXMyLmVuZCgpLCAqaXQpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0
aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlczIuYmVnaW4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
czIuZW5kKCkpKTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEVyYXNlUmFuZ2Up
IHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsK
KyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2lu
c2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgp
KTsKKyAgQVNTRVJUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0Fy
ZUFycmF5KHZhbHVlcykpOworICBhdXRvIGl0ID0gbS5lcmFzZShtLmJlZ2luKCksIG0uZW5kKCkp
OworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJl
KCkpOworICBFWFBFQ1RfVFJVRShpdCA9PSBtLmVuZCgpKTsKK30KKworVFlQRURfVEVTVF9QKE1v
ZGlmaWVyc1Rlc3QsIEVyYXNlS2V5KSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5l
cmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpn
ZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAg
ICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG0odmFsdWVz
LmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIEFTU0VSVF9USEFUKGtleXMobSksIDo6dGVzdGlu
Zzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0VRKDEsIG0u
ZXJhc2UodmFsdWVzWzBdKSk7CisgIEVYUEVDVF9FUSgwLCBzdGQ6OmNvdW50KG0uYmVnaW4oKSwg
bS5lbmQoKSwgdmFsdWVzWzBdKSk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6
VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMuYmVnaW4oKSArIDEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMu
ZW5kKCkpKTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIFN3YXApIHsKKyAgdXNp
bmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2
ZWN0b3I8VD4gdjE7CisgIHN0ZDo6dmVjdG9yPFQ+IHYyOworICBzdGQ6OmdlbmVyYXRlX24oc3Rk
OjpiYWNrX2luc2VydGVyKHYxKSwgNSwgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOwor
ICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHYyKSwgNSwgaGFzaF9pbnRlcm5h
bDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbTEodjEuYmVnaW4oKSwgdjEuZW5kKCkp
OworICBUeXBlUGFyYW0gbTIodjIuYmVnaW4oKSwgdjIuZW5kKCkpOworICBFWFBFQ1RfVEhBVChr
ZXlzKG0xKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHYxKSk7CisgIEVY
UEVDVF9USEFUKGtleXMobTIpLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
djIpKTsKKyAgbTEuc3dhcChtMik7CisgIEVYUEVDVF9USEFUKGtleXMobTEpLCA6OnRlc3Rpbmc6
OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodjIpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtMiks
IDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2MSkpOworfQorCisvLyBUT0RP
KGFsa2lzKTogV3JpdGUgdGVzdHMgZm9yIGV4dHJhY3QuCisvLyBUT0RPKGFsa2lzKTogV3JpdGUg
dGVzdHMgZm9yIG1lcmdlLgorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChNb2RpZmllcnNU
ZXN0LCBDbGVhciwgSW5zZXJ0LCBJbnNlcnRIaW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW5zZXJ0UmFuZ2UsIEVtcGxhY2UsIEVtcGxhY2VIaW50LCBFcmFzZSwgRXJhc2VSYW5nZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEVyYXNlS2V5LCBTd2FwKTsKKworfSAgLy8gbmFt
ZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKyNlbmRpZiAg
Ly8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NFVF9NT0RJRklFUlNfVEVTVF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X3Rlc3QuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTI4MWNlNTNkNWUyZTQwNzI4ZmI2Y2E4ZGQ5MGMwYzk0OThhZWZhMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X3Rlc3Qu
Y2MKQEAgLTAsMCArMSwzNyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKworI2luY2x1ZGUgPHVub3JkZXJlZF9zZXQ+CisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCIKKyNpbmNsdWRlICJh
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgiCisjaW5j
bHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVz
dC5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsK
K25hbWVzcGFjZSB7CisKK3VzaW5nIFNldFR5cGVzID0KKyAgICA6OnRlc3Rpbmc6OlR5cGVzPHN0
ZDo6dW5vcmRlcmVkX3NldDxpbnQsIFN0YXRlZnVsVGVzdGluZ0hhc2gsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFsbG9jPGlu
dD4+LAorICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bm9yZGVyZWRfc2V0PHN0ZDo6c3RyaW5n
LCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFN0YXRlZnVsVGVzdGluZ0VxdWFsLCBBbGxvYzxzdGQ6OnN0cmluZz4+PjsKKworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVW5vcmRlcmVkU2V0LCBDb25zdHJ1Y3RvclRlc3Qs
IFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVub3JkZXJlZFNldCwg
TG9va3VwVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVW5v
cmRlcmVkU2V0LCBNb2RpZmllcnNUZXN0LCBTZXRUeXBlcyk7CisKK30gIC8vIG5hbWVzcGFjZQor
fSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfbWFwLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvbm9kZV9oYXNoX21hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNjllYzNhZDY0MzFhNDdlNjQzMTY1
ODhlNDY3MTQzMTdlNjFkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9k
ZV9oYXNoX21hcC5oCkBAIC0wLDAgKzEsNTMwIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJz
ZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBub2Rl
X2hhc2hfbWFwLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQW4gYGFic2w6Om5v
ZGVfaGFzaF9tYXA8SywgVj5gIGlzIGFuIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIg
b2YKKy8vIHVuaXF1ZSBrZXlzIGFuZCBhc3NvY2lhdGVkIHZhbHVlcyBkZXNpZ25lZCB0byBiZSBh
IG1vcmUgZWZmaWNpZW50IHJlcGxhY2VtZW50CisvLyBmb3IgYHN0ZDo6dW5vcmRlcmVkX21hcGAu
IExpa2UgYHVub3JkZXJlZF9tYXBgLCBzZWFyY2gsIGluc2VydGlvbiwgYW5kCisvLyBkZWxldGlv
biBvZiBtYXAgZWxlbWVudHMgY2FuIGJlIGRvbmUgYXMgYW4gYE8oMSlgIG9wZXJhdGlvbi4gSG93
ZXZlciwKKy8vIGBub2RlX2hhc2hfbWFwYCAoYW5kIG90aGVyIHVub3JkZXJlZCBhc3NvY2lhdGl2
ZSBjb250YWluZXJzIGtub3duIGFzIHRoZQorLy8gY29sbGVjdGlvbiBvZiBBYnNlaWwgIlN3aXNz
IHRhYmxlcyIpIGNvbnRhaW4gb3RoZXIgb3B0aW1pemF0aW9ucyB0aGF0IHJlc3VsdAorLy8gaW4g
Ym90aCBtZW1vcnkgYW5kIGNvbXB1dGF0aW9uIGFkdmFudGFnZXMuCisvLworLy8gSW4gbW9zdCBj
YXNlcywgeW91ciBkZWZhdWx0IGNob2ljZSBmb3IgYSBoYXNoIG1hcCBzaG91bGQgYmUgYSBtYXAg
b2YgdHlwZQorLy8gYGZsYXRfaGFzaF9tYXBgLiBIb3dldmVyLCBpZiB5b3UgbmVlZCBwb2ludGVy
IHN0YWJpbGl0eSBhbmQgY2Fubm90IHN0b3JlCisvLyBhIGBmbGF0X2hhc2hfbWFwYCB3aXRoIGB1
bmlxdWVfcHRyYCBlbGVtZW50cywgYSBgbm9kZV9oYXNoX21hcGAgbWF5IGJlIGEKKy8vIHZhbGlk
IGFsdGVybmF0aXZlLiBBcyB3ZWxsLCBpZiB5b3UgYXJlIG1pZ3JhdGluZyB5b3VyIGNvZGUgZnJv
bSB1c2luZworLy8gYHN0ZDo6dW5vcmRlcmVkX21hcGAsIGEgYG5vZGVfaGFzaF9tYXBgIHByb3Zp
ZGVzIGEgbW9yZSBzdHJhaWdodGZvcndhcmQKKy8vIG1pZ3JhdGlvbiwgYmVjYXVzZSBpdCBndWFy
YW50ZWVzIHBvaW50ZXIgc3RhYmlsaXR5LiBDb25zaWRlciBtaWdyYXRpbmcgdG8KKy8vIGBub2Rl
X2hhc2hfbWFwYCBhbmQgcGVyaGFwcyBjb252ZXJ0aW5nIHRvIGEgbW9yZSBlZmZpY2llbnQgYGZs
YXRfaGFzaF9tYXBgCisvLyB1cG9uIGZ1cnRoZXIgcmV2aWV3LgorCisjaWZuZGVmIEFCU0xfQ09O
VEFJTkVSX05PREVfSEFTSF9NQVBfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfTk9ERV9IQVNI
X01BUF9IXworCisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5j
bHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRh
aW5lcl9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1
bmN0aW9uX2RlZmF1bHRzLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIgorI2luY2x1ZGUgImFic2wv
Y29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX21hcC5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9y
dAorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK3RlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNz
IFZhbHVlPgorY2xhc3MgTm9kZUhhc2hNYXBQb2xpY3k7Cit9ICAvLyBuYW1lc3BhY2UgY29udGFp
bmVyX2ludGVybmFsCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNsOjpub2RlX2hh
c2hfbWFwCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEFuIGBhYnNsOjpub2RlX2hh
c2hfbWFwPEssIFY+YCBpcyBhbiB1bm9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIHdoaWNo
CisvLyBoYXMgYmVlbiBvcHRpbWl6ZWQgZm9yIGJvdGggc3BlZWQgYW5kIG1lbW9yeSBmb290cHJp
bnQgaW4gbW9zdCBjb21tb24gdXNlCisvLyBjYXNlcy4gSXRzIGludGVyZmFjZSBpcyBzaW1pbGFy
IHRvIHRoYXQgb2YgYHN0ZDo6dW5vcmRlcmVkX21hcDxLLCBWPmAgd2l0aAorLy8gdGhlIGZvbGxv
d2luZyBub3RhYmxlIGRpZmZlcmVuY2VzOgorLy8KKy8vICogU3VwcG9ydHMgaGV0ZXJvZ2VuZW91
cyBsb29rdXAsIHRocm91Z2ggYGZpbmQoKWAsIGBvcGVyYXRvcltdKClgIGFuZAorLy8gICBgaW5z
ZXJ0KClgLCBwcm92aWRlZCB0aGF0IHRoZSBtYXAgaXMgcHJvdmlkZWQgYSBjb21wYXRpYmxlIGhl
dGVyb2dlbmVvdXMKKy8vICAgaGFzaGluZyBmdW5jdGlvbiBhbmQgZXF1YWxpdHkgb3BlcmF0b3Iu
CisvLyAqIENvbnRhaW5zIGEgYGNhcGFjaXR5KClgIG1lbWJlciBmdW5jdGlvbiBpbmRpY2F0aW5n
IHRoZSBudW1iZXIgb2YgZWxlbWVudAorLy8gICBzbG90cyAob3BlbiwgZGVsZXRlZCwgYW5kIGVt
cHR5KSB3aXRoaW4gdGhlIGhhc2ggbWFwLgorLy8gKiBSZXR1cm5zIGB2b2lkYCBmcm9tIHRoZSBg
ZXJhc2UoaXRlcmF0b3IpYCBvdmVybG9hZC4KKy8vCisvLyBCeSBkZWZhdWx0LCBgbm9kZV9oYXNo
X21hcGAgdXNlcyB0aGUgYGFic2w6Okhhc2hgIGhhc2hpbmcgZnJhbWV3b3JrLgorLy8gQWxsIGZ1
bmRhbWVudGFsIGFuZCBBYnNlaWwgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZSBgYWJzbDo6SGFzaGAg
ZnJhbWV3b3JrIGhhdmUKKy8vIGEgY29tcGF0aWJsZSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgY29t
cGFyaW5nIGluc2VydGlvbnMgaW50byBgbm9kZV9oYXNoX21hcGAuCisvLyBJZiB5b3VyIHR5cGUg
aXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgdGhlIGBhc2JsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQor
Ly8gYWJzbC9oYXNoL2hhc2guaCBmb3IgaW5mb3JtYXRpb24gb24gZXh0ZW5kaW5nIEFic2VpbCBo
YXNoaW5nIHRvIHVzZXItZGVmaW5lZAorLy8gdHlwZXMuCisvLworLy8gRXhhbXBsZToKKy8vCisv
LyAgIC8vIENyZWF0ZSBhIG5vZGUgaGFzaCBtYXAgb2YgdGhyZWUgc3RyaW5ncyAodGhhdCBtYXAg
dG8gc3RyaW5ncykKKy8vICAgYWJzbDo6bm9kZV9oYXNoX21hcDxzdGQ6OnN0cmluZywgc3RkOjpz
dHJpbmc+IGR1Y2tzID0KKy8vICAgICB7eyJhIiwgImh1ZXkifSwgeyJiIiwgImRld2V5In0sIHsi
YyIsICJsb3VpZSJ9fTsKKy8vCisvLyAgLy8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW50byB0aGUg
bm9kZSBoYXNoIG1hcAorLy8gIGR1Y2tzLmluc2VydCh7ImQiLCAiZG9uYWxkIn19OworLy8KKy8v
ICAvLyBGb3JjZSBhIHJlaGFzaCBvZiB0aGUgbm9kZSBoYXNoIG1hcAorLy8gIGR1Y2tzLnJlaGFz
aCgwKTsKKy8vCisvLyAgLy8gRmluZCB0aGUgZWxlbWVudCB3aXRoIHRoZSBrZXkgImIiCisvLyAg
c3RkOjpzdHJpbmcgc2VhcmNoX2tleSA9ICJiIjsKKy8vICBhdXRvIHJlc3VsdCA9IGR1Y2tzLmZp
bmQoc2VhcmNoX2tleSk7CisvLyAgaWYgKHJlc3VsdCAhPSBkdWNrcy5lbmQoKSkgeworLy8gICAg
c3RkOjpjb3V0IDw8ICJSZXN1bHQ6ICIgPDwgc2VhcmNoX2tleS0+c2Vjb25kIDw8IHN0ZDo6ZW5k
bDsKKy8vICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBWYWx1ZSwKKyAgICAgICAgICBj
bGFzcyBIYXNoID0gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2RlZmF1bHRfaGFzaDxL
ZXk+LAorICAgICAgICAgIGNsYXNzIEVxID0gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNo
X2RlZmF1bHRfZXE8S2V5PiwKKyAgICAgICAgICBjbGFzcyBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9y
PHN0ZDo6cGFpcjxjb25zdCBLZXksIFZhbHVlPj4+CitjbGFzcyBub2RlX2hhc2hfbWFwCisgICAg
OiBwdWJsaWMgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpyYXdfaGFzaF9tYXA8CisgICAgICAg
ICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpOb2RlSGFzaE1hcFBvbGljeTxLZXksIFZhbHVl
PiwgSGFzaCwgRXEsCisgICAgICAgICAgQWxsb2M+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1l
IG5vZGVfaGFzaF9tYXA6OnJhd19oYXNoX21hcDsKKworIHB1YmxpYzoKKyAgbm9kZV9oYXNoX21h
cCgpIHt9CisgIHVzaW5nIEJhc2U6OkJhc2U7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6YmVnaW4o
KQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhl
IGBub2RlX2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6YmVnaW47CisKKyAgLy8gbm9kZV9oYXNo
X21hcDo6Y2JlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGBub2RlX2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6Y2JlZ2lu
OworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmNlbmQoKQorICAvLworICAvLyBSZXR1cm5zIGEgY29u
c3QgaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0aGUgYG5vZGVfaGFzaF9tYXBgLgorICB1c2luZyBC
YXNlOjpjZW5kOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmVuZCgpCisgIC8vCisgIC8vIFJldHVy
bnMgYW4gaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0aGUgYG5vZGVfaGFzaF9tYXBgLgorICB1c2lu
ZyBCYXNlOjplbmQ7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6Y2FwYWNpdHkoKQorICAvLworICAv
LyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudCBzbG90cyAoYXNzaWduZWQsIGRlbGV0ZWQs
IGFuZCBlbXB0eSkKKyAgLy8gYXZhaWxhYmxlIHdpdGhpbiB0aGUgYG5vZGVfaGFzaF9tYXBgLgor
ICAvLworICAvLyBOT1RFOiB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBwYXJ0aWN1bGFyIHRvIGBh
YnNsOjpub2RlX2hhc2hfbWFwYCBhbmQgaXMKKyAgLy8gbm90IHByb3ZpZGVkIGluIHRoZSBgc3Rk
Ojp1bm9yZGVyZWRfbWFwYCBBUEkuCisgIHVzaW5nIEJhc2U6OmNhcGFjaXR5OworCisgIC8vIG5v
ZGVfaGFzaF9tYXA6OmVtcHR5KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0
aGUgYG5vZGVfaGFzaF9tYXBgIGlzIGVtcHR5LgorICB1c2luZyBCYXNlOjplbXB0eTsKKworICAv
LyBub2RlX2hhc2hfbWFwOjptYXhfc2l6ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGxhcmdl
c3QgdGhlb3JldGljYWwgcG9zc2libGUgbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGhpbiBhCisgIC8v
IGBub2RlX2hhc2hfbWFwYCB1bmRlciBjdXJyZW50IG1lbW9yeSBjb25zdHJhaW50cy4gVGhpcyB2
YWx1ZSBjYW4gYmUgdGhvdWdodAorICAvLyBvZiBhcyB0aGUgbGFyZ2VzdCB2YWx1ZSBvZiBgc3Rk
OjpkaXN0YW5jZShiZWdpbigpLCBlbmQoKSlgIGZvciBhCisgIC8vIGBub2RlX2hhc2hfbWFwPEss
IFY+YC4KKyAgdXNpbmcgQmFzZTo6bWF4X3NpemU7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6c2l6
ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjdXJyZW50bHkg
d2l0aGluIHRoZSBgbm9kZV9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OnNpemU7CisKKyAgLy8g
bm9kZV9oYXNoX21hcDo6Y2xlYXIoKQorICAvLworICAvLyBSZW1vdmVzIGFsbCBlbGVtZW50cyBm
cm9tIHRoZSBgbm9kZV9oYXNoX21hcGAuIEludmFsaWRhdGVzIGFueSByZWZlcmVuY2VzLAorICAv
LyBwb2ludGVycywgb3IgaXRlcmF0b3JzIHJlZmVycmluZyB0byBjb250YWluZWQgZWxlbWVudHMu
CisgIC8vCisgIC8vIE5PVEU6IHRoaXMgb3BlcmF0aW9uIG1heSBzaHJpbmsgdGhlIHVuZGVybHlp
bmcgYnVmZmVyLiBUbyBhdm9pZCBzaHJpbmtpbmcKKyAgLy8gdGhlIHVuZGVybHlpbmcgYnVmZmVy
IGNhbGwgYGVyYXNlKGJlZ2luKCksIGVuZCgpKWAuCisgIHVzaW5nIEJhc2U6OmNsZWFyOworCisg
IC8vIG5vZGVfaGFzaF9tYXA6OmVyYXNlKCkKKyAgLy8KKyAgLy8gRXJhc2VzIGVsZW1lbnRzIHdp
dGhpbiB0aGUgYG5vZGVfaGFzaF9tYXBgLiBFcmFzaW5nIGRvZXMgbm90IHRyaWdnZXIgYQorICAv
LyByZWhhc2guIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyB2b2lkIGVy
YXNlKGNvbnN0X2l0ZXJhdG9yIHBvcyk6CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50
IGF0IGBwb3NpdGlvbmAgb2YgdGhlIGBub2RlX2hhc2hfbWFwYCwgcmV0dXJuaW5nCisgIC8vICAg
YHZvaWRgLgorICAvLworICAvLyAgIE5PVEU6IHRoaXMgcmV0dXJuIGJlaGF2aW9yIGlzIGRpZmZl
cmVudCB0aGFuIHRoYXQgb2YgU1RMIGNvbnRhaW5lcnMgaW4KKyAgLy8gICBnZW5lcmFsIGFuZCBg
c3RkOjp1bm9yZGVyZWRfbWFwYCBpbiBwYXJ0aWN1bGFyLgorICAvLworICAvLyBpdGVyYXRvciBl
cmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCk6CisgIC8vCisg
IC8vICAgRXJhc2VzIHRoZSBlbGVtZW50cyBpbiB0aGUgb3BlbiBpbnRlcnZhbCBbYGZpcnN0YCwg
YGxhc3RgKSwgcmV0dXJuaW5nIGFuCisgIC8vICAgaXRlcmF0b3IgcG9pbnRpbmcgdG8gYGxhc3Rg
LgorICAvLworICAvLyBzaXplX3R5cGUgZXJhc2UoY29uc3Qga2V5X3R5cGUmIGtleSk6CisgIC8v
CisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50IHdpdGggdGhlIG1hdGNoaW5nIGtleSwgaWYgaXQg
ZXhpc3RzLgorICB1c2luZyBCYXNlOjplcmFzZTsKKworICAvLyBub2RlX2hhc2hfbWFwOjppbnNl
cnQoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1
ZSBpbnRvIHRoZSBgbm9kZV9oYXNoX21hcGAsCisgIC8vIHJldHVybmluZyBhbiBpdGVyYXRvciBw
b2ludGluZyB0byB0aGUgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudCwgcHJvdmlkZWQgdGhhdAorICAv
LyBhbiBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LiBJ
ZiByZWhhc2hpbmcgb2NjdXJzCisgIC8vIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRlcmF0
b3JzIGFyZSBpbnZhbGlkYXRlZC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQKKyAgLy8gYmVsb3cuCisg
IC8vCisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQoY29uc3QgaW5pdF90eXBl
JiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHZhbHVlIGludG8gdGhlIGBub2RlX2hh
c2hfbWFwYC4gUmV0dXJucyBhIHBhaXIgY29uc2lzdGluZyBvZiBhbgorICAvLyAgIGl0ZXJhdG9y
IHRvIHRoZSBpbnNlcnRlZCBlbGVtZW50IChvciB0byB0aGUgZWxlbWVudCB0aGF0IHByZXZlbnRl
ZCB0aGUKKyAgLy8gICBpbnNlcnRpb24pIGFuZCBhIGBib29sYCBkZW5vdGluZyB3aGV0aGVyIHRo
ZSBpbnNlcnRpb24gdG9vayBwbGFjZS4KKyAgLy8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9yLGJv
b2w+IGluc2VydChUJiYgdmFsdWUpOgorICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5z
ZXJ0KGluaXRfdHlwZSYmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgbW92ZWFibGUg
dmFsdWUgaW50byB0aGUgYG5vZGVfaGFzaF9tYXBgLiBSZXR1cm5zIGEgYHN0ZDo6cGFpcmAKKyAg
Ly8gICBjb25zaXN0aW5nIG9mIGFuIGl0ZXJhdG9yIHRvIHRoZSBpbnNlcnRlZCBlbGVtZW50IChv
ciB0byB0aGUgZWxlbWVudCB0aGF0CisgIC8vICAgcHJldmVudGVkIHRoZSBpbnNlcnRpb24pIGFu
ZCBhIGBib29sYCBkZW5vdGluZyB3aGV0aGVyIHRoZSBpbnNlcnRpb24gdG9vaworICAvLyAgIHBs
YWNlLgorICAvLworICAvLyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgY29u
c3QgaW5pdF90eXBlJiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRv
ciBoaW50LCBUJiYgdmFsdWUpOgorICAvLyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3Ig
aGludCwgaW5pdF90eXBlJiYgdmFsdWUpOworICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSwg
dXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24K
KyAgLy8gICBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2guIFJldHVybnMg
YW4gaXRlcmF0b3IgdG8gdGhlCisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudCwgb3IgdG8gdGhlIGV4
aXN0aW5nIGVsZW1lbnQgdGhhdCBwcmV2ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uLgorICAv
LworICAvLyB2b2lkIGluc2VydChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxh
c3QpOgorICAvLworICAvLyAgIEluc2VydHMgYSByYW5nZSBvZiB2YWx1ZXMgW2BmaXJzdGAsIGBs
YXN0YCkuCisgIC8vCisgIC8vICAgTk9URTogQWx0aG91Z2ggdGhlIFNUTCBkb2VzIG5vdCBzcGVj
aWZ5IHdoaWNoIGVsZW1lbnQgbWF5IGJlIGluc2VydGVkIGlmCisgIC8vICAgbXVsdGlwbGUga2V5
cyBjb21wYXJlIGVxdWl2YWxlbnRseSwgZm9yIGBub2RlX2hhc2hfbWFwYCB3ZSBndWFyYW50ZWUg
dGhlCisgIC8vICAgZmlyc3QgbWF0Y2ggaXMgaW5zZXJ0ZWQuCisgIC8vCisgIC8vIHZvaWQgaW5z
ZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGlsaXN0KToKKyAgLy8KKyAgLy8g
ICBJbnNlcnRzIHRoZSBlbGVtZW50cyB3aXRoaW4gdGhlIGluaXRpYWxpemVyIGxpc3QgYGlsaXN0
YC4KKyAgLy8KKyAgLy8gICBOT1RFOiBBbHRob3VnaCB0aGUgU1RMIGRvZXMgbm90IHNwZWNpZnkg
d2hpY2ggZWxlbWVudCBtYXkgYmUgaW5zZXJ0ZWQgaWYKKyAgLy8gICBtdWx0aXBsZSBrZXlzIGNv
bXBhcmUgZXF1aXZhbGVudGx5IHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCwgZm9yCisgIC8v
ICAgYG5vZGVfaGFzaF9tYXBgIHdlIGd1YXJhbnRlZSB0aGUgZmlyc3QgbWF0Y2ggaXMgaW5zZXJ0
ZWQuCisgIHVzaW5nIEJhc2U6Omluc2VydDsKKworICAvLyBub2RlX2hhc2hfbWFwOjppbnNlcnRf
b3JfYXNzaWduKCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZp
ZWQgdmFsdWUgaW50byB0aGUgYG5vZGVfaGFzaF9tYXBgIHByb3ZpZGVkCisgIC8vIHRoYXQgYSB2
YWx1ZSB3aXRoIHRoZSBnaXZlbiBrZXkgZG9lcyBub3QgYWxyZWFkeSBleGlzdCwgb3IgcmVwbGFj
ZXMgaXQgd2l0aAorICAvLyB0aGUgZWxlbWVudCB2YWx1ZSBpZiBhIGtleSBmb3IgdGhhdCB2YWx1
ZSBhbHJlYWR5IGV4aXN0cywgcmV0dXJuaW5nIGFuCisgIC8vIGl0ZXJhdG9yIHBvaW50aW5nIHRv
IHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50LiBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0bwor
ICAvLyB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4gT3Zlcmxv
YWRzIGFyZSBsaXN0ZWQKKyAgLy8gYmVsb3cuCisgIC8vCisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRv
ciwgYm9vbD4gaW5zZXJ0X29yX2Fzc2lnbihjb25zdCBpbml0X3R5cGUmIGssIFQmJiBvYmopOgor
ICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydF9vcl9hc3NpZ24oaW5pdF90eXBl
JiYgaywgVCYmIG9iaik6CisgIC8vCisgIC8vICAgSW5zZXJ0cy9Bc3NpZ25zIChvciBtb3Zlcykg
dGhlIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW50byB0aGUKKyAgLy8gICBgbm9kZV9o
YXNoX21hcGAuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3RfaXRl
cmF0b3IgaGludCwKKyAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbml0X3R5
cGUmIGssIFQmJiBvYmopOgorICAvLyBpdGVyYXRvciBpbnNlcnRfb3JfYXNzaWduKGNvbnN0X2l0
ZXJhdG9yIGhpbnQsIGluaXRfdHlwZSYmIGssIFQmJiBvYmopOgorICAvLworICAvLyAgIEluc2Vy
dHMvQXNzaWducyAob3IgbW92ZXMpIHRoZSBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQga2V5IGlu
dG8gdGhlCisgIC8vICAgYG5vZGVfaGFzaF9tYXBgIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGlu
dGAgYXMgYSBub24tYmluZGluZyBzdWdnZXN0aW9uCisgIC8vICAgZm9yIHdoZXJlIHRvIGJlZ2lu
IHRoZSBpbnNlcnRpb24gc2VhcmNoLgorICB1c2luZyBCYXNlOjppbnNlcnRfb3JfYXNzaWduOwor
CisgIC8vIG5vZGVfaGFzaF9tYXA6OmVtcGxhY2UoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVs
ZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4tcGxhY2UK
KyAgLy8gd2l0aGluIHRoZSBgbm9kZV9oYXNoX21hcGAsIHByb3ZpZGVkIHRoYXQgbm8gZWxlbWVu
dCB3aXRoIHRoZSBnaXZlbiBrZXkKKyAgLy8gYWxyZWFkeSBleGlzdHMuCisgIC8vCisgIC8vIFRo
ZSBlbGVtZW50IG1heSBiZSBjb25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4g
ZWxlbWVudCB3aXRoIHRoZQorICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2Fz
ZSB0aGUgbmV3bHkgY29uc3RydWN0ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8vIGRlc3Ryb3llZCBp
bW1lZGlhdGVseS4gUHJlZmVyIGB0cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90
CisgIC8vIGNvcHlhYmxlIG9yIG1vdmVhYmxlLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2Nj
dXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4K
KyAgdXNpbmcgQmFzZTo6ZW1wbGFjZTsKKworICAvLyBub2RlX2hhc2hfbWFwOjplbXBsYWNlX2hp
bnQoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1
ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4tcGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgbm9kZV9oYXNo
X21hcGAsIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZworICAv
LyBzdWdnZXN0aW9uIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaCwgYW5k
IG9ubHkgaW5zZXJ0cworICAvLyBwcm92aWRlZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2
ZW4ga2V5IGFscmVhZHkgZXhpc3RzLgorICAvLworICAvLyBUaGUgZWxlbWVudCBtYXkgYmUgY29u
c3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0aGUKKyAg
Ly8ga2V5IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNvbnN0cnVj
dGVkIGVsZW1lbnQgd2lsbCBiZQorICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuIFByZWZlciBg
dHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlvdXIga2V5IGlzIG5vdAorICAvLyBjb3B5YWJsZSBvciBt
b3ZlYWJsZS4KKyAgLy8KKyAgLy8gSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUgdG8gdGhlIGluc2Vy
dGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIHVzaW5nIEJhc2U6OmVtcGxh
Y2VfaGludDsKKworICAvLyBub2RlX2hhc2hfbWFwOjp0cnlfZW1wbGFjZSgpCisgIC8vCisgIC8v
IEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGlu
ZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBub2RlX2hhc2hfbWFwYCwgcHJvdmlkZWQg
dGhhdCBubyBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4g
VW5saWtlIGBlbXBsYWNlKClgLCBpZiBhbiBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAv
LyBhbHJlYWR5IGV4aXN0cywgd2UgZ3VhcmFudGVlIHRoYXQgbm8gZWxlbWVudCBpcyBjb25zdHJ1
Y3RlZC4KKyAgLy8KKyAgLy8gSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUgdG8gdGhlIGluc2VydGlv
biwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIC8vIE92ZXJsb2FkcyBhcmUgbGlz
dGVkIGJlbG93LgorICAvLworICAvLyAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gdHJ5X2Vt
cGxhY2UoY29uc3Qga2V5X3R5cGUmIGssIEFyZ3MmJi4uLiBhcmdzKToKKyAgLy8gICBzdGQ6OnBh
aXI8aXRlcmF0b3IsIGJvb2w+IHRyeV9lbXBsYWNlKGtleV90eXBlJiYgaywgQXJncyYmLi4uIGFy
Z3MpOgorICAvLworICAvLyBJbnNlcnRzICh2aWEgY29weSBvciBtb3ZlKSB0aGUgZWxlbWVudCBv
ZiB0aGUgc3BlY2lmaWVkIGtleSBpbnRvIHRoZQorICAvLyBgbm9kZV9oYXNoX21hcGAuCisgIC8v
CisgIC8vICAgaXRlcmF0b3IgdHJ5X2VtcGxhY2UoY29uc3RfaXRlcmF0b3IgaGludCwKKyAgLy8g
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbml0X3R5cGUmIGssIEFyZ3MmJi4uLiBhcmdz
KToKKyAgLy8gICBpdGVyYXRvciB0cnlfZW1wbGFjZShjb25zdF9pdGVyYXRvciBoaW50LCBpbml0
X3R5cGUmJiBrLCBBcmdzJiYuLi4gYXJncyk6CisgIC8vCisgIC8vIEluc2VydHMgKHZpYSBjb3B5
IG9yIG1vdmUpIHRoZSBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQga2V5IGludG8gdGhlCisgIC8v
IGBub2RlX2hhc2hfbWFwYCB1c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRgIGFzIGEgbm9uLWJp
bmRpbmcgc3VnZ2VzdGlvbgorICAvLyBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBz
ZWFyY2guCisgIHVzaW5nIEJhc2U6OnRyeV9lbXBsYWNlOworCisgIC8vIG5vZGVfaGFzaF9tYXA6
OmV4dHJhY3QoKQorICAvLworICAvLyBFeHRyYWN0cyB0aGUgaW5kaWNhdGVkIGVsZW1lbnQsIGVy
YXNpbmcgaXQgaW4gdGhlIHByb2Nlc3MsIGFuZCByZXR1cm5zIGl0CisgIC8vIGFzIGEgQysrMTct
Y29tcGF0aWJsZSBub2RlIGhhbmRsZS4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8v
CisgIC8vIG5vZGVfdHlwZSBleHRyYWN0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8K
KyAgLy8gICBFeHRyYWN0cyB0aGUga2V5LHZhbHVlIHBhaXIgb2YgdGhlIGVsZW1lbnQgYXQgdGhl
IGluZGljYXRlZCBwb3NpdGlvbiBhbmQKKyAgLy8gICByZXR1cm5zIGEgbm9kZSBoYW5kbGUgb3du
aW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEuCisgIC8vCisgIC8vIG5vZGVfdHlwZSBleHRyYWN0KGNv
bnN0IGtleV90eXBlJiB4KToKKyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0aGUga2V5LHZhbHVlIHBh
aXIgb2YgdGhlIGVsZW1lbnQgd2l0aCBhIGtleSBtYXRjaGluZyB0aGUgcGFzc2VkCisgIC8vICAg
a2V5IHZhbHVlIGFuZCByZXR1cm5zIGEgbm9kZSBoYW5kbGUgb3duaW5nIHRoYXQgZXh0cmFjdGVk
IGRhdGEuIElmIHRoZQorICAvLyAgIGBub2RlX2hhc2hfbWFwYCBkb2VzIG5vdCBjb250YWluIGFu
IGVsZW1lbnQgd2l0aCBhIG1hdGNoaW5nIGtleSwgdGhpcworICAvLyAgIGZ1bmN0aW9uIHJldHVy
bnMgYW4gZW1wdHkgbm9kZSBoYW5kbGUuCisgIHVzaW5nIEJhc2U6OmV4dHJhY3Q7CisKKyAgLy8g
bm9kZV9oYXNoX21hcDo6bWVyZ2UoKQorICAvLworICAvLyBFeHRyYWN0cyBlbGVtZW50cyBmcm9t
IGEgZ2l2ZW4gYHNvdXJjZWAgbm9kZSBoYXNoIG1hcCBpbnRvIHRoaXMKKyAgLy8gYG5vZGVfaGFz
aF9tYXBgLiBJZiB0aGUgZGVzdGluYXRpb24gYG5vZGVfaGFzaF9tYXBgIGFscmVhZHkgY29udGFp
bnMgYW4KKyAgLy8gZWxlbWVudCB3aXRoIGFuIGVxdWl2YWxlbnQga2V5LCB0aGF0IGVsZW1lbnQg
aXMgbm90IGV4dHJhY3RlZC4KKyAgdXNpbmcgQmFzZTo6bWVyZ2U7CisKKyAgLy8gbm9kZV9oYXNo
X21hcDo6c3dhcChub2RlX2hhc2hfbWFwJiBvdGhlcikKKyAgLy8KKyAgLy8gRXhjaGFuZ2VzIHRo
ZSBjb250ZW50cyBvZiB0aGlzIGBub2RlX2hhc2hfbWFwYCB3aXRoIHRob3NlIG9mIHRoZSBgb3Ro
ZXJgCisgIC8vIG5vZGUgaGFzaCBtYXAsIGF2b2lkaW5nIGludm9jYXRpb24gb2YgYW55IG1vdmUs
IGNvcHksIG9yIHN3YXAgb3BlcmF0aW9ucyBvbgorICAvLyBpbmRpdmlkdWFsIGVsZW1lbnRzLgor
ICAvLworICAvLyBBbGwgaXRlcmF0b3JzIGFuZCByZWZlcmVuY2VzIG9uIHRoZSBgbm9kZV9oYXNo
X21hcGAgcmVtYWluIHZhbGlkLCBleGNlcHRpbmcKKyAgLy8gZm9yIHRoZSBwYXN0LXRoZS1lbmQg
aXRlcmF0b3IsIHdoaWNoIGlzIGludmFsaWRhdGVkLgorICAvLworICAvLyBgc3dhcCgpYCByZXF1
aXJlcyB0aGF0IHRoZSBub2RlIGhhc2ggbWFwJ3MgaGFzaGluZyBhbmQga2V5IGVxdWl2YWxlbmNl
CisgIC8vIGZ1bmN0aW9ucyBiZSBTd2FwcGFibGUsIGFuZCBhcmUgZXhjaGFnZWQgdXNpbmcgdW5x
dWFsaWZpZWQgY2FsbHMgdG8KKyAgLy8gbm9uLW1lbWJlciBgc3dhcCgpYC4gSWYgdGhlIG1hcCdz
IGFsbG9jYXRvciBoYXMKKyAgLy8gYHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlw
ZT46OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWVgCisgIC8vIHNldCB0byBgdHJ1
ZWAsIHRoZSBhbGxvY2F0b3JzIGFyZSBhbHNvIGV4Y2hhbmdlZCB1c2luZyBhbiB1bnF1YWxpZmll
ZCBjYWxsCisgIC8vIHRvIG5vbi1tZW1iZXIgYHN3YXAoKWA7IG90aGVyd2lzZSwgdGhlIGFsbG9j
YXRvcnMgYXJlIG5vdCBzd2FwcGVkLgorICB1c2luZyBCYXNlOjpzd2FwOworCisgIC8vIG5vZGVf
aGFzaF9tYXA6OnJlaGFzaChjb3VudCkKKyAgLy8KKyAgLy8gUmVoYXNoZXMgdGhlIGBub2RlX2hh
c2hfbWFwYCwgc2V0dGluZyB0aGUgbnVtYmVyIG9mIHNsb3RzIHRvIGJlIGF0IGxlYXN0CisgIC8v
IHRoZSBwYXNzZWQgdmFsdWUuIElmIHRoZSBuZXcgbnVtYmVyIG9mIHNsb3RzIGluY3JlYXNlcyB0
aGUgbG9hZCBmYWN0b3IgbW9yZQorICAvLyB0aGFuIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBm
YWN0b3IKKyAgLy8gKGBjb3VudGAgPCBgc2l6ZSgpYCAvIGBtYXhfbG9hZF9mYWN0b3IoKWApLCB0
aGVuIHRoZSBuZXcgbnVtYmVyIG9mIHNsb3RzCisgIC8vIHdpbGwgYmUgYXQgbGVhc3QgYHNpemUo
KWAgLyBgbWF4X2xvYWRfZmFjdG9yKClgLgorICAvLworICAvLyBUbyBmb3JjZSBhIHJlaGFzaCwg
cGFzcyByZWhhc2goMCkuCisgIHVzaW5nIEJhc2U6OnJlaGFzaDsKKworICAvLyBub2RlX2hhc2hf
bWFwOjpyZXNlcnZlKGNvdW50KQorICAvLworICAvLyBTZXRzIHRoZSBudW1iZXIgb2Ygc2xvdHMg
aW4gdGhlIGBub2RlX2hhc2hfbWFwYCB0byB0aGUgbnVtYmVyIG5lZWRlZCB0bworICAvLyBhY2Nv
bW1vZGF0ZSBhdCBsZWFzdCBgY291bnRgIHRvdGFsIGVsZW1lbnRzIHdpdGhvdXQgZXhjZWVkaW5n
IHRoZSBjdXJyZW50CisgIC8vIG1heGltdW0gbG9hZCBmYWN0b3IsIGFuZCBtYXkgcmVoYXNoIHRo
ZSBjb250YWluZXIgaWYgbmVlZGVkLgorICB1c2luZyBCYXNlOjpyZXNlcnZlOworCisgIC8vIG5v
ZGVfaGFzaF9tYXA6OmF0KCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUg
bWFwcGVkIHZhbHVlIG9mIHRoZSBlbGVtZW50IHdpdGgga2V5IGVxdWl2YWxlbnQKKyAgLy8gdG8g
dGhlIHBhc3NlZCBrZXkuCisgIHVzaW5nIEJhc2U6OmF0OworCisgIC8vIG5vZGVfaGFzaF9tYXA6
OmNvbnRhaW5zKCkKKyAgLy8KKyAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0
aCBhIGtleSBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgCisgIC8vIGV4aXN0cyB3
aXRoaW4gdGhlIGBub2RlX2hhc2hfbWFwYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzbyBvciBgZmFs
c2VgCisgIC8vIG90aGVyd2lzZS4KKyAgdXNpbmcgQmFzZTo6Y29udGFpbnM7CisKKyAgLy8gbm9k
ZV9oYXNoX21hcDo6Y291bnQoY29uc3QgS2V5JiBrZXkpIGNvbnN0CisgIC8vCisgIC8vIFJldHVy
bnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGEga2V5IGNvbXBhcmluZyBlcXVhbCB0byB0
aGUgZ2l2ZW4KKyAgLy8gYGtleWAgd2l0aGluIHRoZSBgbm9kZV9oYXNoX21hcGAuIG5vdGUgdGhh
dCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCisgIC8vIGVpdGhlciBgMWAgb3IgYDBgIHNpbmNl
IGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gYQorICAvLyBgbm9kZV9oYXNo
X21hcGAuCisgIHVzaW5nIEJhc2U6OmNvdW50OworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmVxdWFs
X3JhbmdlKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNsb3NlZCByYW5nZSBbZmlyc3QsIGxhc3Rd
LCBkZWZpbmVkIGJ5IGEgYHN0ZDo6cGFpcmAgb2YgdHdvCisgIC8vIGl0ZXJhdG9ycywgY29udGFp
bmluZyBhbGwgZWxlbWVudHMgd2l0aCB0aGUgcGFzc2VkIGtleSBpbiB0aGUKKyAgLy8gYG5vZGVf
aGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjplcXVhbF9yYW5nZTsKKworICAvLyBub2RlX2hhc2hf
bWFwOjpmaW5kKCkKKyAgLy8KKyAgLy8gRmluZHMgYW4gZWxlbWVudCB3aXRoIHRoZSBwYXNzZWQg
YGtleWAgd2l0aGluIHRoZSBgbm9kZV9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmZpbmQ7CisK
KyAgLy8gbm9kZV9oYXNoX21hcDo6b3BlcmF0b3JbXSgpCisgIC8vCisgIC8vIFJldHVybnMgYSBy
ZWZlcmVuY2UgdG8gdGhlIHZhbHVlIG1hcHBlZCB0byB0aGUgcGFzc2VkIGtleSB3aXRoaW4gdGhl
CisgIC8vIGBub2RlX2hhc2hfbWFwYCwgcGVyZm9ybWluZyBhbiBgaW5zZXJ0KClgIGlmIHRoZSBr
ZXkgZG9lcyBub3QgYWxyZWFkeQorICAvLyBleGlzdC4gSWYgYW4gaW5zZXJ0aW9uIG9jY3VycyBh
bmQgcmVzdWx0cyBpbiBhIHJlaGFzaGluZyBvZiB0aGUgY29udGFpbmVyLAorICAvLyBhbGwgaXRl
cmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4gT3RoZXJ3aXNlIGl0ZXJhdG9ycyBhcmUgbm90IGFmZmVj
dGVkIGFuZAorICAvLyByZWZlcmVuY2VzIGFyZSBub3QgaW52YWxpZGF0ZWQuIE92ZXJsb2FkcyBh
cmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyBUJiBvcGVyYXRvcltdKGNvbnN0IEtleSYga2V5
KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGFuIGluaXRfdHlwZSBvYmplY3QgY29uc3RydWN0ZWQg
aW4tcGxhY2UgaWYgdGhlIGVsZW1lbnQgd2l0aCB0aGUKKyAgLy8gICBnaXZlbiBrZXkgZG9lcyBu
b3QgZXhpc3QuCisgIC8vCisgIC8vIFQmIG9wZXJhdG9yW10oS2V5JiYga2V5KToKKyAgLy8KKyAg
Ly8gICBJbnNlcnRzIGFuIGluaXRfdHlwZSBvYmplY3QgY29uc3RydWN0ZWQgaW4tcGxhY2UgcHJv
dmlkZWQgdGhhdCBhbiBlbGVtZW50CisgIC8vICAgd2l0aCB0aGUgZ2l2ZW4ga2V5IGRvZXMgbm90
IGV4aXN0LgorICB1c2luZyBCYXNlOjpvcGVyYXRvcltdOworCisgIC8vIG5vZGVfaGFzaF9tYXA6
OmJ1Y2tldF9jb3VudCgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiAiYnVja2V0
cyIgd2l0aGluIHRoZSBgbm9kZV9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmJ1Y2tldF9jb3Vu
dDsKKworICAvLyBub2RlX2hhc2hfbWFwOjpsb2FkX2ZhY3RvcigpCisgIC8vCisgIC8vIFJldHVy
bnMgdGhlIGN1cnJlbnQgbG9hZCBmYWN0b3Igb2YgdGhlIGBub2RlX2hhc2hfbWFwYCAodGhlIGF2
ZXJhZ2UgbnVtYmVyCisgIC8vIG9mIHNsb3RzIG9jY3VwaWVkIHdpdGggYSB2YWx1ZSB3aXRoaW4g
dGhlIGhhc2ggbWFwKS4KKyAgdXNpbmcgQmFzZTo6bG9hZF9mYWN0b3I7CisKKyAgLy8gbm9kZV9o
YXNoX21hcDo6bWF4X2xvYWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8gTWFuYWdlcyB0aGUgbWF4aW11
bSBsb2FkIGZhY3RvciBvZiB0aGUgYG5vZGVfaGFzaF9tYXBgLiBPdmVybG9hZHMgYXJlCisgIC8v
IGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gZmxvYXQgbm9kZV9oYXNoX21hcDo6bWF4X2xvYWRf
ZmFjdG9yKCkKKyAgLy8KKyAgLy8gICBSZXR1cm5zIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBm
YWN0b3Igb2YgdGhlIGBub2RlX2hhc2hfbWFwYC4KKyAgLy8KKyAgLy8gdm9pZCBub2RlX2hhc2hf
bWFwOjptYXhfbG9hZF9mYWN0b3IoZmxvYXQgbWwpCisgIC8vCisgIC8vICAgU2V0cyB0aGUgbWF4
aW11bSBsb2FkIGZhY3RvciBvZiB0aGUgYG5vZGVfaGFzaF9tYXBgIHRvIHRoZSBwYXNzZWQgdmFs
dWUuCisgIC8vCisgIC8vICAgTk9URTogVGhpcyBvdmVybG9hZCBpcyBwcm92aWRlZCBvbmx5IGZv
ciBBUEkgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBTVEw7CisgIC8vICAgYG5vZGVfaGFzaF9tYXBg
IHdpbGwgaWdub3JlIGFueSBzZXQgbG9hZCBmYWN0b3IgYW5kIG1hbmFnZSBpdHMgcmVoYXNoaW5n
CisgIC8vICAgaW50ZXJuYWxseSBhcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgIHVzaW5n
IEJhc2U6Om1heF9sb2FkX2ZhY3RvcjsKKworICAvLyBub2RlX2hhc2hfbWFwOjpnZXRfYWxsb2Nh
dG9yKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0
ZWQgd2l0aCB0aGlzIGBub2RlX2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6Z2V0X2FsbG9jYXRv
cjsKKworICAvLyBub2RlX2hhc2hfbWFwOjpoYXNoX2Z1bmN0aW9uKCkKKyAgLy8KKyAgLy8gUmV0
dXJucyB0aGUgaGFzaGluZyBmdW5jdGlvbiB1c2VkIHRvIGhhc2ggdGhlIGtleXMgd2l0aGluIHRo
aXMKKyAgLy8gYG5vZGVfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpoYXNoX2Z1bmN0aW9uOwor
CisgIC8vIG5vZGVfaGFzaF9tYXA6OmtleV9lcSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGZ1
bmN0aW9uIHVzZWQgZm9yIGNvbXBhcmluZyBrZXlzIGVxdWFsaXR5LgorICB1c2luZyBCYXNlOjpr
ZXlfZXE7CisKKyAgQUJTTF9ERVBSRUNBVEVEKCJDYWxsIGBoYXNoX2Z1bmN0aW9uKClgIGluc3Rl
YWQuIikKKyAgdHlwZW5hbWUgQmFzZTo6aGFzaGVyIGhhc2hfZnVuY3QoKSB7IHJldHVybiB0aGlz
LT5oYXNoX2Z1bmN0aW9uKCk7IH0KKworICBBQlNMX0RFUFJFQ0FURUQoIkNhbGwgYHJlaGFzaCgp
YCBpbnN0ZWFkLiIpCisgIHZvaWQgcmVzaXplKHR5cGVuYW1lIEJhc2U6OnNpemVfdHlwZSBoaW50
KSB7IHRoaXMtPnJlaGFzaChoaW50KTsgfQorfTsKKworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRl
cm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIFZhbHVlPgorY2xhc3MgTm9kZUhh
c2hNYXBQb2xpY3kKKyAgICA6IHB1YmxpYyBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Om5vZGVf
aGFzaF9wb2xpY3k8CisgICAgICAgICAgc3RkOjpwYWlyPGNvbnN0IEtleSwgVmFsdWU+JiwgTm9k
ZUhhc2hNYXBQb2xpY3k8S2V5LCBWYWx1ZT4+IHsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHN0ZDo6
cGFpcjxjb25zdCBLZXksIFZhbHVlPjsKKworIHB1YmxpYzoKKyAgdXNpbmcga2V5X3R5cGUgPSBL
ZXk7CisgIHVzaW5nIG1hcHBlZF90eXBlID0gVmFsdWU7CisgIHVzaW5nIGluaXRfdHlwZSA9IHN0
ZDo6cGFpcjwvKm5vbiBjb25zdCovIGtleV90eXBlLCBtYXBwZWRfdHlwZT47CisKKyAgdGVtcGxh
dGUgPGNsYXNzIEFsbG9jYXRvciwgY2xhc3MuLi4gQXJncz4KKyAgc3RhdGljIHZhbHVlX3R5cGUq
IG5ld19lbGVtZW50KEFsbG9jYXRvciogYWxsb2MsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgdXNp
bmcgUGFpckFsbG9jID0gdHlwZW5hbWUgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czwKKyAgICAgICAg
QWxsb2NhdG9yPjo6dGVtcGxhdGUgcmViaW5kX2FsbG9jPHZhbHVlX3R5cGU+OworICAgIFBhaXJB
bGxvYyBwYWlyX2FsbG9jKCphbGxvYyk7CisgICAgdmFsdWVfdHlwZSogcmVzID0KKyAgICAgICAg
YWJzbDo6YWxsb2NhdG9yX3RyYWl0czxQYWlyQWxsb2M+OjphbGxvY2F0ZShwYWlyX2FsbG9jLCAx
KTsKKyAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPFBhaXJBbGxvYz46OmNvbnN0cnVjdChwYWly
X2FsbG9jLCByZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICByZXR1cm4gcmVzOworICB9
CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgZGVsZXRlX2Vs
ZW1lbnQoQWxsb2NhdG9yKiBhbGxvYywgdmFsdWVfdHlwZSogcGFpcikgeworICAgIHVzaW5nIFBh
aXJBbGxvYyA9IHR5cGVuYW1lIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8CisgICAgICAgIEFsbG9j
YXRvcj46OnRlbXBsYXRlIHJlYmluZF9hbGxvYzx2YWx1ZV90eXBlPjsKKyAgICBQYWlyQWxsb2Mg
cGFpcl9hbGxvYygqYWxsb2MpOworICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8UGFpckFsbG9j
Pjo6ZGVzdHJveShwYWlyX2FsbG9jLCBwYWlyKTsKKyAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRz
PFBhaXJBbGxvYz46OmRlYWxsb2NhdGUocGFpcl9hbGxvYywgcGFpciwgMSk7CisgIH0KKworICB0
ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MuLi4gQXJncz4KKyAgc3RhdGljIGRlY2x0eXBlKGFic2w6
OmNvbnRhaW5lcl9pbnRlcm5hbDo6RGVjb21wb3NlUGFpcigKKyAgICAgIHN0ZDo6ZGVjbHZhbDxG
PigpLCBzdGQ6OmRlY2x2YWw8QXJncz4oKS4uLikpCisgIGFwcGx5KEYmJiBmLCBBcmdzJiYuLi4g
YXJncykgeworICAgIHJldHVybiBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkRlY29tcG9zZVBh
aXIoc3RkOjpmb3J3YXJkPEY+KGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisg
IHN0YXRpYyBzaXplX3QgZWxlbWVudF9zcGFjZV91c2VkKGNvbnN0IHZhbHVlX3R5cGUqKSB7Cisg
ICAgcmV0dXJuIHNpemVvZih2YWx1ZV90eXBlKTsKKyAgfQorCisgIHN0YXRpYyBWYWx1ZSYgdmFs
dWUodmFsdWVfdHlwZSogZWxlbSkgeyByZXR1cm4gZWxlbS0+c2Vjb25kOyB9CisgIHN0YXRpYyBj
b25zdCBWYWx1ZSYgdmFsdWUoY29uc3QgdmFsdWVfdHlwZSogZWxlbSkgeyByZXR1cm4gZWxlbS0+
c2Vjb25kOyB9Cit9OworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8g
bmFtZXNwYWNlIGFic2wKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfTk9ERV9IQVNIX01BUF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9tYXBfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfbWFwX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ3ODk2NDRj
MjRlOGM4MTc0MTQ5M2U1NWJmMGI2MWUyZjM1NjY2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9ub2RlX2hhc2hfbWFwX3Rlc3QuY2MKQEAgLTAsMCArMSwyMTggQEAKKy8vIENv
cHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2NvbnRh
aW5lci9ub2RlX2hhc2hfbWFwLmgiCisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC90cmFja2VkLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVk
X21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvdW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCIKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCit1c2lu
ZyA6OnRlc3Rpbmc6OkZpZWxkOwordXNpbmcgOjp0ZXN0aW5nOjpQYWlyOwordXNpbmcgOjp0ZXN0
aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZTsKKwordXNpbmcgTWFwVHlwZXMgPSA6OnRlc3Rpbmc6
OlR5cGVzPAorICAgIGFic2w6Om5vZGVfaGFzaF9tYXA8aW50LCBpbnQsIFN0YXRlZnVsVGVzdGlu
Z0hhc2gsIFN0YXRlZnVsVGVzdGluZ0VxdWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b2M8c3RkOjpwYWlyPGNvbnN0IGludCwgaW50Pj4+LAorICAgIGFic2w6Om5vZGVfaGFzaF9tYXA8
c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgU3RhdGVmdWxUZXN0aW5nRXF1YWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICBBbGxvYzxzdGQ6OnBhaXI8Y29uc3Qgc3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4+PjsK
KworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTm9kZUhhc2hNYXAsIENvbnN0cnVjdG9y
VGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTm9kZUhhc2hN
YXAsIExvb2t1cFRlc3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KE5vZGVIYXNoTWFwLCBNb2RpZmllcnNUZXN0LCBNYXBUeXBlcyk7CisKK3VzaW5nIE0gPSBhYnNs
Ojpub2RlX2hhc2hfbWFwPHN0ZDo6c3RyaW5nLCBUcmFja2VkPGludD4+OworCitURVNUKE5vZGVI
YXNoTWFwLCBFbXBsYWNlKSB7CisgIE0gbTsKKyAgVHJhY2tlZDxpbnQ+IHQoNTMpOworICBtLmVt
cGxhY2UoImEiLCB0KTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21vdmVzKCkpOworICBBU1NFUlRf
RVEoMSwgdC5udW1fY29waWVzKCkpOworCisgIG0uZW1wbGFjZShzdGQ6OnN0cmluZygiYSIpLCB0
KTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21vdmVzKCkpOworICBBU1NFUlRfRVEoMSwgdC5udW1f
Y29waWVzKCkpOworCisgIHN0ZDo6c3RyaW5nIGEoImEiKTsKKyAgbS5lbXBsYWNlKGEsIHQpOwor
ICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSgxLCB0Lm51bV9jb3Bp
ZXMoKSk7CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcgY2EoImEiKTsKKyAgbS5lbXBsYWNlKGEsIHQp
OworICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSgxLCB0Lm51bV9j
b3BpZXMoKSk7CisKKyAgbS5lbXBsYWNlKHN0ZDo6bWFrZV9wYWlyKCJhIiwgdCkpOworICBBU1NF
UlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSgyLCB0Lm51bV9jb3BpZXMoKSk7
CisKKyAgbS5lbXBsYWNlKHN0ZDo6bWFrZV9wYWlyKHN0ZDo6c3RyaW5nKCJhIiksIHQpKTsKKyAg
QVNTRVJUX0VRKDAsIHQubnVtX21vdmVzKCkpOworICBBU1NFUlRfRVEoMywgdC5udW1fY29waWVz
KCkpOworCisgIHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgVHJhY2tlZDxpbnQ+PiBwKCJhIiwgdCk7
CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDQsIHQubnVtX2Nv
cGllcygpKTsKKyAgbS5lbXBsYWNlKHApOworICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7
CisgIEFTU0VSVF9FUSg0LCB0Lm51bV9jb3BpZXMoKSk7CisKKyAgY29uc3Qgc3RkOjpwYWlyPHN0
ZDo6c3RyaW5nLCBUcmFja2VkPGludD4+IGNwKCJhIiwgdCk7CisgIEFTU0VSVF9FUSgwLCB0Lm51
bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDUsIHQubnVtX2NvcGllcygpKTsKKyAgbS5lbXBsYWNl
KGNwKTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21vdmVzKCkpOworICBBU1NFUlRfRVEoNSwgdC5u
dW1fY29waWVzKCkpOworCisgIHN0ZDo6cGFpcjxjb25zdCBzdGQ6OnN0cmluZywgVHJhY2tlZDxp
bnQ+PiBwYygiYSIsIHQpOworICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VS
VF9FUSg2LCB0Lm51bV9jb3BpZXMoKSk7CisgIG0uZW1wbGFjZShwYyk7CisgIEFTU0VSVF9FUSgw
LCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDYsIHQubnVtX2NvcGllcygpKTsKKworICBj
b25zdCBzdGQ6OnBhaXI8Y29uc3Qgc3RkOjpzdHJpbmcsIFRyYWNrZWQ8aW50Pj4gY3BjKCJhIiwg
dCk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDcsIHQubnVt
X2NvcGllcygpKTsKKyAgbS5lbXBsYWNlKGNwYyk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3Zl
cygpKTsKKyAgQVNTRVJUX0VRKDcsIHQubnVtX2NvcGllcygpKTsKKworICBtLmVtcGxhY2Uoc3Rk
OjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoImEiKSwKKyAgICAg
ICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSh0KSk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9t
b3ZlcygpKTsKKyAgQVNTRVJUX0VRKDcsIHQubnVtX2NvcGllcygpKTsKKworICBtLmVtcGxhY2Uo
c3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoc3RkOjpzdHJp
bmcoImEiKSksCisgICAgICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUodCkpOworICBBU1NF
UlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSg3LCB0Lm51bV9jb3BpZXMoKSk7
Cit9CisKK1RFU1QoTm9kZUhhc2hNYXAsIEFzc2lnblJlY3Vyc2l2ZSkgeworICBzdHJ1Y3QgVHJl
ZSB7CisgICAgLy8gVmVyaWZ5IHRoYXQgdW5vcmRlcmVkX21hcDxLLCBJbmNvbXBsZXRlVHlwZT4g
Y2FuIGJlIGluc3RhbnRpYXRlZC4KKyAgICBhYnNsOjpub2RlX2hhc2hfbWFwPGludCwgVHJlZT4g
Y2hpbGRyZW47CisgIH07CisgIFRyZWUgcm9vdDsKKyAgY29uc3QgVHJlZSYgY2hpbGQgPSByb290
LmNoaWxkcmVuLmVtcGxhY2UoKS5maXJzdC0+c2Vjb25kOworICAvLyBWZXJpZnkgdGhhdCBgbGhz
ID0gcmhzYCBkb2Vzbid0IHJlYWQgcmhzIGFmdGVyIGNsZWFyaW5nIGxocy4KKyAgcm9vdCA9IGNo
aWxkOworfQorCitURVNUKEZsYXRIYXNoTWFwLCBNb3ZlT25seUtleSkgeworICBzdHJ1Y3QgS2V5
IHsKKyAgICBLZXkoKSA9IGRlZmF1bHQ7CisgICAgS2V5KEtleSYmKSA9IGRlZmF1bHQ7CisgICAg
S2V5JiBvcGVyYXRvcj0oS2V5JiYpID0gZGVmYXVsdDsKKyAgfTsKKyAgc3RydWN0IEVxIHsKKyAg
ICBib29sIG9wZXJhdG9yKCkoY29uc3QgS2V5JiwgY29uc3QgS2V5JikgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICB9OworICBzdHJ1Y3QgSGFzaCB7CisgICAgc2l6ZV90IG9wZXJhdG9yKCkoY29u
c3QgS2V5JikgY29uc3QgeyByZXR1cm4gMDsgfQorICB9OworICBhYnNsOjpub2RlX2hhc2hfbWFw
PEtleSwgaW50LCBIYXNoLCBFcT4gbTsKKyAgbVtLZXkoKV07Cit9CisKK3N0cnVjdCBOb25Nb3Zh
YmxlS2V5IHsKKyAgZXhwbGljaXQgTm9uTW92YWJsZUtleShpbnQgaSkgOiBpKGkpIHt9CisgIE5v
bk1vdmFibGVLZXkoTm9uTW92YWJsZUtleSYmKSA9IGRlbGV0ZTsKKyAgaW50IGk7Cit9Oworc3Ry
dWN0IE5vbk1vdmFibGVLZXlIYXNoIHsKKyAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOwor
ICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBOb25Nb3ZhYmxlS2V5JiBrKSBjb25zdCB7IHJldHVy
biBrLmk7IH0KKyAgc2l6ZV90IG9wZXJhdG9yKCkoaW50IGspIGNvbnN0IHsgcmV0dXJuIGs7IH0K
K307CitzdHJ1Y3QgTm9uTW92YWJsZUtleUVxIHsKKyAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2
b2lkOworICBib29sIG9wZXJhdG9yKCkoY29uc3QgTm9uTW92YWJsZUtleSYgYSwgY29uc3QgTm9u
TW92YWJsZUtleSYgYikgY29uc3QgeworICAgIHJldHVybiBhLmkgPT0gYi5pOworICB9CisgIGJv
b2wgb3BlcmF0b3IoKShjb25zdCBOb25Nb3ZhYmxlS2V5JiBhLCBpbnQgYikgY29uc3QgeyByZXR1
cm4gYS5pID09IGI7IH0KK307CisKK1RFU1QoTm9kZUhhc2hNYXAsIE1lcmdlRXh0cmFjdEluc2Vy
dCkgeworICBhYnNsOjpub2RlX2hhc2hfbWFwPE5vbk1vdmFibGVLZXksIGludCwgTm9uTW92YWJs
ZUtleUhhc2gsIE5vbk1vdmFibGVLZXlFcT4KKyAgICAgIHNldDEsIHNldDI7CisgIHNldDEuZW1w
bGFjZShzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6bWFrZV90dXBsZSg3KSwKKyAgICAg
ICAgICAgICAgIHN0ZDo6bWFrZV90dXBsZSgtNykpOworICBzZXQxLmVtcGxhY2Uoc3RkOjpwaWVj
ZXdpc2VfY29uc3RydWN0LCBzdGQ6Om1ha2VfdHVwbGUoMTcpLAorICAgICAgICAgICAgICAgc3Rk
OjptYWtlX3R1cGxlKC0xNykpOworCisgIHNldDIuZW1wbGFjZShzdGQ6OnBpZWNld2lzZV9jb25z
dHJ1Y3QsIHN0ZDo6bWFrZV90dXBsZSg3KSwKKyAgICAgICAgICAgICAgIHN0ZDo6bWFrZV90dXBs
ZSgtNzApKTsKKyAgc2V0Mi5lbXBsYWNlKHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjpt
YWtlX3R1cGxlKDE5KSwKKyAgICAgICAgICAgICAgIHN0ZDo6bWFrZV90dXBsZSgtMTkwKSk7CisK
KyAgYXV0byBFbGVtID0gW10oaW50IGtleSwgaW50IHZhbHVlKSB7CisgICAgcmV0dXJuIFBhaXIo
RmllbGQoJk5vbk1vdmFibGVLZXk6OmksIGtleSksIHZhbHVlKTsKKyAgfTsKKworICBFWFBFQ1Rf
VEhBVChzZXQxLCBVbm9yZGVyZWRFbGVtZW50c0FyZShFbGVtKDcsIC03KSwgRWxlbSgxNywgLTE3
KSkpOworICBFWFBFQ1RfVEhBVChzZXQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShFbGVtKDcsIC03
MCksIEVsZW0oMTksIC0xOTApKSk7CisKKyAgLy8gTm9uTW92YWJsZUtleSBpcyBuZWl0aGVyIGNv
cHlhYmxlIG5vciBtb3ZhYmxlLiBXZSBzaG91bGQgc3RpbGwgYmUgYWJsZSB0bworICAvLyBtb3Zl
IG5vZGVzIGFyb3VuZC4KKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19tb3ZlX2NvbnN0cnVjdGli
bGU8Tm9uTW92YWJsZUtleT46OnZhbHVlLCAiIik7CisgIHNldDEubWVyZ2Uoc2V0Mik7CisKKyAg
RVhQRUNUX1RIQVQoc2V0MSwKKyAgICAgICAgICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoRWxl
bSg3LCAtNyksIEVsZW0oMTcsIC0xNyksIEVsZW0oMTksIC0xOTApKSk7CisgIEVYUEVDVF9USEFU
KHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKEVsZW0oNywgLTcwKSkpOworCisgIGF1dG8gbm9k
ZSA9IHNldDEuZXh0cmFjdCg3KTsKKyAgRVhQRUNUX1RSVUUobm9kZSk7CisgIEVYUEVDVF9FUShu
b2RlLmtleSgpLmksIDcpOworICBFWFBFQ1RfRVEobm9kZS5tYXBwZWQoKSwgLTcpOworICBFWFBF
Q1RfVEhBVChzZXQxLCBVbm9yZGVyZWRFbGVtZW50c0FyZShFbGVtKDE3LCAtMTcpLCBFbGVtKDE5
LCAtMTkwKSkpOworCisgIGF1dG8gaW5zZXJ0X3Jlc3VsdCA9IHNldDIuaW5zZXJ0KHN0ZDo6bW92
ZShub2RlKSk7CisgIEVYUEVDVF9GQUxTRShub2RlKTsKKyAgRVhQRUNUX0ZBTFNFKGluc2VydF9y
ZXN1bHQuaW5zZXJ0ZWQpOworICBFWFBFQ1RfVFJVRShpbnNlcnRfcmVzdWx0Lm5vZGUpOworICBF
WFBFQ1RfRVEoaW5zZXJ0X3Jlc3VsdC5ub2RlLmtleSgpLmksIDcpOworICBFWFBFQ1RfRVEoaW5z
ZXJ0X3Jlc3VsdC5ub2RlLm1hcHBlZCgpLCAtNyk7CisgIEVYUEVDVF9USEFUKCppbnNlcnRfcmVz
dWx0LnBvc2l0aW9uLCBFbGVtKDcsIC03MCkpOworICBFWFBFQ1RfVEhBVChzZXQyLCBVbm9yZGVy
ZWRFbGVtZW50c0FyZShFbGVtKDcsIC03MCkpKTsKKworICBub2RlID0gc2V0MS5leHRyYWN0KDE3
KTsKKyAgRVhQRUNUX1RSVUUobm9kZSk7CisgIEVYUEVDVF9FUShub2RlLmtleSgpLmksIDE3KTsK
KyAgRVhQRUNUX0VRKG5vZGUubWFwcGVkKCksIC0xNyk7CisgIEVYUEVDVF9USEFUKHNldDEsIFVu
b3JkZXJlZEVsZW1lbnRzQXJlKEVsZW0oMTksIC0xOTApKSk7CisKKyAgbm9kZS5tYXBwZWQoKSA9
IDIzOworCisgIGluc2VydF9yZXN1bHQgPSBzZXQyLmluc2VydChzdGQ6Om1vdmUobm9kZSkpOwor
ICBFWFBFQ1RfRkFMU0Uobm9kZSk7CisgIEVYUEVDVF9UUlVFKGluc2VydF9yZXN1bHQuaW5zZXJ0
ZWQpOworICBFWFBFQ1RfRkFMU0UoaW5zZXJ0X3Jlc3VsdC5ub2RlKTsKKyAgRVhQRUNUX1RIQVQo
Kmluc2VydF9yZXN1bHQucG9zaXRpb24sIEVsZW0oMTcsIDIzKSk7CisgIEVYUEVDVF9USEFUKHNl
dDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKEVsZW0oNywgLTcwKSwgRWxlbSgxNywgMjMpKSk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAor
fSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hh
c2hfc2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNoX3NldC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkw
ZDRjZTBjMTYzMWQ3OGNmZWNmY2Q4ZmMyOWExYzQ4NGFlOWY2MzcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNoX3NldC5oCkBAIC0wLDAgKzEsNDM5IEBACisvLyBD
b3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLyBGaWxlOiBub2RlX2hhc2hfc2V0LmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gQW4gYGFic2w6Om5vZGVfaGFzaF9zZXQ8VD5gIGlzIGFuIHVub3JkZXJlZCBhc3Nv
Y2lhdGl2ZSBjb250YWluZXIgZGVzaWduZWQgdG8KKy8vIGJlIGEgbW9yZSBlZmZpY2llbnQgcmVw
bGFjZW1lbnQgZm9yIGBzdGQ6OnVub3JkZXJlZF9zZXRgLiBMaWtlCisvLyBgdW5vcmRlcmVkX3Nl
dGAsIHNlYXJjaCwgaW5zZXJ0aW9uLCBhbmQgZGVsZXRpb24gb2YgbWFwIGVsZW1lbnRzIGNhbiBi
ZSBkb25lCisvLyBhcyBhbiBgTygxKWAgb3BlcmF0aW9uLiBIb3dldmVyLCBgbm9kZV9oYXNoX3Nl
dGAgKGFuZCBvdGhlciB1bm9yZGVyZWQKKy8vIGFzc29jaWF0aXZlIGNvbnRhaW5lcnMga25vd24g
YXMgdGhlIGNvbGxlY3Rpb24gb2YgQWJzZWlsICJTd2lzcyB0YWJsZXMiKQorLy8gY29udGFpbiBv
dGhlciBvcHRpbWl6YXRpb25zIHRoYXQgcmVzdWx0IGluIGJvdGggbWVtb3J5IGFuZCBjb21wdXRh
dGlvbgorLy8gYWR2YW50YWdlcy4KKy8vCisvLyBJbiBtb3N0IGNhc2VzLCB5b3VyIGRlZmF1bHQg
Y2hvaWNlIGZvciBhIGhhc2ggdGFibGUgc2hvdWxkIGJlIGEgbWFwIG9mIHR5cGUKKy8vIGBmbGF0
X2hhc2hfbWFwYCBvciBhIHNldCBvZiB0eXBlIGBmbGF0X2hhc2hfc2V0YC4gSG93ZXZlciwgaWYg
eW91IG5lZWQKKy8vIHBvaW50ZXIgc3RhYmlsaXR5LCBhIGBub2RlX2hhc2hfc2V0YCBzaG91bGQg
YmUgeW91ciBwcmVmZXJyZWQgY2hvaWNlLiBBcworLy8gd2VsbCwgaWYgeW91IGFyZSBtaWdyYXRp
bmcgeW91ciBjb2RlIGZyb20gdXNpbmcgYHN0ZDo6dW5vcmRlcmVkX3NldGAsIGEKKy8vIGBub2Rl
X2hhc2hfc2V0YCBzaG91bGQgYmUgYW4gZWFzeSBtaWdyYXRpb24uIENvbnNpZGVyIG1pZ3JhdGlu
ZyB0bworLy8gYG5vZGVfaGFzaF9zZXRgIGFuZCBwZXJoYXBzIGNvbnZlcnRpbmcgdG8gYSBtb3Jl
IGVmZmljaWVudCBgZmxhdF9oYXNoX3NldGAKKy8vIHVwb24gZnVydGhlciByZXZpZXcuCisKKyNp
Zm5kZWYgQUJTTF9DT05UQUlORVJfTk9ERV9IQVNIX1NFVF9IXworI2RlZmluZSBBQlNMX0NPTlRB
SU5FUl9OT0RFX0hBU0hfU0VUX0hfCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMuaCIgIC8v
IElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9u
b2RlX2hhc2hfcG9saWN5LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3
X2hhc2hfc2V0LmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisjaW5jbHVkZSAiYWJzbC9tZW1v
cnkvbWVtb3J5LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50
ZXJuYWwgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgTm9kZUhhc2hTZXRQb2xpY3k7
Cit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLyBhYnNsOjpub2RlX2hhc2hfc2V0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIEFuIGBhYnNsOjpub2RlX2hhc2hfc2V0PFQ+YCBpcyBhbiB1bm9yZGVyZWQgYXNzb2Np
YXRpdmUgY29udGFpbmVyIHdoaWNoCisvLyBoYXMgYmVlbiBvcHRpbWl6ZWQgZm9yIGJvdGggc3Bl
ZWQgYW5kIG1lbW9yeSBmb290cHJpbnQgaW4gbW9zdCBjb21tb24gdXNlCisvLyBjYXNlcy4gSXRz
IGludGVyZmFjZSBpcyBzaW1pbGFyIHRvIHRoYXQgb2YgYHN0ZDo6dW5vcmRlcmVkX3NldDxUPmAg
d2l0aCB0aGUKKy8vIGZvbGxvd2luZyBub3RhYmxlIGRpZmZlcmVuY2VzOgorLy8KKy8vICogU3Vw
cG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHRocm91Z2ggYGZpbmQoKWAsIGBvcGVyYXRvcltd
KClgIGFuZAorLy8gICBgaW5zZXJ0KClgLCBwcm92aWRlZCB0aGF0IHRoZSBtYXAgaXMgcHJvdmlk
ZWQgYSBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMKKy8vICAgaGFzaGluZyBmdW5jdGlvbiBhbmQg
ZXF1YWxpdHkgb3BlcmF0b3IuCisvLyAqIENvbnRhaW5zIGEgYGNhcGFjaXR5KClgIG1lbWJlciBm
dW5jdGlvbiBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgZWxlbWVudAorLy8gICBzbG90cyAob3Bl
biwgZGVsZXRlZCwgYW5kIGVtcHR5KSB3aXRoaW4gdGhlIGhhc2ggc2V0LgorLy8gKiBSZXR1cm5z
IGB2b2lkYCBmcm9tIHRoZSBgZXJhc2UoaXRlcmF0b3IpYCBvdmVybG9hZC4KKy8vCisvLyBCeSBk
ZWZhdWx0LCBgbm9kZV9oYXNoX3NldGAgdXNlcyB0aGUgYGFic2w6Okhhc2hgIGhhc2hpbmcgZnJh
bWV3b3JrLgorLy8gQWxsIGZ1bmRhbWVudGFsIGFuZCBBYnNlaWwgdHlwZXMgdGhhdCBzdXBwb3J0
IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3JrIGhhdmUKKy8vIGEgY29tcGF0aWJsZSBlcXVhbGl0
eSBvcGVyYXRvciBmb3IgY29tcGFyaW5nIGluc2VydGlvbnMgaW50byBgbm9kZV9oYXNoX3NldGAu
CisvLyBJZiB5b3VyIHR5cGUgaXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgdGhlIGBhc2JsOjpIYXNo
YCBmcmFtZXdvcmssIHNlZQorLy8gYWJzbC9oYXNoL2hhc2guaCBmb3IgaW5mb3JtYXRpb24gb24g
ZXh0ZW5kaW5nIEFic2VpbCBoYXNoaW5nIHRvIHVzZXItZGVmaW5lZAorLy8gdHlwZXMuCisvLwor
Ly8gRXhhbXBsZToKKy8vCisvLyAgIC8vIENyZWF0ZSBhIG5vZGUgaGFzaCBzZXQgb2YgdGhyZWUg
c3RyaW5ncworLy8gICBhYnNsOjpub2RlX2hhc2hfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmlu
Zz4gZHVja3MgPQorLy8gICAgIHsiaHVleSIsICJkZXdleSJ9LCAibG91aWUifTsKKy8vCisvLyAg
Ly8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW50byB0aGUgbm9kZSBoYXNoIG1hcAorLy8gIGR1Y2tz
Lmluc2VydCgiZG9uYWxkIn07CisvLworLy8gIC8vIEZvcmNlIGEgcmVoYXNoIG9mIHRoZSBub2Rl
IGhhc2ggbWFwCisvLyAgZHVja3MucmVoYXNoKDApOworLy8KKy8vICAvLyBTZWUgaWYgImRld2V5
IiBpcyBwcmVzZW50CisvLyAgaWYgKGR1Y2tzLmNvbnRhaW5zKCJkZXdleSIpKSB7CisvLyAgICBz
dGQ6OmNvdXQgPDwgIldlIGZvdW5kIGRld2V5ISIgPDwgc3RkOjplbmRsOworLy8gIH0KK3RlbXBs
YXRlIDxjbGFzcyBULCBjbGFzcyBIYXNoID0gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNo
X2RlZmF1bHRfaGFzaDxUPiwKKyAgICAgICAgICBjbGFzcyBFcSA9IGFic2w6OmNvbnRhaW5lcl9p
bnRlcm5hbDo6aGFzaF9kZWZhdWx0X2VxPFQ+LAorICAgICAgICAgIGNsYXNzIEFsbG9jID0gc3Rk
OjphbGxvY2F0b3I8VD4+CitjbGFzcyBub2RlX2hhc2hfc2V0CisgICAgOiBwdWJsaWMgYWJzbDo6
Y29udGFpbmVyX2ludGVybmFsOjpyYXdfaGFzaF9zZXQ8CisgICAgICAgICAgYWJzbDo6Y29udGFp
bmVyX2ludGVybmFsOjpOb2RlSGFzaFNldFBvbGljeTxUPiwgSGFzaCwgRXEsIEFsbG9jPiB7Cisg
IHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBub2RlX2hhc2hfc2V0OjpyYXdfaGFzaF9zZXQ7CisKKyBw
dWJsaWM6CisgIG5vZGVfaGFzaF9zZXQoKSB7fQorICB1c2luZyBCYXNlOjpCYXNlOworCisgIC8v
IG5vZGVfaGFzaF9zZXQ6OmJlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0
byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgbm9kZV9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmJl
Z2luOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmNiZWdpbigpCisgIC8vCisgIC8vIFJldHVybnMg
YSBjb25zdCBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgbm9kZV9oYXNoX3NldGAu
CisgIHVzaW5nIEJhc2U6OmNiZWdpbjsKKworICAvLyBub2RlX2hhc2hfc2V0OjpjZW5kKCkKKyAg
Ly8KKyAgLy8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBub2Rl
X2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Y2VuZDsKKworICAvLyBub2RlX2hhc2hfc2V0Ojpl
bmQoKQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBu
b2RlX2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6ZW5kOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6
OmNhcGFjaXR5KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnQgc2xv
dHMgKGFzc2lnbmVkLCBkZWxldGVkLCBhbmQgZW1wdHkpCisgIC8vIGF2YWlsYWJsZSB3aXRoaW4g
dGhlIGBub2RlX2hhc2hfc2V0YC4KKyAgLy8KKyAgLy8gTk9URTogdGhpcyBtZW1iZXIgZnVuY3Rp
b24gaXMgcGFydGljdWxhciB0byBgYWJzbDo6bm9kZV9oYXNoX3NldGAgYW5kIGlzCisgIC8vIG5v
dCBwcm92aWRlZCBpbiB0aGUgYHN0ZDo6dW5vcmRlcmVkX21hcGAgQVBJLgorICB1c2luZyBCYXNl
OjpjYXBhY2l0eTsKKworICAvLyBub2RlX2hhc2hfc2V0OjplbXB0eSgpCisgIC8vCisgIC8vIFJl
dHVybnMgd2hldGhlciBvciBub3QgdGhlIGBub2RlX2hhc2hfc2V0YCBpcyBlbXB0eS4KKyAgdXNp
bmcgQmFzZTo6ZW1wdHk7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6bWF4X3NpemUoKQorICAvLwor
ICAvLyBSZXR1cm5zIHRoZSBsYXJnZXN0IHRoZW9yZXRpY2FsIHBvc3NpYmxlIG51bWJlciBvZiBl
bGVtZW50cyB3aXRoaW4gYQorICAvLyBgbm9kZV9oYXNoX3NldGAgdW5kZXIgY3VycmVudCBtZW1v
cnkgY29uc3RyYWludHMuIFRoaXMgdmFsdWUgY2FuIGJlIHRob3VnaHQKKyAgLy8gb2YgdGhlIGxh
cmdlc3QgdmFsdWUgb2YgYHN0ZDo6ZGlzdGFuY2UoYmVnaW4oKSwgZW5kKCkpYCBmb3IgYQorICAv
LyBgbm9kZV9oYXNoX3NldDxUPmAuCisgIHVzaW5nIEJhc2U6Om1heF9zaXplOworCisgIC8vIG5v
ZGVfaGFzaF9zZXQ6OnNpemUoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgY3VycmVudGx5IHdpdGhpbiB0aGUgYG5vZGVfaGFzaF9zZXRgLgorICB1c2luZyBCYXNl
OjpzaXplOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmNsZWFyKCkKKyAgLy8KKyAgLy8gUmVtb3Zl
cyBhbGwgZWxlbWVudHMgZnJvbSB0aGUgYG5vZGVfaGFzaF9zZXRgLiBJbnZhbGlkYXRlcyBhbnkg
cmVmZXJlbmNlcywKKyAgLy8gcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyByZWZlcnJpbmcgdG8gY29u
dGFpbmVkIGVsZW1lbnRzLgorICAvLworICAvLyBOT1RFOiB0aGlzIG9wZXJhdGlvbiBtYXkgc2hy
aW5rIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlci4gVG8gYXZvaWQgc2hyaW5raW5nCisgIC8vIHRoZSB1
bmRlcmx5aW5nIGJ1ZmZlciBjYWxsIGBlcmFzZShiZWdpbigpLCBlbmQoKSlgLgorICB1c2luZyBC
YXNlOjpjbGVhcjsKKworICAvLyBub2RlX2hhc2hfc2V0OjplcmFzZSgpCisgIC8vCisgIC8vIEVy
YXNlcyBlbGVtZW50cyB3aXRoaW4gdGhlIGBub2RlX2hhc2hfc2V0YC4gRXJhc2luZyBkb2VzIG5v
dCB0cmlnZ2VyIGEKKyAgLy8gcmVoYXNoLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAg
Ly8KKyAgLy8gdm9pZCBlcmFzZShjb25zdF9pdGVyYXRvciBwb3MpOgorICAvLworICAvLyAgIEVy
YXNlcyB0aGUgZWxlbWVudCBhdCBgcG9zaXRpb25gIG9mIHRoZSBgbm9kZV9oYXNoX3NldGAsIHJl
dHVybmluZworICAvLyAgIGB2b2lkYC4KKyAgLy8KKyAgLy8gICBOT1RFOiB0aGlzIHJldHVybiBi
ZWhhdmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIFNUTCBjb250YWluZXJzIGluCisgIC8v
ICAgZ2VuZXJhbCBhbmQgYHN0ZDo6dW5vcmRlcmVkX21hcGAgaW4gcGFydGljdWxhci4KKyAgLy8K
KyAgLy8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9y
IGxhc3QpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudHMgaW4gdGhlIG9wZW4gaW50
ZXJ2YWwgW2BmaXJzdGAsIGBsYXN0YCksIHJldHVybmluZyBhbgorICAvLyAgIGl0ZXJhdG9yIHBv
aW50aW5nIHRvIGBsYXN0YC4KKyAgLy8KKyAgLy8gc2l6ZV90eXBlIGVyYXNlKGNvbnN0IGtleV90
eXBlJiBrZXkpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCB3aXRoIHRoZSBtYXRj
aGluZyBrZXksIGlmIGl0IGV4aXN0cy4KKyAgdXNpbmcgQmFzZTo6ZXJhc2U7CisKKyAgLy8gbm9k
ZV9oYXNoX3NldDo6aW5zZXJ0KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRo
ZSBzcGVjaWZpZWQgdmFsdWUgaW50byB0aGUgYG5vZGVfaGFzaF9zZXRgLAorICAvLyByZXR1cm5p
bmcgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQsIHBy
b3ZpZGVkIHRoYXQKKyAgLy8gYW4gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkgZG9lcyBub3Qg
YWxyZWFkeSBleGlzdC4gSWYgcmVoYXNoaW5nIG9jY3VycworICAvLyBkdWUgdG8gdGhlIGluc2Vy
dGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuIE92ZXJsb2FkcyBhcmUgbGlzdGVk
CisgIC8vIGJlbG93LgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0
KGNvbnN0IFQmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUg
YG5vZGVfaGFzaF9zZXRgLiBSZXR1cm5zIGEgcGFpciBjb25zaXN0aW5nIG9mIGFuCisgIC8vICAg
aXRlcmF0b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9yIHRvIHRoZSBlbGVtZW50IHRoYXQg
cHJldmVudGVkIHRoZQorICAvLyAgIGluc2VydGlvbikgYW5kIGEgYm9vbCBkZW5vdGluZyB3aGV0
aGVyIHRoZSBpbnNlcnRpb24gdG9vayBwbGFjZS4KKyAgLy8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJh
dG9yLGJvb2w+IGluc2VydChUJiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSBtb3Zl
YWJsZSB2YWx1ZSBpbnRvIHRoZSBgbm9kZV9oYXNoX3NldGAuIFJldHVybnMgYSBwYWlyCisgIC8v
ICAgY29uc2lzdGluZyBvZiBhbiBpdGVyYXRvciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3Ig
dG8gdGhlIGVsZW1lbnQgdGhhdAorICAvLyAgIHByZXZlbnRlZCB0aGUgaW5zZXJ0aW9uKSBhbmQg
YSBib29sIGRlbm90aW5nIHdoZXRoZXIgdGhlIGluc2VydGlvbiB0b29rCisgIC8vICAgcGxhY2Uu
CisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBjb25zdCBU
JiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBUJiYg
dmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSwgdXNpbmcgdGhlIHBvc2l0aW9u
IG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hlcmUg
dG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2guIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhl
CisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudCwgb3IgdG8gdGhlIGV4aXN0aW5nIGVsZW1lbnQgdGhh
dCBwcmV2ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uLgorICAvLworICAvLyB2b2lkIGluc2Vy
dChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAg
IEluc2VydHMgYSByYW5nZSBvZiB2YWx1ZXMgW2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisgIC8v
ICAgTk9URTogQWx0aG91Z2ggdGhlIFNUTCBkb2VzIG5vdCBzcGVjaWZ5IHdoaWNoIGVsZW1lbnQg
bWF5IGJlIGluc2VydGVkIGlmCisgIC8vICAgbXVsdGlwbGUga2V5cyBjb21wYXJlIGVxdWl2YWxl
bnRseSwgZm9yIGBub2RlX2hhc2hfc2V0YCB3ZSBndWFyYW50ZWUgdGhlCisgIC8vICAgZmlyc3Qg
bWF0Y2ggaXMgaW5zZXJ0ZWQuCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxUPiBpbGlzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyB0aGUgZWxlbWVudHMgd2l0
aGluIHRoZSBpbml0aWFsaXplciBsaXN0IGBpbGlzdGAuCisgIC8vCisgIC8vICAgTk9URTogQWx0
aG91Z2ggdGhlIFNUTCBkb2VzIG5vdCBzcGVjaWZ5IHdoaWNoIGVsZW1lbnQgbWF5IGJlIGluc2Vy
dGVkIGlmCisgIC8vICAgbXVsdGlwbGUga2V5cyBjb21wYXJlIGVxdWl2YWxlbnRseSB3aXRoaW4g
dGhlIGluaXRpYWxpemVyIGxpc3QsIGZvcgorICAvLyAgIGBub2RlX2hhc2hfc2V0YCB3ZSBndWFy
YW50ZWUgdGhlIGZpcnN0IG1hdGNoIGlzIGluc2VydGVkLgorICB1c2luZyBCYXNlOjppbnNlcnQ7
CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6ZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4g
ZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFj
ZQorICAvLyB3aXRoaW4gdGhlIGBub2RlX2hhc2hfc2V0YCwgcHJvdmlkZWQgdGhhdCBubyBlbGVt
ZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8g
VGhlIGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBh
biBlbGVtZW50IHdpdGggdGhlCisgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBj
YXNlIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVk
IGltbWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9lbXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBu
b3QKKyAgLy8gY29weWFibGUgb3IgbW92ZWFibGUuCisgIC8vCisgIC8vIElmIHJlaGFzaGluZyBv
Y2N1cnMgZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVk
LgorICB1c2luZyBCYXNlOjplbXBsYWNlOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmVtcGxhY2Vf
aGludCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZh
bHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBub2RlX2hh
c2hfc2V0YCwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nCisg
IC8vIHN1Z2dlc3Rpb24gZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLCBh
bmQgb25seSBpbnNlcnRzCisgIC8vIHByb3ZpZGVkIHRoYXQgbm8gZWxlbWVudCB3aXRoIHRoZSBn
aXZlbiBrZXkgYWxyZWFkeSBleGlzdHMuCisgIC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBj
b25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQor
ICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3Ry
dWN0ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJlZmVy
IGB0cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90CisgIC8vIGNvcHlhYmxlIG9y
IG1vdmVhYmxlLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5z
ZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1w
bGFjZV9oaW50OworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmV4dHJhY3QoKQorICAvLworICAvLyBF
eHRyYWN0cyB0aGUgaW5kaWNhdGVkIGVsZW1lbnQsIGVyYXNpbmcgaXQgaW4gdGhlIHByb2Nlc3Ms
IGFuZCByZXR1cm5zIGl0CisgIC8vIGFzIGEgQysrMTctY29tcGF0aWJsZSBub2RlIGhhbmRsZS4g
T3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIG5vZGVfdHlwZSBleHRyYWN0
KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0aGUgZWxl
bWVudCBhdCB0aGUgaW5kaWNhdGVkIHBvc2l0aW9uIGFuZCByZXR1cm5zIGEgbm9kZSBoYW5kbGUK
KyAgLy8gICBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4KKyAgLy8KKyAgLy8gbm9kZV90eXBl
IGV4dHJhY3QoY29uc3Qga2V5X3R5cGUmIHgpOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBl
bGVtZW50IHdpdGggdGhlIGtleSBtYXRjaGluZyB0aGUgcGFzc2VkIGtleSB2YWx1ZSBhbmQKKyAg
Ly8gICByZXR1cm5zIGEgbm9kZSBoYW5kbGUgb3duaW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEuIElm
IHRoZSBgbm9kZV9oYXNoX3NldGAKKyAgLy8gICBkb2VzIG5vdCBjb250YWluIGFuIGVsZW1lbnQg
d2l0aCBhIG1hdGNoaW5nIGtleSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuCisgIC8vIGVtcHR5
IG5vZGUgaGFuZGxlLgorICB1c2luZyBCYXNlOjpleHRyYWN0OworCisgIC8vIG5vZGVfaGFzaF9z
ZXQ6Om1lcmdlKCkKKyAgLy8KKyAgLy8gRXh0cmFjdHMgZWxlbWVudHMgZnJvbSBhIGdpdmVuIGBz
b3VyY2VgIGZsYXQgaGFzaCBtYXAgaW50byB0aGlzCisgIC8vIGBub2RlX2hhc2hfc2V0YC4gSWYg
dGhlIGRlc3RpbmF0aW9uIGBub2RlX2hhc2hfc2V0YCBhbHJlYWR5IGNvbnRhaW5zIGFuCisgIC8v
IGVsZW1lbnQgd2l0aCBhbiBlcXVpdmFsZW50IGtleSwgdGhhdCBlbGVtZW50IGlzIG5vdCBleHRy
YWN0ZWQuCisgIHVzaW5nIEJhc2U6Om1lcmdlOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OnN3YXAo
bm9kZV9oYXNoX3NldCYgb3RoZXIpCisgIC8vCisgIC8vIEV4Y2hhbmdlcyB0aGUgY29udGVudHMg
b2YgdGhpcyBgbm9kZV9oYXNoX3NldGAgd2l0aCB0aG9zZSBvZiB0aGUgYG90aGVyYAorICAvLyBm
bGF0IGhhc2ggbWFwLCBhdm9pZGluZyBpbnZvY2F0aW9uIG9mIGFueSBtb3ZlLCBjb3B5LCBvciBz
d2FwIG9wZXJhdGlvbnMgb24KKyAgLy8gaW5kaXZpZHVhbCBlbGVtZW50cy4KKyAgLy8KKyAgLy8g
QWxsIGl0ZXJhdG9ycyBhbmQgcmVmZXJlbmNlcyBvbiB0aGUgYG5vZGVfaGFzaF9zZXRgIHJlbWFp
biB2YWxpZCwgZXhjZXB0aW5nCisgIC8vIGZvciB0aGUgcGFzdC10aGUtZW5kIGl0ZXJhdG9yLCB3
aGljaCBpcyBpbnZhbGlkYXRlZC4KKyAgLy8KKyAgLy8gYHN3YXAoKWAgcmVxdWlyZXMgdGhhdCB0
aGUgZmxhdCBoYXNoIHNldCdzIGhhc2hpbmcgYW5kIGtleSBlcXVpdmFsZW5jZQorICAvLyBmdW5j
dGlvbnMgYmUgU3dhcHBhYmxlLCBhbmQgYXJlIGV4Y2hhZ2VkIHVzaW5nIHVucXVhbGlmaWVkIGNh
bGxzIHRvCisgIC8vIG5vbi1tZW1iZXIgYHN3YXAoKWAuIElmIHRoZSBtYXAncyBhbGxvY2F0b3Ig
aGFzCisgIC8vIGBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yX3R5cGU+Ojpwcm9wYWdh
dGVfb25fY29udGFpbmVyX3N3YXA6OnZhbHVlYAorICAvLyBzZXQgdG8gYHRydWVgLCB0aGUgYWxs
b2NhdG9ycyBhcmUgYWxzbyBleGNoYW5nZWQgdXNpbmcgYW4gdW5xdWFsaWZpZWQgY2FsbAorICAv
LyB0byBub24tbWVtYmVyIGBzd2FwKClgOyBvdGhlcndpc2UsIHRoZSBhbGxvY2F0b3JzIGFyZSBu
b3Qgc3dhcHBlZC4KKyAgdXNpbmcgQmFzZTo6c3dhcDsKKworICAvLyBub2RlX2hhc2hfc2V0Ojpy
ZWhhc2goY291bnQpCisgIC8vCisgIC8vIFJlaGFzaGVzIHRoZSBgbm9kZV9oYXNoX3NldGAsIHNl
dHRpbmcgdGhlIG51bWJlciBvZiBzbG90cyB0byBiZSBhdCBsZWFzdAorICAvLyB0aGUgcGFzc2Vk
IHZhbHVlLiBJZiB0aGUgbmV3IG51bWJlciBvZiBzbG90cyBpbmNyZWFzZXMgdGhlIGxvYWQgZmFj
dG9yIG1vcmUKKyAgLy8gdGhhbiB0aGUgY3VycmVudCBtYXhpbXVtIGxvYWQgZmFjdG9yCisgIC8v
IChgY291bnRgIDwgYHNpemUoKWAgLyBgbWF4X2xvYWRfZmFjdG9yKClgKSwgdGhlbiB0aGUgbmV3
IG51bWJlciBvZiBzbG90cworICAvLyB3aWxsIGJlIGF0IGxlYXN0IGBzaXplKClgIC8gYG1heF9s
b2FkX2ZhY3RvcigpYC4KKyAgLy8KKyAgLy8gVG8gZm9yY2UgYSByZWhhc2gsIHBhc3MgcmVoYXNo
KDApLgorICAvLworICAvLyBOT1RFOiB1bmxpa2UgYmVoYXZpb3IgaW4gYHN0ZDo6dW5vcmRlcmVk
X3NldGAsIHJlZmVyZW5jZXMgYXJlIGFsc28KKyAgLy8gaW52YWxpZGF0ZWQgdXBvbiBhIGByZWhh
c2goKWAuCisgIHVzaW5nIEJhc2U6OnJlaGFzaDsKKworICAvLyBub2RlX2hhc2hfc2V0OjpyZXNl
cnZlKGNvdW50KQorICAvLworICAvLyBTZXRzIHRoZSBudW1iZXIgb2Ygc2xvdHMgaW4gdGhlIGBu
b2RlX2hhc2hfc2V0YCB0byB0aGUgbnVtYmVyIG5lZWRlZCB0bworICAvLyBhY2NvbW1vZGF0ZSBh
dCBsZWFzdCBgY291bnRgIHRvdGFsIGVsZW1lbnRzIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBjdXJy
ZW50CisgIC8vIG1heGltdW0gbG9hZCBmYWN0b3IsIGFuZCBtYXkgcmVoYXNoIHRoZSBjb250YWlu
ZXIgaWYgbmVlZGVkLgorICB1c2luZyBCYXNlOjpyZXNlcnZlOworCisgIC8vIG5vZGVfaGFzaF9z
ZXQ6OmNvbnRhaW5zKCkKKyAgLy8KKyAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQg
Y29tcGFyaW5nIGVxdWFsIHRvIHRoZSBnaXZlbiBga2V5YCBleGlzdHMKKyAgLy8gd2l0aGluIHRo
ZSBgbm9kZV9oYXNoX3NldGAsIHJldHVybmluZyBgdHJ1ZWAgaWYgc28gb3IgYGZhbHNlYCBvdGhl
cndpc2UuCisgIHVzaW5nIEJhc2U6OmNvbnRhaW5zOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmNv
dW50KGNvbnN0IEtleSYga2V5KSBjb25zdAorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgZWxlbWVudHMgY29tcGFyaW5nIGVxdWFsIHRvIHRoZSBnaXZlbiBga2V5YCB3aXRoaW4KKyAg
Ly8gdGhlIGBub2RlX2hhc2hfc2V0YC4gbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1
cm4gZWl0aGVyIGAxYCBvciBgMGAKKyAgLy8gc2luY2UgZHVwbGljYXRlIGVsZW1lbnRzIGFyZSBu
b3QgYWxsb3dlZCB3aXRoaW4gYSBgbm9kZV9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmNvdW50
OworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmVxdWFsX3JhbmdlKCkKKyAgLy8KKyAgLy8gUmV0dXJu
cyBhIGNsb3NlZCByYW5nZSBbZmlyc3QsIGxhc3RdLCBkZWZpbmVkIGJ5IGEgYHN0ZDo6cGFpcmAg
b2YgdHdvCisgIC8vIGl0ZXJhdG9ycywgY29udGFpbmluZyBhbGwgZWxlbWVudHMgd2l0aCB0aGUg
cGFzc2VkIGtleSBpbiB0aGUKKyAgLy8gYG5vZGVfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjpl
cXVhbF9yYW5nZTsKKworICAvLyBub2RlX2hhc2hfc2V0OjpmaW5kKCkKKyAgLy8KKyAgLy8gRmlu
ZHMgYW4gZWxlbWVudCB3aXRoIHRoZSBwYXNzZWQgYGtleWAgd2l0aGluIHRoZSBgbm9kZV9oYXNo
X3NldGAuCisgIHVzaW5nIEJhc2U6OmZpbmQ7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6YnVja2V0
X2NvdW50KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mICJidWNrZXRzIiB3aXRo
aW4gdGhlIGBub2RlX2hhc2hfc2V0YC4gTm90ZSB0aGF0CisgIC8vIGJlY2F1c2UgYSBmbGF0IGhh
c2ggbWFwIGNvbnRhaW5zIGFsbCBlbGVtZW50cyB3aXRoaW4gaXRzIGludGVybmFsIHN0b3JhZ2Us
CisgIC8vIHRoaXMgdmFsdWUgc2ltcGx5IGVxdWFscyB0aGUgY3VycmVudCBjYXBhY2l0eSBvZiB0
aGUgYG5vZGVfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjpidWNrZXRfY291bnQ7CisKKyAgLy8g
bm9kZV9oYXNoX3NldDo6bG9hZF9mYWN0b3IoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBjdXJy
ZW50IGxvYWQgZmFjdG9yIG9mIHRoZSBgbm9kZV9oYXNoX3NldGAgKHRoZSBhdmVyYWdlIG51bWJl
cgorICAvLyBvZiBzbG90cyBvY2N1cGllZCB3aXRoIGEgdmFsdWUgd2l0aGluIHRoZSBoYXNoIG1h
cCkuCisgIHVzaW5nIEJhc2U6OmxvYWRfZmFjdG9yOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6Om1h
eF9sb2FkX2ZhY3RvcigpCisgIC8vCisgIC8vIE1hbmFnZXMgdGhlIG1heGltdW0gbG9hZCBmYWN0
b3Igb2YgdGhlIGBub2RlX2hhc2hfc2V0YC4gT3ZlcmxvYWRzIGFyZQorICAvLyBsaXN0ZWQgYmVs
b3cuCisgIC8vCisgIC8vIGZsb2F0IG5vZGVfaGFzaF9zZXQ6Om1heF9sb2FkX2ZhY3RvcigpCisg
IC8vCisgIC8vICAgUmV0dXJucyB0aGUgY3VycmVudCBtYXhpbXVtIGxvYWQgZmFjdG9yIG9mIHRo
ZSBgbm9kZV9oYXNoX3NldGAuCisgIC8vCisgIC8vIHZvaWQgbm9kZV9oYXNoX3NldDo6bWF4X2xv
YWRfZmFjdG9yKGZsb2F0IG1sKQorICAvLworICAvLyAgIFNldHMgdGhlIG1heGltdW0gbG9hZCBm
YWN0b3Igb2YgdGhlIGBub2RlX2hhc2hfc2V0YCB0byB0aGUgcGFzc2VkIHZhbHVlLgorICAvLwor
ICAvLyAgIE5PVEU6IFRoaXMgb3ZlcmxvYWQgaXMgcHJvdmlkZWQgb25seSBmb3IgQVBJIGNvbXBh
dGliaWxpdHkgd2l0aCB0aGUgU1RMOworICAvLyAgIGBub2RlX2hhc2hfc2V0YCB3aWxsIGlnbm9y
ZSBhbnkgc2V0IGxvYWQgZmFjdG9yIGFuZCBtYW5hZ2UgaXRzIHJlaGFzaGluZworICAvLyAgIGlu
dGVybmFsbHkgYXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgorICB1c2luZyBCYXNlOjptYXhf
bG9hZF9mYWN0b3I7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6Z2V0X2FsbG9jYXRvcigpCisgIC8v
CisgIC8vIFJldHVybnMgdGhlIGFsbG9jYXRvciBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhp
cyBgbm9kZV9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmdldF9hbGxvY2F0b3I7CisKKyAgLy8g
bm9kZV9oYXNoX3NldDo6aGFzaF9mdW5jdGlvbigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGhh
c2hpbmcgZnVuY3Rpb24gdXNlZCB0byBoYXNoIHRoZSBrZXlzIHdpdGhpbiB0aGlzCisgIC8vIGBu
b2RlX2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6aGFzaF9mdW5jdGlvbjsKKworICAvLyBub2Rl
X2hhc2hfc2V0OjprZXlfZXEoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBmdW5jdGlvbiB1c2Vk
IGZvciBjb21wYXJpbmcga2V5cyBlcXVhbGl0eS4KKyAgdXNpbmcgQmFzZTo6a2V5X2VxOworCisg
IEFCU0xfREVQUkVDQVRFRCgiQ2FsbCBgaGFzaF9mdW5jdGlvbigpYCBpbnN0ZWFkLiIpCisgIHR5
cGVuYW1lIEJhc2U6Omhhc2hlciBoYXNoX2Z1bmN0KCkgeyByZXR1cm4gdGhpcy0+aGFzaF9mdW5j
dGlvbigpOyB9CisKKyAgQUJTTF9ERVBSRUNBVEVEKCJDYWxsIGByZWhhc2goKWAgaW5zdGVhZC4i
KQorICB2b2lkIHJlc2l6ZSh0eXBlbmFtZSBCYXNlOjpzaXplX3R5cGUgaGludCkgeyB0aGlzLT5y
ZWhhc2goaGludCk7IH0KK307CisKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCit0
ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBOb2RlSGFzaFNldFBvbGljeQorICAgIDogYWJzbDo6
Y29udGFpbmVyX2ludGVybmFsOjpub2RlX2hhc2hfcG9saWN5PFQmLCBOb2RlSGFzaFNldFBvbGlj
eTxUPj4geworICB1c2luZyBrZXlfdHlwZSA9IFQ7CisgIHVzaW5nIGluaXRfdHlwZSA9IFQ7Cisg
IHVzaW5nIGNvbnN0YW50X2l0ZXJhdG9ycyA9IHN0ZDo6dHJ1ZV90eXBlOworCisgIHRlbXBsYXRl
IDxjbGFzcyBBbGxvY2F0b3IsIGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRpYyBUKiBuZXdfZWxlbWVu
dChBbGxvY2F0b3IqIGFsbG9jLCBBcmdzJiYuLi4gYXJncykgeworICAgIHVzaW5nIFZhbHVlQWxs
b2MgPQorICAgICAgICB0eXBlbmFtZSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46
OnRlbXBsYXRlIHJlYmluZF9hbGxvYzxUPjsKKyAgICBWYWx1ZUFsbG9jIHZhbHVlX2FsbG9jKCph
bGxvYyk7CisgICAgVCogcmVzID0gYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxWYWx1ZUFsbG9jPjo6
YWxsb2NhdGUodmFsdWVfYWxsb2MsIDEpOworICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8VmFs
dWVBbGxvYz46OmNvbnN0cnVjdCh2YWx1ZV9hbGxvYywgcmVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOworICAgIHJldHVybiByZXM7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9y
PgorICBzdGF0aWMgdm9pZCBkZWxldGVfZWxlbWVudChBbGxvY2F0b3IqIGFsbG9jLCBUKiBlbGVt
KSB7CisgICAgdXNpbmcgVmFsdWVBbGxvYyA9CisgICAgICAgIHR5cGVuYW1lIGFic2w6OmFsbG9j
YXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6dGVtcGxhdGUgcmViaW5kX2FsbG9jPFQ+OworICAgIFZh
bHVlQWxsb2MgdmFsdWVfYWxsb2MoKmFsbG9jKTsKKyAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRz
PFZhbHVlQWxsb2M+OjpkZXN0cm95KHZhbHVlX2FsbG9jLCBlbGVtKTsKKyAgICBhYnNsOjphbGxv
Y2F0b3JfdHJhaXRzPFZhbHVlQWxsb2M+OjpkZWFsbG9jYXRlKHZhbHVlX2FsbG9jLCBlbGVtLCAx
KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMg
ZGVjbHR5cGUoYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpEZWNvbXBvc2VWYWx1ZSgKKyAgICAg
IHN0ZDo6ZGVjbHZhbDxGPigpLCBzdGQ6OmRlY2x2YWw8QXJncz4oKS4uLikpCisgIGFwcGx5KEYm
JiBmLCBBcmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiBhYnNsOjpjb250YWluZXJfaW50ZXJu
YWw6OkRlY29tcG9zZVZhbHVlKAorICAgICAgICBzdGQ6OmZvcndhcmQ8Rj4oZiksIHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICBzdGF0aWMgc2l6ZV90IGVsZW1lbnRfc3Bh
Y2VfdXNlZChjb25zdCBUKikgeyByZXR1cm4gc2l6ZW9mKFQpOyB9Cit9OworfSAgLy8gbmFtZXNw
YWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKyNlbmRpZiAgLy8g
QUJTTF9DT05UQUlORVJfTk9ERV9IQVNIX1NFVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL25vZGVfaGFzaF9zZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0
X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U0OThmMGY3NzliNGQ2ZTc2NGVjYWZjYTYyYjFjYjA4Y2Nm
ZDVhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0X3Rl
c3QuY2MKQEAgLTAsMCArMSwxMDMgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0LmgiCisKKyNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9y
X3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0
X2xvb2t1cF90ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRl
cmVkX3NldF9tb2RpZmllcnNfdGVzdC5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
Y29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7Cit1c2luZyA6OmFic2w6OmNvbnRhaW5l
cl9pbnRlcm5hbDo6aGFzaF9pbnRlcm5hbDo6RW51bTsKK3VzaW5nIDo6YWJzbDo6Y29udGFpbmVy
X2ludGVybmFsOjpoYXNoX2ludGVybmFsOjpFbnVtQ2xhc3M7Cit1c2luZyA6OnRlc3Rpbmc6OlBv
aW50ZWU7Cit1c2luZyA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlOworCit1c2luZyBT
ZXRUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8CisgICAgbm9kZV9oYXNoX3NldDxpbnQsIFN0YXRl
ZnVsVGVzdGluZ0hhc2gsIFN0YXRlZnVsVGVzdGluZ0VxdWFsLCBBbGxvYzxpbnQ+PiwKKyAgICBu
b2RlX2hhc2hfc2V0PHN0ZDo6c3RyaW5nLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLCBTdGF0ZWZ1bFRl
c3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAgICAgIEFsbG9jPGludD4+LAorICAgIG5vZGVfaGFz
aF9zZXQ8RW51bSwgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFs
bG9jPEVudW0+PiwKKyAgICBub2RlX2hhc2hfc2V0PEVudW1DbGFzcywgU3RhdGVmdWxUZXN0aW5n
SGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsCisgICAgICAgICAgICAgICAgICBBbGxvYzxFbnVt
Q2xhc3M+Pj47CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE5vZGVIYXNoU2V0LCBD
b25zdHJ1Y3RvclRlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KE5vZGVIYXNoU2V0LCBMb29rdXBUZXN0LCBTZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChOb2RlSGFzaFNldCwgTW9kaWZpZXJzVGVzdCwgU2V0VHlwZXMpOworCitURVNU
KE5vZGVIYXNoU2V0LCBNb3ZlYWJsZU5vdENvcHlhYmxlQ29tcGlsZXMpIHsKKyAgbm9kZV9oYXNo
X3NldDxzdGQ6OnVuaXF1ZV9wdHI8dm9pZCo+PiB0OworICBub2RlX2hhc2hfc2V0PHN0ZDo6dW5p
cXVlX3B0cjx2b2lkKj4+IHU7CisgIHUgPSBzdGQ6Om1vdmUodCk7Cit9CisKK1RFU1QoTm9kZUhh
c2hTZXQsIE1lcmdlRXh0cmFjdEluc2VydCkgeworICBzdHJ1Y3QgSGFzaCB7CisgICAgc2l6ZV90
IG9wZXJhdG9yKCkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPGludD4mIHApIGNvbnN0IHsgcmV0dXJu
ICpwOyB9CisgIH07CisgIHN0cnVjdCBFcSB7CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxpbnQ+JiBhLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnVu
aXF1ZV9wdHI8aW50PiYgYikgY29uc3QgeworICAgICAgcmV0dXJuICphID09ICpiOworICAgIH0K
KyAgfTsKKyAgYWJzbDo6bm9kZV9oYXNoX3NldDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgSGFzaCwg
RXE+IHNldDEsIHNldDI7CisgIHNldDEuaW5zZXJ0KGFic2w6Om1ha2VfdW5pcXVlPGludD4oNykp
OworICBzZXQxLmluc2VydChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDE3KSk7CisKKyAgc2V0Mi5p
bnNlcnQoYWJzbDo6bWFrZV91bmlxdWU8aW50Pig3KSk7CisgIHNldDIuaW5zZXJ0KGFic2w6Om1h
a2VfdW5pcXVlPGludD4oMTkpKTsKKworICBFWFBFQ1RfVEhBVChzZXQxLCBVbm9yZGVyZWRFbGVt
ZW50c0FyZShQb2ludGVlKDcpLCBQb2ludGVlKDE3KSkpOworICBFWFBFQ1RfVEhBVChzZXQyLCBV
bm9yZGVyZWRFbGVtZW50c0FyZShQb2ludGVlKDcpLCBQb2ludGVlKDE5KSkpOworCisgIHNldDEu
bWVyZ2Uoc2V0Mik7CisKKyAgRVhQRUNUX1RIQVQoc2V0MSwgVW5vcmRlcmVkRWxlbWVudHNBcmUo
UG9pbnRlZSg3KSwgUG9pbnRlZSgxNyksIFBvaW50ZWUoMTkpKSk7CisgIEVYUEVDVF9USEFUKHNl
dDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoNykpKTsKKworICBhdXRvIG5vZGUgPSBz
ZXQxLmV4dHJhY3QoYWJzbDo6bWFrZV91bmlxdWU8aW50Pig3KSk7CisgIEVYUEVDVF9UUlVFKG5v
ZGUpOworICBFWFBFQ1RfVEhBVChub2RlLnZhbHVlKCksIFBvaW50ZWUoNykpOworICBFWFBFQ1Rf
VEhBVChzZXQxLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQb2ludGVlKDE3KSwgUG9pbnRlZSgxOSkp
KTsKKworICBhdXRvIGluc2VydF9yZXN1bHQgPSBzZXQyLmluc2VydChzdGQ6Om1vdmUobm9kZSkp
OworICBFWFBFQ1RfRkFMU0Uobm9kZSk7CisgIEVYUEVDVF9GQUxTRShpbnNlcnRfcmVzdWx0Lmlu
c2VydGVkKTsKKyAgRVhQRUNUX1RSVUUoaW5zZXJ0X3Jlc3VsdC5ub2RlKTsKKyAgRVhQRUNUX1RI
QVQoaW5zZXJ0X3Jlc3VsdC5ub2RlLnZhbHVlKCksIFBvaW50ZWUoNykpOworICBFWFBFQ1RfRVEo
KippbnNlcnRfcmVzdWx0LnBvc2l0aW9uLCA3KTsKKyAgRVhQRUNUX05FKGluc2VydF9yZXN1bHQu
cG9zaXRpb24tPmdldCgpLCBpbnNlcnRfcmVzdWx0Lm5vZGUudmFsdWUoKS5nZXQoKSk7CisgIEVY
UEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoNykpKTsKKworICBu
b2RlID0gc2V0MS5leHRyYWN0KGFic2w6Om1ha2VfdW5pcXVlPGludD4oMTcpKTsKKyAgRVhQRUNU
X1RSVUUobm9kZSk7CisgIEVYUEVDVF9USEFUKG5vZGUudmFsdWUoKSwgUG9pbnRlZSgxNykpOwor
ICBFWFBFQ1RfVEhBVChzZXQxLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQb2ludGVlKDE5KSkpOwor
CisgIG5vZGUudmFsdWUoKSA9IGFic2w6Om1ha2VfdW5pcXVlPGludD4oMjMpOworCisgIGluc2Vy
dF9yZXN1bHQgPSBzZXQyLmluc2VydChzdGQ6Om1vdmUobm9kZSkpOworICBFWFBFQ1RfRkFMU0Uo
bm9kZSk7CisgIEVYUEVDVF9UUlVFKGluc2VydF9yZXN1bHQuaW5zZXJ0ZWQpOworICBFWFBFQ1Rf
RkFMU0UoaW5zZXJ0X3Jlc3VsdC5ub2RlKTsKKyAgRVhQRUNUX0VRKCoqaW5zZXJ0X3Jlc3VsdC5w
b3NpdGlvbiwgMjMpOworICBFWFBFQ1RfVEhBVChzZXQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQ
b2ludGVlKDcpLCBQb2ludGVlKDIzKSkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb3B0cy5iemwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy5iemwKaW5kZXggMDE2OGFjNWFiZGRj
MzlmZjdjNDc4MWZmNWUzZTJlOWJlMGEyMDU3ZS4uNWM1MDhmMTdkZjk3NDc2MThjYTUyYzVlNGI5
MzNmODE4ZWU5YjljOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMuYnpsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
cHRzLmJ6bApAQCAtMzUsNyArMzUsNiBAQCBHQ0NfVEVTVF9GTEFHUyA9IFsKICMgRG9jcyBvbiBn
cm91cHMgb2YgZmxhZ3MgaXMgcHJlY2VkZWQgYnkgIyMjLgogCiBMTFZNX0ZMQUdTID0gWwotICAg
ICMgQWxsIHdhcm5pbmdzIGFyZSB0cmVhdGVkIGFzIGVycm9ycyBieSBpbXBsaWNpdCAtV2Vycm9y
IGZsYWcKICAgICAiLVdhbGwiLAogICAgICItV2V4dHJhIiwKICAgICAiLVdldmVyeXRoaW5nIiwK
QEAgLTU0LDYgKzUzLDEwIEBAIExMVk1fRkxBR1MgPSBbCiAgICAgIi1Xbm8tcGFja2VkIiwKICAg
ICAiLVduby1wYWRkZWQiLAogICAgICMjIworICAgICMgR29vZ2xlIHN0eWxlIGRvZXMgbm90IHVz
ZSB1bnNpZ25lZCBpbnRlZ2VycywgdGhvdWdoIFNUTCBjb250YWluZXJzCisgICAgIyBoYXZlIHVu
c2lnbmVkIHR5cGVzLgorICAgICItV25vLXNpZ24tY29tcGFyZSIsCisgICAgIyMjCiAgICAgIi1X
bm8tZmxvYXQtY29udmVyc2lvbiIsCiAgICAgIi1Xbm8tZmxvYXQtZXF1YWwiLAogICAgICItV25v
LWZvcm1hdC1ub25saXRlcmFsIiwKQEAgLTEwMSw2ICsxMDQsNyBAQCBMTFZNX1RFU1RfRkxBR1Mg
PSBbCiAgICAgIi1Xbm8tYzk5LWV4dGVuc2lvbnMiLAogICAgICItV25vLW1pc3Npbmctbm9yZXR1
cm4iLAogICAgICItV25vLW1pc3NpbmctcHJvdG90eXBlcyIsCisgICAgIi1Xbm8tbWlzc2luZy12
YXJpYWJsZS1kZWNsYXJhdGlvbnMiLAogICAgICItV25vLW51bGwtY29udmVyc2lvbiIsCiAgICAg
Ii1Xbm8tc2hhZG93IiwKICAgICAiLVduby1zaGlmdC1zaWduLW92ZXJmbG93IiwKQEAgLTExMiwx
MyArMTE2LDE1IEBAIExMVk1fVEVTVF9GTEFHUyA9IFsKICAgICAiLVduby11bnVzZWQtdGVtcGxh
dGUiLAogICAgICItV25vLXVzZWQtYnV0LW1hcmtlZC11bnVzZWQiLAogICAgICItV25vLXplcm8t
YXMtbnVsbC1wb2ludGVyLWNvbnN0YW50IiwKKyAgICAjIGd0ZXN0IGRlcGVuZHMgb24gdGhpcyBH
TlUgZXh0ZW5zaW9uIGJlaW5nIG9mZmVyZWQuCisgICAgIi1Xbm8tZ251LXplcm8tdmFyaWFkaWMt
bWFjcm8tYXJndW1lbnRzIiwKIF0KIAogTVNWQ19GTEFHUyA9IFsKICAgICAiL1czIiwKLSAgICAi
L1dYIiwKICAgICAiL3dkNDAwNSIsICAjIG1hY3JvLXJlZGVmaW5pdGlvbgogICAgICIvd2Q0MDY4
IiwgICMgdW5rbm93biBwcmFnbWEKKyAgICAiL3dkNDE4MCIsICAjIHF1YWxpZmllciBhcHBsaWVk
IHRvIGZ1bmN0aW9uIHR5cGUgaGFzIG5vIG1lYW5pbmc7IGlnbm9yZWQKICAgICAiL3dkNDI0NCIs
ICAjIGNvbnZlcnNpb24gZnJvbSAndHlwZTEnIHRvICd0eXBlMicsIHBvc3NpYmxlIGxvc3Mgb2Yg
ZGF0YQogICAgICIvd2Q0MjY3IiwgICMgY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICd0eXBl
JywgcG9zc2libGUgbG9zcyBvZiBkYXRhCiAgICAgIi93ZDQ4MDAiLCAgIyBmb3JjaW5nIHZhbHVl
IHRvIGJvb2wgJ3RydWUnIG9yICdmYWxzZScgKHBlcmZvcm1hbmNlIHdhcm5pbmcpCkBAIC0xNTIs
MyArMTU4LDcgQEAgQUJTTF9FWENFUFRJT05TX0ZMQUcgPSBzZWxlY3QoewogICAgICIvL2Fic2w6
d2luZG93cyI6IFsiL1VfSEFTX0VYQ0VQVElPTlMiLCAiL0RfSEFTX0VYQ0VQVElPTlM9MSIsICIv
RUhzYyJdLAogICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLWZleGNlcHRpb25zIl0sCiB9
KQorCitBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyA9IHNlbGVjdCh7CisgICAgIi8vY29u
ZGl0aW9uczpkZWZhdWx0IjogW10sCit9KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL0JV
SUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL0JVSUxELmduCmluZGV4IGI1MGIwYTZkZGM4MzIxOTY4
ZWIxZmExNzYzMjFiYzhlMWY5NzQyNTQuLmQzNTgyZDZhNDI2Zjc3NTcxNmViMTE3NjJkNTdhMTk5
MWIwNGNiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9CVUlMRC5nbgorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvQlVJTEQuZ24KQEAgLTkyLDEwICs5MiwxMCBAQCBzb3VyY2Vfc2V0KCJmYWls
dXJlX3NpZ25hbF9oYW5kbGVyIikgewogICBdCiAgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KICAgc291cmNlcyA9IFsK
LSAgICAiZmFpbHVyZV9zaWduYWxfaGFuZGxlci5jYyIKKyAgICAiZmFpbHVyZV9zaWduYWxfaGFu
ZGxlci5jYyIsCiAgIF0KICAgcHVibGljID0gWwotICAgICJmYWlsdXJlX3NpZ25hbF9oYW5kbGVy
LmgiCisgICAgImZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuaCIsCiAgIF0KICAgZGVwcyA9IFsKICAg
ICAiOmV4YW1pbmVfc3RhY2siLApAQCAtMTI2LDYgKzEyNiw3IEBAIHNvdXJjZV9zZXQoImRlYnVn
Z2luZ19pbnRlcm5hbCIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLi9iYXNlIiwKKyAgICAi
Li4vYmFzZTpjb3JlX2hlYWRlcnMiLAogICAgICIuLi9iYXNlOmR5bmFtaWNfYW5ub3RhdGlvbnMi
LAogICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZGVtYW5nbGUu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZGVtYW5nbGUuY2MKaW5kZXggYzljYTJmM2Jk
YjE3MGU3N2QyOGRlYzE1Nzk1YmE1ODgyOWZiODY4YS4uNDgzNTQ0NTliYzg1Zjg2ZGZhMGQzMTll
OTc0MTE4OGIzZTlkNjc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2Rl
bWFuZ2xlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5jYwpAQCAt
MzQwLDcgKzM0MCw3IEBAIHN0YXRpYyBib29sIFplcm9Pck1vcmUoUGFyc2VGdW5jIHBhcnNlX2Z1
bmMsIFN0YXRlICpzdGF0ZSkgewogfQogCiAvLyBBcHBlbmQgInN0ciIgYXQgIm91dF9jdXJfaWR4
Ii4gIElmIHRoZXJlIGlzIGFuIG92ZXJmbG93LCBvdXRfY3VyX2lkeCBpcwotLy8gc2V0IHRvIG91
dF9lbmRfaWR4KzEuICBUaGUgb3V0cHV0IHN0ZDo6c3RyaW5nIGlzIGVuc3VyZWQgdG8KKy8vIHNl
dCB0byBvdXRfZW5kX2lkeCsxLiAgVGhlIG91dHB1dCBzdHJpbmcgaXMgZW5zdXJlZCB0bwogLy8g
YWx3YXlzIHRlcm1pbmF0ZSB3aXRoICdcMCcgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBvdmVyZmxv
dy4KIHN0YXRpYyB2b2lkIEFwcGVuZChTdGF0ZSAqc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0IHN0
ciwgY29uc3QgaW50IGxlbmd0aCkgewogICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7CkBAIC04NDAsNyArODQwLDcgQEAgc3RhdGljIGJvb2wgUGFyc2VOdW1iZXIoU3RhdGUgKnN0
YXRlLCBpbnQgKm51bWJlcl9vdXQpIHsKIH0KIAogLy8gRmxvYXRpbmctcG9pbnQgbGl0ZXJhbHMg
YXJlIGVuY29kZWQgdXNpbmcgYSBmaXhlZC1sZW5ndGggbG93ZXJjYXNlCi0vLyBoZXhhZGVjaW1h
bCBzdGQ6OnN0cmluZy4KKy8vIGhleGFkZWNpbWFsIHN0cmluZy4KIHN0YXRpYyBib29sIFBhcnNl
RmxvYXROdW1iZXIoU3RhdGUgKnN0YXRlKSB7CiAgIENvbXBsZXhpdHlHdWFyZCBndWFyZChzdGF0
ZSk7CiAgIGlmIChndWFyZC5Jc1Rvb0NvbXBsZXgoKSkgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZGVidWdnaW5nL3N0YWNrdHJhY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0
cmFjZS5jYwppbmRleCA2MWZlZTYxOTBmNTQ1ODQyYWRjMzYyYzhmY2ZjZWM1YzBlNzU2NThhLi40
NjNmYWQyNjljMTZhZmJhM2UzODNlZWQxMjkwNmM1NDg4NDlmMzhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0cmFj
ZS5jYwpAQCAtODAsMTEgKzgwLDEzIEBAIEFCU0xfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgaW5s
aW5lIGludCBVbndpbmQodm9pZCoqIHJlc3VsdCwgaW50KiBzaXplcywKIAogfSAgLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQogCitBQlNMX0FUVFJJQlVURV9OT0lOTElORQogaW50IEdldFN0YWNrRnJh
bWVzKHZvaWQqKiByZXN1bHQsIGludCogc2l6ZXMsIGludCBtYXhfZGVwdGgsIGludCBza2lwX2Nv
dW50KSB7CiAgIHJldHVybiBVbndpbmQ8dHJ1ZSwgZmFsc2U+KHJlc3VsdCwgc2l6ZXMsIG1heF9k
ZXB0aCwgc2tpcF9jb3VudCwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7CiB9CiAKK0FCU0xfQVRUUklCVVRFX05PSU5MSU5FCiBpbnQgR2V0U3RhY2tGcmFt
ZXNXaXRoQ29udGV4dCh2b2lkKiogcmVzdWx0LCBpbnQqIHNpemVzLCBpbnQgbWF4X2RlcHRoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNraXBfY291bnQsIGNvbnN0IHZvaWQq
IHVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBtaW5fZHJvcHBlZF9mcmFt
ZXMpIHsKQEAgLTkyLDExICs5NCwxMyBAQCBpbnQgR2V0U3RhY2tGcmFtZXNXaXRoQ29udGV4dCh2
b2lkKiogcmVzdWx0LCBpbnQqIHNpemVzLCBpbnQgbWF4X2RlcHRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1pbl9kcm9wcGVkX2ZyYW1lcyk7CiB9CiAKK0FCU0xfQVRUUklCVVRFX05P
SU5MSU5FCiBpbnQgR2V0U3RhY2tUcmFjZSh2b2lkKiogcmVzdWx0LCBpbnQgbWF4X2RlcHRoLCBp
bnQgc2tpcF9jb3VudCkgewogICByZXR1cm4gVW53aW5kPGZhbHNlLCBmYWxzZT4ocmVzdWx0LCBu
dWxscHRyLCBtYXhfZGVwdGgsIHNraXBfY291bnQsIG51bGxwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKIH0KIAorQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUKIGlu
dCBHZXRTdGFja1RyYWNlV2l0aENvbnRleHQodm9pZCoqIHJlc3VsdCwgaW50IG1heF9kZXB0aCwg
aW50IHNraXBfY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQq
IHVjLCBpbnQqIG1pbl9kcm9wcGVkX2ZyYW1lcykgewogICByZXR1cm4gVW53aW5kPGZhbHNlLCB0
cnVlPihyZXN1bHQsIG51bGxwdHIsIG1heF9kZXB0aCwgc2tpcF9jb3VudCwgdWMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcv
c3ltYm9saXplX3Rlc3QuY2MKaW5kZXggNWYyYWY0N2VlNDVkNjU0YjQyMmQwZTg2NGZiZjA2MGNi
NWM1MTA3NS4uODAyOWZiZTlkMmU2ZmI3MjA4MTZlZjA0MzVlMDcwOTljYzM4NzI5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJvbGl6ZV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVn
Z2luZy9zeW1ib2xpemVfdGVzdC5jYwpAQCAtMzIxLDcgKzMyMSw3IEBAIFRFU1QoU3ltYm9saXpl
LCBTeW1ib2xpemVXaXRoTXVsdGlwbGVNYXBzKSB7CiAgIH0KIH0KIAotLy8gQXBwZW5kcyBzdGQ6
OnN0cmluZygqYXJncy0+YXJnKSB0byBhcmdzLT5zeW1ib2xfYnVmLgorLy8gQXBwZW5kcyBzdHJp
bmcoKmFyZ3MtPmFyZykgdG8gYXJncy0+c3ltYm9sX2J1Zi4KIHN0YXRpYyB2b2lkIER1bW15U3lt
Ym9sRGVjb3JhdG9yKAogICAgIGNvbnN0IGFic2w6OmRlYnVnZ2luZ19pbnRlcm5hbDo6U3ltYm9s
RGVjb3JhdG9yQXJncyAqYXJncykgewogICBzdGQ6OnN0cmluZyAqbWVzc2FnZSA9IHN0YXRpY19j
YXN0PHN0ZDo6c3RyaW5nICo+KGFyZ3MtPmFyZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JV
SUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5iYXplbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGFhNTUwNmMx
MWM4N2VkMGI0YTA2NDJiOTUwYmExNjBmOGEyZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
aGFzaC9CVUlMRC5iYXplbApAQCAtMCwwICsxLDExNCBAQAorIworIyBDb3B5cmlnaHQgMjAxOCBU
aGUgQWJzZWlsIEF1dGhvcnMuCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisj
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorIworCitsb2FkKAorICAgICIvL2Fic2w6Y29wdHMuYnpsIiwKKyAgICAiQUJTTF9E
RUZBVUxUX0NPUFRTIiwKKyAgICAiQUJTTF9URVNUX0NPUFRTIiwKKykKKworcGFja2FnZShkZWZh
dWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKKworbGljZW5zZXMoWyJu
b3RpY2UiXSkgICMgQXBhY2hlIDIuMAorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFzaCIs
CisgICAgc3JjcyA9IFsKKyAgICAgICAgImludGVybmFsL2hhc2guY2MiLAorICAgICAgICAiaW50
ZXJuYWwvaGFzaC5oIiwKKyAgICBdLAorICAgIGhkcnMgPSBbImhhc2guaCJdLAorICAgIGNvcHRz
ID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y2l0eSIsCisg
ICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6
ZW5kaWFuIiwKKyAgICAgICAgIi8vYWJzbC9jb250YWluZXI6Zml4ZWRfYXJyYXkiLAorICAgICAg
ICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL251bWVyaWM6aW50
MTI4IiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpv
cHRpb25hbCIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6dmFyaWFudCIsCisgICAgICAgICIvL2Fi
c2wvdXRpbGl0eSIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImhhc2hf
dGVzdGluZyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBbImhhc2hfdGVzdGluZy5o
Il0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpzcHlfaGFzaF9zdGF0ZSIsCisgICAgICAgICIv
L2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAg
ICAgICIvL2Fic2wvdHlwZXM6dmFyaWFudCIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0
ZXN0Ly86Z3Rlc3QiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJoYXNoX3Rl
c3QiLAorICAgIHNyY3MgPSBbImhhc2hfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFzaCIsCisgICAgICAgICI6aGFzaF90
ZXN0aW5nIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIv
L2Fic2wvY29udGFpbmVyOmZsYXRfaGFzaF9zZXQiLAorICAgICAgICAiLy9hYnNsL2hhc2g6c3B5
X2hhc2hfc3RhdGUiLAorICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgICAg
ICAiLy9hYnNsL251bWVyaWM6aW50MTI4IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRl
c3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAi
c3B5X2hhc2hfc3RhdGUiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5h
bC9zcHlfaGFzaF9zdGF0ZS5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisg
ICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKKyAgICBkZXBzID0gWwor
ICAgICAgICAiOmhhc2giLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9h
YnNsL3N0cmluZ3M6c3RyX2Zvcm1hdCIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBu
YW1lID0gImNpdHkiLAorICAgIHNyY3MgPSBbImludGVybmFsL2NpdHkuY2MiXSwKKyAgICBoZHJz
ID0gWworICAgICAgICAiaW50ZXJuYWwvY2l0eS5oIiwKKyAgICAgICAgImludGVybmFsL2NpdHlf
Y3JjLmgiLAorICAgIF0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVw
cyA9IFsKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCisgICAgICAgICIvL2Fic2wvYmFz
ZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6ZW5kaWFuIiwKKyAgICBdLAor
KQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiY2l0eV90ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRl
cm5hbC9jaXR5X3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBk
ZXBzID0gWworICAgICAgICAiOmNpdHkiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVz
dC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxE
LmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5nbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGI2YjNhMjJiMzcxMzJiYjZl
ZjkyYWJjY2ZiYTFmNjY5Y2ZlNDdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlM
RC5nbgpAQCAtMCwwICsxLDEwNCBAQAorIyBDb3B5cmlnaHQgMjAxOCBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCitpbXBvcnQoIi8vYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIp
CisKK2lmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CisgIHZpc2liaWxpdHkgPSBbCisgICAgIi8v
dGhpcmRfcGFydHkvd2VicnRjLyoiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIs
CisgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpndGVzdCIsCisgIF0KK30gZWxzZSB7Cisg
IHZpc2liaWxpdHkgPSBbICIqIiBdCit9CisKK3NvdXJjZV9zZXQoImhhc2giKSB7CisgIGNvbmZp
Z3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25m
aWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwK
KyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNs
X2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImludGVybmFsL2hhc2guY2Mi
LAorICAgICJpbnRlcm5hbC9oYXNoLmgiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAiaGFzaC5o
IiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y2l0eSIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFk
ZXJzIiwKKyAgICAiLi4vYmFzZTplbmRpYW4iLAorICAgICIuLi9jb250YWluZXI6Zml4ZWRfYXJy
YXkiLAorICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAiLi4vbnVtZXJpYzppbnQxMjgi
LAorICAgICIuLi9zdHJpbmdzIiwKKyAgICAiLi4vdHlwZXM6b3B0aW9uYWwiLAorICAgICIuLi90
eXBlczp2YXJpYW50IiwKKyAgICAiLi4vdXRpbGl0eSIsCisgIF0KK30KKworc291cmNlX3NldCgi
aGFzaF90ZXN0aW5nIikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1
aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAg
ICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1Ymxp
Y19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25m
aWciIF0KKyAgcHVibGljID0gWworICAgICJoYXNoX3Rlc3RpbmcuaCIsCisgIF0KKyAgZGVwcyA9
IFsKKyAgICAiOnNweV9oYXNoX3N0YXRlIiwKKyAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisg
ICAgIi4uL3N0cmluZ3MiLAorICAgICIuLi90eXBlczp2YXJpYW50IiwKKyAgICAiLy90ZXN0aW5n
L2d0ZXN0IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJzcHlfaGFzaF9zdGF0ZSIpIHsKKyAgdGVz
dG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hy
b21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGls
ZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNs
X2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAg
ICAiaW50ZXJuYWwvc3B5X2hhc2hfc3RhdGUuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmhh
c2giLAorICAgICIuLi9zdHJpbmdzIiwKKyAgICAiLi4vc3RyaW5nczpzdHJfZm9ybWF0IiwKKyAg
XQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICIuLi8qIiBdCit9CisKK3Nv
dXJjZV9zZXQoImNpdHkiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGls
ZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9
IFsKKyAgICAiaW50ZXJuYWwvY2l0eS5oIiwKKyAgICAiaW50ZXJuYWwvY2l0eV9jcmMuaCIsCisg
IF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW50ZXJuYWwvY2l0eS5jYyIsCisgIF0KKyAgZGVwcyA9
IFsKKyAgICAiLi4vYmFzZTpjb25maWciLAorICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCisg
ICAgIi4uL2Jhc2U6ZW5kaWFuIiwKKyAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUwODFl
Mzc3NGY4ZjMyMmE5ZDc1ZGE5NDhlZjI3YTIyMTNkMjI3ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2hhc2gvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSw4MCBAQAorIworIyBDb3B5cmlnaHQg
MjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorIworCitsaXN0KEFQUEVORCBIQVNIX1BVQkxJQ19IRUFERVJTCisgICJo
YXNoLmgiCispCisKK2xpc3QoQVBQRU5EIEhBU0hfSU5URVJOQUxfSEVBREVSUworICAiaW50ZXJu
YWwvY2l0eS5oIgorICAiaW50ZXJuYWwvY2l0eV9jcmMuaCIKKyAgImludGVybmFsL2hhc2guaCIK
KykKKworIyBhYnNsX2hhc2ggbGlicmFyeQorbGlzdChBUFBFTkQgSEFTSF9TUkMKKyAgImludGVy
bmFsL2NpdHkuY2MiCisgICJpbnRlcm5hbC9oYXNoLmNjIgorICAke0hBU0hfUFVCTElDX0hFQURF
UlN9CisgICR7SEFTSF9JTlRFUk5BTF9IRUFERVJTfQorKQorCitzZXQoSEFTSF9QVUJMSUNfTElC
UkFSSUVTIGFic2w6Omhhc2ggYWJzbDo6Y29udGFpbmVyIGFic2w6OnN0cmluZ3MgYWJzbDo6c3Ry
X2Zvcm1hdCBhYnNsOjp1dGlsaXR5KQorCithYnNsX2xpYnJhcnkoCisgIFRBUkdFVAorICAgIGFi
c2xfaGFzaAorICBTT1VSQ0VTCisgICAgJHtIQVNIX1NSQ30KKyAgUFVCTElDX0xJQlJBUklFUwor
ICAgICR7SEFTSF9QVUJMSUNfTElCUkFSSUVTfQorICBFWFBPUlRfTkFNRQorICAgIGhhc2gKKykK
KworIworIyMgVEVTVFMKKyMKKworIyB0ZXN0aW5nIHN1cHBvcnQKK3NldChIQVNIX1RFU1RfSEVB
REVSUyBoYXNoX3Rlc3RpbmcuaCBpbnRlcm5hbC9zcHlfaGFzaF9zdGF0ZS5oKQorc2V0KEhBU0hf
VEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6Omhhc2ggYWJzbDo6Y29udGFpbmVyIGFic2w6Om51
bWVyaWMgYWJzbDo6c3RyaW5ncyBhYnNsOjpzdHJfZm9ybWF0KQorCisjIGhhc2hfdGVzdAorc2V0
KEhBU0hfVEVTVF9TUkMgImhhc2hfdGVzdC5jYyIgJHtIQVNIX1RFU1RfSEVBREVSU30pCisKK2Fi
c2xfdGVzdCgKKyAgVEFSR0VUCisgICAgaGFzaF90ZXN0CisgIFNPVVJDRVMKKyAgICAke0hBU0hf
VEVTVF9TUkN9CisgIFBVQkxJQ19MSUJSQVJJRVMKKyAgICAke0hBU0hfVEVTVF9QVUJMSUNfTElC
UkFSSUVTfQorKQorCisjIGhhc2hfdGVzdAorc2V0KENJVFlfVEVTVF9TUkMgImludGVybmFsL2Np
dHlfdGVzdC5jYyIpCisKK2Fic2xfdGVzdCgKKyAgVEFSR0VUCisgICAgY2l0eV90ZXN0CisgIFNP
VVJDRVMKKyAgICAke0NJVFlfVEVTVF9TUkN9CisgIFBVQkxJQ19MSUJSQVJJRVMKKyAgICAke0hB
U0hfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorKQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gv
aGFzaC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdiYTRjMmI3YTVjMTk4Zjc0
Y2UyNzM5MTBiYWM4ODFjNDU1OWY4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFz
aC5oCkBAIC0wLDAgKzEsMzEyIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhv
cnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBoYXNoLmgKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBB
YnNlaWwgYGhhc2hgIGxpYnJhcnkgYW5kIHRoZSBBYnNlaWwgaGFzaGluZworLy8gZnJhbWV3b3Jr
LiBUaGlzIGZyYW1ld29yayBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nOgorLy8KKy8vICAgKiBU
aGUgYGFic2w6Okhhc2hgIGZ1bmN0b3IsIHdoaWNoIGlzIHVzZWQgdG8gaW52b2tlIHRoZSBoYXNo
ZXIgd2l0aGluIHRoZQorLy8gICAgIEFic2VpbCBoYXNoaW5nIGZyYW1ld29yay4gYGFic2w6Okhh
c2g8VD5gIHN1cHBvcnRzIG1vc3QgYmFzaWMgdHlwZXMgYW5kCisvLyAgICAgYSBudW1iZXIgb2Yg
QWJzZWlsIHR5cGVzIG91dCBvZiB0aGUgYm94LgorLy8gICAqIGBBYnNsSGFzaFZhbHVlYCwgYW4g
ZXh0ZW5zaW9uIHBvaW50IHRoYXQgYWxsb3dzIHlvdSB0byBleHRlbmQgdHlwZXMgdG8KKy8vICAg
ICBzdXBwb3J0IEFic2VpbCBoYXNoaW5nIHdpdGhvdXQgcmVxdWlyaW5nIHlvdSB0byBkZWZpbmUg
YSBoYXNoaW5nCisvLyAgICAgYWxnb3JpdGhtLgorLy8gICAqIGBIYXNoU3RhdGVgLCBhIHR5cGUt
ZXJhc2VkIGNsYXNzIHdoaWNoIGltcGxlbWVudCB0aGUgbWFuaXB1bGF0aW9uIG9mIHRoZQorLy8g
ICAgIGhhc2ggc3RhdGUgKEgpIGl0c2VsZi4gY29udGFpbmluZyBtZW1iZXIgZnVuY3Rpb25zIGBj
b21iaW5lKClgIGFuZAorLy8gICAgIGBjb21iaW5lX2NvbnRpZ3VvdXMoKWAsIHdoaWNoIHlvdSBj
YW4gdXNlIHRvIGNvbnRyaWJ1dGUgdG8gYW4gZXhpc3RpbmcKKy8vICAgICBoYXNoIHN0YXRlIHdo
ZW4gaGFzaGluZyB5b3VyIHR5cGVzLgorLy8KKy8vIFVubGlrZSBgc3RkOjpoYXNoYCBvciBvdGhl
ciBoYXNoaW5nIGZyYW1ld29ya3MsIHRoZSBBYnNlaWwgaGFzaGluZyBmcmFtZXdvcmsKKy8vIHBy
b3ZpZGVzIG1vc3Qgb2YgaXRzIHV0aWxpdHkgYnkgYWJzdHJhY3RpbmcgYXdheSB0aGUgaGFzaCBh
bGdvcml0aG0gKGFuZCBpdHMKKy8vIGltcGxlbWVudGF0aW9uKSBlbnRpcmVseS4gSW5zdGVhZCwg
YSB0eXBlIGludm9rZXMgdGhlIEFic2VpbCBoYXNoaW5nCisvLyBmcmFtZXdvcmsgYnkgc2ltcGx5
IGNvbWJpbmluZyBpdHMgc3RhdGUgd2l0aCB0aGUgc3RhdGUgb2Yga25vd24sIGhhc2hhYmxlCisv
LyB0eXBlcy4gSGFzaGluZyBvZiB0aGF0IGNvbWJpbmVkIHN0YXRlIGlzIHNlcGFyYXRlbHkgZG9u
ZSBieSBgYWJzbDo6SGFzaGAuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIC8vIFN1cHBvc2Ug
d2UgaGF2ZSBhIGNsYXNzIGBDaXJjbGVgIGZvciB3aGljaCB3ZSB3YW50IHRvIGFkZCBoYXNoaW5n
CisvLyAgIGNsYXNzIENpcmNsZSB7CisvLyAgICAgcHVibGljOgorLy8gICAgICAgLi4uCisvLyAg
ICAgcHJpdmF0ZToKKy8vICAgICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gY2VudGVyXzsKKy8vICAg
ICAgIGludCByYWRpdXNfOworLy8gICAgIH07CisvLworLy8gICAvLyBUbyBhZGQgaGFzaGluZyBz
dXBwb3J0IHRvIGBDaXJjbGVgLCB3ZSBzaW1wbHkgbmVlZCB0byBhZGQgYW4gb3JkaW5hcnkKKy8v
ICAgLy8gZnVuY3Rpb24gYEFic2xIYXNoVmFsdWUoKWAsIGFuZCByZXR1cm4gdGhlIGNvbWJpbmVk
IGhhc2ggc3RhdGUgb2YgdGhlCisvLyAgIC8vIGV4aXN0aW5nIGhhc2ggc3RhdGUgYW5kIHRoZSBj
bGFzcyBzdGF0ZToKKy8vCisvLyAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CisvLyAgICAgZnJp
ZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIGNvbnN0IENpcmNsZSYgYykgeworLy8gICAgICAgcmV0
dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBjLmNlbnRlcl8sIGMucmFkaXVzXyk7CisvLyAg
ICAgfQorLy8KKy8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgQWRkaW5nIFR5cGUgU3VwcG9y
dCB0byBgYWJzbDo6SGFzaGAgYmVsb3cuCisvLworI2lmbmRlZiBBQlNMX0hBU0hfSEFTSF9IXwor
I2RlZmluZSBBQlNMX0hBU0hfSEFTSF9IXworCisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFs
L2hhc2guaCIKKworbmFtZXNwYWNlIGFic2wgeworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gYGFic2w6Okhhc2hgCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIGBhYnNsOjpI
YXNoPFQ+YCBpcyBhIGNvbnZlbmllbnQgZ2VuZXJhbC1wdXJwb3NlIGhhc2ggZnVuY3RvciBmb3Ig
YSB0eXBlIGBUYAorLy8gc2F0aXNmeWluZyBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IChpbiBvcmRlcik6CisvLworLy8gICogVCBpcyBhbiBhcml0aG1ldGljIG9yIHBvaW50ZXIgdHlw
ZQorLy8gICogVCBkZWZpbmVzIGFuIG92ZXJsb2FkIGZvciBgQWJzbEhhc2hWYWx1ZShILCBjb25z
dCBUJilgIGZvciBhbiBhcmJpdHJhcnkKKy8vICAgIGhhc2ggc3RhdGUgYEhgLgorLy8gIC0gVCBk
ZWZpbmVzIGEgc3BlY2lhbGl6YXRpb24gb2YgYEhBU0hfTkFNRVNQQUNFOjpoYXNoPFQ+YAorLy8g
IC0gVCBkZWZpbmVzIGEgc3BlY2lhbGl6YXRpb24gb2YgYHN0ZDo6aGFzaDxUPmAKKy8vCisvLyBg
YWJzbDo6SGFzaGAgaW50cmluc2ljYWxseSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHR5cGVzOgor
Ly8KKy8vICAgKiBBbGwgaW50ZWdyYWwgdHlwZXMgKGluY2x1ZGluZyBib29sKQorLy8gICAqIEFs
bCBlbnVtIHR5cGVzCisvLyAgICogQWxsIGZsb2F0aW5nLXBvaW50IHR5cGVzIChhbHRob3VnaCBo
YXNoaW5nIHRoZW0gaXMgZGlzY291cmFnZWQpCisvLyAgICogQWxsIHBvaW50ZXIgdHlwZXMsIGlu
Y2x1ZGluZyBudWxscHRyX3QKKy8vICAgKiBzdGQ6OnBhaXI8VDEsIFQyPiwgaWYgVDEgYW5kIFQy
IGFyZSBoYXNoYWJsZQorLy8gICAqIHN0ZDo6dHVwbGU8VHMuLi4+LCBpZiBhbGwgdGhlIFRzLi4u
IGFyZSBoYXNoYWJsZQorLy8gICAqIHN0ZDo6dW5pcXVlX3B0ciBhbmQgc3RkOjpzaGFyZWRfcHRy
CisvLyAgICogQWxsIHN0cmluZy1saWtlIHR5cGVzIGluY2x1ZGluZzoKKy8vICAgICAqIHN0ZDo6
c3RyaW5nCisvLyAgICAgKiBzdGQ6OnN0cmluZ192aWV3IChhcyB3ZWxsIGFzIGFueSBpbnN0YW5j
ZSBvZiBzdGQ6OmJhc2ljX3N0cmluZyB0aGF0CisvLyAgICAgICB1c2VzIGNoYXIgYW5kIHN0ZDo6
Y2hhcl90cmFpdHMpCisvLyAgKiBBbGwgdGhlIHN0YW5kYXJkIHNlcXVlbmNlIGNvbnRhaW5lcnMg
KHByb3ZpZGVkIHRoZSBlbGVtZW50cyBhcmUgaGFzaGFibGUpCisvLyAgKiBBbGwgdGhlIHN0YW5k
YXJkIG9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVycyAocHJvdmlkZWQgdGhlIGVsZW1lbnRz
IGFyZQorLy8gICAgaGFzaGFibGUpCisvLyAgKiBhYnNsIHR5cGVzIHN1Y2ggYXMgdGhlIGZvbGxv
d2luZzoKKy8vICAgICogYWJzbDo6c3RyaW5nX3ZpZXcKKy8vICAgICogYWJzbDo6SW5saW5lZFZl
Y3RvcgorLy8gICAgKiBhYnNsOjpGaXhlZEFycmF5CisvLyAgICAqIGFic2w6OnVuaXQxMjgKKy8v
ICAgICogYWJzbDo6VGltZSwgYWJzbDo6RHVyYXRpb24sIGFuZCBhYnNsOjpUaW1lWm9uZQorLy8K
Ky8vIE5vdGU6IHRoZSBsaXN0IGFib3ZlIGlzIG5vdCBtZWFudCB0byBiZSBleGhhdXN0aXZlLiBB
ZGRpdGlvbmFsIHR5cGUgc3VwcG9ydAorLy8gbWF5IGJlIGFkZGVkLCBpbiB3aGljaCBjYXNlIHRo
ZSBhYm92ZSBsaXN0IHdpbGwgYmUgdXBkYXRlZC4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8gYWJzbDo6SGFzaCBJbnZvY2F0aW9uIEV2YWx1YXRpb24KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gV2hlbiBpbnZva2VkLCBgYWJzbDo6SGFzaDxUPmAgc2VhcmNoZXMgZm9y
IHN1cHBsaWVkIGhhc2ggZnVuY3Rpb25zIGluIHRoZQorLy8gZm9sbG93aW5nIG9yZGVyOgorLy8K
Ky8vICAgKiBOYXRpdmVseSBzdXBwb3J0ZWQgdHlwZXMgb3V0IG9mIHRoZSBib3ggKHNlZSBhYm92
ZSkKKy8vICAgKiBUeXBlcyBmb3Igd2hpY2ggYW4gYEFic2xIYXNoVmFsdWUoKWAgb3ZlcmxvYWQg
aXMgcHJvdmlkZWQgKHN1Y2ggYXMKKy8vICAgICB1c2VyLWRlZmluZWQgdHlwZXMpLiBTZWUgIkFk
ZGluZyBUeXBlIFN1cHBvcnQgdG8gYGFic2w6Okhhc2hgIiBiZWxvdy4KKy8vICAgKiBUeXBlcyB3
aGljaCBkZWZpbmUgYSBgSEFTSF9OQU1FU1BBQ0U6Omhhc2g8VD5gIHNwZWNpYWxpemF0aW9uIChh
a2EKKy8vICAgICBgX19nbnVfY3h4OjpoYXNoPFQ+YCBmb3IgZ2NjL0NsYW5nIG9yIGBzdGRleHQ6
Omhhc2g8VD5gIGZvciBNU1ZDKQorLy8gICAqIFR5cGVzIHdoaWNoIGRlZmluZSBhIGBzdGQ6Omhh
c2g8VD5gIHNwZWNpYWxpemF0aW9uCisvLworLy8gVGhlIGZhbGxiYWNrIHRvIGxlZ2FjeSBoYXNo
IGZ1bmN0aW9ucyBleGlzdHMgbWFpbmx5IGZvciBiYWNrd2FyZHMKKy8vIGNvbXBhdGliaWxpdHku
IElmIHlvdSBoYXZlIGEgY2hvaWNlLCBwcmVmZXIgZGVmaW5pbmcgYW4gYEFic2xIYXNoVmFsdWVg
CisvLyBvdmVybG9hZCBpbnN0ZWFkIG9mIHNwZWNpYWxpemluZyBhbnkgbGVnYWN5IGhhc2ggZnVu
Y3RvcnMuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFRoZSBIYXNoIFN0YXRlIENv
bmNlcHQsIGFuZCB1c2luZyBgSGFzaFN0YXRlYCBmb3IgVHlwZSBFcmFzdXJlCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3JrIHJlbGllcyBv
biB0aGUgQ29uY2VwdCBvZiBhICJoYXNoIHN0YXRlLiIgU3VjaCBhCisvLyBoYXNoIHN0YXRlIGlz
IHVzZWQgaW4gc2V2ZXJhbCBwbGFjZXM6CisvLworLy8gKiBXaXRoaW4gZXhpc3RpbmcgaW1wbGVt
ZW50YXRpb25zIG9mIGBhYnNsOjpIYXNoPFQ+YCB0byBzdG9yZSB0aGUgaGFzaGVkCisvLyAgIHN0
YXRlIG9mIGFuIG9iamVjdC4gTm90ZSB0aGF0IGl0IGlzIHVwIHRvIHRoZSBpbXBsZW1lbnRhdGlv
biBob3cgaXQgc3RvcmVzCisvLyAgIHN1Y2ggc3RhdGUuIEEgaGFzaCB0YWJsZSwgZm9yIGV4YW1w
bGUsIG1heSBtaXggdGhlIHN0YXRlIHRvIHByb2R1Y2UgYW4KKy8vICAgaW50ZWdlciB2YWx1ZTsg
YSB0ZXN0aW5nIGZyYW1ld29yayBtYXkgc2ltcGx5IGhvbGQgYSB2ZWN0b3Igb2YgdGhhdCBzdGF0
ZS4KKy8vICogV2l0aGluIGltcGxlbWVudGF0aW9ucyBvZiBgQWJzbEhhc2hWYWx1ZSgpYCB1c2Vk
IHRvIGV4dGVuZCB1c2VyLWRlZmluZWQKKy8vICAgdHlwZXMuIChTZWUgIkFkZGluZyBUeXBlIFN1
cHBvcnQgdG8gYWJzbDo6SGFzaCIgYmVsb3cuKQorLy8gKiBJbnNpZGUgYSBgSGFzaFN0YXRlYCwg
cHJvdmlkaW5nIHR5cGUgZXJhc3VyZSBmb3IgdGhlIGNvbmNlcHQgb2YgYSBoYXNoCisvLyAgIHN0
YXRlLCB3aGljaCB5b3UgY2FuIHVzZSB0byBleHRlbmQgdGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdv
cmsgZm9yIHR5cGVzCisvLyAgIHRoYXQgYXJlIG90aGVyd2lzZSBkaWZmaWN1bHQgdG8gZXh0ZW5k
IHVzaW5nIGBBYnNsSGFzaFZhbHVlKClgLiAoU2VlIHRoZQorLy8gICBgSGFzaFN0YXRlYCBjbGFz
cyBiZWxvdy4pCisvLworLy8gVGhlICJoYXNoIHN0YXRlIiBjb25jZXB0IGNvbnRhaW5zIHR3byBt
ZW1iZXIgZnVuY3Rpb25zIGZvciBtaXhpbmcgaGFzaCBzdGF0ZToKKy8vCisvLyAqIGBIOjpjb21i
aW5lKClgCisvLworLy8gICBDb21iaW5lcyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHZhbHVlcyBp
bnRvIGEgaGFzaCBzdGF0ZSwgcmV0dXJuaW5nIHRoZQorLy8gICB1cGRhdGVkIHN0YXRlLiBOb3Rl
IHRoYXQgdGhlIGV4aXN0aW5nIGhhc2ggc3RhdGUgaXMgbW92ZS1vbmx5IGFuZCBtdXN0IGJlCisv
LyAgIHBhc3NlZCBieSB2YWx1ZS4KKy8vCisvLyAgIEVhY2ggb2YgdGhlIHZhbHVlIHR5cGVzIFQg
bXVzdCBiZSBoYXNoYWJsZSBieSBILgorLy8KKy8vICAgTk9URToKKy8vCisvLyAgICAgc3RhdGUg
PSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMSwgdmFsdWUyLCB2YWx1ZTMpOwor
Ly8KKy8vICAgbXVzdCBiZSBndWFyYW50ZWVkIHRvIHByb2R1Y2UgdGhlIHNhbWUgaGFzaCBleHBh
bnNpb24gYXMKKy8vCisvLyAgICAgc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSks
IHZhbHVlMSk7CisvLyAgICAgc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZh
bHVlMik7CisvLyAgICAgc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVl
Myk7CisvLworLy8gKiBgSDo6Y29tYmluZV9jb250aWd1b3VzKClgCisvLworLy8gICAgQ29tYmlu
ZXMgYSBjb250aWd1b3VzIGFycmF5IG9mIGBzaXplYCBlbGVtZW50cyBpbnRvIGEgaGFzaCBzdGF0
ZSwKKy8vICAgIHJldHVybmluZyB0aGUgdXBkYXRlZCBzdGF0ZS4gTm90ZSB0aGF0IHRoZSBleGlz
dGluZyBoYXNoIHN0YXRlIGlzCisvLyAgICBtb3ZlLW9ubHkgYW5kIG11c3QgYmUgcGFzc2VkIGJ5
IHZhbHVlLgorLy8KKy8vICAgIE5PVEU6CisvLworLy8gICAgICBzdGF0ZSA9IEg6OmNvbWJpbmVf
Y29udGlndW91cyhzdGQ6Om1vdmUoc3RhdGUpLCBkYXRhLCBzaXplKTsKKy8vCisvLyAgICBuZWVk
IE5PVCBiZSBndWFyYW50ZWVkIHRvIHByb2R1Y2UgdGhlIHNhbWUgaGFzaCBleHBhbnNpb24gYXMg
YSBsb29wCisvLyAgICAoaXQgbWF5IHBlcmZvcm0gaW50ZXJuYWwgb3B0aW1pemF0aW9ucykuIElm
IHlvdSBuZWVkIHRoaXMgZ3VhcmFudGVlLCB1c2UgYQorLy8gICAgbG9vcCBpbnN0ZWFkLgorLy8K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBZGRpbmcgVHlwZSBTdXBwb3J0IHRvIGBhYnNs
OjpIYXNoYAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUbyBhZGQgc3VwcG9ydCBm
b3IgeW91ciB1c2VyLWRlZmluZWQgdHlwZSwgYWRkIGEgcHJvcGVyIGBBYnNsSGFzaFZhbHVlKClg
CisvLyBvdmVybG9hZCBhcyBhIGZyZWUgKG5vbi1tZW1iZXIpIGZ1bmN0aW9uLiBUaGUgb3Zlcmxv
YWQgd2lsbCB0YWtlIGFuCisvLyBleGlzdGluZyBoYXNoIHN0YXRlIGFuZCBzaG91bGQgY29tYmlu
ZSB0aGF0IHN0YXRlIHdpdGggc3RhdGUgZnJvbSB0aGUgdHlwZS4KKy8vCisvLyBFeGFtcGxlOgor
Ly8KKy8vICAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CisvLyAgIEggQWJzbEhhc2hWYWx1ZShIIHN0
YXRlLCBjb25zdCBNeVR5cGUmIHYpIHsKKy8vICAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1v
dmUoc3RhdGUpLCB2LmZpZWxkMSwgLi4uLCB2LmZpZWxkTik7CisvLyAgIH0KKy8vCisvLyB3aGVy
ZSBgKGZpZWxkMSwgLi4uLCBmaWVsZE4pYCBhcmUgdGhlIG1lbWJlcnMgeW91IHdvdWxkIHVzZSBv
biB5b3VyCisvLyBgb3BlcmF0b3I9PWAgdG8gZGVmaW5lIGVxdWFsaXR5LgorLy8KKy8vIE5vdGlj
ZSB0aGF0IGBBYnNsSGFzaFZhbHVlYCBpcyBub3QgYSBjbGFzcyBtZW1iZXIsIGJ1dCBhbiBvcmRp
bmFyeSBmdW5jdGlvbi4KKy8vIEFuIGBBYnNsSGFzaFZhbHVlYCBvdmVybG9hZCBmb3IgYSB0eXBl
IHNob3VsZCBvbmx5IGJlIGRlY2xhcmVkIGluIHRoZSBzYW1lCisvLyBmaWxlIGFuZCBuYW1lc3Bh
Y2UgYXMgc2FpZCB0eXBlLiBUaGUgcHJvcGVyIGBBYnNsSGFzaFZhbHVlYCBpbXBsZW1lbnRhdGlv
bgorLy8gZm9yIGEgZ2l2ZW4gdHlwZSB3aWxsIGJlIGRpc2NvdmVyZWQgdmlhIEFETC4KKy8vCisv
LyBOb3RlOiB1bmxpa2UgYHN0ZDo6aGFzaCcsIGBhYnNsOjpIYXNoYCBzaG91bGQgbmV2ZXIgYmUg
c3BlY2lhbGl6ZWQuIEl0IG11c3QKKy8vIG9ubHkgYmUgZXh0ZW5kZWQgYnkgYWRkaW5nIGBBYnNs
SGFzaFZhbHVlKClgIG92ZXJsb2Fkcy4KKy8vCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5n
IEhhc2ggPSBhYnNsOjpoYXNoX2ludGVybmFsOjpIYXNoPFQ+OworCisvLyBIYXNoU3RhdGUKKy8v
CisvLyBBIHR5cGUgZXJhc2VkIHZlcnNpb24gb2YgdGhlIGhhc2ggc3RhdGUgY29uY2VwdCwgZm9y
IHVzZSBpbiB1c2VyLWRlZmluZWQKKy8vIGBBYnNsSGFzaFZhbHVlYCBpbXBsZW1lbnRhdGlvbnMg
dGhhdCBjYW4ndCB1c2UgdGVtcGxhdGVzIChzdWNoIGFzIFBJbXBsCisvLyBjbGFzc2VzLCB2aXJ0
dWFsIGZ1bmN0aW9ucywgZXRjLikuIFRoZSB0eXBlIGVyYXN1cmUgYWRkcyBvdmVyaGVhZCBzbyBp
dAorLy8gc2hvdWxkIGJlIGF2b2lkZWQgdW5sZXNzIG5lY2Vzc2FyeS4KKy8vCisvLyBOb3RlOiBU
aGlzIHdyYXBwZXIgd2lsbCBvbmx5IGVyYXNlIGNhbGxzIHRvOgorLy8gICAgIGNvbWJpbmVfY29u
dGlndW91cyhILCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KQorLy8KKy8vIEFsbCBvdGhl
ciBjYWxscyB3aWxsIGJlIGhhbmRsZWQgaW50ZXJuYWxseSBhbmQgd2lsbCBub3QgaW52b2tlIG92
ZXJsb2FkcworLy8gcHJvdmlkZWQgYnkgdGhlIHdyYXBwZWQgY2xhc3MuCisvLworLy8gVXNlcnMg
b2YgdGhpcyBjbGFzcyBzaG91bGQgc3RpbGwgZGVmaW5lIGEgdGVtcGxhdGUgYEFic2xIYXNoVmFs
dWVgIGZ1bmN0aW9uLAorLy8gYnV0IGNhbiB1c2UgYGFic2w6Okhhc2hTdGF0ZTo6Q3JlYXRlKCZz
dGF0ZSlgIHRvIGVyYXNlIHRoZSB0eXBlIG9mIHRoZSBoYXNoCisvLyBzdGF0ZSBhbmQgZGlzcGF0
Y2ggdG8gdGhlaXIgcHJpdmF0ZSBoYXNoaW5nIGxvZ2ljLgorLy8KKy8vIFRoaXMgc3RhdGUgY2Fu
IGJlIHVzZWQgbGlrZSBhbnkgb3RoZXIgaGFzaCBzdGF0ZS4gSW4gcGFydGljdWxhciwgeW91IGNh
biBjYWxsCisvLyBgSGFzaFN0YXRlOjpjb21iaW5lKClgIGFuZCBgSGFzaFN0YXRlOjpjb21iaW5l
X2NvbnRpZ3VvdXMoKWAgb24gaXQuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIGNsYXNzIElu
dGVyZmFjZSB7CisvLyAgICBwdWJsaWM6CisvLyAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+Cisv
LyAgICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBjb25zdCBJbnRlcmZhY2UmIHZh
bHVlKSB7CisvLyAgICAgICBzdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwgc3Rk
Ojp0eXBlX2luZGV4KHR5cGVpZCgqdGhpcykpKTsKKy8vICAgICAgIHZhbHVlLkhhc2hWYWx1ZShh
YnNsOjpIYXNoU3RhdGU6OkNyZWF0ZSgmc3RhdGUpKTsKKy8vICAgICAgIHJldHVybiBzdGF0ZTsK
Ky8vICAgICB9CisvLyAgICBwcml2YXRlOgorLy8gICAgIHZpcnR1YWwgdm9pZCBIYXNoVmFsdWUo
YWJzbDo6SGFzaFN0YXRlIHN0YXRlKSBjb25zdCA9IDA7CisvLyAgfTsKKy8vCisvLyAgIGNsYXNz
IEltcGwgOiBJbnRlcmZhY2UgeworLy8gICAgcHJpdmF0ZToKKy8vICAgICB2b2lkIEhhc2hWYWx1
ZShhYnNsOjpIYXNoU3RhdGUgc3RhdGUpIGNvbnN0IG92ZXJyaWRlIHsKKy8vICAgICAgIGFic2w6
Okhhc2hTdGF0ZTo6Y29tYmluZShzdGQ6Om1vdmUoc3RhdGUpLCB2MV8sIHYyXyk7CisvLyAgICAg
fQorLy8gICAgIGludCB2MV87CisvLyAgICAgc3RyaW5nIHYyXzsKKy8vICAgfTsKK2NsYXNzIEhh
c2hTdGF0ZSA6IHB1YmxpYyBoYXNoX2ludGVybmFsOjpIYXNoU3RhdGVCYXNlPEhhc2hTdGF0ZT4g
eworIHB1YmxpYzoKKyAgLy8gSGFzaFN0YXRlOjpDcmVhdGUoKQorICAvLworICAvLyBDcmVhdGUg
YSBuZXcgYEhhc2hTdGF0ZWAgaW5zdGFuY2UgdGhhdCB3cmFwcyBgc3RhdGVgLiBBbGwgY2FsbHMg
dG8KKyAgLy8gYGNvbWJpbmUoKWAgYW5kIGBjb21iaW5lX2NvbnRpZ3VvdXMoKWAgb24gdGhlIG5l
dyBpbnN0YW5jZSB3aWxsIGJlCisgIC8vIHJlZGlyZWN0ZWQgdG8gdGhlIG9yaWdpbmFsIGBzdGF0
ZWAgb2JqZWN0LiBUaGUgYHN0YXRlYCBvYmplY3QgbXVzdCBvdXRsaXZlCisgIC8vIHRoZSBgSGFz
aFN0YXRlYCBpbnN0YW5jZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBIYXNo
U3RhdGUgQ3JlYXRlKFQqIHN0YXRlKSB7CisgICAgSGFzaFN0YXRlIHM7CisgICAgcy5Jbml0KHN0
YXRlKTsKKyAgICByZXR1cm4gczsKKyAgfQorCisgIEhhc2hTdGF0ZShjb25zdCBIYXNoU3RhdGUm
KSA9IGRlbGV0ZTsKKyAgSGFzaFN0YXRlJiBvcGVyYXRvcj0oY29uc3QgSGFzaFN0YXRlJikgPSBk
ZWxldGU7CisgIEhhc2hTdGF0ZShIYXNoU3RhdGUmJikgPSBkZWZhdWx0OworICBIYXNoU3RhdGUm
IG9wZXJhdG9yPShIYXNoU3RhdGUmJikgPSBkZWZhdWx0OworCisgIC8vIEhhc2hTdGF0ZTo6Y29t
YmluZSgpCisgIC8vCisgIC8vIENvbWJpbmVzIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdmFsdWVz
IGludG8gYSBoYXNoIHN0YXRlLCByZXR1cm5pbmcgdGhlCisgIC8vIHVwZGF0ZWQgc3RhdGUuCisg
IHVzaW5nIEhhc2hTdGF0ZTo6SGFzaFN0YXRlQmFzZTo6Y29tYmluZTsKKworICAvLyBIYXNoU3Rh
dGU6OmNvbWJpbmVfY29udGlndW91cygpCisgIC8vCisgIC8vIENvbWJpbmVzIGEgY29udGlndW91
cyBhcnJheSBvZiBgc2l6ZWAgZWxlbWVudHMgaW50byBhIGhhc2ggc3RhdGUsIHJldHVybmluZwor
ICAvLyB0aGUgdXBkYXRlZCBzdGF0ZS4KKyAgc3RhdGljIEhhc2hTdGF0ZSBjb21iaW5lX2NvbnRp
Z3VvdXMoSGFzaFN0YXRlIGhhc2hfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGZpcnN0LCBzaXplX3Qgc2l6ZSkgeworICAg
IGhhc2hfc3RhdGUuY29tYmluZV9jb250aWd1b3VzXyhoYXNoX3N0YXRlLnN0YXRlXywgZmlyc3Qs
IHNpemUpOworICAgIHJldHVybiBoYXNoX3N0YXRlOworICB9CisgIHVzaW5nIEhhc2hTdGF0ZTo6
SGFzaFN0YXRlQmFzZTo6Y29tYmluZV9jb250aWd1b3VzOworCisgcHJpdmF0ZToKKyAgSGFzaFN0
YXRlKCkgPSBkZWZhdWx0OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgdm9p
ZCBDb21iaW5lQ29udGlndW91c0ltcGwodm9pZCogcCwgY29uc3QgdW5zaWduZWQgY2hhciogZmly
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSkgewor
ICAgIFQmIHN0YXRlID0gKnN0YXRpY19jYXN0PFQqPihwKTsKKyAgICBzdGF0ZSA9IFQ6OmNvbWJp
bmVfY29udGlndW91cyhzdGQ6Om1vdmUoc3RhdGUpLCBmaXJzdCwgc2l6ZSk7CisgIH0KKworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgdm9pZCBJbml0KFQqIHN0YXRlKSB7CisgICAgc3RhdGVf
ID0gc3RhdGU7CisgICAgY29tYmluZV9jb250aWd1b3VzXyA9ICZDb21iaW5lQ29udGlndW91c0lt
cGw8VD47CisgIH0KKworICAvLyBEbyBub3QgZXJhc2UgYW4gYWxyZWFkeSBlcmFzZWQgc3RhdGUu
CisgIHZvaWQgSW5pdChIYXNoU3RhdGUqIHN0YXRlKSB7CisgICAgc3RhdGVfID0gc3RhdGUtPnN0
YXRlXzsKKyAgICBjb21iaW5lX2NvbnRpZ3VvdXNfID0gc3RhdGUtPmNvbWJpbmVfY29udGlndW91
c187CisgIH0KKworICB2b2lkKiBzdGF0ZV87CisgIHZvaWQgKCpjb21iaW5lX2NvbnRpZ3VvdXNf
KSh2b2lkKiwgY29uc3QgdW5zaWduZWQgY2hhciosIHNpemVfdCk7Cit9OworCit9ICAvLyBuYW1l
c3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNMX0hBU0hfSEFTSF9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvaGFzaC9oYXNoX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2hfdGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43YjZmYjJlN2FjMWNiMDkzMWM1ZTZiOTgzM2RlZjY0ZWFjZTJhYzc3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvaGFzaC9oYXNoX3Rlc3QuY2MKQEAgLTAsMCArMSw0MjUgQEAKKy8vIENvcHly
aWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFz
aC5oIgorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxk
ZXF1ZT4KKyNpbmNsdWRlIDxmb3J3YXJkX2xpc3Q+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNp
bmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bGlzdD4KKyNp
bmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPG51bWVyaWM+CisjaW5j
bHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVk
ZSA8dHVwbGU+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dW5vcmRlcmVkX21h
cD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImdt
b2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9mbGF0X2hhc2hfc2V0LmgiCisjaW5jbHVkZSAiYWJzbC9oYXNoL2hhc2hfdGVzdGlu
Zy5oIgorI2luY2x1ZGUgImFic2wvaGFzaC9pbnRlcm5hbC9zcHlfaGFzaF9zdGF0ZS5oIgorI2lu
Y2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wvbnVtZXJpYy9p
bnQxMjguaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgYWJzbDo6SGFzaDsKK3VzaW5nIGFic2w6
Omhhc2hfaW50ZXJuYWw6OlNweUhhc2hTdGF0ZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBIYXNoVmFsdWVJbnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKK1RZUEVE
X1RFU1RfQ0FTRV9QKEhhc2hWYWx1ZUludFRlc3QpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K1NweUhhc2hTdGF0ZSBTcHlIYXNoKGNvbnN0IFQmIHZhbHVlKSB7CisgIHJldHVybiBTcHlIYXNo
U3RhdGU6OmNvbWJpbmUoU3B5SGFzaFN0YXRlKCksIHZhbHVlKTsKK30KKworLy8gSGVscGVyIHRy
YWl0IHRvIHZlcmlmeSBpZiBUIGlzIGhhc2hhYmxlLiBXZSB1c2UgYWJzbDo6SGFzaCdzIHBvaXNv
biBzdGF0dXMgdG8KKy8vIGRldGVjdCBpdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcg
aXNfaGFzaGFibGUgPSBzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxhYnNsOjpIYXNoPFQ+
PjsKKworVFlQRURfVEVTVF9QKEhhc2hWYWx1ZUludFRlc3QsIEJhc2ljVXNhZ2UpIHsKKyAgRVhQ
RUNUX1RSVUUoKGlzX2hhc2hhYmxlPFR5cGVQYXJhbT46OnZhbHVlKSk7CisKKyAgVHlwZVBhcmFt
IG4gPSA0MjsKKyAgRVhQRUNUX0VRKFNweUhhc2gobiksIFNweUhhc2goVHlwZVBhcmFtezQyfSkp
OworICBFWFBFQ1RfTkUoU3B5SGFzaChuKSwgU3B5SGFzaChUeXBlUGFyYW17MH0pKTsKKyAgRVhQ
RUNUX05FKFNweUhhc2goc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSksCisg
ICAgICAgICAgICBTcHlIYXNoKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWluKCkp
KTsKK30KKworVFlQRURfVEVTVF9QKEhhc2hWYWx1ZUludFRlc3QsIEZhc3RQYXRoKSB7CisgIC8v
IFRlc3QgdGhlIGZhc3QtcGF0aCB0byBtYWtlIHN1cmUgdGhlIHZhbHVlcyBhcmUgdGhlIHNhbWUu
CisgIFR5cGVQYXJhbSBuID0gNDI7CisgIEVYUEVDVF9FUShhYnNsOjpIYXNoPFR5cGVQYXJhbT57
fShuKSwKKyAgICAgICAgICAgIGFic2w6Okhhc2g8c3RkOjp0dXBsZTxUeXBlUGFyYW0+Pnt9KHN0
ZDo6dHVwbGU8VHlwZVBhcmFtPihuKSkpOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UChIYXNoVmFsdWVJbnRUZXN0LCBCYXNpY1VzYWdlLCBGYXN0UGF0aCk7Cit1c2luZyBJbnRUeXBl
cyA9IHRlc3Rpbmc6OlR5cGVzPHVuc2lnbmVkIGNoYXIsIGNoYXIsIGludCwgaW50MzJfdCwgaW50
NjRfdCwgdWludDMyX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90
LCBzaXplX3Q+OworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEhhc2hWYWx1ZUlu
dFRlc3QsIEludFR5cGVzKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9p
ZD4KK3N0cnVjdCBJc0hhc2hDYWxsYmxlIDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0hhc2hDYWxsYmxlPFQsIGFic2w6OnZvaWRfdDxkZWNs
dHlwZShzdGQ6OmRlY2x2YWw8YWJzbDo6SGFzaDxUPj4oKSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmRlY2x2YWw8Y29uc3QgVCY+KCkpKT4+IDogc3RkOjp0cnVlX3R5cGUge307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+CitzdHJ1Y3QgSXNBZ2dy
ZWdhdGVJbml0aWFsaXphYmxlIDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBJc0FnZ3JlZ2F0ZUluaXRpYWxpemFibGU8VCwgYWJzbDo6dm9pZF90
PGRlY2x0eXBlKFR7fSk+PgorICAgIDogc3RkOjp0cnVlX3R5cGUge307CisKK1RFU1QoSXNIYXNo
YWJsZVRlc3QsIFZhbGlkSGFzaCkgeworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8aW50Pjo6
dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8YWJz
bDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2NvcHlfY29uc3Ry
dWN0aWJsZTxhYnNsOjpIYXNoPGludD4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNf
bW92ZV9jb25zdHJ1Y3RpYmxlPGFic2w6Okhhc2g8aW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPGFic2w6Okhhc2g8aW50Pj46OnZhbHVlKTsKKyAg
RVhQRUNUX1RSVUUoYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Okhhc2g8aW50Pj46OnZh
bHVlKTsKKyAgRVhQRUNUX1RSVUUoSXNIYXNoQ2FsbGJsZTxpbnQ+Ojp2YWx1ZSk7CisgIEVYUEVD
VF9UUlVFKElzQWdncmVnYXRlSW5pdGlhbGl6YWJsZTxhYnNsOjpIYXNoPGludD4+Ojp2YWx1ZSk7
Cit9CisjaWYgQUJTTF9IQVNIX0lOVEVSTkFMX0NBTl9QT0lTT05fICYmICFkZWZpbmVkKF9fQVBQ
TEVfXykKK1RFU1QoSXNIYXNoYWJsZVRlc3QsIFBvaXNvbkhhc2gpIHsKKyAgc3RydWN0IFgge307
CisgIEVYUEVDVF9GQUxTRSgoaXNfaGFzaGFibGU8WD46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxT
RShzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxhYnNsOjpIYXNoPFg+Pjo6dmFsdWUpOwor
ICBFWFBFQ1RfRkFMU0Uoc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8YWJzbDo6SGFzaDxYPj46
OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPGFic2w6
Okhhc2g8WD4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19jb3B5X2Fzc2lnbmFi
bGU8YWJzbDo6SGFzaDxYPj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX21vdmVf
YXNzaWduYWJsZTxhYnNsOjpIYXNoPFg+Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoSXNIYXNo
Q2FsbGJsZTxYPjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoSXNBZ2dyZWdhdGVJbml0aWFsaXph
YmxlPGFic2w6Okhhc2g8WD4+Ojp2YWx1ZSk7Cit9CisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRF
Uk5BTF9DQU5fUE9JU09OXworCisvLyBIYXNoYWJsZSB0eXBlcworLy8KKy8vIFRoZXNlIHR5cGVz
IGV4aXN0IHNpbXBseSB0byBleGVyY2lzZSB2YXJpb3VzIEFic2xIYXNoVmFsdWUgYmVoYXZpb3Jz
LCBzbworLy8gdGhleSBhcmUgbmFtZWQgYnkgd2hhdCB0aGVpciBBYnNsSGFzaFZhbHVlIG92ZXJs
b2FkIGRvZXMuCitzdHJ1Y3QgTm9PcCB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoQ29kZT4K
KyAgZnJpZW5kIEhhc2hDb2RlIEFic2xIYXNoVmFsdWUoSGFzaENvZGUgaCwgTm9PcCBuKSB7Cisg
ICAgcmV0dXJuIHN0ZDo6bW92ZShoKTsKKyAgfQorfTsKKworc3RydWN0IEVtcHR5Q29tYmluZSB7
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoQ29kZT4KKyAgZnJpZW5kIEhhc2hDb2RlIEFic2xI
YXNoVmFsdWUoSGFzaENvZGUgaCwgRW1wdHlDb21iaW5lIGUpIHsKKyAgICByZXR1cm4gSGFzaENv
ZGU6OmNvbWJpbmUoc3RkOjptb3ZlKGgpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IEludD4KK3N0cnVjdCBDb21iaW5lSXRlcmF0aXZlIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEhh
c2hDb2RlPgorICBmcmllbmQgSGFzaENvZGUgQWJzbEhhc2hWYWx1ZShIYXNoQ29kZSBoLCBDb21i
aW5lSXRlcmF0aXZlIGMpIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkgeworICAg
ICAgaCA9IEhhc2hDb2RlOjpjb21iaW5lKHN0ZDo6bW92ZShoKSwgSW50KGkpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGg7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnQ+CitzdHJ1Y3Qg
Q29tYmluZVZhcmlhZGljIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hDb2RlPgorICBmcmll
bmQgSGFzaENvZGUgQWJzbEhhc2hWYWx1ZShIYXNoQ29kZSBoLCBDb21iaW5lVmFyaWFkaWMgYykg
eworICAgIHJldHVybiBIYXNoQ29kZTo6Y29tYmluZShzdGQ6Om1vdmUoaCksIEludCgwKSwgSW50
KDEpLCBJbnQoMiksIEludCgzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50KDQp
KTsKKyAgfQorfTsKKwordXNpbmcgSW52b2tlVGFnID0gYWJzbDo6aGFzaF9pbnRlcm5hbDo6SW52
b2tlSGFzaFRhZzsKK3RlbXBsYXRlIDxJbnZva2VUYWcgVD4KK3VzaW5nIEludm9rZVRhZ0NvbnN0
YW50ID0gc3RkOjppbnRlZ3JhbF9jb25zdGFudDxJbnZva2VUYWcsIFQ+OworCit0ZW1wbGF0ZSA8
SW52b2tlVGFnLi4uIFRhZ3M+CitzdHJ1Y3QgTWluVGFnOworCit0ZW1wbGF0ZSA8SW52b2tlVGFn
IGEsIEludm9rZVRhZyBiLCBJbnZva2VUYWcuLi4gVGFncz4KK3N0cnVjdCBNaW5UYWc8YSwgYiwg
VGFncy4uLj4gOiBNaW5UYWc8KGEgPCBiID8gYSA6IGIpLCBUYWdzLi4uPiB7fTsKKwordGVtcGxh
dGUgPEludm9rZVRhZyBhPgorc3RydWN0IE1pblRhZzxhPiA6IEludm9rZVRhZ0NvbnN0YW50PGE+
IHt9OworCit0ZW1wbGF0ZSA8SW52b2tlVGFnLi4uIFRhZ3M+CitzdHJ1Y3QgQ3VzdG9tSGFzaFR5
cGUgeworICBzaXplX3QgdmFsdWU7Cit9OworCit0ZW1wbGF0ZSA8SW52b2tlVGFnIGFsbG93ZWQs
IEludm9rZVRhZy4uLiB0YWdzPgorc3RydWN0IEVuYWJsZUlmQ29udGFpbmVkCisgICAgOiBzdGQ6
OmVuYWJsZV9pZjxhYnNsOjpkaXNqdW5jdGlvbjwKKyAgICAgICAgICBzdGQ6OmludGVncmFsX2Nv
bnN0YW50PGJvb2wsIGFsbG93ZWQgPT0gdGFncz4uLi4+Ojp2YWx1ZT4ge307CisKK3RlbXBsYXRl
IDwKKyAgICB0eXBlbmFtZSBILCBJbnZva2VUYWcuLi4gVGFncywKKyAgICB0eXBlbmFtZSA9IHR5
cGVuYW1lIEVuYWJsZUlmQ29udGFpbmVkPEludm9rZVRhZzo6a0hhc2hWYWx1ZSwgVGFncy4uLj46
OnR5cGU+CitIIEFic2xIYXNoVmFsdWUoSCBzdGF0ZSwgQ3VzdG9tSGFzaFR5cGU8VGFncy4uLj4g
dCkgeworICBzdGF0aWNfYXNzZXJ0KE1pblRhZzxUYWdzLi4uPjo6dmFsdWUgPT0gSW52b2tlVGFn
OjprSGFzaFZhbHVlLCAiIik7CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSks
CisgICAgICAgICAgICAgICAgICAgIHQudmFsdWUgKyBzdGF0aWNfY2FzdDxpbnQ+KEludm9rZVRh
Zzo6a0hhc2hWYWx1ZSkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIGFic2wg
eworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgewordGVtcGxhdGUgPEludm9rZVRhZy4uLiBUYWdz
Pgorc3RydWN0IGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkPAorICAgIEN1c3RvbUhhc2hUeXBlPFRh
Z3MuLi4+LAorICAgIHR5cGVuYW1lIEVuYWJsZUlmQ29udGFpbmVkPEludm9rZVRhZzo6a1VuaXF1
ZWx5UmVwcmVzZW50ZWQsIFRhZ3MuLi4+Ojp0eXBlPgorICAgIDogc3RkOjp0cnVlX3R5cGUge307
Cit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKwor
I2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworbmFtZXNwYWNlIEFC
U0xfSU5URVJOQUxfTEVHQUNZX0hBU0hfTkFNRVNQQUNFIHsKK3RlbXBsYXRlIDxJbnZva2VUYWcu
Li4gVGFncz4KK3N0cnVjdCBoYXNoPEN1c3RvbUhhc2hUeXBlPFRhZ3MuLi4+PiB7CisgIHRlbXBs
YXRlIDxJbnZva2VUYWcuLi4gVGFnc0luLCB0eXBlbmFtZSA9IHR5cGVuYW1lIEVuYWJsZUlmQ29u
dGFpbmVkPAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludm9rZVRhZzo6
a0xlZ2FjeUhhc2gsIFRhZ3NJbi4uLj46OnR5cGU+CisgIHNpemVfdCBvcGVyYXRvcigpKEN1c3Rv
bUhhc2hUeXBlPFRhZ3NJbi4uLj4gdCkgY29uc3QgeworICAgIHN0YXRpY19hc3NlcnQoTWluVGFn
PFRhZ3MuLi4+Ojp2YWx1ZSA9PSBJbnZva2VUYWc6OmtMZWdhY3lIYXNoLCAiIik7CisgICAgcmV0
dXJuIHQudmFsdWUgKyBzdGF0aWNfY2FzdDxpbnQ+KEludm9rZVRhZzo6a0xlZ2FjeUhhc2gpOwor
ICB9Cit9OworfSAgLy8gbmFtZXNwYWNlIEFCU0xfSU5URVJOQUxfTEVHQUNZX0hBU0hfTkFNRVNQ
QUNFCisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXwor
CituYW1lc3BhY2Ugc3RkIHsKK3RlbXBsYXRlIDxJbnZva2VUYWcuLi4gVGFncz4gIC8vIE5PTElO
VAorc3RydWN0IGhhc2g8Q3VzdG9tSGFzaFR5cGU8VGFncy4uLj4+IHsKKyAgdGVtcGxhdGUgPElu
dm9rZVRhZy4uLiBUYWdzSW4sIHR5cGVuYW1lID0gdHlwZW5hbWUgRW5hYmxlSWZDb250YWluZWQ8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52b2tlVGFnOjprU3RkSGFz
aCwgVGFnc0luLi4uPjo6dHlwZT4KKyAgc2l6ZV90IG9wZXJhdG9yKCkoQ3VzdG9tSGFzaFR5cGU8
VGFnc0luLi4uPiB0KSBjb25zdCB7CisgICAgc3RhdGljX2Fzc2VydChNaW5UYWc8VGFncy4uLj46
OnZhbHVlID09IEludm9rZVRhZzo6a1N0ZEhhc2gsICIiKTsKKyAgICByZXR1cm4gdC52YWx1ZSAr
IHN0YXRpY19jYXN0PGludD4oSW52b2tlVGFnOjprU3RkSGFzaCk7CisgIH0KK307Cit9ICAvLyBu
YW1lc3BhY2Ugc3RkCisKK25hbWVzcGFjZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgor
dm9pZCBUZXN0Q3VzdG9tSGFzaFR5cGUoSW52b2tlVGFnQ29uc3RhbnQ8SW52b2tlVGFnOjprTm9u
ZT4sIFQuLi4pIHsKKyAgdXNpbmcgdHlwZSA9IEN1c3RvbUhhc2hUeXBlPFQ6OnZhbHVlLi4uPjsK
KyAgU0NPUEVEX1RSQUNFKHRlc3Rpbmc6OlByaW50VG9TdHJpbmcoc3RkOjp2ZWN0b3I8SW52b2tl
VGFnPntUOjp2YWx1ZS4uLn0pKTsKKyAgRVhQRUNUX1RSVUUoaXNfaGFzaGFibGU8dHlwZT4oKSk7
CisgIEVYUEVDVF9UUlVFKGlzX2hhc2hhYmxlPGNvbnN0IHR5cGU+KCkpOworICBFWFBFQ1RfVFJV
RShpc19oYXNoYWJsZTxjb25zdCB0eXBlJj4oKSk7CisKKyAgY29uc3Qgc2l6ZV90IG9mZnNldCA9
IHN0YXRpY19jYXN0PGludD4oc3RkOjptaW4oe1Q6OnZhbHVlLi4ufSkpOworICBFWFBFQ1RfRVEo
U3B5SGFzaCh0eXBlezd9KSwgU3B5SGFzaChzaXplX3R7NyArIG9mZnNldH0pKTsKK30KKwordm9p
ZCBUZXN0Q3VzdG9tSGFzaFR5cGUoSW52b2tlVGFnQ29uc3RhbnQ8SW52b2tlVGFnOjprTm9uZT4p
IHsKKyNpZiBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8KKyAgLy8gaXNfaGFzaGFibGUg
aXMgZmFsc2UgaWYgd2UgZG9uJ3Qgc3VwcG9ydCBhbnkgb2YgdGhlIGhvb2tzLgorICB1c2luZyB0
eXBlID0gQ3VzdG9tSGFzaFR5cGU8PjsKKyAgRVhQRUNUX0ZBTFNFKGlzX2hhc2hhYmxlPHR5cGU+
KCkpOworICBFWFBFQ1RfRkFMU0UoaXNfaGFzaGFibGU8Y29uc3QgdHlwZT4oKSk7CisgIEVYUEVD
VF9GQUxTRShpc19oYXNoYWJsZTxjb25zdCB0eXBlJj4oKSk7CisjZW5kaWYgIC8vIEFCU0xfSEFT
SF9JTlRFUk5BTF9DQU5fUE9JU09OXworfQorCit0ZW1wbGF0ZSA8SW52b2tlVGFnIFRhZywgdHlw
ZW5hbWUuLi4gVD4KK3ZvaWQgVGVzdEN1c3RvbUhhc2hUeXBlKEludm9rZVRhZ0NvbnN0YW50PFRh
Zz4gdGFnLCBULi4uIHQpIHsKKyAgY29uc3RleHByIGF1dG8gbmV4dCA9IHN0YXRpY19jYXN0PElu
dm9rZVRhZz4oc3RhdGljX2Nhc3Q8aW50PihUYWcpICsgMSk7CisgIFRlc3RDdXN0b21IYXNoVHlw
ZShJbnZva2VUYWdDb25zdGFudDxuZXh0PigpLCB0YWcsIHQuLi4pOworICBUZXN0Q3VzdG9tSGFz
aFR5cGUoSW52b2tlVGFnQ29uc3RhbnQ8bmV4dD4oKSwgdC4uLik7Cit9CisKK1RFU1QoSGFzaFRl
c3QsIEN1c3RvbUhhc2hUeXBlKSB7CisgIFRlc3RDdXN0b21IYXNoVHlwZShJbnZva2VUYWdDb25z
dGFudDxJbnZva2VUYWd7fT4oKSk7Cit9CisKK1RFU1QoSGFzaFRlc3QsIE5vT3BzQXJlRXF1aXZh
bGVudCkgeworICBFWFBFQ1RfRVEoSGFzaDxOb09wPigpKHt9KSwgSGFzaDxOb09wPigpKHt9KSk7
CisgIEVYUEVDVF9FUShIYXNoPE5vT3A+KCkoe30pLCBIYXNoPEVtcHR5Q29tYmluZT4oKSh7fSkp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEhhc2hJbnRUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgeworfTsKK1RZUEVEX1RFU1RfQ0FTRV9QKEhhc2hJbnRUZXN0KTsKKwor
VFlQRURfVEVTVF9QKEhhc2hJbnRUZXN0LCBCYXNpY1VzYWdlKSB7CisgIEVYUEVDVF9ORShIYXNo
PE5vT3A+KCkoe30pLCBIYXNoPFR5cGVQYXJhbT4oKSgwKSk7CisgIEVYUEVDVF9ORShIYXNoPE5v
T3A+KCkoe30pLAorICAgICAgICAgICAgSGFzaDxUeXBlUGFyYW0+KCkoc3RkOjpudW1lcmljX2xp
bWl0czxUeXBlUGFyYW0+OjptYXgoKSkpOworICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxUeXBl
UGFyYW0+OjptaW4oKSAhPSAwKSB7CisgICAgRVhQRUNUX05FKEhhc2g8Tm9PcD4oKSh7fSksCisg
ICAgICAgICAgICAgIEhhc2g8VHlwZVBhcmFtPigpKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBh
cmFtPjo6bWluKCkpKTsKKyAgfQorCisgIEVYUEVDVF9FUShIYXNoPENvbWJpbmVJdGVyYXRpdmU8
VHlwZVBhcmFtPj4oKSh7fSksCisgICAgICAgICAgICBIYXNoPENvbWJpbmVWYXJpYWRpYzxUeXBl
UGFyYW0+PigpKHt9KSk7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEhhc2hJbnRU
ZXN0LCBCYXNpY1VzYWdlKTsKK3VzaW5nIEludFR5cGVzID0gdGVzdGluZzo6VHlwZXM8dW5zaWdu
ZWQgY2hhciwgY2hhciwgaW50LCBpbnQzMl90LCBpbnQ2NF90LCB1aW50MzJfdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QsIHNpemVfdD47CitJTlNUQU5USUFURV9U
WVBFRF9URVNUX0NBU0VfUChNeSwgSGFzaEludFRlc3QsIEludFR5cGVzKTsKKworc3RydWN0IFN0
cnVjdFdpdGhQYWRkaW5nIHsKKyAgY2hhciBjOworICBpbnQgaTsKKworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIGNvbnN0IFN0
cnVjdFdpdGhQYWRkaW5nJiBzKSB7CisgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhh
c2hfc3RhdGUpLCBzLmMsIHMuaSk7CisgIH0KK307CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFN0
cnVjdFdpdGhQYWRkaW5nKSA+IHNpemVvZihjaGFyKSArIHNpemVvZihpbnQpLAorICAgICAgICAg
ICAgICAiU3RydWN0V2l0aFBhZGRpbmcgZG9lc24ndCBoYXZlIHBhZGRpbmciKTsKK3N0YXRpY19h
c3NlcnQoc3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8U3RydWN0V2l0aFBhZGRpbmc+Ojp2YWx1ZSwg
IiIpOworCisvLyBUaGlzIGNoZWNrIGhhcyB0byBiZSBkaXNhYmxlZCBiZWNhdXNlIGxpYnN0ZGMr
KyBkb2Vzbid0IHN1cHBvcnQgaXQuCisvLyBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2NvbnN0cnVjdGlibGU8U3RydWN0V2l0aFBhZGRpbmc+Ojp2YWx1ZSwgIiIpOworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBBcnJheVNsaWNlIHsKKyAgVCogYmVnaW47CisgIFQqIGVu
ZDsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShI
IGhhc2hfc3RhdGUsIGNvbnN0IEFycmF5U2xpY2UmIHNsaWNlKSB7CisgICAgZm9yIChhdXRvIHQg
PSBzbGljZS5iZWdpbjsgdCAhPSBzbGljZS5lbmQ7ICsrdCkgeworICAgICAgaGFzaF9zdGF0ZSA9
IEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCAqdCk7CisgICAgfQorICAgIHJldHVy
biBoYXNoX3N0YXRlOworICB9Cit9OworCitURVNUKEhhc2hUZXN0LCBIYXNoTm9uVW5pcXVlbHlS
ZXByZXNlbnRlZFR5cGUpIHsKKyAgLy8gQ3JlYXRlIGVxdWFsIFN0cnVjdFdpdGhQYWRkaW5nIG9i
amVjdHMgdGhhdCBhcmUga25vd24gdG8gaGF2ZSBub24tZXF1YWwKKyAgLy8gcGFkZGluZyBieXRl
cy4KKyAgc3RhdGljIGNvbnN0IHNpemVfdCBrTnVtU3RydWN0cyA9IDEwOworICB1bnNpZ25lZCBj
aGFyIGJ1ZmZlcjFba051bVN0cnVjdHMgKiBzaXplb2YoU3RydWN0V2l0aFBhZGRpbmcpXTsKKyAg
c3RkOjptZW1zZXQoYnVmZmVyMSwgMCwgc2l6ZW9mKGJ1ZmZlcjEpKTsKKyAgYXV0byogczEgPSBy
ZWludGVycHJldF9jYXN0PFN0cnVjdFdpdGhQYWRkaW5nKj4oYnVmZmVyMSk7CisKKyAgdW5zaWdu
ZWQgY2hhciBidWZmZXIyW2tOdW1TdHJ1Y3RzICogc2l6ZW9mKFN0cnVjdFdpdGhQYWRkaW5nKV07
CisgIHN0ZDo6bWVtc2V0KGJ1ZmZlcjIsIDI1NSwgc2l6ZW9mKGJ1ZmZlcjIpKTsKKyAgYXV0byog
czIgPSByZWludGVycHJldF9jYXN0PFN0cnVjdFdpdGhQYWRkaW5nKj4oYnVmZmVyMik7CisgIGZv
ciAoaW50IGkgPSAwOyBpIDwga051bVN0cnVjdHM7ICsraSkgeworICAgIFNDT1BFRF9UUkFDRShp
KTsKKyAgICBzMVtpXS5jID0gczJbaV0uYyA9ICcwJyArIGk7CisgICAgczFbaV0uaSA9IHMyW2ld
LmkgPSBpOworICAgIEFTU0VSVF9GQUxTRShtZW1jbXAoYnVmZmVyMSArIGkgKiBzaXplb2YoU3Ry
dWN0V2l0aFBhZGRpbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyMiArIGkgKiBz
aXplb2YoU3RydWN0V2l0aFBhZGRpbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m
KFN0cnVjdFdpdGhQYWRkaW5nKSkgPT0gMCkKKyAgICAgICAgPDwgIkJ1ZyBpbiB0ZXN0IGNvZGU6
IG9iamVjdHMgZG8gbm90IGhhdmUgdW5lcXVhbCIKKyAgICAgICAgPDwgIiBvYmplY3QgcmVwcmVz
ZW50YXRpb25zIjsKKyAgfQorCisgIEVYUEVDVF9FUShIYXNoPFN0cnVjdFdpdGhQYWRkaW5nPigp
KHMxWzBdKSwgSGFzaDxTdHJ1Y3RXaXRoUGFkZGluZz4oKShzMlswXSkpOworICBFWFBFQ1RfRVEo
SGFzaDxBcnJheVNsaWNlPFN0cnVjdFdpdGhQYWRkaW5nPj4oKSh7czEsIHMxICsga051bVN0cnVj
dHN9KSwKKyAgICAgICAgICAgIEhhc2g8QXJyYXlTbGljZTxTdHJ1Y3RXaXRoUGFkZGluZz4+KCko
e3MyLCBzMiArIGtOdW1TdHJ1Y3RzfSkpOworfQorCitURVNUKEhhc2hUZXN0LCBTdGFuZGFyZEhh
c2hDb250YWluZXJVc2FnZSkgeworICBzdGQ6OnVub3JkZXJlZF9tYXA8aW50LCBzdGQ6OnN0cmlu
ZywgSGFzaDxpbnQ+PiBtYXAgPSB7ezAsICJmb28ifSwgeyA0MiwgImJhciIgfX07CisKKyAgRVhQ
RUNUX05FKG1hcC5maW5kKDApLCBtYXAuZW5kKCkpOworICBFWFBFQ1RfRVEobWFwLmZpbmQoMSks
IG1hcC5lbmQoKSk7CisgIEVYUEVDVF9ORShtYXAuZmluZCgwdSksIG1hcC5lbmQoKSk7Cit9CisK
K3N0cnVjdCBDb252ZXJ0aWJsZUZyb21Ob09wIHsKKyAgQ29udmVydGlibGVGcm9tTm9PcChOb09w
KSB7fSAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCisKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBDb252ZXJ0aWJsZUZy
b21Ob09wKSB7CisgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCAx
KTsKKyAgfQorfTsKKworVEVTVChIYXNoVGVzdCwgSGV0ZXJvZ2VuZW91c0NhbGwpIHsKKyAgRVhQ
RUNUX05FKEhhc2g8Q29udmVydGlibGVGcm9tTm9PcD4oKShOb09wKCkpLAorICAgICAgICAgICAg
SGFzaDxOb09wPigpKE5vT3AoKSkpOworfQorCitURVNUKElzVW5pcXVlbHlSZXByZXNlbnRlZFRl
c3QsIFNhbml0eVRlc3QpIHsKKyAgdXNpbmcgYWJzbDo6aGFzaF9pbnRlcm5hbDo6aXNfdW5pcXVl
bHlfcmVwcmVzZW50ZWQ7CisKKyAgRVhQRUNUX1RSVUUoaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8
dW5zaWduZWQgY2hhcj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoaXNfdW5pcXVlbHlfcmVwcmVz
ZW50ZWQ8aW50Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoaXNfdW5pcXVlbHlfcmVwcmVzZW50
ZWQ8Ym9vbD46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVk
PGludCo+Ojp2YWx1ZSk7Cit9CisKK3N0cnVjdCBJbnRBbmRTdHJpbmcgeworICBpbnQgaTsKKyAg
c3RkOjpzdHJpbmcgczsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJz
bEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIEludEFuZFN0cmluZyBpbnRfYW5kX3N0cmluZykgewor
ICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgaW50X2FuZF9zdHJp
bmcucywKKyAgICAgICAgICAgICAgICAgICAgICBpbnRfYW5kX3N0cmluZy5pKTsKKyAgfQorfTsK
KworVEVTVChIYXNoVGVzdCwgU21hbGxWYWx1ZU9uNjRCeXRlQm91bmRhcnkpIHsKKyAgSGFzaDxJ
bnRBbmRTdHJpbmc+KCkoSW50QW5kU3RyaW5nezAsIHN0ZDo6c3RyaW5nKDYzLCAnMCcpfSk7Cit9
CisKK3N0cnVjdCBUeXBlRXJhc2VkIHsKKyAgc2l6ZV90IG47CisKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBjb25zdCBUeXBl
RXJhc2VkJiB2KSB7CisgICAgdi5IYXNoVmFsdWUoYWJzbDo6SGFzaFN0YXRlOjpDcmVhdGUoJmhh
c2hfc3RhdGUpKTsKKyAgICByZXR1cm4gaGFzaF9zdGF0ZTsKKyAgfQorCisgIHZvaWQgSGFzaFZh
bHVlKGFic2w6Okhhc2hTdGF0ZSBzdGF0ZSkgY29uc3QgeworICAgIGFic2w6Okhhc2hTdGF0ZTo6
Y29tYmluZShzdGQ6Om1vdmUoc3RhdGUpLCBuKTsKKyAgfQorfTsKKworVEVTVChIYXNoVGVzdCwg
VHlwZUVyYXNlZCkgeworICBFWFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8VHlwZUVyYXNlZD46OnZh
bHVlKSk7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxzdGQ6OnBhaXI8VHlwZUVyYXNlZCwg
aW50Pj46OnZhbHVlKSk7CisKKyAgRVhQRUNUX0VRKFNweUhhc2goVHlwZUVyYXNlZHs3fSksIFNw
eUhhc2goc2l6ZV90ezd9KSk7CisgIEVYUEVDVF9ORShTcHlIYXNoKFR5cGVFcmFzZWR7N30pLCBT
cHlIYXNoKHNpemVfdHsxM30pKTsKKworICBFWFBFQ1RfRVEoU3B5SGFzaChzdGQ6Om1ha2VfcGFp
cihUeXBlRXJhc2Vkezd9LCAxNykpLAorICAgICAgICAgICAgU3B5SGFzaChzdGQ6Om1ha2VfcGFp
cihzaXplX3R7N30sIDE3KSkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2hhc2gvaGFzaF90ZXN0aW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2hfdGVzdGluZy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFlM2NkYTY0NDY3ZGZhYjBlZTE2NjFjMDc1ZjYzYzA2YmMyMTgwMGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2hfdGVzdGluZy5oCkBAIC0wLDAgKzEsMzcyIEBACisv
LyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfSEFT
SF9IQVNIX1RFU1RJTkdfSF8KKyNkZWZpbmUgQUJTTF9IQVNIX0hBU0hfVEVTVElOR19IXworCisj
aW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0
eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFs
L3NweV9oYXNoX3N0YXRlLmgiCisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL3Zh
cmlhbnQuaCIKKworbmFtZXNwYWNlIGFic2wgeworCisvLyBSdW4gdGhlIGFic2w6Okhhc2ggYWxn
b3JpdGhtIG92ZXIgYWxsIHRoZSBlbGVtZW50cyBwYXNzZWQgaW4gYW5kIHZlcmlmeSB0aGF0Cisv
LyB0aGVpciBoYXNoIGV4cGFuc2lvbiBpcyBjb25ncnVlbnQgd2l0aCB0aGVpciBgPT1gIG9wZXJh
dG9yLgorLy8KKy8vIEl0IGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBFWFBFQ1RfVFJVRS4g
RmFpbHVyZXMgd2lsbCBvdXRwdXQgaW5mb3JtYXRpb24KKy8vIG9uIHdoYXQgcmVxdWlyZW1lbnQg
ZmFpbGVkIGFuZCBvbiB3aGljaCBvYmplY3RzLgorLy8KKy8vIFVzZXJzIHNob3VsZCBwYXNzIGEg
Y29sbGVjdGlvbiBvZiB0eXBlcyBhcyBlaXRoZXIgYW4gaW5pdGlhbGl6ZXIgbGlzdCBvciBhCisv
LyBjb250YWluZXIgb2YgY2FzZXMuCisvLworLy8gICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlU
eXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorLy8gICAgICAge3YxLCB2MiwgLi4uLCB2
Tn0pKTsKKy8vCisvLyAgIHN0ZDo6dmVjdG9yPE15VHlwZT4gY2FzZXM7CisvLyAgIC8vIEZpbGwg
Y2FzZXMuLi4KKy8vICAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNs
SGFzaENvcnJlY3RseShjYXNlcykpOworLy8KKy8vIFVzZXJzIGNhbiBwYXNzIGEgdmFyaWV0eSBv
ZiB0eXBlcyBmb3IgdGVzdGluZyBoZXRlcm9nZW5lb3VzIGxvb2t1cCB3aXRoCisvLyBgc3RkOjpt
YWtlX3R1cGxlYDoKKy8vCisvLyAgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1l
bnRzQWJzbEhhc2hDb3JyZWN0bHkoCisvLyAgICAgICBzdGQ6Om1ha2VfdHVwbGUodjEsIHYyLCAu
Li4sIHZOKSkpOworLy8KKy8vCisvLyBJZGVhbGx5LCB0aGUgdmFsdWVzIHBhc3NlZCBzaG91bGQg
cHJvdmlkZSBlbm91Z2ggY292ZXJhZ2Ugb2YgdGhlIGA9PWAKKy8vIG9wZXJhdG9yIGFuZCB0aGUg
QWJzbEhhc2hWYWx1ZSBpbXBsZW1lbnRhdGlvbnMuCisvLyBGb3IgZHluYW1pY2FsbHkgc2l6ZWQg
dHlwZXMsIHRoZSBlbXB0eSBzdGF0ZSBzaG91bGQgdXN1YWxseSBiZSBpbmNsdWRlZCBpbgorLy8g
dGhlIHZhbHVlcy4KKy8vCisvLyBUaGUgZnVuY3Rpb24gYWNjZXB0cyBhbiBvcHRpb25hbCBjb21w
YXJhdG9yIGZ1bmN0aW9uLCBpbiBjYXNlIHRoYXQgYD09YCBpcworLy8gbm90IGVub3VnaCBmb3Ig
dGhlIHZhbHVlcyBwcm92aWRlZC4KKy8vCisvLyBVc2FnZToKKy8vCisvLyAgIEVYUEVDVF9UUlVF
KGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoCisvLyAgICAgICBz
dGQ6Om1ha2VfdHVwbGUodjEsIHYyLCAuLi4sIHZOKSwgTXlDdXN0b21FcXt9KSk7CisvLworLy8g
SXQgY2hlY2tzIHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzOgorLy8gICAxLiBUaGUgZXhwYW5z
aW9uIGZvciBhIHZhbHVlIGlzIGRldGVybWluaXN0aWMuCisvLyAgIDIuIEZvciBhbnkgdHdvIG9i
amVjdHMgYGFgIGFuZCBgYmAgaW4gdGhlIHNlcXVlbmNlLCBpZiBgYSA9PSBiYCBldmFsdWF0ZXMK
Ky8vICAgICAgdG8gdHJ1ZSwgdGhlbiB0aGVpciBoYXNoIGV4cGFuc2lvbiBtdXN0IGJlIGVxdWFs
LgorLy8gICAzLiBJZiBgYSA9PSBiYCBldmFsdWF0ZXMgdG8gZmFsc2UgdGhlaXIgaGFzaCBleHBh
bnNpb24gbXVzdCBiZSB1bmVxdWFsLgorLy8gICA0LiBJZiBgYSA9PSBiYCBldmFsdWF0ZXMgdG8g
ZmFsc2UgbmVpdGhlciBoYXNoIGV4cGFuc2lvbiBjYW4gYmUgYQorLy8gICAgICBzdWZmaXggb2Yg
dGhlIG90aGVyLgorLy8gICA1LiBBYnNsSGFzaFZhbHVlIG92ZXJsb2FkcyBzaG91bGQgbm90IGJl
IGNhbGxlZCBieSB0aGUgdXNlci4gVGhleSBhcmUgb25seQorLy8gICAgICBtZWFudCB0byBiZSBj
YWxsZWQgYnkgdGhlIGZyYW1ld29yay4gVXNlcnMgc2hvdWxkIGNhbGwgSDo6Y29tYmluZSgpIGFu
ZAorLy8gICAgICBIOjpjb21iaW5lX2NvbnRpZ3VvdXMoKS4KKy8vICAgNi4gTm8gbW92ZWQtZnJv
bSBpbnN0YW5jZSBvZiB0aGUgaGFzaCBzdGF0ZSBpcyB1c2VkIGluIHRoZSBpbXBsZW1lbnRhdGlv
bgorLy8gICAgICBvZiBBYnNsSGFzaFZhbHVlLgorLy8KKy8vIFRoZSB2YWx1ZXMgZG8gbm90IGhh
dmUgdG8gaGF2ZSB0aGUgc2FtZSB0eXBlLiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yCisvLyBlcXVp
dmFsZW50IHR5cGVzIHRoYXQgc3VwcG9ydCBoZXRlcm9nZW5lb3VzIGxvb2t1cC4KKy8vCisvLyBB
IHBvc3NpYmxlIHJlYXNvbiBmb3IgYnJlYWtpbmcgKDIpIGlzIGNvbWJpbmluZyBzdGF0ZSBpbiB0
aGUgaGFzaCBleHBhbnNpb24KKy8vIHRoYXQgd2FzIG5vdCB1c2VkIGluIGA9PWAuCisvLyBGb3Ig
ZXhhbXBsZToKKy8vCisvLyBzdHJ1Y3QgQmFkMiB7CisvLyAgIGludCBhLCBiOworLy8gICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSD4KKy8vICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBC
YWQyIHgpIHsKKy8vICAgICAvLyBVc2VzIGEgYW5kIGIuCisvLyAgICAgcmV0dXJuIEg6OmNvbWJp
bmUoeC5hLCB4LmIpOworLy8gICB9CisvLyAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oQmFkMiB4
LCBCYWQyIHkpIHsKKy8vICAgICAvLyBPbmx5IHVzZXMgYS4KKy8vICAgICByZXR1cm4geC5hID09
IHkuYTsKKy8vICAgfQorLy8gfTsKKy8vCisvLyBBcyBmb3IgKDMpLCBicmVha2luZyB0aGlzIHVz
dWFsbHkgbWVhbnMgdGhhdCB0aGVyZSBpcyBzdGF0ZSBiZWluZyBwYXNzZWQgdG8KKy8vIHRoZSBg
PT1gIG9wZXJhdG9yIHRoYXQgaXMgbm90IHVzZWQgaW4gdGhlIGhhc2ggZXhwYW5zaW9uLgorLy8g
Rm9yIGV4YW1wbGU6CisvLworLy8gc3RydWN0IEJhZDMgeworLy8gICBpbnQgYSwgYjsKKy8vICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEg+CisvLyAgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBzdGF0
ZSwgQmFkMyB4KSB7CisvLyAgICAgLy8gT25seSB1c2VzIGEuCisvLyAgICAgcmV0dXJuIEg6OmNv
bWJpbmUoeC5hKTsKKy8vICAgfQorLy8gICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KEJhZDMgeCwg
QmFkMyB5KSB7CisvLyAgICAgLy8gVXNlcyBhIGFuZCBiLgorLy8gICAgIHJldHVybiB4LmEgPT0g
eS5hICYmIHguYiA9PSB5LmI7CisvLyAgIH0KKy8vIH07CisvLworLy8gRmluYWxseSwgYSBjb21t
b24gd2F5IHRvIGJyZWFrIDQgaXMgYnkgY29tYmluaW5nIGR5bmFtaWMgcmFuZ2VzIHdpdGhvdXQK
Ky8vIGNvbWJpbmluZyB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UuCisvLyBGb3IgZXhhbXBsZToKKy8v
CisvLyBzdHJ1Y3QgQmFkNCB7CisvLyAgIGludCAqcCwgc2l6ZTsKKy8vICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEg+CisvLyAgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBzdGF0ZSwgQmFkNCB4KSB7
CisvLyAgICAgcmV0dXJuIEg6OmNvbWJpbmVfcmFuZ2UoeC5wLCB4LnAgKyB4LnNpemUpOworLy8g
ICB9CisvLyAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oQmFkNCB4LCBCYWQ0IHkpIHsKKy8vICAg
ICByZXR1cm4gc3RkOjplcXVhbCh4LnAsIHgucCArIHguc2l6ZSwgeS5wLCB5LnAgKyB5LnNpemUp
OworLy8gICB9CisvLyB9OworLy8KKy8vIEFuIGVhc3kgc29sdXRpb24gdG8gdGhpcyBpcyB0byBj
b21iaW5lIHRoZSBzaXplIGFmdGVyIGNvbWJpbmluZyB0aGUgcmFuZ2UsCisvLyBsaWtlIHNvOgor
Ly8gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKy8vICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShI
IHN0YXRlLCBCYWQ0IHgpIHsKKy8vICAgICByZXR1cm4gSDo6Y29tYmluZShIOjpjb21iaW5lX3Jh
bmdlKHgucCwgeC5wICsgeC5zaXplKSwgeC5zaXplKTsKKy8vICAgfQorLy8KK3RlbXBsYXRlIDxp
bnQmLi4uIEV4cGxpY2l0QmFycmllciwgdHlwZW5hbWUgQ29udGFpbmVyPgorQUJTTF9NVVNUX1VT
RV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fi
c2xIYXNoQ29ycmVjdGx5KGNvbnN0IENvbnRhaW5lciYgdmFsdWVzKTsKKwordGVtcGxhdGUgPGlu
dCYuLi4gRXhwbGljaXRCYXJyaWVyLCB0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIEVxPgor
QUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBl
SW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KGNvbnN0IENvbnRhaW5lciYgdmFsdWVzLCBFcSBl
cXVhbHMpOworCit0ZW1wbGF0ZSA8aW50Ji4uLiwgdHlwZW5hbWUgVD4KK0FCU0xfTVVTVF9VU0Vf
UkVTVUxUIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdAorVmVyaWZ5VHlwZUltcGxlbWVudHNBYnNs
SGFzaENvcnJlY3RseShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gdmFsdWVzKTsKKwordGVtcGxh
dGUgPGludCYuLi4sIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVxPgorQUJTTF9NVVNUX1VTRV9SRVNV
TFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNo
Q29ycmVjdGx5KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1ZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVxIGVxdWFscyk7CisKK25hbWVzcGFjZSBoYXNoX2lu
dGVybmFsIHsKKworc3RydWN0IFByaW50VmlzaXRvciB7CisgIHNpemVfdCBpbmRleDsKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgVCogdmFs
dWUpIGNvbnN0IHsKKyAgICByZXR1cm4gYWJzbDo6U3RyQ2F0KCIjIiwgaW5kZXgsICIoIiwgdGVz
dGluZzo6UHJpbnRUb1N0cmluZygqdmFsdWUpLCAiKSIpOworICB9Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRXE+CitzdHJ1Y3QgRXFWaXNpdG9yIHsKKyAgRXEgZXE7CisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICBib29sIG9wZXJhdG9yKCkoY29uc3QgVCogdCwgY29u
c3QgVSogdSkgY29uc3QgeworICAgIHJldHVybiBlcSgqdCwgKnUpOworICB9Cit9OworCitzdHJ1
Y3QgRXhwYW5kVmlzaXRvciB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBTcHlIYXNoU3Rh
dGUgb3BlcmF0b3IoKShjb25zdCBUKiB2YWx1ZSkgY29uc3QgeworICAgIHJldHVybiBTcHlIYXNo
U3RhdGU6OmNvbWJpbmUoU3B5SGFzaFN0YXRlKCksICp2YWx1ZSk7CisgIH0KK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIEVxPgorQUJTTF9NVVNUX1VTRV9SRVNV
TFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNo
Q29ycmVjdGx5KGNvbnN0IENvbnRhaW5lciYgdmFsdWVzLCBFcSBlcXVhbHMpIHsKKyAgdXNpbmcg
ViA9IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZTsKKworICBzdHJ1Y3QgSW5mbyB7Cisg
ICAgY29uc3QgViYgdmFsdWU7CisgICAgc2l6ZV90IGluZGV4OworICAgIHN0ZDo6c3RyaW5nIFRv
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gYWJzbDo6dmlzaXQoUHJpbnRWaXNpdG9ye2luZGV4fSwg
dmFsdWUpOyB9CisgICAgU3B5SGFzaFN0YXRlIGV4cGFuZCgpIGNvbnN0IHsgcmV0dXJuIGFic2w6
OnZpc2l0KEV4cGFuZFZpc2l0b3J7fSwgdmFsdWUpOyB9CisgIH07CisKKyAgdXNpbmcgRXFDbGFz
cyA9IHN0ZDo6dmVjdG9yPEluZm8+OworICBzdGQ6OnZlY3RvcjxFcUNsYXNzPiBjbGFzc2VzOwor
CisgIC8vIEdhdGhlciB0aGUgdmFsdWVzIGluIGVxdWl2YWxlbmNlIGNsYXNzZXMuCisgIHNpemVf
dCBpID0gMDsKKyAgZm9yIChjb25zdCBhdXRvJiB2YWx1ZSA6IHZhbHVlcykgeworICAgIEVxQ2xh
c3MqIGMgPSBudWxscHRyOworICAgIGZvciAoYXV0byYgZXFjbGFzcyA6IGNsYXNzZXMpIHsKKyAg
ICAgIGlmIChhYnNsOjp2aXNpdChFcVZpc2l0b3I8RXE+e2VxdWFsc30sIHZhbHVlLCBlcWNsYXNz
WzBdLnZhbHVlKSkgeworICAgICAgICBjID0gJmVxY2xhc3M7CisgICAgICAgIGJyZWFrOworICAg
ICAgfQorICAgIH0KKyAgICBpZiAoYyA9PSBudWxscHRyKSB7CisgICAgICBjbGFzc2VzLmVtcGxh
Y2VfYmFjaygpOworICAgICAgYyA9ICZjbGFzc2VzLmJhY2soKTsKKyAgICB9CisgICAgYy0+cHVz
aF9iYWNrKHt2YWx1ZSwgaX0pOworICAgICsraTsKKworICAgIC8vIFZlcmlmeSBwb3RlbnRpYWwg
ZXJyb3JzIGNhcHR1cmVkIGJ5IFNweUhhc2hTdGF0ZS4KKyAgICBpZiAoYXV0byBlcnJvciA9IGMt
PmJhY2soKS5leHBhbmQoKS5lcnJvcigpKSB7CisgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpIDw8ICplcnJvcjsKKyAgICB9CisgIH0KKworICBpZiAoY2xhc3Nlcy5zaXpl
KCkgPCAyKSB7CisgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAg
ICAgICA8PCAiQXQgbGVhc3QgdHdvIGVxdWl2YWxlbmNlIGNsYXNzZXMgYXJlIGV4cGVjdGVkLiI7
CisgIH0KKworICAvLyBXZSBhc3N1bWUgdGhhdCBlcXVhbGl0eSBpcyBjb3JyZWN0bHkgaW1wbGVt
ZW50ZWQuCisgIC8vIE5vdyB3ZSB2ZXJpZnkgdGhhdCBBYnNsSGFzaFZhbHVlIGlzIGFsc28gY29y
cmVjdGx5IGltcGxlbWVudGVkLgorCisgIGZvciAoY29uc3QgYXV0byYgYyA6IGNsYXNzZXMpIHsK
KyAgICAvLyBBbGwgZWxlbWVudHMgb2YgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIG11c3QgaGF2ZSB0
aGUgc2FtZSBoYXNoIGV4cGFuc2lvbi4KKyAgICBjb25zdCBTcHlIYXNoU3RhdGUgZXhwZWN0ZWQg
PSBjWzBdLmV4cGFuZCgpOworICAgIGZvciAoY29uc3QgSW5mbyYgdiA6IGMpIHsKKyAgICAgIGlm
ICh2LmV4cGFuZCgpICE9IHYuZXhwYW5kKCkpIHsKKyAgICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFz
c2VydGlvbkZhaWx1cmUoKQorICAgICAgICAgICAgICAgPDwgIkhhc2ggZXhwYW5zaW9uIGZvciAi
IDw8IHYuVG9TdHJpbmcoKQorICAgICAgICAgICAgICAgPDwgIiBpcyBub24tZGV0ZXJtaW5pc3Rp
Yy4iOworICAgICAgfQorICAgICAgaWYgKHYuZXhwYW5kKCkgIT0gZXhwZWN0ZWQpIHsKKyAgICAg
ICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgICAgICAgICAgPDwg
IlZhbHVlcyAiIDw8IGNbMF0uVG9TdHJpbmcoKSA8PCAiIGFuZCAiIDw8IHYuVG9TdHJpbmcoKQor
ICAgICAgICAgICAgICAgPDwgIiBldmFsdWF0ZSBhcyBlcXVhbCBidXQgaGF2ZSBhbiB1bmVxdWFs
IGhhc2ggZXhwYW5zaW9uLiI7CisgICAgICB9CisgICAgfQorCisgICAgLy8gRWxlbWVudHMgZnJv
bSBvdGhlciBjbGFzc2VzIG11c3QgaGF2ZSBkaWZmZXJlbnQgaGFzaCBleHBhbnNpb24uCisgICAg
Zm9yIChjb25zdCBhdXRvJiBjMiA6IGNsYXNzZXMpIHsKKyAgICAgIGlmICgmYyA9PSAmYzIpIGNv
bnRpbnVlOworICAgICAgY29uc3QgU3B5SGFzaFN0YXRlIGMyX2hhc2ggPSBjMlswXS5leHBhbmQo
KTsKKyAgICAgIHN3aXRjaCAoU3B5SGFzaFN0YXRlOjpDb21wYXJlKGV4cGVjdGVkLCBjMl9oYXNo
KSkgeworICAgICAgICBjYXNlIFNweUhhc2hTdGF0ZTo6Q29tcGFyZVJlc3VsdDo6a0VxdWFsOgor
ICAgICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgICAgICAg
ICAgICAgPDwgIlZhbHVlcyAiIDw8IGNbMF0uVG9TdHJpbmcoKSA8PCAiIGFuZCAiIDw8IGMyWzBd
LlRvU3RyaW5nKCkKKyAgICAgICAgICAgICAgICAgPDwgIiBldmFsdWF0ZSBhcyB1bmVxdWFsIGJ1
dCBoYXZlIGFuIGVxdWFsIGhhc2ggZXhwYW5zaW9uLiI7CisgICAgICAgIGNhc2UgU3B5SGFzaFN0
YXRlOjpDb21wYXJlUmVzdWx0OjprQlN1ZmZpeEE6CisgICAgICAgICAgcmV0dXJuIHRlc3Rpbmc6
OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgICAgICAgICAgICA8PCAiSGFzaCBleHBhbnNpb24g
b2YgIiA8PCBjMlswXS5Ub1N0cmluZygpCisgICAgICAgICAgICAgICAgIDw8ICIgaXMgYSBzdWZm
aXggb2YgdGhlIGhhc2ggZXhwYW5zaW9uIG9mICIgPDwgY1swXS5Ub1N0cmluZygpCisgICAgICAg
ICAgICAgICAgIDw8ICIuIjsKKyAgICAgICAgY2FzZSBTcHlIYXNoU3RhdGU6OkNvbXBhcmVSZXN1
bHQ6OmtBU3VmZml4QjoKKyAgICAgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVy
ZSgpCisgICAgICAgICAgICAgICAgIDw8ICJIYXNoIGV4cGFuc2lvbiBvZiAiIDw8IGNbMF0uVG9T
dHJpbmcoKQorICAgICAgICAgICAgICAgICA8PCAiIGlzIGEgc3VmZml4IG9mIHRoZSBoYXNoIGV4
cGFuc2lvbiBvZiAiIDw8IGMyWzBdLlRvU3RyaW5nKCkKKyAgICAgICAgICAgICAgICAgPDwgIi4i
OworICAgICAgICBjYXNlIFNweUhhc2hTdGF0ZTo6Q29tcGFyZVJlc3VsdDo6a1VuZXF1YWw6Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiB0ZXN0aW5nOjpB
c3NlcnRpb25TdWNjZXNzKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorc3RydWN0
IFR5cGVTZXQgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgYm9vbCA9IGRpc2p1bmN0aW9uPHN0
ZDo6aXNfc2FtZTxULCBVPi4uLj46OnZhbHVlPgorICBzdHJ1Y3QgSW5zZXJ0IHsKKyAgICB1c2lu
ZyB0eXBlID0gVHlwZVNldDxVLCBULi4uPjsKKyAgfTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+
CisgIHN0cnVjdCBJbnNlcnQ8VSwgdHJ1ZT4geworICAgIHVzaW5nIHR5cGUgPSBUeXBlU2V0Owor
ICB9OworCisgIHRlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4+IGNsYXNzIEM+CisgIHVz
aW5nIGFwcGx5ID0gQzxULi4uPjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorc3Ry
dWN0IE1ha2VUeXBlU2V0IDogVHlwZVNldDw+e307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUuLi4gVHM+CitzdHJ1Y3QgTWFrZVR5cGVTZXQ8VCwgVHMuLi4+IDogTWFrZVR5cGVTZXQ8
VHMuLi4+Ojp0ZW1wbGF0ZSBJbnNlcnQ8VD46OnR5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBUPgordXNpbmcgVmFyaWFudEZvclR5cGVzID0gdHlwZW5hbWUgTWFrZVR5cGVTZXQ8Cisg
ICAgY29uc3QgdHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZSouLi4+Ojp0ZW1wbGF0ZSBhcHBs
eTxhYnNsOjp2YXJpYW50PjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KK3N0cnVj
dCBDb250YWluZXJBc1ZlY3RvciB7CisgIHVzaW5nIFYgPSBhYnNsOjp2YXJpYW50PGNvbnN0IHR5
cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZSo+OworICB1c2luZyBPdXQgPSBzdGQ6OnZlY3Rv
cjxWPjsKKworICBzdGF0aWMgT3V0IERvKGNvbnN0IENvbnRhaW5lciYgdmFsdWVzKSB7CisgICAg
T3V0IG91dDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHYgOiB2YWx1ZXMpIG91dC5wdXNoX2JhY2so
JnYpOworICAgIHJldHVybiBvdXQ7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBU
Pgorc3RydWN0IENvbnRhaW5lckFzVmVjdG9yPHN0ZDo6dHVwbGU8VC4uLj4+IHsKKyAgdXNpbmcg
ViA9IFZhcmlhbnRGb3JUeXBlczxULi4uPjsKKyAgdXNpbmcgT3V0ID0gc3RkOjp2ZWN0b3I8Vj47
CisKKyAgdGVtcGxhdGUgPHNpemVfdC4uLiBJPgorICBzdGF0aWMgT3V0IERvSW1wbChjb25zdCBz
dGQ6OnR1cGxlPFQuLi4+JiB0dXBsZSwgYWJzbDo6aW5kZXhfc2VxdWVuY2U8SS4uLj4pIHsKKyAg
ICByZXR1cm4gT3V0eyZzdGQ6OmdldDxJPih0dXBsZSkuLi59OworICB9CisKKyAgc3RhdGljIE91
dCBEbyhjb25zdCBzdGQ6OnR1cGxlPFQuLi4+JiB2YWx1ZXMpIHsKKyAgICByZXR1cm4gRG9JbXBs
KHZhbHVlcywgYWJzbDo6aW5kZXhfc2VxdWVuY2VfZm9yPFQuLi4+KCkpOworICB9Cit9OworCit0
ZW1wbGF0ZSA8Pgorc3RydWN0IENvbnRhaW5lckFzVmVjdG9yPHN0ZDo6dHVwbGU8Pj4geworICBz
dGF0aWMgc3RkOjp2ZWN0b3I8VmFyaWFudEZvclR5cGVzPGludD4+IERvKHN0ZDo6dHVwbGU8Pikg
eyByZXR1cm4ge307IH0KK307CisKK3N0cnVjdCBEZWZhdWx0RXF1YWxzIHsKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUJiB0LCBj
b25zdCBVJiB1KSBjb25zdCB7CisgICAgcmV0dXJuIHQgPT0gdTsKKyAgfQorfTsKKworfSAgLy8g
bmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwKKwordGVtcGxhdGUgPGludCYuLi4sIHR5cGVuYW1lIENv
bnRhaW5lcj4KK0FCU0xfTVVTVF9VU0VfUkVTVUxUIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdAor
VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShjb25zdCBDb250YWluZXImIHZh
bHVlcykgeworICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNs
SGFzaENvcnJlY3RseSgKKyAgICAgIGhhc2hfaW50ZXJuYWw6OkNvbnRhaW5lckFzVmVjdG9yPENv
bnRhaW5lcj46OkRvKHZhbHVlcyksCisgICAgICBoYXNoX2ludGVybmFsOjpEZWZhdWx0RXF1YWxz
e30pOworfQorCit0ZW1wbGF0ZSA8aW50Ji4uLiwgdHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFt
ZSBFcT4KK0FCU0xfTVVTVF9VU0VfUkVTVUxUIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdAorVmVy
aWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShjb25zdCBDb250YWluZXImIHZhbHVl
cywgRXEgZXF1YWxzKSB7CisgIHJldHVybiBoYXNoX2ludGVybmFsOjpWZXJpZnlUeXBlSW1wbGVt
ZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAgICAgaGFzaF9pbnRlcm5hbDo6Q29udGFpbmVyQXNW
ZWN0b3I8Q29udGFpbmVyPjo6RG8odmFsdWVzKSwKKyAgICAgIGVxdWFscyk7Cit9CisKK3RlbXBs
YXRlIDxpbnQmLi4uLCB0eXBlbmFtZSBUPgorQUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6
QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1ZXMpIHsKKyAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6
OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoCisgICAgICBoYXNoX2ludGVy
bmFsOjpDb250YWluZXJBc1ZlY3RvcjxzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4+OjpEbyh2YWx1
ZXMpLAorICAgICAgaGFzaF9pbnRlcm5hbDo6RGVmYXVsdEVxdWFsc3t9KTsKK30KKwordGVtcGxh
dGUgPGludCYuLi4sIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVxPgorQUJTTF9NVVNUX1VTRV9SRVNV
TFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNo
Q29ycmVjdGx5KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1ZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVxIGVxdWFscykgeworICByZXR1cm4gaGFzaF9pbnRl
cm5hbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIGhhc2hf
aW50ZXJuYWw6OkNvbnRhaW5lckFzVmVjdG9yPHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPj46OkRv
KHZhbHVlcyksCisgICAgICBlcXVhbHMpOworfQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisj
ZW5kaWYgIC8vIEFCU0xfSEFTSF9IQVNIX1RFU1RJTkdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hh
c2gvaW50ZXJuYWwvY2l0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZjcyZGQxYjdkMGM5ZjUzOGQ5MWQ2MjdkZmYwNjYyZTRlMGM5YjJjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmNjCkBAIC0wLDAgKzEsNTkwIEBACisv
LyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIFRoaXMgZmlsZSBw
cm92aWRlcyBDaXR5SGFzaDY0KCkgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLgorLy8KKy8vIEl0J3Mg
cHJvYmFibHkgcG9zc2libGUgdG8gY3JlYXRlIGV2ZW4gZmFzdGVyIGhhc2ggZnVuY3Rpb25zIGJ5
CisvLyB3cml0aW5nIGEgcHJvZ3JhbSB0aGF0IHN5c3RlbWF0aWNhbGx5IGV4cGxvcmVzIHNvbWUg
b2YgdGhlIHNwYWNlIG9mCisvLyBwb3NzaWJsZSBoYXNoIGZ1bmN0aW9ucywgYnkgdXNpbmcgU0lN
RCBpbnN0cnVjdGlvbnMsIG9yIGJ5CisvLyBjb21wcm9taXNpbmcgb24gaGFzaCBxdWFsaXR5Lgor
CisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL2NpdHkuaCIKKworI2luY2x1ZGUgPHN0cmlu
Zy5oPiAgLy8gZm9yIG1lbWNweSBhbmQgbWVtc2V0CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisj
aW5jbHVkZSAiYWJzbC9iYXNlL2NvbmZpZy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5h
bC9lbmRpYW4uaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvdW5hbGlnbmVkX2FjY2Vz
cy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9vcHRpbWl6YXRpb24uaCIKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgeworCisjaWZkZWYgQUJTTF9JU19CSUdfRU5E
SUFOCisjZGVmaW5lIHVpbnQzMl9pbl9leHBlY3RlZF9vcmRlcih4KSAoYWJzbDo6Z2Jzd2FwXzMy
KHgpKQorI2RlZmluZSB1aW50NjRfaW5fZXhwZWN0ZWRfb3JkZXIoeCkgKGFic2w6Omdic3dhcF82
NCh4KSkKKyNlbHNlCisjZGVmaW5lIHVpbnQzMl9pbl9leHBlY3RlZF9vcmRlcih4KSAoeCkKKyNk
ZWZpbmUgdWludDY0X2luX2V4cGVjdGVkX29yZGVyKHgpICh4KQorI2VuZGlmCisKK3N0YXRpYyB1
aW50NjRfdCBGZXRjaDY0KGNvbnN0IGNoYXIgKnApIHsKKyAgcmV0dXJuIHVpbnQ2NF9pbl9leHBl
Y3RlZF9vcmRlcihBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FENjQocCkpOworfQorCitzdGF0
aWMgdWludDMyX3QgRmV0Y2gzMihjb25zdCBjaGFyICpwKSB7CisgIHJldHVybiB1aW50MzJfaW5f
ZXhwZWN0ZWRfb3JkZXIoQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDMyKHApKTsKK30KKwor
Ly8gU29tZSBwcmltZXMgYmV0d2VlbiAyXjYzIGFuZCAyXjY0IGZvciB2YXJpb3VzIHVzZXMuCitz
dGF0aWMgY29uc3QgdWludDY0X3QgazAgPSAweGMzYTVjODVjOTdjYjMxMjdVTEw7CitzdGF0aWMg
Y29uc3QgdWludDY0X3QgazEgPSAweGI0OTJiNjZmYmU5OGYyNzNVTEw7CitzdGF0aWMgY29uc3Qg
dWludDY0X3QgazIgPSAweDlhZTE2YTNiMmY5MDQwNGZVTEw7CisKKy8vIE1hZ2ljIG51bWJlcnMg
Zm9yIDMyLWJpdCBoYXNoaW5nLiAgQ29waWVkIGZyb20gTXVybXVyMy4KK3N0YXRpYyBjb25zdCB1
aW50MzJfdCBjMSA9IDB4Y2M5ZTJkNTE7CitzdGF0aWMgY29uc3QgdWludDMyX3QgYzIgPSAweDFi
ODczNTkzOworCisvLyBBIDMyLWJpdCB0byAzMi1iaXQgaW50ZWdlciBoYXNoIGNvcGllZCBmcm9t
IE11cm11cjMuCitzdGF0aWMgdWludDMyX3QgZm1peCh1aW50MzJfdCBoKSB7CisgIGggXj0gaCA+
PiAxNjsKKyAgaCAqPSAweDg1ZWJjYTZiOworICBoIF49IGggPj4gMTM7CisgIGggKj0gMHhjMmIy
YWUzNTsKKyAgaCBePSBoID4+IDE2OworICByZXR1cm4gaDsKK30KKworc3RhdGljIHVpbnQzMl90
IFJvdGF0ZTMyKHVpbnQzMl90IHZhbCwgaW50IHNoaWZ0KSB7CisgIC8vIEF2b2lkIHNoaWZ0aW5n
IGJ5IDMyOiBkb2luZyBzbyB5aWVsZHMgYW4gdW5kZWZpbmVkIHJlc3VsdC4KKyAgcmV0dXJuIHNo
aWZ0ID09IDAgPyB2YWwgOiAoKHZhbCA+PiBzaGlmdCkgfCAodmFsIDw8ICgzMiAtIHNoaWZ0KSkp
OworfQorCisjdW5kZWYgUEVSTVVURTMKKyNkZWZpbmUgUEVSTVVURTMoYSwgYiwgYykgXAorICBk
byB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RkOjpzd2FwKGEsIGIpOyAgICAgIFwKKyAg
ICBzdGQ6OnN3YXAoYSwgYyk7ICAgICAgXAorICB9IHdoaWxlICgwKQorCitzdGF0aWMgdWludDMy
X3QgTXVyKHVpbnQzMl90IGEsIHVpbnQzMl90IGgpIHsKKyAgLy8gSGVscGVyIGZyb20gTXVybXVy
MyBmb3IgY29tYmluaW5nIHR3byAzMi1iaXQgdmFsdWVzLgorICBhICo9IGMxOworICBhID0gUm90
YXRlMzIoYSwgMTcpOworICBhICo9IGMyOworICBoIF49IGE7CisgIGggPSBSb3RhdGUzMihoLCAx
OSk7CisgIHJldHVybiBoICogNSArIDB4ZTY1NDZiNjQ7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBI
YXNoMzJMZW4xM3RvMjQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikgeworICB1aW50MzJfdCBh
ID0gRmV0Y2gzMihzIC0gNCArIChsZW4gPj4gMSkpOworICB1aW50MzJfdCBiID0gRmV0Y2gzMihz
ICsgNCk7CisgIHVpbnQzMl90IGMgPSBGZXRjaDMyKHMgKyBsZW4gLSA4KTsKKyAgdWludDMyX3Qg
ZCA9IEZldGNoMzIocyArIChsZW4gPj4gMSkpOworICB1aW50MzJfdCBlID0gRmV0Y2gzMihzKTsK
KyAgdWludDMyX3QgZiA9IEZldGNoMzIocyArIGxlbiAtIDQpOworICB1aW50MzJfdCBoID0gbGVu
OworCisgIHJldHVybiBmbWl4KE11cihmLCBNdXIoZSwgTXVyKGQsIE11cihjLCBNdXIoYiwgTXVy
KGEsIGgpKSkpKSkpOworfQorCitzdGF0aWMgdWludDMyX3QgSGFzaDMyTGVuMHRvNChjb25zdCBj
aGFyICpzLCBzaXplX3QgbGVuKSB7CisgIHVpbnQzMl90IGIgPSAwOworICB1aW50MzJfdCBjID0g
OTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgIHNpZ25lZCBjaGFy
IHYgPSBzW2ldOworICAgIGIgPSBiICogYzEgKyB2OworICAgIGMgXj0gYjsKKyAgfQorICByZXR1
cm4gZm1peChNdXIoYiwgTXVyKGxlbiwgYykpKTsKK30KKworc3RhdGljIHVpbnQzMl90IEhhc2gz
MkxlbjV0bzEyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pIHsKKyAgdWludDMyX3QgYSA9IGxl
biwgYiA9IGxlbiAqIDUsIGMgPSA5LCBkID0gYjsKKyAgYSArPSBGZXRjaDMyKHMpOworICBiICs9
IEZldGNoMzIocyArIGxlbiAtIDQpOworICBjICs9IEZldGNoMzIocyArICgobGVuID4+IDEpICYg
NCkpOworICByZXR1cm4gZm1peChNdXIoYywgTXVyKGIsIE11cihhLCBkKSkpKTsKK30KKwordWlu
dDMyX3QgQ2l0eUhhc2gzMihjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7CisgIGlmIChsZW4g
PD0gMjQpIHsKKyAgICByZXR1cm4gbGVuIDw9IDEyCisgICAgICAgICAgICAgICA/IChsZW4gPD0g
NCA/IEhhc2gzMkxlbjB0bzQocywgbGVuKSA6IEhhc2gzMkxlbjV0bzEyKHMsIGxlbikpCisgICAg
ICAgICAgICAgICA6IEhhc2gzMkxlbjEzdG8yNChzLCBsZW4pOworICB9CisKKyAgLy8gbGVuID4g
MjQKKyAgdWludDMyX3QgaCA9IGxlbiwgZyA9IGMxICogbGVuLCBmID0gZzsKKworICB1aW50MzJf
dCBhMCA9IFJvdGF0ZTMyKEZldGNoMzIocyArIGxlbiAtIDQpICogYzEsIDE3KSAqIGMyOworICB1
aW50MzJfdCBhMSA9IFJvdGF0ZTMyKEZldGNoMzIocyArIGxlbiAtIDgpICogYzEsIDE3KSAqIGMy
OworICB1aW50MzJfdCBhMiA9IFJvdGF0ZTMyKEZldGNoMzIocyArIGxlbiAtIDE2KSAqIGMxLCAx
NykgKiBjMjsKKyAgdWludDMyX3QgYTMgPSBSb3RhdGUzMihGZXRjaDMyKHMgKyBsZW4gLSAxMikg
KiBjMSwgMTcpICogYzI7CisgIHVpbnQzMl90IGE0ID0gUm90YXRlMzIoRmV0Y2gzMihzICsgbGVu
IC0gMjApICogYzEsIDE3KSAqIGMyOworICBoIF49IGEwOworICBoID0gUm90YXRlMzIoaCwgMTkp
OworICBoID0gaCAqIDUgKyAweGU2NTQ2YjY0OworICBoIF49IGEyOworICBoID0gUm90YXRlMzIo
aCwgMTkpOworICBoID0gaCAqIDUgKyAweGU2NTQ2YjY0OworICBnIF49IGExOworICBnID0gUm90
YXRlMzIoZywgMTkpOworICBnID0gZyAqIDUgKyAweGU2NTQ2YjY0OworICBnIF49IGEzOworICBn
ID0gUm90YXRlMzIoZywgMTkpOworICBnID0gZyAqIDUgKyAweGU2NTQ2YjY0OworICBmICs9IGE0
OworICBmID0gUm90YXRlMzIoZiwgMTkpOworICBmID0gZiAqIDUgKyAweGU2NTQ2YjY0OworICBz
aXplX3QgaXRlcnMgPSAobGVuIC0gMSkgLyAyMDsKKyAgZG8geworICAgIHVpbnQzMl90IGIwID0g
Um90YXRlMzIoRmV0Y2gzMihzKSAqIGMxLCAxNykgKiBjMjsKKyAgICB1aW50MzJfdCBiMSA9IEZl
dGNoMzIocyArIDQpOworICAgIHVpbnQzMl90IGIyID0gUm90YXRlMzIoRmV0Y2gzMihzICsgOCkg
KiBjMSwgMTcpICogYzI7CisgICAgdWludDMyX3QgYjMgPSBSb3RhdGUzMihGZXRjaDMyKHMgKyAx
MikgKiBjMSwgMTcpICogYzI7CisgICAgdWludDMyX3QgYjQgPSBGZXRjaDMyKHMgKyAxNik7Cisg
ICAgaCBePSBiMDsKKyAgICBoID0gUm90YXRlMzIoaCwgMTgpOworICAgIGggPSBoICogNSArIDB4
ZTY1NDZiNjQ7CisgICAgZiArPSBiMTsKKyAgICBmID0gUm90YXRlMzIoZiwgMTkpOworICAgIGYg
PSBmICogYzE7CisgICAgZyArPSBiMjsKKyAgICBnID0gUm90YXRlMzIoZywgMTgpOworICAgIGcg
PSBnICogNSArIDB4ZTY1NDZiNjQ7CisgICAgaCBePSBiMyArIGIxOworICAgIGggPSBSb3RhdGUz
MihoLCAxOSk7CisgICAgaCA9IGggKiA1ICsgMHhlNjU0NmI2NDsKKyAgICBnIF49IGI0OworICAg
IGcgPSBhYnNsOjpnYnN3YXBfMzIoZykgKiA1OworICAgIGggKz0gYjQgKiA1OworICAgIGggPSBh
YnNsOjpnYnN3YXBfMzIoaCk7CisgICAgZiArPSBiMDsKKyAgICBQRVJNVVRFMyhmLCBoLCBnKTsK
KyAgICBzICs9IDIwOworICB9IHdoaWxlICgtLWl0ZXJzICE9IDApOworICBnID0gUm90YXRlMzIo
ZywgMTEpICogYzE7CisgIGcgPSBSb3RhdGUzMihnLCAxNykgKiBjMTsKKyAgZiA9IFJvdGF0ZTMy
KGYsIDExKSAqIGMxOworICBmID0gUm90YXRlMzIoZiwgMTcpICogYzE7CisgIGggPSBSb3RhdGUz
MihoICsgZywgMTkpOworICBoID0gaCAqIDUgKyAweGU2NTQ2YjY0OworICBoID0gUm90YXRlMzIo
aCwgMTcpICogYzE7CisgIGggPSBSb3RhdGUzMihoICsgZiwgMTkpOworICBoID0gaCAqIDUgKyAw
eGU2NTQ2YjY0OworICBoID0gUm90YXRlMzIoaCwgMTcpICogYzE7CisgIHJldHVybiBoOworfQor
CisvLyBCaXR3aXNlIHJpZ2h0IHJvdGF0ZS4gIE5vcm1hbGx5IHRoaXMgd2lsbCBjb21waWxlIHRv
IGEgc2luZ2xlCisvLyBpbnN0cnVjdGlvbiwgZXNwZWNpYWxseSBpZiB0aGUgc2hpZnQgaXMgYSBt
YW5pZmVzdCBjb25zdGFudC4KK3N0YXRpYyB1aW50NjRfdCBSb3RhdGUodWludDY0X3QgdmFsLCBp
bnQgc2hpZnQpIHsKKyAgLy8gQXZvaWQgc2hpZnRpbmcgYnkgNjQ6IGRvaW5nIHNvIHlpZWxkcyBh
biB1bmRlZmluZWQgcmVzdWx0LgorICByZXR1cm4gc2hpZnQgPT0gMCA/IHZhbCA6ICgodmFsID4+
IHNoaWZ0KSB8ICh2YWwgPDwgKDY0IC0gc2hpZnQpKSk7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBT
aGlmdE1peCh1aW50NjRfdCB2YWwpIHsgcmV0dXJuIHZhbCBeICh2YWwgPj4gNDcpOyB9CisKK3N0
YXRpYyB1aW50NjRfdCBIYXNoTGVuMTYodWludDY0X3QgdSwgdWludDY0X3QgdikgeworICByZXR1
cm4gSGFzaDEyOHRvNjQodWludDEyOCh1LCB2KSk7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBIYXNo
TGVuMTYodWludDY0X3QgdSwgdWludDY0X3QgdiwgdWludDY0X3QgbXVsKSB7CisgIC8vIE11cm11
ci1pbnNwaXJlZCBoYXNoaW5nLgorICB1aW50NjRfdCBhID0gKHUgXiB2KSAqIG11bDsKKyAgYSBe
PSAoYSA+PiA0Nyk7CisgIHVpbnQ2NF90IGIgPSAodiBeIGEpICogbXVsOworICBiIF49IChiID4+
IDQ3KTsKKyAgYiAqPSBtdWw7CisgIHJldHVybiBiOworfQorCitzdGF0aWMgdWludDY0X3QgSGFz
aExlbjB0bzE2KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pIHsKKyAgaWYgKGxlbiA+PSA4KSB7
CisgICAgdWludDY0X3QgbXVsID0gazIgKyBsZW4gKiAyOworICAgIHVpbnQ2NF90IGEgPSBGZXRj
aDY0KHMpICsgazI7CisgICAgdWludDY0X3QgYiA9IEZldGNoNjQocyArIGxlbiAtIDgpOworICAg
IHVpbnQ2NF90IGMgPSBSb3RhdGUoYiwgMzcpICogbXVsICsgYTsKKyAgICB1aW50NjRfdCBkID0g
KFJvdGF0ZShhLCAyNSkgKyBiKSAqIG11bDsKKyAgICByZXR1cm4gSGFzaExlbjE2KGMsIGQsIG11
bCk7CisgIH0KKyAgaWYgKGxlbiA+PSA0KSB7CisgICAgdWludDY0X3QgbXVsID0gazIgKyBsZW4g
KiAyOworICAgIHVpbnQ2NF90IGEgPSBGZXRjaDMyKHMpOworICAgIHJldHVybiBIYXNoTGVuMTYo
bGVuICsgKGEgPDwgMyksIEZldGNoMzIocyArIGxlbiAtIDQpLCBtdWwpOworICB9CisgIGlmIChs
ZW4gPiAwKSB7CisgICAgdWludDhfdCBhID0gc1swXTsKKyAgICB1aW50OF90IGIgPSBzW2xlbiA+
PiAxXTsKKyAgICB1aW50OF90IGMgPSBzW2xlbiAtIDFdOworICAgIHVpbnQzMl90IHkgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oYSkgKyAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGIpIDw8IDgpOwor
ICAgIHVpbnQzMl90IHogPSBsZW4gKyAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGMpIDw8IDIpOwor
ICAgIHJldHVybiBTaGlmdE1peCh5ICogazIgXiB6ICogazApICogazI7CisgIH0KKyAgcmV0dXJu
IGsyOworfQorCisvLyBUaGlzIHByb2JhYmx5IHdvcmtzIHdlbGwgZm9yIDE2LWJ5dGUgc3RyaW5n
cyBhcyB3ZWxsLCBidXQgaXQgbWF5IGJlIG92ZXJraWxsCisvLyBpbiB0aGF0IGNhc2UuCitzdGF0
aWMgdWludDY0X3QgSGFzaExlbjE3dG8zMihjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7Cisg
IHVpbnQ2NF90IG11bCA9IGsyICsgbGVuICogMjsKKyAgdWludDY0X3QgYSA9IEZldGNoNjQocykg
KiBrMTsKKyAgdWludDY0X3QgYiA9IEZldGNoNjQocyArIDgpOworICB1aW50NjRfdCBjID0gRmV0
Y2g2NChzICsgbGVuIC0gOCkgKiBtdWw7CisgIHVpbnQ2NF90IGQgPSBGZXRjaDY0KHMgKyBsZW4g
LSAxNikgKiBrMjsKKyAgcmV0dXJuIEhhc2hMZW4xNihSb3RhdGUoYSArIGIsIDQzKSArIFJvdGF0
ZShjLCAzMCkgKyBkLAorICAgICAgICAgICAgICAgICAgIGEgKyBSb3RhdGUoYiArIGsyLCAxOCkg
KyBjLCBtdWwpOworfQorCisvLyBSZXR1cm4gYSAxNi1ieXRlIGhhc2ggZm9yIDQ4IGJ5dGVzLiAg
UXVpY2sgYW5kIGRpcnR5LgorLy8gQ2FsbGVycyBkbyBiZXN0IHRvIHVzZSAicmFuZG9tLWxvb2tp
bmciIHZhbHVlcyBmb3IgYSBhbmQgYi4KK3N0YXRpYyBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2
NF90PiBXZWFrSGFzaExlbjMyV2l0aFNlZWRzKHVpbnQ2NF90IHcsIHVpbnQ2NF90IHgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2
NF90IHksIHVpbnQ2NF90IHosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpIHsKKyAgYSArPSB3Owor
ICBiID0gUm90YXRlKGIgKyBhICsgeiwgMjEpOworICB1aW50NjRfdCBjID0gYTsKKyAgYSArPSB4
OworICBhICs9IHk7CisgIGIgKz0gUm90YXRlKGEsIDQ0KTsKKyAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKGEgKyB6LCBiICsgYyk7Cit9CisKKy8vIFJldHVybiBhIDE2LWJ5dGUgaGFzaCBmb3Igc1sw
XSAuLi4gc1szMV0sIGEsIGFuZCBiLiAgUXVpY2sgYW5kIGRpcnR5Lgorc3RhdGljIHN0ZDo6cGFp
cjx1aW50NjRfdCwgdWludDY0X3Q+IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMoY29uc3QgY2hhciAq
cywgdWludDY0X3QgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDY0X3QgYikgeworICByZXR1cm4gV2Vha0hhc2hMZW4zMldpdGhT
ZWVkcyhGZXRjaDY0KHMpLCBGZXRjaDY0KHMgKyA4KSwgRmV0Y2g2NChzICsgMTYpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGZXRjaDY0KHMgKyAyNCksIGEsIGIpOworfQorCisv
LyBSZXR1cm4gYW4gOC1ieXRlIGhhc2ggZm9yIDMzIHRvIDY0IGJ5dGVzLgorc3RhdGljIHVpbnQ2
NF90IEhhc2hMZW4zM3RvNjQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikgeworICB1aW50NjRf
dCBtdWwgPSBrMiArIGxlbiAqIDI7CisgIHVpbnQ2NF90IGEgPSBGZXRjaDY0KHMpICogazI7Cisg
IHVpbnQ2NF90IGIgPSBGZXRjaDY0KHMgKyA4KTsKKyAgdWludDY0X3QgYyA9IEZldGNoNjQocyAr
IGxlbiAtIDI0KTsKKyAgdWludDY0X3QgZCA9IEZldGNoNjQocyArIGxlbiAtIDMyKTsKKyAgdWlu
dDY0X3QgZSA9IEZldGNoNjQocyArIDE2KSAqIGsyOworICB1aW50NjRfdCBmID0gRmV0Y2g2NChz
ICsgMjQpICogOTsKKyAgdWludDY0X3QgZyA9IEZldGNoNjQocyArIGxlbiAtIDgpOworICB1aW50
NjRfdCBoID0gRmV0Y2g2NChzICsgbGVuIC0gMTYpICogbXVsOworICB1aW50NjRfdCB1ID0gUm90
YXRlKGEgKyBnLCA0MykgKyAoUm90YXRlKGIsIDMwKSArIGMpICogOTsKKyAgdWludDY0X3QgdiA9
ICgoYSArIGcpIF4gZCkgKyBmICsgMTsKKyAgdWludDY0X3QgdyA9IGFic2w6Omdic3dhcF82NCgo
dSArIHYpICogbXVsKSArIGg7CisgIHVpbnQ2NF90IHggPSBSb3RhdGUoZSArIGYsIDQyKSArIGM7
CisgIHVpbnQ2NF90IHkgPSAoYWJzbDo6Z2Jzd2FwXzY0KCh2ICsgdykgKiBtdWwpICsgZykgKiBt
dWw7CisgIHVpbnQ2NF90IHogPSBlICsgZiArIGM7CisgIGEgPSBhYnNsOjpnYnN3YXBfNjQoKHgg
KyB6KSAqIG11bCArIHkpICsgYjsKKyAgYiA9IFNoaWZ0TWl4KCh6ICsgYSkgKiBtdWwgKyBkICsg
aCkgKiBtdWw7CisgIHJldHVybiBiICsgeDsKK30KKwordWludDY0X3QgQ2l0eUhhc2g2NChjb25z
dCBjaGFyICpzLCBzaXplX3QgbGVuKSB7CisgIGlmIChsZW4gPD0gMzIpIHsKKyAgICBpZiAobGVu
IDw9IDE2KSB7CisgICAgICByZXR1cm4gSGFzaExlbjB0bzE2KHMsIGxlbik7CisgICAgfSBlbHNl
IHsKKyAgICAgIHJldHVybiBIYXNoTGVuMTd0bzMyKHMsIGxlbik7CisgICAgfQorICB9IGVsc2Ug
aWYgKGxlbiA8PSA2NCkgeworICAgIHJldHVybiBIYXNoTGVuMzN0bzY0KHMsIGxlbik7CisgIH0K
KworICAvLyBGb3Igc3RyaW5ncyBvdmVyIDY0IGJ5dGVzIHdlIGhhc2ggdGhlIGVuZCBmaXJzdCwg
YW5kIHRoZW4gYXMgd2UKKyAgLy8gbG9vcCB3ZSBrZWVwIDU2IGJ5dGVzIG9mIHN0YXRlOiB2LCB3
LCB4LCB5LCBhbmQgei4KKyAgdWludDY0X3QgeCA9IEZldGNoNjQocyArIGxlbiAtIDQwKTsKKyAg
dWludDY0X3QgeSA9IEZldGNoNjQocyArIGxlbiAtIDE2KSArIEZldGNoNjQocyArIGxlbiAtIDU2
KTsKKyAgdWludDY0X3QgeiA9IEhhc2hMZW4xNihGZXRjaDY0KHMgKyBsZW4gLSA0OCkgKyBsZW4s
IEZldGNoNjQocyArIGxlbiAtIDI0KSk7CisgIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+
IHYgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRzKHMgKyBsZW4gLSA2NCwgbGVuLCB6KTsKKyAgc3Rk
OjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gdyA9IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMocyAr
IGxlbiAtIDMyLCB5ICsgazEsIHgpOworICB4ID0geCAqIGsxICsgRmV0Y2g2NChzKTsKKworICAv
LyBEZWNyZWFzZSBsZW4gdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgNjQsIGFuZCBvcGVyYXRl
IG9uIDY0LWJ5dGUgY2h1bmtzLgorICBsZW4gPSAobGVuIC0gMSkgJiB+c3RhdGljX2Nhc3Q8c2l6
ZV90Pig2Myk7CisgIGRvIHsKKyAgICB4ID0gUm90YXRlKHggKyB5ICsgdi5maXJzdCArIEZldGNo
NjQocyArIDgpLCAzNykgKiBrMTsKKyAgICB5ID0gUm90YXRlKHkgKyB2LnNlY29uZCArIEZldGNo
NjQocyArIDQ4KSwgNDIpICogazE7CisgICAgeCBePSB3LnNlY29uZDsKKyAgICB5ICs9IHYuZmly
c3QgKyBGZXRjaDY0KHMgKyA0MCk7CisgICAgeiA9IFJvdGF0ZSh6ICsgdy5maXJzdCwgMzMpICog
azE7CisgICAgdiA9IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMocywgdi5zZWNvbmQgKiBrMSwgeCAr
IHcuZmlyc3QpOworICAgIHcgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRzKHMgKyAzMiwgeiArIHcu
c2Vjb25kLCB5ICsgRmV0Y2g2NChzICsgMTYpKTsKKyAgICBzdGQ6OnN3YXAoeiwgeCk7CisgICAg
cyArPSA2NDsKKyAgICBsZW4gLT0gNjQ7CisgIH0gd2hpbGUgKGxlbiAhPSAwKTsKKyAgcmV0dXJu
IEhhc2hMZW4xNihIYXNoTGVuMTYodi5maXJzdCwgdy5maXJzdCkgKyBTaGlmdE1peCh5KSAqIGsx
ICsgeiwKKyAgICAgICAgICAgICAgICAgICBIYXNoTGVuMTYodi5zZWNvbmQsIHcuc2Vjb25kKSAr
IHgpOworfQorCit1aW50NjRfdCBDaXR5SGFzaDY0V2l0aFNlZWQoY29uc3QgY2hhciAqcywgc2l6
ZV90IGxlbiwgdWludDY0X3Qgc2VlZCkgeworICByZXR1cm4gQ2l0eUhhc2g2NFdpdGhTZWVkcyhz
LCBsZW4sIGsyLCBzZWVkKTsKK30KKwordWludDY0X3QgQ2l0eUhhc2g2NFdpdGhTZWVkcyhjb25z
dCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50NjRfdCBzZWVkMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ2NF90IHNlZWQxKSB7CisgIHJldHVybiBIYXNoTGVuMTYoQ2l0eUhhc2g2
NChzLCBsZW4pIC0gc2VlZDAsIHNlZWQxKTsKK30KKworLy8gQSBzdWJyb3V0aW5lIGZvciBDaXR5
SGFzaDEyOCgpLiAgUmV0dXJucyBhIGRlY2VudCAxMjgtYml0IGhhc2ggZm9yIHN0cmluZ3MKKy8v
IG9mIGFueSBsZW5ndGggcmVwcmVzZW50YWJsZSBpbiBzaWduZWQgbG9uZy4gIEJhc2VkIG9uIENp
dHkgYW5kIE11cm11ci4KK3N0YXRpYyB1aW50MTI4IENpdHlNdXJtdXIoY29uc3QgY2hhciAqcywg
c2l6ZV90IGxlbiwgdWludDEyOCBzZWVkKSB7CisgIHVpbnQ2NF90IGEgPSBVaW50MTI4TG93NjQo
c2VlZCk7CisgIHVpbnQ2NF90IGIgPSBVaW50MTI4SGlnaDY0KHNlZWQpOworICB1aW50NjRfdCBj
ID0gMDsKKyAgdWludDY0X3QgZCA9IDA7CisgIGludDY0X3QgbCA9IGxlbiAtIDE2OworICBpZiAo
bCA8PSAwKSB7ICAvLyBsZW4gPD0gMTYKKyAgICBhID0gU2hpZnRNaXgoYSAqIGsxKSAqIGsxOwor
ICAgIGMgPSBiICogazEgKyBIYXNoTGVuMHRvMTYocywgbGVuKTsKKyAgICBkID0gU2hpZnRNaXgo
YSArIChsZW4gPj0gOCA/IEZldGNoNjQocykgOiBjKSk7CisgIH0gZWxzZSB7ICAvLyBsZW4gPiAx
NgorICAgIGMgPSBIYXNoTGVuMTYoRmV0Y2g2NChzICsgbGVuIC0gOCkgKyBrMSwgYSk7CisgICAg
ZCA9IEhhc2hMZW4xNihiICsgbGVuLCBjICsgRmV0Y2g2NChzICsgbGVuIC0gMTYpKTsKKyAgICBh
ICs9IGQ7CisgICAgZG8geworICAgICAgYSBePSBTaGlmdE1peChGZXRjaDY0KHMpICogazEpICog
azE7CisgICAgICBhICo9IGsxOworICAgICAgYiBePSBhOworICAgICAgYyBePSBTaGlmdE1peChG
ZXRjaDY0KHMgKyA4KSAqIGsxKSAqIGsxOworICAgICAgYyAqPSBrMTsKKyAgICAgIGQgXj0gYzsK
KyAgICAgIHMgKz0gMTY7CisgICAgICBsIC09IDE2OworICAgIH0gd2hpbGUgKGwgPiAwKTsKKyAg
fQorICBhID0gSGFzaExlbjE2KGEsIGMpOworICBiID0gSGFzaExlbjE2KGQsIGIpOworICByZXR1
cm4gdWludDEyOChhIF4gYiwgSGFzaExlbjE2KGIsIGEpKTsKK30KKwordWludDEyOCBDaXR5SGFz
aDEyOFdpdGhTZWVkKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQxMjggc2VlZCkgewor
ICBpZiAobGVuIDwgMTI4KSB7CisgICAgcmV0dXJuIENpdHlNdXJtdXIocywgbGVuLCBzZWVkKTsK
KyAgfQorCisgIC8vIFdlIGV4cGVjdCBsZW4gPj0gMTI4IHRvIGJlIHRoZSBjb21tb24gY2FzZS4g
IEtlZXAgNTYgYnl0ZXMgb2Ygc3RhdGU6CisgIC8vIHYsIHcsIHgsIHksIGFuZCB6LgorICBzdGQ6
OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiB2LCB3OworICB1aW50NjRfdCB4ID0gVWludDEyOExv
dzY0KHNlZWQpOworICB1aW50NjRfdCB5ID0gVWludDEyOEhpZ2g2NChzZWVkKTsKKyAgdWludDY0
X3QgeiA9IGxlbiAqIGsxOworICB2LmZpcnN0ID0gUm90YXRlKHkgXiBrMSwgNDkpICogazEgKyBG
ZXRjaDY0KHMpOworICB2LnNlY29uZCA9IFJvdGF0ZSh2LmZpcnN0LCA0MikgKiBrMSArIEZldGNo
NjQocyArIDgpOworICB3LmZpcnN0ID0gUm90YXRlKHkgKyB6LCAzNSkgKiBrMSArIHg7CisgIHcu
c2Vjb25kID0gUm90YXRlKHggKyBGZXRjaDY0KHMgKyA4OCksIDUzKSAqIGsxOworCisgIC8vIFRo
aXMgaXMgdGhlIHNhbWUgaW5uZXIgbG9vcCBhcyBDaXR5SGFzaDY0KCksIG1hbnVhbGx5IHVucm9s
bGVkLgorICBkbyB7CisgICAgeCA9IFJvdGF0ZSh4ICsgeSArIHYuZmlyc3QgKyBGZXRjaDY0KHMg
KyA4KSwgMzcpICogazE7CisgICAgeSA9IFJvdGF0ZSh5ICsgdi5zZWNvbmQgKyBGZXRjaDY0KHMg
KyA0OCksIDQyKSAqIGsxOworICAgIHggXj0gdy5zZWNvbmQ7CisgICAgeSArPSB2LmZpcnN0ICsg
RmV0Y2g2NChzICsgNDApOworICAgIHogPSBSb3RhdGUoeiArIHcuZmlyc3QsIDMzKSAqIGsxOwor
ICAgIHYgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRzKHMsIHYuc2Vjb25kICogazEsIHggKyB3LmZp
cnN0KTsKKyAgICB3ID0gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhzICsgMzIsIHogKyB3LnNlY29u
ZCwgeSArIEZldGNoNjQocyArIDE2KSk7CisgICAgc3RkOjpzd2FwKHosIHgpOworICAgIHMgKz0g
NjQ7CisgICAgeCA9IFJvdGF0ZSh4ICsgeSArIHYuZmlyc3QgKyBGZXRjaDY0KHMgKyA4KSwgMzcp
ICogazE7CisgICAgeSA9IFJvdGF0ZSh5ICsgdi5zZWNvbmQgKyBGZXRjaDY0KHMgKyA0OCksIDQy
KSAqIGsxOworICAgIHggXj0gdy5zZWNvbmQ7CisgICAgeSArPSB2LmZpcnN0ICsgRmV0Y2g2NChz
ICsgNDApOworICAgIHogPSBSb3RhdGUoeiArIHcuZmlyc3QsIDMzKSAqIGsxOworICAgIHYgPSBX
ZWFrSGFzaExlbjMyV2l0aFNlZWRzKHMsIHYuc2Vjb25kICogazEsIHggKyB3LmZpcnN0KTsKKyAg
ICB3ID0gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhzICsgMzIsIHogKyB3LnNlY29uZCwgeSArIEZl
dGNoNjQocyArIDE2KSk7CisgICAgc3RkOjpzd2FwKHosIHgpOworICAgIHMgKz0gNjQ7CisgICAg
bGVuIC09IDEyODsKKyAgfSB3aGlsZSAoQUJTTF9QUkVESUNUX1RSVUUobGVuID49IDEyOCkpOwor
ICB4ICs9IFJvdGF0ZSh2LmZpcnN0ICsgeiwgNDkpICogazA7CisgIHkgPSB5ICogazAgKyBSb3Rh
dGUody5zZWNvbmQsIDM3KTsKKyAgeiA9IHogKiBrMCArIFJvdGF0ZSh3LmZpcnN0LCAyNyk7Cisg
IHcuZmlyc3QgKj0gOTsKKyAgdi5maXJzdCAqPSBrMDsKKyAgLy8gSWYgMCA8IGxlbiA8IDEyOCwg
aGFzaCB1cCB0byA0IGNodW5rcyBvZiAzMiBieXRlcyBlYWNoIGZyb20gdGhlIGVuZCBvZiBzLgor
ICBmb3IgKHNpemVfdCB0YWlsX2RvbmUgPSAwOyB0YWlsX2RvbmUgPCBsZW47KSB7CisgICAgdGFp
bF9kb25lICs9IDMyOworICAgIHkgPSBSb3RhdGUoeCArIHksIDQyKSAqIGswICsgdi5zZWNvbmQ7
CisgICAgdy5maXJzdCArPSBGZXRjaDY0KHMgKyBsZW4gLSB0YWlsX2RvbmUgKyAxNik7CisgICAg
eCA9IHggKiBrMCArIHcuZmlyc3Q7CisgICAgeiArPSB3LnNlY29uZCArIEZldGNoNjQocyArIGxl
biAtIHRhaWxfZG9uZSk7CisgICAgdy5zZWNvbmQgKz0gdi5maXJzdDsKKyAgICB2ID0gV2Vha0hh
c2hMZW4zMldpdGhTZWVkcyhzICsgbGVuIC0gdGFpbF9kb25lLCB2LmZpcnN0ICsgeiwgdi5zZWNv
bmQpOworICAgIHYuZmlyc3QgKj0gazA7CisgIH0KKyAgLy8gQXQgdGhpcyBwb2ludCBvdXIgNTYg
Ynl0ZXMgb2Ygc3RhdGUgc2hvdWxkIGNvbnRhaW4gbW9yZSB0aGFuCisgIC8vIGVub3VnaCBpbmZv
cm1hdGlvbiBmb3IgYSBzdHJvbmcgMTI4LWJpdCBoYXNoLiAgV2UgdXNlIHR3bworICAvLyBkaWZm
ZXJlbnQgNTYtYnl0ZS10by04LWJ5dGUgaGFzaGVzIHRvIGdldCBhIDE2LWJ5dGUgZmluYWwgcmVz
dWx0LgorICB4ID0gSGFzaExlbjE2KHgsIHYuZmlyc3QpOworICB5ID0gSGFzaExlbjE2KHkgKyB6
LCB3LmZpcnN0KTsKKyAgcmV0dXJuIHVpbnQxMjgoSGFzaExlbjE2KHggKyB2LnNlY29uZCwgdy5z
ZWNvbmQpICsgeSwKKyAgICAgICAgICAgICAgICAgSGFzaExlbjE2KHggKyB3LnNlY29uZCwgeSAr
IHYuc2Vjb25kKSk7Cit9CisKK3VpbnQxMjggQ2l0eUhhc2gxMjgoY29uc3QgY2hhciAqcywgc2l6
ZV90IGxlbikgeworICByZXR1cm4gbGVuID49IDE2CisgICAgICAgICAgICAgPyBDaXR5SGFzaDEy
OFdpdGhTZWVkKHMgKyAxNiwgbGVuIC0gMTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQxMjgoRmV0Y2g2NChzKSwgRmV0Y2g2NChzICsgOCkgKyBrMCkpCisgICAgICAg
ICAgICAgOiBDaXR5SGFzaDEyOFdpdGhTZWVkKHMsIGxlbiwgdWludDEyOChrMCwgazEpKTsKK30K
K30gIC8vIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisj
aWZkZWYgX19TU0U0XzJfXworI2luY2x1ZGUgPG5tbWludHJpbi5oPgorI2luY2x1ZGUgImFic2wv
aGFzaC9pbnRlcm5hbC9jaXR5X2NyYy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
aGFzaF9pbnRlcm5hbCB7CisKKy8vIFJlcXVpcmVzIGxlbiA+PSAyNDAuCitzdGF0aWMgdm9pZCBD
aXR5SGFzaENyYzI1NkxvbmcoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDMyX3Qgc2Vl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqcmVzdWx0KSB7Cisg
IHVpbnQ2NF90IGEgPSBGZXRjaDY0KHMgKyA1NikgKyBrMDsKKyAgdWludDY0X3QgYiA9IEZldGNo
NjQocyArIDk2KSArIGswOworICB1aW50NjRfdCBjID0gcmVzdWx0WzBdID0gSGFzaExlbjE2KGIs
IGxlbik7CisgIHVpbnQ2NF90IGQgPSByZXN1bHRbMV0gPSBGZXRjaDY0KHMgKyAxMjApICogazAg
KyBsZW47CisgIHVpbnQ2NF90IGUgPSBGZXRjaDY0KHMgKyAxODQpICsgc2VlZDsKKyAgdWludDY0
X3QgZiA9IDA7CisgIHVpbnQ2NF90IGcgPSAwOworICB1aW50NjRfdCBoID0gYyArIGQ7CisgIHVp
bnQ2NF90IHggPSBzZWVkOworICB1aW50NjRfdCB5ID0gMDsKKyAgdWludDY0X3QgeiA9IDA7CisK
KyAgLy8gMjQwIGJ5dGVzIG9mIGlucHV0IHBlciBpdGVyLgorICBzaXplX3QgaXRlcnMgPSBsZW4g
LyAyNDA7CisgIGxlbiAtPSBpdGVycyAqIDI0MDsKKyAgZG8geworI3VuZGVmIENIVU5LCisjZGVm
aW5lIENIVU5LKHIpICAgICAgICAgICAgICAgXAorICBQRVJNVVRFMyh4LCB6LCB5KTsgICAgICAg
ICAgIFwKKyAgYiArPSBGZXRjaDY0KHMpOyAgICAgICAgICAgICBcCisgIGMgKz0gRmV0Y2g2NChz
ICsgOCk7ICAgICAgICAgXAorICBkICs9IEZldGNoNjQocyArIDE2KTsgICAgICAgIFwKKyAgZSAr
PSBGZXRjaDY0KHMgKyAyNCk7ICAgICAgICBcCisgIGYgKz0gRmV0Y2g2NChzICsgMzIpOyAgICAg
ICAgXAorICBhICs9IGI7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaCArPSBmOyAgICAgICAg
ICAgICAgICAgICAgICBcCisgIGIgKz0gYzsgICAgICAgICAgICAgICAgICAgICAgXAorICBmICs9
IGQ7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZyArPSBlOyAgICAgICAgICAgICAgICAgICAg
ICBcCisgIGUgKz0gejsgICAgICAgICAgICAgICAgICAgICAgXAorICBnICs9IHg7ICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgeiA9IF9tbV9jcmMzMl91NjQoeiwgYiArIGcpOyBcCisgIHkgPSBf
bW1fY3JjMzJfdTY0KHksIGUgKyBoKTsgXAorICB4ID0gX21tX2NyYzMyX3U2NCh4LCBmICsgYSk7
IFwKKyAgZSA9IFJvdGF0ZShlLCByKTsgICAgICAgICAgICBcCisgIGMgKz0gZTsgICAgICAgICAg
ICAgICAgICAgICAgXAorICBzICs9IDQwCisKKyAgICBDSFVOSygwKTsKKyAgICBQRVJNVVRFMyhh
LCBoLCBjKTsKKyAgICBDSFVOSygzMyk7CisgICAgUEVSTVVURTMoYSwgaCwgZik7CisgICAgQ0hV
TksoMCk7CisgICAgUEVSTVVURTMoYiwgaCwgZik7CisgICAgQ0hVTksoNDIpOworICAgIFBFUk1V
VEUzKGIsIGgsIGQpOworICAgIENIVU5LKDApOworICAgIFBFUk1VVEUzKGIsIGgsIGUpOworICAg
IENIVU5LKDMzKTsKKyAgICBQRVJNVVRFMyhhLCBoLCBlKTsKKyAgfSB3aGlsZSAoLS1pdGVycyA+
IDApOworCisgIHdoaWxlIChsZW4gPj0gNDApIHsKKyAgICBDSFVOSygyOSk7CisgICAgZSBePSBS
b3RhdGUoYSwgMjApOworICAgIGggKz0gUm90YXRlKGIsIDMwKTsKKyAgICBnIF49IFJvdGF0ZShj
LCA0MCk7CisgICAgZiArPSBSb3RhdGUoZCwgMzQpOworICAgIFBFUk1VVEUzKGMsIGgsIGcpOwor
ICAgIGxlbiAtPSA0MDsKKyAgfQorICBpZiAobGVuID4gMCkgeworICAgIHMgPSBzICsgbGVuIC0g
NDA7CisgICAgQ0hVTksoMzMpOworICAgIGUgXj0gUm90YXRlKGEsIDQzKTsKKyAgICBoICs9IFJv
dGF0ZShiLCA0Mik7CisgICAgZyBePSBSb3RhdGUoYywgNDEpOworICAgIGYgKz0gUm90YXRlKGQs
IDQwKTsKKyAgfQorICByZXN1bHRbMF0gXj0gaDsKKyAgcmVzdWx0WzFdIF49IGc7CisgIGcgKz0g
aDsKKyAgYSA9IEhhc2hMZW4xNihhLCBnICsgeik7CisgIHggKz0geSA8PCAzMjsKKyAgYiArPSB4
OworICBjID0gSGFzaExlbjE2KGMsIHopICsgaDsKKyAgZCA9IEhhc2hMZW4xNihkLCBlICsgcmVz
dWx0WzBdKTsKKyAgZyArPSBlOworICBoICs9IEhhc2hMZW4xNih4LCBmKTsKKyAgZSA9IEhhc2hM
ZW4xNihhLCBkKSArIGc7CisgIHogPSBIYXNoTGVuMTYoYiwgYykgKyBhOworICB5ID0gSGFzaExl
bjE2KGcsIGgpICsgYzsKKyAgcmVzdWx0WzBdID0gZSArIHogKyB5ICsgeDsKKyAgYSA9IFNoaWZ0
TWl4KChhICsgeSkgKiBrMCkgKiBrMCArIGI7CisgIHJlc3VsdFsxXSArPSBhICsgcmVzdWx0WzBd
OworICBhID0gU2hpZnRNaXgoYSAqIGswKSAqIGswICsgYzsKKyAgcmVzdWx0WzJdID0gYSArIHJl
c3VsdFsxXTsKKyAgYSA9IFNoaWZ0TWl4KChhICsgZSkgKiBrMCkgKiBrMDsKKyAgcmVzdWx0WzNd
ID0gYSArIHJlc3VsdFsyXTsKK30KKworLy8gUmVxdWlyZXMgbGVuIDwgMjQwLgorc3RhdGljIHZv
aWQgQ2l0eUhhc2hDcmMyNTZTaG9ydChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50NjRf
dCAqcmVzdWx0KSB7CisgIGNoYXIgYnVmWzI0MF07CisgIG1lbWNweShidWYsIHMsIGxlbik7Cisg
IG1lbXNldChidWYgKyBsZW4sIDAsIDI0MCAtIGxlbik7CisgIENpdHlIYXNoQ3JjMjU2TG9uZyhi
dWYsIDI0MCwgfnN0YXRpY19jYXN0PHVpbnQzMl90PihsZW4pLCByZXN1bHQpOworfQorCit2b2lk
IENpdHlIYXNoQ3JjMjU2KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90ICpyZXN1
bHQpIHsKKyAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKGxlbiA+PSAyNDApKSB7CisgICAgQ2l0eUhh
c2hDcmMyNTZMb25nKHMsIGxlbiwgMCwgcmVzdWx0KTsKKyAgfSBlbHNlIHsKKyAgICBDaXR5SGFz
aENyYzI1NlNob3J0KHMsIGxlbiwgcmVzdWx0KTsKKyAgfQorfQorCit1aW50MTI4IENpdHlIYXNo
Q3JjMTI4V2l0aFNlZWQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDEyOCBzZWVkKSB7
CisgIGlmIChsZW4gPD0gOTAwKSB7CisgICAgcmV0dXJuIENpdHlIYXNoMTI4V2l0aFNlZWQocywg
bGVuLCBzZWVkKTsKKyAgfSBlbHNlIHsKKyAgICB1aW50NjRfdCByZXN1bHRbNF07CisgICAgQ2l0
eUhhc2hDcmMyNTYocywgbGVuLCByZXN1bHQpOworICAgIHVpbnQ2NF90IHUgPSBVaW50MTI4SGln
aDY0KHNlZWQpICsgcmVzdWx0WzBdOworICAgIHVpbnQ2NF90IHYgPSBVaW50MTI4TG93NjQoc2Vl
ZCkgKyByZXN1bHRbMV07CisgICAgcmV0dXJuIHVpbnQxMjgoSGFzaExlbjE2KHUsIHYgKyByZXN1
bHRbMl0pLAorICAgICAgICAgICAgICAgICAgIEhhc2hMZW4xNihSb3RhdGUodiwgMzIpLCB1ICog
azAgKyByZXN1bHRbM10pKTsKKyAgfQorfQorCit1aW50MTI4IENpdHlIYXNoQ3JjMTI4KGNvbnN0
IGNoYXIgKnMsIHNpemVfdCBsZW4pIHsKKyAgaWYgKGxlbiA8PSA5MDApIHsKKyAgICByZXR1cm4g
Q2l0eUhhc2gxMjgocywgbGVuKTsKKyAgfSBlbHNlIHsKKyAgICB1aW50NjRfdCByZXN1bHRbNF07
CisgICAgQ2l0eUhhc2hDcmMyNTYocywgbGVuLCByZXN1bHQpOworICAgIHJldHVybiB1aW50MTI4
KHJlc3VsdFsyXSwgcmVzdWx0WzNdKTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgaGFzaF9p
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9oYXNoL2ludGVybmFsL2NpdHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU1YjM3Yjg3NWYwYjNmZDg0NjdkYTk5ZGJlZDQyOTdhYzg5ZjE4MTkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHkuaApAQCAtMCwwICsxLDEwOCBAQAor
Ly8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyBodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvY2l0eWhhc2gvCisvLworLy8gVGhpcyBmaWxlIHByb3ZpZGVzIGEgZmV3
IGZ1bmN0aW9ucyBmb3IgaGFzaGluZyBzdHJpbmdzLiAgQWxsIG9mIHRoZW0gYXJlCisvLyBoaWdo
LXF1YWxpdHkgZnVuY3Rpb25zIGluIHRoZSBzZW5zZSB0aGF0IHRoZXkgcGFzcyBzdGFuZGFyZCB0
ZXN0cyBzdWNoCisvLyBhcyBBdXN0aW4gQXBwbGVieSdzIFNNSGFzaGVyLiAgVGhleSBhcmUgYWxz
byBmYXN0LgorLy8KKy8vIEZvciA2NC1iaXQgeDg2IGNvZGUsIG9uIHNob3J0IHN0cmluZ3MsIHdl
IGRvbid0IGtub3cgb2YgYW55dGhpbmcgZmFzdGVyIHRoYW4KKy8vIENpdHlIYXNoNjQgdGhhdCBp
cyBvZiBjb21wYXJhYmxlIHF1YWxpdHkuICBXZSBiZWxpZXZlIG91ciBuZWFyZXN0IGNvbXBldGl0
b3IKKy8vIGlzIE11cm11cjMuICBGb3IgNjQtYml0IHg4NiBjb2RlLCBDaXR5SGFzaDY0IGlzIGFu
IGV4Y2VsbGVudCBjaG9pY2UgZm9yIGhhc2gKKy8vIHRhYmxlcyBhbmQgbW9zdCBvdGhlciBoYXNo
aW5nIChleGNsdWRpbmcgY3J5cHRvZ3JhcGh5KS4KKy8vCisvLyBGb3IgNjQtYml0IHg4NiBjb2Rl
LCBvbiBsb25nIHN0cmluZ3MsIHRoZSBwaWN0dXJlIGlzIG1vcmUgY29tcGxpY2F0ZWQuCisvLyBP
biBtYW55IHJlY2VudCBJbnRlbCBDUFVzLCBzdWNoIGFzIE5laGFsZW0sIFdlc3RtZXJlLCBTYW5k
eSBCcmlkZ2UsIGV0Yy4sCisvLyBDaXR5SGFzaENyYzEyOCBhcHBlYXJzIHRvIGJlIGZhc3RlciB0
aGFuIGFsbCBjb21wZXRpdG9ycyBvZiBjb21wYXJhYmxlCisvLyBxdWFsaXR5LiAgQ2l0eUhhc2gx
MjggaXMgYWxzbyBnb29kIGJ1dCBub3QgcXVpdGUgYXMgZmFzdC4gIFdlIGJlbGlldmUgb3VyCisv
LyBuZWFyZXN0IGNvbXBldGl0b3IgaXMgQm9iIEplbmtpbnMnIFNwb29reS4gIFdlIGRvbid0IGhh
dmUgZ3JlYXQgZGF0YSBmb3IKKy8vIG90aGVyIDY0LWJpdCBDUFVzLCBidXQgZm9yIGxvbmcgc3Ry
aW5ncyB3ZSBrbm93IHRoYXQgU3Bvb2t5IGlzIHNsaWdodGx5CisvLyBmYXN0ZXIgdGhhbiBDaXR5
SGFzaCBvbiBzb21lIHJlbGF0aXZlbHkgcmVjZW50IEFNRCB4ODYtNjQgQ1BVcywgZm9yIGV4YW1w
bGUuCisvLyBOb3RlIHRoYXQgQ2l0eUhhc2hDcmMxMjggaXMgZGVjbGFyZWQgaW4gY2l0eWNyYy5o
LgorLy8KKy8vIEZvciAzMi1iaXQgeDg2IGNvZGUsIHdlIGRvbid0IGtub3cgb2YgYW55dGhpbmcg
ZmFzdGVyIHRoYW4gQ2l0eUhhc2gzMiB0aGF0CisvLyBpcyBvZiBjb21wYXJhYmxlIHF1YWxpdHku
ICBXZSBiZWxpZXZlIG91ciBuZWFyZXN0IGNvbXBldGl0b3IgaXMgTXVybXVyM0EuCisvLyAoT24g
NjQtYml0IENQVXMsIGl0IGlzIHR5cGljYWxseSBmYXN0ZXIgdG8gdXNlIHRoZSBvdGhlciBDaXR5
SGFzaCB2YXJpYW50cy4pCisvLworLy8gRnVuY3Rpb25zIGluIHRoZSBDaXR5SGFzaCBmYW1pbHkg
YXJlIG5vdCBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGh5LgorLy8KKy8vIFBsZWFzZSBzZWUgQ2l0
eUhhc2gncyBSRUFETUUgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIG9uIG91ciBwZXJmb3JtYW5jZQor
Ly8gbWVhc3VyZW1lbnRzIGFuZCBzbyBvbi4KKy8vCisvLyBXQVJOSU5HOiBUaGlzIGNvZGUgaGFz
IGJlZW4gb25seSBsaWdodGx5IHRlc3RlZCBvbiBiaWctZW5kaWFuIHBsYXRmb3JtcyEKKy8vIEl0
IGlzIGtub3duIHRvIHdvcmsgd2VsbCBvbiBsaXR0bGUtZW5kaWFuIHBsYXRmb3JtcyB0aGF0IGhh
dmUgYSBzbWFsbCBwZW5hbHR5CisvLyBmb3IgdW5hbGlnbmVkIHJlYWRzLCBzdWNoIGFzIGN1cnJl
bnQgSW50ZWwgYW5kIEFNRCBtb2RlcmF0ZS10by1oaWdoLWVuZCBDUFVzLgorLy8gSXQgc2hvdWxk
IHdvcmsgb24gYWxsIDMyLWJpdCBhbmQgNjQtYml0IHBsYXRmb3JtcyB0aGF0IGFsbG93IHVuYWxp
Z25lZCByZWFkczsKKy8vIGJ1ZyByZXBvcnRzIGFyZSB3ZWxjb21lLgorLy8KKy8vIEJ5IHRoZSB3
YXksIGZvciBzb21lIGhhc2ggZnVuY3Rpb25zLCBnaXZlbiBzdHJpbmdzIGEgYW5kIGIsIHRoZSBo
YXNoCisvLyBvZiBhK2IgaXMgZWFzaWx5IGRlcml2ZWQgZnJvbSB0aGUgaGFzaGVzIG9mIGEgYW5k
IGIuICBUaGlzIHByb3BlcnR5CisvLyBkb2Vzbid0IGhvbGQgZm9yIGFueSBoYXNoIGZ1bmN0aW9u
cyBpbiB0aGlzIGZpbGUuCisKKyNpZm5kZWYgQUJTTF9IQVNIX0lOVEVSTkFMX0NJVFlfSF8KKyNk
ZWZpbmUgQUJTTF9IQVNIX0lOVEVSTkFMX0NJVFlfSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgor
I2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gZm9yIHNpemVfdC4KKyNpbmNsdWRlIDx1dGlsaXR5Pgor
CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBoYXNoX2ludGVybmFsIHsKKwordHlwZWRl
ZiBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiB1aW50MTI4OworCitpbmxpbmUgdWludDY0
X3QgVWludDEyOExvdzY0KGNvbnN0IHVpbnQxMjggJngpIHsgcmV0dXJuIHguZmlyc3Q7IH0KK2lu
bGluZSB1aW50NjRfdCBVaW50MTI4SGlnaDY0KGNvbnN0IHVpbnQxMjggJngpIHsgcmV0dXJuIHgu
c2Vjb25kOyB9CisKKy8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4KK3VpbnQ2NF90
IENpdHlIYXNoNjQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbik7CisKKy8vIEhhc2ggZnVuY3Rp
b24gZm9yIGEgYnl0ZSBhcnJheS4gIEZvciBjb252ZW5pZW5jZSwgYSA2NC1iaXQgc2VlZCBpcyBh
bHNvCisvLyBoYXNoZWQgaW50byB0aGUgcmVzdWx0LgordWludDY0X3QgQ2l0eUhhc2g2NFdpdGhT
ZWVkKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90IHNlZWQpOworCisvLyBIYXNo
IGZ1bmN0aW9uIGZvciBhIGJ5dGUgYXJyYXkuICBGb3IgY29udmVuaWVuY2UsIHR3byBzZWVkcyBh
cmUgYWxzbworLy8gaGFzaGVkIGludG8gdGhlIHJlc3VsdC4KK3VpbnQ2NF90IENpdHlIYXNoNjRX
aXRoU2VlZHMoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDY0X3Qgc2VlZDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBzZWVkMSk7CisKKy8vIEhhc2ggZnVuY3Rp
b24gZm9yIGEgYnl0ZSBhcnJheS4KK3VpbnQxMjggQ2l0eUhhc2gxMjgoY29uc3QgY2hhciAqcywg
c2l6ZV90IGxlbik7CisKKy8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4gIEZvciBj
b252ZW5pZW5jZSwgYSAxMjgtYml0IHNlZWQgaXMgYWxzbworLy8gaGFzaGVkIGludG8gdGhlIHJl
c3VsdC4KK3VpbnQxMjggQ2l0eUhhc2gxMjhXaXRoU2VlZChjb25zdCBjaGFyICpzLCBzaXplX3Qg
bGVuLCB1aW50MTI4IHNlZWQpOworCisvLyBIYXNoIGZ1bmN0aW9uIGZvciBhIGJ5dGUgYXJyYXku
ICBNb3N0IHVzZWZ1bCBpbiAzMi1iaXQgYmluYXJpZXMuCit1aW50MzJfdCBDaXR5SGFzaDMyKGNv
bnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pOworCisvLyBIYXNoIDEyOCBpbnB1dCBiaXRzIGRvd24g
dG8gNjQgYml0cyBvZiBvdXRwdXQuCisvLyBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGEgcmVhc29u
YWJseSBnb29kIGhhc2ggZnVuY3Rpb24uCitpbmxpbmUgdWludDY0X3QgSGFzaDEyOHRvNjQoY29u
c3QgdWludDEyOCAmeCkgeworICAvLyBNdXJtdXItaW5zcGlyZWQgaGFzaGluZy4KKyAgY29uc3Qg
dWludDY0X3Qga011bCA9IDB4OWRkZmVhMDhlYjM4MmQ2OVVMTDsKKyAgdWludDY0X3QgYSA9IChV
aW50MTI4TG93NjQoeCkgXiBVaW50MTI4SGlnaDY0KHgpKSAqIGtNdWw7CisgIGEgXj0gKGEgPj4g
NDcpOworICB1aW50NjRfdCBiID0gKFVpbnQxMjhIaWdoNjQoeCkgXiBhKSAqIGtNdWw7CisgIGIg
Xj0gKGIgPj4gNDcpOworICBiICo9IGtNdWw7CisgIHJldHVybiBiOworfQorCit9ICAvLyBuYW1l
c3BhY2UgaGFzaF9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBB
QlNMX0hBU0hfSU5URVJOQUxfQ0lUWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5h
bC9jaXR5X2NyYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5X2NyYy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZiZTY1NTdkMjEzZjJiNDBhOGM0NzRjNmEwYzI3OWYwYTZiY2FmMjcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfY3JjLmgKQEAgLTAsMCArMSw0MSBAQAorLy8g
Q29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyBUaGlzIGZpbGUgZGVj
bGFyZXMgdGhlIHN1YnNldCBvZiB0aGUgQ2l0eUhhc2ggZnVuY3Rpb25zIHRoYXQgcmVxdWlyZQor
Ly8gX21tX2NyYzMyX3U2NCgpLiAgU2VlIHRoZSBDaXR5SGFzaCBSRUFETUUgZm9yIGRldGFpbHMu
CisvLworLy8gRnVuY3Rpb25zIGluIHRoZSBDaXR5SGFzaCBmYW1pbHkgYXJlIG5vdCBzdWl0YWJs
ZSBmb3IgY3J5cHRvZ3JhcGh5LgorCisjaWZuZGVmIEFCU0xfSEFTSF9JTlRFUk5BTF9DSVRZX0NS
Q19IXworI2RlZmluZSBBQlNMX0hBU0hfSU5URVJOQUxfQ0lUWV9DUkNfSF8KKworI2luY2x1ZGUg
ImFic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFj
ZSBoYXNoX2ludGVybmFsIHsKKworLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5Lgor
dWludDEyOCBDaXR5SGFzaENyYzEyOChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKTsKKworLy8g
SGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LiAgRm9yIGNvbnZlbmllbmNlLCBhIDEyOC1i
aXQgc2VlZCBpcyBhbHNvCisvLyBoYXNoZWQgaW50byB0aGUgcmVzdWx0LgordWludDEyOCBDaXR5
SGFzaENyYzEyOFdpdGhTZWVkKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQxMjggc2Vl
ZCk7CisKKy8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4gIFNldHMgcmVzdWx0WzBd
IC4uLiByZXN1bHRbM10uCit2b2lkIENpdHlIYXNoQ3JjMjU2KGNvbnN0IGNoYXIgKnMsIHNpemVf
dCBsZW4sIHVpbnQ2NF90ICpyZXN1bHQpOworCit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5h
bAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxf
Q0lUWV9DUkNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eV90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc4ZGE1M2Qz
NGQwNGQ2MDExZmU4N2IwNmE3ZTI2NjEzYmRiZWY5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2hhc2gvaW50ZXJuYWwvY2l0eV90ZXN0LmNjCkBAIC0wLDAgKzEsMTgxMiBAQAorLy8gQ29weXJp
Z2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvaGFzaC9pbnRl
cm5hbC9jaXR5LmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RkaW8+Cisj
aW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpZmRlZiBfX1NT
RTRfMl9fCisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfY3JjLmgiCisjZW5kaWYK
KworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgeworCitzdGF0aWMg
Y29uc3QgdWludDY0X3QgazAgPSAweGMzYTVjODVjOTdjYjMxMjdVTEw7CitzdGF0aWMgY29uc3Qg
dWludDY0X3Qga1NlZWQwID0gMTIzNDU2NzsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBrU2VlZDEg
PSBrMDsKK3N0YXRpYyBjb25zdCB1aW50MTI4IGtTZWVkMTI4KGtTZWVkMCwga1NlZWQxKTsKK3N0
YXRpYyBjb25zdCBpbnQga0RhdGFTaXplID0gMSA8PCAyMDsKK3N0YXRpYyBjb25zdCBpbnQga1Rl
c3RTaXplID0gMzAwOworCitzdGF0aWMgY2hhciBkYXRhW2tEYXRhU2l6ZV07CisKKy8vIEluaXRp
YWxpemUgZGF0YSB0byBwc2V1ZG9yYW5kb20gdmFsdWVzLgordm9pZCBzZXR1cCgpIHsKKyAgdWlu
dDY0X3QgYSA9IDk7CisgIHVpbnQ2NF90IGIgPSA3Nzc7CisgIGZvciAoaW50IGkgPSAwOyBpIDwg
a0RhdGFTaXplOyBpKyspIHsKKyAgICBhICs9IGI7CisgICAgYiArPSBhOworICAgIGEgPSAoYSBe
IChhID4+IDQxKSkgKiBrMDsKKyAgICBiID0gKGIgXiAoYiA+PiA0MSkpICogazAgKyBpOworICAg
IHVpbnQ4X3QgdSA9IGIgPj4gMzc7CisgICAgbWVtY3B5KGRhdGEgKyBpLCAmdSwgMSk7ICAvLyB1
aW50OF90IC0+IGNoYXIKKyAgfQorfQorCisjZGVmaW5lIEMoeCkgMHgjI3gjI1VMTAorc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IHRlc3RkYXRhW2tUZXN0U2l6ZV1bMTZdID0geworICAgIHtDKDlhZTE2
YTNiMmY5MDQwNGYpLCBDKDc1MTA2ZGI4OTAyMzdhNGEpLCBDKDNmZWFjNWY2MzYwMzk3NjYpLAor
ICAgICBDKDNkZjA5ZGZjNjRjMDlhMmIpLCBDKDNjYjU0MGMzOTJlNTFlMjkpLCBDKDZiNTYzNDNm
ZWFjMDY2MyksCisgICAgIEMoNWI3YmM1MGZkOGU4YWQ5MiksIEMoM2RmMDlkZmM2NGMwOWEyYiks
IEMoM2NiNTQwYzM5MmU1MWUyOSksCisgICAgIEMoNmI1NjM0M2ZlYWMwNjYzKSwgQyg1YjdiYzUw
ZmQ4ZThhZDkyKSwgQyg5NTE2MmYyNGU2YTVmOTMwKSwKKyAgICAgQyg2ODA4YmRmNGYxZWIwNmUw
KSwgQyhiM2IxZjNhNjdiNjI0ZDgyKSwgQyhjOWE2MmYxMmJkNGNkODBiKSwKKyAgICAgQyhkYzU2
ZDE3YSl9LAorICAgIHtDKDU0MTE1MGU4N2Y0MTVlOTYpLCBDKDFhZWYwZDI0YjMxNDhhMWEpLCBD
KGJhY2MzMDBlMWU4MjM0NWEpLAorICAgICBDKGMzY2RjNDFlMWRmMzM1MTMpLCBDKDJjMTM4ZmYy
NTk2ZDQyZjYpLCBDKGY1OGU5MDgyYWVkMzA1NWYpLAorICAgICBDKDE2MmUxOTJiMjk1NzE2M2Qp
LCBDKGMzY2RjNDFlMWRmMzM1MTMpLCBDKDJjMTM4ZmYyNTk2ZDQyZjYpLAorICAgICBDKGY1OGU5
MDgyYWVkMzA1NWYpLCBDKDE2MmUxOTJiMjk1NzE2M2QpLCBDKGZiOTllODVlMGQxNmY5MGMpLAor
ICAgICBDKDYwODQ2MmMxNWJkZjI3ZTgpLCBDKGU3ZDJjNWM5NDM1NzJiNjIpLCBDKDFiYWFhOTMy
NzY0Mjc5OGMpLAorICAgICBDKDk5OTI5MzM0KX0sCisgICAge0MoZjM3ODZhNGIyNTgyN2MxKSwg
QygzNGVlMWEyYmY3NjdiZDFjKSwgQygyZjE1Y2EyZWJmYjYzMWYyKSwKKyAgICAgQygzMTQ5YmEx
ZGFjNzcyNzBkKSwgQyg3MGUyZTA3NmUzMDcwM2MpLCBDKDU5YmNjOTY1OWJjNTI5NiksCisgICAg
IEMoOWVjYmM4MTMyYWUyZjFkNyksIEMoMzE0OWJhMWRhYzc3MjcwZCksIEMoNzBlMmUwNzZlMzA3
MDNjKSwKKyAgICAgQyg1OWJjYzk2NTliYzUyOTYpLCBDKDllY2JjODEzMmFlMmYxZDcpLCBDKGEw
MWQzMDc4OWJhZDdjZjIpLAorICAgICBDKGFlMDNmZTM3MTk4MWEwZTApLCBDKDEyN2UzODgzYjg3
ODg5MzQpLCBDKGQwYWMzZDRjMGE2ZmNhMzIpLAorICAgICBDKDQyNTJlZGI3KX0sCisgICAge0Mo
ZWY5MjNhN2ExYWY3OGVhYiksIEMoNzkxNjNiMWUxZTlhOWIxOCksIEMoZGYzYjJhY2E2ZTFlNGEz
MCksCisgICAgIEMoMjE5M2ZiNzYyMGNiZjIzYiksIEMoOGI2YThmZjA2Y2RhODMwMiksIEMoMWE0
NDQ2OWFmZDNlMDkxZiksCisgICAgIEMoOGIwNDQ5Mzc2NjEyNTA2KSwgQygyMTkzZmI3NjIwY2Jm
MjNiKSwgQyg4YjZhOGZmMDZjZGE4MzAyKSwKKyAgICAgQygxYTQ0NDY5YWZkM2UwOTFmKSwgQyg4
YjA0NDkzNzY2MTI1MDYpLCBDKGU5ZDlkNDFjMzJhZDkxZDEpLAorICAgICBDKGI0NGFiMDlmNThl
M2M2MDgpLCBDKDE5ZTkxNzVmOWZjZjc4NCksIEMoODM5YjNjOTU4MWI0YTQ4MCksIEMoZWJjMzRm
M2MpfSwKKyAgICB7QygxMWRmNTkyNTk2ZjQxZDg4KSwgQyg4NDNlYzBiY2U5MDQyZjljKSwgQyhj
Y2UyZWExZTA4YjFlYjMwKSwKKyAgICAgQyg0ZDA5ZTQyZjA5Y2MzNDk1KSwgQyg2NjYyMzY2MzFi
OWYyNTNiKSwgQyhkMjhiMzc2M2NkMDJiNmEzKSwKKyAgICAgQyg0M2IyNDllNTdjNGQwYzFiKSwg
Qyg0ZDA5ZTQyZjA5Y2MzNDk1KSwgQyg2NjYyMzY2MzFiOWYyNTNiKSwKKyAgICAgQyhkMjhiMzc2
M2NkMDJiNmEzKSwgQyg0M2IyNDllNTdjNGQwYzFiKSwgQygzODg3MTAxYzhhZGVhMTAxKSwKKyAg
ICAgQyg4YTkzNTVkNGVmYzkxZGYwKSwgQygzZTYxMDk0NGNjOWZlY2ZkKSwgQyg1YmY5ZWI2MGIw
OGFjMGNlKSwKKyAgICAgQygyNmYyYjQ2Myl9LAorICAgIHtDKDgzMWY0NDhiZGM1NjAwYjMpLCBD
KDYyYTI0YmUzMTIwYTY5MTkpLCBDKDFiNDQwOThhNDFlMDEwZGEpLAorICAgICBDKGRjMDdkZjUz
Yjk0OWM2YiksIEMoZDJiMTFiMjA4MWFlYjAwMiksIEMoZDIxMmIwMmMxYjEzZjc3MiksCisgICAg
IEMoYzBiZWQyOTdiNGJlMTkxMiksIEMoZGMwN2RmNTNiOTQ5YzZiKSwgQyhkMmIxMWIyMDgxYWVi
MDAyKSwKKyAgICAgQyhkMjEyYjAyYzFiMTNmNzcyKSwgQyhjMGJlZDI5N2I0YmUxOTEyKSwgQyg2
ODJkM2QyYWQzMDRlNGFmKSwKKyAgICAgQyg0MGU5MTEyYTY1NTQzN2ExKSwgQygyNjhiMDlmN2Vl
MDk4NDNmKSwgQyg2Yjk2OThkNDM4NTljYTQ3KSwKKyAgICAgQyhiMDQyYzA0Nyl9LAorICAgIHtD
KDNlY2E4MDNlNzAzMDQ4OTQpLCBDKGQ4MGRlNzY3ZTRhOTIwYSksIEMoYTUxY2ZiYjI5MmVmZDUz
ZCksCisgICAgIEMoZDE4M2RjZGE1ZjczZWRmYSksIEMoM2E5M2NiZjQwZjMwMTI4YyksIEMoMWE5
MjU0NGQwYjQxZGJkYSksCisgICAgIEMoYWVjMmM0YmVlODE5NzVlMSksIEMoZDE4M2RjZGE1Zjcz
ZWRmYSksIEMoM2E5M2NiZjQwZjMwMTI4YyksCisgICAgIEMoMWE5MjU0NGQwYjQxZGJkYSksIEMo
YWVjMmM0YmVlODE5NzVlMSksIEMoNWY5MTgxNGQxMTI2YmE0YiksCisgICAgIEMoZjhhYzU3ZWVl
ODdmY2YxZiksIEMoYzU1YzY0NGE1ZDAwMjNjZCksIEMoYWRiNzYxZTgyNzgyNWZmMiksCisgICAg
IEMoZTczYmIwYTgpfSwKKyAgICB7QygxYjVhMDYzZmI0YzdmOWYxKSwgQygzMThkYmMyNGFmNjZk
ZWU5KSwgQygxMGVmN2IzMmQ1YzcxOWFmKSwKKyAgICAgQyhiMTQwYTAyZWY1Yzk3NzEyKSwgQyhi
N2QwMGVmMDY1YjUxYjMzKSwgQyg2MzUxMjFkNTMyODk3ZDk4KSwKKyAgICAgQyg1MzJkYWYyMWIz
MTJhNmQ2KSwgQyhiMTQwYTAyZWY1Yzk3NzEyKSwgQyhiN2QwMGVmMDY1YjUxYjMzKSwKKyAgICAg
Qyg2MzUxMjFkNTMyODk3ZDk4KSwgQyg1MzJkYWYyMWIzMTJhNmQ2KSwgQyhjMGIwOWI3NWQ5NDM5
MTApLAorICAgICBDKDhjODRkZmI1ZWYyYThlOTYpLCBDKGU1YzA2MDM0YjAzNTM0MzMpLCBDKDMx
NzBmYWYxYzMzYTQ1ZGQpLAorICAgICBDKDkxZGZkZDc1KX0sCisgICAge0MoYTBmMTAxNDlhMGU1
MzhkNiksIEMoNjlkMDA4YzIwZjg3NDE5ZiksIEMoNDFiMzYzNzYxODViM2U5ZSksCisgICAgIEMo
MjZiNjY4OTk2MGNjZjgxZCksIEMoNTVmMjNiMjdiYjllZmQ5NCksIEMoM2ExN2Y2MTY2ZGQ3NjVk
YiksCisgICAgIEMoYzg5MWE4YTYyOTMxZTc4MiksIEMoMjZiNjY4OTk2MGNjZjgxZCksIEMoNTVm
MjNiMjdiYjllZmQ5NCksCisgICAgIEMoM2ExN2Y2MTY2ZGQ3NjVkYiksIEMoYzg5MWE4YTYyOTMx
ZTc4MiksIEMoMjM4NTJkYzM3ZGRkMjYwNyksCisgICAgIEMoOGI3ZjFiMWVjODk3ODI5ZSksIEMo
ZDFkNjk0NTJhNTRlZWQ4YSksIEMoNTY0MzFmMmJkNzY2ZWMyNCksCisgICAgIEMoYzg3Zjk1ZGUp
fSwKKyAgICB7QyhmYjhkOWM3MDY2MGI5MTBiKSwgQyhhNDViMGNjMzQ3NmJmZjFiKSwgQyhiMjhk
MTk5NjE0NGYwMjA3KSwKKyAgICAgQyg5OGVjMzExMTNlNWUzNWQyKSwgQyg1ZTRhZWI4NTNmMWI5
YWE3KSwgQyhiY2Y1YzhmZTQ0NjViN2M4KSwKKyAgICAgQyhiMWVhM2E4MjQzOTk2ZjE1KSwgQyg5
OGVjMzExMTNlNWUzNWQyKSwgQyg1ZTRhZWI4NTNmMWI5YWE3KSwKKyAgICAgQyhiY2Y1YzhmZTQ0
NjViN2M4KSwgQyhiMWVhM2E4MjQzOTk2ZjE1KSwgQyhjYWJiY2NlZGI2NDA3NTcxKSwKKyAgICAg
QyhkMWU0MGE4NGM0NDVlYzNhKSwgQygzMzMwMmFhOTA4Y2Y0MDM5KSwgQyg5ZjE1Zjc5MjExYjVj
ZGY4KSwKKyAgICAgQygzZjU1MzhlZil9LAorICAgIHtDKDIzNjgyN2JlYWUyODJhNDYpLCBDKGU0
Mzk3MDIyMTEzOWM5NDYpLCBDKDRmM2FjNmZhYTgzN2EzYWEpLAorICAgICBDKDcxZmVjMGY5NzIy
NDg5MTUpLCBDKDIxNzBlYzIwNjFmMjQ1NzQpLCBDKDllYjM0NmI2Y2FhMzZlODIpLAorICAgICBD
KDI5MDhmMGZkYmNhNDhlNzMpLCBDKDcxZmVjMGY5NzIyNDg5MTUpLCBDKDIxNzBlYzIwNjFmMjQ1
NzQpLAorICAgICBDKDllYjM0NmI2Y2FhMzZlODIpLCBDKDI5MDhmMGZkYmNhNDhlNzMpLCBDKDgx
MDFjOTlmMDdjNjRhYmIpLAorICAgICBDKGI5ZjRiMDJiMWI2YTk2YTcpLCBDKDU4M2EyYjEwY2Qy
MjJmODgpLCBDKDE5OWRhZTRjZjlkYjI0YyksIEMoNzBlYjFhMWYpfSwKKyAgICB7QyhjMzg1ZTQz
NTEzNmVjZjdjKSwgQyhkOWQxNzM2OGZmNmM0YTA4KSwgQygxYjMxZWVkNGU1MjUxYTY3KSwKKyAg
ICAgQyhkZjAxYTMyMmM0M2E2MjAwKSwgQygyOThiNjVhMTcxNGI1YTdlKSwgQyg5MzNiODNmMGFl
ZGYyM2MpLAorICAgICBDKDE1N2JjYjQ0ZDYzZjc2NWEpLCBDKGRmMDFhMzIyYzQzYTYyMDApLCBD
KDI5OGI2NWExNzE0YjVhN2UpLAorICAgICBDKDkzM2I4M2YwYWVkZjIzYyksIEMoMTU3YmNiNDRk
NjNmNzY1YSksIEMoZDZlOWZjN2EyNzJkOGI1MSksCisgICAgIEMoM2VlNTA3M2VmMWE5Yjc3Nyks
IEMoNjMxNDllMzFmYWMwMmM1OSksIEMoMmY3OTc5ZmY2MzZiYTFkOCksCisgICAgIEMoY2ZkNjNi
ODMpfSwKKyAgICB7QyhlM2Y2ODI4YjYwMTcwODZkKSwgQygyMWI0ZDE5MDA1NTRiM2IwKSwgQyhi
ZWYzOGJlMTgwOWUyNGYxKSwKKyAgICAgQyhkOTMyNTE3NTg5ODVlZTZjKSwgQygzMmE5ZTlmODJi
YTJhOTMyKSwgQygzODIyYWFjYWE5NWYzMzI5KSwKKyAgICAgQyhkYjM0OWIyZjkwYTQ5MGQ4KSwg
QyhkOTMyNTE3NTg5ODVlZTZjKSwgQygzMmE5ZTlmODJiYTJhOTMyKSwKKyAgICAgQygzODIyYWFj
YWE5NWYzMzI5KSwgQyhkYjM0OWIyZjkwYTQ5MGQ4KSwgQyg4ZDQ5MTk0YTg5NGExOWNhKSwKKyAg
ICAgQyg3OWE3OGIwNmU0MjczOGU2KSwgQyg3ZTBmMWVkYTNkMzkwYzY2KSwgQygxYzI5MWQ3ZTY0
MTEwMGE1KSwKKyAgICAgQyg4OTRhNTJlZil9LAorICAgIHtDKDg1MWZmZjI4NTU2MWRjYTApLCBD
KDRkMTI3N2Q3M2NkZjQxNmYpLCBDKDI4Y2NmZmE2MTAxMGViZTIpLAorICAgICBDKDc3YTRjY2Fj
ZDEzMWQ5ZWUpLCBDKGUxZDA4ZWViMmYwZTI5YWEpLCBDKDcwYjllMzA1MTM4M2ZhNDUpLAorICAg
ICBDKDU4MmQwMTIwNDI1Y2FiYSksIEMoNzdhNGNjYWNkMTMxZDllZSksIEMoZTFkMDhlZWIyZjBl
MjlhYSksCisgICAgIEMoNzBiOWUzMDUxMzgzZmE0NSksIEMoNTgyZDAxMjA0MjVjYWJhKSwgQyhh
NzQwZWVmMTg0NmU0NTY0KSwKKyAgICAgQyg1NzJkZGRiNzRhYzNhZTAwKSwgQyhmZGI1Y2E5NTc5
MTYzYmJkKSwgQyhhNjQ5YjliNzk5YzYxNWQyKSwKKyAgICAgQyg5Y2RlNmE1NCl9LAorICAgIHtD
KDYxMTUyYTYzNTk1YTk2ZDkpLCBDKGQxYTNhOTFlZjNhN2JhNDUpLCBDKDQ0M2I2YmI0YTQ5M2Fk
MGMpLAorICAgICBDKGExNTQyOTZkMTEzNjJkMDYpLCBDKGQwZjBiZjFmMWNiMDJmYzEpLCBDKGNj
Yjg3ZTA5MzA5ZjkwZDEpLAorICAgICBDKGIyNGE4ZTQ4ODE5MTExMDEpLCBDKGExNTQyOTZkMTEz
NjJkMDYpLCBDKGQwZjBiZjFmMWNiMDJmYzEpLAorICAgICBDKGNjYjg3ZTA5MzA5ZjkwZDEpLCBD
KGIyNGE4ZTQ4ODE5MTExMDEpLCBDKDFhNDgxYjQ1Mjg1NTlmNTgpLAorICAgICBDKGJmODM3YTMx
NTA4OTY5OTUpLCBDKDQ5ODllZjZiOTQxYTM3NTcpLCBDKDJlNzI1YWI3MmQwYjI5NDgpLAorICAg
ICBDKDZjNDg5OGQ1KX0sCisgICAge0MoNDQ0NzNlMDNiZTMwNmM4OCksIEMoMzAwOTc3NjFmODcy
NDcyYSksIEMoOWZkMWI2NjliZmFkODJkNyksCisgICAgIEMoM2JhYjE4YjE2NDM5Njc4MyksIEMo
NDdlMzg1ZmY5ZDRjMDZmKSwgQygxODA2MjA4MWJmNTU4ZGYpLAorICAgICBDKDYzNDE2ZWI2OGYx
MDRhMzYpLCBDKDNiYWIxOGIxNjQzOTY3ODMpLCBDKDQ3ZTM4NWZmOWQ0YzA2ZiksCisgICAgIEMo
MTgwNjIwODFiZjU1OGRmKSwgQyg2MzQxNmViNjhmMTA0YTM2KSwgQyg0YWJkYTE1NjBjNDdhYzgw
KSwKKyAgICAgQygxZWEwZTYzZGM2NTg3YWVlKSwgQygzM2VjNzlkOTJlYmMxZGUpLCBDKDk0Zjlk
Y2NlZjc3MWUwNDgpLCBDKDEzZTE5NzhlKX0sCisgICAge0MoM2VhZDVmMjFkMzQ0MDU2KSwgQyhm
YjY0MjAzOTNjZmIwNWMzKSwgQyg0MDc5MzIzOTRjYmJkMzAzKSwKKyAgICAgQyhhYzA1OTYxN2Y1
OTA2NjczKSwgQyg5NGQ1MGQzZGNkMzA2OWE3KSwgQygyYjI2YzNiOTJkZWEwZjApLAorICAgICBD
KDk5YjczNzRjYzc4ZmMzZmIpLCBDKGFjMDU5NjE3ZjU5MDY2NzMpLCBDKDk0ZDUwZDNkY2QzMDY5
YTcpLAorICAgICBDKDJiMjZjM2I5MmRlYTBmMCksIEMoOTliNzM3NGNjNzhmYzNmYiksIEMoMWE4
ZTNjNzNjZGQ0MGVlOCksCisgICAgIEMoY2JiNWZjYTA2NzQ3ZjQ1YiksIEMoY2VlYzQ0MjM4YjI5
MTg0MSksIEMoMjhiZjM1Y2NlOWM5MGEyNSksIEMoNTFiNGJhOCl9LAorICAgIHtDKDZhYmJmZGUz
N2VlMDNiNWIpLCBDKDgzZmViZjE4OGQyY2MxMTMpLCBDKGNkYTdiNjJkOTRkNWI4ZWUpLAorICAg
ICBDKGE0Mzc1NTkwYjhhZTdjODIpLCBDKDE2OGZkNDJmOWVjYWU0ZmYpLCBDKDIzYmJkZTQzZGUy
Y2IyMTQpLAorICAgICBDKGE4YzMzMzExMmEyNDNjOGMpLCBDKGE0Mzc1NTkwYjhhZTdjODIpLCBD
KDE2OGZkNDJmOWVjYWU0ZmYpLAorICAgICBDKDIzYmJkZTQzZGUyY2IyMTQpLCBDKGE4YzMzMzEx
MmEyNDNjOGMpLCBDKDEwYWMwMTJlOGM1MThiNDkpLAorICAgICBDKDY0YTQ0NjA1ZDhiMjk0NTgp
LCBDKGE2N2U3MDFkMmE2NzkwNzUpLCBDKDNhM2EyMGY0M2VjOTIzMDMpLAorICAgICBDKGI2YjA2
ZTQwKX0sCisgICAge0MoOTQzZTdlZDYzYjNjMDgwKSwgQygxZWYyMDdlOTQ0NGVmN2Y4KSwgQyhl
ZjRhOWY5ZjhjNmY5YjRhKSwKKyAgICAgQyg2YjU0ZmMzOGQ2YTg0MTA4KSwgQygzMmY0MjEyYTQ3
YTQ2NjUpLCBDKDZiNWE5YThmNjRlZTFkYTYpLAorICAgICBDKDlmNzRlODZjNmRhNjk0MjEpLCBD
KDZiNTRmYzM4ZDZhODQxMDgpLCBDKDMyZjQyMTJhNDdhNDY2NSksCisgICAgIEMoNmI1YTlhOGY2
NGVlMWRhNiksIEMoOWY3NGU4NmM2ZGE2OTQyMSksIEMoOTQ2ZGQwY2IzMGMxYTA4ZSksCisgICAg
IEMoZmRmMzc2OTU2OTA3ZWFhYSksIEMoYTU5MDc0YzZlZWMwMzAyOCksIEMoYjFhM2FiY2YyODNm
MzRhYyksIEMoMjQwYTJmMil9LAorICAgIHtDKGQ3MmNlMDUxNzFlZjhhMWEpLCBDKGM2YmQ2YmQ4
NjkyMDM4OTQpLCBDKGM3NjBlNjM5NjQ1NWQyM2EpLAorICAgICBDKGY4NmFmMGI0MGRjY2U3Yiks
IEMoOGQzYzE1ZDYxMzM5NGQzYyksIEMoNDkxZTQwMDQ5MWNkNGVjZSksCisgICAgIEMoN2MxOWQz
NTMwZWEzNTQ3ZiksIEMoZjg2YWYwYjQwZGNjZTdiKSwgQyg4ZDNjMTVkNjEzMzk0ZDNjKSwKKyAg
ICAgQyg0OTFlNDAwNDkxY2Q0ZWNlKSwgQyg3YzE5ZDM1MzBlYTM1NDdmKSwgQygxMzYyOTYzYTFk
YzMyYWY5KSwKKyAgICAgQyhmYjliYzExNzYyZTEzODVjKSwgQyg5ZTE2NGVmMWY1Mzc2MDgzKSwg
Qyg2YzE1ODE5YjVlODI4YTdlKSwKKyAgICAgQyg1ZGNlZmMzMCl9LAorICAgIHtDKDQxODI4MzJi
NTJkNjM3MzUpLCBDKDMzNzA5N2UxMjNlZWE0MTQpLCBDKGI1YTcyY2EwNDU2ZGY5MTApLAorICAg
ICBDKDdlYmMwMzQyMzViYzEyMmYpLCBDKGQ5YTc3ODNkNGVkZDgwNDkpLCBDKDVmOGIwNGExNWFl
NDIzNjEpLAorICAgICBDKGZjMTkzMzYzMzM2NDUzZGQpLCBDKDdlYmMwMzQyMzViYzEyMmYpLCBD
KGQ5YTc3ODNkNGVkZDgwNDkpLAorICAgICBDKDVmOGIwNGExNWFlNDIzNjEpLCBDKGZjMTkzMzYz
MzM2NDUzZGQpLCBDKDliNmM1MDIyNGVmOGM0ZjgpLAorICAgICBDKGJhMjI1Yzc5NDJkMTZjM2Yp
LCBDKDZmNmQ1NTIyNmE3M2M0MTIpLCBDKGFiY2EwNjFmZTA3MjE1MmEpLAorICAgICBDKDdhNDhi
MTA1KX0sCisgICAge0MoZDZjZGFlODkyNTg0YTJjYiksIEMoNThkZTBmYTRlY2ExN2RjZCksIEMo
NDNkZjMwYjhmNWYxY2IwMCksCisgICAgIEMoOWU0ZWE1YTQ5NDFlMDk3ZCksIEMoNTQ3ZTA0OGQ1
YTlkYWFiYSksIEMoZWI2ZWNiYjBiODMxZDE4NSksCisgICAgIEMoZTAxNjhkZjVmYWQwYzY3MCks
IEMoOWU0ZWE1YTQ5NDFlMDk3ZCksIEMoNTQ3ZTA0OGQ1YTlkYWFiYSksCisgICAgIEMoZWI2ZWNi
YjBiODMxZDE4NSksIEMoZTAxNjhkZjVmYWQwYzY3MCksIEMoYWZhOTcwNWY5OGMyYzk2YSksCisg
ICAgIEMoNzQ5NDM2ZjQ4MTM3YTk2YiksIEMoNzU5YzA0MWZjMjFkZjQ4NiksIEMoYjIzYmY0MDAx
MDdhYTJlYyksCisgICAgIEMoZmQ1NTAwN2IpfSwKKyAgICB7Qyg1YzhlOTBiYzI2N2M1ZWU0KSwg
QyhlOWFlMDQ0MDc1ZDk5MmQ5KSwgQyhmMjM0Y2JmZDFmMGExZTU5KSwKKyAgICAgQyhjZTI3NDQ1
MjE5NDRmMTRjKSwgQygxMDRmODAzMmY5OWRjMTUyKSwgQyg0ZTdmNDI1YmZhYzY3Y2E3KSwKKyAg
ICAgQyg5NDYxYjkxMWExYzZkNTg5KSwgQyhjZTI3NDQ1MjE5NDRmMTRjKSwgQygxMDRmODAzMmY5
OWRjMTUyKSwKKyAgICAgQyg0ZTdmNDI1YmZhYzY3Y2E3KSwgQyg5NDYxYjkxMWExYzZkNTg5KSwg
Qyg1ZTVlY2M3MjZkYjhiNjBkKSwKKyAgICAgQyhjY2U2OGIwNTg2MDgzYjUxKSwgQyg4YTdmOGU1
NGE5Y2JhMGZjKSwgQyg0MmYwMTAxODFkMTZmMDQ5KSwKKyAgICAgQyg2Yjk1ODk0Yyl9LAorICAg
IHtDKGJiZDdmMzBhYzMxMGE2ZjMpLCBDKGIyM2I1NzBkMjY2NjY4NWYpLCBDKGZiMTNmYjA4Yzk4
MTRmZTcpLAorICAgICBDKDRlZTEwNzA0MmU1MTIzNzQpLCBDKDFlMmM4YzBkMTYwOTdlMTMpLCBD
KDIxMGM3NTAwOTk1YWEwZTYpLAorICAgICBDKDZjMTMxOTA1NTcxMDY0NTcpLCBDKDRlZTEwNzA0
MmU1MTIzNzQpLCBDKDFlMmM4YzBkMTYwOTdlMTMpLAorICAgICBDKDIxMGM3NTAwOTk1YWEwZTYp
LCBDKDZjMTMxOTA1NTcxMDY0NTcpLCBDKGE5OWIzMWM5Njc3N2YzODEpLAorICAgICBDKDgzMTJh
ZTgzMDFkMzg2YzApLCBDKGVkNTA0MmIyYTRmYTk2YTMpLCBDKGQ3MWQxYmIyMzkwN2ZlOTcpLAor
ICAgICBDKDMzNjBlODI3KX0sCisgICAge0MoMzZhMDk3YWE0OTUxOWQ5NyksIEMoODIwNDM4MGE3
M2M0MDY1KSwgQyg3N2MyMDA0YmRkOWUyNzZhKSwKKyAgICAgQyg2ZWUxZjgxN2NlMGI3YWVlKSwg
QyhlOWRjYjM1MDdmMDU5NmNhKSwgQyg2YmM2M2M2NjZiNTEwMGUyKSwKKyAgICAgQyhlMGIwNTZm
MTgyMTc1MmFmKSwgQyg2ZWUxZjgxN2NlMGI3YWVlKSwgQyhlOWRjYjM1MDdmMDU5NmNhKSwKKyAg
ICAgQyg2YmM2M2M2NjZiNTEwMGUyKSwgQyhlMGIwNTZmMTgyMTc1MmFmKSwgQyg4ZWExMTE0ZTYw
MjkyNjc4KSwKKyAgICAgQyg5MDRiODBiNDZiZWNjNzcpLCBDKDQ2Y2Q5YmI2ZTlkZmY1MmYpLCBD
KDRjOTFlM2I2OTgzNTU1NDApLCBDKDQ1MTc3ZTBiKX0sCisgICAge0MoZGM3OGNiMDMyYzQ5MjE3
KSwgQygxMTI0NjQwODNmODNlMDNhKSwgQyg5NmFlNTNlMjgxNzBjMGY1KSwKKyAgICAgQyhkMzY3
ZmY1NDk1MmE5NTgpLCBDKGNkYWQ5MzA2NTczNzExNDcpLCBDKGFhMjRkYzJhOTU3M2Q1ZmUpLAor
ICAgICBDKGViMTM2ZGFhODlkYTUxMTApLCBDKGQzNjdmZjU0OTUyYTk1OCksIEMoY2RhZDkzMDY1
NzM3MTE0NyksCisgICAgIEMoYWEyNGRjMmE5NTczZDVmZSksIEMoZWIxMzZkYWE4OWRhNTExMCks
IEMoZGU2MjMwMDVmNmQ0NjA1NyksCisgICAgIEMoYjUwYzBjOTJiOTVlOWI3ZiksIEMoYThhYTU0
MDUwYjgxYzk3OCksIEMoNTczZmI1Yzc4OTVhZjliNSksCisgICAgIEMoN2M2ZmZmZTQpfSwKKyAg
ICB7Qyg0NDE1OTNlMGRhOTIyZGZlKSwgQyg5MzZlZjQ2MDYxNDY5YjMyKSwgQygyMDRhMTkyMTE5
N2RkZDg3KSwKKyAgICAgQyg1MGQ4YTcwZTdhOGQ4ZjU2KSwgQygyNTZkMTUwYWU3NWRhYjc2KSwg
QyhlODFmNGM0YTE5ODkwMzZhKSwKKyAgICAgQyhkMGY4ZGIzNjVmOWQ3ZTAwKSwgQyg1MGQ4YTcw
ZTdhOGQ4ZjU2KSwgQygyNTZkMTUwYWU3NWRhYjc2KSwKKyAgICAgQyhlODFmNGM0YTE5ODkwMzZh
KSwgQyhkMGY4ZGIzNjVmOWQ3ZTAwKSwgQyg3NTNkNjg2Njc3YjE0NTIyKSwKKyAgICAgQyg5Zjc2
ZTBjYjZmMmQwYTY2KSwgQyhhYjE0Zjk1OTg4ZWMwZDM5KSwgQyg5NzYyMWQ5ZGE5Yzk4MTJmKSwK
KyAgICAgQyhiYmM3OGRhNCl9LAorICAgIHtDKDJiYTM4ODNkNzFjYzIxMzMpLCBDKDcyZjJiYmIz
MmJlZDFhM2MpLCBDKDI3ZTFiZDk2ZDQ4NDMyNTEpLAorICAgICBDKGE5MGY3NjFlOGRiMTU0M2Ep
LCBDKGMzMzllMjNjMDk3MDNjZDgpLCBDKGYwYzY2MjRjNGIwOThmZDMpLAorICAgICBDKDFiYWUy
MDUzZTQxZmE0ZDkpLCBDKGE5MGY3NjFlOGRiMTU0M2EpLCBDKGMzMzllMjNjMDk3MDNjZDgpLAor
ICAgICBDKGYwYzY2MjRjNGIwOThmZDMpLCBDKDFiYWUyMDUzZTQxZmE0ZDkpLCBDKDM1ODllMjcz
YzIyYmEwNTkpLAorICAgICBDKDYzNzk4MjQ2ZTU5MTFhMGIpLCBDKDE4ZTcxMGVjMjY4ZmM1ZGMp
LCBDKDcxNGExMjJkZTFkMDc0ZjMpLAorICAgICBDKGM1YzI1ZDM5KX0sCisgICAge0MoZjJiNmQy
YWRmODQyMzYwMCksIEMoNzUxNGUyZjAxNmE0ODcyMiksIEMoNDMwNDU3NDNhNTAzOTZiYSksCisg
ICAgIEMoMjNkYWNiODExNjUyYWQ0ZiksIEMoYzk4MmRhNDgwZTBkNGM3ZCksIEMoM2E5YzhlZDVh
Mzk5ZDBhOSksCisgICAgIEMoOTUxYjhkMDg0NjkxZDRlNCksIEMoMjNkYWNiODExNjUyYWQ0Ziks
IEMoYzk4MmRhNDgwZTBkNGM3ZCksCisgICAgIEMoM2E5YzhlZDVhMzk5ZDBhOSksIEMoOTUxYjhk
MDg0NjkxZDRlNCksIEMoZDlmODdiNDk4OGNmZjJmNyksCisgICAgIEMoMjE3YTE5MWQ5ODZhYTNi
YyksIEMoNmFkMjNjNTZiNDgwMzUwKSwgQyhkZDc4NjczOTM4Y2ViMmU3KSwgQyhiNmU1ZDA2ZSl9
LAorICAgIHtDKDM4ZmZmZTdmMzY4MGQ2M2MpLCBDKGQ1MTMzMjUyNTVhN2E2ZDEpLCBDKDMxZWQ0
Nzc5MGY2Y2E2MmYpLAorICAgICBDKGM4MDFmYWFhMGEyZTMzMWYpLCBDKDQ5MWRiYzU4Mjc5Yzdm
ODgpLCBDKDljMDE3ODg0ODMyMWM5N2EpLAorICAgICBDKDlkOTM0ZjgxNGY0ZDZhM2MpLCBDKGM4
MDFmYWFhMGEyZTMzMWYpLCBDKDQ5MWRiYzU4Mjc5YzdmODgpLAorICAgICBDKDljMDE3ODg0ODMy
MWM5N2EpLCBDKDlkOTM0ZjgxNGY0ZDZhM2MpLCBDKDYwNmEzZTRmYzg3NjMxOTIpLAorICAgICBD
KGJjMTVjYjM2YTY3N2VlODQpLCBDKDUyZDU5MDQxNTdlMWZlNzEpLCBDKDE1ODhkZDhiMTE0NWI3
OWIpLAorICAgICBDKDYxNzg1MDRlKX0sCisgICAge0MoYjc0NzdiZjBiOWNlMzdjNiksIEMoNjNi
MWM1ODBhN2ZkMDJhNCksIEMoZjY0MzNiOWYxMGE1ZGFjKSwKKyAgICAgQyg2OGRkNzZkYjlkNjRl
Y2E3KSwgQygzNjI5NzY4MmI2NGI2NyksIEMoNDJiMTkyZDcxZjQxNGI3YSksCisgICAgIEMoNzk2
OTJjZWY0NGZhMDIwNiksIEMoNjhkZDc2ZGI5ZDY0ZWNhNyksIEMoMzYyOTc2ODJiNjRiNjcpLAor
ICAgICBDKDQyYjE5MmQ3MWY0MTRiN2EpLCBDKDc5NjkyY2VmNDRmYTAyMDYpLCBDKGYwOTc5MjUy
ZjQ3NzZkMDcpLAorICAgICBDKDRiODdjZDRmMWM5YmJmNTIpLCBDKDUxYjg0YmJjNjMxMmM3MTAp
LCBDKDE1MDcyMGZiZjg1NDI4YTcpLAorICAgICBDKGJkNGMzNjM3KX0sCisgICAge0MoNTViZGIw
ZTcxZTNlZGViZCksIEMoYzdhYjU2MmJjZjA1NjhiYyksIEMoNDMxNjYzMzJmOWVlNjg0ZiksCisg
ICAgIEMoYjJlMjU5NjRjZDQwOTExNyksIEMoYTAxMDU5OWQ2Mjg3YzQxMiksIEMoZmE1ZDY0NjFl
NzY4ZGRhMiksCisgICAgIEMoY2IzY2U3NGU4ZWM0ZjkwNiksIEMoYjJlMjU5NjRjZDQwOTExNyks
IEMoYTAxMDU5OWQ2Mjg3YzQxMiksCisgICAgIEMoZmE1ZDY0NjFlNzY4ZGRhMiksIEMoY2IzY2U3
NGU4ZWM0ZjkwNiksIEMoNjEyMGFiZmQ1NDFhMjYxMCksCisgICAgIEMoYWE4OGIxNDhjYzk1Nzk0
ZCksIEMoMjY4NmNhMzVkZjY1OTBlMyksIEMoYzZiMDJkMTg2MTZjZTk0ZCksCisgICAgIEMoNmU3
YWM0NzQpfSwKKyAgICB7Qyg3ODJmYTFiMDhiNDc1ZTcpLCBDKGZiNzEzODk1MWM2MWIyM2IpLCBD
KDk4MjkxMDVlMjM0ZmIxMWUpLAorICAgICBDKDlhOGM0MzFmNTAwZWYwNmUpLCBDKGQ4NDg1ODFh
NTgwYjZjMTIpLCBDKGZlY2ZlMTFlMTNhMmJkYjQpLAorICAgICBDKDZjNGZhMDI3M2Q3ZGIwOGMp
LCBDKDlhOGM0MzFmNTAwZWYwNmUpLCBDKGQ4NDg1ODFhNTgwYjZjMTIpLAorICAgICBDKGZlY2Zl
MTFlMTNhMmJkYjQpLCBDKDZjNGZhMDI3M2Q3ZGIwOGMpLCBDKDQ4MmY0M2JmNWFlNTlmY2IpLAor
ICAgICBDKGY2NTFmYmNhMTA1ZDc5ZTYpLCBDKGYwOWY3ODY5NWQ4NjU4MTcpLCBDKDdhOTlkMDA5
MjA4NWNmNDcpLAorICAgICBDKDFmYjRiNTE4KX0sCisgICAge0MoYzVkYzE5Yjg3NmQzN2E4MCks
IEMoMTVmZmNmZjY2NmNmZDcxMCksIEMoZThjMzBjNzIwMDMxMDNlMiksCisgICAgIEMoNzg3MDc2
NWI0NzBiMmM1ZCksIEMoNzhhOTEwM2ZmOTYwZDgyKSwgQyg3YmI1MGZmYzlmYWM3NGIzKSwKKyAg
ICAgQyg0NzdlNzBhYjJiMzQ3ZGIyKSwgQyg3ODcwNzY1YjQ3MGIyYzVkKSwgQyg3OGE5MTAzZmY5
NjBkODIpLAorICAgICBDKDdiYjUwZmZjOWZhYzc0YjMpLCBDKDQ3N2U3MGFiMmIzNDdkYjIpLCBD
KGE2MjUyMzhiZGY3YzA3Y2YpLAorICAgICBDKDExMjhkNTE1MTc0ODA5ZjUpLCBDKGIwZjE2NDdl
ODJmNDU4NzMpLCBDKDE3NzkyZDFjNGYyMjJjMzkpLAorICAgICBDKDMxZDEzZDZkKX0sCisgICAg
e0MoNWUxMTQxNzExZDJkNjcwNiksIEMoYjUzN2Y2ZGVlOGRlNjkzMyksIEMoM2FmMGExZmJiZTAy
N2M1NCksCisgICAgIEMoZWEzNDlkYmMxNmMyZTQ0MSksIEMoMzhhNzQ1NWI2YTg3NzU0NyksIEMo
NWY5N2I5NzUwZTM2NTQxMSksCisgICAgIEMoZThjZGU3ZjkzYWY0OWEzKSwgQyhlYTM0OWRiYzE2
YzJlNDQxKSwgQygzOGE3NDU1YjZhODc3NTQ3KSwKKyAgICAgQyg1Zjk3Yjk3NTBlMzY1NDExKSwg
QyhlOGNkZTdmOTNhZjQ5YTMpLCBDKGJhMTAxOTI1ZWMxZjdlMjYpLAorICAgICBDKGQ1ZTg0Y2Fi
ODE5MmM3MWUpLCBDKGUyNTY0Mjc3MjZmZGQ2MzMpLCBDKGE0ZjM4ZTJjNjExNjg5MGQpLAorICAg
ICBDKDI2ZmE3MmUzKX0sCisgICAge0MoNzgyZWRmNmRhMDAxMjM0ZiksIEMoZjQ4Y2JkNWM2NmM0
OGYzKSwgQyg4MDg3NTRkMWU2NGUyYTMyKSwKKyAgICAgQyg1ZDlkZGU3NzM1M2IxYTZkKSwgQygx
MWY1OGM1NDU4MWZhOGIxKSwgQyhkYTkwZmE3YzI4YzM3NDc4KSwKKyAgICAgQyg1ZTlhMmVhZmM2
NzBhODhhKSwgQyg1ZDlkZGU3NzM1M2IxYTZkKSwgQygxMWY1OGM1NDU4MWZhOGIxKSwKKyAgICAg
QyhkYTkwZmE3YzI4YzM3NDc4KSwgQyg1ZTlhMmVhZmM2NzBhODhhKSwgQyhlMzVlMWJjMTcyZTAx
MWVmKSwKKyAgICAgQyhiZjkyNTVhNDQ1MGFlN2ZlKSwgQyg1NWY4NTE5NGUyNmJjNTVmKSwgQyg0
ZjMyNzg3M2UxNGQwZTU0KSwKKyAgICAgQyg2YTc0MzNiZil9LAorICAgIHtDKGQyNjI4NTg0MmZm
MDRkNDQpLCBDKDhmMzhkNzEzNDFlYWNjYTkpLCBDKDVjYTQzNmY0ZGI3YTg4M2MpLAorICAgICBD
KGJmNDFlNTM3NmI5ZjBlZWMpLCBDKDIyNTJkMjFlYjdlMWMwZTkpLCBDKGY0YjcwYTk3MTg1NWU3
MzIpLAorICAgICBDKDQwYzc2OTVhYTM2NjJhZmQpLCBDKGJmNDFlNTM3NmI5ZjBlZWMpLCBDKDIy
NTJkMjFlYjdlMWMwZTkpLAorICAgICBDKGY0YjcwYTk3MTg1NWU3MzIpLCBDKDQwYzc2OTVhYTM2
NjJhZmQpLCBDKDc3MGZlMTllMTZhYjczYmIpLAorICAgICBDKGQ2MDNlYmRhNjM5M2Q3NDkpLCBD
KGU1OGM2MjQzOWFhNTBkYmQpLCBDKDk2ZDUxZTVhMDJkMmQ3Y2YpLAorICAgICBDKDRlNmRmNzU4
KX0sCisgICAge0MoYzZhYjgzMDg2NWE2YmFlNiksIEMoNmFhOGU4ZGQ0Yjk4ODE1YyksIEMoZWZl
Mzg0NjcxM2MzNzFlNSksCisgICAgIEMoYTE5MjRjYmYwYjVmOTIyMiksIEMoN2Y0ODcyMzY5YzJi
NDI1OCksIEMoY2Q2ZGEzMDUzMGYzZWE4OSksCisgICAgIEMoYjdmOGI5YTcwNGU2Y2VhMSksIEMo
YTE5MjRjYmYwYjVmOTIyMiksIEMoN2Y0ODcyMzY5YzJiNDI1OCksCisgICAgIEMoY2Q2ZGEzMDUz
MGYzZWE4OSksIEMoYjdmOGI5YTcwNGU2Y2VhMSksIEMoZmEwNmZmNDA0MzNmZDUzNSksCisgICAg
IEMoZmIxYzM2ZmU4ZjA3MzdmMSksIEMoYmI3MDUwNTYxMTcxZjgwKSwgQyhiMWJjMjMyMzU5MzVk
ODk3KSwgQyhkNTdmNjNlYSl9LAorICAgIHtDKDQ0YjNhMTkyOTIzMjg5MiksIEMoNjFkY2EwZTkx
NGZjMjE3KSwgQyhhNjA3Y2MxNDIwOTZiOTY0KSwKKyAgICAgQyhmN2RiYzg0MzNjODliMjc0KSwg
QygyZjVmNzA1ODFjOWI3ZDMyKSwgQygzOWJmNWU1ZmVjODJkY2NhKSwKKyAgICAgQyg4YWRlNTYz
ODg5MDFhNjE5KSwgQyhmN2RiYzg0MzNjODliMjc0KSwgQygyZjVmNzA1ODFjOWI3ZDMyKSwKKyAg
ICAgQygzOWJmNWU1ZmVjODJkY2NhKSwgQyg4YWRlNTYzODg5MDFhNjE5KSwgQyhjMWM2YTcyNWNh
YWIzZWE5KSwKKyAgICAgQyhjMWM3OTA2YzJmODBiODk4KSwgQyg5YzM4NzFhMDRjYzg4NGU2KSwg
QyhkZjAxODEzY2JiZGYyMTdmKSwKKyAgICAgQyg1MmVmNzNiMyl9LAorICAgIHtDKDRiNjAzZDc5
MzJhOGRlNGYpLCBDKGZhZTY0YzQ2NGI4YThmNDUpLCBDKDhmYWZhYjc1NjYxZDYwMmEpLAorICAg
ICBDKDhmZmU4NzBlZjRhZGMwODcpLCBDKDY1YmVhMmJlNDFmNTViNTQpLCBDKDgyZjM1MDNmNjM2
YWVmMSksCisgICAgIEMoNWY3OGEyODIzNzhiNmJiMCksIEMoOGZmZTg3MGVmNGFkYzA4NyksIEMo
NjViZWEyYmU0MWY1NWI1NCksCisgICAgIEMoODJmMzUwM2Y2MzZhZWYxKSwgQyg1Zjc4YTI4MjM3
OGI2YmIwKSwgQyg3YmYyNDIyYzBiZWNlZGRiKSwKKyAgICAgQyg5ZDIzOGQ0NzgwMTE0YmQpLCBD
KDdhZDE5ODMxMTkwNjU5N2YpLCBDKGVjOGY4OTJjMDQyMmFjYTMpLCBDKDNjYjM2YzMpfSwKKyAg
ICB7Qyg0ZWMwYjU0Y2YxNTY2YWZmKSwgQygzMGQyYzcyNjliMjA2YmY0KSwgQyg3N2MyMmU4MjI5
NWUxMDYxKSwKKyAgICAgQygzZGY5YjA0NDM0NzcxNTQyKSwgQyhmZWRkY2U3ODVjY2I2NjFmKSwg
QyhhNjQ0YWZmNzE2OTI4Mjk3KSwKKyAgICAgQyhkZDQ2YWVlNzM4MjRiNGVkKSwgQygzZGY5YjA0
NDM0NzcxNTQyKSwgQyhmZWRkY2U3ODVjY2I2NjFmKSwKKyAgICAgQyhhNjQ0YWZmNzE2OTI4Mjk3
KSwgQyhkZDQ2YWVlNzM4MjRiNGVkKSwgQyhiZjhkNzE4NzlkYTI5YjAyKSwKKyAgICAgQyhmYzgy
ZGNjYmZjODAyMmEwKSwgQygzMWJmY2QwZDlmNDhkMWQzKSwgQyhjNjRlZTI0ZDBlN2I1ZjhiKSwK
KyAgICAgQyg3MmMzOWJlYSl9LAorICAgIHtDKGVkOGI3YTRiMzQ5NTRmZjcpLCBDKDU2NDMyZGUz
MWY0ZWU3NTcpLCBDKDg1YmQzYWJhYTU3MmIxNTUpLAorICAgICBDKDdkMmMzOGE5MjZkYzFiODgp
LCBDKDUyNDViOWViNGNkNjc5MWQpLCBDKGZiNTNhYjAzYjlhZDA4NTUpLAorICAgICBDKDM2NjQw
MjZjOGZjNjY5ZDcpLCBDKDdkMmMzOGE5MjZkYzFiODgpLCBDKDUyNDViOWViNGNkNjc5MWQpLAor
ICAgICBDKGZiNTNhYjAzYjlhZDA4NTUpLCBDKDM2NjQwMjZjOGZjNjY5ZDcpLCBDKDQ1MDI0ZDUw
ODBiYzE5NiksCisgICAgIEMoYjIzNmViZWMyY2MyNzQwKSwgQygyNzIzMWFkMGUzNDQzYmU0KSwg
QygxNDU3ODBiNjNmODA5MjUwKSwgQyhhNjVhYTI1Yyl9LAorICAgIHtDKDVkMjhiNDM2OTQxNzZj
MjYpLCBDKDcxNGNjOGJjMTJkMDYwYWUpLCBDKDM0Mzc3MjYyNzNhODNmZTYpLAorICAgICBDKDg2
NGIxYjI4ZWMxNmVhODYpLCBDKDZhNzhhNWE0MDM5ZWMyYjkpLCBDKDhlOTU5NTMzZTM1YTc2Niks
CisgICAgIEMoMzQ3YjdjMjJiNzVhZTY1ZiksIEMoODY0YjFiMjhlYzE2ZWE4NiksIEMoNmE3OGE1
YTQwMzllYzJiOSksCisgICAgIEMoOGU5NTk1MzNlMzVhNzY2KSwgQygzNDdiN2MyMmI3NWFlNjVm
KSwgQyg1MDA1ODkyYmI2MWU2NDdjKSwKKyAgICAgQyhmZTY0NjUxOWI0YTE4OTRkKSwgQyhjZDgw
MTAyNmY3NGE4YTUzKSwgQyg4NzEzNDYzZTlhMWFiOWNlKSwKKyAgICAgQyg3NDc0MDUzOSl9LAor
ICAgIHtDKDZhMWVmMzYzOWUxZDIwMmUpLCBDKDkxOWJjMWJkMTQ1YWQ5MjgpLCBDKDMwZjNmN2U0
OGMyOGE3NzMpLAorICAgICBDKDJlOGM0OWQ3YzdhYWE1MjcpLCBDKDVlMjMyOGZjODcwMWRiN2Mp
LCBDKDg5ZWYxYWZjYTgxZjdkZTgpLAorICAgICBDKGIxODU3ZGIxMTk4NWQyOTYpLCBDKDJlOGM0
OWQ3YzdhYWE1MjcpLCBDKDVlMjMyOGZjODcwMWRiN2MpLAorICAgICBDKDg5ZWYxYWZjYTgxZjdk
ZTgpLCBDKGIxODU3ZGIxMTk4NWQyOTYpLCBDKDE3NzYzZDY5NWY2MTYxMTUpLAorICAgICBDKGI4
ZjdiZjFmY2RjODMyMmMpLCBDKGNmMGM2MTkzOGFiMDdhMjcpLCBDKDExMjJkM2U2ZWRiNGU4NjYp
LAorICAgICBDKGMzYWUzYzI2KX0sCisgICAge0MoMTU5ZjRkOWUwMzA3YjExMSksIEMoM2UxNzkx
NGE1Njc1YTBjKSwgQyhhZjg0OWJkNDI1MDQ3YjUxKSwKKyAgICAgQygzYjY5ZWRhZGYzNTc0MzJi
KSwgQygzYTJlMzExYzEyMWU2YmYyKSwgQygzODBmYWQxZTI4OGQ1N2U1KSwKKyAgICAgQyhiZjdj
N2U4ZWYwZTNiODNhKSwgQygzYjY5ZWRhZGYzNTc0MzJiKSwgQygzYTJlMzExYzEyMWU2YmYyKSwK
KyAgICAgQygzODBmYWQxZTI4OGQ1N2U1KSwgQyhiZjdjN2U4ZWYwZTNiODNhKSwgQyg5Mjk2NmQ1
ZjQzNTZhZTliKSwKKyAgICAgQygyYTAzZmM2NmM0ZDZjMDM2KSwgQygyNTE2ZDhiZGRiMGQ1MjU5
KSwgQyhiM2ZmZTk3MzdmZjUwOTApLCBDKGYyOWRiOGEyKX0sCisgICAge0MoY2MwYTg0MDcyNWE3
ZTI1YiksIEMoNTdjNjk0NTQzOTZlMTkzYSksIEMoOTc2ZWFmN2VlZTBiNDU0MCksCisgICAgIEMo
Y2Q3YTQ2ODUwYjk1ZTkwMSksIEMoYzU3ZjdkMDYwZGRhMjQ2ZiksIEMoNmI5NDA2ZWFkNjQwNzli
ZiksCisgICAgIEMoMTFiMjhlMjBhNTczYjdiZCksIEMoY2Q3YTQ2ODUwYjk1ZTkwMSksIEMoYzU3
ZjdkMDYwZGRhMjQ2ZiksCisgICAgIEMoNmI5NDA2ZWFkNjQwNzliZiksIEMoMTFiMjhlMjBhNTcz
YjdiZCksIEMoMmQ2ZGIzNTZlOTM2OWFjZSksCisgICAgIEMoZGMwYWZlMTBmYmExOTMpLCBDKDVj
ZGIxMDg4NWRiYmZjZSksIEMoNWM3MDBlMjA1NzgyZTM1YSksIEMoMWVmNGNiZjQpfSwKKyAgICB7
QyhhMmIyN2VlMjJmNjNjM2YxKSwgQyg5ZWJkZTBjZTFiMzk3NmIyKSwgQygyZmU2YTkyYTI1N2Fm
MzA4KSwKKyAgICAgQyg4YzFkZjkyN2E5MzBhZjU5KSwgQyhhNDYyZjQ0MjNjOWUzODRlKSwgQygy
MzY1NDIyNTViMmFkOGQ5KSwKKyAgICAgQyg1OTVkMjAxYTJjMTlkNWJjKSwgQyg4YzFkZjkyN2E5
MzBhZjU5KSwgQyhhNDYyZjQ0MjNjOWUzODRlKSwKKyAgICAgQygyMzY1NDIyNTViMmFkOGQ5KSwg
Qyg1OTVkMjAxYTJjMTlkNWJjKSwgQygyMmM4N2Q0NjA0YTY3ZjMpLAorICAgICBDKDU4NWEwNmVi
NGJjNDRjNGYpLCBDKGI0MTc1YTdhYzdlYWJjZDgpLCBDKGE0NTdkM2VlYmExNGFiOGMpLAorICAg
ICBDKGE5YmU2YzQxKX0sCisgICAge0MoZDhmMmYyMzQ4OTliY2FiMyksIEMoYjEwYjAzNzI5N2Mz
YTE2OCksIEMoZGViZWEyYzUxMGNlZGE3ZiksCisgICAgIEMoOTQ5OGZlZmI4OTAyODdjZSksIEMo
YWU2OGMyYmU1YjFhNjlhNiksIEMoNjE4OWRmYmEzNGVkNjU2YyksCisgICAgIEMoOTE2NThmOTU4
MzZlNTIwNiksIEMoOTQ5OGZlZmI4OTAyODdjZSksIEMoYWU2OGMyYmU1YjFhNjlhNiksCisgICAg
IEMoNjE4OWRmYmEzNGVkNjU2YyksIEMoOTE2NThmOTU4MzZlNTIwNiksIEMoYzBiYjRmZmYzMmFl
Y2Q0ZCksCisgICAgIEMoOTQxMjVmNTA1YTUwZWVmOSksIEMoNmFjNDA2ZTdjZmJjZTViYiksIEMo
MzQ0YTRiMWRjZGI3ZjVkOCksIEMoZmEzMTgwMSl9LAorICAgIHtDKDU4NGYyODU0Mzg2NDg0NGYp
LCBDKGQ3Y2VlOWZjMmQ0NmYyMGQpLCBDKGEzOGRjYTU2NTczODcyMDUpLAorICAgICBDKDdhMGI2
ZGJhYjlhMTRlNjkpLCBDKGM2ZDBhOWQ2YjBlMzFhYzQpLCBDKGE2NzRkODU4MTJjN2NmNiksCisg
ICAgIEMoNjM1MzhjMDM1MTA0OTk0MCksIEMoN2EwYjZkYmFiOWExNGU2OSksIEMoYzZkMGE5ZDZi
MGUzMWFjNCksCisgICAgIEMoYTY3NGQ4NTgxMmM3Y2Y2KSwgQyg2MzUzOGMwMzUxMDQ5OTQwKSwg
Qyg5NzEwZTVmMGJjOTNkMWQpLAorICAgICBDKGMyYmVhNWJkN2M1NGRkZDQpLCBDKDQ4NzM5YWYy
YmVkMGQzMmQpLCBDKGJhMmM0ZTA5ZTIxZmJhODUpLAorICAgICBDKDgzMzFjNWQ4KX0sCisgICAg
e0MoYTk0YmU0NmRkOWFhNDFhZiksIEMoYTU3ZTViNzcyM2QzZjliZCksIEMoMzRiZjg0NWE1MmZk
MmYpLAorICAgICBDKDg0M2I1ODQ2M2M4ZGYwYWUpLCBDKDc0YjI1ODMyNGU5MTYwNDUpLCBDKGJk
ZDczNTMyMzBlYjJiMzgpLAorICAgICBDKGZhZDMxZmNlZDdhYmFkZTUpLCBDKDg0M2I1ODQ2M2M4
ZGYwYWUpLCBDKDc0YjI1ODMyNGU5MTYwNDUpLAorICAgICBDKGJkZDczNTMyMzBlYjJiMzgpLCBD
KGZhZDMxZmNlZDdhYmFkZTUpLCBDKDI0MzZhZWFmYjAwNDZmODUpLAorICAgICBDKDY1YmM5YWY5
ZTVlMzMxNjEpLCBDKDkyNzMzYjFiM2FlOTA2MjgpLCBDKGY0ODE0M2VhZjc4YTdhODkpLAorICAg
ICBDKGU5ODc2ZGI4KX0sCisgICAge0MoOWE4N2JlYTIyNzQ5MWQyMCksIEMoYTQ2ODY1N2UyYjlj
NDNlNyksIEMoYWY5YmE2MGRiOGQ4OWVmNyksCisgICAgIEMoY2M3NmY0MjllYTdhMTJiYiksIEMo
NWYzMGVhZjJiYjE0ODcwYSksIEMoNDM0ZTgyNGNiM2UwY2QxMSksCisgICAgIEMoNDMxYTRkMzgy
ZTM5ZDE2ZSksIEMoY2M3NmY0MjllYTdhMTJiYiksIEMoNWYzMGVhZjJiYjE0ODcwYSksCisgICAg
IEMoNDM0ZTgyNGNiM2UwY2QxMSksIEMoNDMxYTRkMzgyZTM5ZDE2ZSksIEMoOWU1MWY5MTNjNDc3
M2E4KSwKKyAgICAgQygzMmFiMTkyNTgyM2QwYWRkKSwgQyg5OWM2MWI1NGMxZDhmNjlkKSwgQygz
OGNmYjgwZjAyYjQzYjFmKSwKKyAgICAgQygyN2IwNjA0ZSl9LAorICAgIHtDKDI3Njg4YzI0OTU4
ZDFhNWMpLCBDKGUzYjRhMWM5NDI5Y2YyNTMpLCBDKDQ4YTk1ODExZjcwZDY0YmMpLAorICAgICBD
KDMyODA2MzIyOWRiMjI4ODQpLCBDKDY3ZTljOTVmOGJhOTYwMjgpLCBDKDdjNmJmMDFjNjA0MzYw
NzUpLAorICAgICBDKGZhNTUxNjFlN2Q5MDMwYjIpLCBDKDMyODA2MzIyOWRiMjI4ODQpLCBDKDY3
ZTljOTVmOGJhOTYwMjgpLAorICAgICBDKDdjNmJmMDFjNjA0MzYwNzUpLCBDKGZhNTUxNjFlN2Q5
MDMwYjIpLCBDKGRhZGJjMmYwZGFiOTE2ODEpLAorICAgICBDKGRhMzlkN2E0OTM0Y2ExMSksIEMo
MTYyZTg0NWQyNGMxYjQ1YyksIEMoZWI1YjlkY2Q4YzZlZDMxYiksIEMoZGNlYzA3ZjIpfSwKKyAg
ICB7Qyg1ZDFkMzc3OTBhMTg3M2FkKSwgQyhlZDljZDRiY2M1ZmExMDkwKSwgQyhjZTUxY2RlMDVk
OGNkOTZhKSwKKyAgICAgQyhmNzJjMjZlNjI0NDA3ZTY2KSwgQyhhMGViNTQxYmRiYzZkNDA5KSwg
QyhjM2Y0MGEyZjQwYjNiMjEzKSwKKyAgICAgQyg2YTc4NGRlNjg3OTQ0OTJkKSwgQyhmNzJjMjZl
NjI0NDA3ZTY2KSwgQyhhMGViNTQxYmRiYzZkNDA5KSwKKyAgICAgQyhjM2Y0MGEyZjQwYjNiMjEz
KSwgQyg2YTc4NGRlNjg3OTQ0OTJkKSwgQygxMGEzOGEyM2RiZWY3OTM3KSwKKyAgICAgQyg2YTU1
NjBmODUzMjUyMjc4KSwgQyhjMzM4N2JiZjNjN2I4MmJhKSwgQyhmYmVlN2MxMmViMDcyODA1KSwK
KyAgICAgQyhjZmYwYTgyYSl9LAorICAgIHtDKDFmMDNmZDE4YjcxMWVlYTkpLCBDKDU2NmQ4OWIx
OTQ2ZDM4MWEpLCBDKDZlOTZlODNmYzkyNTYzYWIpLAorICAgICBDKDQwNWY2NmNmOGNhZTFhMzIp
LCBDKGQ3MjYxNzQwZDhmMThjZTYpLCBDKGZlYTNhZjY0YTQxM2QwYjIpLAorICAgICBDKGQ2NGQx
ODEwZTgzNTIwZmUpLCBDKDQwNWY2NmNmOGNhZTFhMzIpLCBDKGQ3MjYxNzQwZDhmMThjZTYpLAor
ICAgICBDKGZlYTNhZjY0YTQxM2QwYjIpLCBDKGQ2NGQxODEwZTgzNTIwZmUpLCBDKGUxMzM0YTAw
YTU4MGM2ZTgpLAorICAgICBDKDQ1NDA0OWUxYjUyYzE1ZiksIEMoODg5NWQ4MjNkOTc3ODI0Nyks
IEMoZWZhN2YyZTg4YjgyNjYxOCksIEMoZmVjODM2MjEpfSwKKyAgICB7QyhmMDMxNmYyODZjZjUy
N2I2KSwgQyhmODRjMjk1MzhkZTFhYTVhKSwgQyg3NjEyZWQzYzkyM2Q0YTcxKSwKKyAgICAgQyhk
NGVjY2ViZTkzOTNlZThhKSwgQygyZWI3ODY3YzIzMThjYzU5KSwgQygxY2U2MjFmZDcwMGZlMzk2
KSwKKyAgICAgQyg2ODY0NTBkN2EzNDY4NzhhKSwgQyhkNGVjY2ViZTkzOTNlZThhKSwgQygyZWI3
ODY3YzIzMThjYzU5KSwKKyAgICAgQygxY2U2MjFmZDcwMGZlMzk2KSwgQyg2ODY0NTBkN2EzNDY4
NzhhKSwgQyg3NWE1ZjM3NTc5ZjhiNGNiKSwKKyAgICAgQyg1MDBjYzE2ZWI2NTQxZGM3KSwgQyhi
N2IwMjMxN2I1MzlkOWE2KSwgQygzNTE5ZGRmZjViYzIwYTI5KSwgQyg3NDNkOGRjKX0sCisgICAg
e0MoMjk3MDA4YmNiM2UzNDAxZCksIEMoNjFhOGU0MDdmODJiMGM2OSksIEMoYTRhMzViZmYwNTI0
ZmEwZSksCisgICAgIEMoN2E2MWQ4ZjU1MmE1MzQ0MiksIEMoODIxZDFkOGQ4Y2ZhY2YzNSksIEMo
N2NjMDYzNjFiODZkMDU1OSksCisgICAgIEMoMTE5YjYxN2E4YzJiZTE5OSksIEMoN2E2MWQ4ZjU1
MmE1MzQ0MiksIEMoODIxZDFkOGQ4Y2ZhY2YzNSksCisgICAgIEMoN2NjMDYzNjFiODZkMDU1OSks
IEMoMTE5YjYxN2E4YzJiZTE5OSksIEMoMjk5NjQ4N2RhNjcyMTc1OSksCisgICAgIEMoNjFhOTAx
Mzc2MDcwYjkxZCksIEMoZDg4ZGVlMTJhZTljOWIzYyksIEMoNTY2NTQ5MWJlMWZhNTNhNyksCisg
ICAgIEMoNjRkNDFkMjYpfSwKKyAgICB7Qyg0M2M2MjUyNDExZWUzYmUpLCBDKGI0Y2ExYjgwNzc3
NzcxNjgpLCBDKDI3NDZkYzNmN2RhMTczN2YpLAorICAgICBDKDIyNDdhNGIyMDU4ZDFjNTApLCBD
KDFiM2ZhMTg0YjFkN2JjYzApLCBDKGRlYjg1NjEzOTk1YzA2ZWQpLAorICAgICBDKGNiZTFkOTU3
NDg1YTNjY2QpLCBDKDIyNDdhNGIyMDU4ZDFjNTApLCBDKDFiM2ZhMTg0YjFkN2JjYzApLAorICAg
ICBDKGRlYjg1NjEzOTk1YzA2ZWQpLCBDKGNiZTFkOTU3NDg1YTNjY2QpLCBDKGRmZTI0MWY4ZjMz
Yzk2YjYpLAorICAgICBDKDY1OTdlYjA1MDE5YzIxMDkpLCBDKGRhMzQ0YjJhNjNhMjE5Y2YpLCBD
KDc5YjhlMzg4NzYxMjM3OGEpLAorICAgICBDKGFjZDkwYzgxKX0sCisgICAge0MoY2UzOGE5YTU0
ZmFkNjU5OSksIEMoNmQ2ZjRhOTBiOWU4NzU1ZSksIEMoYzNlY2M3OWZmMTA1ZGUzZiksCisgICAg
IEMoZThiOWVlOTZlZmEyZDBlKSwgQyg5MDEyMjkwNWM0YWI1MzU4KSwgQyg4NGY4MGM4MzJkNzE5
NzljKSwKKyAgICAgQygyMjkzMTBmM2ZmYmJmNGM2KSwgQyhlOGI5ZWU5NmVmYTJkMGUpLCBDKDkw
MTIyOTA1YzRhYjUzNTgpLAorICAgICBDKDg0ZjgwYzgzMmQ3MTk3OWMpLCBDKDIyOTMxMGYzZmZi
YmY0YzYpLCBDKGNjOWViNDIxMDBjZDYzYTcpLAorICAgICBDKDdhMjgzZjJmM2RhN2I5ZiksIEMo
MzU5YjA2MWQzMTRlN2E3MiksIEMoZDBkOTU5NzIwMDI4ODYyKSwgQyg3Yzc0NmE0Yil9LAorICAg
IHtDKDI3MGE5MzA1ZmVmNzBjZiksIEMoNjAwMTkzOTk5ZDg4NGYzYSksIEMoZjRkNDllYWUwOWVk
OGExKSwKKyAgICAgQygyZTA5MWI4NTY2MGYxMjk4KSwgQyhiZmUzN2ZhZTFjZGQ2NGM5KSwgQyg4
ZGRkZmJhYjkzMGY2NDk0KSwKKyAgICAgQygyY2NmNGIwOGY1ZDQxN2EpLCBDKDJlMDkxYjg1NjYw
ZjEyOTgpLCBDKGJmZTM3ZmFlMWNkZDY0YzkpLAorICAgICBDKDhkZGRmYmFiOTMwZjY0OTQpLCBD
KDJjY2Y0YjA4ZjVkNDE3YSksIEMoMzY1YzJlZTg1NTgyZmU2KSwKKyAgICAgQyhkZWUwMjdiY2Qz
NmRiNjJhKSwgQyhiMTUwOTk0ZDNjN2U1ODM4KSwgQyhmZGZkMWEwZTY5MmU0MzZkKSwKKyAgICAg
QyhiMTA0N2U5OSl9LAorICAgIHtDKGU3MWJlN2MyOGU4NGQxMTkpLCBDKGViNmFjZTU5OTMyNzM2
ZTYpLCBDKDcwYzQzOTc4MDdiYTEyYzUpLAorICAgICBDKDdhOWQ3Nzc4MWFjNTM1MDkpLCBDKDQ0
ODljM2NjZmRhM2IzOWMpLCBDKGZhNzIyZDRmMjQzYjQ5NjQpLAorICAgICBDKDI1ZjE1ODAwYmZm
ZGQxMjIpLCBDKDdhOWQ3Nzc4MWFjNTM1MDkpLCBDKDQ0ODljM2NjZmRhM2IzOWMpLAorICAgICBD
KGZhNzIyZDRmMjQzYjQ5NjQpLCBDKDI1ZjE1ODAwYmZmZGQxMjIpLCBDKGVkODVlNDE1N2ZiZDMy
OTcpLAorICAgICBDKGFhYjE5NjcyMjdkNTllZmQpLCBDKDIxOTk2MzEyMTJlYjM4MzkpLCBDKDNl
NGMxOTM1OWFhZTFjYzIpLAorICAgICBDKGQxZmQxMDY4KX0sCisgICAge0MoYjViNThjMjRiNTNh
YWExOSksIEMoZDJhNmFiMDc3M2RkODk3ZiksIEMoZWY3NjJmZTAxZWNiNWI5NyksCisgICAgIEMo
OWRlZWZiY2ZhNGNhYjFmMSksIEMoYjU4ZjU5NDNjZDI0OTJiYSksIEMoYTk2ZGNjNGQxZjQ3ODJh
NyksCisgICAgIEMoMTAyYjYyYTgyMzA5ZGRlNSksIEMoOWRlZWZiY2ZhNGNhYjFmMSksIEMoYjU4
ZjU5NDNjZDI0OTJiYSksCisgICAgIEMoYTk2ZGNjNGQxZjQ3ODJhNyksIEMoMTAyYjYyYTgyMzA5
ZGRlNSksIEMoMzVmZTUyNjg0NzYzYjMzOCksCisgICAgIEMoYWZlMjYxNjY1MWVhYWQxZiksIEMo
NDNlMzg3MTViZGZhMDVlNyksIEMoODNjOWJhODNiNWVjNGE0MCksCisgICAgIEMoNTY0ODYwNzcp
fSwKKyAgICB7Qyg0NGRkNTliZDMwMTk5NWNmKSwgQygzY2NhYmQ3NjQ5M2FkYTFhKSwgQyg1NDBk
YjRjODdkNTVlZjIzKSwKKyAgICAgQyhjZmM2ZDdhZGRhMzU3OTcpLCBDKDE0YzdkMWYzMjMzMmNm
MDMpLCBDKDJkNTUzZmZiZmYzYmU5OWQpLAorICAgICBDKGM5MWM0ZWUwY2I1NjMxODIpLCBDKGNm
YzZkN2FkZGEzNTc5NyksIEMoMTRjN2QxZjMyMzMyY2YwMyksCisgICAgIEMoMmQ1NTNmZmJmZjNi
ZTk5ZCksIEMoYzkxYzRlZTBjYjU2MzE4MiksIEMoOWFhNWU1MDdmNDkxMzZmMCksCisgICAgIEMo
NzYwYzVkZDFhODJjNDg4OCksIEMoYmVlYTdlOTc0YTFjZmI1YyksIEMoNjQwYjI0Nzc3NGZlNGJm
NyksCisgICAgIEMoNjA2OWJlODApfSwKKyAgICB7QyhiNGQ0Nzg5ZWI2ZjI2MzBiKSwgQyhiZjY5
NzMyNjNjZThlZjBlKSwgQyhkMWM3NWM1MDg0NGI5ZDMpLAorICAgICBDKGJjZTkwNTkwMGMxZWM2
ZWEpLCBDKGMzMGYzMDRmNDA0NTQ4N2QpLCBDKGE1YzU1MDE2NmIzYTE0MmIpLAorICAgICBDKDJm
NDgyYjRlMzUzMjcyODcpLCBDKGJjZTkwNTkwMGMxZWM2ZWEpLCBDKGMzMGYzMDRmNDA0NTQ4N2Qp
LAorICAgICBDKGE1YzU1MDE2NmIzYTE0MmIpLCBDKDJmNDgyYjRlMzUzMjcyODcpLCBDKDE1YjIx
ZGRkZGYzNTU0MzgpLAorICAgICBDKDQ5NjQ3MWZhMzAwNmJhYiksIEMoMmE4ZmQ0NThkMDZjMWEz
MiksIEMoZGI5MWU4YWU4MTJmMGI4ZCksIEMoMjA3ODM1OWIpfSwKKyAgICB7QygxMjgwNzgzM2M0
NjM3MzdjKSwgQyg1OGU5MjdlYTNiMzc3NmI0KSwgQyg3MmRkMjBlZjFjMmY4YWQwKSwKKyAgICAg
Qyg5MTBiNjEwZGU3YTk2N2JmKSwgQyg4MDFiYzg2MjEyMGY2YmY1KSwgQyg5NjUzZWZlZWQ1ODk3
NjgxKSwKKyAgICAgQyhmNTM2N2ZmODNlOWViYmIzKSwgQyg5MTBiNjEwZGU3YTk2N2JmKSwgQyg4
MDFiYzg2MjEyMGY2YmY1KSwKKyAgICAgQyg5NjUzZWZlZWQ1ODk3NjgxKSwgQyhmNTM2N2ZmODNl
OWViYmIzKSwgQyhjZjU2ZDQ4OWFmZDFiMGJmKSwKKyAgICAgQyhjN2M3OTM3MTVjYWUzZGU4KSwg
Qyg2MzFmOTFkNjRhYmFlNDdjKSwgQyg1ZjFmNDJmYjE0YTQ0NGEyKSwKKyAgICAgQyg5ZWEyMTAw
NCl9LAorICAgIHtDKGU4ODQxOTkyMmI4NzE3NmYpLCBDKGJjZjMyZjQxYTdkZGJmNmYpLCBDKGQ2
ZWJlZmQ4MDg1YzFhMGYpLAorICAgICBDKGQxZDQ0ZmU5OTQ1MWVmNzIpLCBDKGVjOTUxYmE4ZTUx
ZTM1NDUpLCBDKGMwY2E4NmIzNjA3NDZlOTYpLAorICAgICBDKGFhNjc5Y2MwNjZhODA0MGIpLCBD
KGQxZDQ0ZmU5OTQ1MWVmNzIpLCBDKGVjOTUxYmE4ZTUxZTM1NDUpLAorICAgICBDKGMwY2E4NmIz
NjA3NDZlOTYpLCBDKGFhNjc5Y2MwNjZhODA0MGIpLCBDKDUxMDY1ODYxZWNlNmZmYzEpLAorICAg
ICBDKDc2Nzc3MzY4YTI5OTdlMTEpLCBDKDg3ZjI3OGY0NjczMTEwMGMpLCBDKGJiYWE0MTQwYmRi
YTQ1MjcpLAorICAgICBDKDljOWNmZTg4KX0sCisgICAge0MoMTA1MTkxZTBlYzhmN2Y2MCksIEMo
NTkxOGRiZmNjYTk3MWU3OSksIEMoNmIyODVjOGE5NDQ3NjdiOSksCisgICAgIEMoZDNlODZhYzRm
NWVjY2ZhNCksIEMoZTUzOTlkZjJiMTA2Y2ExKSwgQyg4MTRhYWRmYWNkMjE3ZjFkKSwKKyAgICAg
QygyNzU0ZTNkZWYxYzQwNWE5KSwgQyhkM2U4NmFjNGY1ZWNjZmE0KSwgQyhlNTM5OWRmMmIxMDZj
YTEpLAorICAgICBDKDgxNGFhZGZhY2QyMTdmMWQpLCBDKDI3NTRlM2RlZjFjNDA1YTkpLCBDKDk5
MjkwMzIzYjlmMDZlNzQpLAorICAgICBDKGE5NzgyZTA0M2YyNzE0NjEpLCBDKDEzYzhiM2I4YzI3
NWE4NjApLCBDKDYwMzhkNjIwZTU4MWU5ZTcpLAorICAgICBDKGI3MGE2ZGRkKX0sCisgICAge0Mo
YTViODhiZjczOTlhOWYwNyksIEMoZmNhM2RkZmQ5NjQ2MWNjNCksIEMoZWJlNzM4ZmRjMDI4MmZj
NiksCisgICAgIEMoNjlhZmJjODAwNjA2ZDBmYiksIEMoNjEwNGI5N2E5ZGIxMmRmNyksIEMoZmNj
MDkxOThiYjkwYmY5ZiksCisgICAgIEMoYzVlMDc3ZTQxYTY1YmE5MSksIEMoNjlhZmJjODAwNjA2
ZDBmYiksIEMoNjEwNGI5N2E5ZGIxMmRmNyksCisgICAgIEMoZmNjMDkxOThiYjkwYmY5ZiksIEMo
YzVlMDc3ZTQxYTY1YmE5MSksIEMoZGIyNjE4MzVlZThhYTA4ZSksCisgICAgIEMoZGIwZWU2NjJl
NTc5NmRjOSksIEMoZmMxODgwZWNlYzQ5OWU1ZiksIEMoNjQ4ODY2ZmJlMTUwMjAzNCksCisgICAg
IEMoZGVhMzcyOTgpfSwKKyAgICB7QyhkMDhjM2Y1NzQ3ZDg0ZjUwKSwgQyg0ZTcwOGIyN2QxYjZm
OGFjKSwgQyg3MGY3MGZkNzM0ODg4NjA2KSwKKyAgICAgQyg5MDlhZTAxOWQ3NjFkMDE5KSwgQygz
NjhiZjRhYWIxYjg2ZWY5KSwgQygzMDhiZDYxNmQ1NDYwMjM5KSwKKyAgICAgQyg0ZmQzMzI2OWY3
Njc4M2VhKSwgQyg5MDlhZTAxOWQ3NjFkMDE5KSwgQygzNjhiZjRhYWIxYjg2ZWY5KSwKKyAgICAg
QygzMDhiZDYxNmQ1NDYwMjM5KSwgQyg0ZmQzMzI2OWY3Njc4M2VhKSwgQyg3ZDUzYjM3YzE5NzEz
ZWFiKSwKKyAgICAgQyg2YmJhNmVhYmRhNThhODk3KSwgQyg5MWFiYjUwZWZjMTE2MDQ3KSwgQyg0
ZTkwMmYzNDdlMGUwZTM1KSwKKyAgICAgQyg4ZjQ4MDgxOSl9LAorICAgIHtDKDJmNzJkMTJhNDAw
NDRiNGIpLCBDKDg4OTY4OTM1MmZlYzUzZGUpLCBDKGYwM2U2YWQ4N2ViMmYzNiksCisgICAgIEMo
ZWY3OWYyOGQ4NzRiOWUyZCksIEMoYjUxMjA4OWU4ZTYzYjc2YyksIEMoMjRkYzA2ODMzYmYxOTNh
OSksCisgICAgIEMoM2MyMzMwOGJhOGU5OWQ3ZSksIEMoZWY3OWYyOGQ4NzRiOWUyZCksIEMoYjUx
MjA4OWU4ZTYzYjc2YyksCisgICAgIEMoMjRkYzA2ODMzYmYxOTNhOSksIEMoM2MyMzMwOGJhOGU5
OWQ3ZSksIEMoNWNlZmY3Yjg1Y2FjZWZiNyksCisgICAgIEMoZWYzOTAzMzg4OThjZDczKSwgQyhi
MTI5NjdkN2QyMjU0ZjU0KSwgQyhkZTg3NGNiZDhhZWY3Yjc1KSwgQygzMGIzYjE2KX0sCisgICAg
e0MoYWExZjYxZmRjNWMyZTExZSksIEMoYzJjNTZjZDExMjc3YWIyNyksIEMoYTFlNzMwNjlmZGYx
Zjk0ZiksCisgICAgIEMoODE4NGJhYjM2YmI3OWRmMCksIEMoYzgxOTI5Y2U4NjU1Yjk0MCksIEMo
MzAxYjExYmY4YTRkOGNlOCksCisgICAgIEMoNzMxMjZmZDQ1YWI3NWRlOSksIEMoODE4NGJhYjM2
YmI3OWRmMCksIEMoYzgxOTI5Y2U4NjU1Yjk0MCksCisgICAgIEMoMzAxYjExYmY4YTRkOGNlOCks
IEMoNzMxMjZmZDQ1YWI3NWRlOSksIEMoNGJkNmY3NmU0ODg4MjI5YSksCisgICAgIEMoOWFhZTM1
NWI1NGE3NTZkNSksIEMoY2EzZGU5NzI2ZjZlOTlkNSksIEMoODNmODBjYWM1YmMzNjg1MiksCisg
ICAgIEMoZjMxYmM0ZTgpfSwKKyAgICB7Qyg5NDg5YjM2ZmUyMjQ2MjQ0KSwgQygzMzU1MzY3MDMz
YmU3NGI4KSwgQyg1ZjU3YzIyNzdjYmNlNTE2KSwKKyAgICAgQyhiYzYxNDE0Zjk4MDJlY2FmKSwg
Qyg4ZWRkMWU3YTUwNTYyOTI0KSwgQyg0OGY0YWI3NGEzNWU5NWYyKSwKKyAgICAgQyhjYzFhZmNm
ZDk5YTE4MGU3KSwgQyhiYzYxNDE0Zjk4MDJlY2FmKSwgQyg4ZWRkMWU3YTUwNTYyOTI0KSwKKyAg
ICAgQyg0OGY0YWI3NGEzNWU5NWYyKSwgQyhjYzFhZmNmZDk5YTE4MGU3KSwgQyg1MTdkZDVlM2Fj
ZjY2MTEwKSwKKyAgICAgQyg3ZGQzYWQ5ZTg5NzhiMzBkKSwgQygxZjZkNWRmYzcwZGU4MTJiKSwg
Qyg5NDdkYWFiYTY0NDFhYWYzKSwKKyAgICAgQyg0MTlmOTUzYil9LAorICAgIHtDKDM1OGQ3YzA0
NzZhMDQ0Y2QpLCBDKGUwYjdiNDdiY2JkODg1NGYpLCBDKGZmYjQyZWM2OTY3MDU1MTkpLAorICAg
ICBDKGQ0NWU0NGMyNjNlOTVjMzgpLCBDKGRmNjFkYjUzOTIzYWUzYjEpLCBDKGYyYmM5NDhjYzRm
YzAyN2MpLAorICAgICBDKDhhODAwMGM2MDY2NzcyYTMpLCBDKGQ0NWU0NGMyNjNlOTVjMzgpLCBD
KGRmNjFkYjUzOTIzYWUzYjEpLAorICAgICBDKGYyYmM5NDhjYzRmYzAyN2MpLCBDKDhhODAwMGM2
MDY2NzcyYTMpLCBDKDlmZDkzYzk0MmQzMWZhMTcpLAorICAgICBDKGQ3NjUxZWNlYmUwOWNiZDMp
LCBDKDY4NjgyY2VmYjZhNmYxNjUpLCBDKDU0MWViOTlhMmRjZWU0MGUpLAorICAgICBDKDIwZTll
NzZkKX0sCisgICAge0MoYjBjNDhkZjE0Mjc1MjY1YSksIEMoOWRhNDQ0ODk3NTkwNWVmYSksIEMo
ZDcxNjYxOGU0MTRjZWI2ZCksCisgICAgIEMoMzBlODg4YWY3MGRmMWU1NiksIEMoNGJlZTU0YmQ0
NzI3NGY2OSksIEMoMTc4YjQwNTllMWEwYWZlNSksCisgICAgIEMoNmUyYzk2YjdmNThlNTE3OCks
IEMoMzBlODg4YWY3MGRmMWU1NiksIEMoNGJlZTU0YmQ0NzI3NGY2OSksCisgICAgIEMoMTc4YjQw
NTllMWEwYWZlNSksIEMoNmUyYzk2YjdmNThlNTE3OCksIEMoYmI0MjlkM2I5Mjc1ZTliYyksCisg
ICAgIEMoYzE5ODAxM2YwOWNhZmRjNiksIEMoZWMwYTZlZTRmYjVkZTM0OCksIEMoNzQ0ZTFlOGVk
MmViMWViMCksCisgICAgIEMoNjQ2ZjBmZjgpfSwKKyAgICB7QyhkYWE3MGJiMzAwOTU2NTg4KSwg
Qyg0MTBlYTY4ODNhMjQwYzZkKSwgQyhmNWM4MjM5ZmI1NjczZWIzKSwKKyAgICAgQyg4YjFkN2Ji
NDkwM2MxMDVmKSwgQyhjZmIxYzMyMmI3Mzg5MWQ0KSwgQyg1ZjNiNzkyYjIyZjA3Mjk3KSwKKyAg
ICAgQyhmZDY0MDYxZjhiZTg2ODExKSwgQyg4YjFkN2JiNDkwM2MxMDVmKSwgQyhjZmIxYzMyMmI3
Mzg5MWQ0KSwKKyAgICAgQyg1ZjNiNzkyYjIyZjA3Mjk3KSwgQyhmZDY0MDYxZjhiZTg2ODExKSwg
QygxZDJkYjcxMjkyMWNmYzJiKSwKKyAgICAgQyhjZDFiMmIyZjJjZWUxOGFlKSwgQyg2YjZmODc5
MGRjN2ZlYjA5KSwgQyg0NmMxNzllZmEzZjBmNTE4KSwKKyAgICAgQyhlZWI3ZWNhOCl9LAorICAg
IHtDKDRlYzk3YTIwYjZjNGM3YzIpLCBDKDU5MTNiMWNkNDU0ZjI5ZmQpLCBDKGE5NjI5ZjlkYWYw
NmQ2ODUpLAorICAgICBDKDg1MmM5NDk5MTU2YThmMyksIEMoM2ExODBhNmFiZmI3OTAxNiksIEMo
OWZjM2M0NzY0MDM3YzNjOSksCisgICAgIEMoMjg5MGM0MmZjMGQ5NzJjZiksIEMoODUyYzk0OTkx
NTZhOGYzKSwgQygzYTE4MGE2YWJmYjc5MDE2KSwKKyAgICAgQyg5ZmMzYzQ3NjQwMzdjM2M5KSwg
QygyODkwYzQyZmMwZDk3MmNmKSwgQygxZjkyMjMxZDRlNTM3NjUxKSwKKyAgICAgQyhmYWI4YmIw
N2FhNTRiN2I5KSwgQyhlMDVkMmQ3NzFjNDg1ZWQ0KSwgQyhkNTBiMzRiZjgwOGNhNzMxKSwgQyg4
MTEyYmI5KX0sCisgICAge0MoNWMzMzIzNjI4NDM1YTJlOCksIEMoMWJlYTQ1Y2U5ZTcyYTZlMyks
IEMoOTA0ZjBhNzAyN2RkYjUyZSksCisgICAgIEMoOTM5ZjMxZGUxNGRjZGM3YiksIEMoYTY4ZmRm
NDM3OWRmMDY4KSwgQyhmMTY5ZTFmMGI4MzUyNzlkKSwKKyAgICAgQyg3NDk4ZTQzMmY5NjE5YjI3
KSwgQyg5MzlmMzFkZTE0ZGNkYzdiKSwgQyhhNjhmZGY0Mzc5ZGYwNjgpLAorICAgICBDKGYxNjll
MWYwYjgzNTI3OWQpLCBDKDc0OThlNDMyZjk2MTliMjcpLCBDKDFhYTJhMWYxMTA4OGU3ODUpLAor
ICAgICBDKGQ2YWQ3MmY0NTcyOWRlNzgpLCBDKDlhNjM4MTQxNTdjODAyNjcpLCBDKDU1NTM4ZTM1
YzY0OGU0MzUpLAorICAgICBDKDg1YTZkNDc3KX0sCisgICAge0MoYzFlZjI2YmVhMjYwYWJkYiks
IEMoNmVlNDIzZjIxMzdmOTI4MCksIEMoZGYyMTE4Yjk0NmVkMGI0MyksCisgICAgIEMoMTFiODdm
YjFiOTAwY2MzOSksIEMoZTMzZTU5YjkwZGQ4MTViMSksIEMoYWE2Y2I1YzRiYWZhZTc0MSksCisg
ICAgIEMoNzM5Njk5OTUxY2E4YzcxMyksIEMoMTFiODdmYjFiOTAwY2MzOSksIEMoZTMzZTU5Yjkw
ZGQ4MTViMSksCisgICAgIEMoYWE2Y2I1YzRiYWZhZTc0MSksIEMoNzM5Njk5OTUxY2E4YzcxMyks
IEMoMmI0Mzg5YTk2NzMxMDA3NyksCisgICAgIEMoMWQ1MzgyNTY4YTMxYzJjOSksIEMoNTVkMWU3
ODdmYmU2ODk5MSksIEMoMjc3YzI1NGJjMzEzMDFlNyksCisgICAgIEMoNTZmNzZjODQpfSwKKyAg
ICB7Qyg2YmU3MzgxYjExNWQ2NTNhKSwgQyhlZDA0NjE5MDc1OGVhNTExKSwgQyhkZTZhNDVmZmMz
ZWQxMTU5KSwKKyAgICAgQyhhNjQ3NjBlNDA0MTQ0N2QwKSwgQyhlM2VhYzQ5ZjNlMGM1MTA5KSwg
QyhkZDg2YzRkNGNiNjI1OGUyKSwKKyAgICAgQyhlZmE5ODU3YWZkMDQ2YzdmKSwgQyhhNjQ3NjBl
NDA0MTQ0N2QwKSwgQyhlM2VhYzQ5ZjNlMGM1MTA5KSwKKyAgICAgQyhkZDg2YzRkNGNiNjI1OGUy
KSwgQyhlZmE5ODU3YWZkMDQ2YzdmKSwgQyhmYWI3OTNkYWU4MjQ2ZjE2KSwKKyAgICAgQyhjOWUz
YjEyMWIzMWQwOTRjKSwgQyhhMmEwZjU1ODU4NDY1MjI2KSwgQyhkYmE2ZjBmZjM5NDM2MzQ0KSwK
KyAgICAgQyg5YWY0NWQ1NSl9LAorICAgIHtDKGFlM2VlY2UxNzExYjIxMDUpLCBDKDE0ZmQzZjQw
MjdmODFhNGEpLCBDKGFiYjdlNDUxNzdkMTUxZGIpLAorICAgICBDKDUwMWYzZTliMTg4NjFlNDQp
LCBDKDQ2NTIwMTE3MDA3NGU3ZDgpLCBDKDk2ZDVjOTE5NzBmMmNiMTIpLAorICAgICBDKDQwZmQy
OGM0MzUwNmM5NWQpLCBDKDUwMWYzZTliMTg4NjFlNDQpLCBDKDQ2NTIwMTE3MDA3NGU3ZDgpLAor
ICAgICBDKDk2ZDVjOTE5NzBmMmNiMTIpLCBDKDQwZmQyOGM0MzUwNmM5NWQpLCBDKGU4NmM0YjA3
ODAyYWFmZjMpLAorICAgICBDKGYzMTdkMTQxMTIzNzJhNzApLCBDKDY0MWIxM2U1ODc3MTE2NTAp
LCBDKDQ5MTU0MjFhYjEwOTBlYWEpLAorICAgICBDKGQxYzMzNzYwKX0sCisgICAge0MoMzc2YzI4
NTg4YjhmYjM4OSksIEMoNmIwNDVlODRkODQ5MWVkMiksIEMoNGU4NTdlZmZiN2Q0ZTdkYyksCisg
ICAgIEMoMTU0ZGQ3OWZkMmY5ODRiNCksIEMoZjExMTcxNzc1NjIyYzFjMyksIEMoMWZiZTMwOTgy
ZTc4ZTZmMCksCisgICAgIEMoYTQ2MGExNWRjZjMyN2U0NCksIEMoMTU0ZGQ3OWZkMmY5ODRiNCks
IEMoZjExMTcxNzc1NjIyYzFjMyksCisgICAgIEMoMWZiZTMwOTgyZTc4ZTZmMCksIEMoYTQ2MGEx
NWRjZjMyN2U0NCksIEMoZjM1OWUwOTAwY2MzZDU4MiksCisgICAgIEMoN2UxMTA3MDQ0Nzk3NmQw
MCksIEMoMzI0ZTZkYWYyNzZlYTRiNSksIEMoN2FhNmUyZGYwY2M5NGZhMiksCisgICAgIEMoYzU2
YmJmNjkpfSwKKyAgICB7Qyg1OGQ5NDM1MDNiYjY3NDhmKSwgQyg0MTljNmM4ZTg4YWM3MGY2KSwg
Qyg1ODY3NjBjYmYzZDNkMzY4KSwKKyAgICAgQyhiN2UxNjQ5NzlkNWNjZmMxKSwgQygxMmNiNDIz
MGQyNmJmMjg2KSwgQyhmMWJmOTEwZDQ0YmQ4NGNiKSwKKyAgICAgQyhiMzJjMjRjNmE0MDI3Miks
IEMoYjdlMTY0OTc5ZDVjY2ZjMSksIEMoMTJjYjQyMzBkMjZiZjI4NiksCisgICAgIEMoZjFiZjkx
MGQ0NGJkODRjYiksIEMoYjMyYzI0YzZhNDAyNzIpLCBDKDExZWQxMmUzNGM0OGMwMzkpLAorICAg
ICBDKGIwYzI1MzhlNTFkMGE2YWMpLCBDKDQyNjliYjc3M2UxZDU1M2EpLCBDKGUzNWE5ZGJhYmQz
NDg2NyksIEMoYWJlY2ZiOWIpfSwKKyAgICB7QyhkZmZmNTk4OWY1Y2ZkOWExKSwgQyhiY2VlMmU3
ZWEzYTk2ZjgzKSwgQyg2ODFjNzg3NGFkYjI5MDE3KSwKKyAgICAgQygzZmY2YzhhYzdjMzZiNjNh
KSwgQyg0OGJjODgzMWQ4NDllMzI2KSwgQygzMGIwNzhlNzZiMDIxNGUyKSwKKyAgICAgQyg0Mjk1
NGU2YWQ3MjFiOTIwKSwgQygzZmY2YzhhYzdjMzZiNjNhKSwgQyg0OGJjODgzMWQ4NDllMzI2KSwK
KyAgICAgQygzMGIwNzhlNzZiMDIxNGUyKSwgQyg0Mjk1NGU2YWQ3MjFiOTIwKSwgQyhmOWFlYjMz
ZDE2NGI0NDcyKSwKKyAgICAgQyg3YjM1M2IxMTA4MzFkYmRjKSwgQygxNmY2NGM4MmY0NGFlMTdi
KSwgQyhiNzEyNDRjYzE2NGIzYjJiKSwKKyAgICAgQyg4ZGUxMzI1NSl9LAorICAgIHtDKDdmYjE5
ZWIxYTQ5NmU4ZjUpLCBDKGQ0OWU1ZGZkYjVjMDgzM2YpLCBDKGMwZDVkN2IyZjdjNDhkYzcpLAor
ICAgICBDKDFhNTczMTNhMzJmMjJkZGUpLCBDKDMwYWY0NmU0OTg1MGJmOGIpLCBDKGFhMGZlOGQx
MmY4MDhmODMpLAorICAgICBDKDQ0M2UzMWQ3MDg3M2JiNmIpLCBDKDFhNTczMTNhMzJmMjJkZGUp
LCBDKDMwYWY0NmU0OTg1MGJmOGIpLAorICAgICBDKGFhMGZlOGQxMmY4MDhmODMpLCBDKDQ0M2Uz
MWQ3MDg3M2JiNmIpLCBDKGJiZWI2N2M0OWM5ZmRjMTMpLAorICAgICBDKDE4ZjFlMmE4OGY1OWY5
ZDUpLCBDKGZiMWIwNTAzOGU1ZGVmMTEpLCBDKGQwNDUwYjVjZTRjMzljNTIpLAorICAgICBDKGE5
OGVlMjk5KX0sCisgICAge0MoNWRiYTViMGRhZGNjZGJhYSksIEMoNGJhOGRhOGRlZDg3ZmNkYyks
IEMoZjY5M2ZkZDI1YmFkZjJmMCksCisgICAgIEMoZTkwMjllNjM2NDI4NjU4NyksIEMoYWU2OWY0
OWVjYjQ2NzI2YyksIEMoMThlMDAyNjc5MjE3YzQwNSksCisgICAgIEMoYmQ2ZDY2ZTg1MzMyYWU5
ZiksIEMoZTkwMjllNjM2NDI4NjU4NyksIEMoYWU2OWY0OWVjYjQ2NzI2YyksCisgICAgIEMoMThl
MDAyNjc5MjE3YzQwNSksIEMoYmQ2ZDY2ZTg1MzMyYWU5ZiksIEMoNmJmMzMwYjFjMzUzZGQyYSks
CisgICAgIEMoNzRlOWYyZTcxZTNhNDE1MiksIEMoM2Y4NTU2MGI1MGY2YzQxMyksIEMoZDMzYTUy
YTQ3ZWFlZDJiNCksCisgICAgIEMoMzAxNWY1NTYpfSwKKyAgICB7Qyg2ODhiZWY0YjEzNWE2ODI5
KSwgQyg4ZDMxZDgyYWJjZDU0ZThlKSwgQyhmOTVmOGEzMGQ1NTAzNmQ3KSwKKyAgICAgQygzZDhj
OTBlMjdhYTJlMTQ3KSwgQygyZWM5MzdjZTBhYTIzNmI0KSwgQyg4OWI1NjM5OTZkM2EwYjc4KSwK
KyAgICAgQygzOWIwMjQxM2IyM2MzZjA4KSwgQygzZDhjOTBlMjdhYTJlMTQ3KSwgQygyZWM5Mzdj
ZTBhYTIzNmI0KSwKKyAgICAgQyg4OWI1NjM5OTZkM2EwYjc4KSwgQygzOWIwMjQxM2IyM2MzZjA4
KSwgQyg4ZDQ3NWEyZTY0ZmFmMmQyKSwKKyAgICAgQyg0ODU2N2Y3ZGNhNDZlY2FmKSwgQygyNTRj
ZGEwOGQ1Zjg3YTZkKSwgQyhlYzZhZTlmNzI5YzQ3MDM5KSwKKyAgICAgQyg1YTQzMGUyOSl9LAor
ICAgIHtDKGQ4MzIzYmUwNTQzM2E0MTIpLCBDKDhkNDhmYTJiMmI3NjE0MWQpLCBDKDNkMzQ2ZjIz
OTc4MzM2YTUpLAorICAgICBDKDRkNTBjNzUzNzU2MjAzM2YpLCBDKDU3ZGM3NjI1YjYxZGZlODkp
LCBDKDk3MjNhOWY0YzA4YWQ5M2EpLAorICAgICBDKDUzMDk1OTZmNDhhYjQ1NmIpLCBDKDRkNTBj
NzUzNzU2MjAzM2YpLCBDKDU3ZGM3NjI1YjYxZGZlODkpLAorICAgICBDKDk3MjNhOWY0YzA4YWQ5
M2EpLCBDKDUzMDk1OTZmNDhhYjQ1NmIpLCBDKDdlNDUzMDg4MDE5ZDIyMGYpLAorICAgICBDKDg3
NzYwNjdiYTZhYjk3MTQpLCBDKDY3ZTFkMDZiZDE5NWRlMzkpLCBDKDc0YTFhMzJmODk5NGI5MTgp
LAorICAgICBDKDI3OTdhZGQwKX0sCisgICAge0MoM2I1NDA0Mjc4YTU1YTdmYyksIEMoMjNjYTBi
MzI3YzJkMGE4MSksIEMoYTZkNjUzMjk1NzFjODkyYyksCisgICAgIEMoNDU1MDQ4MDFlMGU2MDY2
YiksIEMoODZlNmM2ZDYxNTJhM2QwNCksIEMoNGYzZGIxYzUzZWNhMjk1MiksCisgICAgIEMoZDI0
ZDY5YjNlOWVmMTBmMyksIEMoNDU1MDQ4MDFlMGU2MDY2YiksIEMoODZlNmM2ZDYxNTJhM2QwNCks
CisgICAgIEMoNGYzZGIxYzUzZWNhMjk1MiksIEMoZDI0ZDY5YjNlOWVmMTBmMyksIEMoOTNhMGRl
MjIxOWU2NmE3MCksCisgICAgIEMoODkzMmM3MTE1Y2NiMWY4YSksIEMoNWVmNTAzZmRmMjg0MWE4
YyksIEMoMzgwNjRkZDllZmE4MGE0MSksCisgICAgIEMoMjdkNTUwMTYpfSwKKyAgICB7QygyYTk2
YTNmOTZjNWU5YmJjKSwgQyg4Y2FmODU2NmUyMTJkZGE4KSwgQyg5MDRkZTU1OWNhMTZlNDVlKSwK
KyAgICAgQyhmMTNiYzJkOWMyZmUyMjJlKSwgQyhiZTRjY2VjOWE2Y2RjY2ZkKSwgQygzN2IyY2Jk
ZDk3M2EzYWM5KSwKKyAgICAgQyg3YjMyMjNjZDljOTQ5N2JlKSwgQyhmMTNiYzJkOWMyZmUyMjJl
KSwgQyhiZTRjY2VjOWE2Y2RjY2ZkKSwKKyAgICAgQygzN2IyY2JkZDk3M2EzYWM5KSwgQyg3YjMy
MjNjZDljOTQ5N2JlKSwgQyhkNTkwNDQ0MGYzNzZmODg5KSwKKyAgICAgQyg2MmIxMzE4NzY5OWM0
NzNjKSwgQyg0NzUxYjg5MjUxZjI2NzI2KSwgQyg5NTAwZDg0ZmEzYTYxYmE4KSwKKyAgICAgQyg4
NDk0NWE4Mil9LAorICAgIHtDKDIyYmViZmRjYzI2ZDE4ZmYpLCBDKDRiNGQ4ZGNiMTA4MDdiYTEp
LCBDKDQwMjY1ZWVlMzBjNmI4OTYpLAorICAgICBDKDM3NTJiNDIzMDczYjExOWEpLCBDKDM3N2Rj
NWViN2M2NjJiZGIpLCBDKDJiOWYwN2Y5M2E2YzI1YjkpLAorICAgICBDKDk2ZjI0ZWRlMmJkYzA3
MTgpLCBDKDM3NTJiNDIzMDczYjExOWEpLCBDKDM3N2RjNWViN2M2NjJiZGIpLAorICAgICBDKDJi
OWYwN2Y5M2E2YzI1YjkpLCBDKDk2ZjI0ZWRlMmJkYzA3MTgpLCBDKGY3Njk5YjEyYzMxNDE3YmQp
LAorICAgICBDKDE3YjM2NmY0MDFjNThiMiksIEMoYmY2MDE4OGQ1ZjQzN2IzNyksIEMoNDg0NDM2
ZTU2ZGYxN2YwNCksIEMoM2VmN2UyMjQpfSwKKyAgICB7Qyg2MjdhMjI0OWVjNmJiY2MyKSwgQyhj
MDU3OGI0NjJhNDY3MzVhKSwgQyg0OTc0YjhlZTFjMmQ0ZjFmKSwKKyAgICAgQyhlYmRiYjkxOGVi
NmQ4MzdmKSwgQyg4ZmI1ZjIxOGRkODQxNDdjKSwgQyhjNzdkZDFmODgxZGYyYzU0KSwKKyAgICAg
Qyg2MmVhYzI5OGVjMjI2ZGMzKSwgQyhlYmRiYjkxOGViNmQ4MzdmKSwgQyg4ZmI1ZjIxOGRkODQx
NDdjKSwKKyAgICAgQyhjNzdkZDFmODgxZGYyYzU0KSwgQyg2MmVhYzI5OGVjMjI2ZGMzKSwgQyg0
M2VkZWQ4M2M0YjYwYmQwKSwKKyAgICAgQyg5YTBhNDAzYjU0ODc1MDNiKSwgQygyNWYzMDVkOTE0
N2YwYmRhKSwgQygzYWQ0MTdmNTExYmMxZTY0KSwKKyAgICAgQygzNWVkOGRjOCl9LAorICAgIHtD
KDNhYmFmMTY2N2JhMmYzZTApLCBDKGVlNzg0NzZiNWVlYWRjMSksIEMoN2U1NmFjMGE2Y2E0ZjNm
NCksCisgICAgIEMoZjFiOWI0MTNkZjlkNzllZCksIEMoYTc2MjFiNmZkMDJkYjUwMyksIEMoZDky
ZjdiYTk5MjhhNGZmZSksCisgICAgIEMoNTNmNTZiYWJkY2FlOTZhNiksIEMoZjFiOWI0MTNkZjlk
NzllZCksIEMoYTc2MjFiNmZkMDJkYjUwMyksCisgICAgIEMoZDkyZjdiYTk5MjhhNGZmZSksIEMo
NTNmNTZiYWJkY2FlOTZhNiksIEMoNTMwMmI4OWZjNDg3MTNhYiksCisgICAgIEMoZDAzZTNiMDRk
YmU3YTJmMiksIEMoZmE3NGVmOGFmNmQzNzZhNyksIEMoMTAzYzhjZGVhMTA1MGVmMiksCisgICAg
IEMoNmE3NWU0M2QpfSwKKyAgICB7QygzOTMxYWM2OGM1ZjFiMmM5KSwgQyhlZmUzODkyMzYzYWIw
ZmIwKSwgQyg0MGI3MDcyNjgzMzdjZDM2KSwKKyAgICAgQyhhNTNhNmI2NGIxYWM4NWM5KSwgQyhk
NTBlN2Y4NmVlMWI4MzJiKSwgQyg3YmFiMDhmZGQyNmJhMGE0KSwKKyAgICAgQyg3NTg3NzQzYzE4
ZmUyNDc1KSwgQyhhNTNhNmI2NGIxYWM4NWM5KSwgQyhkNTBlN2Y4NmVlMWI4MzJiKSwKKyAgICAg
Qyg3YmFiMDhmZGQyNmJhMGE0KSwgQyg3NTg3NzQzYzE4ZmUyNDc1KSwgQyhlM2I1ZDVkNDkwY2Y1
NzYxKSwKKyAgICAgQyhkZmMwNTNmN2QwNjVlZGQ1KSwgQyg0MmZmZDhkNWZiNzAxMjlmKSwgQyg1
OTljYTM4Njc3Y2NjZGMzKSwKKyAgICAgQygyMzVkOTgwNSl9LAorICAgIHtDKGI5OGZiMDYwNmY0
MTY3NTQpLCBDKDQ2YTZlNTU0N2JhOTljMWUpLCBDKGM5MDlkODIxMTJhOGVkMiksCisgICAgIEMo
ZGJmYWFlOTY0MmIzMjA1YSksIEMoZjY3NmExMzM5NDAyYmNiOSksIEMoZjRmMTJhNWIxYWMxMWYy
OSksCisgICAgIEMoN2RiOGJhZDgxMjQ5ZGVlNCksIEMoZGJmYWFlOTY0MmIzMjA1YSksIEMoZjY3
NmExMzM5NDAyYmNiOSksCisgICAgIEMoZjRmMTJhNWIxYWMxMWYyOSksIEMoN2RiOGJhZDgxMjQ5
ZGVlNCksIEMoYjI2ZTQ2ZjJkYTk1OTIyZSksCisgICAgIEMoMmFhZWRkNWUxMmUzYzYxMSksIEMo
YTBlMmQ5MDgyOTY2MDc0KSwgQyhjNjRkYThhMTY3YWRkNjNkKSwgQyhmN2Q2OTU3Mil9LAorICAg
IHtDKDdmNzcyOWEzM2U1OGZjYzQpLCBDKDJlNGJjMWU3YTAyM2VhZDQpLCBDKGU3MDcwMDhlYTdj
YTYyMjIpLAorICAgICBDKDQ3NDE4YTcxODAwMzM0YTApLCBDKGQxMDM5NWQ4ZmM2NGQ4YTQpLCBD
KDgyNTdhMzAwNjJjYjY2ZiksCisgICAgIEMoNjc4NmY5YjJkYzFmZjE4YSksIEMoNDc0MThhNzE4
MDAzMzRhMCksIEMoZDEwMzk1ZDhmYzY0ZDhhNCksCisgICAgIEMoODI1N2EzMDA2MmNiNjZmKSwg
Qyg2Nzg2ZjliMmRjMWZmMThhKSwgQyg1NjMzZjQzN2JiMmYxODBmKSwKKyAgICAgQyhlNWEzYTQw
NTczN2QyMmQ2KSwgQyhjYTBmZjFlZjZmN2YwYjc0KSwgQyhkMGFlNjAwNjg0YjE2ZGY4KSwKKyAg
ICAgQyhiYWNkMDE5OSl9LAorICAgIHtDKDQyYTBhYTljZTgyODQ4YjMpLCBDKDU3MjMyNzMwZTZi
ZWUxNzUpLCBDKGY4OWJiM2YzNzA3ODIwMzEpLAorICAgICBDKGNhYTMzY2Y5YjRmNjYxOWMpLCBD
KGIyYzg2NDhhZDQ5YzIwOWYpLCBDKDllODllY2UwNzEyZGIxYzApLAorICAgICBDKDEwMWQ4Mjc0
YTcxMWE1NGIpLCBDKGNhYTMzY2Y5YjRmNjYxOWMpLCBDKGIyYzg2NDhhZDQ5YzIwOWYpLAorICAg
ICBDKDllODllY2UwNzEyZGIxYzApLCBDKDEwMWQ4Mjc0YTcxMWE1NGIpLCBDKDUzOGU3OWYxZTcw
MTM1Y2QpLAorICAgICBDKGUxZjVhNzZmOTgzYzg0NGUpLCBDKDY1M2MwODJmZDY2MDg4ZmMpLCBD
KDFiOWM5YjQ2NGI2NTQ5NTgpLAorICAgICBDKGU0MjhmNTBlKX0sCisgICAge0MoNmIyYzZkMzg0
MDhhNDg4OSksIEMoZGUzZWY2ZjY4ZmIyNTg4NSksIEMoMjA3NTRmNDU2YzIwMzM2MSksCisgICAg
IEMoOTQxZjUwMjNjMGM5NDNmOSksIEMoZGZkZWI5NTY0ZmQ2NmYyNCksIEMoMjE0MGNlYzcwNmI5
ZDQwNiksCisgICAgIEMoN2IyMjQyOWIxMzFlOWM3MiksIEMoOTQxZjUwMjNjMGM5NDNmOSksIEMo
ZGZkZWI5NTY0ZmQ2NmYyNCksCisgICAgIEMoMjE0MGNlYzcwNmI5ZDQwNiksIEMoN2IyMjQyOWIx
MzFlOWM3MiksIEMoOTQyMTVjMjJlYjk0MGY0NSksCisgICAgIEMoZDI4YjllZDQ3NGY3MjQ5YSks
IEMoNmYyNWU4OGYyZmJmOWY1NiksIEMoYjY3MThmOWU2MDViMzhhYyksCisgICAgIEMoODFlYWFh
ZDMpfSwKKyAgICB7Qyg5MzAzODBhMzc0MWU4NjJhKSwgQygzNDhkMjg2MzhkYzcxNjU4KSwgQyg4
OWRlZGNmZDE2NTRlYTBkKSwKKyAgICAgQyg3ZTdmNjE2ODQwODAxMDYpLCBDKDgzN2FjZTk3OTQ1
ODI5NzYpLCBDKDVhYzhjYTc2YTM1N2ViMWIpLAorICAgICBDKDMyYjU4MzA4NjI1NjYxZmIpLCBD
KDdlN2Y2MTY4NDA4MDEwNiksIEMoODM3YWNlOTc5NDU4Mjk3NiksCisgICAgIEMoNWFjOGNhNzZh
MzU3ZWIxYiksIEMoMzJiNTgzMDg2MjU2NjFmYiksIEMoYzA5NzA1YzQ1NzIwMjVkOSksCisgICAg
IEMoZjkxODdmNmFmMDI5MTMwMyksIEMoMWMwZWRkOGVlNGIwMjUzOCksIEMoZTZjYjEwNWRhYTA1
NzhhKSwgQyhhZGRiZDNlMyl9LAorICAgIHtDKDk0ODA4YjVkMmFhMjVmOWEpLCBDKGNlYzcyOTY4
MTI4MTk1ZTApLCBDKGQ5ZjRkYTJiZGMxZTEzMGYpLAorICAgICBDKDI3MmQ4ZGQ3NGYzMDA2Y2Mp
LCBDKGVjNmMyYWQxZWMwM2Y1NTQpLCBDKDRhZDI3NmIyNDlhNWQ1ZGQpLAorICAgICBDKDU0OWEy
MmExN2MwY2RlMTIpLCBDKDI3MmQ4ZGQ3NGYzMDA2Y2MpLCBDKGVjNmMyYWQxZWMwM2Y1NTQpLAor
ICAgICBDKDRhZDI3NmIyNDlhNWQ1ZGQpLCBDKDU0OWEyMmExN2MwY2RlMTIpLCBDKDYwMjExOWNi
ODI0ZDdjZGUpLAorICAgICBDKGY0ZDNjZWYyNDBlZjM1ZmEpLCBDKGU4ODk4OTVlMDE5MTFiYzcp
LCBDKDc4NWE3ZTVhYzIwZTg1MmIpLAorICAgICBDKGU2NmRiY2EwKX0sCisgICAge0MoYjMxYWJi
MDhhZTZlM2QzOCksIEMoOWViOWE5NWNiZDllODIyMyksIEMoODAxOWU3OWI3ZWU5NGVhOSksCisg
ICAgIEMoN2IyMjcxYTdhMzI0OGUyMiksIEMoM2I0ZjcwMGU1YTBiYTUyMyksIEMoOGViYzUyMGMy
MjcyMDZmZSksCisgICAgIEMoZGEzZjg2MTQ5MGY1ZDI5MSksIEMoN2IyMjcxYTdhMzI0OGUyMiks
IEMoM2I0ZjcwMGU1YTBiYTUyMyksCisgICAgIEMoOGViYzUyMGMyMjcyMDZmZSksIEMoZGEzZjg2
MTQ5MGY1ZDI5MSksIEMoZDA4YTY4OWY5ZjNhYTYwZSksCisgICAgIEMoNTQ3YzFiOTdhMDY4NjYx
ZiksIEMoNGIxNWE2N2ZhMjkxNzJmMCksIEMoZWFmNDBjMDg1MTkxZDgwZiksCisgICAgIEMoYWZl
MTFmZDUpfSwKKyAgICB7QyhkY2NiNTUzNGE4OTNlYTFhKSwgQyhjZTcxYzM5ODcwOGM2MTMxKSwg
QyhmZTIzOTYzMTU0NTdjMTY0KSwKKyAgICAgQygzZjEyMjlmNGQwZmQ5NmZiKSwgQygzMzEzMGFh
NWZhOWQ0M2YyKSwgQyhlNDI2OTNkNWIzNGU2M2FiKSwKKyAgICAgQygyZjRlZjJiZTY3ZjYyMTA0
KSwgQygzZjEyMjlmNGQwZmQ5NmZiKSwgQygzMzEzMGFhNWZhOWQ0M2YyKSwKKyAgICAgQyhlNDI2
OTNkNWIzNGU2M2FiKSwgQygyZjRlZjJiZTY3ZjYyMTA0KSwgQygzNzJlNTE1MzUxNmUzN2I5KSwK
KyAgICAgQyhhZjllYzE0MmFiMTJjYzg2KSwgQyg3Nzc5MjBjMDkzNDVlMzU5KSwgQyhlN2M0YTM4
M2JlZjhhZGM2KSwKKyAgICAgQyhhNzFhNDA2Zil9LAorICAgIHtDKDYzNjkxNjM1NjU4MTRkZTYp
LCBDKDhmZWI4NmZiMzhkMDhjMmYpLCBDKDQ5NzY5MzM0ODVjYzlhMjApLAorICAgICBDKDdkM2U4
MmQ1YmEyOWE5MGQpLCBDKGQ1OTgzY2M5M2E5ZDEyNmEpLCBDKDM3ZTlkZmQ5NTBlN2I2OTIpLAor
ICAgICBDKDgwNjczYmU2YTc4ODhiODcpLCBDKDdkM2U4MmQ1YmEyOWE5MGQpLCBDKGQ1OTgzY2M5
M2E5ZDEyNmEpLAorICAgICBDKDM3ZTlkZmQ5NTBlN2I2OTIpLCBDKDgwNjczYmU2YTc4ODhiODcp
LCBDKDU3ZjczMmRjNjAwODA4YmMpLAorICAgICBDKDU5NDc3MTk5ODAyY2M3OGIpLCBDKGY4MjQ4
MTBlYjhmMmMyZGUpLCBDKGM0YTM0MzdmMDViM2I2MWMpLAorICAgICBDKDlkOTBlYWY1KX0sCisg
ICAge0MoZWRlZTRmZjI1M2Q5ZjliMyksIEMoOTZlZjc2ZmIyNzllZjBhZCksIEMoYTRkMjA0ZDE3
OWRiMjQ2MCksCisgICAgIEMoMWYzZGNkZmE1MTM1MTJkNiksIEMoNGRjN2VjMDcyODMxMTdlNCks
IEMoNDQzOGJhZTg4YWUyOGJmOSksCisgICAgIEMoYWE3ZWFlNzJjOTI0NGEwZCksIEMoMWYzZGNk
ZmE1MTM1MTJkNiksIEMoNGRjN2VjMDcyODMxMTdlNCksCisgICAgIEMoNDQzOGJhZTg4YWUyOGJm
OSksIEMoYWE3ZWFlNzJjOTI0NGEwZCksIEMoYjlhZWRjOGQzZWNjNzJkZiksCisgICAgIEMoYjc1
YThlYjA5MGE3N2Q2MiksIEMoNmIxNTY3N2Y5Y2Q5MTUwNyksIEMoNTFkODI4MmNiM2E5ZGRiZiks
CisgICAgIEMoNjY2NWRiMTApfSwKKyAgICB7Qyg5NDE5OTNkZjZlNjMzMjE0KSwgQyg5MjliYzFi
ZWNhNWI3MmM2KSwgQygxNDFmYzUyYjhkNTU1NzJkKSwKKyAgICAgQyhiM2I3ODJhZDMwOGYyMWVk
KSwgQyg0ZjI2NzY0ODUwNDFkZWUwKSwgQyhiZmUyNzlhZWQ1Y2I0YmM4KSwKKyAgICAgQygyYTYy
NTA4YTQ2N2EyMmZmKSwgQyhiM2I3ODJhZDMwOGYyMWVkKSwgQyg0ZjI2NzY0ODUwNDFkZWUwKSwK
KyAgICAgQyhiZmUyNzlhZWQ1Y2I0YmM4KSwgQygyYTYyNTA4YTQ2N2EyMmZmKSwgQyhlNzRkMjll
YWI3NDIzODVkKSwKKyAgICAgQyg1NmIwNWNkOTBlY2ZjMjkzKSwgQyhjNjAzNzI4ZWE3M2Y4ODQ0
KSwgQyg4NjM4ZmNkMjFiYzY5MmM0KSwKKyAgICAgQyg5Yzk3N2NiZil9LAorICAgIHtDKDg1OTgz
ODI5M2Y2NGNkNGMpLCBDKDQ4NDQwM2IzOWQ0NGFkNzkpLCBDKGJmNjc0ZTY0ZDY0YjkzMzkpLAor
ICAgICBDKDQ0ZDY4YWZkYTk1NjhmMDgpLCBDKDQ3ODU2OGVkNTFjYTFkNjUpLCBDKDY3OWMyMDRh
ZDNkOWU3NjYpLAorICAgICBDKGIyOGU3ODg4Nzg0ODhkYzEpLCBDKDQ0ZDY4YWZkYTk1NjhmMDgp
LCBDKDQ3ODU2OGVkNTFjYTFkNjUpLAorICAgICBDKDY3OWMyMDRhZDNkOWU3NjYpLCBDKGIyOGU3
ODg4Nzg0ODhkYzEpLCBDKGQwMDFhODRkM2E4NGZhZTYpLAorICAgICBDKGQzNzY5NThmZTRjYjkx
M2UpLCBDKDE3NDM1Mjc3ZTM2Yzg2ZjApLCBDKDIzNjU3YjI2M2MzNDdhYTYpLAorICAgICBDKGVl
ODNkZGQ0KX0sCisgICAge0MoYzE5YjU2NDhlMGQ5ZjU1NSksIEMoMzI4ZTQ3YjJiNzU2Mjk5Myks
IEMoZTc1NmI5MmJhNGJkNmE1MSksCisgICAgIEMoYzMzMTRlMzYyNzY0ZGRiOCksIEMoNjQ4MWMw
ODRlZTllYzZiNSksIEMoZWRlMjNmYjlhMjUxNzcxKSwKKyAgICAgQyhiZDYxN2YyNjQzMzI0NTkw
KSwgQyhjMzMxNGUzNjI3NjRkZGI4KSwgQyg2NDgxYzA4NGVlOWVjNmI1KSwKKyAgICAgQyhlZGUy
M2ZiOWEyNTE3NzEpLCBDKGJkNjE3ZjI2NDMzMjQ1OTApLCBDKGQyZDMwYzliOTVlMDMwZjUpLAor
ICAgICBDKDhhNTE3MzEyZmZjNTc5NWUpLCBDKDhiMWYzMjUwMzNiZDUzNWUpLCBDKDNlZTZlODY3
ZTAzZjI4OTIpLCBDKDI2NTE5Y2MpfSwKKyAgICB7QyhmOTYzYjYzYjkwMDZjMjQ4KSwgQyg5ZTli
ZjcyN2ZmYWEwMGJjKSwgQyhjNzNiYWNjNzViOTE3ZTNhKSwKKyAgICAgQygyYzZhYTcwNjEyOWNj
NTRjKSwgQygxN2E3MDZmNTlhNDlmMDg2KSwgQyhjN2MxZWVjNDU1MjE3MTQ1KSwKKyAgICAgQyg2
YWRmZGM2ZTA3NjAyZDQyKSwgQygyYzZhYTcwNjEyOWNjNTRjKSwgQygxN2E3MDZmNTlhNDlmMDg2
KSwKKyAgICAgQyhjN2MxZWVjNDU1MjE3MTQ1KSwgQyg2YWRmZGM2ZTA3NjAyZDQyKSwgQyhmYjc1
ZmNhMzBkODQ4ZGQyKSwKKyAgICAgQyg1MjI4YzllZDE0NjUzZWQ0KSwgQyg5NTM5NTg5MTAxNTNi
MWEyKSwgQyhhNDMwMTAzYTI0ZjQyYTVkKSwKKyAgICAgQyhhNDg1YTUzZil9LAorICAgIHtDKDZh
OGFhMDg1MmE4YzFmM2IpLCBDKGM4ZjFlNWUyMDZhMjEwMTYpLCBDKDJhYTU1NGFlZDFlYmI1MjQp
LAorICAgICBDKGZjM2UzYzMyMmNkNWQ4OWIpLCBDKGI3ZTM5MTFkYzJiZDRlYmIpLCBDKGZjZDZk
YTVlNWZhZTgzM2EpLAorICAgICBDKDUxZWQzYzQxZjg3ZjkxMTgpLCBDKGZjM2UzYzMyMmNkNWQ4
OWIpLCBDKGI3ZTM5MTFkYzJiZDRlYmIpLAorICAgICBDKGZjZDZkYTVlNWZhZTgzM2EpLCBDKDUx
ZWQzYzQxZjg3ZjkxMTgpLCBDKGYzMTc1MGNiYzE5YzQyMGEpLAorICAgICBDKDE4NmRhYjFhYmFk
YTFkODYpLCBDKGNhN2Y4OGNiODk0YjNjZDcpLCBDKDI4NTllZWIxYzM3Mzc5MGMpLAorICAgICBD
KGY2MmJjNDEyKX0sCisgICAge0MoNzQwNDI4YjRkNDVlNWZiOCksIEMoNGM5NWE0Y2U5MjJjYjBh
NSksIEMoZTk5YzNiYTc4ZmVhZTc5NiksCisgICAgIEMoOTE0ZjFlYTJmZGNlYmY1YyksIEMoOTU2
NjQ1M2MwN2NkMDYwMSksIEMoOTg0MWJmNjZkMDQ2MmNkKSwKKyAgICAgQyg3OTE0MGMxYzE4NTM2
YWViKSwgQyg5MTRmMWVhMmZkY2ViZjVjKSwgQyg5NTY2NDUzYzA3Y2QwNjAxKSwKKyAgICAgQyg5
ODQxYmY2NmQwNDYyY2QpLCBDKDc5MTQwYzFjMTg1MzZhZWIpLCBDKGE5NjNiOTMwYjA1ODIwYzIp
LAorICAgICBDKDZhN2Q5ZmEwYzhjNDUxNTMpLCBDKDY0MjE0YzQwZDA3Y2YzOWIpLCBDKDcwNTdk
YWYxZDgwNmMwMTQpLAorICAgICBDKDg5NzVhNDM2KX0sCisgICAge0MoNjU4Yjg4M2IzYTg3MmI4
NiksIEMoMmYwZTMwM2YwZjY0ODI3YSksIEMoOTc1MzM3ZTIzZGM0NWUxKSwKKyAgICAgQyg5OTQ2
OGE5MTc5ODYxNjJiKSwgQyg3YjMxNDM0YWFjNmUwYWYwKSwgQyhmNjkxNWMxNTYyYzdkODJmKSwK
KyAgICAgQyhlNDA3MWQ4MmE2ZGQ3MWRiKSwgQyg5OTQ2OGE5MTc5ODYxNjJiKSwgQyg3YjMxNDM0
YWFjNmUwYWYwKSwKKyAgICAgQyhmNjkxNWMxNTYyYzdkODJmKSwgQyhlNDA3MWQ4MmE2ZGQ3MWRi
KSwgQyg1ZjUzMzFmMDc3YjVkOTk2KSwKKyAgICAgQyg3YjMxNGJhMjFiNzQ3YTRmKSwgQyg1YTcz
Y2I5NTIxZGExN2Y1KSwgQygxMmVkNDM1ZmFlMjg2ZDg2KSwKKyAgICAgQyg5NGZmN2Y0MSl9LAor
ICAgIHtDKDZkZjBhOTc3ZGE1ZDI3ZDQpLCBDKDg5MWRkMGU3Y2IxOTUwOCksIEMoZmQ2NTQzNGEw
YjcxZTY4MCksCisgICAgIEMoODc5OWU0NzQwZTU3M2M1MCksIEMoOWU3MzliNTJkMGYzNDFlOCks
IEMoY2RmZDM0YmE3ZDdiMDNlYiksCisgICAgIEMoNTA2MTgxMmNlNmM4ODQ5OSksIEMoODc5OWU0
NzQwZTU3M2M1MCksIEMoOWU3MzliNTJkMGYzNDFlOCksCisgICAgIEMoY2RmZDM0YmE3ZDdiMDNl
YiksIEMoNTA2MTgxMmNlNmM4ODQ5OSksIEMoNjEyYjhkOGYyNDExZGM1YyksCisgICAgIEMoODc4
YmQ4ODNkMjljNzc4NyksIEMoNDdhODQ2NzI3MTgyYmIpLCBDKGVjNDk0OTUwOGM4YjNiOWEpLCBD
KDc2MGFhMDMxKX0sCisgICAge0MoYTkwMDI3NTQ2NGFlMDdlZiksIEMoMTFmMmNmZGEzNGJlYjRh
MyksIEMoOWFiZjkxZTVhMWMzOGU0KSwKKyAgICAgQyg4MDYzZDgwYWIyNmYzZDZkKSwgQyg0MTc3
YjRiOWI0ZjAzOTNmKSwgQyg2ZGU0MmJhODY3MmI5NjQwKSwKKyAgICAgQyhkMGJjY2RiNzJjNTFj
MTgpLCBDKDgwNjNkODBhYjI2ZjNkNmQpLCBDKDQxNzdiNGI5YjRmMDM5M2YpLAorICAgICBDKDZk
ZTQyYmE4NjcyYjk2NDApLCBDKGQwYmNjZGI3MmM1MWMxOCksIEMoYWYzZjYxMWI3ZjIyY2YxMiks
CisgICAgIEMoMzg2M2M0MTQ5MjY0NTc1NSksIEMoOTI4YzdhNjE2YThmMTRmOSksIEMoYTgyYzc4
ZWIyZWFkYzU4YiksCisgICAgIEMoM2JkYTc2ZGYpfSwKKyAgICB7Qyg4MTBiYzhhYTBjNDBiY2Iw
KSwgQyg0NDhhMDE5NTY4ZDAxNDQxKSwgQyhmNjBlYzUyZjYwZDNhZWFlKSwKKyAgICAgQyg1MmM0
NDgzN2FhNmRmYzc3KSwgQygxNWQ4ZDhmY2NkZDZkYzViKSwgQygzNDViNzkzY2NmYTkzMDU1KSwK
KyAgICAgQyg5MzIxNjBmZTgwMmNhOTc1KSwgQyg1MmM0NDgzN2FhNmRmYzc3KSwgQygxNWQ4ZDhm
Y2NkZDZkYzViKSwKKyAgICAgQygzNDViNzkzY2NmYTkzMDU1KSwgQyg5MzIxNjBmZTgwMmNhOTc1
KSwgQyhhNjI0YjBkZDkzZmMxOGNkKSwKKyAgICAgQyhkOTU1YjI1NGMyMDM3ZjFlKSwgQyhlNTQw
NTMzZDM3MGE2NjRjKSwgQygyYmE0ZWMxMjUxNGU5ZDcpLCBDKDQ5OGUyZTY1KX0sCisgICAge0Mo
MjIwMzYzMjdkZWI1OWVkNyksIEMoYWRjMDVjZWI5NzAyNmEwMiksIEMoNDhiZmYwNjU0MjYyNjcy
YiksCisgICAgIEMoYzc5MWIzMTNhYmEzZjI1OCksIEMoNDQzYzc3NTdhNDcyN2JlZSksIEMoZTMw
ZTRiMjM3MjE3MWJkZiksCisgICAgIEMoZjNkYjk4NmM0MTU2ZjNjYiksIEMoYzc5MWIzMTNhYmEz
ZjI1OCksIEMoNDQzYzc3NTdhNDcyN2JlZSksCisgICAgIEMoZTMwZTRiMjM3MjE3MWJkZiksIEMo
ZjNkYjk4NmM0MTU2ZjNjYiksIEMoYTkzOWFlZmFiOTdjNmUxNSksCisgICAgIEMoZGJlYjhhY2Yx
ZDViMGU2YyksIEMoMWUwZWFiNjY3YTc5NWJiYSksIEMoODBkZDUzOTkwMmRmNGQ1MCksCisgICAg
IEMoZDM4ZGViNDgpfSwKKyAgICB7Qyg3ZDE0ZGZhOTc3MmIwMGM4KSwgQyg1OTU3MzVlZmM3ZWVh
ZWQ3KSwgQygyOTg3Mjg1NGY5NGMzNTA3KSwKKyAgICAgQyhiYzI0MTU3OWQ4MzQ4NDAxKSwgQygx
NmRjODMyODA0ZDcyOGYwKSwgQyhlOWNjNzFhZTY0ZTNmMDllKSwKKyAgICAgQyhiZWY2MzRiYzk3
OGJhYzMxKSwgQyhiYzI0MTU3OWQ4MzQ4NDAxKSwgQygxNmRjODMyODA0ZDcyOGYwKSwKKyAgICAg
QyhlOWNjNzFhZTY0ZTNmMDllKSwgQyhiZWY2MzRiYzk3OGJhYzMxKSwgQyg3ZjY0YjFmYTJhOTEy
OWUpLAorICAgICBDKDcxZDgzMWJkNTMwYWM3ZjMpLCBDKGM3YWQwYThhNmQ1YmU2ZjEpLCBDKDgy
YTdkM2E4MTVjN2FhYWIpLAorICAgICBDKDgyYjNmYjZiKX0sCisgICAge0MoMmQ3NzdjZGRiOTEy
Njc1ZCksIEMoMjc4ZDdiMTA3MjJhMTNmOSksIEMoZjVjMDJiZmI3Y2MwNzhhZiksCisgICAgIEMo
NDI4MzAwMTIzOTg4ODgzNiksIEMoZjQ0Y2EzOWE2Zjc5ZGI4OSksIEMoZWQxODYxMjJkNzFiY2M5
ZiksCisgICAgIEMoODYyMDAxN2FiNWYzYmEzYiksIEMoNDI4MzAwMTIzOTg4ODgzNiksIEMoZjQ0
Y2EzOWE2Zjc5ZGI4OSksCisgICAgIEMoZWQxODYxMjJkNzFiY2M5ZiksIEMoODYyMDAxN2FiNWYz
YmEzYiksIEMoZTc4NzQ3MjE4N2YxNzZjKSwKKyAgICAgQygyNjdlNjRjNDcyOGNmMTgxKSwgQyhm
MWJhNGIzMDA3YzE1ZTMwKSwgQyg4ZTNhNzVkNWIwMmVjZmMwKSwKKyAgICAgQyhlNTAwZTI1Zil9
LAorICAgIHtDKGYyZWM5ODgyNGU4YWE2MTMpLCBDKDVlYjdlM2ZiNTNmZTNiZWQpLCBDKDEyYzIy
ODYwNDY2ZTFkZDQpLAorICAgICBDKDM3NGRkNDI4OGUwYjcyZTUpLCBDKGZmODkxNmRiNzA2YzBk
ZjQpLCBDKGNiMWE5ZTg1ZGU1ZTRiOGQpLAorICAgICBDKGQ0ZDEyYWZiNjdhMjc2NTkpLCBDKDM3
NGRkNDI4OGUwYjcyZTUpLCBDKGZmODkxNmRiNzA2YzBkZjQpLAorICAgICBDKGNiMWE5ZTg1ZGU1
ZTRiOGQpLCBDKGQ0ZDEyYWZiNjdhMjc2NTkpLCBDKGZlYjY5MDk1ZDFiYTE3NWEpLAorICAgICBD
KGUyMDAzYWFiMjNhNDdmYWQpLCBDKDgxNjNhM2VjYWI4OTRiNDkpLCBDKDQ2ZDM1NjY3NGNlMDQx
ZjYpLAorICAgICBDKGJkMmJiMDdjKX0sCisgICAge0MoNWU3NjM5ODhlMjFmNDg3ZiksIEMoMjQx
ODlkZTgwNjVkOGRjNSksIEMoZDE1MTlkMjQwM2I2MmFhMCksCisgICAgIEMoOTEzNjQ1Njc0MDEx
OTgxNSksIEMoNGQ4ZmY3NzMzYjI3ZWI4MyksIEMoZWEzMDQwYmMwYzcxN2VmOCksCisgICAgIEMo
NzYxN2FiNDAwZGZhZGJjKSwgQyg5MTM2NDU2NzQwMTE5ODE1KSwgQyg0ZDhmZjc3MzNiMjdlYjgz
KSwKKyAgICAgQyhlYTMwNDBiYzBjNzE3ZWY4KSwgQyg3NjE3YWI0MDBkZmFkYmMpLCBDKGZiMzM2
NzcwYzEwYjE3YTEpLAorICAgICBDKDYxMjNiNjhiNWIzMWYxNTEpLCBDKDFlMTQ3ZDVmMjk1ZWNj
ZjIpLCBDKDllY2JiMTMzMzU1NmY5NzcpLAorICAgICBDKDNhMmI0MzFkKX0sCisgICAge0MoNDg5
NDlkYzMyN2JiOTZhZCksIEMoZTFmZDIxNjM2YzVjNTBiNCksIEMoM2Y2ZWI3ZjEzYTg3MTJiNCks
CisgICAgIEMoMTRjZjdmMDJkYWIwZWVlOCksIEMoNmQwMTc1MDYwNWU4OTQ0NSksIEMoNGYxY2Y0
MDA2ZTYxM2I3OCksCisgICAgIEMoNTdjNDBjNGRiMzJiZWMzYiksIEMoMTRjZjdmMDJkYWIwZWVl
OCksIEMoNmQwMTc1MDYwNWU4OTQ0NSksCisgICAgIEMoNGYxY2Y0MDA2ZTYxM2I3OCksIEMoNTdj
NDBjNGRiMzJiZWMzYiksIEMoMWZkZTVhMzQ3ZjRhMzI2ZSksCisgICAgIEMoY2I1YTU0MzA4YWRi
MGUzZiksIEMoMTQ5OTRiMmJhNDQ3YTIzYyksIEMoNzA2N2QwYWJiNDI1N2I2OCksCisgICAgIEMo
NzMyMmE4M2QpfSwKKyAgICB7QyhiN2M0MjA5ZmIyNGE4NWM1KSwgQyhiMzVmZWIzMTljNzljZTEw
KSwgQyhmMGQzZGUxOTE4MzNiOTIyKSwKKyAgICAgQyg1NzBkNjI3NThkZGY2Mzk3KSwgQyg1ZTAy
MDRmYjY4YTdiODAwKSwgQyg0MzgzYTkyMzZmOGI1YTJiKSwKKyAgICAgQyg3YmMxYTY0NjQxZDgw
M2E0KSwgQyg1NzBkNjI3NThkZGY2Mzk3KSwgQyg1ZTAyMDRmYjY4YTdiODAwKSwKKyAgICAgQyg0
MzgzYTkyMzZmOGI1YTJiKSwgQyg3YmMxYTY0NjQxZDgwM2E0KSwgQyg1NDM0ZDYxMjg1MDk5Zjdh
KSwKKyAgICAgQyhkNDk0NDlhYWNkZDVkZDY3KSwgQyg5Nzg1NWJhMGU5YTdkNzVkKSwgQyhkYTY3
MzI4MDYyZjNhNjJmKSwKKyAgICAgQyhhNjQ1Y2ExYyl9LAorICAgIHtDKDljOWU1YmUwOTQzZDRi
MDUpLCBDKGI3M2RjNjllNDUyMDFjYmIpLCBDKGFhYjE3MTgwYmZlNTA4M2QpLAorICAgICBDKGM3
MzhhNzdhOWE1NWYwZTIpLCBDKDcwNTIyMWFkZGVkZDgxZGYpLCBDKGZkOWJkOGQzOTdhYmNmYTMp
LAorICAgICBDKDhjY2YwMDA0YWE4NmI3OTUpLCBDKGM3MzhhNzdhOWE1NWYwZTIpLCBDKDcwNTIy
MWFkZGVkZDgxZGYpLAorICAgICBDKGZkOWJkOGQzOTdhYmNmYTMpLCBDKDhjY2YwMDA0YWE4NmI3
OTUpLCBDKDJiYjVkYjIyODAwNjgyMDYpLAorICAgICBDKDhjMjJkMjlmMzA3YTAxZCksIEMoMjc0
YTIyZGUwMmY0NzNjOCksIEMoYjg3OTE4NzBmNDI2ODE4MiksIEMoODkwOWE0NWEpfSwKKyAgICB7
QygzODk4YmNhNGRmZDY2MzhkKSwgQyhmOTExZmYzNWVmZWYwMTY3KSwgQygyNGJkZjY5ZTUwOTFm
Yzg4KSwKKyAgICAgQyg5YjgyNTY3YWI2NTYwNzk2KSwgQyg4OTFiNjk0NjJiNDFjMjI0KSwgQyg4
ZWNjYzdlNGYzYWYzYjUxKSwKKyAgICAgQygzODFlNTRjM2M4ZjFjN2QwKSwgQyg5YjgyNTY3YWI2
NTYwNzk2KSwgQyg4OTFiNjk0NjJiNDFjMjI0KSwKKyAgICAgQyg4ZWNjYzdlNGYzYWYzYjUxKSwg
QygzODFlNTRjM2M4ZjFjN2QwKSwgQyhjODBmYmM0ODlhNTU4YTU1KSwKKyAgICAgQygxYmE4OGUw
NjJhNjYzYWY3KSwgQyhhZjdiMWVmMWMwMTE2MzAzKSwgQyhiZDIwZTFhNWE2YjFhMGNkKSwKKyAg
ICAgQyhiZDMwMDc0Yyl9LAorICAgIHtDKDViNWQyNTU3NDAwZTY4ZTcpLCBDKDk4ZDYxMDAzMzU3
NGNlZSksIEMoZGZkMDg3NzJjZTM4NWRlYiksCisgICAgIEMoM2MxM2U4OTQzNjVkYzZjMiksIEMo
MjZmYzdiYmNkYTNmMGVmKSwgQyhkYmI3MTEwNmNkYmZlYTM2KSwKKyAgICAgQyg3ODUyMzlhNzQy
YzZkMjZkKSwgQygzYzEzZTg5NDM2NWRjNmMyKSwgQygyNmZjN2JiY2RhM2YwZWYpLAorICAgICBD
KGRiYjcxMTA2Y2RiZmVhMzYpLCBDKDc4NTIzOWE3NDJjNmQyNmQpLCBDKGY4MTBjNDE1YWUwNWIy
ZjQpLAorICAgICBDKGJiOWI5ZTczOTg1MjYwODgpLCBDKDcwMTI4ZjFiZjgzMGEzMmIpLCBDKGJj
YzczZjgyYjY0MTA4OTkpLAorICAgICBDKGMxN2NmMDAxKX0sCisgICAge0MoYTkyN2VkOGIyYmYw
OWJiNiksIEMoNjA2ZTUyZjEwYWU5NGVjYSksIEMoNzFjMjIwM2ZlYjM1YTllZSksCisgICAgIEMo
NmU2NWVjMTRhOGZiNTY1KSwgQygzNGJmZjZmMmVlNWE3Zjc5KSwgQygyZTMyOWE1YmUyYzAxMWIp
LAorICAgICBDKDczMTYxYzkzMzMxYjE0ZjkpLCBDKDZlNjVlYzE0YThmYjU2NSksIEMoMzRiZmY2
ZjJlZTVhN2Y3OSksCisgICAgIEMoMmUzMjlhNWJlMmMwMTFiKSwgQyg3MzE2MWM5MzMzMWIxNGY5
KSwgQygxNWQxM2YyNDA4YWVjZjg4KSwKKyAgICAgQyg5ZjViNjFiOGE0YjU1YjMxKSwgQyg4ZmUy
NWE0M2IyOTZkYmE2KSwgQyhiZGFkMDNiNzMwMGYyODRlKSwKKyAgICAgQygyNmZmZDI1YSl9LAor
ICAgIHtDKDhkMjU3NDY0MTRhZWRmMjgpLCBDKDM0YjE2MjlkMjhiMzNkM2EpLCBDKDRkNTM5NGFl
YTVmODJkN2IpLAorICAgICBDKDM3OWY3NjQ1OGEzYzg5NTcpLCBDKDc5ZGQwODBmOTg0M2FmNzcp
LCBDKGM0NmYwYTc4NDdmNjBjMWQpLAorICAgICBDKGFmMTU3OWM1Nzk3NzAzY2MpLCBDKDM3OWY3
NjQ1OGEzYzg5NTcpLCBDKDc5ZGQwODBmOTg0M2FmNzcpLAorICAgICBDKGM0NmYwYTc4NDdmNjBj
MWQpLCBDKGFmMTU3OWM1Nzk3NzAzY2MpLCBDKDhiN2QzMWYzMzg3NTVjMTQpLAorICAgICBDKDJl
ZmY5NzY3OTUxMmFhYTgpLCBDKGRmMDdkNjhlMDc1MTc5ZWQpLCBDKGM4ZmE2YzdhNzI5ZTdmMWYp
LAorICAgICBDKGYxZDhjZTNjKX0sCisgICAge0MoYjViYmRiNzM0NTg3MTJmMiksIEMoMWZmODg3
YjNjMmEzNTEzNyksIEMoN2Y3MjMxZjcwMmQwYWNlOSksCisgICAgIEMoMWU2ZjA5MTBjM2QyNWJk
OCksIEMoYWQ5ZTI1MDg2MjEwMjQ2NyksIEMoMWM4NDJhMDdhYmFiMzBjZCksCisgICAgIEMoY2Q4
MTI0MTc2YmFjMDFhYyksIEMoMWU2ZjA5MTBjM2QyNWJkOCksIEMoYWQ5ZTI1MDg2MjEwMjQ2Nyks
CisgICAgIEMoMWM4NDJhMDdhYmFiMzBjZCksIEMoY2Q4MTI0MTc2YmFjMDFhYyksIEMoZWE2ZWJl
N2E3OWI2N2VkYyksCisgICAgIEMoNzNmNTk4YWM5ZGIyNjcxMyksIEMoNGY0ZTcyZDc0NjBiOGZj
KSwgQygzNjVkYzRiOWZkZjEzZjIxKSwgQygzZWU4ZmIxNyl9LAorICAgIHtDKDNkMzJhMjZlM2Fi
OWQyNTQpLCBDKGZjNDA3MDU3NGRjMzBkM2EpLCBDKGYwMjYyOTU3OWMyYjI3YzkpLAorICAgICBD
KGIxY2YwOWIwMTg0YTQ4MzQpLCBDKDVjMDNkYjQ4ZWI2Y2MxNTkpLCBDKGYxOGM3ZmNmMzRkMWRm
NDcpLAorICAgICBDKGRmYjA0MzQxOWVjZjFmYTkpLCBDKGIxY2YwOWIwMTg0YTQ4MzQpLCBDKDVj
MDNkYjQ4ZWI2Y2MxNTkpLAorICAgICBDKGYxOGM3ZmNmMzRkMWRmNDcpLCBDKGRmYjA0MzQxOWVj
ZjFmYTkpLCBDKGRjZDc4ZDEzZjljYTY1OGYpLAorICAgICBDKDQzNTVkNDA4ZmZlOGU0OWYpLCBD
KDgxZWVmZWU5MDhiNTkzYjQpLCBDKDU5MGMyMTNjMjBlOTgxYTMpLAorICAgICBDKGE3N2FjYzJh
KX0sCisgICAge0MoOTM3MWQzYzM1ZmE1ZTlhNSksIEMoNDI5NjdjZjRkMDFmMzApLCBDKDY1MmQx
ZWVhZTcwNDE0NWMpLAorICAgICBDKGNlYWYxYTBkMTUyMzRmMTUpLCBDKDE0NTBhNTRlNDViYTli
OSksIEMoNjVlOWMxZmQ4ODVhYTkzMiksCisgICAgIEMoMzU0ZDRiYzAzNGJhOGNiZSksIEMoY2Vh
ZjFhMGQxNTIzNGYxNSksIEMoMTQ1MGE1NGU0NWJhOWI5KSwKKyAgICAgQyg2NWU5YzFmZDg4NWFh
OTMyKSwgQygzNTRkNGJjMDM0YmE4Y2JlKSwgQyg4ZmQ0ZmY0ODRjMDhmYjRiKSwKKyAgICAgQyhi
ZjQ2NzQ5ODY2ZjY5YmEwKSwgQyhjZjFjMjFlZGU4MmM5NDc3KSwgQyg0MjE3NTQ4YzQzZGExMDkp
LCBDKGY0NTU2ZGVlKX0sCisgICAge0MoY2JhYTNjYjhmNjRmNTRlMCksIEMoNzZjM2I0OGVlNWMw
ODQxNyksIEMoOWY3ZDI0ZTg3ZTYxY2U5KSwKKyAgICAgQyg4NWI4ZTUzZjIyZTE5NTA3KSwgQyhi
YjU3MTM3NzM5Y2E0ODZiKSwgQyhjNzdmMTMxY2NhMzhmNzYxKSwKKyAgICAgQyhjNTZhYzNjZjI3
NWJlMTIxKSwgQyg4NWI4ZTUzZjIyZTE5NTA3KSwgQyhiYjU3MTM3NzM5Y2E0ODZiKSwKKyAgICAg
QyhjNzdmMTMxY2NhMzhmNzYxKSwgQyhjNTZhYzNjZjI3NWJlMTIxKSwgQyg5ZWMxYTZjOTEwOWQy
Njg1KSwKKyAgICAgQygzZGFkMDkyMmU3NmFmZGIwKSwgQyhmZDU4Y2JmOTUyOTU4MTAzKSwgQyg3
YjA0YzkwOGU3ODYzOWExKSwKKyAgICAgQyhkZTI4N2E2NCl9LAorICAgIHtDKGIyZTIzZTgxMTZj
MmJhOWYpLCBDKDdlNGQ5YzAwNjAxMDExNTEpLCBDKDMzMTBkYTVlNTAyOGYzNjcpLAorICAgICBD
KGFkYzUyZGRkYjc2ZjZlNWUpLCBDKDRhYWQ0ZTkyNWE5NjJiNjgpLCBDKDIwNGI3OWI3ZjcxNjhl
NjQpLAorICAgICBDKGRmMjllZDY2NzFjMzY5NTIpLCBDKGFkYzUyZGRkYjc2ZjZlNWUpLCBDKDRh
YWQ0ZTkyNWE5NjJiNjgpLAorICAgICBDKDIwNGI3OWI3ZjcxNjhlNjQpLCBDKGRmMjllZDY2NzFj
MzY5NTIpLCBDKGUwMjkyN2NhYzM5NmQyMTApLAorICAgICBDKDVkNTAwZTcxNzQyYjYzOGEpLCBD
KDVjOTk5OGFmN2YyN2IxMjQpLCBDKDNmYmE5YTI1NzNkYzJmNyksIEMoODc4ZTU1YjkpfSwKKyAg
ICB7Qyg4YWE3N2Y1MmQ3ODY4ZWI5KSwgQyg0ZDU1YmQ1ODc1ODRlNmUyKSwgQyhkMmRiMzcwNDFm
NDk1ZjUpLAorICAgICBDKGNlMDMwZDE1YjVmZTJmNCksIEMoODZiNGE3YTA3ODBjMjQzMSksIEMo
ZWUwNzBhOWFlNWI1MWRiNyksCisgICAgIEMoZWRjMjkzZDk1OTViZTVkOCksIEMoY2UwMzBkMTVi
NWZlMmY0KSwgQyg4NmI0YTdhMDc4MGMyNDMxKSwKKyAgICAgQyhlZTA3MGE5YWU1YjUxZGI3KSwg
QyhlZGMyOTNkOTU5NWJlNWQ4KSwgQygzZGZjNWVjMTA4MjYwYTJiKSwKKyAgICAgQyg4YWZlMjhj
NzEyM2JmNGUyKSwgQyhkYTgyZWYzODAyM2E3YTVmKSwgQygzZTFmNzdiMDE3NGI3N2MzKSwgQyg3
NjQ4NDg2KX0sCisgICAge0MoODU4ZmVhOTIyYzdmZTBjMyksIEMoY2ZlODMyNmJmNzMzYmM2Ziks
IEMoNGU1ZTIwMThjZjhmN2RmYyksCisgICAgIEMoNjRmZDFiYzAxMWU1YmFiNyksIEMoNWM5ZTg1
ODcyODAxNTU2OCksIEMoOTdhYzQyYzJiMDBiMjliMSksCisgICAgIEMoN2Y4OWNhZjA4YzEwOWFl
ZSksIEMoNjRmZDFiYzAxMWU1YmFiNyksIEMoNWM5ZTg1ODcyODAxNTU2OCksCisgICAgIEMoOTdh
YzQyYzJiMDBiMjliMSksIEMoN2Y4OWNhZjA4YzEwOWFlZSksIEMoOWE4YWYzNGZkMGU5ZGFjZiks
CisgICAgIEMoYmJjNTQxNjFhYTE1MDdlMCksIEMoN2NkYTcyM2NjYmJmZTVlZSksIEMoMmMyODlk
ODM5ZmI5M2Y1OCksCisgICAgIEMoNTdhYzBmYjEpfSwKKyAgICB7Qyg0NmVmMjVmZGVjODM5MmIx
KSwgQyhlNDhkN2I2ZDQyYTVjZDM1KSwgQyg1NmE2ZmUxYzE3NTI5OWNhKSwKKyAgICAgQyhmZGZh
ODM2YjQxZGNlZjYyKSwgQygyZjhkYjgwMzBlODQ3ZTFiKSwgQyg1YmEwYTQ5YWM0ZjliMGY4KSwK
KyAgICAgQyhkYWU4OTdlZDNlM2ZjZTQ0KSwgQyhmZGZhODM2YjQxZGNlZjYyKSwgQygyZjhkYjgw
MzBlODQ3ZTFiKSwKKyAgICAgQyg1YmEwYTQ5YWM0ZjliMGY4KSwgQyhkYWU4OTdlZDNlM2ZjZTQ0
KSwgQyg5YzQzMmUzMWFlZjYyNmU3KSwKKyAgICAgQyg5YTM2ZTFjNmNkNmUzZGQpLCBDKDUwOTVh
MTY3YzM0ZDE5ZCksIEMoYTcwMDA1Y2ZhNmJhYmJlYSksIEMoZDAxOTY3Y2EpfSwKKyAgICB7Qyg4
ZDA3OGY3MjZiMmRmNDY0KSwgQyhiNTBlZTcxY2RjYWJiMjk5KSwgQyhmNGFmMzAwMTA2ZjljN2Jh
KSwKKyAgICAgQyg3ZDIyMmNhYWUwMjUxNThhKSwgQyhjYzAyOGQ1ZmQ0MDI0MWI5KSwgQyhkZDQy
NTE1YjYzOWU2Zjk3KSwKKyAgICAgQyhlMDhlODY1MzFhNThmODdmKSwgQyg3ZDIyMmNhYWUwMjUx
NThhKSwgQyhjYzAyOGQ1ZmQ0MDI0MWI5KSwKKyAgICAgQyhkZDQyNTE1YjYzOWU2Zjk3KSwgQyhl
MDhlODY1MzFhNThmODdmKSwgQyhkOTM2MTJjODM1YjM3ZDdiKSwKKyAgICAgQyg5MWRkNjE3Mjli
MmZhN2Y0KSwgQyhiYTc2NWExYmRkYTA5ZGI3KSwgQyg1NTI1OGI0NTFiMmIxMjk3KSwKKyAgICAg
Qyg5NmVjZGY3NCl9LAorICAgIHtDKDM1ZWE4NmU2OTYwY2E5NTApLCBDKDM0ZmUxZmUyMzRmYzVj
NzYpLCBDKGEwMDIwN2EzZGMyYTcyYjcpLAorICAgICBDKDgwMzk1ZTQ4NzM5ZTFhNjcpLCBDKDc0
YTY3ZDhmN2Y0M2MzZDcpLCBDKGRkMmJkZDFkNjIyNDZjNmUpLAorICAgICBDKGExZjQ0Mjk4YmE4
MGFjZjYpLCBDKDgwMzk1ZTQ4NzM5ZTFhNjcpLCBDKDc0YTY3ZDhmN2Y0M2MzZDcpLAorICAgICBD
KGRkMmJkZDFkNjIyNDZjNmUpLCBDKGExZjQ0Mjk4YmE4MGFjZjYpLCBDKGFkODZkODZjMTg3YmYz
OCksCisgICAgIEMoMjZmZWVhMWYyZWVlMjQwZCksIEMoZWQ3ZjFmZDA2NmIyMzg5NyksIEMoYTc2
OGNmMWUwZmJiNTAyKSwgQyg3NzlmNTUwNil9LAorICAgIHtDKDhhZWU5ZWRiYzE1ZGQwMTEpLCBD
KDUxZjU4MzlkYzg0NjI2OTUpLCBDKGIyMjEzZTE3YzM3ZGNhMmQpLAorICAgICBDKDEzM2IyOTlh
OTM5NzQ1YzUpLCBDKDc5NmUyYWFjMDUzZjUyYjMpLCBDKGU4ZDlmZTE1MjFhNGEyMjIpLAorICAg
ICBDKDgxOWE4ODYzZTVkMWMyOTApLCBDKDEzM2IyOTlhOTM5NzQ1YzUpLCBDKDc5NmUyYWFjMDUz
ZjUyYjMpLAorICAgICBDKGU4ZDlmZTE1MjFhNGEyMjIpLCBDKDgxOWE4ODYzZTVkMWMyOTApLCBD
KGMwNzM3ZjBmZTM0ZDM2YWQpLAorICAgICBDKGU2ZDZkNGEyNjdhNWNjMzEpLCBDKDk4MzAwYTc5
MTE2NzRjMjMpLCBDKGJlZjE4OTY2MWMyNTcwOTgpLAorICAgICBDKDNjOTRjMmRlKX0sCisgICAg
e0MoYzNlMTQyYmE5ODQzMmRkYSksIEMoOTExZDA2MGNhYjEyNjE4OCksIEMoYjc1M2ZiZmE4MzY1
Yjg0NCksCisgICAgIEMoZmQxYTliYTVlNzFiMDhhMiksIEMoN2FjMGRjMmVkNzc3ODUzMyksIEMo
YjU0MzE2MWZmMTc3MTg4YSksCisgICAgIEMoNDkyZmMwOGE2MTg2ZjNmNCksIEMoZmQxYTliYTVl
NzFiMDhhMiksIEMoN2FjMGRjMmVkNzc3ODUzMyksCisgICAgIEMoYjU0MzE2MWZmMTc3MTg4YSks
IEMoNDkyZmMwOGE2MTg2ZjNmNCksIEMoZmM0NzQ1ZjUxNmFmZDNiNiksCisgICAgIEMoODhjMzAz
NzBhNTMwODBlKSwgQyg2NWExYmIzNGFiYzQ2NWUyKSwgQyhhYmJkMTQ2NjI5MTFjOGIzKSwgQygz
OWY5OGZhZil9LAorICAgIHtDKDEyM2JhNmI5OWM4Y2Q4ZGIpLCBDKDQ0OGU1ODI2NzJlZTA3YzQp
LCBDKGNlYmUzNzkyOTJkYjllNjUpLAorICAgICBDKDkzOGY1YmJhYjU0NGQzZDYpLCBDKGQyYTk1
ZjlmMmQzNzZkNzMpLCBDKDY4YjJmMTYxNDllODFhYTMpLAorICAgICBDKGFkN2UzMmY4MmQ4NmM3
OWQpLCBDKDkzOGY1YmJhYjU0NGQzZDYpLCBDKGQyYTk1ZjlmMmQzNzZkNzMpLAorICAgICBDKDY4
YjJmMTYxNDllODFhYTMpLCBDKGFkN2UzMmY4MmQ4NmM3OWQpLCBDKDQ1NzQwMTVhZTg2MjZjZTIp
LAorICAgICBDKDQ1NWFhNjEzNzM4NmE1ODIpLCBDKDY1OGFkMjU0MmU4ZWMyMCksIEMoZTMxZDdi
ZTJjYTM1ZDAwKSwgQyg3YWYzMTE5OSl9LAorICAgIHtDKGJhODdhY2VmNzlkMTRmNTMpLCBDKGIz
ZTBmY2FlNjNhMTE1NTgpLCBDKGQ1YWMzMTNhNTkzYTlmNDUpLAorICAgICBDKGVlYTVmNWE5Zjc0
YWY1OTEpLCBDKDU3ODcxMGJjYzM2ZmJlYTIpLCBDKDdhODM5MzQzMjE4ODkzMWQpLAorICAgICBD
KDcwNWNmYzVlYzdjYzE3MiksIEMoZWVhNWY1YTlmNzRhZjU5MSksIEMoNTc4NzEwYmNjMzZmYmVh
MiksCisgICAgIEMoN2E4MzkzNDMyMTg4OTMxZCksIEMoNzA1Y2ZjNWVjN2NjMTcyKSwgQyhkYTg1
ZWJlNWZjNDI3OTc2KSwKKyAgICAgQyhiZmE1YzdhNDU0ZGY1NGM4KSwgQyg0NjMyYjcyYTgxYmY2
NmQyKSwgQyg1ZGQ3Mjg3N2RiNTM5ZWUyKSwKKyAgICAgQyhlMzQxYTlkNil9LAorICAgIHtDKGJj
ZDM5NTdkNTcxN2RjMyksIEMoMmRhNzQ2NzQxYjAzYTAwNyksIEMoODczODE2ZjRiMWVjZTQ3Miks
CisgICAgIEMoMmI4MjZmMWEyYzA4YzI4OSksIEMoZGE1MGY1Njg2M2I1NWU3NCksIEMoYjE4NzEy
ZjZiM2VlZDgzYiksCisgICAgIEMoYmRjN2NjMDVhYjRjNjg1ZiksIEMoMmI4MjZmMWEyYzA4YzI4
OSksIEMoZGE1MGY1Njg2M2I1NWU3NCksCisgICAgIEMoYjE4NzEyZjZiM2VlZDgzYiksIEMoYmRj
N2NjMDVhYjRjNjg1ZiksIEMoOWU0NWZiODMzZDFiMGFmKSwKKyAgICAgQyhkNzIxMzA4MWRiMjlk
ODJlKSwgQyhkMmE2YjZjNmEwOWVkNTVlKSwgQyg5OGE3Njg2Y2JhMzIzY2E5KSwKKyAgICAgQyhj
YTI0YWVlYil9LAorICAgIHtDKDYxNDQyZmY1NTYwOTE2OGUpLCBDKDY0NDdjNWZjNzZlOGM5Y2Yp
LCBDKDZhODQ2ZGU4M2FlMTU3MjgpLAorICAgICBDKGVmZmMyNjYzY2ZmYzc3N2YpLCBDKDkzMjE0
ZjhmNDYzYWZiZWQpLCBDKGExNTZlZjA2MDY2ZjRlNGUpLAorICAgICBDKGE0MDdiNmVkODc2OWQ1
MWUpLCBDKGVmZmMyNjYzY2ZmYzc3N2YpLCBDKDkzMjE0ZjhmNDYzYWZiZWQpLAorICAgICBDKGEx
NTZlZjA2MDY2ZjRlNGUpLCBDKGE0MDdiNmVkODc2OWQ1MWUpLCBDKGJiMmY5ZWQyOTc0NWMwMmEp
LAorICAgICBDKDk4MWVlY2Q0MzViMzZhZDkpLCBDKDQ2MWE1YTA1ZmI5Y2RmZjQpLCBDKGJkNmNi
MmE4N2I5ZjkxMGMpLAorICAgICBDKGIyMjUyYjU3KX0sCisgICAge0MoZGJlNGIxYjJkMTc0NzU3
ZiksIEMoNTA2NTEyZGExODcxMjY1NiksIEMoNjg1N2YzZTBiOGRkOTVmKSwKKyAgICAgQyg1YTRm
YzI3MjhhOWJiNjcxKSwgQyhlYmI5NzE1MjJlYzM4NzU5KSwgQygxYTVhMDkzZTZjZjFmNzJiKSwK
KyAgICAgQyg3MjliMDU3ZmU3ODRmNTA0KSwgQyg1YTRmYzI3MjhhOWJiNjcxKSwgQyhlYmI5NzE1
MjJlYzM4NzU5KSwKKyAgICAgQygxYTVhMDkzZTZjZjFmNzJiKSwgQyg3MjliMDU3ZmU3ODRmNTA0
KSwgQyg3MWZjYmY0MmE3NjdmOWNmKSwKKyAgICAgQygxMTRjZmU3NzJkYTZjZGQpLCBDKDYwY2Rm
OWNiNjI5ZDlkN2EpLCBDKGUyNzBkMTBhZDA4OGIyNGUpLCBDKDcyYzgxZGExKX0sCisgICAge0Mo
NTMxZThlNzdiMzYzMTYxYyksIEMoZWVjZTBiNDNlMmRhZTAzMCksIEMoODI5NGI4MmM3OGYzNGVk
MSksCisgICAgIEMoZTc3N2IxZmQ1ODA1ODJmMiksIEMoN2I4ODBmNThkYTExMjY5OSksIEMoNTYy
YzZiMTg5YTYzMzNmNCksCisgICAgIEMoMTM5ZDY0Zjg4YTYxMWQ0KSwgQyhlNzc3YjFmZDU4MDU4
MmYyKSwgQyg3Yjg4MGY1OGRhMTEyNjk5KSwKKyAgICAgQyg1NjJjNmIxODlhNjMzM2Y0KSwgQygx
MzlkNjRmODhhNjExZDQpLCBDKDUzZDhlZjE3ZWRhNjRmYTQpLAorICAgICBDKGJmM2VkZWQxNGRj
NjBhMDQpLCBDKDJiNWM1NTljZjVlYzA3YzUpLCBDKDg4OTVmNzMzOWQwM2E0OGEpLAorICAgICBD
KDZiOWZjZTk1KX0sCisgICAge0MoZjcxZTljOTI2ZDcxMWUyYiksIEMoZDc3YWYyODUzYTRjZWFh
MSksIEMoOWFhMGQ2ZDc2YTM2ZmFlNyksCisgICAgIEMoZGQxNmNkMGZiYzA4MzkzKSwgQygyOWE0
MTRhNWQ4YzU4OTYyKSwgQyg3Mjc5M2Q4ZDEwMjJiNWIyKSwKKyAgICAgQygyZThlNjljZjdjYmZm
ZGYwKSwgQyhkZDE2Y2QwZmJjMDgzOTMpLCBDKDI5YTQxNGE1ZDhjNTg5NjIpLAorICAgICBDKDcy
NzkzZDhkMTAyMmI1YjIpLCBDKDJlOGU2OWNmN2NiZmZkZjApLCBDKDM3MjFjMDQ3M2FhOTljOWEp
LAorICAgICBDKDFjZmY0ZWQ5YzMxY2Q5MWMpLCBDKDQ5OTA3MzUwMzNjYzQ4MmIpLCBDKDdmZGY4
YzcwMWM3MmY1NzcpLAorICAgICBDKDE5Mzk5ODU3KX0sCisgICAge0MoY2IyMGFjMjhmNTJkZjM2
OCksIEMoZTY3MDVlZTc4ODA5OTZkZSksIEMoOWI2NjVjYzNlYzY5NzJmMiksCisgICAgIEMoNDI2
MGU4YzI1NGU5OTI0YiksIEMoZjE5N2E2ZWI0NTkxNTcyZCksIEMoOGU4NjdmZjBmYjdhYjI3Yyks
CisgICAgIEMoZjk1NTAyZmI1MDNlZmFmMyksIEMoNDI2MGU4YzI1NGU5OTI0YiksIEMoZjE5N2E2
ZWI0NTkxNTcyZCksCisgICAgIEMoOGU4NjdmZjBmYjdhYjI3YyksIEMoZjk1NTAyZmI1MDNlZmFm
MyksIEMoMzBjNDE4NzZiMDhlM2UyMiksCisgICAgIEMoOTU4ZTI0MTllM2NkMjJmNCksIEMoZjBm
M2FhMWZlMTE5YTEwNyksIEMoNDgxNjYyMzEwYTM3OTEwMCksCisgICAgIEMoM2M1N2E5OTQpfSwK
KyAgICB7QyhlNGE3OTRiNGFjYjk0YjU1KSwgQyg4OTc5NTM1ODA1N2I2NjFiKSwgQyg5YzRjZGNl
YzE3NmQ3YTcwKSwKKyAgICAgQyg0ODkwYTgzZWU0MzViYzhiKSwgQyhkOGMxYzAwZmNlYjAwOTE0
KSwgQyg5ZTcxMTFiYTIzNGY5MDBmKSwKKyAgICAgQyhlYjhkYmFiMzY0ZDhiNjA0KSwgQyg0ODkw
YTgzZWU0MzViYzhiKSwgQyhkOGMxYzAwZmNlYjAwOTE0KSwKKyAgICAgQyg5ZTcxMTFiYTIzNGY5
MDBmKSwgQyhlYjhkYmFiMzY0ZDhiNjA0KSwgQyhiMzI2MTQ1Mjk2M2VlYmIpLAorICAgICBDKDZj
Zjk0YjAyNzkyYzRmOTUpLCBDKGQ4OGZhODE1ZWYxZThmYyksIEMoMmQ2ODdhZjY2NjA0YzczKSwg
QyhjMDUzZTcyOSl9LAorICAgIHtDKGNiOTQyZTkxNDQzZTcyMDgpLCBDKGUzMzVkZTgxMjU1Njdj
MmEpLCBDKGQ0ZDc0ZDI2OGI4NmRmMWYpLAorICAgICBDKDhiYTBmZGQyZmZjOGIyMzkpLCBDKGY0
MTNiMzY2YzFmZmUwMmYpLCBDKGMwNWIyNzE3YzU5YThhMjgpLAorICAgICBDKDk4MTE4OGVhYjRm
Y2M4ZmIpLCBDKDhiYTBmZGQyZmZjOGIyMzkpLCBDKGY0MTNiMzY2YzFmZmUwMmYpLAorICAgICBD
KGMwNWIyNzE3YzU5YThhMjgpLCBDKDk4MTE4OGVhYjRmY2M4ZmIpLCBDKGU1NjNmNDlhMWQ5MDcy
YmEpLAorICAgICBDKDNjNmEzYWE0YTI2MzY3ZGMpLCBDKGJhMGRiMTM0NDg2NTNmMzQpLCBDKDMx
MDY1ZDc1NjA3NGQ3ZDYpLAorICAgICBDKDUxY2JiYmE3KX0sCisgICAge0MoZWNjYTc1NjNjMjAz
ZjdiYSksIEMoMTc3YWUyNDIzZWYzNGJiMiksIEMoZjYwYjcyNDM0MDBjNTczMSksCisgICAgIEMo
Y2YxZWRiZmU3MzMwZTk0ZSksIEMoODgxOTQ1OTA2YmNiM2NjNiksIEMoNGFjZjAyOTMyNDQ4NTVk
YSksCisgICAgIEMoNjVhZTA0MmMxYzJhMjhjMiksIEMoY2YxZWRiZmU3MzMwZTk0ZSksIEMoODgx
OTQ1OTA2YmNiM2NjNiksCisgICAgIEMoNGFjZjAyOTMyNDQ4NTVkYSksIEMoNjVhZTA0MmMxYzJh
MjhjMiksIEMoYjI1ZmEwYTFjYWIzMzU1OSksCisgICAgIEMoZDk4ZThkYWEyODEyNDEzMSksIEMo
ZmNlMTdmNTBiOWMzNTFiMyksIEMoM2Y5OTVjY2Y3Mzg2ODY0YiksCisgICAgIEMoMWFjZGU3OWEp
fSwKKyAgICB7QygxNjUyY2I5NDAxNzdjOGI1KSwgQyg4YzRmZTdkODVkMmE2ZDZkKSwgQyhmNjIx
NmFkMDk3ZTU0ZTcyKSwKKyAgICAgQyhmNjUyMWI5MTJiMzY4YWU2KSwgQyhhOWZlNGVmZjgxZDAz
ZTczKSwgQyhkNmY2MjM2MjlmODBkMWEzKSwKKyAgICAgQygyYjk2MDRmMzJjYjdkYzM0KSwgQyhm
NjUyMWI5MTJiMzY4YWU2KSwgQyhhOWZlNGVmZjgxZDAzZTczKSwKKyAgICAgQyhkNmY2MjM2Mjlm
ODBkMWEzKSwgQygyYjk2MDRmMzJjYjdkYzM0KSwgQygyYTQzZDg0ZGNmNTljN2UyKSwKKyAgICAg
QyhkMGExOTdjNzBjNWRhZTBiKSwgQyg2ZTg0ZDRiYmM3MWQ3NmEwKSwgQyhjN2U5NDYyMDM3OGM2
Y2IyKSwKKyAgICAgQygyZDE2MGQxMyl9LAorICAgIHtDKDMxZmVkMGZjMDRjMTNjZTgpLCBDKDNk
NWQwM2RiZjdmZjI0MGEpLCBDKDcyN2M1YzliNTE1ODEyMDMpLAorICAgICBDKDZiNWZmYzFmNTRm
ZWNiMjkpLCBDKGE4ZThlN2FkNWI5YTIxZDkpLCBDKGM0ZDVhMzJjZDZhYWMyMmQpLAorICAgICBD
KGQ3ZTI3NGFkMjJkNGE3OWEpLCBDKDZiNWZmYzFmNTRmZWNiMjkpLCBDKGE4ZThlN2FkNWI5YTIx
ZDkpLAorICAgICBDKGM0ZDVhMzJjZDZhYWMyMmQpLCBDKGQ3ZTI3NGFkMjJkNGE3OWEpLCBDKDM2
ODg0MWVhNTczMWExMTIpLAorICAgICBDKGZlYWY3YmMyZTczY2E0OGYpLCBDKDYzNmZiMjcyZTll
YTFmNiksIEMoNWQ5Y2I3NTgwYzNmNjIwNyksIEMoNzg3ZjU4MDEpfSwKKyAgICB7QyhlN2I2Njg5
NDc1OTBiOWIzKSwgQyhiYWE0MWFkMzI5MzhkM2ZhKSwgQyhhYmNiYzhkNGNhNGIzOWU0KSwKKyAg
ICAgQygzODFlZTFiN2VhNTM0ZjRlKSwgQyhkYTM3NTk4MjhlM2RlNDI5KSwgQygzZTAxNWQ3Njcy
OWY5OTU1KSwKKyAgICAgQyhjYmJlYzUxYTY0ODVmYmRlKSwgQygzODFlZTFiN2VhNTM0ZjRlKSwg
QyhkYTM3NTk4MjhlM2RlNDI5KSwKKyAgICAgQygzZTAxNWQ3NjcyOWY5OTU1KSwgQyhjYmJlYzUx
YTY0ODVmYmRlKSwgQyg5Yjg2NjA1MjgxZjIwNzI3KSwKKyAgICAgQyhmYzZmY2Y1MDg2NzY5ODJh
KSwgQygzYjEzNWY3YTgxM2ExMDQwKSwgQyhkM2E0NzA2YmVhMWRiOWM5KSwKKyAgICAgQyhjOTYy
OTgyOCl9LAorICAgIHtDKDFkZTIxMTk5MjNlOGVmM2MpLCBDKDZhYjI3YzA5NmNmMmZlMTQpLCBD
KDhjMzY1OGVkY2E5NTg4OTEpLAorICAgICBDKDRjYzhlZDNhZGE1ZjBmMiksIEMoNGE0OTZiNzdj
MWYxYzA0ZSksIEMoOTA4NWIwYTg2MjA4NDIwMSksCisgICAgIEMoYTE4OTRiZGU5ZTNkZWUyMSks
IEMoNGNjOGVkM2FkYTVmMGYyKSwgQyg0YTQ5NmI3N2MxZjFjMDRlKSwKKyAgICAgQyg5MDg1YjBh
ODYyMDg0MjAxKSwgQyhhMTg5NGJkZTllM2RlZTIxKSwgQygzNjdmYjQ3MmRjNWIyNzdkKSwKKyAg
ICAgQyg3ZDM5Y2NjYTE2ZmM2NzQ1KSwgQyg3NjNmOTg4ZDcwZGI5MTA2KSwgQyhhOGI2NmY3ZmVj
YjcwZjAyKSwKKyAgICAgQyhiZTEzOTIzMSl9LAorICAgIHtDKDEyNjlkZjFlNjllMTRmYTcpLCBD
KDk5MmY5ZDU4YWM1MDQxYjcpLCBDKGU5N2ZjZjY5NWE3Y2JiYjQpLAorICAgICBDKGU1ZDA1NDk4
MDJkMTUwMDgpLCBDKDQyNGMxMzRlY2QwZGI4MzQpLCBDKDZmYzQ0ZmQ5MWJlMTVjNmMpLAorICAg
ICBDKGExYTVlZjk1ZDUwZTUzN2QpLCBDKGU1ZDA1NDk4MDJkMTUwMDgpLCBDKDQyNGMxMzRlY2Qw
ZGI4MzQpLAorICAgICBDKDZmYzQ0ZmQ5MWJlMTVjNmMpLCBDKGExYTVlZjk1ZDUwZTUzN2QpLCBD
KGQxZTNkYWY1ZDA1ZjUzMDgpLAorICAgICBDKDRjN2Y4MTYwMGVhYTEzMjcpLCBDKDEwOWQxYjhk
MWY5ZDBkMmIpLCBDKDg3MWU4Njk5ZTBhZWI4NjIpLAorICAgICBDKDdkZjY5OWVmKX0sCisgICAg
e0MoODIwODI2ZDdhYmE1NjdmZiksIEMoMWY3M2QyOGUwMzZhNTJmMyksIEMoNDFjNGM1YTczZjNi
MDg5MyksCisgICAgIEMoYWEwZDc0ZDRhOThkYjg5YiksIEMoMzZmZDQ4NmQwN2M1NmUxZCksIEMo
ZDBhZDIzY2JiNjY2MGQ4YSksCisgICAgIEMoMTI2NGE4NDY2NWIzNWUxOSksIEMoYWEwZDc0ZDRh
OThkYjg5YiksIEMoMzZmZDQ4NmQwN2M1NmUxZCksCisgICAgIEMoZDBhZDIzY2JiNjY2MGQ4YSks
IEMoMTI2NGE4NDY2NWIzNWUxOSksIEMoNzg5NjgyYmY3ZDc4MWIzMyksCisgICAgIEMoNmJmYTZh
YmQyZmI1NzIyZCksIEMoNjc3OWNiMzYyM2QzMzkwMCksIEMoNDM1Y2E1MjE0ZTFlZTVmMCksCisg
ICAgIEMoOGNlNmI5NmQpfSwKKyAgICB7QyhmZmUwNTQ3ZTQ5MjNjZWY5KSwgQygzNTM0ZWQ0OWI5
ZGE1YjAyKSwgQyg1NDhhMjczNzAwZmJhMDNkKSwKKyAgICAgQygyOGFjODRjYTcwOTU4ZjdlKSwg
QyhkOGFlNTc1YTY4ZmFhNzMxKSwgQygyYWFhZWU5YjlkY2ZmZDRjKSwKKyAgICAgQyg2YzdmYWFi
NWMyODVjNmRhKSwgQygyOGFjODRjYTcwOTU4ZjdlKSwgQyhkOGFlNTc1YTY4ZmFhNzMxKSwKKyAg
ICAgQygyYWFhZWU5YjlkY2ZmZDRjKSwgQyg2YzdmYWFiNWMyODVjNmRhKSwgQyg0NWQ5NDIzNWY5
OWJhNzhmKSwKKyAgICAgQyhhYjVlYTE2ZjM5NDk3ZjViKSwgQyhmYjRkNmM4NmZjY2JkY2EzKSwg
Qyg4MTA0ZTYzMTBhNWZkMmM3KSwKKyAgICAgQyg2ZjllZDk5Yyl9LAorICAgIHtDKDcyZGE4ZDFi
MTFkOGJjOGIpLCBDKGJhOTRiNTZiOTFiNjgxYzYpLCBDKDRlOGNjNTFiZDliMGZjOGMpLAorICAg
ICBDKDQzNTA1ZWQxMzNiZTY3MmEpLCBDKGU4ZjJmOWQ5NzNjMjc3NGUpLCBDKDY3N2I5YjljN2Nh
ZDZkOTcpLAorICAgICBDKDRlMWY1ZDU2ZWYxN2I5MDYpLCBDKDQzNTA1ZWQxMzNiZTY3MmEpLCBD
KGU4ZjJmOWQ5NzNjMjc3NGUpLAorICAgICBDKDY3N2I5YjljN2NhZDZkOTcpLCBDKDRlMWY1ZDU2
ZWYxN2I5MDYpLCBDKGVlYTNhNjAzOGY5ODM3NjcpLAorICAgICBDKDg3MTA5ZjA3N2Y4NmRiMDEp
LCBDKGVjYzFjYTQxZjc0ZDYxY2MpLCBDKDM0YTg3ZTg2ZTgzYmVkMTcpLAorICAgICBDKGUwMjQ0
Nzk2KX0sCisgICAge0MoZDYyYWI0ZTNmODhmYzc5NyksIEMoZWE4NmM3YWViNjI4M2FlNCksIEMo
YjViOTNlMDlhN2ZlNDY1KSwKKyAgICAgQyg0MzQ0YTFhMDEzNGFmZTIpLCBDKGZmNWMxN2YwMmI2
MjM0MWQpLCBDKDMyMTRjNmE1ODdjZTQ2NDQpLAorICAgICBDKGE5MDVlN2VkMDYyOWQwNWMpLCBD
KDQzNDRhMWEwMTM0YWZlMiksIEMoZmY1YzE3ZjAyYjYyMzQxZCksCisgICAgIEMoMzIxNGM2YTU4
N2NlNDY0NCksIEMoYTkwNWU3ZWQwNjI5ZDA1YyksIEMoYjVjNzI2OTBjZDcxNmU4MiksCisgICAg
IEMoN2M2MDk3NjQ5ZTZlYmU3YiksIEMoN2NlZWU4YzZlNTZhNGRjZCksIEMoODBjYTg0OWRjNTNl
YjllNCksCisgICAgIEMoNGNjZjdlNzUpfSwKKyAgICB7QyhkMGYwNmMyOGM3YjM2ODIzKSwgQygx
MDA4Y2IwODc0ZGU0YmI4KSwgQyhkNmM3ZmY4MTZjN2E3MzdiKSwKKyAgICAgQyg0ODliNjk3ZmUz
MGFhNjVmKSwgQyg0ZGEwZmI2MjFmZGM3ODE3KSwgQyhkYzQzNTgzYjgyYzU4MTA3KSwKKyAgICAg
Qyg0YjAyNjFkZWJkZWMzY2Q2KSwgQyg0ODliNjk3ZmUzMGFhNjVmKSwgQyg0ZGEwZmI2MjFmZGM3
ODE3KSwKKyAgICAgQyhkYzQzNTgzYjgyYzU4MTA3KSwgQyg0YjAyNjFkZWJkZWMzY2Q2KSwgQyhh
OTc0OGQ3YjZjMGUwMTZjKSwKKyAgICAgQyg3ZTg4MjhmN2JhNGIwMzRiKSwgQyhkYTBmYTU0MzQ4
YTI1MTJhKSwgQyhlYmY5NzQ1YzA5NjJmOWFkKSwKKyAgICAgQyg5MTVjZWY4Nil9LAorICAgIHtD
KDk5YjcwNDI0NjBkNzJlYzYpLCBDKDJhNTNlNWUyYjhlNzk1YzIpLCBDKDUzYTc4MTMyZDllMWIz
ZTMpLAorICAgICBDKGMwNDNlNjdlNmZjNjQxMTgpLCBDKGZmMGFiZmU5MjZkODQ0ZDMpLCBDKGYy
YTlmZTVkYjJlOTEwZmUpLAorICAgICBDKGNlMzUyY2RjODRhOTY0ZGQpLCBDKGMwNDNlNjdlNmZj
NjQxMTgpLCBDKGZmMGFiZmU5MjZkODQ0ZDMpLAorICAgICBDKGYyYTlmZTVkYjJlOTEwZmUpLCBD
KGNlMzUyY2RjODRhOTY0ZGQpLCBDKGI4OWJjMDI4YWE1ZTYwNjMpLAorICAgICBDKGEzNTRlN2Zk
YWMwNDQ1OWMpLCBDKDY4ZDY1NDdlNmU5ODAxODkpLCBDKGM5NjhkZGRmZDU3Mzc3M2UpLAorICAg
ICBDKDVjYjU5NDgyKX0sCisgICAge0MoNGY0ZGZjZmMwZWMyYmFlNSksIEMoODQxMjMzMTQ4MjY4
YTFiOCksIEMoOTI0OGE3NmFiOGJlMGQzKSwKKyAgICAgQygzMzRjNWEyNWI1OTAzYThjKSwgQyg0
Yzk0ZmVmNDQzMTIyMTI4KSwgQyg3NDNlN2Q4NDU0NjU1YzQwKSwKKyAgICAgQygxYWIxZTZkMTQ1
MmFlMmNkKSwgQygzMzRjNWEyNWI1OTAzYThjKSwgQyg0Yzk0ZmVmNDQzMTIyMTI4KSwKKyAgICAg
Qyg3NDNlN2Q4NDU0NjU1YzQwKSwgQygxYWIxZTZkMTQ1MmFlMmNkKSwgQyhmZWM3NjZkZTRhOGU0
NzZjKSwKKyAgICAgQyhjYzA5MjlkYTk1NjdlNzFiKSwgQyg1ZjllZjViNWYxNTBjMzVhKSwgQyg4
NzY1OWNhYmQ2NDk3NjhmKSwKKyAgICAgQyg2Y2EzZjUzMil9LAorICAgIHtDKGZlODZiZjlkNDQy
MmI5YWUpLCBDKGViY2U4OWM5MDY0MWVmOWMpLCBDKDFjODRlMjI5MmMwYjU2NTkpLAorICAgICBD
KDhiZGU2MjVhMTBhOGM1MGQpLCBDKGViODI3MWRlZDFmNzlhMGIpLCBDKDE0ZGM2ODQ0ZjBkZTdh
M2MpLAorICAgICBDKGY4NWIyZjk1NDFlN2U2ZGEpLCBDKDhiZGU2MjVhMTBhOGM1MGQpLCBDKGVi
ODI3MWRlZDFmNzlhMGIpLAorICAgICBDKDE0ZGM2ODQ0ZjBkZTdhM2MpLCBDKGY4NWIyZjk1NDFl
N2U2ZGEpLCBDKDJmZTIyY2ZkMTY4M2I5NjEpLAorICAgICBDKGVhMWQ3NWM1YjdhYTAxY2EpLCBD
KDllZWY2MGE0NDg3NmJiOTUpLCBDKDk1MGM4MThlNTA1YzZmN2YpLAorICAgICBDKGUyNGYzODU5
KX0sCisgICAge0MoYTkwZDgxMDYwOTMyZGJiMCksIEMoOGFjZmFhODhjNWZiZTkyYiksIEMoN2M2
ZjM0NDdlOTBmN2YzZiksCisgICAgIEMoZGQ1MmZjMTRjOGRkMzE0MyksIEMoMWJjNzUwODUxNmU0
MDYyOCksIEMoMzA1OTczMDI2NmFkZTYyNiksCisgICAgIEMoZmZhNTI2ODIyZjM5MWMyKSwgQyhk
ZDUyZmMxNGM4ZGQzMTQzKSwgQygxYmM3NTA4NTE2ZTQwNjI4KSwKKyAgICAgQygzMDU5NzMwMjY2
YWRlNjI2KSwgQyhmZmE1MjY4MjJmMzkxYzIpLCBDKGUyNTIzMmQ3YWZjOGE0MDYpLAorICAgICBD
KGQyYjhhNWEzZjNiNWY2NzApLCBDKDY2MzBmMzNlZGI3ZGZlMzIpLCBDKGM3MTI1MGJhNjhjNGVh
ODYpLAorICAgICBDKGFkZjVhOWM3KX0sCisgICAge0MoMTc5MzhhMWIwZTdmNTk1MiksIEMoMjJj
YWRkMmY1NmY4YTRiZSksIEMoODRiMGQxMTgzZDVlZDdjMSksCisgICAgIEMoYzEzMzZiOTJmZWY5
MWJmNiksIEMoODAzMzJhMzk0NWYzM2ZhOSksIEMoYTBmNjhiODZmNzI2ZmY5MiksCisgICAgIEMo
YTNkYjUyODJjZjVmNGMwYiksIEMoYzEzMzZiOTJmZWY5MWJmNiksIEMoODAzMzJhMzk0NWYzM2Zh
OSksCisgICAgIEMoYTBmNjhiODZmNzI2ZmY5MiksIEMoYTNkYjUyODJjZjVmNGMwYiksIEMoODI2
NDBiNmZjNDkxNjYwNyksCisgICAgIEMoMmRjMmEzYWExYTg5NDE3NSksIEMoOGI0Yzg1MmJkZWU3
Y2M5KSwgQygxMGI5ZDBhMDhiNTVmZjgzKSwgQygzMjI2NGI3NSl9LAorICAgIHtDKGRlOWUwY2Iw
ZTE2ZjZlNmQpLCBDKDIzOGU2MjgzYWE0ZjY1OTQpLCBDKDRmYjljOTE0YzJmMGExM2IpLAorICAg
ICBDKDQ5N2NiOTEyYjY3MGYzYiksIEMoZDk2M2EzZjAyZmY0YTViNiksIEMoNGZjY2VmYWUxMWI1
MDM5MSksCisgICAgIEMoNDJiYTQ3ZGIzZjc2NzJmKSwgQyg0OTdjYjkxMmI2NzBmM2IpLCBDKGQ5
NjNhM2YwMmZmNGE1YjYpLAorICAgICBDKDRmY2NlZmFlMTFiNTAzOTEpLCBDKDQyYmE0N2RiM2Y3
NjcyZiksIEMoMWQ2YjY1NWExODg5ZmVlZiksCisgICAgIEMoNWYzMTlhYmY4ZmFmYTE5ZiksIEMo
NzE1YzJlNDlkZWIxNDYyMCksIEMoOGQ5MTUzMDgyZWNkY2VhNCksCisgICAgIEMoYTY0YjMzNzYp
fSwKKyAgICB7Qyg2ZDRiODc2ZDliMTQ2ZDFhKSwgQyhhYWIyZDY0Y2U4ZjI2NzM5KSwgQyhkMzE1
ZjkzNjAwZTgzZmU1KSwKKyAgICAgQygyZmU5ZmFiZGJlN2ZkZDQpLCBDKDc1NWRiMjQ5YTJkODFh
NjkpLCBDKGYyNzkyOWYzNjA0NDZkNzEpLAorICAgICBDKDc5YTFiZjk1N2MwYzFiOTIpLCBDKDJm
ZTlmYWJkYmU3ZmRkNCksIEMoNzU1ZGIyNDlhMmQ4MWE2OSksCisgICAgIEMoZjI3OTI5ZjM2MDQ0
NmQ3MSksIEMoNzlhMWJmOTU3YzBjMWI5MiksIEMoM2M4YTI4ZDRjOTM2YzljZCksCisgICAgIEMo
ZGYwZDNkMTNiMmM2YTkwMiksIEMoYzc2NzAyZGQ5N2NkMmVkZCksIEMoMWFhMjIwZjdiZTE2NTE3
KSwgQyhkMzM4OTBlKX0sCisgICAge0MoZTY5OGZhM2Y1NGU2ZWEyMiksIEMoYmQyOGUyMGU3NDU1
MzU4YyksIEMoOWFjZTE2MWY2ZWE3NmU2NiksCisgICAgIEMoZDUzZmI3ZTNjOTNhOWU0KSwgQyg3
MzdhZTcxYjA1MWJmMTA4KSwgQyg3YWM3MWZlYjg0YzJkZjQyKSwKKyAgICAgQygzZDgwNzVjZDI5
M2ExNWI0KSwgQyhkNTNmYjdlM2M5M2E5ZTQpLCBDKDczN2FlNzFiMDUxYmYxMDgpLAorICAgICBD
KDdhYzcxZmViODRjMmRmNDIpLCBDKDNkODA3NWNkMjkzYTE1YjQpLCBDKGJmOGNlZTVlMDk1ZDhh
N2MpLAorICAgICBDKGU3MDg2YjNjNzYwODE0M2EpLCBDKGU1NWIwYzJmYTkzOGQ3MGMpLCBDKGZm
ZmI1ZjU4ZTY0MzY0OWMpLAorICAgICBDKDkyNmQ0YjYzKX0sCisgICAge0MoN2JjMGRlZWQ0ZmIz
NDlmNyksIEMoMTc3MWFmZjI1ZGM3MjJmYSksIEMoMTlmZjA2NDRkOTY4MTkxNyksCisgICAgIEMo
Y2Y3ZDdmMjViZDcwY2QyYyksIEMoOTQ2NGVkOWJhZWI0MWI0ZiksIEMoYjkwNjRmNWMzY2IxMWI3
MSksCisgICAgIEMoMjM3ZTM5MjI5YjAxMmIyMCksIEMoY2Y3ZDdmMjViZDcwY2QyYyksIEMoOTQ2
NGVkOWJhZWI0MWI0ZiksCisgICAgIEMoYjkwNjRmNWMzY2IxMWI3MSksIEMoMjM3ZTM5MjI5YjAx
MmIyMCksIEMoZGQ1NGQzZjVkOTgyZGZmZSksCisgICAgIEMoN2ZjNzU2MmRiZmM4MWRiZiksIEMo
NWIwZGQxOTI0ZjcwOTQ1KSwgQyhmMTc2MDUzN2Q4MjYxMTM1KSwgQyhkNTFiYTUzOSl9LAorICAg
IHtDKGRiNGIxNWU4ODUzM2Y2MjIpLCBDKDI1NmQ2ZDI0MTliNDFjZTkpLCBDKDlkN2M1Mzc4Mzk2
NzY1ZDUpLAorICAgICBDKDkwNDBlNWI5MzZiODY2MWIpLCBDKDI3NmUwOGZhNTNhYzI3ZmQpLCBD
KDhjOTQ0ZDM5YzJiZGQyY2MpLAorICAgICBDKGUyNTE0Yzk4MDJhNTc0M2MpLCBDKDkwNDBlNWI5
MzZiODY2MWIpLCBDKDI3NmUwOGZhNTNhYzI3ZmQpLAorICAgICBDKDhjOTQ0ZDM5YzJiZGQyY2Mp
LCBDKGUyNTE0Yzk4MDJhNTc0M2MpLCBDKGU4MjEwN2IxMWFjOTAzODYpLAorICAgICBDKDdkNmEy
MmJjMzUwNTVlNiksIEMoZmQ2ZWE5ZDFjNDM4ZDhhZSksIEMoYmU2MDE1MTQ5ZTk4MTU1MyksIEMo
N2YzNzYzNmQpfSwKKyAgICB7Qyg5MjI4MzQ3MzVlODZlY2IyKSwgQygzNjMzODI2ODViODgzMjhl
KSwgQyhlOWM5Mjk2MGQ3MTQ0NjMwKSwKKyAgICAgQyg4NDMxYjFiZmQwYTIzNzljKSwgQyg5MDM4
MzkxM2FlYTI4M2Y5KSwgQyhhNjE2MzgzMWViNDkyNGQyKSwKKyAgICAgQyg1ZjM5MjFiNGY5MDg0
YWVlKSwgQyg4NDMxYjFiZmQwYTIzNzljKSwgQyg5MDM4MzkxM2FlYTI4M2Y5KSwKKyAgICAgQyhh
NjE2MzgzMWViNDkyNGQyKSwgQyg1ZjM5MjFiNGY5MDg0YWVlKSwgQyg3YTcwMDYxYTE0NzNlNTc5
KSwKKyAgICAgQyg1YjE5ZDgwZGNkMmM2MzMxKSwgQyg2MTk2Yjk3OTMxZmFhZDI3KSwgQyg4Njli
ZjY4MjhlMjM3YzNmKSwKKyAgICAgQyhiOTgwMjZjMCl9LAorICAgIHtDKDMwZjFkNzJjODEyZjFl
YjgpLCBDKGI1NjdjZDRhNjljZDg5ODkpLCBDKDgyMGI2Yzk5MmE1MWYwYmMpLAorICAgICBDKGM1
NDY3N2E4MDM2NzEyNWUpLCBDKDMyMDRmYmRiYTQ2MmU2MDYpLCBDKDg1NjMyNzhhZmM5ZWFlNjkp
LAorICAgICBDKDI2MjE0N2RkNGJmN2U1NjYpLCBDKGM1NDY3N2E4MDM2NzEyNWUpLCBDKDMyMDRm
YmRiYTQ2MmU2MDYpLAorICAgICBDKDg1NjMyNzhhZmM5ZWFlNjkpLCBDKDI2MjE0N2RkNGJmN2U1
NjYpLCBDKDIxNzhiNjNlN2VlMmQyMzApLAorICAgICBDKGU5YzYxYWQ4MWY1YmZmMjYpLCBDKDlh
ZjdhODFiM2M1MDFlY2EpLCBDKDQ0MTA0YTM4NTlmMDIzOGYpLAorICAgICBDKGI4Nzc3NjdlKX0s
CisgICAge0MoMTY4ODg0MjY3ZjM4MTdlOSksIEMoNWIzNzZlMDUwZjYzNzY0NSksIEMoMWMxODMx
NGFiZDM0NDk3YSksCisgICAgIEMoOTU5OGY2YWIwNjgzZmNjMiksIEMoMWM4MDVhYmY3YjgwZTFl
ZSksIEMoZGVjOWFjNDJlZTBkMGYzMiksCisgICAgIEMoOGNkNzJlMzkxMmQyNDY2MyksIEMoOTU5
OGY2YWIwNjgzZmNjMiksIEMoMWM4MDVhYmY3YjgwZTFlZSksCisgICAgIEMoZGVjOWFjNDJlZTBk
MGYzMiksIEMoOGNkNzJlMzkxMmQyNDY2MyksIEMoMWYwMjVkNDA1ZjFjMWQ4NyksCisgICAgIEMo
YmY3YjYyMjFlMTY2OGY4ZiksIEMoNTIzMTZmNjRlNjkyZGJiMCksIEMoN2JmNDNkZjYxZWM1MWIz
OSksIEMoYWVmYWU3Nyl9LAorICAgIHtDKDgyZTc4NTk2ZWUzZTU2YTcpLCBDKDI1Njk3ZDljODdm
MzBkOTgpLCBDKDc2MDBhODM0MjgzNDkyNGQpLAorICAgICBDKDZiYTM3MmY0YjdhYjI2OGIpLCBD
KDhjMzIzN2NmMWZlMjQzZGYpLCBDKDM4MzNmYzUxMDEyOTAzZGYpLAorICAgICBDKDhlMzEzMTAx
MDhjNTY4M2YpLCBDKDZiYTM3MmY0YjdhYjI2OGIpLCBDKDhjMzIzN2NmMWZlMjQzZGYpLAorICAg
ICBDKDM4MzNmYzUxMDEyOTAzZGYpLCBDKDhlMzEzMTAxMDhjNTY4M2YpLCBDKDEyNjU5MzcxNWMy
ZGU0MjkpLAorICAgICBDKDQ4Y2E4ZjM1YTNmNTRiOTApLCBDKGI5MzIyYjYzMmY0ZjhiMCksIEMo
OTI2YmIxNjliNzMzNzY5MyksIEMoZjY4NjkxMSl9LAorICAgIHtDKGFhMmQ2Y2YyMmUzY2MyNTIp
LCBDKDliNGRlYzRmNWUxNzlmMTYpLCBDKDc2ZmIwZmJhMWQ5OWE5OWEpLAorICAgICBDKDlhNjJh
ZjNkYmJhMTQwZGEpLCBDKDI3ODU3ZWEwNDRlOWRmYzEpLCBDKDMzYWJjZTlkYTIyNzI2NDcpLAor
ICAgICBDKGIyMmE3OTkzYWFmMzI1NTYpLCBDKDlhNjJhZjNkYmJhMTQwZGEpLCBDKDI3ODU3ZWEw
NDRlOWRmYzEpLAorICAgICBDKDMzYWJjZTlkYTIyNzI2NDcpLCBDKGIyMmE3OTkzYWFmMzI1NTYp
LCBDKGJmOGY4OGY4MDE5YmVkZjApLAorICAgICBDKGVkMmQ3ZjAxZmIyNzM5MDUpLCBDKDZiNDVm
MTU5MDFiNDgxY2QpLCBDKGY4OGViYjQxM2JhNmE4ZDUpLAorICAgICBDKDNkZWFkZjEyKX0sCisg
ICAge0MoN2JmNWZmZDdmNjkzODVjNyksIEMoZmMwNzdiMWQ4YmM4Mjg3OSksIEMoOWMwNGUzNmY5
ZWQ4M2EyNCksCisgICAgIEMoODIwNjVjNjJlNjU4MjE4OCksIEMoOGVmNzg3ZmQzNTZmNWU0Myks
IEMoMjkyMmU1M2UzNmUxN2RmYSksCisgICAgIEMoOTgwNWYyMjNkMzg1MDEwYiksIEMoODIwNjVj
NjJlNjU4MjE4OCksIEMoOGVmNzg3ZmQzNTZmNWU0MyksCisgICAgIEMoMjkyMmU1M2UzNmUxN2Rm
YSksIEMoOTgwNWYyMjNkMzg1MDEwYiksIEMoNjkyMTU0ZjM0OTFiNzg3ZCksCisgICAgIEMoZTdl
NjQ3MDBlNDE0ZmJmKSwgQyg3NTdkNGQ0YWI2NTA2OWEwKSwgQyhjZDAyOTQ0NmE4ZTM0OGUyKSwg
QyhjY2YwMmE0ZSl9LAorICAgIHtDKGU4OWM4ZmY5ZjljNmUzNGIpLCBDKGY1NGMwZjY2OWE0OWY2
YzQpLCBDKGZjM2U0NmY1ZDg0NmFkZWYpLAorICAgICBDKDIyZjJhYTNkZjIyMjFjYyksIEMoZjY2
ZmVhOTBmNWQ2MjE3NCksIEMoYjc1ZGVmYWVhYTFkZDJhNyksCisgICAgIEMoOWI5OTRjZDlhNzIx
NGZkNSksIEMoMjJmMmFhM2RmMjIyMWNjKSwgQyhmNjZmZWE5MGY1ZDYyMTc0KSwKKyAgICAgQyhi
NzVkZWZhZWFhMWRkMmE3KSwgQyg5Yjk5NGNkOWE3MjE0ZmQ1KSwgQyhmYWM2NzVhMzE4MDRiNzcz
KSwKKyAgICAgQyg5OGJjYjNiODIwYzUwZmM2KSwgQyhlMTRhZjY0ZDI4Y2YwODg1KSwgQygyNzQ2
NmZiZDJiMzYwZWI1KSwKKyAgICAgQygxNzZjMTcyMil9LAorICAgIHtDKGExOGZiY2RjY2QxMWUx
ZjQpLCBDKDgyNDgyMTY3NTFkZmQ2NWUpLCBDKDQwYzA4OWYyMDhkODlkN2MpLAorICAgICBDKDIy
OWI3OWFiNjlhZTk3ZCksIEMoYTg3YWFiYzJlYzI2ZTU4MiksIEMoYmUyYjA1MzcyMWViMjZkMiks
CisgICAgIEMoMTBmZWJkN2YwYzNkNmZjYiksIEMoMjI5Yjc5YWI2OWFlOTdkKSwgQyhhODdhYWJj
MmVjMjZlNTgyKSwKKyAgICAgQyhiZTJiMDUzNzIxZWIyNmQyKSwgQygxMGZlYmQ3ZjBjM2Q2ZmNi
KSwgQyg5Y2M1YjliMmY2ZTNiZjdiKSwKKyAgICAgQyg2NTVkODQ5NWZlNjI0YTg2KSwgQyg2Mzgx
YTlmM2QxZjJiZDdlKSwgQyg3OWViYWJiZmMyNWM4M2UyKSwgQygyNmY4MmFkKX0sCisgICAge0Mo
MmQ1NGY0MGNjNDA4OGIxNyksIEMoNTlkMTU2MzNiMGNkMTM5OSksIEMoYThjYzA0YmIxYmZmZDE1
YiksCisgICAgIEMoZDMzMmNkYjA3M2Q4ZGM0NiksIEMoMjcyYzU2NDY2ODY4Y2I0NiksIEMoN2U3
ZmNiZTM1Y2E2YzNmMyksCisgICAgIEMoZWU4ZjUxZTVhNzAzOTlkNCksIEMoZDMzMmNkYjA3M2Q4
ZGM0NiksIEMoMjcyYzU2NDY2ODY4Y2I0NiksCisgICAgIEMoN2U3ZmNiZTM1Y2E2YzNmMyksIEMo
ZWU4ZjUxZTVhNzAzOTlkNCksIEMoMTY3MzdhOWM3NTgxZmU3YiksCisgICAgIEMoZWQwNGJmNTJm
NGI3NWRjYiksIEMoOTcwN2ZmYjM2YmQzMGMxYSksIEMoMTM5MGYyMzZmZGMwZGUzZSksCisgICAg
IEMoYjUyNDRmNDIpfSwKKyAgICB7Qyg2OTI3Njk0NmNiNGU4N2M3KSwgQyg2MmJkYmU2MTgzYmU2
ZmE5KSwgQygzYmE5NzczZGFjNDQyYTFhKSwKKyAgICAgQyg3MDJlMmFmYzdmNWExODI1KSwgQyg4
YzQ5YjExZWE4MTUxZmRjKSwgQyhjYWYzZmVmNjFmNWE4NmZhKSwKKyAgICAgQyhlZjBiMmVlODY0
OWQ3MjcyKSwgQyg3MDJlMmFmYzdmNWExODI1KSwgQyg4YzQ5YjExZWE4MTUxZmRjKSwKKyAgICAg
QyhjYWYzZmVmNjFmNWE4NmZhKSwgQyhlZjBiMmVlODY0OWQ3MjcyKSwgQyg5ZTM0YTRlMDhkOTQ0
MWUxKSwKKyAgICAgQyg3YmRjMGNkNjRkNWFmNTMzKSwgQyhhOTI2YjE0ZDk5ZTNkODY4KSwgQyhm
Y2E5MjNhMTc3ODhjY2U0KSwKKyAgICAgQyg0OWE2ODllNSl9LAorICAgIHtDKDY2ODE3NGEzZjQ0
M2RmMWQpLCBDKDQwNzI5OTM5MmRhMWNlODYpLCBDKGMyYTNmN2Q3ZjJjNWJlMjgpLAorICAgICBD
KGE1OTBiMjAyYTdhNTgwN2IpLCBDKDk2OGQyNTkzZjdjY2I1NGUpLCBDKDlkZDhkNjY5ZTNlOTVk
ZWMpLAorICAgICBDKGVlMGNjNWRkNThiNmU5M2EpLCBDKGE1OTBiMjAyYTdhNTgwN2IpLCBDKDk2
OGQyNTkzZjdjY2I1NGUpLAorICAgICBDKDlkZDhkNjY5ZTNlOTVkZWMpLCBDKGVlMGNjNWRkNThi
NmU5M2EpLCBDKGFjNjVkNWE5NDY2ZmI0ODMpLAorICAgICBDKDIyMWJlNTM4YjJjOWQ4MDYpLCBD
KDVjYmU5NDQxNzg0ZjlmZDkpLCBDKGQ0YzdkNWQ2ZTNjMTIyYjgpLCBDKDU5ZmNkZDMpfSwKKyAg
ICB7Qyg1ZTI5YmU4NDdiZDUwNDYpLCBDKGI1NjFjN2YxOWM4ZjgwYzMpLCBDKDVlNWFiZDUwMjFj
Y2FlYWYpLAorICAgICBDKDc0MzJkNjM4ODhlMGMzMDYpLCBDKDc0YmJjZWVlZDQ3OWNiNzEpLCBD
KDY0NzE1ODY1OTk1NzVmZGYpLAorICAgICBDKDZhODU5YWQyMzM2NWNiYTIpLCBDKDc0MzJkNjM4
ODhlMGMzMDYpLCBDKDc0YmJjZWVlZDQ3OWNiNzEpLAorICAgICBDKDY0NzE1ODY1OTk1NzVmZGYp
LCBDKDZhODU5YWQyMzM2NWNiYTIpLCBDKGY5Y2VlYzg0YWNkMThkY2MpLAorICAgICBDKDc0YTI0
MmZmMTkwNzQzN2MpLCBDKGY3MDg5MDE5NGUxZWU5MTMpLCBDKDc3N2RmY2I0YmIwMWYwYmEpLAor
ICAgICBDKDRmNGIwNGU5KX0sCisgICAge0MoY2QwZDc5ZjIxNjRkYTAxNCksIEMoNGMzODZiYjVj
NWQ2Y2EwYyksIEMoOGU3NzFiMDM2NDdjM2I2MyksCisgICAgIEMoNjlkYjIzODc1Y2IwYjcxNSks
IEMoYWRhOGRkOTE1MDRhZTM3ZiksIEMoNDZiZjE4ZGJmMDQ1ZWQ2YSksCisgICAgIEMoZTFiNWY2
N2IwNjQ1YWI2MyksIEMoNjlkYjIzODc1Y2IwYjcxNSksIEMoYWRhOGRkOTE1MDRhZTM3ZiksCisg
ICAgIEMoNDZiZjE4ZGJmMDQ1ZWQ2YSksIEMoZTFiNWY2N2IwNjQ1YWI2MyksIEMoODc3YmU4ZjVk
Y2RkZmY0KSwKKyAgICAgQyg2ZDQ3MWI1ZjljYTJlMmQxKSwgQyg4MDJjODZkNmY0OTViOWJiKSwg
QyhhMWY5YjliMjJiM2JlNzA0KSwKKyAgICAgQyg4YjAwZjg5MSl9LAorICAgIHtDKGUwZTZmYzBi
MTYyOGFmMWQpLCBDKDI5YmU1ZmI0YzI3YTI5NDkpLCBDKDFjM2Y3ODFhNjA0ZDM2MzApLAorICAg
ICBDKGM0YWY3ZmFmODgzMDMzYWEpLCBDKDliZDI5NmM0ZTk0NTNjYWMpLCBDKGNhNDU0MjZjMWY3
ZTMzZjkpLAorICAgICBDKGE2YmJkY2Y3MDc0ZDQwYzUpLCBDKGM0YWY3ZmFmODgzMDMzYWEpLCBD
KDliZDI5NmM0ZTk0NTNjYWMpLAorICAgICBDKGNhNDU0MjZjMWY3ZTMzZjkpLCBDKGE2YmJkY2Y3
MDc0ZDQwYzUpLCBDKGUxM2EwMDVkNzE0MjczM2IpLAorICAgICBDKGMwMmI3OTI1YzVlZWVmYWYp
LCBDKGQzOTExOWE2MDQ0MWUyZDUpLCBDKDNjMjRjNzEwZGY4ZjRkNDMpLAorICAgICBDKDE2ZTEx
NGYzKX0sCisgICAge0MoMjA1ODkyNzY2NGFkZmQ5MyksIEMoNmU4Zjk2OGM3OTYzYmFhNSksIEMo
YWYzZGNlZDZmZmY3YzM5NCksCisgICAgIEMoNDJlMzRjZjNkNTNjNzg3NiksIEMoOWNkZGJiMjY0
MjRkYzVlKSwgQyg2NGY2MzQwYTZkOGVkZGFkKSwKKyAgICAgQygyMTk2ZTQ4OGViMmEzYTRiKSwg
Qyg0MmUzNGNmM2Q1M2M3ODc2KSwgQyg5Y2RkYmIyNjQyNGRjNWUpLAorICAgICBDKDY0ZjYzNDBh
NmQ4ZWRkYWQpLCBDKDIxOTZlNDg4ZWIyYTNhNGIpLCBDKGM5ZTlkYTI1OTExYTE2ZmQpLAorICAg
ICBDKGUyMWI0NjgzZjNlMTk2YTgpLCBDKGNiODBiZjFhNGM2ZmRiYjQpLCBDKDUzNzkyZTliM2Mz
ZTY3ZjgpLAorICAgICBDKGQ2YjZkYWRjKX0sCisgICAge0MoZGMxMDcyODVmZDhlMWFmNyksIEMo
YTg2NDFhMDYwOTMyMWYzZiksIEMoZGIwNmU4OWZmZGM1NDQ2NiksCisgICAgIEMoYmNjN2E4MWVk
NTQzMjQyOSksIEMoYjZkN2JkYzZhZDJlODFmMSksIEMoOTM2MDVlYzQ3MWFhMzdkYiksCisgICAg
IEMoYTJhNzNmOGE4NWE4ZTM5NyksIEMoYmNjN2E4MWVkNTQzMjQyOSksIEMoYjZkN2JkYzZhZDJl
ODFmMSksCisgICAgIEMoOTM2MDVlYzQ3MWFhMzdkYiksIEMoYTJhNzNmOGE4NWE4ZTM5NyksIEMo
MTBhMDEyYjhjYTdhYzI0YiksCisgICAgIEMoYWFjNWZkNjMzNTE1OTVjZiksIEMoNWJiNGM2NDhh
MjI2ZGVhMCksIEMoOWQxMWVjYjJiNWMwNWM1ZiksCisgICAgIEMoODk3ZTIwYWMpfSwKKyAgICB7
QyhmYmJhMWFmZTJlMzI4MGYxKSwgQyg3NTVhNWYzOTJmMDdmY2UpLCBDKDllNDRhOWExNTQwMjgw
OWEpLAorICAgICBDKDYyMjZhMzJlMjUwOTk4NDgpLCBDKGVhODk1NjYxZWNmNTMwMDQpLCBDKDRk
N2UwMTU4ZGIyMjI4YjkpLAorICAgICBDKGU1YTdkODI5MjJmNjk4NDIpLCBDKDYyMjZhMzJlMjUw
OTk4NDgpLCBDKGVhODk1NjYxZWNmNTMwMDQpLAorICAgICBDKDRkN2UwMTU4ZGIyMjI4YjkpLCBD
KGU1YTdkODI5MjJmNjk4NDIpLCBDKDJjZWE3NzEzYjY5ODQwY2EpLAorICAgICBDKDE4ZGU3Yjlh
ZTkzODM3NWIpLCBDKGYxMjdjY2EwOGYzY2M2NjUpLCBDKGIxYzIyZDcyNzY2NWFkMiksIEMoZjk5
NmUwNWQpfSwKKyAgICB7QyhiZmExMDc4NWRkYzEwMTFiKSwgQyhiNmUxYzRkMmY2NzBmN2RlKSwg
Qyg1MTdkOTU2MDRlNGZjYzFmKSwKKyAgICAgQyhjYTY1NTJhMGRmYjgyYzczKSwgQyhiMDI0Y2Rm
MDllMzRiYTA3KSwgQyg2NmNkOGM1YTk1ZDczOTNiKSwKKyAgICAgQyhlMzkzOWFjZjc5MGQ0YTc0
KSwgQyhjYTY1NTJhMGRmYjgyYzczKSwgQyhiMDI0Y2RmMDllMzRiYTA3KSwKKyAgICAgQyg2NmNk
OGM1YTk1ZDczOTNiKSwgQyhlMzkzOWFjZjc5MGQ0YTc0KSwgQyg5NzgyNzU0MWExZWYwNTFlKSwK
KyAgICAgQyhhYzJmY2U0N2ViZTY1MDBjKSwgQyhiM2YwNmQzYmRkZjNiZDZhKSwgQygxZDc0YWZi
MjVlMWNlNWZlKSwKKyAgICAgQyhjNDMwNmFmNil9LAorICAgIHtDKDUzNGNjMzVmMGVlMWViNGUp
LCBDKGI3MDM4MjBmMWYzYjNkY2UpLCBDKDg4NGFhMTY0Y2YyMjM2MyksCisgICAgIEMoZjE0ZWY3
ZjQ3ZDhhNTdhMyksIEMoODBkMWY4NmYyZTA2MWQ3YyksIEMoNDAxZDZjMmYxNTFiNWE2MiksCisg
ICAgIEMoZTk4ODQ2MDIyNDEwODk0NCksIEMoZjE0ZWY3ZjQ3ZDhhNTdhMyksIEMoODBkMWY4NmYy
ZTA2MWQ3YyksCisgICAgIEMoNDAxZDZjMmYxNTFiNWE2MiksIEMoZTk4ODQ2MDIyNDEwODk0NCks
IEMoNzgwNGQ0MTM1ZjY4Y2QxOSksCisgICAgIEMoNTQ4N2I0YjM5ZTY5ZmU4ZSksIEMoOGNjNTk5
OTAxNTM1OGEyNyksIEMoOGYzNzI5YjYxYzJkNTYwMSksCisgICAgIEMoNmRjYWQ0MzMpfSwKKyAg
ICB7Qyg3Y2E2ZTM5MzM5OTVkYWMpLCBDKGZkMTE4Yzc3ZGFhODE4OCksIEMoM2FjZWI3YjVlN2Rh
NjU0NSksCisgICAgIEMoYzgzODk3OTk0NDU0ODBkYiksIEMoNTM4OWY1ZGY4YWFjZDUwZCksIEMo
ZDEzNjU4MWYyMmZhYjVmKSwKKyAgICAgQyhjMmYzMWY4NTk5MWRhNDE3KSwgQyhjODM4OTc5OTQ0
NTQ4MGRiKSwgQyg1Mzg5ZjVkZjhhYWNkNTBkKSwKKyAgICAgQyhkMTM2NTgxZjIyZmFiNWYpLCBD
KGMyZjMxZjg1OTkxZGE0MTcpLCBDKGFlZmJmOWZmODQwMzVhNDMpLAorICAgICBDKDhhY2NiYWY0
NGFkYWRkN2MpLCBDKGU1N2YzNjU3MzQ0YjY3ZjUpLCBDKDIxNDkwZTVlOGFiZGVjNTEpLAorICAg
ICBDKDNjMDczNzRkKX0sCisgICAge0MoZjBkNjA0NGY2ZWZkNzU5OCksIEMoZTA0NGQ2YmE0MzY5
ODU2ZSksIEMoOTE5NjhlNGY4YzhhMWE0YyksCisgICAgIEMoNzBiZDE5Njg5OTZiZmZjMiksIEMo
NGM2MTNkZTVkOGFiMzJhYyksIEMoZmUxZjRmOTcyMDZmNzlkOCksCisgICAgIEMoYWMwNDM0ZjJj
NGUyMTNhOSksIEMoNzBiZDE5Njg5OTZiZmZjMiksIEMoNGM2MTNkZTVkOGFiMzJhYyksCisgICAg
IEMoZmUxZjRmOTcyMDZmNzlkOCksIEMoYWMwNDM0ZjJjNGUyMTNhOSksIEMoNzQ5MGU5ZDgyY2Zl
MjJjYSksCisgICAgIEMoNWZiYmY3Zjk4NzQ1NDIzOCksIEMoYzM5ZTBkYzgzNjhjZTk0OSksIEMo
MjIyMDFkMzg5NDY3NmM3MSksCisgICAgIEMoZjBmNDYwMmMpfSwKKyAgICB7QygzZDY5ZTUyMDQ5
ODc5ZDYxKSwgQyg3NjYxMDYzNmVhOWY3NGZlKSwgQyhlOWJmNTYwMmY4OTMxMGMwKSwKKyAgICAg
Qyg4ZWViMTc3YTg2MDUzYzExKSwgQyhlMzkwMTIyYzM0NWYzNGEyKSwgQygxZTMwZTQ3YWZiYWFm
OGQ2KSwKKyAgICAgQyg3Yjg5MmY2OGU1ZjkxNzMyKSwgQyg4ZWViMTc3YTg2MDUzYzExKSwgQyhl
MzkwMTIyYzM0NWYzNGEyKSwKKyAgICAgQygxZTMwZTQ3YWZiYWFmOGQ2KSwgQyg3Yjg5MmY2OGU1
ZjkxNzMyKSwgQyhiODc5MjI1MjVmYTQ0MTU4KSwKKyAgICAgQyhmNDQwYTFlZTFhMWE3NjZiKSwg
QyhlZThlZmFkMjc5ZDA4YzVjKSwgQyg0MjFmOTEwYzViNjAyMTZlKSwKKyAgICAgQygzZTFlYTA3
MSl9LAorICAgIHtDKDc5ZGEyNDJhMTZhY2FlMzEpLCBDKDE4M2M1ZjQzOGUyOWQ0MCksIEMoNmQz
NTE3MTBhZTkyZjNkZSksCisgICAgIEMoMjcyMzNiMjhiNWIxMWU5YiksIEMoYzdkZmU4OTg4YTk0
MjcwMCksIEMoNTcwZWQxMWM0YWJhZDk4NCksCisgICAgIEMoNGI0YzA0NjMyZjQ4MzExYSksIEMo
MjcyMzNiMjhiNWIxMWU5YiksIEMoYzdkZmU4OTg4YTk0MjcwMCksCisgICAgIEMoNTcwZWQxMWM0
YWJhZDk4NCksIEMoNGI0YzA0NjMyZjQ4MzExYSksIEMoMTJmMzMyMzU0NDJjYmY5KSwKKyAgICAg
QyhhMzUzMTVjYTBiNWI4Y2RiKSwgQyhkOGFiZGU2MmVhZDU1MDZiKSwgQyhmYzBmY2Y4NDc4YWQ1
MjY2KSwKKyAgICAgQyg2NzU4MGYwYyl9LAorICAgIHtDKDQ2MWM4MjY1NmE3NGZiNTcpLCBDKGQ4
NGI0OTFiMjc1YWEwZjcpLCBDKDhmMjYyY2IyOWE2ZWI4YjIpLAorICAgICBDKDQ5ZmEzMDcwYmM3
YjA2ZDApLCBDKGYxMmVkNDQ2YmQwYzA1MzkpLCBDKDZkNDNhYzVkMWRkNGIyNDApLAorICAgICBD
KDc2MDk1MjRmZTkwYmVjOTMpLCBDKDQ5ZmEzMDcwYmM3YjA2ZDApLCBDKGYxMmVkNDQ2YmQwYzA1
MzkpLAorICAgICBDKDZkNDNhYzVkMWRkNGIyNDApLCBDKDc2MDk1MjRmZTkwYmVjOTMpLCBDKDM5
MWMyYjJlMDc2ZWMyNDEpLAorICAgICBDKGY1ZTYyZGVkYTc4MzlmN2IpLCBDKDNjN2IzMTg2YTEw
ZDg3MGYpLCBDKDc3ZWY0ZjJjYmE0ZjEwMDUpLAorICAgICBDKDRlMTA5NDU0KX0sCisgICAge0Mo
NTNjMWE2NmQwYjEzMDAzKSwgQyg3MzFmMDYwZTZmZTc5N2ZjKSwgQyhkYWE1NjgxMTc5MTM3MWUz
KSwKKyAgICAgQyg1NzQ2NjA0NmNmNjg5NmVkKSwgQyg4YWMzN2UwZThiMjViMGM2KSwgQygzZTYw
NzRiNTJhZDNjZjE4KSwKKyAgICAgQyhhYTQ5MWNlN2I0NWRiMjk3KSwgQyg1NzQ2NjA0NmNmNjg5
NmVkKSwgQyg4YWMzN2UwZThiMjViMGM2KSwKKyAgICAgQygzZTYwNzRiNTJhZDNjZjE4KSwgQyhh
YTQ5MWNlN2I0NWRiMjk3KSwgQyhmN2E5MjI3YzVlNWUyMmMzKSwKKyAgICAgQygzZDkyZTA4NDFl
MjljZTI4KSwgQygyZDMwZGE1YjI4NTllNTlkKSwgQyhmZjM3ZmExYzljYmZhZmMyKSwKKyAgICAg
Qyg4OGE0NzRhNyl9LAorICAgIHtDKGQzYTJlZmVjMGYwNDdlOSksIEMoMWNhYmNlNTg4NTNlNThl
YSksIEMoN2ExN2IyZWFlMzI1NmJlNCksCisgICAgIEMoYzJkY2M5NzU4YzkxMDE3MSksIEMoY2I1
Y2RkYWVmZjRkZGI0MCksIEMoNWQ3Y2M1ODY5YmFlZmVmMSksCisgICAgIEMoOTY0NGM1ODUzYWY5
Y2ZlYiksIEMoYzJkY2M5NzU4YzkxMDE3MSksIEMoY2I1Y2RkYWVmZjRkZGI0MCksCisgICAgIEMo
NWQ3Y2M1ODY5YmFlZmVmMSksIEMoOTY0NGM1ODUzYWY5Y2ZlYiksIEMoMjU1Yzk2ODE4NDY5NGVl
MSksCisgICAgIEMoNGU0ZDcyNmVkYTM2MDkyNyksIEMoN2QyN2RkNWI2ZDEwMDM3NyksIEMoOWEz
MDBlMjAyMGRkZWEyYyksIEMoNWI1YmVkZCl9LAorICAgIHtDKDQzYzY0ZDc0ODRmN2Y5YjIpLCBD
KDVkYTAwMmI2NGFhZmFlYjcpLCBDKGI1NzZjMWU0NTgwMGE3MTYpLAorICAgICBDKDNlZTg0ZDNk
NWI0Y2EwMGIpLCBDKDVjYmM2ZDcwMTg5NGMzZjkpLCBDKGQ5ZTk0NmY1YWUxY2E5NSksCisgICAg
IEMoMjRjYTA2ZTY3ZjBiMTgzMyksIEMoM2VlODRkM2Q1YjRjYTAwYiksIEMoNWNiYzZkNzAxODk0
YzNmOSksCisgICAgIEMoZDllOTQ2ZjVhZTFjYTk1KSwgQygyNGNhMDZlNjdmMGIxODMzKSwgQygz
NDEzZDQ2YjQxNTI2NTBlKSwKKyAgICAgQyhjYmRmZGJjMmFiNTE2ZjljKSwgQygyYWFkOGFjYjcz
OWUwYzZjKSwgQygyYmZjOTUwZDlmOWZhOTc3KSwKKyAgICAgQygxYWFkZGZhNyl9LAorICAgIHtD
KGE3ZGVjNmFkODFjZjdmYTEpLCBDKDE4MGMxYWI3MDg2ODMwNjMpLCBDKDk1ZTBmZDcwMDhkNjdj
ZmYpLAorICAgICBDKDZiMTFjNTA3MzY4NzIwOCksIEMoN2UwYTU3ZGUwZDQ1M2YzKSwgQyhlNDhj
MjY3ZDRmNjQ2ODY3KSwKKyAgICAgQygyMTY4ZTkxMzYzNzVmOWNiKSwgQyg2YjExYzUwNzM2ODcy
MDgpLCBDKDdlMGE1N2RlMGQ0NTNmMyksCisgICAgIEMoZTQ4YzI2N2Q0ZjY0Njg2NyksIEMoMjE2
OGU5MTM2Mzc1ZjljYiksIEMoNjRkYTE5NGFlZWVhN2ZkZiksCisgICAgIEMoYTNiOWYwMWZhNTg4
NTY3OCksIEMoYzMxNmY4ZWUyZWIyYmQxNyksIEMoYTdlNGQ4MGY4M2U0NDI3ZiksCisgICAgIEMo
NWJlMDdmZDgpfSwKKyAgICB7Qyg1NDA4YTFkZjk5ZDRhZmYpLCBDKGI5NTY1ZTU4ODc0MGY2YmQp
LCBDKGFiZjI0MTgxM2IwODAwNmUpLAorICAgICBDKDdkYTllODFkODlmZGE3YWQpLCBDKDI3NDE1
N2NhYmU3MTQ0MGQpLCBDKDJjMjJkOWE0ODBiMzMxZjcpLAorICAgICBDKGU4MzVjOGFjNzQ2NDcy
ZDUpLCBDKDdkYTllODFkODlmZGE3YWQpLCBDKDI3NDE1N2NhYmU3MTQ0MGQpLAorICAgICBDKDJj
MjJkOWE0ODBiMzMxZjcpLCBDKGU4MzVjOGFjNzQ2NDcyZDUpLCBDKDIwMzhjZTgxN2EyMDFhZTQp
LAorICAgICBDKDQ2ZjMyODlkZmUxYzVlNDApLCBDKDQzNTU3OGE0MmQ0YjdjNTYpLCBDKGY5NmQ5
ZjQwOWZjZjU2MSksIEMoY2JjYTg2MDYpfSwKKyAgICB7QyhhOGIyN2E2YmNhZWVlZDRiKSwgQyhh
ZWMxZWVkZWQ2YTg3ZTM5KSwgQyg5ZGFmMjQ2ZDZmZWQ4MzI2KSwKKyAgICAgQyhkNDVhOTM4Yjc5
ZjU0ZThmKSwgQygzNjZiMjE5ZDZkMTMzZTQ4KSwgQyg1YjE0YmUzYzI1YzQ5NDA1KSwKKyAgICAg
QyhmZGQ3OTFkNDg4MTFhNTcyKSwgQyhkNDVhOTM4Yjc5ZjU0ZThmKSwgQygzNjZiMjE5ZDZkMTMz
ZTQ4KSwKKyAgICAgQyg1YjE0YmUzYzI1YzQ5NDA1KSwgQyhmZGQ3OTFkNDg4MTFhNTcyKSwgQygz
ZGU2N2I4ZDllOTVkMzM1KSwKKyAgICAgQyg5MDNjMDEzMDdjZmJlZWQ1KSwgQyhhZjdkNjVmMzIy
NzRmMWQxKSwgQyg0ZGJhMTQxYjVmYzAzYzQyKSwKKyAgICAgQyhiZGU2NGQwMSl9LAorICAgIHtD
KDlhOTUyYTgyNDZmZGMyNjkpLCBDKGQwZGNmY2FjNzRlZjI3OGMpLCBDKDI1MGY3MTM5ODM2ZjBm
MWYpLAorICAgICBDKGM4M2QzYzVmNGU1ZjAzMjApLCBDKDY5NGU3YWRlYjJiZjMyZTUpLCBDKDdh
ZDA5NTM4YTNkYTI3ZjUpLAorICAgICBDKDJiNWMxOGY5MzRhYTUzMDMpLCBDKGM4M2QzYzVmNGU1
ZjAzMjApLCBDKDY5NGU3YWRlYjJiZjMyZTUpLAorICAgICBDKDdhZDA5NTM4YTNkYTI3ZjUpLCBD
KDJiNWMxOGY5MzRhYTUzMDMpLCBDKGM0ZGFkNzcwM2QzNDMyNmUpLAorICAgICBDKDgyNTU2OWUy
YmNkYzZhMjUpLCBDKGI4M2QyNjc3MDljYTkwMGQpLCBDKDQ0ZWQwNTE1MWY1ZDc0ZTYpLAorICAg
ICBDKGVlOTBjZjMzKX0sCisgICAge0MoYzkzMDg0MWQxZDg4Njg0ZiksIEMoNWViNjZlYjE4Yjdm
OTY3MiksIEMoZTQ1NWQ0MTMwMDhhMjU0NiksCisgICAgIEMoYmMyNzFiYzBkZjE0ZDY0NyksIEMo
YjA3MTEwMGE5ZmYyZWRiYiksIEMoMmIxYTRjMWNjMzFhMTE5YSksCisgICAgIEMoYjVkN2NhYTFi
ZDk0NmNlZiksIEMoYmMyNzFiYzBkZjE0ZDY0NyksIEMoYjA3MTEwMGE5ZmYyZWRiYiksCisgICAg
IEMoMmIxYTRjMWNjMzFhMTE5YSksIEMoYjVkN2NhYTFiZDk0NmNlZiksIEMoZTAyNjIzYWUxMGY0
YWFkZCksCisgICAgIEMoZDc5ZjYwMDM4OWNkMDZmZCksIEMoMWU4ZGE3OTY1MzAzZTYyYiksIEMo
ODZmNTBlMTBlZWFiMDkyNSksCisgICAgIEMoNDMwNWMzY2UpfSwKKyAgICB7Qyg5NGRjNjk3MWUz
Y2YwNzFhKSwgQyg5OTRjNzAwM2I3M2IyYjM0KSwgQyhlYTE2ZTg1OTc4Njk0ZTUpLAorICAgICBD
KDMzNmMxYjU5YTFmYzE5ZjYpLCBDKGMxNzNhY2FlY2M0NzEzMDUpLCBDKGRiMTI2N2QyNGYzZjNm
MzYpLAorICAgICBDKGU5YTVlZTk4NjI3YTZlNzgpLCBDKDMzNmMxYjU5YTFmYzE5ZjYpLCBDKGMx
NzNhY2FlY2M0NzEzMDUpLAorICAgICBDKGRiMTI2N2QyNGYzZjNmMzYpLCBDKGU5YTVlZTk4NjI3
YTZlNzgpLCBDKDcxOGYzMzQyMDQzMDVhZTUpLAorICAgICBDKGUzYjUzYzE0OGY5OGQyMmMpLCBD
KGExODQwMTJkZjg0ODkyNiksIEMoNmU5NjM4NjEyN2Q1MTE4MyksIEMoNGIzYTFkNzYpfSwKKyAg
ICB7Qyg3ZmM5ODAwNmUyNWNhYzkpLCBDKDc3ZmVlMDQ4NGNkYTg2YTcpLCBDKDM3NmVjM2Q0NDcw
NjA0NTYpLAorICAgICBDKDg0MDY0YTZkY2Y5MTYzNDApLCBDKGZiZjU1YTI2NzkwZTBlYmIpLCBD
KDJlN2Y4NDE1MWMzMWE1YzIpLAorICAgICBDKDlmN2Y2ZDc2Yjk1MGY5YmYpLCBDKDg0MDY0YTZk
Y2Y5MTYzNDApLCBDKGZiZjU1YTI2NzkwZTBlYmIpLAorICAgICBDKDJlN2Y4NDE1MWMzMWE1YzIp
LCBDKDlmN2Y2ZDc2Yjk1MGY5YmYpLCBDKDEyNWUwOTRmYmVlMmIxNDYpLAorICAgICBDKDU3MDZh
YTcyYjJlZWY3YzIpLCBDKDFjNGEyZGFhOTA1ZWU2NmUpLCBDKDgzZDQ4MDI5YjU0NTE2OTQpLAor
ICAgICBDKGE4YmI2ZDgwKX0sCisgICAge0MoYmQ3ODFjNDQ1NDEwM2Y2KSwgQyg2MTIxOTczMjJm
NDljOTMxKSwgQyhiOWNmMTdmZDdlNTQ2MmQ1KSwKKyAgICAgQyhlMzhlNTI2Y2QzMzI0MzY0KSwg
Qyg4NWYyYjYzYTViNWU4NDBhKSwgQyg0ODVkN2NlZjVhYWFkZDg3KSwKKyAgICAgQyhkMmI4Mzdh
NDYyZjZkYjZkKSwgQyhlMzhlNTI2Y2QzMzI0MzY0KSwgQyg4NWYyYjYzYTViNWU4NDBhKSwKKyAg
ICAgQyg0ODVkN2NlZjVhYWFkZDg3KSwgQyhkMmI4MzdhNDYyZjZkYjZkKSwgQygzZTQxY2VmMDMx
NTIwZDlhKSwKKyAgICAgQyg4MmRmNzM5MDJkN2Y2N2UpLCBDKDNiYTZmZDU0YzE1MjU3Y2IpLCBD
KDIyZjkxZjA3OWJlNDJkNDApLCBDKDFmOWZhNjA3KX0sCisgICAge0MoZGE2MGU2YjE0NDc5Zjlk
ZiksIEMoM2JkY2NmNjllY2UxNjc5MiksIEMoMThlYmY0NWM0ZmVjZmRjOSksCisgICAgIEMoMTY4
MThlZTlkMzhjNjY2NCksIEMoNTUxOWZhOWExZTM1YTMyOSksIEMoY2JkMDAwMWU0YjA4ZWQ4KSwK
KyAgICAgQyg0MWE5NjVlMzdhMGM3MzFiKSwgQygxNjgxOGVlOWQzOGM2NjY0KSwgQyg1NTE5ZmE5
YTFlMzVhMzI5KSwKKyAgICAgQyhjYmQwMDAxZTRiMDhlZDgpLCBDKDQxYTk2NWUzN2EwYzczMWIp
LCBDKDY2ZTdiNWRjY2ExY2EyOGYpLAorICAgICBDKDk2M2IyZDk5MzYxNDM0N2QpLCBDKDliNmZj
NmY0MWQ0MTExMDYpLCBDKGFhYWVjYWNjZjc4NDhjMGMpLAorICAgICBDKDhkMGU0ZWQyKX0sCisg
ICAge0MoNGNhNTZhMzQ4YjZjNGQzKSwgQyg2MDYxODUzN2MzODcyNTE0KSwgQygyZmJiOWYwZTY1
ODcxYjA5KSwKKyAgICAgQygzMDI3ODAxNjgzMGRkZDQzKSwgQyhmMDQ2NjQ2ZDkwMTJlMDc0KSwg
QyhjNjJhNTgwNGY2ZTdjOWRhKSwKKyAgICAgQyg5OGQ1MWY1ODMwZTJiYzFlKSwgQygzMDI3ODAx
NjgzMGRkZDQzKSwgQyhmMDQ2NjQ2ZDkwMTJlMDc0KSwKKyAgICAgQyhjNjJhNTgwNGY2ZTdjOWRh
KSwgQyg5OGQ1MWY1ODMwZTJiYzFlKSwgQyg3YjJjYmU1ZDM3ZTNmMjllKSwKKyAgICAgQyg3Yjhj
M2VkNTBiZGE0YWEwKSwgQygzZWE2MGNjMjQ2MzllMDM4KSwgQyhmNzcwNmRlOWZiMGI1ODAxKSwK
KyAgICAgQygxYmYzMTM0Nyl9LAorICAgIHtDKGViZDIyZDRiNzA5NDY0MDEpLCBDKDY4NjM2MDJi
ZjcxMzkwMTcpLCBDKGMwYjFhYzRlMTFiMDA2NjYpLAorICAgICBDKDdkMjc4MmI4MmJkNDk0YjYp
LCBDKDk3MTU5YmExYzI2YjMwNGIpLCBDKDQyYjNiMGZkNDMxYjJhYzIpLAorICAgICBDKGZhYTgx
ZjgyNjkxYzgzMGMpLCBDKDdkMjc4MmI4MmJkNDk0YjYpLCBDKDk3MTU5YmExYzI2YjMwNGIpLAor
ICAgICBDKDQyYjNiMGZkNDMxYjJhYzIpLCBDKGZhYTgxZjgyNjkxYzgzMGMpLCBDKDdjYzY0NDky
MzRjN2UxODUpLAorICAgICBDKGFlYWE2ZmE2NDNjYTg2YTUpLCBDKDE0MTJkYjFjMGYyZTAxMzMp
LCBDKDRkZjJmZTNlNDA3MjkzNGYpLAorICAgICBDKDFhZTNmYzViKX0sCisgICAge0MoM2NjNDY5
M2Q2Y2JjYjBjKSwgQyg1MDE2ODllYTFjNzBmZmEpLCBDKDEwYTQzNTNlOWM4OWUzNjQpLAorICAg
ICBDKDU4YzhhYmE3NDc1ZTJkOTUpLCBDKDNlMmYyOTE2OThjOTQyN2EpLCBDKGU4NzEwZDE5Yzlk
ZTllNDEpLAorICAgICBDKDY1ZGRhMjJlYjA0Y2Y5NTMpLCBDKDU4YzhhYmE3NDc1ZTJkOTUpLCBD
KDNlMmYyOTE2OThjOTQyN2EpLAorICAgICBDKGU4NzEwZDE5YzlkZTllNDEpLCBDKDY1ZGRhMjJl
YjA0Y2Y5NTMpLCBDKGQ3NzI5YzQ4YzI1MGNmZmEpLAorICAgICBDKGVmNzYxNjJiMmRkZmJhNGIp
LCBDKDUyMzcxZTE3ZjRkNTFmNmQpLCBDKGRkZDAwMjExMmZmMGM4MzMpLAorICAgICBDKDQ1OWMz
OTMwKX0sCisgICAge0MoMzg5MDhlNDNmN2JhNWVmMCksIEMoMWFiMDM1ZDRlNzc4MWU3NiksIEMo
NDFkMTMzZThjMGE2OGZmNyksCisgICAgIEMoZDEwOTA4OTNhZmFhYjhiYyksIEMoOTZjNGZlNjky
Mjc3MjgwNyksIEMoNDUyMjQyNmMyYjQyMDVlYiksCisgICAgIEMoZWZhZDk5YTEyNjJlN2UwZCks
IEMoZDEwOTA4OTNhZmFhYjhiYyksIEMoOTZjNGZlNjkyMjc3MjgwNyksCisgICAgIEMoNDUyMjQy
NmMyYjQyMDVlYiksIEMoZWZhZDk5YTEyNjJlN2UwZCksIEMoYzc2OTYwMjlhYmRiNDY1ZSksCisg
ICAgIEMoNGUxOGVhZjAzZDUxNzY1MSksIEMoZDAwNmJjZWQ1NGM4NmFjOCksIEMoNDMzMDMyNmQx
MDIxODYwYyksCisgICAgIEMoZTAwYzQxODQpfSwKKyAgICB7QygzNDk4M2NjYzZhYTQwMjA1KSwg
QygyMTgwMmNhZDM0ZTcyYmM0KSwgQygxOTQzZThmYjNjMTdiYjgpLAorICAgICBDKGZjOTQ3MTY3
ZjY5YzBkYTUpLCBDKGFlNzljZmRiOTFiNmY2YzEpLCBDKDdiMjUxZDA0YzI2Y2JkYTMpLAorICAg
ICBDKDEyOGEzM2E3OTA2MGQyNWUpLCBDKGZjOTQ3MTY3ZjY5YzBkYTUpLCBDKGFlNzljZmRiOTFi
NmY2YzEpLAorICAgICBDKDdiMjUxZDA0YzI2Y2JkYTMpLCBDKDEyOGEzM2E3OTA2MGQyNWUpLCBD
KDFlY2E4NDJkYmZlMDE4ZGQpLAorICAgICBDKDUwYTRjZDJlZTBiYTljNjMpLCBDKGMyZjVjOTdk
ODM5OTY4MmYpLCBDKDNmOTI5ZmM3Y2JlOGVjYmIpLAorICAgICBDKGZmYzdhNzgxKX0sCisgICAg
e0MoODYyMTVjNDVkY2FjOTkwNSksIEMoZWE1NDZhZmU4NTFjYWU0YiksIEMoZDg1YjY0NTdlNDg5
ZTM3NCksCisgICAgIEMoYjc2MDljOGU3MDM4NmQ2NiksIEMoMzZlNmNjYzI3OGQxNjM2ZCksIEMo
MmY4NzMzMDdjMDhlNmExYyksCisgICAgIEMoMTBmMjUyYTc1ODUwNTI4OSksIEMoYjc2MDljOGU3
MDM4NmQ2NiksIEMoMzZlNmNjYzI3OGQxNjM2ZCksCisgICAgIEMoMmY4NzMzMDdjMDhlNmExYyks
IEMoMTBmMjUyYTc1ODUwNTI4OSksIEMoYzg5Nzc2NDZlODFhYjRiNiksCisgICAgIEMoODAxN2I3
NDVjZDgwMjEzYiksIEMoOTYwNjg3ZGIzNTliZWEwKSwgQyhlZjRhNDcwNjYwNzk5NDg4KSwgQyg2
YTEyNTQ4MCl9LAorICAgIHtDKDQyMGZjMjU1YzM4ZGIxNzUpLCBDKGQ1MDNjZDBmM2MxMjA4ZDEp
LCBDKGQ0Njg0ZTc0YzgyNWEwYmMpLAorICAgICBDKDRjMTA1Mzc0NDMxNTJmM2QpLCBDKDcyMDQ1
MWQzYzg5NWUyNWQpLCBDKGFmZjYwYzRkMTFmNTEzZmQpLAorICAgICBDKDg4MWU4ZDZkMmQ1ZmI5
NTMpLCBDKDRjMTA1Mzc0NDMxNTJmM2QpLCBDKDcyMDQ1MWQzYzg5NWUyNWQpLAorICAgICBDKGFm
ZjYwYzRkMTFmNTEzZmQpLCBDKDg4MWU4ZDZkMmQ1ZmI5NTMpLCBDKDlkZWMwMzRhMDQzZjFmNTUp
LAorICAgICBDKGUyN2EwYzIyZTdiZmIzOWQpLCBDKDIyMjBiOTU5MTI4MzI0KSwgQyg1MzI0MDI3
MjE1MmRiZDhiKSwgQyg4OGExNTEyYil9LAorICAgIHtDKDFkN2EzMWY1YmM4ZmUyZjkpLCBDKDQ3
NjM5OTEwOTJkY2Y4MzYpLCBDKGVkNjk1ZjU1Yjk3NDE2ZjQpLAorICAgICBDKGYyNjVlZGIwYzFj
NDExZDcpLCBDKDMwZTFlOWVjNTI2MmI3ZTYpLCBDKGMyYzNiYTA2MWNlNzk1N2EpLAorICAgICBD
KGQ5NzVmOTNiODlhMTY0MDkpLCBDKGYyNjVlZGIwYzFjNDExZDcpLCBDKDMwZTFlOWVjNTI2MmI3
ZTYpLAorICAgICBDKGMyYzNiYTA2MWNlNzk1N2EpLCBDKGQ5NzVmOTNiODlhMTY0MDkpLCBDKGU5
ZDcwMzEyM2Y0MzQ1MGEpLAorICAgICBDKDQxMzgzZmVkZmVkNjdjODIpLCBDKDZlOWY0M2VjYmJi
ZDYwMDQpLCBDKGM3Y2NkMjNhMjRlNzdiOCksIEMoNTQ5YmJiZTUpfSwKKyAgICB7Qyg5NDEyOWE4
NGMzNzZhMjZlKSwgQyhjMjQ1ZTg1OWRjMjMxOTMzKSwgQygxYjhmNzRmZWNmOTE3NDUzKSwKKyAg
ICAgQyhlOTM2OWQyZTkwMDdlNzRiKSwgQyhiMTM3NTkxNWQxMTM2MDUyKSwgQyg5MjZjMjAyMWZl
MWQyMzUxKSwKKyAgICAgQygxZDk0M2FkZGFhYTJlN2U2KSwgQyhlOTM2OWQyZTkwMDdlNzRiKSwg
QyhiMTM3NTkxNWQxMTM2MDUyKSwKKyAgICAgQyg5MjZjMjAyMWZlMWQyMzUxKSwgQygxZDk0M2Fk
ZGFhYTJlN2U2KSwgQyhmNWY1MTU4NjljMjQ2NzM4KSwKKyAgICAgQyg3ZTMwOWNkMGUxYzBmMmEw
KSwgQygxNTNjM2MzNmNmNTIzZTNiKSwgQyg0OTMxYzY2ODcyZWE2NzU4KSwKKyAgICAgQyhjMTMz
ZDM4Yyl9LAorICAgIHtDKDFkM2E5ODA5ZGFiMDVjOGQpLCBDKGFkZGRlYjRmNzFjOTNlOCksIEMo
ZWYzNDJlYjM2NjMxZWRiKSwKKyAgICAgQygzMDFkN2E2MWM0YjNkYmNhKSwgQyg4NjEzMzZjM2Yw
NTUyZDYxKSwgQygxMmM2ZGI5NDc0NzEzMDBmKSwKKyAgICAgQyhhNjc5ZWYwZWQ3NjFkZWI5KSwg
QygzMDFkN2E2MWM0YjNkYmNhKSwgQyg4NjEzMzZjM2YwNTUyZDYxKSwKKyAgICAgQygxMmM2ZGI5
NDc0NzEzMDBmKSwgQyhhNjc5ZWYwZWQ3NjFkZWI5KSwgQyg1ZjcxM2I3MjBlZmNkMTQ3KSwKKyAg
ICAgQygzN2FjMzMwYTMzM2FhNmIpLCBDKDMzMDlkYzllYzE2MTZlZWYpLCBDKDUyMzAxZDdhOTA4
MDI2YjUpLCBDKGZjYWNlMzQ4KX0sCisgICAge0MoOTBmYTNjY2JkNjA4NDhkYSksIEMoZGZhNmUw
NTk1YjU2OWUxMSksIEMoZTU4NWQwNjdhMWY1MTM1ZCksCisgICAgIEMoNmNlZjg2NmVjMjk1YWJl
YSksIEMoYzQ4NmMwZDkyMTRiZWIyZCksIEMoZDZlNDkwOTQ0ZDVmZTEwMCksCisgICAgIEMoNTlk
ZjMxNzVkNzJjOWYzOCksIEMoNmNlZjg2NmVjMjk1YWJlYSksIEMoYzQ4NmMwZDkyMTRiZWIyZCks
CisgICAgIEMoZDZlNDkwOTQ0ZDVmZTEwMCksIEMoNTlkZjMxNzVkNzJjOWYzOCksIEMoM2YyM2Fl
YjRjMDRkMTQ0MyksCisgICAgIEMoOWJmMDUxNWNkOGQyNDc3MCksIEMoOTU4NTU0ZjYwY2NhYWRl
MiksIEMoNTE4Mjg2M2M5MDEzMmZlOCksCisgICAgIEMoZWQ3YjZmOWEpfSwKKyAgICB7QygyZGJi
NGZjNzFiNTU0NTE0KSwgQyg5NjUwZTA0Yjg2YmUwZjgyKSwgQyg2MGYyMzA0ZmJhOTI3NGQzKSwK
KyAgICAgQyhmY2ZiOTQ0M2U5OTdjYWIpLCBDKGYxMzMxMGQ5NmRlYzI3NzIpLCBDKDcwOWNhZDIw
NDUyNTFhZjIpLAorICAgICBDKGFmZDBkMzBjYzYzNzZkYWQpLCBDKGZjZmI5NDQzZTk5N2NhYiks
IEMoZjEzMzEwZDk2ZGVjMjc3MiksCisgICAgIEMoNzA5Y2FkMjA0NTI1MWFmMiksIEMoYWZkMGQz
MGNjNjM3NmRhZCksIEMoNTlkNGJlZDMwZDU1MGQwZCksCisgICAgIEMoNTgwMDZkNGUyMmQ4YWFk
MSksIEMoZWVlMTJkMjM2MmQxZjEzYiksIEMoMzVjZjFkN2ZhYWYxZDIyOCksCisgICAgIEMoNmQ5
MDdkZGEpfSwKKyAgICB7QyhiOThiZjQyNzRkMTgzNzRhKSwgQygxYjY2OWZkNGM3ZjlhMTlhKSwg
QyhiMWY1OTcyYjg4YmEyYjdhKSwKKyAgICAgQyg3MzExOWM5OWU2ZDUwOGJlKSwgQyg1ZDQwMzZh
MTg3NzM1Mzg1KSwgQyg4ZmE2NmUxOTJmZDgzODMxKSwKKyAgICAgQygyYWJmNjRiNmI1OTJlZDU3
KSwgQyg3MzExOWM5OWU2ZDUwOGJlKSwgQyg1ZDQwMzZhMTg3NzM1Mzg1KSwKKyAgICAgQyg4ZmE2
NmUxOTJmZDgzODMxKSwgQygyYWJmNjRiNmI1OTJlZDU3KSwgQyhkNDUwMWY5NWRkODRiMDhjKSwK
KyAgICAgQyhiZjE1NTI0MzljOGJlYTAyKSwgQyg0ZjU2ZmU3NTNiYTdlMGJhKSwgQyg0Y2E4ZDM1
Y2MwNThjZmNkKSwKKyAgICAgQyg3YTRkNDhkNSl9LAorICAgIHtDKGQ2NzgxZDBiNWUxOGViNjgp
LCBDKGI5OTI5MTNjYWUwOWI1MzMpLCBDKDU4ZjYwMjFjYWFlZTNhNDApLAorICAgICBDKGFhZmNi
Nzc0OTdiNWEyMGIpLCBDKDQxMTgxOWU1ZTc5Yjc3YTMpLCBDKGJkNzc5NTc5YzUxYzc3Y2UpLAor
ICAgICBDKDU4ZDExZjVkY2Y1ZDA3NWQpLCBDKGFhZmNiNzc0OTdiNWEyMGIpLCBDKDQxMTgxOWU1
ZTc5Yjc3YTMpLAorICAgICBDKGJkNzc5NTc5YzUxYzc3Y2UpLCBDKDU4ZDExZjVkY2Y1ZDA3NWQp
LCBDKDllYWU3NmNkZTFjYjQyMzMpLAorICAgICBDKDMyZmUyNWE5YmY2NTc5NzApLCBDKDFjMGM4
MDc5NDhlZGIwNmEpLCBDKGI4ZjI5YTNkZmFlZTI1NGQpLAorICAgICBDKGU2ODZmM2RiKX0sCisg
ICAge0MoMjI2NjUxY2YxOGY0ODg0YyksIEMoNTk1MDUyYTg3NGYwZjUxYyksIEMoYzliNzUxNjJi
MjNiYWI0MiksCisgICAgIEMoM2Y0NGY4NzNiZTQ4MTJlYyksIEMoNDI3NjYyYzFkYmZhYTdiMiks
IEMoYTIwN2ZmOTYzOGZiNjU1OCksCisgICAgIEMoYTczOGQ5MTllNDVmNTUwZiksIEMoM2Y0NGY4
NzNiZTQ4MTJlYyksIEMoNDI3NjYyYzFkYmZhYTdiMiksCisgICAgIEMoYTIwN2ZmOTYzOGZiNjU1
OCksIEMoYTczOGQ5MTllNDVmNTUwZiksIEMoY2IxODZlYTA1NzE3ZTdkNiksCisgICAgIEMoMWNh
N2Q2OGE1ODcxZmRjMSksIEMoNWQ0YzExOWVhOGVmMzc1MCksIEMoNzJiNmExMGZhMmZmOTQwNiks
IEMoY2NlN2M1NSl9LAorICAgIHtDKGE3MzRmYjA0N2QzMTYyZDYpLCBDKGU1MjMxNzBkMjQwYmEz
YTUpLCBDKDEyNWE2OTcyODA5NzMwZTgpLAorICAgICBDKGQzOTZhMjk3Nzk5YzI0YTEpLCBDKDhm
ZWU5OTJlMzA2OWJhZDUpLCBDKDJlM2EwMWIwNjk3Y2NmNTcpLAorICAgICBDKGVlOWM3MzkwYmQ5
MDFjZmEpLCBDKGQzOTZhMjk3Nzk5YzI0YTEpLCBDKDhmZWU5OTJlMzA2OWJhZDUpLAorICAgICBD
KDJlM2EwMWIwNjk3Y2NmNTcpLCBDKGVlOWM3MzkwYmQ5MDFjZmEpLCBDKDU2ZjJkOWRhMGFmMjhh
ZjIpLAorICAgICBDKDNmZGQzN2IyZmU4NDM3Y2IpLCBDKDNkMTNlZWViNjBkNmFlYzApLCBDKDI0
MzJhZTYyZTgwMGE1Y2UpLCBDKGY1OGI5NmIpfSwKKyAgICB7QyhjNmRmNjM2NGEyNGY3NWEzKSwg
QyhjMjk0ZTJjODRjNGY1ZGY4KSwgQyhhODhkZjY1YzZhODkzMTNiKSwKKyAgICAgQyg4OTVmZTg0
NDMxODNkYTc0KSwgQyhjN2YyZjZmODk1YTY3MzM0KSwgQyhhMGQ2YjZhNTA2NjkxZDMxKSwKKyAg
ICAgQygyNGY1MTcxMmI0NTlhOWYwKSwgQyg4OTVmZTg0NDMxODNkYTc0KSwgQyhjN2YyZjZmODk1
YTY3MzM0KSwKKyAgICAgQyhhMGQ2YjZhNTA2NjkxZDMxKSwgQygyNGY1MTcxMmI0NTlhOWYwKSwg
QygxNzNhNjk5NDgxYjllMDg4KSwKKyAgICAgQygxZGVlOWI3N2JjYmY0NWQzKSwgQygzMmI5OGE2
NDZhODY2N2QwKSwgQygzYWRjZDRlZTI4ZjQyYTBlKSwKKyAgICAgQygxYmJmNmY2MCl9LAorICAg
IHtDKGQ4ZDEzNjRjMWZiY2QxMCksIEMoMmQ3Y2M3ZjU0ODMyZGVhYSksIEMoNGUyMmM4NzZhN2M1
NzYyNSksCisgICAgIEMoYTNkNWQxMTM3ZDMwYzRiZCksIEMoMWU3ZDcwNmE0OWJkZmI5ZSksIEMo
YzYzMjgyYjIwYWQ4NmRiMiksCisgICAgIEMoYWVjOTdmYTA3OTE2YmZkNiksIEMoYTNkNWQxMTM3
ZDMwYzRiZCksIEMoMWU3ZDcwNmE0OWJkZmI5ZSksCisgICAgIEMoYzYzMjgyYjIwYWQ4NmRiMiks
IEMoYWVjOTdmYTA3OTE2YmZkNiksIEMoN2M5YmEzZTUyZDQ0ZjczZSksCisgICAgIEMoYWY2MmZk
MjQ1ODExMTg1ZCksIEMoOGE5ZDJkYWNkODczNzY1MiksIEMoYmQyY2NlMjc3ZDVmYmVjMCksCisg
ICAgIEMoY2U1ZTBjYzIpfSwKKyAgICB7QyhhYWUwNmY5MTQ2ZGI4ODVmKSwgQygzNTk4NzM2NDQx
ZTI4MGQ5KSwgQyhmYmEzMzliMTE3MDgzZTU1KSwKKyAgICAgQyhiMjJiZjA4ZDlmOGFlY2Y3KSwg
QyhjMTgyNzMwZGUzMzdiOTIyKSwgQygyYjlhZGM4N2EwNDUwYTQ2KSwKKyAgICAgQygxOTJjMjlh
OWNmYzAwYWFkKSwgQyhiMjJiZjA4ZDlmOGFlY2Y3KSwgQyhjMTgyNzMwZGUzMzdiOTIyKSwKKyAg
ICAgQygyYjlhZGM4N2EwNDUwYTQ2KSwgQygxOTJjMjlhOWNmYzAwYWFkKSwgQyg5ZmQ3MzNmMWQ4
NGE1OWQ5KSwKKyAgICAgQyhkODZiZDVjOTgzOWFjZTE1KSwgQyhhZjIwYjU3MzAzMTcyODc2KSwg
Qyg5ZjYzY2I3MTYxYjUzNjRjKSwKKyAgICAgQyg1ODRjZmQ2Zil9LAorICAgIHtDKDg5NTVlZjA3
NjMxZTNiY2MpLCBDKDdkNzA5NjVlYTM5MjZmODMpLCBDKDM5YWVkNDEzNGY4YjJkYjYpLAorICAg
ICBDKDg4MmVmYzI1NjE3MTVhOWMpLCBDKGVmODEzMmExOGE1NDAyMjEpLCBDKGIyMGEzYzg3YThj
MjU3YzEpLAorICAgICBDKGY1NDFiODYyOGZhZDZjMjMpLCBDKDg4MmVmYzI1NjE3MTVhOWMpLCBD
KGVmODEzMmExOGE1NDAyMjEpLAorICAgICBDKGIyMGEzYzg3YThjMjU3YzEpLCBDKGY1NDFiODYy
OGZhZDZjMjMpLCBDKDk1NTJhZWQ1N2E2ZTA0NjcpLAorICAgICBDKDRkOWZkZDU2ODY3NjExYTcp
LCBDKGMzMzAyNzliZjIzYjllYWIpLCBDKDQ0ZGJiYWVhMmZjYjhlYmEpLAorICAgICBDKDhmOWJi
YzMzKX0sCisgICAge0MoYWQ2MTFjNjA5Y2ZiZTQxMiksIEMoZDNjMDBiMThiZjI1Mzg3NyksIEMo
OTBiMjE3MmUxZjNkMGJmZCksCisgICAgIEMoMzcxYTk4YjJjYjA4NDg4MyksIEMoMzNhMjg4NmVl
OWYwMDY2MyksIEMoYmU5NTY4ODE4ZWQ2ZTZiZCksCisgICAgIEMoZjI0NGEwZmEyNjczNDY5YSks
IEMoMzcxYTk4YjJjYjA4NDg4MyksIEMoMzNhMjg4NmVlOWYwMDY2MyksCisgICAgIEMoYmU5NTY4
ODE4ZWQ2ZTZiZCksIEMoZjI0NGEwZmEyNjczNDY5YSksIEMoYjQ0NzA1MGJkM2U1NTllOSksCisg
ICAgIEMoZDNiNjk1ZGFlN2ExMzM4MyksIEMoZGVkMGJiNjViZTQ3MTE4OCksIEMoY2EzYzdhMmI3
ODkyMmNhZSksCisgICAgIEMoZDc2NDBkOTUpfSwKKyAgICB7QyhkNTMzOWFkYzI5NWQ1ZDY5KSwg
QyhiNjMzY2MxZGNiOGI1ODZhKSwgQyhlZTg0MTg0Y2Y1YjFhZWFmKSwKKyAgICAgQyg4OWYzYWFi
OTlhZmJkNjM2KSwgQyhmNDIwZTAwNGY4MTQ4YjlhKSwgQyg2ODE4MDczZmFhNzk3YzdjKSwKKyAg
ICAgQyhkZDNiNGUyMWNiYmY0MmNhKSwgQyg4OWYzYWFiOTlhZmJkNjM2KSwgQyhmNDIwZTAwNGY4
MTQ4YjlhKSwKKyAgICAgQyg2ODE4MDczZmFhNzk3YzdjKSwgQyhkZDNiNGUyMWNiYmY0MmNhKSwg
Qyg2YTJiN2RiMjYxMTY0ODQ0KSwKKyAgICAgQyhjYmVhZDYzZDE4OTU4NTJhKSwgQyg5M2QzN2Ux
ZWFlMDVlMmY5KSwgQyg1ZDA2ZGIyNzAzZmJjM2FlKSwgQygzZDEyYTJiKX0sCisgICAge0MoNDBk
MGFlZmY1MjEzNzVhOCksIEMoNzdiYTFhZDdlY2ViZDUwNiksIEMoNTQ3YzZmMWE3ZDlkZjQyNyks
CisgICAgIEMoMjFjMmJlMDk4MzI3ZjQ5YiksIEMoN2UwMzUwNjVhYzdiYmVmNSksIEMoNmQ3MzQ4
ZTYzMDIzZmIzNSksCisgICAgIEMoOWQ0MjdkYzFiNjdjMzgzMCksIEMoMjFjMmJlMDk4MzI3ZjQ5
YiksIEMoN2UwMzUwNjVhYzdiYmVmNSksCisgICAgIEMoNmQ3MzQ4ZTYzMDIzZmIzNSksIEMoOWQ0
MjdkYzFiNjdjMzgzMCksIEMoNGUzZDAxOGE0Mzg1ODM0MSksCisgICAgIEMoY2Y5MjRiYjQ0ZDZi
NDNjNSksIEMoNDYxOGI2YTI2ZTM0NDZhZSksIEMoNTRkMzAxM2ZhYzNlZDQ2OSksCisgICAgIEMo
YWFlYWZlZDApfSwKKyAgICB7Qyg4YjJkNTRhZTFhM2RmNzY5KSwgQygxMWU3YWRhZWUzMjE2Njc5
KSwgQygzNDgzNzgxZWZjNTYzZTAzKSwKKyAgICAgQyg5ZDA5N2RkMzE1MmFiMTA3KSwgQyg1MWUy
MWQyNDEyNmU4NTYzKSwgQyhjYmE1NmNhYzg4NGExMzU0KSwKKyAgICAgQygzOWFiYjFiNTk1ZjBh
OTc3KSwgQyg5ZDA5N2RkMzE1MmFiMTA3KSwgQyg1MWUyMWQyNDEyNmU4NTYzKSwKKyAgICAgQyhj
YmE1NmNhYzg4NGExMzU0KSwgQygzOWFiYjFiNTk1ZjBhOTc3KSwgQyg4MWU2ZGQxYzExMDk4NDhm
KSwKKyAgICAgQygxNjQ0YjIwOTgyNmQ3YjE1KSwgQyg2YWM2N2U0ZTRiNDgxMmYwKSwgQyhiM2E5
ZjU2MjJjOTM1YmY3KSwKKyAgICAgQyg5NWI5YjgxNCl9LAorICAgIHtDKDk5YzE3NTgxOWI0ZWFl
MjgpLCBDKDkzMmU4ZmY5ZjdhNDAwNDMpLCBDKGVjNzhkY2FiMDdjYTlmN2MpLAorICAgICBDKGMx
YTc4YjgyYmE4MTViNzQpLCBDKDQ1OGNiZGZjODJlYjMyMmEpLCBDKDE3ZjRhMTkyMzc2ZWQ4ZDcp
LAorICAgICBDKDZmOWU5Mjk2OGJjOGNjZWYpLCBDKGMxYTc4YjgyYmE4MTViNzQpLCBDKDQ1OGNi
ZGZjODJlYjMyMmEpLAorICAgICBDKDE3ZjRhMTkyMzc2ZWQ4ZDcpLCBDKDZmOWU5Mjk2OGJjOGNj
ZWYpLCBDKDkzZTA5OGMzMzNiMzk5MDUpLAorICAgICBDKGQ1OWIxY2FjZTQ0YjdmZGMpLCBDKGY3
YTY0ZWQ3OGM2NGM3YzUpLCBDKDdjNmVjYTVkZDg3ZWMxY2UpLAorICAgICBDKDQ1ZmJlNjZlKX0s
CisgICAge0MoMmE0MTgzMzU3NzliODJmYyksIEMoYWYwMjk1OTg3ODQ5YTc2YiksIEMoYzEyYmM1
ZmYwMjEzZjQ2ZSksCisgICAgIEMoNWFlZWFkOGQ2Y2IyNWJiOSksIEMoNzM5MzE1Zjc3NDNlYzNm
ZiksIEMoOWFiNDhkMjcxMTFkMmRjYyksCisgICAgIEMoNWI4N2JkMzVhOTc1OTI5YiksIEMoNWFl
ZWFkOGQ2Y2IyNWJiOSksIEMoNzM5MzE1Zjc3NDNlYzNmZiksCisgICAgIEMoOWFiNDhkMjcxMTFk
MmRjYyksIEMoNWI4N2JkMzVhOTc1OTI5YiksIEMoYzNkZDhkNmQ5NWE0NmJiMyksCisgICAgIEMo
N2JmOTA5MzIxNWE0ZjQ4MyksIEMoY2I1NTdkNmVkODQyODViZCksIEMoZGFmNTg0MjJmMjYxZmRi
NSksCisgICAgIEMoYjRiYWE3YTgpfSwKKyAgICB7QygzYjFmYzZhM2QyNzllNjdkKSwgQyg3MGVh
MWU0OWMyMjYzOTYpLCBDKDI1NTA1YWRjZjEwNDY5N2MpLAorICAgICBDKGJhMWZmYmEyOWYwMzY3
YWEpLCBDKGEyMGJlYzFkZDE1YThiNmMpLCBDKGU5YmY2MWQyZGFiMGY3NzQpLAorICAgICBDKGY0
ZjM1YmY1ODcwYTA0OWMpLCBDKGJhMWZmYmEyOWYwMzY3YWEpLCBDKGEyMGJlYzFkZDE1YThiNmMp
LAorICAgICBDKGU5YmY2MWQyZGFiMGY3NzQpLCBDKGY0ZjM1YmY1ODcwYTA0OWMpLCBDKDI2Nzg3
ZWZhNWI5MjM4NSksCisgICAgIEMoM2Q5NTMzNTkwY2UzMGI1OSksIEMoYTRkYTNlNDA1MzBhMDFk
NCksIEMoNjM5NWRlYWVmYjcwMDY3YyksCisgICAgIEMoODNlOTYyZmUpfSwKKyAgICB7QyhkOTdl
YWNkZjEwZjFjM2M5KSwgQyhiNTRmNDY1NDA0M2EzNmUwKSwgQyhiMTI4ZjZlYjA5ZDEyMzQpLAor
ICAgICBDKGQ4YWQ3ZWM4NGE5YzlhYTIpLCBDKGUyNTZjZmZlZDExZjY5ZTYpLCBDKDJjZjY1ZTQ5
NThhZDViZGEpLAorICAgICBDKGNmYmY5YjAzMjQ1OTg5YTcpLCBDKGQ4YWQ3ZWM4NGE5YzlhYTIp
LCBDKGUyNTZjZmZlZDExZjY5ZTYpLAorICAgICBDKDJjZjY1ZTQ5NThhZDViZGEpLCBDKGNmYmY5
YjAzMjQ1OTg5YTcpLCBDKDlmYTUxZTY2ODZjZjQ0NDQpLAorICAgICBDKDk0MjVjMTE3YTM0NjA5
ZDUpLCBDKGIyNWY3ZTJjNmYzMGU5NiksIEMoZWE1NDc3YzNmMmI1YWZkMSksIEMoYWFjMzUzMWMp
fSwKKyAgICB7QygyOTNhNWMxYzRlMjAzY2Q0KSwgQyg2YjMzMjlmMWMxMzBjZWZlKSwgQyhmMmUz
MmY4ZWM3NmFhYzkxKSwKKyAgICAgQygzNjFlMGE2MmM4MTg3YmZmKSwgQyg2MDg5OTcxYmI4NGQ3
MTMzKSwgQyg5M2RmNzc0MTU4OGRkNTBiKSwKKyAgICAgQyhjMmE5YjZhYmNkMWQ4MGIxKSwgQygz
NjFlMGE2MmM4MTg3YmZmKSwgQyg2MDg5OTcxYmI4NGQ3MTMzKSwKKyAgICAgQyg5M2RmNzc0MTU4
OGRkNTBiKSwgQyhjMmE5YjZhYmNkMWQ4MGIxKSwgQyg0ZDJmODY4NjlkNzliYzU5KSwKKyAgICAg
Qyg4NWNkMjRkOGFhNTcwZmYpLCBDKGIwZGNmNmVmMGU5NGJiYjUpLCBDKDIwMzdjNjlhYTdhNzg0
MjEpLCBDKDJiMWRiN2NjKX0sCisgICAge0MoNDI5MGUwMThmZmFlZGRlNyksIEMoYTE0OTQ4NTQ1
NDE4ZWI1ZSksIEMoNzJkODUxYjIwMjI4NDYzNiksCisgICAgIEMoNGVjMDJmM2QyZjJiMjNmMiks
IEMoYWIzNTgwNzA4YWE3YzMzOSksIEMoY2RjZTA2NmZiYWIzZjY1KSwKKyAgICAgQyhkOGVkM2Vj
ZjNjNzY0N2I5KSwgQyg0ZWMwMmYzZDJmMmIyM2YyKSwgQyhhYjM1ODA3MDhhYTdjMzM5KSwKKyAg
ICAgQyhjZGNlMDY2ZmJhYjNmNjUpLCBDKGQ4ZWQzZWNmM2M3NjQ3YjkpLCBDKDZkMjIwNGIzZTMx
ZjM0NGEpLAorICAgICBDKDYxYTRkODdmODBlZTYxZDcpLCBDKDQ0NmM0M2RiZWQ0YjcyOGYpLCBD
KDczMTMwYWM5NGY1ODc0N2UpLAorICAgICBDKGNmMDBjZDMxKX0sCisgICAge0MoZjkxOWE1OWNi
ZGU4YmYyZiksIEMoYTU2ZDA0MjAzYjJkYzVhNSksIEMoMzhiMDY3NTNhYzg3MWU0OCksCisgICAg
IEMoYzJjOWZjNjM3ZGJkZmNmYSksIEMoMjkyYWI4MzA2ZDE0OWQ3NSksIEMoN2Y0MzZiODc0Yjlm
ZmMwNyksCisgICAgIEMoYTViNTZiMDEyOTIxOGI4MCksIEMoYzJjOWZjNjM3ZGJkZmNmYSksIEMo
MjkyYWI4MzA2ZDE0OWQ3NSksCisgICAgIEMoN2Y0MzZiODc0YjlmZmMwNyksIEMoYTViNTZiMDEy
OTIxOGI4MCksIEMoOTE4OGY3YmRjNDdlYzA1MCksCisgICAgIEMoY2ZlOTM0NWQwM2ExNWFkZSks
IEMoNDBiNTIwZmIyNzUwYzQ5ZSksIEMoYzJlODNkMzQzOTY4YWYyZSksCisgICAgIEMoN2QzYzQz
YjgpfSwKKyAgICB7QygxZDcwYTNmNTUyMWQ3ZmE0KSwgQyhmYjk3YjNmZGM1ODkxOTY1KSwgQygy
OTlkNDliYmJlMzUzNWFmKSwKKyAgICAgQyhlMWE4Mjg2YTdkNjc5NDZlKSwgQyg1MmJkOTU2ZjA0
N2IyOTgpLCBDKGNiZDc0MzMyZGQ0MjA0YWMpLAorICAgICBDKDEyYjViZTc3NTI3MjE5NzYpLCBD
KGUxYTgyODZhN2Q2Nzk0NmUpLCBDKDUyYmQ5NTZmMDQ3YjI5OCksCisgICAgIEMoY2JkNzQzMzJk
ZDQyMDRhYyksIEMoMTJiNWJlNzc1MjcyMTk3NiksIEMoMjc4NDI2ZTI3ZjYyMDRiNiksCisgICAg
IEMoOTMyY2E3YTdjZDYxMDE4MSksIEMoNDE2NDczMjFmMGE1OTE0ZCksIEMoNDhmNGFhNjFhMGFl
ODBkYiksCisgICAgIEMoY2JkNWZhYzYpfSwKKyAgICB7Qyg2YWY5OGQ3YjY1NmQwZDdjKSwgQyhk
MmU5OWFlOTZkNmI1YzBjKSwgQyhmNjNiZDE2MDNlZjgwNjI3KSwKKyAgICAgQyhiZGU1MTAzM2Fj
MDQxM2Y4KSwgQyhiYzAyNzJmNjkxYWVjNjI5KSwgQyg2MjA0MzMyNjUxYmViYzQ0KSwKKyAgICAg
QygxY2JmMDBkZTAyNmVhOWJkKSwgQyhiZGU1MTAzM2FjMDQxM2Y4KSwgQyhiYzAyNzJmNjkxYWVj
NjI5KSwKKyAgICAgQyg2MjA0MzMyNjUxYmViYzQ0KSwgQygxY2JmMDBkZTAyNmVhOWJkKSwgQyhi
OWM3ZWQ2YTc1ZjNmZjFlKSwKKyAgICAgQyg3ZTMxMGI3NmE1ODA4ZTRmKSwgQyhhY2JiZDFhYWQ1
NTMxODg1KSwgQyhmYzI0NWYyNDczYWRlYjljKSwKKyAgICAgQyg3NmQwZmVjNCl9LAorICAgIHtD
KDM5NWI3YThhZGI5NmFiNzUpLCBDKDU4MmRmNzE2NWIyMGY0YSksIEMoZTUyYmQzMGU5ZmY2NTdm
OSksCisgICAgIEMoNmM3MTA2NDk5NmNiZWM4YiksIEMoMzUyYzUzNWVkZWVmY2I4OSksIEMoYWM3
ZjBhYmExNWNkNWVjZCksCisgICAgIEMoM2FiYTFjYTgzNTNlNWM2MCksIEMoNmM3MTA2NDk5NmNi
ZWM4YiksIEMoMzUyYzUzNWVkZWVmY2I4OSksCisgICAgIEMoYWM3ZjBhYmExNWNkNWVjZCksIEMo
M2FiYTFjYTgzNTNlNWM2MCksIEMoNWMzMGEyODhhODBjZTY0NiksCisgICAgIEMoYzI5NDA0ODhi
NjYxNzY3NCksIEMoOTI1ZjhjYzY2YjM3MDU3NSksIEMoYWE2NWQxMjgzYjliYjBlZiksCisgICAg
IEMoNDA1ZTM0MDIpfSwKKyAgICB7QygzODIyZGQ4MmM3ZGYwMTJmKSwgQyhiOTAyOWI0MGJkOWYx
MjJiKSwgQyhmZDI1Yjk4ODQ2ODI2NmM0KSwKKyAgICAgQyg0M2U0N2JkNWJhYjFlMGVmKSwgQyg0
YTcxZjM2MzQyMWYyODJmKSwgQyg4ODBiMmYzMmEyYjRlMjg5KSwKKyAgICAgQygxMjk5ZDRlZGE5
ZDNlYWRmKSwgQyg0M2U0N2JkNWJhYjFlMGVmKSwgQyg0YTcxZjM2MzQyMWYyODJmKSwKKyAgICAg
Qyg4ODBiMmYzMmEyYjRlMjg5KSwgQygxMjk5ZDRlZGE5ZDNlYWRmKSwgQyhkNzEzYTQwMjI2ZjU1
NjQpLAorICAgICBDKDRkOGQzNGZlZGM3Njk0MDYpLCBDKGE4NTAwMWIyOWNkOWNhYzMpLCBDKGNh
ZTkyMzUyYTQxZmQyYjApLAorICAgICBDKGM3MzJjNDgxKX0sCisgICAge0MoNzlmN2VmZTRhODBi
OTUxYSksIEMoZGQzYTNmZGRmYzZjOWM0MSksIEMoYWI0YzgxMmY5ZTI3YWE0MCksCisgICAgIEMo
ODMyOTU0ZWM5ZDBkZTMzMyksIEMoOTRjMzkwYWE5YmNiNmI4YSksIEMoZjNiMzJhZmRjMWYwNGY4
MiksCisgICAgIEMoZDIyOWMzYjcyZTRiOWE3NCksIEMoODMyOTU0ZWM5ZDBkZTMzMyksIEMoOTRj
MzkwYWE5YmNiNmI4YSksCisgICAgIEMoZjNiMzJhZmRjMWYwNGY4MiksIEMoZDIyOWMzYjcyZTRi
OWE3NCksIEMoMWQxMTg2MGQ3ZWQ2MjRhNiksCisgICAgIEMoY2FkZWUyMGIzNDQxYjk4NCksIEMo
NzUzMDcwNzliZjMwNmY3YiksIEMoODc5MDJhYTNiOTc1M2JhNCksCisgICAgIEMoYThkMTIzYzkp
fSwKKyAgICB7QyhhZTZlNTlmNWYwNTU5MjFhKSwgQyhlOWQ5YjdiZjY4ZTgyKSwgQyg1Y2U0ZTRh
NWIyNjljYzU5KSwKKyAgICAgQyg0OTYwMTExNzg5NzI3NTY3KSwgQygxNDliOGEzN2M3MTI1YWI2
KSwgQyg3OGM3YTEzYWI5NzQ5MzgyKSwKKyAgICAgQygxYzYxMTMxMjYwY2ExNTFhKSwgQyg0OTYw
MTExNzg5NzI3NTY3KSwgQygxNDliOGEzN2M3MTI1YWI2KSwKKyAgICAgQyg3OGM3YTEzYWI5NzQ5
MzgyKSwgQygxYzYxMTMxMjYwY2ExNTFhKSwgQygxZTkzMjc2YjM1YzMwOWEwKSwKKyAgICAgQygy
NjE4ZjU2MjMwYWNkZTU4KSwgQyhhZjYxMTMwYTE4ZTRmZWJmKSwgQyg3MTQ1ZGViMThlODliZWZl
KSwKKyAgICAgQygxZTgwYWQ3ZCl9LAorICAgIHtDKDg5NTlkYmJmMDczODdkMzYpLCBDKGI0NjU4
YWZjZTQ4ZWEzNWQpLCBDKDhmM2Y4MjQzN2Q4Y2I4ZDYpLAorICAgICBDKDY1NjZkNzQ5NTQ5ODZi
YTUpLCBDKDk5ZDUyMzVjYzgyNTE5YTcpLCBDKDI1N2EyMzgwNWMyZDgyNSksCisgICAgIEMoYWQ3
NWNjYjk2OGU5MzQwMyksIEMoNjU2NmQ3NDk1NDk4NmJhNSksIEMoOTlkNTIzNWNjODI1MTlhNyks
CisgICAgIEMoMjU3YTIzODA1YzJkODI1KSwgQyhhZDc1Y2NiOTY4ZTkzNDAzKSwgQyhiNDViZDRj
Zjc4ZTExZjdmKSwKKyAgICAgQyg4MGM1NTM2YmRjNDg3OTgzKSwgQyhhNGZkNzZlY2JmMDE4Yzhh
KSwgQygzYjlkYWM3OGE3YTcwZDQzKSwKKyAgICAgQyg1MmFlYjg2Myl9LAorICAgIHtDKDQ3Mzk2
MTMyMzQyNzhhNDkpLCBDKDk5ZWE1YmNkMzQwYmY2NjMpLCBDKDI1ODY0MDkxMmU3MTJiMTIpLAor
ICAgICBDKGM4YTI4Mjc0MDQ5OTE0MDIpLCBDKDdlZTVlNzg1NTBmMDI2NzUpLCBDKDJlYzUzOTUy
ZGI1YWM2NjIpLAorICAgICBDKDE1MjY0MDVhOWRmNjc5NGIpLCBDKGM4YTI4Mjc0MDQ5OTE0MDIp
LCBDKDdlZTVlNzg1NTBmMDI2NzUpLAorICAgICBDKDJlYzUzOTUyZGI1YWM2NjIpLCBDKDE1MjY0
MDVhOWRmNjc5NGIpLCBDKGVkZGM2MjcxMTcwYzVlMWYpLAorICAgICBDKGY1YTg1Zjk4NjAwMWQ5
ZDYpLCBDKDk1NDI3YzY3N2JmNThkNTgpLCBDKDUzZWQ2NjZkZmE4NWNiMjkpLAorICAgICBDKGVm
N2MwYzE4KX0sCisgICAge0MoNDIwZTZjOTI2YmM1NDg0MSksIEMoOTZkYmJmNmY0ZTdjNzVjZCks
IEMoZDhkNDBmYTcwYzNjNjdiYiksCisgICAgIEMoM2VkYmMxMGU0YmZlZTkxYiksIEMoZjBkNjgx
MzA0YzI4ZWY2OCksIEMoNzdlYTYwMjAyOWFhYWY5YyksCisgICAgIEMoOTBmMDcwYmQyNGM4NDgz
YyksIEMoM2VkYmMxMGU0YmZlZTkxYiksIEMoZjBkNjgxMzA0YzI4ZWY2OCksCisgICAgIEMoNzdl
YTYwMjAyOWFhYWY5YyksIEMoOTBmMDcwYmQyNGM4NDgzYyksIEMoMjhiYzhlNDFlMDhjZWI4Niks
CisgICAgIEMoMWViNTZlNDhhNjU2OTFlZiksIEMoOWZlYTUzMDFjOTIwMmYwZSksIEMoM2ZjYjY1
MDkxYWE5ZjEzNSksCisgICAgIEMoYjZhZDRiNjgpfSwKKyAgICB7QyhjODYwMWJhYjU2MWJjMWI3
KSwgQyg3MmIyNjI3MmEwZmY4NjlhKSwgQyg1NmZkZmM5ODZkNmJjM2M0KSwKKyAgICAgQyg4Mzcw
NzczMGNhZDcyNWQ0KSwgQyhjOWNhODhjM2E3Nzk2NzRhKSwgQyhlMWM2OTZmYmJkOWFhOTMzKSwK
KyAgICAgQyg3MjNmM2JhYWIxYzE3YTQ1KSwgQyg4MzcwNzczMGNhZDcyNWQ0KSwgQyhjOWNhODhj
M2E3Nzk2NzRhKSwKKyAgICAgQyhlMWM2OTZmYmJkOWFhOTMzKSwgQyg3MjNmM2JhYWIxYzE3YTQ1
KSwgQyhmODJhYmM3YTFkODUxNjgyKSwKKyAgICAgQygzMDY4MzgzNjgxOGU4NTdkKSwgQyg3OGJm
YTNlODlhNWFiMjNmKSwgQyg2OTI4MjM0NDgyYjMxODE3KSwKKyAgICAgQyhjMWU0NmIxNyl9LAor
ICAgIHtDKGIyZDI5NDkzMWEwZTIwZWIpLCBDKDI4NGZmZDlhMDgxNWJjMzgpLCBDKDFmOGExMDNh
YWM5YmJlNiksCisgICAgIEMoMWVmOGU5OGUxZWE1NzI2OSksIEMoNTk3MTExNjI3MmY0NWE4Yiks
IEMoMTg3YWQ2OGNlOTVkOGVhYyksCisgICAgIEMoZTk0ZTkzZWU0ZThlY2FhNiksIEMoMWVmOGU5
OGUxZWE1NzI2OSksIEMoNTk3MTExNjI3MmY0NWE4YiksCisgICAgIEMoMTg3YWQ2OGNlOTVkOGVh
YyksIEMoZTk0ZTkzZWU0ZThlY2FhNiksIEMoYTBmZjJhNTg2MTE4MzhiNSksCisgICAgIEMoYjAx
ZTAzODQ5YmZiYWU2ZiksIEMoZDA4MWUyMDJlMjhlYTNhYiksIEMoNTE4MzZiY2VlNzYyYmYxMyks
CisgICAgIEMoNTdiOGRmMjUpfSwKKyAgICB7Qyg3OTY2ZjUzYzM3YjZjNmQ3KSwgQyg4ZTZhYmNm
YjNhYTJiODhmKSwgQyg3ZjJlNWUwNzI0ZTVmMzQ1KSwKKyAgICAgQygzZWViNjBjM2Y1ZjgxNDNk
KSwgQyhhMjVhZWMwNWM0MjJhMjRmKSwgQyhiMDI2YjAzYWQzY2NhNGRiKSwKKyAgICAgQyhlNmUw
MzAwMjhjYzAyYTAyKSwgQygzZWViNjBjM2Y1ZjgxNDNkKSwgQyhhMjVhZWMwNWM0MjJhMjRmKSwK
KyAgICAgQyhiMDI2YjAzYWQzY2NhNGRiKSwgQyhlNmUwMzAwMjhjYzAyYTAyKSwgQygxNmZlNjc5
MzM4YjM0YmZjKSwKKyAgICAgQyhjMWJlMzg1YjVjOGE5ZGU0KSwgQyg2NWFmNWRmNjU2NzUzMGVi
KSwgQyhlZDNiMzAzZGY0ZGM2MzM1KSwKKyAgICAgQyhlOWZhMzZkNil9LAorICAgIHtDKGJlOWJi
MGFiZDAzYjczNjgpLCBDKDEzYmNhOTNhMzAzMWJlNTUpLCBDKGU4NjRmNGY1MmI1NWI0NzIpLAor
ICAgICBDKDM2YThkMTNhMmNiYjA5MzkpLCBDKDI1NGFjNzM5MDc0MTMyMzApLCBDKDczNTIwZDE1
MjIzMTVhNzApLAorICAgICBDKDhjOWZkYjVjZjFlMWE1MDcpLCBDKDM2YThkMTNhMmNiYjA5Mzkp
LCBDKDI1NGFjNzM5MDc0MTMyMzApLAorICAgICBDKDczNTIwZDE1MjIzMTVhNzApLCBDKDhjOWZk
YjVjZjFlMWE1MDcpLCBDKGIzNjQwNTcwYjkyNjg4NiksCisgICAgIEMoZmJhMjM0NGVlODdmN2Jh
YiksIEMoZGU1NzM0MWFiNDQ4ZGYwNSksIEMoMzg1NjEyZWUwOTRmYTk3NyksCisgICAgIEMoOGY4
ZGFlZmMpfSwKKyAgICB7QyhhMDhkMTI4YzVmMTY0OWJlKSwgQyhhODE2NmMzZGJiZTE5YWFkKSwg
QyhjYjlmOTE0ZjgyOWVjNjJjKSwKKyAgICAgQyg1YjJiN2NhODU2ZmFkMWMzKSwgQyg4MDkzMDIy
ZDY4MmUzNzVkKSwgQyhlYTVkMTYzYmE3ZWEyMzFmKSwKKyAgICAgQyhkNjE4MWQwMTJjMGRlNjQx
KSwgQyg1YjJiN2NhODU2ZmFkMWMzKSwgQyg4MDkzMDIyZDY4MmUzNzVkKSwKKyAgICAgQyhlYTVk
MTYzYmE3ZWEyMzFmKSwgQyhkNjE4MWQwMTJjMGRlNjQxKSwgQyhlN2Q0MGQwYWI4YjA4MTU5KSwK
KyAgICAgQygyZTgyMzIwZjUxYjNhNjdlKSwgQygyN2MyZTM1NmVhMGI2M2EzKSwgQyg1ODg0MmQw
MWEyYjFkMDc3KSwgQyg2ZTFiYjdlKX0sCisgICAge0MoN2MzODZmMGZmZTA0NjVhYyksIEMoNTMw
NDE5YzlkODQzZGJmMyksIEMoNzQ1MGUzYTRmNzJiOGQ4YyksCisgICAgIEMoNDhiMjE4ZTNiNzIx
ODEwZCksIEMoZDM3NTdhYzg2MDliYzdmYyksIEMoMTExYmEwMmE4OGFlZmM4KSwKKyAgICAgQyhl
ODYzNDMxMzdkM2JmYzJhKSwgQyg0OGIyMThlM2I3MjE4MTBkKSwgQyhkMzc1N2FjODYwOWJjN2Zj
KSwKKyAgICAgQygxMTFiYTAyYTg4YWVmYzgpLCBDKGU4NjM0MzEzN2QzYmZjMmEpLCBDKDQ0YWQy
NmI1MTY2MWI1MDcpLAorICAgICBDKGRiMTI2ODY3MDI3NGY1MWUpLCBDKDYyYTVlNzViZWFlODc1
ZjMpLCBDKGUyNjZlN2E0NGM1ZjI4YzYpLAorICAgICBDKGZkMDA3NmYwKX0sCisgICAge0MoYmIz
NjIwOTRlN2VmNGY4KSwgQyhmZjNjMmE0ODk2NmY5NzI1KSwgQyg1NTE1MjgwM2FjZDRhN2ZlKSwK
KyAgICAgQygxNTc0N2Q4YzUwNWZmZDAwKSwgQyg0MzhhMTVmMzkxMzEyY2Q2KSwgQyhlNDZjYTYy
YzI2ZDgyMWY1KSwKKyAgICAgQyhiZTc4ZDc0YzlmNzljYjQ0KSwgQygxNTc0N2Q4YzUwNWZmZDAw
KSwgQyg0MzhhMTVmMzkxMzEyY2Q2KSwKKyAgICAgQyhlNDZjYTYyYzI2ZDgyMWY1KSwgQyhiZTc4
ZDc0YzlmNzljYjQ0KSwgQyhhOGFhMTlmM2FhNTlmMDlhKSwKKyAgICAgQyhlZmZiM2NkZGFiMmM5
MjY3KSwgQyhkNzhlNDFhZDk3Y2IxNmE1KSwgQyhhY2U2ODIxNTEzNTI3ZDMyKSwKKyAgICAgQyg4
OTliMTdiNil9LAorICAgIHtDKGNkODBkZWEyNDMyMWVlYTQpLCBDKDUyYjRmZGM4MTMwYzJiMTUp
LCBDKGYzZWExMDBiMTU0YmZiODIpLAorICAgICBDKGQ5Y2NlZjFkNGJlNDY5ODgpLCBDKDVlZGUw
YzRlMzgzYTVlNjYpLCBDKGRhNjk2ODM3MTZhNTRkMWUpLAorICAgICBDKGJmYzNmZGYwMmQyNDJk
MjQpLCBDKGQ5Y2NlZjFkNGJlNDY5ODgpLCBDKDVlZGUwYzRlMzgzYTVlNjYpLAorICAgICBDKGRh
Njk2ODM3MTZhNTRkMWUpLCBDKGJmYzNmZGYwMmQyNDJkMjQpLCBDKDIwZWQzMDI3NDY1MWIzZjUp
LAorICAgICBDKDRjNjU5ODI0MTY5ZTg2YzYpLCBDKDYzNzIyNmRhZTViNTJhMGUpLCBDKDdlMDUw
ZGJkMWM3MWRjN2YpLAorICAgICBDKGUzZTg0ZTMxKX0sCisgICAge0MoZDU5OWEwNDEyNTM3MmMz
YSksIEMoMzEzMTM2YzU2YTU2ZjM2MyksIEMoMWU5OTNjMzY3NzYyNTgzMiksCisgICAgIEMoMjg3
MGE5OWM3NmE1ODdhNCksIEMoOTlmNzRjYzBiMTgyZGRhNCksIEMoOGE1ZTg5NWIyZjBjYTdiNiks
CisgICAgIEMoM2Q3ODg4MmQ1ZTBiYjFkYyksIEMoMjg3MGE5OWM3NmE1ODdhNCksIEMoOTlmNzRj
YzBiMTgyZGRhNCksCisgICAgIEMoOGE1ZTg5NWIyZjBjYTdiNiksIEMoM2Q3ODg4MmQ1ZTBiYjFk
YyksIEMoZjQ2NjEyMzczMmEzZTI1ZSksCisgICAgIEMoYWNhNWU1OTcxNmE0MGU1MCksIEMoMjYx
ZDJlNzM4M2QwZTY4NiksIEMoY2U5MzYyZDZhNDJjMTVhNyksCisgICAgIEMoZWVmNzliNmIpfSwK
KyAgICB7QyhkYmJmNTQxZTlkZmRhMGEpLCBDKDE0NzlmY2ViNmRiNGY4NDQpLCBDKDMxYWI1NzZi
NTkwNjI1MzQpLAorICAgICBDKGEzMzM1YzQxNzY4N2NmM2EpLCBDKDkyZmYxMTRhYzQ1Y2RhNzUp
LCBDKGMzYjhhNjI3Mzg0ZjEzYjUpLAorICAgICBDKGM0ZjI1ZGUzM2RlOGIzZjcpLCBDKGEzMzM1
YzQxNzY4N2NmM2EpLCBDKDkyZmYxMTRhYzQ1Y2RhNzUpLAorICAgICBDKGMzYjhhNjI3Mzg0ZjEz
YjUpLCBDKGM0ZjI1ZGUzM2RlOGIzZjcpLCBDKGVhY2JmNTIwNTc4YzU5NjQpLAorICAgICBDKDRj
YjE5YzVhYjI0ZjMyMTUpLCBDKGU3ZDhhNmY2N2YwYzZlNyksIEMoMzI1YzI0MTNlYjc3MGFkYSks
IEMoODY4ZTMzMTUpfSwKKyAgICB7QyhjMmVlMzI4OGJlNGZlMmJmKSwgQyhjNjVkMmY1ZGRmMzJi
OTIpLCBDKGFmNmVjZGYxMjFiYTU0ODUpLAorICAgICBDKGM3Y2Q0OGY3YWJmMWZlNTkpLCBDKGNl
NjAwNjU2YWNlNmY1M2EpLCBDKDhhOTRhNDM4MWIxMDhiMzQpLAorICAgICBDKGY5ZDEyNzZjNjRi
ZjU5ZmIpLCBDKGM3Y2Q0OGY3YWJmMWZlNTkpLCBDKGNlNjAwNjU2YWNlNmY1M2EpLAorICAgICBD
KDhhOTRhNDM4MWIxMDhiMzQpLCBDKGY5ZDEyNzZjNjRiZjU5ZmIpLCBDKDIxOWNlNzBmZjVhMTEy
YTUpLAorICAgICBDKGU2MDI2YzU3NmUyZDI4ZDcpLCBDKGI4ZTQ2N2YyNTAxNWUzYTYpLCBDKDk1
MGNiOTA0ZjM3YWY3MTApLAorICAgICBDKDQ2MzlhNDI2KX0sCisgICAge0MoZDg2NjAzY2VkMWVk
NDczMCksIEMoZjlkZTcxOGFhYWRhNzcwOSksIEMoZGI4Yjk3NTUxOTRjNjUzNSksCisgICAgIEMo
ZDgwM2UxZWVhZDQ3NjA0YyksIEMoYWQwMGY3NjExOTcwYTcxYiksIEMoYmM1MDAzNmIxNmNlNzFm
NSksCisgICAgIEMoYWZiYTk2MjEwYTJjYTdkNiksIEMoZDgwM2UxZWVhZDQ3NjA0YyksIEMoYWQw
MGY3NjExOTcwYTcxYiksCisgICAgIEMoYmM1MDAzNmIxNmNlNzFmNSksIEMoYWZiYTk2MjEwYTJj
YTdkNiksIEMoMjhmN2E3YmUxZDY3NjVmMCksCisgICAgIEMoOTdiZDg4OGI5MzkzOGM2OCksIEMo
NmFkNDFkMWI0MDdkZWQ0OSksIEMoYjliZmVjMDk4ZGM1NDNlNCksCisgICAgIEMoZjMyMTM2NDYp
fSwKKyAgICB7Qyg5MTUyNjNjNjcxYjI4ODA5KSwgQyhhODE1Mzc4ZTdhZDc2MmZkKSwgQyhhYmVj
NmRjOWI2NjlmNTU5KSwKKyAgICAgQyhkMTdjOTI4YzUzNDI0NzdmKSwgQyg3NDUxMzBiNzk1MjU0
YWQ1KSwgQyg4YzVkYjkyNmZlODhmOGJhKSwKKyAgICAgQyg3NDJhOTVjOTUzZTZkOTc0KSwgQyhk
MTdjOTI4YzUzNDI0NzdmKSwgQyg3NDUxMzBiNzk1MjU0YWQ1KSwKKyAgICAgQyg4YzVkYjkyNmZl
ODhmOGJhKSwgQyg3NDJhOTVjOTUzZTZkOTc0KSwgQygyNzlkYjgwNTdiNWQzZTk2KSwKKyAgICAg
Qyg5ODE2ODQxMTU2NWI0ZWM0KSwgQyg1MGE3MmM1NGZhMTEyNWZhKSwgQygyNzc2NmE2MzVkYjcz
NjM4KSwKKyAgICAgQygxN2YxNDhlOSl9LAorICAgIHtDKDJiNjdjZGQzOGMzMDdhNWUpLCBDKGNi
MWQ0NWJiNWM5ZmUxYyksIEMoODAwYmFmMmEwMmVjMThhZCksCisgICAgIEMoNjUzMWMxZmUzMmJj
YjQxNyksIEMoOGM5NzBkOGRmOGNkYmViNCksIEMoOTE3YmE1ZmM2N2U3MmI0MCksCisgICAgIEMo
NGI2NWU0ZTI2M2UwYTQyNiksIEMoNjUzMWMxZmUzMmJjYjQxNyksIEMoOGM5NzBkOGRmOGNkYmVi
NCksCisgICAgIEMoOTE3YmE1ZmM2N2U3MmI0MCksIEMoNGI2NWU0ZTI2M2UwYTQyNiksIEMoZTBk
ZTMzY2U4OGE4YjNhOSksCisgICAgIEMoZjhlZjk4YTQzN2UxNmIwOCksIEMoYTUxNjJjMGM3YzVm
N2I2MiksIEMoZGJkYWM0MzM2MWIyYjg4MSksCisgICAgIEMoYmZkOTQ4ODApfSwKKyAgICB7Qygy
ZDEwNzQxOTA3M2I5Y2QwKSwgQyhhOTZkYjA3NDBjZWY4ZjU0KSwgQyhlYzQxZWU5MWIzZWNkYzFi
KSwKKyAgICAgQyhmZmUzMTk2NTRjOGU3ZWJjKSwgQyg2YTY3YjhmMTNlYWQ1YTcyKSwgQyg2ZGQx
MGEzNGY4MGQ1MzJmKSwKKyAgICAgQyg2ZTljZmFlY2U5ZmJjYTQpLCBDKGZmZTMxOTY1NGM4ZTdl
YmMpLCBDKDZhNjdiOGYxM2VhZDVhNzIpLAorICAgICBDKDZkZDEwYTM0ZjgwZDUzMmYpLCBDKDZl
OWNmYWVjZTlmYmNhNCksIEMoYjQ0NjhlYjZhMzBhYTdlOSksCisgICAgIEMoZTg3OTk1YmVlNDgz
MjIyYSksIEMoZDAzNmMyYzkwYzYwOTM5MSksIEMoODUzMzA2ZTgyZmEzMjI0NyksCisgICAgIEMo
YmIxZmE3ZjMpfSwKKyAgICB7QyhmM2U5NDg3ZWMwZTI2ZGZjKSwgQygxYWIxZjYzMjI0ZTgzN2Zh
KSwgQygxMTk5ODNiYjVhODEyNWQ4KSwKKyAgICAgQyg4OTUwY2ZjZjRiZGY2MjJjKSwgQyg4ODQ3
ZGNhODJlZmVlZjJmKSwgQyg2NDZiNzViMDI2NzA4MTY5KSwKKyAgICAgQygyMWNhYjRiMTY4N2Jk
OGIpLCBDKDg5NTBjZmNmNGJkZjYyMmMpLCBDKDg4NDdkY2E4MmVmZWVmMmYpLAorICAgICBDKDY0
NmI3NWIwMjY3MDgxNjkpLCBDKDIxY2FiNGIxNjg3YmQ4YiksIEMoMjQzYjQ4OWE5ZWFlNjIzMSks
CisgICAgIEMoNWYzZTYzNGM0Yjc3OTg3NiksIEMoZmY4YWJkMTU0OGVhZjY0NiksIEMoYzc5NjJm
NWYwMTUxOTE0YiksIEMoODg4MTZiMSl9LAorICAgIHtDKDExNjA5ODdjOGZlODZmN2QpLCBDKDg3
OWU2ZGIxNDgxZWI5MWIpLCBDKGQ3ZGNiODAyYmZlNjg4NWQpLAorICAgICBDKDE0NDUzYjVjYzNk
ODIzOTYpLCBDKDRlZjcwMGMzM2VkMjc4YmMpLCBDKDE2MzljNzJmZmMwMGQxMmUpLAorICAgICBD
KGZiMTQwZWU2MTU1ZjcwMGQpLCBDKDE0NDUzYjVjYzNkODIzOTYpLCBDKDRlZjcwMGMzM2VkMjc4
YmMpLAorICAgICBDKDE2MzljNzJmZmMwMGQxMmUpLCBDKGZiMTQwZWU2MTU1ZjcwMGQpLCBDKDJl
NmI1Yzk2YTY2MjA4NjIpLAorICAgICBDKGExZjEzNjk5OGNiZTE5YyksIEMoNzRlMDU4YTNiNmM1
YTcxMiksIEMoOTNkY2Y2YmQzMzkyOGIxNyksIEMoNWMyZmFlYjMpfSwKKyAgICB7QyhlYWI4MTEy
YzU2MGI5NjdiKSwgQyg5N2Y1NTBiNThlODlkYmFlKSwgQyg4NDZlZDUwNmQzMDQwNTFmKSwKKyAg
ICAgQygyNzZhYTM3NzQ0YjVhMDI4KSwgQyg4YzEwODAwZWU5MGVhNTczKSwgQyhlNmU1N2QyYjMz
YTFlMGI3KSwKKyAgICAgQyg5MWY4MzU2M2NkM2I5ZGRhKSwgQygyNzZhYTM3NzQ0YjVhMDI4KSwg
Qyg4YzEwODAwZWU5MGVhNTczKSwKKyAgICAgQyhlNmU1N2QyYjMzYTFlMGI3KSwgQyg5MWY4MzU2
M2NkM2I5ZGRhKSwgQyhhZmJiNDczOTU3MDczOGExKSwKKyAgICAgQyg0NDBiYTk4ZGE1ZDhmNjkp
LCBDKGZkZTRlOWIwZWRhMjAzNTApLCBDKGU2N2RmYTVhMjEzOGZhMSksIEMoNTFiNWZjNmYpfSwK
KyAgICB7QygxYWRkY2YwMzg2ZDM1MzUxKSwgQyhiNWY0MzY1NjFmOGYxNDg0KSwgQyg4NWQzOGUy
MjE4MWM5YmIxKSwKKyAgICAgQyhmZjVjMDNmMDAzYzFmZWZlKSwgQyhlMTA5ODY3MGFmZTdmZjYp
LCBDKGVhNDQ1MDMwY2Y4NmRlMTkpLAorICAgICBDKGYxNTVjNjhiNWMyOTY3ZjgpLCBDKGZmNWMw
M2YwMDNjMWZlZmUpLCBDKGUxMDk4NjcwYWZlN2ZmNiksCisgICAgIEMoZWE0NDUwMzBjZjg2ZGUx
OSksIEMoZjE1NWM2OGI1YzI5NjdmOCksIEMoOTVkMzFiMTQ1ZGJiMmU5ZSksCisgICAgIEMoOTE0
ZmUxY2EzZGViMzI2NSksIEMoNjA2NjAyMGIxMzU4Y2NjMSksIEMoYzc0YmI3ZTJkZWUxNTAzNiks
CisgICAgIEMoMzNkOTQ3NTIpfSwKKyAgICB7QyhkNDQ1YmE4NGJmODAzZTA5KSwgQygxMjE2YzI0
OTcwMzhmODA0KSwgQygyMjkzMjE2ZWEyMjM3MjA3KSwKKyAgICAgQyhlMjE2NDQ1MWM2NTFhZGZi
KSwgQyhiMjUzNGU2NTQ3N2Y5ODIzKSwgQyg0ZDcwNjkxYTY5NjcxZTM0KSwKKyAgICAgQygxNWJl
NDk2M2RiZGU4MTQzKSwgQyhlMjE2NDQ1MWM2NTFhZGZiKSwgQyhiMjUzNGU2NTQ3N2Y5ODIzKSwK
KyAgICAgQyg0ZDcwNjkxYTY5NjcxZTM0KSwgQygxNWJlNDk2M2RiZGU4MTQzKSwgQyg3NjJlNzVj
NDA2YzVlOWEzKSwKKyAgICAgQyg3Yjc1NzlmN2UwMzU2ODQxKSwgQyg0ODA1MzNlYjA2NmRmY2U1
KSwgQyg5MGFlMTRlYTZiZmViNGFlKSwKKyAgICAgQyhiMGM5Mjk0OCl9LAorICAgIHtDKDM3MjM1
YTA5NmE4YmU0MzUpLCBDKGQ5YjczMTMwNDkzNTg5YzIpLCBDKDNiMTAyNGY1OTM3OGQzYmUpLAor
ICAgICBDKGFkMTU5ZjU0MmQ4MWYwNGUpLCBDKDQ5NjI2YTk3YTk0NjA5NiksIEMoZDhkMzk5OGJm
MDlmZDMwNCksCisgICAgIEMoZDEyN2E0MTFlYWU2OTQ1OSksIEMoYWQxNTlmNTQyZDgxZjA0ZSks
IEMoNDk2MjZhOTdhOTQ2MDk2KSwKKyAgICAgQyhkOGQzOTk4YmYwOWZkMzA0KSwgQyhkMTI3YTQx
MWVhZTY5NDU5KSwgQyg4ZjMyNTNjNGViNzg1YTdiKSwKKyAgICAgQyg0MDQ5MDYyZjM3ZTYyMzk3
KSwgQyhiOWZhMDRkM2I2NzBlNWMxKSwgQygxMjExYTc5NjdhYzkzNTBmKSwKKyAgICAgQyhjNzE3
MTU5MCl9LAorICAgIHtDKDc2M2FkNmVhMmZlMWM5OWQpLCBDKGNmN2FmNTM2OGFjMWUyNmIpLCBD
KDRkNWU0NTFiM2JiOGQzZDQpLAorICAgICBDKDM3MTJlYjkxM2QwNGUyZjIpLCBDKDJmOTUwMGQz
MTljODRkODkpLCBDKDRhYzZlYjIxYThjZjA2ZjkpLAorICAgICBDKDdkMTkxN2FmY2RlNDI3NDQp
LCBDKDM3MTJlYjkxM2QwNGUyZjIpLCBDKDJmOTUwMGQzMTljODRkODkpLAorICAgICBDKDRhYzZl
YjIxYThjZjA2ZjkpLCBDKDdkMTkxN2FmY2RlNDI3NDQpLCBDKDZiNTg2MDRiNWRkMTA5MDMpLAor
ICAgICBDKGM0Mjg4ZGZiYzFlMzE5ZmMpLCBDKDIzMGY3NWNhOTY4MTdjNmUpLCBDKDg4OTRjYmEz
Yjc2Mzc1NmMpLAorICAgICBDKDI0MGE2N2ZiKX0sCisgICAge0MoZWE2MjdmYzg0Y2QxYjg1Nyks
IEMoODVlMzcyNDk0NTIwMDcxZiksIEMoNjllYzYxODAwODQ1NzgwYiksCisgICAgIEMoYTNjMWM1
Y2ExYjAzNjcpLCBDKGViNjkzMzk5NzI3MmJiM2QpLCBDKDc2YTcyY2I2MjY5MmE2NTUpLAorICAg
ICBDKDE0MGJiNTUzMWVkZjc1NmUpLCBDKGEzYzFjNWNhMWIwMzY3KSwgQyhlYjY5MzM5OTcyNzJi
YjNkKSwKKyAgICAgQyg3NmE3MmNiNjI2OTJhNjU1KSwgQygxNDBiYjU1MzFlZGY3NTZlKSwgQyg4
ZDBkODA2N2QxYzkyNWY0KSwKKyAgICAgQyg3YjNmYTU2ZDhkNzdhMTBjKSwgQygyYmQwMDI4N2Iw
OTQ2ZDg4KSwgQyhmMDhjOGU0YmQ2NWI4OTcwKSwKKyAgICAgQyhlMTg0M2NkNSl9LAorICAgIHtD
KDFmMmZmZDc5ZjJjZGMwYzgpLCBDKDcyNmExYmMzMWIzMzdhYWEpLCBDKDY3OGI3ZjI3NWVmOTY0
MzQpLAorICAgICBDKDVhYTgyYmZhYTk5ZDM5NzgpLCBDKGMxOGY5NmNhZGU1Y2UxOGQpLCBDKDM4
NDA0NDkxZjllMzRjMDMpLAorICAgICBDKDg5MWZiODkyNmJhMDQxOGMpLCBDKDVhYTgyYmZhYTk5
ZDM5NzgpLCBDKGMxOGY5NmNhZGU1Y2UxOGQpLAorICAgICBDKDM4NDA0NDkxZjllMzRjMDMpLCBD
KDg5MWZiODkyNmJhMDQxOGMpLCBDKGU1ZjY5YTYzOTgxMTRjMTUpLAorICAgICBDKDdiOGRlZDM2
MjNiYzZiMWQpLCBDKDJmM2U1YzVkYTVmZjcwZTgpLCBDKDFhYjE0MmFkZGVhNmE5ZWMpLAorICAg
ICBDKGZkYTE0NTJiKX0sCisgICAge0MoMzlhOWUxNDZlYzRiMzIxMCksIEMoZjYzZjc1ODAyYTc4
YjFhYyksIEMoZTJlMjI1MzljOTQ3NDFjMyksCisgICAgIEMoOGIzMDVkNTMyZTYxMjI2ZSksIEMo
Y2FlYWU4MGRhMmVhMmUpLCBDKDg4YTYyODlhNzZhYzY4NGUpLAorICAgICBDKDhjZTViNWY5ZGYx
Y2JkODUpLCBDKDhiMzA1ZDUzMmU2MTIyNmUpLCBDKGNhZWFlODBkYTJlYTJlKSwKKyAgICAgQyg4
OGE2Mjg5YTc2YWM2ODRlKSwgQyg4Y2U1YjVmOWRmMWNiZDg1KSwgQyg4YWUxZmM0Nzk4ZTAwZDU3
KSwKKyAgICAgQyhlNzE2NGI4ZmIzNjRmYzQ2KSwgQyg2YTk3OGM5YmQzYTY2OTQzKSwgQyhlZjEw
ZDVhZTRkZDA4ZGMpLCBDKGEyY2FkMzMwKX0sCisgICAge0MoNzRjYmEzMDNlMmRkOWQ2ZCksIEMo
NjkyNjk5YjgzMjg5ZmFkMSksIEMoZGZiOWFhNzg3NDY3ODQ4MCksCisgICAgIEMoNzUxMzkwYThh
NWM0MWJkYyksIEMoNmVlNWZiZjg3NjA1ZDM0KSwgQyg2Y2E3M2Y2MTBmM2E4ZjdjKSwKKyAgICAg
QyhlODk4YjNjOTk2NTcwYWQpLCBDKDc1MTM5MGE4YTVjNDFiZGMpLCBDKDZlZTVmYmY4NzYwNWQz
NCksCisgICAgIEMoNmNhNzNmNjEwZjNhOGY3YyksIEMoZTg5OGIzYzk5NjU3MGFkKSwgQyg5ODE2
OGE1ODU4ZmM3MTEwKSwKKyAgICAgQyg2Zjk4N2ZhMjdhYTBkYWEyKSwgQyhmMjVlM2UxODBkNGIz
NmEzKSwgQyhkMGIwMzQ5NWFlYjFiZThhKSwKKyAgICAgQyg1MzQ2N2UxNil9LAorICAgIHtDKDRj
YmMyYjczYTQzMDcxZTApLCBDKDU2YzVkYjRjNGNhNGUwYjcpLCBDKDFiMjc1YTE2MmY0NmJkM2Qp
LAorICAgICBDKGI4N2EzMjZlNDEzNjA0YmYpLCBDKGQ4ZjlhNWZhMjE0YjAzYWIpLCBDKDhhOGJi
ODI2NTc3MWNmODgpLAorICAgICBDKGE2NTUzMTkwNTRmNmU3MGYpLCBDKGI4N2EzMjZlNDEzNjA0
YmYpLCBDKGQ4ZjlhNWZhMjE0YjAzYWIpLAorICAgICBDKDhhOGJiODI2NTc3MWNmODgpLCBDKGE2
NTUzMTkwNTRmNmU3MGYpLCBDKGI0OTljYjhlNjVhOWFmNDQpLAorICAgICBDKGJlZTdmYWZjYzgz
MDc0OTEpLCBDKDVkMmU1NWZhOWIyN2NkYTIpLCBDKDYzYjEyMGY1ZmIyZDZlZTUpLAorICAgICBD
KGRhMTRhOGQwKX0sCisgICAge0MoODc1NjM4Yjk3MTVkMjIyMSksIEMoZDliYTA2MTVjMGM1ODc0
MCksIEMoNjE2ZDRiZTJkZmU4MjVhYSksCisgICAgIEMoNWRmMjVmMTNlYTdiYzI4NCksIEMoMTY1
ZWRmYWFmZDI1OThmYiksIEMoYWY3MjE1YzVjNzE4YzY5NiksCisgICAgIEMoZTlmMmY5Y2E2NTVl
NzY5KSwgQyg1ZGYyNWYxM2VhN2JjMjg0KSwgQygxNjVlZGZhYWZkMjU5OGZiKSwKKyAgICAgQyhh
ZjcyMTVjNWM3MThjNjk2KSwgQyhlOWYyZjljYTY1NWU3NjkpLCBDKGU0NTljZmNiNTY1ZDNkMmQp
LAorICAgICBDKDQxZDAzMjYzMWJlMjQxOGEpLCBDKGM1MDVkYjA1ZmQ5NDZmNjApLCBDKDU0OTkw
Mzk0YTcxNGY1ZGUpLAorICAgICBDKDY3MzMzNTUxKX0sCisgICAge0MoZmI2ODZiMjc4Mjk5NGE4
ZCksIEMoZWRlZTYwNjkzNzU2YmI0OCksIEMoZTZiYzNjYWUwZGVkMmVmNSksCisgICAgIEMoNThl
YjRkMDNiMmMzZGRmNSksIEMoNmQyNTQyOTk1ZjkxODlmMSksIEMoYzBiZWVjNThhNWY1ZmVhMiks
CisgICAgIEMoZWQ2NzQzNmY0MmUyYTc4YiksIEMoNThlYjRkMDNiMmMzZGRmNSksIEMoNmQyNTQy
OTk1ZjkxODlmMSksCisgICAgIEMoYzBiZWVjNThhNWY1ZmVhMiksIEMoZWQ2NzQzNmY0MmUyYTc4
YiksIEMoZGZlYzc2M2NkYjJiNTE5MyksCisgICAgIEMoNzI0YThkNTM0NWJkMmQ2KSwgQyg5NGQ0
ZmQxYjgxNDU3YzIzKSwgQygyOGU4N2M1MGNkZWRlNDUzKSwgQyhhMGViZDY2ZSl9LAorICAgIHtD
KGFiMjFkODFhOTExZTY3MjMpLCBDKDRjMzFiMDczNTQ4NTJmNTkpLCBDKDgzNWRhMzg0YzkzODQ3
NDQpLAorICAgICBDKDdmNzU5ZGRkYzZlODU0OWEpLCBDKDYxNmRkMGNhMDIyYzg3MzUpLCBDKDk0
NzE3YWQ0YmMxNWNlYjMpLAorICAgICBDKGY2NmM3YmU4MDhhYjM2ZSksIEMoN2Y3NTlkZGRjNmU4
NTQ5YSksIEMoNjE2ZGQwY2EwMjJjODczNSksCisgICAgIEMoOTQ3MTdhZDRiYzE1Y2ViMyksIEMo
ZjY2YzdiZTgwOGFiMzZlKSwgQyhhZjgyODZiNTUwYjJmNGI3KSwKKyAgICAgQyg3NDViZDIxN2Qy
MGE5ZjQwKSwgQyhjNzNiZmI5YzU0MzBmMDE1KSwgQyg1NWU2NTkyMjY2NmUzZmMyKSwKKyAgICAg
Qyg0Yjc2OTU5Myl9LAorICAgIHtDKDMzZDAxM2NjMGNkNDZlY2YpLCBDKDNkZTcyNjQyM2FlYTEy
MmMpLCBDKDExNmFmNTExMTdmZTIxYTkpLAorICAgICBDKGYyNzFiYTQ3NGVkYzU2MmQpLCBDKGU2
NTk2ZTY3ZjlkZDNlYmQpLCBDKGMwYTI4OGVkZjgwOGYzODMpLAorICAgICBDKGIzZGVmNzA2ODFj
NmJhYmMpLCBDKGYyNzFiYTQ3NGVkYzU2MmQpLCBDKGU2NTk2ZTY3ZjlkZDNlYmQpLAorICAgICBD
KGMwYTI4OGVkZjgwOGYzODMpLCBDKGIzZGVmNzA2ODFjNmJhYmMpLCBDKDdkYTc4NjRlOTk4OWIw
OTUpLAorICAgICBDKGJmMmY4NzE4NjkzY2Q4YTEpLCBDKDI2NGE5MTQ0MTY2ZGE3NzYpLCBDKDYx
YWQ5MDY3Njg3MGJlYjYpLAorICAgICBDKDZhYTc1NjI0KX0sCisgICAge0MoOGNhOTJjN2NkMzlm
YWU1ZCksIEMoMzE3ZTYyMGUxYmYyMGYxKSwgQyg0ZjBiMzNiZjIxOTRiOTdmKSwKKyAgICAgQyg0
NTc0NGFmY2YxMzFkYmVlKSwgQyg5NzIyMjM5MmMyNTU5MzUwKSwgQyg0OThhMTliMjgwYzZkNmVk
KSwKKyAgICAgQyg4M2FjMmMzNmFjZGI4ZDQ5KSwgQyg0NTc0NGFmY2YxMzFkYmVlKSwgQyg5NzIy
MjM5MmMyNTU5MzUwKSwKKyAgICAgQyg0OThhMTliMjgwYzZkNmVkKSwgQyg4M2FjMmMzNmFjZGI4
ZDQ5KSwgQyg3YTY5NjQ1YzI5NGRhYTYyKSwKKyAgICAgQyhhYmU5ZDJiZTgyNzViM2QyKSwgQygz
OTU0MjAxOWRlMzcxMDg1KSwgQyg3ZjRlZmFjODQ4OGNkNmFkKSwKKyAgICAgQyg2MDJhM2Y5Nil9
LAorICAgIHtDKGZkZGUzYjAzZjAxOGY0M2UpLCBDKDM4ZjkzMjk0NmM3ODY2MCksIEMoYzg0MDg0
Y2U5NDY4NTFlZSksCisgICAgIEMoYjZkZDA5YmE3ODUxYzdhZiksIEMoNTcwZGU0ZTFiYjEzYjEz
MyksIEMoYzRlNzg0ZWI5NzIxMTY0MiksCisgICAgIEMoODI4NWE3ZmNkY2M3YzU4ZCksIEMoYjZk
ZDA5YmE3ODUxYzdhZiksIEMoNTcwZGU0ZTFiYjEzYjEzMyksCisgICAgIEMoYzRlNzg0ZWI5NzIx
MTY0MiksIEMoODI4NWE3ZmNkY2M3YzU4ZCksIEMoZDQyMWY0Nzk5MGRhODk5YiksCisgICAgIEMo
OGFlZDQwOWM5OTdlYWExMyksIEMoN2EwNDU5MjljMmUyOWNjZiksIEMoYjM3MzY4MmE2MjAyYzg2
YiksCisgICAgIEMoY2QxODNjNGQpfSwKKyAgICB7Qyg5Yzg1MDIwNTBlOWM5NDU4KSwgQyhkNmQy
YTFhNjk5NjRiZWI5KSwgQygxNjc1NzY2ZjQ4MDIyOWI1KSwKKyAgICAgQygyMTZlMWQ2Yzg2Y2I1
MjRjKSwgQyhkMDFjZjZmZDRmNDA2NWMwKSwgQyhmZmZhNGVjNWI0ODJlYTBmKSwKKyAgICAgQyhh
MGUyMGVlNmE1NDA0YWMxKSwgQygyMTZlMWQ2Yzg2Y2I1MjRjKSwgQyhkMDFjZjZmZDRmNDA2NWMw
KSwKKyAgICAgQyhmZmZhNGVjNWI0ODJlYTBmKSwgQyhhMGUyMGVlNmE1NDA0YWMxKSwgQyhjMWIw
MzdlNGVlYmFmODVlKSwKKyAgICAgQyg2MzRlM2Q3YzNlYmY4OWViKSwgQyhiY2RhOTcyMzU4YzY3
ZDEpLCBDKGZkMTM1MjE4MWU1Yjg1NzgpLCBDKDk2MGE0ZDA3KX0sCisgICAge0MoMzQ4MTc2Y2Ey
ZmEyZmRkMiksIEMoM2E4OWM1MTRjYzM2MGMyZCksIEMoOWY5MGI4YWZiMzE4ZDZkMCksCisgICAg
IEMoYmNlZWUwN2MxMWE5YWMzMCksIEMoMmUyZDQ3ZGZmOGU3N2ViNyksIEMoMTFhMzk0Y2Q3YjZk
NjE0YSksCisgICAgIEMoMWQ3YzQxZDU0ZTE1Y2I0YSksIEMoYmNlZWUwN2MxMWE5YWMzMCksIEMo
MmUyZDQ3ZGZmOGU3N2ViNyksCisgICAgIEMoMTFhMzk0Y2Q3YjZkNjE0YSksIEMoMWQ3YzQxZDU0
ZTE1Y2I0YSksIEMoMTViYWE1YWU3MzEyYjBmYyksCisgICAgIEMoZjM5OGY1OTZjYzk4NDYzNSks
IEMoOGFiOGZkZjg3YTY3ODhlOCksIEMoYjJiNWMxMjM0YWI0N2UyKSwgQyg5YWU5OThjNCl9LAor
ICAgIHtDKDRhM2QzZGZiYmFlYTEzMGIpLCBDKDRlMjIxYzkyMGY2MWVkMDEpLCBDKDU1M2ZkNmNk
MTMwNDUzMWYpLAorICAgICBDKGJkMmIzMWI1NjA4MTQzZmUpLCBDKGFiNzE3YTEwZjI1NTQ4NTMp
LCBDKDI5Mzg1N2YwNGQxOTRkMjIpLAorICAgICBDKGQ1MWJlOGZhODZmMjU0ZjApLCBDKGJkMmIz
MWI1NjA4MTQzZmUpLCBDKGFiNzE3YTEwZjI1NTQ4NTMpLAorICAgICBDKDI5Mzg1N2YwNGQxOTRk
MjIpLCBDKGQ1MWJlOGZhODZmMjU0ZjApLCBDKDFlZWUzOWUwNzY4NjkwN2UpLAorICAgICBDKDYz
OTAzOWZlMGU4ZDMwNTIpLCBDKGQ2ZWMxNDcwY2VmOTdmZiksIEMoMzcwYzgyYjg2MDAzNGYwZiks
IEMoNzRlMjE3OWQpfSwKKyAgICB7QyhiMzcxZjc2OGNkZjRlZGI5KSwgQyhiZGVmMmFjZTZkMmRl
MGYwKSwgQyhlMDViNDEwMGY3ZjFiYWVjKSwKKyAgICAgQyhiOWUwZDQxNWI0ZWJkNTM0KSwgQyhj
OTdjMmEyN2VmYWEzM2Q3KSwgQyg1OTFjZGIzNWY4NGVmOWRhKSwKKyAgICAgQyhhNTdkMDJkMGU4
ZTM3NTZjKSwgQyhiOWUwZDQxNWI0ZWJkNTM0KSwgQyhjOTdjMmEyN2VmYWEzM2Q3KSwKKyAgICAg
Qyg1OTFjZGIzNWY4NGVmOWRhKSwgQyhhNTdkMDJkMGU4ZTM3NTZjKSwgQygyM2Y1NWYxMmQ3YzVj
ODdiKSwKKyAgICAgQyg0YzdjYTBmZTIzMjIxMTAxKSwgQyhkYmMzMDIwNDgwMzM0NTY0KSwgQyhk
OTg1OTkyZjMyYzIzNmIxKSwKKyAgICAgQyhlZTliYWUyNSl9LAorICAgIHtDKDdhMWQyZTk2OTM0
ZjYxZiksIEMoZWIxNzYwYWU2YWY3ZDk2MSksIEMoODg3ZWIwZGEwNjMwMDVkZiksCisgICAgIEMo
MjIyOGQ2NzI1ZTMxYjhhYiksIEMoOWI5OGY3ZTRkMDE0MmU3MCksIEMoYjZhOGMyMTE1YjhlMGZl
NyksCisgICAgIEMoYjU5MWUyZjVhYjliOTRiMSksIEMoMjIyOGQ2NzI1ZTMxYjhhYiksIEMoOWI5
OGY3ZTRkMDE0MmU3MCksCisgICAgIEMoYjZhOGMyMTE1YjhlMGZlNyksIEMoYjU5MWUyZjVhYjli
OTRiMSksIEMoNmMxZmVhYTgwNjUzMThlMCksCisgICAgIEMoNGU3ZTJjYTIxYzJlODFmYiksIEMo
ZTlmZTVkOGNlNzk5M2M0NSksIEMoZWU0MTFmYTJmMTJjZjhkZiksCisgICAgIEMoYjY2ZWRmMTAp
fSwKKyAgICB7Qyg4YmU1M2Q0NjZkNDcyOGYyKSwgQyg4NmE1YWM4ZTBkNDE2NjQwKSwgQyg5ODRh
YTQ2NGNkYjVjOGJiKSwKKyAgICAgQyg4NzA0OWU2OGY1ZDM4ZTU5KSwgQyg3ZDhjZTQ0ZWM2YmQ3
NzUxKSwgQyhjYzI4ZDA4YWI0MTQ4MzljKSwKKyAgICAgQyg2YzhmMGJkMzRmZTg0M2UzKSwgQyg4
NzA0OWU2OGY1ZDM4ZTU5KSwgQyg3ZDhjZTQ0ZWM2YmQ3NzUxKSwKKyAgICAgQyhjYzI4ZDA4YWI0
MTQ4MzljKSwgQyg2YzhmMGJkMzRmZTg0M2UzKSwgQyhiODQ5NmRjZGMwMWYzZTQ3KSwKKyAgICAg
QygyZjAzMTI1YzI4MmFjMjYpLCBDKDgyYTg3OTdiYTNmNWVmMDcpLCBDKDdjOTc3YTRkMTBiZjUy
YjgpLCBDKGQ2MjA5NzM3KX0sCisgICAge0MoODI5Njc3ZWIwM2FiZjA0MiksIEMoNDNjYWQwMDRi
NmJjMmMwKSwgQyhmMmYyMjQ3NTY4MDM5NzFhKSwKKyAgICAgQyg5OGQwZGJmNzk2NDgwMTg3KSwg
QyhmYmNiNWYzZTFiZWY1NzQyKSwgQyg1YWYyYTA0NjNiZjZlOTIxKSwKKyAgICAgQyhhZDk1NTVi
ZjAxMjBiM2EzKSwgQyg5OGQwZGJmNzk2NDgwMTg3KSwgQyhmYmNiNWYzZTFiZWY1NzQyKSwKKyAg
ICAgQyg1YWYyYTA0NjNiZjZlOTIxKSwgQyhhZDk1NTViZjAxMjBiM2EzKSwgQygyODNlMzliM2Rj
OTlmNDQ3KSwKKyAgICAgQyhiZWRhYTFhNGEwMjUwYzI4KSwgQyg5ZDUwNTQ2NjI0ZmY5YTU3KSwg
Qyg0YWJhZjUyM2QxYzA5MGY2KSwgQyhiOTk0YTg4KX0sCisgICAge0MoNzU0NDM1YmFlMzQ5NmZj
KSwgQyg1NzA3ZmMwMDZmMDk0ZGNmKSwgQyg4OTUxYzg2YWIxOWQ4ZTQwKSwKKyAgICAgQyg1N2M1
MjA4ZThmMDIxYTc3KSwgQyhmNzY1M2ZiYjY5Y2Q5Mjc2KSwgQyhhNDg0NDEwYWYyMWQ3NWNiKSwK
KyAgICAgQyhmMTliNjg0NGIzZDYyN2U4KSwgQyg1N2M1MjA4ZThmMDIxYTc3KSwgQyhmNzY1M2Zi
YjY5Y2Q5Mjc2KSwKKyAgICAgQyhhNDg0NDEwYWYyMWQ3NWNiKSwgQyhmMTliNjg0NGIzZDYyN2U4
KSwgQyhmMzc0MDBmYzNmZmQ5NTE0KSwKKyAgICAgQygzNmFlMGQ4MjE3MzRlZGZkKSwgQyg1ZjM3
ODIwYWYxZjFmMzA2KSwgQyhiZTYzN2Q0MGU2YTVhZDApLCBDKGEwNWQ0M2MwKX0sCisgICAge0Mo
ZmRhOTg3N2VhOGUzODA1ZiksIEMoMzFlODY4YjZmZmQ1MjFiNyksIEMoYjA4YzkwNjgxZmI2YTBm
ZCksCisgICAgIEMoNjgxMTBhN2Y4M2Y1ZDNmZiksIEMoNmQ3N2UwNDU5MDFiODVhOCksIEMoODRl
ZjY4MTExMzAzNmQ4YiksCisgICAgIEMoM2I5ZjhlMzkyOGY1NjE2MCksIEMoNjgxMTBhN2Y4M2Y1
ZDNmZiksIEMoNmQ3N2UwNDU5MDFiODVhOCksCisgICAgIEMoODRlZjY4MTExMzAzNmQ4YiksIEMo
M2I5ZjhlMzkyOGY1NjE2MCksIEMoZmM4YjdmNTZjMTMwODM1KSwKKyAgICAgQyhhMTFmM2U4MDA2
MzhlODQxKSwgQyhkOTU3MjI2N2Y1Y2YyOGMxKSwgQyg3ODk3YzgxNDk4MDNmMmFhKSwKKyAgICAg
QyhjNzlmNzNhOCl9LAorICAgIHtDKDJlMzZmNTIzY2E4ZjVlYjUpLCBDKDhiMjI5MzJmODliMjc1
MTMpLCBDKDMzMWNkNmVjYmZhZGMxYmIpLAorICAgICBDKGQxYmZlNGRmMTJiMDRjYmYpLCBDKGY1
OGMxNzI0M2ZkNjM4NDIpLCBDKDNhNDUzY2RiYTgwYTYwYWYpLAorICAgICBDKDU3MzdiMmNhNzQ3
MGVhOTUpLCBDKGQxYmZlNGRmMTJiMDRjYmYpLCBDKGY1OGMxNzI0M2ZkNjM4NDIpLAorICAgICBD
KDNhNDUzY2RiYTgwYTYwYWYpLCBDKDU3MzdiMmNhNzQ3MGVhOTUpLCBDKDU0ZDQ0YTNmNDQ3NzAz
MGMpLAorICAgICBDKDgxNjhlMDJkNDg2OWFhN2YpLCBDKDc3ZjM4M2ExNzc3ODU1OWQpLCBDKDk1
ZTE3MzdkNzdhMjY4ZmMpLAorICAgICBDKGE0OTBhZmY1KX0sCisgICAge0MoMjFhMzc4ZWY3Njgy
ODIwOCksIEMoYTVjMTMwMzdmYTg0MWRhMiksIEMoNTA2ZDIyYTUzZmJlOTgxMiksCisgICAgIEMo
NjFjOWM5NWQ5MTAxN2RhNSksIEMoMTZmN2M4M2JhNjhmNTI3OSksIEMoOWMwNjE5YjA4MDhkMDVm
NyksCisgICAgIEMoODNjMTE3Y2U0ZTZiNzBhMyksIEMoNjFjOWM5NWQ5MTAxN2RhNSksIEMoMTZm
N2M4M2JhNjhmNTI3OSksCisgICAgIEMoOWMwNjE5YjA4MDhkMDVmNyksIEMoODNjMTE3Y2U0ZTZi
NzBhMyksIEMoY2ZiNGM4YWY3ZmQwMTQxMyksCisgICAgIEMoZmRlZjA0ZTYwMmU3MjI5NiksIEMo
ZWQ2MTI0ZDMzNzg4OWIxKSwgQyg0OTE5Yzg2NzA3YjgzMGRhKSwgQyhkZmFkNjViNCl9LAorICAg
IHtDKGNjZGQ1NjAwMDU0YjE2Y2EpLCBDKGY3ODg0NmU4NDIwNGNiN2IpLCBDKDFmOWZhZWM4MmMy
NGVhYzkpLAorICAgICBDKDU4NjM0MDA0YzdiMmQxOWEpLCBDKDI0YmI1ZjUxZWQzYjkwNzMpLCBD
KDQ2NDA5ZGUwMTgwMzNkMDApLAorICAgICBDKDRhOTgwNWVlZDVhYzgwMmUpLCBDKDU4NjM0MDA0
YzdiMmQxOWEpLCBDKDI0YmI1ZjUxZWQzYjkwNzMpLAorICAgICBDKDQ2NDA5ZGUwMTgwMzNkMDAp
LCBDKDRhOTgwNWVlZDVhYzgwMmUpLCBDKGUxOGRlOGRiMzA2YmFmODIpLAorICAgICBDKDQ2YmJm
NzVmMWZhMDI1ZmYpLCBDKDVmYWYyZmIwOWJlMDk0ODcpLCBDKDNmYmM2MmJkNGU1NThmYjMpLCBD
KDFkMDdkZmIpfSwKKyAgICB7Qyg3ODU0NDY4ZjRlMGNhYmQwKSwgQygzYTNmNmI0ZjA5OGQwNjky
KSwgQyhhZTI0MjNlYzc3OTlkMzBkKSwKKyAgICAgQygyOWMzNTI5ZWIxNjVlZWJhKSwgQyg0NDNk
ZTM3MDNiNjU3YzM1KSwgQyg2NmFjYmNlMzFhZTFiYzhkKSwKKyAgICAgQygxYWNjOTllZmZlMWQ1
NDdlKSwgQygyOWMzNTI5ZWIxNjVlZWJhKSwgQyg0NDNkZTM3MDNiNjU3YzM1KSwKKyAgICAgQyg2
NmFjYmNlMzFhZTFiYzhkKSwgQygxYWNjOTllZmZlMWQ1NDdlKSwgQyhjZjA3ZjhhNTc5MDY1NzNk
KSwKKyAgICAgQygzMWJhZmIwYmJiOWE4NmU3KSwgQyg0MGM2OTQ5MjcwMmE5MzQ2KSwgQyg3ZGY2
MWZkYWEwYjg1OGFmKSwKKyAgICAgQyg0MTZkZjlhMCl9LAorICAgIHtDKDdmODhkYjUzNDZkOGY5
OTcpLCBDKDg4ZWFjOWFhY2M2NTM3OTgpLCBDKDY4YTRkMDI5NWY4ZWVmYTEpLAorICAgICBDKGFl
NTljYTg2ZjRjMzMyM2QpLCBDKDI1OTA2YzA5OTA2ZDVjNGMpLCBDKDhkZDJhYTBjMGE2NTg0YWUp
LAorICAgICBDKDIzMmE3ZDk2YjM4ZjQwZTkpLCBDKGFlNTljYTg2ZjRjMzMyM2QpLCBDKDI1OTA2
YzA5OTA2ZDVjNGMpLAorICAgICBDKDhkZDJhYTBjMGE2NTg0YWUpLCBDKDIzMmE3ZDk2YjM4ZjQw
ZTkpLCBDKDg5ODZlZTAwYTJlZDAwNDIpLAorICAgICBDKGM0OWFlN2U0MjhjOGE3ZDEpLCBDKGI3
ZGQ4MjgwNzEzYWM5YzIpLCBDKGUwMTg3MjBhZWQxZWJjMjgpLAorICAgICBDKDFmOGZiOWNjKX0s
CisgICAge0MoYmIzZmI1ZmIwMWQ2MGZjZiksIEMoMWI3Y2MwODQ3YTIxNWViNiksIEMoMTI0NmM5
OTQ0Mzc5OTBhMSksCisgICAgIEMoZDRlZGM5NTRjMDdjZDhmMyksIEMoMjI0ZjQ3ZTdjMDBhMzBh
YiksIEMoZDVhZDdhZDdmNDFlZjBjNiksCisgICAgIEMoNTllMDg5MjgxZDg2OWZkNyksIEMoZDRl
ZGM5NTRjMDdjZDhmMyksIEMoMjI0ZjQ3ZTdjMDBhMzBhYiksCisgICAgIEMoZDVhZDdhZDdmNDFl
ZjBjNiksIEMoNTllMDg5MjgxZDg2OWZkNyksIEMoZjI5MzQwZDA3YTE0YjZmMSksCisgICAgIEMo
Yzg3YzVlZjc2ZDljNGVmMyksIEMoNDYzMTE4Nzk0MTkzYTlhKSwgQygyOTIyZGNiMDU0MGYwZGJj
KSwgQyg3YWJmNDhlMyl9LAorICAgIHtDKDJlNzgzZTE3NjFhY2Q4NGQpLCBDKDM5MTU4MDQyYmFj
OTc1YTApLCBDKDFjZDIxYzVhODA3MTE4OGQpLAorICAgICBDKGIxYjdlYzQ0ZjkzMDIxNzYpLCBD
KDVjYjQ3NjQ1MGRjMGMyOTcpLCBDKGRjNWVmNjUyNTIxZWY2YTIpLAorICAgICBDKDNjYzc5YTll
MzM0ZTFmODQpLCBDKGIxYjdlYzQ0ZjkzMDIxNzYpLCBDKDVjYjQ3NjQ1MGRjMGMyOTcpLAorICAg
ICBDKGRjNWVmNjUyNTIxZWY2YTIpLCBDKDNjYzc5YTllMzM0ZTFmODQpLCBDKDc2OWUyYTI4M2Ri
Y2M2NTEpLAorICAgICBDKDlmMjRiMTA1Yzg1MTFkM2YpLCBDKGMzMWMxNTU3NWRlMmYyN2UpLCBD
KGVjZmVjZjMyYzNhZTJkNjYpLAorICAgICBDKGRlYTRlM2RkKX0sCisgICAge0MoMzkyMDU4MjUx
Y2YyMmFjYyksIEMoOTQ0ZWM0NDc1ZWFkNDYyMCksIEMoYjMzMGExMGI1Y2I5NDE2NiksCisgICAg
IEMoNTRiYzliZWU3Y2JlMTc2NyksIEMoNDg1ODIwYmRiZTQ0MjQzMSksIEMoNTRkNjEyMGVhMjk3
MmU5MCksCisgICAgIEMoZjQzN2EwMzQxZjI5YjcyYSksIEMoNTRiYzliZWU3Y2JlMTc2NyksIEMo
NDg1ODIwYmRiZTQ0MjQzMSksCisgICAgIEMoNTRkNjEyMGVhMjk3MmU5MCksIEMoZjQzN2EwMzQx
ZjI5YjcyYSksIEMoOGYzMDg4NWM3ODRkNTcwNCksCisgICAgIEMoYWE5NTM3NmIxNmM3OTA2YSks
IEMoZTgyNjkyOGNmYWY5M2RjMyksIEMoMjBlOGY1NGQxYzE2ZDdkOCksCisgICAgIEMoYzYwNjRm
MjIpfSwKKyAgICB7QyhhZGY1YzFlNWQ2NDE5OTQ3KSwgQygyYTk3NDdiYzY1OWQyOGFhKSwgQyg5
NWM1YjhjYjFmNWQ2MmMpLAorICAgICBDKDgwOTczZWE1MzJiMGYzMTApLCBDKGE0NzE4MjlhYTlj
MTdkZDkpLCBDKGMyZmYzNDc5Mzk0ODA0YWIpLAorICAgICBDKDZiZjQ0Zjg2MDY3NTM2MzYpLCBD
KDgwOTczZWE1MzJiMGYzMTApLCBDKGE0NzE4MjlhYTljMTdkZDkpLAorICAgICBDKGMyZmYzNDc5
Mzk0ODA0YWIpLCBDKDZiZjQ0Zjg2MDY3NTM2MzYpLCBDKDUxODRkMjk3M2U2ZGQ4MjcpLAorICAg
ICBDKDEyMWI5NjM2OWEzMzJkOWEpLCBDKDVjMjVkMzQ3NWFiNjllNTApLCBDKDI2ZDI5NjFkNjI4
ODQxNjgpLAorICAgICBDKDc0M2JlZDljKX0sCisgICAge0MoNmJjMWRiMmMyYmVlNWFiYSksIEMo
ZTYzYjBlZDYzNTMwNzM5OCksIEMoN2IyZWNhMTExZjMwZGJiYyksCisgICAgIEMoMjMwZDJiM2U0
N2YwOTgzMCksIEMoZWM4NjI0YTgyMWMxY2FmNCksIEMoZWE2ZWM0MTFjZGJmMWNiMSksCisgICAg
IEMoNWYzOGFlODJhZjM2NGUyNyksIEMoMjMwZDJiM2U0N2YwOTgzMCksIEMoZWM4NjI0YTgyMWMx
Y2FmNCksCisgICAgIEMoZWE2ZWM0MTFjZGJmMWNiMSksIEMoNWYzOGFlODJhZjM2NGUyNyksIEMo
YTUxOWVmNTE1ZWE3MTg3YyksCisgICAgIEMoNmJhZDVlZmE3ZWJhZTA1ZiksIEMoNzQ4YWJhY2Ix
MWE3NGE2MyksIEMoYTI4ZWVmOTYzZDEzOTZlYiksCisgICAgIEMoZmNlMjU0ZDUpfSwKKyAgICB7
QyhiMDBmODk4MjI5ZWZhNTA4KSwgQyg4M2I3NTkwYWQ3ZjY5ODVjKSwgQygyNzgwZTcwYTA1OTJl
NDFkKSwKKyAgICAgQyg3MTIyNDEzYmRiYzk0MDM1KSwgQyhlN2Y5MGZhZTMzYmY3NzYzKSwgQyg0
YjZiZDBmYjMwYjEyMzg3KSwKKyAgICAgQyg1NTczNTljMGM0NGY0OGNhKSwgQyg3MTIyNDEzYmRi
Yzk0MDM1KSwgQyhlN2Y5MGZhZTMzYmY3NzYzKSwKKyAgICAgQyg0YjZiZDBmYjMwYjEyMzg3KSwg
Qyg1NTczNTljMGM0NGY0OGNhKSwgQyhkNTY1NmMzZDZiYzVmMGQpLAorICAgICBDKDk4M2ZmOGU1
ZTc4NGRhOTkpLCBDKDYyODQ3OTY3MWI0NDViZiksIEMoZTE3OWExZTI3Y2U2OGY1ZCksIEMoZTQ3
ZWM5ZDEpfSwKKyAgICB7QyhiNTZlYjc2OWNlMGQ5YThjKSwgQyhjZTE5NjExN2JmYmNhZjA0KSwg
QyhiMjZjM2MzNzk3ZDY2MTY1KSwKKyAgICAgQyg1ZWQxMjMzOGY2MzBhYjc2KSwgQyhmYWIxOWZj
YjMxOTExNmQpLCBDKDE2N2Y1ZjQyYjUyMTcyNGIpLAorICAgICBDKGM0YWE1NmM0MDk1NjhkNzQp
LCBDKDVlZDEyMzM4ZjYzMGFiNzYpLCBDKGZhYjE5ZmNiMzE5MTE2ZCksCisgICAgIEMoMTY3ZjVm
NDJiNTIxNzI0YiksIEMoYzRhYTU2YzQwOTU2OGQ3NCksIEMoNzVmZmY0YjQyZjhlOTc3OCksCisg
ICAgIEMoOTQyMThmOTQ3MTBjMWVhMyksIEMoYjdiMDVlZmI3MzhiMDZhNiksIEMoODNmZmYyZGVh
YmY5Y2QzKSwgQygzMzRhMTQ1Yyl9LAorICAgIHtDKDcwYzA2Mzc2NzViOTQxNTApLCBDKDI1OWUx
NjY5MzA1YjBhMTUpLCBDKDQ2ZTFkZDlmZDM4N2E1OGQpLAorICAgICBDKGZjYTRlNWJjOTI5Mjc4
OGUpLCBDKGNkNTA5ZGMxZmFjY2U0MWMpLCBDKGJiYmE1NzVhNTlkODJmZSksCisgICAgIEMoNGUy
ZTcxYzE1YjQ1ZDRkMyksIEMoZmNhNGU1YmM5MjkyNzg4ZSksIEMoY2Q1MDlkYzFmYWNjZTQxYyks
CisgICAgIEMoYmJiYTU3NWE1OWQ4MmZlKSwgQyg0ZTJlNzFjMTViNDVkNGQzKSwgQyg1ZGM1NDU4
MmVhZDk5OWMpLAorICAgICBDKDcyNjEyZDE1NzE5NjNjNmYpLCBDKDMwMzE4YTlkMmQzZDE4Mjkp
LCBDKDc4NWRkMDBmNGNjOWM5YTApLAorICAgICBDKGFkZWMxZTNjKX0sCisgICAge0MoNzRjMGI4
YTY4MjFmYWFmZSksIEMoYWJhYzM5ZDc0OTEzNzBlNyksIEMoZmFmMGIyYTQ4YTRlNmFlZCksCisg
ICAgIEMoOTY3ZTk3MGRmOTY3M2QyYSksIEMoZDQ2NTI0N2NmZmE0MTVjMCksIEMoMzNhMWRmMGNh
MTEwNzcyMiksCisgICAgIEMoNDlmYzJhMTBhZGNlNGEzMiksIEMoOTY3ZTk3MGRmOTY3M2QyYSks
IEMoZDQ2NTI0N2NmZmE0MTVjMCksCisgICAgIEMoMzNhMWRmMGNhMTEwNzcyMiksIEMoNDlmYzJh
MTBhZGNlNGEzMiksIEMoYzU3MDdlMDc5YTI4NDMwOCksCisgICAgIEMoNTczMDI4MjY2NjM1ZGRh
NiksIEMoZjc4NmY1ZWVlNjEyN2ZhMCksIEMoYjMwZDc5Y2ViZmI1MTI2NiksCisgICAgIEMoZjZh
OWZiZjgpfSwKKyAgICB7Qyg1ZmI1ZTQ4YWM3YjdmYTRmKSwgQyhhOTYxNzBmMDhmNWFjYmM3KSwg
QyhiYmY1YzYzZDRmNTJhMWU1KSwKKyAgICAgQyg2Y2MwOWU2MDcwMDU2M2U5KSwgQyhkMThmMjMy
MjFlOTY0NzkxKSwgQyhmZmMyM2VlZWY3YWYyNmViKSwKKyAgICAgQyg2OTNhOTU0YTM2MjJhMzE1
KSwgQyg4MTUzMDhhMzJhOWIwZGFmKSwgQyhlZmIyYWIyN2JmNmZkMGJkKSwKKyAgICAgQyg5ZjFm
ZmMwOTg2MTExMTE4KSwgQyhmOWEzYWExNzc4ZWEzOTg1KSwgQyg2OThmZTU0YjJiOTM5MzNiKSwK
KyAgICAgQyhkYWNjMmIyODQwNGQwZjEwKSwgQyg4MTUzMDhhMzJhOWIwZGFmKSwgQyhlZmIyYWIy
N2JmNmZkMGJkKSwKKyAgICAgQyg1Mzk4MjEwYyl9LAorfTsKKwordm9pZCBUZXN0VW5jaGFuZ2lu
Zyhjb25zdCB1aW50NjRfdCogZXhwZWN0ZWQsIGludCBvZmZzZXQsIGludCBsZW4pIHsKKyAgY29u
c3QgdWludDEyOCB1ID0gQ2l0eUhhc2gxMjgoZGF0YSArIG9mZnNldCwgbGVuKTsKKyAgY29uc3Qg
dWludDEyOCB2ID0gQ2l0eUhhc2gxMjhXaXRoU2VlZChkYXRhICsgb2Zmc2V0LCBsZW4sIGtTZWVk
MTI4KTsKKyAgRVhQRUNUX0VRKGV4cGVjdGVkWzBdLCBDaXR5SGFzaDY0KGRhdGEgKyBvZmZzZXQs
IGxlbikpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbMTVdLCBDaXR5SGFzaDMyKGRhdGEgKyBvZmZz
ZXQsIGxlbikpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbMV0sIENpdHlIYXNoNjRXaXRoU2VlZChk
YXRhICsgb2Zmc2V0LCBsZW4sIGtTZWVkMCkpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbMl0sCisg
ICAgICAgICAgICBDaXR5SGFzaDY0V2l0aFNlZWRzKGRhdGEgKyBvZmZzZXQsIGxlbiwga1NlZWQw
LCBrU2VlZDEpKTsKKyAgRVhQRUNUX0VRKGV4cGVjdGVkWzNdLCBVaW50MTI4TG93NjQodSkpOwor
ICBFWFBFQ1RfRVEoZXhwZWN0ZWRbNF0sIFVpbnQxMjhIaWdoNjQodSkpOworICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRbNV0sIFVpbnQxMjhMb3c2NCh2KSk7CisgIEVYUEVDVF9FUShleHBlY3RlZFs2XSwg
VWludDEyOEhpZ2g2NCh2KSk7CisjaWZkZWYgX19TU0U0XzJfXworICBjb25zdCB1aW50MTI4IHkg
PSBDaXR5SGFzaENyYzEyOChkYXRhICsgb2Zmc2V0LCBsZW4pOworICBjb25zdCB1aW50MTI4IHog
PSBDaXR5SGFzaENyYzEyOFdpdGhTZWVkKGRhdGEgKyBvZmZzZXQsIGxlbiwga1NlZWQxMjgpOwor
ICB1aW50NjRfdCBjcmMyNTZfcmVzdWx0c1s0XTsKKyAgQ2l0eUhhc2hDcmMyNTYoZGF0YSArIG9m
ZnNldCwgbGVuLCBjcmMyNTZfcmVzdWx0cyk7CisgIEVYUEVDVF9FUShleHBlY3RlZFs3XSwgVWlu
dDEyOExvdzY0KHkpKTsKKyAgRVhQRUNUX0VRKGV4cGVjdGVkWzhdLCBVaW50MTI4SGlnaDY0KHkp
KTsKKyAgRVhQRUNUX0VRKGV4cGVjdGVkWzldLCBVaW50MTI4TG93NjQoeikpOworICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRbMTBdLCBVaW50MTI4SGlnaDY0KHopKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCA0OyBpKyspIHsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRbMTEgKyBpXSwgY3JjMjU2X3Jlc3Vs
dHNbaV0pOworICB9CisjZW5kaWYKK30KKworVEVTVChDaXR5SGFzaFRlc3QsIFVuY2hhbmdpbmcp
IHsKKyAgc2V0dXAoKTsKKyAgaW50IGkgPSAwOworICBmb3IgKDsgaSA8IGtUZXN0U2l6ZSAtIDE7
IGkrKykgeworICAgIFRlc3RVbmNoYW5naW5nKHRlc3RkYXRhW2ldLCBpICogaSwgaSk7CisgIH0K
KyAgVGVzdFVuY2hhbmdpbmcodGVzdGRhdGFbaV0sIDAsIGtEYXRhU2l6ZSk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSBoYXNoX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNoLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNo
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiZjY0MDk2ZTdlYWEzYjM0NmVkMmYyYTIyZGYyY2QyYThlNzE1NzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2hhc2guY2MKQEAgLTAsMCAr
MSwyMyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1
ZGUgImFic2wvaGFzaC9pbnRlcm5hbC9oYXNoLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSBoYXNoX2ludGVybmFsIHsKKworQUJTTF9DT05TVF9JTklUIGNvbnN0IHZvaWQqIGNvbnN0
IENpdHlIYXNoU3RhdGU6OmtTZWVkID0gJmtTZWVkOworCit9ICAvLyBuYW1lc3BhY2UgaGFzaF9p
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50
ZXJuYWwvaGFzaC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNoLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgy
MTdkMmZlNzYwMDAzY2I4M2U4YTMxN2E1OTE4NWU4MmE3MzBmNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5oCkBAIC0wLDAgKzEsODg3IEBACisvLyBDb3B5cmln
aHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyBGaWxlOiBoYXNoLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworI2lmbmRlZiBB
QlNMX0hBU0hfSU5URVJOQUxfSEFTSF9IXworI2RlZmluZSBBQlNMX0hBU0hfSU5URVJOQUxfSEFT
SF9IXworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUg
PGNtYXRoPgorI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8ZGVxdWU+CisjaW5jbHVkZSA8
Zm9yd2FyZF9saXN0PgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8aXRlcmF0b3I+
CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8bWFwPgorI2lu
Y2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1
ZGUgPHR1cGxlPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+Cisj
aW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2VuZGlhbi5o
IgorI2luY2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
Zml4ZWRfYXJyYXkuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNs
dWRlICJhYnNsL251bWVyaWMvaW50MTI4LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmlu
Z192aWV3LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFi
c2wvdHlwZXMvdmFyaWFudC5oIgorI2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5LmgiCisj
aW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL2NpdHkuaCIKKworbmFtZXNwYWNlIGFic2wgewor
bmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgeworCisvLyBIYXNoU3RhdGVCYXNlCisvLworLy8gQSBo
YXNoIHN0YXRlIG9iamVjdCByZXByZXNlbnRzIGFuIGludGVybWVkaWF0ZSBzdGF0ZSBpbiB0aGUg
Y29tcHV0YXRpb24KKy8vIG9mIGFuIHVuc3BlY2lmaWVkIGhhc2ggYWxnb3JpdGhtLiBgSGFzaFN0
YXRlQmFzZWAgcHJvdmlkZXMgYSBDUlRQIHN0eWxlCisvLyBiYXNlIGNsYXNzIGZvciBoYXNoIHN0
YXRlIGltcGxlbWVudGF0aW9ucy4gRGV2ZWxvcGVycyBhZGRpbmcgdHlwZSBzdXBwb3J0CisvLyBm
b3IgYGFic2w6Okhhc2hgIHNob3VsZCBub3QgcmVseSBvbiBhbnkgcGFydHMgb2YgdGhlIHN0YXRl
IG9iamVjdCBvdGhlciB0aGFuCisvLyB0aGUgZm9sbG93aW5nIG1lbWJlciBmdW5jdGlvbnM6Cisv
LworLy8gICAqIEhhc2hTdGF0ZUJhc2U6OmNvbWJpbmUoKQorLy8gICAqIEhhc2hTdGF0ZUJhc2U6
OmNvbWJpbmVfY29udGlndW91cygpCisvLworLy8gQSBkZXJpdmVkIGhhc2ggc3RhdGUgY2xhc3Mg
b2YgdHlwZSBgSGAgbXVzdCBwcm92aWRlIGEgc3RhdGljIG1lbWJlciBmdW5jdGlvbgorLy8gd2l0
aCBhIHNpZ25hdHVyZSBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmc6CisvLworLy8gICAgYHN0YXRp
YyBIIGNvbWJpbmVfY29udGlndW91cyhIIHN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6
ZV90KWAuCisvLworLy8gYEhhc2hTdGF0ZUJhc2VgIHdpbGwgcHJvdmlkZSBhIGNvbXBsZXRlIGlt
cGxlbWVudGF0aW9ucyBmb3IgYSBoYXNoIHN0YXRlCisvLyBvYmplY3QgaW4gdGVybXMgb2YgdGhp
cyBtZXRob2QuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIC8vIFVzZSBDUlRQIHRvIGRlZmlu
ZSB5b3VyIGRlcml2ZWQgY2xhc3MuCisvLyAgIHN0cnVjdCBNeUhhc2hTdGF0ZSA6IEhhc2hTdGF0
ZUJhc2U8TXlIYXNoU3RhdGU+IHsKKy8vICAgICAgIHN0YXRpYyBIIGNvbWJpbmVfY29udGlndW91
cyhIIHN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKKy8vICAgICAgIHVzaW5n
IE15SGFzaFN0YXRlOjpIYXNoU3RhdGVCYXNlOjpjb21iaW5lOworLy8gICAgICAgdXNpbmcgTXlI
YXNoU3RhdGU6Okhhc2hTdGF0ZUJhc2U6OmNvbWJpbmVfY29udGlndW91czsKKy8vICAgfTsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBIPgorY2xhc3MgSGFzaFN0YXRlQmFzZSB7CisgcHVibGljOgorICAv
LyBIYXNoU3RhdGVCYXNlOjpjb21iaW5lKCkKKyAgLy8KKyAgLy8gQ29tYmluZXMgYW4gYXJiaXRy
YXJ5IG51bWJlciBvZiB2YWx1ZXMgaW50byBhIGhhc2ggc3RhdGUsIHJldHVybmluZyB0aGUKKyAg
Ly8gdXBkYXRlZCBzdGF0ZS4KKyAgLy8KKyAgLy8gRWFjaCBvZiB0aGUgdmFsdWUgdHlwZXMgYFRg
IG11c3QgYmUgc2VwYXJhdGVseSBoYXNoYWJsZSBieSB0aGUgQWJzZWlsCisgIC8vIGhhc2hpbmcg
ZnJhbWV3b3JrLgorICAvLworICAvLyBOT1RFOgorICAvLworICAvLyAgIHN0YXRlID0gSDo6Y29t
YmluZShzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZTEsIHZhbHVlMiwgdmFsdWUzKTsKKyAgLy8KKyAg
Ly8gaXMgZ3VhcmFudGVlZCB0byBwcm9kdWNlIHRoZSBzYW1lIGhhc2ggZXhwYW5zaW9uIGFzOgor
ICAvLworICAvLyAgIHN0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZTEp
OworICAvLyAgIHN0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZTIpOwor
ICAvLyAgIHN0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZTMpOworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gVHM+CisgIHN0YXRpYyBIIGNvbWJpbmUo
SCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUsIGNvbnN0IFRzJi4uLiB2YWx1ZXMpOworICBzdGF0aWMg
SCBjb21iaW5lKEggc3RhdGUpIHsgcmV0dXJuIHN0YXRlOyB9CisKKyAgLy8gSGFzaFN0YXRlQmFz
ZTo6Y29tYmluZV9jb250aWd1b3VzKCkKKyAgLy8KKyAgLy8gQ29tYmluZXMgYSBjb250aWd1b3Vz
IGFycmF5IG9mIGBzaXplYCBlbGVtZW50cyBpbnRvIGEgaGFzaCBzdGF0ZSwgcmV0dXJuaW5nCisg
IC8vIHRoZSB1cGRhdGVkIHN0YXRlLgorICAvLworICAvLyBOT1RFOgorICAvLworICAvLyAgIHN0
YXRlID0gSDo6Y29tYmluZV9jb250aWd1b3VzKHN0ZDo6bW92ZShzdGF0ZSksIGRhdGEsIHNpemUp
OworICAvLworICAvLyBpcyBOT1QgZ3VhcmFudGVlZCB0byBwcm9kdWNlIHRoZSBzYW1lIGhhc2gg
ZXhwYW5zaW9uIGFzIGEgZm9yLWxvb3AgKGl0IG1heQorICAvLyBwZXJmb3JtIGludGVybmFsIG9w
dGltaXphdGlvbnMpLiAgSWYgeW91IG5lZWQgdGhpcyBndWFyYW50ZWUsIHVzZSB0aGUKKyAgLy8g
Zm9yLWxvb3AgaW5zdGVhZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBIIGNv
bWJpbmVfY29udGlndW91cyhIIHN0YXRlLCBjb25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSk7Cit9
OworCisvLyBpc191bmlxdWVseV9yZXByZXNlbnRlZAorLy8KKy8vIGBpc191bmlxdWVseV9yZXBy
ZXNlbnRlZDxUPmAgaXMgYSB0cmFpdCBjbGFzcyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIGBUYAor
Ly8gaXMgdW5pcXVlbHkgcmVwcmVzZW50ZWQuCisvLworLy8gQSB0eXBlIGlzICJ1bmlxdWVseSBy
ZXByZXNlbnRlZCIgaWYgdHdvIGVxdWFsIHZhbHVlcyBvZiB0aGF0IHR5cGUgYXJlCisvLyBndWFy
YW50ZWVkIHRvIGhhdmUgdGhlIHNhbWUgYnl0ZXMgaW4gdGhlaXIgdW5kZXJseWluZyBzdG9yYWdl
LiBJbiBvdGhlcgorLy8gd29yZHMsIGlmIGBhID09IGJgLCB0aGVuIGBtZW1jbXAoJmEsICZiLCBz
aXplb2YoVCkpYCBpcyBndWFyYW50ZWVkIHRvIGJlCisvLyB6ZXJvLiBUaGlzIHByb3BlcnR5IGNh
bm5vdCBiZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5LCBzbyB0aGlzIHRyYWl0IGlzIGZhbHNlCisv
LyBieSBkZWZhdWx0LCBidXQgY2FuIGJlIHNwZWNpYWxpemVkIGJ5IHR5cGVzIHRoYXQgd2lzaCB0
byBhc3NlcnQgdGhhdCB0aGV5IGFyZQorLy8gdW5pcXVlbHkgcmVwcmVzZW50ZWQuIFRoaXMgbWFr
ZXMgdGhlbSBlbGlnaWJsZSBmb3IgY2VydGFpbiBvcHRpbWl6YXRpb25zLgorLy8KKy8vIElmIHlv
dSBoYXZlIGFueSBkb3VidCB3aGF0c29ldmVyLCBkbyBub3Qgc3BlY2lhbGl6ZSB0aGlzIHRlbXBs
YXRlLgorLy8gVGhlIGRlZmF1bHQgaXMgY29tcGxldGVseSBzYWZlLCBhbmQgbWVyZWx5IGRpc2Fi
bGVzIHNvbWUgb3B0aW1pemF0aW9ucworLy8gdGhhdCB3aWxsIG5vdCBtYXR0ZXIgZm9yIG1vc3Qg
dHlwZXMuIFNwZWNpYWxpemluZyB0aGlzIHRlbXBsYXRlLAorLy8gb24gdGhlIG90aGVyIGhhbmQs
IGNhbiBiZSB2ZXJ5IGhhemFyZG91cy4KKy8vCisvLyBUbyBiZSB1bmlxdWVseSByZXByZXNlbnRl
ZCwgYSB0eXBlIG11c3Qgbm90IGhhdmUgbXVsdGlwbGUgd2F5cyBvZgorLy8gcmVwcmVzZW50aW5n
IHRoZSBzYW1lIHZhbHVlOyBmb3IgZXhhbXBsZSwgZmxvYXQgYW5kIGRvdWJsZSBhcmUgbm90Cisv
LyB1bmlxdWVseSByZXByZXNlbnRlZCwgYmVjYXVzZSB0aGV5IGhhdmUgZGlzdGluY3QgcmVwcmVz
ZW50YXRpb25zIGZvcgorLy8gKzAgYW5kIC0wLiBGdXJ0aGVybW9yZSwgdGhlIHR5cGUncyBieXRl
IHJlcHJlc2VudGF0aW9uIG11c3QgY29uc2lzdAorLy8gc29sZWx5IG9mIHVzZXItY29udHJvbGxl
ZCBkYXRhLCB3aXRoIG5vIHBhZGRpbmcgYml0cyBhbmQgbm8gY29tcGlsZXItCisvLyBjb250cm9s
bGVkIGRhdGEgc3VjaCBhcyB2cHRycyBvciBzYW5pdGl6ZXIgbWV0YWRhdGEuIFRoaXMgaXMgdXN1
YWxseQorLy8gdmVyeSBkaWZmaWN1bHQgdG8gZ3VhcmFudGVlLCBiZWNhdXNlIGluIG1vc3QgY2Fz
ZXMgdGhlIGNvbXBpbGVyIGNhbgorLy8gaW5zZXJ0IGRhdGEgYW5kIHBhZGRpbmcgYml0cyBhdCBp
dHMgb3duIGRpc2NyZXRpb24uCisvLworLy8gSWYgeW91IHNwZWNpYWxpemUgdGhpcyB0ZW1wbGF0
ZSBmb3IgYSB0eXBlIGBUYCwgeW91IG11c3QgZG8gc28gaW4gdGhlIGZpbGUKKy8vIHRoYXQgZGVm
aW5lcyB0aGF0IHR5cGUgKG9yIGluIHRoaXMgZmlsZSkuIElmIHlvdSBkZWZpbmUgdGhhdCBzcGVj
aWFsaXphdGlvbgorLy8gYW55d2hlcmUgZWxzZSwgYGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkPFQ+
YCBjb3VsZCBoYXZlIGRpZmZlcmVudCBtZWFuaW5ncworLy8gaW4gZGlmZmVyZW50IHBsYWNlcy4K
Ky8vCisvLyBUaGUgRW5hYmxlIHBhcmFtZXRlciBpcyBtZWFuaW5nbGVzczsgaXQgaXMgcHJvdmlk
ZWQgYXMgYSBjb252ZW5pZW5jZSwKKy8vIHRvIHN1cHBvcnQgY2VydGFpbiBTRklOQUUgdGVjaG5p
cXVlcyB3aGVuIGRlZmluaW5nIHNwZWNpYWxpemF0aW9ucy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgorc3RydWN0IGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVk
IDogc3RkOjpmYWxzZV90eXBlIHt9OworCisvLyBpc191bmlxdWVseV9yZXByZXNlbnRlZDx1bnNp
Z25lZCBjaGFyPgorLy8KKy8vIHVuc2lnbmVkIGNoYXIgaXMgYSBzeW5vbnltIGZvciAiYnl0ZSIs
IHNvIGl0IGlzIGd1YXJhbnRlZWQgdG8gYmUKKy8vIHVuaXF1ZWx5IHJlcHJlc2VudGVkLgordGVt
cGxhdGUgPD4KK3N0cnVjdCBpc191bmlxdWVseV9yZXByZXNlbnRlZDx1bnNpZ25lZCBjaGFyPiA6
IHN0ZDo6dHJ1ZV90eXBlIHt9OworCisvLyBpc191bmlxdWVseV9yZXByZXNlbnRlZCBmb3Igbm9u
LXN0YW5kYXJkIGludGVncmFsIHR5cGVzCisvLworLy8gSW50ZWdyYWwgdHlwZXMgb3RoZXIgdGhh
biBib29sIHNob3VsZCBiZSB1bmlxdWVseSByZXByZXNlbnRlZCBvbiBhbnkKKy8vIHBsYXRmb3Jt
IHRoYXQgdGhpcyB3aWxsIHBsYXVzaWJseSBiZSBwb3J0ZWQgdG8uCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgSW50ZWdyYWw+CitzdHJ1Y3QgaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8CisgICAgSW50ZWdy
YWwsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8SW50ZWdyYWw+Ojp2
YWx1ZT46OnR5cGU+CisgICAgOiBzdGQ6OnRydWVfdHlwZSB7fTsKKworLy8gaXNfdW5pcXVlbHlf
cmVwcmVzZW50ZWQ8Ym9vbD4KKy8vCisvLwordGVtcGxhdGUgPD4KK3N0cnVjdCBpc191bmlxdWVs
eV9yZXByZXNlbnRlZDxib29sPiA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKworLy8gaGFzaF9ieXRl
cygpCisvLworLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBjb21iaW5lcyBgaGFzaF9zdGF0
ZWAgd2l0aCB0aGUgYnl0ZSByZXByZXNlbnRhdGlvbgorLy8gb2YgYHZhbHVlYC4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgorSCBoYXNoX2J5dGVzKEggaGFzaF9zdGF0ZSwgY29u
c3QgVCYgdmFsdWUpIHsKKyAgY29uc3QgdW5zaWduZWQgY2hhciogc3RhcnQgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmdmFsdWUpOworICByZXR1cm4gSDo6Y29tYmlu
ZV9jb250aWd1b3VzKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgc3RhcnQsIHNpemVvZih2YWx1ZSkp
OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWJzbEhhc2hWYWx1ZSBmb3IgQmFz
aWMgVHlwZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIE5vdGU6IERlZmF1bHQgYEFi
c2xIYXNoVmFsdWVgIGltcGxlbWVudGF0aW9ucyBsaXZlIGluIGBoYXNoX2ludGVybmFsYC4gVGhp
cworLy8gYWxsb3dzIHVzIHRvIGJsb2NrIGxleGljYWwgc2NvcGUgbG9va3VwIHdoZW4gZG9pbmcg
YW4gdW5xdWFsaWZpZWQgY2FsbCB0bworLy8gYEFic2xIYXNoVmFsdWVgIGJlbG93LiBVc2VyLWRl
ZmluZWQgaW1wbGVtZW50YXRpb25zIG9mIGBBYnNsSGFzaFZhbHVlYCBjYW4KKy8vIG9ubHkgYmUg
Zm91bmQgdmlhIEFETC4KKworLy8gQWJzbEhhc2hWYWx1ZSgpIGZvciBoYXNoaW5nIGJvb2wgdmFs
dWVzCisvLworLy8gV2UgdXNlIFNGSU5BRSB0byBlbnN1cmUgdGhhdCB0aGlzIG92ZXJsb2FkIG9u
bHkgYWNjZXB0cyBib29sLCBub3QgdHlwZXMgdGhhdAorLy8gYXJlIGNvbnZlcnRpYmxlIHRvIGJv
b2wuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgQj4KK3R5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxCLCBib29sPjo6dmFsdWUsIEg+Ojp0eXBlIEFic2xIYXNoVmFs
dWUoCisgICAgSCBoYXNoX3N0YXRlLCBCIHZhbHVlKSB7CisgIHJldHVybiBIOjpjb21iaW5lKHN0
ZDo6bW92ZShoYXNoX3N0YXRlKSwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4odmFsdWUgPyAxIDogMCkpOworfQorCisvLyBBYnNsSGFzaFZhbHVlKCkgZm9y
IGhhc2hpbmcgZW51bSB2YWx1ZXMKK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBFbnVt
PgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19lbnVtPEVudW0+Ojp2YWx1ZSwgSD46
OnR5cGUgQWJzbEhhc2hWYWx1ZSgKKyAgICBIIGhhc2hfc3RhdGUsIEVudW0gZSkgeworICAvLyBJ
biBwcmFjdGljZSwgd2UgY291bGQgYWxtb3N0IGNlcnRhaW5seSBqdXN0IGludm9rZSBoYXNoX2J5
dGVzIGRpcmVjdGx5LAorICAvLyBidXQgaXQncyBwb3NzaWJsZSB0aGF0IGEgc2FuaXRpemVyIG1p
Z2h0IG9uZSBkYXkgd2FudCB0bworICAvLyBzdG9yZSBkYXRhIGluIHRoZSB1bnVzZWQgYml0cyBv
ZiBhbiBlbnVtLiBUbyBhdm9pZCB0aGF0IHJpc2ssIHdlCisgIC8vIGNvbnZlcnQgdG8gdGhlIHVu
ZGVybHlpbmcgdHlwZSBiZWZvcmUgaGFzaGluZy4gSG9wZWZ1bGx5IHRoaXMgd2lsbCBnZXQKKyAg
Ly8gb3B0aW1pemVkIGF3YXk7IGlmIG5vdCwgd2UgY2FuIHJlb3BlbiBkaXNjdXNzaW9uIHdpdGgg
Yy10b29sY2hhaW4tdGVhbS4KKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3Rh
dGUpLAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVy
bHlpbmdfdHlwZTxFbnVtPjo6dHlwZT4oZSkpOworfQorLy8gQWJzbEhhc2hWYWx1ZSgpIGZvciBo
YXNoaW5nIGZsb2F0aW5nLXBvaW50IHZhbHVlcwordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVu
YW1lIEZsb2F0PgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2lu
dDxGbG9hdD46OnZhbHVlLCBIPjo6dHlwZQorQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIEZs
b2F0IHZhbHVlKSB7CisgIHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNoX2J5dGVzKHN0ZDo6bW92
ZShoYXNoX3N0YXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PT0gMCA/IDAgOiB2YWx1ZSk7Cit9CisKKy8vIExvbmcgZG91YmxlIGhhcyB0aGUgcHJvcGVydHkg
dGhhdCBpdCBtaWdodCBoYXZlIGV4dHJhIHVudXNlZCBieXRlcyBpbiBpdC4KKy8vIEZvciBleGFt
cGxlLCBpbiB4ODYgc2l6ZW9mKGxvbmcgZG91YmxlKT09MTYgYnV0IGl0IG9ubHkgcmVhbGx5IHVz
ZXMgODAtYml0cworLy8gb2YgaXQuIFRoaXMgbWVhbnMgd2UgY2FuJ3QgdXNlIGhhc2hfYnl0ZXMg
b24gYSBsb25nIGRvdWJsZSBhbmQgaGF2ZSB0bworLy8gY29udmVydCBpdCB0byBzb21ldGhpbmcg
ZWxzZSBmaXJzdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBIPgorSCBBYnNsSGFzaFZhbHVlKEggaGFz
aF9zdGF0ZSwgbG9uZyBkb3VibGUgdmFsdWUpIHsKKyAgY29uc3QgaW50IGNhdGVnb3J5ID0gc3Rk
OjpmcGNsYXNzaWZ5KHZhbHVlKTsKKyAgc3dpdGNoIChjYXRlZ29yeSkgeworICAgIGNhc2UgRlBf
SU5GSU5JVEU6CisgICAgICAvLyBBZGQgdGhlIHNpZ24gYml0IHRvIGRpZmZlcmVudGlhdGUgYmV0
d2VlbiArSW5mIGFuZCAtSW5mCisgICAgICBoYXNoX3N0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1v
dmUoaGFzaF9zdGF0ZSksIHN0ZDo6c2lnbmJpdCh2YWx1ZSkpOworICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIEZQX05BTjoKKyAgICBjYXNlIEZQX1pFUk86CisgICAgZGVmYXVsdDoKKyAgICAgIC8v
IENhdGVnb3J5IGlzIGVub3VnaCBmb3IgdGhlc2UuCisgICAgICBicmVhazsKKworICAgIGNhc2Ug
RlBfTk9STUFMOgorICAgIGNhc2UgRlBfU1VCTk9STUFMOgorICAgICAgLy8gV2UgY2FuJ3QgY29u
dmVydCBgdmFsdWVgIGRpcmVjdGx5IHRvIGRvdWJsZSBiZWNhdXNlIHRoaXMgd291bGQgaGF2ZQor
ICAgICAgLy8gdW5kZWZpbmVkIGJlaGF2aW9yIGlmIHRoZSB2YWx1ZSBpcyBvdXQgb2YgcmFuZ2Uu
CisgICAgICAvLyBzdGQ6OmZyZXhwIGdpdmVzIHVzIGEgdmFsdWUgaW4gdGhlIHJhbmdlICgtMSwg
LS41XSBvciBbLjUsIDEpIHRoYXQgaXMKKyAgICAgIC8vIGd1YXJhbnRlZWQgdG8gYmUgaW4gcmFu
Z2UgZm9yIGBkb3VibGVgLiBUaGUgdHJ1bmNhdGlvbiBpcworICAgICAgLy8gaW1wbGVtZW50YXRp
b24gZGVmaW5lZCwgYnV0IHRoYXQgd29ya3MgYXMgbG9uZyBhcyBpdCBpcyBkZXRlcm1pbmlzdGlj
LgorICAgICAgaW50IGV4cDsKKyAgICAgIGF1dG8gbWFudGlzc2EgPSBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHN0ZDo6ZnJleHAodmFsdWUsICZleHApKTsKKyAgICAgIGhhc2hfc3RhdGUgPSBIOjpjb21i
aW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgbWFudGlzc2EsIGV4cCk7CisgIH0KKworICByZXR1
cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIGNhdGVnb3J5KTsKK30KKworLy8g
QWJzbEhhc2hWYWx1ZSgpIGZvciBoYXNoaW5nIHBvaW50ZXJzCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
SCwgdHlwZW5hbWUgVD4KK0ggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIFQqIHB0cikgewor
ICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6aGFzaF9ieXRlcyhzdGQ6Om1vdmUoaGFzaF9zdGF0ZSks
IHB0cik7Cit9CisKKy8vIEFic2xIYXNoVmFsdWUoKSBmb3IgaGFzaGluZyBudWxscHRyX3QKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBIPgorSCBBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgc3RkOjpu
dWxscHRyX3QpIHsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBz
dGF0aWNfY2FzdDx2b2lkKj4obnVsbHB0cikpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8gQWJzbEhhc2hWYWx1ZSBmb3IgQ29tcG9zaXRlIFR5cGVzCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisvLyBpc19oYXNoYWJsZSgpCisvLworLy8gVHJhaXQgY2xhc3Mgd2hpY2ggcmV0
dXJucyB0cnVlIGlmIFQgaXMgaGFzaGFibGUgYnkgdGhlIGFic2w6Okhhc2ggZnJhbWV3b3JrLgor
Ly8gVXNlZCBmb3IgdGhlIEFic2xIYXNoVmFsdWUgaW1wbGVtZW50YXRpb25zIGZvciBjb21wb3Np
dGUgdHlwZXMgYmVsb3cuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19oYXNoYWJs
ZTsKKworLy8gQWJzbEhhc2hWYWx1ZSgpIGZvciBoYXNoaW5nIHBhaXJzCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8aXNfaGFzaGFibGU8VDE+Ojp2YWx1ZSAmJiBpc19oYXNoYWJsZTxUMj46OnZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgSD46OnR5cGUKK0Fic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRl
LCBjb25zdCBzdGQ6OnBhaXI8VDEsIFQyPiYgcCkgeworICByZXR1cm4gSDo6Y29tYmluZShzdGQ6
Om1vdmUoaGFzaF9zdGF0ZSksIHAuZmlyc3QsIHAuc2Vjb25kKTsKK30KKworLy8gaGFzaF90dXBs
ZSgpCisvLworLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBoYXNoaW5nIGEgdHVwbGUuIFRoZSB0aGly
ZCBhcmd1bWVudCBzaG91bGQKKy8vIGJlIGFuIGluZGV4X3NlcXVlbmNlIHJ1bm5pbmcgZnJvbSAw
IHRvIHR1cGxlX3NpemU8VHVwbGU+IC0gMS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFt
ZSBUdXBsZSwgc2l6ZV90Li4uIElzPgorSCBoYXNoX3R1cGxlKEggaGFzaF9zdGF0ZSwgY29uc3Qg
VHVwbGUmIHQsIGFic2w6OmluZGV4X3NlcXVlbmNlPElzLi4uPikgeworICByZXR1cm4gSDo6Y29t
YmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHN0ZDo6Z2V0PElzPih0KS4uLik7Cit9CisKKy8v
IEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgdHVwbGVzCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwg
dHlwZW5hbWUuLi4gVHM+CisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIFRoaXMgU0ZJTkFFIGdl
dHMgTVNWQyBjb25mdXNlZCB1bmRlciBzb21lIGNvbmRpdGlvbnMuIExldCdzIGp1c3QgZGlzYWJs
ZSBpdAorLy8gZm9yIG5vdy4KK0gKKyNlbHNlICAvLyBfTVNDX1ZFUgordHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8YWJzbDo6Y29uanVuY3Rpb248aXNfaGFzaGFibGU8VHM+Li4uPjo6dmFsdWUsIEg+
Ojp0eXBlCisjZW5kaWYgIC8vIF9NU0NfVkVSCitBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwg
Y29uc3Qgc3RkOjp0dXBsZTxUcy4uLj4mIHQpIHsKKyAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhh
c2hfdHVwbGUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhYnNsOjptYWtlX2luZGV4X3NlcXVlbmNlPHNpemVvZi4uLihUcyk+KCkp
OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWJzbEhhc2hWYWx1ZSBmb3IgUG9p
bnRlcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhh
c2hpbmcgdW5pcXVlX3B0cgordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEQ+CitIIEFic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBjb25zdCBzdGQ6OnVuaXF1ZV9w
dHI8VCwgRD4mIHB0cikgeworICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0
ZSksIHB0ci5nZXQoKSk7Cit9CisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgc2hhcmVk
X3B0cgordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+CitIIEFic2xIYXNoVmFsdWUo
SCBoYXNoX3N0YXRlLCBjb25zdCBzdGQ6OnNoYXJlZF9wdHI8VD4mIHB0cikgeworICByZXR1cm4g
SDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHB0ci5nZXQoKSk7Cit9CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsSGFzaFZhbHVlIGZvciBTdHJpbmctTGlrZSBUeXBl
cworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFzaGlu
ZyBzdHJpbmdzCisvLworLy8gQWxsIHRoZSBzdHJpbmctbGlrZSB0eXBlcyBzdXBwb3J0ZWQgaGVy
ZSBwcm92aWRlIHRoZSBzYW1lIGhhc2ggZXhwYW5zaW9uIGZvcgorLy8gdGhlIHNhbWUgY2hhcmFj
dGVyIHNlcXVlbmNlLiBUaGVzZSB0eXBlcyBhcmU6CisvLworLy8gIC0gYHN0ZDo6c3RyaW5nYCAo
YW5kIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIEE+IGZv
cgorLy8gICAgICBhbnkgYWxsb2NhdG9yIEEpCisvLyAgLSBgYWJzbDo6c3RyaW5nX3ZpZXdgIGFu
ZCBgc3RkOjpzdHJpbmdfdmlld2AKKy8vCisvLyBGb3Igc2ltcGxpY2l0eSwgd2UgY3VycmVudGx5
IHN1cHBvcnQgb25seSBgY2hhcmAgc3RyaW5ncy4gVGhpcyBzdXBwb3J0IG1heQorLy8gYmUgYnJv
YWRlbmVkLCBpZiBuZWNlc3NhcnksIGJ1dCB3aXRoIHNvbWUgY2F1dGlvbiAtIHRoaXMgb3Zlcmxv
YWQgd291bGQKKy8vIG1pc2JlaGF2ZSBpbiBjYXNlcyB3aGVyZSB0aGUgdHJhaXRzJyBgZXEoKWAg
bWVtYmVyIGlzbid0IGVxdWl2YWxlbnQgdG8gYD09YAorLy8gb24gdGhlIHVuZGVybHlpbmcgY2hh
cmFjdGVyIHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KK0ggQWJzbEhhc2hWYWx1ZShIIGhh
c2hfc3RhdGUsIGFic2w6OnN0cmluZ192aWV3IHN0cikgeworICByZXR1cm4gSDo6Y29tYmluZSgK
KyAgICAgIEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHN0ci5k
YXRhKCksIHN0ci5zaXplKCkpLAorICAgICAgc3RyLnNpemUoKSk7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLyBBYnNsSGFzaFZhbHVlIGZvciBTZXF1ZW5jZSBDb250YWluZXJzCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0
ZDo6YXJyYXkKK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBULCBzaXplX3QgTj4KK3R5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPGlzX2hhc2hhYmxlPFQ+Ojp2YWx1ZSwgSD46OnR5cGUgQWJz
bEhhc2hWYWx1ZSgKKyAgICBIIGhhc2hfc3RhdGUsIGNvbnN0IHN0ZDo6YXJyYXk8VCwgTj4mIGFy
cmF5KSB7CisgIHJldHVybiBIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3ZlKGhhc2hfc3Rh
dGUpLCBhcnJheS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXku
c2l6ZSgpKTsKK30KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFzaGluZyBzdGQ6OmRlcXVlCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQWxsb2NhdG9yPgordHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8aXNfaGFzaGFibGU8VD46OnZhbHVlLCBIPjo6dHlwZSBBYnNs
SGFzaFZhbHVlKAorICAgIEggaGFzaF9zdGF0ZSwgY29uc3Qgc3RkOjpkZXF1ZTxULCBBbGxvY2F0
b3I+JiBkZXF1ZSkgeworICAvLyBUT0RPKGdyb21lcik6IGludmVzdGlnYXRlIGEgbW9yZSBlZmZp
Y2llbnQgaW1wbGVtZW50YXRpb24gdGFraW5nCisgIC8vIGFkdmFudGFnZSBvZiB0aGUgY2h1bmsg
c3RydWN0dXJlLgorICBmb3IgKGNvbnN0IGF1dG8mIHQgOiBkZXF1ZSkgeworICAgIGhhc2hfc3Rh
dGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgdCk7CisgIH0KKyAgcmV0dXJu
IEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBkZXF1ZS5zaXplKCkpOworfQorCisv
LyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6Zm9yd2FyZF9saXN0Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSCwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQWxsb2NhdG9yPgordHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8aXNfaGFzaGFibGU8VD46OnZhbHVlLCBIPjo6dHlwZSBBYnNsSGFzaFZhbHVl
KAorICAgIEggaGFzaF9zdGF0ZSwgY29uc3Qgc3RkOjpmb3J3YXJkX2xpc3Q8VCwgQWxsb2NhdG9y
PiYgbGlzdCkgeworICBzaXplX3Qgc2l6ZSA9IDA7CisgIGZvciAoY29uc3QgVCYgdCA6IGxpc3Qp
IHsKKyAgICBoYXNoX3N0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHQp
OworICAgICsrc2l6ZTsKKyAgfQorICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9z
dGF0ZSksIHNpemUpOworfQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6bGlz
dAordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFsbG9jYXRvcj4K
K3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPGlzX2hhc2hhYmxlPFQ+Ojp2YWx1ZSwgSD46OnR5cGUg
QWJzbEhhc2hWYWx1ZSgKKyAgICBIIGhhc2hfc3RhdGUsIGNvbnN0IHN0ZDo6bGlzdDxULCBBbGxv
Y2F0b3I+JiBsaXN0KSB7CisgIGZvciAoY29uc3QgYXV0byYgdCA6IGxpc3QpIHsKKyAgICBoYXNo
X3N0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHQpOworICB9CisgIHJl
dHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgbGlzdC5zaXplKCkpOworfQor
CisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6dmVjdG9yCisvLworLy8gRG8gbm90
IHVzZSB0aGlzIGZvciB2ZWN0b3I8Ym9vbD4uIEl0IGRvZXMgbm90IGhhdmUgYSAuZGF0YSgpLCBh
bmQgYSBmYWxsYmFjaworLy8gZm9yIHN0ZDo6aGFzaDw+IGlzIG1vc3QgbGlrZWx5IGZhc3Rlci4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBbGxvY2F0b3I+Cit0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxpc19oYXNoYWJsZTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNf
c2FtZTxULCBib29sPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBIPjo6dHlwZQor
QWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIGNvbnN0IHN0ZDo6dmVjdG9yPFQsIEFsbG9jYXRv
cj4mIHZlY3RvcikgeworICByZXR1cm4gSDo6Y29tYmluZShIOjpjb21iaW5lX2NvbnRpZ3VvdXMo
c3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB2ZWN0b3IuZGF0YSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnNpemUoKSksCisgICAgICAgICAgICAgICAg
ICAgIHZlY3Rvci5zaXplKCkpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWJz
bEhhc2hWYWx1ZSBmb3IgT3JkZXJlZCBBc3NvY2lhdGl2ZSBDb250YWluZXJzCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6bWFwCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZSBD
b21wYXJlLAorICAgICAgICAgIHR5cGVuYW1lIEFsbG9jYXRvcj4KK3R5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPGlzX2hhc2hhYmxlPEtleT46OnZhbHVlICYmIGlzX2hhc2hhYmxlPFQ+Ojp2YWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEg+Ojp0eXBlCitBYnNsSGFzaFZhbHVlKEggaGFzaF9z
dGF0ZSwgY29uc3Qgc3RkOjptYXA8S2V5LCBULCBDb21wYXJlLCBBbGxvY2F0b3I+JiBtYXApIHsK
KyAgZm9yIChjb25zdCBhdXRvJiB0IDogbWFwKSB7CisgICAgaGFzaF9zdGF0ZSA9IEg6OmNvbWJp
bmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB0KTsKKyAgfQorICByZXR1cm4gSDo6Y29tYmluZShz
dGQ6Om1vdmUoaGFzaF9zdGF0ZSksIG1hcC5zaXplKCkpOworfQorCisvLyBBYnNsSGFzaFZhbHVl
IGZvciBoYXNoaW5nIHN0ZDo6bXVsdGltYXAKK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbXBhcmUsCisgICAgICAgICAgdHlwZW5hbWUg
QWxsb2NhdG9yPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8aXNfaGFzaGFibGU8S2V5Pjo6dmFs
dWUgJiYgaXNfaGFzaGFibGU8VD46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgSD46
OnR5cGUKK0Fic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLAorICAgICAgICAgICAgICBjb25zdCBz
dGQ6Om11bHRpbWFwPEtleSwgVCwgQ29tcGFyZSwgQWxsb2NhdG9yPiYgbWFwKSB7CisgIGZvciAo
Y29uc3QgYXV0byYgdCA6IG1hcCkgeworICAgIGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6
bW92ZShoYXNoX3N0YXRlKSwgdCk7CisgIH0KKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3Zl
KGhhc2hfc3RhdGUpLCBtYXAuc2l6ZSgpKTsKK30KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFz
aGluZyBzdGQ6OnNldAordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgQ29tcGFyZSwgdHlwZW5hbWUgQWxsb2NhdG9yPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
aXNfaGFzaGFibGU8S2V5Pjo6dmFsdWUsIEg+Ojp0eXBlIEFic2xIYXNoVmFsdWUoCisgICAgSCBo
YXNoX3N0YXRlLCBjb25zdCBzdGQ6OnNldDxLZXksIENvbXBhcmUsIEFsbG9jYXRvcj4mIHNldCkg
eworICBmb3IgKGNvbnN0IGF1dG8mIHQgOiBzZXQpIHsKKyAgICBoYXNoX3N0YXRlID0gSDo6Y29t
YmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHQpOworICB9CisgIHJldHVybiBIOjpjb21iaW5l
KHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgc2V0LnNpemUoKSk7Cit9CisKKy8vIEFic2xIYXNoVmFs
dWUgZm9yIGhhc2hpbmcgc3RkOjptdWx0aXNldAordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgQWxsb2NhdG9yPgordHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8aXNfaGFzaGFibGU8S2V5Pjo6dmFsdWUsIEg+Ojp0eXBlIEFic2xIYXNo
VmFsdWUoCisgICAgSCBoYXNoX3N0YXRlLCBjb25zdCBzdGQ6Om11bHRpc2V0PEtleSwgQ29tcGFy
ZSwgQWxsb2NhdG9yPiYgc2V0KSB7CisgIGZvciAoY29uc3QgYXV0byYgdCA6IHNldCkgeworICAg
IGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgdCk7CisgIH0K
KyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBzZXQuc2l6ZSgpKTsK
K30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFic2xIYXNoVmFsdWUgZm9yIFdyYXBw
ZXIgVHlwZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEFic2xIYXNoVmFsdWUgZm9y
IGhhc2hpbmcgYWJzbDo6b3B0aW9uYWwKK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBU
PgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8aXNfaGFzaGFibGU8VD46OnZhbHVlLCBIPjo6dHlw
ZSBBYnNsSGFzaFZhbHVlKAorICAgIEggaGFzaF9zdGF0ZSwgY29uc3QgYWJzbDo6b3B0aW9uYWw8
VD4mIG9wdCkgeworICBpZiAob3B0KSBoYXNoX3N0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUo
aGFzaF9zdGF0ZSksICpvcHQpOworICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9z
dGF0ZSksIG9wdC5oYXNfdmFsdWUoKSk7Cit9CisKKy8vIFZhcmlhbnRWaXNpdG9yCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgSD4KK3N0cnVjdCBWYXJpYW50VmlzaXRvciB7CisgIEgmJiBoYXNoX3N0YXRl
OworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgSCBvcGVyYXRvcigpKGNvbnN0IFQmIHQpIGNv
bnN0IHsKKyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHQpOwor
ICB9Cit9OworCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIGFic2w6OnZhcmlhbnQKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZS4uLiBUPgordHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8Y29uanVuY3Rpb248aXNfaGFzaGFibGU8VD4uLi4+Ojp2YWx1ZSwgSD46OnR5cGUKK0Fic2xI
YXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBjb25zdCBhYnNsOjp2YXJpYW50PFQuLi4+JiB2KSB7Cisg
IGlmICghdi52YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCkpIHsKKyAgICBoYXNoX3N0YXRlID0gYWJz
bDo6dmlzaXQoVmFyaWFudFZpc2l0b3I8SD57c3RkOjptb3ZlKGhhc2hfc3RhdGUpfSwgdik7Cisg
IH0KKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB2LmluZGV4KCkp
OworfQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gaGFzaF9yYW5nZV9vcl9ieXRlcygp
CisvLworLy8gTWl4ZXMgYWxsIHZhbHVlcyBpbiB0aGUgcmFuZ2UgW2RhdGEsIGRhdGErc2l6ZSkg
aW50byB0aGUgaGFzaCBzdGF0ZS4KKy8vIFRoaXMgb3ZlcmxvYWQgYWNjZXB0cyBvbmx5IHVuaXF1
ZWx5LXJlcHJlc2VudGVkIHR5cGVzLCBhbmQgaGFzaGVzIHRoZW0gYnkKKy8vIGhhc2hpbmcgdGhl
IGVudGlyZSByYW5nZSBvZiBieXRlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBU
PgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8aXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8VD46OnZh
bHVlLCBIPjo6dHlwZQoraGFzaF9yYW5nZV9vcl9ieXRlcyhIIGhhc2hfc3RhdGUsIGNvbnN0IFQq
IGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGNvbnN0IGF1dG8qIGJ5dGVzID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YSk7CisgIHJldHVybiBIOjpjb21iaW5lX2Nv
bnRpZ3VvdXMoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBieXRlcywgc2l6ZW9mKFQpICogc2l6ZSk7
Cit9CisKKy8vIGhhc2hfcmFuZ2Vfb3JfYnl0ZXMoKQordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5
cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhaXNfdW5pcXVlbHlfcmVwcmVzZW50
ZWQ8VD46OnZhbHVlLCBIPjo6dHlwZQoraGFzaF9yYW5nZV9vcl9ieXRlcyhIIGhhc2hfc3RhdGUs
IGNvbnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGZvciAoY29uc3QgYXV0byBlbmQgPSBk
YXRhICsgc2l6ZTsgZGF0YSA8IGVuZDsgKytkYXRhKSB7CisgICAgaGFzaF9zdGF0ZSA9IEg6OmNv
bWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCAqZGF0YSk7CisgIH0KKyAgcmV0dXJuIGhhc2hf
c3RhdGU7Cit9CisKKy8vIEludm9rZUhhc2hUYWcKKy8vCisvLyBJbnZva2VIYXNoKEgsIGNvbnN0
IFQmKSBpbnZva2VzIHRoZSBhcHByb3ByaWF0ZSBoYXNoIGltcGxlbWVudGF0aW9uIGZvciBhCisv
LyBoYXNoZXIgb2YgdHlwZSBgSGAgYW5kIGEgdmFsdWUgb2YgdHlwZSBgVGAuIElmIGBUYCBpcyBu
b3QgaGFzaGFibGUsIHRoZXJlCisvLyB3aWxsIGJlIG5vIG1hdGNoaW5nIG92ZXJsb2FkIG9mIElu
dm9rZUhhc2goKS4KKy8vIE5vdGU6IFNvbWUgcGxhdGZvcm1zIChlZyBNU1ZDKSBkbyBub3Qgc3Vw
cG9ydCB0aGUgZGV0ZWN0IGlkaW9tIG9uCisvLyBzdGQ6Omhhc2guIEluIHRob3NlIHBsYXRmb3Jt
cyB0aGUgbGFzdCBmYWxsYmFjayB3aWxsIGJlIHN0ZDo6aGFzaCBhbmQKKy8vIEludm9rZUhhc2go
KSB3aWxsIGFsd2F5cyBoYXZlIGEgdmFsaWQgb3ZlcmxvYWQgZXZlbiBpZiBzdGQ6Omhhc2g8VD4g
aXMgbm90CisvLyB2YWxpZC4KKy8vCisvLyBXZSB0cnkgdGhlIGZvbGxvd2luZyBvcHRpb25zIGlu
IG9yZGVyOgorLy8gICAqIElmIGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkLCBoYXNoIGJ5dGVzIGRp
cmVjdGx5LgorLy8gICAqIEFETCBBYnNsSGFzaFZhbHVlKEgsIGNvbnN0IFQmKSBjYWxsLgorLy8g
ICAqIHN0ZDo6aGFzaDxUPgorCisvLyBJbiBNU1ZDIHdlIGNhbid0IHByb2JlIHN0ZDo6aGFzaCBv
ciBzdGRleHQ6Omhhc2ggYmVjYXVzZSBpdCB0cmlnZ2VycyBhCisvLyBzdGF0aWNfYXNzZXJ0IGlu
c3RlYWQgb2YgZmFpbGluZyBzdWJzdGl0dXRpb24uCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNk
ZWZpbmUgQUJTTF9IQVNIX0lOVEVSTkFMX0NBTl9QT0lTT05fIDAKKyNlbHNlICAgLy8gX01TQ19W
RVIKKyNkZWZpbmUgQUJTTF9IQVNIX0lOVEVSTkFMX0NBTl9QT0lTT05fIDEKKyNlbmRpZiAgLy8g
X01TQ19WRVIKKworI2lmIGRlZmluZWQoQUJTTF9JTlRFUk5BTF9MRUdBQ1lfSEFTSF9OQU1FU1BB
Q0UpICYmIFwKKyAgICBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8KKyNkZWZpbmUgQUJT
TF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfIDEKKyNlbHNlCisjZGVmaW5lIEFC
U0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXyAwCisjZW5kaWYKKworZW51bSBj
bGFzcyBJbnZva2VIYXNoVGFnIHsKKyAga1VuaXF1ZWx5UmVwcmVzZW50ZWQsCisgIGtIYXNoVmFs
dWUsCisjaWYgQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCisgIGtMZWdh
Y3lIYXNoLAorI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFT
SF8KKyAga1N0ZEhhc2gsCisgIGtOb25lCit9OworCisvLyBIYXNoU2VsZWN0CisvLworLy8gVHlw
ZSB0cmFpdCB0byBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlIGhhc2ggaW1wbGVtZW50YXRpb24gdG8g
dXNlLgorLy8gSGFzaFNlbGVjdDxUPjo6dmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2YgSW52b2tlSGFz
aFRhZyB0aGF0IGluZGljYXRlcyB0aGUgYmVzdAorLy8gYXZhaWxhYmxlIGhhc2hpbmcgbWVjaGFu
aXNtLgorLy8gU2VlIGBOb3RlYCBhYm92ZSBhYm91dCBNU1ZDLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgSGFzaFNlbGVjdCB7CisgcHJpdmF0ZToKKyAgc3RydWN0IFN0YXRlIDogSGFz
aFN0YXRlQmFzZTxTdGF0ZT4geworICAgIHN0YXRpYyBTdGF0ZSBjb21iaW5lX2NvbnRpZ3VvdXMo
U3RhdGUgaGFzaF9zdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciosCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QpOworICAgIHVzaW5nIFN0YXRlOjpIYXNoU3RhdGVC
YXNlOjpjb21iaW5lX2NvbnRpZ3VvdXM7CisgIH07CisKKyAgLy8gYFByb2JlPFYsIFRhZz46OnZh
bHVlYCBldmFsdWF0ZXMgdG8gYFY8VD46OnZhbHVlYCBpZiBpdCBpcyBhIHZhbGlkCisgIC8vIGV4
cHJlc3Npb24sIGFuZCBgZmFsc2VgIG90aGVyd2lzZS4KKyAgLy8gYFByb2JlPFYsIFRhZz46OnRh
Z2AgYWx3YXlzIGV2YWx1YXRlcyB0byBgVGFnYC4KKyAgdGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBl
bmFtZT4gY2xhc3MgViwgSW52b2tlSGFzaFRhZyBUYWc+CisgIHN0cnVjdCBQcm9iZSB7CisgICBw
cml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxWPFU+Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9IDA+CisgICAgc3RhdGljIHN0ZDo6dHJ1ZV90eXBl
IFRlc3QoaW50KTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgICBzdGF0aWMgc3RkOjpm
YWxzZV90eXBlIFRlc3QoY2hhcik7CisKKyAgIHB1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHBy
IEludm9rZUhhc2hUYWcga1RhZyA9IFRhZzsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFs
dWUgPSBkZWNsdHlwZSgKKyAgICAgICAgVGVzdDxhYnNsOjpyZW1vdmVfY29uc3RfdDxhYnNsOjpy
ZW1vdmVfcmVmZXJlbmNlX3Q8VD4+PigwKSk6OnZhbHVlOworICB9OworCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBVPgorICB1c2luZyBQcm9iZVVuaXF1ZWx5UmVwcmVzZW50ZWQgPSBpc191bmlxdWVs
eV9yZXByZXNlbnRlZDxVPjsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgdXNpbmcgUHJv
YmVIYXNoVmFsdWUgPQorICAgICAgc3RkOjppc19zYW1lPFN0YXRlLCBkZWNsdHlwZShBYnNsSGFz
aFZhbHVlKHN0ZDo6ZGVjbHZhbDxTdGF0ZT4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8Y29uc3QgVSY+KCkpKT47CisKKyNp
ZiBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8KKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+CisgIHVzaW5nIFByb2JlTGVnYWN5SGFzaCA9CisgICAgICBzdGQ6OmlzX2NvbnZl
cnRpYmxlPGRlY2x0eXBlKEFCU0xfSU5URVJOQUxfTEVHQUNZX0hBU0hfTkFNRVNQQUNFOjpoYXNo
PAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVPigpKHN0ZDo6ZGVjbHZhbDxj
b25zdCBVJj4oKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Q+OworI2VuZGlm
ICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8KKworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVT4KKyAgdXNpbmcgUHJvYmVTdGRIYXNoID0KKyNpZiBBQlNMX0hBU0hfSU5U
RVJOQUxfQ0FOX1BPSVNPTl8KKyAgICAgIHN0ZDo6aXNfY29udmVydGlibGU8ZGVjbHR5cGUoc3Rk
OjpoYXNoPFU+KCkoc3RkOjpkZWNsdmFsPGNvbnN0IFUmPigpKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdD47CisjZWxzZSAgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9J
U09OXworICAgICAgc3RkOjp0cnVlX3R5cGU7CisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5B
TF9DQU5fUE9JU09OXworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICB1c2luZyBQcm9iZU5v
bmUgPSBzdGQ6OnRydWVfdHlwZTsKKworIHB1YmxpYzoKKyAgLy8gUHJvYmUgZWFjaCBpbXBsZW1l
bnRhdGlvbiBpbiBvcmRlci4KKyAgLy8gZGlzanVuY3Rpb24gcHJvdmlkZXMgc2hvcnQgY2lyY3V0
aW5nIHdydCBpbnN0YW50aWF0aW9uLgorICBzdGF0aWMgY29uc3RleHByIEludm9rZUhhc2hUYWcg
dmFsdWUgPSBhYnNsOjpkaXNqdW5jdGlvbjwKKyAgICAgIFByb2JlPFByb2JlVW5pcXVlbHlSZXBy
ZXNlbnRlZCwgSW52b2tlSGFzaFRhZzo6a1VuaXF1ZWx5UmVwcmVzZW50ZWQ+LAorICAgICAgUHJv
YmU8UHJvYmVIYXNoVmFsdWUsIEludm9rZUhhc2hUYWc6OmtIYXNoVmFsdWU+LAorI2lmIEFCU0xf
SEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworICAgICAgUHJvYmU8UHJvYmVMZWdh
Y3lIYXNoLCBJbnZva2VIYXNoVGFnOjprTGVnYWN5SGFzaD4sCisjZW5kaWYgIC8vIEFCU0xfSEFT
SF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworICAgICAgUHJvYmU8UHJvYmVTdGRIYXNo
LCBJbnZva2VIYXNoVGFnOjprU3RkSGFzaD4sCisgICAgICBQcm9iZTxQcm9iZU5vbmUsIEludm9r
ZUhhc2hUYWc6OmtOb25lPj46OmtUYWc7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0
cnVjdCBpc19oYXNoYWJsZSA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgSGFzaFNlbGVj
dDxUPjo6dmFsdWUgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEludm9rZUhhc2hUYWc6OmtOb25lPiB7fTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIEgsIHR5cGVuYW1lIFQ+CithYnNsOjplbmFibGVfaWZfdDxIYXNoU2VsZWN0PFQ+Ojp2YWx1
ZSA9PSBJbnZva2VIYXNoVGFnOjprVW5pcXVlbHlSZXByZXNlbnRlZCwKKyAgICAgICAgICAgICAg
ICAgIEg+CitJbnZva2VIYXNoKEggc3RhdGUsIGNvbnN0IFQmIHZhbHVlKSB7CisgIHJldHVybiBo
YXNoX2ludGVybmFsOjpoYXNoX2J5dGVzKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+CithYnNsOjplbmFibGVfaWZfdDxIYXNo
U2VsZWN0PFQ+Ojp2YWx1ZSA9PSBJbnZva2VIYXNoVGFnOjprSGFzaFZhbHVlLCBIPgorSW52b2tl
SGFzaChIIHN0YXRlLCBjb25zdCBUJiB2YWx1ZSkgeworICByZXR1cm4gQWJzbEhhc2hWYWx1ZShz
dGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZSk7Cit9CisKKyNpZiBBQlNMX0hBU0hfSU5URVJOQUxfU1VQ
UE9SVF9MRUdBQ1lfSEFTSF8KK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgorYWJz
bDo6ZW5hYmxlX2lmX3Q8SGFzaFNlbGVjdDxUPjo6dmFsdWUgPT0gSW52b2tlSGFzaFRhZzo6a0xl
Z2FjeUhhc2gsIEg+CitJbnZva2VIYXNoKEggc3RhdGUsIGNvbnN0IFQmIHZhbHVlKSB7CisgIHJl
dHVybiBoYXNoX2ludGVybmFsOjpoYXNoX2J5dGVzKAorICAgICAgc3RkOjptb3ZlKHN0YXRlKSwg
QUJTTF9JTlRFUk5BTF9MRUdBQ1lfSEFTSF9OQU1FU1BBQ0U6Omhhc2g8VD57fSh2YWx1ZSkpOwor
fQorI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+CithYnNsOjplbmFibGVfaWZfdDxIYXNo
U2VsZWN0PFQ+Ojp2YWx1ZSA9PSBJbnZva2VIYXNoVGFnOjprU3RkSGFzaCwgSD4KK0ludm9rZUhh
c2goSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUpIHsKKyAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhh
c2hfYnl0ZXMoc3RkOjptb3ZlKHN0YXRlKSwgc3RkOjpoYXNoPFQ+e30odmFsdWUpKTsKK30KKwor
Ly8gQ2l0eUhhc2hTdGF0ZQorY2xhc3MgQ2l0eUhhc2hTdGF0ZSA6IHB1YmxpYyBIYXNoU3RhdGVC
YXNlPENpdHlIYXNoU3RhdGU+IHsKKyAgLy8gYWJzbDo6dWludDEyOCBpcyBub3QgYW4gYWxpYXMg
b3IgYSB0aGluIHdyYXBwZXIgYXJvdW5kIHRoZSBpbnRyaW5zaWMuCisgIC8vIFdlIHVzZSB0aGUg
aW50cmluc2ljIHdoZW4gYXZhaWxhYmxlIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuCisjaWZkZWYg
QUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgKKyAgdXNpbmcgdWludDEyOCA9IF9fdWludDEyOF90
OworI2Vsc2UgICAvLyBBQlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOAorICB1c2luZyB1aW50MTI4
ID0gYWJzbDo6dWludDEyODsKKyNlbmRpZiAgLy8gQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgK
KworICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGtNdWwgPQorICAgICAgc2l6ZW9mKHNpemVf
dCkgPT0gNCA/IHVpbnQ2NF90ezB4Y2M5ZTJkNTF9IDogdWludDY0X3R7MHg5ZGRmZWEwOGViMzgy
ZDY5fTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgdXNpbmcgSW50ZWdyYWxGYXN0UGF0
aCA9CisgICAgICBjb25qdW5jdGlvbjxzdGQ6OmlzX2ludGVncmFsPFQ+LCBpc191bmlxdWVseV9y
ZXByZXNlbnRlZDxUPj47CisKKyBwdWJsaWM6CisgIC8vIE1vdmUgb25seQorICBDaXR5SGFzaFN0
YXRlKENpdHlIYXNoU3RhdGUmJikgPSBkZWZhdWx0OworICBDaXR5SGFzaFN0YXRlJiBvcGVyYXRv
cj0oQ2l0eUhhc2hTdGF0ZSYmKSA9IGRlZmF1bHQ7CisKKyAgLy8gQ2l0eUhhc2hTdGF0ZTo6Y29t
YmluZV9jb250aWd1b3VzKCkKKyAgLy8KKyAgLy8gRnVuZGFtZW50YWwgYmFzZSBjYXNlIGZvciBo
YXNoIHJlY3Vyc2lvbjogbWl4ZXMgdGhlIGdpdmVuIHJhbmdlIG9mIGJ5dGVzCisgIC8vIGludG8g
dGhlIGhhc2ggc3RhdGUuCisgIHN0YXRpYyBDaXR5SGFzaFN0YXRlIGNvbWJpbmVfY29udGlndW91
cyhDaXR5SGFzaFN0YXRlIGhhc2hfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBmaXJzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKSB7CisgICAgcmV0dXJuIENp
dHlIYXNoU3RhdGUoCisgICAgICAgIENvbWJpbmVDb250aWd1b3VzSW1wbChoYXNoX3N0YXRlLnN0
YXRlXywgZmlyc3QsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Omlu
dGVncmFsX2NvbnN0YW50PGludCwgc2l6ZW9mKHNpemVfdCk+e30pKTsKKyAgfQorICB1c2luZyBD
aXR5SGFzaFN0YXRlOjpIYXNoU3RhdGVCYXNlOjpjb21iaW5lX2NvbnRpZ3VvdXM7CisKKyAgLy8g
Q2l0eUhhc2hTdGF0ZTo6aGFzaCgpCisgIC8vCisgIC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25z
IGluIG5vbi1vcHQgbW9kZSwgd2Ugc3BlY2lhbGl6ZSB0aGlzIGZvcgorICAvLyBpbnRlZ3JhbCB0
eXBlcy4KKyAgLy8gT3RoZXJ3aXNlIHdlIHdvdWxkIGJlIGluc3RhbnRpYXRpbmcgYW5kIGNhbGxp
bmcgZG96ZW5zIG9mIGZ1bmN0aW9ucyBmb3IKKyAgLy8gc29tZXRoaW5nIHRoYXQgaXMganVzdCBv
bmUgbXVsdGlwbGljYXRpb24gYW5kIGEgY291cGxlIHhvcidzLgorICAvLyBUaGUgcmVzdWx0IHNo
b3VsZCBiZSB0aGUgc2FtZSBhcyBydW5uaW5nIHRoZSB3aG9sZSBhbGdvcml0aG0sIGJ1dCBmYXN0
ZXIuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBhYnNsOjplbmFibGVfaWZfdDxJbnRlZ3JhbEZh
c3RQYXRoPFQ+Ojp2YWx1ZSwgaW50PiA9IDA+CisgIHN0YXRpYyBzaXplX3QgaGFzaChUIHZhbHVl
KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oTWl4KFNlZWQoKSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHZhbHVlKSkpOworICB9CisKKyAgLy8gT3ZlcmxvYWQgb2YgQ2l0eUhhc2hT
dGF0ZTo6aGFzaCgpCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBhYnNsOjplbmFibGVfaWZfdDwh
SW50ZWdyYWxGYXN0UGF0aDxUPjo6dmFsdWUsIGludD4gPSAwPgorICBzdGF0aWMgc2l6ZV90IGhh
c2goY29uc3QgVCYgdmFsdWUpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21i
aW5lKENpdHlIYXNoU3RhdGV7fSwgdmFsdWUpLnN0YXRlXyk7CisgIH0KKworIHByaXZhdGU6Cisg
IC8vIEludm9rZWQgb25seSBvbmNlIGZvciBhIGdpdmVuIGFyZ3VtZW50OyB0aGF0IHBsdXMgdGhl
IGZhY3QgdGhhdCB0aGlzIGlzCisgIC8vIG1vdmUtb25seSBlbnN1cmVzIHRoYXQgdGhlcmUgaXMg
b25seSBvbmUgbm9uLW1vdmVkLWZyb20gb2JqZWN0LgorICBDaXR5SGFzaFN0YXRlKCkgOiBzdGF0
ZV8oU2VlZCgpKSB7fQorCisgIC8vIFdvcmthcm91bmQgZm9yIE1TVkMgYnVnLgorICAvLyBXZSBt
YWtlIHRoZSB0eXBlIGNvcHlhYmxlIHRvIGZpeCB0aGUgY2FsbGluZyBjb252ZW50aW9uLCBldmVu
IHRob3VnaCB3ZQorICAvLyBuZXZlciBhY3R1YWxseSBjb3B5IGl0LiBLZWVwIGl0IHByaXZhdGUg
dG8gbm90IGFmZmVjdCB0aGUgcHVibGljIEFQSSBvZiB0aGUKKyAgLy8gdHlwZS4KKyAgQ2l0eUhh
c2hTdGF0ZShjb25zdCBDaXR5SGFzaFN0YXRlJikgPSBkZWZhdWx0OworCisgIGV4cGxpY2l0IENp
dHlIYXNoU3RhdGUodWludDY0X3Qgc3RhdGUpIDogc3RhdGVfKHN0YXRlKSB7fQorCisgIC8vIElt
cGxlbWVudGF0aW9uIG9mIHRoZSBiYXNlIGNhc2UgZm9yIGNvbWJpbmVfY29udGlndW91cyB3aGVy
ZSB3ZSBhY3R1YWxseQorICAvLyBtaXggdGhlIGJ5dGVzIGludG8gdGhlIHN0YXRlLgorICAvLyBE
aXNwYXRjaCB0byBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBjb21iaW5lX2NvbnRp
Z3VvdXMgZGVwZW5kaW5nCisgIC8vIG9uIHRoZSB2YWx1ZSBvZiBgc2l6ZW9mKHNpemVfdClgLgor
ICBzdGF0aWMgdWludDY0X3QgQ29tYmluZUNvbnRpZ3VvdXNJbXBsKHVpbnQ2NF90IHN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGZpcnN0LCBzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8aW50LCA0PgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemVvZl9zaXplX3QgKi8pOworICBzdGF0aWMgdWlu
dDY0X3QgQ29tYmluZUNvbnRpZ3VvdXNJbXBsKHVpbnQ2NF90IHN0YXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGZpcnN0LCBz
aXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
aW50ZWdyYWxfY29uc3RhbnQ8aW50LCA4PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHNpemVvZl9zaXplX3QqLyk7CisKKyAgLy8gUmVhZHMgOSB0byAxNiBieXRl
cyBmcm9tIHAuCisgIC8vIFRoZSBmaXJzdCA4IGJ5dGVzIGFyZSBpbiAuZmlyc3QsIHRoZSByZXN0
ICh6ZXJvIHBhZGRlZCkgYnl0ZXMgYXJlIGluCisgIC8vIC5zZWNvbmQuCisgIHN0YXRpYyBzdGQ6
OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBSZWFkOVRvMTYoY29uc3QgdW5zaWduZWQgY2hhciog
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbGVuKSB7CisgICAgdWludDY0X3QgaGlnaCA9IGxpdHRsZV9lbmRpYW46OkxvYWQ2NChwICsg
bGVuIC0gOCk7CisgICAgcmV0dXJuIHtsaXR0bGVfZW5kaWFuOjpMb2FkNjQocCksIGhpZ2ggPj4g
KDEyOCAtIGxlbiAqIDgpfTsKKyAgfQorCisgIC8vIFJlYWRzIDQgdG8gOCBieXRlcyBmcm9tIHAu
IFplcm8gcGFkcyB0byBmaWxsIHVpbnQ2NF90LgorICBzdGF0aWMgdWludDY0X3QgUmVhZDRUbzgo
Y29uc3QgdW5zaWduZWQgY2hhciogcCwgc2l6ZV90IGxlbikgeworICAgIHJldHVybiAoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGxpdHRsZV9lbmRpYW46OkxvYWQzMihwICsgbGVuIC0gNCkpCisgICAg
ICAgICAgICA8PCAobGVuIC0gNCkgKiA4KSB8CisgICAgICAgICAgIGxpdHRsZV9lbmRpYW46Okxv
YWQzMihwKTsKKyAgfQorCisgIC8vIFJlYWRzIDEgdG8gMyBieXRlcyBmcm9tIHAuIFplcm8gcGFk
cyB0byBmaWxsIHVpbnQzMl90LgorICBzdGF0aWMgdWludDMyX3QgUmVhZDFUbzMoY29uc3QgdW5z
aWduZWQgY2hhciogcCwgc2l6ZV90IGxlbikgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oKHBbMF0pIHwgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChwW2xlbiAvIDJdIDw8IChsZW4gLyAyICogOCkpIHwgIC8vCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocFtsZW4gLSAxXSA8PCAoKGxlbiAtIDEp
ICogOCkpKTsKKyAgfQorCisgIEFCU0xfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgc3RhdGljIHVp
bnQ2NF90IE1peCh1aW50NjRfdCBzdGF0ZSwgdWludDY0X3QgdikgeworICAgIHVzaW5nIE11bHRU
eXBlID0KKyAgICAgICAgYWJzbDo6Y29uZGl0aW9uYWxfdDxzaXplb2Yoc2l6ZV90KSA9PSA0LCB1
aW50NjRfdCwgdWludDEyOD47CisgICAgLy8gV2UgZG8gdGhlIGFkZGl0aW9uIGluIDY0LWJpdCBz
cGFjZSB0byBtYWtlIHN1cmUgdGhlIDEyOC1iaXQKKyAgICAvLyBtdWx0aXBsaWNhdGlvbiBpcyBm
YXN0LiBJZiB3ZSB3ZXJlIHRvIGRvIGl0IGFzIE11bHRUeXBlIHRoZSBjb21waWxlciBoYXMKKyAg
ICAvLyB0byBhc3N1bWUgdGhhdCB0aGUgaGlnaCB3b3JkIGlzIG5vbi16ZXJvIGFuZCBuZWVkcyB0
byBwZXJmb3JtIDIKKyAgICAvLyBtdWx0aXBsaWNhdGlvbnMgaW5zdGVhZCBvZiBvbmUuCisgICAg
TXVsdFR5cGUgbSA9IHN0YXRlICsgdjsKKyAgICBtICo9IGtNdWw7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihtIF4gKG0gPj4gKHNpemVvZihtKSAqIDggLyAyKSkpOworICB9CisK
KyAgLy8gU2VlZCgpCisgIC8vCisgIC8vIEEgbm9uLWRldGVybWluaXN0aWMgc2VlZC4KKyAgLy8K
KyAgLy8gVGhlIGN1cnJlbnQgcHVycG9zZSBvZiB0aGlzIHNlZWQgaXMgdG8gZ2VuZXJhdGUgbm9u
LWRldGVybWluaXN0aWMgcmVzdWx0cworICAvLyBhbmQgcHJldmVudCBoYXZpbmcgdXNlcnMgZGVw
ZW5kIG9uIHRoZSBwYXJ0aWN1bGFyIGhhc2ggdmFsdWVzLgorICAvLyBJdCBpcyBub3QgbWVhbnQg
YXMgYSBzZWN1cml0eSBmZWF0dXJlIHJpZ2h0IG5vdywgYnV0IGl0IGxlYXZlcyB0aGUgZG9vcgor
ICAvLyBvcGVuIHRvIHVwZ3JhZGUgaXQgdG8gYSB0cnVlIHBlci1wcm9jZXNzIHJhbmRvbSBzZWVk
LiBBIHRydWUgcmFuZG9tIHNlZWQKKyAgLy8gY29zdHMgbW9yZSBhbmQgd2UgZG9uJ3QgbmVlZCB0
byBwYXkgZm9yIHRoYXQgcmlnaHQgbm93LgorICAvLworICAvLyBPbiBwbGF0Zm9ybXMgd2l0aCBB
U0xSLCB3ZSB0YWtlIGFkdmFudGFnZSBvZiBpdCB0byBtYWtlIGEgcGVyLXByb2Nlc3MKKyAgLy8g
cmFuZG9tIHZhbHVlLgorICAvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWRk
cmVzc19zcGFjZV9sYXlvdXRfcmFuZG9taXphdGlvbgorICAvLworICAvLyBPbiBvdGhlciBwbGF0
Zm9ybXMgdGhpcyBpcyBzdGlsbCBnb2luZyB0byBiZSBub24tZGV0ZXJtaW5pc3RpYyBidXQgbW9z
dAorICAvLyBwcm9iYWJseSBwZXItYnVpbGQgYW5kIG5vdCBwZXItcHJvY2Vzcy4KKyAgQUJTTF9B
VFRSSUJVVEVfQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDY0X3QgU2VlZCgpIHsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihrU2Vl
ZCkpOworICB9CisgIHN0YXRpYyBjb25zdCB2b2lkKiBjb25zdCBrU2VlZDsKKworICB1aW50NjRf
dCBzdGF0ZV87Cit9OworCisvLyBDaXR5SGFzaFN0YXRlOjpDb21iaW5lQ29udGlndW91c0ltcGwo
KQoraW5saW5lIHVpbnQ2NF90IENpdHlIYXNoU3RhdGU6OkNvbWJpbmVDb250aWd1b3VzSW1wbCgK
KyAgICB1aW50NjRfdCBzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciogZmlyc3QsIHNpemVfdCBs
ZW4sCisgICAgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxpbnQsIDQ+IC8qIHNpemVvZl9zaXplX3Qg
Ki8pIHsKKyAgLy8gRm9yIGxhcmdlIHZhbHVlcyB3ZSB1c2UgQ2l0eUhhc2gsIGZvciBzbWFsbCBv
bmVzIHdlIGp1c3QgdXNlIGEKKyAgLy8gbXVsdGlwbGljYXRpdmUgaGFzaC4KKyAgdWludDY0X3Qg
djsKKyAgaWYgKGxlbiA+IDgpIHsKKyAgICB2ID0gYWJzbDo6aGFzaF9pbnRlcm5hbDo6Q2l0eUhh
c2gzMihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihmaXJzdCksIGxlbik7CisgIH0gZWxz
ZSBpZiAobGVuID49IDQpIHsKKyAgICB2ID0gUmVhZDRUbzgoZmlyc3QsIGxlbik7CisgIH0gZWxz
ZSBpZiAobGVuID4gMCkgeworICAgIHYgPSBSZWFkMVRvMyhmaXJzdCwgbGVuKTsKKyAgfSBlbHNl
IHsKKyAgICAvLyBFbXB0eSByYW5nZXMgaGF2ZSBubyBlZmZlY3QuCisgICAgcmV0dXJuIHN0YXRl
OworICB9CisgIHJldHVybiBNaXgoc3RhdGUsIHYpOworfQorCisvLyBPdmVybG9hZCBvZiBDaXR5
SGFzaFN0YXRlOjpDb21iaW5lQ29udGlndW91c0ltcGwoKQoraW5saW5lIHVpbnQ2NF90IENpdHlI
YXNoU3RhdGU6OkNvbWJpbmVDb250aWd1b3VzSW1wbCgKKyAgICB1aW50NjRfdCBzdGF0ZSwgY29u
c3QgdW5zaWduZWQgY2hhciogZmlyc3QsIHNpemVfdCBsZW4sCisgICAgc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxpbnQsIDg+IC8qIHNpemVvZl9zaXplX3QgKi8pIHsKKyAgLy8gRm9yIGxhcmdlIHZh
bHVlcyB3ZSB1c2UgQ2l0eUhhc2gsIGZvciBzbWFsbCBvbmVzIHdlIGp1c3QgdXNlIGEKKyAgLy8g
bXVsdGlwbGljYXRpdmUgaGFzaC4KKyAgdWludDY0X3QgdjsKKyAgaWYgKGxlbiA+IDE2KSB7Cisg
ICAgdiA9IGFic2w6Omhhc2hfaW50ZXJuYWw6OkNpdHlIYXNoNjQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZmlyc3QpLCBsZW4pOworICB9IGVsc2UgaWYgKGxlbiA+IDgpIHsKKyAgICBh
dXRvIHAgPSBSZWFkOVRvMTYoZmlyc3QsIGxlbik7CisgICAgc3RhdGUgPSBNaXgoc3RhdGUsIHAu
Zmlyc3QpOworICAgIHYgPSBwLnNlY29uZDsKKyAgfSBlbHNlIGlmIChsZW4gPj0gNCkgeworICAg
IHYgPSBSZWFkNFRvOChmaXJzdCwgbGVuKTsKKyAgfSBlbHNlIGlmIChsZW4gPiAwKSB7CisgICAg
diA9IFJlYWQxVG8zKGZpcnN0LCBsZW4pOworICB9IGVsc2UgeworICAgIC8vIEVtcHR5IHJhbmdl
cyBoYXZlIG5vIGVmZmVjdC4KKyAgICByZXR1cm4gc3RhdGU7CisgIH0KKyAgcmV0dXJuIE1peChz
dGF0ZSwgdik7Cit9CisKKworc3RydWN0IEFnZ3JlZ2F0ZUJhcnJpZXIge307CisKKy8vIEhhc2hJ
bXBsCisKKy8vIEFkZCBhIHByaXZhdGUgYmFzZSBjbGFzcyB0byBtYWtlIHN1cmUgdGhpcyB0eXBl
IGlzIG5vdCBhbiBhZ2dyZWdhdGUuCisvLyBBZ2dyZWdhdGVzIGNhbiBiZSBhZ2dyZWdhdGUgaW5p
dGlhbGl6ZWQgZXZlbiBpZiB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBpcworLy8gZGVsZXRlZC4K
K3N0cnVjdCBQb2lzb25lZEhhc2ggOiBwcml2YXRlIEFnZ3JlZ2F0ZUJhcnJpZXIgeworICBQb2lz
b25lZEhhc2goKSA9IGRlbGV0ZTsKKyAgUG9pc29uZWRIYXNoKGNvbnN0IFBvaXNvbmVkSGFzaCYp
ID0gZGVsZXRlOworICBQb2lzb25lZEhhc2gmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEhhc2gm
KSA9IGRlbGV0ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEhhc2hJbXBs
IHsKKyAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgVCYgdmFsdWUpIGNvbnN0IHsgcmV0dXJuIENp
dHlIYXNoU3RhdGU6Omhhc2godmFsdWUpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3N0cnVjdCBIYXNoCisgICAgOiBhYnNsOjpjb25kaXRpb25hbF90PGlzX2hhc2hhYmxlPFQ+Ojp2
YWx1ZSwgSGFzaEltcGw8VD4sIFBvaXNvbmVkSGFzaD4ge307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBIPgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIFRzPgorSCBIYXNoU3RhdGVC
YXNlPEg+Ojpjb21iaW5lKEggc3RhdGUsIGNvbnN0IFQmIHZhbHVlLCBjb25zdCBUcyYuLi4gdmFs
dWVzKSB7CisgIHJldHVybiBIOjpjb21iaW5lKGhhc2hfaW50ZXJuYWw6Okludm9rZUhhc2goc3Rk
Ojptb3ZlKHN0YXRlKSwgdmFsdWUpLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuLi4pOwor
fQorCisvLyBIYXNoU3RhdGVCYXNlOjpjb21iaW5lX2NvbnRpZ3VvdXMoKQordGVtcGxhdGUgPHR5
cGVuYW1lIEg+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0ggSGFzaFN0YXRlQmFzZTxIPjo6Y29t
YmluZV9jb250aWd1b3VzKEggc3RhdGUsIGNvbnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKSB7Cisg
IHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNoX3JhbmdlX29yX2J5dGVzKHN0ZDo6bW92ZShzdGF0
ZSksIGRhdGEsIHNpemUpOworfQorfSAgLy8gbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX0hBU0hfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvcHJpbnRfaGFzaF9vZi5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2hhc2gvaW50ZXJuYWwvcHJpbnRfaGFzaF9vZi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmRmMzFjYzVlODVi
OTA0NmUwYTU0ZWJjYmU4MzliYzYwNDAyMTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFz
aC9pbnRlcm5hbC9wcmludF9oYXNoX29mLmNjCkBAIC0wLDAgKzEsMjMgQEAKKy8vIENvcHlyaWdo
dCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDxjc3RkbGliPgorCisjaW5j
bHVkZSAiYWJzbC9oYXNoL2hhc2guaCIKKworLy8gUHJpbnRzIHRoZSBoYXNoIG9mIGFyZ3ZbMV0u
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgaWYgKGFyZ2MgPCAyKSByZXR1
cm4gMTsKKyAgcHJpbnRmKCIlenVcbiIsIGFic2w6Okhhc2g8aW50Pnt9KHN0ZDo6YXRvaShhcmd2
WzFdKSkpOyAgLy8gTk9MSU5UCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL3Nw
eV9oYXNoX3N0YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL3NweV9oYXNoX3N0YXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDNkNzk1YjA5MDAxZTNkYzMwMzAxMzczOGY2MjQ2YWEyZGUwYWM1ZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvc3B5X2hhc2hfc3RhdGUuaApAQCAtMCww
ICsxLDIxOCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lm
bmRlZiBBQlNMX0hBU0hfSU5URVJOQUxfU1BZX0hBU0hfU1RBVEVfSF8KKyNkZWZpbmUgQUJTTF9I
QVNIX0lOVEVSTkFMX1NQWV9IQVNIX1NUQVRFX0hfCisKKyNpbmNsdWRlIDxvc3RyZWFtPgorI2lu
Y2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2hhc2gv
aGFzaC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgorI2luY2x1ZGUgImFic2wv
c3RyaW5ncy9zdHJfZm9ybWF0LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9qb2luLmgi
CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBoYXNoX2ludGVybmFsIHsKKworLy8gU3B5
SGFzaFN0YXRlIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIYXNoU3RhdGUgQVBJIHRoYXQg
c2ltcGx5CisvLyBhY2N1bXVsYXRlcyBhbGwgaW5wdXQgYnl0ZXMgaW4gYW4gaW50ZXJuYWwgYnVm
ZmVyLiBUaGlzIG1ha2VzIGl0IHVzZWZ1bAorLy8gZm9yIHRlc3RpbmcgQWJzbEhhc2hWYWx1ZSBv
dmVybG9hZHMgKHNvIGxvbmcgYXMgdGhleSBhcmUgdGVtcGxhdGVkIG9uIHRoZQorLy8gSGFzaFN0
YXRlIHBhcmFtZXRlciksIHNpbmNlIGl0IGNhbiByZXBvcnQgdGhlIGV4YWN0IGhhc2ggcmVwcmVz
ZW50YXRpb24KKy8vIHRoYXQgdGhlIEFic2xIYXNoVmFsdWUgb3ZlcmxvYWQgcHJvZHVjZXMuCisv
LworLy8gU2FtcGxlIHVzYWdlOgorLy8gRVhQRUNUX0VRKFNweUhhc2hTdGF0ZTo6Y29tYmluZShT
cHlIYXNoU3RhdGUoKSwgZm9vKSwKKy8vICAgICAgICAgICBTcHlIYXNoU3RhdGU6OmNvbWJpbmUo
U3B5SGFzaFN0YXRlKCksIGJhcikpOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBTcHlI
YXNoU3RhdGVJbXBsIDogcHVibGljIEhhc2hTdGF0ZUJhc2U8U3B5SGFzaFN0YXRlSW1wbDxUPj4g
eworIHB1YmxpYzoKKyAgU3B5SGFzaFN0YXRlSW1wbCgpCisgICAgICA6IGVycm9yXyhzdGQ6Om1h
a2Vfc2hhcmVkPGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPj4oKSkgeworICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc192b2lkPFQ+Ojp2YWx1ZSwgIiIpOworICB9CisKKyAgLy8gTW92ZS1vbmx5
CisgIFNweUhhc2hTdGF0ZUltcGwoY29uc3QgU3B5SGFzaFN0YXRlSW1wbCYpID0gZGVsZXRlOwor
ICBTcHlIYXNoU3RhdGVJbXBsJiBvcGVyYXRvcj0oY29uc3QgU3B5SGFzaFN0YXRlSW1wbCYpID0g
ZGVsZXRlOworCisgIFNweUhhc2hTdGF0ZUltcGwoU3B5SGFzaFN0YXRlSW1wbCYmIG90aGVyKSBu
b2V4Y2VwdCB7CisgICAgKnRoaXMgPSBzdGQ6Om1vdmUob3RoZXIpOworICB9CisKKyAgU3B5SGFz
aFN0YXRlSW1wbCYgb3BlcmF0b3I9KFNweUhhc2hTdGF0ZUltcGwmJiBvdGhlcikgbm9leGNlcHQg
eworICAgIGhhc2hfcmVwcmVzZW50YXRpb25fID0gc3RkOjptb3ZlKG90aGVyLmhhc2hfcmVwcmVz
ZW50YXRpb25fKTsKKyAgICBlcnJvcl8gPSBvdGhlci5lcnJvcl87CisgICAgbW92ZWRfZnJvbV8g
PSBvdGhlci5tb3ZlZF9mcm9tXzsKKyAgICBvdGhlci5tb3ZlZF9mcm9tXyA9IHRydWU7CisgICAg
cmV0dXJuICp0aGlzOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIFNweUhhc2hT
dGF0ZUltcGwoU3B5SGFzaFN0YXRlSW1wbDxVPiYmIG90aGVyKSB7ICAvLyBOT0xJTlQKKyAgICBo
YXNoX3JlcHJlc2VudGF0aW9uXyA9IHN0ZDo6bW92ZShvdGhlci5oYXNoX3JlcHJlc2VudGF0aW9u
Xyk7CisgICAgZXJyb3JfID0gb3RoZXIuZXJyb3JfOworICAgIG1vdmVkX2Zyb21fID0gb3RoZXIu
bW92ZWRfZnJvbV87CisgICAgb3RoZXIubW92ZWRfZnJvbV8gPSB0cnVlOworICB9CisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lLi4uIEFyZ3M+CisgIHN0YXRpYyBTcHlIYXNoU3Rh
dGVJbXBsIGNvbWJpbmUoU3B5SGFzaFN0YXRlSW1wbCBzLCBjb25zdCBBJiBhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKKyAgICAvLyBQ
YXNzIGFuIGluc3RhbmNlIG9mIFNweUhhc2hTdGF0ZUltcGw8QT4gd2hlbiB0cnlpbmcgdG8gY29t
YmluZSBgQWAuIFRoaXMKKyAgICAvLyBhbGxvd3MgdXMgdG8gdGVzdCB0aGF0IHRoZSB1c2VyIG9u
bHkgdXNlcyB0aGlzIGluc3RhbmNlIGZvciBjb21iaW5lIGNhbGxzCisgICAgLy8gYW5kIGRvZXMg
bm90IGNhbGwgQWJzbEhhc2hWYWx1ZSBkaXJlY3RseS4KKyAgICAvLyBTZWUgQWJzbEhhc2hWYWx1
ZSBpbXBsZW1lbnRhdGlvbiBhdCB0aGUgYm90dG9tLgorICAgIHMgPSBTcHlIYXNoU3RhdGVJbXBs
PEE+OjpIYXNoU3RhdGVCYXNlOjpjb21iaW5lKHN0ZDo6bW92ZShzKSwgYSk7CisgICAgcmV0dXJu
IFNweUhhc2hTdGF0ZUltcGw6OmNvbWJpbmUoc3RkOjptb3ZlKHMpLCBhcmdzLi4uKTsKKyAgfQor
ICBzdGF0aWMgU3B5SGFzaFN0YXRlSW1wbCBjb21iaW5lKFNweUhhc2hTdGF0ZUltcGwgcykgewor
ICAgIGlmIChkaXJlY3RfYWJzbF9oYXNoX3ZhbHVlX2Vycm9yXykgeworICAgICAgKnMuZXJyb3Jf
ID0gIkFic2xIYXNoVmFsdWUgc2hvdWxkIG5vdCBiZSBpbnZva2VkIGRpcmVjdGx5LiI7CisgICAg
fSBlbHNlIGlmIChzLm1vdmVkX2Zyb21fKSB7CisgICAgICAqcy5lcnJvcl8gPSAiVXNlZCBtb3Zl
ZC1mcm9tIGluc3RhbmNlIG9mIHRoZSBoYXNoIHN0YXRlIG9iamVjdC4iOworICAgIH0KKyAgICBy
ZXR1cm4gczsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFNldERpcmVjdEFic2xIYXNoVmFsdWVFcnJv
cigpIHsKKyAgICBkaXJlY3RfYWJzbF9oYXNoX3ZhbHVlX2Vycm9yXyA9IHRydWU7CisgIH0KKwor
ICAvLyBUd28gU3B5SGFzaFN0YXRlSW1wbCBvYmplY3RzIGFyZSBlcXVhbCBpZiB0aGV5IGhvbGQg
ZXF1YWwgaGFzaAorICAvLyByZXByZXNlbnRhdGlvbnMuCisgIGZyaWVuZCBib29sIG9wZXJhdG9y
PT0oY29uc3QgU3B5SGFzaFN0YXRlSW1wbCYgbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFNweUhhc2hTdGF0ZUltcGwmIHJocykgeworICAgIHJldHVybiBsaHMuaGFzaF9yZXBy
ZXNlbnRhdGlvbl8gPT0gcmhzLmhhc2hfcmVwcmVzZW50YXRpb25fOworICB9CisKKyAgZnJpZW5k
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTcHlIYXNoU3RhdGVJbXBsJiBsaHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3B5SGFzaFN0YXRlSW1wbCYgcmhzKSB7CisgICAgcmV0dXJu
ICEobGhzID09IHJocyk7CisgIH0KKworICBlbnVtIGNsYXNzIENvbXBhcmVSZXN1bHQgeworICAg
IGtFcXVhbCwKKyAgICBrQVN1ZmZpeEIsCisgICAga0JTdWZmaXhBLAorICAgIGtVbmVxdWFsLAor
ICB9OworCisgIHN0YXRpYyBDb21wYXJlUmVzdWx0IENvbXBhcmUoY29uc3QgU3B5SGFzaFN0YXRl
SW1wbCYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTcHlIYXNoU3Rh
dGVJbXBsJiBiKSB7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgYV9mbGF0ID0gYWJzbDo6U3RySm9p
bihhLmhhc2hfcmVwcmVzZW50YXRpb25fLCAiIik7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgYl9m
bGF0ID0gYWJzbDo6U3RySm9pbihiLmhhc2hfcmVwcmVzZW50YXRpb25fLCAiIik7CisgICAgaWYg
KGFfZmxhdCA9PSBiX2ZsYXQpIHJldHVybiBDb21wYXJlUmVzdWx0OjprRXF1YWw7CisgICAgaWYg
KGFic2w6OkVuZHNXaXRoKGFfZmxhdCwgYl9mbGF0KSkgcmV0dXJuIENvbXBhcmVSZXN1bHQ6OmtC
U3VmZml4QTsKKyAgICBpZiAoYWJzbDo6RW5kc1dpdGgoYl9mbGF0LCBhX2ZsYXQpKSByZXR1cm4g
Q29tcGFyZVJlc3VsdDo6a0FTdWZmaXhCOworICAgIHJldHVybiBDb21wYXJlUmVzdWx0OjprVW5l
cXVhbDsKKyAgfQorCisgIC8vIG9wZXJhdG9yPDwgcHJpbnRzIHRoZSBoYXNoIHJlcHJlc2VudGF0
aW9uIGFzIGEgaGV4IGFuZCBBU0NJSSBkdW1wLCB0bworICAvLyBmYWNpbGl0YXRlIGRlYnVnZ2lu
Zy4KKyAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG91dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTcHlIYXNoU3RhdGVJbXBs
JiBoYXNoX3N0YXRlKSB7CisgICAgb3V0IDw8ICJbXG4iOworICAgIGZvciAoYXV0byYgcyA6IGhh
c2hfc3RhdGUuaGFzaF9yZXByZXNlbnRhdGlvbl8pIHsKKyAgICAgIHNpemVfdCBvZmZzZXQgPSAw
OworICAgICAgZm9yIChjaGFyIGMgOiBzKSB7CisgICAgICAgIGlmIChvZmZzZXQgJSAxNiA9PSAw
KSB7CisgICAgICAgICAgb3V0IDw8IGFic2w6OlN0cmVhbUZvcm1hdCgiXG4weCUwNHg6ICIsIG9m
ZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG9mZnNldCAlIDIgPT0gMCkgeworICAgICAg
ICAgIG91dCA8PCAiICI7CisgICAgICAgIH0KKyAgICAgICAgb3V0IDw8IGFic2w6OlN0cmVhbUZv
cm1hdCgiJTAyeCIsIGMpOworICAgICAgICArK29mZnNldDsKKyAgICAgIH0KKyAgICAgIG91dCA8
PCAiXG4iOworICAgIH0KKyAgICByZXR1cm4gb3V0IDw8ICJdIjsKKyAgfQorCisgIC8vIFRoZSBi
YXNlIGNhc2Ugb2YgdGhlIGNvbWJpbmUgcmVjdXJzaW9uLCB3aGljaCB3cml0ZXMgcmF3IGJ5dGVz
IGludG8gdGhlCisgIC8vIGludGVybmFsIGJ1ZmZlci4KKyAgc3RhdGljIFNweUhhc2hTdGF0ZUlt
cGwgY29tYmluZV9jb250aWd1b3VzKFNweUhhc2hTdGF0ZUltcGwgaGFzaF9zdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGJlZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHNpemUpIHsKKyAgICBoYXNoX3N0YXRlLmhhc2hfcmVwcmVzZW50YXRpb25fLmVtcGxh
Y2VfYmFjaygKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYmVnaW4pLCBz
aXplKTsKKyAgICByZXR1cm4gaGFzaF9zdGF0ZTsKKyAgfQorCisgIHVzaW5nIFNweUhhc2hTdGF0
ZUltcGw6Okhhc2hTdGF0ZUJhc2U6OmNvbWJpbmVfY29udGlndW91czsKKworICBhYnNsOjpvcHRp
b25hbDxzdGQ6OnN0cmluZz4gZXJyb3IoKSBjb25zdCB7CisgICAgaWYgKG1vdmVkX2Zyb21fKSB7
CisgICAgICByZXR1cm4gIlJldHVybmVkIGEgbW92ZWQtZnJvbSBpbnN0YW5jZSBvZiB0aGUgaGFz
aCBzdGF0ZSBvYmplY3QuIjsKKyAgICB9CisgICAgcmV0dXJuICplcnJvcl87CisgIH0KKworIHBy
aXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBmcmllbmQgY2xhc3MgU3B5SGFzaFN0
YXRlSW1wbDsKKworICAvLyBUaGlzIGlzIHRydWUgaWYgU3B5SGFzaFN0YXRlSW1wbDxUPiBoYXMg
YmVlbiBwYXNzZWQgdG8gYSBjYWxsIG9mCisgIC8vIEFic2xIYXNoVmFsdWUgd2l0aCB0aGUgd3Jv
bmcgdHlwZS4gVGhpcyBkZXRlY3RzIHRoYXQgdGhlIHVzZXIgY2FsbGVkCisgIC8vIEFic2xIYXNo
VmFsdWUgZGlyZWN0bHkgKGJlY2F1c2UgdGhlIGhhc2ggc3RhdGUgdHlwZSBkb2VzIG5vdCBtYXRj
aCkuCisgIHN0YXRpYyBib29sIGRpcmVjdF9hYnNsX2hhc2hfdmFsdWVfZXJyb3JfOworCisKKyAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGhhc2hfcmVwcmVzZW50YXRpb25fOworICAvLyBUaGlz
IGlzIGEgc2hhcmVkX3B0ciBiZWNhdXNlIHdlIHdhbnQgYWxsIGluc3RhbmNlcyBvZiB0aGUgcGFy
dGljdWxhcgorICAvLyBTcHlIYXNoU3RhdGUgcnVuIHRvIHNoYXJlIHRoZSBmaWVsZC4gVGhpcyB3
YXkgd2UgY2FuIHNldCB0aGUgZXJyb3IgZm9yCisgIC8vIHVzZS1hZnRlci1tb3ZlIGFuZCBhbGwg
dGhlIGNvcGllcyB3aWxsIHNlZSBpdC4KKyAgc3RkOjpzaGFyZWRfcHRyPGFic2w6Om9wdGlvbmFs
PHN0ZDo6c3RyaW5nPj4gZXJyb3JfOworICBib29sIG1vdmVkX2Zyb21fID0gZmFsc2U7Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgU3B5SGFzaFN0YXRlSW1wbDxUPjo6ZGlyZWN0
X2Fic2xfaGFzaF92YWx1ZV9lcnJvcl87CisKK3RlbXBsYXRlIDxib29sJiBCPgorc3RydWN0IE9k
clVzZSB7CisgIGNvbnN0ZXhwciBPZHJVc2UoKSB7fQorICBib29sJiBiID0gQjsKK307CisKK3Rl
bXBsYXRlIDx2b2lkICgqKSgpPgorc3RydWN0IFJ1bk9uU3RhcnR1cCB7CisgIHN0YXRpYyBib29s
IHJ1bjsKKyAgc3RhdGljIGNvbnN0ZXhwciBPZHJVc2U8cnVuPiBrT2RyVXNle307Cit9OworCit0
ZW1wbGF0ZSA8dm9pZCAoKmYpKCk+Citib29sIFJ1bk9uU3RhcnR1cDxmPjo6cnVuID0gKGYoKSwg
dHJ1ZSk7CisKK3RlbXBsYXRlIDwKKyAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVLAorICAgIC8v
IE9ubHkgdHJpZ2dlciBmb3Igd2hlbiAoVCAhPSBVKSwKKyAgICBhYnNsOjplbmFibGVfaWZfdDwh
c3RkOjppc19zYW1lPFQsIFU+Ojp2YWx1ZSwgaW50PiA9IDAsCisgICAgLy8gVGhpcyBzdGF0ZW1l
bnQgd29ya3MgaW4gdHdvIHdheXM6CisgICAgLy8gIC0gRmlyc3QsIGl0IGluc3RhbnRpYXRlcyBS
dW5PblN0YXJ0dXAgYW5kIGZvcmNlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YKKyAgICAvLyAgICBg
cnVuYCwgd2hpY2ggc2V0IHRoZSBnbG9iYWwgdmFyaWFibGUuCisgICAgLy8gIC0gU2Vjb25kLCBp
dCB0cmlnZ2VycyBhIFNGSU5BRSBlcnJvciBkaXNhYmxpbmcgdGhlIG92ZXJsb2FkIHRvIHByZXZl
bnQKKyAgICAvLyAgICBjb21waWxlIHRpbWUgZXJyb3JzLiBJZiB3ZSBkaWRuJ3QgZGlzYWJsZSB0
aGUgb3ZlcmxvYWQgd2Ugd291bGQgZ2V0CisgICAgLy8gICAgYW1iaWd1b3VzIG92ZXJsb2FkIGVy
cm9ycywgd2hpY2ggd2UgZG9uJ3Qgd2FudC4KKyAgICBpbnQgPSBSdW5PblN0YXJ0dXA8U3B5SGFz
aFN0YXRlSW1wbDxUPjo6U2V0RGlyZWN0QWJzbEhhc2hWYWx1ZUVycm9yPjo6cnVuPgordm9pZCBB
YnNsSGFzaFZhbHVlKFNweUhhc2hTdGF0ZUltcGw8VD4sIGNvbnN0IFUmKTsKKwordXNpbmcgU3B5
SGFzaFN0YXRlID0gU3B5SGFzaFN0YXRlSW1wbDx2b2lkPjsKKworfSAgLy8gbmFtZXNwYWNlIGhh
c2hfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9IQVNI
X0lOVEVSTkFMX1NQWV9IQVNIX1NUQVRFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJ
TEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuYmF6ZWwKaW5kZXggNDZmNDdiMTJiYjJhZGIy
ZjY3MmZiMDUwZmI0MGQ3N2VjZjg1YmMyMS4uODlhMzEyZWFjNGIxOWJmODhiYTFmMjEwMGNhMDQ1
ZDFjYzMyNzg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L0JVSUxELmJhemVsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21lbW9yeS9CVUlMRC5iYXplbApAQCAtMTksNiArMTksNyBAQCBsb2FkKAogICAgICJBQlNM
X0RFRkFVTFRfQ09QVFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAogICAgICJBQlNMX0VYQ0VQ
VElPTlNfRkxBRyIsCisgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTIiwKICkKIAog
cGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKQEAg
LTUzLDYgKzU0LDcgQEAgY2NfdGVzdCgKICAgICAgICAgIm1lbW9yeV9leGNlcHRpb25fc2FmZXR5
X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VY
Q0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktP
UFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6bWVtb3J5IiwKICAgICAgICAgIi8vYWJzbC9i
YXNlOmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkv
bWVtb3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5LmgKaW5kZXggYzdjYWY4Yjk0ZGM5MWIyODM4
ZDEzZWI0ODkwNGQxNzJkMmEzMGY3My4uMWVhZWMwZjQwYWVhZDU3ZDY5MmU0Yjg1OGU2NDIxNDA0
NTY0NWY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21l
bW9yeS9tZW1vcnkuaApAQCAtMzksMTYgKzM5LDMwIEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIEZ1
bmN0aW9uIFRlbXBsYXRlOiBXcmFwVW5pcXVlKCkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAv
LwotLy8gIEFkb3B0cyBvd25lcnNoaXAgZnJvbSBhIHJhdyBwb2ludGVyIGFuZCB0cmFuc2ZlcnMg
aXQgdG8gdGhlIHJldHVybmVkCi0vLyAgYHN0ZDo6dW5pcXVlX3B0cmAsIHdob3NlIHR5cGUgaXMg
ZGVkdWNlZC4gRE8gTk9UIHNwZWNpZnkgdGhlIHRlbXBsYXRlIHR5cGUgVAotLy8gIHdoZW4gY2Fs
bGluZyBXcmFwVW5pcXVlLgorLy8gQWRvcHRzIG93bmVyc2hpcCBmcm9tIGEgcmF3IHBvaW50ZXIg
YW5kIHRyYW5zZmVycyBpdCB0byB0aGUgcmV0dXJuZWQKKy8vIGBzdGQ6OnVuaXF1ZV9wdHJgLCB3
aG9zZSB0eXBlIGlzIGRlZHVjZWQuIEJlY2F1c2Ugb2YgdGhpcyBkZWR1Y3Rpb24sICpkbyBub3Qq
CisvLyBzcGVjaWZ5IHRoZSB0ZW1wbGF0ZSB0eXBlIGBUYCB3aGVuIGNhbGxpbmcgYFdyYXBVbmlx
dWVgLgogLy8KIC8vIEV4YW1wbGU6CiAvLyAgIFgqIE5ld1goaW50LCBpbnQpOwogLy8gICBhdXRv
IHggPSBXcmFwVW5pcXVlKE5ld1goMSwgMikpOyAgLy8gJ3gnIGlzIHN0ZDo6dW5pcXVlX3B0cjxY
Pi4KIC8vCi0vLyBgYWJzbDo6V3JhcFVuaXF1ZWAgaXMgdXNlZnVsIGZvciBjYXB0dXJpbmcgdGhl
IG91dHB1dCBvZiBhIHJhdyBwb2ludGVyCi0vLyBmYWN0b3J5LiBIb3dldmVyLCBwcmVmZXIgJ2Fi
c2w6Om1ha2VfdW5pcXVlPFQ+KGFyZ3MuLi4pIG92ZXIKKy8vIFRoZSBwdXJwb3NlIG9mIFdyYXBV
bmlxdWUgaXMgdG8gYXV0b21hdGljYWxseSBkZWR1Y2UgdGhlIHBvaW50ZXIgdHlwZS4gSWYgeW91
CisvLyB3aXNoIHRvIG1ha2UgdGhlIHR5cGUgZXhwbGljaXQsIGZvciByZWFkYWJpbGl0eSByZWFz
b25zIG9yIGJlY2F1c2UgeW91IHByZWZlcgorLy8gdG8gdXNlIGEgYmFzZS1jbGFzcyBwb2ludGVy
IHJhdGhlciB0aGFuIGEgZGVyaXZlZCBvbmUsIGp1c3QgdXNlCisvLyBgc3RkOjp1bmlxdWVfcHRy
YCBkaXJlY3RseS4KKy8vCisvLyBFeGFtcGxlOgorLy8gICBYKiBGYWN0b3J5KGludCwgaW50KTsK
Ky8vICAgYXV0byB4ID0gc3RkOjp1bmlxdWVfcHRyPFg+KEZhY3RvcnkoMSwgMikpOworLy8gICAg
ICAgICAgICAgICAgICAtIG9yIC0KKy8vICAgc3RkOjp1bmlxdWVfcHRyPFg+IHgoRmFjdG9yeSgx
LCAyKSk7CisvLworLy8gVGhpcyBoYXMgdGhlIGFkZGVkIGFkdmFudGFnZSBvZiB3b3JraW5nIHdo
ZXRoZXIgRmFjdG9yeSByZXR1cm5zIGEgcmF3CisvLyBwb2ludGVyIG9yIGEgYHN0ZDo6dW5pcXVl
X3B0cmAuCisvLworLy8gV2hpbGUgYGFic2w6OldyYXBVbmlxdWVgIGlzIHVzZWZ1bCBmb3IgY2Fw
dHVyaW5nIHRoZSBvdXRwdXQgb2YgYSByYXcKKy8vIHBvaW50ZXIgZmFjdG9yeSwgcHJlZmVyICdh
YnNsOjptYWtlX3VuaXF1ZTxUPihhcmdzLi4uKScgb3ZlcgogLy8gJ2Fic2w6OldyYXBVbmlxdWUo
bmV3IFQoYXJncy4uLikpJy4KIC8vCiAvLyAgIGF1dG8geCA9IFdyYXBVbmlxdWUobmV3IFgoMSwg
MikpOyAgLy8gd29ya3MsIGJ1dCBub25pZGVhbC4KQEAgLTY0MSw1NSArNjU1LDU5IEBAIHN0cnVj
dCBkZWZhdWx0X2FsbG9jYXRvcl9pc19ub3Rocm93IDogc3RkOjpmYWxzZV90eXBlIHt9OwogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBtZW1vcnlfaW50ZXJuYWwgewotI2lmZGVmIEFCU0xfSEFWRV9FWENF
UFRJT05TCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yLCB0eXBlbmFtZSBTdG9yYWdlRWxl
bWVudCwgdHlwZW5hbWUuLi4gQXJncz4KLXZvaWQgQ29uc3RydWN0U3RvcmFnZShBbGxvY2F0b3Iq
IGFsbG9jLCBTdG9yYWdlRWxlbWVudCogZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgU3Rv
cmFnZUVsZW1lbnQqIGxhc3QsIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKLSAgZm9yIChTdG9yYWdl
RWxlbWVudCogY3VyID0gZmlyc3Q7IGN1ciAhPSBsYXN0OyArK2N1cikgeworI2lmZGVmIEFCU0xf
SEFWRV9FWENFUFRJT05TICAvLyBDb25zdHJ1Y3RSYW5nZQordGVtcGxhdGUgPHR5cGVuYW1lIEFs
bG9jYXRvciwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIENvbnN0
cnVjdFJhbmdlKEFsbG9jYXRvciYgYWxsb2MsIEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0
LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBBcmdzJi4uLiBhcmdzKSB7CisgIGZvciAoSXRl
cmF0b3IgY3VyID0gZmlyc3Q7IGN1ciAhPSBsYXN0OyArK2N1cikgewogICAgIHRyeSB7Ci0gICAg
ICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KCphbGxvYywgY3Vy
LCBhcmdzLi4uKTsKKyAgICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25z
dHJ1Y3QoYWxsb2MsIGN1ciwgYXJncy4uLik7CiAgICAgfSBjYXRjaCAoLi4uKSB7CiAgICAgICB3
aGlsZSAoY3VyICE9IGZpcnN0KSB7CiAgICAgICAgIC0tY3VyOwotICAgICAgICBzdGQ6OmFsbG9j
YXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6ZGVzdHJveSgqYWxsb2MsIGN1cik7CisgICAgICAgIHN0
ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0cm95KGFsbG9jLCBjdXIpOwogICAg
ICAgfQogICAgICAgdGhyb3c7CiAgICAgfQogICB9CiB9Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQWxs
b2NhdG9yLCB0eXBlbmFtZSBTdG9yYWdlRWxlbWVudCwgdHlwZW5hbWUgSXRlcmF0b3I+Ci12b2lk
IENvcHlUb1N0b3JhZ2VGcm9tUmFuZ2UoQWxsb2NhdG9yKiBhbGxvYywgU3RvcmFnZUVsZW1lbnQq
IGRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGZpcnN0
LCBJdGVyYXRvciBsYXN0KSB7Ci0gIGZvciAoU3RvcmFnZUVsZW1lbnQqIGN1ciA9IGRlc3RpbmF0
aW9uOyBmaXJzdCAhPSBsYXN0OworI2Vsc2UgICAvLyBBQlNMX0hBVkVfRVhDRVBUSU9OUyAgLy8g
Q29uc3RydWN0UmFuZ2UKK3RlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIEl0
ZXJhdG9yLCB0eXBlbmFtZS4uLiBBcmdzPgordm9pZCBDb25zdHJ1Y3RSYW5nZShBbGxvY2F0b3Im
IGFsbG9jLCBJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQXJncyYuLi4gYXJncykgeworICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJz
dCkgeworICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoYWxs
b2MsIGZpcnN0LCBhcmdzLi4uKTsKKyAgfQorfQorI2VuZGlmICAvLyBBQlNMX0hBVkVfRVhDRVBU
SU9OUyAgLy8gQ29uc3RydWN0UmFuZ2UKKworI2lmZGVmIEFCU0xfSEFWRV9FWENFUFRJT05TICAv
LyBDb3B5UmFuZ2UKK3RlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIEl0ZXJh
dG9yLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgordm9pZCBDb3B5UmFuZ2UoQWxsb2NhdG9yJiBh
bGxvYywgSXRlcmF0b3IgZGVzdGluYXRpb24sIElucHV0SXRlcmF0b3IgZmlyc3QsCisgICAgICAg
ICAgICAgICBJbnB1dEl0ZXJhdG9yIGxhc3QpIHsKKyAgZm9yIChJdGVyYXRvciBjdXIgPSBkZXN0
aW5hdGlvbjsgZmlyc3QgIT0gbGFzdDsKICAgICAgICBzdGF0aWNfY2FzdDx2b2lkPigrK2N1ciks
IHN0YXRpY19jYXN0PHZvaWQ+KCsrZmlyc3QpKSB7CiAgICAgdHJ5IHsKLSAgICAgIHN0ZDo6YWxs
b2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoKmFsbG9jLCBjdXIsICpmaXJzdCk7
CisgICAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KGFsbG9j
LCBjdXIsICpmaXJzdCk7CiAgICAgfSBjYXRjaCAoLi4uKSB7CiAgICAgICB3aGlsZSAoY3VyICE9
IGRlc3RpbmF0aW9uKSB7CiAgICAgICAgIC0tY3VyOwotICAgICAgICBzdGQ6OmFsbG9jYXRvcl90
cmFpdHM8QWxsb2NhdG9yPjo6ZGVzdHJveSgqYWxsb2MsIGN1cik7CisgICAgICAgIHN0ZDo6YWxs
b2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0cm95KGFsbG9jLCBjdXIpOwogICAgICAgfQog
ICAgICAgdGhyb3c7CiAgICAgfQogICB9CiB9Ci0jZWxzZSAgIC8vIEFCU0xfSEFWRV9FWENFUFRJ
T05TCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yLCB0eXBlbmFtZSBTdG9yYWdlRWxlbWVu
dCwgdHlwZW5hbWUuLi4gQXJncz4KLXZvaWQgQ29uc3RydWN0U3RvcmFnZShBbGxvY2F0b3IqIGFs
bG9jLCBTdG9yYWdlRWxlbWVudCogZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgU3RvcmFn
ZUVsZW1lbnQqIGxhc3QsIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKLSAgZm9yICg7IGZpcnN0ICE9
IGxhc3Q7ICsrZmlyc3QpIHsKLSAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6
Y29uc3RydWN0KCphbGxvYywgZmlyc3QsIGFyZ3MuLi4pOwotICB9Ci19Ci10ZW1wbGF0ZSA8dHlw
ZW5hbWUgQWxsb2NhdG9yLCB0eXBlbmFtZSBTdG9yYWdlRWxlbWVudCwgdHlwZW5hbWUgSXRlcmF0
b3I+Ci12b2lkIENvcHlUb1N0b3JhZ2VGcm9tUmFuZ2UoQWxsb2NhdG9yKiBhbGxvYywgU3RvcmFn
ZUVsZW1lbnQqIGRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0KSB7CisjZWxzZSAgIC8vIEFCU0xfSEFWRV9FWENFUFRJ
T05TICAvLyBDb3B5UmFuZ2UKK3RlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1l
IEl0ZXJhdG9yLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgordm9pZCBDb3B5UmFuZ2UoQWxsb2Nh
dG9yJiBhbGxvYywgSXRlcmF0b3IgZGVzdGluYXRpb24sIElucHV0SXRlcmF0b3IgZmlyc3QsCisg
ICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGxhc3QpIHsKICAgZm9yICg7IGZpcnN0ICE9IGxh
c3Q7CiAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZD4oKytkZXN0aW5hdGlvbiksIHN0YXRpY19jYXN0
PHZvaWQ+KCsrZmlyc3QpKSB7Ci0gICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46
OmNvbnN0cnVjdCgqYWxsb2MsIGRlc3RpbmF0aW9uLCAqZmlyc3QpOworICAgIHN0ZDo6YWxsb2Nh
dG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoYWxsb2MsIGRlc3RpbmF0aW9uLCAqZmly
c3QpOwogICB9CiB9Ci0jZW5kaWYgIC8vIEFCU0xfSEFWRV9FWENFUFRJT05TCisjZW5kaWYgIC8v
IEFCU0xfSEFWRV9FWENFUFRJT05TICAvLyBDb3B5UmFuZ2UKIH0gIC8vIG5hbWVzcGFjZSBtZW1v
cnlfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21l
bW9yeS9tZW1vcnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9y
eV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKaW5kZXggZDFmNmU4NGYxMGY4YTY2OGFjMjVmYjZk
OTBjY2M1YTc4MzIwMjIxOS4uMDBkMmIxOTJjZmMzMmRmNjI0MzYzY2E4NjNlYzc5ZjkwZjYxODVi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKQEAg
LTMyLDcgKzMyLDcgQEAgVEVTVChNYWtlVW5pcXVlLCBDaGVja0ZvckxlYWtzKSB7CiAgICAgICAg
ICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFRocm93ZXIoa1ZhbHVlKSkKICAgICAgICAg
ICAgICAgICAgICAgLy8gRW5zdXJlcyBtYWtlX3VuaXF1ZSBkb2VzIG5vdCBtb2RpZnkgdGhlIGlu
cHV0LiBUaGUgcmVhbAogICAgICAgICAgICAgICAgICAgICAvLyB0ZXN0LCB0aG91Z2gsIGlzIENv
bnN0cnVjdG9yVHJhY2tlciBjaGVja2luZyBmb3IgbGVha3MuCi0gICAgICAgICAgICAgICAgICAg
IC5XaXRoSW52YXJpYW50cyh0ZXN0aW5nOjpzdHJvbmdfZ3VhcmFudGVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgLldpdGhDb250cmFjdHModGVzdGluZzo6c3Ryb25nX2d1YXJhbnRlZSk7CiAKICAg
RVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10oVGhyb3dlciogdGhyb3dlcikgewogICAgIHN0YXRp
Y19jYXN0PHZvaWQ+KGFic2w6Om1ha2VfdW5pcXVlPFRocm93ZXI+KCp0aHJvd2VyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5
X3Rlc3QuY2MKaW5kZXggZGVlOWI0ODZhMzBkMzBkMjU1NzA1YWMzODE0ZjE5Zjc4MTk5NDA1My4u
MmU0NTNlMjJiYTViYTM5Y2ZkNjkwZmM1OTFlNGFmZTQ4N2NiNzhhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWVtb3J5L21lbW9yeV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnlfdGVzdC5j
YwpAQCAtMTQ5LDcgKzE0OSw2IEBAIFRFU1QoTWFrZV9VbmlxdWVUZXN0LCBOb3RBbWJpZ3VvdXNX
aXRoU3RkTWFrZVVuaXF1ZSkgewogfQogCiAjaWYgMAotLy8gVE9ETyhiaWxseWRvbmFodWUpOiBN
YWtlIGEgcHJvcGVyIE5DIHRlc3QuCiAvLyBUaGVzZSB0ZXN0cyBzaG91bGRuJ3QgY29tcGlsZS4K
IFRFU1QoTWFrZVVuaXF1ZVRlc3ROQywgQWNjZXB0TW92ZU9ubHlMdmFsdWUpIHsKICAgYXV0byBt
ID0gTW92ZU9ubHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFpdHMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21ldGEvdHlwZV90cmFpdHMuaAppbmRleCA0NTdiODkwODQxYTY0ZmI0ZWQzNmNkZTg2MjFk
NzgyMjE5MGI3OThkLi4yM2ViZDZlZDA5OTBmZDNkOTUxMGQ0ZDkxMDY2ZjA3NGNmZTExMTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90eXBl
X3RyYWl0cy5oCkBAIC0xMDUsOCArMTA1LDI1IEBAIHRlbXBsYXRlIDxjbGFzcyBUbywgdGVtcGxh
dGUgPGNsYXNzLi4uPiBjbGFzcyBPcCwgY2xhc3MuLi4gQXJncz4KIHN0cnVjdCBpc19kZXRlY3Rl
ZF9jb252ZXJ0aWJsZQogICAgIDogaXNfZGV0ZWN0ZWRfY29udmVydGlibGVfaW1wbDx2b2lkLCBU
bywgT3AsIEFyZ3MuLi4+Ojp0eXBlIHt9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5n
IElzQ29weUFzc2lnbmFibGVJbXBsID0KKyAgICBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VCY+KCkg
PSBzdGQ6OmRlY2x2YWw8Y29uc3QgVCY+KCkpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3Vz
aW5nIElzTW92ZUFzc2lnbmFibGVJbXBsID0gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQmPigpID0g
c3RkOjpkZWNsdmFsPFQmJj4oKSk7CisKIH0gIC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0c19pbnRl
cm5hbAogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19jb3B5X2Fzc2lnbmFibGUg
OiB0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfZGV0ZWN0ZWQ8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc0NvcHlBc3NpZ25hYmxlSW1wbCwg
VD4geworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNfbW92ZV9hc3NpZ25h
YmxlIDogdHlwZV90cmFpdHNfaW50ZXJuYWw6OmlzX2RldGVjdGVkPAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlX3RyYWl0c19pbnRlcm5hbDo6SXNNb3ZlQXNzaWduYWJsZUlt
cGwsIFQ+IHsKK307CisKIC8vIHZvaWRfdCgpCiAvLwogLy8gSWdub3JlcyB0aGUgdHlwZSBvZiBh
bnkgaXRzIGFyZ3VtZW50cyBhbmQgcmV0dXJucyBgdm9pZGAuIEluIGdlbmVyYWwsIHRoaXMKQEAg
LTMwOSw3ICszMjYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBpc190cml2aWFs
bHlfY29weV9hc3NpZ25hYmxlCiAgICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PAogICAgICAg
ICAgIGJvb2wsIF9faGFzX3RyaXZpYWxfYXNzaWduKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTxUPjo6dHlwZSkgJiYKLSAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb3B5X2Fzc2ln
bmFibGU8VD46OnZhbHVlPiB7CisgICAgICAgICAgICAgICAgICAgIGFic2w6OmlzX2NvcHlfYXNz
aWduYWJsZTxUPjo6dmFsdWU+IHsKICNpZmRlZiBBQlNMX0hBVkVfU1REX0lTX1RSSVZJQUxMWV9B
U1NJR05BQkxFCiAgcHJpdmF0ZToKICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNvbXBsaWFudCA9
CkBAIC00MDksMTEgKzQyNiwxMSBAQCBzdHJ1Y3QgSXNIYXNoRW5hYmxlZAogICAgIDogYWJzbDo6
Y29uanVuY3Rpb248c3RkOjppc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8c3RkOjpoYXNoPEtleT4+
LAogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8c3Rk
OjpoYXNoPEtleT4+LAogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19kZXN0cnVjdGli
bGU8c3RkOjpoYXNoPEtleT4+LAotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb3B5
X2Fzc2lnbmFibGU8c3RkOjpoYXNoPEtleT4+LAorICAgICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6aXNfY29weV9hc3NpZ25hYmxlPHN0ZDo6aGFzaDxLZXk+PiwKICAgICAgICAgICAgICAgICAg
ICAgICAgIElzSGFzaGFibGU8S2V5Pj4ge307CisKIH0gIC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0
c19pbnRlcm5hbAogCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAogCi0KICNlbmRpZiAgLy8gQUJTTF9N
RVRBX1RZUEVfVFJBSVRTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzX3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzX3Rlc3QuY2MKaW5kZXggODFiNGJkMzIzOTc3
ZTVlM2NkMjc2NjBjNTBjY2VkODZhYjIyNTAxNy4uZjUxZjVkZWRlZTQzNWQ2ODNiNGIyZjVlYjMw
MTJiZDYxYjVlMmFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90eXBlX3RyYWl0c190ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFpdHNfdGVzdC5jYwpAQCAtODc3LDQgKzg3Nyw4MCBA
QCBURVNUKFR5cGVUcmFpdHNUZXN0LCBUZXN0UmVzdWx0T2YpIHsKICAgRVhQRUNUX0VRKFR5cGVF
bnVtOjpELCBHZXRUeXBlRXh0KFdyYXA8VHlwZUQ+KCkpKTsKIH0KIAordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Citib29sIFRlc3RDb3B5QXNzaWduKCkgeworICByZXR1cm4gYWJzbDo6aXNfY29weV9h
c3NpZ25hYmxlPFQ+Ojp2YWx1ZSA9PQorICAgICAgICAgc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8
VD46OnZhbHVlOworfQorCitURVNUKFR5cGVUcmFpdHNUZXN0LCBJc0NvcHlBc3NpZ25hYmxlKSB7
CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPGludD4oKSk7CisgIEVYUEVDVF9UUlVFKFRl
c3RDb3B5QXNzaWduPGludCY+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0Q29weUFzc2lnbjxpbnQm
Jj4oKSk7CisKKyAgc3RydWN0IFMge307CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPFM+
KCkpOworICBFWFBFQ1RfVFJVRShUZXN0Q29weUFzc2lnbjxTJj4oKSk7CisgIEVYUEVDVF9UUlVF
KFRlc3RDb3B5QXNzaWduPFMmJj4oKSk7CisKKyAgY2xhc3MgQyB7CisgICBwdWJsaWM6CisgICAg
ZXhwbGljaXQgQyhDKiBjKSA6IGNfKGMpIHt9CisgICAgfkMoKSB7IGRlbGV0ZSBjXzsgfQorCisg
ICBwcml2YXRlOgorICAgIEMqIGNfOworICB9OworICBFWFBFQ1RfVFJVRShUZXN0Q29weUFzc2ln
bjxDPigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdENvcHlBc3NpZ248QyY+KCkpOworICBFWFBFQ1Rf
VFJVRShUZXN0Q29weUFzc2lnbjxDJiY+KCkpOworCisgIC8vIFJlYXNvbiBmb3IgaWZuZGVmOiBh
ZGRfbHZhbHVlX3JlZmVyZW5jZTxUPiBpbiBsaWJjKysgYnJlYWtzIGZvciB0aGVzZSBjYXNlcwor
I2lmbmRlZiBfTElCQ1BQX1ZFUlNJT04KKyAgRVhQRUNUX1RSVUUoVGVzdENvcHlBc3NpZ248aW50
KCk+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0Q29weUFzc2lnbjxpbnQoaW50KSBjb25zdD4oKSk7
CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPGludCguLi4pIHZvbGF0aWxlJj4oKSk7Cisg
IEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPGludChpbnQsIC4uLikgY29uc3Qgdm9sYXRpbGUm
Jj4oKSk7CisjZW5kaWYgIC8vIF9MSUJDUFBfVkVSU0lPTgorfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2Jvb2wgVGVzdE1vdmVBc3NpZ24oKSB7CisgIHJldHVybiBhYnNsOjppc19tb3ZlX2Fz
c2lnbmFibGU8VD46OnZhbHVlID09CisgICAgICAgICBzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTxU
Pjo6dmFsdWU7Cit9CisKK1RFU1QoVHlwZVRyYWl0c1Rlc3QsIElzTW92ZUFzc2lnbmFibGUpIHsK
KyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248aW50PigpKTsKKyAgRVhQRUNUX1RSVUUoVGVz
dE1vdmVBc3NpZ248aW50Jj4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RNb3ZlQXNzaWduPGludCYm
PigpKTsKKworICBzdHJ1Y3QgUyB7fTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248Uz4o
KSk7CisgIEVYUEVDVF9UUlVFKFRlc3RNb3ZlQXNzaWduPFMmPigpKTsKKyAgRVhQRUNUX1RSVUUo
VGVzdE1vdmVBc3NpZ248UyYmPigpKTsKKworICBjbGFzcyBDIHsKKyAgIHB1YmxpYzoKKyAgICBl
eHBsaWNpdCBDKEMqIGMpIDogY18oYykge30KKyAgICB+QygpIHsgZGVsZXRlIGNfOyB9CisgICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgQyYpID0gZGVsZXRlOworICAgIHZvaWQgb3BlcmF0b3I9KEMm
JikgPSBkZWxldGU7CisKKyAgIHByaXZhdGU6CisgICAgQyogY187CisgIH07CisgIEVYUEVDVF9U
UlVFKFRlc3RNb3ZlQXNzaWduPEM+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFzc2lnbjxD
Jj4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RNb3ZlQXNzaWduPEMmJj4oKSk7CisKKyAgLy8gUmVh
c29uIGZvciBpZm5kZWY6IGFkZF9sdmFsdWVfcmVmZXJlbmNlPFQ+IGluIGxpYmMrKyBicmVha3Mg
Zm9yIHRoZXNlIGNhc2VzCisjaWZuZGVmIF9MSUJDUFBfVkVSU0lPTgorICBFWFBFQ1RfVFJVRShU
ZXN0TW92ZUFzc2lnbjxpbnQoKT4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RNb3ZlQXNzaWduPGlu
dChpbnQpIGNvbnN0PigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248aW50KC4uLikg
dm9sYXRpbGUmPigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248aW50KGludCwgLi4u
KSBjb25zdCB2b2xhdGlsZSYmPigpKTsKKyNlbmRpZiAgLy8gX0xJQkNQUF9WRVJTSU9OCit9CisK
IH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9CVUlMRC5iYXplbCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL251bWVyaWMvQlVJTEQuYmF6ZWwKaW5kZXggZjQ5NTcxZWJiM2UxMDQyNDM0MTUxYTIy
MzcxMjdhOTlkZjFhZDMwMS4uMzI0Y2U2Njk1ZTQwMmM4OTczZmM1YjVkZjI1N2FhNWYyNjUyMDNk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1l
cmljL0JVSUxELmJhemVsCkBAIC00OSw2ICs0OSw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICI6aW50
MTI4IiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVf
aGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvaGFzaDpoYXNoX3Rlc3RpbmciLAogICAgICAgICAi
Ly9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVz
dC8vOmd0ZXN0X21haW4iLAogICAgIF0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEy
OC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjguaAppbmRleCAyZDEzMWI4YmRhMWMzNDhkOTE3NDNl
N2M0MmQzOGE1Nzk2OGMzMzBiLi43OWI2MmE3NTg2Njk1ZDViMmY0MzFkMzhhZjUyYTBhYjIyNzRh
ZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVy
aWMvaW50MTI4LmgKQEAgLTE5Miw2ICsxOTIsMTIgQEAgY2xhc3MKICAgLy8gUmV0dXJucyB0aGUg
aGlnaGVzdCB2YWx1ZSBmb3IgYSAxMjgtYml0IHVuc2lnbmVkIGludGVnZXIuCiAgIGZyaWVuZCBj
b25zdGV4cHIgdWludDEyOCBVaW50MTI4TWF4KCk7CiAKKyAgLy8gU3VwcG9ydCBmb3IgYWJzbDo6
SGFzaC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUo
SCBoLCB1aW50MTI4IHYpIHsKKyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIFVp
bnQxMjhIaWdoNjQodiksIFVpbnQxMjhMb3c2NCh2KSk7CisgIH0KKwogIHByaXZhdGU6CiAgIGNv
bnN0ZXhwciB1aW50MTI4KHVpbnQ2NF90IGhpZ2gsIHVpbnQ2NF90IGxvdyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF90
ZXN0LmNjCmluZGV4IDFlYjNlMGVjODk2MWMxYzZjODg3NTZlZjFmMjAxZjAyMDNhZWUwYTIuLmRm
ZTM0NzVhY2EwNjI3YjI5ZTYzM2NjMmY4NWNlODQ2YjYxYmMzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L251bWVyaWMvaW50MTI4X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfdGVzdC5j
YwpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNsdWRl
ICJhYnNsL2Jhc2UvaW50ZXJuYWwvY3ljbGVjbG9jay5oIgorI2luY2x1ZGUgImFic2wvaGFzaC9o
YXNoX3Rlc3RpbmcuaCIKICNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKIAogI2lm
IGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID09IDE5MDAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmJhemVsCmluZGV4IDNh
NWYxMzMyY2RhMGUxZjcwNDBlZjBkYmRhZTU1N2IwMTgyMTM4NTQuLjZkN2MyNjE5YTUzMGUwMDBm
NzRlYTMxMTVkZmQ3OTdkNzAyMDU0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQu
YmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9CVUlMRC5iYXplbApAQCAtMTksNiArMTksNyBAQCBs
b2FkKAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAog
ICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBRyIsCisgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJ
TktPUFRTIiwKICkKIAogcGFja2FnZSgKQEAgLTY5LDYgKzcwLDcgQEAgY2NfbGlicmFyeSgKICAg
ICBkZXBzID0gWwogICAgICAgICAiOmludGVybmFsIiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwK
KyAgICAgICAgIi8vYWJzbC9iYXNlOmJpdHMiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmln
IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgICAgICIvL2Fic2wv
YmFzZTplbmRpYW4iLApAQCAtODYsNyArODgsNiBAQCBjY19saWJyYXJ5KAogICAgICAgICAiaW50
ZXJuYWwvdXRmOC5jYyIsCiAgICAgXSwKICAgICBoZHJzID0gWwotICAgICAgICAiaW50ZXJuYWwv
Yml0cy5oIiwKICAgICAgICAgImludGVybmFsL2NoYXJfbWFwLmgiLAogICAgICAgICAiaW50ZXJu
YWwvb3N0cmluZ3N0cmVhbS5oIiwKICAgICAgICAgImludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxp
emVkLmgiLApAQCAtMjEyLDcgKzIxMyw2IEBAIGNjX3Rlc3QoCiAgICAgdmlzaWJpbGl0eSA9IFsi
Ly92aXNpYmlsaXR5OnByaXZhdGUiXSwKICAgICBkZXBzID0gWwogICAgICAgICAiOmludGVybmFs
IiwKLSAgICAgICAgIjpzdHJpbmdzIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVy
cyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCiAgICAg
XSwKQEAgLTIzNyw2ICsyMzcsNyBAQCBjY190ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAogICAg
IHNyY3MgPSBbInN0cmluZ192aWV3X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJ
T05TX0ZMQUdfTElOS09QVFMsCiAgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZh
dGUiXSwKICAgICBkZXBzID0gWwogICAgICAgICAiOnN0cmluZ3MiLApAQCAtMzczLDcgKzM3NCw2
IEBAIGNjX3Rlc3QoCiAgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwK
ICAgICBkZXBzID0gWwogICAgICAgICAiOnN0cmluZ3MiLAotICAgICAgICAiLy9hYnNsL21lbW9y
eSIsCiAgICAgICAgICJAY29tX2dpdGh1Yl9nb29nbGVfYmVuY2htYXJrLy86YmVuY2htYXJrX21h
aW4iLAogICAgIF0sCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmduIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9CVUlMRC5nbgppbmRleCA5YThhMTBkMGU3MTA4ZTc5ZTQyYzljNWIzNjM1NWNm
ODc5MDE2Yjk1Li4yMGFmODNjMGU1MThiNjUwZWIyZTg5OWQzZTdiM2M5ZWZlN2MxMDhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQu
Z24KQEAgLTU5LDYgKzU5LDcgQEAgc291cmNlX3NldCgic3RyaW5ncyIpIHsKICAgZGVwcyA9IFsK
ICAgICAiOmludGVybmFsIiwKICAgICAiLi4vYmFzZSIsCisgICAgIi4uL2Jhc2U6Yml0cyIsCiAg
ICAgIi4uL2Jhc2U6Y29uZmlnIiwKICAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAogICAgICIu
Li9iYXNlOmVuZGlhbiIsCkBAIC04MSw3ICs4Miw2IEBAIHNvdXJjZV9zZXQoImludGVybmFsIikg
ewogICAgICJpbnRlcm5hbC91dGY4LmNjIiwKICAgXQogICBwdWJsaWMgPSBbCi0gICAgImludGVy
bmFsL2JpdHMuaCIsCiAgICAgImludGVybmFsL2NoYXJfbWFwLmgiLAogICAgICJpbnRlcm5hbC9v
c3RyaW5nc3RyZWFtLmgiLAogICAgICJpbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZC5oIiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L0NNYWtlTGlzdHMudHh0CmluZGV4IGNkMTIyMTM0NzI5ZmE2ODZlOTg2MTAyNjlmMThhY2IxOGY4
ZDMwMDcuLmYzZTQxNjIzODdmMTVjODMyZDc1MDYyYWRjYzZiN2VkNWQ1ZGExN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9DTWFr
ZUxpc3RzLnR4dApAQCAtMzIsNyArMzIsNiBAQCBsaXN0KEFQUEVORCBTVFJJTkdTX1BVQkxJQ19I
RUFERVJTCiAKIAogbGlzdChBUFBFTkQgU1RSSU5HU19JTlRFUk5BTF9IRUFERVJTCi0gICJpbnRl
cm5hbC9iaXRzLmgiCiAgICJpbnRlcm5hbC9jaGFyX21hcC5oIgogICAiaW50ZXJuYWwvY2hhcmNv
bnZfYmlnaW50LmgiCiAgICJpbnRlcm5hbC9jaGFyY29udl9wYXJzZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9hc2NpaS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaS5oCmluZGV4IDk2YTY0
NTQxYzMyMWE3MTBkMjllZmM4ZDkyNjM4NjJmMWI5OTYwZTcuLjQ4YTlkYTIyZTc2OWE4NTEyOGE2
OWNmMmRmYzMzMjk4MGFmZWQ0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWkuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpLmgKQEAgLTE2NSw3ICsxNjUsNyBAQCBpbmxpbmUgY2hh
ciBhc2NpaV90b2xvd2VyKHVuc2lnbmVkIGNoYXIgYykgewogLy8gQ29udmVydHMgdGhlIGNoYXJh
Y3RlcnMgaW4gYHNgIHRvIGxvd2VyY2FzZSwgY2hhbmdpbmcgdGhlIGNvbnRlbnRzIG9mIGBzYC4K
IHZvaWQgQXNjaWlTdHJUb0xvd2VyKHN0ZDo6c3RyaW5nKiBzKTsKIAotLy8gQ3JlYXRlcyBhIGxv
d2VyY2FzZSBzdGQ6OnN0cmluZyBmcm9tIGEgZ2l2ZW4gYWJzbDo6c3RyaW5nX3ZpZXcuCisvLyBD
cmVhdGVzIGEgbG93ZXJjYXNlIHN0cmluZyBmcm9tIGEgZ2l2ZW4gYWJzbDo6c3RyaW5nX3ZpZXcu
CiBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgc3RkOjpzdHJpbmcgQXNjaWlTdHJUb0xvd2Vy
KGFic2w6OnN0cmluZ192aWV3IHMpIHsKICAgc3RkOjpzdHJpbmcgcmVzdWx0KHMpOwogICBhYnNs
OjpBc2NpaVN0clRvTG93ZXIoJnJlc3VsdCk7CkBAIC0xODMsNyArMTgzLDcgQEAgaW5saW5lIGNo
YXIgYXNjaWlfdG91cHBlcih1bnNpZ25lZCBjaGFyIGMpIHsKIC8vIENvbnZlcnRzIHRoZSBjaGFy
YWN0ZXJzIGluIGBzYCB0byB1cHBlcmNhc2UsIGNoYW5naW5nIHRoZSBjb250ZW50cyBvZiBgc2Au
CiB2b2lkIEFzY2lpU3RyVG9VcHBlcihzdGQ6OnN0cmluZyogcyk7CiAKLS8vIENyZWF0ZXMgYW4g
dXBwZXJjYXNlIHN0ZDo6c3RyaW5nIGZyb20gYSBnaXZlbiBhYnNsOjpzdHJpbmdfdmlldy4KKy8v
IENyZWF0ZXMgYW4gdXBwZXJjYXNlIHN0cmluZyBmcm9tIGEgZ2l2ZW4gYWJzbDo6c3RyaW5nX3Zp
ZXcuCiBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgc3RkOjpzdHJpbmcgQXNjaWlTdHJUb1Vw
cGVyKGFic2w6OnN0cmluZ192aWV3IHMpIHsKICAgc3RkOjpzdHJpbmcgcmVzdWx0KHMpOwogICBh
YnNsOjpBc2NpaVN0clRvVXBwZXIoJnJlc3VsdCk7CkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBBQlNM
X01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgc3RkOjpzdHJpbmcgQXNjaWlTdHJUb1VwcGVyKGFic2w6
OnN0cmluZ192aWV3IHMpIHsKIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGlubGluZSBhYnNsOjpzdHJp
bmdfdmlldyBTdHJpcExlYWRpbmdBc2NpaVdoaXRlc3BhY2UoCiAgICAgYWJzbDo6c3RyaW5nX3Zp
ZXcgc3RyKSB7CiAgIGF1dG8gaXQgPSBzdGQ6OmZpbmRfaWZfbm90KHN0ci5iZWdpbigpLCBzdHIu
ZW5kKCksIGFic2w6OmFzY2lpX2lzc3BhY2UpOwotICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXco
aXQsIHN0ci5lbmQoKSAtIGl0KTsKKyAgcmV0dXJuIHN0ci5zdWJzdHIoaXQgLSBzdHIuYmVnaW4o
KSk7CiB9CiAKLS8vIFN0cmlwcyBpbiBwbGFjZSB3aGl0ZXNwYWNlIGZyb20gdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcuCisvLyBTdHJpcHMgaW4gcGxhY2Ugd2hpdGVzcGFj
ZSBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGdpdmVuIHN0cmluZy4KIGlubGluZSB2b2lkIFN0
cmlwTGVhZGluZ0FzY2lpV2hpdGVzcGFjZShzdGQ6OnN0cmluZyogc3RyKSB7CiAgIGF1dG8gaXQg
PSBzdGQ6OmZpbmRfaWZfbm90KHN0ci0+YmVnaW4oKSwgc3RyLT5lbmQoKSwgYWJzbDo6YXNjaWlf
aXNzcGFjZSk7CiAgIHN0ci0+ZXJhc2Uoc3RyLT5iZWdpbigpLCBpdCk7CkBAIC0yMDksMTAgKzIw
OSwxMCBAQCBpbmxpbmUgdm9pZCBTdHJpcExlYWRpbmdBc2NpaVdoaXRlc3BhY2Uoc3RkOjpzdHJp
bmcqIHN0cikgewogQUJTTF9NVVNUX1VTRV9SRVNVTFQgaW5saW5lIGFic2w6OnN0cmluZ192aWV3
IFN0cmlwVHJhaWxpbmdBc2NpaVdoaXRlc3BhY2UoCiAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgc3Ry
KSB7CiAgIGF1dG8gaXQgPSBzdGQ6OmZpbmRfaWZfbm90KHN0ci5yYmVnaW4oKSwgc3RyLnJlbmQo
KSwgYWJzbDo6YXNjaWlfaXNzcGFjZSk7Ci0gIHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyhzdHIu
YmVnaW4oKSwgc3RyLnJlbmQoKSAtIGl0KTsKKyAgcmV0dXJuIHN0ci5zdWJzdHIoMCwgc3RyLnJl
bmQoKSAtIGl0KTsKIH0KIAotLy8gU3RyaXBzIGluIHBsYWNlIHdoaXRlc3BhY2UgZnJvbSB0aGUg
ZW5kIG9mIHRoZSBnaXZlbiBzdGQ6OnN0cmluZworLy8gU3RyaXBzIGluIHBsYWNlIHdoaXRlc3Bh
Y2UgZnJvbSB0aGUgZW5kIG9mIHRoZSBnaXZlbiBzdHJpbmcKIGlubGluZSB2b2lkIFN0cmlwVHJh
aWxpbmdBc2NpaVdoaXRlc3BhY2Uoc3RkOjpzdHJpbmcqIHN0cikgewogICBhdXRvIGl0ID0gc3Rk
OjpmaW5kX2lmX25vdChzdHItPnJiZWdpbigpLCBzdHItPnJlbmQoKSwgYWJzbDo6YXNjaWlfaXNz
cGFjZSk7CiAgIHN0ci0+ZXJhc2Uoc3RyLT5yZW5kKCkgLSBpdCk7CkBAIC0yMjUsNyArMjI1LDcg
QEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgaW5saW5lIGFic2w6OnN0cmluZ192aWV3IFN0cmlwQXNj
aWlXaGl0ZXNwYWNlKAogICByZXR1cm4gU3RyaXBUcmFpbGluZ0FzY2lpV2hpdGVzcGFjZShTdHJp
cExlYWRpbmdBc2NpaVdoaXRlc3BhY2Uoc3RyKSk7CiB9CiAKLS8vIFN0cmlwcyBpbiBwbGFjZSB3
aGl0ZXNwYWNlIGZyb20gYm90aCBlbmRzIG9mIHRoZSBnaXZlbiBzdGQ6OnN0cmluZworLy8gU3Ry
aXBzIGluIHBsYWNlIHdoaXRlc3BhY2UgZnJvbSBib3RoIGVuZHMgb2YgdGhlIGdpdmVuIHN0cmlu
ZwogaW5saW5lIHZvaWQgU3RyaXBBc2NpaVdoaXRlc3BhY2Uoc3RkOjpzdHJpbmcqIHN0cikgewog
ICBTdHJpcFRyYWlsaW5nQXNjaWlXaGl0ZXNwYWNlKHN0cik7CiAgIFN0cmlwTGVhZGluZ0FzY2lp
V2hpdGVzcGFjZShzdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvY2hhcmNvbnYuY2MKaW5kZXggMDhjMzk0N2VjY2Q0NzVkZWUzMzMxMGQy
NDdiZjg3NDAwMzk5ODBjOC4uYzdiOGM5OGIxYjQ0NTljNTZlYTg1MWU5MjgxZTM1YTkyNjEzYzYw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2NoYXJjb252LmNjCkBAIC0yMCw4ICsyMCw4IEBACiAjaW5jbHVkZSA8Y3N0cmluZz4KIAog
I2luY2x1ZGUgImFic2wvYmFzZS9jYXN0cy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5h
bC9iaXRzLmgiCiAjaW5jbHVkZSAiYWJzbC9udW1lcmljL2ludDEyOC5oIgotI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9pbnRlcm5hbC9iaXRzLmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVy
bmFsL2NoYXJjb252X2JpZ2ludC5oIgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9j
aGFyY29udl9wYXJzZS5oIgogCkBAIC0yNDMsOSArMjQzLDkgQEAgc3RydWN0IENhbGN1bGF0ZWRG
bG9hdCB7CiAvLyBtaW51cyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVybyBiaXRzLikKIGludCBC
aXRXaWR0aCh1aW50MTI4IHZhbHVlKSB7CiAgIGlmIChVaW50MTI4SGlnaDY0KHZhbHVlKSA9PSAw
KSB7Ci0gICAgcmV0dXJuIDY0IC0gc3RyaW5nc19pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2
NChVaW50MTI4TG93NjQodmFsdWUpKTsKKyAgICByZXR1cm4gNjQgLSBiYXNlX2ludGVybmFsOjpD
b3VudExlYWRpbmdaZXJvczY0KFVpbnQxMjhMb3c2NCh2YWx1ZSkpOwogICB9Ci0gIHJldHVybiAx
MjggLSBzdHJpbmdzX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0KFVpbnQxMjhIaWdoNjQo
dmFsdWUpKTsKKyAgcmV0dXJuIDEyOCAtIGJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9z
NjQoVWludDEyOEhpZ2g2NCh2YWx1ZSkpOwogfQogCiAvLyBDYWxjdWxhdGVzIGhvdyBmYXIgdG8g
dGhlIHJpZ2h0IGEgbWFudGlzc2EgbmVlZHMgdG8gYmUgc2hpZnRlZCB0byBjcmVhdGUgYQpAQCAt
NTE4LDcgKzUxOCw3IEBAIENhbGN1bGF0ZWRGbG9hdCBDYWxjdWxhdGVGcm9tUGFyc2VkSGV4YWRl
Y2ltYWwoCiAgICAgY29uc3Qgc3RyaW5nc19pbnRlcm5hbDo6UGFyc2VkRmxvYXQmIHBhcnNlZF9o
ZXgpIHsKICAgdWludDY0X3QgbWFudGlzc2EgPSBwYXJzZWRfaGV4Lm1hbnRpc3NhOwogICBpbnQg
ZXhwb25lbnQgPSBwYXJzZWRfaGV4LmV4cG9uZW50OwotICBpbnQgbWFudGlzc2Ffd2lkdGggPSA2
NCAtIHN0cmluZ3NfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQobWFudGlzc2EpOworICBp
bnQgbWFudGlzc2Ffd2lkdGggPSA2NCAtIGJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9z
NjQobWFudGlzc2EpOwogICBjb25zdCBpbnQgc2hpZnQgPSBOb3JtYWxpemVkU2hpZnRTaXplPEZs
b2F0VHlwZT4obWFudGlzc2Ffd2lkdGgsIGV4cG9uZW50KTsKICAgYm9vbCByZXN1bHRfZXhhY3Q7
CiAgIGV4cG9uZW50ICs9IHNoaWZ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29u
di5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5oCmluZGV4IDNlMzEzNjc5Yzk2MThhYTg4ZGM5
ZThiNTVlODhlOTZhMGY3ZjY5NmIuLjA3MzUzODI5NjIzNTZjZmY3YmZiNWYzZWJkM2EwMzkzZDJk
MjgxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnYuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2NoYXJjb252LmgKQEAgLTIyLDcgKzIyLDcgQEAgbmFtZXNwYWNlIGFic2wgewogLy8g
V29ya2FsaWtlIGNvbXBhdGliaWx0eSB2ZXJzaW9uIG9mIHN0ZDo6Y2hhcnNfZm9ybWF0IGZyb20g
QysrMTcuCiAvLwogLy8gVGhpcyBpcyBhbiBiaXRmaWVsZCBlbnVtZXJhdG9yIHdoaWNoIGNhbiBi
ZSBwYXNzZWQgdG8gYWJzbDo6ZnJvbV9jaGFycyB0bwotLy8gY29uZmlndXJlIHRoZSBzdGQ6OnN0
cmluZy10by1mbG9hdCBjb252ZXJzaW9uLgorLy8gY29uZmlndXJlIHRoZSBzdHJpbmctdG8tZmxv
YXQgY29udmVyc2lvbi4KIGVudW0gY2xhc3MgY2hhcnNfZm9ybWF0IHsKICAgc2NpZW50aWZpYyA9
IDEsCiAgIGZpeGVkID0gMiwKQEAgLTMwLDcgKzMwLDcgQEAgZW51bSBjbGFzcyBjaGFyc19mb3Jt
YXQgewogICBnZW5lcmFsID0gZml4ZWQgfCBzY2llbnRpZmljLAogfTsKIAotLy8gVGhlIHJldHVy
biByZXN1bHQgb2YgYSBzdGQ6OnN0cmluZy10by1udW1iZXIgY29udmVyc2lvbi4KKy8vIFRoZSBy
ZXR1cm4gcmVzdWx0IG9mIGEgc3RyaW5nLXRvLW51bWJlciBjb252ZXJzaW9uLgogLy8KIC8vIGBl
Y2Agd2lsbCBiZSBzZXQgdG8gYGludmFsaWRfYXJndW1lbnRgIGlmIGEgd2VsbC1mb3JtZWQgbnVt
YmVyIHdhcyBub3QgZm91bmQKIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgaW5wdXQgcmFuZ2UsIGBy
ZXN1bHRfb3V0X29mX3JhbmdlYCBpZiBhIHdlbGwtZm9ybWVkCkBAIC02Nyw3ICs2Nyw3IEBAIHN0
cnVjdCBmcm9tX2NoYXJzX3Jlc3VsdCB7CiAvLyBJZiBgZm10YCBpcyBzZXQsIGl0IG11c3QgYmUg
b25lIG9mIHRoZSBlbnVtZXJhdG9yIHZhbHVlcyBvZiB0aGUgY2hhcnNfZm9ybWF0LgogLy8gKFRo
aXMgaXMgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IGNoYXJzX2Zvcm1hdCBpcyBhIGJpdG1hc2sgdHlw
ZS4pICBJZiBzZXQgdG8KIC8vIGBzY2llbnRpZmljYCwgYSBtYXRjaGluZyBudW1iZXIgbXVzdCBj
b250YWluIGFuIGV4cG9uZW50LiAgSWYgc2V0IHRvIGBmaXhlZGAsCi0vLyB0aGVuIGFuIGV4cG9u
ZW50IHdpbGwgbmV2ZXIgbWF0Y2guICAoRm9yIGV4YW1wbGUsIHRoZSBzdGQ6OnN0cmluZyAiMWU1
IiB3aWxsIGJlCisvLyB0aGVuIGFuIGV4cG9uZW50IHdpbGwgbmV2ZXIgbWF0Y2guICAoRm9yIGV4
YW1wbGUsIHRoZSBzdHJpbmcgIjFlNSIgd2lsbCBiZQogLy8gcGFyc2VkIGFzICIxIi4pICBJZiBz
ZXQgdG8gYGhleGAsIHRoZW4gYSBoZXhhZGVjaW1hbCBmbG9hdCBpcyBwYXJzZWQgaW4gdGhlCiAv
LyBmb3JtYXQgdGhhdCBzdHJ0b2QoKSBhY2NlcHRzLCBleGNlcHQgdGhhdCBhICIweCIgcHJlZml4
IGlzIE5PVCBtYXRjaGVkLgogLy8gKEluIHBhcnRpY3VsYXIsIGluIGBoZXhgIG1vZGUsIHRoZSBp
bnB1dCAiMHhmZiIgcmVzdWx0cyBpbiB0aGUgbGFyZ2VzdApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9jaGFyY29udl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udl90ZXN0LmNjCmlu
ZGV4IGY4ZDcxY2M2YzQ0OGM3YTNlN2YwY2FmOTgwOThmYzdiNGQyZDU2NDIuLjg5NDE4ZmU5NDhm
ZmVkYzRiNzVhYzJmYTgxMGZkNDQxNjYwNWMzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
Y2hhcmNvbnZfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252X3Rlc3QuY2MKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIHsKIAogI2lmIEFCU0xfQ09NUElMRVJfRE9FU19FWEFD
VF9ST1VORElORwogCi0vLyBUZXN0cyB0aGF0IHRoZSBnaXZlbiBzdGQ6OnN0cmluZyBpcyBhY2Nl
cHRlZCBieSBhYnNsOjpmcm9tX2NoYXJzLCBhbmQgdGhhdCBpdAorLy8gVGVzdHMgdGhhdCB0aGUg
Z2l2ZW4gc3RyaW5nIGlzIGFjY2VwdGVkIGJ5IGFic2w6OmZyb21fY2hhcnMsIGFuZCB0aGF0IGl0
CiAvLyBjb252ZXJ0cyBleGFjdGx5IGVxdWFsIHRvIHRoZSBnaXZlbiBudW1iZXIuCiB2b2lkIFRl
c3REb3VibGVQYXJzZShhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGRvdWJsZSBleHBlY3RlZF9udW1i
ZXIpIHsKICAgU0NPUEVEX1RSQUNFKHN0cik7CkBAIC0yNTAsNyArMjUwLDcgQEAgVEVTVChGcm9t
Q2hhcnMsIE5lYXJSb3VuZGluZ0Nhc2VzRXhwbGljaXQpIHsKICAgRVhQRUNUX0VRKFRvRmxvYXQo
IjQ1OTkyNjYwMTAxMS5lMTUiKSwgbGRleHBmKDEyNDY2MzM2LCA2NSkpOwogfQogCi0vLyBDb21t
b24gdGVzdCBsb2dpYyBmb3IgY29udmVydGluZyBhIHN0ZDo6c3RyaW5nIHdoaWNoIGxpZXMgZXhh
Y3RseSBoYWxmd2F5IGJldHdlZW4KKy8vIENvbW1vbiB0ZXN0IGxvZ2ljIGZvciBjb252ZXJ0aW5n
IGEgc3RyaW5nIHdoaWNoIGxpZXMgZXhhY3RseSBoYWxmd2F5IGJldHdlZW4KIC8vIHR3byB0YXJn
ZXQgZmxvYXRzLgogLy8KIC8vIG1hbnRpc3NhIGFuZCBleHBvbmVudCByZXByZXNlbnQgdGhlIHBy
ZWNpc2UgdmFsdWUgYmV0d2VlbiB0d28gZmxvYXRpbmcgcG9pbnQKQEAgLTY1NSw3ICs2NTUsNyBA
QCBpbnQgTmV4dFN0ZXAoaW50IHN0ZXApIHsKIC8vIGlzIGNvcnJlY3QgZm9yIGluLWJvdW5kcyB2
YWx1ZXMsIGFuZCB0aGF0IG92ZXJmbG93IGFuZCB1bmRlcmZsb3cgYXJlIGRvbmUKIC8vIGNvcnJl
Y3RseSBmb3Igb3V0LW9mLWJvdW5kcyB2YWx1ZXMuCiAvLwotLy8gaW5wdXRfZ2VuZXJhdG9yIG1h
cHMgZnJvbSBhbiBpbnRlZ2VyIGluZGV4IHRvIGEgc3RkOjpzdHJpbmcgdG8gdGVzdC4KKy8vIGlu
cHV0X2dlbmVyYXRvciBtYXBzIGZyb20gYW4gaW50ZWdlciBpbmRleCB0byBhIHN0cmluZyB0byB0
ZXN0LgogLy8gZXhwZWN0ZWRfZ2VuZXJhdG9yIG1hcHMgZnJvbSBhbiBpbnRlZ2VyIGluZGV4IHRv
IGFuIGV4cGVjdGVkIEZsb2F0IHZhbHVlLgogLy8gZnJvbV9jaGFycyBjb252ZXJzaW9uIG9mIGlu
cHV0X2dlbmVyYXRvcihpKSBzaG91bGQgcmVzdWx0IGluCiAvLyBleHBlY3RlZF9nZW5lcmF0b3Io
aSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9lc2NhcGluZy5jYwppbmRleCBmYmM5Zjc1NjMxNWZhN2ZlOWE3YmIwMjVkNDhjM2ZiMjg0Yjll
OGZiLi44ZDhiMDBiMjAwMWNlODMwN2I0ODc4ODAwN2NjNTY1NWE3NWY1NGZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcu
Y2MKQEAgLTg5LDcgKzg5LDcgQEAgaW5saW5lIGJvb2wgSXNTdXJyb2dhdGUoY2hhcjMyX3QgYywg
YWJzbDo6c3RyaW5nX3ZpZXcgc3JjLCBzdGQ6OnN0cmluZyogZXJyb3IpIHsKIC8vCiAvLyAgICBV
bmVzY2FwZXMgQyBlc2NhcGUgc2VxdWVuY2VzIGFuZCBpcyB0aGUgcmV2ZXJzZSBvZiBDRXNjYXBl
KCkuCiAvLwotLy8gICAgSWYgJ3NvdXJjZScgaXMgdmFsaWQsIHN0b3JlcyB0aGUgdW5lc2NhcGVk
IHN0ZDo6c3RyaW5nIGFuZCBpdHMgc2l6ZSBpbgorLy8gICAgSWYgJ3NvdXJjZScgaXMgdmFsaWQs
IHN0b3JlcyB0aGUgdW5lc2NhcGVkIHN0cmluZyBhbmQgaXRzIHNpemUgaW4KIC8vICAgICdkZXN0
JyBhbmQgJ2Rlc3RfbGVuJyByZXNwZWN0aXZlbHksIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lz
ZQogLy8gICAgcmV0dXJucyBmYWxzZSBhbmQgb3B0aW9uYWxseSBzdG9yZXMgdGhlIGVycm9yIGRl
c2NyaXB0aW9uIGluCiAvLyAgICAnZXJyb3InLiBTZXQgJ2Vycm9yJyB0byBudWxscHRyIHRvIGRp
c2FibGUgZXJyb3IgcmVwb3J0aW5nLgpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgQ1VuZXNjYXBl
SW50ZXJuYWwoYWJzbDo6c3RyaW5nX3ZpZXcgc291cmNlLCBib29sIGxlYXZlX251bGxzX2VzY2Fw
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGRlc3QsIHB0cmRpZmZfdCogZGVzdF9s
ZW4sIHN0ZDo6c3RyaW5nKiBlcnJvcikgewogICBjaGFyKiBkID0gZGVzdDsKICAgY29uc3QgY2hh
ciogcCA9IHNvdXJjZS5kYXRhKCk7Ci0gIGNvbnN0IGNoYXIqIGVuZCA9IHNvdXJjZS5lbmQoKTsK
KyAgY29uc3QgY2hhciogZW5kID0gcCArIHNvdXJjZS5zaXplKCk7CiAgIGNvbnN0IGNoYXIqIGxh
c3RfYnl0ZSA9IGVuZCAtIDE7CiAKICAgLy8gU21hbGwgb3B0aW1pemF0aW9uIGZvciBjYXNlIHdo
ZXJlIHNvdXJjZSA9IGRlc3QgYW5kIHRoZXJlJ3Mgbm8gZXNjYXBpbmcKQEAgLTI5NCw3ICsyOTQs
NyBAQCBib29sIENVbmVzY2FwZUludGVybmFsKGFic2w6OnN0cmluZ192aWV3IHNvdXJjZSwgYm9v
bCBsZWF2ZV9udWxsc19lc2NhcGVkLAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gQ1VuZXNjYXBlSW50
ZXJuYWwoKQogLy8KLS8vICAgIFNhbWUgYXMgYWJvdmUgYnV0IHVzZXMgYSBDKysgc3RkOjpzdHJp
bmcgZm9yIG91dHB1dC4gJ3NvdXJjZScgYW5kICdkZXN0JworLy8gICAgU2FtZSBhcyBhYm92ZSBi
dXQgdXNlcyBhIEMrKyBzdHJpbmcgZm9yIG91dHB1dC4gJ3NvdXJjZScgYW5kICdkZXN0JwogLy8g
ICAgbWF5IGJlIHRoZSBzYW1lLgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYm9vbCBDVW5lc2NhcGVJbnRl
cm5hbChhYnNsOjpzdHJpbmdfdmlldyBzb3VyY2UsIGJvb2wgbGVhdmVfbnVsbHNfZXNjYXBlZCwK
QEAgLTMwNCw3ICszMDQsNyBAQCBib29sIENVbmVzY2FwZUludGVybmFsKGFic2w6OnN0cmluZ192
aWV3IHNvdXJjZSwgYm9vbCBsZWF2ZV9udWxsc19lc2NhcGVkLAogICBwdHJkaWZmX3QgZGVzdF9z
aXplOwogICBpZiAoIUNVbmVzY2FwZUludGVybmFsKHNvdXJjZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBsZWF2ZV9udWxsc19lc2NhcGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0X2Nhc3Q8Y2hhcio+KGRlc3QtPmRhdGEoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
JigqZGVzdClbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlc3Rfc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvcikpIHsKICAgICByZXR1cm4gZmFsc2U7CkBAIC02ODQs
NyArNjg0LDcgQEAgYm9vbCBCYXNlNjRVbmVzY2FwZUludGVybmFsKGNvbnN0IGNoYXIqIHNyY19w
YXJhbSwgc2l6ZV90IHN6c3JjLCBjaGFyKiBkZXN0LAogLy8gVGhlIGFycmF5cyBiZWxvdyB3ZXJl
IGdlbmVyYXRlZCBieSB0aGUgZm9sbG93aW5nIGNvZGUKIC8vICNpbmNsdWRlIDxzeXMvdGltZS5o
PgogLy8gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLy8gI2luY2x1ZGUgPHN0ZDo6c3RyaW5nLmg+Cisv
LyAjaW5jbHVkZSA8c3RyaW5nLmg+CiAvLyBtYWluKCkKIC8vIHsKIC8vICAgc3RhdGljIGNvbnN0
IGNoYXIgQmFzZTY0W10gPQpAQCAtOTM5LDcgKzkzOSw4IEBAIGNvbnN0ZXhwciBjaGFyIGtCYXNl
NjRDaGFyc1tdID0KIGNvbnN0ZXhwciBjaGFyIGtXZWJTYWZlQmFzZTY0Q2hhcnNbXSA9CiAgICAg
IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIz
NDU2Nzg5LV8iOwogCi12b2lkIEJhc2U2NEVzY2FwZUludGVybmFsKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIHNyYywgc2l6ZV90IHN6c3JjLCBzdGQ6OnN0cmluZyogZGVzdCwKK3RlbXBsYXRlIDx0eXBl
bmFtZSBTdHJpbmc+Cit2b2lkIEJhc2U2NEVzY2FwZUludGVybmFsKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIHNyYywgc2l6ZV90IHN6c3JjLCBTdHJpbmcqIGRlc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZG9fcGFkZGluZywgY29uc3QgY2hhciogYmFzZTY0X2NoYXJzKSB7CiAgIGNv
bnN0IHNpemVfdCBjYWxjX2VzY2FwZWRfc2l6ZSA9CiAgICAgICBDYWxjdWxhdGVCYXNlNjRFc2Nh
cGVkTGVuSW50ZXJuYWwoc3pzcmMsIGRvX3BhZGRpbmcpOwpAQCAtOTUxLDcgKzk1Miw4IEBAIHZv
aWQgQmFzZTY0RXNjYXBlSW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBzaXplX3Qg
c3pzcmMsIHN0ZDo6c3RyaW5nKiBkCiAgIGRlc3QtPmVyYXNlKGVzY2FwZWRfbGVuKTsKIH0KIAot
Ym9vbCBCYXNlNjRVbmVzY2FwZUludGVybmFsKGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IHNsZW4s
IHN0ZDo6c3RyaW5nKiBkZXN0LAordGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZz4KK2Jvb2wgQmFz
ZTY0VW5lc2NhcGVJbnRlcm5hbChjb25zdCBjaGFyKiBzcmMsIHNpemVfdCBzbGVuLCBTdHJpbmcq
IGRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbmVkIGNoYXIqIHVu
YmFzZTY0KSB7CiAgIC8vIERldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IHN0ZDo6c3Ry
aW5nLiAgQmFzZTY0IGVuY29kZXMgZXZlcnkgMyBieXRlcyBpbnRvCiAgIC8vIDQgY2hhcmFjdGVy
cy4gIGFueSBsZWZ0b3ZlciBjaGFycyBhcmUgYWRkZWQgZGlyZWN0bHkgZm9yIGdvb2QgbWVhc3Vy
ZS4KQEAgLTk5OSw3ICsxMDAxLDcgQEAgY29uc3RleHByIGNoYXIga0hleFZhbHVlWzI1Nl0gPSB7
CiAvKiBjbGFuZy1mb3JtYXQgb24gKi8KIAogLy8gVGhpcyBpcyBhIHRlbXBsYXRlZCBmdW5jdGlv
biBzbyB0aGF0IFQgY2FuIGJlIGVpdGhlciBhIGNoYXIqCi0vLyBvciBhIHN0ZDo6c3RyaW5nLiAg
VGhpcyB3b3JrcyBiZWNhdXNlIHdlIHVzZSB0aGUgW10gb3BlcmF0b3IgdG8gYWNjZXNzCisvLyBv
ciBhIHN0cmluZy4gIFRoaXMgd29ya3MgYmVjYXVzZSB3ZSB1c2UgdGhlIFtdIG9wZXJhdG9yIHRv
IGFjY2VzcwogLy8gaW5kaXZpZHVhbCBjaGFyYWN0ZXJzIGF0IGEgdGltZS4KIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogdm9pZCBIZXhTdHJpbmdUb0J5dGVzSW50ZXJuYWwoY29uc3QgY2hhciogZnJv
bSwgVCB0bywgcHRyZGlmZl90IG51bSkgewpAQCAtMTAwOSw3ICsxMDExLDcgQEAgdm9pZCBIZXhT
dHJpbmdUb0J5dGVzSW50ZXJuYWwoY29uc3QgY2hhciogZnJvbSwgVCB0bywgcHRyZGlmZl90IG51
bSkgewogICB9CiB9CiAKLS8vIFRoaXMgaXMgYSB0ZW1wbGF0ZWQgZnVuY3Rpb24gc28gdGhhdCBU
IGNhbiBiZSBlaXRoZXIgYSBjaGFyKiBvciBhIHN0ZDo6c3RyaW5nLgorLy8gVGhpcyBpcyBhIHRl
bXBsYXRlZCBmdW5jdGlvbiBzbyB0aGF0IFQgY2FuIGJlIGVpdGhlciBhIGNoYXIqIG9yIGEgc3Ry
aW5nLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB2b2lkIEJ5dGVzVG9IZXhTdHJpbmdJbnRlcm5h
bChjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmMsIFQgZGVzdCwgcHRyZGlmZl90IG51bSkgewogICBh
dXRvIGRlc3RfcHRyID0gJmRlc3RbMF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2Fw
aW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmgKaW5kZXggN2YxYWI5NmQ4ZmYxNWQ1NjA0
MmI0NjU5ZDY2MTQ4MjE0NzA1ZjBhNS4uMjk2NTk3MzA0ZTZjZTNmNTg2NWRjMDNhOTY3ZjM0MzE4
ZTY5YjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvZXNjYXBpbmcuaApAQCAtMTcsNyArMTcsNyBAQAogLy8gRmlsZTogZXNjYXBpbmcu
aAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0vLyBUaGlzIGhlYWRlciBmaWxlIGNvbnRh
aW5zIHN0ZDo6c3RyaW5nIHV0aWxpdGllcyBpbnZvbHZlZCBpbiBlc2NhcGluZyBhbmQKKy8vIFRo
aXMgaGVhZGVyIGZpbGUgY29udGFpbnMgc3RyaW5nIHV0aWxpdGllcyBpbnZvbHZlZCBpbiBlc2Nh
cGluZyBhbmQKIC8vIHVuZXNjYXBpbmcgc3RyaW5ncyBpbiB2YXJpb3VzIHdheXMuCiAvLwogCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBhYnNsIHsKIAogLy8gQ1VuZXNjYXBlKCkKIC8vCi0v
LyBVbmVzY2FwZXMgYSBgc291cmNlYCBzdGQ6OnN0cmluZyBhbmQgY29waWVzIGl0IGludG8gYGRl
c3RgLCByZXdyaXRpbmcgQy1zdHlsZQorLy8gVW5lc2NhcGVzIGEgYHNvdXJjZWAgc3RyaW5nIGFu
ZCBjb3BpZXMgaXQgaW50byBgZGVzdGAsIHJld3JpdGluZyBDLXN0eWxlCiAvLyBlc2NhcGUgc2Vx
dWVuY2VzIChodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lc2NhcGUp
IGludG8KIC8vIHRoZWlyIHByb3BlciBjb2RlIHBvaW50IGVxdWl2YWxlbnRzLCByZXR1cm5pbmcg
YHRydWVgIGlmIHN1Y2Nlc3NmdWwuCiAvLwpAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIGFi
c2wgewogLy8gICAgIDB4OTkpLgogLy8KIC8vCi0vLyBJZiBhbnkgZXJyb3JzIGFyZSBlbmNvdW50
ZXJlZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWAgYW5kIHN0b3JlcyB0aGUKLS8vIGZp
cnN0IGVuY291bnRlcmVkIGVycm9yIGluIGBlcnJvcmAuIFRvIGRpc2FibGUgZXJyb3IgcmVwb3J0
aW5nLCBzZXQgYGVycm9yYAotLy8gdG8gYG51bGxwdHJgIG9yIHVzZSB0aGUgb3ZlcmxvYWQgd2l0
aCBubyBlcnJvciByZXBvcnRpbmcgYmVsb3cuCisvLyBJZiBhbnkgZXJyb3JzIGFyZSBlbmNvdW50
ZXJlZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWAsIGxlYXZpbmcgdGhlCisvLyBgZGVz
dGAgb3V0cHV0IHBhcmFtZXRlciBpbiBhbiB1bnNwZWNpZmllZCBzdGF0ZSwgYW5kIHN0b3JlcyB0
aGUgZmlyc3QKKy8vIGVuY291bnRlcmVkIGVycm9yIGluIGBlcnJvcmAuIFRvIGRpc2FibGUgZXJy
b3IgcmVwb3J0aW5nLCBzZXQgYGVycm9yYCB0bworLy8gYG51bGxwdHJgIG9yIHVzZSB0aGUgb3Zl
cmxvYWQgd2l0aCBubyBlcnJvciByZXBvcnRpbmcgYmVsb3cuCiAvLwogLy8gRXhhbXBsZToKIC8v
CkBAIC03OCw3ICs3OSw3IEBAIGlubGluZSBib29sIENVbmVzY2FwZShhYnNsOjpzdHJpbmdfdmll
dyBzb3VyY2UsIHN0ZDo6c3RyaW5nKiBkZXN0KSB7CiAKIC8vIENFc2NhcGUoKQogLy8KLS8vIEVz
Y2FwZXMgYSAnc3JjJyBzdGQ6OnN0cmluZyB1c2luZyBDLXN0eWxlIGVzY2FwZXMgc2VxdWVuY2Vz
CisvLyBFc2NhcGVzIGEgJ3NyYycgc3RyaW5nIHVzaW5nIEMtc3R5bGUgZXNjYXBlcyBzZXF1ZW5j
ZXMKIC8vIChodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lc2NhcGUp
LCBlc2NhcGluZyBvdGhlcgogLy8gbm9uLXByaW50YWJsZS9ub24td2hpdGVzcGFjZSBieXRlcyBh
cyBvY3RhbCBzZXF1ZW5jZXMgKGUuZy4gIlwzNzciKS4KIC8vCkBAIC05MSw3ICs5Miw3IEBAIHN0
ZDo6c3RyaW5nIENFc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjKTsKIAogLy8gQ0hleEVzY2Fw
ZSgpCiAvLwotLy8gRXNjYXBlcyBhICdzcmMnIHN0ZDo6c3RyaW5nIHVzaW5nIEMtc3R5bGUgZXNj
YXBlIHNlcXVlbmNlcywgZXNjYXBpbmcKKy8vIEVzY2FwZXMgYSAnc3JjJyBzdHJpbmcgdXNpbmcg
Qy1zdHlsZSBlc2NhcGUgc2VxdWVuY2VzLCBlc2NhcGluZwogLy8gb3RoZXIgbm9uLXByaW50YWJs
ZS9ub24td2hpdGVzcGFjZSBieXRlcyBhcyBoZXhhZGVjaW1hbCBzZXF1ZW5jZXMgKGUuZy4KIC8v
ICJceEZGIikuCiAvLwpAQCAtMTA0LDcgKzEwNSw3IEBAIHN0ZDo6c3RyaW5nIENIZXhFc2NhcGUo
YWJzbDo6c3RyaW5nX3ZpZXcgc3JjKTsKIAogLy8gVXRmOFNhZmVDRXNjYXBlKCkKIC8vCi0vLyBF
c2NhcGVzIGEgJ3NyYycgc3RkOjpzdHJpbmcgdXNpbmcgQy1zdHlsZSBlc2NhcGUgc2VxdWVuY2Vz
LCBlc2NhcGluZyBieXRlcyBhcworLy8gRXNjYXBlcyBhICdzcmMnIHN0cmluZyB1c2luZyBDLXN0
eWxlIGVzY2FwZSBzZXF1ZW5jZXMsIGVzY2FwaW5nIGJ5dGVzIGFzCiAvLyBvY3RhbCBzZXF1ZW5j
ZXMsIGFuZCBwYXNzaW5nIHRocm91Z2ggVVRGLTggY2hhcmFjdGVycyB3aXRob3V0IGNvbnZlcnNp
b24uCiAvLyBJLmUuLCB3aGVuIGVuY291bnRlcmluZyBhbnkgYnl0ZXMgd2l0aCB0aGVpciBoaWdo
IGJpdCBzZXQsIHRoaXMgZnVuY3Rpb24KIC8vIHdpbGwgbm90IGVzY2FwZSB0aG9zZSB2YWx1ZXMs
IHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIHZhbGlkIFVURi04LgpAQCAtMTEyLDQ3ICsxMTMsNDcg
QEAgc3RkOjpzdHJpbmcgVXRmOFNhZmVDRXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYyk7CiAK
IC8vIFV0ZjhTYWZlQ0hleEVzY2FwZSgpCiAvLwotLy8gRXNjYXBlcyBhICdzcmMnIHN0ZDo6c3Ry
aW5nIHVzaW5nIEMtc3R5bGUgZXNjYXBlIHNlcXVlbmNlcywgZXNjYXBpbmcgYnl0ZXMgYXMKKy8v
IEVzY2FwZXMgYSAnc3JjJyBzdHJpbmcgdXNpbmcgQy1zdHlsZSBlc2NhcGUgc2VxdWVuY2VzLCBl
c2NhcGluZyBieXRlcyBhcwogLy8gaGV4YWRlY2ltYWwgc2VxdWVuY2VzLCBhbmQgcGFzc2luZyB0
aHJvdWdoIFVURi04IGNoYXJhY3RlcnMgd2l0aG91dAogLy8gY29udmVyc2lvbi4KIHN0ZDo6c3Ry
aW5nIFV0ZjhTYWZlQ0hleEVzY2FwZShhYnNsOjpzdHJpbmdfdmlldyBzcmMpOwogCiAvLyBCYXNl
NjRVbmVzY2FwZSgpCiAvLwotLy8gQ29udmVydHMgYSBgc3JjYCBzdGQ6OnN0cmluZyBlbmNvZGVk
IGluIEJhc2U2NCB0byBpdHMgYmluYXJ5IGVxdWl2YWxlbnQsIHdyaXRpbmcKKy8vIENvbnZlcnRz
IGEgYHNyY2Agc3RyaW5nIGVuY29kZWQgaW4gQmFzZTY0IHRvIGl0cyBiaW5hcnkgZXF1aXZhbGVu
dCwgd3JpdGluZwogLy8gaXQgdG8gYSBgZGVzdGAgYnVmZmVyLCByZXR1cm5pbmcgYHRydWVgIG9u
IHN1Y2Nlc3MuIElmIGBzcmNgIGNvbnRhaW5zIGludmFsaWQKIC8vIGNoYXJhY3RlcnMsIGBkZXN0
YCBpcyBjbGVhcmVkIGFuZCByZXR1cm5zIGBmYWxzZWAuCiBib29sIEJhc2U2NFVuZXNjYXBlKGFi
c2w6OnN0cmluZ192aWV3IHNyYywgc3RkOjpzdHJpbmcqIGRlc3QpOwogCi0vLyBXZWJTYWZlQmFz
ZTY0VW5lc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcsIHN0ZDo6c3RyaW5nKikKKy8vIFdlYlNhZmVC
YXNlNjRVbmVzY2FwZSgpCiAvLwotLy8gQ29udmVydHMgYSBgc3JjYCBzdGQ6OnN0cmluZyBlbmNv
ZGVkIGluIEJhc2U2NCB0byBpdHMgYmluYXJ5IGVxdWl2YWxlbnQsIHdyaXRpbmcKKy8vIENvbnZl
cnRzIGEgYHNyY2Agc3RyaW5nIGVuY29kZWQgaW4gQmFzZTY0IHRvIGl0cyBiaW5hcnkgZXF1aXZh
bGVudCwgd3JpdGluZwogLy8gaXQgdG8gYSBgZGVzdGAgYnVmZmVyLCBidXQgdXNpbmcgJy0nIGlu
c3RlYWQgb2YgJysnLCBhbmQgJ18nIGluc3RlYWQgb2YgJy8nLgogLy8gSWYgYHNyY2AgY29udGFp
bnMgaW52YWxpZCBjaGFyYWN0ZXJzLCBgZGVzdGAgaXMgY2xlYXJlZCBhbmQgcmV0dXJucyBgZmFs
c2VgLgogYm9vbCBXZWJTYWZlQmFzZTY0VW5lc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjLCBz
dGQ6OnN0cmluZyogZGVzdCk7CiAKIC8vIEJhc2U2NEVzY2FwZSgpCiAvLwotLy8gRW5jb2RlcyBh
IGBzcmNgIHN0ZDo6c3RyaW5nIGludG8gYSBgZGVzdGAgYnVmZmVyIHVzaW5nIGJhc2U2NCBlbmNv
ZGluZywgd2l0aAorLy8gRW5jb2RlcyBhIGBzcmNgIHN0cmluZyBpbnRvIGEgYGRlc3RgIGJ1ZmZl
ciB1c2luZyBiYXNlNjQgZW5jb2RpbmcsIHdpdGgKIC8vIHBhZGRpbmcgY2hhcmFjdGVycy4gVGhp
cyBmdW5jdGlvbiBjb25mb3JtcyB3aXRoIFJGQyA0NjQ4IHNlY3Rpb24gNCAoYmFzZTY0KS4KIHZv
aWQgQmFzZTY0RXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYywgc3RkOjpzdHJpbmcqIGRlc3Qp
OwogCiAvLyBXZWJTYWZlQmFzZTY0RXNjYXBlKCkKIC8vCi0vLyBFbmNvZGVzIGEgYHNyY2Agc3Rk
OjpzdHJpbmcgaW50byBhIGBkZXN0YCBidWZmZXIgdXNpbmcgJy0nIGluc3RlYWQgb2YgJysnIGFu
ZAorLy8gRW5jb2RlcyBhIGBzcmNgIHN0cmluZyBpbnRvIGEgYGRlc3RgIGJ1ZmZlciB1c2luZyAn
LScgaW5zdGVhZCBvZiAnKycgYW5kCiAvLyAnXycgaW5zdGVhZCBvZiAnLycsIGFuZCB3aXRob3V0
IHBhZGRpbmcuIFRoaXMgZnVuY3Rpb24gY29uZm9ybXMgd2l0aCBSRkMgNDY0OAogLy8gc2VjdGlv
biA1IChiYXNlNjR1cmwpLgogdm9pZCBXZWJTYWZlQmFzZTY0RXNjYXBlKGFic2w6OnN0cmluZ192
aWV3IHNyYywgc3RkOjpzdHJpbmcqIGRlc3QpOwogCiAvLyBIZXhTdHJpbmdUb0J5dGVzKCkKIC8v
Ci0vLyBDb252ZXJ0cyBhbiBBU0NJSSBoZXggc3RkOjpzdHJpbmcgaW50byBieXRlcywgcmV0dXJu
aW5nIGJpbmFyeSBkYXRhIG9mIGxlbmd0aAorLy8gQ29udmVydHMgYW4gQVNDSUkgaGV4IHN0cmlu
ZyBpbnRvIGJ5dGVzLCByZXR1cm5pbmcgYmluYXJ5IGRhdGEgb2YgbGVuZ3RoCiAvLyBgZnJvbS5z
aXplKCkvMmAuCiBzdGQ6OnN0cmluZyBIZXhTdHJpbmdUb0J5dGVzKGFic2w6OnN0cmluZ192aWV3
IGZyb20pOwogCiAvLyBCeXRlc1RvSGV4U3RyaW5nKCkKIC8vCi0vLyBDb252ZXJ0cyBiaW5hcnkg
ZGF0YSBpbnRvIGFuIEFTQ0lJIHRleHQgc3RkOjpzdHJpbmcsIHJldHVybmluZyBhIHN0ZDo6c3Ry
aW5nIG9mIHNpemUKKy8vIENvbnZlcnRzIGJpbmFyeSBkYXRhIGludG8gYW4gQVNDSUkgdGV4dCBz
dHJpbmcsIHJldHVybmluZyBhIHN0cmluZyBvZiBzaXplCiAvLyBgMipmcm9tLnNpemUoKWAuCiBz
dGQ6OnN0cmluZyBCeXRlc1RvSGV4U3RyaW5nKGFic2w6OnN0cmluZ192aWV3IGZyb20pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2VzY2FwaW5nX3Rlc3QuY2MKaW5kZXggM2Y2NWVjMTA3ZjQ1NTVjOTUwZmY3NzdlODllOTNkMjNl
NDMzNzhlNS4uOWRjMjdmM2Y4ZmE3NjhhMmE5MWNkYWY5NTAzN2Q3NGNmZjAxYWViYyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZ190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
ZXNjYXBpbmdfdGVzdC5jYwpAQCAtNTQzLDE4ICs1NDMsMTkgQEAgc3RhdGljIHN0cnVjdCB7CiAg
ICAgeyJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsICJZV0pqWkdWbVoyaHBhbXRzYlc1dmNI
RnljM1IxZG5kNGVYbz0ifSwKIH07CiAKLVRFU1QoQmFzZTY0LCBFc2NhcGVBbmRVbmVzY2FwZSkg
ewordGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+Cit2b2lkIFRlc3RFc2NhcGVBbmRVbmVz
Y2FwZSgpIHsKICAgLy8gQ2hlY2sgdGhlIHNob3J0IHN0cmluZ3M7IHRoaXMgdGVzdHMgdGhlIG1h
dGggKGFuZCBib3VuZGFyaWVzKQogICBmb3IgKGNvbnN0IGF1dG8mIHRjIDogYmFzZTY0X3Rlc3Rz
KSB7Ci0gICAgc3RkOjpzdHJpbmcgZW5jb2RlZCgidGhpcyBqdW5rIHNob3VsZCBiZSBpZ25vcmVk
Iik7CisgICAgU3RyaW5nVHlwZSBlbmNvZGVkKCJ0aGlzIGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQi
KTsKICAgICBhYnNsOjpCYXNlNjRFc2NhcGUodGMucGxhaW50ZXh0LCAmZW5jb2RlZCk7CiAgICAg
RVhQRUNUX0VRKGVuY29kZWQsIHRjLmN5cGhlcnRleHQpOwogCi0gICAgc3RkOjpzdHJpbmcgZGVj
b2RlZCgidGhpcyBqdW5rIHNob3VsZCBiZSBpZ25vcmVkIik7CisgICAgU3RyaW5nVHlwZSBkZWNv
ZGVkKCJ0aGlzIGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQiKTsKICAgICBFWFBFQ1RfVFJVRShhYnNs
OjpCYXNlNjRVbmVzY2FwZShlbmNvZGVkLCAmZGVjb2RlZCkpOwogICAgIEVYUEVDVF9FUShkZWNv
ZGVkLCB0Yy5wbGFpbnRleHQpOwogCi0gICAgc3RkOjpzdHJpbmcgd2Vic2FmZSh0Yy5jeXBoZXJ0
ZXh0KTsKKyAgICBTdHJpbmdUeXBlIHdlYnNhZmUodGMuY3lwaGVydGV4dCk7CiAgICAgZm9yIChp
bnQgYyA9IDA7IGMgPCB3ZWJzYWZlLnNpemUoKTsgKytjKSB7CiAgICAgICBpZiAoJysnID09IHdl
YnNhZmVbY10pIHdlYnNhZmVbY10gPSAnLSc7CiAgICAgICBpZiAoJy8nID09IHdlYnNhZmVbY10p
IHdlYnNhZmVbY10gPSAnXyc7CkBAIC01NzYsNyArNTc3LDcgQEAgVEVTVChCYXNlNjQsIEVzY2Fw
ZUFuZFVuZXNjYXBlKSB7CiAKICAgLy8gTm93IHRyeSB0aGUgbG9uZyBzdHJpbmdzLCB0aGlzIHRl
c3RzIHRoZSBzdHJlYW1pbmcKICAgZm9yIChjb25zdCBhdXRvJiB0YyA6IGFic2w6OnN0cmluZ3Nf
aW50ZXJuYWw6OmJhc2U2NF9zdHJpbmdzKCkpIHsKLSAgICBzdGQ6OnN0cmluZyBidWZmZXI7Cisg
ICAgU3RyaW5nVHlwZSBidWZmZXI7CiAgICAgYWJzbDo6V2ViU2FmZUJhc2U2NEVzY2FwZSh0Yy5w
bGFpbnRleHQsICZidWZmZXIpOwogICAgIEVYUEVDVF9FUSh0Yy5jeXBoZXJ0ZXh0LCBidWZmZXIp
OwogICB9CkBAIC01ODYsNyArNTg3LDcgQEAgVEVTVChCYXNlNjQsIEVzY2FwZUFuZFVuZXNjYXBl
KSB7CiAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgZGF0YV9zZXRbXSA9IHsiYWItLyIsIGFic2w6OnN0
cmluZ192aWV3KCJcMGJjZCIsIDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6c3RyaW5nX3ZpZXcoImFiYy5cMCIsIDUpfTsKICAgICBmb3IgKGFic2w6OnN0cmlu
Z192aWV3IGJhZF9kYXRhIDogZGF0YV9zZXQpIHsKLSAgICAgIHN0ZDo6c3RyaW5nIGJ1ZjsKKyAg
ICAgIFN0cmluZ1R5cGUgYnVmOwogICAgICAgRVhQRUNUX0ZBTFNFKGFic2w6OkJhc2U2NFVuZXNj
YXBlKGJhZF9kYXRhLCAmYnVmKSk7CiAgICAgICBFWFBFQ1RfRkFMU0UoYWJzbDo6V2ViU2FmZUJh
c2U2NFVuZXNjYXBlKGJhZF9kYXRhLCAmYnVmKSk7CiAgICAgICBFWFBFQ1RfVFJVRShidWYuZW1w
dHkoKSk7CkBAIC01OTQsNiArNTk1LDEwIEBAIFRFU1QoQmFzZTY0LCBFc2NhcGVBbmRVbmVzY2Fw
ZSkgewogICB9CiB9CiAKK1RFU1QoQmFzZTY0LCBFc2NhcGVBbmRVbmVzY2FwZSkgeworICBUZXN0
RXNjYXBlQW5kVW5lc2NhcGU8c3RkOjpzdHJpbmc+KCk7Cit9CisKIFRFU1QoQmFzZTY0LCBESVNB
QkxFRF9IdWdlRGF0YSkgewogICBjb25zdCBzaXplX3Qga1NpemUgPSBzaXplX3QoMykgKiAxMDAw
ICogMTAwMCAqIDEwMDA7CiAgIHN0YXRpY19hc3NlcnQoa1NpemUgJSAzID09IDAsICJrU2l6ZSBt
dXN0IGJlIGRpdmlzaWJsZSBieSAzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL2JpdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvYml0cy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5MDEwODJjY2RkZmNhNzg0NTdjNzQ2ZmJlMjJlZTU3MDk5MzNiZmFm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvYml0cy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgotLy8KLS8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgotLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0vLwotLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLS8vCi0vLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCi0vLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0vLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
Ci0vLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotI2lmbmRlZiBBQlNMX1NUUklO
R1NfSU5URVJOQUxfQklUU19IXwotI2RlZmluZSBBQlNMX1NUUklOR1NfSU5URVJOQUxfQklUU19I
XwotCi0jaW5jbHVkZSA8Y3N0ZGludD4KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIGRlZmlu
ZWQoX01fWDY0KQotI2luY2x1ZGUgPGludHJpbi5oPgotI3ByYWdtYSBpbnRyaW5zaWMoX0JpdFNj
YW5SZXZlcnNlNjQpCi0jZW5kaWYKLQotbmFtZXNwYWNlIGFic2wgewotbmFtZXNwYWNlIHN0cmlu
Z3NfaW50ZXJuYWwgewotCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgbGVhZGluZyAwIGJpdHMg
aW4gYSA2NC1iaXQgdmFsdWUuCi1pbmxpbmUgaW50IENvdW50TGVhZGluZ1plcm9zNjQodWludDY0
X3QgbikgewotI2lmIGRlZmluZWQoX19HTlVDX18pCi0gIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHVu
c2lnbmVkIGxvbmcgbG9uZykgPT0gc2l6ZW9mKG4pLCAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQot
ICAgICAgICAgICAgICAgICJfX2J1aWx0aW5fY2x6bGwgZG9lcyBub3QgdGFrZSA2NGJpdCBhcmci
KTsKLSAgcmV0dXJuIG4gPT0gMCA/IDY0IDogX19idWlsdGluX2NsemxsKG4pOwotI2VsaWYgZGVm
aW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfTV9YNjQpCi0gIHVuc2lnbmVkIGxvbmcgcmVzdWx0
OyAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQotICBpZiAoX0JpdFNjYW5SZXZlcnNlNjQoJnJlc3Vs
dCwgbikpIHsKLSAgICByZXR1cm4gNjMgLSByZXN1bHQ7Ci0gIH0KLSAgcmV0dXJuIDY0OwotI2Vs
c2UKLSAgaW50IHplcm9lcyA9IDYwOwotICBpZiAobiA+PiAzMikgemVyb2VzIC09IDMyLCBuID4+
PSAzMjsKLSAgaWYgKG4gPj4gMTYpIHplcm9lcyAtPSAxNiwgbiA+Pj0gMTY7Ci0gIGlmIChuID4+
IDgpIHplcm9lcyAtPSA4LCBuID4+PSA4OwotICBpZiAobiA+PiA0KSB6ZXJvZXMgLT0gNCwgbiA+
Pj0gNDsKLSAgcmV0dXJuICJcNFwzXDJcMlwxXDFcMVwxXDBcMFwwXDBcMFwwXDBcMCJbbl0gKyB6
ZXJvZXM7Ci0jZW5kaWYKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwKLX0g
IC8vIG5hbWVzcGFjZSBhYnNsCi0KLSNlbmRpZiAgLy8gQUJTTF9TVFJJTkdTX0lOVEVSTkFMX0JJ
VFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2Uu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3BhcnNlLmNjCmluZGV4IGEwNGNj
Njc2NjlhN2Y3NWY5MzZhNzY3YzVmMjIzY2IzNTkyZDllYmIuLjdlNGRhYmMyMjYyZWZmNzcyNmI3
MmY1NDgwMzE1NGEwNDJhYWE3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
Y2hhcmNvbnZfcGFyc2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9w
YXJzZS5jYwpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWNfYXNzZXJ0KHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6ZGlnaXRzMTAgPj0ga0RlY2ltYWxFeHBvbmVudERpZ2l0c01heCwKIAogLy8gVG8g
YXZvaWQgaW5jcmVkaWJseSBsYXJnZSBpbnB1dHMgY2F1c2luZyBpbnRlZ2VyIG92ZXJmbG93IGZv
ciBvdXIgZXhwb25lbnQsCiAvLyB3ZSBpbXBvc2UgYW4gYXJiaXRyYXJ5IGJ1dCB2ZXJ5IGxhcmdl
IGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQKLS8vIGRpZ2l0cyB3ZSB3aWxsIGFj
Y2VwdC4gIFRoZSBpbXBsZW1lbnRhdGlvbiByZWZ1c2VzIHRvIG1hdGNoIGEgc3RkOjpzdHJpbmcg
d2l0aAorLy8gZGlnaXRzIHdlIHdpbGwgYWNjZXB0LiAgVGhlIGltcGxlbWVudGF0aW9uIHJlZnVz
ZXMgdG8gbWF0Y2ggYSBzdHJpbmcgd2l0aAogLy8gbW9yZSBjb25zZWN1dGl2ZSBzaWduaWZpY2Fu
dCBtYW50aXNzYSBkaWdpdHMgdGhhbiB0aGlzLgogY29uc3RleHByIGludCBrRGVjaW1hbERpZ2l0
TGltaXQgPSA1MDAwMDAwMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9j
aGFyY29udl9wYXJzZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9w
YXJzZV90ZXN0LmNjCmluZGV4IDFmZjg2MDA0OTczYTgyZmNkNzBlMzAxYzgwOGE5NDM0OWVkM2Ji
YjEuLmY0OGI5YWVlMWE1ZTg0ZGIzYjFjYzI5NmFhYjM2M2YyYzMzZGIzNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2VfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3BhcnNlX3Rlc3QuY2MKQEAgLTI5LDE2ICsyOSwx
NiBAQCB1c2luZyBhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpQYXJzZUZsb2F0OwogCiBuYW1lc3Bh
Y2UgewogCi0vLyBDaGVjayB0aGF0IGEgZ2l2ZW4gc3RkOjpzdHJpbmcgaW5wdXQgaXMgcGFyc2Vk
IHRvIHRoZSBleHBlY3RlZCBtYW50aXNzYSBhbmQKKy8vIENoZWNrIHRoYXQgYSBnaXZlbiBzdHJp
bmcgaW5wdXQgaXMgcGFyc2VkIHRvIHRoZSBleHBlY3RlZCBtYW50aXNzYSBhbmQKIC8vIGV4cG9u
ZW50LgogLy8KLS8vIElucHV0IHN0ZDo6c3RyaW5nIGBzYCBtdXN0IGNvbnRhaW4gYSAnJCcgY2hh
cmFjdGVyLiAgSXQgbWFya3MgdGhlIGVuZCBvZiB0aGUKKy8vIElucHV0IHN0cmluZyBgc2AgbXVz
dCBjb250YWluIGEgJyQnIGNoYXJhY3Rlci4gIEl0IG1hcmtzIHRoZSBlbmQgb2YgdGhlCiAvLyBj
aGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGJlIGNvbnN1bWVkIGJ5IHRoZSBtYXRjaC4gIEl0IGlzIHN0
cmlwcGVkIGZyb20gdGhlCiAvLyBpbnB1dCB0byBQYXJzZUZsb2F0LgogLy8KLS8vIElmIGlucHV0
IHN0ZDo6c3RyaW5nIGBzYCBjb250YWlucyAnWycgYW5kICddJyBjaGFyYWN0ZXJzLCB0aGVzZSBt
YXJrIHRoZSByZWdpb24KKy8vIElmIGlucHV0IHN0cmluZyBgc2AgY29udGFpbnMgJ1snIGFuZCAn
XScgY2hhcmFjdGVycywgdGhlc2UgbWFyayB0aGUgcmVnaW9uCiAvLyBvZiBjaGFyYWN0ZXJzIHRo
YXQgc2hvdWxkIGJlIG1hcmtlZCBhcyB0aGUgInN1YnJhbmdlIi4gIEZvciBOYU5zLCB0aGlzIGlz
Ci0vLyB0aGUgbG9jYXRpb24gb2YgdGhlIGV4dGVuZGVkIE5hTiBzdGQ6OnN0cmluZy4gIEZvciBu
dW1iZXJzLCB0aGlzIGlzIHRoZSBsb2NhdGlvbgorLy8gdGhlIGxvY2F0aW9uIG9mIHRoZSBleHRl
bmRlZCBOYU4gc3RyaW5nLiAgRm9yIG51bWJlcnMsIHRoaXMgaXMgdGhlIGxvY2F0aW9uCiAvLyBv
ZiB0aGUgZnVsbCwgb3Zlci1sYXJnZSBtYW50aXNzYS4KIHRlbXBsYXRlIDxpbnQgYmFzZT4KIHZv
aWQgRXhwZWN0UGFyc2VkRmxvYXQoc3RkOjpzdHJpbmcgcywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZv
cm1hdF9mbGFncywKQEAgLTkyLDEwICs5MiwxMCBAQCB2b2lkIEV4cGVjdFBhcnNlZEZsb2F0KHN0
ZDo6c3RyaW5nIHMsIGFic2w6OmNoYXJzX2Zvcm1hdCBmb3JtYXRfZmxhZ3MsCiAgIEVYUEVDVF9F
UShjaGFyYWN0ZXJzX21hdGNoZWQsIGV4cGVjdGVkX2NoYXJhY3RlcnNfbWF0Y2hlZCk7CiB9CiAK
LS8vIENoZWNrIHRoYXQgYSBnaXZlbiBzdGQ6OnN0cmluZyBpbnB1dCBpcyBwYXJzZWQgdG8gdGhl
IGV4cGVjdGVkIG1hbnRpc3NhIGFuZAorLy8gQ2hlY2sgdGhhdCBhIGdpdmVuIHN0cmluZyBpbnB1
dCBpcyBwYXJzZWQgdG8gdGhlIGV4cGVjdGVkIG1hbnRpc3NhIGFuZAogLy8gZXhwb25lbnQuCiAv
LwotLy8gSW5wdXQgc3RkOjpzdHJpbmcgYHNgIG11c3QgY29udGFpbiBhICckJyBjaGFyYWN0ZXIu
ICBJdCBtYXJrcyB0aGUgZW5kIG9mIHRoZQorLy8gSW5wdXQgc3RyaW5nIGBzYCBtdXN0IGNvbnRh
aW4gYSAnJCcgY2hhcmFjdGVyLiAgSXQgbWFya3MgdGhlIGVuZCBvZiB0aGUKIC8vIGNoYXJhY3Rl
cnMgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBtYXRjaC4KIHRlbXBsYXRlIDxpbnQgYmFzZT4K
IHZvaWQgRXhwZWN0TnVtYmVyKHN0ZDo6c3RyaW5nIHMsIGFic2w6OmNoYXJzX2Zvcm1hdCBmb3Jt
YXRfZmxhZ3MsCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBFeHBlY3ROdW1iZXIoc3RkOjpzdHJp
bmcgcywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZvcm1hdF9mbGFncywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRfbGl0ZXJhbF9leHBvbmVudCk7CiB9CiAKLS8vIENoZWNrIHRoYXQg
YSBnaXZlbiBzdGQ6OnN0cmluZyBpbnB1dCBpcyBwYXJzZWQgdG8gdGhlIGdpdmVuIHNwZWNpYWwg
dmFsdWUuCisvLyBDaGVjayB0aGF0IGEgZ2l2ZW4gc3RyaW5nIGlucHV0IGlzIHBhcnNlZCB0byB0
aGUgZ2l2ZW4gc3BlY2lhbCB2YWx1ZS4KIC8vCiAvLyBUaGlzIHRlc3RzIGFnYWluc3QgYm90aCBu
dW1iZXIgYmFzZXMsIHNpbmNlIGluZmluaXRpZXMgYW5kIE5hTnMgaGF2ZQogLy8gaWRlbnRpY2Fs
IHJlcHJlc2VudGF0aW9ucyBpbiBib3RoIG1vZGVzLgpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQg
RXhwZWN0U3BlY2lhbChjb25zdCBzdGQ6OnN0cmluZyYgcywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZv
cm1hdF9mbGFncywKICAgRXhwZWN0UGFyc2VkRmxvYXQ8MTY+KHMsIGZvcm1hdF9mbGFncywgdHlw
ZSwgMCwgMCk7CiB9CiAKLS8vIENoZWNrIHRoYXQgYSBnaXZlbiBpbnB1dCBzdGQ6OnN0cmluZyBp
cyBub3QgbWF0Y2hlZCBieSBGbG9hdC4KKy8vIENoZWNrIHRoYXQgYSBnaXZlbiBpbnB1dCBzdHJp
bmcgaXMgbm90IG1hdGNoZWQgYnkgRmxvYXQuCiB0ZW1wbGF0ZSA8aW50IGJhc2U+CiB2b2lkIEV4
cGVjdEZhaWxlZFBhcnNlKGFic2w6OnN0cmluZ192aWV3IHMsIGFic2w6OmNoYXJzX2Zvcm1hdCBm
b3JtYXRfZmxhZ3MpIHsKICAgUGFyc2VkRmxvYXQgcGFyc2VkID0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11
dGlsLmgKaW5kZXggYTZmMWM2OTEzOGUzODcyZjEyN2U3MGFlYjI2ZTE1OWE4MjkyNWEwYy4uN2Rl
MzgzYjE5ZWMzZmMwZjZjOTMzMWE0MWQ5NDE3M2M1NTFhZWNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9t
ZW11dGlsLmgKQEAgLTE0LDcgKzE0LDcgQEAKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgogLy8KIAotLy8gVGhlc2Ugcm91dGluZXMgcHJvdmlkZSBtZW0gdmVyc2lvbnMgb2Ygc3Rh
bmRhcmQgQyBzdGQ6OnN0cmluZyByb3V0aW5lcywKKy8vIFRoZXNlIHJvdXRpbmVzIHByb3ZpZGUg
bWVtIHZlcnNpb25zIG9mIHN0YW5kYXJkIEMgc3RyaW5nIHJvdXRpbmVzLAogLy8gc3VjaCBhcyBz
dHJwYnJrLiAgVGhleSBmdW5jdGlvbiBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBzdHIgdmVyc2lv
bnMsCiAvLyBzbyBpZiB5b3Ugd29uZGVyIHdoYXQgdGhleSBhcmUsIHJlcGxhY2UgdGhlIHdvcmQg
Im1lbSIgYnkKIC8vICJzdHIiIGFuZCBjaGVjayBvdXQgdGhlIG1hbiBwYWdlLiAgSSBjb3VsZCBy
ZXR1cm4gdm9pZCosIGFzIHRoZQpAQCAtMjIsMTQgKzIyLDE0IEBACiAvLyBzaW5jZSB0aGlzIGlz
IGJ5IGZhciB0aGUgbW9zdCBjb21tb24gd2F5IHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLgog
Ly8KIC8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG1lbSBhbmQgc3RyIHZlcnNpb25zIGlz
IHRoZSBtZW0gdmVyc2lvbgotLy8gdGFrZXMgYSBwb2ludGVyIGFuZCBhIGxlbmd0aCwgcmF0aGVy
IHRoYW4gYSAnXDAnLXRlcm1pbmF0ZWQgc3RkOjpzdHJpbmcuCisvLyB0YWtlcyBhIHBvaW50ZXIg
YW5kIGEgbGVuZ3RoLCByYXRoZXIgdGhhbiBhICdcMCctdGVybWluYXRlZCBzdHJpbmcuCiAvLyBU
aGUgbWVtY2FzZSogcm91dGluZXMgZGVmaW5lZCBoZXJlIGFzc3VtZSB0aGUgbG9jYWxlIGlzICJD
IgogLy8gKHRoZXkgdXNlIGFic2w6OmFzY2lpX3RvbG93ZXIgaW5zdGVhZCBvZiB0b2xvd2VyKS4K
IC8vCiAvLyBUaGVzZSByb3V0aW5lcyBhcmUgYmFzZWQgb24gdGhlIEJTRCBsaWJyYXJ5LgogLy8K
LS8vIEhlcmUncyBhIGxpc3Qgb2Ygcm91dGluZXMgZnJvbSBzdGQ6OnN0cmluZy5oLCBhbmQgdGhl
aXIgbWVtIGFuYWxvZ3Vlcy4KLS8vIEZ1bmN0aW9ucyBpbiBsb3dlcmNhc2UgYXJlIGRlZmluZWQg
aW4gc3RkOjpzdHJpbmcuaDsgdGhvc2UgaW4gVVBQRVJDQVNFCisvLyBIZXJlJ3MgYSBsaXN0IG9m
IHJvdXRpbmVzIGZyb20gc3RyaW5nLmgsIGFuZCB0aGVpciBtZW0gYW5hbG9ndWVzLgorLy8gRnVu
Y3Rpb25zIGluIGxvd2VyY2FzZSBhcmUgZGVmaW5lZCBpbiBzdHJpbmcuaDsgdGhvc2UgaW4gVVBQ
RVJDQVNFCiAvLyBhcmUgZGVmaW5lZCBoZXJlOgogLy8KIC8vIHN0cmxlbiAgICAgICAgICAgICAg
ICAgIC0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW0u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5oCmluZGV4IDZlMTMyNWI5
MTQwZjhhMGMzZWVkYjZmNWExM2UyMWQ4ZDZlMGFhZjYuLmU4MWE4OWFmZmVhMjViZTI2YmJjZDMx
MjBjYzcwOTQ1MDJhMmQ4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0
cmluZ3N0cmVhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5o
CkBAIC0yNSwxOCArMjUsMTggQEAKIG5hbWVzcGFjZSBhYnNsIHsKIG5hbWVzcGFjZSBzdHJpbmdz
X2ludGVybmFsIHsKIAotLy8gVGhlIHNhbWUgYXMgc3RkOjpvc3RyaW5nc3RyZWFtIGJ1dCBhcHBl
bmRzIHRvIGEgdXNlci1zcGVjaWZpZWQgc3RkOjpzdHJpbmcsCisvLyBUaGUgc2FtZSBhcyBzdGQ6
Om9zdHJpbmdzdHJlYW0gYnV0IGFwcGVuZHMgdG8gYSB1c2VyLXNwZWNpZmllZCBzdHJpbmcsCiAv
LyBhbmQgaXMgZmFzdGVyLiBJdCBpcyB+NzAlIGZhc3RlciB0byBjcmVhdGUsIH41MCUgZmFzdGVy
IHRvIHdyaXRlIHRvLCBhbmQKLS8vIGNvbXBsZXRlbHkgZnJlZSB0byBleHRyYWN0IHRoZSByZXN1
bHQgc3RkOjpzdHJpbmcuCisvLyBjb21wbGV0ZWx5IGZyZWUgdG8gZXh0cmFjdCB0aGUgcmVzdWx0
IHN0cmluZy4KIC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHM7CisvLyAgIHN0cmluZyBzOwogLy8gICBP
U3RyaW5nU3RyZWFtIHN0cm0oJnMpOwogLy8gICBzdHJtIDw8IDQyIDw8ICcgJyA8PCAzLjE0OyAg
Ly8gYXBwZW5kcyB0byBgc2AKIC8vCiAvLyBUaGUgc3RyZWFtIG9iamVjdCBkb2Vzbid0IGhhdmUg
dG8gYmUgbmFtZWQuIFN0YXJ0aW5nIGZyb20gQysrMTEgb3BlcmF0b3I8PAogLy8gd29ya3Mgd2l0
aCBydmFsdWVzIG9mIHN0ZDo6b3N0cmVhbS4KIC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHM7CisvLyAg
IHN0cmluZyBzOwogLy8gICBPU3RyaW5nU3RyZWFtKCZzKSA8PCA0MiA8PCAnICcgPDwgMy4xNDsg
IC8vIGFwcGVuZHMgdG8gYHNgCiAvLwogLy8gT1N0cmluZ1N0cmVhbSBpcyBmYXN0ZXIgdG8gY3Jl
YXRlIHRoYW4gc3RkOjpvc3RyaW5nc3RyZWFtIGJ1dCBpdCdzIHN0aWxsCkBAIC00NSwxNCArNDUs
MTQgQEAgbmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwgewogLy8KIC8vIENyZWF0ZXMgdW5uZWNl
c3NhcnkgaW5zdGFuY2VzIG9mIE9TdHJpbmdTdHJlYW06IHNsb3cuCiAvLwotLy8gICBzdGQ6OnN0
cmluZyBzOworLy8gICBzdHJpbmcgczsKIC8vICAgT1N0cmluZ1N0cmVhbSgmcykgPDwgNDI7CiAv
LyAgIE9TdHJpbmdTdHJlYW0oJnMpIDw8ICcgJzsKIC8vICAgT1N0cmluZ1N0cmVhbSgmcykgPDwg
My4xNDsKIC8vCiAvLyBDcmVhdGVzIGEgc2luZ2xlIGluc3RhbmNlIG9mIE9TdHJpbmdTdHJlYW0g
YW5kIHJldXNlcyBpdDogZmFzdC4KIC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHM7CisvLyAgIHN0cmlu
ZyBzOwogLy8gICBPU3RyaW5nU3RyZWFtIHN0cm0oJnMpOwogLy8gICBzdHJtIDw8IDQyOwogLy8g
ICBzdHJtIDw8ICcgJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvcmVzaXpl
X3VuaW5pdGlhbGl6ZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvcmVzaXplX3VuaW5pdGlh
bGl6ZWQuaAppbmRleCAwMTU3Y2EwMjQ1ZjM1MGJlY2U2ZGNiZTE5ODdiZGI4MGI0YTU0NTUxLi5h
OTRlMDU0N2I1MGYxNTQyMzQzNzRlOGU2MDgwNDJhNmM3MDMzYmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZC5oCkBAIC00NCw4ICs0NCw4IEBAIHZv
aWQgUmVzaXplVW5pbml0KHN0cmluZ190eXBlKiBzLCBzaXplX3QgbmV3X3NpemUsIHN0ZDo6ZmFs
c2VfdHlwZSkgewogICBzLT5yZXNpemUobmV3X3NpemUpOwogfQogCi0vLyBSZXR1cm5zIHRydWUg
aWYgdGhlIHN0ZDo6c3RyaW5nIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGEgcmVzaXplIHdoZXJl
Ci0vLyB0aGUgbmV3IGNoYXJhY3RlcnMgYWRkZWQgdG8gdGhlIHN0ZDo6c3RyaW5nIGFyZSBsZWZ0
IHVudG91Y2hlZC4KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3RyaW5nIGltcGxlbWVudGF0aW9u
IHN1cHBvcnRzIGEgcmVzaXplIHdoZXJlCisvLyB0aGUgbmV3IGNoYXJhY3RlcnMgYWRkZWQgdG8g
dGhlIHN0cmluZyBhcmUgbGVmdCB1bnRvdWNoZWQuCiAvLwogLy8gKEEgYmV0dGVyIG5hbWUgbWln
aHQgYmUgIlNUTFN0cmluZ1N1cHBvcnRzVW5pbml0aWFsaXplZFJlc2l6ZSIsIGFsbHVkaW5nIHRv
CiAvLyB0aGUgcHJldmlvdXMgZnVuY3Rpb24uKQpAQCAtNTcsNyArNTcsNyBAQCBpbmxpbmUgY29u
c3RleHByIGJvb2wgU1RMU3RyaW5nU3VwcG9ydHNOb250cmFzaGluZ1Jlc2l6ZShzdHJpbmdfdHlw
ZSopIHsKIC8vIExpa2Ugc3RyLT5yZXNpemUobmV3X3NpemUpLCBleGNlcHQgYW55IG5ldyBjaGFy
YWN0ZXJzIGFkZGVkIHRvICIqc3RyIiBhcyBhCiAvLyByZXN1bHQgb2YgcmVzaXppbmcgbWF5IGJl
IGxlZnQgdW5pbml0aWFsaXplZCwgcmF0aGVyIHRoYW4gYmVpbmcgZmlsbGVkIHdpdGgKIC8vICcw
JyBieXRlcy4gVHlwaWNhbGx5IHVzZWQgd2hlbiBjb2RlIGlzIHRoZW4gZ29pbmcgdG8gb3Zlcndy
aXRlIHRoZSBiYWNraW5nCi0vLyBzdG9yZSBvZiB0aGUgc3RkOjpzdHJpbmcgd2l0aCBrbm93biBk
YXRhLiBVc2VzIGEgR29vZ2xlIGV4dGVuc2lvbiB0byBzdGQ6OnN0cmluZy4KKy8vIHN0b3JlIG9m
IHRoZSBzdHJpbmcgd2l0aCBrbm93biBkYXRhLiBVc2VzIGEgR29vZ2xlIGV4dGVuc2lvbiB0byA6
OnN0cmluZy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBzdHJpbmdfdHlwZSwgdHlwZW5hbWUgPSB2b2lk
PgogaW5saW5lIHZvaWQgU1RMU3RyaW5nUmVzaXplVW5pbml0aWFsaXplZChzdHJpbmdfdHlwZSog
cywgc2l6ZV90IG5ld19zaXplKSB7CiAgIFJlc2l6ZVVuaW5pdChzLCBuZXdfc2l6ZSwgSGFzUmVz
aXplVW5pbml0aWFsaXplZDxzdHJpbmdfdHlwZT4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYXJnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9z
dHJfZm9ybWF0L2FyZy5jYwppbmRleCBlYWZiMDY4ZmUyODY3NDQ2MjcwZjIyOGE2NDQ5ZTBkYjVh
NGNjYWI1Li5iNDBiZThmZjM4MjRlOWM2NmI0ZjdjMWVjYzA4NTZlNDE3OGZkZDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYXJnLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuY2MKQEAgLTExMiw3ICsxMTIsNyBAQCBj
bGFzcyBDb252ZXJ0ZWRJbnRJbmZvIHsKIC8vIE5vdGU6ICdvJyBjb252ZXJzaW9ucyBkbyBub3Qg
aGF2ZSBhIGJhc2UgaW5kaWNhdG9yLCBpdCdzIGp1c3QgdGhhdAogLy8gdGhlICcjJyBmbGFnIGlz
IHNwZWNpZmllZCB0byBtb2RpZnkgdGhlIHByZWNpc2lvbiBmb3IgJ28nIGNvbnZlcnNpb25zLgog
c3RyaW5nX3ZpZXcgQmFzZUluZGljYXRvcihjb25zdCBDb252ZXJ0ZWRJbnRJbmZvICZpbmZvLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252KSB7CiAg
IGJvb2wgYWx0ID0gY29udi5mbGFncygpLmFsdDsKICAgaW50IHJhZGl4ID0gY29udi5jb252KCku
cmFkaXgoKTsKICAgaWYgKGNvbnYuY29udigpLmlkKCkgPT0gQ29udmVyc2lvbkNoYXI6OnApCkBA
IC0xMjcsNyArMTI3LDcgQEAgc3RyaW5nX3ZpZXcgQmFzZUluZGljYXRvcihjb25zdCBDb252ZXJ0
ZWRJbnRJbmZvICZpbmZvLAogICByZXR1cm4ge307CiB9CiAKLXN0cmluZ192aWV3IFNpZ25Db2x1
bW4oYm9vbCBuZWcsIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252KSB7CitzdHJpbmdfdmlldyBT
aWduQ29sdW1uKGJvb2wgbmVnLCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252KSB7CiAgIGlmIChj
b252LmNvbnYoKS5pc19zaWduZWQoKSkgewogICAgIGlmIChuZWcpIHJldHVybiAiLSI7CiAgICAg
aWYgKGNvbnYuZmxhZ3MoKS5zaG93X3BvcykgcmV0dXJuICIrIjsKQEAgLTEzNiw3ICsxMzYsNyBA
QCBzdHJpbmdfdmlldyBTaWduQ29sdW1uKGJvb2wgbmVnLCBjb25zdCBDb252ZXJzaW9uU3BlYyAm
Y29udikgewogICByZXR1cm4ge307CiB9CiAKLWJvb2wgQ29udmVydENoYXJJbXBsKHVuc2lnbmVk
IGNoYXIgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCitib29sIENvbnZlcnRDaGFySW1w
bCh1bnNpZ25lZCBjaGFyIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAg
ICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICBzaXplX3QgZmlsbCA9IDA7CiAg
IGlmIChjb252LndpZHRoKCkgPj0gMCkgZmlsbCA9IGNvbnYud2lkdGgoKTsKQEAgLTE0OCw3ICsx
NDgsNyBAQCBib29sIENvbnZlcnRDaGFySW1wbCh1bnNpZ25lZCBjaGFyIHYsIGNvbnN0IENvbnZl
cnNpb25TcGVjICZjb252LAogfQogCiBib29sIENvbnZlcnRJbnRJbXBsSW5uZXIoY29uc3QgQ29u
dmVydGVkSW50SW5mbyAmaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252
ZXJzaW9uU3BlYyAmY29udiwgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LCBGb3JtYXRTaW5rSW1wbCAqc2lu
aykgewogICAvLyBQcmludCBhcyBhIHNlcXVlbmNlIG9mIFN1YnN0cmluZ3M6CiAgIC8vICAgW2xl
ZnRfc3BhY2VzXVtzaWduXVtiYXNlX2luZGljYXRvcl1bemVyb2VzXVtmb3JtYXR0ZWRdW3JpZ2h0
X3NwYWNlc10KICAgc2l6ZV90IGZpbGwgPSAwOwpAQCAtMjAyLDggKzIwMiw3IEBAIGJvb2wgQ29u
dmVydEludEltcGxJbm5lcihjb25zdCBDb252ZXJ0ZWRJbnRJbmZvICZpbmZvLAogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWJvb2wgQ29udmVydEludEltcGxJbm5lcihUIHYsIGNvbnN0IENv
bnZlcnNpb25TcGVjICZjb252LAotICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJ
bXBsICpzaW5rKSB7Citib29sIENvbnZlcnRJbnRJbXBsSW5uZXIoVCB2LCBjb25zdCBDb252ZXJz
aW9uU3BlYyBjb252LCBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICBDb252ZXJ0ZWRJbnRJbmZv
IGluZm8odiwgY29udi5jb252KCkpOwogICBpZiAoY29udi5mbGFncygpLmJhc2ljICYmIGNvbnYu
Y29udigpLmlkKCkgIT0gQ29udmVyc2lvbkNoYXI6OnApIHsKICAgICBpZiAoaW5mby5pc19uZWco
KSkgc2luay0+QXBwZW5kKDEsICctJyk7CkBAIC0yMTgsNyArMjE3LDcgQEAgYm9vbCBDb252ZXJ0
SW50SW1wbElubmVyKFQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotYm9vbCBDb252ZXJ0SW50QXJnKFQgdiwgY29uc3QgQ29udmVyc2lv
blNwZWMgJmNvbnYsIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7Citib29sIENvbnZlcnRJbnRBcmco
VCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LCBGb3JtYXRTaW5rSW1wbCAqc2luaykgewog
ICBpZiAoY29udi5jb252KCkuaXNfZmxvYXQoKSkgewogICAgIHJldHVybiBGb3JtYXRDb252ZXJ0
SW1wbChzdGF0aWNfY2FzdDxkb3VibGU+KHYpLCBjb252LCBzaW5rKS52YWx1ZTsKICAgfQpAQCAt
MjM0LDExICsyMzMsMTEgQEAgYm9vbCBDb252ZXJ0SW50QXJnKFQgdiwgY29uc3QgQ29udmVyc2lv
blNwZWMgJmNvbnYsIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotYm9vbCBDb252ZXJ0RmxvYXRBcmcoVCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAm
Y29udiwgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKK2Jvb2wgQ29udmVydEZsb2F0QXJnKFQgdiwg
Y29uc3QgQ29udmVyc2lvblNwZWMgY29udiwgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0
dXJuIGNvbnYuY29udigpLmlzX2Zsb2F0KCkgJiYgQ29udmVydEZsb2F0SW1wbCh2LCBjb252LCBz
aW5rKTsKIH0KIAotaW5saW5lIGJvb2wgQ29udmVydFN0cmluZ0FyZyhzdHJpbmdfdmlldyB2LCBj
b25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKK2lubGluZSBib29sIENvbnZlcnRTdHJpbmdBcmco
c3RyaW5nX3ZpZXcgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgaWYgKGNvbnYuY29udigp
LmlkKCkgIT0gQ29udmVyc2lvbkNoYXI6OnMpCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjU0LDE5
ICsyNTMsMTkgQEAgaW5saW5lIGJvb2wgQ29udmVydFN0cmluZ0FyZyhzdHJpbmdfdmlldyB2LCBj
b25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKIAogLy8gPT09PT09PT09PT09PT09PT09PT0gU3Ry
aW5ncyA9PT09PT09PT09PT09PT09PT09PQogQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRD
b252ZXJ0SW1wbChjb25zdCBzdGQ6OnN0cmluZyAmdiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBs
ICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydFN0cmluZ0FyZyh2LCBjb252LCBzaW5rKX07CiB9
CiAKIENvbnZlcnRSZXN1bHQ8Q29udjo6cz4gRm9ybWF0Q29udmVydEltcGwoc3RyaW5nX3ZpZXcg
diwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVy
c2lvblNwZWMgJmNvbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydFN0
cmluZ0FyZyh2LCBjb252LCBzaW5rKX07CiB9CiAKIENvbnZlcnRSZXN1bHQ8Q29udjo6cyB8IENv
bnY6OnA+IEZvcm1hdENvbnZlcnRJbXBsKGNvbnN0IGNoYXIgKnYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAm
Y29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICBpZiAoY29u
di5jb252KCkuaWQoKSA9PSBDb252ZXJzaW9uQ2hhcjo6cCkKICAgICByZXR1cm4ge0Zvcm1hdENv
bnZlcnRJbXBsKFZvaWRQdHIodiksIGNvbnYsIHNpbmspLnZhbHVlfTsKQEAgLTI4Myw3ICsyODIs
NyBAQCBDb252ZXJ0UmVzdWx0PENvbnY6OnMgfCBDb252OjpwPiBGb3JtYXRDb252ZXJ0SW1wbChj
b25zdCBjaGFyICp2LAogfQogCiAvLyA9PT09PT09PT09PT09PT09PT09PSBSYXcgcG9pbnRlcnMg
PT09PT09PT09PT09PT09PT09PT0KLUNvbnZlcnRSZXN1bHQ8Q29udjo6cD4gRm9ybWF0Q29udmVy
dEltcGwoVm9pZFB0ciB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKK0NvbnZlcnRSZXN1
bHQ8Q29udjo6cD4gRm9ybWF0Q29udmVydEltcGwoVm9pZFB0ciB2LCBjb25zdCBDb252ZXJzaW9u
U3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3Jt
YXRTaW5rSW1wbCAqc2luaykgewogICBpZiAoY29udi5jb252KCkuaWQoKSAhPSBDb252ZXJzaW9u
Q2hhcjo6cCkKICAgICByZXR1cm4ge2ZhbHNlfTsKQEAgLTI5NSwxMDQgKzI5NCw4MyBAQCBDb252
ZXJ0UmVzdWx0PENvbnY6OnA+IEZvcm1hdENvbnZlcnRJbXBsKFZvaWRQdHIgdiwgY29uc3QgQ29u
dmVyc2lvblNwZWMgJmNvbnYsCiB9CiAKIC8vID09PT09PT09PT09PT09PT09PT09IEZsb2F0cyA9
PT09PT09PT09PT09PT09PT09PQotRmxvYXRpbmdDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJ
bXBsKGZsb2F0IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorRmxvYXRpbmdDb252ZXJ0
UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGZsb2F0IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjIGNv
bnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0lt
cGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0RmxvYXRBcmcodiwgY29udiwgc2luayl9Owog
fQotRmxvYXRpbmdDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGRvdWJsZSB2LCBjb25z
dCBDb252ZXJzaW9uU3BlYyAmY29udiwKK0Zsb2F0aW5nQ29udmVydFJlc3VsdCBGb3JtYXRDb252
ZXJ0SW1wbChkb3VibGUgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICBy
ZXR1cm4ge0NvbnZlcnRGbG9hdEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBGbG9hdGluZ0NvbnZl
cnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwobG9uZyBkb3VibGUgdiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3Bl
YyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNp
bmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydEZsb2F0QXJnKHYsIGNvbnYsIHNpbmsp
fTsKIH0KIAogLy8gPT09PT09PT09PT09PT09PT09PT0gQ2hhcnMgPT09PT09PT09PT09PT09PT09
PT0KLUludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChjaGFyIHYsIGNvbnN0
IENvbnZlcnNpb25TcGVjICZjb252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZl
cnRJbXBsKGNoYXIgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICByZXR1
cm4ge0NvbnZlcnRJbnRBcmcodiwgY29udiwgc2luayl9OwogfQogSW50ZWdyYWxDb252ZXJ0UmVz
dWx0IEZvcm1hdENvbnZlcnRJbXBsKHNpZ25lZCBjaGFyIHYsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgY29u
diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1w
bCAqc2luaykgewogICByZXR1cm4ge0NvbnZlcnRJbnRBcmcodiwgY29udiwgc2luayl9OwogfQog
SW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2lnbmVkIGNoYXIgdiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9u
U3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydEludEFyZyh2
LCBjb252LCBzaW5rKX07CiB9CiAKIC8vID09PT09PT09PT09PT09PT09PT09IEludHMgPT09PT09
PT09PT09PT09PT09PT0KIEludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChz
aG9ydCB2LCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICByZXR1
cm4ge0NvbnZlcnRJbnRBcmcodiwgY29udiwgc2luayl9OwogfQogSW50ZWdyYWxDb252ZXJ0UmVz
dWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2lnbmVkIHNob3J0IHYsICAvLyBOT0xJTlQKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAm
Y29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252
ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydEludEFyZyh2LCBjb252
LCBzaW5rKX07CiB9Ci1JbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoaW50
IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZv
cm1hdENvbnZlcnRJbXBsKGludCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7
CiAgIHJldHVybiB7Q29udmVydEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9Ci1JbnRlZ3JhbENv
bnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwodW5zaWduZWQgdiwgY29uc3QgQ29udmVyc2lv
blNwZWMgJmNvbnYsCitJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwodW5z
aWduZWQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICByZXR1cm4ge0Nv
bnZlcnRJbnRBcmcodiwgY29udiwgc2luayl9OwogfQogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZv
cm1hdENvbnZlcnRJbXBsKGxvbmcgdiwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwg
KnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0SW50QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIElu
dGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25lZCBsb25nIHYsICAv
LyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
b252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVy
dEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0
Q29udmVydEltcGwobG9uZyBsb25nIHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBs
ICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBJ
bnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwodW5zaWduZWQgbG9uZyBsb25n
IHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7
Q29udmVydEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQg
Rm9ybWF0Q29udmVydEltcGwoYWJzbDo6dWludDEyOCB2LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwg
KnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0SW50QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIAot
dGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHN0cl9mb3JtYXRfaW50
ZXJuYWw6OlZvaWRQdHI+OwotCi10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRW
VGFibGU8Ym9vbD47Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8
Y2hhcj47Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c2lnbmVk
IGNoYXI+OwotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVuc2ln
bmVkIGNoYXI+OwotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHNo
b3J0PjsgICAgICAgICAgIC8vIE5PTElOVAotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6
OlR5cGVkVlRhYmxlPHVuc2lnbmVkIHNob3J0PjsgIC8vIE5PTElOVAotdGVtcGxhdGUgc3RydWN0
IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGludD47Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0
QXJnSW1wbDo6VHlwZWRWVGFibGU8dW5zaWduZWQ+OwotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFy
Z0ltcGw6OlR5cGVkVlRhYmxlPGxvbmc+OyAgICAgICAgICAgICAgICAvLyBOT0xJTlQKLXRlbXBs
YXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTx1bnNpZ25lZCBsb25nPjsgICAg
ICAgLy8gTk9MSU5UCi10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8
bG9uZyBsb25nPjsgICAgICAgICAgIC8vIE5PTElOVAotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFy
Z0ltcGw6OlR5cGVkVlRhYmxlPHVuc2lnbmVkIGxvbmcgbG9uZz47ICAvLyBOT0xJTlQKLXRlbXBs
YXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxhYnNsOjp1aW50MTI4PjsKLQot
dGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGZsb2F0PjsKLXRlbXBs
YXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxkb3VibGU+OwotdGVtcGxhdGUg
c3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGxvbmcgZG91YmxlPjsKLQotdGVtcGxh
dGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGNvbnN0IGNoYXIgKj47Ci10ZW1w
bGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c3RkOjpzdHJpbmc+OwotdGVt
cGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHN0cmluZ192aWV3PjsKK0FC
U0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX09WRVJMT0FEU19FWFBBTkRfKCk7CisKIAogfSAg
Ly8gbmFtZXNwYWNlIHN0cl9mb3JtYXRfaW50ZXJuYWwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9z
dHJfZm9ybWF0L2FyZy5oCmluZGV4IGE5NTYyMTg4ZWE5MTk3M2E2Mjk4MjhlMGRlYzgyYmQ0NzBj
OWMwN2EuLjMzNzZkNDhhZmRhMjBmZjIzM2ExZDFiN2Y0MWIzMDA3OGFlMWNjZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYXJnLmgKQEAgLTMzLDcgKzMzLDcgQEAgc3RydWN0
IEhhc1VzZXJEZWZpbmVkQ29udmVydCA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogc3RydWN0IEhhc1VzZXJEZWZpbmVkQ29udmVydDwKICAgICBULCB2b2lkX3Q8
ZGVjbHR5cGUoQWJzbEZvcm1hdENvbnZlcnQoCi0gICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25z
dCBUJj4oKSwgc3RkOjpkZWNsdmFsPGNvbnN0IENvbnZlcnNpb25TcGVjJj4oKSwKKyAgICAgICAg
ICAgc3RkOjpkZWNsdmFsPGNvbnN0IFQmPigpLCBzdGQ6OmRlY2x2YWw8Q29udmVyc2lvblNwZWM+
KCksCiAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxGb3JtYXRTaW5rKj4oKSkpPj4gOiBzdGQ6OnRy
dWVfdHlwZSB7fTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgU3RyZWFtZWRXcmFwcGVy
OwpAQCAtNTAsMjUgKzUwLDIzIEBAIHN0cnVjdCBWb2lkUHRyIHsKICAgICAgIDogdmFsdWUocHRy
ID8gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHB0cikgOiAwKSB7fQogICB1aW50cHRyX3Qg
dmFsdWU7CiB9OwotQ29udmVydFJlc3VsdDxDb252OjpwPiBGb3JtYXRDb252ZXJ0SW1wbChWb2lk
UHRyIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorQ29udmVydFJlc3VsdDxDb252Ojpw
PiBGb3JtYXRDb252ZXJ0SW1wbChWb2lkUHRyIHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5r
KTsKIAogLy8gU3RyaW5ncy4KLUNvbnZlcnRSZXN1bHQ8Q29udjo6cz4gRm9ybWF0Q29udmVydElt
cGwoY29uc3Qgc3RkOjpzdHJpbmcmIHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorQ29udmVydFJlc3VsdDxDb252
OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChjb25zdCBzdGQ6OnN0cmluZyYgdiwgQ29udmVyc2lvblNw
ZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0
U2lua0ltcGwqIHNpbmspOwotQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1w
bChzdHJpbmdfdmlldyB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKK0NvbnZlcnRSZXN1bHQ8Q29udjo6cz4gRm9y
bWF0Q29udmVydEltcGwoc3RyaW5nX3ZpZXcgdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmsp
OwogQ29udmVydFJlc3VsdDxDb252OjpzIHwgQ29udjo6cD4gRm9ybWF0Q29udmVydEltcGwoY29u
c3QgY2hhciogdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJ
bXBsKiBzaW5rKTsKIHRlbXBsYXRlIDxjbGFzcyBBYnNsQ29yZCwKICAgICAgICAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjwKICAgICAgICAgICAgICAgc3RkOjppc19zYW1lPEFic2xDb3JkLCA6
OkNvcmQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0ciwKICAgICAgICAgICBjbGFzcyBBYnNsQ29y
ZFJlYWRlciA9IDo6Q29yZFJlYWRlcj4KIENvbnZlcnRSZXN1bHQ8Q29udjo6cz4gRm9ybWF0Q29u
dmVydEltcGwoY29uc3QgQWJzbENvcmQmIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmsp
IHsKICAgaWYgKGNvbnYuY29udigpLmlkKCkgIT0gQ29udmVyc2lvbkNoYXI6OnMpIHJldHVybiB7
ZmFsc2V9OwogCkBAIC0xMDQsNTEgKzEwMiw0OCBAQCB1c2luZyBJbnRlZ3JhbENvbnZlcnRSZXN1
bHQgPQogdXNpbmcgRmxvYXRpbmdDb252ZXJ0UmVzdWx0ID0gQ29udmVydFJlc3VsdDxDb252Ojpm
bG9hdGluZz47CiAKIC8vIEZsb2F0cy4KLUZsb2F0aW5nQ29udmVydFJlc3VsdCBGb3JtYXRDb252
ZXJ0SW1wbChmbG9hdCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKK0Zsb2F0aW5nQ29u
dmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChmbG9hdCB2LCBDb252ZXJzaW9uU3BlYyBjb252
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBs
KiBzaW5rKTsKLUZsb2F0aW5nQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChkb3VibGUg
diwgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitGbG9hdGluZ0NvbnZlcnRSZXN1bHQgRm9y
bWF0Q29udmVydEltcGwoZG91YmxlIHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwotRmxv
YXRpbmdDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGxvbmcgZG91YmxlIHYsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMm
IGNvbnYsCitGbG9hdGluZ0NvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwobG9uZyBkb3Vi
bGUgdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7CiAKIC8vIENoYXJzLgotSW50ZWdyYWxD
b252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGNoYXIgdiwgY29uc3QgQ29udmVyc2lvblNw
ZWMmIGNvbnYsCitJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoY2hhciB2
LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKLUludGVncmFsQ29udmVydFJlc3VsdCBGb3Jt
YXRDb252ZXJ0SW1wbChzaWduZWQgY2hhciB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorSW50ZWdyYWxDb252ZXJ0
UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHNpZ25lZCBjaGFyIHYsIENvbnZlcnNpb25TcGVjIGNv
bnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0lt
cGwqIHNpbmspOwotSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2ln
bmVkIGNoYXIgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDb252ZXJzaW9uU3BlYyYgY29udiwKK0ludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252
ZXJ0SW1wbCh1bnNpZ25lZCBjaGFyIHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogCiAv
LyBJbnRzLgogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHNob3J0IHYs
ICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDb252ZXJzaW9uU3BlYyYgY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKIEludGVncmFsQ29udmVydFJlc3Vs
dCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25lZCBzaG9ydCB2LCAgLy8gTk9MSU5UCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMmIGNv
bnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblNw
ZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRT
aW5rSW1wbCogc2luayk7Ci1JbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwo
aW50IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0
IEZvcm1hdENvbnZlcnRJbXBsKGludCB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKLUlu
dGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25lZCB2LCBjb25zdCBD
b252ZXJzaW9uU3BlYyYgY29udiwKK0ludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0
SW1wbCh1bnNpZ25lZCB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKIEludGVncmFsQ29u
dmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChsb25nIHYsICAvLyBOT0xJTlQKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29u
diwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3Bl
YyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNp
bmtJbXBsKiBzaW5rKTsKIEludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1
bnNpZ25lZCBsb25nIHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKIEludGVn
cmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChsb25nIGxvbmcgdiwgIC8vIE5PTElO
VAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNp
b25TcGVjJiBjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENv
bnZlcnRJbXBsKHVuc2lnbmVkIGxvbmcgbG9uZyB2LCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblNwZWMgY29u
diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1w
bCogc2luayk7Ci1JbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwodWludDEy
OCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKK0ludGVncmFsQ29udmVydFJlc3VsdCBG
b3JtYXRDb252ZXJ0SW1wbCh1aW50MTI4IHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwog
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIGVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxULCBib29sPjo6
dmFsdWUsIGludD4gPSAwPgotSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBs
KFQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitJbnRlZ3JhbENvbnZlcnRSZXN1bHQg
Rm9ybWF0Q29udmVydEltcGwoVCB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKSB7CiAgIHJl
dHVybiBGb3JtYXRDb252ZXJ0SW1wbChzdGF0aWNfY2FzdDxpbnQ+KHYpLCBjb252LCBzaW5rKTsK
IH0KQEAgLTE1OSwxMSArMTU0LDExIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICFIYXNVc2VyRGVmaW5lZENvbnZlcnQ8VD46OnZhbHVlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgSW50ZWdyYWxDb252ZXJ0UmVzdWx0Pjo6dHlwZQotRm9ybWF0Q29udmVy
dEltcGwoVCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwgRm9ybWF0U2lua0ltcGwqIHNp
bmspOworRm9ybWF0Q29udmVydEltcGwoVCB2LCBDb252ZXJzaW9uU3BlYyBjb252LCBGb3JtYXRT
aW5rSW1wbCogc2luayk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogQ29udmVydFJlc3VsdDxD
b252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChjb25zdCBTdHJlYW1lZFdyYXBwZXI8VD4mIHYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25T
cGVjJiBjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252
ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGb3JtYXRTaW5rSW1wbCogb3V0KSB7CiAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBvc3M7CiAgIG9z
cyA8PCB2LnZfOwpAQCAtMTc2LDcgKzE3MSw3IEBAIENvbnZlcnRSZXN1bHQ8Q29udjo6cz4gRm9y
bWF0Q29udmVydEltcGwoY29uc3QgU3RyZWFtZWRXcmFwcGVyPFQ+JiB2LAogc3RydWN0IEZvcm1h
dENvdW50Q2FwdHVyZUhlbHBlciB7CiAgIHRlbXBsYXRlIDxjbGFzcyBUID0gaW50PgogICBzdGF0
aWMgQ29udmVydFJlc3VsdDxDb252OjpuPiBDb252ZXJ0SGVscGVyKGNvbnN0IEZvcm1hdENvdW50
Q2FwdHVyZSYgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKSB7CiAg
ICAgY29uc3QgYWJzbDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKFQpICE9IDAsIEZvcm1hdENvdW50Q2Fw
dHVyZT4mIHYyID0gdjsKIApAQCAtMTg5LDcgKzE4NCw3IEBAIHN0cnVjdCBGb3JtYXRDb3VudENh
cHR1cmVIZWxwZXIgewogCiB0ZW1wbGF0ZSA8Y2xhc3MgVCA9IGludD4KIENvbnZlcnRSZXN1bHQ8
Q29udjo6bj4gRm9ybWF0Q29udmVydEltcGwoY29uc3QgRm9ybWF0Q291bnRDYXB0dXJlJiB2LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9u
U3BlYyYgY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29u
dmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9ybWF0U2lua0ltcGwqIHNpbmspIHsKICAgcmV0dXJuIEZvcm1hdENvdW50Q2FwdHVyZUhl
bHBlcjo6Q29udmVydEhlbHBlcih2LCBjb252LCBzaW5rKTsKIH0KQEAgLTE5OSwyMCArMTk0LDIw
IEBAIENvbnZlcnRSZXN1bHQ8Q29udjo6bj4gRm9ybWF0Q29udmVydEltcGwoY29uc3QgRm9ybWF0
Q291bnRDYXB0dXJlJiB2LAogc3RydWN0IEZvcm1hdEFyZ0ltcGxGcmllbmQgewogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQXJnPgogICBzdGF0aWMgYm9vbCBUb0ludChBcmcgYXJnLCBpbnQqIG91dCkg
ewotICAgIGlmICghYXJnLnZ0YmxfLT50b19pbnQpIHJldHVybiBmYWxzZTsKLSAgICAqb3V0ID0g
YXJnLnZ0YmxfLT50b19pbnQoYXJnLmRhdGFfKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBB
IHZhbHVlIGluaXRpYWxpemVkIENvbnZlcnNpb25TcGVjIGhhcyBhIGBub25lYCBjb252LCB3aGlj
aCB0ZWxscyB0aGUKKyAgICAvLyBkaXNwYXRjaGVyIHRvIHJ1biB0aGUgYGludGAgY29udmVyc2lv
bi4KKyAgICByZXR1cm4gYXJnLmRpc3BhdGNoZXJfKGFyZy5kYXRhXywge30sIG91dCk7CiAgIH0K
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnPgotICBzdGF0aWMgYm9vbCBDb252ZXJ0KEFyZyBh
cmcsIGNvbnN0IHN0cl9mb3JtYXRfaW50ZXJuYWw6OkNvbnZlcnNpb25TcGVjJiBjb252LAorICBz
dGF0aWMgYm9vbCBDb252ZXJ0KEFyZyBhcmcsIHN0cl9mb3JtYXRfaW50ZXJuYWw6OkNvbnZlcnNp
b25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIG91dCkg
ewotICAgIHJldHVybiBhcmcudnRibF8tPmNvbnZlcnQoYXJnLmRhdGFfLCBjb252LCBvdXQpOwor
ICAgIHJldHVybiBhcmcuZGlzcGF0Y2hlcl8oYXJnLmRhdGFfLCBjb252LCBvdXQpOwogICB9CiAK
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFyZz4KLSAgc3RhdGljIGNvbnN0IHZvaWQqIEdldFZUYWJs
ZVB0ckZvclRlc3QoQXJnIGFyZykgewotICAgIHJldHVybiBhcmcudnRibF87CisgIHN0YXRpYyB0
eXBlbmFtZSBBcmc6OkRpc3BhdGNoZXIgR2V0VlRhYmxlUHRyRm9yVGVzdChBcmcgYXJnKSB7Cisg
ICAgcmV0dXJuIGFyZy5kaXNwYXRjaGVyXzsKICAgfQogfTsKIApAQCAtMjI5LDExICsyMjQsNyBA
QCBjbGFzcyBGb3JtYXRBcmdJbXBsIHsKICAgICBjaGFyIGJ1ZltrSW5saW5lZFNwYWNlXTsKICAg
fTsKIAotICBzdHJ1Y3QgVlRhYmxlIHsKLSAgICBib29sICgqY29udmVydCkoRGF0YSwgY29uc3Qg
c3RyX2Zvcm1hdF9pbnRlcm5hbDo6Q29udmVyc2lvblNwZWMmIGNvbnYsCi0gICAgICAgICAgICAg
ICAgICAgIEZvcm1hdFNpbmtJbXBsKiBvdXQpOwotICAgIGludCAoKnRvX2ludCkoRGF0YSk7Ci0g
IH07CisgIHVzaW5nIERpc3BhdGNoZXIgPSBib29sICgqKShEYXRhLCBDb252ZXJzaW9uU3BlYywg
dm9pZCogb3V0KTsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgc3RydWN0IHN0b3JlX2J5
X3ZhbHVlCkBAIC0yNTMsMTAgKzI0NCw2IEBAIGNsYXNzIEZvcm1hdEFyZ0ltcGwgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogQnlQb2ludGVyKSk+IHsKICAgfTsKIAotICAvLyBBbiBpbnN0YW5jZSBvZiBhbiBGb3JtYXRB
cmdJbXBsOjpWVGFibGUgc3VpdGFibGUgZm9yICdUJy4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci0gIHN0cnVjdCBUeXBlZFZUYWJsZTsKLQogICAvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiB2
dGFibGVzIHdlIHdpbGwgZGVjYXkgdmFsdWVzIGJlZm9yZSBoYW5kLgogICAvLyBBbnl0aGluZyB3
aXRoIGEgdXNlci1kZWZpbmVkIENvbnZlcnQgd2lsbCBnZXQgaXRzIG93biB2dGFibGUuCiAgIC8v
IEZvciBldmVyeXRoaW5nIGVsc2U6CkBAIC0zMzgsNyArMzI1LDEwIEBAIGNsYXNzIEZvcm1hdEFy
Z0ltcGwgewogICB9OwogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICB2b2lkIEluaXQoY29u
c3QgVCYgdmFsdWUpOworICB2b2lkIEluaXQoY29uc3QgVCYgdmFsdWUpIHsKKyAgICBkYXRhXyA9
IE1hbmFnZXI8VD46OlNldFZhbHVlKHZhbHVlKTsKKyAgICBkaXNwYXRjaGVyXyA9ICZEaXNwYXRj
aDxUPjsKKyAgfQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBzdGF0aWMgaW50IFRvSW50
VmFsKGNvbnN0IFQmIHZhbCkgewpAQCAtMzU1LDc5ICszNDUsNzUgQEAgY2xhc3MgRm9ybWF0QXJn
SW1wbCB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmFsKTsKICAgfQogCi0gIERhdGEg
ZGF0YV87Ci0gIGNvbnN0IFZUYWJsZSogdnRibF87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLXN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZSB7Ci0gcHJpdmF0ZToKLSAgc3Rh
dGljIGJvb2wgQ29udmVydEltcGwoRGF0YSBhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0cl9mb3JtYXRfaW50ZXJuYWw6OkNvbnZlcnNpb25TcGVjJiBjb252LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogb3V0KSB7Ci0gICAgcmV0dXJuIHN0
cl9mb3JtYXRfaW50ZXJuYWw6OkZvcm1hdENvbnZlcnRJbXBsKE1hbmFnZXI8VD46OlZhbHVlKGFy
ZyksIGNvbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCkKLSAgICAgICAgLnZhbHVlOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3Rh
dGljIGJvb2wgVG9JbnQoRGF0YSBhcmcsIGludCogb3V0LCBzdGQ6OnRydWVfdHlwZSAvKiBpc19p
bnRlZ3JhbCAqLywKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpmYWxzZV90eXBlKSB7CisgICAg
Km91dCA9IFRvSW50VmFsKE1hbmFnZXI8VD46OlZhbHVlKGFyZykpOworICAgIHJldHVybiB0cnVl
OwogICB9CiAKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFUgPSBULCB0eXBlbmFtZSA9IHZvaWQ+Ci0g
IHN0cnVjdCBUb0ludEltcGwgewotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50ICgqdmFsdWUpKERh
dGEpID0gbnVsbHB0cjsKLSAgfTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBi
b29sIFRvSW50KERhdGEgYXJnLCBpbnQqIG91dCwgc3RkOjpmYWxzZV90eXBlLAorICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnRydWVfdHlwZSAvKiBpc19lbnVtICovKSB7CisgICAgKm91dCA9IFRv
SW50VmFsKHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPFQ+Ojp0eXBl
PigKKyAgICAgICAgTWFuYWdlcjxUPjo6VmFsdWUoYXJnKSkpOworICAgIHJldHVybiB0cnVlOwor
ICB9CiAKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gIHN0cnVjdCBUb0ludEltcGw8VSwKLSAg
ICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFs
PFU+Ojp2YWx1ZT46OnR5cGU+IHsKLSAgICBzdGF0aWMgaW50IEludm9rZShEYXRhIGFyZykgeyBy
ZXR1cm4gVG9JbnRWYWwoTWFuYWdlcjxUPjo6VmFsdWUoYXJnKSk7IH0KLSAgICBzdGF0aWMgY29u
c3RleHByIGludCAoKnZhbHVlKShEYXRhKSA9ICZJbnZva2U7Ci0gIH07CisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgorICBzdGF0aWMgYm9vbCBUb0ludChEYXRhLCBpbnQqLCBzdGQ6OmZhbHNlX3R5
cGUsIHN0ZDo6ZmFsc2VfdHlwZSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQogCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPgotICBzdHJ1Y3QgVG9JbnRJbXBsPFUsIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfZW51bTxVPjo6dmFsdWU+Ojp0eXBlPiB7Ci0gICAgc3RhdGljIGludCBJ
bnZva2UoRGF0YSBhcmcpIHsKLSAgICAgIHJldHVybiBUb0ludFZhbChzdGF0aWNfY2FzdDx0eXBl
bmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxUPjo6dHlwZT4oCi0gICAgICAgICAgTWFuYWdlcjxU
Pjo6VmFsdWUoYXJnKSkpOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIGJvb2wg
RGlzcGF0Y2goRGF0YSBhcmcsIENvbnZlcnNpb25TcGVjIHNwZWMsIHZvaWQqIG91dCkgeworICAg
IC8vIEEgYG5vbmVgIGNvbnYgaW5kaWNhdGVzIHRoYXQgd2Ugd2FudCB0aGUgYGludGAgY29udmVy
c2lvbi4KKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHNwZWMuY29udigpLmlkKCkgPT0gQ29u
dmVyc2lvbkNoYXI6Om5vbmUpKSB7CisgICAgICByZXR1cm4gVG9JbnQ8VD4oYXJnLCBzdGF0aWNf
Y2FzdDxpbnQqPihvdXQpLCBzdGQ6OmlzX2ludGVncmFsPFQ+KCksCisgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjppc19lbnVtPFQ+KCkpOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIGlu
dCAoKnZhbHVlKShEYXRhKSA9ICZJbnZva2U7Ci0gIH07CiAKLSBwdWJsaWM6Ci0gIHN0YXRpYyBj
b25zdGV4cHIgVlRhYmxlIHZhbHVleyZDb252ZXJ0SW1wbCwgVG9JbnRJbXBsPD46OnZhbHVlfTsK
LX07CisgICAgcmV0dXJuIHN0cl9mb3JtYXRfaW50ZXJuYWw6OkZvcm1hdENvbnZlcnRJbXBsKAor
ICAgICAgICAgICAgICAgTWFuYWdlcjxUPjo6VmFsdWUoYXJnKSwgc3BlYywgc3RhdGljX2Nhc3Q8
Rm9ybWF0U2lua0ltcGwqPihvdXQpKQorICAgICAgICAudmFsdWU7CisgIH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgRm9ybWF0QXJnSW1wbDo6VlRhYmxlIEZvcm1hdEFyZ0lt
cGw6OlR5cGVkVlRhYmxlPFQ+Ojp2YWx1ZTsKKyAgRGF0YSBkYXRhXzsKKyAgRGlzcGF0Y2hlciBk
aXNwYXRjaGVyXzsKK307CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBGb3JtYXRBcmdJ
bXBsOjpJbml0KGNvbnN0IFQmIHZhbHVlKSB7Ci0gIGRhdGFfID0gTWFuYWdlcjxUPjo6U2V0VmFs
dWUodmFsdWUpOwotICB2dGJsXyA9ICZUeXBlZFZUYWJsZTxUPjo6dmFsdWU7Ci19CisjZGVmaW5l
IEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyhULCBFKSBcCisgIEUg
dGVtcGxhdGUgYm9vbCBGb3JtYXRBcmdJbXBsOjpEaXNwYXRjaDxUPihEYXRhLCBDb252ZXJzaW9u
U3BlYywgdm9pZCopCisKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfT1ZF
UkxPQURTX0VYUEFORF8oLi4uKSAgICAgICAgICAgICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxf
Rk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyhzdHJfZm9ybWF0X2ludGVybmFsOjpWb2lkUHRy
LCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19W
QV9BUkdTX18pOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRf
RElTUEFUQ0hfSU5TVEFOVElBVEVfKGJvb2wsIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICBc
CisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyhjaGFyLCBfX1ZB
X0FSR1NfXyk7ICAgICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRD
SF9JTlNUQU5USUFURV8oc2lnbmVkIGNoYXIsIF9fVkFfQVJHU19fKTsgICAgICAgIFwKKyAgQUJT
TF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKHVuc2lnbmVkIGNoYXIsIF9f
VkFfQVJHU19fKTsgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RB
TlRJQVRFXyhzaG9ydCwgX19WQV9BUkdTX18pOyAvKiBOT0xJTlQgKi8gXAorICBBQlNMX0lOVEVS
TkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8odW5zaWduZWQgc2hvcnQsICAgICAgLyog
Tk9MSU5UICovIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9S
TUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyhpbnQsIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAg
ICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8odW5zaWdu
ZWQgaW50LCBfX1ZBX0FSR1NfXyk7ICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElT
UEFUQ0hfSU5TVEFOVElBVEVfKGxvbmcsIF9fVkFfQVJHU19fKTsgLyogTk9MSU5UICovICBcCisg
IEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyh1bnNpZ25lZCBsb25n
LCAgICAgIC8qIE5PTElOVCAqLyAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgQUJTTF9J
TlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGxvbmcgbG9uZywgLyogTk9MSU5U
ICovICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFM
X0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8odW5zaWduZWQgbG9uZyBsb25nLCAvKiBOT0xJ
TlQgKi8gIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
VkFfQVJHU19fKTsgICAgICAgICAgICAgICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFU
X0RJU1BBVENIX0lOU1RBTlRJQVRFXyh1aW50MTI4LCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAg
XAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8oZmxvYXQsIF9f
VkFfQVJHU19fKTsgICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFU
Q0hfSU5TVEFOVElBVEVfKGRvdWJsZSwgX19WQV9BUkdTX18pOyAgICAgICAgICAgICBcCisgIEFC
U0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyhsb25nIGRvdWJsZSwgX19W
QV9BUkdTX18pOyAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNU
QU5USUFURV8oY29uc3QgY2hhciosIF9fVkFfQVJHU19fKTsgICAgICAgIFwKKyAgQUJTTF9JTlRF
Uk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKHN0ZDo6c3RyaW5nLCBfX1ZBX0FSR1Nf
Xyk7ICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFO
VElBVEVfKHN0cmluZ192aWV3LCBfX1ZBX0FSR1NfXykKKworQUJTTF9JTlRFUk5BTF9GT1JNQVRf
RElTUEFUQ0hfT1ZFUkxPQURTX0VYUEFORF8oZXh0ZXJuKTsKIAotZXh0ZXJuIHRlbXBsYXRlIHN0
cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxzdHJfZm9ybWF0X2ludGVybmFsOjpWb2lk
UHRyPjsKLQotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJs
ZTxib29sPjsKLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFi
bGU8Y2hhcj47Ci1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRh
YmxlPHNpZ25lZCBjaGFyPjsKLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6
VHlwZWRWVGFibGU8dW5zaWduZWQgY2hhcj47Ci1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1h
dEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHNob3J0PjsgICAgICAgICAgIC8vIE5PTElOVAotZXh0ZXJu
IHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTx1bnNpZ25lZCBzaG9y
dD47ICAvLyBOT0xJTlQKLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlw
ZWRWVGFibGU8aW50PjsKLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlw
ZWRWVGFibGU8dW5zaWduZWQ+OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBs
OjpUeXBlZFZUYWJsZTxsb25nPjsgICAgICAgICAgIC8vIE5PTElOVAotZXh0ZXJuIHRlbXBsYXRl
IHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTx1bnNpZ25lZCBsb25nPjsgIC8vIE5P
TElOVAotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxs
b25nIGxvbmc+OyAgICAgIC8vIE5PTElOVAotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRB
cmdJbXBsOjpUeXBlZFZUYWJsZTwKLSAgICB1bnNpZ25lZCBsb25nIGxvbmc+OyAgLy8gTk9MSU5U
Ci1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVpbnQx
Mjg+OwotCi1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxl
PGZsb2F0PjsKLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFi
bGU8ZG91YmxlPjsKLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRW
VGFibGU8bG9uZyBkb3VibGU+OwotCi1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0lt
cGw6OlR5cGVkVlRhYmxlPGNvbnN0IGNoYXIqPjsKLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9y
bWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c3RkOjpzdHJpbmc+OwotZXh0ZXJuIHRlbXBsYXRlIHN0
cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxzdHJpbmdfdmlldz47CiB9ICAvLyBuYW1l
c3BhY2Ugc3RyX2Zvcm1hdF9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5jYwppbmRleCAzM2U4NjQxNTU4YWI4NmYz
ZTg5MmFkZGVlY2Q5YTZkZWY4YjQwYTk3Li5jNGVkZGQxN2RkYmU1NmE3NmM1ZWMxYTUxODQwNzli
ZjEwNzE2NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQv
YmluZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5jYwpA
QCAtMTAzLDE1ICsxMDMsMTUgQEAgY2xhc3MgQ29udmVydGVyQ29uc3VtZXIgewogfTsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIENvbnZlcnRlcj4KLWJvb2wgQ29udmVydEFsbChjb25zdCBVbnR5cGVk
Rm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKLSAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0
IEZvcm1hdEFyZ0ltcGw+IGFyZ3MsCi0gICAgICAgICAgICAgICAgY29uc3QgQ29udmVydGVyJiBj
b252ZXJ0ZXIpIHsKLSAgY29uc3QgUGFyc2VkRm9ybWF0QmFzZSogcGMgPSBmb3JtYXQucGFyc2Vk
X2NvbnZlcnNpb24oKTsKLSAgaWYgKHBjKQotICAgIHJldHVybiBwYy0+UHJvY2Vzc0Zvcm1hdChD
b252ZXJ0ZXJDb25zdW1lcjxDb252ZXJ0ZXI+KGNvbnZlcnRlciwgYXJncykpOwotCi0gIHJldHVy
biBQYXJzZUZvcm1hdFN0cmluZyhmb3JtYXQuc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb252ZXJ0ZXJDb25zdW1lcjxDb252ZXJ0ZXI+KGNvbnZlcnRlciwgYXJncykpOworYm9v
bCBDb252ZXJ0QWxsKGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzLCBDb252ZXJ0ZXIg
Y29udmVydGVyKSB7CisgIGlmIChmb3JtYXQuaGFzX3BhcnNlZF9jb252ZXJzaW9uKCkpIHsKKyAg
ICByZXR1cm4gZm9ybWF0LnBhcnNlZF9jb252ZXJzaW9uKCktPlByb2Nlc3NGb3JtYXQoCisgICAg
ICAgIENvbnZlcnRlckNvbnN1bWVyPENvbnZlcnRlcj4oY29udmVydGVyLCBhcmdzKSk7CisgIH0g
ZWxzZSB7CisgICAgcmV0dXJuIFBhcnNlRm9ybWF0U3RyaW5nKGZvcm1hdC5zdHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydGVyQ29uc3VtZXI8Q29udmVydGVyPihjb252
ZXJ0ZXIsIGFyZ3MpKTsKKyAgfQogfQogCiBjbGFzcyBEZWZhdWx0Q29udmVydGVyIHsKQEAgLTE1
OCw3ICsxNTgsNyBAQCBib29sIEJpbmRXaXRoUGFjayhjb25zdCBVbmJvdW5kQ29udmVyc2lvbiog
cHJvcHMsCiAgIHJldHVybiBBcmdDb250ZXh0KHBhY2spLkJpbmQocHJvcHMsIGJvdW5kKTsKIH0K
IAotc3RkOjpzdHJpbmcgU3VtbWFyaXplKGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9y
bWF0LAorc3RkOjpzdHJpbmcgU3VtbWFyaXplKGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCBm
b3JtYXQsCiAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4g
YXJncykgewogICB0eXBlZGVmIFN1bW1hcml6aW5nQ29udmVydGVyIENvbnZlcnRlcjsKICAgc3Rk
OjpzdHJpbmcgb3V0OwpAQCAtMTY3LDIzICsxNjcsMTggQEAgc3RkOjpzdHJpbmcgU3VtbWFyaXpl
KGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAogICAgIC8vIGZsdXNoLgogICAg
IEZvcm1hdFNpbmtJbXBsIHNpbmsoJm91dCk7CiAgICAgaWYgKCFDb252ZXJ0QWxsKGZvcm1hdCwg
YXJncywgQ29udmVydGVyKCZzaW5rKSkpIHsKLSAgICAgIHNpbmsuRmx1c2goKTsKLSAgICAgIG91
dC5jbGVhcigpOworICAgICAgcmV0dXJuICIiOwogICAgIH0KICAgfQogICByZXR1cm4gb3V0Owog
fQogCiBib29sIEZvcm1hdFVudHlwZWQoRm9ybWF0UmF3U2lua0ltcGwgcmF3X3NpbmssCi0gICAg
ICAgICAgICAgICAgICAgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsJiBmb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAg
ICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpIHsKICAg
Rm9ybWF0U2lua0ltcGwgc2luayhyYXdfc2luayk7CiAgIHVzaW5nIENvbnZlcnRlciA9IERlZmF1
bHRDb252ZXJ0ZXI7Ci0gIGlmICghQ29udmVydEFsbChmb3JtYXQsIGFyZ3MsIENvbnZlcnRlcigm
c2luaykpKSB7Ci0gICAgc2luay5GbHVzaCgpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBy
ZXR1cm4gdHJ1ZTsKKyAgcmV0dXJuIENvbnZlcnRBbGwoZm9ybWF0LCBhcmdzLCBDb252ZXJ0ZXIo
JnNpbmspKTsKIH0KIAogc3RkOjpvc3RyZWFtJiBTdHJlYW1hYmxlOjpQcmludChzdGQ6Om9zdHJl
YW0mIG9zKSBjb25zdCB7CkBAIC0xOTEsMTQgKzE4NiwxNiBAQCBzdGQ6Om9zdHJlYW0mIFN0cmVh
bWFibGU6OlByaW50KHN0ZDo6b3N0cmVhbSYgb3MpIGNvbnN0IHsKICAgcmV0dXJuIG9zOwogfQog
Ci1zdGQ6OnN0cmluZyYgQXBwZW5kUGFjayhzdGQ6OnN0cmluZyogb3V0LCBjb25zdCBVbnR5cGVk
Rm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKK3N0ZDo6c3RyaW5nJiBBcHBlbmRQYWNrKHN0ZDo6c3Ry
aW5nKiBvdXQsIGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7CiAgIHNpemVf
dCBvcmlnID0gb3V0LT5zaXplKCk7Ci0gIGlmICghRm9ybWF0VW50eXBlZChvdXQsIGZvcm1hdCwg
YXJncykpIG91dC0+cmVzaXplKG9yaWcpOworICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCFGb3Jt
YXRVbnR5cGVkKG91dCwgZm9ybWF0LCBhcmdzKSkpIHsKKyAgICBvdXQtPmVyYXNlKG9yaWcpOwor
ICB9CiAgIHJldHVybiAqb3V0OwogfQogCi1pbnQgRnByaW50RihzdGQ6OkZJTEUqIG91dHB1dCwg
Y29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsJiBmb3JtYXQsCitpbnQgRnByaW50RihzdGQ6OkZJ
TEUqIG91dHB1dCwgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAgICAg
ICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncykgewogICBGSUxFUmF3U2lu
ayBzaW5rKG91dHB1dCk7CiAgIGlmICghRm9ybWF0VW50eXBlZCgmc2luaywgZm9ybWF0LCBhcmdz
KSkgewpAQCAtMjE2LDcgKzIxMyw3IEBAIGludCBGcHJpbnRGKHN0ZDo6RklMRSogb3V0cHV0LCBj
b25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oc2luay5jb3VudCgpKTsKIH0KIAotaW50IFNucHJpbnRGKGNoYXIqIG91dHB1dCwgc2l6
ZV90IHNpemUsIGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAoraW50IFNucHJp
bnRGKGNoYXIqIG91dHB1dCwgc2l6ZV90IHNpemUsIGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1w
bCBmb3JtYXQsCiAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBh
cmdzKSB7CiAgIEJ1ZmZlclJhd1Npbmsgc2luayhvdXRwdXQsIHNpemUgPyBzaXplIC0gMSA6IDAp
OwogICBpZiAoIUZvcm1hdFVudHlwZWQoJnNpbmssIGZvcm1hdCwgYXJncykpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5oCmluZGV4IDQwMDg2MTEyMTFjZmU2MDUzYzUx
YWYwNjQ4YTA1MTM1NGJkZjgxYTIuLjFiNTJkZjljN2Y1NjU1ZjFkNzhkYWRjNTA4MjVjNGQyM2U0
MjYwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5k
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuaApAQCAtMzMs
MTMgKzMzLDIxIEBAIGNsYXNzIFVudHlwZWRGb3JtYXRTcGVjSW1wbCB7CiAgcHVibGljOgogICBV
bnR5cGVkRm9ybWF0U3BlY0ltcGwoKSA9IGRlbGV0ZTsKIAotICBleHBsaWNpdCBVbnR5cGVkRm9y
bWF0U3BlY0ltcGwoc3RyaW5nX3ZpZXcgcykgOiBzdHJfKHMpLCBwY18oKSB7fQorICBleHBsaWNp
dCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwoc3RyaW5nX3ZpZXcgcykKKyAgICAgIDogZGF0YV8ocy5k
YXRhKCkpLCBzaXplXyhzLnNpemUoKSkge30KICAgZXhwbGljaXQgVW50eXBlZEZvcm1hdFNwZWNJ
bXBsKAogICAgICAgY29uc3Qgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6UGFyc2VkRm9ybWF0QmFzZSog
cGMpCi0gICAgICA6IHBjXyhwYykge30KLSAgc3RyaW5nX3ZpZXcgc3RyKCkgY29uc3QgeyByZXR1
cm4gc3RyXzsgfQorICAgICAgOiBkYXRhXyhwYyksIHNpemVfKH5zaXplX3R7fSkge30KKworICBi
b29sIGhhc19wYXJzZWRfY29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHNpemVfID09IH5zaXpl
X3R7fTsgfQorCisgIHN0cmluZ192aWV3IHN0cigpIGNvbnN0IHsKKyAgICBhc3NlcnQoIWhhc19w
YXJzZWRfY29udmVyc2lvbigpKTsKKyAgICByZXR1cm4gc3RyaW5nX3ZpZXcoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGFfKSwgc2l6ZV8pOworICB9CiAgIGNvbnN0IHN0cl9mb3JtYXRfaW50
ZXJuYWw6OlBhcnNlZEZvcm1hdEJhc2UqIHBhcnNlZF9jb252ZXJzaW9uKCkgY29uc3QgewotICAg
IHJldHVybiBwY187CisgICAgYXNzZXJ0KGhhc19wYXJzZWRfY29udmVyc2lvbigpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6UGFyc2VkRm9ybWF0
QmFzZSo+KGRhdGFfKTsKICAgfQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtNDgsOCAr
NTYsOCBAQCBjbGFzcyBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgewogICB9CiAKICBwcml2YXRlOgot
ICBzdHJpbmdfdmlldyBzdHJfOwotICBjb25zdCBzdHJfZm9ybWF0X2ludGVybmFsOjpQYXJzZWRG
b3JtYXRCYXNlKiBwY187CisgIGNvbnN0IHZvaWQqIGRhdGFfOworICBzaXplX3Qgc2l6ZV87CiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4+CkBAIC0xNDQsMzEgKzE1Miwz
MSBAQCBjbGFzcyBTdHJlYW1hYmxlIHsKIH07CiAKIC8vIGZvciB0ZXN0aW5nCi1zdGQ6OnN0cmlu
ZyBTdW1tYXJpemUoY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsJiBmb3JtYXQsCitzdGQ6OnN0
cmluZyBTdW1tYXJpemUoVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKTsKIGJvb2wgQmluZFdp
dGhQYWNrKGNvbnN0IFVuYm91bmRDb252ZXJzaW9uKiBwcm9wcywKICAgICAgICAgICAgICAgICAg
IGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gcGFjaywgQm91bmRDb252ZXJzaW9uKiBi
b3VuZCk7CiAKIGJvb2wgRm9ybWF0VW50eXBlZChGb3JtYXRSYXdTaW5rSW1wbCByYXdfc2luaywK
LSAgICAgICAgICAgICAgICAgICBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncyk7CiAKLXN0
ZDo6c3RyaW5nJiBBcHBlbmRQYWNrKHN0ZDo6c3RyaW5nKiBvdXQsIGNvbnN0IFVudHlwZWRGb3Jt
YXRTcGVjSW1wbCYgZm9ybWF0LAorc3RkOjpzdHJpbmcmIEFwcGVuZFBhY2soc3RkOjpzdHJpbmcq
IG91dCwgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICBh
YnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpOwogCi1pbmxpbmUgc3RkOjpzdHJp
bmcgRm9ybWF0UGFjayhjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKK2lubGlu
ZSBzdGQ6OnN0cmluZyBGb3JtYXRQYWNrKGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJ
bXBsPiBhcmdzKSB7CiAgIHN0ZDo6c3RyaW5nIG91dDsKICAgQXBwZW5kUGFjaygmb3V0LCBmb3Jt
YXQsIGFyZ3MpOwogICByZXR1cm4gb3V0OwogfQogCi1pbnQgRnByaW50RihzdGQ6OkZJTEUqIG91
dHB1dCwgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsJiBmb3JtYXQsCitpbnQgRnByaW50Rihz
dGQ6OkZJTEUqIG91dHB1dCwgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAgICAg
ICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncyk7Ci1pbnQgU25wcmludEYo
Y2hhciogb3V0cHV0LCBzaXplX3Qgc2l6ZSwgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsJiBm
b3JtYXQsCitpbnQgU25wcmludEYoY2hhciogb3V0cHV0LCBzaXplX3Qgc2l6ZSwgVW50eXBlZEZv
cm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1h
dEFyZ0ltcGw+IGFyZ3MpOwogCi0vLyBSZXR1cm5lZCBieSBTdHJlYW1lZCh2KS4gQ29udmVydHMg
dmlhICclcycgdG8gdGhlIHN0ZDo6c3RyaW5nIGNyZWF0ZWQKKy8vIFJldHVybmVkIGJ5IFN0cmVh
bWVkKHYpLiBDb252ZXJ0cyB2aWEgJyVzJyB0byB0aGUgc3RyaW5nIGNyZWF0ZWQKIC8vIGJ5IHN0
ZDo6b3N0cmVhbSA8PCB2LgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBTdHJlYW1lZFdy
YXBwZXIgewpAQCAtMTc4LDcgKzE4Niw3IEBAIGNsYXNzIFN0cmVhbWVkV3JhcHBlciB7CiAgcHJp
dmF0ZToKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFM+CiAgIGZyaWVuZCBDb252ZXJ0UmVzdWx0PENv
bnY6OnM+IEZvcm1hdENvbnZlcnRJbXBsKGNvbnN0IFN0cmVhbWVkV3JhcHBlcjxTPiYgdiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29u
dmVyc2lvblNwZWMmIGNvbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBvdXQpOwogICBjb25z
dCBUJiB2XzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3Jt
YXQvZXh0ZW5zaW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5z
aW9uLmgKaW5kZXggODEwMzMwYjlkNzFiZDE4OGMyNmVhZTIxNWFiZDYxZDQ4ZWQ0YmQ3OC4uMTFi
OTk2YWVmZDM3ZDE1N2EzZjA4ZGFhNWEyMmRjMDFjMGEyZDAyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uaApAQCAtMTgsNiArMTgsNyBAQAogI2Rl
ZmluZSBBQlNMX1NUUklOR1NfSU5URVJOQUxfU1RSX0ZPUk1BVF9FWFRFTlNJT05fSF8KIAogI2lu
Y2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8Y3N0cmluZz4K
ICNpbmNsdWRlIDxvc3RyZWFtPgogCkBAIC01Nyw3ICs1OCw3IEBAIGNsYXNzIEZvcm1hdFJhd1Np
bmtJbXBsIHsKICAgdm9pZCAoKndyaXRlXykodm9pZCosIHN0cmluZ192aWV3KTsKIH07CiAKLS8v
IEFuIGFic3RyYWN0aW9uIHRvIHdoaWNoIGNvbnZlcnNpb25zIHdyaXRlIHRoZWlyIHN0ZDo6c3Ry
aW5nIGRhdGEuCisvLyBBbiBhYnN0cmFjdGlvbiB0byB3aGljaCBjb252ZXJzaW9ucyB3cml0ZSB0
aGVpciBzdHJpbmcgZGF0YS4KIGNsYXNzIEZvcm1hdFNpbmtJbXBsIHsKICBwdWJsaWM6CiAgIGV4
cGxpY2l0IEZvcm1hdFNpbmtJbXBsKEZvcm1hdFJhd1NpbmtJbXBsIHJhdykgOiByYXdfKHJhdykg
e30KQEAgLTMwNyw3ICszMDgsMTIgQEAgY2xhc3MgQ29udmVyc2lvblNwZWMgewogIHB1YmxpYzoK
ICAgRmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBmbGFnc187IH0KICAgTGVuZ3RoTW9kIGxl
bmd0aF9tb2QoKSBjb25zdCB7IHJldHVybiBsZW5ndGhfbW9kXzsgfQotICBDb252ZXJzaW9uQ2hh
ciBjb252KCkgY29uc3QgeyByZXR1cm4gY29udl87IH0KKyAgQ29udmVyc2lvbkNoYXIgY29udigp
IGNvbnN0IHsKKyAgICAvLyBLZWVwIHRoaXMgZmllbGQgZmlyc3QgaW4gdGhlIHN0cnVjdCAuIEl0
IGdlbmVyYXRlcyBiZXR0ZXIgY29kZSB3aGVuCisgICAgLy8gYWNjZXNzaW5nIGl0IHdoZW4gQ29u
dmVyc2lvblNwZWMgaXMgcGFzc2VkIGJ5IHZhbHVlIGluIHJlZ2lzdGVycy4KKyAgICBzdGF0aWNf
YXNzZXJ0KG9mZnNldG9mKENvbnZlcnNpb25TcGVjLCBjb252XykgPT0gMCwgIiIpOworICAgIHJl
dHVybiBjb252XzsKKyAgfQogCiAgIC8vIFJldHVybnMgdGhlIHNwZWNpZmllZCB3aWR0aC4gSWYg
d2lkdGggaXMgdW5zcGVjZmllZCwgaXQgcmV0dXJucyBhIG5lZ2F0aXZlCiAgIC8vIHZhbHVlLgpA
QCAtMzI0LDkgKzMzMCw5IEBAIGNsYXNzIENvbnZlcnNpb25TcGVjIHsKICAgdm9pZCBzZXRfbGVm
dChib29sIGIpIHsgZmxhZ3NfLmxlZnQgPSBiOyB9CiAKICBwcml2YXRlOgorICBDb252ZXJzaW9u
Q2hhciBjb252XzsKICAgRmxhZ3MgZmxhZ3NfOwogICBMZW5ndGhNb2QgbGVuZ3RoX21vZF87Ci0g
IENvbnZlcnNpb25DaGFyIGNvbnZfOwogICBpbnQgd2lkdGhfOwogICBpbnQgcHJlY2lzaW9uXzsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0LmgKaW5kZXggM2Iw
YWE1ZTcxNTdlY2JkYWY4ZjI0M2U0NGExM2E3NTE2MzhiNTc1ZC4uMTJlY2Q5OWU2ODBkMWViZDY3
OWQzYzg4MmY3ZjI2ZjNlOWZiNmU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9zdHJfZm9ybWF0L291dHB1dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zv
cm1hdC9vdXRwdXQuaApAQCAtNjksMTAgKzY5LDEwIEBAIGNsYXNzIEZJTEVSYXdTaW5rIHsKIAog
Ly8gUHJvdmlkZSBSYXdTaW5rIGludGVncmF0aW9uIHdpdGggY29tbW9uIHR5cGVzIGZyb20gdGhl
IFNUTC4KIGlubGluZSB2b2lkIEFic2xGb3JtYXRGbHVzaChzdGQ6OnN0cmluZyogb3V0LCBzdHJp
bmdfdmlldyBzKSB7Ci0gIG91dC0+YXBwZW5kKHMuYmVnaW4oKSwgcy5zaXplKCkpOworICBvdXQt
PmFwcGVuZChzLmRhdGEoKSwgcy5zaXplKCkpOwogfQogaW5saW5lIHZvaWQgQWJzbEZvcm1hdEZs
dXNoKHN0ZDo6b3N0cmVhbSogb3V0LCBzdHJpbmdfdmlldyBzKSB7Ci0gIG91dC0+d3JpdGUocy5i
ZWdpbigpLCBzLnNpemUoKSk7CisgIG91dC0+d3JpdGUocy5kYXRhKCksIHMuc2l6ZSgpKTsKIH0K
IAogdGVtcGxhdGUgPGNsYXNzIEFic2xDb3JkLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3Bh
cnNlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIuY2MKaW5k
ZXggMTAxMTRmNDg5YzAxODlmMDU4NjE0OTY4NTM3OGUxM2E4ZGY5NDY4NC4uNWUzZDBkMDU0N2Qx
ZGJhZDQ3YjNhNTAzYjY4NTA3NjM3NDM3MzMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L3N0cl9mb3JtYXQvcGFyc2VyLmNjCkBAIC04MSwxOSArODEsMjcgQEAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmludDhfdCBrSWRzW10gPSB7CiB0ZW1wbGF0ZSA8Ym9vbCBpc19wb3NpdGlvbmFsPgog
Ym9vbCBDb25zdW1lQ29udmVyc2lvbihzdHJpbmdfdmlldyAqc3JjLCBVbmJvdW5kQ29udmVyc2lv
biAqY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuZXh0X2FyZykgewotICBjb25z
dCBjaGFyICpwb3MgPSBzcmMtPmJlZ2luKCk7Ci0gIGNvbnN0IGNoYXIgKmNvbnN0IGVuZCA9IHNy
Yy0+ZW5kKCk7CisgIGNvbnN0IGNoYXIgKnBvcyA9IHNyYy0+ZGF0YSgpOworICBjb25zdCBjaGFy
ICpjb25zdCBlbmQgPSBwb3MgKyBzcmMtPnNpemUoKTsKICAgY2hhciBjOwotICAvLyBSZWFkIHRo
ZSBuZXh0IGNoYXIgaW50byBgY2AgYW5kIHVwZGF0ZSBgcG9zYC4gUmVhZHMgJ1wwJyBpZiBhdCBl
bmQuCi0gIGNvbnN0IGF1dG8gZ2V0X2NoYXIgPSBbJl0geyBjID0gcG9zID09IGVuZCA/ICdcMCcg
OiAqcG9zKys7IH07CisgIC8vIFJlYWQgdGhlIG5leHQgY2hhciBpbnRvIGBjYCBhbmQgdXBkYXRl
IGBwb3NgLiBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGFyZQorICAvLyBubyBtb3JlIGNoYXJzIHRv
IHJlYWQuCisjZGVmaW5lIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpICAg
ICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShwb3MgPT0gZW5kKSkgcmV0dXJuIGZh
bHNlOyBcCisgICAgYyA9ICpwb3MrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgIH0gd2hpbGUgKDApCiAKICAgY29uc3QgYXV0byBwYXJzZV9kaWdpdHMgPSBbJl0g
ewogICAgIGludCBkaWdpdHMgPSBjIC0gJzAnOwotICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIG92
ZXJmbG93IGBkaWdpdHNgIHNvIHdlIGNvbnN1bWUgYXQgbW9zdCBkaWdpdHMxMC0xCisgICAgLy8g
V2UgZG8gbm90IHdhbnQgdG8gb3ZlcmZsb3cgYGRpZ2l0c2Agc28gd2UgY29uc3VtZSBhdCBtb3N0
IGRpZ2l0czEwCiAgICAgLy8gZGlnaXRzLiBJZiB0aGVyZSBhcmUgbW9yZSBkaWdpdHMgdGhlIHBh
cnNpbmcgd2lsbCBmYWlsIGxhdGVyIG9uIHdoZW4gdGhlCiAgICAgLy8gZGlnaXQgZG9lc24ndCBt
YXRjaCB0aGUgZXhwZWN0ZWQgY2hhcmFjdGVycy4KLSAgICBpbnQgbnVtX2RpZ2l0cyA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6ZGlnaXRzMTAgLSAyOwotICAgIGZvciAoZ2V0X2NoYXIoKTsg
bnVtX2RpZ2l0cyAmJiBzdGQ6OmlzZGlnaXQoYyk7IGdldF9jaGFyKCkpIHsKKyAgICBpbnQgbnVt
X2RpZ2l0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6ZGlnaXRzMTA7CisgICAgZm9yICg7
OykgeworICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShwb3MgPT0gZW5kIHx8ICFudW1fZGln
aXRzKSkgYnJlYWs7CisgICAgICBjID0gKnBvcysrOworICAgICAgaWYgKCFzdGQ6OmlzZGlnaXQo
YykpIGJyZWFrOwogICAgICAgLS1udW1fZGlnaXRzOwogICAgICAgZGlnaXRzID0gMTAgKiBkaWdp
dHMgKyBjIC0gJzAnOwogICAgIH0KQEAgLTEwMSwxNCArMTA5LDE0IEBAIGJvb2wgQ29uc3VtZUNv
bnZlcnNpb24oc3RyaW5nX3ZpZXcgKnNyYywgVW5ib3VuZENvbnZlcnNpb24gKmNvbnYsCiAgIH07
CiAKICAgaWYgKGlzX3Bvc2l0aW9uYWwpIHsKLSAgICBnZXRfY2hhcigpOwotICAgIGlmIChjIDwg
JzEnIHx8IGMgPiAnOScpIHJldHVybiBmYWxzZTsKKyAgICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5U
RVJOQUxfR0VUX0NIQVIoKTsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGMgPCAnMScgfHwg
YyA+ICc5JykpIHJldHVybiBmYWxzZTsKICAgICBjb252LT5hcmdfcG9zaXRpb24gPSBwYXJzZV9k
aWdpdHMoKTsKICAgICBhc3NlcnQoY29udi0+YXJnX3Bvc2l0aW9uID4gMCk7Ci0gICAgaWYgKGMg
IT0gJyQnKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjICE9ICck
JykpIHJldHVybiBmYWxzZTsKICAgfQogCi0gIGdldF9jaGFyKCk7CisgIEFCU0xfRk9STUFUX1BB
UlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwogCiAgIC8vIFdlIHNob3VsZCBzdGFydCB3aXRoIHRo
ZSBiYXNpYyBmbGFnIG9uLgogICBhc3NlcnQoY29udi0+ZmxhZ3MuYmFzaWMpOwpAQCAtMTE5LDMy
ICsxMjcsMzkgQEAgYm9vbCBDb25zdW1lQ29udmVyc2lvbihzdHJpbmdfdmlldyAqc3JjLCBVbmJv
dW5kQ29udmVyc2lvbiAqY29udiwKICAgaWYgKGMgPCAnQScpIHsKICAgICBjb252LT5mbGFncy5i
YXNpYyA9IGZhbHNlOwogCi0gICAgZm9yICg7IGMgPD0gJzAnOyBnZXRfY2hhcigpKSB7CisgICAg
Zm9yICg7IGMgPD0gJzAnOykgeworICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IGJlIGFibGUgdG8g
c3BlZWQgdGhpcyB1cCByZXVzaW5nIHRoZSBrSWRzIGxvb2t1cCB0YWJsZQorICAgICAgLy8gZnJv
bSBhYm92ZS4KKyAgICAgIC8vIEl0IG1pZ2h0IHJlcXVpcmUgY2hhbmdpbmcgRmxhZ3MgdG8gYmUg
YSBwbGFpbiBpbnRlZ2VyIHdoZXJlIHdlIGNhbiB8PSBhCisgICAgICAvLyB2YWx1ZS4KICAgICAg
IHN3aXRjaCAoYykgewogICAgICAgICBjYXNlICctJzoKICAgICAgICAgICBjb252LT5mbGFncy5s
ZWZ0ID0gdHJ1ZTsKLSAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSAnKyc6CiAgICAgICAgICAgY29udi0+ZmxhZ3Muc2hvd19wb3MgPSB0cnVlOwotICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICcgJzoKICAg
ICAgICAgICBjb252LT5mbGFncy5zaWduX2NvbCA9IHRydWU7Ci0gICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJyMnOgogICAgICAgICAgIGNvbnYtPmZs
YWdzLmFsdCA9IHRydWU7Ci0gICAgICAgICAgY29udGludWU7CisgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgJzAnOgogICAgICAgICAgIGNvbnYtPmZsYWdzLnplcm8gPSB0cnVlOwotICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgIGdvdG8gZmxhZ3NfZG9uZTsKICAgICAgIH0KLSAgICAgIGJyZWFrOworICAgICAgQUJT
TF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAgICAgfQorZmxhZ3NfZG9uZToK
IAogICAgIGlmIChjIDw9ICc5JykgewogICAgICAgaWYgKGMgPj0gJzAnKSB7CiAgICAgICAgIGlu
dCBtYXliZV93aWR0aCA9IHBhcnNlX2RpZ2l0cygpOwogICAgICAgICBpZiAoIWlzX3Bvc2l0aW9u
YWwgJiYgYyA9PSAnJCcpIHsKLSAgICAgICAgICBpZiAoKm5leHRfYXJnICE9IDApIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCpuZXh0X2FyZyAhPSAwKSkg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgIC8vIFBvc2l0aW9uYWwgY29udmVyc2lvbi4KICAgICAg
ICAgICAqbmV4dF9hcmcgPSAtMTsKICAgICAgICAgICBjb252LT5mbGFncyA9IEZsYWdzKCk7CkBA
IC0xNTMsMTIgKzE2OCwxMiBAQCBib29sIENvbnN1bWVDb252ZXJzaW9uKHN0cmluZ192aWV3ICpz
cmMsIFVuYm91bmRDb252ZXJzaW9uICpjb252LAogICAgICAgICB9CiAgICAgICAgIGNvbnYtPndp
ZHRoLnNldF92YWx1ZShtYXliZV93aWR0aCk7CiAgICAgICB9IGVsc2UgaWYgKGMgPT0gJyonKSB7
Ci0gICAgICAgIGdldF9jaGFyKCk7CisgICAgICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5B
TF9HRVRfQ0hBUigpOwogICAgICAgICBpZiAoaXNfcG9zaXRpb25hbCkgewotICAgICAgICAgIGlm
IChjIDwgJzEnIHx8IGMgPiAnOScpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICBpZiAoQUJTTF9Q
UkVESUNUX0ZBTFNFKGMgPCAnMScgfHwgYyA+ICc5JykpIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICBjb252LT53aWR0aC5zZXRfZnJvbV9hcmcocGFyc2VfZGlnaXRzKCkpOwotICAgICAgICAgIGlm
IChjICE9ICckJykgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGdldF9jaGFyKCk7CisgICAgICAg
ICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjICE9ICckJykpIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICBjb252LT53aWR0aC5zZXRfZnJvbV9hcmcoKysqbmV4dF9hcmcpOwog
ICAgICAgICB9CkBAIC0xNjYsMTYgKzE4MSwxNiBAQCBib29sIENvbnN1bWVDb252ZXJzaW9uKHN0
cmluZ192aWV3ICpzcmMsIFVuYm91bmRDb252ZXJzaW9uICpjb252LAogICAgIH0KIAogICAgIGlm
IChjID09ICcuJykgewotICAgICAgZ2V0X2NoYXIoKTsKKyAgICAgIEFCU0xfRk9STUFUX1BBUlNF
Ul9JTlRFUk5BTF9HRVRfQ0hBUigpOwogICAgICAgaWYgKHN0ZDo6aXNkaWdpdChjKSkgewogICAg
ICAgICBjb252LT5wcmVjaXNpb24uc2V0X3ZhbHVlKHBhcnNlX2RpZ2l0cygpKTsKICAgICAgIH0g
ZWxzZSBpZiAoYyA9PSAnKicpIHsKLSAgICAgICAgZ2V0X2NoYXIoKTsKKyAgICAgICAgQUJTTF9G
T1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAgICAgICAgIGlmIChpc19wb3NpdGlv
bmFsKSB7Ci0gICAgICAgICAgaWYgKGMgPCAnMScgfHwgYyA+ICc5JykgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoYyA8ICcxJyB8fCBjID4gJzknKSkgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgIGNvbnYtPnByZWNpc2lvbi5zZXRfZnJvbV9hcmcocGFyc2Vf
ZGlnaXRzKCkpOwogICAgICAgICAgIGlmIChjICE9ICckJykgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgIGdldF9jaGFyKCk7CisgICAgICAgICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dF
VF9DSEFSKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgY29udi0+cHJlY2lzaW9uLnNl
dF9mcm9tX2FyZygrKypuZXh0X2FyZyk7CiAgICAgICAgIH0KQEAgLTE4OCwyMyArMjAzLDIzIEBA
IGJvb2wgQ29uc3VtZUNvbnZlcnNpb24oc3RyaW5nX3ZpZXcgKnNyYywgVW5ib3VuZENvbnZlcnNp
b24gKmNvbnYsCiAgIHN0ZDo6aW50OF90IGlkID0ga0lkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihjKV07CiAKICAgaWYgKGlkIDwgMCkgewotICAgIGlmIChpZCA9PSBub25lKSByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShpZCA9PSBub25lKSkgcmV0dXJuIGZh
bHNlOwogCiAgICAgLy8gSXQgaXMgYSBsZW5ndGggbW9kaWZpZXIuCiAgICAgdXNpbmcgc3RyX2Zv
cm1hdF9pbnRlcm5hbDo6TGVuZ3RoTW9kOwogICAgIExlbmd0aE1vZCBsZW5ndGhfbW9kID0gTGVu
Z3RoTW9kOjpGcm9tSWQoc3RhdGljX2Nhc3Q8TE0+KH5pZCkpOwotICAgIGdldF9jaGFyKCk7Cisg
ICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAgICAgaWYgKGMgPT0g
J2gnICYmIGxlbmd0aF9tb2QuaWQoKSA9PSBMZW5ndGhNb2Q6OmgpIHsKICAgICAgIGNvbnYtPmxl
bmd0aF9tb2QgPSBMZW5ndGhNb2Q6OkZyb21JZChMZW5ndGhNb2Q6OmhoKTsKLSAgICAgIGdldF9j
aGFyKCk7CisgICAgICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAg
ICB9IGVsc2UgaWYgKGMgPT0gJ2wnICYmIGxlbmd0aF9tb2QuaWQoKSA9PSBMZW5ndGhNb2Q6Omwp
IHsKICAgICAgIGNvbnYtPmxlbmd0aF9tb2QgPSBMZW5ndGhNb2Q6OkZyb21JZChMZW5ndGhNb2Q6
OmxsKTsKLSAgICAgIGdldF9jaGFyKCk7CisgICAgICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJO
QUxfR0VUX0NIQVIoKTsKICAgICB9IGVsc2UgewogICAgICAgY29udi0+bGVuZ3RoX21vZCA9IGxl
bmd0aF9tb2Q7CiAgICAgfQogICAgIGlkID0ga0lkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihjKV07Ci0gICAgaWYgKGlkIDwgMCkgcmV0dXJuIGZhbHNlOworICAgIGlmIChBQlNMX1BSRURJ
Q1RfRkFMU0UoaWQgPCAwKSkgcmV0dXJuIGZhbHNlOwogICB9CiAKICAgYXNzZXJ0KENoZWNrRmFz
dFBhdGhTZXR0aW5nKCpjb252KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L3N0cl9mb3JtYXQvcGFyc2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQv
cGFyc2VyLmgKaW5kZXggNWJlYmM5NTU0MGU2YzI4ZDM5ZDA4NDczMDUzNjY3NDJjZWQ5ZWRmYS4u
MTAyMmYwNjI5N2E3NGE1ODRlODJlNDFjYTRiODI0ZmJiZjYzMzkxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIuaApAQCAtNzUsMTQgKzc1LDE0IEBAIHN0cnVj
dCBVbmJvdW5kQ29udmVyc2lvbiB7CiBib29sIENvbnN1bWVVbmJvdW5kQ29udmVyc2lvbihzdHJp
bmdfdmlldyogc3JjLCBVbmJvdW5kQ29udmVyc2lvbiogY29udiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCogbmV4dF9hcmcpOwogCi0vLyBQYXJzZSB0aGUgZm9ybWF0IHN0ZDo6
c3RyaW5nIHByb3ZpZGVkIGluICdzcmMnIGFuZCBwYXNzIHRoZSBpZGVudGlmaWVkIGl0ZW1zIGlu
dG8KKy8vIFBhcnNlIHRoZSBmb3JtYXQgc3RyaW5nIHByb3ZpZGVkIGluICdzcmMnIGFuZCBwYXNz
IHRoZSBpZGVudGlmaWVkIGl0ZW1zIGludG8KIC8vICdjb25zdW1lcicuCiAvLyBUZXh0IHJ1bnMg
d2lsbCBiZSBwYXNzZWQgYnkgY2FsbGluZwogLy8gICBDb25zdW1lcjo6QXBwZW5kKHN0cmluZ192
aWV3KTsKIC8vIENvbnZlcnNpb25JdGVtcyB3aWxsIGJlIHBhc3NlZCBieSBjYWxsaW5nCiAvLyAg
IENvbnN1bWVyOjpDb252ZXJ0T25lKFVuYm91bmRDb252ZXJzaW9uLCBzdHJpbmdfdmlldyk7CiAv
LyBJbiB0aGUgY2FzZSBvZiBDb252ZXJ0T25lLCB0aGUgc3RyaW5nX3ZpZXcgdGhhdCBpcyBwYXNz
ZWQgaXMgdGhlCi0vLyBwb3J0aW9uIG9mIHRoZSBmb3JtYXQgc3RkOjpzdHJpbmcgY29ycmVzcG9u
ZGluZyB0byB0aGUgY29udmVyc2lvbiwgbm90IGluY2x1ZGluZworLy8gcG9ydGlvbiBvZiB0aGUg
Zm9ybWF0IHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb252ZXJzaW9uLCBub3QgaW5jbHVk
aW5nCiAvLyB0aGUgbGVhZGluZyAlLiBPbiBzdWNjZXNzLCBpdCByZXR1cm5zIHRydWUuIE9uIGZh
aWx1cmUsIGl0IHN0b3BzIGFuZCByZXR1cm5zCiAvLyBmYWxzZS4KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDb25zdW1lcj4KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBQYXJzZUZvcm1hdFN0cmluZyhzdHJp
bmdfdmlldyBzcmMsIENvbnN1bWVyIGNvbnN1bWVyKSB7CiAgIGludCBuZXh0X2FyZyA9IDA7CiAg
IHdoaWxlICghc3JjLmVtcHR5KCkpIHsKICAgICBjb25zdCBjaGFyKiBwZXJjZW50ID0KLSAgICAg
ICAgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbWNocihzcmMuYmVnaW4oKSwgJyUnLCBzcmMu
c2l6ZSgpKSk7CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1jaHIoc3JjLmRh
dGEoKSwgJyUnLCBzcmMuc2l6ZSgpKSk7CiAgICAgaWYgKCFwZXJjZW50KSB7CiAgICAgICAvLyBX
ZSBmb3VuZCB0aGUgbGFzdCBzdWJzdHJpbmcuCiAgICAgICByZXR1cm4gY29uc3VtZXIuQXBwZW5k
KHNyYyk7CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgUGFyc2VGb3JtYXRTdHJpbmcoc3RyaW5nX3Zp
ZXcgc3JjLCBDb25zdW1lciBjb25zdW1lcikgewogICAgIC8vIFdlIGZvdW5kIGEgcGVyY2VudCwg
c28gcHVzaCB0aGUgdGV4dCBydW4gdGhlbiBwcm9jZXNzIHRoZSBwZXJjZW50LgogICAgIHNpemVf
dCBwZXJjZW50X2xvYyA9IHBlcmNlbnQgLSBzcmMuZGF0YSgpOwogICAgIGlmICghY29uc3VtZXIu
QXBwZW5kKHN0cmluZ192aWV3KHNyYy5kYXRhKCksIHBlcmNlbnRfbG9jKSkpIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAocGVyY2VudCArIDEgPj0gc3JjLmVuZCgpKSByZXR1cm4gZmFsc2U7CisgICAg
aWYgKHBlcmNlbnQgKyAxID49IHNyYy5kYXRhKCkgKyBzcmMuc2l6ZSgpKSByZXR1cm4gZmFsc2U7
CiAKICAgICBVbmJvdW5kQ29udmVyc2lvbiBjb252OwogCkBAIC0xNzgsNyArMTc4LDggQEAgY2xh
c3MgUGFyc2VkRm9ybWF0QmFzZSB7CiAgICAgY29uc3QgY2hhciogY29uc3QgYmFzZSA9IGRhdGFf
LmdldCgpOwogICAgIHN0cmluZ192aWV3IHRleHQoYmFzZSwgMCk7CiAgICAgZm9yIChjb25zdCBh
dXRvJiBpdGVtIDogaXRlbXNfKSB7Ci0gICAgICB0ZXh0ID0gc3RyaW5nX3ZpZXcodGV4dC5lbmQo
KSwgKGJhc2UgKyBpdGVtLnRleHRfZW5kKSAtIHRleHQuZW5kKCkpOworICAgICAgY29uc3QgY2hh
ciogY29uc3QgZW5kID0gdGV4dC5kYXRhKCkgKyB0ZXh0LnNpemUoKTsKKyAgICAgIHRleHQgPSBz
dHJpbmdfdmlldyhlbmQsIChiYXNlICsgaXRlbS50ZXh0X2VuZCkgLSBlbmQpOwogICAgICAgaWYg
KGl0ZW0uaXNfY29udmVyc2lvbikgewogICAgICAgICBpZiAoIWNvbnN1bWVyLkNvbnZlcnRPbmUo
aXRlbS5jb252LCB0ZXh0KSkgcmV0dXJuIGZhbHNlOwogICAgICAgfSBlbHNlIHsKQEAgLTIzNyw3
ICsyMzgsNyBAQCBjbGFzcyBQYXJzZWRGb3JtYXRCYXNlIHsKIC8vIFRoaXMgY2xhc3MgYWxzbyBz
dXBwb3J0cyBydW50aW1lIGZvcm1hdCBjaGVja2luZyB3aXRoIHRoZSA6Ok5ldygpIGFuZAogLy8g
OjpOZXdBbGxvd0lnbm9yZWQoKSBmYWN0b3J5IGZ1bmN0aW9ucy4KIC8vIFRoaXMgaXMgdGhlIG9u
bHkgQVBJIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHBhc3MgYSBydW50aW1lIHNwZWNpZmllZCBm
b3JtYXQKLS8vIHN0ZDo6c3RyaW5nLiBUaGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB3aWxsIHJldHVy
biBOVUxMIGlmIHRoZSBmb3JtYXQgZG9lcyBub3QgbWF0Y2gKKy8vIHN0cmluZy4gVGhlc2UgZmFj
dG9yeSBmdW5jdGlvbnMgd2lsbCByZXR1cm4gTlVMTCBpZiB0aGUgZm9ybWF0IGRvZXMgbm90IG1h
dGNoCiAvLyB0aGUgY29udmVyc2lvbnMgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLgogdGVtcGxhdGUg
PHN0cl9mb3JtYXRfaW50ZXJuYWw6OkNvbnYuLi4gQz4KIGNsYXNzIEV4dGVuZGVkUGFyc2VkRm9y
bWF0IDogcHVibGljIHN0cl9mb3JtYXRfaW50ZXJuYWw6OlBhcnNlZEZvcm1hdEJhc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlcl90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlcl90ZXN0LmNjCmluZGV4
IGU2OTgwMjBiMWFiYTM4NDUyYzdiODg5OWZkM2VkMjc2OWIwYzNlNTEuLmFlNDAyMDMxOTFiOTdm
OWMzYzRmMGM0YmUyODFhMjI5MjFkYjZlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL3N0cl9mb3JtYXQvcGFyc2VyX3Rlc3QuY2MKQEAgLTY2LDEwICs2NiwxMCBAQCBjbGFzcyBD
b25zdW1lVW5ib3VuZENvbnZlcnNpb25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAg
IHR5cGVkZWYgVW5ib3VuZENvbnZlcnNpb24gUHJvcHM7CiAgIHN0cmluZ192aWV3IENvbnN1bWUo
c3RyaW5nX3ZpZXcqIHNyYykgewogICAgIGludCBuZXh0ID0gMDsKLSAgICBjb25zdCBjaGFyKiBw
cmV2X2JlZ2luID0gc3JjLT5iZWdpbigpOworICAgIGNvbnN0IGNoYXIqIHByZXZfYmVnaW4gPSBz
cmMtPmRhdGEoKTsKICAgICBvID0gVW5ib3VuZENvbnZlcnNpb24oKTsgIC8vIHJlZnJlc2gKICAg
ICBDb25zdW1lVW5ib3VuZENvbnZlcnNpb24oc3JjLCAmbywgJm5leHQpOwotICAgIHJldHVybiB7
cHJldl9iZWdpbiwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmMtPmJlZ2luKCkgLSBwcmV2X2JlZ2lu
KX07CisgICAgcmV0dXJuIHtwcmV2X2JlZ2luLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyYy0+ZGF0
YSgpIC0gcHJldl9iZWdpbil9OwogICB9CiAKICAgYm9vbCBSdW4oY29uc3QgY2hhciAqZm10LCBi
b29sIGZvcmNlX3Bvc2l0aW9uYWwgPSBmYWxzZSkgewpAQCAtODQsOSArODQsOSBAQCBjbGFzcyBD
b25zdW1lVW5ib3VuZENvbnZlcnNpb25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBU
RVNUX0YoQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uVGVzdCwgQ29uc3VtZVNwZWNpZmljYXRpb24p
IHsKICAgc3RydWN0IEV4cGVjdGF0aW9uIHsKICAgICBpbnQgbGluZTsKLSAgICBjb25zdCBjaGFy
ICpzcmM7Ci0gICAgY29uc3QgY2hhciAqb3V0OwotICAgIGNvbnN0IGNoYXIgKnNyY19wb3N0Owor
ICAgIHN0cmluZ192aWV3IHNyYzsKKyAgICBzdHJpbmdfdmlldyBvdXQ7CisgICAgc3RyaW5nX3Zp
ZXcgc3JjX3Bvc3Q7CiAgIH07CiAgIGNvbnN0IEV4cGVjdGF0aW9uIGtFeHBlY3RbXSA9IHsKICAg
ICB7X19MSU5FX18sICIiLCAgICAgIiIsICAgICAiIiAgfSwKQEAgLTIzNiw2ICsyMzYsMTYgQEAg
VEVTVF9GKENvbnN1bWVVbmJvdW5kQ29udmVyc2lvblRlc3QsIFdpZHRoQW5kUHJlY2lzaW9uKSB7
CiAgIEVYUEVDVF9FUSg5LCBvLnByZWNpc2lvbi5nZXRfZnJvbV9hcmcoKSk7CiAKICAgRVhQRUNU
X0ZBTFNFKFJ1bigiLiowJGQiKSkgPDwgIm5vIGFyZyAwIjsKKworICAvLyBMYXJnZSB2YWx1ZXMK
KyAgRVhQRUNUX1RSVUUoUnVuKCI5OTk5OTk5OTkuOTk5OTk5OTk5ZCIpKTsKKyAgRVhQRUNUX0ZB
TFNFKG8ud2lkdGguaXNfZnJvbV9hcmcoKSk7CisgIEVYUEVDVF9FUSg5OTk5OTk5OTksIG8ud2lk
dGgudmFsdWUoKSk7CisgIEVYUEVDVF9GQUxTRShvLnByZWNpc2lvbi5pc19mcm9tX2FyZygpKTsK
KyAgRVhQRUNUX0VRKDk5OTk5OTk5OSwgby5wcmVjaXNpb24udmFsdWUoKSk7CisKKyAgRVhQRUNU
X0ZBTFNFKFJ1bigiMTAwMDAwMDAwMC45OTk5OTk5OTlkIikpOworICBFWFBFQ1RfRkFMU0UoUnVu
KCI5OTk5OTk5OTkuMTAwMDAwMDAwMGQiKSk7CiB9CiAKIFRFU1RfRihDb25zdW1lVW5ib3VuZENv
bnZlcnNpb25UZXN0LCBGbGFncykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9zdHJfam9pbl9pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfam9pbl9p
bnRlcm5hbC5oCmluZGV4IGE3MzQ3NThjMjFlZTMwOTUxZjc3YTJjNjljOTZlYzc1ZDcxZWU5NmEu
LjAwNThmYzhhYTRkNWE4MTIxMGE5OGYyZDFiYjExYmMwYzY1YTk2NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2pvaW5faW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9qb2luX2ludGVybmFsLmgKQEAgLTE4OSw3ICsxODksNyBAQCBzdHJ1
Y3QgRGVmYXVsdEZvcm1hdHRlcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVUeXBlPj4KIC8vCiAKIC8v
IFRoZSBtYWluIGpvaW5pbmcgYWxnb3JpdGhtLiBUaGlzIHNpbXBseSBqb2lucyB0aGUgZWxlbWVu
dHMgaW4gdGhlIGdpdmVuCi0vLyBpdGVyYXRvciByYW5nZSwgZWFjaCBzZXBhcmF0ZWQgYnkgdGhl
IGdpdmVuIHNlcGFyYXRvciwgaW50byBhbiBvdXRwdXQgc3RkOjpzdHJpbmcsCisvLyBpdGVyYXRv
ciByYW5nZSwgZWFjaCBzZXBhcmF0ZWQgYnkgdGhlIGdpdmVuIHNlcGFyYXRvciwgaW50byBhbiBv
dXRwdXQgc3RyaW5nLAogLy8gYW5kIGZvcm1hdHMgZWFjaCBlbGVtZW50IHVzaW5nIHRoZSBwcm92
aWRlZCBGb3JtYXR0ZXIgb2JqZWN0LgogdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBl
bmFtZSBGb3JtYXR0ZXI+CiBzdGQ6OnN0cmluZyBKb2luQWxnb3JpdGhtKEl0ZXJhdG9yIHN0YXJ0
LCBJdGVyYXRvciBlbmQsIGFic2w6OnN0cmluZ192aWV3IHMsCkBAIC0yMDUsMjAgKzIwNSwyMCBA
QCBzdGQ6OnN0cmluZyBKb2luQWxnb3JpdGhtKEl0ZXJhdG9yIHN0YXJ0LCBJdGVyYXRvciBlbmQs
IGFic2w6OnN0cmluZ192aWV3IHMsCiB9CiAKIC8vIEEgam9pbmluZyBhbGdvcml0aG0gdGhhdCdz
IG9wdGltaXplZCBmb3IgYSBmb3J3YXJkIGl0ZXJhdG9yIHJhbmdlIG9mCi0vLyBzdGQ6OnN0cmlu
Zy1saWtlIG9iamVjdHMgdGhhdCBkbyBub3QgbmVlZCBhbnkgYWRkaXRpb25hbCBmb3JtYXR0aW5n
LiBUaGlzIGlzIHRvCi0vLyBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2Ugb2Ygam9pbmluZywgc2F5
LCBhIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBvciBhCisvLyBzdHJpbmctbGlrZSBvYmplY3Rz
IHRoYXQgZG8gbm90IG5lZWQgYW55IGFkZGl0aW9uYWwgZm9ybWF0dGluZy4gVGhpcyBpcyB0bwor
Ly8gb3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlIG9mIGpvaW5pbmcsIHNheSwgYSBzdGQ6OnZlY3Rv
cjxzdHJpbmc+IG9yIGEKIC8vIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3Pi4KIC8vCiAv
LyBUaGlzIGlzIGFuIG92ZXJsb2FkIG9mIHRoZSBwcmV2aW91cyBKb2luQWxnb3JpdGhtKCkgZnVu
Y3Rpb24uIEhlcmUgdGhlCiAvLyBGb3JtYXR0ZXIgYXJndW1lbnQgaXMgb2YgdHlwZSBOb0Zvcm1h
dHRlci4gU2luY2UgTm9Gb3JtYXR0ZXIgaXMgYW4gaW50ZXJuYWwKIC8vIHR5cGUsIHRoaXMgb3Zl
cmxvYWQgaXMgb25seSBpbnZva2VkIHdoZW4gc3RyaW5nczo6Sm9pbigpIGlzIGNhbGxlZCB3aXRo
IGEKLS8vIHJhbmdlIG9mIHN0ZDo6c3RyaW5nLWxpa2Ugb2JqZWN0cyAoZS5nLiwgc3RkOjpzdHJp
bmcsIGFic2w6OnN0cmluZ192aWV3KSwgYW5kIGFuCisvLyByYW5nZSBvZiBzdHJpbmctbGlrZSBv
YmplY3RzIChlLmcuLCBzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3KSwgYW5kIGFuCiAvLyBleHBs
aWNpdCBGb3JtYXR0ZXIgYXJndW1lbnQgd2FzIE5PVCBzcGVjaWZpZWQuCiAvLwogLy8gVGhlIG9w
dGltaXphdGlvbiBpcyB0aGF0IHRoZSBuZWVkZWQgc3BhY2Ugd2lsbCBiZSByZXNlcnZlZCBpbiB0
aGUgb3V0cHV0Ci0vLyBzdGQ6OnN0cmluZyB0byBhdm9pZCB0aGUgbmVlZCB0byByZXNpemUgd2hp
bGUgYXBwZW5kaW5nLiBUbyBkbyB0aGlzLCB0aGUgaXRlcmF0b3IKKy8vIHN0cmluZyB0byBhdm9p
ZCB0aGUgbmVlZCB0byByZXNpemUgd2hpbGUgYXBwZW5kaW5nLiBUbyBkbyB0aGlzLCB0aGUgaXRl
cmF0b3IKIC8vIHJhbmdlIHdpbGwgYmUgdHJhdmVyc2VkIHR3aWNlOiBvbmNlIHRvIGNhbGN1bGF0
ZSB0aGUgdG90YWwgbmVlZGVkIHNpemUsIGFuZAotLy8gdGhlbiBhZ2FpbiB0byBjb3B5IHRoZSBl
bGVtZW50cyBhbmQgZGVsaW1pdGVycyB0byB0aGUgb3V0cHV0IHN0ZDo6c3RyaW5nLgorLy8gdGhl
biBhZ2FpbiB0byBjb3B5IHRoZSBlbGVtZW50cyBhbmQgZGVsaW1pdGVycyB0byB0aGUgb3V0cHV0
IHN0cmluZy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvciwKICAgICAgICAgICB0eXBlbmFt
ZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8CiAgICAgICAg
ICAgICAgIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6aXRlcmF0b3Jf
Y2F0ZWdvcnksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9zcGxpdF9p
bnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfc3BsaXRfaW50ZXJuYWwuaApp
bmRleCA5Y2YwODMzZjQ5MDI4YWIwMzljN2M0MjI1MDRhOTk2ZDk5ZTk0M2RjLi44MWU4ZDU1NTQ0
NjgwZDY3MWU1NmViMDI1NDk5NWI0MmJkNTQ4ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL3N0cl9zcGxpdF9pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvc3RyX3NwbGl0X2ludGVybmFsLmgKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIHN0cmlu
Z3NfaW50ZXJuYWwgewogCiAvLyBUaGlzIGNsYXNzIGlzIGltcGxpY2l0bHkgY29uc3RydWN0aWJs
ZSBmcm9tIGV2ZXJ5dGhpbmcgdGhhdCBhYnNsOjpzdHJpbmdfdmlldwogLy8gaXMgaW1wbGljaXRs
eSBjb25zdHJ1Y3RpYmxlIGZyb20uIElmIGl0J3MgY29uc3RydWN0ZWQgZnJvbSBhIHRlbXBvcmFy
eQotLy8gc3RkOjpzdHJpbmcsIHRoZSBkYXRhIGlzIG1vdmVkIGludG8gYSBkYXRhIG1lbWJlciBz
byBpdHMgbGlmZXRpbWUgbWF0Y2hlcyB0aGF0IG9mCisvLyBzdHJpbmcsIHRoZSBkYXRhIGlzIG1v
dmVkIGludG8gYSBkYXRhIG1lbWJlciBzbyBpdHMgbGlmZXRpbWUgbWF0Y2hlcyB0aGF0IG9mCiAv
LyB0aGUgQ29udmVydGlibGVUb1N0cmluZ1ZpZXcgaW5zdGFuY2UuCiBjbGFzcyBDb252ZXJ0aWJs
ZVRvU3RyaW5nVmlldyB7CiAgcHVibGljOgpAQCAtMTAyLDcgKzEwMiw3IEBAIENvbnZlcnRpYmxl
VG9TdHJpbmdWaWV3KHN0ZDo6c3RyaW5nJiYgcykgIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0
KQogICBhYnNsOjpzdHJpbmdfdmlldyB2YWx1ZV87CiB9OwogCi0vLyBBbiBpdGVyYXRvciB0aGF0
IGVudW1lcmF0ZXMgdGhlIHBhcnRzIG9mIGEgc3RkOjpzdHJpbmcgZnJvbSBhIFNwbGl0dGVyLiBU
aGUgdGV4dAorLy8gQW4gaXRlcmF0b3IgdGhhdCBlbnVtZXJhdGVzIHRoZSBwYXJ0cyBvZiBhIHN0
cmluZyBmcm9tIGEgU3BsaXR0ZXIuIFRoZSB0ZXh0CiAvLyB0byBiZSBzcGxpdCwgdGhlIERlbGlt
aXRlciwgYW5kIHRoZSBQcmVkaWNhdGUgYXJlIGFsbCB0YWtlbiBmcm9tIHRoZSBnaXZlbgogLy8g
U3BsaXR0ZXIgb2JqZWN0LiBJdGVyYXRvcnMgbWF5IG9ubHkgYmUgY29tcGFyZWQgaWYgdGhleSBy
ZWZlciB0byB0aGUgc2FtZQogLy8gU3BsaXR0ZXIgaW5zdGFuY2UuCkBAIC0xNTksNyArMTU5LDcg
QEAgY2xhc3MgU3BsaXRJdGVyYXRvciB7CiAgICAgICB9CiAgICAgICBjb25zdCBhYnNsOjpzdHJp
bmdfdmlldyB0ZXh0ID0gc3BsaXR0ZXJfLT50ZXh0KCk7CiAgICAgICBjb25zdCBhYnNsOjpzdHJp
bmdfdmlldyBkID0gZGVsaW1pdGVyXy5GaW5kKHRleHQsIHBvc18pOwotICAgICAgaWYgKGQuZGF0
YSgpID09IHRleHQuZW5kKCkpIHN0YXRlXyA9IGtMYXN0U3RhdGU7CisgICAgICBpZiAoZC5kYXRh
KCkgPT0gdGV4dC5kYXRhKCkgKyB0ZXh0LnNpemUoKSkgc3RhdGVfID0ga0xhc3RTdGF0ZTsKICAg
ICAgIGN1cnJfID0gdGV4dC5zdWJzdHIocG9zXywgZC5kYXRhKCkgLSAodGV4dC5kYXRhKCkgKyBw
b3NfKSk7CiAgICAgICBwb3NfICs9IGN1cnJfLnNpemUoKSArIGQuc2l6ZSgpOwogICAgIH0gd2hp
bGUgKCFwcmVkaWNhdGVfKGN1cnJfKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNo
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaC5jYwppbmRleCAyNWJkN2YwYjgyOGJmZGVjNzJjYTU4
N2Q0ODcxYmZmYjY5Mjg2MmUzLi4zZDEwYzU3Nzg0ZWJlOTI1NDk4NTViY2ZiMDc3Njc5OTk2NmYx
NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvbWF0Y2guY2MKQEAgLTI3LDYgKzI3LDEzIEBAIGJvb2wgQ2FzZUVxdWFsKGFic2w6OnN0cmlu
Z192aWV3IHBpZWNlMSwgYWJzbDo6c3RyaW5nX3ZpZXcgcGllY2UyKSB7CiB9CiB9ICAvLyBuYW1l
c3BhY2UKIAorYm9vbCBFcXVhbHNJZ25vcmVDYXNlKGFic2w6OnN0cmluZ192aWV3IHBpZWNlMSwg
YWJzbDo6c3RyaW5nX3ZpZXcgcGllY2UyKSB7CisgIHJldHVybiAocGllY2UxLnNpemUoKSA9PSBw
aWVjZTIuc2l6ZSgpICYmCisgICAgICAgICAgMCA9PSBhYnNsOjpzdHJpbmdzX2ludGVybmFsOjpt
ZW1jYXNlY21wKHBpZWNlMS5kYXRhKCksIHBpZWNlMi5kYXRhKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZWNlMS5zaXplKCkpKTsKKyAgLy8g
bWVtY2FzZWNtcCB1c2VzIGFic2w6OmFzY2lpX3RvbG93ZXIoKS4KK30KKwogYm9vbCBTdGFydHNX
aXRoSWdub3JlQ2FzZShhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmlldyBw
cmVmaXgpIHsKICAgcmV0dXJuICh0ZXh0LnNpemUoKSA+PSBwcmVmaXguc2l6ZSgpKSAmJgogICAg
ICAgICAgQ2FzZUVxdWFsKHRleHQuc3Vic3RyKDAsIHByZWZpeC5zaXplKCkpLCBwcmVmaXgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaC5o
CmluZGV4IDEwOGI2MDQ4YjA0OGVjMjY1ZjUxOGFhM2E2ZWUwNGQxMDE5ZjM0MzYuLjZlOGVkMTBm
YzUwZmViNmY3MTk2ZGI0MTljNGEzOGE0MjQwYjRmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvbWF0Y2guaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmgKQEAgLTE3LDcgKzE3LDcgQEAK
IC8vIEZpbGU6IG1hdGNoLmgKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwotLy8gVGhpcyBm
aWxlIGNvbnRhaW5zIHNpbXBsZSB1dGlsaXRpZXMgZm9yIHBlcmZvcm1pbmcgc3RkOjpzdHJpbmcg
bWF0Y2hpbmcgY2hlY2tzLgorLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHNpbXBsZSB1dGlsaXRpZXMg
Zm9yIHBlcmZvcm1pbmcgc3RyaW5nIG1hdGNoaW5nIGNoZWNrcy4KIC8vIEFsbCBvZiB0aGVzZSBm
dW5jdGlvbiBwYXJhbWV0ZXJzIGFyZSBzcGVjaWZpZWQgYXMgYGFic2w6OnN0cmluZ192aWV3YCwK
IC8vIG1lYW5pbmcgdGhhdCB0aGVzZSBmdW5jdGlvbnMgY2FuIGFjY2VwdCBgc3RkOjpzdHJpbmdg
LCBgYWJzbDo6c3RyaW5nX3ZpZXdgIG9yCiAvLyBudWwtdGVybWluYXRlZCBDLXN0eWxlIHN0cmlu
Z3MuCkBAIC00MSwxNCArNDEsMTQgQEAgbmFtZXNwYWNlIGFic2wgewogCiAvLyBTdHJDb250YWlu
cygpCiAvLwotLy8gUmV0dXJucyB3aGV0aGVyIGEgZ2l2ZW4gc3RkOjpzdHJpbmcgYGhheXN0YWNr
YCBjb250YWlucyB0aGUgc3Vic3RyaW5nIGBuZWVkbGVgLgorLy8gUmV0dXJucyB3aGV0aGVyIGEg
Z2l2ZW4gc3RyaW5nIGBoYXlzdGFja2AgY29udGFpbnMgdGhlIHN1YnN0cmluZyBgbmVlZGxlYC4K
IGlubGluZSBib29sIFN0ckNvbnRhaW5zKGFic2w6OnN0cmluZ192aWV3IGhheXN0YWNrLCBhYnNs
OjpzdHJpbmdfdmlldyBuZWVkbGUpIHsKICAgcmV0dXJuIGhheXN0YWNrLmZpbmQobmVlZGxlLCAw
KSAhPSBoYXlzdGFjay5ucG9zOwogfQogCiAvLyBTdGFydHNXaXRoKCkKIC8vCi0vLyBSZXR1cm5z
IHdoZXRoZXIgYSBnaXZlbiBzdGQ6OnN0cmluZyBgdGV4dGAgYmVnaW5zIHdpdGggYHByZWZpeGAu
CisvLyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZlbiBzdHJpbmcgYHRleHRgIGJlZ2lucyB3aXRoIGBw
cmVmaXhgLgogaW5saW5lIGJvb2wgU3RhcnRzV2l0aChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBh
YnNsOjpzdHJpbmdfdmlldyBwcmVmaXgpIHsKICAgcmV0dXJuIHByZWZpeC5lbXB0eSgpIHx8CiAg
ICAgICAgICAodGV4dC5zaXplKCkgPj0gcHJlZml4LnNpemUoKSAmJgpAQCAtNTcsNyArNTcsNyBA
QCBpbmxpbmUgYm9vbCBTdGFydHNXaXRoKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGFic2w6OnN0
cmluZ192aWV3IHByZWZpeCkgewogCiAvLyBFbmRzV2l0aCgpCiAvLwotLy8gUmV0dXJucyB3aGV0
aGVyIGEgZ2l2ZW4gc3RkOjpzdHJpbmcgYHRleHRgIGVuZHMgd2l0aCBgc3VmZml4YC4KKy8vIFJl
dHVybnMgd2hldGhlciBhIGdpdmVuIHN0cmluZyBgdGV4dGAgZW5kcyB3aXRoIGBzdWZmaXhgLgog
aW5saW5lIGJvb2wgRW5kc1dpdGgoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgYWJzbDo6c3RyaW5n
X3ZpZXcgc3VmZml4KSB7CiAgIHJldHVybiBzdWZmaXguZW1wdHkoKSB8fAogICAgICAgICAgKHRl
eHQuc2l6ZSgpID49IHN1ZmZpeC5zaXplKCkgJiYKQEAgLTY2LDE2ICs2NiwyMiBAQCBpbmxpbmUg
Ym9vbCBFbmRzV2l0aChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmlldyBz
dWZmaXgpIHsKICAgICAgICAgICk7CiB9CiAKLS8vIFN0YXJ0c1dpdGhJZ25vcmVDYXNlKCkKKy8v
IEVxdWFsc0lnbm9yZUNhc2UoKQogLy8KLS8vIFJldHVybnMgd2hldGhlciBhIGdpdmVuIHN0ZDo6
c3RyaW5nIGB0ZXh0YCBzdGFydHMgd2l0aCBgc3RhcnRzX3dpdGhgLCBpZ25vcmluZworLy8gUmV0
dXJucyB3aGV0aGVyIGdpdmVuIEFTQ0lJIHN0cmluZ3MgYHBpZWNlMWAgYW5kIGBwaWVjZTJgIGFy
ZSBlcXVhbCwgaWdub3JpbmcKIC8vIGNhc2UgaW4gdGhlIGNvbXBhcmlzb24uCitib29sIEVxdWFs
c0lnbm9yZUNhc2UoYWJzbDo6c3RyaW5nX3ZpZXcgcGllY2UxLCBhYnNsOjpzdHJpbmdfdmlldyBw
aWVjZTIpOworCisvLyBTdGFydHNXaXRoSWdub3JlQ2FzZSgpCisvLworLy8gUmV0dXJucyB3aGV0
aGVyIGEgZ2l2ZW4gQVNDSUkgc3RyaW5nIGB0ZXh0YCBzdGFydHMgd2l0aCBgc3RhcnRzX3dpdGhg
LAorLy8gaWdub3JpbmcgY2FzZSBpbiB0aGUgY29tcGFyaXNvbi4KIGJvb2wgU3RhcnRzV2l0aEln
bm9yZUNhc2UoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgYWJzbDo6c3RyaW5nX3ZpZXcgcHJlZml4
KTsKIAogLy8gRW5kc1dpdGhJZ25vcmVDYXNlKCkKIC8vCi0vLyBSZXR1cm5zIHdoZXRoZXIgYSBn
aXZlbiBzdGQ6OnN0cmluZyBgdGV4dGAgZW5kcyB3aXRoIGBlbmRzX3dpdGhgLCBpZ25vcmluZyBj
YXNlCi0vLyBpbiB0aGUgY29tcGFyaXNvbi4KKy8vIFJldHVybnMgd2hldGhlciBhIGdpdmVuIEFT
Q0lJIHN0cmluZyBgdGV4dGAgZW5kcyB3aXRoIGBlbmRzX3dpdGhgLCBpZ25vcmluZworLy8gY2Fz
ZSBpbiB0aGUgY29tcGFyaXNvbi4KIGJvb2wgRW5kc1dpdGhJZ25vcmVDYXNlKGFic2w6OnN0cmlu
Z192aWV3IHRleHQsIGFic2w6OnN0cmluZ192aWV3IHN1ZmZpeCk7CiAKIH0gIC8vIG5hbWVzcGFj
ZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL21hdGNoX3Rlc3QuY2MKaW5kZXggZDE5NGYwZTY4OWJmNmUwMDE2NTZjNTJlMzU3YjVk
Nzc4YTY3YjU1ZC4uYzIxZTAwYmY4MDdjOTRmN2Y3YzVhODhmMjY1ZjIwNjk0Y2RmMTE0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
bWF0Y2hfdGVzdC5jYwpAQCAtODAsNiArODAsMTcgQEAgVEVTVChNYXRjaFRlc3QsIENvbnRhaW5z
TnVsbCkgewogICBFWFBFQ1RfRkFMU0UoYWJzbDo6U3RyQ29udGFpbnMoY3MsIHN2MikpOwogfQog
CitURVNUKE1hdGNoVGVzdCwgRXF1YWxzSWdub3JlQ2FzZSkgeworICBzdGQ6OnN0cmluZyB0ZXh0
ID0gInRoZSI7CisgIGFic2w6OnN0cmluZ192aWV3IGRhdGEodGV4dCk7CisKKyAgRVhQRUNUX1RS
VUUoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShkYXRhLCAiVGhlIikpOworICBFWFBFQ1RfVFJVRShh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKGRhdGEsICJUSEUiKSk7CisgIEVYUEVDVF9UUlVFKGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UoZGF0YSwgInRoZSIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OkVx
dWFsc0lnbm9yZUNhc2UoZGF0YSwgIlF1aWNrIikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShkYXRhLCAidGhlbiIpKTsKK30KKwogVEVTVChNYXRjaFRlc3QsIFN0YXJ0
c1dpdGhJZ25vcmVDYXNlKSB7CiAgIEVYUEVDVF9UUlVFKGFic2w6OlN0YXJ0c1dpdGhJZ25vcmVD
YXNlKCJmb28iLCAiZm9vIikpOwogICBFWFBFQ1RfVFJVRShhYnNsOjpTdGFydHNXaXRoSWdub3Jl
Q2FzZSgiZm9vIiwgIkZvIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmNjCmluZGV4IGY4NDJlZDg1ZTlmNTk1ZWZiOGRhMWVj
MDUwMjc1ZGQzNjhhMjZlOTcuLjkzMDlmOWRhOWRjYzVjOTA3ZTY4MzVlY2E2ZDA0N2M5MGYyYzZm
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVycy5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL251bWJlcnMuY2MKQEAgLTEyLDcgKzEyLDcgQEAKIC8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgc3RkOjpz
dHJpbmcgcHJvY2Vzc2luZyBmdW5jdGlvbnMgcmVsYXRlZCB0bworLy8gVGhpcyBmaWxlIGNvbnRh
aW5zIHN0cmluZyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyByZWxhdGVkIHRvCiAvLyBudW1lcmljIHZh
bHVlcy4KIAogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9udW1iZXJzLmgiCkBAIC0zMCwxMCArMzAs
MTAgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUg
ImFic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmgiCiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFs
L3Jhd19sb2dnaW5nLmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2FzY2lpLmgiCiAjaW5jbHVk
ZSAiYWJzbC9zdHJpbmdzL2NoYXJjb252LmgiCi0jaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVy
bmFsL2JpdHMuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5oIgog
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCiAKQEAgLTE2MSw4ICsxNjEsOCBAQCBi
b29sIFNpbXBsZUF0b2IoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBib29sKiB2YWx1ZSkgewogLy8g
dGhlaXIgb3V0cHV0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlci4gIFRoZSBjYWxsZXIg
aXMgcmVzcG9uc2libGUKIC8vIGZvciBlbnN1cmluZyB0aGF0IHRoZSBidWZmZXIgaGFzIGVub3Vn
aCBzcGFjZSB0byBob2xkIHRoZSBvdXRwdXQuCiAvLwotLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8g
dGhlIGVuZCBvZiB0aGUgc3RkOjpzdHJpbmcgKGkuZS4gdGhlIG51bGwgY2hhcmFjdGVyCi0vLyB0
ZXJtaW5hdGluZyB0aGUgc3RkOjpzdHJpbmcpLgorLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhl
IGVuZCBvZiB0aGUgc3RyaW5nIChpLmUuIHRoZSBudWxsIGNoYXJhY3RlcgorLy8gdGVybWluYXRp
bmcgdGhlIHN0cmluZykuCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIG5hbWVzcGFjZSB7CkBAIC0zNDQs
NyArMzQ0LDcgQEAgc3RhdGljIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IE11bDMyKHN0
ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IG51bSwKICAgdWludDY0X3QgYml0czEyOF91cCA9
IChiaXRzOTZfMTI3ID4+IDMyKSArIChiaXRzNjRfMTI3IDwgYml0czY0Xzk1KTsKICAgaWYgKGJp
dHMxMjhfdXAgPT0gMCkgcmV0dXJuIHtiaXRzNjRfMTI3LCBiaXRzMF82M307CiAKLSAgaW50IHNo
aWZ0ID0gNjQgLSBzdHJpbmdzX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0KGJpdHMxMjhf
dXApOworICBpbnQgc2hpZnQgPSA2NCAtIGJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9z
NjQoYml0czEyOF91cCk7CiAgIHVpbnQ2NF90IGxvID0gKGJpdHMwXzYzID4+IHNoaWZ0KSArIChi
aXRzNjRfMTI3IDw8ICg2NCAtIHNoaWZ0KSk7CiAgIHVpbnQ2NF90IGhpID0gKGJpdHM2NF8xMjcg
Pj4gc2hpZnQpICsgKGJpdHMxMjhfdXAgPDwgKDY0IC0gc2hpZnQpKTsKICAgcmV0dXJuIHtoaSwg
bG99OwpAQCAtMzc1LDcgKzM3NSw3IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2
NF90PiBQb3dGaXZlKHVpbnQ2NF90IG51bSwgaW50IGV4cGZpdmUpIHsKICAgICAgIDUgKiA1ICog
NSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1LAogICAgICAgNSAqIDUgKiA1ICogNSAq
IDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1fTsKICAgcmVzdWx0ID0gTXVsMzIocmVzdWx0
LCBwb3dlcnNfb2ZfZml2ZVtleHBmaXZlICYgMTVdKTsKLSAgaW50IHNoaWZ0ID0gc3RyaW5nc19p
bnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChyZXN1bHQuZmlyc3QpOworICBpbnQgc2hpZnQg
PSBiYXNlX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0KHJlc3VsdC5maXJzdCk7CiAgIGlm
IChzaGlmdCAhPSAwKSB7CiAgICAgcmVzdWx0LmZpcnN0ID0gKHJlc3VsdC5maXJzdCA8PCBzaGlm
dCkgKyAocmVzdWx0LnNlY29uZCA+PiAoNjQgLSBzaGlmdCkpOwogICAgIHJlc3VsdC5zZWNvbmQg
PSAocmVzdWx0LnNlY29uZCA8PCBzaGlmdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251
bWJlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVycy5oCmluZGV4IGNmM2M1OTcyNjZjZjcxNDc0
ZDQwNWRkMGNmZGVhNWNkZWI1OGJhZGMuLmY5YjJjY2VmOTRkOGJkNTViMWJkODJkZTU4MmU1ODlj
YmQyMTJmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVycy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvbnVtYmVycy5oCkBAIC00MSwzMiArNDEsMzIgQEAgbmFtZXNwYWNlIGFic2wgewog
CiAvLyBTaW1wbGVBdG9pKCkKIC8vCi0vLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcg
aW50byBhbiBpbnRlZ2VyIHZhbHVlLCByZXR1cm5pbmcgYHRydWVgIGlmCi0vLyBzdWNjZXNzZnVs
LiBUaGUgc3RkOjpzdHJpbmcgbXVzdCByZWZsZWN0IGEgYmFzZS0xMCBpbnRlZ2VyIChvcHRpb25h
bGx5IGZvbGxvd2VkIG9yCisvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3RyaW5nIGludG8gYW4gaW50
ZWdlciB2YWx1ZSwgcmV0dXJuaW5nIGB0cnVlYCBpZgorLy8gc3VjY2Vzc2Z1bC4gVGhlIHN0cmlu
ZyBtdXN0IHJlZmxlY3QgYSBiYXNlLTEwIGludGVnZXIgKG9wdGlvbmFsbHkgZm9sbG93ZWQgb3IK
IC8vIHByZWNlZGVkIGJ5IEFTQ0lJIHdoaXRlc3BhY2UpIHdob3NlIHZhbHVlIGZhbGxzIHdpdGhp
biB0aGUgcmFuZ2Ugb2YgdGhlCi0vLyBpbnRlZ2VyIHR5cGUsCisvLyBpbnRlZ2VyIHR5cGUuCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgaW50X3R5cGU+CiBBQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNp
bXBsZUF0b2koYWJzbDo6c3RyaW5nX3ZpZXcgcywgaW50X3R5cGUqIG91dCk7CiAKIC8vIFNpbXBs
ZUF0b2YoKQogLy8KLS8vIENvbnZlcnRzIHRoZSBnaXZlbiBzdGQ6OnN0cmluZyAob3B0aW9uYWxs
eSBmb2xsb3dlZCBvciBwcmVjZWRlZCBieSBBU0NJSQorLy8gQ29udmVydHMgdGhlIGdpdmVuIHN0
cmluZyAob3B0aW9uYWxseSBmb2xsb3dlZCBvciBwcmVjZWRlZCBieSBBU0NJSQogLy8gd2hpdGVz
cGFjZSkgaW50byBhIGZsb2F0LCB3aGljaCBtYXkgYmUgcm91bmRlZCBvbiBvdmVyZmxvdyBvciB1
bmRlcmZsb3cuCi0vLyBTZWUgaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jL3N0ZDo6c3Ry
aW5nL2J5dGUvc3RydG9mIGZvciBkZXRhaWxzIGFib3V0IHRoZQorLy8gU2VlIGh0dHA6Ly9lbi5j
cHByZWZlcmVuY2UuY29tL3cvYy9zdHJpbmcvYnl0ZS9zdHJ0b2YgZm9yIGRldGFpbHMgYWJvdXQg
dGhlCiAvLyBhbGxvd2VkIGZvcm1hdHMgZm9yIGBzdHJgLgogQUJTTF9NVVNUX1VTRV9SRVNVTFQg
Ym9vbCBTaW1wbGVBdG9mKGFic2w6OnN0cmluZ192aWV3IHN0ciwgZmxvYXQqIHZhbHVlKTsKIAog
Ly8gU2ltcGxlQXRvZCgpCiAvLwotLy8gQ29udmVydHMgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nIChv
cHRpb25hbGx5IGZvbGxvd2VkIG9yIHByZWNlZGVkIGJ5IEFTQ0lJCisvLyBDb252ZXJ0cyB0aGUg
Z2l2ZW4gc3RyaW5nIChvcHRpb25hbGx5IGZvbGxvd2VkIG9yIHByZWNlZGVkIGJ5IEFTQ0lJCiAv
LyB3aGl0ZXNwYWNlKSBpbnRvIGEgZG91YmxlLCB3aGljaCBtYXkgYmUgcm91bmRlZCBvbiBvdmVy
ZmxvdyBvciB1bmRlcmZsb3cuCi0vLyBTZWUgaHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9j
L3N0ZDo6c3RyaW5nL2J5dGUvc3RydG9mIGZvciBkZXRhaWxzIGFib3V0IHRoZQorLy8gU2VlIGh0
dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvYy9zdHJpbmcvYnl0ZS9zdHJ0b2YgZm9yIGRldGFp
bHMgYWJvdXQgdGhlCiAvLyBhbGxvd2VkIGZvcm1hdHMgZm9yIGBzdHJgLgogQUJTTF9NVVNUX1VT
RV9SRVNVTFQgYm9vbCBTaW1wbGVBdG9kKGFic2w6OnN0cmluZ192aWV3IHN0ciwgZG91YmxlKiB2
YWx1ZSk7CiAKIC8vIFNpbXBsZUF0b2IoKQogLy8KLS8vIENvbnZlcnRzIHRoZSBnaXZlbiBzdGQ6
OnN0cmluZyBpbnRvIGEgYm9vbGVhbiwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzdWNjZXNzZnVsLgor
Ly8gQ29udmVydHMgdGhlIGdpdmVuIHN0cmluZyBpbnRvIGEgYm9vbGVhbiwgcmV0dXJuaW5nIGB0
cnVlYCBpZiBzdWNjZXNzZnVsLgogLy8gVGhlIGZvbGxvd2luZyBjYXNlLWluc2Vuc2l0aXZlIHN0
cmluZ3MgYXJlIGludGVycHJldGVkIGFzIGJvb2xlYW4gYHRydWVgOgogLy8gInRydWUiLCAidCIs
ICJ5ZXMiLCAieSIsICIxIi4gVGhlIGZvbGxvd2luZyBjYXNlLWluc2Vuc2l0aXZlIHN0cmluZ3MK
IC8vIGFyZSBpbnRlcnByZXRlZCBhcyBib29sZWFuIGBmYWxzZWA6ICJmYWxzZSIsICJmIiwgIm5v
IiwgIm4iLCAiMCIuCkBAIC0xNjksOSArMTY5LDkgQEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgYm9v
bCBzYWZlX3N0cnRvaV9iYXNlKGFic2w6OnN0cmluZ192aWV3IHMsIGludF90eXBlKiBvdXQsCiAK
IC8vIFNpbXBsZUF0b2koKQogLy8KLS8vIENvbnZlcnRzIGEgc3RkOjpzdHJpbmcgdG8gYW4gaW50
ZWdlciwgdXNpbmcgYHNhZmVfc3RydG8/KClgIGZ1bmN0aW9ucyBmb3IgYWN0dWFsCisvLyBDb252
ZXJ0cyBhIHN0cmluZyB0byBhbiBpbnRlZ2VyLCB1c2luZyBgc2FmZV9zdHJ0bz8oKWAgZnVuY3Rp
b25zIGZvciBhY3R1YWwKIC8vIHBhcnNpbmcsIHJldHVybmluZyBgdHJ1ZWAgaWYgc3VjY2Vzc2Z1
bC4gVGhlIGBzYWZlX3N0cnRvPygpYCBmdW5jdGlvbnMgYXBwbHkKLS8vIHN0cmljdCBjaGVja2lu
ZzsgdGhlIHN0ZDo6c3RyaW5nIG11c3QgYmUgYSBiYXNlLTEwIGludGVnZXIsIG9wdGlvbmFsbHkg
Zm9sbG93ZWQgb3IKKy8vIHN0cmljdCBjaGVja2luZzsgdGhlIHN0cmluZyBtdXN0IGJlIGEgYmFz
ZS0xMCBpbnRlZ2VyLCBvcHRpb25hbGx5IGZvbGxvd2VkIG9yCiAvLyBwcmVjZWRlZCBieSBBU0NJ
SSB3aGl0ZXNwYWNlLCB3aXRoIGEgdmFsdWUgaW4gdGhlIHJhbmdlIG9mIHRoZSBjb3JyZXNwb25k
aW5nCiAvLyBpbnRlZ2VyIHR5cGUuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgaW50X3R5cGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9udW1iZXJzX2JlbmNobWFyay5jYwppbmRleCA4ZWY2NTBiOWEzZWNjZGQ3OTY2NGRjNzlkMmQ2
ZjI2MWE2Njg2YTMyLi4wNTcwYjc1ODYzM2VlMDQwNmQxMjE3ZTllNzAwMTJiMjhjMTgwYzcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfYmVuY2htYXJrLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvbnVtYmVyc19iZW5jaG1hcmsuY2MKQEAgLTE1OCw3ICsxNTgsNyBAQCBCRU5DSE1B
UksoQk1fc2FmZV9zdHJ0b3U2NF9zdHJpbmcpCiAgICAgLT5BcmdQYWlyKDE2LCAxMCkKICAgICAt
PkFyZ1BhaXIoMTYsIDE2KTsKIAotLy8gUmV0dXJucyBhIHZlY3RvciBvZiBgbnVtX3N0cmluZ3Ng
IHN0cmluZ3MuIEVhY2ggc3RkOjpzdHJpbmcgcmVwcmVzZW50cyBhCisvLyBSZXR1cm5zIGEgdmVj
dG9yIG9mIGBudW1fc3RyaW5nc2Agc3RyaW5ncy4gRWFjaCBzdHJpbmcgcmVwcmVzZW50cyBhCiAv
LyBmbG9hdGluZyBwb2ludCBudW1iZXIgd2l0aCBgbnVtX2RpZ2l0c2AgZGlnaXRzIGJlZm9yZSB0
aGUgZGVjaW1hbCBwb2ludCBhbmQKIC8vIGFub3RoZXIgYG51bV9kaWdpdHNgIGRpZ2l0cyBhZnRl
ci4KIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBNYWtlRmxvYXRTdHJpbmdzKGludCBudW1fc3Ry
aW5ncywgaW50IG51bV9kaWdpdHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVy
c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzX3Rlc3QuY2MKaW5kZXggMjdjYzA0Nzll
MzQxMmM4MzhiNDc4NWRmYWZiODg5NWVmZTA5NmY2My4uMzZmYzBkNjRmZDUxMzA1MDdiMWU4MTFi
MzhkZmU1N2UzMjQ5M2I0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzX3Rlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzX3Rlc3QuY2MKQEAgLTEyLDcgKzEyLDcgQEAK
IC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogCi0vLyBU
aGlzIGZpbGUgdGVzdHMgc3RkOjpzdHJpbmcgcHJvY2Vzc2luZyBmdW5jdGlvbnMgcmVsYXRlZCB0
byBudW1lcmljIHZhbHVlcy4KKy8vIFRoaXMgZmlsZSB0ZXN0cyBzdHJpbmcgcHJvY2Vzc2luZyBm
dW5jdGlvbnMgcmVsYXRlZCB0byBudW1lcmljIHZhbHVlcy4KIAogI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9udW1iZXJzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5jYwppbmRleCAzZmU4Yzk1ZWNhOWVmOTc5NDkxNjkzNjM4
OTAwODU4YjA4NzI1ZDBiLi5lZmE0ZmQ3M2RiYWM3NzA0ODc0N2VjYzRhN2YxZmNiMGU2N2Q3NzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdHJfY2F0LmNjCkBAIC03OSw3ICs3OSw3IEBAIEFscGhhTnVtOjpBbHBoYU51bShEZWMgZGVj
KSB7CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBTdHJDYXQoKQogLy8gICAgVGhpcyBtZXJnZXMgdGhl
IGdpdmVuIHN0cmluZ3Mgb3IgaW50ZWdlcnMsIHdpdGggbm8gZGVsaW1pdGVyLiAgVGhpcwotLy8g
ICAgaXMgZGVzaWduZWQgdG8gYmUgdGhlIGZhc3Rlc3QgcG9zc2libGUgd2F5IHRvIGNvbnN0cnVj
dCBhIHN0ZDo6c3RyaW5nIG91dAorLy8gICAgaXMgZGVzaWduZWQgdG8gYmUgdGhlIGZhc3Rlc3Qg
cG9zc2libGUgd2F5IHRvIGNvbnN0cnVjdCBhIHN0cmluZyBvdXQKIC8vICAgIG9mIGEgbWl4IG9m
IHJhdyBDIHN0cmluZ3MsIFN0cmluZ1BpZWNlcywgc3RyaW5ncywgYW5kIGludGVnZXIgdmFsdWVz
LgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xNTQsMTAgKzE1NCwxMCBAQCBzdGQ6OnN0cmluZyBD
YXRQaWVjZXMoc3RkOjppbml0aWFsaXplcl9saXN0PGFic2w6OnN0cmluZ192aWV3PiBwaWVjZXMp
IHsKIH0KIAogLy8gSXQncyBwb3NzaWJsZSB0byBjYWxsIFN0ckFwcGVuZCB3aXRoIGFuIGFic2w6
OnN0cmluZ192aWV3IHRoYXQgaXMgaXRzZWxmIGEKLS8vIGZyYWdtZW50IG9mIHRoZSBzdGQ6OnN0
cmluZyB3ZSdyZSBhcHBlbmRpbmcgdG8uICBIb3dldmVyIHRoZSByZXN1bHRzIG9mIHRoaXMgYXJl
CisvLyBmcmFnbWVudCBvZiB0aGUgc3RyaW5nIHdlJ3JlIGFwcGVuZGluZyB0by4gIEhvd2V2ZXIg
dGhlIHJlc3VsdHMgb2YgdGhpcyBhcmUKIC8vIHJhbmRvbS4gVGhlcmVmb3JlLCBjaGVjayBmb3Ig
dGhpcyBpbiBkZWJ1ZyBtb2RlLiAgVXNlIHVuc2lnbmVkIG1hdGggc28gd2UKIC8vIG9ubHkgaGF2
ZSB0byBkbyBvbmUgY29tcGFyaXNvbi4gTm90ZSwgdGhlcmUncyBhbiBleGNlcHRpb24gY2FzZTog
YXBwZW5kaW5nIGFuCi0vLyBlbXB0eSBzdGQ6OnN0cmluZyBpcyBhbHdheXMgYWxsb3dlZC4KKy8v
IGVtcHR5IHN0cmluZyBpcyBhbHdheXMgYWxsb3dlZC4KICNkZWZpbmUgQVNTRVJUX05PX09WRVJM
QVAoZGVzdCwgc3JjKSBcCiAgIGFzc2VydCgoKHNyYykuc2l6ZSgpID09IDApIHx8ICAgICAgXAog
ICAgICAgICAgKHVpbnRwdHJfdCgoc3JjKS5kYXRhKCkgLSAoZGVzdCkuZGF0YSgpKSA+IHVpbnRw
dHJfdCgoZGVzdCkuc2l6ZSgpKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXQu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5oCmluZGV4IGU1NTAxYTUwMTJlZThkOWNmNzljYmU2
YjUwYjA0NzU2ZDE5MWJmOWUuLmRhOWVkOWEyNjllOTkwYjg3OTIyZmYyZDE5YWE5NzE3ZTVlMGQ3
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyX2NhdC5oCkBAIC0yMyw3ICsyMyw3IEBACiAvLyBkZXNpZ25lZCB0byBiZSB1c2VkIGFz
IGEgcGFyYW1ldGVyIHR5cGUgdGhhdCBlZmZpY2llbnRseSBtYW5hZ2VzIGNvbnZlcnNpb24KIC8v
IHRvIHN0cmluZ3MgYW5kIGF2b2lkcyBjb3BpZXMgaW4gdGhlIGFib3ZlIG9wZXJhdGlvbnMuCiAv
LwotLy8gQW55IHJvdXRpbmUgYWNjZXB0aW5nIGVpdGhlciBhIHN0ZDo6c3RyaW5nIG9yIGEgbnVt
YmVyIG1heSBhY2NlcHQgYEFscGhhTnVtYC4KKy8vIEFueSByb3V0aW5lIGFjY2VwdGluZyBlaXRo
ZXIgYSBzdHJpbmcgb3IgYSBudW1iZXIgbWF5IGFjY2VwdCBgQWxwaGFOdW1gLgogLy8gVGhlIGJh
c2ljIGlkZWEgaXMgdGhhdCBieSBhY2NlcHRpbmcgYSBgY29uc3QgQWxwaGFOdW0gJmAgYXMgYW4g
YXJndW1lbnQKIC8vIHRvIHlvdXIgZnVuY3Rpb24sIHlvdXIgY2FsbGVycyB3aWxsIGF1dG9tYWdp
Y2FsbHkgY29udmVydCBib29scywgaW50ZWdlcnMsCiAvLyBhbmQgZmxvYXRpbmcgcG9pbnQgdmFs
dWVzIHRvIHN0cmluZ3MgZm9yIHlvdS4KQEAgLTY1LDcgKzY1LDcgQEAKIG5hbWVzcGFjZSBhYnNs
IHsKIAogbmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwgewotLy8gQWxwaGFOdW1CdWZmZXIgYWxs
b3dzIGEgd2F5IHRvIHBhc3MgYSBzdGQ6OnN0cmluZyB0byBTdHJDYXQgd2l0aG91dCBoYXZpbmcg
dG8gZG8KKy8vIEFscGhhTnVtQnVmZmVyIGFsbG93cyBhIHdheSB0byBwYXNzIGEgc3RyaW5nIHRv
IFN0ckNhdCB3aXRob3V0IGhhdmluZyB0byBkbwogLy8gbWVtb3J5IGFsbG9jYXRpb24uICBJdCBp
cyBzaW1wbHkgYSBwYWlyIG9mIGEgZml4ZWQtc2l6ZSBjaGFyYWN0ZXIgYXJyYXksIGFuZAogLy8g
YSBzaXplLiAgUGxlYXNlIGRvbid0IHVzZSBvdXRzaWRlIG9mIGFic2wsIHlldC4KIHRlbXBsYXRl
IDxzaXplX3QgbWF4X3NpemU+CkBAIC0xMTksOCArMTE5LDggQEAgZW51bSBQYWRTcGVjIDogdWlu
dDhfdCB7CiAvLyBIZXgKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwotLy8gYEhleGAgc3Rv
cmVzIGEgc2V0IG9mIGhleGFkZWNpbWFsIHN0ZDo6c3RyaW5nIGNvbnZlcnNpb24gcGFyYW1ldGVy
cyBmb3IgdXNlCi0vLyB3aXRoaW4gYEFscGhhTnVtYCBzdGQ6OnN0cmluZyBjb252ZXJzaW9ucy4K
Ky8vIGBIZXhgIHN0b3JlcyBhIHNldCBvZiBoZXhhZGVjaW1hbCBzdHJpbmcgY29udmVyc2lvbiBw
YXJhbWV0ZXJzIGZvciB1c2UKKy8vIHdpdGhpbiBgQWxwaGFOdW1gIHN0cmluZyBjb252ZXJzaW9u
cy4KIHN0cnVjdCBIZXggewogICB1aW50NjRfdCB2YWx1ZTsKICAgdWludDhfdCB3aWR0aDsKQEAg
LTE2OCw4ICsxNjgsOCBAQCBzdHJ1Y3QgSGV4IHsKIC8vIERlYwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIC8vCi0vLyBgRGVjYCBzdG9yZXMgYSBzZXQgb2YgZGVjaW1hbCBzdGQ6OnN0cmluZyBj
b252ZXJzaW9uIHBhcmFtZXRlcnMgZm9yIHVzZQotLy8gd2l0aGluIGBBbHBoYU51bWAgc3RkOjpz
dHJpbmcgY29udmVyc2lvbnMuICBEZWMgaXMgc2xvd2VyIHRoYW4gdGhlIGRlZmF1bHQKKy8vIGBE
ZWNgIHN0b3JlcyBhIHNldCBvZiBkZWNpbWFsIHN0cmluZyBjb252ZXJzaW9uIHBhcmFtZXRlcnMg
Zm9yIHVzZQorLy8gd2l0aGluIGBBbHBoYU51bWAgc3RyaW5nIGNvbnZlcnNpb25zLiAgRGVjIGlz
IHNsb3dlciB0aGFuIHRoZSBkZWZhdWx0CiAvLyBpbnRlZ2VyIGNvbnZlcnNpb24sIHNvIHVzZSBp
dCBvbmx5IGlmIHlvdSBuZWVkIHBhZGRpbmcuCiBzdHJ1Y3QgRGVjIHsKICAgdWludDY0X3QgdmFs
dWU7CkBAIC0yNzEsNyArMjcxLDcgQEAgY2xhc3MgQWxwaGFOdW0gewogLy8KIC8vIE1lcmdlcyBn
aXZlbiBzdHJpbmdzIG9yIG51bWJlcnMsIHVzaW5nIG5vIGRlbGltaXRlcihzKS4KIC8vCi0vLyBg
U3RyQ2F0KClgIGlzIGRlc2lnbmVkIHRvIGJlIHRoZSBmYXN0ZXN0IHBvc3NpYmxlIHdheSB0byBj
b25zdHJ1Y3QgYSBzdGQ6OnN0cmluZworLy8gYFN0ckNhdCgpYCBpcyBkZXNpZ25lZCB0byBiZSB0
aGUgZmFzdGVzdCBwb3NzaWJsZSB3YXkgdG8gY29uc3RydWN0IGEgc3RyaW5nCiAvLyBvdXQgb2Yg
YSBtaXggb2YgcmF3IEMgc3RyaW5ncywgc3RyaW5nX3ZpZXdzLCBzdHJpbmdzLCBib29sIHZhbHVl
cywKIC8vIGFuZCBudW1lcmljIHZhbHVlcy4KIC8vCkBAIC0yNzksNyArMjc5LDcgQEAgY2xhc3Mg
QWxwaGFOdW0gewogLy8gd29ya3MgcG9vcmx5IG9uIHN0cmluZ3MgYnVpbHQgdXAgb3V0IG9mIGZy
YWdtZW50cy4KIC8vCiAvLyBGb3IgY2xhcml0eSBhbmQgcGVyZm9ybWFuY2UsIGRvbid0IHVzZSBg
U3RyQ2F0KClgIHdoZW4gYXBwZW5kaW5nIHRvIGEKLS8vIHN0ZDo6c3RyaW5nLiBVc2UgYFN0ckFw
cGVuZCgpYCBpbnN0ZWFkLiBJbiBwYXJ0aWN1bGFyLCBhdm9pZCB1c2luZyBhbnkgb2YgdGhlc2UK
Ky8vIHN0cmluZy4gVXNlIGBTdHJBcHBlbmQoKWAgaW5zdGVhZC4gSW4gcGFydGljdWxhciwgYXZv
aWQgdXNpbmcgYW55IG9mIHRoZXNlCiAvLyAoYW50aS0pcGF0dGVybnM6CiAvLwogLy8gICBzdHIu
YXBwZW5kKFN0ckNhdCguLi4pKQpAQCAtMzI4LDI2ICszMjgsMjYgQEAgQUJTTF9NVVNUX1VTRV9S
RVNVTFQgaW5saW5lIHN0ZDo6c3RyaW5nIFN0ckNhdChjb25zdCBBbHBoYU51bSYgYSwgY29uc3Qg
QWxwaGFOdW0KIC8vIFN0ckFwcGVuZCgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KLS8v
IEFwcGVuZHMgYSBzdGQ6OnN0cmluZyBvciBzZXQgb2Ygc3RyaW5ncyB0byBhbiBleGlzdGluZyBz
dGQ6OnN0cmluZywgaW4gYSBzaW1pbGFyCisvLyBBcHBlbmRzIGEgc3RyaW5nIG9yIHNldCBvZiBz
dHJpbmdzIHRvIGFuIGV4aXN0aW5nIHN0cmluZywgaW4gYSBzaW1pbGFyCiAvLyBmYXNoaW9uIHRv
IGBTdHJDYXQoKWAuCiAvLwogLy8gV0FSTklORzogYFN0ckFwcGVuZCgmc3RyLCBhLCBiLCBjLCAu
Li4pYCByZXF1aXJlcyB0aGF0IG5vbmUgb2YgdGhlCiAvLyBhLCBiLCBjLCBwYXJhbWV0ZXJzIGJl
IGEgcmVmZXJlbmNlIGludG8gc3RyLiBGb3Igc3BlZWQsIGBTdHJBcHBlbmQoKWAgZG9lcwogLy8g
bm90IHRyeSB0byBjaGVjayBlYWNoIG9mIGl0cyBpbnB1dCBhcmd1bWVudHMgdG8gYmUgc3VyZSB0
aGF0IHRoZXkgYXJlIG5vdAotLy8gYSBzdWJzZXQgb2YgdGhlIHN0ZDo6c3RyaW5nIGJlaW5nIGFw
cGVuZGVkIHRvLiBUaGF0IGlzLCB3aGlsZSB0aGlzIHdpbGwgd29yazoKKy8vIGEgc3Vic2V0IG9m
IHRoZSBzdHJpbmcgYmVpbmcgYXBwZW5kZWQgdG8uIFRoYXQgaXMsIHdoaWxlIHRoaXMgd2lsbCB3
b3JrOgogLy8KLS8vICAgc3RkOjpzdHJpbmcgcyA9ICJmb28iOworLy8gICBzdHJpbmcgcyA9ICJm
b28iOwogLy8gICBzICs9IHM7CiAvLwogLy8gVGhpcyBvdXRwdXQgaXMgdW5kZWZpbmVkOgogLy8K
LS8vICAgc3RkOjpzdHJpbmcgcyA9ICJmb28iOworLy8gICBzdHJpbmcgcyA9ICJmb28iOwogLy8g
ICBTdHJBcHBlbmQoJnMsIHMpOwogLy8KIC8vIFRoaXMgb3V0cHV0IGlzIHVuZGVmaW5lZCBhcyB3
ZWxsLCBzaW5jZSBgYWJzbDo6c3RyaW5nX3ZpZXdgIGRvZXMgbm90IG93biBpdHMKIC8vIGRhdGE6
CiAvLwotLy8gICBzdGQ6OnN0cmluZyBzID0gImZvb2JhciI7CisvLyAgIHN0cmluZyBzID0gImZv
b2JhciI7CiAvLyAgIGFic2w6OnN0cmluZ192aWV3IHAgPSBzOwogLy8gICBTdHJBcHBlbmQoJnMs
IHApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXRfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyX2NhdF90ZXN0LmNjCmluZGV4IGU5ZDY3NjkwNjM4MjcxOTIwZDI2MjM0ZDk3
MzkwNTNjMzBiMjc0ODkuLjU1NWQ4ZGIzZWI4NTQzOGJlNWY4Y2M3ZjU5ZGQ1NTA3ZDZkNWJhNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3Mvc3RyX2NhdF90ZXN0LmNjCkBAIC0yOCw3ICsyOCw4IEBACiAjZGVmaW5lIEFCU0xfRVhQ
RUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgRVhQRUNUX0RFQlVHX0RFQVRI
KHN0YXRlbWVudCwgIi4qIikKICNlbHNlCi0jZGVmaW5lIEFCU0xfRVhQRUNUX0RFQlVHX0RFQVRI
IEVYUEVDVF9ERUJVR19ERUFUSAorI2RlZmluZSBBQlNMX0VYUEVDVF9ERUJVR19ERUFUSChzdGF0
ZW1lbnQsIHJlZ2V4KSBcCisgIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQog
I2VuZGlmCiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3Jt
YXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oCmluZGV4IDcwYTgxMWI3NWUyZmY4ODYz
YzllMzY4N2M2YzI4MmY5MGMyMzE3ZjkuLjJkMDc3MjVkZTIxZmNmNzkwNjk1MGYwMmQyMDYxNWI1
YWQxMDk4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oCkBAIC0xOCwyMCArMTgsMjAgQEAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLwogLy8gVGhlIGBzdHJfZm9ybWF0YCBsaWJyYXJ5IGlzIGEgdHlwZXNh
ZmUgcmVwbGFjZW1lbnQgZm9yIHRoZSBmYW1pbHkgb2YKLS8vIGBwcmludGYoKWAgc3RkOjpzdHJp
bmcgZm9ybWF0dGluZyByb3V0aW5lcyB3aXRoaW4gdGhlIGA8Y3N0ZGlvPmAgc3RhbmRhcmQgbGli
cmFyeQorLy8gYHByaW50ZigpYCBzdHJpbmcgZm9ybWF0dGluZyByb3V0aW5lcyB3aXRoaW4gdGhl
IGA8Y3N0ZGlvPmAgc3RhbmRhcmQgbGlicmFyeQogLy8gaGVhZGVyLiBMaWtlIHRoZSBgcHJpbnRm
YCBmYW1pbHksIHRoZSBgc3RyX2Zvcm1hdGAgdXNlcyBhICJmb3JtYXQgc3RyaW5nIiB0bwogLy8g
cGVyZm9ybSBhcmd1bWVudCBzdWJzdGl0dXRpb25zIGJhc2VkIG9uIHR5cGVzLgogLy8KIC8vIEV4
YW1wbGU6CiAvLwotLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KCIlcyAlcyBZ
b3UgaGF2ZSAkJWQhIiwgIkhlbGxvIiwgbmFtZSwgZG9sbGFycyk7CisvLyAgIHN0cmluZyBzID0g
YWJzbDo6U3RyRm9ybWF0KCIlcyAlcyBZb3UgaGF2ZSAkJWQhIiwgIkhlbGxvIiwgbmFtZSwgZG9s
bGFycyk7CiAvLwogLy8gVGhlIGxpYnJhcnkgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBiYXNp
YyB1dGlsaXRpZXM6CiAvLwogLy8gICAqIGBhYnNsOjpTdHJGb3JtYXQoKWAsIGEgdHlwZS1zYWZl
IHJlcGxhY2VtZW50IGZvciBgc3RkOjpzcHJpbnRmKClgLCB0bwotLy8gICAgIHdyaXRlIGEgZm9y
bWF0IHN0ZDo6c3RyaW5nIHRvIGEgYHN0cmluZ2AgdmFsdWUuCi0vLyAgICogYGFic2w6OlN0ckFw
cGVuZEZvcm1hdCgpYCB0byBhcHBlbmQgYSBmb3JtYXQgc3RkOjpzdHJpbmcgdG8gYSBgc3RyaW5n
YAotLy8gICAqIGBhYnNsOjpTdHJlYW1Gb3JtYXQoKWAgdG8gbW9yZSBlZmZpY2llbnRseSB3cml0
ZSBhIGZvcm1hdCBzdGQ6OnN0cmluZyB0byBhCisvLyAgICAgd3JpdGUgYSBmb3JtYXQgc3RyaW5n
IHRvIGEgYHN0cmluZ2AgdmFsdWUuCisvLyAgICogYGFic2w6OlN0ckFwcGVuZEZvcm1hdCgpYCB0
byBhcHBlbmQgYSBmb3JtYXQgc3RyaW5nIHRvIGEgYHN0cmluZ2AKKy8vICAgKiBgYWJzbDo6U3Ry
ZWFtRm9ybWF0KClgIHRvIG1vcmUgZWZmaWNpZW50bHkgd3JpdGUgYSBmb3JtYXQgc3RyaW5nIHRv
IGEKIC8vICAgICBzdHJlYW0sIHN1Y2ggYXNgc3RkOjpjb3V0YC4KIC8vICAgKiBgYWJzbDo6UHJp
bnRGKClgLCBgYWJzbDo6RlByaW50RigpYCBhbmQgYGFic2w6OlNOUHJpbnRGKClgIGFzCiAvLyAg
ICAgcmVwbGFjZW1lbnRzIGZvciBgc3RkOjpwcmludGYoKWAsIGBzdGQ6OmZwcmludGYoKWAgYW5k
IGBzdGQ6OnNucHJpbnRmKClgLgpAQCAtMzksMTUgKzM5LDE1IEBACiAvLyAgICAgTm90ZTogYSB2
ZXJzaW9uIG9mIGBzdGQ6OnNwcmludGYoKWAgaXMgbm90IHN1cHBvcnRlZCBhcyBpdCBpcwogLy8g
ICAgIGdlbmVyYWxseSB1bnNhZmUgZHVlIHRvIGJ1ZmZlciBvdmVyZmxvd3MuCiAvLwotLy8gQWRk
aXRpb25hbGx5LCB5b3UgY2FuIHByb3ZpZGUgYSBmb3JtYXQgc3RkOjpzdHJpbmcgKGFuZCBpdHMg
YXNzb2NpYXRlZCBhcmd1bWVudHMpCisvLyBBZGRpdGlvbmFsbHksIHlvdSBjYW4gcHJvdmlkZSBh
IGZvcm1hdCBzdHJpbmcgKGFuZCBpdHMgYXNzb2NpYXRlZCBhcmd1bWVudHMpCiAvLyB1c2luZyBv
bmUgb2YgdGhlIGZvbGxvd2luZyBhYnN0cmFjdGlvbnM6CiAvLwotLy8gICAqIEEgYEZvcm1hdFNw
ZWNgIGNsYXNzIHRlbXBsYXRlIGZ1bGx5IGVuY2Fwc3VsYXRlcyBhIGZvcm1hdCBzdGQ6OnN0cmlu
ZyBhbmQgaXRzCisvLyAgICogQSBgRm9ybWF0U3BlY2AgY2xhc3MgdGVtcGxhdGUgZnVsbHkgZW5j
YXBzdWxhdGVzIGEgZm9ybWF0IHN0cmluZyBhbmQgaXRzCiAvLyAgICAgdHlwZSBhcmd1bWVudHMg
YW5kIGlzIHVzdWFsbHkgcHJvdmlkZWQgdG8gYHN0cl9mb3JtYXRgIGZ1bmN0aW9ucyBhcyBhCiAv
LyAgICAgdmFyaWFkaWMgYXJndW1lbnQgb2YgdHlwZSBgRm9ybWF0U3BlYzxBcmcuLi4+YC4gVGhl
IGBGb3JtYXRTcGVjPEFyZ3MuLi4+YAogLy8gICAgIHRlbXBsYXRlIGlzIGV2YWx1YXRlZCBhdCBj
b21waWxlLXRpbWUsIHByb3ZpZGluZyB0eXBlIHNhZmV0eS4KIC8vICAgKiBBIGBQYXJzZWRGb3Jt
YXRgIGluc3RhbmNlLCB3aGljaCBlbmNhcHN1bGF0ZXMgYSBzcGVjaWZpYywgcHJlLWNvbXBpbGVk
Ci0vLyAgICAgZm9ybWF0IHN0ZDo6c3RyaW5nIGZvciBhIHNwZWNpZmljIHNldCBvZiB0eXBlKHMp
LCBhbmQgd2hpY2ggY2FuIGJlIHBhc3NlZAorLy8gICAgIGZvcm1hdCBzdHJpbmcgZm9yIGEgc3Bl
Y2lmaWMgc2V0IG9mIHR5cGUocyksIGFuZCB3aGljaCBjYW4gYmUgcGFzc2VkCiAvLyAgICAgYmV0
d2VlbiBBUEkgYm91bmRhcmllcy4gKFRoZSBgRm9ybWF0U3BlY2AgdHlwZSBzaG91bGQgbm90IGJl
IHVzZWQKIC8vICAgICBkaXJlY3RseS4pCiAvLwpAQCAtNjAsNyArNjAsNyBAQAogLy8KIC8vICAg
KiBBIGBGb3JtYXRVbnR5cGVkKClgIGZ1bmN0aW9uIHRoYXQgaXMgc2ltaWxhciB0byBgRm9ybWF0
KClgIGV4Y2VwdCBpdCBpcwogLy8gICAgIGxvb3NlbHkgdHlwZWQuIGBGb3JtYXRVbnR5cGVkKClg
IGlzIG5vdCBhIHRlbXBsYXRlIGFuZCBkb2VzIG5vdCBwZXJmb3JtCi0vLyAgICAgYW55IGNvbXBp
bGUtdGltZSBjaGVja2luZyBvZiB0aGUgZm9ybWF0IHN0ZDo6c3RyaW5nOyBpbnN0ZWFkLCBpdCBy
ZXR1cm5zIGEKKy8vICAgICBhbnkgY29tcGlsZS10aW1lIGNoZWNraW5nIG9mIHRoZSBmb3JtYXQg
c3RyaW5nOyBpbnN0ZWFkLCBpdCByZXR1cm5zIGEKIC8vICAgICBib29sZWFuIGZyb20gYSBydW50
aW1lIGNoZWNrLgogLy8KIC8vIEluIGFkZGl0aW9uLCB0aGUgYHN0cl9mb3JtYXRgIGxpYnJhcnkg
cHJvdmlkZXMgZXh0ZW5zaW9uIHBvaW50cyBmb3IKQEAgLTg5LDcgKzg5LDcgQEAgbmFtZXNwYWNl
IGFic2wgewogLy8gRXhhbXBsZToKIC8vCiAvLyAgIGFic2w6OlVudHlwZWRGb3JtYXRTcGVjIGZv
cm1hdCgiJWQiKTsKLS8vICAgc3RkOjpzdHJpbmcgb3V0OworLy8gICBzdHJpbmcgb3V0OwogLy8g
ICBDSEVDSyhhYnNsOjpGb3JtYXRVbnR5cGVkKCZvdXQsIGZvcm1hdCwge2Fic2w6OkZvcm1hdEFy
ZygxKX0pKTsKIGNsYXNzIFVudHlwZWRGb3JtYXRTcGVjIHsKICBwdWJsaWM6CkBAIC0xMzUsNyAr
MTM1LDcgQEAgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6U3RyZWFtZWRXcmFwcGVyPFQ+IEZvcm1hdFN0
cmVhbWVkKGNvbnN0IFQmIHYpIHsKIC8vIEV4YW1wbGU6CiAvLwogLy8gICBpbnQgbiA9IDA7Ci0v
LyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoIiVzJWQlbiIsICJoZWxsbyIsIDEy
MywKKy8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoIiVzJWQlbiIsICJoZWxsbyIsIDEy
MywKIC8vICAgICAgICAgICAgICAgICAgIGFic2w6OkZvcm1hdENvdW50Q2FwdHVyZSgmbikpOwog
Ly8gICBFWFBFQ1RfRVEoOCwgbik7CiBjbGFzcyBGb3JtYXRDb3VudENhcHR1cmUgewpAQCAtMTU1
LDEwICsxNTUsMTAgQEAgY2xhc3MgRm9ybWF0Q291bnRDYXB0dXJlIHsKIAogLy8gRm9ybWF0U3Bl
YwogLy8KLS8vIFRoZSBgRm9ybWF0U3BlY2AgdHlwZSBkZWZpbmVzIHRoZSBtYWtldXAgb2YgYSBm
b3JtYXQgc3RkOjpzdHJpbmcgd2l0aGluIHRoZQorLy8gVGhlIGBGb3JtYXRTcGVjYCB0eXBlIGRl
ZmluZXMgdGhlIG1ha2V1cCBvZiBhIGZvcm1hdCBzdHJpbmcgd2l0aGluIHRoZQogLy8gYHN0cl9m
b3JtYXRgIGxpYnJhcnkuIFlvdSBzaG91bGQgbm90IG5lZWQgdG8gdXNlIG9yIG1hbmlwdWxhdGUg
dGhpcyB0eXBlCiAvLyBkaXJlY3RseS4gQSBgRm9ybWF0U3BlY2AgaXMgYSB2YXJpYWRpYyBjbGFz
cyB0ZW1wbGF0ZSB0aGF0IGlzIGV2YWx1YXRlZCBhdAotLy8gY29tcGlsZS10aW1lLCBhY2NvcmRp
bmcgdG8gdGhlIGZvcm1hdCBzdGQ6OnN0cmluZyBhbmQgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3Nl
ZAorLy8gY29tcGlsZS10aW1lLCBhY2NvcmRpbmcgdG8gdGhlIGZvcm1hdCBzdHJpbmcgYW5kIGFy
Z3VtZW50cyB0aGF0IGFyZSBwYXNzZWQKIC8vIHRvIGl0LgogLy8KIC8vIEZvciBhIGBGb3JtYXRT
cGVjYCB0byBiZSB2YWxpZCBhdCBjb21waWxlLXRpbWUsIGl0IG11c3QgYmUgcHJvdmlkZWQgYXMK
QEAgLTE2NiwxMiArMTY2LDEyIEBAIGNsYXNzIEZvcm1hdENvdW50Q2FwdHVyZSB7CiAvLwogLy8g
KiBBIGBjb25zdGV4cHJgIGxpdGVyYWwgb3IgYGFic2w6OnN0cmluZ192aWV3YCwgd2hpY2ggaXMg
aG93IGl0IG1vc3Qgb2Z0ZW4KIC8vICAgdXNlZC4KLS8vICogQSBgUGFyc2VkRm9ybWF0YCBpbnN0
YW50aWF0aW9uLCB3aGljaCBlbnN1cmVzIHRoZSBmb3JtYXQgc3RkOjpzdHJpbmcgaXMKKy8vICog
QSBgUGFyc2VkRm9ybWF0YCBpbnN0YW50aWF0aW9uLCB3aGljaCBlbnN1cmVzIHRoZSBmb3JtYXQg
c3RyaW5nIGlzCiAvLyAgIHZhbGlkIGJlZm9yZSB1c2UuIChTZWUgYmVsb3cuKQogLy8KIC8vIEV4
YW1wbGU6CiAvLwotLy8gICAvLyBQcm92aWRlZCBhcyBhIHN0ZDo6c3RyaW5nIGxpdGVyYWwuCisv
LyAgIC8vIFByb3ZpZGVkIGFzIGEgc3RyaW5nIGxpdGVyYWwuCiAvLyAgIGFic2w6OlN0ckZvcm1h
dCgiV2VsY29tZSB0byAlcywgTnVtYmVyICVkISIsICJUaGUgVmlsbGFnZSIsIDYpOwogLy8KIC8v
ICAgLy8gUHJvdmlkZWQgYXMgYSBjb25zdGV4cHIgYWJzbDo6c3RyaW5nX3ZpZXcuCkBAIC0xODMs
NyArMTgzLDcgQEAgY2xhc3MgRm9ybWF0Q291bnRDYXB0dXJlIHsKIC8vICAgYWJzbDo6UGFyc2Vk
Rm9ybWF0PCdzJywgJ2QnPiBmb3JtYXRTdHJpbmcoIldlbGNvbWUgdG8gJXMsIE51bWJlciAlZCEi
KTsKIC8vICAgYWJzbDo6U3RyRm9ybWF0KGZvcm1hdFN0cmluZywgIlRoZVZpbGxhZ2UiLCA2KTsK
IC8vCi0vLyBBIGZvcm1hdCBzdGQ6OnN0cmluZyBnZW5lcmFsbHkgZm9sbG93cyB0aGUgUE9TSVgg
c3ludGF4IGFzIHVzZWQgd2l0aGluIHRoZSBQT1NJWAorLy8gQSBmb3JtYXQgc3RyaW5nIGdlbmVy
YWxseSBmb2xsb3dzIHRoZSBQT1NJWCBzeW50YXggYXMgdXNlZCB3aXRoaW4gdGhlIFBPU0lYCiAv
LyBgcHJpbnRmYCBzcGVjaWZpY2F0aW9uLgogLy8KIC8vIChTZWUgaHR0cDovL3B1YnMub3Blbmdy
b3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL3ByaW50Zi5odG1sLikKQEAg
LTIyMyw3ICsyMjMsNyBAQCBjbGFzcyBGb3JtYXRDb3VudENhcHR1cmUgewogLy8gICAgICIlcCIs
ICppbnQgICAgICAgICAgICAgICAtPiAiMHg3ZmZkZWI2YWQyYTQiCiAvLwogLy8gICAgIGludCBu
ID0gMDsKLS8vICAgICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KAorLy8gICAgIHN0
cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KAogLy8gICAgICAgICAiJXMlZCVuIiwgImhlbGxvIiwg
MTIzLCBhYnNsOjpGb3JtYXRDb3VudENhcHR1cmUoJm4pKTsKIC8vICAgICBFWFBFQ1RfRVEoOCwg
bik7CiAvLwpAQCAtMjM2LDcgKzIzNiw3IEBAIGNsYXNzIEZvcm1hdENvdW50Q2FwdHVyZSB7CiAv
LwogLy8gSG93ZXZlciwgaW4gdGhlIGBzdHJfZm9ybWF0YCBsaWJyYXJ5LCBhIGZvcm1hdCBjb252
ZXJzaW9uIHNwZWNpZmllcyBhIGJyb2FkZXIKIC8vIEMrKyBjb25jZXB0dWFsIGNhdGVnb3J5IGlu
c3RlYWQgb2YgYW4gZXhhY3QgdHlwZS4gRm9yIGV4YW1wbGUsIGAlc2AgYmluZHMgdG8KLS8vIGFu
eSBzdGQ6OnN0cmluZy1saWtlIGFyZ3VtZW50LCBzbyBgc3RkOjpzdHJpbmdgLCBgYWJzbDo6c3Ry
aW5nX3ZpZXdgLCBhbmQKKy8vIGFueSBzdHJpbmctbGlrZSBhcmd1bWVudCwgc28gYHN0ZDo6c3Ry
aW5nYCwgYGFic2w6OnN0cmluZ192aWV3YCwgYW5kCiAvLyBgY29uc3QgY2hhcipgIGFyZSBhbGwg
YWNjZXB0ZWQuIExpa2V3aXNlLCBgJWRgIGFjY2VwdHMgYW55IGludGVnZXItbGlrZQogLy8gYXJn
dW1lbnQsIGV0Yy4KIApAQCAtMjQ4LDcgKzI0OCw3IEBAIHVzaW5nIEZvcm1hdFNwZWMgPQogLy8K
IC8vIEEgYFBhcnNlZEZvcm1hdGAgaXMgYSBjbGFzcyB0ZW1wbGF0ZSByZXByZXNlbnRpbmcgYSBw
cmVwYXJzZWQgYEZvcm1hdFNwZWNgLAogLy8gd2l0aCB0ZW1wbGF0ZSBhcmd1bWVudHMgc3BlY2lm
eWluZyB0aGUgY29udmVyc2lvbiBjaGFyYWN0ZXJzIHVzZWQgd2l0aGluIHRoZQotLy8gZm9ybWF0
IHN0ZDo6c3RyaW5nLiBTdWNoIGNoYXJhY3RlcnMgbXVzdCBiZSB2YWxpZCBmb3JtYXQgdHlwZSBz
cGVjaWZpZXJzLCBhbmQKKy8vIGZvcm1hdCBzdHJpbmcuIFN1Y2ggY2hhcmFjdGVycyBtdXN0IGJl
IHZhbGlkIGZvcm1hdCB0eXBlIHNwZWNpZmllcnMsIGFuZAogLy8gdGhlc2UgdHlwZSBzcGVjaWZp
ZXJzIGFyZSBjaGVja2VkIGF0IGNvbXBpbGUtdGltZS4KIC8vCiAvLyBJbnN0YW5jZXMgb2YgYFBh
cnNlZEZvcm1hdGAgY2FuIGJlIGNyZWF0ZWQsIGNvcGllZCwgYW5kIHJldXNlZCB0byBzcGVlZCB1
cApAQCAtMjc1LDI2ICsyNzUsMjYgQEAgdXNpbmcgUGFyc2VkRm9ybWF0ID0gc3RyX2Zvcm1hdF9p
bnRlcm5hbDo6RXh0ZW5kZWRQYXJzZWRGb3JtYXQ8CiAKIC8vIFN0ckZvcm1hdCgpCiAvLwotLy8g
UmV0dXJucyBhIGBzdHJpbmdgIGdpdmVuIGEgYHByaW50ZigpYC1zdHlsZSBmb3JtYXQgc3RkOjpz
dHJpbmcgYW5kIHplcm8gb3IgbW9yZQorLy8gUmV0dXJucyBhIGBzdHJpbmdgIGdpdmVuIGEgYHBy
aW50ZigpYC1zdHlsZSBmb3JtYXQgc3RyaW5nIGFuZCB6ZXJvIG9yIG1vcmUKIC8vIGFkZGl0aW9u
YWwgYXJndW1lbnRzLiBVc2UgaXQgYXMgeW91IHdvdWxkIGBzcHJpbnRmKClgLiBgU3RyRm9ybWF0
KClgIGlzIHRoZQogLy8gcHJpbWFyeSBmb3JtYXR0aW5nIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYHN0
cl9mb3JtYXRgIGxpYnJhcnksIGFuZCBzaG91bGQgYmUKIC8vIHVzZWQgaW4gbW9zdCBjYXNlcyB3
aGVyZSB5b3UgbmVlZCB0eXBlLXNhZmUgY29udmVyc2lvbiBvZiB0eXBlcyBpbnRvCiAvLyBmb3Jt
YXR0ZWQgc3RyaW5ncy4KIC8vCi0vLyBUaGUgZm9ybWF0IHN0ZDo6c3RyaW5nIGdlbmVyYWxseSBj
b25zaXN0cyBvZiBvcmRpbmFyeSBjaGFyYWN0ZXIgZGF0YSBhbG9uZyB3aXRoCisvLyBUaGUgZm9y
bWF0IHN0cmluZyBnZW5lcmFsbHkgY29uc2lzdHMgb2Ygb3JkaW5hcnkgY2hhcmFjdGVyIGRhdGEg
YWxvbmcgd2l0aAogLy8gb25lIG9yIG1vcmUgZm9ybWF0IGNvbnZlcnNpb24gc3BlY2lmaWVycyAo
ZGVub3RlZCBieSB0aGUgYCVgIGNoYXJhY3RlcikuCi0vLyBPcmRpbmFyeSBjaGFyYWN0ZXIgZGF0
YSBpcyByZXR1cm5lZCB1bmNoYW5nZWQgaW50byB0aGUgcmVzdWx0IHN0ZDo6c3RyaW5nLCB3aGls
ZQorLy8gT3JkaW5hcnkgY2hhcmFjdGVyIGRhdGEgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkIGludG8g
dGhlIHJlc3VsdCBzdHJpbmcsIHdoaWxlCiAvLyBlYWNoIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlv
biBwZXJmb3JtcyBhIHR5cGUgc3Vic3RpdHV0aW9uIGZyb20KIC8vIGBTdHJGb3JtYXQoKWAncyBv
dGhlciBhcmd1bWVudHMuIFNlZSB0aGUgY29tbWVudHMgZm9yIGBGb3JtYXRTcGVjYCBmb3IgZnVs
bAotLy8gaW5mb3JtYXRpb24gb24gdGhlIG1ha2V1cCBvZiB0aGlzIGZvcm1hdCBzdGQ6OnN0cmlu
Zy4KKy8vIGluZm9ybWF0aW9uIG9uIHRoZSBtYWtldXAgb2YgdGhpcyBmb3JtYXQgc3RyaW5nLgog
Ly8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0
KAorLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckZvcm1hdCgKIC8vICAgICAgICJXZWxjb21lIHRv
ICVzLCBOdW1iZXIgJWQhIiwgIlRoZSBWaWxsYWdlIiwgNik7CiAvLyAgIEVYUEVDVF9FUSgiV2Vs
Y29tZSB0byBUaGUgVmlsbGFnZSwgTnVtYmVyIDYhIiwgcyk7CiAvLwotLy8gUmV0dXJucyBhbiBl
bXB0eSBzdGQ6OnN0cmluZyBpbiBjYXNlIG9mIGVycm9yLgorLy8gUmV0dXJucyBhbiBlbXB0eSBz
dHJpbmcgaW4gY2FzZSBvZiBlcnJvci4KIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgogQUJT
TF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpzdHJpbmcgU3RyRm9ybWF0KGNvbnN0IEZvcm1hdFNwZWM8
QXJncy4uLj4mIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQXJncyYuLi4gYXJncykgewpAQCAtMzA1LDEzICszMDUsMTMgQEAgQUJTTF9NVVNUX1VT
RV9SRVNVTFQgc3RkOjpzdHJpbmcgU3RyRm9ybWF0KGNvbnN0IEZvcm1hdFNwZWM8QXJncy4uLj4m
IGZvcm1hdCwKIAogLy8gU3RyQXBwZW5kRm9ybWF0KCkKIC8vCi0vLyBBcHBlbmRzIHRvIGEgYGRz
dGAgc3RkOjpzdHJpbmcgZ2l2ZW4gYSBmb3JtYXQgc3RkOjpzdHJpbmcsIGFuZCB6ZXJvIG9yIG1v
cmUgYWRkaXRpb25hbAorLy8gQXBwZW5kcyB0byBhIGBkc3RgIHN0cmluZyBnaXZlbiBhIGZvcm1h
dCBzdHJpbmcsIGFuZCB6ZXJvIG9yIG1vcmUgYWRkaXRpb25hbAogLy8gYXJndW1lbnRzLCByZXR1
cm5pbmcgYCpkc3RgIGFzIGEgY29udmVuaWVuY2UgZm9yIGNoYWluaW5nIHB1cnBvc2VzLiBBcHBl
bmRzCiAvLyBub3RoaW5nIGluIGNhc2Ugb2YgZXJyb3IgKGJ1dCBwb3NzaWJseSBhbHRlcnMgaXRz
IGNhcGFjaXR5KS4KIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgc3RkOjpzdHJpbmcgb3JpZygi
Rm9yIGV4YW1wbGUgUEkgaXMgYXBwcm94aW1hdGVseSAiKTsKKy8vICAgc3RyaW5nIG9yaWcoIkZv
ciBleGFtcGxlIFBJIGlzIGFwcHJveGltYXRlbHkgIik7CiAvLyAgIHN0ZDo6Y291dCA8PCBTdHJB
cHBlbmRGb3JtYXQoJm9yaWcsICIlMTIuNmYiLCAzLjE0KTsKIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgogc3RkOjpzdHJpbmcmIFN0ckFwcGVuZEZvcm1hdChzdGQ6OnN0cmluZyogZHN0LCBj
b25zdCBGb3JtYXRTcGVjPEFyZ3MuLi4+JiBmb3JtYXQsCkBAIC0zMjMsNyArMzIzLDcgQEAgc3Rk
OjpzdHJpbmcmIFN0ckFwcGVuZEZvcm1hdChzdGQ6OnN0cmluZyogZHN0LCBjb25zdCBGb3JtYXRT
cGVjPEFyZ3MuLi4+JiBmb3JtYXQKIAogLy8gU3RyZWFtRm9ybWF0KCkKIC8vCi0vLyBXcml0ZXMg
dG8gYW4gb3V0cHV0IHN0cmVhbSBnaXZlbiBhIGZvcm1hdCBzdGQ6OnN0cmluZyBhbmQgemVybyBv
ciBtb3JlIGFyZ3VtZW50cywKKy8vIFdyaXRlcyB0byBhbiBvdXRwdXQgc3RyZWFtIGdpdmVuIGEg
Zm9ybWF0IHN0cmluZyBhbmQgemVybyBvciBtb3JlIGFyZ3VtZW50cywKIC8vIGdlbmVyYWxseSBp
biBhIG1hbm5lciB0aGF0IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gc3RyZWFtaW5nIHRoZSByZXN1
bHQgb2YKIC8vIGBhYnNsOjogU3RyRm9ybWF0KClgLiBUaGUgcmV0dXJuZWQgb2JqZWN0IG11c3Qg
YmUgc3RyZWFtZWQgYmVmb3JlIHRoZSBmdWxsCiAvLyBleHByZXNzaW9uIGVuZHMuCkBAIC0zNDEs
NyArMzQxLDcgQEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6U3Ry
ZWFtYWJsZSBTdHJlYW1Gb3JtYXQoCiAKIC8vIFByaW50RigpCiAvLwotLy8gV3JpdGVzIHRvIHN0
ZG91dCBnaXZlbiBhIGZvcm1hdCBzdGQ6OnN0cmluZyBhbmQgemVybyBvciBtb3JlIGFyZ3VtZW50
cy4gVGhpcworLy8gV3JpdGVzIHRvIHN0ZG91dCBnaXZlbiBhIGZvcm1hdCBzdHJpbmcgYW5kIHpl
cm8gb3IgbW9yZSBhcmd1bWVudHMuIFRoaXMKIC8vIGZ1bmN0aW9uIGlzIGZ1bmN0aW9uYWxseSBl
cXVpdmFsZW50IHRvIGBzdGQ6OnByaW50ZigpYCAoYW5kIHR5cGUtc2FmZSk7CiAvLyBwcmVmZXIg
YGFic2w6OlByaW50RigpYCBvdmVyIGBzdGQ6OnByaW50ZigpYC4KIC8vCkBAIC0zNjEsMTQgKzM2
MSwxNCBAQCBpbnQgUHJpbnRGKGNvbnN0IEZvcm1hdFNwZWM8QXJncy4uLj4mIGZvcm1hdCwgY29u
c3QgQXJncyYuLi4gYXJncykgewogCiAvLyBGUHJpbnRGKCkKIC8vCi0vLyBXcml0ZXMgdG8gYSBm
aWxlIGdpdmVuIGEgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCB6ZXJvIG9yIG1vcmUgYXJndW1lbnRz
LiBUaGlzCisvLyBXcml0ZXMgdG8gYSBmaWxlIGdpdmVuIGEgZm9ybWF0IHN0cmluZyBhbmQgemVy
byBvciBtb3JlIGFyZ3VtZW50cy4gVGhpcwogLy8gZnVuY3Rpb24gaXMgZnVuY3Rpb25hbGx5IGVx
dWl2YWxlbnQgdG8gYHN0ZDo6ZnByaW50ZigpYCAoYW5kIHR5cGUtc2FmZSk7CiAvLyBwcmVmZXIg
YGFic2w6OkZQcmludEYoKWAgb3ZlciBgc3RkOjpmcHJpbnRmKClgLgogLy8KIC8vIEV4YW1wbGU6
CiAvLwogLy8gICBzdGQ6OnN0cmluZ192aWV3IHMgPSAiVWxhYW5iYWF0YXIiOwotLy8gICBhYnNs
OjpGUHJpbnRGKCJUaGUgY2FwaXRhbCBvZiBNb25nb2xpYSBpcyAlcyIsIHMpOworLy8gICBhYnNs
OjpGUHJpbnRGKHN0ZG91dCwgIlRoZSBjYXBpdGFsIG9mIE1vbmdvbGlhIGlzICVzIiwgcyk7CiAv
LwogLy8gICBPdXRwdXRzOiAiVGhlIGNhcGl0YWwgb2YgTW9uZ29saWEgaXMgVWxhYW5iYWF0YXIi
CiAvLwpAQCAtMzgyLDcgKzM4Miw3IEBAIGludCBGUHJpbnRGKHN0ZDo6RklMRSogb3V0cHV0LCBj
b25zdCBGb3JtYXRTcGVjPEFyZ3MuLi4+JiBmb3JtYXQsCiAKIC8vIFNOUHJpbnRGKCkKIC8vCi0v
LyBXcml0ZXMgdG8gYSBzaXplZCBidWZmZXIgZ2l2ZW4gYSBmb3JtYXQgc3RkOjpzdHJpbmcgYW5k
IHplcm8gb3IgbW9yZSBhcmd1bWVudHMuCisvLyBXcml0ZXMgdG8gYSBzaXplZCBidWZmZXIgZ2l2
ZW4gYSBmb3JtYXQgc3RyaW5nIGFuZCB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLgogLy8gVGhpcyBm
dW5jdGlvbiBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBgc3RkOjpzbnByaW50ZigpYCAo
YW5kCiAvLyB0eXBlLXNhZmUpOyBwcmVmZXIgYGFic2w6OlNOUHJpbnRGKClgIG92ZXIgYHN0ZDo6
c25wcmludGYoKWAuCiAvLwpAQCAtNDMwLDE0ICs0MzAsMTQgQEAgY2xhc3MgRm9ybWF0UmF3U2lu
ayB7CiAKIC8vIEZvcm1hdCgpCiAvLwotLy8gV3JpdGVzIGEgZm9ybWF0dGVkIHN0ZDo6c3RyaW5n
IHRvIGFuIGFyYml0cmFyeSBzaW5rIG9iamVjdCAoaW1wbGVtZW50aW5nIHRoZQotLy8gYGFic2w6
OkZvcm1hdFJhd1NpbmtgIGludGVyZmFjZSksIHVzaW5nIGEgZm9ybWF0IHN0ZDo6c3RyaW5nIGFu
ZCB6ZXJvIG9yIG1vcmUKKy8vIFdyaXRlcyBhIGZvcm1hdHRlZCBzdHJpbmcgdG8gYW4gYXJiaXRy
YXJ5IHNpbmsgb2JqZWN0IChpbXBsZW1lbnRpbmcgdGhlCisvLyBgYWJzbDo6Rm9ybWF0UmF3U2lu
a2AgaW50ZXJmYWNlKSwgdXNpbmcgYSBmb3JtYXQgc3RyaW5nIGFuZCB6ZXJvIG9yIG1vcmUKIC8v
IGFkZGl0aW9uYWwgYXJndW1lbnRzLgogLy8KIC8vIEJ5IGRlZmF1bHQsIGBzdHJpbmdgIGFuZCBg
c3RkOjpvc3RyZWFtYCBhcmUgc3VwcG9ydGVkIGFzIGRlc3RpbmF0aW9uIG9iamVjdHMuCiAvLwog
Ly8gYGFic2w6OkZvcm1hdCgpYCBpcyBhIGdlbmVyaWMgdmVyc2lvbiBvZiBgYWJzbDo6U3RyRm9y
bWF0KCksIGZvciBjdXN0b20KLS8vIHNpbmtzLiBUaGUgZm9ybWF0IHN0ZDo6c3RyaW5nLCBsaWtl
IGZvcm1hdCBzdHJpbmdzIGZvciBgU3RyRm9ybWF0KClgLCBpcyBjaGVja2VkCisvLyBzaW5rcy4g
VGhlIGZvcm1hdCBzdHJpbmcsIGxpa2UgZm9ybWF0IHN0cmluZ3MgZm9yIGBTdHJGb3JtYXQoKWAs
IGlzIGNoZWNrZWQKIC8vIGF0IGNvbXBpbGUtdGltZS4KIC8vCiAvLyBPbiBmYWlsdXJlLCB0aGlz
IGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCBhbmQgdGhlIHN0YXRlIG9mIHRoZSBzaW5rIGlzCkBA
IC00NjMsMTMgKzQ2MywxMyBAQCB1c2luZyBGb3JtYXRBcmcgPSBzdHJfZm9ybWF0X2ludGVybmFs
OjpGb3JtYXRBcmdJbXBsOwogCiAvLyBGb3JtYXRVbnR5cGVkKCkKIC8vCi0vLyBXcml0ZXMgYSBm
b3JtYXR0ZWQgc3RkOjpzdHJpbmcgdG8gYW4gYXJiaXRyYXJ5IHNpbmsgb2JqZWN0IChpbXBsZW1l
bnRpbmcgdGhlCisvLyBXcml0ZXMgYSBmb3JtYXR0ZWQgc3RyaW5nIHRvIGFuIGFyYml0cmFyeSBz
aW5rIG9iamVjdCAoaW1wbGVtZW50aW5nIHRoZQogLy8gYGFic2w6OkZvcm1hdFJhd1NpbmtgIGlu
dGVyZmFjZSksIHVzaW5nIGFuIGBVbnR5cGVkRm9ybWF0U3BlY2AgYW5kIHplcm8gb3IKIC8vIG1v
cmUgYWRkaXRpb25hbCBhcmd1bWVudHMuCiAvLwogLy8gVGhpcyBmdW5jdGlvbiBhY3RzIGFzIHRo
ZSBtb3N0IGdlbmVyaWMgZm9ybWF0dGluZyBmdW5jdGlvbiBpbiB0aGUKIC8vIGBzdHJfZm9ybWF0
YCBsaWJyYXJ5LiBUaGUgY2FsbGVyIHByb3ZpZGVzIGEgcmF3IHNpbmssIGFuIHVuY2hlY2tlZCBm
b3JtYXQKLS8vIHN0ZDo6c3RyaW5nLCBhbmQgKHVzdWFsbHkpIGEgcnVudGltZSBzcGVjaWZpZWQg
bGlzdCBvZiBhcmd1bWVudHM7IG5vIGNvbXBpbGUtdGltZQorLy8gc3RyaW5nLCBhbmQgKHVzdWFs
bHkpIGEgcnVudGltZSBzcGVjaWZpZWQgbGlzdCBvZiBhcmd1bWVudHM7IG5vIGNvbXBpbGUtdGlt
ZQogLy8gY2hlY2tpbmcgb2YgZm9ybWF0dGluZyBpcyBwZXJmb3JtZWQgd2l0aGluIHRoaXMgZnVu
Y3Rpb24uIEFzIGEgcmVzdWx0LCBhCiAvLyBjYWxsZXIgc2hvdWxkIGNoZWNrIHRoZSByZXR1cm4g
dmFsdWUgdG8gdmVyaWZ5IHRoYXQgbm8gZXJyb3Igb2NjdXJyZWQuCiAvLyBPbiBmYWlsdXJlLCB0
aGlzIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCBhbmQgdGhlIHN0YXRlIG9mIHRoZSBzaW5rIGlz
CkBAIC00ODMsOSArNDgzLDkgQEAgdXNpbmcgRm9ybWF0QXJnID0gc3RyX2Zvcm1hdF9pbnRlcm5h
bDo6Rm9ybWF0QXJnSW1wbDsKIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgc3RkOjpvcHRpb25h
bDxzdGQ6OnN0cmluZz4gRm9ybWF0RHluYW1pYyhjb25zdCBzdGQ6OnN0cmluZyYgaW5fZm9ybWF0
LAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3I8
c3RkOjpzdHJpbmc+JiBpbl9hcmdzKSB7Ci0vLyAgICAgc3RkOjpzdHJpbmcgb3V0OworLy8gICBz
dGQ6Om9wdGlvbmFsPHN0cmluZz4gRm9ybWF0RHluYW1pYyhjb25zdCBzdHJpbmcmIGluX2Zvcm1h
dCwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9y
PHN0cmluZz4mIGluX2FyZ3MpIHsKKy8vICAgICBzdHJpbmcgb3V0OwogLy8gICAgIHN0ZDo6dmVj
dG9yPGFic2w6OkZvcm1hdEFyZz4gYXJnczsKIC8vICAgICBmb3IgKGNvbnN0IGF1dG8mIHYgOiBp
bl9hcmdzKSB7CiAvLyAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdGhhdCAndicgaXMgYSByZWZl
cmVuY2UgdG8gdGhlIG9iamVjdHMgaW4gaW5fYXJncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyX2Zvcm1hdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfZm9ybWF0X3Rlc3QuY2MK
aW5kZXggZmVkNzVmYWZiNWM2NWMxMWI5MmY4ZWRiY2E1MzhhNGFjZGQxMTc3Yy4uYWExNGUyMTE3
MDlhYjczOTM3OTZhMzIwODMwYzc1NTkxNmFjYzg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdHJfZm9ybWF0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfZm9ybWF0X3Rlc3Qu
Y2MKQEAgLTM5MSw3ICszOTEsNyBAQCBURVNUKFN0ckZvcm1hdCwgQmVoYXZlc0FzRG9jdW1lbnRl
ZCkgewogI2VuZGlmCiAKICAgLy8gT3RoZXIgY29udmVyc2lvbgotICBpbnQ2NF90IHZhbHVlID0g
MHg3ZmZkZWI2OworICBpbnQ2NF90IHZhbHVlID0gMHg3ZmZkZWI0OwogICBhdXRvIHB0cl92YWx1
ZSA9IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpOwogICBjb25zdCBpbnQmIHNvbWV0aGlu
ZyA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IGludCo+KHB0cl92YWx1ZSk7CiAgIEVYUEVDVF9F
UShTdHJGb3JtYXQoIiVwIiwgJnNvbWV0aGluZyksIFN0ckZvcm1hdCgiMHgleCIsIHB0cl92YWx1
ZSkpOwpAQCAtNjAxLDMgKzYwMSwzOSBAQCBURVNUX0YoUGFyc2VkRm9ybWF0VGVzdCwgUmVncmVz
c2lvbk1peFBvc2l0aW9uYWwpIHsKIAogfSAgLy8gbmFtZXNwYWNlCiB9ICAvLyBuYW1lc3BhY2Ug
YWJzbAorCisvLyBTb21lIGNvZGVnZW4gdGh1bmtzIHRoYXQgd2UgY2FuIHVzZSB0byBlYXNpbHkg
ZHVtcCB0aGUgZ2VuZXJhdGVkIGFzc2VtYmx5IGZvcgorLy8gZGlmZmVyZW50IFN0ckZvcm1hdCBj
YWxscy4KKworaW5saW5lIHN0ZDo6c3RyaW5nIENvZGVnZW5BYnNsU3RyRm9ybWF0SW50KGludCBp
KSB7CisgIHJldHVybiBhYnNsOjpTdHJGb3JtYXQoIiVkIiwgaSk7Cit9CisKK2lubGluZSBzdGQ6
OnN0cmluZyBDb2RlZ2VuQWJzbFN0ckZvcm1hdEludFN0cmluZ0ludDY0KGludCBpLCBjb25zdCBz
dGQ6OnN0cmluZyYgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IGk2NCkgeworICByZXR1cm4gYWJzbDo6U3RyRm9ybWF0KCIlZCAlcyAl
ZCIsIGksIHMsIGk2NCk7Cit9CisKK2lubGluZSB2b2lkIENvZGVnZW5BYnNsU3RyQXBwZW5kRm9y
bWF0SW50KHN0ZDo6c3RyaW5nKiBvdXQsIGludCBpKSB7CisgIGFic2w6OlN0ckFwcGVuZEZvcm1h
dChvdXQsICIlZCIsIGkpOworfQorCitpbmxpbmUgdm9pZCBDb2RlZ2VuQWJzbFN0ckFwcGVuZEZv
cm1hdEludFN0cmluZ0ludDY0KHN0ZDo6c3RyaW5nKiBvdXQsIGludCBpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBpNjQpIHsKKyAgYWJzbDo6U3RyQXBwZW5kRm9ybWF0KG91dCwgIiVkICVzICVk
IiwgaSwgcywgaTY0KTsKK30KKworYXV0byBhYnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2Vf
Y29kZWdlbl9mdW5jcyA9IHN0ZDo6bWFrZV90dXBsZSgKKyAgICBDb2RlZ2VuQWJzbFN0ckZvcm1h
dEludCwgQ29kZWdlbkFic2xTdHJGb3JtYXRJbnRTdHJpbmdJbnQ2NCwKKyAgICBDb2RlZ2VuQWJz
bFN0ckFwcGVuZEZvcm1hdEludCwgQ29kZWdlbkFic2xTdHJBcHBlbmRGb3JtYXRJbnRTdHJpbmdJ
bnQ2NCk7CisKK2Jvb2wgYWJzbF9pbnRlcm5hbF9zdHJfZm9ybWF0X2ZvcmNlX2NvZGVnZW5fYWx3
YXlzX2ZhbHNlOworLy8gRm9yY2UgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlIHRoZSBmdW5jdGlv
bnMgYnkgbWFraW5nIGl0IGxvb2sgbGlrZSB3ZQorLy8gZXNjYXBlIHRoZSBmdW5jdGlvbiBwb2lu
dGVycy4KKy8vIEl0IGNhbid0IHN0YXRpY2FsbHkga25vdyB0aGF0CisvLyBhYnNsX2ludGVybmFs
X3N0cl9mb3JtYXRfZm9yY2VfY29kZWdlbl9hbHdheXNfZmFsc2UgaXMgbm90IGNoYW5nZWQgYnkg
c29tZW9uZQorLy8gZWxzZS4KK2Jvb2wgYWJzbF9pbnRlcm5hbF9zdHJfZm9ybWF0X2ZvcmNlX2Nv
ZGVnZW4gPQorICAgIGFic2xfaW50ZXJuYWxfc3RyX2Zvcm1hdF9mb3JjZV9jb2RlZ2VuX2Fsd2F5
c19mYWxzZSAmJgorICAgIHByaW50ZigiJXAiLCAmYWJzbF9pbnRlcm5hbF9zdHJfZm9ybWF0X2Zv
cmNlX2NvZGVnZW5fZnVuY3MpID09IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9q
b2luLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luLmgKaW5kZXggYmQ0ZDBlMWQ5MzI0Y2M3Mjky
MTQ0NDk5MzViNTczMzdhNjcxNmZiNy4uZjk2MTFhZDNiNDdkNzJkMGQ5OTJiZDJiZWY5MDc1Yzg2
MDhmZDI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfam9pbi5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyX2pvaW4uaApAQCAtMTgsMTAgKzE4LDEwIEBACiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogLy8KIC8vIFRoaXMgaGVhZGVyIGZpbGUgY29udGFpbnMgZnVuY3Rpb25zIGZvciBq
b2luaW5nIGEgcmFuZ2Ugb2YgZWxlbWVudHMgYW5kCi0vLyByZXR1cm5pbmcgdGhlIHJlc3VsdCBh
cyBhIHN0ZDo6c3RyaW5nLiBTdHJKb2luIG9wZXJhdGlvbnMgYXJlIHNwZWNpZmllZCBieSBwYXNz
aW5nCi0vLyBhIHJhbmdlLCBhIHNlcGFyYXRvciBzdGQ6OnN0cmluZyB0byB1c2UgYmV0d2VlbiB0
aGUgZWxlbWVudHMgam9pbmVkLCBhbmQgYW4KKy8vIHJldHVybmluZyB0aGUgcmVzdWx0IGFzIGEg
c3RyaW5nLiBTdHJKb2luIG9wZXJhdGlvbnMgYXJlIHNwZWNpZmllZCBieSBwYXNzaW5nCisvLyBh
IHJhbmdlLCBhIHNlcGFyYXRvciBzdHJpbmcgdG8gdXNlIGJldHdlZW4gdGhlIGVsZW1lbnRzIGpv
aW5lZCwgYW5kIGFuCiAvLyBvcHRpb25hbCBGb3JtYXR0ZXIgcmVzcG9uc2libGUgZm9yIGNvbnZl
cnRpbmcgZWFjaCBhcmd1bWVudCBpbiB0aGUgcmFuZ2UgdG8gYQotLy8gc3RkOjpzdHJpbmcuIElm
IG9taXR0ZWQsIGEgZGVmYXVsdCBgQWxwaGFOdW1Gb3JtYXR0ZXIoKWAgaXMgY2FsbGVkIG9uIHRo
ZSBlbGVtZW50cworLy8gc3RyaW5nLiBJZiBvbWl0dGVkLCBhIGRlZmF1bHQgYEFscGhhTnVtRm9y
bWF0dGVyKClgIGlzIGNhbGxlZCBvbiB0aGUgZWxlbWVudHMKIC8vIHRvIGJlIGpvaW5lZCwgdXNp
bmcgdGhlIHNhbWUgZm9ybWF0dGluZyB0aGF0IGBhYnNsOjpTdHJDYXQoKWAgdXNlcy4gVGhpcwog
Ly8gcGFja2FnZSBkZWZpbmVzIGEgbnVtYmVyIG9mIGRlZmF1bHQgZm9ybWF0dGVycywgYW5kIHlv
dSBjYW4gZGVmaW5lIHlvdXIgb3duCiAvLyBpbXBsZW1lbnRhdGlvbnMuCkBAIC0yOSw3ICsyOSw3
IEBACiAvLyBSYW5nZXMgYXJlIHNwZWNpZmllZCBieSBwYXNzaW5nIGEgY29udGFpbmVyIHdpdGgg
YHN0ZDo6YmVnaW4oKWAgYW5kCiAvLyBgc3RkOjplbmQoKWAgaXRlcmF0b3JzLCBjb250YWluZXIt
c3BlY2lmaWMgYGJlZ2luKClgIGFuZCBgZW5kKClgIGl0ZXJhdG9ycywgYQogLy8gYnJhY2UtaW5p
dGlhbGl6ZWQgYHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdGAsIG9yIGEgYHN0ZDo6dHVwbGVgIG9mIGhl
dGVyb2dlbmVvdXMKLS8vIG9iamVjdHMuIFRoZSBzZXBhcmF0b3Igc3RkOjpzdHJpbmcgaXMgc3Bl
Y2lmaWVkIGFzIGFuIGBhYnNsOjpzdHJpbmdfdmlld2AuCisvLyBvYmplY3RzLiBUaGUgc2VwYXJh
dG9yIHN0cmluZyBpcyBzcGVjaWZpZWQgYXMgYW4gYGFic2w6OnN0cmluZ192aWV3YC4KIC8vCiAv
LyBCZWNhdXNlIHRoZSBkZWZhdWx0IGZvcm1hdHRlciB1c2VzIHRoZSBgYWJzbDo6QWxwaGFOdW1g
IGNsYXNzLAogLy8gYGFic2w6OlN0ckpvaW4oKWAsIGxpa2UgYGFic2w6OlN0ckNhdCgpYCwgd2ls
bCB3b3JrIG91dC1vZi10aGUtYm94IG9uCkBAIC0zNyw4ICszNyw4IEBACiAvLwogLy8gRXhhbXBs
ZToKIC8vCi0vLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ID0geyJmb28iLCAiYmFyIiwg
ImJheiJ9OwotLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RySm9pbih2LCAiLSIpOworLy8g
ICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHYgPSB7ImZvbyIsICJiYXIiLCAiYmF6In07CisvLyAgIHN0
cmluZyBzID0gYWJzbDo6U3RySm9pbih2LCAiLSIpOwogLy8gICBFWFBFQ1RfRVEoImZvby1iYXIt
YmF6Iiwgcyk7CiAvLwogLy8gU2VlIGNvbW1lbnRzIG9uIHRoZSBgYWJzbDo6U3RySm9pbigpYCBm
dW5jdGlvbiBmb3IgbW9yZSBleGFtcGxlcy4KQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlIDxp
dGVyYXRvcj4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9t
YWNyb3MuaCIKQEAgLTY1LDE2ICs2NiwxNiBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogLy8KIC8vIEEgRm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb2JqZWN0IHRo
YXQgaXMgcmVzcG9uc2libGUgZm9yIGZvcm1hdHRpbmcgaXRzCi0vLyBhcmd1bWVudCBhcyBhIHN0
ZDo6c3RyaW5nIGFuZCBhcHBlbmRpbmcgaXQgdG8gYSBnaXZlbiBvdXRwdXQgc3RkOjpzdHJpbmcu
IEZvcm1hdHRlcnMKKy8vIGFyZ3VtZW50IGFzIGEgc3RyaW5nIGFuZCBhcHBlbmRpbmcgaXQgdG8g
YSBnaXZlbiBvdXRwdXQgc3RyaW5nLiBGb3JtYXR0ZXJzCiAvLyBtYXkgYmUgaW1wbGVtZW50ZWQg
YXMgZnVuY3Rpb24gb2JqZWN0cywgbGFtYmRhcywgb3Igbm9ybWFsIGZ1bmN0aW9ucy4gWW91IG1h
eQogLy8gcHJvdmlkZSB5b3VyIG93biBGb3JtYXR0ZXIgdG8gZW5hYmxlIGBhYnNsOjpTdHJKb2lu
KClgIHRvIHdvcmsgd2l0aCBhcmJpdHJhcnkKIC8vIHR5cGVzLgogLy8KIC8vIFRoZSBmb2xsb3dp
bmcgaXMgYW4gZXhhbXBsZSBvZiBhIGN1c3RvbSBGb3JtYXR0ZXIgdGhhdCBzaW1wbHkgdXNlcwot
Ly8gYHN0ZDo6dG9fc3RyaW5nKClgIHRvIGZvcm1hdCBhbiBpbnRlZ2VyIGFzIGEgc3RkOjpzdHJp
bmcuCisvLyBgc3RkOjp0b19zdHJpbmcoKWAgdG8gZm9ybWF0IGFuIGludGVnZXIgYXMgYSBzdHJp
bmcuCiAvLwogLy8gICBzdHJ1Y3QgTXlGb3JtYXR0ZXIgewotLy8gICAgIHZvaWQgb3BlcmF0b3Io
KShzdGQ6OnN0cmluZyogb3V0LCBpbnQgaSkgY29uc3QgeworLy8gICAgIHZvaWQgb3BlcmF0b3Io
KShzdHJpbmcqIG91dCwgaW50IGkpIGNvbnN0IHsKIC8vICAgICAgIG91dC0+YXBwZW5kKHN0ZDo6
dG9fc3RyaW5nKGkpKTsKIC8vICAgICB9CiAvLyAgIH07CkBAIC04Myw3ICs4NCw3IEBAIG5hbWVz
cGFjZSBhYnNsIHsKIC8vIGFyZ3VtZW50IHRvIGBhYnNsOjpTdHJKb2luKClgOgogLy8KIC8vICAg
c3RkOjp2ZWN0b3I8aW50PiB2ID0gezEsIDIsIDMsIDR9OwotLy8gICBzdGQ6OnN0cmluZyBzID0g
YWJzbDo6U3RySm9pbih2LCAiLSIsIE15Rm9ybWF0dGVyKCkpOworLy8gICBzdHJpbmcgcyA9IGFi
c2w6OlN0ckpvaW4odiwgIi0iLCBNeUZvcm1hdHRlcigpKTsKIC8vICAgRVhQRUNUX0VRKCIxLTIt
My00Iiwgcyk7CiAvLwogLy8gVGhlIGZvbGxvd2luZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGFyZSBw
cm92aWRlZCB3aXRoaW4gdGhpcyBmaWxlOgpAQCAtMTU1LDEwICsxNTYsMTAgQEAgRGVyZWZlcmVu
Y2VGb3JtYXR0ZXIoKSB7CiAvLyBTdHJKb2luKCkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAv
LwotLy8gSm9pbnMgYSByYW5nZSBvZiBlbGVtZW50cyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFz
IGEgc3RkOjpzdHJpbmcuCi0vLyBgYWJzbDo6U3RySm9pbigpYCB0YWtlcyBhIHJhbmdlLCBhIHNl
cGFyYXRvciBzdGQ6OnN0cmluZyB0byB1c2UgYmV0d2VlbiB0aGUKKy8vIEpvaW5zIGEgcmFuZ2Ug
b2YgZWxlbWVudHMgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIHN0cmluZy4KKy8vIGBhYnNs
OjpTdHJKb2luKClgIHRha2VzIGEgcmFuZ2UsIGEgc2VwYXJhdG9yIHN0cmluZyB0byB1c2UgYmV0
d2VlbiB0aGUKIC8vIGVsZW1lbnRzIGpvaW5lZCwgYW5kIGFuIG9wdGlvbmFsIEZvcm1hdHRlciBy
ZXNwb25zaWJsZSBmb3IgY29udmVydGluZyBlYWNoCi0vLyBhcmd1bWVudCBpbiB0aGUgcmFuZ2Ug
dG8gYSBzdGQ6OnN0cmluZy4KKy8vIGFyZ3VtZW50IGluIHRoZSByYW5nZSB0byBhIHN0cmluZy4K
IC8vCiAvLyBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBgQWxwaGFOdW1Gb3JtYXR0ZXIoKWAgaXMg
Y2FsbGVkIG9uIHRoZSBlbGVtZW50cyB0byBiZQogLy8gam9pbmVkLgpAQCAtMTY2LDIyICsxNjcs
MjIgQEAgRGVyZWZlcmVuY2VGb3JtYXR0ZXIoKSB7CiAvLyBFeGFtcGxlIDE6CiAvLyAgIC8vIEpv
aW5zIGEgY29sbGVjdGlvbiBvZiBzdHJpbmdzLiBUaGlzIHBhdHRlcm4gYWxzbyB3b3JrcyB3aXRo
IGEgY29sbGVjdGlvbgogLy8gICAvLyBvZiBgYWJzbDo6c3RyaW5nX3ZpZXdgIG9yIGV2ZW4gYGNv
bnN0IGNoYXIqYC4KLS8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSB7ImZvbyIsICJi
YXIiLCAiYmF6In07Ci0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7
CisvLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdiA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKKy8v
ICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiZm9v
LWJhci1iYXoiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDI6CiAvLyAgIC8vIEpvaW5zIHRoZSB2YWx1
ZXMgaW4gdGhlIGdpdmVuIGBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8PmAgc3BlY2lmaWVkIHVzaW5n
CiAvLyAgIC8vIGJyYWNlIGluaXRpYWxpemF0aW9uLiBUaGlzIHBhdHRlcm4gYWxzbyB3b3JrcyB3
aXRoIGFuIGluaXRpYWxpemVyX2xpc3QKIC8vICAgLy8gb2YgaW50cyBvciBgYWJzbDo6c3RyaW5n
X3ZpZXdgIC0tIGFueSBgQWxwaGFOdW1gLWNvbXBhdGlibGUgdHlwZS4KLS8vICAgc3RkOjpzdHJp
bmcgcyA9IGFic2w6OlN0ckpvaW4oeyJmb28iLCAiYmFyIiwgImJheiJ9LCAiLSIpOworLy8gICBz
dHJpbmcgcyA9IGFic2w6OlN0ckpvaW4oeyJmb28iLCAiYmFyIiwgImJheiJ9LCAiLSIpOwogLy8g
ICBFWFBFQ1RfRVEoImZvby1iYXItYmF6Iiwgcyk7CiAvLwogLy8gRXhhbXBsZSAzOgogLy8gICAv
LyBKb2lucyBhIGNvbGxlY3Rpb24gb2YgaW50cy4gVGhpcyBwYXR0ZXJuIGFsc28gd29ya3Mgd2l0
aCBmbG9hdHMsCiAvLyAgIC8vIGRvdWJsZXMsIGludDY0cyAtLSBhbnkgYFN0ckNhdCgpYC1jb21w
YXRpYmxlIHR5cGUuCiAvLyAgIHN0ZDo6dmVjdG9yPGludD4gdiA9IHsxLCAyLCAzLCAtNH07Ci0v
LyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CisvLyAgIHN0cmluZyBz
ID0gYWJzbDo6U3RySm9pbih2LCAiLSIpOwogLy8gICBFWFBFQ1RfRVEoIjEtMi0zLS00Iiwgcyk7
CiAvLwogLy8gRXhhbXBsZSA0OgpAQCAtMTkyLDcgKzE5Myw3IEBAIERlcmVmZXJlbmNlRm9ybWF0
dGVyKCkgewogLy8gICAvLyBgc3RkOjp2ZWN0b3I8aW50Kj5gLgogLy8gICBpbnQgeCA9IDEsIHkg
PSAyLCB6ID0gMzsKIC8vICAgc3RkOjp2ZWN0b3I8aW50Kj4gdiA9IHsmeCwgJnksICZ6fTsKLS8v
ICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3RyaW5nIHMg
PSBhYnNsOjpTdHJKb2luKHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiMS0yLTMiLCBzKTsKIC8v
CiAvLyBFeGFtcGxlIDU6CkBAIC0yMDEsNDIgKzIwMiw0MiBAQCBEZXJlZmVyZW5jZUZvcm1hdHRl
cigpIHsKIC8vICAgdi5lbXBsYWNlX2JhY2sobmV3IGludCgxKSk7CiAvLyAgIHYuZW1wbGFjZV9i
YWNrKG5ldyBpbnQoMikpOwogLy8gICB2LmVtcGxhY2VfYmFjayhuZXcgaW50KDMpKTsKLS8vICAg
c3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3RyaW5nIHMgPSBh
YnNsOjpTdHJKb2luKHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiMS0yLTMiLCBzKTsKIC8vCiAv
LyBFeGFtcGxlIDY6CiAvLyAgIC8vIEpvaW5zIGEgYHN0ZDo6bWFwYCwgd2l0aCBlYWNoIGtleS12
YWx1ZSBwYWlyIHNlcGFyYXRlZCBieSBhbiBlcXVhbHMKIC8vICAgLy8gc2lnbi4gVGhpcyBwYXR0
ZXJuIHdvdWxkIGFsc28gd29yayB3aXRoLCBzYXksIGEKIC8vICAgLy8gYHN0ZDo6dmVjdG9yPHN0
ZDo6cGFpcjw+PmAuCi0vLyAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IG0gPSB7CisvLyAg
IHN0ZDo6bWFwPHN0cmluZywgaW50PiBtID0gewogLy8gICAgICAgc3RkOjptYWtlX3BhaXIoImEi
LCAxKSwKIC8vICAgICAgIHN0ZDo6bWFrZV9wYWlyKCJiIiwgMiksCiAvLyAgICAgICBzdGQ6Om1h
a2VfcGFpcigiYyIsIDMpfTsKLS8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4obSwg
IiwiLCBhYnNsOjpQYWlyRm9ybWF0dGVyKCI9IikpOworLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0
ckpvaW4obSwgIiwiLCBhYnNsOjpQYWlyRm9ybWF0dGVyKCI9IikpOwogLy8gICBFWFBFQ1RfRVEo
ImE9MSxiPTIsYz0zIiwgcyk7CiAvLwogLy8gRXhhbXBsZSA3OgogLy8gICAvLyBUaGVzZSBleGFt
cGxlcyBzaG93IGhvdyBgYWJzbDo6U3RySm9pbigpYCBoYW5kbGVzIGEgZmV3IGNvbW1vbiBlZGdl
CiAvLyAgIC8vIGNhc2VzOgotLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdl9lbXB0eTsK
Ky8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiB2X2VtcHR5OwogLy8gICBFWFBFQ1RfRVEoIiIsIGFi
c2w6OlN0ckpvaW4odl9lbXB0eSwgIi0iKSk7CiAvLwotLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gdl9vbmVfaXRlbSA9IHsiZm9vIn07CisvLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdl9v
bmVfaXRlbSA9IHsiZm9vIn07CiAvLyAgIEVYUEVDVF9FUSgiZm9vIiwgYWJzbDo6U3RySm9pbih2
X29uZV9pdGVtLCAiLSIpKTsKIC8vCi0vLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2X2Vt
cHR5X3N0cmluZyA9IHsiIn07CisvLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdl9lbXB0eV9zdHJp
bmcgPSB7IiJ9OwogLy8gICBFWFBFQ1RfRVEoIiIsIGFic2w6OlN0ckpvaW4odl9lbXB0eV9zdHJp
bmcsICItIikpOwogLy8KLS8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHZfb25lX2l0ZW1f
ZW1wdHlfc3RyaW5nID0geyJhIiwgIiJ9OworLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHZfb25l
X2l0ZW1fZW1wdHlfc3RyaW5nID0geyJhIiwgIiJ9OwogLy8gICBFWFBFQ1RfRVEoImEtIiwgYWJz
bDo6U3RySm9pbih2X29uZV9pdGVtX2VtcHR5X3N0cmluZywgIi0iKSk7CiAvLwotLy8gICBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gdl90d29fZW1wdHlfc3RyaW5nID0geyIiLCAiIn07CisvLyAg
IHN0ZDo6dmVjdG9yPHN0cmluZz4gdl90d29fZW1wdHlfc3RyaW5nID0geyIiLCAiIn07CiAvLyAg
IEVYUEVDVF9FUSgiLSIsIGFic2w6OlN0ckpvaW4odl90d29fZW1wdHlfc3RyaW5nLCAiLSIpKTsK
IC8vCiAvLyBFeGFtcGxlIDg6CiAvLyAgIC8vIEpvaW5zIGEgYHN0ZDo6dHVwbGU8VC4uLj5gIG9m
IGhldGVyb2dlbmVvdXMgdHlwZXMsIGNvbnZlcnRpbmcgZWFjaCB0bwotLy8gICAvLyBhIHN0ZDo6
c3RyaW5nIHVzaW5nIHRoZSBgYWJzbDo6QWxwaGFOdW1gIGNsYXNzLgotLy8gICBzdGQ6OnN0cmlu
ZyBzID0gYWJzbDo6U3RySm9pbihzdGQ6Om1ha2VfdHVwbGUoMTIzLCAiYWJjIiwgMC40NTYpLCAi
LSIpOworLy8gICAvLyBhIHN0cmluZyB1c2luZyB0aGUgYGFic2w6OkFscGhhTnVtYCBjbGFzcy4K
Ky8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHN0ZDo6bWFrZV90dXBsZSgxMjMsICJhYmMi
LCAwLjQ1NiksICItIik7CiAvLyAgIEVYUEVDVF9FUSgiMTIzLWFiYy0wLjQ1NiIsIHMpOwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIEZvcm1hdHRlcj4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxh
Y2UuaAppbmRleCBmNGQ5YmI5NTQ1ZDY4OTc2MjE4MGExYTQzMGU2NGI1MDY1YmNmMjdjLi4zYmZl
NGM2MWViZDE1MDRkM2M4ZWI4ZTUwYmE4NzBmYThmYTY4OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL3N0cl9yZXBsYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZS5oCkBA
IC0xNywxOSArMTcsMTkgQEAKIC8vIEZpbGU6IHN0cl9yZXBsYWNlLmgKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAvLwotLy8gVGhpcyBmaWxlIGRlZmluZXMgYGFic2w6OlN0clJlcGxhY2VBbGwo
KWAsIGEgZ2VuZXJhbC1wdXJwb3NlIHN0ZDo6c3RyaW5nCisvLyBUaGlzIGZpbGUgZGVmaW5lcyBg
YWJzbDo6U3RyUmVwbGFjZUFsbCgpYCwgYSBnZW5lcmFsLXB1cnBvc2Ugc3RyaW5nCiAvLyByZXBs
YWNlbWVudCBmdW5jdGlvbiBkZXNpZ25lZCBmb3IgbGFyZ2UsIGFyYml0cmFyeSB0ZXh0IHN1YnN0
aXR1dGlvbnMsCiAvLyBlc3BlY2lhbGx5IG9uIHN0cmluZ3Mgd2hpY2ggeW91IGFyZSByZWNlaXZp
bmcgZnJvbSBzb21lIG90aGVyIHN5c3RlbSBmb3IKIC8vIGZ1cnRoZXIgcHJvY2Vzc2luZyAoZS5n
LiBwcm9jZXNzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIGVzY2FwaW5nIEhUTUwKLS8vIGVudGl0
aWVzLCBldGMuIGBTdHJSZXBsYWNlQWxsYCBpcyBkZXNpZ25lZCB0byBiZSBlZmZpY2llbnQgZXZl
biB3aGVuIG9ubHkKKy8vIGVudGl0aWVzLCBldGMuKS4gYFN0clJlcGxhY2VBbGxgIGlzIGRlc2ln
bmVkIHRvIGJlIGVmZmljaWVudCBldmVuIHdoZW4gb25seQogLy8gb25lIHN1YnN0aXR1dGlvbiBp
cyBiZWluZyBwZXJmb3JtZWQsIG9yIHdoZW4gc3Vic3RpdHV0aW9uIGlzIHJhcmUuCiAvLwotLy8g
SWYgdGhlIHN0ZDo6c3RyaW5nIGJlaW5nIG1vZGlmaWVkIGlzIGtub3duIGF0IGNvbXBpbGUtdGlt
ZSwgYW5kIHRoZSBzdWJzdGl0dXRpb25zCisvLyBJZiB0aGUgc3RyaW5nIGJlaW5nIG1vZGlmaWVk
IGlzIGtub3duIGF0IGNvbXBpbGUtdGltZSwgYW5kIHRoZSBzdWJzdGl0dXRpb25zCiAvLyB2YXJ5
LCBgYWJzbDo6U3Vic3RpdHV0ZSgpYCBtYXkgYmUgYSBiZXR0ZXIgY2hvaWNlLgogLy8KIC8vIEV4
YW1wbGU6CiAvLwotLy8gc3RkOjpzdHJpbmcgaHRtbF9lc2NhcGVkID0gYWJzbDo6U3RyUmVwbGFj
ZUFsbCh1c2VyX2lucHV0LCB7CisvLyBzdHJpbmcgaHRtbF9lc2NhcGVkID0gYWJzbDo6U3RyUmVw
bGFjZUFsbCh1c2VyX2lucHV0LCB7CiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7IiYiLCAiJmFtcDsifSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsiPCIsICImbHQ7In0sCiAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7Ij4iLCAiJmd0OyJ9LApAQCAtNDksMTYgKzQ5LDE2IEBAIG5h
bWVzcGFjZSBhYnNsIHsKIAogLy8gU3RyUmVwbGFjZUFsbCgpCiAvLwotLy8gUmVwbGFjZXMgY2hh
cmFjdGVyIHNlcXVlbmNlcyB3aXRoaW4gYSBnaXZlbiBzdGQ6OnN0cmluZyB3aXRoIHJlcGxhY2Vt
ZW50cyBwcm92aWRlZAorLy8gUmVwbGFjZXMgY2hhcmFjdGVyIHNlcXVlbmNlcyB3aXRoaW4gYSBn
aXZlbiBzdHJpbmcgd2l0aCByZXBsYWNlbWVudHMgcHJvdmlkZWQKIC8vIHdpdGhpbiBhbiBpbml0
aWFsaXplciBsaXN0IG9mIGtleS92YWx1ZSBwYWlycy4gQ2FuZGlkYXRlIHJlcGxhY2VtZW50cyBh
cmUKLS8vIGNvbnNpZGVyZWQgaW4gb3JkZXIgYXMgdGhleSBvY2N1ciB3aXRoaW4gdGhlIHN0ZDo6
c3RyaW5nLCB3aXRoIGVhcmxpZXIgbWF0Y2hlcworLy8gY29uc2lkZXJlZCBpbiBvcmRlciBhcyB0
aGV5IG9jY3VyIHdpdGhpbiB0aGUgc3RyaW5nLCB3aXRoIGVhcmxpZXIgbWF0Y2hlcwogLy8gdGFr
aW5nIHByZWNlZGVuY2UsIGFuZCBsb25nZXIgbWF0Y2hlcyB0YWtpbmcgcHJlY2VkZW5jZSBmb3Ig
Y2FuZGlkYXRlcwotLy8gc3RhcnRpbmcgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHN0ZDo6
c3RyaW5nLiBPbmNlIGEgc3Vic3RpdHV0aW9uIGlzIG1hZGUsIHRoZQorLy8gc3RhcnRpbmcgYXQg
dGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHN0cmluZy4gT25jZSBhIHN1YnN0aXR1dGlvbiBpcyBt
YWRlLCB0aGUKIC8vIHJlcGxhY2VkIHRleHQgaXMgbm90IGNvbnNpZGVyZWQgZm9yIGFueSBmdXJ0
aGVyIHN1YnN0aXR1dGlvbnMuCiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIHN0ZDo6c3RyaW5n
IHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCIkd2hvIGJvdWdodCAkY291bnQgI05vdW4uIFRoYW5r
cyAkd2hvISIsCisvLyAgIHN0cmluZyBzID0gYWJzbDo6U3RyUmVwbGFjZUFsbCgiJHdobyBib3Vn
aHQgJGNvdW50ICNOb3VuLiBUaGFua3MgJHdobyEiLAogLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge3siJGNvdW50IiwgYWJzbDo6U3RyQ2F0KDUpfSwKIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7IiR3aG8iLCAiQm9iIn0sCiAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeyIjTm91biIsICJBcHBsZXMifX0pOwpAQCAtNzgsMjggKzc4
LDI4IEBAIEFCU0xfTVVTVF9VU0VfUkVTVUxUIHN0ZDo6c3RyaW5nIFN0clJlcGxhY2VBbGwoCiAv
LyAgIHJlcGxhY2VtZW50c1siJHdobyJdID0gIkJvYiI7CiAvLyAgIHJlcGxhY2VtZW50c1siJGNv
dW50Il0gPSAiNSI7CiAvLyAgIHJlcGxhY2VtZW50c1siI05vdW4iXSA9ICJBcHBsZXMiOwotLy8g
ICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RyUmVwbGFjZUFsbCgiJHdobyBib3VnaHQgJGNvdW50
ICNOb3VuLiBUaGFua3MgJHdobyEiLAorLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0clJlcGxhY2VB
bGwoIiR3aG8gYm91Z2h0ICRjb3VudCAjTm91bi4gVGhhbmtzICR3aG8hIiwKIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50cyk7CiAvLyAgIEVYUEVDVF9FUSgi
Qm9iIGJvdWdodCA1IEFwcGxlcy4gVGhhbmtzIEJvYiEiLCBzKTsKIC8vCiAvLyAgIC8vIEEgc3Rk
Ojp2ZWN0b3Igb2Ygc3RkOjpwYWlyIGVsZW1lbnRzIGNhbiBiZSBtb3JlIGVmZmljaWVudC4KLS8v
ICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGNvbnN0IGFic2w6OnN0cmluZ192aWV3LCBzdGQ6OnN0
cmluZz4+IHJlcGxhY2VtZW50czsKKy8vICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGNvbnN0IGFi
c2w6OnN0cmluZ192aWV3LCBzdHJpbmc+PiByZXBsYWNlbWVudHM7CiAvLyAgIHJlcGxhY2VtZW50
cy5wdXNoX2JhY2soeyImIiwgIiZhbXA7In0pOwogLy8gICByZXBsYWNlbWVudHMucHVzaF9iYWNr
KHsiPCIsICImbHQ7In0pOwogLy8gICByZXBsYWNlbWVudHMucHVzaF9iYWNrKHsiPiIsICImZ3Q7
In0pOwotLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RyUmVwbGFjZUFsbCgiaWYgKHB0ciA8
ICZmb28pIiwKKy8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCJpZiAocHRyIDwg
JmZvbykiLAogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRz
KTsKIC8vICAgRVhQRUNUX0VRKCJpZiAocHRyICZsdDsgJmFtcDtmb28pIiwgcyk7CiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgU3RyVG9TdHJNYXBwaW5nPgogc3RkOjpzdHJpbmcgU3RyUmVwbGFjZUFsbChh
YnNsOjpzdHJpbmdfdmlldyBzLCBjb25zdCBTdHJUb1N0ck1hcHBpbmcmIHJlcGxhY2VtZW50cyk7
CiAKIC8vIE92ZXJsb2FkIG9mIGBTdHJSZXBsYWNlQWxsKClgIHRvIHJlcGxhY2UgY2hhcmFjdGVy
IHNlcXVlbmNlcyB3aXRoaW4gYSBnaXZlbgotLy8gb3V0cHV0IHN0ZDo6c3RyaW5nICppbiBwbGFj
ZSogd2l0aCByZXBsYWNlbWVudHMgcHJvdmlkZWQgd2l0aGluIGFuIGluaXRpYWxpemVyCisvLyBv
dXRwdXQgc3RyaW5nICppbiBwbGFjZSogd2l0aCByZXBsYWNlbWVudHMgcHJvdmlkZWQgd2l0aGlu
IGFuIGluaXRpYWxpemVyCiAvLyBsaXN0IG9mIGtleS92YWx1ZSBwYWlycywgcmV0dXJuaW5nIHRo
ZSBudW1iZXIgb2Ygc3Vic3RpdHV0aW9ucyB0aGF0IG9jY3VycmVkLgogLy8KIC8vIEV4YW1wbGU6
CiAvLwotLy8gICBzdGQ6OnN0cmluZyBzID0gc3RkOjpzdHJpbmcoIiR3aG8gYm91Z2h0ICRjb3Vu
dCAjTm91bi4gVGhhbmtzICR3aG8hIik7CisvLyAgIHN0cmluZyBzID0gc3RkOjpzdHJpbmcoIiR3
aG8gYm91Z2h0ICRjb3VudCAjTm91bi4gVGhhbmtzICR3aG8hIik7CiAvLyAgIGludCBjb3VudDsK
IC8vICAgY291bnQgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKHt7IiRjb3VudCIsIGFic2w6OlN0ckNh
dCg1KX0sCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IiR3aG8iLCAiQm9iIn0s
CkBAIC0xMTIsMTIgKzExMiwxMiBAQCBpbnQgU3RyUmVwbGFjZUFsbCgKICAgICBzdGQ6OnN0cmlu
ZyogdGFyZ2V0KTsKIAogLy8gT3ZlcmxvYWQgb2YgYFN0clJlcGxhY2VBbGwoKWAgdG8gcmVwbGFj
ZSBwYXR0ZXJucyB3aXRoaW4gYSBnaXZlbiBvdXRwdXQKLS8vIHN0ZDo6c3RyaW5nICppbiBwbGFj
ZSogd2l0aCByZXBsYWNlbWVudHMgcHJvdmlkZWQgd2l0aGluIGEgY29udGFpbmVyIG9mIGtleS92
YWx1ZQorLy8gc3RyaW5nICppbiBwbGFjZSogd2l0aCByZXBsYWNlbWVudHMgcHJvdmlkZWQgd2l0
aGluIGEgY29udGFpbmVyIG9mIGtleS92YWx1ZQogLy8gcGFpcnMuCiAvLwogLy8gRXhhbXBsZToK
IC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBzdGQ6OnN0cmluZygiaWYgKHB0ciA8ICZmb28pIik7
CisvLyAgIHN0cmluZyBzID0gc3RkOjpzdHJpbmcoImlmIChwdHIgPCAmZm9vKSIpOwogLy8gICBp
bnQgY291bnQgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKHt7IiYiLCAiJmFtcDsifSwKIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyI8IiwgIiZsdDsifSwKIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyI+IiwgIiZndDsifX0sICZzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2VfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdHJfcmVwbGFjZV9iZW5jaG1hcmsuY2MKaW5kZXggZTYwOGRlOGQxOWU0MWJhNzNjM2Q1NGZm
YTM3NjQzYzcyYmU4MDJkYi4uODM4NmYyZTZiZjEwZWNlNDZiYTQ3OWFlMjUzZDg3OTY2N2M1ZTFm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV9iZW5jaG1hcmsuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV9iZW5jaG1hcmsuY2MKQEAgLTM4LDE2ICszOCwx
NiBAQCBzdHJ1Y3QgUmVwbGFjZW1lbnQgewogICAgIHsibGlxdW9yIiwgInNoYWtlcyJ9LCAgICAv
LwogfTsKIAotLy8gSGVyZSwgd2Ugc2V0IHVwIGEgc3RkOjpzdHJpbmcgZm9yIHVzZSBpbiBnbG9i
YWwtcmVwbGFjZSBiZW5jaG1hcmtzLgorLy8gSGVyZSwgd2Ugc2V0IHVwIGEgc3RyaW5nIGZvciB1
c2UgaW4gZ2xvYmFsLXJlcGxhY2UgYmVuY2htYXJrcy4KIC8vIFdlIHN0YXJ0ZWQgd2l0aCBhIG1p
bGxpb24gYmxhbmtzLCBhbmQgdGhlbiBkZXRlcm1pbmlzdGljYWxseSBpbnNlcnQKLS8vIDEwLDAw
MCBjb3BpZXMgZWFjaCBvZiB0d28gcGFuZ3JhbXMuICBUaGUgcmVzdWx0IGlzIGEgc3RkOjpzdHJp
bmcgdGhhdCBpcworLy8gMTAsMDAwIGNvcGllcyBlYWNoIG9mIHR3byBwYW5ncmFtcy4gIFRoZSBy
ZXN1bHQgaXMgYSBzdHJpbmcgdGhhdCBpcwogLy8gNDAlIGJsYW5rIHNwYWNlIGFuZCA2MCUgdGhl
c2Ugd29yZHMuICAndGhlJyBvY2N1cnMgMTgsMjQ3IHRpbWVzIGFuZAogLy8gYWxsIHRoZSBzdWJz
dGl0dXRpb25zIHRvZ2V0aGVyIG9jY3VyIDQ5LDAwNCB0aW1lcy4KIC8vCi0vLyBXZSB0aGVuIGNy
ZWF0ZSAiYWZ0ZXJfcmVwbGFjaW5nX3RoZSIgdG8gYmUgYSBzdGQ6OnN0cmluZyB0aGF0IGlzIGEg
cmVzdWx0IG9mCisvLyBXZSB0aGVuIGNyZWF0ZSAiYWZ0ZXJfcmVwbGFjaW5nX3RoZSIgdG8gYmUg
YSBzdHJpbmcgdGhhdCBpcyBhIHJlc3VsdCBvZgogLy8gcmVwbGFjaW5nICJ0aGUiIHdpdGggImJv
eCIgaW4gYmlnX3N0cmluZy4KIC8vCi0vLyBBbmQgdGhlbiB3ZSBjcmVhdGUgImFmdGVyX3JlcGxh
Y2luZ19tYW55IiB0byBiZSBhIHN0ZDo6c3RyaW5nIHRoYXQgaXMgcmVzdWx0CisvLyBBbmQgdGhl
biB3ZSBjcmVhdGUgImFmdGVyX3JlcGxhY2luZ19tYW55IiB0byBiZSBhIHN0cmluZyB0aGF0IGlz
IHJlc3VsdAogLy8gb2YgcHJlZmVycmluZyBzZXZlcmFsIHN1YnN0aXR1dGlvbnMuCiB2b2lkIFNl
dFVwU3RyaW5ncygpIHsKICAgaWYgKGJpZ19zdHJpbmcgPT0gbnVsbHB0cikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5j
YwppbmRleCAwMjA3MjEzYzI2YmFmOTEzZDk5ODE0OTc5NDNkNzg2N2ExY2RlZWVhLi4wYTY4YzUy
ZDE0ZjE5Yjg4ZDNhZGQyZTM3MjI3YzUxM2M1OWQxMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL3N0cl9zcGxpdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5jYwpAQCAtNDMs
MTAgKzQzLDExIEBAIGFic2w6OnN0cmluZ192aWV3IEdlbmVyaWNGaW5kKGFic2w6OnN0cmluZ192
aWV3IHRleHQsCiAgIGlmIChkZWxpbWl0ZXIuZW1wdHkoKSAmJiB0ZXh0Lmxlbmd0aCgpID4gMCkg
ewogICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RkOjpzdHJpbmcgZGVsaW1pdGVyczog
YWx3YXlzIHJldHVybiBhIHplcm8tbGVuZ3RoCiAgICAgLy8gYWJzbDo6c3RyaW5nX3ZpZXcgcmVm
ZXJyaW5nIHRvIHRoZSBpdGVtIGF0IHBvc2l0aW9uIDEgcGFzdCBwb3MuCi0gICAgcmV0dXJuIGFi
c2w6OnN0cmluZ192aWV3KHRleHQuYmVnaW4oKSArIHBvcyArIDEsIDApOworICAgIHJldHVybiBh
YnNsOjpzdHJpbmdfdmlldyh0ZXh0LmRhdGEoKSArIHBvcyArIDEsIDApOwogICB9CiAgIHNpemVf
dCBmb3VuZF9wb3MgPSBhYnNsOjpzdHJpbmdfdmlldzo6bnBvczsKLSAgYWJzbDo6c3RyaW5nX3Zp
ZXcgZm91bmQodGV4dC5lbmQoKSwgMCk7ICAvLyBCeSBkZWZhdWx0LCBub3QgZm91bmQKKyAgYWJz
bDo6c3RyaW5nX3ZpZXcgZm91bmQodGV4dC5kYXRhKCkgKyB0ZXh0LnNpemUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCk7ICAvLyBCeSBkZWZhdWx0LCBub3QgZm91bmQKICAgZm91bmRf
cG9zID0gZmluZF9wb2xpY3kuRmluZCh0ZXh0LCBkZWxpbWl0ZXIsIHBvcyk7CiAgIGlmIChmb3Vu
ZF9wb3MgIT0gYWJzbDo6c3RyaW5nX3ZpZXc6Om5wb3MpIHsKICAgICBmb3VuZCA9IGFic2w6OnN0
cmluZ192aWV3KHRleHQuZGF0YSgpICsgZm91bmRfcG9zLApAQCAtODcsNyArODgsNyBAQCBhYnNs
OjpzdHJpbmdfdmlldyBCeVN0cmluZzo6RmluZChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBzaXpl
X3QgcG9zKSBjb25zdCB7CiAgICAgLy8gYWJzbDo6c3RyaW5nX3ZpZXcuCiAgICAgc2l6ZV90IGZv
dW5kX3BvcyA9IHRleHQuZmluZChkZWxpbWl0ZXJfWzBdLCBwb3MpOwogICAgIGlmIChmb3VuZF9w
b3MgPT0gYWJzbDo6c3RyaW5nX3ZpZXc6Om5wb3MpCi0gICAgICByZXR1cm4gYWJzbDo6c3RyaW5n
X3ZpZXcodGV4dC5lbmQoKSwgMCk7CisgICAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcodGV4
dC5kYXRhKCkgKyB0ZXh0LnNpemUoKSwgMCk7CiAgICAgcmV0dXJuIHRleHQuc3Vic3RyKGZvdW5k
X3BvcywgMSk7CiAgIH0KICAgcmV0dXJuIEdlbmVyaWNGaW5kKHRleHQsIGRlbGltaXRlcl8sIHBv
cywgTGl0ZXJhbFBvbGljeSgpKTsKQEAgLTEwMCw3ICsxMDEsNyBAQCBhYnNsOjpzdHJpbmdfdmll
dyBCeVN0cmluZzo6RmluZChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBzaXplX3QgcG9zKSBjb25z
dCB7CiBhYnNsOjpzdHJpbmdfdmlldyBCeUNoYXI6OkZpbmQoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4
dCwgc2l6ZV90IHBvcykgY29uc3QgewogICBzaXplX3QgZm91bmRfcG9zID0gdGV4dC5maW5kKGNf
LCBwb3MpOwogICBpZiAoZm91bmRfcG9zID09IGFic2w6OnN0cmluZ192aWV3OjpucG9zKQotICAg
IHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyh0ZXh0LmVuZCgpLCAwKTsKKyAgICByZXR1cm4gYWJz
bDo6c3RyaW5nX3ZpZXcodGV4dC5kYXRhKCkgKyB0ZXh0LnNpemUoKSwgMCk7CiAgIHJldHVybiB0
ZXh0LnN1YnN0cihmb3VuZF9wb3MsIDEpOwogfQogCkBAIC0xMjgsOSArMTI5LDkgQEAgYWJzbDo6
c3RyaW5nX3ZpZXcgQnlMZW5ndGg6OkZpbmQoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwKICAgLy8g
SWYgdGhlIHN0ZDo6c3RyaW5nIGlzIHNob3J0ZXIgdGhhbiB0aGUgY2h1bmsgc2l6ZSB3ZSBzYXkg
d2UKICAgLy8gImNhbid0IGZpbmQgdGhlIGRlbGltaXRlciIgc28gdGhpcyB3aWxsIGJlIHRoZSBs
YXN0IGNodW5rLgogICBpZiAoc3Vic3RyLmxlbmd0aCgpIDw9IHN0YXRpY19jYXN0PHNpemVfdD4o
bGVuZ3RoXykpCi0gICAgcmV0dXJuIGFic2w6OnN0cmluZ192aWV3KHRleHQuZW5kKCksIDApOwor
ICAgIHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyh0ZXh0LmRhdGEoKSArIHRleHQuc2l6ZSgpLCAw
KTsKIAotICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcoc3Vic3RyLmJlZ2luKCkgKyBsZW5ndGhf
LCAwKTsKKyAgcmV0dXJuIGFic2w6OnN0cmluZ192aWV3KHN1YnN0ci5kYXRhKCkgKyBsZW5ndGhf
LCAwKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyX3NwbGl0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5oCmluZGV4IDlhN2JlMmIw
NTM0NDI1ODcyYzI1ZTk4NmFlYmMyMWRiN2U3ZmI3NTYuLmM3ZWIyODBjNDExMzBhYjg2ZTM0MzM2
OWM3ZTVmYzkwY2Q2OWRlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQuaApAQCAtMTksMTMgKzE5LDEzIEBACiAvLwog
Ly8gVGhpcyBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3Igc3BsaXR0aW5nIHN0cmluZ3MuIEl0
IGRlZmluZXMgdGhlIG1haW4KIC8vIGBTdHJTcGxpdCgpYCBmdW5jdGlvbiwgc2V2ZXJhbCBkZWxp
bWl0ZXJzIGZvciBkZXRlcm1pbmluZyB0aGUgYm91bmRhcmllcyBvbgotLy8gd2hpY2ggdG8gc3Bs
aXQgdGhlIHN0ZDo6c3RyaW5nLCBhbmQgcHJlZGljYXRlcyBmb3IgZmlsdGVyaW5nIGRlbGltaXRl
ZCByZXN1bHRzLgorLy8gd2hpY2ggdG8gc3BsaXQgdGhlIHN0cmluZywgYW5kIHByZWRpY2F0ZXMg
Zm9yIGZpbHRlcmluZyBkZWxpbWl0ZWQgcmVzdWx0cy4KIC8vIGBTdHJTcGxpdCgpYCBhZGFwdHMg
dGhlIHJldHVybmVkIGNvbGxlY3Rpb24gdG8gdGhlIHR5cGUgc3BlY2lmaWVkIGJ5IHRoZQogLy8g
Y2FsbGVyLgogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICAvLyBTcGxpdHMgdGhlIGdpdmVuIHN0
ZDo6c3RyaW5nIG9uIGNvbW1hcy4gUmV0dXJucyB0aGUgcmVzdWx0cyBpbiBhCisvLyAgIC8vIFNw
bGl0cyB0aGUgZ2l2ZW4gc3RyaW5nIG9uIGNvbW1hcy4gUmV0dXJucyB0aGUgcmVzdWx0cyBpbiBh
CiAvLyAgIC8vIHZlY3RvciBvZiBzdHJpbmdzLgogLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gdiA9IGFic2w6OlN0clNwbGl0KCJhLGIsYyIsICcsJyk7CiAvLyAgIC8vIENhbiBhbHNvIHVz
ZSAiLCIKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIGFic2wgewogLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIC8vCiAvLyBgU3RyU3BsaXQoKWAgdXNlcyBkZWxpbWl0ZXJzIHRvIGRlZmluZSB0
aGUgYm91bmRhcmllcyBiZXR3ZWVuIGVsZW1lbnRzIGluIHRoZQotLy8gcHJvdmlkZWQgaW5wdXQu
IFNldmVyYWwgYERlbGltaXRlcmAgdHlwZXMgYXJlIGRlZmluZWQgYmVsb3cuIElmIGEgc3RkOjpz
dHJpbmcKKy8vIHByb3ZpZGVkIGlucHV0LiBTZXZlcmFsIGBEZWxpbWl0ZXJgIHR5cGVzIGFyZSBk
ZWZpbmVkIGJlbG93LiBJZiBhIHN0cmluZwogLy8gKGBjb25zdCBjaGFyKmAsIGBzdGQ6OnN0cmlu
Z2AsIG9yIGBhYnNsOjpzdHJpbmdfdmlld2ApIGlzIHBhc3NlZCBpbiBwbGFjZSBvZgogLy8gYW4g
ZXhwbGljaXQgYERlbGltaXRlcmAgb2JqZWN0LCBgU3RyU3BsaXQoKWAgdHJlYXRzIGl0IHRoZSBz
YW1lIHdheSBhcyBpZiBpdAogLy8gd2VyZSBwYXNzZWQgYSBgQnlTdHJpbmdgIGRlbGltaXRlci4K
QEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIGFic2wgewogLy8KIC8vIFRoZSBmb2xsb3dpbmcg
YERlbGltaXRlcmAgdHlwZXMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIHdpdGhpbiBgU3RyU3BsaXQo
KWA6CiAvLwotLy8gICAtIGBCeVN0cmluZ2AgKGRlZmF1bHQgZm9yIHN0ZDo6c3RyaW5nIGFyZ3Vt
ZW50cykKKy8vICAgLSBgQnlTdHJpbmdgIChkZWZhdWx0IGZvciBzdHJpbmcgYXJndW1lbnRzKQog
Ly8gICAtIGBCeUNoYXJgIChkZWZhdWx0IGZvciBhIGNoYXIgYXJndW1lbnQpCiAvLyAgIC0gYEJ5
QW55Q2hhcmAKIC8vICAgLSBgQnlMZW5ndGhgCkBAIC03NiwxNSArNzYsMTUgQEAgbmFtZXNwYWNl
IGFic2wgewogLy8gYmUgc3BsaXQgYW5kIHRoZSBwb3NpdGlvbiB0byBiZWdpbiBzZWFyY2hpbmcg
Zm9yIHRoZSBuZXh0IGRlbGltaXRlciBpbiB0aGUKIC8vIGlucHV0IHRleHQuIFRoZSByZXR1cm5l
ZCBhYnNsOjpzdHJpbmdfdmlldyBzaG91bGQgcmVmZXIgdG8gdGhlIG5leHQKIC8vIG9jY3VycmVu
Y2UgKGFmdGVyIHBvcykgb2YgdGhlIHJlcHJlc2VudGVkIGRlbGltaXRlcjsgdGhpcyByZXR1cm5l
ZAotLy8gYWJzbDo6c3RyaW5nX3ZpZXcgcmVwcmVzZW50cyB0aGUgbmV4dCBsb2NhdGlvbiB3aGVy
ZSB0aGUgaW5wdXQgc3RkOjpzdHJpbmcgc2hvdWxkCisvLyBhYnNsOjpzdHJpbmdfdmlldyByZXBy
ZXNlbnRzIHRoZSBuZXh0IGxvY2F0aW9uIHdoZXJlIHRoZSBpbnB1dCBzdHJpbmcgc2hvdWxkCiAv
LyBiZSBicm9rZW4uIFRoZSByZXR1cm5lZCBhYnNsOjpzdHJpbmdfdmlldyBtYXkgYmUgemVyby1s
ZW5ndGggaWYgdGhlIERlbGltaXRlcgotLy8gZG9lcyBub3QgcmVwcmVzZW50IGEgcGFydCBvZiB0
aGUgc3RkOjpzdHJpbmcgKGUuZy4sIGEgZml4ZWQtbGVuZ3RoIGRlbGltaXRlcikuIElmCisvLyBk
b2VzIG5vdCByZXByZXNlbnQgYSBwYXJ0IG9mIHRoZSBzdHJpbmcgKGUuZy4sIGEgZml4ZWQtbGVu
Z3RoIGRlbGltaXRlcikuIElmCiAvLyBubyBkZWxpbWl0ZXIgaXMgZm91bmQgaW4gdGhlIGdpdmVu
IHRleHQsIGEgemVyby1sZW5ndGggYWJzbDo6c3RyaW5nX3ZpZXcKIC8vIHJlZmVycmluZyB0byB0
ZXh0LmVuZCgpIHNob3VsZCBiZSByZXR1cm5lZCAoZS5nLiwKIC8vIGFic2w6OnN0cmluZ192aWV3
KHRleHQuZW5kKCksIDApKS4gSXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIHJldHVybmVkCiAvLyBh
YnNsOjpzdHJpbmdfdmlldyBhbHdheXMgYmUgd2l0aGluIHRoZSBib3VuZHMgb2YgaW5wdXQgdGV4
dCBnaXZlbiBhcyBhbgotLy8gYXJndW1lbnQtLWl0IG11c3Qgbm90IHJlZmVyIHRvIGEgc3RkOjpz
dHJpbmcgdGhhdCBpcyBwaHlzaWNhbGx5IGxvY2F0ZWQgb3V0c2lkZSBvZgotLy8gdGhlIGdpdmVu
IHN0ZDo6c3RyaW5nLgorLy8gYXJndW1lbnQtLWl0IG11c3Qgbm90IHJlZmVyIHRvIGEgc3RyaW5n
IHRoYXQgaXMgcGh5c2ljYWxseSBsb2NhdGVkIG91dHNpZGUgb2YKKy8vIHRoZSBnaXZlbiBzdHJp
bmcuCiAvLwogLy8gVGhlIGZvbGxvd2luZyBleGFtcGxlIGlzIGEgc2ltcGxlIERlbGltaXRlciBv
YmplY3QgdGhhdCBpcyBjcmVhdGVkIHdpdGggYQogLy8gc2luZ2xlIGNoYXIgYW5kIHdpbGwgbG9v
ayBmb3IgdGhhdCBjaGFyIGluIHRoZSB0ZXh0IHBhc3NlZCB0byB0aGUgRmluZCgpCkBAIC0xMDQs
MTMgKzEwNCwxMyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAKIC8vIEJ5U3RyaW5nCiAvLwotLy8gQSBz
dWItc3RkOjpzdHJpbmcgZGVsaW1pdGVyLiBJZiBgU3RyU3BsaXQoKWAgaXMgcGFzc2VkIGEgc3Rk
OjpzdHJpbmcgaW4gcGxhY2Ugb2YgYQotLy8gYERlbGltaXRlcmAgb2JqZWN0LCB0aGUgc3RkOjpz
dHJpbmcgd2lsbCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCBpbnRvIGEKKy8vIEEgc3ViLXN0cmlu
ZyBkZWxpbWl0ZXIuIElmIGBTdHJTcGxpdCgpYCBpcyBwYXNzZWQgYSBzdHJpbmcgaW4gcGxhY2Ug
b2YgYQorLy8gYERlbGltaXRlcmAgb2JqZWN0LCB0aGUgc3RyaW5nIHdpbGwgYmUgaW1wbGljaXRs
eSBjb252ZXJ0ZWQgaW50byBhCiAvLyBgQnlTdHJpbmdgIGRlbGltaXRlci4KIC8vCiAvLyBFeGFt
cGxlOgogLy8KLS8vICAgLy8gQmVjYXVzZSBhIHN0ZDo6c3RyaW5nIGxpdGVyYWwgaXMgY29udmVy
dGVkIHRvIGFuIGBhYnNsOjpCeVN0cmluZ2AsCisvLyAgIC8vIEJlY2F1c2UgYSBzdHJpbmcgbGl0
ZXJhbCBpcyBjb252ZXJ0ZWQgdG8gYW4gYGFic2w6OkJ5U3RyaW5nYCwKIC8vICAgLy8gdGhlIGZv
bGxvd2luZyB0d28gc3BsaXRzIGFyZSBlcXVpdmFsZW50LgogLy8KIC8vICAgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IHYxID0gYWJzbDo6U3RyU3BsaXQoImEsIGIsIGMiLCAiLCAiKTsKQEAgLTEz
MSw3ICsxMzEsNyBAQCBjbGFzcyBCeVN0cmluZyB7CiAvLyBCeUNoYXIKIC8vCiAvLyBBIHNpbmds
ZSBjaGFyYWN0ZXIgZGVsaW1pdGVyLiBgQnlDaGFyYCBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVu
dCB0byBhCi0vLyAxLWNoYXIgc3RkOjpzdHJpbmcgd2l0aGluIGEgYEJ5U3RyaW5nYCBkZWxpbWl0
ZXIsIGJ1dCBzbGlnaHRseSBtb3JlCisvLyAxLWNoYXIgc3RyaW5nIHdpdGhpbiBhIGBCeVN0cmlu
Z2AgZGVsaW1pdGVyLCBidXQgc2xpZ2h0bHkgbW9yZQogLy8gZWZmaWNpZW50LgogLy8KIC8vIEV4
YW1wbGU6CkBAIC0xNjQsOSArMTY0LDkgQEAgY2xhc3MgQnlDaGFyIHsKIC8vIEJ5QW55Q2hhcgog
Ly8KIC8vIEEgZGVsaW1pdGVyIHRoYXQgd2lsbCBtYXRjaCBhbnkgb2YgdGhlIGdpdmVuIGJ5dGUt
c2l6ZWQgY2hhcmFjdGVycyB3aXRoaW4KLS8vIGl0cyBwcm92aWRlZCBzdGQ6OnN0cmluZy4KKy8v
IGl0cyBwcm92aWRlZCBzdHJpbmcuCiAvLwotLy8gTm90ZTogdGhpcyBkZWxpbWl0ZXIgd29ya3Mg
d2l0aCBzaW5nbGUtYnl0ZSBzdGQ6OnN0cmluZyBkYXRhLCBidXQgZG9lcyBub3Qgd29yaworLy8g
Tm90ZTogdGhpcyBkZWxpbWl0ZXIgd29ya3Mgd2l0aCBzaW5nbGUtYnl0ZSBzdHJpbmcgZGF0YSwg
YnV0IGRvZXMgbm90IHdvcmsKIC8vIHdpdGggdmFyaWFibGUtd2lkdGggZW5jb2RpbmdzLCBzdWNo
IGFzIFVURi04LgogLy8KIC8vIEV4YW1wbGU6CkBAIC0xNzUsOCArMTc1LDggQEAgY2xhc3MgQnlD
aGFyIHsKIC8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSBhYnNsOjpTdHJTcGxpdCgi
YSxiPWMiLCBCeUFueUNoYXIoIiw9IikpOwogLy8gICAvLyB2WzBdID09ICJhIiwgdlsxXSA9PSAi
YiIsIHZbMl0gPT0gImMiCiAvLwotLy8gSWYgYEJ5QW55Q2hhcmAgaXMgZ2l2ZW4gdGhlIGVtcHR5
IHN0ZDo6c3RyaW5nLCBpdCBiZWhhdmVzIGV4YWN0bHkgbGlrZQotLy8gYEJ5U3RyaW5nYCBhbmQg
bWF0Y2hlcyBlYWNoIGluZGl2aWR1YWwgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCBzdGQ6OnN0cmlu
Zy4KKy8vIElmIGBCeUFueUNoYXJgIGlzIGdpdmVuIHRoZSBlbXB0eSBzdHJpbmcsIGl0IGJlaGF2
ZXMgZXhhY3RseSBsaWtlCisvLyBgQnlTdHJpbmdgIGFuZCBtYXRjaGVzIGVhY2ggaW5kaXZpZHVh
bCBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0IHN0cmluZy4KIC8vCiBjbGFzcyBCeUFueUNoYXIgewog
IHB1YmxpYzoKQEAgLTE5Miw3ICsxOTIsNyBAQCBjbGFzcyBCeUFueUNoYXIgewogLy8gQSBkZWxp
bWl0ZXIgZm9yIHNwbGl0dGluZyBpbnRvIGVxdWFsLWxlbmd0aCBzdHJpbmdzLiBUaGUgbGVuZ3Ro
IGFyZ3VtZW50IHRvCiAvLyB0aGUgY29uc3RydWN0b3IgbXVzdCBiZSBncmVhdGVyIHRoYW4gMC4K
IC8vCi0vLyBOb3RlOiB0aGlzIGRlbGltaXRlciB3b3JrcyB3aXRoIHNpbmdsZS1ieXRlIHN0ZDo6
c3RyaW5nIGRhdGEsIGJ1dCBkb2VzIG5vdCB3b3JrCisvLyBOb3RlOiB0aGlzIGRlbGltaXRlciB3
b3JrcyB3aXRoIHNpbmdsZS1ieXRlIHN0cmluZyBkYXRhLCBidXQgZG9lcyBub3Qgd29yawogLy8g
d2l0aCB2YXJpYWJsZS13aWR0aCBlbmNvZGluZ3MsIHN1Y2ggYXMgVVRGLTguCiAvLwogLy8gRXhh
bXBsZToKQEAgLTIwMiw3ICsyMDIsNyBAQCBjbGFzcyBCeUFueUNoYXIgewogCiAvLyAgIC8vIHZb
MF0gPT0gIjEyMyIsIHZbMV0gPT0gIjQ1NiIsIHZbMl0gPT0gIjc4OSIKIC8vCi0vLyBOb3RlIHRo
YXQgdGhlIHN0ZDo6c3RyaW5nIGRvZXMgbm90IGhhdmUgdG8gYmUgYSBtdWx0aXBsZSBvZiB0aGUg
Zml4ZWQgc3BsaXQKKy8vIE5vdGUgdGhhdCB0aGUgc3RyaW5nIGRvZXMgbm90IGhhdmUgdG8gYmUg
YSBtdWx0aXBsZSBvZiB0aGUgZml4ZWQgc3BsaXQKIC8vIGxlbmd0aC4gSW4gc3VjaCBhIGNhc2Us
IHRoZSBsYXN0IHN1YnN0cmluZyB3aWxsIGJlIHNob3J0ZXIuCiAvLwogLy8gICB1c2luZyBhYnNs
OjpCeUxlbmd0aDsKQEAgLTIyMyw5ICsyMjMsOSBAQCBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5h
bCB7CiAvLyBBIHRyYWl0cy1saWtlIG1ldGFmdW5jdGlvbiBmb3Igc2VsZWN0aW5nIHRoZSBkZWZh
dWx0IERlbGltaXRlciBvYmplY3QgdHlwZQogLy8gZm9yIGEgcGFydGljdWxhciBEZWxpbWl0ZXIg
dHlwZS4gVGhlIGJhc2UgY2FzZSBzaW1wbHkgZXhwb3NlcyB0eXBlIERlbGltaXRlcgogLy8gaXRz
ZWxmIGFzIHRoZSBkZWxpbWl0ZXIncyBUeXBlLiBIb3dldmVyLCB0aGVyZSBhcmUgc3BlY2lhbGl6
YXRpb25zIGZvcgotLy8gc3RkOjpzdHJpbmctbGlrZSBvYmplY3RzIHRoYXQgbWFwIHRoZW0gdG8g
dGhlIEJ5U3RyaW5nIGRlbGltaXRlciBvYmplY3QuCisvLyBzdHJpbmctbGlrZSBvYmplY3RzIHRo
YXQgbWFwIHRoZW0gdG8gdGhlIEJ5U3RyaW5nIGRlbGltaXRlciBvYmplY3QuCiAvLyBUaGlzIGFs
bG93cyBmdW5jdGlvbnMgbGlrZSBhYnNsOjpTdHJTcGxpdCgpIGFuZCBhYnNsOjpNYXhTcGxpdHMo
KSB0byBhY2NlcHQKLS8vIHN0ZDo6c3RyaW5nLWxpa2Ugb2JqZWN0cyAoZS5nLiwgJywnKSBhcyBk
ZWxpbWl0ZXIgYXJndW1lbnRzIGJ1dCB0aGV5IHdpbGwgYmUKKy8vIHN0cmluZy1saWtlIG9iamVj
dHMgKGUuZy4sICcsJykgYXMgZGVsaW1pdGVyIGFyZ3VtZW50cyBidXQgdGhleSB3aWxsIGJlCiAv
LyB0cmVhdGVkIGFzIGlmIGEgQnlTdHJpbmcgZGVsaW1pdGVyIHdhcyBnaXZlbi4KIHRlbXBsYXRl
IDx0eXBlbmFtZSBEZWxpbWl0ZXI+CiBzdHJ1Y3QgU2VsZWN0RGVsaW1pdGVyIHsKQEAgLTI2MSw3
ICsyNjEsOCBAQCBjbGFzcyBNYXhTcGxpdHNJbXBsIHsKICAgICAgIDogZGVsaW1pdGVyXyhkZWxp
bWl0ZXIpLCBsaW1pdF8obGltaXQpLCBjb3VudF8oMCkge30KICAgYWJzbDo6c3RyaW5nX3ZpZXcg
RmluZChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBzaXplX3QgcG9zKSB7CiAgICAgaWYgKGNvdW50
XysrID09IGxpbWl0XykgewotICAgICAgcmV0dXJuIGFic2w6OnN0cmluZ192aWV3KHRleHQuZW5k
KCksIDApOyAgLy8gTm8gbW9yZSBtYXRjaGVzLgorICAgICAgcmV0dXJuIGFic2w6OnN0cmluZ192
aWV3KHRleHQuZGF0YSgpICsgdGV4dC5zaXplKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCk7ICAvLyBObyBtb3JlIG1hdGNoZXMuCiAgICAgfQogICAgIHJldHVybiBkZWxpbWl0
ZXJfLkZpbmQodGV4dCwgcG9zKTsKICAgfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHN0cnVjdCBBbGxv
d0VtcHR5IHsKIC8vIFNraXBFbXB0eSgpCiAvLwogLy8gUmV0dXJucyBgZmFsc2VgIGlmIHRoZSBn
aXZlbiBgYWJzbDo6c3RyaW5nX3ZpZXdgIGlzIGVtcHR5LCBpbmRpY2F0aW5nIHRoYXQKLS8vIGBT
dHJTcGxpdCgpYCBzaG91bGQgb21pdCB0aGUgZW1wdHkgc3RkOjpzdHJpbmcuCisvLyBgU3RyU3Bs
aXQoKWAgc2hvdWxkIG9taXQgdGhlIGVtcHR5IHN0cmluZy4KIC8vCiAvLyBFeGFtcGxlOgogLy8K
QEAgLTMzOSw3ICszNDAsNyBAQCBzdHJ1Y3QgQWxsb3dFbXB0eSB7CiAvLwogLy8gICAvLyB2WzBd
ID09ICJhIiwgdlsxXSA9PSAiYiIKIC8vCi0vLyBOb3RlOiBgU2tpcEVtcHR5KClgIGRvZXMgbm90
IGNvbnNpZGVyIGEgc3RkOjpzdHJpbmcgY29udGFpbmluZyBvbmx5IHdoaXRlc3BhY2UKKy8vIE5v
dGU6IGBTa2lwRW1wdHkoKWAgZG9lcyBub3QgY29uc2lkZXIgYSBzdHJpbmcgY29udGFpbmluZyBv
bmx5IHdoaXRlc3BhY2UKIC8vIHRvIGJlIGVtcHR5LiBUbyBza2lwIHN1Y2ggd2hpdGVzcGFjZSBh
cyB3ZWxsLCB1c2UgdGhlIGBTa2lwV2hpdGVzcGFjZSgpYAogLy8gcHJlZGljYXRlLgogc3RydWN0
IFNraXBFbXB0eSB7CkBAIC0zNDksNyArMzUwLDcgQEAgc3RydWN0IFNraXBFbXB0eSB7CiAvLyBT
a2lwV2hpdGVzcGFjZSgpCiAvLwogLy8gUmV0dXJucyBgZmFsc2VgIGlmIHRoZSBnaXZlbiBgYWJz
bDo6c3RyaW5nX3ZpZXdgIGlzIGVtcHR5ICpvciogY29udGFpbnMgb25seQotLy8gd2hpdGVzcGFj
ZSwgaW5kaWNhdGluZyB0aGF0IGBTdHJTcGxpdCgpYCBzaG91bGQgb21pdCB0aGUgc3RkOjpzdHJp
bmcuCisvLyB3aGl0ZXNwYWNlLCBpbmRpY2F0aW5nIHRoYXQgYFN0clNwbGl0KClgIHNob3VsZCBv
bWl0IHRoZSBzdHJpbmcuCiAvLwogLy8gRXhhbXBsZToKIC8vCkBAIC0zNzMsNyArMzc0LDcgQEAg
c3RydWN0IFNraXBXaGl0ZXNwYWNlIHsKIAogLy8gU3RyU3BsaXQoKQogLy8KLS8vIFNwbGl0cyBh
IGdpdmVuIHN0ZDo6c3RyaW5nIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBgRGVsaW1pdGVyYCBvYmpl
Y3QsIHJldHVybmluZyB0aGUKKy8vIFNwbGl0cyBhIGdpdmVuIHN0cmluZyBiYXNlZCBvbiB0aGUg
cHJvdmlkZWQgYERlbGltaXRlcmAgb2JqZWN0LCByZXR1cm5pbmcgdGhlCiAvLyBlbGVtZW50cyB3
aXRoaW4gdGhlIHR5cGUgc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIuIE9wdGlvbmFsbHksIHlvdSBt
YXkgcGFzcyBhCiAvLyBgUHJlZGljYXRlYCB0byBgU3RyU3BsaXQoKWAgaW5kaWNhdGluZyB3aGV0
aGVyIHRvIGluY2x1ZGUgb3IgZXhjbHVkZSB0aGUKIC8vIHJlc3VsdGluZyBlbGVtZW50IHdpdGhp
biB0aGUgZmluYWwgcmVzdWx0IHNldC4gKFNlZSB0aGUgb3ZlcnZpZXdzIGZvcgpAQCAtNDEyLDcg
KzQxMyw3IEBAIHN0cnVjdCBTa2lwV2hpdGVzcGFjZSB7CiAvLwogLy8gVGhlIGBTdHJTcGxpdCgp
YCBmdW5jdGlvbiBhZGFwdHMgdGhlIHJldHVybmVkIGNvbGxlY3Rpb24gdG8gdGhlIGNvbGxlY3Rp
b24KIC8vIHNwZWNpZmllZCBieSB0aGUgY2FsbGVyIChlLmcuIGBzdGQ6OnZlY3RvcmAgYWJvdmUp
LiBUaGUgcmV0dXJuZWQgY29sbGVjdGlvbnMKLS8vIG1heSBjb250YWluIGBzdHJpbmdgLCBgYWJz
bDo6c3RyaW5nX3ZpZXdgIChpbiB3aGljaCBjYXNlIHRoZSBvcmlnaW5hbCBzdGQ6OnN0cmluZwor
Ly8gbWF5IGNvbnRhaW4gYHN0cmluZ2AsIGBhYnNsOjpzdHJpbmdfdmlld2AgKGluIHdoaWNoIGNh
c2UgdGhlIG9yaWdpbmFsIHN0cmluZwogLy8gYmVpbmcgc3BsaXQgbXVzdCBlbnN1cmUgdGhhdCBp
dCBvdXRsaXZlcyB0aGUgY29sbGVjdGlvbiksIG9yIGFueSBvYmplY3QgdGhhdAogLy8gY2FuIGJl
IGV4cGxpY2l0bHkgY3JlYXRlZCBmcm9tIGFuIGBhYnNsOjpzdHJpbmdfdmlld2AuIFRoaXMgYmVo
YXZpb3Igd29ya3MKIC8vIGZvcjoKQEAgLTQyNCw3ICs0MjUsNyBAQCBzdHJ1Y3QgU2tpcFdoaXRl
c3BhY2UgewogLy8gRXhhbXBsZToKIC8vCiAvLyAgIC8vIFRoZSByZXN1bHRzIGFyZSByZXR1cm5l
ZCBhcyBgYWJzbDo6c3RyaW5nX3ZpZXdgIG9iamVjdHMuIE5vdGUgdGhhdCB3ZQotLy8gICAvLyBo
YXZlIHRvIGVuc3VyZSB0aGF0IHRoZSBpbnB1dCBzdGQ6OnN0cmluZyBvdXRsaXZlcyBhbnkgcmVz
dWx0cy4KKy8vICAgLy8gaGF2ZSB0byBlbnN1cmUgdGhhdCB0aGUgaW5wdXQgc3RyaW5nIG91dGxp
dmVzIGFueSByZXN1bHRzLgogLy8gICBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4gdiA9
IGFic2w6OlN0clNwbGl0KCJhLGIsYyIsICcsJyk7CiAvLwogLy8gICAvLyBTdG9yZXMgcmVzdWx0
cyBpbiBhIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiwgd2hpY2ggYWxzbyBwZXJmb3JtcwpAQCAtNDQ0
LDcgKzQ0NSw3IEBAIHN0cnVjdCBTa2lwV2hpdGVzcGFjZSB7CiAvLyAgIC8vIGlzIHByb3ZpZGVk
IGFzIGEgc2VyaWVzIG9mIGtleS92YWx1ZSBwYWlycy4gRm9yIGV4YW1wbGUsIHRoZSAwdGggZWxl
bWVudAogLy8gICAvLyByZXN1bHRpbmcgZnJvbSB0aGUgc3BsaXQgd2lsbCBiZSBzdG9yZWQgYXMg
YSBrZXkgdG8gdGhlIDFzdCBlbGVtZW50LiBJZgogLy8gICAvLyBhbiBvZGQgbnVtYmVyIG9mIGVs
ZW1lbnRzIGFyZSByZXNvbHZlZCwgdGhlIGxhc3QgZWxlbWVudCBpcyBwYWlyZWQgd2l0aAotLy8g
ICAvLyBhIGRlZmF1bHQtY29uc3RydWN0ZWQgdmFsdWUgKGUuZy4sIGVtcHR5IHN0ZDo6c3RyaW5n
KS4KKy8vICAgLy8gYSBkZWZhdWx0LWNvbnN0cnVjdGVkIHZhbHVlIChlLmcuLCBlbXB0eSBzdHJp
bmcpLgogLy8gICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG0gPSBhYnNsOjpT
dHJTcGxpdCgiYSxiLGMiLCAnLCcpOwogLy8gICAvLyBtWyJhIl0gPT0gImIiLCBtWyJjIl0gPT0g
IiIgICAgIC8vIGxhc3QgY29tcG9uZW50IHZhbHVlIGVxdWFscyAiIgogLy8KQEAgLTQ1MiwxNCAr
NDUzLDE0IEBAIHN0cnVjdCBTa2lwV2hpdGVzcGFjZSB7CiAvLyBlbGVtZW50cyBhbmQgaXMgbm90
IGEgY29sbGVjdGlvbiB0eXBlLiBXaGVuIHNwbGl0dGluZyB0byBhIGBzdGQ6OnBhaXJgIHRoZQog
Ly8gZmlyc3QgdHdvIHNwbGl0IHN0cmluZ3MgYmVjb21lIHRoZSBgc3RkOjpwYWlyYCBgLmZpcnN0
YCBhbmQgYC5zZWNvbmRgCiAvLyBtZW1iZXJzLCByZXNwZWN0aXZlbHkuIFRoZSByZW1haW5pbmcg
c3BsaXQgc3Vic3RyaW5ncyBhcmUgZGlzY2FyZGVkLiBJZiB0aGVyZQotLy8gYXJlIGxlc3MgdGhh
biB0d28gc3BsaXQgc3Vic3RyaW5ncywgdGhlIGVtcHR5IHN0ZDo6c3RyaW5nIGlzIHVzZWQgZm9y
IHRoZQorLy8gYXJlIGxlc3MgdGhhbiB0d28gc3BsaXQgc3Vic3RyaW5ncywgdGhlIGVtcHR5IHN0
cmluZyBpcyB1c2VkIGZvciB0aGUKIC8vIGNvcnJlc3BvbmRpbmcKIC8vIGBzdGQ6OnBhaXJgIG1l
bWJlci4KIC8vCiAvLyBFeGFtcGxlOgogLy8KIC8vICAgLy8gU3RvcmVzIGZpcnN0IHR3byBzcGxp
dCBzdHJpbmdzIGFzIHRoZSBtZW1iZXJzIGluIGEgc3RkOjpwYWlyLgotLy8gICBzdGQ6OnBhaXI8
c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBwID0gYWJzbDo6U3RyU3BsaXQoImEsYixjIiwgJywn
KTsKKy8vICAgc3RkOjpwYWlyPHN0cmluZywgc3RyaW5nPiBwID0gYWJzbDo6U3RyU3BsaXQoImEs
YixjIiwgJywnKTsKIC8vICAgLy8gcC5maXJzdCA9PSAiYSIsIHAuc2Vjb25kID09ICJiIiAgICAg
ICAvLyAiYyIgaXMgb21pdHRlZC4KIC8vCiAvLyBUaGUgYFN0clNwbGl0KClgIGZ1bmN0aW9uIGNh
biBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIHRvIHBlcmZvcm0gbW9yZQpAQCAtNDY3LDkgKzQ2OCw5
IEBAIHN0cnVjdCBTa2lwV2hpdGVzcGFjZSB7CiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIC8v
IFRoZSBpbnB1dCBzdGQ6OnN0cmluZyAiYT1iPWMsZD1lLGY9LGciIGJlY29tZXMKKy8vICAgLy8g
VGhlIGlucHV0IHN0cmluZyAiYT1iPWMsZD1lLGY9LGciIGJlY29tZXMKIC8vICAgLy8geyAiYSIg
PT4gImI9YyIsICJkIiA9PiAiZSIsICJmIiA9PiAiIiwgImciID0+ICIiIH0KLS8vICAgc3RkOjpt
YXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBtOworLy8gICBzdGQ6Om1hcDxzdHJpbmcsIHN0
cmluZz4gbTsKIC8vICAgZm9yIChhYnNsOjpzdHJpbmdfdmlldyBzcCA6IGFic2w6OlN0clNwbGl0
KCJhPWI9YyxkPWUsZj0sZyIsICcsJykpIHsKIC8vICAgICBtLmluc2VydChhYnNsOjpTdHJTcGxp
dChzcCwgYWJzbDo6TWF4U3BsaXRzKCc9JywgMSkpKTsKIC8vICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9zdHJfc3BsaXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0X3Rl
c3QuY2MKaW5kZXggMjlhNjgwNDdjOTlhZWYzMWJjN2QzNjczYTMyYjcyMjg1NDJjNzlhMy4uNDEz
YWQzMThiZjliMjkzMzdiN2U4ODc4OGE1NTBhOWRiM2U1MGVhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJfc3BsaXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdF90
ZXN0LmNjCkBAIC0yNzYsNyArMjc2LDcgQEAgVEVTVChTcGxpdEl0ZXJhdG9yLCBCYXNpY3MpIHsK
ICAgRVhQRUNUX0VRKGl0LCBlbmQpOwogfQogCi0vLyBTaW1wbGUgUHJlZGljYXRlIHRvIHNraXAg
YSBwYXJ0aWN1bGFyIHN0ZDo6c3RyaW5nLgorLy8gU2ltcGxlIFByZWRpY2F0ZSB0byBza2lwIGEg
cGFydGljdWxhciBzdHJpbmcuCiBjbGFzcyBTa2lwIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IFNr
aXAoY29uc3Qgc3RkOjpzdHJpbmcmIHMpIDogc18ocykge30KQEAgLTc2MywxMiArNzYzLDEyIEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBEZWxpbWl0ZXI+CiBzdGF0aWMgYm9vbCBJc0ZvdW5kQXRTdGFy
dGluZ1BvcyhhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBEZWxpbWl0ZXIgZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzdGFydGluZ19wb3MsIGludCBleHBlY3RlZF9w
b3MpIHsKICAgYWJzbDo6c3RyaW5nX3ZpZXcgZm91bmQgPSBkLkZpbmQodGV4dCwgc3RhcnRpbmdf
cG9zKTsKLSAgcmV0dXJuIGZvdW5kLmRhdGEoKSAhPSB0ZXh0LmVuZCgpICYmCisgIHJldHVybiBm
b3VuZC5kYXRhKCkgIT0gdGV4dC5kYXRhKCkgKyB0ZXh0LnNpemUoKSAmJgogICAgICAgICAgZXhw
ZWN0ZWRfcG9zID09IGZvdW5kLmRhdGEoKSAtIHRleHQuZGF0YSgpOwogfQogCiAvLyBIZWxwZXIg
ZnVuY3Rpb24gZm9yIHRlc3RpbmcgRGVsaW1pdGVyIG9iamVjdHMuIFJldHVybnMgdHJ1ZSBpZiB0
aGUgZ2l2ZW4KLS8vIERlbGltaXRlciBpcyBmb3VuZCBpbiB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcg
YXQgdGhlIGdpdmVuIHBvc2l0aW9uLiBUaGlzIGZ1bmN0aW9uCisvLyBEZWxpbWl0ZXIgaXMgZm91
bmQgaW4gdGhlIGdpdmVuIHN0cmluZyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIFRoaXMgZnVuY3Rp
b24KIC8vIHRlc3RzIHR3byBjYXNlczoKIC8vICAgMS4gVGhlIGFjdHVhbCB0ZXh0IGdpdmVuLCBz
dGFyaW5nIGF0IHBvc2l0aW9uIDAKIC8vICAgMi4gVGhlIHRleHQgZ2l2ZW4gd2l0aCBsZWFkaW5n
IHBhZGRpbmcgdGhhdCBzaG91bGQgYmUgaWdub3JlZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdHJpbmdfdmlldy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oCmluZGV4IDFiOGY4
YTM3NDc0NWNiNjQ2NmIxY2Q2MjIxOTdmZGMyZjZkY2Q5ZDUuLmVjOWY2MmJlMTU3MzNlM2NkZTgy
NTZkZjFjZmM1MjBjMjJlMTFmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3Zp
ZXcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgKQEAgLTE5LDcgKzE5LDcgQEAK
IC8vCiAvLyBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGRlZmluaXRpb24gb2YgdGhlIGBhYnNsOjpz
dHJpbmdfdmlld2AgY2xhc3MuIEEKIC8vIGBzdHJpbmdfdmlld2AgcG9pbnRzIHRvIGEgY29udGln
dW91cyBzcGFuIG9mIGNoYXJhY3RlcnMsIG9mdGVuIHBhcnQgb3IgYWxsIG9mCi0vLyBhbm90aGVy
IGBzdGQ6OnN0cmluZ2AsIGRvdWJsZS1xdW90ZWQgc3RkOjpzdHJpbmcgbGl0ZXJhbCwgY2hhcmFj
dGVyIGFycmF5LCBvciBldmVuCisvLyBhbm90aGVyIGBzdGQ6OnN0cmluZ2AsIGRvdWJsZS1xdW90
ZWQgc3RyaW5nIGxpdGVyYWwsIGNoYXJhY3RlciBhcnJheSwgb3IgZXZlbgogLy8gYW5vdGhlciBg
c3RyaW5nX3ZpZXdgLgogLy8KIC8vIFRoaXMgYGFic2w6OnN0cmluZ192aWV3YCBhYnN0cmFjdGlv
biBpcyBkZXNpZ25lZCB0byBiZSBhIGRyb3AtaW4KQEAgLTU2LDE1ICs1NiwxNSBAQCBuYW1lc3Bh
Y2UgYWJzbCB7CiAKIC8vIGFic2w6OnN0cmluZ192aWV3CiAvLwotLy8gQSBgc3RyaW5nX3ZpZXdg
IHByb3ZpZGVzIGEgbGlnaHR3ZWlnaHQgdmlldyBpbnRvIHRoZSBzdGQ6OnN0cmluZyBkYXRhIHBy
b3ZpZGVkIGJ5Ci0vLyBhIGBzdGQ6OnN0cmluZ2AsIGRvdWJsZS1xdW90ZWQgc3RkOjpzdHJpbmcg
bGl0ZXJhbCwgY2hhcmFjdGVyIGFycmF5LCBvciBldmVuCi0vLyBhbm90aGVyIGBzdHJpbmdfdmll
d2AuIEEgYHN0cmluZ192aWV3YCBkb2VzICpub3QqIG93biB0aGUgc3RkOjpzdHJpbmcgdG8gd2hp
Y2ggaXQKKy8vIEEgYHN0cmluZ192aWV3YCBwcm92aWRlcyBhIGxpZ2h0d2VpZ2h0IHZpZXcgaW50
byB0aGUgc3RyaW5nIGRhdGEgcHJvdmlkZWQgYnkKKy8vIGEgYHN0ZDo6c3RyaW5nYCwgZG91Ymxl
LXF1b3RlZCBzdHJpbmcgbGl0ZXJhbCwgY2hhcmFjdGVyIGFycmF5LCBvciBldmVuCisvLyBhbm90
aGVyIGBzdHJpbmdfdmlld2AuIEEgYHN0cmluZ192aWV3YCBkb2VzICpub3QqIG93biB0aGUgc3Ry
aW5nIHRvIHdoaWNoIGl0CiAvLyBwb2ludHMsIGFuZCB0aGF0IGRhdGEgY2Fubm90IGJlIG1vZGlm
aWVkIHRocm91Z2ggdGhlIHZpZXcuCiAvLwogLy8gWW91IGNhbiB1c2UgYHN0cmluZ192aWV3YCBh
cyBhIGZ1bmN0aW9uIG9yIG1ldGhvZCBwYXJhbWV0ZXIgYW55d2hlcmUgYQotLy8gcGFyYW1ldGVy
IGNhbiByZWNlaXZlIGEgZG91YmxlLXF1b3RlZCBzdGQ6OnN0cmluZyBsaXRlcmFsLCBgY29uc3Qg
Y2hhcipgLAorLy8gcGFyYW1ldGVyIGNhbiByZWNlaXZlIGEgZG91YmxlLXF1b3RlZCBzdHJpbmcg
bGl0ZXJhbCwgYGNvbnN0IGNoYXIqYCwKIC8vIGBzdGQ6OnN0cmluZ2AsIG9yIGFub3RoZXIgYGFi
c2w6OnN0cmluZ192aWV3YCBhcmd1bWVudCB3aXRoIG5vIG5lZWQgdG8gY29weQotLy8gdGhlIHN0
ZDo6c3RyaW5nIGRhdGEuIFN5c3RlbWF0aWMgdXNlIG9mIGBzdHJpbmdfdmlld2Agd2l0aGluIGZ1
bmN0aW9uIGFyZ3VtZW50cworLy8gdGhlIHN0cmluZyBkYXRhLiBTeXN0ZW1hdGljIHVzZSBvZiBg
c3RyaW5nX3ZpZXdgIHdpdGhpbiBmdW5jdGlvbiBhcmd1bWVudHMKIC8vIHJlZHVjZXMgZGF0YSBj
b3BpZXMgYW5kIGBzdHJsZW4oKWAgY2FsbHMuCiAvLwogLy8gQmVjYXVzZSBvZiBpdHMgc21hbGwg
c2l6ZSwgcHJlZmVyIHBhc3NpbmcgYHN0cmluZ192aWV3YCBieSB2YWx1ZToKQEAgLTk3LDggKzk3
LDggQEAgbmFtZXNwYWNlIGFic2wgewogLy8gYHN0cmluZ192aWV3YCB0aGlzIHdheSwgaXQgaXMg
eW91ciByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgb2JqZWN0CiAvLyBwb2ludGVk
IHRvIGJ5IHRoZSBgc3RyaW5nX3ZpZXdgIG91dGxpdmVzIHRoZSBgc3RyaW5nX3ZpZXdgLgogLy8K
LS8vIEEgYHN0cmluZ192aWV3YCBtYXkgcmVwcmVzZW50IGEgd2hvbGUgc3RkOjpzdHJpbmcgb3Ig
anVzdCBwYXJ0IG9mIGEgc3RkOjpzdHJpbmcuIEZvcgotLy8gZXhhbXBsZSwgd2hlbiBzcGxpdHRp
bmcgYSBzdGQ6OnN0cmluZywgYHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PmAgaXMgYQor
Ly8gQSBgc3RyaW5nX3ZpZXdgIG1heSByZXByZXNlbnQgYSB3aG9sZSBzdHJpbmcgb3IganVzdCBw
YXJ0IG9mIGEgc3RyaW5nLiBGb3IKKy8vIGV4YW1wbGUsIHdoZW4gc3BsaXR0aW5nIGEgc3RyaW5n
LCBgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+YCBpcyBhCiAvLyBuYXR1cmFsIGRhdGEg
dHlwZSBmb3IgdGhlIG91dHB1dC4KIC8vCiAvLwpAQCAtMTQxLDcgKzE0MSw3IEBAIG5hbWVzcGFj
ZSBhYnNsIHsKIC8vIEFsbCBlbXB0eSBgc3RyaW5nX3ZpZXdgIG9iamVjdHMgd2hldGhlciBudWxs
IG9yIG5vdCwgYXJlIGVxdWFsOgogLy8KIC8vICAgYWJzbDo6c3RyaW5nX3ZpZXcoKSA9PSBhYnNs
OjpzdHJpbmdfdmlldygiIiwgMCkKLS8vICAgYWJzbDo6c3RyaW5nX3ZpZXcobnVsbHB0ciwgMCkg
PT0gYWJzbDo6IHN0cmluZ192aWV3KCJhYmNkZWYiKzYsIDApCisvLyAgIGFic2w6OnN0cmluZ192
aWV3KG51bGxwdHIsIDApID09IGFic2w6OnN0cmluZ192aWV3KCJhYmNkZWYiKzYsIDApCiBjbGFz
cyBzdHJpbmdfdmlldyB7CiAgcHVibGljOgogICB1c2luZyB0cmFpdHNfdHlwZSA9IHN0ZDo6Y2hh
cl90cmFpdHM8Y2hhcj47CkBAIC0xNzMsOCArMTczLDE5IEBAIGNsYXNzIHN0cmluZ192aWV3IHsK
ICAgLy8gSW1wbGljaXQgY29uc3RydWN0b3Igb2YgYSBgc3RyaW5nX3ZpZXdgIGZyb20gbnVsLXRl
cm1pbmF0ZWQgYHN0cmAuIFdoZW4KICAgLy8gYWNjZXB0aW5nIHBvc3NpYmx5IG51bGwgc3RyaW5n
cywgdXNlIGBhYnNsOjpOdWxsU2FmZVN0cmluZ1ZpZXcoc3RyKWAKICAgLy8gaW5zdGVhZCAoc2Vl
IGJlbG93KS4KKyNpZiBBQlNMX0hBVkVfQlVJTFRJTihfX2J1aWx0aW5fc3RybGVuKSB8fCBcCisg
ICAgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fY2xhbmdfXykpCisgIC8vIEdDQyBo
YXMgX19idWlsdGluX3N0cmxlbiBhY2NvcmRpbmcgdG8KKyAgLy8gaHR0cHM6Ly9nY2MuZ251Lm9y
Zy9vbmxpbmVkb2NzL2djYy00LjcuMC9nY2MvT3RoZXItQnVpbHRpbnMuaHRtbCwgYnV0CisgIC8v
IEFCU0xfSEFWRV9CVUlMVElOIGRvZXNuJ3QgZGV0ZWN0IHRoYXQsIHNvIHdlIHVzZSB0aGUgZXh0
cmEgY2hlY2tzIGFib3ZlLgorICAvLyBfX2J1aWx0aW5fc3RybGVuIGlzIGNvbnN0ZXhwci4KKyAg
Y29uc3RleHByIHN0cmluZ192aWV3KGNvbnN0IGNoYXIqIHN0cikgIC8vIE5PTElOVChydW50aW1l
L2V4cGxpY2l0KQorICAgICAgOiBwdHJfKHN0ciksCisgICAgICAgIGxlbmd0aF8oQ2hlY2tMZW5n
dGhJbnRlcm5hbChzdHIgPyBfX2J1aWx0aW5fc3RybGVuKHN0cikgOiAwKSkge30KKyNlbHNlCiAg
IGNvbnN0ZXhwciBzdHJpbmdfdmlldyhjb25zdCBjaGFyKiBzdHIpICAvLyBOT0xJTlQocnVudGlt
ZS9leHBsaWNpdCkKLSAgICAgIDogcHRyXyhzdHIpLCBsZW5ndGhfKENoZWNrTGVuZ3RoSW50ZXJu
YWwoU3RyTGVuSW50ZXJuYWwoc3RyKSkpIHt9CisgICAgICA6IHB0cl8oc3RyKSwgbGVuZ3RoXyhD
aGVja0xlbmd0aEludGVybmFsKHN0ciA/IHN0cmxlbihzdHIpIDogMCkpIHt9CisjZW5kaWYKIAog
ICAvLyBJbXBsaWNpdCBjb25zdHJ1Y3RvciBvZiBhIGBzdHJpbmdfdmlld2AgZnJvbSBhIGBjb25z
dCBjaGFyKmAgYW5kIGxlbmd0aC4KICAgY29uc3RleHByIHN0cmluZ192aWV3KGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdHlwZSBsZW4pCkBAIC0zNDAsNyArMzUxLDcgQEAgY2xhc3Mgc3RyaW5nX3Zp
ZXcgewogICAvLwogICAvLyBSZXR1cm5zIGEgInN1YnN0cmluZyIgb2YgdGhlIGBzdHJpbmdfdmll
d2AgKGF0IG9mZnNldCBgcG9zYCBhbmQgbGVuZ3RoCiAgIC8vIGBuYCkgYXMgYW5vdGhlciBzdHJp
bmdfdmlldy4gVGhpcyBmdW5jdGlvbiB0aHJvd3MgYHN0ZDo6b3V0X29mX2JvdW5kc2AgaWYKLSAg
Ly8gYHBvcyA+IHNpemUnLgorICAvLyBgcG9zID4gc2l6ZWAuCiAgIHN0cmluZ192aWV3IHN1YnN0
cihzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbiA9IG5wb3MpIGNvbnN0IHsKICAgICBpZiAoQUJT
TF9QUkVESUNUX0ZBTFNFKHBvcyA+IGxlbmd0aF8pKQogICAgICAgYmFzZV9pbnRlcm5hbDo6VGhy
b3dTdGRPdXRPZlJhbmdlKCJhYnNsOjpzdHJpbmdfdmlldzo6c3Vic3RyIik7CkBAIC0zNTEsNyAr
MzYyLDcgQEAgY2xhc3Mgc3RyaW5nX3ZpZXcgewogICAvLyBzdHJpbmdfdmlldzo6Y29tcGFyZSgp
CiAgIC8vCiAgIC8vIFBlcmZvcm1zIGEgbGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24gYmV0d2Vl
biB0aGUgYHN0cmluZ192aWV3YCBhbmQKLSAgLy8gYW5vdGhlciBgYWJzbDo6c3RyaW5nX3ZpZXcp
LCByZXR1cm5pbmcgLTEgaWYgYHRoaXNgIGlzIGxlc3MgdGhhbiwgMCBpZgorICAvLyBhbm90aGVy
IGBhYnNsOjpzdHJpbmdfdmlld2AsIHJldHVybmluZyAtMSBpZiBgdGhpc2AgaXMgbGVzcyB0aGFu
LCAwIGlmCiAgIC8vIGB0aGlzYCBpcyBlcXVhbCB0bywgYW5kIDEgaWYgYHRoaXNgIGlzIGdyZWF0
ZXIgdGhhbiB0aGUgcGFzc2VkIHN0ZDo6c3RyaW5nCiAgIC8vIHZpZXcuIE5vdGUgdGhhdCBpbiB0
aGUgY2FzZSBvZiBkYXRhIGVxdWFsaXR5LCBhIGZ1cnRoZXIgY29tcGFyaXNvbiBpcyBtYWRlCiAg
IC8vIG9uIHRoZSByZXNwZWN0aXZlIHNpemVzIG9mIHRoZSB0d28gYHN0cmluZ192aWV3YHMgdG8g
ZGV0ZXJtaW5lIHdoaWNoIGlzCkBAIC00ODEsMjIgKzQ5Miw2IEBAIGNsYXNzIHN0cmluZ192aWV3
IHsKICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUga01heFNpemUgPQogICAgICAgc3RkOjpu
dW1lcmljX2xpbWl0czxkaWZmZXJlbmNlX3R5cGU+OjptYXgoKTsKIAotICAvLyBjaGVjayB3aGV0
aGVyIF9fYnVpbHRpbl9zdHJsZW4gaXMgcHJvdmlkZWQgYnkgdGhlIGNvbXBpbGVyLgotICAvLyBH
Q0MgZG9lc24ndCBoYXZlIF9faGFzX2J1aWx0aW4oKQotICAvLyAoaHR0cHM6Ly9nY2MuZ251Lm9y
Zy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjY5NzApLAotICAvLyBidXQgaGFzIF9fYnVpbHRp
bl9zdHJsZW4gYWNjb3JkaW5nIHRvCi0gIC8vIGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9j
cy9nY2MtNC43LjAvZ2NjL090aGVyLUJ1aWx0aW5zLmh0bWwuCi0jaWYgQUJTTF9IQVZFX0JVSUxU
SU4oX19idWlsdGluX3N0cmxlbikgfHwgXAotICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVm
aW5lZChfX2NsYW5nX18pKQotICBzdGF0aWMgY29uc3RleHByIHNpemVfdHlwZSBTdHJMZW5JbnRl
cm5hbChjb25zdCBjaGFyKiBzdHIpIHsKLSAgICByZXR1cm4gc3RyID8gX19idWlsdGluX3N0cmxl
bihzdHIpIDogMDsKLSAgfQotI2Vsc2UKLSAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgU3Ry
TGVuSW50ZXJuYWwoY29uc3QgY2hhciogc3RyKSB7Ci0gICAgcmV0dXJuIHN0ciA/IHN0cmxlbihz
dHIpIDogMDsKLSAgfQotI2VuZGlmCi0KICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgQ2hl
Y2tMZW5ndGhJbnRlcm5hbChzaXplX3R5cGUgbGVuKSB7CiAgICAgcmV0dXJuIGxlbjsKICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlld190ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9zdHJpbmdfdmlld190ZXN0LmNjCmluZGV4IGIxOWQwN2M3ZmQ2MWQ4MjEyMjNiZmMwYmY5
N2IyYTJhNjIzNGQzOGMuLmE5NGU4MjI1NGVlNDUyMWRmYzExYjA1YWE4OWQwZTc0MWNhNWI3Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXdfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cmluZ192aWV3X3Rlc3QuY2MKQEAgLTM1LDcgKzM1LDggQEAKICNkZWZpbmUg
QUJTTF9FWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsICIuKiIpCiAjZWxzZQotI2RlZmluZSBB
QlNMX0VYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRAor
I2RlZmluZSBBQlNMX0VYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkg
XAorICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpCiAjZW5kaWYK
IAogbmFtZXNwYWNlIHsKQEAgLTI4Myw3ICsyODQsNyBAQCBURVNUKFN0cmluZ1ZpZXdUZXN0LCBD
b21wYXJpc29uT3BlcmF0b3JzQnlDaGFyYWN0ZXJQb3NpdGlvbikgewogfQogI3VuZGVmIENPTVBB
UkUKIAotLy8gU2FkbHksIG91ciB1c2VycyBvZnRlbiBjb25mdXNlIHN0ZDo6c3RyaW5nOjpucG9z
IHdpdGggYWJzbDo6c3RyaW5nX3ZpZXc6Om5wb3M7CisvLyBTYWRseSwgb3VyIHVzZXJzIG9mdGVu
IGNvbmZ1c2Ugc3RyaW5nOjpucG9zIHdpdGggYWJzbDo6c3RyaW5nX3ZpZXc6Om5wb3M7CiAvLyBT
byBtdWNoIHNvIHRoYXQgd2UgdGVzdCBoZXJlIHRoYXQgdGhleSBhcmUgdGhlIHNhbWUuICBUaGV5
IG5lZWQgdG8KIC8vIGJvdGggYmUgdW5zaWduZWQsIGFuZCBib3RoIGJlIHRoZSBtYXhpbXVtLXZh
bHVlZCBpbnRlZ2VyIG9mIHRoZWlyIHR5cGUuCiAKQEAgLTgxMSwxNSArODEyLDE4IEBAIFRFU1Qo
U3RyaW5nVmlld1Rlc3QsIEZyb250QmFja1NpbmdsZUNoYXIpIHsKIH0KIAogLy8gYHN0ZDo6c3Ry
aW5nX3ZpZXc6OnN0cmluZ192aWV3KGNvbnN0IGNoYXIqKWAgY2FsbHMKLS8vIGBzdGQ6OmNoYXJf
dHJhaXRzPGNoYXI+OjpsZW5ndGgoY29uc3QgY2hhciopYCB0byBnZXQgdGhlIHN0ZDo6c3RyaW5n
IGxlbmd0aC4gSW4KKy8vIGBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+OjpsZW5ndGgoY29uc3QgY2hh
ciopYCB0byBnZXQgdGhlIHN0cmluZyBsZW5ndGguIEluCiAvLyBsaWJjKyssIGl0IGRvZXNuJ3Qg
YWxsb3cgYG51bGxwdHJgIGluIHRoZSBjb25zdGV4cHIgY29udGV4dCwgd2l0aCB0aGUgZXJyb3IK
IC8vICJyZWFkIG9mIGRlcmVmZXJlbmNlZCBudWxsIHBvaW50ZXIgaXMgbm90IGFsbG93ZWQgaW4g
YSBjb25zdGFudCBleHByZXNzaW9uIi4KIC8vIEF0IHJ1biB0aW1lLCB0aGUgYmVoYXZpb3Igb2Yg
YHN0ZDo6Y2hhcl90cmFpdHM6Omxlbmd0aCgpYCBvbiBgbnVsbHB0cmAgaXMKLS8vIHVuZGVmaW5l
ZCBieSB0aGUgc3RhbmRhcmQgYW5kIHVzdWFsbHkgcmVzdWx0cyBpbiBjcmFzaCB3aXRoIGxpYmMr
Ky4gVGhpcwotLy8gY29uZm9ybXMgdG8gdGhlIHN0YW5kYXJkLCBidXQgYGFic2w6OnN0cmluZ192
aWV3YCBpbXBsZW1lbnRzIGEgZGlmZmVyZW50CisvLyB1bmRlZmluZWQgYnkgdGhlIHN0YW5kYXJk
IGFuZCB1c3VhbGx5IHJlc3VsdHMgaW4gY3Jhc2ggd2l0aCBsaWJjKysuCisvLyBJbiBNU1ZDLCBj
cmVhdGluZyBhIGNvbnN0ZXhwciBzdHJpbmdfdmlldyBmcm9tIG51bGxwdHIgYWxzbyB0cmlnZ2Vy
cyBhbgorLy8gInVuZXZhbHVhYmxlIHBvaW50ZXIgdmFsdWUiIGVycm9yLiBUaGlzIGNvbXBpbGVy
IGltcGxlbWVudGF0aW9uIGNvbmZvcm1zCisvLyB0byB0aGUgc3RhbmRhcmQsIGJ1dCBgYWJzbDo6
c3RyaW5nX3ZpZXdgIGltcGxlbWVudHMgYSBkaWZmZXJlbnQKIC8vIGJlaGF2aW9yIGZvciBoaXN0
b3JpY2FsIHJlYXNvbnMuIFdlIHdvcmsgYXJvdW5kIHRlc3RzIHRoYXQgY29uc3RydWN0CiAvLyBg
c3RyaW5nX3ZpZXdgIGZyb20gYG51bGxwdHJgIHdoZW4gdXNpbmcgbGliYysrLgotI2lmICFkZWZp
bmVkKEFCU0xfSEFWRV9TVERfU1RSSU5HX1ZJRVcpIHx8ICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lP
TikKKyNpZiAhZGVmaW5lZChBQlNMX0hBVkVfU1REX1NUUklOR19WSUVXKSB8fCBcCisgICAgKCFk
ZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikgJiYgIWRlZmluZWQoX01TQ19WRVIpKQogI2RlZmluZSBB
QlNMX0hBVkVfU1RSSU5HX1ZJRVdfRlJPTV9OVUxMUFRSIDEKICNlbmRpZiAgLy8gIWRlZmluZWQo
QUJTTF9IQVZFX1NURF9TVFJJTkdfVklFVykgfHwgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlw
LmgKaW5kZXggMmY4ZDIxZjdkZWI5ZmNhMDI5MzhjYTdhOTI0MGEwZTE3NzU2ZjIxMS4uOGQwZDdj
NmJmYzEyMzBmMGMzOWExNTEyMThlMWNjOTI3Yjg4MzZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9zdHJpcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXAuaApAQCAtMTcsNyArMTcsNyBA
QAogLy8gRmlsZTogc3RyaXAuaAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0vLyBUaGlz
IGZpbGUgY29udGFpbnMgdmFyaW91cyBmdW5jdGlvbnMgZm9yIHN0cmlwcGluZyBzdWJzdHJpbmdz
IGZyb20gYSBzdGQ6OnN0cmluZy4KKy8vIFRoaXMgZmlsZSBjb250YWlucyB2YXJpb3VzIGZ1bmN0
aW9ucyBmb3Igc3RyaXBwaW5nIHN1YnN0cmluZ3MgZnJvbSBhIHN0cmluZy4KICNpZm5kZWYgQUJT
TF9TVFJJTkdTX1NUUklQX0hfCiAjZGVmaW5lIEFCU0xfU1RSSU5HU19TVFJJUF9IXwogCkBAIC0z
Myw3ICszMyw3IEBAIG5hbWVzcGFjZSBhYnNsIHsKIAogLy8gQ29uc3VtZVByZWZpeCgpCiAvLwot
Ly8gU3RyaXBzIHRoZSBgZXhwZWN0ZWRgIHByZWZpeCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZ2l2
ZW4gc3RkOjpzdHJpbmcsIHJldHVybmluZworLy8gU3RyaXBzIHRoZSBgZXhwZWN0ZWRgIHByZWZp
eCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZ2l2ZW4gc3RyaW5nLCByZXR1cm5pbmcKIC8vIGB0cnVl
YCBpZiB0aGUgc3RyaXAgb3BlcmF0aW9uIHN1Y2NlZWRlZCBvciBmYWxzZSBvdGhlcndpc2UuCiAv
LwogLy8gRXhhbXBsZToKQEAgLTQ4LDcgKzQ4LDcgQEAgaW5saW5lIGJvb2wgQ29uc3VtZVByZWZp
eChhYnNsOjpzdHJpbmdfdmlldyogc3RyLCBhYnNsOjpzdHJpbmdfdmlldyBleHBlY3RlZCkgewog
fQogLy8gQ29uc3VtZVN1ZmZpeCgpCiAvLwotLy8gU3RyaXBzIHRoZSBgZXhwZWN0ZWRgIHN1ZmZp
eCBmcm9tIHRoZSBlbmQgb2YgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nLCByZXR1cm5pbmcKKy8vIFN0
cmlwcyB0aGUgYGV4cGVjdGVkYCBzdWZmaXggZnJvbSB0aGUgZW5kIG9mIHRoZSBnaXZlbiBzdHJp
bmcsIHJldHVybmluZwogLy8gYHRydWVgIGlmIHRoZSBzdHJpcCBvcGVyYXRpb24gc3VjY2VlZGVk
IG9yIGZhbHNlIG90aGVyd2lzZS4KIC8vCiAvLyBFeGFtcGxlOgpAQCAtNjQsOSArNjQsOSBAQCBp
bmxpbmUgYm9vbCBDb25zdW1lU3VmZml4KGFic2w6OnN0cmluZ192aWV3KiBzdHIsIGFic2w6OnN0
cmluZ192aWV3IGV4cGVjdGVkKSB7CiAKIC8vIFN0cmlwUHJlZml4KCkKIC8vCi0vLyBSZXR1cm5z
IGEgdmlldyBpbnRvIHRoZSBpbnB1dCBzdGQ6OnN0cmluZyAnc3RyJyB3aXRoIHRoZSBnaXZlbiAn
cHJlZml4JyByZW1vdmVkLAotLy8gYnV0IGxlYXZpbmcgdGhlIG9yaWdpbmFsIHN0ZDo6c3RyaW5n
IGludGFjdC4gSWYgdGhlIHByZWZpeCBkb2VzIG5vdCBtYXRjaCBhdCB0aGUKLS8vIHN0YXJ0IG9m
IHRoZSBzdGQ6OnN0cmluZywgcmV0dXJucyB0aGUgb3JpZ2luYWwgc3RkOjpzdHJpbmcgaW5zdGVh
ZC4KKy8vIFJldHVybnMgYSB2aWV3IGludG8gdGhlIGlucHV0IHN0cmluZyAnc3RyJyB3aXRoIHRo
ZSBnaXZlbiAncHJlZml4JyByZW1vdmVkLAorLy8gYnV0IGxlYXZpbmcgdGhlIG9yaWdpbmFsIHN0
cmluZyBpbnRhY3QuIElmIHRoZSBwcmVmaXggZG9lcyBub3QgbWF0Y2ggYXQgdGhlCisvLyBzdGFy
dCBvZiB0aGUgc3RyaW5nLCByZXR1cm5zIHRoZSBvcmlnaW5hbCBzdHJpbmcgaW5zdGVhZC4KIEFC
U0xfTVVTVF9VU0VfUkVTVUxUIGlubGluZSBhYnNsOjpzdHJpbmdfdmlldyBTdHJpcFByZWZpeCgK
ICAgICBhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGFic2w6OnN0cmluZ192aWV3IHByZWZpeCkgewog
ICBpZiAoYWJzbDo6U3RhcnRzV2l0aChzdHIsIHByZWZpeCkpIHN0ci5yZW1vdmVfcHJlZml4KHBy
ZWZpeC5zaXplKCkpOwpAQCAtNzUsOSArNzUsOSBAQCBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxp
bmUgYWJzbDo6c3RyaW5nX3ZpZXcgU3RyaXBQcmVmaXgoCiAKIC8vIFN0cmlwU3VmZml4KCkKIC8v
Ci0vLyBSZXR1cm5zIGEgdmlldyBpbnRvIHRoZSBpbnB1dCBzdGQ6OnN0cmluZyAnc3RyJyB3aXRo
IHRoZSBnaXZlbiAnc3VmZml4JyByZW1vdmVkLAotLy8gYnV0IGxlYXZpbmcgdGhlIG9yaWdpbmFs
IHN0ZDo6c3RyaW5nIGludGFjdC4gSWYgdGhlIHN1ZmZpeCBkb2VzIG5vdCBtYXRjaCBhdCB0aGUK
LS8vIGVuZCBvZiB0aGUgc3RkOjpzdHJpbmcsIHJldHVybnMgdGhlIG9yaWdpbmFsIHN0ZDo6c3Ry
aW5nIGluc3RlYWQuCisvLyBSZXR1cm5zIGEgdmlldyBpbnRvIHRoZSBpbnB1dCBzdHJpbmcgJ3N0
cicgd2l0aCB0aGUgZ2l2ZW4gJ3N1ZmZpeCcgcmVtb3ZlZCwKKy8vIGJ1dCBsZWF2aW5nIHRoZSBv
cmlnaW5hbCBzdHJpbmcgaW50YWN0LiBJZiB0aGUgc3VmZml4IGRvZXMgbm90IG1hdGNoIGF0IHRo
ZQorLy8gZW5kIG9mIHRoZSBzdHJpbmcsIHJldHVybnMgdGhlIG9yaWdpbmFsIHN0cmluZyBpbnN0
ZWFkLgogQUJTTF9NVVNUX1VTRV9SRVNVTFQgaW5saW5lIGFic2w6OnN0cmluZ192aWV3IFN0cmlw
U3VmZml4KAogICAgIGFic2w6OnN0cmluZ192aWV3IHN0ciwgYWJzbDo6c3RyaW5nX3ZpZXcgc3Vm
Zml4KSB7CiAgIGlmIChhYnNsOjpFbmRzV2l0aChzdHIsIHN1ZmZpeCkpIHN0ci5yZW1vdmVfc3Vm
Zml4KHN1ZmZpeC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcF90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcF90ZXN0LmNjCmluZGV4IDIwNWMxNjBjMTkyOTI2Mzc5
NmE1OTMyM2FjNTk1MDllOGFiNjU4OWUuLjQwYzRjNjA3MTIxMTIwODEwNGM3ZGRiMmZkY2YzNzY1
MTk5MjQzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXBfdGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL3N0cmlwX3Rlc3QuY2MKQEAgLTEyLDggKzEyLDggQEAKIC8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogCi0vLyBUaGlzIGZpbGUgY29u
dGFpbnMgZnVuY3Rpb25zIHRoYXQgcmVtb3ZlIGEgZGVmaW5lZCBwYXJ0IGZyb20gdGhlIHN0ZDo6
c3RyaW5nLAotLy8gaS5lLiwgc3RyaXAgdGhlIHN0ZDo6c3RyaW5nLgorLy8gVGhpcyBmaWxlIGNv
bnRhaW5zIGZ1bmN0aW9ucyB0aGF0IHJlbW92ZSBhIGRlZmluZWQgcGFydCBmcm9tIHRoZSBzdHJp
bmcsCisvLyBpLmUuLCBzdHJpcCB0aGUgc3RyaW5nLgogCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L3N0cmlwLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9zdWJzdGl0dXRlLmgKaW5kZXggYzRiMjViYTcwOTUyYzE5ZDY0ZWJjODQ5Yjdl
M2MwOWNhZmJjNTJjZi4uNGRlN2I0ZTc1ZmYyM2I0MTM0MWZkNjM1Y2YyMjFkYTY2OWJkNTFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdWJzdGl0dXRlLmgKQEAgLTE3LDQ2ICsxNyw0NiBAQAogLy8gRmlsZTogc3Vic3RpdHV0ZS5o
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KLS8vIFRoaXMgcGFja2FnZSBjb250YWlucyBm
dW5jdGlvbnMgZm9yIGVmZmljaWVudGx5IHBlcmZvcm1pbmcgc3RkOjpzdHJpbmcKLS8vIHN1YnN0
aXR1dGlvbnMgdXNpbmcgYSBmb3JtYXQgc3RkOjpzdHJpbmcgd2l0aCBwb3NpdGlvbmFsIG5vdGF0
aW9uOgorLy8gVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3IgZWZmaWNpZW50bHkg
cGVyZm9ybWluZyBzdHJpbmcKKy8vIHN1YnN0aXR1dGlvbnMgdXNpbmcgYSBmb3JtYXQgc3RyaW5n
IHdpdGggcG9zaXRpb25hbCBub3RhdGlvbjoKIC8vIGBTdWJzdGl0dXRlKClgIGFuZCBgU3Vic3Rp
dHV0ZUFuZEFwcGVuZCgpYC4KIC8vCiAvLyBVbmxpa2UgcHJpbnRmLXN0eWxlIGZvcm1hdCBzcGVj
aWZpZXJzLCBgU3Vic3RpdHV0ZSgpYCBmdW5jdGlvbnMgZG8gbm90IG5lZWQKIC8vIHRvIHNwZWNp
ZnkgdGhlIHR5cGUgb2YgdGhlIHN1YnN0aXR1dGlvbiBhcmd1bWVudHMuIFN1cHBvcnRlZCBhcmd1
bWVudHMKLS8vIGZvbGxvd2luZyB0aGUgZm9ybWF0IHN0ZDo6c3RyaW5nLCBzdWNoIGFzIHN0cmlu
Z3MsIHN0cmluZ192aWV3cywgaW50cywKKy8vIGZvbGxvd2luZyB0aGUgZm9ybWF0IHN0cmluZywg
c3VjaCBhcyBzdHJpbmdzLCBzdHJpbmdfdmlld3MsIGludHMsCiAvLyBmbG9hdHMsIGFuZCBib29s
cywgYXJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIHN0cmluZ3MgZHVyaW5nIHRoZQogLy8g
c3Vic3RpdHV0aW9uIHByb2Nlc3MuIChTZWUgYmVsb3cgZm9yIGEgZnVsbCBsaXN0IG9mIHN1cHBv
cnRlZCB0eXBlcy4pCiAvLwogLy8gYFN1YnN0aXR1dGUoKWAgZG9lcyBub3QgYWxsb3cgeW91IHRv
IHNwZWNpZnkgKmhvdyogdG8gZm9ybWF0IGEgdmFsdWUsIGJleW9uZAotLy8gdGhlIGRlZmF1bHQg
Y29udmVyc2lvbiB0byBzdGQ6OnN0cmluZy4gRm9yIGV4YW1wbGUsIHlvdSBjYW5ub3QgZm9ybWF0
IGFuIGludGVnZXIKKy8vIHRoZSBkZWZhdWx0IGNvbnZlcnNpb24gdG8gc3RyaW5nLiBGb3IgZXhh
bXBsZSwgeW91IGNhbm5vdCBmb3JtYXQgYW4gaW50ZWdlcgogLy8gaW4gaGV4LgogLy8KLS8vIFRo
ZSBmb3JtYXQgc3RkOjpzdHJpbmcgdXNlcyBwb3NpdGlvbmFsIGlkZW50aWZpZXJzIGluZGljYXRl
ZCBieSBhIGRvbGxhciBzaWduICgkKQorLy8gVGhlIGZvcm1hdCBzdHJpbmcgdXNlcyBwb3NpdGlv
bmFsIGlkZW50aWZpZXJzIGluZGljYXRlZCBieSBhIGRvbGxhciBzaWduICgkKQogLy8gYW5kIHNp
bmdsZSBkaWdpdCBwb3NpdGlvbmFsIGlkcyB0byBpbmRpY2F0ZSB3aGljaCBzdWJzdGl0dXRpb24g
YXJndW1lbnRzIHRvCi0vLyB1c2UgYXQgdGhhdCBsb2NhdGlvbiB3aXRoaW4gdGhlIGZvcm1hdCBz
dGQ6OnN0cmluZy4KKy8vIHVzZSBhdCB0aGF0IGxvY2F0aW9uIHdpdGhpbiB0aGUgZm9ybWF0IHN0
cmluZy4KIC8vCiAvLyBFeGFtcGxlIDE6Ci0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBTdWJzdGl0dXRl
KCIkMSBwdXJjaGFzZWQgJDAgJDIuIFRoYW5rcyAkMSEiLAorLy8gICBzdHJpbmcgcyA9IFN1YnN0
aXR1dGUoIiQxIHB1cmNoYXNlZCAkMCAkMi4gVGhhbmtzICQxISIsCiAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICA1LCAiQm9iIiwgIkFwcGxlcyIpOwogLy8gICBFWFBFQ1RfRVEoIkJvYiBwdXJj
aGFzZWQgNSBBcHBsZXMuIFRoYW5rcyBCb2IhIiwgcyk7CiAvLwogLy8gRXhhbXBsZSAyOgotLy8g
ICBzdGQ6OnN0cmluZyBzID0gIkhpLiAiOworLy8gICBzdHJpbmcgcyA9ICJIaS4gIjsKIC8vICAg
U3Vic3RpdHV0ZUFuZEFwcGVuZCgmcywgIk15IG5hbWUgaXMgJDAgYW5kIEkgYW0gJDEgeWVhcnMg
b2xkLiIsICJCb2IiLCA1KTsKIC8vICAgRVhQRUNUX0VRKCJIaS4gTXkgbmFtZSBpcyBCb2IgYW5k
IEkgYW0gNSB5ZWFycyBvbGQuIiwgcyk7CiAvLwogLy8KIC8vIFN1cHBvcnRlZCB0eXBlczoKLS8v
ICAgKiBhYnNsOjpzdHJpbmdfdmlldywgc3RkOjpzdHJpbmcsIGNvbnN0IGNoYXIqIChudWxsIGlz
IGVxdWl2YWxlbnQgdG8gIiIpCisvLyAgICogYWJzbDo6c3RyaW5nX3ZpZXcsIHN0cmluZywgY29u
c3QgY2hhciogKG51bGwgaXMgZXF1aXZhbGVudCB0byAiIikKIC8vICAgKiBpbnQzMl90LCBpbnQ2
NF90LCB1aW50MzJfdCwgdWludDY0CiAvLyAgICogZmxvYXQsIGRvdWJsZQogLy8gICAqIGJvb2wg
KFByaW50ZWQgYXMgInRydWUiIG9yICJmYWxzZSIpCi0vLyAgICogcG9pbnRlciB0eXBlcyBvdGhl
ciB0aGFuIGNoYXIqIChQcmludGVkIGFzICIweDxsb3dlciBjYXNlIGhleCBzdGQ6OnN0cmluZz4i
LAorLy8gICAqIHBvaW50ZXIgdHlwZXMgb3RoZXIgdGhhbiBjaGFyKiAoUHJpbnRlZCBhcyAiMHg8
bG93ZXIgY2FzZSBoZXggc3RyaW5nPiIsCiAvLyAgICAgZXhjZXB0IHRoYXQgbnVsbCBpcyBwcmlu
dGVkIGFzICJOVUxMIikKIC8vCi0vLyBJZiBhbiBpbnZhbGlkIGZvcm1hdCBzdGQ6OnN0cmluZyBp
cyBwcm92aWRlZCwgU3Vic3RpdHV0ZSByZXR1cm5zIGFuIGVtcHR5IHN0ZDo6c3RyaW5nCi0vLyBh
bmQgU3Vic3RpdHV0ZUFuZEFwcGVuZCBkb2VzIG5vdCBjaGFuZ2UgdGhlIHByb3ZpZGVkIG91dHB1
dCBzdGQ6OnN0cmluZy4KLS8vIEEgZm9ybWF0IHN0ZDo6c3RyaW5nIGlzIGludmFsaWQgaWYgaXQ6
CisvLyBJZiBhbiBpbnZhbGlkIGZvcm1hdCBzdHJpbmcgaXMgcHJvdmlkZWQsIFN1YnN0aXR1dGUg
cmV0dXJucyBhbiBlbXB0eSBzdHJpbmcKKy8vIGFuZCBTdWJzdGl0dXRlQW5kQXBwZW5kIGRvZXMg
bm90IGNoYW5nZSB0aGUgcHJvdmlkZWQgb3V0cHV0IHN0cmluZy4KKy8vIEEgZm9ybWF0IHN0cmlu
ZyBpcyBpbnZhbGlkIGlmIGl0OgogLy8gICAqIGVuZHMgaW4gYW4gdW5lc2NhcGVkICQgY2hhcmFj
dGVyLAogLy8gICAgIGUuZy4gIkhlbGxvICQiLCBvcgogLy8gICAqIGNhbGxzIGZvciBhIHBvc2l0
aW9uIGFyZ3VtZW50IHdoaWNoIGlzIG5vdCBwcm92aWRlZCwKQEAgLTg4LDcgKzg4LDcgQEAgbmFt
ZXNwYWNlIHN1YnN0aXR1dGVfaW50ZXJuYWwgewogLy8KIC8vIFRoaXMgY2xhc3MgcHJvdmlkZXMg
YW4gYXJndW1lbnQgdHlwZSBmb3IgYGFic2w6OlN1YnN0aXR1dGUoKWAgYW5kCiAvLyBgYWJzbDo6
U3Vic3RpdHV0ZUFuZEFwcGVuZCgpYC4gYEFyZ2AgaGFuZGxlcyBpbXBsaWNpdCBjb252ZXJzaW9u
IG9mIHZhcmlvdXMKLS8vIHR5cGVzIHRvIGEgc3RkOjpzdHJpbmcuIChgQXJnYCBpcyB2ZXJ5IHNp
bWlsYXIgdG8gdGhlIGBBbHBoYU51bWAgY2xhc3MgaW4KKy8vIHR5cGVzIHRvIGEgc3RyaW5nLiAo
YEFyZ2AgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZSBgQWxwaGFOdW1gIGNsYXNzIGluCiAvLyBgU3Ry
Q2F0KClgLikKIC8vCiAvLyBUaGlzIGNsYXNzIGhhcyBpbXBsaWNpdCBjb25zdHJ1Y3RvcnMuCkBA
IC0xOTcsOCArMTk3LDggQEAgY29uc3RleHByIGludCBQbGFjZWhvbGRlckJpdG1hc2soY29uc3Qg
Y2hhciogZm9ybWF0KSB7CiAKIC8vIFN1YnN0aXR1dGVBbmRBcHBlbmQoKQogLy8KLS8vIFN1YnN0
aXR1dGVzIHZhcmlhYmxlcyBpbnRvIGEgZ2l2ZW4gZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCBhcHBl
bmRzIHRvIGEgZ2l2ZW4KLS8vIG91dHB1dCBzdGQ6OnN0cmluZy4gU2VlIGZpbGUgY29tbWVudHMg
YWJvdmUgZm9yIHVzYWdlLgorLy8gU3Vic3RpdHV0ZXMgdmFyaWFibGVzIGludG8gYSBnaXZlbiBm
b3JtYXQgc3RyaW5nIGFuZCBhcHBlbmRzIHRvIGEgZ2l2ZW4KKy8vIG91dHB1dCBzdHJpbmcuIFNl
ZSBmaWxlIGNvbW1lbnRzIGFib3ZlIGZvciB1c2FnZS4KIC8vCiAvLyBUaGUgZGVjbGFyYXRpb25z
IG9mIGBTdWJzdGl0dXRlQW5kQXBwZW5kKClgIGJlbG93IGNvbnNpc3Qgb2Ygb3ZlcmxvYWRzCiAv
LyBmb3IgcGFzc2luZyAwIHRvIDEwIGFyZ3VtZW50cywgcmVzcGVjdGl2ZWx5LgpAQCAtNDQ0LDcg
KzQ0NCw3IEBAIHZvaWQgU3Vic3RpdHV0ZUFuZEFwcGVuZCgKIAogLy8gU3Vic3RpdHV0ZSgpCiAv
LwotLy8gU3Vic3RpdHV0ZXMgdmFyaWFibGVzIGludG8gYSBnaXZlbiBmb3JtYXQgc3RkOjpzdHJp
bmcuIFNlZSBmaWxlIGNvbW1lbnRzIGFib3ZlCisvLyBTdWJzdGl0dXRlcyB2YXJpYWJsZXMgaW50
byBhIGdpdmVuIGZvcm1hdCBzdHJpbmcuIFNlZSBmaWxlIGNvbW1lbnRzIGFib3ZlCiAvLyBmb3Ig
dXNhZ2UuCiAvLwogLy8gVGhlIGRlY2xhcmF0aW9ucyBvZiBgU3Vic3RpdHV0ZSgpYCBiZWxvdyBj
b25zaXN0IG9mIG92ZXJsb2FkcyBmb3IgcGFzc2luZyAwCkBAIC00NTYsNyArNDU2LDcgQEAgdm9p
ZCBTdWJzdGl0dXRlQW5kQXBwZW5kKAogLy8gRXhhbXBsZToKIC8vICB0ZW1wbGF0ZSA8dHlwZW5h
bWUuLi4gQXJncz4KIC8vICB2b2lkIFZhck1zZyhhYnNsOjpzdHJpbmdfdmlldyBmb3JtYXQsIGNv
bnN0IEFyZ3MmLi4uIGFyZ3MpIHsKLS8vICAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdWJzdGl0
dXRlKGZvcm1hdCwgYXJncy4uLik7CisvLyAgICBzdHJpbmcgcyA9IGFic2w6OlN1YnN0aXR1dGUo
Zm9ybWF0LCBhcmdzLi4uKTsKIAogQUJTTF9NVVNUX1VTRV9SRVNVTFQgaW5saW5lIHN0ZDo6c3Ry
aW5nIFN1YnN0aXR1dGUoYWJzbDo6c3RyaW5nX3ZpZXcgZm9ybWF0KSB7CiAgIHN0ZDo6c3RyaW5n
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5iYXplbCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5iYXplbAppbmRleCA4ZDMwMmUwMTIyM2I0NWJk
OTJhMjE2NzBhMTFmNTU5MmY5YjE1YzY0Li5mNTJlOWQ0MTY0NGE4ZDkzMWJmMzlmYWU3ZWM4NDMy
N2JlYWY0MWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQlVJTEQuYmF6ZWwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0JVSUxELmJhemVsCkBAIC04OCw2ICs4OCw5IEBA
IGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAgc3JjcyA9IFsiYmFycmllcl90ZXN0
LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgdGFncyA9IFsKKyAgICAg
ICAgIm5vX3Rlc3Rfd2FzbSIsCisgICAgXSwKICAgICBkZXBzID0gWwogICAgICAgICAiOnN5bmNo
cm9uaXphdGlvbiIsCiAgICAgICAgICIvL2Fic2wvdGltZSIsCkBAIC0xMDAsNiArMTAzLDkgQEAg
Y2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJibG9ja2luZ19jb3Vu
dGVyX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0g
WworICAgICAgICAibm9fdGVzdF93YXNtIiwKKyAgICBdLAogICAgIGRlcHMgPSBbCiAgICAgICAg
ICI6c3luY2hyb25pemF0aW9uIiwKICAgICAgICAgIi8vYWJzbC90aW1lIiwKQEAgLTEzOCw2ICsx
NDQsOSBAQCBjY19saWJyYXJ5KAogICAgIG5hbWUgPSAidGhyZWFkX3Bvb2wiLAogICAgIHRlc3Rv
bmx5ID0gMSwKICAgICBoZHJzID0gWyJpbnRlcm5hbC90aHJlYWRfcG9vbC5oIl0sCisgICAgdmlz
aWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAorICAgIF0sCiAg
ICAgZGVwcyA9IFsKICAgICAgICAgIjpzeW5jaHJvbml6YXRpb24iLAogICAgICAgICAiLy9hYnNs
L2Jhc2U6Y29yZV9oZWFkZXJzIiwKQEAgLTE0OSw2ICsxNTgsNyBAQCBjY190ZXN0KAogICAgIHNp
emUgPSAibGFyZ2UiLAogICAgIHNyY3MgPSBbIm11dGV4X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUywKKyAgICBzaGFyZF9jb3VudCA9IDI1LAogICAgIGRlcHMgPSBbCiAg
ICAgICAgICI6c3luY2hyb25pemF0aW9uIiwKICAgICAgICAgIjp0aHJlYWRfcG9vbCIsCkBAIC0y
MDUsNiArMjE1LDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gInBlcl90aHJlYWRfc2VtX3Rlc3Qi
LAogICAgIHNpemUgPSAibWVkaXVtIiwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAg
ICB0YWdzID0gWyJub190ZXN0X3dhc20iXSwKICAgICBkZXBzID0gWwogICAgICAgICAiOnBlcl90
aHJlYWRfc2VtX3Rlc3RfY29tbW9uIiwKICAgICAgICAgIjpzeW5jaHJvbml6YXRpb24iLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25p
emF0aW9uL0JVSUxELmduCmluZGV4IDM2NjRhYTEzMjc0ZjQwNDBmOTM2OWI5NWY0MGRlZWYyYjU5
MGRiOGYuLmU2Zjc2M2EwNjBiYTljZTBhYWVlOWMxNDE4MTBmZmY2YjRlNzhjMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6
YXRpb24vQlVJTEQuZ24KQEAgLTUwLDggKzUwLDggQEAgc291cmNlX3NldCgic3luY2hyb25pemF0
aW9uIikgewogICAgICJpbnRlcm5hbC9jcmVhdGVfdGhyZWFkX2lkZW50aXR5LmNjIiwKICAgICAi
aW50ZXJuYWwvcGVyX3RocmVhZF9zZW0uY2MiLAogICAgICJpbnRlcm5hbC93YWl0ZXIuY2MiLAor
ICAgICJtdXRleC5jYyIsCiAgICAgIm5vdGlmaWNhdGlvbi5jYyIsCi0gICAgIm11dGV4LmNjIgog
ICBdCiAgIHB1YmxpYyA9IFsKICAgICAiYmFycmllci5oIiwKQEAgLTkzLDYgKzkzLDggQEAgc291
cmNlX3NldCgidGhyZWFkX3Bvb2wiKSB7CiAgICAgIjpzeW5jaHJvbml6YXRpb24iLAogICAgICIu
Li9iYXNlOmNvcmVfaGVhZGVycyIsCiAgIF0KKyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxp
dHkgKz0gWyAiLi4vKiIgXQogfQogCiBzb3VyY2Vfc2V0KCJwZXJfdGhyZWFkX3NlbV90ZXN0X2Nv
bW1vbiIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFw
aGN5Y2xlcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlcy5j
YwppbmRleCBhYjFmM2Y4NGU3NGMxZDdlZGVmNjM3OWUwMjY4NGIwMGI1M2E3ZTM0Li5kMzg3OGRl
MmI2OGYyMTkyOWYwMGI4NjM0YmNiOTc5NGEwZTRmMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5j
aHJvbml6YXRpb24vaW50ZXJuYWwvZ3JhcGhjeWNsZXMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25p
emF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmNjCkBAIC0yMDQsOCArMjA0LDcgQEAgY2xhc3Mg
Tm9kZVNldCB7CiAgIH0KIAogIHByaXZhdGU6Ci0gIHN0YXRpYyBjb25zdCBpbnQzMl90IGtFbXB0
eTsKLSAgc3RhdGljIGNvbnN0IGludDMyX3Qga0RlbDsKKyAgZW51bSA6IGludDMyX3QgeyBrRW1w
dHkgPSAtMSwga0RlbCA9IC0yIH07CiAgIFZlYzxpbnQzMl90PiB0YWJsZV87CiAgIHVpbnQzMl90
IG9jY3VwaWVkXzsgICAgIC8vIENvdW50IG9mIG5vbi1lbXB0eSBzbG90cyAoaW5jbHVkZXMgZGVs
ZXRlZCBzbG90cykKIApAQCAtMjU1LDkgKzI1NCw2IEBAIGNsYXNzIE5vZGVTZXQgewogICBOb2Rl
U2V0JiBvcGVyYXRvcj0oY29uc3QgTm9kZVNldCYpID0gZGVsZXRlOwogfTsKIAotY29uc3QgaW50
MzJfdCBOb2RlU2V0OjprRW1wdHkgPSAtMTsKLWNvbnN0IGludDMyX3QgTm9kZVNldDo6a0RlbCA9
IC0yOwotCiAvLyBXZSBlbmNvZGUgYSBub2RlIGluZGV4IGFuZCBhIG5vZGUgdmVyc2lvbiBpbiBH
cmFwaElkLiAgVGhlIHZlcnNpb24KIC8vIG51bWJlciBpcyBpbmNyZW1lbnRlZCB3aGVuIHRoZSBH
cmFwaElkIGlzIGZyZWVkIHdoaWNoIGF1dG9tYXRpY2FsbHkKIC8vIGludmFsaWRhdGVzIGFsbCBj
b3BpZXMgb2YgdGhlIEdyYXBoSWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24v
aW50ZXJuYWwvcGVyX3RocmVhZF9zZW1fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9p
bnRlcm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNjCmluZGV4IDJiNTJlYTc2YWIwZTk0MjYwMWVi
NTBmMTYwZmU4NDViOWIwNjg1Y2YuLmMyOWQ4NDAzZGY0M2ZiYzNkOGQyYzVjN2NjZGFmM2FlZWQy
ZjJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhy
ZWFkX3NlbV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJf
dGhyZWFkX3NlbV90ZXN0LmNjCkBAIC0xNTMsMTIgKzE1MywxNSBAQCBURVNUX0YoUGVyVGhyZWFk
U2VtVGVzdCwgV2l0aFRpbWVvdXQpIHsKIAogVEVTVF9GKFBlclRocmVhZFNlbVRlc3QsIFRpbWVv
dXRzKSB7CiAgIGFic2w6OlRpbWUgdGltZW91dCA9IGFic2w6Ok5vdygpICsgYWJzbDo6TWlsbGlz
ZWNvbmRzKDUwKTsKKyAgLy8gQWxsb3cgZm9yIGEgc2xpZ2h0IGVhcmx5IHJldHVybiwgdG8gYWNj
b3VudCBmb3IgcXVhbGl0eSBvZiBpbXBsZW1lbnRhdGlvbgorICAvLyBpc3N1ZXMgb24gdmFyaW91
cyBwbGF0Zm9ybXMuCisgIGNvbnN0IGFic2w6OkR1cmF0aW9uIHNsb3AgPSBhYnNsOjpNaWNyb3Nl
Y29uZHMoMjAwKTsKICAgRVhQRUNUX0ZBTFNFKFdhaXQodGltZW91dCkpOwotICBFWFBFQ1RfTEUo
dGltZW91dCwgYWJzbDo6Tm93KCkpOworICBFWFBFQ1RfTEUodGltZW91dCwgYWJzbDo6Tm93KCkg
KyBzbG9wKTsKIAogICBhYnNsOjpUaW1lIG5lZ2F0aXZlX3RpbWVvdXQgPSBhYnNsOjpVbml4RXBv
Y2goKSAtIGFic2w6Ok1pbGxpc2Vjb25kcygxMDApOwogICBFWFBFQ1RfRkFMU0UoV2FpdChuZWdh
dGl2ZV90aW1lb3V0KSk7Ci0gIEVYUEVDVF9MRShuZWdhdGl2ZV90aW1lb3V0LCBhYnNsOjpOb3co
KSk7ICAvLyB0cml2aWFsbHkgdHJ1ZSA6KQorICBFWFBFQ1RfTEUobmVnYXRpdmVfdGltZW91dCwg
YWJzbDo6Tm93KCkgKyBzbG9wKTsgIC8vIHRyaXZpYWxseSB0cnVlIDopCiAKICAgUG9zdChHZXRP
ckNyZWF0ZUN1cnJlbnRUaHJlYWRJZGVudGl0eSgpKTsKICAgLy8gVGhlIHdhaXQgaGVyZSBoYXMg
YW4gZXhwaXJlZCB0aW1lb3V0LCBidXQgd2UgaGF2ZSBhIHdha2UgdG8gY29uc3VtZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9tdXRleC5jYwppbmRleCA4MGYzNGYwMzVmYzZiNjc5ZWViMGIxNGQ4OWNmYWVhYTFmODBm
MDUxLi45ZDU5YTc5ZDkyZDlmNzkyOGYzZGZlMmE3MzA0MzRlMTU0YWNlYzQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0
aW9uL211dGV4LmNjCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RhdGljIHN0cnVjdCBTeW5jaEV2ZW50
IHsgICAgIC8vIHRoaXMgaXMgYSB0cml2aWFsIGhhc2ggdGFibGUgZm9yIHRoZSBldmVudHMKIC8v
IHNldCAiYml0cyIgaW4gdGhlIHdvcmQgdGhlcmUgKHdhaXRpbmcgdW50aWwgbG9ja2JpdCBpcyBj
bGVhciBiZWZvcmUgZG9pbmcKIC8vIHNvKSwgYW5kIHJldHVybiBhIHJlZmNvdW50ZWQgcmVmZXJl
bmNlIHRoYXQgd2lsbCByZW1haW4gdmFsaWQgdW50aWwKIC8vIFVucmVmU3luY2hFdmVudCgpIGlz
IGNhbGxlZC4gIElmIGEgbmV3IFN5bmNoRXZlbnQgaXMgYWxsb2NhdGVkLAotLy8gdGhlIHN0ZDo6
c3RyaW5nIG5hbWUgaXMgY29waWVkIGludG8gaXQuCisvLyB0aGUgc3RyaW5nIG5hbWUgaXMgY29w
aWVkIGludG8gaXQuCiAvLyBXaGVuIHVzZWQgd2l0aCBhIG11dGV4LCB0aGUgY2FsbGVyIHNob3Vs
ZCBhbHNvIGVuc3VyZSB0aGF0IGtNdUV2ZW50CiAvLyBpcyBzZXQgaW4gdGhlIG11dGV4IHdvcmQs
IGFuZCBzaW1pbGFybHkgZm9yIGNvbmRpdGlvbiB2YXJpYWJsZXMgYW5kIGtDVkV2ZW50Lgogc3Rh
dGljIFN5bmNoRXZlbnQgKkVuc3VyZVN5bmNoRXZlbnQoc3RkOjphdG9taWM8aW50cHRyX3Q+ICph
ZGRyLApAQCAtMTgyNyw4ICsxODI3LDggQEAgYm9vbCBNdXRleDo6TG9ja1Nsb3dXaXRoRGVhZGxp
bmUoTXVIb3cgaG93LCBjb25zdCBDb25kaXRpb24gKmNvbmQsCiAgICAgICAgICBjb25kID09IG51
bGxwdHIgfHwgRXZhbENvbmRpdGlvbkFubm90YXRlZChjb25kLCB0aGlzLCB0cnVlLCBob3cpOwog
fQogCi0vLyBSQVdfQ0hFQ0tfRk1UKCkgdGFrZXMgYSBjb25kaXRpb24sIGEgcHJpbnRmLXN0eWxl
IGZvcm1hdCBzdGQ6OnN0cmluZywgYW5kCi0vLyB0aGUgcHJpbnRmLXN0eWxlIGFyZ3VtZW50IGxp
c3QuICAgVGhlIGZvcm1hdCBzdGQ6OnN0cmluZyBtdXN0IGJlIGEgbGl0ZXJhbC4KKy8vIFJBV19D
SEVDS19GTVQoKSB0YWtlcyBhIGNvbmRpdGlvbiwgYSBwcmludGYtc3R5bGUgZm9ybWF0IHN0cmlu
ZywgYW5kCisvLyB0aGUgcHJpbnRmLXN0eWxlIGFyZ3VtZW50IGxpc3QuICAgVGhlIGZvcm1hdCBz
dHJpbmcgbXVzdCBiZSBhIGxpdGVyYWwuCiAvLyBBcmd1bWVudHMgYWZ0ZXIgdGhlIGZpcnN0IGFy
ZSBub3QgZXZhbHVhdGVkIHVubGVzcyB0aGUgY29uZGl0aW9uIGlzIHRydWUuCiAjZGVmaW5lIFJB
V19DSEVDS19GTVQoY29uZCwgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKQEAgLTE5NzUsNyArMTk3NSw3IEBAIHZvaWQgTXV0ZXg6OkxvY2tTbG93
TG9vcChTeW5jaFdhaXRQYXJhbXMgKndhaXRwLCBpbnQgZmxhZ3MpIHsKIC8vIFVubG9jayB0aGlz
IG11dGV4LCB3aGljaCBpcyBoZWxkIGJ5IHRoZSBjdXJyZW50IHRocmVhZC4KIC8vIElmIHdhaXRw
IGlzIG5vbi16ZXJvLCBpdCBtdXN0IGJlIHRoZSB3YWl0IHBhcmFtZXRlcnMgZm9yIHRoZSBjdXJy
ZW50IHRocmVhZAogLy8gd2hpY2ggaG9sZHMgdGhlIGxvY2sgYnV0IGlzIG5vdCBydW5uYWJsZSBi
ZWNhdXNlIGl0cyBjb25kaXRpb24gaXMgZmFsc2UKLS8vIG9yIGl0IG4gdGhlIHByb2Nlc3Mgb2Yg
YmxvY2tpbmcgb24gYSBjb25kaXRpb24gdmFyaWFibGU7IGl0IG11c3QgcmVxdWV1ZQorLy8gb3Ig
aXQgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmxvY2tpbmcgb24gYSBjb25kaXRpb24gdmFyaWFibGU7
IGl0IG11c3QgcmVxdWV1ZQogLy8gaXRzZWxmIG9uIHRoZSBtdXRleC9jb25kdmFyIHRvIHdhaXQg
Zm9yIGl0cyBjb25kaXRpb24gdG8gYmVjb21lIHRydWUuCiB2b2lkIE11dGV4OjpVbmxvY2tTbG93
KFN5bmNoV2FpdFBhcmFtcyAqd2FpdHApIHsKICAgaW50cHRyX3QgdiA9IG11Xy5sb2FkKHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9u
L211dGV4LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaAppbmRleCA4M2MyMTQ4Njdh
YzUzYTkxMjJkZDRlOTc1M2ZjOGJmNzJlMTI4YmU1Li5hMzc4MTkwNTM4ZTJkMjM2ZWFmMzk5MzE1
MDA3ZDAwODcyZTIwODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXgu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaApAQCAtOTYyLDcgKzk2Miw3IEBA
IHZvaWQgUmVnaXN0ZXJNdXRleFRyYWNlcih2b2lkICgqZm4pKGNvbnN0IGNoYXIgKm1zZywgY29u
c3Qgdm9pZCAqb2JqLAogLy8KIC8vIFRoZSBmdW5jdGlvbiBwb2ludGVyIHJlZ2lzdGVyZWQgaGVy
ZSB3aWxsIGJlIGNhbGxlZCBoZXJlIG9uIHZhcmlvdXMgQ29uZFZhcgogLy8gZXZlbnRzLiAgVGhl
IGNhbGxiYWNrIGlzIGdpdmVuIGFuIG9wYXF1ZSBoYW5kbGUgdG8gdGhlIENvbmRWYXIgb2JqZWN0
IGFuZAotLy8gYSBzdGQ6OnN0cmluZyBpZGVudGlmeWluZyB0aGUgZXZlbnQuICBUaGlzIGlzIHRo
cmVhZC1zYWZlLCBidXQgb25seSBhIHNpbmdsZQorLy8gYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhl
IGV2ZW50LiAgVGhpcyBpcyB0aHJlYWQtc2FmZSwgYnV0IG9ubHkgYSBzaW5nbGUKIC8vIHRyYWNl
ciBjYW4gYmUgcmVnaXN0ZXJlZC4KIC8vCiAvLyBFdmVudHMgdGhhdCBjYW4gYmUgc2VudCBhcmUg
IldhaXQiLCAiVW53YWl0IiwgIlNpZ25hbCB3YWtldXAiLCBhbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9ub3RpZmljYXRpb25fdGVzdC5jYwppbmRleCA5YjNiNmE1YTllODRlYzFhMzY1NWEyYzhm
NDNlYjhmYmM1ODMyZWY2Li5kODcwOGQ1NTFhMTU3NTc0NmVhMmE4NTQyNjk3MmZkOTgxOTExMDE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9uX3Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL25vdGlmaWNhdGlvbl90ZXN0LmNjCkBAIC03MSwx
MCArNzEsMTMgQEAgc3RhdGljIHZvaWQgQmFzaWNUZXN0cyhib29sIG5vdGlmeV9iZWZvcmVfd2Fp
dGluZywgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pIHsKICAgICAgIG5vdGlmaWNhdGlvbi0+
V2FpdEZvck5vdGlmaWNhdGlvbldpdGhUaW1lb3V0KGFic2w6Ok1pbGxpc2Vjb25kcygwKSkpOwog
ICBFWFBFQ1RfRkFMU0Uobm90aWZpY2F0aW9uLT5XYWl0Rm9yTm90aWZpY2F0aW9uV2l0aERlYWRs
aW5lKGFic2w6Ok5vdygpKSk7CiAKKyAgY29uc3QgYWJzbDo6RHVyYXRpb24gZGVsYXkgPSBhYnNs
OjpNaWxsaXNlY29uZHMoNTApOworICAvLyBBbGxvdyBmb3IgYSBzbGlnaHQgZWFybHkgcmV0dXJu
LCB0byBhY2NvdW50IGZvciBxdWFsaXR5IG9mIGltcGxlbWVudGF0aW9uCisgIC8vIGlzc3VlcyBv
biB2YXJpb3VzIHBsYXRmb3Jtcy4KKyAgY29uc3QgYWJzbDo6RHVyYXRpb24gc2xvcCA9IGFic2w6
Ok1pY3Jvc2Vjb25kcygyMDApOwogICBhYnNsOjpUaW1lIHN0YXJ0ID0gYWJzbDo6Tm93KCk7Ci0g
IEVYUEVDVF9GQUxTRSgKLSAgICAgIG5vdGlmaWNhdGlvbi0+V2FpdEZvck5vdGlmaWNhdGlvbldp
dGhUaW1lb3V0KGFic2w6Ok1pbGxpc2Vjb25kcyg1MCkpKTsKLSAgRVhQRUNUX0xFKHN0YXJ0ICsg
YWJzbDo6TWlsbGlzZWNvbmRzKDUwKSwgYWJzbDo6Tm93KCkpOworICBFWFBFQ1RfRkFMU0Uobm90
aWZpY2F0aW9uLT5XYWl0Rm9yTm90aWZpY2F0aW9uV2l0aFRpbWVvdXQoZGVsYXkpKTsKKyAgRVhQ
RUNUX0xFKHN0YXJ0ICsgZGVsYXksIGFic2w6Ok5vdygpICsgc2xvcCk7CiAKICAgVGhyZWFkU2Fm
ZUNvdW50ZXIgcmVhZHlfY291bnRlcjsKICAgVGhyZWFkU2FmZUNvdW50ZXIgZG9uZV9jb3VudGVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvQlVJTEQuZ24K
aW5kZXggOTkyN2FmODM0M2NiMTYwOTllMDIyY2QzNzgwZjQ4NmU3YWZhNDExZC4uNTc1OGU5ZGMx
ZTNjM2RjNDVmMjhhNTI1ZmZlNjAxM2E4MzMxNDc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9C
VUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0JVSUxELmduCkBAIC02Miw4ICs2Miw5IEBAIHNvdXJj
ZV9zZXQoInRlc3RfdXRpbCIpIHsKICAgICAiOnRpbWUiLAogICAgICIuLi9iYXNlIiwKICAgICAi
Li4vdGltZS9pbnRlcm5hbC9jY3R6OnRpbWVfem9uZSIsCi0gICAgIi8vdGVzdGluZy9ndGVzdCIs
CiAgICAgIi8vdGVzdGluZy9nbW9jayIsCisgICAgIi8vdGVzdGluZy9ndGVzdCIsCisgICAgIi8v
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC86Z21vY2siLAogICBdCiAgIHZpc2liaWxpdHkgPSBbXQog
ICB2aXNpYmlsaXR5ICs9IFsgIi4uL3RpbWU6KiIgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9k
dXJhdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVyYXRpb24uY2MKaW5kZXggZjQwMjEzN2IwYTY1MGQy
YjdlZDYwNTI2MmZkOTU0MDYyYWFiMjlhMC4uMjk1MGM3Y2RjNjMyMGI0ZDNmODQzNGIxZTJiMDFh
ZDU2ZDcyZGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbi5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2R1cmF0aW9uLmNjCkBAIC02NjYsNyArNjY2LDcgQEAgc3RkOjpjaHJvbm86OmhvdXJz
IFRvQ2hyb25vSG91cnMoRHVyYXRpb24gZCkgewogfQogCiAvLwotLy8gVG8vRnJvbSBzdGQ6OnN0
cmluZyBmb3JtYXR0aW5nLgorLy8gVG8vRnJvbSBzdHJpbmcgZm9ybWF0dGluZy4KIC8vCiAKIG5h
bWVzcGFjZSB7CkBAIC03NDQsNyArNzQ0LDcgQEAgdm9pZCBBcHBlbmROdW1iZXJVbml0KHN0ZDo6
c3RyaW5nKiBvdXQsIGRvdWJsZSBuLCBEaXNwbGF5VW5pdCB1bml0KSB7CiB9ICAvLyBuYW1lc3Bh
Y2UKIAogLy8gRnJvbSBHbydzIGRvYyBhdCBodHRwOi8vZ29sYW5nLm9yZy9wa2cvdGltZS8jRHVy
YXRpb24uU3RyaW5nCi0vLyAgIFtGb3JtYXREdXJhdGlvbl0gcmV0dXJucyBhIHN0ZDo6c3RyaW5n
IHJlcHJlc2VudGluZyB0aGUgZHVyYXRpb24gaW4gdGhlCisvLyAgIFtGb3JtYXREdXJhdGlvbl0g
cmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGR1cmF0aW9uIGluIHRoZQogLy8gICBm
b3JtICI3MmgzbTAuNXMiLiAgTGVhZGluZyB6ZXJvIHVuaXRzIGFyZSBvbWl0dGVkLiAgQXMgYSBz
cGVjaWFsCiAvLyAgIGNhc2UsIGR1cmF0aW9ucyBsZXNzIHRoYW4gb25lIHNlY29uZCBmb3JtYXQg
dXNlIGEgc21hbGxlciB1bml0CiAvLyAgIChtaWxsaS0sIG1pY3JvLSwgb3IgbmFub3NlY29uZHMp
IHRvIGVuc3VyZSB0aGF0IHRoZSBsZWFkaW5nIGRpZ2l0CkBAIC03ODcsOCArNzg3LDggQEAgc3Rk
OjpzdHJpbmcgRm9ybWF0RHVyYXRpb24oRHVyYXRpb24gZCkgewogbmFtZXNwYWNlIHsKIAogLy8g
QSBoZWxwZXIgZm9yIFBhcnNlRHVyYXRpb24oKSB0aGF0IHBhcnNlcyBhIGxlYWRpbmcgbnVtYmVy
IGZyb20gdGhlIGdpdmVuCi0vLyBzdGQ6OnN0cmluZyBhbmQgc3RvcmVzIHRoZSByZXN1bHQgaW4g
KmludF9wYXJ0LypmcmFjX3BhcnQvKmZyYWNfc2NhbGUuICBUaGUKLS8vIGdpdmVuIHN0ZDo6c3Ry
aW5nIHBvaW50ZXIgaXMgbW9kaWZpZWQgdG8gcG9pbnQgdG8gdGhlIGZpcnN0IHVuY29uc3VtZWQg
Y2hhci4KKy8vIHN0cmluZyBhbmQgc3RvcmVzIHRoZSByZXN1bHQgaW4gKmludF9wYXJ0LypmcmFj
X3BhcnQvKmZyYWNfc2NhbGUuICBUaGUKKy8vIGdpdmVuIHN0cmluZyBwb2ludGVyIGlzIG1vZGlm
aWVkIHRvIHBvaW50IHRvIHRoZSBmaXJzdCB1bmNvbnN1bWVkIGNoYXIuCiBib29sIENvbnN1bWVE
dXJhdGlvbk51bWJlcihjb25zdCBjaGFyKiogZHBwLCBpbnQ2NF90KiBpbnRfcGFydCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QqIGZyYWNfcGFydCwgaW50NjRfdCogZnJhY19z
Y2FsZSkgewogICAqaW50X3BhcnQgPSAwOwpAQCAtODE2LDggKzgxNiw4IEBAIGJvb2wgQ29uc3Vt
ZUR1cmF0aW9uTnVtYmVyKGNvbnN0IGNoYXIqKiBkcHAsIGludDY0X3QqIGludF9wYXJ0LAogfQog
CiAvLyBBIGhlbHBlciBmb3IgUGFyc2VEdXJhdGlvbigpIHRoYXQgcGFyc2VzIGEgbGVhZGluZyB1
bml0IGRlc2lnbmF0b3IgKGUuZy4sCi0vLyBucywgdXMsIG1zLCBzLCBtLCBoKSBmcm9tIHRoZSBn
aXZlbiBzdGQ6OnN0cmluZyBhbmQgc3RvcmVzIHRoZSByZXN1bHRpbmcgdW5pdAotLy8gaW4gIip1
bml0Ii4gIFRoZSBnaXZlbiBzdGQ6OnN0cmluZyBwb2ludGVyIGlzIG1vZGlmaWVkIHRvIHBvaW50
IHRvIHRoZSBmaXJzdAorLy8gbnMsIHVzLCBtcywgcywgbSwgaCkgZnJvbSB0aGUgZ2l2ZW4gc3Ry
aW5nIGFuZCBzdG9yZXMgdGhlIHJlc3VsdGluZyB1bml0CisvLyBpbiAiKnVuaXQiLiAgVGhlIGdp
dmVuIHN0cmluZyBwb2ludGVyIGlzIG1vZGlmaWVkIHRvIHBvaW50IHRvIHRoZSBmaXJzdAogLy8g
dW5jb25zdW1lZCBjaGFyLgogYm9vbCBDb25zdW1lRHVyYXRpb25Vbml0KGNvbnN0IGNoYXIqKiBz
dGFydCwgRHVyYXRpb24qIHVuaXQpIHsKICAgY29uc3QgY2hhciAqcyA9ICpzdGFydDsKQEAgLTg1
MCw3ICs4NTAsNyBAQCBib29sIENvbnN1bWVEdXJhdGlvblVuaXQoY29uc3QgY2hhcioqIHN0YXJ0
LCBEdXJhdGlvbiogdW5pdCkgewogfSAgLy8gbmFtZXNwYWNlCiAKIC8vIEZyb20gR28ncyBkb2Mg
YXQgaHR0cDovL2dvbGFuZy5vcmcvcGtnL3RpbWUvI1BhcnNlRHVyYXRpb24KLS8vICAgW1BhcnNl
RHVyYXRpb25dIHBhcnNlcyBhIGR1cmF0aW9uIHN0ZDo6c3RyaW5nLiAgQSBkdXJhdGlvbiBzdGQ6
OnN0cmluZyBpcworLy8gICBbUGFyc2VEdXJhdGlvbl0gcGFyc2VzIGEgZHVyYXRpb24gc3RyaW5n
LiAgQSBkdXJhdGlvbiBzdHJpbmcgaXMKIC8vICAgYSBwb3NzaWJseSBzaWduZWQgc2VxdWVuY2Ug
b2YgZGVjaW1hbCBudW1iZXJzLCBlYWNoIHdpdGggb3B0aW9uYWwKIC8vICAgZnJhY3Rpb24gYW5k
IGEgdW5pdCBzdWZmaXgsIHN1Y2ggYXMgIjMwMG1zIiwgIi0xLjVoIiBvciAiMmg0NW0iLgogLy8g
ICBWYWxpZCB0aW1lIHVuaXRzIGFyZSAibnMiLCAidXMiICJtcyIsICJzIiwgIm0iLCAiaCIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Zvcm1hdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0LmNjCmlu
ZGV4IGU5OGU2MGEzNzJiZmMzYTQ0NzJjOGExN2FjN2E1MzgzNzgyYjg4N2EuLmVlNTk3ZTQwN2E5
ZGRkMjI2YThmODgwNjU5ZjJkNTA0MjdmOTE5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9y
bWF0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0LmNjCkBAIC04OCw3ICs4OCw3IEBAIGJvb2wg
UGFyc2VUaW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBp
bnB1dCwgYWJzbDo6VGltZSoKICAgcmV0dXJuIGFic2w6OlBhcnNlVGltZShmb3JtYXQsIGlucHV0
LCBhYnNsOjpVVENUaW1lWm9uZSgpLCB0aW1lLCBlcnIpOwogfQogCi0vLyBJZiB0aGUgaW5wdXQg
c3RkOjpzdHJpbmcgZG9lcyBub3QgY29udGFpbiBhbiBleHBsaWNpdCBVVEMgb2Zmc2V0LCBpbnRl
cnByZXQKKy8vIElmIHRoZSBpbnB1dCBzdHJpbmcgZG9lcyBub3QgY29udGFpbiBhbiBleHBsaWNp
dCBVVEMgb2Zmc2V0LCBpbnRlcnByZXQKIC8vIHRoZSBmaWVsZHMgd2l0aCByZXNwZWN0IHRvIHRo
ZSBnaXZlbiBUaW1lWm9uZS4KIGJvb2wgUGFyc2VUaW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3Jt
YXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwgYWJzbDo6VGltZVpvbmUgdHosCiAgICAgICAg
ICAgICAgICBhYnNsOjpUaW1lKiB0aW1lLCBzdGQ6OnN0cmluZyogZXJyKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L2NpdmlsX3RpbWUuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGltZS5oCmluZGV4IDg5
ODIyMmI0YzdhZjI5ODMwZWEyMDUwN2Q5YzI5NGYyZDBlZjk2OWMuLjA4NDJmYTRhNDY4OTUyZmJi
NzFmZTllOThiODgzZTJmYTQ3ZDk2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGltZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGltZS5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFj
ZSBjY3R6IHsKIC8vIGluZmVyaW9yIGZpZWxkcyB0byB0aGVpciBtaW5pbXVtIHZhbGlkIHZhbHVl
IChhcyBkZXNjcmliZWQgYWJvdmUpLiBUaGUKIC8vIGZvbGxvd2luZyBhcmUgZXhhbXBsZXMgb2Yg
aG93IGVhY2ggb2YgdGhlIHNpeCB0eXBlcyB3b3VsZCBhbGlnbiB0aGUgZmllbGRzCiAvLyByZXBy
ZXNlbnRpbmcgTm92ZW1iZXIgMjIsIDIwMTUgYXQgMTI6MzQ6NTYgaW4gdGhlIGFmdGVybm9vbi4g
KE5vdGU6IHRoZQotLy8gc3RkOjpzdHJpbmcgZm9ybWF0IHVzZWQgaGVyZSBpcyBub3QgaW1wb3J0
YW50OyBpdCdzIGp1c3QgYSBzaG9ydGhhbmQgd2F5IG9mCisvLyBzdHJpbmcgZm9ybWF0IHVzZWQg
aGVyZSBpcyBub3QgaW1wb3J0YW50OyBpdCdzIGp1c3QgYSBzaG9ydGhhbmQgd2F5IG9mCiAvLyBz
aG93aW5nIHRoZSBzaXggWU1ESE1TIGZpZWxkcy4pCiAvLwogLy8gICBjaXZpbF9zZWNvbmQgIDIw
MTUtMTEtMjIgMTI6MzQ6NTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9p
bmNsdWRlL2NjdHovY2l2aWxfdGltZV9kZXRhaWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei9pbmNsdWRlL2NjdHovY2l2aWxfdGltZV9kZXRhaWwuaAppbmRleCAyMzYyYTRmNGZiYzk1OGZh
MzBkY2ZlN2ExNDE4NzY4OGRmNDYyYWRmLi5kN2Y3MjcxN2VjZTI1NDA4ODc0MGU3Mzc1ODI4NTk2
Yzk2M2ZiMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9j
Y3R6L2NpdmlsX3RpbWVfZGV0YWlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2lu
Y2x1ZGUvY2N0ei9jaXZpbF90aW1lX2RldGFpbC5oCkBAIC0zNTUsMTEgKzM1NSwxMSBAQCBjbGFz
cyBjaXZpbF90aW1lIHsKICAgICAgIDogY2l2aWxfdGltZShjdC5mXykge30KIAogICAvLyBGYWN0
b3JpZXMgZm9yIHRoZSBtYXhpbXVtL21pbmltdW0gcmVwcmVzZW50YWJsZSBjaXZpbF90aW1lLgot
ICBzdGF0aWMgY2l2aWxfdGltZSBtYXgoKSB7CisgIHN0YXRpYyBDT05TVEVYUFJfRiBjaXZpbF90
aW1lIG1heCgpIHsKICAgICBjb25zdCBhdXRvIG1heF95ZWFyID0gc3RkOjpudW1lcmljX2xpbWl0
czxzdGQ6OmludF9sZWFzdDY0X3Q+OjptYXgoKTsKICAgICByZXR1cm4gY2l2aWxfdGltZShtYXhf
eWVhciwgMTIsIDMxLCAyMywgNTksIDU5KTsKICAgfQotICBzdGF0aWMgY2l2aWxfdGltZSBtaW4o
KSB7CisgIHN0YXRpYyBDT05TVEVYUFJfRiBjaXZpbF90aW1lIG1pbigpIHsKICAgICBjb25zdCBh
dXRvIG1pbl95ZWFyID0gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OmludF9sZWFzdDY0X3Q+Ojpt
aW4oKTsKICAgICByZXR1cm4gY2l2aWxfdGltZShtaW5feWVhciwgMSwgMSwgMCwgMCwgMCk7CiAg
IH0KQEAgLTQxNiw2ICs0MTYsMTIgQEAgY2xhc3MgY2l2aWxfdGltZSB7CiAgICAgcmV0dXJuIGRp
ZmZlcmVuY2UoVHt9LCBsaHMuZl8sIHJocy5mXyk7CiAgIH0KIAorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIGNpdmlsX3RpbWUgYSkgeworICAg
IHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoKSwgYS5mXy55LCBhLmZfLm0sIGEuZl8uZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZl8uaGgsIGEuZl8ubW0sIGEu
Zl8uc3MpOworICB9CisKICBwcml2YXRlOgogICAvLyBBbGwgaW5zdGFudGlhdGlvbnMgb2YgdGhp
cyB0ZW1wbGF0ZSBhcmUgYWxsb3dlZCB0byBjYWxsIHRoZSBmb2xsb3dpbmcKICAgLy8gcHJpdmF0
ZSBjb25zdHJ1Y3RvciBhbmQgYWNjZXNzIHRoZSBwcml2YXRlIGZpZWxkcyBtZW1iZXIuCkBAIC01
MDgsMTIgKzUxNCw4IEBAIENPTlNURVhQUl9GIHdlZWtkYXkgZ2V0X3dlZWtkYXkoY29uc3QgY2l2
aWxfZGF5JiBjZCkgbm9leGNlcHQgewogICBDT05TVEVYUFJfRCBpbnQga193ZWVrZGF5X29mZnNl
dHNbMSArIDEyXSA9IHsKICAgICAgIC0xLCAwLCAzLCAyLCA1LCAwLCAzLCA1LCAxLCA0LCA2LCAy
LCA0LAogICB9OwotICB5ZWFyX3Qgd2QgPSBjZC55ZWFyKCkgLSAoY2QubW9udGgoKSA8IDMpOwot
ICBpZiAod2QgPj0gMCkgewotICAgIHdkICs9IHdkIC8gNCAtIHdkIC8gMTAwICsgd2QgLyA0MDA7
Ci0gIH0gZWxzZSB7Ci0gICAgd2QgKz0gKHdkIC0gMykgLyA0IC0gKHdkIC0gOTkpIC8gMTAwICsg
KHdkIC0gMzk5KSAvIDQwMDsKLSAgfQorICB5ZWFyX3Qgd2QgPSAyNDAwICsgKGNkLnllYXIoKSAl
IDQwMCkgLSAoY2QubW9udGgoKSA8IDMpOworICB3ZCArPSB3ZCAvIDQgLSB3ZCAvIDEwMCArIHdk
IC8gNDAwOwogICB3ZCArPSBrX3dlZWtkYXlfb2Zmc2V0c1tjZC5tb250aCgpXSArIGNkLmRheSgp
OwogICByZXR1cm4ga193ZWVrZGF5X2J5X3N1bl9vZmZbKHdkICUgNyArIDcpICUgN107CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3RpbWVfem9u
ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei90aW1lX3pvbmUuaApp
bmRleCAwYjk3NjRlYTcyYTljYWEzZTVmMmY3ZmVlMDQyNzM1N2FlZDI4ODA4Li5mMjhkYWQxNzU1
MDY1OWIwN2YwYzIwMDM4YmM0N2YyNWEwMmY2MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3RpbWVfem9uZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96b25lLmgKQEAgLTIyNCw2ICsyMjQsMTEgQEAg
Y2xhc3MgdGltZV96b25lIHsKICAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKICAgfQogCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgdGltZV96
b25lIHR6KSB7CisgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCAmdHouZWZmZWN0
aXZlX2ltcGwoKSk7CisgIH0KKwogICBjbGFzcyBJbXBsOwogCiAgcHJpdmF0ZToKQEAgLTI3OSw3
ICsyODQsNyBAQCBib29sIHBhcnNlKGNvbnN0IHN0ZDo6c3RyaW5nJiwgY29uc3Qgc3RkOjpzdHJp
bmcmLCBjb25zdCB0aW1lX3pvbmUmLAogfSAgLy8gbmFtZXNwYWNlIGRldGFpbAogCiAvLyBGb3Jt
YXRzIHRoZSBnaXZlbiB0aW1lX3BvaW50IGluIHRoZSBnaXZlbiBjY3R6Ojp0aW1lX3pvbmUgYWNj
b3JkaW5nIHRvCi0vLyB0aGUgcHJvdmlkZWQgZm9ybWF0IHN0ZDo6c3RyaW5nLiBVc2VzIHN0cmZ0
aW1lKCktbGlrZSBmb3JtYXR0aW5nIG9wdGlvbnMsCisvLyB0aGUgcHJvdmlkZWQgZm9ybWF0IHN0
cmluZy4gVXNlcyBzdHJmdGltZSgpLWxpa2UgZm9ybWF0dGluZyBvcHRpb25zLAogLy8gd2l0aCB0
aGUgZm9sbG93aW5nIGV4dGVuc2lvbnM6CiAvLwogLy8gICAtICVFeiAgLSBSRkMzMzM5LWNvbXBh
dGlibGUgbnVtZXJpYyBVVEMgb2Zmc2V0ICgraGg6bW0gb3IgLWhoOm1tKQpAQCAtMjk4LDcgKzMw
Myw3IEBAIGJvb2wgcGFyc2UoY29uc3Qgc3RkOjpzdHJpbmcmLCBjb25zdCBzdGQ6OnN0cmluZyYs
IGNvbnN0IHRpbWVfem9uZSYsCiAvLyBtb3JlIHRoYW4gZm91ciBjaGFyYWN0ZXJzLCBqdXN0IGxp
a2UgJVkuCiAvLwogLy8gVGlwOiBGb3JtYXQgc3RyaW5ncyBzaG91bGQgaW5jbHVkZSB0aGUgVVRD
IG9mZnNldCAoZS5nLiwgJXosICVFeiwgb3IgJUUqeikKLS8vIHNvIHRoYXQgdGhlIHJlc3VsdGlu
ZyBzdGQ6OnN0cmluZyB1bmlxdWVseSBpZGVudGlmaWVzIGFuIGFic29sdXRlIHRpbWUuCisvLyBz
byB0aGF0IHRoZSByZXN1bHRpbmcgc3RyaW5nIHVuaXF1ZWx5IGlkZW50aWZpZXMgYW4gYWJzb2x1
dGUgdGltZS4KIC8vCiAvLyBFeGFtcGxlOgogLy8gICBjY3R6Ojp0aW1lX3pvbmUgbGF4OwpAQCAt
MzE0LDcgKzMxOSw3IEBAIGlubGluZSBzdGQ6OnN0cmluZyBmb3JtYXQoY29uc3Qgc3RkOjpzdHJp
bmcmIGZtdCwgY29uc3QgdGltZV9wb2ludDxEPiYgdHAsCiAgIHJldHVybiBkZXRhaWw6OmZvcm1h
dChmbXQsIHAuZmlyc3QsIG4sIHR6KTsKIH0KIAotLy8gUGFyc2VzIGFuIGlucHV0IHN0ZDo6c3Ry
aW5nIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZAorLy8g
UGFyc2VzIGFuIGlucHV0IHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkIGZvcm1hdCBz
dHJpbmcgYW5kCiAvLyByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHRpbWVfcG9pbnQuIFVzZXMg
c3RyZnRpbWUoKS1saWtlIGZvcm1hdHRpbmcKIC8vIG9wdGlvbnMsIHdpdGggdGhlIHNhbWUgZXh0
ZW5zaW9ucyBhcyBjY3R6Ojpmb3JtYXQoKSwgYnV0IHdpdGggdGhlCiAvLyBleGNlcHRpb25zIHRo
YXQgJUUjUyBpcyBpbnRlcnByZXRlZCBhcyAlRSpTLCBhbmQgJUUjZiBhcyAlRSpmLiAlRXoKQEAg
LTMyOCw3ICszMzMsNyBAQCBpbmxpbmUgc3RkOjpzdHJpbmcgZm9ybWF0KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBmbXQsIGNvbnN0IHRpbWVfcG9pbnQ8RD4mIHRwLAogLy8KIC8vICAgIjE5NzAtMDEtMDEg
MDA6MDA6MDAuMCArMDAwMCIKIC8vCi0vLyBGb3IgZXhhbXBsZSwgcGFyc2luZyBhIHN0ZDo6c3Ry
aW5nIG9mICIxNTo0NSIgKCVIOiVNKSB3aWxsIHJldHVybiBhIHRpbWVfcG9pbnQKKy8vIEZvciBl
eGFtcGxlLCBwYXJzaW5nIGEgc3RyaW5nIG9mICIxNTo0NSIgKCVIOiVNKSB3aWxsIHJldHVybiBh
IHRpbWVfcG9pbnQKIC8vIHRoYXQgcmVwcmVzZW50cyAiMTk3MC0wMS0wMSAxNTo0NTowMC4wICsw
MDAwIi4KIC8vCiAvLyBOb3RlIHRoYXQgcGFyc2UoKSByZXR1cm5zIHRpbWUgaW5zdGFudHMsIHNv
IGl0IG1ha2VzIG1vc3Qgc2Vuc2UgdG8gcGFyc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9zcmMvY2N0el9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovc3JjL2NjdHpfYmVuY2htYXJrLmNjCmluZGV4IGM5N2RmNzhjMDljODM5NDVlNjhmNTUxMWI3
YjkyZTRhZjMxNzcwYzQuLjQ0OThkN2QwYjZiN2UwYzRhNmZkYjkyMTQ5Yzc4Nzk2ZDNkMDhiNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2N0el9iZW5jaG1hcmsu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jY3R6X2JlbmNobWFyay5jYwpA
QCAtNzc4LDEzICs3NzgsMTMgQEAgdm9pZCBCTV9ab25lX1VUQ1RpbWVab25lKGJlbmNobWFyazo6
U3RhdGUmIHN0YXRlKSB7CiB9CiBCRU5DSE1BUksoQk1fWm9uZV9VVENUaW1lWm9uZSk7CiAKLS8v
IEluIGVhY2ggIlRvRGF0ZVRpbWUiIGJlbmNobWFyayB3ZSBzd2l0Y2ggYmV0d2VlbiB0d28gaW5z
dGFudHMKLS8vIHNlcGFyYXRlZCBieSBhdCBsZWFzdCBvbmUgdHJhbnNpdGlvbiBpbiBvcmRlciB0
byBkZWZlYXQgYW55Ci0vLyBpbnRlcm5hbCBjYWNoaW5nIG9mIHByZXZpb3VzIHJlc3VsdHMgKGUu
Zy4sIHNlZSBsb2NhbF90aW1lX2hpbnRfKS4KKy8vIEluIGVhY2ggIlRvQ2l2aWwiIGJlbmNobWFy
ayB3ZSBzd2l0Y2ggYmV0d2VlbiB0d28gaW5zdGFudHMgc2VwYXJhdGVkCisvLyBieSBhdCBsZWFz
dCBvbmUgdHJhbnNpdGlvbiBpbiBvcmRlciB0byBkZWZlYXQgYW55IGludGVybmFsIGNhY2hpbmcg
b2YKKy8vIHByZXZpb3VzIHJlc3VsdHMgKGUuZy4sIHNlZSBsb2NhbF90aW1lX2hpbnRfKS4KIC8v
CiAvLyBUaGUgIlVUQyIgdmFyaWFudHMgdXNlIFVUQyBpbnN0ZWFkIG9mIHRoZSBHb29nbGUvbG9j
YWwgdGltZSB6b25lLgogCi12b2lkIEJNX1RpbWVfVG9EYXRlVGltZV9DQ1RaKGJlbmNobWFyazo6
U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX1RpbWVfVG9DaXZpbF9DQ1RaKGJlbmNobWFyazo6U3Rh
dGUmIHN0YXRlKSB7CiAgIGNvbnN0IGNjdHo6OnRpbWVfem9uZSB0eiA9IFRlc3RUaW1lWm9uZSgp
OwogICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRwID0KICAgICAgIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGltZV90KDEzODQ1NjkwMjcpOwpAQCAtNzk2
LDkgKzc5Niw5IEBAIHZvaWQgQk1fVGltZV9Ub0RhdGVUaW1lX0NDVFooYmVuY2htYXJrOjpTdGF0
ZSYgc3RhdGUpIHsKICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoY2N0ejo6Y29udmVydCh0
cCwgdHopKTsKICAgfQogfQotQkVOQ0hNQVJLKEJNX1RpbWVfVG9EYXRlVGltZV9DQ1RaKTsKK0JF
TkNITUFSSyhCTV9UaW1lX1RvQ2l2aWxfQ0NUWik7CiAKLXZvaWQgQk1fVGltZV9Ub0RhdGVUaW1l
X0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fVGltZV9Ub0NpdmlsX0xp
YmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgLy8gTm8gdGltZXpvbmUgc3VwcG9ydCwg
c28ganVzdCB1c2UgbG9jYWx0aW1lLgogICB0aW1lX3QgdCA9IDEzODQ1NjkwMjc7CiAgIHRpbWVf
dCB0MiA9IDE0MTg5NjI1Nzg7CkBAIC04MTMsOSArODEzLDkgQEAgdm9pZCBCTV9UaW1lX1RvRGF0
ZVRpbWVfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogI2VuZGlmCiAgIH0KIH0KLUJF
TkNITUFSSyhCTV9UaW1lX1RvRGF0ZVRpbWVfTGliYyk7CitCRU5DSE1BUksoQk1fVGltZV9Ub0Np
dmlsX0xpYmMpOwogCi12b2lkIEJNX1RpbWVfVG9EYXRlVGltZVVUQ19DQ1RaKGJlbmNobWFyazo6
U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX1RpbWVfVG9DaXZpbFVUQ19DQ1RaKGJlbmNobWFyazo6
U3RhdGUmIHN0YXRlKSB7CiAgIGNvbnN0IGNjdHo6OnRpbWVfem9uZSB0eiA9IGNjdHo6OnV0Y190
aW1lX3pvbmUoKTsKICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0cCA9
CiAgICAgICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdCgxMzg0NTY5MDI3
KTsKQEAgLTgyNCw5ICs4MjQsOSBAQCB2b2lkIEJNX1RpbWVfVG9EYXRlVGltZVVUQ19DQ1RaKGJl
bmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKGNj
dHo6OmNvbnZlcnQodHAsIHR6KSk7CiAgIH0KIH0KLUJFTkNITUFSSyhCTV9UaW1lX1RvRGF0ZVRp
bWVVVENfQ0NUWik7CitCRU5DSE1BUksoQk1fVGltZV9Ub0NpdmlsVVRDX0NDVFopOwogCi12b2lk
IEJNX1RpbWVfVG9EYXRlVGltZVVUQ19MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cit2
b2lkIEJNX1RpbWVfVG9DaXZpbFVUQ19MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAg
IHRpbWVfdCB0ID0gMTM4NDU2OTAyNzsKICAgc3RydWN0IHRtIHRtOwogICB3aGlsZSAoc3RhdGUu
S2VlcFJ1bm5pbmcoKSkgewpAQCAtODM4LDE2ICs4MzgsMTYgQEAgdm9pZCBCTV9UaW1lX1RvRGF0
ZVRpbWVVVENfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogI2VuZGlmCiAgIH0KIH0K
LUJFTkNITUFSSyhCTV9UaW1lX1RvRGF0ZVRpbWVVVENfTGliYyk7CitCRU5DSE1BUksoQk1fVGlt
ZV9Ub0NpdmlsVVRDX0xpYmMpOwogCi0vLyBJbiBlYWNoICJGcm9tRGF0ZVRpbWUiIGJlbmNobWFy
ayB3ZSBzd2l0Y2ggYmV0d2VlbiB0d28gWU1EaG1zCi0vLyB2YWx1ZXMgc2VwYXJhdGVkIGJ5IGF0
IGxlYXN0IG9uZSB0cmFuc2l0aW9uIGluIG9yZGVyIHRvIGRlZmVhdCBhbnkKLS8vIGludGVybmFs
IGNhY2hpbmcgb2YgcHJldmlvdXMgcmVzdWx0cyAoZS5nLiwgc2VlIHRpbWVfbG9jYWxfaGludF8p
LgorLy8gSW4gZWFjaCAiRnJvbUNpdmlsIiBiZW5jaG1hcmsgd2Ugc3dpdGNoIGJldHdlZW4gdHdv
IFlNRGhtcyB2YWx1ZXMKKy8vIHNlcGFyYXRlZCBieSBhdCBsZWFzdCBvbmUgdHJhbnNpdGlvbiBp
biBvcmRlciB0byBkZWZlYXQgYW55IGludGVybmFsCisvLyBjYWNoaW5nIG9mIHByZXZpb3VzIHJl
c3VsdHMgKGUuZy4sIHNlZSB0aW1lX2xvY2FsX2hpbnRfKS4KIC8vCiAvLyBUaGUgIlVUQyIgdmFy
aWFudHMgdXNlIFVUQyBpbnN0ZWFkIG9mIHRoZSBHb29nbGUvbG9jYWwgdGltZSB6b25lLgogLy8g
VGhlICJEYXkwIiB2YXJpYW50cyByZXF1aXJlIG5vcm1hbGl6YXRpb24gb2YgdGhlIGRheSBvZiBt
b250aC4KIAotdm9pZCBCTV9UaW1lX0Zyb21EYXRlVGltZV9DQ1RaKGJlbmNobWFyazo6U3RhdGUm
IHN0YXRlKSB7Cit2b2lkIEJNX1RpbWVfRnJvbUNpdmlsX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYg
c3RhdGUpIHsKICAgY29uc3QgY2N0ejo6dGltZV96b25lIHR6ID0gVGVzdFRpbWVab25lKCk7CiAg
IGludCBpID0gMDsKICAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nKCkpIHsKQEAgLTg2MCw5ICs4
NjAsOSBAQCB2b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYg
c3RhdGUpIHsKICAgICB9CiAgIH0KIH0KLUJFTkNITUFSSyhCTV9UaW1lX0Zyb21EYXRlVGltZV9D
Q1RaKTsKK0JFTkNITUFSSyhCTV9UaW1lX0Zyb21DaXZpbF9DQ1RaKTsKIAotdm9pZCBCTV9UaW1l
X0Zyb21EYXRlVGltZV9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX1Rp
bWVfRnJvbUNpdmlsX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgLy8gTm8gdGlt
ZXpvbmUgc3VwcG9ydCwgc28ganVzdCB1c2UgbG9jYWx0aW1lLgogICBpbnQgaSA9IDA7CiAgIHdo
aWxlIChzdGF0ZS5LZWVwUnVubmluZygpKSB7CkBAIC04ODYsMjAgKzg4NiwyMCBAQCB2b2lkIEJN
X1RpbWVfRnJvbURhdGVUaW1lX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgICBi
ZW5jaG1hcms6OkRvTm90T3B0aW1pemUobWt0aW1lKCZ0bSkpOwogICB9CiB9Ci1CRU5DSE1BUkso
Qk1fVGltZV9Gcm9tRGF0ZVRpbWVfTGliYyk7CitCRU5DSE1BUksoQk1fVGltZV9Gcm9tQ2l2aWxf
TGliYyk7CiAKLXZvaWQgQk1fVGltZV9Gcm9tRGF0ZVRpbWVVVENfQ0NUWihiZW5jaG1hcms6OlN0
YXRlJiBzdGF0ZSkgewordm9pZCBCTV9UaW1lX0Zyb21DaXZpbFVUQ19DQ1RaKGJlbmNobWFyazo6
U3RhdGUmIHN0YXRlKSB7CiAgIGNvbnN0IGNjdHo6OnRpbWVfem9uZSB0eiA9IGNjdHo6OnV0Y190
aW1lX3pvbmUoKTsKICAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nKCkpIHsKICAgICBiZW5jaG1h
cms6OkRvTm90T3B0aW1pemUoCiAgICAgICAgIGNjdHo6OmNvbnZlcnQoY2N0ejo6Y2l2aWxfc2Vj
b25kKDIwMTQsIDEyLCAxOCwgMjAsIDE2LCAxOCksIHR6KSk7CiAgIH0KIH0KLUJFTkNITUFSSyhC
TV9UaW1lX0Zyb21EYXRlVGltZVVUQ19DQ1RaKTsKK0JFTkNITUFSSyhCTV9UaW1lX0Zyb21DaXZp
bFVUQ19DQ1RaKTsKIAotLy8gVGhlcmUgaXMgbm8gQk1fVGltZV9Gcm9tRGF0ZVRpbWVVVENfTGli
Yy4KKy8vIFRoZXJlIGlzIG5vIEJNX1RpbWVfRnJvbUNpdmlsVVRDX0xpYmMuCiAKLXZvaWQgQk1f
VGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3Zv
aWQgQk1fVGltZV9Gcm9tQ2l2aWxEYXkwX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsK
ICAgY29uc3QgY2N0ejo6dGltZV96b25lIHR6ID0gVGVzdFRpbWVab25lKCk7CiAgIGludCBpID0g
MDsKICAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nKCkpIHsKQEAgLTkxMiw5ICs5MTIsOSBAQCB2
b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lRGF5MF9DQ1RaKGJlbmNobWFyazo6U3RhdGUmIHN0YXRl
KSB7CiAgICAgfQogICB9CiB9Ci1CRU5DSE1BUksoQk1fVGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0ND
VFopOworQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNpdmlsRGF5MF9DQ1RaKTsKIAotdm9pZCBCTV9U
aW1lX0Zyb21EYXRlVGltZURheTBfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9p
ZCBCTV9UaW1lX0Zyb21DaXZpbERheTBfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewog
ICAvLyBObyB0aW1lem9uZSBzdXBwb3J0LCBzbyBqdXN0IHVzZSBsb2NhbHRpbWUuCiAgIGludCBp
ID0gMDsKICAgd2hpbGUgKHN0YXRlLktlZXBSdW5uaW5nKCkpIHsKQEAgLTkzOCw3ICs5MzgsNyBA
QCB2b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lRGF5MF9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0
YXRlKSB7CiAgICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKG1rdGltZSgmdG0pKTsKICAgfQog
fQotQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbURhdGVUaW1lRGF5MF9MaWJjKTsKK0JFTkNITUFSSyhC
TV9UaW1lX0Zyb21DaXZpbERheTBfTGliYyk7CiAKIGNvbnN0IGNoYXIqIGNvbnN0IGtGb3JtYXRz
W10gPSB7CiAgICAgUkZDMTEyM19mdWxsLCAgICAgICAgIC8vIDAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2l2aWxfdGltZV90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3NyYy9jaXZpbF90aW1lX3Rlc3QuY2MKaW5kZXggZjY2NDhjOGYxZjIxZjMy
MDdhYmExYjVlNGJiMDY2MDYxYjA2NGI2NS4uZmFmZmRlNDcwYWY0ZjQ1YzNiOGE0YmFhMGMwZDJi
Y2ZhMzE4ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jaXZp
bF90aW1lX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jaXZpbF90
aW1lX3Rlc3QuY2MKQEAgLTYyMCw3ICs2MjAsNyBAQCBURVNUKENpdmlsVGltZSwgUmVsYXRpb25h
bCkgewogICBURVNUX1JFTEFUSU9OQUwoY2l2aWxfc2Vjb25kKDIwMTQsIDEsIDEsIDEsIDEsIDAp
LAogICAgICAgICAgICAgICAgICAgY2l2aWxfc2Vjb25kKDIwMTQsIDEsIDEsIDEsIDEsIDEpKTsK
IAotICAvLyBUZXN0cyB0aGUgcmVsYXRpb25hbCBvcGVyYXRvcnMgb2YgdHdvIGRpZmZlcmVudCBD
aXZpbFRpbWUgdHlwZXMuCisgIC8vIFRlc3RzIHRoZSByZWxhdGlvbmFsIG9wZXJhdG9ycyBvZiB0
d28gZGlmZmVyZW50IGNpdmlsLXRpbWUgdHlwZXMuCiAgIFRFU1RfUkVMQVRJT05BTChjaXZpbF9k
YXkoMjAxNCwgMSwgMSksIGNpdmlsX21pbnV0ZSgyMDE0LCAxLCAxLCAxLCAxKSk7CiAgIFRFU1Rf
UkVMQVRJT05BTChjaXZpbF9kYXkoMjAxNCwgMSwgMSksIGNpdmlsX21vbnRoKDIwMTQsIDIpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZml4
ZWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5jYwpp
bmRleCA1OThiMDhmZGU0MjIzNmNmMTM3ZTBlODJkMDlkOWYyYzFmMWIyMmYwLi5kYjlhNDc1YTli
NDkwNGNiMmM0ZGE2YjVjZjI4MGNhOGNhNDM3MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5jYwpAQCAtMTUsOCArMTUsOCBAQAogI2luY2x1
ZGUgInRpbWVfem9uZV9maXhlZC5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
PGNhc3NlcnQ+CiAjaW5jbHVkZSA8Y2hyb25vPgotI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRl
IDxjc3RyaW5nPgogI2luY2x1ZGUgPHN0cmluZz4KIApAQCAtMjksOCArMjksMTUgQEAgbmFtZXNw
YWNlIHsKIC8vIFRoZSBwcmVmaXggdXNlZCBmb3IgdGhlIGludGVybmFsIG5hbWVzIG9mIGZpeGVk
LW9mZnNldCB6b25lcy4KIGNvbnN0IGNoYXIga0ZpeGVkT2Zmc2V0UHJlZml4W10gPSAiRml4ZWQv
VVRDIjsKIAorY29uc3QgY2hhciBrRGlnaXRzW10gPSAiMDEyMzQ1Njc4OSI7CisKK2NoYXIqIEZv
cm1hdDAyZChjaGFyKiBwLCBpbnQgdikgeworICAqcCsrID0ga0RpZ2l0c1sodiAvIDEwKSAlIDEw
XTsKKyAgKnArKyA9IGtEaWdpdHNbdiAlIDEwXTsKKyAgcmV0dXJuIHA7Cit9CisKIGludCBQYXJz
ZTAyZChjb25zdCBjaGFyKiBwKSB7Ci0gIHN0YXRpYyBjb25zdCBjaGFyIGtEaWdpdHNbXSA9ICIw
MTIzNDU2Nzg5IjsKICAgaWYgKGNvbnN0IGNoYXIqIGFwID0gc3RkOjpzdHJjaHIoa0RpZ2l0cywg
KnApKSB7CiAgICAgaW50IHYgPSBzdGF0aWNfY2FzdDxpbnQ+KGFwIC0ga0RpZ2l0cyk7CiAgICAg
aWYgKGNvbnN0IGNoYXIqIGJwID0gc3RkOjpzdHJjaHIoa0RpZ2l0cywgKisrcCkpIHsKQEAgLTk1
LDkgKzEwMiwxNyBAQCBzdGQ6OnN0cmluZyBGaXhlZE9mZnNldFRvTmFtZShjb25zdCBzZWNvbmRz
JiBvZmZzZXQpIHsKICAgfQogICBpbnQgaG91cnMgPSBtaW51dGVzIC8gNjA7CiAgIG1pbnV0ZXMg
JT0gNjA7Ci0gIGNoYXIgYnVmW3NpemVvZihrRml4ZWRPZmZzZXRQcmVmaXgpICsgc2l6ZW9mKCIt
MjQ6MDA6MDAiKV07Ci0gIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcyVjJTAyZDolMDJk
OiUwMmQiLAotICAgICAgICAgICBrRml4ZWRPZmZzZXRQcmVmaXgsIHNpZ24sIGhvdXJzLCBtaW51
dGVzLCBzZWNvbmRzKTsKKyAgY2hhciBidWZbc2l6ZW9mKGtGaXhlZE9mZnNldFByZWZpeCkgLSAx
ICsgc2l6ZW9mKCItMjQ6MDA6MDAiKV07CisgIHN0ZDo6c3RyY3B5KGJ1Ziwga0ZpeGVkT2Zmc2V0
UHJlZml4KTsKKyAgY2hhciogZXAgPSBidWYgKyBzaXplb2Yoa0ZpeGVkT2Zmc2V0UHJlZml4KSAt
IDE7CisgICplcCsrID0gc2lnbjsKKyAgZXAgPSBGb3JtYXQwMmQoZXAsIGhvdXJzKTsKKyAgKmVw
KysgPSAnOic7CisgIGVwID0gRm9ybWF0MDJkKGVwLCBtaW51dGVzKTsKKyAgKmVwKysgPSAnOic7
CisgIGVwID0gRm9ybWF0MDJkKGVwLCBzZWNvbmRzKTsKKyAgKmVwKysgPSAnXDAnOworICBhc3Nl
cnQoZXAgPT0gYnVmICsgc2l6ZW9mKGJ1ZikpOwogICByZXR1cm4gYnVmOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3JtYXQuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3JtYXQuY2MKaW5kZXggMWIw
MjM4NDhlZmExOGU4MTU2MmQ1N2IzOTU1YWMxMjBkZjg1NTQ3NC4uYTAyYjFlMzQxYWMwY2NlZmQ2
MGUwZmE4NTkwMTRlOGQwYWQwNWIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3NyYy90aW1lX3pvbmVfZm9ybWF0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei9zcmMvdGltZV96b25lX2Zvcm1hdC5jYwpAQCAtNTMzLDcgKzUzMyw3IEBAIGNvbnN0IGNoYXIq
IFBhcnNlU3ViU2Vjb25kcyhjb25zdCBjaGFyKiBkcCwgZGV0YWlsOjpmZW10b3NlY29uZHMqIHN1
YnNlY29uZHMpIHsKICAgcmV0dXJuIGRwOwogfQogCi0vLyBQYXJzZXMgYSBzdGQ6OnN0cmluZyBp
bnRvIGEgc3RkOjp0bSB1c2luZyBzdHJwdGltZSgzKS4KKy8vIFBhcnNlcyBhIHN0cmluZyBpbnRv
IGEgc3RkOjp0bSB1c2luZyBzdHJwdGltZSgzKS4KIGNvbnN0IGNoYXIqIFBhcnNlVE0oY29uc3Qg
Y2hhciogZHAsIGNvbnN0IGNoYXIqIGZtdCwgc3RkOjp0bSogdG0pIHsKICAgaWYgKGRwICE9IG51
bGxwdHIpIHsKICAgICBkcCA9IHN0cnB0aW1lKGRwLCBmbXQsIHRtKTsKQEAgLTc0Myw3ICs3NDMs
NyBAQCBib29sIHBhcnNlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBpbnB1dCwKICAgICBkYXRhID0gUGFyc2VUTShkYXRhLCBzcGVjLmNfc3RyKCksICZ0bSk7
CiAKICAgICAvLyBJZiB3ZSBzdWNjZXNzZnVsbHkgcGFyc2VkICVwIHdlIG5lZWQgdG8gcmVtZW1i
ZXIgd2hldGhlciB0aGUgcmVzdWx0Ci0gICAgLy8gd2FzIEFNIG9yIFBNIHNvIHRoYXQgd2UgY2Fu
IGFkanVzdCB0bV9ob3VyIGJlZm9yZSBDb252ZXJ0RGF0ZVRpbWUoKS4KKyAgICAvLyB3YXMgQU0g
b3IgUE0gc28gdGhhdCB3ZSBjYW4gYWRqdXN0IHRtX2hvdXIgYmVmb3JlIHRpbWVfem9uZTo6bG9v
a3VwKCkuCiAgICAgLy8gU28gcmVwYXJzZSB0aGUgaW5wdXQgd2l0aCBhIGtub3duIEFNIGhvdXIs
IGFuZCBjaGVjayBpZiBpdCBpcyBzaGlmdGVkCiAgICAgLy8gdG8gYSBQTSBob3VyLgogICAgIGlm
IChzcGVjID09ICIlcCIgJiYgZGF0YSAhPSBudWxscHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9mb3JtYXRfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdF90ZXN0LmNjCmluZGV4IGE5MGRk
YTc2MDNhOGExMGUzN2IzYjU4ZDk2NjU5NjhiNTgzOTYyYmUuLjZiOTkyOGVkMzJmNDMxMDI3YzRi
OTJhNDljMzJlOWEwOGExOGQ4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei9zcmMvdGltZV96b25lX2Zvcm1hdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdF90ZXN0LmNjCkBAIC02NjksMTMgKzY2OSwxMyBAQCBU
RVNUKFBhcnNlLCBXaXRoVGltZVpvbmUpIHsKICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVf
em9uZSgpLCAmdHApKTsKICAgRXhwZWN0VGltZSh0cCwgdHosIDIwMTMsIDYsIDI4LCAxOSAtIDgg
LSA3LCA4LCA5LCAtNyAqIDYwICogNjAsIHRydWUsICJQRFQiKTsKIAotICAvLyBDaGVjayBhIHNr
aXBwZWQgdGltZSAoYSBTcHJpbmcgRFNUIHRyYW5zaXRpb24pLiAgcGFyc2UoKSByZXR1cm5zCi0g
IC8vIHRoZSBwcmVmZXJyZWQtb2Zmc2V0IHJlc3VsdCwgYXMgZGVmaW5lZCBmb3IgQ29udmVydERh
dGVUaW1lKCkuCisgIC8vIENoZWNrIGEgc2tpcHBlZCB0aW1lIChhIFNwcmluZyBEU1QgdHJhbnNp
dGlvbikuIHBhcnNlKCkgdXNlcyB0aGUKKyAgLy8gcHJlLXRyYW5zaXRpb24gb2Zmc2V0LgogICBF
WFBFQ1RfVFJVRShwYXJzZSgiJVktJW0tJWQgJUg6JU06JVMiLCAiMjAxMS0wMy0xMyAwMjoxNTow
MCIsIHR6LCAmdHApKTsKICAgRXhwZWN0VGltZSh0cCwgdHosIDIwMTEsIDMsIDEzLCAzLCAxNSwg
MCwgLTcgKiA2MCAqIDYwLCB0cnVlLCAiUERUIik7CiAKLSAgLy8gQ2hlY2sgYSByZXBlYXRlZCB0
aW1lIChhIEZhbGwgRFNUIHRyYW5zaXRpb24pLiAgcGFyc2UoKSByZXR1cm5zCi0gIC8vIHRoZSBw
cmVmZXJyZWQtb2Zmc2V0IHJlc3VsdCwgYXMgZGVmaW5lZCBmb3IgQ29udmVydERhdGVUaW1lKCku
CisgIC8vIENoZWNrIGEgcmVwZWF0ZWQgdGltZSAoYSBGYWxsIERTVCB0cmFuc2l0aW9uKS4gIHBh
cnNlKCkgdXNlcyB0aGUKKyAgLy8gcHJlLXRyYW5zaXRpb24gb2Zmc2V0LgogICBFWFBFQ1RfVFJV
RShwYXJzZSgiJVktJW0tJWQgJUg6JU06JVMiLCAiMjAxMS0xMS0wNiAwMToxNTowMCIsIHR6LCAm
dHApKTsKICAgRXhwZWN0VGltZSh0cCwgdHosIDIwMTEsIDExLCA2LCAxLCAxNSwgMCwgLTcgKiA2
MCAqIDYwLCB0cnVlLCAiUERUIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3Ny
Yy90aW1lX3pvbmVfaW5mby5jYwppbmRleCBiZjczNjM1ZDRjNmE4YzAzM2I2ZTQ4NzkyNWM0MWEy
ZWFiODA1MTg0Li4yY2IzNThkMDQ4ZTJkODIxOTFkZThiY2YyMDI4MjljN2VhMmNiODgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8uY2MKQEAgLTI4
Niw3ICsyODYsNyBAQCBib29sIFRpbWVab25lSW5mbzo6RXF1aXZUcmFuc2l0aW9ucyhzdGQ6OnVp
bnRfZmFzdDhfdCB0dDFfaW5kZXgsCiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBVc2UgdGhlIFBP
U0lYLVRaLWVudmlyb25tZW50LXZhcmlhYmxlLXN0eWxlIHN0ZDo6c3RyaW5nIHRvIGhhbmRsZSB0
aW1lcworLy8gVXNlIHRoZSBQT1NJWC1UWi1lbnZpcm9ubWVudC12YXJpYWJsZS1zdHlsZSBzdHJp
bmcgdG8gaGFuZGxlIHRpbWVzCiAvLyBpbiB5ZWFycyBhZnRlciB0aGUgbGFzdCB0cmFuc2l0aW9u
IHN0b3JlZCBpbiB0aGUgem9uZWluZm8gZGF0YS4KIHZvaWQgVGltZVpvbmVJbmZvOjpFeHRlbmRU
cmFuc2l0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBIZWFkZXImIGhkcikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfcG9zaXguaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX3Bvc2l4LmgKaW5kZXggNjYxOWYyN2VkY2Y2Mzg5NWFi
ZWIyM2YzZGRiNDhlZmY0ZjlmMmFjOC4uOWNjZDRhOGI2OGJkNTc2MWY1NmUzMTRiOWQ4YTI1MDE3
MWI0OGQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pv
bmVfcG9zaXguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9w
b3NpeC5oCkBAIC04OSw3ICs4OSw3IEBAIHN0cnVjdCBQb3NpeFRyYW5zaXRpb24gewogICB9IHRp
bWU7CiB9OwogCi0vLyBUaGUgZW50aXJldHkgb2YgYSBQT1NJWC1zdGQ6OnN0cmluZyBzcGVjaWZp
ZWQgdGltZS16b25lIHJ1bGUuIFRoZSBzdGFuZGFyZAorLy8gVGhlIGVudGlyZXR5IG9mIGEgUE9T
SVgtc3RyaW5nIHNwZWNpZmllZCB0aW1lLXpvbmUgcnVsZS4gVGhlIHN0YW5kYXJkCiAvLyBhYmJy
ZXZpYXRpb24gYW5kIG9mZnNldCBhcmUgYWx3YXlzIGdpdmVuLiBJZiB0aGUgdGltZSB6b25lIGlu
Y2x1ZGVzCiAvLyBkYXlsaWdodCBzYXZpbmcsIHRoZW4gdGhlIGRheWxpZ2h0IGFiYnJldmF0aW9u
IGlzIG5vbi1lbXB0eSBhbmQgdGhlCiAvLyByZW1haW5pbmcgZmllbGRzIGFyZSBhbHNvIHZhbGlk
LiBOb3RlIHRoYXQgdGhlIHN0YXJ0L2VuZCB0cmFuc2l0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS90aW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWUuaAppbmRleCBjNDFjYjg5YzVlZmYxZDRkYWY4
ZWNiMTZjNWIxNTYzOTcwMmY2NDYyLi41MGJmOTcxZGYwYTI5Y2I0NzUwYWVmNzBjMTFlNzA1NDQ3
NjQ2YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3Rp
bWUuaApAQCAtMjUsMTEgKzI1LDEyIEBACiAvLyAgKiBgYWJzbDo6VGltZVpvbmVgIGRlZmluZXMg
Z2VvcG9saXRpY2FsIHRpbWUgem9uZSByZWdpb25zIChhcyBjb2xsZWN0ZWQKIC8vICAgICB3aXRo
aW4gdGhlIElBTkEgVGltZSBab25lIGRhdGFiYXNlIChodHRwczovL3d3dy5pYW5hLm9yZy90aW1l
LXpvbmVzKSkuCiAvLworLy8KIC8vIEV4YW1wbGU6CiAvLwogLy8gICBhYnNsOjpUaW1lWm9uZSBu
eWM7CiAvLwotLy8gICAvLyBMb2FkVGltZVpvbmUgbWF5IGZhaWwgc28gaXQncyBhbHdheXMgYmV0
dGVyIHRvIGNoZWNrIGZvciBzdWNjZXNzLgorLy8gICAvLyBMb2FkVGltZVpvbmUoKSBtYXkgZmFp
bCBzbyBpdCdzIGFsd2F5cyBiZXR0ZXIgdG8gY2hlY2sgZm9yIHN1Y2Nlc3MuCiAvLyAgIGlmICgh
YWJzbDo6TG9hZFRpbWVab25lKCJBbWVyaWNhL05ld19Zb3JrIiwgJm55YykpIHsKIC8vICAgICAg
Ly8gaGFuZGxlIGVycm9yIGNhc2UKIC8vICAgfQpAQCAtMTYyLDYgKzE2MywxMSBAQCBjbGFzcyBE
dXJhdGlvbiB7CiAgIER1cmF0aW9uJiBvcGVyYXRvcio9KGZsb2F0IHIpIHsgcmV0dXJuICp0aGlz
ICo9IHN0YXRpY19jYXN0PGRvdWJsZT4ocik7IH0KICAgRHVyYXRpb24mIG9wZXJhdG9yLz0oZmxv
YXQgcikgeyByZXR1cm4gKnRoaXMgLz0gc3RhdGljX2Nhc3Q8ZG91YmxlPihyKTsgfQogCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgRHVyYXRp
b24gZCkgeworICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoKSwgZC5yZXBfaGlfLCBk
LnJlcF9sb18pOworICB9CisKICBwcml2YXRlOgogICBmcmllbmQgY29uc3RleHByIGludDY0X3Qg
dGltZV9pbnRlcm5hbDo6R2V0UmVwSGkoRHVyYXRpb24gZCk7CiAgIGZyaWVuZCBjb25zdGV4cHIg
dWludDMyX3QgdGltZV9pbnRlcm5hbDo6R2V0UmVwTG8oRHVyYXRpb24gZCk7CkBAIC0zMjEsNiAr
MzI3LDkgQEAgRHVyYXRpb24gQ2VpbChEdXJhdGlvbiBkLCBEdXJhdGlvbiB1bml0KTsKIC8vICAg
MCA9PSBkIC8gaW5mCiAvLyAgIElOVDY0X01BWCA9PSBpbmYgLyBkCiAvLworLy8gICBkIDwgaW5m
CisvLyAgIC1pbmYgPCBkCisvLwogLy8gICAvLyBEaXZpc2lvbiBieSB6ZXJvIHJldHVybnMgaW5m
aW5pdHksIG9yIElOVDY0X01JTi9NQVggd2hlcmUgYXBwcm9wcmlhdGUuCiAvLyAgIGluZiA9PSBk
IC8gMAogLy8gICBJTlQ2NF9NQVggPT0gZCAvIGFic2w6Olplcm9EdXJhdGlvbigpCkBAIC00ODEs
NyArNDkwLDcgQEAgc3RkOjpjaHJvbm86OmhvdXJzIFRvQ2hyb25vSG91cnMoRHVyYXRpb24gZCk7
CiAKIC8vIEZvcm1hdER1cmF0aW9uKCkKIC8vCi0vLyBSZXR1cm5zIGEgc3RkOjpzdHJpbmcgcmVw
cmVzZW50aW5nIHRoZSBkdXJhdGlvbiBpbiB0aGUgZm9ybSAiNzJoM20wLjVzIi4KKy8vIFJldHVy
bnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBkdXJhdGlvbiBpbiB0aGUgZm9ybSAiNzJoM20w
LjVzIi4KIC8vIFJldHVybnMgImluZiIgb3IgIi1pbmYiIGZvciArLy0gYEluZmluaXRlRHVyYXRp
b24oKWAuCiBzdGQ6OnN0cmluZyBGb3JtYXREdXJhdGlvbihEdXJhdGlvbiBkKTsKIApAQCAtNDky
LDExICs1MDEsMTEgQEAgaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJl
YW0mIG9zLCBEdXJhdGlvbiBkKSB7CiAKIC8vIFBhcnNlRHVyYXRpb24oKQogLy8KLS8vIFBhcnNl
cyBhIGR1cmF0aW9uIHN0ZDo6c3RyaW5nIGNvbnNpc3Rpbmcgb2YgYSBwb3NzaWJseSBzaWduZWQg
c2VxdWVuY2Ugb2YKKy8vIFBhcnNlcyBhIGR1cmF0aW9uIHN0cmluZyBjb25zaXN0aW5nIG9mIGEg
cG9zc2libHkgc2lnbmVkIHNlcXVlbmNlIG9mCiAvLyBkZWNpbWFsIG51bWJlcnMsIGVhY2ggd2l0
aCBhbiBvcHRpb25hbCBmcmFjdGlvbmFsIHBhcnQgYW5kIGEgdW5pdAogLy8gc3VmZml4LiAgVGhl
IHZhbGlkIHN1ZmZpeGVzIGFyZSAibnMiLCAidXMiICJtcyIsICJzIiwgIm0iLCBhbmQgImgiLgog
Ly8gU2ltcGxlIGV4YW1wbGVzIGluY2x1ZGUgIjMwMG1zIiwgIi0xLjVoIiwgYW5kICIyaDQ1bSIu
ICBQYXJzZXMgIjAiIGFzCi0vLyBgWmVyb0R1cmF0aW9uKClgLiAgUGFyc2VzICJpbmYiIGFuZCAi
LWluZiIgYXMgKy8tIGBJbmZpbml0ZUR1cmF0aW9uKClgLgorLy8gYFplcm9EdXJhdGlvbigpYC4g
UGFyc2VzICJpbmYiIGFuZCAiLWluZiIgYXMgKy8tIGBJbmZpbml0ZUR1cmF0aW9uKClgLgogYm9v
bCBQYXJzZUR1cmF0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBkdXJfc3RyaW5nLCBEdXJhdGlvbiog
ZCk7CiAKIC8vIFN1cHBvcnQgZm9yIGZsYWcgdmFsdWVzIG9mIHR5cGUgRHVyYXRpb24uIER1cmF0
aW9uIGZsYWdzIG11c3QgYmUgc3BlY2lmaWVkCkBAIC02MDcsNiArNjE2LDExIEBAIGNsYXNzIFRp
bWUgewogICAvLyBSZXR1cm5zIHRoZSBicmVha2Rvd24gb2YgdGhpcyBpbnN0YW50IGluIHRoZSBn
aXZlbiBUaW1lWm9uZS4KICAgQnJlYWtkb3duIEluKFRpbWVab25lIHR6KSBjb25zdDsKIAorICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIFRpbWUg
dCkgeworICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoKSwgdC5yZXBfKTsKKyAgfQor
CiAgcHJpdmF0ZToKICAgZnJpZW5kIGNvbnN0ZXhwciBUaW1lIHRpbWVfaW50ZXJuYWw6OkZyb21V
bml4RHVyYXRpb24oRHVyYXRpb24gZCk7CiAgIGZyaWVuZCBjb25zdGV4cHIgRHVyYXRpb24gdGlt
ZV9pbnRlcm5hbDo6VG9Vbml4RHVyYXRpb24oVGltZSB0KTsKQEAgLTY4OSw3ICs3MDMsOSBAQCBj
b25zdGV4cHIgVGltZSBJbmZpbml0ZVBhc3QoKSB7CiAvLyBFeGFtcGxlczoKIC8vCiAvLyAgIGFi
c2w6OlRpbWVab25lIGxheDsKLS8vICAgaWYgKCFhYnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2Ev
TG9zX0FuZ2VsZXMiLCAmbGF4KSkgeyAuLi4gfQorLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9u
ZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZsYXgpKSB7CisvLyAgICAgLy8gaGFuZGxlIGVycm9y
IGNhc2UKKy8vICAgfQogLy8KIC8vICAgLy8gQSB1bmlxdWUgY2l2aWwgdGltZQogLy8gICBhYnNs
OjpUaW1lQ29udmVyc2lvbiBqYW4wMSA9CkBAIC03NTksNyArNzc1LDkgQEAgVGltZUNvbnZlcnNp
b24gQ29udmVydERhdGVUaW1lKGludDY0X3QgeWVhciwgaW50IG1vbiwgaW50IGRheSwgaW50IGhv
dXIsCiAvLyBFeGFtcGxlOgogLy8KIC8vICAgYWJzbDo6VGltZVpvbmUgc2VhdHRsZTsKLS8vICAg
aWYgKCFhYnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCAmc2VhdHRsZSkp
IHsgLi4uIH0KKy8vICAgaWYgKCFhYnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2Vs
ZXMiLCAmc2VhdHRsZSkpIHsKKy8vICAgICAvLyBoYW5kbGUgZXJyb3IgY2FzZQorLy8gICB9CiAv
LyAgIGFic2w6OlRpbWUgdCA9ICBhYnNsOjpGcm9tRGF0ZVRpbWUoMjAxNywgOSwgMjYsIDksIDMw
LCAwLCBzZWF0dGxlKTsKIFRpbWUgRnJvbURhdGVUaW1lKGludDY0X3QgeWVhciwgaW50IG1vbiwg
aW50IGRheSwgaW50IGhvdXIsIGludCBtaW4sIGludCBzZWMsCiAgICAgICAgICAgICAgICAgICBU
aW1lWm9uZSB0eik7CkBAIC04NzEsOCArODg5LDEwIEBAIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQgVG9DaHJvbm9UaW1lKFRpbWUpOwogLy8gRm9ybWF0VGltZSgpL1BhcnNl
VGltZSgpIGZvcm1hdCBzcGVjaWZpZXJzIGZvciBSRkMzMzM5IGRhdGUvdGltZSBzdHJpbmdzLAog
Ly8gd2l0aCB0cmFpbGluZyB6ZXJvcyB0cmltbWVkIG9yIHdpdGggZnJhY3Rpb25hbCBzZWNvbmRz
IG9taXR0ZWQgYWx0b2dldGhlci4KIC8vCi0vLyBOb3RlIHRoYXQgUkZDMzMzOV9zZWNbXSBtYXRj
aGVzIGFuIElTTyA4NjAxIGV4dGVuZGVkIGZvcm1hdCBmb3IgZGF0ZQotLy8gYW5kIHRpbWUgd2l0
aCBVVEMgb2Zmc2V0LgorLy8gTm90ZSB0aGF0IFJGQzMzMzlfc2VjW10gbWF0Y2hlcyBhbiBJU08g
ODYwMSBleHRlbmRlZCBmb3JtYXQgZm9yIGRhdGUgYW5kCisvLyB0aW1lIHdpdGggVVRDIG9mZnNl
dC4gIEFsc28gbm90ZSB0aGUgdXNlIG9mICIlWSI6IFJGQzMzMzkgbWFuZGF0ZXMgdGhhdAorLy8g
eWVhcnMgaGF2ZSBleGFjdGx5IGZvdXIgZGlnaXRzLCBidXQgd2UgYWxsb3cgdGhlbSB0byB0YWtl
IHRoZWlyIG5hdHVyYWwKKy8vIHdpZHRoLgogZXh0ZXJuIGNvbnN0IGNoYXIgUkZDMzMzOV9mdWxs
W107ICAvLyAlWS0lbS0lZFQlSDolTTolRSpTJUV6CiBleHRlcm4gY29uc3QgY2hhciBSRkMzMzM5
X3NlY1tdOyAgIC8vICVZLSVtLSVkVCVIOiVNOiVTJUV6CiAKQEAgLTg4Niw3ICs5MDYsNyBAQCBl
eHRlcm4gY29uc3QgY2hhciBSRkMxMTIzX25vX3dkYXlbXTsgIC8vICVkICViICVFNFkgJUg6JU06
JVMgJXoKIC8vIEZvcm1hdFRpbWUoKQogLy8KIC8vIEZvcm1hdHMgdGhlIGdpdmVuIGBhYnNsOjpU
aW1lYCBpbiB0aGUgYGFic2w6OlRpbWVab25lYCBhY2NvcmRpbmcgdG8gdGhlCi0vLyBwcm92aWRl
ZCBmb3JtYXQgc3RkOjpzdHJpbmcuIFVzZXMgc3RyZnRpbWUoKS1saWtlIGZvcm1hdHRpbmcgb3B0
aW9ucywgd2l0aAorLy8gcHJvdmlkZWQgZm9ybWF0IHN0cmluZy4gVXNlcyBzdHJmdGltZSgpLWxp
a2UgZm9ybWF0dGluZyBvcHRpb25zLCB3aXRoCiAvLyB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbnM6
CiAvLwogLy8gICAtICVFeiAgLSBSRkMzMzM5LWNvbXBhdGlibGUgbnVtZXJpYyBVVEMgb2Zmc2V0
ICgraGg6bW0gb3IgLWhoOm1tKQpAQCAtOTEwLDE2ICs5MzAsMTggQEAgZXh0ZXJuIGNvbnN0IGNo
YXIgUkZDMTEyM19ub193ZGF5W107ICAvLyAlZCAlYiAlRTRZICVIOiVNOiVTICV6CiAvLyBFeGFt
cGxlOgogLy8KIC8vICAgYWJzbDo6VGltZVpvbmUgbGF4OwotLy8gICBpZiAoIWFic2w6OkxvYWRU
aW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZsYXgpKSB7IC4uLiB9CisvLyAgIGlmICgh
YWJzbDo6TG9hZFRpbWVab25lKCJBbWVyaWNhL0xvc19BbmdlbGVzIiwgJmxheCkpIHsKKy8vICAg
ICAvLyBoYW5kbGUgZXJyb3IgY2FzZQorLy8gICB9CiAvLyAgIGFic2w6OlRpbWUgdCA9IGFic2w6
OkZyb21EYXRlVGltZSgyMDEzLCAxLCAyLCAzLCA0LCA1LCBsYXgpOwogLy8KLS8vICAgc3RkOjpz
dHJpbmcgZiA9IGFic2w6OkZvcm1hdFRpbWUoIiVIOiVNOiVTIiwgdCwgbGF4KTsgIC8vICIwMzow
NDowNSIKKy8vICAgc3RyaW5nIGYgPSBhYnNsOjpGb3JtYXRUaW1lKCIlSDolTTolUyIsIHQsIGxh
eCk7ICAvLyAiMDM6MDQ6MDUiCiAvLyAgIGYgPSBhYnNsOjpGb3JtYXRUaW1lKCIlSDolTTolRTNT
IiwgdCwgbGF4KTsgIC8vICIwMzowNDowNS4wMDAiCiAvLwogLy8gTm90ZTogSWYgdGhlIGdpdmVu
IGBhYnNsOjpUaW1lYCBpcyBgYWJzbDo6SW5maW5pdGVGdXR1cmUoKWAsIHRoZSByZXR1cm5lZAot
Ly8gc3RkOjpzdHJpbmcgd2lsbCBiZSBleGFjdGx5ICJpbmZpbml0ZS1mdXR1cmUiLiBJZiB0aGUg
Z2l2ZW4gYGFic2w6OlRpbWVgIGlzCi0vLyBgYWJzbDo6SW5maW5pdGVQYXN0KClgLCB0aGUgcmV0
dXJuZWQgc3RkOjpzdHJpbmcgd2lsbCBiZSBleGFjdGx5ICJpbmZpbml0ZS1wYXN0Ii4KLS8vIElu
IGJvdGggY2FzZXMgdGhlIGdpdmVuIGZvcm1hdCBzdGQ6OnN0cmluZyBhbmQgYGFic2w6OlRpbWVa
b25lYCBhcmUgaWdub3JlZC4KKy8vIHN0cmluZyB3aWxsIGJlIGV4YWN0bHkgImluZmluaXRlLWZ1
dHVyZSIuIElmIHRoZSBnaXZlbiBgYWJzbDo6VGltZWAgaXMKKy8vIGBhYnNsOjpJbmZpbml0ZVBh
c3QoKWAsIHRoZSByZXR1cm5lZCBzdHJpbmcgd2lsbCBiZSBleGFjdGx5ICJpbmZpbml0ZS1wYXN0
Ii4KKy8vIEluIGJvdGggY2FzZXMgdGhlIGdpdmVuIGZvcm1hdCBzdHJpbmcgYW5kIGBhYnNsOjpU
aW1lWm9uZWAgYXJlIGlnbm9yZWQuCiAvLwogc3RkOjpzdHJpbmcgRm9ybWF0VGltZShjb25zdCBz
dGQ6OnN0cmluZyYgZm9ybWF0LCBUaW1lIHQsIFRpbWVab25lIHR6KTsKIApAQCAtOTM2LDcgKzk1
OCw3IEBAIGlubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywg
VGltZSB0KSB7CiAKIC8vIFBhcnNlVGltZSgpCiAvLwotLy8gUGFyc2VzIGFuIGlucHV0IHN0ZDo6
c3RyaW5nIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZAor
Ly8gUGFyc2VzIGFuIGlucHV0IHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkIGZvcm1h
dCBzdHJpbmcgYW5kCiAvLyByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIGBhYnNsOjpUaW1lYC4g
VXNlcyBzdHJmdGltZSgpLWxpa2UgZm9ybWF0dGluZwogLy8gb3B0aW9ucywgd2l0aCB0aGUgc2Ft
ZSBleHRlbnNpb25zIGFzIEZvcm1hdFRpbWUoKSwgYnV0IHdpdGggdGhlCiAvLyBleGNlcHRpb25z
IHRoYXQgJUUjUyBpcyBpbnRlcnByZXRlZCBhcyAlRSpTLCBhbmQgJUUjZiBhcyAlRSpmLiAgJUV6
CkBAIC05NTAsNyArOTcyLDcgQEAgaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6
Om9zdHJlYW0mIG9zLCBUaW1lIHQpIHsKIC8vCiAvLyAgICIxOTcwLTAxLTAxIDAwOjAwOjAwLjAg
KzAwMDAiCiAvLwotLy8gRm9yIGV4YW1wbGUsIHBhcnNpbmcgYSBzdGQ6OnN0cmluZyBvZiAiMTU6
NDUiICglSDolTSkgd2lsbCByZXR1cm4gYW4gYWJzbDo6VGltZQorLy8gRm9yIGV4YW1wbGUsIHBh
cnNpbmcgYSBzdHJpbmcgb2YgIjE1OjQ1IiAoJUg6JU0pIHdpbGwgcmV0dXJuIGFuIGFic2w6OlRp
bWUKIC8vIHRoYXQgcmVwcmVzZW50cyAiMTk3MC0wMS0wMSAxNTo0NTowMC4wICswMDAwIi4KIC8v
CiAvLyBOb3RlIHRoYXQgc2luY2UgUGFyc2VUaW1lKCkgcmV0dXJucyB0aW1lIGluc3RhbnRzLCBp
dCBtYWtlcyB0aGUgbW9zdCBzZW5zZQpAQCAtOTc3LDE1ICs5OTksMTUgQEAgaW5saW5lIHN0ZDo6
b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBUaW1lIHQpIHsKIC8vIEVycm9y
cyBhcmUgaW5kaWNhdGVkIGJ5IHJldHVybmluZyBmYWxzZSBhbmQgYXNzaWduaW5nIGFuIGVycm9y
IG1lc3NhZ2UKIC8vIHRvIHRoZSAiZXJyIiBvdXQgcGFyYW0gaWYgaXQgaXMgbm9uLW51bGwuCiAv
LwotLy8gTm90ZTogSWYgdGhlIGlucHV0IHN0ZDo6c3RyaW5nIGlzIGV4YWN0bHkgImluZmluaXRl
LWZ1dHVyZSIsIHRoZSByZXR1cm5lZAorLy8gTm90ZTogSWYgdGhlIGlucHV0IHN0cmluZyBpcyBl
eGFjdGx5ICJpbmZpbml0ZS1mdXR1cmUiLCB0aGUgcmV0dXJuZWQKIC8vIGBhYnNsOjpUaW1lYCB3
aWxsIGJlIGBhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpYCBhbmQgYHRydWVgIHdpbGwgYmUgcmV0dXJu
ZWQuCi0vLyBJZiB0aGUgaW5wdXQgc3RkOjpzdHJpbmcgaXMgImluZmluaXRlLXBhc3QiLCB0aGUg
cmV0dXJuZWQgYGFic2w6OlRpbWVgIHdpbGwgYmUKKy8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMg
ImluZmluaXRlLXBhc3QiLCB0aGUgcmV0dXJuZWQgYGFic2w6OlRpbWVgIHdpbGwgYmUKIC8vIGBh
YnNsOjpJbmZpbml0ZVBhc3QoKWAgYW5kIGB0cnVlYCB3aWxsIGJlIHJldHVybmVkLgogLy8KIGJv
b2wgUGFyc2VUaW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGNvbnN0IHN0ZDo6c3RyaW5n
JiBpbnB1dCwgVGltZSogdGltZSwKICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnIpOwog
Ci0vLyBMaWtlIFBhcnNlVGltZSgpIGFib3ZlLCBidXQgaWYgdGhlIGZvcm1hdCBzdGQ6OnN0cmlu
ZyBkb2VzIG5vdCBjb250YWluIGEgVVRDCisvLyBMaWtlIFBhcnNlVGltZSgpIGFib3ZlLCBidXQg
aWYgdGhlIGZvcm1hdCBzdHJpbmcgZG9lcyBub3QgY29udGFpbiBhIFVUQwogLy8gb2Zmc2V0IHNw
ZWNpZmljYXRpb24gKCV6LyVFei8lRSp6KSB0aGVuIHRoZSBpbnB1dCBpcyBpbnRlcnByZXRlZCBp
biB0aGUKIC8vIGdpdmVuIFRpbWVab25lLiAgVGhpcyBtZWFucyB0aGF0IHRoZSBpbnB1dCwgYnkg
aXRzZWxmLCBkb2VzIG5vdCBpZGVudGlmeSBhCiAvLyB1bmlxdWUgaW5zdGFudC4gIEJlaW5nIHRp
bWUtem9uZSBkZXBlbmRlbnQsIGl0IGFsc28gYWRtaXRzIHRoZSBwb3NzaWJpbGl0eQpAQCAtMTAy
OCw3ICsxMDUwLDkgQEAgc3RkOjpzdHJpbmcgVW5wYXJzZUZsYWcoVGltZSB0KTsKIC8vICAgYWJz
bDo6VGltZVpvbmUgcHN0ID0gYWJzbDo6Rml4ZWRUaW1lWm9uZSgtOCAqIDYwICogNjApOwogLy8g
ICBhYnNsOjpUaW1lWm9uZSBsb2MgPSBhYnNsOjpMb2NhbFRpbWVab25lKCk7CiAvLyAgIGFic2w6
OlRpbWVab25lIGxheDsKLS8vICAgaWYgKCFhYnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9z
X0FuZ2VsZXMiLCAmbGF4KSkgeyAuLi4gfQorLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgi
QW1lcmljYS9Mb3NfQW5nZWxlcyIsICZsYXgpKSB7CisvLyAgICAgLy8gaGFuZGxlIGVycm9yIGNh
c2UKKy8vICAgfQogLy8KIC8vIFNlZSBhbHNvOgogLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZ29v
Z2xlL2NjdHoKQEAgLTEwNDUsNiArMTA2OSwxMSBAQCBjbGFzcyBUaW1lWm9uZSB7CiAKICAgc3Rk
OjpzdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGN6Xy5uYW1lKCk7IH0KIAorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIFRpbWVab25lIHR6
KSB7CisgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCB0ei5jel8pOworICB9CisK
ICBwcml2YXRlOgogICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KFRpbWVab25lIGEsIFRpbWVab25l
IGIpIHsgcmV0dXJuIGEuY3pfID09IGIuY3pfOyB9CiAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0o
VGltZVpvbmUgYSwgVGltZVpvbmUgYikgeyByZXR1cm4gYS5jel8gIT0gYi5jel87IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuYmF6ZWwK
aW5kZXggMDk2YzExOWU2MzhjYmQzNTA0MDU1MGJlZDEwYjE5MmU3YjQ2NzQwMS4uMzJmNjkwYzk0
YzFkMzQ3YzE0MzcyODNiODA4OGQyYjE5NWY1MWNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
QlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuYmF6ZWwKQEAgLTE5LDYgKzE5LDcg
QEAgbG9hZCgKICAgICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwKICAgICAiQUJTTF9URVNUX0NPUFRT
IiwKICAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUciLAorICAgICJBQlNMX0VYQ0VQVElPTlNfRkxB
R19MSU5LT1BUUyIsCiApCiAKIHBhY2thZ2UoZGVmYXVsdF92aXNpYmlsaXR5ID0gWyIvL3Zpc2li
aWxpdHk6cHVibGljIl0pCkBAIC01NSw2ICs1Niw3IEBAIGNjX2xpYnJhcnkoCiAgICAgICAgICJi
YWRfYW55X2Nhc3QuaCIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFH
ICsgQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZM
QUdfTElOS09QVFMsCiAgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwK
ICAgICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtNjksNiArNzEsNyBAQCBj
Y190ZXN0KAogICAgICAgICAiYW55X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNM
X1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
RVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YW55IiwK
ICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAgLTEwMCw2ICsxMDMsNyBAQCBjY190ZXN0KAogICAg
IG5hbWUgPSAiYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdCIsCiAgICAgc3JjcyA9IFsiYW55X2V4
Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsg
QUJTTF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxB
R19MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOmFueSIsCiAgICAgICAgICIvL2Fi
c2wvYmFzZTpleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmciLApAQCAtMTI0LDYgKzEyOCw3IEBAIGNj
X3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAgc3JjcyA9IFsic3Bhbl90ZXN0LmNjIl0s
CiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAg
ICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6c3BhbiIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLApAQCAtMTMx
LDYgKzEzNiw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fdGVz
dGluZyIsCiAgICAgICAgICIvL2Fic2wvY29udGFpbmVyOmZpeGVkX2FycmF5IiwKICAgICAgICAg
Ii8vYWJzbC9jb250YWluZXI6aW5saW5lZF92ZWN0b3IiLAorICAgICAgICAiLy9hYnNsL2hhc2g6
aGFzaF90ZXN0aW5nIiwKICAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKICAgICAgICAgIkBjb21f
Z29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAgICBdLApAQCAtMTQ4LDYgKzE1NCw3
IEBAIGNjX3Rlc3QoCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fdGVzdGluZyIsCiAg
ICAgICAgICIvL2Fic2wvY29udGFpbmVyOmZpeGVkX2FycmF5IiwKICAgICAgICAgIi8vYWJzbC9j
b250YWluZXI6aW5saW5lZF92ZWN0b3IiLAorICAgICAgICAiLy9hYnNsL2hhc2g6aGFzaF90ZXN0
aW5nIiwKICAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dv
b2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAgICBdLApAQCAtMTcyLDYgKzE3OSw3IEBAIGNjX2xp
YnJhcnkoCiAgICAgc3JjcyA9IFsiYmFkX29wdGlvbmFsX2FjY2Vzcy5jYyJdLAogICAgIGhkcnMg
PSBbImJhZF9vcHRpb25hbF9hY2Nlc3MuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NP
UFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElP
TlNfRkxBR19MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2UiLAog
ICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKQEAgLTE4Myw2ICsxOTEsNyBAQCBjY19saWJy
YXJ5KAogICAgIHNyY3MgPSBbImJhZF92YXJpYW50X2FjY2Vzcy5jYyJdLAogICAgIGhkcnMgPSBb
ImJhZF92YXJpYW50X2FjY2Vzcy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxB
RyArIEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19G
TEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCiAgICAg
ICAgICIvL2Fic2wvYmFzZTpjb25maWciLApAQCAtMTk2LDYgKzIwNSw3IEBAIGNjX3Rlc3QoCiAg
ICAgICAgICJvcHRpb25hbF90ZXN0LmNjIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQ
VElPTlNfRkxBR19MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOm9wdGlvbmFsIiwK
ICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAgLTIxMiw2ICsyMjIsNyBAQCBjY190ZXN0KAogICAg
ICAgICAib3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIiwKICAgICBdLAogICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29w
dHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAg
ICAiOm9wdGlvbmFsIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4Y2VwdGlvbl9zYWZldHlfdGVz
dGluZyIsCkBAIC0yMzksNiArMjUwLDcgQEAgY2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwK
ICAgICBzcmNzID0gWyJ2YXJpYW50X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJ
T05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjp2YXJpYW50IiwKICAg
ICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC0yNzEsNiArMjgzLDcgQEAgY2NfdGVzdCgK
ICAgICAgICAgInZhcmlhbnRfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIiwKICAgICBdLAogICAg
IGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlu
a29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAg
ICAgICAiOnZhcmlhbnQiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3NhZmV0eV90
ZXN0aW5nIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL0JVSUxELmduIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
QlVJTEQuZ24KaW5kZXggZmQ3ZTg5ZGVlMzRjM2IzMjkwNWE3ZmE3OGZiZmJmZTJhYmIwMWU1NS4u
YmZkYWZiMzE3ZTNiNGJmMWQzZmVjMjUyY2QwY2QxZDE5M2VjMTkyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXMvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuZ24KQEAgLTEwNCw2ICsx
MDQsNyBAQCBzb3VyY2Vfc2V0KCJvcHRpb25hbCIpIHsKICAgZGVwcyA9IFsKICAgICAiOmJhZF9v
cHRpb25hbF9hY2Nlc3MiLAogICAgICIuLi9iYXNlOmNvbmZpZyIsCisgICAgIi4uL2Jhc2U6Y29y
ZV9oZWFkZXJzIiwKICAgICAiLi4vbWVtb3J5IiwKICAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIs
CiAgICAgIi4uL3V0aWxpdHkiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55X2V4Y2VwdGlv
bl9zYWZldHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2FueV9leGNlcHRpb25fc2FmZXR5X3Rlc3Qu
Y2MKaW5kZXggMzY5NTVmNmM1YzM3NmQzMmZiMTFhNTU4OTViYTRiYTA2ZmU1YTc4ZS4uZjlkZDhj
NDgyYzI1NTQzYjkxNDJlNDJiYTE3NWE4YzAxNDljMzU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXMvYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9hbnlfZXhj
ZXB0aW9uX3NhZmV0eV90ZXN0LmNjCkBAIC02Miw3ICs2Miw3IEBAIHRlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdCBBbnlJbnZhcmlhbnRzKGFic2w6OmFueSogYSkgewogICAgIHN0YXRpY19jYXN0PHZv
aWQ+KHVudXNlZCk7CiAgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQogICAgICAgICAgICA8
PCAiQSByZXNldCBgYW55YCBzaG91bGQgbm90IGJlIGFibGUgdG8gYmUgYW55X2Nhc3QiOwotICB9
IGNhdGNoIChhYnNsOjpiYWRfYW55X2Nhc3QpIHsKKyAgfSBjYXRjaCAoY29uc3QgYWJzbDo6YmFk
X2FueV9jYXN0JikgewogICB9IGNhdGNoICguLi4pIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZSgpCiAgICAgICAgICAgIDw8ICJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB0aHJvd24gZnJvbSBh
YnNsOjphbnlfY2FzdCI7CkBAIC0xMDcsNyArMTA3LDcgQEAgVEVTVChBbnlFeGNlcHRpb25TYWZl
dHksIEFzc2lnbm1lbnQpIHsKICAgfTsKICAgYXV0byBhbnlfc3Ryb25nX3Rlc3RlciA9IHRlc3Rp
bmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKG9yaWdpbmFsKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhBbnlJbnZhcmlhbnRzLCBhbnlfaXNfc3Ryb25nKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhBbnlJbnZhcmlh
bnRzLCBhbnlfaXNfc3Ryb25nKTsKIAogICBUaHJvd2VyIHZhbCgyKTsKICAgYWJzbDo6YW55IGFu
eV92YWwodmFsKTsKQEAgLTEyOSw3ICsxMjksNyBAQCBURVNUKEFueUV4Y2VwdGlvblNhZmV0eSwg
QXNzaWdubWVudCkgewogICBhdXRvIHN0cm9uZ19lbXB0eV9hbnlfdGVzdGVyID0KICAgICAgIHRl
c3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgIC5XaXRoSW5pdGlh
bFZhbHVlKGFic2w6OmFueXt9KQotICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhBbnlJbnZhcmlh
bnRzLCBlbXB0eV9hbnlfaXNfc3Ryb25nKTsKKyAgICAgICAgICAuV2l0aENvbnRyYWN0cyhBbnlJ
bnZhcmlhbnRzLCBlbXB0eV9hbnlfaXNfc3Ryb25nKTsKIAogICBFWFBFQ1RfVFJVRShzdHJvbmdf
ZW1wdHlfYW55X3Rlc3Rlci5UZXN0KGFzc2lnbl9hbnkpKTsKICAgRVhQRUNUX1RSVUUoc3Ryb25n
X2VtcHR5X2FueV90ZXN0ZXIuVGVzdChhc3NpZ25fdmFsKSk7CkBAIC0xNDIsNyArMTQyLDcgQEAg
VEVTVChBbnlFeGNlcHRpb25TYWZldHksIEVtcGxhY2UpIHsKICAgICAgIGFic2w6OmFueXthYnNs
Ojppbl9wbGFjZV90eXBlX3Q8VGhyb3dlcj4oKSwgMSwgdGVzdGluZzo6bm90aHJvd19jdG9yfTsK
ICAgYXV0byBvbmVfdGVzdGVyID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3Rlcigp
CiAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShpbml0aWFsX3ZhbCkK
LSAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhBbnlJbnZhcmlhbnRzLCBB
bnlJc0VtcHR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKEFueUlu
dmFyaWFudHMsIEFueUlzRW1wdHkpOwogCiAgIGF1dG8gZW1wX3Rocm93ZXIgPSBbXShhYnNsOjph
bnkqIGFwKSB7IGFwLT5lbXBsYWNlPFRocm93ZXI+KDIpOyB9OwogICBhdXRvIGVtcF90aHJvd2Vy
dmVjID0gW10oYWJzbDo6YW55KiBhcCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvaW50ZXJu
YWwvdmFyaWFudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvaW50ZXJuYWwvdmFyaWFudC5oCmluZGV4IDc3MDhl
NjdjYjE0ZjQxNmFkZTE2NzE5ZTIzNjlhYWY2NDhiYjYyODMuLmVmZjRmZWZlZDQwOWQ5MmQ1MDdk
YmE4NjY5ZmUxMjMxZWQ0Y2IxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL3Zh
cmlhbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9pbnRlcm5hbC92YXJpYW50LmgKQEAgLTEsNCArMSw0
IEBACi0vLyBDb3B5cmlnaHQgMjAxNyBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLyBDb3B5cmlnaHQg
MjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCiAvLwogLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCkBAIC0z
Nyw2ICszNyw4IEBACiAjaW5jbHVkZSAiYWJzbC90eXBlcy9iYWRfdmFyaWFudF9hY2Nlc3MuaCIK
ICNpbmNsdWRlICJhYnNsL3V0aWxpdHkvdXRpbGl0eS5oIgogCisjaWYgIWRlZmluZWQoQUJTTF9I
QVZFX1NURF9WQVJJQU5UKQorCiBuYW1lc3BhY2UgYWJzbCB7CiAKIHRlbXBsYXRlIDxjbGFzcy4u
LiBUeXBlcz4KQEAgLTkwOCw2ICs5MTAsMTEgQEAgc3RydWN0IFBlcmZvcm1WaXNpdGF0aW9uIHsK
ICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90Li4uIFR1cElzLCBzdGQ6OnNpemVfdC4uLiBJcz4KICAg
Y29uc3RleHByIFJldHVyblR5cGUgUnVuKHN0ZDo6ZmFsc2VfdHlwZSAvKmhhc192YWx1ZWxlc3Mq
LywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4X3NlcXVlbmNlPFR1cElzLi4uPiwg
U2l6ZVQ8SXM+Li4uKSBjb25zdCB7CisgICAgc3RhdGljX2Fzc2VydCgKKyAgICAgICAgc3RkOjpp
c19zYW1lPFJldHVyblR5cGUsCisgICAgICAgICAgICAgICAgICAgICBhYnNsOjpyZXN1bHRfb2Zf
dDxPcChWYXJpYW50QWNjZXNzUmVzdWx0PAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSXMsIFF1YWxpZmllZFZhcmlhbnRzPi4uLik+Pjo6dmFsdWUsCisgICAgICAg
ICJBbGwgdmlzaXRhdGlvbiBvdmVybG9hZHMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBl
LiIpOwogICAgIHJldHVybiBhYnNsOjpiYXNlX2ludGVybmFsOjpJbnZva2UoCiAgICAgICAgIGFi
c2w6OmZvcndhcmQ8T3A+KG9wKSwKICAgICAgICAgVmFyaWFudENvcmVBY2Nlc3M6OkFjY2VzczxJ
cz4oCkBAIC0xMjI3LDIzICsxMjM0LDIzIEBAIHVzaW5nIFZhcmlhbnRDb3B5QmFzZSA9IGFic2w6
OmNvbmRpdGlvbmFsX3Q8CiAvLyBCYXNlIHRoYXQgaXMgZGVwZW5kZW50IG9uIHdoZXRoZXIgb3Ig
bm90IHRoZSBtb3ZlLWFzc2lnbiBjYW4gYmUgdHJpdmlhbC4KIHRlbXBsYXRlIDxjbGFzcy4uLiBU
PgogdXNpbmcgVmFyaWFudE1vdmVBc3NpZ25CYXNlID0gYWJzbDo6Y29uZGl0aW9uYWxfdDwKLSAg
ICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpjb25qdW5jdGlvbjxzdGQ6OmlzX21vdmVfYXNzaWdu
YWJsZTxVbmlvbjxULi4uPj4sCisgICAgYWJzbDo6ZGlzanVuY3Rpb248YWJzbDo6Y29uanVuY3Rp
b248YWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPFVuaW9uPFQuLi4+PiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxVbmlv
bjxULi4uPj4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpp
c19kZXN0cnVjdGlibGU8VW5pb248VC4uLj4+PiwKICAgICAgICAgICAgICAgICAgICAgICBhYnNs
OjpuZWdhdGlvbjxhYnNsOjpjb25qdW5jdGlvbjwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VD4uLi4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPFQ+Li4uPj4+Ojp2YWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPFQ+Li4uPj4+Ojp2YWx1ZSwK
ICAgICBWYXJpYW50Q29weUJhc2U8VC4uLj4sIFZhcmlhbnRNb3ZlQXNzaWduQmFzZU5vbnRyaXZp
YWw8VC4uLj4+OwogCiAvLyBCYXNlIHRoYXQgaXMgZGVwZW5kZW50IG9uIHdoZXRoZXIgb3Igbm90
IHRoZSBjb3B5LWFzc2lnbiBjYW4gYmUgdHJpdmlhbC4KIHRlbXBsYXRlIDxjbGFzcy4uLiBUPgog
dXNpbmcgVmFyaWFudENvcHlBc3NpZ25CYXNlID0gYWJzbDo6Y29uZGl0aW9uYWxfdDwKLSAgICBh
YnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpjb25qdW5jdGlvbjxzdGQ6OmlzX2NvcHlfYXNzaWduYWJs
ZTxVbmlvbjxULi4uPj4sCisgICAgYWJzbDo6ZGlzanVuY3Rpb248YWJzbDo6Y29uanVuY3Rpb248
YWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPFVuaW9uPFQuLi4+PiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxVbmlvbjxU
Li4uPj4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19k
ZXN0cnVjdGlibGU8VW5pb248VC4uLj4+PiwKICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpu
ZWdhdGlvbjxhYnNsOjpjb25qdW5jdGlvbjwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojppc19jb3B5X2NvbnN0cnVjdGlibGU8VD4uLi4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPFQ+Li4uPj4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPFQ+Li4uPj4+Ojp2YWx1ZSwKICAg
ICBWYXJpYW50TW92ZUFzc2lnbkJhc2U8VC4uLj4sIFZhcmlhbnRDb3B5QXNzaWduQmFzZU5vbnRy
aXZpYWw8VC4uLj4+OwogCiB0ZW1wbGF0ZSA8Y2xhc3MuLi4gVD4KQEAgLTE2MTIsNCArMTYxOSw1
IEBAIHN0cnVjdCBWYXJpYW50SGFzaEJhc2U8VmFyaWFudCwKIH0gIC8vIG5hbWVzcGFjZSB2YXJp
YW50X2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAogCisjZW5kaWYgIC8vICFkZWZpbmVk
KEFCU0xfSEFWRV9TVERfVkFSSUFOVCkKICNlbmRpZiAgLy8gQUJTTF9UWVBFU192YXJpYW50X2lu
dGVybmFsX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXMvb3B0aW9uYWwuaAppbmRleCBjODM3Y2RkZWVmNDg5NDI2NDdlN2Y4MjkyZDAxNjM3NTA5NDZi
MmI2Li4xNDIxMDAxODgxNWM0YzY2MTIwN2ZlNDBmNDUyYjAxMzVjOWEwYWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90eXBlcy9vcHRpb25hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsLmgKQEAg
LTU5LDYgKzU5LDcgQEAgdXNpbmcgc3RkOjpudWxsb3B0OwogI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5o
IgogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImFic2wvbWV0YS90
eXBlX3RyYWl0cy5oIgogI2luY2x1ZGUgImFic2wvdHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vzcy5o
IgpAQCAtNDExLDEwICs0MTIsMTAgQEAgY29uc3RleHByIGNvcHlfdHJhaXRzIGdldF9jdG9yX2Nv
cHlfdHJhaXRzKCkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBjb3B5X3Ry
YWl0cyBnZXRfYXNzaWduX2NvcHlfdHJhaXRzKCkgewotICByZXR1cm4gc3RkOjppc19jb3B5X2Fz
c2lnbmFibGU8VD46OnZhbHVlICYmCisgIHJldHVybiBhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8
VD46OnZhbHVlICYmCiAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxl
PFQ+Ojp2YWx1ZQogICAgICAgICAgICAgID8gY29weV90cmFpdHM6OmNvcHlhYmxlCi0gICAgICAg
ICAgICAgOiBzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTxUPjo6dmFsdWUgJiYKKyAgICAgICAgICAg
ICA6IGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxUPjo6dmFsdWUgJiYKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlCiAgICAgICAgICAg
ICAgICAgICAgPyBjb3B5X3RyYWl0czo6bW92YWJsZQogICAgICAgICAgICAgICAgICAgIDogY29w
eV90cmFpdHM6Om5vbl9tb3ZhYmxlOwpAQCAtNzAwLDcgKzcwMSw3IEBAIGNsYXNzIG9wdGlvbmFs
IDogcHJpdmF0ZSBvcHRpb25hbF9pbnRlcm5hbDo6b3B0aW9uYWxfZGF0YTxUPiwKICAgLy8gb3B0
aW9uYWw6OnJlc2V0KCkKICAgLy8KICAgLy8gRGVzdHJveXMgdGhlIGlubmVyIGBUYCB2YWx1ZSBv
ZiBhbiBgYWJzbDo6b3B0aW9uYWxgIGlmIG9uZSBpcyBwcmVzZW50LgotICB2b2lkIHJlc2V0KCkg
bm9leGNlcHQgeyB0aGlzLT5kZXN0cnVjdCgpOyB9CisgIEFCU0xfQVRUUklCVVRFX1JFSU5JVElB
TElaRVMgdm9pZCByZXNldCgpIG5vZXhjZXB0IHsgdGhpcy0+ZGVzdHJ1Y3QoKTsgfQogCiAgIC8v
IG9wdGlvbmFsOjplbXBsYWNlKCkKICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlv
bmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsX2V4Y2Vw
dGlvbl9zYWZldHlfdGVzdC5jYwppbmRleCBkMmVmMDRiOGQxYjA4M2M3NTVjMjMwNjg1NTQ2MGFh
OGYwZGU4MWRkLi5kMTE3ZWU1MTg0OTE5ZmU2YjEyZDEyMzNkZTE2ZTlhZWU4MGU4MDNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCkBAIC0zOCwx
MiArMzgsMTIgQEAgY29uc3RleHByIGludCBrVXBkYXRlZEludGVnZXIgPSAxMDsKIHRlbXBsYXRl
IDx0eXBlbmFtZSBPcHRpb25hbFQ+CiBib29sIFZhbHVlVGhyb3dzQmFkT3B0aW9uYWxBY2Nlc3Mo
Y29uc3QgT3B0aW9uYWxUJiBvcHRpb25hbCkgdHJ5IHsKICAgcmV0dXJuIChzdGF0aWNfY2FzdDx2
b2lkPihvcHRpb25hbC52YWx1ZSgpKSwgZmFsc2UpOwotfSBjYXRjaCAoYWJzbDo6YmFkX29wdGlv
bmFsX2FjY2VzcykgeworfSBjYXRjaCAoY29uc3QgYWJzbDo6YmFkX29wdGlvbmFsX2FjY2VzcyYp
IHsKICAgcmV0dXJuIHRydWU7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcHRpb25hbFQ+Ci1B
c3NlcnRpb25SZXN1bHQgQ2hlY2tJbnZhcmlhbnRzKE9wdGlvbmFsVCogb3B0aW9uYWxfcHRyKSB7
CitBc3NlcnRpb25SZXN1bHQgT3B0aW9uYWxJbnZhcmlhbnRzKE9wdGlvbmFsVCogb3B0aW9uYWxf
cHRyKSB7CiAgIC8vIENoZWNrIHRoZSBjdXJyZW50IHN0YXRlIHBvc3QtdGhyb3cgZm9yIHZhbGlk
aXR5CiAgIGF1dG8mIG9wdGlvbmFsID0gKm9wdGlvbmFsX3B0cjsKIApAQCAtMTIzLDggKzEyMyw4
IEBAIFRFU1QoT3B0aW9uYWxFeGNlcHRpb25TYWZldHksIE5vdGhyb3dDb25zdHJ1Y3RvcnMpIHsK
IFRFU1QoT3B0aW9uYWxFeGNlcHRpb25TYWZldHksIEVtcGxhY2UpIHsKICAgLy8gVGVzdCB0aGUg
YmFzaWMgZ3VhcmFudGVlIHBsdXMgdGVzdCB0aGUgcmVzdWx0IG9mIG9wdGlvbmFsOjpoYXNfdmFs
dWUoKQogICAvLyBpcyBmYWxzZSBpbiBhbGwgY2FzZXMKLSAgYXV0byBkaXNlbmdhZ2VkX3Rlc3Qg
PSBNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aEludmFyaWFudHMoCi0gICAgICBDaGVj
a0ludmFyaWFudHM8T3B0aW9uYWw+LCBDaGVja0Rpc2VuZ2FnZWQ8T3B0aW9uYWw+KTsKKyAgYXV0
byBkaXNlbmdhZ2VkX3Rlc3QgPSBNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aENvbnRy
YWN0cygKKyAgICAgIE9wdGlvbmFsSW52YXJpYW50czxPcHRpb25hbD4sIENoZWNrRGlzZW5nYWdl
ZDxPcHRpb25hbD4pOwogICBhdXRvIGRpc2VuZ2FnZWRfdGVzdF9lbXB0eSA9IGRpc2VuZ2FnZWRf
dGVzdC5XaXRoSW5pdGlhbFZhbHVlKE9wdGlvbmFsKCkpOwogICBhdXRvIGRpc2VuZ2FnZWRfdGVz
dF9ub25lbXB0eSA9CiAgICAgICBkaXNlbmdhZ2VkX3Rlc3QuV2l0aEluaXRpYWxWYWx1ZShPcHRp
b25hbChrSW5pdGlhbEludGVnZXIpKTsKQEAgLTE0NywxMSArMTQ3LDExIEBAIFRFU1QoT3B0aW9u
YWxFeGNlcHRpb25TYWZldHksIEV2ZXJ5dGhpbmdUaHJvd3NTd2FwKSB7CiAgIC8vIFRlc3QgdGhl
IGJhc2ljIGd1YXJhbnRlZSBwbHVzIHRlc3QgdGhlIHJlc3VsdCBvZiBvcHRpb25hbDo6aGFzX3Zh
bHVlKCkKICAgLy8gcmVtYWlucyB0aGUgc2FtZQogICBhdXRvIHRlc3QgPQotICAgICAgTWFrZUV4
Y2VwdGlvblNhZmV0eVRlc3RlcigpLldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50czxPcHRp
b25hbD4pOworICAgICAgTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpLldpdGhDb250cmFjdHMo
T3B0aW9uYWxJbnZhcmlhbnRzPE9wdGlvbmFsPik7CiAgIGF1dG8gZGlzZW5nYWdlZF90ZXN0X2Vt
cHR5ID0gdGVzdC5XaXRoSW5pdGlhbFZhbHVlKE9wdGlvbmFsKCkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0Rpc2VuZ2FnZWQ8T3B0aW9u
YWw+KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMo
Q2hlY2tEaXNlbmdhZ2VkPE9wdGlvbmFsPik7CiAgIGF1dG8gZW5nYWdlZF90ZXN0X25vbmVtcHR5
ID0gdGVzdC5XaXRoSW5pdGlhbFZhbHVlKE9wdGlvbmFsKGtJbml0aWFsSW50ZWdlcikpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0VuZ2Fn
ZWQ8T3B0aW9uYWw+KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhD
b250cmFjdHMoQ2hlY2tFbmdhZ2VkPE9wdGlvbmFsPik7CiAKICAgYXV0byBzd2FwX2VtcHR5ID0g
W10oT3B0aW9uYWwqIG9wdGlvbmFsX3B0cikgewogICAgIGF1dG8gZW1wdHkgPSBPcHRpb25hbCgp
OwpAQCAtMTkyLDExICsxOTIsMTEgQEAgVEVTVChPcHRpb25hbEV4Y2VwdGlvblNhZmV0eSwgQ29w
eUFzc2lnbikgewogICAvLyBUZXN0IHRoZSBiYXNpYyBndWFyYW50ZWUgcGx1cyB0ZXN0IHRoZSBy
ZXN1bHQgb2Ygb3B0aW9uYWw6Omhhc192YWx1ZSgpCiAgIC8vIHJlbWFpbnMgdGhlIHNhbWUKICAg
YXV0byB0ZXN0ID0KLSAgICAgIE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoSW52YXJp
YW50cyhDaGVja0ludmFyaWFudHM8T3B0aW9uYWw+KTsKKyAgICAgIE1ha2VFeGNlcHRpb25TYWZl
dHlUZXN0ZXIoKS5XaXRoQ29udHJhY3RzKE9wdGlvbmFsSW52YXJpYW50czxPcHRpb25hbD4pOwog
ICBhdXRvIGRpc2VuZ2FnZWRfdGVzdF9lbXB0eSA9IHRlc3QuV2l0aEluaXRpYWxWYWx1ZShPcHRp
b25hbCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFu
dHMoQ2hlY2tEaXNlbmdhZ2VkPE9wdGlvbmFsPik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC5XaXRoQ29udHJhY3RzKENoZWNrRGlzZW5nYWdlZDxPcHRpb25hbD4pOwogICBh
dXRvIGVuZ2FnZWRfdGVzdF9ub25lbXB0eSA9IHRlc3QuV2l0aEluaXRpYWxWYWx1ZShPcHRpb25h
bChrSW5pdGlhbEludGVnZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu
V2l0aEludmFyaWFudHMoQ2hlY2tFbmdhZ2VkPE9wdGlvbmFsPik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKENoZWNrRW5nYWdlZDxPcHRpb25hbD4p
OwogCiAgIGF1dG8gY29weWFzc2lnbl9ub25lbXB0eSA9IFtdKE9wdGlvbmFsKiBvcHRpb25hbF9w
dHIpIHsKICAgICBhdXRvIG5vbmVtcHR5ID0KQEAgLTIxOCwxMSArMjE4LDExIEBAIFRFU1QoT3B0
aW9uYWxFeGNlcHRpb25TYWZldHksIE1vdmVBc3NpZ24pIHsKICAgLy8gVGVzdCB0aGUgYmFzaWMg
Z3VhcmFudGVlIHBsdXMgdGVzdCB0aGUgcmVzdWx0IG9mIG9wdGlvbmFsOjpoYXNfdmFsdWUoKQog
ICAvLyByZW1haW5zIHRoZSBzYW1lCiAgIGF1dG8gdGVzdCA9Ci0gICAgICBNYWtlRXhjZXB0aW9u
U2FmZXR5VGVzdGVyKCkuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzPE9wdGlvbmFsPik7
CisgICAgICBNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aENvbnRyYWN0cyhPcHRpb25h
bEludmFyaWFudHM8T3B0aW9uYWw+KTsKICAgYXV0byBkaXNlbmdhZ2VkX3Rlc3RfZW1wdHkgPSB0
ZXN0LldpdGhJbml0aWFsVmFsdWUoT3B0aW9uYWwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrRGlzZW5nYWdlZDxPcHRpb25hbD4pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhDaGVja0Rp
c2VuZ2FnZWQ8T3B0aW9uYWw+KTsKICAgYXV0byBlbmdhZ2VkX3Rlc3Rfbm9uZW1wdHkgPSB0ZXN0
LldpdGhJbml0aWFsVmFsdWUoT3B0aW9uYWwoa0luaXRpYWxJbnRlZ2VyKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrRW5nYWdlZDxPcHRp
b25hbD4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0
cyhDaGVja0VuZ2FnZWQ8T3B0aW9uYWw+KTsKIAogICBhdXRvIG1vdmVhc3NpZ25fZW1wdHkgPSBb
XShPcHRpb25hbCogb3B0aW9uYWxfcHRyKSB7CiAgICAgYXV0byBlbXB0eSA9IE9wdGlvbmFsKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbF90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
b3B0aW9uYWxfdGVzdC5jYwppbmRleCAxNzliZmQ2NmQyZmVlMGViOTMyMWIwNTU5YjJiOWRjMTg5
MTBkYmIzLi5kOTBkYjlmODIxYjUyZDRhOTM1NTU3NzkyZTIxMmUxNDE5OWU3ODA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlv
bmFsX3Rlc3QuY2MKQEAgLTYwNywxMSArNjA3LDEyIEBAIFRFU1Qob3B0aW9uYWxUZXN0LCBDb3B5
QXNzaWdubWVudCkgewogICBvcHQyX3RvX2VtcHR5ID0gZW1wdHk7CiAgIEVYUEVDVF9GQUxTRShv
cHQyX3RvX2VtcHR5KTsKIAotICBFWFBFQ1RfRkFMU0Uoc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8
YWJzbDo6b3B0aW9uYWw8Y29uc3QgaW50Pj46OnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUoc3RkOjpp
c19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8Q29weWFibGU+Pjo6dmFsdWUpOwotICBF
WFBFQ1RfRkFMU0Uoc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8TW92ZWFi
bGVUaHJvdz4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9GQUxTRShzdGQ6OmlzX2NvcHlfYXNzaWduYWJs
ZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJsZU5vVGhyb3c+Pjo6dmFsdWUpOwotICBFWFBFQ1RfRkFM
U0Uoc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8Tm9uTW92YWJsZT4+Ojp2
YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6b3B0
aW9uYWw8Y29uc3QgaW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfY29weV9h
c3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPENvcHlhYmxlPj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZB
TFNFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJsZVRocm93
Pj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgYWJzbDo6aXNfY29weV9hc3NpZ25h
YmxlPGFic2w6Om9wdGlvbmFsPE1vdmVhYmxlTm9UaHJvdz4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9G
QUxTRShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8Tm9uTW92YWJsZT4+
Ojp2YWx1ZSk7CiAKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWdu
YWJsZTxpbnQ+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9jb3B5
X2Fzc2lnbmFibGU8dm9sYXRpbGUgaW50Pjo6dmFsdWUpOwpAQCAtNjI1LDkgKzYyNiw5IEBAIFRF
U1Qob3B0aW9uYWxUZXN0LCBDb3B5QXNzaWdubWVudCkgewogICB9OwogCiAgIEVYUEVDVF9UUlVF
KGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGU8VHJpdmlhbD46OnZhbHVlKTsKLSAg
RVhQRUNUX0ZBTFNFKHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPGNvbnN0IFRyaXZpYWw+Ojp2YWx1
ZSk7Ci0gIEVYUEVDVF9GQUxTRShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTx2b2xhdGlsZSBUcml2
aWFsPjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxOb25U
cml2aWFsPjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxl
PGNvbnN0IFRyaXZpYWw+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19jb3B5X2Fz
c2lnbmFibGU8dm9sYXRpbGUgVHJpdmlhbD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
aXNfY29weV9hc3NpZ25hYmxlPE5vblRyaXZpYWw+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9GQUxTRShh
YnNsOjppc190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPE5vblRyaXZpYWw+Ojp2YWx1ZSk7CiAK
ICAgLy8gc3RkOjpvcHRpb25hbCBkb2Vzbid0IHN1cHBvcnQgdm9sYXRpbGUgbm9udHJpdmlhbCB0
eXBlcy4KQEAgLTY5NSwxMSArNjk2LDExIEBAIFRFU1Qob3B0aW9uYWxUZXN0LCBNb3ZlQXNzaWdu
bWVudCkgewogICAgIEVYUEVDVF9FUSgxLCBsaXN0ZW5lci52b2xhdGlsZV9tb3ZlX2Fzc2lnbik7
CiAgIH0KICNlbmRpZiAgLy8gQUJTTF9IQVZFX1NURF9PUFRJT05BTAotICBFWFBFQ1RfRkFMU0Uo
c3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8Y29uc3QgaW50Pj46OnZhbHVl
KTsKLSAgRVhQRUNUX1RSVUUoc3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8
Q29weWFibGU+Pjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX21vdmVfYXNzaWduYWJs
ZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJsZVRocm93Pj46OnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUo
c3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8TW92ZWFibGVOb1Rocm93Pj46
OnZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9w
dGlvbmFsPE5vbk1vdmFibGU+Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfbW92
ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPGNvbnN0IGludD4+Ojp2YWx1ZSk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxDb3B5YWJsZT4+
Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpv
cHRpb25hbDxNb3ZlYWJsZVRocm93Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNf
bW92ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPE1vdmVhYmxlTm9UaHJvdz4+Ojp2YWx1ZSk7
CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8
Tm9uTW92YWJsZT4+Ojp2YWx1ZSk7CiAKICAgRVhQRUNUX0ZBTFNFKAogICAgICAgc3RkOjppc19u
b3Rocm93X21vdmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJsZVRocm93Pj46OnZh
bHVlKTsKQEAgLTE2MTksNyArMTYyMCw3IEBAIFRFU1Qob3B0aW9uYWxUZXN0LCBBc3NpZ25tZW50
Q29uc3RyYWludHMpIHsKICAgRVhQRUNUX1RSVUUoCiAgICAgICAoc3RkOjppc19hc3NpZ25hYmxl
PGFic2w6Om9wdGlvbmFsPEFueUxpa2U+JiwgY29uc3QgQW55TGlrZSY+Ojp2YWx1ZSkpOwogICBF
WFBFQ1RfVFJVRShzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxBbnlMaWtl
Pj46OnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUoc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6
b3B0aW9uYWw8QW55TGlrZT4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX2NvcHlf
YXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxBbnlMaWtlPj46OnZhbHVlKTsKIH0KIAogfSAgLy8g
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9z
cGFuLmgKaW5kZXggNzZiZTgxOWVjY2EyMTg2ZTVkZDQ5ZGJhMGIyZmQ0YTZkMjdmZjllOC4uOTEx
YWYwYzU3YTYxYTY3ODU1NTdhOTFmYmI2OTJkN2Q5MDE5MTQ1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvc3Bhbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW4uaApAQCAtODcsNyArODcsNyBAQCBj
b25zdGV4cHIgYXV0byBHZXREYXRhSW1wbChDJiBjLCBjaGFyKSBub2V4Y2VwdCAgLy8gTk9MSU5U
KHJ1bnRpbWUvcmVmZXJlbmNlcykKICAgcmV0dXJuIGMuZGF0YSgpOwogfQogCi0vLyBCZWZvcmUg
QysrMTcsIHN0ZDo6c3RyaW5nOjpkYXRhIHJldHVybnMgYSBjb25zdCBjaGFyKiBpbiBhbGwgY2Fz
ZXMuCisvLyBCZWZvcmUgQysrMTcsIHN0cmluZzo6ZGF0YSByZXR1cm5zIGEgY29uc3QgY2hhciog
aW4gYWxsIGNhc2VzLgogaW5saW5lIGNoYXIqIEdldERhdGFJbXBsKHN0ZDo6c3RyaW5nJiBzLCAg
Ly8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQpIG5vZXhjZXB0IHsKICAgcmV0dXJuICZzWzBdOwpAQCAtMzc5LDY0ICszNzksNzAgQEAgY2xh
c3MgU3BhbiB7CiAgIC8vCiAgIC8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGkndGggZWxl
bWVudCBvZiB0aGlzIHNwYW4uCiAgIGNvbnN0ZXhwciByZWZlcmVuY2UgYXQoc2l6ZV90eXBlIGkp
IGNvbnN0IHsKLSAgICByZXR1cm4gQUJTTF9QUkVESUNUX1RSVUUoaSA8IHNpemUoKSkKLSAgICAg
ICAgICAgICAgID8gcHRyX1tpXQorICAgIHJldHVybiBBQlNMX1BSRURJQ1RfVFJVRShpIDwgc2l6
ZSgpKSAgLy8KKyAgICAgICAgICAgICAgID8gKihkYXRhKCkgKyBpKQogICAgICAgICAgICAgICAg
OiAoYmFzZV9pbnRlcm5hbDo6VGhyb3dTdGRPdXRPZlJhbmdlKAogICAgICAgICAgICAgICAgICAg
ICAgICJTcGFuOjphdCBmYWlsZWQgYm91bmRzIGNoZWNrIiksCi0gICAgICAgICAgICAgICAgICBw
dHJfW2ldKTsKKyAgICAgICAgICAgICAgICAgICooZGF0YSgpICsgaSkpOwogICB9CiAKICAgLy8g
U3Bhbjo6ZnJvbnQoKQogICAvLwogICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJz
dCBlbGVtZW50IG9mIHRoaXMgc3Bhbi4KLSAgcmVmZXJlbmNlIGZyb250KCkgY29uc3Qgbm9leGNl
cHQgeyByZXR1cm4gQUJTTF9BU1NFUlQoc2l6ZSgpID4gMCksIHB0cl9bMF07IH0KKyAgY29uc3Rl
eHByIHJlZmVyZW5jZSBmcm9udCgpIGNvbnN0IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gQUJTTF9B
U1NFUlQoc2l6ZSgpID4gMCksICpkYXRhKCk7CisgIH0KIAogICAvLyBTcGFuOjpiYWNrKCkKICAg
Ly8KICAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgbGFzdCBlbGVtZW50IG9mIHRoaXMg
c3Bhbi4KLSAgcmVmZXJlbmNlIGJhY2soKSBjb25zdCBub2V4Y2VwdCB7Ci0gICAgcmV0dXJuIEFC
U0xfQVNTRVJUKHNpemUoKSA+IDApLCBwdHJfW3NpemUoKSAtIDFdOworICBjb25zdGV4cHIgcmVm
ZXJlbmNlIGJhY2soKSBjb25zdCBub2V4Y2VwdCB7CisgICAgcmV0dXJuIEFCU0xfQVNTRVJUKHNp
emUoKSA+IDApLCAqKGRhdGEoKSArIHNpemUoKSAtIDEpOwogICB9CiAKICAgLy8gU3Bhbjo6YmVn
aW4oKQogICAvLwogICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBmaXJzdCBlbGVtZW50
IG9mIHRoaXMgc3Bhbi4KLSAgY29uc3RleHByIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Qgbm9leGNl
cHQgeyByZXR1cm4gcHRyXzsgfQorICBjb25zdGV4cHIgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBu
b2V4Y2VwdCB7IHJldHVybiBkYXRhKCk7IH0KIAogICAvLyBTcGFuOjpjYmVnaW4oKQogICAvLwog
ICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhp
cyBzcGFuLgotICBjb25zdGV4cHIgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3Qgbm9leGNl
cHQgeyByZXR1cm4gcHRyXzsgfQorICBjb25zdGV4cHIgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkg
Y29uc3Qgbm9leGNlcHQgeyByZXR1cm4gYmVnaW4oKTsgfQogCiAgIC8vIFNwYW46OmVuZCgpCiAg
IC8vCiAgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGxhc3QgZWxlbWVudCBvZiB0aGlz
IHNwYW4uCi0gIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHB0cl8gKyBs
ZW5fOyB9CisgIGNvbnN0ZXhwciBpdGVyYXRvciBlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVy
biBkYXRhKCkgKyBzaXplKCk7IH0KIAogICAvLyBTcGFuOjpjZW5kKCkKICAgLy8KICAgLy8gUmV0
dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhpcyBzcGFuLgot
ICBjb25zdF9pdGVyYXRvciBjZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gZW5kKCk7IH0K
KyAgY29uc3RleHByIGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVy
biBlbmQoKTsgfQogCiAgIC8vIFNwYW46OnJiZWdpbigpCiAgIC8vCiAgIC8vIFJldHVybnMgYSBy
ZXZlcnNlIGl0ZXJhdG9yIHN0YXJ0aW5nIGF0IHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhpcyBzcGFu
LgotICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJl
dmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CisgIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yIHJi
ZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQo
KSk7CisgIH0KIAogICAvLyBTcGFuOjpjcmJlZ2luKCkKICAgLy8KICAgLy8gUmV0dXJucyBhIHJl
dmVyc2UgY29uc3QgaXRlcmF0b3Igc3RhcnRpbmcgYXQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGlz
IHNwYW4uCi0gIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JiZWdpbigpIGNvbnN0IG5vZXhjZXB0
IHsgcmV0dXJuIHJiZWdpbigpOyB9CisgIGNvbnN0ZXhwciBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
IGNyYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByYmVnaW4oKTsgfQogCiAgIC8vIFNw
YW46OnJlbmQoKQogICAvLwogICAvLyBSZXR1cm5zIGEgcmV2ZXJzZSBpdGVyYXRvciBzdGFydGlu
ZyBhdCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGlzIHNwYW4uCi0gIHJldmVyc2VfaXRlcmF0b3Ig
cmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7
IH0KKyAgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsK
KyAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsKKyAgfQogCiAgIC8vIFNwYW46
OmNyZW5kKCkKICAgLy8KICAgLy8gUmV0dXJucyBhIHJldmVyc2UgaXRlcmF0b3Igc3RhcnRpbmcg
YXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhpcyBzcGFuLgotICBjb25zdF9yZXZlcnNlX2l0ZXJh
dG9yIGNyZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmVuZCgpOyB9CisgIGNvbnN0ZXhw
ciBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4g
cmVuZCgpOyB9CiAKICAgLy8gU3BhbiBtdXRhdGlvbnMKIApAQCAtNDQ0LDcgKzQ1MCw3IEBAIGNs
YXNzIFNwYW4gewogICAvLwogICAvLyBSZW1vdmVzIHRoZSBmaXJzdCBgbmAgZWxlbWVudHMgZnJv
bSB0aGUgc3Bhbi4KICAgdm9pZCByZW1vdmVfcHJlZml4KHNpemVfdHlwZSBuKSBub2V4Y2VwdCB7
Ci0gICAgYXNzZXJ0KGxlbl8gPj0gbik7CisgICAgYXNzZXJ0KHNpemUoKSA+PSBuKTsKICAgICBw
dHJfICs9IG47CiAgICAgbGVuXyAtPSBuOwogICB9CkBAIC00NTMsNyArNDU5LDcgQEAgY2xhc3Mg
U3BhbiB7CiAgIC8vCiAgIC8vIFJlbW92ZXMgdGhlIGxhc3QgYG5gIGVsZW1lbnRzIGZyb20gdGhl
IHNwYW4uCiAgIHZvaWQgcmVtb3ZlX3N1ZmZpeChzaXplX3R5cGUgbikgbm9leGNlcHQgewotICAg
IGFzc2VydChsZW5fID49IG4pOworICAgIGFzc2VydChzaXplKCkgPj0gbik7CiAgICAgbGVuXyAt
PSBuOwogICB9CiAKQEAgLTQ3NCwxMSArNDgwLDE4IEBAIGNsYXNzIFNwYW4gewogICAvLyAgIGFi
c2w6Ok1ha2VTcGFuKHZlYykuc3Vic3Bhbig0KTsgICAgIC8vIHt9CiAgIC8vICAgYWJzbDo6TWFr
ZVNwYW4odmVjKS5zdWJzcGFuKDUpOyAgICAgLy8gdGhyb3dzIHN0ZDo6b3V0X29mX3JhbmdlCiAg
IGNvbnN0ZXhwciBTcGFuIHN1YnNwYW4oc2l6ZV90eXBlIHBvcyA9IDAsIHNpemVfdHlwZSBsZW4g
PSBucG9zKSBjb25zdCB7Ci0gICAgcmV0dXJuIChwb3MgPD0gbGVuXykKLSAgICAgICAgICAgICAg
ID8gU3BhbihwdHJfICsgcG9zLCBzcGFuX2ludGVybmFsOjpNaW4obGVuXyAtIHBvcywgbGVuKSkK
KyAgICByZXR1cm4gKHBvcyA8PSBzaXplKCkpCisgICAgICAgICAgICAgICA/IFNwYW4oZGF0YSgp
ICsgcG9zLCBzcGFuX2ludGVybmFsOjpNaW4oc2l6ZSgpIC0gcG9zLCBsZW4pKQogICAgICAgICAg
ICAgICAgOiAoYmFzZV9pbnRlcm5hbDo6VGhyb3dTdGRPdXRPZlJhbmdlKCJwb3MgPiBzaXplKCki
KSwgU3BhbigpKTsKICAgfQogCisgIC8vIFN1cHBvcnQgZm9yIGFic2w6Okhhc2guCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgU3BhbiB2KSB7
CisgICAgcmV0dXJuIEg6OmNvbWJpbmUoSDo6Y29tYmluZV9jb250aWd1b3VzKHN0ZDo6bW92ZSho
KSwgdi5kYXRhKCksIHYuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICB2LnNpemUoKSk7
CisgIH0KKwogIHByaXZhdGU6CiAgIHBvaW50ZXIgcHRyXzsKICAgc2l6ZV90eXBlIGxlbl87CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuX3Rl
c3QuY2MKaW5kZXggZmJjZTdlODc0Nzk4NDFjZjg5MTM4MDI2OTkzMjM4YzM5OTg2MjE2OC4uYmQ3
MzlmZjJhMDcwYTZmY2VjMWE2NGVhMTMzZDFiODFmMDBjZmM3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvc3Bhbl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW5fdGVzdC5jYwpAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fdGVzdGlu
Zy5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5LmgiCiAjaW5jbHVkZSAi
YWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaCIKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFz
aF90ZXN0aW5nLmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKIAogbmFtZXNw
YWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3Zh
cmlhbnQuaAppbmRleCAxN2UwNjM0ZGUwMzc0NjQzMzY3NGU5OWVjMDc3YjZmNzczZThiMmQ5Li4y
Zjc4NzIyZjhiN2M5NTZkNmQxNzZlOTAyZDRlMDA5Y2E5Njk0YTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlcy92YXJpYW50LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudC5oCkBAIC00MTQsOSAr
NDE0LDkgQEAgY29uc3RleHByIGFic2w6OmFkZF9wb2ludGVyX3Q8Y29uc3QgVD4gZ2V0X2lmKAog
Ly8gICB9OwogLy8KIC8vICAgLy8gRGVjbGFyZSBvdXIgdmFyaWFudCwgYW5kIGNhbGwgYGFic2w6
OnZpc2l0KClgIG9uIGl0LgotLy8gICBzdGQ6OnZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZz4gZm9v
ID0gc3RkOjpzdHJpbmcoImZvbyIpOworLy8gICBhYnNsOjp2YXJpYW50PGludCwgc3RkOjpzdHJp
bmc+IGZvbyA9IHN0ZDo6c3RyaW5nKCJmb28iKTsKIC8vICAgR2V0VmFyaWFudCB2aXNpdG9yOwot
Ly8gICBzdGQ6OnZpc2l0KHZpc2l0b3IsIGZvbyk7ICAvLyBQcmludHMgYFRoZSB2YXJpYW50J3Mg
dmFsdWUgaXM6IGZvbycKKy8vICAgYWJzbDo6dmlzaXQodmlzaXRvciwgZm9vKTsgIC8vIFByaW50
cyBgVGhlIHZhcmlhbnQncyB2YWx1ZSBpczogZm9vJwogdGVtcGxhdGUgPHR5cGVuYW1lIFZpc2l0
b3IsIHR5cGVuYW1lLi4uIFZhcmlhbnRzPgogdmFyaWFudF9pbnRlcm5hbDo6VmlzaXRSZXN1bHQ8
VmlzaXRvciwgVmFyaWFudHMuLi4+IHZpc2l0KFZpc2l0b3ImJiB2aXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFudHMmJi4u
LiB2YXJzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X2V4Y2VwdGlvbl9zYWZl
dHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNj
CmluZGV4IDI3YzBiOTZjYTZmMzQwODUwYjAyNTFiYzZlOTE2ZDM3Y2RmMTE2NDUuLjU4NDM2ZjA3
Yjg0Mzc0OGU3YTYzZDExYzgyOWUxNmY1NTUxYTZkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
L3ZhcmlhbnRfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3Zhcmlh
bnRfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCkBAIC01MywxMyArNTMsMTMgQEAgdm9pZCBUb1Zh
bHVlbGVzc0J5RXhjZXB0aW9uKFRocm93aW5nVmFyaWFudCYgdikgeyAgLy8gTk9MSU5UCiAgIHRy
eSB7CiAgICAgdi5lbXBsYWNlPFRocm93ZXI+KCk7CiAgICAgdi5lbXBsYWNlPFRocm93ZXI+KEV4
Y2VwdGlvbk9uQ29udmVyc2lvbjxUaHJvd2VyPigpKTsKLSAgfSBjYXRjaCAoQ29udmVyc2lvbkV4
Y2VwdGlvbiYgLyplKi8pIHsKKyAgfSBjYXRjaCAoY29uc3QgQ29udmVyc2lvbkV4Y2VwdGlvbiYp
IHsKICAgICAvLyBUaGlzIHNwYWNlIGludGVudGlvbmFsbHkgbGVmdCBibGFuay4KICAgfQogfQog
CiAvLyBDaGVjayB0aGF0IHZhcmlhbnQgaXMgc3RpbGwgaW4gYSB1c2FibGUgc3RhdGUgYWZ0ZXIg
YW4gZXhjZXB0aW9uIGlzIHRocm93bi4KLXRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBDaGVja0lu
dmFyaWFudHMoVGhyb3dpbmdWYXJpYW50KiB2KSB7Cit0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQg
VmFyaWFudEludmFyaWFudHMoVGhyb3dpbmdWYXJpYW50KiB2KSB7CiAgIHVzaW5nIHRlc3Rpbmc6
OkFzc2VydGlvbkZhaWx1cmU7CiAgIHVzaW5nIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3M7CiAK
QEAgLTEwMCw3ICsxMDAsNyBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgQ2hlY2tJbnZhcmlh
bnRzKFRocm93aW5nVmFyaWFudCogdikgewogICAgIGF1dG8gdW51c2VkID0gYWJzbDo6Z2V0PFRo
cm93ZXI+KCp2KTsKICAgICBzdGF0aWNfY2FzdDx2b2lkPih1bnVzZWQpOwogICAgIHJldHVybiBB
c3NlcnRpb25GYWlsdXJlKCkgPDwgIlZhcmlhbnQgc2hvdWxkIG5vdCBjb250YWluIFRocm93ZXIi
OwotICB9IGNhdGNoIChhYnNsOjpiYWRfdmFyaWFudF9hY2Nlc3MpIHsKKyAgfSBjYXRjaCAoY29u
c3QgYWJzbDo6YmFkX3ZhcmlhbnRfYWNjZXNzJikgewogICB9IGNhdGNoICguLi4pIHsKICAgICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB0aHJvdyBm
cm9tIGFic2w6OmdldCI7CiAgIH0KQEAgLTIxMyw4ICsyMTMsOCBAQCBURVNUKFZhcmlhbnRFeGNl
cHRpb25TYWZldHlUZXN0LCBDb3B5QXNzaWduKSB7CiAgICAgICAgIE1ha2VFeGNlcHRpb25TYWZl
dHlUZXN0ZXIoKQogICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoV2l0aFRocm93ZXIoKSkK
ICAgICAgICAgICAgIC5XaXRoT3BlcmF0aW9uKFsmcmhzXShUaHJvd2luZ1ZhcmlhbnQqIGxocykg
eyAqbGhzID0gcmhzOyB9KTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuV2l0aEludmFyaWFudHMo
Q2hlY2tJbnZhcmlhbnRzKS5UZXN0KCkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aElu
dmFyaWFudHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0
ZXIuV2l0aENvbnRyYWN0cyhWYXJpYW50SW52YXJpYW50cykuVGVzdCgpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UodGVzdGVyLldpdGhDb250cmFjdHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAg
fQogICB7CiAgICAgY29uc3QgVGhyb3dpbmdWYXJpYW50IHJocyhFeHBlY3RlZFRocm93ZXJWZWMo
KSk7CkBAIC0yMjIsOCArMjIyLDggQEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwg
Q29weUFzc2lnbikgewogICAgICAgICBNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAg
ICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFdpdGhUaHJvd2VyVmVjKCkpCiAgICAgICAgICAgICAu
V2l0aE9wZXJhdGlvbihbJnJoc10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsgKmxocyA9IHJoczsg
fSk7Ci0gICAgRVhQRUNUX1RSVUUodGVzdGVyLldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50
cykuVGVzdCgpKTsKLSAgICBFWFBFQ1RfRkFMU0UodGVzdGVyLldpdGhJbnZhcmlhbnRzKHN0cm9u
Z19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdGVyLldpdGhDb250cmFj
dHMoVmFyaWFudEludmFyaWFudHMpLlRlc3QoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3Rlci5X
aXRoQ29udHJhY3RzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CiAgIH0KICAgLy8gbGlic3Rk
YysrIHN0ZDo6dmFyaWFudCBoYXMgYnVncyBvbiBjb3B5IGFzc2lnbm1lbnQgcmVnYXJkaW5nIGV4
Y2VwdGlvbgogICAvLyBzYWZldHkuCkBAIC0yNTEsMTIgKzI1MSwxMiBAQCBURVNUKFZhcmlhbnRF
eGNlcHRpb25TYWZldHlUZXN0LCBDb3B5QXNzaWduKSB7CiAgICAgICAgICAgICAuV2l0aEluaXRp
YWxWYWx1ZShXaXRoQ29weU5vVGhyb3coKSkKICAgICAgICAgICAgIC5XaXRoT3BlcmF0aW9uKFsm
cmhzXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeyAqbGhzID0gcmhzOyB9KTsKICAgICBFWFBFQ1Rf
VFJVRSh0ZXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrSW52
YXJpYW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5n
VmFyaWFudCogbGhzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFZh
cmlhbnRJbnZhcmlhbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXShU
aHJvd2luZ1ZhcmlhbnQqIGxocykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRpb24oKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgLlRlc3QoKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKHRlc3Rlci5XaXRoSW52YXJpYW50cyhzdHJvbmdfZ3VhcmFudGVlKS5U
ZXN0KCkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aENvbnRyYWN0cyhzdHJvbmdfZ3Vh
cmFudGVlKS5UZXN0KCkpOwogICB9CiAjZW5kaWYgIC8vICEoZGVmaW5lZChBQlNMX0hBVkVfU1RE
X1ZBUklBTlQpICYmIGRlZmluZWQoX19HTElCQ1hYX18pKQogICB7CkBAIC0yNjgsNyArMjY4LDcg
QEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwgQ29weUFzc2lnbikgewogICAgIGNv
bnN0IFRocm93aW5nVmFyaWFudCByaHMoTW92ZU5vdGhyb3d7fSk7CiAgICAgRVhQRUNUX1RSVUUo
TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5p
dGlhbFZhbHVlKFdpdGhUaHJvd2VyKCkpCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJp
YW50cyhDaGVja0ludmFyaWFudHMsIHN0cm9uZ19ndWFyYW50ZWUpCisgICAgICAgICAgICAgICAg
ICAgIC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzLCBzdHJvbmdfZ3VhcmFudGVlKQog
ICAgICAgICAgICAgICAgICAgICAuVGVzdChbJnJoc10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsg
KmxocyA9IHJoczsgfSkpOwogICB9CiB9CkBAIC0zMDQsMTEgKzMwNCwxMSBAQCBURVNUKFZhcmlh
bnRFeGNlcHRpb25TYWZldHlUZXN0LCBNb3ZlQXNzaWduKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAqbGhzID0gc3RkOjptb3ZlKGNvcHkpOwogICAgICAgICAgICAgICAgICAgICAgIH0pOwog
ICAgIEVYUEVDVF9UUlVFKHRlc3RlcgotICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFu
dHMoCi0gICAgICAgICAgICAgICAgICAgICAgICBDaGVja0ludmFyaWFudHMsCisgICAgICAgICAg
ICAgICAgICAgIC5XaXRoQ29udHJhY3RzKAorICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFu
dEludmFyaWFudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBbJl0oVGhyb3dpbmdWYXJpYW50
KiBsaHMpIHsgcmV0dXJuIGxocy0+aW5kZXgoKSA9PSBqOyB9KQogICAgICAgICAgICAgICAgICAg
ICAuVGVzdCgpKTsKLSAgICBFWFBFQ1RfRkFMU0UodGVzdGVyLldpdGhJbnZhcmlhbnRzKHN0cm9u
Z19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3Rlci5XaXRoQ29udHJh
Y3RzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CiAgIH0KICAgewogICAgIC8vIC0gb3RoZXJ3
aXNlIChpbmRleCgpICE9IGopLCBlcXVpdmFsZW50IHRvCkBAIC0zMTgsMTAgKzMxOCwxMCBAQCBU
RVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBNb3ZlQXNzaWduKSB7CiAgICAgVGhyb3dp
bmdWYXJpYW50IHJocyhDb3B5Tm90aHJvd3t9KTsKICAgICBFWFBFQ1RfVFJVRShNYWtlRXhjZXB0
aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUo
V2l0aFRocm93ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNr
SW52YXJpYW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93
aW5nVmFyaWFudCogbGhzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRpb24oKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3Rz
KFZhcmlhbnRJbnZhcmlhbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
XShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRpb24oKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgLlRlc3QoWyZd
KFRocm93aW5nVmFyaWFudCogbGhzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgYXV0byBjb3B5
ID0gcmhzOwogICAgICAgICAgICAgICAgICAgICAgICpsaHMgPSBzdGQ6Om1vdmUoY29weSk7CkBA
IC0zNDcsMTIgKzM0NywxMiBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBWYWx1
ZUFzc2lnbikgewogICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoV2l0aFRocm93ZXIoKSkK
ICAgICAgICAgICAgIC5XaXRoT3BlcmF0aW9uKFtyaHNdKFRocm93aW5nVmFyaWFudCogbGhzKSB7
ICpsaHMgPSByaHM7IH0pOwogICAgIEVYUEVDVF9UUlVFKGNvcHlfdGVzdGVyCi0gICAgICAgICAg
ICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0ludmFyaWFudHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWxocy0+dmFsdWVsZXNzX2J5
X2V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKKyAg
ICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoVmFyaWFudEludmFyaWFudHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFsaHMtPnZhbHVl
bGVzc19ieV9leGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSkKICAgICAgICAgICAgICAgICAgICAgLlRlc3QoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGNvcHlf
dGVzdGVyLldpdGhJbnZhcmlhbnRzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGNvcHlfdGVzdGVyLldpdGhDb250cmFjdHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVz
dCgpKTsKICAgICAvLyBtb3ZlIGFzc2lnbgogICAgIGF1dG8gbW92ZV90ZXN0ZXIgPSBNYWtlRXhj
ZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5p
dGlhbFZhbHVlKFdpdGhUaHJvd2VyKCkpCkBAIC0zNjEsMTMgKzM2MSwxMyBAQCBURVNUKFZhcmlh
bnRFeGNlcHRpb25TYWZldHlUZXN0LCBWYWx1ZUFzc2lnbikgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqbGhzID0gc3RkOjptb3ZlKGNvcHkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgRVhQRUNUX1RSVUUobW92ZV90ZXN0ZXIKLSAgICAgICAgICAgICAgICAg
ICAgLldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhbGhzLT52YWx1ZWxlc3NfYnlfZXhjZXB0
aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAg
ICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhWYXJpYW50SW52YXJpYW50cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWxocy0+dmFsdWVsZXNzX2J5
X2V4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAg
ICAgICAgICAgICAgICAgICAuVGVzdCgpKTsKIAotICAgIEVYUEVDVF9GQUxTRShtb3ZlX3Rlc3Rl
ci5XaXRoSW52YXJpYW50cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOworICAgIEVYUEVDVF9G
QUxTRShtb3ZlX3Rlc3Rlci5XaXRoQ29udHJhY3RzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7
CiAgIH0KICAgLy8gT3RoZXJ3aXNlICgqdGhpcyBob2xkcyBzb21ldGhpbmcgZWxzZSksIGlmIGlz
X25vdGhyb3dfY29uc3RydWN0aWJsZV92PFRqLAogICAvLyBUPiB8fCAhaXNfbm90aHJvd19tb3Zl
X2NvbnN0cnVjdGlibGVfdjxUaj4gaXMgdHJ1ZSwgZXF1aXZhbGVudCB0bwpAQCAtNDAwLDEyICs0
MDAsMTIgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwgVmFsdWVBc3NpZ24pIHsK
ICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFdpdGhDb3B5Tm9UaHJvdygpKQogICAgICAg
ICAgICAgLldpdGhPcGVyYXRpb24oWyZyaHNdKFRocm93aW5nVmFyaWFudCogbGhzKSB7ICpsaHMg
PSByaHM7IH0pOwogICAgIEVYUEVDVF9UUlVFKGNvcHlfdGVzdGVyCi0gICAgICAgICAgICAgICAg
ICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0ludmFyaWFudHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGhzLT52YWx1ZWxlc3NfYnlfZXhjZXB0
aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAg
ICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhWYXJpYW50SW52YXJpYW50cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGhzLT52YWx1ZWxlc3NfYnlf
ZXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAg
ICAgICAgICAgICAgICAgIC5UZXN0KCkpOwotICAgIEVYUEVDVF9GQUxTRShjb3B5X3Rlc3Rlci5X
aXRoSW52YXJpYW50cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOworICAgIEVYUEVDVF9GQUxT
RShjb3B5X3Rlc3Rlci5XaXRoQ29udHJhY3RzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CiAg
ICAgLy8gbW92ZQogICAgIGF1dG8gbW92ZV90ZXN0ZXIgPSBNYWtlRXhjZXB0aW9uU2FmZXR5VGVz
dGVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFdpdGhD
b3B5Tm9UaHJvdygpKQpAQCAtNDEzLDEyICs0MTMsMTIgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9u
U2FmZXR5VGVzdCwgVmFsdWVBc3NpZ24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KmxocyA9IEV4cGVjdGVkVGhyb3dlcih0ZXN0aW5nOjpub3Rocm93X2N0b3IpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgRVhQRUNUX1RSVUUobW92ZV90ZXN0ZXIKLSAgICAg
ICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVz
c19ieV9leGNlcHRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0p
CisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXShUaHJvd2luZ1ZhcmlhbnQqIGxo
cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaHMtPnZh
bHVlbGVzc19ieV9leGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSkKICAgICAgICAgICAgICAgICAgICAgLlRlc3QoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG1v
dmVfdGVzdGVyLldpdGhJbnZhcmlhbnRzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKG1vdmVfdGVzdGVyLldpdGhDb250cmFjdHMoc3Ryb25nX2d1YXJhbnRlZSku
VGVzdCgpKTsKICAgfQogICAvLyBPdGhlcndpc2UgKGlmIGlzX25vdGhyb3dfY29uc3RydWN0aWJs
ZV92PFRqLCBUPiA9PSBmYWxzZSAmJgogICAvLyBpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJs
ZTxUaj4gPT0gdHJ1ZSksCkBAIC00MzIsNyArNDMyLDcgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9u
U2FmZXR5VGVzdCwgVmFsdWVBc3NpZ24pIHsKICAgICBNb3ZlTm90aHJvdyByaHM7CiAgICAgRVhQ
RUNUX1RSVUUoTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAgICAgICAgICAgICAg
IC5XaXRoSW5pdGlhbFZhbHVlKFdpdGhUaHJvd2VyKCkpCi0gICAgICAgICAgICAgICAgICAgIC5X
aXRoSW52YXJpYW50cyhDaGVja0ludmFyaWFudHMsIHN0cm9uZ19ndWFyYW50ZWUpCisgICAgICAg
ICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzLCBzdHJvbmdfZ3Vh
cmFudGVlKQogICAgICAgICAgICAgICAgICAgICAuVGVzdChbJnJoc10oVGhyb3dpbmdWYXJpYW50
KiBsaHMpIHsgKmxocyA9IHJoczsgfSkpOwogICB9CiAjZW5kaWYgIC8vICEoZGVmaW5lZChBQlNM
X0hBVkVfU1REX1ZBUklBTlQpICYmIGRlZmluZWQoX19HTElCQ1hYX18pKQpAQCAtNDUwLDEyICs0
NTAsMTIgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwgRW1wbGFjZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgdi0+ZW1wbGFjZTxUaHJvd2VyPihhcmdzKTsKICAgICAgICAg
ICAgICAgICAgICAgICB9KTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0ZXIKLSAgICAgICAgICAgICAg
ICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogdikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi0+dmFsdWVsZXNzX2J5X2V4Y2VwdGlv
bigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAg
ICAgICAgICAgLldpdGhDb250cmFjdHMoVmFyaWFudEludmFyaWFudHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogdikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2LT52YWx1ZWxlc3NfYnlfZXhjZXB0
aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAg
ICAgICAgICAgIC5UZXN0KCkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aEludmFyaWFu
dHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdGVyLldp
dGhDb250cmFjdHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAgfQogfQogCkBAIC00NzIs
NyArNDcyLDcgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwgU3dhcCkgewogICAg
IFRocm93aW5nVmFyaWFudCByaHMgPSBFeHBlY3RlZFRocm93ZXIoKTsKICAgICBFWFBFQ1RfVFJV
RShNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhJ
bml0aWFsVmFsdWUoV2l0aFRocm93ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZh
cmlhbnRzKENoZWNrSW52YXJpYW50cykKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFj
dHMoVmFyaWFudEludmFyaWFudHMpCiAgICAgICAgICAgICAgICAgICAgIC5UZXN0KFsmXShUaHJv
d2luZ1ZhcmlhbnQqIGxocykgewogICAgICAgICAgICAgICAgICAgICAgIGF1dG8gY29weSA9IHJo
czsKICAgICAgICAgICAgICAgICAgICAgICBsaHMtPnN3YXAoY29weSk7CkBAIC00ODYsNyArNDg2
LDcgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwgU3dhcCkgewogICAgIFRocm93
aW5nVmFyaWFudCByaHMgPSBFeHBlY3RlZFRocm93ZXIoKTsKICAgICBFWFBFQ1RfVFJVRShNYWtl
RXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFs
VmFsdWUoV2l0aENvcHlOb1Rocm93KCkpCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJp
YW50cyhDaGVja0ludmFyaWFudHMpCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3Rz
KFZhcmlhbnRJbnZhcmlhbnRzKQogICAgICAgICAgICAgICAgICAgICAuVGVzdChbJl0oVGhyb3dp
bmdWYXJpYW50KiBsaHMpIHsKICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGNvcHkgPSByaHM7
CiAgICAgICAgICAgICAgICAgICAgICAgbGhzLT5zd2FwKGNvcHkpOwpAQCAtNDk2LDcgKzQ5Niw3
IEBAIFRFU1QoVmFyaWFudEV4Y2VwdGlvblNhZmV0eVRlc3QsIFN3YXApIHsKICAgICBUaHJvd2lu
Z1ZhcmlhbnQgcmhzID0gRXhwZWN0ZWRUaHJvd2VyKCk7CiAgICAgRVhQRUNUX1RSVUUoTWFrZUV4
Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZh
bHVlKFdpdGhDb3B5Tm9UaHJvdygpKQotICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFu
dHMoQ2hlY2tJbnZhcmlhbnRzKQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhW
YXJpYW50SW52YXJpYW50cykKICAgICAgICAgICAgICAgICAgICAgLlRlc3QoWyZdKFRocm93aW5n
VmFyaWFudCogbGhzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgYXV0byBjb3B5ID0gcmhzOwog
ICAgICAgICAgICAgICAgICAgICAgIGNvcHkuc3dhcCgqbGhzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzL3ZhcmlhbnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfdGVzdC5jYwppbmRl
eCAyNjJiZDk0NDZjMTg0MWE1NzA3MTU3NDVjMzQzNGVlMWI4ZTE5Zjk1Li5iZmI4YmQ3YTAyMjNm
M2NkOTgzNGU0NzY0ZGM1YTczYmMxNjY0ZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJp
YW50X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF90ZXN0LmNjCkBAIC00MDMsNyAr
NDAzLDcgQEAgc3RydWN0IGlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGUKIAogdGVtcGxh
dGUgPGNsYXNzIFQ+CiBzdHJ1Y3QgaXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZQotICAgIDog
c3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8U2luZ2xlVW5pb248VD4+Ojp0eXBlIHt9OworICAgIDog
YWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPFNpbmdsZVVuaW9uPFQ+Pjo6dHlwZSB7fTsKIAogVEVT
VChWYXJpYW50VGVzdCwgTm90aHJvd01vdmVDb25zdHJ1Y3RpYmxlKSB7CiAgIC8vIFZlcmlmeSB0
aGF0IHZhcmlhbnQgaXMgbm90aHJvdyBtb3ZlIGNvbnN0cnVjdGlibGUgaWZmIGl0cyB0ZW1wbGF0
ZQpAQCAtMjQzOSwxNCArMjQzOSwxNCBAQCBURVNUKFZhcmlhbnRUZXN0LCBUZXN0TW92ZUNvbnZl
cnNpb25WaWFDb252ZXJ0VmFyaWFudFRvKSB7CiAKIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RDb3B5
QW5kTW92ZVR5cGVUcmFpdHMpIHsKICAgRVhQRUNUX1RSVUUoc3RkOjppc19jb3B5X2NvbnN0cnVj
dGlibGU8dmFyaWFudDxzdGQ6OnN0cmluZz4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6
aXNfY29weV9hc3NpZ25hYmxlPHZhcmlhbnQ8c3RkOjpzdHJpbmc+Pjo6dmFsdWUpOworICBFWFBF
Q1RfVFJVRShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8dmFyaWFudDxzdGQ6OnN0cmluZz4+Ojp2
YWx1ZSk7CiAgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPHZhcmlhbnQ8
c3RkOjpzdHJpbmc+Pjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX21vdmVfYXNzaWdu
YWJsZTx2YXJpYW50PHN0ZDo6c3RyaW5nPj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
aXNfbW92ZV9hc3NpZ25hYmxlPHZhcmlhbnQ8c3RkOjpzdHJpbmc+Pjo6dmFsdWUpOwogICBFWFBF
Q1RfVFJVRShzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTx2YXJpYW50PHN0ZDo6dW5pcXVlX3B0
cjxpbnQ+Pj46OnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUoc3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8
dmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX21vdmVfYXNzaWduYWJsZTx2YXJpYW50PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pj46OnZh
bHVlKTsKICAgRVhQRUNUX0ZBTFNFKAogICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8
dmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9GQUxTRShz
dGQ6OmlzX2NvcHlfYXNzaWduYWJsZTx2YXJpYW50PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pj46OnZh
bHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTx2YXJpYW50PHN0
ZDo6dW5pcXVlX3B0cjxpbnQ+Pj46OnZhbHVlKTsKIAogICBFWFBFQ1RfRkFMU0UoCiAgICAgICBh
YnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPHZhcmlhbnQ8c3RkOjpzdHJpbmc+
Pjo6dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdXRpbGl0eS91dGlsaXR5LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91
dGlsaXR5L3V0aWxpdHkuaAppbmRleCBkNzM2MDJjNDdkM2I2ZGExNjYzNTdmYmNkYzVkNDE1MTlk
NjIzNTYxLi5hZWY0YmFhMDJkY2Q2N2FjZWIyNTRmMGE5ZTRiZmYwMGRhNGNlNWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC91dGlsaXR5L3V0aWxpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxpdHku
aApAQCAtMjM1LDEzICsyMzUsMTMgQEAgYXV0byBhcHBseV9oZWxwZXIoRnVuY3RvciYmIGZ1bmN0
b3IsIFR1cGxlJiYgdCwgaW5kZXhfc2VxdWVuY2U8SW5kZXhlcy4uLj4pCiAvLyBFeGFtcGxlOgog
Ly8KIC8vICAgY2xhc3MgRm9ve3ZvaWQgQmFyKGludCk7fTsKLS8vICAgdm9pZCB1c2VyX2Z1bmN0
aW9uKGludCwgc3RkOjpzdHJpbmcpOworLy8gICB2b2lkIHVzZXJfZnVuY3Rpb24oaW50LCBzdHJp
bmcpOwogLy8gICB2b2lkIHVzZXJfZnVuY3Rpb24oc3RkOjp1bmlxdWVfcHRyPEZvbz4pOwogLy8K
IC8vICAgaW50IG1haW4oKQogLy8gICB7Ci0vLyAgICAgICBzdGQ6OnR1cGxlPGludCwgc3RkOjpz
dHJpbmc+IHR1cGxlMSg0MiwgImJhciIpOwotLy8gICAgICAgLy8gSW52b2tlcyB0aGUgdXNlciBm
dW5jdGlvbiBvdmVybG9hZCBvbiBpbnQsIHN0ZDo6c3RyaW5nLgorLy8gICAgICAgc3RkOjp0dXBs
ZTxpbnQsIHN0cmluZz4gdHVwbGUxKDQyLCAiYmFyIik7CisvLyAgICAgICAvLyBJbnZva2VzIHRo
ZSB1c2VyIGZ1bmN0aW9uIG92ZXJsb2FkIG9uIGludCwgc3RyaW5nLgogLy8gICAgICAgYWJzbDo6
YXBwbHkoJnVzZXJfZnVuY3Rpb24sIHR1cGxlMSk7CiAvLwogLy8gICAgICAgYXV0byBmb28gPSBh
YnNsOjptYWtlX3VuaXF1ZTxGb28+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9BVVRIT1JTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvQVVUSE9SUwppbmRleCA2YjBhZmQ4NjE4MTBmYWJmNWI2ZDUzZjMz
NWI4ODU3OWUxMzdkNjQ3Li4xMjE2YjQ4ZDk1OTA1NTYyY2Q2ZTFmZmU3OTdmMGM2M2VkMjNkOGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9B
VVRIT1JTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0FV
VEhPUlMKQEAgLTE2LDYgKzE2LDcgQEAgQ29keSBCYXJuZXMgPGNvbmNlcHRnZW5lc2lzQGdtYWls
LmNvbT4KIENvbGluIFBsdW1iCiBEYXZpZCBQb3J0ZXIgPGRhdmlkQHBvcnRlci5tZT4KIERheCBC
b295c2VuIDxkYXhAeW91bm93LmNvbT4KK0RhbmFpbCBLaXJvdiA8ZGtpcm92YnJvYWRzb2Z0QGdt
YWlsLmNvbT4KIERtaXRyeSBMaXppbiA8c2RrZGltb25AZ21haWwuY29tPgogRXJpYyBSZXNjb3Js
YSwgUlRGTSBJbmMuIDxla3JAcnRmbS5jb20+CiBGcmVkZXJpayBSaWVkZWwsIEZyb2dnIEdtYkgg
PGZyZWRlcmlrLnJpZWRlbEBmcm9nZy5pbz4KQEAgLTQ3LDYgKzQ4LDcgQEAgUGVuZyBZdSA8eXVw
ZW5nMzIzQGdtYWlsLmNvbT4KIFJhZmFlbCBMb3BleiBEaWV6IDxyYWZhbG9wZXpkaWV6QGdtYWls
LmNvbT4KIFJhbHBoIEdpbGVzIDxnaWxlc0BnaG9zdHNjcmlwdC5jb20+CiBSaWt1IFZvaXBpbyA8
cmlrdS52b2lwaW9AbGluYXJvLm9yZz4KK1JvYmVydCBCYXJlcyA8cm9iZXJ0QGJhcmVzLm1lPgog
Um9iZXJ0IE5hZ3kgPHJvYmVydC5uYWd5QGdtYWlsLmNvbT4KIFJ5YW4gWW9ha3VtIDxyeW9ha3Vt
QHNrb2JhbHQuY29tPgogU2F0ZW5kZXIgU2Fyb2hhIDxzc2Fyb2hhQHlhaG9vLmNvbT4KQEAgLTU2
LDYgKzU4LDcgQEAgU2lsdml1IENhcmFnZWEgPHNpbHZpdS5jcHBAZ21haWwuY29tPgogU3RlZmFu
IEd1bGEgPHN0ZXdlZ0BnbWFpbC5jb20+CiBTdGV2ZSBSZWlkIDxzcmVpZEBzZWEtdG8tc2t5Lm5l
dD4KIFRhcnVuIENoYXdsYSA8dHJua3VtYXJjaGF3bGFAZ21haWwuY29tPgorVWxhZHppc2xhdSBT
dXNoYSA8bGFuZGJ5QGdtYWlsLmNvbT4KIFZsYWRpbWlyIEJlbG9ib3JvZG92IDxWbGFkaW1pclRl
Y2hNYW5AZ21haWwuY29tPgogVmlja2VuIFNpbW9uaWFuIDx2c2ltb25AZ21haWwuY29tPgogVmlj
dG9yIENvc3RhbiA8Y29zdGFuQGdtYWlsLmNvbT4KQEAgLTcwLDYgKzczLDEwIEBAIFNlcmdpbyBH
YXJjaWEgTXVyaWxsbyA8c2VyZ2lvLmdhcmNpYS5tdXJpbGxvQGdtYWlsLmNvbT4KIE1heGltIFBh
dmxvdiA8cGF2bGxvdm1heEBnbWFpbC5jb20+CiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CiBQaWFzeSBYdSA8eHo0MjE1QGdtYWlsLmNvbT4KK1RvbWFzIFBvcGVsYSA8dG9t
YXMucG9wZWxhQGdtYWlsLmNvbT4KK0phbiBHcnVsaWNoIDxncnVsamFAZ21haWwuY29tPgorRWlr
ZSBSYXRoa2UgPGVyYXRoa2VAcmVkaGF0LmNvbT4KK01pY2hlbCBQcm9tb25ldCA8bWljaGVsLnBy
b21vbmV0LjFAZ21haWwuY29tPgogCiAmeWV0IExMQyA8KkBhbmR5ZXQuY29tPgogQWdvcmEgSU8g
PCpAYWdvcmEuaW8+CkBAIC04MCw2ICs4Nyw3IEBAIEdvb2dsZSBJbmMuIDwqQGdvb2dsZS5jb20+
CiBIeXBlckNvbm5lY3QgSW5jLiA8KkBocGNudC5jb20+CiBMaWZlIE9uIEFpciBJbmMuIDwqQGxp
ZmVvbmFpci5jb20+CiBJbnRlbCBDb3Jwb3JhdGlvbiA8KkBpbnRlbC5jb20+CitNaWNyb3NvZnQg
Q29ycG9yYXRpb24gPCpAbWljcm9zb2Z0LmNvbT4KIE1JUFMgVGVjaG5vbG9naWVzIDwqQG1pcHMu
Y29tPgogTW96aWxsYSBGb3VuZGF0aW9uIDwqQG1vemlsbGEuY29tPgogT3BlcmEgU29mdHdhcmUg
QVNBIDwqQG9wZXJhLmNvbT4KQEAgLTk3LDQgKzEwNSw1IEBAIFdpcmUgU3dpc3MgR21iSCA8KkB3
aXJlLmNvbT4KIE1pZ3VlbCBQYXJpcyA8bXBhcmlzZGlhekBnbWFpbC5jb20+CiBWZXdkIFNvZnR3
YXJlIEFTIDwqQHZld2QuY29tPgogSGlnaGZpdmUsIEluYy4gPCpAaGlnaGZpdmUuY29tPgotQ29T
TW8gU29mdHdhcmUgQ29uc3VsdGluZywgUHRlIEx0ZCA8KkBjb3Ntb3NvZnR3YXJlLmlvPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0NvU01vIFNvZnR3YXJlIENvbnN1bHRpbmcsIFB0ZSBM
dGQgPCpAY29zbW9zb2Z0d2FyZS5pbz4KK1R1cGxlLCBMTEMgPCpAdHVwbGUuYXBwPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvQlVJTEQuZ24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9CVUlMRC5nbgppbmRl
eCA1YTE0NDZkOTU2MzA2MzIxNDg0N2Y0MTlmMTBlMTQwYzBmZjMyNjczLi4yNDkwOTRiZGQ2ZWQ4
ODEwODEwYmI2YTBmMzc1ZTQ4YTAzZDc1Mzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9CVUlMRC5nbgpAQCAtNDAsMTIgKzQwLDE0IEBAIGlm
ICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICAgIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewog
ICAgICAgZGVwcyArPSBbCiAgICAgICAgICI6cnRjX3VuaXR0ZXN0cyIsCisgICAgICAgICI6c2xv
d190ZXN0cyIsCiAgICAgICAgICI6dmlkZW9fZW5naW5lX3Rlc3RzIiwKICAgICAgICAgIjp3ZWJy
dGNfbm9ucGFyYWxsZWxfdGVzdHMiLAogICAgICAgICAiOndlYnJ0Y19wZXJmX3Rlc3RzIiwKICAg
ICAgICAgImNhbGw6ZmFrZV9uZXR3b3JrX3VuaXR0ZXN0cyIsCiAgICAgICAgICJjb21tb25fYXVk
aW86Y29tbW9uX2F1ZGlvX3VuaXR0ZXN0cyIsCiAgICAgICAgICJjb21tb25fdmlkZW86Y29tbW9u
X3ZpZGVvX3VuaXR0ZXN0cyIsCisgICAgICAgICJleGFtcGxlczpleGFtcGxlc191bml0dGVzdHMi
LAogICAgICAgICAibWVkaWE6cnRjX21lZGlhX3VuaXR0ZXN0cyIsCiAgICAgICAgICJtb2R1bGVz
Om1vZHVsZXNfdGVzdHMiLAogICAgICAgICAibW9kdWxlczptb2R1bGVzX3VuaXR0ZXN0cyIsCkBA
IC01NCwxMCArNTYsOCBAQCBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgICAgICAgIm1v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yOmJ3ZV9zaW11bGF0aW9uc190ZXN0cyIsCiAg
ICAgICAgICJtb2R1bGVzL3J0cF9ydGNwOnRlc3RfcGFja2V0X21hc2tzX21ldHJpY3MiLAogICAg
ICAgICAibW9kdWxlcy92aWRlb19jYXB0dXJlOnZpZGVvX2NhcHR1cmVfaW50ZXJuYWxfaW1wbCIs
Ci0gICAgICAgICJvcnRjOm9ydGNfdW5pdHRlc3RzIiwKICAgICAgICAgInBjOnBlZXJjb25uZWN0
aW9uX3VuaXR0ZXN0cyIsCiAgICAgICAgICJwYzpydGNfcGNfdW5pdHRlc3RzIiwKLSAgICAgICAg
InJ0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICAgInN0YXRzOnJ0Y19zdGF0
c191bml0dGVzdHMiLAogICAgICAgICAic3lzdGVtX3dyYXBwZXJzOnN5c3RlbV93cmFwcGVyc191
bml0dGVzdHMiLAogICAgICAgICAidGVzdCIsCkBAIC05OCw2ICs5OCwxMCBAQCBjb25maWcoImNv
bW1vbl9pbmhlcml0ZWRfY29uZmlnIikgewogICBjZmxhZ3MgPSBbXQogICBsZGZsYWdzID0gW10K
IAorICBpZiAocnRjX2VuYWJsZV9zeW1ib2xfZXhwb3J0KSB7CisgICAgZGVmaW5lcyA9IFsgIldF
QlJUQ19FTkFCTEVfU1lNQk9MX0VYUE9SVCIgXQorICB9CisKICAgaWYgKGJ1aWxkX3dpdGhfbW96
aWxsYSkgewogICAgIGRlZmluZXMgKz0gWyAiV0VCUlRDX01PWklMTEFfQlVJTEQiIF0KICAgfQpA
QCAtMjE4LDggKzIyMiw4IEBAIGNvbmZpZygiY29tbW9uX2NvbmZpZyIpIHsKICAgICBkZWZpbmVz
ICs9IFsgIldFQlJUQ19JTkNMVURFX0lOVEVSTkFMX0FVRElPX0RFVklDRSIgXQogICB9CiAKLSAg
aWYgKCFydGNfbGlidnB4X2J1aWxkX3ZwOSkgewotICAgIGRlZmluZXMgKz0gWyAiUlRDX0RJU0FC
TEVfVlA5IiBdCisgIGlmIChydGNfbGlidnB4X2J1aWxkX3ZwOSkgeworICAgIGRlZmluZXMgKz0g
WyAiUlRDX0VOQUJMRV9WUDkiIF0KICAgfQogCiAgIGlmIChydGNfZW5hYmxlX3NjdHApIHsKQEAg
LTM3NCwyOSArMzc4LDMzIEBAIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogCiAgICAgZGVw
cyA9IFsKICAgICAgICI6d2VicnRjX2NvbW1vbiIsCisgICAgICAiYXBpOmxpYmppbmdsZV9wZWVy
Y29ubmVjdGlvbl9hcGkiLAogICAgICAgImFwaTp0cmFuc3BvcnRfYXBpIiwKICAgICAgICJhdWRp
byIsCiAgICAgICAiY2FsbCIsCiAgICAgICAiY29tbW9uX2F1ZGlvIiwKICAgICAgICJjb21tb25f
dmlkZW8iLAorICAgICAgImxvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAorICAgICAgImxvZ2dp
bmc6cnRjX2V2ZW50X2xvZ19pbXBsX2Jhc2UiLAogICAgICAgIm1lZGlhIiwKICAgICAgICJtb2R1
bGVzIiwKICAgICAgICJtb2R1bGVzL3ZpZGVvX2NhcHR1cmU6dmlkZW9fY2FwdHVyZV9pbnRlcm5h
bF9pbXBsIiwKLSAgICAgICJvcnRjIiwKKyAgICAgICJwMnA6cnRjX3AycCIsCisgICAgICAicGM6
bGliamluZ2xlX3BlZXJjb25uZWN0aW9uIiwKKyAgICAgICJwYzpwZWVyY29ubmVjdGlvbiIsCisg
ICAgICAicGM6cnRjX3BjIiwKKyAgICAgICJwYzpydGNfcGNfYmFzZSIsCiAgICAgICAicnRjX2Jh
c2UiLAogICAgICAgInNkayIsCiAgICAgICAidmlkZW8iLAogICAgIF0KIAotICAgICMgQWRkaXRp
b25hbCBmYWN0b3J5IGZ1bmN0aW9ucyB0byBiZSBleHBvc2VkLgotICAgICMgUmF0aW9uYWw6IFRo
ZXNlIGZhY3RvcmllcyBhcmUgc21hbGwgZW5vdWdoICg4OSBLaUIgLyAzMisgTWlCKQotICAgICMg
ICAgICAgICAgIHRvIGJlIHVuY29uZGl0aW9uYWx5IGluY2x1ZGVkIGZvciB1c2VyIGNvbnZlbmll
bmNlLgotICAgICMgVGhhdCBiZWdpbiBzYWlkOgotICAgICMgVE9ETyh5dmVzZykgQ29uc2lkZXIg
bWFraW5nIGFsbCBub24tY29yZSBBUElzIG9wdGlvbmFsLCBzbyB0aGF0IHVzZXJzCi0gICAgIyAg
ICAgICAgICAgICBjYW4gYnVpbGQgYSBjdXN0b21pemVkIGxpYnJhcnkgdGFpbG9yZWQgdG8gdGhl
aXIgbmVlZHMuCisgICAgIyBJbmNsdWRlIGF1ZGlvIGFuZCB2aWRlbyBjb2RlY3MgYnkgZGVmYXVs
dC4KICAgICBkZXBzICs9IFsKICAgICAgICJhcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5IiwKICAgICAgICJhcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAgICJhcGkvdmlkZW9fY29kZWNzOmJ1aWx0aW5fdmlkZW9f
ZGVjb2Rlcl9mYWN0b3J5IiwKKyAgICAgICJhcGkvdmlkZW9fY29kZWNzOmJ1aWx0aW5fdmlkZW9f
ZW5jb2Rlcl9mYWN0b3J5IiwKICAgICBdCiAKICAgICBpZiAoYnVpbGRfd2l0aF9tb3ppbGxhKSB7
CkBAIC00MzAsOSArNDM4LDkgQEAgcnRjX3NvdXJjZV9zZXQoIndlYnJ0Y19jb21tb24iKSB7CiAg
IGRlcHMgPSBbCiAgICAgImFwaTphcnJheV92aWV3IiwKICAgICAiYXBpL3ZpZGVvOnZpZGVvX2Jp
dHJhdGVfYWxsb2NhdGlvbiIsCisgICAgImFwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgInJ0
Y19iYXNlOmNoZWNrcyIsCi0gICAgInJ0Y19iYXNlOmRlcHJlY2F0aW9uIiwKLSAgICAicnRjX2Jh
c2U6c3RyaW5ndXRpbHMiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzIiwKICAgXQogCiAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewpA
QCAtNDY3LDcgKzQ3NSw2IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgInAycDpy
dGNfcDJwX3VuaXR0ZXN0cyIsCiAgICAgICAicnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWRfdW5p
dHRlc3RzIiwKICAgICAgICJydGNfYmFzZTpydGNfYmFzZV90ZXN0c19tYWluIiwKLSAgICAgICJy
dGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAicnRjX2Jhc2U6cnRjX2Jhc2Vf
dW5pdHRlc3RzIiwKICAgICAgICJydGNfYmFzZTpydGNfanNvbl91bml0dGVzdHMiLAogICAgICAg
InJ0Y19iYXNlOnJ0Y19udW1lcmljc191bml0dGVzdHMiLApAQCAtNDk5LDYgKzUwNiwxNyBAQCBp
ZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICB9CiAgIH0KIAorICAjIFRoaXMgcnVucyB0ZXN0
cyB0aGF0IG11c3QgcnVuIGluIHJlYWwgdGltZSBhbmQgdGhlcmVmb3JlIGNhbiB0YWtlIHNvbWUK
KyAgIyB0aW1lIHRvIGV4ZWN1dGUuIFRoZXkgYXJlIGluIGEgc2VwYXJhdGUgZXhlY3V0YWJsZSB0
byBhdm9pZCBtYWtpbmcgdGhlCisgICMgcmVndWxhciB1bml0dGVzdCBzdWl0ZSB0b28gc2xvdyB0
byBydW4gZnJlcXVlbnRseS4KKyAgcnRjX3Rlc3QoInNsb3dfdGVzdHMiKSB7CisgICAgdGVzdG9u
bHkgPSB0cnVlCisgICAgZGVwcyA9IFsKKyAgICAgICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjOmdvb2dfY2Nfc2xvd190ZXN0cyIsCisgICAgICAidGVzdDp0ZXN0X21haW4i
LAorICAgIF0KKyAgfQorCiAgICMgVE9ETyhwYm9zKTogUmVuYW1lIHRlc3Qgc3VpdGUsIHRoaXMg
aXMgbm8gbG9uZ2VyICJqdXN0IiBmb3IgdmlkZW8gdGFyZ2V0cy4KICAgdmlkZW9fZW5naW5lX3Rl
c3RzX3Jlc291cmNlcyA9IFsKICAgICAicmVzb3VyY2VzL2ZvcmVtYW5fY2lmX3Nob3J0Lnl1diIs
CkBAIC01MjQsNyArNTQyLDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAjIHNo
b3VsZCBtb3ZlIHRoZW0gdG8gYSBtb3JlIGFwcHJvcHJpYXRlIHRlc3Qgc3VpdGUuCiAgICAgICAi
Y2FsbDpjYWxsX3Rlc3RzIiwKICAgICAgICJtb2R1bGVzL3ZpZGVvX2NhcHR1cmUiLAotICAgICAg
InJ0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICJ0ZXN0OnRlc3RfY29tbW9u
IiwKICAgICAgICJ0ZXN0OnRlc3RfbWFpbiIsCiAgICAgICAidGVzdDp2aWRlb190ZXN0X2NvbW1v
biIsCkBAIC02MTcsNiArNjM0LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAg
ICJzZGsvYW5kcm9pZC90ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9HbEdlbmVyaWNEcmF3ZXJUZXN0Lmph
dmEiLAogICAgICAgICAic2RrL2FuZHJvaWQvdGVzdHMvc3JjL29yZy93ZWJydGMvSGFyZHdhcmVW
aWRlb0VuY29kZXJUZXN0LmphdmEiLAogICAgICAgICAic2RrL2FuZHJvaWQvdGVzdHMvc3JjL29y
Zy93ZWJydGMvU2NhbGluZ1NldHRpbmdzVGVzdC5qYXZhIiwKKyAgICAgICAgInNkay9hbmRyb2lk
L3Rlc3RzL3NyYy9vcmcvd2VicnRjL0NyeXB0b09wdGlvbnNUZXN0LmphdmEiLAogICAgICAgXQog
CiAgICAgICBkZXBzID0gWwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvREVQUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL0RFUFMKaW5kZXggNjdhYTRhODAzYzIwOTE5YzI2MzU1Y2EzZjA5ZThjMjViZGUxZDUx
ZC4uNTU1YzI3ZjEwZTdlMTk5NzMwMDA2ZDRkYjk3ZDM2MGQyYzE1ODM3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvREVQUworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ERVBTCkBAIC03LDE2ICs3LDE2
IEBAIHZhcnMgPSB7CiAgICdjaGVja291dF9jb25maWd1cmF0aW9uJzogJ2RlZmF1bHQnLAogICAn
Y2hlY2tvdXRfaW5zdHJ1bWVudGVkX2xpYnJhcmllcyc6ICdjaGVja291dF9saW51eCBhbmQgY2hl
Y2tvdXRfY29uZmlndXJhdGlvbiA9PSAiZGVmYXVsdCInLAogICAnd2VicnRjX2dpdCc6ICdodHRw
czovL3dlYnJ0Yy5nb29nbGVzb3VyY2UuY29tJywKLSAgJ2Nocm9taXVtX3JldmlzaW9uJzogJ2Nj
YjgzZDRhNTUxMjgwMmYxMTkzYTUwNmI1NDMxZTg1ZTAxMzgwNDMnLAorICAnY2hyb21pdW1fcmV2
aXNpb24nOiAnYjA0ZTUxM2Y4MjVkNmNlMjJlMTQ3NjAxY2JmYzc1ZWEyM2ViOTA3MycsCiAgICdi
b3Jpbmdzc2xfZ2l0JzogJ2h0dHBzOi8vYm9yaW5nc3NsLmdvb2dsZXNvdXJjZS5jb20nLAogICAj
IFRocmVlIGxpbmVzIG9mIG5vbi1jaGFuZ2luZyBjb21tZW50cyBzbyB0aGF0CiAgICMgdGhlIGNv
bW1pdCBxdWV1ZSBjYW4gaGFuZGxlIENMcyByb2xsaW5nIHN3YXJtaW5nX2NsaWVudAogICAjIGFu
ZCB3aGF0ZXZlciBlbHNlIHdpdGhvdXQgaW50ZXJmZXJlbmNlIGZyb20gZWFjaCBvdGhlci4KLSAg
J3N3YXJtaW5nX3JldmlzaW9uJzogJzQ4NmM5YjUzYzRkNTRkZDRiOTViYjZjZTBlMzExNjBlNjAw
ZGZjMTEnLAorICAnc3dhcm1pbmdfcmV2aXNpb24nOiAnMTU3YmVjOGEyNWNjNGViZDZhMTYwNTI1
MTBkMDhiMDViNjEwMmFhZCcsCiAgICMgVGhyZWUgbGluZXMgb2Ygbm9uLWNoYW5naW5nIGNvbW1l
bnRzIHNvIHRoYXQKICAgIyB0aGUgY29tbWl0IHF1ZXVlIGNhbiBoYW5kbGUgQ0xzIHJvbGxpbmcg
Qm9yaW5nU1NMCiAgICMgYW5kIHdoYXRldmVyIGVsc2Ugd2l0aG91dCBpbnRlcmZlcmVuY2UgZnJv
bSBlYWNoIG90aGVyLgotICAnYm9yaW5nc3NsX3JldmlzaW9uJzogJ2NlMDA4MjhjODlkZjNkNGM0
MGRlN2Q3MTViMWEwMzJlYjAzYzUyNWMnLAorICAnYm9yaW5nc3NsX3JldmlzaW9uJzogJzY5NjVk
MjU2MDI3NTRiYzQxOWM1Zjc1N2QwMDhiYTFmNGRhNDlhZTQnLAogICAjIFRocmVlIGxpbmVzIG9m
IG5vbi1jaGFuZ2luZyBjb21tZW50cyBzbyB0aGF0CiAgICMgdGhlIGNvbW1pdCBxdWV1ZSBjYW4g
aGFuZGxlIENMcyByb2xsaW5nIGxzcwogICAjIGFuZCB3aGF0ZXZlciBlbHNlIHdpdGhvdXQgaW50
ZXJmZXJlbmNlIGZyb20gZWFjaCBvdGhlci4KQEAgLTI0LDI5ICsyNCwyOSBAQCB2YXJzID0gewog
ICAjIFRocmVlIGxpbmVzIG9mIG5vbi1jaGFuZ2luZyBjb21tZW50cyBzbyB0aGF0CiAgICMgdGhl
IGNvbW1pdCBxdWV1ZSBjYW4gaGFuZGxlIENMcyByb2xsaW5nIGNhdGFwdWx0CiAgICMgYW5kIHdo
YXRldmVyIGVsc2Ugd2l0aG91dCBpbnRlcmZlcmVuY2UgZnJvbSBlYWNoIG90aGVyLgotICAnY2F0
YXB1bHRfcmV2aXNpb24nOiAnNGZjNDI4MWQyMTUyYTM2NzYyYTBiZjQ3YmE3NmJmOGQ0YTZlZTIz
NCcsCisgICdjYXRhcHVsdF9yZXZpc2lvbic6ICcxNzA3OWE1Y2MxZjI3YTJkYzU3NTU4YTA4OTc2
NjZjYWM0YTViYzY0JywKICAgIyBUaHJlZSBsaW5lcyBvZiBub24tY2hhbmdpbmcgY29tbWVudHMg
c28gdGhhdAogICAjIHRoZSBjb21taXQgcXVldWUgY2FuIGhhbmRsZSBDTHMgcm9sbGluZyBsaWJG
dXp6ZXIKICAgIyBhbmQgd2hhdGV2ZXIgZWxzZSB3aXRob3V0IGludGVyZmVyZW5jZSBmcm9tIGVh
Y2ggb3RoZXIuCi0gICdsaWJmdXp6ZXJfcmV2aXNpb24nOiAnYTMwNWE1ZWI4NWVkNDJlZGM1Yzk2
NWMxNGYzMDhmNTc2Y2IyNDVjYScsCisgICdsaWJmdXp6ZXJfcmV2aXNpb24nOiAnMmE1MzA5ODU4
NGM0OGFmNTBhZWMzZmI1MWZlYmU1ZTY1MTQ4OTc3NCcsCiAgICMgVGhyZWUgbGluZXMgb2Ygbm9u
LWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUgY29tbWl0IHF1ZXVlIGNhbiBoYW5k
bGUgQ0xzIHJvbGxpbmcgZnJlZXR5cGUKICAgIyBhbmQgd2hhdGV2ZXIgZWxzZSB3aXRob3V0IGlu
dGVyZmVyZW5jZSBmcm9tIGVhY2ggb3RoZXIuCi0gICdmcmVldHlwZV9yZXZpc2lvbic6ICdhYmQ5
OTdhYTdjZjJiYzkyMTkxMzY3ODJjNzM2M2QxNGQzMjUxOTljJywKKyAgJ2ZyZWV0eXBlX3Jldmlz
aW9uJzogJ2ZiMGQ2NmQwNGM0ZGQ4ZDdmOTYwNGFmMWE2MDAxYjI3MzdjYjUwOTgnLAogICAjIFRo
cmVlIGxpbmVzIG9mIG5vbi1jaGFuZ2luZyBjb21tZW50cyBzbyB0aGF0CiAgICMgdGhlIGNvbW1p
dCBxdWV1ZSBjYW4gaGFuZGxlIENMcyByb2xsaW5nIEhhcmZCdXp6CiAgICMgYW5kIHdoYXRldmVy
IGVsc2Ugd2l0aG91dCBpbnRlcmZlcmVuY2UgZnJvbSBlYWNoIG90aGVyLgotICAnaGFyZmJ1enpf
cmV2aXNpb24nOiAnNTRkMzMyZGQ5YjAyNjM4MjEzNzYxNjFjZGZmYjYwZmZiM2M3ODQ3ZicsCisg
ICdoYXJmYnV6el9yZXZpc2lvbic6ICc1NzRkODg4YzhhNDA5Mjk1YTk1MjM2MWEzOWM4ZTgzYTUy
YTBmYzNkJywKIH0KIGRlcHMgPSB7CiAgICMgVE9ETyhramVsbGFuZGVyKTogTW92ZSB0aGlzIHRv
IGJlIEFuZHJvaWQtb25seSBvbmNlIHRoZSBsaWJldmVudCBkZXBlbmRlbmN5CiAgICMgaW4gYmFz
ZS90aGlyZF9wYXJ0eS9saWJldmVudCBpcyBzb2x2ZWQuCiAgICdzcmMvYmFzZSc6Ci0gICAgVmFy
KCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vc3JjL2Jhc2UnICsgJ0AnICsgJzBkYjYxMzc5
ZDhmNzY4MDdlNmY3OGEzNWNjZmY5MjI3MjA1YjYxOTUnLAorICAgIFZhcignY2hyb21pdW1fZ2l0
JykgKyAnL2Nocm9taXVtL3NyYy9iYXNlJyArICdAJyArICdiOTkwMWY5YmM1YjY1YTExNjlkNWRi
Njk2ZWY0NDI4YTY1Y2VjNjIyJywKICAgJ3NyYy9idWlsZCc6Ci0gICAgVmFyKCdjaHJvbWl1bV9n
aXQnKSArICcvY2hyb21pdW0vc3JjL2J1aWxkJyArICdAJyArICc4YmI5ZmVmODYyYmQ3NTcwYzVi
NDY1ODYwYzQyNzcwMWM4MWMxNTMxJywKKyAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJv
bWl1bS9zcmMvYnVpbGQnICsgJ0AnICsgJ2JiZDY3YTM1MGQ3NDUyMDBlNTc5OGNhY2UxMWEyOGVk
ZmQ5ZmMzYjInLAogICAnc3JjL2J1aWxkdG9vbHMnOgotICAgIFZhcignY2hyb21pdW1fZ2l0Jykg
KyAnL2Nocm9taXVtL2J1aWxkdG9vbHMuZ2l0JyArICdAJyArICcyZGZmOWM5Yzc0ZTlkNzMyZTZm
ZTU3Yzg0ZWY3ZmQwNDRjYzQ1ZDk2JywKKyAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJv
bWl1bS9idWlsZHRvb2xzLmdpdCcgKyAnQCcgKyAnMDQxNjFlYzhkN2M3ODFlNDQ5OGM2OTkyNTRj
NjliYTBkZDk1OWZkZScsCiAgICMgR3JhZGxlIDQuMy1yYzQuIFVzZWQgZm9yIHRlc3RpbmcgQW5k
cm9pZCBTdHVkaW8gcHJvamVjdCBnZW5lcmF0aW9uIGZvciBXZWJSVEMuCiAgICdzcmMvZXhhbXBs
ZXMvYW5kcm9pZHRlc3RzL3RoaXJkX3BhcnR5L2dyYWRsZSc6IHsKICAgICAndXJsJzogVmFyKCdj
aHJvbWl1bV9naXQnKSArICcvZXh0ZXJuYWwvZ2l0aHViLmNvbS9ncmFkbGUvZ3JhZGxlLmdpdCcg
KyAnQCcgKwpAQCAtNTQsMjEgKzU0LDQ0IEBAIGRlcHMgPSB7CiAgICAgJ2NvbmRpdGlvbic6ICdj
aGVja291dF9hbmRyb2lkJywKICAgfSwKICAgJ3NyYy9pb3MnOiB7Ci0gICAgJ3VybCc6IFZhcign
Y2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy9pb3MnICsgJ0AnICsgJ2Q0ZTAxMDUxNjE1
NmMyZWYyY2NkOTc0ZDRhYTBhYmQ5ZWY0OGM2OTgnLAorICAgICd1cmwnOiBWYXIoJ2Nocm9taXVt
X2dpdCcpICsgJy9jaHJvbWl1bS9zcmMvaW9zJyArICdAJyArICdlYjllOGUwOWRjNGIyOGU2OTFj
ZmQ3MDI0MmJhNTBjZWVjYjZhYjIwJywKICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2lvcycs
CiAgIH0sCiAgICdzcmMvdGVzdGluZyc6Ci0gICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hy
b21pdW0vc3JjL3Rlc3RpbmcnICsgJ0AnICsgJzY3N2UxZWYyNjI3Y2EzMjIyNmY1ZTgwMWViZWMz
OTYxMzAzNTg3M2InLAorICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy90
ZXN0aW5nJyArICdAJyArICc1YTc3NmJjYTA1MGFlZGZiMDI2OWNkZDg0MDhmZjA1NTlhY2RlMmFh
JywKICAgJ3NyYy90aGlyZF9wYXJ0eSc6Ci0gICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hy
b21pdW0vc3JjL3RoaXJkX3BhcnR5JyArICdAJyArICdkY2ZhYzFjNWVkYTczYzhmYmQwNDUxYzhl
NDA0NTRiMjg0YzY3MTEwJywKKyAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9z
cmMvdGhpcmRfcGFydHknICsgJ0AnICsgJzc3ZjZjMTY3MjBlZmY3NzIxYjBjMGIyNDM4Y2U5MTI2
ZjU5ZTFmMGInLAogICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJvaWRfbmRrJzogewogICAgICAgJ3Vy
bCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2FuZHJvaWRfbmRrLmdpdCcgKyAnQCcgKyAnNGUy
Y2VhNDQxYmZkNDNmMDg2M2QxNGY1N2IxZTE4NDQyNjBiOTg4NCcsCiAgICAgICAnY29uZGl0aW9u
JzogJ2NoZWNrb3V0X2FuZHJvaWQnLAogICB9LAogICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJvaWRf
dG9vbHMnOiB7Ci0gICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2FuZHJvaWRfdG9v
bHMuZ2l0JyArICdAJyArICcxMzA0OTllMjUyODZmNGQ1NmFjYWZhMjUyZmVlMDlmM2NjNTk1YzQ5
JywKKyAgICAndXJsJzogVmFyKCdjaHJvbWl1bV9naXQnKSArICcvYW5kcm9pZF90b29scy5naXQn
ICsgJ0AnICsgJzZmZWNhYTU0MmY3M2RkNWFlZWQxNzBkOWE0Y2YzNDAxNTliNDI5NzYnLAogICAg
ICdjb25kaXRpb24nOiAnY2hlY2tvdXRfYW5kcm9pZCcsCiAgIH0sCisKKyAgJ3NyYy90aGlyZF9w
YXJ0eS9hbmRyb2lkX2J1aWxkX3Rvb2xzL2FhcHQyJzogeworICAgICAgJ3BhY2thZ2VzJzogWwor
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgJ3BhY2thZ2UnOiAnY2hyb21pdW0vdGhpcmRfcGFy
dHkvYW5kcm9pZF9idWlsZF90b29scy9hYXB0MicsCisgICAgICAgICAgICAgICd2ZXJzaW9uJzog
J3ZlcnNpb246My4zLjAtYmV0YTAxLTUwMTMwMTEtY3IwJywKKyAgICAgICAgICB9LAorICAgICAg
XSwKKyAgICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRfYW5kcm9pZCcsCisgICAgICAnZGVwX3R5
cGUnOiAnY2lwZCcsCisgIH0sCisKKyAgJ3NyYy90aGlyZF9wYXJ0eS9hbmRyb2lkX2J1aWxkX3Rv
b2xzL2J1bmRsZXRvb2wnOiB7CisgICAgICAncGFja2FnZXMnOiBbCisgICAgICAgICAgeworICAg
ICAgICAgICAgICAncGFja2FnZSc6ICdjaHJvbWl1bS90aGlyZF9wYXJ0eS9hbmRyb2lkX3Rvb2xz
X2J1bmRsZXRvb2wnLAorICAgICAgICAgICAgICAndmVyc2lvbic6ICd2ZXJzaW9uOjAuNy4xLWNy
MCcsCisgICAgICAgICAgfSwKKyAgICAgIF0sCisgICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0
X2FuZHJvaWQnLAorICAgICAgJ2RlcF90eXBlJzogJ2NpcGQnLAorICB9LAorCiAgICdzcmMvdGhp
cmRfcGFydHkvYXV0by9zcmMnOiB7CiAgICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAn
L2V4dGVybmFsL2dpdGh1Yi5jb20vZ29vZ2xlL2F1dG8uZ2l0JyArICdAJyArICc4YTgxYTg1OGFl
N2I3OGExYWVmNzFhYzM5MDVmYWRlMGJiZDY0ZTgyJywKICAgICAnY29uZGl0aW9uJzogJ2NoZWNr
b3V0X2FuZHJvaWQnLApAQCAtODQsNyArMTA3LDcgQEAgZGVwcyA9IHsKICAgJ3NyYy90aGlyZF9w
YXJ0eS9jb2xvcmFtYS9zcmMnOgogICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2V4dGVybmFs
L2NvbG9yYW1hLmdpdCcgKyAnQCcgKyAnNzk5NjA0YTEwNDFlOWIzYmM1ZDI3ODllY2JkN2U4ZGIy
ZTE4ZTZiOCcsCiAgICdzcmMvdGhpcmRfcGFydHkvZGVwb3RfdG9vbHMnOgotICAgIFZhcignY2hy
b21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3Rvb2xzL2RlcG90X3Rvb2xzLmdpdCcgKyAnQCcgKyAn
NzFlM2JlN2E1MGMyMWZhZWVlOTFlZDk5YThkNWFkZGZiNzU5NGU3YycsCisgICAgVmFyKCdjaHJv
bWl1bV9naXQnKSArICcvY2hyb21pdW0vdG9vbHMvZGVwb3RfdG9vbHMuZ2l0JyArICdAJyArICc0
NGQ0YjI5MDgyZjBkOGJhY2FjZDYyM2Y5MWM0ZDI5NjM3YjRiOTAxJywKICAgJ3NyYy90aGlyZF9w
YXJ0eS9lcnJvcnByb25lL2xpYic6IHsKICAgICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcp
ICsgJy9jaHJvbWl1bS90aGlyZF9wYXJ0eS9lcnJvcnByb25lLmdpdCcgKyAnQCcgKyAnOTgwZDQ5
ZTgzOWFhNDk4NDAxNWVmZWQzNGIwMTM0ZDRiMmM5YjZkNycsCiAgICAgICAnY29uZGl0aW9uJzog
J2NoZWNrb3V0X2FuZHJvaWQnLApAQCAtMTAxLDcgKzEyNCw3IEBAIGRlcHMgPSB7CiAgICAgVmFy
KCdjaHJvbWl1bV9naXQnKSArICcvZXh0ZXJuYWwvZ2l0aHViLmNvbS9oYXJmYnV6ei9oYXJmYnV6
ei5naXQnICsgJ0AnICsgVmFyKCdoYXJmYnV6el9yZXZpc2lvbicpLAogICAjIFdlYlJUQy1vbmx5
IGRlcGVuZGVuY3kgKG5vdCBwcmVzZW50IGluIENocm9taXVtKS4KICAgJ3NyYy90aGlyZF9wYXJ0
eS9ndGVzdC1wYXJhbGxlbCc6Ci0gICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvZXh0ZXJuYWwv
Z2l0aHViLmNvbS9nb29nbGUvZ3Rlc3QtcGFyYWxsZWwnICsgJ0AnICsgJ2ZlN2Y3OTFmMTQ3Njkz
OTBkMGIxMjRlZjgyMzFjZGU0ZDU3NWViMTInLAorICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAn
L2V4dGVybmFsL2dpdGh1Yi5jb20vZ29vZ2xlL2d0ZXN0LXBhcmFsbGVsJyArICdAJyArICdlNDcy
MTg3ZDExMjllNTA4ODkwYWEyMGFjOTE0YWRlYWMyZTdmN2I2JywKICAgJ3NyYy90aGlyZF9wYXJ0
eS9nb29nbGUtdHJ1dGgnOiB7CiAgICAgICAncGFja2FnZXMnOiBbCiAgICAgICAgICAgewpAQCAt
MTEzLDkgKzEzNiw5IEBAIGRlcHMgPSB7CiAgICAgICAnZGVwX3R5cGUnOiAnY2lwZCcsCiAgIH0s
CiAgICdzcmMvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9zcmMnOgotICAgIFZhcignY2hyb21pdW1f
Z2l0JykgKyAnL2V4dGVybmFsL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QuZ2l0JyArICdA
JyArICcyZTY4OTI2YTlkNDkyOWU5Mjg5MzczY2Q0OWU0MGRkY2I5YTYyOGY3JywKKyAgICBWYXIo
J2Nocm9taXVtX2dpdCcpICsgJy9leHRlcm5hbC9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0
LmdpdCcgKyAnQCcgKyAnODc5YWMwOTJmZGUwYTE5ZTFiM2E2MWIyNTQ2YjJhNDIyYjE1MjhiYycs
CiAgICdzcmMvdGhpcmRfcGFydHkvaWN1JzogewotICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dp
dCcpICsgJy9jaHJvbWl1bS9kZXBzL2ljdS5naXQnICsgJ0AnICsgJ2M1MmEyYTI1MGQ2YzVmNWNi
ZGQwMTVkZmYzNmFmN2M1ZDBhZTExNTAnLAorICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcp
ICsgJy9jaHJvbWl1bS9kZXBzL2ljdS5naXQnICsgJ0AnICsgJzQwN2IzOTMwMWU3MTAwNmI2OGJk
MzhlNzcwZjM1ZDMyMzk4YTdiMTQnLAogICB9LAogICAnc3JjL3RoaXJkX3BhcnR5L2pzci0zMDUv
c3JjJzogewogICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9leHRlcm5hbC9qc3It
MzA1LmdpdCcgKyAnQCcgKyAnNjQyYzUwODIzNTQ3MWY3MjIwYWY2ZDVkZjJkMzIxMGUzYmZjMDkx
OScsCkBAIC0xMzUsOSArMTU4LDkgQEAgZGVwcyA9IHsKICAgJ3NyYy90aGlyZF9wYXJ0eS9saWJz
cnRwJzoKICAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9kZXBzL2xpYnNydHAu
Z2l0JyArICdAJyArICc2NTA2MTE3MjBlY2MyM2UwZTZiMzJiMGUzMTAwZjhiNGRmOTE2OTZjJywK
ICAgJ3NyYy90aGlyZF9wYXJ0eS9saWJ2cHgvc291cmNlL2xpYnZweCc6Ci0gICAgVmFyKCdjaHJv
bWl1bV9naXQnKSArICcvd2VibS9saWJ2cHguZ2l0JyArICdAJyArICAnMmJlYjVjOWY5MWU3MTY2
YzJjOWQwMWM5NGJmODQ3Njc4MTUxMjFlNCcsCisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcv
d2VibS9saWJ2cHguZ2l0JyArICdAJyArICAnYWMzZWNjZGMyNGJjY2VjZTVmNzNlZTY3Yjg4MTU0
ZjNiZjRhNGU5YScsCiAgICdzcmMvdGhpcmRfcGFydHkvbGlieXV2JzoKLSAgICBWYXIoJ2Nocm9t
aXVtX2dpdCcpICsgJy9saWJ5dXYvbGlieXV2LmdpdCcgKyAnQCcgKyAnOWEwNzIxOWRjOGZiZjJi
NzdlMzkwZDE2YmQyNDgwOTQ0NDgzOGE5MScsCisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcv
bGlieXV2L2xpYnl1di5naXQnICsgJ0AnICsgJ2IzNmM4NmZkZmU3NDZkN2JlOTA0YzNhNTY1YjA0
N2IyNGQ1ODA4N2UnLAogICAnc3JjL3RoaXJkX3BhcnR5L2xzcyc6IHsKICAgICAndXJsJzogVmFy
KCdjaHJvbWl1bV9naXQnKSArICcvbGludXgtc3lzY2FsbC1zdXBwb3J0LmdpdCcgKyAnQCcgKyBW
YXIoJ2xzc19yZXZpc2lvbicpLAogICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRfYW5kcm9pZCBv
ciBjaGVja291dF9saW51eCcsCkBAIC0xNDYsMTMgKzE2OSwyMCBAQCBkZXBzID0gewogICAgICd1
cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9leHRlcm5hbC9tb2NraXRvL21vY2tpdG8uZ2l0
JyArICdAJyArICcwNGEyYTI4OWE0MjIyZjgwYWQyMDcxN2MyNTE0NDk4MTIxMGQyZWFjJywKICAg
ICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2FuZHJvaWQnLAogICB9LAorCisgICMgVXNlZCBieSBi
b3Jpbmdzc2wuCisgICdzcmMvdGhpcmRfcGFydHkvbmFzbSc6IHsKKyAgICAgICd1cmwnOiBWYXIo
J2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9kZXBzL25hc20uZ2l0JyArICdAJyArCisgICAg
ICAnYTBhNjk1MWUyNTliZDM0N2MxMzM5Njk3NDAzNDhiYjVlYmI0NjhjNCcKKyAgfSwKKwogICAn
c3JjL3RoaXJkX3BhcnR5L29wZW5oMjY0L3NyYyc6CiAgICAgVmFyKCdjaHJvbWl1bV9naXQnKSAr
ICcvZXh0ZXJuYWwvZ2l0aHViLmNvbS9jaXNjby9vcGVuaDI2NCcgKyAnQCcgKyAnM2I1MWYxNmE0
YTQxZGY3MjlmOGQ2NDdmMDNlNDhjNWYyNzI5MTFmZicsCiAgICdzcmMvdGhpcmRfcGFydHkvcjgn
OiB7CiAgICAgICAncGFja2FnZXMnOiBbCiAgICAgICAgICAgewogICAgICAgICAgICAgICAncGFj
a2FnZSc6ICdjaHJvbWl1bS90aGlyZF9wYXJ0eS9yOCcsCi0gICAgICAgICAgICAgICd2ZXJzaW9u
JzogJ3ZlcnNpb246MS4yLjQ4JywKKyAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAndmVyc2lvbjox
LjQuNC1jcjAnLAogICAgICAgICAgIH0sCiAgICAgICBdLAogICAgICAgJ2NvbmRpdGlvbic6ICdj
aGVja291dF9hbmRyb2lkJywKQEAgLTE5NSw3ICsyMjUsNyBAQCBkZXBzID0gewogICAnc3JjL3Ro
aXJkX3BhcnR5L3lhc20vc291cmNlL3BhdGNoZWQteWFzbSc6CiAgICAgVmFyKCdjaHJvbWl1bV9n
aXQnKSArICcvY2hyb21pdW0vZGVwcy95YXNtL3BhdGNoZWQteWFzbS5naXQnICsgJ0AnICsgJzcy
MGI3MDUyNGE0NDI0YjE1ZmM1N2U4MjI2MzU2OGM4YmEwNDk2YWQnLAogICAnc3JjL3Rvb2xzJzoK
LSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9zcmMvdG9vbHMnICsgJ0AnICsg
JzczMWY2M2YzMTI2Y2Q2ZjVjZWIyYWFmY2VhZGU4MDg1NzkwMGE0MDknLAorICAgIFZhcignY2hy
b21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy90b29scycgKyAnQCcgKyAnYjQ3YzYzMTU4Nzhl
YWJkNzNiZjcxYzFhYTBjYmQ5YjgxNjcxNjc4OScsCiAgICdzcmMvdG9vbHMvc3dhcm1pbmdfY2xp
ZW50JzoKICAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9pbmZyYS9sdWNpL2NsaWVudC1weS5n
aXQnICsgJ0AnICsgIFZhcignc3dhcm1pbmdfcmV2aXNpb24nKSwKIApAQCAtODk1LDE3ICs5MjUs
NiBAQCBkZXBzID0gewogICAgICAgJ2RlcF90eXBlJzogJ2NpcGQnLAogICB9LAogCi0gICdzcmMv
dGhpcmRfcGFydHkvYW5kcm9pZF9kZXBzL2xpYnMvY29tX2dvb2dsZV9hbmRyb2lkX3BsYXlfY29y
ZSc6IHsKLSAgICAgICdwYWNrYWdlcyc6IFsKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAgICdw
YWNrYWdlJzogJ2Nocm9taXVtL3RoaXJkX3BhcnR5L2FuZHJvaWRfZGVwcy9saWJzL2NvbV9nb29n
bGVfYW5kcm9pZF9wbGF5X2NvcmUnLAotICAgICAgICAgICAgICAndmVyc2lvbic6ICd2ZXJzaW9u
OjEuMy4wLWNyMCcsCi0gICAgICAgICAgfSwKLSAgICAgIF0sCi0gICAgICAnY29uZGl0aW9uJzog
J2NoZWNrb3V0X2FuZHJvaWQnLAotICAgICAgJ2RlcF90eXBlJzogJ2NpcGQnLAotICB9LAotCiAg
ICdzcmMvdGhpcmRfcGFydHkvYW5kcm9pZF9kZXBzL2xpYnMvY29tX2dvb2dsZV9jb2RlX2ZpbmRi
dWdzX2pzcjMwNSc6IHsKICAgICAgICdwYWNrYWdlcyc6IFsKICAgICAgICAgICB7CkBAIC0xMDE2
LDYgKzEwMzUsMTcgQEAgZGVwcyA9IHsKICAgICAgICdkZXBfdHlwZSc6ICdjaXBkJywKICAgfSwK
IAorICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJvaWRfZGVwcy9saWJzL2NvbV9nb29nbGVfcHJvdG9i
dWZfcHJvdG9idWZfbGl0ZSc6IHsKKyAgICAgICdwYWNrYWdlcyc6IFsKKyAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICdwYWNrYWdlJzogJ2Nocm9taXVtL3RoaXJkX3BhcnR5L2FuZHJvaWRfZGVw
cy9saWJzL2NvbV9nb29nbGVfcHJvdG9idWZfcHJvdG9idWZfbGl0ZScsCisgICAgICAgICAgICAg
ICd2ZXJzaW9uJzogJ3ZlcnNpb246My4wLjEtY3IwJywKKyAgICAgICAgICB9LAorICAgICAgXSwK
KyAgICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRfYW5kcm9pZCcsCisgICAgICAnZGVwX3R5cGUn
OiAnY2lwZCcsCisgIH0sCisKICAgJ3NyYy90aGlyZF9wYXJ0eS9hbmRyb2lkX2RlcHMvbGlicy9j
b21fc3F1YXJldXBfamF2YXBvZXQnOiB7CiAgICAgICAncGFja2FnZXMnOiBbCiAgICAgICAgICAg
ewpAQCAtMTM5Myw4ICsxNDIzLDYgQEAgaG9va3MgPSBbCiByZWN1cnNlZGVwcyA9IFsKICAgIyBi
dWlsZHRvb2xzIHByb3ZpZGVzIGNsYW5nX2Zvcm1hdCwgbGliYysrLCBhbmQgbGliYysrYWJpLgog
ICAnc3JjL2J1aWxkdG9vbHMnLAotICAjIGFuZHJvaWRfdG9vbHMgbWFuYWdlcyB0aGUgTkRLLgot
ICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJvaWRfdG9vbHMnLAogXQogCiAjIERlZmluZSBydWxlcyBm
b3Igd2hpY2ggaW5jbHVkZSBwYXRocyBhcmUgYWxsb3dlZCBpbiBvdXIgc291cmNlLgpAQCAtMTQx
Niw5ICsxNDQ0LDEyIEBAIGluY2x1ZGVfcnVsZXMgPSBbCiAgICIrdGVzdCIsCiAgICIrcnRjX3Rv
b2xzIiwKIAotICAjIEFic2VpbCB3aGl0ZWxpc3QuIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggYWJz
ZWlsLWluLXdlYnJ0Yy1tZC4KKyAgIyBBYnNlaWwgd2hpdGVsaXN0LiBLZWVwIHRoaXMgaW4gc3lu
YyB3aXRoIGFic2VpbC1pbi13ZWJydGMubWQuCiAgICIrYWJzbC9jb250YWluZXIvaW5saW5lZF92
ZWN0b3IuaCIsCiAgICIrYWJzbC9tZW1vcnkvbWVtb3J5LmgiLAorICAiK2Fic2wvbWV0YS90eXBl
X3RyYWl0cy5oIiwKKyAgIithYnNsL3N0cmluZ3MvYXNjaWkuaCIsCisgICIrYWJzbC9zdHJpbmdz
L21hdGNoLmgiLAogICAiK2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIiwKICAgIithYnNsL3R5
cGVzL29wdGlvbmFsLmgiLAogICAiK2Fic2wvdHlwZXMvdmFyaWFudC5oIiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL09XTkVSUyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL09XTkVSUwppbmRleCBiZmE3ODAx
YmQ4MjdiODI1ZTQzMWZhMzU5YWZkZGVjYzkwZjM0MjM0Li4yODliNWEzYzdlYTE4MzkzMThiYjUy
ZmVlOTYzNTUxNmU4NjE1NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9PV05FUlMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvT1dORVJTCkBAIC00LDE5ICs0LDE0IEBAIG1mbG9kbWFuQHdlYnJ0Yy5v
cmcKIG5pa2xhcy5lbmJvbUB3ZWJydGMub3JnCiBwaG9nbHVuZEB3ZWJydGMub3JnCiBzdGVmYW5A
d2VicnRjLm9yZwotdGluYS5sZWdyYW5kQHdlYnJ0Yy5vcmcKIHRvbW1pQHdlYnJ0Yy5vcmcKIHBl
ci1maWxlIC5naXRpZ25vcmU9KgogcGVyLWZpbGUgLmduPW1ib25hZGVpQHdlYnJ0Yy5vcmcKIHBl
ci1maWxlICouZ249bWJvbmFkZWlAd2VicnRjLm9yZwogcGVyLWZpbGUgKi5nbmk9bWJvbmFkZWlA
d2VicnRjLm9yZwotcGVyLWZpbGUgKi5weT1waG9nbHVuZEB3ZWJydGMub3JnCiBwZXItZmlsZSBB
VVRIT1JTPSoKLXBlci1maWxlIEJVSUxELmduPXBob2dsdW5kQHdlYnJ0Yy5vcmcKIHBlci1maWxl
IERFUFM9KgogcGVyLWZpbGUgcHlsaW50cmM9cGhvZ2x1bmRAd2VicnRjLm9yZwotcGVyLWZpbGUg
VEhJUkRfUEFSVFlfREVQUz1waG9nbHVuZEB3ZWJydGMub3JnCi1wZXItZmlsZSBUSElSRF9QQVJU
WV9ERVBTPXRpdG92YXJ0ZW1Ad2VicnRjLm9yZwogcGVyLWZpbGUgV0FUQ0hMSVNUUz0qCiBwZXIt
ZmlsZSBhYnNlaWwtaW4td2VicnRjLm1kPWRhbmlsY2hhcEB3ZWJydGMub3JnCiBwZXItZmlsZSBh
YnNlaWwtaW4td2VicnRjLm1kPWt3aWJlcmdAd2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvUFJFU1VCTUlULnB5IGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvUFJFU1VCTUlULnB5CmluZGV4IGE3
YjVjYzE0YTQ4ZmEwYjgwNzAyNDYyYWE5YzkxMDFkOGEwMjc1NzEuLjM0YjVhZGY3Nzc4MzgzOTBh
YTU4OGU5ODY1MTNmNTIwYTJlMzA1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL1BSRVNVQk1JVC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9QUkVTVUJNSVQucHkKQEAgLTQ4MSw3ICs0ODEsOCBA
QCBkZWYgQ2hlY2tOb1N0cmVhbVVzYWdlSXNBZGRlZChpbnB1dF9hcGksIG91dHB1dF9hcGksCiAg
IGZpbGVfZmlsdGVyID0gbGFtYmRhIHg6IChpbnB1dF9hcGkuRmlsdGVyU291cmNlRmlsZSh4KQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNvdXJjZV9maWxlX2ZpbHRlcih4KSkKICAg
Zm9yIGYgaW4gaW5wdXRfYXBpLkFmZmVjdGVkU291cmNlRmlsZXMoZmlsZV9maWx0ZXIpOgotICAg
IGlmIGYuTG9jYWxQYXRoKCkgPT0gJ1BSRVNVQk1JVC5weSc6CisgICAgIyBVc2FnZSBvZiBzdHJp
bmdzdHJlYW0gaXMgYWxsb3dlZCB1bmRlciBleGFtcGxlcy8uCisgICAgaWYgZi5Mb2NhbFBhdGgo
KSA9PSAnUFJFU1VCTUlULnB5JyBvciBmLkxvY2FsUGF0aCgpLnN0YXJ0c3dpdGgoJ2V4YW1wbGVz
Jyk6CiAgICAgICBjb250aW51ZQogICAgIGZvciBsaW5lX251bSwgbGluZSBpbiBmLkNoYW5nZWRD
b250ZW50cygpOgogICAgICAgaWYgKChpbmNsdWRlX3JlLnNlYXJjaChsaW5lKSBvciB1c2FnZV9y
ZS5zZWFyY2gobGluZSkpCkBAIC04NjIsOCArODYzLDg5IEBAIGRlZiBDb21tb25DaGVja3MoaW5w
dXRfYXBpLCBvdXRwdXRfYXBpKToKICAgcmVzdWx0cy5leHRlbmQoQ2hlY2tOb1N0cmVhbVVzYWdl
SXNBZGRlZCgKICAgICAgIGlucHV0X2FwaSwgb3V0cHV0X2FwaSwgbm9uX3RoaXJkX3BhcnR5X3Nv
dXJjZXMpKQogICByZXN1bHRzLmV4dGVuZChDaGVja0FkZGVkRGVwc0hhdmVUYXJnZXRBcHByb3Zh
bHMoaW5wdXRfYXBpLCBvdXRwdXRfYXBpKSkKKyAgcmVzdWx0cy5leHRlbmQoQ2hlY2tBcGlEZXBz
RmlsZUlzVXBUb0RhdGUoaW5wdXRfYXBpLCBvdXRwdXRfYXBpKSkKKyAgcmVzdWx0cy5leHRlbmQo
Q2hlY2tBYnNsTWVtb3J5SW5jbHVkZSgKKyAgICAgIGlucHV0X2FwaSwgb3V0cHV0X2FwaSwgbm9u
X3RoaXJkX3BhcnR5X3NvdXJjZXMpKQorICByZXR1cm4gcmVzdWx0cworCisKK2RlZiBDaGVja0Fw
aURlcHNGaWxlSXNVcFRvRGF0ZShpbnB1dF9hcGksIG91dHB1dF9hcGkpOgorICAiIiJDaGVjayB0
aGF0ICdpbmNsdWRlX3J1bGVzJyBpbiBhcGkvREVQUyBpcyB1cCB0byBkYXRlLgorCisgIFRoZSBm
aWxlIGFwaS9ERVBTIG11c3QgYmUga2VwdCB1cCB0byBkYXRlIGluIG9yZGVyIHRvIGF2b2lkIHRv
IGF2b2lkIHRvCisgIGluY2x1ZGUgaW50ZXJuYWwgaGVhZGVyIGZyb20gV2ViUlRDJ3MgYXBpLyBo
ZWFkZXJzLgorCisgIFRoaXMgY2hlY2sgaXMgZm9jdXNlZCBvbiBlbnN1cmluZyB0aGF0ICdpbmNs
dWRlX3J1bGVzJyBjb250YWlucyBhIGRlbnkKKyAgcnVsZSBmb3IgZWFjaCByb290IGxldmVsIGRp
cmVjdG9yeS4gTW9yZSBmb2N1c2VkIGFsbG93IHJ1bGVzIGNhbiBiZQorICBhZGRlZCB0byAnc3Bl
Y2lmaWNfaW5jbHVkZV9ydWxlcycuCisgICIiIgorICByZXN1bHRzID0gW10KKyAgYXBpX2RlcHMg
PSBvcy5wYXRoLmpvaW4oaW5wdXRfYXBpLlByZXN1Ym1pdExvY2FsUGF0aCgpLCAnYXBpJywgJ0RF
UFMnKQorICB3aXRoIG9wZW4oYXBpX2RlcHMpIGFzIGY6CisgICAgZGVwc19jb250ZW50ID0gX1Bh
cnNlRGVwcyhmLnJlYWQoKSkKKworICBpbmNsdWRlX3J1bGVzID0gZGVwc19jb250ZW50LmdldCgn
aW5jbHVkZV9ydWxlcycsIFtdKQorCisgICMgT25seSBjaGVjayB0b3AgbGV2ZWwgZGlyZWN0b3Jp
ZXMgYWZmZWN0ZWQgYnkgdGhlIGN1cnJlbnQgQ0wuCisgIGRpcnNfdG9fY2hlY2sgPSBzZXQoKQor
ICBmb3IgZiBpbiBpbnB1dF9hcGkuQWZmZWN0ZWRGaWxlcygpOgorICAgIHBhdGhfdG9rZW5zID0g
W3QgZm9yIHQgaW4gZi5Mb2NhbFBhdGgoKS5zcGxpdChvcy5zZXApIGlmIHRdCisgICAgaWYgbGVu
KHBhdGhfdG9rZW5zKSA+IDE6CisgICAgICBpZiAocGF0aF90b2tlbnNbMF0gIT0gJ2FwaScgYW5k
CisgICAgICAgICAgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oaW5wdXRfYXBpLlByZXN1Ym1p
dExvY2FsUGF0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhf
dG9rZW5zWzBdKSkpOgorICAgICAgICBkaXJzX3RvX2NoZWNrLmFkZChwYXRoX3Rva2Vuc1swXSkK
KworICBtaXNzaW5nX2luY2x1ZGVfcnVsZXMgPSBzZXQoKQorICBmb3IgcCBpbiBkaXJzX3RvX2No
ZWNrOgorICAgIHJ1bGUgPSAnLSVzJyAlIHAKKyAgICBpZiBydWxlIG5vdCBpbiBpbmNsdWRlX3J1
bGVzOgorICAgICAgbWlzc2luZ19pbmNsdWRlX3J1bGVzLmFkZChydWxlKQorCisgIGlmIG1pc3Np
bmdfaW5jbHVkZV9ydWxlczoKKyAgICBlcnJvcl9tc2cgPSBbCisgICAgICAnaW5jbHVkZV9ydWxl
cyA9IFtcbicsCisgICAgICAnICAuLi5cbicsCisgICAgXQorCisgICAgZm9yIHIgaW4gc29ydGVk
KG1pc3NpbmdfaW5jbHVkZV9ydWxlcyk6CisgICAgICBlcnJvcl9tc2cuYXBwZW5kKCcgICIlcyIs
XG4nICUgc3RyKHIpKQorCisgICAgZXJyb3JfbXNnLmFwcGVuZCgnICAuLi5cbicpCisgICAgZXJy
b3JfbXNnLmFwcGVuZCgnXVxuJykKKworICAgIHJlc3VsdHMuYXBwZW5kKG91dHB1dF9hcGkuUHJl
c3VibWl0RXJyb3IoCisgICAgICAgICdOZXcgcm9vdCBsZXZlbCBkaXJlY3RvcnkgZGV0ZWN0ZWQh
IFdlYlJUQyBhcGkvIGhlYWRlcnMgc2hvdWxkICcKKyAgICAgICAgJ25vdCAjaW5jbHVkZSBoZWFk
ZXJzIGZyb20gXG4nCisgICAgICAgICd0aGUgbmV3IGRpcmVjdG9yeSwgc28gcGxlYXNlIHVwZGF0
ZSAiaW5jbHVkZV9ydWxlcyIgaW4gZmlsZVxuJworICAgICAgICAnIiVzIi4gRXhhbXBsZTpcbiVz
XG4nICUgKGFwaV9kZXBzLCAnJy5qb2luKGVycm9yX21zZykpKSkKKwogICByZXR1cm4gcmVzdWx0
cwogCitkZWYgQ2hlY2tBYnNsTWVtb3J5SW5jbHVkZShpbnB1dF9hcGksIG91dHB1dF9hcGksIHNv
dXJjZV9maWxlX2ZpbHRlcik6CisgIHBhdHRlcm4gPSBpbnB1dF9hcGkucmUuY29tcGlsZSgKKyAg
ICAgIHInXiNpbmNsdWRlXHMqImFic2wvbWVtb3J5L21lbW9yeS5oIicsIGlucHV0X2FwaS5yZS5N
VUxUSUxJTkUpCisgIGZpbGVfZmlsdGVyID0gbGFtYmRhIGY6IChmLkxvY2FsUGF0aCgpLmVuZHN3
aXRoKCgnLmNjJywgJy5oJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc291cmNl
X2ZpbGVfZmlsdGVyKGYpKQorCisgIGZpbGVzID0gW10KKyAgZm9yIGYgaW4gaW5wdXRfYXBpLkFm
ZmVjdGVkRmlsZXMoCisgICAgICBpbmNsdWRlX2RlbGV0ZXM9RmFsc2UsIGZpbGVfZmlsdGVyPWZp
bGVfZmlsdGVyKToKKyAgICBjb250ZW50cyA9IGlucHV0X2FwaS5SZWFkRmlsZShmKQorICAgIGlm
IHBhdHRlcm4uc2VhcmNoKGNvbnRlbnRzKToKKyAgICAgIGNvbnRpbnVlCisgICAgZm9yIF8sIGxp
bmUgaW4gZi5DaGFuZ2VkQ29udGVudHMoKToKKyAgICAgIGlmICdhYnNsOjptYWtlX3VuaXF1ZScg
aW4gbGluZToKKyAgICAgICAgZmlsZXMuYXBwZW5kKGYpCisgICAgICAgIGJyZWFrCisKKyAgaWYg
bGVuKGZpbGVzKToKKyAgICByZXR1cm4gW291dHB1dF9hcGkuUHJlc3VibWl0RXJyb3IoCisgICAg
ICAgICdQbGVhc2UgaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiIGhlYWRlciBmb3InCisg
ICAgICAgICcgYWJzbDo6bWFrZV91bmlxdWUuXG5UaGlzIGhlYWRlciBtYXkgb3IgbWF5IG5vdCBi
ZSBpbmNsdWRlZCcKKyAgICAgICAgJyB0cmFuc2l0aXZlbHkgZGVwZW5kcyBvbiB0aGUgQysrIHN0
YW5kYXJkIHZlcnNpb24uJywKKyAgICAgICAgZmlsZXMpXQorICByZXR1cm4gW10KIAogZGVmIENo
ZWNrQ2hhbmdlT25VcGxvYWQoaW5wdXRfYXBpLCBvdXRwdXRfYXBpKToKICAgcmVzdWx0cyA9IFtd
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9X
QVRDSExJU1RTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvV0FU
Q0hMSVNUUwppbmRleCBkYzhkNDhjNTFmOTViYzhjNDNjYmYwYmRiMmU2YmIwZGExOGY2MmU2Li40
MjYwYmY5MWJiYzU5OTczMGUwNGNkNTMyNGU0NzU0MTlkODQxOTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9XQVRDSExJU1RTCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL1dBVENITElTVFMKQEAgLTc5
LDYgKzc5LDkgQEAKICAgICAnYml0cmF0ZV9jb250cm9sbGVyJzogewogICAgICAgJ2ZpbGVwYXRo
JzogJ21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyLy4qJwogICAgIH0sCisgICAgJ2Nvbmdlc3Rp
b25fY29udHJvbGxlcic6IHsKKyAgICAgICdmaWxlcGF0aCc6ICdtb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci8uKicKKyAgICB9LAogICAgICdyZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3InOiB7
CiAgICAgICAnZmlsZXBhdGgnOiAnbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvLion
CiAgICAgfSwKQEAgLTk3LDggKzEwMCw4IEBACiAgIH0sCiAKICAgJ1dBVENITElTVFMnOiB7Ci0g
ICAgJ3RoaXNfZmlsZSc6IFsnJ10sCi0gICAgJ2FsbF93ZWJydGMnOiBbJ3R0ZXJyaWJlcnJ5QG1v
emlsbGEuY29tJ10sCisgICAgJ3RoaXNfZmlsZSc6IFtdLAorICAgICdhbGxfd2VicnRjJzogW10s
CiAgICAgJ3Jvb3RfZmlsZXMnOiBbJ25pa2xhcy5lbmJvbUB3ZWJydGMub3JnJywKICAgICAgICAg
ICAgICAgICAgICAncGVhaEB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAncWlhbmcu
bHVAaW50ZWwuY29tJywKQEAgLTEwNiwxNiArMTA5LDE0IEBACiAgICAgJ2J1aWxkX2ZpbGVzJzog
WydtYm9uYWRlaUB3ZWJydGMub3JnJ10sCiAgICAgJ2NvbW1vbl9hdWRpbyc6IFsnYWxlc3Npb2JA
d2VicnRjLm9yZycsCiAgICAgICAgICAgICAgICAgICAgICAnYWx1ZWJzQHdlYnJ0Yy5vcmcnLAot
ICAgICAgICAgICAgICAgICAgICAgJ2FuZHJld0B3ZWJydGMub3JnJywKICAgICAgICAgICAgICAg
ICAgICAgICdhdWRpby10ZWFtQGFnb3JhLmlvJywKLSAgICAgICAgICAgICAgICAgICAgICdiam9y
bnZAd2VicnRjLm9yZycsCiAgICAgICAgICAgICAgICAgICAgICAnbWlueXVlQHdlYnJ0Yy5vcmcn
LAogICAgICAgICAgICAgICAgICAgICAgJ3BlYWhAd2VicnRjLm9yZyddLAotICAgICdhdWRpbyc6
IFsnc29sZW5iZXJnQHdlYnJ0Yy5vcmcnLAotICAgICAgICAgICAgICAndGluYS5sZWdyYW5kQHdl
YnJ0Yy5vcmcnXSwKKyAgICAnYXVkaW8nOiBbJ3NvbGVuYmVyZ0B3ZWJydGMub3JnJ10sCiAgICAg
J2FwaSc6IFsna3dpYmVyZ0B3ZWJydGMub3JnJywKICAgICAgICAgICAgICdzb2xlbmJlcmdAd2Vi
cnRjLm9yZyddLAotICAgICdiYXNlJzogWydrd2liZXJnQHdlYnJ0Yy5vcmcnXSwKKyAgICAnYmFz
ZSc6IFsna3dpYmVyZ0B3ZWJydGMub3JnJywKKyAgICAgICAgICAgICAnYmVud3JpZ2h0QHdlYnJ0
Yy5vcmcnXSwKICAgICAnY2FsbCc6IFsnbWZsb2RtYW5Ad2VicnRjLm9yZycsCiAgICAgICAgICAg
ICAgJ3NvbGVuYmVyZ0B3ZWJydGMub3JnJywKICAgICAgICAgICAgICAnc3RlZmFuQHdlYnJ0Yy5v
cmcnXSwKQEAgLTEzNyw4ICsxMzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgJ2hlbnJpay5s
dW5kaW5Ad2VicnRjLm9yZycsCiAgICAgICAgICAgICAgICAgICAgICAna3dpYmVyZ0B3ZWJydGMu
b3JnJywKICAgICAgICAgICAgICAgICAgICAgICdtaW55dWVAd2VicnRjLm9yZycsCi0gICAgICAg
ICAgICAgICAgICAgICAncGVhaEB3ZWJydGMub3JnJywKLSAgICAgICAgICAgICAgICAgICAgICd0
aW5hLmxlZ3JhbmRAd2VicnRjLm9yZyddLAorICAgICAgICAgICAgICAgICAgICAgJ3BlYWhAd2Vi
cnRjLm9yZyddLAogICAgICduZXRlcSc6IFsnYWxlc3Npb2JAd2VicnRjLm9yZycsCiAgICAgICAg
ICAgICAgICdhdWRpby10ZWFtQGFnb3JhLmlvJywKICAgICAgICAgICAgICAgJ2hlbnJpay5sdW5k
aW5Ad2VicnRjLm9yZycsCkBAIC0xNDksOSArMTQ5LDcgQEAKICAgICAnYXVkaW9fcHJvY2Vzc2lu
Zyc6IFsnYWxlbG9pQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICdhbGVz
c2lvYkB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnYWx1ZWJzQHdlYnJ0
Yy5vcmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdhbmRyZXdAd2VicnRjLm9yZycsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2F1ZGlvLXRlYW1AYWdvcmEuaW8nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICdiam9ybnZAd2VicnRjLm9yZycsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2hlbnJpay5sdW5kaW5Ad2VicnRjLm9yZycsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2t3aWJlcmdAd2VicnRjLm9yZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbnl1
ZUB3ZWJydGMub3JnJywKQEAgLTE2NiwxMSArMTY0LDE0IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3poZW5nemhvbmdob3VAYWdvcmEuaW8nXSwKICAgICAnYml0cmF0ZV9jb250cm9sbGVy
JzogWydtZmxvZG1hbkB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdz
dGVmYW5Ad2VicnRjLm9yZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3J0ZUB3ZWJy
dGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aHVhbmd6ZXNlbkBhZ29yYS5p
byddLAorICAgICdjb25nZXN0aW9uX2NvbnRyb2xsZXInOiBbJ3NydGVAd2VicnRjLm9yZyddLAog
ICAgICdyZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3InOiBbJ21mbG9kbWFuQHdlYnJ0Yy5vcmcnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZWZhbkB3ZWJydGMub3JnJywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aHVhbmd6ZXNlbkBhZ29yYS5pbyddLAog
ICAgICdwYWNpbmcnOiBbJ21mbG9kbWFuQHdlYnJ0Yy5vcmcnLAorICAgICAgICAgICAgICAgJ3Ny
dGVAd2VicnRjLm9yZycsCiAgICAgICAgICAgICAgICAnc3RlZmFuQHdlYnJ0Yy5vcmcnLAogICAg
ICAgICAgICAgICAgJ3podWFuZ3plc2VuQGFnb3JhLmlvJ10sCiAgICAgJ3J0cF9ydGNwJzogWydt
ZmxvZG1hbkB3ZWJydGMub3JnJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fic2VpbC1pbi13ZWJydGMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hYnNlaWwtaW4td2VicnRjLm1kCmluZGV4IDA0YWU4
ZDI4ZGUxMmI3NGNjYmE1Y2Q1MWE2ZTUyMWYzODQzMjlkNDcuLjEwNzVhYTliNzk2MjAxNWUyZTk3
M2MzNTUwYzVlNjliNTVkYTI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fic2VpbC1pbi13ZWJydGMubWQKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYWJzZWlsLWluLXdlYnJ0Yy5tZApAQCAtMTUs
NiArMTUsMTAgQEAgYWRkcyB0aGUgZmlyc3QgdXNlLgogKiBgYWJzbDo6bWFrZV91bmlxdWVgIGFu
ZCBgYWJzbDo6V3JhcFVuaXF1ZWAKICogYGFic2w6Om9wdGlvbmFsYCBhbmQgcmVsYXRlZCBzdHVm
ZiBmcm9tIGBhYnNsL3R5cGVzL29wdGlvbmFsLmhgLgogKiBgYWJzbDo6c3RyaW5nX3ZpZXdgCisq
IFRoZSBmdW5jdGlvbnMgaW4gYGFic2wvc3RyaW5ncy9hc2NpaS5oYCBhbmQgYGFic2wvc3RyaW5n
cy9tYXRjaC5oYAorKiBgYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZWAsCisg
IGBhYnNsOjppc190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlYCwgYW5kCisgIGBhYnNsOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlYCBmcm9tIGBhYnNsL21ldGEvdHlwZV90cmFpdHMuaGAuCiAq
IGBhYnNsOjp2YXJpYW50YCBhbmQgcmVsYXRlZCBzdHVmZiBmcm9tIGBhYnNsL3R5cGVzL3Zhcmlh
bnQuaGAuCiAKICMjICoqRGlzYWxsb3dlZCoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvQlVJTEQuZ24KaW5kZXggNWIyMTMzNGZlOTg1
OWU0ZWI0ZDA0YWZmYjM0NjI1M2Y4OWI3YzdiZS4uZmUyN2M3Yjg4ODBiOGYyZWJhMTU1ZjM5ZWY3
ZmI0OWEzNjI5YmM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9CVUlMRC5nbgpAQCAtNDQsNiArNDQsMzMgQEAgcnRjX3NvdXJj
ZV9zZXQoImNhbGxmYWN0b3J5X2FwaSIpIHsKICAgXQogfQogCitydGNfc3RhdGljX2xpYnJhcnko
ImNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5IikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIg
XQorICBhbGxvd19wb2lzb24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0KKyAgc291cmNl
cyA9IFsKKyAgICAiY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuY2MiLAorICAgICJjcmVh
dGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y2Fs
bGZhY3RvcnlfYXBpIiwKKyAgICAiOmZlY19jb250cm9sbGVyX2FwaSIsCisgICAgIjpsaWJqaW5n
bGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKKyAgICAiLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2Fw
aSIsCisgICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19pbXBsX2Jhc2UiLAorICAgICIuLi9t
ZWRpYTpydGNfYXVkaW9fdmlkZW8iLAorICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRp
b19kZXZpY2VfYXBpIiwKKyAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCisg
ICAgIi4uL3BjOnBlZXJjb25uZWN0aW9uIiwKKyAgICAiLi4vcnRjX2Jhc2U6cHRyX3V0aWwiLAor
ICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCisgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKKyAgICAiYXVkaW86YXVkaW9fbWl4ZXJfYXBpIiwKKyAgICAiYXVkaW9fY29kZWNz
OmF1ZGlvX2NvZGVjc19hcGkiLAorICAgICJ0cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKKyAg
ICAidmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAorICBdCit9CisKIHJ0Y19zdGF0aWNf
bGlicmFyeSgibGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIpIHsKICAgdmlzaWJpbGl0eSA9
IFsgIioiIF0KICAgY2ZsYWdzID0gW10KQEAgLTUyLDYgKzc5LDggQEAgcnRjX3N0YXRpY19saWJy
YXJ5KCJsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIikgewogICAgICJiaXRyYXRlX2NvbnN0
cmFpbnRzLmgiLAogICAgICJjYW5kaWRhdGUuY2MiLAogICAgICJjYW5kaWRhdGUuaCIsCisgICAg
ImNyeXB0by9jcnlwdG9vcHRpb25zLmNjIiwKKyAgICAiY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIs
CiAgICAgImNyeXB0by9mcmFtZWRlY3J5cHRvcmludGVyZmFjZS5oIiwKICAgICAiY3J5cHRvL2Zy
YW1lZW5jcnlwdG9yaW50ZXJmYWNlLmgiLAogICAgICJjcnlwdG9wYXJhbXMuaCIsCkBAIC02Myw2
ICs5Miw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgibGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2Fw
aSIpIHsKICAgICAianNlcGljZWNhbmRpZGF0ZS5jYyIsCiAgICAgImpzZXBpY2VjYW5kaWRhdGUu
aCIsCiAgICAgImpzZXBzZXNzaW9uZGVzY3JpcHRpb24uaCIsCisgICAgIm1lZGlhX3RyYW5zcG9y
dF9pbnRlcmZhY2UuY2MiLAogICAgICJtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiLAogICAg
ICJtZWRpYWNvbnN0cmFpbnRzaW50ZXJmYWNlLmNjIiwKICAgICAibWVkaWFjb25zdHJhaW50c2lu
dGVyZmFjZS5oIiwKQEAgLTEwOSw2ICsxMzksNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImxpYmpp
bmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiKSB7CiAgICAgImF1ZGlvX2NvZGVjczphdWRpb19jb2Rl
Y3NfYXBpIiwKICAgICAidHJhbnNwb3J0OmJpdHJhdGVfc2V0dGluZ3MiLAogICAgICJ0cmFuc3Bv
cnQ6bmV0d29ya19jb250cm9sIiwKKyAgICAidmlkZW86ZW5jb2RlZF9pbWFnZSIsCiAgICAgInZp
ZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXM6b3B0aW9uYWwiLAogCkBAIC0xMjQsNiArMTU1LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJs
aWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIikgewogICAgICIuLi9ydGNfYmFzZTpydGNfYmFz
ZSIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4vcnRjX2Jh
c2U6c3RyaW5ndXRpbHMiLAorICAgICIuLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAg
IF0KIAogICBpZiAoaXNfbmFjbCkgewpAQCAtMTMyLDYgKzE2NCwxMyBAQCBydGNfc3RhdGljX2xp
YnJhcnkoImxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiKSB7CiAgIH0KIH0KIAorcnRjX3Nv
dXJjZV9zZXQoInNjb3BlZF9yZWZwdHIiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHNv
dXJjZXMgPSBbCisgICAgInNjb3BlZF9yZWZwdHIuaCIsCisgIF0KK30KKwogcnRjX3NvdXJjZV9z
ZXQoInZpZGVvX3F1YWxpdHlfdGVzdF9maXh0dXJlX2FwaSIpIHsKICAgdmlzaWJpbGl0eSA9IFsg
IioiIF0KICAgdGVzdG9ubHkgPSB0cnVlCkBAIC0xNjQsNiArMjAzLDcgQEAgcnRjX3NvdXJjZV9z
ZXQoInRlc3RfZGVwZW5kZW5jeV9mYWN0b3J5IikgewogICBkZXBzID0gWwogICAgICI6dmlkZW9f
cXVhbGl0eV90ZXN0X2ZpeHR1cmVfYXBpIiwKICAgICAiLi4vcnRjX2Jhc2U6dGhyZWFkX2NoZWNr
ZXIiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiAg
IGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewogICAgICMgU3VwcHJlc3Mg
d2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcv
MTYzKS4KQEAgLTIwMywzNCArMjQzLDE1IEBAIHJ0Y19zb3VyY2Vfc2V0KCJsaWJqaW5nbGVfbG9n
Z2luZ19hcGkiKSB7CiBydGNfc291cmNlX3NldCgib3J0Y19hcGkiKSB7CiAgIHZpc2liaWxpdHkg
PSBbICIqIiBdCiAgIHNvdXJjZXMgPSBbCi0gICAgIm9ydGMvbWVkaWFkZXNjcmlwdGlvbi5jYyIs
Ci0gICAgIm9ydGMvbWVkaWFkZXNjcmlwdGlvbi5oIiwKLSAgICAib3J0Yy9vcnRjZmFjdG9yeWlu
dGVyZmFjZS5oIiwKLSAgICAib3J0Yy9vcnRjcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIsCi0gICAg
Im9ydGMvb3J0Y3J0cHNlbmRlcmludGVyZmFjZS5oIiwKICAgICAib3J0Yy9wYWNrZXR0cmFuc3Bv
cnRpbnRlcmZhY2UuaCIsCi0gICAgIm9ydGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcmludGVyZmFj
ZS5oIiwKICAgICAib3J0Yy9ydHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIsCi0gICAgIm9ydGMvc2Vz
c2lvbmRlc2NyaXB0aW9uLmNjIiwKLSAgICAib3J0Yy9zZXNzaW9uZGVzY3JpcHRpb24uaCIsCiAg
ICAgIm9ydGMvc3J0cHRyYW5zcG9ydGludGVyZmFjZS5oIiwKLSAgICAib3J0Yy91ZHB0cmFuc3Bv
cnRpbnRlcmZhY2UuaCIsCiAgIF0KIAotICAjIEZvciBtZWRpYXN0cmVhbWludGVyZmFjZS5oLCBl
dGMuCi0gICMgVE9ETyhkZWFkYmVlZik6IENyZWF0ZSBhIHNlcGFyYXRlIHRhcmdldCBmb3IgdGhl
IGNvbW1vbiB0aGluZ3MgT1JUQyBhbmQKLSAgIyBQZWVyQ29ubmVjdGlvbiBjb2RlIHNoYXJlcywg
c28gdGhhdCBvcnRjX2FwaSBjYW4gZGVwZW5kIG9uIHRoYXQgaW5zdGVhZCBvZgotICAjIGxpYmpp
bmdsZV9wZWVyY29ubmVjdGlvbl9hcGkuCiAgIGRlcHMgPSBbCiAgICAgIjpsaWJqaW5nbGVfcGVl
cmNvbm5lY3Rpb25fYXBpIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCi0gICAgIi4uL3J0Y19i
YXNlOnJ0Y19iYXNlIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6
b3B0aW9uYWwiLAogICBdCi0gIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykg
ewotICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2lu
IChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KLSAgICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAiLy9i
dWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRfY29uc3RydWN0cyIgXQotICB9CiB9CiAKIHJ0Y19z
b3VyY2Vfc2V0KCJydGNfc3RhdHNfYXBpIikgewpAQCAtMjQ2LDYgKzI2Nyw3IEBAIHJ0Y19zb3Vy
Y2Vfc2V0KCJydGNfc3RhdHNfYXBpIikgewogICBkZXBzID0gWwogICAgICIuLi9ydGNfYmFzZTpj
aGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uL3J0
Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgXQogfQogCkBAIC0yNzAsNiArMjkyLDE3IEBA
IHJ0Y19zb3VyY2Vfc2V0KCJ0cmFuc3BvcnRfYXBpIikgewogICBdCiB9CiAKK3J0Y19zb3VyY2Vf
c2V0KCJiaXRyYXRlX2FsbG9jYXRpb24iKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHNv
dXJjZXMgPSBbCisgICAgImNhbGwvYml0cmF0ZV9hbGxvY2F0aW9uLmgiLAorICBdCisgIGRlcHMg
PSBbCisgICAgInVuaXRzOmRhdGFfcmF0ZSIsCisgICAgInVuaXRzOnRpbWVfZGVsdGEiLAorICBd
Cit9CisKIHJ0Y19zb3VyY2Vfc2V0KCJzaW11bGF0ZWRfbmV0d29ya19hcGkiKSB7CiAgIHZpc2li
aWxpdHkgPSBbICIqIiBdCiAgIHNvdXJjZXMgPSBbCkBAIC0zNDcsNiArMzgwLDcgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICBdCiAKICAgICAgIGRlcHMgPSBbCisgICAgICAgICIu
Li9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICAgIi4uL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICAgIi4uL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZzphdWRpb3Byb2NfZl9pbXBsIiwKICAgICAgIF0KQEAgLTQ0NiwxMSArNDgw
LDMzIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIF0KICAgfQogCi0gIHJ0Y19zb3Vy
Y2Vfc2V0KCJmYWtlX2ZyYW1lX2NyeXB0byIpIHsKKyAgcnRjX3NvdXJjZV9zZXQoIm1vY2tfZnJh
bWVfZW5jcnlwdG9yIikgeworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAgIHNvdXJjZXMgPSBbCisg
ICAgICAidGVzdC9tb2NrX2ZyYW1lX2VuY3J5cHRvci5jYyIsCisgICAgICAidGVzdC9tb2NrX2Zy
YW1lX2VuY3J5cHRvci5oIiwKKyAgICBdCisgICAgZGVwcyA9IFsKKyAgICAgICI6bGliamluZ2xl
X3BlZXJjb25uZWN0aW9uX2FwaSIsCisgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAg
IF0KKyAgfQorCisgIHJ0Y19zb3VyY2Vfc2V0KCJtb2NrX2ZyYW1lX2RlY3J5cHRvciIpIHsKKyAg
ICB0ZXN0b25seSA9IHRydWUKKyAgICBzb3VyY2VzID0gWworICAgICAgInRlc3QvbW9ja19mcmFt
ZV9kZWNyeXB0b3IuY2MiLAorICAgICAgInRlc3QvbW9ja19mcmFtZV9kZWNyeXB0b3IuaCIsCisg
ICAgXQorICAgIGRlcHMgPSBbCisgICAgICAiOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGki
LAorICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKyAgICBdCisgIH0KKworICBydGNfc291
cmNlX3NldCgiZmFrZV9mcmFtZV9lbmNyeXB0b3IiKSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAg
ICAgc291cmNlcyA9IFsKLSAgICAgICJ0ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmNjIiwKLSAg
ICAgICJ0ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmgiLAogICAgICAgInRlc3QvZmFrZV9mcmFt
ZV9lbmNyeXB0b3IuY2MiLAogICAgICAgInRlc3QvZmFrZV9mcmFtZV9lbmNyeXB0b3IuaCIsCiAg
ICAgXQpAQCAtNDYzLDYgKzUxOSwyMSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBd
CiAgIH0KIAorICBydGNfc291cmNlX3NldCgiZmFrZV9mcmFtZV9kZWNyeXB0b3IiKSB7CisgICAg
dGVzdG9ubHkgPSB0cnVlCisgICAgc291cmNlcyA9IFsKKyAgICAgICJ0ZXN0L2Zha2VfZnJhbWVf
ZGVjcnlwdG9yLmNjIiwKKyAgICAgICJ0ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmgiLAorICAg
IF0KKyAgICBkZXBzID0gWworICAgICAgIjphcnJheV92aWV3IiwKKyAgICAgICI6bGliamluZ2xl
X3BlZXJjb25uZWN0aW9uX2FwaSIsCisgICAgICAiLi46d2VicnRjX2NvbW1vbiIsCisgICAgICAi
Li4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3Zl
ZCIsCisgICAgXQorICB9CisKICAgcnRjX3NvdXJjZV9zZXQoIm1vY2tfcGVlcmNvbm5lY3Rpb25p
bnRlcmZhY2UiKSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAgICAgc291cmNlcyA9IFsKQEAgLTUw
MCw2ICs1NzEsMTggQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgXQogICB9CiAKKyAg
cnRjX3NvdXJjZV9zZXQoIm1vY2tfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIpIHsK
KyAgICB0ZXN0b25seSA9IHRydWUKKyAgICBzb3VyY2VzID0gWworICAgICAgInRlc3QvbW9ja192
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiLAorICAgIF0KKworICAgIGRlcHMgPSBb
CisgICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAor
ICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKyAgICBdCisgIH0KKwogICBydGNfc291cmNl
X3NldCgibW9ja192aWRlb19jb2RlY19mYWN0b3J5IikgewogICAgIHRlc3Rvbmx5ID0gdHJ1ZQog
ICAgIHNvdXJjZXMgPSBbCkBAIC01MTMsMTUgKzU5Niw3MiBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICBdCiAgIH0KIAorICBydGNfc291cmNlX3NldCgibW9ja192aWRlb19kZWNvZGVy
IikgeworICAgIHZpc2liaWxpdHkgPSBbICIqIiBdCisKKyAgICB0ZXN0b25seSA9IHRydWUKKyAg
ICBzb3VyY2VzID0gWworICAgICAgInRlc3QvbW9ja192aWRlb19kZWNvZGVyLmNjIiwKKyAgICAg
ICJ0ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5oIiwKKyAgICBdCisKKyAgICBkZXBzID0gWworICAg
ICAgIi4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCisgICAgICAiLi4vdGVz
dDp0ZXN0X3N1cHBvcnQiLAorICAgIF0KKyAgfQorCisgIHJ0Y19zb3VyY2Vfc2V0KCJtb2NrX3Zp
ZGVvX2VuY29kZXIiKSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKworICAgIHRlc3Rvbmx5
ID0gdHJ1ZQorICAgIHNvdXJjZXMgPSBbCisgICAgICAidGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIu
Y2MiLAorICAgICAgInRlc3QvbW9ja192aWRlb19lbmNvZGVyLmgiLAorICAgIF0KKworICAgIGRl
cHMgPSBbCisgICAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKKyAg
ICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgXQorICB9CisKKyAgcnRjX3NvdXJjZV9z
ZXQoImZha2VfbWVkaWFfdHJhbnNwb3J0IikgeworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorCisgICAg
c291cmNlcyA9IFsKKyAgICAgICJ0ZXN0L2Zha2VfbWVkaWFfdHJhbnNwb3J0LmgiLAorICAgIF0K
KworICAgIGRlcHMgPSBbCisgICAgICAiOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAor
ICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5Om1lbW9yeSIsCisgICAgXQorICB9CisKKyAgcnRjX3NvdXJjZV9zZXQo
Imxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydCIpIHsKKyAgICB0ZXN0b25seSA9IHRydWUKKworICAg
IHNvdXJjZXMgPSBbCisgICAgICAidGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnQuaCIsCisg
ICAgXQorCisgICAgZGVwcyA9IFsKKyAgICAgICI6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2Fw
aSIsCisgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZSIsCisgICAgXQorICB9CisKICAgcnRjX3NvdXJjZV9zZXQoInJ0Y19hcGlfdW5pdHRlc3Rz
IikgewogICAgIHRlc3Rvbmx5ID0gdHJ1ZQogCiAgICAgc291cmNlcyA9IFsKICAgICAgICJhcnJh
eV92aWV3X3VuaXR0ZXN0LmNjIiwKLSAgICAgICJvcnRjL21lZGlhZGVzY3JpcHRpb25fdW5pdHRl
c3QuY2MiLAotICAgICAgIm9ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uX3VuaXR0ZXN0LmNjIiwKICAg
ICAgICJydGNlcnJvcl91bml0dGVzdC5jYyIsCiAgICAgICAicnRwcGFyYW1ldGVyc191bml0dGVz
dC5jYyIsCisgICAgICAidGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnRfdW5pdHRlc3QuY2Mi
LAogICAgIF0KIAogICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewpA
QCAtNTMyLDEwICs2NzIsMTAgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgZGVwcyA9
IFsKICAgICAgICI6YXJyYXlfdmlldyIsCiAgICAgICAiOmxpYmppbmdsZV9wZWVyY29ubmVjdGlv
bl9hcGkiLAotICAgICAgIjpvcnRjX2FwaSIsCisgICAgICAiOmxvb3BiYWNrX21lZGlhX3RyYW5z
cG9ydCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAgICIuLi9ydGNfYmFzZTpn
dW5pdF9oZWxwZXJzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0g
ICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uL3Rlc3Q6
dGVzdF9zdXBwb3J0IiwKICAgICAgICJ1bml0czp1bml0c191bml0dGVzdHMiLAogICAgIF0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9E
RVBTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL0RFUFMK
aW5kZXggODQ3Y2NlMjU5ZjlhZTYzYTAyMGUwZDYyYTI0MjAxYmNhNzI0NTdhMi4uMjg2ZDhkMWUx
ZTZjNzc4YjQwNDU4Zjc3ZDA2NWU4ODIyMTJhOGEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL0RFUFMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL0RFUFMKQEAgLTEsMTUgKzEsNTUgQEAK
KyMgVGhpcyBpcyBzdXBwb3NlZCB0byBiZSBhIGNvbXBsZXRlIGxpc3Qgb2YgdG9wLWxldmVsIGRp
cmVjdG9yaWVzLAorIyBleGNlcHRpbmcgb25seSBhcGkvIGl0c2VsZi4KIGluY2x1ZGVfcnVsZXMg
PSBbCi0gICIrdGhpcmRfcGFydHkvbGlieXV2IiwKLSAgIitjb21tb25fdmlkZW8iLAotICAiK21l
ZGlhIiwKLSAgIitwMnAiLAotICAiK3BjIiwKLSAgIitsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRj
X2V2ZW50X2xvZ19mYWN0b3J5X2ludGVyZmFjZS5oIiwKLSAgIittb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvaW5jbHVkZSIsCi0gICIrc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUiLAorICAiLWF1ZGlv
IiwKKyAgIi1iYXNlIiwKKyAgIi1idWlsZCIsCisgICItYnVpbGR0b29scyIsCisgICItYnVpbGRf
b3ZlcnJpZGVzIiwKKyAgIi1jYWxsIiwKKyAgIi1jb21tb25fYXVkaW8iLAorICAiLWNvbW1vbl92
aWRlbyIsCisgICItZGF0YSIsCisgICItZXhhbXBsZXMiLAorICAiLWlvcyIsCisgICItaW5mcmEi
LAorICAiLWxvZ2dpbmciLAorICAiLW1lZGlhIiwKKyAgIi1tb2R1bGVzIiwKKyAgIi1vdXQiLAor
ICAiLXAycCIsCisgICItcGMiLAorICAiLXJlc291cmNlcyIsCisgICItcnRjX2Jhc2UiLAorICAi
LXJ0Y190b29scyIsCisgICItc2RrIiwKKyAgIi1zdGF0cyIsCisgICItc3R5bGUtZ3VpZGUiLAor
ICAiLXN5c3RlbV93cmFwcGVycyIsCisgICItdGVzdCIsCisgICItdGVzdGluZyIsCisgICItdGhp
cmRfcGFydHkiLAorICAiLXRvb2xzIiwKKyAgIi10b29sc193ZWJydGMiLAorICAiLXZpZGVvIiwK
KyAgIi1leHRlcm5hbC93ZWJydGMvd2VicnRjIiwgICMgQW5kcm9pZCBwbGF0Zm9ybSBidWlsZC4K
KyAgIi1saWJ5dXYiLAorICAiLWNvbW1vbl90eXBlcy5oIiwKKyAgIi1XZWJSVEMiLAogXQogCiBz
cGVjaWZpY19pbmNsdWRlX3J1bGVzID0geworICAjIFNvbWUgaW50ZXJuYWwgaGVhZGVycyBhcmUg
YWxsb3dlZCBldmVuIGluIEFQSSBoZWFkZXJzOgorICAiLipcLmgiOiBbCisgICAgIitydGNfYmFz
ZS9jaGVja3MuaCIsCisgICAgIitydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIiwKKyAgICAi
K3J0Y19iYXNlL3VuaXRzL3VuaXRfYmFzZS5oIiwKKyAgXSwKKworICAiYXJyYXlfdmlld1wuaCI6
IFsKKyAgICAiK3J0Y19iYXNlL3R5cGVfdHJhaXRzLmgiLAorICBdLAorCiAgICMgTmVlZGVkIGJl
Y2F1c2UgQXVkaW9FbmNvZGVyT3B1cyBpcyBpbiB0aGUgd3JvbmcgcGxhY2UgZm9yCiAgICMgYmFj
a3dhcmRzIGNvbXBhdGliaWx0eSByZWFzb25zLiBTZWUKICAgIyBodHRwczovL2J1Z3MuY2hyb21p
dW0ub3JnL3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9Nzg0NwpAQCAtMTcsMTMgKzU3LDI1MiBA
QCBzcGVjaWZpY19pbmNsdWRlX3J1bGVzID0gewogICAgICIrbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmgiLAogICBdLAogCi0gICMgV2UgYWxsb3cg
LmNjIGZpbGVzIGluIHdlYnJ0Yy9hcGkvIHRvICNpbmNsdWRlIGEgYnVuY2ggb2Ygc3R1ZmYKLSAg
IyB0aGF0J3Mgb2ZmLWxpbWl0cyBmb3IgdGhlIC5oIGZpbGVzLiBUaGF0J3MgYmVjYXVzZSAuaCBm
aWxlcyBsZWFrCi0gICMgdGhlaXIgI2luY2x1ZGVzIHRvIHdob2V2ZXIncyAjaW5jbHVkaW5nIHRo
ZW0sIGJ1dCAuY2MgZmlsZXMgZG8gbm90Ci0gICMgc2luY2Ugbm8gb25lICNpbmNsdWRlcyB0aGVt
LgorICAiYXN5bmNyZXNvbHZlcmZhY3RvcnlcLmgiOiBbCisgICAgIitydGNfYmFzZS9hc3luY3Jl
c29sdmVyaW50ZXJmYWNlLmgiLAorICBdLAorCisgICJjYW5kaWRhdGVcLmgiOiBbCisgICAgIity
dGNfYmFzZS9uZXR3b3JrX2NvbnN0YW50cy5oIiwKKyAgICAiK3J0Y19iYXNlL3NvY2tldGFkZHJl
c3MuaCIsCisgIF0sCisKKyAgImNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5XC5oIjogWwor
ICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIsCisgIF0sCisKKyAgImRhdGFjaGFubmVs
aW50ZXJmYWNlXC5oIjogWworICAgICIrcnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIuaCIsCisg
ICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgXSwKKworICAiZHRtZnNlbmRlcmludGVyZmFj
ZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAorICBdLAorCisgICJmZWNfY29u
dHJvbGxlclwuaCI6IFsKKyAgICAiK21vZHVsZXMvaW5jbHVkZS9tb2R1bGVfZmVjX3R5cGVzLmgi
LAorICBdLAorCisgICJqc2VwXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisg
IF0sCisKKyAgImpzZXBpY2VjYW5kaWRhdGVcLmgiOiBbCisgICAgIitydGNfYmFzZS9jb25zdHJ1
Y3Rvcm1hZ2ljLmgiLAorICBdLAorCisgICJqc2Vwc2Vzc2lvbmRlc2NyaXB0aW9uXC5oIjogWwor
ICAgICIrcnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIiwKKyAgXSwKKworICAibWVkaWFzdHJl
YW1pbnRlcmZhY2VcLmgiOiBbCisgICAgIittb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVk
ZS9hdWRpb19wcm9jZXNzaW5nX3N0YXRpc3RpY3MuaCIsCisgICAgIitydGNfYmFzZS9yZWZjb3Vu
dC5oIiwKKyAgICAiK3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiLAorICBdLAorCisgICJtZWRp
YV90cmFuc3BvcnRfaW50ZXJmYWNlXC5oIjogWworICAgICIrcnRjX2Jhc2UvY29weW9ud3JpdGVi
dWZmZXIuaCIsICAjIEFzIHVzZWQgYnkgZGF0YWNoYW5uZWxpbnRlcmZhY2UuaAorICAgICIrcnRj
X2Jhc2UvbmV0d29ya3JvdXRlLmgiCisgIF0sCisKKyAgInBlZXJjb25uZWN0aW9uZmFjdG9yeXBy
b3h5XC5oIjogWworICAgICIrcnRjX2Jhc2UvYmluZC5oIiwKKyAgXSwKKworICAicmVmY291bnRl
ZGJhc2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiLAorICAgICIr
cnRjX2Jhc2UvcmVmY291bnQuaCIsCisgICAgIitydGNfYmFzZS9yZWZjb3VudGVyLmgiLAorICBd
LAorCisgICJydGNlcnJvclwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2xvZ2dpbmcuaCIsCisgIF0s
CisKKyAgInJ0cHJlY2VpdmVyaW50ZXJmYWNlXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291
bnQuaCIsCisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwKKworICAicnRw
c2VuZGVyaW50ZXJmYWNlXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgICAg
IitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwKKworICAicnRwdHJhbnNjZWl2ZXJp
bnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgXSwKKworICAi
c2V0cmVtb3RlZGVzY3JpcHRpb25vYnNlcnZlcmludGVyZmFjZVwuaCI6IFsKKyAgICAiK3J0Y19i
YXNlL3JlZmNvdW50LmgiLAorICBdLAorCisgICJzdGF0c3R5cGVzXC5oIjogWworICAgICIrcnRj
X2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIiwKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAor
ICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIsCisgICAgIitydGNfYmFzZS9zdHJpbmdl
bmNvZGUuaCIsCisgICAgIitydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIiwKKyAgXSwKKworICAi
dW1hbWV0cmljc1wuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAorICBdLAorCisg
ICJhdWRpb19mcmFtZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIs
CisgIF0sCisKKyAgImF1ZGlvX21peGVyXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQu
aCIsCisgIF0sCisKKyAgImF1ZGlvX2RlY29kZXJcLmgiOiBbCisgICAgIitydGNfYmFzZS9idWZm
ZXIuaCIsCisgICAgIitydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiLAorICBdLAorCisgICJh
dWRpb19kZWNvZGVyX2ZhY3RvcnlcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwK
KyAgXSwKKworICAiYXVkaW9fZGVjb2Rlcl9mYWN0b3J5X3RlbXBsYXRlXC5oIjogWworICAgICIr
cnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIiwKKyAgICAiK3J0Y19iYXNlL3Njb3BlZF9yZWZf
cHRyLmgiLAorICBdLAorCisgICJhdWRpb19lbmNvZGVyXC5oIjogWworICAgICIrcnRjX2Jhc2Uv
YnVmZmVyLmgiLAorICAgICIrcnRjX2Jhc2UvZGVwcmVjYXRpb24uaCIsCisgIF0sCisKKyAgImF1
ZGlvX2VuY29kZXJfZmFjdG9yeVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAor
ICBdLAorCisgICJhdWRpb19lbmNvZGVyX2ZhY3RvcnlfdGVtcGxhdGVcLmgiOiBbCisgICAgIity
dGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiLAorICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9w
dHIuaCIsCisgIF0sCisKKyAgImJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5XC5oIjogWwor
ICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIsCisgIF0sCisKKyAgImJ1aWx0aW5fYXVk
aW9fZW5jb2Rlcl9mYWN0b3J5XC5oIjogWworICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIu
aCIsCisgIF0sCisKKyAgImZyYW1lZGVjcnlwdG9yaW50ZXJmYWNlXC5oIjogWworICAgICIrcnRj
X2Jhc2UvcmVmY291bnQuaCIsCisgIF0sCisKKyAgImZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlXC5o
IjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgIF0sCisKKyAgIm9ydGNmYWN0b3J5
aW50ZXJmYWNlXC5oIjogWworICAgICIrcnRjX2Jhc2UvbmV0d29yay5oIiwKKyAgICAiK3J0Y19i
YXNlL3Njb3BlZF9yZWZfcHRyLmgiLAorICAgICIrcnRjX2Jhc2UvdGhyZWFkLmgiLAorICBdLAor
CisgICJ1ZHB0cmFuc3BvcnRpbnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9zb2NrZXRh
ZGRyZXNzLmgiLAorICBdLAorCisgICJydGNzdGF0c2NvbGxlY3RvcmNhbGxiYWNrXC5oIjogWwor
ICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0
ci5oIiwKKyAgXSwKKworICAicnRjc3RhdHNyZXBvcnRcLmgiOiBbCisgICAgIitydGNfYmFzZS9y
ZWZjb3VudC5oIiwKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIsCisgICAgIity
dGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwKKworICAiYXVkaW9wcm9jX2Zsb2F0XC5o
IjogWworICAgICIrbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vz
c2luZy5oIiwKKyAgXSwKKworICAiZmFrZV9mcmFtZV9kZWNyeXB0b3JcLmgiOiBbCisgICAgIity
dGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiLAorICBdLAorCisgICJmYWtlX2ZyYW1lX2VuY3J5
cHRvclwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIsCisgIF0sCisK
KyAgImZha2Vjb25zdHJhaW50c1wuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3N0cmluZ2VuY29kZS5o
IiwKKyAgXSwKKworICAibW9jay4qXC5oIjogWworICAgICIrdGVzdC9nbW9jay5oIiwKKyAgXSwK
KworICAic2ltdWxhdGVkX25ldHdvcmtcLmgiOiBbCisgICAgIitydGNfYmFzZS9jcml0aWNhbHNl
Y3Rpb24uaCIsCisgICAgIitydGNfYmFzZS9yYW5kb20uaCIsCisgICAgIitydGNfYmFzZS90aHJl
YWRfYW5ub3RhdGlvbnMuaCIsCisgIF0sCisKKyAgInRlc3RfZGVwZW5kZW5jeV9mYWN0b3J5XC5o
IjogWworICAgICIrcnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIsCisgIF0sCisKKyAgInZpZGVv
Y29kZWNfdGVzdF9maXh0dXJlXC5oIjogWworICAgICIrbW9kdWxlcy92aWRlb19jb2RpbmcvaW5j
bHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKKyAgXSwKKworICAiaTAxMF9idWZmZXJcLmgi
OiBbCisgICAgIitydGNfYmFzZS9tZW1vcnkvYWxpZ25lZF9tYWxsb2MuaCIKKyAgXSwKKworICAi
aTQyMF9idWZmZXJcLmgiOiBbCisgICAgIitydGNfYmFzZS9tZW1vcnkvYWxpZ25lZF9tYWxsb2Mu
aCIsCisgIF0sCisKKyAgInZpZGVvX2ZyYW1lX2J1ZmZlclwuaCI6IFsKKyAgICAiK3J0Y19iYXNl
L3JlZmNvdW50LmgiLAorICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIsCisgIF0sCisK
KyAgInZpZGVvX3RpbWluZ1wuaCI6IFsKKyAgICAiK3J0Y19iYXNlL251bWVyaWNzL3NhZmVfY29u
dmVyc2lvbnMuaCIsCisgIF0sCisKKyAgInZpZGVvX2VuY29kZXJfY29uZmlnXC5oIjogWworICAg
ICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5o
IiwKKyAgXSwKKworICAjIC5jYyBmaWxlcyBpbiBhcGkvIHNob3VsZCBub3QgYmUgcmVzdHJpY3Rl
ZCBpbiB3aGF0IHRoZXkgY2FuICNpbmNsdWRlLAorICAjIHNvIHdlIHJlLWFkZCBhbGwgdGhlIHRv
cC1sZXZlbCBkaXJlY3RvcmllcyBoZXJlLiAoVGhhdCdzIGJlY2F1c2UgLmgKKyAgIyBmaWxlcyBs
ZWFrIHRoZWlyICNpbmNsdWRlcyB0byB3aG9ldmVyJ3MgI2luY2x1ZGluZyB0aGVtLCBidXQgLmNj
IGZpbGVzCisgICMgZG8gbm90IHNpbmNlIG5vIG9uZSAjaW5jbHVkZXMgdGhlbS4pCiAgICIuKlwu
Y2MiOiBbCi0gICAgIittb2R1bGVzL2F1ZGlvX2NvZGluZyIsCi0gICAgIittb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmciLAotICAgICIrbW9kdWxlcy92aWRlb19jb2RpbmciLAorICAgICIrYXVkaW8i
LAorICAgICIrY2FsbCIsCisgICAgIitjb21tb25fYXVkaW8iLAorICAgICIrY29tbW9uX3ZpZGVv
IiwKKyAgICAiK2V4YW1wbGVzIiwKKyAgICAiK2xvZ2dpbmciLAorICAgICIrbWVkaWEiLAorICAg
ICIrbW9kdWxlcyIsCisgICAgIitwMnAiLAorICAgICIrcGMiLAorICAgICIrcnRjX2Jhc2UiLAor
ICAgICIrcnRjX3Rvb2xzIiwKKyAgICAiK3NkayIsCisgICAgIitzdGF0cyIsCisgICAgIitzeXN0
ZW1fd3JhcHBlcnMiLAorICAgICIrdGVzdCIsCisgICAgIit0b29scyIsCisgICAgIit0b29sc193
ZWJydGMiLAorICAgICIrdmlkZW8iLAorICAgICIrdGhpcmRfcGFydHkiLAogICBdLAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL09X
TkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9PV05F
UlMKaW5kZXggNTkzZGUyMzBkMzc4NzlhMjU5OGY1ODU5ZGYyZDQzMmFhY2ZiMzJiMi4uMWFlNWM2
NDZlMjMxN2FiYWUzNTQ2NGJhODNmYTNmZmUwYmUxMmEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL09XTkVSUworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvT1dORVJTCkBAIC0xMywzICsx
MywxMCBAQCBwZXItZmlsZSBwZWVyY29ubmVjdGlvbio9aGJvc0B3ZWJydGMub3JnCiAKIHBlci1m
aWxlICouZ249cGhvZ2x1bmRAd2VicnRjLm9yZwogcGVyLWZpbGUgKi5nbmk9cGhvZ2x1bmRAd2Vi
cnRjLm9yZworCitwZXItZmlsZSBERVBTPW1ib25hZGVpQHdlYnJ0Yy5vcmcKK3Blci1maWxlIERF
UFM9a3dpYmVyZ0B3ZWJydGMub3JnCisKK3Blci1maWxlIG1lZGlhX3RyYW5zcG9ydCo9c3VraGFu
b3ZAd2VicnRjLm9yZworcGVyLWZpbGUgbWVkaWFfdHJhbnNwb3J0Kj1wc2xhQHdlYnJ0Yy5vcmcK
K3Blci1maWxlIG1lZGlhX3RyYW5zcG9ydCo9bWVsbGVtQHdlYnJ0Yy5vcmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9CVUlM
RC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
by9CVUlMRC5nbgppbmRleCAyODZhNWE2ZjFjNmNmNTIzZjQyMGZlNGZmN2M5MjdiNDM5YmM1MDE1
Li5iNjZiZTc2MzQzMWY3MmIzM2YwMDBmNTQxZGNjMGMxZGExODM4OWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vQlVJTEQu
Z24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvL0JVSUxELmduCkBAIC0zOSw2ICszOSwyNyBAQCBydGNfc291cmNlX3NldCgiYWVjM19jb25m
aWciKSB7CiAgICAgImVjaG9fY2FuY2VsbGVyM19jb25maWcuY2MiLAogICAgICJlY2hvX2NhbmNl
bGxlcjNfY29uZmlnLmgiLAogICBdCisgIGRlcHMgPSBbCisgICAgIi4uLy4uL3J0Y19iYXNlOmNo
ZWNrcyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4v
Li4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRj
X2V4cG9ydCIsCisgIF0KK30KKworcnRjX3NvdXJjZV9zZXQoImFlYzNfY29uZmlnX2pzb24iKSB7
CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImVjaG9fY2FuY2Vs
bGVyM19jb25maWdfanNvbi5jYyIsCisgICAgImVjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbi5o
IiwKKyAgXQorICBkZXBzID0gWworICAgICI6YWVjM19jb25maWciLAorICAgICIuLi8uLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19qc29uIiwK
KyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAorICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzOnN0cmluZ3MiLAorICBdCiB9CiAKIHJ0Y19zb3Vy
Y2Vfc2V0KCJhZWMzX2ZhY3RvcnkiKSB7CkBAIC01NCw2ICs3NSw3IEBAIHJ0Y19zb3VyY2Vfc2V0
KCJhZWMzX2ZhY3RvcnkiKSB7CiAgICAgIjplY2hvX2NvbnRyb2wiLAogICAgICIuLi8uLi9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNl
X2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8v
ZWNob19jYW5jZWxsZXIzX2NvbmZpZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmNjCmluZGV4IDNi
MDNkMTNjMWNhNTFkOTEzZTllZTg0Mjk4NTlhNWUzMTUyOWMxMTAuLjNlYjJhOGQyYTAwOWI4ZmUx
YTRlZjg3MGU3NmRjZTQ3MDkxODkyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
by9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmNjCkBAIC05LDcgKzksMzYgQEAKICAqLwogI2luY2x1
ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCiAKKyNpbmNsdWRlIDxhbGdv
cml0aG0+CisjaW5jbHVkZSA8Y21hdGg+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgorCiBuYW1lc3BhY2Ug
d2VicnRjIHsKK25hbWVzcGFjZSB7Citib29sIExpbWl0KGZsb2F0KiB2YWx1ZSwgZmxvYXQgbWlu
LCBmbG9hdCBtYXgpIHsKKyAgZmxvYXQgY2xhbXBlZCA9IHJ0Yzo6U2FmZUNsYW1wKCp2YWx1ZSwg
bWluLCBtYXgpOworICBjbGFtcGVkID0gc3RkOjppc2Zpbml0ZShjbGFtcGVkKSA/IGNsYW1wZWQg
OiBtaW47CisgIGJvb2wgcmVzID0gKnZhbHVlID09IGNsYW1wZWQ7CisgICp2YWx1ZSA9IGNsYW1w
ZWQ7CisgIHJldHVybiByZXM7Cit9CisKK2Jvb2wgTGltaXQoc2l6ZV90KiB2YWx1ZSwgc2l6ZV90
IG1pbiwgc2l6ZV90IG1heCkgeworICBzaXplX3QgY2xhbXBlZCA9IHJ0Yzo6U2FmZUNsYW1wKCp2
YWx1ZSwgbWluLCBtYXgpOworICBib29sIHJlcyA9ICp2YWx1ZSA9PSBjbGFtcGVkOworICAqdmFs
dWUgPSBjbGFtcGVkOworICByZXR1cm4gcmVzOworfQorCitib29sIExpbWl0KGludCogdmFsdWUs
IGludCBtaW4sIGludCBtYXgpIHsKKyAgaW50IGNsYW1wZWQgPSBydGM6OlNhZmVDbGFtcCgqdmFs
dWUsIG1pbiwgbWF4KTsKKyAgYm9vbCByZXMgPSAqdmFsdWUgPT0gY2xhbXBlZDsKKyAgKnZhbHVl
ID0gY2xhbXBlZDsKKyAgcmV0dXJuIHJlczsKK30KK30gIC8vIG5hbWVzcGFjZQogCiBFY2hvQ2Fu
Y2VsbGVyM0NvbmZpZzo6RWNob0NhbmNlbGxlcjNDb25maWcoKSA9IGRlZmF1bHQ7CiBFY2hvQ2Fu
Y2VsbGVyM0NvbmZpZzo6RWNob0NhbmNlbGxlcjNDb25maWcoY29uc3QgRWNob0NhbmNlbGxlcjND
b25maWcmIGUpID0KQEAgLTE4LDkgKzQ3LDYgQEAgRWNob0NhbmNlbGxlcjNDb25maWc6OkRlbGF5
OjpEZWxheSgpID0gZGVmYXVsdDsKIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpEZWxheTo6RGVsYXko
Y29uc3QgRWNob0NhbmNlbGxlcjNDb25maWc6OkRlbGF5JiBlKSA9CiAgICAgZGVmYXVsdDsKIAot
RWNob0NhbmNlbGxlcjNDb25maWc6Ok1hc2s6Ok1hc2soKSA9IGRlZmF1bHQ7Ci1FY2hvQ2FuY2Vs
bGVyM0NvbmZpZzo6TWFzazo6TWFzayhjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6TWFzayYg
bSkgPSBkZWZhdWx0OwotCiBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RWNob01vZGVsOjpFY2hvTW9k
ZWwoKSA9IGRlZmF1bHQ7CiBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RWNob01vZGVsOjpFY2hvTW9k
ZWwoCiAgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWc6OkVjaG9Nb2RlbCYgZSkgPSBkZWZh
dWx0OwpAQCAtNTEsNCArNzcsMTc5IEBAIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29y
OjpUdW5pbmc6OlR1bmluZyhNYXNraW5nVGhyZXNob2xkcyBtYXNrX2xmLAogRWNob0NhbmNlbGxl
cjNDb25maWc6OlN1cHByZXNzb3I6OlR1bmluZzo6VHVuaW5nKAogICAgIGNvbnN0IEVjaG9DYW5j
ZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpUdW5pbmcmIGUpID0gZGVmYXVsdDsKIAorYm9vbCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZzo6VmFsaWRhdGUoRWNob0NhbmNlbGxlcjNDb25maWcqIGNvbmZp
ZykgeworICBSVENfRENIRUNLKGNvbmZpZyk7CisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKiBjID0g
Y29uZmlnOworICBib29sIHJlcyA9IHRydWU7CisKKyAgaWYgKGMtPmRlbGF5LmRvd25fc2FtcGxp
bmdfZmFjdG9yICE9IDQgJiYKKyAgICAgIGMtPmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9yICE9
IDgpIHsKKyAgICBjLT5kZWxheS5kb3duX3NhbXBsaW5nX2ZhY3RvciA9IDQ7CisgICAgcmVzID0g
ZmFsc2U7CisgIH0KKyAgaWYgKGMtPmRlbGF5LmRlbGF5X2hlYWRyb29tX2Jsb2NrcyA8PSAxICYm
CisgICAgICBjLT5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzID09IDEpIHsKKyAgICBj
LT5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzID0gMDsKKyAgICByZXMgPSBmYWxzZTsK
KyAgfQorICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZGVsYXkuZGVmYXVsdF9kZWxheSwgMCwgNTAw
MCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5kZWxheS5udW1fZmlsdGVycywgMCwgNTAwMCk7
CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5kZWxheS5hcGlfY2FsbF9qaXR0ZXJfYmxvY2tzLCAx
LCA1MDAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmRlbGF5Lm1pbl9lY2hvX3BhdGhfZGVs
YXlfYmxvY2tzLCAwLCA1MDAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmRlbGF5LmRlbGF5
X2hlYWRyb29tX2Jsb2NrcywgMCwgNTAwMCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5kZWxh
eS5oeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzLCAwLCA1MDAwKTsKKyAgcmVzID0gcmVzICYgTGlt
aXQoJmMtPmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3MsIDAsIDUwMDApOworICByZXMg
PSByZXMgJiBMaW1pdCgmYy0+ZGVsYXkuc2tld19oeXN0ZXJlc2lzX2Jsb2NrcywgMCwgNTAwMCk7
CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5kZWxheS5maXhlZF9jYXB0dXJlX2RlbGF5X3NhbXBs
ZXMsIDAsIDUwMDApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZGVsYXkuZGVsYXlfZXN0aW1h
dGVfc21vb3RoaW5nLCAwLmYsIDEuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5kZWxheS5k
ZWxheV9jYW5kaWRhdGVfZGV0ZWN0aW9uX3RocmVzaG9sZCwgMC5mLCAxLmYpOworICByZXMgPSBy
ZXMgJiBMaW1pdCgmYy0+ZGVsYXkuZGVsYXlfc2VsZWN0aW9uX3RocmVzaG9sZHMuaW5pdGlhbCwg
MSwgMjUwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmRlbGF5LmRlbGF5X3NlbGVjdGlvbl90
aHJlc2hvbGRzLmNvbnZlcmdlZCwgMSwgMjUwKTsKKworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+
ZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2NrcywgMSwgNTApOworICByZXMgPSByZXMgJiBMaW1pdCgm
Yy0+ZmlsdGVyLm1haW4ubGVha2FnZV9jb252ZXJnZWQsIDAuZiwgMTAwMC5mKTsKKyAgcmVzID0g
cmVzICYgTGltaXQoJmMtPmZpbHRlci5tYWluLmxlYWthZ2VfZGl2ZXJnZWQsIDAuZiwgMTAwMC5m
KTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5tYWluLmVycm9yX2Zsb29yLCAwLmYs
IDEwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIubWFpbi5lcnJvcl9jZWls
LCAwLmYsIDEwMDAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5tYWlu
Lm5vaXNlX2dhdGUsIDAuZiwgMTAwMDAwMDAwLmYpOworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZj
LT5maWx0ZXIubWFpbl9pbml0aWFsLmxlbmd0aF9ibG9ja3MsIDEsIDUwKTsKKyAgcmVzID0gcmVz
ICYgTGltaXQoJmMtPmZpbHRlci5tYWluX2luaXRpYWwubGVha2FnZV9jb252ZXJnZWQsIDAuZiwg
MTAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5tYWluX2luaXRpYWwubGVh
a2FnZV9kaXZlcmdlZCwgMC5mLCAxMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+Zmls
dGVyLm1haW5faW5pdGlhbC5lcnJvcl9mbG9vciwgMC5mLCAxMDAwLmYpOworICByZXMgPSByZXMg
JiBMaW1pdCgmYy0+ZmlsdGVyLm1haW5faW5pdGlhbC5lcnJvcl9jZWlsLCAwLmYsIDEwMDAwMDAw
MC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5tYWluX2luaXRpYWwubm9pc2Vf
Z2F0ZSwgMC5mLCAxMDAwMDAwMDAuZik7CisKKyAgaWYgKGMtPmZpbHRlci5tYWluLmxlbmd0aF9i
bG9ja3MgPCBjLT5maWx0ZXIubWFpbl9pbml0aWFsLmxlbmd0aF9ibG9ja3MpIHsKKyAgICBjLT5m
aWx0ZXIubWFpbl9pbml0aWFsLmxlbmd0aF9ibG9ja3MgPSBjLT5maWx0ZXIubWFpbi5sZW5ndGhf
YmxvY2tzOworICAgIHJlcyA9IGZhbHNlOworICB9CisKKyAgcmVzID0gcmVzICYgTGltaXQoJmMt
PmZpbHRlci5zaGFkb3cubGVuZ3RoX2Jsb2NrcywgMSwgNTApOworICByZXMgPSByZXMgJiBMaW1p
dCgmYy0+ZmlsdGVyLnNoYWRvdy5yYXRlLCAwLmYsIDEuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0
KCZjLT5maWx0ZXIuc2hhZG93Lm5vaXNlX2dhdGUsIDAuZiwgMTAwMDAwMDAwLmYpOworCisgIHJl
cyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIuc2hhZG93X2luaXRpYWwubGVuZ3RoX2Jsb2Nrcywg
MSwgNTApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLnNoYWRvd19pbml0aWFsLnJh
dGUsIDAuZiwgMS5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5zaGFkb3dfaW5p
dGlhbC5ub2lzZV9nYXRlLCAwLmYsIDEwMDAwMDAwMC5mKTsKKworICBpZiAoYy0+ZmlsdGVyLnNo
YWRvdy5sZW5ndGhfYmxvY2tzIDwgYy0+ZmlsdGVyLnNoYWRvd19pbml0aWFsLmxlbmd0aF9ibG9j
a3MpIHsKKyAgICBjLT5maWx0ZXIuc2hhZG93X2luaXRpYWwubGVuZ3RoX2Jsb2NrcyA9IGMtPmZp
bHRlci5zaGFkb3cubGVuZ3RoX2Jsb2NrczsKKyAgICByZXMgPSBmYWxzZTsKKyAgfQorCisgIHJl
cyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIuY29uZmlnX2NoYW5nZV9kdXJhdGlvbl9ibG9ja3Ms
IDAsIDEwMDAwMCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIuaW5pdGlhbF9zdGF0
ZV9zZWNvbmRzLCAwLmYsIDEwMC5mKTsKKworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZXJsZS5t
aW4sIDEuZiwgMTAwMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZXJsZS5tYXhfbCwg
MS5mLCAxMDAwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lcmxlLm1heF9oLCAxLmYs
IDEwMDAwMC5mKTsKKyAgaWYgKGMtPmVybGUubWluID4gYy0+ZXJsZS5tYXhfbCB8fCBjLT5lcmxl
Lm1pbiA+IGMtPmVybGUubWF4X2gpIHsKKyAgICBjLT5lcmxlLm1pbiA9IHN0ZDo6bWluKGMtPmVy
bGUubWF4X2wsIGMtPmVybGUubWF4X2gpOworICAgIHJlcyA9IGZhbHNlOworICB9CisgIHJlcyA9
IHJlcyAmIExpbWl0KCZjLT5lcmxlLm51bV9zZWN0aW9ucywgMSwgYy0+ZmlsdGVyLm1haW4ubGVu
Z3RoX2Jsb2Nrcyk7CisKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVwX3N0cmVuZ3RoLmxmLCAw
LmYsIDEwMDAwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lcF9zdHJlbmd0aC5tZiwg
MC5mLCAxMDAwMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZXBfc3RyZW5ndGguaGYs
IDAuZiwgMTAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVwX3N0cmVuZ3RoLmRl
ZmF1bHRfbGVuLCAtMS5mLCAxLmYpOworCisgIHJlcyA9CisgICAgICByZXMgJiBMaW1pdCgmYy0+
ZWNob19hdWRpYmlsaXR5Lmxvd19yZW5kZXJfbGltaXQsIDAuZiwgMzI3NjguZiAqIDMyNzY4LmYp
OworICByZXMgPSByZXMgJgorICAgICAgICBMaW1pdCgmYy0+ZWNob19hdWRpYmlsaXR5Lm5vcm1h
bF9yZW5kZXJfbGltaXQsIDAuZiwgMzI3NjguZiAqIDMyNzY4LmYpOworICByZXMgPSByZXMgJiBM
aW1pdCgmYy0+ZWNob19hdWRpYmlsaXR5LmZsb29yX3Bvd2VyLCAwLmYsIDMyNzY4LmYgKiAzMjc2
OC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fYXVkaWJpbGl0eS5hdWRpYmlsaXR5
X3RocmVzaG9sZF9sZiwgMC5mLAorICAgICAgICAgICAgICAgICAgICAzMjc2OC5mICogMzI3Njgu
Zik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90
aHJlc2hvbGRfbWYsIDAuZiwKKyAgICAgICAgICAgICAgICAgICAgMzI3NjguZiAqIDMyNzY4LmYp
OworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19hdWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhy
ZXNob2xkX2hmLCAwLmYsCisgICAgICAgICAgICAgICAgICAgIDMyNzY4LmYgKiAzMjc2OC5mKTsK
KworICByZXMgPSByZXMgJgorICAgICAgICBMaW1pdCgmYy0+cmVuZGVyX2xldmVscy5hY3RpdmVf
cmVuZGVyX2xpbWl0LCAwLmYsIDMyNzY4LmYgKiAzMjc2OC5mKTsKKyAgcmVzID0gcmVzICYgTGlt
aXQoJmMtPnJlbmRlcl9sZXZlbHMucG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdCwgMC5mLAor
ICAgICAgICAgICAgICAgICAgICAzMjc2OC5mICogMzI3NjguZik7CisgIHJlcyA9IHJlcyAmIExp
bWl0KCZjLT5yZW5kZXJfbGV2ZWxzLnBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGltaXRfZHM4LCAw
LmYsCisgICAgICAgICAgICAgICAgICAgIDMyNzY4LmYgKiAzMjc2OC5mKTsKKworICByZXMgPQor
ICAgICAgcmVzICYgTGltaXQoJmMtPmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmlu
aXRpYWxfZ2FpbiwgMC5mLCAxLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19yZW1v
dmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZmlyc3Rfbm9uX3plcm9fZ2FpbiwKKyAgICAgICAgICAg
ICAgICAgICAgMC5mLCAxLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19yZW1vdmFs
X2NvbnRyb2wuZ2Fpbl9yYW1wdXAubm9uX3plcm9fZ2Fpbl9ibG9ja3MsCisgICAgICAgICAgICAg
ICAgICAgIDAsIDEwMDAwMCk7CisgIHJlcyA9IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5lY2hv
X3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5mdWxsX2dhaW5fYmxvY2tzLCAwLCAxMDAwMDAp
OworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX21vZGVsLm5vaXNlX2Zsb29yX2hvbGQs
IDAsIDEwMDApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19tb2RlbC5taW5fbm9pc2Vf
Zmxvb3JfcG93ZXIsIDAsIDIwMDAwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hv
X21vZGVsLnN0YXRpb25hcnlfZ2F0ZV9zbG9wZSwgMCwgMTAwMDAwMC5mKTsKKyAgcmVzID0gcmVz
ICYgTGltaXQoJmMtPmVjaG9fbW9kZWwubm9pc2VfZ2F0ZV9wb3dlciwgMCwgMTAwMDAwMC5mKTsK
KyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9kZWwubm9pc2VfZ2F0ZV9zbG9wZSwgMCwg
MTAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9kZWwucmVuZGVyX3By
ZV93aW5kb3dfc2l6ZSwgMCwgMTAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9k
ZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemUsIDAsIDEwMCk7CisgIHJlcyA9IHJlcyAmIExpbWl0
KCZjLT5lY2hvX21vZGVsLnJlbmRlcl9wcmVfd2luZG93X3NpemVfaW5pdCwgMCwgMTAwKTsKKyAg
cmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemVf
aW5pdCwgMCwgMTAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9kZWwubm9ubGlu
ZWFyX2hvbGQsIDAsIDEwMCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX21vZGVsLm5v
bmxpbmVhcl9yZWxlYXNlLCAwLCAxLmYpOworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5zdXBw
cmVzc29yLm5lYXJlbmRfYXZlcmFnZV9ibG9ja3MsIDEsIDUwMDApOworCisgIHJlcyA9IHJlcyAm
CisgICAgICAgIExpbWl0KCZjLT5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19sZi5lbnJf
dHJhbnNwYXJlbnQsIDAuZiwgMTAwLmYpOworICByZXMgPSByZXMgJgorICAgICAgICBMaW1pdCgm
Yy0+c3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfbGYuZW5yX3N1cHByZXNzLCAwLmYsIDEw
MC5mKTsKKyAgcmVzID0gcmVzICYKKyAgICAgICAgTGltaXQoJmMtPnN1cHByZXNzb3Iubm9ybWFs
X3R1bmluZy5tYXNrX2xmLmVtcl90cmFuc3BhcmVudCwgMC5mLCAxMDAuZik7CisgIHJlcyA9IHJl
cyAmCisgICAgICAgIExpbWl0KCZjLT5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5l
bnJfdHJhbnNwYXJlbnQsIDAuZiwgMTAwLmYpOworICByZXMgPSByZXMgJgorICAgICAgICBMaW1p
dCgmYy0+c3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYuZW5yX3N1cHByZXNzLCAwLmYs
IDEwMC5mKTsKKyAgcmVzID0gcmVzICYKKyAgICAgICAgTGltaXQoJmMtPnN1cHByZXNzb3Iubm9y
bWFsX3R1bmluZy5tYXNrX2hmLmVtcl90cmFuc3BhcmVudCwgMC5mLCAxMDAuZik7CisgIHJlcyA9
IHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWF4X2luY19mYWN0b3Is
IDAuZiwgMTAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5ub3JtYWxf
dHVuaW5nLm1heF9kZWNfZmFjdG9yX2xmLCAwLmYsIDEwMC5mKTsKKworICByZXMgPSByZXMgJiBM
aW1pdCgmYy0+c3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2xmLmVucl90cmFuc3BhcmVu
dCwgMC5mLAorICAgICAgICAgICAgICAgICAgICAxMDAuZik7CisgIHJlcyA9IHJlcyAmCisgICAg
ICAgIExpbWl0KCZjLT5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfbGYuZW5yX3N1cHBy
ZXNzLCAwLmYsIDEwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPnN1cHByZXNzb3IubmVh
cmVuZF90dW5pbmcubWFza19sZi5lbXJfdHJhbnNwYXJlbnQsIDAuZiwKKyAgICAgICAgICAgICAg
ICAgICAgMTAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5uZWFyZW5k
X3R1bmluZy5tYXNrX2hmLmVucl90cmFuc3BhcmVudCwgMC5mLAorICAgICAgICAgICAgICAgICAg
ICAxMDAuZik7CisgIHJlcyA9IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5zdXBwcmVzc29yLm5l
YXJlbmRfdHVuaW5nLm1hc2tfaGYuZW5yX3N1cHByZXNzLCAwLmYsIDEwMC5mKTsKKyAgcmVzID0g
cmVzICYgTGltaXQoJmMtPnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19oZi5lbXJfdHJh
bnNwYXJlbnQsIDAuZiwKKyAgICAgICAgICAgICAgICAgICAgMTAwLmYpOworICByZXMgPSByZXMg
JiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXhfaW5jX2ZhY3RvciwgMC5m
LCAxMDAuZik7CisgIHJlcyA9CisgICAgICByZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5uZWFy
ZW5kX3R1bmluZy5tYXhfZGVjX2ZhY3Rvcl9sZiwgMC5mLCAxMDAuZik7CisKKyAgcmVzID0gcmVz
ICYgTGltaXQoJmMtPnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uZW5yX3Ro
cmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgMC5mLCAxMDAwMDAwLmYpOworICByZXMgPSBy
ZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5zbnJf
dGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAwLmYsIDEwMDAwMDAuZik7CisgIHJlcyA9
IHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmhv
bGRfZHVyYXRpb24sIDAsCisgICAgICAgICAgICAgICAgICAgIDEwMDAwKTsKKyAgcmVzID0gcmVz
ICYgTGltaXQoJmMtPnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24udHJpZ2dl
cl90aHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgIDAsIDEwMDAwKTsKKworICByZXMgPSBy
ZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5oaWdoX2JhbmRzX3N1cHByZXNzaW9uLmVucl90aHJl
c2hvbGQsIDAuZiwKKyAgICAgICAgICAgICAgICAgICAgMTAwMDAwMC5mKTsKKyAgcmVzID0gcmVz
ICYgTGltaXQoJmMtPnN1cHByZXNzb3IuaGlnaF9iYW5kc19zdXBwcmVzc2lvbi5tYXhfZ2Fpbl9k
dXJpbmdfZWNobywKKyAgICAgICAgICAgICAgICAgICAgMC5mLCAxLmYpOworCisgIHJlcyA9IHJl
cyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLmZsb29yX2ZpcnN0X2luY3JlYXNlLCAwLmYsIDEwMDAw
MDAuZik7CisKKyAgaWYgKGMtPmRlbGF5LmRlbGF5X2hlYWRyb29tX2Jsb2NrcyA+CisgICAgICBj
LT5maWx0ZXIubWFpbl9pbml0aWFsLmxlbmd0aF9ibG9ja3MgLSAxKSB7CisgICAgYy0+ZGVsYXku
ZGVsYXlfaGVhZHJvb21fYmxvY2tzID0gYy0+ZmlsdGVyLm1haW5faW5pdGlhbC5sZW5ndGhfYmxv
Y2tzIC0gMTsKKyAgICByZXMgPSBmYWxzZTsKKyAgfQorCisgIHJldHVybiByZXM7Cit9CiB9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2Fu
Y2VsbGVyM19jb25maWcuaAppbmRleCBlNzM3NmVkN2JjZDNjNGViOWM4MjZjNDM0NDE3MjA1MWFk
NmViZGQ1Li5lYTZlNTFiYWY5YzUzZDEyMzZmMDc1OTU1NmIyNmUyZDkyMWFjNzY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8v
ZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgKQEAgLTEz
LDE4ICsxMywzMSBAQAogCiAjaW5jbHVkZSA8c3RkZGVmLmg+ICAvLyBzaXplX3QKIAorI2luY2x1
ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewog
CiAvLyBDb25maWd1cmF0aW9uIHN0cnVjdCBmb3IgRWNob0NhbmNlbGxlcjMKLXN0cnVjdCBFY2hv
Q2FuY2VsbGVyM0NvbmZpZyB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBFY2hvQ2FuY2VsbGVyM0NvbmZp
ZyB7CisgIC8vIENoZWNrcyBhbmQgdXBkYXRlcyB0aGUgY29uZmlnIHBhcmFtZXRlcnMgdG8gbGll
IHdpdGhpbiAobW9zdGx5KSByZWFzb25hYmxlCisgIC8vIHJhbmdlcy4gUmV0dXJucyB0cnVlIGlm
IGFuZCBvbmx5IG9mIHRoZSBjb25maWcgZGlkIG5vdCBuZWVkIHRvIGJlIGNoYW5nZWQuCisgIHN0
YXRpYyBib29sIFZhbGlkYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKiBjb25maWcpOworCiAgIEVj
aG9DYW5jZWxsZXIzQ29uZmlnKCk7CiAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKGNvbnN0IEVjaG9D
YW5jZWxsZXIzQ29uZmlnJiBlKTsKKworICBzdHJ1Y3QgQnVmZmVyaW5nIHsKKyAgICBib29sIHVz
ZV9uZXdfcmVuZGVyX2J1ZmZlcmluZyA9IHRydWU7CisgICAgc2l6ZV90IGV4Y2Vzc19yZW5kZXJf
ZGV0ZWN0aW9uX2ludGVydmFsX2Jsb2NrcyA9IDI1MDsKKyAgICBzaXplX3QgbWF4X2FsbG93ZWRf
ZXhjZXNzX3JlbmRlcl9ibG9ja3MgPSA4OworICB9IGJ1ZmZlcmluZzsKKwogICBzdHJ1Y3QgRGVs
YXkgewogICAgIERlbGF5KCk7CiAgICAgRGVsYXkoY29uc3QgRGVsYXkmIGUpOwogICAgIHNpemVf
dCBkZWZhdWx0X2RlbGF5ID0gNTsKICAgICBzaXplX3QgZG93bl9zYW1wbGluZ19mYWN0b3IgPSA0
OwotICAgIHNpemVfdCBudW1fZmlsdGVycyA9IDY7CisgICAgc2l6ZV90IG51bV9maWx0ZXJzID0g
NTsKICAgICBzaXplX3QgYXBpX2NhbGxfaml0dGVyX2Jsb2NrcyA9IDI2OwogICAgIHNpemVfdCBt
aW5fZWNob19wYXRoX2RlbGF5X2Jsb2NrcyA9IDA7CiAgICAgc2l6ZV90IGRlbGF5X2hlYWRyb29t
X2Jsb2NrcyA9IDI7CkBAIC0zNyw3ICs1MCw3IEBAIHN0cnVjdCBFY2hvQ2FuY2VsbGVyM0NvbmZp
ZyB7CiAgICAgc3RydWN0IERlbGF5U2VsZWN0aW9uVGhyZXNob2xkcyB7CiAgICAgICBpbnQgaW5p
dGlhbDsKICAgICAgIGludCBjb252ZXJnZWQ7Ci0gICAgfSBkZWxheV9zZWxlY3Rpb25fdGhyZXNo
b2xkcyA9IHsyNSwgMjV9OworICAgIH0gZGVsYXlfc2VsZWN0aW9uX3RocmVzaG9sZHMgPSB7NSwg
MjB9OwogICB9IGRlbGF5OwogCiAgIHN0cnVjdCBGaWx0ZXIgewpAQCAtNDYsNiArNTksNyBAQCBz
dHJ1Y3QgRWNob0NhbmNlbGxlcjNDb25maWcgewogICAgICAgZmxvYXQgbGVha2FnZV9jb252ZXJn
ZWQ7CiAgICAgICBmbG9hdCBsZWFrYWdlX2RpdmVyZ2VkOwogICAgICAgZmxvYXQgZXJyb3JfZmxv
b3I7CisgICAgICBmbG9hdCBlcnJvcl9jZWlsOwogICAgICAgZmxvYXQgbm9pc2VfZ2F0ZTsKICAg
ICB9OwogCkBAIC01NSwxMCArNjksMTEgQEAgc3RydWN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnIHsK
ICAgICAgIGZsb2F0IG5vaXNlX2dhdGU7CiAgICAgfTsKIAotICAgIE1haW5Db25maWd1cmF0aW9u
IG1haW4gPSB7MTMsIDAuMDAwMDVmLCAwLjAxZiwgMC4xZiwgMjAwNzUzNDQuZn07CisgICAgTWFp
bkNvbmZpZ3VyYXRpb24gbWFpbiA9IHsxMywgMC4wMDAwNWYsIDAuMDVmLCAwLjAwMWYsIDIuZiwg
MjAwNzUzNDQuZn07CiAgICAgU2hhZG93Q29uZmlndXJhdGlvbiBzaGFkb3cgPSB7MTMsIDAuN2Ys
IDIwMDc1MzQ0LmZ9OwogCi0gICAgTWFpbkNvbmZpZ3VyYXRpb24gbWFpbl9pbml0aWFsID0gezEy
LCAwLjAwNWYsIDAuNWYsIDAuMDAxZiwgMjAwNzUzNDQuZn07CisgICAgTWFpbkNvbmZpZ3VyYXRp
b24gbWFpbl9pbml0aWFsID0gezEyLCAgICAgMC4wMDVmLCAwLjVmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjAwMWYsIDIuZiwgICAgMjAwNzUzNDQuZn07CiAgICAg
U2hhZG93Q29uZmlndXJhdGlvbiBzaGFkb3dfaW5pdGlhbCA9IHsxMiwgMC45ZiwgMjAwNzUzNDQu
Zn07CiAKICAgICBzaXplX3QgY29uZmlnX2NoYW5nZV9kdXJhdGlvbl9ibG9ja3MgPSAyNTA7CkBA
IC03MiwzOCArODcsMTkgQEAgc3RydWN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnIHsKICAgICBmbG9h
dCBtYXhfbCA9IDQuZjsKICAgICBmbG9hdCBtYXhfaCA9IDEuNWY7CiAgICAgYm9vbCBvbnNldF9k
ZXRlY3Rpb24gPSB0cnVlOworICAgIHNpemVfdCBudW1fc2VjdGlvbnMgPSAxOwogICB9IGVybGU7
CiAKICAgc3RydWN0IEVwU3RyZW5ndGggewogICAgIGZsb2F0IGxmID0gMS5mOwogICAgIGZsb2F0
IG1mID0gMS5mOwogICAgIGZsb2F0IGhmID0gMS5mOwotICAgIGZsb2F0IGRlZmF1bHRfbGVuID0g
MC44OGY7CisgICAgZmxvYXQgZGVmYXVsdF9sZW4gPSAwLjgzZjsKICAgICBib29sIHJldmVyYl9i
YXNlZF9vbl9yZW5kZXIgPSB0cnVlOwogICAgIGJvb2wgZWNob19jYW5fc2F0dXJhdGUgPSB0cnVl
OwogICAgIGJvb2wgYm91bmRlZF9lcmwgPSBmYWxzZTsKICAgfSBlcF9zdHJlbmd0aDsKIAotICBz
dHJ1Y3QgTWFzayB7Ci0gICAgTWFzaygpOwotICAgIE1hc2soY29uc3QgTWFzayYgbSk7Ci0gICAg
ZmxvYXQgbTAgPSAwLjFmOwotICAgIGZsb2F0IG0xID0gMC4wMWY7Ci0gICAgZmxvYXQgbTIgPSAw
LjAwMDFmOwotICAgIGZsb2F0IG0zID0gMC4wMWY7Ci0gICAgZmxvYXQgbTUgPSAwLjAxZjsKLSAg
ICBmbG9hdCBtNiA9IDAuMDAwMWY7Ci0gICAgZmxvYXQgbTcgPSAwLjAxZjsKLSAgICBmbG9hdCBt
OCA9IDAuMDAwMWY7Ci0gICAgZmxvYXQgbTkgPSAwLjFmOwotCi0gICAgZmxvYXQgZ2Fpbl9jdXJ2
ZV9vZmZzZXQgPSAxLjQ1ZjsKLSAgICBmbG9hdCBnYWluX2N1cnZlX3Nsb3BlID0gNS5mOwotICAg
IGZsb2F0IHRlbXBvcmFsX21hc2tpbmdfbGYgPSAwLjlmOwotICAgIGZsb2F0IHRlbXBvcmFsX21h
c2tpbmdfaGYgPSAwLjZmOwotICAgIHNpemVfdCB0ZW1wb3JhbF9tYXNraW5nX2xmX2JhbmRzID0g
MzsKLSAgfSBnYWluX21hc2s7Ci0KICAgc3RydWN0IEVjaG9BdWRpYmlsaXR5IHsKICAgICBmbG9h
dCBsb3dfcmVuZGVyX2xpbWl0ID0gNCAqIDY0LmY7CiAgICAgZmxvYXQgbm9ybWFsX3JlbmRlcl9s
aW1pdCA9IDY0LmY7CkBAIC0xMTEsNyArMTA3LDcgQEAgc3RydWN0IEVjaG9DYW5jZWxsZXIzQ29u
ZmlnIHsKICAgICBmbG9hdCBhdWRpYmlsaXR5X3RocmVzaG9sZF9sZiA9IDEwOwogICAgIGZsb2F0
IGF1ZGliaWxpdHlfdGhyZXNob2xkX21mID0gMTA7CiAgICAgZmxvYXQgYXVkaWJpbGl0eV90aHJl
c2hvbGRfaGYgPSAxMDsKLSAgICBib29sIHVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXMgPSB0cnVl
OworICAgIGJvb2wgdXNlX3N0YXRpb25hcnlfcHJvcGVydGllcyA9IGZhbHNlOwogICAgIGJvb2wg
dXNlX3N0YXRpb25hcml0eV9wcm9wZXJ0aWVzX2F0X2luaXQgPSBmYWxzZTsKICAgfSBlY2hvX2F1
ZGliaWxpdHk7CiAKQEAgLTE3NiwyMCArMTcyLDIyIEBAIHN0cnVjdCBFY2hvQ2FuY2VsbGVyM0Nv
bmZpZyB7CiAgICAgICBmbG9hdCBtYXhfZGVjX2ZhY3Rvcl9sZjsKICAgICB9OwogCi0gICAgVHVu
aW5nIG5vcm1hbF90dW5pbmcgPSBUdW5pbmcoTWFza2luZ1RocmVzaG9sZHMoLjJmLCAuM2YsIC4z
ZiksCisgICAgVHVuaW5nIG5vcm1hbF90dW5pbmcgPSBUdW5pbmcoTWFza2luZ1RocmVzaG9sZHMo
LjNmLCAuNGYsIC4zZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFza2lu
Z1RocmVzaG9sZHMoLjA3ZiwgLjFmLCAuM2YpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIuMGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNWYpOwot
ICAgIFR1bmluZyBuZWFyZW5kX3R1bmluZyA9IFR1bmluZyhNYXNraW5nVGhyZXNob2xkcyguMmYs
IC4zZiwgLjNmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFza2luZ1Ro
cmVzaG9sZHMoLjA3ZiwgLjFmLCAuM2YpLAorICAgIFR1bmluZyBuZWFyZW5kX3R1bmluZyA9IFR1
bmluZyhNYXNraW5nVGhyZXNob2xkcygxLjA5ZiwgMS4xZiwgLjNmKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWFza2luZ1RocmVzaG9sZHMoLjFmLCAuM2YsIC4zZiksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMGYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMjVmKTsKIAogICAgIHN0cnVjdCBEb21pbmFudE5lYXJlbmRE
ZXRlY3Rpb24gewotICAgICAgZmxvYXQgZW5yX3RocmVzaG9sZCA9IDEwLmY7Ci0gICAgICBmbG9h
dCBzbnJfdGhyZXNob2xkID0gMTAuZjsKLSAgICAgIGludCBob2xkX2R1cmF0aW9uID0gMjU7Ci0g
ICAgICBpbnQgdHJpZ2dlcl90aHJlc2hvbGQgPSAxNTsKKyAgICAgIGZsb2F0IGVucl90aHJlc2hv
bGQgPSA0LmY7CisgICAgICBmbG9hdCBlbnJfZXhpdF90aHJlc2hvbGQgPSAuMWY7CisgICAgICBm
bG9hdCBzbnJfdGhyZXNob2xkID0gMzAuZjsKKyAgICAgIGludCBob2xkX2R1cmF0aW9uID0gNTA7
CisgICAgICBpbnQgdHJpZ2dlcl90aHJlc2hvbGQgPSAxMjsKKyAgICAgIGJvb2wgdXNlX2R1cmlu
Z19pbml0aWFsX3BoYXNlID0gdHJ1ZTsKICAgICB9IGRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9u
OwogCiAgICAgc3RydWN0IEhpZ2hCYW5kc1N1cHByZXNzaW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNl
bGxlcjNfY29uZmlnX2pzb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZ19qc29uLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAxYTgzMWNiNGM5OTYwODJjY2EwODI1NWRmNWRiODRlZmZiMWVkZjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZ19qc29uLmNjCkBAIC0wLDAgKzEsNTgzIEBACisvKgor
ICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2Nv
bmZpZ19qc29uLmgiCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mv
anNvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKKwor
bmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2Ugewordm9pZCBSZWFkUGFyYW0oY29uc3QgSnNv
bjo6VmFsdWUmIHJvb3QsIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUsIGJvb2wqIHBhcmFtKSB7Cisg
IFJUQ19EQ0hFQ0socGFyYW0pOworICBib29sIHY7CisgIGlmIChydGM6OkdldEJvb2xGcm9tSnNv
bk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmdikpIHsKKyAgICAqcGFyYW0gPSB2OworICB9Cit9
CisKK3ZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVlJiByb290LCBzdGQ6OnN0cmluZyBw
YXJhbV9uYW1lLCBzaXplX3QqIHBhcmFtKSB7CisgIFJUQ19EQ0hFQ0socGFyYW0pOworICBpbnQg
djsKKyAgaWYgKHJ0Yzo6R2V0SW50RnJvbUpzb25PYmplY3Qocm9vdCwgcGFyYW1fbmFtZSwgJnYp
KSB7CisgICAgUlRDX0RDSEVDS19HRSh2LCAwKTsKKyAgICAqcGFyYW0gPSB2OworICB9Cit9CisK
K3ZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVlJiByb290LCBzdGQ6OnN0cmluZyBwYXJh
bV9uYW1lLCBpbnQqIHBhcmFtKSB7CisgIFJUQ19EQ0hFQ0socGFyYW0pOworICBpbnQgdjsKKyAg
aWYgKHJ0Yzo6R2V0SW50RnJvbUpzb25PYmplY3Qocm9vdCwgcGFyYW1fbmFtZSwgJnYpKSB7Cisg
ICAgKnBhcmFtID0gdjsKKyAgfQorfQorCit2b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpWYWx1
ZSYgcm9vdCwgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwgZmxvYXQqIHBhcmFtKSB7CisgIFJUQ19E
Q0hFQ0socGFyYW0pOworICBkb3VibGUgdjsKKyAgaWYgKHJ0Yzo6R2V0RG91YmxlRnJvbUpzb25P
YmplY3Qocm9vdCwgcGFyYW1fbmFtZSwgJnYpKSB7CisgICAgKnBhcmFtID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHYpOworICB9Cit9CisKK3ZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVlJiBy
b290LAorICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwKKyAgICAgICAgICAg
ICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpGaWx0ZXI6Ok1haW5Db25maWd1cmF0aW9uKiBwYXJh
bSkgeworICBSVENfRENIRUNLKHBhcmFtKTsKKyAgSnNvbjo6VmFsdWUganNvbl9hcnJheTsKKyAg
aWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmanNvbl9h
cnJheSkpIHsKKyAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHY7CisgICAgcnRjOjpKc29uQXJyYXlU
b0RvdWJsZVZlY3Rvcihqc29uX2FycmF5LCAmdik7CisgICAgaWYgKHYuc2l6ZSgpICE9IDYpIHsK
KyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJJbmNvcnJlY3QgYXJyYXkgc2l6ZSBmb3IgIiA8
PCBwYXJhbV9uYW1lOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwYXJhbS0+bGVuZ3RoX2Js
b2NrcyA9IHN0YXRpY19jYXN0PHNpemVfdD4odlswXSk7CisgICAgcGFyYW0tPmxlYWthZ2VfY29u
dmVyZ2VkID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbMV0pOworICAgIHBhcmFtLT5sZWFrYWdlX2Rp
dmVyZ2VkID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbMl0pOworICAgIHBhcmFtLT5lcnJvcl9mbG9v
ciA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzNdKTsKKyAgICBwYXJhbS0+ZXJyb3JfY2VpbCA9IHN0
YXRpY19jYXN0PGZsb2F0Pih2WzRdKTsKKyAgICBwYXJhbS0+bm9pc2VfZ2F0ZSA9IHN0YXRpY19j
YXN0PGZsb2F0Pih2WzVdKTsKKyAgfQorfQorCit2b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpW
YWx1ZSYgcm9vdCwKKyAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUsCisgICAg
ICAgICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RmlsdGVyOjpTaGFkb3dDb25maWd1cmF0
aW9uKiBwYXJhbSkgeworICBSVENfRENIRUNLKHBhcmFtKTsKKyAgSnNvbjo6VmFsdWUganNvbl9h
cnJheTsKKyAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1l
LCAmanNvbl9hcnJheSkpIHsKKyAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHY7CisgICAgcnRjOjpK
c29uQXJyYXlUb0RvdWJsZVZlY3Rvcihqc29uX2FycmF5LCAmdik7CisgICAgaWYgKHYuc2l6ZSgp
ICE9IDMpIHsKKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJJbmNvcnJlY3QgYXJyYXkgc2l6
ZSBmb3IgIiA8PCBwYXJhbV9uYW1lOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwYXJhbS0+
bGVuZ3RoX2Jsb2NrcyA9IHN0YXRpY19jYXN0PHNpemVfdD4odlswXSk7CisgICAgcGFyYW0tPnJh
dGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4odlsxXSk7CisgICAgcGFyYW0tPm5vaXNlX2dhdGUgPSBz
dGF0aWNfY2FzdDxmbG9hdD4odlsyXSk7CisgIH0KK30KKwordm9pZCBSZWFkUGFyYW0oY29uc3Qg
SnNvbjo6VmFsdWUmIHJvb3QsCisgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1l
LAorICAgICAgICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWc6OlN1cHByZXNzb3I6Ok1hc2tp
bmdUaHJlc2hvbGRzKiBwYXJhbSkgeworICBSVENfRENIRUNLKHBhcmFtKTsKKyAgSnNvbjo6VmFs
dWUganNvbl9hcnJheTsKKyAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCBw
YXJhbV9uYW1lLCAmanNvbl9hcnJheSkpIHsKKyAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHY7Cisg
ICAgcnRjOjpKc29uQXJyYXlUb0RvdWJsZVZlY3Rvcihqc29uX2FycmF5LCAmdik7CisgICAgaWYg
KHYuc2l6ZSgpICE9IDMpIHsKKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJJbmNvcnJlY3Qg
YXJyYXkgc2l6ZSBmb3IgIiA8PCBwYXJhbV9uYW1lOworICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBwYXJhbS0+ZW5yX3RyYW5zcGFyZW50ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbMF0pOworICAg
IHBhcmFtLT5lbnJfc3VwcHJlc3MgPSBzdGF0aWNfY2FzdDxmbG9hdD4odlsxXSk7CisgICAgcGFy
YW0tPmVtcl90cmFuc3BhcmVudCA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzJdKTsKKyAgfQorfQor
fSAgLy8gbmFtZXNwYWNlCisKK3ZvaWQgQWVjM0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGFic2w6OnN0
cmluZ192aWV3IGpzb25fc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNo
b0NhbmNlbGxlcjNDb25maWcqIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wqIHBhcnNpbmdfc3VjY2Vzc2Z1bCkgeworICBSVENfRENIRUNLKGNvbmZpZyk7CisgIFJU
Q19EQ0hFQ0socGFyc2luZ19zdWNjZXNzZnVsKTsKKyAgRWNob0NhbmNlbGxlcjNDb25maWcmIGNm
ZyA9ICpjb25maWc7CisgIGNmZyA9IEVjaG9DYW5jZWxsZXIzQ29uZmlnKCk7CisgICpwYXJzaW5n
X3N1Y2Nlc3NmdWwgPSB0cnVlOworCisgIEpzb246OlZhbHVlIHJvb3Q7CisgIGJvb2wgc3VjY2Vz
cyA9IEpzb246OlJlYWRlcigpLnBhcnNlKHN0ZDo6c3RyaW5nKGpzb25fc3RyaW5nKSwgcm9vdCk7
CisgIGlmICghc3VjY2VzcykgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJJbmNvcnJlY3Qg
SlNPTiBmb3JtYXQ6ICIgPDwganNvbl9zdHJpbmc7CisgICAgKnBhcnNpbmdfc3VjY2Vzc2Z1bCA9
IGZhbHNlOworICAgIHJldHVybjsKKyAgfQorCisgIEpzb246OlZhbHVlIGFlYzNfcm9vdDsKKyAg
c3VjY2VzcyA9IHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCAiYWVjMyIsICZhZWMz
X3Jvb3QpOworICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiTWlz
c2luZyBBRUMzIGNvbmZpZyBmaWVsZDogIiA8PCBqc29uX3N0cmluZzsKKyAgICAqcGFyc2luZ19z
dWNjZXNzZnVsID0gZmFsc2U7CisgICAgcmV0dXJuOworICB9CisKKyAgSnNvbjo6VmFsdWUgc2Vj
dGlvbjsKKyAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCAiYnVmZmVyaW5n
IiwgJnNlY3Rpb24pKSB7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJ1c2VfbmV3X3JlbmRlcl9i
dWZmZXJpbmciLAorICAgICAgICAgICAgICAmY2ZnLmJ1ZmZlcmluZy51c2VfbmV3X3JlbmRlcl9i
dWZmZXJpbmcpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZXhjZXNzX3JlbmRlcl9kZXRlY3Rp
b25faW50ZXJ2YWxfYmxvY2tzIiwKKyAgICAgICAgICAgICAgJmNmZy5idWZmZXJpbmcuZXhjZXNz
X3JlbmRlcl9kZXRlY3Rpb25faW50ZXJ2YWxfYmxvY2tzKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlv
biwgIm1heF9hbGxvd2VkX2V4Y2Vzc19yZW5kZXJfYmxvY2tzIiwKKyAgICAgICAgICAgICAgJmNm
Zy5idWZmZXJpbmcubWF4X2FsbG93ZWRfZXhjZXNzX3JlbmRlcl9ibG9ja3MpOworICB9CisKKyAg
aWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChhZWMzX3Jvb3QsICJkZWxheSIsICZzZWN0
aW9uKSkgeworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZGVmYXVsdF9kZWxheSIsICZjZmcuZGVs
YXkuZGVmYXVsdF9kZWxheSk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJkb3duX3NhbXBsaW5n
X2ZhY3RvciIsICZjZmcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IpOworICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAibnVtX2ZpbHRlcnMiLCAmY2ZnLmRlbGF5Lm51bV9maWx0ZXJzKTsKKyAgICBS
ZWFkUGFyYW0oc2VjdGlvbiwgImFwaV9jYWxsX2ppdHRlcl9ibG9ja3MiLAorICAgICAgICAgICAg
ICAmY2ZnLmRlbGF5LmFwaV9jYWxsX2ppdHRlcl9ibG9ja3MpOworICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAibWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3MiLAorICAgICAgICAgICAgICAmY2ZnLmRl
bGF5Lm1pbl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tzKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwg
ImRlbGF5X2hlYWRyb29tX2Jsb2NrcyIsCisgICAgICAgICAgICAgICZjZmcuZGVsYXkuZGVsYXlf
aGVhZHJvb21fYmxvY2tzKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImh5c3RlcmVzaXNfbGlt
aXRfMV9ibG9ja3MiLAorICAgICAgICAgICAgICAmY2ZnLmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRf
MV9ibG9ja3MpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiaHlzdGVyZXNpc19saW1pdF8yX2Js
b2NrcyIsCisgICAgICAgICAgICAgICZjZmcuZGVsYXkuaHlzdGVyZXNpc19saW1pdF8yX2Jsb2Nr
cyk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJza2V3X2h5c3RlcmVzaXNfYmxvY2tzIiwKKyAg
ICAgICAgICAgICAgJmNmZy5kZWxheS5za2V3X2h5c3RlcmVzaXNfYmxvY2tzKTsKKyAgICBSZWFk
UGFyYW0oc2VjdGlvbiwgImZpeGVkX2NhcHR1cmVfZGVsYXlfc2FtcGxlcyIsCisgICAgICAgICAg
ICAgICZjZmcuZGVsYXkuZml4ZWRfY2FwdHVyZV9kZWxheV9zYW1wbGVzKTsKKyAgICBSZWFkUGFy
YW0oc2VjdGlvbiwgImRlbGF5X2VzdGltYXRlX3Ntb290aGluZyIsCisgICAgICAgICAgICAgICZj
ZmcuZGVsYXkuZGVsYXlfZXN0aW1hdGVfc21vb3RoaW5nKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlv
biwgImRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rpb25fdGhyZXNob2xkIiwKKyAgICAgICAgICAgICAg
JmNmZy5kZWxheS5kZWxheV9jYW5kaWRhdGVfZGV0ZWN0aW9uX3RocmVzaG9sZCk7CisKKyAgICBK
c29uOjpWYWx1ZSBzdWJzZWN0aW9uOworICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmpl
Y3Qoc2VjdGlvbiwgImRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZzdWJzZWN0aW9uKSkgeworICAgICAgUmVhZFBhcmFtKHN1
YnNlY3Rpb24sICJpbml0aWFsIiwKKyAgICAgICAgICAgICAgICAmY2ZnLmRlbGF5LmRlbGF5X3Nl
bGVjdGlvbl90aHJlc2hvbGRzLmluaXRpYWwpOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24s
ICJjb252ZXJnZWQiLAorICAgICAgICAgICAgICAgICZjZmcuZGVsYXkuZGVsYXlfc2VsZWN0aW9u
X3RocmVzaG9sZHMuY29udmVyZ2VkKTsKKyAgICB9CisgIH0KKworICBpZiAocnRjOjpHZXRWYWx1
ZUZyb21Kc29uT2JqZWN0KGFlYzNfcm9vdCwgImZpbHRlciIsICZzZWN0aW9uKSkgeworICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAibWFpbiIsICZjZmcuZmlsdGVyLm1haW4pOworICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAic2hhZG93IiwgJmNmZy5maWx0ZXIuc2hhZG93KTsKKyAgICBSZWFkUGFyYW0o
c2VjdGlvbiwgIm1haW5faW5pdGlhbCIsICZjZmcuZmlsdGVyLm1haW5faW5pdGlhbCk7CisgICAg
UmVhZFBhcmFtKHNlY3Rpb24sICJzaGFkb3dfaW5pdGlhbCIsICZjZmcuZmlsdGVyLnNoYWRvd19p
bml0aWFsKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImNvbmZpZ19jaGFuZ2VfZHVyYXRpb25f
YmxvY2tzIiwKKyAgICAgICAgICAgICAgJmNmZy5maWx0ZXIuY29uZmlnX2NoYW5nZV9kdXJhdGlv
bl9ibG9ja3MpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiaW5pdGlhbF9zdGF0ZV9zZWNvbmRz
IiwKKyAgICAgICAgICAgICAgJmNmZy5maWx0ZXIuaW5pdGlhbF9zdGF0ZV9zZWNvbmRzKTsKKyAg
ICBSZWFkUGFyYW0oc2VjdGlvbiwgImNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlIiwKKyAgICAg
ICAgICAgICAgJmNmZy5maWx0ZXIuY29uc2VydmF0aXZlX2luaXRpYWxfcGhhc2UpOworICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAiZW5hYmxlX3NoYWRvd19maWx0ZXJfb3V0cHV0X3VzYWdlIiwKKyAg
ICAgICAgICAgICAgJmNmZy5maWx0ZXIuZW5hYmxlX3NoYWRvd19maWx0ZXJfb3V0cHV0X3VzYWdl
KTsKKyAgfQorCisgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3QoYWVjM19yb290LCAi
ZXJsZSIsICZzZWN0aW9uKSkgeworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWluIiwgJmNmZy5l
cmxlLm1pbik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtYXhfbCIsICZjZmcuZXJsZS5tYXhf
bCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtYXhfaCIsICZjZmcuZXJsZS5tYXhfaCk7Cisg
ICAgUmVhZFBhcmFtKHNlY3Rpb24sICJvbnNldF9kZXRlY3Rpb24iLCAmY2ZnLmVybGUub25zZXRf
ZGV0ZWN0aW9uKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm51bV9zZWN0aW9ucyIsICZjZmcu
ZXJsZS5udW1fc2VjdGlvbnMpOworICB9CisKKyAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9i
amVjdChhZWMzX3Jvb3QsICJlcF9zdHJlbmd0aCIsICZzZWN0aW9uKSkgeworICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAibGYiLCAmY2ZnLmVwX3N0cmVuZ3RoLmxmKTsKKyAgICBSZWFkUGFyYW0oc2Vj
dGlvbiwgIm1mIiwgJmNmZy5lcF9zdHJlbmd0aC5tZik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJoZiIsICZjZmcuZXBfc3RyZW5ndGguaGYpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZGVm
YXVsdF9sZW4iLCAmY2ZnLmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVuKTsKKyAgICBSZWFkUGFyYW0o
c2VjdGlvbiwgInJldmVyYl9iYXNlZF9vbl9yZW5kZXIiLAorICAgICAgICAgICAgICAmY2ZnLmVw
X3N0cmVuZ3RoLnJldmVyYl9iYXNlZF9vbl9yZW5kZXIpOworICAgIFJlYWRQYXJhbShzZWN0aW9u
LCAiZWNob19jYW5fc2F0dXJhdGUiLCAmY2ZnLmVwX3N0cmVuZ3RoLmVjaG9fY2FuX3NhdHVyYXRl
KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImJvdW5kZWRfZXJsIiwgJmNmZy5lcF9zdHJlbmd0
aC5ib3VuZGVkX2VybCk7CisgIH0KKworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0
KGFlYzNfcm9vdCwgImVjaG9fYXVkaWJpbGl0eSIsICZzZWN0aW9uKSkgeworICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAibG93X3JlbmRlcl9saW1pdCIsCisgICAgICAgICAgICAgICZjZmcuZWNob19h
dWRpYmlsaXR5Lmxvd19yZW5kZXJfbGltaXQpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibm9y
bWFsX3JlbmRlcl9saW1pdCIsCisgICAgICAgICAgICAgICZjZmcuZWNob19hdWRpYmlsaXR5Lm5v
cm1hbF9yZW5kZXJfbGltaXQpOworCisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJmbG9vcl9wb3dl
ciIsICZjZmcuZWNob19hdWRpYmlsaXR5LmZsb29yX3Bvd2VyKTsKKyAgICBSZWFkUGFyYW0oc2Vj
dGlvbiwgImF1ZGliaWxpdHlfdGhyZXNob2xkX2xmIiwKKyAgICAgICAgICAgICAgJmNmZy5lY2hv
X2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfbGYpOworICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAiYXVkaWJpbGl0eV90aHJlc2hvbGRfbWYiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9f
YXVkaWJpbGl0eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9tZik7CisgICAgUmVhZFBhcmFtKHNlY3Rp
b24sICJhdWRpYmlsaXR5X3RocmVzaG9sZF9oZiIsCisgICAgICAgICAgICAgICZjZmcuZWNob19h
dWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhyZXNob2xkX2hmKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlv
biwgInVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXMiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9f
YXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVzKTsKKyAgICBSZWFkUGFyYW0oc2Vj
dGlvbiwgInVzZV9zdGF0aW9uYXJpdHlfcHJvcGVydGllc19hdF9pbml0IiwKKyAgICAgICAgICAg
ICAgJmNmZy5lY2hvX2F1ZGliaWxpdHkudXNlX3N0YXRpb25hcml0eV9wcm9wZXJ0aWVzX2F0X2lu
aXQpOworICB9CisKKyAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChhZWMzX3Jvb3Qs
ICJyZW5kZXJfbGV2ZWxzIiwgJnNlY3Rpb24pKSB7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJh
Y3RpdmVfcmVuZGVyX2xpbWl0IiwKKyAgICAgICAgICAgICAgJmNmZy5yZW5kZXJfbGV2ZWxzLmFj
dGl2ZV9yZW5kZXJfbGltaXQpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAicG9vcl9leGNpdGF0
aW9uX3JlbmRlcl9saW1pdCIsCisgICAgICAgICAgICAgICZjZmcucmVuZGVyX2xldmVscy5wb29y
X2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInBvb3Jf
ZXhjaXRhdGlvbl9yZW5kZXJfbGltaXRfZHM4IiwKKyAgICAgICAgICAgICAgJmNmZy5yZW5kZXJf
bGV2ZWxzLnBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGltaXRfZHM4KTsKKyAgfQorCisgIGlmIChy
dGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3QoYWVjM19yb290LCAiZWNob19yZW1vdmFsX2NvbnRy
b2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWN0aW9uKSkgeworICAg
IEpzb246OlZhbHVlIHN1YnNlY3Rpb247CisgICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9i
amVjdChzZWN0aW9uLCAiZ2Fpbl9yYW1wdXAiLCAmc3Vic2VjdGlvbikpIHsKKyAgICAgIFJlYWRQ
YXJhbShzdWJzZWN0aW9uLCAiaW5pdGlhbF9nYWluIiwKKyAgICAgICAgICAgICAgICAmY2ZnLmVj
aG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmluaXRpYWxfZ2Fpbik7CisgICAgICBSZWFk
UGFyYW0oc3Vic2VjdGlvbiwgImZpcnN0X25vbl96ZXJvX2dhaW4iLAorICAgICAgICAgICAgICAg
ICZjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZmlyc3Rfbm9uX3plcm9fZ2Fp
bik7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm5vbl96ZXJvX2dhaW5fYmxvY2tzIiwK
KyAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLm5v
bl96ZXJvX2dhaW5fYmxvY2tzKTsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiZnVsbF9n
YWluX2Jsb2NrcyIsCisgICAgICAgICAgICAgICAgJmNmZy5lY2hvX3JlbW92YWxfY29udHJvbC5n
YWluX3JhbXB1cC5mdWxsX2dhaW5fYmxvY2tzKTsKKyAgICB9CisgICAgUmVhZFBhcmFtKHNlY3Rp
b24sICJoYXNfY2xvY2tfZHJpZnQiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9j
b250cm9sLmhhc19jbG9ja19kcmlmdCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJsaW5lYXJf
YW5kX3N0YWJsZV9lY2hvX3BhdGgiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9j
b250cm9sLmxpbmVhcl9hbmRfc3RhYmxlX2VjaG9fcGF0aCk7CisgIH0KKworICBpZiAocnRjOjpH
ZXRWYWx1ZUZyb21Kc29uT2JqZWN0KGFlYzNfcm9vdCwgImVjaG9fbW9kZWwiLCAmc2VjdGlvbikp
IHsKKyAgICBKc29uOjpWYWx1ZSBzdWJzZWN0aW9uOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAi
bm9pc2VfZmxvb3JfaG9sZCIsICZjZmcuZWNob19tb2RlbC5ub2lzZV9mbG9vcl9ob2xkKTsKKyAg
ICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1pbl9ub2lzZV9mbG9vcl9wb3dlciIsCisgICAgICAgICAg
ICAgICZjZmcuZWNob19tb2RlbC5taW5fbm9pc2VfZmxvb3JfcG93ZXIpOworICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAic3RhdGlvbmFyeV9nYXRlX3Nsb3BlIiwKKyAgICAgICAgICAgICAgJmNmZy5l
Y2hvX21vZGVsLnN0YXRpb25hcnlfZ2F0ZV9zbG9wZSk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJub2lzZV9nYXRlX3Bvd2VyIiwgJmNmZy5lY2hvX21vZGVsLm5vaXNlX2dhdGVfcG93ZXIpOwor
ICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibm9pc2VfZ2F0ZV9zbG9wZSIsICZjZmcuZWNob19tb2Rl
bC5ub2lzZV9nYXRlX3Nsb3BlKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRlcl9wcmVf
d2luZG93X3NpemUiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93
aW5kb3dfc2l6ZSk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJyZW5kZXJfcG9zdF93aW5kb3df
c2l6ZSIsCisgICAgICAgICAgICAgICZjZmcuZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3df
c2l6ZSk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJyZW5kZXJfcHJlX3dpbmRvd19zaXplX2lu
aXQiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6
ZV9pbml0KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRlcl9wb3N0X3dpbmRvd19zaXpl
X2luaXQiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93
X3NpemVfaW5pdCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJub25saW5lYXJfaG9sZCIsICZj
ZmcuZWNob19tb2RlbC5ub25saW5lYXJfaG9sZCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJu
b25saW5lYXJfcmVsZWFzZSIsICZjZmcuZWNob19tb2RlbC5ub25saW5lYXJfcmVsZWFzZSk7Cisg
IH0KKworICBKc29uOjpWYWx1ZSBzdWJzZWN0aW9uOworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21K
c29uT2JqZWN0KGFlYzNfcm9vdCwgInN1cHByZXNzb3IiLCAmc2VjdGlvbikpIHsKKyAgICBSZWFk
UGFyYW0oc2VjdGlvbiwgIm5lYXJlbmRfYXZlcmFnZV9ibG9ja3MiLAorICAgICAgICAgICAgICAm
Y2ZnLnN1cHByZXNzb3IubmVhcmVuZF9hdmVyYWdlX2Jsb2Nrcyk7CisKKyAgICBpZiAocnRjOjpH
ZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rpb24sICJub3JtYWxfdHVuaW5nIiwgJnN1YnNlY3Rp
b24pKSB7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1hc2tfbGYiLCAmY2ZnLnN1cHBy
ZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2xmKTsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9u
LCAibWFza19oZiIsICZjZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYpOworICAg
ICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJtYXhfaW5jX2ZhY3RvciIsCisgICAgICAgICAgICAg
ICAgJmNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWF4X2luY19mYWN0b3IpOworICAgICAg
UmVhZFBhcmFtKHN1YnNlY3Rpb24sICJtYXhfZGVjX2ZhY3Rvcl9sZiIsCisgICAgICAgICAgICAg
ICAgJmNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWF4X2RlY19mYWN0b3JfbGYpOworICAg
IH0KKworICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qoc2VjdGlvbiwgIm5lYXJl
bmRfdHVuaW5nIiwgJnN1YnNlY3Rpb24pKSB7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwg
Im1hc2tfbGYiLCAmY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZik7CisgICAg
ICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1hc2tfaGYiLCAmY2ZnLnN1cHByZXNzb3IubmVhcmVu
ZF90dW5pbmcubWFza19oZik7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9pbmNf
ZmFjdG9yIiwKKyAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcu
bWF4X2luY19mYWN0b3IpOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJtYXhfZGVjX2Zh
Y3Rvcl9sZiIsCisgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5n
Lm1heF9kZWNfZmFjdG9yX2xmKTsKKyAgICB9CisKKyAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21K
c29uT2JqZWN0KHNlY3Rpb24sICJkb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Vic2VjdGlvbikpIHsKKyAgICAgIFJlYWRQ
YXJhbShzdWJzZWN0aW9uLCAiZW5yX3RocmVzaG9sZCIsCisgICAgICAgICAgICAgICAgJmNmZy5z
dXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmVucl90aHJlc2hvbGQpOworICAg
ICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJlbnJfZXhpdF90aHJlc2hvbGQiLAorICAgICAgICAg
ICAgICAgICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5lbnJfZXhp
dF90aHJlc2hvbGQpOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJzbnJfdGhyZXNob2xk
IiwKKyAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRl
Y3Rpb24uc25yX3RocmVzaG9sZCk7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgImhvbGRf
ZHVyYXRpb24iLAorICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFy
ZW5kX2RldGVjdGlvbi5ob2xkX2R1cmF0aW9uKTsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9u
LCAidHJpZ2dlcl90aHJlc2hvbGQiLAorICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5k
b21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi50cmlnZ2VyX3RocmVzaG9sZCk7CisgICAgICBSZWFk
UGFyYW0oCisgICAgICAgICAgc3Vic2VjdGlvbiwgInVzZV9kdXJpbmdfaW5pdGlhbF9waGFzZSIs
CisgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLnVz
ZV9kdXJpbmdfaW5pdGlhbF9waGFzZSk7CisgICAgfQorCisgICAgaWYgKHJ0Yzo6R2V0VmFsdWVG
cm9tSnNvbk9iamVjdChzZWN0aW9uLCAiaGlnaF9iYW5kc19zdXBwcmVzc2lvbiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Vic2VjdGlvbikpIHsKKyAgICAgIFJlYWRQ
YXJhbShzdWJzZWN0aW9uLCAiZW5yX3RocmVzaG9sZCIsCisgICAgICAgICAgICAgICAgJmNmZy5z
dXBwcmVzc29yLmhpZ2hfYmFuZHNfc3VwcHJlc3Npb24uZW5yX3RocmVzaG9sZCk7CisgICAgICBS
ZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9nYWluX2R1cmluZ19lY2hvIiwKKyAgICAgICAgICAg
ICAgICAmY2ZnLnN1cHByZXNzb3IuaGlnaF9iYW5kc19zdXBwcmVzc2lvbi5tYXhfZ2Fpbl9kdXJp
bmdfZWNobyk7CisgICAgfQorCisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJmbG9vcl9maXJzdF9p
bmNyZWFzZSIsCisgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5mbG9vcl9maXJzdF9pbmNy
ZWFzZSk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJlbmZvcmNlX3RyYW5zcGFyZW50IiwKKyAg
ICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmVuZm9yY2VfdHJhbnNwYXJlbnQpOworICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAiZW5mb3JjZV9lbXB0eV9oaWdoZXJfYmFuZHMiLAorICAgICAgICAg
ICAgICAmY2ZnLnN1cHByZXNzb3IuZW5mb3JjZV9lbXB0eV9oaWdoZXJfYmFuZHMpOworICB9Cit9
CisKK0VjaG9DYW5jZWxsZXIzQ29uZmlnIEFlYzNDb25maWdGcm9tSnNvblN0cmluZyhhYnNsOjpz
dHJpbmdfdmlldyBqc29uX3N0cmluZykgeworICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjZmc7Cisg
IGJvb2wgbm90X3VzZWQ7CisgIEFlYzNDb25maWdGcm9tSnNvblN0cmluZyhqc29uX3N0cmluZywg
JmNmZywgJm5vdF91c2VkKTsKKyAgcmV0dXJuIGNmZzsKK30KKworc3RkOjpzdHJpbmcgQWVjM0Nv
bmZpZ1RvSnNvblN0cmluZyhjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKSB7Cisg
IHJ0Yzo6U3RyaW5nQnVpbGRlciBvc3Q7CisgIG9zdCA8PCAieyI7CisgIG9zdCA8PCAiXCJhZWMz
XCI6IHsiOworICBvc3QgPDwgIlwiZGVsYXlcIjogeyI7CisgIG9zdCA8PCAiXCJkZWZhdWx0X2Rl
bGF5XCI6ICIgPDwgY29uZmlnLmRlbGF5LmRlZmF1bHRfZGVsYXkgPDwgIiwiOworICBvc3QgPDwg
IlwiZG93bl9zYW1wbGluZ19mYWN0b3JcIjogIiA8PCBjb25maWcuZGVsYXkuZG93bl9zYW1wbGlu
Z19mYWN0b3IKKyAgICAgIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm51bV9maWx0ZXJzXCI6ICIgPDwg
Y29uZmlnLmRlbGF5Lm51bV9maWx0ZXJzIDw8ICIsIjsKKyAgb3N0IDw8ICJcImFwaV9jYWxsX2pp
dHRlcl9ibG9ja3NcIjogIiA8PCBjb25maWcuZGVsYXkuYXBpX2NhbGxfaml0dGVyX2Jsb2Nrcwor
ICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwibWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3NcIjog
IgorICAgICAgPDwgY29uZmlnLmRlbGF5Lm1pbl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tzIDw8ICIs
IjsKKyAgb3N0IDw8ICJcImRlbGF5X2hlYWRyb29tX2Jsb2Nrc1wiOiAiIDw8IGNvbmZpZy5kZWxh
eS5kZWxheV9oZWFkcm9vbV9ibG9ja3MKKyAgICAgIDw8ICIsIjsKKyAgb3N0IDw8ICJcImh5c3Rl
cmVzaXNfbGltaXRfMV9ibG9ja3NcIjogIgorICAgICAgPDwgY29uZmlnLmRlbGF5Lmh5c3RlcmVz
aXNfbGltaXRfMV9ibG9ja3MgPDwgIiwiOworICBvc3QgPDwgIlwiaHlzdGVyZXNpc19saW1pdF8y
X2Jsb2Nrc1wiOiAiCisgICAgICA8PCBjb25maWcuZGVsYXkuaHlzdGVyZXNpc19saW1pdF8yX2Js
b2NrcyA8PCAiLCI7CisgIG9zdCA8PCAiXCJza2V3X2h5c3RlcmVzaXNfYmxvY2tzXCI6ICIgPDwg
Y29uZmlnLmRlbGF5LnNrZXdfaHlzdGVyZXNpc19ibG9ja3MKKyAgICAgIDw8ICIsIjsKKyAgb3N0
IDw8ICJcImZpeGVkX2NhcHR1cmVfZGVsYXlfc2FtcGxlc1wiOiAiCisgICAgICA8PCBjb25maWcu
ZGVsYXkuZml4ZWRfY2FwdHVyZV9kZWxheV9zYW1wbGVzIDw8ICIsIjsKKyAgb3N0IDw8ICJcImRl
bGF5X2VzdGltYXRlX3Ntb290aGluZ1wiOiAiCisgICAgICA8PCBjb25maWcuZGVsYXkuZGVsYXlf
ZXN0aW1hdGVfc21vb3RoaW5nIDw8ICIsIjsKKyAgb3N0IDw8ICJcImRlbGF5X2NhbmRpZGF0ZV9k
ZXRlY3Rpb25fdGhyZXNob2xkXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5kZWxheS5kZWxheV9jYW5k
aWRhdGVfZGV0ZWN0aW9uX3RocmVzaG9sZCA8PCAiLCI7CisKKyAgb3N0IDw8ICJcImRlbGF5X3Nl
bGVjdGlvbl90aHJlc2hvbGRzXCI6IHsiOworICBvc3QgPDwgIlwiaW5pdGlhbFwiOiAiIDw8IGNv
bmZpZy5kZWxheS5kZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcy5pbml0aWFsCisgICAgICA8PCAi
LCI7CisgIG9zdCA8PCAiXCJjb252ZXJnZWRcIjogIiA8PCBjb25maWcuZGVsYXkuZGVsYXlfc2Vs
ZWN0aW9uX3RocmVzaG9sZHMuY29udmVyZ2VkOworICBvc3QgPDwgIn0iOworCisgIG9zdCA8PCAi
fSwiOworCisgIG9zdCA8PCAiXCJmaWx0ZXJcIjogeyI7CisgIG9zdCA8PCAiXCJtYWluXCI6IFsi
OworICBvc3QgPDwgY29uZmlnLmZpbHRlci5tYWluLmxlbmd0aF9ibG9ja3MgPDwgIiwiOworICBv
c3QgPDwgY29uZmlnLmZpbHRlci5tYWluLmxlYWthZ2VfY29udmVyZ2VkIDw8ICIsIjsKKyAgb3N0
IDw8IGNvbmZpZy5maWx0ZXIubWFpbi5sZWFrYWdlX2RpdmVyZ2VkIDw8ICIsIjsKKyAgb3N0IDw8
IGNvbmZpZy5maWx0ZXIubWFpbi5lcnJvcl9mbG9vciA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcu
ZmlsdGVyLm1haW4uZXJyb3JfY2VpbCA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLm1h
aW4ubm9pc2VfZ2F0ZTsKKyAgb3N0IDw8ICJdLCI7CisKKyAgb3N0IDw8ICJcInNoYWRvd1wiOiBb
IjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIuc2hhZG93Lmxlbmd0aF9ibG9ja3MgPDwgIiwiOwor
ICBvc3QgPDwgY29uZmlnLmZpbHRlci5zaGFkb3cucmF0ZSA8PCAiLCI7CisgIG9zdCA8PCBjb25m
aWcuZmlsdGVyLnNoYWRvdy5ub2lzZV9nYXRlOworICBvc3QgPDwgIl0sIjsKKworICBvc3QgPDwg
IlwibWFpbl9pbml0aWFsXCI6IFsiOworICBvc3QgPDwgY29uZmlnLmZpbHRlci5tYWluX2luaXRp
YWwubGVuZ3RoX2Jsb2NrcyA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLm1haW5faW5p
dGlhbC5sZWFrYWdlX2NvbnZlcmdlZCA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLm1h
aW5faW5pdGlhbC5sZWFrYWdlX2RpdmVyZ2VkIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0
ZXIubWFpbl9pbml0aWFsLmVycm9yX2Zsb29yIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0
ZXIubWFpbl9pbml0aWFsLmVycm9yX2NlaWwgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLmZpbHRl
ci5tYWluX2luaXRpYWwubm9pc2VfZ2F0ZTsKKyAgb3N0IDw8ICJdLCI7CisKKyAgb3N0IDw8ICJc
InNoYWRvd19pbml0aWFsXCI6IFsiOworICBvc3QgPDwgY29uZmlnLmZpbHRlci5zaGFkb3dfaW5p
dGlhbC5sZW5ndGhfYmxvY2tzIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIuc2hhZG93
X2luaXRpYWwucmF0ZSA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLnNoYWRvd19pbml0
aWFsLm5vaXNlX2dhdGU7CisgIG9zdCA8PCAiXSwiOworCisgIG9zdCA8PCAiXCJjb25maWdfY2hh
bmdlX2R1cmF0aW9uX2Jsb2Nrc1wiOiAiCisgICAgICA8PCBjb25maWcuZmlsdGVyLmNvbmZpZ19j
aGFuZ2VfZHVyYXRpb25fYmxvY2tzIDw8ICIsIjsKKyAgb3N0IDw8ICJcImluaXRpYWxfc3RhdGVf
c2Vjb25kc1wiOiAiIDw8IGNvbmZpZy5maWx0ZXIuaW5pdGlhbF9zdGF0ZV9zZWNvbmRzCisgICAg
ICA8PCAiLCI7CisgIG9zdCA8PCAiXCJjb25zZXJ2YXRpdmVfaW5pdGlhbF9waGFzZVwiOiAiCisg
ICAgICA8PCAoY29uZmlnLmZpbHRlci5jb25zZXJ2YXRpdmVfaW5pdGlhbF9waGFzZSA/ICJ0cnVl
IiA6ICJmYWxzZSIpIDw8ICIsIjsKKyAgb3N0IDw8ICJcImVuYWJsZV9zaGFkb3dfZmlsdGVyX291
dHB1dF91c2FnZVwiOiAiCisgICAgICA8PCAoY29uZmlnLmZpbHRlci5lbmFibGVfc2hhZG93X2Zp
bHRlcl9vdXRwdXRfdXNhZ2UgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworICBvc3QgPDwgIn0sIjsK
KworICBvc3QgPDwgIlwiZXJsZVwiOiB7IjsKKyAgb3N0IDw8ICJcIm1pblwiOiAiIDw8IGNvbmZp
Zy5lcmxlLm1pbiA8PCAiLCI7CisgIG9zdCA8PCAiXCJtYXhfbFwiOiAiIDw8IGNvbmZpZy5lcmxl
Lm1heF9sIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm1heF9oXCI6ICIgPDwgY29uZmlnLmVybGUubWF4
X2ggPDwgIiwiOworICBvc3QgPDwgIlwib25zZXRfZGV0ZWN0aW9uXCI6ICIKKyAgICAgIDw8IChj
b25maWcuZXJsZS5vbnNldF9kZXRlY3Rpb24gPyAidHJ1ZSIgOiAiZmFsc2UiKSA8PCAiLCI7Cisg
IG9zdCA8PCAiXCJudW1fc2VjdGlvbnNcIjogIiA8PCBjb25maWcuZXJsZS5udW1fc2VjdGlvbnM7
CisgIG9zdCA8PCAifSwiOworCisgIG9zdCA8PCAiXCJlcF9zdHJlbmd0aFwiOiB7IjsKKyAgb3N0
IDw8ICJcImxmXCI6ICIgPDwgY29uZmlnLmVwX3N0cmVuZ3RoLmxmIDw8ICIsIjsKKyAgb3N0IDw8
ICJcIm1mXCI6ICIgPDwgY29uZmlnLmVwX3N0cmVuZ3RoLm1mIDw8ICIsIjsKKyAgb3N0IDw8ICJc
ImhmXCI6ICIgPDwgY29uZmlnLmVwX3N0cmVuZ3RoLmhmIDw8ICIsIjsKKyAgb3N0IDw8ICJcImRl
ZmF1bHRfbGVuXCI6ICIgPDwgY29uZmlnLmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVuIDw8ICIsIjsK
KyAgb3N0IDw8ICJcInJldmVyYl9iYXNlZF9vbl9yZW5kZXJcIjogIgorICAgICAgPDwgKGNvbmZp
Zy5lcF9zdHJlbmd0aC5yZXZlcmJfYmFzZWRfb25fcmVuZGVyID8gInRydWUiIDogImZhbHNlIikg
PDwgIiwiOworICBvc3QgPDwgIlwiZWNob19jYW5fc2F0dXJhdGVcIjogIgorICAgICAgPDwgKGNv
bmZpZy5lcF9zdHJlbmd0aC5lY2hvX2Nhbl9zYXR1cmF0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8
ICIsIjsKKyAgb3N0IDw8ICJcImJvdW5kZWRfZXJsXCI6ICIKKyAgICAgIDw8IChjb25maWcuZXBf
c3RyZW5ndGguYm91bmRlZF9lcmwgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworICBvc3QgPDwgIn0s
IjsKKworICBvc3QgPDwgIlwiZWNob19hdWRpYmlsaXR5XCI6IHsiOworICBvc3QgPDwgIlwibG93
X3JlbmRlcl9saW1pdFwiOiAiIDw8IGNvbmZpZy5lY2hvX2F1ZGliaWxpdHkubG93X3JlbmRlcl9s
aW1pdAorICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwibm9ybWFsX3JlbmRlcl9saW1pdFwiOiAi
CisgICAgICA8PCBjb25maWcuZWNob19hdWRpYmlsaXR5Lm5vcm1hbF9yZW5kZXJfbGltaXQgPDwg
IiwiOworICBvc3QgPDwgIlwiZmxvb3JfcG93ZXJcIjogIiA8PCBjb25maWcuZWNob19hdWRpYmls
aXR5LmZsb29yX3Bvd2VyIDw8ICIsIjsKKyAgb3N0IDw8ICJcImF1ZGliaWxpdHlfdGhyZXNob2xk
X2xmXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJl
c2hvbGRfbGYgPDwgIiwiOworICBvc3QgPDwgIlwiYXVkaWJpbGl0eV90aHJlc2hvbGRfbWZcIjog
IgorICAgICAgPDwgY29uZmlnLmVjaG9fYXVkaWJpbGl0eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9t
ZiA8PCAiLCI7CisgIG9zdCA8PCAiXCJhdWRpYmlsaXR5X3RocmVzaG9sZF9oZlwiOiAiCisgICAg
ICA8PCBjb25maWcuZWNob19hdWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhyZXNob2xkX2hmIDw8ICIs
IjsKKyAgb3N0IDw8ICJcInVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXNcIjogIgorICAgICAgPDwg
KGNvbmZpZy5lY2hvX2F1ZGliaWxpdHkudXNlX3N0YXRpb25hcnlfcHJvcGVydGllcyA/ICJ0cnVl
IiA6ICJmYWxzZSIpCisgICAgICA8PCAiLCI7CisgIG9zdCA8PCAiXCJ1c2Vfc3RhdGlvbmFyaXR5
X3Byb3BlcnRpZXNfYXRfaW5pdFwiOiAiCisgICAgICA8PCAoY29uZmlnLmVjaG9fYXVkaWJpbGl0
eS51c2Vfc3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdCA/ICJ0cnVlIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAiZmFsc2UiKTsKKyAgb3N0IDw8ICJ9LCI7CisKKyAgb3N0IDw8ICJcInJlbmRlcl9sZXZl
bHNcIjogeyI7CisgIG9zdCA8PCAiXCJhY3RpdmVfcmVuZGVyX2xpbWl0XCI6ICIgPDwgY29uZmln
LnJlbmRlcl9sZXZlbHMuYWN0aXZlX3JlbmRlcl9saW1pdAorICAgICAgPDwgIiwiOworICBvc3Qg
PDwgIlwicG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdFwiOiAiCisgICAgICA8PCBjb25maWcu
cmVuZGVyX2xldmVscy5wb29yX2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0IDw8ICIsIjsKKyAgb3N0
IDw8ICJcInBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGltaXRfZHM4XCI6ICIKKyAgICAgIDw8IGNv
bmZpZy5yZW5kZXJfbGV2ZWxzLnBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGltaXRfZHM4OworICBv
c3QgPDwgIn0sIjsKKworICBvc3QgPDwgIlwiZWNob19yZW1vdmFsX2NvbnRyb2xcIjogeyI7Cisg
IG9zdCA8PCAiXCJnYWluX3JhbXB1cFwiOiB7IjsKKyAgb3N0IDw8ICJcImluaXRpYWxfZ2Fpblwi
OiAiCisgICAgICA8PCBjb25maWcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuaW5p
dGlhbF9nYWluIDw8ICIsIjsKKyAgb3N0IDw8ICJcImZpcnN0X25vbl96ZXJvX2dhaW5cIjogIgor
ICAgICAgPDwgY29uZmlnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmZpcnN0X25v
bl96ZXJvX2dhaW4gPDwgIiwiOworICBvc3QgPDwgIlwibm9uX3plcm9fZ2Fpbl9ibG9ja3NcIjog
IgorICAgICAgPDwgY29uZmlnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLm5vbl96
ZXJvX2dhaW5fYmxvY2tzIDw8ICIsIjsKKyAgb3N0IDw8ICJcImZ1bGxfZ2Fpbl9ibG9ja3NcIjog
IgorICAgICAgPDwgY29uZmlnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmZ1bGxf
Z2Fpbl9ibG9ja3M7CisgIG9zdCA8PCAifSwiOworICBvc3QgPDwgIlwiaGFzX2Nsb2NrX2RyaWZ0
XCI6ICIKKyAgICAgIDw8IChjb25maWcuZWNob19yZW1vdmFsX2NvbnRyb2wuaGFzX2Nsb2NrX2Ry
aWZ0ID8gInRydWUiIDogImZhbHNlIikKKyAgICAgIDw8ICIsIjsKKyAgb3N0IDw8ICJcImxpbmVh
cl9hbmRfc3RhYmxlX2VjaG9fcGF0aFwiOiAiCisgICAgICA8PCAoY29uZmlnLmVjaG9fcmVtb3Zh
bF9jb250cm9sLmxpbmVhcl9hbmRfc3RhYmxlX2VjaG9fcGF0aCA/ICJ0cnVlIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAiZmFsc2UiKTsKKworICBvc3QgPDwgIn0sIjsKKworICBvc3QgPDwgIlwiZWNob19tb2RlbFwi
OiB7IjsKKyAgb3N0IDw8ICJcIm5vaXNlX2Zsb29yX2hvbGRcIjogIiA8PCBjb25maWcuZWNob19t
b2RlbC5ub2lzZV9mbG9vcl9ob2xkIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm1pbl9ub2lzZV9mbG9v
cl9wb3dlclwiOiAiCisgICAgICA8PCBjb25maWcuZWNob19tb2RlbC5taW5fbm9pc2VfZmxvb3Jf
cG93ZXIgPDwgIiwiOworICBvc3QgPDwgIlwic3RhdGlvbmFyeV9nYXRlX3Nsb3BlXCI6ICIKKyAg
ICAgIDw8IGNvbmZpZy5lY2hvX21vZGVsLnN0YXRpb25hcnlfZ2F0ZV9zbG9wZSA8PCAiLCI7Cisg
IG9zdCA8PCAiXCJub2lzZV9nYXRlX3Bvd2VyXCI6ICIgPDwgY29uZmlnLmVjaG9fbW9kZWwubm9p
c2VfZ2F0ZV9wb3dlciA8PCAiLCI7CisgIG9zdCA8PCAiXCJub2lzZV9nYXRlX3Nsb3BlXCI6ICIg
PDwgY29uZmlnLmVjaG9fbW9kZWwubm9pc2VfZ2F0ZV9zbG9wZSA8PCAiLCI7CisgIG9zdCA8PCAi
XCJyZW5kZXJfcHJlX3dpbmRvd19zaXplXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5lY2hvX21vZGVs
LnJlbmRlcl9wcmVfd2luZG93X3NpemUgPDwgIiwiOworICBvc3QgPDwgIlwicmVuZGVyX3Bvc3Rf
d2luZG93X3NpemVcIjogIgorICAgICAgPDwgY29uZmlnLmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rf
d2luZG93X3NpemUgPDwgIiwiOworICBvc3QgPDwgIlwicmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9p
bml0XCI6ICIKKyAgICAgIDw8IGNvbmZpZy5lY2hvX21vZGVsLnJlbmRlcl9wcmVfd2luZG93X3Np
emVfaW5pdCA8PCAiLCI7CisgIG9zdCA8PCAiXCJyZW5kZXJfcG9zdF93aW5kb3dfc2l6ZV9pbml0
XCI6ICIKKyAgICAgIDw8IGNvbmZpZy5lY2hvX21vZGVsLnJlbmRlcl9wb3N0X3dpbmRvd19zaXpl
X2luaXQgPDwgIiwiOworICBvc3QgPDwgIlwibm9ubGluZWFyX2hvbGRcIjogIiA8PCBjb25maWcu
ZWNob19tb2RlbC5ub25saW5lYXJfaG9sZCA8PCAiLCI7CisgIG9zdCA8PCAiXCJub25saW5lYXJf
cmVsZWFzZVwiOiAiIDw8IGNvbmZpZy5lY2hvX21vZGVsLm5vbmxpbmVhcl9yZWxlYXNlOworICBv
c3QgPDwgIn0sIjsKKworICBvc3QgPDwgIlwic3VwcHJlc3NvclwiOiB7IjsKKyAgb3N0IDw8ICJc
Im5lYXJlbmRfYXZlcmFnZV9ibG9ja3NcIjogIgorICAgICAgPDwgY29uZmlnLnN1cHByZXNzb3Iu
bmVhcmVuZF9hdmVyYWdlX2Jsb2NrcyA8PCAiLCI7CisgIG9zdCA8PCAiXCJub3JtYWxfdHVuaW5n
XCI6IHsiOworICBvc3QgPDwgIlwibWFza19sZlwiOiBbIjsKKyAgb3N0IDw8IGNvbmZpZy5zdXBw
cmVzc29yLm5vcm1hbF90dW5pbmcubWFza19sZi5lbnJfdHJhbnNwYXJlbnQgPDwgIiwiOworICBv
c3QgPDwgY29uZmlnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2xmLmVucl9zdXBwcmVz
cyA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tf
bGYuZW1yX3RyYW5zcGFyZW50OworICBvc3QgPDwgIl0sIjsKKyAgb3N0IDw8ICJcIm1hc2tfaGZc
IjogWyI7CisgIG9zdCA8PCBjb25maWcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYu
ZW5yX3RyYW5zcGFyZW50IDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5vcm1h
bF90dW5pbmcubWFza19oZi5lbnJfc3VwcHJlc3MgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLnN1
cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2hmLmVtcl90cmFuc3BhcmVudDsKKyAgb3N0IDw8
ICJdLCI7CisgIG9zdCA8PCAiXCJtYXhfaW5jX2ZhY3RvclwiOiAiCisgICAgICA8PCBjb25maWcu
c3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1heF9pbmNfZmFjdG9yIDw8ICIsIjsKKyAgb3N0IDw8
ICJcIm1heF9kZWNfZmFjdG9yX2xmXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29yLm5v
cm1hbF90dW5pbmcubWF4X2RlY19mYWN0b3JfbGY7CisgIG9zdCA8PCAifSwiOworICBvc3QgPDwg
IlwibmVhcmVuZF90dW5pbmdcIjogeyI7CisgIG9zdCA8PCAiXCJtYXNrX2xmXCI6IFsiOworICBv
c3QgPDwgY29uZmlnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZi5lbnJfdHJhbnNw
YXJlbnQgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcu
bWFza19sZi5lbnJfc3VwcHJlc3MgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3Iu
bmVhcmVuZF90dW5pbmcubWFza19sZi5lbXJfdHJhbnNwYXJlbnQ7CisgIG9zdCA8PCAiXSwiOwor
ICBvc3QgPDwgIlwibWFza19oZlwiOiBbIjsKKyAgb3N0IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5l
YXJlbmRfdHVuaW5nLm1hc2tfaGYuZW5yX3RyYW5zcGFyZW50IDw8ICIsIjsKKyAgb3N0IDw8IGNv
bmZpZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfaGYuZW5yX3N1cHByZXNzIDw8ICIs
IjsKKyAgb3N0IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfaGYuZW1y
X3RyYW5zcGFyZW50OworICBvc3QgPDwgIl0sIjsKKyAgb3N0IDw8ICJcIm1heF9pbmNfZmFjdG9y
XCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1heF9pbmNf
ZmFjdG9yIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm1heF9kZWNfZmFjdG9yX2xmXCI6ICIKKyAgICAg
IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1heF9kZWNfZmFjdG9yX2xmOwor
ICBvc3QgPDwgIn0sIjsKKyAgb3N0IDw8ICJcImRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uXCI6
IHsiOworICBvc3QgPDwgIlwiZW5yX3RocmVzaG9sZFwiOiAiCisgICAgICA8PCBjb25maWcuc3Vw
cHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5lbnJfdGhyZXNob2xkIDw8ICIsIjsK
KyAgb3N0IDw8ICJcImVucl9leGl0X3RocmVzaG9sZFwiOiAiCisgICAgICA8PCBjb25maWcuc3Vw
cHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5lbnJfZXhpdF90aHJlc2hvbGQgPDwg
IiwiOworICBvc3QgPDwgIlwic25yX3RocmVzaG9sZFwiOiAiCisgICAgICA8PCBjb25maWcuc3Vw
cHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5zbnJfdGhyZXNob2xkIDw8ICIsIjsK
KyAgb3N0IDw8ICJcImhvbGRfZHVyYXRpb25cIjogIgorICAgICAgPDwgY29uZmlnLnN1cHByZXNz
b3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uaG9sZF9kdXJhdGlvbiA8PCAiLCI7CisgIG9z
dCA8PCAiXCJ0cmlnZ2VyX3RocmVzaG9sZFwiOiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nv
ci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi50cmlnZ2VyX3RocmVzaG9sZCA8PCAiLCI7Cisg
IG9zdCA8PCAiXCJ1c2VfZHVyaW5nX2luaXRpYWxfcGhhc2VcIjogIgorICAgICAgPDwgY29uZmln
LnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24udXNlX2R1cmluZ19pbml0aWFs
X3BoYXNlOworICBvc3QgPDwgIn0sIjsKKyAgb3N0IDw8ICJcImhpZ2hfYmFuZHNfc3VwcHJlc3Np
b25cIjogeyI7CisgIG9zdCA8PCAiXCJlbnJfdGhyZXNob2xkXCI6ICIKKyAgICAgIDw8IGNvbmZp
Zy5zdXBwcmVzc29yLmhpZ2hfYmFuZHNfc3VwcHJlc3Npb24uZW5yX3RocmVzaG9sZCA8PCAiLCI7
CisgIG9zdCA8PCAiXCJtYXhfZ2Fpbl9kdXJpbmdfZWNob1wiOiAiCisgICAgICA8PCBjb25maWcu
c3VwcHJlc3Nvci5oaWdoX2JhbmRzX3N1cHByZXNzaW9uLm1heF9nYWluX2R1cmluZ19lY2hvOwor
ICBvc3QgPDwgIn0sIjsKKyAgb3N0IDw8ICJcImZsb29yX2ZpcnN0X2luY3JlYXNlXCI6ICIgPDwg
Y29uZmlnLnN1cHByZXNzb3IuZmxvb3JfZmlyc3RfaW5jcmVhc2UKKyAgICAgIDw8ICIsIjsKKyAg
b3N0IDw8ICJcImVuZm9yY2VfdHJhbnNwYXJlbnRcIjogIgorICAgICAgPDwgKGNvbmZpZy5zdXBw
cmVzc29yLmVuZm9yY2VfdHJhbnNwYXJlbnQgPyAidHJ1ZSIgOiAiZmFsc2UiKSA8PCAiLCI7Cisg
IG9zdCA8PCAiXCJlbmZvcmNlX2VtcHR5X2hpZ2hlcl9iYW5kc1wiOiAiCisgICAgICA8PCAoY29u
ZmlnLnN1cHByZXNzb3IuZW5mb3JjZV9lbXB0eV9oaWdoZXJfYmFuZHMgPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKKyAgb3N0IDw8ICJ9IjsKKyAgb3N0IDw8ICJ9IjsKKyAgb3N0IDw8ICJ9IjsKKworICBy
ZXR1cm4gb3N0LlJlbGVhc2UoKTsKK30KK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9l
Y2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44OTczNjUwZjg1YzFhNjE3NTNjYmM1OTFkNGYxNjIxMjg2YTk4MWQ0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbi5oCkBAIC0wLDAgKzEsNDQgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9BVURJT19FQ0hPX0NBTkNFTExF
UjNfQ09ORklHX0pTT05fSF8KKyNkZWZpbmUgQVBJX0FVRElPX0VDSE9fQ0FOQ0VMTEVSM19DT05G
SUdfSlNPTl9IXworCisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25m
aWcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgorCituYW1lc3Bh
Y2Ugd2VicnRjIHsKKy8vIFBhcnNlcyBhIEpTT04tZW5jb2RlZCBzdHJpbmcgaW50byBhbiBBZWMz
IGNvbmZpZy4gRmllbGRzIGNvcnJlc3BvbmRzIHRvCisvLyBzdWJzdHJ1Y3QgbmFtZXMsIHdpdGgg
dGhlIGFkZGl0aW9uIHRoYXQgdGhlcmUgbXVzdCBiZSBhIHRvcC1sZXZlbCBub2RlCisvLyAiYWVj
MyIuIFByb2R1Y2VzIGRlZmF1bHQgY29uZmlnIHZhbHVlcyBmb3IgYW55dGhpbmcgdGhhdCBjYW5u
b3QgYmUgcGFyc2VkCisvLyBmcm9tIHRoZSBzdHJpbmcuIElmIGFueSBlcnJvciB3YXMgZm91bmQg
aW4gdGhlIHBhcnNpbmcsIHBhcnNpbmdfc3VjY2Vzc2Z1bCBpcworLy8gc2V0IHRvIGZhbHNlLgor
UlRDX0VYUE9SVCB2b2lkIEFlYzNDb25maWdGcm9tSnNvblN0cmluZyhhYnNsOjpzdHJpbmdfdmll
dyBqc29uX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RWNob0NhbmNlbGxlcjNDb25maWcqIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCogcGFyc2luZ19zdWNjZXNzZnVsKTsKKworLy8gVG8gYmUgZGVw
cmVjYXRlZC4KKy8vIFBhcnNlcyBhIEpTT04tZW5jb2RlZCBzdHJpbmcgaW50byBhbiBBZWMzIGNv
bmZpZy4gRmllbGRzIGNvcnJlc3BvbmRzIHRvCisvLyBzdWJzdHJ1Y3QgbmFtZXMsIHdpdGggdGhl
IGFkZGl0aW9uIHRoYXQgdGhlcmUgbXVzdCBiZSBhIHRvcC1sZXZlbCBub2RlCisvLyAiYWVjMyIu
IFJldHVybnMgZGVmYXVsdCBjb25maWcgdmFsdWVzIGZvciBhbnl0aGluZyB0aGF0IGNhbm5vdCBi
ZSBwYXJzZWQgZnJvbQorLy8gdGhlIHN0cmluZy4KK1JUQ19FWFBPUlQgRWNob0NhbmNlbGxlcjND
b25maWcKK0FlYzNDb25maWdGcm9tSnNvblN0cmluZyhhYnNsOjpzdHJpbmdfdmlldyBqc29uX3N0
cmluZyk7CisKKy8vIEVuY29kZXMgYW4gQWVjMyBjb25maWcgaW4gSlNPTiBmb3JtYXQuIEZpZWxk
cyBjb3JyZXNwb25kcyB0byBzdWJzdHJ1Y3QgbmFtZXMsCisvLyB3aXRoIHRoZSBhZGRpdGlvbiB0
aGF0IHRoZSB0b3AtbGV2ZWwgbm9kZSBpcyBuYW1lZCAiYWVjMyIuCitzdGQ6OnN0cmluZyBBZWMz
Q29uZmlnVG9Kc29uU3RyaW5nKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpOwor
Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX0FVRElPX0VDSE9fQ0FO
Q0VMTEVSM19DT05GSUdfSlNPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19mYWN0b3J5Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNo
b19jYW5jZWxsZXIzX2ZhY3RvcnkuaAppbmRleCBmNmRiMTE2ODUwMzdhMWEyYzMyZDg0YTZmNzY1
YTI4N2ZjNDc1YjdmLi45MDUyZDk5YmIxZWI4OTFiZGMzY2ViOWY5ZmZhNmE5MjBhYzMyNjIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW8vZWNob19jYW5jZWxsZXIzX2ZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2ZhY3Rvcnku
aApAQCAtMTUsMTAgKzE1LDExIEBACiAKICNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxs
ZXIzX2NvbmZpZy5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NvbnRyb2wuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IAotY2xhc3MgRWNob0NhbmNlbGxlcjNGYWN0b3J5IDogcHVibGljIEVjaG9Db250cm9sRmFjdG9y
eSB7CitjbGFzcyBSVENfRVhQT1JUIEVjaG9DYW5jZWxsZXIzRmFjdG9yeSA6IHB1YmxpYyBFY2hv
Q29udHJvbEZhY3RvcnkgewogIHB1YmxpYzoKICAgLy8gRmFjdG9yeSBwcm9kdWNpbmcgRWNob0Nh
bmNlbGxlcjMgaW5zdGFuY2VzIHdpdGggdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KICAgRWNo
b0NhbmNlbGxlcjNGYWN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vdGVzdC9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby90ZXN0L0JVSUxELmduCmlu
ZGV4IDlhNzk3Nzg4ZjY4ZGNlYTcyZGU5MjEyM2MxYjU1MjRhNTE0NDdiYWQuLjRlMDRhOGE2NGEx
MDQ4YWYwMzMyNDMxYjQ2YzE1N2ZkYTZkZGRlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby90ZXN0L0JVSUxELmduCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby90ZXN0
L0JVSUxELmduCkBAIC0xNyw4ICsxNywxMiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAg
ICB0ZXN0b25seSA9IHRydWUKICAgICBzb3VyY2VzID0gWwogICAgICAgImF1ZGlvX2ZyYW1lX3Vu
aXR0ZXN0LmNjIiwKKyAgICAgICJlY2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb25fdW5pdHRlc3Qu
Y2MiLAorICAgICAgImVjaG9fY2FuY2VsbGVyM19jb25maWdfdW5pdHRlc3QuY2MiLAogICAgIF0K
ICAgICBkZXBzID0gWworICAgICAgIi4uOmFlYzNfY29uZmlnIiwKKyAgICAgICIuLjphZWMzX2Nv
bmZpZ19qc29uIiwKICAgICAgICIuLjphdWRpb19mcmFtZV9hcGkiLAogICAgICAgIi4uLy4uLy4u
L3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi8uLi8uLi90ZXN0OnRlc3Rf
c3VwcG9ydCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvYXVkaW8vdGVzdC9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb25fdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW8vdGVzdC9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb25fdW5pdHRlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2MzYTQ0NWM2MGEzNDEyZDAzYTBhMmNlZjI5NDdkZTE0ZDE1NmI1ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
by90ZXN0L2VjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbl91bml0dGVzdC5jYwpAQCAtMCwwICsx
LDQxIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2Fu
Y2VsbGVyM19jb25maWdfanNvbi5oIgorI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxl
cjNfY29uZmlnLmgiCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2Ugd2VicnRj
IHsKKworVEVTVChFY2hvQ2FuY2VsbGVyM0pzb25IZWxwZXJzLCBUb1N0cmluZ0FuZFBhcnNlSnNv
bikgeworICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjZmc7CisgIGNmZy5kZWxheS5kb3duX3NhbXBs
aW5nX2ZhY3RvciA9IDF1OworICBjZmcuZmlsdGVyLnNoYWRvd19pbml0aWFsLmxlbmd0aF9ibG9j
a3MgPSA3dTsKKyAgY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2hmLmVucl9zdXBw
cmVzcyA9IC41ZjsKKyAgc3RkOjpzdHJpbmcganNvbl9zdHJpbmcgPSBBZWMzQ29uZmlnVG9Kc29u
U3RyaW5nKGNmZyk7CisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNmZ190cmFuc2Zvcm1lZCA9IEFl
YzNDb25maWdGcm9tSnNvblN0cmluZyhqc29uX3N0cmluZyk7CisKKyAgLy8gRXhwZWN0IHVuY2hh
bmdlZCB2YWx1ZXMgdG8gcmVtYWluIGRlZmF1bHQuCisgIEVYUEVDVF9FUShjZmcuZmlsdGVyLm1h
aW4uZXJyb3JfZmxvb3IsCisgICAgICAgICAgICBjZmdfdHJhbnNmb3JtZWQuZmlsdGVyLm1haW4u
ZXJyb3JfZmxvb3IpOworICBFWFBFQ1RfRVEoY2ZnLmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVuLAor
ICAgICAgICAgICAgY2ZnX3RyYW5zZm9ybWVkLmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVuKTsKKyAg
RVhQRUNUX0VRKGNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19sZi5lbnJfc3VwcHJl
c3MsCisgICAgICAgICAgICBjZmdfdHJhbnNmb3JtZWQuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5n
Lm1hc2tfbGYuZW5yX3N1cHByZXNzKTsKKworICAvLyBFeHBlY3QgY2hhbmdlZCB2YWx1ZXMgdG8g
Y2FycnkgdGhyb3VnaCB0aGUgdHJhbnNmb3JtYXRpb24uCisgIEVYUEVDVF9FUShjZmcuZGVsYXku
ZG93bl9zYW1wbGluZ19mYWN0b3IsCisgICAgICAgICAgICBjZmdfdHJhbnNmb3JtZWQuZGVsYXku
ZG93bl9zYW1wbGluZ19mYWN0b3IpOworICBFWFBFQ1RfRVEoY2ZnLmZpbHRlci5zaGFkb3dfaW5p
dGlhbC5sZW5ndGhfYmxvY2tzLAorICAgICAgICAgICAgY2ZnX3RyYW5zZm9ybWVkLmZpbHRlci5z
aGFkb3dfaW5pdGlhbC5sZW5ndGhfYmxvY2tzKTsKKyAgRVhQRUNUX0VRKGNmZy5zdXBwcmVzc29y
Lm5vcm1hbF90dW5pbmcubWFza19oZi5lbnJfc3VwcHJlc3MsCisgICAgICAgICAgICBjZmdfdHJh
bnNmb3JtZWQuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYuZW5yX3N1cHByZXNzKTsK
K30KK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby90ZXN0L2VjaG9fY2FuY2VsbGVyM19j
b25maWdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW8vdGVzdC9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX3VuaXR0ZXN0LmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZmZTcyYWM5NThkZjU5YzU1NGU5MTAyOTc3MDdiNWQ3Y2ExNGMzMGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW8vdGVzdC9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX3VuaXR0ZXN0LmNjCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNs
dWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgorI2luY2x1ZGUgImFwaS9h
dWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb24uaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0
LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitURVNUKEVjaG9DYW5jZWxsZXIzQ29uZmlnLCBW
YWxpZENvbmZpZ0lzTm90TW9kaWZpZWQpIHsKKyAgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmln
OworICBFWFBFQ1RfVFJVRShFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6VmFsaWRhdGUoJmNvbmZpZykp
OworICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBkZWZhdWx0X2NvbmZpZzsKKyAgRVhQRUNUX0VRKEFl
YzNDb25maWdUb0pzb25TdHJpbmcoY29uZmlnKSwKKyAgICAgICAgICAgIEFlYzNDb25maWdUb0pz
b25TdHJpbmcoZGVmYXVsdF9jb25maWcpKTsKK30KKworVEVTVChFY2hvQ2FuY2VsbGVyM0NvbmZp
ZywgSW52YWxpZENvbmZpZ0lzQ29ycmVjdGVkKSB7CisgIC8vIENoYW5nZSBhIHBhcmFtZXRlciBh
bmQgdmFsaWRhdGUuCisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZzsKKyAgY29uZmlnLmVj
aG9fbW9kZWwubWluX25vaXNlX2Zsb29yX3Bvd2VyID0gLTE2MDAwMDAuZjsKKyAgRVhQRUNUX0ZB
TFNFKEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpWYWxpZGF0ZSgmY29uZmlnKSk7CisgIEVYUEVDVF9H
RShjb25maWcuZWNob19tb2RlbC5taW5fbm9pc2VfZmxvb3JfcG93ZXIsIDAuZik7CisgIC8vIFZl
cmlmeSByZW1haW5pbmcgcGFyYW1ldGVycyBhcmUgdW5jaGFuZ2VkLgorICBFY2hvQ2FuY2VsbGVy
M0NvbmZpZyBkZWZhdWx0X2NvbmZpZzsKKyAgY29uZmlnLmVjaG9fbW9kZWwubWluX25vaXNlX2Zs
b29yX3Bvd2VyID0KKyAgICAgIGRlZmF1bHRfY29uZmlnLmVjaG9fbW9kZWwubWluX25vaXNlX2Zs
b29yX3Bvd2VyOworICBFWFBFQ1RfRVEoQWVjM0NvbmZpZ1RvSnNvblN0cmluZyhjb25maWcpLAor
ICAgICAgICAgICAgQWVjM0NvbmZpZ1RvSnNvblN0cmluZyhkZWZhdWx0X2NvbmZpZykpOworfQor
CitURVNUKEVjaG9DYW5jZWxsZXIzQ29uZmlnLCBWYWxpZGF0ZWRDb25maWdzQXJlVmFsaWQpIHsK
KyAgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnOworICBjb25maWcuZGVsYXkuZG93bl9zYW1w
bGluZ19mYWN0b3IgPSA5ODM7CisgIEVYUEVDVF9GQUxTRShFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6
VmFsaWRhdGUoJmNvbmZpZykpOworICBFWFBFQ1RfVFJVRShFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6
VmFsaWRhdGUoJmNvbmZpZykpOworfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3MvQlVJTEQuZ24KaW5kZXggYTcwNjBhMjI5YWRmMDE3MTgxNDcyNDMz
M2E2OTgzNDNlMmNjYWFkNS4uMzFmZTJiZWM1OGIwM2JlNTNlMTQyODQ5NGEyNzAyYTBlNjI1NDM4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0JVSUxELmduCkBAIC0zMCwxMSArMzAs
MTMgQEAgcnRjX3NvdXJjZV9zZXQoImF1ZGlvX2NvZGVjc19hcGkiKSB7CiAgIF0KICAgZGVwcyA9
IFsKICAgICAiLi46YXJyYXlfdmlldyIsCisgICAgIi4uOmJpdHJhdGVfYWxsb2NhdGlvbiIsCiAg
ICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAog
ICAgICIuLi8uLi9ydGNfYmFzZTpkZXByZWNhdGlvbiIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0
Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6c2FuaXRpemVyIiwKKyAgICAi
Li4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9CVUlMRC5nbiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
TDE2L0JVSUxELmduCmluZGV4IDk3MjQ4MDUwMDEyNWZhOWRjZTI3MzA3YjQ3NTNkNjIxMTY2MWZl
MDQuLjM0ZWMyZTQyMDhlZjM0ODU2YjU4NTRiYTljMGNkZWY0Yjk5MzcyY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2Rl
Y3MvTDE2L0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L0JVSUxELmduCkBAIC0yMSwxMSArMjEsMTIgQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19lbmNvZGVyX0wxNiIpIHsKICAgXQogICBkZXBzID0g
WwogICAgICIuLjphdWRpb19jb2RlY3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1v
biIsCiAgICAgIi4uLy4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOnBjbTE2YiIsCiAgICAgIi4u
Ly4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jh
c2U6c2FmZV9taW5tYXgiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9y
dCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTM5LDEwICs0MCwx
MSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2RlY29kZXJfTDE2IikgewogICBdCiAgIGRl
cHMgPSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNf
Y29tbW9uIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6cGNtMTZiIiwKICAg
ICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi8uLi9y
dGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIs
CiAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2RlY29kZXJfTDE2LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYv
YXVkaW9fZGVjb2Rlcl9MMTYuY2MKaW5kZXggYTcxZTMwODcwMDdkZjNmZDc2ZmEyMzJmYzNlMzQ2
OGZhMzgyMWU5OS4uYmUwYzZiNTZiMjViNTY5ZWFlNWU2NWJjNzc4NTk4N2M0YzU4NjIxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rlcl9MMTYuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVj
b2Rlcl9MMTYuY2MKQEAgLTExLDcgKzExLDcgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L0wxNi9hdWRpb19kZWNvZGVyX0wxNi5oIgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5
LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkK
KyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2RlY29kZXJfcGNtMTZiLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20xNmJfY29tbW9uLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgpAQCAtMjMsNyArMjMs
NyBAQCBhYnNsOjpvcHRpb25hbDxBdWRpb0RlY29kZXJMMTY6OkNvbmZpZz4gQXVkaW9EZWNvZGVy
TDE2OjpTZHBUb0NvbmZpZygKICAgQ29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnNhbXBsZV9yYXRl
X2h6ID0gZm9ybWF0LmNsb2NrcmF0ZV9oejsKICAgY29uZmlnLm51bV9jaGFubmVscyA9IHJ0Yzo6
Y2hlY2tlZF9jYXN0PGludD4oZm9ybWF0Lm51bV9jaGFubmVscyk7Ci0gIHJldHVybiBTVFJfQ0FT
RV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIkwxNiIpID09IDAgJiYgY29uZmlnLklzT2soKQor
ICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIkwxNiIpICYmIGNv
bmZpZy5Jc09rKCkKICAgICAgICAgICAgICA/IGFic2w6Om9wdGlvbmFsPENvbmZpZz4oY29uZmln
KQogICAgICAgICAgICAgIDogYWJzbDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L2F1
ZGlvX2RlY29kZXJfTDE2LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19kZWNvZGVyX0wxNi5oCmluZGV4IDE4NGVj
MjRlZDkyZjFlMjJkMzBjOWIyZTZiZTdmM2Q3Zjc3ZTE1YzguLmYwYmUwMzY1OWM1NDhjMWM0Nzhi
M2FlMGU5NTY0ZTU1OTUzMDMxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2RlY29kZXJfTDE2
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rlcl9MMTYuaApAQCAtMTgsMTQgKzE4LDEzIEBACiAj
aW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4
cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gTDE2IGRlY29kZXIgQVBJIGZvciB1
c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rv
cnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVs
b3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRGVjb2Rl
ckwxNiB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBBdWRpb0RlY29kZXJMMTYgewogICBzdHJ1Y3QgQ29u
ZmlnIHsKICAgICBib29sIElzT2soKSBjb25zdCB7CiAgICAgICByZXR1cm4gKHNhbXBsZV9yYXRl
X2h6ID09IDgwMDAgfHwgc2FtcGxlX3JhdGVfaHogPT0gMTYwMDAgfHwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
TDE2L2F1ZGlvX2VuY29kZXJfTDE2LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZW5jb2Rlcl9MMTYuY2MKaW5k
ZXggYjUxNmY2Mjg2M2RhMjRmY2UzNWVmNTJkNDZhMGUwNGMyZDVjNzk3Zi4uMWJiNTUyYmM1YzFl
NmUzMjU3YjE4NTcyZjk3YjMzNDVmZGFlM2I3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZW5j
b2Rlcl9MMTYuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZW5jb2Rlcl9MMTYuY2MKQEAgLTExLDcgKzEx
LDcgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5o
IgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5
cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
bWF0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1
ZGlvX2VuY29kZXJfcGNtMTZiLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29k
ZWNzL3BjbTE2Yi9wY20xNmJfY29tbW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mv
c2FmZV9jb252ZXJzaW9ucy5oIgpAQCAtMzUsNyArMzUsNyBAQCBhYnNsOjpvcHRpb25hbDxBdWRp
b0VuY29kZXJMMTY6OkNvbmZpZz4gQXVkaW9FbmNvZGVyTDE2OjpTZHBUb0NvbmZpZygKICAgICAg
IGNvbmZpZy5mcmFtZV9zaXplX21zID0gcnRjOjpTYWZlQ2xhbXAoMTAgKiAoKnB0aW1lIC8gMTAp
LCAxMCwgNjApOwogICAgIH0KICAgfQotICByZXR1cm4gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1l
LmNfc3RyKCksICJMMTYiKSA9PSAwICYmIGNvbmZpZy5Jc09rKCkKKyAgcmV0dXJuIGFic2w6OkVx
dWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJMMTYiKSAmJiBjb25maWcuSXNPaygpCiAgICAg
ICAgICAgICAgPyBhYnNsOjpvcHRpb25hbDxDb25maWc+KGNvbmZpZykKICAgICAgICAgICAgICA6
IGFic2w6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9MMTYvYXVkaW9fZW5jb2Rlcl9MMTYuaAppbmRleCAzNDBlM2FmNDdmYmFmNzdjYWFlYjg0
NDMxMWE3NGI4OTUwNmVkZmNhLi5iNDEwMjg2ODAyZmU3Njg5YWNjNGY5ODg5Nzc4Yjg4Y2M4ZWU4
YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L2F1
ZGlvX2VuY29kZXJfTDE2LmgKQEAgLTE4LDE0ICsxOCwxMyBAQAogI2luY2x1ZGUgImFwaS9hdWRp
b19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9pZC5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2Rl
Y3MvYXVkaW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9y
bWF0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKIC8vIEwxNiBlbmNvZGVyIEFQSSBmb3IgdXNlIGFzIGEgdGVtcGxhdGUg
cGFyYW1ldGVyIHRvCiAvLyBDcmVhdGVBdWRpb0VuY29kZXJGYWN0b3J5PC4uLj4oKS4KLS8vCi0v
LyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNo
YW5nZSB3aXRob3V0IG5vdGljZS4KLXN0cnVjdCBBdWRpb0VuY29kZXJMMTYgeworc3RydWN0IFJU
Q19FWFBPUlQgQXVkaW9FbmNvZGVyTDE2IHsKICAgc3RydWN0IENvbmZpZyB7CiAgICAgYm9vbCBJ
c09rKCkgY29uc3QgewogICAgICAgcmV0dXJuIChzYW1wbGVfcmF0ZV9oeiA9PSA4MDAwIHx8IHNh
bXBsZV9yYXRlX2h6ID09IDE2MDAwIHx8CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJf
aWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuY2MKaW5kZXggYWM4NDEwN2VkYTEwODI0OWQ5
NGQzMWE4NzE3NzYzZTlmMDRhZjE3OC4uNmNiNTFlZDZiNzJjN2U0ZjQ2NTJkYzcyOGFhMzNhZTNl
Mzk1MjYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19jb2RlY19wYWlyX2lkLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVk
aW9fY29kZWNfcGFpcl9pZC5jYwpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgImFwaS9hdWRp
b19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9pZC5oIgogCiAjaW5jbHVkZSA8YXRvbWljPgorI2lu
Y2x1ZGUgPGNzdGRpbnQ+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19kZWNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaAppbmRleCBiMDFhNjZh
MDY0YTQ0ZWJmODllNWU4Nzg5MWM5YmQxM2JkZGE5ODk0Li44ODllMmM2MmQwZWQ4OWZhMDQ4Nzlm
OGI3YTg5NzFlYmIzYTVmZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L2F1ZGlvX2RlY29kZXIuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBBUElfQVVESU9fQ09E
RUNTX0FVRElPX0RFQ09ERVJfSF8KICNkZWZpbmUgQVBJX0FVRElPX0NPREVDU19BVURJT19ERUNP
REVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Rl
Y29kZXJfZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaAppbmRleCA5MGY5M2Yw
Y2Q1ZmM5MDhlOTkxODMxOTZmYWQwNmZkZGY3OGVlNGZiLi41NWUxOTdhMTRhOTI3MDgyMjZkM2Rm
YWJjMzU3ZjIzYzBhYTc1ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgKQEAgLTIzLDcgKzIzLDYgQEAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCiAvLyBBIGZhY3RvcnkgdGhhdCBjcmVhdGVzIEF1ZGlvRGVjb2RlcnMu
Ci0vLyBOT1RFOiBUaGlzIGNsYXNzIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkg
Y2hhbmdlIHdpdGhvdXQgbm90aWNlLgogY2xhc3MgQXVkaW9EZWNvZGVyRmFjdG9yeSA6IHB1Ymxp
YyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgc3RkOjp2ZWN0
b3I8QXVkaW9Db2RlY1NwZWM+IEdldFN1cHBvcnRlZERlY29kZXJzKCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3RvcnlfdGVtcGxhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9m
YWN0b3J5X3RlbXBsYXRlLmgKaW5kZXggY2RiZThiZGU3YTg0MmU4ZThkNWEyYTg2M2NhOGFlMWU4
Y2VjYjI4Ny4uMjJiYjdkZTQ3MjEzNmU4YzRlZWFjMmIxZDNlODY0MTQ0NDM2MzExYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3RvcnlfdGVtcGxhdGUuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Rl
Y29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oCkBAIC0xMTIsOCArMTEyLDYgQEAgY2xhc3MgQXVkaW9E
ZWNvZGVyRmFjdG9yeVQgOiBwdWJsaWMgQXVkaW9EZWNvZGVyRmFjdG9yeSB7CiAvLyBkZWNvZGVy
IHR5cGVzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgc3BlY2lmaWVkIGluIHRoZSB0ZW1wbGF0ZSBh
cmd1bWVudAogLy8gbGlzdCwgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IG9uZSB0aGF0IGNsYWltcyB0
byBiZSBhYmxlIHRvIGRvIHRoZSBqb2IuCiAvLwotLy8gTk9URTogVGhpcyBmdW5jdGlvbiBpcyBz
dGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLS8v
CiAvLyBUT0RPKGt3aWJlcmcpOiBQb2ludCBhdCBDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFj
dG9yeSgpIGZvciBhbiBleGFtcGxlIG9mCiAvLyBob3cgaXQgaXMgdXNlZC4KIHRlbXBsYXRlIDx0
eXBlbmFtZS4uLiBUcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9f
ZW5jb2Rlci5jYwppbmRleCA1OTVjMTExMzFlN2M0MTA2NmYzNGVlMjQxZTdmMTlmMzI5MDYyNzRh
Li4xZDg4NWY5Y2VjZjg0ZDgwOThmNGU0YzI0MTI3MWYwN2Q3ZWZlNThmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L2F1ZGlvX2VuY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmNjCkBAIC05Miw2ICs5Miwx
MSBAQCB2b2lkIEF1ZGlvRW5jb2Rlcjo6T25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aCgKICAgICBp
bnQgdGFyZ2V0X2F1ZGlvX2JpdHJhdGVfYnBzLAogICAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+
IGJ3ZV9wZXJpb2RfbXMpIHt9CiAKK3ZvaWQgQXVkaW9FbmNvZGVyOjpPblJlY2VpdmVkVXBsaW5r
QWxsb2NhdGlvbihCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpIHsKKyAgT25SZWNlaXZl
ZFVwbGlua0JhbmR3aWR0aCh1cGRhdGUudGFyZ2V0X2JpdHJhdGUuYnBzKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXBkYXRlLmJ3ZV9wZXJpb2QubXMoKSk7Cit9CisKIHZvaWQgQXVk
aW9FbmNvZGVyOjpPblJlY2VpdmVkUnR0KGludCBydHRfbXMpIHt9CiAKIHZvaWQgQXVkaW9FbmNv
ZGVyOjpPblJlY2VpdmVkT3ZlcmhlYWQoc2l6ZV90IG92ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXQp
IHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oCmlu
ZGV4IDZhMWY2NTM0YjIxYThhM2ZmYjZkMjA5ZDk1NTcxYzg5YWUyMDhhMTYuLmM5MDg1MTgwNjNk
NGRhN2M5NGFhMGU5MzQ2ZGI3ZWUzYWNiZWYxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rl
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oCkBAIC0xMSwxMyArMTEsMTMgQEAKICNpZm5kZWYg
QVBJX0FVRElPX0NPREVDU19BVURJT19FTkNPREVSX0hfCiAjZGVmaW5lIEFQSV9BVURJT19DT0RF
Q1NfQVVESU9fRU5DT0RFUl9IXwogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAi
YWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5j
bHVkZSAiYXBpL2NhbGwvYml0cmF0ZV9hbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
YnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZGVwcmVjYXRpb24uaCIKIApAQCAtMjIyLDYg
KzIyMiwxMCBAQCBjbGFzcyBBdWRpb0VuY29kZXIgewogICB2aXJ0dWFsIHZvaWQgT25SZWNlaXZl
ZFVwbGlua0JhbmR3aWR0aChpbnQgdGFyZ2V0X2F1ZGlvX2JpdHJhdGVfYnBzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBi
d2VfcGVyaW9kX21zKTsKIAorICAvLyBQcm92aWRlcyB0YXJnZXQgYXVkaW8gYml0cmF0ZSBhbmQg
Y29ycmVzcG9uZGluZyBwcm9iaW5nIGludGVydmFsIG9mCisgIC8vIHRoZSBiYW5kd2lkdGggZXN0
aW1hdG9yIHRvIHRoaXMgZW5jb2RlciB0byBhbGxvdyBpdCB0byBhZGFwdC4KKyAgdmlydHVhbCB2
b2lkIE9uUmVjZWl2ZWRVcGxpbmtBbGxvY2F0aW9uKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVw
ZGF0ZSk7CisKICAgLy8gUHJvdmlkZXMgUlRUIHRvIHRoaXMgZW5jb2RlciB0byBhbGxvdyBpdCB0
byBhZGFwdC4KICAgdmlydHVhbCB2b2lkIE9uUmVjZWl2ZWRSdHQoaW50IHJ0dF9tcyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFj
dG9yeS5oCmluZGV4IGZiNGUyM2ZmZTc4YjViMjJjNjdlMjI4ODhhMzI3MmM2N2FkM2I5YjkuLmIy
OTA5NjdjNzgwM2ZkNzQ3ZDhiNDdiMzQ2NWY0NDllNzRiZWFlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVk
aW9fZW5jb2Rlcl9mYWN0b3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaApAQCAt
MjMsNyArMjMsNiBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEEgZmFjdG9yeSB0aGF0IGNy
ZWF0ZXMgQXVkaW9FbmNvZGVycy4KLS8vIE5PVEU6IFRoaXMgY2xhc3MgaXMgc3RpbGwgdW5kZXIg
ZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCiBjbGFzcyBBdWRpb0Vu
Y29kZXJGYWN0b3J5IDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogIHB1YmxpYzoK
ICAgLy8gUmV0dXJucyBhIHByaW9yaXRpemVkIGxpc3Qgb2YgYXVkaW8gY29kZWNzLCB0byB1c2Ug
Zm9yIHNpZ25hbGluZyBldGMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeV90
ZW1wbGF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnlfdGVtcGxhdGUuaAppbmRleCAzNzZi
MzllNGM2ZjlmYzhlYWEzYzdlZjM3YWRjZGVlNjFjNDI4MzgzLi4yMDg4NjE5MDE5NjI2MmJhMjc3
N2NlNmNiYmE3OGZlZGU2NjllNzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9y
eV90ZW1wbGF0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlcl9mYWN0b3J5X3RlbXBsYXRlLmgKQEAg
LTEzMSw4ICsxMzEsNiBAQCBjbGFzcyBBdWRpb0VuY29kZXJGYWN0b3J5VCA6IHB1YmxpYyBBdWRp
b0VuY29kZXJGYWN0b3J5IHsKIC8vIGVuY29kZXJzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgc3Bl
Y2lmaWVkIGluIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBsaXN0LAogLy8gc3RvcHBpbmcgYXQgdGhl
IGZpcnN0IG9uZSB0aGF0IGNsYWltcyB0byBiZSBhYmxlIHRvIGRvIHRoZSBqb2IuCiAvLwotLy8g
Tk9URTogVGhpcyBmdW5jdGlvbiBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNo
YW5nZSB3aXRob3V0IG5vdGljZS4KLS8vCiAvLyBUT0RPKGt3aWJlcmcpOiBQb2ludCBhdCBDcmVh
dGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpIGZvciBhbiBleGFtcGxlIG9mCiAvLyBob3cg
aXQgaXMgdXNlZC4KIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUcz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVk
aW9fZm9ybWF0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuY2MKaW5kZXggODFlZDI5OWRkYjY2YWFmODM2
OTY3ZDRmNDQ2ZjczZTkwOGJjNzIxMS4uMTE3ODhiOTFlODI5MTk4YmYyNzdiYzM0ZGZmZTgwYjlm
ZjUzOWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3Jt
YXQuY2MKQEAgLTEwLDcgKzEwLDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVk
aW9fZm9ybWF0LmgiCiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWls
ZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIApAQCAtMzIsNyArMzIsNyBAQCBTZHBBdWRpb0Zvcm1hdDo6U2RwQXVkaW9Gb3Jt
YXQoYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSwKICAgICAgIHBhcmFtZXRlcnMocGFyYW0pIHt9CiAK
IGJvb2wgU2RwQXVkaW9Gb3JtYXQ6Ok1hdGNoZXMoY29uc3QgU2RwQXVkaW9Gb3JtYXQmIG8pIGNv
bnN0IHsKLSAgcmV0dXJuIFNUUl9DQVNFX0NNUChuYW1lLmNfc3RyKCksIG8ubmFtZS5jX3N0cigp
KSA9PSAwICYmCisgIHJldHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUsIG8ubmFtZSkg
JiYKICAgICAgICAgIGNsb2NrcmF0ZV9oeiA9PSBvLmNsb2NrcmF0ZV9oeiAmJiBudW1fY2hhbm5l
bHMgPT0gby5udW1fY2hhbm5lbHM7CiB9CiAKQEAgLTQxLDE5ICs0MSwxMSBAQCBTZHBBdWRpb0Zv
cm1hdCYgU2RwQXVkaW9Gb3JtYXQ6Om9wZXJhdG9yPShjb25zdCBTZHBBdWRpb0Zvcm1hdCYpID0g
ZGVmYXVsdDsKIFNkcEF1ZGlvRm9ybWF0JiBTZHBBdWRpb0Zvcm1hdDo6b3BlcmF0b3I9KFNkcEF1
ZGlvRm9ybWF0JiYpID0gZGVmYXVsdDsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNkcEF1ZGlv
Rm9ybWF0JiBhLCBjb25zdCBTZHBBdWRpb0Zvcm1hdCYgYikgewotICByZXR1cm4gU1RSX0NBU0Vf
Q01QKGEubmFtZS5jX3N0cigpLCBiLm5hbWUuY19zdHIoKSkgPT0gMCAmJgorICByZXR1cm4gYWJz
bDo6RXF1YWxzSWdub3JlQ2FzZShhLm5hbWUsIGIubmFtZSkgJiYKICAgICAgICAgIGEuY2xvY2ty
YXRlX2h6ID09IGIuY2xvY2tyYXRlX2h6ICYmIGEubnVtX2NoYW5uZWxzID09IGIubnVtX2NoYW5u
ZWxzICYmCiAgICAgICAgICBhLnBhcmFtZXRlcnMgPT0gYi5wYXJhbWV0ZXJzOwogfQogCi12b2lk
IHN3YXAoU2RwQXVkaW9Gb3JtYXQmIGEsIFNkcEF1ZGlvRm9ybWF0JiBiKSB7Ci0gIHVzaW5nIHN0
ZDo6c3dhcDsKLSAgc3dhcChhLm5hbWUsIGIubmFtZSk7Ci0gIHN3YXAoYS5jbG9ja3JhdGVfaHos
IGIuY2xvY2tyYXRlX2h6KTsKLSAgc3dhcChhLm51bV9jaGFubmVscywgYi5udW1fY2hhbm5lbHMp
OwotICBzd2FwKGEucGFyYW1ldGVycywgYi5wYXJhbWV0ZXJzKTsKLX0KLQogQXVkaW9Db2RlY0lu
Zm86OkF1ZGlvQ29kZWNJbmZvKGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbnVtX2NoYW5uZWxzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBiaXRyYXRlX2JwcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2F1ZGlvX2Zvcm1hdC5oCmluZGV4IGFhNWRiYjEzYjY1ZDcyZWQwZjRkNmQ2ZWU2ODZkNDcy
MDJmZDQ3OWMuLmI4YjA0MjE3OGJhMWE1ZTI0Mjc1ZTU1OTU3ZDc2YTUyZDhhNDgwYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvYXVkaW9fZm9ybWF0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaApAQCAtMTEsMTkg
KzExLDE4IEBACiAjaWZuZGVmIEFQSV9BVURJT19DT0RFQ1NfQVVESU9fRk9STUFUX0hfCiAjZGVm
aW5lIEFQSV9BVURJT19DT0RFQ1NfQVVESU9fRk9STUFUX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+
CiAKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKLSNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
IC8vIFNEUCBzcGVjaWZpY2F0aW9uIGZvciBhIHNpbmdsZSBhdWRpbyBjb2RlYy4KLS8vIE5PVEU6
IFRoaXMgY2xhc3MgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0
aG91dCBub3RpY2UuCi1zdHJ1Y3QgU2RwQXVkaW9Gb3JtYXQgeworc3RydWN0IFJUQ19FWFBPUlQg
U2RwQXVkaW9Gb3JtYXQgewogICB1c2luZyBQYXJhbWV0ZXJzID0gc3RkOjptYXA8c3RkOjpzdHJp
bmcsIHN0ZDo6c3RyaW5nPjsKIAogICBTZHBBdWRpb0Zvcm1hdChjb25zdCBTZHBBdWRpb0Zvcm1h
dCYpOwpAQCAtNTQsOCArNTMsNiBAQCBzdHJ1Y3QgU2RwQXVkaW9Gb3JtYXQgewogICBQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CiB9OwogCi12b2lkIHN3YXAoU2RwQXVkaW9Gb3JtYXQmIGEsIFNkcEF1
ZGlvRm9ybWF0JiBiKTsKLQogLy8gSW5mb3JtYXRpb24gYWJvdXQgaG93IGFuIGF1ZGlvIGZvcm1h
dCBpcyB0cmVhdGVkIGJ5IHRoZSBjb2RlYyBpbXBsZW1lbnRhdGlvbi4KIC8vIENvbnRhaW5zIGJh
c2ljIGluZm9ybWF0aW9uLCBzdWNoIGFzIHNhbXBsZSByYXRlIGFuZCBudW1iZXIgb2YgY2hhbm5l
bHMsIHdoaWNoCiAvLyBpc24ndCB1bmlmb3JtbHkgcHJlc2VudGVkIGJ5IFNEUC4gQWxzbyBjb250
YWlucyBmbGFncyBpbmRpY2F0aW5nIHN1cHBvcnQgZm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5f
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
LmgKaW5kZXggMzEyNzQwM2UyNDNmYjkwMTg2MzEwNWE3NmQ5NGRjNjZiOTM3ZGQ2OC4uM2FjY2Q0
YTMwMjBkMjQyOTkxODE0OWE0YjZiOWJmM2U2ODVlYzFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGlu
X2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2Zh
Y3RvcnkuaApAQCAtMTcsNyArMTcsNiBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIENyZWF0
ZXMgYSBuZXcgZmFjdG9yeSB0aGF0IGNhbiBjcmVhdGUgdGhlIGJ1aWx0LWluIHR5cGVzIG9mIGF1
ZGlvIGRlY29kZXJzLgotLy8gTk9URTogVGhpcyBmdW5jdGlvbiBpcyBzdGlsbCB1bmRlciBkZXZl
bG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgp
OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgKaW5k
ZXggZDM3ZmYyNTdlNmUzMmUzOWNjNzc3ODQ1ZmU4ZDM5NzJlYjNlMTNjYy4uM2M2N2RkMzBlNjZi
MjM1MWVkNDBhY2VhYzE1NGIxYjQyOGZiZDQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlv
X2VuY29kZXJfZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3Rvcnku
aApAQCAtMTcsNyArMTcsNiBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIENyZWF0ZXMgYSBu
ZXcgZmFjdG9yeSB0aGF0IGNhbiBjcmVhdGUgdGhlIGJ1aWx0LWluIHR5cGVzIG9mIGF1ZGlvIGVu
Y29kZXJzLgotLy8gTk9URTogVGhpcyBmdW5jdGlvbiBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVu
dCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b0VuY29kZXJGYWN0b3J5PiBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpOwogCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvQlVJTEQuZ24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3
MTEvQlVJTEQuZ24KaW5kZXggMTY5MTcyYTY2ODI5YWI3OTNmNTE4MzFhZDRjOWJhODg4NTA3NjY2
Yi4uM2I4ZjIzYzFiYzZlNzQzMDc1NWFjNWY3MmVlOTI4ZmZhNDM0MmI4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9nNzExL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9CVUlMRC5nbgpAQCAtMjEsMTEgKzIxLDEyIEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZW5jb2Rlcl9nNzExIikgewogICBdCiAgIGRlcHMg
PSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29t
bW9uIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6ZzcxMSIsCiAgICAgIi4u
Ly4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jh
c2U6c2FmZV9taW5tYXgiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9y
dCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTM5LDEwICs0MCwx
MSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2RlY29kZXJfZzcxMSIpIHsKICAgXQogICBk
ZXBzID0gWwogICAgICIuLjphdWRpb19jb2RlY3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRj
X2NvbW1vbiIsCiAgICAgIi4uLy4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmc3MTEiLAogICAg
ICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uLy4uL3J0
Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwK
ICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2RlY29kZXJfZzcxMS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcx
MS9hdWRpb19kZWNvZGVyX2c3MTEuY2MKaW5kZXggY2IxNjU4NGNkZWU1NDAyZWIyMDViNDNiNDdi
OTM5NTMxYTc3YTYwOS4uOTE1OTljNDE2YWRmOTNjNDU5ODk1YzMwMDNjZGZkZjMyNzg5YjZhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2RlY29kZXJfZzcxMS5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVk
aW9fZGVjb2Rlcl9nNzExLmNjCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgog
CiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVz
LmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0
Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19k
ZWNvZGVyX3BjbS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lv
bnMuaCIKIApAQCAtMjIsOCArMjIsOCBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogYWJzbDo6b3B0
aW9uYWw8QXVkaW9EZWNvZGVyRzcxMTo6Q29uZmlnPiBBdWRpb0RlY29kZXJHNzExOjpTZHBUb0Nv
bmZpZygKICAgICBjb25zdCBTZHBBdWRpb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIGNvbnN0IGJvb2wg
aXNfcGNtdSA9IFNUUl9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0cigpLCAiUENNVSIpID09IDA7
Ci0gIGNvbnN0IGJvb2wgaXNfcGNtYSA9IFNUUl9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0cigp
LCAiUENNQSIpID09IDA7CisgIGNvbnN0IGJvb2wgaXNfcGNtdSA9IGFic2w6OkVxdWFsc0lnbm9y
ZUNhc2UoZm9ybWF0Lm5hbWUsICJQQ01VIik7CisgIGNvbnN0IGJvb2wgaXNfcGNtYSA9IGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJQQ01BIik7CiAgIGlmIChmb3JtYXQuY2xv
Y2tyYXRlX2h6ID09IDgwMDAgJiYgZm9ybWF0Lm51bV9jaGFubmVscyA+PSAxICYmCiAgICAgICAo
aXNfcGNtdSB8fCBpc19wY21hKSkgewogICAgIENvbmZpZyBjb25maWc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L2c3MTEvYXVkaW9fZGVjb2Rlcl9nNzExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9nNzExLmgK
aW5kZXggODI3NWE4YzdhMTRiZmY0ZGY0ZDE0YzRjOGIzODU5MzY3Mzc4OWMyZS4uY2NkMWVlMDQ4
MDA1MjczM2I3MTZjNDY4M2VmZDc5MjRkMmI1MTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlv
X2RlY29kZXJfZzcxMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX2c3MTEuaApAQCAtMTgs
MTQgKzE4LDEzIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19jb2RlY19wYWly
X2lkLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gRzcxMSBk
ZWNvZGVyIEFQSSBmb3IgdXNlIGFzIGEgdGVtcGxhdGUgcGFyYW1ldGVyIHRvCiAvLyBDcmVhdGVB
dWRpb0RlY29kZXJGYWN0b3J5PC4uLj4oKS4KLS8vCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBz
dGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLXN0
cnVjdCBBdWRpb0RlY29kZXJHNzExIHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvRGVjb2Rlckc3
MTEgewogICBzdHJ1Y3QgQ29uZmlnIHsKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBrUGNtVSwga1Bj
bUEgfTsKICAgICBib29sIElzT2soKSBjb25zdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9f
ZW5jb2Rlcl9nNzExLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfZzcxMS5jYwppbmRleCAxZDVl
NTQxMjc2YjlhZWRkODZjNjhkMDFmNWM3YzcwN2NjMjhmZTNjLi4wY2M4ZGM0ZGRkMjllZjViNTVl
ZTA3MTkyN2E2OTQzZTYwMzM0ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9n
NzExLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19lbmNvZGVyX2c3MTEuY2MKQEAgLTE0LDcgKzE0LDcg
QEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
LSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2lu
Y2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfcGNtLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
bnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNz
L3NhZmVfbWlubWF4LmgiCkBAIC0yNCw4ICsyNCw4IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBh
YnNsOjpvcHRpb25hbDxBdWRpb0VuY29kZXJHNzExOjpDb25maWc+IEF1ZGlvRW5jb2Rlckc3MTE6
OlNkcFRvQ29uZmlnKAogICAgIGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgY29u
c3QgYm9vbCBpc19wY211ID0gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJQQ01V
IikgPT0gMDsKLSAgY29uc3QgYm9vbCBpc19wY21hID0gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1l
LmNfc3RyKCksICJQQ01BIikgPT0gMDsKKyAgY29uc3QgYm9vbCBpc19wY211ID0gYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIlBDTVUiKTsKKyAgY29uc3QgYm9vbCBpc19wY21h
ID0gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIlBDTUEiKTsKICAgaWYgKGZv
cm1hdC5jbG9ja3JhdGVfaHogPT0gODAwMCAmJiBmb3JtYXQubnVtX2NoYW5uZWxzID49IDEgJiYK
ICAgICAgIChpc19wY211IHx8IGlzX3BjbWEpKSB7CiAgICAgQ29uZmlnIGNvbmZpZzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvZzcxMS9hdWRpb19lbmNvZGVyX2c3MTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19lbmNvZGVy
X2c3MTEuaAppbmRleCA2YjZlYjVmY2UwY2U1NGZjYmQ2MGM2NGZlYTY3ZDliY2RhMWIxNjg2Li4y
M2FlMThiNWUzZjAzMmI4MzljZjdlOTA5ZTA4NDQ1ZjNiNjhlMGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3
MTEvYXVkaW9fZW5jb2Rlcl9nNzExLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfZzcxMS5o
CkBAIC0xOCwxNCArMTgsMTMgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Nv
ZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIu
aCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAv
LyBHNzExIGVuY29kZXIgQVBJIGZvciB1c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8v
IENyZWF0ZUF1ZGlvRW5jb2RlckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3Ry
dWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90
aWNlLgotc3RydWN0IEF1ZGlvRW5jb2Rlckc3MTEgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9F
bmNvZGVyRzcxMSB7CiAgIHN0cnVjdCBDb25maWcgewogICAgIGVudW0gY2xhc3MgVHlwZSB7IGtQ
Y21VLCBrUGNtQSB9OwogICAgIGJvb2wgSXNPaygpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcy
Mi9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpb19jb2RlY3MvZzcyMi9CVUlMRC5nbgppbmRleCA1MGIxMzk2ZDI5MTVlYmZmMmM2ZDEx
Y2UzNWRjYzc4OTFjM2IxYzMwLi5lNDMyMWQyOTkzMTdhZjhmMDFhZDNlNTYyYTA0MzA5NmVlMWVm
MjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL0JVSUxELmduCkBA
IC0yOSwxMSArMjksMTIgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19lbmNvZGVyX2c3MjIi
KSB7CiAgIGRlcHMgPSBbCiAgICAgIjphdWRpb19lbmNvZGVyX2c3MjJfY29uZmlnIiwKICAgICAi
Li46YXVkaW9fY29kZWNzX2FwaSIsCi0gICAgIi4uLy4uLy4uOndlYnJ0Y19jb21tb24iLAogICAg
ICIuLi8uLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpnNzIyIiwKICAgICAiLi4vLi4vLi4vcnRj
X2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpzYWZlX21p
bm1heCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtNDcsMTAgKzQ4LDExIEBAIHJ0Y19z
dGF0aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rlcl9nNzIyIikgewogICBdCiAgIGRlcHMgPSBbCiAg
ICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwK
ICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6ZzcyMiIsCiAgICAgIi4uLy4uLy4u
L3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2Uvc3lz
dGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1v
cnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2Rl
Y29kZXJfZzcyMi5jYwppbmRleCBmMWUyYWZiYWI1MGQwZmY3ZDAzODY0NWU4NGNmN2YyNTZiMTk4
ZTFhLi4yY2MxNmMzN2Q5NGQ2NTBiNGVlYWJiMjZjZGM0ZDI5YjgwNDU1ODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVy
X2c3MjIuY2MKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRl
ICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcy
Mi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKIApA
QCAtMjIsNyArMjIsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogYWJzbDo6b3B0aW9uYWw8QXVk
aW9EZWNvZGVyRzcyMjo6Q29uZmlnPiBBdWRpb0RlY29kZXJHNzIyOjpTZHBUb0NvbmZpZygKICAg
ICBjb25zdCBTZHBBdWRpb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIHJldHVybiBTVFJfQ0FTRV9DTVAo
Zm9ybWF0Lm5hbWUuY19zdHIoKSwgIkc3MjIiKSA9PSAwICYmCisgIHJldHVybiBhYnNsOjpFcXVh
bHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiRzcyMiIpICYmCiAgICAgICAgICAgICAgICAgIGZv
cm1hdC5jbG9ja3JhdGVfaHogPT0gODAwMCAmJgogICAgICAgICAgICAgICAgICAoZm9ybWF0Lm51
bV9jaGFubmVscyA9PSAxIHx8IGZvcm1hdC5udW1fY2hhbm5lbHMgPT0gMikKICAgICAgICAgICAg
ICA/IGFic2w6Om9wdGlvbmFsPENvbmZpZz4oCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVj
b2Rlcl9nNzIyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmgKaW5kZXggYjdiYjA4OTNm
MzMwM2UzYTRmOThhNTdlNjg3YmVlNjIwNTA0ZWM5ZS4uMmE2NzQ5MjZkYmNjZjFjNzZjMDkwNTk1
ZGVlYjEzOTBjM2ExM2Y4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIuaApAQCAtMTgsMTQgKzE4LDEzIEBACiAj
aW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4
cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gRzcyMiBkZWNvZGVyIEFQSSBmb3Ig
dXNlIGFzIGEgdGVtcGxhdGUgcGFyYW1ldGVyIHRvCiAvLyBDcmVhdGVBdWRpb0RlY29kZXJGYWN0
b3J5PC4uLj4oKS4KLS8vCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZl
bG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLXN0cnVjdCBBdWRpb0RlY29k
ZXJHNzIyIHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvRGVjb2Rlckc3MjIgewogICBzdHJ1Y3Qg
Q29uZmlnIHsKICAgICBib29sIElzT2soKSBjb25zdCB7IHJldHVybiBudW1fY2hhbm5lbHMgPT0g
MSB8fCBudW1fY2hhbm5lbHMgPT0gMjsgfQogICAgIGludCBudW1fY2hhbm5lbHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJf
ZzcyMi5jYwppbmRleCAwY2Y3MTYzOWJmMzJmOTM3ZDJmZDQ1MjQ3MGE0MWJlODdmODlhYjRmLi42
Mzc0YWU4MDJmYWE4Nzc0OGNjYmE0NmUxNzI3NTJiYjc2NjhjMzc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3
MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIu
Y2MKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChi
dWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgpAQCAtMjQsNyArMjQsNyBAQCBuYW1l
c3BhY2Ugd2VicnRjIHsKIAogYWJzbDo6b3B0aW9uYWw8QXVkaW9FbmNvZGVyRzcyMkNvbmZpZz4g
QXVkaW9FbmNvZGVyRzcyMjo6U2RwVG9Db25maWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQm
IGZvcm1hdCkgewotICBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJnNzIy
IikgIT0gMCB8fAorICBpZiAoIWFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJn
NzIyIikgfHwKICAgICAgIGZvcm1hdC5jbG9ja3JhdGVfaHogIT0gODAwMCkgewogICAgIHJldHVy
biBhYnNsOjpudWxsb3B0OwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9n
NzIyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmgKaW5kZXggYjk3ZmUxYjE0Nzg5MGQw
ODU0Mjc2ZDEzMTEyMDhlOTliMTBjY2Y5YS4uMzI3YzBhZjA0YWE3Y2UwNDU1ODQxZjk4MWM2NjJh
YmY4NjJiNmRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2Rl
Y3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuaApAQCAtMTksMTQgKzE5LDEzIEBACiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2c3MjIv
YXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9y
dGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBHNzIyIGVuY29kZXIgQVBJ
IGZvciB1c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlvRW5jb2Rl
ckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVy
IGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlv
RW5jb2Rlckc3MjIgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9FbmNvZGVyRzcyMiB7CiAgIHVz
aW5nIENvbmZpZyA9IEF1ZGlvRW5jb2Rlckc3MjJDb25maWc7CiAgIHN0YXRpYyBhYnNsOjpvcHRp
b25hbDxBdWRpb0VuY29kZXJHNzIyQ29uZmlnPiBTZHBUb0NvbmZpZygKICAgICAgIGNvbnN0IFNk
cEF1ZGlvRm9ybWF0JiBhdWRpb19mb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2Vu
Y29kZXJfZzcyMl9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjJfY29uZmlnLmgK
aW5kZXggNzczZTQzMGNlM2MwYzhjMDZhZDJlNWM1NWEwNDUzOTE0MDM4Mjc0ZC4uMjg3ODk4NTg5
ZmNhYWEwMmZiYmQ4OTVhMWNmYmZjOTdkMzg5MWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlv
X2VuY29kZXJfZzcyMl9jb25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyX2Nv
bmZpZy5oCkBAIC0xMyw3ICsxMyw2IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi0vLyBOT1RF
OiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3
aXRob3V0IG5vdGljZS4KIHN0cnVjdCBBdWRpb0VuY29kZXJHNzIyQ29uZmlnIHsKICAgYm9vbCBJ
c09rKCkgY29uc3QgewogICAgIHJldHVybiBmcmFtZV9zaXplX21zID4gMCAmJiBmcmFtZV9zaXpl
X21zICUgMTAgPT0gMCAmJiBudW1fY2hhbm5lbHMgPj0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9C
VUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvaWxiYy9CVUlMRC5nbgppbmRleCBkNGY1MDRmZDRmOTEzN2NiY2ZmYzQyODE4
ZThjMDRhYTljMjFkZmM3Li5kNzY2ZmE0YTk3YTEzOGM2MmFhNDQyMDZlZTE0OTQ0ZDMwZGE0ZGNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL2lsYmMvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL0JVSUxELmduCkBAIC0y
OSwxMSArMjksMTEgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19lbmNvZGVyX2lsYmMiKSB7
CiAgIGRlcHMgPSBbCiAgICAgIjphdWRpb19lbmNvZGVyX2lsYmNfY29uZmlnIiwKICAgICAiLi46
YXVkaW9fY29kZWNzX2FwaSIsCi0gICAgIi4uLy4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIu
Li8uLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzppbGJjIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jh
c2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpzYWZlX21pbm1h
eCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTQ3LDEwICs0Nywx
MCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2RlY29kZXJfaWxiYyIpIHsKICAgXQogICBk
ZXBzID0gWwogICAgICIuLjphdWRpb19jb2RlY3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRj
X2NvbW1vbiIsCiAgICAgIi4uLy4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmlsYmMiLAogICAg
ICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
czpvcHRpb25hbCIsCiAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2ls
YmMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9pbGJjLmNjCmluZGV4IDFmNGM0NzVjNDA2NDI4
Yjc3MTYzNGNkZWZjMzU0MWU2OTM3ZGZjNzIuLjRhMDBmOGRiZjAwNTRjNmEzYTZhMTY5YTFlYTFm
YWE2ZWFkMTllYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5jYwpAQCAtMTQsMTQgKzE0LDE0IEBACiAjaW5j
bHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVk
ZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGFi
c2w6Om9wdGlvbmFsPEF1ZGlvRGVjb2RlcklsYmM6OkNvbmZpZz4gQXVkaW9EZWNvZGVySWxiYzo6
U2RwVG9Db25maWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICByZXR1
cm4gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJJTEJDIikgPT0gMCAmJgorICBy
ZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIklMQkMiKSAmJgogICAg
ICAgICAgICAgICAgICBmb3JtYXQuY2xvY2tyYXRlX2h6ID09IDgwMDAgJiYgZm9ybWF0Lm51bV9j
aGFubmVscyA9PSAxCiAgICAgICAgICAgICAgPyBhYnNsOjpvcHRpb25hbDxDb25maWc+KENvbmZp
ZygpKQogICAgICAgICAgICAgIDogYWJzbDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9h
dWRpb19kZWNvZGVyX2lsYmMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuaAppbmRleCAy
MGY2ZmZkMjg3ZjljOGYwOTc2Yjg1MDg3MmUxNjRmNmE3ZWQ4MjU1Li45YWI4NDc5NzdkODExMjcx
Njk5MDNjMDY1YmFiM2Q5ZjViMzRhZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rl
cl9pbGJjLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5oCkBAIC0yMyw4ICsyMyw2
IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBJTEJDIGRlY29kZXIgQVBJIGZvciB1c2UgYXMg
YSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rvcnk8Li4u
PigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50
IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgogc3RydWN0IEF1ZGlvRGVjb2RlcklsYmMg
ewogICBzdHJ1Y3QgQ29uZmlnIHt9OyAgLy8gRW1wdHktLS1ubyBjb25maWcgdmFsdWVzIG5lZWRl
ZCEKICAgc3RhdGljIGFic2w6Om9wdGlvbmFsPENvbmZpZz4gU2RwVG9Db25maWcoY29uc3QgU2Rw
QXVkaW9Gb3JtYXQmIGF1ZGlvX2Zvcm1hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5j
b2Rlcl9pbGJjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYwppbmRleCAyYWU3NTQ3
NGNjZDhkZWE5ZDUwM2RlN2Y4MGFmNTQxZDBkODA1MGUxLi40ZDAyOGM5YWFmNGMwODg0YzM4YjEw
MzRlYTA3MzAwZmU3MjEyNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJj
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKQEAgLTE0LDcgKzE0LDcgQEAK
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNp
bmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1
ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9z
YWZlX21pbm1heC5oIgpAQCAtNDAsNyArNDAsNyBAQCBpbnQgR2V0SWxiY0JpdHJhdGUoaW50IHB0
aW1lKSB7CiAKIGFic2w6Om9wdGlvbmFsPEF1ZGlvRW5jb2RlcklsYmNDb25maWc+IEF1ZGlvRW5j
b2RlcklsYmM6OlNkcFRvQ29uZmlnKAogICAgIGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQp
IHsKLSAgaWYgKFNUUl9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0cigpLCAiSUxCQyIpICE9IDAg
fHwKKyAgaWYgKCFhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLmNfc3RyKCksICJJ
TEJDIikgfHwKICAgICAgIGZvcm1hdC5jbG9ja3JhdGVfaHogIT0gODAwMCB8fCBmb3JtYXQubnVt
X2NoYW5uZWxzICE9IDEpIHsKICAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJf
aWxiYy5oCmluZGV4IDBhODZiMTYyZTgxYzYyOGNjZmJmZGQ5MDdhMDFkZDhhODk1ZTUzM2IuLmU0
YWVjYTcwZGU4NDBlMTc0NjIxMzk4NTQxZTk1NjFiMzQyODUwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxi
Yy9hdWRpb19lbmNvZGVyX2lsYmMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmgK
QEAgLTI0LDggKzI0LDYgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIElMQkMgZW5jb2RlciBB
UEkgZm9yIHVzZSBhcyBhIHRlbXBsYXRlIHBhcmFtZXRlciB0bwogLy8gQ3JlYXRlQXVkaW9FbmNv
ZGVyRmFjdG9yeTwuLi4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5k
ZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCiBzdHJ1Y3QgQXVk
aW9FbmNvZGVySWxiYyB7CiAgIHVzaW5nIENvbmZpZyA9IEF1ZGlvRW5jb2RlcklsYmNDb25maWc7
CiAgIHN0YXRpYyBhYnNsOjpvcHRpb25hbDxBdWRpb0VuY29kZXJJbGJjQ29uZmlnPiBTZHBUb0Nv
bmZpZygKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmNfY29uZmlnLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjX2NvbmZpZy5oCmluZGV4IDIyOTA5YTk1N2JiMjU3YjY4
Mzk4M2MxMjljNzU3MTg3YzBlODY2NjQuLjRkODJmOTkwMWNkZmUxOTNhNGRhNTQzZDU4MzBlYmFk
MjBmOTk0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmNfY29uZmlnLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiY19jb25maWcuaApAQCAtMTMsNyArMTMsNiBA
QAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwg
dW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCiBzdHJ1Y3Qg
QXVkaW9FbmNvZGVySWxiY0NvbmZpZyB7CiAgIGJvb2wgSXNPaygpIGNvbnN0IHsKICAgICByZXR1
cm4gKGZyYW1lX3NpemVfbXMgPT0gMjAgfHwgZnJhbWVfc2l6ZV9tcyA9PSAzMCB8fCBmcmFtZV9z
aXplX21zID09IDQwIHx8CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvQlVJ
TEQuZ24KaW5kZXggZWQ5ZDk2MjI1NzdjZjZhYTFjZGM0NmY2OGQwZDgwODE0N2EwMWQ1Yy4uYzdk
NmU0MzI3MTUyOTExM2NmMWZkNTZmZDhkY2Q4MGZjZGFmMGExMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2Fj
L0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3MvaXNhYy9CVUlMRC5nbgpAQCAtNzcsMTAgKzc3LDEwIEBAIHJ0Y19z
dGF0aWNfbGlicmFyeSgiYXVkaW9fZW5jb2Rlcl9pc2FjX2ZpeCIpIHsKICAgXQogICBkZXBzID0g
WwogICAgICIuLjphdWRpb19jb2RlY3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1v
biIsCiAgICAgIi4uLy4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmlzYWNfZml4IiwKICAgICAi
Li4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6
b3B0aW9uYWwiLAogICBdCiB9CkBAIC05NCwxMCArOTQsMTAgQEAgcnRjX3N0YXRpY19saWJyYXJ5
KCJhdWRpb19kZWNvZGVyX2lzYWNfZml4IikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uOmF1
ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4v
Li4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aXNhY19maXgiLAogICAgICIuLi8uLi8uLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mi
LAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAg
IF0KIH0KQEAgLTExMSwxMCArMTExLDExIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZW5j
b2Rlcl9pc2FjX2Zsb2F0IikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVj
c19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vLi4vbW9k
dWxlcy9hdWRpb19jb2Rpbmc6aXNhYyIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNl
X2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAog
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CkBAIC0xMjgsMTAgKzEyOSwxMSBA
QCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2RlY29kZXJfaXNhY19mbG9hdCIpIHsKICAgXQog
ICBkZXBzID0gWwogICAgICIuLjphdWRpb19jb2RlY3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2Vi
cnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmlzYWMiLAog
ICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uLy4u
L3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19maXguY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5jYwppbmRleCA0NDY2NDBmZjcwYzA2YjQ4
MDg1MjhiYmU3MjBmM2ViYmM5NjdhM2U3Li41MWFlNTcyZmE5ODJlNWU0OWJhOTcyZTk3M2UxNzA5
ZTU4ZDEwODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5jYwpAQCAtMTEsMTQgKzExLDE0IEBA
CiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19maXgu
aCIKIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgotI2luY2x1ZGUgImNvbW1vbl90
eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4
L2luY2x1ZGUvYXVkaW9fZGVjb2Rlcl9pc2FjZml4LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CiBhYnNsOjpvcHRpb25hbDxBdWRpb0RlY29kZXJJc2FjRml4OjpDb25maWc+IEF1ZGlvRGVjb2Rl
cklzYWNGaXg6OlNkcFRvQ29uZmlnKAogICAgIGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQp
IHsKLSAgcmV0dXJuIFNUUl9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0cigpLCAiSVNBQyIpID09
IDAgJiYKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJJU0FD
IikgJiYKICAgICAgICAgICAgICAgICAgZm9ybWF0LmNsb2NrcmF0ZV9oeiA9PSAxNjAwMCAmJiBm
b3JtYXQubnVtX2NoYW5uZWxzID09IDEKICAgICAgICAgICAgICA/IGFic2w6Om9wdGlvbmFsPENv
bmZpZz4oQ29uZmlnKCkpCiAgICAgICAgICAgICAgOiBhYnNsOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19maXguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVy
X2lzYWNfZml4LmgKaW5kZXggYTRjZTY4NTgzODU4NTJkMWMzYjZhZGVlY2E1NDEzYjZjNGY2YmVj
Ni4uYjdhNWNlZjZkYzVjZDczNjI5OTQ5ZTEyZjA4NjY4ZTk5MmI2MGIyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19maXguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rl
cl9pc2FjX2ZpeC5oCkBAIC0yMyw4ICsyMyw2IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBp
U0FDIGRlY29kZXIgQVBJIChmaXhlZC1wb2ludCBpbXBsZW1lbnRhdGlvbikgZm9yIHVzZSBhcyBh
IHRlbXBsYXRlCiAvLyBwYXJhbWV0ZXIgdG8gQ3JlYXRlQXVkaW9EZWNvZGVyRmFjdG9yeTwuLi4+
KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQg
YW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCiBzdHJ1Y3QgQXVkaW9EZWNvZGVySXNhY0Zp
eCB7CiAgIHN0cnVjdCBDb25maWcge307ICAvLyBFbXB0eS0tLW5vIGNvbmZpZyB2YWx1ZXMgbmVl
ZGVkIQogICBzdGF0aWMgYWJzbDo6b3B0aW9uYWw8Q29uZmlnPiBTZHBUb0NvbmZpZyhjb25zdCBT
ZHBBdWRpb0Zvcm1hdCYgYXVkaW9fZm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19k
ZWNvZGVyX2lzYWNfZmxvYXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Zsb2F0LmNj
CmluZGV4IDFjMTkyNmYxYTFlYmZiYzBhZThjMzY0N2FiNGYyY2FkMTk4Y2RmYTEuLmQ5ZGUzYTA4
YjMwMTIxODQ5Zjk5YzY0NGMzMjBlNzA0OWEyNWUwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRp
b19kZWNvZGVyX2lzYWNfZmxvYXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19m
bG9hdC5jYwpAQCAtMTEsMTQgKzExLDE0IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9p
c2FjL2F1ZGlvX2RlY29kZXJfaXNhY19mbG9hdC5oIgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkv
bWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5j
bHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9tYWluL2luY2x1ZGUvYXVkaW9fZGVjb2Rlcl9pc2Fj
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBhYnNsOjpvcHRpb25hbDxBdWRpb0RlY29kZXJJ
c2FjRmxvYXQ6OkNvbmZpZz4KIEF1ZGlvRGVjb2RlcklzYWNGbG9hdDo6U2RwVG9Db25maWcoY29u
c3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5u
YW1lLmNfc3RyKCksICJJU0FDIikgPT0gMCAmJgorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2Fz
ZShmb3JtYXQubmFtZSwgIklTQUMiKSAmJgogICAgICAgKGZvcm1hdC5jbG9ja3JhdGVfaHogPT0g
MTYwMDAgfHwgZm9ybWF0LmNsb2NrcmF0ZV9oeiA9PSAzMjAwMCkgJiYKICAgICAgIGZvcm1hdC5u
dW1fY2hhbm5lbHMgPT0gMSkgewogICAgIENvbmZpZyBjb25maWc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lz
YWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Zsb2F0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2Fj
X2Zsb2F0LmgKaW5kZXggY2MxMzk2MzQxOTZkZGY1ZWUzZDJhNDNmNjcyNjgzNGQ2NjM4OGVjOC4u
ZTc4ZjhiODFlZTAxZmQ2MzRhMDc3MTFhMzZmYjQ1YTY0YTZkM2RhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9p
c2FjL2F1ZGlvX2RlY29kZXJfaXNhY19mbG9hdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVy
X2lzYWNfZmxvYXQuaApAQCAtMTgsMTQgKzE4LDEzIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2Nv
ZGVjcy9hdWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIAogLy8gaVNBQyBkZWNvZGVyIEFQSSAoZmxvYXRpbmctcG9pbnQgaW1wbGVtZW50
YXRpb24pIGZvciB1c2UgYXMgYSB0ZW1wbGF0ZQogLy8gcGFyYW1ldGVyIHRvIENyZWF0ZUF1ZGlv
RGVjb2RlckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxs
IHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0
IEF1ZGlvRGVjb2RlcklzYWNGbG9hdCB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBBdWRpb0RlY29kZXJJ
c2FjRmxvYXQgewogICBzdHJ1Y3QgQ29uZmlnIHsKICAgICBib29sIElzT2soKSBjb25zdCB7CiAg
ICAgICByZXR1cm4gc2FtcGxlX3JhdGVfaHogPT0gMTYwMDAgfHwgc2FtcGxlX3JhdGVfaHogPT0g
MzIwMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2FjX2ZpeC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
aXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZml4LmNjCmluZGV4IGNkODk3NTM5OGI0MTc4YzllOTg1
NDk1Y2JjNGFkN2MwNTVkNWM2NmMuLmExMGQxZWU2MWFlOGY4OTZjZDJjNGNhZDRiMzY4YWVjNGQw
YTg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZml4LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2Rl
Y3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZml4LmNjCkBAIC0xMSw3ICsxMSw3IEBACiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19maXguaCIKIAog
I2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNo
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L2luY2x1
ZGUvYXVkaW9fZW5jb2Rlcl9pc2FjZml4LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nX3Rv
X251bWJlci5oIgogCkBAIC0xOSw3ICsxOSw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBhYnNs
OjpvcHRpb25hbDxBdWRpb0VuY29kZXJJc2FjRml4OjpDb25maWc+IEF1ZGlvRW5jb2RlcklzYWNG
aXg6OlNkcFRvQ29uZmlnKAogICAgIGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAg
aWYgKFNUUl9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0cigpLCAiSVNBQyIpID09IDAgJiYKKyAg
aWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJJU0FDIikgJiYKICAgICAg
IGZvcm1hdC5jbG9ja3JhdGVfaHogPT0gMTYwMDAgJiYgZm9ybWF0Lm51bV9jaGFubmVscyA9PSAx
KSB7CiAgICAgQ29uZmlnIGNvbmZpZzsKICAgICBjb25zdCBhdXRvIHB0aW1lX2l0ZXIgPSBmb3Jt
YXQucGFyYW1ldGVycy5maW5kKCJwdGltZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2Vu
Y29kZXJfaXNhY19maXguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZml4LmgKaW5kZXgg
NzMxZTQ4ZDBjMjc2NjhhYTc3YzNiMDhhNTZiMTYxMGVkYjZiYzVhNi4uYzNjMzY3MmI1ODNkMTk1
OWNkMGMwMWMyZjQ4ZjIxNjgxZDllMWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29k
ZXJfaXNhY19maXguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2FjX2ZpeC5oCkBAIC0y
Myw4ICsyMyw2IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBpU0FDIGVuY29kZXIgQVBJIChm
aXhlZC1wb2ludCBpbXBsZW1lbnRhdGlvbikgZm9yIHVzZSBhcyBhIHRlbXBsYXRlCiAvLyBwYXJh
bWV0ZXIgdG8gQ3JlYXRlQXVkaW9FbmNvZGVyRmFjdG9yeTwuLi4+KCkuCi0vLwotLy8gTk9URTog
VGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0
aG91dCBub3RpY2UuCiBzdHJ1Y3QgQXVkaW9FbmNvZGVySXNhY0ZpeCB7CiAgIHN0cnVjdCBDb25m
aWcgewogICAgIGJvb2wgSXNPaygpIGNvbnN0IHsgcmV0dXJuIGZyYW1lX3NpemVfbXMgPT0gMzAg
fHwgZnJhbWVfc2l6ZV9tcyA9PSA2MDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29k
ZXJfaXNhY19mbG9hdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZmxvYXQuY2MKaW5k
ZXggODNkMWZhZmYyZmMyNGZmMjBiZmY0MmM1MWRkMjI2MzY0YmEzMDEwMy4uMzc5ODJiMWYxNTg3
MmY3MzQ5MDU3OGFhNGEzNWJmMTE0Njg0NzA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2Vu
Y29kZXJfaXNhY19mbG9hdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2FjX2Zsb2F0
LmNjCkBAIC0xMSw3ICsxMSw3IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1
ZGlvX2VuY29kZXJfaXNhY19mbG9hdC5oIgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5
LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkK
KyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvaXNhYy9tYWluL2luY2x1ZGUvYXVkaW9fZW5jb2Rlcl9pc2FjLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nX3RvX251bWJlci5oIgogCkBAIC0xOSw3ICsxOSw3IEBA
IG5hbWVzcGFjZSB3ZWJydGMgewogCiBhYnNsOjpvcHRpb25hbDxBdWRpb0VuY29kZXJJc2FjRmxv
YXQ6OkNvbmZpZz4KIEF1ZGlvRW5jb2RlcklzYWNGbG9hdDo6U2RwVG9Db25maWcoY29uc3QgU2Rw
QXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNf
c3RyKCksICJJU0FDIikgPT0gMCAmJgorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3Jt
YXQubmFtZSwgIklTQUMiKSAmJgogICAgICAgKGZvcm1hdC5jbG9ja3JhdGVfaHogPT0gMTYwMDAg
fHwgZm9ybWF0LmNsb2NrcmF0ZV9oeiA9PSAzMjAwMCkgJiYKICAgICAgIGZvcm1hdC5udW1fY2hh
bm5lbHMgPT0gMSkgewogICAgIENvbmZpZyBjb25maWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVk
aW9fZW5jb2Rlcl9pc2FjX2Zsb2F0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2FjX2Zsb2F0
LmgKaW5kZXggNWRmMmRkM2Q2ZjRiMDY1ZDc0ZDA2NWZkMmUwNmJkMzVmYTg1YjMyMC4uMGNiOWMx
N2Q3MTA1ZWQzODY1YzgyZGFiOTA5YTExMDQxNmVjMjU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1
ZGlvX2VuY29kZXJfaXNhY19mbG9hdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNf
ZmxvYXQuaApAQCAtMTgsMTQgKzE4LDEzIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19l
bmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIAogLy8gaVNBQyBlbmNvZGVyIEFQSSAoZmxvYXRpbmctcG9pbnQgaW1wbGVtZW50YXRpb24p
IGZvciB1c2UgYXMgYSB0ZW1wbGF0ZQogLy8gcGFyYW1ldGVyIHRvIENyZWF0ZUF1ZGlvRW5jb2Rl
ckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVy
IGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlv
RW5jb2RlcklzYWNGbG9hdCB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBBdWRpb0VuY29kZXJJc2FjRmxv
YXQgewogICBzdHJ1Y3QgQ29uZmlnIHsKICAgICBib29sIElzT2soKSBjb25zdCB7CiAgICAgICBz
d2l0Y2ggKHNhbXBsZV9yYXRlX2h6KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L29wdXMvQlVJTEQuZ24KaW5kZXggODAwYWJiZTI3OWJmZTNhNjVkMTZiYjYzN2JjZGZmMDUzZjA5
MmU3YS4uNTU1MmMyMWZhNTEwNzk2NzZkODk3MDVhMDk5MmIxM2U5NGZmN2Q4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9vcHVzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9CVUlMRC5nbgpAQCAtMjAsNiArMjAsNyBA
QCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2VuY29kZXJfb3B1c19jb25maWciKSB7CiAgIF0K
ICAgZGVwcyA9IFsKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAor
ICAgICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogICBkZWZpbmVzID0g
W10KQEAgLTQ0LDYgKzQ1LDggQEAgcnRjX3NvdXJjZV9zZXQoImF1ZGlvX2VuY29kZXJfb3B1cyIp
IHsKICAgICAiLi46YXVkaW9fY29kZWNzX2FwaSIsCiAgICAgIi4uLy4uLy4uL21vZHVsZXMvYXVk
aW9fY29kaW5nOndlYnJ0Y19vcHVzIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCisg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTU3LDEw
ICs2MCwxMSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2RlY29kZXJfb3B1cyIpIHsKICAg
XQogICBkZXBzID0gWwogICAgICIuLjphdWRpb19jb2RlY3NfYXBpIiwKLSAgICAiLi4vLi4vLi46
d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOndlYnJ0
Y19vcHVzIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAg
ICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
czpvcHRpb25hbCIsCiAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29w
dXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmNjCmluZGV4IDQxMzk3ZjA0ZDIwMjQ4
OTNlMjY5MjJjZGUwZWRiNjE1NDJiMjFmOWYuLjJmMTY2OGI4MjViYzAyMDkwOGQ5ODM5ODFhNTEy
YmY3ZjM3NjBkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5jYwpAQCAtMTUsNyArMTUsNyBAQAogI2luY2x1
ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgotI2luY2x1ZGUg
ImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYWJz
bC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMzUs
NyArMzUsNyBAQCBhYnNsOjpvcHRpb25hbDxBdWRpb0RlY29kZXJPcHVzOjpDb25maWc+IEF1ZGlv
RGVjb2Rlck9wdXM6OlNkcFRvQ29uZmlnKAogICAgIH0KICAgICByZXR1cm4gMTsgIC8vIERlZmF1
bHQgdG8gbW9uby4KICAgfSgpOwotICBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3Ry
KCksICJvcHVzIikgPT0gMCAmJgorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQu
bmFtZSwgIm9wdXMiKSAmJgogICAgICAgZm9ybWF0LmNsb2NrcmF0ZV9oeiA9PSA0ODAwMCAmJiBm
b3JtYXQubnVtX2NoYW5uZWxzID09IDIgJiYKICAgICAgIG51bV9jaGFubmVscykgewogICAgIHJl
dHVybiBDb25maWd7Km51bV9jaGFubmVsc307CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZGVj
b2Rlcl9vcHVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmgKaW5kZXggZGUyNjAyNmI3
ODMzOTc5YjNmZWQ3YWQ5YjU3NDBlM2VhNzIwNjA3YS4uNmZiYmNiNTk4YTE0ZDc3YWU2ZGJmMjQ2
YmIzODdlNGY4YjhiNmQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuaApAQCAtMTgsMTQgKzE4LDEzIEBACiAj
aW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4
cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gT3B1cyBkZWNvZGVyIEFQSSBmb3Ig
dXNlIGFzIGEgdGVtcGxhdGUgcGFyYW1ldGVyIHRvCiAvLyBDcmVhdGVBdWRpb0RlY29kZXJGYWN0
b3J5PC4uLj4oKS4KLS8vCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZl
bG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLXN0cnVjdCBBdWRpb0RlY29k
ZXJPcHVzIHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvRGVjb2Rlck9wdXMgewogICBzdHJ1Y3Qg
Q29uZmlnIHsKICAgICBpbnQgbnVtX2NoYW5uZWxzOwogICB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVz
L2F1ZGlvX2VuY29kZXJfb3B1cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5oCmluZGV4
IDIwYWFhZjcyNmY5MzE0OTQ5MDMyMGQwODJlMDJmYmIwZGYzM2RkYmMuLjAzY2IwZDZiMzhjODMz
NDU2OWZiNjY4ODcyYWU0ZDhlNzZhNGQ2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19lbmNv
ZGVyX29wdXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmgKQEAgLTE5LDE0ICsx
OSwxMyBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oIgogI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAiYXBpL2F1
ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1c19jb25maWcuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8g
T3B1cyBlbmNvZGVyIEFQSSBmb3IgdXNlIGFzIGEgdGVtcGxhdGUgcGFyYW1ldGVyIHRvCiAvLyBD
cmVhdGVBdWRpb0VuY29kZXJGYWN0b3J5PC4uLj4oKS4KLS8vCi0vLyBOT1RFOiBUaGlzIHN0cnVj
dCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGlj
ZS4KLXN0cnVjdCBBdWRpb0VuY29kZXJPcHVzIHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvRW5j
b2Rlck9wdXMgewogICB1c2luZyBDb25maWcgPSBBdWRpb0VuY29kZXJPcHVzQ29uZmlnOwogICBz
dGF0aWMgYWJzbDo6b3B0aW9uYWw8QXVkaW9FbmNvZGVyT3B1c0NvbmZpZz4gU2RwVG9Db25maWco
CiAgICAgICBjb25zdCBTZHBBdWRpb0Zvcm1hdCYgYXVkaW9fZm9ybWF0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2Rl
Y3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXNfY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rl
cl9vcHVzX2NvbmZpZy5oCmluZGV4IGM3MDY3YmIxYzMyNDE4NmYyYjZkZGM1NjczMWM1ZWJiZTJh
ZDM1NjcuLjBhM2VlMmM4ZGZiMGQ0MGQ4YTJjMTIwODBjMDUxM2Y1ZGQ1MDYxY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19j
b2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXNfY29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlv
X2VuY29kZXJfb3B1c19jb25maWcuaApAQCAtMTYsMTEgKzE2LDExIEBACiAjaW5jbHVkZSA8dmVj
dG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi0vLyBOT1RF
OiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3
aXRob3V0IG5vdGljZS4KLXN0cnVjdCBBdWRpb0VuY29kZXJPcHVzQ29uZmlnIHsKK3N0cnVjdCBS
VENfRVhQT1JUIEF1ZGlvRW5jb2Rlck9wdXNDb25maWcgewogICBzdGF0aWMgY29uc3RleHByIGlu
dCBrRGVmYXVsdEZyYW1lU2l6ZU1zID0gMjA7CiAKICAgLy8gT3B1cyBBUEkgYWxsb3dzIGEgbWlu
IGJpdHJhdGUgb2YgNTAwYnBzLCBidXQgT3B1cyBkb2N1bWVudGF0aW9uIHN1Z2dlc3RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fb3B0aW9ucy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19vcHRpb25zLmNjCmluZGV4IGE0YTM3ZDIxOWE0M2M5ZWEyNTc2NWVhNTljYzNh
MzcxNmE5NTkzZmEuLmUzMzIxNGJhZDA0ZDZjZTliYTRmNDgyZmNjNDUwZDhlY2JiYTRmNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19vcHRpb25zLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19vcHRpb25zLmNjCkBAIC00OSw4ICs0OSw5IEBAIHZvaWQgQXVkaW9P
cHRpb25zOjpTZXRBbGwoY29uc3QgQXVkaW9PcHRpb25zJiBjaGFuZ2UpIHsKICAgICAgICAgICBj
aGFuZ2UuYXVkaW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyk7CiAgIFNldEZyb20oJmF1ZGlv
X2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlLAogICAgICAgICAgIGNoYW5nZS5hdWRpb19q
aXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSk7CisgIFNldEZyb20oJmF1ZGlvX2ppdHRlcl9i
dWZmZXJfbWluX2RlbGF5X21zLAorICAgICAgICAgIGNoYW5nZS5hdWRpb19qaXR0ZXJfYnVmZmVy
X21pbl9kZWxheV9tcyk7CiAgIFNldEZyb20oJnR5cGluZ19kZXRlY3Rpb24sIGNoYW5nZS50eXBp
bmdfZGV0ZWN0aW9uKTsKLSAgU2V0RnJvbSgmYWVjbV9nZW5lcmF0ZV9jb21mb3J0X25vaXNlLCBj
aGFuZ2UuYWVjbV9nZW5lcmF0ZV9jb21mb3J0X25vaXNlKTsKICAgU2V0RnJvbSgmZXhwZXJpbWVu
dGFsX2FnYywgY2hhbmdlLmV4cGVyaW1lbnRhbF9hZ2MpOwogICBTZXRGcm9tKCZleHRlbmRlZF9m
aWx0ZXJfYWVjLCBjaGFuZ2UuZXh0ZW5kZWRfZmlsdGVyX2FlYyk7CiAgIFNldEZyb20oJmRlbGF5
X2Fnbm9zdGljX2FlYywgY2hhbmdlLmRlbGF5X2Fnbm9zdGljX2FlYyk7CkBAIC03Nyw4ICs3OCw5
IEBAIGJvb2wgQXVkaW9PcHRpb25zOjpvcGVyYXRvcj09KGNvbnN0IEF1ZGlvT3B0aW9ucyYgbykg
Y29uc3QgewogICAgICAgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyA9PSBvLmF1
ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMgJiYKICAgICAgICAgIGF1ZGlvX2ppdHRlcl9i
dWZmZXJfZmFzdF9hY2NlbGVyYXRlID09CiAgICAgICAgICAgICAgby5hdWRpb19qaXR0ZXJfYnVm
ZmVyX2Zhc3RfYWNjZWxlcmF0ZSAmJgorICAgICAgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9taW5f
ZGVsYXlfbXMgPT0KKyAgICAgICAgICAgICBvLmF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5
X21zICYmCiAgICAgICAgICB0eXBpbmdfZGV0ZWN0aW9uID09IG8udHlwaW5nX2RldGVjdGlvbiAm
JgotICAgICAgICAgYWVjbV9nZW5lcmF0ZV9jb21mb3J0X25vaXNlID09IG8uYWVjbV9nZW5lcmF0
ZV9jb21mb3J0X25vaXNlICYmCiAgICAgICAgICBleHBlcmltZW50YWxfYWdjID09IG8uZXhwZXJp
bWVudGFsX2FnYyAmJgogICAgICAgICAgZXh0ZW5kZWRfZmlsdGVyX2FlYyA9PSBvLmV4dGVuZGVk
X2ZpbHRlcl9hZWMgJiYKICAgICAgICAgIGRlbGF5X2Fnbm9zdGljX2FlYyA9PSBvLmRlbGF5X2Fn
bm9zdGljX2FlYyAmJgpAQCAtMTA5LDggKzExMSw5IEBAIHN0ZDo6c3RyaW5nIEF1ZGlvT3B0aW9u
czo6VG9TdHJpbmcoKSBjb25zdCB7CiAgICAgICAgICAgICAgICAgYXVkaW9faml0dGVyX2J1ZmZl
cl9tYXhfcGFja2V0cyk7CiAgIFRvU3RyaW5nSWZTZXQoJnJlc3VsdCwgImF1ZGlvX2ppdHRlcl9i
dWZmZXJfZmFzdF9hY2NlbGVyYXRlIiwKICAgICAgICAgICAgICAgICBhdWRpb19qaXR0ZXJfYnVm
ZmVyX2Zhc3RfYWNjZWxlcmF0ZSk7CisgIFRvU3RyaW5nSWZTZXQoJnJlc3VsdCwgImF1ZGlvX2pp
dHRlcl9idWZmZXJfbWluX2RlbGF5X21zIiwKKyAgICAgICAgICAgICAgICBhdWRpb19qaXR0ZXJf
YnVmZmVyX21pbl9kZWxheV9tcyk7CiAgIFRvU3RyaW5nSWZTZXQoJnJlc3VsdCwgInR5cGluZyIs
IHR5cGluZ19kZXRlY3Rpb24pOwotICBUb1N0cmluZ0lmU2V0KCZyZXN1bHQsICJjb21mb3J0X25v
aXNlIiwgYWVjbV9nZW5lcmF0ZV9jb21mb3J0X25vaXNlKTsKICAgVG9TdHJpbmdJZlNldCgmcmVz
dWx0LCAiZXhwZXJpbWVudGFsX2FnYyIsIGV4cGVyaW1lbnRhbF9hZ2MpOwogICBUb1N0cmluZ0lm
U2V0KCZyZXN1bHQsICJleHRlbmRlZF9maWx0ZXJfYWVjIiwgZXh0ZW5kZWRfZmlsdGVyX2FlYyk7
CiAgIFRvU3RyaW5nSWZTZXQoJnJlc3VsdCwgImRlbGF5X2Fnbm9zdGljX2FlYyIsIGRlbGF5X2Fn
bm9zdGljX2FlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fb3B0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX29wdGlvbnMuaAppbmRleCBhZWNmZjQxNDI5OGNk
MjQ4ZWU0MmMxMDZmMmQ1MzBlNTNlNjMyNTUxLi5jMmQxZjQ0ODdjMzY4NzRkNTM4OWQ2ZDU0YTli
MWVhNDIxOGI1ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fb3B0aW9ucy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19vcHRpb25zLmgKQEAgLTExLDYgKzExLDcg
QEAKICNpZm5kZWYgQVBJX0FVRElPX09QVElPTlNfSF8KICNkZWZpbmUgQVBJX0FVRElPX09QVElP
TlNfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKQEAgLTUzLDkgKzU0LDEwIEBAIHN0cnVjdCBBdWRp
b09wdGlvbnMgewogICBhYnNsOjpvcHRpb25hbDxpbnQ+IGF1ZGlvX2ppdHRlcl9idWZmZXJfbWF4
X3BhY2tldHM7CiAgIC8vIEF1ZGlvIHJlY2VpdmVyIGppdHRlciBidWZmZXIgKE5ldEVxKSBmYXN0
IGFjY2VsZXJhdGUgbW9kZS4KICAgYWJzbDo6b3B0aW9uYWw8Ym9vbD4gYXVkaW9faml0dGVyX2J1
ZmZlcl9mYXN0X2FjY2VsZXJhdGU7CisgIC8vIEF1ZGlvIHJlY2VpdmVyIGppdHRlciBidWZmZXIg
KE5ldEVxKSBtaW5pbXVtIHRhcmdldCBkZWxheSBpbiBtaWxsaXNlY29uZHMuCisgIGFic2w6Om9w
dGlvbmFsPGludD4gYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXM7CiAgIC8vIEF1ZGlv
IHByb2Nlc3NpbmcgdG8gZGV0ZWN0IHR5cGluZy4KICAgYWJzbDo6b3B0aW9uYWw8Ym9vbD4gdHlw
aW5nX2RldGVjdGlvbjsKLSAgYWJzbDo6b3B0aW9uYWw8Ym9vbD4gYWVjbV9nZW5lcmF0ZV9jb21m
b3J0X25vaXNlOwogICBhYnNsOjpvcHRpb25hbDxib29sPiBleHBlcmltZW50YWxfYWdjOwogICBh
YnNsOjpvcHRpb25hbDxib29sPiBleHRlbmRlZF9maWx0ZXJfYWVjOwogICBhYnNsOjpvcHRpb25h
bDxib29sPiBkZWxheV9hZ25vc3RpY19hZWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FsbC9iaXRyYXRlX2FsbG9jYXRpb24uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYWxsL2JpdHJh
dGVfYWxsb2NhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkN2YyMWJjMWU5NDFjYTQ5YmY4NWQwYzdkMzZm
ZjM2MzBhMTY1MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FsbC9iaXRyYXRlX2FsbG9jYXRpb24uaApAQCAtMCwwICsx
LDQxIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworI2lmbmRlZiBBUElfQ0FMTF9CSVRSQVRFX0FMTE9D
QVRJT05fSF8KKyNkZWZpbmUgQVBJX0NBTExfQklUUkFURV9BTExPQ0FUSU9OX0hfCisKKyNpbmNs
dWRlICJhcGkvdW5pdHMvZGF0YV9yYXRlLmgiCisjaW5jbHVkZSAiYXBpL3VuaXRzL3RpbWVfZGVs
dGEuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRl
IHByb3ZpZGVzIGluZm9ybWF0aW9uIHRvIGFsbG9jYXRlZCBzdHJlYW1zIGFib3V0IHRoZWlyCisv
LyBiaXRyYXRlIGFsbG9jYXRpb24uIEl0IG9yaWdpbmF0ZXMgZnJvbSB0aGUgQml0cmF0ZUFsbG9j
YXRlciBjbGFzcyBhbmQgaXMKKy8vIHByb3BhZ2F0ZWQgZnJvbSB0aGVyZS4KK3N0cnVjdCBCaXRy
YXRlQWxsb2NhdGlvblVwZGF0ZSB7CisgIC8vIFRoZSBhbGxvY2F0ZWQgdGFyZ2V0IGJpdHJhdGUu
IE1lZGlhIHN0cmVhbXMgc2hvdWxkIHByb2R1Y2UgdGhpcyBhbW91bnQgb2YKKyAgLy8gZGF0YS4g
KE5vdGUgdGhhdCB0aGlzIG1heSBpbmNsdWRlIHBhY2tldCBvdmVyaGVhZCBkZXBlbmRpbmcgb24K
KyAgLy8gY29uZmlndXJhdGlvbi4pCisgIERhdGFSYXRlIHRhcmdldF9iaXRyYXRlID0gRGF0YVJh
dGU6Olplcm8oKTsKKyAgLy8gVGhlIGFsbG9jYXRlZCBwYXJ0IG9mIHRoZSBlc3RpbWF0ZWQgbGlu
ayBjYXBhY2l0eS4gVGhpcyBpcyBtb3JlIHN0YWJsZSB0aGFuCisgIC8vIHRoZSB0YXJnZXQgYXMg
aXQgaXMgYmFzZWQgb24gdGhlIHVuZGVybHlpbmcgbGluayBjYXBhY2l0eSBlc3RpbWF0ZS4gVGhp
cworICAvLyBzaG91bGQgYmUgdXNlZCB0byBjaGFuZ2UgZW5jb2RlciBjb25maWd1cmF0aW9uIHdo
ZW4gdGhlIGNvc3Qgb2YgY2hhbmdlIGlzCisgIC8vIGhpZ2guCisgIERhdGFSYXRlIGxpbmtfY2Fw
YWNpdHkgPSBEYXRhUmF0ZTo6WmVybygpOworICAvLyBQcmVkaWN0ZWQgcGFja2V0IGxvc3MgcmF0
aW8uCisgIGRvdWJsZSBwYWNrZXRfbG9zc19yYXRpbyA9IDA7CisgIC8vIFByZWRpY3RlZCByb3Vu
ZCB0cmlwIHRpbWUuCisgIFRpbWVEZWx0YSByb3VuZF90cmlwX3RpbWUgPSBUaW1lRGVsdGE6OlBs
dXNJbmZpbml0eSgpOworICAvLyB8YndlX3BlcmlvZHwgaXMgZGVwcmVjYXRlZCwgdXNlIHRoZSBs
aW5rIGNhcGFjaXR5IGFsbG9jYXRpb24gaW5zdGVhZC4KKyAgVGltZURlbHRhIGJ3ZV9wZXJpb2Qg
PSBUaW1lRGVsdGE6OlBsdXNJbmZpbml0eSgpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YworCisjZW5kaWYgIC8vIEFQSV9DQUxMX0JJVFJBVEVfQUxMT0NBVElPTl9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbGwvdHJh
bnNwb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2NhbGwvdHJhbnNwb3J0LmNjCmluZGV4IDBhOWRkNWJjYzdlMTU4NTFiNDQ4ZmMyNzgxMWViNGI1
ZTE3MDdkYmIuLmJjYWRjNzYyZGU0ZDE5MzRmNDA4M2RhYzE4ZjI1YWI4ZGRhMjM3YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYWxs
L3RyYW5zcG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvY2FsbC90cmFuc3BvcnQuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUg
ImFwaS9jYWxsL3RyYW5zcG9ydC5oIgogCisjaW5jbHVkZSA8Y3N0ZGludD4KKwogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKIFBhY2tldE9wdGlvbnM6OlBhY2tldE9wdGlvbnMoKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
Y2FsbC90cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9jYWxsL3RyYW5zcG9ydC5oCmluZGV4IDE4ZDIyNzA1Y2Q2ZGY5MTVjMWM2MjM0ZWZh
ODRjZjNiNTllOTk3OTYuLjMyZTVkZGY4NzRmYjFjNGNjMTBiNWYxYmZkOTEzZWRlMzExNTE4NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9jYWxsL3RyYW5zcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9jYWxsL3RyYW5zcG9ydC5oCkBAIC0zMiw2ICszMiw4IEBAIHN0cnVjdCBQ
YWNrZXRPcHRpb25zIHsKICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gYXBwbGljYXRpb25fZGF0YTsK
ICAgLy8gV2hldGhlciB0aGlzIGlzIGEgcmV0cmFuc21pc3Npb24gb2YgYW4gZWFybGllciBwYWNr
ZXQuCiAgIGJvb2wgaXNfcmV0cmFuc21pdCA9IGZhbHNlOworICBib29sIGluY2x1ZGVkX2luX2Zl
ZWRiYWNrID0gZmFsc2U7CisgIGJvb2wgaW5jbHVkZWRfaW5fYWxsb2NhdGlvbiA9IGZhbHNlOwog
fTsKIAogY2xhc3MgVHJhbnNwb3J0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FuZGlkYXRlLmNjCmluZGV4IGMyYzZjNTMw
MTcyY2NlMWI1ZTE5ZTUwY2ZmYTYwMWFiODA3Mjg1ZjMuLjI3NWIxNzM2NmMyMWNkY2QwZTdkNGU1
ZWEzYzc4MDhlZTU0NzNjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRhdGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbmRpZGF0ZS5jYwpAQCAtMTAsNiArMTAsOCBA
QAogCiAjaW5jbHVkZSAiYXBpL2NhbmRpZGF0ZS5oIgogCisjaW5jbHVkZSAicnRjX2Jhc2UvaGVs
cGVycy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2lwYWRkcmVzcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2Nh
bmRpZGF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2NhbmRpZGF0ZS5oCmluZGV4IDZlMDU0N2I1ZTJmZDg0ZThkZjAxMzg4N2Y1MGFkZmQ0MTcwNDQw
ZmYuLjRjNjUwZDliZGJkNTJkM2MzNGRlMGYzNTQwNmQxN2I4MDJjZmFjMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRhdGUu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2Fu
ZGlkYXRlLmgKQEAgLTE4LDE2ICsxOCwxNiBAQAogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9uZXR3b3JrX2NvbnN0YW50cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3NvY2tldGFkZHJlc3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5o
IgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKIC8vIENhbmRpZGF0ZSBmb3IgSUNFIGJhc2VkIGNv
bm5lY3Rpb24gZGlzY292ZXJ5LgogLy8gVE9ETyhwaG9nbHVuZCk6IHJlbW92ZSB0aGluZ3MgaW4g
aGVyZSB0aGF0IGFyZSBub3QgbmVlZGVkIGluIHRoZSBwdWJsaWMgQVBJLgogCi1jbGFzcyBDYW5k
aWRhdGUgeworY2xhc3MgUlRDX0VYUE9SVCBDYW5kaWRhdGUgewogIHB1YmxpYzoKICAgQ2FuZGlk
YXRlKCk7CiAgIC8vIFRPRE8ocHRoYXRjaGVyKTogTWF0Y2ggdGhlIG9yZGVyaW5nIGFuZCBwYXJh
bSBsaXN0IGFzIHBlciBSRkMgNTI0NQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyZWF0ZV9w
ZWVyY29ubmVjdGlvbl9mYWN0b3J5LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNmQwODZmNjYwMGQxN2MxNWMw
NjlkYTg2MjIwYzI5NTc4ZDcwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3Rv
cnkuY2MKQEAgLTAsMCArMSwxODIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJh
cGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCIKKworI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiYXBpL2NhbGwvY2FsbGZhY3RvcnlpbnRl
cmZhY2UuaCIKKyNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKKyNpbmNs
dWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUg
ImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAibG9n
Z2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfZmFjdG9yeS5oIgorI2luY2x1ZGUgImxv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX2ZhY3RvcnlfaW50ZXJmYWNlLmgiCisj
aW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvYmluZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisj
aWYgZGVmaW5lZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCitydGM6OnNjb3BlZF9yZWZwdHI8UGVl
ckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3Rvcnko
CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29k
ZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4g
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5KSB7CisgIHJldHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZh
Y3RvcnlXaXRoQXVkaW9NaXhlcigKKyAgICAgIG51bGxwdHIgLypuZXR3b3JrX3RocmVhZCovLCBu
dWxscHRyIC8qd29ya2VyX3RocmVhZCovLAorICAgICAgbnVsbHB0ciAvKnNpZ25hbGluZ190aHJl
YWQqLywgbnVsbHB0ciAvKmRlZmF1bHRfYWRtKi8sCisgICAgICBhdWRpb19lbmNvZGVyX2ZhY3Rv
cnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICAgIG51bGxwdHIgLyp2aWRlb19lbmNvZGVy
X2ZhY3RvcnkqLywgbnVsbHB0ciAvKnZpZGVvX2RlY29kZXJfZmFjdG9yeSovLAorICAgICAgbnVs
bHB0ciAvKmF1ZGlvX21peGVyKi8pOworfQorCisvLyBOb3RlOiBhbGwgdGhlIG90aGVyIENyZWF0
ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSB2YXJpYW50cyBqdXN0IGVuZCB1cCBjYWxsaW5nCisvLyB0
aGlzLCB1bHRpbWF0ZWx5LgorcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9y
eUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAorICAgIHJ0Yzo6VGhyZWFk
KiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKKyAgICBy
dGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBBdWRpb0RldmljZU1vZHVsZSogZGVm
YXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1
ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVy
RmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVv
RW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJS
dGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAorICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcpIHsKKyAgcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZ191c2UgPSBhdWRpb19wcm9j
ZXNzaW5nOworICBpZiAoIWF1ZGlvX3Byb2Nlc3NpbmdfdXNlKSB7CisgICAgYXVkaW9fcHJvY2Vz
c2luZ191c2UgPSBBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCk7CisgIH0KKworICBz
dGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2VuZ2lu
ZSgKKyAgICAgIGNyaWNrZXQ6OldlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAorICAg
ICAgICAgIGRlZmF1bHRfYWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJf
ZmFjdG9yeSwKKyAgICAgICAgICB2aWRlb19lbmNvZGVyX2ZhY3RvcnksIHZpZGVvX2RlY29kZXJf
ZmFjdG9yeSwgYXVkaW9fbWl4ZXIsCisgICAgICAgICAgYXVkaW9fcHJvY2Vzc2luZ191c2UpKTsK
KworICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEZhY3RvcnlJbnRlcmZhY2U+IGNhbGxfZmFjdG9yeSA9
IENyZWF0ZUNhbGxGYWN0b3J5KCk7CisKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nRmFj
dG9yeUludGVyZmFjZT4gZXZlbnRfbG9nX2ZhY3RvcnkgPQorICAgICAgQ3JlYXRlUnRjRXZlbnRM
b2dGYWN0b3J5KCk7CisKKyAgcmV0dXJuIENyZWF0ZU1vZHVsYXJQZWVyQ29ubmVjdGlvbkZhY3Rv
cnkoCisgICAgICBuZXR3b3JrX3RocmVhZCwgd29ya2VyX3RocmVhZCwgc2lnbmFsaW5nX3RocmVh
ZCwgc3RkOjptb3ZlKG1lZGlhX2VuZ2luZSksCisgICAgICBzdGQ6Om1vdmUoY2FsbF9mYWN0b3J5
KSwgc3RkOjptb3ZlKGV2ZW50X2xvZ19mYWN0b3J5KSk7Cit9CisKK3J0Yzo6c2NvcGVkX3JlZnB0
cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeSgKKyAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgcnRjOjpUaHJlYWQq
IHdvcmtlcl90aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCisgICAg
QXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRtLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxB
dWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29w
ZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAg
ICBjcmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3Rv
cnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rl
cl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhl
ciwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNz
aW5nLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4g
ZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRy
b2xsZXJGYWN0b3J5SW50ZXJmYWNlPgorICAgICAgICBuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9y
eSkgeworICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNz
aW5nX3VzZSA9IGF1ZGlvX3Byb2Nlc3Npbmc7CisgIGlmICghYXVkaW9fcHJvY2Vzc2luZ191c2Up
IHsKKyAgICBhdWRpb19wcm9jZXNzaW5nX3VzZSA9IEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5D
cmVhdGUoKTsKKyAgfQorCisgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUlu
dGVyZmFjZT4gbWVkaWFfZW5naW5lKAorICAgICAgY3JpY2tldDo6V2ViUnRjTWVkaWFFbmdpbmVG
YWN0b3J5OjpDcmVhdGUoCisgICAgICAgICAgZGVmYXVsdF9hZG0sIGF1ZGlvX2VuY29kZXJfZmFj
dG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgICAgIHZpZGVvX2VuY29kZXJfZmFj
dG9yeSwgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LCBhdWRpb19taXhlciwKKyAgICAgICAgICBhdWRp
b19wcm9jZXNzaW5nX3VzZSkpOworCisgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRmFjdG9yeUludGVy
ZmFjZT4gY2FsbF9mYWN0b3J5ID0gQ3JlYXRlQ2FsbEZhY3RvcnkoKTsKKworICBzdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnRMb2dGYWN0b3J5SW50ZXJmYWNlPiBldmVudF9sb2dfZmFjdG9yeSA9Cisg
ICAgICBDcmVhdGVSdGNFdmVudExvZ0ZhY3RvcnkoKTsKKworICByZXR1cm4gQ3JlYXRlTW9kdWxh
clBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICAgIG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhy
ZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBzdGQ6Om1vdmUobWVkaWFfZW5naW5lKSwKKyAgICAgIHN0
ZDo6bW92ZShjYWxsX2ZhY3RvcnkpLCBzdGQ6Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpLAorICAg
ICAgc3RkOjptb3ZlKGZlY19jb250cm9sbGVyX2ZhY3RvcnkpLCBzdGQ6Om1vdmUobmV0d29ya19j
b250cm9sbGVyX2ZhY3RvcnkpKTsKK30KKyNlbmRpZgorCitydGM6OnNjb3BlZF9yZWZwdHI8UGVl
ckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3Rvcnko
CisgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiB3b3Jr
ZXJfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAorICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb0RldmljZU1vZHVsZT4gZGVmYXVsdF9hZG0sCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwK
KyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXJGYWN0b3J5PiB2aWRl
b19lbmNvZGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2RlckZhY3Rv
cnk+IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9N
aXhlcj4gYXVkaW9fbWl4ZXIsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2lu
Zz4gYXVkaW9fcHJvY2Vzc2luZykgeworICBpZiAoIWF1ZGlvX3Byb2Nlc3NpbmcpCisgICAgYXVk
aW9fcHJvY2Vzc2luZyA9IEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKTsKKworICBz
dGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2VuZ2lu
ZSA9CisgICAgICBjcmlja2V0OjpXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKKyAg
ICAgICAgICBkZWZhdWx0X2FkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVy
X2ZhY3RvcnksCisgICAgICAgICAgc3RkOjptb3ZlKHZpZGVvX2VuY29kZXJfZmFjdG9yeSksIHN0
ZDo6bW92ZSh2aWRlb19kZWNvZGVyX2ZhY3RvcnkpLAorICAgICAgICAgIGF1ZGlvX21peGVyLCBh
dWRpb19wcm9jZXNzaW5nKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEZhY3RvcnlJbnRlcmZh
Y2U+IGNhbGxfZmFjdG9yeSA9IENyZWF0ZUNhbGxGYWN0b3J5KCk7CisKKyAgc3RkOjp1bmlxdWVf
cHRyPFJ0Y0V2ZW50TG9nRmFjdG9yeUludGVyZmFjZT4gZXZlbnRfbG9nX2ZhY3RvcnkgPQorICAg
ICAgQ3JlYXRlUnRjRXZlbnRMb2dGYWN0b3J5KCk7CisgIFBlZXJDb25uZWN0aW9uRmFjdG9yeURl
cGVuZGVuY2llcyBkZXBlbmRlbmNpZXM7CisgIGRlcGVuZGVuY2llcy5uZXR3b3JrX3RocmVhZCA9
IG5ldHdvcmtfdGhyZWFkOworICBkZXBlbmRlbmNpZXMud29ya2VyX3RocmVhZCA9IHdvcmtlcl90
aHJlYWQ7CisgIGRlcGVuZGVuY2llcy5zaWduYWxpbmdfdGhyZWFkID0gc2lnbmFsaW5nX3RocmVh
ZDsKKyAgZGVwZW5kZW5jaWVzLm1lZGlhX2VuZ2luZSA9IHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUp
OworICBkZXBlbmRlbmNpZXMuY2FsbF9mYWN0b3J5ID0gc3RkOjptb3ZlKGNhbGxfZmFjdG9yeSk7
CisgIGRlcGVuZGVuY2llcy5ldmVudF9sb2dfZmFjdG9yeSA9IHN0ZDo6bW92ZShldmVudF9sb2df
ZmFjdG9yeSk7CisgIHJldHVybiBDcmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KHN0
ZDo6bW92ZShkZXBlbmRlbmNpZXMpKTsKK30KKworI2lmIGRlZmluZWQoVVNFX0JVSUxUSU5fU1df
Q09ERUNTKQorcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFj
ZT4KK0NyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeVdpdGhBdWRpb01peGVyKAorICAgIHJ0Yzo6
VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwK
KyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBBdWRpb0RldmljZU1vZHVs
ZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rv
cnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9E
ZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0
Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0
OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAg
cnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyKSB7CisgIHJldHVybiBD
cmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCisgICAgICBuZXR3b3JrX3RocmVhZCwgd29ya2Vy
X3RocmVhZCwgc2lnbmFsaW5nX3RocmVhZCwgZGVmYXVsdF9hZG0sCisgICAgICBhdWRpb19lbmNv
ZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
LAorICAgICAgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LCBhdWRpb19taXhlciwgbnVsbHB0cik7Cit9
CisKK3J0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IENy
ZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJl
YWQsCisgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHNp
Z25hbGluZ190aHJlYWQsCisgICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRtLAorICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2Zh
Y3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlv
X2RlY29kZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5
KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9EZWNvZGVy
RmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSB7CisgIHJldHVybiBDcmVhdGVQZWVyQ29u
bmVjdGlvbkZhY3RvcnlXaXRoQXVkaW9NaXhlcigKKyAgICAgIG5ldHdvcmtfdGhyZWFkLCB3b3Jr
ZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBkZWZhdWx0X2FkbSwKKyAgICAgIGF1ZGlvX2Vu
Y29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCB2aWRlb19lbmNvZGVyX2ZhY3Rv
cnksCisgICAgICB2aWRlb19kZWNvZGVyX2ZhY3RvcnksIG51bGxwdHIpOworfQorI2VuZGlmCisK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyZWF0ZV9w
ZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFhNTBjN2JkODA2M2Q1NjIzOTVl
MDFmN2YyMzMwMjEyZWZhZjRlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9y
eS5oCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9D
UkVBVEVfUEVFUkNPTk5FQ1RJT05fRkFDVE9SWV9IXworI2RlZmluZSBBUElfQ1JFQVRFX1BFRVJD
T05ORUNUSU9OX0ZBQ1RPUllfSF8KKworI2luY2x1ZGUgPG1lbW9yeT4KKworI2luY2x1ZGUgImFw
aS9hdWRpby9hdWRpb19taXhlci5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNv
ZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvZmVjX2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJhcGkvdHJhbnNwb3J0
L25ldHdvcmtfY29udHJvbC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgi
CisKK25hbWVzcGFjZSBydGMgeworLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTk4Nyk6IE1vdmUg
cnRjOjpUaHJlYWQgdG8gYXBpLyBvciBleHBvc2UgYSBiZXR0ZXIKKy8vIHR5cGUuIEF0IHRoZSBt
b21lbnQsIHJ0Yzo6VGhyZWFkIGlzIG5vdCBwYXJ0IG9mIGFwaS8gc28gaXQgY2Fubm90IGJlCisv
LyBpbmNsdWRlZCBpbiBvcmRlciB0byBhdm9pZCB0byBsZWFrIGludGVybmFsIHR5cGVzLgorY2xh
c3MgVGhyZWFkOworfSAgLy8gbmFtZXNwYWNlIHJ0YworCituYW1lc3BhY2UgY3JpY2tldCB7Citj
bGFzcyBXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5OworY2xhc3MgV2ViUnRjVmlkZW9FbmNvZGVy
RmFjdG9yeTsKK30gIC8vIG5hbWVzcGFjZSBjcmlja2V0CisKK25hbWVzcGFjZSB3ZWJydGMgewor
CitjbGFzcyBBdWRpb0RldmljZU1vZHVsZTsKK2NsYXNzIEF1ZGlvUHJvY2Vzc2luZzsKKworI2lm
IGRlZmluZWQoVVNFX0JVSUxUSU5fU1dfQ09ERUNTKQorLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNl
IG9mIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZS4KKy8vCisvLyBUaGlzIG1ldGhvZCBy
ZWxpZXMgb24gdGhlIHRocmVhZCBpdCdzIGNhbGxlZCBvbiBhcyB0aGUgInNpZ25hbGluZyB0aHJl
YWQiCisvLyBmb3IgdGhlIFBlZXJDb25uZWN0aW9uRmFjdG9yeSBpdCBjcmVhdGVzLgorLy8KKy8v
IEFzIHN1Y2gsIGlmIHRoZSBjdXJyZW50IHRocmVhZCBpcyBub3QgYWxyZWFkeSBydW5uaW5nIGFu
IHJ0Yzo6VGhyZWFkIG1lc3NhZ2UKKy8vIGxvb3AsIGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoaXMg
bWV0aG9kIG11c3QgZXZlbnR1YWxseSBlaXRoZXIgY2FsbAorLy8gcnRjOjpUaHJlYWQ6OkN1cnJl
bnQoKS0+UnVuKCksIG9yIGNhbGwKKy8vIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCktPlByb2Nlc3NN
ZXNzYWdlcygpIHdpdGhpbiB0aGUgYXBwbGljYXRpb24ncyBvd24KKy8vIG1lc3NhZ2UgbG9vcC4K
K1JUQ19FWFBPUlQgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVy
ZmFjZT4KK0NyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICBydGM6OnNjb3BlZF9yZWZw
dHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3Rvcnkp
OworCisvLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50
ZXJmYWNlLgorLy8KKy8vIHxuZXR3b3JrX3RocmVhZHwsIHx3b3JrZXJfdGhyZWFkfCBhbmQgfHNp
Z25hbGluZ190aHJlYWR8IGFyZQorLy8gdGhlIG9ubHkgbWFuZGF0b3J5IHBhcmFtZXRlcnMuCisv
LworLy8gSWYgbm9uLW51bGwsIGEgcmVmZXJlbmNlIGlzIGFkZGVkIHRvIHxkZWZhdWx0X2FkbXws
IGFuZCBvd25lcnNoaXAgb2YKKy8vIHx2aWRlb19lbmNvZGVyX2ZhY3Rvcnl8IGFuZCB8dmlkZW9f
ZGVjb2Rlcl9mYWN0b3J5fCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUKKy8vIHJldHVybmVkIGZhY3Rv
cnkuCisvLyBUT0RPKGRlYWRiZWVmKTogVXNlIHJ0Yzo6c2NvcGVkX3JlZnB0cjw+IGFuZCBzdGQ6
OnVuaXF1ZV9wdHI8PiB0byBtYWtlIHRoaXMKKy8vIG93bmVyc2hpcCB0cmFuc2ZlciBhbmQgcmVm
IGNvdW50aW5nIG1vcmUgb2J2aW91cy4KK1JUQ19FWFBPUlQgcnRjOjpzY29wZWRfcmVmcHRyPFBl
ZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KK0NyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9y
eSgKKyAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHdv
cmtlcl90aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCisgICAgQXVk
aW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRtLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBj
cmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3Rvcnks
CisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9m
YWN0b3J5KTsKKworLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25uZWN0aW9uRmFj
dG9yeUludGVyZmFjZSB3aXRoIG9wdGlvbmFsCisvLyBleHRlcm5hbCBhdWRpbyBtaXhlZCBhbmQg
YXVkaW8gcHJvY2Vzc2luZyBtb2R1bGVzLgorLy8KKy8vIElmIHxhdWRpb19taXhlcnwgaXMgbnVs
bCwgYW4gaW50ZXJuYWwgYXVkaW8gbWl4ZXIgd2lsbCBiZSBjcmVhdGVkIGFuZCB1c2VkLgorLy8g
SWYgfGF1ZGlvX3Byb2Nlc3Npbmd8IGlzIG51bGwsIGFuIGludGVybmFsIGF1ZGlvIHByb2Nlc3Np
bmcgbW9kdWxlIHdpbGwgYmUKKy8vIGNyZWF0ZWQgYW5kIHVzZWQuCitSVENfRVhQT1JUIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+CitDcmVhdGVQZWVy
Q29ubmVjdGlvbkZhY3RvcnkoCisgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAg
IHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdf
dGhyZWFkLAorICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwKKyAgICBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAor
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVy
X2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9f
ZW5jb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnkq
IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhl
cj4gYXVkaW9fbWl4ZXIsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4g
YXVkaW9fcHJvY2Vzc2luZyk7CisKKy8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29u
bmVjdGlvbkZhY3RvcnlJbnRlcmZhY2Ugd2l0aCBvcHRpb25hbAorLy8gZXh0ZXJuYWwgYXVkaW8g
bWl4ZXIsIGF1ZGlvIHByb2Nlc3NpbmcsIGFuZCBmZWMgY29udHJvbGxlciBtb2R1bGVzLgorLy8K
Ky8vIElmIHxhdWRpb19taXhlcnwgaXMgbnVsbCwgYW4gaW50ZXJuYWwgYXVkaW8gbWl4ZXIgd2ls
bCBiZSBjcmVhdGVkIGFuZCB1c2VkLgorLy8gSWYgfGF1ZGlvX3Byb2Nlc3Npbmd8IGlzIG51bGws
IGFuIGludGVybmFsIGF1ZGlvIHByb2Nlc3NpbmcgbW9kdWxlIHdpbGwgYmUKKy8vIGNyZWF0ZWQg
YW5kIHVzZWQuCisvLyBJZiB8ZmVjX2NvbnRyb2xsZXJfZmFjdG9yeXwgaXMgbnVsbCwgYW4gaW50
ZXJuYWwgZmVjIGNvbnRyb2xsZXIgbW9kdWxlIHdpbGwKKy8vIGJlIGNyZWF0ZWQgYW5kIHVzZWQu
CisvLyBJZiB8bmV0d29ya19jb250cm9sbGVyX2ZhY3Rvcnl8IGlzIHByb3ZpZGVkLCBpdCB3aWxs
IGJlIHVzZWQgaWYgZW5hYmxlZCB2aWEKKy8vIGZpZWxkIHRyaWFsLgorUlRDX0VYUE9SVCBydGM6
OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPgorQ3JlYXRlUGVl
ckNvbm5lY3Rpb25GYWN0b3J5KAorICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAg
ICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5n
X3RocmVhZCwKKyAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwK
KyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVv
X2VuY29kZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5
KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4
ZXI+IGF1ZGlvX21peGVyLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+
IGF1ZGlvX3Byb2Nlc3NpbmcsCisgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXJGYWN0
b3J5SW50ZXJmYWNlPiBmZWNfY29udHJvbGxlcl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+CisgICAgICAgIG5ldHdvcmtfY29u
dHJvbGxlcl9mYWN0b3J5ID0gbnVsbHB0cik7CisjZW5kaWYgIC8vIGRlZmluZWQoVVNFX0JVSUxU
SU5fU1dfQ09ERUNTKQorCisvLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rp
b25GYWN0b3J5SW50ZXJmYWNlIHdpdGggb3B0aW9uYWwgdmlkZW8KKy8vIGNvZGVjIGZhY3Rvcmll
cy4gVGhlc2UgdmlkZW8gZmFjdG9yaWVzIHJlcHJlc2VudHMgYWxsIHZpZGVvIGNvZGVjcywgaS5l
LiBubworLy8gZXh0cmEgaW50ZXJuYWwgdmlkZW8gY29kZWNzIHdpbGwgYmUgYWRkZWQuCisvLyBX
aGVuIGJ1aWxkaW5nIFdlYlJUQyB3aXRoIHJ0Y191c2VfYnVpbHRpbl9zd19jb2RlY3MgPSBmYWxz
ZSwgdGhpcyBpcyB0aGUKKy8vIG9ubHkgYXZhaWxhYmxlIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeSBvdmVybG9hZC4KK1JUQ19FWFBPUlQgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0
aW9uRmFjdG9yeUludGVyZmFjZT4KK0NyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICBy
dGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJl
YWQsCisgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCisgICAgcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBkZWZhdWx0X2FkbSwKKyAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3Rv
cnksCisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IHZpZGVvX2VuY29k
ZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9yeT4gdmlk
ZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01peGVyPiBh
dWRpb19taXhlciwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRp
b19wcm9jZXNzaW5nKTsKKworI2lmIGRlZmluZWQoVVNFX0JVSUxUSU5fU1dfQ09ERUNTKQorLy8g
Q3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSB3
aXRoIGV4dGVybmFsIGF1ZGlvCisvLyBtaXhlci4KKy8vCisvLyBJZiB8YXVkaW9fbWl4ZXJ8IGlz
IG51bGwsIGFuIGludGVybmFsIGF1ZGlvIG1peGVyIHdpbGwgYmUgY3JlYXRlZCBhbmQgdXNlZC4K
K1JUQ19FWFBPUlQgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVy
ZmFjZT4KK0NyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeVdpdGhBdWRpb01peGVyKAorICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVh
ZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBBdWRpb0RldmljZU1v
ZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZh
Y3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6Oldl
YlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBjcmlj
a2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyKTsKKworLy8gQ3Jl
YXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZS4KKy8v
IFNhbWUgdGhyZWFkIGlzIHVzZWQgYXMgd29ya2VyIGFuZCBuZXR3b3JrIHRocmVhZC4KK1JUQ19F
WFBPUlQgaW5saW5lIHJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRl
cmZhY2U+CitDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCisgICAgcnRjOjpUaHJlYWQqIHdv
cmtlcl9hbmRfbmV0d29ya190aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJl
YWQsCisgICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRtLAorICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAg
cnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFj
dG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNv
ZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlk
ZW9fZGVjb2Rlcl9mYWN0b3J5KSB7CisgIHJldHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3Rv
cnkoCisgICAgICB3b3JrZXJfYW5kX25ldHdvcmtfdGhyZWFkLCB3b3JrZXJfYW5kX25ldHdvcmtf
dGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLAorICAgICAgZGVmYXVsdF9hZG0sIGF1ZGlvX2VuY29k
ZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LCB2aWRlb19kZWNvZGVyX2ZhY3RvcnkpOworfQorI2VuZGlmICAvLyBkZWZpbmVkKFVT
RV9CVUlMVElOX1NXX0NPREVDUykKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYg
IC8vIEFQSV9DUkVBVEVfUEVFUkNPTk5FQ1RJT05fRkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyeXB0by9jcnlwdG9v
cHRpb25zLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2NyeXB0by9jcnlwdG9vcHRpb25zLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMzRmMTliNTM4NTcyMmRjMmFi
YWVmYzliNTJmMWQwNmZmYjQzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuY2MKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImFwaS9jcnlwdG8v
Y3J5cHRvb3B0aW9ucy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuaCIK
KworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK0NyeXB0b09wdGlvbnM6OkNyeXB0b09wdGlvbnMoKSB7
fQorCitDcnlwdG9PcHRpb25zOjpDcnlwdG9PcHRpb25zKGNvbnN0IENyeXB0b09wdGlvbnMmIG90
aGVyKSB7CisgIHNydHAgPSBvdGhlci5zcnRwOworICBzZnJhbWUgPSBvdGhlci5zZnJhbWU7Cit9
CisKK0NyeXB0b09wdGlvbnM6On5DcnlwdG9PcHRpb25zKCkge30KKworLy8gc3RhdGljCitDcnlw
dG9PcHRpb25zIENyeXB0b09wdGlvbnM6Ok5vR2NtKCkgeworICBDcnlwdG9PcHRpb25zIG9wdGlv
bnM7CisgIG9wdGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSBmYWxzZTsKKyAg
cmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0ZDo6dmVjdG9yPGludD4gQ3J5cHRvT3B0aW9uczo6R2V0
U3VwcG9ydGVkRHRsc1NydHBDcnlwdG9TdWl0ZXMoKSBjb25zdCB7CisgIHN0ZDo6dmVjdG9yPGlu
dD4gY3J5cHRvX3N1aXRlczsKKyAgaWYgKHNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzKSB7
CisgICAgY3J5cHRvX3N1aXRlcy5wdXNoX2JhY2socnRjOjpTUlRQX0FFQURfQUVTXzI1Nl9HQ00p
OworICAgIGNyeXB0b19zdWl0ZXMucHVzaF9iYWNrKHJ0Yzo6U1JUUF9BRUFEX0FFU18xMjhfR0NN
KTsKKyAgfQorICAvLyBOb3RlOiBTUlRQX0FFUzEyOF9DTV9TSEExXzgwIGlzIHdoYXQgaXMgcmVx
dWlyZWQgdG8gYmUgc3VwcG9ydGVkIChieQorICAvLyBkcmFmdC1pZXRmLXJ0Y3dlYi1zZWN1cml0
eS1hcmNoKSwgYnV0IFNSVFBfQUVTMTI4X0NNX1NIQTFfMzIgaXMgYWxsb3dlZCBhcworICAvLyB3
ZWxsLCBhbmQgc2F2ZXMgYSBmZXcgYnl0ZXMgcGVyIHBhY2tldCBpZiBpdCBlbmRzIHVwIHNlbGVj
dGVkLgorICAvLyBBcyB0aGUgY2lwaGVyIHN1aXRlIGlzIHBvdGVudGlhbGx5IGluc2VjdXJlLCBp
dCB3aWxsIG9ubHkgYmUgdXNlZCBpZgorICAvLyBlbmFibGVkIGJ5IGJvdGggcGVlcnMuCisgIGlm
IChzcnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyKSB7CisgICAgY3J5cHRv
X3N1aXRlcy5wdXNoX2JhY2socnRjOjpTUlRQX0FFUzEyOF9DTV9TSEExXzMyKTsKKyAgfQorICBj
cnlwdG9fc3VpdGVzLnB1c2hfYmFjayhydGM6OlNSVFBfQUVTMTI4X0NNX1NIQTFfODApOworICBy
ZXR1cm4gY3J5cHRvX3N1aXRlczsKK30KKworYm9vbCBDcnlwdG9PcHRpb25zOjpvcGVyYXRvcj09
KGNvbnN0IENyeXB0b09wdGlvbnMmIG90aGVyKSBjb25zdCB7CisgIHN0cnVjdCBkYXRhX2JlaW5n
X3Rlc3RlZF9mb3JfZXF1YWxpdHkgeworICAgIHN0cnVjdCBTcnRwIHsKKyAgICAgIGJvb2wgZW5h
YmxlX2djbV9jcnlwdG9fc3VpdGVzOworICAgICAgYm9vbCBlbmFibGVfYWVzMTI4X3NoYTFfMzJf
Y3J5cHRvX2NpcGhlcjsKKyAgICAgIGJvb2wgZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4
dGVuc2lvbnM7CisgICAgfSBzcnRwOworICAgIHN0cnVjdCBTRnJhbWUgeworICAgICAgYm9vbCBy
ZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb247CisgICAgfSBzZnJhbWU7CisgIH07CisgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKGRhdGFfYmVpbmdfdGVzdGVkX2Zvcl9lcXVhbGl0eSkgPT0gc2l6ZW9mKCp0
aGlzKSwKKyAgICAgICAgICAgICAgICAiRGlkIHlvdSBhZGQgc29tZXRoaW5nIHRvIENyeXB0b09w
dGlvbnMgYW5kIGZvcmdldCB0byAiCisgICAgICAgICAgICAgICAgInVwZGF0ZSBvcGVyYXRvcj09
PyIpOworCisgIHJldHVybiBzcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9PSBvdGhlci5z
cnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyAmJgorICAgICAgICAgc3J0cC5lbmFibGVfYWVz
MTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9PQorICAgICAgICAgICAgIG90aGVyLnNydHAuZW5h
YmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgJiYKKyAgICAgICAgIHNydHAuZW5hYmxl
X2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMgPT0KKyAgICAgICAgICAgICBvdGhlci5z
cnRwLmVuYWJsZV9lbmNyeXB0ZWRfcnRwX2hlYWRlcl9leHRlbnNpb25zICYmCisgICAgICAgICBz
ZnJhbWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uID09CisgICAgICAgICAgICAgb3RoZXIuc2Zy
YW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbjsKK30KKworYm9vbCBDcnlwdG9PcHRpb25zOjpv
cGVyYXRvciE9KGNvbnN0IENyeXB0b09wdGlvbnMmIG90aGVyKSBjb25zdCB7CisgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyeXB0by9j
cnlwdG9vcHRpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzMwYWIyMDg5NTk4MDA3
MDI4NTdkOWY0NjljOTRkNjU5YThmYjlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmgK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfQ1JZUFRP
X0NSWVBUT09QVElPTlNfSF8KKyNkZWZpbmUgQVBJX0NSWVBUT19DUllQVE9PUFRJT05TX0hfCisK
KyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBDcnlwdG9PcHRp
b25zIGRlZmluZXMgYWR2YW5jZWQgY3J5cHRvZ3JhcGhpYyBzZXR0aW5ncyBmb3IgbmF0aXZlIFdl
YlJUQy4KKy8vIFRoZXNlIHNldHRpbmdzIG11c3QgYmUgcGFzc2VkIGludG8gUGVlckNvbm5lY3Rp
b25GYWN0b3J5SW50ZXJmYWNlOjpPcHRpb25zCisvLyBhbmQgYXJlIG9ubHkgYXBwbGljYWJsZSB0
byBuYXRpdmUgdXNlIGNhc2VzIG9mIFdlYlJUQy4KK3N0cnVjdCBDcnlwdG9PcHRpb25zIHsKKyAg
Q3J5cHRvT3B0aW9ucygpOworICBDcnlwdG9PcHRpb25zKGNvbnN0IENyeXB0b09wdGlvbnMmIG90
aGVyKTsKKyAgfkNyeXB0b09wdGlvbnMoKTsKKworICAvLyBIZWxwZXIgbWV0aG9kIHRvIHJldHVy
biBhbiBpbnN0YW5jZSBvZiB0aGUgQ3J5cHRvT3B0aW9ucyB3aXRoIEdDTSBjcnlwdG8KKyAgLy8g
c3VpdGVzIGRpc2FibGVkLiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGRl
cGVuZGluZyBvbiBjdXJyZW50CisgIC8vIGRlZmF1bHQgdmFsdWVzIHNldCBieSB0aGUgY29uc3Ry
dWN0b3IuCisgIHN0YXRpYyBDcnlwdG9PcHRpb25zIE5vR2NtKCk7CisKKyAgLy8gUmV0dXJucyBh
IGxpc3Qgb2YgdGhlIHN1cHBvcnRlZCBEVExTLVNSVFAgQ3J5cHRvIHN1aXRlcyBiYXNlZCBvbiB0
aGlzIHNldAorICAvLyBvZiBjcnlwdG8gb3B0aW9ucy4KKyAgc3RkOjp2ZWN0b3I8aW50PiBHZXRT
dXBwb3J0ZWREdGxzU3J0cENyeXB0b1N1aXRlcygpIGNvbnN0OworCisgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDcnlwdG9PcHRpb25zJiBvdGhlcikgY29uc3Q7CisgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBDcnlwdG9PcHRpb25zJiBvdGhlcikgY29uc3Q7CisKKyAgLy8gU1JUUCBSZWxhdGVkIFBl
ZXIgQ29ubmVjdGlvbiBvcHRpb25zLgorICBzdHJ1Y3QgU3J0cCB7CisgICAgLy8gRW5hYmxlIEdD
TSBjcnlwdG8gc3VpdGVzIGZyb20gUkZDIDc3MTQgZm9yIFNSVFAuIEdDTSB3aWxsIG9ubHkgYmUg
dXNlZAorICAgIC8vIGlmIGJvdGggc2lkZXMgZW5hYmxlIGl0LgorICAgIGJvb2wgZW5hYmxlX2dj
bV9jcnlwdG9fc3VpdGVzID0gZmFsc2U7CisKKyAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgdGhlIChw
b3RlbnRpYWxseSBpbnNlY3VyZSkgY3J5cHRvIGNpcGhlcgorICAgIC8vIFNSVFBfQUVTMTI4X0NN
X1NIQTFfMzIgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2lwaGVy
cworICAgIC8vIGR1cmluZyBuZWdvdGlhdGlvbi4gSXQgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYm90
aCBwZWVycyBzdXBwb3J0IGl0IGFuZCBubworICAgIC8vIG90aGVyIGNpcGhlcnMgZ2V0IHByZWZl
cnJlZC4KKyAgICBib29sIGVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gZmFs
c2U7CisKKyAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgZW5jcnlwdGVkIFJUUCBoZWFkZXIgZXh0ZW5z
aW9ucyBhcyBkZWZpbmVkIGluIFJGQyA2OTA0CisgICAgLy8gd2lsbCBiZSBuZWdvdGlhdGVkLiBU
aGV5IHdpbGwgb25seSBiZSB1c2VkIGlmIGJvdGggcGVlcnMgc3VwcG9ydCB0aGVtLgorICAgIGJv
b2wgZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMgPSBmYWxzZTsKKyAgfSBz
cnRwOworCisgIC8vIE9wdGlvbnMgdG8gYmUgdXNlZCB3aGVuIHRoZSBGcmFtZUVuY3J5cHRvciAv
IEZyYW1lRGVjcnlwdG9yIEFQSXMgYXJlIHVzZWQuCisgIHN0cnVjdCBTRnJhbWUgeworICAgIC8v
IElmIHNldCBhbGwgUnRwU2VuZGVycyBtdXN0IGhhdmUgYW4gRnJhbWVFbmNyeXB0b3IgYXR0YWNo
ZWQgdG8gdGhlbSBiZWZvcmUKKyAgICAvLyB0aGV5IGFyZSBhbGxvd2VkIHRvIHNlbmQgcGFja2V0
cy4gQWxsIFJ0cFJlY2VpdmVycyBtdXN0IGhhdmUgYQorICAgIC8vIEZyYW1lRGVjcnlwdG9yIGF0
dGFjaGVkIHRvIHRoZW0gYmVmb3JlIHRoZXkgYXJlIGFibGUgdG8gcmVjZWl2ZSBwYWNrZXRzLgor
ICAgIGJvb2wgcmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uID0gZmFsc2U7CisgIH0gc2ZyYW1lOwor
fTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9DUllQVE9fQ1JZ
UFRPT1BUSU9OU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2NyeXB0b3BhcmFtcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyeXB0b3BhcmFtcy5oCmluZGV4IDIzNTA1MjgzNThmMjZl
MDEyYjMwZmExNjA1NzZjMjEyOTRlMzI1YTMuLmFiZTkwNTU0NjIyOWM4MzI3ZTJkN2E5YzY4NWY4
ZWU0NDY5OGRiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9jcnlwdG9wYXJhbXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvcGFyYW1zLmgKQEAgLTE2LDYgKzE2LDggQEAK
IG5hbWVzcGFjZSBjcmlja2V0IHsKIAogLy8gUGFyYW1ldGVycyBmb3IgU1JUUCBuZWdvdGlhdGlv
biwgYXMgZGVzY3JpYmVkIGluIFJGQyA0NTY4LgorLy8gVE9ETyhiZW53cmlnaHQpIC0gUmVuYW1l
IHRvIFNydHBDcnlwdG9QYXJhbXMgYXMgdGhlc2Ugb25seSBhcHBseSB0byBTUlRQIGFuZAorLy8g
bm90IGdlbmVyaWMgY3J5cHRvIHBhcmFtZXRlcnMgZm9yIFdlYlJUQy4KIHN0cnVjdCBDcnlwdG9Q
YXJhbXMgewogICBDcnlwdG9QYXJhbXMoKSA6IHRhZygwKSB7fQogICBDcnlwdG9QYXJhbXMoaW50
IHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvZGF0YWNoYW5uZWxpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9kYXRhY2hhbm5lbGludGVyZmFjZS5oCmluZGV4IGEwZDJiM2I1
MWE1OTg1OGIxYmE4NGZkZWFlOGI2OTEzM2QxOWNjZTkuLjdjYjU1ODIyMzM3ZjgwNDViM2YwOTk4
NTQ2MjEzZjFhZTEwMzNkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9kYXRhY2hhbm5lbGludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9kYXRhY2hhbm5lbGludGVyZmFj
ZS5oCkBAIC0xNCw2ICsxNCw4IEBACiAjaWZuZGVmIEFQSV9EQVRBQ0hBTk5FTElOVEVSRkFDRV9I
XwogI2RlZmluZSBBUElfREFUQUNIQU5ORUxJTlRFUkZBQ0VfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2pzZXAuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcC5jYwppbmRleCA1MmE2MGY5NWUzMmU5MGFkMjE5NmI2
NzFkODM3YzJhNTQ3MThlMDhhLi4wMWY1NzIwNTYzZDkwODM0N2Y1ZGNiNWY0MzgxYjliMjFjNGJi
OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvanNlcC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvanNlcC5jYwpAQCAtMzgsNCArMzgsMzIgQEAgdm9pZCBTZXRTZXNzaW9uRGVzY3Jp
cHRpb25PYnNlcnZlcjo6T25GYWlsdXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBlcnJvcikgewogICBP
bkZhaWx1cmUoUlRDRXJyb3IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwgc3RkOjpzdHJp
bmcoZXJyb3IpKSk7CiB9CiAKK2NvbnN0IGNoYXIgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNl
OjprT2ZmZXJbXSA9ICJvZmZlciI7Citjb25zdCBjaGFyIFNlc3Npb25EZXNjcmlwdGlvbkludGVy
ZmFjZTo6a1ByQW5zd2VyW10gPSAicHJhbnN3ZXIiOworY29uc3QgY2hhciBTZXNzaW9uRGVzY3Jp
cHRpb25JbnRlcmZhY2U6OmtBbnN3ZXJbXSA9ICJhbnN3ZXIiOworCitjb25zdCBjaGFyKiBTZHBU
eXBlVG9TdHJpbmcoU2RwVHlwZSB0eXBlKSB7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug
U2RwVHlwZTo6a09mZmVyOgorICAgICAgcmV0dXJuIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFj
ZTo6a09mZmVyOworICAgIGNhc2UgU2RwVHlwZTo6a1ByQW5zd2VyOgorICAgICAgcmV0dXJuIFNl
c3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6a1ByQW5zd2VyOworICAgIGNhc2UgU2RwVHlwZTo6
a0Fuc3dlcjoKKyAgICAgIHJldHVybiBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtBbnN3
ZXI7CisgIH0KKyAgcmV0dXJuICIiOworfQorCithYnNsOjpvcHRpb25hbDxTZHBUeXBlPiBTZHBU
eXBlRnJvbVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdHlwZV9zdHIpIHsKKyAgaWYgKHR5cGVf
c3RyID09IFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6a09mZmVyKSB7CisgICAgcmV0dXJu
IFNkcFR5cGU6OmtPZmZlcjsKKyAgfSBlbHNlIGlmICh0eXBlX3N0ciA9PSBTZXNzaW9uRGVzY3Jp
cHRpb25JbnRlcmZhY2U6OmtQckFuc3dlcikgeworICAgIHJldHVybiBTZHBUeXBlOjprUHJBbnN3
ZXI7CisgIH0gZWxzZSBpZiAodHlwZV9zdHIgPT0gU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNl
OjprQW5zd2VyKSB7CisgICAgcmV0dXJuIFNkcFR5cGU6OmtBbnN3ZXI7CisgIH0gZWxzZSB7Cisg
ICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KK30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2pzZXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9qc2VwLmgKaW5kZXggNGQ0YmNjMGJmYjYyZWQwMzRiOTc4Njg5YmRkYWM3YzNiNDgyNjI2Ni4u
MWM1MDQ1NWQwNGRmOTc2NGRmYmZhNzc3MjhiMjA1ZTVkZTc2ODA0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2pzZXAuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcC5oCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUg
ImFwaS9ydGNlcnJvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewog
Y2xhc3MgQ2FuZGlkYXRlOwpAQCAtNzMsMTMgKzc0LDEzIEBAIGNsYXNzIEljZUNhbmRpZGF0ZUlu
dGVyZmFjZSB7CiAvLyBDcmVhdGVzIGEgSWNlQ2FuZGlkYXRlSW50ZXJmYWNlIGJhc2VkIG9uIFNE
UCBzdHJpbmcuCiAvLyBSZXR1cm5zIG51bGwgaWYgdGhlIHNkcCBzdHJpbmcgY2FuJ3QgYmUgcGFy
c2VkLgogLy8gfGVycm9yfCBtYXkgYmUgbnVsbC4KLUljZUNhbmRpZGF0ZUludGVyZmFjZSogQ3Jl
YXRlSWNlQ2FuZGlkYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzZHBfbWlkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNkcF9tbGluZV9pbmRleCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBz
ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBQYXJzZUVy
cm9yKiBlcnJvcik7CitSVENfRVhQT1JUIEljZUNhbmRpZGF0ZUludGVyZmFjZSogQ3JlYXRlSWNl
Q2FuZGlkYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzZHBfbWlkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2RwX21saW5lX2luZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgc2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTZHBQYXJzZUVycm9yKiBlcnJvcik7CiAKIC8vIENyZWF0ZXMgYW4g
SWNlQ2FuZGlkYXRlSW50ZXJmYWNlIGJhc2VkIG9uIGEgcGFyc2VkIGNhbmRpZGF0ZSBzdHJ1Y3R1
cmUuCi1zdGQ6OnVuaXF1ZV9wdHI8SWNlQ2FuZGlkYXRlSW50ZXJmYWNlPiBDcmVhdGVJY2VDYW5k
aWRhdGUoCitSVENfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxJY2VDYW5kaWRhdGVJbnRlcmZhY2U+
IENyZWF0ZUljZUNhbmRpZGF0ZSgKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc2RwX21pZCwKICAg
ICBpbnQgc2RwX21saW5lX2luZGV4LAogICAgIGNvbnN0IGNyaWNrZXQ6OkNhbmRpZGF0ZSYgY2Fu
ZGlkYXRlKTsKQEAgLTEyMSw3ICsxMjIsNyBAQCBhYnNsOjpvcHRpb25hbDxTZHBUeXBlPiBTZHBU
eXBlRnJvbVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdHlwZV9zdHIpOwogLy8gYW5kIGlzIHRo
ZXJlZm9yZSBub3QgZXhwZWN0ZWQgdG8gYmUgdGhyZWFkIHNhZmUuCiAvLwogLy8gQW4gaW5zdGFu
Y2UgY2FuIGJlIGNyZWF0ZWQgYnkgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uLgotY2xhc3MgU2Vz
c2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlIHsKK2NsYXNzIFJUQ19FWFBPUlQgU2Vzc2lvbkRlc2Ny
aXB0aW9uSW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIC8vIFN0cmluZyByZXByZXNlbnRhdGlvbnMg
b2YgdGhlIHN1cHBvcnRlZCBTRFAgdHlwZXMuCiAgIHN0YXRpYyBjb25zdCBjaGFyIGtPZmZlcltd
OwpAQCAtMTgxLDIxICsxODIsMjEgQEAgY2xhc3MgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNl
IHsKIC8vIHxlcnJvcnwgbWF5IGJlIG51bGwuCiAvLyBUT0RPKHN0ZXZlYW50b24pOiBUaGlzIGZ1
bmN0aW9uIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdGhlIGZ1bmN0aW9ucyBiZWxvdwogLy8g
d2hpY2ggdGFrZSBhbiBTZHBUeXBlIGVudW0gaW5zdGVhZC4gUmVtb3ZlIHRoaXMgb25jZSBpdCBp
cyBubyBsb25nZXIgdXNlZC4KLVNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSogQ3JlYXRlU2Vz
c2lvbkRlc2NyaXB0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHNkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yKTsKK1JUQ19FWFBPUlQgU2Vzc2lvbkRlc2NyaXB0aW9u
SW50ZXJmYWNlKiBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24oCisgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHR5cGUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNkcCwKKyAgICBTZHBQYXJzZUVycm9y
KiBlcnJvcik7CiAKIC8vIENyZWF0ZXMgYSBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UgYmFz
ZWQgb24gdGhlIFNEUCBzdHJpbmcgYW5kIHRoZSB0eXBlLgogLy8gUmV0dXJucyBudWxsIGlmIHRo
ZSBTRFAgc3RyaW5nIGNhbm5vdCBiZSBwYXJzZWQuCiAvLyBJZiB1c2luZyB0aGUgc2lnbmF0dXJl
IHdpdGggfGVycm9yX291dHwsIGRldGFpbHMgb2YgdGhlIHBhcnNpbmcgZXJyb3IgbWF5IGJlCiAv
LyB3cml0dGVuIHRvIHxlcnJvcl9vdXR8IGlmIGl0IGlzIG5vdCBudWxsLgotc3RkOjp1bmlxdWVf
cHRyPFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZT4gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9u
KAotICAgIFNkcFR5cGUgdHlwZSwKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgc2RwKTsKLXN0ZDo6
dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+IENyZWF0ZVNlc3Npb25EZXNj
cmlwdGlvbigKLSAgICBTZHBUeXBlIHR5cGUsCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNkcCwK
LSAgICBTZHBQYXJzZUVycm9yKiBlcnJvcl9vdXQpOworUlRDX0VYUE9SVCBzdGQ6OnVuaXF1ZV9w
dHI8U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlPgorQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9u
KFNkcFR5cGUgdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHNkcCk7CitSVENfRVhQT1JUIHN0ZDo6
dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+CitDcmVhdGVTZXNzaW9uRGVz
Y3JpcHRpb24oU2RwVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBzZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgU2RwUGFyc2VFcnJvciog
ZXJyb3Jfb3V0KTsKIAogLy8gQ3JlYXRlcyBhIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSBi
YXNlZCBvbiBhIHBhcnNlZCBTRFAgc3RydWN0dXJlIGFuZCB0aGUKIC8vIGdpdmVuIHR5cGUsIElE
IGFuZCB2ZXJzaW9uLgpAQCAtMjA2LDcgKzIwNyw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9u
RGVzY3JpcHRpb25JbnRlcmZhY2U+IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbigKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Y3JpY2tldDo6U2Vzc2lvbkRlc2NyaXB0aW9uPiBkZXNjcmlwdGlvbik7CiAK
IC8vIENyZWF0ZU9mZmVyIGFuZCBDcmVhdGVBbnN3ZXIgY2FsbGJhY2sgaW50ZXJmYWNlLgotY2xh
c3MgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgOiBwdWJsaWMgcnRjOjpSZWZDb3Vu
dEludGVyZmFjZSB7CitjbGFzcyBSVENfRVhQT1JUIENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9i
c2VydmVyCisgICAgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgcHVibGljOgog
ICAvLyBUaGlzIGNhbGxiYWNrIHRyYW5zZmVycyB0aGUgb3duZXJzaGlwIG9mIHRoZSB8ZGVzY3wu
CiAgIC8vIFRPRE8oZGVhZGJlZWYpOiBNYWtlIHRoaXMgdGFrZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8
PiB0byBhdm9pZCBjb25mdXNpb24KQEAgLTIyNyw3ICsyMjksNyBAQCBjbGFzcyBDcmVhdGVTZXNz
aW9uRGVzY3JpcHRpb25PYnNlcnZlciA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsK
IH07CiAKIC8vIFNldExvY2FsRGVzY3JpcHRpb24gYW5kIFNldFJlbW90ZURlc2NyaXB0aW9uIGNh
bGxiYWNrIGludGVyZmFjZS4KLWNsYXNzIFNldFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIDog
cHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgeworY2xhc3MgUlRDX0VYUE9SVCBTZXRTZXNz
aW9uRGVzY3JpcHRpb25PYnNlcnZlciA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsK
ICBwdWJsaWM6CiAgIHZpcnR1YWwgdm9pZCBPblN1Y2Nlc3MoKSA9IDA7CiAgIC8vIFNlZSBkZXNj
cmlwdGlvbiBpbiBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciBmb3IgT25GYWlsdXJl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2pzZXBpY2VjYW5kaWRhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvanNlcGljZWNhbmRpZGF0ZS5jYwppbmRleCBiOWJhMmZlYTI5YWFhYWQ2
MmMwYmNmODMyYmE4NjgzZmM3MDJlYzA0Li5lZDJmNzkyN2YyNzJiMzRkZTM2ZDNkYzAzZjBjNjMw
MDQxZWRhYTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvanNlcGljZWNhbmRpZGF0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcGljZWNhbmRpZGF0ZS5jYwpAQCAtMTAsNiAr
MTAsOSBAQAogCiAjaW5jbHVkZSAiYXBpL2pzZXBpY2VjYW5kaWRhdGUuaCIKIAorI2luY2x1ZGUg
PGFsZ29yaXRobT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAog
c3RkOjpzdHJpbmcgSnNlcEljZUNhbmRpZGF0ZTo6c2RwX21pZCgpIGNvbnN0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9qc2VwaWNl
Y2FuZGlkYXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvanNlcGljZWNhbmRpZGF0ZS5oCmluZGV4IDUwNTIwZmU3Mjc5YjJhNjY5NmMwNWQzYmZjZmVh
MDAxZGYwMjc5NTEuLjljYzc0NDNmM2ZiYmRjNzg0ZmQ3YjUxYmZkYmE5YzE4NzFiNDM4ZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9q
c2VwaWNlY2FuZGlkYXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2pzZXBpY2VjYW5kaWRhdGUuaApAQCAtMTQsOCArMTQsOCBAQAogI2lmbmRl
ZiBBUElfSlNFUElDRUNBTkRJREFURV9IXwogI2RlZmluZSBBUElfSlNFUElDRUNBTkRJREFURV9I
XwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0
aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2NhbmRpZGF0ZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZjIyM2FhNzg4MDIyZTdhNzlmOGM5ODcwYjdiYThkYjUxYTgyMDg4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21l
ZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuY2MKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKy8vIFRoaXMgaXMgRVhQRVJJTUVOVEFMIGludGVyZmFjZSBmb3IgbWVkaWEgdHJh
bnNwb3J0LgorLy8KKy8vIFRoZSBnb2FsIGlzIHRvIHJlZmFjdG9yIFdlYlJUQyBjb2RlIHNvIHRo
YXQgYXVkaW8gYW5kIHZpZGVvIGZyYW1lcworLy8gYXJlIHNlbnQgLyByZWNlaXZlZCB0aHJvdWdo
IHRoZSBtZWRpYSB0cmFuc3BvcnQgaW50ZXJmYWNlLiBUaGlzIHdpbGwKKy8vIGVuYWJsZSBkaWZm
ZXJlbnQgbWVkaWEgdHJhbnNwb3J0IGltcGxlbWVudGF0aW9ucywgaW5jbHVkaW5nIFFVSUMtYmFz
ZWQKKy8vIG1lZGlhIHRyYW5zcG9ydC4KKworI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRf
aW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHV0aWxpdHk+CisK
K25hbWVzcGFjZSB3ZWJydGMgeworCitNZWRpYVRyYW5zcG9ydFNldHRpbmdzOjpNZWRpYVRyYW5z
cG9ydFNldHRpbmdzKCkgPSBkZWZhdWx0OworTWVkaWFUcmFuc3BvcnRTZXR0aW5nczo6TWVkaWFU
cmFuc3BvcnRTZXR0aW5ncyhjb25zdCBNZWRpYVRyYW5zcG9ydFNldHRpbmdzJikgPQorICAgIGRl
ZmF1bHQ7CitNZWRpYVRyYW5zcG9ydFNldHRpbmdzJiBNZWRpYVRyYW5zcG9ydFNldHRpbmdzOjpv
cGVyYXRvcj0oCisgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyYpID0gZGVmYXVsdDsK
K01lZGlhVHJhbnNwb3J0U2V0dGluZ3M6On5NZWRpYVRyYW5zcG9ydFNldHRpbmdzKCkgPSBkZWZh
dWx0OworCitNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lOjp+TWVkaWFUcmFuc3BvcnRF
bmNvZGVkQXVkaW9GcmFtZSgpIHt9CisKK01lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6
Ok1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUoCisgICAgaW50IHNhbXBsaW5nX3JhdGVf
aHosCisgICAgaW50IHN0YXJ0aW5nX3NhbXBsZV9pbmRleCwKKyAgICBpbnQgc2FtcGxlc19wZXJf
Y2hhbm5lbCwKKyAgICBpbnQgc2VxdWVuY2VfbnVtYmVyLAorICAgIEZyYW1lVHlwZSBmcmFtZV90
eXBlLAorICAgIHVpbnQ4X3QgcGF5bG9hZF90eXBlLAorICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+
IGVuY29kZWRfZGF0YSkKKyAgICA6IHNhbXBsaW5nX3JhdGVfaHpfKHNhbXBsaW5nX3JhdGVfaHop
LAorICAgICAgc3RhcnRpbmdfc2FtcGxlX2luZGV4XyhzdGFydGluZ19zYW1wbGVfaW5kZXgpLAor
ICAgICAgc2FtcGxlc19wZXJfY2hhbm5lbF8oc2FtcGxlc19wZXJfY2hhbm5lbCksCisgICAgICBz
ZXF1ZW5jZV9udW1iZXJfKHNlcXVlbmNlX251bWJlciksCisgICAgICBmcmFtZV90eXBlXyhmcmFt
ZV90eXBlKSwKKyAgICAgIHBheWxvYWRfdHlwZV8ocGF5bG9hZF90eXBlKSwKKyAgICAgIGVuY29k
ZWRfZGF0YV8oc3RkOjptb3ZlKGVuY29kZWRfZGF0YSkpIHt9CisKK01lZGlhVHJhbnNwb3J0RW5j
b2RlZEF1ZGlvRnJhbWUmIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6Om9wZXJhdG9y
PSgKKyAgICBjb25zdCBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lJikgPSBkZWZhdWx0
OworCitNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lJiBNZWRpYVRyYW5zcG9ydEVuY29k
ZWRBdWRpb0ZyYW1lOjpvcGVyYXRvcj0oCisgICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9G
cmFtZSYmKSA9IGRlZmF1bHQ7CisKK01lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6Ok1l
ZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUoCisgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRF
bmNvZGVkQXVkaW9GcmFtZSYpID0gZGVmYXVsdDsKKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVk
aW9GcmFtZTo6TWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSgKKyAgICBNZWRpYVRyYW5z
cG9ydEVuY29kZWRBdWRpb0ZyYW1lJiYpID0gZGVmYXVsdDsKKworTWVkaWFUcmFuc3BvcnRFbmNv
ZGVkVmlkZW9GcmFtZTo6fk1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUoKSB7fQorCitN
ZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lOjpNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRl
b0ZyYW1lKAorICAgIGludDY0X3QgZnJhbWVfaWQsCisgICAgc3RkOjp2ZWN0b3I8aW50NjRfdD4g
cmVmZXJlbmNlZF9mcmFtZV9pZHMsCisgICAgVmlkZW9Db2RlY1R5cGUgY29kZWNfdHlwZSwKKyAg
ICBjb25zdCB3ZWJydGM6OkVuY29kZWRJbWFnZSYgZW5jb2RlZF9pbWFnZSkKKyAgICA6IGNvZGVj
X3R5cGVfKGNvZGVjX3R5cGUpLAorICAgICAgZW5jb2RlZF9pbWFnZV8oZW5jb2RlZF9pbWFnZSks
CisgICAgICBmcmFtZV9pZF8oZnJhbWVfaWQpLAorICAgICAgcmVmZXJlbmNlZF9mcmFtZV9pZHNf
KHN0ZDo6bW92ZShyZWZlcmVuY2VkX2ZyYW1lX2lkcykpIHt9CisKK01lZGlhVHJhbnNwb3J0RW5j
b2RlZFZpZGVvRnJhbWUmIE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWU6Om9wZXJhdG9y
PSgKKyAgICBjb25zdCBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJikgPSBkZWZhdWx0
OworCitNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJiBNZWRpYVRyYW5zcG9ydEVuY29k
ZWRWaWRlb0ZyYW1lOjpvcGVyYXRvcj0oCisgICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9G
cmFtZSYmKSA9IGRlZmF1bHQ7CisKK01lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWU6Ok1l
ZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUoCisgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRF
bmNvZGVkVmlkZW9GcmFtZSYpID0gZGVmYXVsdDsKKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlk
ZW9GcmFtZTo6TWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSgKKyAgICBNZWRpYVRyYW5z
cG9ydEVuY29kZWRWaWRlb0ZyYW1lJiYpID0gZGVmYXVsdDsKKworU2VuZERhdGFQYXJhbXM6OlNl
bmREYXRhUGFyYW1zKCkgPSBkZWZhdWx0OworCitSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVRyYW5zcG9ydEludGVyZmFjZT4+CitNZWRpYVRyYW5zcG9ydEZhY3Rvcnk6OkNyZWF0ZU1l
ZGlhVHJhbnNwb3J0KAorICAgIHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHBhY2tldF90
cmFuc3BvcnQsCisgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgIGJvb2wgaXNf
Y2FsbGVyKSB7CisgIE1lZGlhVHJhbnNwb3J0U2V0dGluZ3Mgc2V0dGluZ3M7CisgIHNldHRpbmdz
LmlzX2NhbGxlciA9IGlzX2NhbGxlcjsKKyAgcmV0dXJuIENyZWF0ZU1lZGlhVHJhbnNwb3J0KHBh
Y2tldF90cmFuc3BvcnQsIG5ldHdvcmtfdGhyZWFkLCBzZXR0aW5ncyk7Cit9CisKK1JUQ0Vycm9y
T3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPj4KK01lZGlhVHJhbnNw
b3J0RmFjdG9yeTo6Q3JlYXRlTWVkaWFUcmFuc3BvcnQoCisgICAgcnRjOjpQYWNrZXRUcmFuc3Bv
cnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9ydCwKKyAgICBydGM6OlRocmVhZCogbmV0d29ya190
aHJlYWQsCisgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyYgc2V0dGluZ3MpIHsKKyAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEludGVyZmFjZT4obnVsbHB0cik7
Cit9CisKK2Fic2w6Om9wdGlvbmFsPFRhcmdldFRyYW5zZmVyUmF0ZT4KK01lZGlhVHJhbnNwb3J0
SW50ZXJmYWNlOjpHZXRMYXRlc3RUYXJnZXRUcmFuc2ZlclJhdGUoKSB7CisgIHJldHVybiBhYnNs
OjpudWxsb3B0OworfQorCit2b2lkIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlOjpTZXROZXR3b3Jr
Q2hhbmdlQ2FsbGJhY2soCisgICAgTWVkaWFUcmFuc3BvcnROZXR3b3JrQ2hhbmdlQ2FsbGJhY2sq
IGNhbGxiYWNrKSB7fQorCit2b2lkIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlOjpSZW1vdmVUYXJn
ZXRUcmFuc2ZlclJhdGVPYnNlcnZlcigKKyAgICB3ZWJydGM6OlRhcmdldFRyYW5zZmVyUmF0ZU9i
c2VydmVyKiBvYnNlcnZlcikge30KKwordm9pZCBNZWRpYVRyYW5zcG9ydEludGVyZmFjZTo6QWRk
VGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIoCisgICAgd2VicnRjOjpUYXJnZXRUcmFuc2ZlclJh
dGVPYnNlcnZlciogb2JzZXJ2ZXIpIHt9CisKK3NpemVfdCBNZWRpYVRyYW5zcG9ydEludGVyZmFj
ZTo6R2V0QXVkaW9QYWNrZXRPdmVyaGVhZCgpIGNvbnN0IHsKKyAgcmV0dXJuIDA7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFfdHJhbnNwb3J0
X2ludGVyZmFjZS5oCmluZGV4IDJjODhjZDRjZTZhMTUwMmE0NzJlOTU1ZGJjNDM5ZGI1MjFkZDJi
ZjIuLmIxMGRkNjNhNDY1YzQ1YTk4MmY4NTg5NTY1ZGVlOThkMjNhYmVhNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYV90cmFu
c3BvcnRfaW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaApAQCAtMSw1ICsxLDQgQEAK
LS8qCi0gKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisvKiBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQogICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQpAQCAtMTgs
MTIgKzE3LDE4IEBACiAjaWZuZGVmIEFQSV9NRURJQV9UUkFOU1BPUlRfSU5URVJGQUNFX0hfCiAj
ZGVmaW5lIEFQSV9NRURJQV9UUkFOU1BPUlRfSU5URVJGQUNFX0hfCiAKKyNpbmNsdWRlIDxhcGkv
dHJhbnNwb3J0L25ldHdvcmtfY29udHJvbC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRl
IDxzdHJpbmc+CiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIK
ICNpbmNsdWRlICJhcGkvcnRjZXJyb3IuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8v
IE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdl
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9uZXR3b3Jrcm91dGUuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiBjbGFzcyBQYWNrZXRU
cmFuc3BvcnRJbnRlcm5hbDsKQEAgLTMyLDE2ICszNywzNiBAQCBjbGFzcyBUaHJlYWQ7CiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCisvLyBBIGNvbGxlY3Rpb24gb2Ygc2V0dGluZ3MgZm9yIGNyZWF0
aW9uIG9mIG1lZGlhIHRyYW5zcG9ydC4KK3N0cnVjdCBNZWRpYVRyYW5zcG9ydFNldHRpbmdzIGZp
bmFsIHsKKyAgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncygpOworICBNZWRpYVRyYW5zcG9ydFNldHRp
bmdzKGNvbnN0IE1lZGlhVHJhbnNwb3J0U2V0dGluZ3MmKTsKKyAgTWVkaWFUcmFuc3BvcnRTZXR0
aW5ncyYgb3BlcmF0b3I9KGNvbnN0IE1lZGlhVHJhbnNwb3J0U2V0dGluZ3MmKTsKKyAgfk1lZGlh
VHJhbnNwb3J0U2V0dGluZ3MoKTsKKworICAvLyBHcm91cCBjYWxscyBhcmUgbm90IGN1cnJlbnRs
eSBzdXBwb3J0ZWQsIGluIDE6MSBjYWxsIG9uZSBzaWRlIG11c3Qgc2V0CisgIC8vIGlzX2NhbGxl
ciA9IHRydWUgYW5kIGFub3RoZXIgaXNfY2FsbGVyID0gZmFsc2UuCisgIGJvb2wgaXNfY2FsbGVy
OworCisgIC8vIE11c3QgYmUgc2V0IGlmIGEgcHJlLXNoYXJlZCBrZXkgaXMgdXNlZCBmb3IgdGhl
IGNhbGwuCisgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk5NDQpOiBUaGlzIHNob3VsZCBiZWNv
bWUgemVybyBidWZmZXIgaW4gdGhlIGRpc3RhbnQKKyAgLy8gZnV0dXJlLgorICBhYnNsOjpvcHRp
b25hbDxzdGQ6OnN0cmluZz4gcHJlX3NoYXJlZF9rZXk7Cit9OworCiAvLyBSZXByZXNlbnRzIGVu
Y29kZWQgYXVkaW8gZnJhbWUgaW4gYW55IGVuY29kaW5nICh0eXBlIG9mIGVuY29kaW5nIGlzIG9w
YXF1ZSkuCiAvLyBUbyBhdm9pZCBjb3B5aW5nIG9mIGVuY29kZWQgZGF0YSB1c2UgbW92ZSBzZW1h
bnRpY3Mgd2hlbiBwYXNzaW5nIGJ5IHZhbHVlLgotY2xhc3MgTWVkaWFUcmFuc3BvcnRFbmNvZGVk
QXVkaW9GcmFtZSB7CitjbGFzcyBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lIGZpbmFs
IHsKICBwdWJsaWM6CiAgIGVudW0gY2xhc3MgRnJhbWVUeXBlIHsKICAgICAvLyBOb3JtYWwgYXVk
aW8gZnJhbWUgKGVxdWl2YWxlbnQgdG8gd2VicnRjOjprQXVkaW9GcmFtZVNwZWVjaCkuCiAgICAg
a1NwZWVjaCwKIAogICAgIC8vIERUWCBmcmFtZSAoZXF1aXZhbGVudCB0byB3ZWJydGM6OmtBdWRp
b0ZyYW1lQ04pLgotICAgIGtEaXNjb3VudGludW91c1RyYW5zbWlzc2lvbiwKKyAgICAvLyBEVFgg
ZnJhbWUgKGVxdWl2YWxlbnQgdG8gd2VicnRjOjprQXVkaW9GcmFtZUNOKS4KKyAgICBrRGlzY29u
dGludW91c1RyYW5zbWlzc2lvbiwKKyAgICAvLyBUT0RPKG5pc3NlKTogTWlzLXNwZWxsZWQgdmVy
c2lvbiwgdXBkYXRlIHVzZXJzLCB0aGVuIGRlbGV0ZS4KKyAgICBrRGlzY291bnRpbnVvdXNUcmFu
c21pc3Npb24gPSBrRGlzY29udGludW91c1RyYW5zbWlzc2lvbiwKICAgfTsKIAogICBNZWRpYVRy
YW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lKApAQCAtNzUsMTQgKzEwMCwxNSBAQCBjbGFzcyBNZWRp
YVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lIHsKICAgICAgIHVpbnQ4X3QgcGF5bG9hZF90eXBl
LAogCiAgICAgICAvLyBWZWN0b3Igd2l0aCBvcGFxdWUgZW5jb2RlZCBkYXRhLgotICAgICAgc3Rk
Ojp2ZWN0b3I8dWludDhfdD4gZW5jb2RlZF9kYXRhKQotICAgICAgOiBzYW1wbGluZ19yYXRlX2h6
XyhzYW1wbGluZ19yYXRlX2h6KSwKLSAgICAgICAgc3RhcnRpbmdfc2FtcGxlX2luZGV4XyhzdGFy
dGluZ19zYW1wbGVfaW5kZXgpLAotICAgICAgICBzYW1wbGVzX3Blcl9jaGFubmVsXyhzYW1wbGVz
X3Blcl9jaGFubmVsKSwKLSAgICAgICAgc2VxdWVuY2VfbnVtYmVyXyhzZXF1ZW5jZV9udW1iZXIp
LAotICAgICAgICBmcmFtZV90eXBlXyhmcmFtZV90eXBlKSwKLSAgICAgICAgcGF5bG9hZF90eXBl
XyhwYXlsb2FkX3R5cGUpLAotICAgICAgICBlbmNvZGVkX2RhdGFfKHN0ZDo6bW92ZShlbmNvZGVk
X2RhdGEpKSB7fQorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZW5jb2RlZF9kYXRhKTsKKwor
ICB+TWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSgpOworICBNZWRpYVRyYW5zcG9ydEVu
Y29kZWRBdWRpb0ZyYW1lKGNvbnN0IE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUmKTsK
KyAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSYgb3BlcmF0b3I9KAorICAgICAgY29u
c3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSYgb3RoZXIpOworICBNZWRpYVRyYW5z
cG9ydEVuY29kZWRBdWRpb0ZyYW1lJiBvcGVyYXRvcj0oCisgICAgICBNZWRpYVRyYW5zcG9ydEVu
Y29kZWRBdWRpb0ZyYW1lJiYgb3RoZXIpOworICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0Zy
YW1lKE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUmJik7CiAKICAgLy8gR2V0dGVycy4K
ICAgaW50IHNhbXBsaW5nX3JhdGVfaHooKSBjb25zdCB7IHJldHVybiBzYW1wbGluZ19yYXRlX2h6
XzsgfQpAQCAtMTEzLDYgKzEzOSwxNiBAQCBjbGFzcyBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRp
b0ZyYW1lIHsKICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZW5jb2RlZF9kYXRhXzsKIH07CiAKKy8v
IENhbGxiYWNrIHRvIG5vdGlmeSBhYm91dCBuZXR3b3JrIHJvdXRlIGNoYW5nZXMuCitjbGFzcyBN
ZWRpYVRyYW5zcG9ydE5ldHdvcmtDaGFuZ2VDYWxsYmFjayB7CisgcHVibGljOgorICB2aXJ0dWFs
IH5NZWRpYVRyYW5zcG9ydE5ldHdvcmtDaGFuZ2VDYWxsYmFjaygpID0gZGVmYXVsdDsKKworICAv
LyBDYWxsZWQgd2hlbiB0aGUgbmV0d29yayByb3V0ZSBpcyBjaGFuZ2VkLCB3aXRoIHRoZSBuZXcg
bmV0d29yayByb3V0ZS4KKyAgdmlydHVhbCB2b2lkIE9uTmV0d29ya1JvdXRlQ2hhbmdlZCgKKyAg
ICAgIGNvbnN0IHJ0Yzo6TmV0d29ya1JvdXRlJiBuZXdfbmV0d29ya19yb3V0ZSkgPSAwOworfTsK
KwogLy8gSW50ZXJmYWNlIGZvciByZWNlaXZpbmcgZW5jb2RlZCBhdWRpbyBmcmFtZXMgZnJvbSBN
ZWRpYVRyYW5zcG9ydEludGVyZmFjZQogLy8gaW1wbGVtZW50YXRpb25zLgogY2xhc3MgTWVkaWFU
cmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2UgewpAQCAtMTI1LDE2ICsxNjEsMTkgQEAgY2xhc3Mg
TWVkaWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2UgewogfTsKIAogLy8gUmVwcmVzZW50cyBl
bmNvZGVkIHZpZGVvIGZyYW1lLCBhbG9uZyB3aXRoIHRoZSBjb2RlYyBpbmZvcm1hdGlvbi4KLWNs
YXNzIE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUgeworY2xhc3MgTWVkaWFUcmFuc3Bv
cnRFbmNvZGVkVmlkZW9GcmFtZSBmaW5hbCB7CiAgcHVibGljOgogICBNZWRpYVRyYW5zcG9ydEVu
Y29kZWRWaWRlb0ZyYW1lKGludDY0X3QgZnJhbWVfaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50NjRfdD4gcmVmZXJlbmNlZF9mcmFtZV9pZHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9Db2RlY1R5cGUgY29kZWNfdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OkVuY29k
ZWRJbWFnZSYgZW5jb2RlZF9pbWFnZSkKLSAgICAgIDogY29kZWNfdHlwZV8oY29kZWNfdHlwZSks
Ci0gICAgICAgIGVuY29kZWRfaW1hZ2VfKGVuY29kZWRfaW1hZ2UpLAotICAgICAgICBmcmFtZV9p
ZF8oZnJhbWVfaWQpLAotICAgICAgICByZWZlcmVuY2VkX2ZyYW1lX2lkc18oc3RkOjptb3ZlKHJl
ZmVyZW5jZWRfZnJhbWVfaWRzKSkge30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB3ZWJydGM6OkVuY29kZWRJbWFnZSYgZW5jb2RlZF9pbWFnZSk7CisgIH5NZWRpYVRy
YW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lKCk7CisgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVv
RnJhbWUoY29uc3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSYpOworICBNZWRpYVRy
YW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJiBvcGVyYXRvcj0oCisgICAgICBjb25zdCBNZWRpYVRy
YW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJiBvdGhlcik7CisgIE1lZGlhVHJhbnNwb3J0RW5jb2Rl
ZFZpZGVvRnJhbWUmIG9wZXJhdG9yPSgKKyAgICAgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVv
RnJhbWUmJiBvdGhlcik7CisgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUoTWVkaWFU
cmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSYmKTsKIAogICBWaWRlb0NvZGVjVHlwZSBjb2RlY190
eXBlKCkgY29uc3QgeyByZXR1cm4gY29kZWNfdHlwZV87IH0KICAgY29uc3Qgd2VicnRjOjpFbmNv
ZGVkSW1hZ2UmIGVuY29kZWRfaW1hZ2UoKSBjb25zdCB7IHJldHVybiBlbmNvZGVkX2ltYWdlXzsg
fQpAQCAtMTgzLDYgKzIyMiw4NSBAQCBjbGFzcyBNZWRpYVRyYW5zcG9ydFZpZGVvU2lua0ludGVy
ZmFjZSB7CiAgIHZpcnR1YWwgdm9pZCBPbktleUZyYW1lUmVxdWVzdGVkKHVpbnQ2NF90IGNoYW5u
ZWxfaWQpID0gMDsKIH07CiAKKy8vIFN0YXRlIG9mIHRoZSBtZWRpYSB0cmFuc3BvcnQuICBNZWRp
YSB0cmFuc3BvcnQgYmVnaW5zIGluIHRoZSBwZW5kaW5nIHN0YXRlLgorLy8gSXQgdHJhbnNpdGlv
bnMgdG8gd3JpdGFibGUgd2hlbiBpdCBpcyByZWFkeSB0byBzZW5kIG1lZGlhLiAgSXQgbWF5IHRy
YW5zaXRpb24KKy8vIGJhY2sgdG8gcGVuZGluZyBpZiB0aGUgY29ubmVjdGlvbiBpcyBibG9ja2Vk
LiAgSXQgbWF5IHRyYW5zaXRpb24gdG8gY2xvc2VkIGF0CisvLyBhbnkgdGltZS4gIENsb3NlZCBp
cyB0ZXJtaW5hbDogYSB0cmFuc3BvcnQgd2lsbCBuZXZlciByZS1vcGVuIG9uY2UgY2xvc2VkLgor
ZW51bSBjbGFzcyBNZWRpYVRyYW5zcG9ydFN0YXRlIHsKKyAga1BlbmRpbmcsCisgIGtXcml0YWJs
ZSwKKyAga0Nsb3NlZCwKK307CisKKy8vIENhbGxiYWNrIGludm9rZWQgd2hlbmV2ZXIgdGhlIHN0
YXRlIG9mIHRoZSBtZWRpYSB0cmFuc3BvcnQgY2hhbmdlcy4KK2NsYXNzIE1lZGlhVHJhbnNwb3J0
U3RhdGVDYWxsYmFjayB7CisgcHVibGljOgorICB2aXJ0dWFsIH5NZWRpYVRyYW5zcG9ydFN0YXRl
Q2FsbGJhY2soKSA9IGRlZmF1bHQ7CisKKyAgLy8gSW52b2tlZCB3aGVuZXZlciB0aGUgc3RhdGUg
b2YgdGhlIG1lZGlhIHRyYW5zcG9ydCBjaGFuZ2VzLgorICB2aXJ0dWFsIHZvaWQgT25TdGF0ZUNo
YW5nZWQoTWVkaWFUcmFuc3BvcnRTdGF0ZSBzdGF0ZSkgPSAwOworfTsKKworLy8gU3VwcG9ydGVk
IHR5cGVzIG9mIGFwcGxpY2F0aW9uIGRhdGEgbWVzc2FnZXMuCitlbnVtIGNsYXNzIERhdGFNZXNz
YWdlVHlwZSB7CisgIC8vIEFwcGxpY2F0aW9uIGRhdGEgYnVmZmVyIHdpdGggdGhlIGJpbmFyeSBi
aXQgdW5zZXQuCisgIGtUZXh0LAorCisgIC8vIEFwcGxpY2F0aW9uIGRhdGEgYnVmZmVyIHdpdGgg
dGhlIGJpbmFyeSBiaXQgc2V0LgorICBrQmluYXJ5LAorCisgIC8vIFRyYW5zcG9ydC1hZ25vc3Rp
YyBjb250cm9sIG1lc3NhZ2VzLCBzdWNoIGFzIG9wZW4gb3Igb3Blbi1hY2sgbWVzc2FnZXMuCisg
IGtDb250cm9sLAorfTsKKworLy8gUGFyYW1ldGVycyBmb3Igc2VuZGluZyBkYXRhLiAgVGhlIHBh
cmFtZXRlcnMgbWF5IGNoYW5nZSBmcm9tIG1lc3NhZ2UgdG8KKy8vIG1lc3NhZ2UsIGV2ZW4gd2l0
aGluIGEgc2luZ2xlIGNoYW5uZWwuICBGb3IgZXhhbXBsZSwgY29udHJvbCBtZXNzYWdlcyBtYXkg
YmUKKy8vIHNlbnQgcmVsaWFibHkgYW5kIGluLW9yZGVyLCBldmVuIGlmIHRoZSBkYXRhIGNoYW5u
ZWwgaXMgY29uZmlndXJlZCBmb3IKKy8vIHVucmVsaWFibGUgZGVsaXZlcnkuCitzdHJ1Y3QgU2Vu
ZERhdGFQYXJhbXMgeworICBTZW5kRGF0YVBhcmFtcygpOworCisgIERhdGFNZXNzYWdlVHlwZSB0
eXBlID0gRGF0YU1lc3NhZ2VUeXBlOjprVGV4dDsKKworICAvLyBXaGV0aGVyIHRvIGRlbGl2ZXIg
dGhlIG1lc3NhZ2UgaW4gb3JkZXIgd2l0aCByZXNwZWN0IHRvIG90aGVyIG9yZGVyZWQKKyAgLy8g
bWVzc2FnZXMgd2l0aCB0aGUgc2FtZSBjaGFubmVsX2lkLgorICBib29sIG9yZGVyZWQgPSBmYWxz
ZTsKKworICAvLyBJZiBzZXQsIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGlzIG1lc3Nh
Z2UgbWF5IGJlCisgIC8vIHJldHJhbnNtaXR0ZWQgYnkgdGhlIHRyYW5zcG9ydCBiZWZvcmUgaXQg
aXMgZHJvcHBlZC4KKyAgLy8gU2V0dGluZyB0aGlzIHZhbHVlIHRvIHplcm8gZGlzYWJsZXMgcmV0
cmFuc21pc3Npb24uCisgIC8vIE11c3QgYmUgbm9uLW5lZ2F0aXZlLiB8bWF4X3J0eF9jb3VudHwg
YW5kIHxtYXhfcnR4X21zfCBtYXkgbm90IGJlIHNldAorICAvLyBzaW11bHRhbmVvdXNseS4KKyAg
YWJzbDo6b3B0aW9uYWw8aW50PiBtYXhfcnR4X2NvdW50OworCisgIC8vIElmIHNldCwgdGhlIG1h
eGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdGhlIHRyYW5zcG9ydAorICAv
LyBtYXkgcmV0cmFuc21pdCB0aGlzIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGRyb3BwZWQuCisgIC8v
IFNldHRpbmcgdGhpcyB2YWx1ZSB0byB6ZXJvIGRpc2FibGVzIHJldHJhbnNtaXNzaW9uLgorICAv
LyBNdXN0IGJlIG5vbi1uZWdhdGl2ZS4gfG1heF9ydHhfY291bnR8IGFuZCB8bWF4X3J0eF9tc3wg
bWF5IG5vdCBiZSBzZXQKKyAgLy8gc2ltdWx0YW5lb3VzbHkuCisgIGFic2w6Om9wdGlvbmFsPGlu
dD4gbWF4X3J0eF9tczsKK307CisKKy8vIFNpbmsgZm9yIGNhbGxiYWNrcyByZWxhdGVkIHRvIGEg
ZGF0YSBjaGFubmVsLgorY2xhc3MgRGF0YUNoYW5uZWxTaW5rIHsKKyBwdWJsaWM6CisgIHZpcnR1
YWwgfkRhdGFDaGFubmVsU2luaygpID0gZGVmYXVsdDsKKworICAvLyBDYWxsYmFjayBpc3N1ZWQg
d2hlbiBkYXRhIGlzIHJlY2VpdmVkIGJ5IHRoZSB0cmFuc3BvcnQuCisgIHZpcnR1YWwgdm9pZCBP
bkRhdGFSZWNlaXZlZChpbnQgY2hhbm5lbF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERhdGFNZXNzYWdlVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgYnVmZmVyKSA9IDA7CisKKyAgLy8gQ2FsbGJh
Y2sgaXNzdWVkIHdoZW4gYSByZW1vdGUgZGF0YSBjaGFubmVsIGJlZ2lucyB0aGUgY2xvc2luZyBw
cm9jZWR1cmUuCisgIC8vIE1lc3NhZ2VzIHNlbnQgYWZ0ZXIgdGhlIGNsb3NpbmcgcHJvY2VkdXJl
IGJlZ2lucyB3aWxsIG5vdCBiZSB0cmFuc21pdHRlZC4KKyAgdmlydHVhbCB2b2lkIE9uQ2hhbm5l
bENsb3NpbmcoaW50IGNoYW5uZWxfaWQpID0gMDsKKworICAvLyBDYWxsYmFjayBpc3N1ZWQgd2hl
biBhIChyZW1vdGUgb3IgbG9jYWwpIGRhdGEgY2hhbm5lbCBjb21wbGV0ZXMgdGhlIGNsb3NpbmcK
KyAgLy8gcHJvY2VkdXJlLiAgQ2xvc2luZyBjaGFubmVscyBiZWNvbWUgY2xvc2VkIGFmdGVyIGFs
bCBwZW5kaW5nIGRhdGEgaGFzIGJlZW4KKyAgLy8gdHJhbnNtaXR0ZWQuCisgIHZpcnR1YWwgdm9p
ZCBPbkNoYW5uZWxDbG9zZWQoaW50IGNoYW5uZWxfaWQpID0gMDsKK307CisKIC8vIE1lZGlhIHRy
YW5zcG9ydCBpbnRlcmZhY2UgZm9yIHNlbmRpbmcgLyByZWNlaXZpbmcgZW5jb2RlZCBhdWRpby92
aWRlbyBmcmFtZXMKIC8vIGFuZCByZWNlaXZpbmcgYmFuZHdpZHRoIGVzdGltYXRlIHVwZGF0ZSBm
cm9tIGNvbmdlc3Rpb24gY29udHJvbC4KIGNsYXNzIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlIHsK
QEAgLTIxNyw4ICszMzUsNjIgQEAgY2xhc3MgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UgewogICAv
LyBwYXNzIGEgbnVsbHB0ci4KICAgdmlydHVhbCB2b2lkIFNldFJlY2VpdmVWaWRlb1NpbmsoTWVk
aWFUcmFuc3BvcnRWaWRlb1NpbmtJbnRlcmZhY2UqIHNpbmspID0gMDsKIAorICAvLyBBZGRzIGEg
dGFyZ2V0IGJpdHJhdGUgb2JzZXJ2ZXIuIEJlZm9yZSBtZWRpYSB0cmFuc3BvcnQgaXMgZGVzdHJ1
Y3RlZAorICAvLyB0aGUgb2JzZXJ2ZXIgbXVzdCBiZSB1bnJlZ2lzdGVyZWQgKGJ5IGNhbGxpbmcK
KyAgLy8gUmVtb3ZlVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIpLgorICAvLyBBIG5ld2x5IHJl
Z2lzdGVyZWQgb2JzZXJ2ZXIgd2lsbCBiZSBjYWxsZWQgYmFjayB3aXRoIHRoZSBsYXRlc3QgcmVj
b3JkZWQKKyAgLy8gdGFyZ2V0IHJhdGUsIGlmIGF2YWlsYWJsZS4KKyAgdmlydHVhbCB2b2lkIEFk
ZFRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKAorICAgICAgd2VicnRjOjpUYXJnZXRUcmFuc2Zl
clJhdGVPYnNlcnZlciogb2JzZXJ2ZXIpOworCisgIC8vIFJlbW92ZXMgYW4gZXhpc3RpbmcgfG9i
c2VydmVyfCBmcm9tIG9ic2VydmVycy4gSWYgb2JzZXJ2ZXIgd2FzIG5ldmVyCisgIC8vIHJlZ2lz
dGVyZWQsIGFuIGVycm9yIGlzIGxvZ2dlZCBhbmQgbWV0aG9kIGRvZXMgbm90aGluZy4KKyAgdmly
dHVhbCB2b2lkIFJlbW92ZVRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKAorICAgICAgd2VicnRj
OjpUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlciogb2JzZXJ2ZXIpOworCisgIC8vIFJldHVybnMg
dGhlIGxhc3Qga25vd24gdGFyZ2V0IHRyYW5zZmVyIHJhdGUgYXMgcmVwb3J0ZWQgdG8gdGhlIGFi
b3ZlCisgIC8vIG9ic2VydmVycy4KKyAgdmlydHVhbCBhYnNsOjpvcHRpb25hbDxUYXJnZXRUcmFu
c2ZlclJhdGU+IEdldExhdGVzdFRhcmdldFRyYW5zZmVyUmF0ZSgpOworCisgIC8vIEdldHMgdGhl
IGF1ZGlvIHBhY2tldCBvdmVyaGVhZCBpbiBieXRlcy4gUmV0dXJuZWQgb3ZlcmhlYWQgZG9lcyBu
b3QgaW5jbHVkZQorICAvLyB0cmFuc3BvcnQgb3ZlcmhlYWQgKGlwdjQvNiwgdHVybiBjaGFubmVs
ZGF0YSwgdGNwL3VkcCwgZXRjLikuCisgIC8vIElmIHRoZSB0cmFuc3BvcnQgaXMgY2FwYWJsZSBv
ZiBmdXNpbmcgcGFja2V0cyB0b2dldGhlciwgdGhpcyBvdmVyaGVhZAorICAvLyBtaWdodCBub3Qg
YmUgYSB2ZXJ5IGFjY3VyYXRlIG51bWJlci4KKyAgdmlydHVhbCBzaXplX3QgR2V0QXVkaW9QYWNr
ZXRPdmVyaGVhZCgpIGNvbnN0OworCisgIC8vIFNldHMgYW4gb2JzZXJ2ZXIgZm9yIG5ldHdvcmsg
Y2hhbmdlIGV2ZW50cy4gSWYgdGhlIG5ldHdvcmsgcm91dGUgaXMgYWxyZWFkeQorICAvLyBlc3Rh
Ymxpc2hlZCB3aGVuIHRoZSBjYWxsYmFjayBpcyBzZXQsIHxjYWxsYmFja3wgd2lsbCBiZSBjYWxs
ZWQgaW1tZWRpYXRlbHkKKyAgLy8gd2l0aCB0aGUgY3VycmVudCBuZXR3b3JrIHJvdXRlLgorICAv
LyBCZWZvcmUgbWVkaWEgdHJhbnNwb3J0IGlzIGRlc3Ryb3llZCwgdGhlIGNhbGxiYWNrIG11c3Qg
YmUgdW5yZWdpc3RlcmVkIGJ5CisgIC8vIHNldHRpbmcgaXQgdG8gbnVsbHB0ci4KKyAgdmlydHVh
bCB2b2lkIFNldE5ldHdvcmtDaGFuZ2VDYWxsYmFjaygKKyAgICAgIE1lZGlhVHJhbnNwb3J0TmV0
d29ya0NoYW5nZUNhbGxiYWNrKiBjYWxsYmFjayk7CisKKyAgLy8gU2V0cyBhIHN0YXRlIG9ic2Vy
dmVyIGNhbGxiYWNrLiBCZWZvcmUgbWVkaWEgdHJhbnNwb3J0IGlzIGRlc3Ryb3llZCwgdGhlCisg
IC8vIGNhbGxiYWNrIG11c3QgYmUgdW5yZWdpc3RlcmVkIGJ5IHNldHRpbmcgaXQgdG8gbnVsbHB0
ci4KKyAgLy8gQSBuZXdseSByZWdpc3RlcmVkIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHdpdGgg
dGhlIGN1cnJlbnQgc3RhdGUuCisgIC8vIE1lZGlhIHRyYW5zcG9ydCBkb2VzIG5vdCBpbnZva2Ug
dGhpcyBjYWxsYmFjayBjb25jdXJyZW50bHkuCisgIHZpcnR1YWwgdm9pZCBTZXRNZWRpYVRyYW5z
cG9ydFN0YXRlQ2FsbGJhY2soCisgICAgICBNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sqIGNh
bGxiYWNrKSA9IDA7CisKKyAgLy8gU2VuZHMgYSBkYXRhIGJ1ZmZlciB0byB0aGUgcmVtb3RlIGVu
ZHBvaW50IHVzaW5nIHRoZSBnaXZlbiBzZW5kIHBhcmFtZXRlcnMuCisgIC8vIHxidWZmZXJ8IG1h
eSBub3QgYmUgbGFyZ2VyIHRoYW4gMjU2IEtpQi4gUmV0dXJucyBhbiBlcnJvciBpZiB0aGUgc2Vu
ZAorICAvLyBmYWlscy4KKyAgdmlydHVhbCBSVENFcnJvciBTZW5kRGF0YShpbnQgY2hhbm5lbF9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTZW5kRGF0YVBhcmFtcyYgcGFy
YW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVC
dWZmZXImIGJ1ZmZlcikgPSAwOworCisgIC8vIENsb3NlcyB8Y2hhbm5lbF9pZHwgZ3JhY2VmdWxs
eS4gIFJldHVybnMgYW4gZXJyb3IgaWYgfGNoYW5uZWxfaWR8IGlzIG5vdAorICAvLyBvcGVuLiAg
RGF0YSBzZW50IGFmdGVyIHRoZSBjbG9zaW5nIHByb2NlZHVyZSBiZWdpbnMgd2lsbCBub3QgYmUK
KyAgLy8gdHJhbnNtaXR0ZWQuIFRoZSBjaGFubmVsIGJlY29tZXMgY2xvc2VkIGFmdGVyIHBlbmRp
bmcgZGF0YSBpcyB0cmFuc21pdHRlZC4KKyAgdmlydHVhbCBSVENFcnJvciBDbG9zZUNoYW5uZWwo
aW50IGNoYW5uZWxfaWQpID0gMDsKKworICAvLyBTZXRzIGEgc2luayBmb3IgZGF0YSBtZXNzYWdl
cyBhbmQgY2hhbm5lbCBzdGF0ZSBjYWxsYmFja3MuIEJlZm9yZSBtZWRpYQorICAvLyB0cmFuc3Bv
cnQgaXMgZGVzdHJveWVkLCB0aGUgc2luayBtdXN0IGJlIHVucmVnaXN0ZXJlZCBieSBzZXR0aW5n
IGl0IHRvCisgIC8vIG51bGxwdHIuCisgIHZpcnR1YWwgdm9pZCBTZXREYXRhU2luayhEYXRhQ2hh
bm5lbFNpbmsqIHNpbmspID0gMDsKKwogICAvLyBUT0RPKHN1a2hhbm92KTogUnRjRXZlbnRMb2dz
LgotICAvLyBUT0RPKHN1a2hhbm92KTogQmFuZHdpZHRoIHVwZGF0ZXMuCiB9OwogCiAvLyBJZiBt
ZWRpYSB0cmFuc3BvcnQgZmFjdG9yeSBpcyBzZXQgaW4gcGVlciBjb25uZWN0aW9uIGZhY3Rvcnks
IGl0IHdpbGwgYmUKQEAgLTIzNiwxMCArNDA4LDIxIEBAIGNsYXNzIE1lZGlhVHJhbnNwb3J0RmFj
dG9yeSB7CiAgIC8vIC0gRG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgcGFja2V0X3RyYW5zcG9y
dCBvciBuZXR3b3JrX3RocmVhZC4KICAgLy8gLSBEb2VzIG5vdCBzdXBwb3J0IGdyb3VwIGNhbGxz
LCBpbiAxOjEgY2FsbCBvbmUgc2lkZSBtdXN0IHNldAogICAvLyAgIGlzX2NhbGxlciA9IHRydWUg
YW5kIGFub3RoZXIgaXNfY2FsbGVyID0gZmFsc2UuCisgIC8vIFRPRE8oYnVncy53ZWJydGMub3Jn
Lzk5MzgpIFRoaXMgY29uc3RydWN0b3Igd2lsbCBiZSByZW1vdmVkIGFuZCByZXBsYWNlZAorICAv
LyB3aXRoIHRoZSBvbmUgYmVsb3cuCisgIHZpcnR1YWwgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9w
dHI8TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+PgorICBDcmVhdGVNZWRpYVRyYW5zcG9ydChydGM6
OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiBwYWNrZXRfdHJhbnNwb3J0LAorICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNfY2FsbGVyKTsKKworICAvLyBDcmVhdGVzIG1lZGlhIHRyYW5zcG9ydC4K
KyAgLy8gLSBEb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiBwYWNrZXRfdHJhbnNwb3J0IG9yIG5l
dHdvcmtfdGhyZWFkLgorICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85OTM4KTogcmVtb3ZlIGRl
ZmF1bHQgaW1wbGVtZW50YXRpb24gb25jZSBhbGwgY2hpbGRyZW4KKyAgLy8gb3ZlcnJpZGUgaXQu
CiAgIHZpcnR1YWwgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRJbnRl
cmZhY2U+PgogICBDcmVhdGVNZWRpYVRyYW5zcG9ydChydGM6OlBhY2tldFRyYW5zcG9ydEludGVy
bmFsKiBwYWNrZXRfdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRocmVh
ZCogbmV0d29ya190aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfY2FsbGVy
KSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlhVHJhbnNwb3J0U2V0dGlu
Z3MmIHNldHRpbmdzKTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYWNvbnN0
cmFpbnRzaW50ZXJmYWNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNpbnRlcmZhY2UuY2MKaW5kZXggNTU2Nzc4NjliZWRk
N2MzMjEyNDAwYjg3Y2ZhZTMyNzdhY2MzNGQzMC4uYjY2YmEwNTAzYWM3ZjU4ZjcxNzBkNjc1OTE4
ZGU5YTI0YzZhNjk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNpbnRlcmZhY2UuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNp
bnRlcmZhY2UuY2MKQEAgLTEwLDcgKzEwLDkgQEAKIAogI2luY2x1ZGUgImFwaS9tZWRpYWNvbnN0
cmFpbnRzaW50ZXJmYWNlLmgiCiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAj
aW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAibWVkaWEv
YmFzZS9tZWRpYWNvbmZpZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgog
CiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYWNvbnN0cmFpbnRzaW50ZXJm
YWNlLmgKaW5kZXggYzZhOTE0YWE1NjRmOTgzMWIxMjhiYTMwODZiYWVmN2E1ODBlMzk3Yy4uYzlh
NmUxYjE4ODU4ZGY1OTlhMTNiMmNkMjEwMzU2NWMwNTk3MGQzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNp
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5oCkBAIC0yMSwxMCArMjEsMTEgQEAKICNp
Zm5kZWYgQVBJX01FRElBQ09OU1RSQUlOVFNJTlRFUkZBQ0VfSF8KICNkZWZpbmUgQVBJX01FRElB
Q09OU1RSQUlOVFNJTlRFUkZBQ0VfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUg
PHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlv
bmFsLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX29wdGlvbnMuaCIKICNpbmNsdWRlICJhcGkvcGVl
cmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFzdHJl
YW1pbnRlcmZhY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuY2MKaW5kZXggNmYwOGEwY2FmMWMxYjEyMzRhYzUx
Nzc5ZjEzZDVjYWRhOTljNDc0Yy4uOTU1ZTdlNGM2MDhlZTUwNWZjMGUwYzkwY2RhMzQxNWYxYjBk
MWQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5jYwpAQCAtMTcs
MzQgKzE3LDYgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBjb25zdCBjaGFyIE1lZGlhU3RyZWFtVHJh
Y2tJbnRlcmZhY2U6OmtWaWRlb0tpbmRbXSA9ICJ2aWRlbyI7CiBjb25zdCBjaGFyIE1lZGlhU3Ry
ZWFtVHJhY2tJbnRlcmZhY2U6OmtBdWRpb0tpbmRbXSA9ICJhdWRpbyI7CiAKLXZvaWQgQXVkaW9Q
cm9jZXNzb3JJbnRlcmZhY2U6OkdldFN0YXRzKEF1ZGlvUHJvY2Vzc29yU3RhdHMqIC8qc3RhdHMq
LykgewotICBSVENfTk9UUkVBQ0hFRCgpIDw8ICJPbGQtc3R5bGUgR2V0U3RhdHMoKSBpcyBjYWxs
ZWQgYnV0IGl0IGhhcyBubyAiCi0gICAgICAgICAgICAgICAgICAgPDwgImltcGxlbWVudGF0aW9u
LiI7Ci0gIFJUQ19MT0coTFNfRVJST1IpIDw8ICJPbGQtc3R5bGUgR2V0U3RhdHMoKSBpcyBjYWxs
ZWQgYnV0IGl0IGhhcyBubyAiCi0gICAgICAgICAgICAgICAgICAgIDw8ICJpbXBsZW1lbnRhdGlv
bi4iOwotfQotCi0vLyBUT0RPKGl2b2MpOiBSZW1vdmUgdGhpcyB3aGVuIHRoZSBmdW5jdGlvbiBi
ZWNvbWVzIHB1cmUgdmlydHVhbC4KLUF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNlOjpBdWRpb1Byb2Nl
c3NvclN0YXRpc3RpY3MKLUF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNlOjpHZXRTdGF0cyhib29sIC8q
aGFzX3JlbW90ZV90cmFja3MqLykgewotICBBdWRpb1Byb2Nlc3NvclN0YXRzIHN0YXRzOwotICBH
ZXRTdGF0cygmc3RhdHMpOwotICBBdWRpb1Byb2Nlc3NvclN0YXRpc3RpY3MgbmV3X3N0YXRzOwot
ICBuZXdfc3RhdHMuYXBtX3N0YXRpc3RpY3MuZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbiA9Ci0g
ICAgICBzdGF0cy5hZWNfZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbjsKLSAgbmV3X3N0YXRzLmFw
bV9zdGF0aXN0aWNzLmRlbGF5X21lZGlhbl9tcyA9IHN0YXRzLmVjaG9fZGVsYXlfbWVkaWFuX21z
OwotICBuZXdfc3RhdHMuYXBtX3N0YXRpc3RpY3MuZGVsYXlfc3RhbmRhcmRfZGV2aWF0aW9uX21z
ID0KLSAgICAgIHN0YXRzLmVjaG9fZGVsYXlfc3RkX21zOwotICBuZXdfc3RhdHMuYXBtX3N0YXRp
c3RpY3MuZWNob19yZXR1cm5fbG9zcyA9IHN0YXRzLmVjaG9fcmV0dXJuX2xvc3M7Ci0gIG5ld19z
dGF0cy5hcG1fc3RhdGlzdGljcy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0KLSAgICAg
IHN0YXRzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQ7Ci0gIG5ld19zdGF0cy5hcG1fc3Rh
dGlzdGljcy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2QgPQotICAgICAgc3RhdHMucmVzaWR1YWxf
ZWNob19saWtlbGlob29kOwotICBuZXdfc3RhdHMuYXBtX3N0YXRpc3RpY3MucmVzaWR1YWxfZWNo
b19saWtlbGlob29kX3JlY2VudF9tYXggPQotICAgICAgc3RhdHMucmVzaWR1YWxfZWNob19saWtl
bGlob29kX3JlY2VudF9tYXg7Ci0gIHJldHVybiBuZXdfc3RhdHM7Ci19Ci0KIFZpZGVvVHJhY2tJ
bnRlcmZhY2U6OkNvbnRlbnRIaW50IFZpZGVvVHJhY2tJbnRlcmZhY2U6OmNvbnRlbnRfaGludCgp
IGNvbnN0IHsKICAgcmV0dXJuIENvbnRlbnRIaW50OjprTm9uZTsKIH0KQEAgLTU4LDQgKzMwLDgg
QEAgQXVkaW9UcmFja0ludGVyZmFjZTo6R2V0QXVkaW9Qcm9jZXNzb3IoKSB7CiAgIHJldHVybiBu
dWxscHRyOwogfQogCitjb25zdCBjcmlja2V0OjpBdWRpb09wdGlvbnMgQXVkaW9Tb3VyY2VJbnRl
cmZhY2U6Om9wdGlvbnMoKSBjb25zdCB7CisgIHJldHVybiB7fTsKK30KKwogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaAppbmRleCBi
NjYxMzUxZTlmYzk4NWVkNmQxNTYyMWFmZTI3NGRlOGNlMWM0N2U3Li42ZDk2NzY2MGM1NzNhZGI4
YzU5OGEzNTM0ZjY3ZjVmYzhmMjc0YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1p
bnRlcmZhY2UuaApAQCAtMjMsMTggKzIzLDEzIEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5j
bHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19vcHRpb25z
LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCi0vLyBUT0RPKHpoaWh1YW5n
KTogUmVtb3ZlIHVucmVsYXRlZCBoZWFkZXJzIG9uY2UgZG93bnN0cmVhbSBhcHBsaWNhdGlvbnMg
c3RvcAotLy8gcmVseWluZyBvbiB0aGVtOyB0aGV5IHdlcmUgcHJldmlvdXNseSB0cmFuc2l0aXZl
bHkgaW5jbHVkZWQgYnkKLS8vIG1lZGlhY2hhbm5lbC5oLCB3aGljaCBpcyBubyBsb25nZXIgYSBk
ZXBlbmRlbmN5IG9mIHRoaXMgZmlsZS4KICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc2lua19p
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc291cmNlX2ludGVyZmFjZS5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nl
c3Npbmdfc3RhdGlzdGljcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3JhdGV0cmFja2VyLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRf
cmVmX3B0ci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3RpbWV1dGlscy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMjEzLDUzICsyMDgs
MjggQEAgY2xhc3MgQXVkaW9Tb3VyY2VJbnRlcmZhY2UgOiBwdWJsaWMgTWVkaWFTb3VyY2VJbnRl
cmZhY2UgewogICAvLyBUT0RPKHRvbW1pKTogTWFrZSBwdXJlIHZpcnR1YWwuCiAgIHZpcnR1YWwg
dm9pZCBBZGRTaW5rKEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7fQogICB2aXJ0dWFs
IHZvaWQgUmVtb3ZlU2luayhBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykge30KKworICAv
LyBSZXR1cm5zIG9wdGlvbnMgZm9yIHRoZSBBdWRpb1NvdXJjZS4KKyAgLy8gKGZvciBzb21lIG9m
IHRoZSBzZXR0aW5ncyB0aGlzIGFwcHJvYWNoIGlzIGJyb2tlbiwgZS5nLiBzZXR0aW5nCisgIC8v
IGF1ZGlvIG5ldHdvcmsgYWRhcHRhdGlvbiBvbiB0aGUgc291cmNlIGlzIHRoZSB3cm9uZyBsYXll
ciBvZiBhYnN0cmFjdGlvbikuCisgIHZpcnR1YWwgY29uc3QgY3JpY2tldDo6QXVkaW9PcHRpb25z
IG9wdGlvbnMoKSBjb25zdDsKIH07CiAKIC8vIEludGVyZmFjZSBvZiB0aGUgYXVkaW8gcHJvY2Vz
c29yIHVzZWQgYnkgdGhlIGF1ZGlvIHRyYWNrIHRvIGNvbGxlY3QKIC8vIHN0YXRpc3RpY3MuCiBj
bGFzcyBBdWRpb1Byb2Nlc3NvckludGVyZmFjZSA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJm
YWNlIHsKICBwdWJsaWM6Ci0gIC8vIERlcHJlY2F0ZWQsIHVzZSBBdWRpb1Byb2Nlc3NvclN0YXRp
c3RpY3MgaW5zdGVhZC4KLSAgLy8gVE9ETyhpdm9jKTogUmVtb3ZlIHRoaXMgd2hlbiBhbGwgaW1w
bGVtZW50YXRpb25zIGhhdmUgc3dpdGNoZWQgdG8gdGhlIG5ldwotICAvLyAgICAgICAgICAgICBH
ZXRTdGF0cyBmdW5jdGlvbi4gU2VlIGIvNjc5MjYxMzUuCi0gIHN0cnVjdCBBdWRpb1Byb2Nlc3Nv
clN0YXRzIHsKLSAgICBBdWRpb1Byb2Nlc3NvclN0YXRzKCkKLSAgICAgICAgOiB0eXBpbmdfbm9p
c2VfZGV0ZWN0ZWQoZmFsc2UpLAotICAgICAgICAgIGVjaG9fcmV0dXJuX2xvc3MoMCksCi0gICAg
ICAgICAgZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudCgwKSwKLSAgICAgICAgICBlY2hvX2Rl
bGF5X21lZGlhbl9tcygwKSwKLSAgICAgICAgICBlY2hvX2RlbGF5X3N0ZF9tcygwKSwKLSAgICAg
ICAgICByZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2QoMC4wZiksCi0gICAgICAgICAgcmVzaWR1YWxf
ZWNob19saWtlbGlob29kX3JlY2VudF9tYXgoMC4wZiksCi0gICAgICAgICAgYWVjX2RpdmVyZ2Vu
dF9maWx0ZXJfZnJhY3Rpb24oMC4wKSB7fQotICAgIH5BdWRpb1Byb2Nlc3NvclN0YXRzKCkge30K
LQotICAgIGJvb2wgdHlwaW5nX25vaXNlX2RldGVjdGVkOwotICAgIGludCBlY2hvX3JldHVybl9s
b3NzOwotICAgIGludCBlY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50OwotICAgIGludCBlY2hv
X2RlbGF5X21lZGlhbl9tczsKLSAgICBpbnQgZWNob19kZWxheV9zdGRfbXM7Ci0gICAgZmxvYXQg
cmVzaWR1YWxfZWNob19saWtlbGlob29kOwotICAgIGZsb2F0IHJlc2lkdWFsX2VjaG9fbGlrZWxp
aG9vZF9yZWNlbnRfbWF4OwotICAgIGZsb2F0IGFlY19kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9u
OwotICB9OwotICAvLyBUaGlzIHN0cnVjdCBtYWludGFpbnMgdGhlIG9wdGlvbmFsaXR5IG9mIHRo
ZSBzdGF0cywgYW5kIHdpbGwgcmVwbGFjZSB0aGUKLSAgLy8gcmVndWxhciBzdGF0cyBzdHJ1Y3Qg
d2hlbiBhbGwgdXNlcnMgaGF2ZSBiZWVuIHVwZGF0ZWQuCiAgIHN0cnVjdCBBdWRpb1Byb2Nlc3Nv
clN0YXRpc3RpY3MgewogICAgIGJvb2wgdHlwaW5nX25vaXNlX2RldGVjdGVkID0gZmFsc2U7CiAg
ICAgQXVkaW9Qcm9jZXNzaW5nU3RhdHMgYXBtX3N0YXRpc3RpY3M7CiAgIH07CiAKLSAgLy8gR2V0
IGF1ZGlvIHByb2Nlc3NvciBzdGF0aXN0aWNzLgotICB2aXJ0dWFsIHZvaWQgR2V0U3RhdHMoQXVk
aW9Qcm9jZXNzb3JTdGF0cyogc3RhdHMpOwotCiAgIC8vIEdldCBhdWRpbyBwcm9jZXNzb3Igc3Rh
dGlzdGljcy4gVGhlIHxoYXNfcmVtb3RlX3RyYWNrc3wgYXJndW1lbnQgc2hvdWxkIGJlCiAgIC8v
IHNldCBpZiB0aGVyZSBhcmUgYWN0aXZlIHJlbW90ZSB0cmFja3MgKHRoaXMgd291bGQgdXN1YWxs
eSBiZSB0cnVlIGR1cmluZwogICAvLyBhIGNhbGwpLiBJZiB0aGVyZSBhcmUgbm8gcmVtb3RlIHRy
YWNrcyBzb21lIG9mIHRoZSBzdGF0cyB3aWxsIG5vdCBiZSBzZXQgYnkKICAgLy8gdGhlIEF1ZGlv
UHJvY2Vzc29yLCBiZWNhdXNlIHRoZXkgb25seSBtYWtlIHNlbnNlIGlmIHRoZXJlIGlzIGF0IGxl
YXN0IG9uZQogICAvLyByZW1vdGUgdHJhY2suCi0gIC8vIFRPRE8oaXZvYyk6IE1ha2UgcHVyZSB2
aXJ0dWFsIHdoZW4gYWxsIGltcGxlbWVudGlvbnMgYXJlIHVwZGF0ZWQuCi0gIHZpcnR1YWwgQXVk
aW9Qcm9jZXNzb3JTdGF0aXN0aWNzIEdldFN0YXRzKGJvb2wgaGFzX3JlbW90ZV90cmFja3MpOwor
ICB2aXJ0dWFsIEF1ZGlvUHJvY2Vzc29yU3RhdGlzdGljcyBHZXRTdGF0cyhib29sIGhhc19yZW1v
dGVfdHJhY2tzKSA9IDA7CiAKICBwcm90ZWN0ZWQ6CiAgIH5BdWRpb1Byb2Nlc3NvckludGVyZmFj
ZSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL21lZGlhZGVzY3JpcHRpb24uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9tZWRpYWRlc2Ny
aXB0aW9uLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTE1NWYyMmZlOWEzNTg4
NWNkZDUzNzBhZjI4Mjc1Mzg2MWYzMzdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9vcnRjL21lZGlhZGVzY3JpcHRpb24uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCww
IEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAiYXBpL29ydGMvbWVkaWFkZXNjcmlw
dGlvbi5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9tZWRp
YWRlc2NyaXB0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZjFkMWE2N2Jl
MDE4NzcwMmM1ODE5ZDZiZmY2MjE5ZWZhZTAyN2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL29ydGMvbWVkaWFkZXNjcmlwdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBBUElfT1JUQ19NRURJQURFU0NS
SVBUSU9OX0hfCi0jZGVmaW5lIEFQSV9PUlRDX01FRElBREVTQ1JJUFRJT05fSF8KLQotI2luY2x1
ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2lu
Y2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLSNpbmNsdWRlICJhcGkvY3J5cHRvcGFyYW1z
LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBBIHN0cnVjdHVyZWQgcmVwcmVzZW50YXRp
b24gb2YgYSBtZWRpYSBkZXNjcmlwdGlvbiB3aXRoaW4gYW4gU0RQIHNlc3Npb24KLS8vIGRlc2Ny
aXB0aW9uLgotY2xhc3MgTWVkaWFEZXNjcmlwdGlvbiB7Ci0gcHVibGljOgotICBleHBsaWNpdCBN
ZWRpYURlc2NyaXB0aW9uKHN0ZDo6c3RyaW5nIG1pZCkgOiBtaWRfKHN0ZDo6bW92ZShtaWQpKSB7
fQotCi0gIH5NZWRpYURlc2NyaXB0aW9uKCkge30KLQotICAvLyBUaGUgbWlkKG1lZGlhIHN0cmVh
bSBpZGVudGlmaWNhdGlvbikgaXMgdXNlZCBmb3IgaWRlbnRpZnlpbmcgbWVkaWEgc3RyZWFtcwot
ICAvLyB3aXRoaW4gYSBzZXNzaW9uIGRlc2NyaXB0aW9uLgotICAvLyBodHRwczovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjNTg4OCNzZWN0aW9uLTYKLSAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJp
bmc+IG1pZCgpIGNvbnN0IHsgcmV0dXJuIG1pZF87IH0KLSAgdm9pZCBzZXRfbWlkKHN0ZDo6c3Ry
aW5nIG1pZCkgeyBtaWRfLmVtcGxhY2Uoc3RkOjptb3ZlKG1pZCkpOyB9Ci0KLSAgLy8gU2VjdXJp
dHkga2V5cyBhbmQgcGFyYW1ldGVycyBmb3IgdGhpcyBtZWRpYSBzdHJlYW0uIENhbiBiZSB1c2Vk
IHRvCi0gIC8vIG5lZ290aWF0ZSBwYXJhbWV0ZXJzIGZvciBTUlRQLgotICAvLyBodHRwczovL3Rv
b2xzLmlldGYub3JnL2h0bWwvcmZjNDU2OCNwYWdlLTUKLSAgc3RkOjp2ZWN0b3I8Y3JpY2tldDo6
Q3J5cHRvUGFyYW1zPiYgc2Rlc19wYXJhbXMoKSB7IHJldHVybiBzZGVzX3BhcmFtc187IH0KLSAg
Y29uc3Qgc3RkOjp2ZWN0b3I8Y3JpY2tldDo6Q3J5cHRvUGFyYW1zPiYgc2Rlc19wYXJhbXMoKSBj
b25zdCB7Ci0gICAgcmV0dXJuIHNkZXNfcGFyYW1zXzsKLSAgfQotCi0gcHJpdmF0ZToKLSAgYWJz
bDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IG1pZF87Ci0KLSAgc3RkOjp2ZWN0b3I8Y3JpY2tldDo6
Q3J5cHRvUGFyYW1zPiBzZGVzX3BhcmFtc187Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRj
Ci0KLSNlbmRpZiAgLy8gQVBJX09SVENfTUVESUFERVNDUklQVElPTl9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvbWVkaWFk
ZXNjcmlwdGlvbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9vcnRjL21lZGlhZGVzY3JpcHRpb25fdW5pdHRlc3QuY2MKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZjk0M2FmNmY0MDVmYThjYmZjYTIyOWU3YjAyMzM2YjQw
YjMzYzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvbWVkaWFkZXNj
cmlwdGlvbl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQot
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJhcGkvb3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmgiCi0j
aW5jbHVkZSAidGVzdC9ndGVzdC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotY2xhc3MgTWVk
aWFEZXNjcmlwdGlvblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7fTsKLQotVEVTVF9GKE1l
ZGlhRGVzY3JpcHRpb25UZXN0LCBDcmVhdGVNZWRpYURlc2NyaXB0aW9uKSB7Ci0gIE1lZGlhRGVz
Y3JpcHRpb24gbSgiYSIpOwotICBFWFBFQ1RfRVEoImEiLCBtLm1pZCgpKTsKLX0KLQotVEVTVF9G
KE1lZGlhRGVzY3JpcHRpb25UZXN0LCBBZGRTZGVzUGFyYW0pIHsKLSAgTWVkaWFEZXNjcmlwdGlv
biBtKCJhIik7Ci0gIG0uc2Rlc19wYXJhbXMoKS5wdXNoX2JhY2soY3JpY2tldDo6Q3J5cHRvUGFy
YW1zKCkpOwotICBjb25zdCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpDcnlwdG9QYXJhbXM+JiBwYXJh
bXMgPSBtLnNkZXNfcGFyYW1zKCk7Ci0gIEVYUEVDVF9FUSgxdSwgcGFyYW1zLnNpemUoKSk7Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL29ydGNmYWN0b3J5aW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9vcnRj
ZmFjdG9yeWludGVyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTM3MzUy
ODMxOGNkN2IyNDY4Mzg5ODc1NzMxNGI0OTZkN2MzMzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9vcnRjL29ydGNmYWN0b3J5aW50ZXJmYWNlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwyMzIgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQot
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBBUElfT1JUQ19P
UlRDRkFDVE9SWUlOVEVSRkFDRV9IXwotI2RlZmluZSBBUElfT1JUQ19PUlRDRkFDVE9SWUlOVEVS
RkFDRV9IXwotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRl
IDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6bW92ZS4KLQotI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVh
bWludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgiCi0jaW5jbHVkZSAiYXBp
L29ydGMvb3J0Y3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvb3J0
Y3J0cHNlbmRlcmludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9vcnRjL3BhY2tldHRyYW5zcG9y
dGludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJp
bnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvb3J0Yy9ydHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIK
LSNpbmNsdWRlICJhcGkvb3J0Yy9zcnRwdHJhbnNwb3J0aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAi
YXBpL29ydGMvdWRwdHJhbnNwb3J0aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL3BlZXJjb25u
ZWN0aW9uaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCi0jaW5jbHVkZSAi
YXBpL3J0cHBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFRPRE8oZGVhZGJlZWYpOiBUaGlzIHNo
b3VsZCBiZSBwYXJ0IG9mIC9hcGkvLCBidXQgY3VycmVudGx5IGl0J3Mgbm90IGFuZAotLy8gaW5j
bHVkaW5nIGl0cyBoZWFkZXIgdmlvbGF0ZXMgY2hlY2tkZXBzIHJ1bGVzLgotY2xhc3MgQXVkaW9E
ZXZpY2VNb2R1bGU7Ci0KLS8vIFdBUk5JTkc6IFRoaXMgaXMgZXhwZXJpbWVudGFsL3VuZGVyIGRl
dmVsb3BtZW50LCBzbyB1c2UgYXQgeW91ciBvd24gcmlzazsgbm8KLS8vIGd1YXJhbnRlZSBhYm91
dCBBUEkgc3RhYmlsaXR5IGlzIGd1YXJhbnRlZWQgaGVyZSB5ZXQuCi0vLwotLy8gVGhpcyBjbGFz
cyBpcyB0aGUgT1JUQyBhbmFsb2cgb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5LiBJdCBhY3RzIGFz
IGEgZmFjdG9yeQotLy8gZm9yIE9SVEMgb2JqZWN0cyB0aGF0IGNhbiBiZSBjb25uZWN0ZWQgdG8g
ZWFjaCBvdGhlci4KLS8vCi0vLyBTb21lIG9mIHRoZXNlIG9iamVjdHMgbWF5IG5vdCBiZSByZXBy
ZXNlbnRlZCBieSB0aGUgT1JUQyBzcGVjaWZpY2F0aW9uLCBidXQKLS8vIGZvbGxvdyB0aGUgc2Ft
ZSBnZW5lcmFsIHByaW5jaXBsZXMuCi0vLwotLy8gSWYgb25lIG9mIHRoZSBmYWN0b3J5IG1ldGhv
ZHMgdGFrZXMgYW5vdGhlciBvYmplY3QgYXMgYW4gYXJndW1lbnQsIGl0IE1VU1QKLS8vIGhhdmUg
YmVlbiBjcmVhdGVkIGJ5IHRoZSBzYW1lIE9ydGNGYWN0b3J5LgotLy8KLS8vIE9uIG9iamVjdCBs
aWZldGltZXM6IG9iamVjdHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBpbiB0aGlzIG9yZGVyOgotLy8g
MS4gT2JqZWN0cyBjcmVhdGVkIGJ5IHRoZSBmYWN0b3J5LgotLy8gMi4gVGhlIGZhY3RvcnkgaXRz
ZWxmLgotLy8gMy4gT2JqZWN0cyBwYXNzZWQgaW50byBPcnRjRmFjdG9yeUludGVyZmFjZTo6Q3Jl
YXRlLgotY2xhc3MgT3J0Y0ZhY3RvcnlJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgLy8gfG5ldHdv
cmtfdGhyZWFkfCBpcyB0aGUgdGhyZWFkIG9uIHdoaWNoIHBhY2tldHMgYXJlIHNlbnQgYW5kIHJl
Y2VpdmVkLgotICAvLyBJZiBudWxsLCBhIG5ldyBydGM6OlRocmVhZCB3aXRoIGEgZGVmYXVsdCBz
b2NrZXQgc2VydmVyIGlzIGNyZWF0ZWQuCi0gIC8vCi0gIC8vIHxzaWduYWxpbmdfdGhyZWFkfCBp
cyB1c2VkIGZvciBjYWxsYmFja3MgdG8gdGhlIGNvbnN1bWVyIG9mIHRoZSBBUEkuIElmCi0gIC8v
IG51bGwsIHRoZSBjdXJyZW50IHRocmVhZCB3aWxsIGJlIHVzZWQsIHdoaWNoIGFzc3VtZXMgdGhh
dCB0aGUgQVBJIGNvbnN1bWVyCi0gIC8vIGlzIHJ1bm5pbmcgYSBtZXNzYWdlIGxvb3Agb24gdGhp
cyB0aHJlYWQgKGVpdGhlciB1c2luZyBhbiBleGlzdGluZwotICAvLyBydGM6OlRocmVhZCwgb3Ig
YnkgY2FsbGluZyBydGM6OlRocmVhZDo6Q3VycmVudCgpLT5Qcm9jZXNzTWVzc2FnZXMpLgotICAv
LwotICAvLyB8bmV0d29ya19tYW5hZ2VyfCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGljaCBuZXR3
b3JrIGludGVyZmFjZXMgYXJlCi0gIC8vIGF2YWlsYWJsZS4gVGhpcyBpcyB1c2VkIGZvciBJQ0Us
IGZvciBleGFtcGxlLiBJZiBudWxsLCBhIGRlZmF1bHQKLSAgLy8gaW1wbGVtZW50YXRpb24gd2ls
bCBiZSB1c2VkLiBPbmx5IGFjY2Vzc2VkIG9uIHxuZXR3b3JrX3RocmVhZHwuCi0gIC8vCi0gIC8v
IHxzb2NrZXRfZmFjdG9yeXwgaXMgdXNlZCAob24gdGhlIG5ldHdvcmsgdGhyZWFkKSBmb3IgY3Jl
YXRpbmcgc29ja2V0cy4gSWYKLSAgLy8gaXQncyBudWxsLCBhIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24gd2lsbCBiZSB1c2VkLCB3aGljaCBhc3N1bWVzCi0gIC8vIHxuZXR3b3JrX3RocmVhZHwgaXMg
YSBub3JtYWwgcnRjOjpUaHJlYWQuCi0gIC8vCi0gIC8vIHxhZG18IGlzIG9wdGlvbmFsLCBhbmQg
YWxsb3dzIGEgZGlmZmVyZW50IGF1ZGlvIGRldmljZSBpbXBsZW1lbnRhdGlvbiB0bwotICAvLyBi
ZSBpbmplY3RlZDsgb3RoZXJ3aXNlIGEgcGxhdGZvcm0tc3BlY2lmaWMgbW9kdWxlIHdpbGwgYmUg
dXNlZCB0aGF0IHdpbGwKLSAgLy8gdXNlIHRoZSBkZWZhdWx0IGF1ZGlvIGlucHV0LgotICAvLwot
ICAvLyB8YXVkaW9fZW5jb2Rlcl9mYWN0b3J5fCBhbmQgfGF1ZGlvX2RlY29kZXJfZmFjdG9yeXwg
YXJlIHVzZWQgdG8KLSAgLy8gaW5zdGFudGlhdGUgYXVkaW8gY29kZWNzOyB0aGV5IGRldGVybWlu
ZSB3aGF0IGNvZGVjcyBhcmUgc3VwcG9ydGVkLgotICAvLwotICAvLyBOb3RlIHRoYXQgdGhlIE9y
dGNGYWN0b3J5SW50ZXJmYWNlIGRvZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mIGFueSBvZiB0aGUK
LSAgLy8gb2JqZWN0cyBwYXNzZWQgaW4gYnkgcmF3IHBvaW50ZXIsIGFuZCBhcyBwcmV2aW91c2x5
IHN0YXRlZCwgdGhlc2Ugb2JqZWN0cwotICAvLyBjYW4ndCBiZSBkZXN0cm95ZWQgYmVmb3JlIHRo
ZSBmYWN0b3J5IGlzLgotICBzdGF0aWMgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0Zh
Y3RvcnlJbnRlcmZhY2U+PiBDcmVhdGUoCi0gICAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJl
YWQsCi0gICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICAgIHJ0Yzo6TmV0
d29ya01hbmFnZXIqIG5ldHdvcmtfbWFuYWdlciwKLSAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFj
dG9yeSogc29ja2V0X2ZhY3RvcnksCi0gICAgICBBdWRpb0RldmljZU1vZHVsZSogYWRtLAotICAg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJf
ZmFjdG9yeSwKLSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBh
dWRpb19kZWNvZGVyX2ZhY3RvcnkpOwotCi0gIC8vIENvbnN0cnVjdG9yIGZvciBjb252ZW5pZW5j
ZSB3aGljaCB1c2VzIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIHdoZXJlCi0gIC8vIHBvc3NpYmxl
ICh0aG91Z2ggZG9lcyBzdGlsbCByZXF1aXJlIHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkIHJ1bnMg
YSBtZXNzYWdlCi0gIC8vIGxvb3A7IHNlZSBhYm92ZSkuCi0gIHN0YXRpYyBSVENFcnJvck9yPHN0
ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4+IENyZWF0ZSgKLSAgICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3Rvcnks
Ci0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5KSB7Ci0gICAgcmV0dXJuIENyZWF0ZShudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnkpOwotICB9Ci0KLSAgdmlydHVhbCB+T3J0Y0Zh
Y3RvcnlJbnRlcmZhY2UoKSB7fQotCi0gIC8vIENyZWF0ZXMgYW4gUlRQIHRyYW5zcG9ydCBjb250
cm9sbGVyLCB3aGljaCBpcyB1c2VkIGluIGNhbGxzIHRvCi0gIC8vIENyZWF0ZVJ0cFRyYW5zcG9y
dCBtZXRob2RzLiBJZiB5b3VyIGFwcGxpY2F0aW9uIGhhcyBzb21lIG5vdGlvbiBvZiBhCi0gIC8v
ICJjYWxsIiwgeW91IHNob3VsZCBjcmVhdGUgb25lIHRyYW5zcG9ydCBjb250cm9sbGVyIHBlciBj
YWxsLgotICAvLwotICAvLyBIb3dldmVyLCBpZiB5b3Ugb25seSBhcmUgdXNpbmcgb25lIFJ0cFRy
YW5zcG9ydCBvYmplY3QsIHRoaXMgZG9lc24ndCBuZWVkCi0gIC8vIHRvIGJlIGNhbGxlZCBleHBs
aWNpdGx5OyBDcmVhdGVSdHBUcmFuc3BvcnQgd2lsbCBjcmVhdGUgb25lIGF1dG9tYXRpY2FsbHkK
LSAgLy8gaWYgfHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcnwgaXMgbnVsbC4gU2VlIGJlbG93Lgot
ICAvLwotICAvLyBUT0RPKGRlYWRiZWVmKTogQWRkIE1lZGlhQ29uZmlnIGFuZCBSdGNFdmVudExv
ZyBhcmd1bWVudHM/Ci0gIHZpcnR1YWwgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJh
bnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4+Ci0gIENyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXIoKSA9IDA7Ci0KLSAgLy8gQ3JlYXRlcyBhbiBSVFAgdHJhbnNwb3J0IHVzaW5nIHRoZSBwcm92
aWRlZCBwYWNrZXQgdHJhbnNwb3J0cyBhbmQKLSAgLy8gdHJhbnNwb3J0IGNvbnRyb2xsZXIuCi0g
IC8vCi0gIC8vIHxydHB8IHdpbGwgYmUgdXNlZCBmb3Igc2VuZGluZyBSVFAgcGFja2V0cywgYW5k
IHxydGNwfCBmb3IgUlRDUCBwYWNrZXRzLgotICAvLwotICAvLyB8cnRwfCBjYW4ndCBiZSBudWxs
LiB8cnRjcHwgbXVzdCBiZSBub24tbnVsbCBpZiBhbmQgb25seSBpZgotICAvLyB8cnRwX3BhcmFt
ZXRlcnMucnRjcC5tdXh8IGlzIGZhbHNlLCBpbmRpY2F0aW5nIHRoYXQgUlRDUCBtdXhpbmcgaXNu
J3QgdXNlZC4KLSAgLy8gTm90ZSB0aGF0IGlmIFJUQ1AgbXV4aW5nIGlzbid0IGVuYWJsZWQgaW5p
dGlhbGx5LCBpdCBjYW4gc3RpbGwgZW5hYmxlZAotICAvLyBsYXRlciB0aHJvdWdoIFNldFBhcmFt
ZXRlcnMuCi0gIC8vCi0gIC8vIElmIHx0cmFuc3BvcnRfY29udHJvbGxlcnwgaXMgbnVsbCwgb25l
IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkLCBhbmQKLSAgLy8gaXRzIGxpZmV0aW1lIG1h
bmFnZWQgYnkgdGhlIHJldHVybmVkIFJ0cFRyYW5zcG9ydC4gVGhpcyBzaG91bGQgb25seSBiZQot
ICAvLyBkb25lIGlmIGEgc2luZ2xlIFJ0cFRyYW5zcG9ydCBpcyBiZWluZyB1c2VkIHRvIGNvbW11
bmljYXRlIHdpdGggdGhlIHJlbW90ZQotICAvLyBlbmRwb2ludC4KLSAgdmlydHVhbCBSVENFcnJv
ck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+PiBDcmVhdGVSdHBUcmFu
c3BvcnQoCi0gICAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBydHBfcGFyYW1ldGVy
cywKLSAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAotICAgICAgUGFja2V0VHJh
bnNwb3J0SW50ZXJmYWNlKiBydGNwLAotICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVy
ZmFjZSogdHJhbnNwb3J0X2NvbnRyb2xsZXIpID0gMDsKLQotICAvLyBDcmVhdGVzIGFuIFNydHBU
cmFuc3BvcnQgd2hpY2ggaXMgYW4gUlRQIHRyYW5zcG9ydCB0aGF0IHVzZXMgU1JUUC4KLSAgdmly
dHVhbCBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4K
LSAgQ3JlYXRlU3J0cFRyYW5zcG9ydCgKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRl
cnMmIHJ0cF9wYXJhbWV0ZXJzLAotICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAs
Ci0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0Y3AsCi0gICAgICBSdHBUcmFuc3Bv
cnRDb250cm9sbGVySW50ZXJmYWNlKiB0cmFuc3BvcnRfY29udHJvbGxlcikgPSAwOwotCi0gIC8v
IFJldHVybnMgdGhlIGNhcGFiaWxpdGllcyBvZiBhbiBSVFAgc2VuZGVyIG9mIHR5cGUgfGtpbmR8
LiBUaGVzZQotICAvLyBjYXBhYmlsaXRpZXMgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQg
UnRwUGFyYW1ldGVycyB0byB1c2UgdG8gY3JlYXRlCi0gIC8vIGFuIFJ0cFNlbmRlci4KLSAgLy8K
LSAgLy8gSWYgZm9yIHNvbWUgcmVhc29uIHlvdSBwYXNzIGluIE1FRElBX1RZUEVfREFUQSwgcmV0
dXJucyBhbiBlbXB0eSBzdHJ1Y3R1cmUuCi0gIHZpcnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldFJ0
cFNlbmRlckNhcGFiaWxpdGllcygKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kKSBjb25z
dCA9IDA7Ci0KLSAgLy8gQ3JlYXRlcyBhbiBSVFAgc2VuZGVyIHdpdGggfHRyYWNrfC4gV2lsbCBu
b3Qgc3RhcnQgc2VuZGluZyB1bnRpbCBTZW5kIGlzCi0gIC8vIGNhbGxlZC4gVGhpcyBpcyBwcm92
aWRlZCBhcyBhIGNvbnZlbmllbmNlOyBpdCdzIGVxdWl2YWxlbnQgdG8gY2FsbGluZwotICAvLyBD
cmVhdGVSdHBTZW5kZXIgd2l0aCBhIGtpbmQgKHNlZSBiZWxvdyksIGZvbGxvd2VkIGJ5IFNldFRy
YWNrLgotICAvLwotICAvLyB8dHJhY2t8IGFuZCB8dHJhbnNwb3J0fCBtdXN0IG5vdCBiZSBudWxs
LgotICB2aXJ0dWFsIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRl
cmZhY2U+PiBDcmVhdGVSdHBTZW5kZXIoCi0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFT
dHJlYW1UcmFja0ludGVyZmFjZT4gdHJhY2ssCi0gICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2Uq
IHRyYW5zcG9ydCkgPSAwOwotCi0gIC8vIE92ZXJsb2FkIG9mIENyZWF0ZVJ0cFNlbmRlciBhbGxv
d3MgY3JlYXRpbmcgdGhlIHNlbmRlciB3aXRob3V0IGEgdHJhY2suCi0gIC8vCi0gIC8vIHxraW5k
fCBtdXN0IGJlIE1FRElBX1RZUEVfQVVESU8gb3IgTUVESUFfVFlQRV9WSURFTy4KLSAgdmlydHVh
bCBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwU2VuZGVySW50ZXJmYWNlPj4gQ3Jl
YXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQsCi0gICAgICBSdHBU
cmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgPSAwOwotCi0gIC8vIFJldHVybnMgdGhlIGNh
cGFiaWxpdGllcyBvZiBhbiBSVFAgcmVjZWl2ZXIgb2YgdHlwZSB8a2luZHwuIFRoZXNlCi0gIC8v
IGNhcGFiaWxpdGllcyBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBSdHBQYXJhbWV0ZXJz
IHRvIHVzZSB0byBjcmVhdGUKLSAgLy8gYW4gUnRwUmVjZWl2ZXIuCi0gIC8vCi0gIC8vIElmIGZv
ciBzb21lIHJlYXNvbiB5b3UgcGFzcyBpbiBNRURJQV9UWVBFX0RBVEEsIHJldHVybnMgYW4gZW1w
dHkgc3RydWN0dXJlLgotICB2aXJ0dWFsIFJ0cENhcGFiaWxpdGllcyBHZXRSdHBSZWNlaXZlckNh
cGFiaWxpdGllcygKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kKSBjb25zdCA9IDA7Ci0K
LSAgLy8gQ3JlYXRlcyBhbiBSVFAgcmVjZWl2ZXIgb2YgdHlwZSB8a2luZHwuIFdpbGwgbm90IHN0
YXJ0IHJlY2VpdmluZyBtZWRpYQotICAvLyB1bnRpbCBSZWNlaXZlIGlzIGNhbGxlZC4KLSAgLy8K
LSAgLy8gfGtpbmR8IG11c3QgYmUgTUVESUFfVFlQRV9BVURJTyBvciBNRURJQV9UWVBFX1ZJREVP
LgotICAvLwotICAvLyB8dHJhbnNwb3J0fCBtdXN0IG5vdCBiZSBudWxsLgotICB2aXJ0dWFsIFJU
Q0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckludGVyZmFjZT4+Ci0gIENy
ZWF0ZVJ0cFJlY2VpdmVyKGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAgICAgICAgICAgICAg
ICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgPSAwOwotCi0gIC8vIENyZWF0
ZSBhIFVEUCB0cmFuc3BvcnQgd2l0aCBJUCBhZGRyZXNzIGZhbWlseSB8ZmFtaWx5fCwgdXNpbmcg
YSBwb3J0Ci0gIC8vIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJhbmdlLgotICAvLwotICAvLyB8ZmFt
aWx5fCBtdXN0IGJlIEFGX0lORVQgb3IgQUZfSU5FVDYuCi0gIC8vCi0gIC8vIHxtaW5fcG9ydHwv
fG1heF9wb3J0fCB2YWx1ZXMgb2YgMCBpbmRpY2F0ZSBubyByYW5nZSByZXN0cmljdGlvbi4KLSAg
Ly8KLSAgLy8gUmV0dXJucyBhbiBlcnJvciBpZiB0aGUgdHJhbnNwb3J0IHdhc24ndCBzdWNjZXNz
ZnVsbHkgY3JlYXRlZC4KLSAgdmlydHVhbCBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxVZHBU
cmFuc3BvcnRJbnRlcmZhY2U+PgotICBDcmVhdGVVZHBUcmFuc3BvcnQoaW50IGZhbWlseSwgdWlu
dDE2X3QgbWluX3BvcnQsIHVpbnQxNl90IG1heF9wb3J0KSA9IDA7Ci0KLSAgLy8gTWV0aG9kIGZv
ciBjb252ZW5pZW5jZSB0aGF0IGhhcyBubyBwb3J0IHJhbmdlIHJlc3RyaWN0aW9ucy4KLSAgUlRD
RXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8VWRwVHJhbnNwb3J0SW50ZXJmYWNlPj4gQ3JlYXRlVWRw
VHJhbnNwb3J0KAotICAgICAgaW50IGZhbWlseSkgewotICAgIHJldHVybiBDcmVhdGVVZHBUcmFu
c3BvcnQoZmFtaWx5LCAwLCAwKTsKLSAgfQotCi0gIC8vIE5PVEU6IFRoZSBtZXRob2RzIGJlbG93
IHRvIGNyZWF0ZSB0cmFja3Mvc291cmNlcyByZXR1cm4gc2NvcGVkX3JlZnB0cnMKLSAgLy8gcmF0
aGVyIHRoYW4gdW5pcXVlX3B0cnMsIGJlY2F1c2UgdGhlc2UgaW50ZXJmYWNlcyBhcmUgYWxzbyB1
c2VkIHdpdGgKLSAgLy8gUGVlckNvbm5lY3Rpb24sIHdoZXJlIGV2ZXJ5dGhpbmcgaXMgcmVmLWNv
dW50ZWQuCi0KLSAgLy8gQ3JlYXRlcyBhIGF1ZGlvIHNvdXJjZSByZXByZXNlbnRpbmcgdGhlIGRl
ZmF1bHQgbWljcm9waG9uZSBpbnB1dC4KLSAgLy8gfG9wdGlvbnN8IGRlY2lkZXMgYXVkaW8gcHJv
Y2Vzc2luZyBzZXR0aW5ncy4KLSAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Tb3Vy
Y2VJbnRlcmZhY2U+IENyZWF0ZUF1ZGlvU291cmNlKAotICAgICAgY29uc3QgY3JpY2tldDo6QXVk
aW9PcHRpb25zJiBvcHRpb25zKSA9IDA7Ci0KLSAgLy8gVmVyc2lvbiBvZiB0aGUgYWJvdmUgbWV0
aG9kIHRoYXQgdXNlcyBkZWZhdWx0IG9wdGlvbnMuCi0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b1NvdXJjZUludGVyZmFjZT4gQ3JlYXRlQXVkaW9Tb3VyY2UoKSB7Ci0gICAgcmV0dXJuIENyZWF0
ZUF1ZGlvU291cmNlKGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKTsKLSAgfQotCi0gIC8vIENyZWF0
ZXMgYSBuZXcgbG9jYWwgdmlkZW8gdHJhY2sgd3JhcHBpbmcgfHNvdXJjZXwuIFRoZSBzYW1lIHxz
b3VyY2V8IGNhbgotICAvLyBiZSB1c2VkIGluIHNldmVyYWwgdHJhY2tzLgotICB2aXJ0dWFsIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxWaWRlb1RyYWNrSW50ZXJmYWNlPiBDcmVhdGVWaWRlb1RyYWNrKAot
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlkLAotICAgICAgVmlkZW9UcmFja1NvdXJjZUludGVy
ZmFjZSogc291cmNlKSA9IDA7Ci0KLSAgLy8gQ3JlYXRlcyBhbiBuZXcgbG9jYWwgYXVkaW8gdHJh
Y2sgd3JhcHBpbmcgfHNvdXJjZXwuCi0gIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
VHJhY2tJbnRlcmZhY2U+IENyZWF0ZUF1ZGlvVHJhY2soCi0gICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgaWQsCi0gICAgICBBdWRpb1NvdXJjZUludGVyZmFjZSogc291cmNlKSA9IDA7Ci19OwotCi19
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVBJX09SVENfT1JUQ0ZBQ1RPUllJ
TlRFUkZBQ0VfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9vcnRjL29ydGNydHByZWNlaXZlcmludGVyZmFjZS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvb3J0Y3J0cHJlY2VpdmVy
aW50ZXJmYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZmY5Nzc2MjEzNTM3
MmE5ZjFiMjUwYzM5YjVkNDc3Y2I4ZTIwYTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL29ydGMvb3J0Y3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw4NCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0vLyBUaGlzIGZpbGUgY29udGFpbnMg
aW50ZXJmYWNlcyBmb3IgUnRwUmVjZWl2ZXJzOgotLy8gaHR0cDovL3B1YmxpY2F0aW9ucy5vcnRj
Lm9yZy8yMDE2LzIwMTYxMjAyLyNydGNydHByZWNlaXZlcioKLS8vCi0vLyBIb3dldmVyLCB1bmRl
cm5lYXRoIHRoZSBSdHBSZWNlaXZlciBpcyBhbiBSdHBUcmFuc3BvcnQsIHJhdGhlciB0aGFuIGEK
LS8vIER0bHNUcmFuc3BvcnQuIFRoaXMgaXMgdG8gYWxsb3cgZGlmZmVyZW50IHR5cGVzIG9mIFJU
UCB0cmFuc3BvcnRzIChiZXNpZGVzCi0vLyBEVExTLVNSVFApIHRvIGJlIHVzZWQuCi0KLSNpZm5k
ZWYgQVBJX09SVENfT1JUQ1JUUFJFQ0VJVkVSSU5URVJGQUNFX0hfCi0jZGVmaW5lIEFQSV9PUlRD
X09SVENSVFBSRUNFSVZFUklOVEVSRkFDRV9IXwotCi0jaW5jbHVkZSAiYXBpL21lZGlhc3RyZWFt
aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL21lZGlhdHlwZXMuaCIKLSNpbmNsdWRlICJhcGkv
b3J0Yy9ydHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvcnRjZXJyb3IuaCIK
LSNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQot
Ly8gTm90ZTogU2luY2UgcmVjZWl2ZXIgY2FwYWJpbGl0aWVzIG1heSBkZXBlbmQgb24gaG93IHRo
ZSBPcnRjRmFjdG9yeSB3YXMKLS8vIGNyZWF0ZWQsIGluc3RlYWQgb2YgYSBzdGF0aWMgIkdldENh
cGFiaWxpdGllcyIgbWV0aG9kIG9uIHRoaXMgaW50ZXJmYWNlLAotLy8gdGhlcmUgaXMgYSAiR2V0
UnRwUmVjZWl2ZXJDYXBhYmlsaXRpZXMiIG1ldGhvZCBvbiB0aGUgT3J0Y0ZhY3RvcnkuCi1jbGFz
cyBPcnRjUnRwUmVjZWl2ZXJJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+T3J0Y1J0
cFJlY2VpdmVySW50ZXJmYWNlKCkge30KLQotICAvLyBSZXR1cm5zIGEgdHJhY2sgcmVwcmVzZW50
aW5nIHRoZSBtZWRpYSByZWNlaXZlZCBieSB0aGlzIHJlY2VpdmVyLgotICAvLwotICAvLyBDdXJy
ZW50bHksIHRoaXMgd2lsbCByZXR1cm4gbnVsbCB1bnRpbCBSZWNlaXZlIGhhcyBiZWVuIHN1Y2Nl
c3NmdWxseQotICAvLyBjYWxsZWQuIEFsc28sIGEgbmV3IHRyYWNrIHdpbGwgYmUgY3JlYXRlZCBl
dmVyeSB0aW1lIHRoZSBwcmltYXJ5IFNTUkMKLSAgLy8gY2hhbmdlcy4KLSAgLy8KLSAgLy8gSWYg
ZW5jb2RpbmdzIGFyZSByZW1vdmVkLCBHZXRUcmFjayB3aWxsIHJldHVybiBudWxsLiBUaG91Z2gg
ZGVhY3RpdmF0aW5nCi0gIC8vIGFuIGVuY29kaW5nIChzZXR0aW5nIHxhY3RpdmV8IHRvIGZhbHNl
KSB3aWxsIG5vdCBkbyB0aGlzLgotICAvLwotICAvLyBJbiB0aGUgZnV0dXJlLCB0aGVzZSBsaW1p
dGF0aW9ucyB3aWxsIGJlIGZpeGVkLCBhbmQgR2V0VHJhY2sgd2lsbCByZXR1cm4KLSAgLy8gdGhl
IHNhbWUgdHJhY2sgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgUnRwUmVjZWl2ZXIuIFNvIGl0J3Mg
bm90Ci0gIC8vIHJlY29tbWVuZGVkIHRvIHdyaXRlIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoaXMg
bm9uLXN0YW5kYXJkIGJlaGF2aW9yLgotICB2aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRp
YVN0cmVhbVRyYWNrSW50ZXJmYWNlPiBHZXRUcmFjaygpIGNvbnN0ID0gMDsKLQotICAvLyBPbmNl
IHN1cHBvcnRlZCwgd2lsbCBzd2l0Y2ggdG8gcmVjZWl2aW5nIG1lZGlhIG9uIGEgbmV3IHRyYW5z
cG9ydC4KLSAgLy8gSG93ZXZlciwgdGhpcyBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBhbmQg
d2lsbCBhbHdheXMgcmV0dXJuIGFuIGVycm9yLgotICB2aXJ0dWFsIFJUQ0Vycm9yIFNldFRyYW5z
cG9ydChSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgPSAwOwotICAvLyBSZXR1cm5z
IHByZXZpb3VzbHkgc2V0IChvciBjb25zdHJ1Y3RlZC13aXRoKSB0cmFuc3BvcnQuCi0gIHZpcnR1
YWwgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBHZXRUcmFuc3BvcnQoKSBjb25zdCA9IDA7Ci0KLSAg
Ly8gU3RhcnQgcmVjZWl2aW5nIG1lZGlhIHdpdGggfHBhcmFtZXRlcnN8IChpZiB8cGFyYW1ldGVy
c3wgY29udGFpbnMgYW4KLSAgLy8gYWN0aXZlIGVuY29kaW5nKS4KLSAgLy8KLSAgLy8gVGhlcmUg
YXJlIG5vIGxpbWl0YXRpb25zIHRvIGhvdyB0aGUgcGFyYW1ldGVycyBjYW4gYmUgY2hhbmdlZCBh
ZnRlciB0aGUKLSAgLy8gaW5pdGlhbCBjYWxsIHRvIFJlY2VpdmUsIGFzIGxvbmcgYXMgdGhleSdy
ZSB2YWxpZCAoZm9yIGV4YW1wbGUsIHRoZXkgY2FuJ3QKLSAgLy8gdXNlIHRoZSBzYW1lIHBheWxv
YWQgdHlwZSBmb3IgdHdvIGNvZGVjcykuCi0gIHZpcnR1YWwgUlRDRXJyb3IgUmVjZWl2ZShjb25z
dCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSA9IDA7Ci0gIC8vIFJldHVybnMgcGFyYW1ldGVy
cyB0aGF0IHdlcmUgbGFzdCBzdWNjZXNzZnVsbHkgcGFzc2VkIGludG8gUmVjZWl2ZSwgb3IKLSAg
Ly8gZW1wdHkgcGFyYW1ldGVycyBpZiB0aGF0IGhhc24ndCB5ZXQgb2NjdXJyZWQuCi0gIC8vCi0g
IC8vIE5vdGUgdGhhdCBmb3IgcGFyYW1ldGVycyB0aGF0IGFyZSBkZXNjcmliZWQgYXMgaGF2aW5n
IGFuICJpbXBsZW1lbnRhdGlvbgotICAvLyBkZWZhdWx0IiB2YWx1ZSBjaG9zZW4sIEdldFBhcmFt
ZXRlcnMoKSB3aWxsIHJldHVybiB0aG9zZSBjaG9zZW4gZGVmYXVsdHMsCi0gIC8vIHdpdGggdGhl
IGV4Y2VwdGlvbiBvZiBTU1JDcyB3aGljaCBoYXZlIHNwZWNpYWwgYmVoYXZpb3IuIFNlZQotICAv
LyBydHBwYXJhbWV0ZXJzLmggZm9yIG1vcmUgZGV0YWlscy4KLSAgdmlydHVhbCBSdHBQYXJhbWV0
ZXJzIEdldFBhcmFtZXRlcnMoKSBjb25zdCA9IDA7Ci0KLSAgLy8gQXVkaW8gb3IgdmlkZW8gcmVj
ZWl2ZXI/Ci0gIC8vCi0gIC8vIE9uY2UgR2V0VHJhY2soKSBzdGFydHMgYWx3YXlzIHJldHVybmlu
ZyBhIHRyYWNrLCB0aGlzIG1ldGhvZCB3aWxsIGJlCi0gIC8vIHJlZHVuZGFudCwgYXMgb25lIGNh
biBjYWxsICJHZXRUcmFjaygpLT5raW5kKCkiLiBIb3dldmVyLCBpdCdzIHN0aWxsIGEKLSAgLy8g
bmljZSBjb252ZW5pZW5jZSwgYW5kIGlzIHN5bW1ldHJpYyB3aXRoIE9ydGNSdHBTZW5kZXJJbnRl
cmZhY2U6OkdldEtpbmQuCi0gIHZpcnR1YWwgY3JpY2tldDo6TWVkaWFUeXBlIEdldEtpbmQoKSBj
b25zdCA9IDA7Ci0KLSAgLy8gVE9ETyhkZWFkYmVlZik6IEdldENvbnRyaWJ1dGluZ1NvdXJjZXMK
LX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBBUElfT1JUQ19PUlRD
UlRQUkVDRUlWRVJJTlRFUkZBQ0VfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL29ydGNydHBzZW5kZXJpbnRlcmZhY2UuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL29ydGNy
dHBzZW5kZXJpbnRlcmZhY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ0ZGZh
YTc5MDdmZmMyOGM3NzE2YzZiZWQwNzI2ZWViNGQ4ZmVjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9vcnRjcnRwc2VuZGVyaW50ZXJmYWNlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3NyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
Ci0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0vLyBUaGlzIGZpbGUgY29u
dGFpbnMgaW50ZXJmYWNlcyBmb3IgUnRwU2VuZGVyczoKLS8vIGh0dHA6Ly9wdWJsaWNhdGlvbnMu
b3J0Yy5vcmcvMjAxNi8yMDE2MTIwMi8jcnRjcnRwc2VuZGVyKgotLy8KLS8vIEhvd2V2ZXIsIHVu
ZGVybmVhdGggdGhlIFJ0cFNlbmRlciBpcyBhbiBSdHBUcmFuc3BvcnQsIHJhdGhlciB0aGFuIGEK
LS8vIER0bHNUcmFuc3BvcnQuIFRoaXMgaXMgdG8gYWxsb3cgZGlmZmVyZW50IHR5cGVzIG9mIFJU
UCB0cmFuc3BvcnRzIChiZXNpZGVzCi0vLyBEVExTLVNSVFApIHRvIGJlIHVzZWQuCi0KLSNpZm5k
ZWYgQVBJX09SVENfT1JUQ1JUUFNFTkRFUklOVEVSRkFDRV9IXwotI2RlZmluZSBBUElfT1JUQ19P
UlRDUlRQU0VOREVSSU5URVJGQUNFX0hfCi0KLSNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1pbnRl
cmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvbWVkaWF0eXBlcy5oIgotI2luY2x1ZGUgImFwaS9vcnRj
L3J0cHRyYW5zcG9ydGludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgotI2lu
Y2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBO
b3RlOiBTaW5jZSBzZW5kZXIgY2FwYWJpbGl0aWVzIG1heSBkZXBlbmQgb24gaG93IHRoZSBPcnRj
RmFjdG9yeSB3YXMKLS8vIGNyZWF0ZWQsIGluc3RlYWQgb2YgYSBzdGF0aWMgIkdldENhcGFiaWxp
dGllcyIgbWV0aG9kIG9uIHRoaXMgaW50ZXJmYWNlLAotLy8gdGhlcmUgaXMgYSAiR2V0UnRwU2Vu
ZGVyQ2FwYWJpbGl0aWVzIiBtZXRob2Qgb24gdGhlIE9ydGNGYWN0b3J5LgotY2xhc3MgT3J0Y1J0
cFNlbmRlckludGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5PcnRjUnRwU2VuZGVySW50
ZXJmYWNlKCkge30KLQotICAvLyBTZXRzIHRoZSBzb3VyY2Ugb2YgbWVkaWEgdGhhdCB3aWxsIGJl
IHNlbnQgYnkgdGhpcyBzZW5kZXIuCi0gIC8vCi0gIC8vIElmIFNlbmQgaGFzIGFscmVhZHkgYmVl
biBjYWxsZWQsIHdpbGwgaW1tZWRpYXRlbHkgc3dpdGNoIHRvIHNlbmRpbmcgdGhpcwotICAvLyB0
cmFjay4gSWYgfHRyYWNrfCBpcyBudWxsLCB3aWxsIHN0b3Agc2VuZGluZyBtZWRpYS4KLSAgLy8K
LSAgLy8gUmV0dXJucyBJTlZBTElEX1BBUkFNRVRFUiBlcnJvciBpZiBhbiBhdWRpbyB0cmFjayBp
cyBzZXQgb24gYSB2aWRlbwotICAvLyBSdHBTZW5kZXIsIG9yIHZpY2UtdmVyc2EuCi0gIHZpcnR1
YWwgUlRDRXJyb3IgU2V0VHJhY2soTWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZSogdHJhY2spID0g
MDsKLSAgLy8gUmV0dXJucyBwcmV2aW91c2x5IHNldCAob3IgY29uc3RydWN0ZWQtd2l0aCkgdHJh
Y2suCi0gIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZh
Y2U+IEdldFRyYWNrKCkgY29uc3QgPSAwOwotCi0gIC8vIE9uY2Ugc3VwcG9ydGVkLCB3aWxsIHN3
aXRjaCB0byBzZW5kaW5nIG1lZGlhIG9uIGEgbmV3IHRyYW5zcG9ydC4gSG93ZXZlciwKLSAgLy8g
dGhpcyBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBhbmQgd2lsbCBhbHdheXMgcmV0dXJuIGFu
IGVycm9yLgotICB2aXJ0dWFsIFJUQ0Vycm9yIFNldFRyYW5zcG9ydChSdHBUcmFuc3BvcnRJbnRl
cmZhY2UqIHRyYW5zcG9ydCkgPSAwOwotICAvLyBSZXR1cm5zIHByZXZpb3VzbHkgc2V0IChvciBj
b25zdHJ1Y3RlZC13aXRoKSB0cmFuc3BvcnQuCi0gIHZpcnR1YWwgUnRwVHJhbnNwb3J0SW50ZXJm
YWNlKiBHZXRUcmFuc3BvcnQoKSBjb25zdCA9IDA7Ci0KLSAgLy8gU3RhcnQgc2VuZGluZyBtZWRp
YSB3aXRoIHxwYXJhbWV0ZXJzfCAoaWYgfHBhcmFtZXRlcnN8IGNvbnRhaW5zIGFuIGFjdGl2ZQot
ICAvLyBlbmNvZGluZykuCi0gIC8vCi0gIC8vIFRoZXJlIGFyZSBubyBsaW1pdGF0aW9ucyB0byBo
b3cgdGhlIHBhcmFtZXRlcnMgY2FuIGJlIGNoYW5nZWQgYWZ0ZXIgdGhlCi0gIC8vIGluaXRpYWwg
Y2FsbCB0byBTZW5kLCBhcyBsb25nIGFzIHRoZXkncmUgdmFsaWQgKGZvciBleGFtcGxlLCB0aGV5
IGNhbid0Ci0gIC8vIHVzZSB0aGUgc2FtZSBwYXlsb2FkIHR5cGUgZm9yIHR3byBjb2RlY3MpLgot
ICB2aXJ0dWFsIFJUQ0Vycm9yIFNlbmQoY29uc3QgUnRwUGFyYW1ldGVycyYgcGFyYW1ldGVycykg
PSAwOwotICAvLyBSZXR1cm5zIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIGxhc3Qgc3VjY2Vzc2Z1bGx5
IHBhc3NlZCBpbnRvIFNlbmQsIG9yIGVtcHR5Ci0gIC8vIHBhcmFtZXRlcnMgaWYgdGhhdCBoYXNu
J3QgeWV0IG9jY3VycmVkLgotICAvLwotICAvLyBOb3RlIHRoYXQgZm9yIHBhcmFtZXRlcnMgdGhh
dCBhcmUgZGVzY3JpYmVkIGFzIGhhdmluZyBhbiAiaW1wbGVtZW50YXRpb24KLSAgLy8gZGVmYXVs
dCIgdmFsdWUgY2hvc2VuLCBHZXRQYXJhbWV0ZXJzKCkgd2lsbCByZXR1cm4gdGhvc2UgY2hvc2Vu
IGRlZmF1bHRzLAotICAvLyB3aXRoIHRoZSBleGNlcHRpb24gb2YgU1NSQ3Mgd2hpY2ggaGF2ZSBz
cGVjaWFsIGJlaGF2aW9yLiBTZWUKLSAgLy8gcnRwcGFyYW1ldGVycy5oIGZvciBtb3JlIGRldGFp
bHMuCi0gIHZpcnR1YWwgUnRwUGFyYW1ldGVycyBHZXRQYXJhbWV0ZXJzKCkgY29uc3QgPSAwOwot
Ci0gIC8vIEF1ZGlvIG9yIHZpZGVvIHNlbmRlcj8KLSAgdmlydHVhbCBjcmlja2V0OjpNZWRpYVR5
cGUgR2V0S2luZCgpIGNvbnN0ID0gMDsKLQotICAvLyBUT0RPKGRlYWRiZWVmKTogU1NSQyBjb25m
bGljdCBzaWduYWwuCi19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8g
QVBJX09SVENfT1JUQ1JUUFNFTkRFUklOVEVSRkFDRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvcnRwdHJhbnNwb3J0Y29u
dHJvbGxlcmludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL29ydGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcmludGVyZmFjZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWYzN2ZhN2EwZDVkMjA4ZGQ3NjllM2Q5YmNjMDM3N2I5
OTc1Y2FiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3J0cHRyYW5z
cG9ydGNvbnRyb2xsZXJpbnRlcmZhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAK
LS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0g
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgQVBJX09SVENfUlRQVFJBTlNQT1JUQ09OVFJP
TExFUklOVEVSRkFDRV9IXwotI2RlZmluZSBBUElfT1JUQ19SVFBUUkFOU1BPUlRDT05UUk9MTEVS
SU5URVJGQUNFX0hfCi0KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJhcGkvb3J0Yy9y
dHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIFJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOwotCi0vLyBVc2VkIHRvIGdyb3VwIFJUUCB0cmFu
c3BvcnRzIGJldHdlZW4gYSBsb2NhbCBlbmRwb2ludCBhbmQgdGhlIHNhbWUgcmVtb3RlCi0vLyBl
bmRwb2ludCwgZm9yIHRoZSBwdXJwb3NlIG9mIHNoYXJpbmcgYmFuZHdpZHRoIGVzdGltYXRpb24g
YW5kIG90aGVyIHRoaW5ncy4KLS8vCi0vLyBDb21wYXJpbmcgdGhpcyB0byB0aGUgUGVlckNvbm5l
Y3Rpb24gbW9kZWwsIG5vbi1idWRsZWQgYXVkaW8vdmlkZW8gd291bGQgdXNlCi0vLyB0d28gUnRw
VHJhbnNwb3J0cyB3aXRoIGEgc2luZ2xlIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXIsIHdoZXJlYXMg
YnVuZGxlZAotLy8gbWVkaWEgd291bGQgdXNlIGEgc2luZ2xlIFJ0cFRyYW5zcG9ydCwgYW5kIHR3
byBQZWVyQ29ubmVjdGlvbnMgd291bGQgdXNlCi0vLyBpbmRlcGVuZGVudCBSdHBUcmFuc3BvcnRD
b250cm9sbGVycy4KLS8vCi0vLyBSdHBUcmFuc3BvcnRzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhp
cyBjb250cm9sbGVyIHdoZW4gdGhleSdyZSBjcmVhdGVkLCBieQotLy8gcGFzc2luZyB0aGUgY29u
dHJvbGxlciBpbnRvIE9ydGNGYWN0b3J5J3MgcmVsZXZhbnQgIkNyZWF0ZVJ0cFRyYW5zcG9ydCIK
LS8vIG1ldGhvZC4gV2hlbiBhIHRyYW5zcG9ydCBpcyBkZXN0cm95ZWQsIGl0J3MgYXV0b21hdGlj
YWxseSBkaXNhc3NvY2lhdGVkLgotLy8gR2V0VHJhbnNwb3J0cyByZXR1cm5zIGFsbCBjdXJyZW50
bHkgYXNzb2NpYXRlZCB0cmFuc3BvcnRzLgotLy8KLS8vIFRoaXMgaXMgdGhlIFJUUCBlcXVpdmFs
ZW50IG9mICJJY2VUcmFuc3BvcnRDb250cm9sbGVyIiBpbiBPUlRDOyBSdHBUcmFuc3BvcnQKLS8v
IGlzIHRvIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXIgYXMgSWNlVHJhbnNwb3J0IGlzIHRvIEljZVRy
YW5zcG9ydENvbnRyb2xsZXIuCi1jbGFzcyBSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNl
IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgflJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2Uo
KSB7fQotCi0gIC8vIFJldHVybnMgYWxsIHRyYW5zcG9ydHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
Y29udHJvbGxlciAoc2VlIGV4cGxhbmF0aW9uCi0gIC8vIGFib3ZlKS4gTm8gb3JkZXJpbmcgaXMg
Z3VhcmFudGVlZC4KLSAgdmlydHVhbCBzdGQ6OnZlY3RvcjxSdHBUcmFuc3BvcnRJbnRlcmZhY2Uq
PiBHZXRUcmFuc3BvcnRzKCkgY29uc3QgPSAwOwotCi0gcHJvdGVjdGVkOgotICAvLyBPbmx5IGZv
ciBpbnRlcm5hbCB1c2UuIFJldHVybnMgYSBwb2ludGVyIHRvIGFuIGludGVybmFsIGludGVyZmFj
ZSwgZm9yIHVzZQotICAvLyBieSB0aGUgaW1wbGVtZW50YXRpb24uCi0gIHZpcnR1YWwgUnRwVHJh
bnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIEdldEludGVybmFsKCkgPSAwOwotCi0gIC8vIENsYXNz
ZXMgdGhhdCBjYW4gdXNlIHRoaXMgaW50ZXJuYWwgaW50ZXJmYWNlLgotICBmcmllbmQgY2xhc3Mg
T3J0Y0ZhY3Rvcnk7Ci0gIGZyaWVuZCBjbGFzcyBSdHBUcmFuc3BvcnRBZGFwdGVyOwotfTsKLQot
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIEFQSV9PUlRDX1JUUFRSQU5TUE9S
VENPTlRST0xMRVJJTlRFUkZBQ0VfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3J0cHRyYW5zcG9ydGludGVyZmFjZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvcnRwdHJh
bnNwb3J0aW50ZXJmYWNlLmgKaW5kZXggYjBkMzBlODU2MGUyN2E1MjhiYTY3YTUzNTRhZmIzMmRh
MGEyZGI2NC4uNGI5ZDE2MTU4ZjY1YTA0ODFkY2Y3NjUzZjZiNDJmNGRlOWQ4MmVkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMv
cnRwdHJhbnNwb3J0aW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL29ydGMvcnRwdHJhbnNwb3J0aW50ZXJmYWNlLmgKQEAgLTE4LDcg
KzE4LDYgQEAKICNpbmNsdWRlICJhcGkvcnRjZXJyb3IuaCIKICNpbmNsdWRlICJhcGkvcnRwX2hl
YWRlcnMuaCIKICNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgotI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvb3J0Yy9zZXNzaW9uZGVzY3JpcHRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9zZXNzaW9uZGVzY3JpcHRpb24uY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNzg4ODRlY2I0NWIyMDc4OTY1MzRhODkwMjhhMTE1
NzUzZjllNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvc2Vzc2lv
bmRlc2NyaXB0aW9uLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLQotI2luY2x1ZGUgImFwaS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5oIgotCi1u
YW1lc3BhY2Ugd2VicnRjIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9zZXNzaW9uZGVzY3JpcHRpb24uaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNjcmlw
dGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmJhYTI3ZDZmZmMwMDExNDUw
MzI2ZTUxYzE3YzhiMTdkZjlmOTUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBA
QAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
LSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBBUElfT1JUQ19TRVNTSU9OREVTQ1JJUFRJ
T05fSF8KLSNkZWZpbmUgQVBJX09SVENfU0VTU0lPTkRFU0NSSVBUSU9OX0hfCi0KLSNpbmNsdWRl
IDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8v
IEEgc3RydWN0dXJlZCByZXByZXNlbnRhdGlvbiBvZiBhbiBTRFAgc2Vzc2lvbiBkZXNjcmlwdGlv
bi4KLWNsYXNzIFNlc3Npb25EZXNjcmlwdGlvbiB7Ci0gcHVibGljOgotICBTZXNzaW9uRGVzY3Jp
cHRpb24oaW50NjRfdCBzZXNzaW9uX2lkLCBzdGQ6OnN0cmluZyBzZXNzaW9uX3ZlcnNpb24pCi0g
ICAgICA6IHNlc3Npb25faWRfKHNlc3Npb25faWQpLCBzZXNzaW9uX3ZlcnNpb25fKHN0ZDo6bW92
ZShzZXNzaW9uX3ZlcnNpb24pKSB7fQotCi0gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRt
bC9yZmM0NTY2I3NlY3Rpb24tNS4yCi0gIC8vIG89PHVzZXJuYW1lPiA8c2Vzcy1pZD4gPHNlc3Mt
dmVyc2lvbj4gPG5ldHR5cGU+IDxhZGRydHlwZT4KLSAgLy8gICA8dW5pY2FzdC1hZGRyZXNzPgot
ICAvLyBzZXNzaW9uX2lkXyBpcyB0aGUgInNlc3MtaWQiIGZpZWxkLgotICAvLyBzZXNzaW9uX3Zl
cnNpb25fIGlzIHRoZSAic2Vzcy12ZXJzaW9uIiBmaWVsZC4KLSAgaW50NjRfdCBzZXNzaW9uX2lk
KCkgeyByZXR1cm4gc2Vzc2lvbl9pZF87IH0KLSAgdm9pZCBzZXRfc2Vzc2lvbl9pZChpbnQ2NF90
IHNlc3Npb25faWQpIHsgc2Vzc2lvbl9pZF8gPSBzZXNzaW9uX2lkOyB9Ci0KLSAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHNlc3Npb25fdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHNlc3Npb25fdmVyc2lv
bl87IH0KLSAgdm9pZCBzZXRfc2Vzc2lvbl92ZXJzaW9uKHN0ZDo6c3RyaW5nIHNlc3Npb25fdmVy
c2lvbikgewotICAgIHNlc3Npb25fdmVyc2lvbl8gPSBzdGQ6Om1vdmUoc2Vzc2lvbl92ZXJzaW9u
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgaW50NjRfdCBzZXNzaW9uX2lkXzsKLSAgc3RkOjpzdHJp
bmcgc2Vzc2lvbl92ZXJzaW9uXzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2Vu
ZGlmICAvLyBBUElfT1JUQ19TRVNTSU9OREVTQ1JJUFRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNj
cmlwdGlvbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbl91bml0dGVzdC5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ2MTFjNmM2YjJiZjdhMGJlNGY1YzkyMTY2ZjQwOTM0YjA1
ZjcwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9zZXNzaW9uZGVz
Y3JpcHRpb25fdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vKgot
ICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
LSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAiYXBpL29ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgi
Ci0jaW5jbHVkZSAidGVzdC9ndGVzdC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotY2xhc3Mg
U2Vzc2lvbkRlc2NyaXB0aW9uVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHt9OwotCi1URVNU
X0YoU2Vzc2lvbkRlc2NyaXB0aW9uVGVzdCwgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uKSB7Ci0g
IFNlc3Npb25EZXNjcmlwdGlvbiBzKC0xLCAiMCIpOwotICBFWFBFQ1RfRVEoLTEsIHMuc2Vzc2lv
bl9pZCgpKTsKLSAgRVhQRUNUX0VRKCIwIiwgcy5zZXNzaW9uX3ZlcnNpb24oKSk7Ci19Ci19ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy91ZHB0cmFuc3BvcnRpbnRlcmZhY2UuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3VkcHRyYW5zcG9y
dGludGVyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjQ2YTI1ZTlkZGQw
ZjVlY2FmZTAwNjliYzg2M2QwMzA4ZWYyYjgxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9vcnRjL3VkcHRyYW5zcG9ydGludGVyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBBUElfT1JUQ19VRFBUUkFO
U1BPUlRJTlRFUkZBQ0VfSF8KLSNkZWZpbmUgQVBJX09SVENfVURQVFJBTlNQT1JUSU5URVJGQUNF
X0hfCi0KLSNpbmNsdWRlICJhcGkvb3J0Yy9wYWNrZXR0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLSNp
bmNsdWRlICJhcGkvcHJveHkuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgi
Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBJbnRlcmZhY2UgZm9yIGEgcmF3IFVEUCB0cmFu
c3BvcnQgKG5vdCB1c2luZyBJQ0UpLCBtZWFuaW5nIGEgY29tYmluYXRpb24gb2YKLS8vIGEgbG9j
YWwvcmVtb3RlIElQIGFkZHJlc3MvcG9ydC4KLS8vCi0vLyBBbiBpbnN0YW5jZSBjYW4gYmUgaW5z
dGFudGlhdGVkIHVzaW5nIE9ydGNGYWN0b3J5LgotLy8KLS8vIEVhY2ggaW5zdGFuY2UgcmVzZXJ2
ZXMgYSBVRFAgcG9ydCwgd2hpY2ggd2lsbCBiZSBmcmVlZCB3aGVuIHRoZQotLy8gVWRwVHJhbnNw
b3J0SW50ZXJmYWNlIGRlc3RydWN0b3IgaXMgY2FsbGVkLgotLy8KLS8vIENhbGxpbmcgU2V0UmVt
b3RlQWRkcmVzcyBzZXRzIHRoZSBkZXN0aW5hdGlvbiBvZiBvdXRnb2luZyBwYWNrZXRzOyB3aXRo
b3V0IGEKLS8vIGRlc3RpbmF0aW9uLCBwYWNrZXRzIGNhbid0IGJlIHNlbnQsIGJ1dCB0aGV5IGNh
biBiZSByZWNlaXZlZC4KLWNsYXNzIFVkcFRyYW5zcG9ydEludGVyZmFjZSA6IHB1YmxpYyB2aXJ0
dWFsIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSB7Ci0gcHVibGljOgotICAvLyBHZXQgdGhlIGFk
ZHJlc3Mgb2YgdGhlIHNvY2tldCBhbGxvY2F0ZWQgZm9yIHRoaXMgdHJhbnNwb3J0LgotICB2aXJ0
dWFsIHJ0Yzo6U29ja2V0QWRkcmVzcyBHZXRMb2NhbEFkZHJlc3MoKSBjb25zdCA9IDA7Ci0KLSAg
Ly8gU2V0cyB0aGUgYWRkcmVzcyB0byB3aGljaCBwYWNrZXRzIHdpbGwgYmUgZGVsaXZlcmVkLgot
ICAvLwotICAvLyBDYWxsaW5nIHdpdGggYSAibmlsIiAoZGVmYXVsdC1jb25zdHJ1Y3RlZCkgYWRk
cmVzcyBpcyBsZWdhbCwgYW5kIHVuc2V0cwotICAvLyBhbnkgcHJldmlvdXNseSBzZXQgZGVzdGlu
YXRpb24uCi0gIC8vCi0gIC8vIEhvd2V2ZXIsIGNhbGxpbmcgd2l0aCBhbiBpbmNvbXBsZXRlIGFk
ZHJlc3MgKHBvcnQgb3IgSVAgbm90IHNldCkgd2lsbAotICAvLyBmYWlsLgotICB2aXJ0dWFsIGJv
b2wgU2V0UmVtb3RlQWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGRlc3QpID0gMDsK
LSAgLy8gU2ltcGxlIGdldHRlci4gSWYgbmV2ZXIgc2V0LCByZXR1cm5zIG5pbCBhZGRyZXNzLgot
ICB2aXJ0dWFsIHJ0Yzo6U29ja2V0QWRkcmVzcyBHZXRSZW1vdGVBZGRyZXNzKCkgY29uc3QgPSAw
OwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIEFQSV9PUlRDX1VE
UFRSQU5TUE9SVElOVEVSRkFDRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9u
aW50ZXJmYWNlLmNjCmluZGV4IGI0MTQ4ZDc0ODBhYWJlNDQzY2I5OWU3NGRmNzQyZTBkNTg0YTE1
MDcuLmYyOTUzYjViMGMyOGM2MTFmYjEwZWZiZjgzMDZkZTI0NWU2NzNmMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wZWVyY29ubmVj
dGlvbmludGVyZmFjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuY2MKQEAgLTE1OSw2ICsxNTksMTEg
QEAgUlRDRXJyb3IgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlNldEJpdHJhdGUoCiAgIHJldHVy
biBTZXRCaXRyYXRlKGJpdHJhdGUpOwogfQogCitQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVl
ckNvbm5lY3Rpb25TdGF0ZQorUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OnBlZXJfY29ubmVjdGlv
bl9zdGF0ZSgpIHsKKyAgcmV0dXJuIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVj
dGlvblN0YXRlOjprTmV3OworfQorCiBib29sIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpTdGFy
dFJ0Y0V2ZW50TG9nKHJ0Yzo6UGxhdGZvcm1GaWxlIGZpbGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgbWF4X3NpemVfYnl0ZXMpIHsKICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2Uu
aAppbmRleCAxYzMyYjY5NjkyZDAwZTZlZmFiNzgyYzViZGJhMWNkN2E4MzBlMmM4Li41NDE2MWI4
ZGE1OWIwMjI2MDgzYTZhYmY5ODI5NmFlODMzOWRmNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZh
Y2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
cGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaApAQCAtNjksNyArNjksNiBAQAogCiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hc3luY3Jlc29sdmVyZmFjdG9yeS5oIgpAQCAtNzgs
MTAgKzc3LDExIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2Zh
Y3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fb3B0aW9ucy5oIgogI2luY2x1ZGUgImFwaS9j
YWxsL2NhbGxmYWN0b3J5aW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiYXBpL2NyeXB0by9jcnlwdG9v
cHRpb25zLmgiCiAjaW5jbHVkZSAiYXBpL2RhdGFjaGFubmVsaW50ZXJmYWNlLmgiCi0jaW5jbHVk
ZSAiYXBpL2R0bWZzZW5kZXJpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvZmVjX2NvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJhcGkvanNlcC5oIgorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3Bv
cnRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCiAjaW5jbHVkZSAiYXBpL3J0Y2V2ZW50bG9nb3V0cHV0
LmgiCkBAIC05NCw3ICs5NCw2IEBACiAjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9iaXRyYXRlX3Nl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9uZXR3b3JrX2NvbnRyb2wuaCIKICNp
bmNsdWRlICJhcGkvdHVybmN1c3RvbWl6ZXIuaCIKLSNpbmNsdWRlICJhcGkvdW1hbWV0cmljcy5o
IgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX2ZhY3Rvcnlf
aW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbmZpZy5oIgogLy8gVE9E
TyhidWdzLndlYnJ0Yy5vcmcvNjM1Myk6IGNyaWNrZXQ6OlZpZGVvQ2FwdHVyZXIgaXMgZGVwcmVj
YXRlZCBhbmQgc2hvdWxkCkBAIC0xMTQsNiArMTEzLDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9z
b2NrZXRhZGRyZXNzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
c3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiBjbGFzcyBTU0xJZGVudGl0
eTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBlbnVtIGNsYXNzIFNkcFNlbWFudGljcyB7IGtQbGFuQiwg
a1VuaWZpZWRQbGFuIH07CiAKIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVibGlj
IHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogIHB1YmxpYzoKLSAgLy8gU2VlIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWJydGMtcGMvI3N0YXRlLWRlZmluaXRpb25zCisgIC8vIFNlZSBodHRwczov
L3czYy5naXRodWIuaW8vd2VicnRjLXBjLyNkb20tcnRjc2lnbmFsaW5nc3RhdGUKICAgZW51bSBT
aWduYWxpbmdTdGF0ZSB7CiAgICAga1N0YWJsZSwKICAgICBrSGF2ZUxvY2FsT2ZmZXIsCkBAIC0x
NzAsMTIgKzE3MCwyNCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVyZmFjZSA6IHB1YmxpYyBy
dGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICAgICBrQ2xvc2VkLAogICB9OwogCisgIC8vIFNlZSBo
dHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXBjLyNkb20tcnRjaWNlZ2F0aGVyaW5nc3RhdGUK
ICAgZW51bSBJY2VHYXRoZXJpbmdTdGF0ZSB7CiAgICAga0ljZUdhdGhlcmluZ05ldywKICAgICBr
SWNlR2F0aGVyaW5nR2F0aGVyaW5nLAogICAgIGtJY2VHYXRoZXJpbmdDb21wbGV0ZQogICB9Owog
CisgIC8vIFNlZSBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXBjLyNkb20tcnRjcGVlcmNv
bm5lY3Rpb25zdGF0ZQorICBlbnVtIGNsYXNzIFBlZXJDb25uZWN0aW9uU3RhdGUgeworICAgIGtO
ZXcsCisgICAga0Nvbm5lY3RpbmcsCisgICAga0Nvbm5lY3RlZCwKKyAgICBrRGlzY29ubmVjdGVk
LAorICAgIGtGYWlsZWQsCisgICAga0Nsb3NlZCwKKyAgfTsKKworICAvLyBTZWUgaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3dlYnJ0Yy1wYy8jZG9tLXJ0Y2ljZWNvbm5lY3Rpb25zdGF0ZQogICBlbnVt
IEljZUNvbm5lY3Rpb25TdGF0ZSB7CiAgICAga0ljZUNvbm5lY3Rpb25OZXcsCiAgICAga0ljZUNv
bm5lY3Rpb25DaGVja2luZywKQEAgLTI4Miw3ICsyOTQsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZSA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICAgLy8gb3JnYW5p
emF0aW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXNuJ3Qgc3RhYmxlLiBTbyB3ZQog
ICAvLyBuZWVkIGdldHRlcnMgYW5kIHNldHRlcnMgYXQgbGVhc3QgZm9yIGZpZWxkcyB3aGljaCBh
cHBsaWNhdGlvbnMKICAgLy8gYXJlIGludGVyZXN0ZWQgaW4uCi0gIHN0cnVjdCBSVENDb25maWd1
cmF0aW9uIHsKKyAgc3RydWN0IFJUQ19FWFBPUlQgUlRDQ29uZmlndXJhdGlvbiB7CiAgICAgLy8g
VGhpcyBzdHJ1Y3QgaXMgc3ViamVjdCB0byByZW9yZ2FuaXphdGlvbiwgYm90aCBmb3IgbmFtaW5n
CiAgICAgLy8gY29uc2lzdGVuY3ksIGFuZCB0byBncm91cCBzZXR0aW5ncyB0byBtYXRjaCB3aGVy
ZSB0aGV5IGFyZSB1c2VkCiAgICAgLy8gaW4gdGhlIGltcGxlbWVudGF0aW9uLiBUbyBkbyB0aGF0
LCB3ZSBuZWVkIGdldHRlciBhbmQgc2V0dGVyCkBAIC0zMjgsNiArMzQwLDIyIEBAIGNsYXNzIFBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2Ugewog
ICAgICAgbWVkaWFfY29uZmlnLnZpZGVvLmV4cGVyaW1lbnRfY3B1X2xvYWRfZXN0aW1hdG9yID0g
ZW5hYmxlOwogICAgIH0KIAorICAgIGludCBhdWRpb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcygp
IGNvbnN0IHsKKyAgICAgIHJldHVybiBtZWRpYV9jb25maWcuYXVkaW8ucnRjcF9yZXBvcnRfaW50
ZXJ2YWxfbXM7CisgICAgfQorICAgIHZvaWQgc2V0X2F1ZGlvX3J0Y3BfcmVwb3J0X2ludGVydmFs
X21zKGludCBhdWRpb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcykgeworICAgICAgbWVkaWFfY29u
ZmlnLmF1ZGlvLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0KKyAgICAgICAgICBhdWRpb19ydGNw
X3JlcG9ydF9pbnRlcnZhbF9tczsKKyAgICB9CisKKyAgICBpbnQgdmlkZW9fcnRjcF9yZXBvcnRf
aW50ZXJ2YWxfbXMoKSBjb25zdCB7CisgICAgICByZXR1cm4gbWVkaWFfY29uZmlnLnZpZGVvLnJ0
Y3BfcmVwb3J0X2ludGVydmFsX21zOworICAgIH0KKyAgICB2b2lkIHNldF92aWRlb19ydGNwX3Jl
cG9ydF9pbnRlcnZhbF9tcyhpbnQgdmlkZW9fcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMpIHsKKyAg
ICAgIG1lZGlhX2NvbmZpZy52aWRlby5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9CisgICAgICAg
ICAgdmlkZW9fcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM7CisgICAgfQorCiAgICAgc3RhdGljIGNv
bnN0IGludCBrVW5kZWZpbmVkID0gLTE7CiAgICAgLy8gRGVmYXVsdCBtYXhpbXVtIG51bWJlciBv
ZiBwYWNrZXRzIGluIHRoZSBhdWRpbyBqaXR0ZXIgYnVmZmVyLgogICAgIHN0YXRpYyBjb25zdCBp
bnQga0F1ZGlvSml0dGVyQnVmZmVyTWF4UGFja2V0cyA9IDUwOwpAQCAtMzk0LDYgKzQyMiw3IEBA
IGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRl
cmZhY2UgewogICAgIC8vIFVzZSBuZXcgY29tYmluZWQgYXVkaW8vdmlkZW8gYmFuZHdpZHRoIGVz
dGltYXRpb24/CiAgICAgYWJzbDo6b3B0aW9uYWw8Ym9vbD4gY29tYmluZWRfYXVkaW9fdmlkZW9f
YndlOwogCisgICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTg5MSkgLSBNb3ZlIHRvIGNyeXB0
b19vcHRpb25zCiAgICAgLy8gQ2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBEVExTLVNSVFAuIFRoaXMg
c2hvdWxkIG5ldmVyIGJlIGRvbmUsIGJ1dCBjYW4gYmUKICAgICAvLyB1c2VmdWwgZm9yIHRlc3Rp
bmcgcHVycG9zZXMsIGZvciBleGFtcGxlIGluIHNldHRpbmcgdXAgYSBsb29wYmFjayBjYWxsCiAg
ICAgLy8gd2l0aCBhIHNpbmdsZSBQZWVyQ29ubmVjdGlvbi4KQEAgLTQyMSw2ICs0NTAsOSBAQCBj
bGFzcyBQZWVyQ29ubmVjdGlvbkludGVyZmFjZSA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJm
YWNlIHsKICAgICAvLyBpZiBpdCBmYWxscyBiZWhpbmQuCiAgICAgYm9vbCBhdWRpb19qaXR0ZXJf
YnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSA9IGZhbHNlOwogCisgICAgLy8gVGhlIG1pbmltdW0gZGVs
YXkgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgYXVkaW8gaml0dGVyIGJ1ZmZlci4KKyAgICBpbnQg
YXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMgPSAwOworCiAgICAgLy8gVGltZW91dCBp
biBtaWxsaXNlY29uZHMgYmVmb3JlIGFuIElDRSBjYW5kaWRhdGUgcGFpciBpcyBjb25zaWRlcmVk
IHRvIGJlCiAgICAgLy8gIm5vdCByZWNlaXZpbmciLCBhZnRlciB3aGljaCBhIGxvd2VyIHByaW9y
aXR5IGNhbmRpZGF0ZSBwYWlyIG1heSBiZQogICAgIC8vIHNlbGVjdGVkLgpAQCAtNTU2LDYgKzU4
OCw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291
bnRJbnRlcmZhY2UgewogICAgIC8vIEZvciBhbGwgb3RoZXIgdXNlcnMsIHNwZWNpZnkga1VuaWZp
ZWRQbGFuLgogICAgIFNkcFNlbWFudGljcyBzZHBfc2VtYW50aWNzID0gU2RwU2VtYW50aWNzOjpr
UGxhbkI7CiAKKyAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85ODkxKSAtIE1vdmUgdG8gY3J5
cHRvX29wdGlvbnMgb3IgcmVtb3ZlLgogICAgIC8vIEFjdGl2ZWx5IHJlc2V0IHRoZSBTUlRQIHBh
cmFtZXRlcnMgd2hlbmV2ZXIgdGhlIERUTFMgdHJhbnNwb3J0cwogICAgIC8vIHVuZGVybmVhdGgg
YXJlIHJlc2V0IGZvciBldmVyeSBvZmZlci9hbnN3ZXIgbmVnb3RpYXRpb24uCiAgICAgLy8gVGhp
cyBpcyBvbmx5IGludGVuZGVkIHRvIGJlIGEgd29ya2Fyb3VuZCBmb3IgY3JidWcuY29tLzgzNTk1
OApAQCAtNTYzLDYgKzU5NiwzNCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVyZmFjZSA6IHB1
YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICAgICAvLyBjb3JyZWN0bHkuIFRoaXMgZmxh
ZyB3aWxsIGJlIGRlcHJlY2F0ZWQgc29vbi4gRG8gbm90IHJlbHkgb24gaXQuCiAgICAgYm9vbCBh
Y3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMgPSBmYWxzZTsKIAorICAgIC8vIElmIE1lZGlhVHJhbnNw
b3J0RmFjdG9yeSBpcyBwcm92aWRlZCBpbiBQZWVyQ29ubmVjdGlvbkZhY3RvcnksIHRoaXMgZmxh
ZworICAgIC8vIGluZm9ybXMgUGVlckNvbm5lY3Rpb24gdGhhdCBpdCBzaG91bGQgdXNlIHRoZSBN
ZWRpYVRyYW5zcG9ydEludGVyZmFjZS4KKyAgICAvLyBJdCdzIGludmFsaWQgdG8gc2V0IGl0IHRv
IHx0cnVlfCBpZiB0aGUgTWVkaWFUcmFuc3BvcnRGYWN0b3J5IHdhc24ndAorICAgIC8vIHByb3Zp
ZGVkLgorICAgIGJvb2wgdXNlX21lZGlhX3RyYW5zcG9ydCA9IGZhbHNlOworCisgICAgLy8gSWYg
TWVkaWFUcmFuc3BvcnRGYWN0b3J5IGlzIHByb3ZpZGVkIGluIFBlZXJDb25uZWN0aW9uRmFjdG9y
eSwgdGhpcyBmbGFnCisgICAgLy8gaW5mb3JtcyBQZWVyQ29ubmVjdGlvbiB0aGF0IGl0IHNob3Vs
ZCB1c2UgdGhlIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlIGZvcgorICAgIC8vIGRhdGEgY2hhbm5l
bHMuICBJdCdzIGludmFsaWQgdG8gc2V0IGl0IHRvIHx0cnVlfCBpZiB0aGUKKyAgICAvLyBNZWRp
YVRyYW5zcG9ydEZhY3Rvcnkgd2Fzbid0IHByb3ZpZGVkLiAgRGF0YSBjaGFubmVscyBvdmVyIG1l
ZGlhCisgICAgLy8gdHJhbnNwb3J0IGFyZSBub3QgY29tcGF0aWJsZSB3aXRoIFJUUCBvciBTQ1RQ
IGRhdGEgY2hhbm5lbHMuICBTZXR0aW5nCisgICAgLy8gYm90aCB8dXNlX21lZGlhX3RyYW5zcG9y
dF9mb3JfZGF0YV9jaGFubmVsc3wgYW5kCisgICAgLy8gfGVuYWJsZV9ydHBfZGF0YV9jaGFubmVs
fCBpcyBpbnZhbGlkLgorICAgIGJvb2wgdXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFu
bmVscyA9IGZhbHNlOworCisgICAgLy8gRGVmaW5lcyBhZHZhbmNlZCBvcHRpb25hbCBjcnlwdG9n
cmFwaGljIHNldHRpbmdzIHJlbGF0ZWQgdG8gU1JUUCBhbmQKKyAgICAvLyBmcmFtZSBlbmNyeXB0
aW9uIGZvciBuYXRpdmUgV2ViUlRDLiBTZXR0aW5nIHRoaXMgd2lsbCBvdmVyd3JpdGUgYW55Cisg
ICAgLy8gc2V0dGluZ3Mgc2V0IGluIFBlZXJDb25uZWN0aW9uRmFjdG9yeSAod2hpY2ggaXMgZGVw
cmVjYXRlZCkuCisgICAgYWJzbDo6b3B0aW9uYWw8Q3J5cHRvT3B0aW9ucz4gY3J5cHRvX29wdGlv
bnM7CisKKyAgICAvLyBDb25maWd1cmUgaWYgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlIFNEUCBhdHRy
aWJ1dGUgZXh0bWFwLWFsbG93LW1peGVkIGluCisgICAgLy8gb3VyIG9mZmVyLiBBbHRob3VnaCB3
ZSBjdXJyZW50bHkgZG8gc3VwcG9ydCB0aGlzLCBpdCdzIG5vdCBpbmNsdWRlZCBpbgorICAgIC8v
IG91ciBvZmZlciBieSBkZWZhdWx0IGR1ZSB0byBhIHByZXZpb3VzIGJ1ZyB0aGF0IGNhdXNlZCB0
aGUgU0RQIHBhcnNlciB0bworICAgIC8vIGFib3J0IHBhcnNpbmcgaWYgdGhpcyBhdHRyaWJ1dGUg
d2FzIHByZXNlbnQuIFRoaXMgaXMgZml4ZWQgaW4gQ2hyb21lIDcxLgorICAgIC8vIFRPRE8od2Vi
cnRjOjk5ODUpOiBDaGFuZ2UgZGVmYXVsdCB0byB0cnVlIG9uY2Ugc3VmZmljaWVudCB0aW1lIGhh
cworICAgIC8vIHBhc3NlZC4KKyAgICBib29sIG9mZmVyX2V4dG1hcF9hbGxvd19taXhlZCA9IGZh
bHNlOworCiAgICAgLy8KICAgICAvLyBEb24ndCBmb3JnZXQgdG8gdXBkYXRlIG9wZXJhdG9yPT0g
aWYgYWRkaW5nIHNvbWV0aGluZy4KICAgICAvLwpAQCAtOTcyLDExICsxMDMzLDEzIEBAIGNsYXNz
IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2Ug
ewogICB2aXJ0dWFsIFNpZ25hbGluZ1N0YXRlIHNpZ25hbGluZ19zdGF0ZSgpID0gMDsKIAogICAv
LyBSZXR1cm5zIHRoZSBhZ2dyZWdhdGUgc3RhdGUgb2YgYWxsIElDRSAqYW5kKiBEVExTIHRyYW5z
cG9ydHMuCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBJbXBsZW1lbnQgIlBlZXJDb25uZWN0aW9uU3Rh
dGUiIGFjY29yZGluZyB0byB0aGUgc3RhbmRhcmQsCi0gIC8vIHRvIGFnZ3JlZ2F0ZSBJQ0UrRFRM
UyBzdGF0ZSwgYW5kIGNoYW5nZSB0aGUgc2NvcGUgb2YgSWNlQ29ubmVjdGlvblN0YXRlIHRvCi0g
IC8vIGJlIGp1c3QgdGhlIElDRSBsYXllci4gU2VlOiBjcmJ1Zy5jb20vd2VicnRjLzYxNDUKKyAg
Ly8gVE9ETyhqb25hc29sc3Nvbik6IFJlcGxhY2Ugd2l0aCBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5l
Y3Rpb25fc3RhdGUgb25jZSBpdAorICAvLyBpcyByZWFkeSwgc2VlIGNyYnVnLmNvbS93ZWJydGMv
NjE0NQogICB2aXJ0dWFsIEljZUNvbm5lY3Rpb25TdGF0ZSBpY2VfY29ubmVjdGlvbl9zdGF0ZSgp
ID0gMDsKIAorICAvLyBSZXR1cm5zIHRoZSBhZ2dyZWdhdGVkIHN0YXRlIG9mIGFsbCBJQ0UgYW5k
IERUTFMgdHJhbnNwb3J0cy4KKyAgdmlydHVhbCBQZWVyQ29ubmVjdGlvblN0YXRlIHBlZXJfY29u
bmVjdGlvbl9zdGF0ZSgpOworCiAgIHZpcnR1YWwgSWNlR2F0aGVyaW5nU3RhdGUgaWNlX2dhdGhl
cmluZ19zdGF0ZSgpID0gMDsKIAogICAvLyBTdGFydHMgUnRjRXZlbnRMb2cgdXNpbmcgZXhpc3Rp
bmcgZmlsZS4gVGFrZXMgb3duZXJzaGlwIG9mIHxmaWxlfCBhbmQKQEAgLTEwNDUsNiArMTEwOCwx
MCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbk9ic2VydmVyIHsKICAgdmlydHVhbCB2b2lkIE9uSWNl
Q29ubmVjdGlvbkNoYW5nZSgKICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25u
ZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSA9IDA7CiAKKyAgLy8gQ2FsbGVkIGFueSB0aW1lIHRoZSBQ
ZWVyQ29ubmVjdGlvblN0YXRlIGNoYW5nZXMuCisgIHZpcnR1YWwgdm9pZCBPbkNvbm5lY3Rpb25D
aGFuZ2UoCisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0
ZSBuZXdfc3RhdGUpIHt9CisKICAgLy8gQ2FsbGVkIGFueSB0aW1lIHRoZSBJY2VHYXRoZXJpbmdT
dGF0ZSBjaGFuZ2VzLgogICB2aXJ0dWFsIHZvaWQgT25JY2VHYXRoZXJpbmdDaGFuZ2UoCiAgICAg
ICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlR2F0aGVyaW5nU3RhdGUgbmV3X3N0YXRlKSA9
IDA7CkBAIC0xMTU2LDYgKzEyMjMsNyBAQCBzdHJ1Y3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5RGVw
ZW5kZW5jaWVzIGZpbmFsIHsKICAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nRmFjdG9yeUlu
dGVyZmFjZT4gZXZlbnRfbG9nX2ZhY3Rvcnk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9s
bGVyRmFjdG9yeUludGVyZmFjZT4gZmVjX2NvbnRyb2xsZXJfZmFjdG9yeTsKICAgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4gbmV0d29ya19jb250cm9s
bGVyX2ZhY3Rvcnk7CisgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IG1l
ZGlhX3RyYW5zcG9ydF9mYWN0b3J5OwogfTsKIAogLy8gUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50
ZXJmYWNlIGlzIHRoZSBmYWN0b3J5IGludGVyZmFjZSB1c2VkIGZvciBjcmVhdGluZwpAQCAtMTE3
NSw3ICsxMjQzLDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIDogcHVi
bGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogIHB1YmxpYzoKICAgY2xhc3MgT3B0aW9ucyB7
CiAgICBwdWJsaWM6Ci0gICAgT3B0aW9ucygpIDogY3J5cHRvX29wdGlvbnMocnRjOjpDcnlwdG9P
cHRpb25zOjpOb0djbSgpKSB7fQorICAgIE9wdGlvbnMoKSB7fQogCiAgICAgLy8gSWYgc2V0IHRv
IHRydWUsIGNyZWF0ZWQgUGVlckNvbm5lY3Rpb25zIHdvbid0IGVuZm9yY2UgYW55IFNSVFAKICAg
ICAvLyByZXF1aXJlbWVudCwgYWxsb3dpbmcgdW5zZWN1cmVkIG1lZGlhLiBTaG91bGQgb25seSBi
ZSB1c2VkIGZvcgpAQCAtMTIwNCw3ICsxMjcyLDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0
b3J5SW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICAgIHJ0Yzo6
U1NMUHJvdG9jb2xWZXJzaW9uIHNzbF9tYXhfdmVyc2lvbiA9IHJ0Yzo6U1NMX1BST1RPQ09MX0RU
TFNfMTI7CiAKICAgICAvLyBTZXRzIGNyeXB0byByZWxhdGVkIG9wdGlvbnMsIGUuZy4gZW5hYmxl
ZCBjaXBoZXIgc3VpdGVzLgotICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uczsK
KyAgICBDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zID0gQ3J5cHRvT3B0aW9uczo6Tm9HY20o
KTsKICAgfTsKIAogICAvLyBTZXQgdGhlIG9wdGlvbnMgdG8gYmUgdXNlZCBmb3Igc3Vic2VxdWVu
dGx5IGNyZWF0ZWQgUGVlckNvbm5lY3Rpb25zLgpAQCAtMTMwNywxMzcgKzEzNzUsNiBAQCBjbGFz
cyBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZDb3VudElu
dGVyZmFjZSB7CiAgIH5QZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UoKSBvdmVycmlkZSA9
IGRlZmF1bHQ7CiB9OwogCi0jaWYgZGVmaW5lZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCi0vLyBD
cmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlLgot
Ly8KLS8vIFRoaXMgbWV0aG9kIHJlbGllcyBvbiB0aGUgdGhyZWFkIGl0J3MgY2FsbGVkIG9uIGFz
IHRoZSAic2lnbmFsaW5nIHRocmVhZCIKLS8vIGZvciB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5
IGl0IGNyZWF0ZXMuCi0vLwotLy8gQXMgc3VjaCwgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5v
dCBhbHJlYWR5IHJ1bm5pbmcgYW4gcnRjOjpUaHJlYWQgbWVzc2FnZQotLy8gbG9vcCwgYW4gYXBw
bGljYXRpb24gdXNpbmcgdGhpcyBtZXRob2QgbXVzdCBldmVudHVhbGx5IGVpdGhlciBjYWxsCi0v
LyBydGM6OlRocmVhZDo6Q3VycmVudCgpLT5SdW4oKSwgb3IgY2FsbAotLy8gcnRjOjpUaHJlYWQ6
OkN1cnJlbnQoKS0+UHJvY2Vzc01lc3NhZ2VzKCkgd2l0aGluIHRoZSBhcHBsaWNhdGlvbidzIG93
bgotLy8gbWVzc2FnZSBsb29wLgotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFj
dG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0g
ICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJf
ZmFjdG9yeSk7Ci0KLS8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZh
Y3RvcnlJbnRlcmZhY2UuCi0vLwotLy8gfG5ldHdvcmtfdGhyZWFkfCwgfHdvcmtlcl90aHJlYWR8
IGFuZCB8c2lnbmFsaW5nX3RocmVhZHwgYXJlCi0vLyB0aGUgb25seSBtYW5kYXRvcnkgcGFyYW1l
dGVycy4KLS8vCi0vLyBJZiBub24tbnVsbCwgYSByZWZlcmVuY2UgaXMgYWRkZWQgdG8gfGRlZmF1
bHRfYWRtfCwgYW5kIG93bmVyc2hpcCBvZgotLy8gfHZpZGVvX2VuY29kZXJfZmFjdG9yeXwgYW5k
IHx2aWRlb19kZWNvZGVyX2ZhY3Rvcnl8IGlzIHRyYW5zZmVycmVkIHRvIHRoZQotLy8gcmV0dXJu
ZWQgZmFjdG9yeS4KLS8vIFRPRE8oZGVhZGJlZWYpOiBVc2UgcnRjOjpzY29wZWRfcmVmcHRyPD4g
YW5kIHN0ZDo6dW5pcXVlX3B0cjw+IHRvIG1ha2UgdGhpcwotLy8gb3duZXJzaGlwIHRyYW5zZmVy
IGFuZCByZWYgY291bnRpbmcgbW9yZSBvYnZpb3VzLgotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJD
b25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAot
ICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2Vy
X3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBBdWRpb0Rl
dmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5j
b2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZw
dHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNr
ZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAg
ICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3Rv
cnkpOwotCi0vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlIHdpdGggb3B0aW9uYWwKLS8vIGV4dGVybmFsIGF1ZGlvIG1peGVkIGFuZCBhdWRp
byBwcm9jZXNzaW5nIG1vZHVsZXMuCi0vLwotLy8gSWYgfGF1ZGlvX21peGVyfCBpcyBudWxsLCBh
biBpbnRlcm5hbCBhdWRpbyBtaXhlciB3aWxsIGJlIGNyZWF0ZWQgYW5kIHVzZWQuCi0vLyBJZiB8
YXVkaW9fcHJvY2Vzc2luZ3wgaXMgbnVsbCwgYW4gaW50ZXJuYWwgYXVkaW8gcHJvY2Vzc2luZyBt
b2R1bGUgd2lsbCBiZQotLy8gY3JlYXRlZCBhbmQgdXNlZC4KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9y
eSgKLSAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdv
cmtlcl90aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgQXVk
aW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBj
cmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3Rvcnks
Ci0gICAgY3JpY2tldDo6V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9m
YWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhlciwK
LSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5n
KTsKLQotLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25uZWN0aW9uRmFjdG9yeUlu
dGVyZmFjZSB3aXRoIG9wdGlvbmFsCi0vLyBleHRlcm5hbCBhdWRpbyBtaXhlciwgYXVkaW8gcHJv
Y2Vzc2luZywgYW5kIGZlYyBjb250cm9sbGVyIG1vZHVsZXMuCi0vLwotLy8gSWYgfGF1ZGlvX21p
eGVyfCBpcyBudWxsLCBhbiBpbnRlcm5hbCBhdWRpbyBtaXhlciB3aWxsIGJlIGNyZWF0ZWQgYW5k
IHVzZWQuCi0vLyBJZiB8YXVkaW9fcHJvY2Vzc2luZ3wgaXMgbnVsbCwgYW4gaW50ZXJuYWwgYXVk
aW8gcHJvY2Vzc2luZyBtb2R1bGUgd2lsbCBiZQotLy8gY3JlYXRlZCBhbmQgdXNlZC4KLS8vIElm
IHxmZWNfY29udHJvbGxlcl9mYWN0b3J5fCBpcyBudWxsLCBhbiBpbnRlcm5hbCBmZWMgY29udHJv
bGxlciBtb2R1bGUgd2lsbAotLy8gYmUgY3JlYXRlZCBhbmQgdXNlZC4KLS8vIElmIHxuZXR3b3Jr
X2NvbnRyb2xsZXJfZmFjdG9yeXwgaXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdXNlZCBpZiBlbmFi
bGVkIHZpYQotLy8gZmllbGQgdHJpYWwuCi1ydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rp
b25GYWN0b3J5SW50ZXJmYWNlPiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCi0gICAgcnRj
OjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFk
LAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgIEF1ZGlvRGV2aWNlTW9k
dWxlKiBkZWZhdWx0X2FkbSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFj
dG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2Vi
UnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNr
ZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKLSAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCi0gICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZywKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+IGZlY19jb250cm9sbGVy
X2ZhY3RvcnksCi0gICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250cm9sbGVyRmFjdG9yeUlu
dGVyZmFjZT4KLSAgICAgICAgbmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnkgPSBudWxscHRyKTsK
LSNlbmRpZgotCi0vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0
b3J5SW50ZXJmYWNlIHdpdGggb3B0aW9uYWwgdmlkZW8KLS8vIGNvZGVjIGZhY3Rvcmllcy4gVGhl
c2UgdmlkZW8gZmFjdG9yaWVzIHJlcHJlc2VudHMgYWxsIHZpZGVvIGNvZGVjcywgaS5lLiBubwot
Ly8gZXh0cmEgaW50ZXJuYWwgdmlkZW8gY29kZWNzIHdpbGwgYmUgYWRkZWQuCi0vLyBXaGVuIGJ1
aWxkaW5nIFdlYlJUQyB3aXRoIHJ0Y191c2VfYnVpbHRpbl9zd19jb2RlY3MgPSBmYWxzZSwgdGhp
cyBpcyB0aGUKLS8vIG9ubHkgYXZhaWxhYmxlIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSBv
dmVybG9hZC4KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICBydGM6OlRocmVhZCogbmV0d29y
a190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgcnRjOjpUaHJl
YWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNl
TW9kdWxlPiBkZWZhdWx0X2FkbSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVy
RmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxB
dWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9yeT4gdmlkZW9fZGVjb2Rlcl9mYWN0b3J5
LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhlciwKLSAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nKTsKLQot
I2lmIGRlZmluZWQoVVNFX0JVSUxUSU5fU1dfQ09ERUNTKQotLy8gQ3JlYXRlIGEgbmV3IGluc3Rh
bmNlIG9mIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSB3aXRoIGV4dGVybmFsIGF1ZGlv
Ci0vLyBtaXhlci4KLS8vCi0vLyBJZiB8YXVkaW9fbWl4ZXJ8IGlzIG51bGwsIGFuIGludGVybmFs
IGF1ZGlvIG1peGVyIHdpbGwgYmUgY3JlYXRlZCBhbmQgdXNlZC4KLXJ0Yzo6c2NvcGVkX3JlZnB0
cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+Ci1DcmVhdGVQZWVyQ29ubmVjdGlvbkZh
Y3RvcnlXaXRoQXVkaW9NaXhlcigKLSAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0g
ICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHNpZ25hbGlu
Z190aHJlYWQsCi0gICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRtLAotICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3Rvcnks
Ci0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29k
ZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRl
b19lbmNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9y
eSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01p
eGVyPiBhdWRpb19taXhlcik7Ci0KLS8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29u
bmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UuCi0vLyBTYW1lIHRocmVhZCBpcyB1c2VkIGFzIHdvcmtl
ciBhbmQgbmV0d29yayB0aHJlYWQuCi1pbmxpbmUgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25u
ZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KLUNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAg
ICBydGM6OlRocmVhZCogd29ya2VyX2FuZF9uZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVh
ZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0s
Ci0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29k
ZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4g
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZh
Y3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0Rl
Y29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkpIHsKLSAgcmV0dXJuIENyZWF0ZVBl
ZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICAgIHdvcmtlcl9hbmRfbmV0d29ya190aHJlYWQsIHdv
cmtlcl9hbmRfbmV0d29ya190aHJlYWQsIHNpZ25hbGluZ190aHJlYWQsCi0gICAgICBkZWZhdWx0
X2FkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAg
ICB2aWRlb19lbmNvZGVyX2ZhY3RvcnksIHZpZGVvX2RlY29kZXJfZmFjdG9yeSk7Ci19Ci0jZW5k
aWYKLQogLy8gVGhpcyBpcyBhIGxvd2VyLWxldmVsIHZlcnNpb24gb2YgdGhlIENyZWF0ZVBlZXJD
b25uZWN0aW9uRmFjdG9yeSBmdW5jdGlvbnMKIC8vIGFib3ZlLiBJdCdzIGltcGxlbWVudGVkIGlu
IHRoZSAicGVlcmNvbm5lY3Rpb24iIGJ1aWxkIHRhcmdldCwgd2hlcmVhcyB0aGUKIC8vIGFib3Zl
IG1ldGhvZHMgYXJlIG9ubHkgaW1wbGVtZW50ZWQgaW4gdGhlIGJyb2FkZXIgImxpYmppbmdsZV9w
ZWVyY29ubmVjdGlvbiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9wcm94eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9wcm94eS5jYwppbmRleCBjODZiZGRmYThiMWE5NDZkMDEwYzNlZjky
ZTdlZmI0MGRmODg3N2YwLi5lNjY4Mjg1YmEyOWJhNjFkM2E3Mjc1OTkwZGVhODkwZjc2ZDBlMjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvcHJveHkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3Byb3h5LmNjCkBAIC0xNCw3ICsxNCw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogbmFt
ZXNwYWNlIGludGVybmFsIHsKIAogU3luY2hyb25vdXNNZXRob2RDYWxsOjpTeW5jaHJvbm91c01l
dGhvZENhbGwocnRjOjpNZXNzYWdlSGFuZGxlciogcHJveHkpCi0gICAgOiBlXygpLCBwcm94eV8o
cHJveHkpIHt9CisgICAgOiBwcm94eV8ocHJveHkpIHt9CiAKIFN5bmNocm9ub3VzTWV0aG9kQ2Fs
bDo6flN5bmNocm9ub3VzTWV0aG9kQ2FsbCgpID0gZGVmYXVsdDsKIApAQCAtMjMsMTUgKzIzLDE0
IEBAIHZvaWQgU3luY2hyb25vdXNNZXRob2RDYWxsOjpJbnZva2UoY29uc3QgcnRjOjpMb2NhdGlv
biYgcG9zdGVkX2Zyb20sCiAgIGlmICh0LT5Jc0N1cnJlbnQoKSkgewogICAgIHByb3h5Xy0+T25N
ZXNzYWdlKG51bGxwdHIpOwogICB9IGVsc2UgewotICAgIGVfLnJlc2V0KG5ldyBydGM6OkV2ZW50
KGZhbHNlLCBmYWxzZSkpOwogICAgIHQtPlBvc3QocG9zdGVkX2Zyb20sIHRoaXMsIDApOwotICAg
IGVfLT5XYWl0KHJ0Yzo6RXZlbnQ6OmtGb3JldmVyKTsKKyAgICBlXy5XYWl0KHJ0Yzo6RXZlbnQ6
OmtGb3JldmVyKTsKICAgfQogfQogCiB2b2lkIFN5bmNocm9ub3VzTWV0aG9kQ2FsbDo6T25NZXNz
YWdlKHJ0Yzo6TWVzc2FnZSopIHsKICAgcHJveHlfLT5Pbk1lc3NhZ2UobnVsbHB0cik7Ci0gIGVf
LT5TZXQoKTsKKyAgZV8uU2V0KCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3By
b3h5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcHJv
eHkuaAppbmRleCBjODk2MmVmZWQ3YzhkMmM5MDNlZWJlNzBlYzBmNTUwOTkyN2YxOTdlLi45OTE2
MDUxN2RlZWJkNzljZDMzZDM3MWZlYmUyMWM0YTc3MTBjYWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcHJveHkuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcHJveHkuaApAQCAtMTQz
LDcgKzE0Myw3IEBAIGNsYXNzIFN5bmNocm9ub3VzTWV0aG9kQ2FsbCA6IHB1YmxpYyBydGM6Ok1l
c3NhZ2VEYXRhLAogIHByaXZhdGU6CiAgIHZvaWQgT25NZXNzYWdlKHJ0Yzo6TWVzc2FnZSopIG92
ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkV2ZW50PiBlXzsKKyAgcnRjOjpFdmVu
dCBlXzsKICAgcnRjOjpNZXNzYWdlSGFuZGxlciogcHJveHlfOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cF9oZWFkZXJz
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cF9o
ZWFkZXJzLmNjCmluZGV4IGRhN2YxZWE5ZmQ0MDAyZjc3MjM0MjM5MDU4MTE2ZTlkODY3YmZkYmEu
LmJmOTczYjZmZTU3NzFkNDIzNjFhZGI4MzY5YjMwY2Q5YjJiMzcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBfaGVhZGVycy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRw
X2hlYWRlcnMuY2MKQEAgLTEwLDE0ICsxMCw2IEBACiAKICNpbmNsdWRlICJhcGkvcnRwX2hlYWRl
cnMuaCIKIAotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNs
dWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8dHlwZV90cmFpdHM+Ci0KLSNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgotCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIAogUlRQSGVhZGVyRXh0ZW5zaW9uOjpSVFBIZWFkZXJFeHRlbnNpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3J0cF9oZWFkZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvcnRwX2hlYWRlcnMuaAppbmRleCA0MWYzOTg4OGI4MDgxYTZiZmI5MzU5MDdmM2IyY2Q0
YTRkNzgzZGJhLi5jNzY2ODk5YjlmZDg4ZjRhMmMyZWU5MDkwZjdmOGNiNjllOTQ2MmJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRw
X2hlYWRlcnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvcnRwX2hlYWRlcnMuaApAQCAtMTIsMjAgKzEyLDE3IEBACiAjZGVmaW5lIEFQSV9SVFBf
SEVBREVSU19IXwogCiAjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAj
aW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4K
IAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlf
dmlldy5oIgorI2luY2x1ZGUgImFwaS92aWRlby9jb2xvcl9zcGFjZS5oIgogI2luY2x1ZGUgImFw
aS92aWRlby92aWRlb19jb250ZW50X3R5cGUuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9f
ZnJhbWVfbWFya2luZy5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19yb3RhdGlvbi5oIgog
I2luY2x1ZGUgImFwaS92aWRlby92aWRlb190aW1pbmcuaCIKLQogI2luY2x1ZGUgImNvbW1vbl90
eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZGVwcmVjYXRpb24uaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKQEAgLTEzMSw2ICsxMjgsOCBAQCBzdHJ1Y3QgUlRQSGVhZGVyRXh0ZW5zaW9uIHsK
ICAgLy8gRm9yIGlkZW50aWZ5aW5nIHRoZSBtZWRpYSBzZWN0aW9uIHVzZWQgdG8gaW50ZXJwcmV0
IHRoaXMgUlRQIHBhY2tldC4gU2VlCiAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9k
cmFmdC1pZXRmLW1tdXNpYy1zZHAtYnVuZGxlLW5lZ290aWF0aW9uLTM4CiAgIE1pZCBtaWQ7CisK
KyAgYWJzbDo6b3B0aW9uYWw8Q29sb3JTcGFjZT4gY29sb3Jfc3BhY2U7CiB9OwogCiBzdHJ1Y3Qg
UlRQSGVhZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9ydHBwYXJhbWV0ZXJzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHBhcmFtZXRlcnMuY2MKaW5kZXggOThjZWQ5YjNlYWQz
NWJlZDhmN2M5YjM3ZDRkMjEwYzVhZWE2YmZiMC4uMDYzZDEwNmEwMGE1OTAxNDkyYWIxN2FhOGEw
ZmFkMDE1NzFlZmYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3J0cHBhcmFtZXRlcnMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHBhcmFtZXRlcnMuY2MKQEAgLTEyLDcgKzEy
LDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3J0cHBhcmFtZXRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9ydHBwYXJhbWV0ZXJzLmgKaW5kZXggNjc4YWMwMmM0YjdkYTdkYzVhM2Jj
YWE1MDExZTM5NDUyZTdlZTE5Ny4uYmFkZGEwNzQ1OTlhOTNiYjVkYTMyNWJiZWZkZDc4M2IwN2Zm
MWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3J0cHBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvcnRwcGFyYW1ldGVycy5oCkBAIC0xMSwxMiArMTEsMTQgQEAKICNp
Zm5kZWYgQVBJX1JUUFBBUkFNRVRFUlNfSF8KICNkZWZpbmUgQVBJX1JUUFBBUkFNRVRFUlNfSF8K
IAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx1bm9y
ZGVyZWRfbWFwPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvbWVkaWF0eXBlcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC00MDQsNiAr
NDA2LDE0IEBAIHN0cnVjdCBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgewogICAvLyBiaXRyYXRlIHBy
aW9yaXR5LgogICBkb3VibGUgYml0cmF0ZV9wcmlvcml0eSA9IGtEZWZhdWx0Qml0cmF0ZVByaW9y
aXR5OwogCisgIC8vIFRoZSByZWxhdGl2ZSBEaWZmU2VydiBDb2RlIFBvaW50IHByaW9yaXR5IGZv
ciB0aGlzIGVuY29kaW5nLCBhbGxvd2luZworICAvLyBwYWNrZXRzIHRvIGJlIG1hcmtlZCByZWxh
dGl2ZWx5IGhpZ2hlciBvciBsb3dlciB3aXRob3V0IGFmZmVjdGluZworICAvLyBiYW5kd2lkdGgg
YWxsb2NhdGlvbnMuIFNlZSBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLWRzY3AtZXhwLyAu
IE5CCisgIC8vIHdlIGZvbGxvdyBjaHJvbWl1bSdzIHRyYW5zbGF0aW9uIG9mIHRoZSBhbGxvd2Vk
IHN0cmluZyBlbnVtIHZhbHVlcyBmb3IKKyAgLy8gdGhpcyBmaWVsZCB0byAxLjAsIDAuNSwgZXQg
Y2V0ZXJhLCBzaW1pbGFyIHRvIGJpdHJhdGVfcHJpb3JpdHkgYWJvdmUuCisgIC8vIFRPRE8oaHR0
cDovL2NyYnVnLmNvbS93ZWJydGMvODYzMCk6IEltcGxlbWVudCB0aGlzIHBlciBlbmNvZGluZyBw
YXJhbWV0ZXIuCisgIGRvdWJsZSBuZXR3b3JrX3ByaW9yaXR5ID0ga0RlZmF1bHRCaXRyYXRlUHJp
b3JpdHk7CisKICAgLy8gSW5kaWNhdGVzIHRoZSBwcmVmZXJyZWQgZHVyYXRpb24gb2YgbWVkaWEg
cmVwcmVzZW50ZWQgYnkgYSBwYWNrZXQgaW4KICAgLy8gbWlsbGlzZWNvbmRzIGZvciB0aGlzIGVu
Y29kaW5nLiBJZiBzZXQsIHRoaXMgd2lsbCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUKICAgLy8g
cHRpbWUgc2V0IGluIHRoZSBSdHBDb2RlY1BhcmFtZXRlcnMuIFRoaXMgY291bGQgaGFwcGVuIGlm
IFNEUCBuZWdvdGlhdGlvbgpAQCAtNDcxLDcgKzQ4MSw4IEBAIHN0cnVjdCBSdHBFbmNvZGluZ1Bh
cmFtZXRlcnMgewogICBib29sIG9wZXJhdG9yPT0oY29uc3QgUnRwRW5jb2RpbmdQYXJhbWV0ZXJz
JiBvKSBjb25zdCB7CiAgICAgcmV0dXJuIHNzcmMgPT0gby5zc3JjICYmIGNvZGVjX3BheWxvYWRf
dHlwZSA9PSBvLmNvZGVjX3BheWxvYWRfdHlwZSAmJgogICAgICAgICAgICBmZWMgPT0gby5mZWMg
JiYgcnR4ID09IG8ucnR4ICYmIGR0eCA9PSBvLmR0eCAmJgotICAgICAgICAgICBiaXRyYXRlX3By
aW9yaXR5ID09IG8uYml0cmF0ZV9wcmlvcml0eSAmJiBwdGltZSA9PSBvLnB0aW1lICYmCisgICAg
ICAgICAgIGJpdHJhdGVfcHJpb3JpdHkgPT0gby5iaXRyYXRlX3ByaW9yaXR5ICYmCisgICAgICAg
ICAgIG5ldHdvcmtfcHJpb3JpdHkgPT0gby5uZXR3b3JrX3ByaW9yaXR5ICYmIHB0aW1lID09IG8u
cHRpbWUgJiYKICAgICAgICAgICAgbWF4X2JpdHJhdGVfYnBzID09IG8ubWF4X2JpdHJhdGVfYnBz
ICYmCiAgICAgICAgICAgIG1pbl9iaXRyYXRlX2JwcyA9PSBvLm1pbl9iaXRyYXRlX2JwcyAmJgog
ICAgICAgICAgICBtYXhfZnJhbWVyYXRlID09IG8ubWF4X2ZyYW1lcmF0ZSAmJgpAQCAtNjA3LDcg
KzYxOCw3IEBAIHN0cnVjdCBSdGNwUGFyYW1ldGVycyBmaW5hbCB7CiAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBSdGNwUGFyYW1ldGVycyYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsg
fQogfTsKIAotc3RydWN0IFJ0cFBhcmFtZXRlcnMgeworc3RydWN0IFJUQ19FWFBPUlQgUnRwUGFy
YW1ldGVycyB7CiAgIFJ0cFBhcmFtZXRlcnMoKTsKICAgUnRwUGFyYW1ldGVycyhjb25zdCBSdHBQ
YXJhbWV0ZXJzJik7CiAgIH5SdHBQYXJhbWV0ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwc2VuZGVyaW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwc2VuZGVy
aW50ZXJmYWNlLmgKaW5kZXggOTU1NGMxYzRkYTc5NzM1NTQ3Y2FlYmQyODQwMTgxNjk5NzQyMGQ4
Yy4uN2M5NGMyMTZlNjRlZmJlYjVjNDYyOGJlYmU2OTI1YTZmNTAyM2UxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHNlbmRlcmlu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9ydHBzZW5kZXJpbnRlcmZhY2UuaApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgImFw
aS9wcm94eS5oIgogI2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgogI2luY2x1ZGUgImFwaS9ydHBw
YXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZGVwcmVjYXRpb24uaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9yZWZjb3VudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRy
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVyZmFjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVyZmFjZS5jYwppbmRl
eCBkODMzMzM5ZmE2NjQ2ODUwZmFhOWJlMjJlOTk4MDZhYmQ4MWMzZWJlLi5lNjJiMDE0YzY1NjQz
MzVmNzA2OTQxMTVkZjk4ODY2MGFhYzQzNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwdHJhbnNjZWl2ZXJpbnRlcmZhY2UuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHRy
YW5zY2VpdmVyaW50ZXJmYWNlLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJhcGkv
cnRwdHJhbnNjZWl2ZXJpbnRlcmZhY2UuaCIKIAorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogUnRwVHJhbnNjZWl2ZXJJbml0OjpSdHBUcmFuc2Nl
aXZlckluaXQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwdHJhbnNjZWl2ZXJpbnRlcmZhY2UuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmlu
dGVyZmFjZS5oCmluZGV4IDMwMWEzODA5ZjhiNGRlZjNlNzZkNTY5NTA4MDY0YjQwM2QyNThhNmIu
LmMwMWZkYWZiODMyM2NmOTFiYmI1NTdmZDJiZjI3MmE0NWVlNjExNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZl
cmludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVyZmFjZS5oCkBAIC0xNiw5ICsxNiwxMiBAQAogCiAj
aW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3
LmgiCisjaW5jbHVkZSAiYXBpL21lZGlhdHlwZXMuaCIKKyNpbmNsdWRlICJhcGkvcnRwcGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgImFwaS9ydHByZWNlaXZlcmludGVyZmFjZS5oIgogI2luY2x1ZGUg
ImFwaS9ydHBzZW5kZXJpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvc2NvcGVkX3JlZnB0ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3Njb3BlZF9yZWZwdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTkzZTAzMmNjNzI0
OWFlMDYwYmJmODMyOTIxMzVkMmU3ZmMyOTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Njb3BlZF9yZWZwdHIuaApAQCAt
MCwwICsxLDE2MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxMSBUaGUgV2ViUlRDIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworLy8gT3JpZ2luYWxseSB0aGVzZSBj
bGFzc2VzIGFyZSBmcm9tIENocm9taXVtLgorLy8gaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvdmll
d3ZjL2Nocm9tZS90cnVuay9zcmMvYmFzZS9tZW1vcnkvcmVmX2NvdW50ZWQuaD92aWV3PW1hcmt1
cAorCisvLworLy8gQSBzbWFydCBwb2ludGVyIGNsYXNzIGZvciByZWZlcmVuY2UgY291bnRlZCBv
YmplY3RzLiAgVXNlIHRoaXMgY2xhc3MgaW5zdGVhZAorLy8gb2YgY2FsbGluZyBBZGRSZWYgYW5k
IFJlbGVhc2UgbWFudWFsbHkgb24gYSByZWZlcmVuY2UgY291bnRlZCBvYmplY3QgdG8KKy8vIGF2
b2lkIGNvbW1vbiBtZW1vcnkgbGVha3MgY2F1c2VkIGJ5IGZvcmdldHRpbmcgdG8gUmVsZWFzZSBh
biBvYmplY3QKKy8vIHJlZmVyZW5jZS4gIFNhbXBsZSB1c2FnZToKKy8vCisvLyAgIGNsYXNzIE15
Rm9vIDogcHVibGljIFJlZkNvdW50ZWQ8TXlGb28+IHsKKy8vICAgIC4uLgorLy8gICB9OworLy8K
Ky8vICAgdm9pZCBzb21lX2Z1bmN0aW9uKCkgeworLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+
IGZvbyA9IG5ldyBNeUZvbygpOworLy8gICAgIGZvby0+TWV0aG9kKHBhcmFtKTsKKy8vICAgICAv
LyB8Zm9vfCBpcyByZWxlYXNlZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucworLy8gICB9Cisv
LworLy8gICB2b2lkIHNvbWVfb3RoZXJfZnVuY3Rpb24oKSB7CisvLyAgICAgc2NvcGVkX3JlZnB0
cjxNeUZvbz4gZm9vID0gbmV3IE15Rm9vKCk7CisvLyAgICAgLi4uCisvLyAgICAgZm9vID0gbnVs
bHB0cjsgIC8vIGV4cGxpY2l0bHkgcmVsZWFzZXMgfGZvb3wKKy8vICAgICAuLi4KKy8vICAgICBp
ZiAoZm9vKQorLy8gICAgICAgZm9vLT5NZXRob2QocGFyYW0pOworLy8gICB9CisvLworLy8gVGhl
IGFib3ZlIGV4YW1wbGVzIHNob3cgaG93IHNjb3BlZF9yZWZwdHI8VD4gYWN0cyBsaWtlIGEgcG9p
bnRlciB0byBULgorLy8gR2l2ZW4gdHdvIHNjb3BlZF9yZWZwdHI8VD4gY2xhc3NlcywgaXQgaXMg
YWxzbyBwb3NzaWJsZSB0byBleGNoYW5nZQorLy8gcmVmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28g
b2JqZWN0cywgbGlrZSBzbzoKKy8vCisvLyAgIHsKKy8vICAgICBzY29wZWRfcmVmcHRyPE15Rm9v
PiBhID0gbmV3IE15Rm9vKCk7CisvLyAgICAgc2NvcGVkX3JlZnB0cjxNeUZvbz4gYjsKKy8vCisv
LyAgICAgYi5zd2FwKGEpOworLy8gICAgIC8vIG5vdywgfGJ8IHJlZmVyZW5jZXMgdGhlIE15Rm9v
IG9iamVjdCwgYW5kIHxhfCByZWZlcmVuY2VzIG51bGwuCisvLyAgIH0KKy8vCisvLyBUbyBtYWtl
IGJvdGggfGF8IGFuZCB8YnwgaW4gdGhlIGFib3ZlIGV4YW1wbGUgcmVmZXJlbmNlIHRoZSBzYW1l
IE15Rm9vCisvLyBvYmplY3QsIHNpbXBseSB1c2UgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3I6Cisv
LworLy8gICB7CisvLyAgICAgc2NvcGVkX3JlZnB0cjxNeUZvbz4gYSA9IG5ldyBNeUZvbygpOwor
Ly8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+IGI7CisvLworLy8gICAgIGIgPSBhOworLy8gICAg
IC8vIG5vdywgfGF8IGFuZCB8YnwgZWFjaCBvd24gYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgTXlG
b28gb2JqZWN0LgorLy8gICB9CisvLworCisjaWZuZGVmIEFQSV9TQ09QRURfUkVGUFRSX0hfCisj
ZGVmaW5lIEFQSV9TQ09QRURfUkVGUFRSX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSA8dXRpbGl0eT4KKworbmFtZXNwYWNlIHJ0YyB7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorY2xh
c3Mgc2NvcGVkX3JlZnB0ciB7CisgcHVibGljOgorICBzY29wZWRfcmVmcHRyKCkgOiBwdHJfKG51
bGxwdHIpIHt9CisKKyAgc2NvcGVkX3JlZnB0cihUKiBwKSA6IHB0cl8ocCkgeyAgLy8gTk9MSU5U
KHJ1bnRpbWUvZXhwbGljaXQpCisgICAgaWYgKHB0cl8pCisgICAgICBwdHJfLT5BZGRSZWYoKTsK
KyAgfQorCisgIHNjb3BlZF9yZWZwdHIoY29uc3Qgc2NvcGVkX3JlZnB0cjxUPiYgcikgOiBwdHJf
KHIucHRyXykgeworICAgIGlmIChwdHJfKQorICAgICAgcHRyXy0+QWRkUmVmKCk7CisgIH0KKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc2NvcGVkX3JlZnB0cihjb25zdCBzY29wZWRfcmVm
cHRyPFU+JiByKSA6IHB0cl8oci5nZXQoKSkgeworICAgIGlmIChwdHJfKQorICAgICAgcHRyXy0+
QWRkUmVmKCk7CisgIH0KKworICAvLyBNb3ZlIGNvbnN0cnVjdG9ycy4KKyAgc2NvcGVkX3JlZnB0
cihzY29wZWRfcmVmcHRyPFQ+JiYgcikgOiBwdHJfKHIucmVsZWFzZSgpKSB7fQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPgorICBzY29wZWRfcmVmcHRyKHNjb3BlZF9yZWZwdHI8VT4mJiByKSA6
IHB0cl8oci5yZWxlYXNlKCkpIHt9CisKKyAgfnNjb3BlZF9yZWZwdHIoKSB7CisgICAgaWYgKHB0
cl8pCisgICAgICBwdHJfLT5SZWxlYXNlKCk7CisgIH0KKworICBUKiBnZXQoKSBjb25zdCB7IHJl
dHVybiBwdHJfOyB9CisgIG9wZXJhdG9yIFQqKCkgY29uc3QgeyByZXR1cm4gcHRyXzsgfQorICBU
KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gcHRyXzsgfQorCisgIC8vIFJldHVybnMgdGhl
IChwb3NzaWJseSBudWxsKSByYXcgcG9pbnRlciwgYW5kIG1ha2VzIHRoZSBzY29wZWRfcmVmcHRy
IGhvbGQgYQorICAvLyBudWxsIHBvaW50ZXIsIGFsbCB3aXRob3V0IHRvdWNoaW5nIHRoZSByZWZl
cmVuY2UgY291bnQgb2YgdGhlIHVuZGVybHlpbmcKKyAgLy8gcG9pbnRlZC10byBvYmplY3QuIFRo
ZSBvYmplY3QgaXMgc3RpbGwgcmVmZXJlbmNlIGNvdW50ZWQsIGFuZCB0aGUgY2FsbGVyIG9mCisg
IC8vIHJlbGVhc2UoKSBpcyBub3cgdGhlIHByb3VkIG93bmVyIG9mIG9uZSByZWZlcmVuY2UsIHNv
IGl0IGlzIHJlc3BvbnNpYmxlIGZvcgorICAvLyBjYWxsaW5nIFJlbGVhc2UoKSBvbmNlIG9uIHRo
ZSBvYmplY3Qgd2hlbiBubyBsb25nZXIgdXNpbmcgaXQuCisgIFQqIHJlbGVhc2UoKSB7CisgICAg
VCogcmV0VmFsID0gcHRyXzsKKyAgICBwdHJfID0gbnVsbHB0cjsKKyAgICByZXR1cm4gcmV0VmFs
OworICB9CisKKyAgc2NvcGVkX3JlZnB0cjxUPiYgb3BlcmF0b3I9KFQqIHApIHsKKyAgICAvLyBB
ZGRSZWYgZmlyc3Qgc28gdGhhdCBzZWxmIGFzc2lnbm1lbnQgc2hvdWxkIHdvcmsKKyAgICBpZiAo
cCkKKyAgICAgIHAtPkFkZFJlZigpOworICAgIGlmIChwdHJfKQorICAgICAgcHRyXy0+UmVsZWFz
ZSgpOworICAgIHB0cl8gPSBwOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIHNjb3BlZF9y
ZWZwdHI8VD4mIG9wZXJhdG9yPShjb25zdCBzY29wZWRfcmVmcHRyPFQ+JiByKSB7CisgICAgcmV0
dXJuICp0aGlzID0gci5wdHJfOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHNj
b3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShjb25zdCBzY29wZWRfcmVmcHRyPFU+JiByKSB7Cisg
ICAgcmV0dXJuICp0aGlzID0gci5nZXQoKTsKKyAgfQorCisgIHNjb3BlZF9yZWZwdHI8VD4mIG9w
ZXJhdG9yPShzY29wZWRfcmVmcHRyPFQ+JiYgcikgeworICAgIHNjb3BlZF9yZWZwdHI8VD4oc3Rk
Ojptb3ZlKHIpKS5zd2FwKCp0aGlzKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVT4KKyAgc2NvcGVkX3JlZnB0cjxUPiYgb3BlcmF0b3I9KHNjb3BlZF9y
ZWZwdHI8VT4mJiByKSB7CisgICAgc2NvcGVkX3JlZnB0cjxUPihzdGQ6Om1vdmUocikpLnN3YXAo
KnRoaXMpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIHZvaWQgc3dhcChUKiogcHApIHsK
KyAgICBUKiBwID0gcHRyXzsKKyAgICBwdHJfID0gKnBwOworICAgICpwcCA9IHA7CisgIH0KKwor
ICB2b2lkIHN3YXAoc2NvcGVkX3JlZnB0cjxUPiYgcikgeyBzd2FwKCZyLnB0cl8pOyB9CisKKyBw
cm90ZWN0ZWQ6CisgIFQqIHB0cl87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcnRjCisKKyNlbmRp
ZiAgLy8gQVBJX1NDT1BFRF9SRUZQVFJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9zdGF0cy9ydGNzdGF0cy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzLmgKaW5k
ZXggMTcwNWY2YWI1OGVlNzlkZGY2OWE1YTU3NmY2NWY3MmQyZWFhMGY2ZS4uN2ZkMGQ4NGUwYmIx
NDU1ODFiNzhjNWIyMDU5ZjdkOTgwYTY1OTcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRz
LmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtNDcsNyArNDgsNyBAQCBjbGFzcyBSVENTdGF0c01l
bWJlckludGVyZmFjZTsKIC8vIGZvciAoY29uc3QgUlRDU3RhdHNNZW1iZXJJbnRlcmZhY2UqIG1l
bWJlciA6IGZvby5NZW1iZXJzKCkpIHsKIC8vICAgcHJpbnRmKCIlcyA9ICVzXG4iLCBtZW1iZXIt
Pm5hbWUoKSwgbWVtYmVyLT5WYWx1ZVRvU3RyaW5nKCkuY19zdHIoKSk7CiAvLyB9Ci1jbGFzcyBS
VENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFJUQ1N0
YXRzKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwgaW50NjRfdCB0aW1lc3RhbXBfdXMpCiAgICAgICA6
IGlkXyhpZCksIHRpbWVzdGFtcF91c18odGltZXN0YW1wX3VzKSB7fQpAQCAtMjQ3LDcgKzI0OCw3
IEBAIGNsYXNzIFJUQ1N0YXRzTWVtYmVySW50ZXJmYWNlIHsKIC8vICh1bmRlZmluZWQgcmVmZXJl
bmNlIHRvIHxrVHlwZXwpLiBUaGUgc3VwcG9ydGVkIHR5cGVzIGFyZSB0aGUgb25lcyBkZXNjcmli
ZWQKIC8vIGJ5IHxSVENTdGF0c01lbWJlckludGVyZmFjZTo6VHlwZXwuCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLWNsYXNzIFJUQ1N0YXRzTWVtYmVyIDogcHVibGljIFJUQ1N0YXRzTWVtYmVySW50
ZXJmYWNlIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDU3RhdHNNZW1iZXIgOiBwdWJsaWMgUlRDU3Rh
dHNNZW1iZXJJbnRlcmZhY2UgewogIHB1YmxpYzoKICAgc3RhdGljIGNvbnN0IFR5cGUga1R5cGU7
CiAKQEAgLTI5NCwxNSArMjk1LDYgQEAgY2xhc3MgUlRDU3RhdHNNZW1iZXIgOiBwdWJsaWMgUlRD
U3RhdHNNZW1iZXJJbnRlcmZhY2UgewogICAgIGlzX2RlZmluZWRfID0gdHJ1ZTsKICAgICByZXR1
cm4gdmFsdWVfOwogICB9Ci0gIFQmIG9wZXJhdG9yPShjb25zdCBSVENTdGF0c01lbWJlcjxUPiYg
b3RoZXIpIHsKLSAgICBSVENfRENIRUNLKG90aGVyLmlzX2RlZmluZWRfKTsKLSAgICAvLyBTaG91
bGRuJ3QgYmUgYXR0ZW1wdGluZyB0byBhc3NpZ24gYW4gUlRDTm9uU3RhbmRhcmRTdGF0c01lbWJl
ciB0byBhbgotICAgIC8vIFJUQ1N0YXRzTWVtYmVyIG9yIHZpY2UgdmVyc2EuCi0gICAgUlRDX0RD
SEVDSyhpc19zdGFuZGFyZGl6ZWQoKSA9PSBvdGhlci5pc19zdGFuZGFyZGl6ZWQoKSk7Ci0gICAg
dmFsdWVfID0gb3RoZXIudmFsdWVfOwotICAgIGlzX2RlZmluZWRfID0gdHJ1ZTsKLSAgICByZXR1
cm4gdmFsdWVfOwotICB9CiAKICAgLy8gVmFsdWUgZ2V0dGVycy4KICAgVCYgb3BlcmF0b3IqKCkg
ewpAQCAtMzQ3LDYgKzMzOSwxMSBAQCBjbGFzcyBSVENOb25TdGFuZGFyZFN0YXRzTWVtYmVyIDog
cHVibGljIFJUQ1N0YXRzTWVtYmVyPFQ+IHsKICAgICAgIDogUlRDU3RhdHNNZW1iZXI8VD4oc3Rk
Ojptb3ZlKG90aGVyKSkge30KIAogICBib29sIGlzX3N0YW5kYXJkaXplZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgVCYgb3BlcmF0b3I9KGNvbnN0IFQmIHZhbHVlKSB7
IHJldHVybiBSVENTdGF0c01lbWJlcjxUPjo6b3BlcmF0b3I9KHZhbHVlKTsgfQorICBUJiBvcGVy
YXRvcj0oY29uc3QgVCYmIHZhbHVlKSB7CisgICAgcmV0dXJuIFJUQ1N0YXRzTWVtYmVyPFQ+Ojpv
cGVyYXRvcj0oc3RkOjptb3ZlKHZhbHVlKSk7CisgIH0KIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9zdGF0cy9ydGNzdGF0c19vYmplY3RzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc3RhdHMvcnRjc3RhdHNfb2JqZWN0cy5oCmluZGV4IGYz
Nzc4MDliYTNhNzFkYTYyNTA1OTg3YTFiNTY5Nzc5N2M0ZjU4MDQuLjgzOTIyMzEyMTg5NTMzMzFk
YTUzMmVkOGQyOTE0ZmI1NTRlODIxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9zdGF0cy9ydGNzdGF0c19vYmplY3RzLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0
YXRzX29iamVjdHMuaApAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lu
Y2x1ZGUgImFwaS9zdGF0cy9ydGNzdGF0cy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9y
dGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC03Myw3ICs3NCw3IEBAIHN0
cnVjdCBSVENOZXR3b3JrVHlwZSB7CiB9OwogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2Vi
cnRjLXN0YXRzLyNjZXJ0aWZpY2F0ZXN0YXRzLWRpY3QqCi1jbGFzcyBSVENDZXJ0aWZpY2F0ZVN0
YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDQ2VydGlm
aWNhdGVTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENf
UlRDU1RBVFNfREVDTCgpOwogCkBAIC04OSw3ICs5MCw3IEBAIGNsYXNzIFJUQ0NlcnRpZmljYXRl
U3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgewogfTsKIAogLy8gaHR0cHM6Ly93M2MuZ2l0
aHViLmlvL3dlYnJ0Yy1zdGF0cy8jY29kZWMtZGljdCoKLWNsYXNzIFJUQ0NvZGVjU3RhdHMgZmlu
YWwgOiBwdWJsaWMgUlRDU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENDb2RlY1N0YXRzIGZp
bmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19ERUNM
KCk7CiAKQEAgLTExMCw3ICsxMTEsNyBAQCBjbGFzcyBSVENDb2RlY1N0YXRzIGZpbmFsIDogcHVi
bGljIFJUQ1N0YXRzIHsKIH07CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtc3Rh
dHMvI2Rjc3RhdHMtZGljdCoKLWNsYXNzIFJUQ0RhdGFDaGFubmVsU3RhdHMgZmluYWwgOiBwdWJs
aWMgUlRDU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENEYXRhQ2hhbm5lbFN0YXRzIGZpbmFs
IDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19ERUNMKCk7
CiAKQEAgLTEzMiw3ICsxMzMsNyBAQCBjbGFzcyBSVENEYXRhQ2hhbm5lbFN0YXRzIGZpbmFsIDog
cHVibGljIFJUQ1N0YXRzIHsKIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0
cy8jY2FuZGlkYXRlcGFpci1kaWN0KgogLy8gVE9ETyhoYm9zKTogVHJhY2tpbmcgYnVnIGh0dHBz
Oi8vYnVncy53ZWJydGMub3JnLzcwNjIKLWNsYXNzIFJUQ0ljZUNhbmRpZGF0ZVBhaXJTdGF0cyBm
aW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ0ljZUNhbmRpZGF0
ZVBhaXJTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENf
UlRDU1RBVFNfREVDTCgpOwogCkBAIC0xODYsNyArMTg3LDcgQEAgY2xhc3MgUlRDSWNlQ2FuZGlk
YXRlUGFpclN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKIC8vIGNyYnVnLmNvbS82MzI3
MjMKIC8vIFRPRE8ocWluZ3NpKTogQWRkIHRoZSBzdGF0cyBvZiBTVFVOIGJpbmRpbmcgcmVxdWVz
dHMgKGtlZXBhbGl2ZXMpIGFuZCBjb2xsZWN0CiAvLyB0aGVtIGluIHRoZSBuZXcgUGVlckNvbm5l
Y3Rpb246OkdldFN0YXRzLgotY2xhc3MgUlRDSWNlQ2FuZGlkYXRlU3RhdHMgOiBwdWJsaWMgUlRD
U3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENJY2VDYW5kaWRhdGVTdGF0cyA6IHB1YmxpYyBS
VENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgpOwogCkBAIC0yMjEs
NyArMjIyLDcgQEAgY2xhc3MgUlRDSWNlQ2FuZGlkYXRlU3RhdHMgOiBwdWJsaWMgUlRDU3RhdHMg
ewogLy8gfGtUeXBlfCBuZWVkIHRvIGJlIGRpZmZlcmVudCAoIlJUQ1N0YXRzVHlwZSB0eXBlIikg
aW4gdGhlIGxvY2FsL3JlbW90ZSBjYXNlLgogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0
Yy1zdGF0cy8jcnRjc3RhdHN0eXBlLXN0cioKIC8vIFRoaXMgZm9yY2VzIHVzIHRvIGhhdmUgdG8g
b3ZlcnJpZGUgY29weSgpIGFuZCB0eXBlKCkuCi1jbGFzcyBSVENMb2NhbEljZUNhbmRpZGF0ZVN0
YXRzIGZpbmFsIDogcHVibGljIFJUQ0ljZUNhbmRpZGF0ZVN0YXRzIHsKK2NsYXNzIFJUQ19FWFBP
UlQgUlRDTG9jYWxJY2VDYW5kaWRhdGVTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENJY2VDYW5kaWRh
dGVTdGF0cyB7CiAgcHVibGljOgogICBzdGF0aWMgY29uc3QgY2hhciBrVHlwZVtdOwogICBSVENM
b2NhbEljZUNhbmRpZGF0ZVN0YXRzKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwgaW50NjRfdCB0aW1l
c3RhbXBfdXMpOwpAQCAtMjMwLDcgKzIzMSw4IEBAIGNsYXNzIFJUQ0xvY2FsSWNlQ2FuZGlkYXRl
U3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDSWNlQ2FuZGlkYXRlU3RhdHMgewogICBjb25zdCBjaGFy
KiB0eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCi1jbGFzcyBSVENSZW1vdGVJY2VDYW5kaWRh
dGVTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENJY2VDYW5kaWRhdGVTdGF0cyB7CitjbGFzcyBSVENf
RVhQT1JUIFJUQ1JlbW90ZUljZUNhbmRpZGF0ZVN0YXRzIGZpbmFsCisgICAgOiBwdWJsaWMgUlRD
SWNlQ2FuZGlkYXRlU3RhdHMgewogIHB1YmxpYzoKICAgc3RhdGljIGNvbnN0IGNoYXIga1R5cGVb
XTsKICAgUlRDUmVtb3RlSWNlQ2FuZGlkYXRlU3RhdHMoY29uc3Qgc3RkOjpzdHJpbmcmIGlkLCBp
bnQ2NF90IHRpbWVzdGFtcF91cyk7CkBAIC0yNDEsNyArMjQzLDcgQEAgY2xhc3MgUlRDUmVtb3Rl
SWNlQ2FuZGlkYXRlU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDSWNlQ2FuZGlkYXRlU3RhdHMgewog
CiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNtc3N0YXRzLWRpY3QqCiAv
LyBUT0RPKGhib3MpOiBUcmFja2luZyBidWcgY3JidWcuY29tLzY2MDgyNwotY2xhc3MgUlRDTWVk
aWFTdHJlYW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JU
IFJUQ01lZGlhU3RyZWFtU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgewogIHB1YmxpYzoK
ICAgV0VCUlRDX1JUQ1NUQVRTX0RFQ0woKTsKIApAQCAtMjU2LDcgKzI1OCw3IEBAIGNsYXNzIFJU
Q01lZGlhU3RyZWFtU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgewogCiAvLyBodHRwczov
L3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNtc3RzdGF0cy1kaWN0KgogLy8gVE9ETyhoYm9z
KTogVHJhY2tpbmcgYnVnIGNyYnVnLmNvbS82NTkxMzcKLWNsYXNzIFJUQ01lZGlhU3RyZWFtVHJh
Y2tTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ01l
ZGlhU3RyZWFtVHJhY2tTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgog
ICBXRUJSVENfUlRDU1RBVFNfREVDTCgpOwogCkBAIC0zMDYsMTAgKzMwOCwxNCBAQCBjbGFzcyBS
VENNZWRpYVN0cmVhbVRyYWNrU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgewogICBSVENT
dGF0c01lbWJlcjxkb3VibGU+IHRvdGFsX3NhbXBsZXNfZHVyYXRpb247CiAgIFJUQ1N0YXRzTWVt
YmVyPHVpbnQ2NF90PiBjb25jZWFsZWRfc2FtcGxlczsKICAgUlRDU3RhdHNNZW1iZXI8dWludDY0
X3Q+IGNvbmNlYWxtZW50X2V2ZW50czsKKyAgLy8gTm9uLXN0YW5kYXJkIGF1ZGlvLW9ubHkgbWVt
YmVyCisgIC8vIFRPRE8oa3VkZGFpKTogQWRkIGRlc2NyaXB0aW9uIHRvIHN0YW5kYXJkLiBjcmJ1
Zy5jb20vd2VicnRjLzEwMDQyCisgIFJUQ05vblN0YW5kYXJkU3RhdHNNZW1iZXI8dWludDY0X3Q+
IGppdHRlcl9idWZmZXJfZmx1c2hlczsKKyAgUlRDTm9uU3RhbmRhcmRTdGF0c01lbWJlcjx1aW50
NjRfdD4gZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXM7CiB9OwogCiAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNwY3N0YXRzLWRpY3QqCi1jbGFzcyBSVENQZWVyQ29u
bmVjdGlvblN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQg
UlRDUGVlckNvbm5lY3Rpb25TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGlj
OgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgpOwogCkBAIC0zMjQsNyArMzMwLDcgQEAgY2xhc3Mg
UlRDUGVlckNvbm5lY3Rpb25TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAKIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtc3RhdHMvI3N0cmVhbXN0YXRzLWRpY3QqCiAvLyBU
T0RPKGhib3MpOiBUcmFja2luZyBidWcgY3JidWcuY29tLzY1Nzg1NAotY2xhc3MgUlRDUlRQU3Ry
ZWFtU3RhdHMgOiBwdWJsaWMgUlRDU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENSVFBTdHJl
YW1TdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RBVFNf
REVDTCgpOwogCkBAIC0zNjIsNyArMzY4LDcgQEAgY2xhc3MgUlRDUlRQU3RyZWFtU3RhdHMgOiBw
dWJsaWMgUlRDU3RhdHMgewogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8j
aW5ib3VuZHJ0cHN0YXRzLWRpY3QqCiAvLyBUT0RPKGhib3MpOiBTdXBwb3J0IHRoZSByZW1vdGUg
Y2FzZSB8aXNfcmVtb3RlID0gdHJ1ZXwuCiAvLyBodHRwczovL2J1Z3Mud2VicnRjLm9yZy83MDY1
Ci1jbGFzcyBSVENJbmJvdW5kUlRQU3RyZWFtU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDUlRQU3Ry
ZWFtU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENJbmJvdW5kUlRQU3RyZWFtU3RhdHMgZmlu
YWwgOiBwdWJsaWMgUlRDUlRQU3RyZWFtU3RhdHMgewogIHB1YmxpYzoKICAgV0VCUlRDX1JUQ1NU
QVRTX0RFQ0woKTsKIApAQCAtNDA2LDcgKzQxMiw3IEBAIGNsYXNzIFJUQ0luYm91bmRSVFBTdHJl
YW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENSVFBTdHJlYW1TdGF0cyB7CiAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNvdXRib3VuZHJ0cHN0YXRzLWRpY3QqCiAvLyBUT0RP
KGhib3MpOiBTdXBwb3J0IHRoZSByZW1vdGUgY2FzZSB8aXNfcmVtb3RlID0gdHJ1ZXwuCiAvLyBo
dHRwczovL2J1Z3Mud2VicnRjLm9yZy83MDY2Ci1jbGFzcyBSVENPdXRib3VuZFJUUFN0cmVhbVN0
YXRzIGZpbmFsIDogcHVibGljIFJUQ1JUUFN0cmVhbVN0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQg
UlRDT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENSVFBTdHJlYW1TdGF0
cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgpOwogCkBAIC00MjMsNyArNDI5
LDcgQEAgY2xhc3MgUlRDT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENS
VFBTdHJlYW1TdGF0cyB7CiB9OwogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0
YXRzLyN0cmFuc3BvcnRzdGF0cy1kaWN0KgotY2xhc3MgUlRDVHJhbnNwb3J0U3RhdHMgZmluYWwg
OiBwdWJsaWMgUlRDU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENUcmFuc3BvcnRTdGF0cyBm
aW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RBVFNfREVD
TCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvc3RhdHMvcnRjc3RhdHNyZXBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9zdGF0cy9ydGNzdGF0c3JlcG9ydC5oCmluZGV4IGY3NDEw
YjM5Zjc5YWZmYTIzNzYzNjZlYmNmOTNiZTYxNGFlYzMwMmYuLjhiZjFjYjU3ZDlkNTVhZTUwNDMy
YjI1NjM1NWRkMjFmMjg0ZmI0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9zdGF0cy9ydGNzdGF0c3JlcG9ydC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9zdGF0cy9ydGNzdGF0c3Jl
cG9ydC5oCkBAIC0yMCwxMiArMjAsMTMgQEAKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9zY29wZWRfcmVmX3B0ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhw
b3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBBIGNvbGxlY3Rpb24gb2Ygc3RhdHMu
CiAvLyBUaGlzIGlzIGFjY2Vzc2libGUgYXMgYSBtYXAgZnJvbSB8UlRDU3RhdHM6OmlkfCB0byB8
UlRDU3RhdHN8LgotY2xhc3MgUlRDU3RhdHNSZXBvcnQgOiBwdWJsaWMgcnRjOjpSZWZDb3VudElu
dGVyZmFjZSB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ1N0YXRzUmVwb3J0IDogcHVibGljIHJ0Yzo6
UmVmQ291bnRJbnRlcmZhY2UgewogIHB1YmxpYzoKICAgdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0
cmluZywgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFJUQ1N0YXRzPj4gU3RhdHNNYXA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0
L0RFUFMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVz
dC9ERVBTCmluZGV4IDk4YjFhZDM5MWZjYTJiNjQ0YzYxYTNmNTAzMjhkZDVlZmVkZTJlZGYuLjlj
MjkzYjMyM2U3MDNmYzZjZDQ5ZDVkOTgzMGNhYjdmOGY1NGY5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L0RFUFMKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvREVQUwpA
QCAtNSw0ICs1LDEwIEBAIHNwZWNpZmljX2luY2x1ZGVfcnVsZXMgPSB7CiAgICIuKiI6IFsKICAg
ICAiK3ZpZGVvIgogICBdLAorICAibG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0XC5oIjogWworICAg
ICIrcnRjX2Jhc2UvYXN5bmNpbnZva2VyLmgiLAorICAgICIrcnRjX2Jhc2UvY3JpdGljYWxzZWN0
aW9uLmgiLAorICAgICIrcnRjX2Jhc2UvdGhyZWFkLmgiLAorICAgICIrcnRjX2Jhc2UvdGhyZWFk
X2NoZWNrZXIuaCIsCisgIF0sCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9mYWtlX2ZyYW1lX2RlY3J5cHRvci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJh
bWVfZGVjcnlwdG9yLmNjCmluZGV4IDQzMjY2NGEwMzA2M2M4YjU4ZWQyNDM2OTRlM2NkYjAyYjVj
YjkzZGEuLmI3NzAxN2ZkYjQzNjg0MDAzZmU1NTJmM2I4NDQ2YmMwOTM2MWE5MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zh
a2VfZnJhbWVfZGVjcnlwdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmNjCkBAIC0yNSwxOSAr
MjUsMjAgQEAgaW50IEZha2VGcmFtZURlY3J5cHRvcjo6RGVjcnlwdChjcmlja2V0OjpNZWRpYVR5
cGUgbWVkaWFfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJh
eVZpZXc8dWludDhfdD4gZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCogYnl0ZXNfd3JpdHRlbikgewogICBpZiAoZmFpbF9kZWNyeXB0aW9uXykgewotICAgIHJl
dHVybiAxOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZha2VEZWNyeXB0U3RhdHVzOjpG
T1JDRURfRkFJTFVSRSk7CiAgIH0KIAogICBSVENfQ0hFQ0tfRVEoZnJhbWUuc2l6ZSgpICsgMSwg
ZW5jcnlwdGVkX2ZyYW1lLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWUu
c2l6ZSgpOyBpKyspIHsKLSAgICBmcmFtZVtpXSBePSBmYWtlX2tleV87CisgICAgZnJhbWVbaV0g
PSBlbmNyeXB0ZWRfZnJhbWVbaV0gXiBmYWtlX2tleV87CiAgIH0KIAogICBpZiAoZW5jcnlwdGVk
X2ZyYW1lW2ZyYW1lLnNpemUoKV0gIT0gZXhwZWN0ZWRfcG9zdGZpeF9ieXRlXykgewotICAgIHJl
dHVybiAxOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZha2VEZWNyeXB0U3RhdHVzOjpJ
TlZBTElEX1BPU1RGSVgpOwogICB9CiAKLSAgcmV0dXJuIDA7CisgICpieXRlc193cml0dGVuID0g
ZnJhbWUuc2l6ZSgpOworICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGYWtlRGVjcnlwdFN0YXR1
czo6T0spOwogfQogCiBzaXplX3QgRmFrZUZyYW1lRGVjcnlwdG9yOjpHZXRNYXhQbGFpbnRleHRC
eXRlU2l6ZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9mYWtlX2ZyYW1lX2RlY3J5cHRvci5o
CmluZGV4IGI5NDVkZWY1OWE4YjBhNWI3NDc0NWY1MmI3NDIwOGJmMTY1ZGU1YzMuLmJjYjgwODBm
ZDRjODRjNjZiMzM1MjQyYzA5MzE0OGQyOTgzYjcwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlw
dG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3Rlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3IuaApAQCAtMjIsMzQgKzIyLDQwIEBAIG5hbWVzcGFj
ZSB3ZWJydGMgewogLy8gRnJhbWVEZWNyeXB0b3JJbnRlcmZhY2UuIEl0IGlzIGNvbnN0cnVjdGVk
IHdpdGggYSBzaW1wbGUgc2luZ2xlIGRpZ2l0IGtleSBhbmQKIC8vIGEgZml4ZWQgcG9zdGZpeCBi
eXRlLiBUaGlzIGlzIGp1c3QgdG8gdmFsaWRhdGUgdGhhdCB0aGUgY29yZSBjb2RlIHdvcmtzCiAv
LyBhcyBleHBlY3RlZC4KLWNsYXNzIEZha2VGcmFtZURlY3J5cHRvcgorY2xhc3MgRmFrZUZyYW1l
RGVjcnlwdG9yIGZpbmFsCiAgICAgOiBwdWJsaWMgcnRjOjpSZWZDb3VudGVkT2JqZWN0PEZyYW1l
RGVjcnlwdG9ySW50ZXJmYWNlPiB7CiAgcHVibGljOgogICAvLyBQcm92aWRlIGEga2V5ICgwLDI1
NSkgYW5kIHNvbWUgcG9zdGZpeCBieXRlICgwLDI1NSkgdGhpcyBzaG91bGQgbWF0Y2ggdGhlCiAg
IC8vIGJ5dGUgeW91IGV4cGVjdCBmcm9tIHRoZSBGYWtlRnJhbWVFbmNyeXB0b3IuCi0gIGV4cGxp
Y2l0IEZha2VGcmFtZURlY3J5cHRvcih1aW50OF90IGZha2Vfa2V5ID0gMSwKKyAgZXhwbGljaXQg
RmFrZUZyYW1lRGVjcnlwdG9yKHVpbnQ4X3QgZmFrZV9rZXkgPSAweEFBLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCBleHBlY3RlZF9wb3N0Zml4X2J5dGUgPSAyNTUpOwot
Ci0gIC8vIEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlIGltcGxlbWVudGF0aW9uCisgIC8vIEZha2Ug
ZGVjcnlwdGlvbiB0aGF0IGp1c3QgeG9ycyB0aGUgcGF5bG9hZCB3aXRoIHRoZSAxIGJ5dGUga2V5
IGFuZCBjaGVja3MKKyAgLy8gdGhlIHBvc3RmaXggYnl0ZS4gVGhpcyB3aWxsIGFsd2F5cyBmYWls
IGlmIGZhaWxfZGVjcnlwdGlvbl8gaXMgc2V0IHRvIHRydWUuCiAgIGludCBEZWNyeXB0KGNyaWNr
ZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlLAogICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rv
cjx1aW50MzJfdD4mIGNzcmNzLAogICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1
aW50OF90PiBhZGRpdGlvbmFsX2RhdGEsCiAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IHVpbnQ4X3Q+IGVuY3J5cHRlZF9mcmFtZSwKICAgICAgICAgICAgICAgcnRjOjpBcnJheVZp
ZXc8dWludDhfdD4gZnJhbWUsCiAgICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfd3JpdHRlbikg
b3ZlcnJpZGU7Ci0KKyAgLy8gQWx3YXlzIHJldHVybnMgMSBsZXNzIHRoYW4gdGhlIHNpemUgb2Yg
dGhlIGVuY3J5cHRlZCBmcmFtZS4KICAgc2l6ZV90IEdldE1heFBsYWludGV4dEJ5dGVTaXplKGNy
aWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGVuY3J5cHRlZF9mcmFtZV9zaXplKSBvdmVycmlkZTsKLQorICAvLyBTZXRz
IHRoZSBmYWtlIGtleSB0byB1c2UgZm9yIGVuY3J5cHRpb24uCiAgIHZvaWQgU2V0RmFrZUtleSh1
aW50OF90IGZha2Vfa2V5KTsKLQorICAvLyBSZXR1cm5zIHRoZSBmYWtlIGtleSB1c2VkIGZvciBl
bmNyeXB0aW9uLgogICB1aW50OF90IEdldEZha2VLZXkoKSBjb25zdDsKLQorICAvLyBTZXQgdGhl
IFBvc3RmaXggYnl0ZSB0aGF0IGlzIGV4cGVjdGVkIGluIHRoZSBlbmNyeXB0ZWQgcGF5bG9hZC4K
ICAgdm9pZCBTZXRFeHBlY3RlZFBvc3RmaXhCeXRlKHVpbnQ4X3QgZXhwZWN0ZWRfcG9zdGZpeF9i
eXRlKTsKLQorICAvLyBSZXR1cm5zIHRoZSBwb3N0Zml4IGJ5dGUgdGhhdCB3aWxsIGJlIGNoZWNr
ZWQgZm9yIGluIHRoZSBlbmNyeXB0ZWQgcGF5bG9hZC4KICAgdWludDhfdCBHZXRFeHBlY3RlZFBv
c3RmaXhCeXRlKCkgY29uc3Q7Ci0KKyAgLy8gSWYgc2V0IHRvIHRydWUgd2lsbCBmb3JjZSBhbGwg
ZW5jcnlwdGlvbiB0byBmYWlsLgogICB2b2lkIFNldEZhaWxEZWNyeXB0aW9uKGJvb2wgZmFpbF9k
ZWNyeXB0aW9uKTsKKyAgLy8gU2ltcGxlIGVycm9yIGNvZGVzIGZvciB0ZXN0cyB0byB2YWxpZGF0
ZSBhZ2FpbnN0LgorICBlbnVtIGNsYXNzIEZha2VEZWNyeXB0U3RhdHVzIDogaW50IHsKKyAgICBP
SyA9IDAsCisgICAgRk9SQ0VEX0ZBSUxVUkUgPSAxLAorICAgIElOVkFMSURfUE9TVEZJWCA9IDIK
KyAgfTsKIAogIHByaXZhdGU6CiAgIHVpbnQ4X3QgZmFrZV9rZXlfID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2Vf
ZnJhbWVfZW5jcnlwdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9lbmNyeXB0b3IuY2MKaW5kZXggMDEzMDU4Zjk2YWE2
ZGZlOWIwNjEzOTM4ZTU3ZGFlZjVkYTM4YzM2Yy4uZWRmM2NjMjEzNmFkMDBmNzg1ZDc2ZjdhNDkw
YjI4NTU0YWQyZDUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9lbmNyeXB0b3IuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9l
bmNyeXB0b3IuY2MKQEAgLTIyLDE4ICsyMiwxOCBAQCBpbnQgRmFrZUZyYW1lRW5jcnlwdG9yOjpF
bmNyeXB0KGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBmcmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8dWludDhfdD4gZW5jcnlw
dGVkX2ZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVz
X3dyaXR0ZW4pIHsKLSAgLy8gVXNlZnVsIGlmIHlvdSB3YW50IHRvIHRlc3QgZmFpbHVyZSBjYXNl
cy4KICAgaWYgKGZhaWxfZW5jcnlwdGlvbl8pIHsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihGYWtlRW5jcnlwdGlvblN0YXR1czo6Rk9SQ0VEX0ZBSUxVUkUpOwog
ICB9CiAKICAgUlRDX0NIRUNLX0VRKGZyYW1lLnNpemUoKSArIDEsIGVuY3J5cHRlZF9mcmFtZS5z
aXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lLnNpemUoKTsgaSsrKSB7Ci0g
ICAgZW5jcnlwdGVkX2ZyYW1lW2ldIF49IGZha2Vfa2V5XzsKKyAgICBlbmNyeXB0ZWRfZnJhbWVb
aV0gPSBmcmFtZVtpXSBeIGZha2Vfa2V5XzsKICAgfQorCiAgIGVuY3J5cHRlZF9mcmFtZVtmcmFt
ZS5zaXplKCldID0gcG9zdGZpeF9ieXRlXzsKICAgKmJ5dGVzX3dyaXR0ZW4gPSBlbmNyeXB0ZWRf
ZnJhbWUuc2l6ZSgpOwotICByZXR1cm4gMDsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRmFr
ZUVuY3J5cHRpb25TdGF0dXM6Ok9LKTsKIH0KIAogc2l6ZV90IEZha2VGcmFtZUVuY3J5cHRvcjo6
R2V0TWF4Q2lwaGVydGV4dEJ5dGVTaXplKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9lbmNyeXB0b3IuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2Vf
ZnJhbWVfZW5jcnlwdG9yLmgKaW5kZXggNjFhZTkzODNmNmE1NDM5MDk5N2JiMTRjM2IwOTY4MjJm
ZWUwZDRlNC4uMGJlYzk2N2RjMjI5NjQ2ZWFhZmRiMWJjNmViY2Y5YjY2NjBhN2FmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qv
ZmFrZV9mcmFtZV9lbmNyeXB0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9mYWtlX2ZyYW1lX2VuY3J5cHRvci5oCkBAIC0yNCwyOSAr
MjQsMzUgQEAgY2xhc3MgRmFrZUZyYW1lRW5jcnlwdG9yCiAgICAgOiBwdWJsaWMgcnRjOjpSZWZD
b3VudGVkT2JqZWN0PEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiB7CiAgcHVibGljOgogICAvLyBQ
cm92aWRlIGEga2V5ICgwLDI1NSkgYW5kIHNvbWUgcG9zdGZpeCBieXRlICgwLDI1NSkuCi0gIGV4
cGxpY2l0IEZha2VGcmFtZUVuY3J5cHRvcih1aW50OF90IGZha2Vfa2V5ID0gMSwgdWludDhfdCBw
b3N0Zml4X2J5dGUgPSAyNTUpOwotCi0gIC8vIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlIGltcGxl
bWVudGF0aW9uCisgIGV4cGxpY2l0IEZha2VGcmFtZUVuY3J5cHRvcih1aW50OF90IGZha2Vfa2V5
ID0gMHhBQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgcG9zdGZpeF9i
eXRlID0gMjU1KTsKKyAgLy8gU2ltcGx5IHhvcnMgZWFjaCBwYXlsb2FkIHdpdGggdGhlIHByb3Zp
ZGVkIGZha2Uga2V5IGFuZCBhZGRzIHRoZSBwb3N0Zml4CisgIC8vIGJpdCB0byB0aGUgZW5kLiBU
aGlzIHdpbGwgYWx3YXlzIGZhaWwgaWYgZmFpbF9lbmNyeXB0aW9uXyBpcyBzZXQgdG8gdHJ1ZS4K
ICAgaW50IEVuY3J5cHQoY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUsCiAgICAgICAgICAg
ICAgIHVpbnQzMl90IHNzcmMsCiAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVp
bnQ4X3Q+IGFkZGl0aW9uYWxfZGF0YSwKICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29u
c3QgdWludDhfdD4gZnJhbWUsCiAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4X3Q+
IGVuY3J5cHRlZF9mcmFtZSwKICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc193cml0dGVuKSBv
dmVycmlkZTsKLQorICAvLyBBbHdheXMgcmV0dXJucyAxIG1vcmUgdGhhbiB0aGUgc2l6ZSBvZiB0
aGUgZnJhbWUuCiAgIHNpemVfdCBHZXRNYXhDaXBoZXJ0ZXh0Qnl0ZVNpemUoY3JpY2tldDo6TWVk
aWFUeXBlIG1lZGlhX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGZyYW1lX3NpemUpIG92ZXJyaWRlOwotCisgIC8vIFNldHMgdGhlIGZha2Uga2V5IHRvIHVz
ZSBkdXJpbmcgZW5jcnlwdGlvbi4KICAgdm9pZCBTZXRGYWtlS2V5KHVpbnQ4X3QgZmFrZV9rZXkp
OwotCisgIC8vIFJldHVybnMgdGhlIGZha2Uga2V5IHVzZWQgZHVyaW5nIGVuY3J5cHRpb24uCiAg
IHVpbnQ4X3QgR2V0RmFrZUtleSgpIGNvbnN0OwotCisgIC8vIFNldCB0aGUgcG9zdGZpeCBieXRl
IHRvIHVzZS4KICAgdm9pZCBTZXRQb3N0Zml4Qnl0ZSh1aW50OF90IGV4cGVjdGVkX3Bvc3RmaXhf
Ynl0ZSk7Ci0KKyAgLy8gUmV0dXJuIGEgcG9zdGZpeCBieXRlIGFkZGVkIHRvIGVhY2ggb3V0Z29p
bmcgcGF5bG9hZC4KICAgdWludDhfdCBHZXRQb3N0Zml4Qnl0ZSgpIGNvbnN0OwotCisgIC8vIEZv
cmNlIGFsbCBlbmNyeXB0aW9ucyB0byBmYWlsLgogICB2b2lkIFNldEZhaWxFbmNyeXB0aW9uKGJv
b2wgZmFpbF9lbmNyeXB0aW9uKTsKIAorICBlbnVtIGNsYXNzIEZha2VFbmNyeXB0aW9uU3RhdHVz
IDogaW50IHsKKyAgICBPSyA9IDAsCisgICAgRk9SQ0VEX0ZBSUxVUkUgPSAxLAorICB9OworCiAg
cHJpdmF0ZToKICAgdWludDhfdCBmYWtlX2tleV8gPSAwOwogICB1aW50OF90IHBvc3RmaXhfYnl0
ZV8gPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3Rlc3QvZmFrZV9tZWRpYV90cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfbWVkaWFfdHJhbnNwb3J0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWI2ZWM5M2FlMmI3OTIyYjgyMjNkOTg5MWExZDM1OGQ4YTIyNTUzNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS90ZXN0L2Zha2VfbWVkaWFfdHJhbnNwb3J0LmgKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX1RFU1RfRkFLRV9NRURJQV9UUkFOU1BPUlRfSF8K
KyNkZWZpbmUgQVBJX1RFU1RfRkFLRV9NRURJQV9UUkFOU1BPUlRfSF8KKworI2luY2x1ZGUgPG1l
bW9yeT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkv
bWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8g
VE9ETyhzdWtoYW5vdik6IEZvciBub3cgZmFrZSBtZWRpYSB0cmFuc3BvcnQgZG9lcyBub3RoaW5n
IGFuZCBpcyB1c2VkIG9ubHkKKy8vIGluIGpzZXBjb250cm9sbGVyIHVuaXR0ZXN0cy4gSW4gdGhl
IGZ1dHVyZSB3ZSBzaG91bGQgaW1wbGVtZW50IGZha2UgbWVkaWEKKy8vIHRyYW5zcG9ydCwgd2hp
Y2ggZm9yd2FyZHMgZnJhbWVzIHRvIGFub3RoZXIgZmFrZSBtZWRpYSB0cmFuc3BvcnQsIHNvIHdl
CisvLyBjb3VsZCB1bml0IHRlc3QgYXVkaW8gLyB2aWRlbyBpbnRlZ3JhdGlvbi4KK2NsYXNzIEZh
a2VNZWRpYVRyYW5zcG9ydCA6IHB1YmxpYyBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSB7CisgcHVi
bGljOgorICBleHBsaWNpdCBGYWtlTWVkaWFUcmFuc3BvcnQoY29uc3QgTWVkaWFUcmFuc3BvcnRT
ZXR0aW5ncyYgc2V0dGluZ3MpCisgICAgICA6IHNldHRpbmdzXyhzZXR0aW5ncykge30KKyAgfkZh
a2VNZWRpYVRyYW5zcG9ydCgpID0gZGVmYXVsdDsKKworICBSVENFcnJvciBTZW5kQXVkaW9GcmFt
ZSh1aW50NjRfdCBjaGFubmVsX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVRy
YW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lIGZyYW1lKSBvdmVycmlkZSB7CisgICAgcmV0dXJuIFJU
Q0Vycm9yOjpPSygpOworICB9CisKKyAgUlRDRXJyb3IgU2VuZFZpZGVvRnJhbWUoCisgICAgICB1
aW50NjRfdCBjaGFubmVsX2lkLAorICAgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlk
ZW9GcmFtZSYgZnJhbWUpIG92ZXJyaWRlIHsKKyAgICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7Cisg
IH0KKworICBSVENFcnJvciBSZXF1ZXN0S2V5RnJhbWUodWludDY0X3QgY2hhbm5lbF9pZCkgb3Zl
cnJpZGUgeworICAgIHJldHVybiBSVENFcnJvcjo6T0soKTsKKyAgfTsKKworICB2b2lkIFNldFJl
Y2VpdmVBdWRpb1NpbmsoTWVkaWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmspIG92
ZXJyaWRlIHt9CisgIHZvaWQgU2V0UmVjZWl2ZVZpZGVvU2luayhNZWRpYVRyYW5zcG9ydFZpZGVv
U2lua0ludGVyZmFjZSogc2luaykgb3ZlcnJpZGUge30KKworICAvLyBSZXR1cm5zIHRydWUgaWYg
ZmFrZSBtZWRpYSB0cmFuc3BvcnQgd2FzIGNyZWF0ZWQgYXMgYSBjYWxsZXIuCisgIGJvb2wgaXNf
Y2FsbGVyKCkgY29uc3QgeyByZXR1cm4gc2V0dGluZ3NfLmlzX2NhbGxlcjsgfQorICBhYnNsOjpv
cHRpb25hbDxzdGQ6OnN0cmluZz4gcHJlX3NoYXJlZF9rZXkoKSBjb25zdCB7CisgICAgcmV0dXJu
IHNldHRpbmdzXy5wcmVfc2hhcmVkX2tleTsKKyAgfQorCisgIFJUQ0Vycm9yIFNlbmREYXRhKGlu
dCBjaGFubmVsX2lkLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBTZW5kRGF0YVBhcmFtcyYg
cGFyYW1zLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVy
JiBidWZmZXIpIG92ZXJyaWRlIHsKKyAgICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7CisgIH0KKwor
ICBSVENFcnJvciBDbG9zZUNoYW5uZWwoaW50IGNoYW5uZWxfaWQpIG92ZXJyaWRlIHsgcmV0dXJu
IFJUQ0Vycm9yOjpPSygpOyB9CisKKyAgdm9pZCBTZXREYXRhU2luayhEYXRhQ2hhbm5lbFNpbmsq
IHNpbmspIG92ZXJyaWRlIHt9CisKKyAgdm9pZCBTZXRNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJh
Y2soCisgICAgICBNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlk
ZSB7CisgICAgc3RhdGVfY2FsbGJhY2tfID0gY2FsbGJhY2s7CisgIH0KKworICB2b2lkIFNldFN0
YXRlKHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZSBzdGF0ZSkgeworICAgIGlmIChzdGF0ZV9j
YWxsYmFja18pIHsKKyAgICAgIHN0YXRlX2NhbGxiYWNrXy0+T25TdGF0ZUNoYW5nZWQoc3RhdGUp
OworICAgIH0KKyAgfQorCisgIHZvaWQgQWRkVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIoCisg
ICAgICB3ZWJydGM6OlRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKiBvYnNlcnZlcikgb3ZlcnJp
ZGUgeworICAgIFJUQ19DSEVDSyhzdGQ6OmZpbmQodGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5iZWdp
bigpLAorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5lbmQo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyKSA9PSB0YXJnZXRfcmF0ZV9vYnNl
cnZlcnNfLmVuZCgpKTsKKyAgICB0YXJnZXRfcmF0ZV9vYnNlcnZlcnNfLnB1c2hfYmFjayhvYnNl
cnZlcik7CisgIH0KKworICB2b2lkIFJlbW92ZVRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKAor
ICAgICAgd2VicnRjOjpUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlciogb2JzZXJ2ZXIpIG92ZXJy
aWRlIHsKKyAgICBhdXRvIGl0ID0gc3RkOjpmaW5kKHRhcmdldF9yYXRlX29ic2VydmVyc18uYmVn
aW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9yYXRlX29ic2VydmVyc18uZW5k
KCksIG9ic2VydmVyKTsKKyAgICBpZiAoaXQgIT0gdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5lbmQo
KSkgeworICAgICAgdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5lcmFzZShpdCk7CisgICAgfQorICB9
CisKKyAgaW50IHRhcmdldF9yYXRlX29ic2VydmVyc19zaXplKCkgeyByZXR1cm4gdGFyZ2V0X3Jh
dGVfb2JzZXJ2ZXJzXy5zaXplKCk7IH0KKworIHByaXZhdGU6CisgIGNvbnN0IE1lZGlhVHJhbnNw
b3J0U2V0dGluZ3Mgc2V0dGluZ3NfOworICBNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sqIHN0
YXRlX2NhbGxiYWNrXzsKKyAgc3RkOjp2ZWN0b3I8d2VicnRjOjpUYXJnZXRUcmFuc2ZlclJhdGVP
YnNlcnZlcio+IHRhcmdldF9yYXRlX29ic2VydmVyc187Cit9OworCisvLyBGYWtlIG1lZGlhIHRy
YW5zcG9ydCBmYWN0b3J5IGNyZWF0ZXMgZmFrZSBtZWRpYSB0cmFuc3BvcnQuCitjbGFzcyBGYWtl
TWVkaWFUcmFuc3BvcnRGYWN0b3J5IDogcHVibGljIE1lZGlhVHJhbnNwb3J0RmFjdG9yeSB7Cisg
cHVibGljOgorICBGYWtlTWVkaWFUcmFuc3BvcnRGYWN0b3J5KCkgPSBkZWZhdWx0OworICB+RmFr
ZU1lZGlhVHJhbnNwb3J0RmFjdG9yeSgpID0gZGVmYXVsdDsKKworICBSVENFcnJvck9yPHN0ZDo6
dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEludGVyZmFjZT4+IENyZWF0ZU1lZGlhVHJhbnNwb3J0
KAorICAgICAgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9ydCwK
KyAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICAgIGJvb2wgaXNfY2FsbGVy
KSBvdmVycmlkZSB7CisgICAgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBz
ZXR0aW5ncy5pc19jYWxsZXIgPSBpc19jYWxsZXI7CisgICAgcmV0dXJuIENyZWF0ZU1lZGlhVHJh
bnNwb3J0KHBhY2tldF90cmFuc3BvcnQsIG5ldHdvcmtfdGhyZWFkLCBzZXR0aW5ncyk7CisgIH0K
KworICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEludGVyZmFjZT4+
IENyZWF0ZU1lZGlhVHJhbnNwb3J0KAorICAgICAgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5h
bCogcGFja2V0X3RyYW5zcG9ydCwKKyAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwK
KyAgICAgIGNvbnN0IE1lZGlhVHJhbnNwb3J0U2V0dGluZ3MmIHNldHRpbmdzKSBvdmVycmlkZSB7
CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPiBtZWRpYV90cmFu
c3BvcnQgPQorICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTWVkaWFUcmFuc3BvcnQ+KHNl
dHRpbmdzKTsKKyAgICByZXR1cm4gc3RkOjptb3ZlKG1lZGlhX3RyYW5zcG9ydCk7CisgIH0KK307
CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVEVTVF9GQUtFX01F
RElBX1RSQU5TUE9SVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9sb29wYmFja19t
ZWRpYV90cmFuc3BvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODI1NWIxMzVlNzUwOGNhYjAwNDk2NjMwYTUz
N2ZkYzM3OWI0NzNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0LmgKQEAg
LTAsMCArMSwyOTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX1RFU1RfTE9P
UEJBQ0tfTUVESUFfVFJBTlNQT1JUX0hfCisjZGVmaW5lIEFQSV9URVNUX0xPT1BCQUNLX01FRElB
X1RSQU5TUE9SVF9IXworCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CisK
KyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2FzeW5jaW52b2tlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlv
bi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
cmVhZF9jaGVja2VyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBXcmFwcGVyIHVzZWQg
dG8gaGFuZCBvdXQgdW5pcXVlX3B0cnMgdG8gbG9vcGJhY2sgbWVkaWEgdHJhbnNwb3J0cyB3aXRo
b3V0CisvLyBvd25lcnNoaXAgY2hhbmdlcy4KK2NsYXNzIFdyYXBwZXJNZWRpYVRyYW5zcG9ydCA6
IHB1YmxpYyBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSB7CisgcHVibGljOgorICBleHBsaWNpdCBX
cmFwcGVyTWVkaWFUcmFuc3BvcnQoTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIHdyYXBwZWQpCisg
ICAgICA6IHdyYXBwZWRfKHdyYXBwZWQpIHt9CisKKyAgUlRDRXJyb3IgU2VuZEF1ZGlvRnJhbWUo
dWludDY0X3QgY2hhbm5lbF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFUcmFu
c3BvcnRFbmNvZGVkQXVkaW9GcmFtZSBmcmFtZSkgb3ZlcnJpZGUgeworICAgIHJldHVybiB3cmFw
cGVkXy0+U2VuZEF1ZGlvRnJhbWUoY2hhbm5lbF9pZCwgc3RkOjptb3ZlKGZyYW1lKSk7CisgIH0K
KworICBSVENFcnJvciBTZW5kVmlkZW9GcmFtZSgKKyAgICAgIHVpbnQ2NF90IGNoYW5uZWxfaWQs
CisgICAgICBjb25zdCBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJiBmcmFtZSkgb3Zl
cnJpZGUgeworICAgIHJldHVybiB3cmFwcGVkXy0+U2VuZFZpZGVvRnJhbWUoY2hhbm5lbF9pZCwg
ZnJhbWUpOworICB9CisKKyAgUlRDRXJyb3IgUmVxdWVzdEtleUZyYW1lKHVpbnQ2NF90IGNoYW5u
ZWxfaWQpIG92ZXJyaWRlIHsKKyAgICByZXR1cm4gd3JhcHBlZF8tPlJlcXVlc3RLZXlGcmFtZShj
aGFubmVsX2lkKTsKKyAgfQorCisgIHZvaWQgU2V0UmVjZWl2ZUF1ZGlvU2luayhNZWRpYVRyYW5z
cG9ydEF1ZGlvU2lua0ludGVyZmFjZSogc2luaykgb3ZlcnJpZGUgeworICAgIHdyYXBwZWRfLT5T
ZXRSZWNlaXZlQXVkaW9TaW5rKHNpbmspOworICB9CisKKyAgdm9pZCBTZXRSZWNlaXZlVmlkZW9T
aW5rKE1lZGlhVHJhbnNwb3J0VmlkZW9TaW5rSW50ZXJmYWNlKiBzaW5rKSBvdmVycmlkZSB7Cisg
ICAgd3JhcHBlZF8tPlNldFJlY2VpdmVWaWRlb1Npbmsoc2luayk7CisgIH0KKworICB2b2lkIFNl
dE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjaygKKyAgICAgIE1lZGlhVHJhbnNwb3J0U3RhdGVD
YWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlIHsKKyAgICB3cmFwcGVkXy0+U2V0TWVkaWFUcmFu
c3BvcnRTdGF0ZUNhbGxiYWNrKGNhbGxiYWNrKTsKKyAgfQorCisgIFJUQ0Vycm9yIFNlbmREYXRh
KGludCBjaGFubmVsX2lkLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBTZW5kRGF0YVBhcmFt
cyYgcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVm
ZmVyJiBidWZmZXIpIG92ZXJyaWRlIHsKKyAgICByZXR1cm4gd3JhcHBlZF8tPlNlbmREYXRhKGNo
YW5uZWxfaWQsIHBhcmFtcywgYnVmZmVyKTsKKyAgfQorCisgIFJUQ0Vycm9yIENsb3NlQ2hhbm5l
bChpbnQgY2hhbm5lbF9pZCkgb3ZlcnJpZGUgeworICAgIHJldHVybiB3cmFwcGVkXy0+Q2xvc2VD
aGFubmVsKGNoYW5uZWxfaWQpOworICB9CisKKyAgdm9pZCBTZXREYXRhU2luayhEYXRhQ2hhbm5l
bFNpbmsqIHNpbmspIG92ZXJyaWRlIHsKKyAgICB3cmFwcGVkXy0+U2V0RGF0YVNpbmsoc2luayk7
CisgIH0KKworIHByaXZhdGU6CisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiB3cmFwcGVkXzsK
K307CisKK2NsYXNzIFdyYXBwZXJNZWRpYVRyYW5zcG9ydEZhY3RvcnkgOiBwdWJsaWMgTWVkaWFU
cmFuc3BvcnRGYWN0b3J5IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFdyYXBwZXJNZWRpYVRyYW5z
cG9ydEZhY3RvcnkoTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIHdyYXBwZWQpCisgICAgICA6IHdy
YXBwZWRfKHdyYXBwZWQpIHt9CisKKyAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFU
cmFuc3BvcnRJbnRlcmZhY2U+PiBDcmVhdGVNZWRpYVRyYW5zcG9ydCgKKyAgICAgIHJ0Yzo6UGFj
a2V0VHJhbnNwb3J0SW50ZXJuYWwqIHBhY2tldF90cmFuc3BvcnQsCisgICAgICBydGM6OlRocmVh
ZCogbmV0d29ya190aHJlYWQsCisgICAgICBjb25zdCBNZWRpYVRyYW5zcG9ydFNldHRpbmdzJiBz
ZXR0aW5ncykgb3ZlcnJpZGUgeworICAgIHJldHVybiB7YWJzbDo6bWFrZV91bmlxdWU8V3JhcHBl
ck1lZGlhVHJhbnNwb3J0Pih3cmFwcGVkXyl9OworICB9CisKKyBwcml2YXRlOgorICBNZWRpYVRy
YW5zcG9ydEludGVyZmFjZSogd3JhcHBlZF87Cit9OworCisvLyBDb250YWlucyB0d28gTWVkaWFU
cmFuc3BvcnRzSW50ZXJmYWNlcyB0aGF0IGFyZSBjb25uZWN0ZWQgdG8gZWFjaCBvdGhlci4KKy8v
IEN1cnJlbnRseSBzdXBwb3J0cyBhdWRpbyBvbmx5LgorY2xhc3MgTWVkaWFUcmFuc3BvcnRQYWly
IHsKKyBwdWJsaWM6CisgIHN0cnVjdCBTdGF0cyB7CisgICAgaW50IHNlbnRfYXVkaW9fZnJhbWVz
ID0gMDsKKyAgICBpbnQgcmVjZWl2ZWRfYXVkaW9fZnJhbWVzID0gMDsKKyAgfTsKKworICBleHBs
aWNpdCBNZWRpYVRyYW5zcG9ydFBhaXIocnRjOjpUaHJlYWQqIHRocmVhZCkKKyAgICAgIDogZmly
c3RfKHRocmVhZCwgJnNlY29uZF8pLCBzZWNvbmRfKHRocmVhZCwgJmZpcnN0Xykge30KKworICAv
LyBPd25lcnNoaXAgc3RheXMgd2l0aCBNZWRpYVRyYW5zcG9ydFBhaXIKKyAgTWVkaWFUcmFuc3Bv
cnRJbnRlcmZhY2UqIGZpcnN0KCkgeyByZXR1cm4gJmZpcnN0XzsgfQorICBNZWRpYVRyYW5zcG9y
dEludGVyZmFjZSogc2Vjb25kKCkgeyByZXR1cm4gJnNlY29uZF87IH0KKworICBzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFUcmFuc3BvcnRGYWN0b3J5PiBmaXJzdF9mYWN0b3J5KCkgeworICAgIHJldHVy
biBhYnNsOjptYWtlX3VuaXF1ZTxXcmFwcGVyTWVkaWFUcmFuc3BvcnRGYWN0b3J5PigmZmlyc3Rf
KTsKKyAgfQorCisgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IHNlY29u
ZF9mYWN0b3J5KCkgeworICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxXcmFwcGVyTWVkaWFU
cmFuc3BvcnRGYWN0b3J5Pigmc2Vjb25kXyk7CisgIH0KKworICB2b2lkIFNldFN0YXRlKE1lZGlh
VHJhbnNwb3J0U3RhdGUgc3RhdGUpIHsKKyAgICBmaXJzdF8uU2V0U3RhdGUoc3RhdGUpOworICAg
IHNlY29uZF8uU2V0U3RhdGUoc3RhdGUpOworICB9CisKKyAgdm9pZCBGbHVzaEFzeW5jSW52b2tl
cygpIHsKKyAgICBmaXJzdF8uRmx1c2hBc3luY0ludm9rZXMoKTsKKyAgICBzZWNvbmRfLkZsdXNo
QXN5bmNJbnZva2VzKCk7CisgIH0KKworICBTdGF0cyBGaXJzdFN0YXRzKCkgeyByZXR1cm4gZmly
c3RfLkdldFN0YXRzKCk7IH0KKyAgU3RhdHMgU2Vjb25kU3RhdHMoKSB7IHJldHVybiBzZWNvbmRf
LkdldFN0YXRzKCk7IH0KKworIHByaXZhdGU6CisgIGNsYXNzIExvb3BiYWNrTWVkaWFUcmFuc3Bv
cnQgOiBwdWJsaWMgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UgeworICAgcHVibGljOgorICAgIExv
b3BiYWNrTWVkaWFUcmFuc3BvcnQocnRjOjpUaHJlYWQqIHRocmVhZCwgTG9vcGJhY2tNZWRpYVRy
YW5zcG9ydCogb3RoZXIpCisgICAgICAgIDogdGhyZWFkXyh0aHJlYWQpLCBvdGhlcl8ob3RoZXIp
IHt9CisKKyAgICB+TG9vcGJhY2tNZWRpYVRyYW5zcG9ydCgpIHsKKyAgICAgIHJ0Yzo6Q3JpdFNj
b3BlIGxvY2soJnNpbmtfbG9ja18pOworICAgICAgUlRDX0NIRUNLKHNpbmtfID09IG51bGxwdHIp
OworICAgICAgUlRDX0NIRUNLKGRhdGFfc2lua18gPT0gbnVsbHB0cik7CisgICAgfQorCisgICAg
UlRDRXJyb3IgU2VuZEF1ZGlvRnJhbWUodWludDY0X3QgY2hhbm5lbF9pZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lIGZyYW1lKSBv
dmVycmlkZSB7CisgICAgICB7CisgICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnN0YXRzX2xv
Y2tfKTsKKyAgICAgICAgKytzdGF0c18uc2VudF9hdWRpb19mcmFtZXM7CisgICAgICB9CisgICAg
ICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCB0aHJlYWRfLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMsIGNoYW5uZWxfaWQsIGZyYW1lXSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyXy0+T25EYXRhKGNoYW5u
ZWxfaWQsIHN0ZDo6bW92ZShmcmFtZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7CisgICAgfTsKKworICAgIFJUQ0Vy
cm9yIFNlbmRWaWRlb0ZyYW1lKAorICAgICAgICB1aW50NjRfdCBjaGFubmVsX2lkLAorICAgICAg
ICBjb25zdCBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJiBmcmFtZSkgb3ZlcnJpZGUg
eworICAgICAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOworICAgIH0KKworICAgIFJUQ0Vycm9yIFJl
cXVlc3RLZXlGcmFtZSh1aW50NjRfdCBjaGFubmVsX2lkKSBvdmVycmlkZSB7CisgICAgICByZXR1
cm4gUlRDRXJyb3I6Ok9LKCk7CisgICAgfQorCisgICAgdm9pZCBTZXRSZWNlaXZlQXVkaW9TaW5r
KE1lZGlhVHJhbnNwb3J0QXVkaW9TaW5rSW50ZXJmYWNlKiBzaW5rKSBvdmVycmlkZSB7CisgICAg
ICBydGM6OkNyaXRTY29wZSBsb2NrKCZzaW5rX2xvY2tfKTsKKyAgICAgIGlmIChzaW5rKSB7Cisg
ICAgICAgIFJUQ19DSEVDSyhzaW5rXyA9PSBudWxscHRyKTsKKyAgICAgIH0KKyAgICAgIHNpbmtf
ID0gc2luazsKKyAgICB9CisKKyAgICB2b2lkIFNldFJlY2VpdmVWaWRlb1NpbmsoTWVkaWFUcmFu
c3BvcnRWaWRlb1NpbmtJbnRlcmZhY2UqIHNpbmspIG92ZXJyaWRlIHt9CisKKyAgICB2b2lkIFNl
dE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjaygKKyAgICAgICAgTWVkaWFUcmFuc3BvcnRTdGF0
ZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGUgeworICAgICAgcnRjOjpDcml0U2NvcGUgbG9j
aygmc2lua19sb2NrXyk7CisgICAgICBzdGF0ZV9jYWxsYmFja18gPSBjYWxsYmFjazsKKyAgICAg
IGludm9rZXJfLkFzeW5jSW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIHRocmVhZF8sIFt0aGlz
XSB7CisgICAgICAgIFJUQ19EQ0hFQ0tfUlVOX09OKHRocmVhZF8pOworICAgICAgICBPblN0YXRl
Q2hhbmdlZCgpOworICAgICAgfSk7CisgICAgfQorCisgICAgUlRDRXJyb3IgU2VuZERhdGEoaW50
IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2VuZERhdGFQYXJhbXMm
IHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVm
ZmVyJiBidWZmZXIpIG92ZXJyaWRlIHsKKyAgICAgIGludm9rZXJfLkFzeW5jSW52b2tlPHZvaWQ+
KAorICAgICAgICAgIFJUQ19GUk9NX0hFUkUsIHRocmVhZF8sIFt0aGlzLCBjaGFubmVsX2lkLCBw
YXJhbXMsIGJ1ZmZlcl0geworICAgICAgICAgICAgb3RoZXJfLT5PbkRhdGEoY2hhbm5lbF9pZCwg
cGFyYW1zLnR5cGUsIGJ1ZmZlcik7CisgICAgICAgICAgfSk7CisgICAgICByZXR1cm4gUlRDRXJy
b3I6Ok9LKCk7CisgICAgfQorCisgICAgUlRDRXJyb3IgQ2xvc2VDaGFubmVsKGludCBjaGFubmVs
X2lkKSBvdmVycmlkZSB7CisgICAgICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lkPihSVENfRlJP
TV9IRVJFLCB0aHJlYWRfLCBbdGhpcywgY2hhbm5lbF9pZF0geworICAgICAgICBvdGhlcl8tPk9u
UmVtb3RlQ2xvc2VDaGFubmVsKGNoYW5uZWxfaWQpOworICAgICAgICBydGM6OkNyaXRTY29wZSBs
b2NrKCZzaW5rX2xvY2tfKTsKKyAgICAgICAgaWYgKGRhdGFfc2lua18pIHsKKyAgICAgICAgICBk
YXRhX3NpbmtfLT5PbkNoYW5uZWxDbG9zZWQoY2hhbm5lbF9pZCk7CisgICAgICAgIH0KKyAgICAg
IH0pOworICAgICAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOworICAgIH0KKworICAgIHZvaWQgU2V0
RGF0YVNpbmsoRGF0YUNoYW5uZWxTaW5rKiBzaW5rKSBvdmVycmlkZSB7CisgICAgICBydGM6OkNy
aXRTY29wZSBsb2NrKCZzaW5rX2xvY2tfKTsKKyAgICAgIGRhdGFfc2lua18gPSBzaW5rOworICAg
IH0KKworICAgIHZvaWQgU2V0U3RhdGUoTWVkaWFUcmFuc3BvcnRTdGF0ZSBzdGF0ZSkgeworICAg
ICAgaW52b2tlcl8uQXN5bmNJbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgdGhyZWFkXywgW3Ro
aXMsIHN0YXRlXSB7CisgICAgICAgIFJUQ19EQ0hFQ0tfUlVOX09OKHRocmVhZF8pOworICAgICAg
ICBzdGF0ZV8gPSBzdGF0ZTsKKyAgICAgICAgT25TdGF0ZUNoYW5nZWQoKTsKKyAgICAgIH0pOwor
ICAgIH0KKworICAgIHZvaWQgRmx1c2hBc3luY0ludm9rZXMoKSB7IGludm9rZXJfLkZsdXNoKHRo
cmVhZF8pOyB9CisKKyAgICBTdGF0cyBHZXRTdGF0cygpIHsKKyAgICAgIHJ0Yzo6Q3JpdFNjb3Bl
IGxvY2soJnN0YXRzX2xvY2tfKTsKKyAgICAgIHJldHVybiBzdGF0c187CisgICAgfQorCisgICBw
cml2YXRlOgorICAgIHZvaWQgT25EYXRhKHVpbnQ2NF90IGNoYW5uZWxfaWQsIE1lZGlhVHJhbnNw
b3J0RW5jb2RlZEF1ZGlvRnJhbWUgZnJhbWUpIHsKKyAgICAgIHsKKyAgICAgICAgcnRjOjpDcml0
U2NvcGUgbG9jaygmc2lua19sb2NrXyk7CisgICAgICAgIGlmIChzaW5rXykgeworICAgICAgICAg
IHNpbmtfLT5PbkRhdGEoY2hhbm5lbF9pZCwgZnJhbWUpOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICB7CisgICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnN0YXRzX2xvY2tfKTsKKyAgICAg
ICAgKytzdGF0c18ucmVjZWl2ZWRfYXVkaW9fZnJhbWVzOworICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgT25EYXRhKGludCBjaGFubmVsX2lkLAorICAgICAgICAgICAgICAgIERhdGFNZXNzYWdl
VHlwZSB0eXBlLAorICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIm
IGJ1ZmZlcikgeworICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2lua19sb2NrXyk7CisgICAg
ICBpZiAoZGF0YV9zaW5rXykgeworICAgICAgICBkYXRhX3NpbmtfLT5PbkRhdGFSZWNlaXZlZChj
aGFubmVsX2lkLCB0eXBlLCBidWZmZXIpOworICAgICAgfQorICAgIH0KKworICAgIHZvaWQgT25S
ZW1vdGVDbG9zZUNoYW5uZWwoaW50IGNoYW5uZWxfaWQpIHsKKyAgICAgIHJ0Yzo6Q3JpdFNjb3Bl
IGxvY2soJnNpbmtfbG9ja18pOworICAgICAgaWYgKGRhdGFfc2lua18pIHsKKyAgICAgICAgZGF0
YV9zaW5rXy0+T25DaGFubmVsQ2xvc2luZyhjaGFubmVsX2lkKTsKKyAgICAgICAgZGF0YV9zaW5r
Xy0+T25DaGFubmVsQ2xvc2VkKGNoYW5uZWxfaWQpOworICAgICAgfQorICAgIH0KKworICAgIHZv
aWQgT25TdGF0ZUNoYW5nZWQoKSBSVENfUlVOX09OKHRocmVhZF8pIHsKKyAgICAgIHJ0Yzo6Q3Jp
dFNjb3BlIGxvY2soJnNpbmtfbG9ja18pOworICAgICAgaWYgKHN0YXRlX2NhbGxiYWNrXykgewor
ICAgICAgICBzdGF0ZV9jYWxsYmFja18tPk9uU3RhdGVDaGFuZ2VkKHN0YXRlXyk7CisgICAgICB9
CisgICAgfQorCisgICAgcnRjOjpUaHJlYWQqIGNvbnN0IHRocmVhZF87CisgICAgcnRjOjpDcml0
aWNhbFNlY3Rpb24gc2lua19sb2NrXzsKKyAgICBydGM6OkNyaXRpY2FsU2VjdGlvbiBzdGF0c19s
b2NrXzsKKworICAgIE1lZGlhVHJhbnNwb3J0QXVkaW9TaW5rSW50ZXJmYWNlKiBzaW5rXyBSVENf
R1VBUkRFRF9CWShzaW5rX2xvY2tfKSA9CisgICAgICAgIG51bGxwdHI7CisgICAgRGF0YUNoYW5u
ZWxTaW5rKiBkYXRhX3NpbmtfIFJUQ19HVUFSREVEX0JZKHNpbmtfbG9ja18pID0gbnVsbHB0cjsK
KyAgICBNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sqIHN0YXRlX2NhbGxiYWNrXyBSVENfR1VB
UkRFRF9CWShzaW5rX2xvY2tfKSA9CisgICAgICAgIG51bGxwdHI7CisKKyAgICBNZWRpYVRyYW5z
cG9ydFN0YXRlIHN0YXRlXyBSVENfR1VBUkRFRF9CWSh0aHJlYWRfKSA9CisgICAgICAgIE1lZGlh
VHJhbnNwb3J0U3RhdGU6OmtQZW5kaW5nOworCisgICAgTG9vcGJhY2tNZWRpYVRyYW5zcG9ydCog
Y29uc3Qgb3RoZXJfOworCisgICAgU3RhdHMgc3RhdHNfIFJUQ19HVUFSREVEX0JZKHN0YXRzX2xv
Y2tfKTsKKworICAgIHJ0Yzo6QXN5bmNJbnZva2VyIGludm9rZXJfOworICB9OworCisgIExvb3Bi
YWNrTWVkaWFUcmFuc3BvcnQgZmlyc3RfOworICBMb29wYmFja01lZGlhVHJhbnNwb3J0IHNlY29u
ZF87Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1RFU1Rf
TE9PUEJBQ0tfTUVESUFfVFJBTlNQT1JUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9sb29wYmFja19tZWRpYV90cmFuc3Bv
cnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnRfdW5pdHRlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmE3NDFhMDVjYTc5ODYyZDY4MzQwZTgyNWQ3Y2NkNTBkZWFmMjdiNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0
L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydF91bml0dGVzdC5jYwpAQCAtMCwwICsxLDE3MSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJhcGkvdGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnQuaCIKKyNpbmNs
dWRlICJ0ZXN0L2dtb2NrLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1lc3BhY2Ugewor
CitjbGFzcyBNb2NrTWVkaWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2UKKyAgICA6IHB1Ymxp
YyBNZWRpYVRyYW5zcG9ydEF1ZGlvU2lua0ludGVyZmFjZSB7CisgcHVibGljOgorICBNT0NLX01F
VEhPRDIoT25EYXRhLCB2b2lkKHVpbnQ2NF90LCBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0Zy
YW1lKSk7Cit9OworCitjbGFzcyBNb2NrRGF0YUNoYW5uZWxTaW5rIDogcHVibGljIERhdGFDaGFu
bmVsU2luayB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDMoT25EYXRhUmVjZWl2ZWQsCisgICAg
ICAgICAgICAgICB2b2lkKGludCwgRGF0YU1lc3NhZ2VUeXBlLCBjb25zdCBydGM6OkNvcHlPbldy
aXRlQnVmZmVyJikpOworICBNT0NLX01FVEhPRDEoT25DaGFubmVsQ2xvc2luZywgdm9pZChpbnQp
KTsKKyAgTU9DS19NRVRIT0QxKE9uQ2hhbm5lbENsb3NlZCwgdm9pZChpbnQpKTsKK307CisKK2Ns
YXNzIE1vY2tTdGF0ZUNhbGxiYWNrIDogcHVibGljIE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFj
ayB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDEoT25TdGF0ZUNoYW5nZWQsIHZvaWQoTWVkaWFU
cmFuc3BvcnRTdGF0ZSkpOworfTsKKworLy8gVGVzdCBvbmx5IHVzZXMgdGhlIHNlcXVlbmNlIG51
bWJlci4KK01lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgQ3JlYXRlQXVkaW9GcmFtZShp
bnQgc2VxdWVuY2VfbnVtYmVyKSB7CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtTYW1wbGluZ1Jh
dGVIeiA9IDQ4MDAwOworICBzdGF0aWMgY29uc3RleHByIGludCBrU3RhcnRpbmdTYW1wbGVJbmRl
eCA9IDA7CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtTYW1wbGVzUGVyQ2hhbm5lbCA9IDQ4MDsK
KyAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtQYXlsb2FkVHlwZSA9IDE3OworCisgIHJldHVy
biBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lKAorICAgICAga1NhbXBsaW5nUmF0ZUh6
LCBrU3RhcnRpbmdTYW1wbGVJbmRleCwga1NhbXBsZXNQZXJDaGFubmVsLAorICAgICAgc2VxdWVu
Y2VfbnVtYmVyLCBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lOjpGcmFtZVR5cGU6OmtT
cGVlY2gsCisgICAgICBrUGF5bG9hZFR5cGUsIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGtTYW1wbGVz
UGVyQ2hhbm5lbCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworVEVTVChMb29wYmFja01lZGlh
VHJhbnNwb3J0LCBBdWRpb1dpdGhOb1NpbmtTaWxlbnRseUlnbm9yZWQpIHsKKyAgc3RkOjp1bmlx
dWVfcHRyPHJ0Yzo6VGhyZWFkPiB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgIHRo
cmVhZC0+U3RhcnQoKTsKKyAgTWVkaWFUcmFuc3BvcnRQYWlyIHRyYW5zcG9ydF9wYWlyKHRocmVh
ZC5nZXQoKSk7CisgIHRyYW5zcG9ydF9wYWlyLmZpcnN0KCktPlNlbmRBdWRpb0ZyYW1lKDEsIENy
ZWF0ZUF1ZGlvRnJhbWUoMCkpOworICB0cmFuc3BvcnRfcGFpci5zZWNvbmQoKS0+U2VuZEF1ZGlv
RnJhbWUoMiwgQ3JlYXRlQXVkaW9GcmFtZSgwKSk7CisgIHRyYW5zcG9ydF9wYWlyLkZsdXNoQXN5
bmNJbnZva2VzKCk7Cit9CisKK1RFU1QoTG9vcGJhY2tNZWRpYVRyYW5zcG9ydCwgQXVkaW9EZWxp
dmVyZWRUb1NpbmspIHsKKyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiB0aHJlYWQgPSBy
dGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgIHRocmVhZC0+U3RhcnQoKTsKKyAgTWVkaWFUcmFuc3Bv
cnRQYWlyIHRyYW5zcG9ydF9wYWlyKHRocmVhZC5nZXQoKSk7CisgIHRlc3Rpbmc6OlN0cmljdE1v
Y2s8TW9ja01lZGlhVHJhbnNwb3J0QXVkaW9TaW5rSW50ZXJmYWNlPiBzaW5rOworICBFWFBFQ1Rf
Q0FMTChzaW5rLAorICAgICAgICAgICAgICBPbkRhdGEoMSwgdGVzdGluZzo6UHJvcGVydHkoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJh
bWU6OnNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5n
OjpFcSgxMCkpKSk7CisgIHRyYW5zcG9ydF9wYWlyLnNlY29uZCgpLT5TZXRSZWNlaXZlQXVkaW9T
aW5rKCZzaW5rKTsKKyAgdHJhbnNwb3J0X3BhaXIuZmlyc3QoKS0+U2VuZEF1ZGlvRnJhbWUoMSwg
Q3JlYXRlQXVkaW9GcmFtZSgxMCkpOworCisgIHRyYW5zcG9ydF9wYWlyLkZsdXNoQXN5bmNJbnZv
a2VzKCk7CisgIHRyYW5zcG9ydF9wYWlyLnNlY29uZCgpLT5TZXRSZWNlaXZlQXVkaW9TaW5rKG51
bGxwdHIpOworfQorCitURVNUKExvb3BiYWNrTWVkaWFUcmFuc3BvcnQsIERhdGFEZWxpdmVyZWRU
b1NpbmspIHsKKyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiB0aHJlYWQgPSBydGM6OlRo
cmVhZDo6Q3JlYXRlKCk7CisgIHRocmVhZC0+U3RhcnQoKTsKKyAgTWVkaWFUcmFuc3BvcnRQYWly
IHRyYW5zcG9ydF9wYWlyKHRocmVhZC5nZXQoKSk7CisKKyAgTW9ja0RhdGFDaGFubmVsU2luayBz
aW5rOworICB0cmFuc3BvcnRfcGFpci5maXJzdCgpLT5TZXREYXRhU2luaygmc2luayk7CisKKyAg
Y29uc3QgaW50IGNoYW5uZWxfaWQgPSAxOworICBFWFBFQ1RfQ0FMTChzaW5rLAorICAgICAgICAg
ICAgICBPbkRhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgIGNoYW5uZWxfaWQsIERhdGFN
ZXNzYWdlVHlwZTo6a1RleHQsCisgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpQcm9wZXJ0eTxy
dGM6OkNvcHlPbldyaXRlQnVmZmVyLCBjb25zdCBjaGFyKj4oCisgICAgICAgICAgICAgICAgICAg
ICAgJnJ0Yzo6Q29weU9uV3JpdGVCdWZmZXI6OmNkYXRhLCB0ZXN0aW5nOjpTdHJFcSgiZm9vIikp
KSk7CisKKyAgU2VuZERhdGFQYXJhbXMgcGFyYW1zOworICBwYXJhbXMudHlwZSA9IERhdGFNZXNz
YWdlVHlwZTo6a1RleHQ7CisgIHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgYnVmZmVyKCJmb28iKTsK
KyAgdHJhbnNwb3J0X3BhaXIuc2Vjb25kKCktPlNlbmREYXRhKGNoYW5uZWxfaWQsIHBhcmFtcywg
YnVmZmVyKTsKKworICB0cmFuc3BvcnRfcGFpci5GbHVzaEFzeW5jSW52b2tlcygpOworICB0cmFu
c3BvcnRfcGFpci5maXJzdCgpLT5TZXREYXRhU2luayhudWxscHRyKTsKK30KKworVEVTVChMb29w
YmFja01lZGlhVHJhbnNwb3J0LCBDbG9zZURlbGl2ZXJlZFRvU2luaykgeworICBzdGQ6OnVuaXF1
ZV9wdHI8cnRjOjpUaHJlYWQ+IHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAgdGhy
ZWFkLT5TdGFydCgpOworICBNZWRpYVRyYW5zcG9ydFBhaXIgdHJhbnNwb3J0X3BhaXIodGhyZWFk
LmdldCgpKTsKKworICBNb2NrRGF0YUNoYW5uZWxTaW5rIGZpcnN0X3Npbms7CisgIHRyYW5zcG9y
dF9wYWlyLmZpcnN0KCktPlNldERhdGFTaW5rKCZmaXJzdF9zaW5rKTsKKworICBNb2NrRGF0YUNo
YW5uZWxTaW5rIHNlY29uZF9zaW5rOworICB0cmFuc3BvcnRfcGFpci5zZWNvbmQoKS0+U2V0RGF0
YVNpbmsoJnNlY29uZF9zaW5rKTsKKworICBjb25zdCBpbnQgY2hhbm5lbF9pZCA9IDE7CisgIHsK
KyAgICB0ZXN0aW5nOjpJblNlcXVlbmNlIHM7CisgICAgRVhQRUNUX0NBTEwoc2Vjb25kX3Npbmss
IE9uQ2hhbm5lbENsb3NpbmcoY2hhbm5lbF9pZCkpOworICAgIEVYUEVDVF9DQUxMKHNlY29uZF9z
aW5rLCBPbkNoYW5uZWxDbG9zZWQoY2hhbm5lbF9pZCkpOworICAgIEVYUEVDVF9DQUxMKGZpcnN0
X3NpbmssIE9uQ2hhbm5lbENsb3NlZChjaGFubmVsX2lkKSk7CisgIH0KKworICB0cmFuc3BvcnRf
cGFpci5maXJzdCgpLT5DbG9zZUNoYW5uZWwoY2hhbm5lbF9pZCk7CisKKyAgdHJhbnNwb3J0X3Bh
aXIuRmx1c2hBc3luY0ludm9rZXMoKTsKKyAgdHJhbnNwb3J0X3BhaXIuZmlyc3QoKS0+U2V0RGF0
YVNpbmsobnVsbHB0cik7CisgIHRyYW5zcG9ydF9wYWlyLnNlY29uZCgpLT5TZXREYXRhU2luayhu
dWxscHRyKTsKK30KKworVEVTVChMb29wYmFja01lZGlhVHJhbnNwb3J0LCBJbml0aWFsU3RhdGVE
ZWxpdmVyZWRXaGVuQ2FsbGJhY2tTZXQpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFk
PiB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgIHRocmVhZC0+U3RhcnQoKTsKKyAg
TWVkaWFUcmFuc3BvcnRQYWlyIHRyYW5zcG9ydF9wYWlyKHRocmVhZC5nZXQoKSk7CisKKyAgTW9j
a1N0YXRlQ2FsbGJhY2sgc3RhdGVfY2FsbGJhY2s7CisKKyAgRVhQRUNUX0NBTEwoc3RhdGVfY2Fs
bGJhY2ssIE9uU3RhdGVDaGFuZ2VkKE1lZGlhVHJhbnNwb3J0U3RhdGU6OmtQZW5kaW5nKSk7Cisg
IHRyYW5zcG9ydF9wYWlyLmZpcnN0KCktPlNldE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjaygm
c3RhdGVfY2FsbGJhY2spOworICB0cmFuc3BvcnRfcGFpci5GbHVzaEFzeW5jSW52b2tlcygpOwor
fQorCitURVNUKExvb3BiYWNrTWVkaWFUcmFuc3BvcnQsIENoYW5nZWRTdGF0ZURlbGl2ZXJlZFdo
ZW5DYWxsYmFja1NldCkgeworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHRocmVhZCA9
IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAgdGhyZWFkLT5TdGFydCgpOworICBNZWRpYVRyYW5z
cG9ydFBhaXIgdHJhbnNwb3J0X3BhaXIodGhyZWFkLmdldCgpKTsKKworICB0cmFuc3BvcnRfcGFp
ci5TZXRTdGF0ZShNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpOworICB0cmFuc3BvcnRf
cGFpci5GbHVzaEFzeW5jSW52b2tlcygpOworCisgIE1vY2tTdGF0ZUNhbGxiYWNrIHN0YXRlX2Nh
bGxiYWNrOworCisgIEVYUEVDVF9DQUxMKHN0YXRlX2NhbGxiYWNrLCBPblN0YXRlQ2hhbmdlZChN
ZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpKTsKKyAgdHJhbnNwb3J0X3BhaXIuZmlyc3Qo
KS0+U2V0TWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrKCZzdGF0ZV9jYWxsYmFjayk7CisgIHRy
YW5zcG9ydF9wYWlyLkZsdXNoQXN5bmNJbnZva2VzKCk7Cit9CisKK1RFU1QoTG9vcGJhY2tNZWRp
YVRyYW5zcG9ydCwgU3RhdGVDaGFuZ2VEZWxpdmVyZWRUb0NhbGxiYWNrKSB7CisgIHN0ZDo6dW5p
cXVlX3B0cjxydGM6OlRocmVhZD4gdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOworICB0
aHJlYWQtPlN0YXJ0KCk7CisgIE1lZGlhVHJhbnNwb3J0UGFpciB0cmFuc3BvcnRfcGFpcih0aHJl
YWQuZ2V0KCkpOworCisgIE1vY2tTdGF0ZUNhbGxiYWNrIHN0YXRlX2NhbGxiYWNrOworCisgIEVY
UEVDVF9DQUxMKHN0YXRlX2NhbGxiYWNrLCBPblN0YXRlQ2hhbmdlZChNZWRpYVRyYW5zcG9ydFN0
YXRlOjprUGVuZGluZykpOworICBFWFBFQ1RfQ0FMTChzdGF0ZV9jYWxsYmFjaywgT25TdGF0ZUNo
YW5nZWQoTWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKSk7CisgIHRyYW5zcG9ydF9wYWly
LmZpcnN0KCktPlNldE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjaygmc3RhdGVfY2FsbGJhY2sp
OworICB0cmFuc3BvcnRfcGFpci5TZXRTdGF0ZShNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFi
bGUpOworICB0cmFuc3BvcnRfcGFpci5GbHVzaEFzeW5jSW52b2tlcygpOworfQorCit9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX2ZyYW1lX2RlY3J5cHRvci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZGVj
cnlwdG9yLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0YjU0Zjk2NmNkOGMwNjE1ODU2NmE0YjUwNTczNTI5NTQ5
ZjBhZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX2ZyYW1lX2RlY3J5cHRvci5jYwpAQCAtMCwwICsxLDE4
IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja19mcmFtZV9k
ZWNyeXB0b3IuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK01vY2tGcmFtZURlY3J5cHRvcjo6
TW9ja0ZyYW1lRGVjcnlwdG9yKCkgPSBkZWZhdWx0OworTW9ja0ZyYW1lRGVjcnlwdG9yOjp+TW9j
a0ZyYW1lRGVjcnlwdG9yKCkgPSBkZWZhdWx0OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dGVzdC9tb2NrX2ZyYW1lX2RlY3J5cHRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja19mcmFtZV9kZWNyeXB0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lODAzOTY1NTRmNGUwNWJmNzJjOGY3Y2NkZDY3ODYyOTg0YWQxZGMxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qv
bW9ja19mcmFtZV9kZWNyeXB0b3IuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogIENvcHlyaWdo
dCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaWZuZGVmIEFQSV9URVNUX01PQ0tfRlJBTUVfREVDUllQVE9SX0hfCisjZGVmaW5lIEFQ
SV9URVNUX01PQ0tfRlJBTUVfREVDUllQVE9SX0hfCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNp
bmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZGVjcnlwdG9yaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAi
dGVzdC9nbW9jay5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgTW9ja0ZyYW1lRGVj
cnlwdG9yIDogcHVibGljIEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIE1v
Y2tGcmFtZURlY3J5cHRvcigpOworICB+TW9ja0ZyYW1lRGVjcnlwdG9yKCkgb3ZlcnJpZGU7CisK
KyAgTU9DS19NRVRIT0Q2KERlY3J5cHQsCisgICAgICAgICAgICAgICBpbnQoY3JpY2tldDo6TWVk
aWFUeXBlLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiYs
CisgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4sCisgICAg
ICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4sCisgICAgICAgICAg
ICAgICAgICAgcnRjOjpBcnJheVZpZXc8dWludDhfdD4sCisgICAgICAgICAgICAgICAgICAgc2l6
ZV90KikpOworCisgIE1PQ0tfTUVUSE9EMihHZXRNYXhQbGFpbnRleHRCeXRlU2l6ZSwKKyAgICAg
ICAgICAgICAgIHNpemVfdChjcmlja2V0OjpNZWRpYVR5cGUsIHNpemVfdCBlbmNyeXB0ZWRfZnJh
bWVfc2l6ZSkpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQ
SV9URVNUX01PQ0tfRlJBTUVfREVDUllQVE9SX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX2ZyYW1lX2VuY3J5cHRv
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0
L21vY2tfZnJhbWVfZW5jcnlwdG9yLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5NzIyNTlmMDU3ZWM3MmI0NzFk
ZjA3MzEyYTA0YTQ5MThkZWUyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX2ZyYW1lX2VuY3J5cHRvci5j
YwpAQCAtMCwwICsxLDE5IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL3Rl
c3QvbW9ja19mcmFtZV9lbmNyeXB0b3IuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisKK25h
bWVzcGFjZSB3ZWJydGMgeworCitNb2NrRnJhbWVFbmNyeXB0b3I6Ok1vY2tGcmFtZUVuY3J5cHRv
cigpID0gZGVmYXVsdDsKK01vY2tGcmFtZUVuY3J5cHRvcjo6fk1vY2tGcmFtZUVuY3J5cHRvcigp
ID0gZGVmYXVsdDsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja19mcmFtZV9l
bmNyeXB0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRmYjFmZGU4N2I4MjVh
MTdhNzNmZGY0ZTYwNjBkZGE2ZjAxZGJjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZW5jcnlw
dG9yLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElf
VEVTVF9NT0NLX0ZSQU1FX0VOQ1JZUFRPUl9IXworI2RlZmluZSBBUElfVEVTVF9NT0NLX0ZSQU1F
X0VOQ1JZUFRPUl9IXworCisjaW5jbHVkZSAiYXBpL2NyeXB0by9mcmFtZWVuY3J5cHRvcmludGVy
ZmFjZS5oIgorI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisK
K2NsYXNzIE1vY2tGcmFtZUVuY3J5cHRvciA6IHB1YmxpYyBGcmFtZUVuY3J5cHRvckludGVyZmFj
ZSB7CisgcHVibGljOgorICBNb2NrRnJhbWVFbmNyeXB0b3IoKTsKKyAgfk1vY2tGcmFtZUVuY3J5
cHRvcigpIG92ZXJyaWRlOworCisgIE1PQ0tfTUVUSE9ENihFbmNyeXB0LAorICAgICAgICAgICAg
ICAgaW50KGNyaWNrZXQ6Ok1lZGlhVHlwZSwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCwK
KyAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiwKKyAgICAg
ICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiwKKyAgICAgICAgICAg
ICAgICAgICBydGM6OkFycmF5Vmlldzx1aW50OF90PiwKKyAgICAgICAgICAgICAgICAgICBzaXpl
X3QqKSk7CisKKyAgTU9DS19NRVRIT0QyKEdldE1heENpcGhlcnRleHRCeXRlU2l6ZSwKKyAgICAg
ICAgICAgICAgIHNpemVfdChjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSwgc2l6ZV90IGZy
YW1lX3NpemUpKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBB
UElfVEVTVF9NT0NLX0ZSQU1FX0VOQ1JZUFRPUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192aWRlb19iaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wY2FlMDYxYWI3NWRjZDY2NzU3MGRiYjdjZjMzM2NmNTUwNmYxZjg0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3Rlc3QvbW9ja192aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgKQEAgLTAsMCAr
MSwzNyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX1RFU1RfTU9DS19W
SURFT19CSVRSQVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hfCisjZGVmaW5lIEFQSV9URVNUX01PQ0tf
VklERU9fQklUUkFURV9BTExPQ0FUT1JfRkFDVE9SWV9IXworCisjaW5jbHVkZSA8bWVtb3J5Pgor
CisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIK
KyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBN
b2NrVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeQorICAgIDogcHVibGljIHdlYnJ0Yzo6Vmlk
ZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSB7CisgcHVibGljOgorICB2aXJ0dWFsIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+IENyZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRv
cigKKyAgICAgIGNvbnN0IFZpZGVvQ29kZWMmIGNvZGVjKSB7CisgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+KAorICAgICAgICBDcmVhdGVWaWRlb0JpdHJh
dGVBbGxvY2F0b3JQcm94eShjb2RlYykpOworICB9CisgIH5Nb2NrVmlkZW9CaXRyYXRlQWxsb2Nh
dG9yRmFjdG9yeSgpIHsgRGllKCk7IH0KKyAgTU9DS19NRVRIT0QxKENyZWF0ZVZpZGVvQml0cmF0
ZUFsbG9jYXRvclByb3h5LAorICAgICAgICAgICAgICAgVmlkZW9CaXRyYXRlQWxsb2NhdG9yKihj
b25zdCBWaWRlb0NvZGVjJikpOworICBNT0NLX01FVEhPRDAoRGllLCB2b2lkKCkpOworfTsKKwor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9URVNUX01PQ0tfVklERU9f
QklUUkFURV9BTExPQ0FUT1JfRkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192aWRlb19kZWNvZGVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9j
a192aWRlb19kZWNvZGVyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ZWQwZTE2NzgyYWE5MDM5YTRkZWE2NjNj
OTU2MWZlM2U3MTU4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuY2MKQEAgLTAs
MCArMSwyMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvdGVzdC9t
b2NrX3ZpZGVvX2RlY29kZXIuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK01vY2tEZWNvZGVk
SW1hZ2VDYWxsYmFjazo6TW9ja0RlY29kZWRJbWFnZUNhbGxiYWNrKCkgPSBkZWZhdWx0OworTW9j
a0RlY29kZWRJbWFnZUNhbGxiYWNrOjp+TW9ja0RlY29kZWRJbWFnZUNhbGxiYWNrKCkgPSBkZWZh
dWx0OworTW9ja1ZpZGVvRGVjb2Rlcjo6TW9ja1ZpZGVvRGVjb2RlcigpID0gZGVmYXVsdDsKK01v
Y2tWaWRlb0RlY29kZXI6On5Nb2NrVmlkZW9EZWNvZGVyKCkgPSBkZWZhdWx0OworCit9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU2ZmY1NDYzZmRlMTQwN2RiZDgyMWRmYTRlMzVlYTQzYzMxYWQwZjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgor
ICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVTVF9NT0NLX1ZJREVPX0RFQ09ERVJf
SF8KKyNkZWZpbmUgQVBJX1RFU1RfTU9DS19WSURFT19ERUNPREVSX0hfCisKKyNpbmNsdWRlICJh
cGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgi
CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBNb2NrRGVjb2RlZEltYWdlQ2FsbGJhY2sg
OiBwdWJsaWMgRGVjb2RlZEltYWdlQ2FsbGJhY2sgeworIHB1YmxpYzoKKyAgTW9ja0RlY29kZWRJ
bWFnZUNhbGxiYWNrKCk7CisgIH5Nb2NrRGVjb2RlZEltYWdlQ2FsbGJhY2soKSBvdmVycmlkZTsK
KworICBNT0NLX01FVEhPRDEoRGVjb2RlZCwgaW50MzJfdChWaWRlb0ZyYW1lJiBkZWNvZGVkSW1h
Z2UpKTsgIC8vIE5PTElOVAorICBNT0NLX01FVEhPRDIoRGVjb2RlZCwKKyAgICAgICAgICAgICAg
IGludDMyX3QoVmlkZW9GcmFtZSYgZGVjb2RlZEltYWdlLCAgLy8gTk9MSU5UCisgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3QgZGVjb2RlX3RpbWVfbXMpKTsKKyAgTU9DS19NRVRIT0QzKERl
Y29kZWQsCisgICAgICAgICAgICAgICB2b2lkKFZpZGVvRnJhbWUmIGRlY29kZWRJbWFnZSwgIC8v
IE5PTElOVAorICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiBkZWNv
ZGVfdGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4g
cXApKTsKKyAgTU9DS19NRVRIT0QxKFJlY2VpdmVkRGVjb2RlZFJlZmVyZW5jZUZyYW1lLAorICAg
ICAgICAgICAgICAgaW50MzJfdChjb25zdCB1aW50NjRfdCBwaWN0dXJlSWQpKTsKKyAgTU9DS19N
RVRIT0QxKFJlY2VpdmVkRGVjb2RlZEZyYW1lLCBpbnQzMl90KGNvbnN0IHVpbnQ2NF90IHBpY3R1
cmVJZCkpOworfTsKKworY2xhc3MgTW9ja1ZpZGVvRGVjb2RlciA6IHB1YmxpYyBWaWRlb0RlY29k
ZXIgeworIHB1YmxpYzoKKyAgTW9ja1ZpZGVvRGVjb2RlcigpOworICB+TW9ja1ZpZGVvRGVjb2Rl
cigpIG92ZXJyaWRlOworCisgIE1PQ0tfTUVUSE9EMihJbml0RGVjb2RlLAorICAgICAgICAgICAg
ICAgaW50MzJfdChjb25zdCBWaWRlb0NvZGVjKiBjb2RlY1NldHRpbmdzLCBpbnQzMl90IG51bWJl
ck9mQ29yZXMpKTsKKyAgTU9DS19NRVRIT0Q0KERlY29kZSwKKyAgICAgICAgICAgICAgIGludDMy
X3QoY29uc3QgRW5jb2RlZEltYWdlJiBpbnB1dEltYWdlLAorICAgICAgICAgICAgICAgICAgICAg
ICBib29sIG1pc3NpbmdGcmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVj
U3BlY2lmaWNJbmZvKiBjb2RlY1NwZWNpZmljSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAg
aW50NjRfdCByZW5kZXJUaW1lTXMpKTsKKyAgTU9DS19NRVRIT0QxKFJlZ2lzdGVyRGVjb2RlQ29t
cGxldGVDYWxsYmFjaywKKyAgICAgICAgICAgICAgIGludDMyX3QoRGVjb2RlZEltYWdlQ2FsbGJh
Y2sqIGNhbGxiYWNrKSk7CisgIE1PQ0tfTUVUSE9EMChSZWxlYXNlLCBpbnQzMl90KCkpOworICBN
T0NLX01FVEhPRDAoQ29weSwgVmlkZW9EZWNvZGVyKigpKTsKK307CisKK30gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVEVTVF9NT0NLX1ZJREVPX0RFQ09ERVJfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90
ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MGQ4MmIxYzMzYjFmYzI3ZWJhZWU5NDhhNmI5YmM4ZTNjZjM5ZWE3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9j
a192aWRlb19lbmNvZGVyLmNjCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChj
KSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192aWRlb19lbmNvZGVyLmgiCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworCitNb2NrRW5jb2RlZEltYWdlQ2FsbGJhY2s6Ok1vY2tFbmNvZGVkSW1hZ2VD
YWxsYmFjaygpID0gZGVmYXVsdDsKK01vY2tFbmNvZGVkSW1hZ2VDYWxsYmFjazo6fk1vY2tFbmNv
ZGVkSW1hZ2VDYWxsYmFjaygpID0gZGVmYXVsdDsKK01vY2tWaWRlb0VuY29kZXI6Ok1vY2tWaWRl
b0VuY29kZXIoKSA9IGRlZmF1bHQ7CitNb2NrVmlkZW9FbmNvZGVyOjp+TW9ja1ZpZGVvRW5jb2Rl
cigpID0gZGVmYXVsdDsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192aWRl
b19lbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmYxN2JhYjg4NDI1NWJl
ODg5MGY1NjQ4ZTFkOWE3N2Q3OGE5ZmRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192aWRlb19lbmNvZGVy
LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJ
X1RFU1RfTU9DS19WSURFT19FTkNPREVSX0hfCisjZGVmaW5lIEFQSV9URVNUX01PQ0tfVklERU9f
RU5DT0RFUl9IXworCisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2Nv
ZGVjcy92aWRlb19lbmNvZGVyLmgiCisjaW5jbHVkZSAidGVzdC9nbW9jay5oIgorCituYW1lc3Bh
Y2Ugd2VicnRjIHsKKworY2xhc3MgTW9ja0VuY29kZWRJbWFnZUNhbGxiYWNrIDogcHVibGljIEVu
Y29kZWRJbWFnZUNhbGxiYWNrIHsKKyBwdWJsaWM6CisgIE1vY2tFbmNvZGVkSW1hZ2VDYWxsYmFj
aygpOworICB+TW9ja0VuY29kZWRJbWFnZUNhbGxiYWNrKCk7CisgIE1PQ0tfTUVUSE9EMyhPbkVu
Y29kZWRJbWFnZSwKKyAgICAgICAgICAgICAgIFJlc3VsdChjb25zdCBFbmNvZGVkSW1hZ2UmIGVu
Y29kZWRJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5m
byogY29kZWNTcGVjaWZpY0luZm8sCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUlRQRnJh
Z21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRhdGlvbikpOworfTsKKworY2xhc3MgTW9ja1ZpZGVv
RW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgeworIHB1YmxpYzoKKyAgTW9ja1ZpZGVvRW5j
b2RlcigpOworICB+TW9ja1ZpZGVvRW5jb2RlcigpOworICBNT0NLX0NPTlNUX01FVEhPRDIoVmVy
c2lvbiwgaW50MzJfdChpbnQ4X3QqIHZlcnNpb24sIGludDMyX3QgbGVuZ3RoKSk7CisgIE1PQ0tf
TUVUSE9EMyhJbml0RW5jb2RlLAorICAgICAgICAgICAgICAgaW50MzJfdChjb25zdCBWaWRlb0Nv
ZGVjKiBjb2RlY1NldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IG51bWJl
ck9mQ29yZXMsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhQYXlsb2FkU2l6ZSkp
OworICBNT0NLX01FVEhPRDMoRW5jb2RlLAorICAgICAgICAgICAgICAgaW50MzJfdChjb25zdCBW
aWRlb0ZyYW1lJiBpbnB1dEltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2Rl
Y1NwZWNpZmljSW5mbyogY29kZWNTcGVjaWZpY0luZm8sCisgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1lVHlwZT4qIGZyYW1lX3R5cGVzKSk7CisgIE1PQ0tfTUVU
SE9EMShSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2ssCisgICAgICAgICAgICAgICBpbnQz
Ml90KEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykpOworICBNT0NLX01FVEhPRDAoUmVs
ZWFzZSwgaW50MzJfdCgpKTsKKyAgTU9DS19NRVRIT0QwKFJlc2V0LCBpbnQzMl90KCkpOworICBN
T0NLX01FVEhPRDIoU2V0UmF0ZXMsIGludDMyX3QodWludDMyX3QgbmV3Qml0UmF0ZSwgdWludDMy
X3QgZnJhbWVSYXRlKSk7CisgIE1PQ0tfTUVUSE9EMihTZXRSYXRlQWxsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgIGludDMyX3QoY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgbmV3Qml0UmF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVSYXRlKSk7CisgIE1PQ0tf
Q09OU1RfTUVUSE9EMChHZXRFbmNvZGVySW5mbywgRW5jb2RlckluZm8odm9pZCkpOworfTsKKwor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9URVNUX01PQ0tfVklERU9f
RU5DT0RFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3NpbXVsYXRlZF9uZXR3b3JrLmgKaW5k
ZXggYWVjMzAwY2FhMmIzZTRmZDhlYjZlYjI5NTY5YjUyY2Y4MWVjNjU3NC4uYzAzYjRjYTRjYmYy
OGI1YWRiMWI5ZDU2MTUzZWY5Y2JhYzE1MjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9z
aW11bGF0ZWRfbmV0d29yay5oCkBAIC00MiwxMSArNDIsMTEgQEAgc3RydWN0IFBhY2tldERlbGl2
ZXJ5SW5mbyB7CiAgIHVpbnQ2NF90IHBhY2tldF9pZDsKIH07CiAKLS8vIERlZmF1bHROZXR3b3Jr
U2ltdWxhdGlvbkNvbmZpZyBpcyBhIGRlZmF1bHQgbmV0d29yayBiZWhhdmlvciBjb25maWd1cmF0
aW9uCi0vLyBmb3IgZGVmYXVsdCBuZXR3b3JrIGJlaGF2aW9yIHRoYXQgd2lsbCBiZSB1c2VkIGJ5
IFdlYlJUQyBpZiBubyBjdXN0b20KKy8vIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgaXMg
YSBidWlsdC1pbiBuZXR3b3JrIGJlaGF2aW9yIGNvbmZpZ3VyYXRpb24KKy8vIGZvciBidWlsdC1p
biBuZXR3b3JrIGJlaGF2aW9yIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IFdlYlJUQyBpZiBubyBjdXN0
b20KIC8vIE5ldHdvcmtCZWhhdmlvckludGVyZmFjZSBpcyBwcm92aWRlZC4KLXN0cnVjdCBEZWZh
dWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWcoKSB7fQorc3RydWN0IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgeworICBCdWls
dEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkge30KICAgLy8gUXVldWUgbGVuZ3RoIGluIG51bWJl
ciBvZiBwYWNrZXRzLgogICBzaXplX3QgcXVldWVfbGVuZ3RoX3BhY2tldHMgPSAwOwogICAvLyBE
ZWxheSBpbiBhZGRpdGlvbiB0byBjYXBhY2l0eSBpbmR1Y2VkIGRlbGF5LgpAQCAtNzUsOSArNzUs
NiBAQCBjbGFzcyBOZXR3b3JrQmVoYXZpb3JJbnRlcmZhY2UgewogICB2aXJ0dWFsIH5OZXR3b3Jr
QmVoYXZpb3JJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CiB9OwogCi0vLyBEZXByZWNhdGVkLiBETyBO
T1QgVVNFLiBVc2UgTmV0d29ya0JlaGF2aW9ySW50ZXJmYWNlIGluc3RlYWQuCi11c2luZyBOZXR3
b3JrU2ltdWxhdGlvbkludGVyZmFjZSA9IE5ldHdvcmtCZWhhdmlvckludGVyZmFjZTsKLQogfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwogCiAjZW5kaWYgIC8vIEFQSV9URVNUX1NJTVVMQVRFRF9ORVRX
T1JLX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdGVzdC9zaW11bGNhc3RfdGVzdF9maXh0dXJlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9zaW11bGNhc3RfdGVzdF9maXh0dXJl
LmgKaW5kZXggZTdlYWIyNDEzNDhkYTE4MGNhNWM4M2Q1NjVhMzExOTFjZjg4OTQ3Mi4uNTI3MGQx
MzMwNjRhMGQxNDkyOGIzMThlZDBiODI2MGUwOGY0Mjk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qvc2ltdWxjYXN0X3Rlc3Rf
Zml4dHVyZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS90ZXN0L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFz
cyBTaW11bGNhc3RUZXN0Rml4dHVyZSB7CiAgIHZpcnR1YWwgdm9pZCBUZXN0U3BhdGlvVGVtcG9y
YWxMYXllcnMzMzNQYXR0ZXJuRW5jb2RlcigpID0gMDsKICAgdmlydHVhbCB2b2lkIFRlc3RTcGF0
aW9UZW1wb3JhbExheWVyczMyMVBhdHRlcm5FbmNvZGVyKCkgPSAwOwogICB2aXJ0dWFsIHZvaWQg
VGVzdFN0cmlkZUVuY29kZURlY29kZSgpID0gMDsKKyAgdmlydHVhbCB2b2lkIFRlc3REZWNvZGVX
aWR0aEhlaWdodFNldCgpID0gMDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC90
ZXN0X2RlcGVuZGVuY3lfZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS90ZXN0L3Rlc3RfZGVwZW5kZW5jeV9mYWN0b3J5LmNjCmluZGV4IDNl
NTliYzA5NWM4NzQ3NDk3MGI1NGQ4NjE3Mjc3MGU1NDc5MmRlMDQuLjE3OWM2MjM5NDBmMmJmNGZm
MGJiMDkxZGQ3OTM5OWQ5YmM1ZGFkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3Rlc3RfZGVwZW5kZW5jeV9mYWN0b3J5LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0
L3Rlc3RfZGVwZW5kZW5jeV9mYWN0b3J5LmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1v
cnkuaCIKICNpbmNsdWRlICJhcGkvdGVzdC90ZXN0X2RlcGVuZGVuY3lfZmFjdG9yeS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3ZpZGVvL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qvdmlk
ZW8vQlVJTEQuZ24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI2M2E0YWNiM2RhMmY0YTU5ZWE5MmQ3MGZlN2VhMmY4
MDQyYjQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS90ZXN0L3ZpZGVvL0JVSUxELmduCkBAIC0wLDAgKzEsMjQgQEAKKyMg
Q29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorIworIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisjIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorIyB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisjIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyMgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisK
K2ltcG9ydCgiLi4vLi4vLi4vd2VicnRjLmduaSIpCisKK3J0Y19zb3VyY2Vfc2V0KCJmdW5jdGlv
bl92aWRlb19mYWN0b3J5IikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICB0ZXN0b25seSA9
IHRydWUKKyAgcHVibGljID0gWworICAgICJmdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3Rvcnku
aCIsCisgICAgImZ1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIiwKKyAgXQorCisgIGRl
cHMgPSBbCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uLy4uL3ZpZGVv
X2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvbWVtb3J5IiwKKyAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZGVjb2Rl
cl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wM2E0MzIzOTk3NmEwMTEzOWVmNzA5ZTI5NGUwMzhmMTk5MDQ5MmY5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qv
dmlkZW8vZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgKQEAgLTAsMCArMSw1NiBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
CisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX1RFU1RfVklERU9fRlVOQ1RJT05f
VklERU9fREVDT0RFUl9GQUNUT1JZX0hfCisjZGVmaW5lIEFQSV9URVNUX1ZJREVPX0ZVTkNUSU9O
X1ZJREVPX0RFQ09ERVJfRkFDVE9SWV9IXworCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNs
dWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNp
bmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKKyNpbmNsdWRlICJh
cGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKwor
Ly8gQSBkZWNvZGVyIGZhY3RvcnkgcHJvZHVjaW5nIGRlY29kZXJzIGJ5IGNhbGxpbmcgYSBzdXBw
bGllZCBjcmVhdGUgZnVuY3Rpb24uCitjbGFzcyBGdW5jdGlvblZpZGVvRGVjb2RlckZhY3Rvcnkg
ZmluYWwgOiBwdWJsaWMgVmlkZW9EZWNvZGVyRmFjdG9yeSB7CisgcHVibGljOgorICBleHBsaWNp
dCBGdW5jdGlvblZpZGVvRGVjb2RlckZhY3RvcnkoCisgICAgICBzdGQ6OmZ1bmN0aW9uPHN0ZDo6
dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+KCk+IGNyZWF0ZSkKKyAgICAgIDogY3JlYXRlXyhbY3Jl
YXRlXShjb25zdCBTZHBWaWRlb0Zvcm1hdCYpIHsgcmV0dXJuIGNyZWF0ZSgpOyB9KSB7fQorICBl
eHBsaWNpdCBGdW5jdGlvblZpZGVvRGVjb2RlckZhY3RvcnkoCisgICAgICBzdGQ6OmZ1bmN0aW9u
PHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+KGNvbnN0IFNkcFZpZGVvRm9ybWF0Jik+Cisg
ICAgICAgICAgY3JlYXRlKQorICAgICAgOiBjcmVhdGVfKHN0ZDo6bW92ZShjcmVhdGUpKSB7fQor
CisgIC8vIFVudXNlZCBieSB0ZXN0cy4KKyAgc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IEdl
dFN1cHBvcnRlZEZvcm1hdHMoKSBjb25zdCBvdmVycmlkZSB7CisgICAgUlRDX05PVFJFQUNIRUQo
KTsKKyAgICByZXR1cm4ge307CisgIH0KKworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVy
PiBDcmVhdGVWaWRlb0RlY29kZXIoCisgICAgICBjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0
KSBvdmVycmlkZSB7CisgICAgcmV0dXJuIGNyZWF0ZV8oZm9ybWF0KTsKKyAgfQorCisgcHJpdmF0
ZToKKyAgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyPihj
b25zdCBTZHBWaWRlb0Zvcm1hdCYpPgorICAgICAgY3JlYXRlXzsKK307CisKK30gIC8vIG5hbWVz
cGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1RFU1Rf
VklERU9fRlVOQ1RJT05fVklERU9fREVDT0RFUl9GQUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlby9mdW5j
dGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFj
dG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg1Zjg0OGNkMWZkYzg1MzI4YTI0MDJkYjJiYWQ4MWFkMDE3OGNj
MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaApA
QCAtMCwwICsxLDY1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVT
VF9WSURFT19GVU5DVElPTl9WSURFT19FTkNPREVSX0ZBQ1RPUllfSF8KKyNkZWZpbmUgQVBJX1RF
U1RfVklERU9fRlVOQ1RJT05fVklERU9fRU5DT0RFUl9GQUNUT1JZX0hfCisKKyNpbmNsdWRlIDxm
dW5jdGlvbmFsPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1
ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1h
dC5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFt
ZXNwYWNlIHRlc3QgeworCisvLyBBbiBlbmNvZGVyIGZhY3RvcnkgcHJvZHVjaW5nIGVuY29kZXJz
IGJ5IGNhbGxpbmcgYSBzdXBwbGllZCBjcmVhdGUKKy8vIGZ1bmN0aW9uLgorY2xhc3MgRnVuY3Rp
b25WaWRlb0VuY29kZXJGYWN0b3J5IGZpbmFsIDogcHVibGljIFZpZGVvRW5jb2RlckZhY3Rvcnkg
eworIHB1YmxpYzoKKyAgZXhwbGljaXQgRnVuY3Rpb25WaWRlb0VuY29kZXJGYWN0b3J5KAorICAg
ICAgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPigpPiBjcmVhdGUp
CisgICAgICA6IGNyZWF0ZV8oW2NyZWF0ZV0oY29uc3QgU2RwVmlkZW9Gb3JtYXQmKSB7IHJldHVy
biBjcmVhdGUoKTsgfSkge30KKyAgZXhwbGljaXQgRnVuY3Rpb25WaWRlb0VuY29kZXJGYWN0b3J5
KAorICAgICAgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPihjb25z
dCBTZHBWaWRlb0Zvcm1hdCYpPgorICAgICAgICAgIGNyZWF0ZSkKKyAgICAgIDogY3JlYXRlXyhz
dGQ6Om1vdmUoY3JlYXRlKSkge30KKworICAvLyBVbnVzZWQgYnkgdGVzdHMuCisgIHN0ZDo6dmVj
dG9yPFNkcFZpZGVvRm9ybWF0PiBHZXRTdXBwb3J0ZWRGb3JtYXRzKCkgY29uc3Qgb3ZlcnJpZGUg
eworICAgIFJUQ19OT1RSRUFDSEVEKCk7CisgICAgcmV0dXJuIHt9OworICB9CisKKyAgQ29kZWNJ
bmZvIFF1ZXJ5VmlkZW9FbmNvZGVyKAorICAgICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQmIC8qIGZv
cm1hdCAqLykgY29uc3Qgb3ZlcnJpZGUgeworICAgIENvZGVjSW5mbyBjb2RlY19pbmZvOworICAg
IGNvZGVjX2luZm8uaXNfaGFyZHdhcmVfYWNjZWxlcmF0ZWQgPSBmYWxzZTsKKyAgICBjb2RlY19p
bmZvLmhhc19pbnRlcm5hbF9zb3VyY2UgPSBmYWxzZTsKKyAgICByZXR1cm4gY29kZWNfaW5mbzsK
KyAgfQorCisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IENyZWF0ZVZpZGVvRW5jb2Rl
cigKKyAgICAgIGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIG92ZXJyaWRlIHsKKyAgICBy
ZXR1cm4gY3JlYXRlXyhmb3JtYXQpOworICB9CisKKyBwcml2YXRlOgorICBjb25zdCBzdGQ6OmZ1
bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KGNvbnN0IFNkcFZpZGVvRm9ybWF0
Jik+CisgICAgICBjcmVhdGVfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVEVTVF9WSURFT19GVU5DVElPTl9WSURF
T19FTkNPREVSX0ZBQ1RPUllfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3ZpZGVvX3F1YWxpdHlfdGVzdF9maXh0dXJlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRl
b19xdWFsaXR5X3Rlc3RfZml4dHVyZS5oCmluZGV4IGZmMTQ3MmU5YTU4ZTYxMzU0ZTgwNTE5MjUy
OGYzZWY4NzVjZWM5MjMuLjA2OWEyNDM1M2RlN2ViY2NkZTM5MmMwNjhhNWQ0ZTA1Y2M2MjdjZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90ZXN0L3ZpZGVvX3F1YWxpdHlfdGVzdF9maXh0dXJlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW9fcXVhbGl0eV90ZXN0X2Zp
eHR1cmUuaApAQCAtODIsMTUgKzgyLDExIEBAIGNsYXNzIFZpZGVvUXVhbGl0eVRlc3RGaXh0dXJl
SW50ZXJmYWNlIHsKICAgICAgIHN0ZDo6c3RyaW5nIGdyYXBoX2RhdGFfb3V0cHV0X2ZpbGVuYW1l
OwogICAgICAgc3RkOjpzdHJpbmcgZ3JhcGhfdGl0bGU7CiAgICAgfSBhbmFseXplcjsKLSAgICAv
LyBEZXByZWNhdGVkLiBETyBOT1QgVVNFLiBVc2UgY29uZmlnIGluc3RlYWQuIFRoaXMgaXMgbm90
IHBpcGUgYWN0dWFsbHksCi0gICAgLy8gaXQgaXMganVzdCBjb25maWd1cmF0aW9uLCB0aGF0IHdp
bGwgYmUgcGFzc2VkIHRvIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KLSAgICAvLyBvZiBzaW11bGF0
aW9uIGxheWVyLgotICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBwaXBlOwogICAg
IC8vIENvbmZpZyBmb3IgZGVmYXVsdCBzaW11bGF0aW9uIGltcGxlbWVudGF0aW9uLiBNdXN0IGJl
IG51bGxvcHQgaWYKICAgICAvLyBgc2VuZGVyX25ldHdvcmtgIGFuZCBgcmVjZWl2ZXJfbmV0d29y
a2AgaW4gSW5qZWN0aW9uQ29tcG9uZW50cyBhcmUKICAgICAvLyBub24tbnVsbC4gTWF5IGJlIG51
bGxvcHQgZXZlbiBpZiBgc2VuZGVyX25ldHdvcmtgIGFuZCBgcmVjZWl2ZXJfbmV0d29ya2AKICAg
ICAvLyBhcmUgbnVsbDsgaW4gdGhhdCBjYXNlLCBhIGRlZmF1bHQgY29uZmlnIHdpbGwgYmUgdXNl
ZC4KLSAgICBhYnNsOjpvcHRpb25hbDxEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc+IGNv
bmZpZzsKKyAgICBhYnNsOjpvcHRpb25hbDxCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnPiBj
b25maWc7CiAgICAgc3RydWN0IFNTIHsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNwYXRp
YWwgc2NhbGFiaWxpdHkuCiAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtczsg
IC8vIElmIGVtcHR5LCBvbmUgc3RyZWFtIGlzIGFzc3VtZWQuCiAgICAgICBzaXplX3Qgc2VsZWN0
ZWRfc3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW9jb2RlY190ZXN0X2ZpeHR1cmUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3ZpZGVvY29kZWNfdGVzdF9m
aXh0dXJlLmgKaW5kZXggYTBiODA4M2Q3MjM2YzM3YTA2OGJlYjcwMTJkZTM2ZDY2MzdiYmY1Ni4u
OTI1YzYwYzNjOTJjOWY1ZWJkMTQ5ZDUzZjE4ODMzNTczMWExZTQyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW9jb2Rl
Y190ZXN0X2ZpeHR1cmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdGVzdC92aWRlb2NvZGVjX3Rlc3RfZml4dHVyZS5oCkBAIC0xMjMsMTAgKzEy
Myw2IEBAIGNsYXNzIFZpZGVvQ29kZWNUZXN0Rml4dHVyZSB7CiAgICAgICAgICAgd2VicnRjOjpI
MjY0UGFja2V0aXphdGlvbk1vZGU6Ok5vbkludGVybGVhdmVkOwogICAgIH0gaDI2NF9jb2RlY19z
ZXR0aW5nczsKIAotICAgIC8vIFNob3VsZCBoYXJkd2FyZSBhY2NlbGVyYXRlZCBjb2RlY3MgYmUg
dXNlZD8KLSAgICBib29sIGh3X2VuY29kZXIgPSBmYWxzZTsKLSAgICBib29sIGh3X2RlY29kZXIg
PSBmYWxzZTsKLQogICAgIC8vIEN1c3RvbSBjaGVja2VyIHRoYXQgd2lsbCBiZSBjYWxsZWQgZm9y
IGVhY2ggZnJhbWUuCiAgICAgY29uc3QgRW5jb2RlZEZyYW1lQ2hlY2tlciogZW5jb2RlZF9mcmFt
ZV9jaGVja2VyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvQlVJTEQuZ24KaW5k
ZXggZjQ3MzE3OWRkMTRhZGZhNGZmNjFmMWMyMjRiMGVmOTdhMmM0YTJjOC4uMzU3ZmYwMDU0YmQw
ZGI2ZGUyMzRlZTczZWNiOTc4ZmY2ODg2NWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9CVUlMRC5nbgorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L0JV
SUxELmduCkBAIC0xOSw3ICsxOSwxNSBAQCBydGNfc291cmNlX3NldCgiYml0cmF0ZV9zZXR0aW5n
cyIpIHsKICAgXQogfQogCitydGNfc291cmNlX3NldCgiZW51bXMiKSB7CisgIHZpc2liaWxpdHkg
PSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImVudW1zLmgiLAorICBdCit9CisKIHJ0Y19z
dGF0aWNfbGlicmFyeSgibmV0d29ya19jb250cm9sIikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIg
XQogICBzb3VyY2VzID0gWwogICAgICJuZXR3b3JrX2NvbnRyb2wuaCIsCiAgICAgIm5ldHdvcmtf
dHlwZXMuY2MiLApAQCAtMzUsNiArNDMsMTkgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJuZXR3b3Jr
X2NvbnRyb2wiKSB7CiAgIF0KIH0KIAorcnRjX3N0YXRpY19saWJyYXJ5KCJnb29nX2NjIikgewor
ICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICBzb3VyY2VzID0gWworICAgICJnb29nX2NjX2ZhY3Rv
cnkuY2MiLAorICAgICJnb29nX2NjX2ZhY3RvcnkuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAi
Om5ldHdvcmtfY29udHJvbCIsCisgICAgIi4uLy4uL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnki
LAorICBdCit9CisKIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICBydGNfc291cmNlX3NldCgi
bmV0d29ya19jb250cm9sX3Rlc3QiKSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0
L09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90
cmFuc3BvcnQvT1dORVJTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5OTFmNmZjNTZhMDc5ZDU2YTljOTMxMGJhNmY3
ODI4ZGIzNGUxMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L09XTkVSUwpAQCAtMCwwICsxLDIgQEAKK3Ny
dGVAd2VicnRjLm9yZwordGVyZWxpdXNAd2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9lbnVtcy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9l
bnVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIxZDU3NzBjYjk2MmFhNzk4N2Y4OTA0ODE5MzFiMDY0ODMwMGRl
YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2VudW1zLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqICBD
b3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworI2lmbmRlZiBBUElfVFJBTlNQT1JUX0VOVU1TX0hfCisjZGVmaW5lIEFQSV9U
UkFOU1BPUlRfRU5VTVNfSF8KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFNlZSBodHRwczov
L3czYy5naXRodWIuaW8vd2VicnRjLXBjLyNydGNpY2V0cmFuc3BvcnRzdGF0ZQorLy8gTm90ZSB0
aGF0IGtGYWlsZWQgaXMgY3VycmVudGx5IG5vdCBhIHRlcm1pbmFsIHN0YXRlLCBhbmQgYSB0cmFu
c3BvcnQgbWlnaHQKKy8vIGluY29ycmVjdGx5IGJlIG1hcmtlZCBhcyBmYWlsZWQgd2hpbGUgZ2F0
aGVyaW5nIGNhbmRpZGF0ZXMsIHNlZQorLy8gYnVncy53ZWJydGMub3JnLzg4MzMKK2VudW0gY2xh
c3MgSWNlVHJhbnNwb3J0U3RhdGUgeworICBrTmV3LAorICBrQ2hlY2tpbmcsCisgIGtDb25uZWN0
ZWQsCisgIGtDb21wbGV0ZWQsCisgIGtGYWlsZWQsCisgIGtEaXNjb25uZWN0ZWQsCisgIGtDbG9z
ZWQsCit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1RSQU5T
UE9SVF9FTlVNU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9nb29nX2NjX2ZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2dvb2dfY2NfZmFj
dG9yeS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMTllMmRjZjg0YWJjYjhkM2ZmZGM2OTYzOTE5YmI3ZDI0NzFl
MDg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9nb29nX2NjX2ZhY3RvcnkuY2MKQEAgLTAsMCArMSw0MyBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L2dvb2df
Y2NfZmFjdG9yeS5oIgorCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVk
ZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtf
Y29udHJvbC5oIgorbmFtZXNwYWNlIHdlYnJ0YyB7CitHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZh
Y3Rvcnk6Okdvb2dDY05ldHdvcmtDb250cm9sbGVyRmFjdG9yeSgKKyAgICBSdGNFdmVudExvZyog
ZXZlbnRfbG9nKQorICAgIDogZXZlbnRfbG9nXyhldmVudF9sb2cpIHt9CisKK3N0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrQ29udHJvbGxlckludGVyZmFjZT4KK0dvb2dDY05ldHdvcmtDb250cm9sbGVy
RmFjdG9yeTo6Q3JlYXRlKE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGNvbmZpZykgeworICByZXR1
cm4gYWJzbDo6bWFrZV91bmlxdWU8R29vZ0NjTmV0d29ya0NvbnRyb2xsZXI+KGV2ZW50X2xvZ18s
IGNvbmZpZywgZmFsc2UpOworfQorCitUaW1lRGVsdGEgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJG
YWN0b3J5OjpHZXRQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdCB7CisgIGNvbnN0IGludDY0X3Qga1Vw
ZGF0ZUludGVydmFsTXMgPSAyNTsKKyAgcmV0dXJuIFRpbWVEZWx0YTo6bXMoa1VwZGF0ZUludGVy
dmFsTXMpOworfQorCitHb29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6R29v
Z0NjRmVlZGJhY2tOZXR3b3JrQ29udHJvbGxlckZhY3RvcnkoCisgICAgUnRjRXZlbnRMb2cqIGV2
ZW50X2xvZykKKyAgICA6IGV2ZW50X2xvZ18oZXZlbnRfbG9nKSB7fQorCitzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0NvbnRyb2xsZXJJbnRlcmZhY2U+CitHb29nQ2NGZWVkYmFja05ldHdvcmtDb250
cm9sbGVyRmFjdG9yeTo6Q3JlYXRlKE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGNvbmZpZykgewor
ICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8R29vZ0NjTmV0d29ya0NvbnRyb2xsZXI+KGV2ZW50
X2xvZ18sIGNvbmZpZywgdHJ1ZSk7Cit9CisKK1RpbWVEZWx0YSBHb29nQ2NGZWVkYmFja05ldHdv
cmtDb250cm9sbGVyRmFjdG9yeTo6R2V0UHJvY2Vzc0ludGVydmFsKCkgY29uc3QgeworICBjb25z
dCBpbnQ2NF90IGtVcGRhdGVJbnRlcnZhbE1zID0gMjU7CisgIHJldHVybiBUaW1lRGVsdGE6Om1z
KGtVcGRhdGVJbnRlcnZhbE1zKTsKK30KK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3Bv
cnQvZ29vZ19jY19mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2dvb2dfY2NfZmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlM2Iz
MTcyZDAyZmQ2ZmZhMGIxZjNmZmUzMzhjZTU3ZTJhNTc0ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2dv
b2dfY2NfZmFjdG9yeS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAy
MDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaWZuZGVmIEFQSV9UUkFOU1BPUlRfR09PR19DQ19GQUNUT1JZX0hfCisjZGVmaW5lIEFQSV9U
UkFOU1BPUlRfR09PR19DQ19GQUNUT1JZX0hfCisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVk
ZSAiYXBpL3RyYW5zcG9ydC9uZXR3b3JrX2NvbnRyb2wuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CitjbGFzcyBSdGNFdmVudExvZzsKKworY2xhc3MgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0
b3J5CisgICAgOiBwdWJsaWMgTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlIHsKKyBw
dWJsaWM6CisgIGV4cGxpY2l0IEdvb2dDY05ldHdvcmtDb250cm9sbGVyRmFjdG9yeShSdGNFdmVu
dExvZyopOworICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRyb2xsZXJJbnRlcmZhY2U+IENy
ZWF0ZSgKKyAgICAgIE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGNvbmZpZykgb3ZlcnJpZGU7Cisg
IFRpbWVEZWx0YSBHZXRQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdCBvdmVycmlkZTsKKworIHByaXZh
dGU6CisgIFJ0Y0V2ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOworfTsKKworLy8gRmFjdG9yeSB0
byBjcmVhdGUgcGFja2V0IGZlZWRiYWNrIG9ubHkgR29vZ0NDLCB0aGlzIGNhbiBiZSB1c2VkIGZv
cgorLy8gY29ubmVjdGlvbnMgcHJvdmlkaW5nIHBhY2tldCByZWNlaXZlIHRpbWUgZmVlZGJhY2sg
YnV0IG5vIG90aGVyIHJlcG9ydHMuCitjbGFzcyBHb29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9s
bGVyRmFjdG9yeQorICAgIDogcHVibGljIE5ldHdvcmtDb250cm9sbGVyRmFjdG9yeUludGVyZmFj
ZSB7CisgcHVibGljOgorICBleHBsaWNpdCBHb29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9sbGVy
RmFjdG9yeShSdGNFdmVudExvZyopOworICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRyb2xs
ZXJJbnRlcmZhY2U+IENyZWF0ZSgKKyAgICAgIE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGNvbmZp
Zykgb3ZlcnJpZGU7CisgIFRpbWVEZWx0YSBHZXRQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdCBvdmVy
cmlkZTsKKworIHByaXZhdGU6CisgIFJ0Y0V2ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOworfTsK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVFJBTlNQT1JUX0dPT0df
Q0NfRkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVz
LmNjCmluZGV4IDQ4YmRjYWIxNjJiYmUyYTA4ZjJhZjIyZGIwMjVhZjkzYjcxZjhjM2QuLjgwMjE0
ZGUxYTIzODEyNDc4NzViYTEzZjFjMWFhYWQ2ZTMwYjE4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvbmV0d29ya190
eXBlcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuY2MKQEAgLTM4LDcgKzM4LDcgQEAgc3RkOjp2ZWN0
b3I8UGFja2V0UmVzdWx0PiBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2s6OlJlY2VpdmVkV2l0aFNl
bmRJbmZvKCkKICAgICBjb25zdCB7CiAgIHN0ZDo6dmVjdG9yPFBhY2tldFJlc3VsdD4gcmVzOwog
ICBmb3IgKGNvbnN0IFBhY2tldFJlc3VsdCYgZmIgOiBwYWNrZXRfZmVlZGJhY2tzKSB7Ci0gICAg
aWYgKGZiLnJlY2VpdmVfdGltZS5Jc0Zpbml0ZSgpICYmIGZiLnNlbnRfcGFja2V0Lmhhc192YWx1
ZSgpKSB7CisgICAgaWYgKGZiLnJlY2VpdmVfdGltZS5Jc0Zpbml0ZSgpKSB7CiAgICAgICByZXMu
cHVzaF9iYWNrKGZiKTsKICAgICB9CiAgIH0KQEAgLTQ4LDcgKzQ4LDcgQEAgc3RkOjp2ZWN0b3I8
UGFja2V0UmVzdWx0PiBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2s6OlJlY2VpdmVkV2l0aFNlbmRJ
bmZvKCkKIHN0ZDo6dmVjdG9yPFBhY2tldFJlc3VsdD4gVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNr
OjpMb3N0V2l0aFNlbmRJbmZvKCkgY29uc3QgewogICBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+
IHJlczsKICAgZm9yIChjb25zdCBQYWNrZXRSZXN1bHQmIGZiIDogcGFja2V0X2ZlZWRiYWNrcykg
ewotICAgIGlmIChmYi5yZWNlaXZlX3RpbWUuSXNQbHVzSW5maW5pdHkoKSAmJiBmYi5zZW50X3Bh
Y2tldC5oYXNfdmFsdWUoKSkgeworICAgIGlmIChmYi5yZWNlaXZlX3RpbWUuSXNQbHVzSW5maW5p
dHkoKSkgewogICAgICAgcmVzLnB1c2hfYmFjayhmYik7CiAgICAgfQogICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0
L25ldHdvcmtfdHlwZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5oCmluZGV4IGFkMjBhYmM1M2Q3MTBmODIw
ZDg4NGFmNjJkY2Y5MTU0NDBiNmI5OGEuLjBmMWQ3YWI2ODMzNGMzZDQwZWYwOWEyOWJkMzc2Zjcy
N2ZjNmZlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5o
CkBAIC04OCwxMiArODgsMTMgQEAgc3RydWN0IFBhY2VkUGFja2V0SW5mbyB7CiBzdHJ1Y3QgU2Vu
dFBhY2tldCB7CiAgIFRpbWVzdGFtcCBzZW5kX3RpbWUgPSBUaW1lc3RhbXA6OlBsdXNJbmZpbml0
eSgpOwogICBEYXRhU2l6ZSBzaXplID0gRGF0YVNpemU6Olplcm8oKTsKKyAgRGF0YVNpemUgcHJp
b3JfdW5hY2tlZF9kYXRhID0gRGF0YVNpemU6Olplcm8oKTsKICAgUGFjZWRQYWNrZXRJbmZvIHBh
Y2luZ19pbmZvOwogICAvLyBUcmFuc3BvcnQgaW5kZXBlbmRlbnQgc2VxdWVuY2UgbnVtYmVyLCBh
bnkgdHJhY2tlZCBwYWNrZXQgc2hvdWxkIGhhdmUgYQogICAvLyBzZXF1ZW5jZSBudW1iZXIgdGhh
dCBpcyB1bmlxdWUgb3ZlciB0aGUgd2hvbGUgY2FsbCBhbmQgaW5jcmVhc2luZyBieSAxIGZvcgog
ICAvLyBlYWNoIHBhY2tldC4KICAgaW50NjRfdCBzZXF1ZW5jZV9udW1iZXI7Ci0gIC8vIERhdGEg
aW4gZmxpZ2h0IHdoZW4gdGhlIHBhY2tldCB3YXMgc2VudCwgaW5jbHVkaW5nIHRoZSBwYWNrZXQu
CisgIC8vIFRyYWNrZWQgZGF0YSBpbiBmbGlnaHQgd2hlbiB0aGUgcGFja2V0IHdhcyBzZW50LCBl
eGNsdWRpbmcgdW5hY2tlZCBkYXRhLgogICBEYXRhU2l6ZSBkYXRhX2luX2ZsaWdodCA9IERhdGFT
aXplOjpaZXJvKCk7CiB9OwogCkBAIC0xMjUsNyArMTI2LDcgQEAgc3RydWN0IFBhY2tldFJlc3Vs
dCB7CiAgIFBhY2tldFJlc3VsdChjb25zdCBQYWNrZXRSZXN1bHQmKTsKICAgflBhY2tldFJlc3Vs
dCgpOwogCi0gIGFic2w6Om9wdGlvbmFsPFNlbnRQYWNrZXQ+IHNlbnRfcGFja2V0OworICBTZW50
UGFja2V0IHNlbnRfcGFja2V0OwogICBUaW1lc3RhbXAgcmVjZWl2ZV90aW1lID0gVGltZXN0YW1w
OjpQbHVzSW5maW5pdHkoKTsKIH07CiAKQEAgLTEzOSw2ICsxNDAsOSBAQCBzdHJ1Y3QgVHJhbnNw
b3J0UGFja2V0c0ZlZWRiYWNrIHsKICAgRGF0YVNpemUgcHJpb3JfaW5fZmxpZ2h0ID0gRGF0YVNp
emU6Olplcm8oKTsKICAgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiBwYWNrZXRfZmVlZGJhY2tz
OwogCisgIC8vIEFycml2YWwgdGltZXMgZm9yIG1lc3NhZ2VzIHdpdGhvdXQgc2VuZCB0aW1lIGlu
Zm9ybWF0aW9uLgorICBzdGQ6OnZlY3RvcjxUaW1lc3RhbXA+IHNlbmRsZXNzX2Fycml2YWxfdGlt
ZXM7CisKICAgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiBSZWNlaXZlZFdpdGhTZW5kSW5mbygp
IGNvbnN0OwogICBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+IExvc3RXaXRoU2VuZEluZm8oKSBj
b25zdDsKICAgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiBQYWNrZXRzV2l0aEZlZWRiYWNrKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdHJhbnNwb3J0L3Rlc3QvbmV0d29ya19jb250cm9sX3Rlc3Rlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvdGVzdC9u
ZXR3b3JrX2NvbnRyb2xfdGVzdGVyLmNjCmluZGV4IDJlZGFiZDA3MTdlNTk0OWEwYmU3NzQ0YWM2
YzA0M2RkOWU5ZWUwMjkuLmM1OTBhZTg4YmM0MTMwYTc4YzE2ZDVkMDgzMjE2YjdjOTViMmIwMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90cmFuc3BvcnQvdGVzdC9uZXR3b3JrX2NvbnRyb2xfdGVzdGVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvdGVzdC9uZXR3
b3JrX2NvbnRyb2xfdGVzdGVyLmNjCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgTmV0d29ya0NvbnRy
b2xsZXJUZXN0ZXI6OlJ1blNpbXVsYXRpb24oVGltZURlbHRhIGR1cmF0aW9uLAogICAgIGlmIChz
dGF0ZV8uY29uZ2VzdGlvbl93aW5kb3cgJiYgc3RhdGVfLmNvbmdlc3Rpb25fd2luZG93LT5Jc0Zp
bml0ZSgpKSB7CiAgICAgICBEYXRhU2l6ZSBkYXRhX2luX2ZsaWdodCA9IERhdGFTaXplOjpaZXJv
KCk7CiAgICAgICBmb3IgKFBhY2tldFJlc3VsdCYgcGFja2V0IDogb3V0c3RhbmRpbmdfcGFja2V0
c18pCi0gICAgICAgIGRhdGFfaW5fZmxpZ2h0ICs9IHBhY2tldC5zZW50X3BhY2tldC0+c2l6ZTsK
KyAgICAgICAgZGF0YV9pbl9mbGlnaHQgKz0gcGFja2V0LnNlbnRfcGFja2V0LnNpemU7CiAgICAg
ICBpZiAoZGF0YV9pbl9mbGlnaHQgPiAqc3RhdGVfLmNvbmdlc3Rpb25fd2luZG93KQogICAgICAg
ICBzZW5kX3BhY2tldCA9IGZhbHNlOwogICAgIH0KQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBOZXR3
b3JrQ29udHJvbGxlclRlc3Rlcjo6UnVuU2ltdWxhdGlvbihUaW1lRGVsdGEgZHVyYXRpb24sCiAg
ICAgICBzZW50X3BhY2tldC5zZXF1ZW5jZV9udW1iZXIgPSBwYWNrZXRfc2VxdWVuY2VfbnVtYmVy
XysrOwogICAgICAgc2VudF9wYWNrZXQuZGF0YV9pbl9mbGlnaHQgPSBzZW50X3BhY2tldC5zaXpl
OwogICAgICAgZm9yIChQYWNrZXRSZXN1bHQmIHBhY2tldCA6IG91dHN0YW5kaW5nX3BhY2tldHNf
KQotICAgICAgICBzZW50X3BhY2tldC5kYXRhX2luX2ZsaWdodCArPSBwYWNrZXQuc2VudF9wYWNr
ZXQtPnNpemU7CisgICAgICAgIHNlbnRfcGFja2V0LmRhdGFfaW5fZmxpZ2h0ICs9IHBhY2tldC5z
ZW50X3BhY2tldC5zaXplOwogICAgICAgVXBkYXRlKCZzdGF0ZV8sIGNvbnRyb2xsZXJfLT5PblNl
bnRQYWNrZXQoc2VudF9wYWNrZXQpKTsKIAogICAgICAgVGltZURlbHRhIHRpbWVfaW5fZmxpZ2h0
ID0gc2VudF9wYWNrZXQuc2l6ZSAvIGFjdHVhbF9iYW5kd2lkdGg7CkBAIC0xMjAsNyArMTIwLDcg
QEAgdm9pZCBOZXR3b3JrQ29udHJvbGxlclRlc3Rlcjo6UnVuU2ltdWxhdGlvbihUaW1lRGVsdGEg
ZHVyYXRpb24sCiAgICAgICBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2sgZmVlZGJhY2s7CiAgICAg
ICBmZWVkYmFjay5wcmlvcl9pbl9mbGlnaHQgPSBEYXRhU2l6ZTo6WmVybygpOwogICAgICAgZm9y
IChQYWNrZXRSZXN1bHQmIHBhY2tldCA6IG91dHN0YW5kaW5nX3BhY2tldHNfKQotICAgICAgICBm
ZWVkYmFjay5wcmlvcl9pbl9mbGlnaHQgKz0gcGFja2V0LnNlbnRfcGFja2V0LT5zaXplOworICAg
ICAgICBmZWVkYmFjay5wcmlvcl9pbl9mbGlnaHQgKz0gcGFja2V0LnNlbnRfcGFja2V0LnNpemU7
CiAgICAgICB3aGlsZSAoIW91dHN0YW5kaW5nX3BhY2tldHNfLmVtcHR5KCkgJiYKICAgICAgICAg
ICAgICBjdXJyZW50X3RpbWVfID49IG91dHN0YW5kaW5nX3BhY2tldHNfLmZyb250KCkucmVjZWl2
ZV90aW1lICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGlvbl9k
ZWxheSkgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgTmV0d29ya0NvbnRyb2xsZXJUZXN0ZXI6
OlJ1blNpbXVsYXRpb24oVGltZURlbHRhIGR1cmF0aW9uLAogICAgICAgICAgIGZlZWRiYWNrLnBh
Y2tldF9mZWVkYmFja3MuYmFjaygpLnJlY2VpdmVfdGltZSArIHByb3BhZ2F0aW9uX2RlbGF5Owog
ICAgICAgZmVlZGJhY2suZGF0YV9pbl9mbGlnaHQgPSBEYXRhU2l6ZTo6WmVybygpOwogICAgICAg
Zm9yIChQYWNrZXRSZXN1bHQmIHBhY2tldCA6IG91dHN0YW5kaW5nX3BhY2tldHNfKQotICAgICAg
ICBmZWVkYmFjay5kYXRhX2luX2ZsaWdodCArPSBwYWNrZXQuc2VudF9wYWNrZXQtPnNpemU7Cisg
ICAgICAgIGZlZWRiYWNrLmRhdGFfaW5fZmxpZ2h0ICs9IHBhY2tldC5zZW50X3BhY2tldC5zaXpl
OwogICAgICAgVXBkYXRlKCZzdGF0ZV8sIGNvbnRyb2xsZXJfLT5PblRyYW5zcG9ydFBhY2tldHNG
ZWVkYmFjayhmZWVkYmFjaykpOwogICAgIH0KICAgICBjdXJyZW50X3RpbWVfICs9IHBhY2tldF9p
bnRlcnZhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS91bml0cy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS91bml0cy9CVUlMRC5nbgppbmRleCA3ZGJkZGY0ZTYyMmY0ZWQ3ZmJj
MWY3M2ZjYzk1MmRlMzQyOGZiZTZiLi43ZTE1MGYxNzY2NzliMjMzNDM1NzFlMWQxNDhiMmIzMDky
OWJjZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdW5pdHMvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL0JVSUxELmduCkBAIC05LDYgKzksNyBAQAogaW1wb3J0
KCIuLi8uLi93ZWJydGMuZ25pIikKIAogcnRjX3NvdXJjZV9zZXQoImRhdGFfcmF0ZSIpIHsKKyAg
dmlzaWJpbGl0eSA9IFsgIioiIF0KICAgc291cmNlcyA9IFsKICAgICAiZGF0YV9yYXRlLmNjIiwK
ICAgICAiZGF0YV9yYXRlLmgiLApAQCAtMTgsMTEgKzE5LDEzIEBAIHJ0Y19zb3VyY2Vfc2V0KCJk
YXRhX3JhdGUiKSB7CiAgICAgIjpkYXRhX3NpemUiLAogICAgICI6dGltZV9kZWx0YSIsCiAgICAg
Ii4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCi0gICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAorICAgICIuLi8uLi9y
dGNfYmFzZS91bml0czp1bml0X2Jhc2UiLAogICBdCiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJkYXRh
X3NpemUiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIHNvdXJjZXMgPSBbCiAgICAgImRh
dGFfc2l6ZS5jYyIsCiAgICAgImRhdGFfc2l6ZS5oIiwKQEAgLTMwLDEwICszMywxMyBAQCBydGNf
c291cmNlX3NldCgiZGF0YV9zaXplIikgewogCiAgIGRlcHMgPSBbCiAgICAgIi4uLy4uL3J0Y19i
YXNlOmNoZWNrcyIsCi0gICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAg
ICAiLi4vLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAorICAgICIuLi8uLi9ydGNfYmFzZS91bml0
czp1bml0X2Jhc2UiLAogICBdCiB9CisKIHJ0Y19zb3VyY2Vfc2V0KCJ0aW1lX2RlbHRhIikgewor
ICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBzb3VyY2VzID0gWwogICAgICJ0aW1lX2RlbHRhLmNj
IiwKICAgICAidGltZV9kZWx0YS5oIiwKQEAgLTQxLDExICs0NywxMyBAQCBydGNfc291cmNlX3Nl
dCgidGltZV9kZWx0YSIpIHsKIAogICBkZXBzID0gWwogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVj
a3MiLAotICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4u
L3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2UvdW5pdHM6dW5pdF9i
YXNlIiwKICAgXQogfQogCiBydGNfc291cmNlX3NldCgidGltZXN0YW1wIikgeworICB2aXNpYmls
aXR5ID0gWyAiKiIgXQogICBzb3VyY2VzID0gWwogICAgICJ0aW1lc3RhbXAuY2MiLAogICAgICJ0
aW1lc3RhbXAuaCIsCkBAIC01NCw3ICs2Miw4IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ0aW1lc3RhbXAi
KSB7CiAgIGRlcHMgPSBbCiAgICAgIjp0aW1lX2RlbHRhIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6
Y2hlY2tzIiwKLSAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIu
Li8uLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIsCisgICAgIi4uLy4uL3J0Y19iYXNlL3VuaXRzOnVu
aXRfYmFzZSIsCiAgIF0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfcmF0ZS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3JhdGUuY2MKaW5kZXgg
OTE3MDYyNzcxNTg0OTgwOWZjMGRmY2Q2YzM4NTVlMDc4Nzc1ZWVhMi4uZDcyZDk1OGMwMjhmOTc2
YjJjMTUwZjJkNjdkZjBhM2NiZGMwZjYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfcmF0ZS5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRl
LmNjCkBAIC0xNCw3ICsxNCw3IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1zdGQ6OnN0cmlu
ZyBUb1N0cmluZyhjb25zdCBEYXRhUmF0ZSYgdmFsdWUpIHsKK3N0ZDo6c3RyaW5nIFRvU3RyaW5n
KERhdGFSYXRlIHZhbHVlKSB7CiAgIGNoYXIgYnVmWzY0XTsKICAgcnRjOjpTaW1wbGVTdHJpbmdC
dWlsZGVyIHNiKGJ1Zik7CiAgIGlmICh2YWx1ZS5Jc0luZmluaXRlKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRh
X3JhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91
bml0cy9kYXRhX3JhdGUuaAppbmRleCA0YmI5ODhiNjU4ODhiYjkzNGFkZGFhZGZkMDYyOWY2MTk2
MjYyZTkyLi43MTE5Mjg0ODc0ZTkyYjdjNTRlOGQyY2RhNTU1NTg5MmE1YTNiZjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMv
ZGF0YV9yYXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3VuaXRzL2RhdGFfcmF0ZS5oCkBAIC0xNSwyMiArMTUsMTcgQEAKICNpbmNsdWRlIDxv
c3RyZWFtPiAgLy8gbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCiAjZW5kaWYg
ICAgICAgICAgICAgIC8vIFVOSVRfVEVTVAogCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVk
ZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNs
dWRlIDxzdHJpbmc+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CiAKICNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9zaXplLmgiCiAjaW5jbHVkZSAiYXBpL3Vu
aXRzL3RpbWVfZGVsdGEuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS91bml0cy91bml0X2Jhc2UuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1l
c3BhY2UgZGF0YV9yYXRlX2ltcGwgewotY29uc3RleHByIGludDY0X3Qga1BsdXNJbmZpbml0eVZh
bCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOwotCiBpbmxpbmUgaW50NjRf
dCBNaWNyb2JpdHMoY29uc3QgRGF0YVNpemUmIHNpemUpIHsKICAgY29uc3RleHByIGludDY0X3Qg
a01heEJlZm9yZUNvbnZlcnNpb24gPQogICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWF4KCkgLyA4MDAwMDAwOwpAQCAtNDMsMTg0ICszOCw2NCBAQCBpbmxpbmUgaW50NjRfdCBN
aWNyb2JpdHMoY29uc3QgRGF0YVNpemUmIHNpemUpIHsKIC8vIERhdGFSYXRlIGlzIGEgY2xhc3Mg
dGhhdCByZXByZXNlbnRzIGEgZ2l2ZW4gZGF0YSByYXRlLiBUaGlzIGNhbiBiZSB1c2VkIHRvCiAv
LyByZXByZXNlbnQgYmFuZHdpZHRoLCBlbmNvZGluZyBiaXRyYXRlLCBldGMuIFRoZSBpbnRlcm5h
bCBzdG9yYWdlIGlzIGJpdHMgcGVyCiAvLyBzZWNvbmQgKGJwcykuCi1jbGFzcyBEYXRhUmF0ZSB7
CitjbGFzcyBEYXRhUmF0ZSBmaW5hbCA6IHB1YmxpYyBydGNfdW5pdHNfaW1wbDo6UmVsYXRpdmVV
bml0PERhdGFSYXRlPiB7CiAgcHVibGljOgogICBEYXRhUmF0ZSgpID0gZGVsZXRlOwotICBzdGF0
aWMgY29uc3RleHByIERhdGFSYXRlIFplcm8oKSB7IHJldHVybiBEYXRhUmF0ZSgwKTsgfQotICBz
dGF0aWMgY29uc3RleHByIERhdGFSYXRlIEluZmluaXR5KCkgewotICAgIHJldHVybiBEYXRhUmF0
ZShkYXRhX3JhdGVfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCk7Ci0gIH0KKyAgc3RhdGljIGNvbnN0
ZXhwciBEYXRhUmF0ZSBJbmZpbml0eSgpIHsgcmV0dXJuIFBsdXNJbmZpbml0eSgpOyB9CiAgIHRl
bXBsYXRlIDxpbnQ2NF90IGJwcz4KICAgc3RhdGljIGNvbnN0ZXhwciBEYXRhUmF0ZSBCaXRzUGVy
U2VjKCkgewotICAgIHN0YXRpY19hc3NlcnQoYnBzID49IDAsICIiKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KGJwcyA8IGRhdGFfcmF0ZV9pbXBsOjprUGx1c0luZmluaXR5VmFsLCAiIik7Ci0gICAgcmV0
dXJuIERhdGFSYXRlKGJwcyk7CisgICAgcmV0dXJuIEZyb21TdGF0aWNWYWx1ZTxicHM+KCk7CiAg
IH0KICAgdGVtcGxhdGUgPGludDY0X3Qga2Jwcz4KICAgc3RhdGljIGNvbnN0ZXhwciBEYXRhUmF0
ZSBLaWxvYml0c1BlclNlYygpIHsKLSAgICBzdGF0aWNfYXNzZXJ0KGticHMgPj0gMCwgIiIpOwot
ICAgIHN0YXRpY19hc3NlcnQoa2JwcyA8IGRhdGFfcmF0ZV9pbXBsOjprUGx1c0luZmluaXR5VmFs
IC8gMTAwMCwgIiIpOwotICAgIHJldHVybiBEYXRhUmF0ZShrYnBzICogMTAwMCk7CisgICAgcmV0
dXJuIEZyb21TdGF0aWNGcmFjdGlvbjxrYnBzLCAxMDAwPigpOwogICB9Ci0KLSAgdGVtcGxhdGUg
PAotICAgICAgdHlwZW5hbWUgVCwKLSAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICBzdGF0aWMgRGF0YVJh
dGUgYnBzKFQgYml0c19wZXJfc2Vjb25kKSB7Ci0gICAgUlRDX0RDSEVDS19HRShiaXRzX3Blcl9z
ZWNvbmQsIDApOwotICAgIFJUQ19EQ0hFQ0tfTFQoYml0c19wZXJfc2Vjb25kLCBkYXRhX3JhdGVf
aW1wbDo6a1BsdXNJbmZpbml0eVZhbCk7Ci0gICAgcmV0dXJuIERhdGFSYXRlKHJ0Yzo6ZGNoZWNr
ZWRfY2FzdDxpbnQ2NF90PihiaXRzX3Blcl9zZWNvbmQpKTsKLSAgfQotICB0ZW1wbGF0ZSA8Ci0g
ICAgICB0eXBlbmFtZSBULAotICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19p
bnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gIHN0YXRpYyBEYXRhUmF0ZSBr
YnBzKFQga2lsb2JpdHNfcGVyX3NlYykgewotICAgIFJUQ19EQ0hFQ0tfR0Uoa2lsb2JpdHNfcGVy
X3NlYywgMCk7Ci0gICAgUlRDX0RDSEVDS19MVChraWxvYml0c19wZXJfc2VjLCBkYXRhX3JhdGVf
aW1wbDo6a1BsdXNJbmZpbml0eVZhbCAvIDEwMDApOwotICAgIHJldHVybiBEYXRhUmF0ZTo6YnBz
KHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90PihraWxvYml0c19wZXJfc2VjKSAqIDEwMDApOwot
ICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAg
ICAgICAgICAgICAgICBudWxscHRyPgotICBzdGF0aWMgRGF0YVJhdGUgYnBzKFQgYml0c19wZXJf
c2Vjb25kKSB7Ci0gICAgaWYgKGJpdHNfcGVyX3NlY29uZCA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjppbmZpbml0eSgpKSB7Ci0gICAgICByZXR1cm4gSW5maW5pdHkoKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgUlRDX0RDSEVDSyghc3RkOjppc25hbihiaXRzX3Blcl9zZWNvbmQpKTsKLSAgICAg
IFJUQ19EQ0hFQ0tfR0UoYml0c19wZXJfc2Vjb25kLCAwKTsKLSAgICAgIFJUQ19EQ0hFQ0tfTFQo
Yml0c19wZXJfc2Vjb25kLCBkYXRhX3JhdGVfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCk7Ci0gICAg
ICByZXR1cm4gRGF0YVJhdGUocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KGJpdHNfcGVyX3Nl
Y29uZCkpOwotICAgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBjb25zdGV4
cHIgRGF0YVJhdGUgYnBzKFQgYml0c19wZXJfc2Vjb25kKSB7CisgICAgcmV0dXJuIEZyb21WYWx1
ZShiaXRzX3Blcl9zZWNvbmQpOwogICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBULAotICAgICAg
ICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6
dmFsdWU+Ojp0eXBlKiA9Ci0gICAgICAgICAgICAgICAgbnVsbHB0cj4KLSAgc3RhdGljIERhdGFS
YXRlIGticHMoVCBraWxvYml0c19wZXJfc2VjKSB7Ci0gICAgcmV0dXJuIERhdGFSYXRlOjpicHMo
a2lsb2JpdHNfcGVyX3NlYyAqIDFlMyk7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0
aWMgY29uc3RleHByIERhdGFSYXRlIGticHMoVCBraWxvYml0c19wZXJfc2VjKSB7CisgICAgcmV0
dXJuIEZyb21GcmFjdGlvbjwxMDAwPihraWxvYml0c19wZXJfc2VjKTsKICAgfQotCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIGJwcygpIGNvbnN0IHsKLSAgICBSVENf
RENIRUNLKElzRmluaXRlKCkpOwotICAgIHJldHVybiBydGM6OmRjaGVja2VkX2Nhc3Q8VD4oYml0
c19wZXJfc2VjXyk7CisgIGNvbnN0ZXhwciBUIGJwcygpIGNvbnN0IHsKKyAgICByZXR1cm4gVG9W
YWx1ZTxUPigpOwogICB9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBl
IGticHMoKSBjb25zdCB7Ci0gICAgUlRDX0RDSEVDSyhJc0Zpbml0ZSgpKTsKLSAgICByZXR1cm4g
cnRjOjpkY2hlY2tlZF9jYXN0PFQ+KFVuc2FmZUtpbG9iaXRzUGVyU2VjKCkpOwotICB9Ci0KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
ZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBUPjo6
dHlwZSBjb25zdGV4cHIgYnBzKCkgY29uc3QgewotICAgIHJldHVybiBJc0luZmluaXRlKCkgPyBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpIDogYml0c19wZXJfc2VjXzsKLSAgfQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFQ+
Ojp0eXBlIGNvbnN0ZXhwciBrYnBzKCkgY29uc3QgewotICAgIHJldHVybiBicHM8VD4oKSAqIDFl
LTM7CisgIFQga2JwcygpIGNvbnN0IHsKKyAgICByZXR1cm4gVG9GcmFjdGlvbjwxMDAwLCBUPigp
OwogICB9Ci0KICAgY29uc3RleHByIGludDY0X3QgYnBzX29yKGludDY0X3QgZmFsbGJhY2tfdmFs
dWUpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNGaW5pdGUoKSA/IGJpdHNfcGVyX3NlY18gOiBmYWxs
YmFja192YWx1ZTsKKyAgICByZXR1cm4gVG9WYWx1ZU9yKGZhbGxiYWNrX3ZhbHVlKTsKICAgfQog
ICBjb25zdGV4cHIgaW50NjRfdCBrYnBzX29yKGludDY0X3QgZmFsbGJhY2tfdmFsdWUpIGNvbnN0
IHsKLSAgICByZXR1cm4gSXNGaW5pdGUoKSA/IFVuc2FmZUtpbG9iaXRzUGVyU2VjKCkgOiBmYWxs
YmFja192YWx1ZTsKLSAgfQotCi0gIGNvbnN0ZXhwciBib29sIElzWmVybygpIGNvbnN0IHsgcmV0
dXJuIGJpdHNfcGVyX3NlY18gPT0gMDsgfQotICBjb25zdGV4cHIgYm9vbCBJc0luZmluaXRlKCkg
Y29uc3QgewotICAgIHJldHVybiBiaXRzX3Blcl9zZWNfID09IGRhdGFfcmF0ZV9pbXBsOjprUGx1
c0luZmluaXR5VmFsOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIElzRmluaXRlKCkgY29uc3QgeyBy
ZXR1cm4gIUlzSW5maW5pdGUoKTsgfQotICBEYXRhUmF0ZSBDbGFtcGVkKERhdGFSYXRlIG1pbl9y
YXRlLCBEYXRhUmF0ZSBtYXhfcmF0ZSkgY29uc3QgewotICAgIHJldHVybiBzdGQ6Om1heChtaW5f
cmF0ZSwgc3RkOjptaW4oKnRoaXMsIG1heF9yYXRlKSk7Ci0gIH0KLSAgdm9pZCBDbGFtcChEYXRh
UmF0ZSBtaW5fcmF0ZSwgRGF0YVJhdGUgbWF4X3JhdGUpIHsKLSAgICAqdGhpcyA9IENsYW1wZWQo
bWluX3JhdGUsIG1heF9yYXRlKTsKLSAgfQotICBEYXRhUmF0ZSBvcGVyYXRvci0oY29uc3QgRGF0
YVJhdGUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIERhdGFSYXRlOjpicHMoYnBzKCkgLSBv
dGhlci5icHMoKSk7Ci0gIH0KLSAgRGF0YVJhdGUgb3BlcmF0b3IrKGNvbnN0IERhdGFSYXRlJiBv
dGhlcikgY29uc3QgewotICAgIHJldHVybiBEYXRhUmF0ZTo6YnBzKGJwcygpICsgb3RoZXIuYnBz
KCkpOwotICB9Ci0gIERhdGFSYXRlJiBvcGVyYXRvci09KGNvbnN0IERhdGFSYXRlJiBvdGhlcikg
ewotICAgICp0aGlzID0gKnRoaXMgLSBvdGhlcjsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSAg
RGF0YVJhdGUmIG9wZXJhdG9yKz0oY29uc3QgRGF0YVJhdGUmIG90aGVyKSB7Ci0gICAgKnRoaXMg
PSAqdGhpcyArIG90aGVyOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBjb25zdGV4cHIgZG91
YmxlIG9wZXJhdG9yLyhjb25zdCBEYXRhUmF0ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4g
YnBzPGRvdWJsZT4oKSAvIG90aGVyLmJwczxkb3VibGU+KCk7Ci0gIH0KLSAgY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBEYXRhUmF0ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4g
Yml0c19wZXJfc2VjXyA9PSBvdGhlci5iaXRzX3Blcl9zZWNfOwotICB9Ci0gIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YVJhdGUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJu
IGJpdHNfcGVyX3NlY18gIT0gb3RoZXIuYml0c19wZXJfc2VjXzsKLSAgfQotICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcjw9KGNvbnN0IERhdGFSYXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVy
biBiaXRzX3Blcl9zZWNfIDw9IG90aGVyLmJpdHNfcGVyX3NlY187Ci0gIH0KLSAgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I+PShjb25zdCBEYXRhUmF0ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1
cm4gYml0c19wZXJfc2VjXyA+PSBvdGhlci5iaXRzX3Blcl9zZWNfOwotICB9Ci0gIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPihjb25zdCBEYXRhUmF0ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1
cm4gYml0c19wZXJfc2VjXyA+IG90aGVyLmJpdHNfcGVyX3NlY187Ci0gIH0KLSAgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IERhdGFSYXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVy
biBiaXRzX3Blcl9zZWNfIDwgb3RoZXIuYml0c19wZXJfc2VjXzsKKyAgICByZXR1cm4gVG9GcmFj
dGlvbk9yPDEwMDA+KGZhbGxiYWNrX3ZhbHVlKTsKICAgfQogCiAgcHJpdmF0ZToKICAgLy8gQml0
cyBwZXIgc2Vjb25kIHVzZWQgaW50ZXJuYWxseSB0byBzaW1wbGlmeSBkZWJ1Z2dpbmcgYnkgbWFr
aW5nIHRoZSB2YWx1ZQogICAvLyBtb3JlIHJlY29nbml6YWJsZS4KLSAgZXhwbGljaXQgY29uc3Rl
eHByIERhdGFSYXRlKGludDY0X3QgYml0c19wZXJfc2Vjb25kKQotICAgICAgOiBiaXRzX3Blcl9z
ZWNfKGJpdHNfcGVyX3NlY29uZCkge30KLSAgY29uc3RleHByIGludDY0X3QgVW5zYWZlS2lsb2Jp
dHNQZXJTZWMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIChiaXRzX3Blcl9zZWNfICsgNTAwKSAvIDEw
MDA7Ci0gIH0KLSAgaW50NjRfdCBiaXRzX3Blcl9zZWNfOworICBmcmllbmQgY2xhc3MgcnRjX3Vu
aXRzX2ltcGw6OlVuaXRCYXNlPERhdGFSYXRlPjsKKyAgdXNpbmcgUmVsYXRpdmVVbml0OjpSZWxh
dGl2ZVVuaXQ7CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBvbmVfc2lkZWQgPSB0cnVlOwogfTsK
IAotaW5saW5lIERhdGFSYXRlIG9wZXJhdG9yKihjb25zdCBEYXRhUmF0ZSYgcmF0ZSwgY29uc3Qg
ZG91YmxlJiBzY2FsYXIpIHsKLSAgcmV0dXJuIERhdGFSYXRlOjpicHMoc3RkOjpyb3VuZChyYXRl
LmJwcygpICogc2NhbGFyKSk7Ci19Ci1pbmxpbmUgRGF0YVJhdGUgb3BlcmF0b3IqKGNvbnN0IGRv
dWJsZSYgc2NhbGFyLCBjb25zdCBEYXRhUmF0ZSYgcmF0ZSkgewotICByZXR1cm4gcmF0ZSAqIHNj
YWxhcjsKLX0KLWlubGluZSBEYXRhUmF0ZSBvcGVyYXRvciooY29uc3QgRGF0YVJhdGUmIHJhdGUs
IGNvbnN0IGludDY0X3QmIHNjYWxhcikgewotICByZXR1cm4gRGF0YVJhdGU6OmJwcyhyYXRlLmJw
cygpICogc2NhbGFyKTsKLX0KLWlubGluZSBEYXRhUmF0ZSBvcGVyYXRvciooY29uc3QgaW50NjRf
dCYgc2NhbGFyLCBjb25zdCBEYXRhUmF0ZSYgcmF0ZSkgewotICByZXR1cm4gcmF0ZSAqIHNjYWxh
cjsKLX0KLWlubGluZSBEYXRhUmF0ZSBvcGVyYXRvciooY29uc3QgRGF0YVJhdGUmIHJhdGUsIGNv
bnN0IGludDMyX3QmIHNjYWxhcikgewotICByZXR1cm4gRGF0YVJhdGU6OmJwcyhyYXRlLmJwcygp
ICogc2NhbGFyKTsKLX0KLWlubGluZSBEYXRhUmF0ZSBvcGVyYXRvciooY29uc3QgaW50MzJfdCYg
c2NhbGFyLCBjb25zdCBEYXRhUmF0ZSYgcmF0ZSkgewotICByZXR1cm4gcmF0ZSAqIHNjYWxhcjsK
LX0KLQotaW5saW5lIERhdGFSYXRlIG9wZXJhdG9yLyhjb25zdCBEYXRhU2l6ZSYgc2l6ZSwgY29u
c3QgVGltZURlbHRhJiBkdXJhdGlvbikgeworaW5saW5lIERhdGFSYXRlIG9wZXJhdG9yLyhjb25z
dCBEYXRhU2l6ZSBzaXplLCBjb25zdCBUaW1lRGVsdGEgZHVyYXRpb24pIHsKICAgcmV0dXJuIERh
dGFSYXRlOjpicHMoZGF0YV9yYXRlX2ltcGw6Ok1pY3JvYml0cyhzaXplKSAvIGR1cmF0aW9uLnVz
KCkpOwogfQotaW5saW5lIFRpbWVEZWx0YSBvcGVyYXRvci8oY29uc3QgRGF0YVNpemUmIHNpemUs
IGNvbnN0IERhdGFSYXRlJiByYXRlKSB7CitpbmxpbmUgVGltZURlbHRhIG9wZXJhdG9yLyhjb25z
dCBEYXRhU2l6ZSBzaXplLCBjb25zdCBEYXRhUmF0ZSByYXRlKSB7CiAgIHJldHVybiBUaW1lRGVs
dGE6OnVzKGRhdGFfcmF0ZV9pbXBsOjpNaWNyb2JpdHMoc2l6ZSkgLyByYXRlLmJwcygpKTsKIH0K
LWlubGluZSBEYXRhU2l6ZSBvcGVyYXRvciooY29uc3QgRGF0YVJhdGUmIHJhdGUsIGNvbnN0IFRp
bWVEZWx0YSYgZHVyYXRpb24pIHsKK2lubGluZSBEYXRhU2l6ZSBvcGVyYXRvciooY29uc3QgRGF0
YVJhdGUgcmF0ZSwgY29uc3QgVGltZURlbHRhIGR1cmF0aW9uKSB7CiAgIGludDY0X3QgbWljcm9i
aXRzID0gcmF0ZS5icHMoKSAqIGR1cmF0aW9uLnVzKCk7CiAgIHJldHVybiBEYXRhU2l6ZTo6Ynl0
ZXMoKG1pY3JvYml0cyArIDQwMDAwMDApIC8gODAwMDAwMCk7CiB9Ci1pbmxpbmUgRGF0YVNpemUg
b3BlcmF0b3IqKGNvbnN0IFRpbWVEZWx0YSYgZHVyYXRpb24sIGNvbnN0IERhdGFSYXRlJiByYXRl
KSB7CitpbmxpbmUgRGF0YVNpemUgb3BlcmF0b3IqKGNvbnN0IFRpbWVEZWx0YSBkdXJhdGlvbiwg
Y29uc3QgRGF0YVJhdGUgcmF0ZSkgewogICByZXR1cm4gcmF0ZSAqIGR1cmF0aW9uOwogfQogCi1z
dGQ6OnN0cmluZyBUb1N0cmluZyhjb25zdCBEYXRhUmF0ZSYgdmFsdWUpOworc3RkOjpzdHJpbmcg
VG9TdHJpbmcoRGF0YVJhdGUgdmFsdWUpOwogCiAjaWZkZWYgVU5JVF9URVNUCiBpbmxpbmUgc3Rk
Ojpvc3RyZWFtJiBvcGVyYXRvcjw8KCAgLy8gbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRj
Ojg5ODIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfcmF0ZV91bml0dGVzdC5jYwpp
bmRleCA4ZTViNjYwNTk0OGZkODhmZGE1MTUzM2MxNWVlNTMxZThjOWIzZDliLi45OTYyOThjMWZj
ZWU4YmZmNjdmMGNmNzhkZDM1MjQxYjE2NzIxYWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRlX3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91
bml0cy9kYXRhX3JhdGVfdW5pdHRlc3QuY2MKQEAgLTEzMCw2ICsxMzAsOSBAQCBURVNUKERhdGFS
YXRlVGVzdCwgTWF0aE9wZXJhdGlvbnMpIHsKIAogICBFWFBFQ1RfRVEocmF0ZV9hIC8gcmF0ZV9i
LCBzdGF0aWNfY2FzdDxkb3VibGU+KGtWYWx1ZUEpIC8ga1ZhbHVlQik7CiAKKyAgRVhQRUNUX0VR
KChyYXRlX2EgLyAxMCkuYnBzKCksIGtWYWx1ZUEgLyAxMCk7CisgIEVYUEVDVF9ORUFSKChyYXRl
X2EgLyAwLjUpLmJwcygpLCBrVmFsdWVBICogMiwgMSk7CisKICAgRGF0YVJhdGUgbXV0YWJsZV9y
YXRlID0gRGF0YVJhdGU6OmJwcyhrVmFsdWVBKTsKICAgbXV0YWJsZV9yYXRlICs9IHJhdGVfYjsK
ICAgRVhQRUNUX0VRKG11dGFibGVfcmF0ZS5icHMoKSwga1ZhbHVlQSArIGtWYWx1ZUIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Vu
aXRzL2RhdGFfc2l6ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS91bml0cy9kYXRhX3NpemUuY2MKaW5kZXggNDQ0MGY4OWQwM2MyZmY4NGExYjUwY2Zh
YmFlNDNmMWU5NzlhOWQ0ZS4uOGE4Nzc4NmM3N2EzZTk3ZWFiNDMzYjk0YWI2NWFjY2ExMTc1ODhh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3VuaXRzL2RhdGFfc2l6ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9zaXplLmNjCkBAIC0xNCw3ICsxNCw3IEBACiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCi1zdGQ6OnN0cmluZyBUb1N0cmluZyhjb25zdCBEYXRhU2l6
ZSYgdmFsdWUpIHsKK3N0ZDo6c3RyaW5nIFRvU3RyaW5nKERhdGFTaXplIHZhbHVlKSB7CiAgIGNo
YXIgYnVmWzY0XTsKICAgcnRjOjpTaW1wbGVTdHJpbmdCdWlsZGVyIHNiKGJ1Zik7CiAgIGlmICh2
YWx1ZS5Jc0luZmluaXRlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3NpemUuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3NpemUuaAppbmRleCA4
OTU4YjI0Njk3MzBjZjIwMGVmYTQ4MjRhODhlODRjNmZiNGZmYzY1Li5iNGNiYjY1MmYzYzkwN2Mw
OTcxOTZlYjVmNzIyZTk2NDNhMTlmMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9zaXplLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfc2l6ZS5o
CkBAIC0xNSwxNDMgKzE1LDQ0IEBACiAjaW5jbHVkZSA8b3N0cmVhbT4gIC8vIG5vLXByZXN1Ym1p
dC1jaGVjayBUT0RPKHdlYnJ0Yzo4OTgyKQogI2VuZGlmICAgICAgICAgICAgICAvLyBVTklUX1RF
U1QKIAotI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPGNtYXRoPgotI2luY2x1ZGUgPGxp
bWl0cz4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAKLSNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZl
X2NvbnZlcnNpb25zLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIGRhdGFfc2l6ZV9pbXBsIHsKLWNvbnN0ZXhw
ciBpbnQ2NF90IGtQbHVzSW5maW5pdHlWYWwgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKTsKLX0gIC8vIG5hbWVzcGFjZSBkYXRhX3NpemVfaW1wbAotCiAvLyBEYXRhU2l6ZSBp
cyBhIGNsYXNzIHJlcHJlc2V0aW5nIGEgY291bnQgb2YgYnl0ZXMuCi1jbGFzcyBEYXRhU2l6ZSB7
CitjbGFzcyBEYXRhU2l6ZSBmaW5hbCA6IHB1YmxpYyBydGNfdW5pdHNfaW1wbDo6UmVsYXRpdmVV
bml0PERhdGFTaXplPiB7CiAgcHVibGljOgogICBEYXRhU2l6ZSgpID0gZGVsZXRlOwotICBzdGF0
aWMgY29uc3RleHByIERhdGFTaXplIFplcm8oKSB7IHJldHVybiBEYXRhU2l6ZSgwKTsgfQotICBz
dGF0aWMgY29uc3RleHByIERhdGFTaXplIEluZmluaXR5KCkgewotICAgIHJldHVybiBEYXRhU2l6
ZShkYXRhX3NpemVfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCk7Ci0gIH0KKyAgc3RhdGljIGNvbnN0
ZXhwciBEYXRhU2l6ZSBJbmZpbml0eSgpIHsgcmV0dXJuIFBsdXNJbmZpbml0eSgpOyB9CiAgIHRl
bXBsYXRlIDxpbnQ2NF90IGJ5dGVzPgogICBzdGF0aWMgY29uc3RleHByIERhdGFTaXplIEJ5dGVz
KCkgewotICAgIHN0YXRpY19hc3NlcnQoYnl0ZXMgPj0gMCwgIiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoYnl0ZXMgPCBkYXRhX3NpemVfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCwgIiIpOwotICAgIHJl
dHVybiBEYXRhU2l6ZShieXRlcyk7CisgICAgcmV0dXJuIEZyb21TdGF0aWNWYWx1ZTxieXRlcz4o
KTsKICAgfQogCiAgIHRlbXBsYXRlIDwKICAgICAgIHR5cGVuYW1lIFQsCi0gICAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVs
bHB0cj4KLSAgc3RhdGljIERhdGFTaXplIGJ5dGVzKFQgYnl0ZXMpIHsKLSAgICBSVENfRENIRUNL
X0dFKGJ5dGVzLCAwKTsKLSAgICBSVENfRENIRUNLX0xUKGJ5dGVzLCBkYXRhX3NpemVfaW1wbDo6
a1BsdXNJbmZpbml0eVZhbCk7Ci0gICAgcmV0dXJuIERhdGFTaXplKHJ0Yzo6ZGNoZWNrZWRfY2Fz
dDxpbnQ2NF90PihieXRlcykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAg
ICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+
Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAgICAgICAgICAgICBudWxscHRyPgorICAgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT46OnR5cGUqID0g
bnVsbHB0cj4KICAgc3RhdGljIERhdGFTaXplIGJ5dGVzKFQgYnl0ZXMpIHsKLSAgICBpZiAoYnl0
ZXMgPT0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKSkgewotICAgICAgcmV0dXJu
IEluZmluaXR5KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIFJUQ19EQ0hFQ0soIXN0ZDo6aXNuYW4o
Ynl0ZXMpKTsKLSAgICAgIFJUQ19EQ0hFQ0tfR0UoYnl0ZXMsIDApOwotICAgICAgUlRDX0RDSEVD
S19MVChieXRlcywgZGF0YV9zaXplX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwpOwotICAgICAgcmV0
dXJuIERhdGFTaXplKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90PihieXRlcykpOwotICAgIH0K
KyAgICByZXR1cm4gRnJvbVZhbHVlKGJ5dGVzKTsKICAgfQotCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUID0gaW50NjRfdD4KLSAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3Jh
bDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIGJ5dGVzKCkgY29uc3QgewotICAgIFJUQ19EQ0hFQ0soSXNG
aW5pdGUoKSk7Ci0gICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihieXRlc18pOwotICB9
Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZSwgVD46OnR5cGUKLSAgYnl0
ZXMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIElzSW5maW5pdGUoKSA/IHN0ZDo6bnVtZXJpY19saW1p
dHM8VD46OmluZmluaXR5KCkgOiBieXRlc187CisgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUsIFQ+Ojp0eXBlIGJ5dGVzKCkgY29uc3QgeworICAg
IHJldHVybiBUb1ZhbHVlPFQ+KCk7CiAgIH0KIAogICBjb25zdGV4cHIgaW50NjRfdCBieXRlc19v
cihpbnQ2NF90IGZhbGxiYWNrX3ZhbHVlKSBjb25zdCB7Ci0gICAgcmV0dXJuIElzRmluaXRlKCkg
PyBieXRlc18gOiBmYWxsYmFja192YWx1ZTsKLSAgfQotCi0gIGNvbnN0ZXhwciBib29sIElzWmVy
bygpIGNvbnN0IHsgcmV0dXJuIGJ5dGVzXyA9PSAwOyB9Ci0gIGNvbnN0ZXhwciBib29sIElzSW5m
aW5pdGUoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGJ5dGVzXyA9PSBkYXRhX3NpemVfaW1wbDo6a1Bs
dXNJbmZpbml0eVZhbDsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBJc0Zpbml0ZSgpIGNvbnN0IHsg
cmV0dXJuICFJc0luZmluaXRlKCk7IH0KLSAgRGF0YVNpemUgb3BlcmF0b3ItKGNvbnN0IERhdGFT
aXplJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBEYXRhU2l6ZTo6Ynl0ZXMoYnl0ZXMoKSAt
IG90aGVyLmJ5dGVzKCkpOwotICB9Ci0gIERhdGFTaXplIG9wZXJhdG9yKyhjb25zdCBEYXRhU2l6
ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gRGF0YVNpemU6OmJ5dGVzKGJ5dGVzKCkgKyBv
dGhlci5ieXRlcygpKTsKLSAgfQotICBEYXRhU2l6ZSYgb3BlcmF0b3ItPShjb25zdCBEYXRhU2l6
ZSYgb3RoZXIpIHsKLSAgICAqdGhpcyA9ICp0aGlzIC0gb3RoZXI7Ci0gICAgcmV0dXJuICp0aGlz
OwotICB9Ci0gIERhdGFTaXplJiBvcGVyYXRvcis9KGNvbnN0IERhdGFTaXplJiBvdGhlcikgewot
ICAgICp0aGlzID0gKnRoaXMgKyBvdGhlcjsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSAgY29u
c3RleHByIGRvdWJsZSBvcGVyYXRvci8oY29uc3QgRGF0YVNpemUmIG90aGVyKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIGJ5dGVzPGRvdWJsZT4oKSAvIG90aGVyLmJ5dGVzPGRvdWJsZT4oKTsKLSAgfQot
ICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERhdGFTaXplJiBvdGhlcikgY29uc3Qg
ewotICAgIHJldHVybiBieXRlc18gPT0gb3RoZXIuYnl0ZXNfOwotICB9Ci0gIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YVNpemUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJu
IGJ5dGVzXyAhPSBvdGhlci5ieXRlc187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
PShjb25zdCBEYXRhU2l6ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gYnl0ZXNfIDw9IG90
aGVyLmJ5dGVzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IERhdGFT
aXplJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBieXRlc18gPj0gb3RoZXIuYnl0ZXNfOwot
ICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBEYXRhU2l6ZSYgb3RoZXIpIGNv
bnN0IHsKLSAgICByZXR1cm4gYnl0ZXNfID4gb3RoZXIuYnl0ZXNfOwotICB9Ci0gIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPChjb25zdCBEYXRhU2l6ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1
cm4gYnl0ZXNfIDwgb3RoZXIuYnl0ZXNfOworICAgIHJldHVybiBUb1ZhbHVlT3IoZmFsbGJhY2tf
dmFsdWUpOwogICB9CiAKICBwcml2YXRlOgotICBleHBsaWNpdCBjb25zdGV4cHIgRGF0YVNpemUo
aW50NjRfdCBieXRlcykgOiBieXRlc18oYnl0ZXMpIHt9Ci0gIGludDY0X3QgYnl0ZXNfOworICBm
cmllbmQgY2xhc3MgcnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlPERhdGFTaXplPjsKKyAgdXNpbmcg
UmVsYXRpdmVVbml0OjpSZWxhdGl2ZVVuaXQ7CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBvbmVf
c2lkZWQgPSB0cnVlOwogfTsKIAotaW5saW5lIERhdGFTaXplIG9wZXJhdG9yKihjb25zdCBEYXRh
U2l6ZSYgc2l6ZSwgY29uc3QgZG91YmxlJiBzY2FsYXIpIHsKLSAgcmV0dXJuIERhdGFTaXplOjpi
eXRlcyhzdGQ6OnJvdW5kKHNpemUuYnl0ZXMoKSAqIHNjYWxhcikpOwotfQotaW5saW5lIERhdGFT
aXplIG9wZXJhdG9yKihjb25zdCBkb3VibGUmIHNjYWxhciwgY29uc3QgRGF0YVNpemUmIHNpemUp
IHsKLSAgcmV0dXJuIHNpemUgKiBzY2FsYXI7Ci19Ci1pbmxpbmUgRGF0YVNpemUgb3BlcmF0b3Iq
KGNvbnN0IERhdGFTaXplJiBzaXplLCBjb25zdCBpbnQ2NF90JiBzY2FsYXIpIHsKLSAgcmV0dXJu
IERhdGFTaXplOjpieXRlcyhzaXplLmJ5dGVzKCkgKiBzY2FsYXIpOwotfQotaW5saW5lIERhdGFT
aXplIG9wZXJhdG9yKihjb25zdCBpbnQ2NF90JiBzY2FsYXIsIGNvbnN0IERhdGFTaXplJiBzaXpl
KSB7Ci0gIHJldHVybiBzaXplICogc2NhbGFyOwotfQotaW5saW5lIERhdGFTaXplIG9wZXJhdG9y
Kihjb25zdCBEYXRhU2l6ZSYgc2l6ZSwgY29uc3QgaW50MzJfdCYgc2NhbGFyKSB7Ci0gIHJldHVy
biBEYXRhU2l6ZTo6Ynl0ZXMoc2l6ZS5ieXRlcygpICogc2NhbGFyKTsKLX0KLWlubGluZSBEYXRh
U2l6ZSBvcGVyYXRvciooY29uc3QgaW50MzJfdCYgc2NhbGFyLCBjb25zdCBEYXRhU2l6ZSYgc2l6
ZSkgewotICByZXR1cm4gc2l6ZSAqIHNjYWxhcjsKLX0KLWlubGluZSBEYXRhU2l6ZSBvcGVyYXRv
ci8oY29uc3QgRGF0YVNpemUmIHNpemUsIGNvbnN0IGludDY0X3QmIHNjYWxhcikgewotICByZXR1
cm4gRGF0YVNpemU6OmJ5dGVzKHNpemUuYnl0ZXMoKSAvIHNjYWxhcik7Ci19Ci0KLXN0ZDo6c3Ry
aW5nIFRvU3RyaW5nKGNvbnN0IERhdGFTaXplJiB2YWx1ZSk7CitzdGQ6OnN0cmluZyBUb1N0cmlu
ZyhEYXRhU2l6ZSB2YWx1ZSk7CiAKICNpZmRlZiBVTklUX1RFU1QKIGlubGluZSBzdGQ6Om9zdHJl
YW0mIG9wZXJhdG9yPDwoICAvLyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS91bml0cy90aW1lX2RlbHRhLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGEuY2MKaW5kZXggZDM4Mzg3YTU2NjlhZWU0Yjk1
MmFkY2NjYTZkODg0YmZlZTdiYzEzYy4uZjkwNDUxYjQyOWE3YTBiMWQ5OWQzYmE5NjhjM2Q2NjE1
Y2JhZDkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGEuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGEuY2MKQEAgLTE0LDcgKzE0
LDcgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLXN0ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0
IFRpbWVEZWx0YSYgdmFsdWUpIHsKK3N0ZDo6c3RyaW5nIFRvU3RyaW5nKFRpbWVEZWx0YSB2YWx1
ZSkgewogICBjaGFyIGJ1Zls2NF07CiAgIHJ0Yzo6U2ltcGxlU3RyaW5nQnVpbGRlciBzYihidWYp
OwogICBpZiAodmFsdWUuSXNQbHVzSW5maW5pdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGEuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1l
X2RlbHRhLmgKaW5kZXggZWMzNjQxNzJhYTE4ZGYzYTg0ZmNjZGNhZmExZmZhYWY5MmNkN2RmZC4u
NjQ1ODM2OTg5MzcxMjBmOTRlMmY2MTEzZGQ2ODUyY2JjOTI0ZGIyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVs
dGEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dW5pdHMvdGltZV9kZWx0YS5oCkBAIC0xNSwyMSArMTUsMTMgQEAKICNpbmNsdWRlIDxvc3RyZWFt
PiAgLy8gbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCiAjZW5kaWYgICAgICAg
ICAgICAgIC8vIFVOSVRfVEVTVAogCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8Y21h
dGg+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3Ry
aW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3VuaXRzL3VuaXRfYmFzZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
LW5hbWVzcGFjZSB0aW1lZGVsdGFfaW1wbCB7Ci1jb25zdGV4cHIgaW50NjRfdCBrUGx1c0luZmlu
aXR5VmFsID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7Ci1jb25zdGV4cHIg
aW50NjRfdCBrTWludXNJbmZpbml0eVZhbCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46
Om1pbigpOwotfSAgLy8gbmFtZXNwYWNlIHRpbWVkZWx0YV9pbXBsCi0KIC8vIFRpbWVEZWx0YSBy
ZXByZXNlbnRzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIHRpbWVzdGFtcHMuIENvbW1vbmx5
IHRoaXMgY2FuCiAvLyBiZSBhIGR1cmF0aW9uLiBIb3dldmVyIHNpbmNlIHR3byBUaW1lc3RhbXBz
IGFyZSBub3QgZ3VhcmFudGVlZCB0byBoYXZlIHRoZQogLy8gc2FtZSBlcG9jaCAodGhleSBtaWdo
dCBjb21lIGZyb20gZGlmZmVyZW50IGNvbXB1dGVycywgbWFraW5nIGV4YWN0CkBAIC0zNywyNDUg
KzI5LDY5IEBAIGNvbnN0ZXhwciBpbnQ2NF90IGtNaW51c0luZmluaXR5VmFsID0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCk7CiAvLyB1bmRlZmluZWQuIFRvIHNpbXBsaWZ5IHVz
YWdlLCBpdCBjYW4gYmUgY29uc3RydWN0ZWQgYW5kIGNvbnZlcnRlZCB0bwogLy8gZGlmZmVyZW50
IHVuaXRzLCBzcGVjaWZpY2FsbHkgc2Vjb25kcyAocyksIG1pbGxpc2Vjb25kcyAobXMpIGFuZAog
Ly8gbWljcm9zZWNvbmRzICh1cykuCi1jbGFzcyBUaW1lRGVsdGEgeworY2xhc3MgVGltZURlbHRh
IGZpbmFsIDogcHVibGljIHJ0Y191bml0c19pbXBsOjpSZWxhdGl2ZVVuaXQ8VGltZURlbHRhPiB7
CiAgcHVibGljOgogICBUaW1lRGVsdGEoKSA9IGRlbGV0ZTsKLSAgc3RhdGljIGNvbnN0ZXhwciBU
aW1lRGVsdGEgWmVybygpIHsgcmV0dXJuIFRpbWVEZWx0YSgwKTsgfQotICBzdGF0aWMgY29uc3Rl
eHByIFRpbWVEZWx0YSBQbHVzSW5maW5pdHkoKSB7Ci0gICAgcmV0dXJuIFRpbWVEZWx0YSh0aW1l
ZGVsdGFfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCk7Ci0gIH0KLSAgc3RhdGljIGNvbnN0ZXhwciBU
aW1lRGVsdGEgTWludXNJbmZpbml0eSgpIHsKLSAgICByZXR1cm4gVGltZURlbHRhKHRpbWVkZWx0
YV9pbXBsOjprTWludXNJbmZpbml0eVZhbCk7Ci0gIH0KICAgdGVtcGxhdGUgPGludDY0X3Qgc2Vj
b25kcz4KICAgc3RhdGljIGNvbnN0ZXhwciBUaW1lRGVsdGEgU2Vjb25kcygpIHsKLSAgICBzdGF0
aWNfYXNzZXJ0KHNlY29uZHMgPiB0aW1lZGVsdGFfaW1wbDo6a01pbnVzSW5maW5pdHlWYWwgLyAx
MDAwMDAwLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChzZWNvbmRzIDwgdGltZWRlbHRhX2ltcGw6
OmtQbHVzSW5maW5pdHlWYWwgLyAxMDAwMDAwLCAiIik7Ci0gICAgcmV0dXJuIFRpbWVEZWx0YShz
ZWNvbmRzICogMTAwMDAwMCk7CisgICAgcmV0dXJuIEZyb21TdGF0aWNGcmFjdGlvbjxzZWNvbmRz
LCAxMDAwMDAwPigpOwogICB9CiAgIHRlbXBsYXRlIDxpbnQ2NF90IG1zPgogICBzdGF0aWMgY29u
c3RleHByIFRpbWVEZWx0YSBNaWxsaXMoKSB7Ci0gICAgc3RhdGljX2Fzc2VydChtcyA+IHRpbWVk
ZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbCAvIDEwMDAsICIiKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KG1zIDwgdGltZWRlbHRhX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwgLyAxMDAwLCAiIik7Ci0g
ICAgcmV0dXJuIFRpbWVEZWx0YShtcyAqIDEwMDApOworICAgIHJldHVybiBGcm9tU3RhdGljRnJh
Y3Rpb248bXMsIDEwMDA+KCk7CiAgIH0KICAgdGVtcGxhdGUgPGludDY0X3QgdXM+CiAgIHN0YXRp
YyBjb25zdGV4cHIgVGltZURlbHRhIE1pY3JvcygpIHsKLSAgICBzdGF0aWNfYXNzZXJ0KHVzID4g
dGltZWRlbHRhX2ltcGw6OmtNaW51c0luZmluaXR5VmFsLCAiIik7Ci0gICAgc3RhdGljX2Fzc2Vy
dCh1cyA8IHRpbWVkZWx0YV9pbXBsOjprUGx1c0luZmluaXR5VmFsLCAiIik7Ci0gICAgcmV0dXJu
IFRpbWVEZWx0YSh1cyk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBlbmFtZSBULAot
ICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+
Ojp0eXBlKiA9IG51bGxwdHI+Ci0gIHN0YXRpYyBUaW1lRGVsdGEgc2Vjb25kcyhUIHNlY29uZHMp
IHsKLSAgICBSVENfRENIRUNLX0dUKHNlY29uZHMsIHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZp
bml0eVZhbCAvIDEwMDAwMDApOwotICAgIFJUQ19EQ0hFQ0tfTFQoc2Vjb25kcywgdGltZWRlbHRh
X2ltcGw6OmtQbHVzSW5maW5pdHlWYWwgLyAxMDAwMDAwKTsKLSAgICByZXR1cm4gVGltZURlbHRh
KHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90PihzZWNvbmRzKSAqIDEwMDAwMDApOworICAgIHJl
dHVybiBGcm9tU3RhdGljVmFsdWU8dXM+KCk7CiAgIH0KLSAgdGVtcGxhdGUgPAotICAgICAgdHlw
ZW5hbWUgVCwKLSAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8
VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICBzdGF0aWMgVGltZURlbHRhIG1zKFQgbWls
bGlzZWNvbmRzKSB7Ci0gICAgUlRDX0RDSEVDS19HVChtaWxsaXNlY29uZHMsIHRpbWVkZWx0YV9p
bXBsOjprTWludXNJbmZpbml0eVZhbCAvIDEwMDApOwotICAgIFJUQ19EQ0hFQ0tfTFQobWlsbGlz
ZWNvbmRzLCB0aW1lZGVsdGFfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCAvIDEwMDApOwotICAgIHJl
dHVybiBUaW1lRGVsdGEocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KG1pbGxpc2Vjb25kcykg
KiAxMDAwKTsKLSAgfQotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBlbmFtZSBULAotICAgICAgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9
IG51bGxwdHI+Ci0gIHN0YXRpYyBUaW1lRGVsdGEgdXMoVCBtaWNyb3NlY29uZHMpIHsKLSAgICBS
VENfRENIRUNLX0dUKG1pY3Jvc2Vjb25kcywgdGltZWRlbHRhX2ltcGw6OmtNaW51c0luZmluaXR5
VmFsKTsKLSAgICBSVENfRENIRUNLX0xUKG1pY3Jvc2Vjb25kcywgdGltZWRlbHRhX2ltcGw6OmtQ
bHVzSW5maW5pdHlWYWwpOwotICAgIHJldHVybiBUaW1lRGVsdGEocnRjOjpkY2hlY2tlZF9jYXN0
PGludDY0X3Q+KG1pY3Jvc2Vjb25kcykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
Ci0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3Bv
aW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAgICAgICAgICAgICBudWxscHRyPgorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgc3RhdGljIFRpbWVEZWx0YSBzZWNvbmRzKFQgc2Vjb25kcykg
ewotICAgIHJldHVybiBUaW1lRGVsdGE6OnVzKHNlY29uZHMgKiAxZTYpOworICAgIHJldHVybiBG
cm9tRnJhY3Rpb248MTAwMDAwMD4oc2Vjb25kcyk7CiAgIH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5n
X3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAgICAgICAgICAgICBudWxscHRyPgorICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgc3RhdGljIFRpbWVEZWx0YSBtcyhUIG1pbGxpc2Vjb25k
cykgewotICAgIHJldHVybiBUaW1lRGVsdGE6OnVzKG1pbGxpc2Vjb25kcyAqIDFlMyk7CisgICAg
cmV0dXJuIEZyb21GcmFjdGlvbjwxMDAwPihtaWxsaXNlY29uZHMpOwogICB9Ci0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBULAotICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlKiA9Ci0gICAgICAgICAgICAgICAgbnVs
bHB0cj4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIHN0YXRpYyBUaW1lRGVsdGEgdXMoVCBt
aWNyb3NlY29uZHMpIHsKLSAgICBpZiAobWljcm9zZWNvbmRzID09IHN0ZDo6bnVtZXJpY19saW1p
dHM8VD46OmluZmluaXR5KCkpIHsKLSAgICAgIHJldHVybiBQbHVzSW5maW5pdHkoKTsKLSAgICB9
IGVsc2UgaWYgKG1pY3Jvc2Vjb25kcyA9PSAtc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5p
dHkoKSkgewotICAgICAgcmV0dXJuIE1pbnVzSW5maW5pdHkoKTsKLSAgICB9IGVsc2UgewotICAg
ICAgUlRDX0RDSEVDSyghc3RkOjppc25hbihtaWNyb3NlY29uZHMpKTsKLSAgICAgIFJUQ19EQ0hF
Q0tfR1QobWljcm9zZWNvbmRzLCB0aW1lZGVsdGFfaW1wbDo6a01pbnVzSW5maW5pdHlWYWwpOwot
ICAgICAgUlRDX0RDSEVDS19MVChtaWNyb3NlY29uZHMsIHRpbWVkZWx0YV9pbXBsOjprUGx1c0lu
ZmluaXR5VmFsKTsKLSAgICAgIHJldHVybiBUaW1lRGVsdGEocnRjOjpkY2hlY2tlZF9jYXN0PGlu
dDY0X3Q+KG1pY3Jvc2Vjb25kcykpOwotICAgIH0KKyAgICByZXR1cm4gRnJvbVZhbHVlKG1pY3Jv
c2Vjb25kcyk7CiAgIH0KLQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+Ci0gIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlw
ZSBzZWNvbmRzKCkgY29uc3QgewotICAgIFJUQ19EQ0hFQ0soSXNGaW5pdGUoKSk7Ci0gICAgcmV0
dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihVbnNhZmVTZWNvbmRzKCkpOworICBUIHNlY29uZHMo
KSBjb25zdCB7CisgICAgcmV0dXJuIFRvRnJhY3Rpb248MTAwMDAwMCwgVD4oKTsKICAgfQogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+Ci0gIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlwZSBtcygpIGNvbnN0IHsKLSAgICBS
VENfRENIRUNLKElzRmluaXRlKCkpOwotICAgIHJldHVybiBydGM6OmRjaGVja2VkX2Nhc3Q8VD4o
VW5zYWZlTWlsbGlzKCkpOworICBUIG1zKCkgY29uc3QgeworICAgIHJldHVybiBUb0ZyYWN0aW9u
PDEwMDAsIFQ+KCk7CiAgIH0KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBpbnQ2NF90PgotICB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVD46OnR5
cGUgdXMoKSBjb25zdCB7Ci0gICAgUlRDX0RDSEVDSyhJc0Zpbml0ZSgpKTsKLSAgICByZXR1cm4g
cnRjOjpkY2hlY2tlZF9jYXN0PFQ+KG1pY3Jvc2Vjb25kc18pOworICBUIHVzKCkgY29uc3Qgewor
ICAgIHJldHVybiBUb1ZhbHVlPFQ+KCk7CiAgIH0KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBp
bnQ2NF90PgotICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2
YWx1ZSwgVD46OnR5cGUgbnMoKSBjb25zdCB7Ci0gICAgUlRDX0RDSEVDS19HRSh1cygpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSAvIDEwMDApOwotICAgIFJUQ19EQ0hFQ0tfTEUodXMo
KSwgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkgLyAxMDAwKTsKLSAgICByZXR1cm4gcnRj
OjpkY2hlY2tlZF9jYXN0PFQ+KHVzKCkgKiAxMDAwKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9h
dGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCi0gIHNlY29uZHMoKSBjb25zdCB7Ci0gICAg
cmV0dXJuIHVzPFQ+KCkgKiAxZS02OwotICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBj
b25zdGV4cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxU
Pjo6dmFsdWUsIFQ+Ojp0eXBlCi0gIG1zKCkgY29uc3QgewotICAgIHJldHVybiB1czxUPigpICog
MWUtMzsKLSAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgY29uc3RleHByIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlw
ZQotICB1cygpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNQbHVzSW5maW5pdHkoKQotICAgICAgICAg
ICAgICAgPyBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpCi0gICAgICAgICAgICAg
ICA6IElzTWludXNJbmZpbml0eSgpID8gLXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5
KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtaWNyb3NlY29uZHNfOwot
ICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCi0gIG5z
KCkgY29uc3QgewotICAgIHJldHVybiB1czxUPigpICogMWUzOworICBUIG5zKCkgY29uc3Qgewor
ICAgIHJldHVybiBUb011bHRpcGxlPDEwMDAsIFQ+KCk7CiAgIH0KIAogICBjb25zdGV4cHIgaW50
NjRfdCBzZWNvbmRzX29yKGludDY0X3QgZmFsbGJhY2tfdmFsdWUpIGNvbnN0IHsKLSAgICByZXR1
cm4gSXNGaW5pdGUoKSA/IFVuc2FmZVNlY29uZHMoKSA6IGZhbGxiYWNrX3ZhbHVlOworICAgIHJl
dHVybiBUb0ZyYWN0aW9uT3I8MTAwMDAwMD4oZmFsbGJhY2tfdmFsdWUpOwogICB9CiAgIGNvbnN0
ZXhwciBpbnQ2NF90IG1zX29yKGludDY0X3QgZmFsbGJhY2tfdmFsdWUpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gSXNGaW5pdGUoKSA/IFVuc2FmZU1pbGxpcygpIDogZmFsbGJhY2tfdmFsdWU7CisgICAg
cmV0dXJuIFRvRnJhY3Rpb25PcjwxMDAwPihmYWxsYmFja192YWx1ZSk7CiAgIH0KICAgY29uc3Rl
eHByIGludDY0X3QgdXNfb3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkgY29uc3QgewotICAgIHJl
dHVybiBJc0Zpbml0ZSgpID8gbWljcm9zZWNvbmRzXyA6IGZhbGxiYWNrX3ZhbHVlOworICAgIHJl
dHVybiBUb1ZhbHVlT3IoZmFsbGJhY2tfdmFsdWUpOwogICB9CiAKICAgVGltZURlbHRhIEFicygp
IGNvbnN0IHsgcmV0dXJuIFRpbWVEZWx0YTo6dXMoc3RkOjphYnModXMoKSkpOyB9Ci0gIGNvbnN0
ZXhwciBib29sIElzWmVybygpIGNvbnN0IHsgcmV0dXJuIG1pY3Jvc2Vjb25kc18gPT0gMDsgfQot
ICBjb25zdGV4cHIgYm9vbCBJc0Zpbml0ZSgpIGNvbnN0IHsgcmV0dXJuICFJc0luZmluaXRlKCk7
IH0KLSAgY29uc3RleHByIGJvb2wgSXNJbmZpbml0ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gbWlj
cm9zZWNvbmRzXyA9PSB0aW1lZGVsdGFfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCB8fAotICAgICAg
ICAgICBtaWNyb3NlY29uZHNfID09IHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbDsK
LSAgfQotICBjb25zdGV4cHIgYm9vbCBJc1BsdXNJbmZpbml0eSgpIGNvbnN0IHsKLSAgICByZXR1
cm4gbWljcm9zZWNvbmRzXyA9PSB0aW1lZGVsdGFfaW1wbDo6a1BsdXNJbmZpbml0eVZhbDsKLSAg
fQotICBjb25zdGV4cHIgYm9vbCBJc01pbnVzSW5maW5pdHkoKSBjb25zdCB7Ci0gICAgcmV0dXJu
IG1pY3Jvc2Vjb25kc18gPT0gdGltZWRlbHRhX2ltcGw6OmtNaW51c0luZmluaXR5VmFsOwotICB9
Ci0gIFRpbWVEZWx0YSBvcGVyYXRvcisoY29uc3QgVGltZURlbHRhJiBvdGhlcikgY29uc3Qgewot
ICAgIGlmIChJc1BsdXNJbmZpbml0eSgpIHx8IG90aGVyLklzUGx1c0luZmluaXR5KCkpIHsKLSAg
ICAgIFJUQ19EQ0hFQ0soIUlzTWludXNJbmZpbml0eSgpKTsKLSAgICAgIFJUQ19EQ0hFQ0soIW90
aGVyLklzTWludXNJbmZpbml0eSgpKTsKLSAgICAgIHJldHVybiBQbHVzSW5maW5pdHkoKTsKLSAg
ICB9IGVsc2UgaWYgKElzTWludXNJbmZpbml0eSgpIHx8IG90aGVyLklzTWludXNJbmZpbml0eSgp
KSB7Ci0gICAgICBSVENfRENIRUNLKCFJc1BsdXNJbmZpbml0eSgpKTsKLSAgICAgIFJUQ19EQ0hF
Q0soIW90aGVyLklzUGx1c0luZmluaXR5KCkpOwotICAgICAgcmV0dXJuIE1pbnVzSW5maW5pdHko
KTsKLSAgICB9Ci0gICAgcmV0dXJuIFRpbWVEZWx0YTo6dXModXMoKSArIG90aGVyLnVzKCkpOwot
ICB9Ci0gIFRpbWVEZWx0YSBvcGVyYXRvci0oY29uc3QgVGltZURlbHRhJiBvdGhlcikgY29uc3Qg
ewotICAgIGlmIChJc1BsdXNJbmZpbml0eSgpIHx8IG90aGVyLklzTWludXNJbmZpbml0eSgpKSB7
Ci0gICAgICBSVENfRENIRUNLKCFJc01pbnVzSW5maW5pdHkoKSk7Ci0gICAgICBSVENfRENIRUNL
KCFvdGhlci5Jc1BsdXNJbmZpbml0eSgpKTsKLSAgICAgIHJldHVybiBQbHVzSW5maW5pdHkoKTsK
LSAgICB9IGVsc2UgaWYgKElzTWludXNJbmZpbml0eSgpIHx8IG90aGVyLklzUGx1c0luZmluaXR5
KCkpIHsKLSAgICAgIFJUQ19EQ0hFQ0soIUlzUGx1c0luZmluaXR5KCkpOwotICAgICAgUlRDX0RD
SEVDSyghb3RoZXIuSXNNaW51c0luZmluaXR5KCkpOwotICAgICAgcmV0dXJuIE1pbnVzSW5maW5p
dHkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIFRpbWVEZWx0YTo6dXModXMoKSAtIG90aGVyLnVzKCkp
OwotICB9Ci0gIFRpbWVEZWx0YSYgb3BlcmF0b3ItPShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSB7
Ci0gICAgKnRoaXMgPSAqdGhpcyAtIG90aGVyOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBU
aW1lRGVsdGEmIG9wZXJhdG9yKz0oY29uc3QgVGltZURlbHRhJiBvdGhlcikgewotICAgICp0aGlz
ID0gKnRoaXMgKyBvdGhlcjsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSAgY29uc3RleHByIGRv
dWJsZSBvcGVyYXRvci8oY29uc3QgVGltZURlbHRhJiBvdGhlcikgY29uc3QgewotICAgIHJldHVy
biB1czxkb3VibGU+KCkgLyBvdGhlci51czxkb3VibGU+KCk7Ci0gIH0KLSAgY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJu
IG1pY3Jvc2Vjb25kc18gPT0gb3RoZXIubWljcm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1
cm4gbWljcm9zZWNvbmRzXyAhPSBvdGhlci5taWNyb3NlY29uZHNfOwotICB9Ci0gIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPD0oY29uc3QgVGltZURlbHRhJiBvdGhlcikgY29uc3QgewotICAgIHJl
dHVybiBtaWNyb3NlY29uZHNfIDw9IG90aGVyLm1pY3Jvc2Vjb25kc187Ci0gIH0KLSAgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAg
cmV0dXJuIG1pY3Jvc2Vjb25kc18gPj0gb3RoZXIubWljcm9zZWNvbmRzXzsKLSAgfQotICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVGltZURlbHRhJiBvdGhlcikgY29uc3QgewotICAg
IHJldHVybiBtaWNyb3NlY29uZHNfID4gb3RoZXIubWljcm9zZWNvbmRzXzsKLSAgfQotICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgVGltZURlbHRhJiBvdGhlcikgY29uc3QgewotICAg
IHJldHVybiBtaWNyb3NlY29uZHNfIDwgb3RoZXIubWljcm9zZWNvbmRzXzsKLSAgfQogCiAgcHJp
dmF0ZToKLSAgZXhwbGljaXQgY29uc3RleHByIFRpbWVEZWx0YShpbnQ2NF90IHVzKSA6IG1pY3Jv
c2Vjb25kc18odXMpIHt9Ci0gIGNvbnN0ZXhwciBpbnQ2NF90IFVuc2FmZVNlY29uZHMoKSBjb25z
dCB7Ci0gICAgcmV0dXJuIChtaWNyb3NlY29uZHNfICsgKG1pY3Jvc2Vjb25kc18gPj0gMCA/IDUw
MDAwMCA6IC01MDAwMDApKSAvIDEwMDAwMDA7Ci0gIH0KLSAgY29uc3RleHByIGludDY0X3QgVW5z
YWZlTWlsbGlzKCkgY29uc3QgewotICAgIHJldHVybiAobWljcm9zZWNvbmRzXyArIChtaWNyb3Nl
Y29uZHNfID49IDAgPyA1MDAgOiAtNTAwKSkgLyAxMDAwOwotICB9Ci0gIGludDY0X3QgbWljcm9z
ZWNvbmRzXzsKKyAgZnJpZW5kIGNsYXNzIHJ0Y191bml0c19pbXBsOjpVbml0QmFzZTxUaW1lRGVs
dGE+OworICB1c2luZyBSZWxhdGl2ZVVuaXQ6OlJlbGF0aXZlVW5pdDsKKyAgc3RhdGljIGNvbnN0
ZXhwciBib29sIG9uZV9zaWRlZCA9IGZhbHNlOwogfTsKIAotaW5saW5lIFRpbWVEZWx0YSBvcGVy
YXRvciooY29uc3QgVGltZURlbHRhJiBkZWx0YSwgY29uc3QgZG91YmxlJiBzY2FsYXIpIHsKLSAg
cmV0dXJuIFRpbWVEZWx0YTo6dXMoc3RkOjpyb3VuZChkZWx0YS51cygpICogc2NhbGFyKSk7Ci19
Ci1pbmxpbmUgVGltZURlbHRhIG9wZXJhdG9yKihjb25zdCBkb3VibGUmIHNjYWxhciwgY29uc3Qg
VGltZURlbHRhJiBkZWx0YSkgewotICByZXR1cm4gZGVsdGEgKiBzY2FsYXI7Ci19Ci1pbmxpbmUg
VGltZURlbHRhIG9wZXJhdG9yKihjb25zdCBUaW1lRGVsdGEmIGRlbHRhLCBjb25zdCBpbnQ2NF90
JiBzY2FsYXIpIHsKLSAgcmV0dXJuIFRpbWVEZWx0YTo6dXMoZGVsdGEudXMoKSAqIHNjYWxhcik7
Ci19Ci1pbmxpbmUgVGltZURlbHRhIG9wZXJhdG9yKihjb25zdCBpbnQ2NF90JiBzY2FsYXIsIGNv
bnN0IFRpbWVEZWx0YSYgZGVsdGEpIHsKLSAgcmV0dXJuIGRlbHRhICogc2NhbGFyOwotfQotaW5s
aW5lIFRpbWVEZWx0YSBvcGVyYXRvciooY29uc3QgVGltZURlbHRhJiBkZWx0YSwgY29uc3QgaW50
MzJfdCYgc2NhbGFyKSB7Ci0gIHJldHVybiBUaW1lRGVsdGE6OnVzKGRlbHRhLnVzKCkgKiBzY2Fs
YXIpOwotfQotaW5saW5lIFRpbWVEZWx0YSBvcGVyYXRvciooY29uc3QgaW50MzJfdCYgc2NhbGFy
LCBjb25zdCBUaW1lRGVsdGEmIGRlbHRhKSB7Ci0gIHJldHVybiBkZWx0YSAqIHNjYWxhcjsKLX0K
LQotaW5saW5lIFRpbWVEZWx0YSBvcGVyYXRvci8oY29uc3QgVGltZURlbHRhJiBkZWx0YSwgY29u
c3QgaW50NjRfdCYgc2NhbGFyKSB7Ci0gIHJldHVybiBUaW1lRGVsdGE6OnVzKGRlbHRhLnVzKCkg
LyBzY2FsYXIpOwotfQotc3RkOjpzdHJpbmcgVG9TdHJpbmcoY29uc3QgVGltZURlbHRhJiB2YWx1
ZSk7CitzdGQ6OnN0cmluZyBUb1N0cmluZyhUaW1lRGVsdGEgdmFsdWUpOwogCiAjaWZkZWYgVU5J
VF9URVNUCiBpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KCAgLy8gbm8tcHJlc3VibWl0
LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZV9kZWx0YV91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1l
X2RlbHRhX3VuaXR0ZXN0LmNjCmluZGV4IGJmOGJiY2U2OWJlZmVkNjE2MjI4ZDFiNGNlNDRjMTYz
YmM0NDdlM2YuLmE0NmJhODM1Y2IxOGY0ZTViYjYyYTlhMzlhODczY2RlZDM3ZGZmMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0
cy90aW1lX2RlbHRhX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lX2RlbHRhX3VuaXR0ZXN0LmNjCkBAIC0xMCw2
ICsxMCw4IEBACiAKICNpbmNsdWRlICJhcGkvdW5pdHMvdGltZV9kZWx0YS5oIgogCisjaW5jbHVk
ZSA8bGltaXRzPgorCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKQEAgLTEwNiw2ICsxMDgsMjcgQEAgVEVTVChUaW1lRGVsdGFUZXN0LCBDb21wYXJpc29uT3Bl
cmF0b3JzKSB7CiAgIEVYUEVDVF9MVChUaW1lRGVsdGE6Ok1pbnVzSW5maW5pdHkoKSwgVGltZURl
bHRhOjpaZXJvKCkpOwogfQogCitURVNUKFRpbWVEZWx0YVRlc3QsIENsYW1waW5nKSB7CisgIGNv
bnN0IFRpbWVEZWx0YSB1cHBlciA9IFRpbWVEZWx0YTo6bXMoODAwKTsKKyAgY29uc3QgVGltZURl
bHRhIGxvd2VyID0gVGltZURlbHRhOjptcygxMDApOworICBjb25zdCBUaW1lRGVsdGEgdW5kZXIg
PSBUaW1lRGVsdGE6Om1zKDEwMCk7CisgIGNvbnN0IFRpbWVEZWx0YSBpbnNpZGUgPSBUaW1lRGVs
dGE6Om1zKDUwMCk7CisgIGNvbnN0IFRpbWVEZWx0YSBvdmVyID0gVGltZURlbHRhOjptcygxMDAw
KTsKKyAgRVhQRUNUX0VRKHVuZGVyLkNsYW1wZWQobG93ZXIsIHVwcGVyKSwgbG93ZXIpOworICBF
WFBFQ1RfRVEoaW5zaWRlLkNsYW1wZWQobG93ZXIsIHVwcGVyKSwgaW5zaWRlKTsKKyAgRVhQRUNU
X0VRKG92ZXIuQ2xhbXBlZChsb3dlciwgdXBwZXIpLCB1cHBlcik7CisKKyAgVGltZURlbHRhIG11
dGFibGVfZGVsdGEgPSBsb3dlcjsKKyAgbXV0YWJsZV9kZWx0YS5DbGFtcChsb3dlciwgdXBwZXIp
OworICBFWFBFQ1RfRVEobXV0YWJsZV9kZWx0YSwgbG93ZXIpOworICBtdXRhYmxlX2RlbHRhID0g
aW5zaWRlOworICBtdXRhYmxlX2RlbHRhLkNsYW1wKGxvd2VyLCB1cHBlcik7CisgIEVYUEVDVF9F
UShtdXRhYmxlX2RlbHRhLCBpbnNpZGUpOworICBtdXRhYmxlX2RlbHRhID0gb3ZlcjsKKyAgbXV0
YWJsZV9kZWx0YS5DbGFtcChsb3dlciwgdXBwZXIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9kZWx0
YSwgdXBwZXIpOworfQorCiBURVNUKFRpbWVEZWx0YVRlc3QsIENhbkJlSW5pdGl0aWFsaXplZEZy
b21MYXJnZUludCkgewogICBjb25zdCBpbnQga01heEludCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50Pjo6bWF4KCk7CiAgIEVYUEVDVF9FUShUaW1lRGVsdGE6OnNlY29uZHMoa01heEludCkudXMo
KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS91bml0cy90aW1lc3RhbXAuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZXN0YW1wLmNjCmluZGV4IGZlYjE0NDc4OWNhMmI1OWYw
MjRkZDliNzM1MDEwYjQ3ZDRmNWQxZDIuLmQzNDE3Y2ZiMDViMmYyNjczZTQ0Nzc5Zjk5NDFlMzk1
NTNkOWIzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS91bml0cy90aW1lc3RhbXAuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVzdGFtcC5jYwpAQCAtMTMsNyArMTMs
NyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7Ci1zdGQ6OnN0cmluZyBUb1N0cmluZyhjb25zdCBUaW1lc3RhbXAmIHZh
bHVlKSB7CitzdGQ6OnN0cmluZyBUb1N0cmluZyhUaW1lc3RhbXAgdmFsdWUpIHsKICAgY2hhciBi
dWZbNjRdOwogICBydGM6OlNpbXBsZVN0cmluZ0J1aWxkZXIgc2IoYnVmKTsKICAgaWYgKHZhbHVl
LklzSW5maW5pdGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVzdGFtcC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVzdGFtcC5oCmluZGV4IDAyOThm
NWRhOTc5MzQyYmRiYzI5OTgwODc2NjIyYjJlYTA0MGFjZjEuLmE2ZTQ1MGY2ODUwZjU1OTMzMmMz
ZDU2YTllYTNlZTk0MDJjNTVkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lc3RhbXAuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZXN0YW1wLmgKQEAg
LTE1LDE4OSArMTUsOTQgQEAKICNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gbm8tcHJlc3VibWl0LWNo
ZWNrIFRPRE8od2VicnRjOjg5ODIpCiAjZW5kaWYgICAgICAgICAgICAgIC8vIFVOSVRfVEVTVAog
Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmlu
Zz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAogI2luY2x1ZGUgImFwaS91bml0cy90aW1lX2Rl
bHRhLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
bnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLW5hbWVz
cGFjZSB0aW1lc3RhbXBfaW1wbCB7Ci1jb25zdGV4cHIgaW50NjRfdCBrUGx1c0luZmluaXR5VmFs
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7Ci1jb25zdGV4cHIgaW50NjRf
dCBrTWludXNJbmZpbml0eVZhbCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigp
OwotfSAgLy8gbmFtZXNwYWNlIHRpbWVzdGFtcF9pbXBsCi0KIC8vIFRpbWVzdGFtcCByZXByZXNl
bnRzIHRoZSB0aW1lIHRoYXQgaGFzIHBhc3NlZCBzaW5jZSBzb21lIHVuc3BlY2lmaWVkIGVwb2No
LgogLy8gVGhlIGVwb2NoIGlzIGFzc3VtZWQgdG8gYmUgYmVmb3JlIGFueSByZXByZXNlbnRlZCB0
aW1lc3RhbXBzLCB0aGlzIG1lYW5zIHRoYXQKIC8vIG5lZ2F0aXZlIHZhbHVlcyBhcmUgbm90IHZh
bGlkLiBUaGUgbW9zdCBub3RhYmxlIGZlYXR1cmUgaXMgdGhhdCB0aGUKIC8vIGRpZmZlcmVuY2Ug
b2YgdHdvIFRpbWVzdGFtcHMgcmVzdWx0cyBpbiBhIFRpbWVEZWx0YS4KLWNsYXNzIFRpbWVzdGFt
cCB7CitjbGFzcyBUaW1lc3RhbXAgZmluYWwgOiBwdWJsaWMgcnRjX3VuaXRzX2ltcGw6OlVuaXRC
YXNlPFRpbWVzdGFtcD4gewogIHB1YmxpYzoKICAgVGltZXN0YW1wKCkgPSBkZWxldGU7Ci0gIHN0
YXRpYyBjb25zdGV4cHIgVGltZXN0YW1wIFBsdXNJbmZpbml0eSgpIHsKLSAgICByZXR1cm4gVGlt
ZXN0YW1wKHRpbWVzdGFtcF9pbXBsOjprUGx1c0luZmluaXR5VmFsKTsKLSAgfQotICBzdGF0aWMg
Y29uc3RleHByIFRpbWVzdGFtcCBNaW51c0luZmluaXR5KCkgewotICAgIHJldHVybiBUaW1lc3Rh
bXAodGltZXN0YW1wX2ltcGw6OmtNaW51c0luZmluaXR5VmFsKTsKLSAgfQorCiAgIHRlbXBsYXRl
IDxpbnQ2NF90IHNlY29uZHM+CiAgIHN0YXRpYyBjb25zdGV4cHIgVGltZXN0YW1wIFNlY29uZHMo
KSB7Ci0gICAgc3RhdGljX2Fzc2VydChzZWNvbmRzID49IDAsICIiKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHNlY29uZHMgPCB0aW1lc3RhbXBfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCAvIDEwMDAwMDAs
ICIiKTsKLSAgICByZXR1cm4gVGltZXN0YW1wKHNlY29uZHMgKiAxMDAwMDAwKTsKKyAgICByZXR1
cm4gRnJvbVN0YXRpY0ZyYWN0aW9uPHNlY29uZHMsIDEwMDAwMDA+KCk7CiAgIH0KICAgdGVtcGxh
dGUgPGludDY0X3QgbXM+CiAgIHN0YXRpYyBjb25zdGV4cHIgVGltZXN0YW1wIE1pbGxpcygpIHsK
LSAgICBzdGF0aWNfYXNzZXJ0KG1zID49IDAsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KG1zIDwg
dGltZXN0YW1wX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwgLyAxMDAwLCAiIik7Ci0gICAgcmV0dXJu
IFRpbWVzdGFtcChtcyAqIDEwMDApOworICAgIHJldHVybiBGcm9tU3RhdGljRnJhY3Rpb248bXMs
IDEwMDA+KCk7CiAgIH0KICAgdGVtcGxhdGUgPGludDY0X3QgdXM+CiAgIHN0YXRpYyBjb25zdGV4
cHIgVGltZXN0YW1wIE1pY3JvcygpIHsKLSAgICBzdGF0aWNfYXNzZXJ0KHVzID49IDAsICIiKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KHVzIDwgdGltZXN0YW1wX2ltcGw6OmtQbHVzSW5maW5pdHlWYWws
ICIiKTsKLSAgICByZXR1cm4gVGltZXN0YW1wKHVzKTsKLSAgfQotCi0gIHRlbXBsYXRlIDwKLSAg
ICAgIHR5cGVuYW1lIFQsCi0gICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2lu
dGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgc3RhdGljIFRpbWVzdGFtcCBz
ZWNvbmRzKFQgc2Vjb25kcykgewotICAgIFJUQ19EQ0hFQ0tfR0Uoc2Vjb25kcywgMCk7Ci0gICAg
UlRDX0RDSEVDS19MVChzZWNvbmRzLCB0aW1lc3RhbXBfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCAv
IDEwMDAwMDApOwotICAgIHJldHVybiBUaW1lc3RhbXAocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0
X3Q+KHNlY29uZHMpICogMTAwMDAwMCk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBl
bmFtZSBULAotICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxU
Pjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gIHN0YXRpYyBUaW1lc3RhbXAgbXMoVCBtaWxs
aXNlY29uZHMpIHsKLSAgICBSVENfRENIRUNLX0dFKG1pbGxpc2Vjb25kcywgMCk7Ci0gICAgUlRD
X0RDSEVDS19MVChtaWxsaXNlY29uZHMsIHRpbWVzdGFtcF9pbXBsOjprUGx1c0luZmluaXR5VmFs
IC8gMTAwMCk7Ci0gICAgcmV0dXJuIFRpbWVzdGFtcChydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRf
dD4obWlsbGlzZWNvbmRzKSAqIDEwMDApOworICAgIHJldHVybiBGcm9tU3RhdGljVmFsdWU8dXM+
KCk7CiAgIH0KIAotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBlbmFtZSBULAotICAgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51
bGxwdHI+Ci0gIHN0YXRpYyBUaW1lc3RhbXAgdXMoVCBtaWNyb3NlY29uZHMpIHsKLSAgICBSVENf
RENIRUNLX0dFKG1pY3Jvc2Vjb25kcywgMCk7Ci0gICAgUlRDX0RDSEVDS19MVChtaWNyb3NlY29u
ZHMsIHRpbWVzdGFtcF9pbXBsOjprUGx1c0luZmluaXR5VmFsKTsKLSAgICByZXR1cm4gVGltZXN0
YW1wKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90PihtaWNyb3NlY29uZHMpKTsKLSAgfQotCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBULAotICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlKiA9Ci0gICAgICAgICAg
ICAgICAgbnVsbHB0cj4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIHN0YXRpYyBUaW1lc3Rh
bXAgc2Vjb25kcyhUIHNlY29uZHMpIHsKLSAgICByZXR1cm4gVGltZXN0YW1wOjp1cyhzZWNvbmRz
ICogMWU2KTsKKyAgICByZXR1cm4gRnJvbUZyYWN0aW9uPDEwMDAwMDA+KHNlY29uZHMpOwogICB9
Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAg
ICAgICAgICAgICBudWxscHRyPgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgc3RhdGljIFRp
bWVzdGFtcCBtcyhUIG1pbGxpc2Vjb25kcykgewotICAgIHJldHVybiBUaW1lc3RhbXA6OnVzKG1p
bGxpc2Vjb25kcyAqIDFlMyk7CisgICAgcmV0dXJuIEZyb21GcmFjdGlvbjwxMDAwPihtaWxsaXNl
Y29uZHMpOwogICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBULAotICAgICAgICAgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBl
KiA9Ci0gICAgICAgICAgICAgICAgbnVsbHB0cj4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAg
IHN0YXRpYyBUaW1lc3RhbXAgdXMoVCBtaWNyb3NlY29uZHMpIHsKLSAgICBpZiAobWljcm9zZWNv
bmRzID09IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkgewotICAgICAg
cmV0dXJuIFBsdXNJbmZpbml0eSgpOwotICAgIH0gZWxzZSBpZiAobWljcm9zZWNvbmRzID09IC1z
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpIHsKLSAgICAgIHJldHVybiBN
aW51c0luZmluaXR5KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIFJUQ19EQ0hFQ0soIXN0ZDo6aXNu
YW4obWljcm9zZWNvbmRzKSk7Ci0gICAgICBSVENfRENIRUNLX0dFKG1pY3Jvc2Vjb25kcywgMCk7
Ci0gICAgICBSVENfRENIRUNLX0xUKG1pY3Jvc2Vjb25kcywgdGltZXN0YW1wX2ltcGw6OmtQbHVz
SW5maW5pdHlWYWwpOwotICAgICAgcmV0dXJuIFRpbWVzdGFtcChydGM6OmRjaGVja2VkX2Nhc3Q8
aW50NjRfdD4obWljcm9zZWNvbmRzKSk7Ci0gICAgfQorICAgIHJldHVybiBGcm9tVmFsdWUobWlj
cm9zZWNvbmRzKTsKICAgfQotCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0
eXBlIHNlY29uZHMoKSBjb25zdCB7Ci0gICAgUlRDX0RDSEVDSyhJc0Zpbml0ZSgpKTsKLSAgICBy
ZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KFVuc2FmZVNlY29uZHMoKSk7CisgIFQgc2Vjb25k
cygpIGNvbnN0IHsKKyAgICByZXR1cm4gVG9GcmFjdGlvbjwxMDAwMDAwLCBUPigpOwogICB9CiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIG1zKCkgY29uc3QgewotICAg
IFJUQ19EQ0hFQ0soSXNGaW5pdGUoKSk7Ci0gICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxU
PihVbnNhZmVNaWxsaXMoKSk7CisgIFQgbXMoKSBjb25zdCB7CisgICAgcmV0dXJuIFRvRnJhY3Rp
b248MTAwMCwgVD4oKTsKICAgfQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+Ci0g
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6
dHlwZSB1cygpIGNvbnN0IHsKLSAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOwotICAgIHJldHVy
biBydGM6OmRjaGVja2VkX2Nhc3Q8VD4obWljcm9zZWNvbmRzXyk7Ci0gIH0KLQotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLSAgY29uc3RleHByIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZQotICBzZWNvbmRzKCkgY29uc3Qg
ewotICAgIHJldHVybiB1czxUPigpICogMWUtNjsKLSAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLSAgY29uc3RleHByIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdf
cG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZQotICBtcygpIGNvbnN0IHsKLSAgICByZXR1cm4gdXM8
VD4oKSAqIDFlLTM7Ci0gIH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGNvbnN0ZXhwciB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZSwg
VD46OnR5cGUKLSAgdXMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIElzUGx1c0luZmluaXR5KCkKLSAg
ICAgICAgICAgICAgID8gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKQotICAgICAg
ICAgICAgICAgOiBJc01pbnVzSW5maW5pdHkoKSA/IC1zdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojpp
bmZpbml0eSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbWljcm9zZWNv
bmRzXzsKKyAgVCB1cygpIGNvbnN0IHsKKyAgICByZXR1cm4gVG9WYWx1ZTxUPigpOwogICB9CiAK
ICAgY29uc3RleHByIGludDY0X3Qgc2Vjb25kc19vcihpbnQ2NF90IGZhbGxiYWNrX3ZhbHVlKSBj
b25zdCB7Ci0gICAgcmV0dXJuIElzRmluaXRlKCkgPyBVbnNhZmVTZWNvbmRzKCkgOiBmYWxsYmFj
a192YWx1ZTsKKyAgICByZXR1cm4gVG9GcmFjdGlvbk9yPDEwMDAwMDA+KGZhbGxiYWNrX3ZhbHVl
KTsKICAgfQogICBjb25zdGV4cHIgaW50NjRfdCBtc19vcihpbnQ2NF90IGZhbGxiYWNrX3ZhbHVl
KSBjb25zdCB7Ci0gICAgcmV0dXJuIElzRmluaXRlKCkgPyBVbnNhZmVNaWxsaXMoKSA6IGZhbGxi
YWNrX3ZhbHVlOworICAgIHJldHVybiBUb0ZyYWN0aW9uT3I8MTAwMD4oZmFsbGJhY2tfdmFsdWUp
OwogICB9CiAgIGNvbnN0ZXhwciBpbnQ2NF90IHVzX29yKGludDY0X3QgZmFsbGJhY2tfdmFsdWUp
IGNvbnN0IHsKLSAgICByZXR1cm4gSXNGaW5pdGUoKSA/IG1pY3Jvc2Vjb25kc18gOiBmYWxsYmFj
a192YWx1ZTsKKyAgICByZXR1cm4gVG9WYWx1ZU9yKGZhbGxiYWNrX3ZhbHVlKTsKICAgfQogCi0g
IGNvbnN0ZXhwciBib29sIElzRmluaXRlKCkgY29uc3QgeyByZXR1cm4gIUlzSW5maW5pdGUoKTsg
fQotICBjb25zdGV4cHIgYm9vbCBJc0luZmluaXRlKCkgY29uc3QgewotICAgIHJldHVybiBtaWNy
b3NlY29uZHNfID09IHRpbWVkZWx0YV9pbXBsOjprUGx1c0luZmluaXR5VmFsIHx8Ci0gICAgICAg
ICAgIG1pY3Jvc2Vjb25kc18gPT0gdGltZWRlbHRhX2ltcGw6OmtNaW51c0luZmluaXR5VmFsOwot
ICB9Ci0gIGNvbnN0ZXhwciBib29sIElzUGx1c0luZmluaXR5KCkgY29uc3QgewotICAgIHJldHVy
biBtaWNyb3NlY29uZHNfID09IHRpbWVkZWx0YV9pbXBsOjprUGx1c0luZmluaXR5VmFsOwotICB9
Ci0gIGNvbnN0ZXhwciBib29sIElzTWludXNJbmZpbml0eSgpIGNvbnN0IHsKLSAgICByZXR1cm4g
bWljcm9zZWNvbmRzXyA9PSB0aW1lZGVsdGFfaW1wbDo6a01pbnVzSW5maW5pdHlWYWw7Ci0gIH0K
LSAgVGltZXN0YW1wIG9wZXJhdG9yKyhjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0g
ICAgaWYgKElzUGx1c0luZmluaXR5KCkgfHwgb3RoZXIuSXNQbHVzSW5maW5pdHkoKSkgeworICBU
aW1lc3RhbXAgb3BlcmF0b3IrKGNvbnN0IFRpbWVEZWx0YSBkZWx0YSkgY29uc3QgeworICAgIGlm
IChJc1BsdXNJbmZpbml0eSgpIHx8IGRlbHRhLklzUGx1c0luZmluaXR5KCkpIHsKICAgICAgIFJU
Q19EQ0hFQ0soIUlzTWludXNJbmZpbml0eSgpKTsKLSAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklz
TWludXNJbmZpbml0eSgpKTsKKyAgICAgIFJUQ19EQ0hFQ0soIWRlbHRhLklzTWludXNJbmZpbml0
eSgpKTsKICAgICAgIHJldHVybiBQbHVzSW5maW5pdHkoKTsKLSAgICB9IGVsc2UgaWYgKElzTWlu
dXNJbmZpbml0eSgpIHx8IG90aGVyLklzTWludXNJbmZpbml0eSgpKSB7CisgICAgfSBlbHNlIGlm
IChJc01pbnVzSW5maW5pdHkoKSB8fCBkZWx0YS5Jc01pbnVzSW5maW5pdHkoKSkgewogICAgICAg
UlRDX0RDSEVDSyghSXNQbHVzSW5maW5pdHkoKSk7Ci0gICAgICBSVENfRENIRUNLKCFvdGhlci5J
c1BsdXNJbmZpbml0eSgpKTsKKyAgICAgIFJUQ19EQ0hFQ0soIWRlbHRhLklzUGx1c0luZmluaXR5
KCkpOwogICAgICAgcmV0dXJuIE1pbnVzSW5maW5pdHkoKTsKICAgICB9Ci0gICAgcmV0dXJuIFRp
bWVzdGFtcDo6dXModXMoKSArIG90aGVyLnVzKCkpOworICAgIHJldHVybiBUaW1lc3RhbXA6OnVz
KHVzKCkgKyBkZWx0YS51cygpKTsKICAgfQotICBUaW1lc3RhbXAgb3BlcmF0b3ItKGNvbnN0IFRp
bWVEZWx0YSYgb3RoZXIpIGNvbnN0IHsKLSAgICBpZiAoSXNQbHVzSW5maW5pdHkoKSB8fCBvdGhl
ci5Jc01pbnVzSW5maW5pdHkoKSkgeworICBUaW1lc3RhbXAgb3BlcmF0b3ItKGNvbnN0IFRpbWVE
ZWx0YSBkZWx0YSkgY29uc3QgeworICAgIGlmIChJc1BsdXNJbmZpbml0eSgpIHx8IGRlbHRhLklz
TWludXNJbmZpbml0eSgpKSB7CiAgICAgICBSVENfRENIRUNLKCFJc01pbnVzSW5maW5pdHkoKSk7
Ci0gICAgICBSVENfRENIRUNLKCFvdGhlci5Jc1BsdXNJbmZpbml0eSgpKTsKKyAgICAgIFJUQ19E
Q0hFQ0soIWRlbHRhLklzUGx1c0luZmluaXR5KCkpOwogICAgICAgcmV0dXJuIFBsdXNJbmZpbml0
eSgpOwotICAgIH0gZWxzZSBpZiAoSXNNaW51c0luZmluaXR5KCkgfHwgb3RoZXIuSXNQbHVzSW5m
aW5pdHkoKSkgeworICAgIH0gZWxzZSBpZiAoSXNNaW51c0luZmluaXR5KCkgfHwgZGVsdGEuSXNQ
bHVzSW5maW5pdHkoKSkgewogICAgICAgUlRDX0RDSEVDSyghSXNQbHVzSW5maW5pdHkoKSk7Ci0g
ICAgICBSVENfRENIRUNLKCFvdGhlci5Jc01pbnVzSW5maW5pdHkoKSk7CisgICAgICBSVENfRENI
RUNLKCFkZWx0YS5Jc01pbnVzSW5maW5pdHkoKSk7CiAgICAgICByZXR1cm4gTWludXNJbmZpbml0
eSgpOwogICAgIH0KLSAgICByZXR1cm4gVGltZXN0YW1wOjp1cyh1cygpIC0gb3RoZXIudXMoKSk7
CisgICAgcmV0dXJuIFRpbWVzdGFtcDo6dXModXMoKSAtIGRlbHRhLnVzKCkpOwogICB9Ci0gIFRp
bWVEZWx0YSBvcGVyYXRvci0oY29uc3QgVGltZXN0YW1wJiBvdGhlcikgY29uc3QgeworICBUaW1l
RGVsdGEgb3BlcmF0b3ItKGNvbnN0IFRpbWVzdGFtcCBvdGhlcikgY29uc3QgewogICAgIGlmIChJ
c1BsdXNJbmZpbml0eSgpIHx8IG90aGVyLklzTWludXNJbmZpbml0eSgpKSB7CiAgICAgICBSVENf
RENIRUNLKCFJc01pbnVzSW5maW5pdHkoKSk7CiAgICAgICBSVENfRENIRUNLKCFvdGhlci5Jc1Bs
dXNJbmZpbml0eSgpKTsKQEAgLTIwOSw0NSArMTE0LDIyIEBAIGNsYXNzIFRpbWVzdGFtcCB7CiAg
ICAgfQogICAgIHJldHVybiBUaW1lRGVsdGE6OnVzKHVzKCkgLSBvdGhlci51cygpKTsKICAgfQot
ICBUaW1lc3RhbXAmIG9wZXJhdG9yLT0oY29uc3QgVGltZURlbHRhJiBvdGhlcikgewotICAgICp0
aGlzID0gKnRoaXMgLSBvdGhlcjsKKyAgVGltZXN0YW1wJiBvcGVyYXRvci09KGNvbnN0IFRpbWVE
ZWx0YSBkZWx0YSkgeworICAgICp0aGlzID0gKnRoaXMgLSBkZWx0YTsKICAgICByZXR1cm4gKnRo
aXM7CiAgIH0KLSAgVGltZXN0YW1wJiBvcGVyYXRvcis9KGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIp
IHsKLSAgICAqdGhpcyA9ICp0aGlzICsgb3RoZXI7CisgIFRpbWVzdGFtcCYgb3BlcmF0b3IrPShj
b25zdCBUaW1lRGVsdGEgZGVsdGEpIHsKKyAgICAqdGhpcyA9ICp0aGlzICsgZGVsdGE7CiAgICAg
cmV0dXJuICp0aGlzOwogICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVGlt
ZXN0YW1wJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfID09IG90aGVy
Lm1pY3Jvc2Vjb25kc187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBU
aW1lc3RhbXAmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jvc2Vjb25kc18gIT0gb3Ro
ZXIubWljcm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0
IFRpbWVzdGFtcCYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyA8PSBv
dGhlci5taWNyb3NlY29uZHNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29u
c3QgVGltZXN0YW1wJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfID49
IG90aGVyLm1pY3Jvc2Vjb25kc187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNv
bnN0IFRpbWVzdGFtcCYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyA+
IG90aGVyLm1pY3Jvc2Vjb25kc187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFRpbWVzdGFtcCYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyA8
IG90aGVyLm1pY3Jvc2Vjb25kc187Ci0gIH0KIAogIHByaXZhdGU6Ci0gIGV4cGxpY2l0IGNvbnN0
ZXhwciBUaW1lc3RhbXAoaW50NjRfdCB1cykgOiBtaWNyb3NlY29uZHNfKHVzKSB7fQotICBjb25z
dGV4cHIgaW50NjRfdCBVbnNhZmVTZWNvbmRzKCkgY29uc3QgewotICAgIHJldHVybiAobWljcm9z
ZWNvbmRzXyArIDUwMDAwMCkgLyAxMDAwMDAwOwotICB9Ci0gIGNvbnN0ZXhwciBpbnQ2NF90IFVu
c2FmZU1pbGxpcygpIGNvbnN0IHsKLSAgICByZXR1cm4gKG1pY3Jvc2Vjb25kc18gKyA1MDApIC8g
MTAwMDsKLSAgfQotICBpbnQ2NF90IG1pY3Jvc2Vjb25kc187CisgIGZyaWVuZCBjbGFzcyBydGNf
dW5pdHNfaW1wbDo6VW5pdEJhc2U8VGltZXN0YW1wPjsKKyAgdXNpbmcgVW5pdEJhc2U6OlVuaXRC
YXNlOworICBzdGF0aWMgY29uc3RleHByIGJvb2wgb25lX3NpZGVkID0gdHJ1ZTsKIH07CiAKLXN0
ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IFRpbWVzdGFtcCYgdmFsdWUpOworc3RkOjpzdHJpbmcg
VG9TdHJpbmcoVGltZXN0YW1wIHZhbHVlKTsKIAogI2lmZGVmIFVOSVRfVEVTVAogaW5saW5lIHN0
ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCggIC8vIG5vLXByZXN1Ym1pdC1jaGVjayBUT0RPKHdlYnJ0
Yzo4OTgyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3ZpZGVvL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvL0JVSUxELmduCmluZGV4IGQwNDEyNjAyMWRhNWE2YzFhMjky
Y2M1YjUyODljNTAyZWFhNWY4MDAuLjVlZDcwODk4ZjdiNzA4MWRmMGQyN2IwZmRiMTc5YTJjZThj
OTFkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlby9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vQlVJTEQuZ24KQEAgLTEzLDYgKzEzLDkgQEAgcnRjX3Nv
dXJjZV9zZXQoInZpZGVvX2ZyYW1lIikgewogICBzb3VyY2VzID0gWwogICAgICJjb2xvcl9zcGFj
ZS5jYyIsCiAgICAgImNvbG9yX3NwYWNlLmgiLAorICAgICJoZHJfbWV0YWRhdGEuY2MiLAorICAg
ICJoZHJfbWV0YWRhdGEuaCIsCisgICAgInZpZGVvX2NvZGVjX3R5cGUuaCIsCiAgICAgInZpZGVv
X2NvbnRlbnRfdHlwZS5jYyIsCiAgICAgInZpZGVvX2NvbnRlbnRfdHlwZS5oIiwKICAgICAidmlk
ZW9fZnJhbWUuY2MiLApAQCAtMzEsNiArMzQsNyBAQCBydGNfc291cmNlX3NldCgidmlkZW9fZnJh
bWUiKSB7CiAgIGRlcHMgPSBbCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4u
Ly4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lz
dGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
czpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTQ2LDYgKzUwLDcgQEAgcnRjX3NvdXJjZV9zZXQoInZp
ZGVvX2ZyYW1lX2k0MjAiKSB7CiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4u
Ly4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAiLi4vLi4vcnRjX2Jhc2UvbWVtb3J5OmFsaWdu
ZWRfbWFsbG9jIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAg
ICIvL3RoaXJkX3BhcnR5L2xpYnl1diIsCiAgIF0KIH0KQEAgLTY2LDYgKzcxLDI0IEBAIHJ0Y19z
b3VyY2Vfc2V0KCJ2aWRlb19mcmFtZV9pMDEwIikgewogICBdCiB9CiAKK3J0Y19zb3VyY2Vfc2V0
KCJlbmNvZGVkX2ltYWdlIikgeworICBzb3VyY2VzID0gWworICAgICJlbmNvZGVkX2ltYWdlLmNj
IiwKKyAgICAiZW5jb2RlZF9pbWFnZS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6dmlkZW9f
ZnJhbWUiLAorICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKKworICAgICMgVE9ETyhidWdzLndl
YnJ0Yy5vcmcvODMxMSkgQ2xlYW51cCB3aGVuIGtNYXhTcGF0aWFsTGF5ZXJzIGlzIG1vdmVkIHRv
IHByb3BlciBpbmNsdWRlLgorICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxv
Y2F0aW9uIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vcnRjX2Jh
c2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4
cG9ydCIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKKyAgXQorfQorCiBydGNfc291cmNlX3NldCgiZW5jb2RlZF9mcmFtZSIpIHsKICAgdmlzaWJp
bGl0eSA9IFsgIioiIF0KICAgc291cmNlcyA9IFsKQEAgLTE1Miw2ICsxNzUsNyBAQCBydGNfc291
cmNlX3NldCgidmlkZW9fc3RyZWFtX2VuY29kZXIiKSB7CiAgIF0KIAogICBkZXBzID0gWworICAg
ICI6dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAgICAgIjp2aWRlb19mcmFtZSIs
CiAKICAgICAjIEZvciBydHBwYXJhbWV0ZXJzLmgKQEAgLTE4MiwzICsyMDYsMjIgQEAgcnRjX3Nv
dXJjZV9zZXQoInZpZGVvX3N0cmVhbV9lbmNvZGVyX2NyZWF0ZSIpIHsKICAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQogfQorCitydGNfc3RhdGljX2xpYnJh
cnkoImJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIpIHsKKyAgdmlzaWJp
bGl0eSA9IFsgIioiIF0KKyAgc291cmNlcyA9IFsKKyAgICAiYnVpbHRpbl92aWRlb19iaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5LmNjIiwKKyAgICAiYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9j
YXRvcl9mYWN0b3J5LmgiLAorICBdCisKKyAgZGVwcyA9IFsKKyAgICAiOnZpZGVvX2JpdHJhdGVf
YWxsb2NhdGlvbiIsCisgICAgIjp2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKKyAg
ICAiLi4vLi4vbWVkaWE6cnRjX21lZGlhX2Jhc2UiLAorICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVv
X2NvZGluZzp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCisgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9f
Y29kaW5nOndlYnJ0Y192cDlfaGVscGVycyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnB0cl91dGls
IiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOmZhbGx0aHJvdWdoIiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgXQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2J1aWx0aW5f
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxs
b2NhdG9yX2ZhY3RvcnkuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBmNmFkMDRjYmUyNTIwZDkzNDJkNDk3OWY5
NWE3NDAyYTIyZDY1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnkuY2MKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
KyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0
b3J5LmgiCisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZWRp
YS9iYXNlL2NvZGVjLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Zw
OS9zdmNfcmF0ZV9hbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91
dGlsaXR5L2RlZmF1bHRfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9jYXRvci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9mYWxsdGhyb3VnaC5oIgorCituYW1lc3BhY2Ugd2VicnRj
IHsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZh
Y3RvcnkKKyAgICA6IHB1YmxpYyBWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5IHsKKyBwdWJs
aWM6CisgIEJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkgPSBkZWZhdWx0Owor
ICB+QnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSBvdmVycmlkZSA9IGRlZmF1
bHQ7CisKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvcj4gQ3JlYXRlVmlk
ZW9CaXRyYXRlQWxsb2NhdG9yKAorICAgICAgY29uc3QgVmlkZW9Db2RlYyYgY29kZWMpIG92ZXJy
aWRlIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiByYXRlX2Fs
bG9jYXRvcjsKKyAgICBzd2l0Y2ggKGNvZGVjLmNvZGVjVHlwZSkgeworICAgICAgY2FzZSBrVmlk
ZW9Db2RlY1ZQODoKKyAgICAgICAgUlRDX0ZBTExUSFJPVUdIKCk7CisgICAgICBjYXNlIGtWaWRl
b0NvZGVjSDI2NDoKKyAgICAgICAgcmF0ZV9hbGxvY2F0b3IucmVzZXQobmV3IFNpbXVsY2FzdFJh
dGVBbGxvY2F0b3IoY29kZWMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIGtWaWRlb0Nv
ZGVjVlA5OgorICAgICAgICByYXRlX2FsbG9jYXRvci5yZXNldChuZXcgU3ZjUmF0ZUFsbG9jYXRv
cihjb2RlYykpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJhdGVf
YWxsb2NhdG9yLnJlc2V0KG5ldyBEZWZhdWx0VmlkZW9CaXRyYXRlQWxsb2NhdG9yKGNvZGVjKSk7
CisgICAgfQorICAgIHJldHVybiByYXRlX2FsbG9jYXRvcjsKKyAgfQorfTsKKworfSAgLy8gbmFt
ZXNwYWNlCisKK3N0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5Pgor
Q3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSB7CisgIHJldHVybiBh
YnNsOjptYWtlX3VuaXF1ZTxCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4oKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0
ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9y
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFjODgwYTA4NjNlOGNlNDJjMTQ2MzdkZTdkN2IwYTRiMzk4ZGNkYjcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgK
QEAgLTAsMCArMSwyNSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBw
cm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX1ZJ
REVPX0JVSUxUSU5fVklERU9fQklUUkFURV9BTExPQ0FUT1JfRkFDVE9SWV9IXworI2RlZmluZSBB
UElfVklERU9fQlVJTFRJTl9WSURFT19CSVRSQVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hfCisKKyNp
bmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworc3RkOjp1bmlxdWVfcHRy
PFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+CitDcmVhdGVCdWlsdGluVmlkZW9CaXRyYXRl
QWxsb2NhdG9yRmFjdG9yeSgpOworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAg
Ly8gQVBJX1ZJREVPX0JVSUxUSU5fVklERU9fQklUUkFURV9BTExPQ0FUT1JfRkFDVE9SWV9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvL2NvbG9yX3NwYWNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmNjCmluZGV4IGE4YmU1Y2Q4MjgwMjAyZDVm
Y2Y5M2FjN2M1OTgzYjk2ZGUxMmRjNjQuLmFkMTM4YWJlODA5M2QwZDZiZWZhZjU2ZDI0NDJmODk5
NjUxZTRjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS92aWRlby9jb2xvcl9zcGFjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vY29sb3Jfc3BhY2UuY2MKQEAgLTEwLDE4
ICsxMCw3MiBAQAogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgiCiAKK25hbWVz
cGFjZSB7CisvLyBUcnkgdG8gY29udmVydCB8ZW51bV92YWx1ZXwgaW50byB0aGUgZW51bSBjbGFz
cyBULiB8ZW51bV9iaXRtYXNrfCBpcyBjcmVhdGVkCisvLyBieSB0aGUgZnVuY2l0b24gYmVsb3cu
IFJldHVybnMgdHJ1ZSBpZiBjb252ZXJzaW9uIHdhcyBzdWNjZXNzZnVsLCBmYWxzZQorLy8gb3Ro
ZXJ3aXNlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIFNldEZyb21VaW50OCh1aW50OF90
IGVudW1fdmFsdWUsIHVpbnQ2NF90IGVudW1fYml0bWFzaywgVCogb3V0KSB7CisgIGlmICgoZW51
bV92YWx1ZSA8IDY0KSAmJiAoKGVudW1fYml0bWFzayA+PiBlbnVtX3ZhbHVlKSAmIDEpKSB7Cisg
ICAgKm91dCA9IHN0YXRpY19jYXN0PFQ+KGVudW1fdmFsdWUpOworICAgIHJldHVybiB0cnVlOwor
ICB9CisgIHJldHVybiBmYWxzZTsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBzZXJ2ZXMgYXMgYW4g
YXNzZXJ0IGZvciB0aGUgY29uc3RleHByIGZ1bmN0aW9uIGJlbG93LiBJdCdzIG9uCisvLyBwdXJw
b3NlIG5vdCBkZWNsYXJlZCBhcyBjb25zdGV4cHIgc28gdGhhdCBpdCBjYXVzZXMgYSBidWlsZCBw
cm9ibGVtIGlmIGVudW0KKy8vIHZhbHVlcyBvZiA2NCBvciBhYm92ZSBhcmUgdXNlZC4gVGhlIGJp
dG1hc2sgYW5kIHRoZSBjb2RlIGdlbmVyYXRpbmcgaXQgd291bGQKKy8vIGhhdmUgdG8gYmUgZXh0
ZW5kZWQgaWYgdGhlIHN0YW5kYXJkIGlzIHVwZGF0ZWQgdG8gaW5jbHVkZSBlbnVtIHZhbHVlcyA+
PSA2NC4KK2ludCBFbnVtTXVzdEJlTGVzc1RoYW42NCgpIHsKKyAgcmV0dXJuIC0xOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Citjb25zdGV4cHIgaW50IE1ha2VNYXNrKGNv
bnN0IGludCBpbmRleCwgY29uc3QgaW50IGxlbmd0aCwgVCAoJnZhbHVlcylbTl0pIHsKKyAgcmV0
dXJuIGxlbmd0aCA+IDEKKyAgICAgICAgICAgICA/IChNYWtlTWFzayhpbmRleCwgMSwgdmFsdWVz
KSArCisgICAgICAgICAgICAgICAgTWFrZU1hc2soaW5kZXggKyAxLCBsZW5ndGggLSAxLCB2YWx1
ZXMpKQorICAgICAgICAgICAgIDogKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlc1tpbmRleF0p
IDwgNjQKKyAgICAgICAgICAgICAgICAgICAgPyAodWludDY0X3R7MX0gPDwgc3RhdGljX2Nhc3Q8
dWludDhfdD4odmFsdWVzW2luZGV4XSkpCisgICAgICAgICAgICAgICAgICAgIDogRW51bU11c3RC
ZUxlc3NUaGFuNjQoKSk7Cit9CisKKy8vIENyZWF0ZSBhIGJpdG1hc2sgd2hlcmUgZWFjaCBiaXQg
Y29ycmVzcG9uZHMgdG8gb25lIHBvdGVudGlhbCBlbnVtIHZhbHVlLgorLy8gfHZhbHVlc3wgc2hv
dWxkIGJlIGFuIGFycmF5IGxpc3RpbmcgYWxsIHBvc3NpYmxlIGVudW0gdmFsdWVzLiBUaGUgYml0
IGlzIHNldAorLy8gdG8gb25lIGlmIHRoZSBjb3JyZXNwb25kaW5nIGVudW0gZXhpc3RzLiBPbmx5
IHdvcmtzIGZvciBlbnVtcyB3aXRoIHZhbHVlcworLy8gbGVzcyB0aGFuIDY0LgordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHNpemVfdCBOPgorY29uc3RleHByIHVpbnQ2NF90IENyZWF0ZUVudW1CaXRt
YXNrKFQgKCZ2YWx1ZXMpW05dKSB7CisgIHJldHVybiBNYWtlTWFzaygwLCBOLCB2YWx1ZXMpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIENvbG9yU3BhY2U6
OkNvbG9yU3BhY2UoKSA9IGRlZmF1bHQ7CitDb2xvclNwYWNlOjpDb2xvclNwYWNlKGNvbnN0IENv
bG9yU3BhY2UmIG90aGVyKSA9IGRlZmF1bHQ7CitDb2xvclNwYWNlOjpDb2xvclNwYWNlKENvbG9y
U3BhY2UmJiBvdGhlcikgPSBkZWZhdWx0OworQ29sb3JTcGFjZSYgQ29sb3JTcGFjZTo6b3BlcmF0
b3I9KGNvbnN0IENvbG9yU3BhY2UmIG90aGVyKSA9IGRlZmF1bHQ7CiAKIENvbG9yU3BhY2U6OkNv
bG9yU3BhY2UoUHJpbWFyeUlEIHByaW1hcmllcywKICAgICAgICAgICAgICAgICAgICAgICAgVHJh
bnNmZXJJRCB0cmFuc2ZlciwKICAgICAgICAgICAgICAgICAgICAgICAgTWF0cml4SUQgbWF0cml4
LAogICAgICAgICAgICAgICAgICAgICAgICBSYW5nZUlEIHJhbmdlKQorICAgIDogQ29sb3JTcGFj
ZShwcmltYXJpZXMsIHRyYW5zZmVyLCBtYXRyaXgsIHJhbmdlLCBudWxscHRyKSB7fQorCitDb2xv
clNwYWNlOjpDb2xvclNwYWNlKFByaW1hcnlJRCBwcmltYXJpZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgIFRyYW5zZmVySUQgdHJhbnNmZXIsCisgICAgICAgICAgICAgICAgICAgICAgIE1hdHJp
eElEIG1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2VJRCByYW5nZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSGRyTWV0YWRhdGEqIGhkcl9tZXRhZGF0YSkKICAgICA6
IHByaW1hcmllc18ocHJpbWFyaWVzKSwKICAgICAgIHRyYW5zZmVyXyh0cmFuc2ZlciksCiAgICAg
ICBtYXRyaXhfKG1hdHJpeCksCi0gICAgICByYW5nZV8ocmFuZ2UpIHt9CisgICAgICByYW5nZV8o
cmFuZ2UpLAorICAgICAgaGRyX21ldGFkYXRhXyhoZHJfbWV0YWRhdGEgPyBhYnNsOjptYWtlX29w
dGlvbmFsKCpoZHJfbWV0YWRhdGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IGFic2w6Om51bGxvcHQpIHt9CiAKIENvbG9yU3BhY2U6OlByaW1hcnlJRCBDb2xvclNwYWNlOjpw
cmltYXJpZXMoKSBjb25zdCB7CiAgIHJldHVybiBwcmltYXJpZXNfOwpAQCAtMzksNCArOTMsNjEg
QEAgQ29sb3JTcGFjZTo6UmFuZ2VJRCBDb2xvclNwYWNlOjpyYW5nZSgpIGNvbnN0IHsKICAgcmV0
dXJuIHJhbmdlXzsKIH0KIAorY29uc3QgSGRyTWV0YWRhdGEqIENvbG9yU3BhY2U6Omhkcl9tZXRh
ZGF0YSgpIGNvbnN0IHsKKyAgcmV0dXJuIGhkcl9tZXRhZGF0YV8gPyAmKmhkcl9tZXRhZGF0YV8g
OiBudWxscHRyOworfQorCitib29sIENvbG9yU3BhY2U6OnNldF9wcmltYXJpZXNfZnJvbV91aW50
OCh1aW50OF90IGVudW1fdmFsdWUpIHsKKyAgY29uc3RleHByIFByaW1hcnlJRCBrUHJpbWFyeUlk
c1tdID0geworICAgICAgUHJpbWFyeUlEOjprSW52YWxpZCwgICAgUHJpbWFyeUlEOjprQlQ3MDks
ICAgICAgUHJpbWFyeUlEOjprVU5TUEVDSUZJRUQsCisgICAgICBQcmltYXJ5SUQ6OmtCVDQ3ME0s
ICAgICBQcmltYXJ5SUQ6OmtCVDQ3MEJHLCAgICBQcmltYXJ5SUQ6OmtTTVBURTE3ME0sCisgICAg
ICBQcmltYXJ5SUQ6OmtTTVBURTI0ME0sICBQcmltYXJ5SUQ6OmtGSUxNLCAgICAgICBQcmltYXJ5
SUQ6OmtCVDIwMjAsCisgICAgICBQcmltYXJ5SUQ6OmtTTVBURVNUNDI4LCBQcmltYXJ5SUQ6OmtT
TVBURVNUNDMxLCBQcmltYXJ5SUQ6OmtTTVBURVNUNDMyLAorICAgICAgUHJpbWFyeUlEOjprSkVE
RUNQMjJ9OworICBjb25zdGV4cHIgdWludDY0X3QgZW51bV9iaXRtYXNrID0gQ3JlYXRlRW51bUJp
dG1hc2soa1ByaW1hcnlJZHMpOworCisgIHJldHVybiBTZXRGcm9tVWludDgoZW51bV92YWx1ZSwg
ZW51bV9iaXRtYXNrLCAmcHJpbWFyaWVzXyk7Cit9CisKK2Jvb2wgQ29sb3JTcGFjZTo6c2V0X3Ry
YW5zZmVyX2Zyb21fdWludDgodWludDhfdCBlbnVtX3ZhbHVlKSB7CisgIGNvbnN0ZXhwciBUcmFu
c2ZlcklEIGtUcmFuc2Zlcklkc1tdID0geworICAgICAgVHJhbnNmZXJJRDo6a0ludmFsaWQsICAg
ICAgVHJhbnNmZXJJRDo6a0JUNzA5LAorICAgICAgVHJhbnNmZXJJRDo6a1VOU1BFQ0lGSUVELCAg
VHJhbnNmZXJJRDo6a0dBTU1BMjIsCisgICAgICBUcmFuc2ZlcklEOjprR0FNTUEyOCwgICAgICBU
cmFuc2ZlcklEOjprU01QVEUxNzBNLAorICAgICAgVHJhbnNmZXJJRDo6a1NNUFRFMjQwTSwgICAg
VHJhbnNmZXJJRDo6a0xJTkVBUiwKKyAgICAgIFRyYW5zZmVySUQ6OmtMT0csICAgICAgICAgIFRy
YW5zZmVySUQ6OmtMT0dfU1FSVCwKKyAgICAgIFRyYW5zZmVySUQ6OmtJRUM2MTk2Nl8yXzQsIFRy
YW5zZmVySUQ6OmtCVDEzNjFfRUNHLAorICAgICAgVHJhbnNmZXJJRDo6a0lFQzYxOTY2XzJfMSwg
VHJhbnNmZXJJRDo6a0JUMjAyMF8xMCwKKyAgICAgIFRyYW5zZmVySUQ6OmtCVDIwMjBfMTIsICAg
IFRyYW5zZmVySUQ6OmtTTVBURVNUMjA4NCwKKyAgICAgIFRyYW5zZmVySUQ6OmtTTVBURVNUNDI4
LCAgIFRyYW5zZmVySUQ6OmtBUklCX1NURF9CNjd9OworICBjb25zdGV4cHIgdWludDY0X3QgZW51
bV9iaXRtYXNrID0gQ3JlYXRlRW51bUJpdG1hc2soa1RyYW5zZmVySWRzKTsKKworICByZXR1cm4g
U2V0RnJvbVVpbnQ4KGVudW1fdmFsdWUsIGVudW1fYml0bWFzaywgJnRyYW5zZmVyXyk7Cit9CisK
K2Jvb2wgQ29sb3JTcGFjZTo6c2V0X21hdHJpeF9mcm9tX3VpbnQ4KHVpbnQ4X3QgZW51bV92YWx1
ZSkgeworICBjb25zdGV4cHIgTWF0cml4SUQga01hdHJpeElkc1tdID0geworICAgICAgTWF0cml4
SUQ6OmtSR0IsICAgICAgIE1hdHJpeElEOjprQlQ3MDksICAgICAgICBNYXRyaXhJRDo6a1VOU1BF
Q0lGSUVELAorICAgICAgTWF0cml4SUQ6OmtGQ0MsICAgICAgIE1hdHJpeElEOjprQlQ0NzBCRywg
ICAgICBNYXRyaXhJRDo6a1NNUFRFMTcwTSwKKyAgICAgIE1hdHJpeElEOjprU01QVEUyNDBNLCBN
YXRyaXhJRDo6a1lDT0NHLCAgICAgICAgTWF0cml4SUQ6OmtCVDIwMjBfTkNMLAorICAgICAgTWF0
cml4SUQ6OmtCVDIwMjBfQ0wsIE1hdHJpeElEOjprU01QVEUyMDg1LCAgICBNYXRyaXhJRDo6a0NE
TkNMUywKKyAgICAgIE1hdHJpeElEOjprQ0RDTFMsICAgICBNYXRyaXhJRDo6a0JUMjEwMF9JQ1RD
UCwgTWF0cml4SUQ6OmtJbnZhbGlkfTsKKyAgY29uc3RleHByIHVpbnQ2NF90IGVudW1fYml0bWFz
ayA9IENyZWF0ZUVudW1CaXRtYXNrKGtNYXRyaXhJZHMpOworCisgIHJldHVybiBTZXRGcm9tVWlu
dDgoZW51bV92YWx1ZSwgZW51bV9iaXRtYXNrLCAmbWF0cml4Xyk7Cit9CisKK2Jvb2wgQ29sb3JT
cGFjZTo6c2V0X3JhbmdlX2Zyb21fdWludDgodWludDhfdCBlbnVtX3ZhbHVlKSB7CisgIGNvbnN0
ZXhwciBSYW5nZUlEIGtSYW5nZUlkc1tdID0ge1JhbmdlSUQ6OmtJbnZhbGlkLCBSYW5nZUlEOjpr
TGltaXRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2VJRDo6a0Z1
bGwsIFJhbmdlSUQ6OmtEZXJpdmVkfTsKKyAgY29uc3RleHByIHVpbnQ2NF90IGVudW1fYml0bWFz
ayA9IENyZWF0ZUVudW1CaXRtYXNrKGtSYW5nZUlkcyk7CisKKyAgcmV0dXJuIFNldEZyb21VaW50
OChlbnVtX3ZhbHVlLCBlbnVtX2JpdG1hc2ssICZyYW5nZV8pOworfQorCit2b2lkIENvbG9yU3Bh
Y2U6OnNldF9oZHJfbWV0YWRhdGEoY29uc3QgSGRyTWV0YWRhdGEqIGhkcl9tZXRhZGF0YSkgewor
ICBoZHJfbWV0YWRhdGFfID0KKyAgICAgIGhkcl9tZXRhZGF0YSA/IGFic2w6Om1ha2Vfb3B0aW9u
YWwoKmhkcl9tZXRhZGF0YSkgOiBhYnNsOjpudWxsb3B0OworfQorCiB9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdmlkZW8vY29sb3Jfc3BhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9jb2xvcl9zcGFjZS5oCmluZGV4IDgxMDI2NDdiNmZm
ODg0N2EwNDkwMDRjYmI1OTg1OGUwOGI0ZDg0NzEuLjc5YTE1ZjU5YjM5MzI4N2JiODliOTg2NThh
YzY0YjQ0ZTE4NmEwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlby9jb2xvcl9zcGFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9jb2xvcl9zcGFjZS5oCkBAIC0x
MSw5NSArMTEsMTQ1IEBACiAjaWZuZGVmIEFQSV9WSURFT19DT0xPUl9TUEFDRV9IXwogI2RlZmlu
ZSBBUElfVklERU9fQ09MT1JfU1BBQ0VfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5j
bHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS92aWRlby9oZHJfbWV0
YWRhdGEuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLS8vIFVzZWQgdG8gcmVwcmVzZW50IGEg
Y29sb3Igc3BhY2UgZm9yIHRoZSBwdXJwb3NlIG9mIGNvbG9yIGNvbnZlcnNpb24uIFRoaXMKLS8v
IGNsYXNzIG9ubHkgcmVwcmVzZW50cyBjb2xvciBpbmZvcm1hdGlvbiB0aGF0IGNhbiBiZSB0cmFu
c2ZlcnJlZCB0aHJvdWdoIHRoZQotLy8gYml0c3RyZWFtIG9mIFdlYlJUQydzIGludGVybmFsIHN1
cHBvcnRlZCBjb2RlY3M6CisvLyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgY29sb3IgaW5mb3JtYXRp
b24gYXMgc3BlY2lmaWVkIGluIFQtUkVDIEguMjczLAorLy8gYXZhaWxhYmxlIGZyb20gaHR0cHM6
Ly93d3cuaXR1LmludC9yZWMvVC1SRUMtSC4yNzMuCisvLworLy8gV2ViUlRDJ3Mgc3VwcG9ydGVk
IGNvZGVjczoKIC8vIC0gVlA5IHN1cHBvcnRzIGNvbG9yIHByb2ZpbGVzLCBzZWUgVlA5IEJpdHN0
cmVhbSAmIERlY29kaW5nIFByb2Nlc3MKIC8vIFNwZWNpZmljYXRpb24gVmVyc2lvbiAwLjYgU2Vj
dGlvbiA3LjIuMiAiQ29sb3IgY29uZmlnIHNlbWFudGljcyIgYXZhaWxhYmxlCiAvLyBmcm9tIGh0
dHBzOi8vd3d3LndlYm1wcm9qZWN0Lm9yZy4KLS8vIFRPRE8oZW1pcmNhbik6IEV4dHJhY3QgdGhl
c2UgdmFsdWVzIGZyb20gZGVjb2RlIGFuZCBhZGQgdG8gdGhlIGV4aXN0aW5nIG9uZXMuCiAvLyAt
IFZQOCBvbmx5IHN1cHBvcnRzIEJULjYwMSwgc2VlCiAvLyBodHRwczovL3Rvb2xzLmlldGYub3Jn
L2h0bWwvcmZjNjM4NiNzZWN0aW9uLTkuMgotLy8gLSBIMjY0IHN1cHBvcnRzIGRpZmZlcmVudCBj
b2xvciBwcmltYXJpZXMsIHRyYW5zZmVyIGNoYXJhY3RlcmlzdGljcywgbWF0cml4Ci0vLyBjb2Vm
ZmljaWVudHMgYW5kIHJhbmdlLiBTZWUgVC1SRUMtSC4yNjQgRS4yLjEsICJWVUkgcGFyYW1ldGVy
cyBzZW1hbnRpY3MiLAotLy8gYXZhaWxhYmxlIGZyb20gaHR0cHM6Ly93d3cuaXR1LmludC9yZWMv
VC1SRUMtSC4yNjQuCisvLyAtIEgyNjQgdXNlcyB0aGUgZXhhY3Qgc2FtZSByZXByZXNlbnRhdGlv
biBhcyBULVJFQyBILjI3My4gU2VlIFQtUkVDLUguMjY0CisvLyBFLjIuMSwgIlZVSSBwYXJhbWV0
ZXJzIHNlbWFudGljcyIsIGF2YWlsYWJsZSBmcm9tCisvLyBodHRwczovL3d3dy5pdHUuaW50L3Jl
Yy9ULVJFQy1ILjI2NC4KKwogY2xhc3MgQ29sb3JTcGFjZSB7CiAgcHVibGljOgotICBlbnVtIGNs
YXNzIFByaW1hcnlJRCB7Ci0gICAga0ludmFsaWQsCi0gICAga0JUNzA5LAotICAgIGtCVDQ3ME0s
Ci0gICAga0JUNDcwQkcsCi0gICAga1NNUFRFMTcwTSwgIC8vIElkZW50aWNhbCB0byBCVDYwMQot
ICAgIGtTTVBURTI0ME0sCi0gICAga0ZJTE0sCi0gICAga0JUMjAyMCwKLSAgICBrU01QVEVTVDQy
OCwKLSAgICBrU01QVEVTVDQzMSwKLSAgICBrU01QVEVTVDQzMiwKLSAgICBrSkVERUNQMjIsCisg
IGVudW0gY2xhc3MgUHJpbWFyeUlEIDogdWludDhfdCB7CisgICAgLy8gVGhlIGluZGljZXMgYXJl
IGVxdWFsIHRvIHRoZSB2YWx1ZXMgc3BlY2lmaWVkIGluIFQtUkVDIEguMjczIFRhYmxlIDIuCisg
ICAga0ludmFsaWQgPSAwLAorICAgIGtCVDcwOSA9IDEsCisgICAga1VOU1BFQ0lGSUVEID0gMiwK
KyAgICBrQlQ0NzBNID0gNCwKKyAgICBrQlQ0NzBCRyA9IDUsCisgICAga1NNUFRFMTcwTSA9IDYs
ICAvLyBJZGVudGljYWwgdG8gQlQ2MDEKKyAgICBrU01QVEUyNDBNID0gNywKKyAgICBrRklMTSA9
IDgsCisgICAga0JUMjAyMCA9IDksCisgICAga1NNUFRFU1Q0MjggPSAxMCwKKyAgICBrU01QVEVT
VDQzMSA9IDExLAorICAgIGtTTVBURVNUNDMyID0gMTIsCisgICAga0pFREVDUDIyID0gMjIsICAv
LyBJZGVudGljYWwgdG8gRUJVMzIxMy1FCisgICAgLy8gV2hlbiBhZGRpbmcvcmVtb3ZpbmcgZW50
cmllcyBoZXJlLCBwbGVhc2UgbWFrZSBzdXJlIHRvIGRvIHRoZQorICAgIC8vIGNvcnJlc3BvbmRp
bmcgY2hhbmdlIHRvIGtQcmltYXJ5SWRzLgogICB9OwogCi0gIGVudW0gY2xhc3MgVHJhbnNmZXJJ
RCB7Ci0gICAga0ludmFsaWQsCi0gICAga0JUNzA5LAotICAgIGtHQU1NQTIyLAotICAgIGtHQU1N
QTI4LAotICAgIGtTTVBURTE3ME0sCi0gICAga1NNUFRFMjQwTSwKLSAgICBrTElORUFSLAotICAg
IGtMT0csCi0gICAga0xPR19TUVJULAotICAgIGtJRUM2MTk2Nl8yXzQsCi0gICAga0JUMTM2MV9F
Q0csCi0gICAga0lFQzYxOTY2XzJfMSwKLSAgICBrQlQyMDIwXzEwLAotICAgIGtCVDIwMjBfMTIs
Ci0gICAga1NNUFRFU1QyMDg0LAotICAgIGtTTVBURVNUNDI4LAotICAgIGtBUklCX1NURF9CNjcs
CisgIGVudW0gY2xhc3MgVHJhbnNmZXJJRCA6IHVpbnQ4X3QgeworICAgIC8vIFRoZSBpbmRpY2Vz
IGFyZSBlcXVhbCB0byB0aGUgdmFsdWVzIHNwZWNpZmllZCBpbiBULVJFQyBILjI3MyBUYWJsZSAz
LgorICAgIGtJbnZhbGlkID0gMCwKKyAgICBrQlQ3MDkgPSAxLAorICAgIGtVTlNQRUNJRklFRCA9
IDIsCisgICAga0dBTU1BMjIgPSA0LAorICAgIGtHQU1NQTI4ID0gNSwKKyAgICBrU01QVEUxNzBN
ID0gNiwKKyAgICBrU01QVEUyNDBNID0gNywKKyAgICBrTElORUFSID0gOCwKKyAgICBrTE9HID0g
OSwKKyAgICBrTE9HX1NRUlQgPSAxMCwKKyAgICBrSUVDNjE5NjZfMl80ID0gMTEsCisgICAga0JU
MTM2MV9FQ0cgPSAxMiwKKyAgICBrSUVDNjE5NjZfMl8xID0gMTMsCisgICAga0JUMjAyMF8xMCA9
IDE0LAorICAgIGtCVDIwMjBfMTIgPSAxNSwKKyAgICBrU01QVEVTVDIwODQgPSAxNiwKKyAgICBr
U01QVEVTVDQyOCA9IDE3LAorICAgIGtBUklCX1NURF9CNjcgPSAxOCwKKyAgICAvLyBXaGVuIGFk
ZGluZy9yZW1vdmluZyBlbnRyaWVzIGhlcmUsIHBsZWFzZSBtYWtlIHN1cmUgdG8gZG8gdGhlCisg
ICAgLy8gY29ycmVzcG9uZGluZyBjaGFuZ2UgdG8ga1RyYW5zZmVySWRzLgogICB9OwogCi0gIGVu
dW0gY2xhc3MgTWF0cml4SUQgewotICAgIGtJbnZhbGlkLAotICAgIGtSR0IsCi0gICAga0JUNzA5
LAotICAgIGtGQ0MsCi0gICAga0JUNDcwQkcsCi0gICAga1NNUFRFMTcwTSwKLSAgICBrU01QVEUy
NDBNLAotICAgIGtZQ09DRywKLSAgICBrQlQyMDIwX05DTCwKLSAgICBrQlQyMDIwX0NMLAotICAg
IGtTTVBURTIwODUsCisgIGVudW0gY2xhc3MgTWF0cml4SUQgOiB1aW50OF90IHsKKyAgICAvLyBU
aGUgaW5kaWNlcyBhcmUgZXF1YWwgdG8gdGhlIHZhbHVlcyBzcGVjaWZpZWQgaW4gVC1SRUMgSC4y
NzMgVGFibGUgNC4KKyAgICBrUkdCID0gMCwKKyAgICBrQlQ3MDkgPSAxLAorICAgIGtVTlNQRUNJ
RklFRCA9IDIsCisgICAga0ZDQyA9IDQsCisgICAga0JUNDcwQkcgPSA1LAorICAgIGtTTVBURTE3
ME0gPSA2LAorICAgIGtTTVBURTI0ME0gPSA3LAorICAgIGtZQ09DRyA9IDgsCisgICAga0JUMjAy
MF9OQ0wgPSA5LAorICAgIGtCVDIwMjBfQ0wgPSAxMCwKKyAgICBrU01QVEUyMDg1ID0gMTEsCisg
ICAga0NETkNMUyA9IDEyLAorICAgIGtDRENMUyA9IDEzLAorICAgIGtCVDIxMDBfSUNUQ1AgPSAx
NCwKKyAgICBrSW52YWxpZCA9IDYzLAorICAgIC8vIFdoZW4gYWRkaW5nL3JlbW92aW5nIGVudHJp
ZXMgaGVyZSwgcGxlYXNlIG1ha2Ugc3VyZSB0byBkbyB0aGUKKyAgICAvLyBjb3JyZXNwb25kaW5n
IGNoYW5nZSB0byBrTWF0cml4SWRzLgogICB9OwogCiAgIGVudW0gY2xhc3MgUmFuZ2VJRCB7Ci0g
ICAga0ludmFsaWQsCisgICAgLy8gVGhlIGluZGljZXMgYXJlIGVxdWFsIHRvIHRoZSB2YWx1ZXMg
c3BlY2lmaWVkIGF0CisgICAgLy8gaHR0cHM6Ly93d3cud2VibXByb2plY3Qub3JnL2RvY3MvY29u
dGFpbmVyLyNjb2xvdXIgZm9yIHRoZSBlbGVtZW50IFJhbmdlLgorICAgIGtJbnZhbGlkID0gMCwK
ICAgICAvLyBMaW1pdGVkIFJlYy4gNzA5IGNvbG9yIHJhbmdlIHdpdGggUkdCIHZhbHVlcyByYW5n
aW5nIGZyb20gMTYgdG8gMjM1LgotICAgIGtMaW1pdGVkLAorICAgIGtMaW1pdGVkID0gMSwKICAg
ICAvLyBGdWxsIFJHQiBjb2xvciByYW5nZSB3aXRoIFJHQiB2YWxlZXMgZnJvbSAwIHRvIDI1NS4K
LSAgICBrRnVsbCwKKyAgICBrRnVsbCA9IDIsCisgICAgLy8gUmFuZ2UgaXMgZGVmaW5lZCBieSBN
YXRyaXhDb2VmZmljaWVudHMvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MuCisgICAga0Rlcml2ZWQg
PSAzLAorICAgIC8vIFdoZW4gYWRkaW5nL3JlbW92aW5nIGVudHJpZXMgaGVyZSwgcGxlYXNlIG1h
a2Ugc3VyZSB0byBkbyB0aGUKKyAgICAvLyBjb3JyZXNwb25kaW5nIGNoYW5nZSB0byBrUmFuZ2VJ
ZHMuCiAgIH07CiAKICAgQ29sb3JTcGFjZSgpOworICBDb2xvclNwYWNlKGNvbnN0IENvbG9yU3Bh
Y2UmIG90aGVyKTsKKyAgQ29sb3JTcGFjZShDb2xvclNwYWNlJiYgb3RoZXIpOworICBDb2xvclNw
YWNlJiBvcGVyYXRvcj0oY29uc3QgQ29sb3JTcGFjZSYgb3RoZXIpOwogICBDb2xvclNwYWNlKFBy
aW1hcnlJRCBwcmltYXJpZXMsCiAgICAgICAgICAgICAgVHJhbnNmZXJJRCB0cmFuc2ZlciwKICAg
ICAgICAgICAgICBNYXRyaXhJRCBtYXRyaXgsCiAgICAgICAgICAgICAgUmFuZ2VJRCBmdWxsX3Jh
bmdlKTsKKyAgQ29sb3JTcGFjZShQcmltYXJ5SUQgcHJpbWFyaWVzLAorICAgICAgICAgICAgIFRy
YW5zZmVySUQgdHJhbnNmZXIsCisgICAgICAgICAgICAgTWF0cml4SUQgbWF0cml4LAorICAgICAg
ICAgICAgIFJhbmdlSUQgcmFuZ2UsCisgICAgICAgICAgICAgY29uc3QgSGRyTWV0YWRhdGEqIGhk
cl9tZXRhZGF0YSk7CisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvclNwYWNlJiBvdGhlcikg
Y29uc3QgeworICAgIHJldHVybiBwcmltYXJpZXNfID09IG90aGVyLnByaW1hcmllcygpICYmIHRy
YW5zZmVyXyA9PSBvdGhlci50cmFuc2ZlcigpICYmCisgICAgICAgICAgIG1hdHJpeF8gPT0gb3Ro
ZXIubWF0cml4KCkgJiYgcmFuZ2VfID09IG90aGVyLnJhbmdlKCkgJiYKKyAgICAgICAgICAgKCho
ZHJfbWV0YWRhdGFfLmhhc192YWx1ZSgpICYmIG90aGVyLmhkcl9tZXRhZGF0YSgpICYmCisgICAg
ICAgICAgICAgKmhkcl9tZXRhZGF0YV8gPT0gKm90aGVyLmhkcl9tZXRhZGF0YSgpKSB8fAorICAg
ICAgICAgICAgKCFoZHJfbWV0YWRhdGFfLmhhc192YWx1ZSgpICYmIG90aGVyLmhkcl9tZXRhZGF0
YSgpID09IG51bGxwdHIpKTsKKyAgfQogCiAgIFByaW1hcnlJRCBwcmltYXJpZXMoKSBjb25zdDsK
ICAgVHJhbnNmZXJJRCB0cmFuc2ZlcigpIGNvbnN0OwogICBNYXRyaXhJRCBtYXRyaXgoKSBjb25z
dDsKICAgUmFuZ2VJRCByYW5nZSgpIGNvbnN0OworICBjb25zdCBIZHJNZXRhZGF0YSogaGRyX21l
dGFkYXRhKCkgY29uc3Q7CisKKyAgYm9vbCBzZXRfcHJpbWFyaWVzX2Zyb21fdWludDgodWludDhf
dCBlbnVtX3ZhbHVlKTsKKyAgYm9vbCBzZXRfdHJhbnNmZXJfZnJvbV91aW50OCh1aW50OF90IGVu
dW1fdmFsdWUpOworICBib29sIHNldF9tYXRyaXhfZnJvbV91aW50OCh1aW50OF90IGVudW1fdmFs
dWUpOworICBib29sIHNldF9yYW5nZV9mcm9tX3VpbnQ4KHVpbnQ4X3QgZW51bV92YWx1ZSk7Cisg
IHZvaWQgc2V0X2hkcl9tZXRhZGF0YShjb25zdCBIZHJNZXRhZGF0YSogaGRyX21ldGFkYXRhKTsK
IAogIHByaXZhdGU6CiAgIFByaW1hcnlJRCBwcmltYXJpZXNfID0gUHJpbWFyeUlEOjprSW52YWxp
ZDsKICAgVHJhbnNmZXJJRCB0cmFuc2Zlcl8gPSBUcmFuc2ZlcklEOjprSW52YWxpZDsKICAgTWF0
cml4SUQgbWF0cml4XyA9IE1hdHJpeElEOjprSW52YWxpZDsKICAgUmFuZ2VJRCByYW5nZV8gPSBS
YW5nZUlEOjprSW52YWxpZDsKKyAgYWJzbDo6b3B0aW9uYWw8SGRyTWV0YWRhdGE+IGhkcl9tZXRh
ZGF0YV87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vZW5jb2RlZF9pbWFn
ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
by9lbmNvZGVkX2ltYWdlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3YzZmYWRlZTcwM2M4OWFjY2UyNDk4MTNj
MWQyMjI0YWVmMjIzOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5jYwpAQCAtMCwwICsx
LDQyIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxMiBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImFwaS92aWRlby9lbmNv
ZGVkX2ltYWdlLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworbmFtZXNwYWNlIHdlYnJ0YyB7
CisKKy8vIEZGbXBlZydzIGRlY29kZXIsIHVzZWQgYnkgSDI2NERlY29kZXJJbXBsLCByZXF1aXJl
cyB1cCB0byA4IGJ5dGVzIHBhZGRpbmcgZHVlCisvLyB0byBvcHRpbWl6ZWQgYml0c3RyZWFtIHJl
YWRlcnMuIFNlZSBhdmNvZGVjX2RlY29kZV92aWRlbzIuCitjb25zdCBzaXplX3QgRW5jb2RlZElt
YWdlOjprQnVmZmVyUGFkZGluZ0J5dGVzSDI2NCA9IDg7CisKK3NpemVfdCBFbmNvZGVkSW1hZ2U6
OkdldEJ1ZmZlclBhZGRpbmdCeXRlcyhWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlKSB7CisgIHN3
aXRjaCAoY29kZWNfdHlwZSkgeworICAgIGNhc2Uga1ZpZGVvQ29kZWNIMjY0OgorICAgICAgcmV0
dXJuIGtCdWZmZXJQYWRkaW5nQnl0ZXNIMjY0OworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4g
MDsKKyAgfQorfQorCitFbmNvZGVkSW1hZ2U6OkVuY29kZWRJbWFnZSgpIDogRW5jb2RlZEltYWdl
KG51bGxwdHIsIDAsIDApIHt9CisKK0VuY29kZWRJbWFnZTo6RW5jb2RlZEltYWdlKGNvbnN0IEVu
Y29kZWRJbWFnZSYpID0gZGVmYXVsdDsKKworRW5jb2RlZEltYWdlOjpFbmNvZGVkSW1hZ2UodWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBzaXplX3Qgc2l6ZSkKKyAgICA6IF9idWZmZXIo
YnVmZmVyKSwgX2xlbmd0aChsZW5ndGgpLCBfc2l6ZShzaXplKSB7fQorCit2b2lkIEVuY29kZWRJ
bWFnZTo6U2V0RW5jb2RlVGltZShpbnQ2NF90IGVuY29kZV9zdGFydF9tcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgZW5jb2RlX2ZpbmlzaF9tcykgeworICB0aW1p
bmdfLmVuY29kZV9zdGFydF9tcyA9IGVuY29kZV9zdGFydF9tczsKKyAgdGltaW5nXy5lbmNvZGVf
ZmluaXNoX21zID0gZW5jb2RlX2ZpbmlzaF9tczsKK30KK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS92aWRlby9lbmNvZGVkX2ltYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3YzcxOWNl
M2E1Njc4ZDUxYWMyNGZjNzMyMDM5ZWViZDFiOTBkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vZW5jb2RlZF9p
bWFnZS5oCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRl
ZiBBUElfVklERU9fRU5DT0RFRF9JTUFHRV9IXworI2RlZmluZSBBUElfVklERU9fRU5DT0RFRF9J
TUFHRV9IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgiCisjaW5jbHVkZSAi
YXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgorI2luY2x1ZGUgImFwaS92aWRl
by92aWRlb19jb2RlY190eXBlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvbnRlbnRf
dHlwZS5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19yb3RhdGlvbi5oIgorI2luY2x1ZGUg
ImFwaS92aWRlby92aWRlb190aW1pbmcuaCIKKyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8v
IE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCisvLyBUT0RPKGJ1Zy53ZWJydGMub3JnLzkzNzgpOiBUaGlzIGlzIGEgbGVnYWN5IGFwaSBj
bGFzcywgd2hpY2ggaXMgc2xvd2x5IGJlaW5nCisvLyBjbGVhbmVkIHVwLiBEaXJlY3QgdXNlIG9m
IGl0cyBtZW1iZXJzIGlzIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkLgorY2xhc3MgUlRDX0VYUE9SVCBF
bmNvZGVkSW1hZ2UgeworIHB1YmxpYzoKKyAgc3RhdGljIGNvbnN0IHNpemVfdCBrQnVmZmVyUGFk
ZGluZ0J5dGVzSDI2NDsKKworICAvLyBTb21lIGRlY29kZXJzIHJlcXVpcmUgZW5jb2RlZCBpbWFn
ZSBidWZmZXJzIHRvIGJlIHBhZGRlZCB3aXRoIGEgc21hbGwKKyAgLy8gbnVtYmVyIG9mIGFkZGl0
aW9uYWwgYnl0ZXMgKGR1ZSB0byBvdmVyLXJlYWRpbmcgYnl0ZSByZWFkZXJzKS4KKyAgc3RhdGlj
IHNpemVfdCBHZXRCdWZmZXJQYWRkaW5nQnl0ZXMoVmlkZW9Db2RlY1R5cGUgY29kZWNfdHlwZSk7
CisKKyAgRW5jb2RlZEltYWdlKCk7CisgIEVuY29kZWRJbWFnZShjb25zdCBFbmNvZGVkSW1hZ2Um
KTsKKyAgRW5jb2RlZEltYWdlKHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90
IHNpemUpOworCisgIC8vIFRPRE8obmlzc2UpOiBDaGFuZ2Ugc3R5bGUgdG8gdGltZXN0YW1wKCks
IHNldF90aW1lc3RhbXAoKSwgZm9yIGNvbnNpc3RlbmN5CisgIC8vIHdpdGggdGhlIFZpZGVvRnJh
bWUgY2xhc3MuCisgIC8vIFNldCBmcmFtZSB0aW1lc3RhbXAgKDkwa0h6KS4KKyAgdm9pZCBTZXRU
aW1lc3RhbXAodWludDMyX3QgdGltZXN0YW1wKSB7IHRpbWVzdGFtcF9ydHBfID0gdGltZXN0YW1w
OyB9CisKKyAgLy8gR2V0IGZyYW1lIHRpbWVzdGFtcCAoOTBrSHopLgorICB1aW50MzJfdCBUaW1l
c3RhbXAoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfcnRwXzsgfQorCisgIHZvaWQgU2V0RW5j
b2RlVGltZShpbnQ2NF90IGVuY29kZV9zdGFydF9tcywgaW50NjRfdCBlbmNvZGVfZmluaXNoX21z
KTsKKworICBhYnNsOjpvcHRpb25hbDxpbnQ+IFNwYXRpYWxJbmRleCgpIGNvbnN0IHsKKyAgICBy
ZXR1cm4gc3BhdGlhbF9pbmRleF87CisgIH0KKyAgdm9pZCBTZXRTcGF0aWFsSW5kZXgoYWJzbDo6
b3B0aW9uYWw8aW50PiBzcGF0aWFsX2luZGV4KSB7CisgICAgUlRDX0RDSEVDS19HRShzcGF0aWFs
X2luZGV4LnZhbHVlX29yKDApLCAwKTsKKyAgICBSVENfRENIRUNLX0xUKHNwYXRpYWxfaW5kZXgu
dmFsdWVfb3IoMCksIGtNYXhTcGF0aWFsTGF5ZXJzKTsKKyAgICBzcGF0aWFsX2luZGV4XyA9IHNw
YXRpYWxfaW5kZXg7CisgIH0KKworICBjb25zdCB3ZWJydGM6OkNvbG9yU3BhY2UqIENvbG9yU3Bh
Y2UoKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbG9yX3NwYWNlXyA/ICYqY29sb3Jfc3BhY2VfIDog
bnVsbHB0cjsKKyAgfQorICB2b2lkIFNldENvbG9yU3BhY2UoY29uc3Qgd2VicnRjOjpDb2xvclNw
YWNlKiBjb2xvcl9zcGFjZSkgeworICAgIGNvbG9yX3NwYWNlXyA9CisgICAgICAgIGNvbG9yX3Nw
YWNlID8gYWJzbDo6bWFrZV9vcHRpb25hbCgqY29sb3Jfc3BhY2UpIDogYWJzbDo6bnVsbG9wdDsK
KyAgfQorCisgIHVpbnQzMl90IF9lbmNvZGVkV2lkdGggPSAwOworICB1aW50MzJfdCBfZW5jb2Rl
ZEhlaWdodCA9IDA7CisgIC8vIE5UUCB0aW1lIG9mIHRoZSBjYXB0dXJlIHRpbWUgaW4gbG9jYWwg
dGltZWJhc2UgaW4gbWlsbGlzZWNvbmRzLgorICBpbnQ2NF90IG50cF90aW1lX21zXyA9IDA7Cisg
IGludDY0X3QgY2FwdHVyZV90aW1lX21zXyA9IDA7CisgIEZyYW1lVHlwZSBfZnJhbWVUeXBlID0g
a1ZpZGVvRnJhbWVEZWx0YTsKKyAgdWludDhfdCogX2J1ZmZlcjsKKyAgc2l6ZV90IF9sZW5ndGg7
CisgIHNpemVfdCBfc2l6ZTsKKyAgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbl8gPSBrVmlkZW9Sb3Rh
dGlvbl8wOworICBWaWRlb0NvbnRlbnRUeXBlIGNvbnRlbnRfdHlwZV8gPSBWaWRlb0NvbnRlbnRU
eXBlOjpVTlNQRUNJRklFRDsKKyAgYm9vbCBfY29tcGxldGVGcmFtZSA9IGZhbHNlOworICBpbnQg
cXBfID0gLTE7ICAvLyBRdWFudGl6ZXIgdmFsdWUuCisKKyAgLy8gV2hlbiBhbiBhcHBsaWNhdGlv
biBpbmRpY2F0ZXMgbm9uLXplcm8gdmFsdWVzIGhlcmUsIGl0IGlzIHRha2VuIGFzIGFuCisgIC8v
IGluZGljYXRpb24gdGhhdCBhbGwgZnV0dXJlIGZyYW1lcyB3aWxsIGJlIGNvbnN0cmFpbmVkIHdp
dGggdGhvc2UgbGltaXRzCisgIC8vIHVudGlsIHRoZSBhcHBsaWNhdGlvbiBpbmRpY2F0ZXMgYSBj
aGFuZ2UgYWdhaW4uCisgIFBsYXlvdXREZWxheSBwbGF5b3V0X2RlbGF5XyA9IHstMSwgLTF9Owor
CisgIHN0cnVjdCBUaW1pbmcgeworICAgIHVpbnQ4X3QgZmxhZ3MgPSBWaWRlb1NlbmRUaW1pbmc6
OmtJbnZhbGlkOworICAgIGludDY0X3QgZW5jb2RlX3N0YXJ0X21zID0gMDsKKyAgICBpbnQ2NF90
IGVuY29kZV9maW5pc2hfbXMgPSAwOworICAgIGludDY0X3QgcGFja2V0aXphdGlvbl9maW5pc2hf
bXMgPSAwOworICAgIGludDY0X3QgcGFjZXJfZXhpdF9tcyA9IDA7CisgICAgaW50NjRfdCBuZXR3
b3JrX3RpbWVzdGFtcF9tcyA9IDA7CisgICAgaW50NjRfdCBuZXR3b3JrMl90aW1lc3RhbXBfbXMg
PSAwOworICAgIGludDY0X3QgcmVjZWl2ZV9zdGFydF9tcyA9IDA7CisgICAgaW50NjRfdCByZWNl
aXZlX2ZpbmlzaF9tcyA9IDA7CisgIH0gdGltaW5nXzsKKworIHByaXZhdGU6CisgIHVpbnQzMl90
IHRpbWVzdGFtcF9ydHBfID0gMDsKKyAgYWJzbDo6b3B0aW9uYWw8aW50PiBzcGF0aWFsX2luZGV4
XzsKKyAgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpDb2xvclNwYWNlPiBjb2xvcl9zcGFjZV87Cit9
OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1ZJREVPX0VOQ09E
RURfSU1BR0VfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlby9oZHJfbWV0YWRhdGEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaGRyX21ldGFkYXRhLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUyYTY2OWM5OGEzYzBmMDc5YWY1YzE3Njk0NWVjMjk4MjhiZDJkZGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlk
ZW8vaGRyX21ldGFkYXRhLmNjCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChj
KSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2hkcl9tZXRhZGF0YS5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworSGRyTWFzdGVyaW5nTWV0YWRhdGE6OkNocm9tYXRpY2l0eTo6Q2hyb21hdGljaXR5
KCkgPSBkZWZhdWx0OworCitIZHJNYXN0ZXJpbmdNZXRhZGF0YTo6SGRyTWFzdGVyaW5nTWV0YWRh
dGEoKSA9IGRlZmF1bHQ7CisKK0hkck1ldGFkYXRhOjpIZHJNZXRhZGF0YSgpID0gZGVmYXVsdDsK
KworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2hkcl9tZXRhZGF0YS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2hkcl9tZXRhZGF0
YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY3NmE5MDBjOTk0ODY0MjE0MzBmMDRkYmVkMmIyODg3MTNjZWUzYmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdmlkZW8vaGRyX21ldGFkYXRhLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX1ZJREVPX0hEUl9NRVRBREFUQV9IXworI2RlZmlu
ZSBBUElfVklERU9fSERSX01FVEFEQVRBX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFNNUFRFIFNUIDIwODYgbWFzdGVyaW5nIG1ldGFkYXRhLAor
Ly8gc2VlIGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9kb2N1bWVudC84MzUzODk5Lgorc3Ry
dWN0IEhkck1hc3RlcmluZ01ldGFkYXRhIHsKKyAgc3RydWN0IENocm9tYXRpY2l0eSB7CisgICAg
Ly8geHkgY2hyb21hdGljaXR5IGNvb3JkaW5hdGVzIG11c3QgYmUgY2FsY3VsYXRlZCBhcyBzcGVj
aWZpZWQgaW4gSVNPCisgICAgLy8gMTE2NjQtMzoyMDEyIFNlY3Rpb24gNywgYW5kIG11c3QgYmUg
c3BlY2lmaWVkIHdpdGggZm91ciBkZWNpbWFsIHBsYWNlcy4KKyAgICAvLyBUaGUgeCBjb29yZGlu
YXRlIG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLjAwMDEsIDAuNzQwMF0gYW5kIHRoZSB5CisgICAg
Ly8gY29vcmRpbmF0ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBbMC4wMDAxLCAwLjg0MDBdLgorICAg
IGZsb2F0IHggPSAwLjBmOworICAgIGZsb2F0IHkgPSAwLjBmOworICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDaHJvbWF0aWNpdHkmIHJocykgY29uc3QgeworICAgICAgcmV0dXJuIHggPT0gcmhz
LnggJiYgeSA9PSByaHMueTsKKyAgICB9CisKKyAgICBDaHJvbWF0aWNpdHkoKTsKKyAgfTsKKwor
ICAvLyBUaGUgbm9taW5hbCBwcmltYXJpZXMgb2YgdGhlIG1hc3RlcmluZyBkaXNwbGF5LgorICBD
aHJvbWF0aWNpdHkgcHJpbWFyeV9yOworICBDaHJvbWF0aWNpdHkgcHJpbWFyeV9nOworICBDaHJv
bWF0aWNpdHkgcHJpbWFyeV9iOworCisgIC8vIFRoZSBub21pbmFsIGNocm9tYXRpY2l0eSBvZiB0
aGUgd2hpdGUgcG9pbnQgb2YgdGhlIG1hc3RlcmluZyBkaXNwbGF5LgorICBDaHJvbWF0aWNpdHkg
d2hpdGVfcG9pbnQ7CisKKyAgLy8gVGhlIG5vbWluYWwgbWF4aW11bSBkaXNwbGF5IGx1bWluYW5j
ZSBvZiB0aGUgbWFzdGVyaW5nIGRpc3BsYXkuIFNwZWNpZmllZAorICAvLyBpbiB0aGUgdW5pdCBj
YW5kZWxhL20yLiBUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzUsIDEwMDAwXSB3aXRo
IHplcm8KKyAgLy8gZGVjaW1hbCBwbGFjZXMuCisgIGZsb2F0IGx1bWluYW5jZV9tYXggPSAwLjBm
OworCisgIC8vIFRoZSBub21pbmFsIG1pbmltdW0gZGlzcGxheSBsdW1pbmFuY2Ugb2YgdGhlIG1h
c3RlcmluZyBkaXNwbGF5LiBTcGVjaWZpZWQKKyAgLy8gaW4gdGhlIHVuaXQgY2FuZGVsYS9tMi4g
VGhlIHZhbHVlIG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLjAwMDEsIDUuMDAwMF0KKyAgLy8gd2l0
aCBmb3VyIGRlY2ltYWwgcGxhY2VzLgorICBmbG9hdCBsdW1pbmFuY2VfbWluID0gMC4wZjsKKwor
ICBIZHJNYXN0ZXJpbmdNZXRhZGF0YSgpOworCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZHJN
YXN0ZXJpbmdNZXRhZGF0YSYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuICgocHJpbWFyeV9yID09
IHJocy5wcmltYXJ5X3IpICYmIChwcmltYXJ5X2cgPT0gcmhzLnByaW1hcnlfZykgJiYKKyAgICAg
ICAgICAgIChwcmltYXJ5X2IgPT0gcmhzLnByaW1hcnlfYikgJiYgKHdoaXRlX3BvaW50ID09IHJo
cy53aGl0ZV9wb2ludCkgJiYKKyAgICAgICAgICAgIChsdW1pbmFuY2VfbWF4ID09IHJocy5sdW1p
bmFuY2VfbWF4KSAmJgorICAgICAgICAgICAgKGx1bWluYW5jZV9taW4gPT0gcmhzLmx1bWluYW5j
ZV9taW4pKTsKKyAgfQorfTsKKworLy8gSGlnaCBkeW5hbWljIHJhbmdlIChIRFIpIG1ldGFkYXRh
IGNvbW1vbiBmb3IgSERSMTAgYW5kIFdlYk0vVlA5LWJhc2VkIEhEUgorLy8gZm9ybWF0cy4gVGhp
cyBzdHJ1Y3QgcmVwbGljYXRlcyB0aGUgSERSTWV0YWRhdGEgc3RydWN0IGRlZmluZWQgaW4KKy8v
IGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9tZWRpYS9iYXNlL2hkcl9tZXRh
ZGF0YS5oCitzdHJ1Y3QgSGRyTWV0YWRhdGEgeworICBIZHJNYXN0ZXJpbmdNZXRhZGF0YSBtYXN0
ZXJpbmdfbWV0YWRhdGE7CisgIC8vIE1heCBjb250ZW50IGxpZ2h0IGxldmVsIChDTEwpLCBpLmUu
IG1heGltdW0gYnJpZ2h0bmVzcyBsZXZlbCBwcmVzZW50IGluIHRoZQorICAvLyBzdHJlYW0sIGlu
IG5pdHMuIDEgbml0ID0gMSBjYW5kZWxhL20yLgorICB1aW50MzJfdCBtYXhfY29udGVudF9saWdo
dF9sZXZlbCA9IDA7CisgIC8vIE1heCBmcmFtZS1hdmVyYWdlIGxpZ2h0IGxldmVsIChGQUxMKSwg
aS5lLiBtYXhpbXVtIGF2ZXJhZ2UgYnJpZ2h0bmVzcyBvZgorICAvLyB0aGUgYnJpZ2h0ZXN0IGZy
YW1lIGluIHRoZSBzdHJlYW0sIGluIG5pdHMuCisgIHVpbnQzMl90IG1heF9mcmFtZV9hdmVyYWdl
X2xpZ2h0X2xldmVsID0gMDsKKworICBIZHJNZXRhZGF0YSgpOworCisgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBIZHJNZXRhZGF0YSYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuICgKKyAgICAgICAg
KG1heF9jb250ZW50X2xpZ2h0X2xldmVsID09IHJocy5tYXhfY29udGVudF9saWdodF9sZXZlbCkg
JiYKKyAgICAgICAgKG1heF9mcmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVsID09IHJocy5tYXhfZnJh
bWVfYXZlcmFnZV9saWdodF9sZXZlbCkgJiYKKyAgICAgICAgKG1hc3RlcmluZ19tZXRhZGF0YSA9
PSByaHMubWFzdGVyaW5nX21ldGFkYXRhKSk7CisgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKKworI2VuZGlmICAvLyBBUElfVklERU9fSERSX01FVEFEQVRBX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaTQy
MF9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS92aWRlby9pNDIwX2J1ZmZlci5oCmluZGV4IDI4MmIyNDI2Y2EzNmUxNTkyMjhlZTViM2VlNzE4
MzVjOGJmNzcxMTkuLjYzMWUzOTRlNTM0ZjBiMjc0NzljMWM2ZjZkZjYxYTA1MWNjNTVmNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlby9pNDIwX2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlby9pNDIwX2J1ZmZlci5oCkBAIC0xMSwxNiArMTEsMTkgQEAKICNp
Zm5kZWYgQVBJX1ZJREVPX0k0MjBfQlVGRkVSX0hfCiAjZGVmaW5lIEFQSV9WSURFT19JNDIwX0JV
RkZFUl9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5j
bHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oIgogI2luY2x1ZGUgImFwaS92aWRl
by92aWRlb19yb3RhdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lbW9yeS9hbGlnbmVkX21h
bGxvYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8v
IFBsYWluIEk0MjAgYnVmZmVyIGluIHN0YW5kYXJkIG1lbW9yeS4KLWNsYXNzIEk0MjBCdWZmZXIg
OiBwdWJsaWMgSTQyMEJ1ZmZlckludGVyZmFjZSB7CitjbGFzcyBSVENfRVhQT1JUIEk0MjBCdWZm
ZXIgOiBwdWJsaWMgSTQyMEJ1ZmZlckludGVyZmFjZSB7CiAgcHVibGljOgogICBzdGF0aWMgcnRj
OjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXI+IENyZWF0ZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
OwogICBzdGF0aWMgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXI+IENyZWF0ZShpbnQgd2lk
dGgsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdmlkZW8vdGVzdC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlby90ZXN0L0JVSUxELmduCmluZGV4IGNiYTQyNDU4ZDIyMTVk
MTNjNWY1MGZlODk0YWM4ZmNhNGM3OGZhZDIuLmM4MjY5ZWZkYzA3OWJiZTM3ZWRlMjc3YWFhN2Yz
OWI1MTIwNWM4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlby90ZXN0L0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby90ZXN0L0JVSUxELmduCkBAIC0xMSwx
MCArMTEsMTIgQEAgaW1wb3J0KCIuLi8uLi8uLi93ZWJydGMuZ25pIikKIHJ0Y19zb3VyY2Vfc2V0
KCJydGNfYXBpX3ZpZGVvX3VuaXR0ZXN0cyIpIHsKICAgdGVzdG9ubHkgPSB0cnVlCiAgIHNvdXJj
ZXMgPSBbCisgICAgImNvbG9yX3NwYWNlX3VuaXR0ZXN0LmNjIiwKICAgICAidmlkZW9fYml0cmF0
ZV9hbGxvY2F0aW9uX3VuaXR0ZXN0LmNjIiwKICAgXQogICBkZXBzID0gWwogICAgICIuLjp2aWRl
b19iaXRyYXRlX2FsbG9jYXRpb24iLAorICAgICIuLjp2aWRlb19mcmFtZSIsCiAgICAgIi4uLy4u
Ly4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3Rlc3QvY29sb3Jfc3BhY2Vf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW8vdGVzdC9jb2xvcl9zcGFjZV91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzFiY2Vm
ODZhNmJjNTJjMWQxNmVkOWIzOWU2NDc2MDdiYjBiNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3Rlc3QvY29s
b3Jfc3BhY2VfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgImFwaS92aWRlby9jb2xvcl9z
cGFjZS5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitU
RVNUKENvbG9yU3BhY2UsIFRlc3RTZXR0aW5nUHJpbWFyaWVzRnJvbVVpbnQ4KSB7CisgIENvbG9y
U3BhY2UgY29sb3Jfc3BhY2U7CisgIEVYUEVDVF9UUlVFKGNvbG9yX3NwYWNlLnNldF9wcmltYXJp
ZXNfZnJvbV91aW50OCgKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENvbG9yU3BhY2U6OlBy
aW1hcnlJRDo6a0JUNDcwQkcpKSk7CisgIEVYUEVDVF9FUShDb2xvclNwYWNlOjpQcmltYXJ5SUQ6
OmtCVDQ3MEJHLCBjb2xvcl9zcGFjZS5wcmltYXJpZXMoKSk7CisgIEVYUEVDVF9GQUxTRShjb2xv
cl9zcGFjZS5zZXRfcHJpbWFyaWVzX2Zyb21fdWludDgoMykpOworICBFWFBFQ1RfRkFMU0UoY29s
b3Jfc3BhY2Uuc2V0X3ByaW1hcmllc19mcm9tX3VpbnQ4KDIzKSk7CisgIEVYUEVDVF9GQUxTRShj
b2xvcl9zcGFjZS5zZXRfcHJpbWFyaWVzX2Zyb21fdWludDgoNjQpKTsKK30KKworVEVTVChDb2xv
clNwYWNlLCBUZXN0U2V0dGluZ1RyYW5zZmVyRnJvbVVpbnQ4KSB7CisgIENvbG9yU3BhY2UgY29s
b3Jfc3BhY2U7CisgIEVYUEVDVF9UUlVFKGNvbG9yX3NwYWNlLnNldF90cmFuc2Zlcl9mcm9tX3Vp
bnQ4KAorICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6
a0JUMjAyMF8xMCkpKTsKKyAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OmtCVDIw
MjBfMTAsIGNvbG9yX3NwYWNlLnRyYW5zZmVyKCkpOworICBFWFBFQ1RfRkFMU0UoY29sb3Jfc3Bh
Y2Uuc2V0X3RyYW5zZmVyX2Zyb21fdWludDgoMykpOworICBFWFBFQ1RfRkFMU0UoY29sb3Jfc3Bh
Y2Uuc2V0X3RyYW5zZmVyX2Zyb21fdWludDgoMTkpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbG9yX3Nw
YWNlLnNldF90cmFuc2Zlcl9mcm9tX3VpbnQ4KDEyOCkpOworfQorCitURVNUKENvbG9yU3BhY2Us
IFRlc3RTZXR0aW5nTWF0cml4RnJvbVVpbnQ4KSB7CisgIENvbG9yU3BhY2UgY29sb3Jfc3BhY2U7
CisgIEVYUEVDVF9UUlVFKGNvbG9yX3NwYWNlLnNldF9tYXRyaXhfZnJvbV91aW50OCgKKyAgICAg
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENvbG9yU3BhY2U6Ok1hdHJpeElEOjprQ0ROQ0xTKSkpOwor
ICBFWFBFQ1RfRVEoQ29sb3JTcGFjZTo6TWF0cml4SUQ6OmtDRE5DTFMsIGNvbG9yX3NwYWNlLm1h
dHJpeCgpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbG9yX3NwYWNlLnNldF9tYXRyaXhfZnJvbV91aW50
OCgzKSk7CisgIEVYUEVDVF9GQUxTRShjb2xvcl9zcGFjZS5zZXRfbWF0cml4X2Zyb21fdWludDgo
MTUpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbG9yX3NwYWNlLnNldF9tYXRyaXhfZnJvbV91aW50OCgy
NTUpKTsKK30KKworVEVTVChDb2xvclNwYWNlLCBUZXN0U2V0dGluZ1JhbmdlRnJvbVVpbnQ4KSB7
CisgIENvbG9yU3BhY2UgY29sb3Jfc3BhY2U7CisgIEVYUEVDVF9UUlVFKGNvbG9yX3NwYWNlLnNl
dF9yYW5nZV9mcm9tX3VpbnQ4KAorICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ29sb3JTcGFj
ZTo6UmFuZ2VJRDo6a0Z1bGwpKSk7CisgIEVYUEVDVF9FUShDb2xvclNwYWNlOjpSYW5nZUlEOjpr
RnVsbCwgY29sb3Jfc3BhY2UucmFuZ2UoKSk7CisgIEVYUEVDVF9GQUxTRShjb2xvcl9zcGFjZS5z
ZXRfcmFuZ2VfZnJvbV91aW50OCg0KSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmNj
CmluZGV4IDZjNWFkMWVhZTVmYWMxNTBkMTM0MDY4MmMzMTM2OWYxMzJiZmM0NDkuLjFiMzU2OTA0
N2UwZTc4MDljMzRkM2ViMGQ4YmU1MTQxOGUzOTlmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19iaXRyYXRlX2Fs
bG9jYXRpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5jYwpAQCAtMTAsMTIgKzEwLDEx
IEBACiAKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCiAK
LSNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8Y3N0ZGludD4KIAogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lv
bnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uaApp
bmRleCA5ZTI1MDFkODVhMDlhYWNiOTE5ZTljYjhhZmFmNzBkYWU0ZTQ5YzliLi5kMTc3MWI0NGE0
MzVjYjgzYTI5ZWE5NGM2MzFkMjg5MDMwN2E5Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxv
Y2F0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oCkBAIC0xMSw2ICsxMSw4IEBACiAj
aWZuZGVmIEFQSV9WSURFT19WSURFT19CSVRSQVRFX0FMTE9DQVRJT05fSF8KICNkZWZpbmUgQVBJ
X1ZJREVPX1ZJREVPX0JJVFJBVEVfQUxMT0NBVElPTl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+
CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmlu
Zz4KICNpbmNsdWRlIDx2ZWN0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2NvZGVj
X3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NDc3MjNjZjA4OGNkYWIyODMyYmQxYjUxZmMyODgxMGIxMjA5
MzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2NvZGVjX3R5cGUuaApAQCAtMCwwICsxLDMwIEBACisv
KgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVklERU9fVklERU9fQ09ERUNfVFlQ
RV9IXworI2RlZmluZSBBUElfVklERU9fVklERU9fQ09ERUNfVFlQRV9IXworCituYW1lc3BhY2Ug
d2VicnRjIHsKKworLy8gVmlkZW8gY29kZWMgdHlwZXMKK2VudW0gVmlkZW9Db2RlY1R5cGUgewor
ICAvLyBUaGVyZSBhcmUgdmFyaW91cyBtZW1zZXQoLi4uLCAwLCAuLi4pIGNhbGxzIGluIHRoZSBj
b2RlIHRoYXQgcmVseSBvbgorICAvLyBrVmlkZW9Db2RlY0dlbmVyaWMgYmVpbmcgemVyby4KKyAg
a1ZpZGVvQ29kZWNHZW5lcmljID0gMCwKKyAga1ZpZGVvQ29kZWNWUDgsCisgIGtWaWRlb0NvZGVj
VlA5LAorICBrVmlkZW9Db2RlY0gyNjQsCisgIGtWaWRlb0NvZGVjSTQyMCwKKyAga1ZpZGVvQ29k
ZWNNdWx0aXBsZXgsCit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8g
QVBJX1ZJREVPX1ZJREVPX0NPREVDX1RZUEVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19jb250ZW50X3R5cGUu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92
aWRlb19jb250ZW50X3R5cGUuaAppbmRleCA4YzY0NjAyODhkODIxY2I2NmVmNzE0MGQ5ODk1ZTNj
NTY5ODkzNDI2Li4yZDM4YTYyMzY2YzU3NzU3NmE4MmJmZDJkMGJkNDg5NGRiYzIzNzMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlk
ZW8vdmlkZW9fY29udGVudF90eXBlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5oCkBAIC0xMyw4ICsx
Myw2IEBACiAKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAotI2luY2x1ZGUgPHN0cmluZz4KLQogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKIGVudW0gY2xhc3MgVmlkZW9Db250ZW50VHlwZSA6IHVpbnQ4X3Qg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmNjCmluZGV4IDU1MjFhZDhhNTg3NDQx
MjIzNzQzYzJmOWE4YzkxZDQzNTkwMDUwZDkuLmVhYWUzM2IyYjNmZmQ4NGY1ZjQyZTU1NTNlMDUz
YzFkMmFhZmFkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19mcmFtZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuY2MKQEAgLTY0
LDYgKzY0LDEzIEBAIFZpZGVvRnJhbWU6OkJ1aWxkZXImIFZpZGVvRnJhbWU6OkJ1aWxkZXI6OnNl
dF9jb2xvcl9zcGFjZSgKICAgcmV0dXJuICp0aGlzOwogfQogCitWaWRlb0ZyYW1lOjpCdWlsZGVy
JiBWaWRlb0ZyYW1lOjpCdWlsZGVyOjpzZXRfY29sb3Jfc3BhY2UoCisgICAgY29uc3QgQ29sb3JT
cGFjZSogY29sb3Jfc3BhY2UpIHsKKyAgY29sb3Jfc3BhY2VfID0KKyAgICAgIGNvbG9yX3NwYWNl
ID8gYWJzbDo6bWFrZV9vcHRpb25hbCgqY29sb3Jfc3BhY2UpIDogYWJzbDo6bnVsbG9wdDsKKyAg
cmV0dXJuICp0aGlzOworfQorCiBWaWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKGNvbnN0IHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxWaWRlb0ZyYW1lQnVmZmVyPiYgYnVmZmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICB3ZWJydGM6OlZpZGVvUm90YXRpb24gcm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgdGltZXN0YW1wX3VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUu
aAppbmRleCBkY2I1MzNlMjlmMGMwOWYyYmFlODc5NzMxM2JhMThkNTJlNzE2ZmZjLi4yYzVkMDgx
YmE2MjFkYzc2ZGJhNmNlZjhmY2MxMjk2MjE4ZTM5OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8v
dmlkZW9fZnJhbWUuaApAQCAtMTUsMTIgKzE1LDE1IEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgiCisjaW5jbHVk
ZSAiYXBpL3ZpZGVvL2hkcl9tZXRhZGF0YS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19m
cmFtZV9idWZmZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fcm90YXRpb24uaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5
c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBWaWRlb0Zy
YW1lIHsKK2NsYXNzIFJUQ19FWFBPUlQgVmlkZW9GcmFtZSB7CiAgcHVibGljOgogICAvLyBQcmVm
ZXJyZWQgd2F5IG9mIGJ1aWxkaW5nIFZpZGVvRnJhbWUgb2JqZWN0cy4KICAgY2xhc3MgQnVpbGRl
ciB7CkBAIC0zNyw2ICs0MCw3IEBAIGNsYXNzIFZpZGVvRnJhbWUgewogICAgIEJ1aWxkZXImIHNl
dF9udHBfdGltZV9tcyhpbnQ2NF90IG50cF90aW1lX21zKTsKICAgICBCdWlsZGVyJiBzZXRfcm90
YXRpb24oVmlkZW9Sb3RhdGlvbiByb3RhdGlvbik7CiAgICAgQnVpbGRlciYgc2V0X2NvbG9yX3Nw
YWNlKGNvbnN0IENvbG9yU3BhY2UmIGNvbG9yX3NwYWNlKTsKKyAgICBCdWlsZGVyJiBzZXRfY29s
b3Jfc3BhY2UoY29uc3QgQ29sb3JTcGFjZSogY29sb3Jfc3BhY2UpOwogCiAgICBwcml2YXRlOgog
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IHZpZGVvX2Zy
YW1lX2J1ZmZlcl87CkBAIC0xMTAsOCArMTE0LDEwIEBAIGNsYXNzIFZpZGVvRnJhbWUgewogICBW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gcm90YXRpb25fOyB9CiAgIHZv
aWQgc2V0X3JvdGF0aW9uKFZpZGVvUm90YXRpb24gcm90YXRpb24pIHsgcm90YXRpb25fID0gcm90
YXRpb247IH0KIAotICAvLyBTZXQgQ29sb3Igc3BhY2Ugd2hlbiBhdmFpbGFibGUuCi0gIGFic2w6
Om9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9yX3NwYWNlKCkgY29uc3QgeyByZXR1cm4gY29sb3Jf
c3BhY2VfOyB9CisgIC8vIEdldCBjb2xvciBzcGFjZSB3aGVuIGF2YWlsYWJsZS4KKyAgY29uc3Qg
Q29sb3JTcGFjZSogY29sb3Jfc3BhY2UoKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbG9yX3NwYWNl
XyA/ICYqY29sb3Jfc3BhY2VfIDogbnVsbHB0cjsKKyAgfQogCiAgIC8vIEdldCByZW5kZXIgdGlt
ZSBpbiBtaWxsaXNlY29uZHMuCiAgIC8vIFRPRE8obmlzc2UpOiBEZXByZWNhdGVkLiBNaWdyYXRl
IGFsbCB1c2VycyB0byB0aW1lc3RhbXBfdXMoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19zb3VyY2VfaW50ZXJm
YWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlk
ZW8vdmlkZW9fc291cmNlX2ludGVyZmFjZS5oCmluZGV4IDRlZTQ3MTk0NTUyOWRmMTMzYzNkNGQx
ODMzZjgwNjllNzBkOGU4ODcuLjJiZjczNzA0YmZhZjFhYjEzYzY1N2I3NWU3ZjY1NDQxMTJhNTU0
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS92aWRlby92aWRlb19zb3VyY2VfaW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX3NvdXJjZV9pbnRlcmZh
Y2UuaApAQCAtMTUsMTIgKzE1LDEzIEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFs
LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3NpbmtfaW50ZXJmYWNlLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKIC8v
IFZpZGVvU2lua1dhbnRzIGlzIHVzZWQgZm9yIG5vdGlmeWluZyB0aGUgc291cmNlIG9mIHByb3Bl
cnRpZXMgYSB2aWRlbyBmcmFtZQogLy8gc2hvdWxkIGhhdmUgd2hlbiBpdCBpcyBkZWxpdmVyZWQg
dG8gYSBjZXJ0YWluIHNpbmsuCi1zdHJ1Y3QgVmlkZW9TaW5rV2FudHMgeworc3RydWN0IFJUQ19F
WFBPUlQgVmlkZW9TaW5rV2FudHMgewogICBWaWRlb1NpbmtXYW50cygpOwogICBWaWRlb1NpbmtX
YW50cyhjb25zdCBWaWRlb1NpbmtXYW50cyYpOwogICB+VmlkZW9TaW5rV2FudHMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
by92aWRlb19zdHJlYW1fZW5jb2Rlcl9vYnNlcnZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyX29ic2Vy
dmVyLmgKaW5kZXggYjk0MGVmZGYxMTUwMDMxZjEwNGUyYTM5NzFkOGU3MzQ2MGViNTdkMy4uOThi
NWNmY2IyY2QzMGQ5ZGZlZTA0YjNhMTgzOTkxZjkzNjFhNTNlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX3N0cmVh
bV9lbmNvZGVyX29ic2VydmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyX29ic2VydmVyLmgKQEAg
LTExLDYgKzExLDcgQEAKICNpZm5kZWYgQVBJX1ZJREVPX1ZJREVPX1NUUkVBTV9FTkNPREVSX09C
U0VSVkVSX0hfCiAjZGVmaW5lIEFQSV9WSURFT19WSURFT19TVFJFQU1fRU5DT0RFUl9PQlNFUlZF
Ul9IXwogCisjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKQEAgLTY4LDYgKzY5LDkgQEAgY2xhc3MgVmlkZW9TdHJl
YW1FbmNvZGVyT2JzZXJ2ZXIgOiBwdWJsaWMgQ3B1T3ZlcnVzZU1ldHJpY3NPYnNlcnZlciB7CiAg
IHZpcnR1YWwgdm9pZCBPblNlbmRFbmNvZGVkSW1hZ2UoY29uc3QgRW5jb2RlZEltYWdlJiBlbmNv
ZGVkX2ltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVj
U3BlY2lmaWNJbmZvKiBjb2RlY19pbmZvKSA9IDA7CiAKKyAgdmlydHVhbCB2b2lkIE9uRW5jb2Rl
ckltcGxlbWVudGF0aW9uQ2hhbmdlZCgKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbXBsZW1l
bnRhdGlvbl9uYW1lKSA9IDA7CisKICAgdmlydHVhbCB2b2lkIE9uRnJhbWVEcm9wcGVkKERyb3BS
ZWFzb24gcmVhc29uKSA9IDA7CiAKICAgLy8gVXNlZCB0byBpbmRpY2F0ZSBjaGFuZ2UgaW4gY29u
dGVudCB0eXBlLCB3aGljaCBtYXkgcmVxdWlyZSBhIGNoYW5nZSBpbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX3N0
cmVhbV9lbmNvZGVyX3NldHRpbmdzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJfc2V0dGluZ3MuaAppbmRl
eCBiNjdmMzNjOTgyZGJiZWNjMDhiMTg3NzRiNTQ4YmYwZDg5ZmM1ODMxLi4zN2MxZGU3MDE1ZjIx
YjNhODVkNjliZjIwYjAzMzBjYmFjY2ZkOWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJf
c2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJfc2V0dGluZ3MuaApAQCAtMTEsNiArMTEs
NyBAQAogI2lmbmRlZiBBUElfVklERU9fVklERU9fU1RSRUFNX0VOQ09ERVJfU0VUVElOR1NfSF8K
ICNkZWZpbmUgQVBJX1ZJREVPX1ZJREVPX1NUUkVBTV9FTkNPREVSX1NFVFRJTkdTX0hfCiAKKyNp
bmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2lu
Y2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpAQCAtMjQsNiArMjUsOSBAQCBzdHJ1Y3QgVmlkZW9TdHJlYW1FbmNvZGVy
U2V0dGluZ3MgewogCiAgIC8vIE93bmVyc2hpcCBzdGF5cyB3aXRoIFdlYnJ0Y1ZpZGVvRW5naW5l
IChkZWxlZ2F0ZWQgZnJvbSBQZWVyQ29ubmVjdGlvbikuCiAgIFZpZGVvRW5jb2RlckZhY3Rvcnkq
IGVuY29kZXJfZmFjdG9yeSA9IG51bGxwdHI7CisKKyAgLy8gT3duZXJzaGlwIHN0YXlzIHdpdGgg
V2VicnRjVmlkZW9FbmdpbmUgKGRlbGVnYXRlZCBmcm9tIFBlZXJDb25uZWN0aW9uKS4KKyAgVmlk
ZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSogYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9IG51
bGxwdHI7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL0JVSUxE
LmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVv
X2NvZGVjcy9CVUlMRC5nbgppbmRleCA1NTY3NGQwOTAxMGE5OGVkYTlhMjM2YjY2YjhjNDJlZTRk
Y2YyZGI2Li5kMGIxYjliYThlYTQ4YjMyZmMwZDFkNDEwNzg3MDEzNzQwODlkOTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9f
Y29kZWNzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS92aWRlb19jb2RlY3MvQlVJTEQuZ24KQEAgLTI4LDE1ICsyOCwxOCBAQCBydGNf
c291cmNlX3NldCgidmlkZW9fY29kZWNzX2FwaSIpIHsKICAgICAidmlkZW9fZW5jb2Rlcl9jb25m
aWcuY2MiLAogICAgICJ2aWRlb19lbmNvZGVyX2NvbmZpZy5oIiwKICAgICAidmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LmgiLAorICAgICJ2cDhfdGVtcG9yYWxfbGF5ZXJzLmgiLAogICBdCiAKICAgZGVw
cyA9IFsKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCi0gICAgIi4uLy4uL2NvbW1vbl92aWRl
byIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0
Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQi
LAorICAgICIuLi92aWRlbzplbmNvZGVkX2ltYWdlIiwKICAgICAiLi4vdmlkZW86dmlkZW9fYml0
cmF0ZV9hbGxvY2F0aW9uIiwKICAgICAiLi4vdmlkZW86dmlkZW9fZnJhbWUiLAorICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CkBAIC01Niw2ICs1OSw3IEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkiKSB7CiAg
ICAgIjp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4vbWVkaWE6cnRjX2ludGVybmFsX3Zp
ZGVvX2NvZGVjcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnB0cl91dGlsIiwKKyAgICAiLi4vLi4v
cnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9tZW1vcnkiLAogICBdCiB9CkBAIC03NSw4ICs3OSwyOSBAQCBydGNfc3RhdGljX2xp
YnJhcnkoImJ1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5IikgewogICAgICI6dmlkZW9fY29k
ZWNzX2FwaSIsCiAgICAgIi4uLy4uL21lZGlhOnJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3MiLAog
ICAgICIuLi8uLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCisgICAgIi4uLy4uL21lZGlhOnJ0Y192
cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkiLAogICAgICIuLi8uLi9ydGNfYmFzZTpwdHJfdXRp
bCIsCisgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncyIsCisgIF0KK30KKworcnRjX3N0YXRpY19saWJyYXJ5KCJjcmVh
dGVfdnA4X3RlbXBvcmFsX2xheWVycyIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgYWxs
b3dfcG9pc29uID0gWyAic29mdHdhcmVfdmlkZW9fY29kZWNzIiBdCisgIHNvdXJjZXMgPSBbCisg
ICAgImNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjIiwKKyAgICAiY3JlYXRlX3ZwOF90ZW1w
b3JhbF9sYXllcnMuaCIsCisgIF0KKworICBkZXBzID0gWworICAgICI6dmlkZW9fY29kZWNzX2Fw
aSIsCisgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAorICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVv
X2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAorICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVv
X2NvZGluZzp3ZWJydGNfdnA4X3RlbXBvcmFsX2xheWVycyIsCisgICAgIi4uLy4uL3N5c3RlbV93
cmFwcGVyczpzeXN0ZW1fd3JhcHBlcnMiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnk6bWVtb3J5IiwKICAgXQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL09XTkVSUyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3Mv
T1dORVJTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBhNzBiZGRkMzRkM2I4Mzc1ZmExMWI0YjM2MDQzZjUxODlhYjc1
YTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL09XTkVSUwpAQCAtMCwwICsxLDQgQEAKK21hZ2plZEB3
ZWJydGMub3JnCituaXNzZUB3ZWJydGMub3JnCitzcHJhbmdAd2VicnRjLm9yZworYnJhbmR0ckB3
ZWJydGMub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29k
ZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgKaW5kZXggMWY4ZTc1YzlhZTdkNTJh
ZGE5NWYzM2JhMGVjNTcyNjEyZDFiNjU4Yi4uZDUxNjA3N2Q5OTkxYmIxOGFmOGIwMmNkN2U2ZmVl
OWUyZDcwMDhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
b19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaApAQCAtMTQsMTEgKzE0LDEz
IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRl
b19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9y
dC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gQ3JlYXRlcyBhIG5ldyBmYWN0b3J5IHRo
YXQgY2FuIGNyZWF0ZSB0aGUgYnVpbHQtaW4gdHlwZXMgb2YgdmlkZW8gZGVjb2RlcnMuCi1zdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9yeT4gQ3JlYXRlQnVpbHRpblZpZGVvRGVjb2Rl
ckZhY3RvcnkoKTsKK1JUQ19FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2RlckZhY3Rv
cnk+CitDcmVhdGVCdWlsdGluVmlkZW9EZWNvZGVyRmFjdG9yeSgpOwogCiB9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3Rvcnku
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9f
Y29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmNjCmluZGV4IGNhMzg5Yjk5ZTNi
NTYxMmQ5MWNjN2E4NTIwNjBkYzg2ZmUxZGNiNGMuLjFkMDgyN2NiYzBjNGQ5OTZmNzE0OTkxNDkw
ODBiYWU1M2E0ZGMwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3Rv
cnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5jYwpAQCAtMTMsNiAr
MTMsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9y
eS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS92aWRl
b19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29kZWMu
aCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCkBAIC01OSw3ICs2MCw3
IEBAIGNsYXNzIEJ1aWx0aW5WaWRlb0VuY29kZXJGYWN0b3J5IDogcHVibGljIFZpZGVvRW5jb2Rl
ckZhY3RvcnkgewogICAgIGlmIChJc0Zvcm1hdFN1cHBvcnRlZChpbnRlcm5hbF9lbmNvZGVyX2Zh
Y3RvcnlfLT5HZXRTdXBwb3J0ZWRGb3JtYXRzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdCkpIHsKICAgICAgIGludGVybmFsX2VuY29kZXIgPQotICAgICAgICAgIGNyaWNrZXQ6
OkNvZGVjTmFtZXNFcShmb3JtYXQubmFtZS5jX3N0cigpLCBjcmlja2V0OjprVnA4Q29kZWNOYW1l
KQorICAgICAgICAgIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6
OmtWcDhDb2RlY05hbWUpCiAgICAgICAgICAgICAgID8gYWJzbDo6bWFrZV91bmlxdWU8VlA4RW5j
b2RlclNpbXVsY2FzdFByb3h5PigKICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxfZW5jb2Rl
cl9mYWN0b3J5Xy5nZXQoKSwgZm9ybWF0KQogICAgICAgICAgICAgICA6IGludGVybmFsX2VuY29k
ZXJfZmFjdG9yeV8tPkNyZWF0ZVZpZGVvRW5jb2Rlcihmb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9i
dWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJf
ZmFjdG9yeS5oCmluZGV4IDZhNjYxOGZiMzI3MjRlNGExMzhiZGE1MWQ1MWJmOTljZjQxYzllNmQu
LjJjNDUzNzIwNWM1OTQxOGY1MmMxMDBmMzA1YmFkNDM2OGM0NjQyZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3Mv
YnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LmgKQEAgLTE0LDEyICsxNCwxNCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KIAog
I2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5j
bHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKIC8vIENyZWF0ZXMgYSBuZXcgZmFjdG9yeSB0aGF0IGNhbiBjcmVhdGUgdGhlIGJ1aWx0LWlu
IHR5cGVzIG9mIHZpZGVvIGVuY29kZXJzLgogLy8gVGhlIGZhY3RvcnkgaGFzIHNpbXVsY2FzdCBz
dXBwb3J0IGZvciBWUDguCi1zdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gQ3Jl
YXRlQnVpbHRpblZpZGVvRW5jb2RlckZhY3RvcnkoKTsKK1JUQ19FWFBPUlQgc3RkOjp1bmlxdWVf
cHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+CitDcmVhdGVCdWlsdGluVmlkZW9FbmNvZGVyRmFjdG9y
eSgpOwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvY3JlYXRlX3Zw
OF90ZW1wb3JhbF9sYXllcnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRkMjkwZjM5ZmRkNDc3ZWJhMDVkNDQ5OGEwNWFlZjhjYzA0NTgyNWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW9fY29kZWNzL2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjCkBAIC0wLDAgKzEs
MzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVj
cy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1w
b3JhbF9sYXllcnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4
L3NjcmVlbnNoYXJlX2xheWVycy5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRl
L2Nsb2NrLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitzdGQ6OnVuaXF1ZV9wdHI8VnA4VGVt
cG9yYWxMYXllcnM+IENyZWF0ZVZwOFRlbXBvcmFsTGF5ZXJzKAorICAgIFZwOFRlbXBvcmFsTGF5
ZXJzVHlwZSB0eXBlLAorICAgIGludCBudW1fdGVtcG9yYWxfbGF5ZXJzKSB7CisgIHN3aXRjaCAo
dHlwZSkgeworICAgIGNhc2UgVnA4VGVtcG9yYWxMYXllcnNUeXBlOjprRml4ZWRQYXR0ZXJuOgor
ICAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPERlZmF1bHRUZW1wb3JhbExheWVycz4obnVt
X3RlbXBvcmFsX2xheWVycyk7CisgICAgY2FzZSBWcDhUZW1wb3JhbExheWVyc1R5cGU6OmtCaXRy
YXRlRHluYW1pYzoKKyAgICAgIC8vIENvbmZlcmVuY2UgbW9kZSB0ZW1wb3JhbCBsYXllcmluZyBm
b3Igc2NyZWVuIGNvbnRlbnQgaW4gYmFzZSBzdHJlYW0uCisgICAgICByZXR1cm4gYWJzbDo6bWFr
ZV91bmlxdWU8U2NyZWVuc2hhcmVMYXllcnM+KG51bV90ZW1wb3JhbF9sYXllcnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFs
VGltZUNsb2NrKCkpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19j
b2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3Jh
bF9sYXllcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmYxNGM4ZWRhMzlmMzRjZWE1Y2NkM2YyZGRmZWE5M2E5
ZGRlYjM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5o
CkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9W
SURFT19DT0RFQ1NfQ1JFQVRFX1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8KKyNkZWZpbmUgQVBJX1ZJ
REVPX0NPREVDU19DUkVBVEVfVlA4X1RFTVBPUkFMX0xBWUVSU19IXworCisjaW5jbHVkZSA8bWVt
b3J5PgorCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgi
CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitzdGQ6OnVuaXF1ZV9wdHI8VnA4VGVtcG9yYWxMYXll
cnM+IENyZWF0ZVZwOFRlbXBvcmFsTGF5ZXJzKAorICAgIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZSB0
eXBlLAorICAgIGludCBudW1fdGVtcG9yYWxfbGF5ZXJzKTsKKworfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YworCisjZW5kaWYgIC8vIEFQSV9WSURFT19DT0RFQ1NfQ1JFQVRFX1ZQOF9URU1QT1JBTF9M
QVlFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9f
Zm9ybWF0LmgKaW5kZXggYzI1Yjg1N2ZkZTdmNzA1YzI3NDE0MzVjZjM3MGRkOTljM2VlMTdjOC4u
ZWRiNzgxOTFjNzUzMThmZWM1ZWMzYjZjMGU2MWJjY2E2YTQ1YmFjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9z
ZHBfdmlkZW9fZm9ybWF0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgKQEAgLTE0LDExICsx
NCwxMyBAQAogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8g
U0RQIHNwZWNpZmljYXRpb24gZm9yIGEgc2luZ2xlIHZpZGVvIGNvZGVjLgogLy8gTk9URTogVGhp
cyBjbGFzcyBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0
IG5vdGljZS4KLXN0cnVjdCBTZHBWaWRlb0Zvcm1hdCB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBTZHBW
aWRlb0Zvcm1hdCB7CiAgIHVzaW5nIFBhcmFtZXRlcnMgPSBzdGQ6Om1hcDxzdGQ6OnN0cmluZywg
c3RkOjpzdHJpbmc+OwogCiAgIGV4cGxpY2l0IFNkcFZpZGVvRm9ybWF0KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdGVzdC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdGVzdC9CVUlMRC5n
bgppbmRleCBmYTE5MTYyNWExYTRjMDIxYTU0NDJmZjkyNGZmNWU4ZWFkMDMxODM2Li42ZjlkY2Fh
MmQ4YTFkZWUxYTViN2I1ODIwMmU1MWY3YzU1NzA5ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rlc3QvQlVJ
TEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvX2NvZGVjcy90ZXN0L0JVSUxELmduCkBAIC0yMSw2ICsyMSw3IEBAIGlmIChydGNfaW5j
bHVkZV90ZXN0cykgewogICAgICAgIi4uOmJ1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5IiwK
ICAgICAgICIuLjpydGNfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlcnMiLAogICAgICAgIi4uOnZp
ZGVvX2NvZGVjc19hcGkiLAorICAgICAgIi4uLy4uOm1vY2tfdmlkZW9fZW5jb2RlciIsCiAgICAg
ICAiLi4vLi4vLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwK
ICAgICAgICIuLi8uLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RpbmdfdXRpbGl0
eSIsCiAgICAgICAiLi4vLi4vLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6d2VicnRjX3ZwOCIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dmlkZW9fY29kZWNzL3Rlc3QvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnlfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9f
Y29kZWNzL3Rlc3QvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnlfdW5pdHRlc3QuY2MKaW5k
ZXggNzM5NTdjOTk5ZjA0ZDM1YjYxMDJlMDA3ZGUwMzE0MTNhOTYxOTc4Ny4uMzA3NTRkOWJkYmQx
YTE4Yjk4ZTNhZTE5ZjdkNmJiYzhiZDMzOWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0L2J1aWx0aW5f
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdGVzdC9idWlsdGluX3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeV91bml0dGVzdC5jYwpAQCAtMjcsMTEgKzI3LDExIEBAIFRFU1Qo
QnVpbHRpblZpZGVvRW5jb2RlckZhY3RvcnlUZXN0LCBBbm5vdW5jZXNWcDlBY2NvcmRpbmdUb0J1
aWxkRmxhZ3MpIHsKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQotI2lmIGRlZmluZWQoUlRDX0RJ
U0FCTEVfVlA5KQotICBFWFBFQ1RfRkFMU0UoY2xhaW1zX3ZwOV9zdXBwb3J0KTsKLSNlbHNlCisj
aWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKICAgRVhQRUNUX1RSVUUoY2xhaW1zX3ZwOV9zdXBw
b3J0KTsKLSNlbmRpZiAgLy8gZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjZWxzZQorICBFWFBF
Q1RfRkFMU0UoY2xhaW1zX3ZwOV9zdXBwb3J0KTsKKyNlbmRpZiAgLy8gZGVmaW5lZChSVENfRU5B
QkxFX1ZQOSkKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0
L3ZpZGVvX2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlcl91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3Mv
dGVzdC92aWRlb19lbmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXJfdW5pdHRlc3QuY2MK
aW5kZXggOThlYmVkMjMwNTExZDgwNzVlZTI1NmJhODBlZDk3ZjVkMWQwMmQ1Yi4uYjM3NGYzZDFl
MTYzOGRhN2YyNDkwNmYwNmZhOTQyNTBmOWRlZjliYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0L3ZpZGVv
X2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlcl91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rl
c3QvdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyX3VuaXR0ZXN0LmNjCkBA
IC04LDIzICs4LDI2IEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KIAotI2luY2x1ZGUgImFwaS92aWRlb19jb2Rl
Y3MvdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyLmgiCi0KICNpbmNsdWRl
IDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192aWRlb19lbmNvZGVyLmgiCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvdmlk
ZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyLmgiCisjaW5jbHVkZSAiYXBpL3Zp
ZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vycm9yX2Nv
ZGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3Rf
cmF0ZV9hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9mYWtlY2xvY2suaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCisj
aW5jbHVkZSAidGVzdC9nbW9jay5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7Cit1c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKKwogbmFtZXNwYWNlIHsKIGNv
bnN0IGludCBrV2lkdGggPSAzMjA7CiBjb25zdCBpbnQga0hlaWdodCA9IDI0MDsKQEAgLTM0LDYg
KzM3LDEyIEBAIGNvbnN0IHNpemVfdCBrTWF4UGF5bG9hZFNpemUgPSA4MDA7CiBjb25zdCBpbnQg
a0RlZmF1bHRNaW5QaXhlbHNQZXJGcmFtZSA9IDMyMCAqIDE4MDsKIGNvbnN0IGludCBrTG93VGhy
ZXNob2xkID0gMTA7CiBjb25zdCBpbnQga0hpZ2hUaHJlc2hvbGQgPSAyMDsKKworVmlkZW9FbmNv
ZGVyOjpFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbyhib29sIHRydXN0ZWRfcmF0ZV9jb250cm9s
bGVyKSB7CisgIFZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gaW5mbzsKKyAgaW5mby5oYXNfdHJ1
c3RlZF9yYXRlX2NvbnRyb2xsZXIgPSB0cnVzdGVkX3JhdGVfY29udHJvbGxlcjsKKyAgcmV0dXJu
IGluZm87Cit9CiB9ICAvLyBuYW1lc3BhY2UKIAogY2xhc3MgVmlkZW9FbmNvZGVyU29mdHdhcmVG
YWxsYmFja1dyYXBwZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CkBAIC02Miw5ICs3
MSw3IEBAIGNsYXNzIFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgKytlbmNvZGVfY291bnRfOwogICAgICAgaWYg
KGVuY29kZV9jb21wbGV0ZV9jYWxsYmFja18gJiYKICAgICAgICAgICBlbmNvZGVfcmV0dXJuX2Nv
ZGVfID09IFdFQlJUQ19WSURFT19DT0RFQ19PSykgewotICAgICAgICBDb2RlY1NwZWNpZmljSW5m
byBpbmZvOwotICAgICAgICBpbmZvLmNvZGVjX25hbWUgPSBJbXBsZW1lbnRhdGlvbk5hbWUoKTsK
LSAgICAgICAgZW5jb2RlX2NvbXBsZXRlX2NhbGxiYWNrXy0+T25FbmNvZGVkSW1hZ2UoRW5jb2Rl
ZEltYWdlKCksICZpbmZvLAorICAgICAgICBlbmNvZGVfY29tcGxldGVfY2FsbGJhY2tfLT5PbkVu
Y29kZWRJbWFnZShFbmNvZGVkSW1hZ2UoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICB9CiAgICAgICBy
ZXR1cm4gZW5jb2RlX3JldHVybl9jb2RlXzsKQEAgLTgxLDI2ICs4OCwxOSBAQCBjbGFzcyBWaWRl
b0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiAgICAgfQogCi0gICAg
aW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRf
dCBydHQpIG92ZXJyaWRlIHsKLSAgICAgICsrc2V0X2NoYW5uZWxfcGFyYW1ldGVyc19jb3VudF87
Ci0gICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwotICAgIH0KLQogICAgIGludDMy
X3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0
ZV9hbGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJh
bWVyYXRlKSBvdmVycmlkZSB7CiAgICAgICArK3NldF9yYXRlc19jb3VudF87CiAgICAgICByZXR1
cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogICAgIH0KIAotICAgIGJvb2wgU3VwcG9ydHNOYXRp
dmVIYW5kbGUoKSBjb25zdCBvdmVycmlkZSB7CisgICAgRW5jb2RlckluZm8gR2V0RW5jb2Rlcklu
Zm8oKSBjb25zdCBvdmVycmlkZSB7CiAgICAgICArK3N1cHBvcnRzX25hdGl2ZV9oYW5kbGVfY291
bnRfOwotICAgICAgcmV0dXJuIHN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfOwotICAgIH0KLQotICAg
IGNvbnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJmYWtlLWVuY29kZXIiOyB9Ci0KLSAgICBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBH
ZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgICByZXR1cm4gVmlkZW9F
bmNvZGVyOjpTY2FsaW5nU2V0dGluZ3Moa0xvd1RocmVzaG9sZCwga0hpZ2hUaHJlc2hvbGQpOwor
ICAgICAgRW5jb2RlckluZm8gaW5mbzsKKyAgICAgIGluZm8uc2NhbGluZ19zZXR0aW5ncyA9IFNj
YWxpbmdTZXR0aW5ncyhrTG93VGhyZXNob2xkLCBrSGlnaFRocmVzaG9sZCk7CisgICAgICBpbmZv
LnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBzdXBwb3J0c19uYXRpdmVfaGFuZGxlXzsKKyAgICAg
IGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSA9ICJmYWtlLWVuY29kZXIiOworICAgICAgcmV0dXJu
IGluZm87CiAgICAgfQogCiAgICAgaW50IGluaXRfZW5jb2RlX2NvdW50XyA9IDA7CkBAIC0xMDks
NyArMTA5LDYgQEAgY2xhc3MgVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgaW50IGVuY29kZV9jb3VudF8gPSAwOwog
ICAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBlbmNvZGVfY29tcGxldGVfY2FsbGJhY2tfID0gbnVs
bHB0cjsKICAgICBpbnQgcmVsZWFzZV9jb3VudF8gPSAwOwotICAgIGludCBzZXRfY2hhbm5lbF9w
YXJhbWV0ZXJzX2NvdW50XyA9IDA7CiAgICAgaW50IHNldF9yYXRlc19jb3VudF8gPSAwOwogICAg
IG11dGFibGUgaW50IHN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfY291bnRfID0gMDsKICAgICBib29s
IHN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfID0gZmFsc2U7CkBAIC0xMjIsMTEgKzEyMSw5IEBAIGNs
YXNzIFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgewogICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3Bl
Y2lmaWNfaW5mbywKICAgICAgICAgY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21l
bnRhdGlvbikgb3ZlcnJpZGUgewogICAgICAgKytjYWxsYmFja19jb3VudF87Ci0gICAgICBsYXN0
X2NvZGVjX25hbWVfID0gY29kZWNfc3BlY2lmaWNfaW5mby0+Y29kZWNfbmFtZTsKICAgICAgIHJl
dHVybiBSZXN1bHQoUmVzdWx0OjpPSywgY2FsbGJhY2tfY291bnRfKTsKICAgICB9CiAgICAgaW50
IGNhbGxiYWNrX2NvdW50XyA9IDA7Ci0gICAgc3RkOjpzdHJpbmcgbGFzdF9jb2RlY19uYW1lXzsK
ICAgfTsKIAogICB2b2lkIFV0aWxpemVGYWxsYmFja0VuY29kZXIoKTsKQEAgLTEzNCw3ICsxMzEs
OCBAQCBjbGFzcyBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlclRlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgdm9pZCBFbmNvZGVGcmFtZSgpOwogICB2b2lkIEVuY29k
ZUZyYW1lKGludCBleHBlY3RlZF9yZXQpOwogICB2b2lkIENoZWNrTGFzdEVuY29kZXJOYW1lKGNv
bnN0IGNoYXIqIGV4cGVjdGVkX25hbWUpIHsKLSAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWRfbmFt
ZSwgY2FsbGJhY2tfLmxhc3RfY29kZWNfbmFtZV8uY19zdHIoKSk7CisgICAgRVhQRUNUX0VRKGV4
cGVjdGVkX25hbWUsCisgICAgICAgICAgICAgIGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRFbmNvZGVy
SW5mbygpLmltcGxlbWVudGF0aW9uX25hbWUpOwogICB9CiAKICAgdGVzdDo6U2NvcGVkRmllbGRU
cmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzXzsKQEAgLTI3MSwxNSArMjY5LDYgQEAgVEVTVF9G
KFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCwKICAgRVhQRUNUX0VRKFdF
QlJUQ19WSURFT19DT0RFQ19PSywgZmFsbGJhY2tfd3JhcHBlcl8tPlJlbGVhc2UoKSk7CiB9CiAK
LVRFU1RfRihWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlclRlc3QsCi0gICAgICAg
U2V0Q2hhbm5lbFBhcmFtZXRlcnNGb3J3YXJkZWREdXJpbmdGYWxsYmFjaykgewotICBVdGlsaXpl
RmFsbGJhY2tFbmNvZGVyKCk7Ci0gIEVYUEVDVF9FUSgwLCBmYWtlX2VuY29kZXJfLT5zZXRfY2hh
bm5lbF9wYXJhbWV0ZXJzX2NvdW50Xyk7Ci0gIGZhbGxiYWNrX3dyYXBwZXJfLT5TZXRDaGFubmVs
UGFyYW1ldGVycygxLCAxKTsKLSAgRVhQRUNUX0VRKDEsIGZha2VfZW5jb2Rlcl8tPnNldF9jaGFu
bmVsX3BhcmFtZXRlcnNfY291bnRfKTsKLSAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19P
SywgZmFsbGJhY2tfd3JhcHBlcl8tPlJlbGVhc2UoKSk7Ci19Ci0KIFRFU1RfRihWaWRlb0VuY29k
ZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlclRlc3QsCiAgICAgICAgU2V0UmF0ZXNGb3J3YXJkZWRE
dXJpbmdGYWxsYmFjaykgewogICBVdGlsaXplRmFsbGJhY2tFbmNvZGVyKCk7CkBAIC0yOTEsMTUg
KzI4MCwxOSBAQCBURVNUX0YoVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0
LAogCiBURVNUX0YoVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0LAogICAg
ICAgIFN1cHBvcnRzTmF0aXZlSGFuZGxlRm9yd2FyZGVkV2l0aG91dEZhbGxiYWNrKSB7Ci0gIGZh
bGxiYWNrX3dyYXBwZXJfLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgpOworICBmYWxsYmFja193cmFw
cGVyXy0+R2V0RW5jb2RlckluZm8oKTsKICAgRVhQRUNUX0VRKDEsIGZha2VfZW5jb2Rlcl8tPnN1
cHBvcnRzX25hdGl2ZV9oYW5kbGVfY291bnRfKTsKIH0KIAogVEVTVF9GKFZpZGVvRW5jb2RlclNv
ZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCwKICAgICAgICBTdXBwb3J0c05hdGl2ZUhhbmRsZU5v
dEZvcndhcmRlZER1cmluZ0ZhbGxiYWNrKSB7CisgIC8vIEZha2UgZW5jb2RlciBzaWduYWxzIHN1
cHBvcnQgZm9yIG5hdGl2ZSBoYW5kbGUsIGRlZmF1bHQgKGxpYnZweCkgZG9lcyBub3QuCisgIGZh
a2VfZW5jb2Rlcl8tPnN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfID0gdHJ1ZTsKKyAgRVhQRUNUX1RS
VUUoZmFsbGJhY2tfd3JhcHBlcl8tPkdldEVuY29kZXJJbmZvKCkuc3VwcG9ydHNfbmF0aXZlX2hh
bmRsZSk7CiAgIFV0aWxpemVGYWxsYmFja0VuY29kZXIoKTsKLSAgZmFsbGJhY2tfd3JhcHBlcl8t
PlN1cHBvcnRzTmF0aXZlSGFuZGxlKCk7Ci0gIEVYUEVDVF9FUSgwLCBmYWtlX2VuY29kZXJfLT5z
dXBwb3J0c19uYXRpdmVfaGFuZGxlX2NvdW50Xyk7CisgIEVYUEVDVF9GQUxTRShmYWxsYmFja193
cmFwcGVyXy0+R2V0RW5jb2RlckluZm8oKS5zdXBwb3J0c19uYXRpdmVfaGFuZGxlKTsKKyAgLy8g
Qm90aCB0aW1lcywgYm90aCBlbmNvZGVycyBhcmUgcXVlcmllZC4KKyAgRVhQRUNUX0VRKDIsIGZh
a2VfZW5jb2Rlcl8tPnN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfY291bnRfKTsKICAgRVhQRUNUX0VR
KFdFQlJUQ19WSURFT19DT0RFQ19PSywgZmFsbGJhY2tfd3JhcHBlcl8tPlJlbGVhc2UoKSk7CiB9
CiAKQEAgLTQ4OSw3ICs0ODIsNyBAQCBURVNUX0YoRm9yY2VkRmFsbGJhY2tUZXN0RGlzYWJsZWQs
IEdldFNjYWxlU2V0dGluZ3MpIHsKICAgRW5jb2RlRnJhbWVBbmRWZXJpZnlMYXN0TmFtZSgiZmFr
ZS1lbmNvZGVyIik7CiAKICAgLy8gRGVmYXVsdCBtaW4gcGl4ZWxzIHBlciBmcmFtZSBzaG91bGQg
YmUgdXNlZC4KLSAgY29uc3QgYXV0byBzZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRT
Y2FsaW5nU2V0dGluZ3MoKTsKKyAgY29uc3QgYXV0byBzZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBw
ZXJfLT5HZXRFbmNvZGVySW5mbygpLnNjYWxpbmdfc2V0dGluZ3M7CiAgIEVYUEVDVF9UUlVFKHNl
dHRpbmdzLnRocmVzaG9sZHMuaGFzX3ZhbHVlKCkpOwogICBFWFBFQ1RfRVEoa0RlZmF1bHRNaW5Q
aXhlbHNQZXJGcmFtZSwgc2V0dGluZ3MubWluX3BpeGVsc19wZXJfZnJhbWUpOwogfQpAQCAtNTAw
LDcgKzQ5Myw3IEBAIFRFU1RfRihGb3JjZWRGYWxsYmFja1Rlc3RFbmFibGVkLCBHZXRTY2FsZVNl
dHRpbmdzV2l0aE5vRmFsbGJhY2spIHsKICAgRW5jb2RlRnJhbWVBbmRWZXJpZnlMYXN0TmFtZSgi
ZmFrZS1lbmNvZGVyIik7CiAKICAgLy8gQ29uZmlndXJlZCBtaW4gcGl4ZWxzIHBlciBmcmFtZSBz
aG91bGQgYmUgdXNlZC4KLSAgY29uc3QgYXV0byBzZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJf
LT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKKyAgY29uc3QgYXV0byBzZXR0aW5ncyA9IGZhbGxiYWNr
X3dyYXBwZXJfLT5HZXRFbmNvZGVySW5mbygpLnNjYWxpbmdfc2V0dGluZ3M7CiAgIEVYUEVDVF9F
UShrTWluUGl4ZWxzUGVyRnJhbWUsIHNldHRpbmdzLm1pbl9waXhlbHNfcGVyX2ZyYW1lKTsKICAg
QVNTRVJUX1RSVUUoc2V0dGluZ3MudGhyZXNob2xkcyk7CiAgIEVYUEVDVF9FUShrTG93VGhyZXNo
b2xkLCBzZXR0aW5ncy50aHJlc2hvbGRzLT5sb3cpOwpAQCAtNTEzLDcgKzUwNiw3IEBAIFRFU1Rf
RihGb3JjZWRGYWxsYmFja1Rlc3RFbmFibGVkLCBHZXRTY2FsZVNldHRpbmdzV2l0aEZhbGxiYWNr
KSB7CiAgIEVuY29kZUZyYW1lQW5kVmVyaWZ5TGFzdE5hbWUoImxpYnZweCIpOwogCiAgIC8vIENv
bmZpZ3VyZWQgbWluIHBpeGVscyBwZXIgZnJhbWUgc2hvdWxkIGJlIHVzZWQuCi0gIGNvbnN0IGF1
dG8gc2V0dGluZ3MgPSBmYWxsYmFja193cmFwcGVyXy0+R2V0U2NhbGluZ1NldHRpbmdzKCk7Cisg
IGNvbnN0IGF1dG8gc2V0dGluZ3MgPSBmYWxsYmFja193cmFwcGVyXy0+R2V0RW5jb2RlckluZm8o
KS5zY2FsaW5nX3NldHRpbmdzOwogICBFWFBFQ1RfVFJVRShzZXR0aW5ncy50aHJlc2hvbGRzLmhh
c192YWx1ZSgpKTsKICAgRVhQRUNUX0VRKGtNaW5QaXhlbHNQZXJGcmFtZSwgc2V0dGluZ3MubWlu
X3BpeGVsc19wZXJfZnJhbWUpOwogfQpAQCAtNTI1LDggKzUxOCw3NyBAQCBURVNUX0YoRm9yY2Vk
RmFsbGJhY2tUZXN0RW5hYmxlZCwgU2NhbGluZ0Rpc2FibGVkSWZSZXNpemVPZmYpIHsKICAgRW5j
b2RlRnJhbWVBbmRWZXJpZnlMYXN0TmFtZSgibGlidnB4Iik7CiAKICAgLy8gU2hvdWxkIGJlIGRp
c2FibGVkIGZvciBhdXRvbWF0aWMgcmVzaXplIG9mZi4KLSAgY29uc3QgYXV0byBzZXR0aW5ncyA9
IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKKyAgY29uc3QgYXV0byBz
ZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRFbmNvZGVySW5mbygpLnNjYWxpbmdfc2V0
dGluZ3M7CiAgIEVYUEVDVF9GQUxTRShzZXR0aW5ncy50aHJlc2hvbGRzLmhhc192YWx1ZSgpKTsK
IH0KIAorVEVTVChTb2Z0d2FyZUZhbGxiYWNrRW5jb2RlclRlc3QsIEJvdGhSYXRlQ29udHJvbGxl
cnNOb3RUcnVzdGVkKSB7CisgIGF1dG8qIHN3X2VuY29kZXIgPSBuZXcgdGVzdGluZzo6TmljZU1v
Y2s8TW9ja1ZpZGVvRW5jb2Rlcj4oKTsKKyAgYXV0byogaHdfZW5jb2RlciA9IG5ldyB0ZXN0aW5n
OjpOaWNlTW9jazxNb2NrVmlkZW9FbmNvZGVyPigpOworCisgIEVYUEVDVF9DQUxMKCpzd19lbmNv
ZGVyLCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihHZXRF
bmNvZGVySW5mbyhmYWxzZSkpKTsKKyAgRVhQRUNUX0NBTEwoKmh3X2VuY29kZXIsIEdldEVuY29k
ZXJJbmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEdldEVuY29kZXJJbmZvKGZh
bHNlKSkpOworCisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IHdyYXBwZXIgPQorICAg
ICAgQ3JlYXRlVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXIoCisgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4oc3dfZW5jb2RlciksCisgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4oaHdfZW5jb2RlcikpOworICBFWFBFQ1RfRkFMU0Uo
d3JhcHBlci0+R2V0RW5jb2RlckluZm8oKS5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIpOwor
fQorCitURVNUKFNvZnR3YXJlRmFsbGJhY2tFbmNvZGVyVGVzdCwgU3dSYXRlQ29udHJvbGxlclRy
dXN0ZWQpIHsKKyAgYXV0byogc3dfZW5jb2RlciA9IG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2Nr
VmlkZW9FbmNvZGVyPigpOworICBhdXRvKiBod19lbmNvZGVyID0gbmV3IHRlc3Rpbmc6Ok5pY2VN
b2NrPE1vY2tWaWRlb0VuY29kZXI+KCk7CisgIEVYUEVDVF9DQUxMKCpzd19lbmNvZGVyLCBHZXRF
bmNvZGVySW5mbygpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihHZXRFbmNvZGVySW5m
byh0cnVlKSkpOworICBFWFBFQ1RfQ0FMTCgqaHdfZW5jb2RlciwgR2V0RW5jb2RlckluZm8oKSkK
KyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oR2V0RW5jb2RlckluZm8oZmFsc2UpKSk7CisK
KyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gd3JhcHBlciA9CisgICAgICBDcmVhdGVW
aWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcigKKyAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VmlkZW9FbmNvZGVyPihzd19lbmNvZGVyKSwKKyAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VmlkZW9FbmNvZGVyPihod19lbmNvZGVyKSk7CisgIEVYUEVDVF9GQUxTRSh3cmFwcGVyLT5H
ZXRFbmNvZGVySW5mbygpLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcik7Cit9CisKK1RFU1Qo
U29mdHdhcmVGYWxsYmFja0VuY29kZXJUZXN0LCBId1JhdGVDb250cm9sbGVyVHJ1c3RlZCkgewor
ICBhdXRvKiBzd19lbmNvZGVyID0gbmV3IHRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tWaWRlb0VuY29k
ZXI+KCk7CisgIGF1dG8qIGh3X2VuY29kZXIgPSBuZXcgdGVzdGluZzo6TmljZU1vY2s8TW9ja1Zp
ZGVvRW5jb2Rlcj4oKTsKKyAgRVhQRUNUX0NBTEwoKnN3X2VuY29kZXIsIEdldEVuY29kZXJJbmZv
KCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEdldEVuY29kZXJJbmZvKGZhbHNlKSkp
OworICBFWFBFQ1RfQ0FMTCgqaHdfZW5jb2RlciwgR2V0RW5jb2RlckluZm8oKSkKKyAgICAgIC5X
aWxsUmVwZWF0ZWRseShSZXR1cm4oR2V0RW5jb2RlckluZm8odHJ1ZSkpKTsKKworICBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiB3cmFwcGVyID0KKyAgICAgIENyZWF0ZVZpZGVvRW5jb2Rl
clNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyKAorICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b0VuY29kZXI+KHN3X2VuY29kZXIpLAorICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Vu
Y29kZXI+KGh3X2VuY29kZXIpKTsKKyAgRVhQRUNUX1RSVUUod3JhcHBlci0+R2V0RW5jb2Rlcklu
Zm8oKS5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIpOworCisgIC8vIFRyaWdnZXIgZmFsbGJh
Y2sgdG8gc29mdHdhcmUuCisgIEVYUEVDVF9DQUxMKCpod19lbmNvZGVyLCBFbmNvZGUpCisgICAg
ICAuV2lsbE9uY2UoUmV0dXJuKFdFQlJUQ19WSURFT19DT0RFQ19GQUxMQkFDS19TT0ZUV0FSRSkp
OworICBWaWRlb0ZyYW1lIGZyYW1lID0gVmlkZW9GcmFtZTo6QnVpbGRlcigpLmJ1aWxkKCk7Cisg
IHdyYXBwZXItPkVuY29kZShmcmFtZSwgbnVsbHB0ciwgbnVsbHB0cik7CisKKyAgRVhQRUNUX0ZB
TFNFKHdyYXBwZXItPkdldEVuY29kZXJJbmZvKCkuaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVy
KTsKK30KKworVEVTVChTb2Z0d2FyZUZhbGxiYWNrRW5jb2RlclRlc3QsIEJvdGhSYXRlQ29udHJv
bGxlcnNUcnVzdGVkKSB7CisgIGF1dG8qIHN3X2VuY29kZXIgPSBuZXcgdGVzdGluZzo6TmljZU1v
Y2s8TW9ja1ZpZGVvRW5jb2Rlcj4oKTsKKyAgYXV0byogaHdfZW5jb2RlciA9IG5ldyB0ZXN0aW5n
OjpOaWNlTW9jazxNb2NrVmlkZW9FbmNvZGVyPigpOworICBFWFBFQ1RfQ0FMTCgqc3dfZW5jb2Rl
ciwgR2V0RW5jb2RlckluZm8oKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oR2V0RW5j
b2RlckluZm8odHJ1ZSkpKTsKKyAgRVhQRUNUX0NBTEwoKmh3X2VuY29kZXIsIEdldEVuY29kZXJJ
bmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEdldEVuY29kZXJJbmZvKHRydWUp
KSk7CisKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gd3JhcHBlciA9CisgICAgICBD
cmVhdGVWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcigKKyAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPihzd19lbmNvZGVyKSwKKyAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9FbmNvZGVyPihod19lbmNvZGVyKSk7CisgIEVYUEVDVF9UUlVFKHdyYXBw
ZXItPkdldEVuY29kZXJJbmZvKCkuaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKTsKK30KKwog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19jb2RlYy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3Mv
dmlkZW9fY29kZWMuY2MKaW5kZXggZDM2NTM1YjMxMDA4ZDM2ZGVjMzQwY2I1NTUzZjc1ZDlmODk4
OWQyZS4uMDgxOWM4MjJhMDZkZTc5OWMxM2Q3YTVkMmQ4MjA2ZjQ3MGVkMzcwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2Nv
ZGVjcy92aWRlb19jb2RlYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2NvZGVjLmNjCkBAIC0xMSwxMyArMTEs
MTAgQEAKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2NvZGVjLmgiCiAKICNpbmNs
dWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bGltaXRzPgog
I2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAorI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTExOCwxMCArMTE1LDYg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIGtQYXlsb2FkTmFtZUk0MjAgPSAiSTQyMCI7CiBzdGF0aWMg
Y29uc3QgY2hhcioga1BheWxvYWROYW1lR2VuZXJpYyA9ICJHZW5lcmljIjsKIHN0YXRpYyBjb25z
dCBjaGFyKiBrUGF5bG9hZE5hbWVNdWx0aXBsZXggPSAiTXVsdGlwbGV4IjsKIAotc3RhdGljIGJv
b2wgQ29kZWNOYW1lc0VxKGNvbnN0IGNoYXIqIG5hbWUxLCBjb25zdCBjaGFyKiBuYW1lMikgewot
ICByZXR1cm4gX3N0cmljbXAobmFtZTEsIG5hbWUyKSA9PSAwOwotfQotCiBjb25zdCBjaGFyKiBD
b2RlY1R5cGVUb1BheWxvYWRTdHJpbmcoVmlkZW9Db2RlY1R5cGUgdHlwZSkgewogICBzd2l0Y2gg
KHR5cGUpIHsKICAgICBjYXNlIGtWaWRlb0NvZGVjVlA4OgpAQCAtMTM5LDE1ICsxMzIsMTUgQEAg
Y29uc3QgY2hhciogQ29kZWNUeXBlVG9QYXlsb2FkU3RyaW5nKFZpZGVvQ29kZWNUeXBlIHR5cGUp
IHsKIH0KIAogVmlkZW9Db2RlY1R5cGUgUGF5bG9hZFN0cmluZ1RvQ29kZWNUeXBlKGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lKSB7Ci0gIGlmIChDb2RlY05hbWVzRXEobmFtZS5jX3N0cigpLCBrUGF5
bG9hZE5hbWVWcDgpKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lLCBrUGF5bG9h
ZE5hbWVWcDgpKQogICAgIHJldHVybiBrVmlkZW9Db2RlY1ZQODsKLSAgaWYgKENvZGVjTmFtZXNF
cShuYW1lLmNfc3RyKCksIGtQYXlsb2FkTmFtZVZwOSkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKG5hbWUsIGtQYXlsb2FkTmFtZVZwOSkpCiAgICAgcmV0dXJuIGtWaWRlb0NvZGVjVlA5
OwotICBpZiAoQ29kZWNOYW1lc0VxKG5hbWUuY19zdHIoKSwga1BheWxvYWROYW1lSDI2NCkpCisg
IGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUsIGtQYXlsb2FkTmFtZUgyNjQpKQogICAg
IHJldHVybiBrVmlkZW9Db2RlY0gyNjQ7Ci0gIGlmIChDb2RlY05hbWVzRXEobmFtZS5jX3N0cigp
LCBrUGF5bG9hZE5hbWVJNDIwKSkKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwg
a1BheWxvYWROYW1lSTQyMCkpCiAgICAgcmV0dXJuIGtWaWRlb0NvZGVjSTQyMDsKLSAgaWYgKENv
ZGVjTmFtZXNFcShuYW1lLmNfc3RyKCksIGtQYXlsb2FkTmFtZU11bHRpcGxleCkpCisgIGlmIChh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUsIGtQYXlsb2FkTmFtZU11bHRpcGxleCkpCiAgICAg
cmV0dXJuIGtWaWRlb0NvZGVjTXVsdGlwbGV4OwogICByZXR1cm4ga1ZpZGVvQ29kZWNHZW5lcmlj
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19jb2RlYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19jb2RlYy5oCmluZGV4
IDViNGViYjI1YzA3NDYwNGJiZWVjZTgxM2JkZDRmNmI2NjIxYzc2NjAuLjlmYmE2MGM0ZTg3Mjcx
MGZjYzg1NzllZjI0MDk0ZmViZGJiNDc1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fY29kZWMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9f
Y29kZWNzL3ZpZGVvX2NvZGVjLmgKQEAgLTExLDkgKzExLDE0IEBACiAjaWZuZGVmIEFQSV9WSURF
T19DT0RFQ1NfVklERU9fQ09ERUNfSF8KICNkZWZpbmUgQVBJX1ZJREVPX0NPREVDU19WSURFT19D
T0RFQ19IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2Nh
dGlvbi5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19jb2RlY190eXBlLmgiCiAjaW5jbHVk
ZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAt
ODYsOCArOTEsOCBAQCBzdHJ1Y3QgVmlkZW9Db2RlY0gyNjQgewogfTsKIAogLy8gVHJhbnNsYXRl
cyBmcm9tIG5hbWUgb2YgY29kZWMgdG8gY29kZWMgdHlwZSBhbmQgdmljZSB2ZXJzYS4KLWNvbnN0
IGNoYXIqIENvZGVjVHlwZVRvUGF5bG9hZFN0cmluZyhWaWRlb0NvZGVjVHlwZSB0eXBlKTsKLVZp
ZGVvQ29kZWNUeXBlIFBheWxvYWRTdHJpbmdUb0NvZGVjVHlwZShjb25zdCBzdGQ6OnN0cmluZyYg
bmFtZSk7CitSVENfRVhQT1JUIGNvbnN0IGNoYXIqIENvZGVjVHlwZVRvUGF5bG9hZFN0cmluZyhW
aWRlb0NvZGVjVHlwZSB0eXBlKTsKK1JUQ19FWFBPUlQgVmlkZW9Db2RlY1R5cGUgUGF5bG9hZFN0
cmluZ1RvQ29kZWNUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKIAogdW5pb24gVmlkZW9D
b2RlY1VuaW9uIHsKICAgVmlkZW9Db2RlY1ZQOCBWUDg7CkBAIC05OCw3ICsxMDMsNyBAQCB1bmlv
biBWaWRlb0NvZGVjVW5pb24gewogZW51bSBjbGFzcyBWaWRlb0NvZGVjTW9kZSB7IGtSZWFsdGlt
ZVZpZGVvLCBrU2NyZWVuc2hhcmluZyB9OwogCiAvLyBDb21tb24gdmlkZW8gY29kZWMgcHJvcGVy
dGllcwotY2xhc3MgVmlkZW9Db2RlYyB7CitjbGFzcyBSVENfRVhQT1JUIFZpZGVvQ29kZWMgewog
IHB1YmxpYzoKICAgVmlkZW9Db2RlYygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19j
b2RlY3MvdmlkZW9fZGVjb2Rlci5oCmluZGV4IDc5OTVmY2NiMDU2M2RhNmUxMGUzY2U5NjlhNTlk
MmVjZWU2Njc5OTEuLjM2Y2Y4MGZlODRjNzYzZGIyNWVmMmFlNzM5OGIyNDA0MjE2MzQ4MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlci5oCkBAIC0x
NSw5ICsxNSwxMCBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNp
bmNsdWRlICJhcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92
aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fY29kZWMuaCIK
LSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBA
IC0yNSw3ICsyNiw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogc3RydWN0IENvZGVjU3BlY2lmaWNJ
bmZvOwogY2xhc3MgVmlkZW9Db2RlYzsKIAotY2xhc3MgRGVjb2RlZEltYWdlQ2FsbGJhY2sgewor
Y2xhc3MgUlRDX0VYUE9SVCBEZWNvZGVkSW1hZ2VDYWxsYmFjayB7CiAgcHVibGljOgogICB2aXJ0
dWFsIH5EZWNvZGVkSW1hZ2VDYWxsYmFjaygpIHt9CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgY2xhc3Mg
RGVjb2RlZEltYWdlQ2FsbGJhY2sgewogICB2aXJ0dWFsIGludDMyX3QgUmVjZWl2ZWREZWNvZGVk
RnJhbWUoY29uc3QgdWludDY0X3QgcGljdHVyZUlkKTsKIH07CiAKLWNsYXNzIFZpZGVvRGVjb2Rl
ciB7CitjbGFzcyBSVENfRVhQT1JUIFZpZGVvRGVjb2RlciB7CiAgcHVibGljOgogICB2aXJ0dWFs
IH5WaWRlb0RlY29kZXIoKSB7fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNz
L3ZpZGVvX2VuY29kZXIuY2MKaW5kZXggMDA4NzgwZTM4YzRjMTllMjAwN2RmMzQ0NDQxZDFiN2Fi
NGYxNWM2NC4uMTM1Njg3Yzk3MGI3YjZkYjg5MWJkMjZmODg0YzFhOTY4MmViMjQ3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVv
X2NvZGVjcy92aWRlb19lbmNvZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5jYwpAQCAtMTAs
NiArMTAsMTAgQEAKIAogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5o
IgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
KwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIFRPRE8obWZsb2RtYW4pOiBBZGQgZGVmYXVsdCBj
b21wbGV4aXR5IGZvciBWUDkgYW5kIFZQOS4KQEAgLTc5LDYgKzgzLDE0IEBAIFZpZGVvRW5jb2Rl
cjo6U2NhbGluZ1NldHRpbmdzOjp+U2NhbGluZ1NldHRpbmdzKCkge30KIGNvbnN0ZXhwciBWaWRl
b0VuY29kZXI6OlNjYWxpbmdTZXR0aW5nczo6S09mZgogICAgIFZpZGVvRW5jb2Rlcjo6U2NhbGlu
Z1NldHRpbmdzOjprT2ZmOwogCitWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvOjpFbmNvZGVySW5m
bygpCisgICAgOiBzY2FsaW5nX3NldHRpbmdzKFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdz
OjprT2ZmKSwKKyAgICAgIHN1cHBvcnRzX25hdGl2ZV9oYW5kbGUoZmFsc2UpLAorICAgICAgaW1w
bGVtZW50YXRpb25fbmFtZSgidW5rbm93biIpLAorICAgICAgaGFzX3RydXN0ZWRfcmF0ZV9jb250
cm9sbGVyKGZhbHNlKSB7fQorCitWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvOjp+RW5jb2Rlcklu
Zm8oKSA9IGRlZmF1bHQ7CisKIGludDMyX3QgVmlkZW9FbmNvZGVyOjpTZXRSYXRlcyh1aW50MzJf
dCBiaXRyYXRlLCB1aW50MzJfdCBmcmFtZXJhdGUpIHsKICAgUlRDX05PVFJFQUNIRUQoKSA8PCAi
U2V0UmF0ZSh1aW50MzJfdCwgdWludDMyX3QpIGlzIGRlcHJlY2F0ZWQuIjsKICAgcmV0dXJuIC0x
OwpAQCAtMTAxLDQgKzExMywxNCBAQCBib29sIFZpZGVvRW5jb2Rlcjo6U3VwcG9ydHNOYXRpdmVI
YW5kbGUoKSBjb25zdCB7CiBjb25zdCBjaGFyKiBWaWRlb0VuY29kZXI6OkltcGxlbWVudGF0aW9u
TmFtZSgpIGNvbnN0IHsKICAgcmV0dXJuICJ1bmtub3duIjsKIH0KKworLy8gVE9ETyh3ZWJydGM6
OTcyMik6IFJlbW92ZSBhbmQgbWFrZSBwdXJlIHZpcnR1YWwgd2hlbiB0aGUgdGhyZWUgbGVnYWN5
CisvLyBtZXRob2RzIGNhbGxlZCBoZXJlIGFyZSBnb25lLgorVmlkZW9FbmNvZGVyOjpFbmNvZGVy
SW5mbyBWaWRlb0VuY29kZXI6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICBFbmNvZGVySW5m
byBpbmZvOworICBpbmZvLnNjYWxpbmdfc2V0dGluZ3MgPSBHZXRTY2FsaW5nU2V0dGluZ3MoKTsK
KyAgaW5mby5zdXBwb3J0c19uYXRpdmVfaGFuZGxlID0gU3VwcG9ydHNOYXRpdmVIYW5kbGUoKTsK
KyAgaW5mby5pbXBsZW1lbnRhdGlvbl9uYW1lID0gSW1wbGVtZW50YXRpb25OYW1lKCk7CisgIHJl
dHVybiBpbmZvOworfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRl
b19lbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXIuaAppbmRleCA2OGQ5YjQ0NTU4MGYzODgyNTNk
MjU2OTE1ZjliOGY5Njk2NGExZGJkLi5lN2RlYjdkYmI5Y2RiMjY3MGUwNDI0YzJiYTJkOGEyMGQy
MTI5MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29k
ZXIuaApAQCAtMTYsMTEgKzE2LDEyIEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAi
YWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdl
LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgogI2lu
Y2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2Rl
Y3MvdmlkZW9fY29kZWMuaCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19m
cmFtZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC03Myw3ICs3
NCw3IEBAIGNsYXNzIEVuY29kZWRJbWFnZUNhbGxiYWNrIHsKICAgdmlydHVhbCB2b2lkIE9uRHJv
cHBlZEZyYW1lKERyb3BSZWFzb24gcmVhc29uKSB7fQogfTsKIAotY2xhc3MgVmlkZW9FbmNvZGVy
IHsKK2NsYXNzIFJUQ19FWFBPUlQgVmlkZW9FbmNvZGVyIHsKICBwdWJsaWM6CiAgIHN0cnVjdCBR
cFRocmVzaG9sZHMgewogICAgIFFwVGhyZXNob2xkcyhpbnQgbCwgaW50IGgpIDogbG93KGwpLCBo
aWdoKGgpIHt9CkBAIC0xMDIsMTMgKzEwMywxMyBAQCBjbGFzcyBWaWRlb0VuY29kZXIgewogICAg
IFNjYWxpbmdTZXR0aW5ncyhLT2ZmKTsgIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0KQogICAg
IH5TY2FsaW5nU2V0dGluZ3MoKTsKIAotICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFFwVGhyZXNo
b2xkcz4gdGhyZXNob2xkczsKKyAgICBhYnNsOjpvcHRpb25hbDxRcFRocmVzaG9sZHM+IHRocmVz
aG9sZHM7CiAKICAgICAvLyBXZSB3aWxsIG5ldmVyIGFzayBmb3IgYSByZXNvbHV0aW9uIGxvd2Vy
IHRoYW4gdGhpcy4KICAgICAvLyBUT0RPKGt0aGVsZ2Fzb24pOiBMb3dlciB0aGlzIGxpbWl0IHdo
ZW4gYmV0dGVyIHRlc3RpbmcKICAgICAvLyBvbiBNZWRpYUNvZGVjIGFuZCBmYWxsYmFjayBpbXBs
ZW1lbnRhdGlvbnMgYXJlIGluIHBsYWNlLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21p
dW0ub3JnL3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9NzIwNgotICAgIGNvbnN0IGludCBtaW5f
cGl4ZWxzX3Blcl9mcmFtZSA9IDMyMCAqIDE4MDsKKyAgICBpbnQgbWluX3BpeGVsc19wZXJfZnJh
bWUgPSAzMjAgKiAxODA7CiAKICAgIHByaXZhdGU6CiAgICAgLy8gUHJpdmF0ZSBjb25zdHJ1Y3Rv
cjsgdG8gZ2V0IGFuIG9iamVjdCB3aXRob3V0IHRocmVzaG9sZHMsIHVzZQpAQCAtMTE2LDYgKzEx
NywzNiBAQCBjbGFzcyBWaWRlb0VuY29kZXIgewogICAgIFNjYWxpbmdTZXR0aW5ncygpOwogICB9
OwogCisgIC8vIFN0cnVjdCBjb250YWluaW5nIG1ldGFkYXRhIGFib3V0IHRoZSBlbmNvZGVyIGlt
cGxlbWVudGluZyB0aGlzIGludGVyZmFjZS4KKyAgc3RydWN0IEVuY29kZXJJbmZvIHsKKyAgICBF
bmNvZGVySW5mbygpOworICAgIH5FbmNvZGVySW5mbygpOworCisgICAgLy8gQW55IGVuY29kZXIg
aW1wbGVtZW50YXRpb24gd2lzaGluZyB0byB1c2UgdGhlIFdlYlJUQyBwcm92aWRlZAorICAgIC8v
IHF1YWxpdHkgc2NhbGVyIG11c3QgcG9wdWxhdGUgdGhpcyBmaWVsZC4KKyAgICBTY2FsaW5nU2V0
dGluZ3Mgc2NhbGluZ19zZXR0aW5nczsKKworICAgIC8vIElmIHRydWUsIGVuY29kZXIgc3VwcG9y
dHMgd29ya2luZyB3aXRoIGEgbmF0aXZlIGhhbmRsZSAoZS5nLiB0ZXh0dXJlCisgICAgLy8gaGFu
ZGxlIGZvciBodyBjb2RlY3MpIHJhdGhlciB0aGFuIHJlcXVpcmluZyBhIHJhdyBJNDIwIGJ1ZmZl
ci4KKyAgICBib29sIHN1cHBvcnRzX25hdGl2ZV9oYW5kbGU7CisKKyAgICAvLyBUaGUgbmFtZSBv
ZiB0aGlzIHBhcnRpY3VsYXIgZW5jb2RlciBpbXBsZW1lbnRhdGlvbiwgZS5nLiAibGlidnB4Ii4K
KyAgICBzdGQ6OnN0cmluZyBpbXBsZW1lbnRhdGlvbl9uYW1lOworCisgICAgLy8gSWYgdGhpcyBm
aWVsZCBpcyB0cnVlLCB0aGUgZW5jb2RlciByYXRlIGNvbnRyb2xsZXIgbXVzdCBwZXJmb3JtCisg
ICAgLy8gd2VsbCBldmVuIGluIGRpZmZpY3VsdCBzaXR1YXRpb25zLCBhbmQgcHJvZHVjZSBjbG9z
ZSB0byB0aGUgc3BlY2lmaWVkCisgICAgLy8gdGFyZ2V0IGJpdHJhdGUgc2VlbiBvdmVyIGEgcmVh
c29uYWJsZSB0aW1lIHdpbmRvdywgZHJvcCBmcmFtZXMgaWYKKyAgICAvLyBuZWNlc3NhcnkgaW4g
b3JkZXIgdG8ga2VlcCB0aGUgcmF0ZSBjb3JyZWN0LCBhbmQgcmVhY3QgcXVpY2tseSB0bworICAg
IC8vIGNoYW5naW5nIGJpdHJhdGUgdGFyZ2V0cy4gSWYgdGhpcyBtZXRob2QgcmV0dXJucyB0cnVl
LCB3ZSBkaXNhYmxlIHRoZQorICAgIC8vIGZyYW1lIGRyb3BwZXIgaW4gdGhlIG1lZGlhIG9wdGlt
aXphdGlvbiBtb2R1bGUgYW5kIHJlbHkgZW50aXJlbHkgb24gdGhlCisgICAgLy8gZW5jb2RlciB0
byBwcm9kdWNlIG1lZGlhIGF0IGEgYml0cmF0ZSB0aGF0IGNsb3NlbHkgbWF0Y2hlcyB0aGUgdGFy
Z2V0LgorICAgIC8vIEFueSBvdmVyc2hvb3RpbmcgbWF5IHJlc3VsdCBpbiBkZWxheSBidWlsZHVw
LiBJZiB0aGlzIG1ldGhvZCByZXR1cm5zCisgICAgLy8gZmFsc2UgKGRlZmF1bHQgYmVoYXZpb3Ip
LCB0aGUgbWVkaWEgb3B0IGZyYW1lIGRyb3BwZXIgd2lsbCBkcm9wIGlucHV0CisgICAgLy8gZnJh
bWVzIGlmIGl0IHN1c3BlY3QgZW5jb2RlciBtaXNiZWhhdmlvci4gTWlzYmVoYXZpb3IgaXMgY29t
bW9uLAorICAgIC8vIGVzcGVjaWFsbHkgaW4gaGFyZHdhcmUgY29kZWNzLiBEaXNhYmxlIG1lZGlh
IG9wdCBhdCB5b3VyIG93biByaXNrLgorICAgIGJvb2wgaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9s
bGVyOworICB9OworCiAgIHN0YXRpYyBWaWRlb0NvZGVjVlA4IEdldERlZmF1bHRWcDhTZXR0aW5n
cygpOwogICBzdGF0aWMgVmlkZW9Db2RlY1ZQOSBHZXREZWZhdWx0VnA5U2V0dGluZ3MoKTsKICAg
c3RhdGljIFZpZGVvQ29kZWNIMjY0IEdldERlZmF1bHRIMjY0U2V0dGluZ3MoKTsKQEAgLTE3MSwx
NyArMjAyLDYgQEAgY2xhc3MgVmlkZW9FbmNvZGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+KiBmcmFtZV90eXBl
cykgPSAwOwogCi0gIC8vIEluZm9ybSB0aGUgZW5jb2RlciBvZiB0aGUgbmV3IHBhY2tldCBsb3Nz
IHJhdGUgYW5kIHRoZSByb3VuZC10cmlwIHRpbWUgb2YKLSAgLy8gdGhlIG5ldHdvcmsuCi0gIC8v
Ci0gIC8vIElucHV0OgotICAvLyAgICAgICAgICAtIHBhY2tldF9sb3NzIDogRnJhY3Rpb24gbG9z
dAotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvc3MgcmF0ZSBpbiBwZXJjZW50ID0g
MTAwICogcGFja2V0TG9zcyAvIDI1NSkKLSAgLy8gICAgICAgICAgLSBydHQgICAgICAgICA6IFJv
dW5kLXRyaXAgdGltZSBpbiBtaWxsaXNlY29uZHMKLSAgLy8gUmV0dXJuIHZhbHVlICAgICAgICAg
ICA6IFdFQlJUQ19WSURFT19DT0RFQ19PSyBpZiBPSwotICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDAgLSBFcnJvcnM6IFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUgotICB2aXJ0dWFsIGlu
dDMyX3QgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsIGludDY0X3Qg
cnR0KSA9IDA7Ci0KICAgLy8gSW5mb3JtIHRoZSBlbmNvZGVyIGFib3V0IHRoZSBuZXcgdGFyZ2V0
IGJpdCByYXRlLgogICAvLwogICAvLyBJbnB1dDoKQEAgLTE5NiwxMiArMjE2LDE3IEBAIGNsYXNz
IFZpZGVvRW5jb2RlciB7CiAgIHZpcnR1YWwgaW50MzJfdCBTZXRSYXRlQWxsb2NhdGlvbihjb25z
dCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVyYXRlKTsKIAotICAvLyBBbnkgZW5jb2Rl
ciBpbXBsZW1lbnRhdGlvbiB3aXNoaW5nIHRvIHVzZSB0aGUgV2ViUlRDIHByb3ZpZGVkCi0gIC8v
IHF1YWxpdHkgc2NhbGVyIG11c3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kLgorICAvLyBHZXRTY2Fs
aW5nU2V0dGluZ3MoKSwgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSwgSW1wbGVtZW50YXRpb25OYW1l
KCkgYXJlCisgIC8vIGRlcHJlY2F0ZWQsIHVzZSBHZXRFbmNvZGVySW5mbygpIGluc3RlYWQuCiAg
IHZpcnR1YWwgU2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0OwotCiAg
IHZpcnR1YWwgYm9vbCBTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0OwogICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0OworCisgIC8vIFJldHVybnMgbWV0
YS1kYXRhIGFib3V0IHRoZSBlbmNvZGVyLCBzdWNoIGFzIGltcGxlbWVudGF0aW9uIG5hbWUuCisg
IC8vIFRoZSBvdXRwdXQgb2YgdGhpcyBtZXRob2QgbWF5IGNoYW5nZSBkdXJpbmcgcnVudGltZS4g
Rm9yIGluc3RhbmNlIGlmIGEKKyAgLy8gaGFyZHdhcmUgZW5jb2RlciBmYWlscywgaXQgbWF5IGZh
bGwgYmFjayB0byBkb2luZyBzb2Z0d2FyZSBlbmNvZGluZyB1c2luZworICAvLyBhbiBpbXBsZW1l
bnRhdGlvbiB3aXRoIGRpZmZlcmVudCBjaGFyYWN0ZXJpc3RpY3MuCisgIHZpcnR1YWwgRW5jb2Rl
ckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdDsKIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CiAjZW5kaWYgIC8vIEFQSV9WSURFT19DT0RFQ1NfVklERU9fRU5DT0RFUl9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2Nv
ZGVjcy92aWRlb19lbmNvZGVyX2NvbmZpZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25maWcuY2MK
aW5kZXggNzQ5NzdlYWVhM2ZkZDU5ZmM1NzNjMWIxODMwNDQyMDlkNzFhODllOS4uNjZmZjdjOTRl
YjQzYjc1NmEzMzYyM2M1OThkMmIwNjNhNmU2ZjUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNv
ZGVyX2NvbmZpZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmlnLmNjCkBAIC05LDcgKzks
NiBAQAogICovCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZp
Zy5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZp
Zy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVv
X2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZpZy5oCmluZGV4IGUxMGYwODE5MGM2OGEzMzJjMzFj
YzJjZGFhZDQ5ZTJjYWViZjhlMzIuLjlkZDhlNGZhNWQwMmM0NDk1Y2RiZDk4MzVjNjNhMGNiNTYz
MGI5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25maWcuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVv
X2VuY29kZXJfY29uZmlnLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgQVBJX1ZJREVPX0NP
REVDU19WSURFT19FTkNPREVSX0NPTkZJR19IXwogI2RlZmluZSBBUElfVklERU9fQ09ERUNTX1ZJ
REVPX0VOQ09ERVJfQ09ORklHX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxz
dHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJf
c29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9m
YWxsYmFja193cmFwcGVyLmNjCmluZGV4IDk5ZjI5NzA3ZTQ0MWMwMjkyNTBiN2VkZDliMDVkOTgz
YzFkOTIxOWMuLmZkMDY3ODU0M2FiZWZhYTNkNzMwODUyMzIzZDlkNDI1MDg3ZjZjYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
b19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2Rl
Y3MvdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyLmNjCkBAIC04NywxMiAr
ODcsOSBAQCBjbGFzcyBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlciBmaW5hbCA6
IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICBpbnQzMl90IEVuY29kZShjb25zdCBWaWRlb0ZyYW1l
JiBmcmFtZSwKICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVj
X3NwZWNpZmljX2luZm8sCiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1l
VHlwZT4qIGZyYW1lX3R5cGVzKSBvdmVycmlkZTsKLSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1l
dGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwogICBpbnQz
Ml90IFNldFJhdGVBbGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGJpdHJh
dGVfYWxsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFt
ZXJhdGUpIG92ZXJyaWRlOwotICBib29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gIFNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25zdCBvdmVy
cmlkZTsKLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICBwcml2
YXRlOgogICBib29sIEluaXRGYWxsYmFja0VuY29kZXIoKTsKQEAgLTE2Miw3ICsxNTksNyBAQCBW
aWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcjo6VmlkZW9FbmNvZGVyU29mdHdhcmVG
YWxsYmFja1dyYXBwZXIoCiAgIGlmIChmb3JjZWRfZmFsbGJhY2tfcG9zc2libGVfKSB7CiAgICAg
R2V0Rm9yY2VkRmFsbGJhY2tQYXJhbXNGcm9tRmllbGRUcmlhbEdyb3VwKAogICAgICAgICAmZm9y
Y2VkX2ZhbGxiYWNrXy5taW5fcGl4ZWxzXywgJmZvcmNlZF9mYWxsYmFja18ubWF4X3BpeGVsc18s
Ci0gICAgICAgIGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKS5taW5fcGl4ZWxzX3Blcl9m
cmFtZSAtCisgICAgICAgIGVuY29kZXJfLT5HZXRFbmNvZGVySW5mbygpLnNjYWxpbmdfc2V0dGlu
Z3MubWluX3BpeGVsc19wZXJfZnJhbWUgLQogICAgICAgICAgICAgMSk7ICAvLyBObyBIVyBiZWxv
dy4KICAgfQogfQpAQCAtMTg1LDggKzE4Miw2IEBAIGJvb2wgVmlkZW9FbmNvZGVyU29mdHdhcmVG
YWxsYmFja1dyYXBwZXI6OkluaXRGYWxsYmFja0VuY29kZXIoKSB7CiAgICAgZmFsbGJhY2tfZW5j
b2Rlcl8tPlJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhjYWxsYmFja18pOwogICBpZiAo
cmF0ZXNfc2V0XykKICAgICBmYWxsYmFja19lbmNvZGVyXy0+U2V0UmF0ZUFsbG9jYXRpb24oYml0
cmF0ZV9hbGxvY2F0aW9uXywgZnJhbWVyYXRlXyk7Ci0gIGlmIChjaGFubmVsX3BhcmFtZXRlcnNf
c2V0XykKLSAgICBmYWxsYmFja19lbmNvZGVyXy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0
X2xvc3NfLCBydHRfKTsKIAogICAvLyBTaW5jZSB3ZSdyZSBzd2l0Y2hpbmcgdG8gdGhlIGZhbGxi
YWNrIGVuY29kZXIsIFJlbGVhc2UgdGhlIHJlYWwgZW5jb2Rlci4gSXQKICAgLy8gbWF5IGJlIHJl
LWluaXRpYWxpemVkIHZpYSBJbml0RW5jb2RlIGxhdGVyLCBhbmQgaXQgd2lsbCBjb250aW51ZSB0
byBnZXQKQEAgLTIwNiw3ICsyMDEsNiBAQCBpbnQzMl90IFZpZGVvRW5jb2RlclNvZnR3YXJlRmFs
bGJhY2tXcmFwcGVyOjpJbml0RW5jb2RlKAogICBtYXhfcGF5bG9hZF9zaXplXyA9IG1heF9wYXls
b2FkX3NpemU7CiAgIC8vIENsZWFyIHN0b3JlZCByYXRlL2NoYW5uZWwgcGFyYW1ldGVycy4KICAg
cmF0ZXNfc2V0XyA9IGZhbHNlOwotICBjaGFubmVsX3BhcmFtZXRlcnNfc2V0XyA9IGZhbHNlOwog
ICBWYWxpZGF0ZVNldHRpbmdzRm9yRm9yY2VkRmFsbGJhY2soKTsKIAogICAvLyBUcnkgdG8gcmVp
bml0IGZvcmNlZCBzb2Z0d2FyZSBjb2RlYyBpZiBpdCBpcyBpbiB1c2UuCkBAIC0yNzAsMTggKzI2
NCw2IEBAIGludDMyX3QgVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXI6OkVuY29k
ZSgKICAgcmV0dXJuIHJldDsKIH0KIAotaW50MzJfdCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxi
YWNrV3JhcHBlcjo6U2V0Q2hhbm5lbFBhcmFtZXRlcnMoCi0gICAgdWludDMyX3QgcGFja2V0X2xv
c3MsCi0gICAgaW50NjRfdCBydHQpIHsKLSAgY2hhbm5lbF9wYXJhbWV0ZXJzX3NldF8gPSB0cnVl
OwotICBwYWNrZXRfbG9zc18gPSBwYWNrZXRfbG9zczsKLSAgcnR0XyA9IHJ0dDsKLSAgaW50MzJf
dCByZXQgPSBlbmNvZGVyXy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0X2xvc3MsIHJ0dCk7
Ci0gIGlmICh1c2VfZmFsbGJhY2tfZW5jb2Rlcl8pCi0gICAgcmV0dXJuIGZhbGxiYWNrX2VuY29k
ZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRfbG9zcywgcnR0KTsKLSAgcmV0dXJuIHJl
dDsKLX0KLQogaW50MzJfdCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcjo6U2V0
UmF0ZUFsbG9jYXRpb24oCiAgICAgY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0
ZV9hbGxvY2F0aW9uLAogICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgewpAQCAtMjk0LDI5ICsyNzYs
MjkgQEAgaW50MzJfdCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcjo6U2V0UmF0
ZUFsbG9jYXRpb24oCiAgIHJldHVybiByZXQ7CiB9CiAKLWJvb2wgVmlkZW9FbmNvZGVyU29mdHdh
cmVGYWxsYmFja1dyYXBwZXI6OlN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3QgewotICByZXR1
cm4gdXNlX2ZhbGxiYWNrX2VuY29kZXJfID8gZmFsbGJhY2tfZW5jb2Rlcl8tPlN1cHBvcnRzTmF0
aXZlSGFuZGxlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGVuY29kZXJfLT5T
dXBwb3J0c05hdGl2ZUhhbmRsZSgpOwotfQorVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBWaWRl
b0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcjo6R2V0RW5jb2RlckluZm8oKQorICAgIGNv
bnN0IHsKKyAgRW5jb2RlckluZm8gZmFsbGJhY2tfZW5jb2Rlcl9pbmZvID0gZmFsbGJhY2tfZW5j
b2Rlcl8tPkdldEVuY29kZXJJbmZvKCk7CisgIEVuY29kZXJJbmZvIGRlZmF1bHRfZW5jb2Rlcl9p
bmZvID0gZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCk7CisKKyAgRW5jb2RlckluZm8gaW5mbyA9
CisgICAgICB1c2VfZmFsbGJhY2tfZW5jb2Rlcl8gPyBmYWxsYmFja19lbmNvZGVyX2luZm8gOiBk
ZWZhdWx0X2VuY29kZXJfaW5mbzsKIAotVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MKLVZp
ZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyOjpHZXRTY2FsaW5nU2V0dGluZ3MoKSBj
b25zdCB7CiAgIGlmIChmb3JjZWRfZmFsbGJhY2tfcG9zc2libGVfKSB7CiAgICAgY29uc3QgYXV0
byBzZXR0aW5ncyA9IGZvcmNlZF9mYWxsYmFja18uYWN0aXZlXwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPyBmYWxsYmFja19lbmNvZGVyXy0+R2V0U2NhbGluZ1NldHRpbmdzKCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZW5jb2Rlcl8tPkdldFNjYWxpbmdTZXR0aW5n
cygpOwotICAgIHJldHVybiBzZXR0aW5ncy50aHJlc2hvbGRzCi0gICAgICAgICAgICAgICA/IFZp
ZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzKHNldHRpbmdzLnRocmVzaG9sZHMtPmxvdywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MudGhy
ZXNob2xkcy0+aGlnaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yY2VkX2ZhbGxiYWNrXy5taW5fcGl4ZWxzXykKLSAgICAgICAgICAgICAgIDogVmlk
ZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtPZmY7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA/IGZhbGxiYWNrX2VuY29kZXJfaW5mby5zY2FsaW5nX3NldHRpbmdzCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRfZW5jb2Rlcl9pbmZvLnNjYWxpbmdfc2V0
dGluZ3M7CisgICAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0KKyAgICAgICAgc2V0dGluZ3MudGhy
ZXNob2xkcworICAgICAgICAgICAgPyBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyhzZXR0
aW5ncy50aHJlc2hvbGRzLT5sb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldHRpbmdzLnRocmVzaG9sZHMtPmhpZ2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZF9mYWxsYmFja18ubWluX3BpeGVsc18pCisg
ICAgICAgICAgICA6IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjprT2ZmOworICB9IGVs
c2UgeworICAgIGluZm8uc2NhbGluZ19zZXR0aW5ncyA9IGRlZmF1bHRfZW5jb2Rlcl9pbmZvLnNj
YWxpbmdfc2V0dGluZ3M7CiAgIH0KLSAgcmV0dXJuIGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGlu
Z3MoKTsKLX0KIAotY29uc3QgY2hhciogVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBw
ZXI6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJuIHVzZV9mYWxsYmFja19l
bmNvZGVyXyA/IGZhbGxiYWNrX2VuY29kZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogZW5jb2Rlcl8tPkltcGxlbWVudGF0aW9uTmFtZSgp
OworICByZXR1cm4gaW5mbzsKIH0KIAogYm9vbCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNr
V3JhcHBlcjo6SXNGb3JjZWRGYWxsYmFja0FjdGl2ZSgpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3Mv
dnA4X3RlbXBvcmFsX2xheWVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzAyMjNhNDIwOTY1NDVhYzg1NzI3ZThjY2UzMWVlNzg1MDc4MzA0NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
b19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICog
IENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVklERU9fQ09ERUNTX1ZQOF9URU1QT1JBTF9M
QVlFUlNfSF8KKyNkZWZpbmUgQVBJX1ZJREVPX0NPREVDU19WUDhfVEVNUE9SQUxfTEFZRVJTX0hf
CisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dmVjdG9yPgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworLy8gU29tZSBub3RlcyBvbiB0aGUgcHJlcmVxdWlzaXRlcyBvZiB0aGUgVGVtcG9y
YWxMYXllcnMgaW50ZXJmYWNlLgorLy8gKiBWcDhUZW1wb3JhbExheWVycyBpcyBub3QgdGhyZWFk
IHNhZmUsIHN5bmNocm9uaXphdGlvbiBpcyB0aGUgY2FsbGVyJ3MKKy8vICAgcmVzcG9uc2liaWxp
dHkuCisvLyAqIFRoZSBlbmNvZGVyIGlzIGFzc3VtZWQgdG8gZW5jb2RlIGFsbCBmcmFtZXMgaW4g
b3JkZXIsIGFuZCBjYWxsYmFja3MgdG8KKy8vICAgUG9wdWxhdGVDb2RlY1NwZWNpZmljKCkgLyBG
cmFtZUVuY29kZWQoKSBtdXN0IGhhcHBlbiBpbiB0aGUgc2FtZSBvcmRlci4KKy8vCisvLyBUaGlz
IG1lYW5zIHRoYXQgaW4gdGhlIGNhc2Ugb2YgcGlwZWxpbmluZyBlbmNvZGVycywgaXQgaXMgT0sg
dG8gaGF2ZSBhIGNoYWluCisvLyBvZiBjYWxscyBzdWNoIGFzIHRoaXM6CisvLyAtIFVwZGF0ZUxh
eWVyQ29uZmlnKHRpbWVzdGFtcEEpCisvLyAtIFVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcEIp
CisvLyAtIFBvcHVsYXRlQ29kZWNTcGVjaWZpYyh0aW1lc3RhbXBBLCAuLi4pCisvLyAtIFVwZGF0
ZUxheWVyQ29uZmlnKHRpbWVzdGFtcEMpCisvLyAtIE9uRW5jb2RlRG9uZSh0aW1lc3RhbXBBLCAx
MjM0LCAuLi4pCisvLyAtIFVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcEMpCisvLyAtIE9uRW5j
b2RlRG9uZSh0aW1lc3RhbXBCLCAwLCAuLi4pCisvLyAtIE9uRW5jb2RlRG9uZSh0aW1lc3RhbXBD
LCAxMjM0LCAuLi4pCisvLyBOb3RlIHRoYXQgVXBkYXRlTGF5ZXJDb25maWcoKSBmb3IgYSBuZXcg
ZnJhbWUgY2FuIGhhcHBlbiBiZWZvcmUKKy8vIEZyYW1lRW5jb2RlZCgpIGZvciBhIHByZXZpb3Vz
IG9uZSwgYnV0IGNhbGxzIHRoZW1zZWx2ZXMgbXVzdCBiZSBib3RoCisvLyBzeW5jaHJvbml6ZWQg
KGUuZy4gcnVuIG9uIGEgdGFzayBxdWV1ZSkgYW5kIGluIG9yZGVyIChwZXIgdHlwZSkuCisKKy8v
IFR3byBkaWZmZXJlbnQgZmxhdm9ycyBvZiB0ZW1wb3JhbCBsYXllcnMgYXJlIGN1cnJlbnRseSBh
dmFpbGFibGU6CisvLyBrRml4ZWRQYXR0ZXJuIHVzZXMgYSBmaXhlZCByZXBlYXRpbmcgcGF0dGVy
biBvZiAxLTQgbGF5ZXJzLgorLy8ga0JpdHJhdGVEeW5hbWljIGNhbiBhbGxvY2F0ZSBmcmFtZXMg
ZHluYW1pY2FsbHkgdG8gMSBvciAyIGxheWVycywgYmFzZWQgb24KKy8vIHRoZSBiaXRyYXRlIHBy
b2R1Y2VkLgorZW51bSBjbGFzcyBWcDhUZW1wb3JhbExheWVyc1R5cGUgeyBrRml4ZWRQYXR0ZXJu
LCBrQml0cmF0ZUR5bmFtaWMgfTsKKworc3RydWN0IENvZGVjU3BlY2lmaWNJbmZvVlA4OworCitz
dHJ1Y3QgVnA4RW5jb2RlckNvbmZpZyB7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtNYXhQ
ZXJpb2RpY2l0eSA9IDE2OworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrTWF4TGF5ZXJzID0g
NTsKKworICAvLyBOdW1iZXIgb2YgYWN0aXZlIHRlbXBvcmFsIGxheWVycy4gU2V0IHRvIDAgaWYg
bm90IHVzZWQuCisgIHVpbnQzMl90IHRzX251bWJlcl9sYXllcnM7CisgIC8vIEFycmF5cyBvZiBs
ZW5ndGggfHRzX251bWJlcl9sYXllcnN8LCBpbmRpY2F0aW5nIChjdW11bGF0aXZlKSB0YXJnZXQg
Yml0cmF0ZQorICAvLyBhbmQgcmF0ZSBkZWNpbWF0b3IgKGUuZy4gNCBpZiBldmVyeSA0dGggZnJh
bWUgaXMgaW4gdGhlIGdpdmVuIGxheWVyKSBmb3IKKyAgLy8gZWFjaCBhY3RpdmUgdGVtcG9yYWwg
bGF5ZXIsIHN0YXJ0aW5nIHdpdGggdGVtcG9yYWwgaWQgMC4KKyAgdWludDMyX3QgdHNfdGFyZ2V0
X2JpdHJhdGVba01heExheWVyc107CisgIHVpbnQzMl90IHRzX3JhdGVfZGVjaW1hdG9yW2tNYXhM
YXllcnNdOworCisgIC8vIFRoZSBwZXJpb2RpY2l0eSBvZiB0aGUgdGVtcG9yYWwgcGF0dGVybi4g
U2V0IHRvIDAgaWYgbm90IHVzZWQuCisgIHVpbnQzMl90IHRzX3BlcmlvZGljaXR5OworICAvLyBB
cnJheSBvZiBsZW5ndGggfHRzX3BlcmlvZGljaXR5fCBpbmRpY2F0aW5nIHRoZSBzZXF1ZW5jZSBv
ZiB0ZW1wb3JhbCBpZCdzCisgIC8vIHRvIGFzc2lnbiB0byBpbmNvbWluZyBmcmFtZXMuCisgIHVp
bnQzMl90IHRzX2xheWVyX2lkW2tNYXhQZXJpb2RpY2l0eV07CisKKyAgLy8gVGFyZ2V0IGJpdHJh
dGUsIGluIGJwcy4KKyAgdWludDMyX3QgcmNfdGFyZ2V0X2JpdHJhdGU7CisKKyAgLy8gQ2xhbXAg
UVAgdG8gbWluL21heC4gVXNlIDAgdG8gZGlzYWJsZSBjbGFtcGluZy4KKyAgdWludDMyX3QgcmNf
bWluX3F1YW50aXplcjsKKyAgdWludDMyX3QgcmNfbWF4X3F1YW50aXplcjsKK307CisKKy8vIERl
ZmluZWQgYml0LW1hc2thYmxlIHJlZmVyZW5jZSB0byB0aGUgdGhyZWUgYnVmZmVycyBhdmFpbGFi
bGUgaW4gVlA4LgorZW51bSBjbGFzcyBWcDhCdWZmZXJSZWZlcmVuY2UgOiB1aW50OF90IHsKKyAg
a05vbmUgPSAwLAorICBrTGFzdCA9IDEsCisgIGtHb2xkZW4gPSAyLAorICBrQWx0cmVmID0gNAor
fTsKKworLy8gVGhpcyBpbnRlcmZhY2UgZGVmaW5lcyBhIHdheSBvZiBnZXR0aW5nIHRoZSBlbmNv
ZGVyIHNldHRpbmdzIG5lZWRlZCB0bworLy8gcmVhbGl6ZSBhIHRlbXBvcmFsIGxheWVyIHN0cnVj
dHVyZS4KK2NsYXNzIFZwOFRlbXBvcmFsTGF5ZXJzIHsKKyBwdWJsaWM6CisgIGVudW0gQnVmZmVy
RmxhZ3MgOiBpbnQgeworICAgIGtOb25lID0gMCwKKyAgICBrUmVmZXJlbmNlID0gMSwKKyAgICBr
VXBkYXRlID0gMiwKKyAgICBrUmVmZXJlbmNlQW5kVXBkYXRlID0ga1JlZmVyZW5jZSB8IGtVcGRh
dGUsCisgIH07CisgIGVudW0gRnJlZXplRW50cm9weSB7IGtGcmVlemVFbnRyb3B5IH07CisKKyAg
c3RydWN0IEZyYW1lQ29uZmlnIHsKKyAgICBGcmFtZUNvbmZpZygpOworCisgICAgRnJhbWVDb25m
aWcoQnVmZmVyRmxhZ3MgbGFzdCwgQnVmZmVyRmxhZ3MgZ29sZGVuLCBCdWZmZXJGbGFncyBhcmYp
OworICAgIEZyYW1lQ29uZmlnKEJ1ZmZlckZsYWdzIGxhc3QsCisgICAgICAgICAgICAgICAgQnVm
ZmVyRmxhZ3MgZ29sZGVuLAorICAgICAgICAgICAgICAgIEJ1ZmZlckZsYWdzIGFyZiwKKyAgICAg
ICAgICAgICAgICBGcmVlemVFbnRyb3B5KTsKKworICAgIGJvb2wgZHJvcF9mcmFtZTsKKyAgICBC
dWZmZXJGbGFncyBsYXN0X2J1ZmZlcl9mbGFnczsKKyAgICBCdWZmZXJGbGFncyBnb2xkZW5fYnVm
ZmVyX2ZsYWdzOworICAgIEJ1ZmZlckZsYWdzIGFyZl9idWZmZXJfZmxhZ3M7CisKKyAgICAvLyBU
aGUgZW5jb2RlciBsYXllciBJRCBpcyB1c2VkIHRvIHV0aWxpemUgdGhlIGNvcnJlY3QgYml0cmF0
ZSBhbGxvY2F0b3IKKyAgICAvLyBpbnNpZGUgdGhlIGVuY29kZXIuIEl0IGRvZXMgbm90IGNvbnRy
b2wgcmVmZXJlbmNlcyBub3IgZGV0ZXJtaW5lIHdoaWNoCisgICAgLy8gImFjdHVhbCIgdGVtcG9y
YWwgbGF5ZXIgdGhpcyBpcy4gVGhlIHBhY2tldGl6ZXIgdGVtcG9yYWwgaW5kZXggZGV0ZXJtaW5l
cworICAgIC8vIHdoaWNoIGxheWVyIHRoZSBlbmNvZGVkIGZyYW1lIHNob3VsZCBiZSBwYWNrZXRp
emVkIGludG8uCisgICAgLy8gTm9ybWFsbHkgdGhlc2UgYXJlIHRoZSBzYW1lLCBidXQgY3VycmVu
dCB0ZW1wb3JhbC1sYXllciBzdHJhdGVnaWVzIGZvcgorICAgIC8vIHNjcmVlbnNoYXJlIHVzZSBv
bmUgYml0cmF0ZSBhbGxvY2F0b3IgZm9yIGFsbCBsYXllcnMsIGJ1dCBhdHRlbXB0IHRvCisgICAg
Ly8gcGFja2V0aXplIC8gdXRpbGl6ZSByZWZlcmVuY2VzIHRvIHNwbGl0IGEgc3RyZWFtIGludG8g
bXVsdGlwbGUgbGF5ZXJzLAorICAgIC8vIHdpdGggZGlmZmVyZW50IHF1YW50aXplciBzZXR0aW5n
cywgdG8gaGl0IHRhcmdldCBiaXRyYXRlLgorICAgIC8vIFRPRE8ocGJvcyk6IFNjcmVlbnNoYXJl
IGxheWVycyBhcmUgYmVpbmcgcmVjb25zaWRlcmVkIGF0IHRoZSB0aW1lIG9mCisgICAgLy8gd3Jp
dGluZywgd2UgbWlnaHQgYmUgYWJsZSB0byByZW1vdmUgdGhpcyBkaXN0aW5jdGlvbiwgYW5kIGhh
dmUgYSB0ZW1wb3JhbAorICAgIC8vIGxheWVyIGltcGx5IGJvdGggKHRoZSBub3JtYWwgY2FzZSku
CisgICAgaW50IGVuY29kZXJfbGF5ZXJfaWQ7CisgICAgaW50IHBhY2tldGl6ZXJfdGVtcG9yYWxf
aWR4OworCisgICAgYm9vbCBsYXllcl9zeW5jOworCisgICAgYm9vbCBmcmVlemVfZW50cm9weTsK
KworICAgIC8vIEluZGljYXRlcyBpbiB3aGljaCBvcmRlciB0aGUgZW5jb2RlciBzaG91bGQgc2Vh
cmNoIHRoZSByZWZlcmVuY2UgYnVmZmVycworICAgIC8vIHdoZW4gZG9pbmcgbW90aW9uIHByZWRp
Y3Rpb24uIFNldCB0byBrTm9uZSB0byB1c2UgdW5zcGVjaWZpZWQgb3JkZXIuIEFueQorICAgIC8v
IGJ1ZmZlciBpbmRpY2F0ZWQgaGVyZSBtdXN0IG5vdCBoYXZlIHRoZSBjb3JyZXNwb25kaW5nIG5v
X3JlZiBiaXQgc2V0LgorICAgIC8vIElmIGFsbCB0aHJlZSBidWZmZXJzIGNhbiBiZSByZWZlcmVu
Y2UsIHRoZSBvbmUgbm90IGxpc3RlZCBoZXJlIHNob3VsZCBiZQorICAgIC8vIHNlYXJjaGVkIGxh
c3QuCisgICAgVnA4QnVmZmVyUmVmZXJlbmNlIGZpcnN0X3JlZmVyZW5jZTsKKyAgICBWcDhCdWZm
ZXJSZWZlcmVuY2Ugc2Vjb25kX3JlZmVyZW5jZTsKKworICAgcHJpdmF0ZToKKyAgICBGcmFtZUNv
bmZpZyhCdWZmZXJGbGFncyBsYXN0LAorICAgICAgICAgICAgICAgIEJ1ZmZlckZsYWdzIGdvbGRl
biwKKyAgICAgICAgICAgICAgICBCdWZmZXJGbGFncyBhcmYsCisgICAgICAgICAgICAgICAgYm9v
bCBmcmVlemVfZW50cm9weSk7CisgIH07CisKKyAgdmlydHVhbCB+VnA4VGVtcG9yYWxMYXllcnMo
KSA9IGRlZmF1bHQ7CisKKyAgLy8gSWYgdGhpcyBtZXRob2QgcmV0dXJucyB0cnVlLCB0aGUgZW5j
b2RlciBpcyBmcmVlIHRvIGRyb3AgZnJhbWVzIGZvcgorICAvLyBpbnN0YW5jZSBpbiBhbiBlZmZv
cnQgdG8gdXBob2xkIGVuY29kaW5nIGJpdHJhdGUuCisgIC8vIElmIHRoaXMgcmV0dXJuIGZhbHNl
LCB0aGUgZW5jb2RlciBtdXN0IG5vdCBkcm9wIGFueSBmcmFtZXMgdW5sZXNzOgorICAvLyAgMS4g
UmVxdWVzdGVkIHRvIGRvIHNvIHZpYSBGcmFtZUNvbmZpZy5kcm9wX2ZyYW1lCisgIC8vICAyLiBU
aGUgZnJhbWUgdG8gYmUgZW5jb2RlZCBpcyByZXF1ZXN0ZWQgdG8gYmUgYSBrZXlmcmFtZQorICAv
LyAgMy4gVGhlIGVuY29kZWQgZGV0ZWN0ZWQgYSBsYXJnZSBvdmVyc2hvb3QgYW5kIGRlY2lkZWQg
dG8gZHJvcCBhbmQgdGhlbgorICAvLyAgICAgcmUtZW5jb2RlIHRoZSBpbWFnZSBhdCBhIGxvdyBi
aXRyYXRlLiBJbiB0aGlzIGNhc2UgdGhlIGVuY29kZXIgc2hvdWxkCisgIC8vICAgICBjYWxsIE9u
RW5jb2RlRG9uZSgpIG9uY2Ugd2l0aCBzaXplID0gMCB0byBpbmRpY2F0ZSBkcm9wLCBhbmQgdGhl
biBjYWxsCisgIC8vICAgICBPbkVuY29kZURvbmUoKSBhZ2FpbiB3aGVuIHRoZSBmcmFtZSBoYXMg
YWN0dWFsbHkgYmVlbiBlbmNvZGVkLgorICB2aXJ0dWFsIGJvb2wgU3VwcG9ydHNFbmNvZGVyRnJh
bWVEcm9wcGluZygpIGNvbnN0ID0gMDsKKworICAvLyBOZXcgdGFyZ2V0IGJpdHJhdGUsIHBlciB0
ZW1wb3JhbCBsYXllci4KKyAgdmlydHVhbCB2b2lkIE9uUmF0ZXNVcGRhdGVkKGNvbnN0IHN0ZDo6
dmVjdG9yPHVpbnQzMl90PiYgYml0cmF0ZXNfYnBzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGZyYW1lcmF0ZV9mcHMpID0gMDsKKworICAvLyBDYWxsZWQgYnkgdGhlIGVuY29k
ZXIgYmVmb3JlIGVuY29kaW5nIGEgZnJhbWUuIHxjZmd8IGNvbnRhaW5zIHRoZSBjdXJyZW50Cisg
IC8vIGNvbmZpZ3VyYXRpb24uIElmIHRoZSBUZW1wb3JhbExheWVycyBpbnN0YW5jZSB3aXNoZXMg
YW55IHBhcnQgb2YgdGhhdAorICAvLyB0byBiZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZW5jb2RlIHN0
ZXAsIHxjZmd8IHNob3VsZCBiZSBjaGFuZ2VkIGFuZCB0aGVuCisgIC8vIHJldHVybiB0cnVlLiBJ
ZiBmYWxzZSBpcyByZXR1cm5lZCwgdGhlIGVuY29kZXIgd2lsbCBwcm9jZWVkIHdpdGhvdXQKKyAg
Ly8gdXBkYXRpbmcgdGhlIGNvbmZpZ3VyYXRpb24uCisgIHZpcnR1YWwgYm9vbCBVcGRhdGVDb25m
aWd1cmF0aW9uKFZwOEVuY29kZXJDb25maWcqIGNmZykgPSAwOworCisgIC8vIFJldHVybnMgdGhl
IHJlY29tbWVuZGVkIFZQOCBlbmNvZGUgZmxhZ3MgbmVlZGVkLCBhbmQgbW92ZXMgdGhlIHRlbXBv
cmFsCisgIC8vIHBhdHRlcm4gdG8gdGhlIG5leHQgZnJhbWUuCisgIC8vIFRoZSB0aW1lc3RhbXAg
bWF5IGJlIHVzZWQgYXMgYm90aCBhIHRpbWUgYW5kIGEgdW5pcXVlIGlkZW50aWZpZXIsIGFuZCBz
bworICAvLyB0aGUgY2FsbGVyIG11c3QgbWFrZSBzdXJlIG5vIHR3byBmcmFtZXMgdXNlIHRoZSBz
YW1lIHRpbWVzdGFtcC4KKyAgLy8gVGhlIHRpbWVzdGFtcCB1c2VzIGEgOTBrSHogUlRQIGNsb2Nr
LgorICAvLyBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLCBmaXJzdCBjYWxsIHRoZSBhY3R1YWwg
ZW5jb2RlciB3aXRoIHRoZSBwcm92aWRlZAorICAvLyBmcmFtZSBjb25maWd1cmF0aW9uLCBhbmQg
dGhlbiBPbkVuY29kZURvbmUoKSBiZWxvdy4KKyAgdmlydHVhbCBGcmFtZUNvbmZpZyBVcGRhdGVM
YXllckNvbmZpZyh1aW50MzJfdCBydHBfdGltZXN0YW1wKSA9IDA7CisKKyAgLy8gQ2FsbGVkIGFm
dGVyIHRoZSBlbmNvZGUgc3RlcCBpcyBkb25lLiB8cnRwX3RpbWVzdGFtcHwgbXVzdCBtYXRjaCB0
aGUKKyAgLy8gcGFyYW1ldGVyIHVzZSBpbiB0aGUgVXBkYXRlTGF5ZXJDb25maWcoKSBjYWxsLgor
ICAvLyB8aXNfa2V5ZnJhbWV8IG11c3QgYmUgdHJ1ZSBpZmYgdGhlIGVuY29kZXIgZGVjaWRlZCB0
byBlbmNvZGUgdGhpcyBmcmFtZSBhcworICAvLyBhIGtleWZyYW1lLgorICAvLyBJZiB0aGUgZW5j
b2RlciBkZWNpZGVkIHRvIGRyb3AgdGhpcyBmcmFtZSwgfHNpemVfYnl0ZXN8IG11c3QgYmUgc2V0
IHRvIDAsCisgIC8vIG90aGVyd2lzZSBpdCBzaG91bGQgaW5kaWNhdGUgdGhlIHNpemUgaW4gYnl0
ZXMgb2YgdGhlIGVuY29kZWQgZnJhbWUuCisgIC8vIElmIHxzaXplX2J5dGVzfCA+IDAsIGFuZCB8
dnA4X2luZm98IGlzIG5vdCBudWxsLCB0aGUgVGVtcG9yYWxMYXllcnMKKyAgLy8gaW5zdGFuY2Ug
bXkgdXBkYXRlIHx2cDhfaW5mb3wgd2l0aCBjb2RlYyBzcGVjaWZpYyBkYXRhIHN1Y2ggYXMgdGVt
cG9yYWwgaWQuCisgIC8vIFNvbWUgZmllbGRzIG9mIHRoaXMgc3RydWN0IG1heSBoYXZlIGFscmVh
ZHkgYmVlbiBwb3B1bGF0ZWQgYnkgdGhlIGVuY29kZXIsCisgIC8vIGNoZWNrIGJlZm9yZSBvdmVy
d3JpdGluZy4KKyAgLy8gSWYgfHNpemVfYnl0ZXN8ID4gMCwgfHFwfCBzaG91bGQgaW5kaWNhdGUg
dGhlIGZyYW1lLWxldmVsIFFQIHRoaXMgZnJhbWUgd2FzCisgIC8vIGVuY29kZWQgYXQuIElmIHRo
ZSBlbmNvZGVyIGRvZXMgbm90IHN1cHBvcnQgZXh0cmFjdGluZyB0aGlzLCB8cXB8IHNob3VsZCBi
ZQorICAvLyBzZXQgdG8gMC4KKyAgdmlydHVhbCB2b2lkIE9uRW5jb2RlRG9uZSh1aW50MzJfdCBy
dHBfdGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplX2J5
dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfa2V5ZnJhbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHFwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENvZGVjU3BlY2lmaWNJbmZvVlA4KiB2cDhfaW5mbykgPSAwOworfTsKKworfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9WSURFT19DT0RFQ1NfVlA4X1RFTVBPUkFM
X0xBWUVSU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXVkaW8vQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hdWRpby9CVUlMRC5nbgppbmRleCA5MWNlY2U5M2NiOWFhZTUwYWI1MWFiYTY0
NTM5MWRlNTM1ZDE1M2QxLi5jMDQ1YWY2Mzc2NTFkMzdlODgxYWUzMWE4OWQ3MjM3YmJmZTk2YjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hdWRpby9CVUlMRC5nbgpAQCAtMjYsMTkgKzI2LDEzIEBAIHJ0Y19zdGF0aWNfbGlicmFy
eSgiYXVkaW8iKSB7CiAgICAgImF1ZGlvX3RyYW5zcG9ydF9pbXBsLmgiLAogICAgICJjaGFubmVs
X3JlY2VpdmUuY2MiLAogICAgICJjaGFubmVsX3JlY2VpdmUuaCIsCi0gICAgImNoYW5uZWxfcmVj
ZWl2ZV9wcm94eS5jYyIsCi0gICAgImNoYW5uZWxfcmVjZWl2ZV9wcm94eS5oIiwKICAgICAiY2hh
bm5lbF9zZW5kLmNjIiwKICAgICAiY2hhbm5lbF9zZW5kLmgiLAotICAgICJjaGFubmVsX3NlbmRf
cHJveHkuY2MiLAotICAgICJjaGFubmVsX3NlbmRfcHJveHkuaCIsCiAgICAgImNvbnZlcnNpb24u
aCIsCiAgICAgIm51bGxfYXVkaW9fcG9sbGVyLmNjIiwKICAgICAibnVsbF9hdWRpb19wb2xsZXIu
aCIsCiAgICAgInJlbWl4X3Jlc2FtcGxlLmNjIiwKICAgICAicmVtaXhfcmVzYW1wbGUuaCIsCi0g
ICAgInRpbWVfaW50ZXJ2YWwuY2MiLAotICAgICJ0aW1lX2ludGVydmFsLmgiLAogICAgICJ0cmFu
c3BvcnRfZmVlZGJhY2tfcGFja2V0X2xvc3NfdHJhY2tlci5jYyIsCiAgICAgInRyYW5zcG9ydF9m
ZWVkYmFja19wYWNrZXRfbG9zc190cmFja2VyLmgiLAogICBdCkBAIC00OSw3ICs0Myw2IEBAIHJ0
Y19zdGF0aWNfbGlicmFyeSgiYXVkaW8iKSB7CiAgIH0KIAogICBkZXBzID0gWwotICAgICIuLjp3
ZWJydGNfY29tbW9uIiwKICAgICAiLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi9hcGk6Y2Fs
bF9hcGkiLAogICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCkBAIC02
NSwxMiArNTgsMTQgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpbyIpIHsKICAgICAiLi4vY29t
bW9uX2F1ZGlvOmNvbW1vbl9hdWRpb19jIiwKICAgICAiLi4vbG9nZ2luZzpydGNfZXZlbnRfYXVk
aW8iLAogICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKKyAgICAiLi4vbG9nZ2lu
ZzpydGNfc3RyZWFtX2NvbmZpZyIsCiAgICAgIi4uL21vZHVsZXMvYXVkaW9fY29kaW5nIiwKKyAg
ICAiLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6YXVkaW9fZW5jb2Rlcl9jbmciLAogICAgICIuLi9t
b2R1bGVzL2F1ZGlvX2NvZGluZzphdWRpb19mb3JtYXRfY29udmVyc2lvbiIsCiAgICAgIi4uL21v
ZHVsZXMvYXVkaW9fY29kaW5nOmF1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWciLAotICAgICIu
Li9tb2R1bGVzL2F1ZGlvX2NvZGluZzpjbmciLAogICAgICIuLi9tb2R1bGVzL2F1ZGlvX2Rldmlj
ZSIsCiAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZyIsCisgICAgIi4uL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICIuLi9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxl
cjpiaXRyYXRlX2NvbnRyb2xsZXIiLAogICAgICIuLi9tb2R1bGVzL3BhY2luZzpwYWNpbmciLAog
ICAgICIuLi9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcjpyZW1vdGVfYml0cmF0ZV9l
c3RpbWF0b3IiLApAQCAtMTI4LDIyICsxMjMsMzQgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7
CiAgICAgICAibW9ja192b2VfY2hhbm5lbF9wcm94eS5oIiwKICAgICAgICJyZW1peF9yZXNhbXBs
ZV91bml0dGVzdC5jYyIsCiAgICAgICAidGVzdC9hdWRpb19zdGF0c190ZXN0LmNjIiwKLSAgICAg
ICJ0aW1lX2ludGVydmFsX3VuaXR0ZXN0LmNjIiwKKyAgICAgICJ0ZXN0L21lZGlhX3RyYW5zcG9y
dF90ZXN0LmNjIiwKICAgICAgICJ0cmFuc3BvcnRfZmVlZGJhY2tfcGFja2V0X2xvc3NfdHJhY2tl
cl91bml0dGVzdC5jYyIsCiAgICAgXQogICAgIGRlcHMgPSBbCiAgICAgICAiOmF1ZGlvIiwKICAg
ICAgICI6YXVkaW9fZW5kX3RvX2VuZF90ZXN0IiwKKyAgICAgICIuLi9hcGk6bG9vcGJhY2tfbWVk
aWFfdHJhbnNwb3J0IiwKICAgICAgICIuLi9hcGk6bW9ja19hdWRpb19taXhlciIsCisgICAgICAi
Li4vYXBpOm1vY2tfZnJhbWVfZGVjcnlwdG9yIiwKKyAgICAgICIuLi9hcGk6bW9ja19mcmFtZV9l
bmNyeXB0b3IiLAogICAgICAgIi4uL2FwaS9hdWRpbzphdWRpb19mcmFtZV9hcGkiLAorICAgICAg
Ii4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCisgICAgICAiLi4vYXBpL2F1
ZGlvX2NvZGVjcy9vcHVzOmF1ZGlvX2RlY29kZXJfb3B1cyIsCisgICAgICAiLi4vYXBpL2F1ZGlv
X2NvZGVjcy9vcHVzOmF1ZGlvX2VuY29kZXJfb3B1cyIsCiAgICAgICAiLi4vYXBpL3VuaXRzOnRp
bWVfZGVsdGEiLAorICAgICAgIi4uL2NhbGw6bW9ja19iaXRyYXRlX2FsbG9jYXRvciIsCiAgICAg
ICAiLi4vY2FsbDptb2NrX2NhbGxfaW50ZXJmYWNlcyIsCiAgICAgICAiLi4vY2FsbDptb2NrX3J0
cF9pbnRlcmZhY2VzIiwKICAgICAgICIuLi9jYWxsOnJ0cF9pbnRlcmZhY2VzIiwKICAgICAgICIu
Li9jYWxsOnJ0cF9yZWNlaXZlciIsCiAgICAgICAiLi4vY29tbW9uX2F1ZGlvIiwKICAgICAgICIu
Li9sb2dnaW5nOm1vY2tzIiwKKyAgICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwK
ICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTptb2NrX2F1ZGlvX2RldmljZSIsCisgICAg
ICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAorCisgICAgICAjIEZvciBUZXN0
QXVkaW9EZXZpY2VNb2R1bGUKKyAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19k
ZXZpY2VfaW1wbCIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19taXhlcjphdWRpb19taXhlcl9p
bXBsIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2lu
Z19zdGF0aXN0aWNzIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6bW9ja3Mi
LApAQCAtMTUxLDkgKzE1OCw5IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4u
L21vZHVsZXMvcGFjaW5nOnBhY2luZyIsCiAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcDptb2Nr
X3J0cF9ydGNwIiwKICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIs
CisgICAgICAiLi4vbW9kdWxlcy91dGlsaXR5IiwKICAgICAgICIuLi9ydGNfYmFzZTpjaGVja3Mi
LAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tf
cXVldWUiLAogICAgICAgIi4uL3J0Y19iYXNlOnNhZmVfY29tcGFyZSIsCiAgICAgICAiLi4vc3lz
dGVtX3dyYXBwZXJzOnN5c3RlbV93cmFwcGVycyIsCkBAIC0yNjUsNiArMjcyLDcgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vdGVzdDpzaW5nbGVfdGhyZWFkZWRfdGFza19x
dWV1ZSIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X2NvbW1vbiIsCiAgICAgICAiLi4vdGVzdDp0ZXN0
X21haW4iLAorICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICIvL3Rlc3Rpbmcv
Z3Rlc3QiLAogICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAg
ICAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbS5jYwppbmRleCA1
NjNlOGEwMzZhMzAzZmRlNzg3OWNhZWRhNmM1MjNiOGMyZDA0M2I5Li44ZDRhZmUwOGUzNzY3Y2Jl
YmI2NGQ2ZGJkZTRhNzJjZDIzNjMyYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19y
ZWNlaXZlX3N0cmVhbS5jYwpAQCAtMTMsMTQgKzEzLDE3IEBACiAjaW5jbHVkZSA8c3RyaW5nPgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNp
bmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVk
aW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAiYXBpL2NhbGwvYXVkaW9fc2luay5oIgorI2luY2x1ZGUg
ImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0u
aCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19zdGF0ZS5oIgotI2luY2x1ZGUgImF1ZGlvL2NoYW5u
ZWxfcmVjZWl2ZV9wcm94eS5oIgorI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5oIgog
I2luY2x1ZGUgImF1ZGlvL2NvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcu
aCIKICNpbmNsdWRlICJjYWxsL3J0cF9zdHJlYW1fcmVjZWl2ZXJfY29udHJvbGxlcl9pbnRlcmZh
Y2UuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRl
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS9ydHBfcnRjcC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmlu
Z19idWlsZGVyLmgiCkBAIC01Myw2ICs1Niw3IEBAIHN0ZDo6c3RyaW5nIEF1ZGlvUmVjZWl2ZVN0
cmVhbTo6Q29uZmlnOjpUb1N0cmluZygpIGNvbnN0IHsKICAgc3MgPDwgIntydHA6ICIgPDwgcnRw
LlRvU3RyaW5nKCk7CiAgIHNzIDw8ICIsIHJ0Y3Bfc2VuZF90cmFuc3BvcnQ6ICIKICAgICAgPDwg
KHJ0Y3Bfc2VuZF90cmFuc3BvcnQgPyAiKFRyYW5zcG9ydCkiIDogIm51bGwiKTsKKyAgc3MgPDwg
IiwgbWVkaWFfdHJhbnNwb3J0OiAiIDw8IChtZWRpYV90cmFuc3BvcnQgPyAiKFRyYW5zcG9ydCki
IDogIm51bGwiKTsKICAgaWYgKCFzeW5jX2dyb3VwLmVtcHR5KCkpIHsKICAgICBzcyA8PCAiLCBz
eW5jX2dyb3VwOiAiIDw8IHN5bmNfZ3JvdXA7CiAgIH0KQEAgLTYyLDcgKzY2LDcgQEAgc3RkOjpz
dHJpbmcgQXVkaW9SZWNlaXZlU3RyZWFtOjpDb25maWc6OlRvU3RyaW5nKCkgY29uc3QgewogCiBu
YW1lc3BhY2UgaW50ZXJuYWwgewogbmFtZXNwYWNlIHsKLXN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNo
YW5uZWxSZWNlaXZlUHJveHk+IENyZWF0ZUNoYW5uZWxBbmRQcm94eSgKK3N0ZDo6dW5pcXVlX3B0
cjx2b2U6OkNoYW5uZWxSZWNlaXZlSW50ZXJmYWNlPiBDcmVhdGVDaGFubmVsUmVjZWl2ZSgKICAg
ICB3ZWJydGM6OkF1ZGlvU3RhdGUqIGF1ZGlvX3N0YXRlLAogICAgIFByb2Nlc3NUaHJlYWQqIG1v
ZHVsZV9wcm9jZXNzX3RocmVhZCwKICAgICBjb25zdCB3ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0cmVh
bTo6Q29uZmlnJiBjb25maWcsCkBAIC03MCwxMyArNzQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPHZv
ZTo6Q2hhbm5lbFJlY2VpdmVQcm94eT4gQ3JlYXRlQ2hhbm5lbEFuZFByb3h5KAogICBSVENfRENI
RUNLKGF1ZGlvX3N0YXRlKTsKICAgaW50ZXJuYWw6OkF1ZGlvU3RhdGUqIGludGVybmFsX2F1ZGlv
X3N0YXRlID0KICAgICAgIHN0YXRpY19jYXN0PGludGVybmFsOjpBdWRpb1N0YXRlKj4oYXVkaW9f
c3RhdGUpOwotICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8dm9lOjpDaGFubmVsUmVjZWl2ZVBy
b3h5PigKLSAgICAgIGFic2w6Om1ha2VfdW5pcXVlPHZvZTo6Q2hhbm5lbFJlY2VpdmU+KAotICAg
ICAgICAgIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwgaW50ZXJuYWxfYXVkaW9fc3RhdGUtPmF1ZGlv
X2RldmljZV9tb2R1bGUoKSwKLSAgICAgICAgICBjb25maWcucnRjcF9zZW5kX3RyYW5zcG9ydCwg
ZXZlbnRfbG9nLCBjb25maWcucnRwLnJlbW90ZV9zc3JjLAotICAgICAgICAgIGNvbmZpZy5qaXR0
ZXJfYnVmZmVyX21heF9wYWNrZXRzLAotICAgICAgICAgIGNvbmZpZy5qaXR0ZXJfYnVmZmVyX2Zh
c3RfYWNjZWxlcmF0ZSwgY29uZmlnLmRlY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICBjb25maWcu
Y29kZWNfcGFpcl9pZCwgY29uZmlnLmZyYW1lX2RlY3J5cHRvcikpOworICByZXR1cm4gdm9lOjpD
cmVhdGVDaGFubmVsUmVjZWl2ZSgKKyAgICAgIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwgaW50ZXJu
YWxfYXVkaW9fc3RhdGUtPmF1ZGlvX2RldmljZV9tb2R1bGUoKSwKKyAgICAgIGNvbmZpZy5tZWRp
YV90cmFuc3BvcnQsIGNvbmZpZy5ydGNwX3NlbmRfdHJhbnNwb3J0LCBldmVudF9sb2csCisgICAg
ICBjb25maWcucnRwLnJlbW90ZV9zc3JjLCBjb25maWcuaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0
cywKKyAgICAgIGNvbmZpZy5qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSwgY29uZmlnLmpp
dHRlcl9idWZmZXJfbWluX2RlbGF5X21zLAorICAgICAgY29uZmlnLmRlY29kZXJfZmFjdG9yeSwg
Y29uZmlnLmNvZGVjX3BhaXJfaWQsIGNvbmZpZy5mcmFtZV9kZWNyeXB0b3IsCisgICAgICBjb25m
aWcuY3J5cHRvX29wdGlvbnMpOwogfQogfSAgLy8gbmFtZXNwYWNlCiAKQEAgLTkyLDEwICs5Niwx
MCBAQCBBdWRpb1JlY2VpdmVTdHJlYW06OkF1ZGlvUmVjZWl2ZVN0cmVhbSgKICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fc3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfbG9nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIENyZWF0ZUNoYW5uZWxBbmRQcm94eShhdWRpb19zdGF0ZS5nZXQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX3Byb2Nlc3Nf
dGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2
ZW50X2xvZykpIHt9CisgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQ2hhbm5lbFJlY2Vp
dmUoYXVkaW9fc3RhdGUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBldmVudF9sb2cpKSB7fQogCiBBdWRpb1JlY2VpdmVTdHJl
YW06OkF1ZGlvUmVjZWl2ZVN0cmVhbSgKICAgICBSdHBTdHJlYW1SZWNlaXZlckNvbnRyb2xsZXJJ
bnRlcmZhY2UqIHJlY2VpdmVyX2NvbnRyb2xsZXIsCkBAIC0xMDMsMjUgKzEwNywyNiBAQCBBdWRp
b1JlY2VpdmVTdHJlYW06OkF1ZGlvUmVjZWl2ZVN0cmVhbSgKICAgICBjb25zdCB3ZWJydGM6OkF1
ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnJiBjb25maWcsCiAgICAgY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4mIGF1ZGlvX3N0YXRlLAogICAgIHdlYnJ0Yzo6UnRj
RXZlbnRMb2cqIGV2ZW50X2xvZywKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsUmVj
ZWl2ZVByb3h5PiBjaGFubmVsX3Byb3h5KQotICAgIDogYXVkaW9fc3RhdGVfKGF1ZGlvX3N0YXRl
KSwgY2hhbm5lbF9wcm94eV8oc3RkOjptb3ZlKGNoYW5uZWxfcHJveHkpKSB7CisgICAgc3RkOjp1
bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2U+IGNoYW5uZWxfcmVjZWl2ZSkK
KyAgICA6IGF1ZGlvX3N0YXRlXyhhdWRpb19zdGF0ZSksIGNoYW5uZWxfcmVjZWl2ZV8oc3RkOjpt
b3ZlKGNoYW5uZWxfcmVjZWl2ZSkpIHsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQXVkaW9SZWNl
aXZlU3RyZWFtOiAiIDw8IGNvbmZpZy5ydHAucmVtb3RlX3NzcmM7Ci0gIFJUQ19EQ0hFQ0socmVj
ZWl2ZXJfY29udHJvbGxlcik7Ci0gIFJUQ19EQ0hFQ0socGFja2V0X3JvdXRlcik7CiAgIFJUQ19E
Q0hFQ0soY29uZmlnLmRlY29kZXJfZmFjdG9yeSk7CiAgIFJUQ19EQ0hFQ0soY29uZmlnLnJ0Y3Bf
c2VuZF90cmFuc3BvcnQpOwogICBSVENfRENIRUNLKGF1ZGlvX3N0YXRlXyk7Ci0gIFJUQ19EQ0hF
Q0soY2hhbm5lbF9wcm94eV8pOworICBSVENfRENIRUNLKGNoYW5uZWxfcmVjZWl2ZV8pOwogCiAg
IG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXy5EZXRhY2hGcm9tVGhyZWFkKCk7CiAKLSAg
Ly8gQ29uZmlndXJlIGJhbmR3aWR0aCBlc3RpbWF0aW9uLgotICBjaGFubmVsX3Byb3h5Xy0+UmVn
aXN0ZXJSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cyhwYWNrZXRfcm91dGVyKTsKLQot
ICAvLyBSZWdpc3RlciB3aXRoIHRyYW5zcG9ydC4KLSAgcnRwX3N0cmVhbV9yZWNlaXZlcl8gPSBy
ZWNlaXZlcl9jb250cm9sbGVyLT5DcmVhdGVSZWNlaXZlcigKLSAgICAgIGNvbmZpZy5ydHAucmVt
b3RlX3NzcmMsIGNoYW5uZWxfcHJveHlfLmdldCgpKTsKKyAgaWYgKCFjb25maWcubWVkaWFfdHJh
bnNwb3J0KSB7CisgICAgUlRDX0RDSEVDSyhyZWNlaXZlcl9jb250cm9sbGVyKTsKKyAgICBSVENf
RENIRUNLKHBhY2tldF9yb3V0ZXIpOworICAgIC8vIENvbmZpZ3VyZSBiYW5kd2lkdGggZXN0aW1h
dGlvbi4KKyAgICBjaGFubmVsX3JlY2VpdmVfLT5SZWdpc3RlclJlY2VpdmVyQ29uZ2VzdGlvbkNv
bnRyb2xPYmplY3RzKHBhY2tldF9yb3V0ZXIpOwogCisgICAgLy8gUmVnaXN0ZXIgd2l0aCB0cmFu
c3BvcnQuCisgICAgcnRwX3N0cmVhbV9yZWNlaXZlcl8gPSByZWNlaXZlcl9jb250cm9sbGVyLT5D
cmVhdGVSZWNlaXZlcigKKyAgICAgICAgY29uZmlnLnJ0cC5yZW1vdGVfc3NyYywgY2hhbm5lbF9y
ZWNlaXZlXy5nZXQoKSk7CisgIH0KICAgQ29uZmlndXJlU3RyZWFtKHRoaXMsIGNvbmZpZywgdHJ1
ZSk7CiB9CiAKQEAgLTEyOSw4ICsxMzQsMTAgQEAgQXVkaW9SZWNlaXZlU3RyZWFtOjp+QXVkaW9S
ZWNlaXZlU3RyZWFtKCkgewogICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVj
a2VyXyk7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIn5BdWRpb1JlY2VpdmVTdHJlYW06ICIgPDwg
Y29uZmlnXy5ydHAucmVtb3RlX3NzcmM7CiAgIFN0b3AoKTsKLSAgY2hhbm5lbF9wcm94eV8tPkRp
c2Fzc29jaWF0ZVNlbmRDaGFubmVsKCk7Ci0gIGNoYW5uZWxfcHJveHlfLT5SZXNldFJlY2VpdmVy
Q29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCk7CisgIGNoYW5uZWxfcmVjZWl2ZV8tPlNldEFzc29j
aWF0ZWRTZW5kQ2hhbm5lbChudWxscHRyKTsKKyAgaWYgKCFjb25maWdfLm1lZGlhX3RyYW5zcG9y
dCkgeworICAgIGNoYW5uZWxfcmVjZWl2ZV8tPlJlc2V0UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJv
bE9iamVjdHMoKTsKKyAgfQogfQogCiB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6UmVjb25maWd1
cmUoCkBAIC0xNDQsNyArMTUxLDcgQEAgdm9pZCBBdWRpb1JlY2VpdmVTdHJlYW06OlN0YXJ0KCkg
ewogICBpZiAocGxheWluZ18pIHsKICAgICByZXR1cm47CiAgIH0KLSAgY2hhbm5lbF9wcm94eV8t
PlN0YXJ0UGxheW91dCgpOworICBjaGFubmVsX3JlY2VpdmVfLT5TdGFydFBsYXlvdXQoKTsKICAg
cGxheWluZ18gPSB0cnVlOwogICBhdWRpb19zdGF0ZSgpLT5BZGRSZWNlaXZpbmdTdHJlYW0odGhp
cyk7CiB9CkBAIC0xNTQsNyArMTYxLDcgQEAgdm9pZCBBdWRpb1JlY2VpdmVTdHJlYW06OlN0b3Ao
KSB7CiAgIGlmICghcGxheWluZ18pIHsKICAgICByZXR1cm47CiAgIH0KLSAgY2hhbm5lbF9wcm94
eV8tPlN0b3BQbGF5b3V0KCk7CisgIGNoYW5uZWxfcmVjZWl2ZV8tPlN0b3BQbGF5b3V0KCk7CiAg
IHBsYXlpbmdfID0gZmFsc2U7CiAgIGF1ZGlvX3N0YXRlKCktPlJlbW92ZVJlY2VpdmluZ1N0cmVh
bSh0aGlzKTsKIH0KQEAgLTE2NSwxMSArMTcyLDExIEBAIHdlYnJ0Yzo6QXVkaW9SZWNlaXZlU3Ry
ZWFtOjpTdGF0cyBBdWRpb1JlY2VpdmVTdHJlYW06OkdldFN0YXRzKCkgY29uc3QgewogICBzdGF0
cy5yZW1vdGVfc3NyYyA9IGNvbmZpZ18ucnRwLnJlbW90ZV9zc3JjOwogCiAgIHdlYnJ0Yzo6Q2Fs
bFJlY2VpdmVTdGF0aXN0aWNzIGNhbGxfc3RhdHMgPQotICAgICAgY2hhbm5lbF9wcm94eV8tPkdl
dFJUQ1BTdGF0aXN0aWNzKCk7CisgICAgICBjaGFubmVsX3JlY2VpdmVfLT5HZXRSVENQU3RhdGlz
dGljcygpOwogICAvLyBUT0RPKHNvbGVuYmVyZyk6IERvbid0IHJldHVybiBoZXJlIGlmIHdlIGNh
bid0IGdldCB0aGUgY29kZWMgLSByZXR1cm4gdGhlCiAgIC8vICAgICAgICAgICAgICAgICAgc3Rh
dHMgd2UgKmNhbiogZ2V0LgogICB3ZWJydGM6OkNvZGVjSW5zdCBjb2RlY19pbnN0ID0gezB9Owot
ICBpZiAoIWNoYW5uZWxfcHJveHlfLT5HZXRSZWNDb2RlYygmY29kZWNfaW5zdCkpIHsKKyAgaWYg
KCFjaGFubmVsX3JlY2VpdmVfLT5HZXRSZWNDb2RlYygmY29kZWNfaW5zdCkpIHsKICAgICByZXR1
cm4gc3RhdHM7CiAgIH0KIApAQCAtMTg2LDEzICsxOTMsMTMgQEAgd2VicnRjOjpBdWRpb1JlY2Vp
dmVTdHJlYW06OlN0YXRzIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6R2V0U3RhdHMoKSBjb25zdCB7CiAg
IGlmIChjb2RlY19pbnN0LnBsZnJlcSAvIDEwMDAgPiAwKSB7CiAgICAgc3RhdHMuaml0dGVyX21z
ID0gY2FsbF9zdGF0cy5qaXR0ZXJTYW1wbGVzIC8gKGNvZGVjX2luc3QucGxmcmVxIC8gMTAwMCk7
CiAgIH0KLSAgc3RhdHMuZGVsYXlfZXN0aW1hdGVfbXMgPSBjaGFubmVsX3Byb3h5Xy0+R2V0RGVs
YXlFc3RpbWF0ZSgpOwotICBzdGF0cy5hdWRpb19sZXZlbCA9IGNoYW5uZWxfcHJveHlfLT5HZXRT
cGVlY2hPdXRwdXRMZXZlbEZ1bGxSYW5nZSgpOwotICBzdGF0cy50b3RhbF9vdXRwdXRfZW5lcmd5
ID0gY2hhbm5lbF9wcm94eV8tPkdldFRvdGFsT3V0cHV0RW5lcmd5KCk7Ci0gIHN0YXRzLnRvdGFs
X291dHB1dF9kdXJhdGlvbiA9IGNoYW5uZWxfcHJveHlfLT5HZXRUb3RhbE91dHB1dER1cmF0aW9u
KCk7CisgIHN0YXRzLmRlbGF5X2VzdGltYXRlX21zID0gY2hhbm5lbF9yZWNlaXZlXy0+R2V0RGVs
YXlFc3RpbWF0ZSgpOworICBzdGF0cy5hdWRpb19sZXZlbCA9IGNoYW5uZWxfcmVjZWl2ZV8tPkdl
dFNwZWVjaE91dHB1dExldmVsRnVsbFJhbmdlKCk7CisgIHN0YXRzLnRvdGFsX291dHB1dF9lbmVy
Z3kgPSBjaGFubmVsX3JlY2VpdmVfLT5HZXRUb3RhbE91dHB1dEVuZXJneSgpOworICBzdGF0cy50
b3RhbF9vdXRwdXRfZHVyYXRpb24gPSBjaGFubmVsX3JlY2VpdmVfLT5HZXRUb3RhbE91dHB1dER1
cmF0aW9uKCk7CiAKICAgLy8gR2V0IGppdHRlciBidWZmZXIgYW5kIHRvdGFsIGRlbGF5IChhbGcg
KyBqaXR0ZXIgKyBwbGF5b3V0KSBzdGF0cy4KLSAgYXV0byBucyA9IGNoYW5uZWxfcHJveHlfLT5H
ZXROZXR3b3JrU3RhdGlzdGljcygpOworICBhdXRvIG5zID0gY2hhbm5lbF9yZWNlaXZlXy0+R2V0
TmV0d29ya1N0YXRpc3RpY3MoKTsKICAgc3RhdHMuaml0dGVyX2J1ZmZlcl9tcyA9IG5zLmN1cnJl
bnRCdWZmZXJTaXplOwogICBzdGF0cy5qaXR0ZXJfYnVmZmVyX3ByZWZlcnJlZF9tcyA9IG5zLnBy
ZWZlcnJlZEJ1ZmZlclNpemU7CiAgIHN0YXRzLnRvdGFsX3NhbXBsZXNfcmVjZWl2ZWQgPSBucy50
b3RhbFNhbXBsZXNSZWNlaXZlZDsKQEAgLTIwNyw4ICsyMTQsMTAgQEAgd2VicnRjOjpBdWRpb1Jl
Y2VpdmVTdHJlYW06OlN0YXRzIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6R2V0U3RhdHMoKSBjb25zdCB7
CiAgIHN0YXRzLnNlY29uZGFyeV9kaXNjYXJkZWRfcmF0ZSA9IFExNFRvRmxvYXQobnMuY3VycmVu
dFNlY29uZGFyeURpc2NhcmRlZFJhdGUpOwogICBzdGF0cy5hY2NlbGVyYXRlX3JhdGUgPSBRMTRU
b0Zsb2F0KG5zLmN1cnJlbnRBY2NlbGVyYXRlUmF0ZSk7CiAgIHN0YXRzLnByZWVtcHRpdmVfZXhw
YW5kX3JhdGUgPSBRMTRUb0Zsb2F0KG5zLmN1cnJlbnRQcmVlbXB0aXZlUmF0ZSk7CisgIHN0YXRz
LmppdHRlcl9idWZmZXJfZmx1c2hlcyA9IG5zLnBhY2tldEJ1ZmZlckZsdXNoZXM7CisgIHN0YXRz
LmRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzID0gbnMuZGVsYXllZFBhY2tldE91dGFnZVNh
bXBsZXM7CiAKLSAgYXV0byBkcyA9IGNoYW5uZWxfcHJveHlfLT5HZXREZWNvZGluZ0NhbGxTdGF0
aXN0aWNzKCk7CisgIGF1dG8gZHMgPSBjaGFubmVsX3JlY2VpdmVfLT5HZXREZWNvZGluZ0NhbGxT
dGF0aXN0aWNzKCk7CiAgIHN0YXRzLmRlY29kaW5nX2NhbGxzX3RvX3NpbGVuY2VfZ2VuZXJhdG9y
ID0gZHMuY2FsbHNfdG9fc2lsZW5jZV9nZW5lcmF0b3I7CiAgIHN0YXRzLmRlY29kaW5nX2NhbGxz
X3RvX25ldGVxID0gZHMuY2FsbHNfdG9fbmV0ZXE7CiAgIHN0YXRzLmRlY29kaW5nX25vcm1hbCA9
IGRzLmRlY29kZWRfbm9ybWFsOwpAQCAtMjIyLDIzICsyMzEsMjMgQEAgd2VicnRjOjpBdWRpb1Jl
Y2VpdmVTdHJlYW06OlN0YXRzIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6R2V0U3RhdHMoKSBjb25zdCB7
CiAKIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpTZXRTaW5rKEF1ZGlvU2lua0ludGVyZmFjZSog
c2luaykgewogICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7Ci0g
IGNoYW5uZWxfcHJveHlfLT5TZXRTaW5rKHNpbmspOworICBjaGFubmVsX3JlY2VpdmVfLT5TZXRT
aW5rKHNpbmspOwogfQogCiB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6U2V0R2FpbihmbG9hdCBn
YWluKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKLSAg
Y2hhbm5lbF9wcm94eV8tPlNldENoYW5uZWxPdXRwdXRWb2x1bWVTY2FsaW5nKGdhaW4pOworICBj
aGFubmVsX3JlY2VpdmVfLT5TZXRDaGFubmVsT3V0cHV0Vm9sdW1lU2NhbGluZyhnYWluKTsKIH0K
IAogc3RkOjp2ZWN0b3I8UnRwU291cmNlPiBBdWRpb1JlY2VpdmVTdHJlYW06OkdldFNvdXJjZXMo
KSBjb25zdCB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsK
LSAgcmV0dXJuIGNoYW5uZWxfcHJveHlfLT5HZXRTb3VyY2VzKCk7CisgIHJldHVybiBjaGFubmVs
X3JlY2VpdmVfLT5HZXRTb3VyY2VzKCk7CiB9CiAKIEF1ZGlvTWl4ZXI6OlNvdXJjZTo6QXVkaW9G
cmFtZUluZm8gQXVkaW9SZWNlaXZlU3RyZWFtOjpHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCiAgICAg
aW50IHNhbXBsZV9yYXRlX2h6LAogICAgIEF1ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKSB7Ci0gIHJl
dHVybiBjaGFubmVsX3Byb3h5Xy0+R2V0QXVkaW9GcmFtZVdpdGhJbmZvKHNhbXBsZV9yYXRlX2h6
LCBhdWRpb19mcmFtZSk7CisgIHJldHVybiBjaGFubmVsX3JlY2VpdmVfLT5HZXRBdWRpb0ZyYW1l
V2l0aEluZm8oc2FtcGxlX3JhdGVfaHosIGF1ZGlvX2ZyYW1lKTsKIH0KIAogaW50IEF1ZGlvUmVj
ZWl2ZVN0cmVhbTo6U3NyYygpIGNvbnN0IHsKQEAgLTI0Niw3ICsyNTUsNyBAQCBpbnQgQXVkaW9S
ZWNlaXZlU3RyZWFtOjpTc3JjKCkgY29uc3QgewogfQogCiBpbnQgQXVkaW9SZWNlaXZlU3RyZWFt
OjpQcmVmZXJyZWRTYW1wbGVSYXRlKCkgY29uc3QgewotICByZXR1cm4gY2hhbm5lbF9wcm94eV8t
PlByZWZlcnJlZFNhbXBsZVJhdGUoKTsKKyAgcmV0dXJuIGNoYW5uZWxfcmVjZWl2ZV8tPlByZWZl
cnJlZFNhbXBsZVJhdGUoKTsKIH0KIAogaW50IEF1ZGlvUmVjZWl2ZVN0cmVhbTo6aWQoKSBjb25z
dCB7CkBAIC0yNTYsMzIgKzI2NSwyOSBAQCBpbnQgQXVkaW9SZWNlaXZlU3RyZWFtOjppZCgpIGNv
bnN0IHsKIAogYWJzbDo6b3B0aW9uYWw8U3luY2FibGU6OkluZm8+IEF1ZGlvUmVjZWl2ZVN0cmVh
bTo6R2V0SW5mbygpIGNvbnN0IHsKICAgUlRDX0RDSEVDS19SVU5fT04oJm1vZHVsZV9wcm9jZXNz
X3RocmVhZF9jaGVja2VyXyk7Ci0gIGFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBpbmZv
ID0gY2hhbm5lbF9wcm94eV8tPkdldFN5bmNJbmZvKCk7CisgIGFic2w6Om9wdGlvbmFsPFN5bmNh
YmxlOjpJbmZvPiBpbmZvID0gY2hhbm5lbF9yZWNlaXZlXy0+R2V0U3luY0luZm8oKTsKIAogICBp
ZiAoIWluZm8pCiAgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CiAKLSAgaW5mby0+Y3VycmVudF9k
ZWxheV9tcyA9IGNoYW5uZWxfcHJveHlfLT5HZXREZWxheUVzdGltYXRlKCk7CisgIGluZm8tPmN1
cnJlbnRfZGVsYXlfbXMgPSBjaGFubmVsX3JlY2VpdmVfLT5HZXREZWxheUVzdGltYXRlKCk7CiAg
IHJldHVybiBpbmZvOwogfQogCiB1aW50MzJfdCBBdWRpb1JlY2VpdmVTdHJlYW06OkdldFBsYXlv
dXRUaW1lc3RhbXAoKSBjb25zdCB7CiAgIC8vIENhbGxlZCBvbiB2aWRlbyBjYXB0dXJlIHRocmVh
ZC4KLSAgcmV0dXJuIGNoYW5uZWxfcHJveHlfLT5HZXRQbGF5b3V0VGltZXN0YW1wKCk7CisgIHJl
dHVybiBjaGFubmVsX3JlY2VpdmVfLT5HZXRQbGF5b3V0VGltZXN0YW1wKCk7CiB9CiAKIHZvaWQg
QXVkaW9SZWNlaXZlU3RyZWFtOjpTZXRNaW5pbXVtUGxheW91dERlbGF5KGludCBkZWxheV9tcykg
ewogICBSVENfRENIRUNLX1JVTl9PTigmbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfKTsK
LSAgcmV0dXJuIGNoYW5uZWxfcHJveHlfLT5TZXRNaW5pbXVtUGxheW91dERlbGF5KGRlbGF5X21z
KTsKKyAgcmV0dXJuIGNoYW5uZWxfcmVjZWl2ZV8tPlNldE1pbmltdW1QbGF5b3V0RGVsYXkoZGVs
YXlfbXMpOwogfQogCiB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6QXNzb2NpYXRlU2VuZFN0cmVh
bShBdWRpb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3
b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKLSAgaWYgKHNlbmRfc3RyZWFtKSB7Ci0gICAgY2hhbm5l
bF9wcm94eV8tPkFzc29jaWF0ZVNlbmRDaGFubmVsKHNlbmRfc3RyZWFtLT5HZXRDaGFubmVsUHJv
eHkoKSk7Ci0gIH0gZWxzZSB7Ci0gICAgY2hhbm5lbF9wcm94eV8tPkRpc2Fzc29jaWF0ZVNlbmRD
aGFubmVsKCk7Ci0gIH0KKyAgY2hhbm5lbF9yZWNlaXZlXy0+U2V0QXNzb2NpYXRlZFNlbmRDaGFu
bmVsKAorICAgICAgc2VuZF9zdHJlYW0gPyBzZW5kX3N0cmVhbS0+R2V0Q2hhbm5lbCgpIDogbnVs
bHB0cik7CiAgIGFzc29jaWF0ZWRfc2VuZF9zdHJlYW1fID0gc2VuZF9zdHJlYW07CiB9CiAKQEAg
LTI5NCw3ICszMDAsNyBAQCBib29sIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6RGVsaXZlclJ0Y3AoY29u
c3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKSB7CiAgIC8vIGNhbGxzIG9uIHRoZSB3
b3JrZXIgdGhyZWFkLiBXZSBzaG91bGQgbW92ZSB0b3dhcmRzIGFsd2F5cyB1c2luZyBhIG5ldHdv
cmsKICAgLy8gdGhyZWFkLiBUaGVuIHRoaXMgY2hlY2sgY2FuIGJlIGVuYWJsZWQuCiAgIC8vIFJU
Q19EQ0hFQ0soIXRocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1
cm4gY2hhbm5lbF9wcm94eV8tPlJlY2VpdmVkUlRDUFBhY2tldChwYWNrZXQsIGxlbmd0aCk7Cisg
IHJldHVybiBjaGFubmVsX3JlY2VpdmVfLT5SZWNlaXZlZFJUQ1BQYWNrZXQocGFja2V0LCBsZW5n
dGgpOwogfQogCiB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6T25SdHBQYWNrZXQoY29uc3QgUnRw
UGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgewpAQCAtMzAyLDcgKzMwOCw3IEBAIHZvaWQgQXVkaW9S
ZWNlaXZlU3RyZWFtOjpPblJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0
KSB7CiAgIC8vIGNhbGxzIG9uIHRoZSB3b3JrZXIgdGhyZWFkLiBXZSBzaG91bGQgbW92ZSB0b3dh
cmRzIGFsd2F5cyB1c2luZyBhIG5ldHdvcmsKICAgLy8gdGhyZWFkLiBUaGVuIHRoaXMgY2hlY2sg
Y2FuIGJlIGVuYWJsZWQuCiAgIC8vIFJUQ19EQ0hFQ0soIXRocmVhZF9jaGVja2VyXy5DYWxsZWRP
blZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsX3Byb3h5Xy0+T25SdHBQYWNrZXQocGFja2V0KTsK
KyAgY2hhbm5lbF9yZWNlaXZlXy0+T25SdHBQYWNrZXQocGFja2V0KTsKIH0KIAogY29uc3Qgd2Vi
cnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyYgQXVkaW9SZWNlaXZlU3RyZWFtOjpjb25m
aWcoKSBjb25zdCB7CkBAIC0zMjgsNyArMzM0LDcgQEAgdm9pZCBBdWRpb1JlY2VpdmVTdHJlYW06
OkNvbmZpZ3VyZVN0cmVhbShBdWRpb1JlY2VpdmVTdHJlYW0qIHN0cmVhbSwKICAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiQXVkaW9SZWNlaXZlU3RyZWFtOjpDb25maWd1cmVTdHJlYW06ICIKICAgICAg
ICAgICAgICAgICAgICA8PCBuZXdfY29uZmlnLlRvU3RyaW5nKCk7CiAgIFJUQ19EQ0hFQ0soc3Ry
ZWFtKTsKLSAgY29uc3QgYXV0byYgY2hhbm5lbF9wcm94eSA9IHN0cmVhbS0+Y2hhbm5lbF9wcm94
eV87CisgIGNvbnN0IGF1dG8mIGNoYW5uZWxfcmVjZWl2ZSA9IHN0cmVhbS0+Y2hhbm5lbF9yZWNl
aXZlXzsKICAgY29uc3QgYXV0byYgb2xkX2NvbmZpZyA9IHN0cmVhbS0+Y29uZmlnXzsKIAogICAv
LyBDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgd2hpY2ggY2Fubm90IGJlIGNoYW5nZWQuCkBAIC0z
NDIsNyArMzQ4LDcgQEAgdm9pZCBBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZ3VyZVN0cmVhbShB
dWRpb1JlY2VpdmVTdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICBvbGRfY29uZmlnLmRlY29k
ZXJfZmFjdG9yeSA9PSBuZXdfY29uZmlnLmRlY29kZXJfZmFjdG9yeSk7CiAKICAgaWYgKGZpcnN0
X3RpbWUgfHwgb2xkX2NvbmZpZy5ydHAubG9jYWxfc3NyYyAhPSBuZXdfY29uZmlnLnJ0cC5sb2Nh
bF9zc3JjKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0TG9jYWxTU1JDKG5ld19jb25maWcucnRw
LmxvY2FsX3NzcmMpOworICAgIGNoYW5uZWxfcmVjZWl2ZS0+U2V0TG9jYWxTU1JDKG5ld19jb25m
aWcucnRwLmxvY2FsX3NzcmMpOwogICB9CiAKICAgaWYgKCFmaXJzdF90aW1lKSB7CkBAIC0zNTQs
MTEgKzM2MCwxMSBAQCB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlndXJlU3RyZWFtKEF1
ZGlvUmVjZWl2ZVN0cmVhbSogc3RyZWFtLAogICAvLyB1c2luZyB0aGUgYWN0dWFsIHBhY2tldCBz
aXplIGZvciB0aGUgY29uZmlndXJlZCBjb2RlYy4KICAgaWYgKGZpcnN0X3RpbWUgfHwgb2xkX2Nv
bmZpZy5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyAhPQogICAgICAgICAgICAgICAgICAgICAgICAg
bmV3X2NvbmZpZy5ydHAubmFjay5ydHBfaGlzdG9yeV9tcykgewotICAgIGNoYW5uZWxfcHJveHkt
PlNldE5BQ0tTdGF0dXMobmV3X2NvbmZpZy5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyAhPSAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NvbmZpZy5ydHAubmFjay5ydHBf
aGlzdG9yeV9tcyAvIDIwKTsKKyAgICBjaGFubmVsX3JlY2VpdmUtPlNldE5BQ0tTdGF0dXMobmV3
X2NvbmZpZy5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyAhPSAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXdfY29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zIC8gMjAp
OwogICB9CiAgIGlmIChmaXJzdF90aW1lIHx8IG9sZF9jb25maWcuZGVjb2Rlcl9tYXAgIT0gbmV3
X2NvbmZpZy5kZWNvZGVyX21hcCkgewotICAgIGNoYW5uZWxfcHJveHktPlNldFJlY2VpdmVDb2Rl
Y3MobmV3X2NvbmZpZy5kZWNvZGVyX21hcCk7CisgICAgY2hhbm5lbF9yZWNlaXZlLT5TZXRSZWNl
aXZlQ29kZWNzKG5ld19jb25maWcuZGVjb2Rlcl9tYXApOwogICB9CiAKICAgc3RyZWFtLT5jb25m
aWdfID0gbmV3X2NvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19yZWNlaXZlX3N0cmVh
bS5oCmluZGV4IGU5ODJiMDRkNTRiOGU3ZjI3M2YzMzg5NTlkODIwNjc2YThhOTRlYjYuLjg2YmNi
MWM2YTJkYjQyNWVmNDZiMjM2ZTg2YjQyNmIwOWUzZDczMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3Ry
ZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVk
aW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW0uaApAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgImFw
aS9ydHBfaGVhZGVycy5oIgogI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3N0YXRlLmgiCiAjaW5jbHVk
ZSAiY2FsbC9hdWRpb19yZWNlaXZlX3N0cmVhbS5oIgotI2luY2x1ZGUgImNhbGwvcnRwX3BhY2tl
dF9zaW5rX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImNhbGwvc3luY2FibGUuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFk
X2NoZWNrZXIuaCIKQEAgLTMyLDcgKzMxLDcgQEAgY2xhc3MgUnRwU3RyZWFtUmVjZWl2ZXJDb250
cm9sbGVySW50ZXJmYWNlOwogY2xhc3MgUnRwU3RyZWFtUmVjZWl2ZXJJbnRlcmZhY2U7CiAKIG5h
bWVzcGFjZSB2b2UgewotY2xhc3MgQ2hhbm5lbFJlY2VpdmVQcm94eTsKK2NsYXNzIENoYW5uZWxS
ZWNlaXZlSW50ZXJmYWNlOwogfSAgLy8gbmFtZXNwYWNlIHZvZQogCiBuYW1lc3BhY2UgaW50ZXJu
YWwgewpAQCAtNDgsMTMgKzQ3LDE0IEBAIGNsYXNzIEF1ZGlvUmVjZWl2ZVN0cmVhbSBmaW5hbCA6
IHB1YmxpYyB3ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHdlYnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFtOjpDb25maWcmIGNvbmZpZywKICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3Rh
dGU+JiBhdWRpb19zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6UnRjRXZlbnRM
b2cqIGV2ZW50X2xvZyk7Ci0gIC8vIEZvciB1bml0IHRlc3RzLCB3aGljaCBuZWVkIHRvIHN1cHBs
eSBhIG1vY2sgY2hhbm5lbCBwcm94eS4KLSAgQXVkaW9SZWNlaXZlU3RyZWFtKFJ0cFN0cmVhbVJl
Y2VpdmVyQ29udHJvbGxlckludGVyZmFjZSogcmVjZWl2ZXJfY29udHJvbGxlciwKLSAgICAgICAg
ICAgICAgICAgICAgIFBhY2tldFJvdXRlciogcGFja2V0X3JvdXRlciwKLSAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFtOjpDb25maWcmIGNvbmZpZywK
LSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1
ZGlvU3RhdGU+JiBhdWRpb19zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6UnRj
RXZlbnRMb2cqIGV2ZW50X2xvZywKLSAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjx2b2U6OkNoYW5uZWxSZWNlaXZlUHJveHk+IGNoYW5uZWxfcHJveHkpOworICAvLyBGb3IgdW5p
dCB0ZXN0cywgd2hpY2ggbmVlZCB0byBzdXBwbHkgYSBtb2NrIGNoYW5uZWwgcmVjZWl2ZS4KKyAg
QXVkaW9SZWNlaXZlU3RyZWFtKAorICAgICAgUnRwU3RyZWFtUmVjZWl2ZXJDb250cm9sbGVySW50
ZXJmYWNlKiByZWNlaXZlcl9jb250cm9sbGVyLAorICAgICAgUGFja2V0Um91dGVyKiBwYWNrZXRf
cm91dGVyLAorICAgICAgY29uc3Qgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyYg
Y29uZmlnLAorICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0
ZT4mIGF1ZGlvX3N0YXRlLAorICAgICAgd2VicnRjOjpSdGNFdmVudExvZyogZXZlbnRfbG9nLAor
ICAgICAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2U+IGNoYW5u
ZWxfcmVjZWl2ZSk7CiAgIH5BdWRpb1JlY2VpdmVTdHJlYW0oKSBvdmVycmlkZTsKIAogICAvLyB3
ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0cmVhbSBpbXBsZW1lbnRhdGlvbi4KQEAgLTEwMSw3ICsxMDEs
NyBAQCBjbGFzcyBBdWRpb1JlY2VpdmVTdHJlYW0gZmluYWwgOiBwdWJsaWMgd2VicnRjOjpBdWRp
b1JlY2VpdmVTdHJlYW0sCiAgIHJ0Yzo6VGhyZWFkQ2hlY2tlciBtb2R1bGVfcHJvY2Vzc190aHJl
YWRfY2hlY2tlcl87CiAgIHdlYnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFtOjpDb25maWcgY29uZmln
XzsKICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4gYXVkaW9fc3RhdGVf
OwotICBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsUmVjZWl2ZVByb3h5PiBjaGFubmVsX3By
b3h5XzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFJlY2VpdmVJbnRlcmZh
Y2U+IGNoYW5uZWxfcmVjZWl2ZV87CiAgIEF1ZGlvU2VuZFN0cmVhbSogYXNzb2NpYXRlZF9zZW5k
X3N0cmVhbV8gPSBudWxscHRyOwogCiAgIGJvb2wgcGxheWluZ18gUlRDX0dVQVJERURfQlkod29y
a2VyX3RocmVhZF9jaGVja2VyXykgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVk
aW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW1fdW5pdHRlc3QuY2MKaW5kZXggOTdjNDJjNDM4M2Y4NDM2
MzQyYjQ3NzAzNmY2ZGM1N2YwNTk3OTQzMy4uNzQyMjgxMDg1NjY1MTUyNzI4ZWZjMmQxNzg5YTgz
YTcxMzY1NDY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW1fdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2
ZV9zdHJlYW1fdW5pdHRlc3QuY2MKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+
CiAKICNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX2F1ZGlvX21peGVyLmgiCisjaW5jbHVkZSAiYXBp
L3Rlc3QvbW9ja19mcmFtZV9kZWNyeXB0b3IuaCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19yZWNl
aXZlX3N0cmVhbS5oIgogI2luY2x1ZGUgImF1ZGlvL2NvbnZlcnNpb24uaCIKICNpbmNsdWRlICJh
dWRpby9tb2NrX3ZvZV9jaGFubmVsX3Byb3h5LmgiCkBAIC04MiwxNiArODMsMTYgQEAgc3RydWN0
IENvbmZpZ0hlbHBlciB7CiAgICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8dGVzdGlu
Zzo6TmljZU1vY2s8TW9ja0F1ZGlvRGV2aWNlTW9kdWxlPj4oKTsKICAgICBhdWRpb19zdGF0ZV8g
PSBBdWRpb1N0YXRlOjpDcmVhdGUoY29uZmlnKTsKIAotICAgIGNoYW5uZWxfcHJveHlfID0gbmV3
IHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja0NoYW5uZWxSZWNlaXZlUHJveHk+KCk7Ci0gICAgRVhQ
RUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXRMb2NhbFNTUkMoa0xvY2FsU3NyYykpLlRpbWVz
KDEpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgU2V0TkFDS1N0YXR1cyh0cnVl
LCAxNSkpLlRpbWVzKDEpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywKKyAgICBj
aGFubmVsX3JlY2VpdmVfID0gbmV3IHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja0NoYW5uZWxSZWNl
aXZlPigpOworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3JlY2VpdmVfLCBTZXRMb2NhbFNTUkMo
a0xvY2FsU3NyYykpLlRpbWVzKDEpOworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3JlY2VpdmVf
LCBTZXROQUNLU3RhdHVzKHRydWUsIDE1KSkuVGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwoKmNo
YW5uZWxfcmVjZWl2ZV8sCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJSZWNlaXZlckNvbmdlc3Rp
b25Db250cm9sT2JqZWN0cygmcGFja2V0X3JvdXRlcl8pKQogICAgICAgICAuVGltZXMoMSk7Ci0g
ICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBSZXNldFJlY2VpdmVyQ29uZ2VzdGlvbkNv
bnRyb2xPYmplY3RzKCkpCisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIFJlc2V0
UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSkKICAgICAgICAgLlRpbWVzKDEpOwot
ICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgRGlzYXNzb2NpYXRlU2VuZENoYW5uZWwo
KSkuVGltZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXRSZWNlaXZl
Q29kZWNzKF8pKQorICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3JlY2VpdmVfLCBTZXRBc3NvY2lh
dGVkU2VuZENoYW5uZWwobnVsbHB0cikpLlRpbWVzKDEpOworICAgIEVYUEVDVF9DQUxMKCpjaGFu
bmVsX3JlY2VpdmVfLCBTZXRSZWNlaXZlQ29kZWNzKF8pKQogICAgICAgICAuV2lsbFJlcGVhdGVk
bHkoSW52b2tlKFtdKGNvbnN0IHN0ZDo6bWFwPGludCwgU2RwQXVkaW9Gb3JtYXQ+JiBjb2RlY3Mp
IHsKICAgICAgICAgICBFWFBFQ1RfVEhBVChjb2RlY3MsIHRlc3Rpbmc6OklzRW1wdHkoKSk7CiAg
ICAgICAgIH0pKTsKQEAgLTExMywzMyArMTE0LDMzIEBAIHN0cnVjdCBDb25maWdIZWxwZXIgewog
ICAgICAgICBuZXcgaW50ZXJuYWw6OkF1ZGlvUmVjZWl2ZVN0cmVhbSgKICAgICAgICAgICAgICZy
dHBfc3RyZWFtX3JlY2VpdmVyX2NvbnRyb2xsZXJfLCAmcGFja2V0X3JvdXRlcl8sIHN0cmVhbV9j
b25maWdfLAogICAgICAgICAgICAgYXVkaW9fc3RhdGVfLCAmZXZlbnRfbG9nXywKLSAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxSZWNlaXZlUHJveHk+KGNoYW5uZWxfcHJv
eHlfKSkpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFJlY2VpdmVJ
bnRlcmZhY2U+KGNoYW5uZWxfcmVjZWl2ZV8pKSk7CiAgIH0KIAogICBBdWRpb1JlY2VpdmVTdHJl
YW06OkNvbmZpZyYgY29uZmlnKCkgeyByZXR1cm4gc3RyZWFtX2NvbmZpZ187IH0KICAgcnRjOjpz
Y29wZWRfcmVmcHRyPE1vY2tBdWRpb01peGVyPiBhdWRpb19taXhlcigpIHsgcmV0dXJuIGF1ZGlv
X21peGVyXzsgfQotICBNb2NrQ2hhbm5lbFJlY2VpdmVQcm94eSogY2hhbm5lbF9wcm94eSgpIHsg
cmV0dXJuIGNoYW5uZWxfcHJveHlfOyB9CisgIE1vY2tDaGFubmVsUmVjZWl2ZSogY2hhbm5lbF9y
ZWNlaXZlKCkgeyByZXR1cm4gY2hhbm5lbF9yZWNlaXZlXzsgfQogCiAgIHZvaWQgU2V0dXBNb2Nr
Rm9yR2V0U3RhdHMoKSB7CiAgICAgdXNpbmcgdGVzdGluZzo6RG9BbGw7CiAgICAgdXNpbmcgdGVz
dGluZzo6U2V0QXJnUG9pbnRlZTsKIAotICAgIEFTU0VSVF9UUlVFKGNoYW5uZWxfcHJveHlfKTsK
LSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIEdldFJUQ1BTdGF0aXN0aWNzKCkpCisg
ICAgQVNTRVJUX1RSVUUoY2hhbm5lbF9yZWNlaXZlXyk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5u
ZWxfcmVjZWl2ZV8sIEdldFJUQ1BTdGF0aXN0aWNzKCkpCiAgICAgICAgIC5XaWxsT25jZShSZXR1
cm4oa0NhbGxTdGF0cykpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgR2V0RGVs
YXlFc3RpbWF0ZSgpKQorICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3JlY2VpdmVfLCBHZXREZWxh
eUVzdGltYXRlKCkpCiAgICAgICAgIC5XaWxsT25jZShSZXR1cm4oa0ppdHRlckJ1ZmZlckRlbGF5
ICsga1BsYXlvdXRCdWZmZXJEZWxheSkpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5
XywgR2V0U3BlZWNoT3V0cHV0TGV2ZWxGdWxsUmFuZ2UoKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hh
bm5lbF9yZWNlaXZlXywgR2V0U3BlZWNoT3V0cHV0TGV2ZWxGdWxsUmFuZ2UoKSkKICAgICAgICAg
LldpbGxPbmNlKFJldHVybihrU3BlZWNoT3V0cHV0TGV2ZWwpKTsKLSAgICBFWFBFQ1RfQ0FMTCgq
Y2hhbm5lbF9wcm94eV8sIEdldFRvdGFsT3V0cHV0RW5lcmd5KCkpCisgICAgRVhQRUNUX0NBTEwo
KmNoYW5uZWxfcmVjZWl2ZV8sIEdldFRvdGFsT3V0cHV0RW5lcmd5KCkpCiAgICAgICAgIC5XaWxs
T25jZShSZXR1cm4oa1RvdGFsT3V0cHV0RW5lcmd5KSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5u
ZWxfcHJveHlfLCBHZXRUb3RhbE91dHB1dER1cmF0aW9uKCkpCisgICAgRVhQRUNUX0NBTEwoKmNo
YW5uZWxfcmVjZWl2ZV8sIEdldFRvdGFsT3V0cHV0RHVyYXRpb24oKSkKICAgICAgICAgLldpbGxP
bmNlKFJldHVybihrVG90YWxPdXRwdXREdXJhdGlvbikpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFu
bmVsX3Byb3h5XywgR2V0TmV0d29ya1N0YXRpc3RpY3MoKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hh
bm5lbF9yZWNlaXZlXywgR2V0TmV0d29ya1N0YXRpc3RpY3MoKSkKICAgICAgICAgLldpbGxPbmNl
KFJldHVybihrTmV0d29ya1N0YXRzKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlf
LCBHZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKCkpCisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxf
cmVjZWl2ZV8sIEdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoKSkKICAgICAgICAgLldpbGxPbmNl
KFJldHVybihrQXVkaW9EZWNvZGVTdGF0cykpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3By
b3h5XywgR2V0UmVjQ29kZWMoXykpCisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8s
IEdldFJlY0NvZGVjKF8pKQogICAgICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0QXJnUG9pbnRlZTww
PihrQ29kZWNJbnN0KSwgUmV0dXJuKHRydWUpKSk7CiAgIH0KIApAQCAtMTQ5LDcgKzE1MCw3IEBA
IHN0cnVjdCBDb25maWdIZWxwZXIgewogICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9TdGF0ZT4g
YXVkaW9fc3RhdGVfOwogICBydGM6OnNjb3BlZF9yZWZwdHI8TW9ja0F1ZGlvTWl4ZXI+IGF1ZGlv
X21peGVyXzsKICAgQXVkaW9SZWNlaXZlU3RyZWFtOjpDb25maWcgc3RyZWFtX2NvbmZpZ187Ci0g
IHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja0NoYW5uZWxSZWNlaXZlUHJveHk+KiBjaGFubmVsX3By
b3h5XyA9IG51bGxwdHI7CisgIHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja0NoYW5uZWxSZWNlaXZl
PiogY2hhbm5lbF9yZWNlaXZlXyA9IG51bGxwdHI7CiAgIFJ0cFN0cmVhbVJlY2VpdmVyQ29udHJv
bGxlciBydHBfc3RyZWFtX3JlY2VpdmVyX2NvbnRyb2xsZXJfOwogICBNb2NrVHJhbnNwb3J0IHJ0
Y3Bfc2VuZF90cmFuc3BvcnRfOwogfTsKQEAgLTIxNiw3ICsyMTcsNyBAQCBURVNUKEF1ZGlvUmVj
ZWl2ZVN0cmVhbVRlc3QsIENvbmZpZ1RvU3RyaW5nKSB7CiAgICAgICAie3J0cDoge3JlbW90ZV9z
c3JjOiAxMjM0LCBsb2NhbF9zc3JjOiA1Njc4LCB0cmFuc3BvcnRfY2M6IG9mZiwgbmFjazogIgog
ICAgICAgIntydHBfaGlzdG9yeV9tczogMH0sIGV4dGVuc2lvbnM6IFt7dXJpOiAiCiAgICAgICAi
dXJuOmlldGY6cGFyYW1zOnJ0cC1oZHJleHQ6c3NyYy1hdWRpby1sZXZlbCwgaWQ6IDN9XX0sICIK
LSAgICAgICJydGNwX3NlbmRfdHJhbnNwb3J0OiBudWxsfSIsCisgICAgICAicnRjcF9zZW5kX3Ry
YW5zcG9ydDogbnVsbCwgbWVkaWFfdHJhbnNwb3J0OiBudWxsfSIsCiAgICAgICBjb25maWcuVG9T
dHJpbmcoKSk7CiB9CiAKQEAgLTIzOCw3ICsyMzksNyBAQCBURVNUKEF1ZGlvUmVjZWl2ZVN0cmVh
bVRlc3QsIFJlY2VpdmVSdHBQYWNrZXQpIHsKICAgQVNTRVJUX1RSVUUocGFyc2VkX3BhY2tldC5Q
YXJzZSgmcnRwX3BhY2tldFswXSwgcnRwX3BhY2tldC5zaXplKCkpKTsKICAgcGFyc2VkX3BhY2tl
dC5zZXRfYXJyaXZhbF90aW1lX21zKChwYWNrZXRfdGltZV91cyArIDUwMCkgLyAxMDAwKTsKIAot
ICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfcHJveHkoKSwKKyAgRVhQRUNUX0NBTEwoKmhl
bHBlci5jaGFubmVsX3JlY2VpdmUoKSwKICAgICAgICAgICAgICAgT25SdHBQYWNrZXQodGVzdGlu
Zzo6UmVmKHBhcnNlZF9wYWNrZXQpKSk7CiAKICAgcmVjdl9zdHJlYW0tPk9uUnRwUGFja2V0KHBh
cnNlZF9wYWNrZXQpOwpAQCAtMjQ5LDcgKzI1MCw3IEBAIFRFU1QoQXVkaW9SZWNlaXZlU3RyZWFt
VGVzdCwgUmVjZWl2ZVJ0Y3BQYWNrZXQpIHsKICAgaGVscGVyLmNvbmZpZygpLnJ0cC50cmFuc3Bv
cnRfY2MgPSB0cnVlOwogICBhdXRvIHJlY3Zfc3RyZWFtID0gaGVscGVyLkNyZWF0ZUF1ZGlvUmVj
ZWl2ZVN0cmVhbSgpOwogICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBydGNwX3BhY2tldCA9IENyZWF0
ZVJ0Y3BTZW5kZXJSZXBvcnQoKTsKLSAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3Byb3h5
KCksCisgIEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9yZWNlaXZlKCksCiAgICAgICAgICAg
ICAgIFJlY2VpdmVkUlRDUFBhY2tldCgmcnRjcF9wYWNrZXRbMF0sIHJ0Y3BfcGFja2V0LnNpemUo
KSkpCiAgICAgICAuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKICAgRVhQRUNUX1RSVUUocmVjdl9z
dHJlYW0tPkRlbGl2ZXJSdGNwKCZydGNwX3BhY2tldFswXSwgcnRjcF9wYWNrZXQuc2l6ZSgpKSk7
CkBAIC0zMTEsNyArMzEyLDcgQEAgVEVTVChBdWRpb1JlY2VpdmVTdHJlYW1UZXN0LCBHZXRTdGF0
cykgewogVEVTVChBdWRpb1JlY2VpdmVTdHJlYW1UZXN0LCBTZXRHYWluKSB7CiAgIENvbmZpZ0hl
bHBlciBoZWxwZXI7CiAgIGF1dG8gcmVjdl9zdHJlYW0gPSBoZWxwZXIuQ3JlYXRlQXVkaW9SZWNl
aXZlU3RyZWFtKCk7Ci0gIEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9wcm94eSgpLAorICBF
WFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfcmVjZWl2ZSgpLAogICAgICAgICAgICAgICBTZXRD
aGFubmVsT3V0cHV0Vm9sdW1lU2NhbGluZyhGbG9hdEVxKDAuNzY1ZikpKTsKICAgcmVjdl9zdHJl
YW0tPlNldEdhaW4oMC43NjVmKTsKIH0KQEAgLTMyMiwxMCArMzIzLDEwIEBAIFRFU1QoQXVkaW9S
ZWNlaXZlU3RyZWFtVGVzdCwgU3RyZWFtc1Nob3VsZEJlQWRkZWRUb01peGVyT25jZU9uU3RhcnQp
IHsKICAgYXV0byByZWN2X3N0cmVhbTEgPSBoZWxwZXIxLkNyZWF0ZUF1ZGlvUmVjZWl2ZVN0cmVh
bSgpOwogICBhdXRvIHJlY3Zfc3RyZWFtMiA9IGhlbHBlcjIuQ3JlYXRlQXVkaW9SZWNlaXZlU3Ry
ZWFtKCk7CiAKLSAgRVhQRUNUX0NBTEwoKmhlbHBlcjEuY2hhbm5lbF9wcm94eSgpLCBTdGFydFBs
YXlvdXQoKSkuVGltZXMoMSk7Ci0gIEVYUEVDVF9DQUxMKCpoZWxwZXIyLmNoYW5uZWxfcHJveHko
KSwgU3RhcnRQbGF5b3V0KCkpLlRpbWVzKDEpOwotICBFWFBFQ1RfQ0FMTCgqaGVscGVyMS5jaGFu
bmVsX3Byb3h5KCksIFN0b3BQbGF5b3V0KCkpLlRpbWVzKDEpOwotICBFWFBFQ1RfQ0FMTCgqaGVs
cGVyMi5jaGFubmVsX3Byb3h5KCksIFN0b3BQbGF5b3V0KCkpLlRpbWVzKDEpOworICBFWFBFQ1Rf
Q0FMTCgqaGVscGVyMS5jaGFubmVsX3JlY2VpdmUoKSwgU3RhcnRQbGF5b3V0KCkpLlRpbWVzKDEp
OworICBFWFBFQ1RfQ0FMTCgqaGVscGVyMi5jaGFubmVsX3JlY2VpdmUoKSwgU3RhcnRQbGF5b3V0
KCkpLlRpbWVzKDEpOworICBFWFBFQ1RfQ0FMTCgqaGVscGVyMS5jaGFubmVsX3JlY2VpdmUoKSwg
U3RvcFBsYXlvdXQoKSkuVGltZXMoMSk7CisgIEVYUEVDVF9DQUxMKCpoZWxwZXIyLmNoYW5uZWxf
cmVjZWl2ZSgpLCBTdG9wUGxheW91dCgpKS5UaW1lcygxKTsKICAgRVhQRUNUX0NBTEwoKmhlbHBl
cjEuYXVkaW9fbWl4ZXIoKSwgQWRkU291cmNlKHJlY3Zfc3RyZWFtMS5nZXQoKSkpCiAgICAgICAu
V2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKICAgRVhQRUNUX0NBTEwoKmhlbHBlcjEuYXVkaW9fbWl4
ZXIoKSwgQWRkU291cmNlKHJlY3Zfc3RyZWFtMi5nZXQoKSkpCkBAIC0zNjYsMTIgKzM2NywzMiBA
QCBURVNUKEF1ZGlvUmVjZWl2ZVN0cmVhbVRlc3QsIFJlY29uZmlndXJlV2l0aFVwZGF0ZWRDb25m
aWcpIHsKICAgICAgICAgICAgICAgICAgICBrVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJJZCArIDEp
KTsKICAgbmV3X2NvbmZpZy5kZWNvZGVyX21hcC5lbXBsYWNlKDEsIFNkcEF1ZGlvRm9ybWF0KCJm
b28iLCA4MDAwLCAxKSk7CiAKLSAgTW9ja0NoYW5uZWxSZWNlaXZlUHJveHkmIGNoYW5uZWxfcHJv
eHkgPSAqaGVscGVyLmNoYW5uZWxfcHJveHkoKTsKLSAgRVhQRUNUX0NBTEwoY2hhbm5lbF9wcm94
eSwgU2V0TG9jYWxTU1JDKGtMb2NhbFNzcmMgKyAxKSkuVGltZXMoMSk7Ci0gIEVYUEVDVF9DQUxM
KGNoYW5uZWxfcHJveHksIFNldE5BQ0tTdGF0dXModHJ1ZSwgMTUgKyAxKSkuVGltZXMoMSk7Ci0g
IEVYUEVDVF9DQUxMKGNoYW5uZWxfcHJveHksIFNldFJlY2VpdmVDb2RlY3MobmV3X2NvbmZpZy5k
ZWNvZGVyX21hcCkpOworICBNb2NrQ2hhbm5lbFJlY2VpdmUmIGNoYW5uZWxfcmVjZWl2ZSA9ICpo
ZWxwZXIuY2hhbm5lbF9yZWNlaXZlKCk7CisgIEVYUEVDVF9DQUxMKGNoYW5uZWxfcmVjZWl2ZSwg
U2V0TG9jYWxTU1JDKGtMb2NhbFNzcmMgKyAxKSkuVGltZXMoMSk7CisgIEVYUEVDVF9DQUxMKGNo
YW5uZWxfcmVjZWl2ZSwgU2V0TkFDS1N0YXR1cyh0cnVlLCAxNSArIDEpKS5UaW1lcygxKTsKKyAg
RVhQRUNUX0NBTEwoY2hhbm5lbF9yZWNlaXZlLCBTZXRSZWNlaXZlQ29kZWNzKG5ld19jb25maWcu
ZGVjb2Rlcl9tYXApKTsKIAogICByZWN2X3N0cmVhbS0+UmVjb25maWd1cmUobmV3X2NvbmZpZyk7
CiB9CisKK1RFU1QoQXVkaW9SZWNlaXZlU3RyZWFtVGVzdCwgUmVjb25maWd1cmVXaXRoRnJhbWVE
ZWNyeXB0b3IpIHsKKyAgQ29uZmlnSGVscGVyIGhlbHBlcjsKKyAgYXV0byByZWN2X3N0cmVhbSA9
IGhlbHBlci5DcmVhdGVBdWRpb1JlY2VpdmVTdHJlYW0oKTsKKworICBhdXRvIG5ld19jb25maWdf
MCA9IGhlbHBlci5jb25maWcoKTsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9y
SW50ZXJmYWNlPiBtb2NrX2ZyYW1lX2RlY3J5cHRvcl8wKAorICAgICAgbmV3IHJ0Yzo6UmVmQ291
bnRlZE9iamVjdDxNb2NrRnJhbWVEZWNyeXB0b3I+KCkpOworICBuZXdfY29uZmlnXzAuZnJhbWVf
ZGVjcnlwdG9yID0gbW9ja19mcmFtZV9kZWNyeXB0b3JfMDsKKworICByZWN2X3N0cmVhbS0+UmVj
b25maWd1cmUobmV3X2NvbmZpZ18wKTsKKworICBhdXRvIG5ld19jb25maWdfMSA9IGhlbHBlci5j
b25maWcoKTsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBt
b2NrX2ZyYW1lX2RlY3J5cHRvcl8xKAorICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxN
b2NrRnJhbWVEZWNyeXB0b3I+KCkpOworICBuZXdfY29uZmlnXzEuZnJhbWVfZGVjcnlwdG9yID0g
bW9ja19mcmFtZV9kZWNyeXB0b3JfMTsKKyAgbmV3X2NvbmZpZ18xLmNyeXB0b19vcHRpb25zLnNm
cmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24gPSB0cnVlOworICByZWN2X3N0cmVhbS0+UmVj
b25maWd1cmUobmV3X2NvbmZpZ18xKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uY2MK
aW5kZXggZTgyMjY0YTgzY2IxY2IyODVlODNlODNhZGM0MDk1NWM2MDVlNmNiNS4uNzVlNmVmYjll
ODAwZmQwOTE4Y2NiYjViZTlmMWFmN2RhODg5MWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVk
aW9fc2VuZF9zdHJlYW0uY2MKQEAgLTE1LDEyICsxNSwyMiBAQAogI2luY2x1ZGUgPHZlY3Rvcj4K
IAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgotCisjaW5jbHVkZSAiYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19lbmNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRp
b19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zv
cm1hdC5oIgorI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgImFwaS9j
cnlwdG8vZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19z
dGF0ZS5oIgotI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfc2VuZF9wcm94eS5oIgorI2luY2x1ZGUg
ImF1ZGlvL2NoYW5uZWxfc2VuZC5oIgogI2luY2x1ZGUgImF1ZGlvL2NvbnZlcnNpb24uaCIKKyNp
bmNsdWRlICJjYWxsL3J0cF9jb25maWcuaCIKICNpbmNsdWRlICJjYWxsL3J0cF90cmFuc3BvcnRf
Y29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5oIgorI2luY2x1ZGUgImNvbW1vbl9hdWRpby92YWQv
aW5jbHVkZS92YWQuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF9hdWRpb19zZW5kX3N0cmVhbV9jb25maWcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0
Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9mdW5jdGlvbl92aWV3LmgiCkBAIC0zOCwxMzAgKzQ4LDEzMiBAQCBjb25zdGV4cHIgc2l6
ZV90IGtQYWNrZXRMb3NzVHJhY2tlck1heFdpbmRvd1NpemVNcyA9IDE1MDAwOwogY29uc3RleHBy
IHNpemVfdCBrUGFja2V0TG9zc1JhdGVNaW5OdW1BY2tlZFBhY2tldHMgPSA1MDsKIGNvbnN0ZXhw
ciBzaXplX3Qga1JlY292ZXJhYmxlUGFja2V0TG9zc1JhdGVNaW5OdW1BY2tlZFBhaXJzID0gNDA7
CiAKLXZvaWQgQ2FsbEVuY29kZXIoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFNl
bmRQcm94eT4mIGNoYW5uZWxfcHJveHksCit2b2lkIENhbGxFbmNvZGVyKGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjx2b2U6OkNoYW5uZWxTZW5kSW50ZXJmYWNlPiYgY2hhbm5lbF9zZW5kLAogICAgICAg
ICAgICAgICAgICBydGM6OkZ1bmN0aW9uVmlldzx2b2lkKEF1ZGlvRW5jb2RlciopPiBsYW1iZGEp
IHsKLSAgY2hhbm5lbF9wcm94eS0+TW9kaWZ5RW5jb2RlcihbJl0oc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvRW5jb2Rlcj4qIGVuY29kZXJfcHRyKSB7CisgIGNoYW5uZWxfc2VuZC0+TW9kaWZ5RW5jb2Rl
cihbJl0oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXJfcHRyKSB7CiAgICAg
UlRDX0RDSEVDSyhlbmNvZGVyX3B0cik7CiAgICAgbGFtYmRhKGVuY29kZXJfcHRyLT5nZXQoKSk7
CiAgIH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsU2VuZFByb3h5PiBDcmVh
dGVDaGFubmVsQW5kUHJveHkoCi0gICAgcnRjOjpUYXNrUXVldWUqIHdvcmtlcl9xdWV1ZSwKLSAg
ICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCi0gICAgUnRjcFJ0dFN0YXRz
KiBydGNwX3J0dF9zdGF0cywKLSAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAotICAgIEZyYW1l
RW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IpIHsKLSAgcmV0dXJuIGFic2w6Om1h
a2VfdW5pcXVlPHZvZTo6Q2hhbm5lbFNlbmRQcm94eT4oCi0gICAgICBhYnNsOjptYWtlX3VuaXF1
ZTx2b2U6OkNoYW5uZWxTZW5kPih3b3JrZXJfcXVldWUsIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Y3BfcnR0X3N0YXRz
LCBldmVudF9sb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmFtZV9lbmNyeXB0b3IpKTsKLX0KLX0gIC8vIG5hbWVzcGFjZQotCi0vLyBIZWxwZXIgY2xhc3Mg
dG8gdHJhY2sgdGhlIGFjdGl2ZWx5IHNlbmRpbmcgbGlmZXRpbWUgb2YgdGhpcyBzdHJlYW0uCi1j
bGFzcyBBdWRpb1NlbmRTdHJlYW06OlRpbWVkVHJhbnNwb3J0IDogcHVibGljIFRyYW5zcG9ydCB7
Ci0gcHVibGljOgotICBUaW1lZFRyYW5zcG9ydChUcmFuc3BvcnQqIHRyYW5zcG9ydCwgVGltZUlu
dGVydmFsKiB0aW1lX2ludGVydmFsKQotICAgICAgOiB0cmFuc3BvcnRfKHRyYW5zcG9ydCksIGxp
ZmV0aW1lXyh0aW1lX2ludGVydmFsKSB7fQotICBib29sIFNlbmRSdHAoY29uc3QgdWludDhfdCog
cGFja2V0LAotICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKLSAgICAgICAgICAgICAgIGNv
bnN0IFBhY2tldE9wdGlvbnMmIG9wdGlvbnMpIHsKLSAgICBpZiAobGlmZXRpbWVfKSB7Ci0gICAg
ICBsaWZldGltZV8tPkV4dGVuZCgpOwordm9pZCBVcGRhdGVFdmVudExvZ1N0cmVhbUNvbmZpZyhS
dGNFdmVudExvZyogZXZlbnRfbG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyogb2xkX2NvbmZpZykg
eworICB1c2luZyBTZW5kQ29kZWNTcGVjID0gQXVkaW9TZW5kU3RyZWFtOjpDb25maWc6OlNlbmRD
b2RlY1NwZWM7CisgIC8vIE9ubHkgdXBkYXRlIGlmIGFueSBvZiB0aGUgdGhpbmdzIHdlIGxvZyBo
YXZlIGNoYW5nZWQuCisgIGF1dG8gcGF5bG9hZF90eXBlc19lcXVhbCA9IFtdKGNvbnN0IGFic2w6
Om9wdGlvbmFsPFNlbmRDb2RlY1NwZWM+JiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxTZW5kQ29kZWNTcGVjPiYgYikgeworICAgIGlmIChh
Lmhhc192YWx1ZSgpICYmIGIuaGFzX3ZhbHVlKCkpIHsKKyAgICAgIHJldHVybiBhLT5mb3JtYXQu
bmFtZSA9PSBiLT5mb3JtYXQubmFtZSAmJgorICAgICAgICAgICAgIGEtPnBheWxvYWRfdHlwZSA9
PSBiLT5wYXlsb2FkX3R5cGU7CiAgICAgfQotICAgIHJldHVybiB0cmFuc3BvcnRfLT5TZW5kUnRw
KHBhY2tldCwgbGVuZ3RoLCBvcHRpb25zKTsKKyAgICByZXR1cm4gIWEuaGFzX3ZhbHVlKCkgJiYg
IWIuaGFzX3ZhbHVlKCk7CisgIH07CisKKyAgaWYgKG9sZF9jb25maWcgJiYgY29uZmlnLnJ0cC5z
c3JjID09IG9sZF9jb25maWctPnJ0cC5zc3JjICYmCisgICAgICBjb25maWcucnRwLmV4dGVuc2lv
bnMgPT0gb2xkX2NvbmZpZy0+cnRwLmV4dGVuc2lvbnMgJiYKKyAgICAgIHBheWxvYWRfdHlwZXNf
ZXF1YWwoY29uZmlnLnNlbmRfY29kZWNfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
b2xkX2NvbmZpZy0+c2VuZF9jb2RlY19zcGVjKSkgeworICAgIHJldHVybjsKICAgfQotICBib29s
IFNlbmRSdGNwKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IGxlbmd0aCkgewotICAgIHJl
dHVybiB0cmFuc3BvcnRfLT5TZW5kUnRjcChwYWNrZXQsIGxlbmd0aCk7CisKKyAgYXV0byBydGNs
b2dfY29uZmlnID0gYWJzbDo6bWFrZV91bmlxdWU8cnRjbG9nOjpTdHJlYW1Db25maWc+KCk7Cisg
IHJ0Y2xvZ19jb25maWctPmxvY2FsX3NzcmMgPSBjb25maWcucnRwLnNzcmM7CisgIHJ0Y2xvZ19j
b25maWctPnJ0cF9leHRlbnNpb25zID0gY29uZmlnLnJ0cC5leHRlbnNpb25zOworICBpZiAoY29u
ZmlnLnNlbmRfY29kZWNfc3BlYykgeworICAgIHJ0Y2xvZ19jb25maWctPmNvZGVjcy5lbXBsYWNl
X2JhY2soY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+Zm9ybWF0Lm5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc2VuZF9jb2RlY19zcGVjLT5wYXlsb2Fk
X3R5cGUsIDApOwogICB9Ci0gIH5UaW1lZFRyYW5zcG9ydCgpIHt9CisgIGV2ZW50X2xvZy0+TG9n
KGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnPigKKyAgICAg
IHN0ZDo6bW92ZShydGNsb2dfY29uZmlnKSkpOworfQogCi0gcHJpdmF0ZToKLSAgVHJhbnNwb3J0
KiB0cmFuc3BvcnRfOwotICBUaW1lSW50ZXJ2YWwqIGxpZmV0aW1lXzsKLX07Cit9ICAvLyBuYW1l
c3BhY2UKIAogQXVkaW9TZW5kU3RyZWFtOjpBdWRpb1NlbmRTdHJlYW0oCiAgICAgY29uc3Qgd2Vi
cnRjOjpBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyYgY29uZmlnLAogICAgIGNvbnN0IHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+JiBhdWRpb19zdGF0ZSwKICAgICBydGM6OlRh
c2tRdWV1ZSogd29ya2VyX3F1ZXVlLAogICAgIFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNz
X3RocmVhZCwKLSAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogdHJhbnNw
b3J0LAotICAgIEJpdHJhdGVBbGxvY2F0b3IqIGJpdHJhdGVfYWxsb2NhdG9yLAorICAgIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiBydHBfdHJhbnNwb3J0LAorICAgIEJpdHJh
dGVBbGxvY2F0b3JJbnRlcmZhY2UqIGJpdHJhdGVfYWxsb2NhdG9yLAogICAgIFJ0Y0V2ZW50TG9n
KiBldmVudF9sb2csCiAgICAgUnRjcFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0cywKLSAgICBjb25z
dCBhYnNsOjpvcHRpb25hbDxSdHBTdGF0ZT4mIHN1c3BlbmRlZF9ydHBfc3RhdGUsCi0gICAgVGlt
ZUludGVydmFsKiBvdmVyYWxsX2NhbGxfbGlmZXRpbWUpCisgICAgY29uc3QgYWJzbDo6b3B0aW9u
YWw8UnRwU3RhdGU+JiBzdXNwZW5kZWRfcnRwX3N0YXRlKQogICAgIDogQXVkaW9TZW5kU3RyZWFt
KGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICB3b3JrZXJfcXVldWUsCi0gICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0
LAorICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgYml0cmF0ZV9hbGxvY2F0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfbG9n
LAogICAgICAgICAgICAgICAgICAgICAgIHJ0Y3BfcnR0X3N0YXRzLAogICAgICAgICAgICAgICAg
ICAgICAgIHN1c3BlbmRlZF9ydHBfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgb3ZlcmFs
bF9jYWxsX2xpZmV0aW1lLAotICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUNoYW5uZWxBbmRQ
cm94eSh3b3JrZXJfcXVldWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnRjcF9ydHRfc3RhdHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2xvZywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmZyYW1lX2VuY3J5cHRvcikpIHt9CisgICAgICAg
ICAgICAgICAgICAgICAgdm9lOjpDcmVhdGVDaGFubmVsU2VuZCh3b3JrZXJfcXVldWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfcHJvY2Vzc190
aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25m
aWcubWVkaWFfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uZmlnLnNlbmRfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRjcF9ydHRfc3RhdHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9sb2csCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZnJhbWVfZW5jcnlwdG9yLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmNyeXB0b19vcHRp
b25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmln
LnJ0cC5leHRtYXBfYWxsb3dfbWl4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25maWcucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMpKSB7fQogCiBBdWRp
b1NlbmRTdHJlYW06OkF1ZGlvU2VuZFN0cmVhbSgKICAgICBjb25zdCB3ZWJydGM6OkF1ZGlvU2Vu
ZFN0cmVhbTo6Q29uZmlnJiBjb25maWcsCiAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6QXVkaW9TdGF0ZT4mIGF1ZGlvX3N0YXRlLAogICAgIHJ0Yzo6VGFza1F1ZXVlKiB3b3Jr
ZXJfcXVldWUsCi0gICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHRyYW5z
cG9ydCwKLSAgICBCaXRyYXRlQWxsb2NhdG9yKiBiaXRyYXRlX2FsbG9jYXRvciwKKyAgICBSdHBU
cmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogcnRwX3RyYW5zcG9ydCwKKyAgICBCaXRy
YXRlQWxsb2NhdG9ySW50ZXJmYWNlKiBiaXRyYXRlX2FsbG9jYXRvciwKICAgICBSdGNFdmVudExv
ZyogZXZlbnRfbG9nLAogICAgIFJ0Y3BSdHRTdGF0cyogcnRjcF9ydHRfc3RhdHMsCiAgICAgY29u
c3QgYWJzbDo6b3B0aW9uYWw8UnRwU3RhdGU+JiBzdXNwZW5kZWRfcnRwX3N0YXRlLAotICAgIFRp
bWVJbnRlcnZhbCogb3ZlcmFsbF9jYWxsX2xpZmV0aW1lLAotICAgIHN0ZDo6dW5pcXVlX3B0cjx2
b2U6OkNoYW5uZWxTZW5kUHJveHk+IGNoYW5uZWxfcHJveHkpCisgICAgc3RkOjp1bmlxdWVfcHRy
PHZvZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2U+IGNoYW5uZWxfc2VuZCkKICAgICA6IHdvcmtlcl9x
dWV1ZV8od29ya2VyX3F1ZXVlKSwKLSAgICAgIGNvbmZpZ18oQ29uZmlnKG51bGxwdHIpKSwKKyAg
ICAgIGNvbmZpZ18oQ29uZmlnKC8qc2VuZF90cmFuc3BvcnQ9Ki9udWxscHRyLAorICAgICAgICAg
ICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKSksCiAgICAgICBhdWRpb19z
dGF0ZV8oYXVkaW9fc3RhdGUpLAotICAgICAgY2hhbm5lbF9wcm94eV8oc3RkOjptb3ZlKGNoYW5u
ZWxfcHJveHkpKSwKKyAgICAgIGNoYW5uZWxfc2VuZF8oc3RkOjptb3ZlKGNoYW5uZWxfc2VuZCkp
LAogICAgICAgZXZlbnRfbG9nXyhldmVudF9sb2cpLAogICAgICAgYml0cmF0ZV9hbGxvY2F0b3Jf
KGJpdHJhdGVfYWxsb2NhdG9yKSwKLSAgICAgIHRyYW5zcG9ydF8odHJhbnNwb3J0KSwKKyAgICAg
IHJ0cF90cmFuc3BvcnRfKHJ0cF90cmFuc3BvcnQpLAogICAgICAgcGFja2V0X2xvc3NfdHJhY2tl
cl8oa1BhY2tldExvc3NUcmFja2VyTWF4V2luZG93U2l6ZU1zLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAga1BhY2tldExvc3NSYXRlTWluTnVtQWNrZWRQYWNrZXRzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAga1JlY292ZXJhYmxlUGFja2V0TG9zc1JhdGVNaW5OdW1BY2tlZFBhaXJz
KSwKICAgICAgIHJ0cF9ydGNwX21vZHVsZV8obnVsbHB0ciksCi0gICAgICBzdXNwZW5kZWRfcnRw
X3N0YXRlXyhzdXNwZW5kZWRfcnRwX3N0YXRlKSwKLSAgICAgIG92ZXJhbGxfY2FsbF9saWZldGlt
ZV8ob3ZlcmFsbF9jYWxsX2xpZmV0aW1lKSB7CisgICAgICBzdXNwZW5kZWRfcnRwX3N0YXRlXyhz
dXNwZW5kZWRfcnRwX3N0YXRlKSB7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkF1ZGlvU2VuZFN0
cmVhbTogIiA8PCBjb25maWcucnRwLnNzcmM7CiAgIFJUQ19EQ0hFQ0sod29ya2VyX3F1ZXVlXyk7
CiAgIFJUQ19EQ0hFQ0soYXVkaW9fc3RhdGVfKTsKLSAgUlRDX0RDSEVDSyhjaGFubmVsX3Byb3h5
Xyk7CisgIFJUQ19EQ0hFQ0soY2hhbm5lbF9zZW5kXyk7CiAgIFJUQ19EQ0hFQ0soYml0cmF0ZV9h
bGxvY2F0b3JfKTsKLSAgUlRDX0RDSEVDSyh0cmFuc3BvcnQpOwotICBSVENfRENIRUNLKG92ZXJh
bGxfY2FsbF9saWZldGltZV8pOworICAvLyBUT0RPKG5pc3NlKTogRXZlbnR1YWxseSwgd2Ugc2hv
dWxkIGhhdmUgb25seSBtZWRpYV90cmFuc3BvcnQuIEJ1dCBmb3IgdGhlCisgIC8vIHRpbWUgYmVp
bmcsIHdlIGNhbiBoYXZlIGVpdGhlci4gV2hlbiBtZWRpYSB0cmFuc3BvcnQgaXMgaW5qZWN0ZWQs
IHRoZXJlCisgIC8vIHNob3VsZCBiZSBubyBydHBfdHJhbnNwb3J0LCBhbmQgYmVsb3cgY2hlY2sg
c2hvdWxkIGJlIHN0cmVuZ3RoZW5lZCB0byBYT1IKKyAgLy8gKGVpdGhlciBydHBfdHJhbnNwb3J0
IG9yIG1lZGlhX3RyYW5zcG9ydCBidXQgbm90IGJvdGgpLgorICBSVENfRENIRUNLKHJ0cF90cmFu
c3BvcnQgfHwgY29uZmlnLm1lZGlhX3RyYW5zcG9ydCk7CiAKLSAgY2hhbm5lbF9wcm94eV8tPlNl
dFJUQ1BTdGF0dXModHJ1ZSk7Ci0gIHJ0cF9ydGNwX21vZHVsZV8gPSBjaGFubmVsX3Byb3h5Xy0+
R2V0UnRwUnRjcCgpOworICBydHBfcnRjcF9tb2R1bGVfID0gY2hhbm5lbF9zZW5kXy0+R2V0UnRw
UnRjcCgpOwogICBSVENfRENIRUNLKHJ0cF9ydGNwX21vZHVsZV8pOwogCiAgIENvbmZpZ3VyZVN0
cmVhbSh0aGlzLCBjb25maWcsIHRydWUpOwogCiAgIHBhY2VyX3RocmVhZF9jaGVja2VyXy5EZXRh
Y2hGcm9tVGhyZWFkKCk7Ci0gIC8vIFNpZ25hbCBjb25nZXN0aW9uIGNvbnRyb2xsZXIgdGhpcyBv
YmplY3QgaXMgcmVhZHkgZm9yIE9uUGFja2V0KiBjYWxsYmFja3MuCi0gIHRyYW5zcG9ydF8tPlJl
Z2lzdGVyUGFja2V0RmVlZGJhY2tPYnNlcnZlcih0aGlzKTsKKyAgaWYgKHJ0cF90cmFuc3BvcnRf
KSB7CisgICAgLy8gU2lnbmFsIGNvbmdlc3Rpb24gY29udHJvbGxlciB0aGlzIG9iamVjdCBpcyBy
ZWFkeSBmb3IgT25QYWNrZXQqCisgICAgLy8gY2FsbGJhY2tzLgorICAgIHJ0cF90cmFuc3BvcnRf
LT5SZWdpc3RlclBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIodGhpcyk7CisgIH0KIH0KIAogQXVkaW9T
ZW5kU3RyZWFtOjp+QXVkaW9TZW5kU3RyZWFtKCkgewogICBSVENfRENIRUNLKHdvcmtlcl90aHJl
YWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgUlRDX0xPRyhMU19JTkZPKSA8
PCAifkF1ZGlvU2VuZFN0cmVhbTogIiA8PCBjb25maWdfLnJ0cC5zc3JjOwogICBSVENfRENIRUNL
KCFzZW5kaW5nXyk7Ci0gIHRyYW5zcG9ydF8tPkRlUmVnaXN0ZXJQYWNrZXRGZWVkYmFja09ic2Vy
dmVyKHRoaXMpOwotICBjaGFubmVsX3Byb3h5Xy0+UmVnaXN0ZXJUcmFuc3BvcnQobnVsbHB0cik7
Ci0gIGNoYW5uZWxfcHJveHlfLT5SZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygp
OwotICAvLyBMaWZldGltZSBjYW4gb25seSBiZSB1cGRhdGVkIGFmdGVyIGRlcmVnaXN0ZXJpbmcK
LSAgLy8gfHRpbWVkX3NlbmRfdHJhbnNwb3J0X2FkYXB0ZXJffCBpbiB0aGUgdW5kZXJseWluZyBj
aGFubmVsIG9iamVjdCB0byBhdm9pZAotICAvLyBkYXRhIHJhY2VzIGluIHxhY3RpdmVfbGlmZXRp
bWVffC4KLSAgb3ZlcmFsbF9jYWxsX2xpZmV0aW1lXy0+RXh0ZW5kKGFjdGl2ZV9saWZldGltZV8p
OworICBpZiAocnRwX3RyYW5zcG9ydF8pIHsKKyAgICBydHBfdHJhbnNwb3J0Xy0+RGVSZWdpc3Rl
clBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIodGhpcyk7CisgICAgY2hhbm5lbF9zZW5kXy0+UmVzZXRT
ZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKKyAgfQogfQogCiBjb25zdCB3ZWJydGM6
OkF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnJiBBdWRpb1NlbmRTdHJlYW06OkdldENvbmZpZygpIGNv
bnN0IHsKQEAgLTE5Niw1MSArMjA4LDQyIEBAIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpDb25maWd1
cmVTdHJlYW0oCiAgICAgYm9vbCBmaXJzdF90aW1lKSB7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwg
IkF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlndXJlU3RyZWFtOiAiCiAgICAgICAgICAgICAgICAgICAg
PDwgbmV3X2NvbmZpZy5Ub1N0cmluZygpOwotICBjb25zdCBhdXRvJiBjaGFubmVsX3Byb3h5ID0g
c3RyZWFtLT5jaGFubmVsX3Byb3h5XzsKKyAgVXBkYXRlRXZlbnRMb2dTdHJlYW1Db25maWcoc3Ry
ZWFtLT5ldmVudF9sb2dfLCBuZXdfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmaXJzdF90aW1lID8gbnVsbHB0ciA6ICZzdHJlYW0tPmNvbmZpZ18pOworCisgIGNvbnN0IGF1
dG8mIGNoYW5uZWxfc2VuZCA9IHN0cmVhbS0+Y2hhbm5lbF9zZW5kXzsKICAgY29uc3QgYXV0byYg
b2xkX2NvbmZpZyA9IHN0cmVhbS0+Y29uZmlnXzsKIAorICAvLyBDb25maWd1cmF0aW9uIHBhcmFt
ZXRlcnMgd2hpY2ggY2Fubm90IGJlIGNoYW5nZWQuCisgIFJUQ19EQ0hFQ0soZmlyc3RfdGltZSB8
fAorICAgICAgICAgICAgIG9sZF9jb25maWcuc2VuZF90cmFuc3BvcnQgPT0gbmV3X2NvbmZpZy5z
ZW5kX3RyYW5zcG9ydCk7CisKICAgaWYgKGZpcnN0X3RpbWUgfHwgb2xkX2NvbmZpZy5ydHAuc3Ny
YyAhPSBuZXdfY29uZmlnLnJ0cC5zc3JjKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0TG9jYWxT
U1JDKG5ld19jb25maWcucnRwLnNzcmMpOworICAgIGNoYW5uZWxfc2VuZC0+U2V0TG9jYWxTU1JD
KG5ld19jb25maWcucnRwLnNzcmMpOwogICAgIGlmIChzdHJlYW0tPnN1c3BlbmRlZF9ydHBfc3Rh
dGVfKSB7CiAgICAgICBzdHJlYW0tPnJ0cF9ydGNwX21vZHVsZV8tPlNldFJ0cFN0YXRlKCpzdHJl
YW0tPnN1c3BlbmRlZF9ydHBfc3RhdGVfKTsKICAgICB9CiAgIH0KICAgaWYgKGZpcnN0X3RpbWUg
fHwgb2xkX2NvbmZpZy5ydHAuY19uYW1lICE9IG5ld19jb25maWcucnRwLmNfbmFtZSkgewotICAg
IGNoYW5uZWxfcHJveHktPlNldFJUQ1BfQ05BTUUobmV3X2NvbmZpZy5ydHAuY19uYW1lKTsKLSAg
fQotICAvLyBUT0RPKHNvbGVuYmVyZyk6IENvbmZpZyBOQUNLIGhpc3Rvcnkgd2luZG93ICh3aGlj
aCBpcyBhIHBhY2tldCBjb3VudCksCi0gIC8vIHVzaW5nIHRoZSBhY3R1YWwgcGFja2V0IHNpemUg
Zm9yIHRoZSBjb25maWd1cmVkIGNvZGVjLgotICBpZiAoZmlyc3RfdGltZSB8fCBvbGRfY29uZmln
LnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zICE9Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdf
Y29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0
TkFDS1N0YXR1cyhuZXdfY29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zICE9IDAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfY29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0
b3J5X21zIC8gMjApOwotICB9Ci0KLSAgaWYgKGZpcnN0X3RpbWUgfHwgbmV3X2NvbmZpZy5zZW5k
X3RyYW5zcG9ydCAhPSBvbGRfY29uZmlnLnNlbmRfdHJhbnNwb3J0KSB7Ci0gICAgaWYgKG9sZF9j
b25maWcuc2VuZF90cmFuc3BvcnQpIHsKLSAgICAgIGNoYW5uZWxfcHJveHktPlJlZ2lzdGVyVHJh
bnNwb3J0KG51bGxwdHIpOwotICAgIH0KLSAgICBpZiAobmV3X2NvbmZpZy5zZW5kX3RyYW5zcG9y
dCkgewotICAgICAgc3RyZWFtLT50aW1lZF9zZW5kX3RyYW5zcG9ydF9hZGFwdGVyXy5yZXNldChu
ZXcgVGltZWRUcmFuc3BvcnQoCi0gICAgICAgICAgbmV3X2NvbmZpZy5zZW5kX3RyYW5zcG9ydCwg
JnN0cmVhbS0+YWN0aXZlX2xpZmV0aW1lXykpOwotICAgIH0gZWxzZSB7Ci0gICAgICBzdHJlYW0t
PnRpbWVkX3NlbmRfdHJhbnNwb3J0X2FkYXB0ZXJfLnJlc2V0KG51bGxwdHIpOwotICAgIH0KLSAg
ICBjaGFubmVsX3Byb3h5LT5SZWdpc3RlclRyYW5zcG9ydCgKLSAgICAgICAgc3RyZWFtLT50aW1l
ZF9zZW5kX3RyYW5zcG9ydF9hZGFwdGVyXy5nZXQoKSk7CisgICAgY2hhbm5lbF9zZW5kLT5TZXRS
VENQX0NOQU1FKG5ld19jb25maWcucnRwLmNfbmFtZSk7CiAgIH0KIAogICAvLyBFbmFibGUgdGhl
IGZyYW1lIGVuY3J5cHRvciBpZiBhIG5ldyBmcmFtZSBlbmNyeXB0b3IgaGFzIGJlZW4gcHJvdmlk
ZWQuCiAgIGlmIChmaXJzdF90aW1lIHx8IG5ld19jb25maWcuZnJhbWVfZW5jcnlwdG9yICE9IG9s
ZF9jb25maWcuZnJhbWVfZW5jcnlwdG9yKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0RnJhbWVF
bmNyeXB0b3IobmV3X2NvbmZpZy5mcmFtZV9lbmNyeXB0b3IpOworICAgIGNoYW5uZWxfc2VuZC0+
U2V0RnJhbWVFbmNyeXB0b3IobmV3X2NvbmZpZy5mcmFtZV9lbmNyeXB0b3IpOworICB9CisKKyAg
aWYgKGZpcnN0X3RpbWUgfHwKKyAgICAgIG5ld19jb25maWcucnRwLmV4dG1hcF9hbGxvd19taXhl
ZCAhPSBvbGRfY29uZmlnLnJ0cC5leHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICBjaGFubmVsX3Nl
bmQtPlNldEV4dG1hcEFsbG93TWl4ZWQobmV3X2NvbmZpZy5ydHAuZXh0bWFwX2FsbG93X21peGVk
KTsKICAgfQogCiAgIGNvbnN0IEV4dGVuc2lvbklkcyBvbGRfaWRzID0gRmluZEV4dGVuc2lvbklk
cyhvbGRfY29uZmlnLnJ0cC5leHRlbnNpb25zKTsKICAgY29uc3QgRXh0ZW5zaW9uSWRzIG5ld19p
ZHMgPSBGaW5kRXh0ZW5zaW9uSWRzKG5ld19jb25maWcucnRwLmV4dGVuc2lvbnMpOwogICAvLyBB
dWRpbyBsZXZlbCBpbmRpY2F0aW9uCiAgIGlmIChmaXJzdF90aW1lIHx8IG5ld19pZHMuYXVkaW9f
bGV2ZWwgIT0gb2xkX2lkcy5hdWRpb19sZXZlbCkgewotICAgIGNoYW5uZWxfcHJveHktPlNldFNl
bmRBdWRpb0xldmVsSW5kaWNhdGlvblN0YXR1cyhuZXdfaWRzLmF1ZGlvX2xldmVsICE9IDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19p
ZHMuYXVkaW9fbGV2ZWwpOworICAgIGNoYW5uZWxfc2VuZC0+U2V0U2VuZEF1ZGlvTGV2ZWxJbmRp
Y2F0aW9uU3RhdHVzKG5ld19pZHMuYXVkaW9fbGV2ZWwgIT0gMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfaWRzLmF1ZGlvX2xldmVsKTsK
ICAgfQogICBib29sIHRyYW5zcG9ydF9zZXFfbnVtX2lkX2NoYW5nZWQgPQogICAgICAgbmV3X2lk
cy50cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyICE9IG9sZF9pZHMudHJhbnNwb3J0X3NlcXVlbmNl
X251bWJlcjsKQEAgLTI0OCw3ICsyNTEsNyBAQCB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmln
dXJlU3RyZWFtKAogICAgICAgKHRyYW5zcG9ydF9zZXFfbnVtX2lkX2NoYW5nZWQgJiYKICAgICAg
ICAhd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tRm9yY2VOb1RX
Q0MiKSkpIHsKICAgICBpZiAoIWZpcnN0X3RpbWUpIHsKLSAgICAgIGNoYW5uZWxfcHJveHktPlJl
c2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCk7CisgICAgICBjaGFubmVsX3NlbmQt
PlJlc2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCk7CiAgICAgfQogCiAgICAgUnRj
cEJhbmR3aWR0aE9ic2VydmVyKiBiYW5kd2lkdGhfb2JzZXJ2ZXIgPSBudWxscHRyOwpAQCAtMjU2
LDI0ICsyNTksMjYgQEAgdm9pZCBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZ3VyZVN0cmVhbSgKICAg
ICAgICAgbmV3X2lkcy50cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyICE9IDAgJiYKICAgICAgICAg
IXdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUF1ZGlvLUZvcmNlTm9UV0ND
Iik7CiAgICAgaWYgKGhhc190cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyKSB7Ci0gICAgICBjaGFu
bmVsX3Byb3h5LT5FbmFibGVTZW5kVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoCisgICAgICBjaGFu
bmVsX3NlbmQtPkVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcigKICAgICAgICAgICBu
ZXdfaWRzLnRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIpOwogICAgICAgLy8gUHJvYmluZyBpbiBh
cHBsaWNhdGlvbiBsaW1pdGVkIHJlZ2lvbiBpcyBvbmx5IHVzZWQgaW4gY29tYmluYXRpb24gd2l0
aAogICAgICAgLy8gc2VuZCBzaWRlIGNvbmdlc3Rpb24gY29udHJvbCwgd2ljaCBkZXBlbmRzIG9u
IGZlZWRiYWNrIHBhY2tldHMgd2hpY2gKICAgICAgIC8vIHJlcXVpcmVzIHRyYW5zcG9ydCBzZXF1
ZW5jZSBudW1iZXJzIHRvIGJlIGVuYWJsZWQuCi0gICAgICBzdHJlYW0tPnRyYW5zcG9ydF8tPkVu
YWJsZVBlcmlvZGljQWxyUHJvYmluZyh0cnVlKTsKLSAgICAgIGJhbmR3aWR0aF9vYnNlcnZlciA9
IHN0cmVhbS0+dHJhbnNwb3J0Xy0+R2V0QmFuZHdpZHRoT2JzZXJ2ZXIoKTsKKyAgICAgIGlmIChz
dHJlYW0tPnJ0cF90cmFuc3BvcnRfKSB7CisgICAgICAgIHN0cmVhbS0+cnRwX3RyYW5zcG9ydF8t
PkVuYWJsZVBlcmlvZGljQWxyUHJvYmluZyh0cnVlKTsKKyAgICAgICAgYmFuZHdpZHRoX29ic2Vy
dmVyID0gc3RyZWFtLT5ydHBfdHJhbnNwb3J0Xy0+R2V0QmFuZHdpZHRoT2JzZXJ2ZXIoKTsKKyAg
ICAgIH0KKyAgICB9CisgICAgaWYgKHN0cmVhbS0+cnRwX3RyYW5zcG9ydF8pIHsKKyAgICAgIGNo
YW5uZWxfc2VuZC0+UmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCisgICAg
ICAgICAgc3RyZWFtLT5ydHBfdHJhbnNwb3J0XywgYmFuZHdpZHRoX29ic2VydmVyKTsKICAgICB9
Ci0KLSAgICBjaGFubmVsX3Byb3h5LT5SZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2Jq
ZWN0cyhzdHJlYW0tPnRyYW5zcG9ydF8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoX29ic2VydmVyKTsKICAgfQotCiAg
IC8vIE1JRCBSVFAgaGVhZGVyIGV4dGVuc2lvbi4KICAgaWYgKChmaXJzdF90aW1lIHx8IG5ld19p
ZHMubWlkICE9IG9sZF9pZHMubWlkIHx8CiAgICAgICAgbmV3X2NvbmZpZy5ydHAubWlkICE9IG9s
ZF9jb25maWcucnRwLm1pZCkgJiYKICAgICAgIG5ld19pZHMubWlkICE9IDAgJiYgIW5ld19jb25m
aWcucnRwLm1pZC5lbXB0eSgpKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0TWlkKG5ld19jb25m
aWcucnRwLm1pZCwgbmV3X2lkcy5taWQpOworICAgIGNoYW5uZWxfc2VuZC0+U2V0TWlkKG5ld19j
b25maWcucnRwLm1pZCwgbmV3X2lkcy5taWQpOwogICB9CiAKICAgaWYgKCFSZWNvbmZpZ3VyZVNl
bmRDb2RlYyhzdHJlYW0sIG5ld19jb25maWcpKSB7CkBAIC0yOTYsMTYgKzMwMSwyMCBAQCB2b2lk
IEF1ZGlvU2VuZFN0cmVhbTo6U3RhcnQoKSB7CiAgICAgICBGaW5kRXh0ZW5zaW9uSWRzKGNvbmZp
Z18ucnRwLmV4dGVuc2lvbnMpLnRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgIT0gMCAmJgogICAg
ICAgIXdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUF1ZGlvLUZvcmNlTm9U
V0NDIik7CiAgIGlmIChjb25maWdfLm1pbl9iaXRyYXRlX2JwcyAhPSAtMSAmJiBjb25maWdfLm1h
eF9iaXRyYXRlX2JwcyAhPSAtMSAmJgorICAgICAgIWNvbmZpZ18uaGFzX2RzY3AgJiYKICAgICAg
IChoYXNfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciB8fAogICAgICAgICF3ZWJydGM6OmZpZWxk
X3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BdWRpby1TZW5kU2lkZUJ3ZSIpIHx8CiAgICAgICAg
d2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tQUJXRU5vVFdDQyIp
KSkgewogICAgIC8vIEF1ZGlvIEJXRSBpcyBlbmFibGVkLgotICAgIHRyYW5zcG9ydF8tPnBhY2tl
dF9zZW5kZXIoKS0+U2V0QWNjb3VudEZvckF1ZGlvUGFja2V0cyh0cnVlKTsKKyAgICBydHBfdHJh
bnNwb3J0Xy0+cGFja2V0X3NlbmRlcigpLT5TZXRBY2NvdW50Rm9yQXVkaW9QYWNrZXRzKHRydWUp
OworICAgIHJ0cF9ydGNwX21vZHVsZV8tPlNldEFzUGFydE9mQWxsb2NhdGlvbih0cnVlKTsKICAg
ICBDb25maWd1cmVCaXRyYXRlT2JzZXJ2ZXIoY29uZmlnXy5taW5fYml0cmF0ZV9icHMsIGNvbmZp
Z18ubWF4X2JpdHJhdGVfYnBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdf
LmJpdHJhdGVfcHJpb3JpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc190cmFu
c3BvcnRfc2VxdWVuY2VfbnVtYmVyKTsKKyAgfSBlbHNlIHsKKyAgICBydHBfcnRjcF9tb2R1bGVf
LT5TZXRBc1BhcnRPZkFsbG9jYXRpb24oZmFsc2UpOwogICB9Ci0gIGNoYW5uZWxfcHJveHlfLT5T
dGFydFNlbmQoKTsKKyAgY2hhbm5lbF9zZW5kXy0+U3RhcnRTZW5kKCk7CiAgIHNlbmRpbmdfID0g
dHJ1ZTsKICAgYXVkaW9fc3RhdGUoKS0+QWRkU2VuZGluZ1N0cmVhbSh0aGlzLCBlbmNvZGVyX3Nh
bXBsZV9yYXRlX2h6XywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVy
X251bV9jaGFubmVsc18pOwpAQCAtMzE4LDE0ICszMjcsMTQgQEAgdm9pZCBBdWRpb1NlbmRTdHJl
YW06OlN0b3AoKSB7CiAgIH0KIAogICBSZW1vdmVCaXRyYXRlT2JzZXJ2ZXIoKTsKLSAgY2hhbm5l
bF9wcm94eV8tPlN0b3BTZW5kKCk7CisgIGNoYW5uZWxfc2VuZF8tPlN0b3BTZW5kKCk7CiAgIHNl
bmRpbmdfID0gZmFsc2U7CiAgIGF1ZGlvX3N0YXRlKCktPlJlbW92ZVNlbmRpbmdTdHJlYW0odGhp
cyk7CiB9CiAKIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpTZW5kQXVkaW9EYXRhKHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19mcmFtZSkgewogICBSVENfQ0hFQ0tfUlVOU19TRVJJQUxJ
WkVEKCZhdWRpb19jYXB0dXJlX3JhY2VfY2hlY2tlcl8pOwotICBjaGFubmVsX3Byb3h5Xy0+UHJv
Y2Vzc0FuZEVuY29kZUF1ZGlvKHN0ZDo6bW92ZShhdWRpb19mcmFtZSkpOworICBjaGFubmVsX3Nl
bmRfLT5Qcm9jZXNzQW5kRW5jb2RlQXVkaW8oc3RkOjptb3ZlKGF1ZGlvX2ZyYW1lKSk7CiB9CiAK
IGJvb2wgQXVkaW9TZW5kU3RyZWFtOjpTZW5kVGVsZXBob25lRXZlbnQoaW50IHBheWxvYWRfdHlw
ZSwKQEAgLTMzMywxNCArMzQyLDE0IEBAIGJvb2wgQXVkaW9TZW5kU3RyZWFtOjpTZW5kVGVsZXBo
b25lRXZlbnQoaW50IHBheWxvYWRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgZHVyYXRpb25fbXMpIHsKICAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2No
ZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHJldHVybiBjaGFubmVsX3Byb3h5Xy0+
U2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUocGF5bG9hZF90eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRf
ZnJlcXVlbmN5KSAmJgotICAgICAgICAgY2hhbm5lbF9wcm94eV8tPlNlbmRUZWxlcGhvbmVFdmVu
dE91dGJhbmQoZXZlbnQsIGR1cmF0aW9uX21zKTsKKyAgcmV0dXJuIGNoYW5uZWxfc2VuZF8tPlNl
dFNlbmRUZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlKHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRfZnJl
cXVlbmN5KSAmJgorICAgICAgICAgY2hhbm5lbF9zZW5kXy0+U2VuZFRlbGVwaG9uZUV2ZW50T3V0
YmFuZChldmVudCwgZHVyYXRpb25fbXMpOwogfQogCiB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6U2V0
TXV0ZWQoYm9vbCBtdXRlZCkgewogICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8u
Q2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF9wcm94eV8tPlNldElucHV0TXV0ZSht
dXRlZCk7CisgIGNoYW5uZWxfc2VuZF8tPlNldElucHV0TXV0ZShtdXRlZCk7CiB9CiAKIHdlYnJ0
Yzo6QXVkaW9TZW5kU3RyZWFtOjpTdGF0cyBBdWRpb1NlbmRTdHJlYW06OkdldFN0YXRzKCkgY29u
c3QgewpAQCAtMzUyLDggKzM2MSw5IEBAIHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpTdGF0cyBB
dWRpb1NlbmRTdHJlYW06OkdldFN0YXRzKAogICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hl
Y2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW06
OlN0YXRzIHN0YXRzOwogICBzdGF0cy5sb2NhbF9zc3JjID0gY29uZmlnXy5ydHAuc3NyYzsKKyAg
c3RhdHMudGFyZ2V0X2JpdHJhdGVfYnBzID0gY2hhbm5lbF9zZW5kXy0+R2V0Qml0cmF0ZSgpOwog
Ci0gIHdlYnJ0Yzo6Q2FsbFNlbmRTdGF0aXN0aWNzIGNhbGxfc3RhdHMgPSBjaGFubmVsX3Byb3h5
Xy0+R2V0UlRDUFN0YXRpc3RpY3MoKTsKKyAgd2VicnRjOjpDYWxsU2VuZFN0YXRpc3RpY3MgY2Fs
bF9zdGF0cyA9IGNoYW5uZWxfc2VuZF8tPkdldFJUQ1BTdGF0aXN0aWNzKCk7CiAgIHN0YXRzLmJ5
dGVzX3NlbnQgPSBjYWxsX3N0YXRzLmJ5dGVzU2VudDsKICAgc3RhdHMucGFja2V0c19zZW50ID0g
Y2FsbF9zdGF0cy5wYWNrZXRzU2VudDsKICAgLy8gUlRUIGlzbid0IGtub3duIHVudGlsIGEgUlRD
UCByZXBvcnQgaXMgcmVjZWl2ZWQuIFVudGlsIHRoZW4sIFZvaWNlRW5naW5lCkBAIC0zNjcsNyAr
Mzc3LDcgQEAgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW06OlN0YXRzIEF1ZGlvU2VuZFN0cmVhbTo6
R2V0U3RhdHMoCiAgICAgc3RhdHMuY29kZWNfcGF5bG9hZF90eXBlID0gc3BlYy5wYXlsb2FkX3R5
cGU7CiAKICAgICAvLyBHZXQgZGF0YSBmcm9tIHRoZSBsYXN0IHJlbW90ZSBSVENQIHJlcG9ydC4K
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGJsb2NrIDogY2hhbm5lbF9wcm94eV8tPkdldFJlbW90ZVJU
Q1BSZXBvcnRCbG9ja3MoKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgYmxvY2sgOiBjaGFubmVs
X3NlbmRfLT5HZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tzKCkpIHsKICAgICAgIC8vIExvb2t1cCBy
ZXBvcnQgZm9yIHNlbmQgc3NyYyBvbmx5LgogICAgICAgaWYgKGJsb2NrLnNvdXJjZV9TU1JDID09
IHN0YXRzLmxvY2FsX3NzcmMpIHsKICAgICAgICAgc3RhdHMucGFja2V0c19sb3N0ID0gYmxvY2su
Y3VtdWxhdGl2ZV9udW1fcGFja2V0c19sb3N0OwpAQCAtMzg5LDcgKzM5OSw3IEBAIHdlYnJ0Yzo6
QXVkaW9TZW5kU3RyZWFtOjpTdGF0cyBBdWRpb1NlbmRTdHJlYW06OkdldFN0YXRzKAogICBzdGF0
cy50b3RhbF9pbnB1dF9kdXJhdGlvbiA9IGlucHV0X3N0YXRzLnRvdGFsX2R1cmF0aW9uOwogCiAg
IHN0YXRzLnR5cGluZ19ub2lzZV9kZXRlY3RlZCA9IGF1ZGlvX3N0YXRlKCktPnR5cGluZ19ub2lz
ZV9kZXRlY3RlZCgpOwotICBzdGF0cy5hbmFfc3RhdGlzdGljcyA9IGNoYW5uZWxfcHJveHlfLT5H
ZXRBTkFTdGF0aXN0aWNzKCk7CisgIHN0YXRzLmFuYV9zdGF0aXN0aWNzID0gY2hhbm5lbF9zZW5k
Xy0+R2V0QU5BU3RhdGlzdGljcygpOwogICBSVENfRENIRUNLKGF1ZGlvX3N0YXRlXy0+YXVkaW9f
cHJvY2Vzc2luZygpKTsKICAgc3RhdHMuYXBtX3N0YXRpc3RpY3MgPQogICAgICAgYXVkaW9fc3Rh
dGVfLT5hdWRpb19wcm9jZXNzaW5nKCktPkdldFN0YXRpc3RpY3MoaGFzX3JlbW90ZV90cmFja3Mp
OwpAQCAtNDA2LDI3ICs0MTYsMjQgQEAgYm9vbCBBdWRpb1NlbmRTdHJlYW06OkRlbGl2ZXJSdGNw
KGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IGxlbmd0aCkgewogICAvLyBjYWxscyBvbiB0
aGUgd29ya2VyIHRocmVhZC4gV2Ugc2hvdWxkIG1vdmUgdG93YXJkcyBhbHdheXMgdXNpbmcgYSBu
ZXR3b3JrCiAgIC8vIHRocmVhZC4gVGhlbiB0aGlzIGNoZWNrIGNhbiBiZSBlbmFibGVkLgogICAv
LyBSVENfRENIRUNLKCF3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQo
KSk7Ci0gIHJldHVybiBjaGFubmVsX3Byb3h5Xy0+UmVjZWl2ZWRSVENQUGFja2V0KHBhY2tldCwg
bGVuZ3RoKTsKKyAgcmV0dXJuIGNoYW5uZWxfc2VuZF8tPlJlY2VpdmVkUlRDUFBhY2tldChwYWNr
ZXQsIGxlbmd0aCk7CiB9CiAKLXVpbnQzMl90IEF1ZGlvU2VuZFN0cmVhbTo6T25CaXRyYXRlVXBk
YXRlZCh1aW50MzJfdCBiaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90IGZyYWN0aW9uX2xvc3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBydHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBid2VfcGVyaW9kX21zKSB7Cit1aW50MzJf
dCBBdWRpb1NlbmRTdHJlYW06Ok9uQml0cmF0ZVVwZGF0ZWQoQml0cmF0ZUFsbG9jYXRpb25VcGRh
dGUgdXBkYXRlKSB7CiAgIC8vIEEgc2VuZCBzdHJlYW0gbWF5IGJlIGFsbG9jYXRlZCBhIGJpdHJh
dGUgb2YgemVybyBpZiB0aGUgYWxsb2NhdG9yIGRlY2lkZXMKICAgLy8gdG8gZGlzYWJsZSBpdC4g
Rm9yIG5vdyB3ZSBpZ25vcmUgdGhpcyBkZWNpc2lvbiBhbmQga2VlcCBzZW5kaW5nIG9uIG1pbgog
ICAvLyBiaXRyYXRlLgotICBpZiAoYml0cmF0ZV9icHMgPT0gMCkgewotICAgIGJpdHJhdGVfYnBz
ID0gY29uZmlnXy5taW5fYml0cmF0ZV9icHM7CisgIGlmICh1cGRhdGUudGFyZ2V0X2JpdHJhdGUu
SXNaZXJvKCkpIHsKKyAgICB1cGRhdGUudGFyZ2V0X2JpdHJhdGUgPSBEYXRhUmF0ZTo6YnBzKGNv
bmZpZ18ubWluX2JpdHJhdGVfYnBzKTsKICAgfQotICBSVENfRENIRUNLX0dFKGJpdHJhdGVfYnBz
LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29uZmlnXy5taW5fYml0cmF0ZV9icHMpKTsKKyAgUlRD
X0RDSEVDS19HRSh1cGRhdGUudGFyZ2V0X2JpdHJhdGUuYnBzPGludD4oKSwgY29uZmlnXy5taW5f
Yml0cmF0ZV9icHMpOwogICAvLyBUaGUgYml0cmF0ZSBhbGxvY2F0b3IgbWlnaHQgYWxsb2NhdGUg
YW4gaGlnaGVyIHRoYW4gbWF4IGNvbmZpZ3VyZWQgYml0cmF0ZQogICAvLyBpZiB0aGVyZSBpcyBy
b29tLCB0byBhbGxvdyBmb3IsIGFzIGV4YW1wbGUsIGV4dHJhIEZFQy4gSWdub3JlIHRoYXQgZm9y
IG5vdy4KLSAgY29uc3QgdWludDMyX3QgbWF4X2JpdHJhdGVfYnBzID0gY29uZmlnXy5tYXhfYml0
cmF0ZV9icHM7Ci0gIGlmIChiaXRyYXRlX2JwcyA+IG1heF9iaXRyYXRlX2JwcykKLSAgICBiaXRy
YXRlX2JwcyA9IG1heF9iaXRyYXRlX2JwczsKKyAgY29uc3QgRGF0YVJhdGUgbWF4X2JpdHJhdGUg
PSBEYXRhUmF0ZTo6YnBzKGNvbmZpZ18ubWF4X2JpdHJhdGVfYnBzKTsKKyAgaWYgKHVwZGF0ZS50
YXJnZXRfYml0cmF0ZSA+IG1heF9iaXRyYXRlKQorICAgIHVwZGF0ZS50YXJnZXRfYml0cmF0ZSA9
IG1heF9iaXRyYXRlOwogCi0gIGNoYW5uZWxfcHJveHlfLT5TZXRCaXRyYXRlKGJpdHJhdGVfYnBz
LCBid2VfcGVyaW9kX21zKTsKKyAgY2hhbm5lbF9zZW5kXy0+T25CaXRyYXRlQWxsb2NhdGlvbih1
cGRhdGUpOwogCiAgIC8vIFRoZSBhbW91bnQgb2YgYXVkaW8gcHJvdGVjdGlvbiBpcyBub3QgZXhw
b3NlZCBieSB0aGUgZW5jb2RlciwgaGVuY2UKICAgLy8gYWx3YXlzIHJldHVybmluZyAwLgpAQCAt
NDYwLDI1ICs0NjcsMjQgQEAgdm9pZCBBdWRpb1NlbmRTdHJlYW06Ok9uUGFja2V0RmVlZGJhY2tW
ZWN0b3IoCiAgIC8vIHRoZSBwcmV2aW91c2x5IHNlbnQgdmFsdWUgaXMgbm8gbG9uZ2VyIHJlbGV2
YW50LiBUaGlzIHdpbGwgYmUgdGFrZW4gY2FyZQogICAvLyBvZiB3aXRoIHNvbWUgcmVmYWN0b3Jp
bmcgd2hpY2ggaXMgbm93IGJlaW5nIGRvbmUuCiAgIGlmIChwbHIpIHsKLSAgICBjaGFubmVsX3By
b3h5Xy0+T25Ud2NjQmFzZWRVcGxpbmtQYWNrZXRMb3NzUmF0ZSgqcGxyKTsKKyAgICBjaGFubmVs
X3NlbmRfLT5PblR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRlKCpwbHIpOwogICB9CiAgIGlm
IChycGxyKSB7Ci0gICAgY2hhbm5lbF9wcm94eV8tPk9uUmVjb3ZlcmFibGVVcGxpbmtQYWNrZXRM
b3NzUmF0ZSgqcnBscik7CisgICAgY2hhbm5lbF9zZW5kXy0+T25SZWNvdmVyYWJsZVVwbGlua1Bh
Y2tldExvc3NSYXRlKCpycGxyKTsKICAgfQogfQogCiB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6U2V0
VHJhbnNwb3J0T3ZlcmhlYWQoaW50IHRyYW5zcG9ydF9vdmVyaGVhZF9wZXJfcGFja2V0KSB7CiAg
IFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkp
OwotICBjaGFubmVsX3Byb3h5Xy0+U2V0VHJhbnNwb3J0T3ZlcmhlYWQodHJhbnNwb3J0X292ZXJo
ZWFkX3Blcl9wYWNrZXQpOworICBjaGFubmVsX3NlbmRfLT5TZXRUcmFuc3BvcnRPdmVyaGVhZCh0
cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldCk7CiB9CiAKIFJ0cFN0YXRlIEF1ZGlvU2VuZFN0
cmVhbTo6R2V0UnRwU3RhdGUoKSBjb25zdCB7CiAgIHJldHVybiBydHBfcnRjcF9tb2R1bGVfLT5H
ZXRSdHBTdGF0ZSgpOwogfQogCi1jb25zdCB2b2U6OkNoYW5uZWxTZW5kUHJveHkmIEF1ZGlvU2Vu
ZFN0cmVhbTo6R2V0Q2hhbm5lbFByb3h5KCkgY29uc3QgewotICBSVENfRENIRUNLKGNoYW5uZWxf
cHJveHlfLmdldCgpKTsKLSAgcmV0dXJuICpjaGFubmVsX3Byb3h5Xy5nZXQoKTsKK2NvbnN0IHZv
ZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2UqIEF1ZGlvU2VuZFN0cmVhbTo6R2V0Q2hhbm5lbCgpIGNv
bnN0IHsKKyAgcmV0dXJuIGNoYW5uZWxfc2VuZF8uZ2V0KCk7CiB9CiAKIGludGVybmFsOjpBdWRp
b1N0YXRlKiBBdWRpb1NlbmRTdHJlYW06OmF1ZGlvX3N0YXRlKCkgewpAQCAtNTQ5LDEyICs1NTUs
MTIgQEAgYm9vbCBBdWRpb1NlbmRTdHJlYW06OlNldHVwU2VuZENvZGVjKEF1ZGlvU2VuZFN0cmVh
bSogc3RyZWFtLAogCiAgIC8vIFdyYXAgdGhlIGVuY29kZXIgaW4gYSBhbiBBdWRpb0VuY29kZXJD
TkcsIGlmIFZBRCBpcyBlbmFibGVkLgogICBpZiAoc3BlYy5jbmdfcGF5bG9hZF90eXBlKSB7Ci0g
ICAgQXVkaW9FbmNvZGVyQ25nOjpDb25maWcgY25nX2NvbmZpZzsKKyAgICBBdWRpb0VuY29kZXJD
bmdDb25maWcgY25nX2NvbmZpZzsKICAgICBjbmdfY29uZmlnLm51bV9jaGFubmVscyA9IGVuY29k
ZXItPk51bUNoYW5uZWxzKCk7CiAgICAgY25nX2NvbmZpZy5wYXlsb2FkX3R5cGUgPSAqc3BlYy5j
bmdfcGF5bG9hZF90eXBlOwogICAgIGNuZ19jb25maWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1v
dmUoZW5jb2Rlcik7CiAgICAgY25nX2NvbmZpZy52YWRfbW9kZSA9IFZhZDo6a1ZhZE5vcm1hbDsK
LSAgICBlbmNvZGVyLnJlc2V0KG5ldyBBdWRpb0VuY29kZXJDbmcoc3RkOjptb3ZlKGNuZ19jb25m
aWcpKSk7CisgICAgZW5jb2RlciA9IENyZWF0ZUNvbWZvcnROb2lzZUVuY29kZXIoc3RkOjptb3Zl
KGNuZ19jb25maWcpKTsKIAogICAgIHN0cmVhbS0+UmVnaXN0ZXJDbmdQYXlsb2FkVHlwZSgKICAg
ICAgICAgKnNwZWMuY25nX3BheWxvYWRfdHlwZSwKQEAgLTU2Myw4ICs1NjksOCBAQCBib29sIEF1
ZGlvU2VuZFN0cmVhbTo6U2V0dXBTZW5kQ29kZWMoQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0sCiAK
ICAgc3RyZWFtLT5TdG9yZUVuY29kZXJQcm9wZXJ0aWVzKGVuY29kZXItPlNhbXBsZVJhdGVIeigp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+TnVtQ2hhbm5lbHMo
KSk7Ci0gIHN0cmVhbS0+Y2hhbm5lbF9wcm94eV8tPlNldEVuY29kZXIobmV3X2NvbmZpZy5zZW5k
X2NvZGVjX3NwZWMtPnBheWxvYWRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1vdmUoZW5jb2RlcikpOworICBzdHJlYW0tPmNoYW5uZWxfc2VuZF8tPlNl
dEVuY29kZXIobmV3X2NvbmZpZy5zZW5kX2NvZGVjX3NwZWMtPnBheWxvYWRfdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShlbmNvZGVyKSk7CiAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC02MTAsNyArNjE2LDcgQEAgYm9vbCBBdWRpb1NlbmRTdHJlYW06
OlJlY29uZmlndXJlU2VuZENvZGVjKEF1ZGlvU2VuZFN0cmVhbSogc3RyZWFtLAogICBpZiAoIWRv
X25vdF91cGRhdGVfdGFyZ2V0X2JpdHJhdGUgJiYgbmV3X3RhcmdldF9iaXRyYXRlX2JwcyAmJgog
ICAgICAgbmV3X3RhcmdldF9iaXRyYXRlX2JwcyAhPQogICAgICAgICAgIG9sZF9jb25maWcuc2Vu
ZF9jb2RlY19zcGVjLT50YXJnZXRfYml0cmF0ZV9icHMpIHsKLSAgICBDYWxsRW5jb2RlcihzdHJl
YW0tPmNoYW5uZWxfcHJveHlfLCBbJl0oQXVkaW9FbmNvZGVyKiBlbmNvZGVyKSB7CisgICAgQ2Fs
bEVuY29kZXIoc3RyZWFtLT5jaGFubmVsX3NlbmRfLCBbJl0oQXVkaW9FbmNvZGVyKiBlbmNvZGVy
KSB7CiAgICAgICBlbmNvZGVyLT5PblJlY2VpdmVkVGFyZ2V0QXVkaW9CaXRyYXRlKCpuZXdfdGFy
Z2V0X2JpdHJhdGVfYnBzKTsKICAgICB9KTsKICAgfQpAQCAtNjI4LDcgKzYzNCw3IEBAIHZvaWQg
QXVkaW9TZW5kU3RyZWFtOjpSZWNvbmZpZ3VyZUFOQShBdWRpb1NlbmRTdHJlYW0qIHN0cmVhbSwK
ICAgICByZXR1cm47CiAgIH0KICAgaWYgKG5ld19jb25maWcuYXVkaW9fbmV0d29ya19hZGFwdG9y
X2NvbmZpZykgewotICAgIENhbGxFbmNvZGVyKHN0cmVhbS0+Y2hhbm5lbF9wcm94eV8sIFsmXShB
dWRpb0VuY29kZXIqIGVuY29kZXIpIHsKKyAgICBDYWxsRW5jb2RlcihzdHJlYW0tPmNoYW5uZWxf
c2VuZF8sIFsmXShBdWRpb0VuY29kZXIqIGVuY29kZXIpIHsKICAgICAgIGlmIChlbmNvZGVyLT5F
bmFibGVBdWRpb05ldHdvcmtBZGFwdG9yKAogICAgICAgICAgICAgICAqbmV3X2NvbmZpZy5hdWRp
b19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLCBzdHJlYW0tPmV2ZW50X2xvZ18pKSB7CiAgICAgICAg
IFJUQ19ETE9HKExTX0lORk8pIDw8ICJBdWRpbyBuZXR3b3JrIGFkYXB0b3IgZW5hYmxlZCBvbiBT
U1JDICIKQEAgLTYzOCw3ICs2NDQsNyBAQCB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6UmVjb25maWd1
cmVBTkEoQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0sCiAgICAgICB9CiAgICAgfSk7CiAgIH0gZWxz
ZSB7Ci0gICAgQ2FsbEVuY29kZXIoc3RyZWFtLT5jaGFubmVsX3Byb3h5XywgWyZdKEF1ZGlvRW5j
b2RlciogZW5jb2RlcikgeworICAgIENhbGxFbmNvZGVyKHN0cmVhbS0+Y2hhbm5lbF9zZW5kXywg
WyZdKEF1ZGlvRW5jb2RlciogZW5jb2RlcikgewogICAgICAgZW5jb2Rlci0+RGlzYWJsZUF1ZGlv
TmV0d29ya0FkYXB0b3IoKTsKICAgICB9KTsKICAgICBSVENfRExPRyhMU19JTkZPKSA8PCAiQXVk
aW8gbmV0d29yayBhZGFwdG9yIGRpc2FibGVkIG9uIFNTUkMgIgpAQCAtNjYyLDcgKzY2OCw3IEBA
IHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpSZWNvbmZpZ3VyZUNORyhBdWRpb1NlbmRTdHJlYW0qIHN0
cmVhbSwKICAgfQogCiAgIC8vIFdyYXAgb3IgdW53cmFwIHRoZSBlbmNvZGVyIGluIGFuIEF1ZGlv
RW5jb2RlckNORy4KLSAgc3RyZWFtLT5jaGFubmVsX3Byb3h5Xy0+TW9kaWZ5RW5jb2RlcigKKyAg
c3RyZWFtLT5jaGFubmVsX3NlbmRfLT5Nb2RpZnlFbmNvZGVyKAogICAgICAgWyZdKHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmNvZGVyX3B0cikgewogICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9FbmNvZGVyPiBvbGRfZW5jb2RlcihzdGQ6Om1vdmUoKmVuY29kZXJfcHRyKSk7
CiAgICAgICAgIGF1dG8gc3ViX2VuY29kZXJzID0gb2xkX2VuY29kZXItPlJlY2xhaW1Db250YWlu
ZWRFbmNvZGVycygpOwpAQCAtNjc2LDEyICs2ODIsMTIgQEAgdm9pZCBBdWRpb1NlbmRTdHJlYW06
OlJlY29uZmlndXJlQ05HKEF1ZGlvU2VuZFN0cmVhbSogc3RyZWFtLAogICAgICAgICAgIG9sZF9l
bmNvZGVyID0gc3RkOjptb3ZlKHRtcCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5ld19jb25m
aWcuc2VuZF9jb2RlY19zcGVjLT5jbmdfcGF5bG9hZF90eXBlKSB7Ci0gICAgICAgICAgQXVkaW9F
bmNvZGVyQ25nOjpDb25maWcgY29uZmlnOworICAgICAgICAgIEF1ZGlvRW5jb2RlckNuZ0NvbmZp
ZyBjb25maWc7CiAgICAgICAgICAgY29uZmlnLnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKG9s
ZF9lbmNvZGVyKTsKICAgICAgICAgICBjb25maWcubnVtX2NoYW5uZWxzID0gY29uZmlnLnNwZWVj
aF9lbmNvZGVyLT5OdW1DaGFubmVscygpOwogICAgICAgICAgIGNvbmZpZy5wYXlsb2FkX3R5cGUg
PSAqbmV3X2NvbmZpZy5zZW5kX2NvZGVjX3NwZWMtPmNuZ19wYXlsb2FkX3R5cGU7CiAgICAgICAg
ICAgY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkTm9ybWFsOwotICAgICAgICAgIGVuY29kZXJf
cHRyLT5yZXNldChuZXcgQXVkaW9FbmNvZGVyQ25nKHN0ZDo6bW92ZShjb25maWcpKSk7CisgICAg
ICAgICAgKmVuY29kZXJfcHRyID0gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2RlcihzdGQ6Om1vdmUo
Y29uZmlnKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgKmVuY29kZXJfcHRyID0gc3Rk
Ojptb3ZlKG9sZF9lbmNvZGVyKTsKICAgICAgICAgfQpAQCAtNzA4LDEzICs3MTQsMTggQEAgdm9p
ZCBBdWRpb1NlbmRTdHJlYW06OlJlY29uZmlndXJlQml0cmF0ZU9ic2VydmVyKAogCiAgIGJvb2wg
aGFzX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgPSBuZXdfdHJhbnNwb3J0X3NlcV9udW1faWQg
IT0gMDsKICAgaWYgKG5ld19jb25maWcubWluX2JpdHJhdGVfYnBzICE9IC0xICYmIG5ld19jb25m
aWcubWF4X2JpdHJhdGVfYnBzICE9IC0xICYmCisgICAgICAhbmV3X2NvbmZpZy5oYXNfZHNjcCAm
JgogICAgICAgKGhhc190cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyIHx8CiAgICAgICAgIXdlYnJ0
Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUF1ZGlvLVNlbmRTaWRlQndlIikpKSB7
CisgICAgc3RyZWFtLT5ydHBfdHJhbnNwb3J0Xy0+cGFja2V0X3NlbmRlcigpLT5TZXRBY2NvdW50
Rm9yQXVkaW9QYWNrZXRzKHRydWUpOwogICAgIHN0cmVhbS0+Q29uZmlndXJlQml0cmF0ZU9ic2Vy
dmVyKAogICAgICAgICBuZXdfY29uZmlnLm1pbl9iaXRyYXRlX2JwcywgbmV3X2NvbmZpZy5tYXhf
Yml0cmF0ZV9icHMsCiAgICAgICAgIG5ld19jb25maWcuYml0cmF0ZV9wcmlvcml0eSwgaGFzX3Ry
YW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIpOworICAgIHN0cmVhbS0+cnRwX3J0Y3BfbW9kdWxlXy0+
U2V0QXNQYXJ0T2ZBbGxvY2F0aW9uKHRydWUpOwogICB9IGVsc2UgeworICAgIHN0cmVhbS0+cnRw
X3RyYW5zcG9ydF8tPnBhY2tldF9zZW5kZXIoKS0+U2V0QWNjb3VudEZvckF1ZGlvUGFja2V0cyhm
YWxzZSk7CiAgICAgc3RyZWFtLT5SZW1vdmVCaXRyYXRlT2JzZXJ2ZXIoKTsKKyAgICBzdHJlYW0t
PnJ0cF9ydGNwX21vZHVsZV8tPlNldEFzUGFydE9mQWxsb2NhdGlvbihmYWxzZSk7CiAgIH0KIH0K
IApAQCAtNzI0LDcgKzczNSw3IEBAIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpDb25maWd1cmVCaXRy
YXRlT2JzZXJ2ZXIoaW50IG1pbl9iaXRyYXRlX2JwcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNfcGFja2V0X2ZlZWRiYWNrKSB7CiAgIFJU
Q19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwog
ICBSVENfRENIRUNLX0dFKG1heF9iaXRyYXRlX2JwcywgbWluX2JpdHJhdGVfYnBzKTsKLSAgcnRj
OjpFdmVudCB0aHJlYWRfc3luY19ldmVudChmYWxzZSAvKiBtYW51YWxfcmVzZXQgKi8sIGZhbHNl
KTsKKyAgcnRjOjpFdmVudCB0aHJlYWRfc3luY19ldmVudDsKICAgd29ya2VyX3F1ZXVlXy0+UG9z
dFRhc2soWyZdIHsKICAgICAvLyBXZSBtYXkgZ2V0IGEgY2FsbGJhY2sgaW1tZWRpYXRlbHkgYXMg
dGhlIG9ic2VydmVyIGlzIHJlZ2lzdGVyZWQsIHNvIG1ha2UKICAgICAvLyBzdXJlIHRoZSBiaXRy
YXRlIGxpbWl0cyBpbiBjb25maWdfIGFyZSB1cC10by1kYXRlLgpAQCAtNzQ0LDcgKzc1NSw3IEBA
IHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpDb25maWd1cmVCaXRyYXRlT2JzZXJ2ZXIoaW50IG1pbl9i
aXRyYXRlX2JwcywKIAogdm9pZCBBdWRpb1NlbmRTdHJlYW06OlJlbW92ZUJpdHJhdGVPYnNlcnZl
cigpIHsKICAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRU
aHJlYWQoKSk7Ci0gIHJ0Yzo6RXZlbnQgdGhyZWFkX3N5bmNfZXZlbnQoZmFsc2UgLyogbWFudWFs
X3Jlc2V0ICovLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgdGhyZWFkX3N5bmNfZXZlbnQ7CiAgIHdv
cmtlcl9xdWV1ZV8tPlBvc3RUYXNrKFt0aGlzLCAmdGhyZWFkX3N5bmNfZXZlbnRdIHsKICAgICBi
aXRyYXRlX2FsbG9jYXRvcl8tPlJlbW92ZU9ic2VydmVyKHRoaXMpOwogICAgIHRocmVhZF9zeW5j
X2V2ZW50LlNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtLmgKaW5kZXgg
MWVhNjc2YjY1ZGI3NDUyMjE4NjFhYTUxZDQzMDk0OThjNmFhYzkxYS4uYmY5NDkwMWVmMDU3NTBm
MzA2OGRlZTkwM2E2ZDBmNWNiZWY2ZGY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19zZW5k
X3N0cmVhbS5oCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAotI2luY2x1ZGUgImF1ZGlvL3RpbWVfaW50ZXJ2YWwuaCIKKyNpbmNsdWRlICJh
dWRpby9jaGFubmVsX3NlbmQuaCIKICNpbmNsdWRlICJhdWRpby90cmFuc3BvcnRfZmVlZGJhY2tf
cGFja2V0X2xvc3NfdHJhY2tlci5oIgogI2luY2x1ZGUgImNhbGwvYXVkaW9fc2VuZF9zdHJlYW0u
aCIKICNpbmNsdWRlICJjYWxsL2F1ZGlvX3N0YXRlLmgiCkBAIC0zMCwxMCArMzAsNiBAQCBjbGFz
cyBSdGNwQmFuZHdpZHRoT2JzZXJ2ZXI7CiBjbGFzcyBSdGNwUnR0U3RhdHM7CiBjbGFzcyBSdHBU
cmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZTsKIAotbmFtZXNwYWNlIHZvZSB7Ci1jbGFz
cyBDaGFubmVsU2VuZFByb3h5OwotfSAgLy8gbmFtZXNwYWNlIHZvZQotCiBuYW1lc3BhY2UgaW50
ZXJuYWwgewogY2xhc3MgQXVkaW9TdGF0ZTsKIApAQCAtNDUsMjMgKzQxLDIxIEBAIGNsYXNzIEF1
ZGlvU2VuZFN0cmVhbSBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbSwKICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3Rh
dGU+JiBhdWRpb19zdGF0ZSwKICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGFza1F1ZXVlKiB3b3Jr
ZXJfcXVldWUsCiAgICAgICAgICAgICAgICAgICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vz
c190aHJlYWQsCi0gICAgICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZElu
dGVyZmFjZSogdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgQml0cmF0ZUFsbG9jYXRvciog
Yml0cmF0ZV9hbGxvY2F0b3IsCisgICAgICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRDb250cm9s
bGVyU2VuZEludGVyZmFjZSogcnRwX3RyYW5zcG9ydCwKKyAgICAgICAgICAgICAgICAgIEJpdHJh
dGVBbGxvY2F0b3JJbnRlcmZhY2UqIGJpdHJhdGVfYWxsb2NhdG9yLAogICAgICAgICAgICAgICAg
ICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKICAgICAgICAgICAgICAgICAgIFJ0Y3BSdHRTdGF0
cyogcnRjcF9ydHRfc3RhdHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBhYnNsOjpvcHRpb25h
bDxSdHBTdGF0ZT4mIHN1c3BlbmRlZF9ydHBfc3RhdGUsCi0gICAgICAgICAgICAgICAgICBUaW1l
SW50ZXJ2YWwqIG92ZXJhbGxfY2FsbF9saWZldGltZSk7Ci0gIC8vIEZvciB1bml0IHRlc3RzLCB3
aGljaCBuZWVkIHRvIHN1cHBseSBhIG1vY2sgY2hhbm5lbCBwcm94eS4KKyAgICAgICAgICAgICAg
ICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFJ0cFN0YXRlPiYgc3VzcGVuZGVkX3J0cF9zdGF0ZSk7
CisgIC8vIEZvciB1bml0IHRlc3RzLCB3aGljaCBuZWVkIHRvIHN1cHBseSBhIG1vY2sgQ2hhbm5l
bFNlbmQuCiAgIEF1ZGlvU2VuZFN0cmVhbShjb25zdCB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbTo6
Q29uZmlnJiBjb25maWcsCiAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpBdWRpb1N0YXRlPiYgYXVkaW9fc3RhdGUsCiAgICAgICAgICAgICAgICAgICBy
dGM6OlRhc2tRdWV1ZSogd29ya2VyX3F1ZXVlLAotICAgICAgICAgICAgICAgICAgUnRwVHJhbnNw
b3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAg
IEJpdHJhdGVBbGxvY2F0b3IqIGJpdHJhdGVfYWxsb2NhdG9yLAorICAgICAgICAgICAgICAgICAg
UnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHJ0cF90cmFuc3BvcnQsCisgICAg
ICAgICAgICAgICAgICBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlKiBiaXRyYXRlX2FsbG9jYXRv
ciwKICAgICAgICAgICAgICAgICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCiAgICAgICAgICAg
ICAgICAgICBSdGNwUnR0U3RhdHMqIHJ0Y3BfcnR0X3N0YXRzLAogICAgICAgICAgICAgICAgICAg
Y29uc3QgYWJzbDo6b3B0aW9uYWw8UnRwU3RhdGU+JiBzdXNwZW5kZWRfcnRwX3N0YXRlLAotICAg
ICAgICAgICAgICAgICAgVGltZUludGVydmFsKiBvdmVyYWxsX2NhbGxfbGlmZXRpbWUsCi0gICAg
ICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsU2VuZFByb3h5PiBjaGFu
bmVsX3Byb3h5KTsKKyAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5u
ZWxTZW5kSW50ZXJmYWNlPiBjaGFubmVsX3NlbmQpOwogICB+QXVkaW9TZW5kU3RyZWFtKCkgb3Zl
cnJpZGU7CiAKICAgLy8gd2VicnRjOjpBdWRpb1NlbmRTdHJlYW0gaW1wbGVtZW50YXRpb24uCkBA
IC04MywxMCArNzcsNyBAQCBjbGFzcyBBdWRpb1NlbmRTdHJlYW0gZmluYWwgOiBwdWJsaWMgd2Vi
cnRjOjpBdWRpb1NlbmRTdHJlYW0sCiAgIGJvb2wgRGVsaXZlclJ0Y3AoY29uc3QgdWludDhfdCog
cGFja2V0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAvLyBJbXBsZW1lbnRzIEJpdHJhdGVBbGxvY2F0
b3JPYnNlcnZlci4KLSAgdWludDMyX3QgT25CaXRyYXRlVXBkYXRlZCh1aW50MzJfdCBiaXRyYXRl
X2JwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZyYWN0aW9uX2xvc3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBydHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50NjRfdCBid2VfcGVyaW9kX21zKSBvdmVycmlkZTsKKyAgdWludDMy
X3QgT25CaXRyYXRlVXBkYXRlZChCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpIG92ZXJy
aWRlOwogCiAgIC8vIEZyb20gUGFja2V0RmVlZGJhY2tPYnNlcnZlci4KICAgdm9pZCBPblBhY2tl
dEFkZGVkKHVpbnQzMl90IHNzcmMsIHVpbnQxNl90IHNlcV9udW0pIG92ZXJyaWRlOwpAQCAtOTYs
NyArODcsNyBAQCBjbGFzcyBBdWRpb1NlbmRTdHJlYW0gZmluYWwgOiBwdWJsaWMgd2VicnRjOjpB
dWRpb1NlbmRTdHJlYW0sCiAgIHZvaWQgU2V0VHJhbnNwb3J0T3ZlcmhlYWQoaW50IHRyYW5zcG9y
dF9vdmVyaGVhZF9wZXJfcGFja2V0KTsKIAogICBSdHBTdGF0ZSBHZXRSdHBTdGF0ZSgpIGNvbnN0
OwotICBjb25zdCB2b2U6OkNoYW5uZWxTZW5kUHJveHkmIEdldENoYW5uZWxQcm94eSgpIGNvbnN0
OworICBjb25zdCB2b2U6OkNoYW5uZWxTZW5kSW50ZXJmYWNlKiBHZXRDaGFubmVsKCkgY29uc3Q7
CiAKICBwcml2YXRlOgogICBjbGFzcyBUaW1lZFRyYW5zcG9ydDsKQEAgLTEzMywxNSArMTI0LDE1
IEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OkF1ZGlvU2Vu
ZFN0cmVhbSwKICAgcnRjOjpUYXNrUXVldWUqIHdvcmtlcl9xdWV1ZV87CiAgIHdlYnJ0Yzo6QXVk
aW9TZW5kU3RyZWFtOjpDb25maWcgY29uZmlnXzsKICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9TdGF0ZT4gYXVkaW9fc3RhdGVfOwotICBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFu
bmVsU2VuZFByb3h5PiBjaGFubmVsX3Byb3h5XzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHZv
ZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2U+IGNoYW5uZWxfc2VuZF87CiAgIFJ0Y0V2ZW50TG9nKiBj
b25zdCBldmVudF9sb2dfOwogCiAgIGludCBlbmNvZGVyX3NhbXBsZV9yYXRlX2h6XyA9IDA7CiAg
IHNpemVfdCBlbmNvZGVyX251bV9jaGFubmVsc18gPSAwOwogICBib29sIHNlbmRpbmdfID0gZmFs
c2U7CiAKLSAgQml0cmF0ZUFsbG9jYXRvciogY29uc3QgYml0cmF0ZV9hbGxvY2F0b3JfOwotICBS
dHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogY29uc3QgdHJhbnNwb3J0XzsKKyAg
Qml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSogY29uc3QgYml0cmF0ZV9hbGxvY2F0b3JfOworICBS
dHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogY29uc3QgcnRwX3RyYW5zcG9ydF87
CiAKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gcGFja2V0X2xvc3NfdHJhY2tlcl9jc187CiAgIFRy
YW5zcG9ydEZlZWRiYWNrUGFja2V0TG9zc1RyYWNrZXIgcGFja2V0X2xvc3NfdHJhY2tlcl8KQEAg
LTE1MCwxMCArMTQxLDYgQEAgY2xhc3MgQXVkaW9TZW5kU3RyZWFtIGZpbmFsIDogcHVibGljIHdl
YnJ0Yzo6QXVkaW9TZW5kU3RyZWFtLAogICBSdHBSdGNwKiBydHBfcnRjcF9tb2R1bGVfOwogICBh
YnNsOjpvcHRpb25hbDxSdHBTdGF0ZT4gY29uc3Qgc3VzcGVuZGVkX3J0cF9zdGF0ZV87CiAKLSAg
c3RkOjp1bmlxdWVfcHRyPFRpbWVkVHJhbnNwb3J0PiB0aW1lZF9zZW5kX3RyYW5zcG9ydF9hZGFw
dGVyXzsKLSAgVGltZUludGVydmFsIGFjdGl2ZV9saWZldGltZV87Ci0gIFRpbWVJbnRlcnZhbCog
b3ZlcmFsbF9jYWxsX2xpZmV0aW1lXyA9IG51bGxwdHI7Ci0KICAgLy8gUkZDIDUyODU6IEVhY2gg
ZGlzdGluY3QgZXh0ZW5zaW9uIE1VU1QgaGF2ZSBhIHVuaXF1ZSBJRC4gVGhlIHZhbHVlIDAgaXMK
ICAgLy8gcmVzZXJ2ZWQgZm9yIHBhZGRpbmcgYW5kIE1VU1QgTk9UIGJlIHVzZWQgYXMgYSBsb2Nh
bCBpZGVudGlmaWVyLgogICAvLyBTbyBpdCBzaG91bGQgYmUgc2FmZSB0byB1c2UgMCBoZXJlIHRv
IGluZGljYXRlICJub3QgY29uZmlndXJlZCIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19zZW5kX3N0cmVhbV91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1
ZGlvX3NlbmRfc3RyZWFtX3VuaXR0ZXN0LmNjCmluZGV4IDBhOTU0Zjg2ZDYyOWM1NTk1ZDIwMTRk
NzRjMTM3ODI2OGRlMWU2ZTAuLmU0MDBhZGEwZTVhZjQwOWI0MmFjNjhiNGE2NjhiZjFhMzRiNDFk
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2F1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtX3VuaXR0
ZXN0LmNjCkBAIC0xMyw3ICsxMyw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiYXBpL3VuaXRzL3RpbWVfZGVsdGEuaCIK
KyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX2ZyYW1lX2VuY3J5cHRvci5oIgogI2luY2x1ZGUgImF1
ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtLmgiCiAjaW5jbHVkZSAiYXVkaW8vYXVkaW9fc3RhdGUuaCIK
ICNpbmNsdWRlICJhdWRpby9jb252ZXJzaW9uLmgiCkBAIC0yNywxMiArMjcsMTAgQEAKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL21vY2tzL21vY2tfcnRjcF9iYW5kd2lkdGhfb2JzZXJ2ZXIu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL21vY2tzL21vY2tfcnRjcF9ydHRfc3RhdHMu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL21vY2tzL21vY2tfcnRwX3J0Y3AuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9mYWtlY2xvY2suaCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1
ZXVlLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3QvbW9ja19hdWRp
b19lbmNvZGVyLmgiCiAjaW5jbHVkZSAidGVzdC9tb2NrX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5o
IgotI2luY2x1ZGUgInRlc3QvbW9ja190cmFuc3BvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiBuYW1lc3BhY2UgdGVzdCB7CkBAIC00MSw2ICszOSw3IEBAIG5hbWVzcGFjZSB7CiB1c2luZyB0
ZXN0aW5nOjpfOwogdXNpbmcgdGVzdGluZzo6RXE7CiB1c2luZyB0ZXN0aW5nOjpOZTsKK3VzaW5n
IHRlc3Rpbmc6OkZpZWxkOwogdXNpbmcgdGVzdGluZzo6SW52b2tlOwogdXNpbmcgdGVzdGluZzo6
UmV0dXJuOwogdXNpbmcgdGVzdGluZzo6U3RyRXE7CkBAIC0xMjgsNyArMTI3LDcgQEAgcnRjOjpz
Y29wZWRfcmVmcHRyPE1vY2tBdWRpb0VuY29kZXJGYWN0b3J5PiBTZXR1cEVuY29kZXJGYWN0b3J5
TW9jaygpIHsKIAogc3RydWN0IENvbmZpZ0hlbHBlciB7CiAgIENvbmZpZ0hlbHBlcihib29sIGF1
ZGlvX2J3ZV9lbmFibGVkLCBib29sIGV4cGVjdF9zZXRfZW5jb2Rlcl9jYWxsKQotICAgICAgOiBz
dHJlYW1fY29uZmlnXyhudWxscHRyKSwKKyAgICAgIDogc3RyZWFtX2NvbmZpZ18oLypzZW5kX3Ry
YW5zcG9ydD0qL251bGxwdHIsIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0ciksCiAgICAgICAg
IGF1ZGlvX3Byb2Nlc3NpbmdfKG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8TW9ja0F1ZGlvUHJv
Y2Vzc2luZz4oKSksCiAgICAgICAgIGJpdHJhdGVfYWxsb2NhdG9yXygmbGltaXRfb2JzZXJ2ZXJf
KSwKICAgICAgICAgd29ya2VyX3F1ZXVlXygiQ29uZmlnSGVscGVyX3dvcmtlcl9xdWV1ZSIpLApA
QCAtMTQyLDcgKzE0MSw3IEBAIHN0cnVjdCBDb25maWdIZWxwZXIgewogICAgICAgICBuZXcgcnRj
OjpSZWZDb3VudGVkT2JqZWN0PE1vY2tBdWRpb0RldmljZU1vZHVsZT4oKTsKICAgICBhdWRpb19z
dGF0ZV8gPSBBdWRpb1N0YXRlOjpDcmVhdGUoY29uZmlnKTsKIAotICAgIFNldHVwRGVmYXVsdENo
YW5uZWxQcm94eShhdWRpb19id2VfZW5hYmxlZCk7CisgICAgU2V0dXBEZWZhdWx0Q2hhbm5lbFNl
bmQoYXVkaW9fYndlX2VuYWJsZWQpOwogICAgIFNldHVwTW9ja0ZvclNldHVwU2VuZENvZGVjKGV4
cGVjdF9zZXRfZW5jb2Rlcl9jYWxsKTsKIAogICAgIC8vIFVzZSBJU0FDIGFzIGRlZmF1bHQgY29k
ZWMgc28gYXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSB8Y2hhbm5lbF9wcm94eV98CkBAIC0xNTAs
NyArMTQ5LDYgQEAgc3RydWN0IENvbmZpZ0hlbHBlciB7CiAgICAgc3RyZWFtX2NvbmZpZ18uc2Vu
ZF9jb2RlY19zcGVjID0KICAgICAgICAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWc6OlNlbmRDb2Rl
Y1NwZWMoa0lzYWNQYXlsb2FkVHlwZSwga0lzYWNGb3JtYXQpOwogICAgIHN0cmVhbV9jb25maWdf
LnJ0cC5zc3JjID0ga1NzcmM7Ci0gICAgc3RyZWFtX2NvbmZpZ18ucnRwLm5hY2sucnRwX2hpc3Rv
cnlfbXMgPSAyMDA7CiAgICAgc3RyZWFtX2NvbmZpZ18ucnRwLmNfbmFtZSA9IGtDTmFtZTsKICAg
ICBzdHJlYW1fY29uZmlnXy5ydHAuZXh0ZW5zaW9ucy5wdXNoX2JhY2soCiAgICAgICAgIFJ0cEV4
dGVuc2lvbihSdHBFeHRlbnNpb246OmtBdWRpb0xldmVsVXJpLCBrQXVkaW9MZXZlbElkKSk7CkBA
IC0xNjcsOCArMTY1LDcgQEAgc3RydWN0IENvbmZpZ0hlbHBlciB7CiAgICAgICAgIG5ldyBpbnRl
cm5hbDo6QXVkaW9TZW5kU3RyZWFtKAogICAgICAgICAgICAgc3RyZWFtX2NvbmZpZ18sIGF1ZGlv
X3N0YXRlXywgJndvcmtlcl9xdWV1ZV8sICZydHBfdHJhbnNwb3J0XywKICAgICAgICAgICAgICZi
aXRyYXRlX2FsbG9jYXRvcl8sICZldmVudF9sb2dfLCAmcnRjcF9ydHRfc3RhdHNfLCBhYnNsOjpu
dWxsb3B0LAotICAgICAgICAgICAgJmFjdGl2ZV9saWZldGltZV8sCi0gICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsU2VuZFByb3h5PihjaGFubmVsX3Byb3h5XykpKTsKKyAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxTZW5kSW50ZXJmYWNlPihjaGFu
bmVsX3NlbmRfKSkpOwogICB9CiAKICAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcmIGNvbmZpZygp
IHsgcmV0dXJuIHN0cmVhbV9jb25maWdfOyB9CkBAIC0xNzYsOSArMTczLDggQEAgc3RydWN0IENv
bmZpZ0hlbHBlciB7CiAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxNb2NrQXVkaW9FbmNvZGVyRmFj
dG9yeSo+KAogICAgICAgICBzdHJlYW1fY29uZmlnXy5lbmNvZGVyX2ZhY3RvcnkuZ2V0KCkpOwog
ICB9Ci0gIE1vY2tDaGFubmVsU2VuZFByb3h5KiBjaGFubmVsX3Byb3h5KCkgeyByZXR1cm4gY2hh
bm5lbF9wcm94eV87IH0KKyAgTW9ja0NoYW5uZWxTZW5kKiBjaGFubmVsX3NlbmQoKSB7IHJldHVy
biBjaGFubmVsX3NlbmRfOyB9CiAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNl
KiB0cmFuc3BvcnQoKSB7IHJldHVybiAmcnRwX3RyYW5zcG9ydF87IH0KLSAgVGltZUludGVydmFs
KiBhY3RpdmVfbGlmZXRpbWUoKSB7IHJldHVybiAmYWN0aXZlX2xpZmV0aW1lXzsgfQogCiAgIHN0
YXRpYyB2b2lkIEFkZEJ3ZVRvQ29uZmlnKEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnKiBjb25maWcp
IHsKICAgICBjb25maWctPnJ0cC5leHRlbnNpb25zLnB1c2hfYmFjayhSdHBFeHRlbnNpb24oCkBA
IC0xODYsNDcgKzE4Miw0MCBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKICAgICBjb25maWctPnNl
bmRfY29kZWNfc3BlYy0+dHJhbnNwb3J0X2NjX2VuYWJsZWQgPSB0cnVlOwogICB9CiAKLSAgdm9p
ZCBTZXR1cERlZmF1bHRDaGFubmVsUHJveHkoYm9vbCBhdWRpb19id2VfZW5hYmxlZCkgewotICAg
IEVYUEVDVF9UUlVFKGNoYW5uZWxfcHJveHlfID09IG51bGxwdHIpOwotICAgIGNoYW5uZWxfcHJv
eHlfID0gbmV3IHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja0NoYW5uZWxTZW5kUHJveHk+KCk7Ci0g
ICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBHZXRSdHBSdGNwKCkpLldpbGxSZXBlYXRl
ZGx5KEludm9rZShbdGhpc10oKSB7CisgIHZvaWQgU2V0dXBEZWZhdWx0Q2hhbm5lbFNlbmQoYm9v
bCBhdWRpb19id2VfZW5hYmxlZCkgeworICAgIEVYUEVDVF9UUlVFKGNoYW5uZWxfc2VuZF8gPT0g
bnVsbHB0cik7CisgICAgY2hhbm5lbF9zZW5kXyA9IG5ldyB0ZXN0aW5nOjpTdHJpY3RNb2NrPE1v
Y2tDaGFubmVsU2VuZD4oKTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgR2V0UnRw
UnRjcCgpKS5XaWxsUmVwZWF0ZWRseShJbnZva2UoW3RoaXNdKCkgewogICAgICAgcmV0dXJuICZ0
aGlzLT5ydHBfcnRjcF87CiAgICAgfSkpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5
XywgU2V0UlRDUFN0YXR1cyh0cnVlKSkuVGltZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5u
ZWxfcHJveHlfLCBTZXRMb2NhbFNTUkMoa1NzcmMpKS5UaW1lcygxKTsKLSAgICBFWFBFQ1RfQ0FM
TCgqY2hhbm5lbF9wcm94eV8sIFNldFJUQ1BfQ05BTUUoU3RyRXEoa0NOYW1lKSkpLlRpbWVzKDEp
OwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgU2V0TkFDS1N0YXR1cyh0cnVlLCAx
MCkpLlRpbWVzKDEpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgU2V0RnJhbWVF
bmNyeXB0b3IobnVsbHB0cikpLlRpbWVzKDEpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3By
b3h5XywKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgU2V0TG9jYWxTU1JDKGtTc3Jj
KSkuVGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfc2VuZF8sIFNldFJUQ1BfQ05B
TUUoU3RyRXEoa0NOYW1lKSkpLlRpbWVzKDEpOworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Nl
bmRfLCBTZXRGcmFtZUVuY3J5cHRvcihfKSkuVGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwoKmNo
YW5uZWxfc2VuZF8sIFNldEV4dG1hcEFsbG93TWl4ZWQoZmFsc2UpKS5UaW1lcygxKTsKKyAgICBF
WFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywKICAgICAgICAgICAgICAgICBTZXRTZW5kQXVkaW9M
ZXZlbEluZGljYXRpb25TdGF0dXModHJ1ZSwga0F1ZGlvTGV2ZWxJZCkpCiAgICAgICAgIC5UaW1l
cygxKTsKICAgICBFWFBFQ1RfQ0FMTChydHBfdHJhbnNwb3J0XywgR2V0QmFuZHdpZHRoT2JzZXJ2
ZXIoKSkKICAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigmYmFuZHdpZHRoX29ic2VydmVy
XykpOwogICAgIGlmIChhdWRpb19id2VfZW5hYmxlZCkgewotICAgICAgRVhQRUNUX0NBTEwoKmNo
YW5uZWxfcHJveHlfLAorICAgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfc2VuZF8sCiAgICAgICAg
ICAgICAgICAgICBFbmFibGVTZW5kVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoa1RyYW5zcG9ydFNl
cXVlbmNlTnVtYmVySWQpKQogICAgICAgICAgIC5UaW1lcygxKTsKLSAgICAgIEVYUEVDVF9DQUxM
KCpjaGFubmVsX3Byb3h5XywKKyAgICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLAogICAg
ICAgICAgICAgICAgICAgUmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCiAg
ICAgICAgICAgICAgICAgICAgICAgJnJ0cF90cmFuc3BvcnRfLCBFcSgmYmFuZHdpZHRoX29ic2Vy
dmVyXykpKQogICAgICAgICAgIC5UaW1lcygxKTsKICAgICB9IGVsc2UgewotICAgICAgRVhQRUNU
X0NBTEwoKmNoYW5uZWxfcHJveHlfLCBSZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2Jq
ZWN0cygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZydHBfdHJhbnNw
b3J0XywgRXEobnVsbHB0cikpKQorICAgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfc2VuZF8sIFJl
Z2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmcnRwX3RyYW5zcG9ydF8sIEVxKG51bGxwdHIpKSkKICAgICAg
ICAgICAuVGltZXMoMSk7CiAgICAgfQotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5Xywg
UmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSkKLSAgICAgICAgLlRpbWVzKDEp
OwotICAgIHsKLSAgICAgIDo6dGVzdGluZzo6SW5TZXF1ZW5jZSB1bnJlZ2lzdGVyX29uX2Rlc3Ry
dWN0aW9uOwotICAgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBSZWdpc3RlclRyYW5z
cG9ydChfKSkuVGltZXMoMSk7Ci0gICAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFJl
Z2lzdGVyVHJhbnNwb3J0KG51bGxwdHIpKS5UaW1lcygxKTsKLSAgICB9CisgICAgRVhQRUNUX0NB
TEwoKmNoYW5uZWxfc2VuZF8sIFJlc2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCkp
LlRpbWVzKDEpOwogICB9CiAKICAgdm9pZCBTZXR1cE1vY2tGb3JTZXR1cFNlbmRDb2RlYyhib29s
IGV4cGVjdF9zZXRfZW5jb2Rlcl9jYWxsKSB7CiAgICAgaWYgKGV4cGVjdF9zZXRfZW5jb2Rlcl9j
YWxsKSB7Ci0gICAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFNldEVuY29kZXJGb3JN
b2NrKF8sIF8pKQorICAgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfc2VuZF8sIFNldEVuY29kZXJG
b3JNb2NrKF8sIF8pKQogICAgICAgICAgIC5XaWxsT25jZShJbnZva2UoCiAgICAgICAgICAgICAg
IFt0aGlzXShpbnQgcGF5bG9hZF90eXBlLCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiog
ZW5jb2RlcikgewogICAgICAgICAgICAgICAgIHRoaXMtPmF1ZGlvX2VuY29kZXJfID0gc3RkOjpt
b3ZlKCplbmNvZGVyKTsKQEAgLTIzNyw3ICsyMjYsNyBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsK
IAogICB2b2lkIFNldHVwTW9ja0Zvck1vZGlmeUVuY29kZXIoKSB7CiAgICAgLy8gTGV0IE1vZGlm
eUVuY29kZXIgdG8gaW52b2tlIG1vY2sgYXVkaW8gZW5jb2Rlci4KLSAgICBFWFBFQ1RfQ0FMTCgq
Y2hhbm5lbF9wcm94eV8sIE1vZGlmeUVuY29kZXIoXykpCisgICAgRVhQRUNUX0NBTEwoKmNoYW5u
ZWxfc2VuZF8sIE1vZGlmeUVuY29kZXIoXykpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShJbnZv
a2UoCiAgICAgICAgICAgICBbdGhpc10ocnRjOjpGdW5jdGlvblZpZXc8dm9pZChzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9FbmNvZGVyPiopPgogICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcikg
ewpAQCAtMjQ3LDEzICsyMzYsMTMgQEAgc3RydWN0IENvbmZpZ0hlbHBlciB7CiAgIH0KIAogICB2
b2lkIFNldHVwTW9ja0ZvclNlbmRUZWxlcGhvbmVFdmVudCgpIHsKLSAgICBFWFBFQ1RfVFJVRShj
aGFubmVsX3Byb3h5Xyk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXRTZW5k
VGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrVGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrVGVsZXBob25lRXZlbnRQYXlsb2FkRnJlcXVlbmN5KSkKKyAgICBF
WFBFQ1RfVFJVRShjaGFubmVsX3NlbmRfKTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5k
XywgU2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrVGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtUZWxlcGhvbmVFdmVudFBheWxvYWRGcmVxdWVuY3kp
KQogICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKICAgICBFWFBFQ1RfQ0FMTCgKLSAg
ICAgICAgKmNoYW5uZWxfcHJveHlfLAorICAgICAgICAqY2hhbm5lbF9zZW5kXywKICAgICAgICAg
U2VuZFRlbGVwaG9uZUV2ZW50T3V0YmFuZChrVGVsZXBob25lRXZlbnRDb2RlLCBrVGVsZXBob25l
RXZlbnREdXJhdGlvbikpCiAgICAgICAgIC5XaWxsT25jZShSZXR1cm4odHJ1ZSkpOwogICB9CkBA
IC0yNzEsMTMgKzI2MCwxNCBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKICAgICBibG9jay5mcmFj
dGlvbl9sb3N0ID0gMDsKICAgICByZXBvcnRfYmxvY2tzLnB1c2hfYmFjayhibG9jayk7ICAvLyBE
dXBsaWNhdGUgU1NSQywgYmFkIGZyYWN0aW9uX2xvc3QuCiAKLSAgICBFWFBFQ1RfVFJVRShjaGFu
bmVsX3Byb3h5Xyk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBHZXRSVENQU3Rh
dGlzdGljcygpKQorICAgIEVYUEVDVF9UUlVFKGNoYW5uZWxfc2VuZF8pOworICAgIEVYUEVDVF9D
QUxMKCpjaGFubmVsX3NlbmRfLCBHZXRSVENQU3RhdGlzdGljcygpKQogICAgICAgICAuV2lsbFJl
cGVhdGVkbHkoUmV0dXJuKGtDYWxsU3RhdHMpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9w
cm94eV8sIEdldFJlbW90ZVJUQ1BSZXBvcnRCbG9ja3MoKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hh
bm5lbF9zZW5kXywgR2V0UmVtb3RlUlRDUFJlcG9ydEJsb2NrcygpKQogICAgICAgICAuV2lsbFJl
cGVhdGVkbHkoUmV0dXJuKHJlcG9ydF9ibG9ja3MpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5l
bF9wcm94eV8sIEdldEFOQVN0YXRpc3RpY3MoKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9z
ZW5kXywgR2V0QU5BU3RhdGlzdGljcygpKQogICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJu
KEFOQVN0YXRzKCkpKTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgR2V0Qml0cmF0
ZSgpKS5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMCkpOwogCiAgICAgYXVkaW9fcHJvY2Vzc2luZ19z
dGF0c18uZWNob19yZXR1cm5fbG9zcyA9IGtFY2hvUmV0dXJuTG9zczsKICAgICBhdWRpb19wcm9j
ZXNzaW5nX3N0YXRzXy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0KQEAgLTI5NywxMCAr
Mjg3LDkgQEAgc3RydWN0IENvbmZpZ0hlbHBlciB7CiAgcHJpdmF0ZToKICAgcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvU3RhdGU+IGF1ZGlvX3N0YXRlXzsKICAgQXVkaW9TZW5kU3RyZWFtOjpDb25m
aWcgc3RyZWFtX2NvbmZpZ187Ci0gIHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja0NoYW5uZWxTZW5k
UHJveHk+KiBjaGFubmVsX3Byb3h5XyA9IG51bGxwdHI7CisgIHRlc3Rpbmc6OlN0cmljdE1vY2s8
TW9ja0NoYW5uZWxTZW5kPiogY2hhbm5lbF9zZW5kXyA9IG51bGxwdHI7CiAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxNb2NrQXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nXzsKICAgQXVkaW9Q
cm9jZXNzaW5nU3RhdHMgYXVkaW9fcHJvY2Vzc2luZ19zdGF0c187Ci0gIFRpbWVJbnRlcnZhbCBh
Y3RpdmVfbGlmZXRpbWVfOwogICB0ZXN0aW5nOjpTdHJpY3RNb2NrPE1vY2tSdGNwQmFuZHdpZHRo
T2JzZXJ2ZXI+IGJhbmR3aWR0aF9vYnNlcnZlcl87CiAgIHRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tS
dGNFdmVudExvZz4gZXZlbnRfbG9nXzsKICAgdGVzdGluZzo6TmljZU1vY2s8TW9ja1J0cFRyYW5z
cG9ydENvbnRyb2xsZXJTZW5kPiBydHBfdHJhbnNwb3J0XzsKQEAgLTMxNiw3ICszMDUsOCBAQCBz
dHJ1Y3QgQ29uZmlnSGVscGVyIHsKIH0gIC8vIG5hbWVzcGFjZQogCiBURVNUKEF1ZGlvU2VuZFN0
cmVhbVRlc3QsIENvbmZpZ1RvU3RyaW5nKSB7Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGNv
bmZpZyhudWxscHRyKTsKKyAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgY29uZmlnKC8qc2VuZF90
cmFuc3BvcnQ9Ki9udWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypt
ZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgY29uZmlnLnJ0cC5zc3JjID0ga1NzcmM7CiAg
IGNvbmZpZy5ydHAuY19uYW1lID0ga0NOYW1lOwogICBjb25maWcubWluX2JpdHJhdGVfYnBzID0g
MTIwMDA7CkBAIC0zMjcsMTIgKzMxNywxNSBAQCBURVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIENv
bmZpZ1RvU3RyaW5nKSB7CiAgIGNvbmZpZy5zZW5kX2NvZGVjX3NwZWMtPnRyYW5zcG9ydF9jY19l
bmFibGVkID0gZmFsc2U7CiAgIGNvbmZpZy5zZW5kX2NvZGVjX3NwZWMtPmNuZ19wYXlsb2FkX3R5
cGUgPSA0MjsKICAgY29uZmlnLmVuY29kZXJfZmFjdG9yeSA9IE1vY2tBdWRpb0VuY29kZXJGYWN0
b3J5OjpDcmVhdGVVbnVzZWRGYWN0b3J5KCk7CisgIGNvbmZpZy5ydHAuZXh0bWFwX2FsbG93X21p
eGVkID0gdHJ1ZTsKICAgY29uZmlnLnJ0cC5leHRlbnNpb25zLnB1c2hfYmFjaygKICAgICAgIFJ0
cEV4dGVuc2lvbihSdHBFeHRlbnNpb246OmtBdWRpb0xldmVsVXJpLCBrQXVkaW9MZXZlbElkKSk7
CisgIGNvbmZpZy5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IDI1MDA7CiAgIEVYUEVDVF9FUSgK
LSAgICAgICJ7cnRwOiB7c3NyYzogMTIzNCwgZXh0ZW5zaW9uczogW3t1cmk6ICIKLSAgICAgICJ1
cm46aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDpzc3JjLWF1ZGlvLWxldmVsLCBpZDogMn1dLCBuYWNr
OiAiCi0gICAgICAie3J0cF9oaXN0b3J5X21zOiAwfSwgY19uYW1lOiBmb29fbmFtZX0sIHNlbmRf
dHJhbnNwb3J0OiBudWxsLCAiCisgICAgICAie3J0cDoge3NzcmM6IDEyMzQsIGV4dG1hcC1hbGxv
dy1taXhlZDogdHJ1ZSwgZXh0ZW5zaW9uczogW3t1cmk6ICIKKyAgICAgICJ1cm46aWV0ZjpwYXJh
bXM6cnRwLWhkcmV4dDpzc3JjLWF1ZGlvLWxldmVsLCBpZDogMn1dLCAiCisgICAgICAiY19uYW1l
OiBmb29fbmFtZX0sIHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zOiAyNTAwLCAiCisgICAgICAic2Vu
ZF90cmFuc3BvcnQ6IG51bGwsIG1lZGlhX3RyYW5zcG9ydDogbnVsbCwgIgogICAgICAgIm1pbl9i
aXRyYXRlX2JwczogMTIwMDAsIG1heF9iaXRyYXRlX2JwczogMzQwMDAsICIKICAgICAgICJzZW5k
X2NvZGVjX3NwZWM6IHtuYWNrX2VuYWJsZWQ6IHRydWUsIHRyYW5zcG9ydF9jY19lbmFibGVkOiBm
YWxzZSwgIgogICAgICAgImNuZ19wYXlsb2FkX3R5cGU6IDQyLCBwYXlsb2FkX3R5cGU6IDEwMywg
IgpAQCAtMzU4LDcgKzM1MSw3IEBAIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgU2VuZFRlbGVw
aG9uZUV2ZW50KSB7CiBURVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIFNldE11dGVkKSB7CiAgIENv
bmZpZ0hlbHBlciBoZWxwZXIoZmFsc2UsIHRydWUpOwogICBhdXRvIHNlbmRfc3RyZWFtID0gaGVs
cGVyLkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbSgpOwotICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5u
ZWxfcHJveHkoKSwgU2V0SW5wdXRNdXRlKHRydWUpKTsKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5j
aGFubmVsX3NlbmQoKSwgU2V0SW5wdXRNdXRlKHRydWUpKTsKICAgc2VuZF9zdHJlYW0tPlNldE11
dGVkKHRydWUpOwogfQogCkBAIC00NDgsNyArNDQxLDcgQEAgVEVTVChBdWRpb1NlbmRTdHJlYW1U
ZXN0LCBTZW5kQ29kZWNDYW5BcHBseVZhZCkgewogICBoZWxwZXIuY29uZmlnKCkuc2VuZF9jb2Rl
Y19zcGVjLT5jbmdfcGF5bG9hZF90eXBlID0gMTA1OwogICB1c2luZyA6OnRlc3Rpbmc6Okludm9r
ZTsKICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gc3RvbGVuX2VuY29kZXI7Ci0gIEVY
UEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9wcm94eSgpLCBTZXRFbmNvZGVyRm9yTW9jayhfLCBf
KSkKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3NlbmQoKSwgU2V0RW5jb2RlckZvck1v
Y2soXywgXykpCiAgICAgICAuV2lsbE9uY2UoCiAgICAgICAgICAgSW52b2tlKFsmc3RvbGVuX2Vu
Y29kZXJdKGludCBwYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmNvZGVyKSB7CkBAIC00NjgsMTcg
KzQ2MSwzMSBAQCBURVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIFNlbmRDb2RlY0NhbkFwcGx5VmFk
KSB7CiBURVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIERvZXNOb3RQYXNzSGlnaGVyQml0cmF0ZVRo
YW5NYXhCaXRyYXRlKSB7CiAgIENvbmZpZ0hlbHBlciBoZWxwZXIoZmFsc2UsIHRydWUpOwogICBh
dXRvIHNlbmRfc3RyZWFtID0gaGVscGVyLkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbSgpOwotICBFWFBF
Q1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfcHJveHkoKSwKLSAgICAgICAgICAgICAgU2V0Qml0cmF0
ZShoZWxwZXIuY29uZmlnKCkubWF4X2JpdHJhdGVfYnBzLCBfKSk7Ci0gIHNlbmRfc3RyZWFtLT5P
bkJpdHJhdGVVcGRhdGVkKGhlbHBlci5jb25maWcoKS5tYXhfYml0cmF0ZV9icHMgKyA1MDAwLCAw
LjAsIDUwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MDAwKTsKKyAgRVhQRUNU
X0NBTEwoKmhlbHBlci5jaGFubmVsX3NlbmQoKSwKKyAgICAgICAgICAgICAgT25CaXRyYXRlQWxs
b2NhdGlvbigKKyAgICAgICAgICAgICAgICAgIEZpZWxkKCZCaXRyYXRlQWxsb2NhdGlvblVwZGF0
ZTo6dGFyZ2V0X2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICBFcShEYXRhUmF0ZTo6
YnBzKGhlbHBlci5jb25maWcoKS5tYXhfYml0cmF0ZV9icHMpKSkpKTsKKyAgQml0cmF0ZUFsbG9j
YXRpb25VcGRhdGUgdXBkYXRlOworICB1cGRhdGUudGFyZ2V0X2JpdHJhdGUgPSBEYXRhUmF0ZTo6
YnBzKGhlbHBlci5jb25maWcoKS5tYXhfYml0cmF0ZV9icHMgKyA1MDAwKTsKKyAgdXBkYXRlLnBh
Y2tldF9sb3NzX3JhdGlvID0gMDsKKyAgdXBkYXRlLnJvdW5kX3RyaXBfdGltZSA9IFRpbWVEZWx0
YTo6bXMoNTApOworICB1cGRhdGUuYndlX3BlcmlvZCA9IFRpbWVEZWx0YTo6bXMoNjAwMCk7Cisg
IHNlbmRfc3RyZWFtLT5PbkJpdHJhdGVVcGRhdGVkKHVwZGF0ZSk7CiB9CiAKIFRFU1QoQXVkaW9T
ZW5kU3RyZWFtVGVzdCwgUHJvYmluZ0ludGVydmFsT25CaXRyYXRlVXBkYXRlZCkgewogICBDb25m
aWdIZWxwZXIgaGVscGVyKGZhbHNlLCB0cnVlKTsKICAgYXV0byBzZW5kX3N0cmVhbSA9IGhlbHBl
ci5DcmVhdGVBdWRpb1NlbmRTdHJlYW0oKTsKLSAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVs
X3Byb3h5KCksIFNldEJpdHJhdGUoXywgNTAwMCkpOwotICBzZW5kX3N0cmVhbS0+T25CaXRyYXRl
VXBkYXRlZCg1MDAwMCwgMC4wLCA1MCwgNTAwMCk7CisKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5j
aGFubmVsX3NlbmQoKSwKKyAgICAgICAgICAgICAgT25CaXRyYXRlQWxsb2NhdGlvbihGaWVsZCgm
Qml0cmF0ZUFsbG9jYXRpb25VcGRhdGU6OmJ3ZV9wZXJpb2QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRXEoVGltZURlbHRhOjptcyg1MDAwKSkpKSk7CisgIEJpdHJh
dGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZTsKKyAgdXBkYXRlLnRhcmdldF9iaXRyYXRlID0gRGF0
YVJhdGU6OmJwcyhoZWxwZXIuY29uZmlnKCkubWF4X2JpdHJhdGVfYnBzICsgNTAwMCk7CisgIHVw
ZGF0ZS5wYWNrZXRfbG9zc19yYXRpbyA9IDA7CisgIHVwZGF0ZS5yb3VuZF90cmlwX3RpbWUgPSBU
aW1lRGVsdGE6Om1zKDUwKTsKKyAgdXBkYXRlLmJ3ZV9wZXJpb2QgPSBUaW1lRGVsdGE6Om1zKDUw
MDApOworICBzZW5kX3N0cmVhbS0+T25CaXRyYXRlVXBkYXRlZCh1cGRhdGUpOwogfQogCiAvLyBU
ZXN0IHRoYXQgQXVkaW9TZW5kU3RyZWFtIGRvZXNuJ3QgcmVjcmVhdGUgdGhlIGVuY29kZXIgdW5u
ZWNlc3NhcmlseS4KQEAgLTQ4OSw3ICs0OTYsNyBAQCBURVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3Qs
IERvbnRSZWNyZWF0ZUVuY29kZXIpIHsKICAgLy8gdG8gYmUgY29ycmVjdCwgaXQncyBpbnN0ZWFk
IHNldC11cCBtYW51YWxseSBoZXJlLiBPdGhlcndpc2UgYSBzaW1wbGUgY2hhbmdlCiAgIC8vIHRv
IENvbmZpZ0hlbHBlciAoc2F5IHRvIFdpbGxSZXBlYXRlZGx5KSB3b3VsZCBzaWxlbnRseSBtYWtl
IHRoaXMgdGVzdAogICAvLyB1c2VsZXNzLgotICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxf
cHJveHkoKSwgU2V0RW5jb2RlckZvck1vY2soXywgXykpCisgIEVYUEVDVF9DQUxMKCpoZWxwZXIu
Y2hhbm5lbF9zZW5kKCksIFNldEVuY29kZXJGb3JNb2NrKF8sIF8pKQogICAgICAgLldpbGxPbmNl
KFJldHVybih0cnVlKSk7CiAKICAgaGVscGVyLmNvbmZpZygpLnNlbmRfY29kZWNfc3BlYyA9CkBA
IC01MDQsNDYgKzUxMSw0NCBAQCBURVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIFJlY29uZmlndXJl
VHJhbnNwb3J0Q2NSZXNldHNGaXJzdCkgewogICBhdXRvIHNlbmRfc3RyZWFtID0gaGVscGVyLkNy
ZWF0ZUF1ZGlvU2VuZFN0cmVhbSgpOwogICBhdXRvIG5ld19jb25maWcgPSBoZWxwZXIuY29uZmln
KCk7CiAgIENvbmZpZ0hlbHBlcjo6QWRkQndlVG9Db25maWcoJm5ld19jb25maWcpOwotICBFWFBF
Q1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfcHJveHkoKSwKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5j
aGFubmVsX3NlbmQoKSwKICAgICAgICAgICAgICAgRW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVlbmNl
TnVtYmVyKGtUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcklkKSkKICAgICAgIC5UaW1lcygxKTsKICAg
ewogICAgIDo6dGVzdGluZzo6SW5TZXF1ZW5jZSBzZXE7Ci0gICAgRVhQRUNUX0NBTEwoKmhlbHBl
ci5jaGFubmVsX3Byb3h5KCksIFJlc2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCkp
CisgICAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3NlbmQoKSwgUmVzZXRTZW5kZXJDb25n
ZXN0aW9uQ29udHJvbE9iamVjdHMoKSkKICAgICAgICAgLlRpbWVzKDEpOwotICAgIEVYUEVDVF9D
QUxMKCpoZWxwZXIuY2hhbm5lbF9wcm94eSgpLCBSZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250
cm9sT2JqZWN0cygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHBlci50cmFuc3BvcnQoKSwgTmUobnVsbHB0cikpKQorICAgIEVYUEVDVF9DQUxMKCpoZWxw
ZXIuY2hhbm5lbF9zZW5kKCksIFJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3Rz
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwZXIudHJh
bnNwb3J0KCksIE5lKG51bGxwdHIpKSkKICAgICAgICAgLlRpbWVzKDEpOwogICB9CiAgIHNlbmRf
c3RyZWFtLT5SZWNvbmZpZ3VyZShuZXdfY29uZmlnKTsKIH0KIAotLy8gQ2hlY2tzIHRoYXQgQXVk
aW9TZW5kU3RyZWFtIGxvZ3MgdGhlIHRpbWVzIGF0IHdoaWNoIFJUUCBwYWNrZXRzIGFyZSBzZW50
Ci0vLyB0aHJvdWdoIGl0cyBpbnRlcmZhY2UuCi1URVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIFVw
ZGF0ZUxpZmV0aW1lKSB7CisvLyBWYWxpZGF0ZXMgdGhhdCByZWNvbmZpZ3VyaW5nIHRoZSBBdWRp
b1NlbmRTdHJlYW0gd2l0aCBhIEZyYW1lIGVuY3J5cHRvcgorLy8gY29ycmVjdGx5IHJlY29uZmln
dXJlcyBvbiB0aGUgb2JqZWN0IHdpdGhvdXQgY3Jhc2hpbmcuCitURVNUKEF1ZGlvU2VuZFN0cmVh
bVRlc3QsIFJlY29uZmlndXJlV2l0aEZyYW1lRW5jcnlwdG9yKSB7CiAgIENvbmZpZ0hlbHBlciBo
ZWxwZXIoZmFsc2UsIHRydWUpOworICBhdXRvIHNlbmRfc3RyZWFtID0gaGVscGVyLkNyZWF0ZUF1
ZGlvU2VuZFN0cmVhbSgpOworICBhdXRvIG5ld19jb25maWcgPSBoZWxwZXIuY29uZmlnKCk7CiAK
LSAgTW9ja1RyYW5zcG9ydCBtb2NrX3RyYW5zcG9ydDsKLSAgaGVscGVyLmNvbmZpZygpLnNlbmRf
dHJhbnNwb3J0ID0gJm1vY2tfdHJhbnNwb3J0OworICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVF
bmNyeXB0b3JJbnRlcmZhY2U+IG1vY2tfZnJhbWVfZW5jcnlwdG9yXzAoCisgICAgICBuZXcgcnRj
OjpSZWZDb3VudGVkT2JqZWN0PE1vY2tGcmFtZUVuY3J5cHRvcj4oKSk7CisgIG5ld19jb25maWcu
ZnJhbWVfZW5jcnlwdG9yID0gbW9ja19mcmFtZV9lbmNyeXB0b3JfMDsKKyAgRVhQRUNUX0NBTEwo
KmhlbHBlci5jaGFubmVsX3NlbmQoKSwgU2V0RnJhbWVFbmNyeXB0b3IoTmUobnVsbHB0cikpKS5U
aW1lcygxKTsKKyAgc2VuZF9zdHJlYW0tPlJlY29uZmlndXJlKG5ld19jb25maWcpOwogCi0gIFRy
YW5zcG9ydCogcmVnaXN0ZXJlZF90cmFuc3BvcnQ7Ci0gIE9OX0NBTEwoKmhlbHBlci5jaGFubmVs
X3Byb3h5KCksIFJlZ2lzdGVyVHJhbnNwb3J0KF8pKQotICAgICAgLldpbGxCeURlZmF1bHQoSW52
b2tlKFsmcmVnaXN0ZXJlZF90cmFuc3BvcnRdKFRyYW5zcG9ydCogdHJhbnNwb3J0KSB7Ci0gICAg
ICAgIHJlZ2lzdGVyZWRfdHJhbnNwb3J0ID0gdHJhbnNwb3J0OwotICAgICAgfSkpOworICAvLyBO
b3QgdXBkYXRpbmcgdGhlIGZyYW1lIGVuY3J5cHRvciBzaG91bGRuJ3QgZm9yY2UgaXQgdG8gcmVj
b25maWd1cmUuCisgIEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9zZW5kKCksIFNldEZyYW1l
RW5jcnlwdG9yKF8pKS5UaW1lcygwKTsKKyAgc2VuZF9zdHJlYW0tPlJlY29uZmlndXJlKG5ld19j
b25maWcpOwogCi0gIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGZha2VfY2xvY2s7Ci0gIGNvbnN0ZXhw
ciBpbnQ2NF90IGtUaW1lQmV0d2VlblNlbmRSdHBDYWxsc01zID0gMTAwOwotICB7Ci0gICAgYXV0
byBzZW5kX3N0cmVhbSA9IGhlbHBlci5DcmVhdGVBdWRpb1NlbmRTdHJlYW0oKTsKLSAgICBFWFBF
Q1RfQ0FMTChtb2NrX3RyYW5zcG9ydCwgU2VuZFJ0cChfLCBfLCBfKSkuVGltZXMoMik7Ci0gICAg
Y29uc3QgUGFja2V0T3B0aW9ucyBvcHRpb25zOwotICAgIHJlZ2lzdGVyZWRfdHJhbnNwb3J0LT5T
ZW5kUnRwKG51bGxwdHIsIDAsIG9wdGlvbnMpOwotICAgIGZha2VfY2xvY2suQWR2YW5jZVRpbWUo
VGltZURlbHRhOjptcyhrVGltZUJldHdlZW5TZW5kUnRwQ2FsbHNNcykpOwotICAgIHJlZ2lzdGVy
ZWRfdHJhbnNwb3J0LT5TZW5kUnRwKG51bGxwdHIsIDAsIG9wdGlvbnMpOwotICB9Ci0gIEVYUEVD
VF9UUlVFKCFoZWxwZXIuYWN0aXZlX2xpZmV0aW1lKCktPkVtcHR5KCkpOwotICBFWFBFQ1RfRVEo
aGVscGVyLmFjdGl2ZV9saWZldGltZSgpLT5MZW5ndGgoKSwga1RpbWVCZXR3ZWVuU2VuZFJ0cENh
bGxzTXMpOworICAvLyBVcGRhdGluZyBmcmFtZSBlbmNyeXB0b3IgdG8gYSBuZXcgb2JqZWN0IHNo
b3VsZCBmb3JjZSBhIGNhbGwgdG8gdGhlIHByb3h5LgorICBydGM6OnNjb3BlZF9yZWZwdHI8RnJh
bWVFbmNyeXB0b3JJbnRlcmZhY2U+IG1vY2tfZnJhbWVfZW5jcnlwdG9yXzEoCisgICAgICBuZXcg
cnRjOjpSZWZDb3VudGVkT2JqZWN0PE1vY2tGcmFtZUVuY3J5cHRvcj4oKSk7CisgIG5ld19jb25m
aWcuZnJhbWVfZW5jcnlwdG9yID0gbW9ja19mcmFtZV9lbmNyeXB0b3JfMTsKKyAgbmV3X2NvbmZp
Zy5jcnlwdG9fb3B0aW9ucy5zZnJhbWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uID0gdHJ1ZTsK
KyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3NlbmQoKSwgU2V0RnJhbWVFbmNyeXB0b3Io
TmUobnVsbHB0cikpKS5UaW1lcygxKTsKKyAgc2VuZF9zdHJlYW0tPlJlY29uZmlndXJlKG5ld19j
b25maWcpOwogfQogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1
ZGlvL2F1ZGlvX3RyYW5zcG9ydF9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fdHJhbnNwb3J0X2ltcGwuY2MKaW5kZXggOTRlZjZj
YjY4YTc3NWQ1N2Q3YjM4ZjNkYjM5OTdhYzU5OTAyY2EyMC4uNTM5NDU2ZTJmNDlhZTZmNWNjZTBh
MmVlZjdhNTJkMzc5YmE3MjhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fdHJhbnNwb3J0X2ltcGwuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fdHJhbnNw
b3J0X2ltcGwuY2MKQEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlICJhdWRpby9yZW1peF9yZXNh
bXBsZS5oIgogI2luY2x1ZGUgImF1ZGlvL3V0aWxpdHkvYXVkaW9fZnJhbWVfb3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgImNhbGwvYXVkaW9fc2VuZF9zdHJlYW0uaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hdWRpby9jaGFubmVsX3JlY2VpdmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3JlY2VpdmUuY2MKaW5kZXggZTlmNzUw
MzQ3NGY1ZjU0M2ZjZTRiZDFkNDdjZDU0MDY0YWFjMTllNi4uNDgzMTQ3ZmE5ZWVkMDBlNGU2MGZi
MWI0YmRiMDUzMTU2MGY5MTFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5j
YwpAQCAtMTgsMTQgKzE4LDIwIEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJz
bC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYXVkaW8vYXVkaW9fbGV2ZWwuaCIKICNpbmNs
dWRlICJhdWRpby9jaGFubmVsX3NlbmQuaCIKICNpbmNsdWRlICJhdWRpby91dGlsaXR5L2F1ZGlv
X2ZyYW1lX29wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9hdWRpb19wbGF5b3V0LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9h
dWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmln
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2Rpbmdf
bW9kdWxlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19k
ZXZpY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlY2VpdmVfc3RhdGlzdGljcy5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9y
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXMuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy91dGlsaXR5L2luY2x1ZGUvcHJvY2Vzc190aHJlYWQuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKQEAgLTMzLDYgKzM5LDggQEAKICNpbmNsdWRlICJy
dGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJp
Y3Mvc2FmZV9taW5tYXguaCIKKyNpbmNsdWRlICJydGNfYmFzZS9yYWNlX2NoZWNrZXIuaCIKICNp
bmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rp
bWV1dGlscy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIK
QEAgLTUwLDEzICs1OCwyMjggQEAgY29uc3RleHByIGludDY0X3Qga01pblJldHJhbnNtaXNzaW9u
V2luZG93TXMgPSAzMDsKIGNvbnN0ZXhwciBpbnQga1ZvaWNlRW5naW5lTWluTWluUGxheW91dERl
bGF5TXMgPSAwOwogY29uc3RleHByIGludCBrVm9pY2VFbmdpbmVNYXhNaW5QbGF5b3V0RGVsYXlN
cyA9IDEwMDAwOwogCi19ICAvLyBuYW1lc3BhY2UKK3dlYnJ0Yzo6RnJhbWVUeXBlIFdlYnJ0Y0Zy
YW1lVHlwZUZvck1lZGlhVHJhbnNwb3J0RnJhbWVUeXBlKAorICAgIE1lZGlhVHJhbnNwb3J0RW5j
b2RlZEF1ZGlvRnJhbWU6OkZyYW1lVHlwZSBmcmFtZV90eXBlKSB7CisgIHN3aXRjaCAoZnJhbWVf
dHlwZSkgeworICAgIGNhc2UgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6RnJhbWVU
eXBlOjprU3BlZWNoOgorICAgICAgcmV0dXJuIGtBdWRpb0ZyYW1lU3BlZWNoOworICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6OkZyYW1lVHlw
ZTo6CisgICAgICAgIGtEaXNjb3VudGludW91c1RyYW5zbWlzc2lvbjoKKyAgICAgIHJldHVybiBr
QXVkaW9GcmFtZUNOOworICAgICAgYnJlYWs7CisgIH0KK30KKworV2ViUnRjUlRQSGVhZGVyIENy
ZWF0ZVdlYnJ0Y1JUUEhlYWRlckZvck1lZGlhVHJhbnNwb3J0RnJhbWUoCisgICAgY29uc3QgTWVk
aWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSYgZnJhbWUsCisgICAgdWludDY0X3QgY2hhbm5l
bF9pZCkgeworICB3ZWJydGM6OldlYlJ0Y1JUUEhlYWRlciB3ZWJydGNfaGVhZGVyID0ge307Cisg
IHdlYnJ0Y19oZWFkZXIuaGVhZGVyLnBheWxvYWRUeXBlID0gZnJhbWUucGF5bG9hZF90eXBlKCk7
CisgIHdlYnJ0Y19oZWFkZXIuaGVhZGVyLnBheWxvYWRfdHlwZV9mcmVxdWVuY3kgPSBmcmFtZS5z
YW1wbGluZ19yYXRlX2h6KCk7CisgIHdlYnJ0Y19oZWFkZXIuaGVhZGVyLnRpbWVzdGFtcCA9IGZy
YW1lLnN0YXJ0aW5nX3NhbXBsZV9pbmRleCgpOworICB3ZWJydGNfaGVhZGVyLmhlYWRlci5zZXF1
ZW5jZU51bWJlciA9IGZyYW1lLnNlcXVlbmNlX251bWJlcigpOworCisgIHdlYnJ0Y19oZWFkZXIu
ZnJhbWVUeXBlID0KKyAgICAgIFdlYnJ0Y0ZyYW1lVHlwZUZvck1lZGlhVHJhbnNwb3J0RnJhbWVU
eXBlKGZyYW1lLmZyYW1lX3R5cGUoKSk7CisKKyAgd2VicnRjX2hlYWRlci5oZWFkZXIuc3NyYyA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihjaGFubmVsX2lkKTsKKworICAvLyBUaGUgcmVzdCBhcmUg
aW5pdGlhbGl6ZWQgYnkgdGhlIFJUUEhlYWRlciBjb25zdHJ1Y3Rvci4KKyAgcmV0dXJuIHdlYnJ0
Y19oZWFkZXI7Cit9CisKK2NsYXNzIENoYW5uZWxSZWNlaXZlIDogcHVibGljIENoYW5uZWxSZWNl
aXZlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgTWVkaWFUcmFuc3Bv
cnRBdWRpb1NpbmtJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgLy8gVXNlZCBmb3IgcmVjZWl2ZSBz
dHJlYW1zLgorICBDaGFubmVsUmVjZWl2ZShQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190
aHJlYWQsCisgICAgICAgICAgICAgICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhdWRpb19kZXZpY2Vf
bW9kdWxlLAorICAgICAgICAgICAgICAgICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFf
dHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICBUcmFuc3BvcnQqIHJ0Y3Bfc2VuZF90cmFuc3Bv
cnQsCisgICAgICAgICAgICAgICAgIFJ0Y0V2ZW50TG9nKiBydGNfZXZlbnRfbG9nLAorICAgICAg
ICAgICAgICAgICB1aW50MzJfdCByZW1vdGVfc3NyYywKKyAgICAgICAgICAgICAgICAgc2l6ZV90
IGppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMsCisgICAgICAgICAgICAgICAgIGJvb2wgaml0dGVy
X2J1ZmZlcl9mYXN0X3BsYXlvdXQsCisgICAgICAgICAgICAgICAgIGludCBqaXR0ZXJfYnVmZmVy
X21pbl9kZWxheV9tcywKKyAgICAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
RGVjb2RlckZhY3Rvcnk+IGRlY29kZXJfZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgYWJzbDo6
b3B0aW9uYWw8QXVkaW9Db2RlY1BhaXJJZD4gY29kZWNfcGFpcl9pZCwKKyAgICAgICAgICAgICAg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNy
eXB0b3IsCisgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5
cHRvX29wdGlvbnMpOworICB+Q2hhbm5lbFJlY2VpdmUoKSBvdmVycmlkZTsKKworICB2b2lkIFNl
dFNpbmsoQXVkaW9TaW5rSW50ZXJmYWNlKiBzaW5rKSBvdmVycmlkZTsKKworICB2b2lkIFNldFJl
Y2VpdmVDb2RlY3MoY29uc3Qgc3RkOjptYXA8aW50LCBTZHBBdWRpb0Zvcm1hdD4mIGNvZGVjcykg
b3ZlcnJpZGU7CisKKyAgLy8gQVBJIG1ldGhvZHMKKworICB2b2lkIFN0YXJ0UGxheW91dCgpIG92
ZXJyaWRlOworICB2b2lkIFN0b3BQbGF5b3V0KCkgb3ZlcnJpZGU7CisKKyAgLy8gQ29kZWNzCisg
IGJvb2wgR2V0UmVjQ29kZWMoQ29kZWNJbnN0KiBjb2RlYykgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
Ym9vbCBSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCkgb3ZlcnJpZGU7CisKKyAgLy8gUnRwUGFja2V0U2lua0ludGVyZmFjZS4KKyAgdm9pZCBPblJ0
cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSBvdmVycmlkZTsKKworICAv
LyBNdXRpbmcsIFZvbHVtZSBhbmQgTGV2ZWwuCisgIHZvaWQgU2V0Q2hhbm5lbE91dHB1dFZvbHVt
ZVNjYWxpbmcoZmxvYXQgc2NhbGluZykgb3ZlcnJpZGU7CisgIGludCBHZXRTcGVlY2hPdXRwdXRM
ZXZlbEZ1bGxSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAvLyBTZWUgZGVzY3JpcHRpb24gb2Yg
InRvdGFsQXVkaW9FbmVyZ3kiIGluIHRoZSBXZWJSVEMgc3RhdHMgc3BlYzoKKyAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jZG9tLXJ0Y21lZGlhc3RyZWFtdHJhY2tzdGF0
cy10b3RhbGF1ZGlvZW5lcmd5CisgIGRvdWJsZSBHZXRUb3RhbE91dHB1dEVuZXJneSgpIGNvbnN0
IG92ZXJyaWRlOworICBkb3VibGUgR2V0VG90YWxPdXRwdXREdXJhdGlvbigpIGNvbnN0IG92ZXJy
aWRlOworCisgIC8vIFN0YXRzLgorICBOZXR3b3JrU3RhdGlzdGljcyBHZXROZXR3b3JrU3RhdGlz
dGljcygpIGNvbnN0IG92ZXJyaWRlOworICBBdWRpb0RlY29kaW5nQ2FsbFN0YXRzIEdldERlY29k
aW5nQ2FsbFN0YXRpc3RpY3MoKSBjb25zdCBvdmVycmlkZTsKKworICAvLyBBdWRpbytWaWRlbyBT
eW5jLgorICB1aW50MzJfdCBHZXREZWxheUVzdGltYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgIHZv
aWQgU2V0TWluaW11bVBsYXlvdXREZWxheShpbnQgZGVsYXlNcykgb3ZlcnJpZGU7CisgIHVpbnQz
Ml90IEdldFBsYXlvdXRUaW1lc3RhbXAoKSBjb25zdCBvdmVycmlkZTsKKworICAvLyBQcm9kdWNl
cyB0aGUgdHJhbnNwb3J0LXJlbGF0ZWQgdGltZXN0YW1wczsgY3VycmVudF9kZWxheV9tcyBpcyBs
ZWZ0IHVuc2V0LgorICBhYnNsOjpvcHRpb25hbDxTeW5jYWJsZTo6SW5mbz4gR2V0U3luY0luZm8o
KSBjb25zdCBvdmVycmlkZTsKKworICAvLyBSVFArUlRDUAorICB2b2lkIFNldExvY2FsU1NSQyh1
bnNpZ25lZCBpbnQgc3NyYykgb3ZlcnJpZGU7CisKKyAgdm9pZCBSZWdpc3RlclJlY2VpdmVyQ29u
Z2VzdGlvbkNvbnRyb2xPYmplY3RzKAorICAgICAgUGFja2V0Um91dGVyKiBwYWNrZXRfcm91dGVy
KSBvdmVycmlkZTsKKyAgdm9pZCBSZXNldFJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3Rz
KCkgb3ZlcnJpZGU7CisKKyAgQ2FsbFJlY2VpdmVTdGF0aXN0aWNzIEdldFJUQ1BTdGF0aXN0aWNz
KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHZvaWQgU2V0TkFDS1N0YXR1cyhib29sIGVuYWJsZSwgaW50
IG1heE51bWJlck9mUGFja2V0cykgb3ZlcnJpZGU7CisKKyAgQXVkaW9NaXhlcjo6U291cmNlOjpB
dWRpb0ZyYW1lSW5mbyBHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCisgICAgICBpbnQgc2FtcGxlX3Jh
dGVfaHosCisgICAgICBBdWRpb0ZyYW1lKiBhdWRpb19mcmFtZSkgb3ZlcnJpZGU7CisKKyAgaW50
IFByZWZlcnJlZFNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZTsKKworICAvLyBBc3NvY2lhdGUg
dG8gYSBzZW5kIGNoYW5uZWwuCisgIC8vIFVzZWQgZm9yIG9idGFpbmluZyBSVFQgZm9yIGEgcmVj
ZWl2ZS1vbmx5IGNoYW5uZWwuCisgIHZvaWQgU2V0QXNzb2NpYXRlZFNlbmRDaGFubmVsKGNvbnN0
IENoYW5uZWxTZW5kSW50ZXJmYWNlKiBjaGFubmVsKSBvdmVycmlkZTsKKworICBzdGQ6OnZlY3Rv
cjxSdHBTb3VyY2U+IEdldFNvdXJjZXMoKSBjb25zdCBvdmVycmlkZTsKKworIHByaXZhdGU6Cisg
IGJvb2wgUmVjZWl2ZVBhY2tldChjb25zdCB1aW50OF90KiBwYWNrZXQsCisgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgcGFja2V0X2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJUUEhlYWRlciYgaGVhZGVyKTsKKyAgaW50IFJlc2VuZFBhY2tldHMoY29uc3QgdWludDE2X3Qq
IHNlcXVlbmNlX251bWJlcnMsIGludCBsZW5ndGgpOworICB2b2lkIFVwZGF0ZVBsYXlvdXRUaW1l
c3RhbXAoYm9vbCBydGNwKTsKKworICBpbnQgR2V0UnRwVGltZXN0YW1wUmF0ZUh6KCkgY29uc3Q7
CisgIGludDY0X3QgR2V0UlRUKCkgY29uc3Q7CisKKyAgLy8gTWVkaWFUcmFuc3BvcnRBdWRpb1Np
bmtJbnRlcmZhY2Ugb3ZlcnJpZGU7CisgIHZvaWQgT25EYXRhKHVpbnQ2NF90IGNoYW5uZWxfaWQs
CisgICAgICAgICAgICAgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgZnJhbWUpIG92
ZXJyaWRlOworCisgIGludDMyX3QgT25SZWNlaXZlZFBheWxvYWREYXRhKGNvbnN0IHVpbnQ4X3Qq
IHBheWxvYWREYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5
bG9hZFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJ0Y1JU
UEhlYWRlciogcnRwSGVhZGVyKTsKKworICBib29sIFBsYXlpbmcoKSBjb25zdCB7CisgICAgcnRj
OjpDcml0U2NvcGUgbG9jaygmcGxheWluZ19sb2NrXyk7CisgICAgcmV0dXJuIHBsYXlpbmdfOwor
ICB9CisKKyAgLy8gVGhyZWFkIGNoZWNrZXJzIGRvY3VtZW50IGFuZCBsb2NrIHVzYWdlIG9mIHNv
bWUgbWV0aG9kcyB0byBzcGVjaWZpYyB0aHJlYWRzCisgIC8vIHdlIGtub3cgYWJvdXQuIFRoZSBn
b2FsIGlzIHRvIGV2ZW50dWFsbHkgc3BsaXQgdXAgdm9lOjpDaGFubmVsUmVjZWl2ZSBpbnRvCisg
IC8vIHBhcnRzIHdpdGggc2luZ2xlLXRocmVhZGVkIHNlbWFudGljcywgYW5kIHRoZXJlYnkgcmVk
dWNlIHRoZSBuZWVkIGZvcgorICAvLyBsb2Nrcy4KKyAgcnRjOjpUaHJlYWRDaGVja2VyIHdvcmtl
cl90aHJlYWRfY2hlY2tlcl87CisgIHJ0Yzo6VGhyZWFkQ2hlY2tlciBtb2R1bGVfcHJvY2Vzc190
aHJlYWRfY2hlY2tlcl87CisgIC8vIE1ldGhvZHMgYWNjZXNzZWQgZnJvbSBhdWRpbyBhbmQgdmlk
ZW8gdGhyZWFkcyBhcmUgY2hlY2tlZCBmb3Igc2VxdWVudGlhbC0KKyAgLy8gb25seSBhY2Nlc3Mu
IFdlIGRvbid0IG5lY2Vzc2FyaWx5IG93biBhbmQgY29udHJvbCB0aGVzZSB0aHJlYWRzLCBzbyB0
aHJlYWQKKyAgLy8gY2hlY2tlcnMgY2Fubm90IGJlIHVzZWQuIEUuZy4gQ2hyb21pdW0gbWF5IHRy
YW5zZmVyICJvd25lcnNoaXAiIGZyb20gb25lCisgIC8vIGF1ZGlvIHRocmVhZCB0byBhbm90aGVy
LCBidXQgYWNjZXNzIGlzIHN0aWxsIHNlcXVlbnRpYWwuCisgIHJ0Yzo6UmFjZUNoZWNrZXIgYXVk
aW9fdGhyZWFkX3JhY2VfY2hlY2tlcl87CisgIHJ0Yzo6UmFjZUNoZWNrZXIgdmlkZW9fY2FwdHVy
ZV90aHJlYWRfcmFjZV9jaGVja2VyXzsKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gX2NhbGxiYWNr
Q3JpdFNlY3Q7CisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHZvbHVtZV9zZXR0aW5nc19jcml0c2Vj
dF87CisKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gcGxheWluZ19sb2NrXzsKKyAgYm9vbCBwbGF5
aW5nXyBSVENfR1VBUkRFRF9CWSgmcGxheWluZ19sb2NrXykgPSBmYWxzZTsKKworICBSdGNFdmVu
dExvZyogY29uc3QgZXZlbnRfbG9nXzsKKworICAvLyBJbmRleGVkIGJ5IHBheWxvYWQgdHlwZS4K
KyAgc3RkOjptYXA8dWludDhfdCwgaW50PiBwYXlsb2FkX3R5cGVfZnJlcXVlbmNpZXNfOworCisg
IHN0ZDo6dW5pcXVlX3B0cjxSZWNlaXZlU3RhdGlzdGljcz4gcnRwX3JlY2VpdmVfc3RhdGlzdGlj
c187CisgIHN0ZDo6dW5pcXVlX3B0cjxSdHBSdGNwPiBfcnRwUnRjcE1vZHVsZTsKKyAgY29uc3Qg
dWludDMyX3QgcmVtb3RlX3NzcmNfOworCisgIC8vIEluZm8gZm9yIEdldFNvdXJjZXMgYW5kIEdl
dFN5bmNJbmZvIGlzIHVwZGF0ZWQgb24gbmV0d29yayBvciB3b3JrZXIgdGhyZWFkLAorICAvLyBx
dWVyaWVkIG9uIHRoZSB3b3JrZXIgdGhyZWFkLgorICBydGM6OkNyaXRpY2FsU2VjdGlvbiBydHBf
c291cmNlc19sb2NrXzsKKyAgQ29udHJpYnV0aW5nU291cmNlcyBjb250cmlidXRpbmdfc291cmNl
c18gUlRDX0dVQVJERURfQlkoJnJ0cF9zb3VyY2VzX2xvY2tfKTsKKyAgYWJzbDo6b3B0aW9uYWw8
dWludDMyX3Q+IGxhc3RfcmVjZWl2ZWRfcnRwX3RpbWVzdGFtcF8KKyAgICAgIFJUQ19HVUFSREVE
X0JZKCZydHBfc291cmNlc19sb2NrXyk7CisgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGxhc3Rf
cmVjZWl2ZWRfcnRwX3N5c3RlbV90aW1lX21zXworICAgICAgUlRDX0dVQVJERURfQlkoJnJ0cF9z
b3VyY2VzX2xvY2tfKTsKKyAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gbGFzdF9yZWNlaXZlZF9y
dHBfYXVkaW9fbGV2ZWxfCisgICAgICBSVENfR1VBUkRFRF9CWSgmcnRwX3NvdXJjZXNfbG9ja18p
OworCisgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0NvZGluZ01vZHVsZT4gYXVkaW9fY29kaW5nXzsK
KyAgQXVkaW9TaW5rSW50ZXJmYWNlKiBhdWRpb19zaW5rXyA9IG51bGxwdHI7CisgIEF1ZGlvTGV2
ZWwgX291dHB1dEF1ZGlvTGV2ZWw7CisKKyAgUmVtb3RlTnRwVGltZUVzdGltYXRvciBudHBfZXN0
aW1hdG9yXyBSVENfR1VBUkRFRF9CWSh0c19zdGF0c19sb2NrXyk7CisKKyAgLy8gVGltZXN0YW1w
IG9mIHRoZSBhdWRpbyBwdWxsZWQgZnJvbSBOZXRFcS4KKyAgYWJzbDo6b3B0aW9uYWw8dWludDMy
X3Q+IGppdHRlcl9idWZmZXJfcGxheW91dF90aW1lc3RhbXBfOworCisgIHJ0Yzo6Q3JpdGljYWxT
ZWN0aW9uIHZpZGVvX3N5bmNfbG9ja187CisgIHVpbnQzMl90IHBsYXlvdXRfdGltZXN0YW1wX3J0
cF8gUlRDX0dVQVJERURfQlkodmlkZW9fc3luY19sb2NrXyk7CisgIHVpbnQzMl90IHBsYXlvdXRf
ZGVsYXlfbXNfIFJUQ19HVUFSREVEX0JZKHZpZGVvX3N5bmNfbG9ja18pOworCisgIHJ0Yzo6Q3Jp
dGljYWxTZWN0aW9uIHRzX3N0YXRzX2xvY2tfOworCisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRp
bWVzdGFtcFdyYXBBcm91bmRIYW5kbGVyPiBydHBfdHNfd3JhcGFyb3VuZF9oYW5kbGVyXzsKKyAg
Ly8gVGhlIHJ0cCB0aW1lc3RhbXAgb2YgdGhlIGZpcnN0IHBsYXllZCBvdXQgYXVkaW8gZnJhbWUu
CisgIGludDY0X3QgY2FwdHVyZV9zdGFydF9ydHBfdGltZV9zdGFtcF87CisgIC8vIFRoZSBjYXB0
dXJlIG50cCB0aW1lIChpbiBsb2NhbCB0aW1lYmFzZSkgb2YgdGhlIGZpcnN0IHBsYXllZCBvdXQg
YXVkaW8KKyAgLy8gZnJhbWUuCisgIGludDY0X3QgY2FwdHVyZV9zdGFydF9udHBfdGltZV9tc18g
UlRDX0dVQVJERURfQlkodHNfc3RhdHNfbG9ja18pOworCisgIC8vIHVzZXMKKyAgUHJvY2Vzc1Ro
cmVhZCogX21vZHVsZVByb2Nlc3NUaHJlYWRQdHI7CisgIEF1ZGlvRGV2aWNlTW9kdWxlKiBfYXVk
aW9EZXZpY2VNb2R1bGVQdHI7CisgIGZsb2F0IF9vdXRwdXRHYWluIFJUQ19HVUFSREVEX0JZKHZv
bHVtZV9zZXR0aW5nc19jcml0c2VjdF8pOworCisgIC8vIEFuIGFzc29jaWF0ZWQgc2VuZCBjaGFu
bmVsLgorICBydGM6OkNyaXRpY2FsU2VjdGlvbiBhc3NvY19zZW5kX2NoYW5uZWxfbG9ja187Cisg
IGNvbnN0IENoYW5uZWxTZW5kSW50ZXJmYWNlKiBhc3NvY2lhdGVkX3NlbmRfY2hhbm5lbF8KKyAg
ICAgIFJUQ19HVUFSREVEX0JZKGFzc29jX3NlbmRfY2hhbm5lbF9sb2NrXyk7CisKKyAgUGFja2V0
Um91dGVyKiBwYWNrZXRfcm91dGVyXyA9IG51bGxwdHI7CisKKyAgcnRjOjpUaHJlYWRDaGVja2Vy
IGNvbnN0cnVjdGlvbl90aHJlYWRfOworCisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBjb25z
dCBtZWRpYV90cmFuc3BvcnRfOworCisgIC8vIEUyRUUgQXVkaW8gRnJhbWUgRGVjcnlwdGlvbgor
ICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5
cHRvcl87CisgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uc187Cit9OwogCiBp
bnQzMl90IENoYW5uZWxSZWNlaXZlOjpPblJlY2VpdmVkUGF5bG9hZERhdGEoCiAgICAgY29uc3Qg
dWludDhfdCogcGF5bG9hZERhdGEsCiAgICAgc2l6ZV90IHBheWxvYWRTaXplLAogICAgIGNvbnN0
IFdlYlJ0Y1JUUEhlYWRlciogcnRwSGVhZGVyKSB7Ci0gIGlmICghY2hhbm5lbF9zdGF0ZV8uR2V0
KCkucGxheWluZykgeworICAvLyBXZSBzaG91bGQgbm90IGJlIHJlY2VpdmluZyBhbnkgUlRQIHBh
Y2tldHMgaWYgbWVkaWFfdHJhbnNwb3J0IGlzIHNldC4KKyAgUlRDX0NIRUNLKCFtZWRpYV90cmFu
c3BvcnRfKTsKKworICBpZiAoIVBsYXlpbmcoKSkgewogICAgIC8vIEF2b2lkIGluc2VydGluZyBp
bnRvIE5ldEVRIHdoZW4gd2UgYXJlIG5vdCBwbGF5aW5nLiBDb3VudCB0aGUKICAgICAvLyBwYWNr
ZXQgYXMgZGlzY2FyZGVkLgogICAgIHJldHVybiAwOwpAQCAtODIsMTQgKzMwNSwzNSBAQCBpbnQz
Ml90IENoYW5uZWxSZWNlaXZlOjpPblJlY2VpdmVkUGF5bG9hZERhdGEoCiAgIHJldHVybiAwOwog
fQogCisvLyBNZWRpYVRyYW5zcG9ydEF1ZGlvU2lua0ludGVyZmFjZSBvdmVycmlkZS4KK3ZvaWQg
Q2hhbm5lbFJlY2VpdmU6Ok9uRGF0YSh1aW50NjRfdCBjaGFubmVsX2lkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgZnJhbWUpIHsK
KyAgUlRDX0NIRUNLKG1lZGlhX3RyYW5zcG9ydF8pOworCisgIGlmICghUGxheWluZygpKSB7Cisg
ICAgLy8gQXZvaWQgaW5zZXJ0aW5nIGludG8gTmV0RVEgd2hlbiB3ZSBhcmUgbm90IHBsYXlpbmcu
IENvdW50IHRoZQorICAgIC8vIHBhY2tldCBhcyBkaXNjYXJkZWQuCisgICAgcmV0dXJuOworICB9
CisKKyAgLy8gU2VuZCBlbmNvZGVkIGF1ZGlvIGZyYW1lIHRvIERlY29kZXIgLyBOZXRFcS4KKyAg
aWYgKGF1ZGlvX2NvZGluZ18tPkluY29taW5nUGFja2V0KAorICAgICAgICAgIGZyYW1lLmVuY29k
ZWRfZGF0YSgpLmRhdGEoKSwgZnJhbWUuZW5jb2RlZF9kYXRhKCkuc2l6ZSgpLAorICAgICAgICAg
IENyZWF0ZVdlYnJ0Y1JUUEhlYWRlckZvck1lZGlhVHJhbnNwb3J0RnJhbWUoZnJhbWUsIGNoYW5u
ZWxfaWQpKSAhPQorICAgICAgMCkgeworICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiQ2hhbm5l
bFJlY2VpdmU6Ok9uRGF0YTogdW5hYmxlIHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
InB1c2ggZGF0YSB0byB0aGUgQUNNIjsKKyAgfQorfQorCiBBdWRpb01peGVyOjpTb3VyY2U6OkF1
ZGlvRnJhbWVJbmZvIENoYW5uZWxSZWNlaXZlOjpHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCiAgICAg
aW50IHNhbXBsZV9yYXRlX2h6LAogICAgIEF1ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKSB7CisgIFJU
Q19EQ0hFQ0tfUlVOU19TRVJJQUxJWkVEKCZhdWRpb190aHJlYWRfcmFjZV9jaGVja2VyXyk7CiAg
IGF1ZGlvX2ZyYW1lLT5zYW1wbGVfcmF0ZV9oel8gPSBzYW1wbGVfcmF0ZV9oejsKIAotICB1bnNp
Z25lZCBpbnQgc3NyYzsKLSAgUlRDX0NIRUNLX0VRKEdldFJlbW90ZVNTUkMoc3NyYyksIDApOwot
ICBldmVudF9sb2dfLT5Mb2coYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRpb1BsYXlvdXQ+
KHNzcmMpKTsKKyAgZXZlbnRfbG9nXy0+TG9nKGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVk
aW9QbGF5b3V0PihyZW1vdGVfc3NyY18pKTsKKwogICAvLyBHZXQgMTBtcyByYXcgUENNIGRhdGEg
ZnJvbSB0aGUgQUNNIChtaXhlciBsaW1pdHMgb3V0cHV0IGZyZXF1ZW5jeSkKICAgYm9vbCBtdXRl
ZDsKICAgaWYgKGF1ZGlvX2NvZGluZ18tPlBsYXlvdXREYXRhMTBNcyhhdWRpb19mcmFtZS0+c2Ft
cGxlX3JhdGVfaHpfLCBhdWRpb19mcmFtZSwKQEAgLTE5MSw2ICs0MzUsNyBAQCBBdWRpb01peGVy
OjpTb3VyY2U6OkF1ZGlvRnJhbWVJbmZvIENoYW5uZWxSZWNlaXZlOjpHZXRBdWRpb0ZyYW1lV2l0
aEluZm8oCiB9CiAKIGludCBDaGFubmVsUmVjZWl2ZTo6UHJlZmVycmVkU2FtcGxlUmF0ZSgpIGNv
bnN0IHsKKyAgUlRDX0RDSEVDS19SVU5TX1NFUklBTElaRUQoJmF1ZGlvX3RocmVhZF9yYWNlX2No
ZWNrZXJfKTsKICAgLy8gUmV0dXJuIHRoZSBiaWdnZXIgb2YgcGxheW91dCBhbmQgcmVjZWl2ZSBm
cmVxdWVuY3kgaW4gdGhlIEFDTS4KICAgcmV0dXJuIHN0ZDo6bWF4KGF1ZGlvX2NvZGluZ18tPlJl
Y2VpdmVGcmVxdWVuY3koKSwKICAgICAgICAgICAgICAgICAgIGF1ZGlvX2NvZGluZ18tPlBsYXlv
dXRGcmVxdWVuY3koKSk7CkBAIC0xOTksMTQgKzQ0NCwxNyBAQCBpbnQgQ2hhbm5lbFJlY2VpdmU6
OlByZWZlcnJlZFNhbXBsZVJhdGUoKSBjb25zdCB7CiBDaGFubmVsUmVjZWl2ZTo6Q2hhbm5lbFJl
Y2VpdmUoCiAgICAgUHJvY2Vzc1RocmVhZCogbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAogICAgIEF1
ZGlvRGV2aWNlTW9kdWxlKiBhdWRpb19kZXZpY2VfbW9kdWxlLAorICAgIE1lZGlhVHJhbnNwb3J0
SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQsCiAgICAgVHJhbnNwb3J0KiBydGNwX3NlbmRfdHJh
bnNwb3J0LAogICAgIFJ0Y0V2ZW50TG9nKiBydGNfZXZlbnRfbG9nLAogICAgIHVpbnQzMl90IHJl
bW90ZV9zc3JjLAogICAgIHNpemVfdCBqaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzLAogICAgIGJv
b2wgaml0dGVyX2J1ZmZlcl9mYXN0X3BsYXlvdXQsCisgICAgaW50IGppdHRlcl9idWZmZXJfbWlu
X2RlbGF5X21zLAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBk
ZWNvZGVyX2ZhY3RvcnksCiAgICAgYWJzbDo6b3B0aW9uYWw8QXVkaW9Db2RlY1BhaXJJZD4gY29k
ZWNfcGFpcl9pZCwKLSAgICBGcmFtZURlY3J5cHRvckludGVyZmFjZSogZnJhbWVfZGVjcnlwdG9y
KQorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVf
ZGVjcnlwdG9yLAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlv
bnMpCiAgICAgOiBldmVudF9sb2dfKHJ0Y19ldmVudF9sb2cpLAogICAgICAgcnRwX3JlY2VpdmVf
c3RhdGlzdGljc18oCiAgICAgICAgICAgUmVjZWl2ZVN0YXRpc3RpY3M6OkNyZWF0ZShDbG9jazo6
R2V0UmVhbFRpbWVDbG9jaygpKSksCkBAIC0yMjIsNyArNDcwLDEyIEBAIENoYW5uZWxSZWNlaXZl
OjpDaGFubmVsUmVjZWl2ZSgKICAgICAgIF9hdWRpb0RldmljZU1vZHVsZVB0cihhdWRpb19kZXZp
Y2VfbW9kdWxlKSwKICAgICAgIF9vdXRwdXRHYWluKDEuMGYpLAogICAgICAgYXNzb2NpYXRlZF9z
ZW5kX2NoYW5uZWxfKG51bGxwdHIpLAotICAgICAgZnJhbWVfZGVjcnlwdG9yXyhmcmFtZV9kZWNy
eXB0b3IpIHsKKyAgICAgIG1lZGlhX3RyYW5zcG9ydF8obWVkaWFfdHJhbnNwb3J0KSwKKyAgICAg
IGZyYW1lX2RlY3J5cHRvcl8oZnJhbWVfZGVjcnlwdG9yKSwKKyAgICAgIGNyeXB0b19vcHRpb25z
XyhjcnlwdG9fb3B0aW9ucykgeworICAvLyBUT0RPKG5pc3NlKTogVXNlIF9tb2R1bGVQcm9jZXNz
VGhyZWFkUHRyIGluc3RlYWQ/CisgIG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXy5EZXRh
Y2hGcm9tVGhyZWFkKCk7CisKICAgUlRDX0RDSEVDSyhtb2R1bGVfcHJvY2Vzc190aHJlYWQpOwog
ICBSVENfRENIRUNLKGF1ZGlvX2RldmljZV9tb2R1bGUpOwogICBBdWRpb0NvZGluZ01vZHVsZTo6
Q29uZmlnIGFjbV9jb25maWc7CkBAIC0yMzAsNiArNDgzLDcgQEAgQ2hhbm5lbFJlY2VpdmU6OkNo
YW5uZWxSZWNlaXZlKAogICBhY21fY29uZmlnLm5ldGVxX2NvbmZpZy5jb2RlY19wYWlyX2lkID0g
Y29kZWNfcGFpcl9pZDsKICAgYWNtX2NvbmZpZy5uZXRlcV9jb25maWcubWF4X3BhY2tldHNfaW5f
YnVmZmVyID0gaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0czsKICAgYWNtX2NvbmZpZy5uZXRlcV9j
b25maWcuZW5hYmxlX2Zhc3RfYWNjZWxlcmF0ZSA9IGppdHRlcl9idWZmZXJfZmFzdF9wbGF5b3V0
OworICBhY21fY29uZmlnLm5ldGVxX2NvbmZpZy5taW5fZGVsYXlfbXMgPSBqaXR0ZXJfYnVmZmVy
X21pbl9kZWxheV9tczsKICAgYWNtX2NvbmZpZy5uZXRlcV9jb25maWcuZW5hYmxlX211dGVkX3N0
YXRlID0gdHJ1ZTsKICAgYXVkaW9fY29kaW5nXy5yZXNldChBdWRpb0NvZGluZ01vZHVsZTo6Q3Jl
YXRlKGFjbV9jb25maWcpKTsKIApAQCAtMjM4LDkgKzQ5Miw3IEBAIENoYW5uZWxSZWNlaXZlOjpD
aGFubmVsUmVjZWl2ZSgKICAgcnRwX3JlY2VpdmVfc3RhdGlzdGljc18tPkVuYWJsZVJldHJhbnNt
aXREZXRlY3Rpb24ocmVtb3RlX3NzcmNfLCB0cnVlKTsKICAgUnRwUnRjcDo6Q29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uOwogICBjb25maWd1cmF0aW9uLmF1ZGlvID0gdHJ1ZTsKLSAgLy8gVE9E
TyhuaXNzZSk6IEFsc28gc2V0IHJlY2VpdmVyX29ubHkgPSB0cnVlLCBidXQgdGhhdCBzZWVtcyB0
byBicmVhayBSVFQKLSAgLy8gZXN0aW1hdGlvbiwgcmVzdWx0aW5nIGluIHRlc3QgZmFpbHVyZXMg
Zm9yCi0gIC8vIFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LkdldENhcHR1cmVTdGFydE50
cFRpbWVXaXRoT2xkU3RhdHNBcGkKKyAgY29uZmlndXJhdGlvbi5yZWNlaXZlcl9vbmx5ID0gdHJ1
ZTsKICAgY29uZmlndXJhdGlvbi5vdXRnb2luZ190cmFuc3BvcnQgPSBydGNwX3NlbmRfdHJhbnNw
b3J0OwogICBjb25maWd1cmF0aW9uLnJlY2VpdmVfc3RhdGlzdGljcyA9IHJ0cF9yZWNlaXZlX3N0
YXRpc3RpY3NfLmdldCgpOwogCkBAIC0yNDksMjYgKzUwMSw5IEBAIENoYW5uZWxSZWNlaXZlOjpD
aGFubmVsUmVjZWl2ZSgKICAgX3J0cFJ0Y3BNb2R1bGUucmVzZXQoUnRwUnRjcDo6Q3JlYXRlUnRw
UnRjcChjb25maWd1cmF0aW9uKSk7CiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRTZW5kaW5nTWVkaWFT
dGF0dXMoZmFsc2UpOwogICBfcnRwUnRjcE1vZHVsZS0+U2V0UmVtb3RlU1NSQyhyZW1vdGVfc3Ny
Y18pOwotICBJbml0KCk7Ci19Ci0KLUNoYW5uZWxSZWNlaXZlOjp+Q2hhbm5lbFJlY2VpdmUoKSB7
Ci0gIFRlcm1pbmF0ZSgpOwotICBSVENfRENIRUNLKCFjaGFubmVsX3N0YXRlXy5HZXQoKS5wbGF5
aW5nKTsKLX0KLQotdm9pZCBDaGFubmVsUmVjZWl2ZTo6SW5pdCgpIHsKLSAgY2hhbm5lbF9zdGF0
ZV8uUmVzZXQoKTsKIAotICAvLyAtLS0gQWRkIG1vZHVsZXMgdG8gcHJvY2VzcyB0aHJlYWQgKGZv
ciBwZXJpb2RpYyBzY2hlZHVsYXRpb24pCiAgIF9tb2R1bGVQcm9jZXNzVGhyZWFkUHRyLT5SZWdp
c3Rlck1vZHVsZShfcnRwUnRjcE1vZHVsZS5nZXQoKSwgUlRDX0ZST01fSEVSRSk7CiAKLSAgLy8g
LS0tIEFDTSBpbml0aWFsaXphdGlvbgotICBpbnQgZXJyb3IgPSBhdWRpb19jb2RpbmdfLT5Jbml0
aWFsaXplUmVjZWl2ZXIoKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Ci0KLSAgLy8gLS0t
IFJUUC9SVENQIG1vZHVsZSBpbml0aWFsaXphdGlvbgotCiAgIC8vIEVuc3VyZSB0aGF0IFJUQ1Ag
aXMgZW5hYmxlZCBieSBkZWZhdWx0IGZvciB0aGUgY3JlYXRlZCBjaGFubmVsLgogICAvLyBOb3Rl
IHRoYXQsIHRoZSBtb2R1bGUgd2lsbCBrZWVwIGdlbmVyYXRpbmcgUlRDUCB1bnRpbCBpdCBpcyBl
eHBsaWNpdGx5CiAgIC8vIGRpc2FibGVkIGJ5IHRoZSB1c2VyLgpAQCAtMjc2LDYwICs1MTEsNTQg
QEAgdm9pZCBDaGFubmVsUmVjZWl2ZTo6SW5pdCgpIHsKICAgLy8gYmUgdHJhbnNtaXR0ZWQgc2lu
Y2UgdGhlIFRyYW5zcG9ydCBvYmplY3Qgd2lsbCB0aGVuIGJlIGludmFsaWQuCiAgIC8vIFJUQ1Ag
aXMgZW5hYmxlZCBieSBkZWZhdWx0LgogICBfcnRwUnRjcE1vZHVsZS0+U2V0UlRDUFN0YXR1cyhS
dGNwTW9kZTo6a0NvbXBvdW5kKTsKKworICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIG1l
ZGlhX3RyYW5zcG9ydF8tPlNldFJlY2VpdmVBdWRpb1NpbmsodGhpcyk7CisgIH0KIH0KIAotdm9p
ZCBDaGFubmVsUmVjZWl2ZTo6VGVybWluYXRlKCkgeworQ2hhbm5lbFJlY2VpdmU6On5DaGFubmVs
UmVjZWl2ZSgpIHsKICAgUlRDX0RDSEVDSyhjb25zdHJ1Y3Rpb25fdGhyZWFkXy5DYWxsZWRPblZh
bGlkVGhyZWFkKCkpOwotICAvLyBNdXN0IGJlIGNhbGxlZCBvbiB0aGUgc2FtZSB0aHJlYWQgYXMg
SW5pdCgpLgotICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXy0+UmVnaXN0ZXJSdGNwU3RhdGlzdGlj
c0NhbGxiYWNrKE5VTEwpOworCisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgbWVkaWFf
dHJhbnNwb3J0Xy0+U2V0UmVjZWl2ZUF1ZGlvU2luayhudWxscHRyKTsKKyAgfQogCiAgIFN0b3BQ
bGF5b3V0KCk7CiAKLSAgLy8gVGhlIG9yZGVyIHRvIHNhZmVseSBzaHV0ZG93biBtb2R1bGVzIGlu
IGEgY2hhbm5lbCBpczoKLSAgLy8gMS4gRGUtcmVnaXN0ZXIgY2FsbGJhY2tzIGluIG1vZHVsZXMK
LSAgLy8gMi4gRGUtcmVnaXN0ZXIgbW9kdWxlcyBpbiBwcm9jZXNzIHRocmVhZAotICAvLyAzLiBE
ZXN0cm95IG1vZHVsZXMKICAgaW50IGVycm9yID0gYXVkaW9fY29kaW5nXy0+UmVnaXN0ZXJUcmFu
c3BvcnRDYWxsYmFjayhOVUxMKTsKICAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7CiAKLSAgLy8g
RGUtcmVnaXN0ZXIgbW9kdWxlcyBpbiBwcm9jZXNzIHRocmVhZAogICBpZiAoX21vZHVsZVByb2Nl
c3NUaHJlYWRQdHIpCiAgICAgX21vZHVsZVByb2Nlc3NUaHJlYWRQdHItPkRlUmVnaXN0ZXJNb2R1
bGUoX3J0cFJ0Y3BNb2R1bGUuZ2V0KCkpOwotCi0gIC8vIEVuZCBvZiBtb2R1bGVzIHNodXRkb3du
CiB9CiAKIHZvaWQgQ2hhbm5lbFJlY2VpdmU6OlNldFNpbmsoQXVkaW9TaW5rSW50ZXJmYWNlKiBz
aW5rKSB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlk
VGhyZWFkKCkpOwogICBydGM6OkNyaXRTY29wZSBjcygmX2NhbGxiYWNrQ3JpdFNlY3QpOwogICBh
dWRpb19zaW5rXyA9IHNpbms7CiB9CiAKLWludDMyX3QgQ2hhbm5lbFJlY2VpdmU6OlN0YXJ0UGxh
eW91dCgpIHsKLSAgaWYgKGNoYW5uZWxfc3RhdGVfLkdldCgpLnBsYXlpbmcpIHsKLSAgICByZXR1
cm4gMDsKLSAgfQotCi0gIGNoYW5uZWxfc3RhdGVfLlNldFBsYXlpbmcodHJ1ZSk7Ci0KLSAgcmV0
dXJuIDA7Cit2b2lkIENoYW5uZWxSZWNlaXZlOjpTdGFydFBsYXlvdXQoKSB7CisgIFJUQ19EQ0hF
Q0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOworICBydGM6
OkNyaXRTY29wZSBsb2NrKCZwbGF5aW5nX2xvY2tfKTsKKyAgcGxheWluZ18gPSB0cnVlOwogfQog
Ci1pbnQzMl90IENoYW5uZWxSZWNlaXZlOjpTdG9wUGxheW91dCgpIHsKLSAgaWYgKCFjaGFubmVs
X3N0YXRlXy5HZXQoKS5wbGF5aW5nKSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLQotICBjaGFubmVs
X3N0YXRlXy5TZXRQbGF5aW5nKGZhbHNlKTsKK3ZvaWQgQ2hhbm5lbFJlY2VpdmU6OlN0b3BQbGF5
b3V0KCkgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxp
ZFRocmVhZCgpKTsKKyAgcnRjOjpDcml0U2NvcGUgbG9jaygmcGxheWluZ19sb2NrXyk7CisgIHBs
YXlpbmdfID0gZmFsc2U7CiAgIF9vdXRwdXRBdWRpb0xldmVsLkNsZWFyKCk7Ci0KLSAgcmV0dXJu
IDA7CiB9CiAKLWludDMyX3QgQ2hhbm5lbFJlY2VpdmU6OkdldFJlY0NvZGVjKENvZGVjSW5zdCYg
Y29kZWMpIHsKLSAgcmV0dXJuIChhdWRpb19jb2RpbmdfLT5SZWNlaXZlQ29kZWMoJmNvZGVjKSk7
Citib29sIENoYW5uZWxSZWNlaXZlOjpHZXRSZWNDb2RlYyhDb2RlY0luc3QqIGNvZGVjKSBjb25z
dCB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhy
ZWFkKCkpOworICByZXR1cm4gKGF1ZGlvX2NvZGluZ18tPlJlY2VpdmVDb2RlYyhjb2RlYykgPT0g
MCk7CiB9CiAKIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNlPiBDaGFubmVsUmVjZWl2ZTo6
R2V0U291cmNlcygpIGNvbnN0IHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJf
LkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAgIGludDY0X3Qgbm93X21zID0gcnRjOjpUaW1lTWls
bGlzKCk7CiAgIHN0ZDo6dmVjdG9yPFJ0cFNvdXJjZT4gc291cmNlczsKICAgewpAQCAtMzQ3LDYg
KzU3Niw3IEBAIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNlPiBDaGFubmVsUmVjZWl2ZTo6
R2V0U291cmNlcygpIGNvbnN0IHsKIAogdm9pZCBDaGFubmVsUmVjZWl2ZTo6U2V0UmVjZWl2ZUNv
ZGVjcygKICAgICBjb25zdCBzdGQ6Om1hcDxpbnQsIFNkcEF1ZGlvRm9ybWF0PiYgY29kZWNzKSB7
CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFk
KCkpOwogICBmb3IgKGNvbnN0IGF1dG8mIGt2IDogY29kZWNzKSB7CiAgICAgUlRDX0RDSEVDS19H
RShrdi5zZWNvbmQuY2xvY2tyYXRlX2h6LCAxMDAwKTsKICAgICBwYXlsb2FkX3R5cGVfZnJlcXVl
bmNpZXNfW2t2LmZpcnN0XSA9IGt2LnNlY29uZC5jbG9ja3JhdGVfaHo7CkBAIC0zNTQsNyArNTg0
LDcgQEAgdm9pZCBDaGFubmVsUmVjZWl2ZTo6U2V0UmVjZWl2ZUNvZGVjcygKICAgYXVkaW9fY29k
aW5nXy0+U2V0UmVjZWl2ZUNvZGVjcyhjb2RlY3MpOwogfQogCi0vLyBUT0RPKG5pc3NlKTogTW92
ZSByZWNlaXZlIGxvZ2ljIHVwIHRvIEF1ZGlvUmVjZWl2ZVN0cmVhbS4KKy8vIE1heSBiZSBjYWxs
ZWQgb24gZWl0aGVyIHdvcmtlciB0aHJlYWQgb3IgbmV0d29yayB0aHJlYWQuCiB2b2lkIENoYW5u
ZWxSZWNlaXZlOjpPblJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7
CiAgIGludDY0X3Qgbm93X21zID0gcnRjOjpUaW1lTWlsbGlzKCk7CiAgIHVpbnQ4X3QgYXVkaW9f
bGV2ZWw7CkBAIC0zNjksNyArNTk5LDkgQEAgdm9pZCBDaGFubmVsUmVjZWl2ZTo6T25SdHBQYWNr
ZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgewogICAgIGlmIChoYXNfYXVkaW9f
bGV2ZWwpCiAgICAgICBsYXN0X3JlY2VpdmVkX3J0cF9hdWRpb19sZXZlbF8gPSBhdWRpb19sZXZl
bDsKICAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gY3NyY3MgPSBwYWNrZXQuQ3NyY3MoKTsKLSAg
ICBjb250cmlidXRpbmdfc291cmNlc18uVXBkYXRlKG5vd19tcywgY3NyY3MpOworICAgIGNvbnRy
aWJ1dGluZ19zb3VyY2VzXy5VcGRhdGUoCisgICAgICAgIG5vd19tcywgY3NyY3MsCisgICAgICAg
IGhhc19hdWRpb19sZXZlbCA/IGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+KGF1ZGlvX2xldmVsKSA6
IGFic2w6Om51bGxvcHQpOwogICB9CiAKICAgLy8gU3RvcmUgcGxheW91dCB0aW1lc3RhbXAgZm9y
IHRoZSByZWNlaXZlZCBSVFAgcGFja2V0CkBAIC00MjksNiArNjYxLDEwIEBAIGJvb2wgQ2hhbm5l
bFJlY2VpdmU6OlJlY2VpdmVQYWNrZXQoY29uc3QgdWludDhfdCogcGFja2V0LAogICAgIC8vIFVw
ZGF0ZSB0aGUgZmluYWwgcGF5bG9hZC4KICAgICBwYXlsb2FkID0gZGVjcnlwdGVkX2F1ZGlvX3Bh
eWxvYWQuZGF0YSgpOwogICAgIHBheWxvYWRfZGF0YV9sZW5ndGggPSBkZWNyeXB0ZWRfYXVkaW9f
cGF5bG9hZC5zaXplKCk7CisgIH0gZWxzZSBpZiAoY3J5cHRvX29wdGlvbnNfLnNmcmFtZS5yZXF1
aXJlX2ZyYW1lX2VuY3J5cHRpb24pIHsKKyAgICBSVENfRExPRyhMU19FUlJPUikKKyAgICAgICAg
PDwgIkZyYW1lRGVjcnlwdG9yIHJlcXVpcmVkIGJ1dCBub3Qgc2V0LCBkcm9wcGluZyBwYWNrZXQi
OworICAgIHBheWxvYWRfZGF0YV9sZW5ndGggPSAwOwogICB9CiAKICAgaWYgKHBheWxvYWRfZGF0
YV9sZW5ndGggPT0gMCkgewpAQCAtNDM5LDcgKzY3NSw5IEBAIGJvb2wgQ2hhbm5lbFJlY2VpdmU6
OlJlY2VpdmVQYWNrZXQoY29uc3QgdWludDhfdCogcGFja2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZ3ZWJydGNfcnRwX2hlYWRlcik7CiB9CiAKLWludDMyX3QgQ2hhbm5lbFJl
Y2VpdmU6OlJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoKSB7CisvLyBNYXkgYmUgY2FsbGVkIG9uIGVpdGhlciB3b3JrZXIgdGhyZWFkIG9yIG5ldHdv
cmsgdGhyZWFkLgorLy8gVE9ETyhuaXNzZSk6IERyb3AgYWx3YXlzLXRydWUgcmV0dXJuIHZhbHVl
LgorYm9vbCBDaGFubmVsUmVjZWl2ZTo6UmVjZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpIHsKICAgLy8gU3RvcmUgcGxheW91dCB0aW1lc3RhbXAgZm9y
IHRoZSByZWNlaXZlZCBSVENQIHBhY2tldAogICBVcGRhdGVQbGF5b3V0VGltZXN0YW1wKHRydWUp
OwogCkBAIC00NDksNyArNjg3LDcgQEAgaW50MzJfdCBDaGFubmVsUmVjZWl2ZTo6UmVjZWl2ZWRS
VENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsKICAgaW50NjRf
dCBydHQgPSBHZXRSVFQoKTsKICAgaWYgKHJ0dCA9PSAwKSB7CiAgICAgLy8gV2FpdGluZyBmb3Ig
dmFsaWQgUlRULgotICAgIHJldHVybiAwOworICAgIHJldHVybiB0cnVlOwogICB9CiAKICAgaW50
NjRfdCBuYWNrX3dpbmRvd19tcyA9IHJ0dDsKQEAgLTQ2NSw0NiArNzAzLDQ1IEBAIGludDMyX3Qg
Q2hhbm5lbFJlY2VpdmU6OlJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgbGVuZ3RoKSB7CiAgIGlmICgwICE9IF9ydHBSdGNwTW9kdWxlLT5SZW1vdGVOVFAoJm50
cF9zZWNzLCAmbnRwX2ZyYWMsIE5VTEwsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJnJ0cF90aW1lc3RhbXApKSB7CiAgICAgLy8gV2FpdGluZyBmb3IgUlRDUC4K
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgIHsKICAgICBydGM6OkNy
aXRTY29wZSBsb2NrKCZ0c19zdGF0c19sb2NrXyk7CiAgICAgbnRwX2VzdGltYXRvcl8uVXBkYXRl
UnRjcFRpbWVzdGFtcChydHQsIG50cF9zZWNzLCBudHBfZnJhYywgcnRwX3RpbWVzdGFtcCk7CiAg
IH0KLSAgcmV0dXJuIDA7CisgIHJldHVybiB0cnVlOwogfQogCiBpbnQgQ2hhbm5lbFJlY2VpdmU6
OkdldFNwZWVjaE91dHB1dExldmVsRnVsbFJhbmdlKCkgY29uc3QgeworICBSVENfRENIRUNLKHdv
cmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgcmV0dXJuIF9v
dXRwdXRBdWRpb0xldmVsLkxldmVsRnVsbFJhbmdlKCk7CiB9CiAKIGRvdWJsZSBDaGFubmVsUmVj
ZWl2ZTo6R2V0VG90YWxPdXRwdXRFbmVyZ3koKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29ya2Vy
X3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICByZXR1cm4gX291dHB1
dEF1ZGlvTGV2ZWwuVG90YWxFbmVyZ3koKTsKIH0KIAogZG91YmxlIENoYW5uZWxSZWNlaXZlOjpH
ZXRUb3RhbE91dHB1dER1cmF0aW9uKCkgY29uc3QgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJl
YWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgcmV0dXJuIF9vdXRwdXRBdWRp
b0xldmVsLlRvdGFsRHVyYXRpb24oKTsKIH0KIAogdm9pZCBDaGFubmVsUmVjZWl2ZTo6U2V0Q2hh
bm5lbE91dHB1dFZvbHVtZVNjYWxpbmcoZmxvYXQgc2NhbGluZykgeworICBSVENfRENIRUNLKHdv
cmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgcnRjOjpDcml0
U2NvcGUgY3MoJnZvbHVtZV9zZXR0aW5nc19jcml0c2VjdF8pOwogICBfb3V0cHV0R2FpbiA9IHNj
YWxpbmc7CiB9CiAKLWludCBDaGFubmVsUmVjZWl2ZTo6U2V0TG9jYWxTU1JDKHVuc2lnbmVkIGlu
dCBzc3JjKSB7Cit2b2lkIENoYW5uZWxSZWNlaXZlOjpTZXRMb2NhbFNTUkModWludDMyX3Qgc3Ny
YykgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRo
cmVhZCgpKTsKICAgX3J0cFJ0Y3BNb2R1bGUtPlNldFNTUkMoc3NyYyk7Ci0gIHJldHVybiAwOwot
fQotCi0vLyBUT0RPKG5pc3NlKTogUGFzcyBzc3JjIGluIHJldHVybiB2YWx1ZSBpbnN0ZWFkLgot
aW50IENoYW5uZWxSZWNlaXZlOjpHZXRSZW1vdGVTU1JDKHVuc2lnbmVkIGludCYgc3NyYykgewot
ICBzc3JjID0gcmVtb3RlX3NzcmNfOwotICByZXR1cm4gMDsKIH0KIAogdm9pZCBDaGFubmVsUmVj
ZWl2ZTo6UmVnaXN0ZXJSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKICAgICBQYWNr
ZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXIpIHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2No
ZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAgIFJUQ19EQ0hFQ0socGFja2V0X3JvdXRl
cik7CiAgIFJUQ19EQ0hFQ0soIXBhY2tldF9yb3V0ZXJfKTsKICAgY29uc3RleHByIGJvb2wgcmVt
Yl9jYW5kaWRhdGUgPSBmYWxzZTsKQEAgLTUxMywxMyArNzUwLDE2IEBAIHZvaWQgQ2hhbm5lbFJl
Y2VpdmU6OlJlZ2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCiB9CiAKIHZv
aWQgQ2hhbm5lbFJlY2VpdmU6OlJlc2V0UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMo
KSB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhy
ZWFkKCkpOwogICBSVENfRENIRUNLKHBhY2tldF9yb3V0ZXJfKTsKICAgcGFja2V0X3JvdXRlcl8t
PlJlbW92ZVJlY2VpdmVSdHBNb2R1bGUoX3J0cFJ0Y3BNb2R1bGUuZ2V0KCkpOwogICBwYWNrZXRf
cm91dGVyXyA9IG51bGxwdHI7CiB9CiAKLWludCBDaGFubmVsUmVjZWl2ZTo6R2V0UlRQU3RhdGlz
dGljcyhDYWxsUmVjZWl2ZVN0YXRpc3RpY3MmIHN0YXRzKSB7CitDYWxsUmVjZWl2ZVN0YXRpc3Rp
Y3MgQ2hhbm5lbFJlY2VpdmU6OkdldFJUQ1BTdGF0aXN0aWNzKCkgY29uc3QgeworICBSVENfRENI
RUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgLy8g
LS0tIFJ0Y3BTdGF0aXN0aWNzCisgIENhbGxSZWNlaXZlU3RhdGlzdGljcyBzdGF0czsKIAogICAv
LyBUaGUgaml0dGVyIHN0YXRpc3RpY3MgaXMgdXBkYXRlZCBmb3IgZWFjaCByZWNlaXZlZCBSVFAg
cGFja2V0IGFuZCBpcwogICAvLyBiYXNlZCBvbiByZWNlaXZlZCBwYWNrZXRzLgpAQCAtNTU2LDE0
ICs3OTYsMTUgQEAgaW50IENoYW5uZWxSZWNlaXZlOjpHZXRSVFBTdGF0aXN0aWNzKENhbGxSZWNl
aXZlU3RhdGlzdGljcyYgc3RhdHMpIHsKICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZ0c19zdGF0
c19sb2NrXyk7CiAgICAgc3RhdHMuY2FwdHVyZV9zdGFydF9udHBfdGltZV9tc18gPSBjYXB0dXJl
X3N0YXJ0X250cF90aW1lX21zXzsKICAgfQotICByZXR1cm4gMDsKKyAgcmV0dXJuIHN0YXRzOwog
fQogCi12b2lkIENoYW5uZWxSZWNlaXZlOjpTZXROQUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQg
bWF4TnVtYmVyT2ZQYWNrZXRzKSB7Cit2b2lkIENoYW5uZWxSZWNlaXZlOjpTZXROQUNLU3RhdHVz
KGJvb2wgZW5hYmxlLCBpbnQgbWF4X3BhY2tldHMpIHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhy
ZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAgIC8vIE5vbmUgb2YgdGhlc2Ug
ZnVuY3Rpb25zIGNhbiBmYWlsLgotICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXy0+U2V0TWF4UmVv
cmRlcmluZ1RocmVzaG9sZChtYXhOdW1iZXJPZlBhY2tldHMpOworICBydHBfcmVjZWl2ZV9zdGF0
aXN0aWNzXy0+U2V0TWF4UmVvcmRlcmluZ1RocmVzaG9sZChtYXhfcGFja2V0cyk7CiAgIGlmIChl
bmFibGUpCi0gICAgYXVkaW9fY29kaW5nXy0+RW5hYmxlTmFjayhtYXhOdW1iZXJPZlBhY2tldHMp
OworICAgIGF1ZGlvX2NvZGluZ18tPkVuYWJsZU5hY2sobWF4X3BhY2tldHMpOwogICBlbHNlCiAg
ICAgYXVkaW9fY29kaW5nXy0+RGlzYWJsZU5hY2soKTsKIH0KQEAgLTU3NCw1NCArODE1LDYxIEBA
IGludCBDaGFubmVsUmVjZWl2ZTo6UmVzZW5kUGFja2V0cyhjb25zdCB1aW50MTZfdCogc2VxdWVu
Y2VfbnVtYmVycywKICAgcmV0dXJuIF9ydHBSdGNwTW9kdWxlLT5TZW5kTkFDSyhzZXF1ZW5jZV9u
dW1iZXJzLCBsZW5ndGgpOwogfQogCi12b2lkIENoYW5uZWxSZWNlaXZlOjpTZXRBc3NvY2lhdGVk
U2VuZENoYW5uZWwoQ2hhbm5lbFNlbmQqIGNoYW5uZWwpIHsKK3ZvaWQgQ2hhbm5lbFJlY2VpdmU6
OlNldEFzc29jaWF0ZWRTZW5kQ2hhbm5lbCgKKyAgICBjb25zdCBDaGFubmVsU2VuZEludGVyZmFj
ZSogY2hhbm5lbCkgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVk
T25WYWxpZFRocmVhZCgpKTsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmYXNzb2Nfc2VuZF9jaGFu
bmVsX2xvY2tfKTsKICAgYXNzb2NpYXRlZF9zZW5kX2NoYW5uZWxfID0gY2hhbm5lbDsKIH0KIAot
aW50IENoYW5uZWxSZWNlaXZlOjpHZXROZXR3b3JrU3RhdGlzdGljcyhOZXR3b3JrU3RhdGlzdGlj
cyYgc3RhdHMpIHsKLSAgcmV0dXJuIGF1ZGlvX2NvZGluZ18tPkdldE5ldHdvcmtTdGF0aXN0aWNz
KCZzdGF0cyk7CitOZXR3b3JrU3RhdGlzdGljcyBDaGFubmVsUmVjZWl2ZTo6R2V0TmV0d29ya1N0
YXRpc3RpY3MoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5D
YWxsZWRPblZhbGlkVGhyZWFkKCkpOworICBOZXR3b3JrU3RhdGlzdGljcyBzdGF0czsKKyAgaW50
IGVycm9yID0gYXVkaW9fY29kaW5nXy0+R2V0TmV0d29ya1N0YXRpc3RpY3MoJnN0YXRzKTsKKyAg
UlRDX0RDSEVDS19FUSgwLCBlcnJvcik7CisgIHJldHVybiBzdGF0czsKIH0KIAotdm9pZCBDaGFu
bmVsUmVjZWl2ZTo6R2V0RGVjb2RpbmdDYWxsU3RhdGlzdGljcygKLSAgICBBdWRpb0RlY29kaW5n
Q2FsbFN0YXRzKiBzdGF0cykgY29uc3QgewotICBhdWRpb19jb2RpbmdfLT5HZXREZWNvZGluZ0Nh
bGxTdGF0aXN0aWNzKHN0YXRzKTsKK0F1ZGlvRGVjb2RpbmdDYWxsU3RhdHMgQ2hhbm5lbFJlY2Vp
dmU6OkdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29y
a2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOworICBBdWRpb0RlY29k
aW5nQ2FsbFN0YXRzIHN0YXRzOworICBhdWRpb19jb2RpbmdfLT5HZXREZWNvZGluZ0NhbGxTdGF0
aXN0aWNzKCZzdGF0cyk7CisgIHJldHVybiBzdGF0czsKIH0KIAogdWludDMyX3QgQ2hhbm5lbFJl
Y2VpdmU6OkdldERlbGF5RXN0aW1hdGUoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3Ro
cmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkgfHwKKyAgICAgICAgICAgICBtb2R1
bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgcnRj
OjpDcml0U2NvcGUgbG9jaygmdmlkZW9fc3luY19sb2NrXyk7CiAgIHJldHVybiBhdWRpb19jb2Rp
bmdfLT5GaWx0ZXJlZEN1cnJlbnREZWxheU1zKCkgKyBwbGF5b3V0X2RlbGF5X21zXzsKIH0KIAot
aW50IENoYW5uZWxSZWNlaXZlOjpTZXRNaW5pbXVtUGxheW91dERlbGF5KGludCBkZWxheU1zKSB7
Ci0gIGlmICgoZGVsYXlNcyA8IGtWb2ljZUVuZ2luZU1pbk1pblBsYXlvdXREZWxheU1zKSB8fAot
ICAgICAgKGRlbGF5TXMgPiBrVm9pY2VFbmdpbmVNYXhNaW5QbGF5b3V0RGVsYXlNcykpIHsKK3Zv
aWQgQ2hhbm5lbFJlY2VpdmU6OlNldE1pbmltdW1QbGF5b3V0RGVsYXkoaW50IGRlbGF5X21zKSB7
CisgIFJUQ19EQ0hFQ0sobW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFs
aWRUaHJlYWQoKSk7CisgIC8vIExpbWl0IHRvIHJhbmdlIGFjY2VwdGVkIGJ5IGJvdGggVm9FIGFu
ZCBBQ00sIHNvIHdlJ3JlIGF0IGxlYXN0IGdldHRpbmcgYXMKKyAgLy8gY2xvc2UgYXMgcG9zc2li
bGUsIGluc3RlYWQgb2YgZmFpbGluZy4KKyAgZGVsYXlfbXMgPSBydGM6OlNhZmVDbGFtcChkZWxh
eV9tcywgMCwgMTAwMDApOworICBpZiAoKGRlbGF5X21zIDwga1ZvaWNlRW5naW5lTWluTWluUGxh
eW91dERlbGF5TXMpIHx8CisgICAgICAoZGVsYXlfbXMgPiBrVm9pY2VFbmdpbmVNYXhNaW5QbGF5
b3V0RGVsYXlNcykpIHsKICAgICBSVENfRExPRyhMU19FUlJPUikgPDwgIlNldE1pbmltdW1QbGF5
b3V0RGVsYXkoKSBpbnZhbGlkIG1pbiBkZWxheSI7Ci0gICAgcmV0dXJuIC0xOworICAgIHJldHVy
bjsKICAgfQotICBpZiAoYXVkaW9fY29kaW5nXy0+U2V0TWluaW11bVBsYXlvdXREZWxheShkZWxh
eU1zKSAhPSAwKSB7CisgIGlmIChhdWRpb19jb2RpbmdfLT5TZXRNaW5pbXVtUGxheW91dERlbGF5
KGRlbGF5X21zKSAhPSAwKSB7CiAgICAgUlRDX0RMT0coTFNfRVJST1IpCiAgICAgICAgIDw8ICJT
ZXRNaW5pbXVtUGxheW91dERlbGF5KCkgZmFpbGVkIHRvIHNldCBtaW4gcGxheW91dCBkZWxheSI7
Ci0gICAgcmV0dXJuIC0xOwogICB9Ci0gIHJldHVybiAwOwogfQogCi1pbnQgQ2hhbm5lbFJlY2Vp
dmU6OkdldFBsYXlvdXRUaW1lc3RhbXAodW5zaWduZWQgaW50JiB0aW1lc3RhbXApIHsKLSAgdWlu
dDMyX3QgcGxheW91dF90aW1lc3RhbXBfcnRwID0gMDsKK3VpbnQzMl90IENoYW5uZWxSZWNlaXZl
OjpHZXRQbGF5b3V0VGltZXN0YW1wKCkgY29uc3QgeworICBSVENfRENIRUNLX1JVTlNfU0VSSUFM
SVpFRCgmdmlkZW9fY2FwdHVyZV90aHJlYWRfcmFjZV9jaGVja2VyXyk7CiAgIHsKICAgICBydGM6
OkNyaXRTY29wZSBsb2NrKCZ2aWRlb19zeW5jX2xvY2tfKTsKLSAgICBwbGF5b3V0X3RpbWVzdGFt
cF9ydHAgPSBwbGF5b3V0X3RpbWVzdGFtcF9ydHBfOwotICB9Ci0gIGlmIChwbGF5b3V0X3RpbWVz
dGFtcF9ydHAgPT0gMCkgewotICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiR2V0UGxheW91dFRp
bWVzdGFtcCgpIGZhaWxlZCB0byByZXRyaWV2ZSB0aW1lc3RhbXAiOwotICAgIHJldHVybiAtMTsK
KyAgICByZXR1cm4gcGxheW91dF90aW1lc3RhbXBfcnRwXzsKICAgfQotICB0aW1lc3RhbXAgPSBw
bGF5b3V0X3RpbWVzdGFtcF9ydHA7Ci0gIHJldHVybiAwOwogfQogCiBhYnNsOjpvcHRpb25hbDxT
eW5jYWJsZTo6SW5mbz4gQ2hhbm5lbFJlY2VpdmU6OkdldFN5bmNJbmZvKCkgY29uc3QgeworICBS
VENfRENIRUNLKG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhy
ZWFkKCkpOwogICBTeW5jYWJsZTo6SW5mbyBpbmZvOwogICBpZiAoX3J0cFJ0Y3BNb2R1bGUtPlJl
bW90ZU5UUCgmaW5mby5jYXB0dXJlX3RpbWVfbnRwX3NlY3MsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZpbmZvLmNhcHR1cmVfdGltZV9udHBfZnJhYywgbnVsbHB0ciwgbnVsbHB0
ciwKQEAgLTY4Myw2ICs5MzEsMTQgQEAgaW50IENoYW5uZWxSZWNlaXZlOjpHZXRSdHBUaW1lc3Rh
bXBSYXRlSHooKSBjb25zdCB7CiB9CiAKIGludDY0X3QgQ2hhbm5lbFJlY2VpdmU6OkdldFJUVCgp
IGNvbnN0IHsKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBhdXRvIHRhcmdldF9yYXRl
ID0gbWVkaWFfdHJhbnNwb3J0Xy0+R2V0TGF0ZXN0VGFyZ2V0VHJhbnNmZXJSYXRlKCk7CisgICAg
aWYgKHRhcmdldF9yYXRlLmhhc192YWx1ZSgpKSB7CisgICAgICByZXR1cm4gdGFyZ2V0X3JhdGUt
Pm5ldHdvcmtfZXN0aW1hdGUucm91bmRfdHJpcF90aW1lLm1zKCk7CisgICAgfQorCisgICAgcmV0
dXJuIDA7CisgIH0KICAgUnRjcE1vZGUgbWV0aG9kID0gX3J0cFJ0Y3BNb2R1bGUtPlJUQ1AoKTsK
ICAgaWYgKG1ldGhvZCA9PSBSdGNwTW9kZTo6a09mZikgewogICAgIHJldHVybiAwOwpAQCAtNzA1
LDYgKzk2MSw4IEBAIGludDY0X3QgQ2hhbm5lbFJlY2VpdmU6OkdldFJUVCgpIGNvbnN0IHsKICAg
aW50NjRfdCBhdmdfcnR0ID0gMDsKICAgaW50NjRfdCBtYXhfcnR0ID0gMDsKICAgaW50NjRfdCBt
aW5fcnR0ID0gMDsKKyAgLy8gVE9ETyhuaXNzZSk6IFRoaXMgbWV0aG9kIGNvbXB1dGVzIFJUVCBi
YXNlZCBvbiBzZW5kZXIgcmVwb3J0cywgZXZlbiB0aG91Z2gKKyAgLy8gYSByZWNlaXZlIHN0cmVh
bSBpcyBub3Qgc3VwcG9zZWQgdG8gZG8gdGhhdC4KICAgaWYgKF9ydHBSdGNwTW9kdWxlLT5SVFQo
cmVtb3RlX3NzcmNfLCAmcnR0LCAmYXZnX3J0dCwgJm1pbl9ydHQsICZtYXhfcnR0KSAhPQogICAg
ICAgMCkgewogICAgIHJldHVybiAwOwpAQCAtNzEyLDUgKzk3MCwyOSBAQCBpbnQ2NF90IENoYW5u
ZWxSZWNlaXZlOjpHZXRSVFQoKSBjb25zdCB7CiAgIHJldHVybiBydHQ7CiB9CiAKK30gIC8vIG5h
bWVzcGFjZQorCitzdGQ6OnVuaXF1ZV9wdHI8Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2U+IENyZWF0
ZUNoYW5uZWxSZWNlaXZlKAorICAgIFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVh
ZCwKKyAgICBBdWRpb0RldmljZU1vZHVsZSogYXVkaW9fZGV2aWNlX21vZHVsZSwKKyAgICBNZWRp
YVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0LAorICAgIFRyYW5zcG9ydCogcnRj
cF9zZW5kX3RyYW5zcG9ydCwKKyAgICBSdGNFdmVudExvZyogcnRjX2V2ZW50X2xvZywKKyAgICB1
aW50MzJfdCByZW1vdGVfc3NyYywKKyAgICBzaXplX3Qgaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0
cywKKyAgICBib29sIGppdHRlcl9idWZmZXJfZmFzdF9wbGF5b3V0LAorICAgIGludCBqaXR0ZXJf
YnVmZmVyX21pbl9kZWxheV9tcywKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVy
RmFjdG9yeT4gZGVjb2Rlcl9mYWN0b3J5LAorICAgIGFic2w6Om9wdGlvbmFsPEF1ZGlvQ29kZWNQ
YWlySWQ+IGNvZGVjX3BhaXJfaWQsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlw
dG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9P
cHRpb25zJiBjcnlwdG9fb3B0aW9ucykgeworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8Q2hh
bm5lbFJlY2VpdmU+KAorICAgICAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLCBhdWRpb19kZXZpY2Vf
bW9kdWxlLCBtZWRpYV90cmFuc3BvcnQsCisgICAgICBydGNwX3NlbmRfdHJhbnNwb3J0LCBydGNf
ZXZlbnRfbG9nLCByZW1vdGVfc3NyYywKKyAgICAgIGppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMs
IGppdHRlcl9idWZmZXJfZmFzdF9wbGF5b3V0LAorICAgICAgaml0dGVyX2J1ZmZlcl9taW5fZGVs
YXlfbXMsIGRlY29kZXJfZmFjdG9yeSwgY29kZWNfcGFpcl9pZCwKKyAgICAgIGZyYW1lX2RlY3J5
cHRvciwgY3J5cHRvX29wdGlvbnMpOworfQorCiB9ICAvLyBuYW1lc3BhY2Ugdm9lCiB9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3JlY2VpdmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5oCmluZGV4IDgy
ZWI0ZGZmMGM0YjU1NzQ5YTNmZTY5NjY1YTEzN2RkNGYzM2IzOTcuLjkwMjc2MjM0YTEzN2ExNmMy
OWFiMTQzOTZkMDgxNzNhNmJiZDE3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2
ZS5oCkBAIC0xNywyMiArMTcsMTggQEAKIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKICNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fbWl4ZXIuaCIKKyNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9jYWxsL2F1
ZGlvX3NpbmsuaCIKICNpbmNsdWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJh
cGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0
X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS9ydHByZWNlaXZlcmludGVyZmFjZS5oIgotI2lu
Y2x1ZGUgImF1ZGlvL2F1ZGlvX2xldmVsLmgiCisjaW5jbHVkZSAiY2FsbC9ydHBfcGFja2V0X3Np
bmtfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9zeW5jYWJsZS5oIgotI2luY2x1ZGUgImNv
bW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3IuaCIKLSNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9wYXJzZXIuaCIKLSNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3AuaCIKLSNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9jb250cmlidXRpbmdfc291cmNlcy5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9j
aGVja2VyLmgiCiAKIC8vIFRPRE8oc29sZW5iZXJnLCBuaXNzZSk6IFRoaXMgZmlsZSBjb250YWlu
cyBhIGZldyBOT0xJTlQgbWFya3MsIHRvIHNpbGVuY2UKLS8vIHdhcm5pbmdzIGFib3V0IHVzZSBv
ZiB1bnNpZ25lZCBzaG9ydCwgYW5kIG5vbi1jb25zdCByZWZlcmVuY2UgYXJndW1lbnRzLgorLy8g
d2FybmluZ3MgYWJvdXQgdXNlIG9mIHVuc2lnbmVkIHNob3J0LgogLy8gVGhlc2UgbmVlZCBjbGVh
bnVwLCBpbiBhIHNlcGFyYXRlIGNsLgogCiBuYW1lc3BhY2UgcnRjIHsKQEAgLTY2LDIwMSArNjIs
ODUgQEAgc3RydWN0IENhbGxSZWNlaXZlU3RhdGlzdGljcyB7CiAKIG5hbWVzcGFjZSB2b2Ugewog
Ci1jbGFzcyBDaGFubmVsU2VuZDsKK2NsYXNzIENoYW5uZWxTZW5kSW50ZXJmYWNlOwogCi0vLyBI
ZWxwZXIgY2xhc3MgdG8gc2ltcGxpZnkgbG9ja2luZyBzY2hlbWUgZm9yIG1lbWJlcnMgdGhhdCBh
cmUgYWNjZXNzZWQgZnJvbQotLy8gbXVsdGlwbGUgdGhyZWFkcy4KLS8vIEV4YW1wbGU6IGEgbWVt
YmVyIGNhbiBiZSBzZXQgb24gdGhyZWFkIFQxIGFuZCByZWFkIGJ5IGFuIGludGVybmFsIGF1ZGlv
Ci0vLyB0aHJlYWQgVDIuIEFjY2Vzc2luZyB0aGUgbWVtYmVyIHZpYSB0aGlzIGNsYXNzIGVuc3Vy
ZXMgdGhhdCB3ZSBhcmUKLS8vIHNhZmUgYW5kIGFsc28gYXZvaWQgVFNhbiB2MiB3YXJuaW5ncy4K
LWNsYXNzIENoYW5uZWxSZWNlaXZlU3RhdGUgewotIHB1YmxpYzoKLSAgc3RydWN0IFN0YXRlIHsK
LSAgICBib29sIHBsYXlpbmcgPSBmYWxzZTsKLSAgfTsKLQotICBDaGFubmVsUmVjZWl2ZVN0YXRl
KCkge30KLSAgdmlydHVhbCB+Q2hhbm5lbFJlY2VpdmVTdGF0ZSgpIHt9Ci0KLSAgdm9pZCBSZXNl
dCgpIHsKLSAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZsb2NrXyk7Ci0gICAgc3RhdGVfID0gU3Rh
dGUoKTsKLSAgfQotCi0gIFN0YXRlIEdldCgpIGNvbnN0IHsKLSAgICBydGM6OkNyaXRTY29wZSBs
b2NrKCZsb2NrXyk7Ci0gICAgcmV0dXJuIHN0YXRlXzsKLSAgfQotCi0gIHZvaWQgU2V0UGxheWlu
Zyhib29sIGVuYWJsZSkgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmxvY2tfKTsKLSAgICBz
dGF0ZV8ucGxheWluZyA9IGVuYWJsZTsKLSAgfQorLy8gSW50ZXJmYWNlIGNsYXNzIG5lZWRlZCBm
b3IgQXVkaW9SZWNlaXZlU3RyZWFtIHRlc3RzIHRoYXQgdXNlIGEKKy8vIE1vY2tDaGFubmVsUmVj
ZWl2ZS4KIAotIHByaXZhdGU6Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGxvY2tfOwotICBTdGF0
ZSBzdGF0ZV87Ci19OwotCi1jbGFzcyBDaGFubmVsUmVjZWl2ZSA6IHB1YmxpYyBSdHBEYXRhIHsK
K2NsYXNzIENoYW5uZWxSZWNlaXZlSW50ZXJmYWNlIDogcHVibGljIFJ0cFBhY2tldFNpbmtJbnRl
cmZhY2UgewogIHB1YmxpYzoKLSAgLy8gVXNlZCBmb3IgcmVjZWl2ZSBzdHJlYW1zLgotICBDaGFu
bmVsUmVjZWl2ZShQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCi0gICAgICAg
ICAgICAgICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhdWRpb19kZXZpY2VfbW9kdWxlLAotICAgICAg
ICAgICAgICAgICBUcmFuc3BvcnQqIHJ0Y3Bfc2VuZF90cmFuc3BvcnQsCi0gICAgICAgICAgICAg
ICAgIFJ0Y0V2ZW50TG9nKiBydGNfZXZlbnRfbG9nLAotICAgICAgICAgICAgICAgICB1aW50MzJf
dCByZW1vdGVfc3NyYywKLSAgICAgICAgICAgICAgICAgc2l6ZV90IGppdHRlcl9idWZmZXJfbWF4
X3BhY2tldHMsCi0gICAgICAgICAgICAgICAgIGJvb2wgaml0dGVyX2J1ZmZlcl9mYXN0X3BsYXlv
dXQsCi0gICAgICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0
b3J5PiBkZWNvZGVyX2ZhY3RvcnksCi0gICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPEF1
ZGlvQ29kZWNQYWlySWQ+IGNvZGVjX3BhaXJfaWQsCi0gICAgICAgICAgICAgICAgIEZyYW1lRGVj
cnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9kZWNyeXB0b3IpOwotICB2aXJ0dWFsIH5DaGFubmVsUmVj
ZWl2ZSgpOworICB2aXJ0dWFsIH5DaGFubmVsUmVjZWl2ZUludGVyZmFjZSgpID0gZGVmYXVsdDsK
IAotICB2b2lkIFNldFNpbmsoQXVkaW9TaW5rSW50ZXJmYWNlKiBzaW5rKTsKKyAgdmlydHVhbCB2
b2lkIFNldFNpbmsoQXVkaW9TaW5rSW50ZXJmYWNlKiBzaW5rKSA9IDA7CiAKLSAgdm9pZCBTZXRS
ZWNlaXZlQ29kZWNzKGNvbnN0IHN0ZDo6bWFwPGludCwgU2RwQXVkaW9Gb3JtYXQ+JiBjb2RlY3Mp
OworICB2aXJ0dWFsIHZvaWQgU2V0UmVjZWl2ZUNvZGVjcygKKyAgICAgIGNvbnN0IHN0ZDo6bWFw
PGludCwgU2RwQXVkaW9Gb3JtYXQ+JiBjb2RlY3MpID0gMDsKIAotICAvLyBBUEkgbWV0aG9kcwor
ICB2aXJ0dWFsIHZvaWQgU3RhcnRQbGF5b3V0KCkgPSAwOworICB2aXJ0dWFsIHZvaWQgU3RvcFBs
YXlvdXQoKSA9IDA7CiAKLSAgLy8gVm9FQmFzZQotICBpbnQzMl90IFN0YXJ0UGxheW91dCgpOwot
ICBpbnQzMl90IFN0b3BQbGF5b3V0KCk7CisgIHZpcnR1YWwgYm9vbCBHZXRSZWNDb2RlYyhDb2Rl
Y0luc3QqIGNvZGVjKSBjb25zdCA9IDA7CiAKLSAgLy8gQ29kZWNzCi0gIGludDMyX3QgR2V0UmVj
Q29kZWMoQ29kZWNJbnN0JiBjb2RlYyk7ICAvLyBOT0xJTlQKKyAgdmlydHVhbCBib29sIFJlY2Vp
dmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSA9IDA7CiAK
LSAgLy8gVE9ETyhuaXNzZSwgc29sZW5iZXJnKTogRGVsZXRlIHdoZW4gVm9FTmV0d29yayBpcyBk
ZWxldGVkLgotICBpbnQzMl90IFJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKLSAgdm9pZCBPblJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNl
aXZlZCYgcGFja2V0KTsKLQotICAvLyBNdXRpbmcsIFZvbHVtZSBhbmQgTGV2ZWwuCi0gIHZvaWQg
U2V0Q2hhbm5lbE91dHB1dFZvbHVtZVNjYWxpbmcoZmxvYXQgc2NhbGluZyk7Ci0gIGludCBHZXRT
cGVlY2hPdXRwdXRMZXZlbEZ1bGxSYW5nZSgpIGNvbnN0OworICB2aXJ0dWFsIHZvaWQgU2V0Q2hh
bm5lbE91dHB1dFZvbHVtZVNjYWxpbmcoZmxvYXQgc2NhbGluZykgPSAwOworICB2aXJ0dWFsIGlu
dCBHZXRTcGVlY2hPdXRwdXRMZXZlbEZ1bGxSYW5nZSgpIGNvbnN0ID0gMDsKICAgLy8gU2VlIGRl
c2NyaXB0aW9uIG9mICJ0b3RhbEF1ZGlvRW5lcmd5IiBpbiB0aGUgV2ViUlRDIHN0YXRzIHNwZWM6
CiAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtc3RhdHMvI2RvbS1ydGNtZWRpYXN0
cmVhbXRyYWNrc3RhdHMtdG90YWxhdWRpb2VuZXJneQotICBkb3VibGUgR2V0VG90YWxPdXRwdXRF
bmVyZ3koKSBjb25zdDsKLSAgZG91YmxlIEdldFRvdGFsT3V0cHV0RHVyYXRpb24oKSBjb25zdDsK
KyAgdmlydHVhbCBkb3VibGUgR2V0VG90YWxPdXRwdXRFbmVyZ3koKSBjb25zdCA9IDA7CisgIHZp
cnR1YWwgZG91YmxlIEdldFRvdGFsT3V0cHV0RHVyYXRpb24oKSBjb25zdCA9IDA7CiAKICAgLy8g
U3RhdHMuCi0gIGludCBHZXROZXR3b3JrU3RhdGlzdGljcyhOZXR3b3JrU3RhdGlzdGljcyYgc3Rh
dHMpOyAgLy8gTk9MSU5UCi0gIHZvaWQgR2V0RGVjb2RpbmdDYWxsU3RhdGlzdGljcyhBdWRpb0Rl
Y29kaW5nQ2FsbFN0YXRzKiBzdGF0cykgY29uc3Q7CisgIHZpcnR1YWwgTmV0d29ya1N0YXRpc3Rp
Y3MgR2V0TmV0d29ya1N0YXRpc3RpY3MoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgQXVkaW9EZWNv
ZGluZ0NhbGxTdGF0cyBHZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKCkgY29uc3QgPSAwOwogCiAg
IC8vIEF1ZGlvK1ZpZGVvIFN5bmMuCi0gIHVpbnQzMl90IEdldERlbGF5RXN0aW1hdGUoKSBjb25z
dDsKLSAgaW50IFNldE1pbmltdW1QbGF5b3V0RGVsYXkoaW50IGRlbGF5TXMpOwotICBpbnQgR2V0
UGxheW91dFRpbWVzdGFtcCh1bnNpZ25lZCBpbnQmIHRpbWVzdGFtcCk7ICAvLyBOT0xJTlQKKyAg
dmlydHVhbCB1aW50MzJfdCBHZXREZWxheUVzdGltYXRlKCkgY29uc3QgPSAwOworICB2aXJ0dWFs
IHZvaWQgU2V0TWluaW11bVBsYXlvdXREZWxheShpbnQgZGVsYXlfbXMpID0gMDsKKyAgdmlydHVh
bCB1aW50MzJfdCBHZXRQbGF5b3V0VGltZXN0YW1wKCkgY29uc3QgPSAwOwogCiAgIC8vIFByb2R1
Y2VzIHRoZSB0cmFuc3BvcnQtcmVsYXRlZCB0aW1lc3RhbXBzOyBjdXJyZW50X2RlbGF5X21zIGlz
IGxlZnQgdW5zZXQuCi0gIGFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBHZXRTeW5jSW5m
bygpIGNvbnN0OworICB2aXJ0dWFsIGFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBHZXRT
eW5jSW5mbygpIGNvbnN0ID0gMDsKIAogICAvLyBSVFArUlRDUAotICBpbnQgU2V0TG9jYWxTU1JD
KHVuc2lnbmVkIGludCBzc3JjKTsKLQotICB2b2lkIFJlZ2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9u
Q29udHJvbE9iamVjdHMoUGFja2V0Um91dGVyKiBwYWNrZXRfcm91dGVyKTsKLSAgdm9pZCBSZXNl
dFJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCk7CisgIHZpcnR1YWwgdm9pZCBTZXRM
b2NhbFNTUkModWludDMyX3Qgc3NyYykgPSAwOwogCi0gIGludCBHZXRSVFBTdGF0aXN0aWNzKENh
bGxSZWNlaXZlU3RhdGlzdGljcyYgc3RhdHMpOyAgLy8gTk9MSU5UCi0gIHZvaWQgU2V0TkFDS1N0
YXR1cyhib29sIGVuYWJsZSwgaW50IG1heE51bWJlck9mUGFja2V0cyk7CisgIHZpcnR1YWwgdm9p
ZCBSZWdpc3RlclJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAorICAgICAgUGFja2V0
Um91dGVyKiBwYWNrZXRfcm91dGVyKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBSZXNldFJlY2VpdmVy
Q29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCkgPSAwOwogCi0gIC8vIEZyb20gUnRwRGF0YSBpbiB0
aGUgUlRQL1JUQ1AgbW9kdWxlCi0gIGludDMyX3QgT25SZWNlaXZlZFBheWxvYWREYXRhKGNvbnN0
IHVpbnQ4X3QqIHBheWxvYWREYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgcGF5bG9hZFNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYlJ0Y1JUUEhlYWRlciogcnRwSGVhZGVyKSBvdmVycmlkZTsKKyAgdmlydHVhbCBDYWxsUmVj
ZWl2ZVN0YXRpc3RpY3MgR2V0UlRDUFN0YXRpc3RpY3MoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwg
dm9pZCBTZXROQUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4X3BhY2tldHMpID0gMDsKIAot
ICAvLyBGcm9tIEF1ZGlvTWl4ZXI6OlNvdXJjZS4KLSAgQXVkaW9NaXhlcjo6U291cmNlOjpBdWRp
b0ZyYW1lSW5mbyBHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCisgIHZpcnR1YWwgQXVkaW9NaXhlcjo6
U291cmNlOjpBdWRpb0ZyYW1lSW5mbyBHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCiAgICAgICBpbnQg
c2FtcGxlX3JhdGVfaHosCi0gICAgICBBdWRpb0ZyYW1lKiBhdWRpb19mcmFtZSk7CisgICAgICBB
dWRpb0ZyYW1lKiBhdWRpb19mcmFtZSkgPSAwOwogCi0gIGludCBQcmVmZXJyZWRTYW1wbGVSYXRl
KCkgY29uc3Q7CisgIHZpcnR1YWwgaW50IFByZWZlcnJlZFNhbXBsZVJhdGUoKSBjb25zdCA9IDA7
CiAKICAgLy8gQXNzb2NpYXRlIHRvIGEgc2VuZCBjaGFubmVsLgogICAvLyBVc2VkIGZvciBvYnRh
aW5pbmcgUlRUIGZvciBhIHJlY2VpdmUtb25seSBjaGFubmVsLgotICB2b2lkIFNldEFzc29jaWF0
ZWRTZW5kQ2hhbm5lbChDaGFubmVsU2VuZCogY2hhbm5lbCk7Ci0KLSAgc3RkOjp2ZWN0b3I8UnRw
U291cmNlPiBHZXRTb3VyY2VzKCkgY29uc3Q7Ci0KLSBwcml2YXRlOgotICB2b2lkIEluaXQoKTsK
LSAgdm9pZCBUZXJtaW5hdGUoKTsKLQotICBpbnQgR2V0UmVtb3RlU1NSQyh1bnNpZ25lZCBpbnQm
IHNzcmMpOyAgLy8gTk9MSU5UCi0KLSAgYm9vbCBSZWNlaXZlUGFja2V0KGNvbnN0IHVpbnQ4X3Qq
IHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYWNrZXRfbGVuZ3RoLAotICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUlRQSGVhZGVyJiBoZWFkZXIpOwotICBpbnQgUmVzZW5k
UGFja2V0cyhjb25zdCB1aW50MTZfdCogc2VxdWVuY2VfbnVtYmVycywgaW50IGxlbmd0aCk7Ci0g
IHZvaWQgVXBkYXRlUGxheW91dFRpbWVzdGFtcChib29sIHJ0Y3ApOwotCi0gIGludCBHZXRSdHBU
aW1lc3RhbXBSYXRlSHooKSBjb25zdDsKLSAgaW50NjRfdCBHZXRSVFQoKSBjb25zdDsKLQotICBy
dGM6OkNyaXRpY2FsU2VjdGlvbiBfY2FsbGJhY2tDcml0U2VjdDsKLSAgcnRjOjpDcml0aWNhbFNl
Y3Rpb24gdm9sdW1lX3NldHRpbmdzX2NyaXRzZWN0XzsKLQotICBDaGFubmVsUmVjZWl2ZVN0YXRl
IGNoYW5uZWxfc3RhdGVfOwotCi0gIFJ0Y0V2ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOworICB2
aXJ0dWFsIHZvaWQgU2V0QXNzb2NpYXRlZFNlbmRDaGFubmVsKAorICAgICAgY29uc3QgQ2hhbm5l
bFNlbmRJbnRlcmZhY2UqIGNoYW5uZWwpID0gMDsKIAotICAvLyBJbmRleGVkIGJ5IHBheWxvYWQg
dHlwZS4KLSAgc3RkOjptYXA8dWludDhfdCwgaW50PiBwYXlsb2FkX3R5cGVfZnJlcXVlbmNpZXNf
OwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxSZWNlaXZlU3RhdGlzdGljcz4gcnRwX3JlY2VpdmVfc3Rh
dGlzdGljc187Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBSdGNwPiBfcnRwUnRjcE1vZHVsZTsKLSAg
Y29uc3QgdWludDMyX3QgcmVtb3RlX3NzcmNfOwotCi0gIC8vIEluZm8gZm9yIEdldFNvdXJjZXMg
YW5kIEdldFN5bmNJbmZvIGlzIHVwZGF0ZWQgb24gbmV0d29yayBvciB3b3JrZXIgdGhyZWFkLAot
ICAvLyBxdWVyaWVkIG9uIHRoZSB3b3JrZXIgdGhyZWFkLgotICBydGM6OkNyaXRpY2FsU2VjdGlv
biBydHBfc291cmNlc19sb2NrXzsKLSAgQ29udHJpYnV0aW5nU291cmNlcyBjb250cmlidXRpbmdf
c291cmNlc18gUlRDX0dVQVJERURfQlkoJnJ0cF9zb3VyY2VzX2xvY2tfKTsKLSAgYWJzbDo6b3B0
aW9uYWw8dWludDMyX3Q+IGxhc3RfcmVjZWl2ZWRfcnRwX3RpbWVzdGFtcF8KLSAgICAgIFJUQ19H
VUFSREVEX0JZKCZydHBfc291cmNlc19sb2NrXyk7Ci0gIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+
IGxhc3RfcmVjZWl2ZWRfcnRwX3N5c3RlbV90aW1lX21zXwotICAgICAgUlRDX0dVQVJERURfQlko
JnJ0cF9zb3VyY2VzX2xvY2tfKTsKLSAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gbGFzdF9yZWNl
aXZlZF9ydHBfYXVkaW9fbGV2ZWxfCi0gICAgICBSVENfR1VBUkRFRF9CWSgmcnRwX3NvdXJjZXNf
bG9ja18pOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0NvZGluZ01vZHVsZT4gYXVkaW9fY29k
aW5nXzsKLSAgQXVkaW9TaW5rSW50ZXJmYWNlKiBhdWRpb19zaW5rXyA9IG51bGxwdHI7Ci0gIEF1
ZGlvTGV2ZWwgX291dHB1dEF1ZGlvTGV2ZWw7Ci0KLSAgUmVtb3RlTnRwVGltZUVzdGltYXRvciBu
dHBfZXN0aW1hdG9yXyBSVENfR1VBUkRFRF9CWSh0c19zdGF0c19sb2NrXyk7Ci0KLSAgLy8gVGlt
ZXN0YW1wIG9mIHRoZSBhdWRpbyBwdWxsZWQgZnJvbSBOZXRFcS4KLSAgYWJzbDo6b3B0aW9uYWw8
dWludDMyX3Q+IGppdHRlcl9idWZmZXJfcGxheW91dF90aW1lc3RhbXBfOwotCi0gIHJ0Yzo6Q3Jp
dGljYWxTZWN0aW9uIHZpZGVvX3N5bmNfbG9ja187Ci0gIHVpbnQzMl90IHBsYXlvdXRfdGltZXN0
YW1wX3J0cF8gUlRDX0dVQVJERURfQlkodmlkZW9fc3luY19sb2NrXyk7Ci0gIHVpbnQzMl90IHBs
YXlvdXRfZGVsYXlfbXNfIFJUQ19HVUFSREVEX0JZKHZpZGVvX3N5bmNfbG9ja18pOwotCi0gIHJ0
Yzo6Q3JpdGljYWxTZWN0aW9uIHRzX3N0YXRzX2xvY2tfOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OlRpbWVzdGFtcFdyYXBBcm91bmRIYW5kbGVyPiBydHBfdHNfd3JhcGFyb3VuZF9oYW5kbGVy
XzsKLSAgLy8gVGhlIHJ0cCB0aW1lc3RhbXAgb2YgdGhlIGZpcnN0IHBsYXllZCBvdXQgYXVkaW8g
ZnJhbWUuCi0gIGludDY0X3QgY2FwdHVyZV9zdGFydF9ydHBfdGltZV9zdGFtcF87Ci0gIC8vIFRo
ZSBjYXB0dXJlIG50cCB0aW1lIChpbiBsb2NhbCB0aW1lYmFzZSkgb2YgdGhlIGZpcnN0IHBsYXll
ZCBvdXQgYXVkaW8KLSAgLy8gZnJhbWUuCi0gIGludDY0X3QgY2FwdHVyZV9zdGFydF9udHBfdGlt
ZV9tc18gUlRDX0dVQVJERURfQlkodHNfc3RhdHNfbG9ja18pOwotCi0gIC8vIHVzZXMKLSAgUHJv
Y2Vzc1RocmVhZCogX21vZHVsZVByb2Nlc3NUaHJlYWRQdHI7Ci0gIEF1ZGlvRGV2aWNlTW9kdWxl
KiBfYXVkaW9EZXZpY2VNb2R1bGVQdHI7Ci0gIGZsb2F0IF9vdXRwdXRHYWluIFJUQ19HVUFSREVE
X0JZKHZvbHVtZV9zZXR0aW5nc19jcml0c2VjdF8pOwotCi0gIC8vIEFuIGFzc29jaWF0ZWQgc2Vu
ZCBjaGFubmVsLgotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBhc3NvY19zZW5kX2NoYW5uZWxfbG9j
a187Ci0gIENoYW5uZWxTZW5kKiBhc3NvY2lhdGVkX3NlbmRfY2hhbm5lbF8KLSAgICAgIFJUQ19H
VUFSREVEX0JZKGFzc29jX3NlbmRfY2hhbm5lbF9sb2NrXyk7Ci0KLSAgUGFja2V0Um91dGVyKiBw
YWNrZXRfcm91dGVyXyA9IG51bGxwdHI7Ci0KLSAgcnRjOjpUaHJlYWRDaGVja2VyIGNvbnN0cnVj
dGlvbl90aHJlYWRfOwotCi0gIC8vIEUyRUUgQXVkaW8gRnJhbWUgRGVjcnlwdGlvbgotICBGcmFt
ZURlY3J5cHRvckludGVyZmFjZSogZnJhbWVfZGVjcnlwdG9yXyA9IG51bGxwdHI7CisgIHZpcnR1
YWwgc3RkOjp2ZWN0b3I8UnRwU291cmNlPiBHZXRTb3VyY2VzKCkgY29uc3QgPSAwOwogfTsKIAor
c3RkOjp1bmlxdWVfcHRyPENoYW5uZWxSZWNlaXZlSW50ZXJmYWNlPiBDcmVhdGVDaGFubmVsUmVj
ZWl2ZSgKKyAgICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCisgICAgQXVk
aW9EZXZpY2VNb2R1bGUqIGF1ZGlvX2RldmljZV9tb2R1bGUsCisgICAgTWVkaWFUcmFuc3BvcnRJ
bnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCwKKyAgICBUcmFuc3BvcnQqIHJ0Y3Bfc2VuZF90cmFu
c3BvcnQsCisgICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9sb2csCisgICAgdWludDMyX3QgcmVt
b3RlX3NzcmMsCisgICAgc2l6ZV90IGppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMsCisgICAgYm9v
bCBqaXR0ZXJfYnVmZmVyX2Zhc3RfcGxheW91dCwKKyAgICBpbnQgaml0dGVyX2J1ZmZlcl9taW5f
ZGVsYXlfbXMsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGRl
Y29kZXJfZmFjdG9yeSwKKyAgICBhYnNsOjpvcHRpb25hbDxBdWRpb0NvZGVjUGFpcklkPiBjb2Rl
Y19wYWlyX2lkLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFj
ZT4gZnJhbWVfZGVjcnlwdG9yLAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5
cHRvX29wdGlvbnMpOworCiB9ICAvLyBuYW1lc3BhY2Ugdm9lCiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZV9wcm94eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZV9wcm94eS5jYwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFjMWM0NTgzMjZhYzlhZDkyZjJlNTkzODNmMDQx
MzdjODljNjI5NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVs
X3JlY2VpdmVfcHJveHkuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxOTcgKzAsMCBAQAotLyoKLSAq
ICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJhdWRpby9jaGFubmVsX3JlY2VpdmVfcHJveHku
aCIKLQotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNpbmNsdWRlICJhcGkvY2FsbC9hdWRpb19zaW5r
LmgiCi0jaW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9zZW5kX3Byb3h5LmgiCi0jaW5jbHVkZSAiY2Fs
bC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7
Ci1uYW1lc3BhY2Ugdm9lIHsKLUNoYW5uZWxSZWNlaXZlUHJveHk6OkNoYW5uZWxSZWNlaXZlUHJv
eHkoKSB7fQotCi1DaGFubmVsUmVjZWl2ZVByb3h5OjpDaGFubmVsUmVjZWl2ZVByb3h5KAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxDaGFubmVsUmVjZWl2ZT4gY2hhbm5lbCkKLSAgICA6IGNoYW5uZWxf
KHN0ZDo6bW92ZShjaGFubmVsKSkgewotICBSVENfRENIRUNLKGNoYW5uZWxfKTsKLSAgbW9kdWxl
X3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZyb21UaHJlYWQoKTsKLX0KLQotQ2hhbm5l
bFJlY2VpdmVQcm94eTo6fkNoYW5uZWxSZWNlaXZlUHJveHkoKSB7fQotCi12b2lkIENoYW5uZWxS
ZWNlaXZlUHJveHk6OlNldExvY2FsU1NSQyh1aW50MzJfdCBzc3JjKSB7Ci0gIFJUQ19EQ0hFQ0so
d29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBpbnQgZXJy
b3IgPSBjaGFubmVsXy0+U2V0TG9jYWxTU1JDKHNzcmMpOwotICBSVENfRENIRUNLX0VRKDAsIGVy
cm9yKTsKLX0KLQotdm9pZCBDaGFubmVsUmVjZWl2ZVByb3h5OjpTZXROQUNLU3RhdHVzKGJvb2wg
ZW5hYmxlLCBpbnQgbWF4X3BhY2tldHMpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2No
ZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXROQUNLU3RhdHVz
KGVuYWJsZSwgbWF4X3BhY2tldHMpOwotfQotCi1DYWxsUmVjZWl2ZVN0YXRpc3RpY3MgQ2hhbm5l
bFJlY2VpdmVQcm94eTo6R2V0UlRDUFN0YXRpc3RpY3MoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0so
d29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBDYWxsUmVj
ZWl2ZVN0YXRpc3RpY3Mgc3RhdHMgPSB7MH07Ci0gIGludCBlcnJvciA9IGNoYW5uZWxfLT5HZXRS
VFBTdGF0aXN0aWNzKHN0YXRzKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Ci0gIHJldHVy
biBzdGF0czsKLX0KLQotYm9vbCBDaGFubmVsUmVjZWl2ZVByb3h5OjpSZWNlaXZlZFJUQ1BQYWNr
ZXQoY29uc3QgdWludDhfdCogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCkgewotICAvLyBNYXkgYmUgY2FsbGVkIG9uIGVp
dGhlciB3b3JrZXIgdGhyZWFkIG9yIG5ldHdvcmsgdGhyZWFkLgotICByZXR1cm4gY2hhbm5lbF8t
PlJlY2VpdmVkUlRDUFBhY2tldChwYWNrZXQsIGxlbmd0aCkgPT0gMDsKLX0KLQotdm9pZCBDaGFu
bmVsUmVjZWl2ZVByb3h5OjpSZWdpc3RlclJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3Rz
KAotICAgIFBhY2tldFJvdXRlciogcGFja2V0X3JvdXRlcikgewotICBSVENfRENIRUNLKHdvcmtl
cl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlJl
Z2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMocGFja2V0X3JvdXRlcik7Ci19
Ci0KLXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6UmVzZXRSZWNlaXZlckNvbmdlc3Rpb25Db250
cm9sT2JqZWN0cygpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxl
ZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5SZXNldFJlY2VpdmVyQ29uZ2VzdGlvbkNv
bnRyb2xPYmplY3RzKCk7Ci19Ci0KLU5ldHdvcmtTdGF0aXN0aWNzIENoYW5uZWxSZWNlaXZlUHJv
eHk6OkdldE5ldHdvcmtTdGF0aXN0aWNzKCkgY29uc3QgewotICBSVENfRENIRUNLKHdvcmtlcl90
aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgTmV0d29ya1N0YXRpc3Rp
Y3Mgc3RhdHMgPSB7MH07Ci0gIGludCBlcnJvciA9IGNoYW5uZWxfLT5HZXROZXR3b3JrU3RhdGlz
dGljcyhzdGF0cyk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwotICByZXR1cm4gc3RhdHM7
Ci19Ci0KLUF1ZGlvRGVjb2RpbmdDYWxsU3RhdHMgQ2hhbm5lbFJlY2VpdmVQcm94eTo6R2V0RGVj
b2RpbmdDYWxsU3RhdGlzdGljcygpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIEF1ZGlvRGVjb2RpbmdDYWxsU3Rh
dHMgc3RhdHM7Ci0gIGNoYW5uZWxfLT5HZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKCZzdGF0cyk7
Ci0gIHJldHVybiBzdGF0czsKLX0KLQotaW50IENoYW5uZWxSZWNlaXZlUHJveHk6OkdldFNwZWVj
aE91dHB1dExldmVsRnVsbFJhbmdlKCkgY29uc3QgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJl
YWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgcmV0dXJuIGNoYW5uZWxfLT5H
ZXRTcGVlY2hPdXRwdXRMZXZlbEZ1bGxSYW5nZSgpOwotfQotCi1kb3VibGUgQ2hhbm5lbFJlY2Vp
dmVQcm94eTo6R2V0VG90YWxPdXRwdXRFbmVyZ3koKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29y
a2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hh
bm5lbF8tPkdldFRvdGFsT3V0cHV0RW5lcmd5KCk7Ci19Ci0KLWRvdWJsZSBDaGFubmVsUmVjZWl2
ZVByb3h5OjpHZXRUb3RhbE91dHB1dER1cmF0aW9uKCkgY29uc3QgewotICBSVENfRENIRUNLKHdv
cmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgcmV0dXJuIGNo
YW5uZWxfLT5HZXRUb3RhbE91dHB1dER1cmF0aW9uKCk7Ci19Ci0KLXVpbnQzMl90IENoYW5uZWxS
ZWNlaXZlUHJveHk6OkdldERlbGF5RXN0aW1hdGUoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29y
a2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkgfHwKLSAgICAgICAgICAg
ICBtb2R1bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsK
LSAgcmV0dXJuIGNoYW5uZWxfLT5HZXREZWxheUVzdGltYXRlKCk7Ci19Ci0KLXZvaWQgQ2hhbm5l
bFJlY2VpdmVQcm94eTo6U2V0UmVjZWl2ZUNvZGVjcygKLSAgICBjb25zdCBzdGQ6Om1hcDxpbnQs
IFNkcEF1ZGlvRm9ybWF0PiYgY29kZWNzKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9j
aGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+U2V0UmVjZWl2ZUNv
ZGVjcyhjb2RlY3MpOwotfQotCi12b2lkIENoYW5uZWxSZWNlaXZlUHJveHk6OlNldFNpbmsoQXVk
aW9TaW5rSW50ZXJmYWNlKiBzaW5rKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVj
a2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+U2V0U2luayhzaW5rKTsK
LX0KLQotdm9pZCBDaGFubmVsUmVjZWl2ZVByb3h5OjpPblJ0cFBhY2tldChjb25zdCBSdHBQYWNr
ZXRSZWNlaXZlZCYgcGFja2V0KSB7Ci0gIC8vIE1heSBiZSBjYWxsZWQgb24gZWl0aGVyIHdvcmtl
ciB0aHJlYWQgb3IgbmV0d29yayB0aHJlYWQuCi0gIGNoYW5uZWxfLT5PblJ0cFBhY2tldChwYWNr
ZXQpOwotfQotCi12b2lkIENoYW5uZWxSZWNlaXZlUHJveHk6OlNldENoYW5uZWxPdXRwdXRWb2x1
bWVTY2FsaW5nKGZsb2F0IHNjYWxpbmcpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2No
ZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRDaGFubmVsT3V0
cHV0Vm9sdW1lU2NhbGluZyhzY2FsaW5nKTsKLX0KLQotQXVkaW9NaXhlcjo6U291cmNlOjpBdWRp
b0ZyYW1lSW5mbyBDaGFubmVsUmVjZWl2ZVByb3h5OjpHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCi0g
ICAgaW50IHNhbXBsZV9yYXRlX2h6LAotICAgIEF1ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKSB7Ci0g
IFJUQ19EQ0hFQ0tfUlVOU19TRVJJQUxJWkVEKCZhdWRpb190aHJlYWRfcmFjZV9jaGVja2VyXyk7
Ci0gIHJldHVybiBjaGFubmVsXy0+R2V0QXVkaW9GcmFtZVdpdGhJbmZvKHNhbXBsZV9yYXRlX2h6
LCBhdWRpb19mcmFtZSk7Ci19Ci0KLWludCBDaGFubmVsUmVjZWl2ZVByb3h5OjpQcmVmZXJyZWRT
YW1wbGVSYXRlKCkgY29uc3QgewotICBSVENfRENIRUNLX1JVTlNfU0VSSUFMSVpFRCgmYXVkaW9f
dGhyZWFkX3JhY2VfY2hlY2tlcl8pOwotICByZXR1cm4gY2hhbm5lbF8tPlByZWZlcnJlZFNhbXBs
ZVJhdGUoKTsKLX0KLQotdm9pZCBDaGFubmVsUmVjZWl2ZVByb3h5OjpBc3NvY2lhdGVTZW5kQ2hh
bm5lbCgKLSAgICBjb25zdCBDaGFubmVsU2VuZFByb3h5JiBzZW5kX2NoYW5uZWxfcHJveHkpIHsK
LSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQo
KSk7Ci0gIGNoYW5uZWxfLT5TZXRBc3NvY2lhdGVkU2VuZENoYW5uZWwoc2VuZF9jaGFubmVsX3By
b3h5LkdldENoYW5uZWwoKSk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6RGlzYXNz
b2NpYXRlU2VuZENoYW5uZWwoKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2Vy
Xy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+U2V0QXNzb2NpYXRlZFNlbmRD
aGFubmVsKG51bGxwdHIpOwotfQotCi1hYnNsOjpvcHRpb25hbDxTeW5jYWJsZTo6SW5mbz4gQ2hh
bm5lbFJlY2VpdmVQcm94eTo6R2V0U3luY0luZm8oKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sobW9k
dWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHJl
dHVybiBjaGFubmVsXy0+R2V0U3luY0luZm8oKTsKLX0KLQotdWludDMyX3QgQ2hhbm5lbFJlY2Vp
dmVQcm94eTo6R2V0UGxheW91dFRpbWVzdGFtcCgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDS19SVU5T
X1NFUklBTElaRUQoJnZpZGVvX2NhcHR1cmVfdGhyZWFkX3JhY2VfY2hlY2tlcl8pOwotICB1bnNp
Z25lZCBpbnQgdGltZXN0YW1wID0gMDsKLSAgaW50IGVycm9yID0gY2hhbm5lbF8tPkdldFBsYXlv
dXRUaW1lc3RhbXAodGltZXN0YW1wKTsKLSAgUlRDX0RDSEVDSyghZXJyb3IgfHwgdGltZXN0YW1w
ID09IDApOwotICByZXR1cm4gdGltZXN0YW1wOwotfQotCi12b2lkIENoYW5uZWxSZWNlaXZlUHJv
eHk6OlNldE1pbmltdW1QbGF5b3V0RGVsYXkoaW50IGRlbGF5X21zKSB7Ci0gIFJUQ19EQ0hFQ0so
bW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0g
IC8vIExpbWl0IHRvIHJhbmdlIGFjY2VwdGVkIGJ5IGJvdGggVm9FIGFuZCBBQ00sIHNvIHdlJ3Jl
IGF0IGxlYXN0IGdldHRpbmcgYXMKLSAgLy8gY2xvc2UgYXMgcG9zc2libGUsIGluc3RlYWQgb2Yg
ZmFpbGluZy4KLSAgZGVsYXlfbXMgPSBydGM6OlNhZmVDbGFtcChkZWxheV9tcywgMCwgMTAwMDAp
OwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+U2V0TWluaW11bVBsYXlvdXREZWxheShkZWxheV9t
cyk7Ci0gIGlmICgwICE9IGVycm9yKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRXJy
b3Igc2V0dGluZyBtaW5pbXVtIHBsYXlvdXQgZGVsYXkuIjsKLSAgfQotfQotCi1ib29sIENoYW5u
ZWxSZWNlaXZlUHJveHk6OkdldFJlY0NvZGVjKENvZGVjSW5zdCogY29kZWNfaW5zdCkgY29uc3Qg
ewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVh
ZCgpKTsKLSAgcmV0dXJuIGNoYW5uZWxfLT5HZXRSZWNDb2RlYygqY29kZWNfaW5zdCkgPT0gMDsK
LX0KLQotc3RkOjp2ZWN0b3I8UnRwU291cmNlPiBDaGFubmVsUmVjZWl2ZVByb3h5OjpHZXRTb3Vy
Y2VzKCkgY29uc3QgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVk
T25WYWxpZFRocmVhZCgpKTsKLSAgcmV0dXJuIGNoYW5uZWxfLT5HZXRTb3VyY2VzKCk7Ci19Ci0K
LXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6U3RhcnRQbGF5b3V0KCkgewotICBSVENfRENIRUNL
KHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgaW50IGVy
cm9yID0gY2hhbm5lbF8tPlN0YXJ0UGxheW91dCgpOwotICBSVENfRENIRUNLX0VRKDAsIGVycm9y
KTsKLX0KLQotdm9pZCBDaGFubmVsUmVjZWl2ZVByb3h5OjpTdG9wUGxheW91dCgpIHsKLSAgUlRD
X0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0g
IGludCBlcnJvciA9IGNoYW5uZWxfLT5TdG9wUGxheW91dCgpOwotICBSVENfRENIRUNLX0VRKDAs
IGVycm9yKTsKLX0KLX0gIC8vIG5hbWVzcGFjZSB2b2UKLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1
ZGlvL2NoYW5uZWxfcmVjZWl2ZV9wcm94eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDhlYmFjYzMwMGRjZmUzYTcyNWU5Yzk0MDkwM2ZkMDhiOWRmYjc1
NTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZl
X3Byb3h5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgKGMpIDIwMTUgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgotICovCi0KLSNpZm5kZWYgQVVESU9fQ0hBTk5FTF9SRUNFSVZFX1BST1hZX0hfCi0jZGVmaW5l
IEFVRElPX0NIQU5ORUxfUkVDRUlWRV9QUk9YWV9IXwotCi0jaW5jbHVkZSA8bWFwPgotI2luY2x1
ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJhcGkvYXVkaW8vYXVk
aW9fbWl4ZXIuaCIKLSNpbmNsdWRlICJhcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKLSNpbmNs
dWRlICJhdWRpby9jaGFubmVsX3JlY2VpdmUuaCIKLSNpbmNsdWRlICJjYWxsL3J0cF9wYWNrZXRf
c2lua19pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
dGhyZWFkX2NoZWNrZXIuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIEF1ZGlvU2lu
a0ludGVyZmFjZTsKLWNsYXNzIFBhY2tldFJvdXRlcjsKLWNsYXNzIFJ0cFBhY2tldFJlY2VpdmVk
OwotY2xhc3MgVHJhbnNwb3J0OwotCi1uYW1lc3BhY2Ugdm9lIHsKLQotY2xhc3MgQ2hhbm5lbFNl
bmRQcm94eTsKLQotLy8gVGhpcyBjbGFzcyBwcm92aWRlcyB0aGUgInZpZXciIG9mIGEgdm9lOjpD
aGFubmVsIHRoYXQgd2UgbmVlZCB0byBpbXBsZW1lbnQKLS8vIHdlYnJ0Yzo6QXVkaW9SZWNlaXZl
U3RyZWFtLiBJdCBzZXJ2ZXMgdHdvIHB1cnBvc2VzOgotLy8gIDEuIEFsbG93IG1vY2tpbmcganVz
dCB0aGUgaW50ZXJmYWNlcyB1c2VkLCBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUKLS8vICAgICB2b2U6
OkNoYW5uZWwgY2xhc3MuCi0vLyAgMi4gUHJvdmlkZSBhIHJlZmluZWQgaW50ZXJmYWNlIGZvciB0
aGUgc3RyZWFtIGNsYXNzZXMsIGluY2x1ZGluZyBhc3N1bXB0aW9ucwotLy8gICAgIG9uIHJldHVy
biB2YWx1ZXMgYW5kIGlucHV0IGFkYXB0YXRpb24uCi1jbGFzcyBDaGFubmVsUmVjZWl2ZVByb3h5
IDogcHVibGljIFJ0cFBhY2tldFNpbmtJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgQ2hhbm5lbFJl
Y2VpdmVQcm94eSgpOwotICBleHBsaWNpdCBDaGFubmVsUmVjZWl2ZVByb3h5KHN0ZDo6dW5pcXVl
X3B0cjxDaGFubmVsUmVjZWl2ZT4gY2hhbm5lbCk7Ci0gIHZpcnR1YWwgfkNoYW5uZWxSZWNlaXZl
UHJveHkoKTsKLQotICAvLyBTaGFyZWQgd2l0aCBDaGFubmVsU2VuZFByb3h5Ci0gIHZpcnR1YWwg
dm9pZCBTZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYyk7Ci0gIHZpcnR1YWwgdm9pZCBTZXROQUNL
U3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4X3BhY2tldHMpOwotICB2aXJ0dWFsIENhbGxSZWNl
aXZlU3RhdGlzdGljcyBHZXRSVENQU3RhdGlzdGljcygpIGNvbnN0OwotICB2aXJ0dWFsIGJvb2wg
UmVjZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IGxlbmd0aCk7
Ci0KLSAgdmlydHVhbCB2b2lkIFJlZ2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVj
dHMoCi0gICAgICBQYWNrZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXIpOwotICB2aXJ0dWFsIHZvaWQg
UmVzZXRSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpOwotICB2aXJ0dWFsIE5ldHdv
cmtTdGF0aXN0aWNzIEdldE5ldHdvcmtTdGF0aXN0aWNzKCkgY29uc3Q7Ci0gIHZpcnR1YWwgQXVk
aW9EZWNvZGluZ0NhbGxTdGF0cyBHZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKCkgY29uc3Q7Ci0g
IHZpcnR1YWwgaW50IEdldFNwZWVjaE91dHB1dExldmVsRnVsbFJhbmdlKCkgY29uc3Q7Ci0gIC8v
IFNlZSBkZXNjcmlwdGlvbiBvZiAidG90YWxBdWRpb0VuZXJneSIgaW4gdGhlIFdlYlJUQyBzdGF0
cyBzcGVjOgotICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNkb20tcnRj
bWVkaWFzdHJlYW10cmFja3N0YXRzLXRvdGFsYXVkaW9lbmVyZ3kKLSAgdmlydHVhbCBkb3VibGUg
R2V0VG90YWxPdXRwdXRFbmVyZ3koKSBjb25zdDsKLSAgdmlydHVhbCBkb3VibGUgR2V0VG90YWxP
dXRwdXREdXJhdGlvbigpIGNvbnN0OwotICB2aXJ0dWFsIHVpbnQzMl90IEdldERlbGF5RXN0aW1h
dGUoKSBjb25zdDsKLSAgdmlydHVhbCB2b2lkIFNldFJlY2VpdmVDb2RlY3MoY29uc3Qgc3RkOjpt
YXA8aW50LCBTZHBBdWRpb0Zvcm1hdD4mIGNvZGVjcyk7Ci0gIHZpcnR1YWwgdm9pZCBTZXRTaW5r
KEF1ZGlvU2lua0ludGVyZmFjZSogc2luayk7Ci0KLSAgLy8gSW1wbGVtZW50cyBSdHBQYWNrZXRT
aW5rSW50ZXJmYWNlCi0gIHZvaWQgT25SdHBQYWNrZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQm
IHBhY2tldCkgb3ZlcnJpZGU7Ci0KLSAgdmlydHVhbCB2b2lkIFNldENoYW5uZWxPdXRwdXRWb2x1
bWVTY2FsaW5nKGZsb2F0IHNjYWxpbmcpOwotICB2aXJ0dWFsIEF1ZGlvTWl4ZXI6OlNvdXJjZTo6
QXVkaW9GcmFtZUluZm8gR2V0QXVkaW9GcmFtZVdpdGhJbmZvKAotICAgICAgaW50IHNhbXBsZV9y
YXRlX2h6LAotICAgICAgQXVkaW9GcmFtZSogYXVkaW9fZnJhbWUpOwotICB2aXJ0dWFsIGludCBQ
cmVmZXJyZWRTYW1wbGVSYXRlKCkgY29uc3Q7Ci0gIHZpcnR1YWwgdm9pZCBBc3NvY2lhdGVTZW5k
Q2hhbm5lbChjb25zdCBDaGFubmVsU2VuZFByb3h5JiBzZW5kX2NoYW5uZWxfcHJveHkpOwotICB2
aXJ0dWFsIHZvaWQgRGlzYXNzb2NpYXRlU2VuZENoYW5uZWwoKTsKLQotICAvLyBQcm9kdWNlcyB0
aGUgdHJhbnNwb3J0LXJlbGF0ZWQgdGltZXN0YW1wczsgY3VycmVudF9kZWxheV9tcyBpcyBsZWZ0
IHVuc2V0LgotICBhYnNsOjpvcHRpb25hbDxTeW5jYWJsZTo6SW5mbz4gR2V0U3luY0luZm8oKSBj
b25zdDsKLSAgdmlydHVhbCB1aW50MzJfdCBHZXRQbGF5b3V0VGltZXN0YW1wKCkgY29uc3Q7Ci0g
IHZpcnR1YWwgdm9pZCBTZXRNaW5pbXVtUGxheW91dERlbGF5KGludCBkZWxheV9tcyk7Ci0gIHZp
cnR1YWwgYm9vbCBHZXRSZWNDb2RlYyhDb2RlY0luc3QqIGNvZGVjX2luc3QpIGNvbnN0OwotICB2
aXJ0dWFsIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNlPiBHZXRTb3VyY2VzKCkgY29uc3Q7
Ci0gIHZpcnR1YWwgdm9pZCBTdGFydFBsYXlvdXQoKTsKLSAgdmlydHVhbCB2b2lkIFN0b3BQbGF5
b3V0KCk7Ci0KLSBwcml2YXRlOgotICAvLyBUaHJlYWQgY2hlY2tlcnMgZG9jdW1lbnQgYW5kIGxv
Y2sgdXNhZ2Ugb2Ygc29tZSBtZXRob2RzIG9uIHZvZTo6Q2hhbm5lbCB0bwotICAvLyBzcGVjaWZp
YyB0aHJlYWRzIHdlIGtub3cgYWJvdXQuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgc3BsaXQg
dXAKLSAgLy8gdm9lOjpDaGFubmVsIGludG8gcGFydHMgd2l0aCBzaW5nbGUtdGhyZWFkZWQgc2Vt
YW50aWNzLCBhbmQgdGhlcmVieSByZWR1Y2UKLSAgLy8gdGhlIG5lZWQgZm9yIGxvY2tzLgotICBy
dGM6OlRocmVhZENoZWNrZXIgd29ya2VyX3RocmVhZF9jaGVja2VyXzsKLSAgcnRjOjpUaHJlYWRD
aGVja2VyIG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXzsKLSAgLy8gTWV0aG9kcyBhY2Nl
c3NlZCBmcm9tIGF1ZGlvIGFuZCB2aWRlbyB0aHJlYWRzIGFyZSBjaGVja2VkIGZvciBzZXF1ZW50
aWFsLQotICAvLyBvbmx5IGFjY2Vzcy4gV2UgZG9uJ3QgbmVjZXNzYXJpbHkgb3duIGFuZCBjb250
cm9sIHRoZXNlIHRocmVhZHMsIHNvIHRocmVhZAotICAvLyBjaGVja2VycyBjYW5ub3QgYmUgdXNl
ZC4gRS5nLiBDaHJvbWl1bSBtYXkgdHJhbnNmZXIgIm93bmVyc2hpcCIgZnJvbSBvbmUKLSAgLy8g
YXVkaW8gdGhyZWFkIHRvIGFub3RoZXIsIGJ1dCBhY2Nlc3MgaXMgc3RpbGwgc2VxdWVudGlhbC4K
LSAgcnRjOjpSYWNlQ2hlY2tlciBhdWRpb190aHJlYWRfcmFjZV9jaGVja2VyXzsKLSAgcnRjOjpS
YWNlQ2hlY2tlciB2aWRlb19jYXB0dXJlX3RocmVhZF9yYWNlX2NoZWNrZXJfOwotICBzdGQ6OnVu
aXF1ZV9wdHI8Q2hhbm5lbFJlY2VpdmU+IGNoYW5uZWxfOwotCi0gIFJUQ19ESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oQ2hhbm5lbFJlY2VpdmVQcm94eSk7Ci19OwotfSAgLy8gbmFtZXNwYWNlIHZv
ZQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIEFVRElPX0NIQU5ORUxfUkVD
RUlWRV9QUk9YWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9zZW5kLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9zZW5kLmNjCmluZGV4IGQzNzQ4YjM5
OTA5YTQ5M2UzMmFkMjE5NmRmOTI2NjQ0YWE4NTJiOTguLmM0NThmZTQ2NWIwNzA4MGQ0ZjEyNjMy
YjgxZjgxN2I2MmEzZDE0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2VuZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmQuY2MKQEAgLTE5
LDE5ICsxOSwyNSBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVk
ZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKICNp
bmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
YXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiY2FsbC9y
dHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJsb2dn
aW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19wbGF5b3V0LmgiCiAjaW5j
bHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19u
ZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
aW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3Jtc19sZXZlbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2tldF9y
b3V0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3V0aWxpdHkvaW5jbHVkZS9wcm9jZXNzX3RocmVh
ZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Ny
aXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVy
aWNzL3NhZmVfY29udmVyc2lvbnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9yYWNlX2NoZWNrZXIu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9yYXRlX2xpbWl0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS90YXNrX3F1ZXVlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKQEAg
LTQ3LDcgKzUzLDI1OSBAQCBuYW1lc3BhY2UgewogY29uc3RleHByIGludDY0X3Qga01heFJldHJh
bnNtaXNzaW9uV2luZG93TXMgPSAxMDAwOwogY29uc3RleHByIGludDY0X3Qga01pblJldHJhbnNt
aXNzaW9uV2luZG93TXMgPSAzMDsKIAotfSAgLy8gbmFtZXNwYWNlCitNZWRpYVRyYW5zcG9ydEVu
Y29kZWRBdWRpb0ZyYW1lOjpGcmFtZVR5cGUKK01lZGlhVHJhbnNwb3J0RnJhbWVUeXBlRm9yV2Vi
cnRjRnJhbWVUeXBlKHdlYnJ0Yzo6RnJhbWVUeXBlIGZyYW1lX3R5cGUpIHsKKyAgc3dpdGNoIChm
cmFtZV90eXBlKSB7CisgICAgY2FzZSBrQXVkaW9GcmFtZVNwZWVjaDoKKyAgICAgIHJldHVybiBN
ZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lOjpGcmFtZVR5cGU6OmtTcGVlY2g7CisgICAg
ICBicmVhazsKKworICAgIGNhc2Uga0F1ZGlvRnJhbWVDTjoKKyAgICAgIHJldHVybiBNZWRpYVRy
YW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lOjpGcmFtZVR5cGU6OgorICAgICAgICAgIGtEaXNjb250
aW51b3VzVHJhbnNtaXNzaW9uOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAg
UlRDX0NIRUNLKGZhbHNlKSA8PCAiVW5leHBlY3RlZCBmcmFtZSB0eXBlPSIgPDwgZnJhbWVfdHlw
ZTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK2NsYXNzIFJ0cFBhY2tldFNlbmRlclByb3h5Owor
Y2xhc3MgVHJhbnNwb3J0RmVlZGJhY2tQcm94eTsKK2NsYXNzIFRyYW5zcG9ydFNlcXVlbmNlTnVt
YmVyUHJveHk7CitjbGFzcyBWb0VSdGNwT2JzZXJ2ZXI7CisKK2NsYXNzIENoYW5uZWxTZW5kCisg
ICAgOiBwdWJsaWMgQ2hhbm5lbFNlbmRJbnRlcmZhY2UsCisgICAgICBwdWJsaWMgVHJhbnNwb3J0
LAorICAgICAgcHVibGljIE92ZXJoZWFkT2JzZXJ2ZXIsCisgICAgICBwdWJsaWMgQXVkaW9QYWNr
ZXRpemF0aW9uQ2FsbGJhY2ssICAvLyByZWNlaXZlIGVuY29kZWQgcGFja2V0cyBmcm9tIHRoZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQUNNCisgICAgICBw
dWJsaWMgVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIgeworIHB1YmxpYzoKKyAgLy8gVE9ETyhu
aXNzZSk6IE1ha2UgT25VcGxpbmtQYWNrZXRMb3NzUmF0ZSBwdWJsaWMsIGFuZCBkZWxldGUgZnJp
ZW5kCisgIC8vIGRlY2xhcmF0aW9uLgorICBmcmllbmQgY2xhc3MgVm9FUnRjcE9ic2VydmVyOwor
CisgIENoYW5uZWxTZW5kKHJ0Yzo6VGFza1F1ZXVlKiBlbmNvZGVyX3F1ZXVlLAorICAgICAgICAg
ICAgICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCisgICAgICAgICAgICAg
IE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQsCisgICAgICAgICAgICAg
IFRyYW5zcG9ydCogcnRwX3RyYW5zcG9ydCwKKyAgICAgICAgICAgICAgUnRjcFJ0dFN0YXRzKiBy
dGNwX3J0dF9zdGF0cywKKyAgICAgICAgICAgICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9sb2cs
CisgICAgICAgICAgICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3Is
CisgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlv
bnMsCisgICAgICAgICAgICAgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkLAorICAgICAgICAgICAg
ICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMpOworCisgIH5DaGFubmVsU2VuZCgpIG92ZXJy
aWRlOworCisgIC8vIFNlbmQgdXNpbmcgdGhpcyBlbmNvZGVyLCB3aXRoIHRoaXMgcGF5bG9hZCB0
eXBlLgorICBib29sIFNldEVuY29kZXIoaW50IHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29kZXIpIG92ZXJyaWRlOworICB2
b2lkIE1vZGlmeUVuY29kZXIocnRjOjpGdW5jdGlvblZpZXc8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9FbmNvZGVyPiopPgorICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyKSBvdmVy
cmlkZTsKKworICAvLyBBUEkgbWV0aG9kcworICB2b2lkIFN0YXJ0U2VuZCgpIG92ZXJyaWRlOwor
ICB2b2lkIFN0b3BTZW5kKCkgb3ZlcnJpZGU7CisKKyAgLy8gQ29kZWNzCisgIHZvaWQgT25CaXRy
YXRlQWxsb2NhdGlvbihCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpIG92ZXJyaWRlOwor
ICBpbnQgR2V0Qml0cmF0ZSgpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIE5ldHdvcmsKKyAgYm9v
bCBSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
b3ZlcnJpZGU7CisKKyAgLy8gTXV0aW5nLCBWb2x1bWUgYW5kIExldmVsLgorICB2b2lkIFNldElu
cHV0TXV0ZShib29sIGVuYWJsZSkgb3ZlcnJpZGU7CisKKyAgLy8gU3RhdHMuCisgIEFOQVN0YXRz
IEdldEFOQVN0YXRpc3RpY3MoKSBjb25zdCBvdmVycmlkZTsKKworICAvLyBVc2VkIGJ5IEF1ZGlv
U2VuZFN0cmVhbS4KKyAgUnRwUnRjcCogR2V0UnRwUnRjcCgpIGNvbnN0IG92ZXJyaWRlOworCisg
IC8vIERUTUYuCisgIGJvb2wgU2VuZFRlbGVwaG9uZUV2ZW50T3V0YmFuZChpbnQgZXZlbnQsIGlu
dCBkdXJhdGlvbl9tcykgb3ZlcnJpZGU7CisgIGJvb2wgU2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5
bG9hZFR5cGUoaW50IHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgcGF5bG9hZF9mcmVxdWVuY3kpIG92ZXJyaWRlOworCisgIC8vIFJUUCtS
VENQCisgIHZvaWQgU2V0TG9jYWxTU1JDKHVpbnQzMl90IHNzcmMpIG92ZXJyaWRlOworICB2b2lk
IFNldE1pZChjb25zdCBzdGQ6OnN0cmluZyYgbWlkLCBpbnQgZXh0ZW5zaW9uX2lkKSBvdmVycmlk
ZTsKKyAgdm9pZCBTZXRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSBv
dmVycmlkZTsKKyAgdm9pZCBTZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25TdGF0dXMoYm9vbCBl
bmFibGUsIGludCBpZCkgb3ZlcnJpZGU7CisgIHZvaWQgRW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVl
bmNlTnVtYmVyKGludCBpZCkgb3ZlcnJpZGU7CisKKyAgdm9pZCBSZWdpc3RlclNlbmRlckNvbmdl
c3Rpb25Db250cm9sT2JqZWN0cygKKyAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50
ZXJmYWNlKiB0cmFuc3BvcnQsCisgICAgICBSdGNwQmFuZHdpZHRoT2JzZXJ2ZXIqIGJhbmR3aWR0
aF9vYnNlcnZlcikgb3ZlcnJpZGU7CisgIHZvaWQgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJv
bE9iamVjdHMoKSBvdmVycmlkZTsKKyAgdm9pZCBTZXRSVENQX0NOQU1FKGFic2w6OnN0cmluZ192
aWV3IGNfbmFtZSkgb3ZlcnJpZGU7CisgIHN0ZDo6dmVjdG9yPFJlcG9ydEJsb2NrPiBHZXRSZW1v
dGVSVENQUmVwb3J0QmxvY2tzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIENhbGxTZW5kU3RhdGlzdGlj
cyBHZXRSVENQU3RhdGlzdGljcygpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIFByb2Nlc3NBbmRF
bmNvZGVBdWRpbygpIHBvc3RzIGEgdGFzayBvbiB0aGUgc2hhcmVkIGVuY29kZXIgdGFzayBxdWV1
ZSwKKyAgLy8gd2hpY2ggaW4gdHVybiBjYWxscyAob24gdGhlIHF1ZXVlKSBQcm9jZXNzQW5kRW5j
b2RlQXVkaW9PblRhc2tRdWV1ZSgpIHdoZXJlCisgIC8vIHRoZSBhY3R1YWwgcHJvY2Vzc2luZyBv
ZiB0aGUgYXVkaW8gdGFrZXMgcGxhY2UuIFRoZSBwcm9jZXNzaW5nIG1haW5seQorICAvLyBjb25z
aXN0cyBvZiBlbmNvZGluZyBhbmQgcHJlcGFyaW5nIHRoZSByZXN1bHQgZm9yIHNlbmRpbmcgYnkg
YWRkaW5nIGl0IHRvIGEKKyAgLy8gc2VuZCBxdWV1ZS4KKyAgLy8gVGhlIG1haW4gcmVhc29uIGZv
ciB1c2luZyBhIHRhc2sgcXVldWUgaGVyZSBpcyB0byByZWxlYXNlIHRoZSBuYXRpdmUsCisgIC8v
IE9TLXNwZWNpZmljLCBhdWRpbyBjYXB0dXJlIHRocmVhZCBhcyBzb29uIGFzIHBvc3NpYmxlIHRv
IGVuc3VyZSB0aGF0IGl0CisgIC8vIGNhbiBnbyBiYWNrIHRvIHNsZWVwIGFuZCBiZSBwcmVwYXJl
ZCB0byBkZWxpdmVyIGFuIG5ldyBjYXB0dXJlZCBhdWRpbworICAvLyBwYWNrZXQuCisgIHZvaWQg
UHJvY2Vzc0FuZEVuY29kZUF1ZGlvKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19m
cmFtZSkgb3ZlcnJpZGU7CisKKyAgdm9pZCBTZXRUcmFuc3BvcnRPdmVyaGVhZChzaXplX3QgdHJh
bnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpIG92ZXJyaWRlOworCisgIC8vIFRoZSBleGlzdGVu
Y2Ugb2YgdGhpcyBmdW5jdGlvbiBhbG9uZ3NpZGUgT25VcGxpbmtQYWNrZXRMb3NzUmF0ZSBpcwor
ICAvLyBhIGNvbXByb21pc2UuIFdlIHdhbnQgdGhlIGVuY29kZXIgdG8gYmUgYWdub3N0aWMgb2Yg
dGhlIFBMUiBzb3VyY2UsIGJ1dAorICAvLyB3ZSBhbHNvIGRvbid0IHdhbnQgaXQgdG8gcmVjZWl2
ZSBjb25mbGljdGluZyBpbmZvcm1hdGlvbiBmcm9tIFRXQ0MgYW5kCisgIC8vIGZyb20gUlRDUC1Y
Ui4KKyAgdm9pZCBPblR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0IHBhY2tldF9s
b3NzX3JhdGUpIG92ZXJyaWRlOworCisgIHZvaWQgT25SZWNvdmVyYWJsZVVwbGlua1BhY2tldExv
c3NSYXRlKAorICAgICAgZmxvYXQgcmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0ZSkgb3ZlcnJp
ZGU7CisKKyAgaW50NjRfdCBHZXRSVFQoKSBjb25zdCBvdmVycmlkZTsKKworICAvLyBFMkVFIEN1
c3RvbSBBdWRpbyBGcmFtZSBFbmNyeXB0aW9uCisgIHZvaWQgU2V0RnJhbWVFbmNyeXB0b3IoCisg
ICAgICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2Vu
Y3J5cHRvcikgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorICBjbGFzcyBQcm9jZXNzQW5kRW5jb2Rl
QXVkaW9UYXNrOworCisgIC8vIEZyb20gQXVkaW9QYWNrZXRpemF0aW9uQ2FsbGJhY2sgaW4gdGhl
IEFDTQorICBpbnQzMl90IFNlbmREYXRhKEZyYW1lVHlwZSBmcmFtZVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgdWludDhfdCBwYXlsb2FkVHlwZSwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCB0aW1lU3RhbXAsCisgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogcGF5bG9hZERh
dGEsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBheWxvYWRTaXplLAorICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFJUUEZyYWdtZW50YXRpb25IZWFkZXIqIGZyYWdtZW50YXRpb24pIG92ZXJy
aWRlOworCisgIC8vIEZyb20gVHJhbnNwb3J0IChjYWxsZWQgYnkgdGhlIFJUUC9SVENQIG1vZHVs
ZSkKKyAgYm9vbCBTZW5kUnRwKGNvbnN0IHVpbnQ4X3QqIGRhdGEsCisgICAgICAgICAgICAgICBz
aXplX3QgbGVuLAorICAgICAgICAgICAgICAgY29uc3QgUGFja2V0T3B0aW9ucyYgcGFja2V0X29w
dGlvbnMpIG92ZXJyaWRlOworICBib29sIFNlbmRSdGNwKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW4pIG92ZXJyaWRlOworCisgIC8vIEZyb20gT3ZlcmhlYWRPYnNlcnZlciBpbiB0aGUg
UlRQL1JUQ1AgbW9kdWxlCisgIHZvaWQgT25PdmVyaGVhZENoYW5nZWQoc2l6ZV90IG92ZXJoZWFk
X2J5dGVzX3Blcl9wYWNrZXQpIG92ZXJyaWRlOworCisgIHZvaWQgT25VcGxpbmtQYWNrZXRMb3Nz
UmF0ZShmbG9hdCBwYWNrZXRfbG9zc19yYXRlKTsKKyAgYm9vbCBJbnB1dE11dGUoKSBjb25zdDsK
KworICBpbnQgU2V0U2VuZFJ0cEhlYWRlckV4dGVuc2lvbihib29sIGVuYWJsZSwgUlRQRXh0ZW5z
aW9uVHlwZSB0eXBlLCBpbnQgaWQpOworCisgIHZvaWQgVXBkYXRlT3ZlcmhlYWRGb3JFbmNvZGVy
KCkKKyAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQob3ZlcmhlYWRfcGVyX3BhY2tl
dF9sb2NrXyk7CisKKyAgaW50MzJfdCBTZW5kUnRwQXVkaW8oRnJhbWVUeXBlIGZyYW1lVHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBwYXlsb2FkVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgdGltZVN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKTsKKworICBp
bnQzMl90IFNlbmRNZWRpYVRyYW5zcG9ydEF1ZGlvKEZyYW1lVHlwZSBmcmFtZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBwYXlsb2FkVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0aW1lU3RhbXAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4g
cGF5bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSVFBGcmFn
bWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKTsKKworICAvLyBSZXR1cm4gbWVkaWEgdHJh
bnNwb3J0IG9yIG51bGxwdHIgaWYgdXNpbmcgUlRQLgorICBNZWRpYVRyYW5zcG9ydEludGVyZmFj
ZSogbWVkaWFfdHJhbnNwb3J0KCkgeyByZXR1cm4gbWVkaWFfdHJhbnNwb3J0XzsgfQorCisgIC8v
IENhbGxlZCBvbiB0aGUgZW5jb2RlciB0YXNrIHF1ZXVlIHdoZW4gYSBuZXcgaW5wdXQgYXVkaW8g
ZnJhbWUgaXMgcmVhZHkKKyAgLy8gZm9yIGVuY29kaW5nLgorICB2b2lkIFByb2Nlc3NBbmRFbmNv
ZGVBdWRpb09uVGFza1F1ZXVlKEF1ZGlvRnJhbWUqIGF1ZGlvX2lucHV0KTsKKworICB2b2lkIE9u
UmVjZWl2ZWRSdHQoaW50NjRfdCBydHRfbXMpOworCisgIHZvaWQgT25UYXJnZXRUcmFuc2ZlclJh
dGUoVGFyZ2V0VHJhbnNmZXJSYXRlKSBvdmVycmlkZTsKKworICAvLyBUaHJlYWQgY2hlY2tlcnMg
ZG9jdW1lbnQgYW5kIGxvY2sgdXNhZ2Ugb2Ygc29tZSBtZXRob2RzIG9uIHZvZTo6Q2hhbm5lbCB0
bworICAvLyBzcGVjaWZpYyB0aHJlYWRzIHdlIGtub3cgYWJvdXQuIFRoZSBnb2FsIGlzIHRvIGV2
ZW50dWFsbHkgc3BsaXQgdXAKKyAgLy8gdm9lOjpDaGFubmVsIGludG8gcGFydHMgd2l0aCBzaW5n
bGUtdGhyZWFkZWQgc2VtYW50aWNzLCBhbmQgdGhlcmVieSByZWR1Y2UKKyAgLy8gdGhlIG5lZWQg
Zm9yIGxvY2tzLgorICBydGM6OlRocmVhZENoZWNrZXIgd29ya2VyX3RocmVhZF9jaGVja2VyXzsK
KyAgcnRjOjpUaHJlYWRDaGVja2VyIG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXzsKKyAg
Ly8gTWV0aG9kcyBhY2Nlc3NlZCBmcm9tIGF1ZGlvIGFuZCB2aWRlbyB0aHJlYWRzIGFyZSBjaGVj
a2VkIGZvciBzZXF1ZW50aWFsLQorICAvLyBvbmx5IGFjY2Vzcy4gV2UgZG9uJ3QgbmVjZXNzYXJp
bHkgb3duIGFuZCBjb250cm9sIHRoZXNlIHRocmVhZHMsIHNvIHRocmVhZAorICAvLyBjaGVja2Vy
cyBjYW5ub3QgYmUgdXNlZC4gRS5nLiBDaHJvbWl1bSBtYXkgdHJhbnNmZXIgIm93bmVyc2hpcCIg
ZnJvbSBvbmUKKyAgLy8gYXVkaW8gdGhyZWFkIHRvIGFub3RoZXIsIGJ1dCBhY2Nlc3MgaXMgc3Rp
bGwgc2VxdWVudGlhbC4KKyAgcnRjOjpSYWNlQ2hlY2tlciBhdWRpb190aHJlYWRfcmFjZV9jaGVj
a2VyXzsKKworICBydGM6OkNyaXRpY2FsU2VjdGlvbiBfY2FsbGJhY2tDcml0U2VjdDsKKyAgcnRj
OjpDcml0aWNhbFNlY3Rpb24gdm9sdW1lX3NldHRpbmdzX2NyaXRzZWN0XzsKKworICBib29sIHNl
bmRpbmdfIFJUQ19HVUFSREVEX0JZKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKSA9IGZhbHNlOwor
CisgIFJ0Y0V2ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOworCisgIHN0ZDo6dW5pcXVlX3B0cjxS
dHBSdGNwPiBfcnRwUnRjcE1vZHVsZTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Db2RpbmdN
b2R1bGU+IGF1ZGlvX2NvZGluZ187CisgIHVpbnQzMl90IF90aW1lU3RhbXAgUlRDX0dVQVJERURf
QlkoZW5jb2Rlcl9xdWV1ZV8pOworCisgIHVpbnQxNl90IHNlbmRfc2VxdWVuY2VfbnVtYmVyXzsK
KworICAvLyB1c2VzCisgIFByb2Nlc3NUaHJlYWQqIGNvbnN0IF9tb2R1bGVQcm9jZXNzVGhyZWFk
UHRyOworICBUcmFuc3BvcnQqIGNvbnN0IF90cmFuc3BvcnRQdHI7ICAvLyBXZWJSdGMgc29ja2V0
IG9yIGV4dGVybmFsIHRyYW5zcG9ydAorICBSbXNMZXZlbCBybXNfbGV2ZWxfIFJUQ19HVUFSREVE
X0JZKGVuY29kZXJfcXVldWVfKTsKKyAgYm9vbCBpbnB1dF9tdXRlXyBSVENfR1VBUkRFRF9CWSh2
b2x1bWVfc2V0dGluZ3NfY3JpdHNlY3RfKTsKKyAgYm9vbCBwcmV2aW91c19mcmFtZV9tdXRlZF8g
UlRDX0dVQVJERURfQlkoZW5jb2Rlcl9xdWV1ZV8pOworICAvLyBWb2VSVFBfUlRDUAorICAvLyBU
T0RPKGhlbnJpa2EpOiBjYW4gdG9kYXkgYmUgYWNjZXNzZWQgb24gdGhlIG1haW4gdGhyZWFkIGFu
ZCBvbiB0aGUKKyAgLy8gdGFzayBxdWV1ZTsgaGVuY2UgcG90ZW50aWFsIHJhY2UuCisgIGJvb2wg
X2luY2x1ZGVBdWRpb0xldmVsSW5kaWNhdGlvbjsKKyAgc2l6ZV90IHRyYW5zcG9ydF9vdmVyaGVh
ZF9wZXJfcGFja2V0XworICAgICAgUlRDX0dVQVJERURfQlkob3ZlcmhlYWRfcGVyX3BhY2tldF9s
b2NrXyk7CisgIHNpemVfdCBydHBfb3ZlcmhlYWRfcGVyX3BhY2tldF8gUlRDX0dVQVJERURfQlko
b3ZlcmhlYWRfcGVyX3BhY2tldF9sb2NrXyk7CisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIG92ZXJo
ZWFkX3Blcl9wYWNrZXRfbG9ja187CisgIC8vIFJ0Y3BCYW5kd2lkdGhPYnNlcnZlcgorICBjb25z
dCBzdGQ6OnVuaXF1ZV9wdHI8Vm9FUnRjcE9ic2VydmVyPiBydGNwX29ic2VydmVyXzsKKworICBQ
YWNrZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXJfIFJUQ19HVUFSREVEX0JZKCZ3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfKSA9CisgICAgICBudWxscHRyOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VHJh
bnNwb3J0RmVlZGJhY2tQcm94eT4gZmVlZGJhY2tfb2JzZXJ2ZXJfcHJveHlfOworICBjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJQcm94eT4gc2VxX251bV9hbGxv
Y2F0b3JfcHJveHlfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0U2VuZGVyUHJv
eHk+IHJ0cF9wYWNrZXRfc2VuZGVyX3Byb3h5XzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFJh
dGVMaW1pdGVyPiByZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfOworCisgIHJ0Yzo6VGhyZWFk
Q2hlY2tlciBjb25zdHJ1Y3Rpb25fdGhyZWFkXzsKKworICBjb25zdCBib29sIHVzZV90d2NjX3Bs
cl9mb3JfYW5hXzsKKworICBydGM6OkNyaXRpY2FsU2VjdGlvbiBlbmNvZGVyX3F1ZXVlX2xvY2tf
OworICBib29sIGVuY29kZXJfcXVldWVfaXNfYWN0aXZlXyBSVENfR1VBUkRFRF9CWShlbmNvZGVy
X3F1ZXVlX2xvY2tfKSA9IGZhbHNlOworICBydGM6OlRhc2tRdWV1ZSogY29uc3QgZW5jb2Rlcl9x
dWV1ZV8gPSBudWxscHRyOworCisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBjb25zdCBtZWRp
YV90cmFuc3BvcnRfOworICBpbnQgbWVkaWFfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl8gUlRD
X0dVQVJERURfQlkoZW5jb2Rlcl9xdWV1ZV8pID0gMDsKKworICBydGM6OkNyaXRpY2FsU2VjdGlv
biBtZWRpYV90cmFuc3BvcnRfbG9ja187CisgIC8vIEN1cnJlbnRseSBzZXQgYnkgU2V0TG9jYWxT
U1JDLgorICB1aW50NjRfdCBtZWRpYV90cmFuc3BvcnRfY2hhbm5lbF9pZF8gUlRDX0dVQVJERURf
QlkoJm1lZGlhX3RyYW5zcG9ydF9sb2NrXykgPQorICAgICAgMDsKKyAgLy8gQ2FjaGUgcGF5bG9h
ZCB0eXBlIGFuZCBzYW1wbGluZyBmcmVxdWVuY3kgZnJvbSBtb3N0IHJlY2VudCBjYWxsIHRvCisg
IC8vIFNldEVuY29kZXIuIE5lZWRlZCB0byBzZXQgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9G
cmFtZSBtZXRhZGF0YSwgYW5kCisgIC8vIGludmFsaWRhdGUgb24gZW5jb2RlciBjaGFuZ2UuCisg
IGludCBtZWRpYV90cmFuc3BvcnRfcGF5bG9hZF90eXBlXyBSVENfR1VBUkRFRF9CWSgmbWVkaWFf
dHJhbnNwb3J0X2xvY2tfKTsKKyAgaW50IG1lZGlhX3RyYW5zcG9ydF9zYW1wbGluZ19mcmVxdWVu
Y3lfCisgICAgICBSVENfR1VBUkRFRF9CWSgmbWVkaWFfdHJhbnNwb3J0X2xvY2tfKTsKKworICAv
LyBFMkVFIEF1ZGlvIEZyYW1lIEVuY3J5cHRpb24KKyAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1l
RW5jcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9lbmNyeXB0b3JfOworICAvLyBFMkVFIEZyYW1lIEVu
Y3J5cHRpb24gT3B0aW9ucworICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29w
dGlvbnNfOworCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGJpdHJhdGVfY3JpdF9zZWN0aW9uXzsK
KyAgaW50IGNvbmZpZ3VyZWRfYml0cmF0ZV9icHNfIFJUQ19HVUFSREVEX0JZKGJpdHJhdGVfY3Jp
dF9zZWN0aW9uXykgPSAwOworfTsKIAogY29uc3QgaW50IGtUZWxlcGhvbmVFdmVudEF0dGVudWF0
aW9uZEIgPSAxMDsKIApAQCAtMjU0LDYgKzUxMiwyMyBAQCBpbnQzMl90IENoYW5uZWxTZW5kOjpT
ZW5kRGF0YShGcmFtZVR5cGUgZnJhbWVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHBheWxvYWRTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRhdGlvbikgewogICBSVENfRENIRUNL
X1JVTl9PTihlbmNvZGVyX3F1ZXVlXyk7CisgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+
IHBheWxvYWQocGF5bG9hZERhdGEsIHBheWxvYWRTaXplKTsKKworICBpZiAobWVkaWFfdHJhbnNw
b3J0KCkgIT0gbnVsbHB0cikgeworICAgIHJldHVybiBTZW5kTWVkaWFUcmFuc3BvcnRBdWRpbyhm
cmFtZVR5cGUsIHBheWxvYWRUeXBlLCB0aW1lU3RhbXAsIHBheWxvYWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50YXRpb24pOworICB9IGVsc2UgeworICAgIHJl
dHVybiBTZW5kUnRwQXVkaW8oZnJhbWVUeXBlLCBwYXlsb2FkVHlwZSwgdGltZVN0YW1wLCBwYXls
b2FkLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRhdGlvbik7CisgIH0KK30KKwor
aW50MzJfdCBDaGFubmVsU2VuZDo6U2VuZFJ0cEF1ZGlvKEZyYW1lVHlwZSBmcmFtZVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBwYXlsb2FkVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0aW1lU3RhbXAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhf
dD4gcGF5bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSVFBG
cmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09O
KGVuY29kZXJfcXVldWVfKTsKICAgaWYgKF9pbmNsdWRlQXVkaW9MZXZlbEluZGljYXRpb24pIHsK
ICAgICAvLyBTdG9yZSBjdXJyZW50IGF1ZGlvIGxldmVsIGluIHRoZSBSVFAvUlRDUCBtb2R1bGUu
CiAgICAgLy8gVGhlIGxldmVsIHdpbGwgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHZvaWNl
LWFjdGl2aXR5IHN0YXRlCkBAIC0yNjgsMTYgKzU0MywxNSBAQCBpbnQzMl90IENoYW5uZWxTZW5k
OjpTZW5kRGF0YShGcmFtZVR5cGUgZnJhbWVUeXBlLAogICAgIC8vIFRPRE8oYmVud3JpZ2h0QHdl
YnJ0Yy5vcmcpIC0gQWxsb2NhdGUgZW5vdWdoIHRvIGFsd2F5cyBlbmNyeXB0IGlubGluZS4KICAg
ICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciB0byBob2xkIHRoZSBtYXhpbXVtIHBvc3NpYmxlIGVuY3J5
cHRlZCBwYXlsb2FkLgogICAgIHNpemVfdCBtYXhfY2lwaGVydGV4dF9zaXplID0gZnJhbWVfZW5j
cnlwdG9yXy0+R2V0TWF4Q2lwaGVydGV4dEJ5dGVTaXplKAotICAgICAgICBjcmlja2V0OjpNRURJ
QV9UWVBFX0FVRElPLCBwYXlsb2FkU2l6ZSk7CisgICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVf
QVVESU8sIHBheWxvYWQuc2l6ZSgpKTsKICAgICBlbmNyeXB0ZWRfYXVkaW9fcGF5bG9hZC5TZXRT
aXplKG1heF9jaXBoZXJ0ZXh0X3NpemUpOwogCiAgICAgLy8gRW5jcnlwdCB0aGUgYXVkaW8gcGF5
bG9hZCBpbnRvIHRoZSBidWZmZXIuCiAgICAgc2l6ZV90IGJ5dGVzX3dyaXR0ZW4gPSAwOwogICAg
IGludCBlbmNyeXB0X3N0YXR1cyA9IGZyYW1lX2VuY3J5cHRvcl8tPkVuY3J5cHQoCiAgICAgICAg
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIF9ydHBSdGNwTW9kdWxlLT5TU1JDKCksCi0gICAg
ICAgIC8qYWRkaXRpb25hbF9kYXRhPSovbnVsbHB0ciwKLSAgICAgICAgcnRjOjpBcnJheVZpZXc8
Y29uc3QgdWludDhfdD4ocGF5bG9hZERhdGEsIHBheWxvYWRTaXplKSwKLSAgICAgICAgZW5jcnlw
dGVkX2F1ZGlvX3BheWxvYWQsICZieXRlc193cml0dGVuKTsKKyAgICAgICAgLyphZGRpdGlvbmFs
X2RhdGE9Ki9udWxscHRyLCBwYXlsb2FkLCBlbmNyeXB0ZWRfYXVkaW9fcGF5bG9hZCwKKyAgICAg
ICAgJmJ5dGVzX3dyaXR0ZW4pOwogICAgIGlmIChlbmNyeXB0X3N0YXR1cyAhPSAwKSB7CiAgICAg
ICBSVENfRExPRyhMU19FUlJPUikgPDwgIkNoYW5uZWw6OlNlbmREYXRhKCkgZmFpbGVkIGVuY3J5
cHQgYXVkaW8gcGF5bG9hZDogIgogICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGVuY3J5cHRf
c3RhdHVzOwpAQCAtMjg2LDE5ICs1NjAsMjMgQEAgaW50MzJfdCBDaGFubmVsU2VuZDo6U2VuZERh
dGEoRnJhbWVUeXBlIGZyYW1lVHlwZSwKICAgICAvLyBSZXNpemUgdGhlIGJ1ZmZlciB0byB0aGUg
ZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHVzZWQuCiAgICAgZW5jcnlwdGVkX2F1ZGlv
X3BheWxvYWQuU2V0U2l6ZShieXRlc193cml0dGVuKTsKICAgICAvLyBSZXdyaXRlIHRoZSBwYXls
b2FkRGF0YSBhbmQgc2l6ZSB0byB0aGUgbmV3IGVuY3J5cHRlZCBwYXlsb2FkLgotICAgIHBheWxv
YWREYXRhID0gZW5jcnlwdGVkX2F1ZGlvX3BheWxvYWQuZGF0YSgpOwotICAgIHBheWxvYWRTaXpl
ID0gZW5jcnlwdGVkX2F1ZGlvX3BheWxvYWQuc2l6ZSgpOworICAgIHBheWxvYWQgPSBlbmNyeXB0
ZWRfYXVkaW9fcGF5bG9hZDsKKyAgfSBlbHNlIGlmIChjcnlwdG9fb3B0aW9uc18uc2ZyYW1lLnJl
cXVpcmVfZnJhbWVfZW5jcnlwdGlvbikgeworICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiQ2hh
bm5lbDo6U2VuZERhdGEoKSBmYWlsZWQgc2VuZGluZyBhdWRpbyBwYXlsb2FkOiAiCisgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICJBIGZyYW1lIGVuY3J5cHRvciBpcyByZXF1aXJlZCBidXQgb25l
IGlzIG5vdCBzZXQuIjsKKyAgICByZXR1cm4gLTE7CiAgIH0KIAogICAvLyBQdXNoIGRhdGEgZnJv
bSBBQ00gdG8gUlRQL1JUQ1AtbW9kdWxlIHRvIGRlbGl2ZXIgYXVkaW8gZnJhbWUgZm9yCiAgIC8v
IHBhY2tldGl6YXRpb24uCiAgIC8vIFRoaXMgY2FsbCB3aWxsIHRyaWdnZXIgVHJhbnNwb3J0OjpT
ZW5kUGFja2V0KCkgZnJvbSB0aGUgUlRQL1JUQ1AgbW9kdWxlLgotICBpZiAoIV9ydHBSdGNwTW9k
dWxlLT5TZW5kT3V0Z29pbmdEYXRhKAotICAgICAgICAgIChGcmFtZVR5cGUmKWZyYW1lVHlwZSwg
cGF5bG9hZFR5cGUsIHRpbWVTdGFtcCwKLSAgICAgICAgICAvLyBMZWF2aW5nIHRoZSB0aW1lIHdo
ZW4gdGhpcyBmcmFtZSB3YXMKLSAgICAgICAgICAvLyByZWNlaXZlZCBmcm9tIHRoZSBjYXB0dXJl
IGRldmljZSBhcwotICAgICAgICAgIC8vIHVuZGVmaW5lZCBmb3Igdm9pY2UgZm9yIG5vdy4KLSAg
ICAgICAgICAtMSwgcGF5bG9hZERhdGEsIHBheWxvYWRTaXplLCBmcmFnbWVudGF0aW9uLCBudWxs
cHRyLCBudWxscHRyKSkgeworICBpZiAoIV9ydHBSdGNwTW9kdWxlLT5TZW5kT3V0Z29pbmdEYXRh
KChGcmFtZVR5cGUmKWZyYW1lVHlwZSwgcGF5bG9hZFR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGltZVN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIExlYXZpbmcgdGhlIHRpbWUgd2hlbiB0aGlzIGZyYW1lIHdhcwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlY2VpdmVkIGZyb20g
dGhlIGNhcHR1cmUgZGV2aWNlIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdW5kZWZpbmVkIGZvciB2b2ljZSBmb3Igbm93LgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0xLCBwYXlsb2FkLmRhdGEoKSwgcGF5bG9hZC5zaXplKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRhdGlvbiwg
bnVsbHB0ciwgbnVsbHB0cikpIHsKICAgICBSVENfRExPRyhMU19FUlJPUikKICAgICAgICAgPDwg
IkNoYW5uZWxTZW5kOjpTZW5kRGF0YSgpIGZhaWxlZCB0byBzZW5kIGRhdGEgdG8gUlRQL1JUQ1Ag
bW9kdWxlIjsKICAgICByZXR1cm4gLTE7CkBAIC0zMDcsOSArNTg1LDY4IEBAIGludDMyX3QgQ2hh
bm5lbFNlbmQ6OlNlbmREYXRhKEZyYW1lVHlwZSBmcmFtZVR5cGUsCiAgIHJldHVybiAwOwogfQog
CitpbnQzMl90IENoYW5uZWxTZW5kOjpTZW5kTWVkaWFUcmFuc3BvcnRBdWRpbygKKyAgICBGcmFt
ZVR5cGUgZnJhbWVUeXBlLAorICAgIHVpbnQ4X3QgcGF5bG9hZFR5cGUsCisgICAgdWludDMyX3Qg
dGltZVN0YW1wLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IHBheWxvYWQsCisg
ICAgY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRhdGlvbikgeworICBSVENf
RENIRUNLX1JVTl9PTihlbmNvZGVyX3F1ZXVlXyk7CisgIC8vIFRPRE8obmlzc2UpOiBVc2UgbnVs
bCBfdHJhbnNwb3J0UHRyIGZvciBNZWRpYVRyYW5zcG9ydC4KKyAgLy8gUlRDX0RDSEVDSyhfdHJh
bnNwb3J0UHRyID09IG51bGxwdHIpOworICB1aW50NjRfdCBjaGFubmVsX2lkOworICBpbnQgc2Ft
cGxpbmdfcmF0ZV9oejsKKyAgeworICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZtZWRpYV90cmFuc3Bv
cnRfbG9ja18pOworICAgIGlmIChtZWRpYV90cmFuc3BvcnRfcGF5bG9hZF90eXBlXyAhPSBwYXls
b2FkVHlwZSkgeworICAgICAgLy8gUGF5bG9hZCB0eXBlIGlzIGJlaW5nIGNoYW5nZWQsIG1lZGlh
X3RyYW5zcG9ydF9zYW1wbGluZ19mcmVxdWVuY3lfLAorICAgICAgLy8gbm8gbG9uZ2VyIGN1cnJl
bnQuCisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHNhbXBsaW5nX3JhdGVfaHogPSBtZWRp
YV90cmFuc3BvcnRfc2FtcGxpbmdfZnJlcXVlbmN5XzsKKyAgICBjaGFubmVsX2lkID0gbWVkaWFf
dHJhbnNwb3J0X2NoYW5uZWxfaWRfOworICB9CisgIGNvbnN0IE1lZGlhVHJhbnNwb3J0RW5jb2Rl
ZEF1ZGlvRnJhbWUgZnJhbWUoCisgICAgICAvKnNhbXBsaW5nX3JhdGVfaHo9Ki9zYW1wbGluZ19y
YXRlX2h6LAorCisgICAgICAvLyBUT0RPKG5pc3NlKTogVGltZXN0YW1wIGFuZCBzYW1wbGUgaW5k
ZXggYXJlIHRoZSBzYW1lIGZvciBhbGwgc3VwcG9ydGVkCisgICAgICAvLyBhdWRpbyBjb2RlY3Mg
ZXhjZXB0IEc3MjIuIFJlZmFjdG9yIGF1ZGlvIGNvZGluZyBtb2R1bGUgdG8gb25seSB1c2UKKyAg
ICAgIC8vIHNhbXBsZSBpbmRleCwgYW5kIGxlYXZlIHRyYW5zbGF0aW9uIHRvIFJUUCB0aW1lLCB3
aGVuIG5lZWRlZCwgZm9yCisgICAgICAvLyBSVFAtc3BlY2lmaWMgY29kZS4KKyAgICAgIC8qc3Rh
cnRpbmdfc2FtcGxlX2luZGV4PSovdGltZVN0YW1wLAorCisgICAgICAvLyBTYW1wbGUgY291bnQg
aXNuJ3QgY29udmVuaWVudGx5IGF2YWlsYWJsZSBmcm9tIHRoZSBBdWRpb0NvZGluZ01vZHVsZSwK
KyAgICAgIC8vIGFuZCBuZWVkcyBzb21lIHJlZmFjdG9yaW5nIHRvIHdpcmUgdXAgaW4gYSBnb29k
IHdheS4gRm9yIG5vdywgbGVmdCBhcworICAgICAgLy8gemVyby4KKyAgICAgIC8qc2FtcGxlX2Nv
dW50PSovMCwKKworICAgICAgLypzZXF1ZW5jZV9udW1iZXI9Ki9tZWRpYV90cmFuc3BvcnRfc2Vx
dWVuY2VfbnVtYmVyXywKKyAgICAgIE1lZGlhVHJhbnNwb3J0RnJhbWVUeXBlRm9yV2VicnRjRnJh
bWVUeXBlKGZyYW1lVHlwZSksIHBheWxvYWRUeXBlLAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhf
dD4ocGF5bG9hZC5iZWdpbigpLCBwYXlsb2FkLmVuZCgpKSk7CisKKyAgLy8gVE9ETyhuaXNzZSk6
IEludHJvZHVjZSBhIE1lZGlhVHJhbnNwb3J0U2VuZGVyIG9iamVjdCBib3VuZCB0byBhIHNwZWNp
ZmljCisgIC8vIGNoYW5uZWwgaWQuCisgIFJUQ0Vycm9yIHJ0Y19lcnJvciA9CisgICAgICBtZWRp
YV90cmFuc3BvcnQoKS0+U2VuZEF1ZGlvRnJhbWUoY2hhbm5lbF9pZCwgc3RkOjptb3ZlKGZyYW1l
KSk7CisKKyAgaWYgKCFydGNfZXJyb3Iub2soKSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8
ICJGYWlsZWQgdG8gc2VuZCBmcmFtZSwgcnRjX2Vycm9yPSIKKyAgICAgICAgICAgICAgICAgICAg
ICA8PCBUb1N0cmluZyhydGNfZXJyb3IudHlwZSgpKSA8PCAiLCAiCisgICAgICAgICAgICAgICAg
ICAgICAgPDwgcnRjX2Vycm9yLm1lc3NhZ2UoKTsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICAr
K21lZGlhX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfOworCisgIHJldHVybiAwOworfQorCiBi
b29sIENoYW5uZWxTZW5kOjpTZW5kUnRwKGNvbnN0IHVpbnQ4X3QqIGRhdGEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFBhY2tldE9wdGlvbnMmIG9wdGlvbnMpIHsKKyAgLy8gV2Ugc2hvdWxkIG5vdCBiZSBzZW5k
aW5nIFJUUCBwYWNrZXRzIGlmIG1lZGlhIHRyYW5zcG9ydCBpcyBhdmFpbGFibGUuCisgIFJUQ19D
SEVDSyghbWVkaWFfdHJhbnNwb3J0KCkpOworCiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZfY2FsbGJh
Y2tDcml0U2VjdCk7CiAKICAgaWYgKF90cmFuc3BvcnRQdHIgPT0gTlVMTCkgewpAQCAtMzQzLDIz
ICs2ODAsMjIgQEAgYm9vbCBDaGFubmVsU2VuZDo6U2VuZFJ0Y3AoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGxlbikgewogICByZXR1cm4gdHJ1ZTsKIH0KIAotaW50IENoYW5uZWxTZW5kOjpQ
cmVmZXJyZWRTYW1wbGVSYXRlKCkgY29uc3QgewotICAvLyBSZXR1cm4gdGhlIGJpZ2dlciBvZiBw
bGF5b3V0IGFuZCByZWNlaXZlIGZyZXF1ZW5jeSBpbiB0aGUgQUNNLgotICByZXR1cm4gc3RkOjpt
YXgoYXVkaW9fY29kaW5nXy0+UmVjZWl2ZUZyZXF1ZW5jeSgpLAotICAgICAgICAgICAgICAgICAg
YXVkaW9fY29kaW5nXy0+UGxheW91dEZyZXF1ZW5jeSgpKTsKLX0KLQogQ2hhbm5lbFNlbmQ6OkNo
YW5uZWxTZW5kKHJ0Yzo6VGFza1F1ZXVlKiBlbmNvZGVyX3F1ZXVlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcG9ydCogcnRwX3RyYW5zcG9ydCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBSdGNwUnR0U3RhdHMqIHJ0Y3BfcnR0X3N0YXRzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIFJ0Y0V2ZW50TG9nKiBydGNfZXZlbnRfbG9nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0
b3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZy
YW1lX2VuY3J5cHRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OkNy
eXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZXh0bWFwX2FsbG93X21peGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBydGNw
X3JlcG9ydF9pbnRlcnZhbF9tcykKICAgICA6IGV2ZW50X2xvZ18ocnRjX2V2ZW50X2xvZyksCiAg
ICAgICBfdGltZVN0YW1wKDApLCAgLy8gVGhpcyBpcyBqdXN0IGFuIG9mZnNldCwgUlRQIG1vZHVs
ZSB3aWxsIGFkZCBpdCdzIG93bgogICAgICAgICAgICAgICAgICAgICAgIC8vIHJhbmRvbSBvZmZz
ZXQKICAgICAgIHNlbmRfc2VxdWVuY2VfbnVtYmVyXygwKSwKICAgICAgIF9tb2R1bGVQcm9jZXNz
VGhyZWFkUHRyKG1vZHVsZV9wcm9jZXNzX3RocmVhZCksCi0gICAgICBfdHJhbnNwb3J0UHRyKE5V
TEwpLAorICAgICAgX3RyYW5zcG9ydFB0cihydHBfdHJhbnNwb3J0KSwKICAgICAgIGlucHV0X211
dGVfKGZhbHNlKSwKICAgICAgIHByZXZpb3VzX2ZyYW1lX211dGVkXyhmYWxzZSksCiAgICAgICBf
aW5jbHVkZUF1ZGlvTGV2ZWxJbmRpY2F0aW9uKGZhbHNlKSwKQEAgLTM3NCw0OSArNzEwLDU2IEBA
IENoYW5uZWxTZW5kOjpDaGFubmVsU2VuZChydGM6OlRhc2tRdWV1ZSogZW5jb2Rlcl9xdWV1ZSwK
ICAgICAgIHVzZV90d2NjX3Bscl9mb3JfYW5hXygKICAgICAgICAgICB3ZWJydGM6OmZpZWxkX3Ry
aWFsOjpGaW5kRnVsbE5hbWUoIlVzZVR3Y2NQbHJGb3JBbmEiKSA9PSAiRW5hYmxlZCIpLAogICAg
ICAgZW5jb2Rlcl9xdWV1ZV8oZW5jb2Rlcl9xdWV1ZSksCi0gICAgICBmcmFtZV9lbmNyeXB0b3Jf
KGZyYW1lX2VuY3J5cHRvcikgeworICAgICAgbWVkaWFfdHJhbnNwb3J0XyhtZWRpYV90cmFuc3Bv
cnQpLAorICAgICAgZnJhbWVfZW5jcnlwdG9yXyhmcmFtZV9lbmNyeXB0b3IpLAorICAgICAgY3J5
cHRvX29wdGlvbnNfKGNyeXB0b19vcHRpb25zKSB7CiAgIFJUQ19EQ0hFQ0sobW9kdWxlX3Byb2Nl
c3NfdGhyZWFkKTsKICAgUlRDX0RDSEVDSyhlbmNvZGVyX3F1ZXVlKTsKKyAgbW9kdWxlX3Byb2Nl
c3NfdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZyb21UaHJlYWQoKTsKKwogICBhdWRpb19jb2Rpbmdf
LnJlc2V0KEF1ZGlvQ29kaW5nTW9kdWxlOjpDcmVhdGUoQXVkaW9Db2RpbmdNb2R1bGU6OkNvbmZp
ZygpKSk7CiAKICAgUnRwUnRjcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworCisgIC8v
IFdlIGdyYWR1YWxseSByZW1vdmUgY29kZXBhdGhzIHRoYXQgZGVwZW5kIG9uIFJUUCB3aGVuIHVz
aW5nIG1lZGlhCisgIC8vIHRyYW5zcG9ydC4gQWxsIG9mIHRoaXMgbG9naWMgc2hvdWxkIGJlIG1v
dmVkIHRvIHRoZSBmdXR1cmUKKyAgLy8gUlRQTWVkaWFUcmFuc3BvcnQuIEluIHRoaXMgY2FzZSBp
dCBtZWFucyB0aGF0IG92ZXJoZWFkIGFuZCBiYW5kd2lkdGgKKyAgLy8gb2JzZXJ2ZXJzIHNob3Vs
ZCBub3QgYmUgY2FsbGVkIHdoZW4gdXNpbmcgbWVkaWEgdHJhbnNwb3J0LgorICBpZiAoIW1lZGlh
X3RyYW5zcG9ydF8pIHsKKyAgICBjb25maWd1cmF0aW9uLm92ZXJoZWFkX29ic2VydmVyID0gdGhp
czsKKyAgICBjb25maWd1cmF0aW9uLmJhbmR3aWR0aF9jYWxsYmFjayA9IHJ0Y3Bfb2JzZXJ2ZXJf
LmdldCgpOworICAgIGNvbmZpZ3VyYXRpb24udHJhbnNwb3J0X2ZlZWRiYWNrX2NhbGxiYWNrID0g
ZmVlZGJhY2tfb2JzZXJ2ZXJfcHJveHlfLmdldCgpOworICB9CisKICAgY29uZmlndXJhdGlvbi5h
dWRpbyA9IHRydWU7CiAgIGNvbmZpZ3VyYXRpb24ub3V0Z29pbmdfdHJhbnNwb3J0ID0gdGhpczsK
LSAgY29uZmlndXJhdGlvbi5vdmVyaGVhZF9vYnNlcnZlciA9IHRoaXM7Ci0gIGNvbmZpZ3VyYXRp
b24uYmFuZHdpZHRoX2NhbGxiYWNrID0gcnRjcF9vYnNlcnZlcl8uZ2V0KCk7CiAKICAgY29uZmln
dXJhdGlvbi5wYWNlZF9zZW5kZXIgPSBydHBfcGFja2V0X3NlbmRlcl9wcm94eV8uZ2V0KCk7CiAg
IGNvbmZpZ3VyYXRpb24udHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9hbGxvY2F0b3IgPQogICAg
ICAgc2VxX251bV9hbGxvY2F0b3JfcHJveHlfLmdldCgpOwotICBjb25maWd1cmF0aW9uLnRyYW5z
cG9ydF9mZWVkYmFja19jYWxsYmFjayA9IGZlZWRiYWNrX29ic2VydmVyX3Byb3h5Xy5nZXQoKTsK
IAogICBjb25maWd1cmF0aW9uLmV2ZW50X2xvZyA9IGV2ZW50X2xvZ187CiAgIGNvbmZpZ3VyYXRp
b24ucnR0X3N0YXRzID0gcnRjcF9ydHRfc3RhdHM7CiAgIGNvbmZpZ3VyYXRpb24ucmV0cmFuc21p
c3Npb25fcmF0ZV9saW1pdGVyID0KICAgICAgIHJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8u
Z2V0KCk7CisgIGNvbmZpZ3VyYXRpb24uZXh0bWFwX2FsbG93X21peGVkID0gZXh0bWFwX2FsbG93
X21peGVkOworICBjb25maWd1cmF0aW9uLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0gcnRjcF9y
ZXBvcnRfaW50ZXJ2YWxfbXM7CiAKICAgX3J0cFJ0Y3BNb2R1bGUucmVzZXQoUnRwUnRjcDo6Q3Jl
YXRlUnRwUnRjcChjb25maWd1cmF0aW9uKSk7CiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRTZW5kaW5n
TWVkaWFTdGF0dXMoZmFsc2UpOwotICBJbml0KCk7Ci19CiAKLUNoYW5uZWxTZW5kOjp+Q2hhbm5l
bFNlbmQoKSB7Ci0gIFRlcm1pbmF0ZSgpOwotICBSVENfRENIRUNLKCFjaGFubmVsX3N0YXRlXy5H
ZXQoKS5zZW5kaW5nKTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZDo6SW5pdCgpIHsKLSAgY2hhbm5l
bF9zdGF0ZV8uUmVzZXQoKTsKKyAgLy8gV2Ugd2FudCB0byBpbnZva2UgdGhlICdUYXJnZXRSYXRl
T2JzZXJ2ZXInIGFuZCB8T25PdmVyaGVhZENoYW5nZWR8CisgIC8vIGNhbGxiYWNrcyBhZnRlciB0
aGUgYXVkaW9fY29kaW5nXyBpcyBmdWxseSBpbml0aWFsaXplZC4KKyAgaWYgKG1lZGlhX3RyYW5z
cG9ydF8pIHsKKyAgICBSVENfRExPRyhMU19JTkZPKSA8PCAiU2V0dGluZyBtZWRpYV90cmFuc3Bv
cnRfIHJhdGUgb2JzZXJ2ZXJzLiI7CisgICAgbWVkaWFfdHJhbnNwb3J0Xy0+QWRkVGFyZ2V0VHJh
bnNmZXJSYXRlT2JzZXJ2ZXIodGhpcyk7CisgICAgT25PdmVyaGVhZENoYW5nZWQobWVkaWFfdHJh
bnNwb3J0Xy0+R2V0QXVkaW9QYWNrZXRPdmVyaGVhZCgpKTsKKyAgfSBlbHNlIHsKKyAgICBSVENf
RExPRyhMU19JTkZPKSA8PCAiTm90IHNldHRpbmcgbWVkaWFfdHJhbnNwb3J0XyByYXRlIG9ic2Vy
dmVycy4iOworICB9CiAKLSAgLy8gLS0tIEFkZCBtb2R1bGVzIHRvIHByb2Nlc3MgdGhyZWFkIChm
b3IgcGVyaW9kaWMgc2NoZWR1bGF0aW9uKQogICBfbW9kdWxlUHJvY2Vzc1RocmVhZFB0ci0+UmVn
aXN0ZXJNb2R1bGUoX3J0cFJ0Y3BNb2R1bGUuZ2V0KCksIFJUQ19GUk9NX0hFUkUpOwogCi0gIC8v
IC0tLSBBQ00gaW5pdGlhbGl6YXRpb24KLSAgaW50IGVycm9yID0gYXVkaW9fY29kaW5nXy0+SW5p
dGlhbGl6ZVJlY2VpdmVyKCk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwotCi0gIC8vIC0t
LSBSVFAvUlRDUCBtb2R1bGUgaW5pdGlhbGl6YXRpb24KLQogICAvLyBFbnN1cmUgdGhhdCBSVENQ
IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3IgdGhlIGNyZWF0ZWQgY2hhbm5lbC4KICAgLy8gTm90
ZSB0aGF0LCB0aGUgbW9kdWxlIHdpbGwga2VlcCBnZW5lcmF0aW5nIFJUQ1AgdW50aWwgaXQgaXMg
ZXhwbGljaXRseQogICAvLyBkaXNhYmxlZCBieSB0aGUgdXNlci4KQEAgLTQyNSwzNiArNzY4LDMw
IEBAIHZvaWQgQ2hhbm5lbFNlbmQ6OkluaXQoKSB7CiAgIC8vIFJUQ1AgaXMgZW5hYmxlZCBieSBk
ZWZhdWx0LgogICBfcnRwUnRjcE1vZHVsZS0+U2V0UlRDUFN0YXR1cyhSdGNwTW9kZTo6a0NvbXBv
dW5kKTsKIAotICAvLyAtLS0gUmVnaXN0ZXIgYWxsIHBlcm1hbmVudCBjYWxsYmFja3MKLSAgZXJy
b3IgPSBhdWRpb19jb2RpbmdfLT5SZWdpc3RlclRyYW5zcG9ydENhbGxiYWNrKHRoaXMpOworICBp
bnQgZXJyb3IgPSBhdWRpb19jb2RpbmdfLT5SZWdpc3RlclRyYW5zcG9ydENhbGxiYWNrKHRoaXMp
OwogICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKIH0KIAotdm9pZCBDaGFubmVsU2VuZDo6VGVy
bWluYXRlKCkgeworQ2hhbm5lbFNlbmQ6On5DaGFubmVsU2VuZCgpIHsKICAgUlRDX0RDSEVDSyhj
b25zdHJ1Y3Rpb25fdGhyZWFkXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICAvLyBNdXN0IGJl
IGNhbGxlZCBvbiB0aGUgc2FtZSB0aHJlYWQgYXMgSW5pdCgpLgorCisgIGlmIChtZWRpYV90cmFu
c3BvcnRfKSB7CisgICAgbWVkaWFfdHJhbnNwb3J0Xy0+UmVtb3ZlVGFyZ2V0VHJhbnNmZXJSYXRl
T2JzZXJ2ZXIodGhpcyk7CisgIH0KIAogICBTdG9wU2VuZCgpOwogCi0gIC8vIFRoZSBvcmRlciB0
byBzYWZlbHkgc2h1dGRvd24gbW9kdWxlcyBpbiBhIGNoYW5uZWwgaXM6Ci0gIC8vIDEuIERlLXJl
Z2lzdGVyIGNhbGxiYWNrcyBpbiBtb2R1bGVzCi0gIC8vIDIuIERlLXJlZ2lzdGVyIG1vZHVsZXMg
aW4gcHJvY2VzcyB0aHJlYWQKLSAgLy8gMy4gRGVzdHJveSBtb2R1bGVzCiAgIGludCBlcnJvciA9
IGF1ZGlvX2NvZGluZ18tPlJlZ2lzdGVyVHJhbnNwb3J0Q2FsbGJhY2soTlVMTCk7CiAgIFJUQ19E
Q0hFQ0tfRVEoMCwgZXJyb3IpOwogCi0gIC8vIERlLXJlZ2lzdGVyIG1vZHVsZXMgaW4gcHJvY2Vz
cyB0aHJlYWQKICAgaWYgKF9tb2R1bGVQcm9jZXNzVGhyZWFkUHRyKQogICAgIF9tb2R1bGVQcm9j
ZXNzVGhyZWFkUHRyLT5EZVJlZ2lzdGVyTW9kdWxlKF9ydHBSdGNwTW9kdWxlLmdldCgpKTsKLQot
ICAvLyBFbmQgb2YgbW9kdWxlcyBzaHV0ZG93bgogfQogCi1pbnQzMl90IENoYW5uZWxTZW5kOjpT
dGFydFNlbmQoKSB7Ci0gIGlmIChjaGFubmVsX3N0YXRlXy5HZXQoKS5zZW5kaW5nKSB7Ci0gICAg
cmV0dXJuIDA7Ci0gIH0KLSAgY2hhbm5lbF9zdGF0ZV8uU2V0U2VuZGluZyh0cnVlKTsKK3ZvaWQg
Q2hhbm5lbFNlbmQ6OlN0YXJ0U2VuZCgpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90
aHJlYWRfY2hlY2tlcl8pOworICBSVENfRENIRUNLKCFzZW5kaW5nXyk7CisgIHNlbmRpbmdfID0g
dHJ1ZTsKIAogICAvLyBSZXN1bWUgdGhlIHByZXZpb3VzIHNlcXVlbmNlIG51bWJlciB3aGljaCB3
YXMgcmVzZXQgYnkgU3RvcFNlbmQoKS4gVGhpcwogICAvLyBuZWVkcyB0byBiZSBkb25lIGJlZm9y
ZSB8c2VuZGluZ3wgaXMgc2V0IHRvIHRydWUgb24gdGhlIFJUUC9SVENQIG1vZHVsZS4KQEAgLTQ2
MiwyNiArNzk5LDIxIEBAIGludDMyX3QgQ2hhbm5lbFNlbmQ6OlN0YXJ0U2VuZCgpIHsKICAgICBf
cnRwUnRjcE1vZHVsZS0+U2V0U2VxdWVuY2VOdW1iZXIoc2VuZF9zZXF1ZW5jZV9udW1iZXJfKTsK
ICAgfQogICBfcnRwUnRjcE1vZHVsZS0+U2V0U2VuZGluZ01lZGlhU3RhdHVzKHRydWUpOwotICBp
ZiAoX3J0cFJ0Y3BNb2R1bGUtPlNldFNlbmRpbmdTdGF0dXModHJ1ZSkgIT0gMCkgewotICAgIFJU
Q19ETE9HKExTX0VSUk9SKSA8PCAiU3RhcnRTZW5kKCkgUlRQL1JUQ1AgZmFpbGVkIHRvIHN0YXJ0
IHNlbmRpbmciOwotICAgIF9ydHBSdGNwTW9kdWxlLT5TZXRTZW5kaW5nTWVkaWFTdGF0dXMoZmFs
c2UpOwotICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZfY2FsbGJhY2tDcml0U2VjdCk7Ci0gICAgY2hh
bm5lbF9zdGF0ZV8uU2V0U2VuZGluZyhmYWxzZSk7Ci0gICAgcmV0dXJuIC0xOwotICB9CisgIGlu
dCByZXQgPSBfcnRwUnRjcE1vZHVsZS0+U2V0U2VuZGluZ1N0YXR1cyh0cnVlKTsKKyAgUlRDX0RD
SEVDS19FUSgwLCByZXQpOwogICB7CiAgICAgLy8gSXQgaXMgbm93IE9LIHRvIHN0YXJ0IHBvc3Rp
bmcgdGFza3MgdG8gdGhlIGVuY29kZXIgdGFzayBxdWV1ZS4KICAgICBydGM6OkNyaXRTY29wZSBj
cygmZW5jb2Rlcl9xdWV1ZV9sb2NrXyk7CiAgICAgZW5jb2Rlcl9xdWV1ZV9pc19hY3RpdmVfID0g
dHJ1ZTsKICAgfQotICByZXR1cm4gMDsKIH0KIAogdm9pZCBDaGFubmVsU2VuZDo6U3RvcFNlbmQo
KSB7Ci0gIGlmICghY2hhbm5lbF9zdGF0ZV8uR2V0KCkuc2VuZGluZykgeworICBSVENfRENIRUNL
X1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CisgIGlmICghc2VuZGluZ18pIHsKICAg
ICByZXR1cm47CiAgIH0KLSAgY2hhbm5lbF9zdGF0ZV8uU2V0U2VuZGluZyhmYWxzZSk7CisgIHNl
bmRpbmdfID0gZmFsc2U7CiAKICAgLy8gUG9zdCBhIHRhc2sgdG8gdGhlIGVuY29kZXIgdGhyZWFk
IHdoaWNoIHNldHMgYW4gZXZlbnQgd2hlbiB0aGUgdGFzayBpcwogICAvLyBleGVjdXRlZC4gV2Ug
a25vdyB0aGF0IG5vIG1vcmUgZW5jb2RpbmcgdGFza3Mgd2lsbCBiZSBhZGRlZCB0byB0aGUgdGFz
awpAQCAtNDkxLDcgKzgyMyw3IEBAIHZvaWQgQ2hhbm5lbFNlbmQ6OlN0b3BTZW5kKCkgewogICAv
LyB0byBhY2NjZXNzIGFuZCBpbnZhbGlkIGNoYW5uZWwgb2JqZWN0LgogICBSVENfRENIRUNLKGVu
Y29kZXJfcXVldWVfKTsKIAotICBydGM6OkV2ZW50IGZsdXNoKGZhbHNlLCBmYWxzZSk7CisgIHJ0
Yzo6RXZlbnQgZmx1c2g7CiAgIHsKICAgICAvLyBDbGVhciB8ZW5jb2Rlcl9xdWV1ZV9pc19hY3Rp
dmVffCB1bmRlciBsb2NrIHRvIHByZXZlbnQgYW55IG90aGVyIHRhc2tzCiAgICAgLy8gdGhhbiB0
aGlzIGZpbmFsICJmbHVzaCB0YXNrIiB0byBiZSBwb3N0ZWQgb24gdGhlIHF1ZXVlLgpAQCAtNTE5
LDYgKzg1MSw3IEBAIHZvaWQgQ2hhbm5lbFNlbmQ6OlN0b3BTZW5kKCkgewogCiBib29sIENoYW5u
ZWxTZW5kOjpTZXRFbmNvZGVyKGludCBwYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29kZXIpIHsKKyAgUlRD
X0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwogICBSVENfRENIRUNLX0dF
KHBheWxvYWRfdHlwZSwgMCk7CiAgIFJUQ19EQ0hFQ0tfTEUocGF5bG9hZF90eXBlLCAxMjcpOwog
ICAvLyBUT0RPKG9zc3UpOiBNYWtlIENvZGVjSW5zdHMgdXAsIGZvciBub3c6IG9uZSBmb3IgdGhl
IFJUUC9SVENQIG1vZHVsZSBhbmQKQEAgLTU0OSwyNSArODgyLDQ4IEBAIGJvb2wgQ2hhbm5lbFNl
bmQ6OlNldEVuY29kZXIoaW50IHBheWxvYWRfdHlwZSwKICAgICB9CiAgIH0KIAorICBpZiAobWVk
aWFfdHJhbnNwb3J0XykgeworICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZtZWRpYV90cmFuc3BvcnRf
bG9ja18pOworICAgIG1lZGlhX3RyYW5zcG9ydF9wYXlsb2FkX3R5cGVfID0gcGF5bG9hZF90eXBl
OworICAgIC8vIFRPRE8obmlzc2UpOiBDdXJyZW50bHkgYnJva2VuIGZvciBHNzIyLCBzaW5jZSB0
aW1lc3RhbXBzIHBhc3NlZCB0aHJvdWdoCisgICAgLy8gZW5jb2RlciB1c2UgUlRQIGNsb2NrIHJh
dGhlciB0aGFuIHNhbXBsZSBjb3VudCwgYW5kIHRoZXkgZGlmZmVyIGZvciBHNzIyLgorICAgIG1l
ZGlhX3RyYW5zcG9ydF9zYW1wbGluZ19mcmVxdWVuY3lfID0gZW5jb2Rlci0+UnRwVGltZXN0YW1w
UmF0ZUh6KCk7CisgIH0KICAgYXVkaW9fY29kaW5nXy0+U2V0RW5jb2RlcihzdGQ6Om1vdmUoZW5j
b2RlcikpOwogICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBDaGFubmVsU2VuZDo6TW9kaWZ5RW5j
b2RlcigKICAgICBydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Vu
Y29kZXI+Kik+IG1vZGlmaWVyKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfKTsKICAgYXVkaW9fY29kaW5nXy0+TW9kaWZ5RW5jb2Rlcihtb2RpZmllcik7CiB9
CiAKLXZvaWQgQ2hhbm5lbFNlbmQ6OlNldEJpdFJhdGUoaW50IGJpdHJhdGVfYnBzLCBpbnQ2NF90
IHByb2JpbmdfaW50ZXJ2YWxfbXMpIHsKK3ZvaWQgQ2hhbm5lbFNlbmQ6Ok9uQml0cmF0ZUFsbG9j
YXRpb24oQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlKSB7CisgIC8vIFRoaXMgbWV0aG9k
IGNhbiBiZSBjYWxsZWQgb24gdGhlIHdvcmtlciB0aHJlYWQsIG1vZHVsZSBwcm9jZXNzIHRocmVh
ZAorICAvLyBvciBvbiBhIFRhc2tRdWV1ZSB2aWEgVmlkZW9TZW5kU3RyZWFtSW1wbDo6T25FbmNv
ZGVyQ29uZmlndXJhdGlvbkNoYW5nZWQuCisgIC8vIFRPRE8oc29sZW5iZXJnKTogRmlndXJlIG91
dCBhIGdvb2Qgd2F5IHRvIGNoZWNrIHRoaXMgb3IgZW5mb3JjZSBjYWxsaW5nCisgIC8vIHJ1bGVz
LgorICAvLyBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRo
cmVhZCgpIHx8CisgIC8vICAgICAgICAgICAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJf
LkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CisgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmJpdHJhdGVf
Y3JpdF9zZWN0aW9uXyk7CisKICAgYXVkaW9fY29kaW5nXy0+TW9kaWZ5RW5jb2RlcihbJl0oc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXIpIHsKICAgICBpZiAoKmVuY29kZXIp
IHsKLSAgICAgICgqZW5jb2RlciktPk9uUmVjZWl2ZWRVcGxpbmtCYW5kd2lkdGgoYml0cmF0ZV9i
cHMsIHByb2JpbmdfaW50ZXJ2YWxfbXMpOworICAgICAgKCplbmNvZGVyKS0+T25SZWNlaXZlZFVw
bGlua0FsbG9jYXRpb24odXBkYXRlKTsKICAgICB9CiAgIH0pOwotICByZXRyYW5zbWlzc2lvbl9y
YXRlX2xpbWl0ZXJfLT5TZXRNYXhSYXRlKGJpdHJhdGVfYnBzKTsKKyAgcmV0cmFuc21pc3Npb25f
cmF0ZV9saW1pdGVyXy0+U2V0TWF4UmF0ZSh1cGRhdGUudGFyZ2V0X2JpdHJhdGUuYnBzKCkpOwor
ICBjb25maWd1cmVkX2JpdHJhdGVfYnBzXyA9IHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5icHMoKTsK
K30KKworaW50IENoYW5uZWxTZW5kOjpHZXRCaXRyYXRlKCkgY29uc3QgeworICBydGM6OkNyaXRT
Y29wZSBsb2NrKCZiaXRyYXRlX2NyaXRfc2VjdGlvbl8pOworICByZXR1cm4gY29uZmlndXJlZF9i
aXRyYXRlX2Jwc187CiB9CiAKIHZvaWQgQ2hhbm5lbFNlbmQ6Ok9uVHdjY0Jhc2VkVXBsaW5rUGFj
a2V0TG9zc1JhdGUoZmxvYXQgcGFja2V0X2xvc3NfcmF0ZSkgeworICBSVENfRENIRUNLX1JVTl9P
Tigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIGlmICghdXNlX3R3Y2NfcGxyX2Zvcl9hbmFf
KQogICAgIHJldHVybjsKICAgYXVkaW9fY29kaW5nXy0+TW9kaWZ5RW5jb2RlcihbJl0oc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXIpIHsKQEAgLTU3OSw2ICs5MzUsNyBAQCB2
b2lkIENoYW5uZWxTZW5kOjpPblR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0IHBh
Y2tldF9sb3NzX3JhdGUpIHsKIAogdm9pZCBDaGFubmVsU2VuZDo6T25SZWNvdmVyYWJsZVVwbGlu
a1BhY2tldExvc3NSYXRlKAogICAgIGZsb2F0IHJlY292ZXJhYmxlX3BhY2tldF9sb3NzX3JhdGUp
IHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwogICBhdWRp
b19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVy
PiogZW5jb2RlcikgewogICAgIGlmICgqZW5jb2RlcikgewogICAgICAgKCplbmNvZGVyKS0+T25S
ZWNlaXZlZFVwbGlua1JlY292ZXJhYmxlUGFja2V0TG9zc0ZyYWN0aW9uKApAQCAtNTk3LDQ3ICs5
NTQsMjIgQEAgdm9pZCBDaGFubmVsU2VuZDo6T25VcGxpbmtQYWNrZXRMb3NzUmF0ZShmbG9hdCBw
YWNrZXRfbG9zc19yYXRlKSB7CiAgIH0pOwogfQogCi1ib29sIENoYW5uZWxTZW5kOjpFbmFibGVB
dWRpb05ldHdvcmtBZGFwdG9yKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWdfc3RyaW5nKSB7Ci0g
IGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICBhdWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKFsm
XShzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2RlcikgewotICAgIGlmICgqZW5j
b2RlcikgewotICAgICAgc3VjY2VzcyA9Ci0gICAgICAgICAgKCplbmNvZGVyKS0+RW5hYmxlQXVk
aW9OZXR3b3JrQWRhcHRvcihjb25maWdfc3RyaW5nLCBldmVudF9sb2dfKTsKLSAgICB9Ci0gIH0p
OwotICByZXR1cm4gc3VjY2VzczsKLX0KLQotdm9pZCBDaGFubmVsU2VuZDo6RGlzYWJsZUF1ZGlv
TmV0d29ya0FkYXB0b3IoKSB7Ci0gIGF1ZGlvX2NvZGluZ18tPk1vZGlmeUVuY29kZXIoWyZdKHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmNvZGVyKSB7Ci0gICAgaWYgKCplbmNvZGVy
KQotICAgICAgKCplbmNvZGVyKS0+RGlzYWJsZUF1ZGlvTmV0d29ya0FkYXB0b3IoKTsKLSAgfSk7
Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmQ6OlNldFJlY2VpdmVyRnJhbWVMZW5ndGhSYW5nZShpbnQg
bWluX2ZyYW1lX2xlbmd0aF9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbWF4X2ZyYW1lX2xlbmd0aF9tcykgewotICBhdWRpb19jb2RpbmdfLT5N
b2RpZnlFbmNvZGVyKFsmXShzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2Rlcikg
ewotICAgIGlmICgqZW5jb2RlcikgewotICAgICAgKCplbmNvZGVyKS0+U2V0UmVjZWl2ZXJGcmFt
ZUxlbmd0aFJhbmdlKG1pbl9mcmFtZV9sZW5ndGhfbXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2ZyYW1lX2xlbmd0aF9tcyk7Ci0gICAgfQotICB9
KTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZDo6UmVnaXN0ZXJUcmFuc3BvcnQoVHJhbnNwb3J0KiB0
cmFuc3BvcnQpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoJl9jYWxsYmFja0NyaXRTZWN0KTsKLSAg
X3RyYW5zcG9ydFB0ciA9IHRyYW5zcG9ydDsKLX0KKy8vIFRPRE8obmlzc2UpOiBEZWxldGUgYWx3
YXlzLXRydWUgcmV0dXJuIHZhbHVlLgorYm9vbCBDaGFubmVsU2VuZDo6UmVjZWl2ZWRSVENQUGFj
a2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsKKyAgLy8gTWF5IGJlIGNh
bGxlZCBvbiBlaXRoZXIgd29ya2VyIHRocmVhZCBvciBuZXR3b3JrIHRocmVhZC4KKyAgaWYgKG1l
ZGlhX3RyYW5zcG9ydF8pIHsKKyAgICAvLyBJZ25vcmUgUlRDUCBwYWNrZXRzIHdoaWxlIG1lZGlh
IHRyYW5zcG9ydCBpcyB1c2VkLgorICAgIC8vIFRob3NlIHBhY2tldHMgc2hvdWxkIG5vdCBhcnJp
dmUsIGJ1dCB3ZSBhcmUgc2VlaW5nIG9jY2FzaW9uYWwgcGFja2V0cy4KKyAgICByZXR1cm4gMDsK
KyAgfQogCi1pbnQzMl90IENoYW5uZWxTZW5kOjpSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgewogICAvLyBEZWxpdmVyIFJUQ1AgcGFja2V0IHRv
IFJUUC9SVENQIG1vZHVsZSBmb3IgcGFyc2luZwogICBfcnRwUnRjcE1vZHVsZS0+SW5jb21pbmdS
dGNwUGFja2V0KGRhdGEsIGxlbmd0aCk7CiAKICAgaW50NjRfdCBydHQgPSBHZXRSVFQoKTsKICAg
aWYgKHJ0dCA9PSAwKSB7CiAgICAgLy8gV2FpdGluZyBmb3IgdmFsaWQgUlRULgotICAgIHJldHVy
biAwOworICAgIHJldHVybiB0cnVlOwogICB9CiAKICAgaW50NjRfdCBuYWNrX3dpbmRvd19tcyA9
IHJ0dDsKQEAgLTY0OCwxNiArOTgwLDEyIEBAIGludDMyX3QgQ2hhbm5lbFNlbmQ6OlJlY2VpdmVk
UlRDUFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7CiAgIH0KICAg
cmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXy0+U2V0V2luZG93U2l6ZShuYWNrX3dpbmRvd19t
cyk7CiAKLSAgLy8gSW52b2tlIGF1ZGlvIGVuY29kZXJzIE9uUmVjZWl2ZWRSdHQoKS4KLSAgYXVk
aW9fY29kaW5nXy0+TW9kaWZ5RW5jb2RlcihbJl0oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rl
cj4qIGVuY29kZXIpIHsKLSAgICBpZiAoKmVuY29kZXIpCi0gICAgICAoKmVuY29kZXIpLT5PblJl
Y2VpdmVkUnR0KHJ0dCk7Ci0gIH0pOwotCi0gIHJldHVybiAwOworICBPblJlY2VpdmVkUnR0KHJ0
dCk7CisgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIENoYW5uZWxTZW5kOjpTZXRJbnB1dE11dGUo
Ym9vbCBlbmFibGUpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tl
cl8pOwogICBydGM6OkNyaXRTY29wZSBjcygmdm9sdW1lX3NldHRpbmdzX2NyaXRzZWN0Xyk7CiAg
IGlucHV0X211dGVfID0gZW5hYmxlOwogfQpAQCAtNjY3LDI0ICs5OTUsMjYgQEAgYm9vbCBDaGFu
bmVsU2VuZDo6SW5wdXRNdXRlKCkgY29uc3QgewogICByZXR1cm4gaW5wdXRfbXV0ZV87CiB9CiAK
LWludCBDaGFubmVsU2VuZDo6U2VuZFRlbGVwaG9uZUV2ZW50T3V0YmFuZChpbnQgZXZlbnQsIGlu
dCBkdXJhdGlvbl9tcykgeworYm9vbCBDaGFubmVsU2VuZDo6U2VuZFRlbGVwaG9uZUV2ZW50T3V0
YmFuZChpbnQgZXZlbnQsIGludCBkdXJhdGlvbl9tcykgeworICBSVENfRENIRUNLX1JVTl9PTigm
d29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIFJUQ19EQ0hFQ0tfTEUoMCwgZXZlbnQpOwogICBS
VENfRENIRUNLX0dFKDI1NSwgZXZlbnQpOwogICBSVENfRENIRUNLX0xFKDAsIGR1cmF0aW9uX21z
KTsKICAgUlRDX0RDSEVDS19HRSg2NTUzNSwgZHVyYXRpb25fbXMpOwotICBpZiAoIVNlbmRpbmco
KSkgewotICAgIHJldHVybiAtMTsKKyAgaWYgKCFzZW5kaW5nXykgeworICAgIHJldHVybiBmYWxz
ZTsKICAgfQogICBpZiAoX3J0cFJ0Y3BNb2R1bGUtPlNlbmRUZWxlcGhvbmVFdmVudE91dGJhbmQo
CiAgICAgICAgICAgZXZlbnQsIGR1cmF0aW9uX21zLCBrVGVsZXBob25lRXZlbnRBdHRlbnVhdGlv
bmRCKSAhPSAwKSB7CiAgICAgUlRDX0RMT0coTFNfRVJST1IpIDw8ICJTZW5kVGVsZXBob25lRXZl
bnRPdXRiYW5kKCkgZmFpbGVkIHRvIHNlbmQgZXZlbnQiOwotICAgIHJldHVybiAtMTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiAgIH0KLSAgcmV0dXJuIDA7CisgIHJldHVybiB0cnVlOwogfQogCi1pbnQg
Q2hhbm5lbFNlbmQ6OlNldFNlbmRUZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlKGludCBwYXlsb2Fk
X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBwYXlsb2FkX2ZyZXF1ZW5jeSkgeworYm9vbCBDaGFubmVsU2VuZDo6U2V0U2VuZFRlbGVw
aG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXlsb2FkX2ZyZXF1ZW5jeSkg
eworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIFJUQ19E
Q0hFQ0tfTEUoMCwgcGF5bG9hZF90eXBlKTsKICAgUlRDX0RDSEVDS19HRSgxMjcsIHBheWxvYWRf
dHlwZSk7CiAgIENvZGVjSW5zdCBjb2RlYyA9IHswfTsKQEAgLTY5NywzNCArMTAyNyw0NCBAQCBp
bnQgQ2hhbm5lbFNlbmQ6OlNldFNlbmRUZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlKGludCBwYXls
b2FkX3R5cGUsCiAgICAgICBSVENfRExPRyhMU19FUlJPUikKICAgICAgICAgICA8PCAiU2V0U2Vu
ZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoKSBmYWlsZWQgdG8gcmVnaXN0ZXIgIgogICAgICAg
ICAgICAgICJzZW5kIHBheWxvYWQgdHlwZSI7Ci0gICAgICByZXR1cm4gLTE7CisgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICB9Ci0gIHJldHVybiAwOworICByZXR1cm4gdHJ1ZTsKIH0KIAot
aW50IENoYW5uZWxTZW5kOjpTZXRMb2NhbFNTUkModW5zaWduZWQgaW50IHNzcmMpIHsKLSAgaWYg
KGNoYW5uZWxfc3RhdGVfLkdldCgpLnNlbmRpbmcpIHsKLSAgICBSVENfRExPRyhMU19FUlJPUikg
PDwgIlNldExvY2FsU1NSQygpIGFscmVhZHkgc2VuZGluZyI7Ci0gICAgcmV0dXJuIC0xOwordm9p
ZCBDaGFubmVsU2VuZDo6U2V0TG9jYWxTU1JDKHVpbnQzMl90IHNzcmMpIHsKKyAgUlRDX0RDSEVD
S19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOworICBSVENfRENIRUNLKCFzZW5kaW5n
Xyk7CisKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBydGM6OkNyaXRTY29wZSBjcygm
bWVkaWFfdHJhbnNwb3J0X2xvY2tfKTsKKyAgICBtZWRpYV90cmFuc3BvcnRfY2hhbm5lbF9pZF8g
PSBzc3JjOwogICB9CiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRTU1JDKHNzcmMpOwotICByZXR1cm4g
MDsKIH0KIAogdm9pZCBDaGFubmVsU2VuZDo6U2V0TWlkKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQs
IGludCBleHRlbnNpb25faWQpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRf
Y2hlY2tlcl8pOwogICBpbnQgcmV0ID0gU2V0U2VuZFJ0cEhlYWRlckV4dGVuc2lvbih0cnVlLCBr
UnRwRXh0ZW5zaW9uTWlkLCBleHRlbnNpb25faWQpOwogICBSVENfRENIRUNLX0VRKDAsIHJldCk7
CiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRNaWQobWlkKTsKIH0KIAotaW50IENoYW5uZWxTZW5kOjpT
ZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25TdGF0dXMoYm9vbCBlbmFibGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGlk
KSB7Cit2b2lkIENoYW5uZWxTZW5kOjpTZXRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0bWFwX2Fs
bG93X21peGVkKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJf
KTsKKyAgX3J0cFJ0Y3BNb2R1bGUtPlNldEV4dG1hcEFsbG93TWl4ZWQoZXh0bWFwX2FsbG93X21p
eGVkKTsKK30KKwordm9pZCBDaGFubmVsU2VuZDo6U2V0U2VuZEF1ZGlvTGV2ZWxJbmRpY2F0aW9u
U3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgaWQpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtl
cl90aHJlYWRfY2hlY2tlcl8pOwogICBfaW5jbHVkZUF1ZGlvTGV2ZWxJbmRpY2F0aW9uID0gZW5h
YmxlOwotICByZXR1cm4gU2V0U2VuZFJ0cEhlYWRlckV4dGVuc2lvbihlbmFibGUsIGtSdHBFeHRl
bnNpb25BdWRpb0xldmVsLCBpZCk7CisgIGludCByZXQgPSBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5z
aW9uKGVuYWJsZSwga1J0cEV4dGVuc2lvbkF1ZGlvTGV2ZWwsIGlkKTsKKyAgUlRDX0RDSEVDS19F
USgwLCByZXQpOwogfQogCiB2b2lkIENoYW5uZWxTZW5kOjpFbmFibGVTZW5kVHJhbnNwb3J0U2Vx
dWVuY2VOdW1iZXIoaW50IGlkKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfKTsKICAgaW50IHJldCA9CiAgICAgICBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9u
KHRydWUsIGtSdHBFeHRlbnNpb25UcmFuc3BvcnRTZXF1ZW5jZU51bWJlciwgaWQpOwogICBSVENf
RENIRUNLX0VRKDAsIHJldCk7CkBAIC03MzMsNiArMTA3Myw3IEBAIHZvaWQgQ2hhbm5lbFNlbmQ6
OkVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihpbnQgaWQpIHsKIHZvaWQgQ2hhbm5l
bFNlbmQ6OlJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAogICAgIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFuc3BvcnQsCiAgICAgUnRjcEJhbmR3
aWR0aE9ic2VydmVyKiBiYW5kd2lkdGhfb2JzZXJ2ZXIpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04o
Jndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwogICBSdHBQYWNrZXRTZW5kZXIqIHJ0cF9wYWNrZXRf
c2VuZGVyID0gdHJhbnNwb3J0LT5wYWNrZXRfc2VuZGVyKCk7CiAgIFRyYW5zcG9ydEZlZWRiYWNr
T2JzZXJ2ZXIqIHRyYW5zcG9ydF9mZWVkYmFja19vYnNlcnZlciA9CiAgICAgICB0cmFuc3BvcnQt
PnRyYW5zcG9ydF9mZWVkYmFja19vYnNlcnZlcigpOwpAQCAtNzU0LDYgKzEwOTUsNyBAQCB2b2lk
IENoYW5uZWxTZW5kOjpSZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKIH0K
IAogdm9pZCBDaGFubmVsU2VuZDo6UmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMo
KSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgUlRD
X0RDSEVDSyhwYWNrZXRfcm91dGVyXyk7CiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRTdG9yZVBhY2tl
dHNTdGF0dXMoZmFsc2UsIDYwMCk7CiAgIHJ0Y3Bfb2JzZXJ2ZXJfLT5TZXRCYW5kd2lkdGhPYnNl
cnZlcihudWxscHRyKTsKQEAgLTc2NCwzNSArMTEwNiwyNSBAQCB2b2lkIENoYW5uZWxTZW5kOjpS
ZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpIHsKICAgcnRwX3BhY2tldF9zZW5k
ZXJfcHJveHlfLT5TZXRQYWNrZXRTZW5kZXIobnVsbHB0cik7CiB9CiAKLXZvaWQgQ2hhbm5lbFNl
bmQ6OlNldFJUQ1BTdGF0dXMoYm9vbCBlbmFibGUpIHsKLSAgX3J0cFJ0Y3BNb2R1bGUtPlNldFJU
Q1BTdGF0dXMoZW5hYmxlID8gUnRjcE1vZGU6OmtDb21wb3VuZCA6IFJ0Y3BNb2RlOjprT2ZmKTsK
LX0KLQotaW50IENoYW5uZWxTZW5kOjpTZXRSVENQX0NOQU1FKGNvbnN0IGNoYXIgY05hbWVbMjU2
XSkgewotICBpZiAoX3J0cFJ0Y3BNb2R1bGUtPlNldENOQU1FKGNOYW1lKSAhPSAwKSB7Ci0gICAg
UlRDX0RMT0coTFNfRVJST1IpIDw8ICJTZXRSVENQX0NOQU1FKCkgZmFpbGVkIHRvIHNldCBSVENQ
IENOQU1FIjsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgcmV0dXJuIDA7Cit2b2lkIENoYW5uZWxT
ZW5kOjpTZXRSVENQX0NOQU1FKGFic2w6OnN0cmluZ192aWV3IGNfbmFtZSkgeworICBSVENfRENI
RUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CisgIC8vIE5vdGU6IFNldENOQU1F
KCkgYWNjZXB0cyBhIGMgc3RyaW5nIG9mIGxlbmd0aCBhdCBtb3N0IDI1NS4KKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgY19uYW1lX2xpbWl0ZWQoY19uYW1lLnN1YnN0cigwLCAyNTUpKTsKKyAgaW50IHJl
dCA9IF9ydHBSdGNwTW9kdWxlLT5TZXRDTkFNRShjX25hbWVfbGltaXRlZC5jX3N0cigpKSAhPSAw
OworICBSVENfRENIRUNLX0VRKDAsIHJldCkgPDwgIlNldFJUQ1BfQ05BTUUoKSBmYWlsZWQgdG8g
c2V0IFJUQ1AgQ05BTUUiOwogfQogCi1pbnQgQ2hhbm5lbFNlbmQ6OkdldFJlbW90ZVJUQ1BSZXBv
cnRCbG9ja3MoCi0gICAgc3RkOjp2ZWN0b3I8UmVwb3J0QmxvY2s+KiByZXBvcnRfYmxvY2tzKSB7
Ci0gIGlmIChyZXBvcnRfYmxvY2tzID09IE5VTEwpIHsKLSAgICBSVENfRExPRyhMU19FUlJPUikg
PDwgIkdldFJlbW90ZVJUQ1BSZXBvcnRCbG9jaygpcyBpbnZhbGlkIHJlcG9ydF9ibG9ja3MuIjsK
LSAgICByZXR1cm4gLTE7Ci0gIH0KLQorc3RkOjp2ZWN0b3I8UmVwb3J0QmxvY2s+IENoYW5uZWxT
ZW5kOjpHZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tzKCkgY29uc3QgeworICBSVENfRENIRUNLX1JV
Tl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIC8vIEdldCB0aGUgcmVwb3J0IGJsb2Nr
cyBmcm9tIHRoZSBsYXRlc3QgcmVjZWl2ZWQgUlRDUCBTZW5kZXIgb3IgUmVjZWl2ZXIKICAgLy8g
UmVwb3J0LiBFYWNoIGVsZW1lbnQgaW4gdGhlIHZlY3RvciBjb250YWlucyB0aGUgc2VuZGVyJ3Mg
U1NSQyBhbmQgYQogICAvLyByZXBvcnQgYmxvY2sgYWNjb3JkaW5nIHRvIFJGQyAzNTUwLgogICBz
dGQ6OnZlY3RvcjxSVENQUmVwb3J0QmxvY2s+IHJ0Y3BfcmVwb3J0X2Jsb2NrczsKLSAgaWYgKF9y
dHBSdGNwTW9kdWxlLT5SZW1vdGVSVENQU3RhdCgmcnRjcF9yZXBvcnRfYmxvY2tzKSAhPSAwKSB7
Ci0gICAgcmV0dXJuIC0xOwotICB9CiAKLSAgaWYgKHJ0Y3BfcmVwb3J0X2Jsb2Nrcy5lbXB0eSgp
KQotICAgIHJldHVybiAwOworICBpbnQgcmV0ID0gX3J0cFJ0Y3BNb2R1bGUtPlJlbW90ZVJUQ1BT
dGF0KCZydGNwX3JlcG9ydF9ibG9ja3MpOworICBSVENfRENIRUNLX0VRKDAsIHJldCk7CisKKyAg
c3RkOjp2ZWN0b3I8UmVwb3J0QmxvY2s+IHJlcG9ydF9ibG9ja3M7CiAKICAgc3RkOjp2ZWN0b3I8
UlRDUFJlcG9ydEJsb2NrPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBydGNwX3JlcG9ydF9ibG9ja3Mu
YmVnaW4oKTsKICAgZm9yICg7IGl0ICE9IHJ0Y3BfcmVwb3J0X2Jsb2Nrcy5lbmQoKTsgKytpdCkg
ewpAQCAtODA2LDE5ICsxMTM4LDE2IEBAIGludCBDaGFubmVsU2VuZDo6R2V0UmVtb3RlUlRDUFJl
cG9ydEJsb2NrcygKICAgICByZXBvcnRfYmxvY2suaW50ZXJhcnJpdmFsX2ppdHRlciA9IGl0LT5q
aXR0ZXI7CiAgICAgcmVwb3J0X2Jsb2NrLmxhc3RfU1JfdGltZXN0YW1wID0gaXQtPmxhc3Rfc2Vu
ZGVyX3JlcG9ydF90aW1lc3RhbXA7CiAgICAgcmVwb3J0X2Jsb2NrLmRlbGF5X3NpbmNlX2xhc3Rf
U1IgPSBpdC0+ZGVsYXlfc2luY2VfbGFzdF9zZW5kZXJfcmVwb3J0OwotICAgIHJlcG9ydF9ibG9j
a3MtPnB1c2hfYmFjayhyZXBvcnRfYmxvY2spOworICAgIHJlcG9ydF9ibG9ja3MucHVzaF9iYWNr
KHJlcG9ydF9ibG9jayk7CiAgIH0KLSAgcmV0dXJuIDA7CisgIHJldHVybiByZXBvcnRfYmxvY2tz
OwogfQogCi1pbnQgQ2hhbm5lbFNlbmQ6OkdldFJUUFN0YXRpc3RpY3MoQ2FsbFNlbmRTdGF0aXN0
aWNzJiBzdGF0cykgewotICAvLyAtLS0gUnRjcFN0YXRpc3RpY3MKLQotICAvLyAtLS0gUlRUCitD
YWxsU2VuZFN0YXRpc3RpY3MgQ2hhbm5lbFNlbmQ6OkdldFJUQ1BTdGF0aXN0aWNzKCkgY29uc3Qg
eworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CisgIENhbGxT
ZW5kU3RhdGlzdGljcyBzdGF0cyA9IHswfTsKICAgc3RhdHMucnR0TXMgPSBHZXRSVFQoKTsKIAot
ICAvLyAtLS0gRGF0YSBjb3VudGVycwotCiAgIHNpemVfdCBieXRlc1NlbnQoMCk7CiAgIHVpbnQz
Ml90IHBhY2tldHNTZW50KDApOwogCkBAIC04MzEsMjQgKzExNjAsMTIgQEAgaW50IENoYW5uZWxT
ZW5kOjpHZXRSVFBTdGF0aXN0aWNzKENhbGxTZW5kU3RhdGlzdGljcyYgc3RhdHMpIHsKICAgc3Rh
dHMuYnl0ZXNTZW50ID0gYnl0ZXNTZW50OwogICBzdGF0cy5wYWNrZXRzU2VudCA9IHBhY2tldHNT
ZW50OwogCi0gIHJldHVybiAwOwotfQotCi12b2lkIENoYW5uZWxTZW5kOjpTZXROQUNLU3RhdHVz
KGJvb2wgZW5hYmxlLCBpbnQgbWF4TnVtYmVyT2ZQYWNrZXRzKSB7Ci0gIC8vIE5vbmUgb2YgdGhl
c2UgZnVuY3Rpb25zIGNhbiBmYWlsLgotICBpZiAoZW5hYmxlKQotICAgIGF1ZGlvX2NvZGluZ18t
PkVuYWJsZU5hY2sobWF4TnVtYmVyT2ZQYWNrZXRzKTsKLSAgZWxzZQotICAgIGF1ZGlvX2NvZGlu
Z18tPkRpc2FibGVOYWNrKCk7Ci19Ci0KLS8vIENhbGxlZCB3aGVuIHdlIGFyZSBtaXNzaW5nIG9u
ZSBvciBtb3JlIHBhY2tldHMuCi1pbnQgQ2hhbm5lbFNlbmQ6OlJlc2VuZFBhY2tldHMoY29uc3Qg
dWludDE2X3QqIHNlcXVlbmNlX251bWJlcnMsIGludCBsZW5ndGgpIHsKLSAgcmV0dXJuIF9ydHBS
dGNwTW9kdWxlLT5TZW5kTkFDSyhzZXF1ZW5jZV9udW1iZXJzLCBsZW5ndGgpOworICByZXR1cm4g
c3RhdHM7CiB9CiAKIHZvaWQgQ2hhbm5lbFNlbmQ6OlByb2Nlc3NBbmRFbmNvZGVBdWRpbygKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GcmFtZT4gYXVkaW9fZnJhbWUpIHsKKyAgUlRDX0RDSEVD
S19SVU5TX1NFUklBTElaRUQoJmF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfKTsKICAgLy8gQXZv
aWQgcG9zdGluZyBhbnkgbmV3IHRhc2tzIGlmIHNlbmRpbmcgd2FzIGFscmVhZHkgc3RvcHBlZCBp
biBTdG9wU2VuZCgpLgogICBydGM6OkNyaXRTY29wZSBjcygmZW5jb2Rlcl9xdWV1ZV9sb2NrXyk7
CiAgIGlmICghZW5jb2Rlcl9xdWV1ZV9pc19hY3RpdmVfKSB7CkBAIC05MTQsNiArMTIzMSw3IEBA
IHZvaWQgQ2hhbm5lbFNlbmQ6OlVwZGF0ZU92ZXJoZWFkRm9yRW5jb2RlcigpIHsKIH0KIAogdm9p
ZCBDaGFubmVsU2VuZDo6U2V0VHJhbnNwb3J0T3ZlcmhlYWQoc2l6ZV90IHRyYW5zcG9ydF9vdmVy
aGVhZF9wZXJfcGFja2V0KSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2No
ZWNrZXJfKTsKICAgcnRjOjpDcml0U2NvcGUgY3MoJm92ZXJoZWFkX3Blcl9wYWNrZXRfbG9ja18p
OwogICB0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldF8gPSB0cmFuc3BvcnRfb3ZlcmhlYWRf
cGVyX3BhY2tldDsKICAgVXBkYXRlT3ZlcmhlYWRGb3JFbmNvZGVyKCk7CkBAIC05MjcsMzYgKzEy
NDUsNDIgQEAgdm9pZCBDaGFubmVsU2VuZDo6T25PdmVyaGVhZENoYW5nZWQoc2l6ZV90IG92ZXJo
ZWFkX2J5dGVzX3Blcl9wYWNrZXQpIHsKIH0KIAogQU5BU3RhdHMgQ2hhbm5lbFNlbmQ6OkdldEFO
QVN0YXRpc3RpY3MoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfKTsKICAgcmV0dXJuIGF1ZGlvX2NvZGluZ18tPkdldEFOQVN0YXRzKCk7CiB9CiAK
IFJ0cFJ0Y3AqIENoYW5uZWxTZW5kOjpHZXRSdHBSdGNwKCkgY29uc3QgeworICBSVENfRENIRUNL
KG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwog
ICByZXR1cm4gX3J0cFJ0Y3BNb2R1bGUuZ2V0KCk7CiB9CiAKIGludCBDaGFubmVsU2VuZDo6U2V0
U2VuZFJ0cEhlYWRlckV4dGVuc2lvbihib29sIGVuYWJsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSVFBFeHRlbnNpb25UeXBlIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBpZCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZCkgewogICBpbnQg
ZXJyb3IgPSAwOwogICBfcnRwUnRjcE1vZHVsZS0+RGVyZWdpc3RlclNlbmRSdHBIZWFkZXJFeHRl
bnNpb24odHlwZSk7CiAgIGlmIChlbmFibGUpIHsKLSAgICBlcnJvciA9IF9ydHBSdGNwTW9kdWxl
LT5SZWdpc3RlclNlbmRSdHBIZWFkZXJFeHRlbnNpb24odHlwZSwgaWQpOworICAgIC8vIFRPRE8o
bmlzc2UpOiBSdHBSdGNwOjpSZWdpc3RlclNlbmRSdHBIZWFkZXJFeHRlbnNpb24gdG8gdGFrZSBh
biBpbnQKKyAgICAvLyBhcmd1bWVudC4gQ3VycmVudGx5IGl0IHdhbnRzIGFuIHVpbnQ4X3QuCisg
ICAgZXJyb3IgPSBfcnRwUnRjcE1vZHVsZS0+UmVnaXN0ZXJTZW5kUnRwSGVhZGVyRXh0ZW5zaW9u
KAorICAgICAgICB0eXBlLCBydGM6OmRjaGVja2VkX2Nhc3Q8dWludDhfdD4oaWQpKTsKICAgfQog
ICByZXR1cm4gZXJyb3I7CiB9CiAKLWludCBDaGFubmVsU2VuZDo6R2V0UnRwVGltZXN0YW1wUmF0
ZUh6KCkgY29uc3QgewotICBjb25zdCBhdXRvIGZvcm1hdCA9IGF1ZGlvX2NvZGluZ18tPlJlY2Vp
dmVGb3JtYXQoKTsKLSAgLy8gRGVmYXVsdCB0byB0aGUgcGxheW91dCBmcmVxdWVuY3kgaWYgd2Un
dmUgbm90IGdvdHRlbiBhbnkgcGFja2V0cyB5ZXQuCi0gIC8vIFRPRE8ob3NzdSk6IFplcm8gY2xv
Y2tyYXRlIGNhbiBvbmx5IGhhcHBlbiBpZiB3ZSd2ZSBhZGRlZCBhbiBleHRlcm5hbAotICAvLyBk
ZWNvZGVyIGZvciBhIGZvcm1hdCB3ZSBkb24ndCBzdXBwb3J0IGludGVybmFsbHkuIFJlbW92ZSBv
bmNlIHRoYXQgd2F5IG9mCi0gIC8vIGFkZGluZyBkZWNvZGVycyBpcyBnb25lIQotICByZXR1cm4g
KGZvcm1hdCAmJiBmb3JtYXQtPmNsb2NrcmF0ZV9oeiAhPSAwKQotICAgICAgICAgICAgID8gZm9y
bWF0LT5jbG9ja3JhdGVfaHoKLSAgICAgICAgICAgICA6IGF1ZGlvX2NvZGluZ18tPlBsYXlvdXRG
cmVxdWVuY3koKTsKLX0KLQogaW50NjRfdCBDaGFubmVsU2VuZDo6R2V0UlRUKCkgY29uc3Qgewor
ICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIC8vIEdldFJUVCBpcyBnZW5lcmFsbHkgdXNl
ZCBpbiB0aGUgUlRDUCBjb2RlcGF0aCwgd2hlcmUgbWVkaWEgdHJhbnNwb3J0IGlzCisgICAgLy8g
bm90IHByZXNlbnQgYW5kIHNvIGl0IHNob3VsZG4ndCBiZSBuZWVkZWQuIEJ1dCBpdCdzIGFsc28g
aW52b2tlZCBpbgorICAgIC8vICdHZXRTdGF0cycgbWV0aG9kLCBhbmQgZm9yIG5vdyByZXR1cm5p
bmcgbWVkaWEgdHJhbnNwb3J0IFJUVCBoZXJlIGdpdmVzCisgICAgLy8gdXMgImZyZWUiIHJ0dCBz
dGF0cyBmb3IgbWVkaWEgdHJhbnNwb3J0LgorICAgIGF1dG8gdGFyZ2V0X3JhdGUgPSBtZWRpYV90
cmFuc3BvcnRfLT5HZXRMYXRlc3RUYXJnZXRUcmFuc2ZlclJhdGUoKTsKKyAgICBpZiAodGFyZ2V0
X3JhdGUuaGFzX3ZhbHVlKCkpIHsKKyAgICAgIHJldHVybiB0YXJnZXRfcmF0ZS52YWx1ZSgpLm5l
dHdvcmtfZXN0aW1hdGUucm91bmRfdHJpcF90aW1lLm1zKCk7CisgICAgfQorCisgICAgcmV0dXJu
IDA7CisgIH0KICAgUnRjcE1vZGUgbWV0aG9kID0gX3J0cFJ0Y3BNb2R1bGUtPlJUQ1AoKTsKICAg
aWYgKG1ldGhvZCA9PSBSdGNwTW9kZTo6a09mZikgewogICAgIHJldHVybiAwOwpAQCAtOTgxLDE2
ICsxMzA1LDUyIEBAIGludDY0X3QgQ2hhbm5lbFNlbmQ6OkdldFJUVCgpIGNvbnN0IHsKICAgcmV0
dXJuIHJ0dDsKIH0KIAotdm9pZCBDaGFubmVsU2VuZDo6U2V0RnJhbWVFbmNyeXB0b3IoRnJhbWVF
bmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvcikgewordm9pZCBDaGFubmVsU2VuZDo6
U2V0RnJhbWVFbmNyeXB0b3IoCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9y
SW50ZXJmYWNlPiBmcmFtZV9lbmNyeXB0b3IpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtl
cl90aHJlYWRfY2hlY2tlcl8pOwogICBydGM6OkNyaXRTY29wZSBjcygmZW5jb2Rlcl9xdWV1ZV9s
b2NrXyk7CiAgIGlmIChlbmNvZGVyX3F1ZXVlX2lzX2FjdGl2ZV8pIHsKICAgICBlbmNvZGVyX3F1
ZXVlXy0+UG9zdFRhc2soW3RoaXMsIGZyYW1lX2VuY3J5cHRvcl0oKSB7Ci0gICAgICB0aGlzLT5m
cmFtZV9lbmNyeXB0b3JfID0gZnJhbWVfZW5jcnlwdG9yOworICAgICAgdGhpcy0+ZnJhbWVfZW5j
cnlwdG9yXyA9IHN0ZDo6bW92ZShmcmFtZV9lbmNyeXB0b3IpOwogICAgIH0pOwogICB9IGVsc2Ug
ewotICAgIGZyYW1lX2VuY3J5cHRvcl8gPSBmcmFtZV9lbmNyeXB0b3I7CisgICAgZnJhbWVfZW5j
cnlwdG9yXyA9IHN0ZDo6bW92ZShmcmFtZV9lbmNyeXB0b3IpOwogICB9CiB9CiAKK3ZvaWQgQ2hh
bm5lbFNlbmQ6Ok9uVGFyZ2V0VHJhbnNmZXJSYXRlKFRhcmdldFRyYW5zZmVyUmF0ZSByYXRlKSB7
CisgIFJUQ19EQ0hFQ0sobWVkaWFfdHJhbnNwb3J0Xyk7CisgIE9uUmVjZWl2ZWRSdHQocmF0ZS5u
ZXR3b3JrX2VzdGltYXRlLnJvdW5kX3RyaXBfdGltZS5tcygpKTsKK30KKwordm9pZCBDaGFubmVs
U2VuZDo6T25SZWNlaXZlZFJ0dChpbnQ2NF90IHJ0dF9tcykgeworICAvLyBJbnZva2UgYXVkaW8g
ZW5jb2RlcnMgT25SZWNlaXZlZFJ0dCgpLgorICBhdWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVy
KAorICAgICAgW3J0dF9tc10oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXIp
IHsKKyAgICAgICAgaWYgKCplbmNvZGVyKSB7CisgICAgICAgICAgKCplbmNvZGVyKS0+T25SZWNl
aXZlZFJ0dChydHRfbXMpOworICAgICAgICB9CisgICAgICB9KTsKK30KKworfSAgLy8gbmFtZXNw
YWNlCisKK3N0ZDo6dW5pcXVlX3B0cjxDaGFubmVsU2VuZEludGVyZmFjZT4gQ3JlYXRlQ2hhbm5l
bFNlbmQoCisgICAgcnRjOjpUYXNrUXVldWUqIGVuY29kZXJfcXVldWUsCisgICAgUHJvY2Vzc1Ro
cmVhZCogbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAorICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNl
KiBtZWRpYV90cmFuc3BvcnQsCisgICAgVHJhbnNwb3J0KiBydHBfdHJhbnNwb3J0LAorICAgIFJ0
Y3BSdHRTdGF0cyogcnRjcF9ydHRfc3RhdHMsCisgICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9s
b2csCisgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvciwKKyAgICBj
b25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgIGJvb2wgZXh0
bWFwX2FsbG93X21peGVkLAorICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcykgeworICBy
ZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8Q2hhbm5lbFNlbmQ+KAorICAgICAgZW5jb2Rlcl9xdWV1
ZSwgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLCBtZWRpYV90cmFuc3BvcnQsIHJ0cF90cmFuc3BvcnQs
CisgICAgICBydGNwX3J0dF9zdGF0cywgcnRjX2V2ZW50X2xvZywgZnJhbWVfZW5jcnlwdG9yLCBj
cnlwdG9fb3B0aW9ucywKKyAgICAgIGV4dG1hcF9hbGxvd19taXhlZCwgcnRjcF9yZXBvcnRfaW50
ZXJ2YWxfbXMpOworfQorCiB9ICAvLyBuYW1lc3BhY2Ugdm9lCiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hdWRpby9jaGFubmVsX3NlbmQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2VuZC5oCmluZGV4IGVmOTJmOGU4NGViNjBmMDhmYmIy
NzIwOWZhNzk2YTU2MjhlM2Q4MmEuLjA4M2U5YTYwMjkzMDY3YmY2MGZlMmFiODY3NTY1OGViYzY0
OGIxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2F1ZGlvL2NoYW5uZWxfc2VuZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2VuZC5oCkBAIC0xMSw0MiArMTEsMjYgQEAK
ICNpZm5kZWYgQVVESU9fQ0hBTk5FTF9TRU5EX0hfCiAjZGVmaW5lIEFVRElPX0NIQU5ORUxfU0VO
RF9IXwogCi0jaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJp
bmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2ZyYW1l
LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgiCi0jaW5jbHVk
ZSAiYXBpL2NhbGwvdHJhbnNwb3J0LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBO
T0xJTlQoYnVpbGQvaW5jbHVkZSkKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNs
dWRlL2F1ZGlvX2NvZGluZ19tb2R1bGUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3Npbmcvcm1zX2xldmVsLmgiCisjaW5jbHVkZSAiYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmgi
CisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3AuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9j
cml0aWNhbHNlY3Rpb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9mdW5jdGlvbl92aWV3LmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVh
ZF9jaGVja2VyLmgiCi0KLS8vIFRPRE8oc29sZW5iZXJnLCBuaXNzZSk6IFRoaXMgZmlsZSBjb250
YWlucyBhIGZldyBOT0xJTlQgbWFya3MsIHRvIHNpbGVuY2UKLS8vIHdhcm5pbmdzIGFib3V0IHVz
ZSBvZiB1bnNpZ25lZCBzaG9ydCwgYW5kIG5vbi1jb25zdCByZWZlcmVuY2UgYXJndW1lbnRzLgot
Ly8gVGhlc2UgbmVlZCBjbGVhbnVwLCBpbiBhIHNlcGFyYXRlIGNsLgotCi1uYW1lc3BhY2UgcnRj
IHsKLWNsYXNzIFRpbWVzdGFtcFdyYXBBcm91bmRIYW5kbGVyOwotfQogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIAogY2xhc3MgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U7Ci1jbGFzcyBQYWNrZXRSb3V0
ZXI7CiBjbGFzcyBQcm9jZXNzVGhyZWFkOwotY2xhc3MgUmF0ZUxpbWl0ZXI7CiBjbGFzcyBSdGNF
dmVudExvZzsKIGNsYXNzIFJ0cFJ0Y3A7CiBjbGFzcyBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2Vu
ZEludGVyZmFjZTsKIAotc3RydWN0IFNlbmRlckluZm87Ci0KIHN0cnVjdCBDYWxsU2VuZFN0YXRp
c3RpY3MgewogICBpbnQ2NF90IHJ0dE1zOwogICBzaXplX3QgYnl0ZXNTZW50OwpAQCAtNjcsMjM5
ICs1MSw3NyBAQCBzdHJ1Y3QgUmVwb3J0QmxvY2sgewogCiBuYW1lc3BhY2Ugdm9lIHsKIAotY2xh
c3MgUnRwUGFja2V0U2VuZGVyUHJveHk7Ci1jbGFzcyBUcmFuc3BvcnRGZWVkYmFja1Byb3h5Owot
Y2xhc3MgVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJQcm94eTsKLWNsYXNzIFZvRVJ0Y3BPYnNlcnZl
cjsKLQotLy8gSGVscGVyIGNsYXNzIHRvIHNpbXBsaWZ5IGxvY2tpbmcgc2NoZW1lIGZvciBtZW1i
ZXJzIHRoYXQgYXJlIGFjY2Vzc2VkIGZyb20KLS8vIG11bHRpcGxlIHRocmVhZHMuCi0vLyBFeGFt
cGxlOiBhIG1lbWJlciBjYW4gYmUgc2V0IG9uIHRocmVhZCBUMSBhbmQgcmVhZCBieSBhbiBpbnRl
cm5hbCBhdWRpbwotLy8gdGhyZWFkIFQyLiBBY2Nlc3NpbmcgdGhlIG1lbWJlciB2aWEgdGhpcyBj
bGFzcyBlbnN1cmVzIHRoYXQgd2UgYXJlCi0vLyBzYWZlIGFuZCBhbHNvIGF2b2lkIFRTYW4gdjIg
d2FybmluZ3MuCi1jbGFzcyBDaGFubmVsU2VuZFN0YXRlIHsKLSBwdWJsaWM6Ci0gIHN0cnVjdCBT
dGF0ZSB7Ci0gICAgYm9vbCBzZW5kaW5nID0gZmFsc2U7Ci0gIH07Ci0KLSAgQ2hhbm5lbFNlbmRT
dGF0ZSgpIHt9Ci0gIHZpcnR1YWwgfkNoYW5uZWxTZW5kU3RhdGUoKSB7fQotCi0gIHZvaWQgUmVz
ZXQoKSB7Ci0gICAgcnRjOjpDcml0U2NvcGUgbG9jaygmbG9ja18pOwotICAgIHN0YXRlXyA9IFN0
YXRlKCk7Ci0gIH0KLQotICBTdGF0ZSBHZXQoKSBjb25zdCB7Ci0gICAgcnRjOjpDcml0U2NvcGUg
bG9jaygmbG9ja18pOwotICAgIHJldHVybiBzdGF0ZV87Ci0gIH0KLQotICB2b2lkIFNldFNlbmRp
bmcoYm9vbCBlbmFibGUpIHsKLSAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZsb2NrXyk7Ci0gICAg
c3RhdGVfLnNlbmRpbmcgPSBlbmFibGU7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHJ0Yzo6Q3JpdGlj
YWxTZWN0aW9uIGxvY2tfOwotICBTdGF0ZSBzdGF0ZV87Ci19OwotCi1jbGFzcyBDaGFubmVsU2Vu
ZAotICAgIDogcHVibGljIFRyYW5zcG9ydCwKLSAgICAgIHB1YmxpYyBBdWRpb1BhY2tldGl6YXRp
b25DYWxsYmFjaywgIC8vIHJlY2VpdmUgZW5jb2RlZCBwYWNrZXRzIGZyb20gdGhlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBQ00KLSAgICAgIHB1YmxpYyBP
dmVyaGVhZE9ic2VydmVyIHsKK2NsYXNzIENoYW5uZWxTZW5kSW50ZXJmYWNlIHsKICBwdWJsaWM6
Ci0gIC8vIFRPRE8obmlzc2UpOiBNYWtlIE9uVXBsaW5rUGFja2V0TG9zc1JhdGUgcHVibGljLCBh
bmQgZGVsZXRlIGZyaWVuZAotICAvLyBkZWNsYXJhdGlvbi4KLSAgZnJpZW5kIGNsYXNzIFZvRVJ0
Y3BPYnNlcnZlcjsKLQotICBDaGFubmVsU2VuZChydGM6OlRhc2tRdWV1ZSogZW5jb2Rlcl9xdWV1
ZSwKLSAgICAgICAgICAgICAgUHJvY2Vzc1RocmVhZCogbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAot
ICAgICAgICAgICAgICBSdGNwUnR0U3RhdHMqIHJ0Y3BfcnR0X3N0YXRzLAotICAgICAgICAgICAg
ICBSdGNFdmVudExvZyogcnRjX2V2ZW50X2xvZywKLSAgICAgICAgICAgICAgRnJhbWVFbmNyeXB0
b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvcik7Ci0KLSAgdmlydHVhbCB+Q2hhbm5lbFNlbmQo
KTsKKyAgdmlydHVhbCB+Q2hhbm5lbFNlbmRJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CiAKLSAgLy8g
U2VuZCB1c2luZyB0aGlzIGVuY29kZXIsIHdpdGggdGhpcyBwYXlsb2FkIHR5cGUuCi0gIGJvb2wg
U2V0RW5jb2RlcihpbnQgcGF5bG9hZF90eXBlLCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVy
PiBlbmNvZGVyKTsKLSAgdm9pZCBNb2RpZnlFbmNvZGVyKAotICAgICAgcnRjOjpGdW5jdGlvblZp
ZXc8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiopPiBtb2RpZmllcik7CisgIHZp
cnR1YWwgYm9vbCBSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3QgdWludDhfdCogcGFja2V0LCBzaXpl
X3QgbGVuZ3RoKSA9IDA7CiAKLSAgLy8gQVBJIG1ldGhvZHMKKyAgdmlydHVhbCBDYWxsU2VuZFN0
YXRpc3RpY3MgR2V0UlRDUFN0YXRpc3RpY3MoKSBjb25zdCA9IDA7CiAKLSAgLy8gVm9FQmFzZQot
ICBpbnQzMl90IFN0YXJ0U2VuZCgpOwotICB2b2lkIFN0b3BTZW5kKCk7CisgIHZpcnR1YWwgYm9v
bCBTZXRFbmNvZGVyKGludCBwYXlsb2FkX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29kZXIpID0gMDsKKyAgdmlydHVhbCB2
b2lkIE1vZGlmeUVuY29kZXIoCisgICAgICBydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+IG1vZGlmaWVyKSA9IDA7CiAKLSAgLy8gQ29kZWNzCi0g
IHZvaWQgU2V0Qml0UmF0ZShpbnQgYml0cmF0ZV9icHMsIGludDY0X3QgcHJvYmluZ19pbnRlcnZh
bF9tcyk7Ci0gIGJvb2wgRW5hYmxlQXVkaW9OZXR3b3JrQWRhcHRvcihjb25zdCBzdGQ6OnN0cmlu
ZyYgY29uZmlnX3N0cmluZyk7Ci0gIHZvaWQgRGlzYWJsZUF1ZGlvTmV0d29ya0FkYXB0b3IoKTsK
LQotICAvLyBUT0RPKG5pc3NlKTogTW9kaWZpZXMgZGVjb2RlciwgYnV0IG5vdCB1c2VkPwotICB2
b2lkIFNldFJlY2VpdmVyRnJhbWVMZW5ndGhSYW5nZShpbnQgbWluX2ZyYW1lX2xlbmd0aF9tcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heF9mcmFtZV9sZW5ndGhf
bXMpOwotCi0gIC8vIE5ldHdvcmsKLSAgdm9pZCBSZWdpc3RlclRyYW5zcG9ydChUcmFuc3BvcnQq
IHRyYW5zcG9ydCk7Ci0gIC8vIFRPRE8obmlzc2UsIHNvbGVuYmVyZyk6IERlbGV0ZSB3aGVuIFZv
RU5ldHdvcmsgaXMgZGVsZXRlZC4KLSAgaW50MzJfdCBSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCk7Ci0KLSAgLy8gTXV0aW5nLCBWb2x1bWUgYW5k
IExldmVsLgotICB2b2lkIFNldElucHV0TXV0ZShib29sIGVuYWJsZSk7Ci0KLSAgLy8gU3RhdHMu
Ci0gIEFOQVN0YXRzIEdldEFOQVN0YXRpc3RpY3MoKSBjb25zdDsKLQotICAvLyBVc2VkIGJ5IEF1
ZGlvU2VuZFN0cmVhbS4KLSAgUnRwUnRjcCogR2V0UnRwUnRjcCgpIGNvbnN0OwotCi0gIC8vIERU
TUYuCi0gIGludCBTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGludCBldmVudCwgaW50IGR1cmF0
aW9uX21zKTsKLSAgaW50IFNldFNlbmRUZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlKGludCBwYXls
b2FkX3R5cGUsIGludCBwYXlsb2FkX2ZyZXF1ZW5jeSk7Ci0KLSAgLy8gUlRQK1JUQ1AKLSAgaW50
IFNldExvY2FsU1NSQyh1bnNpZ25lZCBpbnQgc3NyYyk7Ci0KLSAgdm9pZCBTZXRNaWQoY29uc3Qg
c3RkOjpzdHJpbmcmIG1pZCwgaW50IGV4dGVuc2lvbl9pZCk7Ci0gIGludCBTZXRTZW5kQXVkaW9M
ZXZlbEluZGljYXRpb25TdGF0dXMoYm9vbCBlbmFibGUsIHVuc2lnbmVkIGNoYXIgaWQpOwotICB2
b2lkIEVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihpbnQgaWQpOwotCi0gIHZvaWQg
UmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCisgIHZpcnR1YWwgdm9pZCBT
ZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYykgPSAwOworICB2aXJ0dWFsIHZvaWQgU2V0TWlkKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtaWQsIGludCBleHRlbnNpb25faWQpID0gMDsKKyAgdmlydHVhbCB2
b2lkIFNldFJUQ1BfQ05BTUUoYWJzbDo6c3RyaW5nX3ZpZXcgY19uYW1lKSA9IDA7CisgIHZpcnR1
YWwgdm9pZCBTZXRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSA9IDA7
CisgIHZpcnR1YWwgdm9pZCBTZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25TdGF0dXMoYm9vbCBl
bmFibGUsIGludCBpZCkgPSAwOworICB2aXJ0dWFsIHZvaWQgRW5hYmxlU2VuZFRyYW5zcG9ydFNl
cXVlbmNlTnVtYmVyKGludCBpZCkgPSAwOworICB2aXJ0dWFsIHZvaWQgUmVnaXN0ZXJTZW5kZXJD
b25nZXN0aW9uQ29udHJvbE9iamVjdHMoCiAgICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2Vu
ZEludGVyZmFjZSogdHJhbnNwb3J0LAotICAgICAgUnRjcEJhbmR3aWR0aE9ic2VydmVyKiBiYW5k
d2lkdGhfb2JzZXJ2ZXIpOwotICB2b2lkIFJlc2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmpl
Y3RzKCk7Ci0gIHZvaWQgU2V0UlRDUFN0YXR1cyhib29sIGVuYWJsZSk7Ci0gIGludCBTZXRSVENQ
X0NOQU1FKGNvbnN0IGNoYXIgY05hbWVbMjU2XSk7Ci0gIGludCBHZXRSZW1vdGVSVENQUmVwb3J0
QmxvY2tzKHN0ZDo6dmVjdG9yPFJlcG9ydEJsb2NrPiogcmVwb3J0X2Jsb2Nrcyk7Ci0gIGludCBH
ZXRSVFBTdGF0aXN0aWNzKENhbGxTZW5kU3RhdGlzdGljcyYgc3RhdHMpOyAgLy8gTk9MSU5UCi0g
IHZvaWQgU2V0TkFDS1N0YXR1cyhib29sIGVuYWJsZSwgaW50IG1heE51bWJlck9mUGFja2V0cyk7
Ci0KLSAgLy8gRnJvbSBBdWRpb1BhY2tldGl6YXRpb25DYWxsYmFjayBpbiB0aGUgQUNNCi0gIGlu
dDMyX3QgU2VuZERhdGEoRnJhbWVUeXBlIGZyYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICB1
aW50OF90IHBheWxvYWRUeXBlLAotICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVTdGFt
cCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwYXlsb2FkRGF0YSwKLSAgICAg
ICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZFNpemUsCi0gICAgICAgICAgICAgICAgICAgY29u
c3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRhdGlvbikgb3ZlcnJpZGU7Ci0KLSAg
Ly8gRnJvbSBUcmFuc3BvcnQgKGNhbGxlZCBieSB0aGUgUlRQL1JUQ1AgbW9kdWxlKQotICBib29s
IFNlbmRSdHAoY29uc3QgdWludDhfdCogZGF0YSwKLSAgICAgICAgICAgICAgIHNpemVfdCBsZW4s
Ci0gICAgICAgICAgICAgICBjb25zdCBQYWNrZXRPcHRpb25zJiBwYWNrZXRfb3B0aW9ucykgb3Zl
cnJpZGU7Ci0gIGJvb2wgU2VuZFJ0Y3AoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbikg
b3ZlcnJpZGU7Ci0KLSAgaW50IFByZWZlcnJlZFNhbXBsZVJhdGUoKSBjb25zdDsKLQotICBib29s
IFNlbmRpbmcoKSBjb25zdCB7IHJldHVybiBjaGFubmVsX3N0YXRlXy5HZXQoKS5zZW5kaW5nOyB9
Ci0gIFJ0cFJ0Y3AqIFJ0cFJ0Y3BNb2R1bGVQdHIoKSBjb25zdCB7IHJldHVybiBfcnRwUnRjcE1v
ZHVsZS5nZXQoKTsgfQotCi0gIC8vIFByb2Nlc3NBbmRFbmNvZGVBdWRpbygpIHBvc3RzIGEgdGFz
ayBvbiB0aGUgc2hhcmVkIGVuY29kZXIgdGFzayBxdWV1ZSwKLSAgLy8gd2hpY2ggaW4gdHVybiBj
YWxscyAob24gdGhlIHF1ZXVlKSBQcm9jZXNzQW5kRW5jb2RlQXVkaW9PblRhc2tRdWV1ZSgpIHdo
ZXJlCi0gIC8vIHRoZSBhY3R1YWwgcHJvY2Vzc2luZyBvZiB0aGUgYXVkaW8gdGFrZXMgcGxhY2Uu
IFRoZSBwcm9jZXNzaW5nIG1haW5seQotICAvLyBjb25zaXN0cyBvZiBlbmNvZGluZyBhbmQgcHJl
cGFyaW5nIHRoZSByZXN1bHQgZm9yIHNlbmRpbmcgYnkgYWRkaW5nIGl0IHRvIGEKLSAgLy8gc2Vu
ZCBxdWV1ZS4KLSAgLy8gVGhlIG1haW4gcmVhc29uIGZvciB1c2luZyBhIHRhc2sgcXVldWUgaGVy
ZSBpcyB0byByZWxlYXNlIHRoZSBuYXRpdmUsCi0gIC8vIE9TLXNwZWNpZmljLCBhdWRpbyBjYXB0
dXJlIHRocmVhZCBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aGF0IGl0Ci0gIC8vIGNh
biBnbyBiYWNrIHRvIHNsZWVwIGFuZCBiZSBwcmVwYXJlZCB0byBkZWxpdmVyIGFuIG5ldyBjYXB0
dXJlZCBhdWRpbwotICAvLyBwYWNrZXQuCi0gIHZvaWQgUHJvY2Vzc0FuZEVuY29kZUF1ZGlvKHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19mcmFtZSk7Ci0KLSAgdm9pZCBTZXRUcmFu
c3BvcnRPdmVyaGVhZChzaXplX3QgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpOwotCi0g
IC8vIEZyb20gT3ZlcmhlYWRPYnNlcnZlciBpbiB0aGUgUlRQL1JUQ1AgbW9kdWxlCi0gIHZvaWQg
T25PdmVyaGVhZENoYW5nZWQoc2l6ZV90IG92ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXQpIG92ZXJy
aWRlOwotCi0gIC8vIFRoZSBleGlzdGVuY2Ugb2YgdGhpcyBmdW5jdGlvbiBhbG9uZ3NpZGUgT25V
cGxpbmtQYWNrZXRMb3NzUmF0ZSBpcwotICAvLyBhIGNvbXByb21pc2UuIFdlIHdhbnQgdGhlIGVu
Y29kZXIgdG8gYmUgYWdub3N0aWMgb2YgdGhlIFBMUiBzb3VyY2UsIGJ1dAotICAvLyB3ZSBhbHNv
IGRvbid0IHdhbnQgaXQgdG8gcmVjZWl2ZSBjb25mbGljdGluZyBpbmZvcm1hdGlvbiBmcm9tIFRX
Q0MgYW5kCi0gIC8vIGZyb20gUlRDUC1YUi4KLSAgdm9pZCBPblR3Y2NCYXNlZFVwbGlua1BhY2tl
dExvc3NSYXRlKGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpOwotCi0gIHZvaWQgT25SZWNvdmVyYWJs
ZVVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0IHJlY292ZXJhYmxlX3BhY2tldF9sb3NzX3JhdGUp
OwotCi0gIGludDY0X3QgR2V0UlRUKCkgY29uc3Q7Ci0KLSAgLy8gRTJFRSBDdXN0b20gQXVkaW8g
RnJhbWUgRW5jcnlwdGlvbgotICB2b2lkIFNldEZyYW1lRW5jcnlwdG9yKEZyYW1lRW5jcnlwdG9y
SW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IpOwotCi0gcHJpdmF0ZToKLSAgY2xhc3MgUHJvY2Vz
c0FuZEVuY29kZUF1ZGlvVGFzazsKLQotICB2b2lkIEluaXQoKTsKLSAgdm9pZCBUZXJtaW5hdGUo
KTsKLQotICB2b2lkIE9uVXBsaW5rUGFja2V0TG9zc1JhdGUoZmxvYXQgcGFja2V0X2xvc3NfcmF0
ZSk7Ci0gIGJvb2wgSW5wdXRNdXRlKCkgY29uc3Q7Ci0KLSAgaW50IFJlc2VuZFBhY2tldHMoY29u
c3QgdWludDE2X3QqIHNlcXVlbmNlX251bWJlcnMsIGludCBsZW5ndGgpOwotCi0gIGludCBTZXRT
ZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKGJvb2wgZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSVFBFeHRlbnNpb25UeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaWQpOwotCi0gIHZvaWQgVXBkYXRlT3ZlcmhlYWRGb3JF
bmNvZGVyKCkKLSAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQob3ZlcmhlYWRfcGVy
X3BhY2tldF9sb2NrXyk7Ci0KLSAgaW50IEdldFJ0cFRpbWVzdGFtcFJhdGVIeigpIGNvbnN0Owot
Ci0gIC8vIENhbGxlZCBvbiB0aGUgZW5jb2RlciB0YXNrIHF1ZXVlIHdoZW4gYSBuZXcgaW5wdXQg
YXVkaW8gZnJhbWUgaXMgcmVhZHkKLSAgLy8gZm9yIGVuY29kaW5nLgotICB2b2lkIFByb2Nlc3NB
bmRFbmNvZGVBdWRpb09uVGFza1F1ZXVlKEF1ZGlvRnJhbWUqIGF1ZGlvX2lucHV0KTsKLQotICBy
dGM6OkNyaXRpY2FsU2VjdGlvbiBfY2FsbGJhY2tDcml0U2VjdDsKLSAgcnRjOjpDcml0aWNhbFNl
Y3Rpb24gdm9sdW1lX3NldHRpbmdzX2NyaXRzZWN0XzsKLQotICBDaGFubmVsU2VuZFN0YXRlIGNo
YW5uZWxfc3RhdGVfOwotCi0gIFJ0Y0V2ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOwotCi0gIHN0
ZDo6dW5pcXVlX3B0cjxSdHBSdGNwPiBfcnRwUnRjcE1vZHVsZTsKLQotICBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9Db2RpbmdNb2R1bGU+IGF1ZGlvX2NvZGluZ187Ci0gIHVpbnQzMl90IF90aW1lU3Rh
bXAgUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9xdWV1ZV8pOwotCi0gIHVpbnQxNl90IHNlbmRfc2Vx
dWVuY2VfbnVtYmVyXzsKLQotICAvLyB1c2VzCi0gIFByb2Nlc3NUaHJlYWQqIF9tb2R1bGVQcm9j
ZXNzVGhyZWFkUHRyOwotICBUcmFuc3BvcnQqIF90cmFuc3BvcnRQdHI7ICAvLyBXZWJSdGMgc29j
a2V0IG9yIGV4dGVybmFsIHRyYW5zcG9ydAotICBSbXNMZXZlbCBybXNfbGV2ZWxfIFJUQ19HVUFS
REVEX0JZKGVuY29kZXJfcXVldWVfKTsKLSAgYm9vbCBpbnB1dF9tdXRlXyBSVENfR1VBUkRFRF9C
WSh2b2x1bWVfc2V0dGluZ3NfY3JpdHNlY3RfKTsKLSAgYm9vbCBwcmV2aW91c19mcmFtZV9tdXRl
ZF8gUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9xdWV1ZV8pOwotICAvLyBWb2VSVFBfUlRDUAotICAv
LyBUT0RPKGhlbnJpa2EpOiBjYW4gdG9kYXkgYmUgYWNjZXNzZWQgb24gdGhlIG1haW4gdGhyZWFk
IGFuZCBvbiB0aGUKLSAgLy8gdGFzayBxdWV1ZTsgaGVuY2UgcG90ZW50aWFsIHJhY2UuCi0gIGJv
b2wgX2luY2x1ZGVBdWRpb0xldmVsSW5kaWNhdGlvbjsKLSAgc2l6ZV90IHRyYW5zcG9ydF9vdmVy
aGVhZF9wZXJfcGFja2V0XwotICAgICAgUlRDX0dVQVJERURfQlkob3ZlcmhlYWRfcGVyX3BhY2tl
dF9sb2NrXyk7Ci0gIHNpemVfdCBydHBfb3ZlcmhlYWRfcGVyX3BhY2tldF8gUlRDX0dVQVJERURf
Qlkob3ZlcmhlYWRfcGVyX3BhY2tldF9sb2NrXyk7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIG92
ZXJoZWFkX3Blcl9wYWNrZXRfbG9ja187Ci0gIC8vIFJ0Y3BCYW5kd2lkdGhPYnNlcnZlcgotICBz
dGQ6OnVuaXF1ZV9wdHI8Vm9FUnRjcE9ic2VydmVyPiBydGNwX29ic2VydmVyXzsKLQotICBQYWNr
ZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXJfID0gbnVsbHB0cjsKLSAgc3RkOjp1bmlxdWVfcHRyPFRy
YW5zcG9ydEZlZWRiYWNrUHJveHk+IGZlZWRiYWNrX29ic2VydmVyX3Byb3h5XzsKLSAgc3RkOjp1
bmlxdWVfcHRyPFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyUHJveHk+IHNlcV9udW1fYWxsb2NhdG9y
X3Byb3h5XzsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFNlbmRlclByb3h5PiBydHBfcGFj
a2V0X3NlbmRlcl9wcm94eV87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSYXRlTGltaXRlcj4gcmV0cmFu
c21pc3Npb25fcmF0ZV9saW1pdGVyXzsKLQotICBydGM6OlRocmVhZENoZWNrZXIgY29uc3RydWN0
aW9uX3RocmVhZF87Ci0KLSAgY29uc3QgYm9vbCB1c2VfdHdjY19wbHJfZm9yX2FuYV87Ci0KLSAg
cnRjOjpDcml0aWNhbFNlY3Rpb24gZW5jb2Rlcl9xdWV1ZV9sb2NrXzsKLSAgYm9vbCBlbmNvZGVy
X3F1ZXVlX2lzX2FjdGl2ZV8gUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9xdWV1ZV9sb2NrXykgPSBm
YWxzZTsKLSAgcnRjOjpUYXNrUXVldWUqIGVuY29kZXJfcXVldWVfID0gbnVsbHB0cjsKLQotICAv
LyBFMkVFIEF1ZGlvIEZyYW1lIEVuY3J5cHRpb24KLSAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2Uq
IGZyYW1lX2VuY3J5cHRvcl8gPSBudWxscHRyOworICAgICAgUnRjcEJhbmR3aWR0aE9ic2VydmVy
KiBiYW5kd2lkdGhfb2JzZXJ2ZXIpID0gMDsKKyAgdmlydHVhbCB2b2lkIFJlc2V0U2VuZGVyQ29u
Z2VzdGlvbkNvbnRyb2xPYmplY3RzKCkgPSAwOworICB2aXJ0dWFsIHN0ZDo6dmVjdG9yPFJlcG9y
dEJsb2NrPiBHZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tzKCkgY29uc3QgPSAwOworICB2aXJ0dWFs
IEFOQVN0YXRzIEdldEFOQVN0YXRpc3RpY3MoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgYm9vbCBT
ZXRTZW5kVGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZShpbnQgcGF5bG9hZF90eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBheWxvYWRfZnJl
cXVlbmN5KSA9IDA7CisgIHZpcnR1YWwgYm9vbCBTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGlu
dCBldmVudCwgaW50IGR1cmF0aW9uX21zKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBPbkJpdHJhdGVB
bGxvY2F0aW9uKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSkgPSAwOworICB2aXJ0dWFs
IGludCBHZXRCaXRyYXRlKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIHZvaWQgU2V0SW5wdXRNdXRl
KGJvb2wgbXV0ZWQpID0gMDsKKworICB2aXJ0dWFsIHZvaWQgUHJvY2Vzc0FuZEVuY29kZUF1ZGlv
KAorICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRnJhbWU+IGF1ZGlvX2ZyYW1lKSA9IDA7Cisg
IHZpcnR1YWwgdm9pZCBTZXRUcmFuc3BvcnRPdmVyaGVhZChzaXplX3QgdHJhbnNwb3J0X292ZXJo
ZWFkX3Blcl9wYWNrZXQpID0gMDsKKyAgdmlydHVhbCBSdHBSdGNwKiBHZXRSdHBSdGNwKCkgY29u
c3QgPSAwOworCisgIHZpcnR1YWwgdm9pZCBPblR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRl
KGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpID0gMDsKKyAgdmlydHVhbCB2b2lkIE9uUmVjb3ZlcmFi
bGVVcGxpbmtQYWNrZXRMb3NzUmF0ZSgKKyAgICAgIGZsb2F0IHJlY292ZXJhYmxlX3BhY2tldF9s
b3NzX3JhdGUpID0gMDsKKyAgLy8gSW4gUlRQIHdlIGN1cnJlbnRseSByZWx5IG9uIFJUQ1AgcGFj
a2V0cyAofFJlY2VpdmVkUlRDUFBhY2tldHwpIHRvIGluZm9ybQorICAvLyBhYm91dCBSVFQuCisg
IC8vIEluIG1lZGlhIHRyYW5zcG9ydCB3ZSByZWx5IG9uIHRoZSBUYXJnZXRUcmFuc2ZlclJhdGVP
YnNlcnZlciBpbnN0ZWFkLgorICAvLyBJbiBvdGhlciB3b3JkcywgaWYgeW91IGFyZSB1c2luZyBS
VFAsIHlvdSBzaG91bGQgZXhwZWN0CisgIC8vIHxSZWNlaXZlZFJUQ1BQYWNrZXR8IHRvIGJlIGNh
bGxlZCwgaWYgeW91IGFyZSB1c2luZyBtZWRpYSB0cmFuc3BvcnQsCisgIC8vIHxPblRhcmdldFRy
YW5zZmVyUmF0ZXwgd2lsbCBiZSBjYWxsZWQuCisgIC8vCisgIC8vIEluIGZ1dHVyZSwgUlRQIG1l
ZGlhIHdpbGwgbW92ZSB0byB0aGUgbWVkaWEgdHJhbnNwb3J0IGltcGxlbWVudGF0aW9uIGFuZAor
ICAvLyB0aGVzZSBjb25kaXRpb25zIHdpbGwgYmUgcmVtb3ZlZC4KKyAgLy8gUmV0dXJucyB0aGUg
UlRUIGluIG1pbGxpc2Vjb25kcy4KKyAgdmlydHVhbCBpbnQ2NF90IEdldFJUVCgpIGNvbnN0ID0g
MDsKKyAgdmlydHVhbCB2b2lkIFN0YXJ0U2VuZCgpID0gMDsKKyAgdmlydHVhbCB2b2lkIFN0b3BT
ZW5kKCkgPSAwOworCisgIC8vIEUyRUUgQ3VzdG9tIEF1ZGlvIEZyYW1lIEVuY3J5cHRpb24gKE9w
dGlvbmFsKQorICB2aXJ0dWFsIHZvaWQgU2V0RnJhbWVFbmNyeXB0b3IoCisgICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2VuY3J5cHRvcikgPSAw
OwogfTsKIAorc3RkOjp1bmlxdWVfcHRyPENoYW5uZWxTZW5kSW50ZXJmYWNlPiBDcmVhdGVDaGFu
bmVsU2VuZCgKKyAgICBydGM6OlRhc2tRdWV1ZSogZW5jb2Rlcl9xdWV1ZSwKKyAgICBQcm9jZXNz
VGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCisgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZh
Y2UqIG1lZGlhX3RyYW5zcG9ydCwKKyAgICBUcmFuc3BvcnQqIHJ0cF90cmFuc3BvcnQsCisgICAg
UnRjcFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0cywKKyAgICBSdGNFdmVudExvZyogcnRjX2V2ZW50
X2xvZywKKyAgICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAg
IGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgYm9vbCBl
eHRtYXBfYWxsb3dfbWl4ZWQsCisgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zKTsKKwog
fSAgLy8gbmFtZXNwYWNlIHZvZQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVs
X3NlbmRfcHJveHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hdWRpby9jaGFubmVsX3NlbmRfcHJveHkuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDgwOTFiZGM2NzFiZWViODkzNTBhNmE4M2FhYzI5NGYxMjYwMzk4ODQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9zZW5kX3Byb3h5LmNjCisrKyAvZGV2
L251bGwKQEAgLTEsMjA3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0g
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVk
ZSAiYXVkaW8vY2hhbm5lbF9zZW5kX3Byb3h5LmgiCi0KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi0j
aW5jbHVkZSAiYXBpL2NhbGwvYXVkaW9fc2luay5oIgotI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5z
cG9ydF9jb250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L251bWVyaWNzL3NhZmVfbWlubWF4LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNl
IHZvZSB7Ci1DaGFubmVsU2VuZFByb3h5OjpDaGFubmVsU2VuZFByb3h5KCkge30KLQotQ2hhbm5l
bFNlbmRQcm94eTo6Q2hhbm5lbFNlbmRQcm94eShzdGQ6OnVuaXF1ZV9wdHI8Q2hhbm5lbFNlbmQ+
IGNoYW5uZWwpCi0gICAgOiBjaGFubmVsXyhzdGQ6Om1vdmUoY2hhbm5lbCkpIHsKLSAgUlRDX0RD
SEVDSyhjaGFubmVsXyk7Ci0gIG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXy5EZXRhY2hG
cm9tVGhyZWFkKCk7Ci19Ci0KLUNoYW5uZWxTZW5kUHJveHk6On5DaGFubmVsU2VuZFByb3h5KCkg
e30KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpTZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYykg
ewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVh
ZCgpKTsKLSAgaW50IGVycm9yID0gY2hhbm5lbF8tPlNldExvY2FsU1NSQyhzc3JjKTsKLSAgUlRD
X0RDSEVDS19FUSgwLCBlcnJvcik7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0TkFD
S1N0YXR1cyhib29sIGVuYWJsZSwgaW50IG1heF9wYWNrZXRzKSB7Ci0gIFJUQ19EQ0hFQ0sod29y
a2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+
U2V0TkFDS1N0YXR1cyhlbmFibGUsIG1heF9wYWNrZXRzKTsKLX0KLQotQ2FsbFNlbmRTdGF0aXN0
aWNzIENoYW5uZWxTZW5kUHJveHk6OkdldFJUQ1BTdGF0aXN0aWNzKCkgY29uc3QgewotICBSVENf
RENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAg
Q2FsbFNlbmRTdGF0aXN0aWNzIHN0YXRzID0gezB9OwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+
R2V0UlRQU3RhdGlzdGljcyhzdGF0cyk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwotICBy
ZXR1cm4gc3RhdHM7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6UmVnaXN0ZXJUcmFuc3Bv
cnQoVHJhbnNwb3J0KiB0cmFuc3BvcnQpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2No
ZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5SZWdpc3RlclRyYW5z
cG9ydCh0cmFuc3BvcnQpOwotfQotCi1ib29sIENoYW5uZWxTZW5kUHJveHk6OlJlY2VpdmVkUlRD
UFBhY2tldChjb25zdCB1aW50OF90KiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoKSB7Ci0gIC8vIE1heSBiZSBjYWxsZWQgb24g
ZWl0aGVyIHdvcmtlciB0aHJlYWQgb3IgbmV0d29yayB0aHJlYWQuCi0gIHJldHVybiBjaGFubmVs
Xy0+UmVjZWl2ZWRSVENQUGFja2V0KHBhY2tldCwgbGVuZ3RoKSA9PSAwOwotfQotCi1ib29sIENo
YW5uZWxTZW5kUHJveHk6OlNldEVuY29kZXIoaW50IHBheWxvYWRfdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmNv
ZGVyKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlk
VGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF8tPlNldEVuY29kZXIocGF5bG9hZF90eXBlLCBz
dGQ6Om1vdmUoZW5jb2RlcikpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6Ok1vZGlmeUVu
Y29kZXIoCi0gICAgcnRjOjpGdW5jdGlvblZpZXc8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9F
bmNvZGVyPiopPiBtb2RpZmllcikgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tl
cl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPk1vZGlmeUVuY29kZXIobW9k
aWZpZXIpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OlNldFJUQ1BTdGF0dXMoYm9vbCBl
bmFibGUpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFs
aWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRSVENQU3RhdHVzKGVuYWJsZSk7Ci19Ci0KLXZv
aWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0TWlkKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsIGludCBl
eHRlbnNpb25faWQpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxl
ZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRNaWQobWlkLCBleHRlbnNpb25faWQp
OwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OlNldFJUQ1BfQ05BTUUoY29uc3Qgc3RkOjpz
dHJpbmcmIGNfbmFtZSkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2Fs
bGVkT25WYWxpZFRocmVhZCgpKTsKLSAgLy8gTm90ZTogVm9FUlRQX1JUQ1A6OlNldFJUQ1BfQ05B
TUUoKSBhY2NlcHRzIGEgY2hhclsyNTZdIGFycmF5LgotICBzdGQ6OnN0cmluZyBjX25hbWVfbGlt
aXRlZCA9IGNfbmFtZS5zdWJzdHIoMCwgMjU1KTsKLSAgaW50IGVycm9yID0gY2hhbm5lbF8tPlNl
dFJUQ1BfQ05BTUUoY19uYW1lX2xpbWl0ZWQuY19zdHIoKSk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwg
ZXJyb3IpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OlNldFNlbmRBdWRpb0xldmVsSW5k
aWNhdGlvblN0YXR1cyhib29sIGVuYWJsZSwgaW50IGlkKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2Vy
X3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBpbnQgZXJyb3IgPSBj
aGFubmVsXy0+U2V0U2VuZEF1ZGlvTGV2ZWxJbmRpY2F0aW9uU3RhdHVzKGVuYWJsZSwgaWQpOwot
ICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpF
bmFibGVTZW5kVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoaW50IGlkKSB7Ci0gIFJUQ19EQ0hFQ0so
d29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVs
Xy0+RW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKGlkKTsKLX0KLQotdm9pZCBDaGFu
bmVsU2VuZFByb3h5OjpSZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKLSAg
ICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogdHJhbnNwb3J0LAotICAgIFJ0
Y3BCYW5kd2lkdGhPYnNlcnZlciogYmFuZHdpZHRoX29ic2VydmVyKSB7Ci0gIFJUQ19EQ0hFQ0so
d29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVs
Xy0+UmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHModHJhbnNwb3J0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRo
X29ic2VydmVyKTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpSZXNldFNlbmRlckNvbmdl
c3Rpb25Db250cm9sT2JqZWN0cygpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNr
ZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5SZXNldFNlbmRlckNvbmdl
c3Rpb25Db250cm9sT2JqZWN0cygpOwotfQotCi1zdGQ6OnZlY3RvcjxSZXBvcnRCbG9jaz4gQ2hh
bm5lbFNlbmRQcm94eTo6R2V0UmVtb3RlUlRDUFJlcG9ydEJsb2NrcygpIGNvbnN0IHsKLSAgUlRD
X0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0g
IHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UmVwb3J0QmxvY2s+IGJsb2NrczsKLSAgaW50IGVycm9yID0g
Y2hhbm5lbF8tPkdldFJlbW90ZVJUQ1BSZXBvcnRCbG9ja3MoJmJsb2Nrcyk7Ci0gIFJUQ19EQ0hF
Q0tfRVEoMCwgZXJyb3IpOwotICByZXR1cm4gYmxvY2tzOwotfQotCi1BTkFTdGF0cyBDaGFubmVs
U2VuZFByb3h5OjpHZXRBTkFTdGF0aXN0aWNzKCkgY29uc3QgewotICBSVENfRENIRUNLKHdvcmtl
cl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgcmV0dXJuIGNoYW5u
ZWxfLT5HZXRBTkFTdGF0aXN0aWNzKCk7Ci19Ci0KLWJvb2wgQ2hhbm5lbFNlbmRQcm94eTo6U2V0
U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBheWxvYWRfdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBheWxv
YWRfZnJlcXVlbmN5KSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxs
ZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF8tPlNldFNlbmRUZWxlcGhvbmVF
dmVudFBheWxvYWRUeXBlKHBheWxvYWRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkX2ZyZXF1ZW5jeSkgPT0gMDsKLX0KLQot
Ym9vbCBDaGFubmVsU2VuZFByb3h5OjpTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGludCBldmVu
dCwgaW50IGR1cmF0aW9uX21zKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2Vy
Xy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF8tPlNlbmRUZWxlcGhv
bmVFdmVudE91dGJhbmQoZXZlbnQsIGR1cmF0aW9uX21zKSA9PSAwOwotfQotCi12b2lkIENoYW5u
ZWxTZW5kUHJveHk6OlNldEJpdHJhdGUoaW50IGJpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcykgewotICAvLyBU
aGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG9uIHRoZSB3b3JrZXIgdGhyZWFkLCBtb2R1bGUgcHJv
Y2VzcyB0aHJlYWQKLSAgLy8gb3Igb24gYSBUYXNrUXVldWUgdmlhIFZpZGVvU2VuZFN0cmVhbUlt
cGw6Ok9uRW5jb2RlckNvbmZpZ3VyYXRpb25DaGFuZ2VkLgotICAvLyBUT0RPKHNvbGVuYmVyZyk6
IEZpZ3VyZSBvdXQgYSBnb29kIHdheSB0byBjaGVjayB0aGlzIG9yIGVuZm9yY2UgY2FsbGluZwot
ICAvLyBydWxlcy4KLSAgLy8gUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxl
ZE9uVmFsaWRUaHJlYWQoKSB8fAotICAvLyAgICAgICAgICAgIG1vZHVsZV9wcm9jZXNzX3RocmVh
ZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+U2V0Qml0UmF0
ZShiaXRyYXRlX2JwcywgcHJvYmluZ19pbnRlcnZhbF9tcyk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNl
bmRQcm94eTo6U2V0SW5wdXRNdXRlKGJvb2wgbXV0ZWQpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJf
dGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRJ
bnB1dE11dGUobXV0ZWQpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OlByb2Nlc3NBbmRF
bmNvZGVBdWRpbygKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GcmFtZT4gYXVkaW9fZnJhbWUp
IHsKLSAgUlRDX0RDSEVDS19SVU5TX1NFUklBTElaRUQoJmF1ZGlvX3RocmVhZF9yYWNlX2NoZWNr
ZXJfKTsKLSAgcmV0dXJuIGNoYW5uZWxfLT5Qcm9jZXNzQW5kRW5jb2RlQXVkaW8oc3RkOjptb3Zl
KGF1ZGlvX2ZyYW1lKSk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0VHJhbnNwb3J0
T3ZlcmhlYWQoaW50IHRyYW5zcG9ydF9vdmVyaGVhZF9wZXJfcGFja2V0KSB7Ci0gIFJUQ19EQ0hF
Q0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFu
bmVsXy0+U2V0VHJhbnNwb3J0T3ZlcmhlYWQodHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQp
OwotfQotCi1SdHBSdGNwKiBDaGFubmVsU2VuZFByb3h5OjpHZXRSdHBSdGNwKCkgY29uc3Qgewot
ICBSVENfRENIRUNLKG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlk
VGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF8tPkdldFJ0cFJ0Y3AoKTsKLX0KLQotdm9pZCBD
aGFubmVsU2VuZFByb3h5OjpPblR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0IHBh
Y2tldF9sb3NzX3JhdGUpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNh
bGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5PblR3Y2NCYXNlZFVwbGlua1BhY2tl
dExvc3NSYXRlKHBhY2tldF9sb3NzX3JhdGUpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6
Ok9uUmVjb3ZlcmFibGVVcGxpbmtQYWNrZXRMb3NzUmF0ZSgKLSAgICBmbG9hdCByZWNvdmVyYWJs
ZV9wYWNrZXRfbG9zc19yYXRlKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2Vy
Xy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+T25SZWNvdmVyYWJsZVVwbGlu
a1BhY2tldExvc3NSYXRlKHJlY292ZXJhYmxlX3BhY2tldF9sb3NzX3JhdGUpOwotfQotCi12b2lk
IENoYW5uZWxTZW5kUHJveHk6OlN0YXJ0U2VuZCgpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhy
ZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGludCBlcnJvciA9IGNoYW5u
ZWxfLT5TdGFydFNlbmQoKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Ci19Ci0KLXZvaWQg
Q2hhbm5lbFNlbmRQcm94eTo6U3RvcFNlbmQoKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVh
ZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+U3RvcFNlbmQo
KTsKLX0KLQotQ2hhbm5lbFNlbmQqIENoYW5uZWxTZW5kUHJveHk6OkdldENoYW5uZWwoKSBjb25z
dCB7Ci0gIHJldHVybiBjaGFubmVsXy5nZXQoKTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5
OjpTZXRGcmFtZUVuY3J5cHRvcigKLSAgICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVf
ZW5jcnlwdG9yKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRP
blZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+U2V0RnJhbWVFbmNyeXB0b3IoZnJhbWVfZW5j
cnlwdG9yKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHZvZQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXVkaW8vY2hhbm5lbF9zZW5kX3Byb3h5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmRfcHJveHkuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWI4YjRhMDJjZTVlZWNkOGQ2OWM4ODZlNTIwODFlZmVkZWI5YWI1Ni4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmRfcHJveHku
aAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykg
MjAxNSBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8K
LQotI2lmbmRlZiBBVURJT19DSEFOTkVMX1NFTkRfUFJPWFlfSF8KLSNkZWZpbmUgQVVESU9fQ0hB
Tk5FTF9TRU5EX1BST1hZX0hfCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RyaW5n
PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9f
ZW5jb2Rlci5oIgotI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfc2VuZC5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9yYWNlX2NoZWNr
ZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgotCi1uYW1lc3BhY2Ug
d2VicnRjIHsKLQotY2xhc3MgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U7Ci1jbGFzcyBSdGNwQmFu
ZHdpZHRoT2JzZXJ2ZXI7Ci1jbGFzcyBSdHBSdGNwOwotY2xhc3MgUnRwVHJhbnNwb3J0Q29udHJv
bGxlclNlbmRJbnRlcmZhY2U7Ci1jbGFzcyBUcmFuc3BvcnQ7Ci0KLW5hbWVzcGFjZSB2b2Ugewot
Ci0vLyBUaGlzIGNsYXNzIHByb3ZpZGVzIHRoZSAidmlldyIgb2YgYSB2b2U6OkNoYW5uZWwgdGhh
dCB3ZSBuZWVkIHRvIGltcGxlbWVudAotLy8gd2VicnRjOjpBdWRpb1NlbmRTdHJlYW0uIEl0IHNl
cnZlcyB0d28gcHVycG9zZXM6Ci0vLyAgMS4gQWxsb3cgbW9ja2luZyBqdXN0IHRoZSBpbnRlcmZh
Y2VzIHVzZWQsIGluc3RlYWQgb2YgdGhlIGVudGlyZQotLy8gICAgIHZvZTo6Q2hhbm5lbCBjbGFz
cy4KLS8vICAyLiBQcm92aWRlIGEgcmVmaW5lZCBpbnRlcmZhY2UgZm9yIHRoZSBzdHJlYW0gY2xh
c3NlcywgaW5jbHVkaW5nIGFzc3VtcHRpb25zCi0vLyAgICAgb24gcmV0dXJuIHZhbHVlcyBhbmQg
aW5wdXQgYWRhcHRhdGlvbi4KLWNsYXNzIENoYW5uZWxTZW5kUHJveHkgewotIHB1YmxpYzoKLSAg
Q2hhbm5lbFNlbmRQcm94eSgpOwotICBleHBsaWNpdCBDaGFubmVsU2VuZFByb3h5KHN0ZDo6dW5p
cXVlX3B0cjxDaGFubmVsU2VuZD4gY2hhbm5lbCk7Ci0gIHZpcnR1YWwgfkNoYW5uZWxTZW5kUHJv
eHkoKTsKLQotICAvLyBTaGFyZWQgd2l0aCBDaGFubmVsUmVjZWl2ZVByb3h5Ci0gIHZpcnR1YWwg
dm9pZCBTZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYyk7Ci0gIHZpcnR1YWwgdm9pZCBTZXROQUNL
U3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4X3BhY2tldHMpOwotICB2aXJ0dWFsIENhbGxTZW5k
U3RhdGlzdGljcyBHZXRSVENQU3RhdGlzdGljcygpIGNvbnN0OwotICB2aXJ0dWFsIHZvaWQgUmVn
aXN0ZXJUcmFuc3BvcnQoVHJhbnNwb3J0KiB0cmFuc3BvcnQpOwotICB2aXJ0dWFsIGJvb2wgUmVj
ZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IGxlbmd0aCk7Ci0K
LSAgdmlydHVhbCBib29sIFNldEVuY29kZXIoaW50IHBheWxvYWRfdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2Rlcik7Ci0g
IHZpcnR1YWwgdm9pZCBNb2RpZnlFbmNvZGVyKAotICAgICAgcnRjOjpGdW5jdGlvblZpZXc8dm9p
ZChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiopPiBtb2RpZmllcik7Ci0KLSAgdmlydHVh
bCB2b2lkIFNldFJUQ1BTdGF0dXMoYm9vbCBlbmFibGUpOwotICB2aXJ0dWFsIHZvaWQgU2V0TWlk
KGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsIGludCBleHRlbnNpb25faWQpOwotICB2aXJ0dWFsIHZv
aWQgU2V0UlRDUF9DTkFNRShjb25zdCBzdGQ6OnN0cmluZyYgY19uYW1lKTsKLSAgdmlydHVhbCB2
b2lkIFNldFNlbmRBdWRpb0xldmVsSW5kaWNhdGlvblN0YXR1cyhib29sIGVuYWJsZSwgaW50IGlk
KTsKLSAgdmlydHVhbCB2b2lkIEVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihpbnQg
aWQpOwotICB2aXJ0dWFsIHZvaWQgUmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVj
dHMoCi0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogdHJhbnNwb3J0
LAotICAgICAgUnRjcEJhbmR3aWR0aE9ic2VydmVyKiBiYW5kd2lkdGhfb2JzZXJ2ZXIpOwotICB2
aXJ0dWFsIHZvaWQgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKLSAgdmly
dHVhbCBzdGQ6OnZlY3RvcjxSZXBvcnRCbG9jaz4gR2V0UmVtb3RlUlRDUFJlcG9ydEJsb2Nrcygp
IGNvbnN0OwotICB2aXJ0dWFsIEFOQVN0YXRzIEdldEFOQVN0YXRpc3RpY3MoKSBjb25zdDsKLSAg
dmlydHVhbCBib29sIFNldFNlbmRUZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlKGludCBwYXlsb2Fk
X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgcGF5bG9hZF9mcmVxdWVuY3kpOwotICB2aXJ0dWFsIGJvb2wgU2VuZFRlbGVwaG9uZUV2ZW50
T3V0YmFuZChpbnQgZXZlbnQsIGludCBkdXJhdGlvbl9tcyk7Ci0gIHZpcnR1YWwgdm9pZCBTZXRC
aXRyYXRlKGludCBiaXRyYXRlX2JwcywgaW50NjRfdCBwcm9iaW5nX2ludGVydmFsX21zKTsKLSAg
dmlydHVhbCB2b2lkIFNldElucHV0TXV0ZShib29sIG11dGVkKTsKLQotICB2aXJ0dWFsIHZvaWQg
UHJvY2Vzc0FuZEVuY29kZUF1ZGlvKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19m
cmFtZSk7Ci0gIHZpcnR1YWwgdm9pZCBTZXRUcmFuc3BvcnRPdmVyaGVhZChpbnQgdHJhbnNwb3J0
X292ZXJoZWFkX3Blcl9wYWNrZXQpOwotICB2aXJ0dWFsIFJ0cFJ0Y3AqIEdldFJ0cFJ0Y3AoKSBj
b25zdDsKLQotICB2aXJ0dWFsIHZvaWQgT25Ud2NjQmFzZWRVcGxpbmtQYWNrZXRMb3NzUmF0ZShm
bG9hdCBwYWNrZXRfbG9zc19yYXRlKTsKLSAgdmlydHVhbCB2b2lkIE9uUmVjb3ZlcmFibGVVcGxp
bmtQYWNrZXRMb3NzUmF0ZSgKLSAgICAgIGZsb2F0IHJlY292ZXJhYmxlX3BhY2tldF9sb3NzX3Jh
dGUpOwotICB2aXJ0dWFsIHZvaWQgU3RhcnRTZW5kKCk7Ci0gIHZpcnR1YWwgdm9pZCBTdG9wU2Vu
ZCgpOwotCi0gIC8vIE5lZWRlZCBieSBDaGFubmVsUmVjZWl2ZVByb3h5OjpBc3NvY2lhdGVTZW5k
Q2hhbm5lbC4KLSAgdmlydHVhbCBDaGFubmVsU2VuZCogR2V0Q2hhbm5lbCgpIGNvbnN0OwotCi0g
IC8vIEUyRUUgQ3VzdG9tIEF1ZGlvIEZyYW1lIEVuY3J5cHRpb24gKE9wdGlvbmFsKQotICB2aXJ0
dWFsIHZvaWQgU2V0RnJhbWVFbmNyeXB0b3IoRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1l
X2VuY3J5cHRvcik7Ci0KLSBwcml2YXRlOgotICAvLyBUaHJlYWQgY2hlY2tlcnMgZG9jdW1lbnQg
YW5kIGxvY2sgdXNhZ2Ugb2Ygc29tZSBtZXRob2RzIG9uIHZvZTo6Q2hhbm5lbCB0bwotICAvLyBz
cGVjaWZpYyB0aHJlYWRzIHdlIGtub3cgYWJvdXQuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkg
c3BsaXQgdXAKLSAgLy8gdm9lOjpDaGFubmVsIGludG8gcGFydHMgd2l0aCBzaW5nbGUtdGhyZWFk
ZWQgc2VtYW50aWNzLCBhbmQgdGhlcmVieSByZWR1Y2UKLSAgLy8gdGhlIG5lZWQgZm9yIGxvY2tz
LgotICBydGM6OlRocmVhZENoZWNrZXIgd29ya2VyX3RocmVhZF9jaGVja2VyXzsKLSAgcnRjOjpU
aHJlYWRDaGVja2VyIG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXzsKLSAgLy8gTWV0aG9k
cyBhY2Nlc3NlZCBmcm9tIGF1ZGlvIGFuZCB2aWRlbyB0aHJlYWRzIGFyZSBjaGVja2VkIGZvciBz
ZXF1ZW50aWFsLQotICAvLyBvbmx5IGFjY2Vzcy4gV2UgZG9uJ3QgbmVjZXNzYXJpbHkgb3duIGFu
ZCBjb250cm9sIHRoZXNlIHRocmVhZHMsIHNvIHRocmVhZAotICAvLyBjaGVja2VycyBjYW5ub3Qg
YmUgdXNlZC4gRS5nLiBDaHJvbWl1bSBtYXkgdHJhbnNmZXIgIm93bmVyc2hpcCIgZnJvbSBvbmUK
LSAgLy8gYXVkaW8gdGhyZWFkIHRvIGFub3RoZXIsIGJ1dCBhY2Nlc3MgaXMgc3RpbGwgc2VxdWVu
dGlhbC4KLSAgcnRjOjpSYWNlQ2hlY2tlciBhdWRpb190aHJlYWRfcmFjZV9jaGVja2VyXzsKLSAg
cnRjOjpSYWNlQ2hlY2tlciB2aWRlb19jYXB0dXJlX3RocmVhZF9yYWNlX2NoZWNrZXJfOwotICBz
dGQ6OnVuaXF1ZV9wdHI8Q2hhbm5lbFNlbmQ+IGNoYW5uZWxfOwotCi0gIFJUQ19ESVNBTExPV19D
T1BZX0FORF9BU1NJR04oQ2hhbm5lbFNlbmRQcm94eSk7Ci19OwotfSAgLy8gbmFtZXNwYWNlIHZv
ZQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIEFVRElPX0NIQU5ORUxfU0VO
RF9QUk9YWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXVkaW8vbW9ja192b2VfY2hhbm5lbF9wcm94eS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbW9ja192b2VfY2hhbm5lbF9wcm94eS5o
CmluZGV4IDkxMDg1OGZlMTMwY2FjOGQ5NGY4NGNiMGM1OWI4YjFhZmY1ZTJmNjguLmVlZTI1YzVh
MmQ1MzJjYjI0NWQ5OWNmNGRkNDg3M2U5NzQzOTI0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL21vY2tfdm9lX2NoYW5uZWxfcHJv
eHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRp
by9tb2NrX3ZvZV9jaGFubmVsX3Byb3h5LmgKQEAgLTE2LDE1ICsxNiwxNiBAQAogI2luY2x1ZGUg
PHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJhdWRpby9jaGFubmVsX3Jl
Y2VpdmVfcHJveHkuaCIKLSNpbmNsdWRlICJhdWRpby9jaGFubmVsX3NlbmRfcHJveHkuaCIKKyNp
bmNsdWRlICJhcGkvdGVzdC9tb2NrX2ZyYW1lX2VuY3J5cHRvci5oIgorI2luY2x1ZGUgImF1ZGlv
L2NoYW5uZWxfcmVjZWl2ZS5oIgorI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfc2VuZC5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIKICNp
bmNsdWRlICJ0ZXN0L2dtb2NrLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRl
c3QgewogCi1jbGFzcyBNb2NrQ2hhbm5lbFJlY2VpdmVQcm94eSA6IHB1YmxpYyB2b2U6OkNoYW5u
ZWxSZWNlaXZlUHJveHkgeworY2xhc3MgTW9ja0NoYW5uZWxSZWNlaXZlIDogcHVibGljIHZvZTo6
Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2UgewogIHB1YmxpYzoKICAgTU9DS19NRVRIT0QxKFNldExv
Y2FsU1NSQywgdm9pZCh1aW50MzJfdCBzc3JjKSk7CiAgIE1PQ0tfTUVUSE9EMihTZXROQUNLU3Rh
dHVzLCB2b2lkKGJvb2wgZW5hYmxlLCBpbnQgbWF4X3BhY2tldHMpKTsKQEAgLTQ2LDEwICs0Nywx
MCBAQCBjbGFzcyBNb2NrQ2hhbm5lbFJlY2VpdmVQcm94eSA6IHB1YmxpYyB2b2U6OkNoYW5uZWxS
ZWNlaXZlUHJveHkgewogICAgICAgICAgICAgICAgQXVkaW9NaXhlcjo6U291cmNlOjpBdWRpb0Zy
YW1lSW5mbyhpbnQgc2FtcGxlX3JhdGVfaHosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKSk7CiAgIE1PQ0tf
Q09OU1RfTUVUSE9EMChQcmVmZXJyZWRTYW1wbGVSYXRlLCBpbnQoKSk7Ci0gIE1PQ0tfTUVUSE9E
MShBc3NvY2lhdGVTZW5kQ2hhbm5lbCwKLSAgICAgICAgICAgICAgIHZvaWQoY29uc3Qgdm9lOjpD
aGFubmVsU2VuZFByb3h5JiBzZW5kX2NoYW5uZWxfcHJveHkpKTsKLSAgTU9DS19NRVRIT0QwKERp
c2Fzc29jaWF0ZVNlbmRDaGFubmVsLCB2b2lkKCkpOworICBNT0NLX01FVEhPRDEoU2V0QXNzb2Np
YXRlZFNlbmRDaGFubmVsLAorICAgICAgICAgICAgICAgdm9pZChjb25zdCB2b2U6OkNoYW5uZWxT
ZW5kSW50ZXJmYWNlKiBzZW5kX2NoYW5uZWwpKTsKICAgTU9DS19DT05TVF9NRVRIT0QwKEdldFBs
YXlvdXRUaW1lc3RhbXAsIHVpbnQzMl90KCkpOworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0U3lu
Y0luZm8sIGFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPigpKTsKICAgTU9DS19NRVRIT0Qx
KFNldE1pbmltdW1QbGF5b3V0RGVsYXksIHZvaWQoaW50IGRlbGF5X21zKSk7CiAgIE1PQ0tfQ09O
U1RfTUVUSE9EMShHZXRSZWNDb2RlYywgYm9vbChDb2RlY0luc3QqIGNvZGVjX2luc3QpKTsKICAg
TU9DS19NRVRIT0QxKFNldFJlY2VpdmVDb2RlY3MsCkBAIC01OSw3ICs2MCw3IEBAIGNsYXNzIE1v
Y2tDaGFubmVsUmVjZWl2ZVByb3h5IDogcHVibGljIHZvZTo6Q2hhbm5lbFJlY2VpdmVQcm94eSB7
CiAgIE1PQ0tfTUVUSE9EMChTdG9wUGxheW91dCwgdm9pZCgpKTsKIH07CiAKLWNsYXNzIE1vY2tD
aGFubmVsU2VuZFByb3h5IDogcHVibGljIHZvZTo6Q2hhbm5lbFNlbmRQcm94eSB7CitjbGFzcyBN
b2NrQ2hhbm5lbFNlbmQgOiBwdWJsaWMgdm9lOjpDaGFubmVsU2VuZEludGVyZmFjZSB7CiAgcHVi
bGljOgogICAvLyBHTW9jayBkb2Vzbid0IGxpa2UgbW92ZS1vbmx5IHR5cGVzLCBsaWtlIHN0ZDo6
dW5pcXVlX3B0ci4KICAgdmlydHVhbCBib29sIFNldEVuY29kZXIoaW50IHBheWxvYWRfdHlwZSwK
QEAgLTcxLDEwICs3MiwxMCBAQCBjbGFzcyBNb2NrQ2hhbm5lbFNlbmRQcm94eSA6IHB1YmxpYyB2
b2U6OkNoYW5uZWxTZW5kUHJveHkgewogICBNT0NLX01FVEhPRDEoCiAgICAgICBNb2RpZnlFbmNv
ZGVyLAogICAgICAgdm9pZChydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0VuY29kZXI+Kik+IG1vZGlmaWVyKSk7Ci0gIE1PQ0tfTUVUSE9EMShTZXRSVENQU3RhdHVz
LCB2b2lkKGJvb2wgZW5hYmxlKSk7CisgIE1PQ0tfTUVUSE9EMihTZXRNaWQsIHZvaWQoY29uc3Qg
c3RkOjpzdHJpbmcmIG1pZCwgaW50IGV4dGVuc2lvbl9pZCkpOwogICBNT0NLX01FVEhPRDEoU2V0
TG9jYWxTU1JDLCB2b2lkKHVpbnQzMl90IHNzcmMpKTsKLSAgTU9DS19NRVRIT0QxKFNldFJUQ1Bf
Q05BTUUsIHZvaWQoY29uc3Qgc3RkOjpzdHJpbmcmIGNfbmFtZSkpOwotICBNT0NLX01FVEhPRDIo
U2V0TkFDS1N0YXR1cywgdm9pZChib29sIGVuYWJsZSwgaW50IG1heF9wYWNrZXRzKSk7CisgIE1P
Q0tfTUVUSE9EMShTZXRSVENQX0NOQU1FLCB2b2lkKGFic2w6OnN0cmluZ192aWV3IGNfbmFtZSkp
OworICBNT0NLX01FVEhPRDEoU2V0RXh0bWFwQWxsb3dNaXhlZCwgdm9pZChib29sIGV4dG1hcF9h
bGxvd19taXhlZCkpOwogICBNT0NLX01FVEhPRDIoU2V0U2VuZEF1ZGlvTGV2ZWxJbmRpY2F0aW9u
U3RhdHVzLCB2b2lkKGJvb2wgZW5hYmxlLCBpbnQgaWQpKTsKICAgTU9DS19NRVRIT0QxKEVuYWJs
ZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJlciwgdm9pZChpbnQgaWQpKTsKICAgTU9DS19NRVRI
T0QyKFJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzLApAQCAtODcsOSArODgs
OCBAQCBjbGFzcyBNb2NrQ2hhbm5lbFNlbmRQcm94eSA6IHB1YmxpYyB2b2U6OkNoYW5uZWxTZW5k
UHJveHkgewogICBNT0NLX01FVEhPRDIoU2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUs
CiAgICAgICAgICAgICAgICBib29sKGludCBwYXlsb2FkX3R5cGUsIGludCBwYXlsb2FkX2ZyZXF1
ZW5jeSkpOwogICBNT0NLX01FVEhPRDIoU2VuZFRlbGVwaG9uZUV2ZW50T3V0YmFuZCwgYm9vbChp
bnQgZXZlbnQsIGludCBkdXJhdGlvbl9tcykpOwotICBNT0NLX01FVEhPRDIoU2V0Qml0cmF0ZSwg
dm9pZChpbnQgYml0cmF0ZV9icHMsIGludDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcykpOworICBN
T0NLX01FVEhPRDEoT25CaXRyYXRlQWxsb2NhdGlvbiwgdm9pZChCaXRyYXRlQWxsb2NhdGlvblVw
ZGF0ZSB1cGRhdGUpKTsKICAgTU9DS19NRVRIT0QxKFNldElucHV0TXV0ZSwgdm9pZChib29sIG11
dGVkKSk7Ci0gIE1PQ0tfTUVUSE9EMShSZWdpc3RlclRyYW5zcG9ydCwgdm9pZChUcmFuc3BvcnQq
IHRyYW5zcG9ydCkpOwogICBNT0NLX01FVEhPRDIoUmVjZWl2ZWRSVENQUGFja2V0LCBib29sKGNv
bnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IGxlbmd0aCkpOwogICAvLyBHTW9jayBkb2Vzbid0
IGxpa2UgbW92ZS1vbmx5IHR5cGVzLCBsaWtlIHN0ZDo6dW5pcXVlX3B0ci4KICAgdmlydHVhbCB2
b2lkIFByb2Nlc3NBbmRFbmNvZGVBdWRpbyhzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GcmFtZT4gYXVk
aW9fZnJhbWUpIHsKQEAgLTk3LDE1ICs5NywxOSBAQCBjbGFzcyBNb2NrQ2hhbm5lbFNlbmRQcm94
eSA6IHB1YmxpYyB2b2U6OkNoYW5uZWxTZW5kUHJveHkgewogICB9CiAgIE1PQ0tfTUVUSE9EMShQ
cm9jZXNzQW5kRW5jb2RlQXVkaW9Gb3JNb2NrLAogICAgICAgICAgICAgICAgdm9pZChzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9GcmFtZT4qIGF1ZGlvX2ZyYW1lKSk7Ci0gIE1PQ0tfTUVUSE9EMShTZXRU
cmFuc3BvcnRPdmVyaGVhZCwgdm9pZChpbnQgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQp
KTsKKyAgTU9DS19NRVRIT0QxKFNldFRyYW5zcG9ydE92ZXJoZWFkLAorICAgICAgICAgICAgICAg
dm9pZChzaXplX3QgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpKTsKICAgTU9DS19DT05T
VF9NRVRIT0QwKEdldFJ0cFJ0Y3AsIFJ0cFJ0Y3AqKCkpOworICBNT0NLX0NPTlNUX01FVEhPRDAo
R2V0Qml0cmF0ZSwgaW50KCkpOwogICBNT0NLX01FVEhPRDEoT25Ud2NjQmFzZWRVcGxpbmtQYWNr
ZXRMb3NzUmF0ZSwgdm9pZChmbG9hdCBwYWNrZXRfbG9zc19yYXRlKSk7CiAgIE1PQ0tfTUVUSE9E
MShPblJlY292ZXJhYmxlVXBsaW5rUGFja2V0TG9zc1JhdGUsCiAgICAgICAgICAgICAgICB2b2lk
KGZsb2F0IHJlY292ZXJhYmxlX3BhY2tldF9sb3NzX3JhdGUpKTsKKyAgTU9DS19DT05TVF9NRVRI
T0QwKEdldFJUVCwgaW50NjRfdCgpKTsKICAgTU9DS19NRVRIT0QwKFN0YXJ0U2VuZCwgdm9pZCgp
KTsKICAgTU9DS19NRVRIT0QwKFN0b3BTZW5kLCB2b2lkKCkpOwotICBNT0NLX01FVEhPRDEoU2V0
RnJhbWVFbmNyeXB0b3IsCi0gICAgICAgICAgICAgICB2b2lkKEZyYW1lRW5jcnlwdG9ySW50ZXJm
YWNlKiBmcmFtZV9lbmNyeXB0b3IpKTsKKyAgTU9DS19NRVRIT0QxKAorICAgICAgU2V0RnJhbWVF
bmNyeXB0b3IsCisgICAgICB2b2lkKHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvcklu
dGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yKSk7CiB9OwogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL251bGxfYXVkaW9fcG9sbGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIu
Y2MKaW5kZXggYzIyYjNkODc5MTE1ODExY2U2ZDBkMWQyNzRkYjFiZmQzNzE4YzI3ZC4uZDJiMTE5
OWVkNmRkMjdkNThkM2Q3ZTQ4NjcyOGU0OWYzYzMxOGM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
bnVsbF9hdWRpb19wb2xsZXIuY2MKQEAgLTksOCArOSwxMyBAQAogICovCiAKICNpbmNsdWRlICJh
dWRpby9udWxsX2F1ZGlvX3BvbGxlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
KworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL251bGxfYXVkaW9fcG9sbGVy
LmgKaW5kZXggYWZiNmVkYmFmMTYxMzJmNzg3MDg4YWNjNmYzNjZiZDFjYjYyNDcwOC4uZjkxZWI3
ZDZjMDc4MjQ0OGNjOWE3YTY5NDNiNTU0MmJmM2I3YzExZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9u
dWxsX2F1ZGlvX3BvbGxlci5oCkBAIC0xMSw4ICsxMSwxMSBAQAogI2lmbmRlZiBBVURJT19OVUxM
X0FVRElPX1BPTExFUl9IXwogI2RlZmluZSBBVURJT19OVUxMX0FVRElPX1BPTExFUl9IXwogCisj
aW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNs
dWRlL2F1ZGlvX2RldmljZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWhh
bmRsZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4
X3Jlc2FtcGxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MKaW5kZXggOTcyMjJlOTQ3YTRlNjJmMzQ1YzczMDRkN2I2
OTJhZjljMGRhNWI2NC4uYjExNThkYTIxM2Y5NjZiNDQzNDBkNjIyMGZjOWUwNGY2NjJhN2ViYyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVk
aW8vcmVtaXhfcmVzYW1wbGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MKQEAgLTEzLDEwICsxMyw3IEBACiAj
aW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiYXVkaW8vdXRpbGl0
eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2Ft
cGxlci9pbmNsdWRlL3B1c2hfcmVzYW1wbGVyLmgiCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Np
Z25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgotI2lu
Y2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB2b2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19id2VfaW50
ZWdyYXRpb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2F1ZGlvL3Rlc3QvYXVkaW9fYndlX2ludGVncmF0aW9uX3Rlc3QuY2MKaW5kZXggOGVjMmE3
Y2Y0YTU3NGUxNTNjYWExNDNlZTY0N2Y0MTMzZmM5ZWU5Mi4uOWZhOTViMTdiOGU0NmQ5NGVlYmQ2
NDFjMzdjMDIyNjFjY2Y4MGQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19id2VfaW50ZWdyYXRpb25fdGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90
ZXN0L2F1ZGlvX2J3ZV9pbnRlZ3JhdGlvbl90ZXN0LmNjCkBAIC0xMjMsOCArMTIzLDggQEAgY2xh
c3MgTm9CYW5kd2lkdGhEcm9wQWZ0ZXJEdHggOiBwdWJsaWMgQXVkaW9Cd2VUZXN0IHsKICAgICBy
ZXR1cm4gdGVzdDo6UmVzb3VyY2VQYXRoKCJ2b2ljZV9lbmdpbmUvYXVkaW9fZHR4MTYiLCAid2F2
Iik7CiAgIH0KIAotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgR2V0TmV0d29ya1Bp
cGVDb25maWcoKSBvdmVycmlkZSB7Ci0gICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmln
IHBpcGVfY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIEdldE5ldHdvcmtQ
aXBlQ29uZmlnKCkgb3ZlcnJpZGUgeworICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcg
cGlwZV9jb25maWc7CiAgICAgcGlwZV9jb25maWcubGlua19jYXBhY2l0eV9rYnBzID0gNTA7CiAg
ICAgcGlwZV9jb25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMgPSAxNTAwOwogICAgIHBpcGVfY29u
ZmlnLnF1ZXVlX2RlbGF5X21zID0gMzAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19id2VfaW50ZWdyYXRpb25f
dGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
dGVzdC9hdWRpb19id2VfaW50ZWdyYXRpb25fdGVzdC5oCmluZGV4IGM3MGFkMWM5MWI5M2Y3NzFi
NTgwZjQ2MGFmZjYzMWUyYTZjZDZiMWEuLjRkZTJjYWIzMTYxM2JlYzM1OTY4MTExYTEwZGM1NWUz
Yjk5NWE3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fYndlX2ludGVncmF0aW9uX3Rlc3QuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2J3
ZV9pbnRlZ3JhdGlvbl90ZXN0LmgKQEAgLTI3LDcgKzI3LDcgQEAgY2xhc3MgQXVkaW9Cd2VUZXN0
IDogcHVibGljIHRlc3Q6OkVuZFRvRW5kVGVzdCB7CiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIHN0
ZDo6c3RyaW5nIEF1ZGlvSW5wdXRGaWxlKCkgPSAwOwogCi0gIHZpcnR1YWwgRGVmYXVsdE5ldHdv
cmtTaW11bGF0aW9uQ29uZmlnIEdldE5ldHdvcmtQaXBlQ29uZmlnKCkgPSAwOworICB2aXJ0dWFs
IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgR2V0TmV0d29ya1BpcGVDb25maWcoKSA9IDA7
CiAKICAgc2l6ZV90IEdldE51bVZpZGVvU3RyZWFtcygpIGNvbnN0IG92ZXJyaWRlOwogICBzaXpl
X3QgR2V0TnVtQXVkaW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2Vu
ZF90b19lbmRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2F1ZGlvL3Rlc3QvYXVkaW9fZW5kX3RvX2VuZF90ZXN0LmNjCmluZGV4IDAyYWJlNzM0YmJm
ZTFmMmVjNjg4YjQwMmNhMTIyZTJlNWQ0OGQ1OTYuLjVlMTg3YWQ4Zjg5ODA5MTI5MzVhZDZhMGJm
YTkwY2MwOWIzMzJlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fZW5kX3RvX2VuZF90ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9f
ZW5kX3RvX2VuZF90ZXN0LmNjCkBAIC0yOCw4ICsyOCw4IEBAIGNvbnN0ZXhwciBpbnQga1NhbXBs
ZVJhdGUgPSA0ODAwMDsKIEF1ZGlvRW5kVG9FbmRUZXN0OjpBdWRpb0VuZFRvRW5kVGVzdCgpCiAg
ICAgOiBFbmRUb0VuZFRlc3QoQ2FsbFRlc3Q6OmtEZWZhdWx0VGltZW91dE1zKSB7fQogCi1EZWZh
dWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgQXVkaW9FbmRUb0VuZFRlc3Q6OkdldE5ldHdvcmtQ
aXBlQ29uZmlnKCkgY29uc3QgewotICByZXR1cm4gRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29u
ZmlnKCk7CitCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIEF1ZGlvRW5kVG9FbmRUZXN0OjpH
ZXROZXR3b3JrUGlwZUNvbmZpZygpIGNvbnN0IHsKKyAgcmV0dXJuIEJ1aWx0SW5OZXR3b3JrQmVo
YXZpb3JDb25maWcoKTsKIH0KIAogc2l6ZV90IEF1ZGlvRW5kVG9FbmRUZXN0OjpHZXROdW1WaWRl
b1N0cmVhbXMoKSBjb25zdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2VuZF90b19lbmRfdGVzdC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19l
bmRfdG9fZW5kX3Rlc3QuaAppbmRleCA5ZGRhODM0ZDIyYjRlZDZlNWVlMmEwZjJmNDg3MjNjZjRj
MDBjMDAyLi5iYTFlMGM3ZDZlZjhlZWM3NzBmM2JjZGQ4MTNiZmIyMjc0NWE0ODAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0
L2F1ZGlvX2VuZF90b19lbmRfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fZW5kX3RvX2VuZF90ZXN0LmgKQEAgLTI5
LDcgKzI5LDcgQEAgY2xhc3MgQXVkaW9FbmRUb0VuZFRlc3QgOiBwdWJsaWMgdGVzdDo6RW5kVG9F
bmRUZXN0IHsKICAgY29uc3QgQXVkaW9TZW5kU3RyZWFtKiBzZW5kX3N0cmVhbSgpIGNvbnN0IHsg
cmV0dXJuIHNlbmRfc3RyZWFtXzsgfQogICBjb25zdCBBdWRpb1JlY2VpdmVTdHJlYW0qIHJlY2Vp
dmVfc3RyZWFtKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2ZV9zdHJlYW1fOyB9CiAKLSAgdmlydHVh
bCBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgR2V0TmV0d29ya1BpcGVDb25maWcoKSBj
b25zdDsKKyAgdmlydHVhbCBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIEdldE5ldHdvcmtQ
aXBlQ29uZmlnKCkgY29uc3Q7CiAKICAgc2l6ZV90IEdldE51bVZpZGVvU3RyZWFtcygpIGNvbnN0
IG92ZXJyaWRlOwogICBzaXplX3QgR2V0TnVtQXVkaW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby90ZXN0L2F1ZGlvX3N0YXRzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX3N0YXRzX3Rlc3QuY2MKaW5kZXggMDE5
Njc5ZTA3ODJmODZiMGI3NmE0YjkwMzFlZWJjNzkzYTNlMjM0OS4uNTU2YTE2ZGZhNmQ1MDU2MzNm
OTk3MmQwOTY1MmJjYzE3ZjAxOWJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19zdGF0c190ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVk
aW9fc3RhdHNfdGVzdC5jYwpAQCAtMzIsOCArMzIsOCBAQCBjbGFzcyBOb0xvc3NUZXN0IDogcHVi
bGljIEF1ZGlvRW5kVG9FbmRUZXN0IHsKIAogICBOb0xvc3NUZXN0KCkgPSBkZWZhdWx0OwogCi0g
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBHZXROZXR3b3JrUGlwZUNvbmZpZygpIGNv
bnN0IG92ZXJyaWRlIHsKLSAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgcGlwZV9j
b25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgR2V0TmV0d29ya1BpcGVDb25m
aWcoKSBjb25zdCBvdmVycmlkZSB7CisgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBw
aXBlX2NvbmZpZzsKICAgICBwaXBlX2NvbmZpZy5xdWV1ZV9kZWxheV9tcyA9IGtSdHRNcyAvIDI7
CiAgICAgcmV0dXJuIHBpcGVfY29uZmlnOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2xvd19iYW5kd2lkdGhfYXVk
aW9fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1
ZGlvL3Rlc3QvbG93X2JhbmR3aWR0aF9hdWRpb190ZXN0LmNjCmluZGV4IDE2YTNiOTFlODc3Y2Rk
ODhkNmY5M2Y4ZWQ2ZjIyYjliYzkyYWI0MzcuLjg1N2Y5ODNkNTc3NzVhMWE0N2IxMGY4MDk4MGQ2
OGE5ZThkZTI1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2F1ZGlvL3Rlc3QvbG93X2JhbmR3aWR0aF9hdWRpb190ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvbG93X2Jh
bmR3aWR0aF9hdWRpb190ZXN0LmNjCkBAIC0xNCwxNCArMTQsMTUgQEAKICNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9zbGVlcC5oIgogI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQv
ZmlsZXV0aWxzLmgiCiAKLURFRklORV9pbnQoc2FtcGxlX3JhdGVfaHosCi0gICAgICAgICAgIDE2
MDAwLAotICAgICAgICAgICAiU2FtcGxlIHJhdGUgKEh6KSBvZiB0aGUgcHJvZHVjZWQgYXVkaW8g
ZmlsZXMuIik7CitXRUJSVENfREVGSU5FX2ludChzYW1wbGVfcmF0ZV9oeiwKKyAgICAgICAgICAg
ICAgICAgIDE2MDAwLAorICAgICAgICAgICAgICAgICAgIlNhbXBsZSByYXRlIChIeikgb2YgdGhl
IHByb2R1Y2VkIGF1ZGlvIGZpbGVzLiIpOwogCi1ERUZJTkVfYm9vbChxdWljaywKLSAgICAgICAg
ICAgIGZhbHNlLAotICAgICAgICAgICAgIkRvbid0IGRvIHRoZSBmdWxsIGF1ZGlvIHJlY29yZGlu
Zy4gIgotICAgICAgICAgICAgIlVzZWQgdG8gcXVpY2tseSBjaGVjayB0aGF0IHRoZSB0ZXN0IHJ1
bnMgd2l0aG91dCBjcmFzaGluZy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBxdWljaywK
KyAgICBmYWxzZSwKKyAgICAiRG9uJ3QgZG8gdGhlIGZ1bGwgYXVkaW8gcmVjb3JkaW5nLiAiCisg
ICAgIlVzZWQgdG8gcXVpY2tseSBjaGVjayB0aGF0IHRoZSB0ZXN0IHJ1bnMgd2l0aG91dCBjcmFz
aGluZy4iKTsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CkBAIC04OSw4
ICs5MCw4IEBAIGNsYXNzIE1vYmlsZTJHTmV0d29ya1Rlc3QgOiBwdWJsaWMgQXVkaW9RdWFsaXR5
VGVzdCB7CiAgICAgICAgICB7eyJtYXhhdmVyYWdlYml0cmF0ZSIsICI2MDAwIn0sIHsicHRpbWUi
LCAiNjAifSwgeyJzdGVyZW8iLCAiMSJ9fX0pOwogICB9CiAKLSAgRGVmYXVsdE5ldHdvcmtTaW11
bGF0aW9uQ29uZmlnIEdldE5ldHdvcmtQaXBlQ29uZmlnKCkgY29uc3Qgb3ZlcnJpZGUgewotICAg
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBwaXBlX2NvbmZpZzsKKyAgQnVpbHRJbk5l
dHdvcmtCZWhhdmlvckNvbmZpZyBHZXROZXR3b3JrUGlwZUNvbmZpZygpIGNvbnN0IG92ZXJyaWRl
IHsKKyAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIHBpcGVfY29uZmlnOwogICAgIHBp
cGVfY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IDEyOwogICAgIHBpcGVfY29uZmlnLnF1ZXVl
X2xlbmd0aF9wYWNrZXRzID0gMTUwMDsKICAgICBwaXBlX2NvbmZpZy5xdWV1ZV9kZWxheV9tcyA9
IDQwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2F1ZGlvL3Rlc3QvbWVkaWFfdHJhbnNwb3J0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L21lZGlhX3RyYW5zcG9ydF90ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI0YWY0YTA4ODE5MTM4YmY2OTY5MjYxMzNmMDRlMWVkZWUzYTYwMjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hdWRpby90ZXN0L21lZGlhX3RyYW5zcG9ydF90ZXN0LmNjCkBAIC0wLDAgKzEsMTQzIEBA
CisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVk
aW9fZGVjb2Rlcl9mYWN0b3J5X3RlbXBsYXRlLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVj
cy9hdWRpb19lbmNvZGVyX2ZhY3RvcnlfdGVtcGxhdGUuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2Nv
ZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5oIgorI2luY2x1ZGUgImFwaS90ZXN0L2xvb3Bi
YWNrX21lZGlhX3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfYXVkaW9fbWl4
ZXIuaCIKKyNpbmNsdWRlICJhdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbS5oIgorI2luY2x1ZGUg
ImF1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtLmgiCisjaW5jbHVkZSAiY2FsbC90ZXN0L21vY2tfYml0
cmF0ZV9hbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2
ZW50X2xvZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvdGVzdF9h
dWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVy
X2ltcGwuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9tb2Nr
X2F1ZGlvX3Byb2Nlc3NpbmcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3V0aWxpdHkvaW5jbHVkZS9w
cm9jZXNzX3RocmVhZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisjaW5j
bHVkZSAidGVzdC9tb2NrX3RyYW5zcG9ydC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVz
cGFjZSB0ZXN0IHsKKworbmFtZXNwYWNlIHsKK2NvbnN0ZXhwciBpbnQga1BheWxvYWRUeXBlT3B1
cyA9IDE3OworY29uc3RleHByIGludCBrU2FtcGxpbmdGcmVxdWVuY3kgPSA0ODAwMDsKK2NvbnN0
ZXhwciBpbnQga051bUNoYW5uZWxzID0gMjsKK2NvbnN0ZXhwciBpbnQga1dhbnRlZFNhbXBsZXMg
PSAzMDAwOworY29uc3RleHByIGludCBrVGVzdFRpbWVvdXRNcyA9IDIgKiBydGM6OmtOdW1NaWxs
aXNlY3NQZXJTZWM7CisKK2NsYXNzIFRlc3RSZW5kZXJlciA6IHB1YmxpYyBUZXN0QXVkaW9EZXZp
Y2VNb2R1bGU6OlJlbmRlcmVyIHsKKyBwdWJsaWM6CisgIFRlc3RSZW5kZXJlcihpbnQgc2FtcGxp
bmdfZnJlcXVlbmN5LCBpbnQgbnVtX2NoYW5uZWxzLCBzaXplX3Qgd2FudGVkX3NhbXBsZXMpCisg
ICAgICA6IHNhbXBsaW5nX2ZyZXF1ZW5jeV8oc2FtcGxpbmdfZnJlcXVlbmN5KSwKKyAgICAgICAg
bnVtX2NoYW5uZWxzXyhudW1fY2hhbm5lbHMpLAorICAgICAgICB3YW50ZWRfc2FtcGxlc18od2Fu
dGVkX3NhbXBsZXMpIHt9CisgIH5UZXN0UmVuZGVyZXIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisK
KyAgaW50IFNhbXBsaW5nRnJlcXVlbmN5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2FtcGxp
bmdfZnJlcXVlbmN5XzsgfQorICBpbnQgTnVtQ2hhbm5lbHMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBudW1fY2hhbm5lbHNfOyB9CisKKyAgYm9vbCBSZW5kZXIocnRjOjpBcnJheVZpZXc8Y29u
c3QgaW50MTZfdD4gZGF0YSkgb3ZlcnJpZGUgeworICAgIGlmIChkYXRhLnNpemUoKSA+PSB3YW50
ZWRfc2FtcGxlc18pIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgd2FudGVkX3Nh
bXBsZXNfIC09IGRhdGEuc2l6ZSgpOworICAgIHJldHVybiB0cnVlOworICB9CisKKyBwcml2YXRl
OgorICBjb25zdCBpbnQgc2FtcGxpbmdfZnJlcXVlbmN5XzsKKyAgY29uc3QgaW50IG51bV9jaGFu
bmVsc187CisgIHNpemVfdCB3YW50ZWRfc2FtcGxlc187Cit9OworCit9ICAvLyBuYW1lc3BhY2UK
KworVEVTVChBdWRpb1dpdGhNZWRpYVRyYW5zcG9ydCwgRGVsaXZlcnNBdWRpbykgeworICBzdGQ6
OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHRyYW5zcG9ydF90aHJlYWQgPSBydGM6OlRocmVhZDo6
Q3JlYXRlKCk7CisgIHRyYW5zcG9ydF90aHJlYWQtPlN0YXJ0KCk7CisgIE1lZGlhVHJhbnNwb3J0
UGFpciB0cmFuc3BvcnRfcGFpcih0cmFuc3BvcnRfdGhyZWFkLmdldCgpKTsKKyAgTW9ja1RyYW5z
cG9ydCBydGNwX3NlbmRfdHJhbnNwb3J0OworICBNb2NrVHJhbnNwb3J0IHNlbmRfdHJhbnNwb3J0
OworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2c+IG51bGxfZXZlbnRfbG9nID0gUnRjRXZl
bnRMb2c6OkNyZWF0ZU51bGwoKTsKKyAgTW9ja0JpdHJhdGVBbGxvY2F0b3IgYml0cmF0ZV9hbGxv
Y2F0b3I7CisKKyAgcnRjOjpzY29wZWRfcmVmcHRyPFRlc3RBdWRpb0RldmljZU1vZHVsZT4gYXVk
aW9fZGV2aWNlID0KKyAgICAgIFRlc3RBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRlVGVzdEF1ZGlv
RGV2aWNlTW9kdWxlKAorICAgICAgICAgIFRlc3RBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRlUHVs
c2VkTm9pc2VDYXB0dXJlcigKKyAgICAgICAgICAgICAgLyogbWF4X2FtcGxpdHVkZT0gKi8gMTAw
MDAsIGtTYW1wbGluZ0ZyZXF1ZW5jeSwga051bUNoYW5uZWxzKSwKKyAgICAgICAgICBhYnNsOjpt
YWtlX3VuaXF1ZTxUZXN0UmVuZGVyZXI+KGtTYW1wbGluZ0ZyZXF1ZW5jeSwga051bUNoYW5uZWxz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1dhbnRlZFNhbXBs
ZXMpKTsKKworICBBdWRpb1N0YXRlOjpDb25maWcgYXVkaW9fY29uZmlnOworICBhdWRpb19jb25m
aWcuYXVkaW9fbWl4ZXIgPSBBdWRpb01peGVySW1wbDo6Q3JlYXRlKCk7CisgIC8vIFRPRE8obmlz
c2UpOiBJcyBhIG1vY2sgQXVkaW9Qcm9jZXNzaW5nIGVub3VnaD8KKyAgYXVkaW9fY29uZmlnLmF1
ZGlvX3Byb2Nlc3NpbmcgPQorICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxNb2NrQXVk
aW9Qcm9jZXNzaW5nPigpOworICBhdWRpb19jb25maWcuYXVkaW9fZGV2aWNlX21vZHVsZSA9IGF1
ZGlvX2RldmljZTsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvU3RhdGU+IGF1ZGlvX3N0YXRl
ID0gQXVkaW9TdGF0ZTo6Q3JlYXRlKGF1ZGlvX2NvbmZpZyk7CisKKyAgLy8gVE9ETyhuaXNzZSk6
IFVzZSBzb21lIGxvc3NsZXNzIGNvZGVjPworICBjb25zdCBTZHBBdWRpb0Zvcm1hdCBhdWRpb19m
b3JtYXQoIm9wdXMiLCBrU2FtcGxpbmdGcmVxdWVuY3ksIGtOdW1DaGFubmVscyk7CisKKyAgLy8g
U2V0dXAgcmVjZWl2ZSBzdHJlYW07CisgIHdlYnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFtOjpDb25m
aWcgcmVjZWl2ZV9jb25maWc7CisgIC8vIFRPRE8obmlzc2UpOiBVcGRhdGUgQXVkaW9SZWNlaXZl
U3RyZWFtIHRvIG5vdCByZXF1aXJlIHJ0Y3Bfc2VuZF90cmFuc3BvcnQKKyAgLy8gd2hlbiBhIE1l
ZGlhVHJhbnNwb3J0IGlzIHByb3ZpZGVkLgorICByZWNlaXZlX2NvbmZpZy5ydGNwX3NlbmRfdHJh
bnNwb3J0ID0gJnJ0Y3Bfc2VuZF90cmFuc3BvcnQ7CisgIHJlY2VpdmVfY29uZmlnLm1lZGlhX3Ry
YW5zcG9ydCA9IHRyYW5zcG9ydF9wYWlyLmZpcnN0KCk7CisgIHJlY2VpdmVfY29uZmlnLmRlY29k
ZXJfbWFwLmVtcGxhY2Uoa1BheWxvYWRUeXBlT3B1cywgYXVkaW9fZm9ybWF0KTsKKyAgcmVjZWl2
ZV9jb25maWcuZGVjb2Rlcl9mYWN0b3J5ID0KKyAgICAgIENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rv
cnk8QXVkaW9EZWNvZGVyT3B1cz4oKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1RocmVh
ZD4gcmVjZWl2ZV9wcm9jZXNzX3RocmVhZCA9CisgICAgICBQcm9jZXNzVGhyZWFkOjpDcmVhdGUo
ImF1ZGlvIHJlY3YgdGhyZWFkIik7CisKKyAgd2VicnRjOjppbnRlcm5hbDo6QXVkaW9SZWNlaXZl
U3RyZWFtIHJlY2VpdmVfc3RyZWFtKAorICAgICAgLypydHBfc3RyZWFtX3JlY2VpdmVyX2NvbnRy
b2xsZXI9Ki9udWxscHRyLAorICAgICAgLypwYWNrZXRfcm91dGVyPSovbnVsbHB0ciwgcmVjZWl2
ZV9wcm9jZXNzX3RocmVhZC5nZXQoKSwgcmVjZWl2ZV9jb25maWcsCisgICAgICBhdWRpb19zdGF0
ZSwgbnVsbF9ldmVudF9sb2cuZ2V0KCkpOworCisgIC8vIFRPRE8obmlzc2UpOiBVcGRhdGUgQXVk
aW9TZW5kU3RyZWFtIHRvIG5vdCByZXF1aXJlIHNlbmRfdHJhbnNwb3J0IHdoZW4gYQorICAvLyBN
ZWRpYVRyYW5zcG9ydCBpcyBwcm92aWRlZC4KKyAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgc2Vu
ZF9jb25maWcoJnNlbmRfdHJhbnNwb3J0LCB0cmFuc3BvcnRfcGFpci5zZWNvbmQoKSk7CisgIHNl
bmRfY29uZmlnLnNlbmRfY29kZWNfc3BlYyA9CisgICAgICBBdWRpb1NlbmRTdHJlYW06OkNvbmZp
Zzo6U2VuZENvZGVjU3BlYyhrUGF5bG9hZFR5cGVPcHVzLCBhdWRpb19mb3JtYXQpOworICBzZW5k
X2NvbmZpZy5lbmNvZGVyX2ZhY3RvcnkgPSBDcmVhdGVBdWRpb0VuY29kZXJGYWN0b3J5PEF1ZGlv
RW5jb2Rlck9wdXM+KCk7CisgIHJ0Yzo6VGFza1F1ZXVlIHNlbmRfdHEoImF1ZGlvIHNlbmQgcXVl
dWUiKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJlYWQ+IHNlbmRfcHJvY2Vzc190aHJl
YWQgPQorICAgICAgUHJvY2Vzc1RocmVhZDo6Q3JlYXRlKCJhdWRpbyBzZW5kIHRocmVhZCIpOwor
ICB3ZWJydGM6OmludGVybmFsOjpBdWRpb1NlbmRTdHJlYW0gc2VuZF9zdHJlYW0oCisgICAgICBz
ZW5kX2NvbmZpZywgYXVkaW9fc3RhdGUsICZzZW5kX3RxLCBzZW5kX3Byb2Nlc3NfdGhyZWFkLmdl
dCgpLAorICAgICAgLyp0cmFuc3BvcnQ9Ki9udWxscHRyLCAmYml0cmF0ZV9hbGxvY2F0b3IsIG51
bGxfZXZlbnRfbG9nLmdldCgpLAorICAgICAgLypydGNwX3J0dF9zdGF0cz0qL251bGxwdHIsIGFi
c2w6Om9wdGlvbmFsPFJ0cFN0YXRlPigpKTsKKworICBhdWRpb19kZXZpY2UtPkluaXQoKTsgIC8v
IFN0YXJ0cyB0aHJlYWQuCisgIGF1ZGlvX2RldmljZS0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKGF1
ZGlvX3N0YXRlLT5hdWRpb190cmFuc3BvcnQoKSk7CisKKyAgcmVjZWl2ZV9zdHJlYW0uU3RhcnQo
KTsKKyAgc2VuZF9zdHJlYW0uU3RhcnQoKTsKKyAgYXVkaW9fZGV2aWNlLT5TdGFydFBsYXlvdXQo
KTsKKyAgYXVkaW9fZGV2aWNlLT5TdGFydFJlY29yZGluZygpOworCisgIEVYUEVDVF9UUlVFKGF1
ZGlvX2RldmljZS0+V2FpdEZvclBsYXlvdXRFbmQoa1Rlc3RUaW1lb3V0TXMpKTsKKworICBhdWRp
b19kZXZpY2UtPlN0b3BSZWNvcmRpbmcoKTsKKyAgYXVkaW9fZGV2aWNlLT5TdG9wUGxheW91dCgp
OworICByZWNlaXZlX3N0cmVhbS5TdG9wKCk7CisgIHNlbmRfc3RyZWFtLlN0b3AoKTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3RpbWVfaW50
ZXJ2YWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRp
by90aW1lX2ludGVydmFsLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzEwMzQw
OGEzYTI0NjdlNWEwYTAyZjg4ZTM5MGQ3NDgxM2M2YzFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2F1ZGlvL3RpbWVfaW50ZXJ2YWwuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1NiAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgImF1ZGlvL3RpbWVfaW50
ZXJ2YWwuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS90aW1ldXRpbHMuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLVRpbWVJbnRlcnZhbDo6VGlt
ZUludGVydmFsKCkgPSBkZWZhdWx0OwotVGltZUludGVydmFsOjp+VGltZUludGVydmFsKCkgPSBk
ZWZhdWx0OwotCi12b2lkIFRpbWVJbnRlcnZhbDo6RXh0ZW5kKCkgewotICBFeHRlbmQocnRjOjpU
aW1lTWlsbGlzKCkpOwotfQotCi12b2lkIFRpbWVJbnRlcnZhbDo6RXh0ZW5kKGludDY0X3QgdGlt
ZSkgewotICBpZiAoIWludGVydmFsXykgewotICAgIGludGVydmFsXy5lbXBsYWNlKHRpbWUsIHRp
bWUpOwotICB9IGVsc2UgewotICAgIGlmICh0aW1lIDwgaW50ZXJ2YWxfLT5maXJzdCkgewotICAg
ICAgaW50ZXJ2YWxfLT5maXJzdCA9IHRpbWU7Ci0gICAgfQotICAgIGlmICh0aW1lID4gaW50ZXJ2
YWxfLT5sYXN0KSB7Ci0gICAgICBpbnRlcnZhbF8tPmxhc3QgPSB0aW1lOwotICAgIH0KLSAgfQot
fQotCi12b2lkIFRpbWVJbnRlcnZhbDo6RXh0ZW5kKGNvbnN0IFRpbWVJbnRlcnZhbCYgb3RoZXJf
aW50ZXJ2YWwpIHsKLSAgaWYgKCFvdGhlcl9pbnRlcnZhbC5FbXB0eSgpKSB7Ci0gICAgRXh0ZW5k
KG90aGVyX2ludGVydmFsLmludGVydmFsXy0+Zmlyc3QpOwotICAgIEV4dGVuZChvdGhlcl9pbnRl
cnZhbC5pbnRlcnZhbF8tPmxhc3QpOwotICB9Ci19Ci0KLWJvb2wgVGltZUludGVydmFsOjpFbXB0
eSgpIGNvbnN0IHsKLSAgcmV0dXJuICFpbnRlcnZhbF87Ci19Ci0KLWludDY0X3QgVGltZUludGVy
dmFsOjpMZW5ndGgoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0soaW50ZXJ2YWxfKTsKLSAgcmV0dXJu
IGludGVydmFsXy0+bGFzdCAtIGludGVydmFsXy0+Zmlyc3Q7Ci19Ci0KLVRpbWVJbnRlcnZhbDo6
SW50ZXJ2YWw6OkludGVydmFsKGludDY0X3QgZmlyc3QsIGludDY0X3QgbGFzdCkKLSAgICA6IGZp
cnN0KGZpcnN0KSwgbGFzdChsYXN0KSB7fQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90
aW1lX2ludGVydmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hdWRpby90aW1lX2ludGVydmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5
ZmUyOWQ5ZDU2OWExMDU2ZDU5MTMxZDU4NzZlMmM5MGI5NmQ0OTkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vdGltZV9pbnRlcnZhbC5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgQVVESU9fVElNRV9J
TlRFUlZBTF9IXwotI2RlZmluZSBBVURJT19USU1FX0lOVEVSVkFMX0hfCi0KLSNpbmNsdWRlIDxz
dGRpbnQuaD4KLQotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLQotbmFtZXNwYWNl
IHdlYnJ0YyB7Ci0KLS8vIFRoaXMgY2xhc3MgbG9ncyB0aGUgZmlyc3QgYW5kIGxhc3QgdGltZSBp
dHMgRXh0ZW5kKCkgZnVuY3Rpb24gaXMgY2FsbGVkLgotLy8KLS8vIFRoaXMgY2xhc3MgaXMgbm90
IHRocmVhZC1zYWZlOyBFeHRlbmQoKSBjYWxscyBzaG91bGQgb25seSBiZSBtYWRlIGJ5IGEKLS8v
IHNpbmdsZSB0aHJlYWQgYXQgYSB0aW1lLCBzdWNoIGFzIHdpdGhpbiBhIGxvY2sgb3IgZGVzdHJ1
Y3Rvci4KLS8vCi0vLyBFeGFtcGxlIHVzYWdlOgotLy8gICAvLyBsZXQgeCA8IHkgPCB6IDwgdSA8
IHYKLS8vICAgcnRjOjpUaW1lSW50ZXJ2YWwgaW50ZXJ2YWw7Ci0vLyAgIC4uLiAgLy8gICBpbnRl
cnZhbC5FeHRlbmQoKTsgLy8gYXQgdGltZSB4Ci0vLyAgIC4uLgotLy8gICBpbnRlcnZhbC5FeHRl
bmQoKTsgLy8gYXQgdGltZSB5Ci0vLyAgIC4uLgotLy8gICBpbnRlcnZhbC5FeHRlbmQoKTsgLy8g
YXQgdGltZSB1Ci0vLyAgIC4uLgotLy8gICBpbnRlcnZhbC5FeHRlbmQoeik7IC8vIGF0IHRpbWUg
dgotLy8gICAuLi4KLS8vICAgaWYgKCFpbnRlcnZhbC5FbXB0eSgpKSB7Ci0vLyAgICAgaW50NjRf
dCBhY3RpdmVfdGltZSA9IGludGVydmFsLkxlbmd0aCgpOyAvLyByZXR1cm5zICh1IC0geCkKLS8v
ICAgfQotY2xhc3MgVGltZUludGVydmFsIHsKLSBwdWJsaWM6Ci0gIFRpbWVJbnRlcnZhbCgpOwot
ICB+VGltZUludGVydmFsKCk7Ci0gIC8vIEV4dGVuZCB0aGUgaW50ZXJ2YWwgd2l0aCB0aGUgY3Vy
cmVudCB0aW1lLgotICB2b2lkIEV4dGVuZCgpOwotICAvLyBFeHRlbmQgdGhlIGludGVydmFsIHdp
dGggYSBnaXZlbiB0aW1lLgotICB2b2lkIEV4dGVuZChpbnQ2NF90IHRpbWUpOwotICAvLyBUYWtl
IHRoZSBjb252ZXggaHVsbCB3aXRoIGFub3RoZXIgaW50ZXJ2YWwuCi0gIHZvaWQgRXh0ZW5kKGNv
bnN0IFRpbWVJbnRlcnZhbCYgb3RoZXJfaW50ZXJ2YWwpOwotICAvLyBUcnVlIGlmZiBFeHRlbmQg
aGFzIG5ldmVyIGJlZW4gY2FsbGVkLgotICBib29sIEVtcHR5KCkgY29uc3Q7Ci0gIC8vIFJldHVy
bnMgdGhlIHRpbWUgYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IHRpY2ssIGluIG1pbGxp
c2Vjb25kcy4KLSAgaW50NjRfdCBMZW5ndGgoKSBjb25zdDsKLQotIHByaXZhdGU6Ci0gIHN0cnVj
dCBJbnRlcnZhbCB7Ci0gICAgSW50ZXJ2YWwoaW50NjRfdCBmaXJzdCwgaW50NjRfdCBsYXN0KTsK
LQotICAgIGludDY0X3QgZmlyc3QsIGxhc3Q7Ci0gIH07Ci0gIGFic2w6Om9wdGlvbmFsPEludGVy
dmFsPiBpbnRlcnZhbF87Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAg
Ly8gQVVESU9fVElNRV9JTlRFUlZBTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGltZV9pbnRlcnZhbF91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3RpbWVfaW50
ZXJ2YWxfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZmY2ZTM2
M2RhMjE2MWRiZGVlNjgwNzE5ODcyZmIyOTY1MjZlOTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXVkaW8vdGltZV9pbnRlcnZhbF91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBA
IC0xLDQ4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJhdWRpby90aW1l
X2ludGVydmFsLmgiCi0jaW5jbHVkZSAiYXBpL3VuaXRzL3RpbWVfZGVsdGEuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9mYWtlY2xvY2suaCIKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVz
cGFjZSB3ZWJydGMgewotCi1URVNUKFRpbWVJbnRlcnZhbFRlc3QsIFRpbWVJbk1zKSB7Ci0gIHJ0
Yzo6U2NvcGVkRmFrZUNsb2NrIGZha2VfY2xvY2s7Ci0gIFRpbWVJbnRlcnZhbCBpbnRlcnZhbDsK
LSAgaW50ZXJ2YWwuRXh0ZW5kKCk7Ci0gIGZha2VfY2xvY2suQWR2YW5jZVRpbWUoVGltZURlbHRh
OjptcygxMDApKTsKLSAgaW50ZXJ2YWwuRXh0ZW5kKCk7Ci0gIEVYUEVDVF9FUShpbnRlcnZhbC5M
ZW5ndGgoKSwgMTAwKTsKLX0KLQotVEVTVChUaW1lSW50ZXJ2YWxUZXN0LCBFbXB0eSkgewotICBU
aW1lSW50ZXJ2YWwgaW50ZXJ2YWw7Ci0gIEVYUEVDVF9UUlVFKGludGVydmFsLkVtcHR5KCkpOwot
ICBpbnRlcnZhbC5FeHRlbmQoKTsKLSAgRVhQRUNUX0ZBTFNFKGludGVydmFsLkVtcHR5KCkpOwot
ICBpbnRlcnZhbC5FeHRlbmQoMjAwKTsKLSAgRVhQRUNUX0ZBTFNFKGludGVydmFsLkVtcHR5KCkp
OwotfQotCi1URVNUKFRpbWVJbnRlcnZhbFRlc3QsIE1vbm90b25lSW5jcmVhc2luZykgewotICBj
b25zdCBzaXplX3QgcG9pbnRfY291bnQgPSA3OwotICBjb25zdCBpbnQ2NF90IGludGVydmFsX3Bv
aW50c1tdID0gezMsIDIsIDUsIDAsIDQsIDEsIDZ9OwotICBjb25zdCBpbnQ2NF90IGludGVydmFs
X2RpZmZlcmVuY2VzW10gPSB7MCwgMSwgMywgNSwgNSwgNSwgNn07Ci0gIFRpbWVJbnRlcnZhbCBp
bnRlcnZhbDsKLSAgRVhQRUNUX1RSVUUoaW50ZXJ2YWwuRW1wdHkoKSk7Ci0gIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcG9pbnRfY291bnQ7ICsraSkgewotICAgIGludGVydmFsLkV4dGVuZChpbnRl
cnZhbF9wb2ludHNbaV0pOwotICAgIEVYUEVDVF9FUShpbnRlcnZhbF9kaWZmZXJlbmNlc1tpXSwg
aW50ZXJ2YWwuTGVuZ3RoKCkpOwotICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlv
L3RyYW5zcG9ydF9mZWVkYmFja19wYWNrZXRfbG9zc190cmFja2VyLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdHJhbnNwb3J0X2ZlZWRiYWNrX3Bh
Y2tldF9sb3NzX3RyYWNrZXIuY2MKaW5kZXggYzdhY2Q3NjZjNDQ4NTkyNWI0ZGE3YTljMDI4MTM3
ZDM1ZGVmOWZjYS4uZjQxNDM5YjQ5NGZjZDM4YjNhM2ExNjc1YjYzMzg2ZmFmYWE0ZGU4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
dHJhbnNwb3J0X2ZlZWRiYWNrX3BhY2tldF9sb3NzX3RyYWNrZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdHJhbnNwb3J0X2ZlZWRiYWNr
X3BhY2tldF9sb3NzX3RyYWNrZXIuY2MKQEAgLTEwLDExICsxMCwxMSBAQAogCiAjaW5jbHVkZSAi
YXVkaW8vdHJhbnNwb3J0X2ZlZWRiYWNrX3BhY2tldF9sb3NzX3RyYWNrZXIuaCIKIAorI2luY2x1
ZGUgPGl0ZXJhdG9yPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKLSNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRfZmVl
ZGJhY2suaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9udW1lcmljcy9tb2Rfb3BzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3V0aWxpdHkvQlVJTEQuZ24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby91dGlsaXR5L0JVSUxELmduCmlu
ZGV4IDc2YzA5YTUxYTM4MGUxYzg0NjU1YWZhMDk2ZTg0ZTEwMTRmN2M3ZWIuLjExYTY1YmRkNDYz
OGFkNWJmYmVmNTZiZjllOTM0MWYyZWNmZjNiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3V0aWxpdHkvQlVJTEQuZ24KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9C
VUlMRC5nbgpAQCAtMjEsNyArMjEsNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2ZyYW1l
X29wZXJhdGlvbnMiKSB7CiAgIF0KIAogICBkZXBzID0gWwotICAgICIuLi8uLjp3ZWJydGNfY29t
bW9uIiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCiAgICAgIi4uLy4u
L3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVk
IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2F1ZGlvL3V0aWxpdHkvYXVkaW9fZnJhbWVfb3BlcmF0aW9ucy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3V0aWxpdHkvYXVkaW9fZnJhbWVfb3Bl
cmF0aW9ucy5jYwppbmRleCBmYjFmM2IwNzcxMWI3OWRkNGJjMDU5YmMxOTIxZGYyOGZlYTI2YmVk
Li4xYTgyMzJiMDJiM2FlNGJlZDliMmRjZjIxZThjMTM2MWViMWNkODAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby91dGlsaXR5L2F1
ZGlvX2ZyYW1lX29wZXJhdGlvbnMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmNjCkBA
IC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3V0aWxp
dHkvYXVkaW9fZnJhbWVfb3BlcmF0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmgKaW5k
ZXggNTk5MzUyMzU2ZjYyZjM5MzQ2ZGY4OWUwMjk3YzZjMjExNTJhNjcxOS4uYzE0NDViNjkxMDk4
ZTM5OTM0YWZmZGFmOWE4MzlkMTQyZWFhZDUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmgKQEAgLTEyLDYgKzEyLDcgQEAK
ICNkZWZpbmUgQVVESU9fVVRJTElUWV9BVURJT19GUkFNRV9PUEVSQVRJT05TX0hfCiAKICNpbmNs
dWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgImFwaS9hdWRp
by9hdWRpb19mcmFtZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9idWlsZF9vdmVycmlkZXMvT1dORVJTIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYnVpbGRfb3ZlcnJpZGVzL09XTkVSUwppbmRleCA1
MjRlMjY3NmZmNTJiZmVmMzg5MzAwMzZhYmZlZjg1YjI2MDcyYmY0Li41NDY1ZWQ4ZTZhODY5ZTFl
NzQyNDc0MDI0ZGY5OTdiNDBhYzUyNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9idWlsZF9vdmVycmlkZXMvT1dORVJTCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2J1aWxkX292ZXJyaWRlcy9PV05F
UlMKQEAgLTEgKzEsMiBAQAorbWJvbmFkZWlAd2VicnRjLm9yZwogcGhvZ2x1bmRAd2VicnRjLm9y
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkKaW5kZXggODFjYjNlNzNhZTIz
MjlmOTJkZTIxOTc4NTUyYTg3NzhhYjgyZjIxNC4uNjY5MDQ0ZGI4MWNiMjE4NWJlMzc0YjBiMTAw
MjcwOTNjNTY4M2MzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pCkBA
IC0xMiw4ICsxMiw4IEBAIGVuYWJsZV9qYXZhX3RlbXBsYXRlcyA9IHRydWUKICMgU29tZSBub24t
Q2hyb21pdW0gYnVpbGRzIGRvbid0IHVzZSBDaHJvbWl1bSdzIHRoaXJkX3BhcnR5L2JpbnV0aWxz
LgogbGludXhfdXNlX2J1bmRsZWRfYmludXRpbHNfb3ZlcnJpZGUgPSB0cnVlCiAKLSMgVmFyaWFi
bGUgdGhhdCBjYW4gYmUgdXNlZCB0byBzdXBwb3J0IG11bHRpcGxlIGJ1aWxkIHNjZW5hcmlvcywg
bGlrZSBoYXZpbmcKLSMgQ2hyb21pdW0gc3BlY2lmaWMgdGFyZ2V0cyBpbiBhIGNsaWVudCBwcm9q
ZWN0J3MgR04gZmlsZSBldGMuCisjIERvbid0IHNldCB0aGlzIHZhcmlhYmxlIHRvIHRydWUgd2hl
biBidWlsZGluZyBzdGFkYWxvbmUgV2ViUlRDLCBpdCBpcworIyBvbmx5IG5lZWRlZCB0byBzdXBw
b3J0IGJvdGggV2ViUlRDIHN0YW5kYWxvbmUgYW5kIENocm9taXVtIGJ1aWxkcy4KIGJ1aWxkX3dp
dGhfY2hyb21pdW0gPSBmYWxzZQogCiAjIFVzZSBvdXIgb3duIHN1cHByZXNzaW9ucyBmaWxlcy4K
QEAgLTQyLDcgKzQyLDcgQEAgaWYgKGhvc3Rfb3MgPT0gIm1hYyIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIFsgdGFyZ2V0X29zIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUi
KQogICBhc3NlcnQoX3Jlc3VsdCAhPSAyLAotICAgICAgICAgIkRvIG5vdCBhbGxvdyBidWlsZGlu
ZyB0YXJnZXRzIHdpdGggdGhlIGRlZmF1bHQiICsKKyAgICAgICAgICJEbyBub3QgYWxsb3cgYnVp
bGRpbmcgdGFyZ2V0cyB3aXRoIHRoZSBkZWZhdWx0ICIgKwogICAgICAgICAgICAgICJoZXJtZXRp
YyB0b29sY2hhaW4gaWYgdGhlIG1pbmltdW0gT1MgdmVyc2lvbiBpcyBub3QgbWV0LiIpCiAgIHVz
ZV9zeXN0ZW1feGNvZGUgPSBfcmVzdWx0ID09IDAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvQlVJTEQuZ24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL0JVSUxELmduCmluZGV4IDYxMWQ5
ZThhZGIxM2M3YjUyOTEwOGZjN2NmZDMxNGIwODYxNmIwZGQuLmY2YmE0ZWM4NDkwODI5ZjQ0YWYz
OGUyNTQ1OGQwYjY5ODg5ZWIwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9CVUlMRC5nbgpAQCAtMzgsMTEgKzM4LDE0IEBA
IHJ0Y19zb3VyY2Vfc2V0KCJjYWxsX2ludGVyZmFjZXMiKSB7CiAgICAgIi4uL2FwaS9hdWRpb19j
b2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCiAgICAgIi4uL2FwaS90cmFuc3BvcnQ6bmV0d29ya19j
b250cm9sIiwKICAgICAiLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6YXVkaW9fZGV2aWNlIiwKKyAg
ICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgIi4uL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKICAgICAiLi4vbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcyIsCiAgICAgIi4uL3J0Y19iYXNl
OmF1ZGlvX2Zvcm1hdF90b19zdHJpbmciLAorICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAg
ICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKKyAgICAiLi4vcnRjX2Jhc2UvbmV0d29yazpzZW50X3BhY2tldCIsCiAgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtMTYx
LDYgKzE2NCw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJiaXRyYXRlX2FsbG9jYXRvciIpIHsKICAgICAi
Yml0cmF0ZV9hbGxvY2F0b3IuaCIsCiAgIF0KICAgZGVwcyA9IFsKKyAgICAiLi4vYXBpOmJpdHJh
dGVfYWxsb2NhdGlvbiIsCisgICAgIi4uL2FwaS91bml0czpkYXRhX3JhdGUiLAorICAgICIuLi9h
cGkvdW5pdHM6dGltZV9kZWx0YSIsCiAgICAgIi4uL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVy
IiwKICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLApAQCAtMTkzLDcgKzE5OSw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY2FsbCIp
IHsKICAgICAiOnJ0cF9zZW5kZXIiLAogICAgICI6c2ltdWxhdGVkX25ldHdvcmsiLAogICAgICI6
dmlkZW9fc3RyZWFtX2FwaSIsCi0gICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi9hcGk6
Y2FsbGZhY3RvcnlfYXBpIiwKICAgICAiLi4vYXBpOnNpbXVsYXRlZF9uZXR3b3JrX2FwaSIsCiAg
ICAgIi4uL2FwaTp0cmFuc3BvcnRfYXBpIiwKQEAgLTIxNyw2ICsyMjIsNyBAQCBydGNfc3RhdGlj
X2xpYnJhcnkoImNhbGwiKSB7CiAgICAgIi4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKICAg
ICAiLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAogICAgICIuLi9ydGNfYmFzZTpzZXF1ZW5jZWRf
dGFza19jaGVja2VyIiwKKyAgICAiLi4vcnRjX2Jhc2UvZXhwZXJpbWVudHM6ZmllbGRfdHJpYWxf
cGFyc2VyIiwKICAgICAiLi4vcnRjX2Jhc2Uvc3luY2hyb25pemF0aW9uOnJ3X2xvY2tfd3JhcHBl
ciIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVyczpm
aWVsZF90cmlhbCIsCkBAIC0yMzYsNyArMjQyLDYgQEAgcnRjX3NvdXJjZV9zZXQoInZpZGVvX3N0
cmVhbV9hcGkiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiOnJ0cF9pbnRlcmZhY2VzIiwKLSAg
ICAiLi4vOndlYnJ0Y19jb21tb24iLAogICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0
aW9uX2FwaSIsCiAgICAgIi4uL2FwaTp0cmFuc3BvcnRfYXBpIiwKICAgICAiLi4vYXBpL3ZpZGVv
OnZpZGVvX2ZyYW1lIiwKQEAgLTI1Nyw2ICsyNjIsOSBAQCBydGNfc291cmNlX3NldCgic2ltdWxh
dGVkX25ldHdvcmsiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiLi4vYXBpOnNpbXVsYXRlZF9u
ZXR3b3JrX2FwaSIsCisgICAgIi4uL2FwaS91bml0czpkYXRhX3JhdGUiLAorICAgICIuLi9hcGkv
dW5pdHM6ZGF0YV9zaXplIiwKKyAgICAiLi4vYXBpL3VuaXRzOnRpbWVfZGVsdGEiLAogICAgICIu
Li9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL21lbW9yeSIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5
cGVzOm9wdGlvbmFsIiwKQEAgLTI4MywxMCArMjkxLDEwIEBAIHJ0Y19zb3VyY2Vfc2V0KCJmYWtl
X25ldHdvcmsiKSB7CiAgICAgIjpjYWxsX2ludGVyZmFjZXMiLAogICAgICI6c2ltdWxhdGVkX25l
dHdvcmsiLAogICAgICI6c2ltdWxhdGVkX3BhY2tldF9yZWNlaXZlciIsCi0gICAgIi4uOndlYnJ0
Y19jb21tb24iLAogICAgICIuLi9hcGk6c2ltdWxhdGVkX25ldHdvcmtfYXBpIiwKICAgICAiLi4v
YXBpOnRyYW5zcG9ydF9hcGkiLAogICAgICIuLi9tb2R1bGVzOm1vZHVsZV9hcGkiLAorICAgICIu
Li9tb2R1bGVzL3V0aWxpdHkiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIs
CiAgICAgIi4uL3J0Y19iYXNlOnNlcXVlbmNlZF90YXNrX2NoZWNrZXIiLAogICAgICIuLi9zeXN0
ZW1fd3JhcHBlcnMiLApAQCAtMzIyLDggKzMzMCw5IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykg
ewogICAgICAgIjpydHBfcmVjZWl2ZXIiLAogICAgICAgIjpydHBfc2VuZGVyIiwKICAgICAgICI6
c2ltdWxhdGVkX25ldHdvcmsiLAotICAgICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAgICAgIi4u
L2FwaTphcnJheV92aWV3IiwKKyAgICAgICIuLi9hcGk6ZmFrZV9tZWRpYV90cmFuc3BvcnQiLAor
ICAgICAgIi4uL2FwaTpmYWtlX21lZGlhX3RyYW5zcG9ydCIsCiAgICAgICAiLi4vYXBpOmxpYmpp
bmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAgICAgIi4uL2FwaTptb2NrX2F1ZGlvX21peGVy
IiwKICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5IiwKQEAgLTM1OSw2ICszNjgsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAg
ICIvL3Rlc3RpbmcvZ21vY2siLAogICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCiAgICAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgICAgXQogICAgIGlmICghYnVpbGRf
d2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewogICAgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBm
cm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgpAQCAt
Mzc4LDEyICszODgsMTMgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOmNhbGxf
aW50ZXJmYWNlcyIsCiAgICAgICAiOnNpbXVsYXRlZF9uZXR3b3JrIiwKICAgICAgICI6dmlkZW9f
c3RyZWFtX2FwaSIsCi0gICAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4vYXBpOnNp
bXVsYXRlZF9uZXR3b3JrX2FwaSIsCiAgICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGlu
X2F1ZGlvX2VuY29kZXJfZmFjdG9yeSIsCisgICAgICAiLi4vYXBpL3ZpZGVvOmJ1aWx0aW5fdmlk
ZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVv
X2JpdHJhdGVfYWxsb2NhdGlvbiIsCiAgICAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19j
b2RlY3NfYXBpIiwKICAgICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKKyAgICAg
ICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfaW1wbF9vdXRwdXQiLAogICAgICAgIi4uL21vZHVs
ZXMvYXVkaW9fY29kaW5nIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZSIsCiAgICAg
ICAiLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6YXVkaW9fZGV2aWNlX2ltcGwiLApAQCAtNDI2LDYg
KzQzNyw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL21vZHVsZXMvcGFj
aW5nIiwKICAgICAgICIuLi9ydGNfYmFzZTpyYXRlX2xpbWl0ZXIiLAogICAgICAgIi4uL3J0Y19i
YXNlOnJ0Y19iYXNlIiwKKyAgICAgICIuLi9ydGNfYmFzZS9uZXR3b3JrOnNlbnRfcGFja2V0IiwK
ICAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgXQogICB9CkBAIC00MzcsNyArNDQ5
LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgXQogICAgIGRlcHMgPSBbCiAgICAg
ICAiOmJpdHJhdGVfYWxsb2NhdG9yIiwKLSAgICAgICIvL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKyAg
ICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgXQogICB9CiAgIHJ0Y19zb3VyY2Vfc2V0
KCJtb2NrX2NhbGxfaW50ZXJmYWNlcyIpIHsKQEAgLTQ0OCwxMSArNDYwLDE0IEBAIGlmIChydGNf
aW5jbHVkZV90ZXN0cykgewogICAgIF0KICAgICBkZXBzID0gWwogICAgICAgIjpjYWxsX2ludGVy
ZmFjZXMiLAotICAgICAgIi8vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgICAgIi4uL3Rlc3Q6dGVz
dF9zdXBwb3J0IiwKICAgICBdCiAgIH0KIAogICBydGNfdGVzdCgiZmFrZV9uZXR3b3JrX3VuaXR0
ZXN0cyIpIHsKKyAgICBzb3VyY2VzID0gWworICAgICAgInRlc3QvZmFrZV9uZXR3b3JrX3BpcGVf
dW5pdHRlc3QuY2MiLAorICAgIF0KICAgICBkZXBzID0gWwogICAgICAgIjpjYWxsX2ludGVyZmFj
ZXMiLAogICAgICAgIjpmYWtlX25ldHdvcmsiLApAQCAtNDYyLDEwICs0NzcsOCBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnMiLAogICAgICAgIi4u
L3Rlc3Q6dGVzdF9jb21tb24iLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIu
Li90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICBdCi0g
ICAgc291cmNlcyA9IFsKLSAgICAgICJ0ZXN0L2Zha2VfbmV0d29ya19waXBlX3VuaXR0ZXN0LmNj
IiwKLSAgICBdCiAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYXVkaW9fcmVjZWl2ZV9zdHJlYW0uaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYXVkaW9fcmVjZWl2ZV9zdHJlYW0u
aAppbmRleCA5Yzg5MGIxY2RhMzc1ODUzMTQxZjg0YmI2ZGQxNGE3OTlhYWJiMWY2Li4zNmNjMDU5
Mzk2NzRiZWYxYjEyNWI1MWE0ZDMxMWVmYmUyODQ0M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2F1ZGlvX3JlY2VpdmVfc3RyZWFt
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9h
dWRpb19yZWNlaXZlX3N0cmVhbS5oCkBAIC0xOSwxMCArMTksMTEgQEAKICNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNv
ZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKKyNpbmNsdWRl
ICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNw
b3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfY29uZmln
LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkK
ICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKQEAgLTYyLDYgKzYzLDcgQEAgY2xhc3MgQXVkaW9SZWNlaXZlU3RyZWFtIHsKICAgICBmbG9h
dCBzZWNvbmRhcnlfZGlzY2FyZGVkX3JhdGUgPSAwLjBmOwogICAgIGZsb2F0IGFjY2VsZXJhdGVf
cmF0ZSA9IDAuMGY7CiAgICAgZmxvYXQgcHJlZW1wdGl2ZV9leHBhbmRfcmF0ZSA9IDAuMGY7Cisg
ICAgdWludDY0X3QgZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMgPSAwOwogICAgIGludDMy
X3QgZGVjb2RpbmdfY2FsbHNfdG9fc2lsZW5jZV9nZW5lcmF0b3IgPSAwOwogICAgIGludDMyX3Qg
ZGVjb2RpbmdfY2FsbHNfdG9fbmV0ZXEgPSAwOwogICAgIGludDMyX3QgZGVjb2Rpbmdfbm9ybWFs
ID0gMDsKQEAgLTcwLDYgKzcyLDcgQEAgY2xhc3MgQXVkaW9SZWNlaXZlU3RyZWFtIHsKICAgICBp
bnQzMl90IGRlY29kaW5nX3BsY19jbmcgPSAwOwogICAgIGludDMyX3QgZGVjb2RpbmdfbXV0ZWRf
b3V0cHV0ID0gMDsKICAgICBpbnQ2NF90IGNhcHR1cmVfc3RhcnRfbnRwX3RpbWVfbXMgPSAwOwor
ICAgIHVpbnQ2NF90IGppdHRlcl9idWZmZXJfZmx1c2hlcyA9IDA7CiAgIH07CiAKICAgc3RydWN0
IENvbmZpZyB7CkBAIC0xMDYsOSArMTA5LDEyIEBAIGNsYXNzIEF1ZGlvUmVjZWl2ZVN0cmVhbSB7
CiAKICAgICBUcmFuc3BvcnQqIHJ0Y3Bfc2VuZF90cmFuc3BvcnQgPSBudWxscHRyOwogCisgICAg
TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCA9IG51bGxwdHI7CisKICAg
ICAvLyBOZXRFcSBzZXR0aW5ncy4KICAgICBzaXplX3Qgaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0
cyA9IDUwOwogICAgIGJvb2wgaml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGUgPSBmYWxzZTsK
KyAgICBpbnQgaml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMgPSAwOwogCiAgICAgLy8gSWRlbnRp
ZmllciBmb3IgYW4gQS9WIHN5bmNocm9uaXphdGlvbiBncm91cC4gRW1wdHkgc3RyaW5nIHRvIGRp
c2FibGUuCiAgICAgLy8gVE9ETyhwYm9zKTogU3luY2hyb25pemUgc3RyZWFtcyBpbiBhIHN5bmMg
Z3JvdXAsIG5vdCBqdXN0IG9uZSB2aWRlbwpAQCAtMTIyLDYgKzEyOCw5IEBAIGNsYXNzIEF1ZGlv
UmVjZWl2ZVN0cmVhbSB7CiAKICAgICBhYnNsOjpvcHRpb25hbDxBdWRpb0NvZGVjUGFpcklkPiBj
b2RlY19wYWlyX2lkOwogCisgICAgLy8gUGVyIFBlZXJDb25uZWN0aW9uIGNyeXB0byBvcHRpb25z
LgorICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uczsKKwogICAgIC8vIEFu
IG9wdGlvbmFsIGN1c3RvbSBmcmFtZSBkZWNyeXB0b3IgdGhhdCBhbGxvd3MgdGhlIGVudGlyZSBm
cmFtZSB0byBiZQogICAgIC8vIGRlY3J5cHRlZCBpbiB3aGF0ZXZlciB3YXkgdGhlIGNhbGxlciBj
aG9zZXMuIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5CiAgICAgLy8gZGVmYXVsdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYXVkaW9f
c2VuZF9zdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL2F1ZGlvX3NlbmRfc3RyZWFtLmNjCmluZGV4IGUyY2YyMGNmODQ0ODBlNmY0N2VjN2Qz
MzQ3MDIwNWMzMGI0NTY1MmMuLjMwM2I0OWNiZmIzMTk2NjcyMTg3ODVkODI0MDY3Yjc3YWE4ZTk1
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvYXVkaW9fc2VuZF9zdHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRpb19zZW5kX3N0cmVhbS5jYwpAQCAtOSw2ICs5LDkg
QEAKICAqLwogCiAjaW5jbHVkZSAiY2FsbC9hdWRpb19zZW5kX3N0cmVhbS5oIgorCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmdzL2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCkBAIC0xOCw4ICsyMSwxMiBAQCBu
YW1lc3BhY2Ugd2VicnRjIHsKIEF1ZGlvU2VuZFN0cmVhbTo6U3RhdHM6OlN0YXRzKCkgPSBkZWZh
dWx0OwogQXVkaW9TZW5kU3RyZWFtOjpTdGF0czo6flN0YXRzKCkgPSBkZWZhdWx0OwogCitBdWRp
b1NlbmRTdHJlYW06OkNvbmZpZzo6Q29uZmlnKFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBt
ZWRpYV90cmFuc3BvcnQpCisgICAgOiBzZW5kX3RyYW5zcG9ydChzZW5kX3RyYW5zcG9ydCksIG1l
ZGlhX3RyYW5zcG9ydChtZWRpYV90cmFuc3BvcnQpIHt9CisKIEF1ZGlvU2VuZFN0cmVhbTo6Q29u
ZmlnOjpDb25maWcoVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCkKLSAgICA6IHNlbmRfdHJhbnNw
b3J0KHNlbmRfdHJhbnNwb3J0KSB7fQorICAgIDogQ29uZmlnKHNlbmRfdHJhbnNwb3J0LCBudWxs
cHRyKSB7fQogCiBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6fkNvbmZpZygpID0gZGVmYXVsdDsK
IApAQCAtMjcsNyArMzQsOSBAQCBzdGQ6OnN0cmluZyBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6
VG9TdHJpbmcoKSBjb25zdCB7CiAgIGNoYXIgYnVmWzEwMjRdOwogICBydGM6OlNpbXBsZVN0cmlu
Z0J1aWxkZXIgc3MoYnVmKTsKICAgc3MgPDwgIntydHA6ICIgPDwgcnRwLlRvU3RyaW5nKCk7Cisg
IHNzIDw8ICIsIHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zOiAiIDw8IHJ0Y3BfcmVwb3J0X2ludGVy
dmFsX21zOwogICBzcyA8PCAiLCBzZW5kX3RyYW5zcG9ydDogIiA8PCAoc2VuZF90cmFuc3BvcnQg
PyAiKFRyYW5zcG9ydCkiIDogIm51bGwiKTsKKyAgc3MgPDwgIiwgbWVkaWFfdHJhbnNwb3J0OiAi
IDw8IChtZWRpYV90cmFuc3BvcnQgPyAiKFRyYW5zcG9ydCkiIDogIm51bGwiKTsKICAgc3MgPDwg
IiwgbWluX2JpdHJhdGVfYnBzOiAiIDw8IG1pbl9iaXRyYXRlX2JwczsKICAgc3MgPDwgIiwgbWF4
X2JpdHJhdGVfYnBzOiAiIDw8IG1heF9iaXRyYXRlX2JwczsKICAgc3MgPDwgIiwgc2VuZF9jb2Rl
Y19zcGVjOiAiCkBAIC00NCw2ICs1Myw3IEBAIHN0ZDo6c3RyaW5nIEF1ZGlvU2VuZFN0cmVhbTo6
Q29uZmlnOjpSdHA6OlRvU3RyaW5nKCkgY29uc3QgewogICBjaGFyIGJ1ZlsxMDI0XTsKICAgcnRj
OjpTaW1wbGVTdHJpbmdCdWlsZGVyIHNzKGJ1Zik7CiAgIHNzIDw8ICJ7c3NyYzogIiA8PCBzc3Jj
OworICBzcyA8PCAiLCBleHRtYXAtYWxsb3ctbWl4ZWQ6ICIgPDwgKGV4dG1hcF9hbGxvd19taXhl
ZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICBzcyA8PCAiLCBleHRlbnNpb25zOiBbIjsKICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgKytpKSB7CiAgICAgc3MgPDwg
ZXh0ZW5zaW9uc1tpXS5Ub1N0cmluZygpOwpAQCAtNTIsNyArNjIsNiBAQCBzdGQ6OnN0cmluZyBB
dWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6UnRwOjpUb1N0cmluZygpIGNvbnN0IHsKICAgICB9CiAg
IH0KICAgc3MgPDwgJ10nOwotICBzcyA8PCAiLCBuYWNrOiAiIDw8IG5hY2suVG9TdHJpbmcoKTsK
ICAgc3MgPDwgIiwgY19uYW1lOiAiIDw8IGNfbmFtZTsKICAgc3MgPDwgJ30nOwogICByZXR1cm4g
c3Muc3RyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jYWxsL2F1ZGlvX3NlbmRfc3RyZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2F1ZGlvX3NlbmRfc3RyZWFtLmgKaW5kZXggNjFlMjUz
MTIyMjllOTAwMTVhZTQ3NmZhZWMyOGZmZTNhMzYxZWQwYS4uYzk5NmRhYjgzZDcwMDA1NTA1MjI5
ZTI0NGFmNDkzZTdlOGQyZjgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRpb19zZW5kX3N0cmVhbS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYXVkaW9fc2VuZF9zdHJlYW0u
aApAQCAtMjEsNyArMjEsOSBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5j
b2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQu
aCIKICNpbmNsdWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRv
L2NyeXB0b29wdGlvbnMuaCIKICNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZW5jcnlwdG9yaW50
ZXJmYWNlLmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgogI2luY2x1ZGUgImNhbGwvcnRwX2NvbmZpZy5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nl
c3Npbmdfc3RhdGlzdGljcy5oIgpAQCAtNTcsMTAgKzU5LDEzIEBAIGNsYXNzIEF1ZGlvU2VuZFN0
cmVhbSB7CiAKICAgICBBTkFTdGF0cyBhbmFfc3RhdGlzdGljczsKICAgICBBdWRpb1Byb2Nlc3Np
bmdTdGF0cyBhcG1fc3RhdGlzdGljczsKKworICAgIGludDY0X3QgdGFyZ2V0X2JpdHJhdGVfYnBz
ID0gMDsKICAgfTsKIAogICBzdHJ1Y3QgQ29uZmlnIHsKICAgICBDb25maWcoKSA9IGRlbGV0ZTsK
KyAgICBDb25maWcoVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwgTWVkaWFUcmFuc3BvcnRJbnRl
cmZhY2UqIG1lZGlhX3RyYW5zcG9ydCk7CiAgICAgZXhwbGljaXQgQ29uZmlnKFRyYW5zcG9ydCog
c2VuZF90cmFuc3BvcnQpOwogICAgIH5Db25maWcoKTsKICAgICBzdGQ6OnN0cmluZyBUb1N0cmlu
ZygpIGNvbnN0OwpAQCAtNzgsMjAgKzgzLDI1IEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSB7CiAg
ICAgICAvLyBpbmNsdWRlZCBpbiB0aGUgbGlzdCBvZiBleHRlbnNpb25zLgogICAgICAgc3RkOjpz
dHJpbmcgbWlkOwogCisgICAgICAvLyBDb3JyZXNwb25kcyB0byB0aGUgU0RQIGF0dHJpYnV0ZSBl
eHRtYXAtYWxsb3ctbWl4ZWQuCisgICAgICBib29sIGV4dG1hcF9hbGxvd19taXhlZCA9IGZhbHNl
OworCiAgICAgICAvLyBSVFAgaGVhZGVyIGV4dGVuc2lvbnMgdXNlZCBmb3IgdGhlIHNlbnQgc3Ry
ZWFtLgogICAgICAgc3RkOjp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiBleHRlbnNpb25zOwogCi0gICAg
ICAvLyBTZWUgTmFja0NvbmZpZyBmb3IgZGVzY3JpcHRpb24uCi0gICAgICBOYWNrQ29uZmlnIG5h
Y2s7Ci0KICAgICAgIC8vIFJUQ1AgQ05BTUUsIHNlZSBSRkMgMzU1MC4KICAgICAgIHN0ZDo6c3Ry
aW5nIGNfbmFtZTsKICAgICB9IHJ0cDsKIAorICAgIC8vIFRpbWUgaW50ZXJ2YWwgYmV0d2VlbiBS
VENQIHJlcG9ydCBmb3IgYXVkaW8KKyAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPSA1
MDAwOworCiAgICAgLy8gVHJhbnNwb3J0IGZvciBvdXRnb2luZyBwYWNrZXRzLiBUaGUgdHJhbnNw
b3J0IGlzIGV4cGVjdGVkIHRvIGV4aXN0IGZvcgogICAgIC8vIHRoZSBlbnRpcmUgbGlmZSBvZiB0
aGUgQXVkaW9TZW5kU3RyZWFtIGFuZCBpcyBvd25lZCBieSB0aGUgQVBJIGNsaWVudC4KICAgICBU
cmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0ID0gbnVsbHB0cjsKIAorICAgIE1lZGlhVHJhbnNwb3J0
SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQgPSBudWxscHRyOworCiAgICAgLy8gQml0cmF0ZSBs
aW1pdHMgdXNlZCBmb3IgdmFyaWFibGUgYXVkaW8gYml0cmF0ZSBzdHJlYW1zLiBTZXQgYm90aCB0
byAtMSB0bwogICAgIC8vIGRpc2FibGUgYXVkaW8gYml0cmF0ZSBhZGFwdGF0aW9uLgogICAgIC8v
IE5vdGU6IFRoaXMgaXMgc3RpbGwgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgYW5kIG5vdCByZWFk
eSBmb3IgcmVhbCB1c2FnZS4KQEAgLTk5LDYgKzEwOSw3IEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVh
bSB7CiAgICAgaW50IG1heF9iaXRyYXRlX2JwcyA9IC0xOwogCiAgICAgZG91YmxlIGJpdHJhdGVf
cHJpb3JpdHkgPSAxLjA7CisgICAgYm9vbCBoYXNfZHNjcCA9IGZhbHNlOwogCiAgICAgLy8gRGVm
aW5lcyB3aGV0aGVyIHRvIHR1cm4gb24gYXVkaW8gbmV0d29yayBhZGFwdG9yLCBhbmQgZGVmaW5l
cyBpdHMgY29uZmlnCiAgICAgLy8gc3RyaW5nLgpAQCAtMTMwLDYgKzE0MSw5IEBAIGNsYXNzIEF1
ZGlvU2VuZFN0cmVhbSB7CiAgICAgLy8gVHJhY2sgSUQgYXMgc3BlY2lmaWVkIGR1cmluZyB0cmFj
ayBjcmVhdGlvbi4KICAgICBzdGQ6OnN0cmluZyB0cmFja19pZDsKIAorICAgIC8vIFBlciBQZWVy
Q29ubmVjdGlvbiBjcnlwdG8gb3B0aW9ucy4KKyAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5
cHRvX29wdGlvbnM7CisKICAgICAvLyBBbiBvcHRpb25hbCBjdXN0b20gZnJhbWUgZW5jcnlwdG9y
IHRoYXQgYWxsb3dzIHRoZSBlbnRpcmUgZnJhbWUgdG8gYmUKICAgICAvLyBlbmNyeXB0b3IgaW4g
d2hhdGV2ZXIgd2F5IHRoZSBjYWxsZXIgY2hvc2VzLiBUaGlzIGlzIG5vdCByZXF1aXJlZCBieQog
ICAgIC8vIGRlZmF1bHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfYWxsb2NhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2FsbG9jYXRvci5jYwppbmRl
eCBhY2IxOWFlNmZiMmJmZjBiY2RhMDI1ZjM4ZTk1NjcwZmNhZjBlMjhhLi42NjA5ODFjMzBlMzk5
ZWRlYjA2OWExNTE2NDBjNmQzNTc4OGVkYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfYWxsb2NhdG9yLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYml0cmF0ZV9h
bGxvY2F0b3IuY2MKQEAgLTE2LDYgKzE2LDggQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFwaS91bml0cy9kYXRhX3JhdGUuaCIKKyNpbmNsdWRl
ICJhcGkvdW5pdHMvdGltZV9kZWx0YS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYml0cmF0ZV9jb250
cm9sbGVyL2luY2x1ZGUvYml0cmF0ZV9jb250cm9sbGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgpAQCAtNTAsMTAgKzUyLDEy
IEBAIGRvdWJsZSBNZWRpYVJhdGlvKHVpbnQzMl90IGFsbG9jYXRlZF9iaXRyYXRlLCB1aW50MzJf
dCBwcm90ZWN0aW9uX2JpdHJhdGUpIHsKIAogQml0cmF0ZUFsbG9jYXRvcjo6Qml0cmF0ZUFsbG9j
YXRvcihMaW1pdE9ic2VydmVyKiBsaW1pdF9vYnNlcnZlcikKICAgICA6IGxpbWl0X29ic2VydmVy
XyhsaW1pdF9vYnNlcnZlciksCi0gICAgICBsYXN0X2JpdHJhdGVfYnBzXygwKSwKKyAgICAgIGxh
c3RfdGFyZ2V0X2Jwc18oMCksCisgICAgICBsYXN0X2xpbmtfY2FwYWNpdHlfYnBzXygwKSwKICAg
ICAgIGxhc3Rfbm9uX3plcm9fYml0cmF0ZV9icHNfKGtEZWZhdWx0Qml0cmF0ZUJwcyksCiAgICAg
ICBsYXN0X2ZyYWN0aW9uX2xvc3NfKDApLAogICAgICAgbGFzdF9ydHRfKDApLAorICAgICAgbGFz
dF9id2VfcGVyaW9kX21zXygxMDAwKSwKICAgICAgIG51bV9wYXVzZV9ldmVudHNfKDApLAogICAg
ICAgY2xvY2tfKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgbGFzdF9id2VfbG9n
X3RpbWVfKDApLApAQCAtODgsMTEgKzkyLDEzIEBAIHVpbnQ4X3QgQml0cmF0ZUFsbG9jYXRvcjo6
R2V0VHJhbnNtaXNzaW9uTWF4Qml0cmF0ZU11bHRpcGxpZXIoKSB7CiB9CiAKIHZvaWQgQml0cmF0
ZUFsbG9jYXRvcjo6T25OZXR3b3JrQ2hhbmdlZCh1aW50MzJfdCB0YXJnZXRfYml0cmF0ZV9icHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGlua19j
YXBhY2l0eV9icHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCBmcmFjdGlvbl9sb3NzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgcnR0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgYndlX3BlcmlvZF9tcykgewogICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFM
TFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0gIGxhc3RfYml0cmF0ZV9icHNfID0gdGFyZ2V0X2Jp
dHJhdGVfYnBzOworICBsYXN0X3RhcmdldF9icHNfID0gdGFyZ2V0X2JpdHJhdGVfYnBzOworICBs
YXN0X2xpbmtfY2FwYWNpdHlfYnBzXyA9IGxpbmtfY2FwYWNpdHlfYnBzOwogICBsYXN0X25vbl96
ZXJvX2JpdHJhdGVfYnBzXyA9CiAgICAgICB0YXJnZXRfYml0cmF0ZV9icHMgPiAwID8gdGFyZ2V0
X2JpdHJhdGVfYnBzIDogbGFzdF9ub25femVyb19iaXRyYXRlX2Jwc187CiAgIGxhc3RfZnJhY3Rp
b25fbG9zc18gPSBmcmFjdGlvbl9sb3NzOwpAQCAtMTA3LDExICsxMTMsMTggQEAgdm9pZCBCaXRy
YXRlQWxsb2NhdG9yOjpPbk5ldHdvcmtDaGFuZ2VkKHVpbnQzMl90IHRhcmdldF9iaXRyYXRlX2Jw
cywKICAgfQogCiAgIE9ic2VydmVyQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0gQWxsb2NhdGVCaXRy
YXRlcyh0YXJnZXRfYml0cmF0ZV9icHMpOworICBPYnNlcnZlckFsbG9jYXRpb24gYmFuZHdpZHRo
X2FsbG9jYXRpb24gPSBBbGxvY2F0ZUJpdHJhdGVzKGxpbmtfY2FwYWNpdHlfYnBzKTsKIAogICBm
b3IgKGF1dG8mIGNvbmZpZyA6IGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18pIHsKICAgICB1aW50
MzJfdCBhbGxvY2F0ZWRfYml0cmF0ZSA9IGFsbG9jYXRpb25bY29uZmlnLm9ic2VydmVyXTsKLSAg
ICB1aW50MzJfdCBwcm90ZWN0aW9uX2JpdHJhdGUgPSBjb25maWcub2JzZXJ2ZXItPk9uQml0cmF0
ZVVwZGF0ZWQoCi0gICAgICAgIGFsbG9jYXRlZF9iaXRyYXRlLCBsYXN0X2ZyYWN0aW9uX2xvc3Nf
LCBsYXN0X3J0dF8sIGxhc3RfYndlX3BlcmlvZF9tc18pOworICAgIHVpbnQzMl90IGFsbG9jYXRl
ZF9iYW5kd2lkdGggPSBiYW5kd2lkdGhfYWxsb2NhdGlvbltjb25maWcub2JzZXJ2ZXJdOworICAg
IEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZTsKKyAgICB1cGRhdGUudGFyZ2V0X2JpdHJh
dGUgPSBEYXRhUmF0ZTo6YnBzKGFsbG9jYXRlZF9iaXRyYXRlKTsKKyAgICB1cGRhdGUubGlua19j
YXBhY2l0eSA9IERhdGFSYXRlOjpicHMoYWxsb2NhdGVkX2JhbmR3aWR0aCk7CisgICAgdXBkYXRl
LnBhY2tldF9sb3NzX3JhdGlvID0gbGFzdF9mcmFjdGlvbl9sb3NzXyAvIDI1Ni4wOworICAgIHVw
ZGF0ZS5yb3VuZF90cmlwX3RpbWUgPSBUaW1lRGVsdGE6Om1zKGxhc3RfcnR0Xyk7CisgICAgdXBk
YXRlLmJ3ZV9wZXJpb2QgPSBUaW1lRGVsdGE6Om1zKGxhc3RfYndlX3BlcmlvZF9tc18pOworICAg
IHVpbnQzMl90IHByb3RlY3Rpb25fYml0cmF0ZSA9IGNvbmZpZy5vYnNlcnZlci0+T25CaXRyYXRl
VXBkYXRlZCh1cGRhdGUpOwogCiAgICAgaWYgKGFsbG9jYXRlZF9iaXRyYXRlID09IDAgJiYgY29u
ZmlnLmFsbG9jYXRlZF9iaXRyYXRlX2JwcyA+IDApIHsKICAgICAgIGlmICh0YXJnZXRfYml0cmF0
ZV9icHMgPiAwKQpAQCAtMTYzLDE1ICsxNzYsMjIgQEAgdm9pZCBCaXRyYXRlQWxsb2NhdG9yOjpB
ZGRPYnNlcnZlcihCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVyLAogICAgICAgICBj
b25maWcuYml0cmF0ZV9wcmlvcml0eSwgY29uZmlnLmhhc19wYWNrZXRfZmVlZGJhY2spKTsKICAg
fQogCi0gIE9ic2VydmVyQWxsb2NhdGlvbiBhbGxvY2F0aW9uOwotICBpZiAobGFzdF9iaXRyYXRl
X2Jwc18gPiAwKSB7CisgIGlmIChsYXN0X3RhcmdldF9icHNfID4gMCkgewogICAgIC8vIENhbGN1
bGF0ZSBhIG5ldyBhbGxvY2F0aW9uIGFuZCB1cGRhdGUgYWxsIG9ic2VydmVycy4KLSAgICBhbGxv
Y2F0aW9uID0gQWxsb2NhdGVCaXRyYXRlcyhsYXN0X2JpdHJhdGVfYnBzXyk7CisKKyAgICBPYnNl
cnZlckFsbG9jYXRpb24gYWxsb2NhdGlvbiA9IEFsbG9jYXRlQml0cmF0ZXMobGFzdF90YXJnZXRf
YnBzXyk7CisgICAgT2JzZXJ2ZXJBbGxvY2F0aW9uIGJhbmR3aWR0aF9hbGxvY2F0aW9uID0KKyAg
ICAgICAgQWxsb2NhdGVCaXRyYXRlcyhsYXN0X2xpbmtfY2FwYWNpdHlfYnBzXyk7CiAgICAgZm9y
IChhdXRvJiBjb25maWcgOiBiaXRyYXRlX29ic2VydmVyX2NvbmZpZ3NfKSB7CiAgICAgICB1aW50
MzJfdCBhbGxvY2F0ZWRfYml0cmF0ZSA9IGFsbG9jYXRpb25bY29uZmlnLm9ic2VydmVyXTsKLSAg
ICAgIHVpbnQzMl90IHByb3RlY3Rpb25fYml0cmF0ZSA9IGNvbmZpZy5vYnNlcnZlci0+T25CaXRy
YXRlVXBkYXRlZCgKLSAgICAgICAgICBhbGxvY2F0ZWRfYml0cmF0ZSwgbGFzdF9mcmFjdGlvbl9s
b3NzXywgbGFzdF9ydHRfLAotICAgICAgICAgIGxhc3RfYndlX3BlcmlvZF9tc18pOworICAgICAg
dWludDMyX3QgYmFuZHdpZHRoID0gYmFuZHdpZHRoX2FsbG9jYXRpb25bY29uZmlnLm9ic2VydmVy
XTsKKyAgICAgIEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZTsKKyAgICAgIHVwZGF0ZS50
YXJnZXRfYml0cmF0ZSA9IERhdGFSYXRlOjpicHMoYWxsb2NhdGVkX2JpdHJhdGUpOworICAgICAg
dXBkYXRlLmxpbmtfY2FwYWNpdHkgPSBEYXRhUmF0ZTo6YnBzKGJhbmR3aWR0aCk7CisgICAgICB1
cGRhdGUucGFja2V0X2xvc3NfcmF0aW8gPSBsYXN0X2ZyYWN0aW9uX2xvc3NfIC8gMjU2LjA7Cisg
ICAgICB1cGRhdGUucm91bmRfdHJpcF90aW1lID0gVGltZURlbHRhOjptcyhsYXN0X3J0dF8pOwor
ICAgICAgdXBkYXRlLmJ3ZV9wZXJpb2QgPSBUaW1lRGVsdGE6Om1zKGxhc3RfYndlX3BlcmlvZF9t
c18pOworICAgICAgdWludDMyX3QgcHJvdGVjdGlvbl9iaXRyYXRlID0gY29uZmlnLm9ic2VydmVy
LT5PbkJpdHJhdGVVcGRhdGVkKHVwZGF0ZSk7CiAgICAgICBjb25maWcuYWxsb2NhdGVkX2JpdHJh
dGVfYnBzID0gYWxsb2NhdGVkX2JpdHJhdGU7CiAgICAgICBpZiAoYWxsb2NhdGVkX2JpdHJhdGUg
PiAwKQogICAgICAgICBjb25maWcubWVkaWFfcmF0aW8gPSBNZWRpYVJhdGlvKGFsbG9jYXRlZF9i
aXRyYXRlLCBwcm90ZWN0aW9uX2JpdHJhdGUpOwpAQCAtMTgwLDkgKzIwMCwxNCBAQCB2b2lkIEJp
dHJhdGVBbGxvY2F0b3I6OkFkZE9ic2VydmVyKEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2Jz
ZXJ2ZXIsCiAgICAgLy8gQ3VycmVudGx5LCBhbiBlbmNvZGVyIGlzIG5vdCBhbGxvd2VkIHRvIHBy
b2R1Y2UgZnJhbWVzLgogICAgIC8vIEJ1dCB3ZSBzdGlsbCBoYXZlIHRvIHJldHVybiB0aGUgaW5p
dGlhbCBjb25maWcgYml0cmF0ZSArIGxldCB0aGUKICAgICAvLyBvYnNlcnZlciBrbm93IHRoYXQg
aXQgY2FuIG5vdCBwcm9kdWNlIGZyYW1lcy4KLSAgICBhbGxvY2F0aW9uID0gQWxsb2NhdGVCaXRy
YXRlcyhsYXN0X25vbl96ZXJvX2JpdHJhdGVfYnBzXyk7Ci0gICAgb2JzZXJ2ZXItPk9uQml0cmF0
ZVVwZGF0ZWQoMCwgbGFzdF9mcmFjdGlvbl9sb3NzXywgbGFzdF9ydHRfLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhc3RfYndlX3BlcmlvZF9tc18pOworCisgICAgQml0cmF0ZUFs
bG9jYXRpb25VcGRhdGUgdXBkYXRlOworICAgIHVwZGF0ZS50YXJnZXRfYml0cmF0ZSA9IERhdGFS
YXRlOjpaZXJvKCk7CisgICAgdXBkYXRlLmxpbmtfY2FwYWNpdHkgPSBEYXRhUmF0ZTo6WmVybygp
OworICAgIHVwZGF0ZS5wYWNrZXRfbG9zc19yYXRpbyA9IGxhc3RfZnJhY3Rpb25fbG9zc18gLyAy
NTYuMDsKKyAgICB1cGRhdGUucm91bmRfdHJpcF90aW1lID0gVGltZURlbHRhOjptcyhsYXN0X3J0
dF8pOworICAgIHVwZGF0ZS5id2VfcGVyaW9kID0gVGltZURlbHRhOjptcyhsYXN0X2J3ZV9wZXJp
b2RfbXNfKTsKKyAgICBvYnNlcnZlci0+T25CaXRyYXRlVXBkYXRlZCh1cGRhdGUpOwogICB9CiAg
IFVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKIH0KQEAgLTI0OCw3ICsyNzMsOCBAQCB2b2lkIEJp
dHJhdGVBbGxvY2F0b3I6OlJlbW92ZU9ic2VydmVyKEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciog
b2JzZXJ2ZXIpIHsKICAgVXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwogfQogCi1pbnQgQml0cmF0
ZUFsbG9jYXRvcjo6R2V0U3RhcnRCaXRyYXRlKEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2Jz
ZXJ2ZXIpIHsKK2ludCBCaXRyYXRlQWxsb2NhdG9yOjpHZXRTdGFydEJpdHJhdGUoCisgICAgQml0
cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikgY29uc3QgewogICBSVENfRENIRUNLX0NB
TExFRF9TRVFVRU5USUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7CiAgIGNvbnN0IGF1dG8mIGl0
ID0gRmluZE9ic2VydmVyQ29uZmlnKG9ic2VydmVyKTsKICAgaWYgKGl0ID09IGJpdHJhdGVfb2Jz
ZXJ2ZXJfY29uZmlnc18uZW5kKCkpIHsKQEAgLTI3Miw2ICsyOTgsMTcgQEAgdm9pZCBCaXRyYXRl
QWxsb2NhdG9yOjpTZXRCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5KAogICBiaXRyYXRlX2FsbG9j
YXRpb25fc3RyYXRlZ3lfID0gc3RkOjptb3ZlKGJpdHJhdGVfYWxsb2NhdGlvbl9zdHJhdGVneSk7
CiB9CiAKK0JpdHJhdGVBbGxvY2F0b3I6Ok9ic2VydmVyQ29uZmlnczo6Y29uc3RfaXRlcmF0b3IK
K0JpdHJhdGVBbGxvY2F0b3I6OkZpbmRPYnNlcnZlckNvbmZpZygKKyAgICBjb25zdCBCaXRyYXRl
QWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVyKSBjb25zdCB7CisgIGZvciAoYXV0byBpdCA9IGJp
dHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18uYmVnaW4oKTsKKyAgICAgICBpdCAhPSBiaXRyYXRlX29i
c2VydmVyX2NvbmZpZ3NfLmVuZCgpOyArK2l0KSB7CisgICAgaWYgKGl0LT5vYnNlcnZlciA9PSBv
YnNlcnZlcikKKyAgICAgIHJldHVybiBpdDsKKyAgfQorICByZXR1cm4gYml0cmF0ZV9vYnNlcnZl
cl9jb25maWdzXy5lbmQoKTsKK30KKwogQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJDb25maWdz
OjppdGVyYXRvcgogQml0cmF0ZUFsbG9jYXRvcjo6RmluZE9ic2VydmVyQ29uZmlnKGNvbnN0IEJp
dHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2JzZXJ2ZXIpIHsKICAgZm9yIChhdXRvIGl0ID0gYml0
cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5iZWdpbigpOwpAQCAtMjgzLDE5ICszMjAsMTkgQEAgQml0
cmF0ZUFsbG9jYXRvcjo6RmluZE9ic2VydmVyQ29uZmlnKGNvbnN0IEJpdHJhdGVBbGxvY2F0b3JP
YnNlcnZlciogb2JzZXJ2ZXIpIHsKIH0KIAogQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJBbGxv
Y2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6OkFsbG9jYXRlQml0cmF0ZXMoCi0gICAgdWludDMyX3Qg
Yml0cmF0ZSkgeworICAgIHVpbnQzMl90IGJpdHJhdGUpIGNvbnN0IHsKICAgaWYgKGJpdHJhdGVf
b2JzZXJ2ZXJfY29uZmlnc18uZW1wdHkoKSkKICAgICByZXR1cm4gT2JzZXJ2ZXJBbGxvY2F0aW9u
KCk7CiAKICAgaWYgKGJpdHJhdGVfYWxsb2NhdGlvbl9zdHJhdGVneV8gIT0gbnVsbHB0cikgewot
ICAgIHN0ZDo6dmVjdG9yPGNvbnN0IHJ0Yzo6Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJh
Y2tDb25maWcqPgotICAgICAgICB0cmFja19jb25maWdzKGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmln
c18uc2l6ZSgpKTsKLSAgICBpbnQgaSA9IDA7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjIDogYml0
cmF0ZV9vYnNlcnZlcl9jb25maWdzXykgewotICAgICAgdHJhY2tfY29uZmlnc1tpKytdID0gJmM7
Ci0gICAgfQorICAgIC8vIE5vdGU6IFRoaXMgaW50ZW50aW9uYWxseSBjYXVzZXMgc2xpY2luZywg
d2Ugb25seSBjb3B5IHRoZSBmaWVsZHMgaW4KKyAgICAvLyBPYnNlcnZlckNvbmZpZyB0aGF0IGFy
ZSBpbmhlcml0ZWQgZnJvbSBUcmFja0NvbmZpZy4KKyAgICBzdGQ6OnZlY3RvcjxydGM6OkJpdHJh
dGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRyYWNrQ29uZmlnPiB0cmFja19jb25maWdzKAorICAgICAg
ICBiaXRyYXRlX29ic2VydmVyX2NvbmZpZ3NfLmJlZ2luKCksIGJpdHJhdGVfb2JzZXJ2ZXJfY29u
Zmlnc18uZW5kKCkpOworCiAgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHRyYWNrX2FsbG9jYXRp
b25zID0KLSAgICAgICAgYml0cmF0ZV9hbGxvY2F0aW9uX3N0cmF0ZWd5Xy0+QWxsb2NhdGVCaXRy
YXRlcyhiaXRyYXRlLCB0cmFja19jb25maWdzKTsKKyAgICAgICAgYml0cmF0ZV9hbGxvY2F0aW9u
X3N0cmF0ZWd5Xy0+QWxsb2NhdGVCaXRyYXRlcygKKyAgICAgICAgICAgIGJpdHJhdGUsIHN0ZDo6
bW92ZSh0cmFja19jb25maWdzKSk7CiAgICAgLy8gVGhlIHN0cmF0ZWd5IHNob3VsZCByZXR1cm4g
YWxsb2NhdGlvbiBmb3IgYWxsIHRyYWNrcy4KICAgICBSVENfQ0hFQ0sodHJhY2tfYWxsb2NhdGlv
bnMuc2l6ZSgpID09IGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18uc2l6ZSgpKTsKICAgICBPYnNl
cnZlckFsbG9jYXRpb24gYWxsb2NhdGlvbjsKQEAgLTMzMSw3ICszNjgsOCBAQCBCaXRyYXRlQWxs
b2NhdG9yOjpPYnNlcnZlckFsbG9jYXRpb24gQml0cmF0ZUFsbG9jYXRvcjo6QWxsb2NhdGVCaXRy
YXRlcygKICAgcmV0dXJuIE1heFJhdGVBbGxvY2F0aW9uKGJpdHJhdGUsIHN1bV9tYXhfYml0cmF0
ZXMpOwogfQogCi1CaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckFsbG9jYXRpb24gQml0cmF0ZUFs
bG9jYXRvcjo6WmVyb1JhdGVBbGxvY2F0aW9uKCkgeworQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2
ZXJBbGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6Olplcm9SYXRlQWxsb2NhdGlvbigpCisgICAg
Y29uc3QgewogICBPYnNlcnZlckFsbG9jYXRpb24gYWxsb2NhdGlvbjsKICAgZm9yIChjb25zdCBh
dXRvJiBvYnNlcnZlcl9jb25maWcgOiBiaXRyYXRlX29ic2VydmVyX2NvbmZpZ3NfKQogICAgIGFs
bG9jYXRpb25bb2JzZXJ2ZXJfY29uZmlnLm9ic2VydmVyXSA9IDA7CkBAIC0zMzksNyArMzc3LDcg
QEAgQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJBbGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6
Olplcm9SYXRlQWxsb2NhdGlvbigpIHsKIH0KIAogQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJB
bGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6Okxvd1JhdGVBbGxvY2F0aW9uKAotICAgIHVpbnQz
Ml90IGJpdHJhdGUpIHsKKyAgICB1aW50MzJfdCBiaXRyYXRlKSBjb25zdCB7CiAgIE9ic2VydmVy
QWxsb2NhdGlvbiBhbGxvY2F0aW9uOwogICAvLyBTdGFydCBieSBhbGxvY2F0aW5nIGJpdHJhdGUg
dG8gb2JzZXJ2ZXJzIGVuZm9yY2luZyBhIG1pbiBiaXRyYXRlLCBoZW5jZQogICAvLyByZW1haW5p
bmdfYml0cmF0ZSBtaWdodCB0dXJuIG5lZ2F0aXZlLgpAQCAtNDAwLDcgKzQzOCw3IEBAIEJpdHJh
dGVBbGxvY2F0b3I6Ok9ic2VydmVyQWxsb2NhdGlvbiBCaXRyYXRlQWxsb2NhdG9yOjpMb3dSYXRl
QWxsb2NhdGlvbigKIC8vIG1pbl9iaXRyYXRlX2JwcyB2YWx1ZXMsIHVudGlsIG9uZSBvZiB0aGUg
b2JzZXJ2ZXJzIGhpdHMgaXRzIG1heF9iaXRyYXRlX2Jwcy4KIEJpdHJhdGVBbGxvY2F0b3I6Ok9i
c2VydmVyQWxsb2NhdGlvbiBCaXRyYXRlQWxsb2NhdG9yOjpOb3JtYWxSYXRlQWxsb2NhdGlvbigK
ICAgICB1aW50MzJfdCBiaXRyYXRlLAotICAgIHVpbnQzMl90IHN1bV9taW5fYml0cmF0ZXMpIHsK
KyAgICB1aW50MzJfdCBzdW1fbWluX2JpdHJhdGVzKSBjb25zdCB7CiAgIE9ic2VydmVyQWxsb2Nh
dGlvbiBhbGxvY2F0aW9uOwogICBPYnNlcnZlckFsbG9jYXRpb24gb2JzZXJ2ZXJzX2NhcGFjaXRp
ZXM7CiAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2ZXJfY29uZmlnIDogYml0cmF0ZV9vYnNlcnZl
cl9jb25maWdzXykgewpAQCAtNDIwLDcgKzQ1OCw3IEBAIEJpdHJhdGVBbGxvY2F0b3I6Ok9ic2Vy
dmVyQWxsb2NhdGlvbiBCaXRyYXRlQWxsb2NhdG9yOjpOb3JtYWxSYXRlQWxsb2NhdGlvbigKIAog
Qml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJBbGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6Ok1h
eFJhdGVBbGxvY2F0aW9uKAogICAgIHVpbnQzMl90IGJpdHJhdGUsCi0gICAgdWludDMyX3Qgc3Vt
X21heF9iaXRyYXRlcykgeworICAgIHVpbnQzMl90IHN1bV9tYXhfYml0cmF0ZXMpIGNvbnN0IHsK
ICAgT2JzZXJ2ZXJBbGxvY2F0aW9uIGFsbG9jYXRpb247CiAKICAgZm9yIChjb25zdCBhdXRvJiBv
YnNlcnZlcl9jb25maWcgOiBiaXRyYXRlX29ic2VydmVyX2NvbmZpZ3NfKSB7CkBAIC00NTcsMTAg
KzQ5NSwxMSBAQCB1aW50MzJfdCBCaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckNvbmZpZzo6TWlu
Qml0cmF0ZVdpdGhIeXN0ZXJlc2lzKCkgY29uc3QgewogICByZXR1cm4gbWluX2JpdHJhdGU7CiB9
CiAKLXZvaWQgQml0cmF0ZUFsbG9jYXRvcjo6RGlzdHJpYnV0ZUJpdHJhdGVFdmVubHkodWludDMy
X3QgYml0cmF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpbmNsdWRlX3plcm9fYWxsb2NhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhfbXVsdGlwbGllciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZXJBbGxvY2F0aW9uKiBh
bGxvY2F0aW9uKSB7Cit2b2lkIEJpdHJhdGVBbGxvY2F0b3I6OkRpc3RyaWJ1dGVCaXRyYXRlRXZl
bmx5KAorICAgIHVpbnQzMl90IGJpdHJhdGUsCisgICAgYm9vbCBpbmNsdWRlX3plcm9fYWxsb2Nh
dGlvbnMsCisgICAgaW50IG1heF9tdWx0aXBsaWVyLAorICAgIE9ic2VydmVyQWxsb2NhdGlvbiog
YWxsb2NhdGlvbikgY29uc3QgewogICBSVENfRENIRUNLX0VRKGFsbG9jYXRpb24tPnNpemUoKSwg
Yml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5zaXplKCkpOwogCiAgIE9ic2VydmVyU29ydGluZ01h
cCBsaXN0X21heF9iaXRyYXRlczsKQEAgLTQ5MSw4ICs1MzAsOSBAQCB2b2lkIEJpdHJhdGVBbGxv
Y2F0b3I6OkRpc3RyaWJ1dGVCaXRyYXRlRXZlbmx5KHVpbnQzMl90IGJpdHJhdGUsCiAgIH0KIH0K
IAotYm9vbCBCaXRyYXRlQWxsb2NhdG9yOjpFbm91Z2hCaXRyYXRlRm9yQWxsT2JzZXJ2ZXJzKHVp
bnQzMl90IGJpdHJhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3Qgc3VtX21pbl9iaXRyYXRlcykgeworYm9vbCBCaXRyYXRlQWxs
b2NhdG9yOjpFbm91Z2hCaXRyYXRlRm9yQWxsT2JzZXJ2ZXJzKAorICAgIHVpbnQzMl90IGJpdHJh
dGUsCisgICAgdWludDMyX3Qgc3VtX21pbl9iaXRyYXRlcykgY29uc3QgewogICBpZiAoYml0cmF0
ZSA8IHN1bV9taW5fYml0cmF0ZXMpCiAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MTEsNyArNTUx
LDcgQEAgYm9vbCBCaXRyYXRlQWxsb2NhdG9yOjpFbm91Z2hCaXRyYXRlRm9yQWxsT2JzZXJ2ZXJz
KHVpbnQzMl90IGJpdHJhdGUsCiB2b2lkIEJpdHJhdGVBbGxvY2F0b3I6OkRpc3RyaWJ1dGVCaXRy
YXRlUmVsYXRpdmVseSgKICAgICB1aW50MzJfdCByZW1haW5pbmdfYml0cmF0ZSwKICAgICBjb25z
dCBPYnNlcnZlckFsbG9jYXRpb24mIG9ic2VydmVyc19jYXBhY2l0aWVzLAotICAgIE9ic2VydmVy
QWxsb2NhdGlvbiogYWxsb2NhdGlvbikgeworICAgIE9ic2VydmVyQWxsb2NhdGlvbiogYWxsb2Nh
dGlvbikgY29uc3QgewogICBSVENfRENIRUNLX0VRKGFsbG9jYXRpb24tPnNpemUoKSwgYml0cmF0
ZV9vYnNlcnZlcl9jb25maWdzXy5zaXplKCkpOwogICBSVENfRENIRUNLX0VRKG9ic2VydmVyc19j
YXBhY2l0aWVzLnNpemUoKSwgYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5zaXplKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L2JpdHJhdGVfYWxsb2NhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jYWxsL2JpdHJhdGVfYWxsb2NhdG9yLmgKaW5kZXggNDdkZjdlMDE1MTJlYWEzMjdk
NzAxNjAyMmViMTg1ZmUyNTE0ODU4Mi4uMDU5Zjc3Yjk2NzE3OWFiMDIzNTRlMDAxMDI2Y2Q1ZTQz
MTQ5ZDY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9iaXRyYXRlX2FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYml0cmF0ZV9hbGxvY2F0b3IuaApAQCAtMTksNiAr
MTksNyBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVk
ZSAiYXBpL2NhbGwvYml0cmF0ZV9hbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYml0
cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NlcXVlbmNlZF90
YXNrX2NoZWNrZXIuaCIKIApAQCAtMzQsMTAgKzM1LDcgQEAgY2xhc3MgQml0cmF0ZUFsbG9jYXRv
ck9ic2VydmVyIHsKICBwdWJsaWM6CiAgIC8vIFJldHVybnMgdGhlIGFtb3VudCBvZiBwcm90ZWN0
aW9uIHVzZWQgYnkgdGhlIEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlcgogICAvLyBpbXBsZW1lbnRh
dGlvbiwgYXMgYml0cmF0ZSBpbiBicHMuCi0gIHZpcnR1YWwgdWludDMyX3QgT25CaXRyYXRlVXBk
YXRlZCh1aW50MzJfdCBiaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgcnR0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBid2VfcGVyaW9kX21zKSA9IDA7CisgIHZpcnR1YWwgdWludDMyX3QgT25CaXRy
YXRlVXBkYXRlZChCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpID0gMDsKIAogIHByb3Rl
Y3RlZDoKICAgdmlydHVhbCB+Qml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKCkge30KQEAgLTczLDcg
KzcxLDcgQEAgY2xhc3MgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSB7CiAgIHZpcnR1YWwgdm9p
ZCBBZGRPYnNlcnZlcihCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWVkaWFTdHJlYW1BbGxvY2F0aW9uQ29uZmlnIGNvbmZpZykg
PSAwOwogICB2aXJ0dWFsIHZvaWQgUmVtb3ZlT2JzZXJ2ZXIoQml0cmF0ZUFsbG9jYXRvck9ic2Vy
dmVyKiBvYnNlcnZlcikgPSAwOwotICB2aXJ0dWFsIGludCBHZXRTdGFydEJpdHJhdGUoQml0cmF0
ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikgPSAwOworICB2aXJ0dWFsIGludCBHZXRTdGFy
dEJpdHJhdGUoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikgY29uc3QgPSAwOwog
CiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIH5CaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlKCkgPSBk
ZWZhdWx0OwpAQCAtMTA0LDYgKzEwMiw3IEBAIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3IgOiBwdWJs
aWMgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSB7CiAKICAgLy8gQWxsb2NhdGUgdGFyZ2V0X2Jp
dHJhdGUgYWNyb3NzIHRoZSByZWdpc3RlcmVkIEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlcnMuCiAg
IHZvaWQgT25OZXR3b3JrQ2hhbmdlZCh1aW50MzJfdCB0YXJnZXRfYml0cmF0ZV9icHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsaW5rX2NhcGFjaXR5X2JwcywKICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcywKICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDY0X3QgcnR0LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBid2Vf
cGVyaW9kX21zKTsKQEAgLTEyMCw3ICsxMTksNyBAQCBjbGFzcyBCaXRyYXRlQWxsb2NhdG9yIDog
cHVibGljIEJpdHJhdGVBbGxvY2F0b3JJbnRlcmZhY2UgewogCiAgIC8vIFJldHVybnMgaW5pdGlh
bCBiaXRyYXRlIGFsbG9jYXRlZCBmb3IgfG9ic2VydmVyfC4gSWYgfG9ic2VydmVyfCBpcyBub3Qg
aW4KICAgLy8gdGhlIGxpc3Qgb2YgYWRkZWQgb2JzZXJ2ZXJzLCBhIGJlc3QgZ3Vlc3MgaXMgcmV0
dXJuZWQuCi0gIGludCBHZXRTdGFydEJpdHJhdGUoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBv
YnNlcnZlcikgb3ZlcnJpZGU7CisgIGludCBHZXRTdGFydEJpdHJhdGUoQml0cmF0ZUFsbG9jYXRv
ck9ic2VydmVyKiBvYnNlcnZlcikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgLy8gU2V0cyBleHRlcm5h
bCBhbGxvY2F0aW9uIHN0cmF0ZWd5LiBJZiBzdHJhdGVneSBpcyBub3Qgc2V0IGRlZmF1bHQgV2Vi
UlRDCiAgIC8vIGFsbG9jYXRpb24gbWVjaGFuaXNtIHdpbGwgYmUgdXNlZC4gVGhlIHN0cmF0ZWd5
IG1heSBiZSBjaGFuZ2VkIGR1cmluZyBjYWxsLgpAQCAtMTcxLDMxICsxNzAsMzQgQEAgY2xhc3Mg
Qml0cmF0ZUFsbG9jYXRvciA6IHB1YmxpYyBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsKICAg
dm9pZCBVcGRhdGVBbGxvY2F0aW9uTGltaXRzKCkgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNr
ZXJfKTsKIAogICB0eXBlZGVmIHN0ZDo6dmVjdG9yPE9ic2VydmVyQ29uZmlnPiBPYnNlcnZlckNv
bmZpZ3M7CisgIE9ic2VydmVyQ29uZmlnczo6Y29uc3RfaXRlcmF0b3IgRmluZE9ic2VydmVyQ29u
ZmlnKAorICAgICAgY29uc3QgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikgY29u
c3QKKyAgICAgIFJUQ19SVU5fT04oJnNlcXVlbmNlZF9jaGVja2VyXyk7CiAgIE9ic2VydmVyQ29u
Zmlnczo6aXRlcmF0b3IgRmluZE9ic2VydmVyQ29uZmlnKAogICAgICAgY29uc3QgQml0cmF0ZUFs
bG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJf
KTsKIAogICB0eXBlZGVmIHN0ZDo6bXVsdGltYXA8dWludDMyX3QsIGNvbnN0IE9ic2VydmVyQ29u
ZmlnKj4gT2JzZXJ2ZXJTb3J0aW5nTWFwOwogICB0eXBlZGVmIHN0ZDo6bWFwPEJpdHJhdGVBbGxv
Y2F0b3JPYnNlcnZlciosIGludD4gT2JzZXJ2ZXJBbGxvY2F0aW9uOwogCi0gIE9ic2VydmVyQWxs
b2NhdGlvbiBBbGxvY2F0ZUJpdHJhdGVzKHVpbnQzMl90IGJpdHJhdGUpCisgIE9ic2VydmVyQWxs
b2NhdGlvbiBBbGxvY2F0ZUJpdHJhdGVzKHVpbnQzMl90IGJpdHJhdGUpIGNvbnN0CiAgICAgICBS
VENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwogCiAgIC8vIEFsbG9jYXRlcyB6ZXJvIGJp
dHJhdGUgdG8gYWxsIG9ic2VydmVycy4KLSAgT2JzZXJ2ZXJBbGxvY2F0aW9uIFplcm9SYXRlQWxs
b2NhdGlvbigpIFJUQ19SVU5fT04oJnNlcXVlbmNlZF9jaGVja2VyXyk7CisgIE9ic2VydmVyQWxs
b2NhdGlvbiBaZXJvUmF0ZUFsbG9jYXRpb24oKSBjb25zdCBSVENfUlVOX09OKCZzZXF1ZW5jZWRf
Y2hlY2tlcl8pOwogICAvLyBBbGxvY2F0ZXMgYml0cmF0ZSB0byBvYnNlcnZlcnMgd2hlbiB0aGVy
ZSBpc24ndCBlbm91Z2ggdG8gYWxsb2NhdGUgdGhlCiAgIC8vIG1pbmltdW0gdG8gYWxsIG9ic2Vy
dmVycy4KLSAgT2JzZXJ2ZXJBbGxvY2F0aW9uIExvd1JhdGVBbGxvY2F0aW9uKHVpbnQzMl90IGJp
dHJhdGUpCisgIE9ic2VydmVyQWxsb2NhdGlvbiBMb3dSYXRlQWxsb2NhdGlvbih1aW50MzJfdCBi
aXRyYXRlKSBjb25zdAogICAgICAgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKICAg
Ly8gQWxsb2NhdGVzIGJpdHJhdGUgdG8gYWxsIG9ic2VydmVycyB3aGVuIHRoZSBhdmFpbGFibGUg
YmFuZHdpZHRoIGlzIGVub3VnaAogICAvLyB0byBhbGxvY2F0ZSB0aGUgbWluaW11bSB0byBhbGwg
b2JzZXJ2ZXJzIGJ1dCBub3QgZW5vdWdoIHRvIGFsbG9jYXRlIHRoZQogICAvLyBtYXggYml0cmF0
ZSBvZiBlYWNoIG9ic2VydmVyLgogICBPYnNlcnZlckFsbG9jYXRpb24gTm9ybWFsUmF0ZUFsbG9j
YXRpb24odWludDMyX3QgYml0cmF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IHN1bV9taW5fYml0cmF0ZXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzdW1fbWluX2JpdHJhdGVzKSBjb25zdAog
ICAgICAgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKICAgLy8gQWxsb2NhdGVzIGJp
dHJhdGUgdG8gb2JzZXJ2ZXJzIHdoZW4gdGhlcmUgaXMgZW5vdWdoIGF2YWlsYWJsZSBiYW5kd2lk
dGgKICAgLy8gZm9yIGFsbCBvYnNlcnZlcnMgdG8gYmUgYWxsb2NhdGVkIHRoZWlyIG1heCBiaXRy
YXRlLgogICBPYnNlcnZlckFsbG9jYXRpb24gTWF4UmF0ZUFsbG9jYXRpb24odWludDMyX3QgYml0
cmF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN1
bV9tYXhfYml0cmF0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCBzdW1fbWF4X2JpdHJhdGVzKSBjb25zdAogICAgICAgUlRDX1JVTl9PTigmc2VxdWVu
Y2VkX2NoZWNrZXJfKTsKIAogICAvLyBTcGxpdHMgfGJpdHJhdGV8IGV2ZW5seSB0byBvYnNlcnZl
cnMgYWxyZWFkeSBpbiB8YWxsb2NhdGlvbnwuCkBAIC0yMDUsOSArMjA3LDEwIEBAIGNsYXNzIEJp
dHJhdGVBbGxvY2F0b3IgOiBwdWJsaWMgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSB7CiAgIHZv
aWQgRGlzdHJpYnV0ZUJpdHJhdGVFdmVubHkodWludDMyX3QgYml0cmF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVfemVyb19hbGxvY2F0aW9ucywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X211bHRpcGxpZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZXJBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ic2VydmVyQWxsb2NhdGlvbiogYWxsb2NhdGlv
bikgY29uc3QKICAgICAgIFJUQ19SVU5fT04oJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0gIGJvb2wg
RW5vdWdoQml0cmF0ZUZvckFsbE9ic2VydmVycyh1aW50MzJfdCBiaXRyYXRlLCB1aW50MzJfdCBz
dW1fbWluX2JpdHJhdGVzKQorICBib29sIEVub3VnaEJpdHJhdGVGb3JBbGxPYnNlcnZlcnModWlu
dDMyX3QgYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IHN1bV9taW5fYml0cmF0ZXMpIGNvbnN0CiAgICAgICBSVENfUlVOX09OKCZzZXF1ZW5jZWRf
Y2hlY2tlcl8pOwogCiAgIC8vIEZyb20gdGhlIGF2YWlsYWJsZSB8Yml0cmF0ZXwsIGVhY2ggb2Jz
ZXJ2ZXIgd2lsbCBiZSBhbGxvY2F0ZWQgYQpAQCAtMjE5LDcgKzIyMiw3IEBAIGNsYXNzIEJpdHJh
dGVBbGxvY2F0b3IgOiBwdWJsaWMgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSB7CiAgIHZvaWQg
RGlzdHJpYnV0ZUJpdHJhdGVSZWxhdGl2ZWx5KAogICAgICAgdWludDMyX3QgYml0cmF0ZSwKICAg
ICAgIGNvbnN0IE9ic2VydmVyQWxsb2NhdGlvbiYgb2JzZXJ2ZXJzX2NhcGFjaXRpZXMsCi0gICAg
ICBPYnNlcnZlckFsbG9jYXRpb24qIGFsbG9jYXRpb24pIFJUQ19SVU5fT04oJnNlcXVlbmNlZF9j
aGVja2VyXyk7CisgICAgICBPYnNlcnZlckFsbG9jYXRpb24qIGFsbG9jYXRpb24pIGNvbnN0IFJU
Q19SVU5fT04oJnNlcXVlbmNlZF9jaGVja2VyXyk7CiAKICAgLy8gQWxsb3cgcGFja2V0cyB0byBi
ZSB0cmFuc21pdHRlZCBpbiB1cCB0byAyIHRpbWVzIG1heCB2aWRlbyBiaXRyYXRlIGlmIHRoZQog
ICAvLyBiYW5kd2lkdGggZXN0aW1hdGUgYWxsb3dzIGl0LgpAQCAtMjMyLDcgKzIzNSw4IEBAIGNs
YXNzIEJpdHJhdGVBbGxvY2F0b3IgOiBwdWJsaWMgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSB7
CiAgIExpbWl0T2JzZXJ2ZXIqIGNvbnN0IGxpbWl0X29ic2VydmVyXyBSVENfR1VBUkRFRF9CWSgm
c2VxdWVuY2VkX2NoZWNrZXJfKTsKICAgLy8gU3RvcmVkIGluIGEgbGlzdCB0byBrZWVwIHRyYWNr
IG9mIHRoZSBpbnNlcnRpb24gb3JkZXIuCiAgIE9ic2VydmVyQ29uZmlncyBiaXRyYXRlX29ic2Vy
dmVyX2NvbmZpZ3NfIFJUQ19HVUFSREVEX0JZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICB1aW50
MzJfdCBsYXN0X2JpdHJhdGVfYnBzXyBSVENfR1VBUkRFRF9CWSgmc2VxdWVuY2VkX2NoZWNrZXJf
KTsKKyAgdWludDMyX3QgbGFzdF90YXJnZXRfYnBzXyBSVENfR1VBUkRFRF9CWSgmc2VxdWVuY2Vk
X2NoZWNrZXJfKTsKKyAgdWludDMyX3QgbGFzdF9saW5rX2NhcGFjaXR5X2Jwc18gUlRDX0dVQVJE
RURfQlkoJnNlcXVlbmNlZF9jaGVja2VyXyk7CiAgIHVpbnQzMl90IGxhc3Rfbm9uX3plcm9fYml0
cmF0ZV9icHNfIFJUQ19HVUFSREVEX0JZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwogICB1aW50OF90
IGxhc3RfZnJhY3Rpb25fbG9zc18gUlRDX0dVQVJERURfQlkoJnNlcXVlbmNlZF9jaGVja2VyXyk7
CiAgIGludDY0X3QgbGFzdF9ydHRfIFJUQ19HVUFSREVEX0JZKCZzZXF1ZW5jZWRfY2hlY2tlcl8p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9iaXRyYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYml0cmF0ZV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MK
aW5kZXggMjk2MWZkNDA5Y2U5ODkyMzQ4N2EyYzNkYzY0YjkzZGE5NjQ3MjRhZC4uMDc3MWY3OThl
ZGNkOGIxOWQzNzk3NTliYzhlNDRiMDhlMjNjMzZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2FsbG9jYXRvcl91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL2JpdHJhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjCkBAIC01OSwxNSArNTksMTMgQEAgY2xh
c3MgVGVzdEJpdHJhdGVPYnNlcnZlciA6IHB1YmxpYyBCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIg
ewogICAgIHByb3RlY3Rpb25fcmF0aW9fID0gcHJvdGVjdGlvbl9yYXRpbzsKICAgfQogCi0gIHVp
bnQzMl90IE9uQml0cmF0ZVVwZGF0ZWQodWludDMyX3QgYml0cmF0ZV9icHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3NzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3QgcnR0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcykgb3ZlcnJpZGUgewotICAgIGxhc3RfYml0cmF0ZV9i
cHNfID0gYml0cmF0ZV9icHM7Ci0gICAgbGFzdF9mcmFjdGlvbl9sb3NzXyA9IGZyYWN0aW9uX2xv
c3M7Ci0gICAgbGFzdF9ydHRfbXNfID0gcnR0OwotICAgIGxhc3RfcHJvYmluZ19pbnRlcnZhbF9t
c18gPSBwcm9iaW5nX2ludGVydmFsX21zOwotICAgIHJldHVybiBiaXRyYXRlX2JwcyAqIHByb3Rl
Y3Rpb25fcmF0aW9fOworICB1aW50MzJfdCBPbkJpdHJhdGVVcGRhdGVkKEJpdHJhdGVBbGxvY2F0
aW9uVXBkYXRlIHVwZGF0ZSkgb3ZlcnJpZGUgeworICAgIGxhc3RfYml0cmF0ZV9icHNfID0gdXBk
YXRlLnRhcmdldF9iaXRyYXRlLmJwcygpOworICAgIGxhc3RfZnJhY3Rpb25fbG9zc18gPQorICAg
ICAgICBydGM6OmRjaGVja2VkX2Nhc3Q8dWludDhfdD4odXBkYXRlLnBhY2tldF9sb3NzX3JhdGlv
ICogMjU2KTsKKyAgICBsYXN0X3J0dF9tc18gPSB1cGRhdGUucm91bmRfdHJpcF90aW1lLm1zKCk7
CisgICAgbGFzdF9wcm9iaW5nX2ludGVydmFsX21zXyA9IHVwZGF0ZS5id2VfcGVyaW9kLm1zKCk7
CisgICAgcmV0dXJuIHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5icHMoKSAqIHByb3RlY3Rpb25fcmF0
aW9fOwogICB9CiAgIHVpbnQzMl90IGxhc3RfYml0cmF0ZV9icHNfOwogICB1aW50OF90IGxhc3Rf
ZnJhY3Rpb25fbG9zc187CkBAIC03Niw2ICs3NCwxOCBAQCBjbGFzcyBUZXN0Qml0cmF0ZU9ic2Vy
dmVyIDogcHVibGljIEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciB7CiAgIGRvdWJsZSBwcm90ZWN0
aW9uX3JhdGlvXzsKIH07CiAKK2NsYXNzIEJpdHJhdGVBbGxvY2F0b3JGb3JUZXN0IDogcHVibGlj
IEJpdHJhdGVBbGxvY2F0b3IgeworIHB1YmxpYzoKKyAgdXNpbmcgQml0cmF0ZUFsbG9jYXRvcjo6
Qml0cmF0ZUFsbG9jYXRvcjsKKyAgdm9pZCBPbk5ldHdvcmtDaGFuZ2VkKHVpbnQzMl90IHRhcmdl
dF9iaXRyYXRlX2JwcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25f
bG9zcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBid2VfcGVyaW9kX21zKSB7CisgICAgQml0cmF0ZUFsbG9jYXRv
cjo6T25OZXR3b3JrQ2hhbmdlZCh0YXJnZXRfYml0cmF0ZV9icHMsIHRhcmdldF9iaXRyYXRlX2Jw
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uX2xvc3Ms
IHJ0dCwgYndlX3BlcmlvZF9tcyk7CisgIH0KK307CisKIG5hbWVzcGFjZSB7CiBjb25zdGV4cHIg
aW50NjRfdCBrRGVmYXVsdFByb2JpbmdJbnRlcnZhbE1zID0gMzAwMDsKIGNvbnN0IGRvdWJsZSBr
RGVmYXVsdEJpdHJhdGVQcmlvcml0eSA9IDEuMDsKQEAgLTgzLDcgKzkzLDggQEAgY29uc3QgZG91
YmxlIGtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5ID0gMS4wOwogCiBjbGFzcyBCaXRyYXRlQWxsb2Nh
dG9yVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDoKLSAgQml0cmF0
ZUFsbG9jYXRvclRlc3QoKSA6IGFsbG9jYXRvcl8obmV3IEJpdHJhdGVBbGxvY2F0b3IoJmxpbWl0
X29ic2VydmVyXykpIHsKKyAgQml0cmF0ZUFsbG9jYXRvclRlc3QoKQorICAgICAgOiBhbGxvY2F0
b3JfKG5ldyBCaXRyYXRlQWxsb2NhdG9yRm9yVGVzdCgmbGltaXRfb2JzZXJ2ZXJfKSkgewogICAg
IGFsbG9jYXRvcl8tPk9uTmV0d29ya0NoYW5nZWQoMzAwMDAwdSwgMCwgMCwga0RlZmF1bHRQcm9i
aW5nSW50ZXJ2YWxNcyk7CiAgIH0KICAgfkJpdHJhdGVBbGxvY2F0b3JUZXN0KCkge30KQEAgLTEw
MCw3ICsxMTEsNyBAQCBjbGFzcyBCaXRyYXRlQWxsb2NhdG9yVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewogICB9CiAKICAgTmljZU1vY2s8TW9ja0xpbWl0T2JzZXJ2ZXI+IGxpbWl0X29i
c2VydmVyXzsKLSAgc3RkOjp1bmlxdWVfcHRyPEJpdHJhdGVBbGxvY2F0b3I+IGFsbG9jYXRvcl87
CisgIHN0ZDo6dW5pcXVlX3B0cjxCaXRyYXRlQWxsb2NhdG9yRm9yVGVzdD4gYWxsb2NhdG9yXzsK
IH07CiAKIFRFU1RfRihCaXRyYXRlQWxsb2NhdG9yVGVzdCwgVXBkYXRpbmdCaXRyYXRlT2JzZXJ2
ZXIpIHsKQEAgLTIxNiw3ICsyMjcsNyBAQCBURVNUX0YoQml0cmF0ZUFsbG9jYXRvclRlc3QsIFJl
bW92ZU9ic2VydmVyVHJpZ2dlcnNMaW1pdE9ic2VydmVyKSB7CiBjbGFzcyBCaXRyYXRlQWxsb2Nh
dG9yVGVzdE5vRW5mb3JjZU1pbiA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3Rl
ZDoKICAgQml0cmF0ZUFsbG9jYXRvclRlc3ROb0VuZm9yY2VNaW4oKQotICAgICAgOiBhbGxvY2F0
b3JfKG5ldyBCaXRyYXRlQWxsb2NhdG9yKCZsaW1pdF9vYnNlcnZlcl8pKSB7CisgICAgICA6IGFs
bG9jYXRvcl8obmV3IEJpdHJhdGVBbGxvY2F0b3JGb3JUZXN0KCZsaW1pdF9vYnNlcnZlcl8pKSB7
CiAgICAgYWxsb2NhdG9yXy0+T25OZXR3b3JrQ2hhbmdlZCgzMDAwMDB1LCAwLCAwLCBrRGVmYXVs
dFByb2JpbmdJbnRlcnZhbE1zKTsKICAgfQogICB+Qml0cmF0ZUFsbG9jYXRvclRlc3ROb0VuZm9y
Y2VNaW4oKSB7fQpAQCAtMjMyLDcgKzI0Myw3IEBAIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3JUZXN0
Tm9FbmZvcmNlTWluIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICAgICAg
ICAgZW5mb3JjZV9taW5fYml0cmF0ZSwgdHJhY2tfaWQsIGJpdHJhdGVfcHJpb3JpdHksIGZhbHNl
fSk7CiAgIH0KICAgTmljZU1vY2s8TW9ja0xpbWl0T2JzZXJ2ZXI+IGxpbWl0X29ic2VydmVyXzsK
LSAgc3RkOjp1bmlxdWVfcHRyPEJpdHJhdGVBbGxvY2F0b3I+IGFsbG9jYXRvcl87CisgIHN0ZDo6
dW5pcXVlX3B0cjxCaXRyYXRlQWxsb2NhdG9yRm9yVGVzdD4gYWxsb2NhdG9yXzsKIH07CiAKIC8v
IFRoZSBmb2xsb3dpbmcgdGhyZWUgdGVzdHMgdmVyaWZ5IGVuZm9yY2luZyBhIG1pbmltdW0gYml0
cmF0ZSB3b3JrcyBhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2VzdGltYXRvcl90ZXN0cy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYml0cmF0ZV9lc3RpbWF0b3JfdGVz
dHMuY2MKaW5kZXggNzY2ZTM4Yzk3ODhjYzQwOWVkNDc5ODk4Y2ExYjczMWMzM2M0NzczNC4uMDg2
MjgyN2QzYTI0YTM5NmQzMGRjNzc0MjQ3YzVhNmMyMWJiZTIyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2VzdGltYXRv
cl90ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL2JpdHJhdGVfZXN0aW1hdG9yX3Rlc3RzLmNjCkBAIC00Niw4ICs0Niw2IEBAIGNsYXNz
IExvZ09ic2VydmVyIHsKICBwcml2YXRlOgogICBjbGFzcyBDYWxsYmFjayA6IHB1YmxpYyBydGM6
OkxvZ1NpbmsgewogICAgcHVibGljOgotICAgIENhbGxiYWNrKCkgOiBkb25lXyhmYWxzZSwgZmFs
c2UpIHt9Ci0KICAgICB2b2lkIE9uTG9nTWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2Fn
ZSkgb3ZlcnJpZGUgewogICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF9zZWN0Xyk7CiAg
ICAgICAvLyBJZ25vcmUgbG9nIGxpbmVzIHRoYXQgYXJlIGR1ZSB0byBtaXNzaW5nIEFTVCBleHRl
bnNpb25zLCB0aGVzZSBhcmUKQEAgLTExMSwxNCArMTA5LDE0IEBAIGNsYXNzIEJpdHJhdGVFc3Rp
bWF0b3JUZXN0IDogcHVibGljIHRlc3Q6OkNhbGxUZXN0IHsKICAgICAgICAgICAmdGFza19xdWV1
ZV8sCiAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKICAgICAg
ICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8U2lt
dWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZp
ZygpKSksCiAgICAgICAgICAgc2VuZGVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXykp
OwogICAgICAgc2VuZF90cmFuc3BvcnRfLT5TZXRSZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+UmVj
ZWl2ZXIoKSk7CiAgICAgICByZWNlaXZlX3RyYW5zcG9ydF8ucmVzZXQobmV3IHRlc3Q6OkRpcmVj
dFRyYW5zcG9ydCgKICAgICAgICAgICAmdGFza19xdWV1ZV8sCiAgICAgICAgICAgYWJzbDo6bWFr
ZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKICAgICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxU
aW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVs
YXRpb25Db25maWcoKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSksCiAgICAgICAgICAgcmVjZWl2
ZXJfY2FsbF8uZ2V0KCksIHBheWxvYWRfdHlwZV9tYXBfKSk7CiAgICAgICByZWNlaXZlX3RyYW5z
cG9ydF8tPlNldFJlY2VpdmVyKHNlbmRlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CiAKQEAgLTEyNiw2
ICsxMjQsOCBAQCBjbGFzcyBCaXRyYXRlRXN0aW1hdG9yVGVzdCA6IHB1YmxpYyB0ZXN0OjpDYWxs
VGVzdCB7CiAgICAgICB2aWRlb19zZW5kX2NvbmZpZy5ydHAuc3NyY3MucHVzaF9iYWNrKGtWaWRl
b1NlbmRTc3Jjc1swXSk7CiAgICAgICB2aWRlb19zZW5kX2NvbmZpZy5lbmNvZGVyX3NldHRpbmdz
LmVuY29kZXJfZmFjdG9yeSA9CiAgICAgICAgICAgJmZha2VfZW5jb2Rlcl9mYWN0b3J5XzsKKyAg
ICAgIHZpZGVvX3NlbmRfY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeSA9CisgICAgICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8uZ2V0KCk7CiAg
ICAgICB2aWRlb19zZW5kX2NvbmZpZy5ydHAucGF5bG9hZF9uYW1lID0gIkZBS0UiOwogICAgICAg
dmlkZW9fc2VuZF9jb25maWcucnRwLnBheWxvYWRfdHlwZSA9IGtGYWtlVmlkZW9TZW5kUGF5bG9h
ZFR5cGU7CiAgICAgICBTZXRWaWRlb1NlbmRDb25maWcodmlkZW9fc2VuZF9jb25maWcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9j
YWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9j
YWxsLmNjCmluZGV4IDYzNTg3NGIyZDYyNGE2NTJjOTYzYWYwYzljODg3MDFlY2Y0Y2NhYTMuLjk1
ZjY0ZTkyNDk5MDU4ZDI1ZjIyOTVlNTk5NjM2YzliYTllZjdhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGwuY2MKQEAg
LTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJhdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbS5oIgog
I2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtLmgiCiAjaW5jbHVkZSAiYXVkaW8vYXVk
aW9fc3RhdGUuaCIKLSNpbmNsdWRlICJhdWRpby90aW1lX2ludGVydmFsLmgiCiAjaW5jbHVkZSAi
Y2FsbC9iaXRyYXRlX2FsbG9jYXRvci5oIgogI2luY2x1ZGUgImNhbGwvY2FsbC5oIgogI2luY2x1
ZGUgImNhbGwvZmxleGZlY19yZWNlaXZlX3N0cmVhbV9pbXBsLmgiCkBAIC0zMCw3ICsyOSw2IEBA
CiAjaW5jbHVkZSAiY2FsbC9ydHBfc3RyZWFtX3JlY2VpdmVyX2NvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJjYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kLmgiCiAjaW5jbHVkZSAibG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1f
Y29uZmlnLmgiCi0jaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZl
bnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRjcF9wYWNrZXRfaW5jb21pbmcuaCIKICNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29t
aW5nLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
dmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgiCkBAIC01Niw2ICs1NCw3IEBACiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3luY2hyb25pemF0aW9uL3J3X2xvY2tfd3JhcHBlci5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3Rh
dGlvbnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS90cmFjZV9ldmVudC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Ns
b2NrLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2luZm8uaCIKQEAg
LTE0NiwxOCArMTQ1LDYgQEAgc3RkOjp1bmlxdWVfcHRyPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBD
cmVhdGVSdGNMb2dTdHJlYW1Db25maWcoCiAgIHJldHVybiBydGNsb2dfY29uZmlnOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8cnRjbG9nOjpTdHJlYW1Db25maWc+IENyZWF0ZVJ0Y0xvZ1N0cmVhbUNv
bmZpZygKLSAgICBjb25zdCBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyYgY29uZmlnKSB7Ci0gIGF1
dG8gcnRjbG9nX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPHJ0Y2xvZzo6U3RyZWFtQ29uZmln
PigpOwotICBydGNsb2dfY29uZmlnLT5sb2NhbF9zc3JjID0gY29uZmlnLnJ0cC5zc3JjOwotICBy
dGNsb2dfY29uZmlnLT5ydHBfZXh0ZW5zaW9ucyA9IGNvbmZpZy5ydHAuZXh0ZW5zaW9uczsKLSAg
aWYgKGNvbmZpZy5zZW5kX2NvZGVjX3NwZWMpIHsKLSAgICBydGNsb2dfY29uZmlnLT5jb2RlY3Mu
ZW1wbGFjZV9iYWNrKGNvbmZpZy5zZW5kX2NvZGVjX3NwZWMtPmZvcm1hdC5uYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+
cGF5bG9hZF90eXBlLCAwKTsKLSAgfQotICByZXR1cm4gcnRjbG9nX2NvbmZpZzsKLX0KLQogfSAg
Ly8gbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC0yMzYsNiArMjIzLDE1IEBA
IGNsYXNzIENhbGwgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpDYWxsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWxsb2NhdGVkX3dpdGhvdXRfZmVlZGJhY2tfYnBz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNfcGFja2V0X2ZlZWRi
YWNrKSBvdmVycmlkZTsKIAorICAvLyBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIHdoZW4gdGhlIG1l
ZGlhIHRyYW5zcG9ydCBpcyBjcmVhdGVkIGFuZCB3aGVuIHRoZQorICAvLyBtZWRpYSB0cmFuc3Bv
cnQgaXMgYmVpbmcgZGVzdHJ1Y3RlZC4KKyAgLy8gV2Ugb25seSBhbGxvdyBvbmUgbWVkaWEgdHJh
bnNwb3J0IHBlciBjb25uZWN0aW9uLgorICAvLworICAvLyBJdCBzaG91bGQgYmUgY2FsbGVkIHdp
dGggbm9uLW51bGwgYXJndW1lbnQgYXQgbW9zdCBvbmNlLCBhbmQgaWYgaXQgd2FzCisgIC8vIGNh
bGxlZCB3aXRoIG5vbi1udWxsIGFyZ3VtZW50LCBpdCBoYXMgdG8gYmUgY2FsbGVkIHdpdGggYSBu
dWxsIGFyZ3VtZW50CisgIC8vIGF0IGxlYXN0IG9uY2UgYWZ0ZXIgdGhhdC4KKyAgdm9pZCBNZWRp
YVRyYW5zcG9ydENoYW5nZShNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0
KSBvdmVycmlkZTsKKwogIHByaXZhdGU6CiAgIERlbGl2ZXJ5U3RhdHVzIERlbGl2ZXJSdGNwKE1l
ZGlhVHlwZSBtZWRpYV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90KiBwYWNrZXQsCkBAIC0yNTYsNiArMjUyLDEwIEBAIGNsYXNzIENhbGwgZmluYWwgOiBw
dWJsaWMgd2VicnRjOjpDYWxsLAogICB2b2lkIFVwZGF0ZUhpc3RvZ3JhbXMoKTsKICAgdm9pZCBV
cGRhdGVBZ2dyZWdhdGVOZXR3b3JrU3RhdGUoKTsKIAorICAvLyAgSWYgfG1lZGlhX3RyYW5zcG9y
dHwgaXMgbm90IG51bGwsIGl0IHJlZ2lzdGVycyB0aGUgcmF0ZSBvYnNlcnZlciBmb3IgdGhlCisg
IC8vICBtZWRpYSB0cmFuc3BvcnQuCisgIHZvaWQgUmVnaXN0ZXJSYXRlT2JzZXJ2ZXIoKSBSVENf
TE9DS1NfRVhDTFVERUQodGFyZ2V0X29ic2VydmVyX2NyaXRfKTsKKwogICBDbG9jayogY29uc3Qg
Y2xvY2tfOwogCiAgIGNvbnN0IGludCBudW1fY3B1X2NvcmVzXzsKQEAgLTM0Niw3ICszNDYsNiBA
QCBjbGFzcyBDYWxsIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6Q2FsbCwKICAgYWJzbDo6b3B0aW9u
YWw8aW50NjRfdD4gbGFzdF9yZWNlaXZlZF9ydHBfYXVkaW9fbXNfOwogICBhYnNsOjpvcHRpb25h
bDxpbnQ2NF90PiBmaXJzdF9yZWNlaXZlZF9ydHBfdmlkZW9fbXNfOwogICBhYnNsOjpvcHRpb25h
bDxpbnQ2NF90PiBsYXN0X3JlY2VpdmVkX3J0cF92aWRlb19tc187Ci0gIFRpbWVJbnRlcnZhbCBz
ZW50X3J0cF9hdWRpb190aW1lcl9tc187CiAKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gbGFzdF9i
YW5kd2lkdGhfYnBzX2NyaXRfOwogICB1aW50MzJfdCBsYXN0X2JhbmR3aWR0aF9icHNfIFJUQ19H
VUFSREVEX0JZKCZsYXN0X2JhbmR3aWR0aF9icHNfY3JpdF8pOwpAQCAtMzc0LDYgKzM3MywxNSBA
QCBjbGFzcyBDYWxsIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6Q2FsbCwKICAgLy8gRGVjbGFyZWQg
bGFzdCBzaW5jZSBpdCB3aWxsIGlzc3VlIGNhbGxiYWNrcyBmcm9tIGEgdGFzayBxdWV1ZS4gRGVj
bGFyaW5nIGl0CiAgIC8vIGxhc3QgZW5zdXJlcyB0aGF0IGl0IGlzIGRlc3Ryb3llZCBmaXJzdCBh
bmQgYW55IHJ1bm5pbmcgdGFza3MgYXJlIGZpbmlzaGVkLgogICBzdGQ6OnVuaXF1ZV9wdHI8UnRw
VHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2U+IHRyYW5zcG9ydF9zZW5kXzsKKworICAv
LyBUaGlzIGlzIGEgcHJlY2F1dGlvbiwgc2luY2UgfE1lZGlhVHJhbnNwb3J0Q2hhbmdlfCBpcyBu
b3QgZ3VhcmFudGVlZCB0byBiZQorICAvLyBpbnZva2VkIG9uIGEgcGFydGljdWxhciB0aHJlYWQu
CisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHRhcmdldF9vYnNlcnZlcl9jcml0XzsKKyAgYm9vbCBp
c190YXJnZXRfcmF0ZV9vYnNlcnZlcl9yZWdpc3RlcmVkXworICAgICAgUlRDX0dVQVJERURfQlko
JnRhcmdldF9vYnNlcnZlcl9jcml0XykgPSBmYWxzZTsKKyAgTWVkaWFUcmFuc3BvcnRJbnRlcmZh
Y2UqIG1lZGlhX3RyYW5zcG9ydF8KKyAgICAgIFJUQ19HVUFSREVEX0JZKCZ0YXJnZXRfb2JzZXJ2
ZXJfY3JpdF8pID0gbnVsbHB0cjsKKwogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKENh
bGwpOwogfTsKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApAQCAtNDQ0LDcgKzQ1Miw2IEBAIENh
bGw6OkNhbGwoY29uc3QgQ2FsbDo6Q29uZmlnJiBjb25maWcsCiAgICAgICB2aWRlb19zZW5kX2Rl
bGF5X3N0YXRzXyhuZXcgU2VuZERlbGF5U3RhdHMoY2xvY2tfKSksCiAgICAgICBzdGFydF9tc18o
Y2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSkgewogICBSVENfRENIRUNLKGNvbmZpZy5ldmVu
dF9sb2cgIT0gbnVsbHB0cik7Ci0gIHRyYW5zcG9ydF9zZW5kLT5SZWdpc3RlclRhcmdldFRyYW5z
ZmVyUmF0ZU9ic2VydmVyKHRoaXMpOwogICB0cmFuc3BvcnRfc2VuZF8gPSBzdGQ6Om1vdmUodHJh
bnNwb3J0X3NlbmQpOwogICB0cmFuc3BvcnRfc2VuZF9wdHJfID0gdHJhbnNwb3J0X3NlbmRfLmdl
dCgpOwogCkBAIC00ODYsNiArNDkzLDQzIEBAIENhbGw6On5DYWxsKCkgewogICBVcGRhdGVIaXN0
b2dyYW1zKCk7CiB9CiAKK3ZvaWQgQ2FsbDo6UmVnaXN0ZXJSYXRlT2JzZXJ2ZXIoKSB7CisgIHJ0
Yzo6Q3JpdFNjb3BlIGxvY2soJnRhcmdldF9vYnNlcnZlcl9jcml0Xyk7CisKKyAgaWYgKGlzX3Rh
cmdldF9yYXRlX29ic2VydmVyX3JlZ2lzdGVyZWRfKSB7CisgICAgcmV0dXJuOworICB9CisKKyAg
aXNfdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJfcmVnaXN0ZXJlZF8gPSB0cnVlOworCisgIGlmIChtZWRp
YV90cmFuc3BvcnRfKSB7CisgICAgbWVkaWFfdHJhbnNwb3J0Xy0+QWRkVGFyZ2V0VHJhbnNmZXJS
YXRlT2JzZXJ2ZXIodGhpcyk7CisgIH0gZWxzZSB7CisgICAgdHJhbnNwb3J0X3NlbmRfcHRyXy0+
UmVnaXN0ZXJUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlcih0aGlzKTsKKyAgfQorfQorCit2b2lk
IENhbGw6Ok1lZGlhVHJhbnNwb3J0Q2hhbmdlKE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRp
YV90cmFuc3BvcnQpIHsKKyAgcnRjOjpDcml0U2NvcGUgbG9jaygmdGFyZ2V0X29ic2VydmVyX2Ny
aXRfKTsKKworICBpZiAoaXNfdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJfcmVnaXN0ZXJlZF8pIHsKKyAg
ICAvLyBPbmx5IHVzZWQgdG8gdW5yZWdpc3RlciByYXRlIG9ic2VydmVyIGZyb20gbWVkaWEgdHJh
bnNwb3J0LiBSZWdpc3RyYXRpb24KKyAgICAvLyBoYXBwZW5zIHdoZW4gdGhlIHN0cmVhbSBpcyBj
cmVhdGVkLgorICAgIGlmICghbWVkaWFfdHJhbnNwb3J0ICYmIG1lZGlhX3RyYW5zcG9ydF8pIHsK
KyAgICAgIG1lZGlhX3RyYW5zcG9ydF8tPlJlbW92ZVRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVy
KHRoaXMpOworICAgICAgbWVkaWFfdHJhbnNwb3J0XyA9IG51bGxwdHI7CisgICAgICBpc190YXJn
ZXRfcmF0ZV9vYnNlcnZlcl9yZWdpc3RlcmVkXyA9IGZhbHNlOworICAgIH0KKyAgfSBlbHNlIGlm
IChtZWRpYV90cmFuc3BvcnQpIHsKKyAgICBSVENfRENIRUNLKG1lZGlhX3RyYW5zcG9ydF8gPT0g
bnVsbHB0ciB8fAorICAgICAgICAgICAgICAgbWVkaWFfdHJhbnNwb3J0XyA9PSBtZWRpYV90cmFu
c3BvcnQpCisgICAgICAgIDw8ICJtZWRpYV90cmFuc3BvcnRfPSIgPDwgKG1lZGlhX3RyYW5zcG9y
dF8gIT0gbnVsbHB0cikKKyAgICAgICAgPDwgIiwgKG1lZGlhX3RyYW5zcG9ydF89PW1lZGlhX3Ry
YW5zcG9ydCk9IgorICAgICAgICA8PCAobWVkaWFfdHJhbnNwb3J0XyA9PSBtZWRpYV90cmFuc3Bv
cnQpOworICAgIG1lZGlhX3RyYW5zcG9ydF8gPSBtZWRpYV90cmFuc3BvcnQ7CisgIH0KK30KKwog
dm9pZCBDYWxsOjpVcGRhdGVIaXN0b2dyYW1zKCkgewogICBSVENfSElTVE9HUkFNX0NPVU5UU18x
MDAwMDAoCiAgICAgICAiV2ViUlRDLkNhbGwuTGlmZXRpbWVJblNlY29uZHMiLApAQCAtNDk1LDEx
ICs1MzksNiBAQCB2b2lkIENhbGw6OlVwZGF0ZUhpc3RvZ3JhbXMoKSB7CiB2b2lkIENhbGw6OlVw
ZGF0ZVNlbmRIaXN0b2dyYW1zKGludDY0X3QgZmlyc3Rfc2VudF9wYWNrZXRfbXMpIHsKICAgaWYg
KGZpcnN0X3NlbnRfcGFja2V0X21zID09IC0xKQogICAgIHJldHVybjsKLSAgaWYgKCFzZW50X3J0
cF9hdWRpb190aW1lcl9tc18uRW1wdHkoKSkgewotICAgIFJUQ19ISVNUT0dSQU1fQ09VTlRTXzEw
MDAwMCgKLSAgICAgICAgIldlYlJUQy5DYWxsLlRpbWVTZW5kaW5nQXVkaW9SdHBQYWNrZXRzSW5T
ZWNvbmRzIiwKLSAgICAgICAgc2VudF9ydHBfYXVkaW9fdGltZXJfbXNfLkxlbmd0aCgpIC8gMTAw
MCk7Ci0gIH0KICAgaW50NjRfdCBlbGFwc2VkX3NlYyA9CiAgICAgICAoY2xvY2tfLT5UaW1lSW5N
aWxsaXNlY29uZHMoKSAtIGZpcnN0X3NlbnRfcGFja2V0X21zKSAvIDEwMDA7CiAgIGlmIChlbGFw
c2VkX3NlYyA8IG1ldHJpY3M6OmtNaW5SdW5UaW1lSW5TZWNvbmRzKQpAQCAtNTc4LDkgKzYxNywx
NiBAQCB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbSogQ2FsbDo6Q3JlYXRlQXVkaW9TZW5kU3RyZWFt
KAogICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpDb25maWcmIGNvbmZpZykgewog
ICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJDYWxsOjpDcmVhdGVBdWRpb1NlbmRTdHJlYW0iKTsK
ICAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZjb25maWd1cmF0aW9uX3NlcXVlbmNl
X2NoZWNrZXJfKTsKLSAgZXZlbnRfbG9nXy0+TG9nKGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50
QXVkaW9TZW5kU3RyZWFtQ29uZmlnPigKLSAgICAgIENyZWF0ZVJ0Y0xvZ1N0cmVhbUNvbmZpZyhj
b25maWcpKSk7CiAKKyAgeworICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnRhcmdldF9vYnNlcnZl
cl9jcml0Xyk7CisgICAgUlRDX0RDSEVDSyhtZWRpYV90cmFuc3BvcnRfID09IGNvbmZpZy5tZWRp
YV90cmFuc3BvcnQpOworICB9CisKKyAgUmVnaXN0ZXJSYXRlT2JzZXJ2ZXIoKTsKKworICAvLyBT
dHJlYW0gY29uZmlnIGlzIGxvZ2dlZCBpbiBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZ3VyZVN0cmVh
bSwgYXMgaXQgbWF5CisgIC8vIGNoYW5nZSBkdXJpbmcgdGhlIHN0cmVhbSdzIGxpZmV0aW1lLgog
ICBhYnNsOjpvcHRpb25hbDxSdHBTdGF0ZT4gc3VzcGVuZGVkX3J0cF9zdGF0ZTsKICAgewogICAg
IGNvbnN0IGF1dG8mIGl0ZXIgPSBzdXNwZW5kZWRfYXVkaW9fc2VuZF9zc3Jjc18uZmluZChjb25m
aWcucnRwLnNzcmMpOwpAQCAtNTk2LDcgKzY0Miw3IEBAIHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFt
KiBDYWxsOjpDcmVhdGVBdWRpb1NlbmRTdHJlYW0oCiAgICAgICBjb25maWcsIGNvbmZpZ18uYXVk
aW9fc3RhdGUsIHRyYW5zcG9ydF9zZW5kX3B0cl8tPkdldFdvcmtlclF1ZXVlKCksCiAgICAgICBt
b2R1bGVfcHJvY2Vzc190aHJlYWRfLmdldCgpLCB0cmFuc3BvcnRfc2VuZF9wdHJfLAogICAgICAg
Yml0cmF0ZV9hbGxvY2F0b3JfLmdldCgpLCBldmVudF9sb2dfLCBjYWxsX3N0YXRzXy5nZXQoKSwK
LSAgICAgIHN1c3BlbmRlZF9ydHBfc3RhdGUsICZzZW50X3J0cF9hdWRpb190aW1lcl9tc18pOwor
ICAgICAgc3VzcGVuZGVkX3J0cF9zdGF0ZSk7CiAgIHsKICAgICBXcml0ZUxvY2tTY29wZWQgd3Jp
dGVfbG9jaygqc2VuZF9jcml0Xyk7CiAgICAgUlRDX0RDSEVDSyhhdWRpb19zZW5kX3NzcmNzXy5m
aW5kKGNvbmZpZy5ydHAuc3NyYykgPT0KQEAgLTcwOCw2ICs3NTQsOCBAQCB3ZWJydGM6OlZpZGVv
U2VuZFN0cmVhbSogQ2FsbDo6Q3JlYXRlVmlkZW9TZW5kU3RyZWFtKAogICBUUkFDRV9FVkVOVDAo
IndlYnJ0YyIsICJDYWxsOjpDcmVhdGVWaWRlb1NlbmRTdHJlYW0iKTsKICAgUlRDX0RDSEVDS19D
QUxMRURfU0VRVUVOVElBTExZKCZjb25maWd1cmF0aW9uX3NlcXVlbmNlX2NoZWNrZXJfKTsKIAor
ICBSZWdpc3RlclJhdGVPYnNlcnZlcigpOworCiAgIHZpZGVvX3NlbmRfZGVsYXlfc3RhdHNfLT5B
ZGRTc3Jjcyhjb25maWcpOwogICBmb3IgKHNpemVfdCBzc3JjX2luZGV4ID0gMDsgc3NyY19pbmRl
eCA8IGNvbmZpZy5ydHAuc3NyY3Muc2l6ZSgpOwogICAgICAgICsrc3NyY19pbmRleCkgewpAQCAt
MTA0NCw2ICsxMDkyLDE4IEBAIHZvaWQgQ2FsbDo6T25TZW50UGFja2V0KGNvbnN0IHJ0Yzo6U2Vu
dFBhY2tldCYgc2VudF9wYWNrZXQpIHsKIH0KIAogdm9pZCBDYWxsOjpPblRhcmdldFRyYW5zZmVy
UmF0ZShUYXJnZXRUcmFuc2ZlclJhdGUgbXNnKSB7CisgIC8vIFRPRE8oYnVncy53ZWJydGMub3Jn
Lzk3MTkpCisgIC8vIENhbGw6Ok9uVGFyZ2V0VHJhbnNmZXJSYXRlIHJlcXVpcmVzIHRoYXQgb24g
dGFyZ2V0IHRyYW5zZmVyIHJhdGUgaXMgaW52b2tlZAorICAvLyBmcm9tIHRoZSB3b3JrZXIgcXVl
dWUgKGJlY2F1c2UgYml0cmF0ZV9hbGxvY2F0b3JfIHJlcXVpcmVzIGl0KS4gTWVkaWEKKyAgLy8g
dHJhbnNwb3J0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGUgY2FsbGJhY2sgb24gdGhlIHdvcmtlciBx
dWV1ZS4KKyAgLy8gV2hlbiB0aGUgdGhyZWFkaW5nIG1vZGVsIGZvciBNZWRpYVRyYW5zcG9ydElu
dGVyZmFjZSBpcyB1cGRhdGUsIHJlY29uc2lkZXIKKyAgLy8gY2hhbmdpbmcgdGhpcyBpbXBsZW1l
bnRhdGlvbi4KKyAgaWYgKCF0cmFuc3BvcnRfc2VuZF9wdHJfLT5HZXRXb3JrZXJRdWV1ZSgpLT5J
c0N1cnJlbnQoKSkgeworICAgIHRyYW5zcG9ydF9zZW5kX3B0cl8tPkdldFdvcmtlclF1ZXVlKCkt
PlBvc3RUYXNrKAorICAgICAgICBbdGhpcywgbXNnXSB7IHRoaXMtPk9uVGFyZ2V0VHJhbnNmZXJS
YXRlKG1zZyk7IH0pOworICAgIHJldHVybjsKKyAgfQorCiAgIHVpbnQzMl90IHRhcmdldF9iaXRy
YXRlX2JwcyA9IG1zZy50YXJnZXRfcmF0ZS5icHMoKTsKICAgaW50IGxvc3NfcmF0aW9fMjU1ID0g
bXNnLm5ldHdvcmtfZXN0aW1hdGUubG9zc19yYXRlX3JhdGlvICogMjU1OwogICB1aW50OF90IGZy
YWN0aW9uX2xvc3MgPQpAQCAtMTA1Nyw4ICsxMTE3LDkgQEAgdm9pZCBDYWxsOjpPblRhcmdldFRy
YW5zZmVyUmF0ZShUYXJnZXRUcmFuc2ZlclJhdGUgbXNnKSB7CiAgIH0KICAgLy8gRm9yIGNvbnRy
b2xsaW5nIHRoZSByYXRlIG9mIGZlZWRiYWNrIG1lc3NhZ2VzLgogICByZWNlaXZlX3NpZGVfY2Nf
Lk9uQml0cmF0ZUNoYW5nZWQodGFyZ2V0X2JpdHJhdGVfYnBzKTsKLSAgYml0cmF0ZV9hbGxvY2F0
b3JfLT5Pbk5ldHdvcmtDaGFuZ2VkKHRhcmdldF9iaXRyYXRlX2JwcywgZnJhY3Rpb25fbG9zcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0dF9tcywgcHJvYmluZ19p
bnRlcnZhbF9tcyk7CisgIGJpdHJhdGVfYWxsb2NhdG9yXy0+T25OZXR3b3JrQ2hhbmdlZCh0YXJn
ZXRfYml0cmF0ZV9icHMsIGJhbmR3aWR0aF9icHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmcmFjdGlvbl9sb3NzLCBydHRfbXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9iaW5nX2ludGVydmFsX21zKTsKIAogICAvLyBJZ25vcmUg
dXBkYXRlcyBpZiBiaXRyYXRlIGlzIHplcm8gKHRoZSBhZ2dyZWdhdGUgbmV0d29yayBzdGF0ZSBp
cyBkb3duKS4KICAgaWYgKHRhcmdldF9iaXRyYXRlX2JwcyA9PSAwKSB7CkBAIC0xMjE1LDggKzEy
NzYsMTAgQEAgUGFja2V0UmVjZWl2ZXI6OkRlbGl2ZXJ5U3RhdHVzIENhbGw6OkRlbGl2ZXJSdHAo
TWVkaWFUeXBlIG1lZGlhX3R5cGUsCiAKICAgaWYgKHBhY2tldF90aW1lX3VzICE9IC0xKSB7CiAg
ICAgaWYgKHJlY2VpdmVfdGltZV9jYWxjdWxhdG9yXykgeworICAgICAgLy8gUmVwYWlyIHBhY2tl
dF90aW1lX3VzIGZvciBjbG9jayByZXNldHMgYnkgY29tcGFyaW5nIGEgbmV3IHJlYWQgb2YKKyAg
ICAgIC8vIHRoZSBzYW1lIGNsb2NrIChUaW1lVVRDTWljcm9zKSB0byBhIG1vbm90b25pYyBjbG9j
ayByZWFkaW5nLgogICAgICAgcGFja2V0X3RpbWVfdXMgPSByZWNlaXZlX3RpbWVfY2FsY3VsYXRv
cl8tPlJlY29uY2lsZVJlY2VpdmVUaW1lcygKLSAgICAgICAgICBwYWNrZXRfdGltZV91cywgY2xv
Y2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSk7CisgICAgICAgICAgcGFja2V0X3RpbWVfdXMsIHJ0
Yzo6VGltZVVUQ01pY3JvcygpLCBjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKICAgICB9
CiAgICAgcGFyc2VkX3BhY2tldC5zZXRfYXJyaXZhbF90aW1lX21zKChwYWNrZXRfdGltZV91cyAr
IDUwMCkgLyAxMDAwKTsKICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsLmgKaW5kZXggNDE2NzI5NmQ3NTZjNTQ3
ZjQzNGVmZDZjNTUzYWU2OTcxNjA5YjNlNC4uYzBlMzFjMDkwMmIzYzk2ZGNkMDEwN2M3YTgzZThj
NWM4ZjZjODE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9jYWxsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC9jYWxsLmgKQEAgLTI0LDExICsyNCwxMCBAQAogI2luY2x1ZGUgImNh
bGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
Y2FsbC92aWRlb19yZWNlaXZlX3N0cmVhbS5oIgogI2luY2x1ZGUgImNhbGwvdmlkZW9fc2VuZF9z
dHJlYW0uaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlKQogI2luY2x1ZGUgInJ0Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L25ldHdvcmsvc2VudF9wYWNrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3Jrcm91dGUu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
QEAgLTU4LDYgKzU3LDExIEBAIGNsYXNzIENhbGwgewogCiAgIHZpcnR1YWwgQXVkaW9TZW5kU3Ry
ZWFtKiBDcmVhdGVBdWRpb1NlbmRTdHJlYW0oCiAgICAgICBjb25zdCBBdWRpb1NlbmRTdHJlYW06
OkNvbmZpZyYgY29uZmlnKSA9IDA7CisKKyAgLy8gR2V0cyBjYWxsZWQgd2hlbiBtZWRpYSB0cmFu
c3BvcnQgaXMgY3JlYXRlZCBvciByZW1vdmVkLgorICB2aXJ0dWFsIHZvaWQgTWVkaWFUcmFuc3Bv
cnRDaGFuZ2UoCisgICAgICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0
X2ludGVyZmFjZSkgPSAwOworCiAgIHZpcnR1YWwgdm9pZCBEZXN0cm95QXVkaW9TZW5kU3RyZWFt
KEF1ZGlvU2VuZFN0cmVhbSogc2VuZF9zdHJlYW0pID0gMDsKIAogICB2aXJ0dWFsIEF1ZGlvUmVj
ZWl2ZVN0cmVhbSogQ3JlYXRlQXVkaW9SZWNlaXZlU3RyZWFtKApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX2NvbmZpZy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbF9jb25m
aWcuY2MKaW5kZXggZDM0MjVhYTU3OTk3YTk2ZWYyOTcwMmIwOGUxMzBlYzRhMmI5NWE4Yy4uYjE0
OWM4ODllYWUwMjhiOWRkMzk4M2M2ZTAzNDkxNTE2ZjI1ZDY2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX2NvbmZpZy5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxf
Y29uZmlnLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJjYWxsL2NhbGxfY29uZmln
LmgiCiAKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKIENhbGxDb25maWc6OkNhbGxDb25maWcoUnRjRXZlbnRMb2cqIGV2ZW50X2xvZykgOiBldmVu
dF9sb2coZXZlbnRfbG9nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxfcGVyZl90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbF9wZXJmX3Rlc3RzLmNjCmluZGV4
IDhmY2Q1NjZmODFhODI0MWRlMGFkMmZhNmIxYTVmNjRlMjA5NzFhZmIuLjcyYWE3OGM1Zjc3NzBl
YWMxMzM0MTYzOTE3ZTJmYzcwY2M5YzBiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbF9wZXJmX3Rlc3RzLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbF9wZXJmX3Rl
c3RzLmNjCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5Lmgi
CiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9y
eS5oIgogI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsYXRlZF9uZXR3b3JrLmgiCisjaW5jbHVkZSAi
YXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2lu
Y2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uaCIKICNpbmNsdWRlICJh
cGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmlnLmgiCiAjaW5jbHVkZSAiY2FsbC9j
YWxsLmgiCkBAIC02NCw3ICs2NSw3IEBAIGNsYXNzIENhbGxQZXJmVGVzdCA6IHB1YmxpYyB0ZXN0
OjpDYWxsVGVzdCB7CiAKICAgdm9pZCBUZXN0TWluVHJhbnNtaXRCaXRyYXRlKGJvb2wgcGFkX3Rv
X21pbl9iaXRyYXRlKTsKIAotICB2b2lkIFRlc3RDYXB0dXJlTnRwVGltZShjb25zdCBEZWZhdWx0
TmV0d29ya1NpbXVsYXRpb25Db25maWcmIG5ldF9jb25maWcsCisgIHZvaWQgVGVzdENhcHR1cmVO
dHBUaW1lKGNvbnN0IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcmIG5ldF9jb25maWcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aHJlc2hvbGRfbXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzdGFydF90aW1lX21zLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgcnVuX3RpbWVfbXMpOwpAQCAtMTUyLDcgKzE1Myw3IEBAIHZvaWQgQ2FsbFBlcmZUZXN0
OjpUZXN0QXVkaW9WaWRlb1N5bmMoRmVjTW9kZSBmZWMsCiAgIGNvbnN0IHVpbnQzMl90IGtBdWRp
b1NlbmRTc3JjID0gMTIzNDsKICAgY29uc3QgdWludDMyX3Qga0F1ZGlvUmVjdlNzcmMgPSA1Njc4
OwogCi0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBhdWRpb19uZXRfY29uZmlnOwor
ICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGF1ZGlvX25ldF9jb25maWc7CiAgIGF1ZGlv
X25ldF9jb25maWcucXVldWVfZGVsYXlfbXMgPSA1MDA7CiAgIGF1ZGlvX25ldF9jb25maWcubG9z
c19wZXJjZW50ID0gNTsKIApAQCAtMjE3LDcgKzIxOCw3IEBAIHZvaWQgQ2FsbFBlcmZUZXN0OjpU
ZXN0QXVkaW9WaWRlb1N5bmMoRmVjTW9kZSBmZWMsCiAgICAgICAgIHRlc3Q6OlBhY2tldFRyYW5z
cG9ydDo6a1NlbmRlciwgdmlkZW9fcHRfbWFwLAogICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxG
YWtlTmV0d29ya1BpcGU+KAogICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwg
YWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5l
dHdvcmtCZWhhdmlvckNvbmZpZygpKSkpOwogICAgIHZpZGVvX3NlbmRfdHJhbnNwb3J0LT5TZXRS
ZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CiAKICAgICByZWNlaXZlX3RyYW5z
cG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OlBhY2tldFRyYW5zcG9ydD4oCkBAIC0yMjUs
MTMgKzIyNiwxNCBAQCB2b2lkIENhbGxQZXJmVGVzdDo6VGVzdEF1ZGlvVmlkZW9TeW5jKEZlY01v
ZGUgZmVjLAogICAgICAgICB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtSZWNlaXZlciwgcGF5bG9h
ZF90eXBlX21hcF8sCiAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4o
CiAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1
ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29u
ZmlnKCkpKSk7CiAgICAgcmVjZWl2ZV90cmFuc3BvcnQtPlNldFJlY2VpdmVyKHNlbmRlcl9jYWxs
Xy0+UmVjZWl2ZXIoKSk7CiAKICAgICBDcmVhdGVTZW5kQ29uZmlnKDEsIDAsIDAsIHZpZGVvX3Nl
bmRfdHJhbnNwb3J0LmdldCgpKTsKICAgICBDcmVhdGVNYXRjaGluZ1JlY2VpdmVDb25maWdzKHJl
Y2VpdmVfdHJhbnNwb3J0LmdldCgpKTsKIAotICAgIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGF1
ZGlvX3NlbmRfY29uZmlnKGF1ZGlvX3NlbmRfdHJhbnNwb3J0LmdldCgpKTsKKyAgICBBdWRpb1Nl
bmRTdHJlYW06OkNvbmZpZyBhdWRpb19zZW5kX2NvbmZpZyhhdWRpb19zZW5kX3RyYW5zcG9ydC5n
ZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1l
ZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogICAgIGF1ZGlvX3NlbmRfY29uZmlnLnJ0cC5zc3Jj
ID0ga0F1ZGlvU2VuZFNzcmM7CiAgICAgYXVkaW9fc2VuZF9jb25maWcuc2VuZF9jb2RlY19zcGVj
ID0gQXVkaW9TZW5kU3RyZWFtOjpDb25maWc6OlNlbmRDb2RlY1NwZWMoCiAgICAgICAgIGtBdWRp
b1NlbmRQYXlsb2FkVHlwZSwgeyJJU0FDIiwgMTYwMDAsIDF9KTsKQEAgLTMzNywxNCArMzM5LDE0
IEBAIFRFU1RfRihDYWxsUGVyZlRlc3QsIFBsYXlzT3V0QXVkaW9BbmRWaWRlb0luU3luY1dpdGhW
aWRlb0Zhc3RlclRoYW5BdWRpb0RyaWZ0KSB7CiB9CiAKIHZvaWQgQ2FsbFBlcmZUZXN0OjpUZXN0
Q2FwdHVyZU50cFRpbWUoCi0gICAgY29uc3QgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmln
JiBuZXRfY29uZmlnLAorICAgIGNvbnN0IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcmIG5l
dF9jb25maWcsCiAgICAgaW50IHRocmVzaG9sZF9tcywKICAgICBpbnQgc3RhcnRfdGltZV9tcywK
ICAgICBpbnQgcnVuX3RpbWVfbXMpIHsKICAgY2xhc3MgQ2FwdHVyZU50cFRpbWVPYnNlcnZlciA6
IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4gewogICAgcHVi
bGljOgotICAgIENhcHR1cmVOdHBUaW1lT2JzZXJ2ZXIoY29uc3QgRGVmYXVsdE5ldHdvcmtTaW11
bGF0aW9uQ29uZmlnJiBuZXRfY29uZmlnLAorICAgIENhcHR1cmVOdHBUaW1lT2JzZXJ2ZXIoY29u
c3QgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyYgbmV0X2NvbmZpZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCB0aHJlc2hvbGRfbXMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc3RhcnRfdGltZV9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBy
dW5fdGltZV9tcykKQEAgLTQ2MSw3ICs0NjMsNyBAQCB2b2lkIENhbGxQZXJmVGVzdDo6VGVzdENh
cHR1cmVOdHBUaW1lKAogICAgIH0KIAogICAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfOwot
ICAgIGNvbnN0IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBuZXRfY29uZmlnXzsKKyAg
ICBjb25zdCBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIG5ldF9jb25maWdfOwogICAgIENs
b2NrKiBjb25zdCBjbG9ja187CiAgICAgaW50IHRocmVzaG9sZF9tc187CiAgICAgaW50IHN0YXJ0
X3RpbWVfbXNfOwpAQCAtNDc4LDEwICs0ODAsMTAgQEAgdm9pZCBDYWxsUGVyZlRlc3Q6OlRlc3RD
YXB0dXJlTnRwVGltZSgKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCi0vLyBGbGFreSB0ZXN0
cywgZGlzYWJsZWQgb24gTWFjIGR1ZSB0byB3ZWJydGM6ODI5MS4KLSNpZiAhKGRlZmluZWQoV0VC
UlRDX01BQykpCisvLyBGbGFreSB0ZXN0cywgZGlzYWJsZWQgb24gTWFjIGFuZCBXaW5kb3dzIGR1
ZSB0byB3ZWJydGM6ODI5MS4KKyNpZiAhKGRlZmluZWQoV0VCUlRDX01BQykgfHwgZGVmaW5lZChX
RUJSVENfV0lOKSkKIFRFU1RfRihDYWxsUGVyZlRlc3QsIENhcHR1cmVOdHBUaW1lV2l0aE5ldHdv
cmtEZWxheSkgewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgbmV0X2NvbmZpZzsK
KyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBuZXRfY29uZmlnOwogICBuZXRfY29uZmln
LnF1ZXVlX2RlbGF5X21zID0gMTAwOwogICAvLyBUT0RPKHd1KTogbG93ZXIgdGhlIHRocmVzaG9s
ZCBhcyB0aGUgY2FsY3VsYXRpb24vZXN0aW1hdGF0aW9uIGJlY29tZXMgbW9yZQogICAvLyBhY2N1
cmF0ZS4KQEAgLTQ5Miw3ICs0OTQsNyBAQCBURVNUX0YoQ2FsbFBlcmZUZXN0LCBDYXB0dXJlTnRw
VGltZVdpdGhOZXR3b3JrRGVsYXkpIHsKIH0KIAogVEVTVF9GKENhbGxQZXJmVGVzdCwgQ2FwdHVy
ZU50cFRpbWVXaXRoTmV0d29ya0ppdHRlcikgewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWcgbmV0X2NvbmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBuZXRfY29u
ZmlnOwogICBuZXRfY29uZmlnLnF1ZXVlX2RlbGF5X21zID0gMTAwOwogICBuZXRfY29uZmlnLmRl
bGF5X3N0YW5kYXJkX2RldmlhdGlvbl9tcyA9IDEwOwogICAvLyBUT0RPKHd1KTogbG93ZXIgdGhl
IHRocmVzaG9sZCBhcyB0aGUgY2FsY3VsYXRpb24vZXN0aW1hdGF0aW9uIGJlY29tZXMgbW9yZQpA
QCAtNzI0LDEyICs3MjYsMTMgQEAgVEVTVF9GKENhbGxQZXJmVGVzdCwgTUFZQkVfS2VlcHNIaWdo
Qml0cmF0ZVdoZW5SZWNvbmZpZ3VyaW5nU2VuZGVyKSB7CiAgICAgQml0cmF0ZU9ic2VydmVyKCkK
ICAgICAgICAgOiBFbmRUb0VuZFRlc3Qoa0RlZmF1bHRUaW1lb3V0TXMpLAogICAgICAgICAgIEZh
a2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAotICAgICAgICAgIHRpbWVfdG9f
cmVjb25maWd1cmVfKGZhbHNlLCBmYWxzZSksCiAgICAgICAgICAgZW5jb2Rlcl9pbml0c18oMCks
CiAgICAgICAgICAgbGFzdF9zZXRfYml0cmF0ZV9rYnBzXygwKSwKICAgICAgICAgICBzZW5kX3N0
cmVhbV8obnVsbHB0ciksCiAgICAgICAgICAgZnJhbWVfZ2VuZXJhdG9yXyhudWxscHRyKSwKLSAg
ICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfKHRoaXMpIHt9CisgICAgICAgICAgZW5jb2Rlcl9mYWN0
b3J5Xyh0aGlzKSwKKyAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XygKKyAgICAg
ICAgICAgICAgQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSkge30K
IAogICAgIGludDMyX3QgSW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBjb25maWcsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3QgbnVtYmVyX29mX2NvcmVzLApAQCAtNzY3LDggKzc3
MCw5IEBAIFRFU1RfRihDYWxsUGVyZlRlc3QsIE1BWUJFX0tlZXBzSGlnaEJpdHJhdGVXaGVuUmVj
b25maWd1cmluZ1NlbmRlcikgewogICAgICAgcmV0dXJuIEZha2VFbmNvZGVyOjpTZXRSYXRlQWxs
b2NhdGlvbihyYXRlX2FsbG9jYXRpb24sIGZyYW1lcmF0ZSk7CiAgICAgfQogCi0gICAgdm9pZCBN
b2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSBvdmVycmlkZSB7Ci0g
ICAgICBjb25maWctPmJpdHJhdGVfY29uZmlnLnN0YXJ0X2JpdHJhdGVfYnBzID0ga0luaXRpYWxC
aXRyYXRlS2JwcyAqIDEwMDA7CisgICAgdm9pZCBNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKAor
ICAgICAgICBCaXRyYXRlQ29uc3RyYWludHMqIGJpdHJhdGVfY29uZmlnKSBvdmVycmlkZSB7Cisg
ICAgICBiaXRyYXRlX2NvbmZpZy0+c3RhcnRfYml0cmF0ZV9icHMgPSBrSW5pdGlhbEJpdHJhdGVL
YnBzICogMTAwMDsKICAgICB9CiAKICAgICB2b2lkIE1vZGlmeVZpZGVvQ29uZmlncygKQEAgLTc3
Niw2ICs3ODAsOCBAQCBURVNUX0YoQ2FsbFBlcmZUZXN0LCBNQVlCRV9LZWVwc0hpZ2hCaXRyYXRl
V2hlblJlY29uZmlndXJpbmdTZW5kZXIpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9SZWNl
aXZlU3RyZWFtOjpDb25maWc+KiByZWNlaXZlX2NvbmZpZ3MsCiAgICAgICAgIFZpZGVvRW5jb2Rl
ckNvbmZpZyogZW5jb2Rlcl9jb25maWcpIG92ZXJyaWRlIHsKICAgICAgIHNlbmRfY29uZmlnLT5l
bmNvZGVyX3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9ICZlbmNvZGVyX2ZhY3RvcnlfOworICAg
ICAgc2VuZF9jb25maWctPmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9y
eSA9CisgICAgICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8uZ2V0KCk7CiAgICAgICBl
bmNvZGVyX2NvbmZpZy0+bWF4X2JpdHJhdGVfYnBzID0gMiAqIGtSZWNvbmZpZ3VyZVRocmVzaG9s
ZEticHMgKiAxMDAwOwogICAgICAgZW5jb2Rlcl9jb25maWctPnZpZGVvX3N0cmVhbV9mYWN0b3J5
ID0KICAgICAgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PFZpZGVvU3RyZWFtRmFjdG9y
eT4oKTsKQEAgLTgxMSw2ICs4MTcsNyBAQCBURVNUX0YoQ2FsbFBlcmZUZXN0LCBNQVlCRV9LZWVw
c0hpZ2hCaXRyYXRlV2hlblJlY29uZmlndXJpbmdTZW5kZXIpIHsKICAgICBWaWRlb1NlbmRTdHJl
YW0qIHNlbmRfc3RyZWFtXzsKICAgICB0ZXN0OjpGcmFtZUdlbmVyYXRvckNhcHR1cmVyKiBmcmFt
ZV9nZW5lcmF0b3JfOwogICAgIHRlc3Q6OlZpZGVvRW5jb2RlclByb3h5RmFjdG9yeSBlbmNvZGVy
X2ZhY3RvcnlfOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0
b3J5PiBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XzsKICAgICBWaWRlb0VuY29kZXJDb25maWcg
ZW5jb2Rlcl9jb25maWdfOwogICB9IHRlc3Q7CiAKQEAgLTg2NSw4ICs4NzIsOCBAQCB2b2lkIENh
bGxQZXJmVGVzdDo6VGVzdE1pbkF1ZGlvVmlkZW9CaXRyYXRlKAogICAgICAgICAgIG1heF9id2Vf
KG1heF9id2UpIHt9CiAKICAgIHByb3RlY3RlZDoKLSAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRp
b25Db25maWcgR2V0RmFrZU5ldHdvcmtQaXBlQ29uZmlnKCkgewotICAgICAgRGVmYXVsdE5ldHdv
cmtTaW11bGF0aW9uQ29uZmlnIHBpcGVfY29uZmlnOworICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZp
b3JDb25maWcgR2V0RmFrZU5ldHdvcmtQaXBlQ29uZmlnKCkgeworICAgICAgQnVpbHRJbk5ldHdv
cmtCZWhhdmlvckNvbmZpZyBwaXBlX2NvbmZpZzsKICAgICAgIHBpcGVfY29uZmlnLmxpbmtfY2Fw
YWNpdHlfa2JwcyA9IHRlc3RfYml0cmF0ZV9mcm9tXzsKICAgICAgIHJldHVybiBwaXBlX2NvbmZp
ZzsKICAgICB9CkBAIC05MDMsNyArOTEwLDcgQEAgdm9pZCBDYWxsUGVyZlRlc3Q6OlRlc3RNaW5B
dWRpb1ZpZGVvQml0cmF0ZSgKICAgICAgICAgICAgICAgID8gdGVzdF9iaXRyYXRlIDw9IHRlc3Rf
Yml0cmF0ZV90b18KICAgICAgICAgICAgICAgIDogdGVzdF9iaXRyYXRlID49IHRlc3RfYml0cmF0
ZV90b187CiAgICAgICAgICAgIHRlc3RfYml0cmF0ZSArPSB0ZXN0X2JpdHJhdGVfc3RlcF8pIHsK
LSAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIHBpcGVfY29uZmlnOworICAg
ICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIHBpcGVfY29uZmlnOwogICAgICAgICBw
aXBlX2NvbmZpZy5saW5rX2NhcGFjaXR5X2ticHMgPSB0ZXN0X2JpdHJhdGU7CiAgICAgICAgIHNl
bmRfc2ltdWxhdGVkX25ldHdvcmtfLT5TZXRDb25maWcocGlwZV9jb25maWcpOwogICAgICAgICBy
ZWNlaXZlX3NpbXVsYXRlZF9uZXR3b3JrXy0+U2V0Q29uZmlnKHBpcGVfY29uZmlnKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2Fs
bF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvY2FsbF91bml0dGVzdC5jYwppbmRleCA4YWUwNDAwOGY5Y2EzYmE4NGMyOTczZmYyY2Fk
YjEzMDFiYjE4YjY0Li43NzBmMjU1MzEzY2MxZDQ3Yjg5ODljNDNjMzEwMDg2MDVlMjBlMTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L2NhbGxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9jYWxsX3VuaXR0ZXN0LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAKICNpbmNs
dWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1
aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvZmFrZV9t
ZWRpYV90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX2F1ZGlvX21peGVyLmgi
CiAjaW5jbHVkZSAiYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW0uaCIKICNpbmNsdWRlICJhdWRp
by9hdWRpb19zZW5kX3N0cmVhbS5oIgpAQCAtNjIsNyArNjMsOCBAQCBURVNUKENhbGxUZXN0LCBD
b25zdHJ1Y3REZXN0cnVjdCkgewogCiBURVNUKENhbGxUZXN0LCBDcmVhdGVEZXN0cm95X0F1ZGlv
U2VuZFN0cmVhbSkgewogICBDYWxsSGVscGVyIGNhbGw7Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29u
ZmlnIGNvbmZpZyhudWxscHRyKTsKKyAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgY29uZmlnKC8q
c2VuZF90cmFuc3BvcnQ9Ki9udWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgY29uZmlnLnJ0cC5zc3JjID0gNDI7
CiAgIEF1ZGlvU2VuZFN0cmVhbSogc3RyZWFtID0gY2FsbC0+Q3JlYXRlQXVkaW9TZW5kU3RyZWFt
KGNvbmZpZyk7CiAgIEVYUEVDVF9ORShzdHJlYW0sIG51bGxwdHIpOwpAQCAtODQsNyArODYsOCBA
QCBURVNUKENhbGxUZXN0LCBDcmVhdGVEZXN0cm95X0F1ZGlvUmVjZWl2ZVN0cmVhbSkgewogCiBU
RVNUKENhbGxUZXN0LCBDcmVhdGVEZXN0cm95X0F1ZGlvU2VuZFN0cmVhbXMpIHsKICAgQ2FsbEhl
bHBlciBjYWxsOwotICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcobnVsbHB0cik7Cisg
IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGNvbmZpZygvKnNlbmRfdHJhbnNwb3J0PSovbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0PSov
bnVsbHB0cik7CiAgIHN0ZDo6bGlzdDxBdWRpb1NlbmRTdHJlYW0qPiBzdHJlYW1zOwogICBmb3Ig
KGludCBpID0gMDsgaSA8IDI7ICsraSkgewogICAgIGZvciAodWludDMyX3Qgc3NyYyA9IDA7IHNz
cmMgPCAxMjM0NTY3OyBzc3JjICs9IDM0NTY3KSB7CkBAIC0xNDIsNyArMTQ1LDggQEAgVEVTVChD
YWxsVGVzdCwgQ3JlYXRlRGVzdHJveV9Bc3NvY2lhdGVBdWRpb1NlbmRSZWNlaXZlU3RyZWFtc19S
ZWN2Rmlyc3QpIHsKICAgQXVkaW9SZWNlaXZlU3RyZWFtKiByZWN2X3N0cmVhbSA9IGNhbGwtPkNy
ZWF0ZUF1ZGlvUmVjZWl2ZVN0cmVhbShyZWN2X2NvbmZpZyk7CiAgIEVYUEVDVF9ORShyZWN2X3N0
cmVhbSwgbnVsbHB0cik7CiAKLSAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgc2VuZF9jb25maWco
bnVsbHB0cik7CisgIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIHNlbmRfY29uZmlnKC8qc2VuZF90
cmFuc3BvcnQ9Ki9udWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogICBzZW5kX2NvbmZpZy5ydHAuc3NyYyA9
IDc3NzsKICAgQXVkaW9TZW5kU3RyZWFtKiBzZW5kX3N0cmVhbSA9IGNhbGwtPkNyZWF0ZUF1ZGlv
U2VuZFN0cmVhbShzZW5kX2NvbmZpZyk7CiAgIEVYUEVDVF9ORShzZW5kX3N0cmVhbSwgbnVsbHB0
cik7CkBAIC0xNjAsNyArMTY0LDggQEAgVEVTVChDYWxsVGVzdCwgQ3JlYXRlRGVzdHJveV9Bc3Nv
Y2lhdGVBdWRpb1NlbmRSZWNlaXZlU3RyZWFtc19SZWN2Rmlyc3QpIHsKIAogVEVTVChDYWxsVGVz
dCwgQ3JlYXRlRGVzdHJveV9Bc3NvY2lhdGVBdWRpb1NlbmRSZWNlaXZlU3RyZWFtc19TZW5kRmly
c3QpIHsKICAgQ2FsbEhlbHBlciBjYWxsOwotICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBzZW5k
X2NvbmZpZyhudWxscHRyKTsKKyAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgc2VuZF9jb25maWco
LypzZW5kX3RyYW5zcG9ydD0qL251bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgIHNlbmRfY29uZmlnLnJ0
cC5zc3JjID0gNzc3OwogICBBdWRpb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtID0gY2FsbC0+Q3Jl
YXRlQXVkaW9TZW5kU3RyZWFtKHNlbmRfY29uZmlnKTsKICAgRVhQRUNUX05FKHNlbmRfc3RyZWFt
LCBudWxscHRyKTsKQEAgLTI2Myw3ICsyNjgsOCBAQCBURVNUKENhbGxUZXN0LCBSZWNyZWF0aW5n
QXVkaW9TdHJlYW1XaXRoU2FtZVNzcmNSZXVzZXNSdHBTdGF0ZSkgewogICBDYWxsSGVscGVyIGNh
bGw7CiAKICAgYXV0byBjcmVhdGVfc3RyZWFtX2FuZF9nZXRfcnRwX3N0YXRlID0gWyZdKHVpbnQz
Ml90IHNzcmMpIHsKLSAgICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcobnVsbHB0cik7
CisgICAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgY29uZmlnKC8qc2VuZF90cmFuc3BvcnQ9Ki9u
dWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5z
cG9ydD0qL251bGxwdHIpOwogICAgIGNvbmZpZy5ydHAuc3NyYyA9IHNzcmM7CiAgICAgQXVkaW9T
ZW5kU3RyZWFtKiBzdHJlYW0gPSBjYWxsLT5DcmVhdGVBdWRpb1NlbmRTdHJlYW0oY29uZmlnKTsK
ICAgICBjb25zdCBSdHBTdGF0ZSBydHBfc3RhdGUgPQpAQCAtMjg0LDQgKzI5MCwyNyBAQCBURVNU
KENhbGxUZXN0LCBSZWNyZWF0aW5nQXVkaW9TdHJlYW1XaXRoU2FtZVNzcmNSZXVzZXNSdHBTdGF0
ZSkgewogICBFWFBFQ1RfRVEocnRwX3N0YXRlMS5tZWRpYV9oYXNfYmVlbl9zZW50LCBydHBfc3Rh
dGUyLm1lZGlhX2hhc19iZWVuX3NlbnQpOwogfQogCitURVNUKENhbGxUZXN0LCBSZWdpc3Rlck1l
ZGlhVHJhbnNwb3J0Qml0cmF0ZUNhbGxiYWNrc0luQ3JlYXRlU3RyZWFtKSB7CisgIENhbGxIZWxw
ZXIgY2FsbDsKKyAgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyBzZXR0aW5nczsKKyAgd2VicnRjOjpG
YWtlTWVkaWFUcmFuc3BvcnQgZmFrZV9tZWRpYV90cmFuc3BvcnQoc2V0dGluZ3MpOworCisgIEVY
UEVDVF9FUSgwLCBmYWtlX21lZGlhX3RyYW5zcG9ydC50YXJnZXRfcmF0ZV9vYnNlcnZlcnNfc2l6
ZSgpKTsKKyAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgY29uZmlnKC8qc2VuZF90cmFuc3BvcnQ9
Ki9udWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFu
c3BvcnQ9Ki8mZmFrZV9tZWRpYV90cmFuc3BvcnQpOworCisgIGNhbGwtPk1lZGlhVHJhbnNwb3J0
Q2hhbmdlKCZmYWtlX21lZGlhX3RyYW5zcG9ydCk7CisgIEF1ZGlvU2VuZFN0cmVhbSogc3RyZWFt
ID0gY2FsbC0+Q3JlYXRlQXVkaW9TZW5kU3RyZWFtKGNvbmZpZyk7CisKKyAgLy8gV2UgZ2V0IDIg
c3Vic2NyaWJlcnM6IG9uZSBzdWJzY3JpYmVyIGZyb20gY2FsbC5jYywgYW5kIG9uZSBmcm9tCisg
IC8vIENoYW5uZWxTZW5kLgorICBFWFBFQ1RfRVEoMiwgZmFrZV9tZWRpYV90cmFuc3BvcnQudGFy
Z2V0X3JhdGVfb2JzZXJ2ZXJzX3NpemUoKSk7CisKKyAgY2FsbC0+RGVzdHJveUF1ZGlvU2VuZFN0
cmVhbShzdHJlYW0pOworICBFWFBFQ1RfRVEoMSwgZmFrZV9tZWRpYV90cmFuc3BvcnQudGFyZ2V0
X3JhdGVfb2JzZXJ2ZXJzX3NpemUoKSk7CisKKyAgY2FsbC0+TWVkaWFUcmFuc3BvcnRDaGFuZ2Uo
bnVsbHB0cik7CisgIEVYUEVDVF9FUSgwLCBmYWtlX21lZGlhX3RyYW5zcG9ydC50YXJnZXRfcmF0
ZV9vYnNlcnZlcnNfc2l6ZSgpKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxs
ZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvY2FsbGZhY3RvcnkuY2MKaW5kZXggZmE3ZDBmYWM2Njk2Mzc2Y2RjYzM5Y2U5ZWFmZDc5MWFh
NGY1ZWYxNi4uYWIwNTdiZTAyOGJiNWZjNGZlYTdjYjM2ODBmYzQxYTIzZTM1ODQzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxs
ZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL2NhbGxmYWN0b3J5LmNjCkBAIC0zMCw3ICszMCw3IEBAIGJvb2wgUGFyc2VDb25maWdQ
YXJhbShzdGQ6OnN0cmluZyBleHBfbmFtZSwgaW50KiBmaWVsZCkgewogICByZXR1cm4gKHNzY2Fu
Zihncm91cC5jX3N0cigpLCAiJWQiLCBmaWVsZCkgPT0gMSk7CiB9CiAKLWFic2w6Om9wdGlvbmFs
PHdlYnJ0Yzo6RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnPiBQYXJzZURlZ3JhZGF0aW9u
Q29uZmlnKAorYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29u
ZmlnPiBQYXJzZURlZ3JhZGF0aW9uQ29uZmlnKAogICAgIGJvb2wgc2VuZCkgewogICBzdGQ6OnN0
cmluZyBleHBfcHJlZml4ID0gIldlYlJUQ0Zha2VOZXR3b3JrIjsKICAgaWYgKHNlbmQpIHsKQEAg
LTM5LDcgKzM5LDcgQEAgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpEZWZhdWx0TmV0d29ya1NpbXVs
YXRpb25Db25maWc+IFBhcnNlRGVncmFkYXRpb25Db25maWcoCiAgICAgZXhwX3ByZWZpeCArPSAi
UmVjZWl2ZSI7CiAgIH0KIAotICB3ZWJydGM6OkRlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZp
ZyBjb25maWc7CisgIHdlYnJ0Yzo6QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBjb25maWc7
CiAgIGJvb2wgY29uZmlndXJlZCA9IGZhbHNlOwogICBjb25maWd1cmVkIHw9CiAgICAgICBQYXJz
ZUNvbmZpZ1BhcmFtKGV4cF9wcmVmaXggKyAiRGVsYXlNcyIsICZjb25maWcucXVldWVfZGVsYXlf
bXMpOwpAQCAtNjMsMTUgKzYzLDE1IEBAIGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6RGVmYXVsdE5l
dHdvcmtTaW11bGF0aW9uQ29uZmlnPiBQYXJzZURlZ3JhZGF0aW9uQ29uZmlnKAogICBjb25maWd1
cmVkIHw9IFBhcnNlQ29uZmlnUGFyYW0oZXhwX3ByZWZpeCArICJBdmdCdXJzdExvc3NMZW5ndGgi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbmZpZy5hdmdfYnVyc3RfbG9z
c19sZW5ndGgpOwogICByZXR1cm4gY29uZmlndXJlZAotICAgICAgICAgICAgID8gYWJzbDo6b3B0
aW9uYWw8d2VicnRjOjpEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc+KGNvbmZpZykKKyAg
ICAgICAgICAgICA/IGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6QnVpbHRJbk5ldHdvcmtCZWhhdmlv
ckNvbmZpZz4oY29uZmlnKQogICAgICAgICAgICAgIDogYWJzbDo6bnVsbG9wdDsKIH0KIH0gIC8v
IG5hbWVzcGFjZQogCiBDYWxsKiBDYWxsRmFjdG9yeTo6Q3JlYXRlQ2FsbChjb25zdCBDYWxsOjpD
b25maWcmIGNvbmZpZykgewotICBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkRlZmF1bHROZXR3b3Jr
U2ltdWxhdGlvbkNvbmZpZz4KLSAgICAgIHNlbmRfZGVncmFkYXRpb25fY29uZmlnID0gUGFyc2VE
ZWdyYWRhdGlvbkNvbmZpZyh0cnVlKTsKLSAgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpEZWZhdWx0
TmV0d29ya1NpbXVsYXRpb25Db25maWc+CisgIGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6QnVpbHRJ
bk5ldHdvcmtCZWhhdmlvckNvbmZpZz4gc2VuZF9kZWdyYWRhdGlvbl9jb25maWcgPQorICAgICAg
UGFyc2VEZWdyYWRhdGlvbkNvbmZpZyh0cnVlKTsKKyAgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpC
dWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnPgogICAgICAgcmVjZWl2ZV9kZWdyYWRhdGlvbl9j
b25maWcgPSBQYXJzZURlZ3JhZGF0aW9uQ29uZmlnKGZhbHNlKTsKIAogICBpZiAoc2VuZF9kZWdy
YWRhdGlvbl9jb25maWcgfHwgcmVjZWl2ZV9kZWdyYWRhdGlvbl9jb25maWcpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZGVncmFk
ZWRfY2FsbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvZGVncmFkZWRfY2FsbC5jYwppbmRleCA4MTgxMzEwZTc4Y2NiY2I3NzUyZTI5ZmEzMmU0MzFm
MDFkNTQwMDUwLi5hN2VmNDFkNDkwNTc5ZDI3NTgxZjZlNzU1NmMyOWEzYTYzMjdjYjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2Rl
Z3JhZGVkX2NhbGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9kZWdyYWRlZF9jYWxsLmNjCkBAIC0xNyw4ICsxNyw4IEBACiBuYW1lc3BhY2Ug
d2VicnRjIHsKIERlZ3JhZGVkQ2FsbDo6RGVncmFkZWRDYWxsKAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxDYWxsPiBjYWxsLAotICAgIGFic2w6Om9wdGlvbmFsPERlZmF1bHROZXR3b3JrU2ltdWxhdGlv
bkNvbmZpZz4gc2VuZF9jb25maWcsCi0gICAgYWJzbDo6b3B0aW9uYWw8RGVmYXVsdE5ldHdvcmtT
aW11bGF0aW9uQ29uZmlnPiByZWNlaXZlX2NvbmZpZykKKyAgICBhYnNsOjpvcHRpb25hbDxCdWls
dEluTmV0d29ya0JlaGF2aW9yQ29uZmlnPiBzZW5kX2NvbmZpZywKKyAgICBhYnNsOjpvcHRpb25h
bDxCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnPiByZWNlaXZlX2NvbmZpZykKICAgICA6IGNs
b2NrXyhDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpKSwKICAgICAgIGNhbGxfKHN0ZDo6bW92ZShj
YWxsKSksCiAgICAgICBzZW5kX2NvbmZpZ18oc2VuZF9jb25maWcpLApAQCAtMTgzLDYgKzE4Myw4
IEBAIGJvb2wgRGVncmFkZWRDYWxsOjpTZW5kUnRwKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwKICAg
ICBydGM6OlNlbnRQYWNrZXQgc2VudF9wYWNrZXQ7CiAgICAgc2VudF9wYWNrZXQucGFja2V0X2lk
ID0gb3B0aW9ucy5wYWNrZXRfaWQ7CiAgICAgc2VudF9wYWNrZXQuc2VuZF90aW1lX21zID0gY2xv
Y2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKTsKKyAgICBzZW50X3BhY2tldC5pbmZvLmluY2x1ZGVk
X2luX2ZlZWRiYWNrID0gb3B0aW9ucy5pbmNsdWRlZF9pbl9mZWVkYmFjazsKKyAgICBzZW50X3Bh
Y2tldC5pbmZvLmluY2x1ZGVkX2luX2FsbG9jYXRpb24gPSBvcHRpb25zLmluY2x1ZGVkX2luX2Fs
bG9jYXRpb247CiAgICAgc2VudF9wYWNrZXQuaW5mby5wYWNrZXRfc2l6ZV9ieXRlcyA9IGxlbmd0
aDsKICAgICBzZW50X3BhY2tldC5pbmZvLnBhY2tldF90eXBlID0gcnRjOjpQYWNrZXRUeXBlOjpr
RGF0YTsKICAgICBjYWxsXy0+T25TZW50UGFja2V0KHNlbnRfcGFja2V0KTsKQEAgLTIxMyw0ICsy
MTUsMTAgQEAgUGFja2V0UmVjZWl2ZXI6OkRlbGl2ZXJ5U3RhdHVzIERlZ3JhZGVkQ2FsbDo6RGVs
aXZlclBhY2tldCgKICAgcmV0dXJuIHN0YXR1czsKIH0KIAordm9pZCBEZWdyYWRlZENhbGw6Ok1l
ZGlhVHJhbnNwb3J0Q2hhbmdlKAorICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90
cmFuc3BvcnQpIHsKKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTcxOSkgV2Ugc2hvdWxkIGFk
ZCBzdXBwb3J0IGZvciBtZWRpYSB0cmFuc3BvcnQgaGVyZQorICAvLyBhdCBzb21lIHBvaW50Lgor
fQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2RlZ3JhZGVkX2NhbGwuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZGVncmFkZWRfY2FsbC5oCmlu
ZGV4IDNjMGI4MGRmODZhZDM1YWU5ZDIyZmEyMzk0MTdhZjNiZjlkNjk5NzYuLmQ3OGIxZDEwMjZj
ZmU4YjFlMTY1OGRiOThjNDc0Mjk5MzZlMjM4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZGVncmFkZWRfY2FsbC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZGVncmFkZWRfY2Fs
bC5oCkBAIC0yOCw4ICsyOCw4IEBAIGNsYXNzIERlZ3JhZGVkQ2FsbCA6IHB1YmxpYyBDYWxsLCBw
cml2YXRlIFRyYW5zcG9ydCwgcHJpdmF0ZSBQYWNrZXRSZWNlaXZlciB7CiAgcHVibGljOgogICBl
eHBsaWNpdCBEZWdyYWRlZENhbGwoCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbD4gY2FsbCwK
LSAgICAgIGFic2w6Om9wdGlvbmFsPERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZz4gc2Vu
ZF9jb25maWcsCi0gICAgICBhYnNsOjpvcHRpb25hbDxEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWc+IHJlY2VpdmVfY29uZmlnKTsKKyAgICAgIGFic2w6Om9wdGlvbmFsPEJ1aWx0SW5OZXR3
b3JrQmVoYXZpb3JDb25maWc+IHNlbmRfY29uZmlnLAorICAgICAgYWJzbDo6b3B0aW9uYWw8QnVp
bHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZz4gcmVjZWl2ZV9jb25maWcpOwogICB+RGVncmFkZWRD
YWxsKCkgb3ZlcnJpZGU7CiAKICAgLy8gSW1wbGVtZW50cyBDYWxsLgpAQCAtOTEsMTMgKzkxLDE0
IEBAIGNsYXNzIERlZ3JhZGVkQ2FsbCA6IHB1YmxpYyBDYWxsLCBwcml2YXRlIFRyYW5zcG9ydCwg
cHJpdmF0ZSBQYWNrZXRSZWNlaXZlciB7CiAgIENsb2NrKiBjb25zdCBjbG9ja187CiAgIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxDYWxsPiBjYWxsXzsKIAotICBjb25zdCBhYnNsOjpvcHRpb25hbDxE
ZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc+IHNlbmRfY29uZmlnXzsKKyAgdm9pZCBNZWRp
YVRyYW5zcG9ydENoYW5nZShNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0
KSBvdmVycmlkZTsKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8QnVpbHRJbk5ldHdvcmtCZWhhdmlv
ckNvbmZpZz4gc2VuZF9jb25maWdfOwogICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Ro
cmVhZD4gc2VuZF9wcm9jZXNzX3RocmVhZF87CiAgIFNpbXVsYXRlZE5ldHdvcmsqIHNlbmRfc2lt
dWxhdGVkX25ldHdvcmtfOwogICBzdGQ6OnVuaXF1ZV9wdHI8RmFrZU5ldHdvcmtQaXBlPiBzZW5k
X3BpcGVfOwogICBzaXplX3QgbnVtX3NlbmRfc3RyZWFtc187CiAKLSAgY29uc3QgYWJzbDo6b3B0
aW9uYWw8RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnPiByZWNlaXZlX2NvbmZpZ187Cisg
IGNvbnN0IGFic2w6Om9wdGlvbmFsPEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWc+IHJlY2Vp
dmVfY29uZmlnXzsKICAgU2ltdWxhdGVkTmV0d29yayogcmVjZWl2ZV9zaW11bGF0ZWRfbmV0d29y
a187CiAgIHN0ZDo6dW5pcXVlX3B0cjxGYWtlTmV0d29ya1BpcGU+IHJlY2VpdmVfcGlwZV87CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9mYWtlX25ldHdvcmtfcGlwZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NhbGwvZmFrZV9uZXR3b3JrX3BpcGUuY2MKaW5kZXggZTcwMmMxYjZmNWM3
ZWY4YjczODVjYWNkZGQwYzk0ODFkMjRhMDcxNy4uM2JkMmU4ZjQ4YjE2YTIyYzYxNDNmNWI2NzZl
ZDhlZjkyYjliOGQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2Zha2VfbmV0d29ya19waXBlLmNjCkBA
IC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAiY2FsbC9m
YWtlX25ldHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL3V0aWxpdHkvaW5jbHVkZS9wcm9jZXNzX3RocmVhZC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5j
bHVkZS9jbG9jay5oIgogCkBAIC05MCw3ICs5MSw2IEBAIEZha2VOZXR3b3JrUGlwZTo6RmFrZU5l
dHdvcmtQaXBlKAogICAgICAgZHJvcHBlZF9wYWNrZXRzXygwKSwKICAgICAgIHNlbnRfcGFja2V0
c18oMCksCiAgICAgICB0b3RhbF9wYWNrZXRfZGVsYXlfdXNfKDApLAotICAgICAgbmV4dF9wcm9j
ZXNzX3RpbWVfdXNfKGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkpLAogICAgICAgbGFzdF9s
b2dfdGltZV91c18oY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSkge30KIAogRmFrZU5ldHdv
cmtQaXBlOjpGYWtlTmV0d29ya1BpcGUoCkBAIC0xMDUsNyArMTA1LDYgQEAgRmFrZU5ldHdvcmtQ
aXBlOjpGYWtlTmV0d29ya1BpcGUoCiAgICAgICBkcm9wcGVkX3BhY2tldHNfKDApLAogICAgICAg
c2VudF9wYWNrZXRzXygwKSwKICAgICAgIHRvdGFsX3BhY2tldF9kZWxheV91c18oMCksCi0gICAg
ICBuZXh0X3Byb2Nlc3NfdGltZV91c18oY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSksCiAg
ICAgICBsYXN0X2xvZ190aW1lX3VzXyhjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSB7fQog
CiBGYWtlTmV0d29ya1BpcGU6On5GYWtlTmV0d29ya1BpcGUoKSA9IGRlZmF1bHQ7CkBAIC0xNTQs
OCArMTUzLDggQEAgYm9vbCBGYWtlTmV0d29ya1BpcGU6OkVucXVldWVQYWNrZXQocnRjOjpDb3B5
T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzX3J0Y3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRp
YVR5cGUgbWVkaWFfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFi
c2w6Om9wdGlvbmFsPGludDY0X3Q+IHBhY2tldF90aW1lX3VzKSB7Ci0gIGludDY0X3QgdGltZV9u
b3dfdXMgPSBjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOwogICBydGM6OkNyaXRTY29wZSBj
cml0KCZwcm9jZXNzX2xvY2tfKTsKKyAgaW50NjRfdCB0aW1lX25vd191cyA9IGNsb2NrXy0+VGlt
ZUluTWljcm9zZWNvbmRzKCk7CiAgIHNpemVfdCBwYWNrZXRfc2l6ZSA9IHBhY2tldC5zaXplKCk7
CiAgIE5ldHdvcmtQYWNrZXQgbmV0X3BhY2tldChzdGQ6Om1vdmUocGFja2V0KSwgdGltZV9ub3df
dXMsIHRpbWVfbm93X3VzLCBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNf
cnRjcCwgbWVkaWFfdHlwZSwgcGFja2V0X3RpbWVfdXMpOwpAQCAtMTY5LDYgKzE2OCwxMiBAQCBi
b29sIEZha2VOZXR3b3JrUGlwZTo6RW5xdWV1ZVBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVy
IHBhY2tldCwKICAgICBwYWNrZXRzX2luX2ZsaWdodF8ucG9wX2JhY2soKTsKICAgICArK2Ryb3Bw
ZWRfcGFja2V0c187CiAgIH0KKyAgaWYgKG5ldHdvcmtfYmVoYXZpb3JfLT5OZXh0RGVsaXZlcnlU
aW1lVXMoKSkgeworICAgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJnByb2Nlc3NfdGhyZWFkX2xvY2tf
KTsKKyAgICBpZiAocHJvY2Vzc190aHJlYWRfKQorICAgICAgcHJvY2Vzc190aHJlYWRfLT5XYWtl
VXAobnVsbHB0cik7CisgIH0KKwogICByZXR1cm4gc2VudDsKIH0KIApAQCAtMjAxLDEwICsyMDYs
MTEgQEAgc2l6ZV90IEZha2VOZXR3b3JrUGlwZTo6U2VudFBhY2tldHMoKSB7CiB9CiAKIHZvaWQg
RmFrZU5ldHdvcmtQaXBlOjpQcm9jZXNzKCkgewotICBpbnQ2NF90IHRpbWVfbm93X3VzID0gY2xv
Y2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsKKyAgaW50NjRfdCB0aW1lX25vd191czsKICAgc3Rk
OjpxdWV1ZTxOZXR3b3JrUGFja2V0PiBwYWNrZXRzX3RvX2RlbGl2ZXI7CiAgIHsKICAgICBydGM6
OkNyaXRTY29wZSBjcml0KCZwcm9jZXNzX2xvY2tfKTsKKyAgICB0aW1lX25vd191cyA9IGNsb2Nr
Xy0+VGltZUluTWljcm9zZWNvbmRzKCk7CiAgICAgaWYgKHRpbWVfbm93X3VzIC0gbGFzdF9sb2df
dGltZV91c18gPiBrTG9nSW50ZXJ2YWxNcyAqIDEwMDApIHsKICAgICAgIGludDY0X3QgcXVldWVp
bmdfZGVsYXlfdXMgPSAwOwogICAgICAgaWYgKCFwYWNrZXRzX2luX2ZsaWdodF8uZW1wdHkoKSkK
QEAgLTI1MCw5ICsyNTYsMTEgQEAgdm9pZCBGYWtlTmV0d29ya1BpcGU6OlByb2Nlc3MoKSB7CiAg
ICAgICAgIC8vIGFycml2ZWQsIGR1ZSB0byBOZXR3b3JrUHJvY2VzcyBiZWluZyBjYWxsZWQgdG9v
IGxhdGUuIEZvciBzdGF0cywgdXNlCiAgICAgICAgIC8vIHRoZSB0aW1lIGl0IHNob3VsZCBoYXZl
IGJlZW4gb24gdGhlIGxpbmsuCiAgICAgICAgIHRvdGFsX3BhY2tldF9kZWxheV91c18gKz0gYWRk
ZWRfZGVsYXlfdXM7CisgICAgICAgICsrc2VudF9wYWNrZXRzXzsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICsrZHJvcHBlZF9wYWNrZXRzXzsKICAgICAgIH0KICAgICB9Ci0gICAgc2VudF9wYWNr
ZXRzXyArPSBwYWNrZXRzX3RvX2RlbGl2ZXIuc2l6ZSgpOwogICB9CiAKICAgcnRjOjpDcml0U2Nv
cGUgY3JpdCgmY29uZmlnX2xvY2tfKTsKQEAgLTI2MSwxMCArMjY5LDYgQEAgdm9pZCBGYWtlTmV0
d29ya1BpcGU6OlByb2Nlc3MoKSB7CiAgICAgcGFja2V0c190b19kZWxpdmVyLnBvcCgpOwogICAg
IERlbGl2ZXJOZXR3b3JrUGFja2V0KCZwYWNrZXQpOwogICB9Ci0gIGFic2w6Om9wdGlvbmFsPGlu
dDY0X3Q+IGRlbGl2ZXJ5X3VzID0gbmV0d29ya19iZWhhdmlvcl8tPk5leHREZWxpdmVyeVRpbWVV
cygpOwotICBuZXh0X3Byb2Nlc3NfdGltZV91c18gPSBkZWxpdmVyeV91cwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPyAqZGVsaXZlcnlfdXMKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogdGltZV9ub3dfdXMgKyBrRGVmYXVsdFByb2Nlc3NJbnRlcnZhbE1zICogMTAwMDsK
IH0KIAogdm9pZCBGYWtlTmV0d29ya1BpcGU6OkRlbGl2ZXJOZXR3b3JrUGFja2V0KE5ldHdvcmtQ
YWNrZXQqIHBhY2tldCkgewpAQCAtMjkxLDggKzI5NSwxNyBAQCB2b2lkIEZha2VOZXR3b3JrUGlw
ZTo6RGVsaXZlck5ldHdvcmtQYWNrZXQoTmV0d29ya1BhY2tldCogcGFja2V0KSB7CiAKIGludDY0
X3QgRmFrZU5ldHdvcmtQaXBlOjpUaW1lVW50aWxOZXh0UHJvY2VzcygpIHsKICAgcnRjOjpDcml0
U2NvcGUgY3JpdCgmcHJvY2Vzc19sb2NrXyk7Ci0gIGludDY0X3QgZGVsYXlfdXMgPSBuZXh0X3By
b2Nlc3NfdGltZV91c18gLSBjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOwotICByZXR1cm4g
c3RkOjptYXg8aW50NjRfdD4oKGRlbGF5X3VzICsgNTAwKSAvIDEwMDAsIDApOworICBhYnNsOjpv
cHRpb25hbDxpbnQ2NF90PiBkZWxpdmVyeV91cyA9IG5ldHdvcmtfYmVoYXZpb3JfLT5OZXh0RGVs
aXZlcnlUaW1lVXMoKTsKKyAgaWYgKGRlbGl2ZXJ5X3VzKSB7CisgICAgaW50NjRfdCBkZWxheV91
cyA9ICpkZWxpdmVyeV91cyAtIGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCk7CisgICAgcmV0
dXJuIHN0ZDo6bWF4PGludDY0X3Q+KChkZWxheV91cyArIDUwMCkgLyAxMDAwLCAwKTsKKyAgfQor
ICByZXR1cm4ga0RlZmF1bHRQcm9jZXNzSW50ZXJ2YWxNczsKK30KKwordm9pZCBGYWtlTmV0d29y
a1BpcGU6OlByb2Nlc3NUaHJlYWRBdHRhY2hlZChQcm9jZXNzVGhyZWFkKiBwcm9jZXNzX3RocmVh
ZCkgeworICBydGM6OkNyaXRTY29wZSBjcygmcHJvY2Vzc190aHJlYWRfbG9ja18pOworICBwcm9j
ZXNzX3RocmVhZF8gPSBwcm9jZXNzX3RocmVhZDsKIH0KIAogYm9vbCBGYWtlTmV0d29ya1BpcGU6
Okhhc1RyYW5zcG9ydCgpIGNvbnN0IHsKQEAgLTMxNiwzMSArMzI5LDggQEAgdm9pZCBGYWtlTmV0
d29ya1BpcGU6OlJlc2V0U3RhdHMoKSB7CiAgIHRvdGFsX3BhY2tldF9kZWxheV91c18gPSAwOwog
fQogCi12b2lkIEZha2VOZXR3b3JrUGlwZTo6QWRkVG9QYWNrZXREcm9wQ291bnQoKSB7Ci0gIHJ0
Yzo6Q3JpdFNjb3BlIGNyaXQoJnByb2Nlc3NfbG9ja18pOwotICArK2Ryb3BwZWRfcGFja2V0c187
Ci19Ci0KLXZvaWQgRmFrZU5ldHdvcmtQaXBlOjpBZGRUb1BhY2tldFNlbnRDb3VudChpbnQgY291
bnQpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3JpdCgmcHJvY2Vzc19sb2NrXyk7Ci0gIHNlbnRfcGFj
a2V0c18gKz0gY291bnQ7Ci19Ci0KLXZvaWQgRmFrZU5ldHdvcmtQaXBlOjpBZGRUb1RvdGFsRGVs
YXkoaW50IGRlbGF5X3VzKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJnByb2Nlc3NfbG9ja18p
OwotICB0b3RhbF9wYWNrZXRfZGVsYXlfdXNfICs9IGRlbGF5X3VzOwotfQotCiBpbnQ2NF90IEZh
a2VOZXR3b3JrUGlwZTo6R2V0VGltZUluTWljcm9zZWNvbmRzKCkgY29uc3QgewogICByZXR1cm4g
Y2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsKIH0KIAotYm9vbCBGYWtlTmV0d29ya1BpcGU6
OlNob3VsZFByb2Nlc3MoaW50NjRfdCB0aW1lX25vd191cykgY29uc3QgewotICByZXR1cm4gdGlt
ZV9ub3dfdXMgPj0gbmV4dF9wcm9jZXNzX3RpbWVfdXNfOwotfQotCi12b2lkIEZha2VOZXR3b3Jr
UGlwZTo6U2V0VGltZVRvTmV4dFByb2Nlc3MoaW50NjRfdCBza2lwX3VzKSB7Ci0gIG5leHRfcHJv
Y2Vzc190aW1lX3VzXyArPSBza2lwX3VzOwotfQotCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L2Zha2VfbmV0d29ya19waXBlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jYWxsL2Zha2VfbmV0d29ya19waXBlLmgKaW5kZXggZjg1ZTgyZWZjNWVlNDZlZGM0
MGE5ZDEwZTVkYzlhMjY0MmYwZjk2Ni4uYjFiNGNlZTE0ZDBlNjFkMTAxOTI3Yzk0ZTliN2I0ZTU4
MThmYjcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZmFrZV9uZXR3b3JrX3BpcGUuaApAQCAtMjMsNyAr
MjMsNiBAQAogI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsYXRlZF9uZXR3b3JrLmgiCiAjaW5jbHVk
ZSAiY2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfcGFja2V0X3JlY2VpdmVy
LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkK
ICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRp
b25zLmgiCkBAIC0xNDAsNiArMTM5LDcgQEAgY2xhc3MgRmFrZU5ldHdvcmtQaXBlIDogcHVibGlj
IHdlYnJ0Yzo6U2ltdWxhdGVkUGFja2V0UmVjZWl2ZXJJbnRlcmZhY2UsCiAgIC8vIHBhY2tldHMg
cmVhZHkgdG8gYmUgZGVsaXZlcmVkLgogICB2b2lkIFByb2Nlc3MoKSBvdmVycmlkZTsKICAgaW50
NjRfdCBUaW1lVW50aWxOZXh0UHJvY2VzcygpIG92ZXJyaWRlOworICB2b2lkIFByb2Nlc3NUaHJl
YWRBdHRhY2hlZChQcm9jZXNzVGhyZWFkKiBwcm9jZXNzX3RocmVhZCkgb3ZlcnJpZGU7CiAKICAg
Ly8gR2V0IHN0YXRpc3RpY3MuCiAgIGZsb2F0IFBlcmNlbnRhZ2VMb3NzKCk7CkBAIC0xNTAsOSAr
MTUwLDYgQEAgY2xhc3MgRmFrZU5ldHdvcmtQaXBlIDogcHVibGljIHdlYnJ0Yzo6U2ltdWxhdGVk
UGFja2V0UmVjZWl2ZXJJbnRlcmZhY2UsCiAKICBwcm90ZWN0ZWQ6CiAgIHZvaWQgRGVsaXZlclBh
Y2tldFdpdGhMb2NrKE5ldHdvcmtQYWNrZXQqIHBhY2tldCk7Ci0gIHZvaWQgQWRkVG9QYWNrZXRE
cm9wQ291bnQoKTsKLSAgdm9pZCBBZGRUb1BhY2tldFNlbnRDb3VudChpbnQgY291bnQpOwotICB2
b2lkIEFkZFRvVG90YWxEZWxheShpbnQgZGVsYXlfdXMpOwogICBpbnQ2NF90IEdldFRpbWVJbk1p
Y3Jvc2Vjb25kcygpIGNvbnN0OwogICBib29sIFNob3VsZFByb2Nlc3MoaW50NjRfdCB0aW1lX25v
d191cykgY29uc3Q7CiAgIHZvaWQgU2V0VGltZVRvTmV4dFByb2Nlc3MoaW50NjRfdCBza2lwX3Vz
KTsKQEAgLTE5Nyw2ICsxOTQsOSBAQCBjbGFzcyBGYWtlTmV0d29ya1BpcGUgOiBwdWJsaWMgd2Vi
cnRjOjpTaW11bGF0ZWRQYWNrZXRSZWNlaXZlckludGVyZmFjZSwKICAgLy8gcHJvY2Vzc2VzLCBz
dWNoIGFzIHRoZSBwYWNrZXQgcXVldWVzLgogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBwcm9jZXNz
X2xvY2tfOwogCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHByb2Nlc3NfdGhyZWFkX2xvY2tfOwor
ICBQcm9jZXNzVGhyZWFkKiBwcm9jZXNzX3RocmVhZF8gUlRDX0dVQVJERURfQlkocHJvY2Vzc190
aHJlYWRfbG9ja18pID0gbnVsbHB0cjsKKwogICAvLyBQYWNrZXRzICBhcmUgYWRkZWQgYXQgdGhl
IGJhY2sgb2YgdGhlIGRlcXVlLCB0aGlzIG1ha2VzIHRoZSBkZXF1ZSBvcmRlcmVkCiAgIC8vIGJ5
IGluY3JlYXNpbmcgc2VuZCB0aW1lLiBUaGUgY29tbW9uIGNhc2Ugd2hlbiByZW1vdmluZyBwYWNr
ZXRzIGZyb20gdGhlCiAgIC8vIGRlcXVlIGlzIHJlbW92aW5nIGVhcmx5IHBhY2tldHMsIHdoaWNo
IHdpbGwgYmUgY2xvc2UgdG8gdGhlIGZyb250IG9mIHRoZQpAQCAtMjEwLDkgKzIxMCw2IEBAIGNs
YXNzIEZha2VOZXR3b3JrUGlwZSA6IHB1YmxpYyB3ZWJydGM6OlNpbXVsYXRlZFBhY2tldFJlY2Vp
dmVySW50ZXJmYWNlLAogICBzaXplX3QgZHJvcHBlZF9wYWNrZXRzXyBSVENfR1VBUkRFRF9CWShw
cm9jZXNzX2xvY2tfKTsKICAgc2l6ZV90IHNlbnRfcGFja2V0c18gUlRDX0dVQVJERURfQlkocHJv
Y2Vzc19sb2NrXyk7CiAgIGludDY0X3QgdG90YWxfcGFja2V0X2RlbGF5X3VzXyBSVENfR1VBUkRF
RF9CWShwcm9jZXNzX2xvY2tfKTsKLQotICBpbnQ2NF90IG5leHRfcHJvY2Vzc190aW1lX3VzXzsK
LQogICBpbnQ2NF90IGxhc3RfbG9nX3RpbWVfdXNfOwogCiAgIFJUQ19ESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oRmFrZU5ldHdvcmtQaXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZmxleGZlY19yZWNlaXZlX3N0cmVhbS5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZmxleGZlY19y
ZWNlaXZlX3N0cmVhbS5jYwppbmRleCBhYjEzODM2OGJhMGVhOTk4MTY2YzZhOWY5MjIyNmU2ZDg0
ZDI5OGRhLi5hYjZkZGUzN2I0NmQ3NjljZGQ5Y2I2ZTMxZDFjY2EzNTVmZjg1ZGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2ZsZXhm
ZWNfcmVjZWl2ZV9zdHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC9mbGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmNjCkBAIC0xMCw2ICsxMCw4
IEBACiAKICNpbmNsdWRlICJjYWxsL2ZsZXhmZWNfcmVjZWl2ZV9zdHJlYW0uaCIKIAorI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogRmxleGZlY1Jl
Y2VpdmVTdHJlYW06OkNvbmZpZzo6Q29uZmlnKFRyYW5zcG9ydCogcnRjcF9zZW5kX3RyYW5zcG9y
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvZmxleGZlY19yZWNlaXZlX3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mbGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmgKaW5kZXggY2Nj
MzAxNDMwZTg0NGEzODhiZGNhODE3OWYyMmI0ODAwODFjZDdkMy4uOTQ5YWQ3NDJhYTAzZjY2ZDcy
MWFiNTBiODc1ZTFiY2JhZjViM2EyOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mbGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mbGV4ZmVjX3Jl
Y2VpdmVfc3RyZWFtLmgKQEAgLTEyLDcgKzEyLDYgQEAKICNkZWZpbmUgQ0FMTF9GTEVYRkVDX1JF
Q0VJVkVfU1RSRUFNX0hfCiAKICNpbmNsdWRlIDxzdGRpbnQuaD4KLQogI2luY2x1ZGUgPHN0cmlu
Zz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAgLTIwLDcgKzE5LDYgQEAKICNpbmNsdWRlICJhcGkv
cnRwX2hlYWRlcnMuaCIKICNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgogI2luY2x1ZGUg
ImNhbGwvcnRwX3BhY2tldF9zaW5rX2ludGVyZmFjZS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBl
cy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L3BhY2tldF9yZWNlaXZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9wYWNrZXRfcmVjZWl2ZXIuaAppbmRleCBmMDVlNDA5ZDc5ZDEzNmM5OGMwODJk
NTA5Y2Y5MDZkMzdkNzU2YTA2Li4wMmEwMTU1MGRlZjY1MjM0YTg5NDE3NjY4ZDc4NGM1NTVjYzZi
MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL3BhY2tldF9yZWNlaXZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcGFja2V0X3JlY2VpdmVyLmgKQEAgLTE2LDcgKzE2LDYgQEAK
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvbWVkaWF0eXBlcy5oIgotI2luY2x1
ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3Jh
bXB1cF90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvcmFtcHVwX3Rlc3RzLmNjCmluZGV4IDhlYjQ1MWFjMDRmNzNhN2I4NWFlYmM4MmVmZmU0
MGI3YjE1Njk5OWIuLjk3MzU0MjFmMzBlYzUxY2IwZWJjNWY2MWU1NmZjZWQwNTI1ZGU2MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
cmFtcHVwX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvcmFtcHVwX3Rlc3RzLmNjCkBAIC0xMSw3ICsxMSw5IEBACiAjaW5jbHVkZSAi
Y2FsbC9yYW1wdXBfdGVzdHMuaCIKIAogI2luY2x1ZGUgImNhbGwvZmFrZV9uZXR3b3JrX3BpcGUu
aCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvb3V0cHV0L3J0Y19ldmVudF9sb2df
b3V0cHV0X2ZpbGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9mbGFncy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdl
bmNvZGUuaCIKQEAgLTM4LDYgKzQwLDEwIEBAIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBHZW5lcmF0
ZVNzcmNzKHNpemVfdCBudW1fc3RyZWFtcywgdWludDMyX3Qgc3NyY19vZmZzZXQpIHsKIH0KIH0g
IC8vIG5hbWVzcGFjZQogCitXRUJSVENfREVGSU5FX3N0cmluZyhyYW1wX2R1bXBfbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIkZpbGVuYW1lIGZv
ciBkdW1wZWQgcmVjZWl2ZWQgUlRQIHN0cmVhbS4iKTsKKwogUmFtcFVwVGVzdGVyOjpSYW1wVXBU
ZXN0ZXIoc2l6ZV90IG51bV92aWRlb19zdHJlYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG51bV9hdWRpb19zdHJlYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG51bV9mbGV4ZmVjX3N0cmVhbXMsCkBAIC00OCw3ICs1NCw2IEBAIFJhbXBVcFRlc3Rl
cjo6UmFtcFVwVGVzdGVyKHNpemVfdCBudW1fdmlkZW9fc3RyZWFtcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBy
ZXBvcnRfcGVyZl9zdGF0cykKICAgICA6IEVuZFRvRW5kVGVzdCh0ZXN0OjpDYWxsVGVzdDo6a0xv
bmdUaW1lb3V0TXMpLAotICAgICAgc3RvcF9ldmVudF8oZmFsc2UsIGZhbHNlKSwKICAgICAgIGNs
b2NrXyhDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpKSwKICAgICAgIG51bV92aWRlb19zdHJlYW1z
XyhudW1fdmlkZW9fc3RyZWFtcyksCiAgICAgICBudW1fYXVkaW9fc3RyZWFtc18obnVtX2F1ZGlv
X3N0cmVhbXMpLApAQCAtNzksMTEgKzg0LDEyIEBAIFJhbXBVcFRlc3Rlcjo6UmFtcFVwVGVzdGVy
KHNpemVfdCBudW1fdmlkZW9fc3RyZWFtcywKIAogUmFtcFVwVGVzdGVyOjp+UmFtcFVwVGVzdGVy
KCkge30KIAotdm9pZCBSYW1wVXBUZXN0ZXI6Ok1vZGlmeVNlbmRlckNhbGxDb25maWcoQ2FsbDo6
Q29uZmlnKiBjb25maWcpIHsKK3ZvaWQgUmFtcFVwVGVzdGVyOjpNb2RpZnlTZW5kZXJCaXRyYXRl
Q29uZmlnKAorICAgIEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIHsKICAgaWYg
KHN0YXJ0X2JpdHJhdGVfYnBzXyAhPSAwKSB7Ci0gICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5z
dGFydF9iaXRyYXRlX2JwcyA9IHN0YXJ0X2JpdHJhdGVfYnBzXzsKKyAgICBiaXRyYXRlX2NvbmZp
Zy0+c3RhcnRfYml0cmF0ZV9icHMgPSBzdGFydF9iaXRyYXRlX2Jwc187CiAgIH0KLSAgY29uZmln
LT5iaXRyYXRlX2NvbmZpZy5taW5fYml0cmF0ZV9icHMgPSAxMDAwMDsKKyAgYml0cmF0ZV9jb25m
aWctPm1pbl9iaXRyYXRlX2JwcyA9IDEwMDAwOwogfQogCiB2b2lkIFJhbXBVcFRlc3Rlcjo6T25W
aWRlb1N0cmVhbXNDcmVhdGVkKApAQCAtNDQ4LDggKzQ1NCw5IEBAIHZvaWQgUmFtcFVwRG93blVw
VGVzdGVyOjpQb2xsU3RhdHMoKSB7CiAgIH0gd2hpbGUgKCFzdG9wX2V2ZW50Xy5XYWl0KGtQb2xs
SW50ZXJ2YWxNcykpOwogfQogCi12b2lkIFJhbXBVcERvd25VcFRlc3Rlcjo6TW9kaWZ5UmVjZWl2
ZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSB7Ci0gIGNvbmZpZy0+Yml0cmF0ZV9j
b25maWcubWluX2JpdHJhdGVfYnBzID0gMTAwMDA7Cit2b2lkIFJhbXBVcERvd25VcFRlc3Rlcjo6
TW9kaWZ5UmVjZWl2ZXJCaXRyYXRlQ29uZmlnKAorICAgIEJpdHJhdGVDb25zdHJhaW50cyogYml0
cmF0ZV9jb25maWcpIHsKKyAgYml0cmF0ZV9jb25maWctPm1pbl9iaXRyYXRlX2JwcyA9IDEwMDAw
OwogfQogCiBzdGQ6OnN0cmluZyBSYW1wVXBEb3duVXBUZXN0ZXI6OkdldE1vZGlmaWVyU3RyaW5n
KCkgY29uc3QgewpAQCAtNTY2LDcgKzU3MywyMyBAQCB2b2lkIFJhbXBVcERvd25VcFRlc3Rlcjo6
RXZvbHZlVGVzdFN0YXRlKGludCBiaXRyYXRlX2JwcywgYm9vbCBzdXNwZW5kZWQpIHsKIAogY2xh
c3MgUmFtcFVwVGVzdCA6IHB1YmxpYyB0ZXN0OjpDYWxsVGVzdCB7CiAgcHVibGljOgotICBSYW1w
VXBUZXN0KCkge30KKyAgUmFtcFVwVGVzdCgpIHsKKyAgICBzdGQ6OnN0cmluZyBkdW1wX25hbWUo
RkxBR19yYW1wX2R1bXBfbmFtZSk7CisgICAgaWYgKCFkdW1wX25hbWUuZW1wdHkoKSkgeworICAg
ICAgc2VuZF9ldmVudF9sb2dfID0gUnRjRXZlbnRMb2c6OkNyZWF0ZShSdGNFdmVudExvZzo6RW5j
b2RpbmdUeXBlOjpMZWdhY3kpOworICAgICAgcmVjdl9ldmVudF9sb2dfID0gUnRjRXZlbnRMb2c6
OkNyZWF0ZShSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpMZWdhY3kpOworICAgICAgYm9vbCBl
dmVudF9sb2dfc3RhcnRlZCA9CisgICAgICAgICAgc2VuZF9ldmVudF9sb2dfLT5TdGFydExvZ2dp
bmcoCisgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nT3V0cHV0Rmls
ZT4oCisgICAgICAgICAgICAgICAgICBkdW1wX25hbWUgKyAiLnNlbmQucnRjLmRhdCIsIFJ0Y0V2
ZW50TG9nOjprVW5saW1pdGVkT3V0cHV0KSwKKyAgICAgICAgICAgICAgUnRjRXZlbnRMb2c6OmtJ
bW1lZGlhdGVPdXRwdXQpICYmCisgICAgICAgICAgcmVjdl9ldmVudF9sb2dfLT5TdGFydExvZ2dp
bmcoCisgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nT3V0cHV0Rmls
ZT4oCisgICAgICAgICAgICAgICAgICBkdW1wX25hbWUgKyAiLnJlY3YucnRjLmRhdCIsIFJ0Y0V2
ZW50TG9nOjprVW5saW1pdGVkT3V0cHV0KSwKKyAgICAgICAgICAgICAgUnRjRXZlbnRMb2c6OmtJ
bW1lZGlhdGVPdXRwdXQpOworICAgICAgUlRDX0RDSEVDSyhldmVudF9sb2dfc3RhcnRlZCk7Cisg
ICAgfQorICB9CiB9OwogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qga1N0YXJ0Qml0cmF0ZUJwcyA9
IDYwMDAwOwpAQCAtNjY3LDEzICs2OTAsNyBAQCBURVNUX0YoUmFtcFVwVGVzdCwgVHJhbnNwb3J0
U2VxdWVuY2VOdW1iZXJTaW11bGNhc3RSZWRSdHgpIHsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwog
fQogCi0vLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84ODc4KQotI2lmIGRlZmluZWQoV0VCUlRDX01B
QykKLSNkZWZpbmUgTUFZQkVfQXVkaW9UcmFuc3BvcnRTZXF1ZW5jZU51bWJlciBESVNBQkxFRF9B
dWRpb1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyCi0jZWxzZQotI2RlZmluZSBNQVlCRV9BdWRpb1Ry
YW5zcG9ydFNlcXVlbmNlTnVtYmVyIEF1ZGlvVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIKLSNlbmRp
ZgotVEVTVF9GKFJhbXBVcFRlc3QsIE1BWUJFX0F1ZGlvVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIp
IHsKK1RFU1RfRihSYW1wVXBUZXN0LCBBdWRpb1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKSB7CiAg
IFJhbXBVcFRlc3RlciB0ZXN0KDAsIDEsIDAsIDMwMDAwMCwgMTAwMDAsCiAgICAgICAgICAgICAg
ICAgICAgIFJ0cEV4dGVuc2lvbjo6a1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyVXJpLCBmYWxzZSwg
ZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmFtcHVwX3Rlc3RzLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JhbXB1cF90ZXN0
cy5oCmluZGV4IDZjYzY1Y2UyYTIyNDM0ODhlYzkxYTVkZTNjMzM3YWUzMTVmOTA5OTcuLmI3ZDRh
ZjVmNWE4ODk4ZmFmYTBiNmIzYTEzNDU3MDZjYjgyYzk3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmFtcHVwX3Rlc3RzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yYW1wdXBf
dGVzdHMuaApAQCAtNjcsNyArNjcsNyBAQCBjbGFzcyBSYW1wVXBUZXN0ZXIgOiBwdWJsaWMgdGVz
dDo6RW5kVG9FbmRUZXN0IHsKIAogICBydGM6OkV2ZW50IHN0b3BfZXZlbnRfOwogICBDbG9jayog
Y29uc3QgY2xvY2tfOwotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgZm9yd2FyZF90
cmFuc3BvcnRfY29uZmlnXzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBmb3J3YXJk
X3RyYW5zcG9ydF9jb25maWdfOwogICBjb25zdCBzaXplX3QgbnVtX3ZpZGVvX3N0cmVhbXNfOwog
ICBjb25zdCBzaXplX3QgbnVtX2F1ZGlvX3N0cmVhbXNfOwogICBjb25zdCBzaXplX3QgbnVtX2Zs
ZXhmZWNfc3RyZWFtc187CkBAIC04Myw3ICs4Myw3IEBAIGNsYXNzIFJhbXBVcFRlc3RlciA6IHB1
YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QgewogICB0eXBlZGVmIHN0ZDo6bWFwPHVpbnQzMl90LCB1
aW50MzJfdD4gU3NyY01hcDsKICAgY2xhc3MgVmlkZW9TdHJlYW1GYWN0b3J5OwogCi0gIHZvaWQg
TW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZykgb3ZlcnJpZGU7Cisg
IHZvaWQgTW9kaWZ5U2VuZGVyQml0cmF0ZUNvbmZpZyhCaXRyYXRlQ29uc3RyYWludHMqIGJpdHJh
dGVfY29uZmlnKSBvdmVycmlkZTsKICAgdm9pZCBPblZpZGVvU3RyZWFtc0NyZWF0ZWQoCiAgICAg
ICBWaWRlb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtLAogICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
VmlkZW9SZWNlaXZlU3RyZWFtKj4mIHJlY2VpdmVfc3RyZWFtcykgb3ZlcnJpZGU7CkBAIC0xNDIs
NyArMTQyLDcgQEAgY2xhc3MgUmFtcFVwRG93blVwVGVzdGVyIDogcHVibGljIFJhbXBVcFRlc3Rl
ciB7CiAgICAga1RyYW5zaXRpb25Ub05leHRTdGF0ZSwKICAgfTsKIAotICB2b2lkIE1vZGlmeVJl
Y2VpdmVyQ2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZyk7CisgIHZvaWQgTW9kaWZ5UmVj
ZWl2ZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIG92
ZXJyaWRlOwogCiAgIHN0ZDo6c3RyaW5nIEdldE1vZGlmaWVyU3RyaW5nKCkgY29uc3Q7CiAgIGlu
dCBHZXRFeHBlY3RlZEhpZ2hCaXRyYXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVfdGltZV9jYWxjdWxh
dG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9y
ZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5jYwppbmRleCAxNmM2YTQzY2MzZmZjMDU0OTI5MTZhMTk0
NjA0YWY1ZGM3ZmMxZmYyLi5iNzA1NjczMmU4YjY1YTg4MjJjOTFhYzVmZDU2ZDUxYzk0MTZkMzhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL3JlY2VpdmVfdGltZV9jYWxjdWxhdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuY2MKQEAg
LTksNTkgKzksMTEyIEBACiAgKi8KIAogI2luY2x1ZGUgImNhbGwvcmVjZWl2ZV90aW1lX2NhbGN1
bGF0b3IuaCIKKworI2luY2x1ZGUgPHN0cmluZz4KKwogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9u
dW1lcmljcy9zYWZlX21pbm1heC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRl
L2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKLXVzaW5n
IDo6d2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lOwogdXNpbmcgOjp3ZWJydGM6OmZp
ZWxkX3RyaWFsOjpJc0VuYWJsZWQ7CiAKLWNvbnN0IGNoYXIga0J3ZVJlY2VpdmVUaW1lQ29ycmVj
dGlvbltdID0gIldlYlJUQy1Cd2VSZWNlaXZlVGltZUNvcnJlY3Rpb24iOworY29uc3QgY2hhciBr
QndlUmVjZWl2ZVRpbWVDb3JyZWN0aW9uW10gPSAiV2ViUlRDLUJ3ZS1SZWNlaXZlVGltZUZpeCI7
CiB9ICAvLyBuYW1lc3BhY2UKIAotUmVjZWl2ZVRpbWVDYWxjdWxhdG9yOjpSZWNlaXZlVGltZUNh
bGN1bGF0b3IoaW50NjRfdCBtaW5fZGVsdGFfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG1heF9kZWx0YV9kaWZmX21zKQotICAgIDogbWlu
X2RlbHRhX3VzXyhtaW5fZGVsdGFfbXMgKiAxMDAwKSwKLSAgICAgIG1heF9kZWx0YV9kaWZmX3Vz
XyhtYXhfZGVsdGFfZGlmZl9tcyAqIDEwMDApIHt9CitSZWNlaXZlVGltZUNhbGN1bGF0b3JDb25m
aWc6OlJlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZygpCisgICAgOiBtYXhfcGFja2V0X3RpbWVf
cmVwYWlyKCJtYXhyZXAiLCBUaW1lRGVsdGE6Om1zKDIwMDApKSwKKyAgICAgIHN0YWxsX3RocmVz
aG9sZCgic3RhbGwiLCBUaW1lRGVsdGE6Om1zKDUpKSwKKyAgICAgIHRvbGVyYW5jZSgidG9sIiwg
VGltZURlbHRhOjptcygxKSksCisgICAgICBtYXhfc3RhbGwoIm1heHN0YWxsIiwgVGltZURlbHRh
OjpzZWNvbmRzKDUpKSB7CisgIHN0ZDo6c3RyaW5nIHRyaWFsX3N0cmluZyA9CisgICAgICBmaWVs
ZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtCd2VSZWNlaXZlVGltZUNvcnJlY3Rpb24pOworICBQYXJz
ZUZpZWxkVHJpYWwoCisgICAgICB7Jm1heF9wYWNrZXRfdGltZV9yZXBhaXIsICZzdGFsbF90aHJl
c2hvbGQsICZ0b2xlcmFuY2UsICZtYXhfc3RhbGx9LAorICAgICAgdHJpYWxfc3RyaW5nKTsKK30K
K1JlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZzo6UmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmln
KAorICAgIGNvbnN0IFJlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZyYpID0gZGVmYXVsdDsKK1Jl
Y2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZzo6flJlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZygp
ID0gZGVmYXVsdDsKKworUmVjZWl2ZVRpbWVDYWxjdWxhdG9yOjpSZWNlaXZlVGltZUNhbGN1bGF0
b3IoKQorICAgIDogY29uZmlnXyhSZWNlaXZlVGltZUNhbGN1bGF0b3JDb25maWcoKSkge30KIAog
c3RkOjp1bmlxdWVfcHRyPFJlY2VpdmVUaW1lQ2FsY3VsYXRvcj4KIFJlY2VpdmVUaW1lQ2FsY3Vs
YXRvcjo6Q3JlYXRlRnJvbUZpZWxkVHJpYWwoKSB7CiAgIGlmICghSXNFbmFibGVkKGtCd2VSZWNl
aXZlVGltZUNvcnJlY3Rpb24pKQogICAgIHJldHVybiBudWxscHRyOwotICBpbnQgbWluLCBtYXg7
Ci0gIGlmIChzc2NhbmYoRmluZEZ1bGxOYW1lKGtCd2VSZWNlaXZlVGltZUNvcnJlY3Rpb24pLmNf
c3RyKCksICJFbmFibGVkLCVkLCVkIiwKLSAgICAgICAgICAgICAmbWluLCAmbWF4KSAhPSAyKSB7
Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiSW52YWxpZCBudW1iZXIgb2YgcGFyYW1ldGVy
cyBwcm92aWRlZC4iOwotICAgIHJldHVybiBudWxscHRyOwotICB9Ci0gIHJldHVybiBhYnNsOjpt
YWtlX3VuaXF1ZTxSZWNlaXZlVGltZUNhbGN1bGF0b3I+KG1pbiwgbWF4KTsKKyAgcmV0dXJuIGFi
c2w6Om1ha2VfdW5pcXVlPFJlY2VpdmVUaW1lQ2FsY3VsYXRvcj4oKTsKIH0KIAotaW50NjRfdCBS
ZWNlaXZlVGltZUNhbGN1bGF0b3I6OlJlY29uY2lsZVJlY2VpdmVUaW1lcyhpbnQ2NF90IHBhY2tl
dF90aW1lX3VzXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50NjRfdCBzYWZlX3RpbWVfdXNfKSB7Ci0gIGlmICghcmVjZWl2ZV90aW1lX29m
ZnNldF91c18pIHsKLSAgICByZWNlaXZlX3RpbWVfb2Zmc2V0X3VzXyA9IHNhZmVfdGltZV91c18g
LSBwYWNrZXRfdGltZV91c187Ci0gIH0gZWxzZSB7Ci0gICAgaW50NjRfdCBzYWZlX2RlbHRhX3Vz
ID0gc2FmZV90aW1lX3VzXyAtIGxhc3Rfc2FmZV90aW1lX3VzXzsKLSAgICBpbnQ2NF90IHBhY2tl
dF9kZWx0YV91c18gPSBwYWNrZXRfdGltZV91c18gLSBsYXN0X3BhY2tldF90aW1lX3VzXzsKLSAg
ICBpbnQ2NF90IGRlbHRhX2RpZmYgPSBwYWNrZXRfZGVsdGFfdXNfIC0gc2FmZV9kZWx0YV91czsK
LSAgICAvLyBQYWNrZXQgdGltZSBzaG91bGQgbm90IGRlY3JlYXNlIHNpZ25pZmljYW50bHksIGEg
bGFyZ2UgZGVjcmVhc2UgaW5kaWNhdGVzCi0gICAgLy8gYSByZXNldCBvZiB0aGUgcGFja2V0IHRp
bWUgY2xvY2sgYW5kIHdlIHNob3VsZCByZXNldCB0aGUgb2ZmZXN0Ci0gICAgLy8gcGFyYW1ldGVy
LiBUaGUgc2FmZSByZWZlcmVuY2UgdGltZSBjYW4gaW5jcmVhc2UgaW4gbGFyZ2UganVtcHMgaWYg
dGhlCi0gICAgLy8gdGhyZWFkIG1lYXN1cmluZyBpdCBpcyBiYWNrZ3JvdW5kZWQgZm9yIGxvbmdl
ciBwZXJpb2RzLiBCdXQgaWYgdGhlIHBhY2tldAotICAgIC8vIHRpbWUgaW5jcmVhc2VzIHNpZ25p
ZmljYW50bHkgbW9yZSB0aGFuIHRoZSBzYWZlIHRpbWUsIGl0IGluZGljYXRlcyBhCi0gICAgLy8g
Y2xvY2sgcmVzZXQgYW5kIHdlIHNob3VsZCByZXNldCB0aGUgb2Zmc2V0LgotCi0gICAgaWYgKHBh
Y2tldF9kZWx0YV91c18gPCBtaW5fZGVsdGFfdXNfIHx8IGRlbHRhX2RpZmYgPiBtYXhfZGVsdGFf
ZGlmZl91c18pIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlJlY2VpdmVkIGEgY2xv
Y2sganVtcCBvZiAiIDw8IGRlbHRhX2RpZmYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
IiByZXNldHRpbmcgb2Zmc2V0IjsKLSAgICAgIHJlY2VpdmVfdGltZV9vZmZzZXRfdXNfID0gc2Fm
ZV90aW1lX3VzXyAtIHBhY2tldF90aW1lX3VzXzsKK2ludDY0X3QgUmVjZWl2ZVRpbWVDYWxjdWxh
dG9yOjpSZWNvbmNpbGVSZWNlaXZlVGltZXMoaW50NjRfdCBwYWNrZXRfdGltZV91cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBz
eXN0ZW1fdGltZV91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBzYWZlX3RpbWVfdXMpIHsKKyAgaW50NjRfdCBzdGFsbF90aW1l
X3VzID0gc3lzdGVtX3RpbWVfdXMgLSBwYWNrZXRfdGltZV91czsKKyAgaWYgKHRvdGFsX3N5c3Rl
bV90aW1lX3Bhc3NlZF91c18gPCBjb25maWdfLnN0YWxsX3RocmVzaG9sZC0+dXMoKSkgeworICAg
IHN0YWxsX3RpbWVfdXMgPSBydGM6OlNhZmVNaW4oc3RhbGxfdGltZV91cywgY29uZmlnXy5tYXhf
c3RhbGwtPnVzKCkpOworICB9CisgIGludDY0X3QgY29ycmVjdGVkX3RpbWVfdXMgPSBzYWZlX3Rp
bWVfdXMgLSBzdGFsbF90aW1lX3VzOworCisgIGlmIChsYXN0X3BhY2tldF90aW1lX3VzXyA9PSAt
MSAmJiBzdGFsbF90aW1lX3VzIDwgMCkgeworICAgIHN0YXRpY19jbG9ja19vZmZzZXRfdXNfID0g
c3RhbGxfdGltZV91czsKKyAgICBjb3JyZWN0ZWRfdGltZV91cyArPSBzdGF0aWNfY2xvY2tfb2Zm
c2V0X3VzXzsKKyAgfSBlbHNlIGlmIChsYXN0X3BhY2tldF90aW1lX3VzXyA+IDApIHsKKyAgICAv
LyBBbGwgcmVwYWlycyBkZXBlbmQgb24gdmFyaWFibGVzIGJlaW5nIGludGlhbGl6ZWQKKyAgICBp
bnQ2NF90IHBhY2tldF90aW1lX2RlbHRhX3VzID0gcGFja2V0X3RpbWVfdXMgLSBsYXN0X3BhY2tl
dF90aW1lX3VzXzsKKyAgICBpbnQ2NF90IHN5c3RlbV90aW1lX2RlbHRhX3VzID0gc3lzdGVtX3Rp
bWVfdXMgLSBsYXN0X3N5c3RlbV90aW1lX3VzXzsKKyAgICBpbnQ2NF90IHNhZmVfdGltZV9kZWx0
YV91cyA9IHNhZmVfdGltZV91cyAtIGxhc3Rfc2FmZV90aW1lX3VzXzsKKworICAgIC8vIFJlcGFp
ciBiYWNrd2FyZHMgY2xvY2sgcmVzZXRzIGR1cmluZyBpbml0aWFsIHN0YWxsLiBJbiB0aGlzIGNh
c2UsIHRoZQorICAgIC8vIHJlc2V0IGlzIG9ic2VydmVkIG9ubHkgaW4gcGFja2V0IHRpbWUgYnV0
IG5ldmVyIGluIHN5c3RlbSB0aW1lLgorICAgIGlmIChzeXN0ZW1fdGltZV9kZWx0YV91cyA8IDAp
CisgICAgICB0b3RhbF9zeXN0ZW1fdGltZV9wYXNzZWRfdXNfICs9IGNvbmZpZ18uc3RhbGxfdGhy
ZXNob2xkLT51cygpOworICAgIGVsc2UKKyAgICAgIHRvdGFsX3N5c3RlbV90aW1lX3Bhc3NlZF91
c18gKz0gc3lzdGVtX3RpbWVfZGVsdGFfdXM7CisgICAgaWYgKHBhY2tldF90aW1lX2RlbHRhX3Vz
IDwgMCAmJgorICAgICAgICB0b3RhbF9zeXN0ZW1fdGltZV9wYXNzZWRfdXNfIDwgY29uZmlnXy5z
dGFsbF90aHJlc2hvbGQtPnVzKCkpIHsKKyAgICAgIHN0YXRpY19jbG9ja19vZmZzZXRfdXNfIC09
IHBhY2tldF90aW1lX2RlbHRhX3VzOworICAgIH0KKyAgICBjb3JyZWN0ZWRfdGltZV91cyArPSBz
dGF0aWNfY2xvY2tfb2Zmc2V0X3VzXzsKKworICAgIC8vIERldGVjdCByZXNldHMgaW5iZXR3ZWVu
IGNsb2NrIHJlYWRpbmdzIGluIHNvY2tldCBhbmQgYXBwLgorICAgIGJvb2wgZm9yd2FyZF9jbG9j
a19yZXNldCA9CisgICAgICAgIGNvcnJlY3RlZF90aW1lX3VzICsgY29uZmlnXy50b2xlcmFuY2Ut
PnVzKCkgPCBsYXN0X2NvcnJlY3RlZF90aW1lX3VzXzsKKyAgICBib29sIG9idmlvdXNfYmFja3dh
cmRfY2xvY2tfcmVzZXQgPSBzeXN0ZW1fdGltZV91cyA8IHBhY2tldF90aW1lX3VzOworCisgICAg
Ly8gSGFyZGVyIGNhc2Ugd2l0aCBiYWNrd2FyZCBjbG9jayByZXNldCBkdXJpbmcgc3RhbGwsIHRo
ZSByZXNldCBiZWluZworICAgIC8vIHNtYWxsZXIgdGhhbiB0aGUgc3RhbGwuIENvbXBlbnNhdGUg
dGhyb3VnaG91dCB0aGUgc3RhbGwuCisgICAgYm9vbCBzbWFsbF9iYWNrd2FyZF9jbG9ja19yZXNl
dCA9CisgICAgICAgICFvYnZpb3VzX2JhY2t3YXJkX2Nsb2NrX3Jlc2V0ICYmCisgICAgICAgIHNh
ZmVfdGltZV9kZWx0YV91cyA+IHN5c3RlbV90aW1lX2RlbHRhX3VzICsgY29uZmlnXy50b2xlcmFu
Y2UtPnVzKCk7CisgICAgYm9vbCBzdGFsbF9zdGFydCA9CisgICAgICAgIHBhY2tldF90aW1lX2Rl
bHRhX3VzID49IDAgJiYKKyAgICAgICAgc3lzdGVtX3RpbWVfZGVsdGFfdXMgPiBwYWNrZXRfdGlt
ZV9kZWx0YV91cyArIGNvbmZpZ18udG9sZXJhbmNlLT51cygpOworICAgIGJvb2wgc3RhbGxfaXNf
b3ZlciA9IHNhZmVfdGltZV9kZWx0YV91cyA+IGNvbmZpZ18uc3RhbGxfdGhyZXNob2xkLT51cygp
OworICAgIGJvb2wgcGFja2V0X3RpbWVfY2F1Z2h0X3VwID0KKyAgICAgICAgcGFja2V0X3RpbWVf
ZGVsdGFfdXMgPCAwICYmIHN5c3RlbV90aW1lX2RlbHRhX3VzID49IDA7CisgICAgaWYgKHN0YWxs
X3N0YXJ0ICYmIHNtYWxsX2JhY2t3YXJkX2Nsb2NrX3Jlc2V0KQorICAgICAgc21hbGxfcmVzZXRf
ZHVyaW5nX3N0YWxsXyA9IHRydWU7CisgICAgZWxzZSBpZiAoc3RhbGxfaXNfb3ZlciB8fCBwYWNr
ZXRfdGltZV9jYXVnaHRfdXApCisgICAgICBzbWFsbF9yZXNldF9kdXJpbmdfc3RhbGxfID0gZmFs
c2U7CisKKyAgICAvLyBJZiByZXNldHMgYXJlIGRldGVjdGVkLCBhZHZhbmNlIHRpbWUgYnkgKGNh
cHBlZCkgcGFja2V0IHRpbWUgaW5jcmVhc2UuCisgICAgaWYgKGZvcndhcmRfY2xvY2tfcmVzZXQg
fHwgb2J2aW91c19iYWNrd2FyZF9jbG9ja19yZXNldCB8fAorICAgICAgICBzbWFsbF9yZXNldF9k
dXJpbmdfc3RhbGxfKSB7CisgICAgICBjb3JyZWN0ZWRfdGltZV91cyA9IGxhc3RfY29ycmVjdGVk
X3RpbWVfdXNfICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpTYWZlQ2xhbXAocGFj
a2V0X3RpbWVfZGVsdGFfdXMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbmZpZ18ubWF4X3BhY2tldF90aW1lX3JlcGFpci0+dXMoKSk7CiAgICAgfQogICB9
Ci0gIGxhc3RfcGFja2V0X3RpbWVfdXNfID0gcGFja2V0X3RpbWVfdXNfOwotICBsYXN0X3NhZmVf
dGltZV91c18gPSBzYWZlX3RpbWVfdXNfOwotICByZXR1cm4gcGFja2V0X3RpbWVfdXNfICsgKnJl
Y2VpdmVfdGltZV9vZmZzZXRfdXNfOworCisgIGxhc3RfY29ycmVjdGVkX3RpbWVfdXNfID0gY29y
cmVjdGVkX3RpbWVfdXM7CisgIGxhc3RfcGFja2V0X3RpbWVfdXNfID0gcGFja2V0X3RpbWVfdXM7
CisgIGxhc3Rfc3lzdGVtX3RpbWVfdXNfID0gc3lzdGVtX3RpbWVfdXM7CisgIGxhc3Rfc2FmZV90
aW1lX3VzXyA9IHNhZmVfdGltZV91czsKKyAgcmV0dXJuIGNvcnJlY3RlZF90aW1lX3VzOwogfQor
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVfdGltZV9jYWxjdWxhdG9yLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVfdGlt
ZV9jYWxjdWxhdG9yLmgKaW5kZXggYTgyMTdjZDEwMTI1OWY4YjM4MWFkYjA4MjI3OWQ4Mzc1ZGMy
MWYxNC4uMjY5ZDRlZjkxMDA5MDg0ZDIwZGMwNGYwMDEwMjQyNjA4MGM0MjY3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yZWNlaXZl
X3RpbWVfY2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuaApAQCAtMTAsMTMgKzEwLDI0
IEBACiAjaWZuZGVmIENBTExfUkVDRUlWRV9USU1FX0NBTENVTEFUT1JfSF8KICNkZWZpbmUgQ0FM
TF9SRUNFSVZFX1RJTUVfQ0FMQ1VMQVRPUl9IXwogCi0jaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8bWVtb3J5PgogCi0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCitzdHJ1Y3QgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnIHsKKyAgUmVj
ZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnKCk7CisgIFJlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZp
Zyhjb25zdCBSZWNlaXZlVGltZUNhbGN1bGF0b3JDb25maWcmKTsKKyAgUmVjZWl2ZVRpbWVDYWxj
dWxhdG9yQ29uZmlnJiBvcGVyYXRvcj0oY29uc3QgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmln
JikgPQorICAgICAgZGVmYXVsdDsKKyAgflJlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZygpOwor
ICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4gbWF4X3BhY2tldF90aW1lX3JlcGFpcjsK
KyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IHN0YWxsX3RocmVzaG9sZDsKKyAgRmll
bGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IHRvbGVyYW5jZTsKKyAgRmllbGRUcmlhbFBhcmFt
ZXRlcjxUaW1lRGVsdGE+IG1heF9zdGFsbDsKK307CisKIC8vIFRoZSByZWNlaXZlIHRpbWUgY2Fs
Y3VsYXRvciBzZXJ2ZXMgdGhlIHB1cnBvc2Ugb2YgY29tYmluaW5nIHBhY2tldCB0aW1lCiAvLyBz
dGFtcHMgd2l0aCBhIHNhZmVseSBpbmNyZW1lbnRhbCBjbG9jay4gVGhpcyBhc3N1bWVzIHRoYXQg
dGhlIHBhY2tldCB0aW1lCiAvLyBzdGFtcHMgYXJlIGJhc2VkIG9uIGxvd2VyIGxheWVyIHRpbWVz
dGFtcHMgdGhhdCBoYXZlIG1vcmUgYWNjdXJhdGUgdGltZQpAQCAtMjgsMjAgKzM5LDIwIEBAIG5h
bWVzcGFjZSB3ZWJydGMgewogY2xhc3MgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yIHsKICBwdWJsaWM6
CiAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVjZWl2ZVRpbWVDYWxjdWxhdG9yPiBDcmVhdGVG
cm9tRmllbGRUcmlhbCgpOwotICAvLyBUaGUgbWluIGRlbHRhIGlzIHVzZWQgdG8gY29ycmVjdCBm
b3IganVtcHMgYmFja3dhcmRzIGluIHRpbWUsIHRvIGFsbG93IHNvbWUKLSAgLy8gcGFja2V0IHJl
b3JkZXJpbmcgYSBzbWFsbCBuZWdhdGl2ZSB2YWx1ZSBpcyBhcHByb3ByaWF0ZSB0byB1c2UuIFRo
ZSBtYXgKLSAgLy8gZGVsdGEgZGlmZmVyZW5jZSBpcyB1c2VkIGFzIG1hcmdpbiB3aGVuIGRldGVj
dGluZyB3aGVuIHBhY2tldCB0aW1lCi0gIC8vIGluY3JlYXNlcyBtb3JlIHRoYW4gdGhlIHNhZmUg
Y2xvY2suIFRoaXMgc2hvdWxkIGJlIGxhcmdlciB0aGFuIHRoZSBsYXJnZXN0Ci0gIC8vIGV4cGVj
dGVkIHN5c210ZW0gaW5kdWNlZCBkZWxheSBpbiB0aGUgc2FmZSBjbG9jayB0aW1lc3RhbXAuCi0g
IFJlY2VpdmVUaW1lQ2FsY3VsYXRvcihpbnQ2NF90IG1pbl9kZWx0YV9tcywgaW50NjRfdCBtYXhf
ZGVsdGFfZGlmZl9tcyk7Ci0gIGludDY0X3QgUmVjb25jaWxlUmVjZWl2ZVRpbWVzKGludDY0X3Qg
cGFja2V0X3RpbWVfdXNfLCBpbnQ2NF90IHNhZmVfdGltZV91c18pOworICBSZWNlaXZlVGltZUNh
bGN1bGF0b3IoKTsKKyAgaW50NjRfdCBSZWNvbmNpbGVSZWNlaXZlVGltZXMoaW50NjRfdCBwYWNr
ZXRfdGltZV91c18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qgc3lz
dGVtX3RpbWVfdXNfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNh
ZmVfdGltZV91c18pOwogCiAgcHJpdmF0ZToKLSAgY29uc3QgaW50NjRfdCBtaW5fZGVsdGFfdXNf
OwotICBjb25zdCBpbnQ2NF90IG1heF9kZWx0YV9kaWZmX3VzXzsKLSAgYWJzbDo6b3B0aW9uYWw8
aW50NjRfdD4gcmVjZWl2ZV90aW1lX29mZnNldF91c187Ci0gIGludDY0X3QgbGFzdF9wYWNrZXRf
dGltZV91c18gPSAwOwotICBpbnQ2NF90IGxhc3Rfc2FmZV90aW1lX3VzXyA9IDA7CisgIGludDY0
X3QgbGFzdF9jb3JyZWN0ZWRfdGltZV91c18gPSAtMTsKKyAgaW50NjRfdCBsYXN0X3BhY2tldF90
aW1lX3VzXyA9IC0xOworICBpbnQ2NF90IGxhc3Rfc3lzdGVtX3RpbWVfdXNfID0gLTE7CisgIGlu
dDY0X3QgbGFzdF9zYWZlX3RpbWVfdXNfID0gLTE7CisgIGludDY0X3QgdG90YWxfc3lzdGVtX3Rp
bWVfcGFzc2VkX3VzXyA9IDA7CisgIGludDY0X3Qgc3RhdGljX2Nsb2NrX29mZnNldF91c18gPSAw
OworICBpbnQ2NF90IHNtYWxsX3Jlc2V0X2R1cmluZ19zdGFsbF8gPSBmYWxzZTsKKyAgUmVjZWl2
ZVRpbWVDYWxjdWxhdG9yQ29uZmlnIGNvbmZpZ187CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwogI2VuZGlmICAvLyBDQUxMX1JFQ0VJVkVfVElNRV9DQUxDVUxBVE9SX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVf
dGltZV9jYWxjdWxhdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvcl91bml0dGVzdC5jYwpp
bmRleCA5MmQ1YTI3OWVhZTExMjQyYjc4NmI3N2MxNWZlNDI1ZWRmYTI5YmEyLi4zOGVmNTRlY2U3
OTQxMTJjYzlkYWQ4MTVjMjRiNDk1MTNjNzBkM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVfdGltZV9jYWxjdWxhdG9y
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3JfdW5pdHRlc3QuY2MKQEAgLTEwLDY1ICsx
MCwyMzcgQEAKIAogI2luY2x1ZGUgImNhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuaCIKIAor
I2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDx0dXBs
ZT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
KyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcmFu
ZG9tLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAidGVzdC9n
dGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIG5hbWVzcGFj
ZSB7CiAKLWludDY0X3QgUmVjb25jaWxlTXMoUmVjZWl2ZVRpbWVDYWxjdWxhdG9yKiBjYWxjLAot
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX21zLAotICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IHNhZmVfdGltZV9tcykgewotICByZXR1cm4gY2FsYy0+UmVjb25jaWxl
UmVjZWl2ZVRpbWVzKHBhY2tldF90aW1lX21zICogMTAwMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzYWZlX3RpbWVfbXMgKiAxMDAwKSAvCi0gICAgICAgICAxMDAwOwot
fQotfSAgLy8gbmFtZXNwYWNlCitjbGFzcyBFbXVsYXRlZENsb2NrIHsKKyBwdWJsaWM6CisgIGV4
cGxpY2l0IEVtdWxhdGVkQ2xvY2soaW50IHNlZWQsIGZsb2F0IGRyaWZ0ID0gMC4wZikKKyAgICAg
IDogcmFuZG9tXyhzZWVkKSwgY2xvY2tfdXNfKHJhbmRvbV8uUmFuZDx1aW50MzJfdD4oKSksIGRy
aWZ0XyhkcmlmdCkge30KKyAgdmlydHVhbCB+RW11bGF0ZWRDbG9jaygpID0gZGVmYXVsdDsKKyAg
aW50NjRfdCBHZXRDbG9ja1VzKCkgY29uc3QgeyByZXR1cm4gY2xvY2tfdXNfOyB9CiAKLVRFU1Qo
UmVjZWl2ZVRpbWVDYWxjdWxhdG9yVGVzdCwgVXNlc1NtYWxsZXJJbmNyZW1lbnRzKSB7Ci0gIGlu
dDY0X3Qga01pbkRlbHRhTXMgPSAtMjA7Ci0gIGludDY0X3Qga01heERlbHRhRGlmZk1zID0gMTAw
OwotICBSZWNlaXZlVGltZUNhbGN1bGF0b3IgY2FsYyhrTWluRGVsdGFNcywga01heERlbHRhRGlm
Zk1zKTsKLSAgLy8gSW5pdGlhbGl6ZSBvZmZzZXQuCi0gIFJlY29uY2lsZU1zKCZjYWxjLCAxMDAw
MCwgMjAwMDApOwotCi0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAwMTAsIDIwMTAw
KSwgMjAwMTApOwotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMDIwLCAyMDEwMCks
IDIwMDIwKTsKLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDAzMCwgMjAxMDApLCAy
MDAzMCk7Ci0KLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDExMCwgMjAyMDApLCAy
MDExMCk7Ci0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAxMjAsIDIwMjAwKSwgMjAx
MjApOwotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMTMwLCAyMDIwMCksIDIwMTMw
KTsKLQotICAvLyBTbWFsbCBqdW1wcyBiYWNrd2FyZHMgYXJlIGxldCB0cm91Z2gsIHRoZXkgbWln
aHQgYmUgZHVlIHRvIHJlb3JkZXJpbmcuCi0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywg
MTAxMjAsIDIwMjAwKSwgMjAxMjApOwotICAvLyBUaGUgc2FmZSBjbG9jayBtaWdodCBiZSBzbWFs
bGVyIHRoYW4gdGhlIHBhY2tldCBjbG9jay4KLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxj
LCAxMDIxMCwgMjAyMDApLCAyMDIxMCk7Ci0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywg
MTAyNDAsIDIwMjAwKSwgMjAyNDApOwotfQorIHByb3RlY3RlZDoKKyAgaW50NjRfdCBVcGRhdGVD
bG9jayhpbnQ2NF90IHRpbWVfdXMpIHsKKyAgICBpZiAoIWxhc3RfcXVlcnlfdXNfKQorICAgICAg
bGFzdF9xdWVyeV91c18gPSB0aW1lX3VzOworICAgIGludDY0X3Qgc2tpcF91cyA9IHRpbWVfdXMg
LSAqbGFzdF9xdWVyeV91c187CisgICAgYWNjdW11bGF0ZWRfZHJpZnRfdXNfICs9IHNraXBfdXMg
KiBkcmlmdF87CisgICAgaW50NjRfdCBkcmlmdF9jb3JyZWN0aW9uX3VzID0gc3RhdGljX2Nhc3Q8
aW50NjRfdD4oYWNjdW11bGF0ZWRfZHJpZnRfdXNfKTsKKyAgICBhY2N1bXVsYXRlZF9kcmlmdF91
c18gLT0gZHJpZnRfY29ycmVjdGlvbl91czsKKyAgICBjbG9ja191c18gKz0gc2tpcF91cyArIGRy
aWZ0X2NvcnJlY3Rpb25fdXM7CisgICAgbGFzdF9xdWVyeV91c18gPSB0aW1lX3VzOworICAgIHJl
dHVybiBza2lwX3VzOworICB9CisgIFJhbmRvbSByYW5kb21fOwogCi1URVNUKFJlY2VpdmVUaW1l
Q2FsY3VsYXRvclRlc3QsIENvcnJlY3RzSnVtcHMpIHsKLSAgaW50NjRfdCBrTWluRGVsdGFNcyA9
IC0yMDsKLSAgaW50NjRfdCBrTWF4RGVsdGFEaWZmTXMgPSAxMDA7Ci0gIFJlY2VpdmVUaW1lQ2Fs
Y3VsYXRvciBjYWxjKGtNaW5EZWx0YU1zLCBrTWF4RGVsdGFEaWZmTXMpOwotICAvLyBJbml0aWFs
aXplIG9mZnNldC4KLSAgUmVjb25jaWxlTXMoJmNhbGMsIDEwMDAwLCAyMDAwMCk7Ci0KLSAgRVhQ
RUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDAxMCwgMjAxMDApLCAyMDAxMCk7Ci0gIEVYUEVD
VF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAwMjAsIDIwMTAwKSwgMjAwMjApOwotICBFWFBFQ1Rf
RVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMDMwLCAyMDEwMCksIDIwMDMwKTsKLQotICAvLyBKdW1w
IGZvcndhcmQgaW4gdGltZS4KLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDI0MCwg
MjAyMDApLCAyMDIwMCk7Ci0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAyNTAsIDIw
MjAwKSwgMjAyMTApOwotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMjYwLCAyMDIw
MCksIDIwMjIwKTsKLQotICAvLyBKdW1wIGJhY2t3YXJkIGluIHRpbWUuCi0gIEVYUEVDVF9FUShS
ZWNvbmNpbGVNcygmY2FsYywgMTAyMzAsIDIwMzAwKSwgMjAzMDApOwotICBFWFBFQ1RfRVEoUmVj
b25jaWxlTXMoJmNhbGMsIDEwMjQwLCAyMDMwMCksIDIwMzEwKTsKLSAgRVhQRUNUX0VRKFJlY29u
Y2lsZU1zKCZjYWxjLCAxMDI1MCwgMjAzMDApLCAyMDMyMCk7Ci19CisgcHJpdmF0ZToKKyAgaW50
NjRfdCBjbG9ja191c187CisgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGxhc3RfcXVlcnlfdXNf
OworICBmbG9hdCBkcmlmdF87CisgIGZsb2F0IGFjY3VtdWxhdGVkX2RyaWZ0X3VzXyA9IDA7Cit9
OwogCi19ICAvLyBuYW1lc3BhY2UgdGVzdAorY2xhc3MgRW11bGF0ZWRNb25vdG9uZW91c0Nsb2Nr
IDogcHVibGljIEVtdWxhdGVkQ2xvY2sgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgRW11bGF0ZWRN
b25vdG9uZW91c0Nsb2NrKGludCBzZWVkKSA6IEVtdWxhdGVkQ2xvY2soc2VlZCkge30KKyAgfkVt
dWxhdGVkTW9ub3RvbmVvdXNDbG9jaygpID0gZGVmYXVsdDsKKworICBpbnQ2NF90IFF1ZXJ5KGlu
dDY0X3QgdGltZV91cykgeworICAgIGludDY0X3Qgc2tpcF91cyA9IFVwZGF0ZUNsb2NrKHRpbWVf
dXMpOworCisgICAgLy8gSW4gYSBzdGFsbAorICAgIGlmIChzdGFsbF9yZWNvdmVyeV90aW1lX3Vz
XyA+IDApIHsKKyAgICAgIGlmIChHZXRDbG9ja1VzKCkgPiBzdGFsbF9yZWNvdmVyeV90aW1lX3Vz
XykgeworICAgICAgICBzdGFsbF9yZWNvdmVyeV90aW1lX3VzXyA9IDA7CisgICAgICAgIHJldHVy
biBHZXRDbG9ja1VzKCk7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gc3RhbGxfcmVj
b3ZlcnlfdGltZV91c187CisgICAgICB9CisgICAgfQorCisgICAgLy8gQ2hlY2sgaWYgd2UgZW50
ZXIgYSBzdGFsbAorICAgIGZvciAoaW50IGsgPSAwOyBrIDwgc2tpcF91czsgKytrKSB7CisgICAg
ICBpZiAocmFuZG9tXy5SYW5kPGRvdWJsZT4oKSA8IGtDaGFuY2VPZlN0YWxsUGVyVXMpIHsKKyAg
ICAgICAgaW50NjRfdCBzdGFsbF9kdXJhdGlvbl91cyA9CisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihyYW5kb21fLlJhbmQ8ZmxvYXQ+KCkgKiBrTWF4U3RhbGxEdXJhdGlvblVzKTsK
KyAgICAgICAgc3RhbGxfcmVjb3ZlcnlfdGltZV91c18gPSBHZXRDbG9ja1VzKCkgKyBzdGFsbF9k
dXJhdGlvbl91czsKKyAgICAgICAgcmV0dXJuIHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNfOworICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gR2V0Q2xvY2tVcygpOworICB9CisKKyAgdm9pZCBGb3Jj
ZVN0YWxsVXMoKSB7CisgICAgaW50NjRfdCBzdGFsbF9kdXJhdGlvbl91cyA9CisgICAgICAgIHN0
YXRpY19jYXN0PGludDY0X3Q+KHJhbmRvbV8uUmFuZDxmbG9hdD4oKSAqIGtNYXhTdGFsbER1cmF0
aW9uVXMpOworICAgIHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNfID0gR2V0Q2xvY2tVcygpICsgc3Rh
bGxfZHVyYXRpb25fdXM7CisgIH0KKworICBib29sIFN0YWxsZWQoKSBjb25zdCB7IHJldHVybiBz
dGFsbF9yZWNvdmVyeV90aW1lX3VzXyA+IDA7IH0KKworICBpbnQ2NF90IEdldFJlbWFpbmluZ1N0
YWxsKGludDY0X3QgdGltZV91cykgY29uc3QgeworICAgIHJldHVybiBzdGFsbF9yZWNvdmVyeV90
aW1lX3VzXyA+IDAgPyBzdGFsbF9yZWNvdmVyeV90aW1lX3VzXyAtIEdldENsb2NrVXMoKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwOworICB9CisKKyAgY29uc3Qg
aW50NjRfdCBrTWF4U3RhbGxEdXJhdGlvblVzID0gcnRjOjprTnVtTWljcm9zZWNzUGVyU2VjOwor
CisgcHJpdmF0ZToKKyAgY29uc3QgZmxvYXQga0NoYW5jZU9mU3RhbGxQZXJVcyA9IDVlLTZmOwor
ICBpbnQ2NF90IHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNfID0gMDsKK307CiAKK2NsYXNzIEVtdWxh
dGVkTm9uTW9ub3RvbmVvdXNDbG9jayA6IHB1YmxpYyBFbXVsYXRlZENsb2NrIHsKKyBwdWJsaWM6
CisgIEVtdWxhdGVkTm9uTW9ub3RvbmVvdXNDbG9jayhpbnQgc2VlZCwgaW50NjRfdCBkdXJhdGlv
bl91cywgZmxvYXQgZHJpZnQgPSAwKQorICAgICAgOiBFbXVsYXRlZENsb2NrKHNlZWQsIGRyaWZ0
KSB7CisgICAgUHJlZ2VuZXJhdGUoZHVyYXRpb25fdXMpOworICB9CisgIH5FbXVsYXRlZE5vbk1v
bm90b25lb3VzQ2xvY2soKSA9IGRlZmF1bHQ7CisKKyAgdm9pZCBQcmVnZW5lcmF0ZShpbnQ2NF90
IGR1cmF0aW9uX3VzKSB7CisgICAgaW50NjRfdCB0aW1lX3NpbmNlX3Jlc2V0X3VzID0ga01pblRp
bWVCZXR3ZWVuUmVzZXRzVXM7CisgICAgaW50NjRfdCBjbG9ja19vZmZzZXRfdXMgPSAwOworICAg
IGZvciAoaW50NjRfdCB0aW1lX3VzID0gMDsgdGltZV91cyA8IGR1cmF0aW9uX3VzOyB0aW1lX3Vz
ICs9IGtSZXNvbHV0aW9uVXMpIHsKKyAgICAgIGludDY0X3Qgc2tpcF91cyA9IFVwZGF0ZUNsb2Nr
KHRpbWVfdXMpOworICAgICAgdGltZV9zaW5jZV9yZXNldF91cyArPSBza2lwX3VzOworICAgICAg
aW50NjRfdCByZXNldF91cyA9IDA7CisgICAgICBpZiAodGltZV9zaW5jZV9yZXNldF91cyA+PSBr
TWluVGltZUJldHdlZW5SZXNldHNVcykgeworICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IHNr
aXBfdXM7ICsraykgeworICAgICAgICAgIGlmIChyYW5kb21fLlJhbmQ8ZG91YmxlPigpIDwga0No
YW5jZU9mUmVzZXRQZXJVcykgeworICAgICAgICAgICAgcmVzZXRfdXMgPSBzdGF0aWNfY2FzdDxp
bnQ2NF90PigyICogcmFuZG9tXy5SYW5kPGZsb2F0PigpICoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga01heEFic1Jlc2V0VXMpIC0KKyAgICAgICAgICAgICAg
ICAgICAgICAga01heEFic1Jlc2V0VXM7CisgICAgICAgICAgICBjbG9ja19vZmZzZXRfdXMgKz0g
cmVzZXRfdXM7CisgICAgICAgICAgICB0aW1lX3NpbmNlX3Jlc2V0X3VzID0gMDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgcHJlZ2Vu
ZXJhdGVkX2Nsb2NrXy5lbXBsYWNlX2JhY2soR2V0Q2xvY2tVcygpICsgY2xvY2tfb2Zmc2V0X3Vz
KTsKKyAgICAgIHJlc2V0c191c18uZW1wbGFjZV9iYWNrKHJlc2V0X3VzKTsKKyAgICB9CisgIH0K
KworICBpbnQ2NF90IFF1ZXJ5KGludDY0X3QgdGltZV91cykgeworICAgIHNpemVfdCBpeFN0YXJ0
ID0KKyAgICAgICAgKGxhc3RfcmVzZXRfcXVlcnlfdGltZV91c18gKyAoa1Jlc29sdXRpb25VcyA+
PiAxKSkgLyBrUmVzb2x1dGlvblVzICsgMTsKKyAgICBzaXplX3QgaXhFbmQgPSAodGltZV91cyAr
IChrUmVzb2x1dGlvblVzID4+IDEpKSAvIGtSZXNvbHV0aW9uVXM7CisgICAgaWYgKGl4RW5kID49
IHByZWdlbmVyYXRlZF9jbG9ja18uc2l6ZSgpKQorICAgICAgcmV0dXJuIC0xOworICAgIGxhc3Rf
cmVzZXRfc2l6ZV91c18gPSAwOworICAgIGZvciAoc2l6ZV90IGl4ID0gaXhTdGFydDsgaXggPD0g
aXhFbmQ7ICsraXgpIHsKKyAgICAgIGlmIChyZXNldHNfdXNfW2l4XSAhPSAwKSB7CisgICAgICAg
IGxhc3RfcmVzZXRfc2l6ZV91c18gPSByZXNldHNfdXNfW2l4XTsKKyAgICAgIH0KKyAgICB9Cisg
ICAgbGFzdF9yZXNldF9xdWVyeV90aW1lX3VzXyA9IHRpbWVfdXM7CisgICAgcmV0dXJuIHByZWdl
bmVyYXRlZF9jbG9ja19baXhFbmRdOworICB9CisKKyAgYm9vbCBXYXNSZXNldCgpIGNvbnN0IHsg
cmV0dXJuIGxhc3RfcmVzZXRfc2l6ZV91c18gIT0gMDsgfQorICBib29sIFdhc05lZ2F0aXZlUmVz
ZXQoKSBjb25zdCB7IHJldHVybiBsYXN0X3Jlc2V0X3NpemVfdXNfIDwgMDsgfQorICBpbnQ2NF90
IEdldExhc3RSZXNldFVzKCkgY29uc3QgeyByZXR1cm4gbGFzdF9yZXNldF9zaXplX3VzXzsgfQor
CisgcHJpdmF0ZToKKyAgY29uc3QgZmxvYXQga0NoYW5jZU9mUmVzZXRQZXJVcyA9IDFlLTZmOwor
ICBjb25zdCBpbnQ2NF90IGtNYXhBYnNSZXNldFVzID0gcnRjOjprTnVtTWljcm9zZWNzUGVyU2Vj
OworICBjb25zdCBpbnQ2NF90IGtNaW5UaW1lQmV0d2VlblJlc2V0c1VzID0gMyAqIHJ0Yzo6a051
bU1pY3Jvc2Vjc1BlclNlYzsKKyAgY29uc3QgaW50NjRfdCBrUmVzb2x1dGlvblVzID0gcnRjOjpr
TnVtTWljcm9zZWNzUGVyTWlsbGlzZWM7CisgIGludDY0X3QgbGFzdF9yZXNldF9xdWVyeV90aW1l
X3VzXyA9IDA7CisgIGludDY0X3QgbGFzdF9yZXNldF9zaXplX3VzXyA9IDA7CisgIHN0ZDo6dmVj
dG9yPGludDY0X3Q+IHByZWdlbmVyYXRlZF9jbG9ja187CisgIHN0ZDo6dmVjdG9yPGludDY0X3Q+
IHJlc2V0c191c187Cit9OworCitURVNUKENsb2NrUmVwYWlyLCBOb0Nsb2NrRHJpZnQpIHsKKyAg
Y29uc3QgaW50IGtTZWVkcyA9IDEwOworICBjb25zdCBpbnQga0ZpcnN0U2VlZCA9IDE7CisgIGNv
bnN0IGludDY0X3Qga1J1bnRpbWVVcyA9IDEwICogcnRjOjprTnVtTWljcm9zZWNzUGVyU2VjOwor
ICBjb25zdCBmbG9hdCBrRHJpZnQgPSAwLjBmOworICBjb25zdCBpbnQ2NF90IGtNYXhQYWNrZXRJ
bnRlcmFycml2YWxVcyA9IDUwICogcnRjOjprTnVtTWljcm9zZWNzUGVyTWlsbGlzZWM7CisgIGZv
ciAoaW50IHNlZWQgPSBrRmlyc3RTZWVkOyBzZWVkIDwga1NlZWRzICsga0ZpcnN0U2VlZDsgKytz
ZWVkKSB7CisgICAgRW11bGF0ZWRNb25vdG9uZW91c0Nsb2NrIG1vbm90b25lX2Nsb2NrKHNlZWQp
OworICAgIEVtdWxhdGVkTm9uTW9ub3RvbmVvdXNDbG9jayBub25fbW9ub3RvbmVfY2xvY2soCisg
ICAgICAgIHNlZWQgKyAxLCBrUnVudGltZVVzICsgcnRjOjprTnVtTWljcm9zZWNzUGVyU2VjLCBr
RHJpZnQpOworICAgIFJlY2VpdmVUaW1lQ2FsY3VsYXRvciByZWNlcHRpb25fdGltZV90cmFja2Vy
OworICAgIGludDY0X3QgY29ycmVjdGVkX2Nsb2NrXzAgPSAwOworICAgIGludDY0X3QgcmVzZXRf
ZHVyaW5nX3N0YWxsX3RvbF91cyA9IDA7CisgICAgYm9vbCBpbml0aWFsX2Nsb2NrX3N0YWxsID0g
dHJ1ZTsKKyAgICBpbnQ2NF90IGFjY3VtdWxhdGVkX3VwcGVyX2JvdW5kX3RvbGVyYW5jZV91cyA9
IDA7CisgICAgaW50NjRfdCBhY2N1bXVsYXRlZF9sb3dlcl9ib3VuZF90b2xlcmFuY2VfdXMgPSAw
OworICAgIFJhbmRvbSByYW5kb20oMSk7CisgICAgbW9ub3RvbmVfY2xvY2suRm9yY2VTdGFsbFVz
KCk7CisgICAgaW50NjRfdCBsYXN0X3RpbWVfdXMgPSAwOworICAgIGJvb2wgYWRkX3RvbGVyYW5j
ZV9vbl9uZXh0X3BhY2tldCA9IGZhbHNlOworICAgIGludDY0X3QgbW9ub3RvbmVfbm9pc2VfdXMg
PSAxMDAwOworCisgICAgZm9yIChpbnQ2NF90IHRpbWVfdXMgPSAwOyB0aW1lX3VzIDwga1J1bnRp
bWVVczsKKyAgICAgICAgIHRpbWVfdXMgKz0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmFuZG9tLlJh
bmQ8ZmxvYXQ+KCkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
TWF4UGFja2V0SW50ZXJhcnJpdmFsVXMpKSB7CisgICAgICBpbnQ2NF90IHNvY2tldF90aW1lX3Vz
ID0gbm9uX21vbm90b25lX2Nsb2NrLlF1ZXJ5KHRpbWVfdXMpOworICAgICAgaW50NjRfdCBtb25v
dG9uZV91cyA9IG1vbm90b25lX2Nsb2NrLlF1ZXJ5KHRpbWVfdXMpICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyICogcmFuZG9tLlJhbmQ8ZmxvYXQ+KCkgKiBtb25vdG9uZV9ub2lzZV91
cyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ub3RvbmVfbm9pc2VfdXM7CisgICAg
ICBpbnQ2NF90IHN5c3RlbV90aW1lX3VzID0gbm9uX21vbm90b25lX2Nsb2NrLlF1ZXJ5KAorICAg
ICAgICAgIHRpbWVfdXMgKyBtb25vdG9uZV9jbG9jay5HZXRSZW1haW5pbmdTdGFsbCh0aW1lX3Vz
KSk7CisKKyAgICAgIGludDY0X3QgY29ycmVjdGVkX2Nsb2NrX3VzID0gcmVjZXB0aW9uX3RpbWVf
dHJhY2tlci5SZWNvbmNpbGVSZWNlaXZlVGltZXMoCisgICAgICAgICAgc29ja2V0X3RpbWVfdXMs
IHN5c3RlbV90aW1lX3VzLCBtb25vdG9uZV91cyk7CisgICAgICBpZiAodGltZV91cyA9PSAwKQor
ICAgICAgICBjb3JyZWN0ZWRfY2xvY2tfMCA9IGNvcnJlY3RlZF9jbG9ja191czsKKworICAgICAg
aWYgKGFkZF90b2xlcmFuY2Vfb25fbmV4dF9wYWNrZXQpCisgICAgICAgIGFjY3VtdWxhdGVkX2xv
d2VyX2JvdW5kX3RvbGVyYW5jZV91cyAtPSAodGltZV91cyAtIGxhc3RfdGltZV91cyk7CisKKyAg
ICAgIC8vIFBlcmZlY3QgcmVwYWlyIGNhbm5vdCBiZSBhY2hpdmV2ZWQgaWYgbm9uLW1vbm90b25l
IGNsb2NrIHJlc2V0cyBkdXJpbmcKKyAgICAgIC8vIGEgbW9ub3RvbmUgY2xvY2sgc3RhbGwuCisg
ICAgICBhZGRfdG9sZXJhbmNlX29uX25leHRfcGFja2V0ID0gZmFsc2U7CisgICAgICBpZiAobW9u
b3RvbmVfY2xvY2suU3RhbGxlZCgpICYmIG5vbl9tb25vdG9uZV9jbG9jay5XYXNSZXNldCgpKSB7
CisgICAgICAgIHJlc2V0X2R1cmluZ19zdGFsbF90b2xfdXMgPQorICAgICAgICAgICAgc3RkOjpt
YXgocmVzZXRfZHVyaW5nX3N0YWxsX3RvbF91cywgdGltZV91cyAtIGxhc3RfdGltZV91cyk7Cisg
ICAgICAgIGlmIChub25fbW9ub3RvbmVfY2xvY2suV2FzTmVnYXRpdmVSZXNldCgpKSB7CisgICAg
ICAgICAgYWRkX3RvbGVyYW5jZV9vbl9uZXh0X3BhY2tldCA9IHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGluaXRpYWxfY2xvY2tfc3RhbGwgJiYgIW5vbl9tb25vdG9uZV9jbG9jay5XYXNO
ZWdhdGl2ZVJlc2V0KCkpIHsKKyAgICAgICAgICAvLyBQb3NpdGl2ZSByZXNldHMgZHVyaW5nIGFu
IGluaXRpYWwgY2xvY2sgc3RhbGwgY2Fubm90IGJlIHJlcGFpcmVkCisgICAgICAgICAgLy8gYW5k
IGVycm9yIHdpbGwgcHJvcGFnYXRlIHRocm91Z2ggcmVzdCBvZiB0cmFjZS4KKyAgICAgICAgICBh
Y2N1bXVsYXRlZF91cHBlcl9ib3VuZF90b2xlcmFuY2VfdXMgKz0KKyAgICAgICAgICAgICAgc3Rk
OjphYnMobm9uX21vbm90b25lX2Nsb2NrLkdldExhc3RSZXNldFVzKCkpOworICAgICAgICB9Cisg
ICAgICB9IGVsc2UgeworICAgICAgICByZXNldF9kdXJpbmdfc3RhbGxfdG9sX3VzID0gMDsKKyAg
ICAgICAgaW5pdGlhbF9jbG9ja19zdGFsbCA9IGZhbHNlOworICAgICAgfQorICAgICAgaW50NjRf
dCBlcnIgPSBjb3JyZWN0ZWRfY2xvY2tfdXMgLSBjb3JyZWN0ZWRfY2xvY2tfMCAtIHRpbWVfdXM7
CisKKyAgICAgIC8vIFJlc2V0cyBkdXJpbmcgc3RhbGxzIG1heSBsZWFkIHRvIHNtYWxsIGVycm9y
cyB0ZW1wb3JhcmlseS4KKyAgICAgIGludDY0X3QgbG93ZXJfdG9sX3VzID0gYWNjdW11bGF0ZWRf
bG93ZXJfYm91bmRfdG9sZXJhbmNlX3VzIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzZXRfZHVyaW5nX3N0YWxsX3RvbF91cyAtIG1vbm90b25lX25vaXNlX3VzIC0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMiAqIHJ0Yzo6a051bU1pY3Jvc2Vjc1Blck1pbGxpc2VjOwor
ICAgICAgRVhQRUNUX0dFKGVyciwgbG93ZXJfdG9sX3VzKTsKKyAgICAgIGludDY0X3QgdXBwZXJf
dG9sX3VzID0gYWNjdW11bGF0ZWRfdXBwZXJfYm91bmRfdG9sZXJhbmNlX3VzICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9ub3RvbmVfbm9pc2VfdXMgKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyICogcnRjOjprTnVtTWljcm9zZWNzUGVyTWlsbGlzZWM7CisgICAgICBF
WFBFQ1RfTEUoZXJyLCB1cHBlcl90b2xfdXMpOworCisgICAgICBsYXN0X3RpbWVfdXMgPSB0aW1l
X3VzOworICAgIH0KKyAgfQorfQorfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgdGVz
dAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydGNwX2RlbXV4ZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0Y3BfZGVtdXhlci5jYwppbmRl
eCBkNDQxYzA1YjNkYjg1YmMzYTZlOTliODRkNDk4NzE3YzRlN2U4Njg2Li5hMDZkMmE0NjA0YzQw
MzgwN2MwYTI4YTZkZjY4MjU4MzIxNDM4YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0Y3BfZGVtdXhlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0Y3BfZGVtdXhlci5j
YwpAQCAtMTMsNyArMTMsNiBAQAogI2luY2x1ZGUgImFwaS9ydHBfaGVhZGVycy5oIgogI2luY2x1
ZGUgImNhbGwvcnRjcF9wYWNrZXRfc2lua19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJjYWxsL3J0
cF9ydGNwX2RlbXV4ZXJfaGVscGVyLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBO
T0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3J0Y3BfZGVtdXhlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRjcF9kZW11eGVyX3VuaXR0ZXN0
LmNjCmluZGV4IDgwODM2NGFjYzVlODQzNDY3NGJjMWIyOWY0MDVjZTdmNzJhY2U3NmEuLjZjZWI3
YWI1ZDlkNjllOTM3ZjE0NjhhMDhkMjA1MGIxN2I4MDEwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRjcF9kZW11eGVyX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvcnRjcF9kZW11eGVyX3VuaXR0ZXN0LmNjCkBAIC0xNiw3ICsxNiw2IEBACiAjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL3J0cF9oZWFkZXJzLmgiCiAjaW5j
bHVkZSAiY2FsbC9ydGNwX3BhY2tldF9zaW5rX2ludGVyZmFjZS5oIgotI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYnllLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJy
YXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9jb25maWcuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9jb25m
aWcuY2MKaW5kZXggMTQ0NWMyNTUyZTQ5Mjk0OGU2MjY5OThkN2UwYmM4ZmFiZjc5MTRiMC4uY2Nl
NzhhZDY0YzdkOTExMzBmZjIyZTliNDA1NDNjMzJkOTQ2Mzc5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfY29uZmlnLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2Nv
bmZpZy5jYwpAQCAtMTAsNiArMTAsOSBAQAogCiAjaW5jbHVkZSAiY2FsbC9ydHBfY29uZmlnLmgi
CiAKKyNpbmNsdWRlIDxjc3RkaW50PgorCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewpAQCAtNjAsNiArNjMsNyBAQCBzdGQ6OnN0cmluZyBSdHBDb25maWc6OlRvU3RyaW5n
KCkgY29uc3QgewogICAgICA8PCAocnRjcF9tb2RlID09IFJ0Y3BNb2RlOjprQ29tcG91bmQgPyAi
UnRjcE1vZGU6OmtDb21wb3VuZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogIlJ0Y3BNb2RlOjprUmVkdWNlZFNpemUiKTsKICAgc3MgPDwgIiwgbWF4X3BhY2tl
dF9zaXplOiAiIDw8IG1heF9wYWNrZXRfc2l6ZTsKKyAgc3MgPDwgIiwgZXh0bWFwLWFsbG93LW1p
eGVkOiAiIDw8IChleHRtYXBfYWxsb3dfbWl4ZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKICAgc3Mg
PDwgIiwgZXh0ZW5zaW9uczogWyI7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXh0ZW5zaW9u
cy5zaXplKCk7ICsraSkgewogICAgIHNzIDw8IGV4dGVuc2lvbnNbaV0uVG9TdHJpbmcoKTsKQEAg
LTEwOCwxOCArMTEyLDQgQEAgc3RkOjpzdHJpbmcgUnRwQ29uZmlnOjpSdHg6OlRvU3RyaW5nKCkg
Y29uc3QgewogICBzcyA8PCAnfSc7CiAgIHJldHVybiBzcy5zdHIoKTsKIH0KLQotUnRjcENvbmZp
Zzo6UnRjcENvbmZpZygpID0gZGVmYXVsdDsKLVJ0Y3BDb25maWc6OlJ0Y3BDb25maWcoY29uc3Qg
UnRjcENvbmZpZyYpID0gZGVmYXVsdDsKLVJ0Y3BDb25maWc6On5SdGNwQ29uZmlnKCkgPSBkZWZh
dWx0OwotCi1zdGQ6OnN0cmluZyBSdGNwQ29uZmlnOjpUb1N0cmluZygpIGNvbnN0IHsKLSAgY2hh
ciBidWZbMTAyNF07Ci0gIHJ0Yzo6U2ltcGxlU3RyaW5nQnVpbGRlciBzcyhidWYpOwotICBzcyA8
PCAie3ZpZGVvX3JlcG9ydF9pbnRlcnZhbF9tczogIiA8PCB2aWRlb19yZXBvcnRfaW50ZXJ2YWxf
bXM7Ci0gIHNzIDw8ICIsIGF1ZGlvX3JlcG9ydF9pbnRlcnZhbF9tczogIiA8PCBhdWRpb19yZXBv
cnRfaW50ZXJ2YWxfbXM7Ci0gIHNzIDw8ICd9JzsKLSAgcmV0dXJuIHNzLnN0cigpOwotfQotCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2NvbmZpZy5oCmluZGV4IDhmOGQwM2Ez
YTgyNDJhNmIxOWY1YzVmNjViZDFjMmI2Mzg2YjZhMDUuLjk3YWU5NTE3NjVjMmJkMjNlNDUyYTFm
ZDE0MGUxMTVhMzU4NjliZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2NvbmZpZy5oCkBAIC0xMSw2ICsxMSw4
IEBACiAjaWZuZGVmIENBTExfUlRQX0NPTkZJR19IXwogI2RlZmluZSBDQUxMX1JUUF9DT05GSUdf
SF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUg
PHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAgLTc0LDYgKzc2LDkgQEAgc3RydWN0IFJ0
cENvbmZpZyB7CiAgIC8vIE1heCBSVFAgcGFja2V0IHNpemUgZGVsaXZlcmVkIHRvIHNlbmQgdHJh
bnNwb3J0IGZyb20gVmlkZW9FbmdpbmUuCiAgIHNpemVfdCBtYXhfcGFja2V0X3NpemUgPSBrRGVm
YXVsdE1heFBhY2tldFNpemU7CiAKKyAgLy8gQ29ycmVzcG9uZHMgdG8gdGhlIFNEUCBhdHRyaWJ1
dGUgZXh0bWFwLWFsbG93LW1peGVkLgorICBib29sIGV4dG1hcF9hbGxvd19taXhlZCA9IGZhbHNl
OworCiAgIC8vIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyB0byB1c2UgZm9yIHRoaXMgc2VuZCBzdHJl
YW0uCiAgIHN0ZDo6dmVjdG9yPFJ0cEV4dGVuc2lvbj4gZXh0ZW5zaW9uczsKIApAQCAtMTI5LDE3
ICsxMzQsNSBAQCBzdHJ1Y3QgUnRwQ29uZmlnIHsKICAgLy8gUlRDUCBDTkFNRSwgc2VlIFJGQyAz
NTUwLgogICBzdGQ6OnN0cmluZyBjX25hbWU7CiB9OwotCi1zdHJ1Y3QgUnRjcENvbmZpZyB7Ci0g
IFJ0Y3BDb25maWcoKTsKLSAgUnRjcENvbmZpZyhjb25zdCBSdGNwQ29uZmlnJik7Ci0gIH5SdGNw
Q29uZmlnKCk7Ci0gIHN0ZDo6c3RyaW5nIFRvU3RyaW5nKCkgY29uc3Q7Ci0KLSAgLy8gVGltZSBp
bnRlcnZhbCBiZXR3ZWVuIFJUQ1AgcmVwb3J0IGZvciB2aWRlbwotICBpbnQ2NF90IHZpZGVvX3Jl
cG9ydF9pbnRlcnZhbF9tcyA9IDEwMDA7Ci0gIC8vIFRpbWUgaW50ZXJ2YWwgYmV0d2VlbiBSVENQ
IHJlcG9ydCBmb3IgYXVkaW8KLSAgaW50NjRfdCBhdWRpb19yZXBvcnRfaW50ZXJ2YWxfbXMgPSA1
MDAwOwotfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKICNlbmRpZiAgLy8gQ0FMTF9SVFBfQ09O
RklHX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3J0cF9kZW11eGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfZGVtdXhlcl91bml0dGVzdC5jYwppbmRleCBi
NWVkZTNjZDAzYTBjZTVmN2RmZGE4MTVhYzg5MTAwMjcxYjZkNTM2Li4zYjgyMDBlNzgxOTg4OWE1
MTYzYzljY2RkMDhhN2NmYTc2MTI3ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9kZW11eGVyX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2RlbXV4
ZXJfdW5pdHRlc3QuY2MKQEAgLTE3LDcgKzE3LDYgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9t
ZW1vcnkuaCIKICNpbmNsdWRlICJjYWxsL3NzcmNfYmluZGluZ19vYnNlcnZlci5oIgogI2luY2x1
ZGUgImNhbGwvdGVzdC9tb2NrX3J0cF9wYWNrZXRfc2lua19pbnRlcmZhY2UuaCIKLSNpbmNsdWRl
ICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L3J0cF9wYXlsb2FkX3BhcmFtcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NhbGwvcnRwX3BheWxvYWRfcGFyYW1zLmNjCmluZGV4IGZmYmRhMWEyZGJlM2Ez
Mjg2NjkxODRlNjJhZjYyYzk3YmRhZWI4MzYuLjJhMzJlZWY3ODMzMmU4MDMzZWRiZThmZGRlYjEx
Yjg4MDhiMzRkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NhbGwvcnRwX3BheWxvYWRfcGFyYW1zLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3BheWxvYWRfcGFyYW1zLmNjCkBA
IC0xNDQsNiArMTQ0LDggQEAgUlRQVmlkZW9IZWFkZXIgUnRwUGF5bG9hZFBhcmFtczo6R2V0UnRw
VmlkZW9IZWFkZXIoCiAgIHJ0cF92aWRlb19oZWFkZXIucm90YXRpb24gPSBpbWFnZS5yb3RhdGlv
bl87CiAgIHJ0cF92aWRlb19oZWFkZXIuY29udGVudF90eXBlID0gaW1hZ2UuY29udGVudF90eXBl
XzsKICAgcnRwX3ZpZGVvX2hlYWRlci5wbGF5b3V0X2RlbGF5ID0gaW1hZ2UucGxheW91dF9kZWxh
eV87CisgIHJ0cF92aWRlb19oZWFkZXIud2lkdGggPSBpbWFnZS5fZW5jb2RlZFdpZHRoOworICBy
dHBfdmlkZW9faGVhZGVyLmhlaWdodCA9IGltYWdlLl9lbmNvZGVkSGVpZ2h0OwogCiAgIFNldFZp
ZGVvVGltaW5nKGltYWdlLCAmcnRwX3ZpZGVvX2hlYWRlci52aWRlb190aW1pbmcpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0
cF9wYXlsb2FkX3BhcmFtcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMuaAppbmRleCBmNjgyOWNhY2U1YzYyOWU1NWEy
ZWM5Y2Q1YTQ3MWNkNDlhNTVkZTg5Li5iOTFiZmU0YjJjNWRiMDBlMDJmMzljMTliOTJhNzA1NjQ2
YWEwZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3BhcmFtcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3BheWxvYWRfcGFyYW1zLmgKQEAgLTE2LDcg
KzE2LDYgQEAKIAogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgog
I2luY2x1ZGUgImNhbGwvcnRwX2NvbmZpZy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAg
Ly8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXNf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL3J0cF9wYXlsb2FkX3BhcmFtc191bml0dGVzdC5jYwppbmRleCBhM2NiMzc5ZDE4YTY1NTU0
ODY4MjIyOTEzN2UzZThmZGJmNTUxYjUwLi45YTUxOWJhMGE3ZjczMGZjNThiODBlNjliZjRhMTNl
ZmJiMTFkNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3BhcmFtc191bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3BhcmFt
c191bml0dGVzdC5jYwpAQCAtMzA5LDkgKzMwOSwxMyBAQCBjbGFzcyBSdHBQYXlsb2FkUGFyYW1z
VnA4VG9HZW5lcmljVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90IHNoYXJlZF9mcmFtZV9pZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgRnJhbWVUeXBlIGZyYW1lX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIExheWVyU3lu
YyBsYXllcl9zeW5jLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnNldDxpbnQ2
NF90PiYgZXhwZWN0ZWRfZGVwcykgeworICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnNldDxpbnQ2NF90PiYgZXhwZWN0ZWRfZGVwcywKKyAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDE2X3Qgd2lkdGggPSAwLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBoZWlnaHQg
PSAwKSB7CiAgICAgRW5jb2RlZEltYWdlIGVuY29kZWRfaW1hZ2U7CiAgICAgZW5jb2RlZF9pbWFn
ZS5fZnJhbWVUeXBlID0gZnJhbWVfdHlwZTsKKyAgICBlbmNvZGVkX2ltYWdlLl9lbmNvZGVkV2lk
dGggPSB3aWR0aDsKKyAgICBlbmNvZGVkX2ltYWdlLl9lbmNvZGVkSGVpZ2h0ID0gaGVpZ2h0Owog
CiAgICAgQ29kZWNTcGVjaWZpY0luZm8gY29kZWNfaW5mb3t9OwogICAgIGNvZGVjX2luZm8uY29k
ZWNUeXBlID0ga1ZpZGVvQ29kZWNWUDg7CkBAIC0zMzAsNiArMzM0LDkgQEAgY2xhc3MgUnRwUGF5
bG9hZFBhcmFtc1ZwOFRvR2VuZXJpY1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAg
ICBzdGQ6OnNldDxpbnQ2NF90PiBhY3R1YWxfZGVwcyhoZWFkZXIuZ2VuZXJpYy0+ZGVwZW5kZW5j
aWVzLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLmdl
bmVyaWMtPmRlcGVuZGVuY2llcy5lbmQoKSk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2RlcHMs
IGFjdHVhbF9kZXBzKTsKKworICAgIEVYUEVDVF9FUShoZWFkZXIud2lkdGgsIHdpZHRoKTsKKyAg
ICBFWFBFQ1RfRVEoaGVhZGVyLmhlaWdodCwgaGVpZ2h0KTsKICAgfQogCiAgcHJvdGVjdGVkOgpA
QCAtMzM5LDEzICszNDYsMTMgQEAgY2xhc3MgUnRwUGF5bG9hZFBhcmFtc1ZwOFRvR2VuZXJpY1Rl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIH07CiAKIFRFU1RfRihSdHBQYXlsb2FkUGFy
YW1zVnA4VG9HZW5lcmljVGVzdCwgS2V5ZnJhbWUpIHsKLSAgQ29udmVydEFuZENoZWNrKDAsIDAs
IGtWaWRlb0ZyYW1lS2V5LCBrTm9TeW5jLCB7fSk7CisgIENvbnZlcnRBbmRDaGVjaygwLCAwLCBr
VmlkZW9GcmFtZUtleSwga05vU3luYywge30sIDQ4MCwgMzYwKTsKICAgQ29udmVydEFuZENoZWNr
KDAsIDEsIGtWaWRlb0ZyYW1lRGVsdGEsIGtOb1N5bmMsIHswfSk7Ci0gIENvbnZlcnRBbmRDaGVj
aygwLCAyLCBrVmlkZW9GcmFtZUtleSwga05vU3luYywge30pOworICBDb252ZXJ0QW5kQ2hlY2so
MCwgMiwga1ZpZGVvRnJhbWVLZXksIGtOb1N5bmMsIHt9LCA0ODAsIDM2MCk7CiB9CiAKIFRFU1Rf
RihSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCwgVG9vSGlnaFRlbXBvcmFsSW5kZXgp
IHsKLSAgQ29udmVydEFuZENoZWNrKDAsIDAsIGtWaWRlb0ZyYW1lS2V5LCBrTm9TeW5jLCB7fSk7
CisgIENvbnZlcnRBbmRDaGVjaygwLCAwLCBrVmlkZW9GcmFtZUtleSwga05vU3luYywge30sIDQ4
MCwgMzYwKTsKIAogICBFbmNvZGVkSW1hZ2UgZW5jb2RlZF9pbWFnZTsKICAgZW5jb2RlZF9pbWFn
ZS5fZnJhbWVUeXBlID0ga1ZpZGVvRnJhbWVEZWx0YTsKQEAgLTM2Miw3ICszNjksNyBAQCBURVNU
X0YoUnRwUGF5bG9hZFBhcmFtc1ZwOFRvR2VuZXJpY1Rlc3QsIFRvb0hpZ2hUZW1wb3JhbEluZGV4
KSB7CiAKIFRFU1RfRihSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCwgTGF5ZXJTeW5j
KSB7CiAgIC8vIDAyMTIwMjEyIHBhdHRlcm4KLSAgQ29udmVydEFuZENoZWNrKDAsIDAsIGtWaWRl
b0ZyYW1lS2V5LCBrTm9TeW5jLCB7fSk7CisgIENvbnZlcnRBbmRDaGVjaygwLCAwLCBrVmlkZW9G
cmFtZUtleSwga05vU3luYywge30sIDQ4MCwgMzYwKTsKICAgQ29udmVydEFuZENoZWNrKDIsIDEs
IGtWaWRlb0ZyYW1lRGVsdGEsIGtOb1N5bmMsIHswfSk7CiAgIENvbnZlcnRBbmRDaGVjaygxLCAy
LCBrVmlkZW9GcmFtZURlbHRhLCBrTm9TeW5jLCB7MH0pOwogICBDb252ZXJ0QW5kQ2hlY2soMiwg
Mywga1ZpZGVvRnJhbWVEZWx0YSwga05vU3luYywgezAsIDEsIDJ9KTsKQEAgLTM3NSw3ICszODIs
NyBAQCBURVNUX0YoUnRwUGF5bG9hZFBhcmFtc1ZwOFRvR2VuZXJpY1Rlc3QsIExheWVyU3luYykg
ewogCiBURVNUX0YoUnRwUGF5bG9hZFBhcmFtc1ZwOFRvR2VuZXJpY1Rlc3QsIEZyYW1lSWRHYXBz
KSB7CiAgIC8vIDAxMDEgcGF0dGVybgotICBDb252ZXJ0QW5kQ2hlY2soMCwgMCwga1ZpZGVvRnJh
bWVLZXksIGtOb1N5bmMsIHt9KTsKKyAgQ29udmVydEFuZENoZWNrKDAsIDAsIGtWaWRlb0ZyYW1l
S2V5LCBrTm9TeW5jLCB7fSwgNDgwLCAzNjApOwogICBDb252ZXJ0QW5kQ2hlY2soMSwgMSwga1Zp
ZGVvRnJhbWVEZWx0YSwga05vU3luYywgezB9KTsKIAogICBDb252ZXJ0QW5kQ2hlY2soMCwgNSwg
a1ZpZGVvRnJhbWVEZWx0YSwga05vU3luYywgezB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9s
bGVyX3NlbmQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kLmNjCmluZGV4IDU0YWVmMjFmZDllYWZj
OTEzM2MzNjNlNTU2ZWJmMjMyYzZlZDRmMzcuLjUyNjVjOTVhZmI4MTA0MTI4ZDM0MGY3MjY5ZDk1
MTlkNmQ3NzcyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0
X2NvbnRyb2xsZXJfc2VuZC5jYwpAQCAtMjYsMTEgKzI2LDYgQEAgc3RhdGljIGNvbnN0IHNpemVf
dCBrTWF4T3ZlcmhlYWRCeXRlcyA9IDUwMDsKIGNvbnN0IGNoYXIga1Rhc2tRdWV1ZUV4cGVyaW1l
bnRbXSA9ICJXZWJSVEMtVGFza1F1ZXVlQ29uZ2VzdGlvbkNvbnRyb2wiOwogdXNpbmcgVGFza1F1
ZXVlQ29udHJvbGxlciA9IHdlYnJ0Yzo6d2VicnRjX2NjOjpTZW5kU2lkZUNvbmdlc3Rpb25Db250
cm9sbGVyOwogCi1ib29sIFRhc2tRdWV1ZUV4cGVyaW1lbnRFbmFibGVkKCkgewotICBzdGQ6OnN0
cmluZyB0cmlhbCA9IHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZShrVGFza1F1ZXVl
RXhwZXJpbWVudCk7Ci0gIHJldHVybiB0cmlhbC5maW5kKCJFbmFibGUiKSA9PSAwOwotfQotCiBz
dGQ6OnVuaXF1ZV9wdHI8U2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlckludGVyZmFjZT4gQ3Jl
YXRlQ29udHJvbGxlcigKICAgICBDbG9jayogY2xvY2ssCiAgICAgcnRjOjpUYXNrUXVldWUqIHRh
c2tfcXVldWUsCkBAIC03MCw5ICs2NSw5IEBAIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kOjpS
dHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZCgKICAgICAgIHJldHJhbnNtaXNzaW9uX3JhdGVfbGlt
aXRlcl8oY2xvY2ssIGtSZXRyYW5zbWl0V2luZG93U2l6ZU1zKSwKICAgICAgIHRhc2tfcXVldWVf
KCJydHBfc2VuZF9jb250cm9sbGVyIikgewogICAvLyBDcmVhdGVkIGFmdGVyIHRhc2tfcXVldWUg
dG8gYmUgYWJsZSB0byBwb3N0IHRvIHRoZSB0YXNrIHF1ZXVlIGludGVybmFsbHkuCi0gIHNlbmRf
c2lkZV9jY18gPQotICAgICAgQ3JlYXRlQ29udHJvbGxlcihjbG9jaywgJnRhc2tfcXVldWVfLCBl
dmVudF9sb2csICZwYWNlcl8sIGJpdHJhdGVfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAg
ICBUYXNrUXVldWVFeHBlcmltZW50RW5hYmxlZCgpLCBjb250cm9sbGVyX2ZhY3RvcnkpOworICBz
ZW5kX3NpZGVfY2NfID0gQ3JlYXRlQ29udHJvbGxlcigKKyAgICAgIGNsb2NrLCAmdGFza19xdWV1
ZV8sIGV2ZW50X2xvZywgJnBhY2VyXywgYml0cmF0ZV9jb25maWcsCisgICAgICAhZmllbGRfdHJp
YWw6OklzRGlzYWJsZWQoa1Rhc2tRdWV1ZUV4cGVyaW1lbnQpLCBjb250cm9sbGVyX2ZhY3Rvcnkp
OwogCiAgIHByb2Nlc3NfdGhyZWFkXy0+UmVnaXN0ZXJNb2R1bGUoJnBhY2VyXywgUlRDX0ZST01f
SEVSRSk7CiAgIHByb2Nlc3NfdGhyZWFkXy0+UmVnaXN0ZXJNb2R1bGUoc2VuZF9zaWRlX2NjXy5n
ZXQoKSwgUlRDX0ZST01fSEVSRSk7CkBAIC05MCwxOCArODUsMjAgQEAgUnRwVmlkZW9TZW5kZXJJ
bnRlcmZhY2UqIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kOjpDcmVhdGVSdHBWaWRlb1NlbmRl
cigKICAgICBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwU3RhdGU+IHN1c3BlbmRlZF9zc3JjcywKICAg
ICBjb25zdCBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwUGF5bG9hZFN0YXRlPiYgc3RhdGVzLAogICAg
IGNvbnN0IFJ0cENvbmZpZyYgcnRwX2NvbmZpZywKLSAgICBjb25zdCBSdGNwQ29uZmlnJiBydGNw
X2NvbmZpZywKKyAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMsCiAgICAgVHJhbnNwb3J0
KiBzZW5kX3RyYW5zcG9ydCwKICAgICBjb25zdCBSdHBTZW5kZXJPYnNlcnZlcnMmIG9ic2VydmVy
cywKICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAotICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWND
b250cm9sbGVyPiBmZWNfY29udHJvbGxlcikgeworICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250
cm9sbGVyPiBmZWNfY29udHJvbGxlciwKKyAgICBjb25zdCBSdHBTZW5kZXJGcmFtZUVuY3J5cHRp
b25Db25maWcmIGZyYW1lX2VuY3J5cHRpb25fY29uZmlnKSB7CiAgIHZpZGVvX3J0cF9zZW5kZXJz
Xy5wdXNoX2JhY2soYWJzbDo6bWFrZV91bmlxdWU8UnRwVmlkZW9TZW5kZXI+KAotICAgICAgc3Ny
Y3MsIHN1c3BlbmRlZF9zc3Jjcywgc3RhdGVzLCBydHBfY29uZmlnLCBydGNwX2NvbmZpZywgc2Vu
ZF90cmFuc3BvcnQsCi0gICAgICBvYnNlcnZlcnMsCisgICAgICBzc3Jjcywgc3VzcGVuZGVkX3Nz
cmNzLCBzdGF0ZXMsIHJ0cF9jb25maWcsIHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zLAorICAgICAg
c2VuZF90cmFuc3BvcnQsIG9ic2VydmVycywKICAgICAgIC8vIFRPRE8oaG9sbWVyKTogUmVtb3Zl
IHRoaXMgY2lyY3VsYXIgZGVwZW5kZW5jeSBieSBpbmplY3RpbmcKICAgICAgIC8vIHRoZSBwYXJ0
cyBvZiBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSB0aGF0IGFyZSByZWFsbHkg
dXNlZC4KLSAgICAgIHRoaXMsIGV2ZW50X2xvZywgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRl
cl8sCi0gICAgICBzdGQ6Om1vdmUoZmVjX2NvbnRyb2xsZXIpKSk7CisgICAgICB0aGlzLCBldmVu
dF9sb2csICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBzdGQ6Om1vdmUoZmVjX2NvbnRy
b2xsZXIpLAorICAgICAgZnJhbWVfZW5jcnlwdGlvbl9jb25maWcuZnJhbWVfZW5jcnlwdG9yLAor
ICAgICAgZnJhbWVfZW5jcnlwdGlvbl9jb25maWcuY3J5cHRvX29wdGlvbnMpKTsKICAgcmV0dXJu
IHZpZGVvX3J0cF9zZW5kZXJzXy5iYWNrKCkuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9j
b250cm9sbGVyX3NlbmQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaAppbmRleCA2YWFmMjlkNmJj
MzdiODMzMjNjNzhhYTNlNDUzMDEyNjFmMDIzNDE2Li5mMWM0NmNjMDc4NTVkZGVmN2U0MTJjNjY4
MGQxOWM1YjY4YzI5ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNw
b3J0X2NvbnRyb2xsZXJfc2VuZC5oCkBAIC0yMCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiY2FsbC9y
dHBfYml0cmF0ZV9jb25maWd1cmF0b3IuaCIKICNpbmNsdWRlICJjYWxsL3J0cF90cmFuc3BvcnRf
Y29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3ZpZGVvX3Nl
bmRlci5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1
ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvaW5jbHVkZS9zZW5k
X3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3V0aWxpdHkvaW5j
bHVkZS9wcm9jZXNzX3RocmVhZC5oIgpAQCAtMjksNyArMjgsOSBAQAogI2luY2x1ZGUgInJ0Y19i
YXNlL3Rhc2tfcXVldWUuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CisKIGNsYXNzIENsb2NrOwor
Y2xhc3MgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U7CiBjbGFzcyBSdGNFdmVudExvZzsKIAogLy8g
VE9ETyhuaXNzZSk6IFdoZW4gd2UgZ2V0IHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydHMgaGVyZSwg
d2Ugc2hvdWxkCkBAIC01MiwxMSArNTMsMTIgQEAgY2xhc3MgUnRwVHJhbnNwb3J0Q29udHJvbGxl
clNlbmQgZmluYWwKICAgICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBQYXlsb2FkU3Rh
dGU+JgogICAgICAgICAgIHN0YXRlcywgIC8vIG1vdmUgc3RhdGVzIGludG8gUnRwVHJhbnNwb3J0
Q29udHJvbGxlclNlbmQKICAgICAgIGNvbnN0IFJ0cENvbmZpZyYgcnRwX2NvbmZpZywKLSAgICAg
IGNvbnN0IFJ0Y3BDb25maWcmIHJ0Y3BfY29uZmlnLAorICAgICAgaW50IHJ0Y3BfcmVwb3J0X2lu
dGVydmFsX21zLAogICAgICAgVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwKICAgICAgIGNvbnN0
IFJ0cFNlbmRlck9ic2VydmVycyYgb2JzZXJ2ZXJzLAogICAgICAgUnRjRXZlbnRMb2cqIGV2ZW50
X2xvZywKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNfY29udHJvbGxl
cikgb3ZlcnJpZGU7CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlcj4gZmVjX2Nv
bnRyb2xsZXIsCisgICAgICBjb25zdCBSdHBTZW5kZXJGcmFtZUVuY3J5cHRpb25Db25maWcmIGZy
YW1lX2VuY3J5cHRpb25fY29uZmlnKSBvdmVycmlkZTsKICAgdm9pZCBEZXN0cm95UnRwVmlkZW9T
ZW5kZXIoCiAgICAgICBSdHBWaWRlb1NlbmRlckludGVyZmFjZSogcnRwX3ZpZGVvX3NlbmRlcikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF90cmFu
c3BvcnRfY29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5oCmluZGV4IDVjNTFjNTRmZTEzY2YxMDJm
Y2M1YWZkZDAyYzFhNWZkZmRiNjk3YjcuLjk4Njg1ODVjZGY4MTEzOTI4YTFhZDYzZGQ2NWVlY2M5
NzFjYzJmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdHJh
bnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaApAQCAtMjAsMTAgKzIwLDEyIEBACiAK
ICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2JpdHJhdGVf
Y29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKICNp
bmNsdWRlICJhcGkvZmVjX2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L2Jp
dHJhdGVfc2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcuaCIKICNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydGNwX3N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogCiBuYW1lc3BhY2UgcnRjIHsK
QEAgLTM1LDYgKzM3LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNsYXNzIENhbGxTdGF0czsK
IGNsYXNzIENhbGxTdGF0c09ic2VydmVyOworY2xhc3MgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U7
CiBjbGFzcyBUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlcjsKIGNsYXNzIFRyYW5zcG9ydDsKIGNs
YXNzIE1vZHVsZTsKQEAgLTYyLDYgKzY1LDExIEBAIHN0cnVjdCBSdHBTZW5kZXJPYnNlcnZlcnMg
ewogICBTZW5kUGFja2V0T2JzZXJ2ZXIqIHNlbmRfcGFja2V0X29ic2VydmVyOwogfTsKIAorc3Ry
dWN0IFJ0cFNlbmRlckZyYW1lRW5jcnlwdGlvbkNvbmZpZyB7CisgIEZyYW1lRW5jcnlwdG9ySW50
ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IgPSBudWxscHRyOworICBDcnlwdG9PcHRpb25zIGNyeXB0
b19vcHRpb25zOworfTsKKwogLy8gQW4gUnRwVHJhbnNwb3J0Q29udHJvbGxlciBzaG91bGQgb3du
IGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUgUlRQCiAvLyB0cmFuc3BvcnQgdG8vZnJvbSBhIHJl
bW90ZSBlbmRwb2ludC4gV2Ugc2hvdWxkIGhhdmUgc2VwYXJhdGUKIC8vIGludGVyZmFjZXMgZm9y
IHNlbmQgYW5kIHJlY2VpdmUgc2lkZSwgZXZlbiBpZiB0aGV5IGFyZSBpbXBsZW1lbnRlZApAQCAt
OTcsMTEgKzEwNSwxMiBAQCBjbGFzcyBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFj
ZSB7CiAgICAgICAvLyBUT0RPKGhvbG1lcik6IE1vdmUgc3RhdGVzIGludG8gUnRwVHJhbnNwb3J0
Q29udHJvbGxlclNlbmQuCiAgICAgICBjb25zdCBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwUGF5bG9h
ZFN0YXRlPiYgc3RhdGVzLAogICAgICAgY29uc3QgUnRwQ29uZmlnJiBydHBfY29uZmlnLAotICAg
ICAgY29uc3QgUnRjcENvbmZpZyYgcnRjcF9jb25maWcsCisgICAgICBpbnQgcnRjcF9yZXBvcnRf
aW50ZXJ2YWxfbXMsCiAgICAgICBUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LAogICAgICAgY29u
c3QgUnRwU2VuZGVyT2JzZXJ2ZXJzJiBvYnNlcnZlcnMsCiAgICAgICBSdGNFdmVudExvZyogZXZl
bnRfbG9nLAotICAgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+IGZlY19jb250cm9s
bGVyKSA9IDA7CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlcj4gZmVjX2NvbnRy
b2xsZXIsCisgICAgICBjb25zdCBSdHBTZW5kZXJGcmFtZUVuY3J5cHRpb25Db25maWcmIGZyYW1l
X2VuY3J5cHRpb25fY29uZmlnKSA9IDA7CiAgIHZpcnR1YWwgdm9pZCBEZXN0cm95UnRwVmlkZW9T
ZW5kZXIoCiAgICAgICBSdHBWaWRlb1NlbmRlckludGVyZmFjZSogcnRwX3ZpZGVvX3NlbmRlcikg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3J0cF92aWRlb19zZW5kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF92aWRlb19zZW5kZXIuY2MKaW5kZXggMTBkN2U3ZGFl
ZGE2ZDMyMTc1NmNhZjk5Mjg0NWVkYThkN2NjYTUyMi4uYmExYjk5MmU5NTAyNWFjYTU4YmM2Y2My
Y2ZhMTE5MGNlYjgzODFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlkZW9fc2VuZGVyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3ZpZGVvX3NlbmRlci5jYwpA
QCAtNDAsOCArNDAsOCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXRoTVRVID0gMTUwMDsKIAog
c3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFJ0Y3A+PiBDcmVhdGVSdHBSdGNwTW9kdWxl
cygKICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4mIHNzcmNzLAotICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHVpbnQzMl90PiYgcHJvdGVjdGVkX21lZGlhX3NzcmNzLAotICAgIGNvbnN0IFJ0
Y3BDb25maWcmIHJ0Y3BfY29uZmlnLAorICAgIGNvbnN0IFJ0cENvbmZpZyYgcnRwX2NvbmZpZywK
KyAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMsCiAgICAgVHJhbnNwb3J0KiBzZW5kX3Ry
YW5zcG9ydCwKICAgICBSdGNwSW50cmFGcmFtZU9ic2VydmVyKiBpbnRyYV9mcmFtZV9jYWxsYmFj
aywKICAgICBSdGNwQmFuZHdpZHRoT2JzZXJ2ZXIqIGJhbmR3aWR0aF9jYWxsYmFjaywKQEAgLTU2
LDggKzU2LDExIEBAIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBSdGNwPj4gQ3JlYXRl
UnRwUnRjcE1vZHVsZXMoCiAgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKICAgICBSYXRlTGlt
aXRlciogcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyLAogICAgIE92ZXJoZWFkT2JzZXJ2ZXIq
IG92ZXJoZWFkX29ic2VydmVyLAotICAgIFJ0cEtlZXBBbGl2ZUNvbmZpZyBrZWVwYWxpdmVfY29u
ZmlnKSB7CisgICAgUnRwS2VlcEFsaXZlQ29uZmlnIGtlZXBhbGl2ZV9jb25maWcsCisgICAgRnJh
bWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvciwKKyAgICBjb25zdCBDcnlwdG9P
cHRpb25zJiBjcnlwdG9fb3B0aW9ucykgewogICBSVENfRENIRUNLX0dUKHNzcmNzLnNpemUoKSwg
MCk7CisKICAgUnRwUnRjcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogICBjb25maWd1
cmF0aW9uLmF1ZGlvID0gZmFsc2U7CiAgIGNvbmZpZ3VyYXRpb24ucmVjZWl2ZXJfb25seSA9IGZh
bHNlOwpAQCAtNzksMTIgKzgyLDE1IEBAIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBS
dGNwPj4gQ3JlYXRlUnRwUnRjcE1vZHVsZXMoCiAgIGNvbmZpZ3VyYXRpb24ucmV0cmFuc21pc3Np
b25fcmF0ZV9saW1pdGVyID0gcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyOwogICBjb25maWd1
cmF0aW9uLm92ZXJoZWFkX29ic2VydmVyID0gb3ZlcmhlYWRfb2JzZXJ2ZXI7CiAgIGNvbmZpZ3Vy
YXRpb24ua2VlcGFsaXZlX2NvbmZpZyA9IGtlZXBhbGl2ZV9jb25maWc7Ci0gIGNvbmZpZ3VyYXRp
b24ucnRjcF9pbnRlcnZhbF9jb25maWcudmlkZW9faW50ZXJ2YWxfbXMgPQotICAgICAgcnRjcF9j
b25maWcudmlkZW9fcmVwb3J0X2ludGVydmFsX21zOwotICBjb25maWd1cmF0aW9uLnJ0Y3BfaW50
ZXJ2YWxfY29uZmlnLmF1ZGlvX2ludGVydmFsX21zID0KLSAgICAgIHJ0Y3BfY29uZmlnLmF1ZGlv
X3JlcG9ydF9pbnRlcnZhbF9tczsKKyAgY29uZmlndXJhdGlvbi5mcmFtZV9lbmNyeXB0b3IgPSBm
cmFtZV9lbmNyeXB0b3I7CisgIGNvbmZpZ3VyYXRpb24ucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9u
ID0KKyAgICAgIGNyeXB0b19vcHRpb25zLnNmcmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb247
CisgIGNvbmZpZ3VyYXRpb24uZXh0bWFwX2FsbG93X21peGVkID0gcnRwX2NvbmZpZy5leHRtYXBf
YWxsb3dfbWl4ZWQ7CisgIGNvbmZpZ3VyYXRpb24ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPSBy
dGNwX3JlcG9ydF9pbnRlcnZhbF9tczsKKwogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
UnRwUnRjcD4+IG1vZHVsZXM7Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiYgZmxleGZl
Y19wcm90ZWN0ZWRfc3NyY3MgPSBwcm90ZWN0ZWRfbWVkaWFfc3NyY3M7CisgIGNvbnN0IHN0ZDo6
dmVjdG9yPHVpbnQzMl90PiYgZmxleGZlY19wcm90ZWN0ZWRfc3NyY3MgPQorICAgICAgcnRwX2Nv
bmZpZy5mbGV4ZmVjLnByb3RlY3RlZF9tZWRpYV9zc3JjczsKICAgZm9yICh1aW50MzJfdCBzc3Jj
IDogc3NyY3MpIHsKICAgICBib29sIGVuYWJsZV9mbGV4ZmVjID0gZmxleGZlY19zZW5kZXIgIT0g
bnVsbHB0ciAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZpbmQoZmxleGZlY19w
cm90ZWN0ZWRfc3NyY3MuYmVnaW4oKSwKQEAgLTE3NywxMyArMTgzLDE1IEBAIFJ0cFZpZGVvU2Vu
ZGVyOjpSdHBWaWRlb1NlbmRlcigKICAgICBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwU3RhdGU+IHN1
c3BlbmRlZF9zc3JjcywKICAgICBjb25zdCBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwUGF5bG9hZFN0
YXRlPiYgc3RhdGVzLAogICAgIGNvbnN0IFJ0cENvbmZpZyYgcnRwX2NvbmZpZywKLSAgICBjb25z
dCBSdGNwQ29uZmlnJiBydGNwX2NvbmZpZywKKyAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxf
bXMsCiAgICAgVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwKICAgICBjb25zdCBSdHBTZW5kZXJP
YnNlcnZlcnMmIG9ic2VydmVycywKICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVy
ZmFjZSogdHJhbnNwb3J0LAogICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCiAgICAgUmF0ZUxp
bWl0ZXIqIHJldHJhbnNtaXNzaW9uX2xpbWl0ZXIsCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZlY0Nv
bnRyb2xsZXI+IGZlY19jb250cm9sbGVyKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9s
bGVyPiBmZWNfY29udHJvbGxlciwKKyAgICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVf
ZW5jcnlwdG9yLAorICAgIGNvbnN0IENyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKQogICAg
IDogc2VuZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXygKICAgICAgICAgICB3ZWJydGM6OmZpZWxk
X3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1TZW5kU2lkZUJ3ZS1XaXRoT3ZlcmhlYWQiKSksCiAg
ICAgICBhY3RpdmVfKGZhbHNlKSwKQEAgLTE5MSwyNSArMTk5LDI2IEBAIFJ0cFZpZGVvU2VuZGVy
OjpSdHBWaWRlb1NlbmRlcigKICAgICAgIHN1c3BlbmRlZF9zc3Jjc18oc3RkOjptb3ZlKHN1c3Bl
bmRlZF9zc3JjcykpLAogICAgICAgZmxleGZlY19zZW5kZXJfKE1heWJlQ3JlYXRlRmxleGZlY1Nl
bmRlcihydHBfY29uZmlnLCBzdXNwZW5kZWRfc3NyY3NfKSksCiAgICAgICBmZWNfY29udHJvbGxl
cl8oc3RkOjptb3ZlKGZlY19jb250cm9sbGVyKSksCi0gICAgICBydHBfbW9kdWxlc18oCi0gICAg
ICAgICAgQ3JlYXRlUnRwUnRjcE1vZHVsZXMoc3NyY3MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnRwX2NvbmZpZy5mbGV4ZmVjLnByb3RlY3RlZF9tZWRpYV9zc3JjcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydGNwX2NvbmZpZywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZW5kX3RyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvYnNlcnZlcnMuaW50cmFfZnJhbWVfY2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhbnNwb3J0LT5HZXRCYW5kd2lkdGhPYnNlcnZlcigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYnNlcnZlcnMucnRjcF9ydHRfc3RhdHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxleGZlY19zZW5kZXJfLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9ic2VydmVycy5iaXRyYXRlX29ic2VydmVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9ic2VydmVycy5mcmFtZV9jb3VudF9vYnNlcnZlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvYnNlcnZlcnMucnRjcF90eXBlX29ic2VydmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5zZW5kX2RlbGF5X29ic2VydmVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5zZW5kX3BhY2tldF9vYnNlcnZl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9sb2csCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0cmFuc21pc3Npb25fbGltaXRlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zcG9ydC0+a2VlcGFsaXZlX2NvbmZpZygpKSksCisgICAgICBydHBfbW9kdWxlc18oQ3Jl
YXRlUnRwUnRjcE1vZHVsZXMoc3NyY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnRwX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZW5kX3RyYW5zcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvYnNlcnZlcnMuaW50cmFfZnJhbWVfY2FsbGJhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5HZXRCYW5kd2lkdGhPYnNl
cnZlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9y
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMucnRj
cF9ydHRfc3RhdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxl
eGZlY19zZW5kZXJfLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9ic2VydmVycy5iaXRyYXRlX29ic2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9ic2VydmVycy5mcmFtZV9jb3VudF9vYnNlcnZlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMucnRjcF90eXBlX29ic2Vy
dmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5z
ZW5kX2RlbGF5X29ic2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9ic2VydmVycy5zZW5kX3BhY2tldF9vYnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBldmVudF9sb2csCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0cmFuc21pc3Npb25fbGltaXRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYW5zcG9ydC0+a2VlcGFsaXZlX2NvbmZpZygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2VuY3J5cHRvciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnlwdG9fb3B0aW9ucykpLAogICAgICAgcnRw
X2NvbmZpZ18ocnRwX2NvbmZpZyksCiAgICAgICB0cmFuc3BvcnRfKHRyYW5zcG9ydCksCiAgICAg
ICB0cmFuc3BvcnRfb3ZlcmhlYWRfYnl0ZXNfcGVyX3BhY2tldF8oMCksCkBAIC0yNDYsOSArMjU1
LDYgQEAgUnRwVmlkZW9TZW5kZXI6OlJ0cFZpZGVvU2VuZGVyKAogICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJ0cF9jb25maWdfLmV4dGVuc2lvbnMuc2l6ZSgpOyArK2kpIHsKICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgZXh0ZW5zaW9uID0gcnRwX2NvbmZpZ18uZXh0ZW5zaW9uc1tpXS51cmk7CiAg
ICAgaW50IGlkID0gcnRwX2NvbmZpZ18uZXh0ZW5zaW9uc1tpXS5pZDsKLSAgICAvLyBPbmUtYnl0
ZS1leHRlbnNpb24gbG9jYWwgaWRlbnRpZmllcnMgYXJlIGluIHRoZSByYW5nZSAxLTE0IGluY2x1
c2l2ZS4KLSAgICBSVENfRENIRUNLX0dFKGlkLCAxKTsKLSAgICBSVENfRENIRUNLX0xFKGlkLCAx
NCk7CiAgICAgUlRDX0RDSEVDSyhSdHBFeHRlbnNpb246OklzU3VwcG9ydGVkRm9yVmlkZW8oZXh0
ZW5zaW9uKSk7CiAgICAgZm9yIChhdXRvJiBydHBfcnRjcCA6IHJ0cF9tb2R1bGVzXykgewogICAg
ICAgUlRDX0NIRUNLKHJ0cF9ydGNwLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihleHRlbnNp
b24sIGlkKSk7CkBAIC01OTIsMTIgKzU5OCwxNCBAQCB2b2lkIFJ0cFZpZGVvU2VuZGVyOjpPbkJp
dHJhdGVVcGRhdGVkKHVpbnQzMl90IGJpdHJhdGVfYnBzLAogICBydGM6OkNyaXRTY29wZSBsb2Nr
KCZjcml0Xyk7CiAgIHVpbnQzMl90IHBheWxvYWRfYml0cmF0ZV9icHMgPSBiaXRyYXRlX2JwczsK
ICAgaWYgKHNlbmRfc2lkZV9id2Vfd2l0aF9vdmVyaGVhZF8pIHsKLSAgICBwYXlsb2FkX2JpdHJh
dGVfYnBzIC09IENhbGN1bGF0ZU92ZXJoZWFkUmF0ZUJwcygKKyAgICB1aW50MzJfdCBvdmVyaGVh
ZF9icHMgPSBDYWxjdWxhdGVPdmVyaGVhZFJhdGVCcHMoCiAgICAgICAgIENhbGN1bGF0ZVBhY2tl
dFJhdGUoCiAgICAgICAgICAgICBiaXRyYXRlX2JwcywKICAgICAgICAgICAgIHJ0cF9jb25maWdf
Lm1heF9wYWNrZXRfc2l6ZSArIHRyYW5zcG9ydF9vdmVyaGVhZF9ieXRlc19wZXJfcGFja2V0Xyks
CiAgICAgICAgIG92ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXRfICsgdHJhbnNwb3J0X292ZXJoZWFk
X2J5dGVzX3Blcl9wYWNrZXRfLAogICAgICAgICBiaXRyYXRlX2Jwcyk7CisgICAgUlRDX0RDSEVD
S19MRShvdmVyaGVhZF9icHMsIGJpdHJhdGVfYnBzKTsKKyAgICBwYXlsb2FkX2JpdHJhdGVfYnBz
ID0gYml0cmF0ZV9icHMgLSBvdmVyaGVhZF9icHM7CiAgIH0KIAogICAvLyBHZXQgdGhlIGVuY29k
ZXIgdGFyZ2V0IHJhdGUuIEl0IGlzIHRoZSBlc3RpbWF0ZWQgbmV0d29yayByYXRlIC0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRw
X3ZpZGVvX3NlbmRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY2FsbC9ydHBfdmlkZW9fc2VuZGVyLmgKaW5kZXggZGIzMjliZTAwYjA0NDcwZmIzOTE3ZjQy
MGRmNDg1YzNkNWI4YjI5MC4uYWRhYzQ2YmNkODEzMDg0NjU0YjM2Y2Y3NDIxMTdjZjUyZjFhN2Nm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9ydHBfdmlkZW9fc2VuZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlkZW9fc2VuZGVyLmgKQEAgLTIzLDcgKzIzLDYgQEAK
ICNpbmNsdWRlICJjYWxsL3J0cF9wYXlsb2FkX3BhcmFtcy5oIgogI2luY2x1ZGUgImNhbGwvcnRw
X3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9y
dHBfdmlkZW9fc2VuZGVyX2ludGVyZmFjZS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAg
Ly8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9n
L3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxl
eGZlY19zZW5kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdmlk
ZW9faGVhZGVyLmgiCkBAIC0zNiw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitj
bGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsKIGNsYXNzIFJUUEZyYWdtZW50YXRpb25IZWFk
ZXI7CiBjbGFzcyBSdHBSdGNwOwogY2xhc3MgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRl
cmZhY2U7CkBAIC01MywxMyArNTMsMTUgQEAgY2xhc3MgUnRwVmlkZW9TZW5kZXIgOiBwdWJsaWMg
UnRwVmlkZW9TZW5kZXJJbnRlcmZhY2UsCiAgICAgICBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwU3Rh
dGU+IHN1c3BlbmRlZF9zc3JjcywKICAgICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBQ
YXlsb2FkU3RhdGU+JiBzdGF0ZXMsCiAgICAgICBjb25zdCBSdHBDb25maWcmIHJ0cF9jb25maWcs
Ci0gICAgICBjb25zdCBSdGNwQ29uZmlnJiBydGNwX2NvbmZpZywKKyAgICAgIGludCBydGNwX3Jl
cG9ydF9pbnRlcnZhbF9tcywKICAgICAgIFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQsCiAgICAg
ICBjb25zdCBSdHBTZW5kZXJPYnNlcnZlcnMmIG9ic2VydmVycywKICAgICAgIFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFuc3BvcnQsCiAgICAgICBSdGNFdmVudExvZyog
ZXZlbnRfbG9nLAogICAgICAgUmF0ZUxpbWl0ZXIqIHJldHJhbnNtaXNzaW9uX2xpbWl0ZXIsICAv
LyBtb3ZlIGluc2lkZSBSdHBUcmFuc3BvcnQKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250
cm9sbGVyPiBmZWNfY29udHJvbGxlcik7CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJv
bGxlcj4gZmVjX2NvbnRyb2xsZXIsCisgICAgICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJh
bWVfZW5jcnlwdG9yLAorICAgICAgY29uc3QgQ3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMp
OyAgLy8gbW92ZSBpbnNpZGUgUnRwVHJhbnNwb3J0CiAgIH5SdHBWaWRlb1NlbmRlcigpIG92ZXJy
aWRlOwogCiAgIC8vIFJlZ2lzdGVyUHJvY2Vzc1RocmVhZCByZWdpc3RlciB8bW9kdWxlX3Byb2Nl
c3NfdGhyZWFkfCB3aXRoIHRob3NlIG9iamVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3ZpZGVvX3NlbmRlcl91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRw
X3ZpZGVvX3NlbmRlcl91bml0dGVzdC5jYwppbmRleCBlOTFiZmM0YWViMTRmMjY4ZTMwOWVhZmMw
NDA1MjY5ZDI5M2NjMjkzLi44YWI4OWQ2MTA0YzQ2NWFiZmZjOTg2N2M0YjhkMzRjY2NmYWFiYzk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL3J0cF92aWRlb19zZW5kZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlkZW9fc2VuZGVyX3VuaXR0ZXN0LmNj
CkBAIC0xMDIsMTIgKzEwMiwxMyBAQCBjbGFzcyBSdHBWaWRlb1NlbmRlclRlc3RGaXh0dXJlIHsK
ICAgICBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwU3RhdGU+IHN1c3BlbmRlZF9zc3JjczsKICAgICBy
b3V0ZXJfID0gYWJzbDo6bWFrZV91bmlxdWU8UnRwVmlkZW9TZW5kZXI+KAogICAgICAgICBjb25m
aWdfLnJ0cC5zc3Jjcywgc3VzcGVuZGVkX3NzcmNzLCBzdXNwZW5kZWRfcGF5bG9hZF9zdGF0ZXMs
Ci0gICAgICAgIGNvbmZpZ18ucnRwLCBjb25maWdfLnJ0Y3AsICZ0cmFuc3BvcnRfLAorICAgICAg
ICBjb25maWdfLnJ0cCwgY29uZmlnXy5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcywgJnRyYW5zcG9y
dF8sCiAgICAgICAgIENyZWF0ZU9ic2VydmVycygmY2FsbF9zdGF0c18sICZlbmNvZGVyX2ZlZWRi
YWNrXywgJnN0YXRzX3Byb3h5XywKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0c19wcm94
eV8sICZzdGF0c19wcm94eV8sICZzdGF0c19wcm94eV8sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAmc3RhdHNfcHJveHlfLCAmc3RhdHNfcHJveHlfLCAmc2VuZF9kZWxheV9zdGF0c18pLAogICAg
ICAgICAmdHJhbnNwb3J0X2NvbnRyb2xsZXJfLCAmZXZlbnRfbG9nXywgJnJldHJhbnNtaXNzaW9u
X3JhdGVfbGltaXRlcl8sCi0gICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZlY0NvbnRyb2xsZXJE
ZWZhdWx0PigmY2xvY2tfKSk7CisgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZlY0NvbnRyb2xs
ZXJEZWZhdWx0PigmY2xvY2tfKSwgbnVsbHB0ciwKKyAgICAgICAgQ3J5cHRvT3B0aW9uc3t9KTsK
ICAgfQogCiAgIFJ0cFZpZGVvU2VuZGVyKiByb3V0ZXIoKSB7IHJldHVybiByb3V0ZXJfLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9zaW11bGF0ZWRfbmV0d29yay5jYwppbmRleCBlZTU4ZGNlNzE4
MjQ4YWExMDZiYzNhODE3YTM0YTkyMWM4OTI5ZmE2Li43N2JlMTQ4MjFjMmFlZjFlYjc3ZjVmZmE2
NmYxN2ZiZTQ2NDBiMmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvc2ltdWxhdGVkX25ldHdvcmsuY2MK
QEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+
CiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9yYXRlLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yNiw2ICsyNyw5IEBAIFNpbXVsYXRlZE5ldHdvcms6
On5TaW11bGF0ZWROZXR3b3JrKCkgPSBkZWZhdWx0OwogCiB2b2lkIFNpbXVsYXRlZE5ldHdvcms6
OlNldENvbmZpZyhjb25zdCBTaW11bGF0ZWROZXR3b3JrOjpDb25maWcmIGNvbmZpZykgewogICBy
dGM6OkNyaXRTY29wZSBjcml0KCZjb25maWdfbG9ja18pOworICBpZiAoY29uZmlnXy5saW5rX2Nh
cGFjaXR5X2ticHMgIT0gY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcykgeworICAgIHJlc2V0X2Nh
cGFjaXR5X2RlbGF5X2Vycm9yXyA9IHRydWU7CisgIH0KICAgY29uZmlnXyA9IGNvbmZpZzsgIC8v
IFNoYWxsb3cgY29weSBvZiB0aGUgc3RydWN0LgogICBkb3VibGUgcHJvYl9sb3NzID0gY29uZmln
Lmxvc3NfcGVyY2VudCAvIDEwMC4wOwogICBpZiAoY29uZmlnXy5hdmdfYnVyc3RfbG9zc19sZW5n
dGggPT0gLTEpIHsKQEAgLTY0LDQyICs2OCw0NSBAQCBib29sIFNpbXVsYXRlZE5ldHdvcms6OkVu
cXVldWVQYWNrZXQoUGFja2V0SW5GbGlnaHRJbmZvIHBhY2tldCkgewogICAgIC8vIFRvbyBtYW55
IHBhY2tldCBvbiB0aGUgbGluaywgZHJvcCB0aGlzIG9uZS4KICAgICByZXR1cm4gZmFsc2U7CiAg
IH0KLQotICAvLyBEZWxheSBpbnRyb2R1Y2VkIGJ5IHRoZSBsaW5rIGNhcGFjaXR5LgotICBpbnQ2
NF90IGNhcGFjaXR5X2RlbGF5X21zID0gMDsKLSAgaWYgKGNvbmZpZy5saW5rX2NhcGFjaXR5X2ti
cHMgPiAwKSB7Ci0gICAgLy8gVXNpbmcgYnl0ZXMgcGVyIG1pbGxpc2Vjb25kIHRvIGF2b2lkIGxv
c2luZyBwcmVjaXNpb24uCi0gICAgY29uc3QgaW50NjRfdCBieXRlc19wZXJfbWlsbGlzZWNvbmQg
PSBjb25maWcubGlua19jYXBhY2l0eV9rYnBzIC8gODsKLSAgICAvLyBUbyByb3VuZCB0byB0aGUg
Y2xvc2VzdCBtaWxsaXNlY29uZCB3ZSBhZGQgaGFsZiBhIG1pbGxpc2Vjb25kcyB3b3J0aCBvZgot
ICAgIC8vIGJ5dGVzIHRvIHRoZSBkZWxheSBjYWxjdWxhdGlvbi4KLSAgICBjYXBhY2l0eV9kZWxh
eV9tcyA9IChwYWNrZXQuc2l6ZSArIGNhcGFjaXR5X2RlbGF5X2Vycm9yX2J5dGVzXyArCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfcGVyX21pbGxpc2Vjb25kIC8gMikgLwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnl0ZXNfcGVyX21pbGxpc2Vjb25kOwotICAgIGNhcGFjaXR5X2Rl
bGF5X2Vycm9yX2J5dGVzXyArPQotICAgICAgICBwYWNrZXQuc2l6ZSAtIGNhcGFjaXR5X2RlbGF5
X21zICogYnl0ZXNfcGVyX21pbGxpc2Vjb25kOwotICB9CiAgIGludDY0X3QgbmV0d29ya19zdGFy
dF90aW1lX3VzID0gcGFja2V0LnNlbmRfdGltZV91czsKLQogICB7CiAgICAgcnRjOjpDcml0U2Nv
cGUgY3JpdCgmY29uZmlnX2xvY2tfKTsKKyAgICBpZiAocmVzZXRfY2FwYWNpdHlfZGVsYXlfZXJy
b3JfKSB7CisgICAgICBjYXBhY2l0eV9kZWxheV9lcnJvcl9ieXRlc18gPSAwOworICAgICAgcmVz
ZXRfY2FwYWNpdHlfZGVsYXlfZXJyb3JfID0gZmFsc2U7CisgICAgfQogICAgIGlmIChwYXVzZV90
cmFuc21pc3Npb25fdW50aWxfdXNfKSB7CiAgICAgICBuZXR3b3JrX3N0YXJ0X3RpbWVfdXMgPQog
ICAgICAgICAgIHN0ZDo6bWF4KG5ldHdvcmtfc3RhcnRfdGltZV91cywgKnBhdXNlX3RyYW5zbWlz
c2lvbl91bnRpbF91c18pOwogICAgICAgcGF1c2VfdHJhbnNtaXNzaW9uX3VudGlsX3VzXy5yZXNl
dCgpOwogICAgIH0KICAgfQorCisgIC8vIERlbGF5IGludHJvZHVjZWQgYnkgdGhlIGxpbmsgY2Fw
YWNpdHkuCisgIFRpbWVEZWx0YSBjYXBhY2l0eV9kZWxheSA9IFRpbWVEZWx0YTo6WmVybygpOwor
ICBpZiAoY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA+IDApIHsKKyAgICBjb25zdCBEYXRhUmF0
ZSBsaW5rX2NhcGFjaXR5ID0gRGF0YVJhdGU6OmticHMoY29uZmlnLmxpbmtfY2FwYWNpdHlfa2Jw
cyk7CisgICAgaW50NjRfdCBjb21wZW5zYXRlZF9zaXplID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8
aW50NjRfdD4ocGFja2V0LnNpemUpICsgY2FwYWNpdHlfZGVsYXlfZXJyb3JfYnl0ZXNfOworICAg
IGNhcGFjaXR5X2RlbGF5ID0gRGF0YVNpemU6OmJ5dGVzKGNvbXBlbnNhdGVkX3NpemUpIC8gbGlu
a19jYXBhY2l0eTsKKworICAgIGNhcGFjaXR5X2RlbGF5X2Vycm9yX2J5dGVzXyArPQorICAgICAg
ICBwYWNrZXQuc2l6ZSAtIChjYXBhY2l0eV9kZWxheSAqIGxpbmtfY2FwYWNpdHkpLmJ5dGVzKCk7
CisgIH0KKwogICAvLyBDaGVjayBpZiB0aGVyZSBhbHJlYWR5IGFyZSBwYWNrZXRzIG9uIHRoZSBs
aW5rIGFuZCBjaGFuZ2UgbmV0d29yayBzdGFydAogICAvLyB0aW1lIGZvcndhcmQgaWYgdGhlcmUg
aXMuCiAgIGlmICghY2FwYWNpdHlfbGlua18uZW1wdHkoKSAmJgogICAgICAgbmV0d29ya19zdGFy
dF90aW1lX3VzIDwgY2FwYWNpdHlfbGlua18uYmFjaygpLmFycml2YWxfdGltZV91cykKICAgICBu
ZXR3b3JrX3N0YXJ0X3RpbWVfdXMgPSBjYXBhY2l0eV9saW5rXy5iYWNrKCkuYXJyaXZhbF90aW1l
X3VzOwogCi0gIGludDY0X3QgYXJyaXZhbF90aW1lX3VzID0gbmV0d29ya19zdGFydF90aW1lX3Vz
ICsgY2FwYWNpdHlfZGVsYXlfbXMgKiAxMDAwOworICBpbnQ2NF90IGFycml2YWxfdGltZV91cyA9
IG5ldHdvcmtfc3RhcnRfdGltZV91cyArIGNhcGFjaXR5X2RlbGF5LnVzKCk7CiAgIGNhcGFjaXR5
X2xpbmtfLnB1c2goe3BhY2tldCwgYXJyaXZhbF90aW1lX3VzfSk7CiAgIHJldHVybiB0cnVlOwog
fQogCiBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBTaW11bGF0ZWROZXR3b3JrOjpOZXh0RGVsaXZl
cnlUaW1lVXMoKSBjb25zdCB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJnByb2Nlc3NfbG9ja18p
OwogICBpZiAoIWRlbGF5X2xpbmtfLmVtcHR5KCkpCiAgICAgcmV0dXJuIGRlbGF5X2xpbmtfLmJl
Z2luKCktPmFycml2YWxfdGltZV91czsKICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3NpbXVs
YXRlZF9uZXR3b3JrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgKaW5kZXggMGY4NDUzMjgzYTg4ZGQ5OWRlZWRmN2M4
ZGRlYWNjMjZkMjkyZDhlYS4uZTk3ODAyNzA5MmM3NzkzZGQzY2U0MzBkOWJiNzNlZjM3NzVkMmVk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9zaW11bGF0ZWRfbmV0d29yay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvc2ltdWxhdGVkX25ldHdvcmsuaApAQCAtMjgsNyArMjgsNyBA
QCBuYW1lc3BhY2Ugd2VicnRjIHsKIC8vIGNhcGFjaXR5IGludHJvZHVjZWQgZGVsYXkuCiBjbGFz
cyBTaW11bGF0ZWROZXR3b3JrIDogcHVibGljIE5ldHdvcmtCZWhhdmlvckludGVyZmFjZSB7CiAg
cHVibGljOgotICB1c2luZyBDb25maWcgPSBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc7
CisgIHVzaW5nIENvbmZpZyA9IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWc7CiAgIGV4cGxp
Y2l0IFNpbXVsYXRlZE5ldHdvcmsoQ29uZmlnIGNvbmZpZywgdWludDY0X3QgcmFuZG9tX3NlZWQg
PSAxKTsKICAgflNpbXVsYXRlZE5ldHdvcmsoKSBvdmVycmlkZTsKIApAQCAtNDksNiArNDksNyBA
QCBjbGFzcyBTaW11bGF0ZWROZXR3b3JrIDogcHVibGljIE5ldHdvcmtCZWhhdmlvckludGVyZmFj
ZSB7CiAgICAgaW50NjRfdCBhcnJpdmFsX3RpbWVfdXM7CiAgIH07CiAgIHJ0Yzo6Q3JpdGljYWxT
ZWN0aW9uIGNvbmZpZ19sb2NrXzsKKyAgYm9vbCByZXNldF9jYXBhY2l0eV9kZWxheV9lcnJvcl8g
UlRDX0dVQVJERURfQlkoY29uZmlnX2xvY2tfKSA9IGZhbHNlOwogCiAgIC8vIHxwcm9jZXNzX2xv
Y2t8IGd1YXJkcyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkIGluIGRlbGF5IGFuZCBsb3Nz
CiAgIC8vIHByb2Nlc3Nlcywgc3VjaCBhcyB0aGUgcGFja2V0IHF1ZXVlcy4KQEAgLTU2LDcgKzU3
LDcgQEAgY2xhc3MgU2ltdWxhdGVkTmV0d29yayA6IHB1YmxpYyBOZXR3b3JrQmVoYXZpb3JJbnRl
cmZhY2UgewogICBzdGQ6OnF1ZXVlPFBhY2tldEluZm8+IGNhcGFjaXR5X2xpbmtfIFJUQ19HVUFS
REVEX0JZKHByb2Nlc3NfbG9ja18pOwogICBSYW5kb20gcmFuZG9tXzsKIAotICBzdGQ6OmRlcXVl
PFBhY2tldEluZm8+IGRlbGF5X2xpbmtfOworICBzdGQ6OmRlcXVlPFBhY2tldEluZm8+IGRlbGF5
X2xpbmtfIFJUQ19HVUFSREVEX0JZKHByb2Nlc3NfbG9ja18pOwogCiAgIC8vIExpbmsgY29uZmln
dXJhdGlvbi4KICAgQ29uZmlnIGNvbmZpZ18gUlRDX0dVQVJERURfQlkoY29uZmlnX2xvY2tfKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvdGVzdC9mYWtlX25ldHdvcmtfcGlwZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdGVzdC9mYWtlX25ldHdvcmtfcGlwZV91bml0
dGVzdC5jYwppbmRleCAwOWU1ODUyNDFhNDA3Njc3YWYzN2U5YTdjMjY2ZmRhZWIxNjI0MDc0Li5k
ZTVhZWM3MTM1MmNjYzdhZTA0ODgxY2E2MWJhZTNiNzhjMmE2ZDJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3Rlc3QvZmFrZV9uZXR3
b3JrX3BpcGVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC90ZXN0L2Zha2VfbmV0d29ya19waXBlX3VuaXR0ZXN0LmNjCkBAIC03
Myw3ICs3Myw3IEBAIGNsYXNzIEZha2VOZXR3b3JrUGlwZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKIAogLy8gVGVzdCB0aGUgY2FwYWNpdHkgbGluayBhbmQgdmVyaWZ5IHdlIGdldCBh
cyBtYW55IHBhY2tldHMgYXMgd2UgZXhwZWN0LgogVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3Qs
IENhcGFjaXR5VGVzdCkgewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmln
OworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnF1ZXVl
X2xlbmd0aF9wYWNrZXRzID0gMjA7CiAgIGNvbmZpZy5saW5rX2NhcGFjaXR5X2ticHMgPSA4MDsK
ICAgTW9ja1JlY2VpdmVyIHJlY2VpdmVyOwpAQCAtMTEzLDcgKzExMyw3IEBAIFRFU1RfRihGYWtl
TmV0d29ya1BpcGVUZXN0LCBDYXBhY2l0eVRlc3QpIHsKIAogLy8gVGVzdCB0aGUgZXh0cmEgbmV0
d29yayBkZWxheS4KIFRFU1RfRihGYWtlTmV0d29ya1BpcGVUZXN0LCBFeHRyYURlbGF5VGVzdCkg
ewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICBCdWlsdEluTmV0
d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnF1ZXVlX2xlbmd0aF9wYWNrZXRz
ID0gMjA7CiAgIGNvbmZpZy5xdWV1ZV9kZWxheV9tcyA9IDEwMDsKICAgY29uZmlnLmxpbmtfY2Fw
YWNpdHlfa2JwcyA9IDgwOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIFRFU1RfRihGYWtlTmV0d29ya1Bp
cGVUZXN0LCBFeHRyYURlbGF5VGVzdCkgewogLy8gVGVzdCB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMg
YW5kIHBhY2tldHMgYXJlIGRyb3BwZWQgd2hlbiBzZW5kaW5nIHRvbyBtYW55CiAvLyBwYWNrZXRz
IHRvbyBxdWlja2x5LgogVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIFF1ZXVlTGVuZ3RoVGVz
dCkgewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICBCdWlsdElu
TmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnF1ZXVlX2xlbmd0aF9wYWNr
ZXRzID0gMjsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IDgwOwogICBNb2NrUmVjZWl2
ZXIgcmVjZWl2ZXI7CkBAIC0xNzMsNyArMTczLDcgQEAgVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRl
c3QsIFF1ZXVlTGVuZ3RoVGVzdCkgewogCiAvLyBUZXN0IHdlIGdldCBzdGF0aXN0aWNzIGFzIGV4
cGVjdGVkLgogVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIFN0YXRpc3RpY3NUZXN0KSB7Ci0g
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgIEJ1aWx0SW5OZXR3b3Jr
QmVoYXZpb3JDb25maWcgY29uZmlnOwogICBjb25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMgPSAy
OwogICBjb25maWcucXVldWVfZGVsYXlfbXMgPSAyMDsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlf
a2JwcyA9IDgwOwpAQCAtMjA1LDcgKzIwNSw3IEBAIFRFU1RfRihGYWtlTmV0d29ya1BpcGVUZXN0
LCBTdGF0aXN0aWNzVGVzdCkgewogLy8gQ2hhbmdlIHRoZSBsaW5rIGNhcGFjaXR5IGhhbGYtd2F5
IHRocm91Z2ggdGhlIHRlc3QgYW5kIHZlcmlmeSB0aGF0IHRoZQogLy8gZGVsaXZlcnkgdGltZXMg
Y2hhbmdlIGFjY29yZGluZ2x5LgogVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIENoYW5naW5n
Q2FwYWNpdHlXaXRoRW1wdHlQaXBlVGVzdCkgewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWcgY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAg
Y29uZmlnLnF1ZXVlX2xlbmd0aF9wYWNrZXRzID0gMjA7CiAgIGNvbmZpZy5saW5rX2NhcGFjaXR5
X2ticHMgPSA4MDsKICAgTW9ja1JlY2VpdmVyIHJlY2VpdmVyOwpAQCAtMjY2LDcgKzI2Niw3IEBA
IFRFU1RfRihGYWtlTmV0d29ya1BpcGVUZXN0LCBDaGFuZ2luZ0NhcGFjaXR5V2l0aEVtcHR5UGlw
ZVRlc3QpIHsKIC8vIENoYW5nZSB0aGUgbGluayBjYXBhY2l0eSBoYWxmLXdheSB0aHJvdWdoIHRo
ZSB0ZXN0IGFuZCB2ZXJpZnkgdGhhdCB0aGUKIC8vIGRlbGl2ZXJ5IHRpbWVzIGNoYW5nZSBhY2Nv
cmRpbmdseS4KIFRFU1RfRihGYWtlTmV0d29ya1BpcGVUZXN0LCBDaGFuZ2luZ0NhcGFjaXR5V2l0
aFBhY2tldHNJblBpcGVUZXN0KSB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBj
b25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICBjb25maWcu
cXVldWVfbGVuZ3RoX3BhY2tldHMgPSAyMDsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9
IDgwOwogICBNb2NrUmVjZWl2ZXIgcmVjZWl2ZXI7CkBAIC0zMjEsNyArMzIxLDcgQEAgVEVTVF9G
KEZha2VOZXR3b3JrUGlwZVRlc3QsIENoYW5naW5nQ2FwYWNpdHlXaXRoUGFja2V0c0luUGlwZVRl
c3QpIHsKIAogLy8gQXQgZmlyc3QgZGlzYWxsb3cgcmVvcmRlcmluZyBhbmQgdGhlbiBhbGxvdyBy
ZW9yZGVyaW5nLgogVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIERpc2FsbG93UmVvcmRlcmlu
Z1RoZW5BbGxvd1Jlb3JkZXJpbmcpIHsKLSAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmln
IGNvbmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBjb25maWc7CiAgIGNvbmZp
Zy5xdWV1ZV9sZW5ndGhfcGFja2V0cyA9IDEwMDA7CiAgIGNvbmZpZy5saW5rX2NhcGFjaXR5X2ti
cHMgPSA4MDA7CiAgIGNvbmZpZy5xdWV1ZV9kZWxheV9tcyA9IDEwMDsKQEAgLTM3NCw3ICszNzQs
NyBAQCBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgQnVyc3RMb3NzKSB7CiAgIGNvbnN0IGlu
dCBrTnVtUGFja2V0cyA9IDEwMDAwOwogICBjb25zdCBpbnQga1BhY2tldFNpemUgPSAxMDsKIAot
ICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICBCdWlsdEluTmV0d29y
a0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnF1ZXVlX2xlbmd0aF9wYWNrZXRzID0g
a051bVBhY2tldHM7CiAgIGNvbmZpZy5sb3NzX3BlcmNlbnQgPSBrTG9zc1BlcmNlbnQ7CiAgIGNv
bmZpZy5hdmdfYnVyc3RfbG9zc19sZW5ndGggPSBrQXZnQnVyc3RMZW5ndGg7CkBAIC00MDksNyAr
NDA5LDcgQEAgVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIEJ1cnN0TG9zcykgewogfQogCiBU
RVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgU2V0UmVjZWl2ZXIpIHsKLSAgRGVmYXVsdE5ldHdv
cmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZp
ZyBjb25maWc7CiAgIGNvbmZpZy5saW5rX2NhcGFjaXR5X2ticHMgPSA4MDA7CiAgIE1vY2tSZWNl
aXZlciByZWNlaXZlcjsKICAgYXV0byBzaW11bGF0ZWRfbmV0d29yayA9IGFic2w6Om1ha2VfdW5p
cXVlPFNpbXVsYXRlZE5ldHdvcms+KGNvbmZpZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3Rlc3QvbW9ja19iaXRyYXRlX2FsbG9j
YXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC90
ZXN0L21vY2tfYml0cmF0ZV9hbGxvY2F0b3IuaAppbmRleCA3MTRjMDI1NDFmMTcyYWQ1ZDVjZDY5
NGE4MDkyY2ExNDNiOTU0NGM4Li5mMDBlZDc5YzU5ZmI3ODI4OWY4ZDkwNGQ4OWFmZTg2NWI1OWI5
ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL3Rlc3QvbW9ja19iaXRyYXRlX2FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdGVzdC9tb2NrX2JpdHJhdGVfYWxsb2Nh
dG9yLmgKQEAgLTIxLDcgKzIxLDcgQEAgY2xhc3MgTW9ja0JpdHJhdGVBbGxvY2F0b3IgOiBwdWJs
aWMgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSB7CiAgIE1PQ0tfTUVUSE9EMihBZGRPYnNlcnZl
ciwKICAgICAgICAgICAgICAgIHZvaWQoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiwgTWVkaWFT
dHJlYW1BbGxvY2F0aW9uQ29uZmlnKSk7CiAgIE1PQ0tfTUVUSE9EMShSZW1vdmVPYnNlcnZlciwg
dm9pZChCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqKSk7Ci0gIE1PQ0tfTUVUSE9EMShHZXRTdGFy
dEJpdHJhdGUsIGludChCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqKSk7CisgIE1PQ0tfQ09OU1Rf
TUVUSE9EMShHZXRTdGFydEJpdHJhdGUsIGludChCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqKSk7
CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogI2VuZGlmICAvLyBDQUxMX1RFU1RfTU9DS19C
SVRSQVRFX0FMTE9DQVRPUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0L21vY2tfcnRwX3RyYW5zcG9ydF9jb250cm9sbGVy
X3NlbmQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
dGVzdC9tb2NrX3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kLmgKaW5kZXggMzc1ODdiMmI3
NmI5YmUxOWRmYTY4YmM0YWU3M2E0NThlY2JiNGUxOS4uNGQzNGQwNmUwNTY3Yjk5ZWY0MGEwOTM1
N2ZkZWM0NjU0MTM0YWYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0L21vY2tfcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3Nl
bmQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L3Rlc3QvbW9ja19ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5oCkBAIC0xNywxMiArMTcs
MTQgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYml0cmF0ZV9jb25zdHJh
aW50cy5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgorI2luY2x1ZGUg
ImFwaS9jcnlwdG8vZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJjYWxsL3J0
cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2luY2x1ZGUvbmV0d29ya19jaGFuZ2VkX29ic2VydmVy
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9wYWNpbmcvcGFja2V0X3JvdXRlci5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL25ldHdvcmsvc2VudF9wYWNrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9uZXR3
b3Jrcm91dGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yYXRlX2xpbWl0ZXIuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9zb2NrZXQuaCIKICNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewpAQCAtMzAsMTcgKzMyLDE4IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3Mg
TW9ja1J0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kCiAgICAgOiBwdWJsaWMgUnRwVHJhbnNwb3J0
Q29udHJvbGxlclNlbmRJbnRlcmZhY2UgewogIHB1YmxpYzoKLSAgTU9DS19NRVRIT0Q5KAorICBN
T0NLX01FVEhPRDEwKAogICAgICAgQ3JlYXRlUnRwVmlkZW9TZW5kZXIsCiAgICAgICBSdHBWaWRl
b1NlbmRlckludGVyZmFjZSooY29uc3Qgc3RkOjp2ZWN0b3I8dWludDMyX3Q+JiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwU3RhdGU+LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBQ
YXlsb2FkU3RhdGU+JiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSdHBD
b25maWcmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJ0Y3BDb25maWcm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZh
bF9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc3BvcnQqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJ0cFNlbmRlck9ic2VydmVycyYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjRXZlbnRMb2cqLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSdHBTZW5kZXJGcmFtZUVuY3J5
cHRpb25Db25maWcmKSk7CiAgIE1PQ0tfTUVUSE9EMShEZXN0cm95UnRwVmlkZW9TZW5kZXIsIHZv
aWQoUnRwVmlkZW9TZW5kZXJJbnRlcmZhY2UqKSk7CiAgIE1PQ0tfTUVUSE9EMChHZXRXb3JrZXJR
dWV1ZSwgcnRjOjpUYXNrUXVldWUqKCkpOwogICBNT0NLX01FVEhPRDAocGFja2V0X3JvdXRlciwg
UGFja2V0Um91dGVyKigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fcmVjZWl2ZV9zdHJlYW0uaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fcmVjZWl2ZV9zdHJlYW0u
aAppbmRleCA0OWVmZTRmY2VhYTVlZTQ2NDcxOTJiMDhhN2YzZTA1Y2VhY2EyMmE5Li4yY2Q1ZjE2
MzFhMDliMTVhMDE5NTMxNWI3ZWI4OGMzZjE2ZmM3MTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3JlY2VpdmVfc3RyZWFt
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92
aWRlb19yZWNlaXZlX3N0cmVhbS5oCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8dmVjdG9y
PgogCiAjaW5jbHVkZSAiYXBpL2NhbGwvdHJhbnNwb3J0LmgiCisjaW5jbHVkZSAiYXBpL2NyeXB0
by9jcnlwdG9vcHRpb25zLmgiCiAjaW5jbHVkZSAiYXBpL3J0cF9oZWFkZXJzLmgiCiAjaW5jbHVk
ZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJhcGkvcnRwcmVjZWl2ZXJpbnRlcmZh
Y2UuaCIKQEAgLTI1LDEyICsyNiwxMiBAQAogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb190aW1p
bmcuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKICNp
bmNsdWRlICJjYWxsL3J0cF9jb25maWcuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8v
IE5PTElOVChidWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL2Zy
YW1lX2NhbGxiYWNrLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0Y3Bf
c3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRj
cF9kZWZpbmVzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBGcmFtZURlY3J5cHRv
ckludGVyZmFjZTsKIGNsYXNzIFJ0cFBhY2tldFNpbmtJbnRlcmZhY2U7CiBjbGFzcyBWaWRlb0Rl
Y29kZXJGYWN0b3J5OwogCkBAIC0yMTUsNiArMjE2LDE0IEBAIGNsYXNzIFZpZGVvUmVjZWl2ZVN0
cmVhbSB7CiAgICAgLy8gVE9ETyhuaXNzZSk6IFVzZWQgd2l0aCBWaWRlb0RlY29kZXJGYWN0b3J5
OjpMZWdhY3lDcmVhdGVWaWRlb0RlY29kZXIuCiAgICAgLy8gRGVsZXRlIHdoZW4gdGhhdCBtZXRo
b2QgaXMgcmV0aXJlZC4KICAgICBzdGQ6OnN0cmluZyBzdHJlYW1faWQ7CisKKyAgICAvLyBBbiBv
cHRpb25hbCBjdXN0b20gZnJhbWUgZGVjcnlwdG9yIHRoYXQgYWxsb3dzIHRoZSBlbnRpcmUgZnJh
bWUgdG8gYmUKKyAgICAvLyBkZWNyeXB0ZWQgaW4gd2hhdGV2ZXIgd2F5IHRoZSBjYWxsZXIgY2hv
c2VzLiBUaGlzIGlzIG5vdCByZXF1aXJlZCBieQorICAgIC8vIGRlZmF1bHQuCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5
cHRvcjsKKworICAgIC8vIFBlciBQZWVyQ29ubmVjdGlvbiBjcnlwdG9ncmFwaHkgb3B0aW9ucy4K
KyAgICBDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zOwogICB9OwogCiAgIC8vIFN0YXJ0cyBz
dHJlYW0gYWN0aXZpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19zZW5kX3N0cmVhbS5jYwppbmRl
eCA2YjkzZmUyODIzOGE0YjhlMzVkYTIzMGZkYWU0NTVjNjhkYzUxM2UxLi5jOGJhMzA4ZmE1NDIz
NmEyYmYwNTczM2E0MTQ2YjExOWM0ZDczNzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fc2Vu
ZF9zdHJlYW0uY2MKQEAgLTksNiArOSwxMCBAQAogICovCiAKICNpbmNsdWRlICJjYWxsL3ZpZGVv
X3NlbmRfc3RyZWFtLmgiCisKKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiYXBpL2Ny
eXB0by9mcmFtZWVuY3J5cHRvcmludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmlu
Z3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC03NSwxMSArNzks
OSBAQCBzdGQ6OnN0cmluZyBWaWRlb1NlbmRTdHJlYW06OkNvbmZpZzo6VG9TdHJpbmcoKSBjb25z
dCB7CiAgIHNzIDw8ICJ7ZW5jb2Rlcl9zZXR0aW5nczogeyBleHBlcmltZW50X2NwdV9sb2FkX2Vz
dGltYXRvcjogIgogICAgICA8PCAoZW5jb2Rlcl9zZXR0aW5ncy5leHBlcmltZW50X2NwdV9sb2Fk
X2VzdGltYXRvciA/ICJvbiIgOiAib2ZmIikgPDwgIn19IjsKICAgc3MgPDwgIiwgcnRwOiAiIDw8
IHJ0cC5Ub1N0cmluZygpOwotICBzcyA8PCAiLCBydGNwOiAiIDw8IHJ0Y3AuVG9TdHJpbmcoKTsK
KyAgc3MgPDwgIiwgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM6ICIgPDwgcnRjcF9yZXBvcnRfaW50
ZXJ2YWxfbXM7CiAgIHNzIDw8ICIsIHByZV9lbmNvZGVfY2FsbGJhY2s6ICIKICAgICAgPDwgKHBy
ZV9lbmNvZGVfY2FsbGJhY2sgPyAiKFZpZGVvU2lua0ludGVyZmFjZSkiIDogIm51bGxwdHIiKTsK
LSAgc3MgPDwgIiwgcG9zdF9lbmNvZGVfY2FsbGJhY2s6ICIKLSAgICAgPDwgKHBvc3RfZW5jb2Rl
X2NhbGxiYWNrID8gIihFbmNvZGVkRnJhbWVPYnNlcnZlcikiIDogIm51bGxwdHIiKTsKICAgc3Mg
PDwgIiwgcmVuZGVyX2RlbGF5X21zOiAiIDw8IHJlbmRlcl9kZWxheV9tczsKICAgc3MgPDwgIiwg
dGFyZ2V0X2RlbGF5X21zOiAiIDw8IHRhcmdldF9kZWxheV9tczsKICAgc3MgPDwgIiwgc3VzcGVu
ZF9iZWxvd19taW5fYml0cmF0ZTogIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19zZW5kX3N0cmVhbS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19zZW5kX3N0cmVhbS5o
CmluZGV4IDNmZjYyNGQyMzBiZDk5ODExY2M0MGVmMWQ4MzUwYjc3MjBhYjE5MmEuLjRkM2Q5YzBj
NTc0Y2I3Zjc2YzZlOWY5Yjk1MTQwMjg0ZWY2ZWJlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fc2VuZF9zdHJlYW0uaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVv
X3NlbmRfc3RyZWFtLmgKQEAgLTExLDI0ICsxMSwyOSBAQAogI2lmbmRlZiBDQUxMX1ZJREVPX1NF
TkRfU1RSRUFNX0hfCiAjZGVmaW5lIENBTExfVklERU9fU0VORF9TVFJFQU1fSF8KIAorI2luY2x1
ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVk
ZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2NhbGwvdHJhbnNwb3J0LmgiCisjaW5jbHVkZSAiYXBp
L2NyeXB0by9jcnlwdG9vcHRpb25zLmgiCisjaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIK
KyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29udGVudF90eXBlLmgiCisjaW5jbHVkZSAiYXBp
L3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3NpbmtfaW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3NvdXJjZV9pbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJfc2V0dGluZ3MuaCIKICNp
bmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmlnLmgiCi0jaW5jbHVk
ZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJj
YWxsL3J0cF9jb25maWcuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChi
dWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL2ZyYW1lX2NhbGxi
YWNrLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGlj
cy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVz
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFj
ZTsKKwogY2xhc3MgVmlkZW9TZW5kU3RyZWFtIHsKICBwdWJsaWM6CiAgIHN0cnVjdCBTdHJlYW1T
dGF0cyB7CkBAIC0xMDgsNyArMTEzLDggQEAgY2xhc3MgVmlkZW9TZW5kU3RyZWFtIHsKIAogICAg
IFJ0cENvbmZpZyBydHA7CiAKLSAgICBSdGNwQ29uZmlnIHJ0Y3A7CisgICAgLy8gVGltZSBpbnRl
cnZhbCBiZXR3ZWVuIFJUQ1AgcmVwb3J0IGZvciB2aWRlbworICAgIGludCBydGNwX3JlcG9ydF9p
bnRlcnZhbF9tcyA9IDEwMDA7CiAKICAgICAvLyBUcmFuc3BvcnQgZm9yIG91dGdvaW5nIHBhY2tl
dHMuCiAgICAgVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCA9IG51bGxwdHI7CkBAIC0xMTcsMTIg
KzEyMyw2IEBAIGNsYXNzIFZpZGVvU2VuZFN0cmVhbSB7CiAgICAgLy8gZWZmZWN0cywgc25hcHNo
b3RzIGV0Yy4gJ251bGxwdHInIGRpc2FibGVzIHRoZSBjYWxsYmFjay4KICAgICBydGM6OlZpZGVv
U2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiogcHJlX2VuY29kZV9jYWxsYmFjayA9IG51bGxwdHI7
CiAKLSAgICAvLyBDYWxsZWQgZm9yIGVhY2ggZW5jb2RlZCBmcmFtZSwgZS5nLiB1c2VkIGZvciBm
aWxlIHN0b3JhZ2UuICdudWxscHRyJwotICAgIC8vIGRpc2FibGVzIHRoZSBjYWxsYmFjay4gQWxz
byBtZWFzdXJlcyB0aW1pbmcgYW5kIHBhc3NlcyB0aGUgdGltZQotICAgIC8vIHNwZW50IG9uIGVu
Y29kaW5nLiBUaGlzIHRpbWluZyB3aWxsIG5vdCBmaXJlIGlmIGVuY29kaW5nIHRha2VzIGxvbmdl
cgotICAgIC8vIHRoYW4gdGhlIG1lYXN1cmluZyB3aW5kb3csIHNpbmNlIHRoZSBzYW1wbGUgZGF0
YSB3aWxsIGhhdmUgYmVlbiBkcm9wcGVkLgotICAgIEVuY29kZWRGcmFtZU9ic2VydmVyKiBwb3N0
X2VuY29kZV9jYWxsYmFjayA9IG51bGxwdHI7Ci0KICAgICAvLyBFeHBlY3RlZCBkZWxheSBuZWVk
ZWQgYnkgdGhlIHJlbmRlcmVyLCBpLmUuIHRoZSBmcmFtZSB3aWxsIGJlIGRlbGl2ZXJlZAogICAg
IC8vIHRoaXMgbWFueSBtaWxsaXNlY29uZHMsIGlmIHBvc3NpYmxlLCBlYXJsaWVyIHRoYW4gZXhw
ZWN0ZWQgcmVuZGVyIHRpbWUuCiAgICAgLy8gT25seSB2YWxpZCBpZiB8bG9jYWxfcmVuZGVyZXJ8
IGlzIHNldC4KQEAgLTE0Myw2ICsxNDMsMTQgQEAgY2xhc3MgVmlkZW9TZW5kU3RyZWFtIHsKICAg
ICAvLyBUcmFjayBJRCBhcyBzcGVjaWZpZWQgZHVyaW5nIHRyYWNrIGNyZWF0aW9uLgogICAgIHN0
ZDo6c3RyaW5nIHRyYWNrX2lkOwogCisgICAgLy8gQW4gb3B0aW9uYWwgY3VzdG9tIGZyYW1lIGVu
Y3J5cHRvciB0aGF0IGFsbG93cyB0aGUgZW50aXJlIGZyYW1lIHRvIGJlCisgICAgLy8gZW5jcnlw
dGVkIGluIHdoYXRldmVyIHdheSB0aGUgY2FsbGVyIGNob29zZXMuIFRoaXMgaXMgbm90IHJlcXVp
cmVkIGJ5CisgICAgLy8gZGVmYXVsdC4KKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpG
cmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yOworCisgICAgLy8gUGVyIFBl
ZXJDb25uZWN0aW9uIGNyeXB0b2dyYXBoeSBvcHRpb25zLgorICAgIENyeXB0b09wdGlvbnMgY3J5
cHRvX29wdGlvbnM7CisKICAgIHByaXZhdGU6CiAgICAgLy8gQWNjZXNzIHRvIHRoZSBjb3B5IGNv
bnN0cnVjdG9yIGlzIHByaXZhdGUgdG8gZm9yY2UgdXNlIG9mIHRoZSBDb3B5KCkKICAgICAvLyBt
ZXRob2QgZm9yIHRob3NlIGV4Y2VwdGlvbmFsIGNhc2VzIHdoZXJlIHdlIGRvIHVzZSBpdC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvZGVy
ZXZpZXcuc2V0dGluZ3MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb2RlcmV2aWV3LnNldHRpbmdzCmluZGV4IGQ4Y2Y2MTI1ZjRlM2E1MjJiZTU4ZGQ4NWNiYzc4
OGJhODJjNmFjNWMuLjE3MjRlZGRjMDcyZGVmZTFmNDFmZjBmZmRlMTE2YzMwNDQ2Mzg3ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvZGVy
ZXZpZXcuc2V0dGluZ3MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29kZXJldmlldy5zZXR0aW5ncwpAQCAtMSw1ICsxLDQgQEAKICMgVGhpcyBmaWxlIGlz
IHVzZWQgYnkgZ2l0LWNsIHRvIGdldCByZXBvc2l0b3J5IHNwZWNpZmljIGluZm9ybWF0aW9uLgot
Q0NfTElTVDogd2VicnRjLXJldmlld3NAd2VicnRjLm9yZwogQ09ERV9SRVZJRVdfU0VSVkVSOiBj
b2RlcmV2aWV3LndlYnJ0Yy5vcmcKIEdFUlJJVF9IT1NUOiBUcnVlCiBQUk9KRUNUOiB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl9hdWRpby9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl9hdWRpby9CVUlMRC5nbgppbmRleCBhYmNmZTlhZDE2ODNmYmJiNTg3MDdh
N2RiNjUyYjM5ZDNlOWMyZTBiLi43NGIwYzYwMjlmZGU2ODc3ZDlkYjMwZWRlYjkxNWZhNDMxZjdh
ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fYXVkaW8vQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL0JVSUxELmduCkBAIC00NywxMCArNDcsMTAgQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJjb21tb25fYXVkaW8iKSB7CiAgIGRlcHMgPSBbCiAgICAgIjpj
b21tb25fYXVkaW9fYyIsCiAgICAgIjpzaW5jX3Jlc2FtcGxlciIsCi0gICAgIi4uOndlYnJ0Y19j
b21tb24iLAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpndGVz
dF9wcm9kIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi9y
dGNfYmFzZTpzYW5pdGl6ZXIiLAogICAgICIuLi9ydGNfYmFzZS9tZW1vcnk6YWxpZ25lZF9hcnJh
eSIsCiAgICAgIi4uL3J0Y19iYXNlL21lbW9yeTphbGlnbmVkX21hbGxvYyIsCiAgICAgIi4uL3J0
Y19iYXNlL3N5c3RlbTphcmNoIiwKQEAgLTE4MSw3ICsxODEsNiBAQCBydGNfc291cmNlX3NldCgi
Y29tbW9uX2F1ZGlvX2MiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjpjb21tb25fYXVkaW9fY19hcm1f
YXNtIiwKICAgICAiOmNvbW1vbl9hdWRpb19jYyIsCi0gICAgIi4uOndlYnJ0Y19jb21tb24iLAog
ICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpjb21waWxlX2Fzc2Vy
dF9jIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLApAQCAtMjAxLDcgKzIw
MCw2IEBAIHJ0Y19zb3VyY2Vfc2V0KCJjb21tb25fYXVkaW9fY2MiKSB7CiAgIF0KIAogICBkZXBz
ID0gWwotICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLAogICAgICIuLi9zeXN0ZW1fd3JhcHBlcnMiLAogICBdCkBAIC0yMTIsNyArMjEw
LDYgQEAgcnRjX3NvdXJjZV9zZXQoInNpbmNfcmVzYW1wbGVyIikgewogICAgICJyZXNhbXBsZXIv
c2luY19yZXNhbXBsZXIuaCIsCiAgIF0KICAgZGVwcyA9IFsKLSAgICAiLi46d2VicnRjX2NvbW1v
biIsCiAgICAgIi4uL3J0Y19iYXNlOmd0ZXN0X3Byb2QiLAogICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uL3J0Y19iYXNlL21lbW9yeTphbGlnbmVkX21hbGxvYyIs
CkBAIC0zODEsNyArMzc4LDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOmZp
cl9maWx0ZXIiLAogICAgICAgIjpmaXJfZmlsdGVyX2ZhY3RvcnkiLAogICAgICAgIjpzaW5jX3Jl
c2FtcGxlciIsCi0gICAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4vcnRjX2Jhc2U6
Y2hlY2tzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLApAQCAtMzg5LDYgKzM4NSw3IEBAIGlm
IChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL3N5c3RlbV93cmFwcGVyczpjcHVfZmVh
dHVyZXNfYXBpIiwKICAgICAgICIuLi90ZXN0OmZpbGV1dGlscyIsCiAgICAgICAiLi4vdGVzdDp0
ZXN0X21haW4iLAorICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICIvL3Rlc3Rp
bmcvZ3Rlc3QiLAogICAgIF0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2F1ZGlvX2NvbnZlcnRlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2F1ZGlvX2Nv
bnZlcnRlci5oCmluZGV4IDc2OWQ3MjRlMmZiNjllMGI0MzI5MzNlNzcwY2FmMjljYjUwYzBmZjIu
LjI0YTVlNzJjZWU5MDQwODkwYTk3ZTI2YmIwZTAyM2JjMWY0Mzg2OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9hdWRp
b19jb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fYXVkaW8vYXVkaW9fY29udmVydGVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNp
Zm5kZWYgQ09NTU9OX0FVRElPX0FVRElPX0NPTlZFUlRFUl9IXwogI2RlZmluZSBDT01NT05fQVVE
SU9fQVVESU9fQ09OVkVSVEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxt
ZW1vcnk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVk
aW8vY2hhbm5lbF9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fYXVkaW8vY2hhbm5lbF9idWZmZXIuY2MKaW5kZXggMzhkMjMxZTA5ZDA2
NDcxZjk5YmQyOGZmMjY2OGYwMTRkZmE4ZTI0Mi4uYjliOGMyNWUzNzUwNmVkMzg5OWY4NGYwYTlm
OWRjZTdjOWYwMWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2NoYW5uZWxfYnVmZmVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9jaGFubmVsX2J1
ZmZlci5jYwpAQCAtMTAsNiArMTAsOSBAQAogCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2NoYW5u
ZWxfYnVmZmVyLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgorCisjaW5jbHVkZSAiY29tbW9uX2F1
ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVyX2MuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRl
cl9jLmNjCmluZGV4IDM0MTg0MzQ2NzJhY2UzZTIxYWIyYWYwZTRjNDhmNzczZDhmYWRkZjEuLmI2
ZWMyN2FkMjZiZGE2ZmNiOWIwYzkyNDhlOGIzN2FmM2MyNGVjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmls
dGVyX2MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX2F1ZGlvL2Zpcl9maWx0ZXJfYy5jYwpAQCAtMTEsMTEgKzExLDggQEAKICNpbmNsdWRl
ICJjb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9jLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KLQog
I2luY2x1ZGUgPG1lbW9yeT4KIAotI2luY2x1ZGUgImNvbW1vbl9hdWRpby9maXJfZmlsdGVyX25l
b24uaCIKLSNpbmNsdWRlICJjb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9zc2UuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vZmly
X2ZpbHRlcl9mYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX2F1ZGlvL2Zpcl9maWx0ZXJfZmFjdG9yeS5jYwppbmRleCAzMjQzYjI3ZWY5
YWQyZGY2MjRjNWFjN2VkN2RkZmM5Yjc3YjY1MTJhLi4xOTUyOGUzMTJlYzU0Y2M2MTc1YzM1OGVj
M2FjNzljZjI0ZGU4N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9mYWN0b3J5LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJf
ZmlsdGVyX2ZhY3RvcnkuY2MKQEAgLTEzLDEyICsxMywxMiBAQAogI2luY2x1ZGUgImNvbW1vbl9h
dWRpby9maXJfZmlsdGVyX2MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL2NwdV9mZWF0dXJlc193cmFwcGVyLmgiCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19IQVNf
TkVPTikKICNpbmNsdWRlICJjb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9uZW9uLmgiCiAjZWxpZiBk
ZWZpbmVkKFdFQlJUQ19BUkNIX1g4Nl9GQU1JTFkpCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2Zp
cl9maWx0ZXJfc3NlLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2Zl
YXR1cmVzX3dyYXBwZXIuaCIgIC8vIGtTU0UyLCBXZWJSdGNfRy4uLgogI2VuZGlmCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2Zpcl9maWx0ZXJfc3NlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9zc2Uu
aAppbmRleCA3NzA3ZjkzM2Q5ZWU2YjdiMTMwNWM1Njk0YzdiZGRhNjUzMGUwMWNhLi5iNzY4YTM3
YWExNTQ0YjA4YTZjZWEzZWMxMzc3OGZjMjMzNDZkNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9z
c2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fYXVkaW8vZmlyX2ZpbHRlcl9zc2UuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBDT01N
T05fQVVESU9fRklSX0ZJTFRFUl9TU0VfSF8KICNkZWZpbmUgQ09NTU9OX0FVRElPX0ZJUl9GSUxU
RVJfU1NFX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNp
bmNsdWRlICJjb21tb25fYXVkaW8vZmlyX2ZpbHRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVk
aW9fdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oCmluZGV4IGRlMjQyYTQ5YmU4YjY2MzQ4NGE4
YjllYjRlNWZhZWNiMDM4MjdhZjQuLmJjYTU3MTgwNDRjOTBlODYxOTFhMjIxOGVlYmNjYTUyMmVm
YzE2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191
dGlsLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgQ09NTU9OX0FVRElPX0lOQ0xVREVfQVVE
SU9fVVRJTF9IXwogI2RlZmluZSBDT01NT05fQVVESU9fSU5DTFVERV9BVURJT19VVElMX0hfCiAK
KyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21h
dGg+CiAjaW5jbHVkZSA8Y3N0cmluZz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZWFsX2ZvdXJpZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZWFsX2Zv
dXJpZXIuaAppbmRleCBhM2U0ZGQxNmE4MmMyMTM0OWVmYTYwODI4ZDk3YWE5YzU3ODJmODE1Li40
ZDBkOGJmMzhlZTkwYjYyYTY4MWJkM2M5NDA1ODAyZDhmNzRmZGYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVhbF9m
b3VyaWVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX2F1ZGlvL3JlYWxfZm91cmllci5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIENP
TU1PTl9BVURJT19SRUFMX0ZPVVJJRVJfSF8KICNkZWZpbmUgQ09NTU9OX0FVRElPX1JFQUxfRk9V
UklFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8Y29tcGxleD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZWFsX2ZvdXJpZXJfb291cmEuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZWFsX2ZvdXJp
ZXJfb291cmEuaAppbmRleCBiYjhlZWY5NmRmZjZlZjEwM2QzOTQ5MWZiZDA5ZDZkYjFlYTFkMDcy
Li5iMzZjODRmMTBiNmIyMzgyMTJlNjM3YWI1MDViM2Q1ODRlMjMwYWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVh
bF9mb3VyaWVyX29vdXJhLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX2F1ZGlvL3JlYWxfZm91cmllcl9vb3VyYS5oCkBAIC0xMSw2ICsxMSw3
IEBACiAjaWZuZGVmIENPTU1PTl9BVURJT19SRUFMX0ZPVVJJRVJfT09VUkFfSF8KICNkZWZpbmUg
Q09NTU9OX0FVRElPX1JFQUxfRk9VUklFUl9PT1VSQV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+
CiAjaW5jbHVkZSA8Y29tcGxleD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNh
bXBsZXIvcHVzaF9yZXNhbXBsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3B1c2hfcmVzYW1wbGVyLmNjCmluZGV4
IDMxOGQ5N2I3MmMyOGFkNTBmM2IwMzM3YWFmM2IzZmQ4NTVhNTQyYzguLjliODk4NjdlNWEwZGM5
MzAzMzUyNzZlZTA5ODNjMmE3Mzk2MTM1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvcHVzaF9yZXNh
bXBsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3Jlc2FtcGxlci5jYwpAQCAtMTAsMTIgKzEwLDEy
IEBACiAKICNpbmNsdWRlICJjb21tb25fYXVkaW8vcmVzYW1wbGVyL2luY2x1ZGUvcHVzaF9yZXNh
bXBsZXIuaCIKIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCiAj
aW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaCIKICNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191
dGlsLmgiCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9pbmNsdWRlL3Jlc2FtcGxl
ci5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yZXNhbXBsZXIvcHVzaF9zaW5jX3Jlc2FtcGxl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVy
L3B1c2hfc2luY19yZXNhbXBsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvcHVzaF9zaW5jX3Jlc2FtcGxlci5oCmlu
ZGV4IDFmZmU3M2Y3OWJhMjgwNmRhYTkzMjY4YTFmODU5N2RjMTE2MmE0YjkuLmRiOWNkYzFmZDRi
MzNlOGE1NjJiY2IzMjI2MjEwYmU3YWQ0MjhmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvcHVzaF9z
aW5jX3Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvcHVzaF9zaW5jX3Jlc2FtcGxlci5oCkBAIC0x
MSw2ICsxMSw4IEBACiAjaWZuZGVmIENPTU1PTl9BVURJT19SRVNBTVBMRVJfUFVTSF9TSU5DX1JF
U0FNUExFUl9IXwogI2RlZmluZSBDT01NT05fQVVESU9fUkVTQU1QTEVSX1BVU0hfU0lOQ19SRVNB
TVBMRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19y
ZXNhbXBsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvcmVzYW1wbGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9y
ZXNhbXBsZXIuY2MKaW5kZXggYWEzYTRiYWMyYWEyYmMyMzQ0N2NlMjhmNTc2NjJjZDk2YjNlZDcy
NS4uZTRkMmFhMmI2MTU1OWVkNDUwOTk3MGY2ZTU1NDlhMjdjZmYwMDU3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jl
c2FtcGxlci9yZXNhbXBsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9yZXNhbXBsZXIuY2MKQEAgLTEyLDYg
KzEyLDcgQEAKICAqIEEgd3JhcHBlciBmb3IgcmVzYW1wbGluZyBhIG51bWVyb3VzIGFtb3VudCBv
ZiBzYW1wbGluZyBjb21iaW5hdGlvbnMuCiAgKi8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1w
bGVyL3NpbmNfcmVzYW1wbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlci5jYwppbmRleCA1
YWEyMDYxYWI3NWVjNGRiMTIyZTA5OTY3NTY2ZDEwN2RhZjZiYzQxLi40NjAxNTE0MDMwMzExMmQz
ZTJjN2JkNWQ5MTdkOTY3ZDkxNmEyNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1w
bGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNhbXBsZXIuY2MKQEAgLTg4LDEzICs4OCwxMyBA
QAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNhbXBsZXIuaCIKIAog
I2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmcu
aD4KLQogI2luY2x1ZGUgPGxpbWl0cz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9hcmNoLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvY3B1X2ZlYXR1cmVzX3dyYXBwZXIuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9jcHVfZmVhdHVyZXNfd3JhcHBlci5oIiAgLy8ga1NTRTIsIFdlYlJ0Y19H
Li4uCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVz
YW1wbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyLmgKaW5kZXggOGE4MzNjZTg4Yzk5YTMy
ZjgwYmRmZmQ4MjU2MTg2MmI1NDIzYTU2OS4uMGJlNDMxOGUzMzkyMjA3MDQ1N2RlMDU5NWI4Nzk1
NzhkZGRkYjcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNh
bXBsZXIvc2luY19yZXNhbXBsZXIuaApAQCAtMTQsNiArMTQsNyBAQAogI2lmbmRlZiBDT01NT05f
QVVESU9fUkVTQU1QTEVSX1NJTkNfUkVTQU1QTEVSX0hfCiAjZGVmaW5lIENPTU1PTl9BVURJT19S
RVNBTVBMRVJfU0lOQ19SRVNBTVBMRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1
ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNhbXBsZXJfc3NlLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jl
c2FtcGxlcl9zc2UuY2MKaW5kZXggMzkwNmE3OTc1MjhhNDI1ZDAzNjIxZWExNzA2MTRmZGQwZTFi
YjkyNy4uZjZhMjRkMGEwZTBkMzQxNzQ3MzJlNjhhOTFmODMyMDQ2MDVmYWIyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlv
L3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlcl9zc2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2Ft
cGxlcl9zc2UuY2MKQEAgLTExLDEwICsxMSwxMiBAQAogLy8gTW9kaWZpZWQgZnJvbSB0aGUgQ2hy
b21pdW0gb3JpZ2luYWw6CiAvLyBzcmMvbWVkaWEvYmFzZS9zaW1kL3NpbmNfcmVzYW1wbGVyX3Nz
ZS5jYwogCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlci5o
IgotCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8
eG1taW50cmluLmg+CiAKKyNpbmNsdWRlICJjb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVz
YW1wbGVyLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBmbG9hdCBTaW5jUmVzYW1wbGVyOjpD
b252b2x2ZV9TU0UoY29uc3QgZmxvYXQqIGlucHV0X3B0ciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9zbW9vdGhpbmdf
ZmlsdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX2F1ZGlvL3Ntb290aGluZ19maWx0ZXIuY2MKaW5kZXggZDQyNmJkYTI1MDEzNDNjYzcyMWE1
YjJjMGY1MmZiNjZjMDM1MjkwZS4uMGQ1YWFhNDg1NDE1OTA0ZWIzY2NkYjAyM2ZhMmIzN2I4MWZk
ODc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY29tbW9uX2F1ZGlvL3Ntb290aGluZ19maWx0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Ntb290aGluZ19maWx0ZXIu
Y2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgPGNtYXRoPgogCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Ntb290aGluZ19maWx0ZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9zbW9vdGhpbmdfZmls
dGVyLmgKaW5kZXggY2ZmNzQ2OTUzYWE4MGFkOTBjZGQ1ZDI5ZTNkOTE1MTcxYjM1YmYyMy4uYzQ2
N2Q4NTQyNjk1NmY4ODhjZjAyNWNiY2RhNTliOGU0MGUwZDAxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Ntb290aGlu
Z19maWx0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fYXVkaW8vc21vb3RoaW5nX2ZpbHRlci5oCkBAIC0xMSw5ICsxMSwxMCBAQAogI2lm
bmRlZiBDT01NT05fQVVESU9fU01PT1RISU5HX0ZJTFRFUl9IXwogI2RlZmluZSBDT01NT05fQVVE
SU9fU01PT1RISU5HX0ZJTFRFUl9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRl
ICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vdmFkL3ZhZC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby92YWQvdmFkLmNjCmluZGV4
IDFjYjMzMmE2MWQ4ODdmZDI0ZGIxNWFlYTViOGMxZWE3ZTg5MTVhMTIuLjk4N2VkNTI2YzAwYTk3
OTNjYTk3ZmNhMzBiMzI0OGJlNjZiMDYxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby92YWQvdmFkLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby92YWQv
dmFkLmNjCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNpbmNsdWRl
ICJjb21tb25fYXVkaW8vdmFkL2luY2x1ZGUvd2VicnRjX3ZhZC5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRp
by93YXZfZmlsZS5jYwppbmRleCAwMjA5ZjUyZDJjNzM1OTJlYWE2M2RhMjVmMmJkOTFkM2U5N2Jl
ZTg1Li45MGE4OTI4MWU1Y2Q0OGRjMmUzMmMyMDU1M2MwMGYxZDFmODc4NWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8v
d2F2X2ZpbGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjCkBAIC0xMCwzNSArMTAsNDUgQEAKIAogI2luY2x1
ZGUgImNvbW1vbl9hdWRpby93YXZfZmlsZS5oIgogCisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPGxpbWl0cz4KKyNp
bmNsdWRlIDx0eXBlX3RyYWl0cz4KIAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1
ZGlvX3V0aWwuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vd2F2X2hlYWRlci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2Ug
ewogCiAvLyBXZSB3cml0ZSAxNi1iaXQgUENNIFdBViBmaWxlcy4KLXN0YXRpYyBjb25zdCBXYXZG
b3JtYXQga1dhdkZvcm1hdCA9IGtXYXZGb3JtYXRQY207Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IGtC
eXRlc1BlclNhbXBsZSA9IDI7Citjb25zdGV4cHIgV2F2Rm9ybWF0IGtXYXZGb3JtYXQgPSBrV2F2
Rm9ybWF0UGNtOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
V2F2Rm9ybWF0Pjo6dmFsdWUsICIiKTsKK2NvbnN0ZXhwciBzaXplX3Qga0J5dGVzUGVyU2FtcGxl
ID0gMjsKIAogLy8gRG9lc24ndCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgZmlsZSBoYW5kbGUgYW5k
IHdvbid0IGNsb3NlIGl0LgogY2xhc3MgUmVhZGFibGVXYXZGaWxlIDogcHVibGljIFJlYWRhYmxl
V2F2IHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IFJlYWRhYmxlV2F2RmlsZShGSUxFKiBmaWxlKSA6
IGZpbGVfKGZpbGUpIHt9CisgIFJlYWRhYmxlV2F2RmlsZShjb25zdCBSZWFkYWJsZVdhdkZpbGUm
KSA9IGRlbGV0ZTsKKyAgUmVhZGFibGVXYXZGaWxlJiBvcGVyYXRvcj0oY29uc3QgUmVhZGFibGVX
YXZGaWxlJikgPSBkZWxldGU7CiAgIHNpemVfdCBSZWFkKHZvaWQqIGJ1Ziwgc2l6ZV90IG51bV9i
eXRlcykgb3ZlcnJpZGUgewogICAgIHJldHVybiBmcmVhZChidWYsIDEsIG51bV9ieXRlcywgZmls
ZV8pOwogICB9CisgIGJvb2wgRW9mKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmVvZihmaWxl
XykgIT0gMDsgfQorICBib29sIFNlZWtGb3J3YXJkKHVpbnQzMl90IG51bV9ieXRlcykgb3ZlcnJp
ZGUgeworICAgIHJldHVybiBmc2VlayhmaWxlXywgbnVtX2J5dGVzLCBTRUVLX0NVUikgPT0gMDsK
KyAgfQogCiAgcHJpdmF0ZToKICAgRklMRSogZmlsZV87CiB9OwogCit9ICAvLyBuYW1lc3BhY2UK
KwogV2F2UmVhZGVyOjpXYXZSZWFkZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKQogICAg
IDogV2F2UmVhZGVyKHJ0Yzo6T3BlblBsYXRmb3JtRmlsZVJlYWRPbmx5KGZpbGVuYW1lKSkge30K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX2F1ZGlvL3dhdl9oZWFkZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5jYwppbmRleCA4ZmM1ZmVmNTA4
NTIzMDY2ODM3OWRlYzBmMjk0NzY0MzA1NTJjNjczLi5lNDliNzQ4OWIyZWZhM2VhZWQ2YWJhZTZk
NmE3MjQzMTAwZGNlZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5j
YwpAQCAtMTQsMTMgKzE0LDEzIEBACiAKICNpbmNsdWRlICJjb21tb25fYXVkaW8vd2F2X2hlYWRl
ci5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVk
ZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmluZz4KIAotI2luY2x1ZGUgImNvbW1vbl9hdWRpby9p
bmNsdWRlL2F1ZGlvX3V0aWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2FuaXRpemVyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CkBAIC0zMiw2ICszMiwxMSBAQCBzdHJ1Y3QgQ2h1bmtIZWFkZXIgewogfTsKIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKENodW5rSGVhZGVyKSA9PSA4LCAiQ2h1bmtIZWFkZXIgc2l6ZSIpOwogCitzdHJ1
Y3QgUmlmZkhlYWRlciB7CisgIENodW5rSGVhZGVyIGhlYWRlcjsKKyAgdWludDMyX3QgRm9ybWF0
OworfTsKKwogLy8gV2UgY2FuJ3QgbmVzdCB0aGlzIGRlZmluaXRpb24gaW4gV2F2SGVhZGVyLCBi
ZWNhdXNlIFZTMjAxMyBnaXZlcyBhbiBlcnJvcgogLy8gb24gc2l6ZW9mKFdhdkhlYWRlcjo6Zm10
KTogImVycm9yIEMyMDcwOiAndW5rbm93bic6IGlsbGVnYWwgc2l6ZW9mIG9wZXJhbmQiLgogc3Ry
dWN0IEZtdFN1YmNodW5rIHsKQEAgLTQ2LDExICs1MSwxMiBAQCBzdHJ1Y3QgRm10U3ViY2h1bmsg
ewogc3RhdGljX2Fzc2VydChzaXplb2YoRm10U3ViY2h1bmspID09IDI0LCAiRm10U3ViY2h1bmsg
c2l6ZSIpOwogY29uc3QgdWludDMyX3Qga0ZtdFN1YmNodW5rU2l6ZSA9IHNpemVvZihGbXRTdWJj
aHVuaykgLSBzaXplb2YoQ2h1bmtIZWFkZXIpOwogCisvLyBTaW1wbGUgd2F2IGhlYWRlci4gSXQg
ZG9lcyBub3QgaW5jbHVkZSBjaHVua3MgdGhhdCBhcmUgbm90IGVzc2VudGlhbCB0byByZWFkCisv
LyBhdWRpbyBzYW1wbGVzLgogc3RydWN0IFdhdkhlYWRlciB7Ci0gIHN0cnVjdCB7Ci0gICAgQ2h1
bmtIZWFkZXIgaGVhZGVyOwotICAgIHVpbnQzMl90IEZvcm1hdDsKLSAgfSByaWZmOworICBXYXZI
ZWFkZXIoY29uc3QgV2F2SGVhZGVyJikgPSBkZWZhdWx0OworICBXYXZIZWFkZXImIG9wZXJhdG9y
PShjb25zdCBXYXZIZWFkZXImKSA9IGRlZmF1bHQ7CisgIFJpZmZIZWFkZXIgcmlmZjsKICAgRm10
U3ViY2h1bmsgZm10OwogICBzdHJ1Y3QgewogICAgIENodW5rSGVhZGVyIGhlYWRlcjsKQEAgLTU4
LDYgKzY0LDg3IEBAIHN0cnVjdCBXYXZIZWFkZXIgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFdhdkhlYWRlcikgPT0ga1dhdkhlYWRlclNpemUsICJubyBwYWRkaW5nIGluIGhlYWRlciIpOwog
CisjaWZkZWYgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgorc3RhdGljIGlubGluZSB2b2lkIFdy
aXRlTEUxNih1aW50MTZfdCogZiwgdWludDE2X3QgeCkgeworICAqZiA9IHg7Cit9CitzdGF0aWMg
aW5saW5lIHZvaWQgV3JpdGVMRTMyKHVpbnQzMl90KiBmLCB1aW50MzJfdCB4KSB7CisgICpmID0g
eDsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUZvdXJDQyh1aW50MzJfdCogZiwgY2hhciBh
LCBjaGFyIGIsIGNoYXIgYywgY2hhciBkKSB7CisgICpmID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGEpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGIpIDw8IDggfAorICAgICAgIHN0YXRpY19jYXN0
PHVpbnQzMl90PihjKSA8PCAxNiB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihkKSA8PCAyNDsKK30K
Kworc3RhdGljIGlubGluZSB1aW50MTZfdCBSZWFkTEUxNih1aW50MTZfdCB4KSB7CisgIHJldHVy
biB4OworfQorc3RhdGljIGlubGluZSB1aW50MzJfdCBSZWFkTEUzMih1aW50MzJfdCB4KSB7Cisg
IHJldHVybiB4OworfQorc3RhdGljIGlubGluZSBzdGQ6OnN0cmluZyBSZWFkRm91ckNDKHVpbnQz
Ml90IHgpIHsKKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4
KSwgNCk7Cit9CisjZWxzZQorI2Vycm9yICJXcml0ZSBiZS10by1sZSBjb252ZXJzaW9uIGZ1bmN0
aW9ucyIKKyNlbmRpZgorCitzdGF0aWMgaW5saW5lIHVpbnQzMl90IFJpZmZDaHVua1NpemUoc2l6
ZV90IGJ5dGVzX2luX3BheWxvYWQpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90Pihi
eXRlc19pbl9wYXlsb2FkICsga1dhdkhlYWRlclNpemUgLQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVvZihDaHVua0hlYWRlcikpOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQz
Ml90IEJ5dGVSYXRlKHNpemVfdCBudW1fY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzYW1wbGVfcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGJ5dGVzX3Blcl9zYW1wbGUpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihudW1fY2hhbm5lbHMgKiBzYW1wbGVfcmF0ZSAqIGJ5dGVzX3Blcl9zYW1wbGUpOworfQor
CitzdGF0aWMgaW5saW5lIHVpbnQxNl90IEJsb2NrQWxpZ24oc2l6ZV90IG51bV9jaGFubmVscywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnl0ZXNfcGVyX3NhbXBs
ZSkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KG51bV9jaGFubmVscyAqIGJ5dGVz
X3Blcl9zYW1wbGUpOworfQorCisvLyBGaW5kcyBhIGNodW5rIGhhdmluZyB0aGUgc291Z2h0IElE
LiBJZiBmb3VuZCwgdGhlbiB8cmVhZGFibGV8IHBvaW50cyB0byB0aGUKKy8vIGZpcnN0IGJ5dGUg
b2YgdGhlIHNvdWdodCBjaHVuayBkYXRhLiBJZiBub3QgZm91bmQsIHRoZSBlbmQgb2YgdGhlIGZp
bGUgaXMKKy8vIHJlYWNoZWQuCit2b2lkIEZpbmRXYXZlQ2h1bmsoQ2h1bmtIZWFkZXIqIGNodW5r
X2hlYWRlciwKKyAgICAgICAgICAgICAgICAgICBSZWFkYWJsZVdhdiogcmVhZGFibGUsCisgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgc291Z2h0X2NodW5rX2lkKSB7CisgIFJU
Q19EQ0hFQ0tfRVEoc291Z2h0X2NodW5rX2lkLnNpemUoKSwgNCk7CisgIHdoaWxlICghcmVhZGFi
bGUtPkVvZigpKSB7CisgICAgaWYgKHJlYWRhYmxlLT5SZWFkKGNodW5rX2hlYWRlciwgc2l6ZW9m
KCpjaHVua19oZWFkZXIpKSAhPQorICAgICAgICBzaXplb2YoKmNodW5rX2hlYWRlcikpCisgICAg
ICByZXR1cm47ICAvLyBFT0YuCisgICAgaWYgKFJlYWRGb3VyQ0MoY2h1bmtfaGVhZGVyLT5JRCkg
PT0gc291Z2h0X2NodW5rX2lkKQorICAgICAgcmV0dXJuOyAgLy8gU291Z2h0IGNodW5rIGZvdW5k
LgorICAgIC8vIElnbm9yZSBjdXJyZW50IGNodW5rIGJ5IHNraXBwaW5nIGl0cyBwYXlsb2FkLgor
ICAgIGlmICghcmVhZGFibGUtPlNlZWtGb3J3YXJkKGNodW5rX2hlYWRlci0+U2l6ZSkpCisgICAg
ICByZXR1cm47ICAvLyBFT0Ygb3IgZXJyb3IuCisgIH0KKyAgcmV0dXJuOyAgLy8gRU9GLgorfQor
Citib29sIFJlYWRGbXRDaHVua0RhdGEoRm10U3ViY2h1bmsqIGZtdF9zdWJjaHVuaywgUmVhZGFi
bGVXYXYqIHJlYWRhYmxlKSB7CisgIC8vIFJlYWRzICJmbXQgIiBjaHVuayBwYXlsb2FkLgorICBp
ZiAocmVhZGFibGUtPlJlYWQoJihmbXRfc3ViY2h1bmstPkF1ZGlvRm9ybWF0KSwga0ZtdFN1YmNo
dW5rU2l6ZSkgIT0KKyAgICAgIGtGbXRTdWJjaHVua1NpemUpCisgICAgcmV0dXJuIGZhbHNlOwor
ICBjb25zdCB1aW50MzJfdCBmbXRfc2l6ZSA9IFJlYWRMRTMyKGZtdF9zdWJjaHVuay0+aGVhZGVy
LlNpemUpOworICBpZiAoZm10X3NpemUgIT0ga0ZtdFN1YmNodW5rU2l6ZSkgeworICAgIC8vIFRo
ZXJlIGlzIGFuIG9wdGlvbmFsIHR3by1ieXRlIGV4dGVuc2lvbiBmaWVsZCBwZXJtaXR0ZWQgdG8g
YmUgcHJlc2VudAorICAgIC8vIHdpdGggUENNLCBidXQgd2hpY2ggbXVzdCBiZSB6ZXJvLgorICAg
IGludDE2X3QgZXh0X3NpemU7CisgICAgaWYgKGtGbXRTdWJjaHVua1NpemUgKyBzaXplb2YoZXh0
X3NpemUpICE9IGZtdF9zaXplKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChyZWFkYWJs
ZS0+UmVhZCgmZXh0X3NpemUsIHNpemVvZihleHRfc2l6ZSkpICE9IHNpemVvZihleHRfc2l6ZSkp
CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGV4dF9zaXplICE9IDApCisgICAgICByZXR1
cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKIH0gIC8vIG5hbWVzcGFjZQogCiBi
b29sIENoZWNrV2F2UGFyYW1ldGVycyhzaXplX3QgbnVtX2NoYW5uZWxzLApAQCAtMTEyLDQ3ICsx
OTksNiBAQCBib29sIENoZWNrV2F2UGFyYW1ldGVycyhzaXplX3QgbnVtX2NoYW5uZWxzLAogICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotI2lmZGVmIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KLXN0YXRp
YyBpbmxpbmUgdm9pZCBXcml0ZUxFMTYodWludDE2X3QqIGYsIHVpbnQxNl90IHgpIHsKLSAgKmYg
PSB4OwotfQotc3RhdGljIGlubGluZSB2b2lkIFdyaXRlTEUzMih1aW50MzJfdCogZiwgdWludDMy
X3QgeCkgewotICAqZiA9IHg7Ci19Ci1zdGF0aWMgaW5saW5lIHZvaWQgV3JpdGVGb3VyQ0ModWlu
dDMyX3QqIGYsIGNoYXIgYSwgY2hhciBiLCBjaGFyIGMsIGNoYXIgZCkgewotICAqZiA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihhKSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihiKSA8PCA4IHwKLSAg
ICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYykgPDwgMTYgfCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oZCkgPDwgMjQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdWludDE2X3QgUmVhZExFMTYodWludDE2
X3QgeCkgewotICByZXR1cm4geDsKLX0KLXN0YXRpYyBpbmxpbmUgdWludDMyX3QgUmVhZExFMzIo
dWludDMyX3QgeCkgewotICByZXR1cm4geDsKLX0KLXN0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcg
UmVhZEZvdXJDQyh1aW50MzJfdCB4KSB7Ci0gIHJldHVybiBzdGQ6OnN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNoYXIqPigmeCksIDQpOwotfQotI2Vsc2UKLSNlcnJvciAiV3JpdGUgYmUtdG8tbGUg
Y29udmVyc2lvbiBmdW5jdGlvbnMiCi0jZW5kaWYKLQotc3RhdGljIGlubGluZSB1aW50MzJfdCBS
aWZmQ2h1bmtTaXplKHNpemVfdCBieXRlc19pbl9wYXlsb2FkKSB7Ci0gIHJldHVybiBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oYnl0ZXNfaW5fcGF5bG9hZCArIGtXYXZIZWFkZXJTaXplIC0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoQ2h1bmtIZWFkZXIpKTsKLX0KLQotc3Rh
dGljIGlubGluZSB1aW50MzJfdCBCeXRlUmF0ZShzaXplX3QgbnVtX2NoYW5uZWxzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlc19wZXJfc2FtcGxlKSB7Ci0gIHJldHVybiBz
dGF0aWNfY2FzdDx1aW50MzJfdD4obnVtX2NoYW5uZWxzICogc2FtcGxlX3JhdGUgKiBieXRlc19w
ZXJfc2FtcGxlKTsKLX0KLQotc3RhdGljIGlubGluZSB1aW50MTZfdCBCbG9ja0FsaWduKHNpemVf
dCBudW1fY2hhbm5lbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGJ5dGVzX3Blcl9zYW1wbGUpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQxNl90PihudW1f
Y2hhbm5lbHMgKiBieXRlc19wZXJfc2FtcGxlKTsKLX0KLQogdm9pZCBXcml0ZVdhdkhlYWRlcih1
aW50OF90KiBidWYsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1fY2hhbm5lbHMsCiAg
ICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZSwKQEAgLTE2Miw3ICsyMDgsNyBAQCB2
b2lkIFdyaXRlV2F2SGVhZGVyKHVpbnQ4X3QqIGJ1ZiwKICAgUlRDX0NIRUNLKENoZWNrV2F2UGFy
YW1ldGVycyhudW1fY2hhbm5lbHMsIHNhbXBsZV9yYXRlLCBmb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnl0ZXNfcGVyX3NhbXBsZSwgbnVtX3NhbXBsZXMpKTsKIAotICBX
YXZIZWFkZXIgaGVhZGVyOworICBhdXRvIGhlYWRlciA9IHJ0Yzo6TXNhblVuaW5pdGlhbGl6ZWQ8
V2F2SGVhZGVyPih7fSk7CiAgIGNvbnN0IHNpemVfdCBieXRlc19pbl9wYXlsb2FkID0gYnl0ZXNf
cGVyX3NhbXBsZSAqIG51bV9zYW1wbGVzOwogCiAgIFdyaXRlRm91ckNDKCZoZWFkZXIucmlmZi5o
ZWFkZXIuSUQsICdSJywgJ0knLCAnRicsICdGJyk7CkBAIC0xOTQsMjUgKzI0MCwzOCBAQCBib29s
IFJlYWRXYXZIZWFkZXIoUmVhZGFibGVXYXYqIHJlYWRhYmxlLAogICAgICAgICAgICAgICAgICAg
IFdhdkZvcm1hdCogZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfcGVy
X3NhbXBsZSwKICAgICAgICAgICAgICAgICAgICBzaXplX3QqIG51bV9zYW1wbGVzKSB7Ci0gIFdh
dkhlYWRlciBoZWFkZXI7Ci0gIGlmIChyZWFkYWJsZS0+UmVhZCgmaGVhZGVyLCBrV2F2SGVhZGVy
U2l6ZSAtIHNpemVvZihoZWFkZXIuZGF0YSkpICE9Ci0gICAgICBrV2F2SGVhZGVyU2l6ZSAtIHNp
emVvZihoZWFkZXIuZGF0YSkpCisgIGF1dG8gaGVhZGVyID0gcnRjOjpNc2FuVW5pbml0aWFsaXpl
ZDxXYXZIZWFkZXI+KHt9KTsKKworICAvLyBSZWFkIFJJRkYgY2h1bmsuCisgIGlmIChyZWFkYWJs
ZS0+UmVhZCgmaGVhZGVyLnJpZmYsIHNpemVvZihoZWFkZXIucmlmZikpICE9IHNpemVvZihoZWFk
ZXIucmlmZikpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoUmVhZEZvdXJDQyhoZWFkZXIucmlm
Zi5oZWFkZXIuSUQpICE9ICJSSUZGIikKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChSZWFkRm91
ckNDKGhlYWRlci5yaWZmLkZvcm1hdCkgIT0gIldBVkUiKQogICAgIHJldHVybiBmYWxzZTsKIAot
ICBjb25zdCB1aW50MzJfdCBmbXRfc2l6ZSA9IFJlYWRMRTMyKGhlYWRlci5mbXQuaGVhZGVyLlNp
emUpOwotICBpZiAoZm10X3NpemUgIT0ga0ZtdFN1YmNodW5rU2l6ZSkgewotICAgIC8vIFRoZXJl
IGlzIGFuIG9wdGlvbmFsIHR3by1ieXRlIGV4dGVuc2lvbiBmaWVsZCBwZXJtaXR0ZWQgdG8gYmUg
cHJlc2VudAotICAgIC8vIHdpdGggUENNLCBidXQgd2hpY2ggbXVzdCBiZSB6ZXJvLgotICAgIGlu
dDE2X3QgZXh0X3NpemU7Ci0gICAgaWYgKGtGbXRTdWJjaHVua1NpemUgKyBzaXplb2YoZXh0X3Np
emUpICE9IGZtdF9zaXplKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChyZWFkYWJsZS0+
UmVhZCgmZXh0X3NpemUsIHNpemVvZihleHRfc2l6ZSkpICE9IHNpemVvZihleHRfc2l6ZSkpCi0g
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGV4dF9zaXplICE9IDApCi0gICAgICByZXR1cm4g
ZmFsc2U7CisgIC8vIEZpbmQgImZtdCAiIGFuZCAiZGF0YSIgY2h1bmtzLiBXaGlsZSB0aGUgb2Zm
aWNpYWwgV2F2ZSBmaWxlIHNwZWNpZmljYXRpb24KKyAgLy8gZG9lcyBub3QgcHV0IHJlcXVpcmVt
ZW50cyBvbiB0aGUgY2h1bmtzIG9yZGVyLCBpdCBpcyB1bmNvbW1vbiB0byBmaW5kIHRoZQorICAv
LyAiZGF0YSIgY2h1bmsgYmVmb3JlIHRoZSAiZm10ICIgb25lLiBUaGUgY29kZSBiZWxvdyBmYWls
cyBpZiB0aGlzIGlzIG5vdCB0aGUKKyAgLy8gY2FzZS4KKyAgRmluZFdhdmVDaHVuaygmaGVhZGVy
LmZtdC5oZWFkZXIsIHJlYWRhYmxlLCAiZm10ICIpOworICBpZiAoUmVhZEZvdXJDQyhoZWFkZXIu
Zm10LmhlYWRlci5JRCkgIT0gImZtdCAiKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNh
bm5vdCBmaW5kICdmbXQgJyBjaHVuay4iOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAo
IVJlYWRGbXRDaHVua0RhdGEoJmhlYWRlci5mbXQsIHJlYWRhYmxlKSkgeworICAgIFJUQ19MT0co
TFNfRVJST1IpIDw8ICJDYW5ub3QgcmVhZCAnZm10ICcgY2h1bmsuIjsKKyAgICByZXR1cm4gZmFs
c2U7CisgIH0KKyAgaWYgKHJlYWRhYmxlLT5Fb2YoKSkgeworICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICInZm10ICcgY2h1bmsgcGxhY2VkIGFmdGVyICdkYXRhJyBjaHVuay4iOworICAgIHJldHVy
biBmYWxzZTsKICAgfQotICBpZiAocmVhZGFibGUtPlJlYWQoJmhlYWRlci5kYXRhLCBzaXplb2Yo
aGVhZGVyLmRhdGEpKSAhPSBzaXplb2YoaGVhZGVyLmRhdGEpKQorICBGaW5kV2F2ZUNodW5rKCZo
ZWFkZXIuZGF0YS5oZWFkZXIsIHJlYWRhYmxlLCAiZGF0YSIpOworICBpZiAoUmVhZEZvdXJDQyho
ZWFkZXIuZGF0YS5oZWFkZXIuSUQpICE9ICJkYXRhIikgeworICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJDYW5ub3QgZmluZCAnZGF0YScgY2h1bmsuIjsKICAgICByZXR1cm4gZmFsc2U7CisgIH0K
IAogICAvLyBQYXJzZSBuZWVkZWQgZmllbGRzLgogICAqZm9ybWF0ID0gc3RhdGljX2Nhc3Q8V2F2
Rm9ybWF0PihSZWFkTEUxNihoZWFkZXIuZm10LkF1ZGlvRm9ybWF0KSk7CkBAIC0yMjQsMTYgKzI4
Myw2IEBAIGJvb2wgUmVhZFdhdkhlYWRlcihSZWFkYWJsZVdhdiogcmVhZGFibGUsCiAgICAgcmV0
dXJuIGZhbHNlOwogICAqbnVtX3NhbXBsZXMgPSBieXRlc19pbl9wYXlsb2FkIC8gKmJ5dGVzX3Bl
cl9zYW1wbGU7CiAKLSAgLy8gU2FuaXR5IGNoZWNrIHJlbWFpbmluZyBmaWVsZHMuCi0gIGlmIChS
ZWFkRm91ckNDKGhlYWRlci5yaWZmLmhlYWRlci5JRCkgIT0gIlJJRkYiKQotICAgIHJldHVybiBm
YWxzZTsKLSAgaWYgKFJlYWRGb3VyQ0MoaGVhZGVyLnJpZmYuRm9ybWF0KSAhPSAiV0FWRSIpCi0g
ICAgcmV0dXJuIGZhbHNlOwotICBpZiAoUmVhZEZvdXJDQyhoZWFkZXIuZm10LmhlYWRlci5JRCkg
IT0gImZtdCAiKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKFJlYWRGb3VyQ0MoaGVhZGVyLmRh
dGEuaGVhZGVyLklEKSAhPSAiZGF0YSIpCi0gICAgcmV0dXJuIGZhbHNlOwotCiAgIGlmIChSZWFk
TEUzMihoZWFkZXIucmlmZi5oZWFkZXIuU2l6ZSkgPCBSaWZmQ2h1bmtTaXplKGJ5dGVzX2luX3Bh
eWxvYWQpKQogICAgIHJldHVybiBmYWxzZTsKICAgaWYgKFJlYWRMRTMyKGhlYWRlci5mbXQuQnl0
ZVJhdGUpICE9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFkZXIuaAppbmRleCA4NzJk
M2FiY2U1Y2E0Y2RjOTQwY2E5MTQ0MDQ0MWU3MjM3YmNiZTBiLi5hNTE5YmE1NTZmNTRmMDM2NTQ5
NGJlYjYzN2Q4ZDZiN2JhMjQ5NjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVh
ZGVyLmgKQEAgLTIxLDggKzIxLDExIEBAIHN0YXRpYyBjb25zdCBzaXplX3Qga1dhdkhlYWRlclNp
emUgPSA0NDsKIGNsYXNzIFJlYWRhYmxlV2F2IHsKICBwdWJsaWM6CiAgIC8vIFJldHVybnMgdGhl
IG51bWJlciBvZiBieXRlcyByZWFkLgotICBzaXplX3QgdmlydHVhbCBSZWFkKHZvaWQqIGJ1Ziwg
c2l6ZV90IG51bV9ieXRlcykgPSAwOwotICB2aXJ0dWFsIH5SZWFkYWJsZVdhdigpIHt9CisgIHZp
cnR1YWwgc2l6ZV90IFJlYWQodm9pZCogYnVmLCBzaXplX3QgbnVtX2J5dGVzKSA9IDA7CisgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgZW5kLW9mLWZpbGUgaGFzIGJlZW4gcmVhY2hlZC4KKyAgdmly
dHVhbCBib29sIEVvZigpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBib29sIFNlZWtGb3J3YXJkKHVp
bnQzMl90IG51bV9ieXRlcykgPSAwOworICB2aXJ0dWFsIH5SZWFkYWJsZVdhdigpID0gZGVmYXVs
dDsKIH07CiAKIGVudW0gV2F2Rm9ybWF0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1
ZGlvL3dhdl9oZWFkZXJfdW5pdHRlc3QuY2MKaW5kZXggYjcxNjliNTNjOGYxYjFhMWMxYzRmZDI0
YmNkZTg2MGI0MTA4MTdlZS4uMmUyZWRhNWE2ZjJkMDhmMjNjZmJhNWRjZDQ5ZjljM2ZjNWE3YTBk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX2F1ZGlvL3dhdl9oZWFkZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFkZXJfdW5pdHRl
c3QuY2MKQEAgLTE5LDEyICsxOSw2IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogLy8gRG9lc24ndCB0
YWtlIG93bmVyc2hpcCBvZiB0aGUgYnVmZmVyLgogY2xhc3MgUmVhZGFibGVXYXZCdWZmZXIgOiBw
dWJsaWMgUmVhZGFibGVXYXYgewogIHB1YmxpYzoKLSAgUmVhZGFibGVXYXZCdWZmZXIoY29uc3Qg
dWludDhfdCogYnVmLCBzaXplX3Qgc2l6ZSkKLSAgICAgIDogYnVmXyhidWYpLAotICAgICAgICBz
aXplXyhzaXplKSwKLSAgICAgICAgcG9zXygwKSwKLSAgICAgICAgYnVmX2V4aGF1c3RlZF8oZmFs
c2UpLAotICAgICAgICBjaGVja19yZWFkX3NpemVfKHRydWUpIHt9CiAgIFJlYWRhYmxlV2F2QnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1Ziwgc2l6ZV90IHNpemUsIGJvb2wgY2hlY2tfcmVhZF9zaXpl
KQogICAgICAgOiBidWZfKGJ1ZiksCiAgICAgICAgIHNpemVfKHNpemUpLApAQCAtNTcsNiArNTEs
MjcgQEAgY2xhc3MgUmVhZGFibGVXYXZCdWZmZXIgOiBwdWJsaWMgUmVhZGFibGVXYXYgewogICAg
IHJldHVybiBudW1fYnl0ZXM7CiAgIH0KIAorICBib29sIEVvZigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHBvc18gPT0gc2l6ZV87IH0KKworICBib29sIFNlZWtGb3J3YXJkKHVpbnQzMl90IG51
bV9ieXRlcykgb3ZlcnJpZGUgeworICAgIC8vIFZlcmlmeSB3ZSBkb24ndCB0cnkgdG8gcmVhZCBv
dXRzaWRlIG9mIGEgcHJvcGVybHkgc2l6ZWQgaGVhZGVyLgorICAgIGlmIChzaXplXyA+PSBrV2F2
SGVhZGVyU2l6ZSkKKyAgICAgIEVYUEVDVF9HRShzaXplXywgcG9zXyArIG51bV9ieXRlcyk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGJ1Zl9leGhhdXN0ZWRfKTsKKworICAgIGNvbnN0IHNpemVfdCBieXRl
c19yZW1haW5pbmcgPSBzaXplXyAtIHBvc187CisgICAgaWYgKG51bV9ieXRlcyA+IGJ5dGVzX3Jl
bWFpbmluZykgeworICAgICAgLy8gRXJyb3I6IGNhbm5vdCBzZWVrIGJleW9uZCBFT0YuCisgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChudW1fYnl0ZXMgPT0gYnl0ZXNfcmVtYWlu
aW5nKSB7CisgICAgICAvLyBUaGVyZSBzaG91bGQgbm90IGJlIGFub3RoZXIgcmVhZCBhdHRlbXB0
IGFmdGVyIHRoaXMgcG9pbnQuCisgICAgICBidWZfZXhoYXVzdGVkXyA9IHRydWU7CisgICAgfQor
ICAgIHBvc18gKz0gbnVtX2J5dGVzOworICAgIHJldHVybiB0cnVlOworICB9CisKICBwcml2YXRl
OgogICBjb25zdCB1aW50OF90KiBidWZfOwogICBjb25zdCBzaXplX3Qgc2l6ZV87CkBAIC0xMDMs
NyArMTE4LDcgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkV2F2SGVhZGVyV2l0aEVycm9ycykg
ewogICAvLyBpbnZhbGlkIGZpZWxkIGlzIGluZGljYXRlZCBpbiB0aGUgYXJyYXkgbmFtZSwgYW5k
IGluIHRoZSBjb21tZW50cyB3aXRoCiAgIC8vICpCQUQqLgogICB7Ci0gICAgc3RhdGljIGNvbnN0
IHVpbnQ4X3Qga0JhZFJpZmZJRFtdID0geworICAgIGNvbnN0ZXhwciB1aW50OF90IGtCYWRSaWZm
SURbXSA9IHsKICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgICAgICAvLyBjbGFuZyBm
b3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxpbmUgY29tbWVudHMuCiAgICAgICAnUicsICdp
JywgJ2YnLCAnZicsICAvLyAqQkFEKgpAQCAtMTIxLDEyICsxMzYsMTMgQEAgVEVTVChXYXZIZWFk
ZXJUZXN0LCBSZWFkV2F2SGVhZGVyV2l0aEVycm9ycykgewogICAgICAgMHg5OSwgMHhkMCwgMHg1
YiwgMHgwNywgIC8vIHNpemUgb2YgcGF5bG9hZDogMTIzNDU3Njg5CiAgICAgICAgIC8vIGNsYW5n
LWZvcm1hdCBvbgogICAgIH07Ci0gICAgUmVhZGFibGVXYXZCdWZmZXIgcihrQmFkUmlmZklELCBz
aXplb2Yoa0JhZFJpZmZJRCkpOworICAgIFJlYWRhYmxlV2F2QnVmZmVyIHIoa0JhZFJpZmZJRCwg
c2l6ZW9mKGtCYWRSaWZmSUQpLAorICAgICAgICAgICAgICAgICAgICAgICAgLypjaGVja19yZWFk
X3NpemU9Ki9mYWxzZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFJlYWRXYXZIZWFkZXIoJnIsICZudW1f
Y2hhbm5lbHMsICZzYW1wbGVfcmF0ZSwgJmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmYnl0ZXNfcGVyX3NhbXBsZSwgJm51bV9zYW1wbGVzKSk7CiAgIH0KICAgewotICAg
IHN0YXRpYyBjb25zdCB1aW50OF90IGtCYWRCaXRzUGVyU2FtcGxlW10gPSB7CisgICAgY29uc3Rl
eHByIHVpbnQ4X3Qga0JhZEJpdHNQZXJTYW1wbGVbXSA9IHsKICAgICAgICAgLy8gY2xhbmctZm9y
bWF0IG9mZgogICAgICAgICAvLyBjbGFuZyBmb3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxp
bmUgY29tbWVudHMuCiAgICAgICAnUicsICdJJywgJ0YnLCAnRicsCkBAIC0xNDQsMTIgKzE2MCwx
MyBAQCBURVNUKFdhdkhlYWRlclRlc3QsIFJlYWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7CiAgICAg
ICAweDk5LCAweGQwLCAweDViLCAweDA3LCAgLy8gc2l6ZSBvZiBwYXlsb2FkOiAxMjM0NTc2ODkK
ICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAgICAgfTsKLSAgICBSZWFkYWJsZVdhdkJ1ZmZl
ciByKGtCYWRCaXRzUGVyU2FtcGxlLCBzaXplb2Yoa0JhZEJpdHNQZXJTYW1wbGUpKTsKKyAgICBS
ZWFkYWJsZVdhdkJ1ZmZlciByKGtCYWRCaXRzUGVyU2FtcGxlLCBzaXplb2Yoa0JhZEJpdHNQZXJT
YW1wbGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgLypjaGVja19yZWFkX3NpemU9Ki90cnVl
KTsKICAgICBFWFBFQ1RfRkFMU0UoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFubmVscywgJnNh
bXBsZV9yYXRlLCAmZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRl
c19wZXJfc2FtcGxlLCAmbnVtX3NhbXBsZXMpKTsKICAgfQogICB7Ci0gICAgc3RhdGljIGNvbnN0
IHVpbnQ4X3Qga0JhZEJ5dGVSYXRlW10gPSB7CisgICAgY29uc3RleHByIHVpbnQ4X3Qga0JhZEJ5
dGVSYXRlW10gPSB7CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKICAgICAgICAgLy8gY2xh
bmcgZm9ybWF0dGluZyBkb2Vzbid0IHJlc3BlY3QgaW5saW5lIGNvbW1lbnRzLgogICAgICAgJ1In
LCAnSScsICdGJywgJ0YnLApAQCAtMTY3LDEyICsxODQsMTMgQEAgVEVTVChXYXZIZWFkZXJUZXN0
LCBSZWFkV2F2SGVhZGVyV2l0aEVycm9ycykgewogICAgICAgMHg5OSwgMHhkMCwgMHg1YiwgMHgw
NywgIC8vIHNpemUgb2YgcGF5bG9hZDogMTIzNDU3Njg5CiAgICAgICAgIC8vIGNsYW5nLWZvcm1h
dCBvbgogICAgIH07Ci0gICAgUmVhZGFibGVXYXZCdWZmZXIgcihrQmFkQnl0ZVJhdGUsIHNpemVv
ZihrQmFkQnl0ZVJhdGUpKTsKKyAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtCYWRCeXRlUmF0ZSwg
c2l6ZW9mKGtCYWRCeXRlUmF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAvKmNoZWNrX3Jl
YWRfc2l6ZT0qL3RydWUpOwogICAgIEVYUEVDVF9GQUxTRShSZWFkV2F2SGVhZGVyKCZyLCAmbnVt
X2NoYW5uZWxzLCAmc2FtcGxlX3JhdGUsICZmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmJ5dGVzX3Blcl9zYW1wbGUsICZudW1fc2FtcGxlcykpOwogICB9CiAgIHsKLSAg
ICBzdGF0aWMgY29uc3QgdWludDhfdCBrQmFkRm10SGVhZGVyU2l6ZVtdID0geworICAgIGNvbnN0
ZXhwciB1aW50OF90IGtCYWRGbXRIZWFkZXJTaXplW10gPSB7CiAgICAgICAgIC8vIGNsYW5nLWZv
cm1hdCBvZmYKICAgICAgICAgLy8gY2xhbmcgZm9ybWF0dGluZyBkb2Vzbid0IHJlc3BlY3QgaW5s
aW5lIGNvbW1lbnRzLgogICAgICAgJ1InLCAnSScsICdGJywgJ0YnLApAQCAtMTkxLDEyICsyMDks
MTMgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkV2F2SGVhZGVyV2l0aEVycm9ycykgewogICAg
ICAgMHg5OSwgMHhkMCwgMHg1YiwgMHgwNywgIC8vIHNpemUgb2YgcGF5bG9hZDogMTIzNDU3Njg5
CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogICAgIH07Ci0gICAgUmVhZGFibGVXYXZCdWZm
ZXIgcihrQmFkRm10SGVhZGVyU2l6ZSwgc2l6ZW9mKGtCYWRGbXRIZWFkZXJTaXplKSwgZmFsc2Up
OworICAgIFJlYWRhYmxlV2F2QnVmZmVyIHIoa0JhZEZtdEhlYWRlclNpemUsIHNpemVvZihrQmFk
Rm10SGVhZGVyU2l6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAvKmNoZWNrX3JlYWRfc2l6
ZT0qL2ZhbHNlKTsKICAgICBFWFBFQ1RfRkFMU0UoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFu
bmVscywgJnNhbXBsZV9yYXRlLCAmZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZieXRlc19wZXJfc2FtcGxlLCAmbnVtX3NhbXBsZXMpKTsKICAgfQogICB7Ci0gICAgc3Rh
dGljIGNvbnN0IHVpbnQ4X3Qga05vblplcm9FeHRlbnNpb25GaWVsZFtdID0geworICAgIGNvbnN0
ZXhwciB1aW50OF90IGtOb25aZXJvRXh0ZW5zaW9uRmllbGRbXSA9IHsKICAgICAgICAgLy8gY2xh
bmctZm9ybWF0IG9mZgogICAgICAgICAvLyBjbGFuZyBmb3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVj
dCBpbmxpbmUgY29tbWVudHMuCiAgICAgICAnUicsICdJJywgJ0YnLCAnRicsCkBAIC0yMTYsMTIg
KzIzNSwxMiBAQCBURVNUKFdhdkhlYWRlclRlc3QsIFJlYWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7
CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogICAgIH07CiAgICAgUmVhZGFibGVXYXZCdWZm
ZXIgcihrTm9uWmVyb0V4dGVuc2lvbkZpZWxkLCBzaXplb2Yoa05vblplcm9FeHRlbnNpb25GaWVs
ZCksCi0gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvKmNoZWNrX3JlYWRfc2l6ZT0qL2ZhbHNlKTsKICAgICBFWFBFQ1RfRkFMU0UoUmVhZFdh
dkhlYWRlcigmciwgJm51bV9jaGFubmVscywgJnNhbXBsZV9yYXRlLCAmZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc19wZXJfc2FtcGxlLCAmbnVtX3NhbXBsZXMp
KTsKICAgfQogICB7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qga01pc3NpbmdEYXRhQ2h1bmtb
XSA9IHsKKyAgICBjb25zdGV4cHIgdWludDhfdCBrTWlzc2luZ0RhdGFDaHVua1tdID0gewogICAg
ICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9l
c24ndCByZXNwZWN0IGlubGluZSBjb21tZW50cy4KICAgICAgICdSJywgJ0knLCAnRicsICdGJywK
QEAgLTIzNywxMiArMjU2LDEzIEBAIFRFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldp
dGhFcnJvcnMpIHsKICAgICAgIDgsIDAsICAvLyBiaXRzIHBlciBzYW1wbGU6IDEgKiA4CiAgICAg
ICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogICAgIH07Ci0gICAgUmVhZGFibGVXYXZCdWZmZXIgcihr
TWlzc2luZ0RhdGFDaHVuaywgc2l6ZW9mKGtNaXNzaW5nRGF0YUNodW5rKSk7CisgICAgUmVhZGFi
bGVXYXZCdWZmZXIgcihrTWlzc2luZ0RhdGFDaHVuaywgc2l6ZW9mKGtNaXNzaW5nRGF0YUNodW5r
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qY2hlY2tfcmVhZF9zaXplPSovdHJ1ZSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKFJlYWRXYXZIZWFkZXIoJnIsICZudW1fY2hhbm5lbHMsICZzYW1wbGVf
cmF0ZSwgJmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNfcGVy
X3NhbXBsZSwgJm51bV9zYW1wbGVzKSk7CiAgIH0KICAgewotICAgIHN0YXRpYyBjb25zdCB1aW50
OF90IGtNaXNzaW5nRm10QW5kRGF0YUNodW5rc1tdID0geworICAgIGNvbnN0ZXhwciB1aW50OF90
IGtNaXNzaW5nRm10QW5kRGF0YUNodW5rc1tdID0gewogICAgICAgICAvLyBjbGFuZy1mb3JtYXQg
b2ZmCiAgICAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGluZSBj
b21tZW50cy4KICAgICAgICdSJywgJ0knLCAnRicsICdGJywKQEAgLTI1MSw3ICsyNzEsOCBAQCBU
RVNUKFdhdkhlYWRlclRlc3QsIFJlYWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7CiAgICAgICAgIC8v
IGNsYW5nLWZvcm1hdCBvbgogICAgIH07CiAgICAgUmVhZGFibGVXYXZCdWZmZXIgcihrTWlzc2lu
Z0ZtdEFuZERhdGFDaHVua3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa01pc3Np
bmdGbXRBbmREYXRhQ2h1bmtzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa01p
c3NpbmdGbXRBbmREYXRhQ2h1bmtzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qY2hlY2tf
cmVhZF9zaXplPSovdHJ1ZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFJlYWRXYXZIZWFkZXIoJnIsICZu
dW1fY2hhbm5lbHMsICZzYW1wbGVfcmF0ZSwgJmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmYnl0ZXNfcGVyX3NhbXBsZSwgJm51bV9zYW1wbGVzKSk7CiAgIH0KQEAgLTI1
OSwxMSArMjgwLDExIEBAIFRFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhFcnJv
cnMpIHsKIAogLy8gVHJ5IHdyaXRpbmcgYW5kIHJlYWRpbmcgYSB2YWxpZCBXQVYgaGVhZGVyIGFu
ZCBtYWtlIHN1cmUgaXQgbG9va3MgT0suCiBURVNUKFdhdkhlYWRlclRlc3QsIFdyaXRlQW5kUmVh
ZFdhdkhlYWRlcikgewotICBzdGF0aWMgY29uc3QgaW50IGtTaXplID0gNCArIGtXYXZIZWFkZXJT
aXplICsgNDsKKyAgY29uc3RleHByIGludCBrU2l6ZSA9IDQgKyBrV2F2SGVhZGVyU2l6ZSArIDQ7
CiAgIHVpbnQ4X3QgYnVmW2tTaXplXTsKICAgbWVtc2V0KGJ1ZiwgMHhhNCwgc2l6ZW9mKGJ1Zikp
OwogICBXcml0ZVdhdkhlYWRlcihidWYgKyA0LCAxNywgMTIzNDUsIGtXYXZGb3JtYXRBTGF3LCAx
LCAxMjM0NTc2ODkpOwotICBzdGF0aWMgY29uc3QgdWludDhfdCBrRXhwZWN0ZWRCdWZbXSA9IHsK
KyAgY29uc3RleHByIHVpbnQ4X3Qga0V4cGVjdGVkQnVmW10gPSB7CiAgICAgICAvLyBjbGFuZy1m
b3JtYXQgb2ZmCiAgICAgICAvLyBjbGFuZyBmb3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxp
bmUgY29tbWVudHMuCiAgICAgMHhhNCwgMHhhNCwgMHhhNCwgMHhhNCwgIC8vIHVudG91Y2hlZCBi
eXRlcyBiZWZvcmUgaGVhZGVyCkBAIC0yOTEsNyArMzEyLDggQEAgVEVTVChXYXZIZWFkZXJUZXN0
LCBXcml0ZUFuZFJlYWRXYXZIZWFkZXIpIHsKICAgV2F2Rm9ybWF0IGZvcm1hdCA9IGtXYXZGb3Jt
YXRQY207CiAgIHNpemVfdCBieXRlc19wZXJfc2FtcGxlID0gMDsKICAgc2l6ZV90IG51bV9zYW1w
bGVzID0gMDsKLSAgUmVhZGFibGVXYXZCdWZmZXIgcihidWYgKyA0LCBzaXplb2YoYnVmKSAtIDgp
OworICBSZWFkYWJsZVdhdkJ1ZmZlciByKGJ1ZiArIDQsIHNpemVvZihidWYpIC0gOCwKKyAgICAg
ICAgICAgICAgICAgICAgICAvKmNoZWNrX3JlYWRfc2l6ZT0qL3RydWUpOwogICBFWFBFQ1RfVFJV
RShSZWFkV2F2SGVhZGVyKCZyLCAmbnVtX2NoYW5uZWxzLCAmc2FtcGxlX3JhdGUsICZmb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVzX3Blcl9zYW1wbGUsICZudW1fc2Ft
cGxlcykpOwogICBFWFBFQ1RfRVEoMTd1LCBudW1fY2hhbm5lbHMpOwpAQCAtMzAzLDI0ICszMjUs
NjcgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBXcml0ZUFuZFJlYWRXYXZIZWFkZXIpIHsKIAogLy8g
VHJ5IHJlYWRpbmcgYW4gYXR5cGljYWwgYnV0IHZhbGlkIFdBViBoZWFkZXIgYW5kIG1ha2Ugc3Vy
ZSBpdCdzIHBhcnNlZCBPSy4KIFRFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZEF0eXBpY2FsV2F2SGVh
ZGVyKSB7Ci0gIHN0YXRpYyBjb25zdCB1aW50OF90IGtCdWZbXSA9IHsKKyAgY29uc3RleHByIHVp
bnQ4X3Qga0J1ZltdID0gewogICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgICAgLy8gY2xh
bmcgZm9ybWF0dGluZyBkb2Vzbid0IHJlc3BlY3QgaW5saW5lIGNvbW1lbnRzLgogICAgICdSJywg
J0knLCAnRicsICdGJywKLSAgICAweDNkLCAweGQxLCAweDViLCAweDA3LCAgLy8gc2l6ZSBvZiB3
aG9sZSBmaWxlIC0gOCArIGFuIGV4dHJhIDEyOCBieXRlcyBvZgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAibWV0YWRhdGEiOiAxMjM0NTc2ODkgKyA0NCAtIDggKyAxMjguIChhdHlw
aWNhbCkKKyAgICAweGJmLCAweGQwLCAweDViLCAweDA3LCAgLy8gU2l6ZSBvZiB3aG9sZSBmaWxl
IC0gOCArIGV4dHJhIDIgYnl0ZXMgb2YgemVybworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBleHRlbnNpb246IDEyMzQ1NzY4OSArIDQ0IC0gOCArIDIgKGF0eXBpY2FsKS4KICAgICAn
VycsICdBJywgJ1YnLCAnRScsCiAgICAgJ2YnLCAnbScsICd0JywgJyAnLAotICAgIDE4LCAwLCAw
LCAwLCAgLy8gc2l6ZSBvZiBmbXQgYmxvY2sgKHdpdGggYW4gYXR5cGljYWwgZXh0ZW5zaW9uIHNp
emUgZmllbGQpCi0gICAgNiwgMCwgIC8vIGZvcm1hdDogQS1sYXcgKDYpCi0gICAgMTcsIDAsICAv
LyBjaGFubmVsczogMTcKLSAgICAweDM5LCAweDMwLCAwLCAwLCAgLy8gc2FtcGxlIHJhdGU6IDEy
MzQ1Ci0gICAgMHhjOSwgMHgzMywgMHgwMywgMCwgIC8vIGJ5dGUgcmF0ZTogMSAqIDE3ICogMTIz
NDUKLSAgICAxNywgMCwgIC8vIGJsb2NrIGFsaWduOiBOdW1DaGFubmVscyAqIEJ5dGVzUGVyU2Ft
cGxlCi0gICAgOCwgMCwgIC8vIGJpdHMgcGVyIHNhbXBsZTogMSAqIDgKLSAgICAwLCAwLCAgLy8g
emVybyBleHRlbnNpb24gc2l6ZSBmaWVsZCAoYXR5cGljYWwpCisgICAgMTgsIDAsIDAsIDAsICAg
ICAgICAgICAgIC8vIFNpemUgb2YgZm10IGJsb2NrICh3aXRoIGFuIGF0eXBpY2FsIGV4dGVuc2lv
bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaXplIGZpZWxkKS4KKyAgICA2LCAw
LCAgICAgICAgICAgICAgICAgICAgLy8gRm9ybWF0OiBBLWxhdyAoNikuCisgICAgMTcsIDAsICAg
ICAgICAgICAgICAgICAgIC8vIENoYW5uZWxzOiAxNy4KKyAgICAweDM5LCAweDMwLCAwLCAwLCAg
ICAgICAgLy8gU2FtcGxlIHJhdGU6IDEyMzQ1LgorICAgIDB4YzksIDB4MzMsIDB4MDMsIDAsICAg
ICAvLyBCeXRlIHJhdGU6IDEgKiAxNyAqIDEyMzQ1LgorICAgIDE3LCAwLCAgICAgICAgICAgICAg
ICAgICAvLyBCbG9jayBhbGlnbjogTnVtQ2hhbm5lbHMgKiBCeXRlc1BlclNhbXBsZS4KKyAgICA4
LCAwLCAgICAgICAgICAgICAgICAgICAgLy8gQml0cyBwZXIgc2FtcGxlOiAxICogOC4KKyAgICAw
LCAwLCAgICAgICAgICAgICAgICAgICAgLy8gWmVybyBleHRlbnNpb24gc2l6ZSBmaWVsZCAoYXR5
cGljYWwpLgogICAgICdkJywgJ2EnLCAndCcsICdhJywKLSAgICAweDk5LCAweGQwLCAweDViLCAw
eDA3LCAgLy8gc2l6ZSBvZiBwYXlsb2FkOiAxMjM0NTc2ODkKKyAgICAweDk5LCAweGQwLCAweDVi
LCAweDA3LCAgLy8gU2l6ZSBvZiBwYXlsb2FkOiAxMjM0NTc2ODkuCisgICAgICAvLyBjbGFuZy1m
b3JtYXQgb24KKyAgfTsKKworICBzaXplX3QgbnVtX2NoYW5uZWxzID0gMDsKKyAgaW50IHNhbXBs
ZV9yYXRlID0gMDsKKyAgV2F2Rm9ybWF0IGZvcm1hdCA9IGtXYXZGb3JtYXRQY207CisgIHNpemVf
dCBieXRlc19wZXJfc2FtcGxlID0gMDsKKyAgc2l6ZV90IG51bV9zYW1wbGVzID0gMDsKKyAgUmVh
ZGFibGVXYXZCdWZmZXIgcihrQnVmLCBzaXplb2Yoa0J1ZiksIC8qY2hlY2tfcmVhZF9zaXplPSov
dHJ1ZSk7CisgIEVYUEVDVF9UUlVFKFJlYWRXYXZIZWFkZXIoJnIsICZudW1fY2hhbm5lbHMsICZz
YW1wbGVfcmF0ZSwgJmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNf
cGVyX3NhbXBsZSwgJm51bV9zYW1wbGVzKSk7CisgIEVYUEVDVF9FUSgxN3UsIG51bV9jaGFubmVs
cyk7CisgIEVYUEVDVF9FUSgxMjM0NSwgc2FtcGxlX3JhdGUpOworICBFWFBFQ1RfRVEoa1dhdkZv
cm1hdEFMYXcsIGZvcm1hdCk7CisgIEVYUEVDVF9FUSgxdSwgYnl0ZXNfcGVyX3NhbXBsZSk7Cisg
IEVYUEVDVF9FUSgxMjM0NTc2ODl1LCBudW1fc2FtcGxlcyk7Cit9CisKKy8vIFRyeSByZWFkaW5n
IGEgdmFsaWQgV0FWIGhlYWRlciB3aGljaCBjb250YWlucyBhbiBvcHRpb25hbCBjaHVuayBhbmQg
bWFrZSBzdXJlCisvLyBpdCdzIHBhcnNlZCBPSy4KK1RFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZFdh
dkhlYWRlcldpdGhPcHRpb25hbENodW5rKSB7CisgIGNvbnN0ZXhwciB1aW50OF90IGtCdWZbXSA9
IHsKKyAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcg
ZG9lc24ndCByZXNwZWN0IGlubGluZSBjb21tZW50cy4KKyAgICAnUicsICdJJywgJ0YnLCAnRics
CisgICAgMHhjZCwgMHhkMCwgMHg1YiwgMHgwNywgIC8vIFNpemUgb2Ygd2hvbGUgZmlsZSAtIDgg
KyBhbiBleHRyYSAxNiBieXRlcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAi
bWV0YWRhdGEiICg4IGJ5dGVzIGhlYWRlciwgMTYgYnl0ZXMgcGF5bG9hZCk6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIDEyMzQ1NzY4OSArIDQ0IC0gOCArIDE2LgorICAgICdXJywg
J0EnLCAnVicsICdFJywKKyAgICAnZicsICdtJywgJ3QnLCAnICcsCisgICAgMTYsIDAsIDAsIDAs
ICAgICAgICAgICAgIC8vIFNpemUgb2YgZm10IGJsb2NrLgorICAgIDYsIDAsICAgICAgICAgICAg
ICAgICAgICAvLyBGb3JtYXQ6IEEtbGF3ICg2KS4KKyAgICAxNywgMCwgICAgICAgICAgICAgICAg
ICAgLy8gQ2hhbm5lbHM6IDE3LgorICAgIDB4MzksIDB4MzAsIDAsIDAsICAgICAgICAvLyBTYW1w
bGUgcmF0ZTogMTIzNDUuCisgICAgMHhjOSwgMHgzMywgMHgwMywgMCwgICAgIC8vIEJ5dGUgcmF0
ZTogMSAqIDE3ICogMTIzNDUuCisgICAgMTcsIDAsICAgICAgICAgICAgICAgICAgIC8vIEJsb2Nr
IGFsaWduOiBOdW1DaGFubmVscyAqIEJ5dGVzUGVyU2FtcGxlLgorICAgIDgsIDAsICAgICAgICAg
ICAgICAgICAgICAvLyBCaXRzIHBlciBzYW1wbGU6IDEgKiA4LgorICAgICdMJywgJ0knLCAnUycs
ICdUJywgICAgICAvLyBNZXRhZGF0YSBjaHVuayBJRC4KKyAgICAxNiwgMCwgMCwgMCwgICAgICAg
ICAgICAgLy8gTWV0YWRhdGEgY2h1bmsgcGF5bG9hZCBzaXplLgorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICAvLyBNZXRhZGF0YSAoMTYgYnl0ZXMp
LgorICAgICdkJywgJ2EnLCAndCcsICdhJywKKyAgICAweDk5LCAweGQwLCAweDViLCAweDA3LCAg
Ly8gU2l6ZSBvZiBwYXlsb2FkOiAxMjM0NTc2ODkuCiAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24K
ICAgfTsKIApAQCAtMzI5LDcgKzM5NCw3IEBAIFRFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZEF0eXBp
Y2FsV2F2SGVhZGVyKSB7CiAgIFdhdkZvcm1hdCBmb3JtYXQgPSBrV2F2Rm9ybWF0UGNtOwogICBz
aXplX3QgYnl0ZXNfcGVyX3NhbXBsZSA9IDA7CiAgIHNpemVfdCBudW1fc2FtcGxlcyA9IDA7Ci0g
IFJlYWRhYmxlV2F2QnVmZmVyIHIoa0J1Ziwgc2l6ZW9mKGtCdWYpKTsKKyAgUmVhZGFibGVXYXZC
dWZmZXIgcihrQnVmLCBzaXplb2Yoa0J1ZiksIC8qY2hlY2tfcmVhZF9zaXplPSovdHJ1ZSk7CiAg
IEVYUEVDVF9UUlVFKFJlYWRXYXZIZWFkZXIoJnIsICZudW1fY2hhbm5lbHMsICZzYW1wbGVfcmF0
ZSwgJmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNfcGVyX3NhbXBs
ZSwgJm51bV9zYW1wbGVzKSk7CiAgIEVYUEVDVF9FUSgxN3UsIG51bV9jaGFubmVscyk7CkBAIC0z
MzksNCArNDA0LDM3IEBAIFRFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZEF0eXBpY2FsV2F2SGVhZGVy
KSB7CiAgIEVYUEVDVF9FUSgxMjM0NTc2ODl1LCBudW1fc2FtcGxlcyk7CiB9CiAKKy8vIFRyeSBy
ZWFkaW5nIGFuIGludmFsaWQgV0FWIGhlYWRlciB3aGljaCBoYXMgdGhlIHRoZSBkYXRhIGNodW5r
IGJlZm9yZSB0aGUKKy8vIGZvcm1hdCBvbmUgYW5kIG1ha2Ugc3VyZSBpdCdzIG5vdCBwYXJzZWQu
CitURVNUKFdhdkhlYWRlclRlc3QsIFJlYWRXYXZIZWFkZXJXaXRoRGF0YUJlZm9yZUZvcm1hdCkg
eworICBjb25zdGV4cHIgdWludDhfdCBrQnVmW10gPSB7CisgICAgICAvLyBjbGFuZy1mb3JtYXQg
b2ZmCisgICAgICAvLyBjbGFuZyBmb3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxpbmUgY29t
bWVudHMuCisgICAgJ1InLCAnSScsICdGJywgJ0YnLAorICAgIDUyLCAgMCwgICAwLCAgIDAsICAg
IC8vIFNpemUgb2Ygd2hvbGUgZmlsZSAtIDg6IDE2ICsgNDQgLSA4LgorICAgICdXJywgJ0EnLCAn
VicsICdFJywKKyAgICAnZCcsICdhJywgJ3QnLCAnYScsCisgICAgMTYsIDAsIDAsIDAsICAgICAg
ICAgLy8gRGF0YSBjaHVuayBwYXlsb2FkIHNpemUuCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgIC8vIERhdGEgMTYgYnl0ZXMuCisgICAgJ2YnLCAn
bScsICd0JywgJyAnLAorICAgIDE2LCAgMCwgICAwLCAgIDAsICAgIC8vIFNpemUgb2YgZm10IGJs
b2NrLgorICAgIDYsICAgMCwgICAgICAgICAgICAgIC8vIEZvcm1hdDogQS1sYXcgKDYpLgorICAg
IDEsICAgMCwgICAgICAgICAgICAgIC8vIENoYW5uZWxzOiAxLgorICAgIDYwLCAgMCwgICAwLCAg
IDAsICAgIC8vIFNhbXBsZSByYXRlOiA2MC4KKyAgICA2MCwgIDAsICAgMCwgICAwLCAgICAvLyBC
eXRlIHJhdGU6IDEgKiAxICogNjAuCisgICAgMSwgICAwLCAgICAgICAgICAgICAgLy8gQmxvY2sg
YWxpZ246IE51bUNoYW5uZWxzICogQnl0ZXNQZXJTYW1wbGUuCisgICAgOCwgICAwLCAgICAgICAg
ICAgICAgLy8gQml0cyBwZXIgc2FtcGxlOiAxICogOC4KKyAgICAgIC8vIGNsYW5nLWZvcm1hdCBv
bgorICB9OworCisgIHNpemVfdCBudW1fY2hhbm5lbHMgPSAwOworICBpbnQgc2FtcGxlX3JhdGUg
PSAwOworICBXYXZGb3JtYXQgZm9ybWF0ID0ga1dhdkZvcm1hdFBjbTsKKyAgc2l6ZV90IGJ5dGVz
X3Blcl9zYW1wbGUgPSAwOworICBzaXplX3QgbnVtX3NhbXBsZXMgPSAwOworICBSZWFkYWJsZVdh
dkJ1ZmZlciByKGtCdWYsIHNpemVvZihrQnVmKSwgLypjaGVja19yZWFkX3NpemU9Ki9mYWxzZSk7
CisgIEVYUEVDVF9GQUxTRShSZWFkV2F2SGVhZGVyKCZyLCAmbnVtX2NoYW5uZWxzLCAmc2FtcGxl
X3JhdGUsICZmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc19wZXJf
c2FtcGxlLCAmbnVtX3NhbXBsZXMpKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X3R5cGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fdHlwZXMuaAppbmRleCA5OWM0MDY0YTNjZjY2MGQxMzI2YWQ1OTBlNGY2OGZhMzQ0NDNlZDBh
Li44NDhiODk5YTBkZDFmNDg5YzUyNmQwYjI1NDUxYTU1MDRjMmIyYjM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdHlwZXMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdHlw
ZXMuaApAQCAtMTEsMTYgKzExLDE1IEBACiAjaWZuZGVmIENPTU1PTl9UWVBFU19IXwogI2RlZmlu
ZSBDT01NT05fVFlQRVNfSF8KIAotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPHN0cmlu
Zy5oPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8c3Rk
ZGVmLmg+ICAvLyBGb3Igc2l6ZV90CisjaW5jbHVkZSA8Y3N0ZGludD4KIAotI2luY2x1ZGUgImFw
aS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAvLyBUT0RP
KHNwcmFuZyk6IFJlbW92ZSB0aGlzIGluY2x1ZGUgd2hlbiBhbGwgdXNhZ2UgaW5jbHVkZXMgaXQg
ZGlyZWN0bHkuCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5o
IgorLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvNzY2MCk6IERlbGV0ZSBpbmNsdWRlIG9uY2UgZG93
bnN0cmVhbSBjb2RlIGlzIHVwZGF0ZWQuCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvZGVj
X3R5cGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9kZXByZWNhdGlvbi5oIgogCiAjaWYgZGVmaW5lZChfTVNDX1ZFUikKIC8vIERpc2FibGUgIm5l
dyBiZWhhdmlvcjogZWxlbWVudHMgb2YgYXJyYXkgd2lsbCBiZSBkZWZhdWx0IGluaXRpYWxpemVk
IgpAQCAtMzAsMTYgKzI5LDYgQEAKIAogI2RlZmluZSBSVFBfUEFZTE9BRF9OQU1FX1NJWkUgMzJ1
CiAKLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pIHx8IGRlZmluZWQoV0lOMzIpCi0vLyBDb21wYXJl
cyB0d28gc3RyaW5ncyB3aXRob3V0IHJlZ2FyZCB0byBjYXNlLgotI2RlZmluZSBTVFJfQ0FTRV9D
TVAoczEsIHMyKSA6Ol9zdHJpY21wKHMxLCBzMikKLS8vIENvbXBhcmVzIGNoYXJhY3RlcnMgb2Yg
dHdvIHN0cmluZ3Mgd2l0aG91dCByZWdhcmQgdG8gY2FzZS4KLSNkZWZpbmUgU1RSX05DQVNFX0NN
UChzMSwgczIsIG4pIDo6X3N0cm5pY21wKHMxLCBzMiwgbikKLSNlbHNlCi0jZGVmaW5lIFNUUl9D
QVNFX0NNUChzMSwgczIpIDo6c3RyY2FzZWNtcChzMSwgczIpCi0jZGVmaW5lIFNUUl9OQ0FTRV9D
TVAoczEsIHMyLCBuKSA6OnN0cm5jYXNlY21wKHMxLCBzMiwgbikKLSNlbmRpZgotCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIAogZW51bSBGcmFtZVR5cGUgewpAQCAtNTAsMjkgKzM5LDYgQEAgZW51bSBG
cmFtZVR5cGUgewogICBrVmlkZW9GcmFtZURlbHRhID0gNCwKIH07CiAKLS8vIFN0YXRpc3RpY3Mg
Zm9yIGFuIFJUQ1AgY2hhbm5lbAotc3RydWN0IFJ0Y3BTdGF0aXN0aWNzIHsKLSAgUnRjcFN0YXRp
c3RpY3MoKQotICAgICAgOiBmcmFjdGlvbl9sb3N0KDApLAotICAgICAgICBwYWNrZXRzX2xvc3Qo
MCksCi0gICAgICAgIGV4dGVuZGVkX2hpZ2hlc3Rfc2VxdWVuY2VfbnVtYmVyKDApLAotICAgICAg
ICBqaXR0ZXIoMCkge30KLQotICB1aW50OF90IGZyYWN0aW9uX2xvc3Q7Ci0gIGludDMyX3QgcGFj
a2V0c19sb3N0OyAgLy8gRGVmaW5lZCBhcyBhIDI0IGJpdCBzaWduZWQgaW50ZWdlciBpbiBSVENQ
Ci0gIHVpbnQzMl90IGV4dGVuZGVkX2hpZ2hlc3Rfc2VxdWVuY2VfbnVtYmVyOwotICB1aW50MzJf
dCBqaXR0ZXI7Ci19OwotCi1jbGFzcyBSdGNwU3RhdGlzdGljc0NhbGxiYWNrIHsKLSBwdWJsaWM6
Ci0gIHZpcnR1YWwgflJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2soKSB7fQotCi0gIHZpcnR1YWwgdm9p
ZCBTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBSdGNwU3RhdGlzdGljcyYgc3RhdGlzdGljcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNzcmMpID0gMDsKLSAgdmly
dHVhbCB2b2lkIENOYW1lQ2hhbmdlZChjb25zdCBjaGFyKiBjbmFtZSwgdWludDMyX3Qgc3NyYykg
PSAwOwotfTsKLQogLy8gU3RhdGlzdGljcyBmb3IgUlRDUCBwYWNrZXQgdHlwZXMuCiBzdHJ1Y3Qg
UnRjcFBhY2tldFR5cGVDb3VudGVyIHsKICAgUnRjcFBhY2tldFR5cGVDb3VudGVyKCkKQEAgLTIw
Nyw3ICsxNzMsNyBAQCBzdHJ1Y3QgQ29kZWNJbnN0IHsKIAogICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ29kZWNJbnN0JiBvdGhlcikgY29uc3QgewogICAgIHJldHVybiBwbHR5cGUgPT0gb3RoZXIu
cGx0eXBlICYmCi0gICAgICAgICAgIChTVFJfQ0FTRV9DTVAocGxuYW1lLCBvdGhlci5wbG5hbWUp
ID09IDApICYmCisgICAgICAgICAgIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCBvdGhl
ci5wbG5hbWUpICYmCiAgICAgICAgICAgIHBsZnJlcSA9PSBvdGhlci5wbGZyZXEgJiYgcGFjc2l6
ZSA9PSBvdGhlci5wYWNzaXplICYmCiAgICAgICAgICAgIGNoYW5uZWxzID09IG90aGVyLmNoYW5u
ZWxzICYmIHJhdGUgPT0gb3RoZXIucmF0ZTsKICAgfQpAQCAtMjE4LDgwICsxODQsNiBAQCBzdHJ1
Y3QgQ29kZWNJbnN0IHsKIC8vIFJUUAogZW51bSB7IGtSdHBDc3JjU2l6ZSA9IDE1IH07ICAvLyBS
RkMgMzU1MCBwYWdlIDEzCiAKLS8vIE5FVEVRIHN0YXRpc3RpY3MuCi1zdHJ1Y3QgTmV0d29ya1N0
YXRpc3RpY3MgewotICAvLyBjdXJyZW50IGppdHRlciBidWZmZXIgc2l6ZSBpbiBtcwotICB1aW50
MTZfdCBjdXJyZW50QnVmZmVyU2l6ZTsKLSAgLy8gcHJlZmVycmVkIChvcHRpbWFsKSBidWZmZXIg
c2l6ZSBpbiBtcwotICB1aW50MTZfdCBwcmVmZXJyZWRCdWZmZXJTaXplOwotICAvLyBhZGRpbmcg
ZXh0cmEgZGVsYXkgZHVlIHRvICJwZWFreSBqaXR0ZXIiCi0gIGJvb2wgaml0dGVyUGVha3NGb3Vu
ZDsKLSAgLy8gU3RhdHMgYmVsb3cgY29ycmVzcG9uZCB0byBzaW1pbGFybHktbmFtZWQgZmllbGRz
IGluIHRoZSBXZWJSVEMgc3RhdHMgc3BlYy4KLSAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dl
YnJ0Yy1zdGF0cy8jZG9tLXJ0Y21lZGlhc3RyZWFtdHJhY2tzdGF0cwotICB1aW50NjRfdCB0b3Rh
bFNhbXBsZXNSZWNlaXZlZDsKLSAgdWludDY0X3QgY29uY2VhbGVkU2FtcGxlczsKLSAgdWludDY0
X3QgY29uY2VhbG1lbnRFdmVudHM7Ci0gIHVpbnQ2NF90IGppdHRlckJ1ZmZlckRlbGF5TXM7Ci0g
IC8vIFN0YXRzIGJlbG93IERPIE5PVCBjb3JyZXNwb25kIGRpcmVjdGx5IHRvIGFueXRoaW5nIGlu
IHRoZSBXZWJSVEMgc3RhdHMKLSAgLy8gTG9zcyByYXRlIChuZXR3b3JrICsgbGF0ZSk7IGZyYWN0
aW9uIGJldHdlZW4gMCBhbmQgMSwgc2NhbGVkIHRvIFExNC4KLSAgdWludDE2X3QgY3VycmVudFBh
Y2tldExvc3NSYXRlOwotICAvLyBMYXRlIGxvc3MgcmF0ZTsgZnJhY3Rpb24gYmV0d2VlbiAwIGFu
ZCAxLCBzY2FsZWQgdG8gUTE0LgotICB1bmlvbiB7Ci0gICAgUlRDX0RFUFJFQ0FURUQgdWludDE2
X3QgY3VycmVudERpc2NhcmRSYXRlOwotICB9OwotICAvLyBmcmFjdGlvbiAob2Ygb3JpZ2luYWwg
c3RyZWFtKSBvZiBzeW50aGVzaXplZCBhdWRpbyBpbnNlcnRlZCB0aHJvdWdoCi0gIC8vIGV4cGFu
c2lvbiAoaW4gUTE0KQotICB1aW50MTZfdCBjdXJyZW50RXhwYW5kUmF0ZTsKLSAgLy8gZnJhY3Rp
b24gKG9mIG9yaWdpbmFsIHN0cmVhbSkgb2Ygc3ludGhlc2l6ZWQgc3BlZWNoIGluc2VydGVkIHRo
cm91Z2gKLSAgLy8gZXhwYW5zaW9uIChpbiBRMTQpCi0gIHVpbnQxNl90IGN1cnJlbnRTcGVlY2hF
eHBhbmRSYXRlOwotICAvLyBmcmFjdGlvbiBvZiBzeW50aGVzaXplZCBzcGVlY2ggaW5zZXJ0ZWQg
dGhyb3VnaCBwcmUtZW1wdGl2ZSBleHBhbnNpb24KLSAgLy8gKGluIFExNCkKLSAgdWludDE2X3Qg
Y3VycmVudFByZWVtcHRpdmVSYXRlOwotICAvLyBmcmFjdGlvbiBvZiBkYXRhIHJlbW92ZWQgdGhy
b3VnaCBhY2NlbGVyYXRpb24gKGluIFExNCkKLSAgdWludDE2X3QgY3VycmVudEFjY2VsZXJhdGVS
YXRlOwotICAvLyBmcmFjdGlvbiBvZiBkYXRhIGNvbWluZyBmcm9tIHNlY29uZGFyeSBkZWNvZGlu
ZyAoaW4gUTE0KQotICB1aW50MTZfdCBjdXJyZW50U2Vjb25kYXJ5RGVjb2RlZFJhdGU7Ci0gIC8v
IEZyYWN0aW9uIG9mIHNlY29uZGFyeSBkYXRhLCBpbmNsdWRpbmcgRkVDIGFuZCBSRUQsIHRoYXQg
aXMgZGlzY2FyZGVkIChpbgotICAvLyBRMTQpLiBEaXNjYXJkaW5nIG9mIHNlY29uZGFyeSBkYXRh
IGNhbiBiZSBjYXVzZWQgYnkgdGhlIHJlY2VwdGlvbiBvZiB0aGUKLSAgLy8gcHJpbWFyeSBkYXRh
LCBvYnNvbGV0aW5nIHRoZSBzZWNvbmRhcnkgZGF0YS4gSXQgY2FuIGFsc28gYmUgY2F1c2VkIGJ5
IGVhcmx5Ci0gIC8vIG9yIGxhdGUgYXJyaXZhbCBvZiBzZWNvbmRhcnkgZGF0YS4KLSAgdWludDE2
X3QgY3VycmVudFNlY29uZGFyeURpc2NhcmRlZFJhdGU7Ci0gIC8vIGNsb2NrLWRyaWZ0IGluIHBh
cnRzLXBlci1taWxsaW9uIChuZWdhdGl2ZSBvciBwb3NpdGl2ZSkKLSAgaW50MzJfdCBjbG9ja0Ry
aWZ0UFBNOwotICAvLyBhdmVyYWdlIHBhY2tldCB3YWl0aW5nIHRpbWUgaW4gdGhlIGppdHRlciBi
dWZmZXIgKG1zKQotICBpbnQgbWVhbldhaXRpbmdUaW1lTXM7Ci0gIC8vIG1lZGlhbiBwYWNrZXQg
d2FpdGluZyB0aW1lIGluIHRoZSBqaXR0ZXIgYnVmZmVyIChtcykKLSAgaW50IG1lZGlhbldhaXRp
bmdUaW1lTXM7Ci0gIC8vIG1pbiBwYWNrZXQgd2FpdGluZyB0aW1lIGluIHRoZSBqaXR0ZXIgYnVm
ZmVyIChtcykKLSAgaW50IG1pbldhaXRpbmdUaW1lTXM7Ci0gIC8vIG1heCBwYWNrZXQgd2FpdGlu
ZyB0aW1lIGluIHRoZSBqaXR0ZXIgYnVmZmVyIChtcykKLSAgaW50IG1heFdhaXRpbmdUaW1lTXM7
Ci0gIC8vIGFkZGVkIHNhbXBsZXMgaW4gb2ZmIG1vZGUgZHVlIHRvIHBhY2tldCBsb3NzCi0gIHNp
emVfdCBhZGRlZFNhbXBsZXM7Ci19OwotCi0vLyBTdGF0aXN0aWNzIGZvciBjYWxscyB0byBBdWRp
b0NvZGluZ01vZHVsZTo6UGxheW91dERhdGExME1zKCkuCi1zdHJ1Y3QgQXVkaW9EZWNvZGluZ0Nh
bGxTdGF0cyB7Ci0gIEF1ZGlvRGVjb2RpbmdDYWxsU3RhdHMoKQotICAgICAgOiBjYWxsc190b19z
aWxlbmNlX2dlbmVyYXRvcigwKSwKLSAgICAgICAgY2FsbHNfdG9fbmV0ZXEoMCksCi0gICAgICAg
IGRlY29kZWRfbm9ybWFsKDApLAotICAgICAgICBkZWNvZGVkX3BsYygwKSwKLSAgICAgICAgZGVj
b2RlZF9jbmcoMCksCi0gICAgICAgIGRlY29kZWRfcGxjX2NuZygwKSwKLSAgICAgICAgZGVjb2Rl
ZF9tdXRlZF9vdXRwdXQoMCkge30KLQotICBpbnQgY2FsbHNfdG9fc2lsZW5jZV9nZW5lcmF0b3I7
ICAvLyBOdW1iZXIgb2YgY2FsbHMgd2hlcmUgc2lsZW5jZSBnZW5lcmF0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBOZXRFcSB3YXMgZGlzZW5nYWdlZCBmcm9t
IGRlY29kaW5nLgotICBpbnQgY2FsbHNfdG9fbmV0ZXE7ICAgICAgICAgICAgICAvLyBOdW1iZXIg
b2YgY2FsbHMgdG8gTmV0RXEuCi0gIGludCBkZWNvZGVkX25vcm1hbDsgIC8vIE51bWJlciBvZiBj
YWxscyB3aGVyZSBhdWRpbyBSVFAgcGFja2V0IGRlY29kZWQuCi0gIGludCBkZWNvZGVkX3BsYzsg
ICAgIC8vIE51bWJlciBvZiBjYWxscyByZXN1bHRlZCBpbiBQTEMuCi0gIGludCBkZWNvZGVkX2Nu
ZzsgIC8vIE51bWJlciBvZiBjYWxscyB3aGVyZSBjb21mb3J0IG5vaXNlIGdlbmVyYXRlZCBkdWUg
dG8gRFRYLgotICBpbnQgZGVjb2RlZF9wbGNfY25nOyAgICAgICAvLyBOdW1iZXIgb2YgY2FsbHMg
cmVzdWx0ZWQgd2hlcmUgUExDIGZhZGVkIHRvIENORy4KLSAgaW50IGRlY29kZWRfbXV0ZWRfb3V0
cHV0OyAgLy8gTnVtYmVyIG9mIGNhbGxzIHJldHVybmluZyBhIG11dGVkIHN0YXRlIG91dHB1dC4K
LX07Ci0KIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQogLy8gVmlkZW8gc3BlY2lmaWMgdHlwZXMKIC8vID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpAQCAtMzMwLDE4ICsyMjIsNiBAQCBlbnVtIFByb2ZpbGUgewogCiB9ICAvLyBuYW1lc3BhY2Ug
SDI2NAogCi0vLyBWaWRlbyBjb2RlYyB0eXBlcwotZW51bSBWaWRlb0NvZGVjVHlwZSB7Ci0gIC8v
IFRoZXJlIGFyZSB2YXJpb3VzIG1lbXNldCguLi4sIDAsIC4uLikgY2FsbHMgaW4gdGhlIGNvZGUg
dGhhdCByZWx5IG9uCi0gIC8vIGtWaWRlb0NvZGVjR2VuZXJpYyBiZWluZyB6ZXJvLgotICBrVmlk
ZW9Db2RlY0dlbmVyaWMgPSAwLAotICBrVmlkZW9Db2RlY1ZQOCwKLSAga1ZpZGVvQ29kZWNWUDks
Ci0gIGtWaWRlb0NvZGVjSDI2NCwKLSAga1ZpZGVvQ29kZWNJNDIwLAotICBrVmlkZW9Db2RlY011
bHRpcGxleCwKLX07Ci0KIHN0cnVjdCBTcGF0aWFsTGF5ZXIgewogICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3BhdGlhbExheWVyJiBvdGhlcikgY29uc3Q7CiAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTcGF0aWFsTGF5ZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQpAQCAtMzYxLDkgKzI0MSw2IEBAIHN0cnVjdCBTcGF0aWFsTGF5ZXIgewogLy8gc2V0dGluZ3Mg
c3VjaCBhcyByZXNvbHV0aW9uLgogdHlwZWRlZiBTcGF0aWFsTGF5ZXIgU2ltdWxjYXN0U3RyZWFt
OwogCi0vLyBUT0RPKHNwcmFuZyk6IFJlbW92ZSB0aGlzIHdoZW4gZG93bnN0cmVhbSBwcm9qZWN0
cyBoYXZlIGJlZW4gdXBkYXRlZC4KLXVzaW5nIEJpdHJhdGVBbGxvY2F0aW9uID0gVmlkZW9CaXRy
YXRlQWxsb2NhdGlvbjsKLQogLy8gQmFuZHdpZHRoIG92ZXItdXNlIGRldGVjdG9yIG9wdGlvbnMu
ICBUaGVzZSBhcmUgdXNlZCB0byBkcml2ZQogLy8gZXhwZXJpbWVudGF0aW9uIHdpdGggYmFuZHdp
ZHRoIGVzdGltYXRpb24gcGFyYW1ldGVycy4KIC8vIFNlZSBtb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9vdmVydXNlX2RldGVjdG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9CVUlMRC5nbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9CVUlMRC5n
bgppbmRleCA0Mzc4MGMxMTNkNTA3ZmI0YjY2ODJmOWZlZjgzYmU1MzBiYWY3NTk3Li4xMjViY2Zj
NTU4MzM3ZTBlMjNjNzFlODkyOWY2M2QwODhmOWQ0Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vQlVJTEQuZ24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVv
L0JVSUxELmduCkBAIC0yNiw3ICsyNiw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY29tbW9uX3Zp
ZGVvIikgewogICAgICJoMjY0L3Nwc192dWlfcmV3cml0ZXIuaCIsCiAgICAgImk0MjBfYnVmZmVy
X3Bvb2wuY2MiLAogICAgICJpbmNsdWRlL2JpdHJhdGVfYWRqdXN0ZXIuaCIsCi0gICAgImluY2x1
ZGUvZnJhbWVfY2FsbGJhY2suaCIsCiAgICAgImluY2x1ZGUvaTQyMF9idWZmZXJfcG9vbC5oIiwK
ICAgICAiaW5jbHVkZS9pbmNvbWluZ192aWRlb19zdHJlYW0uaCIsCiAgICAgImluY2x1ZGUvdmlk
ZW9fZnJhbWUuaCIsCkBAIC0zNCw3ICszMyw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY29tbW9u
X3ZpZGVvIikgewogICAgICJpbmNvbWluZ192aWRlb19zdHJlYW0uY2MiLAogICAgICJsaWJ5dXYv
aW5jbHVkZS93ZWJydGNfbGlieXV2LmgiLAogICAgICJsaWJ5dXYvd2VicnRjX2xpYnl1di5jYyIs
Ci0gICAgInZpZGVvX2ZyYW1lLmNjIiwKICAgICAidmlkZW9fZnJhbWVfYnVmZmVyLmNjIiwKICAg
ICAidmlkZW9fcmVuZGVyX2ZyYW1lcy5jYyIsCiAgICAgInZpZGVvX3JlbmRlcl9mcmFtZXMuaCIs
CkBAIC00Miw2ICs0MCw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY29tbW9uX3ZpZGVvIikgewog
CiAgIGRlcHMgPSBbCiAgICAgIi4uOndlYnJ0Y19jb21tb24iLAorICAgICIuLi9hcGkvdmlkZW86
ZW5jb2RlZF9pbWFnZSIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRp
b24iLAogICAgICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IiLAogICAgICIu
Li9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLApAQCAtOTYsNiArOTUsNyBAQCBpZiAocnRjX2luY2x1
ZGVfdGVzdHMpIHsKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAg
ICAgICAiLi4vdGVzdDpmaWxldXRpbHMiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAg
ICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLi4vdGVzdDp2aWRlb190ZXN0X2Nv
bW1vbiIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICAgICIvL3RoaXJkX3BhcnR5L2xp
Ynl1diIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vYml0cmF0ZV9hZGp1c3Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9iaXRyYXRlX2FkanVzdGVyLmNj
CmluZGV4IDE2M2M0YjE5ODE0NzRiMzkyYmI4NzA3MjA2ZjdhZDU3ODVmOTY5ZWEuLmFjMjFmMmJk
MjAzODdhNjczMTcyN2I0ODAxMGViYzIwNWFlMTJkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9iaXRyYXRlX2FkanVz
dGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl92aWRlby9iaXRyYXRlX2FkanVzdGVyLmNjCkBAIC0xMyw3ICsxMyw2IEBACiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNtYXRoPgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3RpbWV1dGlscy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8v
aDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuY2MKaW5kZXggMmU2M2I5ZDRhMTZlZjVlNjFhM2Nm
Y2IxZjVlYjA0MTExYzljOTQ1OS4uZjNkMmY4YTZiZjgwNGRlMzE0MzNjZDJkN2NiNTRhYTAwYThi
NTNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9iaXRzdHJlYW1fcGFyc2VyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L2gy
NjRfYml0c3RyZWFtX3BhcnNlci5jYwpAQCAtOSwxMyArOSwxMiBAQAogICovCiAjaW5jbHVkZSAi
Y29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9iaXRzdHJlYW1fcGFyc2VyLmgiCiAKLSNpbmNsdWRlIDxt
ZW1vcnk+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRl
IDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9iaXRidWZmZXIuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLQogI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0L2gyNjRfY29t
bW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYml0YnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9iaXRzdHJl
YW1fcGFyc2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuaAppbmRleCBiM2ZhYzdiYjIx
NTcyNmVmZjgyZmYzM2FhMWUyMzc0YWNlZWUzMjMyLi45NjJjOWMxNmFkMmY0NmZiYWQ3ZTQ3ZDNj
MjY0ZjU4NjZhMjFiYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlk
ZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuaApAQCAtMTcsMTAgKzE3LDYgQEAKICNpbmNs
dWRlICJjb21tb25fdmlkZW8vaDI2NC9wcHNfcGFyc2VyLmgiCiAjaW5jbHVkZSAiY29tbW9uX3Zp
ZGVvL2gyNjQvc3BzX3BhcnNlci5oIgogCi1uYW1lc3BhY2UgcnRjIHsKLWNsYXNzIEJpdEJ1ZmZl
cldyaXRlcjsKLX0KLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIFN0YXRlZnVsIEgyNjQgYml0
c3RyZWFtIHBhcnNlciAoZHVlIHRvIFNQUy9QUFMpLiBVc2VkIHRvIHBhcnNlIG91dCBRUCB2YWx1
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl92aWRlby9oMjY0L2gyNjRfY29tbW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uY2MKaW5k
ZXggNjBlZDk0ZDQwMzExNjc1ODY1ZWY4NDRjZjg4NDY1Njg2ZWViMGY1MS4uNWU1OGJhNjJlOTEz
MDg1MzRmZGZiYmVhZjk0MjdiN2RmMDY5NmNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24u
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUg
ImNvbW1vbl92aWRlby9oMjY0L2gyNjRfY29tbW9uLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50Pgor
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBIMjY0IHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQv
aDI2NF9jb21tb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl92aWRlby9oMjY0L2gyNjRfY29tbW9uLmgKaW5kZXggYTU4YTlmNTVhNTljZGRhNDYw
NzkyMjJmN2EyYmE1NjgyZWM1MjM0MS4uMDI3ODMzYjdjZDdjMjZmZThkMGY4OGM5MTBmMWRiODg5
NGRkNjQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1v
bi5oCkBAIC0xMSw3ICsxMSw4IEBACiAjaWZuZGVmIENPTU1PTl9WSURFT19IMjY0X0gyNjRfQ09N
TU9OX0hfCiAjZGVmaW5lIENPTU1PTl9WSURFT19IMjY0X0gyNjRfQ09NTU9OX0hfCiAKLSNpbmNs
dWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAj
aW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlk
ZW8vaDI2NC9wcHNfcGFyc2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvcHBzX3BhcnNlci5jYwppbmRleCA1YmMyOWYzNTky
NTdkMWNkZjE0ZGVhYzNiNTljZWFkYTU0NDY5OGNkLi40NjRmNjA4MWUzMWUwYzViNjUzYjQ2N2Vm
OTdiMzFiOGUwOGY2ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9wcHNfcGFyc2VyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Bw
c19wYXJzZXIuY2MKQEAgLTEwLDEyICsxMCwxMiBAQAogCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVv
L2gyNjQvcHBzX3BhcnNlci5oIgogCi0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPGNzdGRp
bnQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2
NF9jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9iaXRidWZmZXIuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKICNkZWZp
bmUgUkVUVVJOX0VNUFRZX09OX0ZBSUwoeCkgXAogICBpZiAoISh4KSkgeyAgICAgICAgICAgICAg
ICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfcGFyc2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3BhcnNlci5jYwpp
bmRleCBiNjc5OWEzYmU0MDg0MDQ2MWFmZGEyMGExNDBiYzJlZjliNjRlNzY0Li5jNmY2ZDQ3NDY2
YjE1Y2JmMTNjZGY5ZjhjZmY5YmM1ODBkMDZmZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfcGFyc2Vy
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl92aWRlby9oMjY0L3Nwc19wYXJzZXIuY2MKQEAgLTEwLDEyICsxMCwxMSBAQAogCiAjaW5jbHVk
ZSAiY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3BhcnNlci5oIgogCi0jaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiY29tbW9u
X3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9iaXRidWZmZXIu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB7CiB0eXBlZGVm
IGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6U3BzUGFyc2VyOjpTcHNTdGF0ZT4gT3B0aW9uYWxTcHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jld3JpdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3Z1aV9yZXdyaXRl
ci5jYwppbmRleCA3NDliNjJlNmQyMWQzMTNhZjA0MDc0MzZjMGRjYjA5ZDcwNTJkOWUwLi4zZWFi
MTFmMTg4Y2ViYjBmZjhjODNiMTU5M2Q4YmMzNWI1MjJkODJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNf
dnVpX3Jld3JpdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Nwc192dWlfcmV3cml0ZXIuY2MKQEAgLTExLDE4ICsx
MSwxNyBAQAogCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3Z1aV9yZXdyaXRlci5o
IgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxz
dHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1
ZGUgImNvbW1vbl92aWRlby9oMjY0L2gyNjRfY29tbW9uLmgiCisjaW5jbHVkZSAiY29tbW9uX3Zp
ZGVvL2gyNjQvc3BzX3BhcnNlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgogCi0jaW5jbHVk
ZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKLSNpbmNsdWRlICJjb21tb25fdmlk
ZW8vaDI2NC9zcHNfcGFyc2VyLmgiCi0KIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBUaGUgbWF4
aW11bSBleHBlY3RlZCBncm93dGggZnJvbSBhZGRpbmcgYSBWVUkgdG8gdGhlIFNQUy4gSXQncyBh
Y3R1YWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3Z1aV9yZXdyaXRlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3Z1aV9y
ZXdyaXRlci5oCmluZGV4IDIzMzA1MWQyZDYxZGZiNmY4NTc5OWMzMGJhZGNkNjliODZkOWQwNjgu
LjIwZDFkZDBjZGJmZWY2ODgwMDdiOWMyMzYyODQ2ZmNhZTg3MTRkMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0
L3Nwc192dWlfcmV3cml0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jld3JpdGVyLmgKQEAgLTEyLDE0
ICsxMiwxMyBAQAogI2lmbmRlZiBDT01NT05fVklERU9fSDI2NF9TUFNfVlVJX1JFV1JJVEVSX0hf
CiAjZGVmaW5lIENPTU1PTl9WSURFT19IMjY0X1NQU19WVUlfUkVXUklURVJfSF8KIAorI2luY2x1
ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAiYWJzbC90eXBl
cy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0L3Nwc19wYXJzZXIuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKIAotbmFtZXNwYWNlIHJ0YyB7Ci1jbGFzcyBC
aXRCdWZmZXI7Ci19Ci0KIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBBIGNsYXNzIHRoYXQgY2Fu
IHBhcnNlIGFuIFNQUyBibG9jayBvZiBhIE5BTCB1bml0IGFuZCBpZiBuZWNlc3NhcnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92
aWRlby9pNDIwX2J1ZmZlcl9wb29sLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2k0MjBfYnVmZmVyX3Bvb2wuY2MKaW5kZXggYzQwM2Vl
YjRmY2JhMTRhNDk5ZjJiMDkxMDQwY2QzMTU4ODE3ZGRiNS4uMmU2Y2RjODNiNTFiNmJmYjRmODg5
Zjg0ODUxODg5YWUxZmNiMDhlZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2k0MjBfYnVmZmVyX3Bvb2wuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2k0
MjBfYnVmZmVyX3Bvb2wuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgImNvbW1vbl92
aWRlby9pbmNsdWRlL2k0MjBfYnVmZmVyX3Bvb2wuaCIKIAorI2luY2x1ZGUgPGxpbWl0cz4KKwog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92
aWRlby9pbmNsdWRlL2JpdHJhdGVfYWRqdXN0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2JpdHJhdGVfYWRqdXN0ZXIu
aAppbmRleCBlZTMxMmU0ZjlhNDUyZTc1OWJlMzlkZDVhNTY5ZGYxYzVjOWRmZDU3Li5iYzJjNmJi
ODQ5MzZkMzliOTI5NTdmMGE0ODJjYzY5OTZlZDExZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9iaXRy
YXRlX2FkanVzdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvYml0cmF0ZV9hZGp1c3Rlci5oCkBAIC0xMSwxMCAr
MTEsMTMgQEAKICNpZm5kZWYgQ09NTU9OX1ZJREVPX0lOQ0xVREVfQklUUkFURV9BREpVU1RFUl9I
XwogI2RlZmluZSBDT01NT05fVklERU9fSU5DTFVERV9CSVRSQVRFX0FESlVTVEVSX0hfCiAKLSNp
bmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGlu
dC5oPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhdGVfc3RhdGlzdGlj
cy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvZnJhbWVfY2FsbGJhY2suaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRl
L2ZyYW1lX2NhbGxiYWNrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzODgzYzFk
OGQyZjY4OGEzNjczYjBhZTM2MmU3ZWY4YmFjYjM5NDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvZnJhbWVfY2FsbGJhY2suaAorKysgL2Rldi9u
dWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIENP
TU1PTl9WSURFT19JTkNMVURFX0ZSQU1FX0NBTExCQUNLX0hfCi0jZGVmaW5lIENPTU1PTl9WSURF
T19JTkNMVURFX0ZSQU1FX0NBTExCQUNLX0hfCi0KLSNpbmNsdWRlIDxzdGRkZWYuaD4KLSNpbmNs
dWRlIDxzdGRpbnQuaD4KLQotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1
aWxkL2luY2x1ZGUpCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1jbGFzcyBWaWRlb0ZyYW1lOwot
Ci1zdHJ1Y3QgRW5jb2RlZEZyYW1lIHsKLSBwdWJsaWM6Ci0gIEVuY29kZWRGcmFtZSgpCi0gICAg
ICA6IGRhdGFfKG51bGxwdHIpLAotICAgICAgICBsZW5ndGhfKDApLAotICAgICAgICBmcmFtZV90
eXBlXyhrRW1wdHlGcmFtZSksCi0gICAgICAgIHN0cmVhbV9pZF8oMCksCi0gICAgICAgIHRpbWVz
dGFtcF8oMCkge30KLSAgRW5jb2RlZEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGRhdGEsCi0gICAgICAg
ICAgICAgICBzaXplX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgRnJhbWVUeXBlIGZyYW1lX3R5
cGUsCi0gICAgICAgICAgICAgICBzaXplX3Qgc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgdWlu
dDMyX3QgdGltZXN0YW1wKQotICAgICAgOiBkYXRhXyhkYXRhKSwKLSAgICAgICAgbGVuZ3RoXyhs
ZW5ndGgpLAotICAgICAgICBmcmFtZV90eXBlXyhmcmFtZV90eXBlKSwKLSAgICAgICAgc3RyZWFt
X2lkXyhzdHJlYW1faWQpLAotICAgICAgICB0aW1lc3RhbXBfKHRpbWVzdGFtcCkge30KLQotICBj
b25zdCB1aW50OF90KiBkYXRhXzsKLSAgY29uc3Qgc2l6ZV90IGxlbmd0aF87Ci0gIGNvbnN0IEZy
YW1lVHlwZSBmcmFtZV90eXBlXzsKLSAgY29uc3Qgc2l6ZV90IHN0cmVhbV9pZF87Ci0gIGNvbnN0
IHVpbnQzMl90IHRpbWVzdGFtcF87Ci19OwotCi1jbGFzcyBFbmNvZGVkRnJhbWVPYnNlcnZlciB7
Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgRW5jb2RlZEZyYW1lQ2FsbGJhY2soY29uc3QgRW5j
b2RlZEZyYW1lJiBlbmNvZGVkX2ZyYW1lKSA9IDA7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwg
fkVuY29kZWRGcmFtZU9ic2VydmVyKCkge30KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
LQotI2VuZGlmICAvLyBDT01NT05fVklERU9fSU5DTFVERV9GUkFNRV9DQUxMQkFDS19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X3ZpZGVvL2luY2x1ZGUvaTQyMF9idWZmZXJfcG9vbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvaTQyMF9idWZmZXJfcG9v
bC5oCmluZGV4IDc5ZjdlZWMyM2FmMDhmZDBlYTY1Njg3NDA2NjY1OWZkMDAyODZkODcuLjJkY2Vl
MTk1ZmFkMWU3M2IyOGIyY2IwZWM0MWU3ODRmNjM3NDI1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2k0
MjBfYnVmZmVyX3Bvb2wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9pNDIwX2J1ZmZlcl9wb29sLmgKQEAgLTExLDEy
ICsxMSwxMyBAQAogI2lmbmRlZiBDT01NT05fVklERU9fSU5DTFVERV9JNDIwX0JVRkZFUl9QT09M
X0hfCiAjZGVmaW5lIENPTU1PTl9WSURFT19JTkNMVURFX0k0MjBfQlVGRkVSX1BPT0xfSF8KIAot
I2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxsaXN0Pgog
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
cmFjZV9jaGVja2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9pbmNvbWluZ192aWRlb19zdHJlYW0uaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2lu
Y29taW5nX3ZpZGVvX3N0cmVhbS5oCmluZGV4IDgwNjMwNjFkMzEzMjcyMjgwMjJkOWU5YjU0NGQ1
YjQ0NzdkM2EwMGYuLmZlOGQxMGUyMTZhMGRmYmQwOGE2OGE4YmU5ZDBhNmVmMTk3NTlmZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl92aWRlby9pbmNsdWRlL2luY29taW5nX3ZpZGVvX3N0cmVhbS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2luY29t
aW5nX3ZpZGVvX3N0cmVhbS5oCkBAIC0xMSwxMCArMTEsMTQgQEAKICNpZm5kZWYgQ09NTU9OX1ZJ
REVPX0lOQ0xVREVfSU5DT01JTkdfVklERU9fU1RSRUFNX0hfCiAjZGVmaW5lIENPTU1PTl9WSURF
T19JTkNMVURFX0lOQ09NSU5HX1ZJREVPX1NUUkVBTV9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+
CisKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRlICJhcGkvdmlk
ZW8vdmlkZW9fc2lua19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vdmlkZW9f
cmVuZGVyX2ZyYW1lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhY2VfY2hlY2tlci5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRf
Y2hlY2tlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlk
ZW9fZnJhbWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgKaW5kZXggNTY1ODcwZTRkYzM2NDcxODI0
YTg2YmYyY2U0NGUwYzE2NjY3NjdiNi4uYmEyODBmMmE4Y2RjYmY4NmM4ZGJiMDUyOGFlODJhOTcz
ZjI1ZjA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS92aWRl
b19mcmFtZS5oCkBAIC0xMSw5MSArMTEsNyBAQAogI2lmbmRlZiBDT01NT05fVklERU9fSU5DTFVE
RV9WSURFT19GUkFNRV9IXwogI2RlZmluZSBDT01NT05fVklERU9fSU5DTFVERV9WSURFT19GUkFN
RV9IXwogCi0vLyBUT0RPKG5pc3NlKTogVGhpcyBoZWFkZXIgZmlsZSBzaG91bGQgZXZlbnR1YWxs
eSBiZSBkZWxldGVkLiBUaGUKLS8vIEVuY29kZWRJbWFnZSBjbGFzcyBzdGF5cyBpbiB0aGlzIGZp
bGUgdW50aWwgd2UgaGF2ZSBmaWd1cmVkIG91dCBob3cKLS8vIHRvIHJlZmFjdG9yIGFuZCBjbGVh
biB1cCByZWxhdGVkIGludGVyZmFjZXMsIGF0IHdoaWNoIHBvaW50IGl0Ci0vLyBzaG91bGQgYmUg
bW92ZWQgdG8gc29tZXdoZXJlIHVuZGVyIGFwaS8uCi0KLSNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5oIgotI2lu
Y2x1ZGUgImFwaS92aWRlby92aWRlb19yb3RhdGlvbi5oIgotI2luY2x1ZGUgImFwaS92aWRlby92
aWRlb190aW1pbmcuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWls
ZC9pbmNsdWRlKQotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVE9ETyhwYm9zKTogUmVuYW1l
IEVuY29kZWRGcmFtZSBhbmQgcmVmb3JtYXQgdGhpcyBjbGFzcycgbWVtYmVycy4KLWNsYXNzIEVu
Y29kZWRJbWFnZSB7Ci0gcHVibGljOgotICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWZmZXJQYWRk
aW5nQnl0ZXNIMjY0OwotCi0gIC8vIFNvbWUgZGVjb2RlcnMgcmVxdWlyZSBlbmNvZGVkIGltYWdl
IGJ1ZmZlcnMgdG8gYmUgcGFkZGVkIHdpdGggYSBzbWFsbAotICAvLyBudW1iZXIgb2YgYWRkaXRp
b25hbCBieXRlcyAoZHVlIHRvIG92ZXItcmVhZGluZyBieXRlIHJlYWRlcnMpLgotICBzdGF0aWMg
c2l6ZV90IEdldEJ1ZmZlclBhZGRpbmdCeXRlcyhWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlKTsK
LQotICBFbmNvZGVkSW1hZ2UoKTsKLSAgRW5jb2RlZEltYWdlKGNvbnN0IEVuY29kZWRJbWFnZSYp
OwotICBFbmNvZGVkSW1hZ2UodWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBzaXplX3Qg
c2l6ZSk7Ci0KLSAgLy8gVE9ETyhuaXNzZSk6IENoYW5nZSBzdHlsZSB0byB0aW1lc3RhbXAoKSwg
c2V0X3RpbWVzdGFtcCgpLCBmb3IgY29uc2lzdGVuY3kKLSAgLy8gd2l0aCB0aGUgVmlkZW9GcmFt
ZSBjbGFzcy4KLSAgLy8gU2V0IGZyYW1lIHRpbWVzdGFtcCAoOTBrSHopLgotICB2b2lkIFNldFRp
bWVzdGFtcCh1aW50MzJfdCB0aW1lc3RhbXApIHsgdGltZXN0YW1wX3J0cF8gPSB0aW1lc3RhbXA7
IH0KLQotICAvLyBHZXQgZnJhbWUgdGltZXN0YW1wICg5MGtIeikuCi0gIHVpbnQzMl90IFRpbWVz
dGFtcCgpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF9ydHBfOyB9Ci0KLSAgdm9pZCBTZXRFbmNv
ZGVUaW1lKGludDY0X3QgZW5jb2RlX3N0YXJ0X21zLCBpbnQ2NF90IGVuY29kZV9maW5pc2hfbXMp
OwotCi0gIGFic2w6Om9wdGlvbmFsPGludD4gU3BhdGlhbEluZGV4KCkgY29uc3QgewotICAgIGlm
IChzcGF0aWFsX2luZGV4XyA8IDApCi0gICAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKLSAgICBy
ZXR1cm4gc3BhdGlhbF9pbmRleF87Ci0gIH0KLSAgdm9pZCBTZXRTcGF0aWFsSW5kZXgoYWJzbDo6
b3B0aW9uYWw8aW50PiBzcGF0aWFsX2luZGV4KSB7Ci0gICAgUlRDX0RDSEVDS19HRShzcGF0aWFs
X2luZGV4LnZhbHVlX29yKDApLCAwKTsKLSAgICBSVENfRENIRUNLX0xUKHNwYXRpYWxfaW5kZXgu
dmFsdWVfb3IoMCksIGtNYXhTcGF0aWFsTGF5ZXJzKTsKLSAgICBzcGF0aWFsX2luZGV4XyA9IHNw
YXRpYWxfaW5kZXgudmFsdWVfb3IoLTEpOwotICB9Ci0KLSAgdWludDMyX3QgX2VuY29kZWRXaWR0
aCA9IDA7Ci0gIHVpbnQzMl90IF9lbmNvZGVkSGVpZ2h0ID0gMDsKLSAgLy8gTlRQIHRpbWUgb2Yg
dGhlIGNhcHR1cmUgdGltZSBpbiBsb2NhbCB0aW1lYmFzZSBpbiBtaWxsaXNlY29uZHMuCi0gIGlu
dDY0X3QgbnRwX3RpbWVfbXNfID0gMDsKLSAgaW50NjRfdCBjYXB0dXJlX3RpbWVfbXNfID0gMDsK
LSAgRnJhbWVUeXBlIF9mcmFtZVR5cGUgPSBrVmlkZW9GcmFtZURlbHRhOwotICB1aW50OF90KiBf
YnVmZmVyOwotICBzaXplX3QgX2xlbmd0aDsKLSAgc2l6ZV90IF9zaXplOwotICBWaWRlb1JvdGF0
aW9uIHJvdGF0aW9uXyA9IGtWaWRlb1JvdGF0aW9uXzA7Ci0gIFZpZGVvQ29udGVudFR5cGUgY29u
dGVudF90eXBlXyA9IFZpZGVvQ29udGVudFR5cGU6OlVOU1BFQ0lGSUVEOwotICBib29sIF9jb21w
bGV0ZUZyYW1lID0gZmFsc2U7Ci0gIGludCBxcF8gPSAtMTsgIC8vIFF1YW50aXplciB2YWx1ZS4K
LQotICAvLyBXaGVuIGFuIGFwcGxpY2F0aW9uIGluZGljYXRlcyBub24temVybyB2YWx1ZXMgaGVy
ZSwgaXQgaXMgdGFrZW4gYXMgYW4KLSAgLy8gaW5kaWNhdGlvbiB0aGF0IGFsbCBmdXR1cmUgZnJh
bWVzIHdpbGwgYmUgY29uc3RyYWluZWQgd2l0aCB0aG9zZSBsaW1pdHMKLSAgLy8gdW50aWwgdGhl
IGFwcGxpY2F0aW9uIGluZGljYXRlcyBhIGNoYW5nZSBhZ2Fpbi4KLSAgUGxheW91dERlbGF5IHBs
YXlvdXRfZGVsYXlfID0gey0xLCAtMX07Ci0KLSAgc3RydWN0IFRpbWluZyB7Ci0gICAgdWludDhf
dCBmbGFncyA9IFZpZGVvU2VuZFRpbWluZzo6a0ludmFsaWQ7Ci0gICAgaW50NjRfdCBlbmNvZGVf
c3RhcnRfbXMgPSAwOwotICAgIGludDY0X3QgZW5jb2RlX2ZpbmlzaF9tcyA9IDA7Ci0gICAgaW50
NjRfdCBwYWNrZXRpemF0aW9uX2ZpbmlzaF9tcyA9IDA7Ci0gICAgaW50NjRfdCBwYWNlcl9leGl0
X21zID0gMDsKLSAgICBpbnQ2NF90IG5ldHdvcmtfdGltZXN0YW1wX21zID0gMDsKLSAgICBpbnQ2
NF90IG5ldHdvcmsyX3RpbWVzdGFtcF9tcyA9IDA7Ci0gICAgaW50NjRfdCByZWNlaXZlX3N0YXJ0
X21zID0gMDsKLSAgICBpbnQ2NF90IHJlY2VpdmVfZmluaXNoX21zID0gMDsKLSAgfSB0aW1pbmdf
OwotCi0gcHJpdmF0ZToKLSAgdWludDMyX3QgdGltZXN0YW1wX3J0cF8gPSAwOwotICAvLyAtMSBt
ZWFucyBub3Qgc2V0LiBVc2UgYSBwbGFpbiBpbnQgcmF0aGVyIHRoYW4gb3B0aW9uYWwsIHRvIGtl
ZXAgdGhpcyBjbGFzcwotICAvLyBjb3B5YWJsZSB3aXRoIG1lbWNweS4KLSAgaW50IHNwYXRpYWxf
aW5kZXhfID0gLTE7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisvLyBUT0RPKG5pc3Nl
KTogRGVsZXRlIHRoaXMgZmlsZSwgYWZ0ZXIgZG93bnN0cmVhbSBjb2RlIGlzIHVwZGF0ZWQuCisj
aW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKIAogI2VuZGlmICAvLyBDT01NT05f
VklERU9fSU5DTFVERV9WSURFT19GUkFNRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJh
bWVfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZV9idWZmZXIuaAppbmRleCAxMWJiODEyNTMx
NmFhYzkxMmQxZmY4NTlhYWFkZDczMGE4MjFjZjhhLi5mODEzODUxYjlhOWVhNzFhZDU3N2U0OTBm
ZmQ2NmMxZTcxNzg2OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZV9idWZmZXIuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlk
ZW8vaW5jbHVkZS92aWRlb19mcmFtZV9idWZmZXIuaApAQCAtMTEsNTEgKzExLDE1IEBACiAjaWZu
ZGVmIENPTU1PTl9WSURFT19JTkNMVURFX1ZJREVPX0ZSQU1FX0JVRkZFUl9IXwogI2RlZmluZSBD
T01NT05fVklERU9fSU5DTFVERV9WSURFT19GUkFNRV9CVUZGRVJfSF8KIAotI2luY2x1ZGUgPG1l
bW9yeT4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19m
cmFtZV9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jYWxsYmFjay5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRf
cmVmX3B0ci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotLy8gRGVwcmVjYXRlZC4gUGxlYXNl
IHVzZSBXcmFwSTQyMEJ1ZmZlciguLi4pIGluc3RlYWQuCi1jbGFzcyBXcmFwcGVkSTQyMEJ1ZmZl
ciA6IHB1YmxpYyBJNDIwQnVmZmVySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIFdyYXBwZWRJNDIw
QnVmZmVyKGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogeV9wbGFuZSwKLSAgICAgICAgICAgICAgICAg
ICAgaW50IHlfc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiB1X3Bs
YW5lLAotICAgICAgICAgICAgICAgICAgICBpbnQgdV9zdHJpZGUsCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIHZfcGxhbmUsCi0gICAgICAgICAgICAgICAgICAgIGludCB2X3N0
cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDYWxsYmFjazA8dm9pZD4mIG5v
X2xvbmdlcl91c2VkKTsKLSAgaW50IHdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGludCBoZWln
aHQoKSBjb25zdCBvdmVycmlkZTsKLQotICBjb25zdCB1aW50OF90KiBEYXRhWSgpIGNvbnN0IG92
ZXJyaWRlOwotICBjb25zdCB1aW50OF90KiBEYXRhVSgpIGNvbnN0IG92ZXJyaWRlOwotICBjb25z
dCB1aW50OF90KiBEYXRhVigpIGNvbnN0IG92ZXJyaWRlOwotICBpbnQgU3RyaWRlWSgpIGNvbnN0
IG92ZXJyaWRlOwotICBpbnQgU3RyaWRlVSgpIGNvbnN0IG92ZXJyaWRlOwotICBpbnQgU3RyaWRl
VigpIGNvbnN0IG92ZXJyaWRlOwotCi0gcHJpdmF0ZToKLSAgZnJpZW5kIGNsYXNzIHJ0Yzo6UmVm
Q291bnRlZE9iamVjdDxXcmFwcGVkSTQyMEJ1ZmZlcj47Ci0gIH5XcmFwcGVkSTQyMEJ1ZmZlcigp
IG92ZXJyaWRlOwotCi0gIGNvbnN0IGludCB3aWR0aF87Ci0gIGNvbnN0IGludCBoZWlnaHRfOwot
ICBjb25zdCB1aW50OF90KiBjb25zdCB5X3BsYW5lXzsKLSAgY29uc3QgdWludDhfdCogY29uc3Qg
dV9wbGFuZV87Ci0gIGNvbnN0IHVpbnQ4X3QqIGNvbnN0IHZfcGxhbmVfOwotICBjb25zdCBpbnQg
eV9zdHJpZGVfOwotICBjb25zdCBpbnQgdV9zdHJpZGVfOwotICBjb25zdCBpbnQgdl9zdHJpZGVf
OwotICBydGM6OkNhbGxiYWNrMDx2b2lkPiBub19sb25nZXJfdXNlZF9jYl87Ci19OwotCiBydGM6
OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gV3JhcEk0MjBCdWZmZXIoCiAgICAg
aW50IHdpZHRoLAogICAgIGludCBoZWlnaHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jb21pbmdfdmlkZW9fc3Ry
ZWFtLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X3ZpZGVvL2luY29taW5nX3ZpZGVvX3N0cmVhbS5jYwppbmRleCBlZmNhNTE0NTU2Njk4ZjZmODNi
ZDExMzdlNzgwNjM0NDJjMDk0OTM5Li5jOGIxMmU3NDdmZjZjOGM5NzlhMmQwNTk5YjM2MDhlMTJm
Njc5ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vaW5jb21pbmdfdmlkZW9fc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNvbWluZ192
aWRlb19zdHJlYW0uY2MKQEAgLTExLDkgKzExLDExIEBACiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVv
L2luY2x1ZGUvaW5jb21pbmdfdmlkZW9fc3RyZWFtLmgiCiAKICNpbmNsdWRlIDxtZW1vcnk+Cisj
aW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNp
bmNsdWRlICJjb21tb25fdmlkZW8vdmlkZW9fcmVuZGVyX2ZyYW1lcy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL3RpbWV1dGlscy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3Zp
ZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNf
bGlieXV2LmgKaW5kZXggNGNiZmVjMjAxODdlMjIwNDAyNzI3MGQ4MDI4OTFmZDFjN2YzOWVlMC4u
ZDMyNDgzNDBkODc1ZmVhODE3NTE4MzU3MmJiYjIzZTliNmRlYjdlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1
di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vbGlieXV2L2luY2x1ZGUvd2VicnRjX2xpYnl1
di5oCkBAIC0xNSwxMSArMTUsMTQgQEAKICNpZm5kZWYgQ09NTU9OX1ZJREVPX0xJQllVVl9JTkNM
VURFX1dFQlJUQ19MSUJZVVZfSF8KICNkZWZpbmUgQ09NTU9OX1ZJREVPX0xJQllVVl9JTkNMVURF
X1dFQlJUQ19MSUJZVVZfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1l
LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkg
IC8vIFZpZGVvVHlwZXMuCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5o
IgorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl92aWRlby9saWJ5dXYvd2VicnRjX2xpYnl1di5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYvd2VicnRjX2xpYnl1
di5jYwppbmRleCA2YmRmYWJkNWU5Yzc2ZjllYzcyODk4YWIyMGU2YjBmOTAyMTc1ZjZiLi42ZTNm
YjNlZDM1YTRhNDAzYWE1MjM1ZTk3ODFlOTViMTAyMzQxMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vbGlieXV2L3dl
YnJ0Y19saWJ5dXYuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di93ZWJydGNfbGlieXV2LmNjCkBAIC0xMjQsMjkgKzEy
NCw2IEBAIGludCBFeHRyYWN0QnVmZmVyKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2ZyYW1lLCBz
aXplX3Qgc2l6ZSwgdWludDhfdCogYnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJ1
ZmZlcik7CiB9CiAKLWludCBDb252ZXJ0TlYxMlRvUkdCNTY1KGNvbnN0IHVpbnQ4X3QqIHNyY19m
cmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGRzdF9mcmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBoZWlnaHQpIHsKLSAgaW50IGFic19oZWlnaHQgPSAoaGVpZ2h0IDwgMCkgPyAtaGVpZ2h0IDog
aGVpZ2h0OwotICBjb25zdCB1aW50OF90KiB5cGxhbmUgPSBzcmNfZnJhbWU7Ci0gIGNvbnN0IHVp
bnQ4X3QqIHV2SW50ZXJsYWNlZCA9IHNyY19mcmFtZSArICh3aWR0aCAqIGFic19oZWlnaHQpOwot
Ci0gIHJldHVybiBsaWJ5dXY6Ok5WMTJUb1JHQjU2NSh5cGxhbmUsIHdpZHRoLCB1dkludGVybGFj
ZWQsICh3aWR0aCArIDEpID4+IDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3Rf
ZnJhbWUsIHdpZHRoLCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQotaW50IENvbnZlcnRSR0IyNFRvQVJH
Qihjb25zdCB1aW50OF90KiBzcmNfZnJhbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QqIGRzdF9mcmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICBpbnQg
ZHN0X3N0cmlkZSkgewotICBpZiAoZHN0X3N0cmlkZSA9PSAwKQotICAgIGRzdF9zdHJpZGUgPSB3
aWR0aDsKLSAgcmV0dXJuIGxpYnl1djo6UkdCMjRUb0FSR0Ioc3JjX2ZyYW1lLCB3aWR0aCwgZHN0
X2ZyYW1lLCBkc3Rfc3RyaWRlLCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVpZ2h0KTsKLX0KLQogaW50IENvbnZlcnRWaWRlb1R5cGUoVmlkZW9UeXBlIHZpZGVvX3R5cGUp
IHsKICAgc3dpdGNoICh2aWRlb190eXBlKSB7CiAgICAgY2FzZSBWaWRlb1R5cGU6OmtVbmtub3du
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lLmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmNDYxODE0NjcxMTE4M2NmYWEzN2VlMjU3ZGQyMzIwYWNiZjdmYTU1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFt
ZS5jYworKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChj
KSAyMDEyIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAq
LwotCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKLQotI2lu
Y2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gc3dhcAotCi0jaW5j
bHVkZSAicnRjX2Jhc2UvYmluZC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotCi1u
YW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gRkZtcGVnJ3MgZGVjb2RlciwgdXNlZCBieSBIMjY0RGVj
b2RlckltcGwsIHJlcXVpcmVzIHVwIHRvIDggYnl0ZXMgcGFkZGluZyBkdWUKLS8vIHRvIG9wdGlt
aXplZCBiaXRzdHJlYW0gcmVhZGVycy4gU2VlIGF2Y29kZWNfZGVjb2RlX3ZpZGVvMi4KLWNvbnN0
IHNpemVfdCBFbmNvZGVkSW1hZ2U6OmtCdWZmZXJQYWRkaW5nQnl0ZXNIMjY0ID0gODsKLQotc2l6
ZV90IEVuY29kZWRJbWFnZTo6R2V0QnVmZmVyUGFkZGluZ0J5dGVzKFZpZGVvQ29kZWNUeXBlIGNv
ZGVjX3R5cGUpIHsKLSAgc3dpdGNoIChjb2RlY190eXBlKSB7Ci0gICAgY2FzZSBrVmlkZW9Db2Rl
Y0gyNjQ6Ci0gICAgICByZXR1cm4ga0J1ZmZlclBhZGRpbmdCeXRlc0gyNjQ7Ci0gICAgZGVmYXVs
dDoKLSAgICAgIHJldHVybiAwOwotICB9Ci19Ci0KLUVuY29kZWRJbWFnZTo6RW5jb2RlZEltYWdl
KCkgOiBFbmNvZGVkSW1hZ2UobnVsbHB0ciwgMCwgMCkge30KLQotRW5jb2RlZEltYWdlOjpFbmNv
ZGVkSW1hZ2UoY29uc3QgRW5jb2RlZEltYWdlJikgPSBkZWZhdWx0OwotCi1FbmNvZGVkSW1hZ2U6
OkVuY29kZWRJbWFnZSh1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgsIHNpemVfdCBzaXpl
KQotICAgIDogX2J1ZmZlcihidWZmZXIpLCBfbGVuZ3RoKGxlbmd0aCksIF9zaXplKHNpemUpIHt9
Ci0KLXZvaWQgRW5jb2RlZEltYWdlOjpTZXRFbmNvZGVUaW1lKGludDY0X3QgZW5jb2RlX3N0YXJ0
X21zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBlbmNvZGVfZmlu
aXNoX21zKSB7Ci0gIHRpbWluZ18uZW5jb2RlX3N0YXJ0X21zID0gZW5jb2RlX3N0YXJ0X21zOwot
ICB0aW1pbmdfLmVuY29kZV9maW5pc2hfbXMgPSBlbmNvZGVfZmluaXNoX21zOwotfQotfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19m
cmFtZV9idWZmZXIuY2MKaW5kZXggYmUwYjQ5MjdiYmVmYjRjYzBkNzNmMTM0MjM4MmI4NWMwZDk5
Yjc4Ny4uNWY4OWI0YWNiOTZkOTQ3ZGEyNDZjNGNlNDJmOTEzZmM1NTg5NzBmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVv
L3ZpZGVvX2ZyYW1lX2J1ZmZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjCkBAIC0yMDMs
NTcgKzIwMyw2IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBJMDEw
QnVmZmVyQmFzZTo6VG9JNDIwKCkgewogCiB9ICAvLyBuYW1lc3BhY2UKIAotV3JhcHBlZEk0MjBC
dWZmZXI6OldyYXBwZWRJNDIwQnVmZmVyKGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHlfcGxhbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHlfc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHVfcGxhbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHVfc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHZfcGxhbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHZfc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6Q2FsbGJhY2swPHZvaWQ+JiBub19sb25nZXJfdXNlZCkKLSAg
ICA6IHdpZHRoXyh3aWR0aCksCi0gICAgICBoZWlnaHRfKGhlaWdodCksCi0gICAgICB5X3BsYW5l
Xyh5X3BsYW5lKSwKLSAgICAgIHVfcGxhbmVfKHVfcGxhbmUpLAotICAgICAgdl9wbGFuZV8odl9w
bGFuZSksCi0gICAgICB5X3N0cmlkZV8oeV9zdHJpZGUpLAotICAgICAgdV9zdHJpZGVfKHVfc3Ry
aWRlKSwKLSAgICAgIHZfc3RyaWRlXyh2X3N0cmlkZSksCi0gICAgICBub19sb25nZXJfdXNlZF9j
Yl8obm9fbG9uZ2VyX3VzZWQpIHt9Ci0KLVdyYXBwZWRJNDIwQnVmZmVyOjp+V3JhcHBlZEk0MjBC
dWZmZXIoKSB7Ci0gIG5vX2xvbmdlcl91c2VkX2NiXygpOwotfQotCi1pbnQgV3JhcHBlZEk0MjBC
dWZmZXI6OndpZHRoKCkgY29uc3QgewotICByZXR1cm4gd2lkdGhfOwotfQotCi1pbnQgV3JhcHBl
ZEk0MjBCdWZmZXI6OmhlaWdodCgpIGNvbnN0IHsKLSAgcmV0dXJuIGhlaWdodF87Ci19Ci0KLWNv
bnN0IHVpbnQ4X3QqIFdyYXBwZWRJNDIwQnVmZmVyOjpEYXRhWSgpIGNvbnN0IHsKLSAgcmV0dXJu
IHlfcGxhbmVfOwotfQotY29uc3QgdWludDhfdCogV3JhcHBlZEk0MjBCdWZmZXI6OkRhdGFVKCkg
Y29uc3QgewotICByZXR1cm4gdV9wbGFuZV87Ci19Ci1jb25zdCB1aW50OF90KiBXcmFwcGVkSTQy
MEJ1ZmZlcjo6RGF0YVYoKSBjb25zdCB7Ci0gIHJldHVybiB2X3BsYW5lXzsKLX0KLQotaW50IFdy
YXBwZWRJNDIwQnVmZmVyOjpTdHJpZGVZKCkgY29uc3QgewotICByZXR1cm4geV9zdHJpZGVfOwot
fQotaW50IFdyYXBwZWRJNDIwQnVmZmVyOjpTdHJpZGVVKCkgY29uc3QgewotICByZXR1cm4gdV9z
dHJpZGVfOwotfQotaW50IFdyYXBwZWRJNDIwQnVmZmVyOjpTdHJpZGVWKCkgY29uc3QgewotICBy
ZXR1cm4gdl9zdHJpZGVfOwotfQotCiBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVy
ZmFjZT4gV3JhcEk0MjBCdWZmZXIoCiAgICAgaW50IHdpZHRoLAogICAgIGludCBoZWlnaHQsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fdmlkZW8vdmlkZW9fcmVuZGVyX2ZyYW1lcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJhbWVzLmNjCmlu
ZGV4IDVhMGIwYjAwNzEyZDViNDQwMDhiMzYzZjIzZWI0OThmYTQ4Nzk0OWYuLjgxNTI2MjVmNWIy
ZWY0ZDVjZjY0NGU4MTFmNzM5MzgwZTNjN2UyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJh
bWVzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJhbWVzLmNjCkBAIC0xMCw4ICsxMCwxMCBAQAogCiAj
aW5jbHVkZSAiY29tbW9uX3ZpZGVvL3ZpZGVvX3JlbmRlcl9mcmFtZXMuaCIKIAorI2luY2x1ZGUg
PHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmlj
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY29tbW9uX3ZpZGVvL3ZpZGVvX3JlbmRlcl9mcmFtZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJhbWVz
LmgKaW5kZXggMjIyNjU3N2RjM2VmMWVhNWQ1ZDIxMTk0OTUxNGNjOTU3ZjdmZjBmYy4uMmM0YmRk
OTE3N2RjZDAyNWY2NTA4ZTJkZDkxMWM0NGFlNTA1N2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX3JlbmRl
cl9mcmFtZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fdmlkZW8vdmlkZW9fcmVuZGVyX2ZyYW1lcy5oCkBAIC0xMSw4ICsxMSw4IEBACiAj
aWZuZGVmIENPTU1PTl9WSURFT19WSURFT19SRU5ERVJfRlJBTUVTX0hfCiAjZGVmaW5lIENPTU1P
Tl9WSURFT19WSURFT19SRU5ERVJfRlJBTUVTX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNp
bmNsdWRlIDxzdGRpbnQuaD4KLQogI2luY2x1ZGUgPGxpc3Q+CiAKICNpbmNsdWRlICJhYnNsL3R5
cGVzL29wdGlvbmFsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9kYXRhL3ZvaWNlX2VuZ2luZS9zdGVyZW9fcnRwX2ZpbGVzL3J0cHBsYXku
ZXhlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZGF0YS92b2lj
ZV9lbmdpbmUvc3RlcmVvX3J0cF9maWxlcy9ydHBwbGF5LmV4ZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjkzOGM4
ZmIyMjBmNzM0MDZlMjMyOTU4MTdlNzFjNWZkZTU4ZDRmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCA4NzA0MAp6Y21lRmFkd2YqWSlpLXxUbVEwZEsmT2owZjVGdHdON0YwQU0lNzlEPSEjejAza1Up
XjJeJUFHP1FWUW9GM1cxM3kKenNobiZfZDgrcEVSSTMhKitDRl8rK2pfeXY2QX1ePXoqWjRfWSVF
PzdzcUZFZk0hX1YmJGhfYVImelZXRUtLPWRQCnpmOElhZCZ4PW14b1ZDfHBkK29LP1VWSDdlRkhe
QjFEQV5AUmEhUnQ0TkohRVNKa3ZrRkd9ZTZoU0FVVzVDOWprLQp6O258RzhwMVpAZ19eOzx+LU1U
ZFYtTCp4bCpMPzRgSFElfGo9dVVPNVFncVg7TVFoWiVpcXlNcXhwaHNedmhVdGkKemRQUjAtQHc5
KE1fV3p+KnBPWmleQVc0Z0RaZlZYM08qNTBGOStHayNTdkQ3NVpJVG91P1o3ezhAJmcjT0wlYnUm
CnppOHVPfXtGZDRzbDlYbmBAUHZRSlNZJitANGczPmRUT0hFdl5iJkRNMT9sKkg2NCtLejFXeF5Y
I3YkP1MpWjBIbAp6dFZhSFNoVz52LUU+JihfdUx2eUVoWnM3QWtIdlF+YkNEJDdjPEMrUVFOQlh9
bDdrbnhTSjRaO2h5QytRUXYwUksKejljdS1NWHgoVmw8KklNTlRWb0w8Sm4kfitlRHkhITF1eTtY
RnVWeHgrYHlteVBrOD1JWnlrbVFuRkBOZHpYZm0yCnorQkcqNWdILU81N1QlbjEhQEtwND8tMyY1
TEgxRyh6VVRmRVVKJWcjX3dXQSMyXmlrYG8ySGtTbCszXkd4PHktSwp6R2UocTIrYitZT2p6amtD
clRESURraHM8X05vKmYpeEo7NShhQX4zPkB0ZzY4Z2JRSVlZUXckV0dKMl40KjdqLTAKeihqZGhx
ejl+dHU4bDt4Q0tZMT1kbyFjbSheVHdCQDs0YG07IXZDMmlOdTRofjE/Z3EmUTdXe1ZSR19wcmJI
XkQjCnpffT56VmdoO0R3YVB6U3M4c3Moam83SnZuPylhSnpvKERvT24zemhyX14xME4kJElSXjt8
KGRZV0I3MEp6TVlWPwp6TDIyIzM/VEF5fWR5JSkoRHNhdChSPnEkS0Z7QG59NkdWWihgSEJpT0BZ
aE93OGl9MiRFTUM0NzZzKTk1TilwbiMKejx1KjJJdmMjUENiI0FSQCQ1X0F9M19wQHpDV1pUb3p+
WiV3QnVWUz9HfSFvQFBST2UraUV+Z289eXg4eDxiZUA+Cno+SFIoTGNocSVDJnd1eGhLZSt5RCs3
RkNia18wLVQ4ZG0zU0lrPlRvYiNAJWV1R2UtZjRNMHhINV9ZXm4+aTlVRAp6OXEyZm1FeCsmc2Y7
UjExaU5DP0JkYWJSN2ttTkA/dj00Mn04Q15fWmVpSFIqWD5aSTVKNGI8YEtzREg/Py0zYSMKelkx
UUBNWGU7cnBiK3duYW0rbFlNRVlreldebEh2Myt8al9HVVU4QGFCO3c8ITdIKEYzc0VYZVI1ITds
a0FFMEphCnooQFdjOThMPEFeJW19Xjk1QUs3WXdaPW58ezZJSUpTbHl3SGtGdUd6b0VWV2BjJG5D
JGwzIXJOYnRNWk5HSFdLNwp6Uj89VVoxcFcteU9CZHMtM1N8ZlJuYGZ3fnVFRjtUaV5HfTN5YzVp
OFU0YH05JVZ3U3hPZyNpKUc8QX56PmUqY1QKekI9VFp7e0x+NVheMXs5PHchflM8a0shZlJLaTN2
ZihzeGA4clZRN1BCNzZsfGprfThQck5xYEhIdG9hQm1FcF4lCnpqMzx7Ozgzb31nZFUrVHh3V1NB
ekBhd2chQl8qcmVCX1gkVitQbT57Y0RtemVIdFQ2PnJ8SlkqeyhQeih7fmNeSwp6V1l5OXhnbVZs
NzJtM01BLTxRN3lCM2lTVHoxSHp6SGZzX2Y3ZkVxbEw0RDh0cUlJUnh7aVdAQ0peXkVZcml7bF4K
em1ENlQhQj5eeyVYSmB+eDUkTGYlVHozYElnQ01XeDY5VVZvelpYNDMpQ0dJPitEPW1ebilsbHpz
V3EqR3IpaF5BCnorTXIhLT0+Un5SKi1Ue1JtU14kOFlNZlI0I3A5QnMyWTVZT1ZzSEE4cSo9Ki0y
VDwhPTh7NE5ILW5eeXlDfGx5TAp6PFVhJX43K3drKU1GVSt5ZSl9cV92P3A1S3JDMFpzPyRJbVda
SUJZYHk5dT9JNH5gWnxFJHdwaT87Jjs7Ym40WnwKelNPcSE/RkRZfUU/JC1uRDJMdFZgKWtvajt7
UCFiWj1Eb1VvPyo7YnB2WSFMRGBrMkc2Mm0wdiFhPWU/VUA3fXF1CnpIKyR0TUtQNFpXP1I+dzM9
Wm14eE5oTkgpOUY8OV5aemFAeXRtMDUqaHl7K1pwdTM3eUBKZHVlSkc0MXlpbVdQSAp6KE8xZHVo
en17KmElJUdAcykqc3FGJDNJKyUxeGdQQ0daRk4kYUJDX1UjK2g4KSt7UytrMlpFYGRsRnklZSZF
ZkwKemxrQ209MlJkU1EpXnElcVlfSW1BPE0+bEl0Wk1NXjQtMWhJLTNiZyhKPlB3aVZAUEg5UXt4
UEw7U2pBVEsmWWJWCno8KSE7cyM3dHpuSXUxRmEmV1FRSEwkdEZWSU1IQ1VndH5vezVVUjB8ejFC
dVZwO0V9S2kpUVpfPXI/SW9uST5WQAp6QTw3eH07KHdzcTlxNXZwOGMrQ1YlaEpab3JhUSQkQkc5
S2I5K1E7TzVIcVhqKD0lRGMzNE5pSGdqdm4/cHUwZnwKemgyMTBsa2BRN0VvSCh0XlRpU2xac19X
VDVWOW9IYVNYbShLJHs9aD92QHk8OWNlb1l1dD5JX2piJkBzZE1JVHZGCnohfllDLXE4MHtuVmpJ
NFYxPT1pV1ZAY0RqMnEtajgpRVduK1AzSlQ8NG5GdzxvNzkraEZmaUNWR2ZxdUVgbl5KLQp6RXlm
c0RGPDhtY2dXKF43d3JPK3MzaXtxP148ZFNxQEI7dmNffWNrYEtmayZTNEEjTzc2TjhhaWcxLX1g
P2NrNiMKenh8ITxmNGtUPVBWNloxfTB4QmYmVE9qNWg3eG45UTgxcTtiZlpGTiQlQEBlYzQ5U2A/
T0skIzVKbWt5R3VaVntuCnpyQnBLPE4tKnw7Y24hPFZlLSNnSXglbU97O0U8YzR0O21hcVUqUkc0
SnBRbyEpbm13WjYjaEZ6KDN7O20pLVE0WQp6Jm9GfEskJXM4TjRDQjtLaGNMenkxe24pTzRZIzQx
Tmgme3xMelEpSkMleiUjPHdeTCQ+cjZxdjFYZ1F9R0x9dCsKelJgTytKV3NOSShUeDFIVStRI3xZ
Qz8mfFpRREcyPWs+QkdZYHp7aFEqcitPPWRsR3JWJiFFdG5XcWVkRm1GSG8tCnplITFtNjVjQURj
a1g/VDg3b1ppYlBPeGx4dHFOWlZjOWA/UUFVXnx6MXdPezQ1ayN3SjVWV1pNaTdqcEJXU31Mfgp6
RFB9SWgyVHImSEM3RiU7WCpwJX52WWJsKHBxMjVIbXMxJWZieFFiZXp+ejVPeTlmbyM0U3pgUU9P
XmwhZ3xyYmEKejN3ZkJHZEcmbE10M2ZoMyVPLUpFQD5pKmkxI0BHPVUhK1JDVGFAWXNma3Z9MThk
X21DRH1ZX3Z8MSFOYk5EY018CnpKTzQyaUpnRUN4NXs8Y0craGBQaHB1I009b08wSDB5Qk40WnpN
Um1gKUhgfkRkQDNJNnctY0RPVTJnc1gjTWE7aQp6VFVQX2JfNEFSK3NzfkhrIUJ4SEVafW1NY2c0
P0MtR3dAWiMyUl4wVClBMWF3SU1MdiZZO2NDallCTldXci0za3AKem9FdnIlODtkUEFVVWBZd0Bl
MWxKd344TUYwZkNpSVNtIz88S2VEaHlxaChkezx8Tml3IWpkZWspcjdUO3Ehe0U4CnpVYHp0KmVl
bkZHTCtWOGhIbmU/Skx1UH0ta3BKRmZ7X2BrKmAoamZoUXotdmp0PCROVXZDOXY8MWw/KG53bW16
Ugp6JG43elEoSDw4S1h5a1NeK2A9bkkwS0slb0E7QXw3S3hnSl5YU15HfjxlI1VacmB8UF57TExa
amJNR0FWP1dWNTkKeiRWaUApMmlCKmlBczd1ajdVYml1d09Vd3BZcjdNJTZKUiU3MkNsK2E7IXBI
WiUyTEp1ZVZJVXRNKE1TWlBlVXV6CnoyQlIoWDdLfk91Uj5pKm5NQ2dla3NRZXlPWThxP311c1gt
OF8mIXJmKGZMSDt6YWJHO3cySDRoTXVYVX5kYV94KAp6OFpZKGVVMFMxOFFzNTFwJjt4T2lkKUZR
K0VGMXRrVjdjUDRPMT5WcDE0PldxaHYkPDNQWWJ1d0V4IU84JDEzOEwKekpkVil7PDF3WHVBa3NX
NzJiSG5mMkIpT3Y1JFNSI0ROejtRNFpNMjIrK055bDhmeE1ENE4xdD47MTJQVERlaiU2Cno/WiRR
V3EkTipOSzg/SFVicThBbnJ8TzR6N2V2ZUxMQyEzcTVQPHdiWmRHJjw5RTg4bDdBISpxUz5hb1d0
LW1acAp6dD5oT1I8Wl9+SSRtRlY/YGtwa3EpTm1PJiYzdG4pPClDNVZwejE9KTclUklTUVohXyU7
JHQyflJ5TWVkWE5yUjYKeis2UXtiNnYzWl4jdzNnQDghanNrYXNOPHVDMEVFYThfQFMqSlpvOUNj
WiokPXU/WFctdHYobV5mfnA4VVNoV1chCnolPGFxRW1fdlY2bmZhWiorME1yRjlhS2hMWEs4eX5Y
US15XzhQdEtEXkVDY0t1LTd6Z2FFcmxHWm4hQnJjVS1XQgp6fE10Jjk5aHg/SDEkPDx+JkMhfTB0
RDtORkQpfmNaNSp2cWxee2wkeV4wIWd7b2tUNH5hfStCdEBDQ2VUOHEzdjMKejgqWC01V2NXbURi
Vzc/T2wkcGJfZStQVSRPRnhJYztkcDtTWUlQaGB1aGVEfE5LKGYpNiFBT3FzSyZpWEVacVMmCnpB
bW9LbHcjZFYjNSprYX1QRzRHTW99P15va2ZQLUVqcXtxYXVXJlApWkxYNzV5VipqZ1pIYz5TbFVk
S3EjOVV8Nwp6VUUoPGp4KitAKiRgNGwtcHl5bkxLbTZCITUrWDJpTlM8RTMjITBTVGpoal8/emA+
Rnt2JGdAUktEUil4RE5JJG4KekZrMD5tM0xkX1AjeHghMFdhVz9PKUFhRnRHdkx2PTk/QFhReGVF
Q2RDUENIQlM1ZH1VPTQ1MHFjdFZ7PikjdTQoCnpvbik9VVN0O2ZkKn50PT14b2s4bFNXKz5sPWRn
NjxjYkNBS3A2aTRlJXhJZUhxIXZ1JUc7STxPOCVLdn1QODBxaQp6KSQ/d3U9Z3ZRaGRhYGNnTW1C
KnRebUxYX14zLSFwaytYNylZLSphZTBsb1NQVGUqe2t5dGFAI3NXNiN8YSVhPSsKekxYYT93aXdZ
YFBkMHNGWUxLRTw+c3JwYG1CfD4/JXY1VFNGbWIwPXxuQE9yNyQmYT5jaGlwKEYoU0tNKTl4MVF0
CnojKzw+blpFMnQhVz9VS0h5NCpYeCZhM0E1Zip2KWFXcStnV1RrVFhiYnNIbUI7NHBRMiU9b21L
ZVcqITc5YmVrTQp6ZUkrdVlmJTAjaGl8OypwX0FUQDktTSphPUkkdkIpaU5uYXRFYT5yIyprc3A3
MnpwPGJ5aXwoTD8xYztVR0V3Nz8KemdZe0AyOSY4fSpBY3o7TCpTP25oPmZLdFNNXmZEXjtFQkNU
NFZBfiskZlMham5vMiRjQWpfdHo9JFUjeGVmeT5vCnozIUJuKEAhZFYhRTl2KmIybGVRKS1URTMy
eXpyM0kkWWh6bSpBPSY0K3ZXNSopX2xvd2VZQDEjdntVfUlIfGRKegp6T2dNfWNxU3olY1cpcytB
JkZPbng5YzUoVCQqdHFmJiQxVHlJQGFfaHZKOTZXYFFPdFQ8QzJtQTJjYVVhK2wrSygKei0lZ0JG
QHJsR0xrM29rfUswMFdITV8mbHBReWJBRm4lYWNiPHUleCN7dylXQ1hxcWE7MXlnOSlPWlFhck93
Mk0hCnozYzAkTWdgOWQyN1JhKUxuQzZIMDEhKCtRR3wqX2w9P0k5dCteSVlHZTMmNUMyfUM1aCF+
P2I3KX4lM3RReF54eAp6b25gfVY1Nj5AYFZtNHFlWW9pdjNaWT1oYDIhKVozfE1HQHFaUGM+U1NC
bXFISk9yZD4yQ3g5ciVwPyR7SSpXVmUKejZnJGI7VyluaERKaT0yRT9kSnxnOX0mbl4oRmNrUEsm
Y1hgMXdtTllOQiNqR2AmIy1ORlg5ej1vTyU4UXUqflExCnpHQ1QqdkMjY3RtSyotZVRxU3VnSnpy
Q2VqU3pkYjNTUFQtTFYyR2F3UkgqS1o9K2FfMExRV3lYbGc2Mnkwbmw3Kwp6eTwxWD5MVHRYWEc3
KXNjS3A0NTlhNWcramxrUiloMilnQ0kzN2VmUXtoTlFNJV9MZENqcnRNfFJvZFJ2UnAzQm0KejJ4
aG0oTUc0Pj4zUWFPWmQhZVBHZEh6PDxxWTY/Z2dVc3tqOXJWRFFrRkxnZFZqc3FMYkY1K2tGUGE7
O3RXWUhCCno5YFYmJGsrO1JuakEjajlsc2c8aCZreSZkQUk9XlBYNEg1fC1FaXx9RyNRamY8Risr
OSU5OG5WYX0oSCFWU0U1agp6RldyY1M2VDFBRzt0eyYrcU5aSCk4T3hfey0hOGVPNl5QSmxTKSop
dlZHSEYqMnJRSFczYiZ4NCYhI3w0UFphMUkKenk8IyEtaWgwT01tPGJtXyY3NUlxIWBWNFdLUFZA
Q0JqLXJVblQ/ITtuUSMjbElVeiU+PngzMW1RZHwrQUZ2OVItCnpqSnJibz04d3FQaUVEIWlefk1s
aWZIJFp+eVcoTHI5K3ReNCY1OWZJd1Y1bD9rYGpDYmBzTiFtKDhaJEZDISFVRAp6UmgxIyRRSGEt
SUQxME4qd2g9OyoqOD5DNThUMUVfQE1xMig3S0k9ZmE8KUcrXj8/UUQoejI0TlRrd1MqKjczMnUK
emhXe2NIRURVWlY1Rih0bEhJQn5VR1hDT05OIW11cEVUNSgrQ0RpQzBod1c3Py1AP05TNUZIMXFf
PTctWSojcmlUCnpMKEZQUXZNRm0jJEF8VzFqKDAtKjRxelp7OCZQOFdPN2JidUNKMWUoTT1edjZu
SD9kRVM/QWVGaDs1VnZpJVdBWgp6OHBpNWdHTD0qeHQmZF9BbjU5c08rYXZmQngja2l+UUMtYj12
P2xeeXFaRTE+eHc8Mz9sTCQ1OzkwNDdFe3ZSTVoKek5JU3pzbXlDNHQhTTJTRVE5fFR1JXdJfVNS
QWVSKnc1akRSJkY3LUJseCR6UmtgZHk2TEp6N25XUn50clEhPSh3CnppZVhRcnYoZGg0Y2pISlZH
YmY4JmVUbipNV0llM0tYeXFTRnJvcSR+YTRVNWZVN1ppVnY9eGxCeH5GSFZxbmhfOQp6ZDlDd3Ao
LSsjKk9zKENuP1hveFRRSUR1b0xHMnI1VU10RVJYLWVOVzNTKSg9M3o0SSo+U14jeF53Q1dBUmsr
bkwKenE4LTdSK3Itc0psUVhYJjdBWG9SJmZGJHZZT3peRTNfT0gjcWQqYlRQTUFKa3RPNms2NHJM
Kik9aSRnYndvNFJwCnplTzx4QFdUUEY8aHk5YGYydVdecyFKO0lxRlNpVzlmKH5XTilFV3pjYSty
V3FOel5jXmZmRT5DdE5TUHtjRmVITgp6WkIxKSNTRFo2dXMkYTN7SlJMSlR6fmVAa3owVUZ9TCZA
SUNzdiFUTnNZJWZEYEgxKjJYI1RUZig0eT9eNWBseXMKem5VNl5YMnZRZ0B6XiNDVlE5PmFiSDN3
Wm8xbGkoeDF2az1yMCkzPVdUNDJ6ZDIqZD9CKDB4ZDI/MzB1UVRIXl54CnpFIVNxUU1gS0NLSThs
PkklcFN1SjE3TW9pZCNAeXxfTH1UZkBlKlJoPHwxQXB6KihSaV5GU2gwdmZOeVNrfDtoQAp6OVoj
ZjN0XzQ2eEktLTVySngpcFMlKztyb21kQjB+SjY0ZlA7RDlhRjsqb284bSNGN1pUK2tOOGdkX2FO
UlBtPXYKek1lKVdZRHsoWWl7QlRAdUd0dTVwcH1pJjBAPm4pOFI+QG5pRUAqTFNAKSlLanNYbklO
PiRJczJMV2RmbStBTDRnCnpNZXJxJlpZKWkqUkVYQXshe1VPRXRnJVRrdFRwKmE3RW5BP2ZhciRQ
dXx6U1FncHEmPCVwJCljVlRrc3M7JEk7UQp6WVZvNXI3RCFPcmlVTWpvOC0+P3FCVjRTPV50OH5V
IT41UzdFWDBUZVB3V3t5bDJSJGZMc35YUV5rVFdxaV4tcTIKemtfU1lIbHxzJlVDYVhZRiZDYFRY
JDZGanpxaDZrPiVgZE09TzRWZGdENzJ1TVJULXtLcD19YXFjfERASnpZbm1lCnpTdDMwKUNSTWxB
JXE8bTE2OVBlUTNtaz4jPEVgUjw1Jj1yTFMjO3pZTnJtTT05biZJPk4yamFQbDNiMjhHb1pRRwp6
cSlQT2RqTEJea05BPktEWGtKczZ6a3o3Y3BRcDwkS05DOyg+Rk9qUTE9dWxJQ3NIZGtBO3B0TGJD
TUBaaWVSayUKelhRWE9qIXFsPjFUdlF3dEl7IWU1aXl2R3IjM1EjPUFKeX1UM2tXKUwmMiUtYko4
KlFtayZDfnhqTz9AMkNzYHNACnozNUs0Y3B5WHA5RVFKNHtBO0tlc3BIUnQ5QSRXIXsldUlnflR9
S01CY1dVSDZ5YVFqfSRTN2tTN0BadXdXeG5JPAp6R0ZmLSZ7KCYjeEltZVB1PHtWJlgtM0M2VlRZ
SnJCSUo4Y0NpMm56aUg4VDVPbnZNc2BGV20jblh7NTwqYHlHNHoKenQ9e0pTPkl2MlhxRWpEJWJs
OSVzVHp1ek5kWmxVaig/byppa0ElP2k1cn5kT2ZUZFBYaHNTbWY3UmZ3I1Z8Xl5XCno3OFNub0N2
M0V5Z1VFOV9yaERaK2shOCg2WWpTUCtTWW57X2YtPHl8VD5TcStiJVhxN1FBb1poXnZlNiN3Sml6
ZAp6Q1A9Znx7ViZJaFMmYEU9I21VbCk0UXYjPCpOSUcqa2lWPjR6PFNfcmk+IXFoWURRV15qZCQy
a0wlOU9UdTNwUjEKenp7end9MVM+aEhSdk1uSnAoaiolNl55PClVdmBSeStMbGw3QGQkWmYhaHhB
d3IodEpsVmh9ZmRAWH59YVpKVmU9Cno7U1FzUzljUzAwN3pYVmgjREcjdUE8RUNgcEB3dCUoJT5C
KDREb21BZDdmYDNpRlp2MGQ4WThebzRRdEc7OUQ5ZAp6N29MMG1GOHR4SztUPFY7OUpyTCFrPlpi
RXt8ZWN5U1lydGdzaWkxbFI8MEtEenJJNjBfZVpIKjlVPlBrS0s0K3EKenJtbjNaUHZyQHtKV0Q2
dkxSTyYqSko3cyU1OygpM3dYVjBjbkl9TTYjTTloeiVUdklNMkhwenQ3YnZkRHNeNX0jCnpSYGp3
Q0pedkA5SCgwJT4/eUhJPlMxYDZlMXxXYUFtbng9PzRHKlNSOUd8TEtGfGkyODR7X1pqK1Q/TGIr
ZEZWYwp6c3tYJkUobDhgZV92eC1ETDZ3WkM+blN8d2BBXmVwXiQ5M3V7X2hCb1A1ZWQhSmppX31O
I090Pm19Q3g3aGhUOF4Kej5MWkQlZ3EpWnZhdDhvQlFYJllDJU98UlErLTZCfnhUc1JQVj5sYFR2
PzVVT3VYRnojeCVxUk9AYUYqanVzKzlCCnpsN3puMio+cHcoaVpUKzhyclNsSkFzTGEyQXhlKmIp
SkFadVJrIT5IKWw8V05nd1lFc2ltdlVjITQhJEY1ZGoreQp6PmxCcyV4VDVieTIrT285O3s2RDlH
clhAQHVDK1V+TC1CIUxOMCtiYj9yVmNwezFWSk1UI19GPT9NNztjJEc3fEwKejMpbytwVnpsK2N3
fGgteSkzRz8+Q2s+S3VqUXhjak5fXmopX2BXbDd4cHZIJUtvRyRnU2gyamVzX1l2P0R8cyhNCnpL
cWs/QndhYjBgPyFLNzQpcFNmeUpoVWNWPnZEcUo9aj4zM2pueGFaYnw+Y1IzKUpKK3VTZ1FAcitG
PHEkLWROUAp6LWlWZiQpYm07WHZ6NzMrUHVVZmhjRkx4RGRSIXNfNnBoVH12bVprJkxEfUNPeV45
dE8/NFM3ZTIzdUd2Zj5GZ2gKel42fEdaSilqT3g/cChTKVZGeDtabTxAX0tHJnt3NTVpY2hPbXI9
bXtkJSRMV2RUQzMpWD1PI3tCJVojNjxvbnJhCnpXdlljT3ZWezA3O0RmZno0elFrKnp3ejspamJp
ZWZJKkRTX1hZe3dGVXd2KDsmQGMlYy1raz4tPVBNM09MYDdPPgp6U2M7SVdnWiVoXnBQY3xaNlRT
dE48OTh2IT1qd3YpQ3xUaDwzRyZ1OXc2ISgyMWRFTG4zQnRyVzZJTDtlIWs/bmIKendjKkRKeDl1
JWRqTis7IWhDdWpOZlE5JlQwUDFQc28jTiRiZFB4dWVVQSs4Xig1dDw9VUFxPk8wbkFDclRrJmNi
CnojZlE5TlZGcWE/WlJ1VmotJjxIbCU5bmNnNDE0IXJebUE3d143ODxMOWtjOFVlK0J2cDBiPWNt
a1BFTnpXM2BSUQp6SlRSU30yPkhtaF5pK1ZTcilKUVQ4JkF9UlExOShkSmQ1JlI7Qz9SIzZwVVlx
e0dvQ0l8SXJZOWgoRXdMbmVjRG4KejNuSmF4PEJDSE5SMVU/Oz12aCtJNjhYZU5DI0FwU0w2Unx3
P1EqbWBUeil7Y183bDNfc3IlZyZnVVgpXyRpfkNsCno9Jk4tOUZjY1VqZ2hjMU5sa3NufjgzTGBs
TzhjNzxxJF9LTWQ0ZiVzZGktdUdUbn5FbXRFbkxuRjUxdHN1TGVEUgp6M3poO1RlZHx7SVclJmVZ
KntgX3Vgez48cFpKejxhYzdqSEtAKDNVX29UMXgwZFRFSmVDTlYwaDdxaDl2bjRAM28KemM0IX5S
NXF7bEgzOU5ldmxAfiVmVERPeitUdFpZZD9rVll4MjVvdy1ifnhUTUMpV3VwMTcjI0NZaHx8MnZF
UHZ8CnpXVSVYbWs7ZHxhTH5ObGBVKnl6N1ptYnBQd1FoWmRHbTQ3bUxFKzhPKTNqe31VZT52cjRv
aUlxaWUjfTROMmtedgp6X3dBS2B1bnB3PENBLX1HRmRqPCRhclE7WW0mfVdAd05FXzBGVl9odjV6
YStaMVFhWG85WnVjajYpIXo9eW47UkUKeik7XjU7dklVUnA1UXR7Oy1INnVGLSU2KUliVT5oQC1i
K1VlTGNTSShSVENfNUJqVGkmQShELVBsZ1JwPDVyZjdCCno2dkhaSlV6VWB6eDN5MjRIbUBpUGpe
fFJoNklMekFLWjhxR1liJio0dCo5JXV1KXZEIUVGI0lNP3h5WXBFTmohcAp6UkJ2dE9RVUUxMmxZ
Zm5JY1JSZiMrYkxKKmtFN2w3MVhOPVpBdl5sbUlpa2Y2JUZQfWQrOC17LXpMSCR1bSRMUmIKeiNL
RSRjQmZDVFBXZlBnVFBCeG1GcVpyUi0lMGg/aWNzckZTQlFjdjI3WXd7UEBsNkx9cmZYZHdYdn0y
IWczTUBOCnp6Q3xZOGFCVU0qTThiVD5YaChNez9KTyFDNGhJfj14MCQxNHBRRHBeb3VhO3Q4Umdx
MHhpKm90Q2QzYF5hP3Q8Ygp6MlI9eV5hSilvJTU5QS00JFA9NGZSNSRAeVIjT0xrQk1rSnEybkpI
NyttVlVwQEhiUURwSFdYfUlWaVdCMDh1eSYKeihkdX5nMmI5STxEa0s0PFo9KXxHJT4/byU7ZFI1
LTI8QDNqYE0rN3VwfUs0bjY4T1RBLXFkWjxgPSZxX25oay0kCno9RjY2WT8yTmdqRlBnKH56Kmls
WVRPd2RoK3UkeTB5Y1pKNUUlXzNMY3sxQ0AtYlBoX0MtX2tFWkJ3WmZXSV9iPQp6N34rQnVpeUBm
JTBrITRkO01TRDkle1FDS20kQVE8eWxvMVJFcGpLeTVrWmdaYX5PcmRZJDJ6XlM4YEBxaTJ2Rm8K
ejB0LUtuRzw1Y21mTm54fTc4TG5xclZ6NGBwV2x5WExMNmg4RExBMys1QEljSilvSjFlIUY2PDIr
QUNxa0ZFUGZ6CnpTbFAqKD8xR3ZqT2JfO2JMZyZfRG87Tzl2bnFeLX1sXlV4VjleWSYwJGx3MUAp
UF97LTlyb0lnX1dwPmZuOUlJJgp6OU1gKHp6SFc1YEo1X1FMUlg4Rl9ie3AzdzdQJVF9UyZHUGoy
TTs5JlU7KmFmQG9vTWg3WDI/V01GJCtuZmJScl4KeiFQRzIlKmktVHZuVmw/cD52NDRZPH47MFBf
Wi1Da0grdGluMmB7VlVqZihgJng9IyRmaElkRno0Rz5lKExXdyRLCnprYndxSVY4SitTSytgR0cl
UWM4ISNyYX44c19QN3JUYzdsfHUqKFJAYWBSVUowZm84eUpNMm0rYFhANGY3Pjkragp6V2tMYWpi
d3V6Y2dEaG1XRnFMUTlDZH1qOUhxKytwISZ1VTl3PCNDMU9wQWlzQy1NKV55QEQzJVV9OU1uPzMt
IUQKenc4YiFpIXxrOFUtVytiREdifGZqPHp5P0lgZkBCcnhFY1BJeVk8PTVYZUc9dlkjIX1taWZi
RilQUD0tK3ppTWdVCnpvOW9ocHs1QEt8cGc9Y2w5a3lINXB7cFhnK3RsZW1YS2ViMk9jeiN6KmE1
RWgzekx3bzE+I1E0eiNKPkMqQ0hNagp6N1lpdCstKGIzR2IpREVtMEFYaFlgRU97VHstJihTRk5T
QURgbjhpeCFXcXhuXnEwayRvRUJaPiZfMFNNalZSNVMKekhvJiZqYHAmVjJnNFl+LUZ3YFVtWkh4
QFFVQ1F9dm1zV0h9Tkx7PGQ+LT44N2NtWSsla1AleGhFWEk2Tj9wO2wlCno9SE9lc2ZwdXVAP2k0
QXNUKVclbmNQZkwoanpRVlVie1I5YVE0PD9lbmMzN0dZPXJPYz5uYFpBTDAkPGdHYUMrQwp6WWM5
Q15xP3hYZEBWTitJYj91LTZYM2AoSWBCbXlHR0A0LTtKZFBhP1lwMCZZdDJ4SDQkKU01ZHBBXmJz
bysyamYKemZjQllGckBAVDk/alk1USo0cCYzKE9SY29tfSFsWnZtQVJJVm9jT0pQQjBgdUoxfUo4
Wi1fPXNpPzxCYVBCI2JuCnpaKWszVElsNzhyN0JWQSFHIWVtdEcwcXFodD9eZyEmKEwjZHAofj8/
bSU/bjxWcypAMWxIOTZ3OXFNcnc3bEdCSwp6ZD9sN34qXz5qSik+VllIX2hyP1VaMGdrejJDVjJK
XzU8TW5JZzFsWi0wVXVRYm1pfG9FdVVfQGdnTXdnSGR5akAKejYmcUVIMHFEKD1abWoxYlZCRXZF
b1BleCpfKXFhd3A+QFZ2SzVhYX10fUtUM0poITViOURKZChGbTRzKGpBXl4jCnpMbmNsOzNBSzlC
UjRjOCtLfXwzZ3k1KU9+UnhzVk1lfj90Q1hkbTBpPnQ8SkxOOD8oTClBNTF0SFRuTUNOR2VVVgp6
XnlgZ3JXZFkmRGVadUtsbGczdU5idjIlbjwhWXhzUmFrLTVQUFgyeVoqbjdAdCN8NjFvRmJRWSVN
QHJNWSVaMXsKemJVVylUPkNndGZZci0wTHZSKUoxMFZmPzZuSHJTcyFlJEI0IW9tVnI4anMxekBY
bnRuUnlTUiZJKnRga1EoeGNeCnpwezFaY050Y0swME07bjs1VEImZ09FQzsyPDMjOXFTaHBEN3di
YGFQPiFpd2FyKkJZQVhXZzs7Tkg3UUI4dT9ERwp6eSUySig8VjZeb1ghZCRnOE16RXpLIUV5ZTdp
UDZUcHt8THJPMzBgYjhCODB5d25TdHlGY19HYkApM1V0QjQyaGcKei07R3YyKHlDPk0lUSg3QTR2
PH1iPmBSUFhGZjg1cnM8YFFDM09qRERQbXtOYVgzcS1vYjE2SDxOZCs/XkRCXnVvCnprWn5JZTRL
d298NnFrdSFOfjNaR3A1SGNvNURXKHQySiVIaWFmRztRXyZtWW1BaShFQ3F7Mn05ekYwJVV2dU1B
WAp6JkAjUmUobS1WcW81T2ZwJVgoLX5ne2lkV08tWHg0THgkKl9oeyRjLU5ePWJRS3NVdzQjMHV8
Nklqc1J0e0w5fn4KelkwLUkhOCkmdTlJNFJPOz5XOSR8ZHVjRjVWe2c3MGRvdmF2d2hMOVhufjdz
I198QnwzU0duWnRzRklWMlpqPSpaCnp3PF9DOWBMeGQqK1VKaHJ6bDw5PmFlN2FZZmdhcWolSG53
JF9gczl8Z3w7M1Yqb0FnWUQwVElFZFVXeVZjKWRRKQp6JmVBKFJhVlhfX3g8MWRqUD9ANjdiTDth
dzN6WkE+ZDB1XjktYT0pKEtDZUtaU0daOGcqWElAS15OSlRMOSh+QDAKemBuPGB9JX5LWXR5TEZw
aGg3ck15OFhfXy16T307K0MyTEZpbloxZ3VVWXwxPj4hKn5PbDEpOHkxMnZCeXVtMkEtCnoxdV8l
JGVHI2xCdTRzcU1xSVZ9U0pyP2lnY0hSMzJ6OX1mbWlXKHdzaGBnTT1CPCQ5KSg+cztQJT9GakAp
KWg4OQp6UFF2NHUpKWpVPFBRWVZNPmswPVIkRHJwbUE1XmglK1pYfGhwQjxmVEd1K1lIY0ViXiE/
VnZGY2NGZyYtTCVqc2UKejMkSk4hKDxlNmtZZFJka0tnQSY1VGxvaXF2S0tiQHRDSSRIVmMjLSNA
ZmhhLXdjajY0Qz9vcClVbmRrI3p5Q31eCnpOdU9VRkgoczFTZT9EN1c/M2BjSFZhWHRicldtUiNM
PW5BIzhXalEya0ZzMHNUTzMkeW5sLXh8ZmZnaVRrTWMqQwp6Uy1eezFYV089dittS3c7SUBgWGIr
PldQRnQrTzRkJno1cFRsYnZgXlRjRXkpTzwwaTVeK31vNkVUZiZnNm1GPlMKekU/RHBXLVMxVSpi
RyFOI3Nfej10dUk7dTdNWH1sZGl7YFljUiFjWkhVZkY3RTlXe05RST1RdlgpPj5vMyh8TjZCCnpf
U1BDWm8oZnZhOUlaN0RKbXFNZ0pLLXV9PldNcyFKdUx8bGEyUjlkYihQSiVQQ1pfX3IqKEh9ZCtW
LX0tMy15dwp6bHdFM2NGWFI3NEJNUiVBVGY9WXJvU3JDTG1RQDQ0QC01KlNCVSl3fDEhYHdmNXtq
OEQ8MTBrQVVTRk1lOVJrKGYKejtJYk9OLU9PTiY1OD5yVVJfPHpWJHBPZHZ2X3BYKHc/TiR7TDVt
KUc3YDhzYCM9NGc+MUlyVFg2aUI3Q2I7Ul5oCno+TG02aV82eW5sdm0/X2JNVyFXLU91NE48Wmt0
fjZmJHxCVkkkNEx8RX5BQiNIIUskdkc+SURHK0w+RzJoLXclNgp6VE5tMkkoXngjJiNnaTlMcVFN
Qms7V3lyYno5QW9pMStkKUMqQCVEQnAjYC0rNzNXODUpYlBLZlY/YTEhV2ROZ1EKeng5Xj5HQmtJ
fGRkaXt6cnRqcj5sQDE0NnAyWmowYD1XPHhgZkxwe0VMK218PWExKmc+IT55TmxkZGkoXj1sR0Bp
CnpvXnA3M18mWDl8aSpoWDNPVlRhM1o5fEJ7YW0jSHdCNFhFZi1nNFZeIzhFRTNjeUBYRGB0YXFm
RD1+RT8jJlFVQAp6SSsjJU41fj8/JGRKQD5pXiNMTjFUMzI0KHN2RTlIc0YzPWlJZDRXWV8wUGtp
LVJRNm5fQ05keUdLVVl+NTVFZVkKejA0eXNRP0R2Y0c4STxsaDJrQm8/YFkwPkMrVEIwZjwzIz56
RFNhbFRrSCNPfiYmPlE0KmhnN0Eob3UpYDI4UXo2CnpgcGV5SmIpfmYpVDwjWGZCXisxfS1qQX4+
QVJ2KzlVJmFAfV9zOEc+NGZCZDJIQihGe1ZsPWJxcFgrZmQ7fVU4ZAp6YiVYa3BMZmx3QjEqVzsm
WV5Za04kOU5jYU10KSgxSChCaGVlXnVaaDNoYnBkUiM5TCE/R3NLQ3lEKFdBd3BtYlYKenVSQHY2
RGxNSCNkbmA0WDZKbVdnUkl9cW82NDM+fkY3MFF8PWtfNzgyb0FeTEdueV5PNG1Lc1QhNFlJcSFp
ekZsCnpDeClybStAPj1XNjVJR0R0QTYodUopY19JVDs+dWFJaGBJVi1HZ3EwRXY8VT4zQjNaeDJl
M0FpMHNDdzwmdm1GbAp6Xz5VeGhqbF9SOXd6SHU1TTc9WXg2eTg1dUctOG1qSnxWMUUyJiohUWcl
IXt1UiNEaHJDYUB8QVl2T29uWVFpY1IKemhCYUdnUlUhWDEhYz9aZk11KTJqZUwxMERpYSRKI1Jj
UkQwNnQ5cVBOK0hzTzt6ODY9QEhBNDtAJGVmYCQpbSY5Cno2UCtpQiZkbyZVUyg2U3JzbjlVV2Vq
VCNZYSheNT9qSHk7MGhSeHR8R2V6YEJ3ZDl0NU5LUmBrTWtFKGcraXl7Pwp6VmBOfGg3ZHFCRHY5
Z2FXUFF9SHAoaXswUUZ2UTteX1FkZ2BTXmVgb1BQekdNUCluI2hwJm09OU1HM1ZxcCUkM2sKejNk
KFNrUD07Y2Ztb0A8bnY0fXRzd3F7bHpHaXI+clZ2bnJIcitVPmVvVkZoZXJtISRRZ0JGfDdTQHV5
P3BRV24pCnptYTRqRWl4MyR0V30rUFBpXkBWTmFwND1HNmxIP2dRO19YYlBvTV9YJDE8dTE0Rysk
ZD12Wl5DSUhwJCZMS1MxNQp6NWxgNCtyO1pleDVnP0BIPW1laEYra2d7JCp0Jm9vKW5gKiYyJHhv
enp+Kkp4U1h4Ym1uaDhnKUYlUi1WUCNRZXUKenlURF5WQCVSUHRJTFlMWmpraEEqLV5KRkE4WFB4
QDNyJDF9SjEoe3pwYChPMlRGJWxBeEhFQ2xkOW0kd1Q3UzlJCnp1MXVDK0RFQiZgXnZaYiVEcGRp
V1YpR2tRe1RPNFBsfHdkTVREUWxEVDIzOFVyMEZrO2NrYytKZV97TnUqRVhiSwp6NHxjPE87Zigt
PHpmWmxjQHFRc29sIz1FVThea0NkI3ZfYSRCSj0zNTMjfVl4bDtNOEx1LU1FMT97IyFJamd0UEkK
emw3Mik8bXp6bng8SmYrSDZlJmpHcWs4Tnl0b1BNOHY2KG9fbW1+SkZ0UCF4UjhmWDhtaHlaKj9l
cWxxSjxGdmAmCno9PHMrVmAkcj1DT0N0TXNrVTxaVFVzI3BxYyl3b1RnZ1Q1NFBhdkcjZyEybUZK
YTZIJnJPUiEoPEAwPnwxbDxoUwp6aWVyTTYpWXZHUjRPezMke2YwUWpXXlNDKSt1KVI2NVJDKyhQ
SkUtayE+ZmR3aiFJQ3pyZCM5bTwtOzZtRUApbSQKemlAYjQhaXZnUD81X1RhcDV7UWZFZnFmSHVg
bnd6b14qezwpSEB6ViFSSFBgLSFvPz1SNn0jVGUqMTJPVVNgK2pwCnp7O2p7O3NhKGh3ZDM7TWUz
WEMpcXg3P0Y4KkNYbihjekJMLTxpSmNJREVicmBlI0BMK0Z3Z0BGZmp5Nz9mdylaPgp6LUNxdnRL
WX50YjxwS0xESVE9bGtMKD9jNHBKYHBzaSlvYkQrd0cjVWBiSmFacUY1eHNAP01hOE1WRiM2TG5O
MFcKemQ4REokT3R1QzI3c0NCV0M3PF9fWkd1PGA3Iy1lM0p6QD5zIWRLJUQmdXRPU24zYGtIaX54
I29HeGxAZnA8dUN9CnpQNT5yQl5iaUl9X3orc3h5RX5vKzBEOCU3bjYkcXskaTk1YXJpYGlZMl5A
MXYzR3FoSHdEIU9eezBnZ197WkwwJQp6ZiQ8PzVCQjdOd3VAOGJEPXo8dVlxO1QyU0pFI2JzaXdk
SlA3NWU1PWtVO2FEQEpieEIhbT9lP09TRE5LNH1aNzYKelRZJnxAbmU8biVPJUhUVkltUDF4JFUh
e1Q7WTB8KFcyaExHRkxGK3whX0dgNHU1bWNTJF5CMFhkR081eyohNCRICnp0MHd6V3dSckJBc0tw
ZWpNUVc1dyk/KHtjbzs2ZyFIYk1WdEw3eXJDYFl3THgyfDw0dzBUVE4tTS1RPilhcGNSMAp6LWZi
PXwhYkZVfkN0S2BQelg7V0BXcCMwfXFkdnJjKXROeyV3RjNxampITVpFbXhzQFcpfHRVciVmfDRD
eiNAbGgKemAjek1gPDU7a0UmMyRtblVjcmtNaXhiKncmNk8tKTNWSHt4N3QxY2JrNTdHP0JPKys4
ZiZfRVNlRXJudElaOFVkCnowTTA+UUpIVG5UMERsdyhIfkdIQ0I/b0dySHVGaEhuXnF2NyFaKXZp
YV5iKyU1byNOeTAzJiE2ZUM8UiZ5JGNVUwp6SVBWU0cldFBObXAhWHEhMT1gSFRSWWMpKG1RTjNl
WVlmOHA8QXx6Py1Tdlc+SE5AOEVJcVBLMXJ5Q3FOV09kS2EKek56OGVBLTVgUH5MV0lCSEErKmc1
UzZnI3k0OHpfWXptciReQXhJVXE5NShMYEBfUUAqPGhoTWxoQ2lrWS1YWDlhCno3ZVVAZE10VVpH
PjNLTUc+KCpeP0VLUVJZdXdzPGQmY2s1JHoqXkFxdGk9bHNpUlp2fGJQSCEjakFpS2RDZVlWYAp6
ZkcoV28/WD5TZ0pERV5VVVBIVEZHS31MKSFVbDlCX007Y0Q5YmhaX2h7WTB6cHl+fWNPVkBjRil1
fEIpUCk+fUQKenV8JSViJko+M1JONih7OGR1aSpmbzFlfnc3aGMhZEFNbl9me1FnZHg7X1kkbXhW
ajdyXiRfQ2oxZEBqRE1LNWpsCnpvd0lycDRrfjlncjE2IT1OYGMqZT1pfT1ETCRlNSNmfGN+THl2
THRlTGZoaXcmdGJgMDlhRmpvTDBgfH4zZWI5LQp6QV8pUUA7KFVXeXpCUl94eGg/dmM0WDFiPGxa
SU5PbztnTG57d3ttY3JpU3t2aWk4RFRoO0RgWCk8ZVdBVD5VPTMKemN7SGRMWFlCeDlaLUVDYmEz
TXx7ZyFvTSspUGxLdlhYS3lMeGUwU1A2ODBBenp+YUlzPllsMzEtS1kjNWooJnRQCnpmY2FHVzFe
TFMxTmw1d1VgbFJ2NnFDUGQ0TUE4Oy1ZQChnN1dFJiV+T3tpY2VgalRYZipod1JXayVfM1pPYHcp
RQp6Nl5wN1RWREhoZTZ6NTl1QCpnTnJSRzQxX1R4THgqc2EmbSMrPWMhP0hyaXBFfDlyJXh5JS1u
VUJgRWByWGRwWUgKenJaLWkxQnRKNCRjJHoreChsSCpNcX5falNzNyVIVjUzcihLVlNRaDJlVUNG
UCNad3dtQ1JoLT1RRGB6Zik/XysmCnpDeilAPHZ5PTQzYVA0JjkzeChOfmJFQnYoTEwyYDBNNFlU
SWxiKCghPWBUa0pZMFMlXykrMj5WaihScSFsSj9Tcgp6czM8d1VMUCRDRGx7e2x5UGF1dmc1I3dD
KiFFWTNwNUFCOHdYJnR+RTZJMGUkQTg8dDgpZilGSUJqYF5xe1RXU3YKejVEZ15IZChhcnU2QnJh
RmQre0o3ank8cjAjNHlHeGlzekROKiV6aEZ2enwjMnl1OyMqK2R1R2tPazFFOyVXeEtOCno1Yz9K
NCpqJE8tZGdvelUlS0U0KVVCKnxAYjhwaX1iaXpfUWVVfn4/MnE2OUNBWlFxX20jSFk2PHVHfFE9
Q0whJgp6Y3BEbSlIc3B5R0RUMmcwWkQjOSR6b3VJfjMwamp2cWM3dUFGPHtiRXRKa21RVjR5bElx
cnhAKGk5ZXgwaWR1K2EKeilORmZOT05LLXAqcHI0WkJaN1kpenpadHIzXnJ0a18tbHEzRUAtMkA+
UkBWfGIoZUpkUEdkJWY8Nn5JZ0xwWEFlCnpnOzViLWZKa0t+SG0ocTxMQnk8OSomTDA3Iy1DQWB1
JWJmR3UodXkmUURvZWdGUlZmfmRoSn18RSNeUUM1Q2JhSAp6UFRKUiEralNoMzJWVEdQUTU4MTh1
aFFPaW9UKHNkdjtjeFo/flV5ezNrOTdXKjxLK1M8fFhkWkxeUTkzJW0tUyoKeipYV2hDQ249QEVU
azswQk4yNytwOGM/c3xVIXojRTFqNHc5Vn1nd2NFOGlWejcrYl50YGlaRExzdGJ2YSM3P2xMCnpP
dTcrPSllVi1zNTJVS2QjX0BANHdHYztpSV9FcE8jZy1LUXBDJiFhU1g+XmU7WGdKVkpqYkF+RjF7
OE0oLVp4KAp6WkFFSDZPfWJTWGE/TnR8NXI2bTVNSG5LU25gKWI7dTBiPzZpNDA/RyEwbUlUTTN4
S1ZVbU4+TylaYVRCOD04ZDMKei1XVHNsayt+SHdTdjg/X1BsJHozNSEhSUpCO3w+SHdPRlFyTzRn
WT8kMW47P1koT2x3blRwPlNlVmpOak16Xk5UCnpvc3A/I1Z9e2wzJFMmYDhXUkBGX0VzcFomcW07
fkVFN3t3MEc2NW91OEJtWk9vSHxfZGBjUDd8Z148djZCPD9SIQp6MWpIU1U2MEdETVUjQnZQeGBJ
cEZvNF5zTT5jTnN+RUl1SWFJbSg3RGNfdUNTekk3eS16K2cjJGc3RFZWNGV+JnYKeklKIys1aW08
Qj9RKXotdEJAdyskcnxTKVAmTGJVNDR3bFdhLXpkYVNmV08qI1Q0dz80KjFCb3N7KlZ5MW08QTNC
CnptcXd9UShXT2FjPkQoVzZUNWx5TDxXPGJzTElZSGdTM1d+fnNAKGlJcTFBT2xtNF5JKVZZX2xZ
czMyO1p3RH5Ycwp6JHApa3tze1ZCdTY7Pkche3AmSiVobXtlIzR0K25sJmt1KHw1TDNtKCkmbjhu
eWRHQH07RDE3KHVDfjdFPTg/d30Kelh4QCt+eCtxVTlaKTQoYVNGbU12LUV7MVh4JntWIWxiYG1Q
amFrTjVReDAqO0NjUiE7R300TExESGl6aV4tXnAmCnopSGgoaDtrQnRRTzJHPVBINT85Jlc5VDhT
PkRQfmo+eERkUHY8KFF9b0tLQz5ofXJVT1B5O2UhRjc1UyV2MistWgp6SWFIJEQ3USM5SG0rNEc0
Pm9ZQHY2YihYPDVLRCpNPClhZXlZPWdIUjhgSCpPakR2ZkIzMz54VzlwdU54Zmg7bj4KelZoJGhR
dE9HQEEyN2R4ZGZTRnI7aW0jUSMoWj0oQGZtPTxGaFZwIzU+SWhpI01lYjtNcDNpfHBhIyo7Xk1V
RUBrCnpUOTBGYGQrdFNSLThCJVY/ZypNcCl8aTE/VSFVVWJGVkQ1Qm5Jc0pfKWl9OGpEZVJ1R3Yy
fmNTeD05WGxHcSQpJgp6aTMkaTFGQXBCM1pkVlI8LWdMViE7OTJYVWxUMHw4O3RAZmdjeDZLLT9J
a1N4YyRoN002JlduYW9veWk/eGg5IzgKelZhQXE9SnNsLWozdCF9Unord21EN2ghTkRWfW9zY0k0
d0RDWEN9JXNSJTEpVmBWOGhzSU9PTkFIZ0d6cDdob0tVCnopKUVPLUc8SzB1IUZzbCYlX1RNeW5U
bFdWYHB7QnpNZE0wJUFURShlRGR6KE4rX3ZvQlJBfCE3QkFWOV8mRV9HUgp6YHt0PGBLR2g4JHpU
ZmI2cnkrRFQoaEhCUUE4WGNfQjlrKj5gUCU1bSl1b0Babkx7MFVuaDtMb0NEYTZjfElgOSsKem9m
M2pVM3VLOEY1Yz1wMVApQzE1PnEpZmlRUU8oOFZyNGV6Sjh2ZiFDKXFEZUpDZT8lP1hTUlNuMHtE
ZzRhfWwyCnpnUlFvKjhFZSN4KCoxMnY5NHglZ3hMZUpBJCVjXzEmT2ApfEhWZy1uRkBEQigyI2gp
NFN6c0VER143KWU1K3lydwp6T15JNEdMJX5zPG83OTNDQzkxdkVyWDQ9aFgxV3BhMm54e2wrR2kt
KCg2dnxjZ1gkSCklZmZSNjM5dEsmaUoqYXsKejUjaHorSFZmZ1YqKFE7Zm1iSV9ISkVBeSUpWjsy
ZHw2UHklM3JgSmFZTyRfe2pYaWVPeS1Kdjw8YWlJYEs8QWZ9Cnope1NTTlFQRj91XzQxTVI9Izw1
ZzRXcCNTJDxRJm4zbX5mXjU0SD1QPiVkbjZZZkpnND1KdilNKEc1a0U5PSY0YAp6YnB+c3NFPmhD
IW4tLTBmPnxxKSFzWSNVZDdscmliOzN8MzlxZWZBOHJEeX16UFg5X1BvKjtxTTBudSRjbFh8ZDIK
ejgxWF99SFVmKkBhbzc+ZnQ3X1VzRnlGMjx3OXsyPEZObXhNcFlPd3xDZn1MQU14ejhSKGQxKiRC
Wkd+aEVvOVpyCnppfWh7dT1wXkM3IU5naE9BKn1IM200MW5EQz9LfXo3ek4+bzchJm5hNF9xUUw1
NlZAVDg7YTJVeGdvZz92JFM4awp6M0UlQShsaXRWQyZXVmNuSlEwY2YwUClXVTBFbDdRa0RnN0A/
fEh1TkhSWklBWHNfZS1tT1VISyE0WnMxakNtI2QKelY5XlhZI0FgP2x6QHhhKlFWalVHO15LUlVR
NkJfIWFXPTNVeUo9WHJ0PDw8aW45K1BPclhnMyt1dzNKN21ZRjgwCno2THU0c0ZzdiQwVSo5XlMy
bzBiUG1laElqQ2A5WkdTNnEjSmRhTFN1U3tTWStyczI4X2hXakYlIS1aRTBkak9zYQp6WH5+UHVE
VDY5cihLQX0tXyEzNkNXI3VmeGYzfT8/U0EqYE41WjNOcGh5aTxgbj13M0BoRUJRNipOcUtAZ0pB
M28Kej9VV2B9PEN9M2s2aVRyOUY1Mk1zNEc1YHtnSil8VEVFJUE5Kzgxa1hGYn1QO0diTnxzTUdq
Z2ZjKU97V3Ukc087CnprP1lAKTMrPDR3akJ5TjZUcXMxYDJBaGVrNSh4ajFYVyluWTVqQj11Wmlk
PkIoSm5HPjRzaXBNNSFfR3tfaFVKaAp6TGhnZkdNa0U0Kk9BTn4qbVoyNmMpNSEhKllsV3t8Si03
d3VDSV4+Ymx9REpxT2F7e2o+RU0paWg7Sz1mUXJ7QkgKejIpazQ/V2Emc301eDRWVHFAXmFCen17
enBKb3lpRy1YSlgqPEs4Yio7M1pJODlJeHE1PyNuMExPPUA/ek5ieVZJCnpYS3NQPXRgZj9hWFdC
MGMzXztnJFN8MDx5JEZhLUxjNEhJNkYxREJJalI7QHxXfT43KkVWdUMtQllqfjZNPUVWKQp6QFBP
TUIycUU8dUJVe0pMaitgRDJgJUdqcGB4KXR1NzQhLTVDKFB8UDxgX1J5SjdaSTJCREBLPFV4QW92
TzlzaWAKenhadz0+OClFWT1tUVVyakA9LXlhe2VAXzQlVEczVWckJm92SSY4SVNrV0FiVVg9a2dM
dHQtb2tlQioqKV9RdEpECnpWUTB3RUhGMkxDIWt5ZThTelkydTZHKC1ALV5kSGB6ZF5YUWp5QFdy
e3o4dT5lWiYwKTlEU3lWZ09RPE9iPTVqTQp6Tzsleyo9Y1dyVFZnflUxRmhyWUU0NDR8LUJpdXRQ
Nm9aSnFvQlowYk5tNVNwMVU2QT1iYitrO3hvT3oyO213SkkKejRkZiQlVXx5OFUjYiZRZVpIQWI7
Tko2c015cFN4JWR2LWFOT1N1KiFsIWNPJUE+d259c0ktPUwrVDRiejVXUWdZCnpKJkpiRSRGP0xt
entqQ19Ca0BoQGNUK1NrQktHX2slaz95eCZjP0I1aiE3PUA7fHMoJFVIVjVIRUY1R2JgQDd3Vwp6
QmVKSW1CYVZ2aU5QbCtgejVCUTElKkVzWU0/IyZ6LW48X3QmVnBmYm11dlhiP31eNGskay1nPFZT
S2MlWDlhSVQKemUkRnFeSEc1NXx1MShXTHFeUVVCRVVmJk5AQXpybVlpVGpBOVcySGk8PnNkLXhJ
ZD9PSSNZXmcmO2tfb2F5Q2xPCnpFMmZSKnA1bXhTJDRiOSV4N15aJTFpRSNBIys9ZkZKNEZvJml5
TFJPaiskSEEtb0w5emFiP3J9cn5TTG82fCR1dwp6ZFAwT0RUYTM4P0xfayg5JEJ1YHItTVdrJlNp
WnZJamF7cztJQkV1IT10eThXUitRU0VSPlk/ZGgyeSstV3NSc1cKemZBM3ZVVTJTN0F1RkFRIXBg
U21xOVQ4TyRNWjtKOERTQ2RFbz1APGYoRE0jRm1tWHsqOSZ0WVVRKW5YRUJTVnx7CnolPTl2WlBE
Vkg3NVAhK245SzBnZlZ4JT5scFpGaz1ENXFAPXJ8cH0ld1hWZ20hOSVnN21pQ1E+R2NRSzxIPHt0
Sgp6P2R6e0FOQUs3PWhheCs+akp5RXwrPHpleUB4dlkkQzg0N3h3bz9SOEN9RHsye3NsRlA4SUBx
MikpazFgczVAZn0Kej9jfjJmdklUc0FmRzhPRSo8MWw+b0FhKSp3NzRLdlFEKU1qaTMoZXw5LUhO
QSRzPkU0cmU2RWlfc281QSFZPnlkCnpme1c5WjZCdyhZYUpafD96UHR5IUU9MGZBKkpBaj83emhf
UmxNS29TKmpIPGEkJUxBVmIqUGNgT0B9dzFzbl8tdgp6KSQ1Xj1NeTdEIWxhNHFVUFN7JEVONFRf
YUhhNFhOSVZeSzNjNUFKI3JKP1JYR35NdW1gODN8PENMRkV5KCozUmIKemV6NmZrViFKRyh4aVAx
SDBLVGhET0BsU0hzYWVUI2tXN0EwMXBCbHgpMHJJTjw0OENkRk8jSDA/dUJGb1heN2IwCnpZNzww
VEcxV3lyTzlhb3U2NSpeN2xfc3w+OGRiXm5kP3hBLW02JlZfI0VvRH0/Ui1VeU1xVUcoRVdTfjd2
bDItTwp6SnhQPjZlI29DYF50OUh3eDcze3gtWW5+ZUJGdUFkRHl4WkJwUSZQVUNJOSp6UUooRT93
ezJTZ0poKGpQVT5Md1AKejQ1emN6Ky0zYUZTVVJCa2gpdn1QekZ7S08rOE8lfkprK3khTmpDeUZp
KFYoKGh9YUopcTNPRGpsMTx3VGZ2blV2CnpWOz01WiNfekRtaC11KyF3IypaKUlEPTV4R0l0R0t5
VHxWX2Q1RzJ8WXxEfnRqN19uRHtGOF8wJEJ2bFJQVUIpeAp6MUcoKXckbX5eOVdAMTclJnp6OCUz
PmgkVXRyWXIjODxaUy1GLX5Ie2JHPntZMWw1b1ViQ3x3a14jdzVlQFJ6V1EKemV5YH10WmReMTxD
eSkhVEJYYGRlUik3JVY5fTcwSWxPWmBTaT9KTl4+SndAOEVEZGZuQ2ROSGpUZGxgK2JMOH51Cnom
PDRgd1VVfl9OQGQpYXk/NldBQ1Y9RjBYS0pgUmp6VVpMMkUmRGdoRVNuJiNGdUlYZ2JHPnx8Z3Np
JFVpRlctSQp6aTQqbGZlZ1NxdSF4dDVBO1YqJX1eTV5xfkpibDwoXyR4flBOX2I2ZnAmcTdCPzZH
YGVjVThDLTJIMTNwPnFRdlIKekkkUFktYnFGZUlVRihZUTB2c2lUTV9jODJJSXhXaTctKllmRURm
ZD1ocTVRQmFfaWBNeFpOe3lZTGVWU3V7PTBSCnp2PjdUPD9TX01PMnpSPXxTKGxzdDMmR182enxu
fFdMKzZ9dm11NihnQWxTMzFiQihjLTFDc3duNG57ZFRCZFJSNwp6YnE/Vnhge2xPUjIpaTstamN2
Wn1NOCNsP0ppRjwyTjBuVDs/RW49R058WTQ0NWZyZk4+JFUhLWU/ei10JUw5M0kKemt5KTZRVXln
QGlPbHw+Mzs4U2lNalUxQFheeTtJXk0yWktRJElQK0s9eHZZJk50NjI5TUJEKlhGZHE5RGxFT3Ne
CnpBUDlsQTYrci1jcG8/bVhCPy0pbkJxTjg7ZzV3NU14JFFveEY+WFVXUlVxSTBlVkZZO0B1TDty
Xi1DYF9uNGlxbQp6PUp5YH5pe2JPKW8jc2JKSSg/cVA9a1Y9Kj1eKVp9O2AzTDBlaEFwJkpJdjJo
Y2xvOU4hMjhlZWM/ZnU7QGpWSGoKelFoYz02WkxLbXxaKGkmPlV7cmhFLWtPZHwmeD9oYG8zbkte
VDV3KTBBbH0+LTx9YFo0VEBRXkpxUkhDI1ZXVlE4CnomKFIpck15TmAzbnF3YT4zTl9VdENnenFP
ZV8rdSk0WEozYTdnPTthI2FtPzdScUJZeVg0e28mbWlGO1U/UkJALQp6Vj5oTm9XfGEhKTYkSmZD
ZCktT1UzNldXczMrUG5ASnF+VU9uaH18R3dkJk05eyRpZTBCRT8kfm1sc2l2Tm4mOWMKeihre2RV
cUMlMl5VPUQ3fkdjWjNIe0hZJTMpdk1uJT1IUkE3JSFlc0wrMUdTOXVeQzR5dkFxUDctWFR3JFV4
aElQCnpId0J3SD0jQzVkMFh1PXtzYWVKb2JpUW4oakszPjNYVztMMG52WGpOeTN3NE5XNHdiWChM
bEV3JnNiUnE2eVU8Qwp6MHZyTmk2fUB4fD5idXozWnA8RiZyc1dVP3FVO3FJKWRnJUotNH1KeUtz
VHVpIXEzQUs+WDlPITE8YEZOXik5KmoKekUpKWUlRUxNOzJYeTYxRUdsTndQP2duZ35MPlFCbmdK
XkNNTXA8WHE9RHxlKENFMnxnZEF+dU5OYWhZQmk1cHlUCnpvaTlXcyMxc3d1Qns/U3ZhJjR8NFpW
S3I9Y21TcjVLRVlHNmZJWFBFKShsaz54MmdSRmFhRUJJYCtNVEMteXEhKgp6TkpkWWZpLWMmTFlZ
OEc5VVNWfllGO1d7R3A9UHMrRjcyZGtUPkMmVGRlXnR4MykqNyFaVDc8Q01WK0tJYzN9KFUKejVI
b3MzeU1Zclckd3R6ditzVXpRPl9iP0xgWktDKjx5PVpSUld1K0YrUDkxYD1HMVJuS04lZjR8QUVW
fjQ/dTVtCnpxOUx8Q1BKZ1NTUVRqcVAraSlNa1JVe3J2cSZJbjRiLU5iOG89UjVIUjxDQ280ajhS
KHZ5I2dCKmRCYnx4Nn5tZwp6UVBCc1RaUF9uQmdpQVVURm9ATDNGdExeZU9wMUYyZ34rSXkqKGtB
fGM5K0VGMFIreVdwUnBOdXtHV3g1LVhlc1oKejRxO2IhO25laUZKcD1GUDY8d0FQJktvOF5xMTJG
PEJ8aDlvUWlpKV4rSiZ1MVReZDd8I0R1QFNyVCZPXncjWmBCCnpuMj5FaSRoTj9rWSlUZFZ2Ynsz
ZVZuPTB6e0QhR1hMRlRrUk4rN0V4TXZ6bmpTaDNwdGxjV0dAUGErdzVSZitHMAp6QkU8Q3tyR2Mh
OVorc0ppIU8xa3RjWDtjQmQ2Q25ydSQzamlOI0YzZ3JTNTFtanooVU5SfSRAUj9aZm14KzRkanEK
ejd7blJhM0dQUStMX180TiF9aT9NbSNBO0ZyY1Z6WC1MeU0wdDRgQGVmKzRPV2BTeUhnMCFMZU1e
R0VPSWNhNUtYCnpue3ReTlhjfmN2Y0N1TiFqbktEPU9fP290ZHg+fV4mT1NeQmF8YUh+Wk93d2Vp
VG1WN2NXSC1oekd8KSVCbSVvRgp6YEN7Knlza007Ukp4QH4kWjUobS1DPCRIRThoMS1kb3xPWUxU
Rkw+MTUjOFpYTFVHMEhWem0qbXcxbGEwQktSZnoKekleMXdFWV5fRz9kTj03YnNDbEljVCNBZ3JG
bks5NVpaZCslITk2WGUoJH15cWZOJm1tQW1ZfmcrQHtrSkJzQyZuCnoqdUR6UkpLVT5ZdjZgSHlE
M0dfQGgwMUZRbnxoOHxTPUxVTVZBaFFHJGlXfFQ8JFgmYVZMWXVSPn1yRXBYNFh6bQp6UU9tN2Nq
MWFxVjtTYGl3ZFJEUTU+fVZvO2RPWjxhdTRjQjtARGFOS2lVZEU9KWtlbWc5TDY+PSZXdUZwTHc/
fDYKenpfY15QQDxaPkAxRVN6OVEtRkBySGZDJDV1aTE8PjFxX1R3akVsOT8teXo3b2ZQe1g3OHpZ
UFk/UjEmXnpeXklTCno9QHMlcnY8Pz90MWZATFVROyowR0s3PzI3ZGMrMGl4YnF3TFd5NWA5LTlO
MWcwKVMxQ3tNUiQrNGdlTjdAPjdTaQp6STJSTFV4Rk9pK05mJE5eVlZNWFFJZzdedFZmaE40alJT
R00+Ty1vLTdrQyQhRHYyVFUxUHdIaSNzb0ltQjVYbT0Kek0mPUd3QW5fN0RuQHk2MkU0QzhJRnpJ
Jk1LSV5SdnJMMnZ9aUUpKD1ea1FWQ0A9MzRNPn5lJWxfUng5PUR1bkhxCnpNT1hwRnJHPGUpIzFu
QVZTPTBldXhtZmZSZW1QYjx2MmNhYFk7TFU1c00peTZjZUFeUip4MDtJPSs9MUAwI2RUZwp6alR7
WV9Hb3VHRCEoeShkRCNRfjw9KyRlNUJ0PX08KzhaYkt2QyNGPDElRE1lWX54dURsLVlFQCZHfSlw
IXJlYEcKemtQSFFmRTVscFlBaGBBJjJ1NEpQTyswfncjWSEoNmRzPCloUjBkN0ZZbSNeJkYlemNT
QnVCSHx7KkRoRlFPXlIkCnpZZztuNFQ/TntwVzIzUEhWLWx7U1Uxajk0LVFEJkM1ZDA+X0xLeyU1
Yj4xVTE9aiU2QFlsfkNfKW8maHxfPEM0Uwp6VTM3VmZiLSRRanhYaFlJJVcoPXxLQyhxPW1BNlJF
MEhENjwjJD9XRHNHeHRnaHsjaTBRPTE/bjUwb0goNzIjZTsKej8pcHhYY2ckX0U9UkN5UUsoPHpf
OXg4MmtxQnRJek9JaloqPT1USFgwKzZpWUtQSSYzQjNPS15HY0Upc3B0I1RuCnpOY3V2JHR+S2FS
I3dYQVl3RVZBfk4re1JSUmc0PTtpTTxhSihmTjVrSCZrbDV5SWYhSFViSERNTDZfKnhjZHBHJgp6
TkhfPyUwTXtIQ2NIUGFTRW5ifEErP3g7K1hSfCRte0g9ZVpKd3BgN2FgQloyOGQhNSluJWojRk0l
c3A7Z2ZMO34KejdLR0xeYUolUUNtM0pmSmgqLW4mRHorI0g5UyR1TzNsYlJPJVdvdTAzV0hsN093
RWx6I3smfDxqUjxBQDV7ZHxjCnorPTNaY0lgakhNRTd5NUlxQlk+Jjs+PTJ2Mk5VSGhrcXZ5K3lv
aVlhP0pjMS16eEglUUpgVCY7c20jWG8kZ1V9PAp6Zi1BQ1grN0ByZVhVK3hsVGxPQDVYcjRSNHsw
ZHtTZDQwVTwpbSF7PGdZPWRlO19ucHZoMX5RPHVjUWE4P25KTX4KemdWPFFeaVV0YTN4bHdQSzE1
b1N1eGlvNVp6KDdTI1BnMzJqPExUPmEjSipaUGB5Km47cVpIN1FsM2F7fUM9UmA1Cno0Qyh9PGZ0
PUE2MCU3aShXYGN9QVZqPlI4KWk/dEpMaytvaTJMYGFDMHoyfktyRihXM3BeQzZsJFFVX1lCdEtB
dwp6R0hGNnxZUDA7JVI2TWlTQXt+Ymk/MDZIaXQ9MXBISF99ZHl5P2NNNkk2OFRxVSlxN3NQdz5n
TytiPXpoPy0wSmYKemlfYzU9XngqUyVlMnhNQjxNbj1OSDlxJj9iMDBuKi17WTVSSH42S0M/IzB2
eHBZaXpvNnJYPUlgbFVIb2BBVUJGCnpCa3U/SmQ8cl48N2U0ZTkrQ3pLODdQfTVMcXhWT3x5RkU2
YGRUKyppcTthNGBab1VNTkVwLURpMWkyRjAoR1BhTwp6eU8mfUdeenVmTGBJMDVfWWAofGJzVmxk
TFkwVnBedTkrTHMxQkpOc3hEWj52JGN3TW9ONTRGPFBpbitEYEYtVDcKeiM8ZSU+dzhYbSlWaWRM
QF85N1k4TDhzaDhfY2tFRzQ7amF2dlZjKHo7MH5HfVYzM01FMnh6MnBBODJwSl4/ZFAhCnptYDx1
JDVJbV5HPS13eCsrQng8aEFQU0lVRkc5Sm8+eXktPEFuRnheISYzKWlHYiF+QXVVV016YylAT0di
T1EwTgp6OXNOOVpqdFBSck5QI2l8aWQ9aEBJdzcoTkdxKjhYeDgyT3NibzZzPE5pWnBXakhrJThy
RGBFP3UyNHEtMlpifnAKek88KSNiQkReWFBFKkNfdU4pa2FTQU9pOXgmTmhLX3djUFIoSmpfSyhE
KTs+V15hT1UoSUJibDxnQlhYaUBqJkJyCnpHISl4WHtTb1BFPV5nYDkyJEF8bitkdk9oT2V4Ujtn
X3lHIXZMTiloN2MoKTswJUtjfFpKPnVURDtGYWpiMlF4agp6Q0RQdSk5aXhHX2xDI0N6QHI9JTNQ
OTBaKUF+O3FxUDM1UlptVV9NVmJ0UE5nOEYpUko9Xz5oISEwVn04N3BBWlUKentlNDcjVWxLSjcm
cT5UXiVLflRgMjItdV5VMk9XLThoZGRXcWdjeiYhbGo2cTcjaWNYSD1NMTNrQW0ydXZLIXRwCnp1
ZTUmOTxNMV9OJFJiPyVmaVlrYV8qSn5VMmdWQnlKLWwrZk4yWHQqeClLIyNNanJIRCF1ZF5qK1o3
eHtTXzE9SAp6REJTTz4/dmZ1fE5TUH1KT0RlanMkMU9Ha1p4OzhfPXpLNklZUVFsSSNJMEJedlBm
Ty0/dkB9REI8PCt3PSVhKiEKelU7bH55MnkleVhreX57QDRKPClWNlFuOCVPfXUpezdjZyg0RWNI
RHQzeUI3TiFYc3BsTDgyJG5QRVJvIV9SaC1JCnpTX1ZfSk1QJXoxQCotP2xyRE8qRVRaXjcoKXh6
WjhEbkBKTWw2b1FCKFBrSmNWfWV4LWo9I31GMXxIMjNmcT1PVAp6LSQ+VDFAcmF+Y05oMDJlVUc7
O3ctVi1jdWhHNUNsIVN6dHtBeTZFRWdSeUMqXkI0OEJfRn18TnAlVlhOOXY5YEEKek8qc3cjNFR0
O0cmdGlNPFdHUWE/NHgjUVlhZ2lHUFRRRzlpN0xBZ01SRTAydXNVKShFPV5fIV5EI1dKNCFZWTFM
CnpPZ09Pe3FVbDRAZWwlNUtrb084OHtLVWU2OS1ec1NNJFlARGktZWx8Xmlgb0k/Tjl9fUF7Tyh+
Y0tHd1lLPkg/YQp6SmMqWjd3X18rVSk5Mzw1czdAaThBMip+YlMpQFBKeXRRSGd6N0N3Zk9+fjNP
UkFhNzFhLWF0K1VAVlREe3ZNVkoKemZ3Q0RQOGdaU2RRNVlkI0l8NSZPcjFwa2l5RUFVcj8oRFBR
O31SbmU7dGpUbmNHS1JmI1RHWnY4IT58Nm1paWhACnpNV0F8RWZgez8qUmtVd0RHU0s2dmxGcWU7
dzF6NEMzS0ooYT80NCk2M3IyNTUwVClwPGAhMXF8VUZzVk9Wa1c0Ngp6NWlZQnUrTGZyNlRSOHp2
MWI4ZFhPJmsoUz9JO3g7Q3ZKPkx2Tk1KRW08YkBOQSFkTCpEOXtgeiVXNj1meldzX2AKentWZThG
ZGQyVUlhdSM/KzMlcjZMZkVUfFheeEkwbEAmZjkpWHFqaVUjJUg4V20oc0R5WFFQan09QSZ+KDFI
YmlFCnpKa3V6KjdXbFZ9b3QrM2dUWlkkLVUkRFVNdzd+QiRzJWAhZ2RKXiFeMGEoU2VQKHJQLVR+
ZS1QZnAqbCZERUtHLQp6aSEzJXA5Nn5KMnBifUElWChlUTh3XkNfY0ZIWTJ0I0dXOUtJa3VUeVNQ
WDkqcUprZylzUEkoMHYzcjRKKn5POE4KelJYcjBmM19AMTE4PDdJeHZaJW4hajBOIy1GJXskd249
eHVrYTF3IUl0ckFXRkFGKzdoUXorQGIkUV9idUYmKUcxCnpzeCpfUkhFe15sOzczISRldnR3PXVH
c1g0USVHSihmeEM3VztgRnJnR31rOX4yQ2d8STdSclkzTStrZiV7eD4xdwp6ciRZKVgjR2B9PUth
VGNGaCFZTXQpK2xCTUd8fU1ZOWkob2EqYUkrVmFAJWgwV08oeTVXdTExaVYpSHEyXkI8dCUKelNg
MHR4YjJ9TiEqdHY0XkEhdVQoUW9QK0ZIOykoVDQmfW53d0V9ZGZAPzk7S0NPMWNjd1pLSHlWbEcr
eSFkN2U/CnpQJEM7X3g1K0slOzM8Nk5XbzZQYjl1fiNCJVZRYTRZRk56K1BaS0Zpa30wMn5rbmp1
dm57TDhsPyphcjtjTEk1cQp6Tkh7bCV5by0/TTJ3MWotT3FCcmdTfEhDODJgQWJgND1heTdPMn5A
Xj8ycmtJLURlYHQybDkweXAobHdQQ2dpMDgKel9HYiZaK0Mpfj13RFE7ak4/czxDQUYtMEBYRClG
aTBgNHtUYFhpQHFRM2pTTUlaS3JCT08ociZENj9ZKWx3cE8pCnphST0reFktQFNBUFFiM1NVfCZG
I3hXRmBnbFltfWhLQFNTM0JZZGxYUFBDd30weTxQKyNhUlc7aXYxZD87anFaPwp6PHhVfDFhVWlU
YmU3a19YWl4wc2h2Xn42OUt6RXhePDQmIzk1bmR9bSZzbUBxTHEqKn5NUCk4UU5jYzBtR1NUcGQK
eio5bEIhVk5OTHoteTtDYFQ3VV5lWklifXFXYFNAUUMtemB0KyRMPS0/SnNZMkdgR3R3NFJEUHhe
RHQrQChCVy18CnpOKWVaJk50YnVDTjEzUjdsQjM4QWx8MThlP1VTSF95QSNlZUVAMU8lP3VHP1dl
KndjVEkySjVtdnZJQVMwQW1qOwp6ZiZFQE8qXiU1fEZocH5qezdANVdGRV91MWhSfTk+cUA1Wmct
PUIjWUY0aSZmQEFGSTNHezFCJEsxPVlhIVJPNnAKeklRUkpjMURgJjhQVTdRaUBncSNgbXNUT1k5
LXE3TFMlPVJpZTEzcT5nWlRVaXBQJUZORHx+KkImLTNgUztuUilKCno+LWNEPT00P2p5ZERUVy0/
QUFfWSRAZSMtZHdgM2RmczZObkBpOUsxO25SPUw4R089RWF0PVBEQEhyUXMkQG9tZQp6WEVyfENz
WVJQRm16eWN9dG5HU1BKTFF0XnpzalQqMUdWTUF4RVlfakBWTih7V18ldlBNPzFBLV5Fa0BfZTZt
PD4KenJYeD1hPD5wODU2Jm9OQHBJaiQ1S1piezxQb0JsRGNPQF9PQXpzLTBCNCM1WTd2Y1VNNWBL
ey17MzJFK2diejRgCnpGV31oWEwrRTgja2B3cm9FJSsxKmV4KEohK0pldXA7Qz40fSRBWnRkO0VP
R0koMUlfdTtMOSFlTigrOVkxOzUzRAp6aGJ7T1c3SlJoQFMxa0I/MyU9MldNPE5tKE4xYGcrKks5
dGI3RU4yc01ecnBROHxFd29hPmRRO09eKnlBe0EzOD4KenVfMSZmaFkrM2BMVT8pejtkZXNfJmtQ
fHZKQXwtZjI7cjM+ZyFVd1l5dEF4T0BGbmtESUcqOGBINmVDK0MrZE5sCnpSblFWaEp9O1NFSmR9
KHBwcHdaS24leEhkUTB3Wlc7UkdqRnV8RXF4Uj5YcE5eLWE2KE5YTEFrdWIkMksqNlM1dAp6MCQ3
MGU2TGBtbCUhKz16PDQyT1BeKExQPkZgIU9CUHRgTjVGeVFCJTBAeGxNSTc0QFJoUWlIUWJfaDFt
PHZXJTkKeigrSVJgKEFVPzlJflJAZEg2ZEp7JWQmfDtfPG1xajBnRDFQSi1gd2h4Mi0rKFZKOWdn
b3Y7d1Buen5vQnNuSEVnCnpOJlg/N1Z6T2NAVmUleWY/clY1fSEoemMzaVVqY2E2Y0ZgQmFZWGJO
IShuMFM2OVVYcVU+YXs1JXBYPS1talZKNwp6Q2QocGxaJUJhIUY1Q3sjVTY9dz1ldDJ0dShJe2R2
TUtIU2hDQ0pZazRodklfMVVNQE5DWW5NOW41fSkyMjd6VnsKem1qZENFM3syZTI2Y0grfiRPTHxj
QV9ObHohPzkhe2ByJEJga2J3IV9uKl5JT0ZvRGt7Zm05YUJ6eXdveGMmS2goCno2UjBQRlIyRlc2
cHQ5OEFGI01EaiFNLXlMQ1MraU83YmR8fUtFZ3tGRXQqYll7dzJ9PShZajd5P0l+UGBQMn1ydwp6
N3B5R3IrJUxjMnRuU0EmWHJreTdVfUlefUs1O0t+MGlzYkVnNFdPczR6Vio0blZWczF1eSF3a3df
fWgtdmNze0wKem9wZjc8dnFCSytHKTd9OTNjfDJlNFlvPzAoclZmeXMoZlo1SFUlZmc5bV5sWGVR
ajhtWnZ1bmo/cClzZThATysqCnoqU3ZjZF9vPHZpQkokdyQ0SVJzYnV5I0M0TCpQe0UwPXttZ29Y
c3U5ZDU5Z2oxRzYxUjQ5dT45K1o2WCN2OWIkOwp6e0hHdj5Kb3MlNyFxP1lkU1l6X2U3OFh9NzxD
aGhod0UwYWByamRtK2Y7YHRPI1QqcDw3WT5VKlloQXF9cG9jU1IKekRoXm5rQ35lMHpVVioteUx8
TVVRUVBDRiM8QlY+elBvR0kjcyNERGBPZnllRk1wRENNaH5uQmAzNl54QXNyZH4jCnp7RjZwSDhn
fVN1V1gzTUBySEJwVEh2aWVoQWQtWE14KzU/ZmpjTXFAVnI9SGshMClLd1IhZmtnK2Ihd24wajxh
Pwp6PWdAVz1URV9ydDZAUWZTXnJSQzVGKkBUV0AxJCt7Kzk0O1JRbVF4SDMkc0NKRTV1Tz9IK3g8
Qyg1cyNGQklPOUIKemZSZil6TDc9bHBKNV97fiZuWDRsaXE1eEVLK1FIRUBCeGNmanRTUjN3ajso
NXhjdiRmemhDUyohSTIjc0B4Kl9PCnpVbjlVPj8qOEp+b3AzN25yajR8ZnFPVCNIJmduS31WVHkk
X2IlMlJxPGVHKWFRIVNmQEVzWDhAVHpCajtSM3d9UQp6dk5pbFNYbCU0ODFjZEY/WjZtMHQpMiEj
MF8rOGFZWXh2VVZQM1o9WChiVCZKUXBXfVdTbjhBYmx8PUo1UykoQmIKemV3T3ZpWn5JfV4qIWpR
QD1aakx4Jm5qaXkqYDw4Oy0wKUtSJjxfN1FyTCtTLUpWQks1LVY0ZFBSSDgxRSZNc3hrCnpTKjVp
OEAwRFdJZyliNkMrP3koNTVzSjklPj4/JSZEPy04TFlYODRRI2t5WkExdTFjfXt1UlMrKTwxdlAm
SDdfVwp6bkohNFApYmgrUFEpKzQ0NjdlbG9hWDcoTnU4eG12dS1+OC07UD8wX3lAc154JHFkb2FX
QW14P3JpdTFQX3VxPioKekcmPlhxOVMxPko9KUZ2T3tIcjBsQV51WihLe3Z7I3RmUWUoYGEpLWpZ
WHJzNmsmWVYqQGhjX3dxV2lSfikwbks/CnoxMmNHODgwUXM+X3wxUntxNk5oRF9Zby07b29XNk1i
JiEzWStKSnJedTk5Ql5lM25qelJCbUFhMmwtNm9zZlY/Iwp6Nis3X09MY0BpWXMqfVRaRCFfaEww
cDRUKk4xc1pHMSZiY2JLfFFtUT1sREBQY3BNb0deYWY0UGYlU3N4OUo9TUIKemgoOEJvMnlfSF9k
aHg1IT0hTSp1Mll6SCRSJjN4V0lTMnY/TlBINE8kKCZmej4jZl9pQX1QcSVmP0I4YmQ7d15RCnp5
UV91RyEmbjBvUlFuUXs0KnxnQzlkbFVsTGFldXB0bTQtWXgyQk9yeU9kcE1TeU4lSU0mZUVha3Uz
WmhWWGBjVwp6NGlpajhTTW1Qc0FWS1JZVEd3TVFRaml3bzBGTHtxeEstOU5sVzFjNFVFcyZzOXpo
MGlQIzhafXdyYm0zYypCTXQKentBTDFkYmdna09KQWh4a3RqRG4kaktfUG1KeV5ib0h+NTJMOCl6
YzdSbUp+eUghUTliWEwmMGRYYzBUZXk4I2Z0CnooRGBkM0tuZVZEQHF7MUd0bD9HOUNjOSN+U2RZ
ZDlmYE1helBkRExvQkVmeyklQ1ZINHBgRV4zZSg7X0lSdj5Xdgp6eDhWbGRvJUtnNktrbVNSQSRs
JEtJKVorPzBxcVp3THhybClGMzIqMENVTiYtVntzPEc5Yzstal53TEhxeF41TV8KemIpaDskYWY/
WDtAays4fnlDNW5Bc35ScDlmeFNERFgtOGxPdkhveGJBIUthd3JiZnErdUoxTVkjVj4tfEFxJU1G
CnppSF5nV147cmlARjsoKW1iITJ4MyNaUjYtSGorZFVjI0w5d15uKjxRVl8oSz9kTThCdkl9VStY
Q3dAYSsrbCVtUQp6QU5JTmdQTXxfS2w3QHE2X3Ywell0bld4djNvM2Y2MiR6aSM5QTBZVilIbDZH
P2UmXnl1UmFwZ0ZQXmIlRFFjO24Kek19eHQ7JC15OFdqNzlfUjJLZzF8Zj1mdER3O1Ere2h5dlN7
ZTAmT3FQK3dCTCR6TXN1ZENhfUI8dXNJe09LO2krCnp5XzB2b1FNekNJKDVhb28tS0U4OXB5NWho
THZYITM1MmZjfElLQ2NicU0yQG9Cdn5qQWk7QyMkLUB9Um9gbSsyNwp6e0Z0M0dCMExwXzU1SWtx
byY/R31kJGRERStGKzQ3S2lveVYmUzg9KXZQaW0za2AoWUBwKDJ5eVZfQ2BFZkBHTj4KeiojbGM/
bUxvYGRhaXUzJUVafjJCUW18TkgoYzF4VTVHP0xTUTRDQUFnMmtzWDJPWS1aMHp2UVl2Kn1eVG97
Y0xxCnpaWilZRGY/NV9UKyNza0tqVng0WGxLUktscT9RVSZsZ31vRm4+ZyZLdHNTRT4mb31BZTZx
dWtsKX0oZ3tlJS1QUAp6aG84aVheSVo1UWFOPzJ6eWdgdEIyUFYqRCoqZFg3WkFiR2RZNzFxPCUl
Xn4qRDQwWjVAbSlfcTBCbGhuRTZXUz0Kej1mcTFXazFaXiQ8V0d5MkA7cHBPdE43MVNYeiZSaU9y
YyNeJCh2R1dsZEhJckxZb3Jnd14/WGF5cEVufE1MZHN7Cnpxdl89NEFFSV9NYEBuX1ZkX054UD1V
YzhadnRyaGNOIU1nRVlZfChCUXc8WnVPTC1BfjJENkhmT3JkJFBtWGJvdAp6dEtAP31yPHhFTnMl
NDBtTVc4bDAkbG4oKUF5QXVBJD1eKCZVMEtEdVFmT0Q+SCZzJC1HYjtJU1Epc3dBX3dmfGsKem9G
THp0TFlyVTd3R2BVb0Qhd2otNzdYKDVycUdybVVZJFopVWQ2OVZweykkXioodE9lRUJWd0UrQVVU
NSFXM0U8Cnp6bmAyIXk4fmxiM1Q8XjJ4MjRkT0FWMlhxJCQpQ1F6TEZtbUZDPnRTUnM4U2IxcDtZ
YEspSGlfWnhYWSQ4U2o8Kwp6cjZscyFFcUpmdXpmSXZrQW5eWWVkKyExdFJkd3g7cExydzwkLW9S
U0JtbntybX1ucGIwenI4TWFLYlBsN3leP18KemtgWDBoTkc0M2lrYzQ/ZVB5KFI/bWRSbVM+Wjck
cVRQZk9XVGw9Zkd3RituejJvaWkyITczVUEjNzlxPHM2ajlaCno1U2ptWD9RX20jY3hiaXYtX1Am
Zi0qdTk7JndpfV5leXpSdCtIM3pKZzE/Mn5IJUlVdlZFQWBPQEU+Q010X2MzYQp6NEZBPiR7LVhe
NDxfUHt7NDFZIWh7fFNhYUVgdDlnIXlne09lflJKOU1ldl95X34jIyVZSmJaUGhKVDhnRFprRyUK
entQJm17Q0RYaXs7bENvYFRaUEBFIStgX2Ilb3FvfXdwbUIwZG57bFMmMn0tRUJzYEVOezdlaTJK
Zn49cyY3eXk+CnpzRz9DZSUyK3ZRbD1UdT9reClmQ1lXN0xJOERvTU1fZHsqVzNYdnVBWDFkJTdF
MGIpY2tNTDVnLV5YMVBXZzMpVwp6ITstQ18hR1dAbzNsbUZVMlV+YnlQSCRnflZYeGBARUY3JlBP
UVEyR0MoezFTazF8eihDczt5V2BFOEptNjd1U0EKemdSR2EzSCsmbXB3Uz5JbythVGs4OER6Snc3
KFR8amh4VClFNnxeWmsmUyVObVReanI9bTV7VTtOazEzLTN6Wl90CnpvI2s2MGdqSXx6QjQ3NypE
TGt2Tkg0Oyk+Xk4+dnMjODRuNmJNdWY1aGpiZXNLP3Z7JilrO0BvZzxuYk1GUEpkcgp6c00oZVl5
XiQoUnU0NSEqQklwZFowV2VVY2U1K3hOMW0/O3NWXytfVWx8O0tPI31OfDlhekBpKGpPbWV5b1Bp
PSQKeko2YGsqJD8+IWQ/anRsWW1pTSZ9YzAtbCVKNHZZJmk4T2xLY3ljWSlMUihSXiE2Mm8tUF9W
T25ZOXZKQTJyVjNVCnooYUMpSktgYEhuSTR4dXVlMkAmUHk7ZGh0SWMlRXdjbSlEYEJyMzJ0Rikm
eDA5OS1aTXBMOTFqRTBJbDJ7KERrNQp6LSkqSVdsTXdoRzhHa1Z1Ulh6U3ptMGlnQUlkY2whbEw4
YCNaaUdgR0ZCTlZpNnN3cFRqRTdgZXRVM1V4O05adXkKejNtPnU3ekJYank/QDdUYzxxV3F9UH0y
OFM2Pj1vam5zRTkqYG49aE40PDhhcUI2QTgkN0k4eihFOUdxfG4xNnRXCnpJbigob1dSbE5NREhQ
SH4zbj82aUdnUUxhQ2daM0AzJnVZczZHe0BEZ2xvfV84Z1JiUiNhKFRZVUQjZk9xVTtSagp6Vmoh
N35MQFctZGFJMSE+Z3Q7aE1CcUtTdUc9aDU8YTR8U1l2aEZVd19zUlBWa2hYajdYOSRHRWQkVH5v
QFBSPDQKem1mfktsYyZsNU9FQ3ZHcHcxdWIkKDBKSDcjbHYhTWwwVE1VeTRjeDVDUSh1eShrO3Ez
QV87a1hxdXdgP14kO2lSCnpJQHlJLXRrJSVvbjgpQCVwP2J0Oyg+eUV7QWw/ey14MDxEKntlQyN9
WilmZV5xP31gI01aST4tbSUpK19hOSUodgp6ZERXZSlyXkpeRWQxQk5kQ215aj5HLUwheno2ZDNR
Mk1ROH5nV0F8bzRFUFJCSWF6SEcxRClObl82eDhHRyVIQ3MKekdHMTVZZGBHSFVpOX5FdytGMjR5
ck09N2dOWjFgZVchVlpyQGFfa3NqamtZOyZ4MV9GSm1eYEdsNUhkYj4kRWFECnpfPTVVfDlEMmR8
YzRHSypDN15BaEQ8ST83YzAldylrdEArSUJ1NmFybE03dTJ5QVU2LUZkTUN8cD8yWj9SfW44TQp6
TVhuXmYmPnBlS1BiK2ptQFFAXnYxYzkyelRWMj5NWW4zcnZEd18qSk1UVzMyXzFBV35SNigxdiRU
aSQ5UEBlPD8Kejk7fW8+a2p9MFZjSHZYek9UO3FBVDN5TEA7a301SkdIQW1kQXpHZG93dXFHPFNM
bmlGKndheTF4S0hSUndoUDJXCnpCbk5MQlNtWXxQM3FPam8lR1ZkVkFvMV4+Q0BiP3x0SUxqYVIj
QHA/dzhiKmR7REtEJDc3Rmp2KG1yNiQxT2F8WQp6ODx6UTN7cmglYlRKJCM4TlcwTHxEO0ZDQ3ZB
OU9yZytFMHNrUTFqMFcwNzY+V3lDSURUajt2UkUoOVlNWDdIcE0KekFeU2FJS14yeH03dyhLJDtG
KSpWU2plN15TV3hNWWdJd1c9ZylPdGxtMk1aTk1KKTJDNnVRUlNoM2d8MD00bjx9CnpoRndVQVNs
REozeGhCfCFuMjFIYnNuOWppRX1VaElLR2JsYGJGSHBTajZEJHhUVjljQ2wzaDN5dkIrT2c9JGRS
Nwp6X0N6ZXFSO3ckXkU8Nj5udW9WfSVycX41Wk1pQnpkem9wUTExTGBQKFZQMFomLURucFlCTm56
aGlkPDgxbW9RP0gKelVzPnB5VyoyVVlTZVR0dypMMXNaYkh1X3tRezxYcTdwNnhuXjZMdi0qPilp
PFZxeH1MVHtHPU1WI0xDPnM+bjQ5Cno8M3EkRWVAJnJsd3E1dVZ2enlwJns3bzFTdGdmNXYhVXF3
JWAtJG8tYSsmUEg+ayZKaUQ5PUp5NCZIfjMqIWVkegp6empOJXU7fU5fMnc9bG5FJFIzWl9Aa0U2
ZHk1PUpQNWojSmxMfHFvVVAjdittcFF6Q3lTRlQrc2lQLVV2R1FhY2UKekxRY2ZhJiF8I1k5e1BY
OD90WT83aShLPlYhbXgtUHwwTUghR3dNSEw9Y24xcj5kTG5acl9hZXthNmVKME1YbSpRCno7cilt
bVBuMnEqc3tyIUJCNmZhOHQtMlE0Z30rNFg/JSZQKUU8enViP1B2KFY7NHw3VG9NS2t1czkrdnRi
JmF0TAp6Pz9oUSlRUzc/YkY2QGd+RFQ0VzkzU0YybXwxKUJ4NDRQQXt1Mmw0YENAYjRfTVh1fVkw
dn1+WFc3cVh8VlU9dSEKei1oQmA0aDdnWjE/bnxBMHBKZih1YnFhLT1wSWB0Vzd2WWUmVkFsWSNX
SChtOW07enB2NUhhdXdXYCtuQztrUDI5Cno3S3BnTjBfcXJOVkc8Jml5VFdqVzJwNkdBTUFUbnhh
Rk9PLUNTI3MkWncyUkpDPmFSWl5vK1hGVVZGc3Uodj1FfQp6V21DfE9BeVNYSUN9T2IpcVlBZEJy
YmFDMFZOQHdCNnxSI2xUcT1MNyFSe0pWRCUzRzZ7azhQTyN3RWlYPDg1WUIKejRqc3RZTn11YlFm
RVVNIWlnUlZzJkRMP2g2aVhfQnBGPDBkV09feT5wNFVMbTZ1c3R4N25idDAwanlrMWBoWW93Cnpw
Rj5PYjB4Wko4Ukw8dW0ybERrOzswQ1pwJngycXBFSSg0UG1UMW1YWnB1JDwpXkQ8blpPK3FmJHsq
S2s5a3xKcwp6LWtoaTNsc35ATkkoVTtVcWQ4QnJEU3R3PERRPVRfQkp1TX1kXjtwcD12WVckMklE
ajJDKmUkaVRUSEpQXyYkUjsKejlGYSNtPnJmJEJXKk54fSFobSs4NCQje2BNQ04pOGJPTHNnUFFj
KioyT0dlMzBUKmx4VnZvP0p6ITZtO28xU3JBCnpaeHM/TUtAJWAzVjVwPC01Tjc2OCFsV0dvM1Vo
Qm9SRzZUOUt6KmFFPSNoMFY5c3tCU0hKbUVIK15tdUF1ekpUcwp6MkhjdHY+Xj1nY3NhO0J8dDNS
KV8zT29ZQjl0JHh8bTk7UWRWRz9XeDshUStUNUV9TjVEPSRGPFU0c0w3TiMySmoKelRiTDVpaFBj
STdsNHV5ZnNnalNAZEFSNHlOfndKLUs0UCUha1BvNklBZCZDbz1KPXxCJFFkMUsxVFhsSXR7O2R6
Cno9czdzX1MoOGRRZWJSeGZ0UygkaTh4bjwlQHdhNng/UnZ0RCNsQW5zdkp0dmJ5ZyltVntPK1Fw
dlAlJD5Val9MXgp6SEAjbzwlYjNNUEYkbkNZd3M7cXdtOEs3fUkjSClsRElRVV56RUs8SThsLW02
VCV6NWlYS2Z2NVMlLW9Vc1p8MVQKelRwWT9hMik9JX4wRyZwdkc/ZHxlRUp9SlV2ektHSHteMVMo
cVJkWXdQbHlRPCU0Jm47R1JXTT1GKUZQR05iVnQ+CnpXJHdBT152Mj0mMit0QEtwTFNHTEstVjtM
NnRNWjBfUCt6bTRDKVpCP3ZwVVRNN35QJjtedW1oLTQhbEhfQ2Jkfgp6UCE5VmVDP1EtPyZ1amtg
dSFQZmhmVWZNaFRmRHk/bD5GQHY+N3R2RiFlcWl6VTM8Wj89IzQ+Sl5MPmJTa0g4TkoKeiN5N215
Q2lXQnZsKldUJVNjNkcxaDs/RURUaHErWWpIdHJJKj1GSFo0MyhpJio0IUJQS19xISFBfXkzVyhY
JEZeCnojMWJQP1J5STAtaEsjQzAydigkTHUjYDdMclc4RnFhVGV6Wkx6ciRyZGRyKFZ0NXlEa29D
JHFkNT5HPz54YytATwp6VnpyZ2hOb3lOWGAleHZtMXw+fmF4KCh1Y2VLY3labVRJUTVve0M3VCk9
eCtFR1hWI1NmR3FZcXlxQlIoZzRQZCMKend+VTlFPkxDLSg8andzdTM9fnxqPFNnI3R1dkBrKXQ3
dX1sN2VefT12MztPVSsrd0VqKUMoT01WUlM7eDImZX5VCnppVzNUI00lQitqKmkpKWpBPjNmV2RB
ZXomI0Y0bUl6STJabGFpUGd3Z0NKMnNRajRTMEV0ZEhFOzJaVHRqfGJgLQp6RDdvdWxLQDV4IzFk
fGxCb1hfXzRIViRwcFk+TENKZVJfWSRWYWxDamhVSjxOV3M8VkIzQVQlKFk3XkswRnVpck0KejNa
MDYzI2JTZUY1KEFMNU9ZXy1gakxfPGhkSUQwIXgqJTA/TTBWcillUVFBUXZtSk1Bc2BOc1NKZ187
ZntaSDg1CnpaU0ZUUylqUUNQMGhxKXFZMSotRSFQJGQ8QnxOX01nJkhoa3N2ZHVBPXsoJkZpVD1J
c2BfSjNLbk1KPHQzcGA7Vwp6Wm0kcFU4T3t3dWp5VyFnc2gyQj4yfTV5TSFXblJrIXtIPFl6ZD84
JVBCKU93fExDWEgjQUVOaXpsSjI7VmgwPDYKeihAKDhaRCpwNWI2QmgkJGVpRUV3Zld5QnhhYW4q
KmVyTXZJMktAMjJ4UmA+azNVRDB5MD5DY2RFZF9pQXlrPnZ7CnpGYVU1NWE3cUFlYUJCdExURUo9
T2hhPiMhMERPVkx6ZDh3SHRaUztrQUU4d1RabT0jO3FpaWtNeEs4ciMlYDZmOwp6dmklZ1lrOWYh
d1pqfktJTTBwcm5CK1FaUlJpWHp6MmNtNFNeRSp6cTUyMGlyZFlpdmxAODJgNlAjNyVSQTB+VH0K
ej0+X2crTHlAeCV3TG5kUjlnJlNpJjB2WXR7enU5MDkwKHRhKD4rWjBQSj08SkhyMVBXcjE7MTJY
eTFeSzVNVXdvCnorV0RScmQ9eUhuaTFYTXw3QkoxWWd+SCQ3VmBNfm84TilVM2NuSjNAQTxtTFFv
RXBKbU9XJlYmPER7TmwoJHBkXwp6fEhVfHdhVmh2OU9VaG81S3gpYjNNSDt5YTRFKU9FK3o2V2dW
eHtnck8xZiZWbD13YUhhWSNKT1hAOEE7cCMxQ2cKemVMa1dCez1KMHV4RDs+PiplOSttaUgjRTBJ
dz4lZE1vdUB+M1VgZWE5KTRTQD9sTkd3KHVCPmp4al4hUGYmOXV+CnpDckg3amlBZHJGRyF0SU4/
bmZucE0xUFRXTlV9XiQtdyo1Vik3WjZQcjRxP0tjRShERGtOYi0/YikzZEVSKU1Iegp6WUk4LXhF
MFBvT01OLU0tQihWX3Z5Sk5wJjlQNmNrRnNtYVY0VUBAaHUpM31oOXtvRz0mTmkwI2c1RStWQUNU
SVgKempxdil+QUZZQExwTkp8cSEoWCM/biFZYGFQfDx8djc8TntvMGtHeH0kelc3dlVEU3gjPjtZ
MUFIVndwK2hiNHtoCnp6SiV+akFBKU8kSz0mbzY5cSluZEpqa19SMUs2Z0dVIWs0MUZHbXRzPz1r
WX47RCh1V154V0d7WWMmWGxZKFFnWQp6VmdjdGhDcE1qYEBiK3N1SFBwSy0pQ2YtZEMqTU16KElG
VlNOJEBYZzVSfnxgKmRfY1ghSHdqPTkjfnVJVCFxa1oKejJtWEhRQyVCN2h6JjBuanFNfUh+MH1p
cXVWMmRfPVhlNnFNeGNUIWE0cnwyT0NweG4te3crZW1DWW08PUZrYkIpCnokaCExVG5OPXNtZUVQ
S01YQ1EmUjdvbFAkSDI2VypGOyZNREtGdklfJmBAPlJXbSpzOWExYVlHZjwtbSQyWUhCUgp6ekcp
OXFuJXZwYDJ5UCtJUDBARiFyMEBzbThNRSVuNnNfdDJ1VEVpX0h5MUQ3dEttdjhFI1AyKE5zMGxf
a3xvOHoKej85Oz5fQC1CJlFeV0dBRlhtd29vZCktSTtANmtRSl8/S2FOeDRYXiVGNlp4N0BhO1FJ
Q31zR30+VSM2VW59XjxmCnpgXnxUPHpqRFhsck9yTyVqIThjPTt3I2gxZjg1c0hmfGtLfmAkP2dJ
PFMwWG8tRG1JPSg7MTVRdlJFZX4pXnNXNAp6WncmWn5mVWR8dThHPjRUTUYjcHc4VGVNST1sQXBQ
ZH5GV3lMbChaY04qMXlaQDVGREQxcXdacTRIakN7SXBkbF4KelAzS0gmWn4rSjZIdS1+eFB2V0N7
ZURDMkNFZktmYUo/RjNDX3FPblJlfTFeOU1mWm47aHRLITlOJmZhYDlYYyM5Cnp3Xko/Yy1FMXpF
PXJvZFp4Yz5hfTlwUHxlZHxTbz98N3FnZGlJbyUycDwtZlF0S0JqQSN2SENLdCh7bW92RSV7RAp6
cWw5dWpqUW4yNkhpU2dPP2p1YVAwXn1ZJXB9PjdkS0RsNUd4PCNQdUVPYnB3KkhaPVUyNTc0U1d4
WlpxVGdHZTkKengyLXNQP0Ild2B2cz5UbnAlZEV7Rz5SdF88YXAjI01fQjUybytQYG1RQ15zQiQ1
bX4rdTQ+Q3NLQ1RFTT95OXppCnp0SjtwYm4oZEE+dlEzTW0zYEcoVCE7eDd9cUxATXxYeFhLRFdi
WDFgUX1geWJZUHQjWkdVIU5SM3c/Vmk4YFE4YAp6NSUoRjB3fXZoUkwlNCloQzsmR2xGJjJIXk00
fVopKVd0dzNJYCpnbWE2KER3PF80MCNeaUswQSl1RXVfS0dtRTQKenkkNXNvXkd5KGEwUX43fFBo
dXM0JDVYcUhLKHJSVVNTaU5DVnJEWXJNMDN6X0AlX2UmWjcwRSFkUXNqXzRMVythCnp6VDFjOzJ0
LXpCS2FBT35va3w/MS1FVkclUkljN0AtO0NjJmU5LVQlPXc8bGYpUmAhZ2FIQCVeYkQ1ZTQpd3V3
UQp6QFAhZkNYbVE+fWBjRmp0KTEtZS0pRV83UDglKkUhcCktNjk3LXcjdipufGM7ZEUyS0UqVFhA
X1N4VjI9WDNKTWkKejF6JXxxXllPO0JuPUReWjU8bkolUUNvYWtEKEUwYHlVV3pDJHJwUChqViFT
WFFxVj5GQXo8R0kpQW5wcitsbnJoCnpZUGBqUCFIX1JiKE53TCFUUWwzX2pjcHJ1ZUE/QylKYFZU
WSo7QV50aDlzUH13MEEkdytQKEdvaVQ5NmVtRFpMMQp6ZWF8eU9ubldmKiFpOD0jP0pEfWk1SktU
NjRNfXt+KDR4bVBJOzNuSSswPSpeeGYxdXNYNT48Vm1TezFXOT5OQEAKenB8PVhPIUxzTjFSd2hA
MW9QPEFNRjU5R3Z2TX4kcVV+fnNJYVEpe3cteXVKRWNVfSlBPH5PVG0jeD4lV2RuVXcxCnpoY3Jz
dTU5QCsxU25fPUtkJWx5OV5eRWwrPlJpZXpUY2RxTVg9Wk9PJDVyaUlZcFF6QWJyVTIyQDRSVFBk
aFlkWAp6RVV0O2BvaitmTmhudCRKMColbD5FSz9PMmxHcGlrWjdhMHptd21NTGVhbEJ8MkNtOX0j
V00pPGwpKE9saTtZPEoKendRb1NhVmU0Yms4SEFuSyFianp5a3ZLViFnRz48fjZEPmdfPkppKyNX
Z1QxSndSRjUrKjEwdipqfEpia21Fb35ACnpiUU4mbHd7IyttUDtuS25zZnZINERuM3NNUHk9RnAr
UD9JSnJjfmlNPTJXbl87ZlhUS1NAQmhyRl9hcEE8OVNSdwp6Mjw2PXFBc3MlVXhJU05VJCpeKzRM
d2RNd01zbVZRPFVtLXRyVHxzQkVebEwzcXFlRWhmTCg/Q3N0an1ZdjAlWWIKekNKTUtFKTFWd3Qh
KE0wemclYW1DRTlBT1JuVy0rNFAhfHg/VXZkO0JhKzFCaE4ldztLPmNVbHleOz9gczdHUW9DCnor
ZDN8cCZeU09oNn5KKVQ2WHo8fEorUjBCZmRYMWMkcFhFRlJwVlpDPC1KekghYTReJDBINEM1eSNp
WUd2TG9kKgp6Ki0/Sj9NREhwbSVKbClGdVNwfmNYY2Fub1dAcD1ZcyE/andYcSowTllNJjBBMyls
fnxDUUpLYHslSjd+Jl9gM2EKemQ9WkpJaz5MJkArfmsxT1NRVzZRezFiZDZafkZ1MipueSFCTDhW
OSQ0b09NZjI/Q25xYk1aN3xKaHJ2RVB2Z21GCnpKe0YlP2VsTDVqbWY9eW02JWt7KktmdDNJKVBa
OTheWTh7XkUxQlNIWnsmU2p4azcwfTExRi1qdVlsQlF4LWllSAp6WkBSR0RIej9HOVFGZ1oqNC1B
TCZQM3l2JC1xWCRjOEYtZFl1fUJeelM9IypqNGo+ciMmTHJRPiskS3ZHSShGSngKemFFTlF1RDlJ
ISV6TmZqcyhEY0ZhTyRGVWU9Vz4wNmBOcDJeO35UP2tOMjU4bTF9eGY4NV5PZXgqR2NTJWFrI2ZA
CnpAdX15OXY1fCVReihMI3wkTnA5IUV+ajhKXykxNVVmZFAjMVclfjZPTiN2RHA4cngjJXg4cUB5
NyVuPCohJCVAbAp6YDc+N2BSVCtgVy1jbnpHQG5XPzktLSFOeXxFPko1THRWM1kpenN7ZjsjX1kh
KU9vcyV8QX0xdEZNZyVsYH4rIWUKemtkdDwpIUx6QiY/JHJIdzNxd2ZMe3JIRV9aMHVUPnhMPWlO
Wlo3SENHe2xVfV81TmhhTWZkTjxEPFAxcUchV0pjCnplZj5vRGQ4VEdQVWVON09IVEdtVFk4I1ck
LXFaaWFwSHA/KVU3MHB2e3RyYjBfJkR3KWhMUlYwaHRaSmc4dj9OPQp6ZFRUU3RhNnY7Zkl0aEJq
SGl7MWsmJXw+WFRzeGhTQVNUPnRMe3Z+VzlQJjxWRjZpMTZaLXk+VHcpMXRkJl87YCkKemZvPk9l
djVeWClnKWpoTT8yY2A9UD03e0RPKCVeX3VVSUpJdDJOIW5zRE1JPEUjMThTcUpaVl9udHROKkkp
a3ZCCnpnJnNEakhZT2Z2emRELT5zPFd7ezZaVmVnX3BfI3FCfm1gKmwxUWRhTGwoZ3p1cGJOeSQx
ZlF4c0chazZ1JW9rRQp6JWJ1c0Z6Uzl+KmI4aGpvKnU7cFRkR3t6TmFqNzN1K219VkNxeEhJNShS
IT09O2QhKSY3aGRpJmd5UWBuQj94cUMKenwzaChRX2hQMl5HdShyJiVDPXBFbG1MdGBRU2EtNT9e
bzt0O31IdDNLUHw/KmZBJVc5MEsoTDhzcF5Ce0FveV4zCnokeypibyM+aWJeKmQ8Kjc1P21YKkY2
aiNvTkEtbzV1SXZrPXJNfmMjKnBfJFUxQm9kZW83aEN0UEZ5RWFxbjhrTwp6P1BHfCQtb09YYVIk
MyYpY2pWUiQoZjZ0aHh+QHRJJEBQdz41OEMpNClgWmM8VW5iMn0rUEsmVyg4ajN+cHA5UlAKemE1
N21xVkJXMD8zXyp4IT5qUHc0WVZUKkx5KzBnRTZrUWlXZFRqKUM5PS0wMSFVdzdTZno8UnpVRTFe
KVpWO1AoCnpTY1MlSzRCPC1kMnFZRCktQHdge2Y8cDY7aUVqUnNHY2lUMlhvMmo3ZHFqXnxDQHoq
ak5zb1FxUypTVXJJLWJlXwp6I3pCfDRgI3Utcng/WU5sST4qbD1vbnNKbF51YGd0YWE5MVhPKFFF
TWhBUklfQmN1WGJxfTtDN2J7fl9BbiUpfncKenJCaC0zdjtLbHRpfDt8LVJvfXlVT2xuX2BzbHBE
Tnp2WkgyZmpBPClyY0xmT217LTIwJnBke25hPzM5Mkdmek9MCnp8NylicmZTd34rWF8oPkIrPUdv
cnYybm1QKGYmYVg3RFhJTUd9JitJUXRZPlVpU0pwIThJVyVzRlFDdk40MjIxPAp6Z0RqSWskcThI
O3szdVpIOGhUeENpIV43bjs5NU9aNWQ/T0R4eUl6diFVTWQ4K2pwVkdsNXt9YFNGMEUjUXU9UiYK
ek52QGlYVElodnpVbzRfaUsmbEBJfDUxTlpZJTJNM1ElTl5OX3pYIytQJVE9JEkqM3I0OG9MeX1x
XjhDJUErWFlhCnowaz82UjVWcnJxTGZ3WHNwK1UtVlRpKCk9ZVotZiU5KX4yem11fS05NXlyLUB3
UUJ4dEk+eH5YT1h4OTNPdyg9dAp6OFNFaTdQNTB2O2t0VVJoPURUaEBaK1VIRlRVOCoqOF5AU2kr
OE1kPk1wekRQTGx0RVIwJml9fCRBN1deSXo4V3kKejJfe3Z3MXAya2xoaD9efU5CM2hCRzw7JFph
IV5ZNEByeXVeQUZ4PmtWLU1AVVNnNkU5PGBJZUM4QWZPamRqZGg1Cnoya2B0bjZKYDNHZ0htKHhx
SFk2Q1BFeCErNmBxRjNmfWw0QyQlP2MxWmYmKFo0Xzc9MGsrZj5iQ0ZTRjllNGdfVAp6I1d2NHsz
YGx7WGY8M0RVOVUrTnpoZT1HX1hjN35iJSljV3BxVGNoajlPTiZvenJkRW1lQDBhK0xWdXY1aFI4
S34Kek1MQXMxKFp1JUd5TmBGM0w2Jj50QVN5biZeNGxMcjAtNzRuYTkjXmtnPk17UkBMSlVsNDRy
fFRTaWE9N0QpOUo7CnpBMF8pSiQrPE8wYjglZT1lMjApVDJPKUQ5VklmM0NLKmUjUFRUeVVwVzNh
cnpzUWZsfGdVfitIX1pGJnBnaDZNfQp6eXhKTyVacEN6UjFMekk5YTA9KT9mXipTTT01IUVGalJW
X085Qm9eMUBZcCMqNFN7SDhDTT8yX1plPGNnYG9yZWsKejZKJihnQi18KWNmRncySWRJMlFHO212
bT4yVWo+eDFhajJxOzIkOWluKVY/bVY5R0I8PDBOcncyR1M7MVUlNW8qCnpBb1F6QytDOX10RF9X
Iyk/PEV5Tyk9JjhfPG9iVGtrfjREME5ldEhYd0REMiElMkl6NHVpPHt3VVdQYG9eOVZVQQp6TkUl
O2BuaEpgfiE1dipKTlRefDU5LUQ0YzJgb3YjLV5LLSFiRUxaPFJeNnI+bmUjJjNNdl4tdiNvcU5i
dV4mZkEKei1gVmpzdkcwWVdKbn4zJUJpPGIlQkEmNVFLQjR4ZWhIcHJNPWtOXiVzOHooOzVjYTZV
Uy00K1YxKnpIKWFyZ2VICnp0cyZEQjhrfk58Mkx8R2JLd3UkQ0pSZ31gczBwUipwbHI5THk8Z1V8
bHw0cHx5JWpKLWgjXyE3aVd0SlhxcWQ0cQp6YEx4RStgckN3JnR1PTwkO0c2Z1NgXkxEVzdiNyRR
dEpiVEhhKF9XUCMobEFVWHBgOD1jJFhGWnpoIWBYKjBUNCUKejxwNmdSZE1idkU/KzNXPUhvIz48
cCMwWWlhNXM9Uns8ZztkbkZDemh2fkwqVElDQWBWNHNmSHNDVSFRIThOTWQ9CnpPOW5XaXQ/Jmwm
dztiUUB7cSRSbVo8T249OXBDMVBBdy1SRFBod097Ki1QV3dRXyQ3eWtCbzB2Qmt9cSRORjYyUAp6
YUtPYHNOKipzZ3Vzc3MyUHM2Z1Qxbj93N01yY1Y3Ul5COUg1Xz9vZGtQKXFNKHUmKmFHYDU8K1JS
RG5tXyFiRW4Kelhsb0dKUDUwJjJWSm96RVk9SV8oY2tPWVozWGdCbzB8OD8mUDI8ZCstdURoKl5T
Mnt2azAqTjZrTD1CP3A9b0N5CnpvfGloP0hadWg/S3FkQyFuVUdVKXVMayRsTDRlWG1XZ09PZ05x
I307KSVwY0IkVTVqcUFhalo0VF94P0loZWwoRAp6ZXFYX34yYHVOM1VjbnwhJW53WDwxO2tXOTQq
NkxvPGwrXyRlXn1oamdHfHRfKStYYHdZT3FaTjZ1PChfZk5XTiEKemFgUDVmJkJCfFhRJjFgISt0
I1ZOK3N5dDhYPWBKaXF1bWFoRTBkQG87bDtacyFIYHM3KnNtVld1fDEjbWZmKGZCCnpHWHtePlF6
NW9yMWVFfUAwJXFFVlgjV2dtLUxyVnAxUDB2bWpaeTNsaHBQfGozJjJHSXA/bDRSe1p4bFVyWjRg
TAp6cHlBRCtwKWhGcDJ9QipoRjNmU056NUliYT1rJk92MGAhNm9GWVlqUUtzRlJNUlI7Mm45cUZY
Z1o2PmpHe192MnMKekYpdEZtJlVkSCNJPE5ASzxCeCRyUX1mNVYrYSE3fTx+YnRrWXtLYkoqY2Z0
UkU4TVhlZDRqZ3tQZzd5NCZWKWNUCnpGKjdAPk5UPXN8Y0chajh2SWsob3tuKSQ1UHlFdThpbG9k
I3dDaFN9eXxIJFk/IX1VZTVOKzZJSVQ4dFBRRH1OXwp6NXcxISFVQiFSSEM9aXAybXstSDRVUmwp
aEN9UyVAVHxpSmk4WXJxTXpuel9QcVchNGUwYmREcmtCPyVQQk9mfmsKeiEqSClzX2V8I2NQZiRw
bHplXzxjWDU5I3txMmJLcWVRMEhQLXw9QWw3cW5maCUzdEpGaENWXlk1fDlDa2U7dFVeCnpxeCtT
YVZhdzZ8WDJtNDJ7JHUmRmomJHNZTXckUSFMWXkhSEdyaCEre0AldjZ3RiVUSDNYYkEjbkA/O01L
dXs7NAp6O2RWcF9BfnMoOVV1bn5HdSp+WGYoPkghb280eU9sTX10UFFYNitlayZzKSlJKD1UaClC
b2kjVVJtYTJwP2BfcTIKei0/M0dYX348KmY+UWZMdWpIJmQqKV88ezh8TCFYT3pmRyZJaSpENkVi
UGZJO1lTZjNheD5WcEdwbXZSWTAkUDc2Cnp6b3U8WnB0Zy1DdEk7VypMOGxQZ0hibFp6YFMpYmZa
Ym5FK1A1ZH5UX3oxYSkofFFJeGxoXyFzOTkzNGVudzY3Qwp6TkQ5V2V0Rj8yK1RxKEJuSF93Q04/
R1ZRcmUzSVBZRWdyZVNxcHtxQVA3JjRRWH1fQT9kJT4xOSl+dEJ7Rz00ZlQKekl6eio7Y004KVZy
IWtZKGYzZXJza0ZqM3piZ3UhcXApMmVeZ0RkOCpBPHByYlU0KCFkSXxFPU1aRXIhcGhJc0hUCnpj
c2QyUSQ0enIpO2hzOVQ8fUFKTV9iY2wxeGJkUjlfZCkxXzF6Jl9sclA0NEUrKEltJHhjOHp8bzk1
dSYlVlAxfgp6JU8xUmQkP208WjI1MEJudGlrV1A0flJ7MThVI3hvKlBMQntAaTcjPyZ5PTxNKEtJ
QU80eWg/bGZza0hxOXh4VmAKeio/WlEwNCk8fUZ4R1AyWGJqZHclIXZqXyUwU3VTaE5raTl5cSUp
OWhXWDZXMnV4JTxgOShAYDBObCNpKSpAM3R5CnopMnpRaERQaGtqcnQpWFJhampIMXt8d01qSXM+
fXlyTXhMYjtuT1MrZVNEXnY0T3Vvczg5RytzRzxsTkY4IW1VdAp6ZEE4M0RAZlBTb0Q5fHlgK285
YEZWbzY8b2sheUFecDJ2Mk5ZKzl3akZgZyZ8YT0hSDBfO0xlZCo/YmU0ey1+S2IKel5FYllIUzln
VGhuZjc4RV4lJShTe1NSYms1dSZHSCFDbl9GN2FEaWVib2JKWkljOWdkbFowSGdnXzhEc3NBMUlA
CnplKzF9c3Z1ZnlKcSFsa31tU31hKU9vbnZTe21sbilqdnpEa2o+YiNFeHI/eE1OVlNVKXgpOCFB
UVY1O0UzeFBCQQp6QEY1REpHeTlCSnBNNkZZPnBxa2ZVVDdkXzc/U1B0IV5JZUttfmJpLW17PUVK
M1BvfWNNSGZkWm00dlVxMkAqRWIKemBHY1lCJHFtV1hKeVdsVUtiSE5mNHxKQ2E/fTVRcUdAel9E
d0U2eXVeQmlefDcyJTVTZH09VXpMR1V7JHV1d0FPCnpmeihzIzhueCo/aT9FfEgld0IyfVBRblZL
RzZaMmxtUV5vYi0tezBZSHMrUUgmI0hAYUBAUSp4cX4tTEoySFl+dgp6ZFQ1K29De08xQFhrPGM9
a3o3WDZGb2h5bnpuZEl6MiZSWDswRjBSIWRxbWdhPXYwZFo2MndGODEla3RoZ3tlMnQKekNfZ3U0
QVJlU0RQU0Y/WG8/VmJLeFI3aU5ROHZTdyYyWCNwMGdDJmZMUFQ0OEJmOTBqbHBTT01EOzJfJV5X
Q1VMCnp2WVVgVGRPczBiPXlzIXd0d1E0enY7a3J0bys+bVUoTz9zXl50dzA8M1R4fC1ZQVh1bF9l
YyRIdGIpQEJjVGt1bQp6OXRyJl5FTiNMSmNvdkhXQHR7RE0mfURRdlZ6JHxgcjRYQWw+SjtJeEst
d2NmWTd7K1FpXztzPCRaQHh9QE5YNDQKel5AbUtIYTI9ZlNSdG0hTiZySEdERFJhbGM2WmtaTmhI
JHx7Tn5KayNIP2ojfkFtfVEoalZ+aG97I25uSGpjKChnCnptX2Q5PHVZelJ+ezhSNyhvPmllSTN5
RUo2ZTJ+bVYhWXxvMnZXRHtPeVQmeWB3azg0N3MxSWhYMnxoeCZ4SkA5Owp6I0NMIW1TTzJXR1FV
biFgQnJeNnxKbjhvbWc1ezVoTWRlYURfYVB4UjtSbmN4U1d1O2NzYTdoejZ7MDBoKzxAMjAKekBO
UmB3Q3xnUnRjYVckRmQmaWNCaGY8Q2ZaPTstfE12fXhsaHJLJHczPW1ncDY9KGBWTFp1T25se3U+
TDJufVJuCnotKGdqSGZYdHh0UT5iT1otbk0+VTRZSn5WNFojWVpQTnRNUS0oQE4zZldhd3tIaGQ1
ZllWalo9U2BOSCVxNU17TAp6JF4rMDgzbzZQaG43UkNkIXJqazFEOTx9UWxwLVJjJjJwaEpxRnpK
IzFXfUkoZ2JRSkBMViojXmBoNjQ8ZGwkZlkKem1KKUZ0T1FBfm0wanc5ZHhEdGVOdXhUejlqdzYr
NXYrfGdYQXNINyNsbGAqeyheMWRmKnppISYydFVFJGV0ME43CnpVKE49M3ZMa3haSHlwXj9AS0Fh
ZUlYdSh8bUVMVS0/eEsqezVJfXVfJTdAeSZAR3pvNkZRK2FTV3Y+dTZNQS11bwp6NTBlVGpNWFEh
QSUmWld+V2khSEtXMzkkNjZyekNYYEU+RHgqSj1GNypPMnVQcDN9dWBTaSM4e0BiQ14wMktnYVAK
ekdiaGdpPnZvSVVrNHFLRGNAPkppQUt0cGd4bWVfZXRlOCM9dEpzd3NgVzl0R3ZIYmA+bHZ1Y2xk
XzNZfjlDR0B2CnpXezE0ZWBGOUZAMjhPMGxGZmBRfDB0M2NGemRjaDcoQl97ZEFnUD5wNFZeYDdl
Oyllbm9scFdwY1I9TF85MGdqVAp6YUVOOF5OTVBoe1NVTlluWlF7MChGWUhlYnJRbEpKJGNCTHg+
fmQ1b25yTF9jZyVaK1o1UHcrPUU1S35Ga0BmYlkKelExSlg2KVdGYWFQO1lBcXZsUk1na3NVLWla
PTtCOyFsflArU1EjUkNHfDdPXzFgditpTW9feyY0R1Qwb2g3I3xhCno7JThxeUthYEFuUEFaRz1z
dmROTyFYTXh0RGNlcGEpSjQyPThqPiF3Xzk5ZWpLVkQweihDbVcyV0VHYU5jeGpZfgp6Y1A9Qlda
Rz9yKGBUV0ptI2VEdXU8V2hkJGIkbCVVazhQc31fQFMmNmxlZElwTlB8ST0/Rm5FRlBLUH5aeStJ
JHwKeiRrUFQ/czVuZD87eD5PczhDTFB9VkN5aD95SnEoSGV1MmdeVn5wPmJ1cXhzKCM7ZTllRD4p
PjxWUXxFVTIwcUJ+CnpHa3lyPHA7VXxjX3tGWEcyNGM3R1ZfNm1AIVp8bG5oN01rVTN3elFMOygj
YiNSV2xiSUZSbzdmOTV1LWcjN2khcgp6eGlpUTNRVzBBbSNCQlh1dFkzeU5DZylVTkkhQ2JOa0hm
Pn5IfkNeLXE7YUhBRX1zO0dvWCNpdDFkdU1fU1I1dHsKenAtQjxQZERidiU/V20mPVctQTw1TzY5
YEdIJS1VdzRvVn5qTExITUEmcXhTcSNrV24mbz55bFRjN20yNUYmSVAxCnpEJCspWHokKEViQlRk
dG5gMURQeTY9VSQwU0tOTlo3KGJeQiZHKm1SZ2FRR1ApI3R1TWJZRFg1V0JKVkhmZ21nMQp6bUZj
cDljO288PUZaa2hgOz1eMjYkd1N4TlUpMS19Z1dwYHdEISlwfTwzTHRYMSkpSVJGUUU0S2NKTWVW
TXxHI2MKejRKWW4+MnhEO1YzSnZqNyQkYj5MNH51ZClkVTMzYzAydE9rc1A/QiZEXn41cyQqV2Eo
PW9ZYUI5RlNULTh8dVhRCno2dCNkaWEwN0MyYD5RYWMxK1dOSkJ5MDVZNnJteWY4OH43P0QxITRD
LSpgI193Rk8hcnB0ZzkpcW08SDVxP0QhLQp6bm8tV0BJSiglPTZWKXY0ejB+dDEqPzVSZ1YyX3Zp
VzNkPkVaWFl4WlVaczZoYE8hZGhSNDZMQ0dvOyUlN0dyZEQKejZXT3YmRUM2YUY1ODk8UkxSTkFj
aygmcllUN3M4bXtpfkhAYUZoflApdjZmN2A4am9IZiFzYFAxWTtRQ09keTtrCnp6VXZ2ejV7OG8m
OGIqJCptM2FNPm5uZX1ncFZveigoeXdJQUItJV9mbDhzI342dXZBKWRVeT0zR31lK04xbV84PQp6
cDl3Z25UPG9NMyR1QEV6VmtTTUUmN3pgTmMlQSVGYG5NZnFsfWtkYmM5UHZUbnRXKHB1P29LPnZw
NUQ1UWVYZiUKemtzcGpnQzU4VDNXYU5BdnxFdnpDODc0ZTc0c1I4Y2ZzSzlLMz8kXzdaVkthNVoy
cFdTaG1hO1hQbSF3PFI3WSZXCnp0cXdUUiVralFZdXUpK2IjPnJWPkRRYVc0LXJoekk/RUZ5ajNZ
TGZzNj5RIU84N2E4ZUNeJWVeOVlWbiU1WEN9Pgp6V21uVWo9c09qPlVGfWlfTSFwM1V2clFPbFZg
S001QX1DcD9QMUpnJTxmbDxzNmVJWXtjXzk9UkRDN0p1c2RNTTQKempAeUpDbTJ3SyhMekNuPDM5
bCFGdy1KNnB0fCtOa1VLUXZVUVpNd2tfVG5Bck5GdDYhbUU9O0s/SmVkRkJGOS1eCnpDPyk7WUc3
TFp7T3lRM3BYT0wjQ2IwbjNRdU0zemglPEp9I2ZKUVZkbWVGaEFoVypwKklQc2x2RnZxUHEhPigl
NQp6b0RRLS0+dCltbG1+clhtTG5sWlY/NXplMGRVJFJZN0BUJm15R2dmIWN0MSNuO0JKeVV8Mkcm
aVI1PHQ1Wko/dzEKekpsJSNiQG85JkVVQGlrWnl0e1E5b2BjcGV0bl5OOVotKmBoZyFAaFk5Pn0o
KTVnP3FoQHVsfW8rIT9eK1Z8YlZjCnpVOytGYlB6UUw5aCZIZXpgMC0pUE1ORXs1WWBjTU1pUUhA
ZDFyKnRLQmlWdnY9Tk1PfVlgZE9wWCZ3bHpsJnhzZAp6YFFtKUN4KmJ1aGdOQ187dFQySkg8RE5z
VnhYPkohM31qLVNyQClqREY8bDF9Z24+d0lOaVpjdk9tVkUmR2N1aUAKekA8PWh0b1N2JHUrWCpX
e29KcCk+UmdtI15LQGwpOGNmNyFVS31EemVPNVpmMDlQM0BAUDFqKCY4JGItZnhHZjZ7CnozXikr
SzN8YDBIQjN9Q2wpbmoyOEMqd0dvKkxKQCVkWCtJVzFWV2VUTj9ebmhFX2pxZm54MHR3Zi1lYGJH
bERzMAp6JDUxNUtEbk1jaUMoODZGK3BFVE1pU1RTcXYjYmM4Xk5ubmNJWjxIZDdOQ2FrUTF0bFlT
U2JETmRoa2Bta2gzVnsKel87SVhTRm05TjlkaHU5YjIqTnt5IXBPcF9TPFotQVB8UmI1eyQ8T2pR
aH4oQUdwfHlDNmlQbilKcW9XR0VqaVZ7Cnp6WjBWQi1CVT9re2JXKjxwPy1xdEVZP0xTRXx1XnFH
PmIjU0cwJSNAVj9YYD0kQi1AO1M1ejg0aHxFVzF2OVJeWAp6YDBLPkFFaU0mb0F6PHlETk19Wk40
VFYla2pNbmxLeDt3KGlNbzE0IVQ4QnQ0aEdneD00dWJFalpvXzZjKHZnMTsKej1KT3lKclZCYms7
MWR2OFoqYyNSVXhsWmBjeUtVK29RcmBfRF9sdlRHa3g1ZSNRSTxhZT59VWEqRTVtZEtmfG9SCnpR
enRnMXphPHRuPyQxSWFfX0FKcSVsWWdKY01YYmk0YUhfKFghc2x0RzVJWVdWND18OUlrQUdDYno0
K0VtWD9pUAp6QndEVXc4YytTUm9AUH5kOHh9clBOa31USFBHNXZ8Y15wdkRpZU5tODBZUEFvTmJT
PUleIU8ydHA1OFBVMkc1VVMKejAjYTYyYUglPnBtYEJuZmA5bCVMe2w5JTA4amBaN3R+dGQ5OTlE
aXJON0FsUXR7JD4+eDZ8VFIkYjF2UWx8cTJ2CnpMSX1SUUBEPlk9JnJQIW1wUmMwb0V9ZEg+ZGBZ
XzI3KWxoU0ZLfmtheD9uKzFVX2RWPXRZSmtzRU5ufVdyVH0zaAp6PjQ/emhiMkZgY0RNYUl5cEFr
YntYZSM3JFhUb2s4VncrTVoxZXZ7RjckKWF2MkF8a0VfaClMVlNRMnk4VSY8UmoKejNgcDVDTlpJ
NFc+X0oyJTRnOSs3ZzB0JkIjX2p8d3c3LWsxQH4mTEghbj5Sd04kSjM8OTMxRkk/PlB7PVVwOGZy
CnpAeH1hVWo1IXFaQ25JeWY0eD90cUtAZ3cpZVclRyRaSS1Sb0BiZX03b0VHTEgqSCMtX3NlRWBY
d0JiP3xGUSVYcQp6cj5STWc9Ny1YVmpVQHhFTigjNXBJej5jKmwhdzAoaWReQWYtWU9QJEI4MEJG
RGRRRjFlelpCMGlDcWlnRUI1YzMKeithaXBaZlhabGs2dmhAbyRNZ0BBOSYyJGMkfFMzO2IjNipC
dCVgJkFUN19SQkI+eChPZ2VTXjVSRTtZY19HKVZvCnpId0I3PlFLJHl0KWVLeSZUI30qPUpWZkVG
LX1lKyRPZ19ScEBRRkRIWkchYytIKDtkVUxea2g+SGNNeztLZn47Qgp6MGdMWm9CYWklKmBsaHJg
aFRYb0ZvaWg8al92c2dzKE1sdiFBUis0ejdeUUpiS0g/bEcxc2A+dk5wJE1qTF9ZYjAKeko0c1ck
YCFBVGR1b3clSjhaaD9lOGdqQSEjPHc3eCEoRilzKXlgPlNGeXlLSGR5QEViKn5pQHB7R1Ame0de
QiQhCnpiK0d+dSgmUVNfa0I4bzd6MXJsVClyOEEtb09kZH0oNz9DJl93MGZnMjhQXnk4cnhQIzEk
bT8tNzcwaDhMKj00Pgp6I2tKLWRzbEI3RVZEIWl9QDxebFBETnVAeU0jJnJIT1QwRC1fZHNzNGY0
M1VaPEszUUt4UmZTUVFobkY+RlUpTEUKejwlYmdTXiRsKUM8M3padnhtcnhSOTJXNm87SVVMNigo
bnVRPXx7cjNkaH0xLTNyKTlWV0FGT05VOGUlS1luZCN8CnpzSiVwNXJETDA3Z1Y7Z2peKnFAUVNj
OG4+O2xXcWRHOHFzcU1mI2dYIWplbnpTWTZANUNSWC03RXcpQy1mPDRXRAp6RzIweTx3Qn5tMFJu
ZGJeY3J0NU9DRV5kTWJOcVlOe0JWcVQ0UFM8YXMtXl8qZkdzd2U4flJKZ2lkPXwyYjt0UDYKeiNX
aiQpMD1DalNyKjY9fSFYd1NBajgoNWstIUtUNnBwVFFxRmsxU0JgYXdeemgoVVEzYEgrIWpScVEj
WFIyPmVnCno9an1QNk5eamtCTFlkd2dSUjhlQmVrZHh7S19tdHZHcysmTitueFIlMSRhJk5GXkBE
T1AwQnZUSHNaKFBNdkdFKwp6S1JyaGY4Vk5oZWNgel8oUXBlajw4aW5xczxjeXcpVm50Z1A8dUJt
bjF1Yk5rYE5PJHVAVE89cHFGbD1eJXNXdEQKejtEY3VeOHxfUEJObiU9OTVocFlfKGoqSiFXe30q
SG18R0hkUHZteH4+U1F8REZlZnhjYENfbENodzFuaGF5VDZICnpRezlLZ2NobEp0PU5rbU4hLXJG
dDxoNyZ5cE4ld3xMajgwdj0rblAyb0JTOEZZeD87XlRMMTJ8eGJDaldLSGQxYgp6fE1UNDdKbiQ5
WkN9Xzg4UG1lTmFYSF47dE5+S1llN3UycjlAZ2QkNVA1O31UNTBwPyZzKU8xZXRNPjIoTmg8WHQK
enRTV0ZqWXlYfVR7Y3VZUTcodWx1WGdDeTlIe3RuRlFxe1kwalpVPiF3TVMpMVI+ZT9MTHpuYjc4
cEZRcDxTc1ZSCnpaVSgoVDJrYGY/cF9xRW9pMWpPYV4jZF9PNCtidUZZai1nTipnNDEyRVFAIT16
P0lPODw+VWRIOGNgcEB0MC1AYgp6UG5mTXIqNiVDRShDNkhZeFA7d3dJIXNxdHltZ1NOUHBmdUZw
TGJYMlVja0dwSEZSemJtbEU5ejNsKVZ6blBrS2IKendPcClkN2ZReWQmQUY8WDhRI0cmKTRjPDYl
dj5iVW5JM3I/MSNjP0lYY0xYVGQqQlVYUl92MG9yZFRrSnFLaTd1CnpyeDV1SDBuNDtxS3gwYkMw
NlFZR0lvKlNGMXR1X25ZX1YyUSV9cHVoNGBURVI7X2p7Q3pROW57RiRkNzQteHEjTgp6RENoWHIk
TX5VfSRoP0tqPVY1TWRNTDtlIXM2eXNZQiVIX0VpMERHKiYhczlZNm5afW5ocXFCRXVudn4wX00y
NFQKensjYnFoeG5OeFV7REkpQHN5IWN8bldMdUlLbFoqVD5nX0RHbUFWJnBMKyZRUnBpQ0RCJDRA
TzBVWkpIZS1rbyg5Cno7NispO3AlXjIlJmVwdkVgRD8tdSR2RHhhRCZZckVkSkJjU1YyQWooayU+
fiE4YmhKZXBjY34xISklSyFySnRfZgp6X2F3fTB3YlAhMzBmXiY3OG08JH4xSHdDZW91JEh0V1VO
eXVhZE9BMTNZY1QlaExvYXZIYTJEPCowVlVoQ3teTSgKelZfX2BMRV5ASlRFejBPWiF2Y3daQz18
MWM7O2puVUdfRWpedzFnQiNlbCpPX2RAP0taVjNEd1g/Kmo7fk5FbT45CnpJZU9rNkl9aSY4Unpk
Y1ZlQXdyX1Y7MGUpIW8/OXBZTzlnRD9GJXI4YERjLWVOXmd4SiZDRWVMVG5xbXAteVN8ZQp6Qkxf
KHJ3aDR9VHRWbiR+aCVacyFIQmVZfFR7enM7cSg8NWwtV1pfKGhyaHkxU290P0dEPEtubHpLSz5W
cHRKRVcKemcoTWB3S0ttaUVfdndVcV42KTVteENqKVJwcmNxc1dPPXxNITk+e2pmYEJeWlFweSZh
eHBxKkl3RXEtfT9wWnNICnpuN1VfZ1M5aTQteX01Kn0yc2RFJmBTOSZCeC0+a3hfeSlZU0wzcF5C
Zj9ASmpJcEUpM2olZm1sY1kycV8wMitveAp6NmBJZ3g9QG9zWWJoVmhnQmZEQV56U3U2eVJ8PzxZ
dTJ2PH1EJj5XZ3hNZUw0eUZgemM4RX0+YzQ8SmxeJCZ8PU0KelhBSVVuJmN7KDEmVXpAcV5CKy1D
d09+U3JUUihEcGlRSndmdz9gJG5SPXV+PHw2I3Y7P3xeKm91emM/cm9VRDcoCnpMS0UjTThuI2lZ
V3lKeHFsOG8mJXdEWFlLJkZfYVB2YCllYkhTQmx8VldNWk9hODlPWis5O1lzNndQIW9ub3pNRQp6
aGFuJEZFcj1zSUdAMW5vZEspcSo/RyMpbHxCZXskXn5Aej8rO3gmZEolcSZIUE5BTnJQejRKMEwk
RDx2VjtKPlYKejFIZl90P3w8T0pQZUBeRWorK0RORD9NVnYwTXs0WWhCS000cTJ2N0l7SEZ0amsw
SFFCWUJqVlpPNkdXOWxERDZACnpDe3x7KmJ5QFVFWnx3UzRufj18S3RQTXw3YG1STlYzSjJJT2Im
cC14akEzPUw2fVFPQEVeSF9aNTVrQmBVRVRaMQp6M3NVK3pyRjc3MnFfbF9TVXJlZTBsWVJAbTB+
VUd7N0o4RnVnKlE1c1coKWY/VmQ2PkFnbDA8bVAhQGp9IzBZRmQKeipuP3J0QT4rO0AxT354RGlC
NVYqKzw4MyhKcW42JjRCUyZ1Z0BGRX43aStxZ0BOeC1uMF52Tyk7emQ9IWFIQGImCnpwO1EpeW1P
NiYwZ044K35qa2VpVWZJd0khVCNIJU54ckQ7Q1FNazhAO2ZrZnstP3d8bTR2YWA+bjhJcjgta0Be
fQp6OF48N2x0bEtKdSl6SCVzd0MtNzN0bS1oa2xDWHN+Rm9aa2N6IXcrO25gaz5pQz9ab3lOPzsz
WmM/OE9pPSReZXQKekV4dTA0WEpMX1AqMyFYRWNXV2xPVEhlQj0ofEJrMFc/VFMxNjNtNHRsOzYt
a2QlJHVLNUI9aWswPDcpXzFHaXU7CnpkNXx3aSMoVVhodGs9VT42fVVUekZGMSZgPnw1WUBBST1i
dDFhMzl9ZndxRWhNWWlBfEN8NWtGenswdENKUkRrMAp6JDtseFRfUT9eTEY+dnp+aE1OK3dQNklC
VF5XKyRyNlctOzxFMUMhUW49Rkw3ZjZpUCpESDshT3tDa1FEZ3xteFQKempZJG5sO2Y/MnF2Tmtx
RD44cjh7Uld2YzxfYGhJRWNxT1F4RGRCbnVPUGRtUT56TkliNDt2Z1ohQTRDc2xNcWtTCnpzPTJm
flVJT35BMnladGNEVE9CTmA/Yj5uaVdONnsoKT5iPClmSkU5JDxOcj5KKkNVP21jb2x5MDFUV2oo
UF9afAp6Pjh6cHB0ZjJiKihGdkExZW4xYHVZZ30+eGxWWFI0MztVQUwpRn41fGdafHdwPGgzWWRh
JEA5dU5IMl83QkFXR18KelVfYF5pd1RIa14zUEhIbmhgUVdGbTVkaU5BKXliKyE1Z19xWUBwLS1V
VipeK3tFaFJVNC17PEpZWGF2Xjw/YCs5CnpjJD9UcV99QmI8KVAqSWJfOUMwTElLMHk2Oz0oST8h
eitfZkY1IzdpQEpmQW5yOGN9JDZKRHRmUFpIS0thJW4rPwp6Nz03S3AyaSleTWpPXzNvYVA7eW9A
JTN1cSslLXRkTHI0cDRgbzspVj0qPjt7cHp2YVg8fDFyZG1gen40cnoxekkKekY2czsoWlA9MyVf
ODd3K2pUTmw7IVl+I35XYHlxYj98VFlvaEZBcFBqcFYxVzwkfSRWcjsmVD9tam54KjNnQ2ctCnpg
RCoya2R0a0FQNmsxYHREZzJgaFglTWZtYH1aQikoSUl2aGJYI0Z3NSVtc0skeGZgP29OSzVgSlg5
cVlqPEc1Ywp6WVhiOFJ1N3NnMVNQSSF9RjRzZDY+ZndHSUthbTtySz19bDNRfDBtaSRgKG5NQjRx
Pncla19qVl5LaGolMTtZTEwKejg+cF49SHE3flg7fHMmfVg7dihJKnBRfFZGc0o/SXhtP3BkN1My
MHxfc3FudVVaVjNOcklEdkpgWURaZUZeeWZoCnpZTmRDMFNGVHArSEdweSRadyl1M200LWJnVlcx
ZT1lelMjKG9YZGZodT9OYX0wKnorX3pEfVdSNm1xIShYfnh7MAp6PW99bDE7Mik+cEAxeCoqLWUq
TjFPYXFjd2ZrRm1waFhsNWUyaX1aRSlteW9velkjU3tzaGRqUHw0ODFTQj0wKiMKekA3Yk8tNDR+
Nzw/RzE4IWhUSSt6LUg3cHwwNWlRK2tOWU9qUnErUE1KdWNNUzFhYEtNU0x+QSlOOUY9dSphc29y
Cnp1MnxzX29ha1dtPDshfmIjPFJTeTZWMSRtdjhJPFYoKClAZnstbCpJU3c/RGBHRTg/aSYxdTtk
RW1BVEQlUUVMXwp6TzNCfFRCfTFmPyp2NG08WHlBTTtJVTg8KmF9UFA2Sjw4JUApc1d+K0NDQUMr
STBCMEJqXzY0RGQybm1TSmQ7RmsKemwoM0dkPjYpV3kocndIbTE2KGAxYTxGYDNjZl5ERk1kRlMo
WTZVTSs4fjhYP0t+ZjshZ287ITF2cihXPVdQME5tCnpTeU1fPiY9WSNFdkNGSmdjIXkpY3IjanU1
UGd7cyppQ1JKI3ZfQjZHMnBOVEwhd2F4XkIyJX5GOFR1TiUqTDloYgp6XnZLVC1EOU5gYGxCWkxX
UV5YYG9BJXNqJT11dlNHNXtgIyhtSnRwbzshcHJeezMkcztOUkRAdDxBLWZ4O2JZNGwKei0xSSRZ
WDlpJkApO3BMP0xFVD1EYCY4aEhDZmwmRE4wPTxHMSF5MCRwZU1WYSg8e0ZLV35hQlVDXzc4UVR9
PTVuCnppJlBeKjxtMT1TQGl1an4mNEFRREx5XkJva3Z+azRTQmE2Y05LZWAxTlFjU013UDV4YFYy
RG8yQU5tOX5kUWspWgp6KXp9ektiUk1NTy1sZ0Y3USplbj1VTkc7fD80JHwxRiN6Pll2SjUhZWg/
S0hFdj19cjh2O1ZfPDdERmZ4QnxPWkkKejRNa2lRRzZfRn1aM0o1ek8zJUtCTzFfNjg+ISEjflAt
TVMqazluMHRzdGBrQmxKWmhlZ0RVVCslWD1eaWFLUSFnCnpxXkZWS2t+WW1BVjhlQWArTzRIWTc/
TF81I1l+ZTx5VEItRyU9TD5Vc1psTXxHMDAtMzUobEwpPSQ8djtyc2BfQwp6dTxBZGhhM31qdXNk
UFdNZkl8MSRAVUFDcWhQMXk8aWFfPGl7UEpeXj5nYHNIUmFMRHlnQjY/JnYlXmpyVEF5UiUKelll
Q08qPFI8KzU3VFA4KnlBMTx3UmpYKypMaWkxRWdiVHlNVlRAV3RHPDFnYWR9JGlHbkoqXiRfRHJ1
OTB9d2RZCnpgQUhaJntzQVY8ZSZEbXQmUDJpTzB0TW42WmJIRmJxPUgtZEUtTkBiMG11UEphe1U5
P09jc31oT09xRmU9Q0s2IQp6QCZARWgmOHNtPV9oMUg1O1k4Z2tKbFVVM2xQSUsrYW1RJGMxe3lp
aCotbHxzUXJKMEFnclFReyQzWTxWaHMtRDQKeiMjYiohY0R1MkBrcH0hOSFWKFFVdmc5R1R1cFpI
bFNGITArQippZXlXNDB+Pitsd1lONHg7I0p5JDcqXypQLWgrCnpYZlo1biFWUE5TM3dFdXtmYUgp
e29XSTNERUhaQ0smSng2WDNOJnYpYH55e2htUn03OVRXJEowSExHemdmM3BAMwp6KjheZXdHJE8z
b0lwSl4raChoOG5qTHN6KGQoXlNzZE54fUx1WWJpLWp1eDxmST9lZ01oNVIraFlhVjErOyZpMXEK
elQoMXBocCVCQXY4aCRhVzMmbkVrZD9eejEmZjZIYHY2RGIyJDlpI0k2QjV3anBAcHJ1WTxyanVk
UnBESHg5YWdBCnotLWI8T0pjQ0NOcj1selJfYmJ1bHJVcHRucHU7XiN8Mlo3YVdka0ZlNT9wbztr
S1NHfGFpYEFYaUNUUWBtZHM+Rgp6MSl5SmxpVzJST1gmKjtIWU5yTVlLSnhFWnYlN2o5M0F8Vlhj
bylqd0N+JiRCdkIwPytmcnQwcFNuZlhePSNGUWwKek1xeEcjNGcyJiZaZVZxKCFmUVp6WS1pc2Y8
Ul92RyNyWH09UTNuYXhXRz9CSXJhWVJqdzFLPWQqND4xRmJ2I05mCnp1cmYyP0pIZ3tRcmM1ekIh
SCR6O0cjOUtSdzhEYTN1PndjfTN8KFRqOykrWCQlOWp9U29lbGR3Vm1aTn1CTTRTRAp6c1RxVjw2
TSlhdyZ0TEhhNz5QUHY+Nl5wKyV3IWQmN0lyS3xsOChUelNTQ1Z5Ql9neX1CdGsxdWhhZl5yVGBA
U3MKenMkJihKIzMmLXhWX0R5WWJnVk07ek8ldzdwWDB2dFl2YFltbEZARFdEO1lfRzlVPWgtPX17
VkdRMlRLfnl0MDt1CnpPO35OOUZvez1CLUNtNC1mQjklfF9CcFpAYyhmMjI0WnRiQGt5dFpXRW1r
ODtvWWk2OG19N3dWamtfQm1ncF50PAp6az5lMG1pbGFtPDNpTWRWRkdBPFkxfWNea0h6JVJPO2V0
ITQkbiV0YD9HS15XY2lidVdYQz90PjJsZU1JKVNvU1gKenJfdl9VZkY2YjxLe3U+e012dDlHY2JL
cGBCJSt7XkJuKUJ1UjUwVCowNDctX1d7NzAwZ2BFR09ATHJfd3pJPTs/Cno9ZjVZN3JqTD4yN0Bx
XmomJmN0Sj1xUXFpcSM3X187PSE1Wj8wbG5WMVM1JmskVlU8Ujd6ez1EanAoQnI5Nj16cwp6Mjd+
N1YzbzljTCE3MT1MYzIyVGdfaVIzQkt+R3ZLRWtjRVpvZyFoVyFDWCYtPH5XP0dQKDthYEZjQzhw
WTNVR0EKejclYlU/MDhORGJXaSZuUSk2Z01XNXxLZlRub3RIdENkaFRjM2YheVlJZXRqajk4aXV9
WU5Va21XRT1KI2R8Q3tqCno3e0MhfWEjan5NWXFRRz9vPngoWloyYUBANklmX2l2dVYzYnRrQ3tV
eG0tYFZUdWl5I2VPTjNzbEozRE97OGw0WQp6Tk43Tn1xK3BtPVhDSiNPODhOWmQ0U0ZFYXtLN0tV
bEAwOXs2YiMlR291NSpXVFBlcyo2eXlwcU5kNmR0MGw3Rj4Kek1lPD1mS31nWUVYPlUxWjQjd3d5
M3JKeEZEa15DSmRfUENOZUAodDhpb1YoV0l1UUAwOyl2b3BtViN0RkhqYStTCnptdnM4fllLejFI
TDNve3wjbmA/UnEqZU02em9rPGZgVzJkfD8lNW5ZZ3lVZEQxQ2Q1anVfbl82MFk4ZEtpdTVMbQp6
dzJkTyZPT2Z0NiM3Y29oWThOQTJDYEFmM1IzOE5xNzNuUXZxPzhAcWhNTiR4b0lWPUhGO2E5JmlP
WkF7bW48YyYKek44NFR4RHhhbHFeI29PO0hxaDk/UGkxWS1MRnFYfj17WlUxODdIUGtsQnYqQDg+
N1k9SntTMkJLeTZZZ1FFbmRjCnpHSGVkS29GKl5iSUIyRWJXRCZZK2pvQypVYGxUTmNNUGwzNERo
dnJBPTlxa2pFKXhxMmE/bEZ8bDU1JjFDPmxXaQp6cEB4JWY7aStJdldsaE50IWlZPEREMDdAKDYk
d3dWc1ZOeWtqWCYzOUgrRmJfRTArI3N4dEM0bEcoWmNwN0BtPlUKemJlYkgqV3lLPHs1c2V7QHpn
NSVUaSF6R3RAd2lmbjYjKDVtPXJZSHNrPEhnQW8za21LTWtzPF8lQkM1QCV+JnpLCnpQVlA8UVpY
eCYxZ0pMbiooQl52aStjZis9TXFIZ3FiaVBlIVRMfHJrZyFaekMjPjhOMkFUTUE9WnZZcTdFbnA0
cAp6P3ZeUnctaUREKClKbWZCSUMqfU5KcFlWNVo8Z1kpXm1LbmQpfXFnRClPIS0wQ2tVc0ZhUHx8
OVFeRzBmKGZ4NlYKej5JO2c8aXokYVQzMjE/OzJVU3VrSihyT2pOPShtXm92P0MlTGtecFdsMGtf
M0VqPHYyP0tfNHRUSExwJSQ7OXlVCnoqTDBjSClEbmlePzhEaGhRSjx1IUttRDZuMVpKKU9nd0B8
OzE/alJzbDteKCgoPGtYPnZyTmIxYG5+Rkh7eWx5Swp6TXprYDB4fkNgb3dxRX18NUZNV0FvS0U0
VG5HdjF9aXR2YVctcX1GRXpFfCkzYCN6RWcrYTQwfCN0NTViKmVNfSMKejtCejFlNFNoeUNtWFZ9
Z0ljbFRWaGJnUGVxI2xJaXVBPDs/cntFYDJAVXh9aChNYVFmTzNSb3ZnYl5TTjJWbz5qCno3KGBA
JWc2XyY7NzJpbG1oWTR2NUEkN2tZd1NOKGImb1F6elY5SlY3Y3hUWFRyYT01ayV3QSRkRURXQilt
XjJxKgp6eWhtYURJWGE5dkRlZD14UEBeV1daWS1QbyY+b0V4NVg5PTlQfmsrdzdaMzZndFFidD5E
LUlfc2ZLQ0pAQ2AxaUwKejtgVHdiLVpSSk95PD5TNV4qaU0zOWcxKSVNS30kTEZoYDFUMj1DU2Vk
fWtyPUd6Kl4+O1NXPiVTKV5DNStyWDBuCnpjVWw8K3J+czZhKHp9e0RZbU1HfHY7bUZSMXVpbmVY
UE40eklEU05OUjhidHFVU3xhWkpUK3pCcHQzPU5VTUJ8bQp6ZD1MJHdPZ2wtPUw/PXQ5M1JeKEhH
a01oKk4hNnV2dHFofT9BWU1obD0rbnQje0gxcz5oUSN0fndTOXhwN3wxRGQKenpDZHc0Tk84S3ZJ
Q1h6cVlzX3ghXn44XkQxU15aU3tVa2EmeFl9QFUpdVptLVB2O0l1aztSfWdnU3x7WmlZUjQ1Cnpf
a094JWZpZiVUPSpuUypSeiFoK05QKWpaZmUjUF4yYTYzWl88fmdKLVZkPWM3PlBHUkMwP30tRG1S
cSU2N20qbgp6Znd4b1M/ZHtqWjIwfFZ2MkRUUktBV3soZDdyWktkNkA8WFI9cyVlVVZIKkRQQ0xj
O2N6I2J4IWZmNjZiMCFFM0MKej8lcSRrdUMlMVkoQFI3U0VAIT0ham1geEVRTjZlJnQ9c3JLa1Bz
N2NpQU4/WjlhWiNseGZkNmdKOU4rOXR5ZVg2Cnp1d20md05+NTBBSH5AKztTeE9fYG4+TnhHRXtO
SWVnS3BeJXFgJTBqI2pIRWZ0a3ZGT1lAKSZOalMoMmpBMz1LRgp6I1NqYFVJP3piZGl6O01wcEU1
IT5TeE9TRlAzeWFJajAhS2RRMXdsI2pKVkpOY18rTSpIfSZ2NkQyNERsSmY2fjQKemBPbTktY2wk
cmReSXl6RWFqZmBBRURsNkhFbUhpbk9qciVfV0NVejUtNEJRQ3kkOyVoXm5EfSphckcyKVFmTHwo
CnpaWDU/Zjd4V0FgcWdGd2Q7MFJVe0h6JEZ+eCZ2RmRnbUpycy1rJUtKVn1YdWlQeilpamBkaUxz
Vl9FI2UtSSFoMgp6cjdVQDtqKFhiI0AjUEU8SmxLaC1UMGJNND5LZz4yaTVBZCRLRitfVmh1PyN5
TUhXM1NqV1pGJjQwKz0tUzs5Y00KeihxandvcyhhUWZKYHhCU3A2a3NkITtgNlZuVlFHYzF4JlJ2
d1YwezVGbSh4Mj9fZz5yUT1McSRWUU17N3ktWiFqCnopSE9fUFYoSkVfWmVyP1lyZnk7QzE1QUMw
c1NoKnRRS21rfClGK3R3QnZZU2E+ZUVjISFQTXVPeHxeeHtuMGtQegp6dVFCeD9Re1E2aDV2Q3F4
Pkl0VFAjOGlRKTlaYzxIPlJHMXRGdHdNZCt6K1VmKUopWWRSbSlVOFF3PlpfVnJudXwKempaQWVp
d1Q3d25PIVlFIzY7c3pSd1RZPTRuN1dDbm8wKzxXc1NoeXFBKk1kZSlKTEpkX0Y2Yn4yUXhqLSla
TlN1Cno5cXt8I3xFZHokdmNRRD1yWXdSUXF3enBocnp8NzJHWUI+QT5gcWQoZHIzfEVFMiRtKHAo
PnQjZ1ZaTXZMc2NGNAp6SjU9U3xIcXZYcz0qbFVrZUYpVyVDT3txOSgrLXQ7XmMxTntTeF47Y0VU
b0BGRj4/REBqQXRuPm1HeTA/JH43I1UKeiV+MGo+ZUA+bWRybzZWJlhpaVR6VypFKE5ee2RfMCVi
aX4xcjBMVkE4fFQ7N3lRQDc4U2k5QCUrfndadHg+Xkx3CnphZUIhMmtsPGxfQmZtcndIfUBHNlJ9
WX15JTxGUEV4fCY1NzV+alJrO3gtPkthbW53UnhUb0dUYW5CcGMteFJwPwp6MHljdz5fPnYjbk0z
SFMkPTJ5LXp5MW4pRkhSWT0oUkUlI2hQTVVDfGFkS3duPGNYUW5Dci0qVlBSZzd5ZENDbEUKeiVE
cCNDblBqeEFzeUMqe2Umc0xMSXFjV18rdFleJW1La3NRWmVSVl47T2xSPz52VW1qJjtJViZAPmg7
ZXstKWpYCnpBTk9QentBMEhLNzRaQCFmQmtOZkB4SlI8NCk2YzM/e3wmPWQ7SVQ5O0QySFhsejdV
UUo3eVNESjt2S0k4cEB5KQp6bFR2VDJjaF4tXypFcTtmV3Q0VHhqTFJJJHQ4MHprPkpga3pWUlRA
cWx1YUlFTzxoSEs0TXMrOW5YJUkwQG1BTmUKekEjeCh3KyYwbmN0dHBHKz9zOFhxOW8lU1I+WkEh
LVJmc2slSExFZmtGeEtkdW0zbXsxazFIeSs4bGpsMm9VdEJPCnpLQkxGdXU5JWZOdCE5LW13WmlM
fWx7Jm8hYzgtO15RZzg1YWFhP042RHNGLWxuaXp1UWpaa1pSO3tpckB7akFpPAp6bUJ3WVdRWSgj
PnZyPzwjSTUhN3ZZOShoYUNjOFNmNXJlc2R3QUNKQ2IhfGc9Tz80JW5PSWJGPEZ7NWZte2Z1SkkK
emowUHY/VWRFKypXPyY5ciZQSGRRJEJUJFBhVTlEdjhNKTtTRk1YRy10fVMyVE5FXiNWYTJANTk0
dEVecXNqSWx0Cno7cEo/TG1LSXFgWT9ocTRiQm5sVCl3UHZlTU98JkpxciVKMHc9T0x4U3hgTFJv
TVM2cVQzb3o8PEV8WW80ZkxvWAp6WnFrSElFKjBDdi1nMzhoaExKXlh0TWo9bCMwcEdIdHNFUTJS
azt6RmFhbXBFWUwza2xEfHxJbkwyaFpIbV4xLUAKelkmTSZTYENgJSg8RD9zQSslUj48NFU+KHw8
KHx1P2lyVl4mKzJuVkV3XyZOejxFU3ZzI01IdW1vTyM5KV5BZlpYCnpTNE9TbEU/O0dSJUBRUWpU
VVNAKFM8KTlGTSomcFZkTDM+USp9b2khX3JJRDclMGl2YmlAZn1jKjxqXlpUaiNCPQp6bEJlNnRP
N1I5YD00M1lJVz9mUT5He0pmdEhLXkZNdWBgVHpUYUx4O3VCKXY+Wj54O3M3UzxWXkFUKCttWmV0
WjEKelU9Xzg7SU03Qmt3XkpqVVR3VlZTUmhEKCpqTGEqbGpKJGEhaF47U3JFSzxOZzZSVU5SWlQ+
OV83QjRqfkRrYCM9CnppQEEmcCl9cmdgaUk2ZWdrP09nZytKRV9xVyExfWxidzBGZ1lWV2RaTWgz
WjgpO1Q9MipMI2lTSDhwajI4T3YqcAp6PD9pTGE2Xj5mKHJPMnJqLXZ0QHJ4KmFRaClvdXIzemRU
NF50PW15aXg0Z0ZjWlU9ZypsdklgJkcwTG1Edi1uWSgKemwhNUErOHByYlQ4cmczfjJGOCZ+UWhU
K3lqUz9EMWIlPmZ7VUN2aWVePVBqMSlsP2VNOUU9fDdoZWx0JChPejleCnpMKVhUVEw4ej5naTxP
TTZYWiM5JTQpPCFTITtOfWdRQz9mJiRmWHped0gyIT1JQkV4PUZmKSsoSSU3cWhrR2N5Mgp6eTQo
KzlDNnttVEE9ZGFaKDY2PFhEXl9xJGNWKUdFPjlQcUdHbUghQiR9MU9DRkxSZj5SfnR2cUdPayFy
U3lPYCUKekxQUnVIbTFDVCo8WVk1c19EQykhK2lLNHxocXU3N0I0eT1EY2xEKFgkYiY8MnNjKlF7
c21NWENxYXh5M0V3QEU1CnopSkFeJENZIWpVZlVeSnRRUipCNFRCO3ImUXJIKEs3KUNQcHtpclJe
UDBvb3hwTnB0Rml0P1VgJTJ7M1NuOVdzSgp6cVNNemUjOSsqPVQxOGU5RChkU3dafmRmOGpndjFt
UFApM00keWMrVVooRUFAaUEmNkIlZ1F8dExNU05yKyZNTm4KenlhKXpuZlFHQUwkUFZWM2EqdDwl
eDR0NWByV3xBT2J3K2RVKCEzbm8obTZSY2khRDBIdkB+Qz5yK1JyVUk+Z2VZCnpScG9CdXhVbWkx
QD98dit0SmdqRHd2MCgtIyN5dEJuYkFIWENFfjVDRko0Xl9KWmNEOyNfTyYjTSQjOD94QHNjNQp6
JWVgT2dRRmdrak42Zy1tTUBwMSYmNj5VI0JUaVRLeE84Yz8kQStxZFpeISgoWCVYYnsjejxQbVVY
anM9UXpVPHYKejFyeTJUSHdGYGxFVj5aQ2QkRV5TUj1UNEBGcWdCanYobn1CYyNSY1EtOXwhajtH
MCVrWFFWYkhTenw7K1hSU2h+Cnp1Tj0jYjlgbW54OTF8Vik8c0FqKTEjQzViNiRlO1JLZipHWitq
TEQxT3RjbUotfW09MGxEMmZ8UW9JfnE9fig3bAp6bz55MFFYQyQkTTNyckZIPHIrRFVIRWl1STxg
RHlaI2h1MVE0SCZJNCE7UipncjZ4OXBVK3p+bF9vdVZ4dE5ofCUKelBiMWFrS1BCd0gjPj9mWC08
IVdMZiR2TTtgeDV2c2xtRztFYW9pbWtpNmtLN3xKYXtOKyZ8QHBEMyQ3JVNkQih3Cno3Jj5JZ0t4
SXNWYUA1JUlZNGxeQ24zJUROaTM2ajV5N0FYNCRMcSFjVmFTTU5yN31qUk9pVVgkV1NvUkA/WkI5
cgp6I0F7UUJ6KUpwJkExQ1MpVnZOY20kP0RqRmw3a1o4PnluYVVoczRPM0x4NENiVnRAdU56PUNa
YmlzKmM4UVohbWIKelBlSE9AVSttMGk5NT0pJHglfSYmRXlWPl5aYkN7NSt4d2xIbWN1T29SMDdy
bGZgRHkrS0xjNi1NKnliKXtsP35TCnpCTEwkN3ZqTz00SkQ+YCU4U3BVUmNZeDtydUt8dCRJc3hp
JkliMCRqOCZDdSYyZG9DJTN3Ump0ZCUmfVJtakdgQQp6UDYydVdoSUJ+RDJGd04mMGAzSEMySypa
RTZrcz50Wi05ZTxOb2MmWmdtIzB0bUE2KV5lNjx5OWBDOTgrdkNRRzcKeld3cG13O2JkREB3NlRM
bDVaMiN5PyR3O04tME5oXkhiengoI2RVUT90ajFQalVGZkp+PXBHSmh2PSFBSjUzUG5QCno5a3Ri
MTcwdG4zM2hqT3dyUW9yc0wwRE16SSU+O31VVSN8MjM4YU5zM3AjNCtlOU44MjcwZi03ST8tcmNo
VUwobQp6R05+N0Zia3NJZlY/VGdhJms7TWVNQz56YFM1eSNqU1cjRSRoQGUhS2QmXm42QitAYUc8
d3szR2IlbGU9QHA+SUEKej5iK1BUYzxacFBVUXlRb3FTRUleaW9IPiNMMjM0WXg8KkVzRk8oWns9
OHlfUEU/cyRiJippdzY4KjhkVHdQS0lRCnppMlZXMXZJX2VfVnJxPkpzdVJ4YXVKZD5AI05kRWlk
KkBZKTgxWW0ldEZlSF88YEwhMTtYJWdBPnRWdnQzTzM9NAp6XkN2RHNlbkl9JChVUlJFb3c4N0xL
RE5kWXN7QDttKnBjRkxzY0ktbUhBdHowbHwrNGNnfk0zbXNQWTxGRXdhcWIKem0kbT5yNCMlQXdt
Wnl+JmIrdDdodWdTTSh3RmwrWm1zVSEtaG53VEJ5QSNjI3pQakdRNjtRKjhsdGh1a2dCYFZ+CnpO
TGQ9bllpUWVUd2I4SyhnQGxITHFOdjcjNDVlRk1OdE1xbmxDIzJeQVBnKDJRQlR4JSNQJXVgMk1Q
bkxlN0JGKQp6VSEta2dTRzVLJV4qLS1KWS1IZ2g2fWp3TERzKGg9eGxKSUlZLTcrIVoyP0RCP3JQ
LU1TNmtrSSNYaFlSeGpDIyEKek4qPCpoa1Y9JHw8WllTSHZ6b1EqQH5BZDVBSXBefUJSNXk+VFAj
bzE9dkgkandSaEltLUJsfGthRTF8RXY+PHQ8CnpwTXJqfXEzX0dBUkFnMiYlYjNWN2c0MGhFcEJP
KE5OdllILTZMaGQwcjBsTyQ4a0VZeF9AaUh9Q08kclhLJTchSgp6UCZxXzVSSEBXVT8jdk5ha0dH
YE5gZjYmJWEkRmkkJWxXdCh7SzNGKzI/PmdYIzAzMTVUIUtvUyZfNUQwKnxGYz8KejFsPSY1V19V
dEV6bDA+UjcoJlZiUXBCRz1QTiZtcDt0fj5LNkFiWUs2QX1nYFgjM29eWUByUXwlbTMxbDNpMG85
CnptI2RsY3VvZCE2ZTtjP2Z8MVFOfXVqdTxAUnEhcDg9biNJTz09KVBEelRLYmYtJDxxV3p4cyFe
SHhjdEdBUlJDcwp6a083emdtPFklT09hZT4+dGRvOGRxUkswRUloVUhBSWlFfCNlfGx5Q214fS1O
T2RGU3F8TWJpfUUqMWF2SUwjbXYKemx5V1hMaGY3XlNDTVk8dW44VCY2Q0tIcyFFTGVxNzFeVEk8
cmhpPCNjRUNXTGUkZTB7aE1AX0dOeUNQWk5GRilyCno4c3EzTypRVFVpY1lXSH1hcH5oVENRUXRu
RyZ5VV40TDQ0bUhobzYrJXZyTjxHTDxpQHNCfX48Y1VIVVp0WFdaOAp6U0hJSGpAJWtGPlREQUpf
K21AOHd6VndjLWNmViYlPEp4c2k+d248aXU8X20+WlZFSz5ufWF8NEBzXis1Y21EJHEKentgNi1M
e3JuZU9BQWFQUXpqfTFydWVVJDtfOzNFPmlRb1MyX2ZQKWV8TlFaKHxOUFVScFo/MTsmK2djez4k
Jkl1Cnpgb2ZGNV92fiVpX3RPNT4xMjRidz5UOXBSQHdiQy05eTxLaS1ge0BjJGgrXmc5ZXd9VUBl
PzFNe1AzZlhLbHo4eQp6ZWsjPVE+MVVzSnA4biNAKilPfWdkKE5HfCgyR2FkeCZMYlpiTE49bVQ1
eyoqJkEmTitMQllhQioxe3JORilzMWsKenZpTWRwfDZsTF4teTs5Wm12aXs8K251UGJ0OTMqKng5
X2FRYVMqcV95dEg3XkxROFFAKFBHanNFR2UpUSY0KE5eCnpeVX50XjFzM3w2N2NFJGpRIUh3Vzdo
NWZ5cWpxVkRqazdFKUE+Rig9KDlPZmkpemFKfEYxSDlvcyQ9T34zcGR3Tgp6IW0mYEkxRDhYTGlz
WHZHRE1BKVlSMF5XLXFsMShFRjZBYjB2dUxoVFVTKXNncXBUZTZXNTdRRTAtem1tM0o/TigKejNp
dHdXMkpqYEkzKHlVcVU3bUNKVUkyVXJoQEZ6ZD0+UWBFTSFAQzJZaGdESUZjfmx0VTshKXVsbU0w
aD9mX0gqCnpvUFppWUotYGNDMSF3e1UwNnp2aTI+M2JSbXdAZW4tdk9RbUpQJnZZQENNKXo7QkNO
cmZNYkFAZktMRlkwR3xRQQp6MENXTSkxTFU3Vio1TGN0V1VMbmVeeXxkO0JIYGd9XlFWemRscTNC
enhVYGY4JSY9dDI7M2pmMkZpXzElRXRvO1cKeil7MlIjbEBuPUgke0JBPW9yN2E5ZD1fJiMxKVF+
akUyeWlqRU1MdFBgeTN3bis4dmQocU9SRUtiMkY9NGNRdmAjCnolRHB9fShfbzdmV19Ub0Q8Yndr
KTJRPFJyWWAkOVY9Skh3fSZPVyRZJDEqcTU2cUxJd29MbWtsJktnajZ0R1N6Zgp6PW1hPFdZRjJZ
T3pVQTFQPCFsWlJVfkUwSDIjV2BDVUN8Jn4leW0/VjhpWXpBQV48bDlCP207fFAlc24qMmo4SGcK
ejhhUX1EUSNQWThybDZkcjE3LW5vMDJhV19mUTVofUtxPXJoeiNSWXdmRThtI04mfWFZMGNiJEVI
bCZRQEc4JDYyCnpoNzNTVDJLMzxXJHcpQ2FhTHtDTSZ9MU1VYmp3dG5uQlJna0ZwaG0taG9BSmVK
OUxqS087Rzd+QWpaVkw5Q3V6TAp6PX1acjZDN3JjSkMrU2tvNGk8R3lLWWJgYylFUz9EVlZJfj56
eGVXcUE1QWcrQC1PeDJQeUZHZk4yKlBLfElPZFIKel5SSFI4X3BzXjI9SnV3Uz1rMj14aUpUdURK
TkwraShBd1Y+bnA9TXxASGhZRyhQMUJNJnJRXyYqNUIpRWNzWn0mCno8RloqVm0xWG40eXprYm5L
UWxIZml8KkskPmZeKjtRK1ZBJmU9PjBkazRiPkt0TXloSFhCZT9mM29lNyY8O01DdAp6KmhvdGY1
Mkh3bGx0KiokUkZ2MCNKNTBwKDZ2OEtYVVY/dkRKZDtXQ0JHPEd8JXdWVlZNZzZQYGh0fm48X3hV
PloKemZrTGtuP1QrQnxeK25sVlhQQVo0KigyZ35fREUqUXk7RWAqQk98cCoqMj9eODhTQHdCYV9P
WEdFWC1OUnJJVjd1CnomRjI8IXhqOz5pPXJVa34qMj9UO29mSDwqOT9eeFJIMH08c2l8RThPUTUq
YXhjKXZObT9ReW93cENQVHoqYUZ5Qwp6NF45PU12PzhXTU9QfH0zWjdpNSR3aSg1UkFzeHc5Kkgo
TTAhTT1nUlZ2ZnRmXjN1JlYyZ0VaQHRWWUkqaSN+a08KekkyPWF3aj9CcHpqNmBKJCZmdVkmNW02
P2pXQGMzYURlNTtNaj5BOTQtUldAR0klPXtlUHJ6OSFoZmA4M21he3FICnpTcT9gQnM1c2lzcVch
bT1Xd210YlRTTSNKPD9pd29TZGR9cUNvO3khITdoMnIjS358dVVtKVNvR0xKMjVpQlhgVQp6WlV3
ZTJEI2k1NnQ1UmJGK3ZOQmJtfnh6I2c7fGUla2c3fDx6QjFtYzs7YUhjPTRScl8jQlVLNnJVKnNh
XnVROCoKenNtRm1NXjVxU2clJGJWRyh6b1lmXlAmc21vS3Jlfj9tSmR6cl5tRHZBTyVGWmpAbH5g
Y1Q+YT16cjlOSHVeSz5FCnoxTDZWVD50eyNJZ1lZIX5OVzNiZk9oQmBsb2JsVlRNZWIpMEteb2hg
ZkpYdDMwaUZPbjMzditkR35oWUZVY2Y3Vwp6dypjPTBKXzM5U0kxVHNgYTFRVmxLbWxuUEZAWE1u
MGYwZShwQDNuNGskX2FkMWklISk0OFV4RjhJVDg5MVh2NngKejJlPCRwS20qe0s8WkRMWmsxM1Mk
WVhJMipKUHlVSjB7amZ7N3I8TTlHa2AoSlNTRGEwVTxIOFkkWndjR3JSa01FCnotKGc8PHVHOGJj
WE9iNEYzZ3A+fVZHTFIyT3Q/QHg3Zj8pdmJKXzNWUFNhJkplTWI0TEBGQTNVXm0lQj83eXNQUAp6
WW5TOzZfSXx3fGl0K0pwYUZeM3pvRiU0MWdFTHdWZEpTNmw8ITdMMndEQ3l7M0UoQmpUJEtzbHQr
Qz48STFiQDIKemJJWTZ6SDtIUzJGLWN0UktKN0MxeVBXMFRue1lEQ3pJNCNjZHxsbCh0QDRzfFdQ
WkRfKHBGVH1fOWd5WGRhOWBLCnp4QGoxZTZHU21ibj11KkBLWXtHYjR2aWhGRG5SYUcoe307KD9x
cnUkSDQkQjw4fmhSKHZzWURHaWkmN3xqbW9MZAp6eHpiWntyOEJuaFVAMz50aG13YnhEbnxeI1M/
UnFoTnspTHVhaCtkVThHUnYwQn5vMGw2cFMwejstWDd5Wkd+OWIKejUhV2tJYUptMDBGK19kfmlv
WStgSXA5bz9GfngqdSUrOHk4TVBXeVohaUVXJExoI0AjYCYtNHpreXVWNzlvKXgzCnp5VEVGZFFJ
XiQjYGV3Vm9qI1ZfNWdMNFU2cEckcVVjWSNSfntGSX18ezFjMndMJWFmU3NZUn5rSmR4fH0+Y0wk
Rgp6RWZRdSF4dHEje217cT14UmNDSlRxOVFwblMze3FCUyN3TWk4JW9BKEdfOHZIcGszeUFEfnoq
ZThOYmRpO3txRT8Kek9mKiUqQmxKeUNVQipOZG9pZ2VhWDMpd3JESU9OMjk4aVFBWGp6UyVSY2JL
QSg4VClwS1hiPjc5b0BZbzxHKWExCnptbyhGeXFOMUZ8YXVUQTdDZGNndHlIdlRRTXZWMWFNXm92
JkItMExXQntMZ20mTjZ+cWJBQE8/OFRUMmBSRWVMOAp6bHxpTGZFSGdySHhHWDQ/azlrM2smNlhD
RyUxYTlIWUNKPyRVSypoO1ZjZTE7cTdmb3ZjQlIpVlM3ekdXVnNtTE8Kel81MEdDMSMzaEBrKTtA
aE5FSEVGXzd6PSltOyRhRzZ8T3t1Un1eVklePl45I3dgdUU8ZTFBPnNXMnhJPzhuX345CnoteFBS
TW1Ldl9gX15sZXFILSM9JkNzcCF5JD85Yl84ITZZWFlvd1BYNmNzMU95RFQhbmoya3p7WSttSzAp
Nk1VSAp6LTxRRHUhekZOc25SXlR7NWZYSXVefFR4SXtxS0tNMzBSeDNSKmAtT2V4VHhKdTIqcXNf
e3pWKEwrPURVNW9QeFEKel5nRSk9R0E/flBWMUZLPEB2RkU1enkhY2RLcld5TlB6a3NqdW8+X2VV
PkQjMzswUW5mb0NvTVBzSklrQkNTVlNyCno3KkdYaDBCaSNNMGBONTg0WnVmJEY5NkRvRGxRMy0w
Pn1pSTA5SnEjdW5PPWF6IVFMZGZWVGxCMGlPWTQ/fWIwVwp6SUtUfFIwPkNZUldxXjlYVEVIJj16
WFIrNTh+X3t4e0JPJV45cmclNDBQSV5kVmI3KiUzWk9wI2ApKkN4b017PmUKeiEyVjZzVTt3c0pv
M01BJmxuQjVjUFpPMlpmN1NtZmw9KCR+X0o/QkdVdkFFfjZmTHdZen4wfjcxcSpRRlcwNSZ1Cnoo
Jko4N2spKn1ENWpBeGxocSV+NG4jfHgyQGo4ZkNneDJrSUwzUSsqRVg0QysjPktkNXRhZmJKJCY+
Q0NUVUolRwp6ZU1QWHp6fGE1Si1qIzx9UUVkNH1AKnJSZ1ZVd1U/bF9meGNURHNRV2ZGelA9cTU7
Rl4wRk9ZelcrMEl5RVY5VSYKemhYQCkzMSlkbW81RFhaMmkwbVQhPF5VUnlPK2ZAN0ZvPlc1MHdU
PW1ufXFTYmFzSHFBLXJWb0l4IXUqPiltNlZiCno9WFh3M3BWTldXdi1aKFJ1O0ZoLUMmZHIjNUIm
Xm1tI3pwVno9RWI8d3x9JVcrJFZYVUFDd1pHVDZSczAtdkVDeAp6R1RUNFJLa3ZWPCMrOC1fbndi
c2piQTVCTikzVkNYX0RjaWFlYzstSmwmdEspQjVoZStmdkgrRHErMCFjS2gxQXQKemBTcG56c1g2
SFoyPmd0VWU9SUc8c2w0cFAqdStPWXtyJHBmWTN1d0ZmRnYkMEM5fnthVyFYOTlILW56TmwlNHRy
CnpkY1VXb2k7YUhrJWtTfURDRWR6djJ9QTxMcjFlak0wSDFgRXAjJFAkJTh2Tm1kS24mK2Bad19M
RDtwb0V3K3BOPQp6bXRQVjY9PWBvfSF+N3QhdmE4R1hWbl9QNz93RnBASHpocVc1R0RyQSZkJXxO
KjZ7biUtY09uLSt4RHwte1BPcyQKenU2ezBKMDkoSHhBdiFUN3YkVy1iZWs3ISYze1UkNSRAeUt6
UHZFPm5LTUFuSXNPK0BsakJiTmMpMW44JEdiYGhOCnokfSMkYkJhYnFjOzheRHJOUCZNZW59Jml3
TTNwWmJmJGkre0Vgak1mPzdSZSRtQHphZkJSd3JUZHN1cWV5dH1tQQp6S1J3QlJVO2BuMHI2cnxA
T0RBVGZDSTI4e1AqPHJxS2YpcThKKnlsdDFHZFdgZ0RuXnFLbjxQKyFhdCUtJnc+bGYKel9xcSVu
Nz99SH5LNTlLUXFwU3M4Mk14PjRObEFaSFc3JlJMdHp+PEdxJTZPXjxzYz8hSlZNcWxePmJVeGZR
V15GCnohT3tqcGEjKDd7MiFFSXBMMjZTNXE7PCMkTld6RyQocX5KNzByRCZUbS1eVXc2JDkoQns8
XiZYamY4eSFVa1RxSAp6VkchI0ppX34kantjckh+UzhtSCtjYVN6UjRjMGtmaCljJjE3PGlDUmcj
V3pzYDdlZCN8RTEwamRLUil5MUReX2sKeig3XkNBbl9YVUIwZ2t+Iz4rJEhIJUY4Mkc7XjZxZWgy
WGM5UnVjR0kkJXJ3IThXMVcxUGJNS3srRV9nTyt9elEmCno5QFhxc3VTJkkrT35Fenp8SWh5bDFZ
cG8mVjFTcUVEcHNpVmZ3a1RgWTdNWWtJb05zS25je3J4ZUNpeEB6SHgzawp6Qn5HKig9TUhobHha
Qi1VOWBmUzZCeVd7PiZwWUg5I3dAbXk5YzhDazE+UWAyRH44Q35AKFhGRyVJWFFGUmgtSUoKelo+
b0g/TDJYazkpUDI9aEtkYXg+LVNLczdrPnwtPDxYIVIrc1lXQntQJiRGV00rQGl8XmViQT9ZLWk/
fk42aiNuCnokK3o+dntDbURnPj1Gaz5zQjklWXhsJGdObXQrSWdOQnZ6cnB7ZFQmcHtPUSQ4ZylQ
fnBjRkkhTy03czE5JmBAZgp6TEohYz5JMStRKjkjNm9WJjM2MH5LMVhhNCg/byRkRGxVdE1xT1I7
TjJnbmEoRk1OISo2bC1KP1JlKlFte3JESUAKemhrd05iTmhUUmRhPi1fTGZWN3w7PT9pb3E5Wmpk
djwjWiRjb2JJRWk9cH1tMzlMfmx1cWFueVlWN09VYlIrViVzCnotQ2lmP2V0TClnUiR0T2QpX3Y9
N3lQbG43a0dFci1HMHA7S3BMNSg8PllSNFF4PVVUO2omdjhlPWlNJnVWMFZYbQp6eiYreGdifU1e
TmN5K3g3VVEzVTcodT8oO19xdXQjSmIxOFVeeWFfdiQ3T2BmbEg9dDJhO0wxVXM7ZyZJay1Ea0UK
emJ6QStLb345UytnWmhPMk5nR3l9KSFjZzRJJThmaVo8KWNZOXkzYHE+JTtvOVM2RDd2Jk9UeHIq
Zzx4UVUxIUN0CnpHT3hqLWNySmdSdWkpR0dLN05IcWk5ZEB4QHJoX0ZaTlUxMTxTSlVGc2JUN0Fs
dE1PPHskeDh6cmE+cUspazJMPgp6T1ZrOz9od3stPFJEaFpUZEl4WTN7c0dXQ1BPZygrVEFrTFZD
YmVpUmVVWitmMytNe144UW52VihDX0ZLZFkzKz0KelJtYFcmWEgwNDtiQ1VVe3h4eT9rOF85KW9w
TnYkdVJYelEtdTVFPWZoam5LWSpiSGBAODkrY21mT0FgfWBMbGQ1CnpwVCRxfGJObTZYQng7Q281
aCtZemlFLWolNWlBYFVFdVdWISR4T0xQLWpUITk+dU1keS0qQFVxUmlje2YpfHpRWQp6cFY4TyFK
JmkxQiNhZXg+IVBZZUU5YyFNSVp8d21Nc0FBVyYrdHx3UFlreT4/SktzODJvITNBYzM+U0N8JXxx
K1oKemNDO1RBOyRgPyN7NWAmZGdHaENmTlAzWjFMN3dONSNpVzJ0QmVPfDlgSC12d3RkNWYoTmZy
N09aQVJNeTQmNypQCnprZlN5NVB1aD5zNlpBVTBMbzF0KDhFKzw9LTxjMjFuazxTOVdzX0pRZHlu
T19iP2daSG50amkleiRoOH5Oblczfgp6OzZeKmNTUCNUZTxYfjYxZXt1OE5PS3ZSNFBrKG9+OHwr
cDBwN05UM2NHZF4hRitJb1k8WmJmcWRZKERMdGpnRCQKem82SThmbHYhLXZIU2U9NUs5Yk1sYFRS
NCFuX3VVQGExUGl0bEZqNUVjfkpJTEx0d1A/KWVeTnlaQzdFc3dsPWxXCnoyZHVCSHYoYGlGWFh7
dCVQajt3WCEpezxsKn5EJlY9aCZtfE4lbDs4aU1gVFpYSyUxfisyN2NnP0ZZOHcjNXB9Ywp6LWlA
UnslOUJ3Q3dFfTV6UTRjZiVPKyZ3LSQ4a3FJMTwlMnxhVk9IKz59cmxPWFBTTjM4ejcmUF8qOVVe
Ykcocz0KejdDWGdXaylTKjI2PyZVfiNoUGc0VDg3PWxQUDl8KGpkckcmMUExWmZmcSpJYT43c2g1
VU1kQS1ickFJNlJoNlNnCnpzaitIO254ZnVOR3ReQT11OX5NbFA+YSt1d05rQkN1YCkqcndhaGww
S341IzdDeVo/LT5Jal40MjdRa2ohT0pBRgp6QCFQbCtRS1VXamk5QTY0YVZVOH0+ZThrWih9U29P
KXk1cmdCSlBQXyRNZi0qY3M0bWxCI28hdFgrQio9PWdAVUAKejN4KEg3bk5jajN6MEVmQVVIbEBD
NzJRT1ptPl8wfU1kRXFVVGNuOXh2MFVzSVV4LTIodU0kLSFXbj54PDE4KjIjCnpsNnhlTWNBP1gw
UmwxaWhXfDUkdWg/YHQ7bzQ0YUpKZFAqdUIlYUs+XlBhcDlQdnJ4N0k/dj9VRnJzN2xjcz8xaAp6
bzZodDJZI3paNj0mTzNIYCs+WEstUnQpQyMmfigmTl5oSFkhbl5BRXYrYD9qdVk1TF5FbiVte1Aw
PkpWVjNxZDMKeipnSTdaZCN6b34kI2cyWGkkSF5wJHVxS29ZTmMqRG1FOEpuMylnV3d4fkVtSzNm
MFpEM3Y5a3B8RWpCNURPUWZQCnorZDY0SVY7NEJ2b20wKndDKXU2aSZIYEwzcUJAOEpHbWwweShG
JH1EVHw8eEkrU3RRTXhGNFIydWlAJlhIbU9WTQp6a3cmQmBYK2NeT09jPnpxMFA/WFU5eUZeSD18
WHlkZXg7QiFHS2RUVEo8QjFaJFE8JU1Td05QTTY8fFI9Q1Z3TkoKemt9YyNqdld4NV5tJmdeK3h0
cnRgeGw0V3t5X2tfXzchdndBM0d7Rj15Q297aD5YT0leb1BqXlhSaVdQQXs3dEAqCnpVKmF7dWM1
UmptKUdrJTE3eD0qJTNrYF9saHhpTyFmO1cmO3EkK0pxdnVRSlAzKEtYZVheYDIkOUF8RFl1YlVt
JQp6WG0qfWUxaWFWcSVBJWgqQ2EjSGJhKkYmOD85PihjcXI1M14kLURBNSEwPUQxM1J1UEpzPHhg
RD5ad01tc2NOQkcKekUzNnAyJDs/c2hSamk2dnAtIXMycyp0WWR5eUMjazNrfTB4RU8tRztNQU9r
NnY7XiV5TWQmSXJAUksrU1dVeENQCnppZiF+fmwjQmIzaURXNzsmfT1lfkVGKXtsSGdiJHFXMjwt
fXphWHhOIzxHUkh0cWdybjE/bFZobWFiI2Z3Xn0tOwp6KTVlakd2N19gSk9ZbG0zMndnXzt4SWI5
SFAhZGpSa08ocX56cmhSRzBvSWF0MWglLSZPWmQ8SEsySD1+IzdIcXUKekVEK25BNkhZSThtXjs+
ZSROZGtkdUdfKXc9VDM2eHlVV345KypAdT5aP3BIJSpVX1chX0JZX316M3g0P2pgeS1SCnolM0JF
aiE8WEtDekojeWxUWD0qeCVObTE+RUIrUjVFTHc/ZmEqZGIpd3FUMW1FUXtxZkg5e0F2d1IqU3lN
SkhSbQp6dFJkRHxWQ2lxSCtaTUtldSUye2dmYWtLIytHeT53OHJaUytLc3kpTVhwe1lTKEN4LWZi
TFdFRiYtPmlqO35hM2wKemFFXmlYSj4/QVdoSSgmJSM5OGpYMCR4STg5RVA5NSVgd0hYY3NpYm1e
S21TQmhoJml7QiRSUipMbGMzdWQoaT1PCnpKK1NzNmRYaVEhcERecDFPfkdtbkZeOE1lJW45YVMm
NHAkfEhpJWBpUmppUDBXdUxSbD5eP2dMOSNJd1VeNT1NRwp6VkEtcXVZaiVPJVZRb056eU14e2kw
ZDFZbGpxfjdwMFgmdFI1TkVCayFGa3w+eFliPH54UDY+RS1KUipLMFI1P2cKenNzckVEJDFTaH5Q
Q0FDcTxMJSgzXmQ/dkZGcCRkZzxPZ3p7anlCdHtSMGR1UStzJVNgRXh0ZTswYmxHbElafDEmCnpx
NiRfdVJrKF4kN1JjOHdieGEpciRzRFdCc01ALUAtbTchSG8lKE5qbE9FdzVfMEQqVWJRXyE2JilG
e21wUldacgp6emlTJmU0NUkrcjc7bT85K0IjI01pT3Y+aGhsNS1PS0ZjMlc3cWBTYz9WU1QoJj4h
ZENzO315PTJDSmM5TDU4YWcKenY9O1JPRktRQzRCQVNZfFlPNU5qPnNpJDVpQjh9WV5iOzx8diVx
NWhPenNkMk5HSDxIXmxOJlMtbG82T25yNjdVCnoqRjBvaUhHZVdJdmsqMko/N347PEJ4fWNHYDYj
Z1JgXjBmXlNgPUF4dFl5fEo+eX54VHMkdGkkVntDczswKzFSWgp6MGlVNDBYZCtxKUIpRzZlMk41
Uzs1WHNfWShNUitiPjAlaGo/PkkzVHtKfWkmb3xyRWRpeDAmYnYwaUt6SkhYLWAKejdHSHshZloj
PU9Sb29EXyNSQ3h9c3spQk1MZHtUYilETmByRkpRcVEwfl5wODd2UXp7LXw8KTI9THRiPHU9fWU/
CnoyPjNxWj1Aan02eStDViR2fWBvRG5ON2ZKTmRRXnMmVSp1RTQraFIyNGwqemlgMSZvN2d1bjhJ
ZF5zPVI+d3ReNAp6Z1M7SCVOQkllVW1TNW5QTEY8YjdKI0w2ZiFVKEhpV0pDV1JMJX1FJUpnfSF3
THVnU0gjMHA4VXRURV8wbCFVc1gKem9+U1B4aD0hdFVeY290RWEpQ01DTDM0cTUmIVkzX0JEdytn
c3t8TSUyblhYM2tve1VYOTdve0J4RVhHVkwrbWlTCnptS3w9IyokTHBZPTZVT1YtRUNPR208bTdI
UHsoQElqKmspSjBrXjRRSXZfViYlbXdUZ2lsdTtGZmhZdzBIajFyKQp6O0JLJk5ociFQLTB1O31S
Xk1LPUpWOHQ3dlNkQHRTIWpNNVNTY2I/alN4Ymg0TjgzO35rJiFZPUI1NnRxVVQyQVcKei0hOzQt
RlczdzUhbnw1dXhFSkJLMHxNbHRmSjFEbm9mVHVuU3FXQj5tMjZHNnJgaWtjQjBKY0xiYXZZJWM3
b0YjCnpjciVDdmdWY252U31kR0p1IWdKJml2LV5hdjJxSyNseiN8VjdqblAtO1ZNRWtSODNTUVhi
MXYtYGxRO1p3fVN0Xgp6VGtxRzBeLSoxPFB3S1AheXVQUn1nVUAoRjd3Wnl6QUFJWn1FNyVHRlBy
SF5DWmJldVB0dE04YTY9Zm1JMWZPeXYKeiotQ2JoLURFI0dPcGNOd2Eqfl97T30kN2lsTitSJWwj
dSh4cGd9WWtXPEN2UjZCPGRRQzwwR2VRayU4fCMpK2N8CnpHPkltSUtoY3grcHtkfDhycWZLWUp0
T0hEa2dDYWFEKTxJQGJUKnchPWhLQ0JEZzYqO1BLOShvSnhxJiRwVSU/cgpVKVd8SEdrRTAtdmxu
P355e28mXzcwbWV0bzB7e1IzCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9CVUlMRC5n
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL0JV
SUxELmduCmluZGV4IDQzZDFkZmU5ZjcxMjk4ZDM5NWVhMmQ5NzYzMThmMjUxY2ZiMmUwNzcuLjRl
ZDA3YWY5ODMwYTUyOTM4MTlhZjdmN2QwYzRmYjI4Y2FlZmExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL0JVSUxELmduCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL0JV
SUxELmduCkBAIC02MCw2ICs2MCwzMiBAQCBncm91cCgiZXhhbXBsZXMiKSB7CiAgIH0KIH0KIAor
cnRjX3NvdXJjZV9zZXQoInJlYWRfYXV0aF9maWxlIikgeworICB0ZXN0b25seSA9IHRydWUKKyAg
c291cmNlcyA9IFsKKyAgICAidHVybnNlcnZlci9yZWFkX2F1dGhfZmlsZS5jYyIsCisgICAgInR1
cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vcnRj
X2Jhc2U6cnRjX2Jhc2UiLAorICBdCit9CisKK2lmIChydGNfaW5jbHVkZV90ZXN0cykgeworICBy
dGNfdGVzdCgiZXhhbXBsZXNfdW5pdHRlc3RzIikgeworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAg
IHNvdXJjZXMgPSBbCisgICAgICAidHVybnNlcnZlci9yZWFkX2F1dGhfZmlsZV91bml0dGVzdC5j
YyIsCisgICAgXQorICAgIGRlcHMgPSBbCisgICAgICAiOnJlYWRfYXV0aF9maWxlIiwKKyAgICAg
ICIuLi90ZXN0OnRlc3RfbWFpbiIsCisgICAgICAiLy90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAg
ICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgICBdCisgIH0KK30KKwogaWYgKGlzX2FuZHJvaWQpIHsK
ICAgcnRjX2FuZHJvaWRfYXBrKCJBcHBSVENNb2JpbGUiKSB7CiAgICAgdGVzdG9ubHkgPSB0cnVl
CkBAIC0xNjYsMTUgKzE5MiwxMiBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgIi4uL2J1aWxk
L2FuZHJvaWQvYWRiX3JldmVyc2VfZm9yd2FyZGVyLnB5IiwKICAgICAgICIuLi9leGFtcGxlcy9h
bmRyb2lkdGVzdHMvdmlkZW9fcXVhbGl0eV9sb29wYmFja190ZXN0LnB5IiwKICAgICAgICIuLi9y
ZXNvdXJjZXMvcmVmZXJlbmNlX3ZpZGVvXzY0MHgzNjBfMzBmcHMueTRtIiwKLSAgICAgICIuLi9y
dGNfdG9vbHMvYmFyY29kZV90b29scy9iYXJjb2RlX2RlY29kZXIucHkiLAotICAgICAgIi4uL3J0
Y190b29scy9iYXJjb2RlX3Rvb2xzL2hlbHBlcl9mdW5jdGlvbnMucHkiLAogICAgICAgIi4uL3J0
Y190b29scy9jb21wYXJlX3ZpZGVvcy5weSIsCiAgICAgICAiLi4vcnRjX3Rvb2xzL3Rlc3Rpbmcv
cHJlYnVpbHRfYXBwcnRjLnppcCIsCiAgICAgICAiLi4vcnRjX3Rvb2xzL3Rlc3RpbmcvZ29sYW5n
L2xpbnV4L2dvLnRhci5neiIsCiAgICAgICAiLi4vcnRjX3Rvb2xzL3Rlc3RpbmcvYnVpbGRfYXBw
cnRjLnB5IiwKICAgICAgICIuLi9ydGNfdG9vbHMvdGVzdGluZy91dGlscy5weSIsCiAgICAgICAi
Li4vdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL2xpbnV4L2ZmbXBlZyIsCi0g
ICAgICAiLi4vdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL2xpbnV4L3p4aW5n
IiwKICAgICAgICIke3Jvb3Rfb3V0X2Rpcn0vZnJhbWVfYW5hbHl6ZXJfaG9zdCIsCiAgICAgXQog
ICB9CkBAIC00ODAsOCArNTAzLDEwIEBAIGlmIChpc19pb3MgfHwgKGlzX21hYyAmJiB0YXJnZXRf
Y3B1ICE9ICJ4ODYiKSkgewogICAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlv
bl9hcGkiLAogICAgICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2RlY29k
ZXJfZmFjdG9yeSIsCiAgICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAgICAgIi4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2Jp
dHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICAgICAiLi4vbG9nZ2luZzpydGNfZXZlbnRf
bG9nX2ltcGxfYmFzZSIsCiAgICAgICAgICIuLi9tZWRpYTpydGNfYXVkaW9fdmlkZW8iLAorICAg
ICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgICAgICIuLi9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAgICIuLi9wYzps
aWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24iLAogICAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2Ui
LApAQCAtNjI1LDEyICs2NTAsMTMgQEAgaWYgKGlzX2lvcyB8fCAoaXNfbWFjICYmIHRhcmdldF9j
cHUgIT0gIng4NiIpKSB7CiAgICAgICBydGNfaW9zX3hjdGVzdF90ZXN0KCJhcHBydGNtb2JpbGVf
dGVzdHMiKSB7CiAgICAgICAgIGluZm9fcGxpc3QgPSAib2JqYy9BcHBSVENNb2JpbGUvaW9zL0lu
Zm8ucGxpc3QiCiAgICAgICAgIHNvdXJjZXMgPSBbCi0gICAgICAgICAgIm9iamMvQXBwUlRDTW9i
aWxlL2lvcy9tYWluLm0iLAorICAgICAgICAgICJvYmpjL0FwcFJUQ01vYmlsZS90ZXN0cy9tYWlu
Lm1tIiwKICAgICAgICAgXQogICAgICAgICBkZXBzID0gWwogICAgICAgICAgICI6QXBwUlRDTW9i
aWxlX2xpYiIsCiAgICAgICAgICAgIjphcHBydGNtb2JpbGVfdGVzdF9zb3VyY2VzIiwKICAgICAg
ICAgICAiLi4vc2RrOmZyYW1ld29ya19vYmpjIiwKKyAgICAgICAgICAiLy90ZXN0OnRlc3Rfc3Vw
cG9ydCIsCiAgICAgICAgIF0KICAgICAgICAgbGRmbGFncyA9IFsgIi1hbGxfbG9hZCIgXQogICAg
ICAgfQpAQCAtNjU1LDExICs2ODEsMTQgQEAgaWYgKGlzX2xpbnV4IHx8IGlzX3dpbikgewogICAg
ICAgc3VwcHJlc3NlZF9jb25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2NsYW5nOmZpbmRfYmFk
X2NvbnN0cnVjdHMiIF0KICAgICB9CiAgICAgZGVwcyA9IFsKKyAgICAgICIuLi9hcGk6Y3JlYXRl
X3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkiLAogICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNv
bm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCiAg
ICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAgICIuLi9ydGNfYmFzZTpzdHJpbmd1dGls
cyIsCiAgICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdCIsCisgICAgICAiLi4v
c3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAgICIuLi90ZXN0OmZpZWxkX3RyaWFs
IiwKICAgICBdCiAgICAgaWYgKGlzX3dpbikgewogICAgICAgc291cmNlcyArPSBbCkBAIC02OTYs
NiArNzI1LDcgQEAgaWYgKGlzX2xpbnV4IHx8IGlzX3dpbikgewogICAgICAgIi4uL2FwaS92aWRl
b19jb2RlY3M6YnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkiLAogICAgICAgIi4uL21lZGlh
OnJ0Y19hdWRpb192aWRlbyIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6YXVkaW9f
ZGV2aWNlIiwKKyAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAg
ICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAi
Li4vbW9kdWxlcy92aWRlb19jYXB0dXJlOnZpZGVvX2NhcHR1cmVfbW9kdWxlIiwKICAgICAgICIu
Li9wYzpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24iLApAQCAtNzE4LDEwICs3NDgsMTEgQEAgaWYg
KGlzX2xpbnV4IHx8IGlzX3dpbikgewogICAgICAgInBlZXJjb25uZWN0aW9uL3NlcnZlci91dGls
cy5oIiwKICAgICBdCiAgICAgZGVwcyA9IFsKLSAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAg
ICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6
c3RyaW5ndXRpbHMiLAogICAgICAgIi4uL3J0Y190b29sczpjb21tYW5kX2xpbmVfcGFyc2VyIiwK
KyAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICAgIi4uL3Rlc3Q6
ZmllbGRfdHJpYWwiLAogICAgIF0KICAgICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYgaXNf
Y2xhbmcpIHsKICAgICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xh
bmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KQEAgLTc1MCw2ICs3ODEsNyBAQCBpZiAo
aXNfbGludXggfHwgaXNfd2luKSB7CiAgICAgICAidHVybnNlcnZlci90dXJuc2VydmVyX21haW4u
Y2MiLAogICAgIF0KICAgICBkZXBzID0gWworICAgICAgIjpyZWFkX2F1dGhfZmlsZSIsCiAgICAg
ICAiLi4vcDJwOnJ0Y19wMnAiLAogICAgICAgIi4uL3BjOnJ0Y19wYyIsCiAgICAgICAiLi4vcnRj
X2Jhc2U6cnRjX2Jhc2UiLApAQCAtODA3LDYgKzgzOSw3IEBAIGlmIChpc193aW4gfHwgaXNfYW5k
cm9pZCkgewogICAgICAgY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy93aW46d2luZG93ZWQi
IF0KICAgICB9CiAgICAgZGVwcyA9IFsKKyAgICAgICIuLi9hcGk6Y3JlYXRlX3BlZXJjb25uZWN0
aW9uX2ZhY3RvcnkiLAogICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBp
IiwKICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5IiwKICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5IiwKQEAgLTgxNiw2ICs4NDksNyBAQCBpZiAoaXNfd2luIHx8IGlzX2FuZHJvaWQpIHsK
ICAgICAgICIuLi9tZWRpYTpydGNfbWVkaWEiLAogICAgICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9i
YXNlIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2UiLAorICAg
ICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAgIi4uL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICIuLi9tb2R1bGVzL3Zp
ZGVvX2NhcHR1cmU6dmlkZW9fY2FwdHVyZV9tb2R1bGUiLAogICAgICAgIi4uL3BjOmxpYmppbmds
ZV9wZWVyY29ubmVjdGlvbiIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9ERVBTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvREVQUwppbmRleCA2YTlhOWYwOWNmZmVmMzdmZmMz
MjE1NmEzYmM1YmRjOWI2M2FhMmE4Li41YjM3ODQ1NTkwMGI1MzcxNDJlOWE4MWVhNzY5YTZhMWYy
N2U3YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9leGFtcGxlcy9ERVBTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2V4YW1wbGVzL0RFUFMKQEAgLTgsNSArOCw2IEBAIGluY2x1ZGVfcnVsZXMgPSBb
CiAgICIrcDJwIiwKICAgIitwYyIsCiAgICIrc2RrL29iamMiLAorICAiK3N5c3RlbV93cmFwcGVy
cy9pbmNsdWRlIiwKICAgIit0aGlyZF9wYXJ0eS9saWJ5dXYiLAogXQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYWFycHJvamVj
dC9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFt
cGxlcy9hYXJwcm9qZWN0L09XTkVSUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzRlNTQxNzRlNjBmNjU5MGRjY2E5
OGE5ODA2Nzc3Y2MxZjljMTE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYWFycHJvamVjdC9PV05FUlMKQEAgLTAs
MCArMSBAQAorc2FrYWxAd2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFwcC9BbmRyb2lkTWFuaWZl
c3QueG1sIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBs
ZXMvYW5kcm9pZGFwcC9BbmRyb2lkTWFuaWZlc3QueG1sCmluZGV4IGQ2ZTBmZjA0MTc0NDRkYjlk
MTljMjBmMjdjNjBjZDhmNDZmOWZlMTAuLjU3NjQ0OWJiMTRlOWVkZWZlNDA1ZGNiNDdhZTVhMTIz
YzQxOTY2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvQW5kcm9pZE1hbmlmZXN0LnhtbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBw
L0FuZHJvaWRNYW5pZmVzdC54bWwKQEAgLTE4LDcgKzE4LDggQEAKICAgICA8dXNlcy1wZXJtaXNz
aW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLklOVEVSTkVUIiAvPgogICAgIDx1
c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uV1JJVEVfRVhU
RVJOQUxfU1RPUkFHRSIvPgogICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRy
b2lkLnBlcm1pc3Npb24uQUNDRVNTX05FVFdPUktfU1RBVEUiIC8+Ci0gICAgPHVzZXMtcGVybWlz
c2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5DQVBUVVJFX1ZJREVPX09VVFBV
VCIgLz4KKyAgICA8dXNlcy1wZXJtaXNzaW9uIHRvb2xzOmlnbm9yZT0iUHJvdGVjdGVkUGVybWlz
c2lvbnMiCisgICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlz
c2lvbi5DQVBUVVJFX1ZJREVPX09VVFBVVCIgLz4KIAogICAgIDwhLS0gVGhpcyBpcyBhIHRlc3Qg
YXBwbGljYXRpb24gdGhhdCBzaG91bGQgYWx3YXlzIGJlIGRlYnVnZ2FibGUuIC0tPgogICAgIDxh
cHBsaWNhdGlvbiBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2FwcF9uYW1lIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9p
ZGFwcC9yZXMvbGF5b3V0L2FjdGl2aXR5X2Nvbm5lY3QueG1sIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFwcC9yZXMvbGF5b3V0L2Fj
dGl2aXR5X2Nvbm5lY3QueG1sCmluZGV4IDgzNzA3ZjcyZWQwN2Y3Y2JkNzE0NDVlYTRjZTRjMzc4
NDI2YmQ5NjMuLjNjNTkxODk2NDQ0YTgyNWQ5YzBkZDg4YTI3NWEwM2U0N2E3NzgxNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVz
L2FuZHJvaWRhcHAvcmVzL2xheW91dC9hY3Rpdml0eV9jb25uZWN0LnhtbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3Jl
cy9sYXlvdXQvYWN0aXZpdHlfY29ubmVjdC54bWwKQEAgLTEsNiArMSw3IEBACiA8P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPExpbmVhckxheW91dAogICAgIHhtbG5zOmFu
ZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4
bWxuczp0b29scz0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vdG9vbHMiCiAgICAgYW5kcm9p
ZDpsYXlvdXRfbWFyZ2luPSIxNmRwIgogICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9w
YXJlbnQiCiAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCkBAIC0yMSw3
ICsyMiw5IEBACiAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIgogICAgICAgICBhbmRy
b2lkOmxheW91dF9tYXJnaW5Cb3R0b209IjhkcCI+CiAKKyAgICAgICAgPCEtLSBUT0RPKGNyYnVn
LmNvbS85MDA5MTIpOiBGaXggYW5kIHJlbW92ZSBsaW50IGlnbm9yZSAtLT4KICAgICAgICAgPEVk
aXRUZXh0CisgICAgICAgICAgICB0b29sczppZ25vcmU9IkxhYmVsRm9yIgogICAgICAgICAgICAg
YW5kcm9pZDppZD0iQCtpZC9yb29tX2VkaXR0ZXh0IgogICAgICAgICAgICAgYW5kcm9pZDpsYXlv
dXRfd2lkdGg9IjBkcCIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9j
b250ZW50IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFwcC9zcmMvb3JnL2FwcHNwb3QvYXBwcnRjL0NhbGxBY3Rp
dml0eS5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvYW5kcm9pZGFwcC9zcmMvb3JnL2FwcHNwb3QvYXBwcnRjL0NhbGxBY3Rpdml0eS5qYXZh
CmluZGV4IGNjYzJjM2JkOTNkODA3MGU0MzYzNjcxZTI3MzQ3ODUwNzRiYjllYWMuLjQzOTYxNTA2
YWI5M2IzMmQ1ZWIzN2M3MmM3MzU2YWE2ZmFjYmIyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvc3JjL29y
Zy9hcHBzcG90L2FwcHJ0Yy9DYWxsQWN0aXZpdHkuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3NyYy9vcmcvYXBw
c3BvdC9hcHBydGMvQ2FsbEFjdGl2aXR5LmphdmEKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWMg
Y2xhc3MgQ2FsbEFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1wbGVtZW50cyBBcHBSVENDbGll
bnQuU2lnbmFsaW5nRXZlbgogICBwcml2YXRlIFJvb21Db25uZWN0aW9uUGFyYW1ldGVycyByb29t
Q29ubmVjdGlvblBhcmFtZXRlcnM7CiAgIEBOdWxsYWJsZQogICBwcml2YXRlIFBlZXJDb25uZWN0
aW9uUGFyYW1ldGVycyBwZWVyQ29ubmVjdGlvblBhcmFtZXRlcnM7Ci0gIHByaXZhdGUgYm9vbGVh
biBpY2VDb25uZWN0ZWQ7CisgIHByaXZhdGUgYm9vbGVhbiBjb25uZWN0ZWQ7CiAgIHByaXZhdGUg
Ym9vbGVhbiBpc0Vycm9yOwogICBwcml2YXRlIGJvb2xlYW4gY2FsbENvbnRyb2xGcmFnbWVudFZp
c2libGUgPSB0cnVlOwogICBwcml2YXRlIGxvbmcgY2FsbFN0YXJ0ZWRUaW1lTXM7CkBAIC0yMDMs
NyArMjAzLDcgQEAgcHVibGljIGNsYXNzIENhbGxBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5IGlt
cGxlbWVudHMgQXBwUlRDQ2xpZW50LlNpZ25hbGluZ0V2ZW4KICAgICBnZXRXaW5kb3coKS5nZXRE
ZWNvclZpZXcoKS5zZXRTeXN0ZW1VaVZpc2liaWxpdHkoZ2V0U3lzdGVtVWlWaXNpYmlsaXR5KCkp
OwogICAgIHNldENvbnRlbnRWaWV3KFIubGF5b3V0LmFjdGl2aXR5X2NhbGwpOwogCi0gICAgaWNl
Q29ubmVjdGVkID0gZmFsc2U7CisgICAgY29ubmVjdGVkID0gZmFsc2U7CiAgICAgc2lnbmFsaW5n
UGFyYW1ldGVycyA9IG51bGw7CiAKICAgICAvLyBDcmVhdGUgVUkgY29udHJvbHMuCkBAIC01NTMs
NyArNTUzLDcgQEAgcHVibGljIGNsYXNzIENhbGxBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5IGlt
cGxlbWVudHMgQXBwUlRDQ2xpZW50LlNpZ25hbGluZ0V2ZW4KIAogICAvLyBIZWxwZXIgZnVuY3Rp
b25zLgogICBwcml2YXRlIHZvaWQgdG9nZ2xlQ2FsbENvbnRyb2xGcmFnbWVudFZpc2liaWxpdHko
KSB7Ci0gICAgaWYgKCFpY2VDb25uZWN0ZWQgfHwgIWNhbGxGcmFnbWVudC5pc0FkZGVkKCkpIHsK
KyAgICBpZiAoIWNvbm5lY3RlZCB8fCAhY2FsbEZyYWdtZW50LmlzQWRkZWQoKSkgewogICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAvLyBTaG93L2hpZGUgY2FsbCBjb250cm9sIGZyYWdtZW50CkBA
IC02NDksNyArNjQ5LDcgQEAgcHVibGljIGNsYXNzIENhbGxBY3Rpdml0eSBleHRlbmRzIEFjdGl2
aXR5IGltcGxlbWVudHMgQXBwUlRDQ2xpZW50LlNpZ25hbGluZ0V2ZW4KICAgICAgIGF1ZGlvTWFu
YWdlci5zdG9wKCk7CiAgICAgICBhdWRpb01hbmFnZXIgPSBudWxsOwogICAgIH0KLSAgICBpZiAo
aWNlQ29ubmVjdGVkICYmICFpc0Vycm9yKSB7CisgICAgaWYgKGNvbm5lY3RlZCAmJiAhaXNFcnJv
cikgewogICAgICAgc2V0UmVzdWx0KFJFU1VMVF9PSyk7CiAgICAgfSBlbHNlIHsKICAgICAgIHNl
dFJlc3VsdChSRVNVTFRfQ0FOQ0VMRUQpOwpAQCAtOTExLDggKzkxMSw2IEBAIHB1YmxpYyBjbGFz
cyBDYWxsQWN0aXZpdHkgZXh0ZW5kcyBBY3Rpdml0eSBpbXBsZW1lbnRzIEFwcFJUQ0NsaWVudC5T
aWduYWxpbmdFdmVuCiAgICAgICBAT3ZlcnJpZGUKICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsK
ICAgICAgICAgbG9nQW5kVG9hc3QoIklDRSBjb25uZWN0ZWQsIGRlbGF5PSIgKyBkZWx0YSArICJt
cyIpOwotICAgICAgICBpY2VDb25uZWN0ZWQgPSB0cnVlOwotICAgICAgICBjYWxsQ29ubmVjdGVk
KCk7CiAgICAgICB9CiAgICAgfSk7CiAgIH0KQEAgLTkyMyw3ICs5MjEsMzAgQEAgcHVibGljIGNs
YXNzIENhbGxBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5IGltcGxlbWVudHMgQXBwUlRDQ2xpZW50
LlNpZ25hbGluZ0V2ZW4KICAgICAgIEBPdmVycmlkZQogICAgICAgcHVibGljIHZvaWQgcnVuKCkg
ewogICAgICAgICBsb2dBbmRUb2FzdCgiSUNFIGRpc2Nvbm5lY3RlZCIpOwotICAgICAgICBpY2VD
b25uZWN0ZWQgPSBmYWxzZTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfQorCisgIEBPdmVycmlkZQor
ICBwdWJsaWMgdm9pZCBvbkNvbm5lY3RlZCgpIHsKKyAgICBmaW5hbCBsb25nIGRlbHRhID0gU3lz
dGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBjYWxsU3RhcnRlZFRpbWVNczsKKyAgICBydW5PblVp
VGhyZWFkKG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIHZv
aWQgcnVuKCkgeworICAgICAgICBsb2dBbmRUb2FzdCgiRFRMUyBjb25uZWN0ZWQsIGRlbGF5PSIg
KyBkZWx0YSArICJtcyIpOworICAgICAgICBjb25uZWN0ZWQgPSB0cnVlOworICAgICAgICBjYWxs
Q29ubmVjdGVkKCk7CisgICAgICB9CisgICAgfSk7CisgIH0KKworICBAT3ZlcnJpZGUKKyAgcHVi
bGljIHZvaWQgb25EaXNjb25uZWN0ZWQoKSB7CisgICAgcnVuT25VaVRocmVhZChuZXcgUnVubmFi
bGUoKSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAg
ICAgbG9nQW5kVG9hc3QoIkRUTFMgZGlzY29ubmVjdGVkIik7CisgICAgICAgIGNvbm5lY3RlZCA9
IGZhbHNlOwogICAgICAgICBkaXNjb25uZWN0KCk7CiAgICAgICB9CiAgICAgfSk7CkBAIC05Mzcs
NyArOTU4LDcgQEAgcHVibGljIGNsYXNzIENhbGxBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5IGlt
cGxlbWVudHMgQXBwUlRDQ2xpZW50LlNpZ25hbGluZ0V2ZW4KICAgICBydW5PblVpVGhyZWFkKG5l
dyBSdW5uYWJsZSgpIHsKICAgICAgIEBPdmVycmlkZQogICAgICAgcHVibGljIHZvaWQgcnVuKCkg
ewotICAgICAgICBpZiAoIWlzRXJyb3IgJiYgaWNlQ29ubmVjdGVkKSB7CisgICAgICAgIGlmICgh
aXNFcnJvciAmJiBjb25uZWN0ZWQpIHsKICAgICAgICAgICBodWRGcmFnbWVudC51cGRhdGVFbmNv
ZGVyU3RhdGlzdGljcyhyZXBvcnRzKTsKICAgICAgICAgfQogICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9p
ZGFwcC9zcmMvb3JnL2FwcHNwb3QvYXBwcnRjL1BlZXJDb25uZWN0aW9uQ2xpZW50LmphdmEgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lk
YXBwL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvUGVlckNvbm5lY3Rpb25DbGllbnQuamF2YQppbmRl
eCA5NDEzNWRlZDRkNjQ4NzEzY2U1NGE1MmVmMzllZDkyYWZmNzA5MTIyLi5mODVhNzg4ZjNkMTZj
NjcwOTU0OWQ0YzhjM2VmZTk4ZjljOGZmMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3NyYy9vcmcvYXBw
c3BvdC9hcHBydGMvUGVlckNvbm5lY3Rpb25DbGllbnQuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3NyYy9vcmcv
YXBwc3BvdC9hcHBydGMvUGVlckNvbm5lY3Rpb25DbGllbnQuamF2YQpAQCAtNTIsNiArNTIsNyBA
QCBpbXBvcnQgb3JnLndlYnJ0Yy5NZWRpYVN0cmVhbVRyYWNrOwogaW1wb3J0IG9yZy53ZWJydGMu
TWVkaWFTdHJlYW1UcmFjay5NZWRpYVR5cGU7CiBpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVj
dGlvbjsKIGltcG9ydCBvcmcud2VicnRjLlBlZXJDb25uZWN0aW9uLkljZUNvbm5lY3Rpb25TdGF0
ZTsKK2ltcG9ydCBvcmcud2VicnRjLlBlZXJDb25uZWN0aW9uLlBlZXJDb25uZWN0aW9uU3RhdGU7
CiBpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbkZhY3Rvcnk7CiBpbXBvcnQgb3JnLndl
YnJ0Yy5SdHBQYXJhbWV0ZXJzOwogaW1wb3J0IG9yZy53ZWJydGMuUnRwUmVjZWl2ZXI7CkBAIC0y
OTMsMTEgKzI5NCwyMyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25DbGllbnQgewogICAg
IHZvaWQgb25JY2VDb25uZWN0ZWQoKTsKIAogICAgIC8qKgotICAgICAqIENhbGxiYWNrIGZpcmVk
IG9uY2UgY29ubmVjdGlvbiBpcyBjbG9zZWQgKEljZUNvbm5lY3Rpb25TdGF0ZSBpcworICAgICAq
IENhbGxiYWNrIGZpcmVkIG9uY2UgY29ubmVjdGlvbiBpcyBkaXNjb25uZWN0ZWQgKEljZUNvbm5l
Y3Rpb25TdGF0ZSBpcwogICAgICAqIERJU0NPTk5FQ1RFRCkuCiAgICAgICovCiAgICAgdm9pZCBv
bkljZURpc2Nvbm5lY3RlZCgpOwogCisgICAgLyoqCisgICAgICogQ2FsbGJhY2sgZmlyZWQgb25j
ZSBEVExTIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQgKFBlZXJDb25uZWN0aW9uU3RhdGUKKyAg
ICAgKiBpcyBDT05ORUNURUQpLgorICAgICAqLworICAgIHZvaWQgb25Db25uZWN0ZWQoKTsKKwor
ICAgIC8qKgorICAgICAqIENhbGxiYWNrIGZpcmVkIG9uY2UgRFRMUyBjb25uZWN0aW9uIGlzIGRp
c2Nvbm5lY3RlZCAoUGVlckNvbm5lY3Rpb25TdGF0ZQorICAgICAqIGlzIERJU0NPTk5FQ1RFRCku
CisgICAgICovCisgICAgdm9pZCBvbkRpc2Nvbm5lY3RlZCgpOworCiAgICAgLyoqCiAgICAgICog
Q2FsbGJhY2sgZmlyZWQgb25jZSBwZWVyIGNvbm5lY3Rpb24gaXMgY2xvc2VkLgogICAgICAqLwpA
QCAtMTI2Myw2ICsxMjc2LDIwIEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbkNsaWVudCB7
CiAgICAgICB9KTsKICAgICB9CiAKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNv
bm5lY3Rpb25DaGFuZ2UoZmluYWwgUGVlckNvbm5lY3Rpb24uUGVlckNvbm5lY3Rpb25TdGF0ZSBu
ZXdTdGF0ZSkgeworICAgICAgZXhlY3V0b3IuZXhlY3V0ZSgoKSAtPiB7CisgICAgICAgIExvZy5k
KFRBRywgIlBlZXJDb25uZWN0aW9uU3RhdGU6ICIgKyBuZXdTdGF0ZSk7CisgICAgICAgIGlmIChu
ZXdTdGF0ZSA9PSBQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCkgeworICAgICAgICAgIGV2
ZW50cy5vbkNvbm5lY3RlZCgpOworICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlID09IFBlZXJD
b25uZWN0aW9uU3RhdGUuRElTQ09OTkVDVEVEKSB7CisgICAgICAgICAgZXZlbnRzLm9uRGlzY29u
bmVjdGVkKCk7CisgICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUgPT0gUGVlckNvbm5lY3Rpb25T
dGF0ZS5GQUlMRUQpIHsKKyAgICAgICAgICByZXBvcnRFcnJvcigiRFRMUyBjb25uZWN0aW9uIGZh
aWxlZC4iKTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAg
ICAgcHVibGljIHZvaWQgb25JY2VHYXRoZXJpbmdDaGFuZ2UoUGVlckNvbm5lY3Rpb24uSWNlR2F0
aGVyaW5nU3RhdGUgbmV3U3RhdGUpIHsKICAgICAgIExvZy5kKFRBRywgIkljZUdhdGhlcmluZ1N0
YXRlOiAiICsgbmV3U3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGp1bml0L09XTkVSUyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRqdW5pdC9P
V05FUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2M0ZTU0MTc0ZTYwZjY1OTBkY2NhOThhOTgwNjc3N2NjMWY5YzEx
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL2FuZHJvaWRqdW5pdC9PV05FUlMKQEAgLTAsMCArMSBAQAorc2FrYWxA
d2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGp1bml0L3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvVENQ
Q2hhbm5lbENsaWVudFRlc3QuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRqdW5pdC9zcmMvb3JnL2FwcHNwb3QvYXBwcnRjL1RD
UENoYW5uZWxDbGllbnRUZXN0LmphdmEKaW5kZXggOGM1ZjM4Y2NiMzFiMTZhZmU1YmEzZWU4YjI4
NDQ3ZjdmNmY3OTUzZi4uYTg4MDZlYzVmN2Q2N2MxNmIwOWZjMzdiZDYxY2Q0ZDNkM2E5Y2NkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvYW5kcm9pZGp1bml0L3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvVENQQ2hhbm5lbENsaWVu
dFRlc3QuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9leGFtcGxlcy9hbmRyb2lkanVuaXQvc3JjL29yZy9hcHBzcG90L2FwcHJ0Yy9UQ1BDaGFubmVs
Q2xpZW50VGVzdC5qYXZhCkBAIC0zOCwxMCArMzgsMTAgQEAgcHVibGljIGNsYXNzIFRDUENoYW5u
ZWxDbGllbnRUZXN0IHsKICAgICogSG93IGxvbmcgd2Ugd2FpdCBiZWZvcmUgdHJ5aW5nIHRvIGNv
bm5lY3QgdG8gdGhlIHNlcnZlci4gTm90ZTogd2FzCiAgICAqIHByZXZpb3VzbHkgb25seSAxMCwg
d2hpY2ggd2FzIHRvbyBzaG9ydCAodGVzdHMgd2VyZSBmbGFreSkuCiAgICAqLwotICBwcml2YXRl
IHN0YXRpYyBmaW5hbCBpbnQgU0VSVkVSX1dBSVQgPSAxMDA7Ci0gIHByaXZhdGUgc3RhdGljIGZp
bmFsIGludCBDT05ORUNUX1RJTUVPVVQgPSAxMDA7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGlu
dCBTRU5EX1RJTUVPVVQgPSAxMDA7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBESVNDT05O
RUNUX1RJTUVPVVQgPSAxMDA7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTRVJWRVJfV0FJ
VCA9IDMwMDsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTk5FQ1RfVElNRU9VVCA9IDEw
MDA7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTRU5EX1RJTUVPVVQgPSAxMDAwOworICBw
cml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRElTQ09OTkVDVF9USU1FT1VUID0gMTAwMDsKICAgcHJp
dmF0ZSBzdGF0aWMgZmluYWwgaW50IFRFUk1JTkFUSU9OX1RJTUVPVVQgPSAxMDAwOwogICBwcml2
YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEVTVF9NRVNTQUdFX1NFUlZFUiA9ICJIZWxsbywgU2Vy
dmVyISI7CiAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBURVNUX01FU1NBR0VfQ0xJRU5U
ID0gIkhlbGxvLCBDbGllbnQhIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRuYXRpdmVhcGkvQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lk
bmF0aXZlYXBpL0JVSUxELmduCmluZGV4IDU1NjhlYjExZGRlM2ViZjNiOTUxYjAyYTYyYWE2ODU1
MTMyODY1ZTEuLjc5Mjg2NDBjYzZmNWNhYWVhZWE5YzZhNzE1NmNkMGQ2NjEzZjljNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVz
L2FuZHJvaWRuYXRpdmVhcGkvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZG5hdGl2ZWFwaS9CVUlMRC5nbgpAQCAt
NDksMTAgKzQ5LDEyIEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgICAiLy9hcGk6bGliamluZ2xl
X3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgICAiLy9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5f
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKICAgICAgICIvL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRp
bl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLAorICAgICAgIi8vYXBpL3ZpZGVvOmJ1aWx0aW5fdmlk
ZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAgICAgICAiLy9sb2dnaW5nOnJ0Y19ldmVu
dF9sb2dfaW1wbF9iYXNlIiwKICAgICAgICIvL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCiAgICAg
ICAiLy9tZWRpYTpydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIiwKICAgICAgICIvL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZyIsCisgICAgICAiLy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBp
IiwKICAgICAgICIvL21vZHVsZXMvdXRpbGl0eTp1dGlsaXR5IiwKICAgICAgICIvL3BjOmxpYmpp
bmdsZV9wZWVyY29ubmVjdGlvbiIsCiAgICAgICAiLy9ydGNfYmFzZTpydGNfYmFzZSIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxl
cy9hbmRyb2lkbmF0aXZlYXBpL2puaS9hbmRyb2lkY2FsbGNsaWVudC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRuYXRpdmVhcGkv
am5pL2FuZHJvaWRjYWxsY2xpZW50LmNjCmluZGV4IDAwNWYzNjlhNmQxMDQ2MjJkZGRiMGJkYmVm
ODA3MWE4MTJmMjEyMzMuLmExMzk0Y2QwMWM1MjNkYzY5MDQ4MzBmM2FjOWFmOTg3NmM0OWQ1YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4
YW1wbGVzL2FuZHJvaWRuYXRpdmVhcGkvam5pL2FuZHJvaWRjYWxsY2xpZW50LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRu
YXRpdmVhcGkvam5pL2FuZHJvaWRjYWxsY2xpZW50LmNjCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgog
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3Rvcnku
aCIKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJh
cGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiZXhhbXBsZXMvYW5kcm9pZG5hdGl2ZWFwaS9nZW5lcmF0ZWRfam5pL2puaS9DYWxsQ2xp
ZW50X2puaS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGRlY29kZXJmYWN0b3J5
LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZW5jb2RlcmZhY3RvcnkuaCIKQEAg
LTk5LDcgKzEwMCw4IEBAIHZvaWQgQW5kcm9pZENhbGxDbGllbnQ6OkNhbGwoSk5JRW52KiBlbnYs
CiAgIHJlbW90ZV9zaW5rXyA9IHdlYnJ0Yzo6SmF2YVRvTmF0aXZlVmlkZW9TaW5rKGVudiwgcmVt
b3RlX3Npbmsub2JqKCkpOwogCiAgIHZpZGVvX3NvdXJjZV8gPSB3ZWJydGM6OkNyZWF0ZUphdmFW
aWRlb1NvdXJjZShlbnYsIHNpZ25hbGluZ190aHJlYWRfLmdldCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaXNfc2NyZWVuY2FzdCAq
Lyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBp
c19zY3JlZW5jYXN0PSAqLyBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIGFsaWduX3RpbWVzdGFtcHM9ICovIHRydWUpOwogCiAgIENyZWF0
ZVBlZXJDb25uZWN0aW9uKCk7CiAgIENvbm5lY3QoKTsKQEAgLTE1OSw2ICsxNjEsNyBAQCB2b2lk
IEFuZHJvaWRDYWxsQ2xpZW50OjpDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSB7CiAgICAg
ICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpLAogICAgICAg
ICAgIGFic2w6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6SW50ZXJuYWxFbmNvZGVyRmFjdG9yeT4oKSwK
ICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTx3ZWJydGM6OkludGVybmFsRGVjb2RlckZhY3Rv
cnk+KCksCisgICAgICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2Nh
dG9yRmFjdG9yeSgpLAogICAgICAgICAgIG51bGxwdHIgLyogYXVkaW9fbWl4ZXIgKi8sIHdlYnJ0
Yzo6QXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpKTsKICAgUlRDX0xPRyhMU19JTkZP
KSA8PCAiTWVkaWEgZW5naW5lIGNyZWF0ZWQ6ICIgPDwgbWVkaWFfZW5naW5lLmdldCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFt
cGxlcy9hbmRyb2lkdGVzdHMvQW5kcm9pZE1hbmlmZXN0LnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWR0ZXN0cy9BbmRyb2lkTWFu
aWZlc3QueG1sCmluZGV4IDdjZDUyYmM1MzFkNzRiOWU4NjFmMGI1YzMwNjJjOTVhM2E0NTY0YWUu
LmRhZTJlOTgwYTZhNjBhN2YzNGZlYWI4ZjkzZjc3MWY0ZmRjMWU5MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWR0
ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWR0ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1s
CkBAIC0xNCw3ICsxNCw3IEBACiAgICAgICBwYWNrYWdlPSJvcmcuYXBwc3BvdC5hcHBydGMudGVz
dCI+CiAKICAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNz
aW9uLlJVTl9JTlNUUlVNRU5UQVRJT04iIC8+Ci0gICAgPHVzZXMtc2RrIGFuZHJvaWQ6bWluU2Rr
VmVyc2lvbj0iMTMiIGFuZHJvaWQ6dGFyZ2V0U2RrVmVyc2lvbj0iMjEiIC8+CisgICAgPHVzZXMt
c2RrIGFuZHJvaWQ6bWluU2RrVmVyc2lvbj0iMTYiIGFuZHJvaWQ6dGFyZ2V0U2RrVmVyc2lvbj0i
MjEiIC8+CiAKICAgICA8YXBwbGljYXRpb24+CiAgICAgICAgIDx1c2VzLWxpYnJhcnkgYW5kcm9p
ZDpuYW1lPSJhbmRyb2lkLnRlc3QucnVubmVyIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL3NyYy9v
cmcvYXBwc3BvdC9hcHBydGMvdGVzdC9QZWVyQ29ubmVjdGlvbkNsaWVudFRlc3QuamF2YSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWR0
ZXN0cy9zcmMvb3JnL2FwcHNwb3QvYXBwcnRjL3Rlc3QvUGVlckNvbm5lY3Rpb25DbGllbnRUZXN0
LmphdmEKaW5kZXggZTI2NzQwMTdlNDU2ZTA1OTc2MWJhZjUwMmZhMTc5MDUyNjlhMDEwYi4uYzE2
NWY1OWIwMzNkNTNmZGQwOTJhZjczM2ExODBjYzdkYTQ2NWVmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3Rz
L3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvdGVzdC9QZWVyQ29ubmVjdGlvbkNsaWVudFRlc3QuamF2
YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxl
cy9hbmRyb2lkdGVzdHMvc3JjL29yZy9hcHBzcG90L2FwcHJ0Yy90ZXN0L1BlZXJDb25uZWN0aW9u
Q2xpZW50VGVzdC5qYXZhCkBAIC0xODMsNiArMTgzLDE2IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29u
bmVjdGlvbkNsaWVudFRlc3QgaW1wbGVtZW50cyBQZWVyQ29ubmVjdGlvbkV2ZW50cyB7CiAgICAg
fQogICB9CiAKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyB2b2lkIG9uQ29ubmVjdGVkKCkgeworICAg
IExvZy5kKFRBRywgIkRUTFMgQ29ubmVjdGVkIik7CisgIH0KKworICBAT3ZlcnJpZGUKKyAgcHVi
bGljIHZvaWQgb25EaXNjb25uZWN0ZWQoKSB7CisgICAgTG9nLmQoVEFHLCAiRFRMUyBEaXNjb25u
ZWN0ZWQiKTsKKyAgfQorCiAgIEBPdmVycmlkZQogICBwdWJsaWMgdm9pZCBvblBlZXJDb25uZWN0
aW9uQ2xvc2VkKCkgewogICAgIExvZy5kKFRBRywgIlBlZXJDb25uZWN0aW9uIGNsb3NlZCIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvYW5kcm9pZHRlc3RzL3ZpZGVvX3F1YWxpdHlfbG9vcGJhY2tfdGVzdC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWR0ZXN0
cy92aWRlb19xdWFsaXR5X2xvb3BiYWNrX3Rlc3QucHkKaW5kZXggMTlkZDM3YzNkMzZiZmM4NGVj
Yzk4MjRhYWE2NjA3ZjczYzIxZWRkMy4uZmMxOThhODI2Zjc5NjI0NDRiNjQ4NTg2OGI0YjIwYTNk
NWQ2ZTI5NyAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL3ZpZGVvX3F1YWxpdHlfbG9vcGJhY2tfdGVzdC5w
eQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxl
cy9hbmRyb2lkdGVzdHMvdmlkZW9fcXVhbGl0eV9sb29wYmFja190ZXN0LnB5CkBAIC0xOTAsMjAg
KzE5MCwxMyBAQCBkZWYgUnVuVGVzdChhbmRyb2lkX2RldmljZSwgYWRiX3BhdGgsIGJ1aWxkX2Rp
ciwgdGVtcF9kaXIsIG51bV9yZXRyaWVzLAogICAjIFJ1biBjb21wYXJpc29uIHNjcmlwdC4KICAg
Y29tcGFyZV9zY3JpcHQgPSBvcy5wYXRoLmpvaW4oU1JDX0RJUiwgJ3J0Y190b29scycsICdjb21w
YXJlX3ZpZGVvcy5weScpCiAgIGZyYW1lX2FuYWx5emVyID0gb3MucGF0aC5qb2luKGJ1aWxkX2Rp
ciwgJ2ZyYW1lX2FuYWx5emVyX2hvc3QnKQotICB6eGluZ19wYXRoID0gb3MucGF0aC5qb2luKFRP
T0xDSEFJTl9ESVIsICd6eGluZycpCi0gIHN0YXRzX2ZpbGVfcmVmID0gb3MucGF0aC5qb2luKHRl
bXBfZGlyLCAnc3RhdHNfcmVmLnR4dCcpCi0gIHN0YXRzX2ZpbGVfdGVzdCA9IG9zLnBhdGguam9p
bih0ZW1wX2RpciwgJ3N0YXRzX3Rlc3QudHh0JykKIAogICBhcmdzID0gWwogICAgICAgJy0tcmVm
X3ZpZGVvJywgcmVmZXJlbmNlX3ZpZGVvX3l1diwKICAgICAgICctLXRlc3RfdmlkZW8nLCB0ZXN0
X3ZpZGVvX3l1diwKICAgICAgICctLXl1dl9mcmFtZV93aWR0aCcsICc2NDAnLAogICAgICAgJy0t
eXV2X2ZyYW1lX2hlaWdodCcsICczNjAnLAotICAgICAgJy0tc3RhdHNfZmlsZV9yZWYnLCBzdGF0
c19maWxlX3JlZiwKLSAgICAgICctLXN0YXRzX2ZpbGVfdGVzdCcsIHN0YXRzX2ZpbGVfdGVzdCwK
ICAgICAgICctLWZyYW1lX2FuYWx5emVyJywgZnJhbWVfYW5hbHl6ZXIsCi0gICAgICAnLS1mZm1w
ZWdfcGF0aCcsIGZmbXBlZ19wYXRoLAotICAgICAgJy0tenhpbmdfcGF0aCcsIHp4aW5nX3BhdGgs
CiAgIF0KICAgaWYgY2hhcnRqc29uX3Jlc3VsdF9maWxlOgogICAgIGFyZ3MuZXh0ZW5kKFsnLS1j
aGFydGpzb25fcmVzdWx0X2ZpbGUnLCBjaGFydGpzb25fcmVzdWx0X2ZpbGVdKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2Jq
Yy9BcHBSVENNb2JpbGUvQVJEQXBwQ2xpZW50Lm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9BUkRBcHBDbGllbnQu
bQppbmRleCA5YTBkMzY5NWY5MTYxNTQ2OWM5OTBkMTEyMmQxYWVlY2RiZmY2MGU1Li44YjNkMTA1
Nzk3ZTJmZmY2ODYxYWJhNWRlYTNlMTBlZTk5Y2ExMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmls
ZS9BUkRBcHBDbGllbnQubQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9BUkRBcHBDbGllbnQubQpAQCAtNDAw
LDEwICs0MDAsMTUgQEAgLSAodm9pZClwZWVyQ29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24g
KilwZWVyQ29ubmVjdGlvbgogICAgIGRpZENoYW5nZUljZUNvbm5lY3Rpb25TdGF0ZTooUlRDSWNl
Q29ubmVjdGlvblN0YXRlKW5ld1N0YXRlIHsKICAgUlRDTG9nKEAiSUNFIHN0YXRlIGNoYW5nZWQ6
ICVsZCIsIChsb25nKW5ld1N0YXRlKTsKICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKLSAgICBbX2RlbGVnYXRlIGFwcENsaWVudDpzZWxmIGRpZENoYW5nZUNv
bm5lY3Rpb25TdGF0ZTpuZXdTdGF0ZV07CisgICAgW3NlbGYuZGVsZWdhdGUgYXBwQ2xpZW50OnNl
bGYgZGlkQ2hhbmdlQ29ubmVjdGlvblN0YXRlOm5ld1N0YXRlXTsKICAgfSk7CiB9CiAKKy0gKHZv
aWQpcGVlckNvbm5lY3Rpb246KFJUQ1BlZXJDb25uZWN0aW9uICopcGVlckNvbm5lY3Rpb24KKyAg
ICBkaWRDaGFuZ2VDb25uZWN0aW9uU3RhdGU6KFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUpbmV3U3Rh
dGUgeworICBSVENMb2coQCJJQ0UrRFRMUyBzdGF0ZSBjaGFuZ2VkOiAlbGQiLCAobG9uZyluZXdT
dGF0ZSk7Cit9CisKIC0gKHZvaWQpcGVlckNvbm5lY3Rpb246KFJUQ1BlZXJDb25uZWN0aW9uICop
cGVlckNvbm5lY3Rpb24KICAgICBkaWRDaGFuZ2VJY2VHYXRoZXJpbmdTdGF0ZTooUlRDSWNlR2F0
aGVyaW5nU3RhdGUpbmV3U3RhdGUgewogICBSVENMb2coQCJJQ0UgZ2F0aGVyaW5nIHN0YXRlIGNo
YW5nZWQ6ICVsZCIsIChsb25nKW5ld1N0YXRlKTsKQEAgLTQ1MCwxNiArNDU1LDE2IEBAIC0gKHZv
aWQpcGVlckNvbm5lY3Rpb246KFJUQ1BlZXJDb25uZWN0aW9uICopcGVlckNvbm5lY3Rpb24KICAg
ICAgICAgICBbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOmtBUkRBcHBDbGllbnRFcnJv
ckRvbWFpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6a0FSREFw
cENsaWVudEVycm9yQ3JlYXRlU0RQCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2VySW5mbzp1c2VySW5mb107Ci0gICAgICBbX2RlbGVnYXRlIGFwcENsaWVudDpzZWxmIGRpZEVy
cm9yOnNkcEVycm9yXTsKKyAgICAgIFtzZWxmLmRlbGVnYXRlIGFwcENsaWVudDpzZWxmIGRpZEVy
cm9yOnNkcEVycm9yXTsKICAgICAgIHJldHVybjsKICAgICB9CiAgICAgX193ZWFrIEFSREFwcENs
aWVudCAqd2Vha1NlbGYgPSBzZWxmOwotICAgIFtfcGVlckNvbm5lY3Rpb24gc2V0TG9jYWxEZXNj
cmlwdGlvbjpzZHAKLSAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXI6XihO
U0Vycm9yICplcnJvcikgewotICAgICAgICAgICAgICAgICAgICAgICAgIEFSREFwcENsaWVudCAq
c3Ryb25nU2VsZiA9IHdlYWtTZWxmOwotICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJvbmdT
ZWxmIHBlZXJDb25uZWN0aW9uOnN0cm9uZ1NlbGYucGVlckNvbm5lY3Rpb24KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkU2V0U2Vzc2lvbkRlc2NyaXB0aW9uV2l0aEVycm9yOmVycm9y
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgfV07CisgICAgW3NlbGYucGVlckNvbm5lY3Rpb24g
c2V0TG9jYWxEZXNjcmlwdGlvbjpzZHAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQVJEQXBwQ2xpZW50ICpzdHJvbmdTZWxmID0gd2Vha1NlbGY7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtzdHJvbmdTZWxmIHBlZXJDb25uZWN0aW9uOnN0cm9uZ1NlbGYucGVl
ckNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFNldFNlc3Np
b25EZXNjcmlwdGlvbldpdGhFcnJvcjplcnJvcl07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9XTsKICAgICBBUkRTZXNzaW9uRGVzY3JpcHRpb25NZXNzYWdlICptZXNzYWdlID0KICAgICAg
ICAgW1tBUkRTZXNzaW9uRGVzY3JpcHRpb25NZXNzYWdlIGFsbG9jXSBpbml0V2l0aERlc2NyaXB0
aW9uOnNkcF07CiAgICAgW3NlbGYgc2VuZFNpZ25hbGluZ01lc3NhZ2U6bWVzc2FnZV07CkBAIC00
ODAsMjIgKzQ4NSwyMSBAQCAtICh2b2lkKXBlZXJDb25uZWN0aW9uOihSVENQZWVyQ29ubmVjdGlv
biAqKXBlZXJDb25uZWN0aW9uCiAgICAgICAgICAgW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERv
bWFpbjprQVJEQXBwQ2xpZW50RXJyb3JEb21haW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb2RlOmtBUkRBcHBDbGllbnRFcnJvclNldFNEUAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlckluZm86dXNlckluZm9dOwotICAgICAgW19kZWxlZ2F0ZSBh
cHBDbGllbnQ6c2VsZiBkaWRFcnJvcjpzZHBFcnJvcl07CisgICAgICBbc2VsZi5kZWxlZ2F0ZSBh
cHBDbGllbnQ6c2VsZiBkaWRFcnJvcjpzZHBFcnJvcl07CiAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIC8vIElmIHdlJ3JlIGFuc3dlcmluZyBhbmQgd2UndmUganVzdCBzZXQgdGhlIHJlbW90ZSBv
ZmZlciB3ZSBuZWVkIHRvIGNyZWF0ZQogICAgIC8vIGFuIGFuc3dlciBhbmQgc2V0IHRoZSBsb2Nh
bCBkZXNjcmlwdGlvbi4KLSAgICBpZiAoIV9pc0luaXRpYXRvciAmJiAhX3BlZXJDb25uZWN0aW9u
LmxvY2FsRGVzY3JpcHRpb24pIHsKKyAgICBpZiAoIXNlbGYuaXNJbml0aWF0b3IgJiYgIXNlbGYu
cGVlckNvbm5lY3Rpb24ubG9jYWxEZXNjcmlwdGlvbikgewogICAgICAgUlRDTWVkaWFDb25zdHJh
aW50cyAqY29uc3RyYWludHMgPSBbc2VsZiBkZWZhdWx0QW5zd2VyQ29uc3RyYWludHNdOwogICAg
ICAgX193ZWFrIEFSREFwcENsaWVudCAqd2Vha1NlbGYgPSBzZWxmOwotICAgICAgW19wZWVyQ29u
bmVjdGlvbiBhbnN3ZXJGb3JDb25zdHJhaW50czpjb25zdHJhaW50cwotICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcjpeKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiAqc2Rw
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TRXJyb3Ig
KmVycm9yKSB7Ci0gICAgICAgIEFSREFwcENsaWVudCAqc3Ryb25nU2VsZiA9IHdlYWtTZWxmOwot
ICAgICAgICBbc3Ryb25nU2VsZiBwZWVyQ29ubmVjdGlvbjpzdHJvbmdTZWxmLnBlZXJDb25uZWN0
aW9uCi0gICAgICAgICAgICBkaWRDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb246c2RwCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6ZXJyb3JdOwotICAgICAgfV07CisgICAg
ICBbc2VsZi5wZWVyQ29ubmVjdGlvbiBhbnN3ZXJGb3JDb25zdHJhaW50czpjb25zdHJhaW50cwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXI6XihSVENTZXNz
aW9uRGVzY3JpcHRpb24gKnNkcCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQVJEQXBwQ2xpZW50ICpzdHJvbmdTZWxmID0gd2Vha1NlbGY7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJvbmdTZWxmIHBlZXJDb25uZWN0aW9uOnN0
cm9uZ1NlbGYucGVlckNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbjpzZHAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjplcnJvcl07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9XTsKICAgICB9CiAgIH0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2Jq
Yy9BcHBSVENNb2JpbGUvQVJEU3RhdHNCdWlsZGVyLm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9BUkRTdGF0c0J1
aWxkZXIubQppbmRleCBjZmUyZWM1Y2Q4Mjg1NjkwMDdmMjM5YjFkZWJkNzczOGNlMWRiZDllLi5m
OWExOTIwMzk5MjExYmY3YTYzYzBhZGZhNzdmMzIxYzdlZGE0MzkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJU
Q01vYmlsZS9BUkRTdGF0c0J1aWxkZXIubQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9BUkRTdGF0c0J1aWxk
ZXIubQpAQCAtMTY3LDIzICsxNjcsNDMgQEAgLSAoaW50KWNhbGN1bGF0ZUF2Z1FQIHsKICAgcmV0
dXJuIGRlbHRhRnJhbWVzRW5jb2RlZCAhPSAwID8gZGVsdGFRUFN1bSAvIGRlbHRhRnJhbWVzRW5j
b2RlZCA6IDA7CiB9CiAKKy0gKHZvaWQpdXBkYXRlQndlU3RhdE9mS2V5OihOU1N0cmluZyAqKWtl
eSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSB7CisgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpA
Imdvb2dBdmFpbGFibGVTZW5kQmFuZHdpZHRoIl0pIHsKKyAgICBfYXZhaWxhYmxlU2VuZEJ3ID0g
W0FSREJpdHJhdGVUcmFja2VyIGJpdHJhdGVTdHJpbmdGb3JCaXRyYXRlOnZhbHVlLmRvdWJsZVZh
bHVlXTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dBdmFpbGFibGVS
ZWNlaXZlQmFuZHdpZHRoIl0pIHsKKyAgICBfYXZhaWxhYmxlUmVjdkJ3ID0gW0FSREJpdHJhdGVU
cmFja2VyIGJpdHJhdGVTdHJpbmdGb3JCaXRyYXRlOnZhbHVlLmRvdWJsZVZhbHVlXTsKKyAgfSBl
bHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dBY3R1YWxFbmNCaXRyYXRlIl0pIHsK
KyAgICBfYWN0dWFsRW5jQml0cmF0ZSA9IFtBUkRCaXRyYXRlVHJhY2tlciBiaXRyYXRlU3RyaW5n
Rm9yQml0cmF0ZTp2YWx1ZS5kb3VibGVWYWx1ZV07CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFs
VG9TdHJpbmc6QCJnb29nVGFyZ2V0RW5jQml0cmF0ZSJdKSB7CisgICAgX3RhcmdldEVuY0JpdHJh
dGUgPSBbQVJEQml0cmF0ZVRyYWNrZXIgYml0cmF0ZVN0cmluZ0ZvckJpdHJhdGU6dmFsdWUuZG91
YmxlVmFsdWVdOworICB9Cit9CisKIC0gKHZvaWQpcGFyc2VCd2VTdGF0c1JlcG9ydDooUlRDTGVn
YWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7Ci0gIFtzdGF0c1JlcG9ydC52YWx1ZXMgZW51
bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oCi0gICAgICBOU1N0cmluZyAqa2V5LCBO
U1N0cmluZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsKLSAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJnb29nQXZhaWxhYmxlU2VuZEJhbmR3aWR0aCJdKSB7Ci0gICAgICBfYXZhaWxhYmxlU2Vu
ZEJ3ID0KLSAgICAgICAgICBbQVJEQml0cmF0ZVRyYWNrZXIgYml0cmF0ZVN0cmluZ0ZvckJpdHJh
dGU6dmFsdWUuZG91YmxlVmFsdWVdOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJnb29nQXZhaWxhYmxlUmVjZWl2ZUJhbmR3aWR0aCJdKSB7Ci0gICAgICBfYXZhaWxhYmxl
UmVjdkJ3ID0KLSAgICAgICAgICBbQVJEQml0cmF0ZVRyYWNrZXIgYml0cmF0ZVN0cmluZ0ZvckJp
dHJhdGU6dmFsdWUuZG91YmxlVmFsdWVdOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9T
dHJpbmc6QCJnb29nQWN0dWFsRW5jQml0cmF0ZSJdKSB7Ci0gICAgICBfYWN0dWFsRW5jQml0cmF0
ZSA9Ci0gICAgICAgICAgW0FSREJpdHJhdGVUcmFja2VyIGJpdHJhdGVTdHJpbmdGb3JCaXRyYXRl
OnZhbHVlLmRvdWJsZVZhbHVlXTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5n
OkAiZ29vZ1RhcmdldEVuY0JpdHJhdGUiXSkgewotICAgICAgX3RhcmdldEVuY0JpdHJhdGUgPQot
ICAgICAgICAgIFtBUkRCaXRyYXRlVHJhY2tlciBiaXRyYXRlU3RyaW5nRm9yQml0cmF0ZTp2YWx1
ZS5kb3VibGVWYWx1ZV07Ci0gICAgfQotICB9XTsKKyAgW3N0YXRzUmVwb3J0LnZhbHVlcworICAg
ICAgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKmtleSwgTlNT
dHJpbmcgKnZhbHVlLCBCT09MICpzdG9wKSB7CisgICAgICAgIFtzZWxmIHVwZGF0ZUJ3ZVN0YXRP
ZktleTprZXkgdmFsdWU6dmFsdWVdOworICAgICAgfV07Cit9CisKKy0gKHZvaWQpdXBkYXRlQ29u
bmVjdGlvblN0YXRPZktleTooTlNTdHJpbmcgKilrZXkgdmFsdWU6KE5TU3RyaW5nICopdmFsdWUg
eworICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nUnR0Il0pIHsKKyAgICBfY29ublJ0
dCA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0xvY2Fs
Q2FuZGlkYXRlVHlwZSJdKSB7CisgICAgX2xvY2FsQ2FuZFR5cGUgPSB2YWx1ZTsKKyAgfSBlbHNl
IGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dSZW1vdGVDYW5kaWRhdGVUeXBlIl0pIHsK
KyAgICBfcmVtb3RlQ2FuZFR5cGUgPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxU
b1N0cmluZzpAImdvb2dUcmFuc3BvcnRUeXBlIl0pIHsKKyAgICBfdHJhbnNwb3J0VHlwZSA9IHZh
bHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiYnl0ZXNSZWNlaXZlZCJd
KSB7CisgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZhbHVlLmludGVnZXJWYWx1ZTsKKyAgICBb
X2Nvbm5SZWN2Qml0cmF0ZVRyYWNrZXIgdXBkYXRlQml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50
OmJ5dGVDb3VudF07CisgICAgX2Nvbm5SZWN2Qml0cmF0ZSA9IF9jb25uUmVjdkJpdHJhdGVUcmFj
a2VyLmJpdHJhdGVTdHJpbmc7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJi
eXRlc1NlbnQiXSkgeworICAgIE5TSW50ZWdlciBieXRlQ291bnQgPSB2YWx1ZS5pbnRlZ2VyVmFs
dWU7CisgICAgW19jb25uU2VuZEJpdHJhdGVUcmFja2VyIHVwZGF0ZUJpdHJhdGVXaXRoQ3VycmVu
dEJ5dGVDb3VudDpieXRlQ291bnRdOworICAgIF9jb25uU2VuZEJpdHJhdGUgPSBfY29ublNlbmRC
aXRyYXRlVHJhY2tlci5iaXRyYXRlU3RyaW5nOworICB9CiB9CiAKIC0gKHZvaWQpcGFyc2VDb25u
ZWN0aW9uU3RhdHNSZXBvcnQ6KFJUQ0xlZ2FjeVN0YXRzUmVwb3J0ICopc3RhdHNSZXBvcnQgewpA
QCAtMTkxLDI2ICsyMTEsMTAgQEAgLSAodm9pZClwYXJzZUNvbm5lY3Rpb25TdGF0c1JlcG9ydDoo
UlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7CiAgIGlmICghW2FjdGl2ZUNvbm5l
Y3Rpb24gaXNFcXVhbFRvU3RyaW5nOkAidHJ1ZSJdKSB7CiAgICAgcmV0dXJuOwogICB9Ci0gIFtz
dGF0c1JlcG9ydC52YWx1ZXMgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oCi0g
ICAgICBOU1N0cmluZyAqa2V5LCBOU1N0cmluZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsKLSAgICBp
ZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nUnR0Il0pIHsKLSAgICAgIF9jb25uUnR0ID0g
dmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dMb2NhbENh
bmRpZGF0ZVR5cGUiXSkgewotICAgICAgX2xvY2FsQ2FuZFR5cGUgPSB2YWx1ZTsKLSAgICB9IGVs
c2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ1JlbW90ZUNhbmRpZGF0ZVR5cGUiXSkg
ewotICAgICAgX3JlbW90ZUNhbmRUeXBlID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlz
RXF1YWxUb1N0cmluZzpAImdvb2dUcmFuc3BvcnRUeXBlIl0pIHsKLSAgICAgIF90cmFuc3BvcnRU
eXBlID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImJ5dGVz
UmVjZWl2ZWQiXSkgewotICAgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZhbHVlLmludGVnZXJW
YWx1ZTsKLSAgICAgIFtfY29ublJlY3ZCaXRyYXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1
cnJlbnRCeXRlQ291bnQ6Ynl0ZUNvdW50XTsKLSAgICAgIF9jb25uUmVjdkJpdHJhdGUgPSBfY29u
blJlY3ZCaXRyYXRlVHJhY2tlci5iaXRyYXRlU3RyaW5nOwotICAgIH0gZWxzZSBpZiAoW2tleSBp
c0VxdWFsVG9TdHJpbmc6QCJieXRlc1NlbnQiXSkgewotICAgICAgTlNJbnRlZ2VyIGJ5dGVDb3Vu
dCA9IHZhbHVlLmludGVnZXJWYWx1ZTsKLSAgICAgIFtfY29ublNlbmRCaXRyYXRlVHJhY2tlciB1
cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRlQ291bnQ6Ynl0ZUNvdW50XTsKLSAgICAgIF9jb25u
U2VuZEJpdHJhdGUgPSBfY29ublNlbmRCaXRyYXRlVHJhY2tlci5iaXRyYXRlU3RyaW5nOwotICAg
IH0KLSAgfV07CisgIFtzdGF0c1JlcG9ydC52YWx1ZXMKKyAgICAgIGVudW1lcmF0ZUtleXNBbmRP
YmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAq
c3RvcCkgeworICAgICAgICBbc2VsZiB1cGRhdGVDb25uZWN0aW9uU3RhdE9mS2V5OmtleSB2YWx1
ZTp2YWx1ZV07CisgICAgICB9XTsKIH0KIAogLSAodm9pZClwYXJzZVNlbmRTc3JjU3RhdHNSZXBv
cnQ6KFJUQ0xlZ2FjeVN0YXRzUmVwb3J0ICopc3RhdHNSZXBvcnQgewpAQCAtMjI0LDUwICsyMjgs
NTggQEAgLSAodm9pZClwYXJzZVNlbmRTc3JjU3RhdHNSZXBvcnQ6KFJUQ0xlZ2FjeVN0YXRzUmVw
b3J0ICopc3RhdHNSZXBvcnQgewogICB9CiB9CiAKKy0gKHZvaWQpdXBkYXRlQXVkaW9TZW5kU3Rh
dE9mS2V5OihOU1N0cmluZyAqKWtleSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSB7CisgIGlmIChb
a2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dDb2RlY05hbWUiXSkgeworICAgIF9hdWRpb1NlbmRD
b2RlYyA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiYnl0ZXNT
ZW50Il0pIHsKKyAgICBOU0ludGVnZXIgYnl0ZUNvdW50ID0gdmFsdWUuaW50ZWdlclZhbHVlOwor
ICAgIFtfYXVkaW9TZW5kQml0cmF0ZVRyYWNrZXIgdXBkYXRlQml0cmF0ZVdpdGhDdXJyZW50Qnl0
ZUNvdW50OmJ5dGVDb3VudF07CisgICAgX2F1ZGlvU2VuZEJpdHJhdGUgPSBfYXVkaW9TZW5kQml0
cmF0ZVRyYWNrZXIuYml0cmF0ZVN0cmluZzsKKyAgfQorfQorCiAtICh2b2lkKXBhcnNlQXVkaW9T
ZW5kU3RhdHNSZXBvcnQ6KFJUQ0xlZ2FjeVN0YXRzUmVwb3J0ICopc3RhdHNSZXBvcnQgewotICBb
c3RhdHNSZXBvcnQudmFsdWVzIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKAot
ICAgICAgTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcgKnZhbHVlLCBCT09MICpzdG9wKSB7Ci0gICAg
aWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0NvZGVjTmFtZSJdKSB7Ci0gICAgICBfYXVk
aW9TZW5kQ29kZWMgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5n
OkAiYnl0ZXNTZW50Il0pIHsKLSAgICAgIE5TSW50ZWdlciBieXRlQ291bnQgPSB2YWx1ZS5pbnRl
Z2VyVmFsdWU7Ci0gICAgICBbX2F1ZGlvU2VuZEJpdHJhdGVUcmFja2VyIHVwZGF0ZUJpdHJhdGVX
aXRoQ3VycmVudEJ5dGVDb3VudDpieXRlQ291bnRdOwotICAgICAgX2F1ZGlvU2VuZEJpdHJhdGUg
PSBfYXVkaW9TZW5kQml0cmF0ZVRyYWNrZXIuYml0cmF0ZVN0cmluZzsKLSAgICB9Ci0gIH1dOwor
ICBbc3RhdHNSZXBvcnQudmFsdWVzCisgICAgICBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5n
QmxvY2s6XihOU1N0cmluZyAqa2V5LCBOU1N0cmluZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsKKyAg
ICAgICAgW3NlbGYgdXBkYXRlQXVkaW9TZW5kU3RhdE9mS2V5OmtleSB2YWx1ZTp2YWx1ZV07Cisg
ICAgICB9XTsKK30KKworLSAodm9pZCl1cGRhdGVWaWRlb1NlbmRTdGF0T2ZLZXk6KE5TU3RyaW5n
ICopa2V5IHZhbHVlOihOU1N0cmluZyAqKXZhbHVlIHsKKyAgaWYgKFtrZXkgaXNFcXVhbFRvU3Ry
aW5nOkAiZ29vZ0NvZGVjTmFtZSJdKSB7CisgICAgX3ZpZGVvU2VuZENvZGVjID0gdmFsdWU7Cisg
IH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVIZWlnaHRJbnB1dCJd
KSB7CisgICAgX3ZpZGVvSW5wdXRIZWlnaHQgPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlz
RXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVdpZHRoSW5wdXQiXSkgeworICAgIF92aWRlb0lucHV0
V2lkdGggPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dG
cmFtZVJhdGVJbnB1dCJdKSB7CisgICAgX3ZpZGVvSW5wdXRGcHMgPSB2YWx1ZTsKKyAgfSBlbHNl
IGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZUhlaWdodFNlbnQiXSkgeworICAg
IF92aWRlb1NlbmRIZWlnaHQgPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0
cmluZzpAImdvb2dGcmFtZVdpZHRoU2VudCJdKSB7CisgICAgX3ZpZGVvU2VuZFdpZHRoID0gdmFs
dWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVSYXRlU2Vu
dCJdKSB7CisgICAgX3ZpZGVvU2VuZEZwcyA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNF
cXVhbFRvU3RyaW5nOkAiZ29vZ0F2Z0VuY29kZU1zIl0pIHsKKyAgICBfdmlkZW9FbmNvZGVNcyA9
IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiYnl0ZXNTZW50Il0p
IHsKKyAgICBOU0ludGVnZXIgYnl0ZUNvdW50ID0gdmFsdWUuaW50ZWdlclZhbHVlOworICAgIFtf
dmlkZW9TZW5kQml0cmF0ZVRyYWNrZXIgdXBkYXRlQml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50
OmJ5dGVDb3VudF07CisgICAgX3ZpZGVvU2VuZEJpdHJhdGUgPSBfdmlkZW9TZW5kQml0cmF0ZVRy
YWNrZXIuYml0cmF0ZVN0cmluZzsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpA
InFwU3VtIl0pIHsKKyAgICBfb2xkVmlkZW9RUFN1bSA9IF92aWRlb1FQU3VtOworICAgIF92aWRl
b1FQU3VtID0gdmFsdWUuaW50ZWdlclZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRv
U3RyaW5nOkAiZnJhbWVzRW5jb2RlZCJdKSB7CisgICAgX29sZEZyYW1lc0VuY29kZWQgPSBfZnJh
bWVzRW5jb2RlZDsKKyAgICBfZnJhbWVzRW5jb2RlZCA9IHZhbHVlLmludGVnZXJWYWx1ZTsKKyAg
fQogfQogCiAtICh2b2lkKXBhcnNlVmlkZW9TZW5kU3RhdHNSZXBvcnQ6KFJUQ0xlZ2FjeVN0YXRz
UmVwb3J0ICopc3RhdHNSZXBvcnQgewotICBbc3RhdHNSZXBvcnQudmFsdWVzIGVudW1lcmF0ZUtl
eXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKAotICAgICAgTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcg
KnZhbHVlLCBCT09MICpzdG9wKSB7Ci0gICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29v
Z0NvZGVjTmFtZSJdKSB7Ci0gICAgICBfdmlkZW9TZW5kQ29kZWMgPSB2YWx1ZTsKLSAgICB9IGVs
c2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lSGVpZ2h0SW5wdXQiXSkgewot
ICAgICAgX3ZpZGVvSW5wdXRIZWlnaHQgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNF
cXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lV2lkdGhJbnB1dCJdKSB7Ci0gICAgICBfdmlkZW9JbnB1
dFdpZHRoID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdv
b2dGcmFtZVJhdGVJbnB1dCJdKSB7Ci0gICAgICBfdmlkZW9JbnB1dEZwcyA9IHZhbHVlOwotICAg
IH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVIZWlnaHRTZW50Il0p
IHsKLSAgICAgIF92aWRlb1NlbmRIZWlnaHQgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkg
aXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lV2lkdGhTZW50Il0pIHsKLSAgICAgIF92aWRlb1Nl
bmRXaWR0aCA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJn
b29nRnJhbWVSYXRlU2VudCJdKSB7Ci0gICAgICBfdmlkZW9TZW5kRnBzID0gdmFsdWU7Ci0gICAg
fSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dBdmdFbmNvZGVNcyJdKSB7Ci0g
ICAgICBfdmlkZW9FbmNvZGVNcyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFs
VG9TdHJpbmc6QCJieXRlc1NlbnQiXSkgewotICAgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZh
bHVlLmludGVnZXJWYWx1ZTsKLSAgICAgIFtfdmlkZW9TZW5kQml0cmF0ZVRyYWNrZXIgdXBkYXRl
Qml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50OmJ5dGVDb3VudF07Ci0gICAgICBfdmlkZW9TZW5k
Qml0cmF0ZSA9IF92aWRlb1NlbmRCaXRyYXRlVHJhY2tlci5iaXRyYXRlU3RyaW5nOwotICAgIH0g
ZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJxcFN1bSJdKSB7Ci0gICAgICBfb2xkVmlk
ZW9RUFN1bSA9IF92aWRlb1FQU3VtOwotICAgICAgX3ZpZGVvUVBTdW0gPSB2YWx1ZS5pbnRlZ2Vy
VmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImZyYW1lc0VuY29k
ZWQiXSkgewotICAgICAgX29sZEZyYW1lc0VuY29kZWQgPSBfZnJhbWVzRW5jb2RlZDsKLSAgICAg
IF9mcmFtZXNFbmNvZGVkID0gdmFsdWUuaW50ZWdlclZhbHVlOwotICAgIH0KLSAgfV07CisgIFtz
dGF0c1JlcG9ydC52YWx1ZXMKKyAgICAgIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9j
azpeKE5TU3RyaW5nICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAqc3RvcCkgeworICAgICAg
ICBbc2VsZiB1cGRhdGVWaWRlb1NlbmRTdGF0T2ZLZXk6a2V5IHZhbHVlOnZhbHVlXTsKKyAgICAg
IH1dOwogfQogCiAtICh2b2lkKXBhcnNlUmVjdlNzcmNTdGF0c1JlcG9ydDooUlRDTGVnYWN5U3Rh
dHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7CkBAIC0yODEsNDQgKzI5Myw1MiBAQCAtICh2b2lkKXBh
cnNlUmVjdlNzcmNTdGF0c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9y
dCB7CiAgIH0KIH0KIAorLSAodm9pZCl1cGRhdGVBdWRpb1JlY3ZTdGF0T2ZLZXk6KE5TU3RyaW5n
ICopa2V5IHZhbHVlOihOU1N0cmluZyAqKXZhbHVlIHsKKyAgaWYgKFtrZXkgaXNFcXVhbFRvU3Ry
aW5nOkAiZ29vZ0NvZGVjTmFtZSJdKSB7CisgICAgX2F1ZGlvUmVjdkNvZGVjID0gdmFsdWU7Cisg
IH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1JlY2VpdmVkIl0pIHsKKyAg
ICBOU0ludGVnZXIgYnl0ZUNvdW50ID0gdmFsdWUuaW50ZWdlclZhbHVlOworICAgIFtfYXVkaW9S
ZWN2Qml0cmF0ZVRyYWNrZXIgdXBkYXRlQml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50OmJ5dGVD
b3VudF07CisgICAgX2F1ZGlvUmVjdkJpdHJhdGUgPSBfYXVkaW9SZWN2Qml0cmF0ZVRyYWNrZXIu
Yml0cmF0ZVN0cmluZzsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dT
cGVlY2hFeHBhbmRSYXRlIl0pIHsKKyAgICBfYXVkaW9FeHBhbmRSYXRlID0gdmFsdWU7CisgIH0g
ZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nQ3VycmVudERlbGF5TXMiXSkgewor
ICAgIF9hdWRpb0N1cnJlbnREZWxheSA9IHZhbHVlOworICB9Cit9CisKIC0gKHZvaWQpcGFyc2VB
dWRpb1JlY3ZTdGF0c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7
Ci0gIFtzdGF0c1JlcG9ydC52YWx1ZXMgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2Nr
Ol4oCi0gICAgICBOU1N0cmluZyAqa2V5LCBOU1N0cmluZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsK
LSAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nQ29kZWNOYW1lIl0pIHsKLSAgICAg
IF9hdWRpb1JlY3ZDb2RlYyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9T
dHJpbmc6QCJieXRlc1JlY2VpdmVkIl0pIHsKLSAgICAgIE5TSW50ZWdlciBieXRlQ291bnQgPSB2
YWx1ZS5pbnRlZ2VyVmFsdWU7Ci0gICAgICBbX2F1ZGlvUmVjdkJpdHJhdGVUcmFja2VyIHVwZGF0
ZUJpdHJhdGVXaXRoQ3VycmVudEJ5dGVDb3VudDpieXRlQ291bnRdOwotICAgICAgX2F1ZGlvUmVj
dkJpdHJhdGUgPSBfYXVkaW9SZWN2Qml0cmF0ZVRyYWNrZXIuYml0cmF0ZVN0cmluZzsKLSAgICB9
IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ1NwZWVjaEV4cGFuZFJhdGUiXSkg
ewotICAgICAgX2F1ZGlvRXhwYW5kUmF0ZSA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBp
c0VxdWFsVG9TdHJpbmc6QCJnb29nQ3VycmVudERlbGF5TXMiXSkgewotICAgICAgX2F1ZGlvQ3Vy
cmVudERlbGF5ID0gdmFsdWU7Ci0gICAgfQotICB9XTsKKyAgW3N0YXRzUmVwb3J0LnZhbHVlcwor
ICAgICAgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKmtleSwg
TlNTdHJpbmcgKnZhbHVlLCBCT09MICpzdG9wKSB7CisgICAgICAgIFtzZWxmIHVwZGF0ZUF1ZGlv
UmVjdlN0YXRPZktleTprZXkgdmFsdWU6dmFsdWVdOworICAgICAgfV07Cit9CisKKy0gKHZvaWQp
dXBkYXRlVmlkZW9SZWN2U3RhdE9mS2V5OihOU1N0cmluZyAqKWtleSB2YWx1ZTooTlNTdHJpbmcg
Kil2YWx1ZSB7CisgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZUhlaWdodFJl
Y2VpdmVkIl0pIHsKKyAgICBfdmlkZW9SZWN2SGVpZ2h0ID0gdmFsdWU7CisgIH0gZWxzZSBpZiAo
W2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVXaWR0aFJlY2VpdmVkIl0pIHsKKyAgICBf
dmlkZW9SZWN2V2lkdGggPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmlu
ZzpAImdvb2dGcmFtZVJhdGVSZWNlaXZlZCJdKSB7CisgICAgX3ZpZGVvUmVjdkZwcyA9IHZhbHVl
OworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lUmF0ZURlY29k
ZWQiXSkgeworICAgIF92aWRlb0RlY29kZWRGcHMgPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChba2V5
IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVJhdGVPdXRwdXQiXSkgeworICAgIF92aWRlb091
dHB1dEZwcyA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29v
Z0RlY29kZU1zIl0pIHsKKyAgICBfdmlkZW9EZWNvZGVNcyA9IHZhbHVlOworICB9IGVsc2UgaWYg
KFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiYnl0ZXNSZWNlaXZlZCJdKSB7CisgICAgTlNJbnRlZ2Vy
IGJ5dGVDb3VudCA9IHZhbHVlLmludGVnZXJWYWx1ZTsKKyAgICBbX3ZpZGVvUmVjdkJpdHJhdGVU
cmFja2VyIHVwZGF0ZUJpdHJhdGVXaXRoQ3VycmVudEJ5dGVDb3VudDpieXRlQ291bnRdOworICAg
IF92aWRlb1JlY3ZCaXRyYXRlID0gX3ZpZGVvUmVjdkJpdHJhdGVUcmFja2VyLmJpdHJhdGVTdHJp
bmc7CisgIH0KIH0KIAogLSAodm9pZClwYXJzZVZpZGVvUmVjdlN0YXRzUmVwb3J0OihSVENMZWdh
Y3lTdGF0c1JlcG9ydCAqKXN0YXRzUmVwb3J0IHsKLSAgW3N0YXRzUmVwb3J0LnZhbHVlcyBlbnVt
ZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XigKLSAgICAgIE5TU3RyaW5nICprZXksIE5T
U3RyaW5nICp2YWx1ZSwgQk9PTCAqc3RvcCkgewotICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmlu
ZzpAImdvb2dGcmFtZUhlaWdodFJlY2VpdmVkIl0pIHsKLSAgICAgIF92aWRlb1JlY3ZIZWlnaHQg
PSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1l
V2lkdGhSZWNlaXZlZCJdKSB7Ci0gICAgICBfdmlkZW9SZWN2V2lkdGggPSB2YWx1ZTsKLSAgICB9
IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lUmF0ZVJlY2VpdmVkIl0p
IHsKLSAgICAgIF92aWRlb1JlY3ZGcHMgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNF
cXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lUmF0ZURlY29kZWQiXSkgewotICAgICAgX3ZpZGVvRGVj
b2RlZEZwcyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJn
b29nRnJhbWVSYXRlT3V0cHV0Il0pIHsKLSAgICAgIF92aWRlb091dHB1dEZwcyA9IHZhbHVlOwot
ICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRGVjb2RlTXMiXSkgewot
ICAgICAgX3ZpZGVvRGVjb2RlTXMgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVh
bFRvU3RyaW5nOkAiYnl0ZXNSZWNlaXZlZCJdKSB7Ci0gICAgICBOU0ludGVnZXIgYnl0ZUNvdW50
ID0gdmFsdWUuaW50ZWdlclZhbHVlOwotICAgICAgW192aWRlb1JlY3ZCaXRyYXRlVHJhY2tlciB1
cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRlQ291bnQ6Ynl0ZUNvdW50XTsKLSAgICAgIF92aWRl
b1JlY3ZCaXRyYXRlID0gX3ZpZGVvUmVjdkJpdHJhdGVUcmFja2VyLmJpdHJhdGVTdHJpbmc7Ci0g
ICAgfQotICB9XTsKKyAgW3N0YXRzUmVwb3J0LnZhbHVlcworICAgICAgZW51bWVyYXRlS2V5c0Fu
ZE9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcgKnZhbHVlLCBCT09M
ICpzdG9wKSB7CisgICAgICAgIFtzZWxmIHVwZGF0ZVZpZGVvUmVjdlN0YXRPZktleTprZXkgdmFs
dWU6dmFsdWVdOworICAgICAgfV07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxl
L2lvcy9BUkRNYWluVmlld0NvbnRyb2xsZXIubSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL2lvcy9BUkRNYWluVmll
d0NvbnRyb2xsZXIubQppbmRleCBmYWUzZjdiOGFhNzI2N2M2ZGI0NWJlZjI2MmVkOWIzNTYwYzZi
MjBkLi42M2IzZGQ3NmNhZDAyNWQ5YmM5ODUxMTBhZGM1MjMzMTQ0MjhhZTA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpj
L0FwcFJUQ01vYmlsZS9pb3MvQVJETWFpblZpZXdDb250cm9sbGVyLm0KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2Jp
bGUvaW9zL0FSRE1haW5WaWV3Q29udHJvbGxlci5tCkBAIC0zMiwxNCArMzIsMTcgQEAgQGludGVy
ZmFjZSBBUkRNYWluVmlld0NvbnRyb2xsZXIgKCkgPAogICAgIEFSRE1haW5WaWV3RGVsZWdhdGUs
CiAgICAgQVJEVmlkZW9DYWxsVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSwKICAgICBSVENBdWRpb1Nl
c3Npb25EZWxlZ2F0ZT4KK0Bwcm9wZXJ0eShub25hdG9taWMsIHN0cm9uZykgQVJETWFpblZpZXcg
Km1haW5WaWV3OworQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBBVkF1ZGlvUGxheWVyICph
dWRpb1BsYXllcjsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEFSRE1haW5WaWV3Q29udHJvbGxl
ciB7Ci0gIEFSRE1haW5WaWV3ICpfbWFpblZpZXc7Ci0gIEFWQXVkaW9QbGF5ZXIgKl9hdWRpb1Bs
YXllcjsKICAgQk9PTCBfdXNlTWFudWFsQXVkaW87CiB9CiAKK0BzeW50aGVzaXplIG1haW5WaWV3
ID0gX21haW5WaWV3OworQHN5bnRoZXNpemUgYXVkaW9QbGF5ZXIgPSBfYXVkaW9QbGF5ZXI7CisK
IC0gKHZvaWQpdmlld0RpZExvYWQgewogICBbc3VwZXIgdmlld0RpZExvYWRdOwogICBpZiAoW1tb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYXJndW1lbnRzXSBjb250YWluc09iamVjdDpsb29w
YmFja0xhdW5jaFByb2Nlc3NBcmd1bWVudF0pIHsKQEAgLTE2NSwxMyArMTY4LDEzIEBAIC0gKHZv
aWQpYXVkaW9TZXNzaW9uRGlkU3RhcnRQbGF5T3JSZWNvcmQ6KFJUQ0F1ZGlvU2Vzc2lvbiAqKXNl
c3Npb24gewogICAvLyBTdG9wIHBsYXliYWNrIG9uIG1haW4gcXVldWUgYW5kIHRoZW4gY29uZmln
dXJlIFdlYlJUQy4KICAgW1JUQ0Rpc3BhdGNoZXIgZGlzcGF0Y2hBc3luY09uVHlwZTpSVENEaXNw
YXRjaGVyVHlwZU1haW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jazpeewot
ICAgIGlmIChfbWFpblZpZXcuaXNBdWRpb0xvb3BQbGF5aW5nKSB7Ci0gICAgICBSVENMb2coQCJT
dG9wcGluZyBhdWRpbyBsb29wIGR1ZSB0byBXZWJSVEMgc3RhcnQuIik7Ci0gICAgICBbX2F1ZGlv
UGxheWVyIHN0b3BdOwotICAgIH0KLSAgICBSVENMb2coQCJTZXR0aW5nIGlzQXVkaW9FbmFibGVk
IHRvIFlFUy4iKTsKLSAgICBzZXNzaW9uLmlzQXVkaW9FbmFibGVkID0gWUVTOwotICB9XTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLm1haW5WaWV3LmlzQXVkaW9M
b29wUGxheWluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVENMb2co
QCJTdG9wcGluZyBhdWRpbyBsb29wIGR1ZSB0byBXZWJSVEMgc3RhcnQuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmF1ZGlvUGxheWVyIHN0b3BdOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUlRDTG9nKEAiU2V0dGluZyBpc0F1ZGlvRW5hYmxlZCB0byBZRVMuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLmlzQXVkaW9FbmFibGVkID0gWUVTOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dOwogfQogCiAtICh2b2lkKWF1ZGlvU2Vz
c2lvbkRpZFN0b3BQbGF5T3JSZWNvcmQ6KFJUQ0F1ZGlvU2Vzc2lvbiAqKXNlc3Npb24gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBs
ZXMvb2JqYy9BcHBSVENNb2JpbGUvaW9zL0FSRFZpZGVvQ2FsbFZpZXdDb250cm9sbGVyLm0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0Fw
cFJUQ01vYmlsZS9pb3MvQVJEVmlkZW9DYWxsVmlld0NvbnRyb2xsZXIubQppbmRleCAyODI3YmY5
NDQyM2NiMDIzZTQ1ZWE5ODRmNWU3NzY4N2FlNzY0YTBhLi5mN2Y0YTg3N2VmMGFhMWVkMTMxYTcx
MjI5YjRhZmYyMDdkYmFjYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9pb3MvQVJEVmlkZW9D
YWxsVmlld0NvbnRyb2xsZXIubQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9pb3MvQVJEVmlkZW9DYWxsVmll
d0NvbnRyb2xsZXIubQpAQCAtMjcsNiArMjcsNyBAQCBAaW50ZXJmYWNlIEFSRFZpZGVvQ2FsbFZp
ZXdDb250cm9sbGVyICgpIDxBUkRBcHBDbGllbnREZWxlZ2F0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ0F1ZGlvU2Vzc2lvbkRlbGVnYXRlPgogQHByb3Bl
cnR5KG5vbmF0b21pYywgc3Ryb25nKSBSVENWaWRlb1RyYWNrICpyZW1vdGVWaWRlb1RyYWNrOwog
QHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIEFSRFZpZGVvQ2FsbFZpZXcgKnZpZGVvQ2Fs
bFZpZXc7CitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEFWQXVkaW9TZXNzaW9uUG9ydE92
ZXJyaWRlIHBvcnRPdmVycmlkZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEFSRFZpZGVvQ2Fs
bFZpZXdDb250cm9sbGVyIHsKQEAgLTM0LDEyICszNSwxMiBAQCBAaW1wbGVtZW50YXRpb24gQVJE
VmlkZW9DYWxsVmlld0NvbnRyb2xsZXIgewogICBSVENWaWRlb1RyYWNrICpfcmVtb3RlVmlkZW9U
cmFjazsKICAgQVJEQ2FwdHVyZUNvbnRyb2xsZXIgKl9jYXB0dXJlQ29udHJvbGxlcjsKICAgQVJE
RmlsZUNhcHR1cmVDb250cm9sbGVyICpfZmlsZUNhcHR1cmVDb250cm9sbGVyIE5TX0FWQUlMQUJM
RV9JT1MoMTApOwotICBBVkF1ZGlvU2Vzc2lvblBvcnRPdmVycmlkZSBfcG9ydE92ZXJyaWRlOwog
fQogCiBAc3ludGhlc2l6ZSB2aWRlb0NhbGxWaWV3ID0gX3ZpZGVvQ2FsbFZpZXc7CiBAc3ludGhl
c2l6ZSByZW1vdGVWaWRlb1RyYWNrID0gX3JlbW90ZVZpZGVvVHJhY2s7CiBAc3ludGhlc2l6ZSBk
ZWxlZ2F0ZSA9IF9kZWxlZ2F0ZTsKK0BzeW50aGVzaXplIHBvcnRPdmVycmlkZSA9IF9wb3J0T3Zl
cnJpZGU7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0Rm9yUm9vbTooTlNTdHJpbmcgKilyb29tCiAg
ICAgICAgICAgICAgICAgIGlzTG9vcGJhY2s6KEJPT0wpaXNMb29wYmFjawpAQCAtMTY4LDcgKzE2
OSw3IEBAIC0gKHZvaWQpdmlkZW9DYWxsVmlld0RpZENoYW5nZVJvdXRlOihBUkRWaWRlb0NhbGxW
aWV3ICopdmlldyB7CiAgICAgW3Nlc3Npb24gbG9ja0ZvckNvbmZpZ3VyYXRpb25dOwogICAgIE5T
RXJyb3IgKmVycm9yID0gbmlsOwogICAgIGlmIChbc2Vzc2lvbiBvdmVycmlkZU91dHB1dEF1ZGlv
UG9ydDpvdmVycmlkZSBlcnJvcjomZXJyb3JdKSB7Ci0gICAgICBfcG9ydE92ZXJyaWRlID0gb3Zl
cnJpZGU7CisgICAgICBzZWxmLnBvcnRPdmVycmlkZSA9IG92ZXJyaWRlOwogICAgIH0gZWxzZSB7
CiAgICAgICBSVENMb2dFcnJvcihAIkVycm9yIG92ZXJyaWRpbmcgb3V0cHV0IHBvcnQ6ICVAIiwK
ICAgICAgICAgICAgICAgICAgIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29i
amMvQXBwUlRDTW9iaWxlL21hYy9BUFBSVENWaWV3Q29udHJvbGxlci5tIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUv
bWFjL0FQUFJUQ1ZpZXdDb250cm9sbGVyLm0KaW5kZXggOWY1ZWQ0MGIxYjQxYzI4ZWExY2YxZWQ3
M2FmMzY1ZDU0NjFiN2JjMi4uYTk3MmEyMGU0ZWE4OTg5NjRiMWViZTAyMjJhOGQyYzQ0MGJiYmZh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
ZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvbWFjL0FQUFJUQ1ZpZXdDb250cm9sbGVyLm0KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2Jq
Yy9BcHBSVENNb2JpbGUvbWFjL0FQUFJUQ1ZpZXdDb250cm9sbGVyLm0KQEAgLTM5LDYgKzM5LDcg
QEAgQGludGVyZmFjZSBBUFBSVENNYWluVmlldyA6IE5TVmlldwogQHByb3BlcnR5KG5vbmF0b21p
Yywgd2VhaykgaWQ8QVBQUlRDTWFpblZpZXdEZWxlZ2F0ZT4gZGVsZWdhdGU7CiBAcHJvcGVydHko
bm9uYXRvbWljLCByZWFkb25seSkgTlNWaWV3PFJUQ1ZpZGVvUmVuZGVyZXI+KiBsb2NhbFZpZGVv
VmlldzsKIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBOU1ZpZXc8UlRDVmlkZW9SZW5k
ZXJlcj4qIHJlbW90ZVZpZGVvVmlldzsKK0Bwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBO
U1RleHRWaWV3KiBsb2dWaWV3OwogCiAtICh2b2lkKWRpc3BsYXlMb2dNZXNzYWdlOihOU1N0cmlu
ZyopbWVzc2FnZTsKIApAQCAtNTIsNyArNTMsNiBAQCBAaW1wbGVtZW50YXRpb24gQVBQUlRDTWFp
blZpZXcgIHsKICAgTlNCdXR0b24qIF9jb25uZWN0QnV0dG9uOwogICBOU0J1dHRvbiogX2xvb3Bi
YWNrQnV0dG9uOwogICBOU1RleHRGaWVsZCogX3Jvb21GaWVsZDsKLSAgTlNUZXh0VmlldyogX2xv
Z1ZpZXc7CiAgIENHU2l6ZSBfbG9jYWxWaWRlb1NpemU7CiAgIENHU2l6ZSBfcmVtb3RlVmlkZW9T
aXplOwogfQpAQCAtNjAsMTQgKzYwLDEzIEBAIEBpbXBsZW1lbnRhdGlvbiBBUFBSVENNYWluVmll
dyAgewogQHN5bnRoZXNpemUgZGVsZWdhdGUgPSBfZGVsZWdhdGU7CiBAc3ludGhlc2l6ZSBsb2Nh
bFZpZGVvVmlldyA9IF9sb2NhbFZpZGVvVmlldzsKIEBzeW50aGVzaXplIHJlbW90ZVZpZGVvVmll
dyA9IF9yZW1vdGVWaWRlb1ZpZXc7Ci0KK0BzeW50aGVzaXplIGxvZ1ZpZXcgPSBfbG9nVmlldzsK
IAogLSAodm9pZClkaXNwbGF5TG9nTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIHsKICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICBfbG9nVmlldy5z
dHJpbmcgPQotICAgICAgICBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUBcbiIsIF9s
b2dWaWV3LnN0cmluZywgbWVzc2FnZV07Ci0gICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdl
KF9sb2dWaWV3LnN0cmluZy5sZW5ndGgsIDApOwotICAgIFtfbG9nVmlldyBzY3JvbGxSYW5nZVRv
VmlzaWJsZTpyYW5nZV07CisgICAgc2VsZi5sb2dWaWV3LnN0cmluZyA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJUAlQFxuIiwgc2VsZi5sb2dWaWV3LnN0cmluZywgbWVzc2FnZV07Cisg
ICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKHNlbGYubG9nVmlldy5zdHJpbmcubGVuZ3Ro
LCAwKTsKKyAgICBbc2VsZi5sb2dWaWV3IHNjcm9sbFJhbmdlVG9WaXNpYmxlOnJhbmdlXTsKICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL3Rlc3RzL21haW4ubW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01v
YmlsZS90ZXN0cy9tYWluLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2MjVmZmQ3YmY4MWNhODNlZTI2NmJmYTE5
OWZhOWVmMzA0ODAzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS90ZXN0cy9tYWlu
Lm1tCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbXBvcnQgPFVJS2l0
L1VJS2l0Lmg+CisKKyNpbmNsdWRlICJ0ZXN0L2lvcy9jb3ZlcmFnZV91dGlsX2lvcy5oIgorCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CisgIHJ0Yzo6dGVzdDo6Q29uZmlndXJl
Q292ZXJhZ2VSZXBvcnRQYXRoKCk7CisKKyAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgcmV0dXJu
IFVJQXBwbGljYXRpb25NYWluKGFyZ2MsIGFyZ3YsIG5pbCwgbmlsKTsKKyAgfQorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMv
b2JqY25hdGl2ZWFwaS9vYmpjL29iamNjYWxsY2xpZW50Lm1tIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqY25hdGl2ZWFwaS9vYmpjL29iamNj
YWxsY2xpZW50Lm1tCmluZGV4IGMzODRkYTNlZjhjYmJiNzc2ZGQwNWZjNTQwNTVjMjA5OWRiMTEx
Y2YuLmM3YjJhZjQyMTIzZTQ5NWQ3ZTcyYWU2NmNlY2ZkMTU3ZTMyMzgxZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamNu
YXRpdmVhcGkvb2JqYy9vYmpjY2FsbGNsaWVudC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjbmF0aXZlYXBpL29iamMvb2JqY2Nh
bGxjbGllbnQubW0KQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2Nv
ZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9wZWVy
Y29ubmVjdGlvbmludGVyZmFjZS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9idWlsdGluX3ZpZGVv
X2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvd2Vi
cnRjbWVkaWFlbmdpbmUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5j
bHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAjaW5jbHVkZSAic2RrL29iamMvbmF0aXZlL2FwaS92
aWRlb19jYXB0dXJlci5oIgpAQCAtMTE2LDEyICsxMTcsMTYgQEAgdm9pZCBPYmpDQ2FsbENsaWVu
dDo6Q3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkgewogICBzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiB2aWRlb0VuY29kZXJGYWN0b3J5ID0KICAgICAgIHdl
YnJ0Yzo6T2JqQ1RvTmF0aXZlVmlkZW9FbmNvZGVyRmFjdG9yeShbW1JUQ0RlZmF1bHRWaWRlb0Vu
Y29kZXJGYWN0b3J5IGFsbG9jXSBpbml0XSk7CiAKKyAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6
VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4gdmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9y
eSA9CisgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0
b3J5KCk7CisKICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNl
PiBtZWRpYV9lbmdpbmUgPQogICAgICAgY3JpY2tldDo6V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5
OjpDcmVhdGUobnVsbHB0ciAvKiBhZG0gKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0
b3J5KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWJydGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5KCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUodmlkZW9FbmNvZGVy
RmFjdG9yeSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1vdmUodmlkZW9EZWNvZGVyRmFjdG9yeSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUodmlkZW9CaXRyYXRlQWxsb2NhdG9y
RmFjdG9yeSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyIC8qIGF1ZGlvX21peGVyICovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3Jl
YXRlKCkpOwogICBSVENfTE9HKExTX0lORk8pIDw8ICJNZWRpYSBlbmdpbmUgY3JlYXRlZDogIiA8
PCBtZWRpYV9lbmdpbmUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvY29uZHVj
dG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBs
ZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2NvbmR1Y3Rvci5jYwppbmRleCBjMjUyNTljZTM0ZGYz
NWNhNGMzODQ1NjhmOGVmOTI0OGZjYTdkMDJhLi5hNzgxYzRhMTg3NGFhMzJiMGQ5Y2Y4MzA3YmQ1
NTBhYTA5NjY4ODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvY29uZHVjdG9yLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3Bl
ZXJjb25uZWN0aW9uL2NsaWVudC9jb25kdWN0b3IuY2MKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LmgiCisjaW5jbHVkZSAiYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgog
I2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3Rvcnku
aCIKICNpbmNsdWRlICJleGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvZGVmYXVsdHMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4
YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9mbGFnZGVmcy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50
L2ZsYWdkZWZzLmgKaW5kZXggNTY0ZTBlOTVmOTBjN2M1NWZjOTMyNWY5M2ZkMDJjN2U5ODY1NTI0
Zi4uNTFmOWM5YTQyNTVhNGFhZTNmYWY0ODBmNjU1YjBhNzc1YWNmNDFlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNv
bm5lY3Rpb24vY2xpZW50L2ZsYWdkZWZzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2ZsYWdkZWZz
LmgKQEAgLTE5LDIwICsxOSwyOSBAQCBleHRlcm4gY29uc3QgdWludDE2X3Qga0RlZmF1bHRTZXJ2
ZXJQb3J0OyAgLy8gRnJvbSBkZWZhdWx0cy5baHxjY10KIC8vIGhlYWRlciBmaWxlIHNvIHRoYXQg
dGhleSBjYW4gYmUgc2hhcmVkIGFjcm9zcyB0aGUgZGlmZmVyZW50IG1haW4uY2MncwogLy8gZm9y
IGVhY2ggcGxhdGZvcm0uCiAKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMg
bWVzc2FnZSIpOwotREVGSU5FX2Jvb2woYXV0b2Nvbm5lY3QsCi0gICAgICAgICAgICBmYWxzZSwK
LSAgICAgICAgICAgICJDb25uZWN0IHRvIHRoZSBzZXJ2ZXIgd2l0aG91dCB1c2VyICIKLSAgICAg
ICAgICAgICJpbnRlcnZlbnRpb24uIik7Ci1ERUZJTkVfc3RyaW5nKHNlcnZlciwgImxvY2FsaG9z
dCIsICJUaGUgc2VydmVyIHRvIGNvbm5lY3QgdG8uIik7Ci1ERUZJTkVfaW50KHBvcnQsCi0gICAg
ICAgICAgIGtEZWZhdWx0U2VydmVyUG9ydCwKLSAgICAgICAgICAgIlRoZSBwb3J0IG9uIHdoaWNo
IHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nLiIpOwotREVGSU5FX2Jvb2woCitXRUJSVENfREVGSU5F
X2Jvb2woaGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5F
X2Jvb2woYXV0b2Nvbm5lY3QsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAg
ICAgICAgICAgIkNvbm5lY3QgdG8gdGhlIHNlcnZlciB3aXRob3V0IHVzZXIgIgorICAgICAgICAg
ICAgICAgICAgICJpbnRlcnZlbnRpb24uIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhzZXJ2ZXIs
ICJsb2NhbGhvc3QiLCAiVGhlIHNlcnZlciB0byBjb25uZWN0IHRvLiIpOworV0VCUlRDX0RFRklO
RV9pbnQocG9ydCwKKyAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2VydmVyUG9ydCwKKyAgICAg
ICAgICAgICAgICAgICJUaGUgcG9ydCBvbiB3aGljaCB0aGUgc2VydmVyIGlzIGxpc3RlbmluZy4i
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKICAgICBhdXRvY2FsbCwKICAgICBmYWxzZSwKICAgICAi
Q2FsbCB0aGUgZmlyc3QgYXZhaWxhYmxlIG90aGVyIGNsaWVudCBvbiAiCiAgICAgInRoZSBzZXJ2
ZXIgd2l0aG91dCB1c2VyIGludGVydmVudGlvbi4gIE5vdGU6IHRoaXMgZmxhZyBzaG91bGQgb25s
eSBiZSBzZXQgIgogICAgICJ0byB0cnVlIG9uIG9uZSBvZiB0aGUgdHdvIGNsaWVudHMuIik7CiAK
K1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIGZvcmNlX2ZpZWxkdHJpYWxzLAorICAgICIiLAor
ICAgICJGaWVsZCB0cmlhbHMgY29udHJvbCBleHBlcmltZW50YWwgZmVhdHVyZXMuIFRoaXMgZmxh
ZyBzcGVjaWZpZXMgdGhlIGZpZWxkICIKKyAgICAidHJpYWxzIGluIGVmZmVjdC4gRS5nLiBydW5u
aW5nIHdpdGggIgorICAgICItLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0Vu
YWJsZWQvICIKKyAgICAid2lsbCBhc3NpZ24gdGhlIGdyb3VwIEVuYWJsZWQgdG8gZmllbGQgdHJp
YWwgV2ViUlRDLUZvb0ZlYXR1cmUuIE11bHRpcGxlICIKKyAgICAidHJpYWxzIGFyZSBzZXBhcmF0
ZWQgYnkgXCIvXCIiKTsKKwogI2VuZGlmICAvLyBFWEFNUExFU19QRUVSQ09OTkVDVElPTl9DTElF
TlRfRkxBR0RFRlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9saW51eC9tYWluLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVl
cmNvbm5lY3Rpb24vY2xpZW50L2xpbnV4L21haW4uY2MKaW5kZXggNTAxNzljNGJhNTUxMGNmMWVk
N2EzYzJlZGE2ZmEwMGFmN2RjN2IxOC4uNmMzNDY4M2QyZWE5MWQ2MTA1MWU3OGRlMDllN2ZkZDJl
OWUzODQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2xpbnV4L21haW4uY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNv
bm5lY3Rpb24vY2xpZW50L2xpbnV4L21haW4uY2MKQEAgLTE3LDYgKzE3LDggQEAKIAogI2luY2x1
ZGUgInJ0Y19iYXNlL3NzbGFkYXB0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIK
KyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgorI2luY2x1
ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKIAogY2xhc3MgQ3VzdG9tU29ja2V0U2VydmVyIDogcHVi
bGljIHJ0Yzo6UGh5c2ljYWxTb2NrZXRTZXJ2ZXIgewogIHB1YmxpYzoKQEAgLTc1LDYgKzc3LDEx
IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICByZXR1cm4gMDsKICAg
fQogCisgIHdlYnJ0Yzo6dGVzdDo6VmFsaWRhdGVGaWVsZFRyaWFsc1N0cmluZ09yRGllKEZMQUdf
Zm9yY2VfZmllbGR0cmlhbHMpOworICAvLyBJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5nIHN0b3Jl
cyB0aGUgY2hhciosIHNvIHRoZSBjaGFyIGFycmF5IG11c3Qgb3V0bGl2ZQorICAvLyB0aGUgYXBw
bGljYXRpb24uCisgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkluaXRGaWVsZFRyaWFsc0Zyb21TdHJp
bmcoRkxBR19mb3JjZV9maWVsZHRyaWFscyk7CisKICAgLy8gQWJvcnQgaWYgdGhlIHVzZXIgc3Bl
Y2lmaWVzIGEgcG9ydCB0aGF0IGlzIG91dHNpZGUgdGhlIGFsbG93ZWQKICAgLy8gcmFuZ2UgWzEs
IDY1NTM1XS4KICAgaWYgKChGTEFHX3BvcnQgPCAxKSB8fCAoRkxBR19wb3J0ID4gNjU1MzUpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9l
eGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbGludXgvbWFpbl93bmQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlv
bi9jbGllbnQvbGludXgvbWFpbl93bmQuY2MKaW5kZXggNTJiMGQ4ODUyM2MzY2E4MjNkYzk4NzA3
NDEyNTM4ZGIwZGY5YWFlNS4uMmY3Nzc3ZDFlZWExZTZlMzhkMWJiOTBmZTlmNWY2MDIzODYyMjkx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
ZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2xpbnV4L21haW5fd25kLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25u
ZWN0aW9uL2NsaWVudC9saW51eC9tYWluX3duZC5jYwpAQCAtMTgsMTEgKzE4LDggQEAKICNpbmNs
dWRlICJleGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvZGVmYXVsdHMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5
dXYvaW5jbHVkZS9saWJ5dXYvY29udmVydF9mcm9tLmgiCiAKLXVzaW5nIHJ0Yzo6c3ByaW50Zm47
Ci0KIG5hbWVzcGFjZSB7CiAKIC8vCkBAIC0xNTAsNyArMTQ3LDcgQEAgR3RrTWFpblduZDo6R3Rr
TWFpblduZChjb25zdCBjaGFyKiBzZXJ2ZXIsCiAgICAgICBhdXRvY29ubmVjdF8oYXV0b2Nvbm5l
Y3QpLAogICAgICAgYXV0b2NhbGxfKGF1dG9jYWxsKSB7CiAgIGNoYXIgYnVmZmVyWzEwXTsKLSAg
c3ByaW50Zm4oYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiVpIiwgcG9ydCk7CisgIHNucHJpbnRm
KGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlaSIsIHBvcnQpOwogICBwb3J0XyA9IGJ1ZmZlcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L21haW4uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGll
bnQvbWFpbi5jYwppbmRleCAyNWRkZTFlZjY1ODVkODI1NzhhNzlmNDU0NTJiZWE0YjZkNjE2ZmVm
Li5mOTJlNjA2YzMzODExOWUyMmU0M2IxMTM1N2ZmYjhiYWMyMzBhYTZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29u
bmVjdGlvbi9jbGllbnQvbWFpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbWFpbi5jYwpAQCAt
MTYsNiArMTYsOCBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGFkYXB0ZXIuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS93aW4zMnNvY2tldGluaXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS93aW4zMnNv
Y2tldHNlcnZlci5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3Ry
aWFsLmgiCisjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogCiBpbnQgUEFTQ0FMIHdXaW5N
YWluKEhJTlNUQU5DRSBpbnN0YW5jZSwKICAgICAgICAgICAgICAgICAgICAgSElOU1RBTkNFIHBy
ZXZfaW5zdGFuY2UsCkBAIC0zNiw2ICszOCwxMSBAQCBpbnQgUEFTQ0FMIHdXaW5NYWluKEhJTlNU
QU5DRSBpbnN0YW5jZSwKICAgICByZXR1cm4gMDsKICAgfQogCisgIHdlYnJ0Yzo6dGVzdDo6VmFs
aWRhdGVGaWVsZFRyaWFsc1N0cmluZ09yRGllKEZMQUdfZm9yY2VfZmllbGR0cmlhbHMpOworICAv
LyBJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5nIHN0b3JlcyB0aGUgY2hhciosIHNvIHRoZSBjaGFy
IGFycmF5IG11c3Qgb3V0bGl2ZQorICAvLyB0aGUgYXBwbGljYXRpb24uCisgIHdlYnJ0Yzo6Zmll
bGRfdHJpYWw6OkluaXRGaWVsZFRyaWFsc0Zyb21TdHJpbmcoRkxBR19mb3JjZV9maWVsZHRyaWFs
cyk7CisKICAgLy8gQWJvcnQgaWYgdGhlIHVzZXIgc3BlY2lmaWVzIGEgcG9ydCB0aGF0IGlzIG91
dHNpZGUgdGhlIGFsbG93ZWQKICAgLy8gcmFuZ2UgWzEsIDY1NTM1XS4KICAgaWYgKChGTEFHX3Bv
cnQgPCAxKSB8fCAoRkxBR19wb3J0ID4gNjU1MzUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9j
bGllbnQvbWFpbl93bmQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbWFpbl93bmQuY2MKaW5kZXggM2Fk
MjQ4ODQzYTgxNWIwYTkwMDU2ODJlNGZmMDFhM2QwNGM5ODk5Yy4uOGVkZDFlNzZmMzUwMzE0ZGUw
MzA0MDM1YTE5M2NkMjEwMWE3OTM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L21haW5f
d25kLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4
YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9tYWluX3duZC5jYwpAQCAtMTcsMTQgKzE3LDEx
IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ3V0aWxzLmgiCiAjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUv
bGlieXV2L2NvbnZlcnRfYXJnYi5oIgogCiBBVE9NIE1haW5XbmQ6OnduZF9jbGFzc18gPSAwOwog
Y29uc3Qgd2NoYXJfdCBNYWluV25kOjprQ2xhc3NOYW1lW10gPSBMIldlYlJUQ19NYWluV25kIjsK
IAotdXNpbmcgcnRjOjpzcHJpbnRmbjsKLQogbmFtZXNwYWNlIHsKIAogY29uc3QgY2hhciBrQ29u
bmVjdGluZ1tdID0gIkNvbm5lY3RpbmcuLi4gIjsKQEAgLTg2LDggKzgzLDggQEAgTWFpblduZDo6
TWFpblduZChjb25zdCBjaGFyKiBzZXJ2ZXIsCiAgICAgICBzZXJ2ZXJfKHNlcnZlciksCiAgICAg
ICBhdXRvX2Nvbm5lY3RfKGF1dG9fY29ubmVjdCksCiAgICAgICBhdXRvX2NhbGxfKGF1dG9fY2Fs
bCkgewotICBjaGFyIGJ1ZmZlclsxMF0gPSB7MH07Ci0gIHNwcmludGZuKGJ1ZmZlciwgc2l6ZW9m
KGJ1ZmZlciksICIlaSIsIHBvcnQpOworICBjaGFyIGJ1ZmZlclsxMF07CisgIHNucHJpbnRmKGJ1
ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlaSIsIHBvcnQpOwogICBwb3J0XyA9IGJ1ZmZlcjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
ZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L3BlZXJfY29ubmVjdGlvbl9jbGllbnQuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVy
Y29ubmVjdGlvbi9jbGllbnQvcGVlcl9jb25uZWN0aW9uX2NsaWVudC5jYwppbmRleCBiYjc5ZDE2
NzkxMTE5OGRjNTU2MTM5ZDk0NjBiZDczMWIzN2NjNzc4Li5mMTczZTQyNzkzYTI1YWVkOGM3NzJm
ZWM0YzU3MjFiMWM4NmQ4MjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvcGVlcl9jb25u
ZWN0aW9uX2NsaWVudC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvcGVlcl9jb25uZWN0aW9uX2Ns
aWVudC5jYwpAQCAtMTQsMTQgKzE0LDExIEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL25ldGhl
bHBlcnMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiAjaWZkZWYgV0lO
MzIKICNpbmNsdWRlICJydGNfYmFzZS93aW4zMnNvY2tldHNlcnZlci5oIgogI2VuZGlmCiAKLXVz
aW5nIHJ0Yzo6c3ByaW50Zm47Ci0KIG5hbWVzcGFjZSB7CiAKIC8vIFRoaXMgaXMgb3VyIG1hZ2lj
YWwgaGFuZ3VwIHNpZ25hbC4KQEAgLTEzNiw3ICsxMzMsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9u
Q2xpZW50OjpEb0Nvbm5lY3QoKSB7CiAgIGhhbmdpbmdfZ2V0Xy5yZXNldChDcmVhdGVDbGllbnRT
b2NrZXQoc2VydmVyX2FkZHJlc3NfLmlwYWRkcigpLmZhbWlseSgpKSk7CiAgIEluaXRTb2NrZXRT
aWduYWxzKCk7CiAgIGNoYXIgYnVmZmVyWzEwMjRdOwotICBzcHJpbnRmbihidWZmZXIsIHNpemVv
ZihidWZmZXIpLCAiR0VUIC9zaWduX2luPyVzIEhUVFAvMS4wXHJcblxyXG4iLAorICBzbnByaW50
ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiR0VUIC9zaWduX2luPyVzIEhUVFAvMS4wXHJcblxy
XG4iLAogICAgICAgICAgICBjbGllbnRfbmFtZV8uY19zdHIoKSk7CiAgIG9uY29ubmVjdF9kYXRh
XyA9IGJ1ZmZlcjsKIApAQCAtMTU4LDkgKzE1NSw5IEBAIGJvb2wgUGVlckNvbm5lY3Rpb25DbGll
bnQ6OlNlbmRUb1BlZXIoaW50IHBlZXJfaWQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7
CiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIGNoYXIgaGVhZGVyc1sxMDI0XTsKLSAgc3ByaW50Zm4o
aGVhZGVycywgc2l6ZW9mKGhlYWRlcnMpLAorICBzbnByaW50ZihoZWFkZXJzLCBzaXplb2YoaGVh
ZGVycyksCiAgICAgICAgICAgICJQT1NUIC9tZXNzYWdlP3BlZXJfaWQ9JWkmdG89JWkgSFRUUC8x
LjBcclxuIgotICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6ICVpXHJcbiIKKyAgICAgICAgICAg
IkNvbnRlbnQtTGVuZ3RoOiAlenVcclxuIgogICAgICAgICAgICAiQ29udGVudC1UeXBlOiB0ZXh0
L3BsYWluXHJcbiIKICAgICAgICAgICAgIlxyXG4iLAogICAgICAgICAgICBteV9pZF8sIHBlZXJf
aWQsIG1lc3NhZ2UubGVuZ3RoKCkpOwpAQCAtMTkwLDcgKzE4Nyw3IEBAIGJvb2wgUGVlckNvbm5l
Y3Rpb25DbGllbnQ6OlNpZ25PdXQoKSB7CiAKICAgICBpZiAobXlfaWRfICE9IC0xKSB7CiAgICAg
ICBjaGFyIGJ1ZmZlclsxMDI0XTsKLSAgICAgIHNwcmludGZuKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZl
ciksCisgICAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLAogICAgICAgICAgICAg
ICAgIkdFVCAvc2lnbl9vdXQ/cGVlcl9pZD0laSBIVFRQLzEuMFxyXG5cclxuIiwgbXlfaWRfKTsK
ICAgICAgIG9uY29ubmVjdF9kYXRhXyA9IGJ1ZmZlcjsKICAgICAgIHJldHVybiBDb25uZWN0Q29u
dHJvbFNvY2tldCgpOwpAQCAtMjM3LDcgKzIzNCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25DbGll
bnQ6Ok9uQ29ubmVjdChydGM6OkFzeW5jU29ja2V0KiBzb2NrZXQpIHsKIAogdm9pZCBQZWVyQ29u
bmVjdGlvbkNsaWVudDo6T25IYW5naW5nR2V0Q29ubmVjdChydGM6OkFzeW5jU29ja2V0KiBzb2Nr
ZXQpIHsKICAgY2hhciBidWZmZXJbMTAyNF07Ci0gIHNwcmludGZuKGJ1ZmZlciwgc2l6ZW9mKGJ1
ZmZlciksICJHRVQgL3dhaXQ/cGVlcl9pZD0laSBIVFRQLzEuMFxyXG5cclxuIiwKKyAgc25wcmlu
dGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIkdFVCAvd2FpdD9wZWVyX2lkPSVpIEhUVFAvMS4w
XHJcblxyXG4iLAogICAgICAgICAgICBteV9pZF8pOwogICBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8
aW50PihzdHJsZW4oYnVmZmVyKSk7CiAgIGludCBzZW50ID0gc29ja2V0LT5TZW5kKGJ1ZmZlciwg
bGVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZlci9tYWluLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2Vy
dmVyL21haW4uY2MKaW5kZXggMDc1YjZlYTJkM2Y3YTA2ZjcxODY4NzZiMzcxNTVlMmU1ZTRkZDU0
Mi4uNTIxNGNhNWNhNTUxMTU0Y2Y5MmExOTU1ZmVjZTEwMGQxYTQxNzE4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNv
bm5lY3Rpb24vc2VydmVyL21haW4uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL21haW4uY2MKQEAg
LTE4LDcgKzE4LDE5IEBACiAjaW5jbHVkZSAiZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVy
L2RhdGFfc29ja2V0LmgiCiAjaW5jbHVkZSAiZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVy
L3BlZXJfY2hhbm5lbC5oIgogI2luY2x1ZGUgImV4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZl
ci91dGlscy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCiAjaW5jbHVkZSAicnRjX3Rv
b2xzL3NpbXBsZV9jb21tYW5kX2xpbmVfcGFyc2VyLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgi
CisKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIGZvcmNlX2ZpZWxkdHJpYWxzLAorICAgICIi
LAorICAgICJGaWVsZCB0cmlhbHMgY29udHJvbCBleHBlcmltZW50YWwgZmVhdHVyZXMuIFRoaXMg
ZmxhZyBzcGVjaWZpZXMgdGhlIGZpZWxkICIKKyAgICAidHJpYWxzIGluIGVmZmVjdC4gRS5nLiBy
dW5uaW5nIHdpdGggIgorICAgICItLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJl
L0VuYWJsZWQvICIKKyAgICAid2lsbCBhc3NpZ24gdGhlIGdyb3VwIEVuYWJsZWQgdG8gZmllbGQg
dHJpYWwgV2ViUlRDLUZvb0ZlYXR1cmUuIE11bHRpcGxlICIKKyAgICAidHJpYWxzIGFyZSBzZXBh
cmF0ZWQgYnkgXCIvXCIiKTsKIAogc3RhdGljIGNvbnN0IHNpemVfdCBrTWF4Q29ubmVjdGlvbnMg
PSAoRkRfU0VUU0laRSAtIDIpOwogCkBAIC02Miw2ICs3NCwxMSBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhciogYXJndltdKSB7CiAgICAgcmV0dXJuIDA7CiAgIH0KIAorICB3ZWJydGM6OnRlc3Q6
OlZhbGlkYXRlRmllbGRUcmlhbHNTdHJpbmdPckRpZShGTEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsK
KyAgLy8gSW5pdEZpZWxkVHJpYWxzRnJvbVN0cmluZyBzdG9yZXMgdGhlIGNoYXIqLCBzbyB0aGUg
Y2hhciBhcnJheSBtdXN0IG91dGxpdmUKKyAgLy8gdGhlIGFwcGxpY2F0aW9uLgorICB3ZWJydGM6
OmZpZWxkX3RyaWFsOjpJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5nKEZMQUdfZm9yY2VfZmllbGR0
cmlhbHMpOworCiAgIGludCBwb3J0ID0gc3RydG9sKChwYXJzZXIuR2V0RmxhZygicG9ydCIpKS5j
X3N0cigpLCBOVUxMLCAxMCk7CiAKICAgLy8gQWJvcnQgaWYgdGhlIHVzZXIgc3BlY2lmaWVzIGEg
cG9ydCB0aGF0IGlzIG91dHNpZGUgdGhlIGFsbG93ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3Nl
cnZlci9wZWVyX2NoYW5uZWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9zZXJ2ZXIvcGVlcl9jaGFubmVsLmNjCmlu
ZGV4IDZlZjA4ZDdiMjFkNzNiNmYyMjk5YWRiNjljZTcyYjJmYWYyZWY4NTAuLmIyM2I3ZTA0ZTIx
ZDZiYmMwYjljZTVkMjIwNzVlMDczNWZkZjE3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZl
ci9wZWVyX2NoYW5uZWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL3BlZXJfY2hhbm5lbC5jYwpA
QCAtMTksOSArMTksNiBAQAogI2luY2x1ZGUgImV4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZl
ci9kYXRhX3NvY2tldC5oIgogI2luY2x1ZGUgImV4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZl
ci91dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCi0KLXVzaW5nIHJ0Yzo6c3ByaW50Zm47CiAKIC8vIFNl
dCB0byB0aGUgcGVlciBpZCBvZiB0aGUgb3JpZ2luYXRvciB3aGVuIG1lc3NhZ2VzIGFyZSBiZWlu
ZwogLy8gZXhjaGFuZ2VkIGJldHdlZW4gcGVlcnMsIGJ1dCBzZXQgdG8gdGhlIGlkIG9mIHRoZSBy
ZWNlaXZpbmcgcGVlcgpAQCAtOTgsNyArOTUsNyBAQCBzdGQ6OnN0cmluZyBDaGFubmVsTWVtYmVy
OjpHZXRFbnRyeSgpIGNvbnN0IHsKIAogICAvLyBuYW1lLCAxMS1kaWdpdCBpbnQsIDEtZGlnaXQg
Ym9vbCwgbmV3bGluZSwgbnVsbAogICBjaGFyIGVudHJ5W2tNYXhOYW1lTGVuZ3RoICsgMTVdOwot
ICBzcHJpbnRmbihlbnRyeSwgc2l6ZW9mKGVudHJ5KSwgIiVzLCVkLCVkXG4iLAorICBzbnByaW50
ZihlbnRyeSwgc2l6ZW9mKGVudHJ5KSwgIiVzLCVkLCVkXG4iLAogICAgICAgICAgICBuYW1lXy5z
dWJzdHIoMCwga01heE5hbWVMZW5ndGgpLmNfc3RyKCksIGlkXywgY29ubmVjdGVkXyk7CiAgIHJl
dHVybiBlbnRyeTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2V4YW1wbGVzL3N0dW5wcm9iZXIvbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3N0dW5wcm9iZXIvbWFpbi5jYwpp
bmRleCA0NWE3NmY1MjM3NDNlNmZhZmExYmU4NWY0NDliYWRmYTNjN2Y2ODU1Li42ZGE5NmU0Njk5
ODJmMDVlNzNiYWFiMmIzNDhhMjEyNGY1NGE0NzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9zdHVucHJvYmVyL21haW4uY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMv
c3R1bnByb2Jlci9tYWluLmNjCkBAIC0xNCw3ICsxNCw3IEBACiAKICNpbmNsdWRlIDxtYXA+CiAj
aW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHNzdHJlYW0+ICAvLyBuby1wcmVzdWJtaXQtY2hl
Y2sgVE9ETyh3ZWJydGM6ODk4MikKKyNpbmNsdWRlIDxzc3RyZWFtPgogCiAjaW5jbHVkZSAicDJw
L2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0b3J5LmgiCiAjaW5jbHVkZSAicDJwL3N0dW5wcm9i
ZXIvc3R1bnByb2Jlci5oIgpAQCAtMzMsMTYgKzMzLDIxIEBACiB1c2luZyBzdHVucHJvYmVyOjpT
dHVuUHJvYmVyOwogdXNpbmcgc3R1bnByb2Jlcjo6QXN5bmNDYWxsYmFjazsKIAotREVGSU5FX2Jv
b2woaGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNzYWdlIik7Ci1ERUZJTkVfaW50KGludGVy
dmFsLCAxMCwgIkludGVydmFsIG9mIGNvbnNlY3V0aXZlIHN0dW4gcGluZ3MgaW4gbWlsbGlzZWNv
bmRzIik7Ci1ERUZJTkVfYm9vbChzaGFyZWRfc29ja2V0LCBmYWxzZSwgIlNoYXJlIHNvY2tldCBt
b2RlIGZvciBkaWZmZXJlbnQgcmVtb3RlIElQcyIpOwotREVGSU5FX2ludChwaW5nc19wZXJfaXAs
Ci0gICAgICAgICAgIDEwLAotICAgICAgICAgICAiTnVtYmVyIG9mIGNvbnNlY3V0aXZlIHN0dW4g
cGluZ3MgdG8gc2VuZCBmb3IgZWFjaCBJUCIpOwotREVGSU5FX2ludCh0aW1lb3V0LAotICAgICAg
ICAgICAxMDAwLAotICAgICAgICAgICAiTWlsbGlzZWNvbmRzIG9mIHdhaXQgYWZ0ZXIgdGhlIGxh
c3QgcGluZyBzZW50IGJlZm9yZSBleGl0aW5nIik7Ci1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RF
RklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RF
RklORV9pbnQoaW50ZXJ2YWwsCisgICAgICAgICAgICAgICAgICAxMCwKKyAgICAgICAgICAgICAg
ICAgICJJbnRlcnZhbCBvZiBjb25zZWN1dGl2ZSBzdHVuIHBpbmdzIGluIG1pbGxpc2Vjb25kcyIp
OworV0VCUlRDX0RFRklORV9ib29sKHNoYXJlZF9zb2NrZXQsCisgICAgICAgICAgICAgICAgICAg
ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlNoYXJlIHNvY2tldCBtb2RlIGZvciBkaWZmZXJl
bnQgcmVtb3RlIElQcyIpOworV0VCUlRDX0RFRklORV9pbnQocGluZ3NfcGVyX2lwLAorICAgICAg
ICAgICAgICAgICAgMTAsCisgICAgICAgICAgICAgICAgICAiTnVtYmVyIG9mIGNvbnNlY3V0aXZl
IHN0dW4gcGluZ3MgdG8gc2VuZCBmb3IgZWFjaCBJUCIpOworV0VCUlRDX0RFRklORV9pbnQoCisg
ICAgdGltZW91dCwKKyAgICAxMDAwLAorICAgICJNaWxsaXNlY29uZHMgb2Ygd2FpdCBhZnRlciB0
aGUgbGFzdCBwaW5nIHNlbnQgYmVmb3JlIGV4aXRpbmciKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KAogICAgIHNlcnZlcnMsCiAgICAgInN0dW4ubC5nb29nbGUuY29tOjE5MzAyLHN0dW4xLmwuZ29v
Z2xlLmNvbToxOTMwMixzdHVuMi5sLmdvb2dsZS5jb206MTkzMDIiLAogICAgICJDb21tYSBzZXBh
cmF0ZWQgU1RVTiBzZXJ2ZXIgYWRkcmVzc2VzIHdpdGggcG9ydHMiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1cm5zZXJ2
ZXIvcmVhZF9hdXRoX2ZpbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy90dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlLmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRlNTQ2NWU4MmZlODMzOWIwMWQ1MjdjZjQ2NDJlMDNhMDZiZjY2MmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy90
dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlLmNjCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpbmNsdWRlICJleGFtcGxlcy90dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCisKK25hbWVzcGFjZSB3ZWJydGNf
ZXhhbXBsZXMgeworCitzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IFJlYWRBdXRo
RmlsZShzdGQ6OmlzdHJlYW0qIHMpIHsKKyAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3Ry
aW5nPiBuYW1lX3RvX2tleTsKKyAgZm9yIChzdGQ6OnN0cmluZyBsaW5lOyBzdGQ6OmdldGxpbmUo
KnMsIGxpbmUpOykgeworICAgIGNvbnN0IHNpemVfdCBzZXAgPSBsaW5lLmZpbmQoJz0nKTsKKyAg
ICBpZiAoc2VwID09IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgY29udGludWU7CisgICAgY2hh
ciBidWZbMzJdOworICAgIHNpemVfdCBsZW4gPSBydGM6OmhleF9kZWNvZGUoYnVmLCBzaXplb2Yo
YnVmKSwgbGluZS5kYXRhKCkgKyBzZXAgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGluZS5zaXplKCkgLSBzZXAgLSAxKTsKKyAgICBpZiAobGVuID4gMCkgeworICAgICAg
bmFtZV90b19rZXkuZW1wbGFjZShsaW5lLnN1YnN0cigwLCBzZXApLCBzdGQ6OnN0cmluZyhidWYs
IGxlbikpOworICAgIH0KKyAgfQorICByZXR1cm4gbmFtZV90b19rZXk7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGNfZXhhbXBsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1
cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzEzOWM5OTI0MGNhZTlkMWEx
ZjdiYTQ4M2U1OTVjMzMxZjFjMGExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci9yZWFkX2F1dGhf
ZmlsZS5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJU
QyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgRVhB
TVBMRVNfVFVSTlNFUlZFUl9SRUFEX0FVVEhfRklMRV9IXworI2RlZmluZSBFWEFNUExFU19UVVJO
U0VSVkVSX1JFQURfQVVUSF9GSUxFX0hfCisKKyNpbmNsdWRlIDxpc3RyZWFtPgorI2luY2x1ZGUg
PG1hcD4KKyNpbmNsdWRlIDxzdHJpbmc+CisKK25hbWVzcGFjZSB3ZWJydGNfZXhhbXBsZXMgewor
CitzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IFJlYWRBdXRoRmlsZShzdGQ6Omlz
dHJlYW0qIHMpOworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjX2V4YW1wbGVzCisKKyNlbmRpZiAg
Ly8gRVhBTVBMRVNfVFVSTlNFUlZFUl9SRUFEX0FVVEhfRklMRV9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZl
ci9yZWFkX2F1dGhfZmlsZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGVfdW5pdHRl
c3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGE2ZjMzMmMyN2E1NzY2OWY0ZjJiNDU1OTJlY2UzZjMyYWM2YmMy
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGVfdW5pdHRlc3QuY2MKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgPHNzdHJlYW0+CisK
KyNpbmNsdWRlICJleGFtcGxlcy90dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlLmgiCisjaW5jbHVk
ZSAidGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2Ugd2VicnRjX2V4YW1wbGVzIHsKKworVEVTVChS
ZWFkQXV0aEZpbGUsIEhhbmRsZXNFbXB0eUZpbGUpIHsKKyAgc3RkOjppc3RyaW5nc3RyZWFtIGVt
cHR5OworICBhdXRvIG1hcCA9IFJlYWRBdXRoRmlsZSgmZW1wdHkpOworICBFWFBFQ1RfVFJVRSht
YXAuZW1wdHkoKSk7Cit9CisKK1RFU1QoUmVhZEF1dGhGaWxlLCBSZWNvZ25pemVzVmFsaWRVc2Vy
KSB7CisgIHN0ZDo6aXN0cmluZ3N0cmVhbSBmaWxlKCJmb289ZGVhZGJlYWZcbiIpOworICBhdXRv
IG1hcCA9IFJlYWRBdXRoRmlsZSgmZmlsZSk7CisgIEFTU0VSVF9ORShtYXAuZmluZCgiZm9vIiks
IG1hcC5lbmQoKSk7CisgIEVYUEVDVF9FUShtYXBbImZvbyJdLCAiXHhkZVx4YWRceGJlXHhhZiIp
OworfQorCitURVNUKFJlYWRBdXRoRmlsZSwgRW1wdHlWYWx1ZUZvckludmFsaWRIZXgpIHsKKyAg
c3RkOjppc3RyaW5nc3RyZWFtIGZpbGUoCisgICAgICAiZm9vPWRlYWRiZWFmXG4iCisgICAgICAi
YmFyPXh4eHhpbnZhbGlkaGV4XG4iCisgICAgICAiYmF6PWNhZmVcbiIpOworICBhdXRvIG1hcCA9
IFJlYWRBdXRoRmlsZSgmZmlsZSk7CisgIEFTU0VSVF9ORShtYXAuZmluZCgiZm9vIiksIG1hcC5l
bmQoKSk7CisgIEVYUEVDVF9FUShtYXBbImZvbyJdLCAiXHhkZVx4YWRceGJlXHhhZiIpOworICBF
WFBFQ1RfRVEobWFwLmZpbmQoImJhciIpLCBtYXAuZW5kKCkpOworICBBU1NFUlRfTkUobWFwLmZp
bmQoImJheiIpLCBtYXAuZW5kKCkpOworICBFWFBFQ1RfRVEobWFwWyJiYXoiXSwgIlx4Y2FceGZl
Iik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGNfZXhhbXBsZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1cm5zZXJ2
ZXIvdHVybnNlcnZlcl9tYWluLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci90dXJuc2VydmVyX21haW4uY2MKaW5kZXggZWRj
MGI2OTliNGM3NjI4ZDM1NDUxZTk4ZjBhOGU5Zjk0M2YzNzM2Yy4uODUwZmMyZDljODlhMjE1Yjll
MTJlOTg4MDU4NWFjMDQxOWI5NGY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci90dXJuc2VydmVyX21haW4u
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBs
ZXMvdHVybnNlcnZlci90dXJuc2VydmVyX21haW4uY2MKQEAgLTgsMzkgKzgsNDQgQEAKICAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KICAqLwogCi0jaW5jbHVkZSA8aW9zdHJlYW0+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxmc3Ry
ZWFtPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdHJp
bmc+CiAKKyNpbmNsdWRlICJleGFtcGxlcy90dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlLmgiCiAj
aW5jbHVkZSAicDJwL2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0b3J5LmgiCiAjaW5jbHVkZSAi
cDJwL2Jhc2UvdHVybnNlcnZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jdWRwc29ja2V0
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvb3B0aW9uc2ZpbGUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKIAotc3RhdGlj
IGNvbnN0IGNoYXIga1NvZnR3YXJlW10gPSAibGliamluZ2xlIFR1cm5TZXJ2ZXIiOworbmFtZXNw
YWNlIHsKK2NvbnN0IGNoYXIga1NvZnR3YXJlW10gPSAibGliamluZ2xlIFR1cm5TZXJ2ZXIiOwog
CiBjbGFzcyBUdXJuRmlsZUF1dGggOiBwdWJsaWMgY3JpY2tldDo6VHVybkF1dGhJbnRlcmZhY2Ug
ewogIHB1YmxpYzoKLSAgZXhwbGljaXQgVHVybkZpbGVBdXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBw
YXRoKSA6IGZpbGVfKHBhdGgpIHsgZmlsZV8uTG9hZCgpOyB9CisgIGV4cGxpY2l0IFR1cm5GaWxl
QXV0aChzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5hbWVfdG9fa2V5KQorICAg
ICAgOiBuYW1lX3RvX2tleV8oc3RkOjptb3ZlKG5hbWVfdG9fa2V5KSkge30KKwogICB2aXJ0dWFs
IGJvb2wgR2V0S2V5KGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcmVhbG0sCiAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcqIGtleSkgewogICAgIC8vIEZpbGUgaXMgc3RvcmVkIGFzIGxpbmVzIG9mIDx1
c2VybmFtZT49PEhBMT4uCiAgICAgLy8gR2VuZXJhdGUgSEExIHZpYSAiZWNobyAtbiAiPHVzZXJu
YW1lPjo8cmVhbG0+OjxwYXNzd29yZD4iIHwgbWQ1c3VtIgotICAgIHN0ZDo6c3RyaW5nIGhleDsK
LSAgICBib29sIHJldCA9IGZpbGVfLkdldFN0cmluZ1ZhbHVlKHVzZXJuYW1lLCAmaGV4KTsKLSAg
ICBpZiAocmV0KSB7Ci0gICAgICBjaGFyIGJ1ZlszMl07Ci0gICAgICBzaXplX3QgbGVuID0gcnRj
OjpoZXhfZGVjb2RlKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGhleCk7Ci0gICAgICAqa2V5ID0gc3RkOjpz
dHJpbmcoYnVmLCBsZW4pOwotICAgIH0KLSAgICByZXR1cm4gcmV0OworICAgIGF1dG8gaXQgPSBu
YW1lX3RvX2tleV8uZmluZCh1c2VybmFtZSk7CisgICAgaWYgKGl0ID09IG5hbWVfdG9fa2V5Xy5l
bmQoKSkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICAqa2V5ID0gaXQtPnNlY29uZDsKKyAgICBy
ZXR1cm4gdHJ1ZTsKICAgfQogCiAgcHJpdmF0ZToKLSAgcnRjOjpPcHRpb25zRmlsZSBmaWxlXzsK
KyAgY29uc3Qgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBuYW1lX3RvX2tleV87
CiB9OwogCit9ICAvLyBuYW1lc3BhY2UKKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3Zb
XSkgewogICBpZiAoYXJnYyAhPSA1KSB7CiAgICAgc3RkOjpjZXJyIDw8ICJ1c2FnZTogdHVybnNl
cnZlciBpbnQtYWRkciBleHQtaXAgcmVhbG0gYXV0aC1maWxlIgpAQCAtNzAsNyArNzUsMTEgQEAg
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICB9CiAKICAgY3JpY2tldDo6VHVy
blNlcnZlciBzZXJ2ZXIobWFpbik7Ci0gIFR1cm5GaWxlQXV0aCBhdXRoKGFyZ3ZbNF0pOworICBz
dGQ6OmZzdHJlYW0gYXV0aF9maWxlKGFyZ3ZbNF0sIHN0ZDo6ZnN0cmVhbTo6aW4pOworCisgIFR1
cm5GaWxlQXV0aCBhdXRoKGF1dGhfZmlsZS5pc19vcGVuKCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgID8gd2VicnRjX2V4YW1wbGVzOjpSZWFkQXV0aEZpbGUoJmF1dGhfZmlsZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDogc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPigpKTsK
ICAgc2VydmVyLnNldF9yZWFsbShhcmd2WzNdKTsKICAgc2VydmVyLnNldF9zb2Z0d2FyZShrU29m
dHdhcmUpOwogICBzZXJ2ZXIuc2V0X2F1dGhfaG9vaygmYXV0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy91bml0eXBsdWdp
bi9zaW1wbGVfcGVlcl9jb25uZWN0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdW5pdHlwbHVnaW4vc2ltcGxlX3BlZXJfY29ubmVjdGlv
bi5jYwppbmRleCAzNmUxOTM3ZWFkN2Q5MmM0ZTExMjU2ZDE3Njg2NTdlM2I3ZmMyNjVlLi5iZjZh
NjgyN2IwMzA3MWNmNjY0OGI3YTFmMjk0OGJmNDgxNTY1MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy91bml0eXBsdWdpbi9z
aW1wbGVfcGVlcl9jb25uZWN0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3VuaXR5cGx1Z2luL3NpbXBsZV9wZWVyX2Nvbm5lY3Rp
b24uY2MKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFj
dG9yeS5oIgorI2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIgog
I2luY2x1ZGUgImFwaS92aWRlb3NvdXJjZXByb3h5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5l
L2ludGVybmFsZGVjb2RlcmZhY3RvcnkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJu
YWxlbmNvZGVyZmFjdG9yeS5oIgpAQCAtNDQ4LDcgKzQ0OSw4IEBAIHZvaWQgU2ltcGxlUGVlckNv
bm5lY3Rpb246OkFkZFN0cmVhbXMoYm9vbCBhdWRpb19vbmx5KSB7CiAKICAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpqbmk6OkFuZHJvaWRWaWRlb1RyYWNrU291cmNlPiBzb3VyY2UoCiAg
ICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8d2VicnRjOjpqbmk6OkFuZHJvaWRWaWRl
b1RyYWNrU291cmNlPigKLSAgICAgICAgICAgIGdfc2lnbmFsaW5nX3RocmVhZC5nZXQoKSwgZW52
LCBmYWxzZSkpOworICAgICAgICAgICAgZ19zaWduYWxpbmdfdGhyZWFkLmdldCgpLCBlbnYsIC8q
IGlzX3NjcmVlbmNhc3Q9ICovIGZhbHNlLAorICAgICAgICAgICAgLyogYWxpZ25fdGltZXN0YW1w
cz0gKi8gdHJ1ZSkpOwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tT
b3VyY2VQcm94eT4gcHJveHlfc291cmNlID0KICAgICAgICAgd2VicnRjOjpWaWRlb1RyYWNrU291
cmNlUHJveHk6OkNyZWF0ZShnX3NpZ25hbGluZ190aHJlYWQuZ2V0KCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ193b3JrZXJfdGhyZWFkLmdldCgpLCBz
b3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvaW5mcmEvY29uZmlnL2NxLmNmZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2luZnJhL2NvbmZpZy9jcS5jZmcKaW5kZXggYzdiNWVmOTIzYjhhZGU0MjY2
NzczYjFkMzkwOGNlY2Y1MWJjNDc0My4uMWMwZjAyMjhmODExZDRkYzE3NGIzODNkOTA2ZjRjM2Iw
NWNmMzRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvaW5mcmEvY29uZmlnL2NxLmNmZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9pbmZyYS9jb25maWcvY3EuY2ZnCkBAIC0zNiw3ICszNiw2IEBAIHZl
cmlmaWVycyB7CiAgICAgICBidWlsZGVycyB7IG5hbWU6ICJpb3NfYXJtNjRfcmVsIiB9CiAgICAg
ICBidWlsZGVycyB7IG5hbWU6ICJpb3NfZGJnIiB9CiAgICAgICBidWlsZGVycyB7IG5hbWU6ICJp
b3NfcmVsIiB9Ci0gICAgICBidWlsZGVycyB7IG5hbWU6ICJpb3MzMl9zaW1faW9zOV9kYmciIH0K
ICAgICAgIGJ1aWxkZXJzIHsgbmFtZTogImlvczY0X3NpbV9pb3M5X2RiZyIgfQogICAgICAgYnVp
bGRlcnMgeyBuYW1lOiAiaW9zNjRfc2ltX2lvczEwX2RiZyIgfQogICAgICAgYnVpbGRlcnMgeyBu
YW1lOiAiaW9zX2FwaV9mcmFtZXdvcmsiIH0KQEAgLTYzLDcgKzYyLDEyIEBAIHZlcmlmaWVycyB7
CiAgICAgICBidWlsZGVycyB7IG5hbWU6ICJtYWNfY2hyb21pdW1fY29tcGlsZSIgfQogICAgICAg
YnVpbGRlcnMgeyBuYW1lOiAibWFjX2NvbXBpbGVfZGJnIiB9CiAgICAgICBidWlsZGVycyB7IG5h
bWU6ICJtYWNfcmVsIiB9Ci0gICAgICBidWlsZGVycyB7IG5hbWU6ICJwcmVzdWJtaXQiIH0KKyAg
ICAgIGJ1aWxkZXJzIHsKKyAgICAgICAgbmFtZTogInByZXN1Ym1pdCIKKyAgICAgICAgIyBQcmVz
dWJtaXQgYnVpbGRlciBzaG91bGQgYmUgcmUtcnVuIGV2ZXJ5IHRpbWUgQ1EgaXMgdHJpZ2dlcmVk
CisgICAgICAgICMgZm9yIGxhc3QgbWludXRlIGxpbnQsIE9XTkVSUywgZXRjIGNoZWNrcy4KKyAg
ICAgICAgZGlzYWJsZV9yZXVzZTogdHJ1ZQorICAgICAgfQogICAgICAgYnVpbGRlcnMgeyBuYW1l
OiAid2luX2FzYW4iIH0KICAgICAgIGJ1aWxkZXJzIHsgbmFtZTogIndpbl9jaHJvbWl1bV9jb21w
aWxlIiB9CiAgICAgICBidWlsZGVycyB7IG5hbWU6ICJ3aW5fY2xhbmdfZGJnIiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL0JV
SUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9CVUlMRC5nbgppbmRleCAzODcxMTkzYmFkY2Q3ZjY4MTA3N2VkNzAyOTg4MDFiMGRmNTFmMDNk
Li41NzU5NTJjMzE1ZjljMzE4MjA1NGM5OTg3MjM3Y2FhMzljZjVkMmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL0JVSUxELmdu
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
QlVJTEQuZ24KQEAgLTQyLDYgKzQyLDcgQEAgcnRjX3NvdXJjZV9zZXQoInJ0Y19ldmVudF9sb2df
YXBpIikgewogICAgICIuLi9ydGNfYmFzZTpwdHJfdXRpbCIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0
Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAorICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiB9CiAKQEAgLTUz
LDcgKzU0LDYgQEAgcnRjX3NvdXJjZV9zZXQoInJ0Y19zdHJlYW1fY29uZmlnIikgewogCiAgIGRl
cHMgPSBbCiAgICAgIjpydGNfZXZlbnRfbG9nX2FwaSIsCi0gICAgIi4uOndlYnJ0Y19jb21tb24i
LAogICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgIF0KIH0KQEAg
LTg3LDYgKzg3LDcgQEAgcnRjX3NvdXJjZV9zZXQoInJ0Y19ldmVudF9hdWRpbyIpIHsKICAgICAi
OnJ0Y19ldmVudF9sb2dfYXBpIiwKICAgICAiOnJ0Y19zdHJlYW1fY29uZmlnIiwKICAgICAiLi4v
bW9kdWxlcy9hdWRpb19jb2Rpbmc6YXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZyIsCisgICAg
Ii4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlOnB0cl91dGlsIiwKICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQpAQCAtMTMwLDYgKzEz
MSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfZXZlbnRfcnRwX3J0Y3AiKSB7CiAgICAgIjpydGNf
ZXZlbnRfbG9nX2FwaSIsCiAgICAgIi4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vbW9kdWxl
cy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAorICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAog
ICAgICIuLi9ydGNfYmFzZTpwdHJfdXRpbCIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKQEAg
LTE0Nyw0MCArMTQ5LDYyIEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfZXZlbnRfdmlkZW8iKSB7CiAg
IGRlcHMgPSBbCiAgICAgIjpydGNfZXZlbnRfbG9nX2FwaSIsCiAgICAgIjpydGNfc3RyZWFtX2Nv
bmZpZyIsCisgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlOnB0cl91
dGlsIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQog
fQogCisjIFRPRE8oZWxhZGFsb24pOiBCcmVhayBkb3duIGludG8gKDEpIGVuY29kZXIgYW5kICgy
KSBkZWNvZGVyOyB3ZSBkb24ndCBuZWVkCisjIHRoZSBkZWNvZGVyIGNvZGUgaW4gdGhlIFdlYlJU
QyBsaWJyYXJ5LCBvbmx5IGluIHVuaXQgdGVzdHMgYW5kIHRvb2xzLgogcnRjX3N0YXRpY19saWJy
YXJ5KCJydGNfZXZlbnRfbG9nX2ltcGxfZW5jb2RlciIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioi
IF0KICAgc291cmNlcyA9IFsKLSAgICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9s
b2dfZW5jb2Rlcl9sZWdhY3kuY2MiLAotICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2
ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5oIiwKKyAgICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Js
b2JfZW5jb2RpbmcuY2MiLAorICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGlu
Zy5oIiwKKyAgICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29kaW5nLmNjIiwKKyAg
ICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29kaW5nLmgiLAorICAgICJydGNfZXZl
bnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbi5jYyIsCisgICAgInJ0
Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmgiLAorICAg
ICJydGNfZXZlbnRfbG9nL2VuY29kZXIvdmFyaW50LmNjIiwKKyAgICAicnRjX2V2ZW50X2xvZy9l
bmNvZGVyL3ZhcmludC5oIiwKICAgXQogCiAgIGRlZmluZXMgPSBbXQogCiAgIGRlcHMgPSBbCi0g
ICAgIjppY2VfbG9nIiwKLSAgICAiOnJ0Y19ldmVudF9hdWRpbyIsCi0gICAgIjpydGNfZXZlbnRf
YndlIiwKLSAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKLSAgICAiOnJ0Y19ldmVudF9sb2dfaW1w
bF9vdXRwdXQiLAotICAgICI6cnRjX2V2ZW50X3BhY2luZyIsCi0gICAgIjpydGNfZXZlbnRfcnRw
X3J0Y3AiLAotICAgICI6cnRjX2V2ZW50X3ZpZGVvIiwKLSAgICAiOnJ0Y19zdHJlYW1fY29uZmln
IiwKLSAgICAiLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6YXVkaW9fbmV0d29ya19hZGFwdG9yIiwK
LSAgICAiLi4vbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3I6cmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yIiwKLSAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAog
ICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHBy
b3ZlZCIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3M6c3RyaW5ncyIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogCiAgIGlm
IChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAgICAgZGVmaW5lcyArPSBbICJFTkFCTEVfUlRDX0VW
RU5UX0xPRyIgXQotICAgIGRlcHMgKz0gWyAiOnJ0Y19ldmVudF9sb2dfcHJvdG8iIF0KKyAgICBk
ZXBzICs9IFsKKyAgICAgICI6aWNlX2xvZyIsCisgICAgICAiOnJ0Y19ldmVudF9hdWRpbyIsCisg
ICAgICAiOnJ0Y19ldmVudF9id2UiLAorICAgICAgIjpydGNfZXZlbnRfbG9nMl9wcm90byIsCisg
ICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKKyAgICAgICI6cnRjX2V2ZW50X2xvZ19pbXBsX291
dHB1dCIsCisgICAgICAiOnJ0Y19ldmVudF9sb2dfcHJvdG8iLAorICAgICAgIjpydGNfZXZlbnRf
cGFjaW5nIiwKKyAgICAgICI6cnRjX2V2ZW50X3J0cF9ydGNwIiwKKyAgICAgICI6cnRjX2V2ZW50
X3ZpZGVvIiwKKyAgICAgICI6cnRjX3N0cmVhbV9jb25maWciLAorICAgICAgIi4uL2FwaTphcnJh
eV92aWV3IiwKKyAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzphdWRpb19uZXR3b3JrX2Fk
YXB0b3IiLAorICAgICAgIi4uL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yOnJlbW90
ZV9iaXRyYXRlX2VzdGltYXRvciIsCisgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRj
cF9mb3JtYXQiLAorICAgIF0KKyAgICBzb3VyY2VzICs9IFsKKyAgICAgICJydGNfZXZlbnRfbG9n
L2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5jYyIsCisgICAgICAicnRjX2V2
ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9sZWdhY3kuaCIsCisgICAgICAi
cnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9uZXdfZm9ybWF0LmNj
IiwKKyAgICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25l
d19mb3JtYXQuaCIsCisgICAgXQogICB9CiB9CiAKQEAgLTIxMSw4ICsyMzUsNyBAQCBydGNfc3Rh
dGljX2xpYnJhcnkoInJ0Y19ldmVudF9sb2dfaW1wbF9iYXNlIikgewogICBkZXBzID0gWwogICAg
ICI6aWNlX2xvZyIsCiAgICAgIjpydGNfZXZlbnRfbG9nX2FwaSIsCi0gICAgIjpydGNfZXZlbnRf
bG9nX2ltcGxfZW5jb2RlciIsCi0gICAgIjpydGNfZXZlbnRfbG9nX2ltcGxfb3V0cHV0IiwKKyAg
ICAiLi4vYXBpOmxpYmppbmdsZV9sb2dnaW5nX2FwaSIsCiAgICAgIi4uL3J0Y19iYXNlOmNoZWNr
cyIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4vcnRjX2Jh
c2U6cnRjX3Rhc2tfcXVldWUiLApAQCAtMjIzLDcgKzI0Niw3IEBAIHJ0Y19zdGF0aWNfbGlicmFy
eSgicnRjX2V2ZW50X2xvZ19pbXBsX2Jhc2UiKSB7CiAKICAgaWYgKHJ0Y19lbmFibGVfcHJvdG9i
dWYpIHsKICAgICBkZWZpbmVzICs9IFsgIkVOQUJMRV9SVENfRVZFTlRfTE9HIiBdCi0gICAgZGVw
cyArPSBbICI6cnRjX2V2ZW50X2xvZ19wcm90byIgXQorICAgIGRlcHMgKz0gWyAiOnJ0Y19ldmVu
dF9sb2dfaW1wbF9lbmNvZGVyIiBdCiAgIH0KIH0KIApAQCAtMjQ2LDYgKzI2OSw3IEBAIHJ0Y19z
b3VyY2Vfc2V0KCJmYWtlX3J0Y19ldmVudF9sb2ciKSB7CiAKIGlmIChydGNfZW5hYmxlX3Byb3Rv
YnVmKSB7CiAgIHByb3RvX2xpYnJhcnkoInJ0Y19ldmVudF9sb2dfcHJvdG8iKSB7CisgICAgdmlz
aWJpbGl0eSA9IFsgIioiIF0KICAgICBzb3VyY2VzID0gWwogICAgICAgInJ0Y19ldmVudF9sb2cv
cnRjX2V2ZW50X2xvZy5wcm90byIsCiAgICAgXQpAQCAtMjUzLDYgKzI3Nyw3IEBAIGlmIChydGNf
ZW5hYmxlX3Byb3RvYnVmKSB7CiAgIH0KIAogICBwcm90b19saWJyYXJ5KCJydGNfZXZlbnRfbG9n
Ml9wcm90byIpIHsKKyAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICAgIHNvdXJjZXMgPSBbCiAg
ICAgICAicnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMi5wcm90byIsCiAgICAgXQpAQCAtMjYy
LDggKzI4Nyw2IEBAIGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAgIHJ0Y19zdGF0aWNfbGli
cmFyeSgicnRjX2V2ZW50X2xvZ19wYXJzZXIiKSB7CiAgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0K
ICAgICBzb3VyY2VzID0gWwotICAgICAgInJ0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJz
ZXIuY2MiLAotICAgICAgInJ0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXIuaCIsCiAg
ICAgICAicnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlcl9uZXcuY2MiLAogICAgICAg
InJ0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXJfbmV3LmgiLAogICAgICAgInJ0Y19l
dmVudF9sb2cvcnRjX2V2ZW50X3Byb2Nlc3Nvci5oIiwKQEAgLTI3NCwxMyArMjk3LDEzIEBAIGlm
IChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAgICAgICAiOnJ0Y19ldmVudF9id2UiLAogICAgICAg
IjpydGNfZXZlbnRfbG9nMl9wcm90byIsCiAgICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKKyAg
ICAgICI6cnRjX2V2ZW50X2xvZ19pbXBsX2VuY29kZXIiLAogICAgICAgIjpydGNfZXZlbnRfbG9n
X3Byb3RvIiwKICAgICAgICI6cnRjX3N0cmVhbV9jb25maWciLAotICAgICAgIi4uOndlYnJ0Y19j
b21tb24iLAogICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAg
ICAgICIuLi9jYWxsOnZpZGVvX3N0cmVhbV9hcGkiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9f
Y29kaW5nOmF1ZGlvX25ldHdvcmtfYWRhcHRvciIsCi0gICAgICAiLi4vbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXI6dHJhbnNwb3J0X2ZlZWRiYWNrIiwKKyAgICAgICIuLi9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9ydHA6dHJhbnNwb3J0X2ZlZWRiYWNrIiwKICAgICAgICIuLi9t
b2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcjpyZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ii
LAogICAgICAgIi4uL21vZHVsZXMvcnRwX3J0Y3AiLAogICAgICAgIi4uL21vZHVsZXMvcnRwX3J0
Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKQEAgLTI5OCw2ICszMjEsOSBAQCBpZiAocnRjX2VuYWJsZV9w
cm90b2J1ZikgewogICAgICAgYXNzZXJ0KHJ0Y19lbmFibGVfcHJvdG9idWYpCiAgICAgICBkZWZp
bmVzID0gWyAiRU5BQkxFX1JUQ19FVkVOVF9MT0ciIF0KICAgICAgIHNvdXJjZXMgPSBbCisgICAg
ICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGluZ191bml0dGVzdC5jYyIsCisg
ICAgICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmdfdW5pdHRlc3QuY2Mi
LAorICAgICAgICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9j
b21tb25fdW5pdHRlc3QuY2MiLAogICAgICAgICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19l
dmVudF9sb2dfZW5jb2Rlcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJydGNfZXZlbnRfbG9nL291
dHB1dC9ydGNfZXZlbnRfbG9nX291dHB1dF9maWxlX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgInJ0
Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdC5jYyIsCkBAIC0zMDksNiArMzM1LDcg
QEAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAgICAgICAgIjppY2VfbG9nIiwKICAgICAg
ICAgIjpydGNfZXZlbnRfYXVkaW8iLAogICAgICAgICAiOnJ0Y19ldmVudF9id2UiLAorICAgICAg
ICAiOnJ0Y19ldmVudF9sb2cyX3Byb3RvIiwKICAgICAgICAgIjpydGNfZXZlbnRfbG9nX2FwaSIs
CiAgICAgICAgICI6cnRjX2V2ZW50X2xvZ19pbXBsX2Jhc2UiLAogICAgICAgICAiOnJ0Y19ldmVu
dF9sb2dfaW1wbF9lbmNvZGVyIiwKQEAgLTMzMiw2ICszNTksNyBAQCBpZiAocnRjX2VuYWJsZV9w
cm90b2J1ZikgewogICAgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgICAiLy90
ZXN0aW5nL2d0ZXN0IiwKICAgICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21l
bW9yeSIsCisgICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRp
b25hbCIsCiAgICAgICBdCiAgICAgICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYgaXNfY2xh
bmcpIHsKICAgICAgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFu
ZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgpAQCAtMzYyLDQ5ICszOTAsNiBAQCBpZiAo
cnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgICAgfQogICAgIH0KICAgfQotCi0gIGlmIChydGNf
aW5jbHVkZV90ZXN0cykgewotICAgIHJ0Y19leGVjdXRhYmxlKCJydGNfZXZlbnRfbG9nMnRleHQi
KSB7Ci0gICAgICB0ZXN0b25seSA9IHRydWUKLSAgICAgIHNvdXJjZXMgPSBbCi0gICAgICAgICJy
dGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cydGV4dC5jYyIsCi0gICAgICBdCi0gICAgICBkZXBz
ID0gWwotICAgICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKLSAgICAgICAgIjpydGNfZXZlbnRf
bG9nX3BhcnNlciIsCi0gICAgICAgICIuLi86d2VicnRjX2NvbW1vbiIsCi0gICAgICAgICIuLi9j
YWxsOnZpZGVvX3N0cmVhbV9hcGkiLAotICAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBf
cnRjcF9mb3JtYXQiLAotICAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKLSAgICAgICAgIi4u
L3J0Y19iYXNlOnByb3RvYnVmX3V0aWxzIiwKLSAgICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNl
X2FwcHJvdmVkIiwKLSAgICAgICAgIi4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKLQotICAgICAg
ICAjIFRPRE8oa3dpYmVyZyk6IFJlbW92ZSB0aGlzIGRlcGVuZGVuY3kuCi0gICAgICAgICIuLi9h
cGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICAgICAiLi4vbW9kdWxlcy9h
dWRpb19jb2Rpbmc6YXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZyIsCi0gICAgICAgICIuLi9t
b2R1bGVzL3J0cF9ydGNwIiwKLSAgICAgIF0KLSAgICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1
bSAmJiBpc19jbGFuZykgewotICAgICAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIENo
cm9taXVtIENsYW5nIHBsdWdpbiAoYnVncy53ZWJydGMub3JnLzE2MykuCi0gICAgICAgIHN1cHBy
ZXNzZWRfY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1
Y3RzIiBdCi0gICAgICB9Ci0gICAgfQotICB9Ci0gIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewot
ICAgIHJ0Y19leGVjdXRhYmxlKCJydGNfZXZlbnRfbG9nMnN0YXRzIikgewotICAgICAgdGVzdG9u
bHkgPSB0cnVlCi0gICAgICBzb3VyY2VzID0gWwotICAgICAgICAicnRjX2V2ZW50X2xvZy9ydGNf
ZXZlbnRfbG9nMnN0YXRzLmNjIiwKLSAgICAgIF0KLSAgICAgIGRlcHMgPSBbCi0gICAgICAgICI6
cnRjX2V2ZW50X2xvZ19hcGkiLAotICAgICAgICAiOnJ0Y19ldmVudF9sb2dfcHJvdG8iLAotICAg
ICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKLSAgICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNl
X2FwcHJvdmVkIiwKLSAgICAgIF0KLSAgICB9Ci0gIH0KIH0KIAogcnRjX3NvdXJjZV9zZXQoImlj
ZV9sb2ciKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGluZy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTEzN2YxM2ZjMWE0
MDJmNmQ4MDgzODdhNzZhNDA5NDk0NTg1ZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvYmxvYl9lbmNvZGluZy5jYwpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqICBDb3B5cmln
aHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2Vu
Y29kaW5nLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKKyNpbmNsdWRlICJsb2dnaW5nL3J0
Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitzdGQ6OnN0cmluZyBFbmNvZGVCbG9icyhjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGJsb2JzKSB7CisgIFJUQ19EQ0hFQ0soIWJsb2Jz
LmVtcHR5KCkpOworCisgIHNpemVfdCByZXN1bHRfbGVuZ3RoX2JvdW5kID0ga01heFZhckludExl
bmd0aEJ5dGVzICogYmxvYnMuc2l6ZSgpOworICBmb3IgKGNvbnN0IGF1dG8mIGJsb2IgOiBibG9i
cykgeworICAgIC8vIFByb3ZpZGluZyBhbiBpbnB1dCBzbyBsb25nIHRoYXQgaXQgd291bGQgY2F1
c2UgYSB3cmFwLWFyb3VuZCBpcyBhbiBlcnJvci4KKyAgICBSVENfRENIRUNLX0dFKHJlc3VsdF9s
ZW5ndGhfYm91bmQgKyBibG9iLmxlbmd0aCgpLCByZXN1bHRfbGVuZ3RoX2JvdW5kKTsKKyAgICBy
ZXN1bHRfbGVuZ3RoX2JvdW5kICs9IGJsb2IubGVuZ3RoKCk7CisgIH0KKworICBzdGQ6OnN0cmlu
ZyByZXN1bHQ7CisgIHJlc3VsdC5yZXNlcnZlKHJlc3VsdF9sZW5ndGhfYm91bmQpOworCisgIC8v
IEZpcnN0LCBlbmNvZGUgYWxsIG9mIHRoZSBsZW5ndGhzLgorICBmb3IgKGFic2w6OnN0cmluZ192
aWV3IGJsb2IgOiBibG9icykgeworICAgIHJlc3VsdCArPSBFbmNvZGVWYXJJbnQoYmxvYi5sZW5n
dGgoKSk7CisgIH0KKworICAvLyBTZWNvbmQsIGVuY29kZSB0aGUgYWN0dWFsIGJsb2JzLgorICBm
b3IgKGFic2w6OnN0cmluZ192aWV3IGJsb2IgOiBibG9icykgeworICAgIHJlc3VsdC5hcHBlbmQo
YmxvYi5kYXRhKCksIGJsb2IubGVuZ3RoKCkpOworICB9CisKKyAgUlRDX0RDSEVDS19MRShyZXN1
bHQuc2l6ZSgpLCByZXN1bHRfbGVuZ3RoX2JvdW5kKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwor
c3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IERlY29kZUJsb2JzKGFic2w6OnN0cmluZ192
aWV3IGVuY29kZWRfYmxvYnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG51bV9vZl9ibG9icykgeworICBpZiAoZW5jb2RlZF9ibG9icy5lbXB0eSgp
KSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ29ycnVwdCBpbnB1dDsgZW1wdHkgaW5w
dXQuIjsKKyAgICByZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+KCk7CisgIH0K
KworICBpZiAobnVtX29mX2Jsb2JzID09IDB1KSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKQor
ICAgICAgICA8PCAiQ29ycnVwdCBpbnB1dDsgbnVtYmVyIG9mIGJsb2JzIG11c3QgYmUgZ3JlYXRl
ciB0aGFuIDAuIjsKKyAgICByZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+KCk7
CisgIH0KKworICBzaXplX3QgcmVhZF9pZHggPSAwOworCisgIC8vIFJlYWQgdGhlIGxlbmd0aHMg
b2YgYWxsIGJsb2JzLgorICBzdGQ6OnZlY3Rvcjx1aW50NjRfdD4gbGVuZ3RocyhudW1fb2ZfYmxv
YnMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9vZl9ibG9iczsgKytpKSB7CisgICAg
aWYgKHJlYWRfaWR4ID49IGVuY29kZWRfYmxvYnMubGVuZ3RoKCkpIHsKKyAgICAgIFJUQ19EQ0hF
Q0tfRVEocmVhZF9pZHgsIGVuY29kZWRfYmxvYnMubGVuZ3RoKCkpOworICAgICAgUlRDX0xPRyhM
U19XQVJOSU5HKSA8PCAiQ29ycnVwdCBpbnB1dDsgZXhjZXNzaXZlIG51bWJlciBvZiBibG9icy4i
OworICAgICAgcmV0dXJuIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PigpOworICAgIH0K
KworICAgIGNvbnN0IHNpemVfdCByZWFkX2J5dGVzID0KKyAgICAgICAgRGVjb2RlVmFySW50KGVu
Y29kZWRfYmxvYnMuc3Vic3RyKHJlYWRfaWR4KSwgJmxlbmd0aHNbaV0pOworICAgIGlmIChyZWFk
X2J5dGVzID09IDApIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNvcnJ1cHQgaW5w
dXQ7IHZhcmludCBkZWNvZGluZyBmYWlsZWQuIjsKKyAgICAgIHJldHVybiBzdGQ6OnZlY3Rvcjxh
YnNsOjpzdHJpbmdfdmlldz4oKTsKKyAgICB9CisKKyAgICByZWFkX2lkeCArPSByZWFkX2J5dGVz
OworCisgICAgLy8gTm90ZTogSXQgbWlnaHQgYmUgdGhhdCByZWFkX2lkeCA9PSBlbmNvZGVkX2Js
b2JzLmxlbmd0aCgpLCBpZiB0aGlzCisgICAgLy8gaXMgdGhlIGxhc3QgaXRlcmF0aW9uLCBhbmQg
YWxsIG9mIHRoZSBibG9icyBhcmUgdGhlIGVtcHR5IHN0cmluZy4KKyAgICBSVENfRENIRUNLX0xF
KHJlYWRfaWR4LCBlbmNvZGVkX2Jsb2JzLmxlbmd0aCgpKTsKKyAgfQorCisgIC8vIFJlYWQgdGhl
IGJsb2JzIHRoZW1zZWx2ZXMuCisgIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PiBibG9i
cyhudW1fb2ZfYmxvYnMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9vZl9ibG9iczsg
KytpKSB7CisgICAgaWYgKHJlYWRfaWR4ICsgbGVuZ3Roc1tpXSA8IHJlYWRfaWR4KSB7ICAvLyBX
cmFwLWFyb3VuZCBkZXRlY3Rpb24uCisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJDb3Jy
dXB0IGlucHV0OyB1bnJlYXNvbmFibHkgbGFyZ2UgYmxvYiBzZXF1ZW5jZS4iOworICAgICAgcmV0
dXJuIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PigpOworICAgIH0KKworICAgIGlmIChy
ZWFkX2lkeCArIGxlbmd0aHNbaV0gPiBlbmNvZGVkX2Jsb2JzLmxlbmd0aCgpKSB7CisgICAgICBS
VENfTE9HKExTX1dBUk5JTkcpIDw8ICJDb3JydXB0IGlucHV0OyBibG9iIHNpemVzIGV4Y2VlZCBp
bnB1dCBzaXplLiI7CisgICAgICByZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+
KCk7CisgICAgfQorCisgICAgYmxvYnNbaV0gPSBlbmNvZGVkX2Jsb2JzLnN1YnN0cihyZWFkX2lk
eCwgbGVuZ3Roc1tpXSk7CisgICAgcmVhZF9pZHggKz0gbGVuZ3Roc1tpXTsKKyAgfQorCisgIGlm
IChyZWFkX2lkeCAhPSBlbmNvZGVkX2Jsb2JzLmxlbmd0aCgpKSB7CisgICAgUlRDX0xPRyhMU19X
QVJOSU5HKSA8PCAiQ29ycnVwdCBpbnB1dDsgdW5yZWNvZ25pemVkIHRyYWlsZXIuIjsKKyAgICBy
ZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+KCk7CisgIH0KKworICByZXR1cm4g
YmxvYnM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
bmNvZGVyL2Jsb2JfZW5jb2RpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmcuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMmExMGQyNzdmN2ZkNmFlMTcwMzBhNzc0YTAzZThiNzFkOTYwZDhiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGluZy5oCkBAIC0wLDAgKzEs
NTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5U
X0xPR19FTkNPREVSX0JMT0JfRU5DT0RJTkdfSF8KKyNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRf
TE9HX0VOQ09ERVJfQkxPQl9FTkNPRElOR19IXworCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1
ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorCitu
YW1lc3BhY2Ugd2VicnRjIHsKKworLy8gRW5jb2RlL2RlY29kZSBhIHNlcXVlbmNlIG9mIHN0cmlu
Z3MsIHdob3NlIGxlbmd0aCBpcyBub3Qga25vd24gdG8gYmUKKy8vIGRpc2Nlcm5hYmxlIGZyb20g
dGhlIGJsb2IgaXRzZWxmIChpLmUuIHdpdGhvdXQgYmVpbmcgdHJhbnNtaXR0ZWQgT09CKSwKKy8v
IGluIGEgd2F5IHRoYXQgd291bGQgYWxsb3cgdXMgdG8gc2VwYXJhdGUgdGhlbSBhZ2FpbiBvbiB0
aGUgZGVjb2Rpbmcgc2lkZS4KKy8vIFRoZSBudW1iZXIgb2YgYmxvYnMgaXMgYXNzdW1lZCB0byBi
ZSB0cmFuc21pdHRlZCBPT0IuIEZvciBleGFtcGxlLCBpZgorLy8gbXVsdGlwbGUgc2VxdWVuY2Vz
IG9mIGRpZmZlcmVudCBibG9icyBhcmUgc2VudCwgYnV0IGFsbCBzZXF1ZW5jZXMgY29udGFpbgor
Ly8gdGhlIHNhbWUgbnVtYmVyIG9mIGJsb2JzLCBpdCBpcyBiZW5lZmljaWFsIHRvIG5vdCBlbmNv
ZGUgdGhlIG51bWJlciBvZiBibG9icy4KKy8vCisvLyBFbmNvZGVCbG9icygpIG11c3QgYmUgZ2l2
ZW4gYSBub24tZW1wdHkgdmVjdG9yLiBUaGUgYmxvYnMgdGhlbXNlbHZlcyBtYXkKKy8vIGJlIGVx
dWFsIHRvICIiLCB0aG91Z2guCisvLyBFbmNvZGVCbG9icygpIG1heSBub3QgZmFpbC4KKy8vIEVu
Y29kZUJsb2JzKCkgbmV2ZXIgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLgorLy8KKy8vIENhbGxp
bmcgRGVjb2RlQmxvYnMoKSBvbiBhbiBlbXB0eSBzdHJpbmcsIG9yIHdpdGggfG51bV9vZl9ibG9i
c3wgc2V0IHRvIDAsCisvLyBpcyBhbiBlcnJvci4KKy8vIERlY29kZUJsb2JzKCkgcmV0dXJucyBh
biBlbXB0eSB2ZWN0b3IgaWYgaXQgZmFpbHMsIGUuZy4gZHVlIHRvIGEgbWlzbWF0Y2gKKy8vIGJl
dHdlZW4gfG51bV9vZl9ibG9ic3wgYW5kIHxlbmNvZGVkX2Jsb2JzfCwgd2hpY2ggY2FuIGhhcHBl
biBpZgorLy8gfGVuY29kZWRfYmxvYnN8IGlzIGNvcnJ1cHRlZC4KKy8vIFdoZW4gc3VjY2Vzc2Z1
bCwgRGVjb2RlQmxvYnMoKSByZXR1cm5zIGEgdmVjdG9yIG9mIHN0cmluZ192aWV3IG9iamVjdHMs
CisvLyB3aGljaCByZWZlciB0byB0aGUgb3JpZ2luYWwgaW5wdXQgKHxlbmNvZGVkX2Jsb2JzfCks
IGFuZCB0aGVyZWZvcmUgbWF5CisvLyBub3Qgb3V0bGl2ZSBpdC4KKy8vCisvLyBOb3RlIHRoYXQg
dGhlIHJldHVybmVkIHN0ZDo6c3RyaW5nIG1pZ2h0IGhhdmUgYmVlbiByZXNlcnZlZCBmb3Igc2ln
bmlmaWNhbnRseQorLy8gbW9yZSBtZW1vcnkgdGhhbiBpdCBlbmRzIHVwIHVzaW5nLiBJZiB0aGUg
Y2FsbGVyIHRvIEVuY29kZUJsb2JzKCkgaW50ZW5kcworLy8gdG8gc3RvcmUgdGhlIHJlc3VsdCBs
b25nLXRlcm0sIGhlIHNob3VsZCBjb25zaWRlciBzaHJpbmtfdG9fZml0KCktaW5nIGl0Lgorc3Rk
OjpzdHJpbmcgRW5jb2RlQmxvYnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBibG9i
cyk7CitzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4gRGVjb2RlQmxvYnMoYWJzbDo6c3Ry
aW5nX3ZpZXcgZW5jb2RlZF9ibG9icywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbnVtX29mX2Jsb2JzKTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YworCisjZW5kaWYgIC8vIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX0JMT0JfRU5DT0RJ
TkdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmdfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFkMDhlMGZlYjg3MDdmNzYxMDczOGE5YjllMmRjZGJmNTg0MWFlNzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEs
MTUyIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmcuaCIKKworI2luY2x1ZGUgPHN0cmluZz4KKyNp
bmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rl
ci92YXJpbnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJ0ZXN0
L2d0ZXN0LmgiCisKK3VzaW5nIENoYXJUID0gc3RkOjpzdHJpbmc6OnZhbHVlX3R5cGU7CisKK25h
bWVzcGFjZSB3ZWJydGMgeworCituYW1lc3BhY2UgeworCit2b2lkIFRlc3RFbmNvZGluZ0FuZERl
Y29kaW5nKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgYmxvYnMpIHsKKyAgUlRDX0RD
SEVDSyghYmxvYnMuZW1wdHkoKSk7CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IEVu
Y29kZUJsb2JzKGJsb2JzKTsKKyAgQVNTRVJUX0ZBTFNFKGVuY29kZWQuZW1wdHkoKSk7CisKKyAg
Y29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IGRlY29kZWQgPQorICAgICAgRGVj
b2RlQmxvYnMoZW5jb2RlZCwgYmxvYnMuc2l6ZSgpKTsKKworICBBU1NFUlRfRVEoZGVjb2RlZC5z
aXplKCksIGJsb2JzLnNpemUoKSk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVjb2RlZC5z
aXplKCk7ICsraSkgeworICAgIEFTU0VSVF9FUShkZWNvZGVkW2ldLCBibG9ic1tpXSk7CisgIH0K
K30KKwordm9pZCBUZXN0R3JhY2VmdWxFcnJvckhhbmRsaW5nKGFic2w6OnN0cmluZ192aWV3IGVu
Y29kZWRfYmxvYnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9v
Zl9ibG9icykgeworICBjb25zdCBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4gZGVjb2Rl
ZCA9CisgICAgICBEZWNvZGVCbG9icyhlbmNvZGVkX2Jsb2JzLCBudW1fb2ZfYmxvYnMpOworICBF
WFBFQ1RfVFJVRShkZWNvZGVkLmVtcHR5KCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworVEVT
VChCbG9iRW5jb2RpbmcsIEVtcHR5QmxvYikgeworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyh7
IiJ9KTsKK30KKworVEVTVChCbG9iRW5jb2RpbmcsIFNpbmdsZUNoYXJhY3RlckJsb2IpIHsKKyAg
VGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoeyJhIn0pOworfQorCitURVNUKEJsb2JFbmNvZGluZywg
TG9uZ0Jsb2IpIHsKKyAgc3RkOjpzdHJpbmcgYmxvYiA9ICIiOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgYmxvYiArPSBzdGQ6OnRvX3N0cmluZyhpICsgMSkg
KyAiIE1pc3Npc3NpcHBpXG4iOworICB9CisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKHtibG9i
fSk7Cit9CisKK1RFU1QoQmxvYkVuY29kaW5nLCBCbG9ic09mVmFyaW91c0xlbmd0aHMpIHsKKyAg
Y29uc3RleHByIHNpemVfdCBrSnVtcCA9IDB4ZjAzMmQ7ICAvLyBBcmJpdHJhcnkuCisgIGNvbnN0
ZXhwciBzaXplX3Qga01heCA9IDB4ZmZmZmZmOyAgLy8gQXJiaXRyYXJ5LgorCisgIHN0ZDo6c3Ry
aW5nIGJsb2I7CisgIGJsb2IucmVzZXJ2ZShrTWF4KTsKKworICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGtNYXg7IGkgKz0ga0p1bXApIHsKKyAgICBibG9iLmFwcGVuZChrSnVtcCwgJ3gnKTsKKyAg
ICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyh7YmxvYn0pOworICB9Cit9CisKK1RFU1QoQmxvYkVu
Y29kaW5nLCBNdWx0aXBsZUJsb2JzKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBibG9i
czsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIGJsb2JzLnB1
c2hfYmFjayhzdGQ6OnRvX3N0cmluZyhpICsgMSkgKyAiIE1pc3Npc3NpcHBpXG4iKTsKKyAgfQor
ICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhibG9icyk7Cit9CisKK1RFU1QoQmxvYkVuY29kaW5n
LCBEZWNvZGVCbG9ic0hhbmRsZXNFcnJvcnNHcmFjZWZ1bGx5RW1wdHlJbnB1dCkgeworICBUZXN0
R3JhY2VmdWxFcnJvckhhbmRsaW5nKCIiLCAxKTsKK30KKworVEVTVChCbG9iRW5jb2RpbmcsIERl
Y29kZUJsb2JzSGFuZGxlc0Vycm9yc0dyYWNlZnVsbHlaZXJvQmxvYnMpIHsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgZW5jb2RlZCA9IEVuY29kZUJsb2JzKHsiYSJ9KTsKKyAgQVNTRVJUX0ZBTFNFKGVu
Y29kZWQuZW1wdHkoKSk7CisgIFRlc3RHcmFjZWZ1bEVycm9ySGFuZGxpbmcoZW5jb2RlZCwgMCk7
Cit9CisKK1RFU1QoQmxvYkVuY29kaW5nLCBEZWNvZGVCbG9ic0hhbmRsZXNFcnJvcnNHcmFjZWZ1
bGx5QmxvYkxlbmd0aFRvb1NtYWxsKSB7CisgIHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBFbmNvZGVC
bG9icyh7ImFiIn0pOworICBBU1NFUlRfRkFMU0UoZW5jb2RlZC5lbXB0eSgpKTsKKyAgQVNTRVJU
X0VRKGVuY29kZWRbMF0sIDB4MDIpOworICBlbmNvZGVkWzBdID0gMHgwMTsKKyAgVGVzdEdyYWNl
ZnVsRXJyb3JIYW5kbGluZyhlbmNvZGVkLCAxKTsKK30KKworVEVTVChCbG9iRW5jb2RpbmcsIERl
Y29kZUJsb2JzSGFuZGxlc0Vycm9yc0dyYWNlZnVsbHlCbG9iTGVuZ3RoVG9vTGFyZ2UpIHsKKyAg
c3RkOjpzdHJpbmcgZW5jb2RlZCA9IEVuY29kZUJsb2JzKHsiYSJ9KTsKKyAgQVNTRVJUX0ZBTFNF
KGVuY29kZWQuZW1wdHkoKSk7CisgIEFTU0VSVF9FUShlbmNvZGVkWzBdLCAweDAxKTsKKyAgZW5j
b2RlZFswXSA9IDB4MDI7CisgIFRlc3RHcmFjZWZ1bEVycm9ySGFuZGxpbmcoZW5jb2RlZCwgMSk7
Cit9CisKK1RFU1QoQmxvYkVuY29kaW5nLAorICAgICBEZWNvZGVCbG9ic0hhbmRsZXNFcnJvcnNH
cmFjZWZ1bGx5TnVtYmVyT2ZCbG9ic0luY29ycmVjdGx5SGlnaCkgeworICBjb25zdCBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gYmxvYnMgPSB7ImEiLCAiYiJ9OworICBjb25zdCBzdGQ6OnN0cmlu
ZyBlbmNvZGVkID0gRW5jb2RlQmxvYnMoYmxvYnMpOworICAvLyBUZXN0IGZvY3VzIC0gdHdvIGVt
cHR5IHN0cmluZ3MgZW5jb2RlZCwgYnV0IERlY29kZUJsb2JzKCkgdG9sZCB3YXkgbW9yZQorICAv
LyBibG9icyBhcmUgaW4gdGhlIHN0cmluZ3MgdGhhbiBjb3VsZCBiZSBleHBlY3RlZC4KKyAgVGVz
dEdyYWNlZnVsRXJyb3JIYW5kbGluZyhlbmNvZGVkLCAxMDAwKTsKKworICAvLyBUZXN0IHNhbml0
eSAtIHNob3cgdGhhdCBEZWNvZGVCbG9icygpIHdvdWxkIGhhdmUgd29ya2VkIGlmIGl0IGdvdCB0
aGUKKyAgLy8gY29ycmVjdCBpbnB1dC4KKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmxvYnMp
OworfQorCitURVNUKEJsb2JFbmNvZGluZywgRGVjb2RlQmxvYnNIYW5kbGVzRXJyb3JzR3JhY2Vm
dWxseURlZmVjdGl2ZVZhckludCkgeworICBzdGQ6OnN0cmluZyBkZWZlY3RpdmVfdmFyaW50Owor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtNYXhWYXJJbnRMZW5ndGhCeXRlczsgKytpKSB7Cisg
ICAgQVNTRVJUX0xFKGtNYXhWYXJJbnRMZW5ndGhCeXRlcywgMHhmZnUpOworICAgIGRlZmVjdGl2
ZV92YXJpbnQgKz0gc3RhdGljX2Nhc3Q8Q2hhclQ+KHN0YXRpY19jYXN0PHNpemVfdD4oMHg4MHUp
IHwgaSk7CisgIH0KKyAgZGVmZWN0aXZlX3ZhcmludCArPSAweDAxdTsKKworICBjb25zdCBzdGQ6
OnN0cmluZyBkZWZlY3RpdmVfZW5jb2RlZCA9IGRlZmVjdGl2ZV92YXJpbnQgKyAid2hhdGV2ZXIi
OworCisgIFRlc3RHcmFjZWZ1bEVycm9ySGFuZGxpbmcoZGVmZWN0aXZlX2VuY29kZWQsIDEpOwor
fQorCitURVNUKEJsb2JFbmNvZGluZywgRGVjb2RlQmxvYnNIYW5kbGVzRXJyb3JzR3JhY2VmdWxs
eUxlbmd0aFN1bVdyYXBBcm91bmQpIHsKKyAgc3RkOjpzdHJpbmcgbWF4X3NpemVfdmFyaW50Owor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtNYXhWYXJJbnRMZW5ndGhCeXRlcyAtIDE7ICsraSkg
eworICAgIG1heF9zaXplX3ZhcmludCArPSAweGZmdTsKKyAgfQorICBtYXhfc2l6ZV92YXJpbnQg
Kz0gMHg3ZnU7CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZGVmZWN0aXZlX2VuY29kZWQgPQorICAg
ICAgbWF4X3NpemVfdmFyaW50ICsgbWF4X3NpemVfdmFyaW50ICsgIndoYXRldmVyIjsKKworICBU
ZXN0R3JhY2VmdWxFcnJvckhhbmRsaW5nKGRlZmVjdGl2ZV9lbmNvZGVkLCAyKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5j
b2RpbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9kZWx0YV9lbmNvZGluZy5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZTMzNGI5OGQwMDA5YmFkZjQzZGFhNDUwNWEzZDBlM2ZhOTlmMzM4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuY2MKQEAgLTAsMCArMSw5NzQgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvZGVsdGFfZW5jb2RpbmcuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRl
IDxsaW1pdHM+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNs
dWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9s
b2cvZW5jb2Rlci92YXJpbnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9iaXRidWZmZXIuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rv
cm1hZ2ljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7Citu
YW1lc3BhY2UgeworCisvLyBUT0RPKGVsYWRhbG9uKTogT25seSBidWlsZCB0aGUgZGVjb2RlciBp
biB0b29scyBhbmQgdW5pdCB0ZXN0cy4KKworYm9vbCBnX2ZvcmNlX3Vuc2lnbmVkX2Zvcl90ZXN0
aW5nID0gZmFsc2U7Citib29sIGdfZm9yY2Vfc2lnbmVkX2Zvcl90ZXN0aW5nID0gZmFsc2U7CisK
K3NpemVfdCBCaXRzVG9CeXRlcyhzaXplX3QgYml0cykgeworICByZXR1cm4gKGJpdHMgLyA4KSAr
IChiaXRzICUgOCA+IDAgPyAxIDogMCk7Cit9CisKKy8vIFRPRE8oZWxhZGFsb24pOiBSZXBsYWNl
IGJ5IHNvbWV0aGluZyBtb3JlIGVmZmljaWVudC4KK3VpbnQ2NF90IFVuc2lnbmVkQml0V2lkdGgo
dWludDY0X3QgaW5wdXQsIGJvb2wgemVyb192YWxfYXNfemVyb193aWR0aCA9IGZhbHNlKSB7Cisg
IGlmICh6ZXJvX3ZhbF9hc196ZXJvX3dpZHRoICYmIGlucHV0ID09IDApIHsKKyAgICByZXR1cm4g
MDsKKyAgfQorCisgIHVpbnQ2NF90IHdpZHRoID0gMDsKKyAgZG8geyAgLy8gaW5wdXQgPT0gMCAt
PiB3aWR0aCA9PSAxCisgICAgd2lkdGggKz0gMTsKKyAgICBpbnB1dCA+Pj0gMTsKKyAgfSB3aGls
ZSAoaW5wdXQgIT0gMCk7CisgIHJldHVybiB3aWR0aDsKK30KKwordWludDY0X3QgU2lnbmVkQml0
V2lkdGgodWludDY0X3QgbWF4X3Bvc19tYWduaXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50NjRfdCBtYXhfbmVnX21hZ25pdHVkZSkgeworICBjb25zdCB1aW50NjRfdCBiaXR3aWR0
aF9wb3MgPSBVbnNpZ25lZEJpdFdpZHRoKG1heF9wb3NfbWFnbml0dWRlLCB0cnVlKTsKKyAgY29u
c3QgdWludDY0X3QgYml0d2lkdGhfbmVnID0KKyAgICAgIChtYXhfbmVnX21hZ25pdHVkZSA+IDAp
ID8gVW5zaWduZWRCaXRXaWR0aChtYXhfbmVnX21hZ25pdHVkZSAtIDEsIHRydWUpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IDA7CisgIHJldHVybiAxICsgc3RkOjptYXgoYml0d2lk
dGhfcG9zLCBiaXR3aWR0aF9uZWcpOworfQorCisvLyBSZXR1cm4gdGhlIG1heGltdW0gaW50ZWdl
ciBvZiBhIGdpdmVuIGJpdCB3aWR0aC4KKy8vIEV4YW1wbGVzOgorLy8gTWF4VW5zaWduZWRWYWx1
ZU9mQml0V2lkdGgoMSkgPSAweDAxCisvLyBNYXhVbnNpZ25lZFZhbHVlT2ZCaXRXaWR0aCg2KSA9
IDB4M2YKKy8vIE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKDgpID0gMHhmZgorLy8gTWF4VW5z
aWduZWRWYWx1ZU9mQml0V2lkdGgoMzIpID0gMHhmZmZmZmZmZgordWludDY0X3QgTWF4VW5zaWdu
ZWRWYWx1ZU9mQml0V2lkdGgodWludDY0X3QgYml0X3dpZHRoKSB7CisgIFJUQ19EQ0hFQ0tfR0Uo
Yml0X3dpZHRoLCAxKTsKKyAgUlRDX0RDSEVDS19MRShiaXRfd2lkdGgsIDY0KTsKKyAgcmV0dXJu
IChiaXRfd2lkdGggPT0gNjQpID8gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEp
IDw8IGJpdF93aWR0aCkgLSAxKTsKK30KKworLy8gQ29tcHV0ZXMgdGhlIGRlbHRhIGJldHdlZW4g
fHByZXZpb3VzfCBhbmQgfGN1cnJlbnR8LCB1bmRlciB0aGUgYXNzdW1wdGlvbgorLy8gdGhhdCB3
cmFwLWFyb3VuZCBvY2N1cnMgYWZ0ZXIgfHdpZHRofCBpcyBleGNlZWRlZC4KK3VpbnQ2NF90IFVu
c2lnbmVkRGVsdGEodWludDY0X3QgcHJldmlvdXMsIHVpbnQ2NF90IGN1cnJlbnQsIHVpbnQ2NF90
IGJpdF9tYXNrKSB7CisgIHJldHVybiAoY3VycmVudCAtIHByZXZpb3VzKSAmIGJpdF9tYXNrOwor
fQorCisvLyBEZXRlcm1pbmVzIHRoZSBlbmNvZGluZyB0eXBlIChlLmcuIGZpeGVkLXNpemUgZW5j
b2RpbmcpLgorLy8gR2l2ZW4gYW4gZW5jb2RpbmcgdHlwZSwgbWF5IGFsc28gZGlzdGluZ3Vpc2gg
YmV0d2VlbiBzb21lIHZhcmlhbnRzIG9mIGl0CisvLyAoZS5nLiB3aGljaCBmaWVsZHMgb2YgdGhl
IGZpeGVkLXNpemUgZW5jb2RpbmcgYXJlIGV4cGxpY2l0bHkgbWVudGlvbmVkIGJ5CisvLyB0aGUg
aGVhZGVyLCBhbmQgd2hpY2ggYXJlIGltcGxpY2l0bHkgYXNzdW1lZCB0byBob2xkIGNlcnRhaW4g
ZGVmYXVsdCB2YWx1ZXMpLgorZW51bSBjbGFzcyBFbmNvZGluZ1R5cGUgeworICBrRml4ZWRTaXpl
VW5zaWduZWREZWx0YXNOb0Vhcmx5V3JhcE5vT3B0ID0gMCwKKyAga0ZpeGVkU2l6ZVNpZ25lZERl
bHRhc0Vhcmx5V3JhcEFuZE9wdFN1cHBvcnRlZCA9IDEsCisgIGtSZXNlcnZlZDEgPSAyLAorICBr
UmVzZXJ2ZWQyID0gMywKKyAga051bWJlck9mRW5jb2RpbmdUeXBlcyAgLy8gS2VlcCBsYXN0Cit9
OworCisvLyBUaGUgd2lkdGggb2YgZWFjaCBmaWVsZCBpbiB0aGUgZW5jb2RpbmcgaGVhZGVyLiBO
b3RlIHRoYXQgdGhpcyBpcyB0aGUKKy8vIHdpZHRoIGluIGNhc2UgdGhlIGZpZWxkIGV4aXN0czsg
bm90IGFsbCBmaWVsZHMgb2NjdXIgaW4gYWxsIGVuY29kaW5nIHR5cGVzLgorY29uc3RleHByIHNp
emVfdCBrQml0c0luSGVhZGVyRm9yRW5jb2RpbmdUeXBlID0gMjsKK2NvbnN0ZXhwciBzaXplX3Qg
a0JpdHNJbkhlYWRlckZvckRlbHRhV2lkdGhCaXRzID0gNjsKK2NvbnN0ZXhwciBzaXplX3Qga0Jp
dHNJbkhlYWRlckZvclNpZ25lZERlbHRhcyA9IDE7Citjb25zdGV4cHIgc2l6ZV90IGtCaXRzSW5I
ZWFkZXJGb3JWYWx1ZXNPcHRpb25hbCA9IDE7Citjb25zdGV4cHIgc2l6ZV90IGtCaXRzSW5IZWFk
ZXJGb3JWYWx1ZVdpZHRoQml0cyA9IDY7CisKK3N0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihFbmNvZGluZ1R5cGU6OmtOdW1iZXJPZkVuY29kaW5nVHlwZXMpIDw9CisgICAgICAgICAg
ICAgICAgICAxIDw8IGtCaXRzSW5IZWFkZXJGb3JFbmNvZGluZ1R5cGUsCisgICAgICAgICAgICAg
ICJOb3QgYWxsIGVuY29kaW5nIHR5cGVzIGZpdC4iKTsKKworLy8gRGVmYXVsdCB2YWx1ZXMgZm9y
IHdoZW4gdGhlIGVuY29kaW5nIGhlYWRlciBkb2VzIG5vdCBzcGVjaWZ5IGV4cGxpY2l0bHkuCitj
b25zdGV4cHIgYm9vbCBrRGVmYXVsdFNpZ25lZERlbHRhcyA9IGZhbHNlOworY29uc3RleHByIGJv
b2wga0RlZmF1bHRWYWx1ZXNPcHRpb25hbCA9IGZhbHNlOworY29uc3RleHByIHVpbnQ2NF90IGtE
ZWZhdWx0VmFsdWVXaWR0aEJpdHMgPSA2NDsKKworLy8gV3JhcCBCaXRCdWZmZXJXcml0ZXIgYW5k
IGV4dGVuZCBpdHMgZnVuY3Rpb25hbGl0eSBieSAoMSkga2VlcGluZyB0cmFjayBvZgorLy8gdGhl
IG51bWJlciBvZiBiaXRzIHdyaXR0ZW4gYW5kICgyKSBvd25pbmcgaXRzIGJ1ZmZlci4KK2NsYXNz
IEJpdFdyaXRlciBmaW5hbCB7CisgcHVibGljOgorICBleHBsaWNpdCBCaXRXcml0ZXIoc2l6ZV90
IGJ5dGVfY291bnQpCisgICAgICA6IGJ1ZmZlcl8oYnl0ZV9jb3VudCwgJ1wwJyksCisgICAgICAg
IGJpdF93cml0ZXJfKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZidWZmZXJfWzBdKSwgYnVm
ZmVyXy5zaXplKCkpLAorICAgICAgICB3cml0dGVuX2JpdHNfKDApLAorICAgICAgICB2YWxpZF8o
dHJ1ZSkgeworICAgIFJUQ19EQ0hFQ0tfR1QoYnl0ZV9jb3VudCwgMCk7CisgIH0KKworICB2b2lk
IFdyaXRlQml0cyh1aW50NjRfdCB2YWwsIHNpemVfdCBiaXRfY291bnQpIHsKKyAgICBSVENfRENI
RUNLKHZhbGlkXyk7CisgICAgY29uc3QgYm9vbCBzdWNjZXNzID0gYml0X3dyaXRlcl8uV3JpdGVC
aXRzKHZhbCwgYml0X2NvdW50KTsKKyAgICBSVENfRENIRUNLKHN1Y2Nlc3MpOworICAgIHdyaXR0
ZW5fYml0c18gKz0gYml0X2NvdW50OworICB9CisKKyAgdm9pZCBXcml0ZUJpdHMoY29uc3Qgc3Rk
OjpzdHJpbmcmIGlucHV0KSB7CisgICAgUlRDX0RDSEVDSyh2YWxpZF8pOworICAgIGZvciAoc3Rk
OjpzdHJpbmc6OnZhbHVlX3R5cGUgYyA6IGlucHV0KSB7CisgICAgICBXcml0ZUJpdHMoYywgOCAq
IHNpemVvZihzdGQ6OnN0cmluZzo6dmFsdWVfdHlwZSkpOworICAgIH0KKyAgfQorCisgIC8vIFJl
dHVybnMgZXZlcnl0aGluZyB0aGF0IHdhcyB3cml0dGVuIHNvIGZhci4KKyAgLy8gTm90aGluZyBt
b3JlIG1heSBiZSB3cml0dGVuIGFmdGVyIHRoaXMgaXMgY2FsbGVkLgorICBzdGQ6OnN0cmluZyBH
ZXRTdHJpbmcoKSB7CisgICAgUlRDX0RDSEVDSyh2YWxpZF8pOworICAgIHZhbGlkXyA9IGZhbHNl
OworCisgICAgYnVmZmVyXy5yZXNpemUoQml0c1RvQnl0ZXMod3JpdHRlbl9iaXRzXykpOworICAg
IHdyaXR0ZW5fYml0c18gPSAwOworCisgICAgc3RkOjpzdHJpbmcgcmVzdWx0OworICAgIHN0ZDo6
c3dhcChidWZmZXJfLCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworIHByaXZh
dGU6CisgIHN0ZDo6c3RyaW5nIGJ1ZmZlcl87CisgIHJ0Yzo6Qml0QnVmZmVyV3JpdGVyIGJpdF93
cml0ZXJfOworICAvLyBOb3RlOiBDb3VudGluZyBiaXRzIGluc3RlYWQgb2YgYnl0ZXMgd3JhcHMg
YXJvdW5kIGVhcmxpZXIgdGhhbiBpdCBoYXMgdG8sCisgIC8vIHdoaWNoIG1lYW5zIHRoZSBtYXhp
bXVtIGxlbmd0aCBpcyBsb3dlciB0aGFuIGl0IGNvdWxkIGJlLiBXZSBkb24ndCBleHBlY3QKKyAg
Ly8gdG8gZ28gYW55d2hlcmUgbmVhciB0aGUgbGltaXQsIHRob3VnaCwgc28gdGhpcyBpcyBnb29k
IGVub3VnaC4KKyAgc2l6ZV90IHdyaXR0ZW5fYml0c187CisgIGJvb2wgdmFsaWRfOworCisgIFJU
Q19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oQml0V3JpdGVyKTsKK307CisKKy8vIFBhcmFtZXRl
cnMgZm9yIGZpeGVkLXNpemUgZGVsdGEtZW5jb2RpbmcvZGVjb2RpbmcuCisvLyBUaGVzZSBhcmUg
dGFpbG9yZWQgZm9yIHRoZSBzZXF1ZW5jZSB3aGljaCB3aWxsIGJlIGVuY29kZWQgKGUuZy4gd2lk
dGhzKS4KK2NsYXNzIEZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJhbWV0ZXJzIGZpbmFsIHsKKyBwdWJs
aWM6CisgIHN0YXRpYyBib29sIFZhbGlkUGFyYW1ldGVycyh1aW50NjRfdCBkZWx0YV93aWR0aF9i
aXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzaWduZWRfZGVsdGFzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2YWx1ZXNfb3B0aW9uYWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWx1ZV93aWR0aF9iaXRzKSB7Cisg
ICAgcmV0dXJuICgxIDw9IGRlbHRhX3dpZHRoX2JpdHMgJiYgZGVsdGFfd2lkdGhfYml0cyA8PSA2
NCAmJgorICAgICAgICAgICAgMSA8PSB2YWx1ZV93aWR0aF9iaXRzICYmIHZhbHVlX3dpZHRoX2Jp
dHMgPD0gNjQgJiYKKyAgICAgICAgICAgIGRlbHRhX3dpZHRoX2JpdHMgPD0gdmFsdWVfd2lkdGhf
Yml0cyk7CisgIH0KKworICBGaXhlZExlbmd0aEVuY29kaW5nUGFyYW1ldGVycyh1aW50NjRfdCBk
ZWx0YV93aWR0aF9iaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNp
Z25lZF9kZWx0YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmFsdWVz
X29wdGlvbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWx1
ZV93aWR0aF9iaXRzKQorICAgICAgOiBkZWx0YV93aWR0aF9iaXRzXyhkZWx0YV93aWR0aF9iaXRz
KSwKKyAgICAgICAgc2lnbmVkX2RlbHRhc18oc2lnbmVkX2RlbHRhcyksCisgICAgICAgIHZhbHVl
c19vcHRpb25hbF8odmFsdWVzX29wdGlvbmFsKSwKKyAgICAgICAgdmFsdWVfd2lkdGhfYml0c18o
dmFsdWVfd2lkdGhfYml0cyksCisgICAgICAgIGRlbHRhX21hc2tfKE1heFVuc2lnbmVkVmFsdWVP
ZkJpdFdpZHRoKGRlbHRhX3dpZHRoX2JpdHNfKSksCisgICAgICAgIHZhbHVlX21hc2tfKE1heFVu
c2lnbmVkVmFsdWVPZkJpdFdpZHRoKHZhbHVlX3dpZHRoX2JpdHNfKSkgeworICAgIFJUQ19EQ0hF
Q0soVmFsaWRQYXJhbWV0ZXJzKGRlbHRhX3dpZHRoX2JpdHMsIHNpZ25lZF9kZWx0YXMsIHZhbHVl
c19vcHRpb25hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV93aWR0aF9i
aXRzKSk7CisgIH0KKworICAvLyBOdW1iZXIgb2YgYml0cyBuZWNlc3NhcnkgdG8gaG9sZCB0aGUg
d2lkZXN0KCopIG9mIHRoZSBkZWx0YXMgYmV0d2VlbiB0aGUKKyAgLy8gdmFsdWVzIGluIHRoZSBz
ZXF1ZW5jZS4KKyAgLy8gKCopIC0gV2lkZXN0IG1pZ2h0IG5vdCBiZSB0aGUgbGFyZ2VzdCwgaWYg
c2lnbmVkIGRlbHRhcyBhcmUgdXNlZC4KKyAgdWludDY0X3QgZGVsdGFfd2lkdGhfYml0cygpIGNv
bnN0IHsgcmV0dXJuIGRlbHRhX3dpZHRoX2JpdHNfOyB9CisKKyAgLy8gV2hldGhlciBkZWx0YXMg
YXJlIHNpZ25lZC4KKyAgYm9vbCBzaWduZWRfZGVsdGFzKCkgY29uc3QgeyByZXR1cm4gc2lnbmVk
X2RlbHRhc187IH0KKworICAvLyBXaGV0aGVyIHRoZSB2YWx1ZXMgb2YgdGhlIHNlcXVlbmNlIGFy
ZSBvcHRpb25hbC4gVGhhdCBpcywgaXQgbWF5IGJlCisgIC8vIHRoYXQgc29tZSBvZiB0aGVtIGRv
IG5vdCBoYXZlIGEgdmFsdWUgKG5vdCBldmVuIGEgc2VudGluZWwgdmFsdWUgaW5kaWNhdGluZwor
ICAvLyBpbnZhbGlkaXR5KS4KKyAgYm9vbCB2YWx1ZXNfb3B0aW9uYWwoKSBjb25zdCB7IHJldHVy
biB2YWx1ZXNfb3B0aW9uYWxfOyB9CisKKyAgLy8gTnVtYmVyIG9mIGJpdHMgbmVjZXNzYXJ5IHRv
IGhvbGQgdGhlIGxhcmdlc3QgdmFsdWUgaW4gdGhlIHNlcXVlbmNlLgorICB1aW50NjRfdCB2YWx1
ZV93aWR0aF9iaXRzKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfd2lkdGhfYml0c187IH0KKworICAv
LyBNYXNrcyB3aGVyZSBvbmx5IHRoZSBiaXRzIHJlbGV2YW50IHRvIHRoZSBkZWx0YXMvdmFsdWVz
IGFyZSB0dXJuZWQgb24uCisgIHVpbnQ2NF90IGRlbHRhX21hc2soKSBjb25zdCB7IHJldHVybiBk
ZWx0YV9tYXNrXzsgfQorICB1aW50NjRfdCB2YWx1ZV9tYXNrKCkgY29uc3QgeyByZXR1cm4gdmFs
dWVfbWFza187IH0KKworICB2b2lkIFNldFNpZ25lZERlbHRhcyhib29sIHNpZ25lZF9kZWx0YXMp
IHsgc2lnbmVkX2RlbHRhc18gPSBzaWduZWRfZGVsdGFzOyB9CisgIHZvaWQgU2V0RGVsdGFXaWR0
aEJpdHModWludDY0X3QgZGVsdGFfd2lkdGhfYml0cykgeworICAgIGRlbHRhX3dpZHRoX2JpdHNf
ID0gZGVsdGFfd2lkdGhfYml0czsKKyAgICBkZWx0YV9tYXNrXyA9IE1heFVuc2lnbmVkVmFsdWVP
ZkJpdFdpZHRoKGRlbHRhX3dpZHRoX2JpdHMpOworICB9CisKKyBwcml2YXRlOgorICB1aW50NjRf
dCBkZWx0YV93aWR0aF9iaXRzXzsgIC8vIE5vcm1hbGx5IGNvbnN0LCBidXQgbXV0YWJsZSBpbiB0
ZXN0cy4KKyAgYm9vbCBzaWduZWRfZGVsdGFzXzsgICAgICAgICAvLyBOb3JtYWxseSBjb25zdCwg
YnV0IG11dGFibGUgaW4gdGVzdHMuCisgIGNvbnN0IGJvb2wgdmFsdWVzX29wdGlvbmFsXzsKKyAg
Y29uc3QgdWludDY0X3QgdmFsdWVfd2lkdGhfYml0c187CisKKyAgdWludDY0X3QgZGVsdGFfbWFz
a187ICAvLyBOb3JtYWxseSBjb25zdCwgYnV0IG11dGFibGUgaW4gdGVzdHMuCisgIGNvbnN0IHVp
bnQ2NF90IHZhbHVlX21hc2tfOworfTsKKworLy8gUGVyZm9ybXMgZGVsdGEtZW5jb2Rpbmcgb2Yg
YSBzaW5nbGUgKG5vbi1lbXB0eSkgc2VxdWVuY2Ugb2YgdmFsdWVzLCB1c2luZworLy8gYW4gZW5j
b2Rpbmcgd2hlcmUgYWxsIGRlbHRhcyBhcmUgZW5jb2RlZCB1c2luZyB0aGUgc2FtZSBudW1iZXIg
b2YgYml0cy4KKy8vIChXaXRoIHRoZSBleGNlcHRpb24gb2Ygb3B0aW9uYWwgZWxlbWVudHM7IHRo
b3NlIGFyZSBlbmNvZGVkIGFzIGEgYml0IHZlY3RvcgorLy8gd2l0aCBvbmUgYml0IHBlciBlbGVt
ZW50LCBwbHVzIGEgZml4ZWQgbnVtYmVyIG9mIGJpdHMgZm9yIGV2ZXJ5IGVsZW1lbnQgdGhhdAor
Ly8gaGFzIGEgdmFsdWUuKQorY2xhc3MgRml4ZWRMZW5ndGhEZWx0YUVuY29kZXIgZmluYWwgewor
IHB1YmxpYzoKKyAgLy8gU2VlIHdlYnJ0Yzo6RW5jb2RlRGVsdGFzKCkgZm9yIGdlbmVyYWwgZGV0
YWlscy4KKyAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm4gYSBiaXQgcGF0dGVybiB0aGF0IHdvdWxk
IGFsbG93IHRoZSBkZWNvZGVyIHRvCisgIC8vIGRldGVybWluZSB3aGV0aGVyIGl0IHdhcyBwcm9k
dWNlZCBieSBGaXhlZExlbmd0aERlbHRhRW5jb2RlciwgYW5kIGNhbgorICAvLyB0aGVyZWZvcmUg
YmUgZGVjb2RlZCBieSBGaXhlZExlbmd0aERlbHRhRGVjb2Rlciwgb3Igd2hldGhlciBpdCB3YXMg
cHJvZHVjZWQKKyAgLy8gYnkgYSBkaWZmZXJlbnQgZW5jb2Rlci4KKyAgc3RhdGljIHN0ZDo6c3Ry
aW5nIEVuY29kZURlbHRhcygKKyAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAor
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiYgdmFsdWVz
KTsKKworIHByaXZhdGU6CisgIC8vIENhbGN1bGF0ZSBtaW4vbWF4IHZhbHVlcyBvZiB1bnNpZ25l
ZC9zaWduZWQgZGVsdGFzLCBnaXZlbiB0aGUgYml0IHdpZHRoCisgIC8vIG9mIGFsbCB0aGUgdmFs
dWVzIGluIHRoZSBzZXJpZXMuCisgIHN0YXRpYyB2b2lkIENhbGN1bGF0ZU1pbkFuZE1heERlbHRh
cygKKyAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiYgdmFsdWVzLAorICAgICAgdWludDY0
X3QgYml0X3dpZHRoLAorICAgICAgdWludDY0X3QqIG1heF91bnNpZ25lZF9kZWx0YSwKKyAgICAg
IHVpbnQ2NF90KiBtYXhfcG9zX3NpZ25lZF9kZWx0YSwKKyAgICAgIHVpbnQ2NF90KiBtaW5fbmVn
X3NpZ25lZF9kZWx0YSk7CisKKyAgLy8gTm8gZWZmZWN0IG91dHNpZGUgb2YgdW5pdCB0ZXN0cy4K
KyAgLy8gSW4gdW5pdCB0ZXN0cywgbWF5IGxlYWQgdG8gZm9yY2luZyBzaWduZWQvdW5zaWduZWQg
ZGVsdGFzLCBldGMuCisgIHN0YXRpYyB2b2lkIENvbnNpZGVyVGVzdE92ZXJyaWRlcyhGaXhlZExl
bmd0aEVuY29kaW5nUGFyYW1ldGVycyogcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDY0X3QgZGVsdGFfd2lkdGhfYml0c19zaWduZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzX3Vuc2ln
bmVkKTsKKworICAvLyBGaXhlZExlbmd0aERlbHRhRW5jb2RlciBvYmplY3RzIGFyZSB0byBiZSBj
cmVhdGVkIGJ5IEVuY29kZURlbHRhcygpIGFuZAorICAvLyByZWxlYXNlZCBieSBpdCBiZWZvcmUg
aXQgcmV0dXJucy4gVGhleSdyZSBtb3N0bHkgYSBjb252ZW5pZW50IHdheSB0bworICAvLyBhdm9p
ZCBoYXZpbmcgdG8gcGFzcyBhIGxvdCBvZiBzdGF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBmdW5jdGlv
bnMuCisgIC8vIFRoZXJlZm9yZSwgaXQgd2FzIGRlZW1lZCBhY2NlcHRhYmxlIHRvIGxldCB0aGVt
IGhhdmUgYSByZWZlcmVuY2UgdG8KKyAgLy8gfHZhbHVlc3wsIHdob3NlIGxpZmV0aW1lIG11c3Qg
ZXhjZWVkIHRoZSBsaWZldGltZSBvZiB8dGhpc3wuCisgIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVy
KGNvbnN0IEZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRf
dD4+JiB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBleGlzdGVudF92
YWx1ZXNfY291bnQpOworCisgIC8vIFBlcmZvcm0gZGVsdGEtZW5jb2RpbmcgdXNpbmcgdGhlIHBh
cmFtZXRlcnMgZ2l2ZW4gdG8gdGhlIGN0b3Igb24gdGhlCisgIC8vIHNlcXVlbmNlIG9mIHZhbHVl
cyBnaXZlbiB0byB0aGUgY3Rvci4KKyAgc3RkOjpzdHJpbmcgRW5jb2RlKCk7CisKKyAgLy8gRXhh
Y3QgbGVuZ3Rocy4KKyAgc2l6ZV90IE91dHB1dExlbmd0aEJ5dGVzKHNpemVfdCBleGlzdGVudF92
YWx1ZXNfY291bnQpIGNvbnN0OworICBzaXplX3QgSGVhZGVyTGVuZ3RoQml0cygpIGNvbnN0Owor
ICBzaXplX3QgRW5jb2RlZERlbHRhc0xlbmd0aEJpdHMoc2l6ZV90IGV4aXN0ZW50X3ZhbHVlc19j
b3VudCkgY29uc3Q7CisKKyAgLy8gRW5jb2RlIHRoZSBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIGlu
dG8gdGhlIHN0cmVhbS4KKyAgdm9pZCBFbmNvZGVIZWFkZXIoKTsKKworICAvLyBFbmNvZGUgYSBn
aXZlbiBkZWx0YSBpbnRvIHRoZSBzdHJlYW0uCisgIHZvaWQgRW5jb2RlRGVsdGEodWludDY0X3Qg
cHJldmlvdXMsIHVpbnQ2NF90IGN1cnJlbnQpOworICB2b2lkIEVuY29kZVVuc2lnbmVkRGVsdGEo
dWludDY0X3QgcHJldmlvdXMsIHVpbnQ2NF90IGN1cnJlbnQpOworICB2b2lkIEVuY29kZVNpZ25l
ZERlbHRhKHVpbnQ2NF90IHByZXZpb3VzLCB1aW50NjRfdCBjdXJyZW50KTsKKworICAvLyBUaGUg
cGFyYW1ldGVycyBhY2NvcmRpbmcgdG8gd2hpY2ggZW5jb2Rpbmcgd2lsbCBiZSBkb25lICh3aWR0
aCBvZgorICAvLyBmaWVsZHMsIHdoZXRoZXIgc2lnbmVkIGRlbHRhcyBzaG91bGQgYmUgdXNlZCwg
ZXRjLikKKyAgY29uc3QgRml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnMgcGFyYW1zXzsKKwor
ICAvLyBUaGUgZW5jb2Rpbmcgc2NoZW1lIGFzc3VtZXMgdGhhdCBhdCBsZWFzdCBvbmUgdmFsdWUg
aXMgdHJhbnNtaXR0ZWQgT09CLAorICAvLyBzbyB0aGF0IHRoZSBmaXJzdCB2YWx1ZSBjYW4gYmUg
ZW5jb2RlZCBhcyBhIGRlbHRhIGZyb20gdGhhdCBPT0IgdmFsdWUsCisgIC8vIHdoaWNoIGlzIHxi
YXNlX3wuCisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlXzsKKworICAvLyBU
aGUgdmFsdWVzIHRvIGJlIGVuY29kZWQuCisgIC8vIE5vdGU6IFRoaXMgaXMgYSBub24tb3duaW5n
IHJlZmVyZW5jZS4gU2VlIGNvbW1lbnQgYWJvdmUgY3RvciBmb3IgZGV0YWlscy4KKyAgY29uc3Qg
c3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiYgdmFsdWVzXzsKKworICAvLyBC
dWZmZXIgaW50byB3aGljaCBlbmNvZGVkIHZhbHVlcyB3aWxsIGJlIHdyaXR0ZW4uCisgIC8vIFRo
aXMgaXMgY3JlYXRlZCBkeW5taWNhbGx5IGFzIGEgd2F5IHRvIGVuZm9yY2UgdGhhdCB0aGUgcmVz
dCBvZiB0aGUKKyAgLy8gY3RvciBoYXMgZmluaXNoZWQgcnVubmluZyB3aGVuIHRoaXMgaXMgY29u
c3RydWN0ZWQsIHNvIHRoYXQgdGhlIGxvd2VyCisgIC8vIGJvdW5kIG9uIHRoZSBidWZmZXIgc2l6
ZSB3b3VsZCBiZSBndWFyYW50ZWVkIGNvcnJlY3QuCisgIHN0ZDo6dW5pcXVlX3B0cjxCaXRXcml0
ZXI+IHdyaXRlcl87CisKKyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihGaXhlZExlbmd0
aERlbHRhRW5jb2Rlcik7Cit9OworCisvLyBUT0RPKGVsYWRhbG9uKTogUmVkdWNlIHRoZSBudW1i
ZXIgb2YgcGFzc2VzLgorc3RkOjpzdHJpbmcgRml4ZWRMZW5ndGhEZWx0YUVuY29kZXI6OkVuY29k
ZURlbHRhcygKKyAgICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSwKKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+JiB2YWx1ZXMpIHsKKyAgUlRDX0RD
SEVDSyghdmFsdWVzLmVtcHR5KCkpOworCisgIC8vIEFzIGEgc3BlY2lhbCBjYXNlLCBpZiBhbGwg
b2YgdGhlIGVsZW1lbnRzIGFyZSBpZGVudGljYWwgdG8gdGhlIGJhc2UsCisgIC8vIChpbmNsdWRp
bmcsIGZvciBvcHRpb25hbCBmaWVsZHMsIGFib3V0IHRoZWlyIGV4aXN0ZW5jZS9ub24tZXhpc3Rl
bmNlKSwKKyAgLy8gdGhlIGVtcHR5IHN0cmluZyBpcyB1c2VkIHRvIHNpZ25hbCB0aGF0LgorICBp
ZiAoc3RkOjphbGxfb2YoCisgICAgICAgICAgdmFsdWVzLmNiZWdpbigpLCB2YWx1ZXMuY2VuZCgp
LAorICAgICAgICAgIFtiYXNlXShhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gdmFsKSB7IHJldHVy
biB2YWwgPT0gYmFzZTsgfSkpIHsKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAgfQorCisg
IGJvb2wgbm9uX2RlY3JlYXNpbmcgPSB0cnVlOworICB1aW50NjRfdCBtYXhfdmFsdWVfaW5jbHVk
aW5nX2Jhc2UgPSBiYXNlLnZhbHVlX29yKDB1KTsKKyAgc2l6ZV90IGV4aXN0ZW50X3ZhbHVlc19j
b3VudCA9IDA7CisgIHsKKyAgICB1aW50NjRfdCBwcmV2aW91cyA9IGJhc2UudmFsdWVfb3IoMHUp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAg
ICBpZiAoIXZhbHVlc1tpXS5oYXNfdmFsdWUoKSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAg
IH0KKyAgICAgICsrZXhpc3RlbnRfdmFsdWVzX2NvdW50OworICAgICAgbm9uX2RlY3JlYXNpbmcg
Jj0gKHByZXZpb3VzIDw9IHZhbHVlc1tpXS52YWx1ZSgpKTsKKyAgICAgIG1heF92YWx1ZV9pbmNs
dWRpbmdfYmFzZSA9CisgICAgICAgICAgc3RkOjptYXgobWF4X3ZhbHVlX2luY2x1ZGluZ19iYXNl
LCB2YWx1ZXNbaV0udmFsdWUoKSk7CisgICAgICBwcmV2aW91cyA9IHZhbHVlc1tpXS52YWx1ZSgp
OworICAgIH0KKyAgfQorCisgIC8vIElmIHRoZSBzZXF1ZW5jZSBpcyBub24tZGVjcmVhc2luZywg
aXQgbWF5IGJlIGFzc3VtZWQgdG8gaGF2ZSB3aWR0aCA9IDY0OworICAvLyB0aGVyZSdzIG5vIHJl
YXNvbiB0byBlbmNvZGUgdGhlIGFjdHVhbCBtYXggd2lkdGggaW4gdGhlIGVuY29kaW5nIGhlYWRl
ci4KKyAgY29uc3QgdWludDY0X3QgdmFsdWVfd2lkdGhfYml0cyA9CisgICAgICBub25fZGVjcmVh
c2luZyA/IDY0IDogVW5zaWduZWRCaXRXaWR0aChtYXhfdmFsdWVfaW5jbHVkaW5nX2Jhc2UpOwor
CisgIHVpbnQ2NF90IG1heF91bnNpZ25lZF9kZWx0YTsKKyAgdWludDY0X3QgbWF4X3Bvc19zaWdu
ZWRfZGVsdGE7CisgIHVpbnQ2NF90IG1pbl9uZWdfc2lnbmVkX2RlbHRhOworICBDYWxjdWxhdGVN
aW5BbmRNYXhEZWx0YXMoYmFzZSwgdmFsdWVzLCB2YWx1ZV93aWR0aF9iaXRzLCAmbWF4X3Vuc2ln
bmVkX2RlbHRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heF9wb3Nfc2lnbmVkX2Rl
bHRhLCAmbWluX25lZ19zaWduZWRfZGVsdGEpOworCisgIGNvbnN0IHVpbnQ2NF90IGRlbHRhX3dp
ZHRoX2JpdHNfdW5zaWduZWQgPQorICAgICAgVW5zaWduZWRCaXRXaWR0aChtYXhfdW5zaWduZWRf
ZGVsdGEpOworICBjb25zdCB1aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzX3NpZ25lZCA9CisgICAg
ICBTaWduZWRCaXRXaWR0aChtYXhfcG9zX3NpZ25lZF9kZWx0YSwgbWluX25lZ19zaWduZWRfZGVs
dGEpOworCisgIC8vIE5vdGU6IFByZWZlcmVuY2UgZm9yIHVuc2lnbmVkIGlmIHRoZSB0d28gaGF2
ZSB0aGUgc2FtZSB3aWR0aCAoZWZmaWNpZW5jeSkuCisgIGNvbnN0IGJvb2wgc2lnbmVkX2RlbHRh
cyA9CisgICAgICBkZWx0YV93aWR0aF9iaXRzX3NpZ25lZCA8IGRlbHRhX3dpZHRoX2JpdHNfdW5z
aWduZWQ7CisgIGNvbnN0IHVpbnQ2NF90IGRlbHRhX3dpZHRoX2JpdHMgPQorICAgICAgc2lnbmVk
X2RlbHRhcyA/IGRlbHRhX3dpZHRoX2JpdHNfc2lnbmVkIDogZGVsdGFfd2lkdGhfYml0c191bnNp
Z25lZDsKKworICBjb25zdCBib29sIHZhbHVlc19vcHRpb25hbCA9CisgICAgICAhYmFzZS5oYXNf
dmFsdWUoKSB8fCAoZXhpc3RlbnRfdmFsdWVzX2NvdW50IDwgdmFsdWVzLnNpemUoKSk7CisKKyAg
Rml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnMgcGFyYW1zKGRlbHRhX3dpZHRoX2JpdHMsIHNp
Z25lZF9kZWx0YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZXNfb3B0aW9uYWwsIHZhbHVlX3dpZHRoX2JpdHMpOworCisgIC8vIE5vIGVmZmVjdCBpbiBwcm9k
dWN0aW9uLgorICBDb25zaWRlclRlc3RPdmVycmlkZXMoJnBhcmFtcywgZGVsdGFfd2lkdGhfYml0
c19zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YV93aWR0aF9iaXRzX3Vuc2ln
bmVkKTsKKworICBGaXhlZExlbmd0aERlbHRhRW5jb2RlciBlbmNvZGVyKHBhcmFtcywgYmFzZSwg
dmFsdWVzLCBleGlzdGVudF92YWx1ZXNfY291bnQpOworICByZXR1cm4gZW5jb2Rlci5FbmNvZGUo
KTsKK30KKwordm9pZCBGaXhlZExlbmd0aERlbHRhRW5jb2Rlcjo6Q2FsY3VsYXRlTWluQW5kTWF4
RGVsdGFzKAorICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4mIHZhbHVlcywKKyAgICB1aW50NjRf
dCBiaXRfd2lkdGgsCisgICAgdWludDY0X3QqIG1heF91bnNpZ25lZF9kZWx0YV9vdXQsCisgICAg
dWludDY0X3QqIG1heF9wb3Nfc2lnbmVkX2RlbHRhX291dCwKKyAgICB1aW50NjRfdCogbWluX25l
Z19zaWduZWRfZGVsdGFfb3V0KSB7CisgIFJUQ19EQ0hFQ0soIXZhbHVlcy5lbXB0eSgpKTsKKyAg
UlRDX0RDSEVDSyhtYXhfdW5zaWduZWRfZGVsdGFfb3V0KTsKKyAgUlRDX0RDSEVDSyhtYXhfcG9z
X3NpZ25lZF9kZWx0YV9vdXQpOworICBSVENfRENIRUNLKG1pbl9uZWdfc2lnbmVkX2RlbHRhX291
dCk7CisKKyAgY29uc3QgdWludDY0X3QgYml0X21hc2sgPSBNYXhVbnNpZ25lZFZhbHVlT2ZCaXRX
aWR0aChiaXRfd2lkdGgpOworCisgIHVpbnQ2NF90IG1heF91bnNpZ25lZF9kZWx0YSA9IDA7Cisg
IHVpbnQ2NF90IG1heF9wb3Nfc2lnbmVkX2RlbHRhID0gMDsKKyAgdWludDY0X3QgbWluX25lZ19z
aWduZWRfZGVsdGEgPSAwOworCisgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBwcmV2ID0gYmFz
ZTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBp
ZiAoIXZhbHVlc1tpXS5oYXNfdmFsdWUoKSkgeworICAgICAgY29udGludWU7CisgICAgfQorCisg
ICAgaWYgKCFwcmV2Lmhhc192YWx1ZSgpKSB7CisgICAgICAvLyBJZiB0aGUgYmFzZSBpcyBub24t
ZXhpc3RlbnQsIHRoZSBmaXJzdCBleGlzdGVudCB2YWx1ZSBpcyBlbmNvZGVkIGFzCisgICAgICAv
LyBhIHZhcmludCwgcmF0aGVyIHRoYW4gYXMgYSBkZWx0YS4KKyAgICAgIFJUQ19EQ0hFQ0soIWJh
c2UuaGFzX3ZhbHVlKCkpOworICAgICAgcHJldiA9IHZhbHVlc1tpXTsKKyAgICAgIGNvbnRpbnVl
OworICAgIH0KKworICAgIGNvbnN0IHVpbnQ2NF90IGN1cnJlbnQgPSB2YWx1ZXNbaV0udmFsdWUo
KTsKKworICAgIGNvbnN0IHVpbnQ2NF90IGZvcndhcmRfZGVsdGEgPSBVbnNpZ25lZERlbHRhKCpw
cmV2LCBjdXJyZW50LCBiaXRfbWFzayk7CisgICAgY29uc3QgdWludDY0X3QgYmFja3dhcmRfZGVs
dGEgPSBVbnNpZ25lZERlbHRhKGN1cnJlbnQsICpwcmV2LCBiaXRfbWFzayk7CisKKyAgICBtYXhf
dW5zaWduZWRfZGVsdGEgPSBzdGQ6Om1heChtYXhfdW5zaWduZWRfZGVsdGEsIGZvcndhcmRfZGVs
dGEpOworCisgICAgaWYgKGZvcndhcmRfZGVsdGEgPCBiYWNrd2FyZF9kZWx0YSkgeworICAgICAg
bWF4X3Bvc19zaWduZWRfZGVsdGEgPSBzdGQ6Om1heChtYXhfcG9zX3NpZ25lZF9kZWx0YSwgZm9y
d2FyZF9kZWx0YSk7CisgICAgfSBlbHNlIHsKKyAgICAgIG1pbl9uZWdfc2lnbmVkX2RlbHRhID0g
c3RkOjptYXgobWluX25lZ19zaWduZWRfZGVsdGEsIGJhY2t3YXJkX2RlbHRhKTsKKyAgICB9CisK
KyAgICBwcmV2ID0gY3VycmVudDsKKyAgfQorCisgICptYXhfdW5zaWduZWRfZGVsdGFfb3V0ID0g
bWF4X3Vuc2lnbmVkX2RlbHRhOworICAqbWF4X3Bvc19zaWduZWRfZGVsdGFfb3V0ID0gbWF4X3Bv
c19zaWduZWRfZGVsdGE7CisgICptaW5fbmVnX3NpZ25lZF9kZWx0YV9vdXQgPSBtaW5fbmVnX3Np
Z25lZF9kZWx0YTsKK30KKwordm9pZCBGaXhlZExlbmd0aERlbHRhRW5jb2Rlcjo6Q29uc2lkZXJU
ZXN0T3ZlcnJpZGVzKAorICAgIEZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJhbWV0ZXJzKiBwYXJhbXMs
CisgICAgdWludDY0X3QgZGVsdGFfd2lkdGhfYml0c19zaWduZWQsCisgICAgdWludDY0X3QgZGVs
dGFfd2lkdGhfYml0c191bnNpZ25lZCkgeworICBpZiAoZ19mb3JjZV91bnNpZ25lZF9mb3JfdGVz
dGluZykgeworICAgIHBhcmFtcy0+U2V0RGVsdGFXaWR0aEJpdHMoZGVsdGFfd2lkdGhfYml0c191
bnNpZ25lZCk7CisgICAgcGFyYW1zLT5TZXRTaWduZWREZWx0YXMoZmFsc2UpOworICB9IGVsc2Ug
aWYgKGdfZm9yY2Vfc2lnbmVkX2Zvcl90ZXN0aW5nKSB7CisgICAgcGFyYW1zLT5TZXREZWx0YVdp
ZHRoQml0cyhkZWx0YV93aWR0aF9iaXRzX3NpZ25lZCk7CisgICAgcGFyYW1zLT5TZXRTaWduZWRE
ZWx0YXModHJ1ZSk7CisgIH0gZWxzZSB7CisgICAgLy8gVW5jaGFuZ2VkLgorICB9Cit9CisKK0Zp
eGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpGaXhlZExlbmd0aERlbHRhRW5jb2RlcigKKyAgICBjb25z
dCBGaXhlZExlbmd0aEVuY29kaW5nUGFyYW1ldGVycyYgcGFyYW1zLAorICAgIGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90PiBiYXNlLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90Pj4mIHZhbHVlcywKKyAgICBzaXplX3QgZXhpc3RlbnRfdmFsdWVzX2NvdW50KQor
ICAgIDogcGFyYW1zXyhwYXJhbXMpLCBiYXNlXyhiYXNlKSwgdmFsdWVzXyh2YWx1ZXMpIHsKKyAg
UlRDX0RDSEVDSyghdmFsdWVzXy5lbXB0eSgpKTsKKyAgd3JpdGVyXyA9CisgICAgICBhYnNsOjpt
YWtlX3VuaXF1ZTxCaXRXcml0ZXI+KE91dHB1dExlbmd0aEJ5dGVzKGV4aXN0ZW50X3ZhbHVlc19j
b3VudCkpOworfQorCitzdGQ6OnN0cmluZyBGaXhlZExlbmd0aERlbHRhRW5jb2Rlcjo6RW5jb2Rl
KCkgeworICBFbmNvZGVIZWFkZXIoKTsKKworICBpZiAocGFyYW1zXy52YWx1ZXNfb3B0aW9uYWwo
KSkgeworICAgIC8vIEVuY29kZSB3aGljaCB2YWx1ZXMgZXhpc3QgYW5kIHdoaWNoIGRvbid0Lgor
ICAgIGZvciAoYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHZhbHVlIDogdmFsdWVzXykgeworICAg
ICAgd3JpdGVyXy0+V3JpdGVCaXRzKHZhbHVlLmhhc192YWx1ZSgpID8gMXUgOiAwdSwgMSk7Cisg
ICAgfQorICB9CisKKyAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHByZXZpb3VzID0gYmFzZV87
CisgIGZvciAoYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHZhbHVlIDogdmFsdWVzXykgeworICAg
IGlmICghdmFsdWUuaGFzX3ZhbHVlKCkpIHsKKyAgICAgIFJUQ19EQ0hFQ0socGFyYW1zXy52YWx1
ZXNfb3B0aW9uYWwoKSk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBpZiAoIXByZXZp
b3VzLmhhc192YWx1ZSgpKSB7CisgICAgICAvLyBJZiB0aGUgYmFzZSBpcyBub24tZXhpc3RlbnQs
IHRoZSBmaXJzdCBleGlzdGVudCB2YWx1ZSBpcyBlbmNvZGVkIGFzCisgICAgICAvLyBhIHZhcmlu
dCwgcmF0aGVyIHRoYW4gYXMgYSBkZWx0YS4KKyAgICAgIFJUQ19EQ0hFQ0soIWJhc2VfLmhhc192
YWx1ZSgpKTsKKyAgICAgIHdyaXRlcl8tPldyaXRlQml0cyhFbmNvZGVWYXJJbnQodmFsdWUudmFs
dWUoKSkpOworICAgIH0gZWxzZSB7CisgICAgICBFbmNvZGVEZWx0YShwcmV2aW91cy52YWx1ZSgp
LCB2YWx1ZS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBwcmV2aW91cyA9IHZhbHVlOworICB9CisK
KyAgcmV0dXJuIHdyaXRlcl8tPkdldFN0cmluZygpOworfQorCitzaXplX3QgRml4ZWRMZW5ndGhE
ZWx0YUVuY29kZXI6Ok91dHB1dExlbmd0aEJ5dGVzKAorICAgIHNpemVfdCBleGlzdGVudF92YWx1
ZXNfY291bnQpIGNvbnN0IHsKKyAgcmV0dXJuIEJpdHNUb0J5dGVzKEhlYWRlckxlbmd0aEJpdHMo
KSArCisgICAgICAgICAgICAgICAgICAgICBFbmNvZGVkRGVsdGFzTGVuZ3RoQml0cyhleGlzdGVu
dF92YWx1ZXNfY291bnQpKTsKK30KKworc2l6ZV90IEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpI
ZWFkZXJMZW5ndGhCaXRzKCkgY29uc3QgeworICBpZiAocGFyYW1zXy5zaWduZWRfZGVsdGFzKCkg
PT0ga0RlZmF1bHRTaWduZWREZWx0YXMgJiYKKyAgICAgIHBhcmFtc18udmFsdWVzX29wdGlvbmFs
KCkgPT0ga0RlZmF1bHRWYWx1ZXNPcHRpb25hbCAmJgorICAgICAgcGFyYW1zXy52YWx1ZV93aWR0
aF9iaXRzKCkgPT0ga0RlZmF1bHRWYWx1ZVdpZHRoQml0cykgeworICAgIHJldHVybiBrQml0c0lu
SGVhZGVyRm9yRW5jb2RpbmdUeXBlICsga0JpdHNJbkhlYWRlckZvckRlbHRhV2lkdGhCaXRzOwor
ICB9IGVsc2UgeworICAgIHJldHVybiBrQml0c0luSGVhZGVyRm9yRW5jb2RpbmdUeXBlICsga0Jp
dHNJbkhlYWRlckZvckRlbHRhV2lkdGhCaXRzICsKKyAgICAgICAgICAga0JpdHNJbkhlYWRlckZv
clNpZ25lZERlbHRhcyArIGtCaXRzSW5IZWFkZXJGb3JWYWx1ZXNPcHRpb25hbCArCisgICAgICAg
ICAgIGtCaXRzSW5IZWFkZXJGb3JWYWx1ZVdpZHRoQml0czsKKyAgfQorfQorCitzaXplX3QgRml4
ZWRMZW5ndGhEZWx0YUVuY29kZXI6OkVuY29kZWREZWx0YXNMZW5ndGhCaXRzKAorICAgIHNpemVf
dCBleGlzdGVudF92YWx1ZXNfY291bnQpIGNvbnN0IHsKKyAgaWYgKCFwYXJhbXNfLnZhbHVlc19v
cHRpb25hbCgpKSB7CisgICAgcmV0dXJuIHZhbHVlc18uc2l6ZSgpICogcGFyYW1zXy5kZWx0YV93
aWR0aF9iaXRzKCk7CisgIH0gZWxzZSB7CisgICAgUlRDX0RDSEVDS19FUShzdGQ6OmNvdW50X2lm
KHZhbHVlc18uYmVnaW4oKSwgdmFsdWVzXy5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW10oYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHZhbCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwuaGFzX3ZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgICAgICAgZXhpc3RlbnRfdmFs
dWVzX2NvdW50KTsKKyAgICAvLyBPbmUgYml0IGZvciBlYWNoIGRlbHRhLCB0byBpbmRpY2F0ZSBp
ZiB0aGUgdmFsdWUgZXhpc3RzLCBhbmQgZGVsdGFfd2lkdGgKKyAgICAvLyBmb3IgZWFjaCBleGlz
dGVudCB2YWx1ZSwgdG8gaW5kaWNhdGUgdGhlIGRlbHRhIGl0c2VsZi4KKyAgICAvLyBJZiBiYXNl
XyBpcyBub24tZXhpc3RlbnQsIHRoZSBmaXJzdCB2YWx1ZSAoaWYgYW55KSBpcyBlbmNvZGVkIGFz
IGEgdmFyaW50CisgICAgLy8gcmF0aGVyIHRoYW4gYXMgYSBkZWx0YS4KKyAgICBjb25zdCBzaXpl
X3QgZXhpc3RlbmNlX2JpdG1hcF9zaXplX2JpdHMgPSAxICogdmFsdWVzXy5zaXplKCk7CisgICAg
Y29uc3QgYm9vbCBmaXJzdF92YWx1ZV9pc192YXJpbnQgPQorICAgICAgICAhYmFzZV8uaGFzX3Zh
bHVlKCkgJiYgZXhpc3RlbnRfdmFsdWVzX2NvdW50ID49IDE7CisgICAgY29uc3Qgc2l6ZV90IGZp
cnN0X3ZhbHVlX3ZhcmludF9zaXplX2JpdHMgPSA4ICoga01heFZhckludExlbmd0aEJ5dGVzOwor
ICAgIGNvbnN0IHNpemVfdCBkZWx0YXNfY291bnQgPSBleGlzdGVudF92YWx1ZXNfY291bnQgLSBm
aXJzdF92YWx1ZV9pc192YXJpbnQ7CisgICAgY29uc3Qgc2l6ZV90IGRlbHRhc19zaXplX2JpdHMg
PSBkZWx0YXNfY291bnQgKiBwYXJhbXNfLmRlbHRhX3dpZHRoX2JpdHMoKTsKKyAgICByZXR1cm4g
ZXhpc3RlbmNlX2JpdG1hcF9zaXplX2JpdHMgKyBmaXJzdF92YWx1ZV92YXJpbnRfc2l6ZV9iaXRz
ICsKKyAgICAgICAgICAgZGVsdGFzX3NpemVfYml0czsKKyAgfQorfQorCit2b2lkIEZpeGVkTGVu
Z3RoRGVsdGFFbmNvZGVyOjpFbmNvZGVIZWFkZXIoKSB7CisgIFJUQ19EQ0hFQ0sod3JpdGVyXyk7
CisKKyAgY29uc3QgRW5jb2RpbmdUeXBlIGVuY29kaW5nX3R5cGUgPQorICAgICAgKHBhcmFtc18u
dmFsdWVfd2lkdGhfYml0cygpID09IGtEZWZhdWx0VmFsdWVXaWR0aEJpdHMgJiYKKyAgICAgICBw
YXJhbXNfLnNpZ25lZF9kZWx0YXMoKSA9PSBrRGVmYXVsdFNpZ25lZERlbHRhcyAmJgorICAgICAg
IHBhcmFtc18udmFsdWVzX29wdGlvbmFsKCkgPT0ga0RlZmF1bHRWYWx1ZXNPcHRpb25hbCkKKyAg
ICAgICAgICA/IEVuY29kaW5nVHlwZTo6a0ZpeGVkU2l6ZVVuc2lnbmVkRGVsdGFzTm9FYXJseVdy
YXBOb09wdAorICAgICAgICAgIDogRW5jb2RpbmdUeXBlOjprRml4ZWRTaXplU2lnbmVkRGVsdGFz
RWFybHlXcmFwQW5kT3B0U3VwcG9ydGVkOworCisgIHdyaXRlcl8tPldyaXRlQml0cyhzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oZW5jb2RpbmdfdHlwZSksCisgICAgICAgICAgICAgICAgICAgICBrQml0
c0luSGVhZGVyRm9yRW5jb2RpbmdUeXBlKTsKKworICAvLyBOb3RlOiBTaW5jZSBpdCdzIG1lYW5p
bmdsZXNzIGZvciBhIGZpZWxkIHRvIGJlIG9mIHdpZHRoIDAsIHdoZW4gaXQgY29tZXMKKyAgLy8g
dG8gZmllbGRzIHRoYXQgcmVsYXRlIHdpZHRocywgd2UgZW5jb2RlICB3aWR0aCAxIGFzIDAsIHdp
ZHRoIDIgYXMgMSwKKworICB3cml0ZXJfLT5Xcml0ZUJpdHMocGFyYW1zXy5kZWx0YV93aWR0aF9i
aXRzKCkgLSAxLAorICAgICAgICAgICAgICAgICAgICAga0JpdHNJbkhlYWRlckZvckRlbHRhV2lk
dGhCaXRzKTsKKworICBpZiAoZW5jb2RpbmdfdHlwZSA9PSBFbmNvZGluZ1R5cGU6OmtGaXhlZFNp
emVVbnNpZ25lZERlbHRhc05vRWFybHlXcmFwTm9PcHQpIHsKKyAgICByZXR1cm47CisgIH0KKwor
ICB3cml0ZXJfLT5Xcml0ZUJpdHMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhcmFtc18uc2lnbmVk
X2RlbHRhcygpKSwKKyAgICAgICAgICAgICAgICAgICAgIGtCaXRzSW5IZWFkZXJGb3JTaWduZWRE
ZWx0YXMpOworICB3cml0ZXJfLT5Xcml0ZUJpdHMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhcmFt
c18udmFsdWVzX29wdGlvbmFsKCkpLAorICAgICAgICAgICAgICAgICAgICAga0JpdHNJbkhlYWRl
ckZvclZhbHVlc09wdGlvbmFsKTsKKyAgd3JpdGVyXy0+V3JpdGVCaXRzKHBhcmFtc18udmFsdWVf
d2lkdGhfYml0cygpIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgIGtCaXRzSW5IZWFkZXJGb3JW
YWx1ZVdpZHRoQml0cyk7Cit9CisKK3ZvaWQgRml4ZWRMZW5ndGhEZWx0YUVuY29kZXI6OkVuY29k
ZURlbHRhKHVpbnQ2NF90IHByZXZpb3VzLCB1aW50NjRfdCBjdXJyZW50KSB7CisgIGlmIChwYXJh
bXNfLnNpZ25lZF9kZWx0YXMoKSkgeworICAgIEVuY29kZVNpZ25lZERlbHRhKHByZXZpb3VzLCBj
dXJyZW50KTsKKyAgfSBlbHNlIHsKKyAgICBFbmNvZGVVbnNpZ25lZERlbHRhKHByZXZpb3VzLCBj
dXJyZW50KTsKKyAgfQorfQorCit2b2lkIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpFbmNvZGVV
bnNpZ25lZERlbHRhKHVpbnQ2NF90IHByZXZpb3VzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBjdXJyZW50KSB7CisgIFJUQ19EQ0hF
Q0sod3JpdGVyXyk7CisgIGNvbnN0IHVpbnQ2NF90IGRlbHRhID0gVW5zaWduZWREZWx0YShwcmV2
aW91cywgY3VycmVudCwgcGFyYW1zXy52YWx1ZV9tYXNrKCkpOworICB3cml0ZXJfLT5Xcml0ZUJp
dHMoZGVsdGEsIHBhcmFtc18uZGVsdGFfd2lkdGhfYml0cygpKTsKK30KKwordm9pZCBGaXhlZExl
bmd0aERlbHRhRW5jb2Rlcjo6RW5jb2RlU2lnbmVkRGVsdGEodWludDY0X3QgcHJldmlvdXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBj
dXJyZW50KSB7CisgIFJUQ19EQ0hFQ0sod3JpdGVyXyk7CisKKyAgY29uc3QgdWludDY0X3QgZm9y
d2FyZF9kZWx0YSA9CisgICAgICBVbnNpZ25lZERlbHRhKHByZXZpb3VzLCBjdXJyZW50LCBwYXJh
bXNfLnZhbHVlX21hc2soKSk7CisgIGNvbnN0IHVpbnQ2NF90IGJhY2t3YXJkX2RlbHRhID0KKyAg
ICAgIFVuc2lnbmVkRGVsdGEoY3VycmVudCwgcHJldmlvdXMsIHBhcmFtc18udmFsdWVfbWFzaygp
KTsKKworICB1aW50NjRfdCBkZWx0YTsKKyAgaWYgKGZvcndhcmRfZGVsdGEgPD0gYmFja3dhcmRf
ZGVsdGEpIHsKKyAgICBkZWx0YSA9IGZvcndhcmRfZGVsdGE7CisgIH0gZWxzZSB7CisgICAgLy8g
Q29tcHV0ZSB0aGUgdW5zaWduZWQgcmVwcmVzZW50YXRpb24gb2YgYSBuZWdhdGl2ZSBkZWx0YS4K
KyAgICAvLyBUaGlzIGlzIHRoZSB0d28ncyBjb21wbGVtZW50IHJlcHJlc2VudGF0aW9uIG9mIHRo
aXMgbmVnYXRpdmUgdmFsdWUsCisgICAgLy8gd2hlbiBkZWx0YXMgYXJlIG9mIHdpZHRoIHBhcmFt
c18uZGVsdGFfbWFzaygpLgorICAgIFJUQ19EQ0hFQ0tfR0UocGFyYW1zXy5kZWx0YV9tYXNrKCks
IGJhY2t3YXJkX2RlbHRhKTsKKyAgICBSVENfRENIRUNLX0xUKHBhcmFtc18uZGVsdGFfbWFzaygp
IC0gYmFja3dhcmRfZGVsdGEsIHBhcmFtc18uZGVsdGFfbWFzaygpKTsKKyAgICBkZWx0YSA9IHBh
cmFtc18uZGVsdGFfbWFzaygpIC0gYmFja3dhcmRfZGVsdGEgKyAxOworICAgIFJUQ19EQ0hFQ0tf
TEUoZGVsdGEsIHBhcmFtc18uZGVsdGFfbWFzaygpKTsKKyAgfQorCisgIHdyaXRlcl8tPldyaXRl
Qml0cyhkZWx0YSwgcGFyYW1zXy5kZWx0YV93aWR0aF9iaXRzKCkpOworfQorCisvLyBQZXJmb3Jt
IGRlY29kaW5nIG9mIGEgYSBkZWx0YS1lbmNvZGVkIHN0cmVhbSwgZXh0cmFjdGluZyB0aGUgb3Jp
Z2luYWwKKy8vIHNlcXVlbmNlIG9mIHZhbHVlcy4KK2NsYXNzIEZpeGVkTGVuZ3RoRGVsdGFEZWNv
ZGVyIGZpbmFsIHsKKyBwdWJsaWM6CisgIC8vIENoZWNrcyB3aGV0aGVyIEZpeGVkTGVuZ3RoRGVs
dGFEZWNvZGVyIGlzIGEgc3VpdGFibGUgZGVjb2RlciBmb3IgdGhpcworICAvLyBiaXRzdHJlYW0u
IE5vdGUgdGhhdCB0aGlzIGRvZXMgTk9UIGltcGx5IHRoYXQgc3RyZWFtIGlzIHZhbGlkLCBhbmQg
d2lsbAorICAvLyBiZSBkZWNvZGVkIHN1Y2Nlc3NmdWxseS4gSXQgRE9FUyBpbXBseSB0aGF0IGFs
bCBvdGhlciBkZWNvZGVyIGNsYXNzZXMKKyAgLy8gd2lsbCBmYWlsIHRvIGRlY29kZSB0aGlzIGlu
cHV0LCB0aG91Z2guCisgIHN0YXRpYyBib29sIElzU3VpdGFibGVEZWNvZGVyRm9yKGNvbnN0IHN0
ZDo6c3RyaW5nJiBpbnB1dCk7CisKKyAgLy8gQXNzdW1pbmcgdGhhdCB8aW5wdXR8IGlzIHRoZSBy
ZXN1bHQgb2YgZml4ZWQtc2l6ZSBkZWx0YS1lbmNvZGluZworICAvLyB0aGF0IHRvb2sgcGxhY2Ug
d2l0aCB0aGUgc2FtZSB2YWx1ZSB0byB8YmFzZXwgYW5kIG92ZXIgfG51bV9vZl9kZWx0YXN8Cisg
IC8vIG9yaWdpbmFsIHZhbHVlcywgdGhpcyB3aWxsIHJldHVybiB0aGUgc2VxdWVuY2Ugb2Ygb3Jp
Z2luYWwgdmFsdWVzLgorICAvLyBJZiBhbiBlcnJvciBvY2N1cnMgKGNhbiBoYXBwZW4gaWYgfGlu
cHV0fCBpcyBjb3JydXB0KSwgYW4gZW1wdHkKKyAgLy8gdmVjdG9yIHdpbGwgYmUgcmV0dXJuZWQu
CisgIHN0YXRpYyBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IERlY29kZURl
bHRhcygKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwKKyAgICAgIGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90PiBiYXNlLAorICAgICAgc2l6ZV90IG51bV9vZl9kZWx0YXMpOworCisgcHJp
dmF0ZToKKyAgLy8gUmVhZHMgdGhlIGVuY29kaW5nIGhlYWRlciBpbiB8aW5wdXR8IGFuZCByZXR1
cm5zIGEgRml4ZWRMZW5ndGhEZWx0YURlY29kZXIKKyAgLy8gd2l0aCB0aGUgY29ycmVzcG9uZGlu
ZyBjb25maWd1cmF0aW9uLCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlY29kZSB0aGUKKyAgLy8gdmFs
dWVzIGluIHxpbnB1dHwuCisgIC8vIElmIHRoZSBlbmNvZGluZyBoZWFkZXIgaXMgY29ycnVwdCAo
Y29udGFpbnMgYW4gaWxsZWdhbCBjb25maWd1cmF0aW9uKSwKKyAgLy8gbnVsbHB0ciB3aWxsIGJl
IHJldHVybmVkLgorICAvLyBXaGVuIGEgdmFsaWQgRml4ZWRMZW5ndGhEZWx0YURlY29kZXIgaXMg
cmV0dXJuZWQsIHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0CisgIC8vIHRoZSBlbnRpcmUgc3RyZWFt
IGlzIGZyZWUgb2YgZXJyb3IuIFJhdGhlciwgb25seSB0aGUgZW5jb2RpbmcgaGVhZGVyIGlzCisg
IC8vIGV4YW1pbmVkIGFuZCBndWFyYW50ZWVkLgorICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZp
eGVkTGVuZ3RoRGVsdGFEZWNvZGVyPiBDcmVhdGUoCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
aW5wdXQsCisgICAgICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSwKKyAgICAgIHNpemVf
dCBudW1fb2ZfZGVsdGFzKTsKKworICAvLyBGaXhlZExlbmd0aERlbHRhRGVjb2RlciBvYmplY3Rz
IGFyZSB0byBiZSBjcmVhdGVkIGJ5IERlY29kZURlbHRhcygpIGFuZAorICAvLyByZWxlYXNlZCBi
eSBpdCBiZWZvcmUgaXQgcmV0dXJucy4gVGhleSdyZSBtb3N0bHkgYSBjb252ZW5pZW50IHdheSB0
bworICAvLyBhdm9pZCBoYXZpbmcgdG8gcGFzcyBhIGxvdCBvZiBzdGF0ZSBiZXR3ZWVuIGRpZmZl
cmVudCBmdW5jdGlvbnMuCisgIC8vIFRoZXJlZm9yZSwgaXQgd2FzIGRlZW1lZCBhY2NlcHRhYmxl
IHRoYXQgfHJlYWRlcnwgZG9lcyBub3Qgb3duIHRoZSBidWZmZXIKKyAgLy8gaXQgcmVhZHMsIG1l
YW5pbmcgdGhlIGxpZmV0aW1lIG9mIHx0aGlzfCBtdXN0IG5vdCBleGNlZWQgdGhlIGxpZmV0aW1l
CisgIC8vIG9mIHxyZWFkZXJ8J3MgdW5kZXJseWluZyBidWZmZXIuCisgIEZpeGVkTGVuZ3RoRGVs
dGFEZWNvZGVyKHN0ZDo6dW5pcXVlX3B0cjxydGM6OkJpdEJ1ZmZlcj4gcmVhZGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGaXhlZExlbmd0aEVuY29kaW5nUGFyYW1ldGVycyYg
cGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50NjRf
dD4gYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9vZl9kZWx0YXMp
OworCisgIC8vIFBlcmZvcm0gdGhlIGRlY29kaW5nIHVzaW5nIHRoZSBwYXJhbWV0ZXJzIGdpdmVu
IHRvIHRoZSBjdG9yLgorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IERl
Y29kZSgpOworCisgIC8vIERlY29kZSBhIHZhcmludCBhbmQgd3JpdGUgaXQgdG8gfG91dHB1dHwu
IFJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgc3VjY2VzcworICAvLyBvciBmYWlsdXJlLiBJbiBjYXNl
IG9mIGZhaWx1cmUsIG5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgdGhlIGNvbnRlbnRzCisg
IC8vIG9mIHxvdXRwdXR8IG9yIHRoZSByZXN1bHRzIG9mIGFkZGl0aW9uYWwgcmVhZHMuCisgIGJv
b2wgUGFyc2VWYXJJbnQodWludDY0X3QqIG91dHB1dCk7CisKKyAgLy8gQXR0ZW1wdCB0byBwYXJz
ZSBhIGRlbHRhIGZyb20gdGhlIGlucHV0IHJlYWRlci4KKyAgLy8gUmV0dXJucyB0cnVlL2ZhbHNl
IGZvciBzdWNjZXNzL2ZhaWx1cmUuCisgIC8vIFdyaXRlcyB0aGUgZGVsdGEgaW50byB8ZGVsdGF8
IGlmIHN1Y2Nlc3NmdWwuCisgIGJvb2wgUGFyc2VEZWx0YSh1aW50NjRfdCogZGVsdGEpOworCisg
IC8vIEFkZCB8ZGVsdGF8IHRvIHxiYXNlfCB0byBwcm9kdWNlIHRoZSBuZXh0IHZhbHVlIGluIGEg
c2VxdWVuY2UuCisgIC8vIFRoZSBkZWx0YSBpcyBhcHBsaWVkIGFzIHNpZ25lZC91bnNpZ25lZCBk
ZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMKKyAgLy8gZ2l2ZW4gdG8gdGhlIGN0b3IuIFdyYXAt
YXJvdW5kIGlzIHRha2VuIGludG8gYWNjb3VudCBhY2NvcmRpbmcgdG8gdGhlCisgIC8vIHZhbHVl
cycgd2lkdGgsIGFzIHNwZWNpZmllZCBieSB0aGUgYWZvcmVtZW50aW9uZWQgZW5jb2RpbmcgcGFy
YW1ldGVycy4KKyAgdWludDY0X3QgQXBwbHlEZWx0YSh1aW50NjRfdCBiYXNlLCB1aW50NjRfdCBk
ZWx0YSkgY29uc3Q7CisKKyAgLy8gSGVscGVycyBmb3IgQXBwbHlEZWx0YSgpLgorICB1aW50NjRf
dCBBcHBseVVuc2lnbmVkRGVsdGEodWludDY0X3QgYmFzZSwgdWludDY0X3QgZGVsdGEpIGNvbnN0
OworICB1aW50NjRfdCBBcHBseVNpZ25lZERlbHRhKHVpbnQ2NF90IGJhc2UsIHVpbnQ2NF90IGRl
bHRhKSBjb25zdDsKKworICAvLyBSZWFkZXIgb2YgdGhlIGlucHV0IHN0cmVhbSB0byBiZSBkZWNv
ZGVkLiBEb2VzIG5vdCBvd24gdGhhdCBidWZmZXIuCisgIC8vIFNlZSBjb21tZW50IGFib3ZlIGN0
b3IgZm9yIGRldGFpbHMuCisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxydGM6OkJpdEJ1ZmZlcj4g
cmVhZGVyXzsKKworICAvLyBUaGUgcGFyYW1ldGVycyBhY2NvcmRpbmcgdG8gd2hpY2ggZW5jb2Rp
bmcgd2lsbCBiZSBkb25lICh3aWR0aCBvZgorICAvLyBmaWVsZHMsIHdoZXRoZXIgc2lnbmVkIGRl
bHRhcyBzaG91bGQgYmUgdXNlZCwgZXRjLikKKyAgY29uc3QgRml4ZWRMZW5ndGhFbmNvZGluZ1Bh
cmFtZXRlcnMgcGFyYW1zXzsKKworICAvLyBUaGUgZW5jb2Rpbmcgc2NoZW1lIGFzc3VtZXMgdGhh
dCBhdCBsZWFzdCBvbmUgdmFsdWUgaXMgdHJhbnNtaXR0ZWQgT09CLAorICAvLyBzbyB0aGF0IHRo
ZSBmaXJzdCB2YWx1ZSBjYW4gYmUgZW5jb2RlZCBhcyBhIGRlbHRhIGZyb20gdGhhdCBPT0IgdmFs
dWUsCisgIC8vIHdoaWNoIGlzIHxiYXNlX3wuCisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2
NF90PiBiYXNlXzsKKworICAvLyBUaGUgbnVtYmVyIG9mIHZhbHVlcyB0byBiZSBrbm93biB0byBi
ZSBkZWNvZGVkLgorICBjb25zdCBzaXplX3QgbnVtX29mX2RlbHRhc187CisKKyAgUlRDX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihGaXhlZExlbmd0aERlbHRhRGVjb2Rlcik7Cit9OworCitib29s
IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpJc1N1aXRhYmxlRGVjb2RlckZvcihjb25zdCBzdGQ6
OnN0cmluZyYgaW5wdXQpIHsKKyAgaWYgKGlucHV0Lmxlbmd0aCgpIDwga0JpdHNJbkhlYWRlckZv
ckVuY29kaW5nVHlwZSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHJ0Yzo6Qml0QnVm
ZmVyIHJlYWRlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmaW5wdXRbMF0pLAor
ICAgICAgICAgICAgICAgICAgICAgICAga0JpdHNJbkhlYWRlckZvckVuY29kaW5nVHlwZSk7CisK
KyAgdWludDMyX3QgZW5jb2RpbmdfdHlwZV9iaXRzOworICBjb25zdCBib29sIHJlc3VsdCA9Cisg
ICAgICByZWFkZXIuUmVhZEJpdHMoJmVuY29kaW5nX3R5cGVfYml0cywga0JpdHNJbkhlYWRlckZv
ckVuY29kaW5nVHlwZSk7CisgIFJUQ19EQ0hFQ0socmVzdWx0KTsKKworICBjb25zdCBhdXRvIGVu
Y29kaW5nX3R5cGUgPSBzdGF0aWNfY2FzdDxFbmNvZGluZ1R5cGU+KGVuY29kaW5nX3R5cGVfYml0
cyk7CisgIHJldHVybiBlbmNvZGluZ190eXBlID09CisgICAgICAgICAgICAgRW5jb2RpbmdUeXBl
OjprRml4ZWRTaXplVW5zaWduZWREZWx0YXNOb0Vhcmx5V3JhcE5vT3B0IHx8CisgICAgICAgICBl
bmNvZGluZ190eXBlID09CisgICAgICAgICAgICAgRW5jb2RpbmdUeXBlOjprRml4ZWRTaXplU2ln
bmVkRGVsdGFzRWFybHlXcmFwQW5kT3B0U3VwcG9ydGVkOworfQorCitzdGQ6OnZlY3RvcjxhYnNs
OjpvcHRpb25hbDx1aW50NjRfdD4+IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpEZWNvZGVEZWx0
YXMoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LAorICAgIGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90PiBiYXNlLAorICAgIHNpemVfdCBudW1fb2ZfZGVsdGFzKSB7CisgIGF1dG8gZGVjb2Rl
ciA9IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpDcmVhdGUoaW5wdXQsIGJhc2UsIG51bV9vZl9k
ZWx0YXMpOworICBpZiAoIWRlY29kZXIpIHsKKyAgICByZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+PigpOworICB9CisKKyAgcmV0dXJuIGRlY29kZXItPkRlY29kZSgp
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Rml4ZWRMZW5ndGhEZWx0YURlY29kZXI+IEZpeGVkTGVu
Z3RoRGVsdGFEZWNvZGVyOjpDcmVhdGUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LAor
ICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgIHNpemVfdCBudW1fb2ZfZGVs
dGFzKSB7CisgIGlmIChpbnB1dC5sZW5ndGgoKSA8IGtCaXRzSW5IZWFkZXJGb3JFbmNvZGluZ1R5
cGUpIHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisgIGF1dG8gcmVhZGVyID0gYWJzbDo6
bWFrZV91bmlxdWU8cnRjOjpCaXRCdWZmZXI+KAorICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oJmlucHV0WzBdKSwgaW5wdXQubGVuZ3RoKCkpOworCisgIC8vIEVuY29kaW5n
IHR5cGUKKyAgdWludDMyX3QgZW5jb2RpbmdfdHlwZV9iaXRzOworICBjb25zdCBib29sIHJlc3Vs
dCA9CisgICAgICByZWFkZXItPlJlYWRCaXRzKCZlbmNvZGluZ190eXBlX2JpdHMsIGtCaXRzSW5I
ZWFkZXJGb3JFbmNvZGluZ1R5cGUpOworICBSVENfRENIRUNLKHJlc3VsdCk7CisgIGNvbnN0IEVu
Y29kaW5nVHlwZSBlbmNvZGluZyA9IHN0YXRpY19jYXN0PEVuY29kaW5nVHlwZT4oZW5jb2Rpbmdf
dHlwZV9iaXRzKTsKKyAgaWYgKGVuY29kaW5nICE9IEVuY29kaW5nVHlwZTo6a0ZpeGVkU2l6ZVVu
c2lnbmVkRGVsdGFzTm9FYXJseVdyYXBOb09wdCAmJgorICAgICAgZW5jb2RpbmcgIT0KKyAgICAg
ICAgICBFbmNvZGluZ1R5cGU6OmtGaXhlZFNpemVTaWduZWREZWx0YXNFYXJseVdyYXBBbmRPcHRT
dXBwb3J0ZWQpIHsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJVbnJlY29nbml6ZWQgZW5j
b2RpbmcgdHlwZS4iOworICAgIHJldHVybiBudWxscHRyOworICB9CisKKyAgdWludDMyX3QgcmVh
ZF9idWZmZXI7CisKKyAgLy8gZGVsdGFfd2lkdGhfYml0cworICBpZiAoIXJlYWRlci0+UmVhZEJp
dHMoJnJlYWRfYnVmZmVyLCBrQml0c0luSGVhZGVyRm9yRGVsdGFXaWR0aEJpdHMpKSB7CisgICAg
cmV0dXJuIG51bGxwdHI7CisgIH0KKyAgUlRDX0RDSEVDS19MRShyZWFkX2J1ZmZlciwgNjQgLSAx
KTsgIC8vIFNlZSBlbmNvZGluZyBmb3IgLTEncyByYXRpb25hbGUuCisgIGNvbnN0IHVpbnQ2NF90
IGRlbHRhX3dpZHRoX2JpdHMgPQorICAgICAgcmVhZF9idWZmZXIgKyAxOyAgLy8gU2VlIGVuY29k
aW5nIGZvciArMSdzIHJhdGlvbmFsZS4KKworICAvLyBzaWduZWRfZGVsdGFzLCB2YWx1ZXNfb3B0
aW9uYWwsIHZhbHVlX3dpZHRoX2JpdHMKKyAgYm9vbCBzaWduZWRfZGVsdGFzOworICBib29sIHZh
bHVlc19vcHRpb25hbDsKKyAgdWludDY0X3QgdmFsdWVfd2lkdGhfYml0czsKKyAgaWYgKGVuY29k
aW5nID09IEVuY29kaW5nVHlwZTo6a0ZpeGVkU2l6ZVVuc2lnbmVkRGVsdGFzTm9FYXJseVdyYXBO
b09wdCkgeworICAgIHNpZ25lZF9kZWx0YXMgPSBrRGVmYXVsdFNpZ25lZERlbHRhczsKKyAgICB2
YWx1ZXNfb3B0aW9uYWwgPSBrRGVmYXVsdFZhbHVlc09wdGlvbmFsOworICAgIHZhbHVlX3dpZHRo
X2JpdHMgPSBrRGVmYXVsdFZhbHVlV2lkdGhCaXRzOworICB9IGVsc2UgeworICAgIC8vIHNpZ25l
ZF9kZWx0YXMKKyAgICBpZiAoIXJlYWRlci0+UmVhZEJpdHMoJnJlYWRfYnVmZmVyLCBrQml0c0lu
SGVhZGVyRm9yU2lnbmVkRGVsdGFzKSkgeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
ICAgIHNpZ25lZF9kZWx0YXMgPSBydGM6OmRjaGVja2VkX2Nhc3Q8Ym9vbD4ocmVhZF9idWZmZXIp
OworCisgICAgLy8gdmFsdWVzX29wdGlvbmFsCisgICAgaWYgKCFyZWFkZXItPlJlYWRCaXRzKCZy
ZWFkX2J1ZmZlciwga0JpdHNJbkhlYWRlckZvclZhbHVlc09wdGlvbmFsKSkgeworICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIFJUQ19EQ0hFQ0tfTEUocmVhZF9idWZmZXIsIDEpOwor
ICAgIHZhbHVlc19vcHRpb25hbCA9IHJ0Yzo6ZGNoZWNrZWRfY2FzdDxib29sPihyZWFkX2J1ZmZl
cik7CisKKyAgICAvLyB2YWx1ZV93aWR0aF9iaXRzCisgICAgaWYgKCFyZWFkZXItPlJlYWRCaXRz
KCZyZWFkX2J1ZmZlciwga0JpdHNJbkhlYWRlckZvclZhbHVlV2lkdGhCaXRzKSkgeworICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIFJUQ19EQ0hFQ0tfTEUocmVhZF9idWZmZXIsIDY0
IC0gMSk7ICAvLyBTZWUgZW5jb2RpbmcgZm9yIC0xJ3MgcmF0aW9uYWxlLgorICAgIHZhbHVlX3dp
ZHRoX2JpdHMgPSByZWFkX2J1ZmZlciArIDE7ICAvLyBTZWUgZW5jb2RpbmcgZm9yICsxJ3MgcmF0
aW9uYWxlLgorICB9CisKKyAgLy8gTm90ZTogQmVjYXVzZSBvZiB0aGUgd2F5IHRoZSBwYXJhbWV0
ZXJzIGFyZSByZWFkLCBpdCBpcyBub3QgcG9zc2libGUKKyAgLy8gZm9yIGlsbGVnYWwgdmFsdWVz
IHRvIGJlIHJlYWQuIFdlIGNoZWNrIG5ldmVydGhlbGVzcywgaW4gY2FzZSB0aGUgY29kZQorICAv
LyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUgaW4gYSB3YXkgdGhhdCBicmVha3MgdGhpcyBwcm9taXNl
LgorICBpZiAoIUZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJhbWV0ZXJzOjpWYWxpZFBhcmFtZXRlcnMo
CisgICAgICAgICAgZGVsdGFfd2lkdGhfYml0cywgc2lnbmVkX2RlbHRhcywgdmFsdWVzX29wdGlv
bmFsLCB2YWx1ZV93aWR0aF9iaXRzKSkgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNv
cnJ1cHQgbG9nOyBpbGxlZ2FsIGVuY29kaW5nIHBhcmFtZXRlcnMuIjsKKyAgICByZXR1cm4gbnVs
bHB0cjsKKyAgfQorCisgIEZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJhbWV0ZXJzIHBhcmFtcyhkZWx0
YV93aWR0aF9iaXRzLCBzaWduZWRfZGVsdGFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWVzX29wdGlvbmFsLCB2YWx1ZV93aWR0aF9iaXRzKTsKKyAgcmV0dXJu
IGFic2w6OldyYXBVbmlxdWUobmV3IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyKHN0ZDo6bW92ZShy
ZWFkZXIpLCBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlLCBudW1fb2ZfZGVsdGFzKSk7Cit9CisKK0ZpeGVkTGVuZ3RoRGVs
dGFEZWNvZGVyOjpGaXhlZExlbmd0aERlbHRhRGVjb2RlcigKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
cnRjOjpCaXRCdWZmZXI+IHJlYWRlciwKKyAgICBjb25zdCBGaXhlZExlbmd0aEVuY29kaW5nUGFy
YW1ldGVycyYgcGFyYW1zLAorICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAg
IHNpemVfdCBudW1fb2ZfZGVsdGFzKQorICAgIDogcmVhZGVyXyhzdGQ6Om1vdmUocmVhZGVyKSks
CisgICAgICBwYXJhbXNfKHBhcmFtcyksCisgICAgICBiYXNlXyhiYXNlKSwKKyAgICAgIG51bV9v
Zl9kZWx0YXNfKG51bV9vZl9kZWx0YXMpIHsKKyAgUlRDX0RDSEVDSyhyZWFkZXJfKTsKK30KKwor
c3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBGaXhlZExlbmd0aERlbHRhRGVj
b2Rlcjo6RGVjb2RlKCkgeworICBSVENfRENIRUNLKHJlYWRlcl8pOworCisgIHN0ZDo6dmVjdG9y
PGJvb2w+IGV4aXN0aW5nX3ZhbHVlcyhudW1fb2ZfZGVsdGFzXyk7CisgIGlmIChwYXJhbXNfLnZh
bHVlc19vcHRpb25hbCgpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fb2ZfZGVs
dGFzXzsgKytpKSB7CisgICAgICB1aW50MzJfdCBleGlzdHM7CisgICAgICBpZiAoIXJlYWRlcl8t
PlJlYWRCaXRzKCZleGlzdHMsIDF1KSkgeworICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8
ICJGYWlsZWQgdG8gcmVhZCBleGlzdGVuY2UtaW5kaWNhdGluZyBiaXQuIjsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4oKTsKKyAgICAgIH0KKyAg
ICAgIFJUQ19EQ0hFQ0tfTEUoZXhpc3RzLCAxdSk7CisgICAgICBleGlzdGluZ192YWx1ZXNbaV0g
PSAoZXhpc3RzID09IDEpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBzdGQ6OmZpbGwoZXhpc3Rp
bmdfdmFsdWVzLmJlZ2luKCksIGV4aXN0aW5nX3ZhbHVlcy5lbmQoKSwgdHJ1ZSk7CisgIH0KKwor
ICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gcHJldmlvdXMgPSBiYXNlXzsKKyAgc3RkOjp2ZWN0
b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMobnVtX29mX2RlbHRhc18pOworCisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX29mX2RlbHRhc187ICsraSkgeworICAgIGlmICgh
ZXhpc3RpbmdfdmFsdWVzW2ldKSB7CisgICAgICBSVENfRENIRUNLKHBhcmFtc18udmFsdWVzX29w
dGlvbmFsKCkpOworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgaWYgKCFwcmV2aW91cykg
eworICAgICAgLy8gSWYgdGhlIGJhc2UgaXMgbm9uLWV4aXN0ZW50LCB0aGUgZmlyc3QgZXhpc3Rl
bnQgdmFsdWUgaXMgZW5jb2RlZCBhcworICAgICAgLy8gYSB2YXJpbnQsIHJhdGhlciB0aGFuIGFz
IGEgZGVsdGEuCisgICAgICBSVENfRENIRUNLKCFiYXNlXy5oYXNfdmFsdWUoKSk7CisgICAgICB1
aW50NjRfdCBmaXJzdF92YWx1ZTsKKyAgICAgIGlmICghUGFyc2VWYXJJbnQoJmZpcnN0X3ZhbHVl
KSkgeworICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcmVhZCBmaXJz
dCB2YWx1ZS4iOworICAgICAgICByZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+PigpOworICAgICAgfQorICAgICAgdmFsdWVzW2ldID0gZmlyc3RfdmFsdWU7CisgICAg
fSBlbHNlIHsKKyAgICAgIHVpbnQ2NF90IGRlbHRhOworICAgICAgaWYgKCFQYXJzZURlbHRhKCZk
ZWx0YSkpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2
NF90Pj4oKTsKKyAgICAgIH0KKyAgICAgIHZhbHVlc1tpXSA9IEFwcGx5RGVsdGEocHJldmlvdXMu
dmFsdWUoKSwgZGVsdGEpOworICAgIH0KKworICAgIHByZXZpb3VzID0gdmFsdWVzW2ldOworICB9
CisKKyAgcmV0dXJuIHZhbHVlczsKK30KKworYm9vbCBGaXhlZExlbmd0aERlbHRhRGVjb2Rlcjo6
UGFyc2VWYXJJbnQodWludDY0X3QqIG91dHB1dCkgeworICBSVENfRENIRUNLKHJlYWRlcl8pOwor
ICByZXR1cm4gRGVjb2RlVmFySW50KHJlYWRlcl8uZ2V0KCksIG91dHB1dCkgIT0gMDsKK30KKwor
Ym9vbCBGaXhlZExlbmd0aERlbHRhRGVjb2Rlcjo6UGFyc2VEZWx0YSh1aW50NjRfdCogZGVsdGEp
IHsKKyAgUlRDX0RDSEVDSyhyZWFkZXJfKTsKKworICAvLyBCaXRCdWZmZXIgYW5kIEJpdEJ1ZmZl
cldyaXRlciByZWFkL3dyaXRlIGhpZ2hlciBiaXRzIGJlZm9yZSBsb3dlciBiaXRzLgorCisgIGNv
bnN0IHNpemVfdCBsb3dlcl9iaXRfY291bnQgPQorICAgICAgc3RkOjptaW48dWludDY0X3Q+KHBh
cmFtc18uZGVsdGFfd2lkdGhfYml0cygpLCAzMnUpOworICBjb25zdCBzaXplX3QgaGlnaGVyX2Jp
dF9jb3VudCA9IChwYXJhbXNfLmRlbHRhX3dpZHRoX2JpdHMoKSA8PSAzMnUpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IHBhcmFtc18uZGVsdGFfd2lkdGhfYml0cygpIC0gMzJ1OworCisgIHVp
bnQzMl90IGxvd2VyX2JpdHM7CisgIHVpbnQzMl90IGhpZ2hlcl9iaXRzOworCisgIGlmIChoaWdo
ZXJfYml0X2NvdW50ID4gMCkgeworICAgIGlmICghcmVhZGVyXy0+UmVhZEJpdHMoJmhpZ2hlcl9i
aXRzLCBoaWdoZXJfYml0X2NvdW50KSkgeworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
RmFpbGVkIHRvIHJlYWQgaGlnaGVyIGhhbGYgb2YgZGVsdGEuIjsKKyAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaGlnaGVyX2JpdHMgPSAwOworICB9CisKKyAgaWYg
KCFyZWFkZXJfLT5SZWFkQml0cygmbG93ZXJfYml0cywgbG93ZXJfYml0X2NvdW50KSkgeworICAg
IFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byByZWFkIGxvd2VyIGhhbGYgb2YgZGVs
dGEuIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBjb25zdCB1aW50NjRfdCBsb3dlcl9i
aXRzXzY0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxvd2VyX2JpdHMpOworICBjb25zdCB1aW50
NjRfdCBoaWdoZXJfYml0c182NCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihoaWdoZXJfYml0cyk7
CisKKyAgKmRlbHRhID0gKGhpZ2hlcl9iaXRzXzY0IDw8IDMyKSB8IGxvd2VyX2JpdHNfNjQ7Cisg
IHJldHVybiB0cnVlOworfQorCit1aW50NjRfdCBGaXhlZExlbmd0aERlbHRhRGVjb2Rlcjo6QXBw
bHlEZWx0YSh1aW50NjRfdCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDY0X3QgZGVsdGEpIGNvbnN0IHsKKyAgUlRDX0RDSEVDS19MRShiYXNl
LCBNYXhVbnNpZ25lZFZhbHVlT2ZCaXRXaWR0aChwYXJhbXNfLnZhbHVlX3dpZHRoX2JpdHMoKSkp
OworICBSVENfRENIRUNLX0xFKGRlbHRhLCBNYXhVbnNpZ25lZFZhbHVlT2ZCaXRXaWR0aChwYXJh
bXNfLmRlbHRhX3dpZHRoX2JpdHMoKSkpOworICByZXR1cm4gcGFyYW1zXy5zaWduZWRfZGVsdGFz
KCkgPyBBcHBseVNpZ25lZERlbHRhKGJhc2UsIGRlbHRhKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBBcHBseVVuc2lnbmVkRGVsdGEoYmFzZSwgZGVsdGEpOworfQorCit1aW50
NjRfdCBGaXhlZExlbmd0aERlbHRhRGVjb2Rlcjo6QXBwbHlVbnNpZ25lZERlbHRhKHVpbnQ2NF90
IGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ2NF90IGRlbHRhKSBjb25zdCB7CisgIC8vIE5vdGU6IE1heSBzdGlsbCBiZSB1c2Vk
IGlmIHNpZ25lZCBkZWx0YXMgdXNlZC4KKyAgUlRDX0RDSEVDS19MRShiYXNlLCBNYXhVbnNpZ25l
ZFZhbHVlT2ZCaXRXaWR0aChwYXJhbXNfLnZhbHVlX3dpZHRoX2JpdHMoKSkpOworICBSVENfRENI
RUNLX0xFKGRlbHRhLCBNYXhVbnNpZ25lZFZhbHVlT2ZCaXRXaWR0aChwYXJhbXNfLmRlbHRhX3dp
ZHRoX2JpdHMoKSkpOworICByZXR1cm4gKGJhc2UgKyBkZWx0YSkgJiBwYXJhbXNfLnZhbHVlX21h
c2soKTsKK30KKwordWludDY0X3QgRml4ZWRMZW5ndGhEZWx0YURlY29kZXI6OkFwcGx5U2lnbmVk
RGVsdGEodWludDY0X3QgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRlbHRhKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0socGFy
YW1zXy5zaWduZWRfZGVsdGFzKCkpOworICBSVENfRENIRUNLX0xFKGJhc2UsIE1heFVuc2lnbmVk
VmFsdWVPZkJpdFdpZHRoKHBhcmFtc18udmFsdWVfd2lkdGhfYml0cygpKSk7CisgIFJUQ19EQ0hF
Q0tfTEUoZGVsdGEsIE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKHBhcmFtc18uZGVsdGFfd2lk
dGhfYml0cygpKSk7CisKKyAgY29uc3QgdWludDY0X3QgdG9wX2JpdCA9IHN0YXRpY19jYXN0PHVp
bnQ2NF90PigxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgKHBhcmFtc18uZGVsdGFf
d2lkdGhfYml0cygpIC0gMSk7CisKKyAgY29uc3QgYm9vbCBwb3NpdGl2ZV9kZWx0YSA9ICgoZGVs
dGEgJiB0b3BfYml0KSA9PSAwKTsKKyAgaWYgKHBvc2l0aXZlX2RlbHRhKSB7CisgICAgcmV0dXJu
IEFwcGx5VW5zaWduZWREZWx0YShiYXNlLCBkZWx0YSk7CisgIH0KKworICBjb25zdCB1aW50NjRf
dCBkZWx0YV9hYnMgPSAofmRlbHRhICYgcGFyYW1zXy5kZWx0YV9tYXNrKCkpICsgMTsKKyAgcmV0
dXJuIChiYXNlIC0gZGVsdGFfYWJzKSAmIHBhcmFtc18udmFsdWVfbWFzaygpOworfQorCit9ICAv
LyBuYW1lc3BhY2UKKworc3RkOjpzdHJpbmcgRW5jb2RlRGVsdGFzKGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90PiBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4mIHZhbHVlcykgeworICAvLyBUT0RPKGVsYWRhbG9u
KTogU3VwcG9ydCBhZGRpdGlvbmFsIGVuY29kaW5ncy4KKyAgcmV0dXJuIEZpeGVkTGVuZ3RoRGVs
dGFFbmNvZGVyOjpFbmNvZGVEZWx0YXMoYmFzZSwgdmFsdWVzKTsKK30KKworc3RkOjp2ZWN0b3I8
YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBEZWNvZGVEZWx0YXMoCisgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGlucHV0LAorICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgIHNp
emVfdCBudW1fb2ZfZGVsdGFzKSB7CisgIFJUQ19EQ0hFQ0tfR1QobnVtX29mX2RlbHRhcywgMCk7
ICAvLyBBbGxvd3MgZW1wdHkgdmVjdG9yIHRvIGluZGljYXRlIGVycm9yLgorCisgIC8vIFRoZSBl
bXB0eSBzdHJpbmcgaXMgYSBzcGVjaWFsIGNhc2UgaW5kaWNhdGluZyB0aGF0IGFsbCB2YWx1ZXMg
d2VyZSBlcXVhbAorICAvLyB0byB0aGUgYmFzZS4KKyAgaWYgKGlucHV0LmVtcHR5KCkpIHsKKyAg
ICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHJlc3VsdChudW1fb2ZfZGVs
dGFzKTsKKyAgICBzdGQ6OmZpbGwocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgYmFzZSk7
CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIGlmIChGaXhlZExlbmd0aERlbHRhRGVjb2Rl
cjo6SXNTdWl0YWJsZURlY29kZXJGb3IoaW5wdXQpKSB7CisgICAgcmV0dXJuIEZpeGVkTGVuZ3Ro
RGVsdGFEZWNvZGVyOjpEZWNvZGVEZWx0YXMoaW5wdXQsIGJhc2UsIG51bV9vZl9kZWx0YXMpOwor
ICB9CisKKyAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ291bGQgbm90IGRlY29kZSBkZWx0YS1l
bmNvZGVkIHN0cmVhbS4iOworICByZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+PigpOworfQorCit2b2lkIFNldEZpeGVkTGVuZ3RoRW5jb2RlckRlbHRhU2lnbmVkbmVz
c0ZvclRlc3RpbmcoYm9vbCBzaWduZWRuZXNzKSB7CisgIGdfZm9yY2VfdW5zaWduZWRfZm9yX3Rl
c3RpbmcgPSAhc2lnbmVkbmVzczsKKyAgZ19mb3JjZV9zaWduZWRfZm9yX3Rlc3RpbmcgPSBzaWdu
ZWRuZXNzOworfQorCit2b2lkIFVuc2V0Rml4ZWRMZW5ndGhFbmNvZGVyRGVsdGFTaWduZWRuZXNz
Rm9yVGVzdGluZygpIHsKKyAgZ19mb3JjZV91bnNpZ25lZF9mb3JfdGVzdGluZyA9IGZhbHNlOwor
ICBnX2ZvcmNlX3NpZ25lZF9mb3JfdGVzdGluZyA9IGZhbHNlOworfQorCit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9kZWx0YV9lbmNvZGluZy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTVlOGI3ZjQzY2Rk
NGI5ZDQyOTBmYmQ0ZmM4NjBkZjU2NmQ1MWUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvZGVsdGFfZW5jb2RpbmcuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogIENvcHlyaWdo
dCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2lmbmRlZiBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9ERUxUQV9FTkNP
RElOR19IXworI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9ERUxUQV9FTkNP
RElOR19IXworCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEVu
Y29kZSB8dmFsdWVzfCBhcyBhIHNlcXVlbmNlIG9mIGRlbHRhcyBmb2xsb3dpbmcgb24gfGJhc2V8
IGFuZCByZXR1cm4gaXQuCisvLyBJZiBhbGwgb2YgdGhlIHZhbHVlcyB3ZXJlIGVxdWFsIHRvIHRo
ZSBiYXNlLCBhbiBlbXB0eSBzdHJpbmcgd2lsbCBiZQorLy8gcmV0dXJuZWQ7IHRoaXMgaXMgYSB2
YWxpZCBlbmNvZGluZyBvZiB0aGF0IGVkZ2UgY2FzZS4KKy8vIHxiYXNlfCBpcyBub3QgZ3VhcmFu
dGVlZCB0byBiZSB3cml0dGVuIGludG8gfG91dHB1dHwsIGFuZCBtdXN0IHRoZXJlZm9yZQorLy8g
YmUgcHJvdmlkZWQgc2VwYXJhdGVseSB0byB0aGUgZGVjb2Rlci4KKy8vIFRoaXMgZnVuY3Rpb24g
bmV2ZXIgZmFpbHMuCisvLyBUT0RPKGVsYWRhbG9uKTogU3BsaXQgaW50byBvcHRpb25hbCBhbmQg
bm9uLW9wdGlvbmFsIHZhcmlhbnRzIChlZmZpY2llbmN5KS4KK3N0ZDo6c3RyaW5nIEVuY29kZURl
bHRhcyhhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+JiB2YWx1ZXMp
OworCisvLyBFbmNvZGVEZWx0YXMoKSBhbmQgRGVjb2RlRGVsdGFzKCkgYXJlIGludmVyc2Ugb3Bl
cmF0aW9uczsKKy8vIGludm9raW5nIERlY29kZURlbHRhcygpIG92ZXIgdGhlIG91dHB1dCBvZiBF
bmNvZGVEZWx0YXMoKSwgd2lsbCByZXR1cm4KKy8vIHRoZSBpbnB1dCBvcmlnaW5hbGx5IGdpdmVu
IHRvIEVuY29kZURlbHRhcygpLgorLy8gfG51bV9vZl9kZWx0YXN8IG11c3QgYmUgZ3JlYXRlciB0
aGFuIHplcm8uIElmIGlucHV0IGlzIG5vdCBhIHZhbGlkIGVuY29kaW5nCisvLyBvZiB8bnVtX29m
X2RlbHRhc3wgZWxlbWVudHMgYmFzZWQgb24gfGJhc2V8LCB0aGUgZnVuY3Rpb24gcmV0dXJucyBh
biBlbXB0eQorLy8gdmVjdG9yLCB3aGljaCBzaWduYWxzIGFuIGVycm9yLgorLy8gVE9ETyhlbGFk
YWxvbik6IFNwbGl0IGludG8gb3B0aW9uYWwgYW5kIG5vbi1vcHRpb25hbCB2YXJpYW50cyAoZWZm
aWNpZW5jeSkuCitzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IERlY29kZURl
bHRhcygKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsCisgICAgYWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+IGJhc2UsCisgICAgc2l6ZV90IG51bV9vZl9kZWx0YXMpOworCit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09ERVJf
REVMVEFfRU5DT0RJTkdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29k
aW5nX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmdfdW5pdHRlc3Qu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2E0NDAxMGVkYWMzMDA1YWY1MWY5MGNkZGY1OTM4MjRmNDU1ZmExNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29kaW5nX3VuaXR0ZXN0
LmNjCkBAIC0wLDAgKzEsNjkzIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUg
ImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29kaW5nLmgiCisKKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG51bWVyaWM+Cisj
aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR1cGxlPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwor
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9hcnJh
eXNpemUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9yYW5kb20uaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCit2b2lkIFNldEZpeGVkTGVuZ3RoRW5jb2RlckRlbHRhU2lnbmVkbmVzc0ZvclRlc3Rpbmco
Ym9vbCBzaWduZWRuZXNzKTsKK3ZvaWQgVW5zZXRGaXhlZExlbmd0aEVuY29kZXJEZWx0YVNpZ25l
ZG5lc3NGb3JUZXN0aW5nKCk7CisKK25hbWVzcGFjZSB7CisKK2VudW0gY2xhc3MgRGVsdGFTaWdu
ZWRuZXNzIHsga05vT3ZlcnJpZGUsIGtGb3JjZVVuc2lnbmVkLCBrRm9yY2VTaWduZWQgfTsKKwor
dm9pZCBNYXliZVNldFNpZ25lZG5lc3MoRGVsdGFTaWduZWRuZXNzIHNpZ25lZG5lc3MpIHsKKyAg
c3dpdGNoIChzaWduZWRuZXNzKSB7CisgICAgY2FzZSBEZWx0YVNpZ25lZG5lc3M6OmtOb092ZXJy
aWRlOgorICAgICAgVW5zZXRGaXhlZExlbmd0aEVuY29kZXJEZWx0YVNpZ25lZG5lc3NGb3JUZXN0
aW5nKCk7CisgICAgICByZXR1cm47CisgICAgY2FzZSBEZWx0YVNpZ25lZG5lc3M6OmtGb3JjZVVu
c2lnbmVkOgorICAgICAgU2V0Rml4ZWRMZW5ndGhFbmNvZGVyRGVsdGFTaWduZWRuZXNzRm9yVGVz
dGluZyhmYWxzZSk7CisgICAgICByZXR1cm47CisgICAgY2FzZSBEZWx0YVNpZ25lZG5lc3M6OmtG
b3JjZVNpZ25lZDoKKyAgICAgIFNldEZpeGVkTGVuZ3RoRW5jb2RlckRlbHRhU2lnbmVkbmVzc0Zv
clRlc3RpbmcodHJ1ZSk7CisgICAgICByZXR1cm47CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsK
K30KKwordWludDY0X3QgUmFuZG9tV2l0aE1heEJpdFdpZHRoKFJhbmRvbSogcHJuZywgdWludDY0
X3QgbWF4X3dpZHRoKSB7CisgIFJUQ19EQ0hFQ0tfR0UobWF4X3dpZHRoLCAxdSk7CisgIFJUQ19E
Q0hFQ0tfTEUobWF4X3dpZHRoLCA2NHUpOworCisgIGNvbnN0IHVpbnQ2NF90IGxvdyA9IHBybmct
PlJhbmQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsKKyAgY29uc3QgdWlu
dDY0X3QgaGlnaCA9CisgICAgICBtYXhfd2lkdGggPiAzMnUgPyBwcm5nLT5SYW5kKHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgOiAwdTsKKworICBjb25zdCB1aW50NjRfdCBy
YW5kb21fYmVmb3JlX21hc2sgPSAoaGlnaCA8PCAzMikgfCBsb3c7CisKKyAgaWYgKG1heF93aWR0
aCA8IDY0KSB7CisgICAgcmV0dXJuIHJhbmRvbV9iZWZvcmVfbWFzayAmICgoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KDEpIDw8IG1heF93aWR0aCkgLSAxKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4g
cmFuZG9tX2JlZm9yZV9tYXNrOworICB9Cit9CisKKy8vIEVuY29kZXMgfHZhbHVlc3wgYmFzZWQg
b24gfGJhc2V8LCB0aGVuIGRlY29kZXMgdGhlIHJlc3VsdCBhbmQgbWFrZXMgc3VyZQorLy8gdGhh
dCBpdCBpcyBlcXVhbCB0byB0aGUgb3JpZ2luYWwgaW5wdXQuCisvLyBJZiB8ZW5jb2RlZF9zdHJp
bmd8IGlzIG5vbi1udWxsLCB0aGUgZW5jb2RlZCByZXN1bHQgd2lsbCBhbHNvIGJlIHdyaXR0ZW4K
Ky8vIGludG8gaXQuCit2b2lkIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKAorICAgIGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90Pj4mIHZhbHVlcywKKyAgICBzdGQ6OnN0cmluZyogZW5jb2RlZF9zdHJpbmcg
PSBudWxscHRyKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBFbmNvZGVEZWx0YXMo
YmFzZSwgdmFsdWVzKTsKKyAgaWYgKGVuY29kZWRfc3RyaW5nKSB7CisgICAgKmVuY29kZWRfc3Ry
aW5nID0gZW5jb2RlZDsKKyAgfQorCisgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90Pj4gZGVjb2RlZCA9CisgICAgICBEZWNvZGVEZWx0YXMoZW5jb2RlZCwgYmFzZSwg
dmFsdWVzLnNpemUoKSk7CisKKyAgRVhQRUNUX0VRKGRlY29kZWQsIHZhbHVlcyk7Cit9CisKK3N0
ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gQ3JlYXRlU2VxdWVuY2VCeUZpcnN0
VmFsdWUoCisgICAgdWludDY0X3QgZmlyc3QsCisgICAgc2l6ZV90IHNlcXVlbmNlX2xlbmd0aCkg
eworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHNlcXVlbmNlKHNlcXVl
bmNlX2xlbmd0aCk7CisgIHN0ZDo6aW90YShzZXF1ZW5jZS5iZWdpbigpLCBzZXF1ZW5jZS5lbmQo
KSwgZmlyc3QpOworICByZXR1cm4gc2VxdWVuY2U7Cit9CisKK3N0ZDo6dmVjdG9yPGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90Pj4gQ3JlYXRlU2VxdWVuY2VCeUxhc3RWYWx1ZSgKKyAgICB1aW50NjRf
dCBsYXN0LAorICAgIHNpemVfdCBudW1fdmFsdWVzKSB7CisgIGNvbnN0IHVpbnQ2NF90IGZpcnN0
ID0gbGFzdCAtIG51bV92YWx1ZXMgKyAxOworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4+IHJlc3VsdChudW1fdmFsdWVzKTsKKyAgc3RkOjppb3RhKHJlc3VsdC5iZWdpbigp
LCByZXN1bHQuZW5kKCksIGZpcnN0KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gSWYgfHNl
cXVlbmNlX2xlbmd0aHwgaXMgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgb2YgZGVsdGFzLCB0aGUg
c2VxdWVuY2Ugb2YKKy8vIGRlbHRhcyB3aWxsIHdyYXAgYXJvdW5kLgorc3RkOjp2ZWN0b3I8YWJz
bDo6b3B0aW9uYWw8dWludDY0X3Q+PiBDcmVhdGVTZXF1ZW5jZUJ5T3B0aW9uYWxEZWx0YXMoCisg
ICAgdWludDY0X3QgZmlyc3QsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+PiYgZGVsdGFzLAorICAgIHNpemVfdCBzZXF1ZW5jZV9sZW5ndGgpIHsKKyAgUlRD
X0RDSEVDS19HRShzZXF1ZW5jZV9sZW5ndGgsIDEpOworCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90Pj4gc2VxdWVuY2Uoc2VxdWVuY2VfbGVuZ3RoKTsKKworICB1aW50NjRf
dCBwcmV2aW91cyA9IGZpcnN0OworICBmb3IgKHNpemVfdCBpID0gMCwgbmV4dF9kZWx0YV9pbmRl
eCA9IDA7IGkgPCBzZXF1ZW5jZS5zaXplKCk7ICsraSkgeworICAgIGlmIChkZWx0YXNbbmV4dF9k
ZWx0YV9pbmRleF0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIHNlcXVlbmNlW2ldID0KKyAgICAgICAg
ICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4ocHJldmlvdXMgKyBkZWx0YXNbbmV4dF9kZWx0YV9p
bmRleF0udmFsdWUoKSk7CisgICAgICBwcmV2aW91cyA9IHNlcXVlbmNlW2ldLnZhbHVlKCk7Cisg
ICAgfQorICAgIG5leHRfZGVsdGFfaW5kZXggPSAobmV4dF9kZWx0YV9pbmRleCArIDEpICUgZGVs
dGFzLnNpemUoKTsKKyAgfQorCisgIHJldHVybiBzZXF1ZW5jZTsKK30KKworc2l6ZV90IEVuY29k
aW5nTGVuZ3RoVXBwZXJCb3VuZChzaXplX3QgZGVsdGFfbWF4X2JpdF93aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9vZl9kZWx0YXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERlbHRhU2lnbmVkbmVzcyBzaWduZWRuZXNzX292ZXJyaWRl
KSB7CisgIGFic2w6Om9wdGlvbmFsPHNpemVfdD4gc21hbGxlc3RfaGVhZGVyX3NpemVfYnl0ZXM7
CisgIHN3aXRjaCAoc2lnbmVkbmVzc19vdmVycmlkZSkgeworICAgIGNhc2UgRGVsdGFTaWduZWRu
ZXNzOjprTm9PdmVycmlkZToKKyAgICBjYXNlIERlbHRhU2lnbmVkbmVzczo6a0ZvcmNlVW5zaWdu
ZWQ6CisgICAgICBzbWFsbGVzdF9oZWFkZXJfc2l6ZV9ieXRlcyA9IDE7CisgICAgICBicmVhazsK
KyAgICBjYXNlIERlbHRhU2lnbmVkbmVzczo6a0ZvcmNlU2lnbmVkOgorICAgICAgc21hbGxlc3Rf
aGVhZGVyX3NpemVfYnl0ZXMgPSAyOworICAgICAgYnJlYWs7CisgIH0KKyAgUlRDX0RDSEVDSyhz
bWFsbGVzdF9oZWFkZXJfc2l6ZV9ieXRlcyk7CisKKyAgcmV0dXJuIGRlbHRhX21heF9iaXRfd2lk
dGggKiBudW1fb2ZfZGVsdGFzICsgKnNtYWxsZXN0X2hlYWRlcl9zaXplX2J5dGVzOworfQorCisv
LyBJZiB8c2VxdWVuY2VfbGVuZ3RofCBpcyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBkZWx0
YXMsIHRoZSBzZXF1ZW5jZSBvZgorLy8gZGVsdGFzIHdpbGwgd3JhcCBhcm91bmQuCitzdGQ6OnZl
Y3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IENyZWF0ZVNlcXVlbmNlQnlEZWx0YXMoCisg
ICAgdWludDY0X3QgZmlyc3QsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDY0X3Q+JiBkZWx0
YXMsCisgICAgc2l6ZV90IHNlcXVlbmNlX2xlbmd0aCkgeworICBSVENfRENIRUNLKCFkZWx0YXMu
ZW1wdHkoKSk7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gb3B0aW9u
YWxfZGVsdGFzKGRlbHRhcy5zaXplKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlbHRh
cy5zaXplKCk7ICsraSkgeworICAgIG9wdGlvbmFsX2RlbHRhc1tpXSA9IGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90PihkZWx0YXNbaV0pOworICB9CisgIHJldHVybiBDcmVhdGVTZXF1ZW5jZUJ5T3B0
aW9uYWxEZWx0YXMoZmlyc3QsIG9wdGlvbmFsX2RlbHRhcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9sZW5ndGgpOworfQorCisvLyBUZXN0cyBvZiB0
aGUgZGVsdGEgZW5jb2RpbmcsIHBhcmFtZXRlcml6ZWQgYnkgdGhlIG51bWJlciBvZiB2YWx1ZXMK
Ky8vIGluIHRoZSBzZXF1ZW5jZSBjcmVhdGVkIGJ5IHRoZSB0ZXN0LgorY2xhc3MgRGVsdGFFbmNv
ZGluZ1Rlc3QKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08CisgICAgICAg
ICAgc3RkOjp0dXBsZTxEZWx0YVNpZ25lZG5lc3MsIHNpemVfdCwgYm9vbCwgdWludDY0X3Q+PiB7
CisgcHVibGljOgorICBEZWx0YUVuY29kaW5nVGVzdCgpCisgICAgICA6IHNpZ25lZG5lc3NfKHN0
ZDo6Z2V0PDA+KEdldFBhcmFtKCkpKSwKKyAgICAgICAgbnVtX29mX3ZhbHVlc18oc3RkOjpnZXQ8
MT4oR2V0UGFyYW0oKSkpLAorICAgICAgICBvcHRpb25hbF92YWx1ZXNfKHN0ZDo6Z2V0PDI+KEdl
dFBhcmFtKCkpKSwKKyAgICAgICAgcGFydGlhbF9yYW5kb21fc2VlZF8oc3RkOjpnZXQ8Mz4oR2V0
UGFyYW0oKSkpIHsKKyAgICBNYXliZVNldFNpZ25lZG5lc3Moc2lnbmVkbmVzc18pOworICB9CisK
KyAgfkRlbHRhRW5jb2RpbmdUZXN0KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworCisgIC8vIFJ1bm5p
bmcgd2l0aCB0aGUgc2FtZSBzZWVkIGZvciBhbGwgdmFyaWFudHMgd291bGQgbWFrZSBhbGwgdGVz
dHMgc3RhcnQKKyAgLy8gd2l0aCB0aGUgc2FtZSBzZXF1ZW5jZTsgYXZvaWQgdGhpcyBieSBtYWtp
bmcgdGhlIHNlZWQgZGlmZmVyZW50LgorICB1aW50NjRfdCBTZWVkKCkgY29uc3QgeworICAgIC8v
IE11bHRpcGx5IGV2ZXJ5dGhpbmcgYnV0IGJ5IGRpZmZlcmVudCBwcmltZXMgdG8gcHJvZHVjZSB1
bmlxdWUgcmVzdWx0cy4KKyAgICByZXR1cm4gMiAqIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaWdu
ZWRuZXNzXykgKyAzICogbnVtX29mX3ZhbHVlc18gKworICAgICAgICAgICA1ICogb3B0aW9uYWxf
dmFsdWVzXyArIDcgKiBwYXJ0aWFsX3JhbmRvbV9zZWVkXzsKKyAgfQorCisgIGNvbnN0IERlbHRh
U2lnbmVkbmVzcyBzaWduZWRuZXNzXzsKKyAgY29uc3QgdWludDY0X3QgbnVtX29mX3ZhbHVlc187
CisgIGNvbnN0IGJvb2wgb3B0aW9uYWxfdmFsdWVzXzsKKyAgY29uc3QgdWludDY0X3QgcGFydGlh
bF9yYW5kb21fc2VlZF87ICAvLyBFeHBsYWluZWQgd2hlcmUgaXQncyB1c2VkLgorfTsKKworVEVT
VF9QKERlbHRhRW5jb2RpbmdUZXN0LCBBbGxWYWx1ZXNFcXVhbFRvRXhpc3RlbnRCYXNlVmFsdWUp
IHsKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UoMzQzMik7CisgIHN0ZDo6
dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVzKG51bV9vZl92YWx1ZXNfKTsK
KyAgc3RkOjpmaWxsKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCksIGJhc2UpOworICBzdGQ6
OnN0cmluZyBlbmNvZGVkOworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2YWx1ZXMs
ICZlbmNvZGVkKTsKKworICAvLyBBZGRpdGlvbmFsIHJlcXVpcmVtZW50IC0gdGhlIGVuY29kaW5n
IHNob3VsZCBiZSBlZmZpY2llbnQgaW4gdGhpcworICAvLyBjYXNlIC0gdGhlIGVtcHR5IHN0cmlu
ZyB3aWxsIGJlIHVzZWQuCisgIEVYUEVDVF9UUlVFKGVuY29kZWQuZW1wdHkoKSk7Cit9CisKK1RF
U1RfUChEZWx0YUVuY29kaW5nVGVzdCwgQWxsVmFsdWVzRXF1YWxUb05vbkV4aXN0ZW50QmFzZVZh
bHVlKSB7CisgIGlmICghb3B0aW9uYWxfdmFsdWVzXykgeworICAgIHJldHVybjsgIC8vIFRlc3Qg
aXJyZWxldmFudCBmb3IgdGhpcyBjYXNlLgorICB9CisKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+IGJhc2U7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4g
dmFsdWVzKG51bV9vZl92YWx1ZXNfKTsKKyAgc3RkOjpmaWxsKHZhbHVlcy5iZWdpbigpLCB2YWx1
ZXMuZW5kKCksIGJhc2UpOworICBzdGQ6OnN0cmluZyBlbmNvZGVkOworICBUZXN0RW5jb2RpbmdB
bmREZWNvZGluZyhiYXNlLCB2YWx1ZXMsICZlbmNvZGVkKTsKKworICAvLyBBZGRpdGlvbmFsIHJl
cXVpcmVtZW50IC0gdGhlIGVuY29kaW5nIHNob3VsZCBiZSBlZmZpY2llbnQgaW4gdGhpcworICAv
LyBjYXNlIC0gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGJlIHVzZWQuCisgIEVYUEVDVF9UUlVFKGVu
Y29kZWQuZW1wdHkoKSk7Cit9CisKK1RFU1RfUChEZWx0YUVuY29kaW5nVGVzdCwgQmFzZU5vbkV4
aXN0ZW50QnV0U29tZU90aGVyVmFsdWVzRXhpc3QpIHsKKyAgaWYgKCFvcHRpb25hbF92YWx1ZXNf
KSB7CisgICAgcmV0dXJuOyAgLy8gVGVzdCBpcnJlbGV2YW50IGZvciB0aGlzIGNhc2UuCisgIH0K
KworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZTsKKyAgc3RkOjp2ZWN0b3I8
YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMobnVtX29mX3ZhbHVlc18pOworCisgIFJh
bmRvbSBwcm5nKFNlZWQoKSk7CisKKyAgY29uc3QgdWludDY0X3QgbWF4X2JpdF93aWR0aCA9IDEg
KyBwcm5nLlJhbmQoNjMpOyAgLy8gWzEsIDY0XQorCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dmFsdWVzLnNpemUoKTspIHsKKyAgICAvLyBMZWF2ZSBhIHJhbmRvbSBudW1iZXIgb2YgdmFsdWVz
IGFzIG5vbi1leGlzdGVudC4KKyAgICBjb25zdCBzaXplX3Qgbm9uX2V4aXN0ZW50X2NvdW50ID0g
cHJuZy5SYW5kKHZhbHVlcy5zaXplKCkgLSBpIC0gMSk7CisgICAgaSArPSBub25fZXhpc3RlbnRf
Y291bnQ7CisKKyAgICAvLyBBc3NpZ24gcmFuZG9tIHZhbHVlcyB0byBhIHJhbmRvbSBudW1iZXIg
b2YgdmFsdWVzLiAoQXQgbGVhc3Qgb25lLCB0bworICAgIC8vIHByZXZlbnQgdGhpcyBpdGVyYXRp
b24gb2YgdGhlIG91dGVyIGxvb3AgZnJvbSBiZWluZyBhIG5vLW9wLikKKyAgICBjb25zdCBzaXpl
X3QgZXhpc3RlbnRfY291bnQgPQorICAgICAgICBzdGQ6Om1heDxzaXplX3Q+KHBybmcuUmFuZCh2
YWx1ZXMuc2l6ZSgpIC0gaSAtIDEpLCAxKTsKKyAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGV4
aXN0ZW50X2NvdW50OyArK2opIHsKKyAgICAgIHZhbHVlc1tpICsgal0gPSBSYW5kb21XaXRoTWF4
Qml0V2lkdGgoJnBybmcsIG1heF9iaXRfd2lkdGgpOworICAgIH0KKyAgICBpICs9IGV4aXN0ZW50
X2NvdW50OworICB9CisKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsK
K30KKworVEVTVF9QKERlbHRhRW5jb2RpbmdUZXN0LCBNaW5EZWx0YU5vV3JhcEFyb3VuZCkgewor
ICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKworICBhdXRvIHZh
bHVlcyA9IENyZWF0ZVNlcXVlbmNlQnlGaXJzdFZhbHVlKGJhc2UudmFsdWUoKSArIDEsIG51bV9v
Zl92YWx1ZXNfKTsKKyAgQVNTRVJUX0dUKHZhbHVlc1t2YWx1ZXMuc2l6ZSgpIC0gMV0sIGJhc2Up
IDw8ICJTYW5pdHk7IG11c3Qgbm90IHdyYXAgYXJvdW5kIjsKKworICBpZiAob3B0aW9uYWxfdmFs
dWVzXykgeworICAgIC8vIEFyYml0cmFyaWx5IG1ha2Ugb25lIG9mIHRoZSB2YWx1ZXMgbm9uLWV4
aXN0ZW50LCB0byBmb3JjZQorICAgIC8vIG9wdGlvbmFsLXN1cHBvcnRpbmcgZW5jb2RpbmcuCisg
ICAgdmFsdWVzWzBdID0gYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgIH0KKworICBUZXN0
RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2YWx1ZXMpOworfQorCitURVNUX1AoRGVsdGFFbmNv
ZGluZ1Rlc3QsIEJpZ0RlbHRhTm9XcmFwQXJvdW5kKSB7CisgIGNvbnN0IHVpbnQ2NF90IGtCaWdE
ZWx0YSA9IDEzMjgyODsKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UoMzQz
Mik7CisKKyAgYXV0byB2YWx1ZXMgPQorICAgICAgQ3JlYXRlU2VxdWVuY2VCeUZpcnN0VmFsdWUo
YmFzZS52YWx1ZSgpICsga0JpZ0RlbHRhLCBudW1fb2ZfdmFsdWVzXyk7CisgIEFTU0VSVF9HVCh2
YWx1ZXNbdmFsdWVzLnNpemUoKSAtIDFdLCBiYXNlKSA8PCAiU2FuaXR5OyBtdXN0IG5vdCB3cmFw
IGFyb3VuZCI7CisKKyAgaWYgKG9wdGlvbmFsX3ZhbHVlc18pIHsKKyAgICAvLyBBcmJpdHJhcmls
eSBtYWtlIG9uZSBvZiB0aGUgdmFsdWVzIG5vbi1leGlzdGVudCwgdG8gZm9yY2UKKyAgICAvLyBv
cHRpb25hbC1zdXBwb3J0aW5nIGVuY29kaW5nLgorICAgIHZhbHVlc1swXSA9IGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90PigpOworICB9CisKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwg
dmFsdWVzKTsKK30KKworVEVTVF9QKERlbHRhRW5jb2RpbmdUZXN0LCBNYXhEZWx0YU5vV3JhcEFy
b3VuZCkgeworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKwor
ICBhdXRvIHZhbHVlcyA9IENyZWF0ZVNlcXVlbmNlQnlMYXN0VmFsdWUoc3RkOjpudW1lcmljX2xp
bWl0czx1aW50NjRfdD46Om1heCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVtX29mX3ZhbHVlc18pOworICBBU1NFUlRfR1QodmFsdWVzW3ZhbHVlcy5zaXpl
KCkgLSAxXSwgYmFzZSkgPDwgIlNhbml0eTsgbXVzdCBub3Qgd3JhcCBhcm91bmQiOworCisgIGlm
IChvcHRpb25hbF92YWx1ZXNfKSB7CisgICAgLy8gQXJiaXRyYXJpbHkgbWFrZSBvbmUgb2YgdGhl
IHZhbHVlcyBub24tZXhpc3RlbnQsIHRvIGZvcmNlCisgICAgLy8gb3B0aW9uYWwtc3VwcG9ydGlu
ZyBlbmNvZGluZy4KKyAgICB2YWx1ZXNbMF0gPSBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsK
KyAgfQorCisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKK1RF
U1RfUChEZWx0YUVuY29kaW5nVGVzdCwgU21hbGxEZWx0YVdpdGhXcmFwQXJvdW5kQ29tcGFyZWRU
b0Jhc2UpIHsKKyAgaWYgKG9wdGlvbmFsX3ZhbHVlc18gJiYgbnVtX29mX3ZhbHVlc18gPT0gMSkg
eworICAgIHJldHVybjsgIC8vIEluYXBwbGljYWJsZQorICB9CisKKyAgY29uc3QgYWJzbDo6b3B0
aW9uYWw8dWludDY0X3Q+IGJhc2Uoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
KTsKKworICBhdXRvIHZhbHVlcyA9IENyZWF0ZVNlcXVlbmNlQnlEZWx0YXMoKmJhc2UsIHsxLCAx
MCwgM30sIG51bV9vZl92YWx1ZXNfKTsKKyAgQVNTRVJUX0xUKHZhbHVlc1swXSwgYmFzZSkgPDwg
IlNhbml0eTsgbXVzdCB3cmFwIGFyb3VuZCI7CisKKyAgaWYgKG9wdGlvbmFsX3ZhbHVlc18pIHsK
KyAgICAvLyBBcmJpdHJhcmlseSBtYWtlIG9uZSBvZiB0aGUgdmFsdWVzIG5vbi1leGlzdGVudCwg
dG8gZm9yY2UKKyAgICAvLyBvcHRpb25hbC1zdXBwb3J0aW5nIGVuY29kaW5nLgorICAgIHZhbHVl
c1sxXSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICB9CisKKyAgVGVzdEVuY29kaW5n
QW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworVEVTVF9QKERlbHRhRW5jb2RpbmdUZXN0
LCBTbWFsbERlbHRhV2l0aFdyYXBBcm91bmRJblZhbHVlU2VxdWVuY2UpIHsKKyAgaWYgKG51bV9v
Zl92YWx1ZXNfID09IDEgfHwgKG9wdGlvbmFsX3ZhbHVlc18gJiYgbnVtX29mX3ZhbHVlc18gPCAz
KSkgeworICAgIHJldHVybjsgIC8vIEluYXBwbGljYWJsZS4KKyAgfQorCisgIGNvbnN0IGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+Ojpt
YXgoKSAtIDIpOworCisgIGF1dG8gdmFsdWVzID0gQ3JlYXRlU2VxdWVuY2VCeURlbHRhcygqYmFz
ZSwgezEsIDEwLCAzfSwgbnVtX29mX3ZhbHVlc18pOworICBBU1NFUlRfTFQodmFsdWVzW3ZhbHVl
cy5zaXplKCkgLSAxXSwgdmFsdWVzWzBdKSA8PCAiU2FuaXR5OyBtdXN0IHdyYXAgYXJvdW5kIjsK
KworICBpZiAob3B0aW9uYWxfdmFsdWVzXykgeworICAgIC8vIEFyYml0cmFyaWx5IG1ha2Ugb25l
IG9mIHRoZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0byBmb3JjZQorICAgIC8vIG9wdGlvbmFsLXN1
cHBvcnRpbmcgZW5jb2RpbmcuCisgICAgUlRDX0RDSEVDS19HVCh2YWx1ZXMuc2l6ZSgpIC0gMSwg
MXUpOyAgLy8gV3JhcCBhcm91bmQgbm90IGNhbmNlbGxlZC4KKyAgICB2YWx1ZXNbMV0gPSBhYnNs
OjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgfQorCisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5n
KGJhc2UsIHZhbHVlcyk7Cit9CisKKy8vIFN1cHByZXNzICJpbnRlZ3JhbCBjb25zdGFudCBvdmVy
ZmxvdyIgd2FybmluZzsgdGhpcyBpcyB0aGUgdGVzdCdzIGZvY3VzLgorI2lmZGVmIF9NU0NfVkVS
CisjcHJhZ21hIHdhcm5pbmcocHVzaCkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDMwNykK
KyNlbmRpZgorVEVTVF9QKERlbHRhRW5jb2RpbmdUZXN0LCBCaWdEZWx0YVdpdGhXcmFwQXJvdW5k
Q29tcGFyZWRUb0Jhc2UpIHsKKyAgaWYgKG9wdGlvbmFsX3ZhbHVlc18gJiYgbnVtX29mX3ZhbHVl
c18gPT0gMSkgeworICAgIHJldHVybjsgIC8vIEluYXBwbGljYWJsZQorICB9CisKKyAgY29uc3Qg
dWludDY0X3Qga0JpZ0RlbHRhID0gMTMyODI4OworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50
NjRfdD4gYmFzZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgLQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQmlnRGVsdGEgKyAzKTsKKworICBhdXRv
IHZhbHVlcyA9CisgICAgICBDcmVhdGVTZXF1ZW5jZUJ5Rmlyc3RWYWx1ZShiYXNlLnZhbHVlKCkg
KyBrQmlnRGVsdGEsIG51bV9vZl92YWx1ZXNfKTsKKyAgQVNTRVJUX0xUKHZhbHVlc1swXSwgYmFz
ZS52YWx1ZSgpKSA8PCAiU2FuaXR5OyBtdXN0IHdyYXAgYXJvdW5kIjsKKworICBpZiAob3B0aW9u
YWxfdmFsdWVzXykgeworICAgIC8vIEFyYml0cmFyaWx5IG1ha2Ugb25lIG9mIHRoZSB2YWx1ZXMg
bm9uLWV4aXN0ZW50LCB0byBmb3JjZQorICAgIC8vIG9wdGlvbmFsLXN1cHBvcnRpbmcgZW5jb2Rp
bmcuCisgICAgdmFsdWVzWzFdID0gYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgIH0KKwor
ICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2YWx1ZXMpOworfQorCitURVNUX1AoRGVs
dGFFbmNvZGluZ1Rlc3QsIEJpZ0RlbHRhV2l0aFdyYXBBcm91bmRJblZhbHVlU2VxdWVuY2UpIHsK
KyAgaWYgKG51bV9vZl92YWx1ZXNfID09IDEgfHwgKG9wdGlvbmFsX3ZhbHVlc18gJiYgbnVtX29m
X3ZhbHVlc18gPCAzKSkgeworICAgIHJldHVybjsgIC8vIEluYXBwbGljYWJsZS4KKyAgfQorCisg
IGNvbnN0IHVpbnQ2NF90IGtCaWdEZWx0YSA9IDEzMjgyODsKKyAgY29uc3QgYWJzbDo6b3B0aW9u
YWw8dWludDY0X3Q+IGJhc2Uoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIC0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0JpZ0RlbHRhICsgMyk7CisK
KyAgYXV0byB2YWx1ZXMgPSBDcmVhdGVTZXF1ZW5jZUJ5Rmlyc3RWYWx1ZShzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ2NF90Pjo6bWF4KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVtX29mX3ZhbHVlc18pOworICBBU1NFUlRfTFQodmFsdWVzW3ZhbHVlcy5z
aXplKCkgLSAxXSwgdmFsdWVzWzBdKSA8PCAiU2FuaXR5OyBtdXN0IHdyYXAgYXJvdW5kIjsKKwor
ICBpZiAob3B0aW9uYWxfdmFsdWVzXykgeworICAgIC8vIEFyYml0cmFyaWx5IG1ha2Ugb25lIG9m
IHRoZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0byBmb3JjZQorICAgIC8vIG9wdGlvbmFsLXN1cHBv
cnRpbmcgZW5jb2RpbmcuCisgICAgUlRDX0RDSEVDS19HVCh2YWx1ZXMuc2l6ZSgpIC0gMSwgMXUp
OyAgLy8gV3JhcCBhcm91bmQgbm90IGNhbmNlbGxlZC4KKyAgICB2YWx1ZXNbMV0gPSBhYnNsOjpv
cHRpb25hbDx1aW50NjRfdD4oKTsKKyAgfQorCisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJh
c2UsIHZhbHVlcyk7Cit9CisjaWZkZWYgX01TQ19WRVIKKyNwcmFnbWEgd2FybmluZyhwb3ApCisj
ZW5kaWYKKworVEVTVF9QKERlbHRhRW5jb2RpbmdUZXN0LCBNYXhEZWx0YVdpdGhXcmFwQXJvdW5k
Q29tcGFyZWRUb0Jhc2UpIHsKKyAgaWYgKG9wdGlvbmFsX3ZhbHVlc18gJiYgbnVtX29mX3ZhbHVl
c18gPT0gMSkgeworICAgIHJldHVybjsgIC8vIEluYXBwbGljYWJsZQorICB9CisKKyAgY29uc3Qg
YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UoMzQzMik7CisgIGF1dG8gdmFsdWVzID0gQ3Jl
YXRlU2VxdWVuY2VCeUZpcnN0VmFsdWUoKmJhc2UgLSAxLCBudW1fb2ZfdmFsdWVzXyk7CisKKyAg
aWYgKG9wdGlvbmFsX3ZhbHVlc18pIHsKKyAgICAvLyBBcmJpdHJhcmlseSBtYWtlIG9uZSBvZiB0
aGUgdmFsdWVzIG5vbi1leGlzdGVudCwgdG8gZm9yY2UKKyAgICAvLyBvcHRpb25hbC1zdXBwb3J0
aW5nIGVuY29kaW5nLgorICAgIHZhbHVlc1sxXSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pigp
OworICB9CisKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKwor
VEVTVF9QKERlbHRhRW5jb2RpbmdUZXN0LCBNYXhEZWx0YVdpdGhXcmFwQXJvdW5kSW5WYWx1ZVNl
cXVlbmNlKSB7CisgIGlmIChudW1fb2ZfdmFsdWVzXyA9PSAxIHx8IChvcHRpb25hbF92YWx1ZXNf
ICYmIG51bV9vZl92YWx1ZXNfIDwgMykpIHsKKyAgICByZXR1cm47ICAvLyBJbmFwcGxpY2FibGUu
CisgIH0KKworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKwor
ICBhdXRvIHZhbHVlcyA9IENyZWF0ZVNlcXVlbmNlQnlEZWx0YXMoCisgICAgICAqYmFzZSwgezAs
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSwgM30sIG51bV9vZl92YWx1ZXNf
KTsKKyAgLy8gV3JhcHMgYXJvdW5kIGNvbnRpbnVvdXNseSBieSB2aXJ0dWUgb2YgYmVpbmcgbWF4
KCk7IHdpbGwgbm90IEFTU0VSVC4KKworICBpZiAob3B0aW9uYWxfdmFsdWVzXykgeworICAgIC8v
IEFyYml0cmFyaWx5IG1ha2Ugb25lIG9mIHRoZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0byBmb3Jj
ZQorICAgIC8vIG9wdGlvbmFsLXN1cHBvcnRpbmcgZW5jb2RpbmcuCisgICAgUlRDX0RDSEVDS19H
VCh2YWx1ZXMuc2l6ZSgpIC0gMSwgMXUpOyAgLy8gV3JhcCBhcm91bmQgbm90IGNhbmNlbGxlZC4K
KyAgICB2YWx1ZXNbMV0gPSBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgfQorCisgIFRl
c3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKKy8vIElmIG51bV9vZl92
YWx1ZXNfID09IDEsIGEgemVybyBkZWx0YSB3aWxsIHlpZWxkIGFuIGVtcHR5IHN0cmluZzsgdGhh
dCdzCisvLyBhbHJlYWR5IGNvdmVyZWQgYnkgQWxsVmFsdWVzRXF1YWxUb0V4aXN0ZW50QmFzZVZh
bHVlLCBidXQgaXQgZG9lc24ndCBodXJ0IHRvCisvLyB0ZXN0IGFnYWluLiBGb3IgYWxsIG90aGVy
IGNhc2VzLCB3ZSBoYXZlIGEgbmV3IHRlc3QuCitURVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIFpl
cm9EZWx0YSkgeworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsK
KworICAvLyBBcmJpdHJhcnkgc2VxdWVuY2Ugb2YgZGVsdGFzIHdpdGggaW50ZW50aW9uYWwgemVy
byBkZWx0YXMsIGFzIHdlbGwgYXMKKyAgLy8gY29uc2VjdXRpdmUgemVyb3MuCisgIGNvbnN0IHN0
ZDo6dmVjdG9yPHVpbnQ2NF90PiBkZWx0YXMgPSB7MCwgICAgICAzMTIsIDExLCAxLCAgMSwgMCwg
MCwgMTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDAwMzIxLCAz
LCAgIDMsICAxMiwgNSwgMCwgNn07CisgIGF1dG8gdmFsdWVzID0gQ3JlYXRlU2VxdWVuY2VCeURl
bHRhcyhiYXNlLnZhbHVlKCksIGRlbHRhcywgbnVtX29mX3ZhbHVlc18pOworCisgIGlmIChvcHRp
b25hbF92YWx1ZXNfKSB7CisgICAgLy8gQXJiaXRyYXJpbHkgbWFrZSBvbmUgb2YgdGhlIHZhbHVl
cyBub24tZXhpc3RlbnQsIHRvIGZvcmNlCisgICAgLy8gb3B0aW9uYWwtc3VwcG9ydGluZyBlbmNv
ZGluZy4KKyAgICB2YWx1ZXNbMF0gPSBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgfQor
CisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKAorICAgIFNpZ25lZG5lc3NPdmVycmlkZUFuZE51bWJlck9mVmFsdWVz
SW5TZXF1ZW5jZSwKKyAgICBEZWx0YUVuY29kaW5nVGVzdCwKKyAgICA6OnRlc3Rpbmc6OkNvbWJp
bmUoOjp0ZXN0aW5nOjpWYWx1ZXMoRGVsdGFTaWduZWRuZXNzOjprTm9PdmVycmlkZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsdGFTaWduZWRuZXNzOjprRm9y
Y2VVbnNpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVs
dGFTaWduZWRuZXNzOjprRm9yY2VTaWduZWQpLAorICAgICAgICAgICAgICAgICAgICAgICA6OnRl
c3Rpbmc6OlZhbHVlcygxLCAyLCAxMDAsIDEwMDAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
Ojp0ZXN0aW5nOjpCb29sKCksCisgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFs
dWVzKDEwLCAyMCwgMzApKSk7CisKKy8vIFRlc3RzIG92ZXIgdGhlIHF1YWxpdHkgb2YgdGhlIGNv
bXByZXNzaW9uIChhcyBvcHBvc2VkIHRvIGl0cyBjb3JyZWN0bmVzcykuCisvLyBOb3QgdG8gYmUg
Y29uZnVzZWQgd2l0aCB0ZXN0cyBvZiBydW50aW1lIGVmZmljaWVuY3kuCitjbGFzcyBEZWx0YUVu
Y29kaW5nQ29tcHJlc3Npb25RdWFsaXR5VGVzdAorICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVz
dFdpdGhQYXJhbTwKKyAgICAgICAgICBzdGQ6OnR1cGxlPERlbHRhU2lnbmVkbmVzcywgdWludDY0
X3QsIHVpbnQ2NF90LCB1aW50NjRfdD4+IHsKKyBwdWJsaWM6CisgIERlbHRhRW5jb2RpbmdDb21w
cmVzc2lvblF1YWxpdHlUZXN0KCkKKyAgICAgIDogc2lnbmVkbmVzc18oc3RkOjpnZXQ8MD4oR2V0
UGFyYW0oKSkpLAorICAgICAgICBkZWx0YV9tYXhfYml0X3dpZHRoXyhzdGQ6OmdldDwxPihHZXRQ
YXJhbSgpKSksCisgICAgICAgIG51bV9vZl92YWx1ZXNfKHN0ZDo6Z2V0PDI+KEdldFBhcmFtKCkp
KSwKKyAgICAgICAgcGFydGlhbF9yYW5kb21fc2VlZF8oc3RkOjpnZXQ8Mz4oR2V0UGFyYW0oKSkp
IHsKKyAgICBNYXliZVNldFNpZ25lZG5lc3Moc2lnbmVkbmVzc18pOworICB9CisKKyAgfkRlbHRh
RW5jb2RpbmdDb21wcmVzc2lvblF1YWxpdHlUZXN0KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworCisg
IC8vIFJ1bm5pbmcgd2l0aCB0aGUgc2FtZSBzZWVkIGZvciBhbGwgdmFyaWFudHMgd291bGQgbWFr
ZSBhbGwgdGVzdHMgc3RhcnQKKyAgLy8gd2l0aCB0aGUgc2FtZSBzZXF1ZW5jZTsgYXZvaWQgdGhp
cyBieSBtYWtpbmcgdGhlIHNlZWQgZGlmZmVyZW50LgorICB1aW50NjRfdCBTZWVkKCkgY29uc3Qg
eworICAgIC8vIE11bHRpcGx5IGV2ZXJ5dGhpbmcgYnV0IGJ5IGRpZmZlcmVudCBwcmltZXMgdG8g
cHJvZHVjZSB1bmlxdWUgcmVzdWx0cy4KKyAgICByZXR1cm4gMiAqIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihzaWduZWRuZXNzXykgKyAzICogZGVsdGFfbWF4X2JpdF93aWR0aF8gKworICAgICAgICAg
ICA1ICogZGVsdGFfbWF4X2JpdF93aWR0aF8gKyA3ICogbnVtX29mX3ZhbHVlc18gKworICAgICAg
ICAgICAxMSAqIHBhcnRpYWxfcmFuZG9tX3NlZWRfOworICB9CisKKyAgY29uc3QgRGVsdGFTaWdu
ZWRuZXNzIHNpZ25lZG5lc3NfOworICBjb25zdCB1aW50NjRfdCBkZWx0YV9tYXhfYml0X3dpZHRo
XzsKKyAgY29uc3QgdWludDY0X3QgbnVtX29mX3ZhbHVlc187CisgIGNvbnN0IHVpbnQ2NF90IHBh
cnRpYWxfcmFuZG9tX3NlZWRfOyAgLy8gRXhwbGFpbmVkIHdoZXJlIGl0J3MgdXNlZC4KK307CisK
Ky8vIElmIG5vIHdyYXAtYXJvdW5kIG9jY3VycyBpbiB0aGUgc3RyZWFtLCB0aGUgd2lkdGggb2Yg
dGhlIHZhbHVlcyBkb2VzIG5vdAorLy8gbWF0dGVyIHRvIGNvbXByZXNzaW9uIHBlcmZvcm1hbmNl
OyBvbmx5IHRoZSBkZWx0YXMgbWF0dGVyLgorVEVTVF9QKERlbHRhRW5jb2RpbmdDb21wcmVzc2lv
blF1YWxpdHlUZXN0LAorICAgICAgIEJhc2VEb2VzTm90QWZmZWN0RWZmaWNpZW5jeUlmTm9XcmFw
QXJvdW5kKSB7CisgIC8vIDEuIEJhc2VzIHdoaWNoIHdpbGwgbm90IHByb2R1Y2UgYSB3cmFwLWFy
b3VuZC4KKyAgLy8gMi4gVGhlIGxhc3QgYmFzZSAtIDB4ZmZmZmZmZmZmZmZmZmZmZiAtIGRvZXMg
Y2F1c2UgYSB3cmFwLWFyb3VuZCwgYnV0CisgIC8vICAgIHRoYXQgc3RpbGwgd29ya3MsIGJlY2F1
c2UgdGhlIHdpZHRoIGlzIDY0IGFueXdheSwgYW5kIGRvZXMgbm90CisgIC8vICAgIG5lZWQgdG8g
YmUgY29udmV5ZWQgZXhwbGljaXRseSBpbiB0aGUgZW5jb2RpbmcgaGVhZGVyLgorICBjb25zdCB1
aW50NjRfdCBiYXNlc1tdID0gezAsIDB4NTUsIDB4ZmZmZmZmZmYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpfTsKKyAgY29u
c3Qgc2l6ZV90IGtJbnRlbmRlZFdyYXBBcm91bmRCYXNlSW5kZXggPSBhcnJheXNpemUoYmFzZXMp
OworCisgIHN0ZDo6dmVjdG9yPHVpbnQ2NF90PiBkZWx0YXMobnVtX29mX3ZhbHVlc18pOworCisg
IC8vIEFsbG93cyB1cyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZGVsdGFzIGRvIG5vdCBwcm9kdWNl
IGEgd3JhcC1hcm91bmQuCisgIHVpbnQ2NF90IGxhc3RfZWxlbWVudFthcnJheXNpemUoYmFzZXMp
XTsKKyAgbWVtY3B5KGxhc3RfZWxlbWVudCwgYmFzZXMsIHNpemVvZihiYXNlcykpOworCisgIC8v
IEF2b2lkIGVtcHR5IHxkZWx0YXN8IGR1ZSB0byBmaXJzdCBlbGVtZW50IGNhdXNpbmcgd3JhcC1h
cm91bmQuCisgIGRlbHRhc1swXSA9IDE7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlz
aXplKGxhc3RfZWxlbWVudCk7ICsraSkgeworICAgIGxhc3RfZWxlbWVudFtpXSArPSAxOworICB9
CisKKyAgUmFuZG9tIHBybmcoU2VlZCgpKTsKKworICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGRl
bHRhcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IHVpbnQ2NF90IGRlbHRhID0gUmFuZG9tV2l0
aE1heEJpdFdpZHRoKCZwcm5nLCBkZWx0YV9tYXhfYml0X3dpZHRoXyk7CisKKyAgICBib29sIHdy
YXBfYXJvdW5kID0gZmFsc2U7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBhcnJheXNpemUo
bGFzdF9lbGVtZW50KTsgKytqKSB7CisgICAgICBpZiAoaiA9PSBrSW50ZW5kZWRXcmFwQXJvdW5k
QmFzZUluZGV4KSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICBsYXN0X2Vs
ZW1lbnRbal0gKz0gZGVsdGE7CisgICAgICBpZiAobGFzdF9lbGVtZW50W2pdIDwgYmFzZXNbal0p
IHsKKyAgICAgICAgd3JhcF9hcm91bmQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAod3JhcF9hcm91bmQpIHsKKyAgICAgIGRlbHRhcy5yZXNpemUoaSk7
CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWx0YXNbaV0gPSBkZWx0YTsKKyAgfQorCisg
IHN0ZDo6c3RyaW5nIGVuY29kaW5nc1thcnJheXNpemUoYmFzZXMpXTsKKworICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGFycmF5c2l6ZShiYXNlcyk7ICsraSkgeworICAgIGNvbnN0IGF1dG8gdmFs
dWVzID0KKyAgICAgICAgQ3JlYXRlU2VxdWVuY2VCeURlbHRhcyhiYXNlc1tpXSwgZGVsdGFzLCBu
dW1fb2ZfdmFsdWVzXyk7CisgICAgLy8gUHJvZHVjZSB0aGUgZW5jb2RpbmcgYW5kIHdyaXRlIGl0
IHRvIGVuY29kaW5nc1tpXS4KKyAgICAvLyBCeSB1c2luZyBUZXN0RW5jb2RpbmdBbmREZWNvZGlu
ZygpIHRvIGRvIHRoaXMsIHdlIGFsc28gc2FuaXR5LXRlc3QKKyAgICAvLyB0aGUgZW5jb2Rpbmcv
ZGVjb2RpbmcsIHRob3VnaCB0aGF0IGlzIG5vdCB0aGUgdGVzdCdzIGZvY3VzLgorICAgIFRlc3RF
bmNvZGluZ0FuZERlY29kaW5nKGJhc2VzW2ldLCB2YWx1ZXMsICZlbmNvZGluZ3NbaV0pOworICAg
IEVYUEVDVF9MRShlbmNvZGluZ3NbaV0ubGVuZ3RoKCksCisgICAgICAgICAgICAgIEVuY29kaW5n
TGVuZ3RoVXBwZXJCb3VuZChkZWx0YV9tYXhfYml0X3dpZHRoXywgbnVtX29mX3ZhbHVlc18sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWRuZXNzXykpOworICB9
CisKKyAgLy8gVGVzdCBmb2N1cyAtIGFsbCBvZiB0aGUgZW5jb2RpbmdzIHNob3VsZCBiZSB0aGUg
c2FtZSwgYXMgdGhleSBhcmUgYmFzZWQKKyAgLy8gb24gdGhlIHNhbWUgZGVsdGEgc2VxdWVuY2Us
IGFuZCBkbyBub3QgY29udGFpbiBhIHdyYXAtYXJvdW5kLgorICBmb3IgKHNpemVfdCBpID0gMTsg
aSA8IGFycmF5c2l6ZShlbmNvZGluZ3MpOyArK2kpIHsKKyAgICBFWFBFQ1RfRVEoZW5jb2Rpbmdz
W2ldLCBlbmNvZGluZ3NbMF0pOworICB9Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAor
ICAgIFNpZ25lZG5lc3NPdmVycmlkZUFuZERlbHRhTWF4Qml0V2lkdGhBbmROdW1iZXJPZlZhbHVl
c0luU2VxdWVuY2UsCisgICAgRGVsdGFFbmNvZGluZ0NvbXByZXNzaW9uUXVhbGl0eVRlc3QsCisg
ICAgOjp0ZXN0aW5nOjpDb21iaW5lKAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcyhEZWx0YVNp
Z25lZG5lc3M6OmtOb092ZXJyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWx0YVNp
Z25lZG5lc3M6OmtGb3JjZVVuc2lnbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWx0
YVNpZ25lZG5lc3M6OmtGb3JjZVNpZ25lZCksCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDEs
IDQsIDgsIDE1LCAxNiwgMTcsIDMxLCAzMiwgMzMsIDYzLCA2NCksCisgICAgICAgIDo6dGVzdGlu
Zzo6VmFsdWVzKDEsIDIsIDEwMCwgMTAwMDApLAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygx
MSwgMTIsIDEzKSkpOworCisvLyBTaW1pbGFyIHRvIERlbHRhRW5jb2RpbmdUZXN0LCBidXQgaW5z
dGVhZCBvZiBzZW1pLXN1cmdpY2FsbHkgcHJvZHVjaW5nCisvLyBzcGVjaWZpYyBjYXNlcywgcHJv
ZHVjZSBsYXJnZSBhbW91bnQgb2Ygc2VtaS1yZWFsaXN0aWMgaW5wdXRzLgorY2xhc3MgRGVsdGFF
bmNvZGluZ0Z1enplckxpa2VUZXN0CisgICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPAorICAgICAgICAgIHN0ZDo6dHVwbGU8RGVsdGFTaWduZWRuZXNzLCB1aW50NjRfdCwgdWlu
dDY0X3QsIGJvb2wsIHVpbnQ2NF90Pj4geworIHB1YmxpYzoKKyAgRGVsdGFFbmNvZGluZ0Z1enpl
ckxpa2VUZXN0KCkKKyAgICAgIDogc2lnbmVkbmVzc18oc3RkOjpnZXQ8MD4oR2V0UGFyYW0oKSkp
LAorICAgICAgICBkZWx0YV9tYXhfYml0X3dpZHRoXyhzdGQ6OmdldDwxPihHZXRQYXJhbSgpKSks
CisgICAgICAgIG51bV9vZl92YWx1ZXNfKHN0ZDo6Z2V0PDI+KEdldFBhcmFtKCkpKSwKKyAgICAg
ICAgb3B0aW9uYWxfdmFsdWVzXyhzdGQ6OmdldDwzPihHZXRQYXJhbSgpKSksCisgICAgICAgIHBh
cnRpYWxfcmFuZG9tX3NlZWRfKHN0ZDo6Z2V0PDQ+KEdldFBhcmFtKCkpKSB7CisgICAgTWF5YmVT
ZXRTaWduZWRuZXNzKHNpZ25lZG5lc3NfKTsKKyAgfQorCisgIH5EZWx0YUVuY29kaW5nRnV6emVy
TGlrZVRlc3QoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgLy8gUnVubmluZyB3aXRoIHRoZSBz
YW1lIHNlZWQgZm9yIGFsbCB2YXJpYW50cyB3b3VsZCBtYWtlIGFsbCB0ZXN0cyBzdGFydAorICAv
LyB3aXRoIHRoZSBzYW1lIHNlcXVlbmNlOyBhdm9pZCB0aGlzIGJ5IG1ha2luZyB0aGUgc2VlZCBk
aWZmZXJlbnQuCisgIHVpbnQ2NF90IFNlZWQoKSBjb25zdCB7CisgICAgLy8gTXVsdGlwbHkgZXZl
cnl0aGluZyBidXQgYnkgZGlmZmVyZW50IHByaW1lcyB0byBwcm9kdWNlIHVuaXF1ZSByZXN1bHRz
LgorICAgIHJldHVybiAyICogc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpZ25lZG5lc3NfKSArIDMg
KiBkZWx0YV9tYXhfYml0X3dpZHRoXyArCisgICAgICAgICAgIDUgKiBkZWx0YV9tYXhfYml0X3dp
ZHRoXyArIDcgKiBudW1fb2ZfdmFsdWVzXyArCisgICAgICAgICAgIDExICogc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9wdGlvbmFsX3ZhbHVlc18pICsKKyAgICAgICAgICAgMTMgKiBwYXJ0aWFsX3Jh
bmRvbV9zZWVkXzsKKyAgfQorCisgIGNvbnN0IERlbHRhU2lnbmVkbmVzcyBzaWduZWRuZXNzXzsK
KyAgY29uc3QgdWludDY0X3QgZGVsdGFfbWF4X2JpdF93aWR0aF87CisgIGNvbnN0IHVpbnQ2NF90
IG51bV9vZl92YWx1ZXNfOworICBjb25zdCBib29sIG9wdGlvbmFsX3ZhbHVlc187CisgIGNvbnN0
IHVpbnQ2NF90IHBhcnRpYWxfcmFuZG9tX3NlZWRfOyAgLy8gRXhwbGFpbmVkIHdoZXJlIGl0J3Mg
dXNlZC4KK307CisKK1RFU1RfUChEZWx0YUVuY29kaW5nRnV6emVyTGlrZVRlc3QsIFRlc3QpIHsK
KyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UoMzQzMik7CisKKyAgUmFuZG9t
IHBybmcoU2VlZCgpKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBk
ZWx0YXMobnVtX29mX3ZhbHVlc18pOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlbHRhcy5z
aXplKCk7ICsraSkgeworICAgIGlmICghb3B0aW9uYWxfdmFsdWVzXyB8fCBwcm5nLlJhbmQ8Ym9v
bD4oKSkgeworICAgICAgZGVsdGFzW2ldID0gUmFuZG9tV2l0aE1heEJpdFdpZHRoKCZwcm5nLCBk
ZWx0YV9tYXhfYml0X3dpZHRoXyk7CisgICAgfQorICB9CisgIGNvbnN0IGF1dG8gdmFsdWVzID0K
KyAgICAgIENyZWF0ZVNlcXVlbmNlQnlPcHRpb25hbERlbHRhcyhiYXNlLnZhbHVlKCksIGRlbHRh
cywgbnVtX29mX3ZhbHVlc18pOworCisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZh
bHVlcyk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIFNpZ25lZG5lc3NPdmVy
cmlkZUFuZERlbHRhTWF4Qml0V2lkdGhBbmROdW1iZXJPZlZhbHVlc0luU2VxdWVuY2UsCisgICAg
RGVsdGFFbmNvZGluZ0Z1enplckxpa2VUZXN0LAorICAgIDo6dGVzdGluZzo6Q29tYmluZSgKKyAg
ICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoRGVsdGFTaWduZWRuZXNzOjprTm9PdmVycmlkZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVsdGFTaWduZWRuZXNzOjprRm9yY2VVbnNpZ25lZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsdGFTaWduZWRuZXNzOjprRm9yY2VTaWduZWQp
LAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygxLCA0LCA4LCAxNSwgMTYsIDE3LCAzMSwgMzIs
IDMzLCA2MywgNjQpLAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygxLCAyLCAxMDAsIDEwMDAw
KSwKKyAgICAgICAgOjp0ZXN0aW5nOjpCb29sKCksCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVz
KDIxLCAyMiwgMjMpKSk7CisKK2NsYXNzIERlbHRhRW5jb2RpbmdTcGVjaWZpY0VkZ2VDYXNlc1Rl
c3QKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08CisgICAgICAgICAgc3Rk
Ojp0dXBsZTxEZWx0YVNpZ25lZG5lc3MsIHVpbnQ2NF90LCBib29sPj4geworIHB1YmxpYzoKKyAg
RGVsdGFFbmNvZGluZ1NwZWNpZmljRWRnZUNhc2VzVGVzdCgpIHsKKyAgICBVbnNldEZpeGVkTGVu
Z3RoRW5jb2RlckRlbHRhU2lnbmVkbmVzc0ZvclRlc3RpbmcoKTsKKyAgfQorCisgIH5EZWx0YUVu
Y29kaW5nU3BlY2lmaWNFZGdlQ2FzZXNUZXN0KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworfTsKKwor
Ly8gVGhpcyBjYXNlIGlzIHNwZWNpYWwgYmVjYXVzZSBpdCBwcm9kdWNlcyBpZGVudGljYWwgZm9y
d2FyZC9iYWNrd2FyZCBkZWx0YXMuCitURVNUX0YoRGVsdGFFbmNvZGluZ1NwZWNpZmljRWRnZUNh
c2VzVGVzdCwgU2lnbmVkRGVsdGFXaXRoT25seVRvcEJpdE9uKSB7CisgIE1heWJlU2V0U2lnbmVk
bmVzcyhEZWx0YVNpZ25lZG5lc3M6OmtGb3JjZVNpZ25lZCk7CisKKyAgY29uc3QgYWJzbDo6b3B0
aW9uYWw8dWludDY0X3Q+IGJhc2UoMzQzMik7CisKKyAgY29uc3QgdWludDY0X3QgZGVsdGEgPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwgNjM7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVzID0ge2Jhc2UudmFsdWUoKSArIGRlbHRhfTsKKwor
ICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2YWx1ZXMpOworfQorCitURVNUX0YoRGVs
dGFFbmNvZGluZ1NwZWNpZmljRWRnZUNhc2VzVGVzdCwgTWF4aW11bVVuc2lnbmVkRGVsdGEpIHsK
KyAgTWF5YmVTZXRTaWduZWRuZXNzKERlbHRhU2lnbmVkbmVzczo6a0ZvcmNlVW5zaWduZWQpOwor
CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlKChzdGF0aWNfY2FzdDx1aW50
NjRfdD4oMSkgPDwgNjMpICsgMHgxMjMpOworCisgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVzID0ge2Jhc2UudmFsdWUoKSAtIDF9OworCisgIFRlc3RF
bmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKKy8vIENoZWNrIHRoYXQsIGlm
IGFsbCBkZWx0YXMgYXJlIHNldCB0byAtMSwgdGhpbmdzIHN0aWxsIHdvcmsuCitURVNUX1AoRGVs
dGFFbmNvZGluZ1NwZWNpZmljRWRnZUNhc2VzVGVzdCwgUmV2ZXJzZVNlcXVlbmNlKSB7CisgIE1h
eWJlU2V0U2lnbmVkbmVzcyhzdGQ6OmdldDwwPihHZXRQYXJhbSgpKSk7CisgIGNvbnN0IHVpbnQ2
NF90IHdpZHRoID0gc3RkOjpnZXQ8MT4oR2V0UGFyYW0oKSk7CisgIGNvbnN0IGJvb2wgd3JhcF9h
cm91bmQgPSBzdGQ6OmdldDwyPihHZXRQYXJhbSgpKTsKKworICBjb25zdCB1aW50NjRfdCB2YWx1
ZV9tYXNrID0gKHdpZHRoID09IDY0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID8gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAoKHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSA8PCB3aWR0aCkg
LSAxKTsKKworICBjb25zdCB1aW50NjRfdCBiYXNlID0gd3JhcF9hcm91bmQgPyAxdSA6ICgweGY4
MmQzICYgdmFsdWVfbWFzayk7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90Pj4gdmFsdWVzID0geworICAgICAgKGJhc2UgLSAxdSkgJiB2YWx1ZV9tYXNrLCAoYmFz
ZSAtIDJ1KSAmIHZhbHVlX21hc2ssCisgICAgICAoYmFzZSAtIDN1KSAmIHZhbHVlX21hc2t9Owor
CisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKAorICAgIF8sCisgICAgRGVsdGFFbmNvZGluZ1NwZWNpZmljRWRnZUNh
c2VzVGVzdCwKKyAgICA6OnRlc3Rpbmc6OkNvbWJpbmUoCisgICAgICAgIDo6dGVzdGluZzo6VmFs
dWVzKERlbHRhU2lnbmVkbmVzczo6a05vT3ZlcnJpZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIERlbHRhU2lnbmVkbmVzczo6a0ZvcmNlVW5zaWduZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIERlbHRhU2lnbmVkbmVzczo6a0ZvcmNlU2lnbmVkKSwKKyAgICAgICAgOjp0ZXN0aW5n
OjpWYWx1ZXMoMSwgNCwgOCwgMTUsIDE2LCAxNywgMzEsIDMyLCAzMywgNjMsIDY0KSwKKyAgICAg
ICAgOjp0ZXN0aW5nOjpCb29sKCkpKTsKKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29k
ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlci5oCmluZGV4IGJlYjcx
MWM5ZGQ4MmY3MmI5NWY1ZGM4NWYxMDJlMTY0ODExNmY4YmIuLjZjZTc1MGY2N2U3NjBhMWRjMjdl
YWQ4ZjZkOGZiZWFhMmUzNmVlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVu
dF9sb2dfZW5jb2Rlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rl
ci5oCkBAIC0yMiw3ICsyMiw4IEBAIGNsYXNzIFJ0Y0V2ZW50TG9nRW5jb2RlciB7CiAgcHVibGlj
OgogICB2aXJ0dWFsIH5SdGNFdmVudExvZ0VuY29kZXIoKSA9IGRlZmF1bHQ7CiAKLSAgdmlydHVh
bCBzdGQ6OnN0cmluZyBFbmNvZGVMb2dTdGFydChpbnQ2NF90IHRpbWVzdGFtcF91cykgPSAwOwor
ICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIEVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdXRjX3RpbWVf
dXMpID0gMDsKICAgdmlydHVhbCBzdGQ6OnN0cmluZyBFbmNvZGVMb2dFbmQoaW50NjRfdCB0aW1l
c3RhbXBfdXMpID0gMDsKIAogICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIEVuY29kZUJhdGNoKApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbi5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb24uY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2FlYTQ3NjExZDZjM2RhNmM1NTczNWIyOTZmN2IxOWVjOWJiNDNjYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb24uY2MKQEAg
LTAsMCArMSw0MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJsb2dnaW5n
L3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmgiCisK
KyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1l
c3BhY2UgeworLy8gV2UgdXNlIDB4M2ZmZiBiZWNhdXNlIHRoYXQgZ2l2ZXMgZGVjZW50IHByZWNp
c2lvbiAoY29tcGFyZWQgdG8gdGhlIHVuZGVybHlpbmcKKy8vIG1lYXN1cmVtZW50IHByb2R1Y2lu
ZyB0aGUgcGFja2V0IGxvc3MgZnJhY3Rpb24pIG9uIHRoZSBvbmUgaGFuZCwgd2hpbGUKKy8vIGFs
bG93aW5nIHVzIHRvIHVzZSBubyBtb3JlIHRoYW4gMiBieXRlcyBpbiB2YXJpbnQgZm9ybSBvbiB0
aGUgb3RoZXIgaGFuZC4KKy8vIChXZSBtaWdodCBhbHNvIGZpeGVkLXNpemUgZW5jb2RlIHVzaW5n
IGF0IG1vc3QgMTQgYml0cy4pCitjb25zdGV4cHIgdWludDMyX3Qga1BhY2tldExvc3NGcmFjdGlv
blJhbmdlID0gKDEgPDwgMTQpIC0gMTsgIC8vIDB4M2ZmZgorY29uc3RleHByIGZsb2F0IGtQYWNr
ZXRMb3NzRnJhY3Rpb25SYW5nZUZsb2F0ID0KKyAgICBzdGF0aWNfY2FzdDxmbG9hdD4oa1BhY2tl
dExvc3NGcmFjdGlvblJhbmdlKTsKK30gIC8vIG5hbWVzcGFjZQorCit1aW50MzJfdCBDb252ZXJ0
UGFja2V0TG9zc0ZyYWN0aW9uVG9Qcm90b0Zvcm1hdChmbG9hdCBwYWNrZXRfbG9zc19mcmFjdGlv
bikgeworICBSVENfRENIRUNLX0dFKHBhY2tldF9sb3NzX2ZyYWN0aW9uLCAwKTsKKyAgUlRDX0RD
SEVDS19MRShwYWNrZXRfbG9zc19mcmFjdGlvbiwgMSk7CisgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50MzJfdD4ocGFja2V0X2xvc3NfZnJhY3Rpb24gKiBrUGFja2V0TG9zc0ZyYWN0aW9uUmFuZ2Up
OworfQorCitib29sIFBhcnNlUGFja2V0TG9zc0ZyYWN0aW9uRnJvbVByb3RvRm9ybWF0KHVpbnQz
Ml90IHByb3RvX3BhY2tldF9sb3NzX2ZyYWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCogb3V0cHV0KSB7CisgIGlmIChwcm90b19wYWNrZXRf
bG9zc19mcmFjdGlvbiA+PSBrUGFja2V0TG9zc0ZyYWN0aW9uUmFuZ2UpIHsKKyAgICByZXR1cm4g
ZmFsc2U7CisgIH0KKyAgKm91dHB1dCA9IHByb3RvX3BhY2tldF9sb3NzX2ZyYWN0aW9uIC8ga1Bh
Y2tldExvc3NGcmFjdGlvblJhbmdlRmxvYXQ7CisgIHJldHVybiB0cnVlOworfQorfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19l
bmNvZGVyX2NvbW1vbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2Nv
bW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQyOWY4ZWQyYWQ3M2ZjNWE5ZWFhYTc2ZmNkYTEyMGY1Y2I1MmM2
OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29k
ZXJfY29tbW9uLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
Zm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09ERVJfUlRDX0VWRU5UX0xPR19FTkNPREVS
X0NPTU1PTl9IXworI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9SVENfRVZF
TlRfTE9HX0VOQ09ERVJfQ09NTU9OX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1
ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworbmFtZXNwYWNlIHdlYnJ0YyB7
CisKKy8vIENvbnZlcnQgYmV0d2VlbiB0aGUgcGFja2V0IGZyYWN0aW9uIGxvc3MgKGEgZmxvYXRp
bmcgcG9pbnQgbnVtYmVyIGluCisvLyB0aGUgcmFuZ2UgWzAuMCwgMS4wXSksIGFuZCBhIHVpbnQz
Ml90IHdpdGggdXAgdG8gYSBmaXhlZCBudW1iZXIgb2YgYml0cy4KKy8vIFRoZSBsYXR0ZXIgY2Fu
IGJlIG1vcmUgZWZmaWNpZW50bHkgc3RvcmVkIGluIGEgcHJvdG9idWYgYW5kL29yIGRlbHRhLWVu
Y29kZWQuCit1aW50MzJfdCBDb252ZXJ0UGFja2V0TG9zc0ZyYWN0aW9uVG9Qcm90b0Zvcm1hdChm
bG9hdCBwYWNrZXRfbG9zc19mcmFjdGlvbik7Citib29sIFBhcnNlUGFja2V0TG9zc0ZyYWN0aW9u
RnJvbVByb3RvRm9ybWF0KHVpbnQzMl90IHByb3RvX3BhY2tldF9sb3NzX2ZyYWN0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCogb3V0cHV0KTsK
KworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCituYW1lc3BhY2Ugd2VicnRjX2V2ZW50X2xvZ2dp
bmcgeworCisvLyBQcm9kdWNlIGFuIHVuc2lnbmVkIHJlcHJlc2VudGF0aW9uIG9mIGEgc2lnbmVk
IGludGVnZXIuIE9uIHR3bydzIGNvbXBsZW1lbnQKKy8vIG1hY2hpbmVzLCB0aGlzIGlzIGVxdWl2
YWxlbnQgdG86CisvLyBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8c3RkOjptYWtl
X3Vuc2lnbmVkPFQ+Pih5KSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordWludDY0X3QgVG9VbnNp
Z25lZChUIHkpIHsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwg
IiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2lnbmVkPFQ+Ojp2YWx1ZSwgIiIpOworCisg
IC8vIE5vdGUgdGhhdCBhIHNpZ25lZCBpbnRlZ2VyIHdob3NlIHdpZHRoIGlzIE4gYml0cywgaGFz
IE4tMSBkaWdpdHMuCisgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGln
aXRzIDwgNjQsICIiKTsKKworICBjb25zdGV4cHIgVCBNSU5fVCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8VD46Om1pbigpOworICBjb25zdGV4cHIgVCBNQVhfVCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
VD46Om1heCgpOworCisgIHN0YXRpY19hc3NlcnQoTUFYX1QgKyBNSU5fVCArIDEgPj0gMCwgIk1B
WF9UID49IGFicyhNSU5fVCkgLSAxIik7CisKKyAgaWYgKHkgPj0gMCkgeworICAgIHJldHVybiBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oeSk7CisgIH0gZWxzZSB7CisgICAgLy8geSBpcyBpbiB0aGUg
cmFuZ2UgW01JTl9ULCAtMV0sIHNvICh5IC0gTUlOX1QpIGlzIGluIHRoZQorICAgIC8vIHJhbmdl
IFswLCBhYnMoTUlOX1QpIC0gMV0uIFRoaXMgaXMgcmVwcmVzZW50YWJsZSBpbiBhIFQKKyAgICAv
LyBiZWNhdXNlIE1BWF9UID49IGFicyhNSU5fVCkgLSAxLCBhcyBwZXIgdGhlIHN0YXRpY19hc3Nl
cnQgYWJvdmUuCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihNQVhfVCkgKyAxICsg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHkgLSBNSU5fVCk7CisgIH0KK30KKworLy8gQXNzdW1pbmcg
eCA9IFRvVW5zaWduZWQoeSksIHJldHVybiB8eXwuCisvLyBOb3RlOiBzdGF0aWNfY2FzdDxUPih4
KSB3b3VsZCB3b3JrIG9uIG1vc3QgcGxhdGZvcm1zIGFuZCBjb21waWxlcnMsIGJ1dAorLy8gaW52
b2x2ZXMgdW5kZWZpbmVkIGJlaGF2aW9yLiBUaGlzIGZ1bmN0aW9uIGlzIHdlbGwtZGVmaW5lZCwg
YW5kIGNhbiBiZQorLy8gb3B0aW1pemVkIHRvIGEgbm9vcCBmb3IgNjQgYml0IHR5cGVzLCBvciBh
IGZldyBhcml0aG1ldGljCisvLyBpbnN0cnVjdGlvbnMgYW5kIGEgc2luZ2xlIGNvbmRpdGlvbmFs
IGp1bXAgZm9yIG5hcnJvd2VyIHR5cGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIFRv
U2lnbmVkKHVpbnQ2NF90IHgsIFQqIHkpIHsKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVn
cmFsPFQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2lnbmVkPFQ+Ojp2
YWx1ZSwgIiIpOworCisgIC8vIE5vdGUgdGhhdCBhIHNpZ25lZCBpbnRlZ2VyIHdob3NlIHdpZHRo
IGlzIE4gYml0cywgaGFzIE4tMSBkaWdpdHMuCisgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmlj
X2xpbWl0czxUPjo6ZGlnaXRzIDwgNjQsICIiKTsKKworICBjb25zdGV4cHIgVCBNSU5fVCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbigpOworICBjb25zdGV4cHIgVCBNQVhfVCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8VD46Om1heCgpOworCisgIHVzaW5nIFVOU0lHTkVEX1QgPSB0eXBlbmFt
ZSBzdGQ6Om1ha2VfdW5zaWduZWQ8VD46OnR5cGU7CisgIGNvbnN0ZXhwciBhdXRvIE1BWF9VTlNJ
R05FRF9UID0gc3RkOjpudW1lcmljX2xpbWl0czxVTlNJR05FRF9UPjo6bWF4KCk7CisgIGlmICh4
ID4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KE1BWF9VTlNJR05FRF9UKSkgeworICAgIHJldHVybiBm
YWxzZTsgIC8vIHx4fCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgdXNpbmcgYSBULgorICB9CisKKyAg
aWYgKHggPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KE1BWF9UKSkgeworICAgIC8vIFRoZSBvcmln
aW5hbCB2YWx1ZSB3YXMgcG9zaXRpdmUsIHNvIGl0IGlzIHNhZmUgdG8ganVzdCBzdGF0aWNfY2Fz
dC4KKyAgICAqeSA9IHN0YXRpY19jYXN0PFQ+KHgpOworICB9IGVsc2UgeyAgLy8geCA+IHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihNQVhfVCkKKyAgICBjb25zdCB1aW50NjRfdCBuZWdfeCA9IHggLSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oTUFYX1QpIC0gMTsKKyAgICAqeSA9IHN0YXRpY19jYXN0PFQ+
KG5lZ194KSArIE1JTl9UOworICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSB3ZWJydGNfZXZlbnRfbG9nZ2luZworCisjZW5kaWYgIC8vIExPR0dJTkdfUlRDX0VWRU5U
X0xPR19FTkNPREVSX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9DT01NT05fSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb25fdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uX3VuaXR0ZXN0LmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE3ZDk0NDA2YWUwZDJmNmUxY2IxZTY1NmE3MWY4YjQ3MWU4M2ZjZGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29t
bW9uX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAy
MDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19l
bmNvZGVyX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFt
ZXNwYWNlIHdlYnJ0Y19ldmVudF9sb2dnaW5nIHsKK25hbWVzcGFjZSB7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgU2lnbmVkbmVzc0NvbnZlcnNpb25UZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPFQ+
Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2lnbmVkPFQ+Ojp2YWx1ZSwg
IiIpOworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoU2lnbmVkbmVzc0NvbnZlcnNpb25UZXN0KTsK
KworVFlQRURfVEVTVF9QKFNpZ25lZG5lc3NDb252ZXJzaW9uVGVzdCwgQ29ycmVjdGx5Q29udmVy
dHNMZWdhbFZhbHVlcykgeworICB1c2luZyBUID0gVHlwZVBhcmFtOworICBzdGQ6OnZlY3RvcjxU
PiBsZWdhbF92YWx1ZXMgPSB7c3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSAr
IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxU
Pjo6bWF4KCkgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1l
cmljX2xpbWl0czxUPjo6bWF4KCl9OworICBmb3IgKFQgdmFsIDogbGVnYWxfdmFsdWVzKSB7Cisg
ICAgY29uc3QgYXV0byB1bnNpZ25lZF92YWwgPSBUb1Vuc2lnbmVkKHZhbCk7CisgICAgVCBzaWdu
ZWRfdmFsOworICAgIEFTU0VSVF9UUlVFKFRvU2lnbmVkPFQ+KHVuc2lnbmVkX3ZhbCwgJnNpZ25l
ZF92YWwpKQorICAgICAgICA8PCAiRmFpbGVkIG9uICIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHVuc2lnbmVkX3ZhbCkgPDwgIi4iOworICAgIEVYUEVDVF9FUSh2YWwsIHNpZ25lZF92YWwpCisg
ICAgICAgIDw8ICJGYWlsZWQgb24gIiA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRf
dmFsKSA8PCAiLiI7CisgIH0KK30KKworVFlQRURfVEVTVF9QKFNpZ25lZG5lc3NDb252ZXJzaW9u
VGVzdCwgRmFpbHNPbkNvbnZlcnRpbmdJbGxlZ2FsVmFsdWVzKSB7CisgIHVzaW5nIFQgPSBUeXBl
UGFyYW07CisKKyAgLy8gTm90ZSB0aGF0IGEgc2lnbmVkIGludGVnZXIgd2hvc2Ugd2lkdGggaXMg
TiBiaXRzLCBoYXMgTi0xIGRpZ2l0cy4KKyAgY29uc3RleHByIGJvb2wgd2lkdGhfaXNfNjQgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgPT0gNjM7CisKKyAgaWYgKHdpZHRoX2lzXzY0
KSB7CisgICAgcmV0dXJuOyAgLy8gVGVzdCBpcnJlbGV2YW50OyBpbGxlZ2FsIHZhbHVlcyBkbyBu
b3QgZXhpc3QuCisgIH0KKworICBjb25zdCB1aW50NjRfdCBtYXhfbGVnYWxfdmFsdWUgPSBUb1Vu
c2lnbmVkKHN0YXRpY19jYXN0PFQ+KC0xKSk7CisKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDY0
X3Q+IGlsbGVnYWxfdmFsdWVzID0geworICAgICAgbWF4X2xlZ2FsX3ZhbHVlICsgMXUsIG1heF9s
ZWdhbF92YWx1ZSArIDJ1LAorICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpIC0gMXUsCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCl9Owor
CisgIGZvciAodWludDY0X3QgdW5zaWduZWRfdmFsIDogaWxsZWdhbF92YWx1ZXMpIHsKKyAgICBU
IHNpZ25lZF92YWw7CisgICAgRVhQRUNUX0ZBTFNFKFRvU2lnbmVkPFQ+KHVuc2lnbmVkX3ZhbCwg
JnNpZ25lZF92YWwpKQorICAgICAgICA8PCAiRmFpbGVkIG9uICIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHVuc2lnbmVkX3ZhbCkgPDwgIi4iOworICB9Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RF
U1RfQ0FTRV9QKFNpZ25lZG5lc3NDb252ZXJzaW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENvcnJlY3RseUNvbnZlcnRzTGVnYWxWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGYWlsc09uQ29udmVydGluZ0lsbGVnYWxWYWx1ZXMpOworCit1c2luZyBUeXBlcyA9
IDo6dGVzdGluZzo6VHlwZXM8aW50OF90LCBpbnQxNl90LCBpbnQzMl90LCBpbnQ2NF90PjsKKwor
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoXywgU2lnbmVkbmVzc0NvbnZlcnNpb25UZXN0
LCBUeXBlcyk7CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Y19ldmVu
dF9sb2dnaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29k
ZXJfbGVnYWN5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2Fj
eS5jYwppbmRleCA3ZWY4ZDY3N2M2MDkwNzJlMTA2YjA0ZTcyNTFkNmIyYTQ4Y2VlOGQwLi4yOTYz
NmVkZTkyMmYyZDQ0OTI4ZTM3MzBkMWUyNWU2YzJhYjdmNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbGVnYWN5LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNv
ZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9sZWdhY3kuY2MKQEAgLTQ3LDcgKzQ3LDYgQEAKICNp
bmNsdWRlICJydGNfYmFzZS9pZ25vcmVfd3VuZGVmLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgogCi0jaWZkZWYgRU5BQkxFX1JUQ19FVkVOVF9MT0cKIAogLy8gKi5wYi5oIGZpbGVz
IGFyZSBnZW5lcmF0ZWQgYXQgYnVpbGQtdGltZSBieSB0aGUgcHJvdG9idWYgY29tcGlsZXIuCiBS
VENfUFVTSF9JR05PUklOR19XVU5ERUYoKQpAQCAtMjIzLDcgKzIyMiw4IEBAIENvbnZlcnRJY2VD
YW5kaWRhdGVQYWlyRXZlbnRUeXBlKEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgdHlwZSkgewog
CiB9ICAvLyBuYW1lc3BhY2UKIAotc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5
OjpFbmNvZGVMb2dTdGFydChpbnQ2NF90IHRpbWVzdGFtcF91cykgeworc3RkOjpzdHJpbmcgUnRj
RXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVMb2dTdGFydChpbnQ2NF90IHRpbWVzdGFtcF91
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50NjRfdCB1dGNfdGltZV91cykgewogICBydGNsb2c6OkV2ZW50IHJ0Y2xvZ19ldmVudDsKICAg
cnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKTsKICAgcnRjbG9nX2V2
ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZlbnQ6OkxPR19TVEFSVCk7CkBAIC0zNTcsMzcgKzM1Nywz
NyBAQCBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZShjb25zdCBS
dGNFdmVudCYgZXZlbnQpIHsKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6
RW5jb2RlQWxyU3RhdGUoCiAgICAgY29uc3QgUnRjRXZlbnRBbHJTdGF0ZSYgZXZlbnQpIHsKICAg
cnRjbG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1w
X3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91
cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6
OkV2ZW50OjpBTFJfU1RBVEVfRVZFTlQpOwogCiAgIGF1dG8qIGFscl9zdGF0ZSA9IHJ0Y2xvZ19l
dmVudC5tdXRhYmxlX2Fscl9zdGF0ZSgpOwotICBhbHJfc3RhdGUtPnNldF9pbl9hbHIoZXZlbnQu
aW5fYWxyXyk7CisgIGFscl9zdGF0ZS0+c2V0X2luX2FscihldmVudC5pbl9hbHIoKSk7CiAgIHJl
dHVybiBTZXJpYWxpemUoJnJ0Y2xvZ19ldmVudCk7CiB9CiAKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50
TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlQXVkaW9OZXR3b3JrQWRhcHRhdGlvbigKICAgICBjb25z
dCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24mIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZl
bnQgcnRjbG9nX2V2ZW50OwotICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50
aW1lc3RhbXBfdXNfKTsKKyAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGlt
ZXN0YW1wX3VzKCkpOwogICBydGNsb2dfZXZlbnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6QVVE
SU9fTkVUV09SS19BREFQVEFUSU9OX0VWRU5UKTsKIAogICBhdXRvKiBhdWRpb19uZXR3b3JrX2Fk
YXB0YXRpb24gPQogICAgICAgcnRjbG9nX2V2ZW50Lm11dGFibGVfYXVkaW9fbmV0d29ya19hZGFw
dGF0aW9uKCk7Ci0gIGlmIChldmVudC5jb25maWdfLT5iaXRyYXRlX2JwcykKLSAgICBhdWRpb19u
ZXR3b3JrX2FkYXB0YXRpb24tPnNldF9iaXRyYXRlX2JwcygqZXZlbnQuY29uZmlnXy0+Yml0cmF0
ZV9icHMpOwotICBpZiAoZXZlbnQuY29uZmlnXy0+ZnJhbWVfbGVuZ3RoX21zKQorICBpZiAoZXZl
bnQuY29uZmlnKCkuYml0cmF0ZV9icHMpCisgICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5z
ZXRfYml0cmF0ZV9icHMoKmV2ZW50LmNvbmZpZygpLmJpdHJhdGVfYnBzKTsKKyAgaWYgKGV2ZW50
LmNvbmZpZygpLmZyYW1lX2xlbmd0aF9tcykKICAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb24t
PnNldF9mcmFtZV9sZW5ndGhfbXMoCi0gICAgICAgICpldmVudC5jb25maWdfLT5mcmFtZV9sZW5n
dGhfbXMpOwotICBpZiAoZXZlbnQuY29uZmlnXy0+dXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9u
KSB7CisgICAgICAgICpldmVudC5jb25maWcoKS5mcmFtZV9sZW5ndGhfbXMpOworICBpZiAoZXZl
bnQuY29uZmlnKCkudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKSB7CiAgICAgYXVkaW9fbmV0
d29ya19hZGFwdGF0aW9uLT5zZXRfdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKAotICAgICAg
ICAqZXZlbnQuY29uZmlnXy0+dXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKTsKKyAgICAgICAg
KmV2ZW50LmNvbmZpZygpLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbik7CiAgIH0KLSAgaWYg
KGV2ZW50LmNvbmZpZ18tPmVuYWJsZV9mZWMpCi0gICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9u
LT5zZXRfZW5hYmxlX2ZlYygqZXZlbnQuY29uZmlnXy0+ZW5hYmxlX2ZlYyk7Ci0gIGlmIChldmVu
dC5jb25maWdfLT5lbmFibGVfZHR4KQotICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi0+c2V0
X2VuYWJsZV9kdHgoKmV2ZW50LmNvbmZpZ18tPmVuYWJsZV9kdHgpOwotICBpZiAoZXZlbnQuY29u
ZmlnXy0+bnVtX2NoYW5uZWxzKQotICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi0+c2V0X251
bV9jaGFubmVscygqZXZlbnQuY29uZmlnXy0+bnVtX2NoYW5uZWxzKTsKKyAgaWYgKGV2ZW50LmNv
bmZpZygpLmVuYWJsZV9mZWMpCisgICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfZW5h
YmxlX2ZlYygqZXZlbnQuY29uZmlnKCkuZW5hYmxlX2ZlYyk7CisgIGlmIChldmVudC5jb25maWco
KS5lbmFibGVfZHR4KQorICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi0+c2V0X2VuYWJsZV9k
dHgoKmV2ZW50LmNvbmZpZygpLmVuYWJsZV9kdHgpOworICBpZiAoZXZlbnQuY29uZmlnKCkubnVt
X2NoYW5uZWxzKQorICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi0+c2V0X251bV9jaGFubmVs
cygqZXZlbnQuY29uZmlnKCkubnVtX2NoYW5uZWxzKTsKIAogICByZXR1cm4gU2VyaWFsaXplKCZy
dGNsb2dfZXZlbnQpOwogfQpAQCAtMzk1LDExICszOTUsMTEgQEAgc3RkOjpzdHJpbmcgUnRjRXZl
bnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAogc3RkOjpz
dHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVBdWRpb1BsYXlvdXQoCiAgICAg
Y29uc3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQmIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZlbnQgcnRj
bG9nX2V2ZW50OwotICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3Rh
bXBfdXNfKTsKKyAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1w
X3VzKCkpOwogICBydGNsb2dfZXZlbnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6QVVESU9fUExB
WU9VVF9FVkVOVCk7CiAKICAgYXV0byogcGxheW91dF9ldmVudCA9IHJ0Y2xvZ19ldmVudC5tdXRh
YmxlX2F1ZGlvX3BsYXlvdXRfZXZlbnQoKTsKLSAgcGxheW91dF9ldmVudC0+c2V0X2xvY2FsX3Nz
cmMoZXZlbnQuc3NyY18pOworICBwbGF5b3V0X2V2ZW50LT5zZXRfbG9jYWxfc3NyYyhldmVudC5z
c3JjKCkpOwogCiAgIHJldHVybiBTZXJpYWxpemUoJnJ0Y2xvZ19ldmVudCk7CiB9CkBAIC00MDcs
MTUgKzQwNywxNSBAQCBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29k
ZUF1ZGlvUGxheW91dCgKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5j
b2RlQXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKAogICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9SZWNl
aXZlU3RyZWFtQ29uZmlnJiBldmVudCkgewogICBydGNsb2c6OkV2ZW50IHJ0Y2xvZ19ldmVudDsK
LSAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzXyk7Cisg
IHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91cygpKTsKICAg
cnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1JFQ0VJVkVSX0NPTkZJ
R19FVkVOVCk7CiAKICAgcnRjbG9nOjpBdWRpb1JlY2VpdmVDb25maWcqIHJlY2VpdmVyX2NvbmZp
ZyA9CiAgICAgICBydGNsb2dfZXZlbnQubXV0YWJsZV9hdWRpb19yZWNlaXZlcl9jb25maWcoKTsK
LSAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfcmVtb3RlX3NzcmMoZXZlbnQuY29uZmlnXy0+cmVtb3Rl
X3NzcmMpOwotICByZWNlaXZlcl9jb25maWctPnNldF9sb2NhbF9zc3JjKGV2ZW50LmNvbmZpZ18t
PmxvY2FsX3NzcmMpOworICByZWNlaXZlcl9jb25maWctPnNldF9yZW1vdGVfc3NyYyhldmVudC5j
b25maWcoKS5yZW1vdGVfc3NyYyk7CisgIHJlY2VpdmVyX2NvbmZpZy0+c2V0X2xvY2FsX3NzcmMo
ZXZlbnQuY29uZmlnKCkubG9jYWxfc3NyYyk7CiAKLSAgZm9yIChjb25zdCBhdXRvJiBlIDogZXZl
bnQuY29uZmlnXy0+cnRwX2V4dGVuc2lvbnMpIHsKKyAgZm9yIChjb25zdCBhdXRvJiBlIDogZXZl
bnQuY29uZmlnKCkucnRwX2V4dGVuc2lvbnMpIHsKICAgICBydGNsb2c6OlJ0cEhlYWRlckV4dGVu
c2lvbiogZXh0ZW5zaW9uID0KICAgICAgICAgcmVjZWl2ZXJfY29uZmlnLT5hZGRfaGVhZGVyX2V4
dGVuc2lvbnMoKTsKICAgICBleHRlbnNpb24tPnNldF9uYW1lKGUudXJpKTsKQEAgLTQyOCwxNSAr
NDI4LDE1IEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlQXVk
aW9SZWNlaXZlU3RyZWFtQ29uZmlnKAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVn
YWN5OjpFbmNvZGVBdWRpb1NlbmRTdHJlYW1Db25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRp
b1NlbmRTdHJlYW1Db25maWcmIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZlbnQgcnRjbG9nX2V2ZW50
OwotICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXNfKTsK
KyAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwog
ICBydGNsb2dfZXZlbnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6QVVESU9fU0VOREVSX0NPTkZJ
R19FVkVOVCk7CiAKICAgcnRjbG9nOjpBdWRpb1NlbmRDb25maWcqIHNlbmRlcl9jb25maWcgPQog
ICAgICAgcnRjbG9nX2V2ZW50Lm11dGFibGVfYXVkaW9fc2VuZGVyX2NvbmZpZygpOwogCi0gIHNl
bmRlcl9jb25maWctPnNldF9zc3JjKGV2ZW50LmNvbmZpZ18tPmxvY2FsX3NzcmMpOworICBzZW5k
ZXJfY29uZmlnLT5zZXRfc3NyYyhldmVudC5jb25maWcoKS5sb2NhbF9zc3JjKTsKIAotICBmb3Ig
KGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWdfLT5ydHBfZXh0ZW5zaW9ucykgeworICBmb3Ig
KGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWcoKS5ydHBfZXh0ZW5zaW9ucykgewogICAgIHJ0
Y2xvZzo6UnRwSGVhZGVyRXh0ZW5zaW9uKiBleHRlbnNpb24gPQogICAgICAgICBzZW5kZXJfY29u
ZmlnLT5hZGRfaGVhZGVyX2V4dGVuc2lvbnMoKTsKICAgICBleHRlbnNpb24tPnNldF9uYW1lKGUu
dXJpKTsKQEAgLTQ0OSwxMiArNDQ5LDEyIEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2Rl
ckxlZ2FjeTo6RW5jb2RlQXVkaW9TZW5kU3RyZWFtQ29uZmlnKAogc3RkOjpzdHJpbmcgUnRjRXZl
bnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVCd2VVcGRhdGVEZWxheUJhc2VkKAogICAgIGNvbnN0
IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBy
dGNsb2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVz
dGFtcF91c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3Rh
bXBfdXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpERUxBWV9C
QVNFRF9CV0VfVVBEQVRFKTsKIAogICBhdXRvKiBid2VfZXZlbnQgPSBydGNsb2dfZXZlbnQubXV0
YWJsZV9kZWxheV9iYXNlZF9id2VfdXBkYXRlKCk7Ci0gIGJ3ZV9ldmVudC0+c2V0X2JpdHJhdGVf
YnBzKGV2ZW50LmJpdHJhdGVfYnBzXyk7Ci0gIGJ3ZV9ldmVudC0+c2V0X2RldGVjdG9yX3N0YXRl
KENvbnZlcnREZXRlY3RvclN0YXRlKGV2ZW50LmRldGVjdG9yX3N0YXRlXykpOworICBid2VfZXZl
bnQtPnNldF9iaXRyYXRlX2JwcyhldmVudC5iaXRyYXRlX2JwcygpKTsKKyAgYndlX2V2ZW50LT5z
ZXRfZGV0ZWN0b3Jfc3RhdGUoQ29udmVydERldGVjdG9yU3RhdGUoZXZlbnQuZGV0ZWN0b3Jfc3Rh
dGUoKSkpOwogCiAgIHJldHVybiBTZXJpYWxpemUoJnJ0Y2xvZ19ldmVudCk7CiB9CkBAIC00NjIs
MTMgKzQ2MiwxMyBAQCBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29k
ZUJ3ZVVwZGF0ZURlbGF5QmFzZWQoCiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdh
Y3k6OkVuY29kZUJ3ZVVwZGF0ZUxvc3NCYXNlZCgKICAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0
ZUxvc3NCYXNlZCYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7Ci0gIHJ0
Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOworICBydGNs
b2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIHJ0Y2xv
Z19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpMT1NTX0JBU0VEX0JXRV9VUERBVEUpOwog
CiAgIGF1dG8qIGJ3ZV9ldmVudCA9IHJ0Y2xvZ19ldmVudC5tdXRhYmxlX2xvc3NfYmFzZWRfYndl
X3VwZGF0ZSgpOwotICBid2VfZXZlbnQtPnNldF9iaXRyYXRlX2JwcyhldmVudC5iaXRyYXRlX2Jw
c18pOwotICBid2VfZXZlbnQtPnNldF9mcmFjdGlvbl9sb3NzKGV2ZW50LmZyYWN0aW9uX2xvc3Nf
KTsKLSAgYndlX2V2ZW50LT5zZXRfdG90YWxfcGFja2V0cyhldmVudC50b3RhbF9wYWNrZXRzXyk7
CisgIGJ3ZV9ldmVudC0+c2V0X2JpdHJhdGVfYnBzKGV2ZW50LmJpdHJhdGVfYnBzKCkpOworICBi
d2VfZXZlbnQtPnNldF9mcmFjdGlvbl9sb3NzKGV2ZW50LmZyYWN0aW9uX2xvc3MoKSk7CisgIGJ3
ZV9ldmVudC0+c2V0X3RvdGFsX3BhY2tldHMoZXZlbnQudG90YWxfcGFja2V0cygpKTsKIAogICBy
ZXR1cm4gU2VyaWFsaXplKCZydGNsb2dfZXZlbnQpOwogfQpAQCAtNDc2LDE1ICs0NzYsMTUgQEAg
c3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVCd2VVcGRhdGVMb3Nz
QmFzZWQoCiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUljZUNh
bmRpZGF0ZVBhaXJDb25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29u
ZmlnJiBldmVudCkgewogICBydGNsb2c6OkV2ZW50IGVuY29kZWRfcnRjX2V2ZW50OwotICBlbmNv
ZGVkX3J0Y19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOworICBl
bmNvZGVkX3J0Y19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91cygpKTsK
ICAgZW5jb2RlZF9ydGNfZXZlbnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFU
RV9QQUlSX0NPTkZJRyk7CiAKICAgYXV0byogZW5jb2RlZF9pY2VfZXZlbnQgPQogICAgICAgZW5j
b2RlZF9ydGNfZXZlbnQubXV0YWJsZV9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnKCk7CiAgIGVu
Y29kZWRfaWNlX2V2ZW50LT5zZXRfY29uZmlnX3R5cGUoCi0gICAgICBDb252ZXJ0SWNlQ2FuZGlk
YXRlUGFpckNvbmZpZ1R5cGUoZXZlbnQudHlwZV8pKTsKLSAgZW5jb2RlZF9pY2VfZXZlbnQtPnNl
dF9jYW5kaWRhdGVfcGFpcl9pZChldmVudC5jYW5kaWRhdGVfcGFpcl9pZF8pOwotICBjb25zdCBh
dXRvJiBkZXNjID0gZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzY187CisgICAgICBDb252ZXJ0SWNl
Q2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUoZXZlbnQudHlwZSgpKSk7CisgIGVuY29kZWRfaWNlX2V2
ZW50LT5zZXRfY2FuZGlkYXRlX3BhaXJfaWQoZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQoKSk7Cisg
IGNvbnN0IGF1dG8mIGRlc2MgPSBldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjKCk7CiAgIGVuY29k
ZWRfaWNlX2V2ZW50LT5zZXRfbG9jYWxfY2FuZGlkYXRlX3R5cGUoCiAgICAgICBDb252ZXJ0SWNl
Q2FuZGlkYXRlVHlwZShkZXNjLmxvY2FsX2NhbmRpZGF0ZV90eXBlKSk7CiAgIGVuY29kZWRfaWNl
X2V2ZW50LT5zZXRfbG9jYWxfcmVsYXlfcHJvdG9jb2woCkBAIC01MDUsMjggKzUwNSwyOCBAQCBz
dGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUljZUNhbmRpZGF0ZVBh
aXJDb25maWcoCiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUlj
ZUNhbmRpZGF0ZVBhaXJFdmVudCgKICAgICBjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXIm
IGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZlbnQgZW5jb2RlZF9ydGNfZXZlbnQ7Ci0gIGVuY29kZWRf
cnRjX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIGVuY29k
ZWRfcnRjX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwogICBl
bmNvZGVkX3J0Y19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpJQ0VfQ0FORElEQVRFX1BB
SVJfRVZFTlQpOwogCiAgIGF1dG8qIGVuY29kZWRfaWNlX2V2ZW50ID0KICAgICAgIGVuY29kZWRf
cnRjX2V2ZW50Lm11dGFibGVfaWNlX2NhbmRpZGF0ZV9wYWlyX2V2ZW50KCk7CiAgIGVuY29kZWRf
aWNlX2V2ZW50LT5zZXRfZXZlbnRfdHlwZSgKLSAgICAgIENvbnZlcnRJY2VDYW5kaWRhdGVQYWly
RXZlbnRUeXBlKGV2ZW50LnR5cGVfKSk7Ci0gIGVuY29kZWRfaWNlX2V2ZW50LT5zZXRfY2FuZGlk
YXRlX3BhaXJfaWQoZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWRfKTsKKyAgICAgIENvbnZlcnRJY2VD
YW5kaWRhdGVQYWlyRXZlbnRUeXBlKGV2ZW50LnR5cGUoKSkpOworICBlbmNvZGVkX2ljZV9ldmVu
dC0+c2V0X2NhbmRpZGF0ZV9wYWlyX2lkKGV2ZW50LmNhbmRpZGF0ZV9wYWlyX2lkKCkpOwogICBy
ZXR1cm4gU2VyaWFsaXplKCZlbmNvZGVkX3J0Y19ldmVudCk7CiB9CiAKIHN0ZDo6c3RyaW5nIFJ0
Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlUHJvYmVDbHVzdGVyQ3JlYXRlZCgKICAgICBj
b25zdCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQmIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZl
bnQgcnRjbG9nX2V2ZW50OwotICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50
aW1lc3RhbXBfdXNfKTsKKyAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGlt
ZXN0YW1wX3VzKCkpOwogICBydGNsb2dfZXZlbnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6QldF
X1BST0JFX0NMVVNURVJfQ1JFQVRFRF9FVkVOVCk7CiAKICAgYXV0byogcHJvYmVfY2x1c3RlciA9
IHJ0Y2xvZ19ldmVudC5tdXRhYmxlX3Byb2JlX2NsdXN0ZXIoKTsKLSAgcHJvYmVfY2x1c3Rlci0+
c2V0X2lkKGV2ZW50LmlkXyk7Ci0gIHByb2JlX2NsdXN0ZXItPnNldF9iaXRyYXRlX2JwcyhldmVu
dC5iaXRyYXRlX2Jwc18pOwotICBwcm9iZV9jbHVzdGVyLT5zZXRfbWluX3BhY2tldHMoZXZlbnQu
bWluX3Byb2Jlc18pOwotICBwcm9iZV9jbHVzdGVyLT5zZXRfbWluX2J5dGVzKGV2ZW50Lm1pbl9i
eXRlc18pOworICBwcm9iZV9jbHVzdGVyLT5zZXRfaWQoZXZlbnQuaWQoKSk7CisgIHByb2JlX2Ns
dXN0ZXItPnNldF9iaXRyYXRlX2JwcyhldmVudC5iaXRyYXRlX2JwcygpKTsKKyAgcHJvYmVfY2x1
c3Rlci0+c2V0X21pbl9wYWNrZXRzKGV2ZW50Lm1pbl9wcm9iZXMoKSk7CisgIHByb2JlX2NsdXN0
ZXItPnNldF9taW5fYnl0ZXMoZXZlbnQubWluX2J5dGVzKCkpOwogCiAgIHJldHVybiBTZXJpYWxp
emUoJnJ0Y2xvZ19ldmVudCk7CiB9CkBAIC01MzQsMTIgKzUzNCwxMiBAQCBzdGQ6OnN0cmluZyBS
dGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZVByb2JlQ2x1c3RlckNyZWF0ZWQoCiBzdGQ6
OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZVByb2JlUmVzdWx0RmFpbHVy
ZSgKICAgICBjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZSYgZXZlbnQpIHsKICAgcnRj
bG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3Vz
KGV2ZW50LnRpbWVzdGFtcF91c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhl
dmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2
ZW50OjpCV0VfUFJPQkVfUkVTVUxUX0VWRU5UKTsKIAogICBhdXRvKiBwcm9iZV9yZXN1bHQgPSBy
dGNsb2dfZXZlbnQubXV0YWJsZV9wcm9iZV9yZXN1bHQoKTsKLSAgcHJvYmVfcmVzdWx0LT5zZXRf
aWQoZXZlbnQuaWRfKTsKLSAgcHJvYmVfcmVzdWx0LT5zZXRfcmVzdWx0KENvbnZlcnRQcm9iZVJl
c3VsdFR5cGUoZXZlbnQuZmFpbHVyZV9yZWFzb25fKSk7CisgIHByb2JlX3Jlc3VsdC0+c2V0X2lk
KGV2ZW50LmlkKCkpOworICBwcm9iZV9yZXN1bHQtPnNldF9yZXN1bHQoQ29udmVydFByb2JlUmVz
dWx0VHlwZShldmVudC5mYWlsdXJlX3JlYXNvbigpKSk7CiAKICAgcmV0dXJuIFNlcmlhbGl6ZSgm
cnRjbG9nX2V2ZW50KTsKIH0KQEAgLTU0Nyw3MCArNTQ3LDcxIEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2
ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlUHJvYmVSZXN1bHRGYWlsdXJlKAogc3RkOjpzdHJp
bmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVQcm9iZVJlc3VsdFN1Y2Nlc3MoCiAg
ICAgY29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3MmIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6
RXZlbnQgcnRjbG9nX2V2ZW50OwotICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVu
dC50aW1lc3RhbXBfdXNfKTsKKyAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQu
dGltZXN0YW1wX3VzKCkpOwogICBydGNsb2dfZXZlbnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6
QldFX1BST0JFX1JFU1VMVF9FVkVOVCk7CiAKICAgYXV0byogcHJvYmVfcmVzdWx0ID0gcnRjbG9n
X2V2ZW50Lm11dGFibGVfcHJvYmVfcmVzdWx0KCk7Ci0gIHByb2JlX3Jlc3VsdC0+c2V0X2lkKGV2
ZW50LmlkXyk7CisgIHByb2JlX3Jlc3VsdC0+c2V0X2lkKGV2ZW50LmlkKCkpOwogICBwcm9iZV9y
ZXN1bHQtPnNldF9yZXN1bHQocnRjbG9nOjpCd2VQcm9iZVJlc3VsdDo6U1VDQ0VTUyk7Ci0gIHBy
b2JlX3Jlc3VsdC0+c2V0X2JpdHJhdGVfYnBzKGV2ZW50LmJpdHJhdGVfYnBzXyk7CisgIHByb2Jl
X3Jlc3VsdC0+c2V0X2JpdHJhdGVfYnBzKGV2ZW50LmJpdHJhdGVfYnBzKCkpOwogCiAgIHJldHVy
biBTZXJpYWxpemUoJnJ0Y2xvZ19ldmVudCk7CiB9CiAKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9n
RW5jb2RlckxlZ2FjeTo6RW5jb2RlUnRjcFBhY2tldEluY29taW5nKAogICAgIGNvbnN0IFJ0Y0V2
ZW50UnRjcFBhY2tldEluY29taW5nJiBldmVudCkgewotICByZXR1cm4gRW5jb2RlUnRjcFBhY2tl
dChldmVudC50aW1lc3RhbXBfdXNfLCBldmVudC5wYWNrZXRfLCB0cnVlKTsKKyAgcmV0dXJuIEVu
Y29kZVJ0Y3BQYWNrZXQoZXZlbnQudGltZXN0YW1wX3VzKCksIGV2ZW50LnBhY2tldCgpLCB0cnVl
KTsKIH0KIAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVSdGNw
UGFja2V0T3V0Z29pbmcoCiAgICAgY29uc3QgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcmIGV2
ZW50KSB7Ci0gIHJldHVybiBFbmNvZGVSdGNwUGFja2V0KGV2ZW50LnRpbWVzdGFtcF91c18sIGV2
ZW50LnBhY2tldF8sIGZhbHNlKTsKKyAgcmV0dXJuIEVuY29kZVJ0Y3BQYWNrZXQoZXZlbnQudGlt
ZXN0YW1wX3VzKCksIGV2ZW50LnBhY2tldCgpLCBmYWxzZSk7CiB9CiAKIHN0ZDo6c3RyaW5nIFJ0
Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlUnRwUGFja2V0SW5jb21pbmcoCiAgICAgY29u
c3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyYgZXZlbnQpIHsKLSAgcmV0dXJuIEVuY29kZVJ0
cFBhY2tldChldmVudC50aW1lc3RhbXBfdXNfLCBldmVudC5oZWFkZXJfLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50LnBhY2tldF9sZW5ndGhfLCBQYWNlZFBhY2tldEluZm86OmtOb3RB
UHJvYmUsCisgIHJldHVybiBFbmNvZGVSdHBQYWNrZXQoZXZlbnQudGltZXN0YW1wX3VzKCksIGV2
ZW50LmhlYWRlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnBhY2tldF9sZW5n
dGgoKSwgUGFjZWRQYWNrZXRJbmZvOjprTm90QVByb2JlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIHRydWUpOwogfQogCiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVu
Y29kZVJ0cFBhY2tldE91dGdvaW5nKAogICAgIGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29p
bmcmIGV2ZW50KSB7Ci0gIHJldHVybiBFbmNvZGVSdHBQYWNrZXQoZXZlbnQudGltZXN0YW1wX3Vz
XywgZXZlbnQuaGVhZGVyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wYWNrZXRf
bGVuZ3RoXywgZXZlbnQucHJvYmVfY2x1c3Rlcl9pZF8sIGZhbHNlKTsKKyAgcmV0dXJuIEVuY29k
ZVJ0cFBhY2tldChldmVudC50aW1lc3RhbXBfdXMoKSwgZXZlbnQuaGVhZGVyKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgZXZlbnQucGFja2V0X2xlbmd0aCgpLCBldmVudC5wcm9iZV9jbHVz
dGVyX2lkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCiBzdGQ6OnN0
cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZVZpZGVvUmVjZWl2ZVN0cmVhbUNv
bmZpZygKICAgICBjb25zdCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgZXZlbnQp
IHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGlt
ZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVz
dGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShy
dGNsb2c6OkV2ZW50OjpWSURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQpOwogCiAgIHJ0Y2xvZzo6
VmlkZW9SZWNlaXZlQ29uZmlnKiByZWNlaXZlcl9jb25maWcgPQogICAgICAgcnRjbG9nX2V2ZW50
Lm11dGFibGVfdmlkZW9fcmVjZWl2ZXJfY29uZmlnKCk7Ci0gIHJlY2VpdmVyX2NvbmZpZy0+c2V0
X3JlbW90ZV9zc3JjKGV2ZW50LmNvbmZpZ18tPnJlbW90ZV9zc3JjKTsKLSAgcmVjZWl2ZXJfY29u
ZmlnLT5zZXRfbG9jYWxfc3NyYyhldmVudC5jb25maWdfLT5sb2NhbF9zc3JjKTsKKyAgcmVjZWl2
ZXJfY29uZmlnLT5zZXRfcmVtb3RlX3NzcmMoZXZlbnQuY29uZmlnKCkucmVtb3RlX3NzcmMpOwor
ICByZWNlaXZlcl9jb25maWctPnNldF9sb2NhbF9zc3JjKGV2ZW50LmNvbmZpZygpLmxvY2FsX3Nz
cmMpOwogCiAgIC8vIFRPRE8ocGVya2opOiBBZGQgZmllbGQgZm9yIHJzaWQuCi0gIHJlY2VpdmVy
X2NvbmZpZy0+c2V0X3J0Y3BfbW9kZShDb252ZXJ0UnRjcE1vZGUoZXZlbnQuY29uZmlnXy0+cnRj
cF9tb2RlKSk7Ci0gIHJlY2VpdmVyX2NvbmZpZy0+c2V0X3JlbWIoZXZlbnQuY29uZmlnXy0+cmVt
Yik7CisgIHJlY2VpdmVyX2NvbmZpZy0+c2V0X3J0Y3BfbW9kZShDb252ZXJ0UnRjcE1vZGUoZXZl
bnQuY29uZmlnKCkucnRjcF9tb2RlKSk7CisgIHJlY2VpdmVyX2NvbmZpZy0+c2V0X3JlbWIoZXZl
bnQuY29uZmlnKCkucmVtYik7CiAKLSAgZm9yIChjb25zdCBhdXRvJiBlIDogZXZlbnQuY29uZmln
Xy0+cnRwX2V4dGVuc2lvbnMpIHsKKyAgZm9yIChjb25zdCBhdXRvJiBlIDogZXZlbnQuY29uZmln
KCkucnRwX2V4dGVuc2lvbnMpIHsKICAgICBydGNsb2c6OlJ0cEhlYWRlckV4dGVuc2lvbiogZXh0
ZW5zaW9uID0KICAgICAgICAgcmVjZWl2ZXJfY29uZmlnLT5hZGRfaGVhZGVyX2V4dGVuc2lvbnMo
KTsKICAgICBleHRlbnNpb24tPnNldF9uYW1lKGUudXJpKTsKICAgICBleHRlbnNpb24tPnNldF9p
ZChlLmlkKTsKICAgfQogCi0gIGZvciAoY29uc3QgYXV0byYgZCA6IGV2ZW50LmNvbmZpZ18tPmNv
ZGVjcykgeworICBmb3IgKGNvbnN0IGF1dG8mIGQgOiBldmVudC5jb25maWcoKS5jb2RlY3MpIHsK
ICAgICBydGNsb2c6OkRlY29kZXJDb25maWcqIGRlY29kZXIgPSByZWNlaXZlcl9jb25maWctPmFk
ZF9kZWNvZGVycygpOwogICAgIGRlY29kZXItPnNldF9uYW1lKGQucGF5bG9hZF9uYW1lKTsKICAg
ICBkZWNvZGVyLT5zZXRfcGF5bG9hZF90eXBlKGQucGF5bG9hZF90eXBlKTsKICAgICBpZiAoZC5y
dHhfcGF5bG9hZF90eXBlICE9IDApIHsKICAgICAgIHJ0Y2xvZzo6UnR4TWFwKiBydHggPSByZWNl
aXZlcl9jb25maWctPmFkZF9ydHhfbWFwKCk7CiAgICAgICBydHgtPnNldF9wYXlsb2FkX3R5cGUo
ZC5wYXlsb2FkX3R5cGUpOwotICAgICAgcnR4LT5tdXRhYmxlX2NvbmZpZygpLT5zZXRfcnR4X3Nz
cmMoZXZlbnQuY29uZmlnXy0+cnR4X3NzcmMpOworICAgICAgcnR4LT5tdXRhYmxlX2NvbmZpZygp
LT5zZXRfcnR4X3NzcmMoZXZlbnQuY29uZmlnKCkucnR4X3NzcmMpOwogICAgICAgcnR4LT5tdXRh
YmxlX2NvbmZpZygpLT5zZXRfcnR4X3BheWxvYWRfdHlwZShkLnJ0eF9wYXlsb2FkX3R5cGUpOwog
ICAgIH0KICAgfQpAQCAtNjIxLDE5ICs2MjIsMTkgQEAgc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dF
bmNvZGVyTGVnYWN5OjpFbmNvZGVWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcoCiBzdGQ6OnN0cmlu
ZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZVZpZGVvU2VuZFN0cmVhbUNvbmZpZygK
ICAgICBjb25zdCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZyYgZXZlbnQpIHsKICAgcnRj
bG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3Vz
KGV2ZW50LnRpbWVzdGFtcF91c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhl
dmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2
ZW50OjpWSURFT19TRU5ERVJfQ09ORklHX0VWRU5UKTsKIAogICBydGNsb2c6OlZpZGVvU2VuZENv
bmZpZyogc2VuZGVyX2NvbmZpZyA9CiAgICAgICBydGNsb2dfZXZlbnQubXV0YWJsZV92aWRlb19z
ZW5kZXJfY29uZmlnKCk7CiAKICAgLy8gVE9ETyhwZXJraik6IHJ0Y2xvZzo6VmlkZW9TZW5kQ29u
ZmlnIHNob3VsZCBvbmx5IGNvbnRhaW4gb25lIFNTUkMuCi0gIHNlbmRlcl9jb25maWctPmFkZF9z
c3JjcyhldmVudC5jb25maWdfLT5sb2NhbF9zc3JjKTsKLSAgaWYgKGV2ZW50LmNvbmZpZ18tPnJ0
eF9zc3JjICE9IDApIHsKLSAgICBzZW5kZXJfY29uZmlnLT5hZGRfcnR4X3NzcmNzKGV2ZW50LmNv
bmZpZ18tPnJ0eF9zc3JjKTsKKyAgc2VuZGVyX2NvbmZpZy0+YWRkX3NzcmNzKGV2ZW50LmNvbmZp
ZygpLmxvY2FsX3NzcmMpOworICBpZiAoZXZlbnQuY29uZmlnKCkucnR4X3NzcmMgIT0gMCkgewor
ICAgIHNlbmRlcl9jb25maWctPmFkZF9ydHhfc3NyY3MoZXZlbnQuY29uZmlnKCkucnR4X3NzcmMp
OwogICB9CiAKLSAgZm9yIChjb25zdCBhdXRvJiBlIDogZXZlbnQuY29uZmlnXy0+cnRwX2V4dGVu
c2lvbnMpIHsKKyAgZm9yIChjb25zdCBhdXRvJiBlIDogZXZlbnQuY29uZmlnKCkucnRwX2V4dGVu
c2lvbnMpIHsKICAgICBydGNsb2c6OlJ0cEhlYWRlckV4dGVuc2lvbiogZXh0ZW5zaW9uID0KICAg
ICAgICAgc2VuZGVyX2NvbmZpZy0+YWRkX2hlYWRlcl9leHRlbnNpb25zKCk7CiAgICAgZXh0ZW5z
aW9uLT5zZXRfbmFtZShlLnVyaSk7CkBAIC02NDIsMTMgKzY0MywxMyBAQCBzdGQ6OnN0cmluZyBS
dGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZVZpZGVvU2VuZFN0cmVhbUNvbmZpZygKIAog
ICAvLyBUT0RPKHBlcmtqKTogcnRjbG9nOjpWaWRlb1NlbmRDb25maWcgc2hvdWxkIGNvbnRhaW4g
bWFueSBwb3NzaWJsZSBjb2RlYwogICAvLyBjb25maWd1cmF0aW9ucy4KLSAgZm9yIChjb25zdCBh
dXRvJiBjb2RlYyA6IGV2ZW50LmNvbmZpZ18tPmNvZGVjcykgeworICBmb3IgKGNvbnN0IGF1dG8m
IGNvZGVjIDogZXZlbnQuY29uZmlnKCkuY29kZWNzKSB7CiAgICAgc2VuZGVyX2NvbmZpZy0+c2V0
X3J0eF9wYXlsb2FkX3R5cGUoY29kZWMucnR4X3BheWxvYWRfdHlwZSk7CiAgICAgcnRjbG9nOjpF
bmNvZGVyQ29uZmlnKiBlbmNvZGVyID0gc2VuZGVyX2NvbmZpZy0+bXV0YWJsZV9lbmNvZGVyKCk7
CiAgICAgZW5jb2Rlci0+c2V0X25hbWUoY29kZWMucGF5bG9hZF9uYW1lKTsKICAgICBlbmNvZGVy
LT5zZXRfcGF5bG9hZF90eXBlKGNvZGVjLnBheWxvYWRfdHlwZSk7CiAKLSAgICBpZiAoZXZlbnQu
Y29uZmlnXy0+Y29kZWNzLnNpemUoKSA+IDEpIHsKKyAgICBpZiAoZXZlbnQuY29uZmlnKCkuY29k
ZWNzLnNpemUoKSA+IDEpIHsKICAgICAgIFJUQ19MT0coV0FSTklORykKICAgICAgICAgICA8PCAi
TG9nVmlkZW9TZW5kU3RyZWFtQ29uZmlnIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIG9uZSAiCiAg
ICAgICAgICAgPDwgImNvZGVjLiBMb2dnaW5nIGNvZGVjIDoiIDw8IGNvZGVjLnBheWxvYWRfbmFt
ZTsKQEAgLTc1Niw1ICs3NTcsMyBAQCBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdh
Y3k6OlNlcmlhbGl6ZShydGNsb2c6OkV2ZW50KiBldmVudCkgewogfQogCiB9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gRU5BQkxFX1JUQ19FVkVOVF9MT0cKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9sZWdhY3kuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
bmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9sZWdhY3kuaAppbmRleCA4N2RiMDM5ZTNhZmYz
ZjE2ZWI5Y2FlYWM1NzIyZTExNTY3ZGE1NWQwLi4zMTA1ZGMxZTY4YzZiOTM4ZWE4OTBjN2QyNjFi
OWYyNzY2NzAyYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2Vu
Y29kZXJfbGVnYWN5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVy
X2xlZ2FjeS5oCkBAIC0xOCw4ICsxOCw2IEBACiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
YnVmZmVyLmgiCiAKLSNpZiBkZWZpbmVkKEVOQUJMRV9SVENfRVZFTlRfTE9HKQotCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIAogbmFtZXNwYWNlIHJ0Y2xvZyB7CkBAIC01Miw3ICs1MCw4IEBAIGNsYXNz
IFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeSBmaW5hbCA6IHB1YmxpYyBSdGNFdmVudExvZ0VuY29k
ZXIgewogIHB1YmxpYzoKICAgflJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeSgpIG92ZXJyaWRlID0g
ZGVmYXVsdDsKIAotICBzdGQ6OnN0cmluZyBFbmNvZGVMb2dTdGFydChpbnQ2NF90IHRpbWVzdGFt
cF91cykgb3ZlcnJpZGU7CisgIHN0ZDo6c3RyaW5nIEVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGlt
ZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHV0Y190aW1l
X3VzKSBvdmVycmlkZTsKICAgc3RkOjpzdHJpbmcgRW5jb2RlTG9nRW5kKGludDY0X3QgdGltZXN0
YW1wX3VzKSBvdmVycmlkZTsKIAogICBzdGQ6OnN0cmluZyBFbmNvZGVCYXRjaCgKQEAgLTEwNSw2
ICsxMDQsNCBAQCBjbGFzcyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3kgZmluYWwgOiBwdWJsaWMg
UnRjRXZlbnRMb2dFbmNvZGVyIHsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCi0jZW5kaWYg
IC8vIEVOQUJMRV9SVENfRVZFTlRfTE9HCi0KICNlbmRpZiAgLy8gTE9HR0lOR19SVENfRVZFTlRf
TE9HX0VOQ09ERVJfUlRDX0VWRU5UX0xPR19FTkNPREVSX0xFR0FDWV9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25ld19mb3JtYXQuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbmV3X2Zvcm1hdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43OWRjMzc5ZjQ4YjQxYTQ2MGQ1ZjQ2MjE3MmMyMTRmMTIyNzU5OGMyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25ld19mb3JtYXQuY2MK
QEAgLTAsMCArMSwxMzM2IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImxv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9uZXdfZm9y
bWF0LmgiCisKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9i
bG9iX2VuY29kaW5nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIv
ZGVsdGFfZW5jb2RpbmcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rl
ci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmgiCisjaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9u
LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVk
aW9fcGxheW91dC5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5o
IgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91
cGRhdGVfZGVsYXlfYmFzZWQuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2xvc3NfYmFzZWQuaCIKKyNpbmNsdWRlICJsb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXIuaCIKKyNp
bmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlk
YXRlX3BhaXJfY29uZmlnLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkLmgiCisjaW5jbHVkZSAibG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuaCIKKyNp
bmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1
bHRfc3VjY2Vzcy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X3J0Y3BfcGFja2V0X2luY29taW5nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRjcF9wYWNrZXRfb3V0Z29pbmcuaCIKKyNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29t
aW5nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
cnRwX3BhY2tldF9vdXRnb2luZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
dmVudHMvcnRjX2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5oIgorI2luY2x1ZGUg
ImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFt
X2NvbmZpZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2Nv
bmZpZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRh
cHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9jdm8uaCIKKyNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2FwcC5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2J5ZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2NvbW1vbl9oZWFkZXIuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRlZF9qaXR0ZXJfcmVwb3J0
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvZXh0ZW5k
ZWRfcmVwb3J0cy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFj
a2V0L3BzZmIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tl
dC9yZWNlaXZlcl9yZXBvcnQuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3BhY2tldC9ydHBmYi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcGFja2V0L3NkZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC9zZW5kZXJfcmVwb3J0LmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX3BhY2tldC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2lnbm9yZV93dW5kZWYuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCisKKy8vICoucGIuaCBmaWxlcyBhcmUgZ2VuZXJhdGVkIGF0IGJ1aWxkLXRpbWUgYnkgdGhl
IHByb3RvYnVmIGNvbXBpbGVyLgorUlRDX1BVU0hfSUdOT1JJTkdfV1VOREVGKCkKKyNpZmRlZiBX
RUJSVENfQU5EUk9JRF9QTEFURk9STV9CVUlMRAorI2luY2x1ZGUgImV4dGVybmFsL3dlYnJ0Yy93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnBiLmgiCisjZWxzZQor
I2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMi5wYi5oIgorI2Vu
ZGlmCitSVENfUE9QX0lHTk9SSU5HX1dVTkRFRigpCisKK3VzaW5nIHdlYnJ0Y19ldmVudF9sb2dn
aW5nOjpUb1Vuc2lnbmVkOworCituYW1lc3BhY2Ugd2VicnRjIHsKKworbmFtZXNwYWNlIHsKK3J0
Y2xvZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVzOjpEZXRlY3RvclN0YXRlIENvbnZlcnRUb1Byb3Rv
Rm9ybWF0KAorICAgIEJhbmR3aWR0aFVzYWdlIHN0YXRlKSB7CisgIHN3aXRjaCAoc3RhdGUpIHsK
KyAgICBjYXNlIEJhbmR3aWR0aFVzYWdlOjprQndOb3JtYWw6CisgICAgICByZXR1cm4gcnRjbG9n
Mjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkJXRV9OT1JNQUw7CisgICAgY2FzZSBCYW5kd2lkdGhV
c2FnZTo6a0J3VW5kZXJ1c2luZzoKKyAgICAgIHJldHVybiBydGNsb2cyOjpEZWxheUJhc2VkQndl
VXBkYXRlczo6QldFX1VOREVSVVNJTkc7CisgICAgY2FzZSBCYW5kd2lkdGhVc2FnZTo6a0J3T3Zl
cnVzaW5nOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVzOjpCV0Vf
T1ZFUlVTSU5HOworICAgIGNhc2UgQmFuZHdpZHRoVXNhZ2U6OmtMYXN0OgorICAgICAgUlRDX05P
VFJFQUNIRUQoKTsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gcnRjbG9nMjo6
RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkJXRV9VTktOT1dOX1NUQVRFOworfQorCitydGNsb2cyOjpC
d2VQcm9iZVJlc3VsdEZhaWx1cmU6OkZhaWx1cmVSZWFzb24gQ29udmVydFRvUHJvdG9Gb3JtYXQo
CisgICAgUHJvYmVGYWlsdXJlUmVhc29uIGZhaWx1cmVfcmVhc29uKSB7CisgIHN3aXRjaCAoZmFp
bHVyZV9yZWFzb24pIHsKKyAgICBjYXNlIFByb2JlRmFpbHVyZVJlYXNvbjo6a0ludmFsaWRTZW5k
UmVjZWl2ZUludGVydmFsOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0RmFp
bHVyZTo6SU5WQUxJRF9TRU5EX1JFQ0VJVkVfSU5URVJWQUw7CisgICAgY2FzZSBQcm9iZUZhaWx1
cmVSZWFzb246OmtJbnZhbGlkU2VuZFJlY2VpdmVSYXRpbzoKKyAgICAgIHJldHVybiBydGNsb2cy
OjpCd2VQcm9iZVJlc3VsdEZhaWx1cmU6OklOVkFMSURfU0VORF9SRUNFSVZFX1JBVElPOworICAg
IGNhc2UgUHJvYmVGYWlsdXJlUmVhc29uOjprVGltZW91dDoKKyAgICAgIHJldHVybiBydGNsb2cy
OjpCd2VQcm9iZVJlc3VsdEZhaWx1cmU6OlRJTUVPVVQ7CisgICAgY2FzZSBQcm9iZUZhaWx1cmVS
ZWFzb246OmtMYXN0OgorICAgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgfQorICBSVENfTk9UUkVB
Q0hFRCgpOworICByZXR1cm4gcnRjbG9nMjo6QndlUHJvYmVSZXN1bHRGYWlsdXJlOjpVTktOT1dO
OworfQorCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIHJlY29nbml6ZWQgZXh0ZW5zaW9u
cyB0aGF0IHdlIHNob3VsZCBsb2cKKy8vIGFuZCBmYWxzZSBpZiB0aGVyZSBhcmUgbm8gZXh0ZW5z
aW9ucyBvciBhbGwgZXh0ZW5zaW9ucyBhcmUgdHlwZXMgd2UgZG9uJ3QKKy8vIGxvZy4gVGhlIHBy
b3RvYnVmIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBoZWFkZXIgY29uZmlncyBpcyB3cml0dGVuIHRv
CisvLyB8cHJvdG9fY29uZmlnfC4KK2Jvb2wgQ29udmVydFRvUHJvdG9Gb3JtYXQoY29uc3Qgc3Rk
Ojp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiYgZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjbG9nMjo6UnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnKiBwcm90b19jb25maWcpIHsK
KyAgc2l6ZV90IHVua25vd25fZXh0ZW5zaW9ucyA9IDA7CisgIGZvciAoYXV0byYgZXh0ZW5zaW9u
IDogZXh0ZW5zaW9ucykgeworICAgIGlmIChleHRlbnNpb24udXJpID09IFJ0cEV4dGVuc2lvbjo6
a0F1ZGlvTGV2ZWxVcmkpIHsKKyAgICAgIHByb3RvX2NvbmZpZy0+c2V0X2F1ZGlvX2xldmVsX2lk
KGV4dGVuc2lvbi5pZCk7CisgICAgfSBlbHNlIGlmIChleHRlbnNpb24udXJpID09IFJ0cEV4dGVu
c2lvbjo6a1RpbWVzdGFtcE9mZnNldFVyaSkgeworICAgICAgcHJvdG9fY29uZmlnLT5zZXRfdHJh
bnNtaXNzaW9uX3RpbWVfb2Zmc2V0X2lkKGV4dGVuc2lvbi5pZCk7CisgICAgfSBlbHNlIGlmIChl
eHRlbnNpb24udXJpID09IFJ0cEV4dGVuc2lvbjo6a0Fic1NlbmRUaW1lVXJpKSB7CisgICAgICBw
cm90b19jb25maWctPnNldF9hYnNvbHV0ZV9zZW5kX3RpbWVfaWQoZXh0ZW5zaW9uLmlkKTsKKyAg
ICB9IGVsc2UgaWYgKGV4dGVuc2lvbi51cmkgPT0gUnRwRXh0ZW5zaW9uOjprVHJhbnNwb3J0U2Vx
dWVuY2VOdW1iZXJVcmkpIHsKKyAgICAgIHByb3RvX2NvbmZpZy0+c2V0X3RyYW5zcG9ydF9zZXF1
ZW5jZV9udW1iZXJfaWQoZXh0ZW5zaW9uLmlkKTsKKyAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbi51
cmkgPT0gUnRwRXh0ZW5zaW9uOjprVmlkZW9Sb3RhdGlvblVyaSkgeworICAgICAgcHJvdG9fY29u
ZmlnLT5zZXRfdmlkZW9fcm90YXRpb25faWQoZXh0ZW5zaW9uLmlkKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgKyt1bmtub3duX2V4dGVuc2lvbnM7CisgICAgfQorICB9CisgIHJldHVybiB1bmtub3du
X2V4dGVuc2lvbnMgPCBleHRlbnNpb25zLnNpemUoKTsKK30KKworcnRjbG9nMjo6SWNlQ2FuZGlk
YXRlUGFpckNvbmZpZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUKK0NvbnZlcnRUb1Byb3Rv
Rm9ybWF0KEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlIHR5cGUpIHsKKyAgc3dpdGNoICh0eXBl
KSB7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a0FkZGVkOgorICAgICAg
cmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkFEREVEOworICAgIGNhc2Ug
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGU6OmtVcGRhdGVkOgorICAgICAgcmV0dXJuIHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVQREFURUQ7CisgICAgY2FzZSBJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnVHlwZTo6a0Rlc3Ryb3llZDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VD
YW5kaWRhdGVQYWlyQ29uZmlnOjpERVNUUk9ZRUQ7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWly
Q29uZmlnVHlwZTo6a1NlbGVjdGVkOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0
ZVBhaXJDb25maWc6OlNFTEVDVEVEOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5
cGU6OmtOdW1WYWx1ZXM6CisgICAgICBSVENfTk9UUkVBQ0hFRCgpOworICB9CisgIFJUQ19OT1RS
RUFDSEVEKCk7CisgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVTktO
T1dOX0NPTkZJR19UWVBFOworfQorCitydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJ
Y2VDYW5kaWRhdGVUeXBlIENvbnZlcnRUb1Byb3RvRm9ybWF0KAorICAgIEljZUNhbmRpZGF0ZVR5
cGUgdHlwZSkgeworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVR5cGU6
OmtVbmtub3duOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OlVOS05PV05fQ0FORElEQVRFX1RZUEU7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVUeXBlOjprTG9j
YWw6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6TE9DQUw7
CisgICAgY2FzZSBJY2VDYW5kaWRhdGVUeXBlOjprU3R1bjoKKyAgICAgIHJldHVybiBydGNsb2cy
OjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpTVFVOOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlVHlw
ZTo6a1ByZmx4OgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OlBSRkxYOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlVHlwZTo6a1JlbGF5OgorICAgICAgcmV0dXJu
IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlJFTEFZOworICAgIGNhc2UgSWNlQ2Fu
ZGlkYXRlVHlwZTo6a051bVZhbHVlczoKKyAgICAgIFJUQ19OT1RSRUFDSEVEKCk7CisgIH0KKyAg
UlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25m
aWc6OlVOS05PV05fQ0FORElEQVRFX1RZUEU7Cit9CisKK3J0Y2xvZzI6OkljZUNhbmRpZGF0ZVBh
aXJDb25maWc6OlByb3RvY29sIENvbnZlcnRUb1Byb3RvRm9ybWF0KAorICAgIEljZUNhbmRpZGF0
ZVBhaXJQcm90b2NvbCBwcm90b2NvbCkgeworICBzd2l0Y2ggKHByb3RvY29sKSB7CisgICAgY2Fz
ZSBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtVbmtub3duOgorICAgICAgcmV0dXJuIHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fUFJPVE9DT0w7CisgICAgY2FzZSBJ
Y2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtVZHA6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNl
Q2FuZGlkYXRlUGFpckNvbmZpZzo6VURQOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpclByb3Rv
Y29sOjprVGNwOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OlRDUDsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbDo6a1NzbHRjcDoKKyAgICAg
IHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpTU0xUQ1A7CisgICAgY2Fz
ZSBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtUbHM6CisgICAgICByZXR1cm4gcnRjbG9nMjo6
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VExTOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpclBy
b3RvY29sOjprTnVtVmFsdWVzOgorICAgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgfQorICBSVENf
Tk9UUkVBQ0hFRCgpOworICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6
VU5LTk9XTl9QUk9UT0NPTDsKK30KKworcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6
QWRkcmVzc0ZhbWlseSBDb252ZXJ0VG9Qcm90b0Zvcm1hdCgKKyAgICBJY2VDYW5kaWRhdGVQYWly
QWRkcmVzc0ZhbWlseSBhZGRyZXNzX2ZhbWlseSkgeworICBzd2l0Y2ggKGFkZHJlc3NfZmFtaWx5
KSB7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6a1Vua25vd246Cisg
ICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9BRERS
RVNTX0ZBTUlMWTsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5OjprSXB2
NDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJUFY0Owor
ICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHk6OmtJcHY2OgorICAgICAgcmV0
dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OklQVjY7CisgICAgY2FzZSBJY2VD
YW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6a051bVZhbHVlczoKKyAgICAgIFJUQ19OT1RSRUFD
SEVEKCk7CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNh
bmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fQUREUkVTU19GQU1JTFk7Cit9CisKK3J0Y2xvZzI6
OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6Ok5ldHdvcmtUeXBlIENvbnZlcnRUb1Byb3RvRm9ybWF0
KAorICAgIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlIG5ldHdvcmtfdHlwZSkgeworICBzd2l0Y2gg
KG5ldHdvcmtfdHlwZSkgeworICAgIGNhc2UgSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtVbmtu
b3duOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05P
V05fTkVUV09SS19UWVBFOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtFdGhl
cm5ldDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpFVEhF
Uk5FVDsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprTG9vcGJhY2s6CisgICAg
ICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6TE9PUEJBQ0s7CisgICAg
Y2FzZSBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a1dpZmk6CisgICAgICByZXR1cm4gcnRjbG9n
Mjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6V0lGSTsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZU5l
dHdvcmtUeXBlOjprVnBuOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJD
b25maWc6OlZQTjsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprQ2VsbHVsYXI6
CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6Q0VMTFVMQVI7
CisgICAgY2FzZSBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a051bVZhbHVlczoKKyAgICAgIFJU
Q19OT1RSRUFDSEVEKCk7CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fTkVUV09SS19UWVBFOworfQorCity
dGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6OkljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUg
Q29udmVydFRvUHJvdG9Gb3JtYXQoCisgICAgSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSB0eXBl
KSB7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlw
ZTo6a0NoZWNrU2VudDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZl
bnQ6OkNIRUNLX1NFTlQ7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hl
Y2tSZWNlaXZlZDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6
OkNIRUNLX1JFQ0VJVkVEOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0No
ZWNrUmVzcG9uc2VTZW50OgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJF
dmVudDo6Q0hFQ0tfUkVTUE9OU0VfU0VOVDsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJFdmVu
dFR5cGU6OmtDaGVja1Jlc3BvbnNlUmVjZWl2ZWQ6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNl
Q2FuZGlkYXRlUGFpckV2ZW50OjpDSEVDS19SRVNQT05TRV9SRUNFSVZFRDsKKyAgICBjYXNlIElj
ZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGU6OmtOdW1WYWx1ZXM6CisgICAgICBSVENfTk9UUkVBQ0hF
RCgpOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBydGNsb2cyOjpJY2VDYW5k
aWRhdGVQYWlyRXZlbnQ6OlVOS05PV05fQ0hFQ0tfVFlQRTsKK30KKworLy8gQ29waWVzIGFsbCBS
VENQIGJsb2NrcyBleGNlcHQgQVBQLCBTREVTIGFuZCB1bmtub3duIGZyb20gfHBhY2tldHwgdG8K
Ky8vIHxidWZmZXJ8LiB8YnVmZmVyfCBtdXN0IGhhdmUgc3BhY2UgZm9yIHxJUF9QQUNLRVRfU0la
RXwgYnl0ZXMuIHxwYWNrZXR8IG11c3QKKy8vIGJlIGF0IG1vc3QgfElQX1BBQ0tFVF9TSVpFfCBi
eXRlcyBsb25nLgorc2l6ZV90IFJlbW92ZU5vbldoaXRlbGlzdGVkUnRjcEJsb2Nrcyhjb25zdCBy
dGM6OkJ1ZmZlciYgcGFja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90KiBidWZmZXIpIHsKKyAgUlRDX0RDSEVDSyhwYWNrZXQuc2l6ZSgpIDw9IElQX1BB
Q0tFVF9TSVpFKTsKKyAgUlRDX0RDSEVDSyhidWZmZXIgIT0gbnVsbHB0cik7CisgIHJ0Y3A6OkNv
bW1vbkhlYWRlciBoZWFkZXI7CisgIGNvbnN0IHVpbnQ4X3QqIGJsb2NrX2JlZ2luID0gcGFja2V0
LmRhdGEoKTsKKyAgY29uc3QgdWludDhfdCogcGFja2V0X2VuZCA9IHBhY2tldC5kYXRhKCkgKyBw
YWNrZXQuc2l6ZSgpOworICBzaXplX3QgYnVmZmVyX2xlbmd0aCA9IDA7CisgIHdoaWxlIChibG9j
a19iZWdpbiA8IHBhY2tldF9lbmQpIHsKKyAgICBpZiAoIWhlYWRlci5QYXJzZShibG9ja19iZWdp
biwgcGFja2V0X2VuZCAtIGJsb2NrX2JlZ2luKSkgeworICAgICAgYnJlYWs7ICAvLyBJbmNvcnJl
Y3QgbWVzc2FnZSBoZWFkZXIuCisgICAgfQorICAgIGNvbnN0IHVpbnQ4X3QqIG5leHRfYmxvY2sg
PSBoZWFkZXIuTmV4dFBhY2tldCgpOworICAgIFJUQ19EQ0hFQ0tfR1QobmV4dF9ibG9jaywgYmxv
Y2tfYmVnaW4pOworICAgIFJUQ19EQ0hFQ0tfTEUobmV4dF9ibG9jaywgcGFja2V0X2VuZCk7Cisg
ICAgc2l6ZV90IGJsb2NrX3NpemUgPSBuZXh0X2Jsb2NrIC0gYmxvY2tfYmVnaW47CisgICAgc3dp
dGNoIChoZWFkZXIudHlwZSgpKSB7CisgICAgICBjYXNlIHJ0Y3A6OkJ5ZTo6a1BhY2tldFR5cGU6
CisgICAgICBjYXNlIHJ0Y3A6OkV4dGVuZGVkSml0dGVyUmVwb3J0OjprUGFja2V0VHlwZToKKyAg
ICAgIGNhc2UgcnRjcDo6RXh0ZW5kZWRSZXBvcnRzOjprUGFja2V0VHlwZToKKyAgICAgIGNhc2Ug
cnRjcDo6UHNmYjo6a1BhY2tldFR5cGU6CisgICAgICBjYXNlIHJ0Y3A6OlJlY2VpdmVyUmVwb3J0
OjprUGFja2V0VHlwZToKKyAgICAgIGNhc2UgcnRjcDo6UnRwZmI6OmtQYWNrZXRUeXBlOgorICAg
ICAgY2FzZSBydGNwOjpTZW5kZXJSZXBvcnQ6OmtQYWNrZXRUeXBlOgorICAgICAgICAvLyBXZSBs
b2cgc2VuZGVyIHJlcG9ydHMsIHJlY2VpdmVyIHJlcG9ydHMsIGJ5ZSBtZXNzYWdlcworICAgICAg
ICAvLyBpbnRlci1hcnJpdmFsIGppdHRlciwgdGhpcmQtcGFydHkgbG9zcyByZXBvcnRzLCBwYXls
b2FkLXNwZWNpZmljCisgICAgICAgIC8vIGZlZWRiYWNrIGFuZCBleHRlbmRlZCByZXBvcnRzLgor
ICAgICAgICAvLyBUT0RPKHRlcmVsaXVzKTogQXMgYW4gb3B0aW1pemF0aW9uLCBkb24ndCBjb3B5
IGFueXRoaW5nIGlmIGFsbCBibG9ja3MKKyAgICAgICAgLy8gaW4gdGhlIHBhY2tldCBhcmUgd2hp
dGVsaXN0ZWQgdHlwZXMuCisgICAgICAgIG1lbWNweShidWZmZXIgKyBidWZmZXJfbGVuZ3RoLCBi
bG9ja19iZWdpbiwgYmxvY2tfc2l6ZSk7CisgICAgICAgIGJ1ZmZlcl9sZW5ndGggKz0gYmxvY2tf
c2l6ZTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIHJ0Y3A6OkFwcDo6a1BhY2tldFR5cGU6
CisgICAgICBjYXNlIHJ0Y3A6OlNkZXM6OmtQYWNrZXRUeXBlOgorICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgLy8gV2UgZG9uJ3QgbG9nIHNlbmRlciBkZXNjcmlwdGlvbnMsIGFwcGxpY2F0aW9uIGRl
ZmluZWQgbWVzc2FnZXMKKyAgICAgICAgLy8gb3IgbWVzc2FnZSBibG9ja3Mgb2YgdW5rbm93biB0
eXBlLgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBibG9ja19iZWdpbiArPSBibG9ja19z
aXplOworICB9CisgIHJldHVybiBidWZmZXJfbGVuZ3RoOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRXZlbnRUeXBlLCB0eXBlbmFtZSBQcm90b1R5cGU+Cit2b2lkIEVuY29kZVJ0Y3BQYWNrZXQo
cnRjOjpBcnJheVZpZXc8Y29uc3QgRXZlbnRUeXBlKj4gYmF0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgUHJvdG9UeXBlKiBwcm90b19iYXRjaCkgeworICBpZiAoYmF0Y2guc2l6ZSgpID09IDAp
IHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBCYXNlIGV2ZW50CisgIGNvbnN0IEV2ZW50VHlw
ZSogY29uc3QgYmFzZV9ldmVudCA9IGJhdGNoWzBdOworICBwcm90b19iYXRjaC0+c2V0X3RpbWVz
dGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgIHsKKyAgICB1aW50OF90IGJ1
ZmZlcltJUF9QQUNLRVRfU0laRV07CisgICAgc2l6ZV90IGJ1ZmZlcl9sZW5ndGggPQorICAgICAg
ICBSZW1vdmVOb25XaGl0ZWxpc3RlZFJ0Y3BCbG9ja3MoYmFzZV9ldmVudC0+cGFja2V0KCksIGJ1
ZmZlcik7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9yYXdfcGFja2V0KGJ1ZmZlciwgYnVmZmVyX2xl
bmd0aCk7CisgIH0KKworICBpZiAoYmF0Y2guc2l6ZSgpID09IDEpIHsKKyAgICByZXR1cm47Cisg
IH0KKworICAvLyBEZWx0YSBlbmNvZGluZworICBwcm90b19iYXRjaC0+c2V0X251bWJlcl9vZl9k
ZWx0YXMoYmF0Y2guc2l6ZSgpIC0gMSk7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90Pj4gdmFsdWVzKGJhdGNoLnNpemUoKSAtIDEpOworICBzdGQ6OnN0cmluZyBlbmNvZGVk
X2RlbHRhczsKKworICAvLyB0aW1lc3RhbXBfbXMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2
YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hb
aSArIDFdOworICAgIHZhbHVlc1tpXSA9IFRvVW5zaWduZWQoZXZlbnQtPnRpbWVzdGFtcF9tcygp
KTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhUb1Vuc2lnbmVkKGJhc2Vf
ZXZlbnQtPnRpbWVzdGFtcF9tcygpKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5l
bXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXNfZGVsdGFzKGVuY29k
ZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIHJhd19wYWNrZXQKKyAgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IHNjcnViZWRfcGFja2V0cyhiYXRjaC5zaXplKCkgLSAxKTsKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzY3J1YmVkX3BhY2tldHMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVu
dFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHNjcnViZWRfcGFja2V0c1tpXS5yZXNp
emUoZXZlbnQtPnBhY2tldCgpLnNpemUoKSk7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2Yoc3Rk
OjpzdHJpbmc6OnZhbHVlX3R5cGUpID09IHNpemVvZih1aW50OF90KSwgIiIpOworICAgIGNvbnN0
IHNpemVfdCBidWZmZXJfbGVuZ3RoID0gUmVtb3ZlTm9uV2hpdGVsaXN0ZWRSdGNwQmxvY2tzKAor
ICAgICAgICBldmVudC0+cGFja2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZzY3J1
YmVkX3BhY2tldHNbaV1bMF0pKTsKKyAgICBpZiAoYnVmZmVyX2xlbmd0aCA8IGV2ZW50LT5wYWNr
ZXQoKS5zaXplKCkpIHsKKyAgICAgIHNjcnViZWRfcGFja2V0c1tpXS5yZXNpemUoYnVmZmVyX2xl
bmd0aCk7CisgICAgfQorICB9CisgIHByb3RvX2JhdGNoLT5zZXRfcmF3X3BhY2tldF9ibG9icyhF
bmNvZGVCbG9icyhzY3J1YmVkX3BhY2tldHMpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEV2
ZW50VHlwZSwgdHlwZW5hbWUgUHJvdG9UeXBlPgordm9pZCBFbmNvZGVSdHBQYWNrZXQoY29uc3Qg
c3RkOjp2ZWN0b3I8Y29uc3QgRXZlbnRUeXBlKj4mIGJhdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgUHJvdG9UeXBlKiBwcm90b19iYXRjaCkgeworICBpZiAoYmF0Y2guc2l6ZSgpID09IDApIHsK
KyAgICByZXR1cm47CisgIH0KKworICAvLyBCYXNlIGV2ZW50CisgIGNvbnN0IEV2ZW50VHlwZSog
Y29uc3QgYmFzZV9ldmVudCA9IGJhdGNoWzBdOworICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFt
cF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgIHByb3RvX2JhdGNoLT5zZXRfbWFy
a2VyKGJhc2VfZXZlbnQtPmhlYWRlcigpLk1hcmtlcigpKTsKKyAgLy8gVE9ETyh0ZXJlbGl1cyk6
IElzIHBheWxvYWQgdHlwZSBuZWVkZWQ/CisgIHByb3RvX2JhdGNoLT5zZXRfcGF5bG9hZF90eXBl
KGJhc2VfZXZlbnQtPmhlYWRlcigpLlBheWxvYWRUeXBlKCkpOworICBwcm90b19iYXRjaC0+c2V0
X3NlcXVlbmNlX251bWJlcihiYXNlX2V2ZW50LT5oZWFkZXIoKS5TZXF1ZW5jZU51bWJlcigpKTsK
KyAgcHJvdG9fYmF0Y2gtPnNldF9ydHBfdGltZXN0YW1wKGJhc2VfZXZlbnQtPmhlYWRlcigpLlRp
bWVzdGFtcCgpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF9zc3JjKGJhc2VfZXZlbnQtPmhlYWRlcigp
LlNzcmMoKSk7CisgIHByb3RvX2JhdGNoLT5zZXRfcGF5bG9hZF9zaXplKGJhc2VfZXZlbnQtPnBh
eWxvYWRfbGVuZ3RoKCkpOworICBwcm90b19iYXRjaC0+c2V0X2hlYWRlcl9zaXplKGJhc2VfZXZl
bnQtPmhlYWRlcl9sZW5ndGgoKSk7CisgIHByb3RvX2JhdGNoLT5zZXRfcGFkZGluZ19zaXplKGJh
c2VfZXZlbnQtPnBhZGRpbmdfbGVuZ3RoKCkpOworCisgIC8vIEFkZCBoZWFkZXIgZXh0ZW5zaW9u
cyAoYmFzZSBldmVudCkuCisgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlX3RyYW5zcG9y
dF9zZXF1ZW5jZV9udW1iZXI7CisgIHsKKyAgICB1aW50MTZfdCBzZXFudW07CisgICAgaWYgKGJh
c2VfZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRlIEdldEV4dGVuc2lvbjxUcmFuc3BvcnRTZXF1ZW5j
ZU51bWJlcj4oCisgICAgICAgICAgICAmc2VxbnVtKSkgeworICAgICAgcHJvdG9fYmF0Y2gtPnNl
dF90cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyKHNlcW51bSk7CisgICAgICBiYXNlX3RyYW5zcG9y
dF9zZXF1ZW5jZV9udW1iZXIgPSBzZXFudW07CisgICAgfQorICB9CisKKyAgYWJzbDo6b3B0aW9u
YWw8dWludDY0X3Q+IHVuc2lnbmVkX2Jhc2VfdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0OworICB7
CisgICAgaW50MzJfdCBvZmZzZXQ7CisgICAgaWYgKGJhc2VfZXZlbnQtPmhlYWRlcigpLnRlbXBs
YXRlIEdldEV4dGVuc2lvbjxUcmFuc21pc3Npb25PZmZzZXQ+KAorICAgICAgICAgICAgJm9mZnNl
dCkpIHsKKyAgICAgIHByb3RvX2JhdGNoLT5zZXRfdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0KG9m
ZnNldCk7CisgICAgICB1bnNpZ25lZF9iYXNlX3RyYW5zbWlzc2lvbl90aW1lX29mZnNldCA9IFRv
VW5zaWduZWQob2Zmc2V0KTsKKyAgICB9CisgIH0KKworICBhYnNsOjpvcHRpb25hbDx1aW50NjRf
dD4gYmFzZV9hYnNvbHV0ZV9zZW5kX3RpbWU7CisgIHsKKyAgICB1aW50MzJfdCBzZW5kdGltZTsK
KyAgICBpZiAoYmFzZV9ldmVudC0+aGVhZGVyKCkudGVtcGxhdGUgR2V0RXh0ZW5zaW9uPEFic29s
dXRlU2VuZFRpbWU+KAorICAgICAgICAgICAgJnNlbmR0aW1lKSkgeworICAgICAgcHJvdG9fYmF0
Y2gtPnNldF9hYnNvbHV0ZV9zZW5kX3RpbWUoc2VuZHRpbWUpOworICAgICAgYmFzZV9hYnNvbHV0
ZV9zZW5kX3RpbWUgPSBzZW5kdGltZTsKKyAgICB9CisgIH0KKworICBhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4gYmFzZV92aWRlb19yb3RhdGlvbjsKKyAgeworICAgIFZpZGVvUm90YXRpb24gdmlk
ZW9fcm90YXRpb247CisgICAgaWYgKGJhc2VfZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRlIEdldEV4
dGVuc2lvbjxWaWRlb09yaWVudGF0aW9uPigKKyAgICAgICAgICAgICZ2aWRlb19yb3RhdGlvbikp
IHsKKyAgICAgIHByb3RvX2JhdGNoLT5zZXRfdmlkZW9fcm90YXRpb24oCisgICAgICAgICAgQ29u
dmVydFZpZGVvUm90YXRpb25Ub0NWT0J5dGUodmlkZW9fcm90YXRpb24pKTsKKyAgICAgIGJhc2Vf
dmlkZW9fcm90YXRpb24gPSBDb252ZXJ0VmlkZW9Sb3RhdGlvblRvQ1ZPQnl0ZSh2aWRlb19yb3Rh
dGlvbik7CisgICAgfQorICB9CisKKyAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2VfYXVk
aW9fbGV2ZWw7CisgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlX3ZvaWNlX2FjdGl2aXR5
OworICB7CisgICAgYm9vbCB2b2ljZV9hY3Rpdml0eTsKKyAgICB1aW50OF90IGF1ZGlvX2xldmVs
OworICAgIGlmIChiYXNlX2V2ZW50LT5oZWFkZXIoKS50ZW1wbGF0ZSBHZXRFeHRlbnNpb248QXVk
aW9MZXZlbD4oJnZvaWNlX2FjdGl2aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmF1ZGlvX2xldmVsKSkgeworICAgICAg
UlRDX0RDSEVDS19MRShhdWRpb19sZXZlbCwgMHg3RnUpOworICAgICAgYmFzZV9hdWRpb19sZXZl
bCA9IGF1ZGlvX2xldmVsOworICAgICAgcHJvdG9fYmF0Y2gtPnNldF9hdWRpb19sZXZlbChhdWRp
b19sZXZlbCk7CisKKyAgICAgIGJhc2Vfdm9pY2VfYWN0aXZpdHkgPSB2b2ljZV9hY3Rpdml0eTsK
KyAgICAgIHByb3RvX2JhdGNoLT5zZXRfdm9pY2VfYWN0aXZpdHkodm9pY2VfYWN0aXZpdHkpOwor
ICAgIH0KKyAgfQorCisgIGlmIChiYXRjaC5zaXplKCkgPT0gMSkgeworICAgIHJldHVybjsKKyAg
fQorCisgIC8vIERlbHRhIGVuY29kaW5nCisgIHByb3RvX2JhdGNoLT5zZXRfbnVtYmVyX29mX2Rl
bHRhcyhiYXRjaC5zaXplKCkgLSAxKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+PiB2YWx1ZXMoYmF0Y2guc2l6ZSgpIC0gMSk7CisgIHN0ZDo6c3RyaW5nIGVuY29kZWRf
ZGVsdGFzOworCisgIC8vIHRpbWVzdGFtcF9tcyAoZXZlbnQpCisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9
IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBUb1Vuc2lnbmVkKGV2ZW50LT50aW1lc3Rh
bXBfbXMoKSk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoVG9VbnNpZ25l
ZChiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9k
ZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zX2RlbHRh
cyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBtYXJrZXIgKFJUUCBiYXNlKQorICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50
VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmhlYWRl
cigpLk1hcmtlcigpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2Vf
ZXZlbnQtPmhlYWRlcigpLk1hcmtlcigpLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFz
LmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X21hcmtlcl9kZWx0YXMoZW5jb2RlZF9k
ZWx0YXMpOworICB9CisKKyAgLy8gcGF5bG9hZF90eXBlIChSVFAgYmFzZSkKKyAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUq
IGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IGV2ZW50LT5oZWFkZXIoKS5Q
YXlsb2FkVHlwZSgpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2Vf
ZXZlbnQtPmhlYWRlcigpLlBheWxvYWRUeXBlKCksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9k
ZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfcGF5bG9hZF90eXBlX2RlbHRh
cyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBzZXF1ZW5jZV9udW1iZXIgKFJUUCBiYXNl
KQorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNv
bnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZl
bnQtPmhlYWRlcigpLlNlcXVlbmNlTnVtYmVyKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBF
bmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+aGVhZGVyKCkuU2VxdWVuY2VOdW1iZXIoKSwgdmFsdWVz
KTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNl
dF9zZXF1ZW5jZV9udW1iZXJfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIHJ0
cF90aW1lc3RhbXAgKFJUUCBiYXNlKQorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5z
aXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07
CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmhlYWRlcigpLlRpbWVzdGFtcCgpOworICB9CisgIGVu
Y29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPmhlYWRlcigpLlRpbWVzdGFt
cCgpLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90
b19iYXRjaC0+c2V0X3J0cF90aW1lc3RhbXBfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQor
CisgIC8vIHNzcmMgKFJUUCBiYXNlKQorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5z
aXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07
CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmhlYWRlcigpLlNzcmMoKTsKKyAgfQorICBlbmNvZGVk
X2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX2V2ZW50LT5oZWFkZXIoKS5Tc3JjKCksIHZhbHVl
cyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5z
ZXRfc3NyY19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gcGF5bG9hZF9zaXpl
IChSVFAgYmFzZSkKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVl
c1tpXSA9IGV2ZW50LT5wYXlsb2FkX2xlbmd0aCgpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0g
RW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPnBheWxvYWRfbGVuZ3RoKCksIHZhbHVlcyk7CisgIGlm
ICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfcGF5bG9h
ZF9zaXplX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBoZWFkZXJfc2l6ZSAo
UlRQIGJhc2UpCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7
CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNb
aV0gPSBldmVudC0+aGVhZGVyX2xlbmd0aCgpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5j
b2RlRGVsdGFzKGJhc2VfZXZlbnQtPmhlYWRlcl9sZW5ndGgoKSwgdmFsdWVzKTsKKyAgaWYgKCFl
bmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9oZWFkZXJfc2l6
ZV9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gcGFkZGluZ19zaXplIChSVFAg
YmFzZSkKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAg
ICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9
IGV2ZW50LT5wYWRkaW5nX2xlbmd0aCgpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2Rl
RGVsdGFzKGJhc2VfZXZlbnQtPnBhZGRpbmdfbGVuZ3RoKCksIHZhbHVlcyk7CisgIGlmICghZW5j
b2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfcGFkZGluZ19zaXpl
X2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyB0cmFuc3BvcnRfc2VxdWVuY2Vf
bnVtYmVyIChSVFAgZXh0ZW5zaW9uKQorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5z
aXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07
CisgICAgdWludDE2X3Qgc2VxbnVtOworICAgIGlmIChldmVudC0+aGVhZGVyKCkudGVtcGxhdGUg
R2V0RXh0ZW5zaW9uPFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyPigKKyAgICAgICAgICAgICZzZXFu
dW0pKSB7CisgICAgICB2YWx1ZXNbaV0gPSBzZXFudW07CisgICAgfSBlbHNlIHsKKyAgICAgIHZh
bHVlc1tpXS5yZXNldCgpOworICAgIH0KKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURl
bHRhcyhiYXNlX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIsIHZhbHVlcyk7CisgIGlmICghZW5j
b2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfdHJhbnNwb3J0X3Nl
cXVlbmNlX251bWJlcl9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gdHJhbnNt
aXNzaW9uX3RpbWVfb2Zmc2V0IChSVFAgZXh0ZW5zaW9uKQorICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBi
YXRjaFtpICsgMV07CisgICAgaW50MzJfdCBvZmZzZXQ7CisgICAgaWYgKGV2ZW50LT5oZWFkZXIo
KS50ZW1wbGF0ZSBHZXRFeHRlbnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0Pigmb2Zmc2V0KSkgewor
ICAgICAgdmFsdWVzW2ldID0gVG9VbnNpZ25lZChvZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAg
ICB2YWx1ZXNbaV0ucmVzZXQoKTsKKyAgICB9CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNv
ZGVEZWx0YXModW5zaWduZWRfYmFzZV90cmFuc21pc3Npb25fdGltZV9vZmZzZXQsIHZhbHVlcyk7
CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRf
dHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKwor
ICAvLyBhYnNvbHV0ZV9zZW5kX3RpbWUgKFJUUCBleHRlbnNpb24pCisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVu
dCA9IGJhdGNoW2kgKyAxXTsKKyAgICB1aW50MzJfdCBzZW5kdGltZTsKKyAgICBpZiAoZXZlbnQt
PmhlYWRlcigpLnRlbXBsYXRlIEdldEV4dGVuc2lvbjxBYnNvbHV0ZVNlbmRUaW1lPigmc2VuZHRp
bWUpKSB7CisgICAgICB2YWx1ZXNbaV0gPSBzZW5kdGltZTsKKyAgICB9IGVsc2UgeworICAgICAg
dmFsdWVzW2ldLnJlc2V0KCk7CisgICAgfQorICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2Rl
RGVsdGFzKGJhc2VfYWJzb2x1dGVfc2VuZF90aW1lLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRf
ZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X2Fic29sdXRlX3NlbmRfdGlt
ZV9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gdmlkZW9fcm90YXRpb24gKFJU
UCBleHRlbnNpb24pCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytp
KSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICBWaWRl
b1JvdGF0aW9uIHZpZGVvX3JvdGF0aW9uOworICAgIGlmIChldmVudC0+aGVhZGVyKCkudGVtcGxh
dGUgR2V0RXh0ZW5zaW9uPFZpZGVvT3JpZW50YXRpb24+KAorICAgICAgICAgICAgJnZpZGVvX3Jv
dGF0aW9uKSkgeworICAgICAgdmFsdWVzW2ldID0gQ29udmVydFZpZGVvUm90YXRpb25Ub0NWT0J5
dGUodmlkZW9fcm90YXRpb24pOworICAgIH0gZWxzZSB7CisgICAgICB2YWx1ZXNbaV0ucmVzZXQo
KTsKKyAgICB9CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV92aWRl
b19yb3RhdGlvbiwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7Cisg
ICAgcHJvdG9fYmF0Y2gtPnNldF92aWRlb19yb3RhdGlvbl9kZWx0YXMoZW5jb2RlZF9kZWx0YXMp
OworICB9CisKKyAgLy8gYXVkaW9fbGV2ZWwgKFJUUCBleHRlbnNpb24pCisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBl
dmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICBib29sIHZvaWNlX2FjdGl2aXR5OworICAgIHVpbnQ4
X3QgYXVkaW9fbGV2ZWw7CisgICAgaWYgKGV2ZW50LT5oZWFkZXIoKS50ZW1wbGF0ZSBHZXRFeHRl
bnNpb248QXVkaW9MZXZlbD4oJnZvaWNlX2FjdGl2aXR5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhdWRpb19sZXZlbCkpIHsKKyAg
ICAgIFJUQ19EQ0hFQ0tfTEUoYXVkaW9fbGV2ZWwsIDB4N0Z1KTsKKyAgICAgIHZhbHVlc1tpXSA9
IGF1ZGlvX2xldmVsOworICAgIH0gZWxzZSB7CisgICAgICB2YWx1ZXNbaV0ucmVzZXQoKTsKKyAg
ICB9CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9hdWRpb19sZXZl
bCwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9f
YmF0Y2gtPnNldF9hdWRpb19sZXZlbF9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAg
Ly8gdm9pY2VfYWN0aXZpdHkgKFJUUCBleHRlbnNpb24pCisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJh
dGNoW2kgKyAxXTsKKyAgICBib29sIHZvaWNlX2FjdGl2aXR5OworICAgIHVpbnQ4X3QgYXVkaW9f
bGV2ZWw7CisgICAgaWYgKGV2ZW50LT5oZWFkZXIoKS50ZW1wbGF0ZSBHZXRFeHRlbnNpb248QXVk
aW9MZXZlbD4oJnZvaWNlX2FjdGl2aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhdWRpb19sZXZlbCkpIHsKKyAgICAgIFJUQ19E
Q0hFQ0tfTEUoYXVkaW9fbGV2ZWwsIDB4N0Z1KTsKKyAgICAgIHZhbHVlc1tpXSA9IHZvaWNlX2Fj
dGl2aXR5OworICAgIH0gZWxzZSB7CisgICAgICB2YWx1ZXNbaV0ucmVzZXQoKTsKKyAgICB9Cisg
IH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV92b2ljZV9hY3Rpdml0eSwg
dmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0
Y2gtPnNldF92b2ljZV9hY3Rpdml0eV9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9Cit9Cit9
ICAvLyBuYW1lc3BhY2UKKworc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0
OjpFbmNvZGVMb2dTdGFydChpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB1dGNfdGltZV91
cykgeworICBydGNsb2cyOjpFdmVudFN0cmVhbSBldmVudF9zdHJlYW07CisgIHJ0Y2xvZzI6OkJl
Z2luTG9nRXZlbnQqIHByb3RvX2JhdGNoID0gZXZlbnRfc3RyZWFtLmFkZF9iZWdpbl9sb2dfZXZl
bnRzKCk7CisgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKHRpbWVzdGFtcF91cyAvIDEw
MDApOworICBwcm90b19iYXRjaC0+c2V0X3ZlcnNpb24oMik7CisgIHByb3RvX2JhdGNoLT5zZXRf
dXRjX3RpbWVfbXModXRjX3RpbWVfdXMgLyAxMDAwKTsKKyAgcmV0dXJuIGV2ZW50X3N0cmVhbS5T
ZXJpYWxpemVBc1N0cmluZygpOworfQorCitzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJO
ZXdGb3JtYXQ6OkVuY29kZUxvZ0VuZChpbnQ2NF90IHRpbWVzdGFtcF91cykgeworICBydGNsb2cy
OjpFdmVudFN0cmVhbSBldmVudF9zdHJlYW07CisgIHJ0Y2xvZzI6OkVuZExvZ0V2ZW50KiBwcm90
b19iYXRjaCA9IGV2ZW50X3N0cmVhbS5hZGRfZW5kX2xvZ19ldmVudHMoKTsKKyAgcHJvdG9fYmF0
Y2gtPnNldF90aW1lc3RhbXBfbXModGltZXN0YW1wX3VzIC8gMTAwMCk7CisgIHJldHVybiBldmVu
dF9zdHJlYW0uU2VyaWFsaXplQXNTdHJpbmcoKTsKK30KKworc3RkOjpzdHJpbmcgUnRjRXZlbnRM
b2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVCYXRjaCgKKyAgICBzdGQ6OmRlcXVlPHN0ZDo6dW5p
cXVlX3B0cjxSdGNFdmVudD4+Ojpjb25zdF9pdGVyYXRvciBiZWdpbiwKKyAgICBzdGQ6OmRlcXVl
PHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4+Ojpjb25zdF9pdGVyYXRvciBlbmQpIHsKKyAgcnRj
bG9nMjo6RXZlbnRTdHJlYW0gZXZlbnRfc3RyZWFtOworICBzdGQ6OnN0cmluZyBlbmNvZGVkX291
dHB1dDsKKworICB7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRBbHJTdGF0ZSo+IGFs
cl9zdGF0ZV9ldmVudHM7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRBdWRpb05ldHdv
cmtBZGFwdGF0aW9uKj4KKyAgICAgICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uX2V2ZW50czsK
KyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudEF1ZGlvUGxheW91dCo+IGF1ZGlvX3BsYXlv
dXRfZXZlbnRzOworICAgIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3Ry
ZWFtQ29uZmlnKj4KKyAgICAgICAgYXVkaW9fcmVjdl9zdHJlYW1fY29uZmlnczsKKyAgICBzdGQ6
OnZlY3Rvcjxjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyo+IGF1ZGlvX3NlbmRf
c3RyZWFtX2NvbmZpZ3M7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRCd2VVcGRhdGVE
ZWxheUJhc2VkKj4gYndlX2RlbGF5X2Jhc2VkX3VwZGF0ZXM7CisgICAgc3RkOjp2ZWN0b3I8Y29u
c3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQqPiBid2VfbG9zc19iYXNlZF91cGRhdGVzOwor
ICAgIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCo+CisgICAg
ICAgIHByb2JlX2NsdXN0ZXJfY3JlYXRlZF9ldmVudHM7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3Qg
UnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUqPiBwcm9iZV9yZXN1bHRfZmFpbHVyZV9ldmVudHM7
CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3MqPiBwcm9i
ZV9yZXN1bHRfc3VjY2Vzc19ldmVudHM7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRS
dGNwUGFja2V0SW5jb21pbmcqPiBpbmNvbWluZ19ydGNwX3BhY2tldHM7CisgICAgc3RkOjp2ZWN0
b3I8Y29uc3QgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcqPiBvdXRnb2luZ19ydGNwX3BhY2tl
dHM7CisgICAgc3RkOjptYXA8dWludDMyX3QgLyogU1NSQyAqLywgc3RkOjp2ZWN0b3I8Y29uc3Qg
UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyo+PgorICAgICAgICBpbmNvbWluZ19ydHBfcGFja2V0
czsKKyAgICBzdGQ6Om1hcDx1aW50MzJfdCAvKiBTU1JDICovLCBzdGQ6OnZlY3Rvcjxjb25zdCBS
dGNFdmVudFJ0cFBhY2tldE91dGdvaW5nKj4+CisgICAgICAgIG91dGdvaW5nX3J0cF9wYWNrZXRz
OworICAgIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmln
Kj4KKyAgICAgICAgdmlkZW9fcmVjdl9zdHJlYW1fY29uZmlnczsKKyAgICBzdGQ6OnZlY3Rvcjxj
b25zdCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZyo+IHZpZGVvX3NlbmRfc3RyZWFtX2Nv
bmZpZ3M7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29u
ZmlnKj4gaWNlX2NhbmRpZGF0ZV9jb25maWdzOworICAgIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2
ZW50SWNlQ2FuZGlkYXRlUGFpcio+IGljZV9jYW5kaWRhdGVfZXZlbnRzOworCisgICAgZm9yIChh
dXRvIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgc3dpdGNoICgoKml0KS0+
R2V0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OkFsclN0YXRlRXZlbnQ6
IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxjb25zdCBSdGNFdmVudEFsclN0YXRlKiBjb25zdD4oaXQtPmdldCgpKTsKKyAgICAgICAgICBh
bHJfc3RhdGVfZXZlbnRzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OkF1ZGlvTmV0d29ya0FkYXB0
YXRpb246IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24qIGNvbnN0PigKKyAg
ICAgICAgICAgICAgICAgIGl0LT5nZXQoKSk7CisgICAgICAgICAgYXVkaW9fbmV0d29ya19hZGFw
dGF0aW9uX2V2ZW50cy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpBdWRpb1BsYXlvdXQ6IHsKKyAg
ICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBSdGNFdmVudEF1ZGlvUGxheW91dCogY29uc3Q+KGl0LT5nZXQoKSk7CisgICAgICAgICAgYXVk
aW9fcGxheW91dF9ldmVudHMucHVzaF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6QXVkaW9SZWNlaXZlU3Ry
ZWFtQ29uZmlnOiB7CisgICAgICAgICAgYXV0byogcnRjX2V2ZW50ID0KKyAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWcqIGNvbnN0
PigKKyAgICAgICAgICAgICAgICAgIGl0LT5nZXQoKSk7CisgICAgICAgICAgYXVkaW9fcmVjdl9z
dHJlYW1fY29uZmlncy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpBdWRpb1NlbmRTdHJlYW1Db25m
aWc6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyogY29uc3Q+KAorICAgICAg
ICAgICAgICAgICAgaXQtPmdldCgpKTsKKyAgICAgICAgICBhdWRpb19zZW5kX3N0cmVhbV9jb25m
aWdzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OkJ3ZVVwZGF0ZURlbGF5QmFzZWQ6IHsKKyAgICAg
ICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBS
dGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQqIGNvbnN0PihpdC0+Z2V0KCkpOworICAgICAgICAg
IGJ3ZV9kZWxheV9iYXNlZF91cGRhdGVzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OkJ3ZVVwZGF0
ZUxvc3NCYXNlZDogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkKiBjb25zdD4oaXQt
PmdldCgpKTsKKyAgICAgICAgICBid2VfbG9zc19iYXNlZF91cGRhdGVzLnB1c2hfYmFjayhydGNf
ZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZl
bnQ6OlR5cGU6OlByb2JlQ2x1c3RlckNyZWF0ZWQ6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZl
bnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBSdGNFdmVudFByb2JlQ2x1c3Rl
ckNyZWF0ZWQqIGNvbnN0PihpdC0+Z2V0KCkpOworICAgICAgICAgIHByb2JlX2NsdXN0ZXJfY3Jl
YXRlZF9ldmVudHMucHVzaF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6UHJvYmVSZXN1bHRGYWlsdXJlOiB7
CisgICAgICAgICAgYXV0byogcnRjX2V2ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
Y29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUqIGNvbnN0PihpdC0+Z2V0KCkpOworICAg
ICAgICAgIHByb2JlX3Jlc3VsdF9mYWlsdXJlX2V2ZW50cy5wdXNoX2JhY2socnRjX2V2ZW50KTsK
KyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBl
OjpQcm9iZVJlc3VsdFN1Y2Nlc3M6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2Vzcyog
Y29uc3Q+KGl0LT5nZXQoKSk7CisgICAgICAgICAgcHJvYmVfcmVzdWx0X3N1Y2Nlc3NfZXZlbnRz
LnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OlJ0Y3BQYWNrZXRJbmNvbWluZzogeworICAgICAgICAg
IGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2
ZW50UnRjcFBhY2tldEluY29taW5nKiBjb25zdD4oaXQtPmdldCgpKTsKKyAgICAgICAgICBpbmNv
bWluZ19ydGNwX3BhY2tldHMucHVzaF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6UnRjcFBhY2tldE91dGdv
aW5nOiB7CisgICAgICAgICAgYXV0byogcnRjX2V2ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Y29uc3QgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcqIGNvbnN0PihpdC0+Z2V0KCkp
OworICAgICAgICAgIG91dGdvaW5nX3J0Y3BfcGFja2V0cy5wdXNoX2JhY2socnRjX2V2ZW50KTsK
KyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBl
OjpSdHBQYWNrZXRJbmNvbWluZzogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcqIGNv
bnN0PihpdC0+Z2V0KCkpOworICAgICAgICAgIGF1dG8mIHYgPSBpbmNvbWluZ19ydHBfcGFja2V0
c1tydGNfZXZlbnQtPmhlYWRlcigpLlNzcmMoKV07CisgICAgICAgICAgdi5lbXBsYWNlX2JhY2so
cnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0
Y0V2ZW50OjpUeXBlOjpSdHBQYWNrZXRPdXRnb2luZzogeworICAgICAgICAgIGF1dG8qIHJ0Y19l
dmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0
T3V0Z29pbmcqIGNvbnN0PihpdC0+Z2V0KCkpOworICAgICAgICAgIGF1dG8mIHYgPSBvdXRnb2lu
Z19ydHBfcGFja2V0c1tydGNfZXZlbnQtPmhlYWRlcigpLlNzcmMoKV07CisgICAgICAgICAgdi5l
bXBsYWNlX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpWaWRlb1JlY2VpdmVTdHJlYW1Db25maWc6IHsKKyAg
ICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyogY29uc3Q+KAorICAgICAgICAgICAg
ICAgICAgaXQtPmdldCgpKTsKKyAgICAgICAgICB2aWRlb19yZWN2X3N0cmVhbV9jb25maWdzLnB1
c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgUnRjRXZlbnQ6OlR5cGU6OlZpZGVvU2VuZFN0cmVhbUNvbmZpZzogeworICAgICAgICAg
IGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2
ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKiBjb25zdD4oCisgICAgICAgICAgICAgICAgICBpdC0+
Z2V0KCkpOworICAgICAgICAgIHZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZ3MucHVzaF9iYWNrKHJ0
Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNF
dmVudDo6VHlwZTo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzogeworICAgICAgICAgIGF1dG8qIHJ0
Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZyogY29uc3Q+KAorICAgICAgICAgICAgICAgICAgaXQtPmdldCgpKTsK
KyAgICAgICAgICBpY2VfY2FuZGlkYXRlX2NvbmZpZ3MucHVzaF9iYWNrKHJ0Y19ldmVudCk7Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6
SWNlQ2FuZGlkYXRlUGFpckV2ZW50OiB7CisgICAgICAgICAgYXV0byogcnRjX2V2ZW50ID0KKyAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyKiBj
b25zdD4oaXQtPmdldCgpKTsKKyAgICAgICAgICBpY2VfY2FuZGlkYXRlX2V2ZW50cy5wdXNoX2Jh
Y2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAg
IH0KKworICAgIEVuY29kZUFsclN0YXRlKGFscl9zdGF0ZV9ldmVudHMsICZldmVudF9zdHJlYW0p
OworICAgIEVuY29kZUF1ZGlvTmV0d29ya0FkYXB0YXRpb24oYXVkaW9fbmV0d29ya19hZGFwdGF0
aW9uX2V2ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZldmVudF9zdHJl
YW0pOworICAgIEVuY29kZUF1ZGlvUGxheW91dChhdWRpb19wbGF5b3V0X2V2ZW50cywgJmV2ZW50
X3N0cmVhbSk7CisgICAgRW5jb2RlQXVkaW9SZWN2U3RyZWFtQ29uZmlnKGF1ZGlvX3JlY3Zfc3Ry
ZWFtX2NvbmZpZ3MsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZUF1ZGlvU2VuZFN0cmVhbUNv
bmZpZyhhdWRpb19zZW5kX3N0cmVhbV9jb25maWdzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNv
ZGVCd2VVcGRhdGVEZWxheUJhc2VkKGJ3ZV9kZWxheV9iYXNlZF91cGRhdGVzLCAmZXZlbnRfc3Ry
ZWFtKTsKKyAgICBFbmNvZGVCd2VVcGRhdGVMb3NzQmFzZWQoYndlX2xvc3NfYmFzZWRfdXBkYXRl
cywgJmV2ZW50X3N0cmVhbSk7CisgICAgRW5jb2RlUHJvYmVDbHVzdGVyQ3JlYXRlZChwcm9iZV9j
bHVzdGVyX2NyZWF0ZWRfZXZlbnRzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVQcm9iZVJl
c3VsdEZhaWx1cmUocHJvYmVfcmVzdWx0X2ZhaWx1cmVfZXZlbnRzLCAmZXZlbnRfc3RyZWFtKTsK
KyAgICBFbmNvZGVQcm9iZVJlc3VsdFN1Y2Nlc3MocHJvYmVfcmVzdWx0X3N1Y2Nlc3NfZXZlbnRz
LCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVSdGNwUGFja2V0SW5jb21pbmcoaW5jb21pbmdf
cnRjcF9wYWNrZXRzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVSdGNwUGFja2V0T3V0Z29p
bmcob3V0Z29pbmdfcnRjcF9wYWNrZXRzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVSdHBQ
YWNrZXRJbmNvbWluZyhpbmNvbWluZ19ydHBfcGFja2V0cywgJmV2ZW50X3N0cmVhbSk7CisgICAg
RW5jb2RlUnRwUGFja2V0T3V0Z29pbmcob3V0Z29pbmdfcnRwX3BhY2tldHMsICZldmVudF9zdHJl
YW0pOworICAgIEVuY29kZVZpZGVvUmVjdlN0cmVhbUNvbmZpZyh2aWRlb19yZWN2X3N0cmVhbV9j
b25maWdzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVWaWRlb1NlbmRTdHJlYW1Db25maWco
dmlkZW9fc2VuZF9zdHJlYW1fY29uZmlncywgJmV2ZW50X3N0cmVhbSk7CisgICAgRW5jb2RlSWNl
Q2FuZGlkYXRlUGFpckNvbmZpZyhpY2VfY2FuZGlkYXRlX2NvbmZpZ3MsICZldmVudF9zdHJlYW0p
OworICAgIEVuY29kZUljZUNhbmRpZGF0ZVBhaXJFdmVudChpY2VfY2FuZGlkYXRlX2V2ZW50cywg
JmV2ZW50X3N0cmVhbSk7CisgIH0gIC8vIERlYWxsb2NhdGUgdGhlIHRlbXBvcmFyeSB2ZWN0b3Jz
LgorCisgIHJldHVybiBldmVudF9zdHJlYW0uU2VyaWFsaXplQXNTdHJpbmcoKTsKK30KKwordm9p
ZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZUFsclN0YXRlKAorICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QWxyU3RhdGUqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpF
dmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7CisgIGZvciAoY29uc3QgUnRjRXZlbnRBbHJTdGF0
ZSogYmFzZV9ldmVudCA6IGJhdGNoKSB7CisgICAgcnRjbG9nMjo6QWxyU3RhdGUqIHByb3RvX2Jh
dGNoID0gZXZlbnRfc3RyZWFtLT5hZGRfYWxyX3N0YXRlcygpOworICAgIHByb3RvX2JhdGNoLT5z
ZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgICBwcm90b19i
YXRjaC0+c2V0X2luX2FscihiYXNlX2V2ZW50LT5pbl9hbHIoKSk7CisgIH0KKyAgLy8gVE9ETyh0
ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YS1jb21wcmVzcyB0aGlzIGV2ZW50IHR5cGU/Cit9CisK
K3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVBdWRpb05ldHdvcmtBZGFw
dGF0aW9uKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRh
cHRhdGlvbio+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0p
IHsKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAwKQorICAgIHJldHVybjsKKworICAvLyBCYXNlIGV2
ZW50CisgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiogY29uc3QgYmFzZV9l
dmVudCA9IGJhdGNoWzBdOworICBydGNsb2cyOjpBdWRpb05ldHdvcmtBZGFwdGF0aW9ucyogcHJv
dG9fYmF0Y2ggPQorICAgICAgZXZlbnRfc3RyZWFtLT5hZGRfYXVkaW9fbmV0d29ya19hZGFwdGF0
aW9ucygpOworICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1l
c3RhbXBfbXMoKSk7CisgIGlmIChiYXNlX2V2ZW50LT5jb25maWcoKS5iaXRyYXRlX2Jwcy5oYXNf
dmFsdWUoKSkKKyAgICBwcm90b19iYXRjaC0+c2V0X2JpdHJhdGVfYnBzKGJhc2VfZXZlbnQtPmNv
bmZpZygpLmJpdHJhdGVfYnBzLnZhbHVlKCkpOworICBpZiAoYmFzZV9ldmVudC0+Y29uZmlnKCku
ZnJhbWVfbGVuZ3RoX21zLmhhc192YWx1ZSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9mcmFt
ZV9sZW5ndGhfbXMoCisgICAgICAgIGJhc2VfZXZlbnQtPmNvbmZpZygpLmZyYW1lX2xlbmd0aF9t
cy52YWx1ZSgpKTsKKyAgfQorICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZV91cGxpbmtf
cGFja2V0X2xvc3NfZnJhY3Rpb247CisgIGlmIChiYXNlX2V2ZW50LT5jb25maWcoKS51cGxpbmtf
cGFja2V0X2xvc3NfZnJhY3Rpb24uaGFzX3ZhbHVlKCkpIHsKKyAgICBiYXNlX3VwbGlua19wYWNr
ZXRfbG9zc19mcmFjdGlvbiA9IENvbnZlcnRQYWNrZXRMb3NzRnJhY3Rpb25Ub1Byb3RvRm9ybWF0
KAorICAgICAgICBiYXNlX2V2ZW50LT5jb25maWcoKS51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rp
b24udmFsdWUoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF91cGxpbmtfcGFja2V0X2xvc3NfZnJh
Y3Rpb24oCisgICAgICAgIGJhc2VfdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uLnZhbHVlKCkp
OworICB9CisgIGlmIChiYXNlX2V2ZW50LT5jb25maWcoKS5lbmFibGVfZmVjLmhhc192YWx1ZSgp
KQorICAgIHByb3RvX2JhdGNoLT5zZXRfZW5hYmxlX2ZlYyhiYXNlX2V2ZW50LT5jb25maWcoKS5l
bmFibGVfZmVjLnZhbHVlKCkpOworICBpZiAoYmFzZV9ldmVudC0+Y29uZmlnKCkuZW5hYmxlX2R0
eC5oYXNfdmFsdWUoKSkKKyAgICBwcm90b19iYXRjaC0+c2V0X2VuYWJsZV9kdHgoYmFzZV9ldmVu
dC0+Y29uZmlnKCkuZW5hYmxlX2R0eC52YWx1ZSgpKTsKKyAgLy8gTm90ZSB0aGF0IHxudW1fY2hh
bm5lbHNfZGVsdGFzfCBlbmNvZGVzIE4gYXMgTi0xLCB0byBrZWVwIGRlbHRhcyBzbWFsbGVyLAor
ICAvLyBidXQgdGhlcmUncyBubyByZWFzb24gdG8gZG8gdGhlIHNhbWUgZm9yIHRoZSBiYXNlIGV2
ZW50J3MgdmFsdWUsIHNpbmNlCisgIC8vIG5vIGJpdHMgd2lsbCBiZSBzcGFyZWQuCisgIGlmIChi
YXNlX2V2ZW50LT5jb25maWcoKS5udW1fY2hhbm5lbHMuaGFzX3ZhbHVlKCkpCisgICAgcHJvdG9f
YmF0Y2gtPnNldF9udW1fY2hhbm5lbHMoYmFzZV9ldmVudC0+Y29uZmlnKCkubnVtX2NoYW5uZWxz
LnZhbHVlKCkpOworCisgIGlmIChiYXRjaC5zaXplKCkgPT0gMSkKKyAgICByZXR1cm47CisKKyAg
Ly8gRGVsdGEgZW5jb2RpbmcKKyAgcHJvdG9fYmF0Y2gtPnNldF9udW1iZXJfb2ZfZGVsdGFzKGJh
dGNoLnNpemUoKSAtIDEpOworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+
IHZhbHVlcyhiYXRjaC5zaXplKCkgLSAxKTsKKyAgc3RkOjpzdHJpbmcgZW5jb2RlZF9kZWx0YXM7
CisKKyAgLy8gdGltZXN0YW1wX21zCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNp
emUoKTsgKytpKSB7CisgICAgY29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKiBl
dmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBUb1Vuc2lnbmVkKGV2ZW50LT50
aW1lc3RhbXBfbXMoKSk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoVG9V
bnNpZ25lZChiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSksIHZhbHVlcyk7CisgIGlmICghZW5j
b2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21z
X2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBiaXRyYXRlX2JwcworICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJ0Y0V2
ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgaWYg
KGV2ZW50LT5jb25maWcoKS5iaXRyYXRlX2Jwcy5oYXNfdmFsdWUoKSkgeworICAgICAgdmFsdWVz
W2ldID0gVG9VbnNpZ25lZChldmVudC0+Y29uZmlnKCkuYml0cmF0ZV9icHMudmFsdWUoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tpXS5yZXNldCgpOworICAgIH0KKyAgfQorICBjb25z
dCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gdW5zaWduZWRfYmFzZV9iaXRyYXRlX2JwcyA9Cisg
ICAgICBiYXNlX2V2ZW50LT5jb25maWcoKS5iaXRyYXRlX2Jwcy5oYXNfdmFsdWUoKQorICAgICAg
ICAgID8gVG9VbnNpZ25lZChiYXNlX2V2ZW50LT5jb25maWcoKS5iaXRyYXRlX2Jwcy52YWx1ZSgp
KQorICAgICAgICAgIDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgIGVuY29kZWRfZGVs
dGFzID0gRW5jb2RlRGVsdGFzKHVuc2lnbmVkX2Jhc2VfYml0cmF0ZV9icHMsIHZhbHVlcyk7Cisg
IGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfYml0
cmF0ZV9icHNfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIGZyYW1lX2xlbmd0
aF9tcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAg
IGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiogZXZlbnQgPSBiYXRjaFtpICsg
MV07CisgICAgaWYgKGV2ZW50LT5jb25maWcoKS5mcmFtZV9sZW5ndGhfbXMuaGFzX3ZhbHVlKCkp
IHsKKyAgICAgIHZhbHVlc1tpXSA9IFRvVW5zaWduZWQoZXZlbnQtPmNvbmZpZygpLmZyYW1lX2xl
bmd0aF9tcy52YWx1ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgdmFsdWVzW2ldLnJlc2V0KCk7
CisgICAgfQorICB9CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiB1bnNpZ25lZF9i
YXNlX2ZyYW1lX2xlbmd0aF9tcyA9CisgICAgICBiYXNlX2V2ZW50LT5jb25maWcoKS5mcmFtZV9s
ZW5ndGhfbXMuaGFzX3ZhbHVlKCkKKyAgICAgICAgICA/IFRvVW5zaWduZWQoYmFzZV9ldmVudC0+
Y29uZmlnKCkuZnJhbWVfbGVuZ3RoX21zLnZhbHVlKCkpCisgICAgICAgICAgOiBhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4oKTsKKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXModW5zaWdu
ZWRfYmFzZV9mcmFtZV9sZW5ndGhfbXMsIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMu
ZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfZnJhbWVfbGVuZ3RoX21zX2RlbHRhcyhl
bmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24K
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25z
dCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24qIGV2ZW50ID0gYmF0Y2hbaSArIDFdOwor
ICAgIGlmIChldmVudC0+Y29uZmlnKCkudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uLmhhc192
YWx1ZSgpKSB7CisgICAgICB2YWx1ZXNbaV0gPSBDb252ZXJ0UGFja2V0TG9zc0ZyYWN0aW9uVG9Q
cm90b0Zvcm1hdCgKKyAgICAgICAgICBldmVudC0+Y29uZmlnKCkudXBsaW5rX3BhY2tldF9sb3Nz
X2ZyYWN0aW9uLnZhbHVlKCkpOworICAgIH0gZWxzZSB7CisgICAgICB2YWx1ZXNbaV0ucmVzZXQo
KTsKKyAgICB9CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV91cGxp
bmtfcGFja2V0X2xvc3NfZnJhY3Rpb24sIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMu
ZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0
aW9uX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBlbmFibGVfZmVjCisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgUnRj
RXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2
YWx1ZXNbaV0gPSBldmVudC0+Y29uZmlnKCkuZW5hYmxlX2ZlYzsKKyAgfQorICBlbmNvZGVkX2Rl
bHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX2V2ZW50LT5jb25maWcoKS5lbmFibGVfZmVjLCB2YWx1
ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+
c2V0X2VuYWJsZV9mZWNfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIGVuYWJs
ZV9kdHgKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAg
ICBjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24qIGV2ZW50ID0gYmF0Y2hbaSAr
IDFdOworICAgIHZhbHVlc1tpXSA9IGV2ZW50LT5jb25maWcoKS5lbmFibGVfZHR4OworICB9Cisg
IGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPmNvbmZpZygpLmVuYWJs
ZV9kdHgsIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHBy
b3RvX2JhdGNoLT5zZXRfZW5hYmxlX2R0eF9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisK
KyAgLy8gbnVtX2NoYW5uZWxzCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUo
KTsgKytpKSB7CisgICAgY29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKiBldmVu
dCA9IGJhdGNoW2kgKyAxXTsKKyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxzaXplX3Q+IG51bV9j
aGFubmVscyA9IGV2ZW50LT5jb25maWcoKS5udW1fY2hhbm5lbHM7CisgICAgaWYgKG51bV9jaGFu
bmVscy5oYXNfdmFsdWUoKSkgeworICAgICAgLy8gU2luY2UgdGhlIG51bWJlciBvZiBjaGFubmVs
cyBpcyBhbHdheXMgZ3JlYXRlciB0aGFuIDAsIHdlIGNhbiBlbmNvZGUKKyAgICAgIC8vIE4gY2hh
bm5lbHMgYXMgTi0xLCB0aGVyZWJ5IG1ha2luZyBzdXJlIHRoYXQgd2UgZ2V0IHNtYWxsZXIgZGVs
dGFzLgorICAgICAgLy8gVGhhdCBpcywgYSB0b2dnbGUgb2YgMS0+Mi0+MSBjYW4gYmUgZW5jb2Rl
ZCBhcyBkZWx0YXMgdmVjdG9yICgxLCAxKSwKKyAgICAgIC8vIHJhdGhlciB0aGFuIGFzICgxLCAz
KSBvciAoMSwgLTEpLCBlaXRoZXIgb2Ygd2hpY2ggd291bGQgcmVxdWlyZSB0d28KKyAgICAgIC8v
IGJpdHMgcGVyIGRlbHRhLgorICAgICAgUlRDX0RDSEVDS19HVChudW1fY2hhbm5lbHMudmFsdWUo
KSwgMHUpOworICAgICAgdmFsdWVzW2ldID0gbnVtX2NoYW5uZWxzLnZhbHVlKCkgLSAxOworICAg
IH0gZWxzZSB7CisgICAgICB2YWx1ZXNbaV0ucmVzZXQoKTsKKyAgICB9CisgIH0KKyAgLy8gSW4g
dGhlIGJhc2UgZXZlbnQsIE4gY2hhbm5lbHMgZW5jb2RlZCBhcyBOIGNoYW5uZWxzLCBidXQgZm9y
IGRlbHRhCisgIC8vIGNvbXByZXNzaW9uIHB1cnBvc2VzLCBhbHNvIHNoaWZ0ZWQgZG93biBieSAx
LgorICBhYnNsOjpvcHRpb25hbDxzaXplX3Q+IHNoaWZ0ZWRfYmFzZV9udW1fY2hhbm5lbHM7Cisg
IGlmIChiYXNlX2V2ZW50LT5jb25maWcoKS5udW1fY2hhbm5lbHMuaGFzX3ZhbHVlKCkpIHsKKyAg
ICBSVENfRENIRUNLX0dUKGJhc2VfZXZlbnQtPmNvbmZpZygpLm51bV9jaGFubmVscy52YWx1ZSgp
LCAwdSk7CisgICAgc2hpZnRlZF9iYXNlX251bV9jaGFubmVscyA9IGJhc2VfZXZlbnQtPmNvbmZp
ZygpLm51bV9jaGFubmVscy52YWx1ZSgpIC0gMTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVu
Y29kZURlbHRhcyhzaGlmdGVkX2Jhc2VfbnVtX2NoYW5uZWxzLCB2YWx1ZXMpOworICBpZiAoIWVu
Y29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X251bV9jaGFubmVs
c19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNv
ZGVyTmV3Rm9ybWF0OjpFbmNvZGVBdWRpb1BsYXlvdXQoCisgICAgcnRjOjpBcnJheVZpZXc8Y29u
c3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpFdmVudFN0cmVh
bSogZXZlbnRfc3RyZWFtKSB7CisgIGlmIChiYXRjaC5zaXplKCkgPT0gMCkKKyAgICByZXR1cm47
CisKKyAgLy8gQmFzZSBldmVudAorICBjb25zdCBSdGNFdmVudEF1ZGlvUGxheW91dCogY29uc3Qg
YmFzZV9ldmVudCA9IGJhdGNoWzBdOworICBydGNsb2cyOjpBdWRpb1BsYXlvdXRFdmVudHMqIHBy
b3RvX2JhdGNoID0KKyAgICAgIGV2ZW50X3N0cmVhbS0+YWRkX2F1ZGlvX3BsYXlvdXRfZXZlbnRz
KCk7CisgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFt
cF9tcygpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF9sb2NhbF9zc3JjKGJhc2VfZXZlbnQtPnNzcmMo
KSk7CisKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAxKQorICAgIHJldHVybjsKKworICAvLyBEZWx0
YSBlbmNvZGluZworICBwcm90b19iYXRjaC0+c2V0X251bWJlcl9vZl9kZWx0YXMoYmF0Y2guc2l6
ZSgpIC0gMSk7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVz
KGJhdGNoLnNpemUoKSAtIDEpOworICBzdGQ6OnN0cmluZyBlbmNvZGVkX2RlbHRhczsKKworICAv
LyB0aW1lc3RhbXBfbXMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEF1ZGlvUGxheW91dCogZXZlbnQgPSBiYXRjaFtpICsg
MV07CisgICAgdmFsdWVzW2ldID0gVG9VbnNpZ25lZChldmVudC0+dGltZXN0YW1wX21zKCkpOwor
ICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKFRvVW5zaWduZWQoYmFzZV9ldmVu
dC0+dGltZXN0YW1wX21zKCkpLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5
KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tc19kZWx0YXMoZW5jb2RlZF9k
ZWx0YXMpOworICB9CisKKyAgLy8gbG9jYWxfc3NyYworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KiBl
dmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBldmVudC0+c3NyYygpOworICB9
CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPnNzcmMoKSwgdmFs
dWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gt
PnNldF9sb2NhbF9zc3JjX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KK30KKwordm9pZCBS
dGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZUF1ZGlvUmVjdlN0cmVhbUNvbmZpZygK
KyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZp
Zyo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAg
Zm9yIChjb25zdCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyogYmFzZV9ldmVudCA6
IGJhdGNoKSB7CisgICAgcnRjbG9nMjo6QXVkaW9SZWN2U3RyZWFtQ29uZmlnKiBwcm90b19iYXRj
aCA9CisgICAgICAgIGV2ZW50X3N0cmVhbS0+YWRkX2F1ZGlvX3JlY3Zfc3RyZWFtX2NvbmZpZ3Mo
KTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3Rh
bXBfbXMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9yZW1vdGVfc3NyYyhiYXNlX2V2ZW50LT5j
b25maWcoKS5yZW1vdGVfc3NyYyk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9sb2NhbF9zc3JjKGJh
c2VfZXZlbnQtPmNvbmZpZygpLmxvY2FsX3NzcmMpOworCisgICAgcnRjbG9nMjo6UnRwSGVhZGVy
RXh0ZW5zaW9uQ29uZmlnKiBwcm90b19jb25maWcgPQorICAgICAgICBwcm90b19iYXRjaC0+bXV0
YWJsZV9oZWFkZXJfZXh0ZW5zaW9ucygpOworICAgIGJvb2wgaGFzX3JlY29nbml6ZWRfZXh0ZW5z
aW9ucyA9CisgICAgICAgIENvbnZlcnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQtPmNvbmZpZygp
LnJ0cF9leHRlbnNpb25zLCBwcm90b19jb25maWcpOworICAgIGlmICghaGFzX3JlY29nbml6ZWRf
ZXh0ZW5zaW9ucykKKyAgICAgIHByb3RvX2JhdGNoLT5jbGVhcl9oZWFkZXJfZXh0ZW5zaW9ucygp
OworICB9Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVBdWRp
b1NlbmRTdHJlYW1Db25maWcoCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRBdWRp
b1NlbmRTdHJlYW1Db25maWcqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZl
bnRfc3RyZWFtKSB7CisgIGZvciAoY29uc3QgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcq
IGJhc2VfZXZlbnQgOiBiYXRjaCkgeworICAgIHJ0Y2xvZzI6OkF1ZGlvU2VuZFN0cmVhbUNvbmZp
ZyogcHJvdG9fYmF0Y2ggPQorICAgICAgICBldmVudF9zdHJlYW0tPmFkZF9hdWRpb19zZW5kX3N0
cmVhbV9jb25maWdzKCk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXMoYmFzZV9l
dmVudC0+dGltZXN0YW1wX21zKCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfc3NyYyhiYXNlX2V2
ZW50LT5jb25maWcoKS5sb2NhbF9zc3JjKTsKKworICAgIHJ0Y2xvZzI6OlJ0cEhlYWRlckV4dGVu
c2lvbkNvbmZpZyogcHJvdG9fY29uZmlnID0KKyAgICAgICAgcHJvdG9fYmF0Y2gtPm11dGFibGVf
aGVhZGVyX2V4dGVuc2lvbnMoKTsKKyAgICBib29sIGhhc19yZWNvZ25pemVkX2V4dGVuc2lvbnMg
PQorICAgICAgICBDb252ZXJ0VG9Qcm90b0Zvcm1hdChiYXNlX2V2ZW50LT5jb25maWcoKS5ydHBf
ZXh0ZW5zaW9ucywgcHJvdG9fY29uZmlnKTsKKyAgICBpZiAoIWhhc19yZWNvZ25pemVkX2V4dGVu
c2lvbnMpCisgICAgICBwcm90b19iYXRjaC0+Y2xlYXJfaGVhZGVyX2V4dGVuc2lvbnMoKTsKKyAg
fQorfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlQndlVXBkYXRl
RGVsYXlCYXNlZCgKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZURl
bGF5QmFzZWQqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFt
KSB7CisgIGlmIChiYXRjaC5zaXplKCkgPT0gMCkKKyAgICByZXR1cm47CisKKyAgLy8gQmFzZSBl
dmVudAorICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQqIGNvbnN0IGJhc2VfZXZl
bnQgPSBiYXRjaFswXTsKKyAgcnRjbG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXMqIHByb3RvX2Jh
dGNoID0KKyAgICAgIGV2ZW50X3N0cmVhbS0+YWRkX2RlbGF5X2Jhc2VkX2J3ZV91cGRhdGVzKCk7
CisgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9t
cygpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF9iaXRyYXRlX2JwcyhiYXNlX2V2ZW50LT5iaXRyYXRl
X2JwcygpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF9kZXRlY3Rvcl9zdGF0ZSgKKyAgICAgIENvbnZl
cnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQtPmRldGVjdG9yX3N0YXRlKCkpKTsKKworICBpZiAo
YmF0Y2guc2l6ZSgpID09IDEpCisgICAgcmV0dXJuOworCisgIC8vIERlbHRhIGVuY29kaW5nCisg
IHByb3RvX2JhdGNoLT5zZXRfbnVtYmVyX29mX2RlbHRhcyhiYXRjaC5zaXplKCkgLSAxKTsKKyAg
c3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMoYmF0Y2guc2l6ZSgp
IC0gMSk7CisgIHN0ZDo6c3RyaW5nIGVuY29kZWRfZGVsdGFzOworCisgIC8vIHRpbWVzdGFtcF9t
cworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNv
bnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCogZXZlbnQgPSBiYXRjaFtpICsgMV07Cisg
ICAgdmFsdWVzW2ldID0gVG9VbnNpZ25lZChldmVudC0+dGltZXN0YW1wX21zKCkpOworICB9Cisg
IGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKFRvVW5zaWduZWQoYmFzZV9ldmVudC0+dGlt
ZXN0YW1wX21zKCkpLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsK
KyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tc19kZWx0YXMoZW5jb2RlZF9kZWx0YXMp
OworICB9CisKKyAgLy8gYml0cmF0ZV9icHMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQq
IGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IGV2ZW50LT5iaXRyYXRlX2Jw
cygpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPmJp
dHJhdGVfYnBzKCksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgewor
ICAgIHByb3RvX2JhdGNoLT5zZXRfYml0cmF0ZV9icHNfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsK
KyAgfQorCisgIC8vIGRldGVjdG9yX3N0YXRlCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFs
dWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2Vk
KiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPQorICAgICAgICBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oQ29udmVydFRvUHJvdG9Gb3JtYXQoZXZlbnQtPmRldGVjdG9yX3N0YXRl
KCkpKTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcygKKyAgICAgIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihDb252ZXJ0VG9Qcm90b0Zvcm1hdChiYXNlX2V2ZW50LT5kZXRlY3Rv
cl9zdGF0ZSgpKSksCisgICAgICB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5
KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X2RldGVjdG9yX3N0YXRlX2RlbHRhcyhlbmNvZGVk
X2RlbHRhcyk7CisgIH0KK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVu
Y29kZUJ3ZVVwZGF0ZUxvc3NCYXNlZCgKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVu
dEJ3ZVVwZGF0ZUxvc3NCYXNlZCo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBl
dmVudF9zdHJlYW0pIHsKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAwKQorICAgIHJldHVybjsKKwor
ICAvLyBCYXNlIGV2ZW50CisgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkKiBjb25z
dCBiYXNlX2V2ZW50ID0gYmF0Y2hbMF07CisgIHJ0Y2xvZzI6Okxvc3NCYXNlZEJ3ZVVwZGF0ZXMq
IHByb3RvX2JhdGNoID0KKyAgICAgIGV2ZW50X3N0cmVhbS0+YWRkX2xvc3NfYmFzZWRfYndlX3Vw
ZGF0ZXMoKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXMoYmFzZV9ldmVudC0+dGlt
ZXN0YW1wX21zKCkpOworICBwcm90b19iYXRjaC0+c2V0X2JpdHJhdGVfYnBzKGJhc2VfZXZlbnQt
PmJpdHJhdGVfYnBzKCkpOworICBwcm90b19iYXRjaC0+c2V0X2ZyYWN0aW9uX2xvc3MoYmFzZV9l
dmVudC0+ZnJhY3Rpb25fbG9zcygpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF90b3RhbF9wYWNrZXRz
KGJhc2VfZXZlbnQtPnRvdGFsX3BhY2tldHMoKSk7CisKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAx
KQorICAgIHJldHVybjsKKworICAvLyBEZWx0YSBlbmNvZGluZworICBwcm90b19iYXRjaC0+c2V0
X251bWJlcl9vZl9kZWx0YXMoYmF0Y2guc2l6ZSgpIC0gMSk7CisgIHN0ZDo6dmVjdG9yPGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVzKGJhdGNoLnNpemUoKSAtIDEpOworICBzdGQ6OnN0
cmluZyBlbmNvZGVkX2RlbHRhczsKKworICAvLyB0aW1lc3RhbXBfbXMKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEJ3ZVVw
ZGF0ZUxvc3NCYXNlZCogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gVG9V
bnNpZ25lZChldmVudC0+dGltZXN0YW1wX21zKCkpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0g
RW5jb2RlRGVsdGFzKFRvVW5zaWduZWQoYmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpLCB2YWx1
ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+
c2V0X3RpbWVzdGFtcF9tc19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gYml0
cmF0ZV9icHMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCogZXZlbnQgPSBiYXRjaFtpICsg
MV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmJpdHJhdGVfYnBzKCk7CisgIH0KKyAgZW5jb2Rl
ZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+Yml0cmF0ZV9icHMoKSwgdmFsdWVz
KTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNl
dF9iaXRyYXRlX2Jwc19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gZnJhY3Rp
b25fbG9zcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgewor
ICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkKiBldmVudCA9IGJhdGNoW2kgKyAx
XTsKKyAgICB2YWx1ZXNbaV0gPSBldmVudC0+ZnJhY3Rpb25fbG9zcygpOworICB9CisgIGVuY29k
ZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPmZyYWN0aW9uX2xvc3MoKSwgdmFs
dWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gt
PnNldF9mcmFjdGlvbl9sb3NzX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyB0
b3RhbF9wYWNrZXRzCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytp
KSB7CisgICAgY29uc3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQqIGV2ZW50ID0gYmF0Y2hb
aSArIDFdOworICAgIHZhbHVlc1tpXSA9IGV2ZW50LT50b3RhbF9wYWNrZXRzKCk7CisgIH0KKyAg
ZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+dG90YWxfcGFja2V0cygp
LCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19i
YXRjaC0+c2V0X3RvdGFsX3BhY2tldHNfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorfQor
Cit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlUHJvYmVDbHVzdGVyQ3Jl
YXRlZCgKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0
ZWQqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7Cisg
IGZvciAoY29uc3QgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkKiBiYXNlX2V2ZW50IDogYmF0
Y2gpIHsKKyAgICBydGNsb2cyOjpCd2VQcm9iZUNsdXN0ZXIqIHByb3RvX2JhdGNoID0gZXZlbnRf
c3RyZWFtLT5hZGRfcHJvYmVfY2x1c3RlcnMoKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVz
dGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNl
dF9pZChiYXNlX2V2ZW50LT5pZCgpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2JpdHJhdGVfYnBz
KGJhc2VfZXZlbnQtPmJpdHJhdGVfYnBzKCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfbWluX3Bh
Y2tldHMoYmFzZV9ldmVudC0+bWluX3Byb2JlcygpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X21p
bl9ieXRlcyhiYXNlX2V2ZW50LT5taW5fYnl0ZXMoKSk7CisgIH0KK30KKwordm9pZCBSdGNFdmVu
dExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZVByb2JlUmVzdWx0RmFpbHVyZSgKKyAgICBydGM6
OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZSo+IGJhdGNoLAorICAg
IHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBSdGNF
dmVudFByb2JlUmVzdWx0RmFpbHVyZSogYmFzZV9ldmVudCA6IGJhdGNoKSB7CisgICAgcnRjbG9n
Mjo6QndlUHJvYmVSZXN1bHRGYWlsdXJlKiBwcm90b19iYXRjaCA9CisgICAgICAgIGV2ZW50X3N0
cmVhbS0+YWRkX3Byb2JlX2ZhaWx1cmUoKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFt
cF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9p
ZChiYXNlX2V2ZW50LT5pZCgpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2ZhaWx1cmUoCisgICAg
ICAgIENvbnZlcnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQtPmZhaWx1cmVfcmVhc29uKCkpKTsK
KyAgfQorICAvLyBUT0RPKHRlcmVsaXVzKTogU2hvdWxkIHdlIGRlbHRhLWNvbXByZXNzIHRoaXMg
ZXZlbnQgdHlwZT8KK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29k
ZVByb2JlUmVzdWx0U3VjY2VzcygKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFBy
b2JlUmVzdWx0U3VjY2Vzcyo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVu
dF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2VzcyogYmFz
ZV9ldmVudCA6IGJhdGNoKSB7CisgICAgcnRjbG9nMjo6QndlUHJvYmVSZXN1bHRTdWNjZXNzKiBw
cm90b19iYXRjaCA9CisgICAgICAgIGV2ZW50X3N0cmVhbS0+YWRkX3Byb2JlX3N1Y2Nlc3MoKTsK
KyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBf
bXMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9pZChiYXNlX2V2ZW50LT5pZCgpKTsKKyAgICBw
cm90b19iYXRjaC0+c2V0X2JpdHJhdGVfYnBzKGJhc2VfZXZlbnQtPmJpdHJhdGVfYnBzKCkpOwor
ICB9CisgIC8vIFRPRE8odGVyZWxpdXMpOiBTaG91bGQgd2UgZGVsdGEtY29tcHJlc3MgdGhpcyBl
dmVudCB0eXBlPworfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2Rl
UnRjcFBhY2tldEluY29taW5nKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50UnRj
cFBhY2tldEluY29taW5nKj4gYmF0Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50
X3N0cmVhbSkgeworICBpZiAoYmF0Y2guZW1wdHkoKSkgeworICAgIHJldHVybjsKKyAgfQorICBF
bmNvZGVSdGNwUGFja2V0KGJhdGNoLCBldmVudF9zdHJlYW0tPmFkZF9pbmNvbWluZ19ydGNwX3Bh
Y2tldHMoKSk7Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVS
dGNwUGFja2V0T3V0Z29pbmcoCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRSdGNw
UGFja2V0T3V0Z29pbmcqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRf
c3RyZWFtKSB7CisgIGlmIChiYXRjaC5lbXB0eSgpKSB7CisgICAgcmV0dXJuOworICB9CisgIEVu
Y29kZVJ0Y3BQYWNrZXQoYmF0Y2gsIGV2ZW50X3N0cmVhbS0+YWRkX291dGdvaW5nX3J0Y3BfcGFj
a2V0cygpKTsKK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZVJ0
cFBhY2tldEluY29taW5nKAorICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBzdGQ6OnZlY3Rv
cjxjb25zdCBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nKj4+JgorICAgICAgICBiYXRjaCwKKyAg
ICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7CisgIGZvciAoYXV0byBpdCA6
IGJhdGNoKSB7CisgICAgUlRDX0RDSEVDSyghaXQuc2Vjb25kLmVtcHR5KCkpOworICAgIEVuY29k
ZVJ0cFBhY2tldChpdC5zZWNvbmQsIGV2ZW50X3N0cmVhbS0+YWRkX2luY29taW5nX3J0cF9wYWNr
ZXRzKCkpOworICB9Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNv
ZGVSdHBQYWNrZXRPdXRnb2luZygKKyAgICBjb25zdCBzdGQ6Om1hcDx1aW50MzJfdCwgc3RkOjp2
ZWN0b3I8Y29uc3QgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZyo+PiYKKyAgICAgICAgYmF0Y2gs
CisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBmb3IgKGF1dG8g
aXQgOiBiYXRjaCkgeworICAgIFJUQ19EQ0hFQ0soIWl0LnNlY29uZC5lbXB0eSgpKTsKKyAgICBF
bmNvZGVSdHBQYWNrZXQoaXQuc2Vjb25kLCBldmVudF9zdHJlYW0tPmFkZF9vdXRnb2luZ19ydHBf
cGFja2V0cygpKTsKKyAgfQorfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6
RW5jb2RlVmlkZW9SZWN2U3RyZWFtQ29uZmlnKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0
Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnKj4gYmF0Y2gsCisgICAgcnRjbG9nMjo6RXZl
bnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBmb3IgKGNvbnN0IFJ0Y0V2ZW50VmlkZW9SZWNl
aXZlU3RyZWFtQ29uZmlnKiBiYXNlX2V2ZW50IDogYmF0Y2gpIHsKKyAgICBydGNsb2cyOjpWaWRl
b1JlY3ZTdHJlYW1Db25maWcqIHByb3RvX2JhdGNoID0KKyAgICAgICAgZXZlbnRfc3RyZWFtLT5h
ZGRfdmlkZW9fcmVjdl9zdHJlYW1fY29uZmlncygpOworICAgIHByb3RvX2JhdGNoLT5zZXRfdGlt
ZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgICBwcm90b19iYXRjaC0+
c2V0X3JlbW90ZV9zc3JjKGJhc2VfZXZlbnQtPmNvbmZpZygpLnJlbW90ZV9zc3JjKTsKKyAgICBw
cm90b19iYXRjaC0+c2V0X2xvY2FsX3NzcmMoYmFzZV9ldmVudC0+Y29uZmlnKCkubG9jYWxfc3Ny
Yyk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9ydHhfc3NyYyhiYXNlX2V2ZW50LT5jb25maWcoKS5y
dHhfc3NyYyk7CisKKyAgICBydGNsb2cyOjpSdHBIZWFkZXJFeHRlbnNpb25Db25maWcqIHByb3Rv
X2NvbmZpZyA9CisgICAgICAgIHByb3RvX2JhdGNoLT5tdXRhYmxlX2hlYWRlcl9leHRlbnNpb25z
KCk7CisgICAgYm9vbCBoYXNfcmVjb2duaXplZF9leHRlbnNpb25zID0KKyAgICAgICAgQ29udmVy
dFRvUHJvdG9Gb3JtYXQoYmFzZV9ldmVudC0+Y29uZmlnKCkucnRwX2V4dGVuc2lvbnMsIHByb3Rv
X2NvbmZpZyk7CisgICAgaWYgKCFoYXNfcmVjb2duaXplZF9leHRlbnNpb25zKQorICAgICAgcHJv
dG9fYmF0Y2gtPmNsZWFyX2hlYWRlcl9leHRlbnNpb25zKCk7CisgIH0KK30KKwordm9pZCBSdGNF
dmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZVZpZGVvU2VuZFN0cmVhbUNvbmZpZygKKyAg
ICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZyo+IGJh
dGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChj
b25zdCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZyogYmFzZV9ldmVudCA6IGJhdGNoKSB7
CisgICAgcnRjbG9nMjo6VmlkZW9TZW5kU3RyZWFtQ29uZmlnKiBwcm90b19iYXRjaCA9CisgICAg
ICAgIGV2ZW50X3N0cmVhbS0+YWRkX3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZ3MoKTsKKyAgICBw
cm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7
CisgICAgcHJvdG9fYmF0Y2gtPnNldF9zc3JjKGJhc2VfZXZlbnQtPmNvbmZpZygpLmxvY2FsX3Nz
cmMpOworICAgIHByb3RvX2JhdGNoLT5zZXRfcnR4X3NzcmMoYmFzZV9ldmVudC0+Y29uZmlnKCku
cnR4X3NzcmMpOworCisgICAgcnRjbG9nMjo6UnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnKiBwcm90
b19jb25maWcgPQorICAgICAgICBwcm90b19iYXRjaC0+bXV0YWJsZV9oZWFkZXJfZXh0ZW5zaW9u
cygpOworICAgIGJvb2wgaGFzX3JlY29nbml6ZWRfZXh0ZW5zaW9ucyA9CisgICAgICAgIENvbnZl
cnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQtPmNvbmZpZygpLnJ0cF9leHRlbnNpb25zLCBwcm90
b19jb25maWcpOworICAgIGlmICghaGFzX3JlY29nbml6ZWRfZXh0ZW5zaW9ucykKKyAgICAgIHBy
b3RvX2JhdGNoLT5jbGVhcl9oZWFkZXJfZXh0ZW5zaW9ucygpOworICB9Cit9CisKK3ZvaWQgUnRj
RXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAor
ICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyo+
IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9y
IChjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWcqIGJhc2VfZXZlbnQgOiBiYXRj
aCkgeworICAgIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWcqIHByb3RvX2JhdGNoID0K
KyAgICAgICAgZXZlbnRfc3RyZWFtLT5hZGRfaWNlX2NhbmRpZGF0ZV9jb25maWdzKCk7CisKKyAg
ICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMo
KSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9jb25maWdfdHlwZShDb252ZXJ0VG9Qcm90b0Zvcm1h
dChiYXNlX2V2ZW50LT50eXBlKCkpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2NhbmRpZGF0ZV9w
YWlyX2lkKGJhc2VfZXZlbnQtPmNhbmRpZGF0ZV9wYWlyX2lkKCkpOworICAgIGNvbnN0IGF1dG8m
IGRlc2MgPSBiYXNlX2V2ZW50LT5jYW5kaWRhdGVfcGFpcl9kZXNjKCk7CisgICAgcHJvdG9fYmF0
Y2gtPnNldF9sb2NhbF9jYW5kaWRhdGVfdHlwZSgKKyAgICAgICAgQ29udmVydFRvUHJvdG9Gb3Jt
YXQoZGVzYy5sb2NhbF9jYW5kaWRhdGVfdHlwZSkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfbG9j
YWxfcmVsYXlfcHJvdG9jb2woCisgICAgICAgIENvbnZlcnRUb1Byb3RvRm9ybWF0KGRlc2MubG9j
YWxfcmVsYXlfcHJvdG9jb2wpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2xvY2FsX25ldHdvcmtf
dHlwZSgKKyAgICAgICAgQ29udmVydFRvUHJvdG9Gb3JtYXQoZGVzYy5sb2NhbF9uZXR3b3JrX3R5
cGUpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2xvY2FsX2FkZHJlc3NfZmFtaWx5KAorICAgICAg
ICBDb252ZXJ0VG9Qcm90b0Zvcm1hdChkZXNjLmxvY2FsX2FkZHJlc3NfZmFtaWx5KSk7CisgICAg
cHJvdG9fYmF0Y2gtPnNldF9yZW1vdGVfY2FuZGlkYXRlX3R5cGUoCisgICAgICAgIENvbnZlcnRU
b1Byb3RvRm9ybWF0KGRlc2MucmVtb3RlX2NhbmRpZGF0ZV90eXBlKSk7CisgICAgcHJvdG9fYmF0
Y2gtPnNldF9yZW1vdGVfYWRkcmVzc19mYW1pbHkoCisgICAgICAgIENvbnZlcnRUb1Byb3RvRm9y
bWF0KGRlc2MucmVtb3RlX2FkZHJlc3NfZmFtaWx5KSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9j
YW5kaWRhdGVfcGFpcl9wcm90b2NvbCgKKyAgICAgICAgQ29udmVydFRvUHJvdG9Gb3JtYXQoZGVz
Yy5jYW5kaWRhdGVfcGFpcl9wcm90b2NvbCkpOworICB9CisgIC8vIFRPRE8odGVyZWxpdXMpOiBT
aG91bGQgd2UgZGVsdGEtY29tcHJlc3MgdGhpcyBldmVudCB0eXBlPworfQorCit2b2lkIFJ0Y0V2
ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlSWNlQ2FuZGlkYXRlUGFpckV2ZW50KAorICAg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcio+IGJhdGNoLAor
ICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBS
dGNFdmVudEljZUNhbmRpZGF0ZVBhaXIqIGJhc2VfZXZlbnQgOiBiYXRjaCkgeworICAgIHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudCogcHJvdG9fYmF0Y2ggPQorICAgICAgICBldmVudF9z
dHJlYW0tPmFkZF9pY2VfY2FuZGlkYXRlX2V2ZW50cygpOworCisgICAgcHJvdG9fYmF0Y2gtPnNl
dF90aW1lc3RhbXBfbXMoYmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpOworCisgICAgcHJvdG9f
YmF0Y2gtPnNldF9ldmVudF90eXBlKENvbnZlcnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQtPnR5
cGUoKSkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfY2FuZGlkYXRlX3BhaXJfaWQoYmFzZV9ldmVu
dC0+Y2FuZGlkYXRlX3BhaXJfaWQoKSk7CisgIH0KKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3Vs
ZCB3ZSBkZWx0YS1jb21wcmVzcyB0aGlzIGV2ZW50IHR5cGU/Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rl
cl9uZXdfZm9ybWF0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbmV3
X2Zvcm1hdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZmE0OTAxMTRiNGViODgzYmM3ODk2MTUxNDk4ZTk4MTEw
YTg4MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2Vu
Y29kZXJfbmV3X2Zvcm1hdC5oCkBAIC0wLDAgKzEsMTI3IEBACisvKgorICogIENvcHlyaWdodCAo
YykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2lmbmRlZiBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9SVENfRVZFTlRfTE9H
X0VOQ09ERVJfTkVXX0ZPUk1BVF9IXworI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5D
T0RFUl9SVENfRVZFTlRfTE9HX0VOQ09ERVJfTkVXX0ZPUk1BVF9IXworCisjaW5jbHVkZSA8ZGVx
dWU+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdHJpbmc+
CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXIu
aCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK25hbWVzcGFjZSBydGNsb2cyIHsKK2NsYXNzIEV2
ZW50U3RyZWFtOyAgLy8gQXV0by1nZW5lcmF0ZWQgZnJvbSBwcm90b2J1Zi4KK30gIC8vIG5hbWVz
cGFjZSBydGNsb2cyCisKK2NsYXNzIFJ0Y0V2ZW50QWxyU3RhdGU7CitjbGFzcyBSdGNFdmVudEF1
ZGlvTmV0d29ya0FkYXB0YXRpb247CitjbGFzcyBSdGNFdmVudEF1ZGlvUGxheW91dDsKK2NsYXNz
IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnOworY2xhc3MgUnRjRXZlbnRBdWRpb1Nl
bmRTdHJlYW1Db25maWc7CitjbGFzcyBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQ7CitjbGFz
cyBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZDsKK2NsYXNzIFJ0Y0V2ZW50TG9nZ2luZ1N0YXJ0
ZWQ7CitjbGFzcyBSdGNFdmVudExvZ2dpbmdTdG9wcGVkOworY2xhc3MgUnRjRXZlbnRQcm9iZUNs
dXN0ZXJDcmVhdGVkOworY2xhc3MgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmU7CitjbGFzcyBS
dGNFdmVudFByb2JlUmVzdWx0U3VjY2VzczsKK2NsYXNzIFJ0Y0V2ZW50UnRjcFBhY2tldEluY29t
aW5nOworY2xhc3MgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmc7CitjbGFzcyBSdGNFdmVudFJ0
cFBhY2tldEluY29taW5nOworY2xhc3MgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZzsKK2NsYXNz
IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnOworY2xhc3MgUnRjRXZlbnRWaWRlb1Nl
bmRTdHJlYW1Db25maWc7CitjbGFzcyBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWc7Citj
bGFzcyBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXI7CitjbGFzcyBSdHBQYWNrZXQ7CisKK2NsYXNz
IFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdCBmaW5hbCA6IHB1YmxpYyBSdGNFdmVudExvZ0Vu
Y29kZXIgeworIHB1YmxpYzoKKyAgflJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdCgpIG92ZXJy
aWRlID0gZGVmYXVsdDsKKworICBzdGQ6OnN0cmluZyBFbmNvZGVCYXRjaCgKKyAgICAgIHN0ZDo6
ZGVxdWU8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50Pj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luLAor
ICAgICAgc3RkOjpkZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+Pjo6Y29uc3RfaXRlcmF0
b3IgZW5kKSBvdmVycmlkZTsKKworICBzdGQ6OnN0cmluZyBFbmNvZGVMb2dTdGFydChpbnQ2NF90
IHRpbWVzdGFtcF91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB1dGNf
dGltZV91cykgb3ZlcnJpZGU7CisgIHN0ZDo6c3RyaW5nIEVuY29kZUxvZ0VuZChpbnQ2NF90IHRp
bWVzdGFtcF91cykgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorICAvLyBFbmNvZGluZyBlbnRyeS1w
b2ludCBmb3IgdGhlIHZhcmlvdXMgUnRjRXZlbnQgc3ViY2xhc3Nlcy4KKyAgdm9pZCBFbmNvZGVB
bHJTdGF0ZShydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudEFsclN0YXRlKj4gYmF0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7
CisgIHZvaWQgRW5jb2RlQXVkaW9OZXR3b3JrQWRhcHRhdGlvbigKKyAgICAgIHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbio+IGJhdGNoLAorICAgICAg
cnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlQXVkaW9Q
bGF5b3V0KHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0Kj4gYmF0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9z
dHJlYW0pOworICB2b2lkIEVuY29kZUF1ZGlvUmVjdlN0cmVhbUNvbmZpZygKKyAgICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKj4gYmF0Y2gs
CisgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNv
ZGVBdWRpb1NlbmRTdHJlYW1Db25maWcoCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNF
dmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyo+IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRT
dHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlQndlVXBkYXRlRGVsYXlCYXNlZCgK
KyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCo+
IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZv
aWQgRW5jb2RlQndlVXBkYXRlTG9zc0Jhc2VkKAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qg
UnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQqPiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50
U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2b2lkIEVuY29kZUxvZ2dpbmdTdGFydGVkKHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50TG9nZ2luZ1N0YXJ0ZWQqPiBiYXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsK
KyAgdm9pZCBFbmNvZGVMb2dnaW5nU3RvcHBlZChydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVu
dExvZ2dpbmdTdG9wcGVkKj4gYmF0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRj
bG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlUHJvYmVDbHVz
dGVyQ3JlYXRlZCgKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVz
dGVyQ3JlYXRlZCo+IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0
cmVhbSk7CisgIHZvaWQgRW5jb2RlUHJvYmVSZXN1bHRGYWlsdXJlKAorICAgICAgcnRjOjpBcnJh
eVZpZXc8Y29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUqPiBiYXRjaCwKKyAgICAgIHJ0
Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2b2lkIEVuY29kZVByb2JlUmVz
dWx0U3VjY2VzcygKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1
bHRTdWNjZXNzKj4gYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3Ry
ZWFtKTsKKyAgdm9pZCBFbmNvZGVSdGNwUGFja2V0SW5jb21pbmcoCisgICAgICBydGM6OkFycmF5
Vmlldzxjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZyo+IGJhdGNoLAorICAgICAgcnRj
bG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlUnRjcFBhY2tl
dE91dGdvaW5nKAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRSdGNwUGFja2V0
T3V0Z29pbmcqPiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJl
YW0pOworICB2b2lkIEVuY29kZVJ0cFBhY2tldEluY29taW5nKAorICAgICAgY29uc3Qgc3RkOjpt
YXA8dWludDMyX3QsIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcq
Pj4mCisgICAgICAgICAgYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRf
c3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVSdHBQYWNrZXRPdXRnb2luZygKKyAgICAgIGNvbnN0IHN0
ZDo6bWFwPHVpbnQzMl90LCBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudFJ0cFBhY2tldE91dGdv
aW5nKj4+JgorICAgICAgICAgIGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2
ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlVmlkZW9SZWN2U3RyZWFtQ29uZmlnKAorICAgICAg
cnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcqPiBi
YXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2b2lk
IEVuY29kZVZpZGVvU2VuZFN0cmVhbUNvbmZpZygKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKj4gYmF0Y2gsCisgICAgICBydGNsb2cyOjpF
dmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVJY2VDYW5kaWRhdGVQYWly
Q29uZmlnKAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnKj4gYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3Ry
ZWFtKTsKKyAgdm9pZCBFbmNvZGVJY2VDYW5kaWRhdGVQYWlyRXZlbnQoCisgICAgICBydGM6OkFy
cmF5Vmlldzxjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXIqPiBiYXRjaCwKKyAgICAgIHJ0
Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworfTsKKworfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YworCisjZW5kaWYgIC8vIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX1JUQ19F
VkVOVF9MT0dfRU5DT0RFUl9ORVdfRk9STUFUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rl
ci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNf
ZXZlbnRfbG9nX2VuY29kZXJfdW5pdHRlc3QuY2MKaW5kZXggOTkwZmE2MDgwYmI5NDYxM2Q1NDM0
NzQ0NjBiODdmOGEzYzQ2YzA4ZS4uODU2YmVjNjZlN2NjYzA4MWMzNjQwN2E4YzI2NDFkMTVkYTQ3
Y2FiNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl91bml0
dGVzdC5jYwpAQCAtMTEsOSArMTEsMTEgQEAKICNpbmNsdWRlIDxkZXF1ZT4KICNpbmNsdWRlIDxs
aW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR1cGxlPgogCiAjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5oIgorI2luY2x1ZGUgImxvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9uZXdfZm9ybWF0Lmgi
CiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0
YXRlLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
YXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcGxheW91dC5oIgpAQCAtMzksMTU2ICs0MSwzNTcg
QEAKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotCi0KLWNs
YXNzIFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxpbnQ+IHsKK2NsYXNzIFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QKKyAgICA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6dHVwbGU8aW50LCBib29sLCBzaXplX3QsIGJvb2w+PiB7
CiAgcHJvdGVjdGVkOgogICBSdGNFdmVudExvZ0VuY29kZXJUZXN0KCkKLSAgICAgIDogZW5jb2Rl
cl8obmV3IFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeSksCi0gICAgICAgIHNlZWRfKEdldFBhcmFt
KCkpLAorICAgICAgOiBzZWVkXyhzdGQ6OmdldDwwPihHZXRQYXJhbSgpKSksCiAgICAgICAgIHBy
bmdfKHNlZWRfKSwKLSAgICAgICAgZ2VuXyhzZWVkXyAqIDg4MDAwMVVMKSB7fQorICAgICAgICBu
ZXdfZW5jb2RpbmdfKHN0ZDo6Z2V0PDE+KEdldFBhcmFtKCkpKSwKKyAgICAgICAgZXZlbnRfY291
bnRfKHN0ZDo6Z2V0PDI+KEdldFBhcmFtKCkpKSwKKyAgICAgICAgZm9yY2VfcmVwZWF0ZWRfZmll
bGRzXyhzdGQ6OmdldDwzPihHZXRQYXJhbSgpKSksCisgICAgICAgIGdlbl8oc2VlZF8gKiA4ODAw
MDFVTCksCisgICAgICAgIHZlcmlmaWVyXyhuZXdfZW5jb2RpbmdfID8gUnRjRXZlbnRMb2c6OkVu
Y29kaW5nVHlwZTo6TmV3Rm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
UnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TGVnYWN5KSB7CisgICAgaWYgKG5ld19lbmNvZGlu
Z18pCisgICAgICBlbmNvZGVyXyA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nRW5jb2Rl
ck5ld0Zvcm1hdD4oKTsKKyAgICBlbHNlCisgICAgICBlbmNvZGVyXyA9IGFic2w6Om1ha2VfdW5p
cXVlPFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeT4oKTsKKyAgfQogICB+UnRjRXZlbnRMb2dFbmNv
ZGVyVGVzdCgpIG92ZXJyaWRlID0gZGVmYXVsdDsKIAogICAvLyBBTkEgZXZlbnRzIGhhdmUgc29t
ZSBvcHRpb25hbCBmaWVsZHMsIHNvIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZ2V0CiAg
IC8vIGNvcnJlY3QgYmVoYXZpb3IgYm90aCB3aGVuIGFsbCBvZiB0aGUgdmFsdWVzIGFyZSB0aGVy
ZSwgYXMgd2VsbCBhcyB3aGVuCiAgIC8vIG9ubHkgc29tZS4KICAgdm9pZCBUZXN0UnRjRXZlbnRB
dWRpb05ldHdvcmtBZGFwdGF0aW9uKAotICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rl
clJ1bnRpbWVDb25maWc+IHJ1bnRpbWVfY29uZmlnKTsKKyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24+PiYpOworCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBFdmVudFR5cGU+CisgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFR5
cGU+IE5ld1J0cFBhY2tldCgKKyAgICAgIHVpbnQzMl90IHNzcmMsCisgICAgICBjb25zdCBSdHBI
ZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXApOworCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBQYXJzZWRUeXBlPgorICBjb25zdCBzdGQ6OnZlY3RvcjxQYXJzZWRUeXBlPiogR2V0UnRwUGFj
a2V0c0J5U3NyYygKKyAgICAgIGNvbnN0IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3KiBwYXJzZWRfbG9n
LAorICAgICAgdWludDMyX3Qgc3NyYyk7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEV2ZW50VHlw
ZSwgdHlwZW5hbWUgUGFyc2VkVHlwZT4KKyAgdm9pZCBUZXN0UnRwUGFja2V0cygpOwogCiAgIHN0
ZDo6ZGVxdWU8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50Pj4gaGlzdG9yeV87Ci0gIC8vIFRPRE8o
ZWxhZGFsb24pOiBPbmNlIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBwb3NzaWJsZSBlbmNvZGVyLCBw
YXJhbWV0ZXJpemUKLSAgLy8gZW5jb2RlciBzZWxlY3Rpb24uCiAgIHN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudExvZ0VuY29kZXI+IGVuY29kZXJfOwogICBQYXJzZWRSdGNFdmVudExvZ05ldyBwYXJz
ZWRfbG9nXzsKICAgY29uc3QgdWludDY0X3Qgc2VlZF87CiAgIFJhbmRvbSBwcm5nXzsKKyAgY29u
c3QgYm9vbCBuZXdfZW5jb2RpbmdfOworICBjb25zdCBzaXplX3QgZXZlbnRfY291bnRfOworICBj
b25zdCBib29sIGZvcmNlX3JlcGVhdGVkX2ZpZWxkc187CiAgIHRlc3Q6OkV2ZW50R2VuZXJhdG9y
IGdlbl87CisgIHRlc3Q6OkV2ZW50VmVyaWZpZXIgdmVyaWZpZXJfOwogfTsKIAotVEVTVF9QKFJ0
Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QWxyU3RhdGUpIHsKLSAgc3RkOjp1bmlxdWVf
cHRyPFJ0Y0V2ZW50QWxyU3RhdGU+IGV2ZW50ID0gZ2VuXy5OZXdBbHJTdGF0ZSgpOwotICBoaXN0
b3J5Xy5wdXNoX2JhY2soZXZlbnQtPkNvcHkoKSk7Cit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2RlclRl
c3Q6OlRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oCisgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4+Jgor
ICAgICAgICBldmVudHMpIHsKKyAgQVNTRVJUX1RSVUUoaGlzdG9yeV8uZW1wdHkoKSkgPDwgIkZ1
bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb25jZSBwZXIgdGVzdC4iOworCisgIGZvciAoYXV0byYg
ZXZlbnQgOiBldmVudHMpIHsKKyAgICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnQtPkNvcHkoKSk7
CisgIH0KIAogICBzdGQ6OnN0cmluZyBlbmNvZGVkID0gZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhp
c3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVuZCgpKTsKICAgQVNTRVJUX1RSVUUocGFyc2VkX2xv
Z18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOwotICBjb25zdCBhdXRvJiBhbHJfc3RhdGVfZXZlbnRz
ID0gcGFyc2VkX2xvZ18uYWxyX3N0YXRlX2V2ZW50cygpOworICBjb25zdCBhdXRvJiBhbmFfY29u
ZmlncyA9IHBhcnNlZF9sb2dfLmF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbl9ldmVudHMoKTsKIAot
ICBBU1NFUlRfRVEoYWxyX3N0YXRlX2V2ZW50cy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUo
dGVzdDo6VmVyaWZ5TG9nZ2VkQWxyU3RhdGVFdmVudCgqZXZlbnQsIGFscl9zdGF0ZV9ldmVudHNb
MF0pKTsKKyAgQVNTRVJUX0VRKGFuYV9jb25maWdzLnNpemUoKSwgZXZlbnRzLnNpemUoKSk7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRzLnNpemUoKTsgKytpKSB7CisgICAgdmVyaWZp
ZXJfLlZlcmlmeUxvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCgqZXZlbnRzW2ldLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5h
X2NvbmZpZ3NbaV0pOworICB9CiB9CiAKLXZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyVGVzdDo6VGVz
dFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbigKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9FbmNvZGVyUnVudGltZUNvbmZpZz4gcnVudGltZV9jb25maWcpIHsKLSAgLy8gVGhpcyBmdW5j
dGlvbiBpcyBjYWxsZWQgcmVwZWF0ZWRseS4gQ2xlYXIgc3RhdGUgYmV0d2VlbiBjYWxscy4KLSAg
aGlzdG9yeV8uY2xlYXIoKTsKLSAgYXV0byBvcmlnaW5hbF9ydW50aW1lX2NvbmZpZyA9ICpydW50
aW1lX2NvbmZpZzsKLSAgYXV0byBldmVudCA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVk
aW9OZXR3b3JrQWRhcHRhdGlvbj4oCi0gICAgICBzdGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsK
LSAgY29uc3QgaW50NjRfdCB0aW1lc3RhbXBfdXMgPSBldmVudC0+dGltZXN0YW1wX3VzXzsKLSAg
aGlzdG9yeV8ucHVzaF9iYWNrKHN0ZDo6bW92ZShldmVudCkpOwordGVtcGxhdGUgPD4KK3N0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudFJ0cFBhY2tldEluY29taW5nPiBSdGNFdmVudExvZ0VuY29kZXJU
ZXN0OjpOZXdSdHBQYWNrZXQoCisgICAgdWludDMyX3Qgc3NyYywKKyAgICBjb25zdCBSdHBIZWFk
ZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXApIHsKKyAgcmV0dXJuIGdlbl8uTmV3UnRwUGFj
a2V0SW5jb21pbmcoc3NyYywgZXh0ZW5zaW9uX21hcCwgZmFsc2UpOworfQorCit0ZW1wbGF0ZSA8
Pgorc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmc+IFJ0Y0V2ZW50TG9n
RW5jb2RlclRlc3Q6Ok5ld1J0cFBhY2tldCgKKyAgICB1aW50MzJfdCBzc3JjLAorICAgIGNvbnN0
IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCkgeworICByZXR1cm4gZ2VuXy5O
ZXdSdHBQYWNrZXRPdXRnb2luZyhzc3JjLCBleHRlbnNpb25fbWFwLCBmYWxzZSk7Cit9CisKK3Rl
bXBsYXRlIDw+Citjb25zdCBzdGQ6OnZlY3RvcjxMb2dnZWRSdHBQYWNrZXRJbmNvbWluZz4qCitS
dGNFdmVudExvZ0VuY29kZXJUZXN0OjpHZXRSdHBQYWNrZXRzQnlTc3JjKAorICAgIGNvbnN0IFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3KiBwYXJzZWRfbG9nLAorICAgIHVpbnQzMl90IHNzcmMpIHsKKyAg
Y29uc3QgYXV0byYgaW5jb21pbmdfc3RyZWFtcyA9IHBhcnNlZF9sb2ctPmluY29taW5nX3J0cF9w
YWNrZXRzX2J5X3NzcmMoKTsKKyAgZm9yIChjb25zdCBhdXRvJiBzdHJlYW0gOiBpbmNvbWluZ19z
dHJlYW1zKSB7CisgICAgaWYgKHN0cmVhbS5zc3JjID09IHNzcmMpIHsKKyAgICAgIHJldHVybiAm
c3RyZWFtLmluY29taW5nX3BhY2tldHM7CisgICAgfQorICB9CisgIHJldHVybiBudWxscHRyOwor
fQorCit0ZW1wbGF0ZSA8PgorY29uc3Qgc3RkOjp2ZWN0b3I8TG9nZ2VkUnRwUGFja2V0T3V0Z29p
bmc+KgorUnRjRXZlbnRMb2dFbmNvZGVyVGVzdDo6R2V0UnRwUGFja2V0c0J5U3NyYygKKyAgICBj
b25zdCBQYXJzZWRSdGNFdmVudExvZ05ldyogcGFyc2VkX2xvZywKKyAgICB1aW50MzJfdCBzc3Jj
KSB7CisgIGNvbnN0IGF1dG8mIG91dGdvaW5nX3N0cmVhbXMgPSBwYXJzZWRfbG9nLT5vdXRnb2lu
Z19ydHBfcGFja2V0c19ieV9zc3JjKCk7CisgIGZvciAoY29uc3QgYXV0byYgc3RyZWFtIDogb3V0
Z29pbmdfc3RyZWFtcykgeworICAgIGlmIChzdHJlYW0uc3NyYyA9PSBzc3JjKSB7CisgICAgICBy
ZXR1cm4gJnN0cmVhbS5vdXRnb2luZ19wYWNrZXRzOworICAgIH0KKyAgfQorICByZXR1cm4gbnVs
bHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEV2ZW50VHlwZSwgdHlwZW5hbWUgUGFyc2Vk
VHlwZT4KK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyVGVzdDo6VGVzdFJ0cFBhY2tldHMoKSB7Cisg
IC8vIFNTUkNzIHdpbGwgYmUgcmFuZG9tbHkgYXNzaWduZWQgb3V0IG9mIHRoaXMgc21hbGwgcG9v
bCwgc2lnbmlmaWNhbnQgb25seQorICAvLyBpbiB0aGF0IGl0IGFsc28gY292ZXJzIHN1Y2ggZWRn
ZSBjYXNlcyBhcyBTU1JDID0gMCBhbmQgU1NSQyA9IDB4ZmZmZmZmZmYuCisgIC8vIFRoZSBwb29s
IGlzIGludGVudGlvbmFsbHkgc21hbGwsIHNvIGFzIHRvIHByb2R1Y2UgY29sbGlzaW9ucy4KKyAg
Y29uc3Qgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IGtTc3JjUG9vbCA9IHsweDAwMDAwMDAwLCAweDEy
MzQ1Njc4LCAweGFiY2RlZjAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4ZmZmZmZmZmYsIDB4MjAxNzEwMjQsIDB4MTk4NDA3MzAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTgzMTIzMH07CisKKyAgLy8gVE9ETyh0
ZXJlbGl1cyk6IFRlc3QgZXh0ZW5zaW9ucyBmb3IgbGVnYWN5IGVuY29kaW5nLCB0b28uCisgIFJ0
cEhlYWRlckV4dGVuc2lvbk1hcCBleHRlbnNpb25fbWFwOworICBpZiAobmV3X2VuY29kaW5nXykg
eworICAgIGV4dGVuc2lvbl9tYXAgPSBnZW5fLk5ld1J0cEhlYWRlckV4dGVuc2lvbk1hcCh0cnVl
KTsKKyAgfQorCisgIC8vIFNpbXVsYXRlIHxldmVudF9jb3VudF98IFJUUCBwYWNrZXRzLCB3aXRo
IFNTUkNzIGFzc2lnbmVkIHJhbmRvbWx5CisgIC8vIG91dCBvZiB0aGUgc21hbGwgcG9vbCBhYm92
ZS4KKyAgc3RkOjptYXA8dWludDMyX3QsIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFdmVu
dFR5cGU+Pj4gZXZlbnRzX2J5X3NzcmM7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRf
Y291bnRfOyArK2kpIHsKKyAgICBjb25zdCB1aW50MzJfdCBzc3JjID0ga1NzcmNQb29sW3Bybmdf
LlJhbmQoa1NzcmNQb29sLnNpemUoKSAtIDEpXTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRU
eXBlPiBldmVudCA9CisgICAgICAgIChldmVudHNfYnlfc3NyY1tzc3JjXS5lbXB0eSgpIHx8ICFm
b3JjZV9yZXBlYXRlZF9maWVsZHNfKQorICAgICAgICAgICAgPyBOZXdSdHBQYWNrZXQ8RXZlbnRU
eXBlPihzc3JjLCBleHRlbnNpb25fbWFwKQorICAgICAgICAgICAgOiBldmVudHNfYnlfc3NyY1tz
c3JjXVswXS0+Q29weSgpOworICAgIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgpKTsK
KyAgICBldmVudHNfYnlfc3NyY1tzc3JjXS5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKGV2ZW50KSk7
CisgIH0KIAorICAvLyBFbmNvZGUgYW5kIHBhcnNlLgogICBzdGQ6OnN0cmluZyBlbmNvZGVkID0g
ZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhpc3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVuZCgpKTsK
ICAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOwotICBjb25z
dCBhdXRvJiBhbmFfY29uZmlncyA9IHBhcnNlZF9sb2dfLmF1ZGlvX25ldHdvcmtfYWRhcHRhdGlv
bl9ldmVudHMoKTsKLSAgQVNTRVJUX0VRKGFuYV9jb25maWdzLnNpemUoKSwgMXUpOwogCi0gIEVY
UEVDVF9FUShhbmFfY29uZmlnc1swXS50aW1lc3RhbXBfdXMsIHRpbWVzdGFtcF91cyk7Ci0gIEVY
UEVDVF9FUShhbmFfY29uZmlnc1swXS5jb25maWcsIG9yaWdpbmFsX3J1bnRpbWVfY29uZmlnKTsK
KyAgLy8gRm9yIGVhY2ggU1NSQywgbWFrZSBzdXJlIHRoZSBSVFAgcGFja2V0cyBhc3NvY2lhdGVk
IHdpdGggaXQgdG8gaGF2ZSBiZWVuCisgIC8vIGNvcnJlY3RseSBlbmNvZGVkIGFuZCBwYXJzZWQu
CisgIGZvciAoYXV0byBpdCA9IGV2ZW50c19ieV9zc3JjLmJlZ2luKCk7IGl0ICE9IGV2ZW50c19i
eV9zc3JjLmVuZCgpOyArK2l0KSB7CisgICAgY29uc3QgdWludDMyX3Qgc3NyYyA9IGl0LT5maXJz
dDsKKyAgICBjb25zdCBhdXRvJiBvcmlnaW5hbF9wYWNrZXRzID0gaXQtPnNlY29uZDsKKyAgICBj
b25zdCBzdGQ6OnZlY3RvcjxQYXJzZWRUeXBlPiogcGFyc2VkX3J0cF9wYWNrZXRzID0KKyAgICAg
ICAgR2V0UnRwUGFja2V0c0J5U3NyYzxQYXJzZWRUeXBlPigmcGFyc2VkX2xvZ18sIHNzcmMpOwor
ICAgIEFTU0VSVF9ORShwYXJzZWRfcnRwX3BhY2tldHMsIG51bGxwdHIpOworICAgIEFTU0VSVF9F
UShvcmlnaW5hbF9wYWNrZXRzLnNpemUoKSwgcGFyc2VkX3J0cF9wYWNrZXRzLT5zaXplKCkpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ2luYWxfcGFja2V0cy5zaXplKCk7ICsraSkg
eworICAgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFJ0cFBhY2tldDxFdmVudFR5cGUsIFBhcnNl
ZFR5cGU+KAorICAgICAgICAgICpvcmlnaW5hbF9wYWNrZXRzW2ldLCAoKnBhcnNlZF9ydHBfcGFj
a2V0cylbaV0pOworICAgIH0KKyAgfQorfQorCitURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVz
dCwgUnRjRXZlbnRBbHJTdGF0ZSkgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRj
RXZlbnRBbHJTdGF0ZT4+IGV2ZW50cyhldmVudF9jb3VudF8pOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGV2ZW50X2NvdW50XzsgKytpKSB7CisgICAgZXZlbnRzW2ldID0gKGkgPT0gMCB8fCAh
Zm9yY2VfcmVwZWF0ZWRfZmllbGRzXykgPyBnZW5fLk5ld0FsclN0YXRlKCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGV2ZW50c1swXS0+Q29w
eSgpOworICAgIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudHNbaV0tPkNvcHkoKSk7CisgIH0KKwor
ICBzdGQ6OnN0cmluZyBlbmNvZGVkID0gZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhpc3RvcnlfLmJl
Z2luKCksIGhpc3RvcnlfLmVuZCgpKTsKKyAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VT
dHJpbmcoZW5jb2RlZCkpOworICBjb25zdCBhdXRvJiBhbHJfc3RhdGVfZXZlbnRzID0gcGFyc2Vk
X2xvZ18uYWxyX3N0YXRlX2V2ZW50cygpOworCisgIEFTU0VSVF9FUShhbHJfc3RhdGVfZXZlbnRz
LnNpemUoKSwgZXZlbnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9j
b3VudF87ICsraSkgeworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRBbHJTdGF0ZUV2ZW50KCpl
dmVudHNbaV0sIGFscl9zdGF0ZV9ldmVudHNbaV0pOworICB9CiB9CiAKIFRFU1RfUChSdGNFdmVu
dExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb25CaXRyYXRlKSB7
Ci0gIGF1dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJS
dW50aW1lQ29uZmlnPigpOwotICBjb25zdCBpbnQgYml0cmF0ZV9icHMgPSBydGM6OmNoZWNrZWRf
Y2FzdDxpbnQ+KAotICAgICAgcHJuZ18uUmFuZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSkpOwotICBydW50aW1lX2NvbmZpZy0+Yml0cmF0ZV9icHMgPSBiaXRyYXRlX2Jw
czsKLSAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihzdGQ6Om1vdmUocnVudGlt
ZV9jb25maWcpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9O
ZXR3b3JrQWRhcHRhdGlvbj4+IGV2ZW50cygKKyAgICAgIGV2ZW50X2NvdW50Xyk7CisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICBpZiAoaSA9PSAwIHx8
ICFmb3JjZV9yZXBlYXRlZF9maWVsZHNfKSB7CisgICAgICBhdXRvIHJ1bnRpbWVfY29uZmlnID0g
YWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZz4oKTsKKyAgICAgIGNv
bnN0IGludCBiaXRyYXRlX2JwcyA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PGludD4oCisgICAgICAgICAg
cHJuZ18uUmFuZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpOworICAg
ICAgcnVudGltZV9jb25maWctPmJpdHJhdGVfYnBzID0gYml0cmF0ZV9icHM7CisgICAgICBldmVu
dHNbaV0gPSBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24+
KAorICAgICAgICAgIHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOworICAgIH0gZWxzZSB7Cisg
ICAgICBldmVudHNbaV0gPSBldmVudHNbMF0tPkNvcHkoKTsKKyAgICB9CisgIH0KKyAgVGVzdFJ0
Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihldmVudHMpOwogfQogCiBURVNUX1AoUnRjRXZl
bnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRnJhbWVMZW5n
dGgpIHsKLSAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5j
b2RlclJ1bnRpbWVDb25maWc+KCk7Ci0gIGNvbnN0IGludCBmcmFtZV9sZW5ndGhfbXMgPSBwcm5n
Xy5SYW5kKDEsIDEwMDApOwotICBydW50aW1lX2NvbmZpZy0+ZnJhbWVfbGVuZ3RoX21zID0gZnJh
bWVfbGVuZ3RoX21zOwotICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKHN0ZDo6
bW92ZShydW50aW1lX2NvbmZpZykpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRj
RXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPj4gZXZlbnRzKAorICAgICAgZXZlbnRfY291bnRf
KTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIGlm
IChpID09IDAgfHwgIWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18pIHsKKyAgICAgIGF1dG8gcnVudGlt
ZV9jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPigp
OworICAgICAgY29uc3QgaW50IGZyYW1lX2xlbmd0aF9tcyA9IHBybmdfLlJhbmQoMSwgMTAwMCk7
CisgICAgICBydW50aW1lX2NvbmZpZy0+ZnJhbWVfbGVuZ3RoX21zID0gZnJhbWVfbGVuZ3RoX21z
OworICAgICAgZXZlbnRzW2ldID0gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRpb05ldHdv
cmtBZGFwdGF0aW9uPigKKyAgICAgICAgICBzdGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgZXZlbnRzW2ldID0gZXZlbnRzWzBdLT5Db3B5KCk7CisgICAgfQor
ICB9CisgIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oZXZlbnRzKTsKIH0KIAog
VEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRh
dGlvblBhY2tldExvc3MpIHsKLSAgLy8gVG8gc2ltcGxpZnkgdGhlIHRlc3QsIHdlIGp1c3QgY2hl
Y2sgcG93ZXJzIG9mIHR3by4KLSAgY29uc3QgZmxvYXQgcGxyID0gc3RkOjpwb3coMC41ZiwgcHJu
Z18uUmFuZCgxLCA4KSk7Ci0gIGF1dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1
ZTxBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPigpOwotICBydW50aW1lX2NvbmZpZy0+dXBsaW5r
X3BhY2tldF9sb3NzX2ZyYWN0aW9uID0gcGxyOwotICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtB
ZGFwdGF0aW9uKHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOworICBzdGQ6OnZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPj4gZXZlbnRzKAorICAg
ICAgZXZlbnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87
ICsraSkgeworICAgIGlmIChpID09IDAgfHwgIWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18pIHsKKyAg
ICAgIC8vIFRvIHNpbXBsaWZ5IHRoZSB0ZXN0LCB3ZSBqdXN0IGNoZWNrIHBvd2VycyBvZiB0d28u
CisgICAgICBjb25zdCBmbG9hdCBwbHIgPSBzdGQ6OnBvdygwLjVmLCBwcm5nXy5SYW5kKDEsIDgp
KTsKKyAgICAgIGF1dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0Vu
Y29kZXJSdW50aW1lQ29uZmlnPigpOworICAgICAgcnVudGltZV9jb25maWctPnVwbGlua19wYWNr
ZXRfbG9zc19mcmFjdGlvbiA9IHBscjsKKyAgICAgIGV2ZW50c1tpXSA9IGFic2w6Om1ha2VfdW5p
cXVlPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4oCisgICAgICAgICAgc3RkOjptb3Zl
KHJ1bnRpbWVfY29uZmlnKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGV2ZW50c1tpXSA9IGV2ZW50
c1swXS0+Q29weSgpOworICAgIH0KKyAgfQorICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFw
dGF0aW9uKGV2ZW50cyk7CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNF
dmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb25GZWMpIHsKLSAgLy8gVGhlIHRlc3QgbWlnaHQgYmUg
dHJpdmlhbGx5IHBhc3NpbmcgZm9yIG9uZSBvZiB0aGUgdHdvIGJvb2xlYW4gdmFsdWVzLCBzbwot
ICAvLyBmb3Igc2FmZXR5J3Mgc2FrZSwgd2UgdGVzdCBib3RoLgotICBmb3IgKGJvb2wgZmVjX2Vu
YWJsZWQgOiB7ZmFsc2UsIHRydWV9KSB7Ci0gICAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6
Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+KCk7Ci0gICAgcnVudGltZV9j
b25maWctPmVuYWJsZV9mZWMgPSBmZWNfZW5hYmxlZDsKLSAgICBUZXN0UnRjRXZlbnRBdWRpb05l
dHdvcmtBZGFwdGF0aW9uKHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOworICBzdGQ6OnZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPj4gZXZlbnRz
KAorICAgICAgZXZlbnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9j
b3VudF87ICsraSkgeworICAgIGlmIChpID09IDAgfHwgIWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18p
IHsKKyAgICAgIGF1dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0Vu
Y29kZXJSdW50aW1lQ29uZmlnPigpOworICAgICAgcnVudGltZV9jb25maWctPmVuYWJsZV9mZWMg
PSBwcm5nXy5SYW5kPGJvb2w+KCk7CisgICAgICBldmVudHNbaV0gPSBhYnNsOjptYWtlX3VuaXF1
ZTxSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24+KAorICAgICAgICAgIHN0ZDo6bW92ZShy
dW50aW1lX2NvbmZpZykpOworICAgIH0gZWxzZSB7CisgICAgICBldmVudHNbaV0gPSBldmVudHNb
MF0tPkNvcHkoKTsKKyAgICB9CiAgIH0KKyAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRh
dGlvbihldmVudHMpOwogfQogCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZl
bnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRHR4KSB7Ci0gIC8vIFRoZSB0ZXN0IG1pZ2h0IGJlIHRy
aXZpYWxseSBwYXNzaW5nIGZvciBvbmUgb2YgdGhlIHR3byBib29sZWFuIHZhbHVlcywgc28KLSAg
Ly8gZm9yIHNhZmV0eSdzIHNha2UsIHdlIHRlc3QgYm90aC4KLSAgZm9yIChib29sIGR0eF9lbmFi
bGVkIDoge2ZhbHNlLCB0cnVlfSkgewotICAgIGF1dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjpt
YWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPigpOwotICAgIHJ1bnRpbWVfY29u
ZmlnLT5lbmFibGVfZHR4ID0gZHR4X2VuYWJsZWQ7Ci0gICAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3
b3JrQWRhcHRhdGlvbihzdGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsKKyAgc3RkOjp2ZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4+IGV2ZW50cygK
KyAgICAgIGV2ZW50X2NvdW50Xyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291
bnRfOyArK2kpIHsKKyAgICBpZiAoaSA9PSAwIHx8ICFmb3JjZV9yZXBlYXRlZF9maWVsZHNfKSB7
CisgICAgICBhdXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNv
ZGVyUnVudGltZUNvbmZpZz4oKTsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLT5lbmFibGVfZHR4ID0g
cHJuZ18uUmFuZDxib29sPigpOworICAgICAgZXZlbnRzW2ldID0gYWJzbDo6bWFrZV91bmlxdWU8
UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPigKKyAgICAgICAgICBzdGQ6Om1vdmUocnVu
dGltZV9jb25maWcpKTsKKyAgICB9IGVsc2UgeworICAgICAgZXZlbnRzW2ldID0gZXZlbnRzWzBd
LT5Db3B5KCk7CisgICAgfQogICB9CisgIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRp
b24oZXZlbnRzKTsKIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50
QXVkaW9OZXR3b3JrQWRhcHRhdGlvbkNoYW5uZWxzKSB7Ci0gIC8vIFRoZSB0ZXN0IG1pZ2h0IGJl
IHRyaXZpYWxseSBwYXNzaW5nIGZvciBvbmUgb2YgdGhlIHR3byBwb3NzaWJsZSB2YWx1ZXMsIHNv
Ci0gIC8vIGZvciBzYWZldHkncyBzYWtlLCB3ZSB0ZXN0IGJvdGguCi0gIGZvciAoc2l6ZV90IGNo
YW5uZWxzIDogezEsIDJ9KSB7Ci0gICAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2Vf
dW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+KCk7Ci0gICAgcnVudGltZV9jb25maWct
Pm51bV9jaGFubmVscyA9IGNoYW5uZWxzOwotICAgIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0Fk
YXB0YXRpb24oc3RkOjptb3ZlKHJ1bnRpbWVfY29uZmlnKSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24+PiBldmVudHMoCisgICAg
ICBldmVudF9jb3VudF8pOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50Xzsg
KytpKSB7CisgICAgaWYgKGkgPT0gMCB8fCAhZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykgeworICAg
ICAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1
bnRpbWVDb25maWc+KCk7CisgICAgICBydW50aW1lX2NvbmZpZy0+bnVtX2NoYW5uZWxzID0gcHJu
Z18uUmFuZCgxLCAyKTsKKyAgICAgIGV2ZW50c1tpXSA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2
ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4oCisgICAgICAgICAgc3RkOjptb3ZlKHJ1bnRpbWVf
Y29uZmlnKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGV2ZW50c1tpXSA9IGV2ZW50c1swXS0+Q29w
eSgpOworICAgIH0KICAgfQorICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKGV2
ZW50cyk7CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEF1ZGlv
TmV0d29ya0FkYXB0YXRpb25BbGwpIHsKLSAgY29uc3QgaW50IGJpdHJhdGVfYnBzID0gcnRjOjpj
aGVja2VkX2Nhc3Q8aW50PigKLSAgICAgIHBybmdfLlJhbmQoMCwgc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpKTsKLSAgY29uc3QgaW50IGZyYW1lX2xlbmd0aF9tcyA9IHBybmdf
LlJhbmQoMSwgMTAwMCk7Ci0gIGNvbnN0IGZsb2F0IHBsciA9IHN0ZDo6cG93KDAuNWYsIHBybmdf
LlJhbmQoMSwgOCkpOwotICBmb3IgKGJvb2wgZmVjX2VuYWJsZWQgOiB7ZmFsc2UsIHRydWV9KSB7
Ci0gICAgZm9yIChib29sIGR0eF9lbmFibGVkIDoge2ZhbHNlLCB0cnVlfSkgewotICAgICAgZm9y
IChzaXplX3QgY2hhbm5lbHMgOiB7MSwgMn0pIHsKLSAgICAgICAgYXV0byBydW50aW1lX2NvbmZp
ZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+KCk7Ci0gICAg
ICAgIHJ1bnRpbWVfY29uZmlnLT5iaXRyYXRlX2JwcyA9IGJpdHJhdGVfYnBzOwotICAgICAgICBy
dW50aW1lX2NvbmZpZy0+ZnJhbWVfbGVuZ3RoX21zID0gZnJhbWVfbGVuZ3RoX21zOwotICAgICAg
ICBydW50aW1lX2NvbmZpZy0+dXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uID0gcGxyOwotICAg
ICAgICBydW50aW1lX2NvbmZpZy0+ZW5hYmxlX2ZlYyA9IGZlY19lbmFibGVkOwotICAgICAgICBy
dW50aW1lX2NvbmZpZy0+ZW5hYmxlX2R0eCA9IGR0eF9lbmFibGVkOwotICAgICAgICBydW50aW1l
X2NvbmZpZy0+bnVtX2NoYW5uZWxzID0gY2hhbm5lbHM7Ci0KLSAgICAgICAgVGVzdFJ0Y0V2ZW50
QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihzdGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsKLSAgICAg
IH0KKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRh
cHRhdGlvbj4+IGV2ZW50cygKKyAgICAgIGV2ZW50X2NvdW50Xyk7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICBpZiAoaSA9PSAwIHx8ICFmb3JjZV9y
ZXBlYXRlZF9maWVsZHNfKSB7CisgICAgICBhdXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6bWFr
ZV91bmlxdWU8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZz4oKTsKKyAgICAgIHJ1bnRpbWVfY29u
ZmlnLT5iaXRyYXRlX2JwcyA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PGludD4oCisgICAgICAgICAgcHJu
Z18uUmFuZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpOworICAgICAg
cnVudGltZV9jb25maWctPmZyYW1lX2xlbmd0aF9tcyA9IHBybmdfLlJhbmQoMSwgMTAwMCk7Cisg
ICAgICBydW50aW1lX2NvbmZpZy0+dXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uID0KKyAgICAg
ICAgICBzdGQ6OnBvdygwLjVmLCBwcm5nXy5SYW5kKDEsIDgpKTsKKyAgICAgIHJ1bnRpbWVfY29u
ZmlnLT5lbmFibGVfZmVjID0gcHJuZ18uUmFuZDxib29sPigpOworICAgICAgcnVudGltZV9jb25m
aWctPmVuYWJsZV9kdHggPSBwcm5nXy5SYW5kPGJvb2w+KCk7CisgICAgICBydW50aW1lX2NvbmZp
Zy0+bnVtX2NoYW5uZWxzID0gcHJuZ18uUmFuZCgxLCAyKTsKKyAgICAgIGV2ZW50c1tpXSA9IGFi
c2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4oCisgICAgICAg
ICAgc3RkOjptb3ZlKHJ1bnRpbWVfY29uZmlnKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGV2ZW50
c1tpXSA9IGV2ZW50c1swXS0+Q29weSgpOwogICAgIH0KICAgfQorICBUZXN0UnRjRXZlbnRBdWRp
b05ldHdvcmtBZGFwdGF0aW9uKGV2ZW50cyk7CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29k
ZXJUZXN0LCBSdGNFdmVudEF1ZGlvUGxheW91dCkgewotICB1aW50MzJfdCBzc3JjID0gcHJuZ18u
UmFuZDx1aW50MzJfdD4oKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9QbGF5b3V0
PiBldmVudCA9IGdlbl8uTmV3QXVkaW9QbGF5b3V0KHNzcmMpOwotICBoaXN0b3J5Xy5wdXNoX2Jh
Y2soZXZlbnQtPkNvcHkoKSk7CisgIC8vIFNTUkNzIHdpbGwgYmUgcmFuZG9tbHkgYXNzaWduZWQg
b3V0IG9mIHRoaXMgc21hbGwgcG9vbCwgc2lnbmlmaWNhbnQgb25seQorICAvLyBpbiB0aGF0IGl0
IGFsc28gY292ZXJzIHN1Y2ggZWRnZSBjYXNlcyBhcyBTU1JDID0gMCBhbmQgU1NSQyA9IDB4ZmZm
ZmZmZmYuCisgIC8vIFRoZSBwb29sIGlzIGludGVudGlvbmFsbHkgc21hbGwsIHNvIGFzIHRvIHBy
b2R1Y2UgY29sbGlzaW9ucy4KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IGtTc3JjUG9v
bCA9IHsweDAwMDAwMDAwLCAweDEyMzQ1Njc4LCAweGFiY2RlZjAxLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmZmZmZmZmYsIDB4MjAxNzEwMjQsIDB4MTk4
NDA3MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTgz
MTIzMH07CisKKyAgc3RkOjptYXA8dWludDMyX3QsIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudEF1ZGlvUGxheW91dD4+PgorICAgICAgb3JpZ2luYWxfZXZlbnRzX2J5X3NzcmM7
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICBjb25z
dCB1aW50MzJfdCBzc3JjID0ga1NzcmNQb29sW3BybmdfLlJhbmQoa1NzcmNQb29sLnNpemUoKSAt
IDEpXTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb1BsYXlvdXQ+IGV2ZW50ID0K
KyAgICAgICAgKG9yaWdpbmFsX2V2ZW50c19ieV9zc3JjW3NzcmNdLmVtcHR5KCkgfHwgIWZvcmNl
X3JlcGVhdGVkX2ZpZWxkc18pCisgICAgICAgICAgICA/IGdlbl8uTmV3QXVkaW9QbGF5b3V0KHNz
cmMpCisgICAgICAgICAgICA6IG9yaWdpbmFsX2V2ZW50c19ieV9zc3JjW3NzcmNdWzBdLT5Db3B5
KCk7CisgICAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5Db3B5KCkpOworICAgIG9yaWdpbmFs
X2V2ZW50c19ieV9zc3JjW3NzcmNdLnB1c2hfYmFjayhzdGQ6Om1vdmUoZXZlbnQpKTsKKyAgfQog
CiAgIHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBlbmNvZGVyXy0+RW5jb2RlQmF0Y2goaGlzdG9yeV8u
YmVnaW4oKSwgaGlzdG9yeV8uZW5kKCkpOwogICBBU1NFUlRfVFJVRShwYXJzZWRfbG9nXy5QYXJz
ZVN0cmluZyhlbmNvZGVkKSk7CiAKLSAgY29uc3QgYXV0byYgcGxheW91dF9ldmVudHMgPSBwYXJz
ZWRfbG9nXy5hdWRpb19wbGF5b3V0X2V2ZW50cygpOwotICBBU1NFUlRfRVEocGxheW91dF9ldmVu
dHMuc2l6ZSgpLCAxdSk7Ci0gIGNvbnN0IGF1dG8gcGxheW91dF9zdHJlYW0gPSBwbGF5b3V0X2V2
ZW50cy5maW5kKHNzcmMpOwotICBBU1NFUlRfVFJVRShwbGF5b3V0X3N0cmVhbSAhPSBwbGF5b3V0
X2V2ZW50cy5lbmQoKSk7Ci0gIEFTU0VSVF9FUShwbGF5b3V0X3N0cmVhbS0+c2Vjb25kLnNpemUo
KSwgMXUpOwotICBMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCBwbGF5b3V0X2V2ZW50ID0gcGxheW91
dF9zdHJlYW0tPnNlY29uZFswXTsKLSAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQXVk
aW9QbGF5b3V0RXZlbnQoKmV2ZW50LCBwbGF5b3V0X2V2ZW50KSk7CisgIGNvbnN0IGF1dG8mIHBh
cnNlZF9wbGF5b3V0X2V2ZW50c19ieV9zc3JjID0KKyAgICAgIHBhcnNlZF9sb2dfLmF1ZGlvX3Bs
YXlvdXRfZXZlbnRzKCk7CisKKyAgLy8gU2FtZSBudW1iZXIgb2YgZGlzdGluY3QgU1NSQ3MuCisg
IEFTU0VSVF9FUShwYXJzZWRfcGxheW91dF9ldmVudHNfYnlfc3NyYy5zaXplKCksCisgICAgICAg
ICAgICBvcmlnaW5hbF9ldmVudHNfYnlfc3NyYy5zaXplKCkpOworCisgIGZvciAoYXV0byYgb3Jp
Z2luYWxfZXZlbnRfaXQgOiBvcmlnaW5hbF9ldmVudHNfYnlfc3NyYykgeworICAgIGNvbnN0IHVp
bnQzMl90IHNzcmMgPSBvcmlnaW5hbF9ldmVudF9pdC5maXJzdDsKKyAgICBjb25zdCBhdXRvJiBv
cmlnaW5hbF9wbGF5b3V0X2V2ZW50cyA9IG9yaWdpbmFsX2V2ZW50X2l0LnNlY29uZDsKKworICAg
IGNvbnN0IGF1dG8mIHBhcnNlZF9ldmVudF9pdCA9IHBhcnNlZF9wbGF5b3V0X2V2ZW50c19ieV9z
c3JjLmZpbmQoc3NyYyk7CisgICAgQVNTRVJUX1RSVUUocGFyc2VkX2V2ZW50X2l0ICE9IHBhcnNl
ZF9wbGF5b3V0X2V2ZW50c19ieV9zc3JjLmVuZCgpKTsKKyAgICBjb25zdCBhdXRvJiBwYXJzZWRf
cGxheW91dF9ldmVudHMgPSBwYXJzZWRfZXZlbnRfaXQtPnNlY29uZDsKKworICAgIC8vIFNhbWUg
bnVtYmVyIHBsYXlvdXQgZXZlbnRzIGZvciB0aGUgU1NSQyB1bmRlciBleGFtaW5hdGlvbi4KKyAg
ICBBU1NFUlRfRVEob3JpZ2luYWxfcGxheW91dF9ldmVudHMuc2l6ZSgpLCBwYXJzZWRfcGxheW91
dF9ldmVudHMuc2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ2luYWxf
cGxheW91dF9ldmVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dn
ZWRBdWRpb1BsYXlvdXRFdmVudCgqb3JpZ2luYWxfcGxheW91dF9ldmVudHNbaV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX3BsYXlvdXRfZXZl
bnRzW2ldKTsKKyAgICB9CisgIH0KIH0KIAorLy8gVE9ETyhlbGFkYWxvbi90ZXJlbGl1cyk6IFRl
c3Qgd2l0aCBtdWx0aXBsZSBldmVudHMgaW4gdGhlIGJhdGNoLgogVEVTVF9QKFJ0Y0V2ZW50TG9n
RW5jb2RlclRlc3QsIFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKSB7CiAgIHVpbnQz
Ml90IHNzcmMgPSBwcm5nXy5SYW5kPHVpbnQzMl90PigpOwogICBSdHBIZWFkZXJFeHRlbnNpb25N
YXAgZXh0ZW5zaW9ucyA9IGdlbl8uTmV3UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKCk7CkBAIC0yMDEs
OSArNDA0LDEwIEBAIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEF1ZGlv
UmVjZWl2ZVN0cmVhbUNvbmZpZykgewogICBjb25zdCBhdXRvJiBhdWRpb19yZWN2X2NvbmZpZ3Mg
PSBwYXJzZWRfbG9nXy5hdWRpb19yZWN2X2NvbmZpZ3MoKTsKIAogICBBU1NFUlRfRVEoYXVkaW9f
cmVjdl9jb25maWdzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dn
ZWRBdWRpb1JlY3ZDb25maWcoKmV2ZW50LCBhdWRpb19yZWN2X2NvbmZpZ3NbMF0pKTsKKyAgdmVy
aWZpZXJfLlZlcmlmeUxvZ2dlZEF1ZGlvUmVjdkNvbmZpZygqZXZlbnQsIGF1ZGlvX3JlY3ZfY29u
Zmlnc1swXSk7CiB9CiAKKy8vIFRPRE8oZWxhZGFsb24vdGVyZWxpdXMpOiBUZXN0IHdpdGggbXVs
dGlwbGUgZXZlbnRzIGluIHRoZSBiYXRjaC4KIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0
LCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZykgewogICB1aW50MzJfdCBzc3JjID0gcHJu
Z18uUmFuZDx1aW50MzJfdD4oKTsKICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwIGV4dGVuc2lvbnMg
PSBnZW5fLk5ld1J0cEhlYWRlckV4dGVuc2lvbk1hcCgpOwpAQCAtMjE2LDM3ICs0MjAsNTEgQEAg
VEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29u
ZmlnKSB7CiAgIGNvbnN0IGF1dG8mIGF1ZGlvX3NlbmRfY29uZmlncyA9IHBhcnNlZF9sb2dfLmF1
ZGlvX3NlbmRfY29uZmlncygpOwogCiAgIEFTU0VSVF9FUShhdWRpb19zZW5kX2NvbmZpZ3Muc2l6
ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEF1ZGlvU2VuZENvbmZp
ZygqZXZlbnQsIGF1ZGlvX3NlbmRfY29uZmlnc1swXSkpOworICB2ZXJpZmllcl8uVmVyaWZ5TG9n
Z2VkQXVkaW9TZW5kQ29uZmlnKCpldmVudCwgYXVkaW9fc2VuZF9jb25maWdzWzBdKTsKIH0KIAog
VEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNl
ZCkgewotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkPiBldmVu
dCA9Ci0gICAgICBnZW5fLk5ld0J3ZVVwZGF0ZURlbGF5QmFzZWQoKTsKLSAgaGlzdG9yeV8ucHVz
aF9iYWNrKGV2ZW50LT5Db3B5KCkpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRj
RXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkPj4gZXZlbnRzKAorICAgICAgZXZlbnRfY291bnRfKTsK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIGV2ZW50
c1tpXSA9IChpID09IDAgfHwgIWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18pCisgICAgICAgICAgICAg
ICAgICAgID8gZ2VuXy5OZXdCd2VVcGRhdGVEZWxheUJhc2VkKCkKKyAgICAgICAgICAgICAgICAg
ICAgOiBldmVudHNbMF0tPkNvcHkoKTsKKyAgICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnRzW2ld
LT5Db3B5KCkpOworICB9CiAKICAgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IGVuY29kZXJfLT5FbmNv
ZGVCYXRjaChoaXN0b3J5Xy5iZWdpbigpLCBoaXN0b3J5Xy5lbmQoKSk7CiAgIEFTU0VSVF9UUlVF
KHBhcnNlZF9sb2dfLlBhcnNlU3RyaW5nKGVuY29kZWQpKTsKKwogICBjb25zdCBhdXRvJiBid2Vf
ZGVsYXlfdXBkYXRlcyA9IHBhcnNlZF9sb2dfLmJ3ZV9kZWxheV91cGRhdGVzKCk7CisgIEFTU0VS
VF9FUShid2VfZGVsYXlfdXBkYXRlcy5zaXplKCksIGV2ZW50X2NvdW50Xyk7CiAKLSAgQVNTRVJU
X0VRKGJ3ZV9kZWxheV91cGRhdGVzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSgKLSAgICAg
IHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoKmV2ZW50LCBid2VfZGVsYXlf
dXBkYXRlc1swXSkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytp
KSB7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoKmV2ZW50
c1tpXSwgYndlX2RlbGF5X3VwZGF0ZXNbaV0pOworICB9CiB9CiAKIFRFU1RfUChSdGNFdmVudExv
Z0VuY29kZXJUZXN0LCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCkgewotICBzdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQ+IGV2ZW50ID0KLSAgICAgIGdlbl8uTmV3
QndlVXBkYXRlTG9zc0Jhc2VkKCk7Ci0gIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgp
KTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jh
c2VkPj4gZXZlbnRzKGV2ZW50X2NvdW50Xyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZl
bnRfY291bnRfOyArK2kpIHsKKyAgICBldmVudHNbaV0gPSAoaSA9PSAwIHx8ICFmb3JjZV9yZXBl
YXRlZF9maWVsZHNfKQorICAgICAgICAgICAgICAgICAgICA/IGdlbl8uTmV3QndlVXBkYXRlTG9z
c0Jhc2VkKCkKKyAgICAgICAgICAgICAgICAgICAgOiBldmVudHNbMF0tPkNvcHkoKTsKKyAgICBo
aXN0b3J5Xy5wdXNoX2JhY2soZXZlbnRzW2ldLT5Db3B5KCkpOworICB9CiAKICAgc3RkOjpzdHJp
bmcgZW5jb2RlZCA9IGVuY29kZXJfLT5FbmNvZGVCYXRjaChoaXN0b3J5Xy5iZWdpbigpLCBoaXN0
b3J5Xy5lbmQoKSk7CiAgIEFTU0VSVF9UUlVFKHBhcnNlZF9sb2dfLlBhcnNlU3RyaW5nKGVuY29k
ZWQpKTsKKwogICBjb25zdCBhdXRvJiBid2VfbG9zc191cGRhdGVzID0gcGFyc2VkX2xvZ18uYndl
X2xvc3NfdXBkYXRlcygpOworICBBU1NFUlRfRVEoYndlX2xvc3NfdXBkYXRlcy5zaXplKCksIGV2
ZW50X2NvdW50Xyk7CiAKLSAgQVNTRVJUX0VRKGJ3ZV9sb3NzX3VwZGF0ZXMuc2l6ZSgpLCAxdSk7
Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgdGVzdDo6VmVyaWZ5TG9nZ2VkQndlTG9zc0Jhc2VkVXBk
YXRlKCpldmVudCwgYndlX2xvc3NfdXBkYXRlc1swXSkpOworICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGV2ZW50X2NvdW50XzsgKytpKSB7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEJ3ZUxv
c3NCYXNlZFVwZGF0ZSgqZXZlbnRzW2ldLCBid2VfbG9zc191cGRhdGVzW2ldKTsKKyAgfQogfQog
CisvLyBUT0RPKGVsYWRhbG9uL3RlcmVsaXVzKTogVGVzdCB3aXRoIG11bHRpcGxlIGV2ZW50cyBp
biB0aGUgYmF0Y2guCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRJY2VD
YW5kaWRhdGVQYWlyQ29uZmlnKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEljZUNhbmRp
ZGF0ZVBhaXJDb25maWc+IGV2ZW50ID0KICAgICAgIGdlbl8uTmV3SWNlQ2FuZGlkYXRlUGFpckNv
bmZpZygpOwpAQCAtMjU4LDEwICs0NzYsMTEgQEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRl
c3QsIFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZykgewogICAgICAgcGFyc2VkX2xvZ18u
aWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZ3MoKTsKIAogICBBU1NFUlRfRVEoaWNlX2NhbmRpZGF0
ZV9wYWlyX2NvbmZpZ3Muc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxv
Z2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWcoCi0gICAgICAqZXZlbnQsIGljZV9jYW5kaWRhdGVf
cGFpcl9jb25maWdzWzBdKSk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnKCpldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZ3NbMF0pOwogfQogCisvLyBUT0RPKGVs
YWRhbG9uL3RlcmVsaXVzKTogVGVzdCB3aXRoIG11bHRpcGxlIGV2ZW50cyBpbiB0aGUgYmF0Y2gu
CiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWly
KSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXI+IGV2ZW50ID0g
Z2VuXy5OZXdJY2VDYW5kaWRhdGVQYWlyKCk7CiAgIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudC0+
Q29weSgpKTsKQEAgLTI3MiwxOCArNDkxLDIxIEBAIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJU
ZXN0LCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXIpIHsKICAgICAgIHBhcnNlZF9sb2dfLmljZV9j
YW5kaWRhdGVfcGFpcl9ldmVudHMoKTsKIAogICBBU1NFUlRfRVEoaWNlX2NhbmRpZGF0ZV9wYWly
X2V2ZW50cy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkSWNl
Q2FuZGlkYXRlUGFpckV2ZW50KAotICAgICAgKmV2ZW50LCBpY2VfY2FuZGlkYXRlX3BhaXJfZXZl
bnRzWzBdKSk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQo
KmV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlj
ZV9jYW5kaWRhdGVfcGFpcl9ldmVudHNbMF0pOwogfQogCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNv
ZGVyVGVzdCwgUnRjRXZlbnRMb2dnaW5nU3RhcnRlZCkgewogICBjb25zdCBpbnQ2NF90IHRpbWVz
dGFtcF91cyA9IHJ0Yzo6VGltZU1pY3JvcygpOworICBjb25zdCBpbnQ2NF90IHV0Y190aW1lX3Vz
ID0gcnRjOjpUaW1lVVRDTWljcm9zKCk7CiAKLSAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFy
c2VTdHJpbmcoZW5jb2Rlcl8tPkVuY29kZUxvZ1N0YXJ0KHRpbWVzdGFtcF91cykpKTsKKyAgQVNT
RVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoCisgICAgICBlbmNvZGVyXy0+RW5jb2Rl
TG9nU3RhcnQodGltZXN0YW1wX3VzLCB1dGNfdGltZV91cykpKTsKICAgY29uc3QgYXV0byYgc3Rh
cnRfbG9nX2V2ZW50cyA9IHBhcnNlZF9sb2dfLnN0YXJ0X2xvZ19ldmVudHMoKTsKIAogICBBU1NF
UlRfRVEoc3RhcnRfbG9nX2V2ZW50cy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX0VRKHN0YXJ0X2xv
Z19ldmVudHNbMF0udGltZXN0YW1wX3VzLCB0aW1lc3RhbXBfdXMpOworICB2ZXJpZmllcl8uVmVy
aWZ5TG9nZ2VkU3RhcnRFdmVudCh0aW1lc3RhbXBfdXMsIHV0Y190aW1lX3VzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9sb2dfZXZlbnRzWzBdKTsKIH0KIAogVEVT
VF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50TG9nZ2luZ1N0b3BwZWQpIHsKQEAg
LTI5Myw5ICs1MTUsMTAgQEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50
TG9nZ2luZ1N0b3BwZWQpIHsKICAgY29uc3QgYXV0byYgc3RvcF9sb2dfZXZlbnRzID0gcGFyc2Vk
X2xvZ18uc3RvcF9sb2dfZXZlbnRzKCk7CiAKICAgQVNTRVJUX0VRKHN0b3BfbG9nX2V2ZW50cy5z
aXplKCksIDF1KTsKLSAgRVhQRUNUX0VRKHN0b3BfbG9nX2V2ZW50c1swXS50aW1lc3RhbXBfdXMs
IHRpbWVzdGFtcF91cyk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRTdG9wRXZlbnQodGltZXN0
YW1wX3VzLCBzdG9wX2xvZ19ldmVudHNbMF0pOwogfQogCisvLyBUT0RPKGVsYWRhbG9uL3RlcmVs
aXVzKTogVGVzdCB3aXRoIG11bHRpcGxlIGV2ZW50cyBpbiB0aGUgYmF0Y2guCiBURVNUX1AoUnRj
RXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkKSB7CiAgIHN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQ+IGV2ZW50ID0KICAgICAg
IGdlbl8uTmV3UHJvYmVDbHVzdGVyQ3JlYXRlZCgpOwpAQCAtMzA3LDEwICs1MzAsMTEgQEAgVEVT
VF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCkg
ewogICAgICAgcGFyc2VkX2xvZ18uYndlX3Byb2JlX2NsdXN0ZXJfY3JlYXRlZF9ldmVudHMoKTsK
IAogICBBU1NFUlRfRVEoYndlX3Byb2JlX2NsdXN0ZXJfY3JlYXRlZF9ldmVudHMuc2l6ZSgpLCAx
dSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0
ZWRFdmVudCgKLSAgICAgICpldmVudCwgYndlX3Byb2JlX2NsdXN0ZXJfY3JlYXRlZF9ldmVudHNb
MF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVu
dCgKKyAgICAgICpldmVudCwgYndlX3Byb2JlX2NsdXN0ZXJfY3JlYXRlZF9ldmVudHNbMF0pOwog
fQogCisvLyBUT0RPKGVsYWRhbG9uL3RlcmVsaXVzKTogVGVzdCB3aXRoIG11bHRpcGxlIGV2ZW50
cyBpbiB0aGUgYmF0Y2guCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRQ
cm9iZVJlc3VsdEZhaWx1cmUpIHsKICAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UHJvYmVSZXN1
bHRGYWlsdXJlPiBldmVudCA9CiAgICAgICBnZW5fLk5ld1Byb2JlUmVzdWx0RmFpbHVyZSgpOwpA
QCAtMzIxLDEwICs1NDUsMTEgQEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2
ZW50UHJvYmVSZXN1bHRGYWlsdXJlKSB7CiAgIGNvbnN0IGF1dG8mIGJ3ZV9wcm9iZV9mYWlsdXJl
X2V2ZW50cyA9IHBhcnNlZF9sb2dfLmJ3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50cygpOwogCiAgIEFT
U0VSVF9FUShid2VfcHJvYmVfZmFpbHVyZV9ldmVudHMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9U
UlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50KAotICAgICAgKmV2ZW50
LCBid2VfcHJvYmVfZmFpbHVyZV9ldmVudHNbMF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dl
ZEJ3ZVByb2JlRmFpbHVyZUV2ZW50KCpldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50c1swXSk7CiB9CiAKKy8v
IFRPRE8oZWxhZGFsb24vdGVyZWxpdXMpOiBUZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRzIGluIHRo
ZSBiYXRjaC4KIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFByb2JlUmVz
dWx0U3VjY2VzcykgewogICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nl
c3M+IGV2ZW50ID0KICAgICAgIGdlbl8uTmV3UHJvYmVSZXN1bHRTdWNjZXNzKCk7CkBAIC0zMzUs
NzggKzU2MCw2NyBAQCBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRQcm9i
ZVJlc3VsdFN1Y2Nlc3MpIHsKICAgY29uc3QgYXV0byYgYndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRz
ID0gcGFyc2VkX2xvZ18uYndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRzKCk7CiAKICAgQVNTRVJUX0VR
KGJ3ZV9wcm9iZV9zdWNjZXNzX2V2ZW50cy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUodGVz
dDo6VmVyaWZ5TG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQoCi0gICAgICAqZXZlbnQsIGJ3ZV9w
cm9iZV9zdWNjZXNzX2V2ZW50c1swXSkpOworICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlUHJv
YmVTdWNjZXNzRXZlbnQoKmV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRzWzBdKTsKIH0KIAogVEVTVF9QKFJ0
Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nKSB7Ci0gIHN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZz4gZXZlbnQgPQotICAgICAg
Z2VuXy5OZXdSdGNwUGFja2V0SW5jb21pbmcoKTsKLSAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50
LT5Db3B5KCkpOworICBpZiAoIW5ld19lbmNvZGluZ18gJiYgZm9yY2VfcmVwZWF0ZWRfZmllbGRz
XykgeworICAgIC8vIFRoZSBvbGQgZW5jb2RpbmcgZG9lcyBub3Qgd29yayB3aXRoIGR1cGxpY2F0
ZWQgcGFja2V0cy4gU2luY2UgdGhlIGxlZ2FjeQorICAgIC8vIGVuY29kaW5nIGlzIGJlaW5nIHBo
YXNlZCBvdXQsIHdlIHdpbGwgbm90IGZpeCB0aGlzLgorICAgIHJldHVybjsKKyAgfQorCisgIHN0
ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZz4+IGV2
ZW50cyhldmVudF9jb3VudF8pOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50
XzsgKytpKSB7CisgICAgZXZlbnRzW2ldID0gKGkgPT0gMCB8fCAhZm9yY2VfcmVwZWF0ZWRfZmll
bGRzXykKKyAgICAgICAgICAgICAgICAgICAgPyBnZW5fLk5ld1J0Y3BQYWNrZXRJbmNvbWluZygp
CisgICAgICAgICAgICAgICAgICAgIDogZXZlbnRzWzBdLT5Db3B5KCk7CisgICAgaGlzdG9yeV8u
cHVzaF9iYWNrKGV2ZW50c1tpXS0+Q29weSgpKTsKKyAgfQogCiAgIHN0ZDo6c3RyaW5nIGVuY29k
ZWQgPSBlbmNvZGVyXy0+RW5jb2RlQmF0Y2goaGlzdG9yeV8uYmVnaW4oKSwgaGlzdG9yeV8uZW5k
KCkpOwogICBBU1NFUlRfVFJVRShwYXJzZWRfbG9nXy5QYXJzZVN0cmluZyhlbmNvZGVkKSk7CisK
ICAgY29uc3QgYXV0byYgaW5jb21pbmdfcnRjcF9wYWNrZXRzID0gcGFyc2VkX2xvZ18uaW5jb21p
bmdfcnRjcF9wYWNrZXRzKCk7CisgIEFTU0VSVF9FUShpbmNvbWluZ19ydGNwX3BhY2tldHMuc2l6
ZSgpLCBldmVudF9jb3VudF8pOwogCi0gIEFTU0VSVF9FUShpbmNvbWluZ19ydGNwX3BhY2tldHMu
c2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgdGVzdDo6VmVyaWZ5TG9nZ2VkUnRj
cFBhY2tldEluY29taW5nKCpldmVudCwgaW5jb21pbmdfcnRjcF9wYWNrZXRzWzBdKSk7CisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICB2ZXJpZmllcl8u
VmVyaWZ5TG9nZ2VkUnRjcFBhY2tldEluY29taW5nKCpldmVudHNbaV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZ19ydGNwX3BhY2tldHNbaV0p
OworICB9CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFJ0Y3BQ
YWNrZXRPdXRnb2luZykgewotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdGNwUGFja2V0T3V0
Z29pbmc+IGV2ZW50ID0KLSAgICAgIGdlbl8uTmV3UnRjcFBhY2tldE91dGdvaW5nKCk7Ci0gIGhp
c3RvcnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdvaW5nPj4gZXZlbnRzKGV2ZW50X2NvdW50Xyk7
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICBldmVu
dHNbaV0gPSAoaSA9PSAwIHx8ICFmb3JjZV9yZXBlYXRlZF9maWVsZHNfKQorICAgICAgICAgICAg
ICAgICAgICA/IGdlbl8uTmV3UnRjcFBhY2tldE91dGdvaW5nKCkKKyAgICAgICAgICAgICAgICAg
ICAgOiBldmVudHNbMF0tPkNvcHkoKTsKKyAgICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnRzW2ld
LT5Db3B5KCkpOworICB9CiAKICAgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IGVuY29kZXJfLT5FbmNv
ZGVCYXRjaChoaXN0b3J5Xy5iZWdpbigpLCBoaXN0b3J5Xy5lbmQoKSk7CiAgIEFTU0VSVF9UUlVF
KHBhcnNlZF9sb2dfLlBhcnNlU3RyaW5nKGVuY29kZWQpKTsKKwogICBjb25zdCBhdXRvJiBvdXRn
b2luZ19ydGNwX3BhY2tldHMgPSBwYXJzZWRfbG9nXy5vdXRnb2luZ19ydGNwX3BhY2tldHMoKTsK
KyAgQVNTRVJUX0VRKG91dGdvaW5nX3J0Y3BfcGFja2V0cy5zaXplKCksIGV2ZW50X2NvdW50Xyk7
CiAKLSAgQVNTRVJUX0VRKG91dGdvaW5nX3J0Y3BfcGFja2V0cy5zaXplKCksIDF1KTsKLSAgRVhQ
RUNUX1RSVUUoCi0gICAgICB0ZXN0OjpWZXJpZnlMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmcoKmV2
ZW50LCBvdXRnb2luZ19ydGNwX3BhY2tldHNbMF0pKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBldmVudF9jb3VudF87ICsraSkgeworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRSdGNwUGFj
a2V0T3V0Z29pbmcoKmV2ZW50c1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dGdvaW5nX3J0Y3BfcGFja2V0c1tpXSk7CisgIH0KIH0KIAogVEVTVF9Q
KFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcpIHsKLSAg
dWludDMyX3Qgc3NyYyA9IHBybmdfLlJhbmQ8dWludDMyX3Q+KCk7Ci0gIFJ0cEhlYWRlckV4dGVu
c2lvbk1hcCBleHRlbnNpb25fbWFwOyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFRlc3QgZXh0ZW5zaW9u
cyB0b28uCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0cFBhY2tldEluY29taW5nPiBldmVu
dCA9Ci0gICAgICBnZW5fLk5ld1J0cFBhY2tldEluY29taW5nKHNzcmMsIGV4dGVuc2lvbl9tYXAp
OwotICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnQtPkNvcHkoKSk7Ci0KLSAgc3RkOjpzdHJpbmcg
ZW5jb2RlZCA9IGVuY29kZXJfLT5FbmNvZGVCYXRjaChoaXN0b3J5Xy5iZWdpbigpLCBoaXN0b3J5
Xy5lbmQoKSk7Ci0gIEFTU0VSVF9UUlVFKHBhcnNlZF9sb2dfLlBhcnNlU3RyaW5nKGVuY29kZWQp
KTsKLSAgY29uc3QgYXV0byYgaW5jb21pbmdfcnRwX3BhY2tldHNfYnlfc3NyYyA9Ci0gICAgICBw
YXJzZWRfbG9nXy5pbmNvbWluZ19ydHBfcGFja2V0c19ieV9zc3JjKCk7Ci0KLSAgQVNTRVJUX0VR
KGluY29taW5nX3J0cF9wYWNrZXRzX2J5X3NzcmMuc2l6ZSgpLCAxdSk7Ci0gIGNvbnN0IGF1dG8m
IHN0cmVhbSA9IGluY29taW5nX3J0cF9wYWNrZXRzX2J5X3NzcmNbMF07Ci0gIEVYUEVDVF9FUShz
dHJlYW0uc3NyYywgc3NyYyk7Ci0gIEFTU0VSVF9FUShzdHJlYW0uaW5jb21pbmdfcGFja2V0cy5z
aXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICB0ZXN0OjpWZXJpZnlMb2dnZWRSdHBQ
YWNrZXRJbmNvbWluZygqZXZlbnQsIHN0cmVhbS5pbmNvbWluZ19wYWNrZXRzWzBdKSk7CisgIFRl
c3RSdHBQYWNrZXRzPFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcsIExvZ2dlZFJ0cFBhY2tldElu
Y29taW5nPigpOwogfQogCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRS
dHBQYWNrZXRPdXRnb2luZykgewotICB1aW50MzJfdCBzc3JjID0gcHJuZ18uUmFuZDx1aW50MzJf
dD4oKTsKLSAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwIGV4dGVuc2lvbl9tYXA7ICAvLyBUT0RPKHRl
cmVsaXVzKTogVGVzdCBleHRlbnNpb25zIHRvby4KLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
UnRwUGFja2V0T3V0Z29pbmc+IGV2ZW50ID0KLSAgICAgIGdlbl8uTmV3UnRwUGFja2V0T3V0Z29p
bmcoc3NyYywgZXh0ZW5zaW9uX21hcCk7Ci0gIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudC0+Q29w
eSgpKTsKLQotICBzdGQ6OnN0cmluZyBlbmNvZGVkID0gZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhp
c3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVuZCgpKTsKLSAgQVNTRVJUX1RSVUUocGFyc2VkX2xv
Z18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOwotICBjb25zdCBhdXRvJiBvdXRnb2luZ19ydHBfcGFj
a2V0c19ieV9zc3JjID0KLSAgICAgIHBhcnNlZF9sb2dfLm91dGdvaW5nX3J0cF9wYWNrZXRzX2J5
X3NzcmMoKTsKLQotICBBU1NFUlRfRVEob3V0Z29pbmdfcnRwX3BhY2tldHNfYnlfc3NyYy5zaXpl
KCksIDF1KTsKLSAgY29uc3QgYXV0byYgc3RyZWFtID0gb3V0Z29pbmdfcnRwX3BhY2tldHNfYnlf
c3NyY1swXTsKLSAgRVhQRUNUX0VRKHN0cmVhbS5zc3JjLCBzc3JjKTsKLSAgQVNTRVJUX0VRKHN0
cmVhbS5vdXRnb2luZ19wYWNrZXRzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSgKLSAgICAg
IHRlc3Q6OlZlcmlmeUxvZ2dlZFJ0cFBhY2tldE91dGdvaW5nKCpldmVudCwgc3RyZWFtLm91dGdv
aW5nX3BhY2tldHNbMF0pKTsKKyAgVGVzdFJ0cFBhY2tldHM8UnRjRXZlbnRSdHBQYWNrZXRPdXRn
b2luZywgTG9nZ2VkUnRwUGFja2V0T3V0Z29pbmc+KCk7CiB9CiAKKy8vIFRPRE8oZWxhZGFsb24v
dGVyZWxpdXMpOiBUZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRzIGluIHRoZSBiYXRjaC4KIFRFU1Rf
UChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZp
ZykgewogICB1aW50MzJfdCBzc3JjID0gcHJuZ18uUmFuZDx1aW50MzJfdD4oKTsKICAgUnRwSGVh
ZGVyRXh0ZW5zaW9uTWFwIGV4dGVuc2lvbnMgPSBnZW5fLk5ld1J0cEhlYWRlckV4dGVuc2lvbk1h
cCgpOwpAQCAtNDE5LDkgKzYzMywxMCBAQCBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwg
UnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcpIHsKICAgY29uc3QgYXV0byYgdmlkZW9f
cmVjdl9jb25maWdzID0gcGFyc2VkX2xvZ18udmlkZW9fcmVjdl9jb25maWdzKCk7CiAKICAgQVNT
RVJUX0VRKHZpZGVvX3JlY3ZfY29uZmlncy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUodGVz
dDo6VmVyaWZ5TG9nZ2VkVmlkZW9SZWN2Q29uZmlnKCpldmVudCwgdmlkZW9fcmVjdl9jb25maWdz
WzBdKSk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRWaWRlb1JlY3ZDb25maWcoKmV2ZW50LCB2
aWRlb19yZWN2X2NvbmZpZ3NbMF0pOwogfQogCisvLyBUT0RPKGVsYWRhbG9uL3RlcmVsaXVzKTog
VGVzdCB3aXRoIG11bHRpcGxlIGV2ZW50cyBpbiB0aGUgYmF0Y2guCiBURVNUX1AoUnRjRXZlbnRM
b2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWcpIHsKICAgdWludDMy
X3Qgc3NyYyA9IHBybmdfLlJhbmQ8dWludDMyX3Q+KCk7CiAgIFJ0cEhlYWRlckV4dGVuc2lvbk1h
cCBleHRlbnNpb25zID0gZ2VuXy5OZXdSdHBIZWFkZXJFeHRlbnNpb25NYXAoKTsKQEAgLTQzNCwx
MSArNjQ5LDE1IEBAIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFZpZGVv
U2VuZFN0cmVhbUNvbmZpZykgewogICBjb25zdCBhdXRvJiB2aWRlb19zZW5kX2NvbmZpZ3MgPSBw
YXJzZWRfbG9nXy52aWRlb19zZW5kX2NvbmZpZ3MoKTsKIAogICBBU1NFUlRfRVEodmlkZW9fc2Vu
ZF9jb25maWdzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRW
aWRlb1NlbmRDb25maWcoKmV2ZW50LCB2aWRlb19zZW5kX2NvbmZpZ3NbMF0pKTsKKyAgdmVyaWZp
ZXJfLlZlcmlmeUxvZ2dlZFZpZGVvU2VuZENvbmZpZygqZXZlbnQsIHZpZGVvX3NlbmRfY29uZmln
c1swXSk7CiB9CiAKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFJhbmRvbVNlZWRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDEsIDIsIDMsIDQsIDUpKTsKK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKAorICAgIFJhbmRvbVNlZWRzLAorICAgIFJ0Y0V2ZW50TG9nRW5jb2RlclRl
c3QsCisgICAgOjp0ZXN0aW5nOjpDb21iaW5lKC8qIFJhbmRvbSBzZWVkKjogKi8gOjp0ZXN0aW5n
OjpWYWx1ZXMoMSwgMiwgMywgNCwgNSksCisgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuY29k
aW5nOiAqLyA6OnRlc3Rpbmc6OkJvb2woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgLyogRXZl
bnQgY291bnQ6ICovIDo6dGVzdGluZzo6VmFsdWVzKDEsIDIsIDEwLCAxMDApLAorICAgICAgICAg
ICAgICAgICAgICAgICAvKiBSZXBlYXRlZCBmaWVsZHM6ICovIDo6dGVzdGluZzo6Qm9vbCgpKSk7
CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3Zh
cmludC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3ZhcmludC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWUyOWU4NDgw
YmQ1YWExMWNhMmUxYjY0MDU3YmRhODZkY2Y0M2JhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2VuY29kZXIvdmFyaW50LmNjCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChj
KSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvdmFyaW50LmgiCisK
KyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKworLy8gVE9ETyhlbGFkYWxvbik6IEFkZCB1
bml0IHRlc3RzLgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY29uc3Qgc2l6ZV90IGtNYXhWYXJJ
bnRMZW5ndGhCeXRlcyA9IDEwOyAgLy8gY2VpbCg2NCAvIDcuMCkgaXMgMTAuCisKK3N0ZDo6c3Ry
aW5nIEVuY29kZVZhckludCh1aW50NjRfdCBpbnB1dCkgeworICBzdGQ6OnN0cmluZyBvdXRwdXQ7
CisgIG91dHB1dC5yZXNlcnZlKGtNYXhWYXJJbnRMZW5ndGhCeXRlcyk7CisKKyAgZG8geworICAg
IHVpbnQ4X3QgYnl0ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGlucHV0ICYgMHg3Zik7CisgICAg
aW5wdXQgPj49IDc7CisgICAgaWYgKGlucHV0ID4gMCkgeworICAgICAgYnl0ZSB8PSAweDgwOwor
ICAgIH0KKyAgICBvdXRwdXQgKz0gYnl0ZTsKKyAgfSB3aGlsZSAoaW5wdXQgPiAwKTsKKworICBS
VENfRENIRUNLX0dFKG91dHB1dC5zaXplKCksIDF1KTsKKyAgUlRDX0RDSEVDS19MRShvdXRwdXQu
c2l6ZSgpLCBrTWF4VmFySW50TGVuZ3RoQnl0ZXMpOworCisgIHJldHVybiBvdXRwdXQ7Cit9CisK
Ky8vIFRoZXJlIGlzIHNvbWUgY29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZSBmbGF2b3JzIG9m
IHRoaXMgZnVuY3Rpb24uCisvLyBGb3IgcGVyZm9ybWFuY2UncyBzYWtlLCBpdCdzIGJlc3QgdG8g
anVzdCBrZWVwIGl0Lgorc2l6ZV90IERlY29kZVZhckludChhYnNsOjpzdHJpbmdfdmlldyBpbnB1
dCwgdWludDY0X3QqIG91dHB1dCkgeworICBSVENfRENIRUNLKG91dHB1dCk7CisKKyAgdWludDY0
X3QgZGVjb2RlZCA9IDA7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoKCkg
JiYgaSA8IGtNYXhWYXJJbnRMZW5ndGhCeXRlczsgKytpKSB7CisgICAgZGVjb2RlZCArPSAoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KGlucHV0W2ldICYgMHg3ZikKKyAgICAgICAgICAgICAgICA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oNyAqIGkpKTsKKyAgICBpZiAoIShpbnB1dFtpXSAmIDB4ODAp
KSB7CisgICAgICAqb3V0cHV0ID0gZGVjb2RlZDsKKyAgICAgIHJldHVybiBpICsgMTsKKyAgICB9
CisgIH0KKworICByZXR1cm4gMDsKK30KKworLy8gVGhlcmUgaXMgc29tZSBjb2RlIGR1cGxpY2F0
aW9uIGJldHdlZW4gdGhlIGZsYXZvcnMgb2YgdGhpcyBmdW5jdGlvbi4KKy8vIEZvciBwZXJmb3Jt
YW5jZSdzIHNha2UsIGl0J3MgYmVzdCB0byBqdXN0IGtlZXAgaXQuCitzaXplX3QgRGVjb2RlVmFy
SW50KHJ0Yzo6Qml0QnVmZmVyKiBpbnB1dCwgdWludDY0X3QqIG91dHB1dCkgeworICBSVENfRENI
RUNLKG91dHB1dCk7CisKKyAgdWludDY0X3QgZGVjb2RlZCA9IDA7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwga01heFZhckludExlbmd0aEJ5dGVzOyArK2kpIHsKKyAgICB1aW50OF90IGJ5dGU7
CisgICAgaWYgKCFpbnB1dC0+UmVhZFVJbnQ4KCZieXRlKSkgeworICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorICAgIGRlY29kZWQgKz0KKyAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihieXRl
ICYgMHg3ZikgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDcgKiBpKSk7CisgICAgaWYgKCEoYnl0
ZSAmIDB4ODApKSB7CisgICAgICAqb3V0cHV0ID0gZGVjb2RlZDsKKyAgICAgIHJldHVybiBpICsg
MTsKKyAgICB9CisgIH0KKworICByZXR1cm4gMDsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvdmFyaW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci92
YXJpbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NTQ5NGFlNzUzZmMyNTg3ZTdjYmIwZTNmYWNjOTRlY2YxMzY4
MmJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvdmFyaW50LmgKQEAgLTAsMCAr
MSw0NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTE9HR0lOR19SVENfRVZF
TlRfTE9HX0VOQ09ERVJfVkFSSU5UX0hfCisjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19F
TkNPREVSX1ZBUklOVF9IXworCisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9z
dHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYml0YnVmZmVyLmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworCitleHRlcm4gY29uc3Qgc2l6ZV90IGtNYXhWYXJJbnRMZW5n
dGhCeXRlczsKKworLy8gRW5jb2RlIGEgZ2l2ZW4gdWludDY0X3QgYXMgYSB2YXJpbnQuIEZyb20g
bGVhc3QgdG8gbW9zdCBzaWduaWZpY2FudCwKKy8vIGVhY2ggYmF0Y2ggb2Ygc2V2ZW4gYml0cyBh
cmUgcHV0IGludG8gdGhlIGxvd2VyIGJpdHMgb2YgYSBieXRlLCBhbmQgdGhlIGxhc3QKKy8vIHJl
bWFpbmluZyBiaXQgaW4gdGhhdCBieXRlICh0aGUgaGlnaGVzdCBvbmUpIG1hcmtzIHdoZXRoZXIg
YWRkaXRpb25hbCBieXRlcworLy8gZm9sbG93ICh3aGljaCBoYXBwZW5zIGlmIGFuZCBvbmx5IGlm
IHRoZXJlIGFyZSBvdGhlciBiaXRzIGluIHxpbnB1dHwgd2hpY2gKKy8vIGFyZSBub24temVybyku
CisvLyBOb3RlczogSWYgaW5wdXQgPT0gMCwgb25lIGJ5dGUgaXMgdXNlZC4gSWYgaW5wdXQgaXMg
dWludDY0X3Q6Om1heCwgZXhhY3RseQorLy8ga01heFZhckludExlbmd0aEJ5dGVzIGFyZSB1c2Vk
Lgorc3RkOjpzdHJpbmcgRW5jb2RlVmFySW50KHVpbnQ2NF90IGlucHV0KTsKKworLy8gSW52ZXJz
ZSBvZiBFbmNvZGVWYXJJbnQoKS4KKy8vIElmIGRlY29kaW5nIGlzIHN1Y2Nlc3NmdWwsIGEgbm9u
LXplcm8gbnVtYmVyIGlzIHJldHVybmVkLCBpbmRpY2F0aW5nIHRoZQorLy8gbnVtYmVyIG9mIGJ5
dGVzIHJlYWQgZnJvbSB8aW5wdXR8LCBhbmQgdGhlIGRlY29kZWQgdmFyaW50IGlzIHdyaXR0ZW4K
Ky8vIGludG8gfG91dHB1dHwuCisvLyBJZiBub3Qgc3VjY2Vzc2Z1bCwgMCBpcyByZXR1cm5lZCwg
YW5kIHxvdXRwdXR8IGlzIG5vdCBtb2RpZmllZC4KK3NpemVfdCBEZWNvZGVWYXJJbnQoYWJzbDo6
c3RyaW5nX3ZpZXcgaW5wdXQsIHVpbnQ2NF90KiBvdXRwdXQpOworCisvLyBTYW1lIGFzIG90aGVy
IHZlcnNpb24sIGJ1dCB1c2VzIGEgcnRjOjpCaXRCdWZmZXIgZm9yIGlucHV0LgorLy8gU29tZSBi
aXRzIG1heSBiZSBjb25zdW1lZCBldmVuIGlmIGEgdmFyaW50IGZhaWxzIHRvIGJlIHJlYWQuCitz
aXplX3QgRGVjb2RlVmFySW50KHJ0Yzo6Qml0QnVmZmVyKiBpbnB1dCwgdWludDY0X3QqIG91dHB1
dCk7CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBMT0dHSU5HX1JUQ19F
VkVOVF9MT0dfRU5DT0RFUl9WQVJJTlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oCmluZGV4IDIxZDZlNDhlMGY1Mjkw
NDUwMDQ5MmYzYWVhYTllYzZkM2I5NjdmNDcuLjdhZTYzNzU4YjE1OGFiMzA2ZTExZjA1NTBjODk4
ZDhkYzU4ZDdhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaApAQCAtNTcsMTIgKzU3LDEzIEBAIGNsYXNzIFJ0Y0V2
ZW50IHsKIAogICB2aXJ0dWFsIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0ID0gMDsKIAotICB2
aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0ID0gMDsKLQotICBj
b25zdCBpbnQ2NF90IHRpbWVzdGFtcF91c187CisgIGludDY0X3QgdGltZXN0YW1wX21zKCkgY29u
c3QgeyByZXR1cm4gdGltZXN0YW1wX3VzXyAvIDEwMDA7IH0KKyAgaW50NjRfdCB0aW1lc3RhbXBf
dXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXNfOyB9CiAKICBwcm90ZWN0ZWQ6CiAgIGV4
cGxpY2l0IFJ0Y0V2ZW50KGludDY0X3QgdGltZXN0YW1wX3VzKSA6IHRpbWVzdGFtcF91c18odGlt
ZXN0YW1wX3VzKSB7fQorCisgIGNvbnN0IGludDY0X3QgdGltZXN0YW1wX3VzXzsKIH07CiAKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X2Fscl9zdGF0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2Fscl9zdGF0ZS5jYwppbmRl
eCBjMWYxYjM5NTMyMDMzMDEwYjVjNmM4MWI0ZjQ4NjU2YzE2ODVkNjZjLi44ZTVjMmNhODJmNzFj
YzlmZGVmZjhiYjVkNzU2YmE2NGRhNzJlNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF9hbHJfc3RhdGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0
YXRlLmNjCkBAIC0yOCw4ICsyOCw4IEBAIGJvb2wgUnRjRXZlbnRBbHJTdGF0ZTo6SXNDb25maWdF
dmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRj
RXZlbnQ+IFJ0Y0V2ZW50QWxyU3RhdGU6OkNvcHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpX
cmFwVW5pcXVlPFJ0Y0V2ZW50PihuZXcgUnRjRXZlbnRBbHJTdGF0ZSgqdGhpcykpOworc3RkOjp1
bmlxdWVfcHRyPFJ0Y0V2ZW50QWxyU3RhdGU+IFJ0Y0V2ZW50QWxyU3RhdGU6OkNvcHkoKSBjb25z
dCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50QWxyU3RhdGU+KG5ldyBSdGNF
dmVudEFsclN0YXRlKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2Fscl9zdGF0ZS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmgKaW5kZXggZTczN2M5MTVlMWQ1NjExMThmYzBlYjQ2NDcw
ZThkYWU2ZmY2OGM3My4uOTc2OTU4NWQzZDY4MjY0NzdkMmU4YTc1Njc2MTgwNDdhMzE1ODgwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmgKQEAgLTI2LDEyICsyNiwxNCBAQCBjbGFz
cyBSdGNFdmVudEFsclN0YXRlIGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50IHsKIAogICBib29sIElz
Q29uZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnQ+IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QWxy
U3RhdGU+IENvcHkoKSBjb25zdDsKIAotICBjb25zdCBib29sIGluX2Fscl87CisgIGJvb2wgaW5f
YWxyKCkgY29uc3QgeyByZXR1cm4gaW5fYWxyXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRB
bHJTdGF0ZShjb25zdCBSdGNFdmVudEFsclN0YXRlJiBvdGhlcik7CisKKyAgY29uc3QgYm9vbCBp
bl9hbHJfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2
ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLmNjCmluZGV4IGRjZjJkN2Rl
NTkyMjRhZjJkNjRjMTExY2ViZDZmYjQ0NWFkNTI3OWEuLjU3MWI5YTkzZDNlYjdkZWU5ZTYyYzAz
N2VkOTY4NDk4OGQzZTQ4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1
ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9h
dWRpb19uZXR3b3JrX2FkYXB0YXRpb24uY2MKQEAgLTE0LDEyICsxNCwxNSBAQAogCiAjaW5jbHVk
ZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
YXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZp
Zy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IAogUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uOjpSdGNFdmVudEF1ZGlvTmV0d29ya0Fk
YXB0YXRpb24oCiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+
IGNvbmZpZykKLSAgICA6IGNvbmZpZ18oc3RkOjptb3ZlKGNvbmZpZykpIHt9CisgICAgOiBjb25m
aWdfKHN0ZDo6bW92ZShjb25maWcpKSB7CisgIFJUQ19EQ0hFQ0soY29uZmlnXyk7Cit9CiAKIFJ0
Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbjo6UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0
aW9uKAogICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiYgb3RoZXIpCkBA
IC0zNiw3ICszOSw4IEBAIGJvb2wgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uOjpJc0Nv
bmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudD4gUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uOjpDb3B5KCkgY29uc3Qg
eworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4KK1J0Y0V2
ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbjo6Q29weSgpIGNvbnN0IHsKICAgcmV0dXJuIGFic2w6
OldyYXBVbmlxdWUobmV3IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbigqdGhpcykpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19uZXR3b3JrX2Fk
YXB0YXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX25ldHdvcmtfYWRhcHRh
dGlvbi5oCmluZGV4IDY1ZmJhZDg2MjFkMDNlYTdkNmYyYmEyNmNjNWY3NTkyMjU1YTE2MjQuLmVj
NmNhMTEyNWM0MGEzZTZhZTJmOTVlNzU3MTkyN2I0NTFhZGI1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi5oCkBAIC0yOSwxMiAr
MjksMTQgQEAgY2xhc3MgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uIGZpbmFsIDogcHVi
bGljIFJ0Y0V2ZW50IHsKIAogICBib29sIElzQ29uZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsK
IAotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAg
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4gQ29weSgpIGNv
bnN0OwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBBdWRpb0VuY29kZXJSdW50aW1l
Q29uZmlnPiBjb25maWdfOworICBjb25zdCBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnJiBjb25m
aWcoKSBjb25zdCB7IHJldHVybiAqY29uZmlnXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRB
dWRpb05ldHdvcmtBZGFwdGF0aW9uKGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlv
biYgb3RoZXIpOworCisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBBdWRpb0VuY29kZXJS
dW50aW1lQ29uZmlnPiBjb25maWdfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcGxheW91dC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3BsYXlvdXQuY2MKaW5kZXggYTk2NDNiYTg2OGMwMzhk
ODFkMGEzNTU3MjM5ZjlkOGYyYTBlM2ZjOC4uNmM0YWE5OGQzZTIzOGNhYzMyNTNkZjI1MzNkYTBj
MTA2M2YyMjI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcGxh
eW91dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19wbGF5b3V0LmNjCkBA
IC0yNyw4ICsyNyw5IEBAIGJvb2wgUnRjRXZlbnRBdWRpb1BsYXlvdXQ6OklzQ29uZmlnRXZlbnQo
KSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
PiBSdGNFdmVudEF1ZGlvUGxheW91dDo6Q29weSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6Oldy
YXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNFdmVudEF1ZGlvUGxheW91dCgqdGhpcykpOworc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9QbGF5b3V0PiBSdGNFdmVudEF1ZGlvUGxheW91dDo6
Q29weSgpIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRBdWRpb1Bs
YXlvdXQ+KAorICAgICAgbmV3IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KCp0aGlzKSk7CiB9CiAKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X2F1ZGlvX3BsYXlvdXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3BsYXlvdXQu
aAppbmRleCAzMDgwZjViOWYwZTcyZWIxYWRkM2E5ZDIxNmU2NWNlZDdlY2Y1MzYzLi40YjQwZjVj
MDI3MjhhYTZiNGYyMDNkZGMwMWY2Yzk3MzM1ZDVkZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9hdWRpb19wbGF5b3V0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZl
bnRfYXVkaW9fcGxheW91dC5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIExPR0dJTkdfUlRD
X0VWRU5UX0xPR19FVkVOVFNfUlRDX0VWRU5UX0FVRElPX1BMQVlPVVRfSF8KICNkZWZpbmUgTE9H
R0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfQVVESU9fUExBWU9VVF9IXwogCisj
aW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIKQEAgLTI2LDEyICsyNywxNCBAQCBj
bGFzcyBSdGNFdmVudEF1ZGlvUGxheW91dCBmaW5hbCA6IHB1YmxpYyBSdGNFdmVudCB7CiAKICAg
Ym9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRy
PFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudEF1ZGlvUGxheW91dD4gQ29weSgpIGNvbnN0OwogCi0gIGNvbnN0IHVpbnQzMl90IHNzcmNf
OworICB1aW50MzJfdCBzc3JjKCkgY29uc3QgeyByZXR1cm4gc3NyY187IH0KIAogIHByaXZhdGU6
CiAgIFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0JiBvdGhl
cik7CisKKyAgY29uc3QgdWludDMyX3Qgc3NyY187CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0
cmVhbV9jb25maWcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0
cmVhbV9jb25maWcuY2MKaW5kZXggZmVlN2MzYzc2NmMzZDFkYTQ4YmViODhjMDdlNTBlMDNhMGVk
MDU1NS4uZmRlZjM5M2Q1NDZjMWE4OTE2NjJhMjU1NGQyZDA3NzlhOTE3NzVlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZp
Zy5jYwpAQCAtMTQsMTIgKzE0LDE1IEBACiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnku
aCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX3N0cmVhbV9jb25maWcuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIFJ0
Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnOjpSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVh
bUNvbmZpZygKICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZp
ZykKLSAgICA6IGNvbmZpZ18oc3RkOjptb3ZlKGNvbmZpZykpIHt9CisgICAgOiBjb25maWdfKHN0
ZDo6bW92ZShjb25maWcpKSB7CisgIFJUQ19EQ0hFQ0soY29uZmlnXyk7Cit9CiAKIFJ0Y0V2ZW50
QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnOjpSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZp
ZygKICAgICBjb25zdCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3RoZXIpCkBA
IC0zNiw5ICszOSw5IEBAIGJvb2wgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc6Oklz
Q29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnOjpDb3B5KCkgY29u
c3QgewotICBhdXRvIGNvbmZpZ19jb3B5ID0gYWJzbDo6bWFrZV91bmlxdWU8cnRjbG9nOjpTdHJl
YW1Db25maWc+KCpjb25maWdfKTsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+
KAorc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnPgorUnRj
RXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc6OkNvcHkoKSBjb25zdCB7CisgIHJldHVybiBh
YnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnPigKICAgICAg
IG5ldyBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZygqdGhpcykpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0cmVhbV9jb25m
aWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZp
Zy5oCmluZGV4IDI3NTc2NTAzMTQzNjIwOWQyOTlmZTdhZGQ3NTYxZGQzYzM0MThiNTUuLjJiNzNm
NjNmMDAwZGZmMDZmOTRmMzliYmEwY2MzYjNhNzYzNDhmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
dmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5oCkBAIC0zMSwx
MyArMzEsMTUgQEAgY2xhc3MgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWcgZmluYWwg
OiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJy
aWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRl
OworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc+IENv
cHkoKSBjb25zdDsKIAotICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgcnRjbG9nOjpTdHJl
YW1Db25maWc+IGNvbmZpZ187CisgIGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnJiBjb25maWco
KSBjb25zdCB7IHJldHVybiAqY29uZmlnXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRBdWRp
b1JlY2VpdmVTdHJlYW1Db25maWcoCiAgICAgICBjb25zdCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0
cmVhbUNvbmZpZyYgb3RoZXIpOworCisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNs
b2c6OlN0cmVhbUNvbmZpZz4gY29uZmlnXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2Nv
bmZpZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZp
Zy5jYwppbmRleCA0NzkzOWM3YmRjMzJlZjUxYWYwYjkwOTJkMDQ5OWU1YmE4OGU0OTQ0Li5mMWE4
NWJmZjY5NDY1MDA0NDZmZThlMzE4YjlhYTBmYWUxYzNjNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF9hdWRpb19zZW5kX3N0cmVhbV9jb25maWcuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnLmNjCkBAIC0xNCwxMiAr
MTQsMTUgQEAKIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImxv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogUnRjRXZlbnRBdWRpb1NlbmRT
dHJlYW1Db25maWc6OlJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmlnKQotICAgIDogY29uZmlnXyhzdGQ6
Om1vdmUoY29uZmlnKSkge30KKyAgICA6IGNvbmZpZ18oc3RkOjptb3ZlKGNvbmZpZykpIHsKKyAg
UlRDX0RDSEVDSyhjb25maWdfKTsKK30KIAogUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc6
OlJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKAogICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9T
ZW5kU3RyZWFtQ29uZmlnJiBvdGhlcikKQEAgLTM2LDkgKzM5LDEwIEBAIGJvb2wgUnRjRXZlbnRB
dWRpb1NlbmRTdHJlYW1Db25maWc6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiB0
cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50QXVkaW9TZW5kU3Ry
ZWFtQ29uZmlnOjpDb3B5KCkgY29uc3QgewotICBhdXRvIGNvbmZpZ19jb3B5ID0gYWJzbDo6bWFr
ZV91bmlxdWU8cnRjbG9nOjpTdHJlYW1Db25maWc+KCpjb25maWdfKTsKLSAgcmV0dXJuIGFic2w6
OldyYXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZygq
dGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnPgor
UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc6OkNvcHkoKSBjb25zdCB7CisgIHJldHVybiBh
YnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnPigKKyAgICAgIG5l
dyBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZygqdGhpcykpOwogfQogCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19z
ZW5kX3N0cmVhbV9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3NlbmRf
c3RyZWFtX2NvbmZpZy5oCmluZGV4IGIyNDhhNjE5MTUwMTllOTdhNmU3NTg5NzdiYTYwMmE5NWMw
ZGZjMzEuLmMwZWZhOTUwOTAxYmJlZGMyMDVkZTQzMWQ1ZGUxYTY4ZDYyNmRhZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5oCkBA
IC0zMSwxMiArMzEsMTQgQEAgY2xhc3MgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcgZmlu
YWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJy
aWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc+IENv
cHkoKSBjb25zdDsKIAotICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgcnRjbG9nOjpTdHJl
YW1Db25maWc+IGNvbmZpZ187CisgIGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnJiBjb25maWco
KSBjb25zdCB7IHJldHVybiAqY29uZmlnXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRBdWRp
b1NlbmRTdHJlYW1Db25maWcoY29uc3QgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcmIG90
aGVyKTsKKworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgcnRjbG9nOjpTdHJlYW1Db25m
aWc+IGNvbmZpZ187CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2RlbGF5X2Jhc2VkLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9kZWxheV9iYXNlZC5jYwppbmRleCA4YzE3OTcx
MjYwNTIwYmJhZjMyYTIzNjEwZGU3ZDExYWE1NmZkMzU5Li5kY2M4NzQyMWY4NzM3ZDdlMzNmYzZk
ZTJjZjZlMzA2ZGNmMWYyYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9i
d2VfdXBkYXRlX2RlbGF5X2Jhc2VkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3
ZV91cGRhdGVfZGVsYXlfYmFzZWQuY2MKQEAgLTM2LDggKzM2LDEwIEBAIGJvb2wgUnRjRXZlbnRC
d2VVcGRhdGVEZWxheUJhc2VkOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRCd2VVcGRhdGVEZWxh
eUJhc2VkOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVu
dD4obmV3IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCgqdGhpcykpOworc3RkOjp1bmlxdWVf
cHRyPFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZD4gUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJh
c2VkOjpDb3B5KCkKKyAgICBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2
ZW50QndlVXBkYXRlRGVsYXlCYXNlZD4oCisgICAgICBuZXcgUnRjRXZlbnRCd2VVcGRhdGVEZWxh
eUJhc2VkKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfZGVsYXlfYmFzZWQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfZGVsYXlfYmFzZWQuaAppbmRleCAzZjQ3ZGM3
Zjk3MDQ1ZDI3OWVkYTIyYmQ5YmI4YTRmYjYyMWQ5ODNiLi5hOTdkNDlmNWE1NGU0N2JjMDk4MmJm
OTQ1NWIxZDNkZDQxNDFjOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9i
d2VfdXBkYXRlX2RlbGF5X2Jhc2VkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndl
X3VwZGF0ZV9kZWxheV9iYXNlZC5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIExPR0dJTkdf
UlRDX0VWRU5UX0xPR19FVkVOVFNfUlRDX0VWRU5UX0JXRV9VUERBVEVfREVMQVlfQkFTRURfSF8K
ICNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfQldFX1VQREFU
RV9ERUxBWV9CQVNFRF9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5
PgogCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIK
QEAgLTI5LDEzICszMCwxNiBAQCBjbGFzcyBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQgZmlu
YWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJy
aWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkPiBDb3B5
KCkgY29uc3Q7CiAKLSAgY29uc3QgaW50MzJfdCBiaXRyYXRlX2Jwc187Ci0gIGNvbnN0IEJhbmR3
aWR0aFVzYWdlIGRldGVjdG9yX3N0YXRlXzsKKyAgaW50MzJfdCBiaXRyYXRlX2JwcygpIGNvbnN0
IHsgcmV0dXJuIGJpdHJhdGVfYnBzXzsgfQorICBCYW5kd2lkdGhVc2FnZSBkZXRlY3Rvcl9zdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIGRldGVjdG9yX3N0YXRlXzsgfQogCiAgcHJpdmF0ZToKICAgUnRj
RXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkKGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNl
ZCYgb3RoZXIpOworCisgIGNvbnN0IGludDMyX3QgYml0cmF0ZV9icHNfOworICBjb25zdCBCYW5k
d2lkdGhVc2FnZSBkZXRlY3Rvcl9zdGF0ZV87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2xvc3NfYmFz
ZWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2xvc3NfYmFzZWQuY2MK
aW5kZXggYjBlNzJkZGIwYWE3OTRmZDY3MzMzYjA2NTI0NzEzYTE4Y2RmNjk4Yy4uODQ1MzIzOGNm
OTAzYjM4ZTkxNDUyOTEzMTEwOGViOGE1ODUyZTk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9sb3NzX2Jhc2VkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5jYwpAQCAtMzgsOCArMzgsMTAgQEAgYm9v
bCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZDo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAg
cmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50Qndl
VXBkYXRlTG9zc0Jhc2VkOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1
ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkKCp0aGlzKSk7CitzdGQ6
OnVuaXF1ZV9wdHI8UnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQ+IFJ0Y0V2ZW50QndlVXBkYXRl
TG9zc0Jhc2VkOjpDb3B5KCkKKyAgICBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVl
PFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkPigKKyAgICAgIG5ldyBSdGNFdmVudEJ3ZVVwZGF0
ZUxvc3NCYXNlZCgqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2xvc3NfYmFzZWQuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5oCmluZGV4IDJkNGZm
ZGExYjFlYTZlZDY2ZDAxODAwZGU3NDlkNmExZDQyODg3ZDguLmI0Zjg4Nzc1ZmI3MmVhYTk2MThh
YWE5MTllYzEzNmNjNWQ4M2ZlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3
ZV91cGRhdGVfbG9zc19iYXNlZC5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIExPR0dJTkdf
UlRDX0VWRU5UX0xPR19FVkVOVFNfUlRDX0VWRU5UX0JXRV9VUERBVEVfTE9TU19CQVNFRF9IXwog
I2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9CV0VfVVBEQVRF
X0xPU1NfQkFTRURfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4K
IAogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCkBA
IC0yOCwxNCArMjksMTggQEAgY2xhc3MgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQgZmluYWwg
OiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJy
aWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRl
OworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQ+IENvcHkoKSBj
b25zdDsKIAotICBjb25zdCBpbnQzMl90IGJpdHJhdGVfYnBzXzsKLSAgY29uc3QgdWludDhfdCBm
cmFjdGlvbl9sb3NzXzsKLSAgY29uc3QgaW50MzJfdCB0b3RhbF9wYWNrZXRzXzsKKyAgaW50MzJf
dCBiaXRyYXRlX2JwcygpIGNvbnN0IHsgcmV0dXJuIGJpdHJhdGVfYnBzXzsgfQorICB1aW50OF90
IGZyYWN0aW9uX2xvc3MoKSBjb25zdCB7IHJldHVybiBmcmFjdGlvbl9sb3NzXzsgfQorICBpbnQz
Ml90IHRvdGFsX3BhY2tldHMoKSBjb25zdCB7IHJldHVybiB0b3RhbF9wYWNrZXRzXzsgfQogCiAg
cHJpdmF0ZToKICAgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQoY29uc3QgUnRjRXZlbnRCd2VV
cGRhdGVMb3NzQmFzZWQmIG90aGVyKTsKKworICBjb25zdCBpbnQzMl90IGJpdHJhdGVfYnBzXzsK
KyAgY29uc3QgdWludDhfdCBmcmFjdGlvbl9sb3NzXzsKKyAgY29uc3QgaW50MzJfdCB0b3RhbF9w
YWNrZXRzXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5jYwppbmRleCBmYTMyZGU2OGQ1ZWFiN2MxYTJm
ZjdlNTczNjc1M2IwMTUwYjI2YTAxLi45YzMxNzM3ZWE1ZWU2MTEzNTE4MDdlMWIwNDA1N2QwYzU2
MjdlYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRl
X3BhaXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWly
LmNjCkBAIC0zNSw4ICszNSwxMCBAQCBib29sIFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcjo6SXND
b25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcjo6Q29weSgpIGNvbnN0IHsKLSAg
cmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNFdmVudEljZUNhbmRpZGF0
ZVBhaXIoKnRoaXMpKTsKK3N0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXI+
IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcjo6Q29weSgpCisgICAgY29uc3QgeworICByZXR1cm4g
YWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXI+KAorICAgICAgbmV3IFJ0
Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcigqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3Bh
aXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5oCmluZGV4
IGY0OWEwZDE3OTJjYjQzMWJlZmMzN2JhZGM2YjE2OTNkZmFiM2FiMTEuLjc0MTRmZWM3OWIxZThi
MDYyZDIwNGQ1Nzg2NzQ2ZGYxNDczY2E1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X2ljZV9jYW5kaWRhdGVfcGFpci5oCkBAIC0zNiwxMyArMzYsMTYgQEAgY2xhc3MgUnRjRXZlbnRJ
Y2VDYW5kaWRhdGVQYWlyIGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50IHsKIAogICBib29sIElzQ29u
ZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+
IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50SWNlQ2Fu
ZGlkYXRlUGFpcj4gQ29weSgpIGNvbnN0OwogCi0gIGNvbnN0IEljZUNhbmRpZGF0ZVBhaXJFdmVu
dFR5cGUgdHlwZV87Ci0gIGNvbnN0IHVpbnQzMl90IGNhbmRpZGF0ZV9wYWlyX2lkXzsKKyAgSWNl
Q2FuZGlkYXRlUGFpckV2ZW50VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZV87IH0KKyAg
dWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWQoKSBjb25zdCB7IHJldHVybiBjYW5kaWRhdGVfcGFp
cl9pZF87IH0KIAogIHByaXZhdGU6CiAgIFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcihjb25zdCBS
dGNFdmVudEljZUNhbmRpZGF0ZVBhaXImIG90aGVyKTsKKworICBjb25zdCBJY2VDYW5kaWRhdGVQ
YWlyRXZlbnRUeXBlIHR5cGVfOworICBjb25zdCB1aW50MzJfdCBjYW5kaWRhdGVfcGFpcl9pZF87
CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZy5jYwppbmRleCBmODlkZTc3NDBjN2Jl
OThlYmQ2MmY4ZjBhNmVlZjNjMjVkMDg3ZGZiLi5mYmI4YTczZGZiZWE1OWY2NmZmM2JmNTZlNjQ1
NGM3NDQ1NGY1NWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2Fu
ZGlkYXRlX3BhaXJfY29uZmlnLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9j
YW5kaWRhdGVfcGFpcl9jb25maWcuY2MKQEAgLTY0LDggKzY0LDEwIEBAIGJvb2wgUnRjRXZlbnRJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxS
dGNFdmVudD4obmV3IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZygqdGhpcykpOworc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZz4KK1J0Y0V2ZW50SWNl
Q2FuZGlkYXRlUGFpckNvbmZpZzo6Q29weSgpIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBV
bmlxdWU8UnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnPigKKyAgICAgIG5ldyBSdGNFdmVu
dEljZUNhbmRpZGF0ZVBhaXJDb25maWcoKnRoaXMpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9w
YWlyX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWly
X2NvbmZpZy5oCmluZGV4IDFmNmViOGNlYjBmZmZlOGU4N2QxZmU0ODllMjZlMjNlZjJiYjk2ZWMu
LjQwYmRiYWE3NzFlODFjMGNmYjZhOWQwMTMyYjdjZGVmNDJiOWNkNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWcuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnLmgKQEAgLTky
LDE0ICs5MiwyMCBAQCBjbGFzcyBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWcgZmluYWwg
OiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJy
aWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRl
OworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnPiBDb3B5
KCkgY29uc3Q7CiAKLSAgY29uc3QgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgdHlwZV87Ci0g
IGNvbnN0IHVpbnQzMl90IGNhbmRpZGF0ZV9wYWlyX2lkXzsKLSAgY29uc3QgSWNlQ2FuZGlkYXRl
UGFpckRlc2NyaXB0aW9uIGNhbmRpZGF0ZV9wYWlyX2Rlc2NfOworICBJY2VDYW5kaWRhdGVQYWly
Q29uZmlnVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZV87IH0KKyAgdWludDMyX3QgY2Fu
ZGlkYXRlX3BhaXJfaWQoKSBjb25zdCB7IHJldHVybiBjYW5kaWRhdGVfcGFpcl9pZF87IH0KKyAg
Y29uc3QgSWNlQ2FuZGlkYXRlUGFpckRlc2NyaXB0aW9uJiBjYW5kaWRhdGVfcGFpcl9kZXNjKCkg
Y29uc3QgeworICAgIHJldHVybiBjYW5kaWRhdGVfcGFpcl9kZXNjXzsKKyAgfQogCiAgcHJpdmF0
ZToKICAgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKGNvbnN0IFJ0Y0V2ZW50SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZyYgb3RoZXIpOworCisgIGNvbnN0IEljZUNhbmRpZGF0ZVBhaXJDb25m
aWdUeXBlIHR5cGVfOworICBjb25zdCB1aW50MzJfdCBjYW5kaWRhdGVfcGFpcl9pZF87CisgIGNv
bnN0IEljZUNhbmRpZGF0ZVBhaXJEZXNjcmlwdGlvbiBjYW5kaWRhdGVfcGFpcl9kZXNjXzsKIH07
CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRlZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X3Byb2JlX2NsdXN0ZXJfY3JlYXRlZC5jYwppbmRleCBhNjA3NjVkYmQwZjFiZWZmOWJkYmJiNDRm
MTM0ZDI0Y2ZmOGY0ZTVlLi5jMTFhNmNlNzhlYjU2ZTBiZjkzNjNiNGNmOGExYTZiMmFhY2RmZTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9jbHVzdGVyX2NyZWF0
ZWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfY2x1c3Rlcl9jcmVhdGVk
LmNjCkBAIC0zOSw4ICszOSwxMCBAQCBib29sIFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZDo6
SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZDo6Q29weSgpIGNvbnN0
IHsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNFdmVudFByb2Jl
Q2x1c3RlckNyZWF0ZWQoKnRoaXMpKTsKK3N0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFByb2JlQ2x1
c3RlckNyZWF0ZWQ+IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZDo6Q29weSgpCisgICAgY29u
c3QgeworICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0
ZWQ+KAorICAgICAgbmV3IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCgqdGhpcykpOwogfQog
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19l
dmVudF9wcm9iZV9jbHVzdGVyX2NyZWF0ZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3By
b2JlX2NsdXN0ZXJfY3JlYXRlZC5oCmluZGV4IDNlOGMyMWY1YzkyMTk4Mzk2NzMzMzRlYjA4MTZk
Y2ExMjUxNDUwZjAuLmFkNzU3ZWRkNTMwZTBjZjg1YTE1ZTE4ZTQ0YzI1Y2YxNWQ0MDE4NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRlZC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRlZC5oCkBA
IC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FVkVOVFNfUlRD
X0VWRU5UX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9IXwogI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVO
VF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9QUk9CRV9DTFVTVEVSX0NSRUFURURfSF8KIAorI2luY2x1
ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImxvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCkBAIC0yOSwxNSArMzAsMjAgQEAgY2xhc3Mg
UnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkIGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50IHsKIAog
ICBib29sIElzQ29uZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICBzdGQ6OnVuaXF1ZV9w
dHI8UnRjRXZlbnQ+IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0
Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZD4gQ29weSgpIGNvbnN0OworCisgIGludDMyX3QgaWQo
KSBjb25zdCB7IHJldHVybiBpZF87IH0KKyAgaW50MzJfdCBiaXRyYXRlX2JwcygpIGNvbnN0IHsg
cmV0dXJuIGJpdHJhdGVfYnBzXzsgfQorICB1aW50MzJfdCBtaW5fcHJvYmVzKCkgY29uc3QgeyBy
ZXR1cm4gbWluX3Byb2Jlc187IH0KKyAgdWludDMyX3QgbWluX2J5dGVzKCkgY29uc3QgeyByZXR1
cm4gbWluX2J5dGVzXzsgfQorCisgcHJpdmF0ZToKKyAgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVh
dGVkKGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCYgb3RoZXIpOwogCiAgIGNvbnN0
IGludDMyX3QgaWRfOwogICBjb25zdCBpbnQzMl90IGJpdHJhdGVfYnBzXzsKICAgY29uc3QgdWlu
dDMyX3QgbWluX3Byb2Jlc187CiAgIGNvbnN0IHVpbnQzMl90IG1pbl9ieXRlc187Ci0KLSBwcml2
YXRlOgotICBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQoY29uc3QgUnRjRXZlbnRQcm9iZUNs
dXN0ZXJDcmVhdGVkJiBvdGhlcik7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfZmFpbHVyZS5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9mYWlsdXJlLmNjCmluZGV4IGFh
NjA5MWNhNzc1YjU0YjkyZGI5MDhhNzFlMDExNTQ2NTY1ZjI4YjYuLjI5NTAwM2FlOGQwNDkxMTQx
MTRlMjQ5NGY0OGU3MDU4YjFiN2I0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X3Byb2JlX3Jlc3VsdF9mYWlsdXJlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X3Byb2JlX3Jlc3VsdF9mYWlsdXJlLmNjCkBAIC0zMyw4ICszMywxMCBAQCBib29sIFJ0Y0V2ZW50
UHJvYmVSZXN1bHRGYWlsdXJlOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRQcm9iZVJlc3VsdEZh
aWx1cmU6OkNvcHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50
PihuZXcgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUoKnRoaXMpKTsKK3N0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZT4gUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmU6
OkNvcHkoKQorICAgIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRQ
cm9iZVJlc3VsdEZhaWx1cmU+KAorICAgICAgbmV3IFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJl
KCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9mYWlsdXJlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfZmFpbHVyZS5oCmluZGV4IDE4MWM2OTQwMzcwZGRkMDYz
NmM5OWUyMWU1NTJiOTY1YzM0ZjI4OTguLjBjNDBmMGNkMWIxMWViOTMwOWZjNmE2YWNmN2Y5YzVi
ZGI2N2VjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3Vs
dF9mYWlsdXJlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X2Zh
aWx1cmUuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBMT0dHSU5HX1JUQ19FVkVOVF9MT0df
RVZFTlRTX1JUQ19FVkVOVF9QUk9CRV9SRVNVTFRfRkFJTFVSRV9IXwogI2RlZmluZSBMT0dHSU5H
X1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9QUk9CRV9SRVNVTFRfRkFJTFVSRV9IXwog
CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAibG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIKQEAgLTMzLDEzICszNCwxNiBA
QCBjbGFzcyBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZSBmaW5hbCA6IHB1YmxpYyBSdGNFdmVu
dCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgc3RkOjp1
bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZT4gQ29weSgpIGNvbnN0OwogCi0gIGNvbnN0
IGludDMyX3QgaWRfOwotICBjb25zdCBQcm9iZUZhaWx1cmVSZWFzb24gZmFpbHVyZV9yZWFzb25f
OworICBpbnQzMl90IGlkKCkgY29uc3QgeyByZXR1cm4gaWRfOyB9CisgIFByb2JlRmFpbHVyZVJl
YXNvbiBmYWlsdXJlX3JlYXNvbigpIGNvbnN0IHsgcmV0dXJuIGZhaWx1cmVfcmVhc29uXzsgfQog
CiAgcHJpdmF0ZToKICAgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUoY29uc3QgUnRjRXZlbnRQ
cm9iZVJlc3VsdEZhaWx1cmUmIG90aGVyKTsKKworICBjb25zdCBpbnQzMl90IGlkXzsKKyAgY29u
c3QgUHJvYmVGYWlsdXJlUmVhc29uIGZhaWx1cmVfcmVhc29uXzsKIH07CiAKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jl
c3VsdF9zdWNjZXNzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X3N1
Y2Nlc3MuY2MKaW5kZXggNTU5MDcyOTVkZWJkNjEzZDkzNTA4ZGJlNzViNmQxMGU2Y2MzYTJjYy4u
ZDVmOWUyZjc4MGNhOTc3NTY2ZjQxYzRjMzMzNGE1ZTE0NDJkNjhkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X3N1Y2Nlc3MuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X3N1Y2Nlc3MuY2MKQEAgLTMyLDggKzMyLDEw
IEBAIGJvb2wgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3M6OklzQ29uZmlnRXZlbnQoKSBjb25z
dCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNF
dmVudFByb2JlUmVzdWx0U3VjY2Vzczo6Q29weSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6Oldy
YXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2VzcygqdGhpcykp
Oworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzPiBSdGNFdmVudFBy
b2JlUmVzdWx0U3VjY2Vzczo6Q29weSgpCisgICAgY29uc3QgeworICByZXR1cm4gYWJzbDo6V3Jh
cFVuaXF1ZTxSdGNFdmVudFByb2JlUmVzdWx0U3VjY2Vzcz4oCisgICAgICBuZXcgUnRjRXZlbnRQ
cm9iZVJlc3VsdFN1Y2Nlc3MoKnRoaXMpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X3N1Y2Nlc3Mu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9zdWNjZXNzLmgKaW5kZXgg
MTVmZjE4MzNiZjA0ZDFjNjJhZGExMzZlZDM4MDNkYmZkY2JkNTlhOS4uYTA4ZGFkZDIxMmJhODIz
ZjA1OGZkMjkyNTMyOGRiNjAwMzZhYzNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfcHJvYmVfcmVzdWx0X3N1Y2Nlc3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9wcm9iZV9yZXN1bHRfc3VjY2Vzcy5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIExPR0dJ
TkdfUlRDX0VWRU5UX0xPR19FVkVOVFNfUlRDX0VWRU5UX1BST0JFX1JFU1VMVF9TVUNDRVNTX0hf
CiAjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FVkVOVFNfUlRDX0VWRU5UX1BST0JFX1JF
U1VMVF9TVUNDRVNTX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+
CiAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgpA
QCAtMjYsMTMgKzI3LDE2IEBAIGNsYXNzIFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzIGZpbmFs
IDogcHVibGljIFJ0Y0V2ZW50IHsKIAogICBib29sIElzQ29uZmlnRXZlbnQoKSBjb25zdCBvdmVy
cmlkZTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IENvcHkoKSBjb25zdCBvdmVycmlk
ZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzPiBDb3B5KCkg
Y29uc3Q7CiAKLSAgY29uc3QgaW50MzJfdCBpZF87Ci0gIGNvbnN0IGludDMyX3QgYml0cmF0ZV9i
cHNfOworICBpbnQzMl90IGlkKCkgY29uc3QgeyByZXR1cm4gaWRfOyB9CisgIGludDMyX3QgYml0
cmF0ZV9icHMoKSBjb25zdCB7IHJldHVybiBiaXRyYXRlX2Jwc187IH0KIAogIHByaXZhdGU6CiAg
IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzKGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNj
ZXNzJiBvdGhlcik7CisKKyAgY29uc3QgaW50MzJfdCBpZF87CisgIGNvbnN0IGludDMyX3QgYml0
cmF0ZV9icHNfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRjcF9wYWNrZXRfaW5jb21pbmcuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9pbmNvbWluZy5jYwppbmRleCAxMTk5MzhjN2Y3MTg4
NDgwOWQ1NDgyYjAwMDg0MTFjMTYwY2Q3NmUzLi40NWE0MThmMWY2OWMyYmM3ODYwODZjZmRlOTkw
OWZhNzFiZjQyODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3Bh
Y2tldF9pbmNvbWluZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tl
dF9pbmNvbWluZy5jYwpAQCAtMzMsOCArMzMsMTAgQEAgYm9vbCBSdGNFdmVudFJ0Y3BQYWNrZXRJ
bmNvbWluZzo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nOjpDb3B5
KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2
ZW50UnRjcFBhY2tldEluY29taW5nKCp0aGlzKSk7CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRS
dGNwUGFja2V0SW5jb21pbmc+IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nOjpDb3B5KCkKKyAg
ICBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50UnRjcFBhY2tldElu
Y29taW5nPigKKyAgICAgIG5ldyBSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZygqdGhpcykpOwog
fQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF9ydGNwX3BhY2tldF9pbmNvbWluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
cnRjcF9wYWNrZXRfaW5jb21pbmcuaAppbmRleCA2ZDkwNDk1M2E0OGE4ODc2YzIzNzBlYmQ3ZTA4
OTI3MjMzYzI2NzdlLi44Mzk0ZmUwMDVjZDU2MzgyYWNmNjNhMTJlMzkwOTM4ZTA2ZGE0ZjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9pbmNvbWluZy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X2luY29taW5nLmgKQEAg
LTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENf
RVZFTlRfUlRDUF9QQUNLRVRfSU5DT01JTkdfSF8KICNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRf
TE9HX0VWRU5UU19SVENfRVZFTlRfUlRDUF9QQUNLRVRfSU5DT01JTkdfSF8KIAorI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3
LmgiCkBAIC0yOCwxMiArMjksMTQgQEAgY2xhc3MgUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmcg
ZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0
IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92
ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmc+IENv
cHkoKSBjb25zdDsKIAotICBydGM6OkJ1ZmZlciBwYWNrZXRfOworICBjb25zdCBydGM6OkJ1ZmZl
ciYgcGFja2V0KCkgY29uc3QgeyByZXR1cm4gcGFja2V0XzsgfQogCiAgcHJpdmF0ZToKICAgUnRj
RXZlbnRSdGNwUGFja2V0SW5jb21pbmcoY29uc3QgUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmcm
IG90aGVyKTsKKworICBydGM6OkJ1ZmZlciBwYWNrZXRfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRjcF9wYWNrZXRf
b3V0Z29pbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9vdXRnb2lu
Zy5jYwppbmRleCA0MDg1YWMwZjMxMzYyYWVmOWQ1ZTU3ZjIxMjkwOTVkZTkzZTZhNzQ0Li5iNTgz
ZTU2MTRhMjA0MGNlOGVhNzI0Y2YwZWQ5NmE4ZWIzZmUyNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9vdXRnb2luZy5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9vdXRnb2luZy5jYwpAQCAtMzMsOCArMzMsMTAgQEAg
Ym9vbCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZzo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsK
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50
UnRjcFBhY2tldE91dGdvaW5nOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVu
aXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdvaW5nKCp0aGlzKSk7Citz
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmc+IFJ0Y0V2ZW50UnRjcFBh
Y2tldE91dGdvaW5nOjpDb3B5KCkKKyAgICBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5p
cXVlPFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdvaW5nPigKKyAgICAgIG5ldyBSdGNFdmVudFJ0Y3BQ
YWNrZXRPdXRnb2luZygqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9vdXRnb2luZy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRjcF9wYWNrZXRfb3V0Z29pbmcuaAppbmRleCAzYWE5
ZTcxOTlhZDYzM2MxZTc2NjFiNDkyNjEzYWJkZjYwMDhlOGRlLi5iNDdiODVkMGIzNjM1ZDE4YjA3
MWU0NjVkNmI4NjRmZmVjMDkwOTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9ydGNwX3BhY2tldF9vdXRnb2luZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0
Y3BfcGFja2V0X291dGdvaW5nLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lOR19S
VENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfUlRDUF9QQUNLRVRfT1VUR09JTkdfSF8KICNk
ZWZpbmUgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfUlRDUF9QQUNLRVRf
T1VUR09JTkdfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAog
I2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCkBAIC0yOCwxMiArMjksMTQgQEAgY2xhc3MgUnRj
RXZlbnRSdGNwUGFja2V0T3V0Z29pbmcgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJv
b2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnRSdGNwUGFja2V0T3V0Z29pbmc+IENvcHkoKSBjb25zdDsKIAotICBydGM6OkJ1ZmZlciBwYWNr
ZXRfOworICBjb25zdCBydGM6OkJ1ZmZlciYgcGFja2V0KCkgY29uc3QgeyByZXR1cm4gcGFja2V0
XzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcoY29uc3QgUnRj
RXZlbnRSdGNwUGFja2V0T3V0Z29pbmcmIG90aGVyKTsKKworICBydGM6OkJ1ZmZlciBwYWNrZXRf
OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuY2MKaW5kZXggOGUxNWQwMjE3NTFiNjg1Y2Y5YTVjY2Vh
ZDRiMjE3OGU4MTg3OTJhOS4uODk4YzBhYWY4ZWU2NGYxNWIwZjRhYzZlODc5OTM0NmRkZGJjYjQy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9pbmNvbWlu
Zy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmNj
CkBAIC0xMiwxOCArMTIsMjYgQEAKIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIFJ0
Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc6OlJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcoCiAgICAg
Y29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkKLSAgICA6IHBhY2tldF9sZW5ndGhfKHBh
Y2tldC5zaXplKCkpIHsKKyAgICA6IHBheWxvYWRfbGVuZ3RoXyhwYWNrZXQucGF5bG9hZF9zaXpl
KCkpLAorICAgICAgaGVhZGVyX2xlbmd0aF8ocGFja2V0LmhlYWRlcnNfc2l6ZSgpKSwKKyAgICAg
IHBhZGRpbmdfbGVuZ3RoXyhwYWNrZXQucGFkZGluZ19zaXplKCkpIHsKICAgaGVhZGVyXy5Db3B5
SGVhZGVyRnJvbShwYWNrZXQpOworICBSVENfRENIRUNLX0VRKHBhY2tldC5zaXplKCksCisgICAg
ICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGhfICsgaGVhZGVyX2xlbmd0aF8gKyBwYWRkaW5nX2xl
bmd0aF8pOwogfQogCiBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nOjpSdGNFdmVudFJ0cFBhY2tl
dEluY29taW5nKAogICAgIGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcmIG90aGVyKQot
ICAgIDogUnRjRXZlbnQob3RoZXIudGltZXN0YW1wX3VzXyksIHBhY2tldF9sZW5ndGhfKG90aGVy
LnBhY2tldF9sZW5ndGhfKSB7CisgICAgOiBSdGNFdmVudChvdGhlci50aW1lc3RhbXBfdXNfKSwK
KyAgICAgIHBheWxvYWRfbGVuZ3RoXyhvdGhlci5wYXlsb2FkX2xlbmd0aF8pLAorICAgICAgaGVh
ZGVyX2xlbmd0aF8ob3RoZXIuaGVhZGVyX2xlbmd0aF8pLAorICAgICAgcGFkZGluZ19sZW5ndGhf
KG90aGVyLnBhZGRpbmdfbGVuZ3RoXykgewogICBoZWFkZXJfLkNvcHlIZWFkZXJGcm9tKG90aGVy
LmhlYWRlcl8pOwogfQogCkBAIC0zNyw4ICs0NSwxMCBAQCBib29sIFJ0Y0V2ZW50UnRwUGFja2V0
SW5jb21pbmc6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nOjpDb3B5
KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2
ZW50UnRwUGFja2V0SW5jb21pbmcoKnRoaXMpKTsKK3N0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0
cFBhY2tldEluY29taW5nPiBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nOjpDb3B5KCkKKyAgICBj
b25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21p
bmc+KAorICAgICAgbmV3IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcoKnRoaXMpKTsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZl
bnRfcnRwX3BhY2tldF9pbmNvbWluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3Bh
Y2tldF9pbmNvbWluZy5oCmluZGV4IDZiMTQxYjZkNTc2MjJlNmQyOWIxOWE2MTc0OWZiNmNiMzM2
MTM5YzUuLjFlMzU3MzUxYjNjZjI2ZGEwMzFjOGYxYjk4Zjk1ZjIzODlmYWZmNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmgKQEAgLTI5LDEzICsy
OSwyNCBAQCBjbGFzcyBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nIGZpbmFsIDogcHVibGljIFJ0
Y0V2ZW50IHsKIAogICBib29sIElzQ29uZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICBz
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1
bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc+IENvcHkoKSBjb25zdDsKIAotICBS
dHBQYWNrZXQgaGVhZGVyXzsgICAgICAgICAgICAvLyBPbmx5IHRoZSBwYWNrZXQncyBoZWFkZXIg
d2lsbCBiZSBzdG9yZWQgaGVyZS4KLSAgY29uc3Qgc2l6ZV90IHBhY2tldF9sZW5ndGhfOyAgLy8g
TGVuZ3RoIGJlZm9yZSBzdHJpcHBpbmcgYXdheSBhbGwgYnV0IGhlYWRlci4KKyAgc2l6ZV90IHBh
Y2tldF9sZW5ndGgoKSBjb25zdCB7CisgICAgcmV0dXJuIHBheWxvYWRfbGVuZ3RoXyArIGhlYWRl
cl9sZW5ndGhfICsgcGFkZGluZ19sZW5ndGhfOworICB9CisKKyAgY29uc3QgUnRwUGFja2V0JiBo
ZWFkZXIoKSBjb25zdCB7IHJldHVybiBoZWFkZXJfOyB9CisgIHNpemVfdCBwYXlsb2FkX2xlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIHBheWxvYWRfbGVuZ3RoXzsgfQorICBzaXplX3QgaGVhZGVyX2xl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIGhlYWRlcl9sZW5ndGhfOyB9CisgIHNpemVfdCBwYWRkaW5n
X2xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHBhZGRpbmdfbGVuZ3RoXzsgfQogCiAgcHJpdmF0ZToK
ICAgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyhjb25zdCBSdGNFdmVudFJ0cFBhY2tldEluY29t
aW5nJiBvdGhlcik7CisKKyAgUnRwUGFja2V0IGhlYWRlcl87ICAgICAgICAgICAgLy8gT25seSB0
aGUgcGFja2V0J3MgaGVhZGVyIHdpbGwgYmUgc3RvcmVkIGhlcmUuCisgIGNvbnN0IHNpemVfdCBw
YXlsb2FkX2xlbmd0aF87ICAvLyBNZWRpYSBwYXlsb2FkLCBleGNsdWRpbmcgaGVhZGVyIGFuZCBw
YWRkaW5nLgorICBjb25zdCBzaXplX3QgaGVhZGVyX2xlbmd0aF87ICAgLy8gUlRQIGhlYWRlci4K
KyAgY29uc3Qgc2l6ZV90IHBhZGRpbmdfbGVuZ3RoXzsgIC8vIFJUUCBwYWRkaW5nLgogfTsKIAog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZl
bnRfcnRwX3BhY2tldF9vdXRnb2luZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9w
YWNrZXRfb3V0Z29pbmcuY2MKaW5kZXggMTAzNDQwYWQ2ZTk2NjFkYWRlZDBmZTFmZWFjMjVhMDIy
ZGYwZGEzZi4uMDUwNDc0ZWRkYTdjMDJjMGNmZjRmMzQ3MzBiMGFkNmE3ZjRkOWY3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9vdXRnb2luZy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X291dGdvaW5nLmNjCkBAIC0xMiwy
MCArMTIsMjggQEAKIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogUnRjRXZlbnRSdHBQ
YWNrZXRPdXRnb2luZzo6UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZygKICAgICBjb25zdCBSdHBQ
YWNrZXRUb1NlbmQmIHBhY2tldCwKICAgICBpbnQgcHJvYmVfY2x1c3Rlcl9pZCkKLSAgICA6IHBh
Y2tldF9sZW5ndGhfKHBhY2tldC5zaXplKCkpLCBwcm9iZV9jbHVzdGVyX2lkXyhwcm9iZV9jbHVz
dGVyX2lkKSB7CisgICAgOiBwYXlsb2FkX2xlbmd0aF8ocGFja2V0LnBheWxvYWRfc2l6ZSgpKSwK
KyAgICAgIGhlYWRlcl9sZW5ndGhfKHBhY2tldC5oZWFkZXJzX3NpemUoKSksCisgICAgICBwYWRk
aW5nX2xlbmd0aF8ocGFja2V0LnBhZGRpbmdfc2l6ZSgpKSwKKyAgICAgIHByb2JlX2NsdXN0ZXJf
aWRfKHByb2JlX2NsdXN0ZXJfaWQpIHsKICAgaGVhZGVyXy5Db3B5SGVhZGVyRnJvbShwYWNrZXQp
OworICBSVENfRENIRUNLX0VRKHBhY2tldC5zaXplKCksCisgICAgICAgICAgICAgICAgcGF5bG9h
ZF9sZW5ndGhfICsgaGVhZGVyX2xlbmd0aF8gKyBwYWRkaW5nX2xlbmd0aF8pOwogfQogCiBSdGNF
dmVudFJ0cFBhY2tldE91dGdvaW5nOjpSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nKAogICAgIGNv
bnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcmIG90aGVyKQogICAgIDogUnRjRXZlbnQob3Ro
ZXIudGltZXN0YW1wX3VzXyksCi0gICAgICBwYWNrZXRfbGVuZ3RoXyhvdGhlci5wYWNrZXRfbGVu
Z3RoXyksCisgICAgICBwYXlsb2FkX2xlbmd0aF8ob3RoZXIucGF5bG9hZF9sZW5ndGhfKSwKKyAg
ICAgIGhlYWRlcl9sZW5ndGhfKG90aGVyLmhlYWRlcl9sZW5ndGhfKSwKKyAgICAgIHBhZGRpbmdf
bGVuZ3RoXyhvdGhlci5wYWRkaW5nX2xlbmd0aF8pLAogICAgICAgcHJvYmVfY2x1c3Rlcl9pZF8o
b3RoZXIucHJvYmVfY2x1c3Rlcl9pZF8pIHsKICAgaGVhZGVyXy5Db3B5SGVhZGVyRnJvbShvdGhl
ci5oZWFkZXJfKTsKIH0KQEAgLTQwLDggKzQ4LDEwIEBAIGJvb2wgUnRjRXZlbnRSdHBQYWNrZXRP
dXRnb2luZzo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmc6OkNvcHko
KSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50PihuZXcgUnRjRXZl
bnRSdHBQYWNrZXRPdXRnb2luZygqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRw
UGFja2V0T3V0Z29pbmc+IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmc6OkNvcHkoKQorICAgIGNv
bnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2lu
Zz4oCisgICAgICBuZXcgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZygqdGhpcykpOwogfQogCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9ydHBfcGFja2V0X291dGdvaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFj
a2V0X291dGdvaW5nLmgKaW5kZXggMTcxYTIxYzQyMGU0MTY3NmYzZjMzMDUwY2FjYzFjNmUyZDYx
YzQ1NS4uZWJkZGMxNDIzMWYzYWYxOTNmMmQwMjIzZDMzNzk2NmYwMTdjNTA0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9vdXRnb2luZy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfb3V0Z29pbmcuaApAQCAtMzAsMTQgKzMw
LDI3IEBAIGNsYXNzIFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcgZmluYWwgOiBwdWJsaWMgUnRj
RXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZz4gQ29weSgpIGNvbnN0OwogCi0gIFJ0
cFBhY2tldCBoZWFkZXJfOyAgICAgICAgICAgIC8vIE9ubHkgdGhlIHBhY2tldCdzIGhlYWRlciB3
aWxsIGJlIHN0b3JlZCBoZXJlLgotICBjb25zdCBzaXplX3QgcGFja2V0X2xlbmd0aF87ICAvLyBM
ZW5ndGggYmVmb3JlIHN0cmlwcGluZyBhd2F5IGFsbCBidXQgaGVhZGVyLgotICBjb25zdCBpbnQg
cHJvYmVfY2x1c3Rlcl9pZF87CisgIHNpemVfdCBwYWNrZXRfbGVuZ3RoKCkgY29uc3QgeworICAg
IHJldHVybiBwYXlsb2FkX2xlbmd0aF8gKyBoZWFkZXJfbGVuZ3RoXyArIHBhZGRpbmdfbGVuZ3Ro
XzsKKyAgfQorCisgIGNvbnN0IFJ0cFBhY2tldCYgaGVhZGVyKCkgY29uc3QgeyByZXR1cm4gaGVh
ZGVyXzsgfQorICBzaXplX3QgcGF5bG9hZF9sZW5ndGgoKSBjb25zdCB7IHJldHVybiBwYXlsb2Fk
X2xlbmd0aF87IH0KKyAgc2l6ZV90IGhlYWRlcl9sZW5ndGgoKSBjb25zdCB7IHJldHVybiBoZWFk
ZXJfbGVuZ3RoXzsgfQorICBzaXplX3QgcGFkZGluZ19sZW5ndGgoKSBjb25zdCB7IHJldHVybiBw
YWRkaW5nX2xlbmd0aF87IH0KKyAgaW50IHByb2JlX2NsdXN0ZXJfaWQoKSBjb25zdCB7IHJldHVy
biBwcm9iZV9jbHVzdGVyX2lkXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRSdHBQYWNrZXRP
dXRnb2luZyhjb25zdCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nJiBvdGhlcik7CisKKyAgUnRw
UGFja2V0IGhlYWRlcl87ICAgICAgICAgICAgLy8gT25seSB0aGUgcGFja2V0J3MgaGVhZGVyIHdp
bGwgYmUgc3RvcmVkIGhlcmUuCisgIGNvbnN0IHNpemVfdCBwYXlsb2FkX2xlbmd0aF87ICAvLyBN
ZWRpYSBwYXlsb2FkLCBleGNsdWRpbmcgaGVhZGVyIGFuZCBwYWRkaW5nLgorICBjb25zdCBzaXpl
X3QgaGVhZGVyX2xlbmd0aF87ICAgLy8gUlRQIGhlYWRlci4KKyAgY29uc3Qgc2l6ZV90IHBhZGRp
bmdfbGVuZ3RoXzsgIC8vIFJUUCBwYWRkaW5nLgorICAvLyBUT0RPKGVsYWRhbG9uKTogRGVsZXRl
IHxwcm9iZV9jbHVzdGVyX2lkX3wgYWxvbmcgd2l0aCBsZWdhY3kgZW5jb2RpbmcuCisgIGNvbnN0
IGludCBwcm9iZV9jbHVzdGVyX2lkXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2Nv
bmZpZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2Nv
bmZpZy5jYwppbmRleCA3ZjRkZDliN2I4MDdjNGIxMmZkMzg5YmQ0MjZkNGZkZWI2YzU4NjQwLi41
ZGVjOTdiZjgzNzcyZTkxMmIxOTg2YjAyMjIxYzU1ZDllODhlMmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF92aWRlb19yZWNlaXZlX3N0cmVhbV9jb25maWcuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmNjCkBA
IC0xMywxMiArMTMsMTUgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCiBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZzo6UnRjRXZlbnRW
aWRlb1JlY2VpdmVTdHJlYW1Db25maWcoCiAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Y2xvZzo6U3Ry
ZWFtQ29uZmlnPiBjb25maWcpCi0gICAgOiBjb25maWdfKHN0ZDo6bW92ZShjb25maWcpKSB7fQor
ICAgIDogY29uZmlnXyhzdGQ6Om1vdmUoY29uZmlnKSkgeworICBSVENfRENIRUNLKGNvbmZpZ18p
OworfQogCiBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZzo6UnRjRXZlbnRWaWRlb1Jl
Y2VpdmVTdHJlYW1Db25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1D
b25maWcmIG90aGVyKQpAQCAtMzUsOCArMzgsOSBAQCBib29sIFJ0Y0V2ZW50VmlkZW9SZWNlaXZl
U3RyZWFtQ29uZmlnOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNv
bmZpZzo6Q29weSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+
KAorc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnPgorUnRj
RXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWc6OkNvcHkoKSBjb25zdCB7CisgIHJldHVybiBh
YnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnPigKICAgICAg
IG5ldyBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZygqdGhpcykpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF92aWRlb19yZWNlaXZlX3N0cmVhbV9jb25m
aWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2NvbmZp
Zy5oCmluZGV4IGM2MjYzYzNmZGJlMjJjN2NjYjY5MWQ3YmU4ODI1NTAyMzVmZjQ0ODIuLjgwMWJh
N2RkZDQ0ZDgxNDY4ZTQxNTRmNjFjMjcxYTYyNWUxMmJhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
dmVudHMvcnRjX2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5oCkBAIC0yOCwx
MyArMjgsMTUgQEAgY2xhc3MgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcgZmluYWwg
OiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJy
aWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRl
OworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWc+IENv
cHkoKSBjb25zdDsKIAotICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgcnRjbG9nOjpTdHJl
YW1Db25maWc+IGNvbmZpZ187CisgIGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnJiBjb25maWco
KSBjb25zdCB7IHJldHVybiAqY29uZmlnXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRWaWRl
b1JlY2VpdmVTdHJlYW1Db25maWcoCiAgICAgICBjb25zdCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0
cmVhbUNvbmZpZyYgb3RoZXIpOworCisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNs
b2c6OlN0cmVhbUNvbmZpZz4gY29uZmlnXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2Nv
bmZpZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZp
Zy5jYwppbmRleCBiNGI3OGE4YTUyYTc1YzEzY2NlYzZmNzE0YTEzZTMwNTM1NDY1YmJkLi5kYzRi
MTY3NDM4Y2JhNzkzZTFhZWM4ODhhZGMxNjQ3MmNiZjg5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF92aWRlb19zZW5kX3N0cmVhbV9jb25maWcuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlnLmNjCkBAIC0zNSw4ICsz
NSwxMCBAQCBib29sIFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnOjpJc0NvbmZpZ0V2ZW50
KCkgY29uc3QgewogICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
PiBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZzo6Q29weSgpIGNvbnN0IHsKLSAgcmV0dXJu
IGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNv
bmZpZygqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29u
ZmlnPgorUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWc6OkNvcHkoKSBjb25zdCB7CisgIHJl
dHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnPigKKyAg
ICAgIG5ldyBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZygqdGhpcykpOwogfQogCiB9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF92
aWRlb19zZW5kX3N0cmVhbV9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVv
X3NlbmRfc3RyZWFtX2NvbmZpZy5oCmluZGV4IDM0NzJmODg1NWJlNjY5ZGQxM2NhNjhlYjY1MWUx
ODg1M2E1M2ViMGYuLmZlMjc0YzhjM2E1NWZkMzUwZjgzYWQ1MDBjZWE0ODIwNjJiMjk2Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZp
Zy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZp
Zy5oCkBAIC0yOCwxMiArMjgsMTQgQEAgY2xhc3MgUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25m
aWcgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0
IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25m
aWc+IENvcHkoKSBjb25zdDsKIAotICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgcnRjbG9n
OjpTdHJlYW1Db25maWc+IGNvbmZpZ187CisgIGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnJiBj
b25maWcoKSBjb25zdCB7IHJldHVybiAqY29uZmlnXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZl
bnRWaWRlb1NlbmRTdHJlYW1Db25maWcoY29uc3QgUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25m
aWcmIG90aGVyKTsKKworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgcnRjbG9nOjpTdHJl
YW1Db25maWc+IGNvbmZpZ187CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmNjCmlu
ZGV4IDczYTU5OGQ2YjFlMzJhOGM0MThhMjMzMjgxNjVkZDhlMmIxMmM4ZWUuLmI0OGZlOTIzNGZk
NzRmYzcyYTg5MTFmZjRiYWFjNTVhNzE2MDRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZl
bnRfbG9nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmNjCkBAIC0xMCw4ICsxMCwxNCBA
QAogCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKIAor
I2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAor
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBSdGNFdmVudExvZzo6Q3JlYXRlTnVsbCgpIHsK
KyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nTnVsbEltcGw+KCk7Cit9CisK
IGJvb2wgUnRjRXZlbnRMb2dOdWxsSW1wbDo6U3RhcnRMb2dnaW5nKAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudExvZ091dHB1dD4gb3V0cHV0LAogICAgIGludDY0X3Qgb3V0cHV0X3Blcmlv
ZF9tcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNf
ZXZlbnRfbG9nLmgKaW5kZXggMGM3MTQwNjkwMjQxZDgwODc0MGExOTQwZTc0OTE4OWU5ZTY0YzVj
Mi4uN2Q5MDBjMDA2ODZmODYwNzI4YzkyMDIwMDRhZjgxYmZhMWRmODhjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL3J0Y19ldmVudF9sb2cuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oCkBAIC0x
MSw5ICsxMSw4IEBACiAjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19SVENfRVZFTlRfTE9H
X0hfCiAjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19SVENfRVZFTlRfTE9HX0hfCiAKKyNp
bmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RyaW5nPgot
I2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhcGkvcnRjZXZlbnRsb2dvdXRwdXQuaCIK
ICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgpAQCAt
MjksMTAgKzI4LDkgQEAgY2xhc3MgUnRjRXZlbnRMb2cgewogICBlbnVtIDogc2l6ZV90IHsga1Vu
bGltaXRlZE91dHB1dCA9IDAgfTsKICAgZW51bSA6IGludDY0X3QgeyBrSW1tZWRpYXRlT3V0cHV0
ID0gMCB9OwogCi0gIC8vIFRPRE8oZWxhZGFsb24pOiBUd28gc3RhZ2VzIGFyZSB1cGNvbWluZy4K
LSAgLy8gMS4gRXh0ZW5kIHRoaXMgdG8gYWN0dWFsbHkgc3VwcG9ydCB0aGUgbmV3IGVuY29kaW5n
LgotICAvLyAyLiBHZXQgcmlkIG9mIHRoZSBsZWdhY3kgZW5jb2RpbmcsIGFsbG93aW5nIHVzIHRv
IGdldCByaWQgb2YgdGhpcyBlbnVtLgotICBlbnVtIGNsYXNzIEVuY29kaW5nVHlwZSB7IExlZ2Fj
eSB9OworICAvLyBUT0RPKGVsYWRhbG9uKTogIEdldCByaWQgb2YgdGhlIGxlZ2FjeSBlbmNvZGlu
ZyBhbmQgdGhpcyBlbnVtIG9uY2UgYWxsCisgIC8vIGNsaWVudHMgaGF2ZSBtaWdyYXRlZCB0byB0
aGUgbmV3IGZvcm1hdC4KKyAgZW51bSBjbGFzcyBFbmNvZGluZ1R5cGUgeyBMZWdhY3ksIE5ld0Zv
cm1hdCB9OwogCiAgIHZpcnR1YWwgflJ0Y0V2ZW50TG9nKCkge30KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL3J0Y19ldmVudF9sb2cyLnByb3RvIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnByb3RvCmlu
ZGV4IDRjYWM0NTUzY2VkNDM0N2JhM2EyN2QzYmIwOGFmNDE1MmQzNzE3MjUuLjk5NTg1M2I1NjVj
YzFlMThkMzBlZDhiYWNkMTgwYWY1ZDc1YWQ1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZl
bnRfbG9nMi5wcm90bworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzIucHJvdG8KQEAgLTEwLDIw
ICsxMCwxNyBAQCBwYWNrYWdlIHdlYnJ0Yy5ydGNsb2cyOwogLy8gc2luZ2xlIEV2ZW50U3RyZWFt
IG9iamVjdCBjb250YWluaW5nIHRoZSBzYW1lIGV2ZW50cy4gSGVuY2UsIGl0IGlzIG5vdAogLy8g
bmVjZXNzYXJ5IHRvIHdhaXQgZm9yIHRoZSBlbnRpcmUgbG9nIHRvIGJlIGNvbXBsZXRlIGJlZm9y
ZSBiZWdpbm5pbmcgdG8KIC8vIHdyaXRlIGl0IHRvIGEgZmlsZS4KKy8vIE5vdGU6IEZvciBhbGwg
WF9kZWx0YXMgZmllbGRzLCB3ZSByZWx5IG9uIHRoZSBkZWZhdWx0IHZhbHVlIGJlaW5nIGFuCisv
LyBlbXB0eSBzdHJpbmcuCiBtZXNzYWdlIEV2ZW50U3RyZWFtIHsKICAgLy8gRGVwcmVjYXRlZCAt
IE1haW50YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkIGV2ZW50IGxvZy4KLSAg
Ly8gVE9ETyh0ZXJlbGl1cyk6IE1heWJlIHdlIGNhbiByZW1vdmUgdGhpcyBhbmQgaW5zdGVhZCBj
aGVjayB0aGUgc3RyZWFtIGZvcgotICAvLyBwcmVzZW5jZSBvZiBhIHZlcnNpb24gZmllbGQuIFRo
YXQgcmVxdWlyZXMgYSBjdXN0b20gcHJvdG9idWYgcGFyc2VyLCBidXQgd2UKLSAgLy8gaGF2ZSB0
aGF0IGFscmVhZHkgYW55d2F5LgogICByZXBlYXRlZCBFdmVudCBzdHJlYW0gPSAxIFtkZXByZWNh
dGVkID0gdHJ1ZV07Ci0gIC8vIHJlcXVpcmVkIC0gVGhlIHZlcnNpb24gbnVtYmVyIG11c3QgYmUg
MiBmb3IgdGhpcyB2ZXJzaW9uIG9mIHRoZSBldmVudCBsb2cuCi0gIG9wdGlvbmFsIHVpbnQzMiB2
ZXJzaW9uID0gMjsKLSAgcmVwZWF0ZWQgSW5jb21pbmdSdHBQYWNrZXRzIGluY29taW5nX3J0cF9w
YWNrZXRzID0gMzsKLSAgcmVwZWF0ZWQgT3V0Z29pbmdSdHBQYWNrZXRzIG91dGdvaW5nX3J0cF9w
YWNrZXRzID0gNDsKLSAgcmVwZWF0ZWQgSW5jb21pbmdSdGNwUGFja2V0cyBpbmNvbWluZ19ydGNw
X3BhY2tldHMgPSA1OwotICByZXBlYXRlZCBPdXRnb2luZ1J0Y3BQYWNrZXRzIG91dGdvaW5nX3J0
Y3BfcGFja2V0cyA9IDY7Ci0gIHJlcGVhdGVkIEF1ZGlvUGxheW91dEV2ZW50cyBhdWRpb19wbGF5
b3V0X2V2ZW50cyA9IDc7Ci0gIC8vIFRoZSBmaWVsZCB0YWdzIDgtMTUgYXJlIHJlc2VydmVkIGZv
ciB0aGUgbW9zdCBjb21tb24gZXZlbnRzCisgIHJlcGVhdGVkIEluY29taW5nUnRwUGFja2V0cyBp
bmNvbWluZ19ydHBfcGFja2V0cyA9IDI7CisgIHJlcGVhdGVkIE91dGdvaW5nUnRwUGFja2V0cyBv
dXRnb2luZ19ydHBfcGFja2V0cyA9IDM7CisgIHJlcGVhdGVkIEluY29taW5nUnRjcFBhY2tldHMg
aW5jb21pbmdfcnRjcF9wYWNrZXRzID0gNDsKKyAgcmVwZWF0ZWQgT3V0Z29pbmdSdGNwUGFja2V0
cyBvdXRnb2luZ19ydGNwX3BhY2tldHMgPSA1OworICByZXBlYXRlZCBBdWRpb1BsYXlvdXRFdmVu
dHMgYXVkaW9fcGxheW91dF9ldmVudHMgPSA2OworICAvLyBUaGUgZmllbGQgdGFncyA3LTE1IGFy
ZSByZXNlcnZlZCBmb3IgdGhlIG1vc3QgY29tbW9uIGV2ZW50cy4KICAgcmVwZWF0ZWQgQmVnaW5M
b2dFdmVudCBiZWdpbl9sb2dfZXZlbnRzID0gMTY7CiAgIHJlcGVhdGVkIEVuZExvZ0V2ZW50IGVu
ZF9sb2dfZXZlbnRzID0gMTc7CiAgIHJlcGVhdGVkIExvc3NCYXNlZEJ3ZVVwZGF0ZXMgbG9zc19i
YXNlZF9id2VfdXBkYXRlcyA9IDE4OwpAQCAtMzIsNiArMjksOSBAQCBtZXNzYWdlIEV2ZW50U3Ry
ZWFtIHsKICAgcmVwZWF0ZWQgQndlUHJvYmVDbHVzdGVyIHByb2JlX2NsdXN0ZXJzID0gMjE7CiAg
IHJlcGVhdGVkIEJ3ZVByb2JlUmVzdWx0U3VjY2VzcyBwcm9iZV9zdWNjZXNzID0gMjI7CiAgIHJl
cGVhdGVkIEJ3ZVByb2JlUmVzdWx0RmFpbHVyZSBwcm9iZV9mYWlsdXJlID0gMjM7CisgIHJlcGVh
dGVkIEFsclN0YXRlIGFscl9zdGF0ZXMgPSAyNDsKKyAgcmVwZWF0ZWQgSWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZyBpY2VfY2FuZGlkYXRlX2NvbmZpZ3MgPSAyNTsKKyAgcmVwZWF0ZWQgSWNlQ2FuZGlk
YXRlUGFpckV2ZW50IGljZV9jYW5kaWRhdGVfZXZlbnRzID0gMjY7CiAKICAgcmVwZWF0ZWQgQXVk
aW9SZWN2U3RyZWFtQ29uZmlnIGF1ZGlvX3JlY3Zfc3RyZWFtX2NvbmZpZ3MgPSAxMDE7CiAgIHJl
cGVhdGVkIEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyBhdWRpb19zZW5kX3N0cmVhbV9jb25maWdzID0g
MTAyOwpAQCAtNDUsMTM2ICs0NSwyMDYgQEAgbWVzc2FnZSBFdmVudCB7CiB9CiAKIG1lc3NhZ2Ug
SW5jb21pbmdSdHBQYWNrZXRzIHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGlt
ZXN0YW1wX21zID0gMTsKIAotICAvLyBSVFAgbWFya2VyIGJpdCwgdXNlZCB0byBsYWJlbCBib3Vu
ZGFyaWVzIHdpdGhpbiBlLmcuIHZpZGVvIGZyYW1lcy4KKyAgLy8gcmVxdWlyZWQgLSBSVFAgbWFy
a2VyIGJpdCwgdXNlZCB0byBsYWJlbCBib3VuZGFyaWVzIGJldHdlZW4gdmlkZW8gZnJhbWVzLgog
ICBvcHRpb25hbCBib29sIG1hcmtlciA9IDI7CiAKLSAgLy8gUlRQIHBheWxvYWQgdHlwZS4KKyAg
Ly8gcmVxdWlyZWQgLSBSVFAgcGF5bG9hZCB0eXBlLgogICBvcHRpb25hbCB1aW50MzIgcGF5bG9h
ZF90eXBlID0gMzsKIAotICAvLyBSVFAgc2VxdWVuY2UgbnVtYmVyLgorICAvLyByZXF1aXJlZCAt
IFJUUCBzZXF1ZW5jZSBudW1iZXIuCiAgIG9wdGlvbmFsIHVpbnQzMiBzZXF1ZW5jZV9udW1iZXIg
PSA0OwogCi0gIC8vIFJUUCBtb25vdG9uaWMgY2xvY2sgdGltZXN0YW1wIChub3QgYWN0dWFsIHRp
bWUpLgorICAvLyByZXF1aXJlZCAtIFJUUCBtb25vdG9uaWMgY2xvY2sgdGltZXN0YW1wIChub3Qg
YWN0dWFsIHRpbWUpLgogICBvcHRpb25hbCBmaXhlZDMyIHJ0cF90aW1lc3RhbXAgPSA1OwogCi0g
IC8vIFN5bmNocm9uaXphdGlvbiBzb3VyY2Ugb2YgdGhpcyBwYWNrZXQncyBSVFAgc3RyZWFtLgor
ICAvLyByZXF1aXJlZCAtIFN5bmNocm9uaXphdGlvbiBzb3VyY2Ugb2YgdGhpcyBwYWNrZXQncyBS
VFAgc3RyZWFtLgogICBvcHRpb25hbCBmaXhlZDMyIHNzcmMgPSA2OwogCiAgIC8vIFRPRE8odGVy
ZWxpdXMvZGlub3IpOiBBZGQgQ1NSQ3MuIEZpZWxkIG51bWJlciA3IHJlc2VydmVkIGZvciB0aGlz
IHB1cnBvc2UuCiAKLSAgLy8gcmVxdWlyZWQgLSBUaGUgc2l6ZSBvZiB0aGUgcGFja2V0IGluY2x1
ZGluZyBib3RoIHBheWxvYWQgYW5kIGhlYWRlci4KLSAgb3B0aW9uYWwgdWludDMyIHBhY2tldF9z
aXplID0gODsKKyAgLy8gcmVxdWlyZWQgLSBUaGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBtZWRp
YSBwYXlsb2FkLCBub3QgaW5jbHVkaW5nCisgIC8vIFJUUCBoZWFkZXIgb3IgcGFkZGluZy4gVGhl
IHBhY2tldCBzaXplIGlzIHRoZSBzdW0gb2YgcGF5bG9hZCwgaGVhZGVyIGFuZAorICAvLyBwYWRk
aW5nLgorICBvcHRpb25hbCB1aW50MzIgcGF5bG9hZF9zaXplID0gODsKKworICAvLyByZXF1aXJl
ZCAtIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIFJUUCBoZWFkZXIuCisgIG9wdGlvbmFsIHVp
bnQzMiBoZWFkZXJfc2l6ZSA9IDk7CisKKyAgLy8gcmVxdWlyZWQgLSBUaGUgc2l6ZSAoaW4gYnl0
ZXMpIG9mIHRoZSBwYWRkaW5nLgorICBvcHRpb25hbCB1aW50MzIgcGFkZGluZ19zaXplID0gMTA7
CisKKyAgLy8gb3B0aW9uYWwgLSByZXF1aXJlZCBpZiB0aGUgYmF0Y2ggY29udGFpbnMgZGVsdGEg
ZW5jb2RlZCBldmVudHMuCisgIG9wdGlvbmFsIHVpbnQzMiBudW1iZXJfb2ZfZGVsdGFzID0gMTE7
CisKKyAgLy8gRmllbGQgbnVtYmVycyAxMi0xNCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4KIAog
ICAvLyBPcHRpb25hbCBoZWFkZXIgZXh0ZW5zaW9ucy4KLSAgb3B0aW9uYWwgaW50MzIgdHJhbnNt
aXNzaW9uX3RpbWVfb2Zmc2V0ID0gOTsKLSAgb3B0aW9uYWwgdWludDMyIGFic29sdXRlX3NlbmRf
dGltZSA9IDEwOwotICBvcHRpb25hbCB1aW50MzIgdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciA9
IDExOwotICBvcHRpb25hbCB1aW50MzIgYXVkaW9fbGV2ZWwgPSAxMjsKLSAgLy8gVE9ETyh0ZXJl
bGl1cyk6IEFkZCBoZWFkZXIgZXh0ZW5zaW9ucyBsaWtlIHZpZGVvIHJvdGF0aW9uLCBwbGF5b3V0
IGRlbGF5PwotCi0gIC8vIERlbHRhIGVuY29kaW5ncwotICBvcHRpb25hbCBieXRlcyB0aW1lc3Rh
bXBfZGVsdGFzX21zID0gMTAxOworICBvcHRpb25hbCB1aW50MzIgdHJhbnNwb3J0X3NlcXVlbmNl
X251bWJlciA9IDE1OworICBvcHRpb25hbCBpbnQzMiB0cmFuc21pc3Npb25fdGltZV9vZmZzZXQg
PSAxNjsKKyAgb3B0aW9uYWwgdWludDMyIGFic29sdXRlX3NlbmRfdGltZSA9IDE3OworICBvcHRp
b25hbCB1aW50MzIgdmlkZW9fcm90YXRpb24gPSAxODsKKyAgLy8gfGF1ZGlvX2xldmVsfCBhbmQg
fHZvaWNlX2FjdGl2aXR5fCBhcmUgYWx3YXlzIHVzZWQgaW4gY29uanVuY3Rpb24uCisgIG9wdGlv
bmFsIHVpbnQzMiBhdWRpb19sZXZlbCA9IDE5OworICBvcHRpb25hbCBib29sIHZvaWNlX2FjdGl2
aXR5ID0gMjA7CisgIC8vIFRPRE8odGVyZWxpdXMpOiBBZGQgb3RoZXIgaGVhZGVyIGV4dGVuc2lv
bnMgbGlrZSBwbGF5b3V0IGRlbGF5PworCisgIC8vIERlbHRhIGVuY29kaW5ncy4KKyAgb3B0aW9u
YWwgYnl0ZXMgdGltZXN0YW1wX21zX2RlbHRhcyA9IDEwMTsKICAgb3B0aW9uYWwgYnl0ZXMgbWFy
a2VyX2RlbHRhcyA9IDEwMjsKICAgb3B0aW9uYWwgYnl0ZXMgcGF5bG9hZF90eXBlX2RlbHRhcyA9
IDEwMzsKICAgb3B0aW9uYWwgYnl0ZXMgc2VxdWVuY2VfbnVtYmVyX2RlbHRhcyA9IDEwNDsKICAg
b3B0aW9uYWwgYnl0ZXMgcnRwX3RpbWVzdGFtcF9kZWx0YXMgPSAxMDU7CisgIC8vIEZpZWxkIG51
bWJlciAxMDcgcmVzZXJ2ZWQgZm9yIENTUkMuCiAgIG9wdGlvbmFsIGJ5dGVzIHNzcmNfZGVsdGFz
ID0gMTA2OwotICBvcHRpb25hbCBieXRlcyBwYWNrZXRfc2l6ZV9kZWx0YXMgPSAxMDc7Ci0gIG9w
dGlvbmFsIGJ5dGVzIHRyYW5zbWlzc2lvbl90aW1lX29mZnNldF9kZWx0YXMgPSAxMDg7Ci0gIG9w
dGlvbmFsIGJ5dGVzIGFic29sdXRlX3NlbmRfdGltZV9kZWx0YXMgPSAxMDk7Ci0gIG9wdGlvbmFs
IGJ5dGVzIHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfZGVsdGFzID0gMTEwOwotICBvcHRpb25h
bCBieXRlcyBhdWRpb19sZXZlbF9kZWx0YXMgPSAxMTE7CisgIG9wdGlvbmFsIGJ5dGVzIHBheWxv
YWRfc2l6ZV9kZWx0YXMgPSAxMDg7CisgIG9wdGlvbmFsIGJ5dGVzIGhlYWRlcl9zaXplX2RlbHRh
cyA9IDEwOTsKKyAgb3B0aW9uYWwgYnl0ZXMgcGFkZGluZ19zaXplX2RlbHRhcyA9IDExMDsKKyAg
Ly8gRmllbGQgbnVtYmVyIDExMS0xMTQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuCisgIG9wdGlv
bmFsIGJ5dGVzIHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfZGVsdGFzID0gMTE1OworICBvcHRp
b25hbCBieXRlcyB0cmFuc21pc3Npb25fdGltZV9vZmZzZXRfZGVsdGFzID0gMTE2OworICBvcHRp
b25hbCBieXRlcyBhYnNvbHV0ZV9zZW5kX3RpbWVfZGVsdGFzID0gMTE3OworICBvcHRpb25hbCBi
eXRlcyB2aWRlb19yb3RhdGlvbl9kZWx0YXMgPSAxMTg7CisgIC8vIHxhdWRpb19sZXZlbHwgYW5k
IHx2b2ljZV9hY3Rpdml0eXwgYXJlIGFsd2F5cyB1c2VkIGluIGNvbmp1bmN0aW9uLgorICBvcHRp
b25hbCBieXRlcyBhdWRpb19sZXZlbF9kZWx0YXMgPSAxMTk7CisgIG9wdGlvbmFsIGJ5dGVzIHZv
aWNlX2FjdGl2aXR5X2RlbHRhcyA9IDEyMDsKIH0KIAogbWVzc2FnZSBPdXRnb2luZ1J0cFBhY2tl
dHMgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwog
Ci0gIC8vIFJUUCBtYXJrZXIgYml0LCB1c2VkIHRvIGxhYmVsIGJvdW5kYXJpZXMgd2l0aGluIGUu
Zy4gdmlkZW8gZnJhbWVzLgorICAvLyByZXF1aXJlZCAtIFJUUCBtYXJrZXIgYml0LCB1c2VkIHRv
IGxhYmVsIGJvdW5kYXJpZXMgYmV0d2VlbiB2aWRlbyBmcmFtZXMuCiAgIG9wdGlvbmFsIGJvb2wg
bWFya2VyID0gMjsKIAorICAvLyByZXF1aXJlZCAtIFJUUCBwYXlsb2FkIHR5cGUuCiAgIG9wdGlv
bmFsIHVpbnQzMiBwYXlsb2FkX3R5cGUgPSAzOwogCi0gIC8vIFJUUCBzZXF1ZW5jZSBudW1iZXIu
CisgIC8vIHJlcXVpcmVkIC0gUlRQIHNlcXVlbmNlIG51bWJlci4KICAgb3B0aW9uYWwgdWludDMy
IHNlcXVlbmNlX251bWJlciA9IDQ7CiAKLSAgLy8gUlRQIG1vbm90b25pYyBjbG9jayB0aW1lc3Rh
bXAgKG5vdCBhY3R1YWwgdGltZSkuCisgIC8vIHJlcXVpcmVkIC0gUlRQIG1vbm90b25pYyBjbG9j
ayB0aW1lc3RhbXAgKG5vdCBhY3R1YWwgdGltZSkuCiAgIG9wdGlvbmFsIGZpeGVkMzIgcnRwX3Rp
bWVzdGFtcCA9IDU7CiAKLSAgLy8gU3luY2hyb25pemF0aW9uIHNvdXJjZSBvZiB0aGlzIHBhY2tl
dCdzIFJUUCBzdHJlYW0uCisgIC8vIHJlcXVpcmVkIC0gU3luY2hyb25pemF0aW9uIHNvdXJjZSBv
ZiB0aGlzIHBhY2tldCdzIFJUUCBzdHJlYW0uCiAgIG9wdGlvbmFsIGZpeGVkMzIgc3NyYyA9IDY7
CiAKICAgLy8gVE9ETyh0ZXJlbGl1cy9kaW5vcik6IEFkZCBDU1JDcy4gRmllbGQgbnVtYmVyIDcg
cmVzZXJ2ZWQgZm9yIHRoaXMgcHVycG9zZS4KIAotICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIG9m
IHRoZSBwYWNrZXQgaW5jbHVkaW5nIGJvdGggcGF5bG9hZCBhbmQgaGVhZGVyLgotICBvcHRpb25h
bCB1aW50MzIgcGFja2V0X3NpemUgPSA4OworICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIChpbiBi
eXRlcykgb2YgdGhlIG1lZGlhIHBheWxvYWQsIG5vdCBpbmNsdWRpbmcKKyAgLy8gUlRQIGhlYWRl
ciBvciBwYWRkaW5nLiBUaGUgcGFja2V0IHNpemUgaXMgdGhlIHN1bSBvZiBwYXlsb2FkLCBoZWFk
ZXIgYW5kCisgIC8vIHBhZGRpbmcuCisgIG9wdGlvbmFsIHVpbnQzMiBwYXlsb2FkX3NpemUgPSA4
OworCisgIC8vIHJlcXVpcmVkIC0gVGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgUlRQIGhlYWRl
ci4KKyAgb3B0aW9uYWwgdWludDMyIGhlYWRlcl9zaXplID0gOTsKKworICAvLyByZXF1aXJlZCAt
IFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIHBhZGRpbmcuCisgIG9wdGlvbmFsIHVpbnQzMiBw
YWRkaW5nX3NpemUgPSAxMDsKKworICAvLyBvcHRpb25hbCAtIHJlcXVpcmVkIGlmIHRoZSBiYXRj
aCBjb250YWlucyBkZWx0YSBlbmNvZGVkIGV2ZW50cy4KKyAgb3B0aW9uYWwgdWludDMyIG51bWJl
cl9vZl9kZWx0YXMgPSAxMTsKKworICAvLyBGaWVsZCBudW1iZXJzIDEyLTE0IHJlc2VydmVkIGZv
ciBmdXR1cmUgdXNlLgogCiAgIC8vIE9wdGlvbmFsIGhlYWRlciBleHRlbnNpb25zLgotICBvcHRp
b25hbCBpbnQzMiB0cmFuc21pc3Npb25fdGltZV9vZmZzZXQgPSA5OwotICBvcHRpb25hbCB1aW50
MzIgYWJzb2x1dGVfc2VuZF90aW1lID0gMTA7Ci0gIG9wdGlvbmFsIHVpbnQzMiB0cmFuc3BvcnRf
c2VxdWVuY2VfbnVtYmVyID0gMTE7Ci0gIG9wdGlvbmFsIHVpbnQzMiBhdWRpb19sZXZlbCA9IDEy
OwotICAvLyBUT0RPKHRlcmVsaXVzKTogQWRkIGhlYWRlciBleHRlbnNpb25zIGxpa2UgdmlkZW8g
cm90YXRpb24sIHBsYXlvdXQgZGVsYXk/Ci0KLSAgLy8gRGVsdGEgZW5jb2RpbmdzCi0gIG9wdGlv
bmFsIGJ5dGVzIHRpbWVzdGFtcF9kZWx0YXNfbXMgPSAxMDE7CisgIG9wdGlvbmFsIHVpbnQzMiB0
cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyID0gMTU7CisgIG9wdGlvbmFsIGludDMyIHRyYW5zbWlz
c2lvbl90aW1lX29mZnNldCA9IDE2OworICBvcHRpb25hbCB1aW50MzIgYWJzb2x1dGVfc2VuZF90
aW1lID0gMTc7CisgIG9wdGlvbmFsIHVpbnQzMiB2aWRlb19yb3RhdGlvbiA9IDE4OworICAvLyB8
YXVkaW9fbGV2ZWx8IGFuZCB8dm9pY2VfYWN0aXZpdHl8IGFyZSBhbHdheXMgdXNlZCBpbiBjb25q
dW5jdGlvbi4KKyAgb3B0aW9uYWwgdWludDMyIGF1ZGlvX2xldmVsID0gMTk7CisgIG9wdGlvbmFs
IGJvb2wgdm9pY2VfYWN0aXZpdHkgPSAyMDsKKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IEFkZCBvdGhl
ciBoZWFkZXIgZXh0ZW5zaW9ucyBsaWtlIHBsYXlvdXQgZGVsYXk/CisKKyAgLy8gRGVsdGEgZW5j
b2RpbmdzLgorICBvcHRpb25hbCBieXRlcyB0aW1lc3RhbXBfbXNfZGVsdGFzID0gMTAxOwogICBv
cHRpb25hbCBieXRlcyBtYXJrZXJfZGVsdGFzID0gMTAyOwogICBvcHRpb25hbCBieXRlcyBwYXls
b2FkX3R5cGVfZGVsdGFzID0gMTAzOwogICBvcHRpb25hbCBieXRlcyBzZXF1ZW5jZV9udW1iZXJf
ZGVsdGFzID0gMTA0OwogICBvcHRpb25hbCBieXRlcyBydHBfdGltZXN0YW1wX2RlbHRhcyA9IDEw
NTsKICAgb3B0aW9uYWwgYnl0ZXMgc3NyY19kZWx0YXMgPSAxMDY7Ci0gIG9wdGlvbmFsIGJ5dGVz
IHBhY2tldF9zaXplX2RlbHRhcyA9IDEwNzsKLSAgb3B0aW9uYWwgYnl0ZXMgcHJvYmVfY2x1c3Rl
cl9pZF9kZWx0YXMgPSAxMDg7Ci0gIG9wdGlvbmFsIGJ5dGVzIHRyYW5zbWlzc2lvbl90aW1lX29m
ZnNldF9kZWx0YXMgPSAxMDk7Ci0gIG9wdGlvbmFsIGJ5dGVzIGFic29sdXRlX3NlbmRfdGltZV9k
ZWx0YXMgPSAxMTA7Ci0gIG9wdGlvbmFsIGJ5dGVzIHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJf
ZGVsdGFzID0gMTExOworICAvLyBGaWVsZCBudW1iZXIgMTA3IHJlc2VydmVkIGZvciBDU1JDLgor
ICBvcHRpb25hbCBieXRlcyBwYXlsb2FkX3NpemVfZGVsdGFzID0gMTA4OworICBvcHRpb25hbCBi
eXRlcyBoZWFkZXJfc2l6ZV9kZWx0YXMgPSAxMDk7CisgIG9wdGlvbmFsIGJ5dGVzIHBhZGRpbmdf
c2l6ZV9kZWx0YXMgPSAxMTA7CisgIC8vIEZpZWxkIG51bWJlciAxMTEtMTE0IHJlc2VydmVkIGZv
ciBmdXR1cmUgdXNlLgorICBvcHRpb25hbCBieXRlcyB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVy
X2RlbHRhcyA9IDExNTsKKyAgb3B0aW9uYWwgYnl0ZXMgdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0
X2RlbHRhcyA9IDExNjsKKyAgb3B0aW9uYWwgYnl0ZXMgYWJzb2x1dGVfc2VuZF90aW1lX2RlbHRh
cyA9IDExNzsKKyAgb3B0aW9uYWwgYnl0ZXMgdmlkZW9fcm90YXRpb25fZGVsdGFzID0gMTE4Owor
ICAvLyB8YXVkaW9fbGV2ZWx8IGFuZCB8dm9pY2VfYWN0aXZpdHl8IGFyZSBhbHdheXMgdXNlZCBp
biBjb25qdW5jdGlvbi4KKyAgb3B0aW9uYWwgYnl0ZXMgYXVkaW9fbGV2ZWxfZGVsdGFzID0gMTE5
OworICBvcHRpb25hbCBieXRlcyB2b2ljZV9hY3Rpdml0eV9kZWx0YXMgPSAxMjA7CiB9CiAKIG1l
c3NhZ2UgSW5jb21pbmdSdGNwUGFja2V0cyB7CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFsIGlu
dDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKICAgLy8gcmVxdWlyZWQgLSBUaGUgd2hvbGUgcGFja2V0
IGluY2x1ZGluZyBib3RoIHBheWxvYWQgYW5kIGhlYWRlci4KICAgb3B0aW9uYWwgYnl0ZXMgcmF3
X3BhY2tldCA9IDI7CiAgIC8vIFRPRE8odGVyZWxpdXMpOiBGZWFzaWJsZSB0byBsb2cgcGFyc2Vk
IFJUQ1AgaW5zdGVhZD8KIAotICAvLyBEZWx0YSBlbmNvZGluZ3MKLSAgb3B0aW9uYWwgYnl0ZXMg
dGltZXN0YW1wX2RlbHRhc19tcyA9IDEwMTsKLSAgb3B0aW9uYWwgYnl0ZXMgcmF3X3BhY2tldF9k
ZWx0YXMgPSAxMDI7CisgIC8vIG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgdGhlIGJhdGNoIGNvbnRh
aW5zIGRlbHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25hbCB1aW50MzIgbnVtYmVyX29mX2Rl
bHRhcyA9IDM7CisKKyAgLy8gRGVsdGEvYmxvYiBlbmNvZGluZ3MuCisgIG9wdGlvbmFsIGJ5dGVz
IHRpbWVzdGFtcF9tc19kZWx0YXMgPSAxMDE7CisgIG9wdGlvbmFsIGJ5dGVzIHJhd19wYWNrZXRf
YmxvYnMgPSAxMDI7CiB9CiAKIG1lc3NhZ2UgT3V0Z29pbmdSdGNwUGFja2V0cyB7CisgIC8vIHJl
cXVpcmVkCiAgIG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKICAgLy8gcmVxdWly
ZWQgLSBUaGUgd2hvbGUgcGFja2V0IGluY2x1ZGluZyBib3RoIHBheWxvYWQgYW5kIGhlYWRlci4K
ICAgb3B0aW9uYWwgYnl0ZXMgcmF3X3BhY2tldCA9IDI7CiAgIC8vIFRPRE8odGVyZWxpdXMpOiBG
ZWFzaWJsZSB0byBsb2cgcGFyc2VkIFJUQ1AgaW5zdGVhZD8KIAotICAvLyBEZWx0YSBlbmNvZGlu
Z3MKLSAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1wX2RlbHRhc19tcyA9IDEwMTsKLSAgb3B0aW9u
YWwgYnl0ZXMgcmF3X3BhY2tldF9kZWx0YXMgPSAxMDI7CisgIC8vIG9wdGlvbmFsIC0gcmVxdWly
ZWQgaWYgdGhlIGJhdGNoIGNvbnRhaW5zIGRlbHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25h
bCB1aW50MzIgbnVtYmVyX29mX2RlbHRhcyA9IDM7CisKKyAgLy8gRGVsdGEvYmxvYiBlbmNvZGlu
Z3MuCisgIG9wdGlvbmFsIGJ5dGVzIHRpbWVzdGFtcF9tc19kZWx0YXMgPSAxMDE7CisgIG9wdGlv
bmFsIGJ5dGVzIHJhd19wYWNrZXRfYmxvYnMgPSAxMDI7CiB9CiAKIG1lc3NhZ2UgQXVkaW9QbGF5
b3V0RXZlbnRzIHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21z
ID0gMTsKIAogICAvLyByZXF1aXJlZCAtIFRoZSBTU1JDIG9mIHRoZSBhdWRpbyBzdHJlYW0gYXNz
b2NpYXRlZCB3aXRoIHRoZSBwbGF5b3V0IGV2ZW50LgogICBvcHRpb25hbCB1aW50MzIgbG9jYWxf
c3NyYyA9IDI7CiAKLSAgLy8gRGVsdGEgZW5jb2RpbmdzCi0gIG9wdGlvbmFsIGJ5dGVzIHRpbWVz
dGFtcF9kZWx0YXNfbXMgPSAxMDE7CisgIC8vIG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgdGhlIGJh
dGNoIGNvbnRhaW5zIGRlbHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25hbCB1aW50MzIgbnVt
YmVyX29mX2RlbHRhcyA9IDM7CisKKyAgLy8gRGVsdGEgZW5jb2RpbmdzLgorICBvcHRpb25hbCBi
eXRlcyB0aW1lc3RhbXBfbXNfZGVsdGFzID0gMTAxOwogICBvcHRpb25hbCBieXRlcyBsb2NhbF9z
c3JjX2RlbHRhcyA9IDEwMjsKIH0KIAogbWVzc2FnZSBCZWdpbkxvZ0V2ZW50IHsKKyAgLy8gcmVx
dWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKKworICAvLyByZXF1aXJl
ZAorICBvcHRpb25hbCB1aW50MzIgdmVyc2lvbiA9IDI7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0
aW9uYWwgaW50NjQgdXRjX3RpbWVfbXMgPSAzOwogfQogCiBtZXNzYWdlIEVuZExvZ0V2ZW50IHsK
KyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIH0KIAog
bWVzc2FnZSBMb3NzQmFzZWRCd2VVcGRhdGVzIHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwg
aW50NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAvLyBUT0RPKHRlcmVsaXVzKTogVXBkYXRlIGxv
ZyBpbnRlcmZhY2UgdG8gdW5zaWduZWQuCkBAIC0xOTEsMjkgKzI2MSwzNyBAQCBtZXNzYWdlIExv
c3NCYXNlZEJ3ZVVwZGF0ZXMgewogICAvLyByZXF1aXJlZCAtIFRvdGFsIG51bWJlciBvZiBwYWNr
ZXRzIHRoYXQgdGhlIEJXRSB1cGRhdGUgaXMgYmFzZWQgb24uCiAgIG9wdGlvbmFsIHVpbnQzMiB0
b3RhbF9wYWNrZXRzID0gNDsKIAotICAvLyBEZWx0YSBlbmNvZGluZ3MKLSAgb3B0aW9uYWwgYnl0
ZXMgdGltZXN0YW1wX2RlbHRhc19tcyA9IDEwMTsKLSAgb3B0aW9uYWwgYnl0ZXMgYml0cmF0ZV9k
ZWx0YXNfYnBzID0gMTAyOworICAvLyBvcHRpb25hbCAtIHJlcXVpcmVkIGlmIHRoZSBiYXRjaCBj
b250YWlucyBkZWx0YSBlbmNvZGVkIGV2ZW50cy4KKyAgb3B0aW9uYWwgdWludDMyIG51bWJlcl9v
Zl9kZWx0YXMgPSA1OworCisgIC8vIERlbHRhIGVuY29kaW5ncy4KKyAgb3B0aW9uYWwgYnl0ZXMg
dGltZXN0YW1wX21zX2RlbHRhcyA9IDEwMTsKKyAgb3B0aW9uYWwgYnl0ZXMgYml0cmF0ZV9icHNf
ZGVsdGFzID0gMTAyOwogICBvcHRpb25hbCBieXRlcyBmcmFjdGlvbl9sb3NzX2RlbHRhcyA9IDEw
MzsKICAgb3B0aW9uYWwgYnl0ZXMgdG90YWxfcGFja2V0c19kZWx0YXMgPSAxMDQ7CiB9CiAKIG1l
c3NhZ2UgRGVsYXlCYXNlZEJ3ZVVwZGF0ZXMgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBp
bnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCiAgIC8vIHJlcXVpcmVkIC0gQmFuZHdpZHRoIGVzdGlt
YXRlIChpbiBicHMpIGFmdGVyIHRoZSB1cGRhdGUuCiAgIG9wdGlvbmFsIHVpbnQzMiBiaXRyYXRl
X2JwcyA9IDI7CiAKICAgZW51bSBEZXRlY3RvclN0YXRlIHsKLSAgICBCV0VfTk9STUFMID0gMDsK
LSAgICBCV0VfVU5ERVJVU0lORyA9IDE7Ci0gICAgQldFX09WRVJVU0lORyA9IDI7CisgICAgQldF
X1VOS05PV05fU1RBVEUgPSAwOworICAgIEJXRV9OT1JNQUwgPSAxOworICAgIEJXRV9VTkRFUlVT
SU5HID0gMjsKKyAgICBCV0VfT1ZFUlVTSU5HID0gMzsKICAgfQogICBvcHRpb25hbCBEZXRlY3Rv
clN0YXRlIGRldGVjdG9yX3N0YXRlID0gMzsKIAotICAvLyBEZWx0YSBlbmNvZGluZ3MKLSAgb3B0
aW9uYWwgYnl0ZXMgdGltZXN0YW1wX2RlbHRhc19tcyA9IDEwMTsKLSAgb3B0aW9uYWwgYnl0ZXMg
Yml0cmF0ZV9kZWx0YXNfYnBzID0gMTAyOworICAvLyBvcHRpb25hbCAtIHJlcXVpcmVkIGlmIHRo
ZSBiYXRjaCBjb250YWlucyBkZWx0YSBlbmNvZGVkIGV2ZW50cy4KKyAgb3B0aW9uYWwgdWludDMy
IG51bWJlcl9vZl9kZWx0YXMgPSA0OworCisgIC8vIERlbHRhIGVuY29kaW5ncy4KKyAgb3B0aW9u
YWwgYnl0ZXMgdGltZXN0YW1wX21zX2RlbHRhcyA9IDEwMTsKKyAgb3B0aW9uYWwgYnl0ZXMgYml0
cmF0ZV9icHNfZGVsdGFzID0gMTAyOwogICBvcHRpb25hbCBieXRlcyBkZXRlY3Rvcl9zdGF0ZV9k
ZWx0YXMgPSAxMDM7CiB9CiAKQEAgLTIyMSwxNSArMjk5LDE3IEBAIG1lc3NhZ2UgRGVsYXlCYXNl
ZEJ3ZVVwZGF0ZXMgewogbWVzc2FnZSBSdHBIZWFkZXJFeHRlbnNpb25Db25maWcgewogICAvLyBP
cHRpb25hbCBJRHMgZm9yIHRoZSBoZWFkZXIgZXh0ZW5zaW9ucy4gRWFjaCBJRCBpcyBhIDQtYml0
IG51bWJlciB0aGF0IGlzCiAgIC8vIG9ubHkgc2V0IGlmIHRoYXQgZXh0ZW5zaW9uIGlzIGNvbmZp
Z3VyZWQuCi0gIC8vIFRPRE8odGVyZWxpdXMpOiBDYW4gd2Ugc2tpcCB0cmFuc21pc3Npb25fdGlt
ZV9vZmZzZXQ/IFdoZW4gaXMgaXQgdXNlZD8KKyAgLy8gVE9ETzogQ2FuIHdlIHNraXAgYXVkaW8g
bGV2ZWw/CiAgIG9wdGlvbmFsIGludDMyIHRyYW5zbWlzc2lvbl90aW1lX29mZnNldF9pZCA9IDE7
CiAgIG9wdGlvbmFsIGludDMyIGFic29sdXRlX3NlbmRfdGltZV9pZCA9IDI7CiAgIG9wdGlvbmFs
IGludDMyIHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfaWQgPSAzOwotICBvcHRpb25hbCBpbnQz
MiBhdWRpb19sZXZlbF9pZCA9IDQ7Ci0gIC8vIFRPRE8odGVyZWxpdXMpOiBBZGQgdmlkZW9fcm90
YXRpb24gYW5kIHBsYXlvdXQgZGVsYXk/CisgIG9wdGlvbmFsIGludDMyIHZpZGVvX3JvdGF0aW9u
X2lkID0gNDsKKyAgb3B0aW9uYWwgaW50MzIgYXVkaW9fbGV2ZWxfaWQgPSA1OworICAvLyBUT0RP
KHRlcmVsaXVzKTogQWRkIG90aGVyIGhlYWRlciBleHRlbnNpb25zIGxpa2UgcGxheW91dCBkZWxh
eT8KIH0KIAogbWVzc2FnZSBWaWRlb1JlY3ZTdHJlYW1Db25maWcgeworICAvLyByZXF1aXJlZAog
ICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCiAgIC8vIHJlcXVpcmVkIC0gU3lu
Y2hyb25pemF0aW9uIHNvdXJjZSAoc3RyZWFtIGlkZW50aWZpZXIpIHRvIGJlIHJlY2VpdmVkLgpA
QCAtMjM4LDQyICszMTgsMzggQEAgbWVzc2FnZSBWaWRlb1JlY3ZTdHJlYW1Db25maWcgewogICAv
LyByZXF1aXJlZCAtIFNlbmRlciBTU1JDIHVzZWQgZm9yIHNlbmRpbmcgUlRDUCAoc3VjaCBhcyBy
ZWNlaXZlciByZXBvcnRzKS4KICAgb3B0aW9uYWwgdWludDMyIGxvY2FsX3NzcmMgPSAzOwogCi0g
IC8vIHJlcXVpcmVkIGlmIFJUWCBpcyBjb25maWd1cmVkCisgIC8vIG9wdGlvbmFsIC0gcmVxdWly
ZWQgaWYgUlRYIGlzIGNvbmZpZ3VyZWQuIFNTUkMgZm9yIHRoZSBSVFggc3RyZWFtLgogICBvcHRp
b25hbCB1aW50MzIgcnR4X3NzcmMgPSA0OwogCi0gIC8vIG9wdGlvbmFsIC0gUlRQIHNvdXJjZSBz
dHJlYW0gSUQKLSAgb3B0aW9uYWwgYnl0ZXMgcnNpZCA9IDU7Ci0KICAgLy8gSURzIGZvciB0aGUg
aGVhZGVyIGV4dGVuc2lvbiB3ZSBjYXJlIGFib3V0LiBPbmx5IHJlcXVpcmVkIGlmIHRoZXJlIGFy
ZQogICAvLyBoZWFkZXIgZXh0ZW5zaW9ucyBjb25maWd1cmVkLgotICBvcHRpb25hbCBSdHBIZWFk
ZXJFeHRlbnNpb25Db25maWcgaGVhZGVyX2V4dGVuc2lvbnMgPSA2OworICBvcHRpb25hbCBSdHBI
ZWFkZXJFeHRlbnNpb25Db25maWcgaGVhZGVyX2V4dGVuc2lvbnMgPSA1OwogCiAgIC8vIFRPRE8o
dGVyZWxpdXMpOiBEbyB3ZSBuZWVkIGNvZGVjLXBheWxvYWQgbWFwcGluZz8gSWYgc28gYW5kIHJ0
eF9zc3JjIGlzCiAgIC8vIHVzZWQsIHdlIGFsc28gbmVlZCBhIG1hcCBiZXR3ZWVuIFJUUCBwYXls
b2FkIHR5cGUgYW5kIFJUWCBwYXlsb2FkIHR5cGUuCiB9CiAKIG1lc3NhZ2UgVmlkZW9TZW5kU3Ry
ZWFtQ29uZmlnIHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21z
ID0gMTsKIAotICAvLyBTeW5jaHJvbml6YXRpb24gc291cmNlIChzdHJlYW0gaWRlbnRpZmllcikg
Zm9yIG91dGdvaW5nIHN0cmVhbS4KLSAgLy8gT25lIHN0cmVhbSBjYW4gaGF2ZSBzZXZlcmFsIHNz
cmNzIGZvciBlLmcuIHNpbXVsY2FzdC4KKyAgLy8gcmVxdWlyZWQgLSBTeW5jaHJvbml6YXRpb24g
c291cmNlIChzdHJlYW0gaWRlbnRpZmllcikgZm9yIG91dGdvaW5nIHN0cmVhbS4KKyAgLy8gV2hl
biB1c2luZyBzaW11bGNhc3QsIGEgc2VwYXJhdGUgY29uZmlnIHNob3VsZCBiZSBsb2dnZWQgZm9y
IGVhY2ggc3RyZWFtLgogICBvcHRpb25hbCB1aW50MzIgc3NyYyA9IDI7CiAKLSAgLy8gU1NSQyBm
b3IgdGhlIFJUWCBzdHJlYW0KKyAgLy8gb3B0aW9uYWwgLSByZXF1aXJlZCBpZiBSVFggaXMgY29u
ZmlndXJlZC4gU1NSQyBmb3IgdGhlIFJUWCBzdHJlYW0uCiAgIG9wdGlvbmFsIHVpbnQzMiBydHhf
c3NyYyA9IDM7CiAKLSAgLy8gUlRQIHNvdXJjZSBzdHJlYW0gSUQKLSAgb3B0aW9uYWwgYnl0ZXMg
cnNpZCA9IDQ7Ci0KICAgLy8gSURzIGZvciB0aGUgaGVhZGVyIGV4dGVuc2lvbiB3ZSBjYXJlIGFi
b3V0LiBPbmx5IHJlcXVpcmVkIGlmIHRoZXJlIGFyZQogICAvLyBoZWFkZXIgZXh0ZW5zaW9ucyBj
b25maWd1cmVkLgotICBvcHRpb25hbCBSdHBIZWFkZXJFeHRlbnNpb25Db25maWcgaGVhZGVyX2V4
dGVuc2lvbnMgPSA1OworICBvcHRpb25hbCBSdHBIZWFkZXJFeHRlbnNpb25Db25maWcgaGVhZGVy
X2V4dGVuc2lvbnMgPSA0OwogCiAgIC8vIFRPRE8odGVyZWxpdXMpOiBEbyB3ZSBuZWVkIGNvZGVj
LXBheWxvYWQgbWFwcGluZz8gSWYgc28gYW5kIHJ0eF9zc3JjIGlzCiAgIC8vIHVzZWQsIHdlIGFs
c28gbmVlZCBhIG1hcCBiZXR3ZWVuIFJUUCBwYXlsb2FkIHR5cGUgYW5kIFJUWCBwYXlsb2FkIHR5
cGUuCiB9CiAKIG1lc3NhZ2UgQXVkaW9SZWN2U3RyZWFtQ29uZmlnIHsKKyAgLy8gcmVxdWlyZWQK
ICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAvLyByZXF1aXJlZCAtIFN5
bmNocm9uaXphdGlvbiBzb3VyY2UgKHN0cmVhbSBpZGVudGlmaWVyKSB0byBiZSByZWNlaXZlZC4K
QEAgLTI4NCwzOCArMzYwLDMzIEBAIG1lc3NhZ2UgQXVkaW9SZWN2U3RyZWFtQ29uZmlnIHsKIAog
ICAvLyBGaWVsZCBudW1iZXIgNCByZXNlcnZlZCBmb3IgUlRYIFNTUkMuCiAKLSAgLy8gb3B0aW9u
YWwgLSBSVFAgc291cmNlIHN0cmVhbSBJRAotICBvcHRpb25hbCBieXRlcyByc2lkID0gNTsKLQog
ICAvLyBJRHMgZm9yIHRoZSBoZWFkZXIgZXh0ZW5zaW9uIHdlIGNhcmUgYWJvdXQuIE9ubHkgcmVx
dWlyZWQgaWYgdGhlcmUgYXJlCiAgIC8vIGhlYWRlciBleHRlbnNpb25zIGNvbmZpZ3VyZWQuCi0g
IG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9ucyA9IDY7
CisgIG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9ucyA9
IDU7CiAKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IERvIHdlIG5lZWQgY29kZWMtcGF5bG9hZCBtYXBw
aW5nPyBJZiBzbyBhbmQgcnR4X3NzcmMgaXMKICAgLy8gdXNlZCwgd2UgYWxzbyBuZWVkIGEgbWFw
IGJldHdlZW4gUlRQIHBheWxvYWQgdHlwZSBhbmQgUlRYIHBheWxvYWQgdHlwZS4KIH0KIAogbWVz
c2FnZSBBdWRpb1NlbmRTdHJlYW1Db25maWcgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBp
bnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCi0gIC8vIFN5bmNocm9uaXphdGlvbiBzb3VyY2UgKHN0
cmVhbSBpZGVudGlmaWVyKSBmb3Igb3V0Z29pbmcgc3RyZWFtLgotICAvLyBPbmUgc3RyZWFtIGNh
biBoYXZlIHNldmVyYWwgc3NyY3MgZm9yIGUuZy4gc2ltdWxjYXN0LgorICAvLyByZXF1aXJlZCAt
IFN5bmNocm9uaXphdGlvbiBzb3VyY2UgKHN0cmVhbSBpZGVudGlmaWVyKSBmb3Igb3V0Z29pbmcg
c3RyZWFtLgogICBvcHRpb25hbCB1aW50MzIgc3NyYyA9IDI7CiAKLSAgLy8gRmllbGQgbnVtYmVy
IDMgcmVzZXJ2ZWQgZm9yIFJUWCBTU1JDCi0KLSAgLy8gUlRQIHNvdXJjZSBzdHJlYW0gSUQKLSAg
b3B0aW9uYWwgYnl0ZXMgcnNpZCA9IDQ7CisgIC8vIEZpZWxkIG51bWJlciAzIHJlc2VydmVkIGZv
ciBSVFggU1NSQy4KIAogICAvLyBJRHMgZm9yIHRoZSBoZWFkZXIgZXh0ZW5zaW9uIHdlIGNhcmUg
YWJvdXQuIE9ubHkgcmVxdWlyZWQgaWYgdGhlcmUgYXJlCiAgIC8vIGhlYWRlciBleHRlbnNpb25z
IGNvbmZpZ3VyZWQuCi0gIG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyBoZWFkZXJf
ZXh0ZW5zaW9ucyA9IDU7CisgIG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyBoZWFk
ZXJfZXh0ZW5zaW9ucyA9IDQ7CiAKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IERvIHdlIG5lZWQgY29k
ZWMtcGF5bG9hZCBtYXBwaW5nPyBJZiBzbyBhbmQgcnR4X3NzcmMgaXMKICAgLy8gdXNlZCwgd2Ug
YWxzbyBuZWVkIGEgbWFwIGJldHdlZW4gUlRQIHBheWxvYWQgdHlwZSBhbmQgUlRYIHBheWxvYWQg
dHlwZS4KIH0KIAogbWVzc2FnZSBBdWRpb05ldHdvcmtBZGFwdGF0aW9ucyB7CisgIC8vIHJlcXVp
cmVkCiAgIG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKICAgLy8gQml0IHJhdGUg
dGhhdCB0aGUgYXVkaW8gZW5jb2RlciBpcyBvcGVyYXRpbmcgYXQuCkBAIC0zMjgsNyArMzk5LDEy
IEBAIG1lc3NhZ2UgQXVkaW9OZXR3b3JrQWRhcHRhdGlvbnMgewogCiAgIC8vIFBhY2tldCBsb3Nz
IGZyYWN0aW9uIHRoYXQgdGhlIGVuY29kZXIncyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24gKEZF
QykgaXMKICAgLy8gb3B0aW1pemVkIGZvci4KLSAgb3B0aW9uYWwgZmxvYXQgdXBsaW5rX3BhY2tl
dF9sb3NzX2ZyYWN0aW9uID0gNDsKKyAgLy8gSW5zdGVhZCBvZiBlbmNvZGluZyBhIGZsb2F0LCB3
ZSBlbmNvZGUgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDE2MzgzLCB3aGljaAorICAvLyBpZiBkaXZp
ZGVkIGJ5IDE2MzgzLCB3aWxsIGdpdmUgYSB2YWx1ZSBjbG9zZSB0byB0aGUgb3JpZ2luYWwgZmxv
YXQuCisgIC8vIFRoZSB2YWx1ZSAxNjM4MyAoMl4xNCAtIDEpIHdhcyBjaG9zZW4gc28gdGhhdCBp
dCB3b3VsZCBnaXZlIGdvb2QgcHJlY2lzaW9uCisgIC8vIG9uIHRoZSBvbmUgaGFuZCwgYW5kIHdv
dWxkIGJlIGVuY29kYWJsZSB3aXRoIHR3byBieXRlcyBpbiB2YXJpbnQgZm9ybQorICAvLyBvbiB0
aGUgb3RoZXIgaGFuZC4KKyAgb3B0aW9uYWwgdWludDMyIHVwbGlua19wYWNrZXRfbG9zc19mcmFj
dGlvbiA9IDQ7CiAKICAgLy8gV2hldGhlciBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24gKEZFQykg
aXMgdHVybmVkIG9uIG9yIG9mZi4KICAgb3B0aW9uYWwgYm9vbCBlbmFibGVfZmVjID0gNTsKQEAg
LTMzOSwxMCArNDE1LDEzIEBAIG1lc3NhZ2UgQXVkaW9OZXR3b3JrQWRhcHRhdGlvbnMgewogICAv
LyBOdW1iZXIgb2YgYXVkaW8gY2hhbm5lbHMgdGhhdCBlYWNoIGVuY29kZWQgcGFja2V0IGNvbnNp
c3RzIG9mLgogICBvcHRpb25hbCB1aW50MzIgbnVtX2NoYW5uZWxzID0gNzsKIAotICAvLyBEZWx0
YSBlbmNvZGluZ3MKLSAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1wX2RlbHRhc19tcyA9IDEwMTsK
LSAgb3B0aW9uYWwgYnl0ZXMgYml0cmF0ZV9kZWx0YXNfYnBzID0gMTAyOwotICBvcHRpb25hbCBi
eXRlcyBmcmFtZV9sZW5ndGhfZGVsdGFzX21zID0gMTAzOworICAvLyBvcHRpb25hbCAtIHJlcXVp
cmVkIGlmIHRoZSBiYXRjaCBjb250YWlucyBkZWx0YSBlbmNvZGVkIGV2ZW50cy4KKyAgb3B0aW9u
YWwgdWludDMyIG51bWJlcl9vZl9kZWx0YXMgPSA4OworCisgIC8vIERlbHRhIGVuY29kaW5ncy4K
KyAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1wX21zX2RlbHRhcyA9IDEwMTsKKyAgb3B0aW9uYWwg
Ynl0ZXMgYml0cmF0ZV9icHNfZGVsdGFzID0gMTAyOworICBvcHRpb25hbCBieXRlcyBmcmFtZV9s
ZW5ndGhfbXNfZGVsdGFzID0gMTAzOwogICBvcHRpb25hbCBieXRlcyB1cGxpbmtfcGFja2V0X2xv
c3NfZnJhY3Rpb25fZGVsdGFzID0gMTA0OwogICBvcHRpb25hbCBieXRlcyBlbmFibGVfZmVjX2Rl
bHRhcyA9IDEwNTsKICAgb3B0aW9uYWwgYnl0ZXMgZW5hYmxlX2R0eF9kZWx0YXMgPSAxMDY7CkBA
IC0zNTAsNiArNDI5LDcgQEAgbWVzc2FnZSBBdWRpb05ldHdvcmtBZGFwdGF0aW9ucyB7CiB9CiAK
IG1lc3NhZ2UgQndlUHJvYmVDbHVzdGVyIHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgaW50
NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAvLyByZXF1aXJlZCAtIFRoZSBpZCBvZiB0aGlzIHBy
b2JlIGNsdXN0ZXIuCkBAIC0zNjYsNiArNDQ2LDcgQEAgbWVzc2FnZSBCd2VQcm9iZUNsdXN0ZXIg
ewogfQogCiBtZXNzYWdlIEJ3ZVByb2JlUmVzdWx0U3VjY2VzcyB7CisgIC8vIHJlcXVpcmVkCiAg
IG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKICAgLy8gcmVxdWlyZWQgLSBUaGUg
aWQgb2YgdGhpcyBwcm9iZSBjbHVzdGVyLgpAQCAtMzc2LDYgKzQ1Nyw3IEBAIG1lc3NhZ2UgQndl
UHJvYmVSZXN1bHRTdWNjZXNzIHsKIH0KIAogbWVzc2FnZSBCd2VQcm9iZVJlc3VsdEZhaWx1cmUg
eworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCiAg
IC8vIHJlcXVpcmVkIC0gVGhlIGlkIG9mIHRoaXMgcHJvYmUgY2x1c3Rlci4KQEAgLTM5MSwzICs0
NzMsMTAxIEBAIG1lc3NhZ2UgQndlUHJvYmVSZXN1bHRGYWlsdXJlIHsKICAgLy8gcmVxdWlyZWQK
ICAgb3B0aW9uYWwgRmFpbHVyZVJlYXNvbiBmYWlsdXJlID0gMzsKIH0KKworbWVzc2FnZSBBbHJT
dGF0ZSB7CisgIC8vIHJlcXVpcmVkCisgIG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7
CisKKyAgLy8gcmVxdWlyZWQgLSBUcnVlIGlmIHRoZSBzZW5kIHJhdGUgaXMgYXBwbGljYXRpb24g
bGltaXRlZC4KKyAgb3B0aW9uYWwgYm9vbCBpbl9hbHIgPSAyOworfQorCittZXNzYWdlIEljZUNh
bmRpZGF0ZVBhaXJDb25maWcgeworICBlbnVtIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlIHsK
KyAgICBVTktOT1dOX0NPTkZJR19UWVBFID0gMDsKKyAgICBBRERFRCA9IDE7CisgICAgVVBEQVRF
RCA9IDI7CisgICAgREVTVFJPWUVEID0gMzsKKyAgICBTRUxFQ1RFRCA9IDQ7CisgIH0KKworICBl
bnVtIEljZUNhbmRpZGF0ZVR5cGUgeworICAgIFVOS05PV05fQ0FORElEQVRFX1RZUEUgPSAwOwor
ICAgIExPQ0FMID0gMTsKKyAgICBTVFVOID0gMjsKKyAgICBQUkZMWCA9IDM7CisgICAgUkVMQVkg
PSA0OworICB9CisKKyAgZW51bSBQcm90b2NvbCB7CisgICAgVU5LTk9XTl9QUk9UT0NPTCA9IDA7
CisgICAgVURQID0gMTsKKyAgICBUQ1AgPSAyOworICAgIFNTTFRDUCA9IDM7CisgICAgVExTID0g
NDsKKyAgfQorCisgIGVudW0gQWRkcmVzc0ZhbWlseSB7CisgICAgVU5LTk9XTl9BRERSRVNTX0ZB
TUlMWSA9IDA7CisgICAgSVBWNCA9IDE7CisgICAgSVBWNiA9IDI7CisgIH0KKworICBlbnVtIE5l
dHdvcmtUeXBlIHsKKyAgICBVTktOT1dOX05FVFdPUktfVFlQRSA9IDA7CisgICAgRVRIRVJORVQg
PSAxOworICAgIFdJRkkgPSAyOworICAgIENFTExVTEFSID0gMzsKKyAgICBWUE4gPSA0OworICAg
IExPT1BCQUNLID0gNTsKKyAgfQorCisgIC8vIHJlcXVpcmVkCisgIG9wdGlvbmFsIGludDY0IHRp
bWVzdGFtcF9tcyA9IDE7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgSWNlQ2FuZGlkYXRl
UGFpckNvbmZpZ1R5cGUgY29uZmlnX3R5cGUgPSAyOworCisgIC8vIHJlcXVpcmVkCisgIG9wdGlv
bmFsIHVpbnQzMiBjYW5kaWRhdGVfcGFpcl9pZCA9IDM7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0
aW9uYWwgSWNlQ2FuZGlkYXRlVHlwZSBsb2NhbF9jYW5kaWRhdGVfdHlwZSA9IDQ7CisKKyAgLy8g
cmVxdWlyZWQKKyAgb3B0aW9uYWwgUHJvdG9jb2wgbG9jYWxfcmVsYXlfcHJvdG9jb2wgPSA1Owor
CisgIC8vIHJlcXVpcmVkCisgIG9wdGlvbmFsIE5ldHdvcmtUeXBlIGxvY2FsX25ldHdvcmtfdHlw
ZSA9IDY7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgQWRkcmVzc0ZhbWlseSBsb2NhbF9h
ZGRyZXNzX2ZhbWlseSA9IDc7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgSWNlQ2FuZGlk
YXRlVHlwZSByZW1vdGVfY2FuZGlkYXRlX3R5cGUgPSA4OworCisgIC8vIHJlcXVpcmVkCisgIG9w
dGlvbmFsIEFkZHJlc3NGYW1pbHkgcmVtb3RlX2FkZHJlc3NfZmFtaWx5ID0gOTsKKworICAvLyBy
ZXF1aXJlZAorICBvcHRpb25hbCBQcm90b2NvbCBjYW5kaWRhdGVfcGFpcl9wcm90b2NvbCA9IDEw
OworfQorCittZXNzYWdlIEljZUNhbmRpZGF0ZVBhaXJFdmVudCB7CisgIGVudW0gSWNlQ2FuZGlk
YXRlUGFpckV2ZW50VHlwZSB7CisgICAgVU5LTk9XTl9DSEVDS19UWVBFID0gMDsKKyAgICBDSEVD
S19TRU5UID0gMTsKKyAgICBDSEVDS19SRUNFSVZFRCA9IDI7CisgICAgQ0hFQ0tfUkVTUE9OU0Vf
U0VOVCA9IDM7CisgICAgQ0hFQ0tfUkVTUE9OU0VfUkVDRUlWRUQgPSA0OworICB9CisKKyAgLy8g
cmVxdWlyZWQKKyAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKKworICAvLyByZXF1
aXJlZAorICBvcHRpb25hbCBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlIGV2ZW50X3R5cGUgPSAy
OworCisgIC8vIHJlcXVpcmVkCisgIG9wdGlvbmFsIHVpbnQzMiBjYW5kaWRhdGVfcGFpcl9pZCA9
IDM7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzJydHBfZHVtcC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ydGNfZXZlbnRfbG9nMnJ0cF9kdW1wLmNjCmluZGV4IGEzZDM0NTZhN2JkZWFiN2UyYmNk
OWQzMmExYmZhYzJjMjFmOWQzNzguLmRhN2RmNjRmYWRkZjYxYTEzZTQxZDEyZmJkNThlNzJmNDU2
YTBmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnJ0cF9kdW1wLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnJ0cF9kdW1wLmNjCkBAIC0zMiwzMSArMzIsMzIgQEAgbmFt
ZXNwYWNlIHsKIAogdXNpbmcgTWVkaWFUeXBlID0gd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05l
dzo6TWVkaWFUeXBlOwogCi1ERUZJTkVfYm9vbCgKK1dFQlJUQ19ERUZJTkVfYm9vbCgKICAgICBh
dWRpbywKICAgICB0cnVlLAogICAgICJVc2UgLS1ub2F1ZGlvIHRvIGV4Y2x1ZGUgYXVkaW8gcGFj
a2V0cyBmcm9tIHRoZSBjb252ZXJ0ZWQgUlRQZHVtcCBmaWxlLiIpOwotREVGSU5FX2Jvb2woCitX
RUJSVENfREVGSU5FX2Jvb2woCiAgICAgdmlkZW8sCiAgICAgdHJ1ZSwKICAgICAiVXNlIC0tbm92
aWRlbyB0byBleGNsdWRlIHZpZGVvIHBhY2tldHMgZnJvbSB0aGUgY29udmVydGVkIFJUUGR1bXAg
ZmlsZS4iKTsKLURFRklORV9ib29sKAorV0VCUlRDX0RFRklORV9ib29sKAogICAgIGRhdGEsCiAg
ICAgdHJ1ZSwKICAgICAiVXNlIC0tbm9kYXRhIHRvIGV4Y2x1ZGUgZGF0YSBwYWNrZXRzIGZyb20g
dGhlIGNvbnZlcnRlZCBSVFBkdW1wIGZpbGUuIik7Ci1ERUZJTkVfYm9vbCgKK1dFQlJUQ19ERUZJ
TkVfYm9vbCgKICAgICBydHAsCiAgICAgdHJ1ZSwKICAgICAiVXNlIC0tbm9ydHAgdG8gZXhjbHVk
ZSBSVFAgcGFja2V0cyBmcm9tIHRoZSBjb252ZXJ0ZWQgUlRQZHVtcCBmaWxlLiIpOwotREVGSU5F
X2Jvb2woCitXRUJSVENfREVGSU5FX2Jvb2woCiAgICAgcnRjcCwKICAgICB0cnVlLAogICAgICJV
c2UgLS1ub3J0Y3AgdG8gZXhjbHVkZSBSVENQIHBhY2tldHMgZnJvbSB0aGUgY29udmVydGVkIFJU
UGR1bXAgZmlsZS4iKTsKLURFRklORV9zdHJpbmcoc3NyYywKLSAgICAgICAgICAgICAgIiIsCi0g
ICAgICAgICAgICAgICJTdG9yZSBvbmx5IHBhY2tldHMgd2l0aCB0aGlzIFNTUkMgKGRlY2ltYWwg
b3IgaGV4LCB0aGUgbGF0dGVyICIKLSAgICAgICAgICAgICAgInN0YXJ0aW5nIHdpdGggMHgpLiIp
OwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNzYWdlLiIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcoCisgICAgc3NyYywKKyAgICAiIiwKKyAgICAiU3RvcmUgb25seSBw
YWNrZXRzIHdpdGggdGhpcyBTU1JDIChkZWNpbWFsIG9yIGhleCwgdGhlIGxhdHRlciAiCisgICAg
InN0YXJ0aW5nIHdpdGggMHgpLiIpOworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAi
UHJpbnRzIHRoaXMgbWVzc2FnZS4iKTsKIAogLy8gUGFyc2VzIHRoZSBpbnB1dCBzdHJpbmcgZm9y
IGEgdmFsaWQgU1NSQy4gSWYgYSB2YWxpZCBTU1JDIGlzIGZvdW5kLCBpdCBpcwogLy8gd3JpdHRl
biB0byB0aGUgb3V0cHV0IHZhcmlhYmxlIHxzc3JjfCwgYW5kIHRydWUgaXMgcmV0dXJuZWQuIE90
aGVyd2lzZSwKQEAgLTk3LDkgKzk4LDEwIEBAIGJvb2wgU2hvdWxkU2tpcFN0cmVhbShNZWRpYVR5
cGUgbWVkaWFfdHlwZSwKIC8vIENvbnZlcnQgYSBMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyB0byBh
IHRlc3Q6OlJ0cFBhY2tldC4gSGVhZGVyIGV4dGVuc2lvbiBJRHMKIC8vIGFyZSBhbGxvY2F0ZWQg
YWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBleHRlbnNpb24gbWFwLiBUaGlzIG1pZ2h0IG5vdCBt
YXRjaAogLy8gdGhlIGV4dGVuc2lvbiBtYXAgdXNlZCBpbiB0aGUgYWN0dWFsIGNhbGwuCi12b2lk
IENvbnZlcnRSdHBQYWNrZXQoY29uc3Qgd2VicnRjOjpMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyYg
aW5jb21pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpSdHBIZWFkZXJF
eHRlbnNpb25NYXAgZGVmYXVsdF9leHRlbnNpb25fbWFwLAotICAgICAgICAgICAgICAgICAgICAg
IHdlYnJ0Yzo6dGVzdDo6UnRwUGFja2V0KiBwYWNrZXQpIHsKK3ZvaWQgQ29udmVydFJ0cFBhY2tl
dCgKKyAgICBjb25zdCB3ZWJydGM6OkxvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBpbmNvbWluZywK
KyAgICBjb25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgZGVmYXVsdF9leHRlbnNp
b25fbWFwLAorICAgIHdlYnJ0Yzo6dGVzdDo6UnRwUGFja2V0KiBwYWNrZXQpIHsKICAgd2VicnRj
OjpSdHBQYWNrZXQgcmVjb25zdHJ1Y3RlZF9wYWNrZXQoJmRlZmF1bHRfZXh0ZW5zaW9uX21hcCk7
CiAKICAgcmVjb25zdHJ1Y3RlZF9wYWNrZXQuU2V0TWFya2VyKGluY29taW5nLnJ0cC5oZWFkZXIu
bWFya2VyQml0KTsKQEAgLTE5Niw4ICsxOTgsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciog
YXJndltdKSB7CiAgICAgcmV0dXJuIC0xOwogICB9CiAKLSAgc3RkOjpjb3V0IDw8ICJGb3VuZCAi
IDw8IHBhcnNlZF9zdHJlYW0uR2V0TnVtYmVyT2ZFdmVudHMoKQotICAgICAgICAgICAgPDwgIiBl
dmVudHMgaW4gdGhlIGlucHV0IGZpbGUuIiA8PCBzdGQ6OmVuZGw7CiAgIGludCBydHBfY291bnRl
ciA9IDAsIHJ0Y3BfY291bnRlciA9IDA7CiAgIGJvb2wgaGVhZGVyX29ubHkgPSBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyc3RhdHMuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2
ZW50X2xvZzJzdGF0cy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI4YzgyOWY0
OWYxM2MwYzUxYWM5MDg1NWM1NmY0ODMzZDM5N2NhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzJzdGF0cy5jYworKysg
L2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lu
Y2x1ZGUgPGludHR5cGVzLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLQotI2luY2x1ZGUgPGZzdHJl
YW0+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHN0cmlu
Zz4KLSNpbmNsdWRlIDx0dXBsZT4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rv
cj4KLQotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZmxhZ3MuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9pZ25vcmVfd3VuZGVmLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
bG9nZ2luZy5oIgotCi0vLyBGaWxlcyBnZW5lcmF0ZWQgYXQgYnVpbGQtdGltZSBieSB0aGUgcHJv
dG9idWYgY29tcGlsZXIuCi1SVENfUFVTSF9JR05PUklOR19XVU5ERUYoKQotI2lmZGVmIFdFQlJU
Q19BTkRST0lEX1BMQVRGT1JNX0JVSUxECi0jaW5jbHVkZSAiZXh0ZXJuYWwvd2VicnRjL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5wYi5oIgotI2Vsc2UKLSNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5wYi5oIgotI2VuZGlmCi1S
VENfUE9QX0lHTk9SSU5HX1dVTkRFRigpCi0KLW5hbWVzcGFjZSB7Ci0KLURFRklORV9ib29sKGhl
bHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZS4iKTsKLQotc3RydWN0IFN0YXRzIHsKLSAg
aW50IGNvdW50ID0gMDsKLSAgc2l6ZV90IHRvdGFsX3NpemUgPSAwOwotfTsKLQotLy8gV2UgYXJl
IGR1cGxpY2F0aW5nIHNvbWUgcGFydHMgb2YgdGhlIHBhcnNlciBoZXJlIGJlY2F1c2Ugd2Ugd2Fu
dCB0byBnZXQKLS8vIGFjY2VzcyB0byByYXcgcHJvdG9idWYgZXZlbnRzLgotc3RkOjpwYWlyPHVp
bnQ2NF90LCBib29sPiBQYXJzZVZhckludChzdGQ6OmlzdHJlYW0mIHN0cmVhbSkgewotICB1aW50
NjRfdCB2YXJpbnQgPSAwOwotICBmb3IgKHNpemVfdCBieXRlc19yZWFkID0gMDsgYnl0ZXNfcmVh
ZCA8IDEwOyArK2J5dGVzX3JlYWQpIHsKLSAgICAvLyBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQg
b2YgZWFjaCBieXRlIGlzIDAgaWYgaXQgaXMgdGhlIGxhc3QgYnl0ZSBpbgotICAgIC8vIHRoZSB2
YXJpbnQgYW5kIDEgb3RoZXJ3aXNlLiBUaHVzLCB3ZSB0YWtlIHRoZSA3IGxlYXN0IHNpZ25pZmlj
YW50IGJpdHMKLSAgICAvLyBvZiBlYWNoIGJ5dGUgYW5kIHNoaWZ0IHRoZW0gNyBiaXRzIGZvciBl
YWNoIGJ5dGUgcmVhZCBwcmV2aW91c2x5IHRvIGdldAotICAgIC8vIHRoZSAodW5zaWduZWQpIGlu
dGVnZXIuCi0gICAgaW50IGJ5dGUgPSBzdHJlYW0uZ2V0KCk7Ci0gICAgaWYgKHN0cmVhbS5lb2Yo
KSkgewotICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHZhcmludCwgZmFsc2UpOwotICAgIH0K
LSAgICBSVENfRENIRUNLX0dFKGJ5dGUsIDApOwotICAgIFJUQ19EQ0hFQ0tfTEUoYnl0ZSwgMjU1
KTsKLSAgICB2YXJpbnQgfD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGUgJiAweDdGKSA8PCAo
NyAqIGJ5dGVzX3JlYWQpOwotICAgIGlmICgoYnl0ZSAmIDB4ODApID09IDApIHsKLSAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcih2YXJpbnQsIHRydWUpOwotICAgIH0KLSAgfQotICByZXR1cm4g
c3RkOjptYWtlX3BhaXIodmFyaW50LCBmYWxzZSk7Ci19Ci0KLWJvb2wgUGFyc2VFdmVudHMoY29u
c3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rvcjx3
ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ+KiBldmVudHMpIHsKLSAgc3RkOjppZnN0cmVhbSBzdHJlYW0o
ZmlsZW5hbWUsIHN0ZDo6aW9zX2Jhc2U6OmluIHwgc3RkOjppb3NfYmFzZTo6YmluYXJ5KTsKLSAg
aWYgKCFzdHJlYW0uZ29vZCgpIHx8ICFzdHJlYW0uaXNfb3BlbigpKSB7Ci0gICAgUlRDX0xPRyhM
U19XQVJOSU5HKSA8PCAiQ291bGQgbm90IG9wZW4gZmlsZSBmb3IgcmVhZGluZy4iOwotICAgIHJl
dHVybiBmYWxzZTsKLSAgfQotCi0gIGNvbnN0IHNpemVfdCBrTWF4RXZlbnRTaXplID0gKDF1IDw8
IDE2KSAtIDE7Ci0gIHN0ZDo6dmVjdG9yPGNoYXI+IHRtcF9idWZmZXIoa01heEV2ZW50U2l6ZSk7
Ci0gIHVpbnQ2NF90IHRhZzsKLSAgdWludDY0X3QgbWVzc2FnZV9sZW5ndGg7Ci0gIGJvb2wgc3Vj
Y2VzczsKLQotICBSVENfRENIRUNLKHN0cmVhbS5nb29kKCkpOwotCi0gIHdoaWxlICgxKSB7Ci0g
ICAgLy8gQ2hlY2sgd2hldGhlciB3ZSBoYXZlIHJlYWNoZWQgZW5kIG9mIGZpbGUuCi0gICAgc3Ry
ZWFtLnBlZWsoKTsKLSAgICBpZiAoc3RyZWFtLmVvZigpKSB7Ci0gICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0KLSAgICAvLyBSZWFkIHRoZSBuZXh0IG1lc3NhZ2UgdGFnLiBUaGUgdGFnIG51bWJl
ciBpcyBkZWZpbmVkIGFzCi0gICAgLy8gKGZpZWxkbnVtYmVyIDw8IDMpIHwgd2lyZV90eXBlLiBJ
biBvdXIgY2FzZSwgdGhlIGZpZWxkIG51bWJlciBpcwotICAgIC8vIHN1cHBvc2VkIHRvIGJlIDEg
YW5kIHRoZSB3aXJlIHR5cGUgZm9yIGFuIGxlbmd0aC1kZWxpbWl0ZWQgZmllbGQgaXMgMi4KLSAg
ICBjb25zdCB1aW50NjRfdCBrRXhwZWN0ZWRUYWcgPSAoMSA8PCAzKSB8IDI7Ci0gICAgc3RkOjp0
aWUodGFnLCBzdWNjZXNzKSA9IFBhcnNlVmFySW50KHN0cmVhbSk7Ci0gICAgaWYgKCFzdWNjZXNz
KSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAgICAgPDwgIk1pc3NpbmcgZmll
bGQgdGFnIGZyb20gYmVnaW5uaW5nIG9mIHByb3RvYnVmIGV2ZW50LiI7Ci0gICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfSBlbHNlIGlmICh0YWcgIT0ga0V4cGVjdGVkVGFnKSB7Ci0gICAgICBSVENf
TE9HKExTX1dBUk5JTkcpCi0gICAgICAgICAgPDwgIlVuZXhwZWN0ZWQgZmllbGQgdGFnIGF0IGJl
Z2lubmluZyBvZiBwcm90b2J1ZiBldmVudC4iOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIC8vIFJlYWQgdGhlIGxlbmd0aCBmaWVsZC4KLSAgICBzdGQ6OnRpZShtZXNzYWdlX2xl
bmd0aCwgc3VjY2VzcykgPSBQYXJzZVZhckludChzdHJlYW0pOwotICAgIGlmICghc3VjY2Vzcykg
ewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiTWlzc2luZyBtZXNzYWdlIGxlbmd0aCBh
ZnRlciBwcm90b2J1ZiBmaWVsZCB0YWcuIjsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVs
c2UgaWYgKG1lc3NhZ2VfbGVuZ3RoID4ga01heEV2ZW50U2l6ZSkgewotICAgICAgUlRDX0xPRyhM
U19XQVJOSU5HKSA8PCAiUHJvdG9idWYgbWVzc2FnZSBsZW5ndGggaXMgdG9vIGxhcmdlLiI7Ci0g
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gUmVhZCB0aGUgbmV4dCBwcm90b2J1
ZiBldmVudCB0byBhIHRlbXBvcmFyeSBjaGFyIGJ1ZmZlci4KLSAgICBzdHJlYW0ucmVhZCh0bXBf
YnVmZmVyLmRhdGEoKSwgbWVzc2FnZV9sZW5ndGgpOwotICAgIGlmIChzdHJlYW0uZ2NvdW50KCkg
IT0gc3RhdGljX2Nhc3Q8aW50PihtZXNzYWdlX2xlbmd0aCkpIHsKLSAgICAgIFJUQ19MT0coTFNf
V0FSTklORykgPDwgIkZhaWxlZCB0byByZWFkIHByb3RvYnVmIG1lc3NhZ2UgZnJvbSBmaWxlLiI7
Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gUGFyc2UgdGhlIHByb3RvYnVm
IGV2ZW50IGZyb20gdGhlIGJ1ZmZlci4KLSAgICB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQgZXZlbnQ7
Ci0gICAgaWYgKCFldmVudC5QYXJzZUZyb21BcnJheSh0bXBfYnVmZmVyLmRhdGEoKSwgbWVzc2Fn
ZV9sZW5ndGgpKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcGFy
c2UgcHJvdG9idWYgbWVzc2FnZS4iOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBl
dmVudHMtPnB1c2hfYmFjayhldmVudCk7Ci0gIH0KLX0KLQotLy8gVE9ETyh0ZXJlbGl1cyk6IFNo
b3VsZCB0aGlzIGJlIHBsYWNlZCBpbiBzb21lIHV0aWxpdHkgZmlsZSBpbnN0ZWFkPwotc3RkOjpz
dHJpbmcgRXZlbnRUeXBlVG9TdHJpbmcod2VicnRjOjpydGNsb2c6OkV2ZW50OjpFdmVudFR5cGUg
ZXZlbnRfdHlwZSkgewotICBzd2l0Y2ggKGV2ZW50X3R5cGUpIHsKLSAgICBjYXNlIHdlYnJ0Yzo6
cnRjbG9nOjpFdmVudDo6VU5LTk9XTl9FVkVOVDoKLSAgICAgIHJldHVybiAiVU5LTk9XTl9FVkVO
VCI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkxPR19TVEFSVDoKLSAgICAgIHJl
dHVybiAiTE9HX1NUQVJUIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6TE9HX0VO
RDoKLSAgICAgIHJldHVybiAiTE9HX0VORCI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZl
bnQ6OlJUUF9FVkVOVDoKLSAgICAgIHJldHVybiAiUlRQX0VWRU5UIjsKLSAgICBjYXNlIHdlYnJ0
Yzo6cnRjbG9nOjpFdmVudDo6UlRDUF9FVkVOVDoKLSAgICAgIHJldHVybiAiUlRDUF9FVkVOVCI7
Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1BMQVlPVVRfRVZFTlQ6Ci0g
ICAgICByZXR1cm4gIkFVRElPX1BMQVlPVVRfRVZFTlQiOwotICAgIGNhc2Ugd2VicnRjOjpydGNs
b2c6OkV2ZW50OjpMT1NTX0JBU0VEX0JXRV9VUERBVEU6Ci0gICAgICByZXR1cm4gIkxPU1NfQkFT
RURfQldFX1VQREFURSI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkRFTEFZX0JB
U0VEX0JXRV9VUERBVEU6Ci0gICAgICByZXR1cm4gIkRFTEFZX0JBU0VEX0JXRV9VUERBVEUiOwot
ICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpWSURFT19SRUNFSVZFUl9DT05GSUdfRVZF
TlQ6Ci0gICAgICByZXR1cm4gIlZJREVPX1JFQ1ZfQ09ORklHIjsKLSAgICBjYXNlIHdlYnJ0Yzo6
cnRjbG9nOjpFdmVudDo6VklERU9fU0VOREVSX0NPTkZJR19FVkVOVDoKLSAgICAgIHJldHVybiAi
VklERU9fU0VORF9DT05GSUciOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpBVURJ
T19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6Ci0gICAgICByZXR1cm4gIkFVRElPX1JFQ1ZfQ09ORklH
IjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6QVVESU9fU0VOREVSX0NPTkZJR19F
VkVOVDoKLSAgICAgIHJldHVybiAiQVVESU9fU0VORF9DT05GSUciOwotICAgIGNhc2Ugd2VicnRj
OjpydGNsb2c6OkV2ZW50OjpBVURJT19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQ6Ci0gICAgICBy
ZXR1cm4gIkFVRElPX05FVFdPUktfQURBUFRBVElPTiI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xv
Zzo6RXZlbnQ6OkJXRV9QUk9CRV9DTFVTVEVSX0NSRUFURURfRVZFTlQ6Ci0gICAgICByZXR1cm4g
IkJXRV9QUk9CRV9DUkVBVEVEIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6QldF
X1BST0JFX1JFU1VMVF9FVkVOVDoKLSAgICAgIHJldHVybiAiQldFX1BST0JFX1JFU1VMVCI7Ci0g
ICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkFMUl9TVEFURV9FVkVOVDoKLSAgICAgIHJl
dHVybiAiQUxSX1NUQVRFX0VWRU5UIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6
SUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRzoKLSAgICAgIHJldHVybiAiSUNFX0NBTkRJREFURV9Q
QUlSX0NPTkZJRyI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURB
VEVfUEFJUl9FVkVOVDoKLSAgICAgIHJldHVybiAiSUNFX0NBTkRJREFURV9QQUlSX0VWRU5UIjsK
LSAgfQotICBSVENfTk9UUkVBQ0hFRCgpOwotICByZXR1cm4gIlVOS05PV05fRVZFTlQiOwotfQot
Ci19ICAvLyBuYW1lc3BhY2UKLQotLy8gVGhpcyB1dGlsaXR5IHdpbGwgcHJpbnQgYmFzaWMgaW5m
b3JtYXRpb24gYWJvdXQgZWFjaCBwYWNrZXQgdG8gc3Rkb3V0LgotLy8gTm90ZSB0aGF0IHBhcnNl
ciB3aWxsIGFzc2VydCBpZiB0aGUgcHJvdG9idWYgZXZlbnQgaXMgbWlzc2luZyBzb21lIHJlcXVp
cmVkCi0vLyBmaWVsZHMgYW5kIHdlIGF0dGVtcHQgdG8gYWNjZXNzIHRoZW0uIFdlIGRvbid0IGhh
bmRsZSB0aGlzIGF0IHRoZSBtb21lbnQuCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltd
KSB7Ci0gIHN0ZDo6c3RyaW5nIHByb2dyYW1fbmFtZSA9IGFyZ3ZbMF07Ci0gIHN0ZDo6c3RyaW5n
IHVzYWdlID0KLSAgICAgICJUb29sIGZvciBmaWxlIHVzYWdlIHN0YXRpc3RpY3MgZnJvbSBhbiBS
dGNFdmVudExvZy5cbiIKLSAgICAgICJSdW4gIiArCi0gICAgICBwcm9ncmFtX25hbWUgKwotICAg
ICAgIiAtLWhlbHAgZm9yIHVzYWdlLlxuIgotICAgICAgIkV4YW1wbGUgdXNhZ2U6XG4iICsKLSAg
ICAgIHByb2dyYW1fbmFtZSArICIgaW5wdXQucmVsXG4iOwotICBpZiAocnRjOjpGbGFnTGlzdDo6
U2V0RmxhZ3NGcm9tQ29tbWFuZExpbmUoJmFyZ2MsIGFyZ3YsIHRydWUpIHx8IEZMQUdfaGVscCB8
fAotICAgICAgYXJnYyAhPSAyKSB7Ci0gICAgc3RkOjpjb3V0IDw8IHVzYWdlOwotICAgIGlmIChG
TEFHX2hlbHApIHsKLSAgICAgIHJ0Yzo6RmxhZ0xpc3Q6OlByaW50KG51bGxwdHIsIGZhbHNlKTsK
LSAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gMTsKLSAgfQotICBzdGQ6OnN0cmlu
ZyBmaWxlX25hbWUgPSBhcmd2WzFdOwotCi0gIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6cnRjbG9nOjpF
dmVudD4gZXZlbnRzOwotICBpZiAoIVBhcnNlRXZlbnRzKGZpbGVfbmFtZSwgJmV2ZW50cykpIHsK
LSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHBhcnNlIGV2ZW50IGxvZy4iOwot
ICAgIHJldHVybiAtMTsKLSAgfQotCi0gIC8vIEdldCBmaWxlIHNpemUKLSAgRklMRSogZmlsZSA9
IGZvcGVuKGZpbGVfbmFtZS5jX3N0cigpLCAicmIiKTsKLSAgZnNlZWsoZmlsZSwgMEwsIFNFRUtf
RU5EKTsKLSAgaW50NjRfdCBmaWxlX3NpemUgPSBmdGVsbChmaWxlKTsKLSAgZmNsb3NlKGZpbGUp
OwotCi0gIC8vIFdlIGFyZSBkZWxpYmVyYXRlbHkgdXNpbmcgbG93IGxldmVsIHByb3RvYnVmIGZ1
bmN0aW9ucyB0byBnZXQgdGhlIHN0YXRzCi0gIC8vIHNpbmNlIHRoZSBjb252ZW5pZW5jZSBmdW5j
dGlvbnMgaW4gdGhlIHBhcnNlciB3b3VsZCBDSEVDSyB0aGF0IHRoZSBldmVudHMKLSAgLy8gYXJl
IHdlbGwgZm9ybWVkLgotICBzdGQ6Om1hcDx3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkV2ZW50VHlw
ZSwgU3RhdHM+IHN0YXRzOwotICBpbnQgbWFsZm9ybWVkX2V2ZW50cyA9IDA7Ci0gIHNpemVfdCBt
YWxmb3JtZWRfZXZlbnRfc2l6ZSA9IDA7Ci0gIHNpemVfdCBhY2N1bXVsYXRlZF9ldmVudF9zaXpl
ID0gMDsKLSAgZm9yIChjb25zdCB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQmIGV2ZW50IDogZXZlbnRz
KSB7Ci0gICAgc2l6ZV90IHNlcmlhbGl6ZWRfc2l6ZSA9IGV2ZW50LkJ5dGVTaXplTG9uZygpOwot
ICAgIC8vIFdoZW4gdGhlIGV2ZW50IGlzIHdyaXR0ZW4gb24gdGhlIGRpc2ssIGl0IGlzIHBhcnQg
b2YgYW4gRXZlbnRTdHJlYW0KLSAgICAvLyBvYmplY3QuIFRoZSBldmVudCBzdHJlYW0gd2lsbCBw
cmVwZW5kIGEgMSBieXRlIGZpZWxkIG51bWJlci93aXJlIHR5cGUsCi0gICAgLy8gYW5kIGEgdmFy
aW50IGVuY29kaW5nIChiYXNlIDEyOCkgb2YgdGhlIGV2ZW50IGxlbmd0aC4KLSAgICBzZXJpYWxp
emVkX3NpemUgPQotICAgICAgICAxICsgKDEgKyAoc2VyaWFsaXplZF9zaXplID4gMTI3KSArIChz
ZXJpYWxpemVkX3NpemUgPiAxNjM4MykpICsKLSAgICAgICAgc2VyaWFsaXplZF9zaXplOwotCi0g
ICAgaWYgKGV2ZW50Lmhhc190eXBlKCkgJiYgZXZlbnQuaGFzX3RpbWVzdGFtcF91cygpKSB7Ci0g
ICAgICBzdGF0c1tldmVudC50eXBlKCldLmNvdW50Kys7Ci0gICAgICBzdGF0c1tldmVudC50eXBl
KCldLnRvdGFsX3NpemUgKz0gc2VyaWFsaXplZF9zaXplOwotICAgIH0gZWxzZSB7Ci0gICAgICAv
LyBUaGUgZXZlbnQgaXMgbWlzc2luZyB0aGUgdHlwZSBvciB0aGUgdGltZXN0YW1wIGZpZWxkLgot
ICAgICAgbWFsZm9ybWVkX2V2ZW50cysrOwotICAgICAgbWFsZm9ybWVkX2V2ZW50X3NpemUgKz0g
c2VyaWFsaXplZF9zaXplOwotICAgIH0KLSAgICBhY2N1bXVsYXRlZF9ldmVudF9zaXplICs9IHNl
cmlhbGl6ZWRfc2l6ZTsKLSAgfQotCi0gIHByaW50ZigiVHlwZSAgICAgICAgICAgICAgICAgIFx0
Q291bnRcdFRvdGFsIHNpemVcdEF2ZXJhZ2Ugc2l6ZVx0UGVyY2VudFxuIik7Ci0gIHByaW50ZigK
LSAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSAgICAgICJcbiIpOwotICBmb3IgKGNvbnN0IGF1dG8g
aXQgOiBzdGF0cykgewotICAgIHByaW50ZigiJS0yMnNcdCU1ZFx0JTEwenVcdCUxMi4ybGZcdCU3
LjJsZlxuIiwKLSAgICAgICAgICAgRXZlbnRUeXBlVG9TdHJpbmcoaXQuZmlyc3QpLmNfc3RyKCks
IGl0LnNlY29uZC5jb3VudCwKLSAgICAgICAgICAgaXQuc2Vjb25kLnRvdGFsX3NpemUsCi0gICAg
ICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oaXQuc2Vjb25kLnRvdGFsX3NpemUpIC8gaXQuc2Vj
b25kLmNvdW50LAotICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KGl0LnNlY29uZC50b3Rh
bF9zaXplKSAvIGZpbGVfc2l6ZSAqIDEwMCk7Ci0gIH0KLSAgaWYgKG1hbGZvcm1lZF9ldmVudHMg
IT0gMCkgewotICAgIHByaW50ZigiJS0yMnNcdCU1ZFx0JTEwenVcdCUxMi4ybGZcdCU3LjJsZlxu
IiwgIk1BTEZPUk1FRCIsCi0gICAgICAgICAgIG1hbGZvcm1lZF9ldmVudHMsIG1hbGZvcm1lZF9l
dmVudF9zaXplLAotICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1hbGZvcm1lZF9ldmVu
dF9zaXplKSAvIG1hbGZvcm1lZF9ldmVudHMsCi0gICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJs
ZT4obWFsZm9ybWVkX2V2ZW50X3NpemUpIC8gZmlsZV9zaXplICogMTAwKTsKLSAgfQotICBpZiAo
ZmlsZV9zaXplIC0gYWNjdW11bGF0ZWRfZXZlbnRfc2l6ZSAhPSAwKSB7Ci0gICAgcHJpbnRmKCJX
QVJOSU5HOiAlIiBQUklkNjQgIiBieXRlcyBub3QgYWNjb3VudGVkIGZvclxuIiwKLSAgICAgICAg
ICAgZmlsZV9zaXplIC0gYWNjdW11bGF0ZWRfZXZlbnRfc2l6ZSk7Ci0gIH0KLQotICByZXR1cm4g
MDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnRleHQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
cnRjX2V2ZW50X2xvZzJ0ZXh0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2Ni
NmVjZGY0YjVhNWNiYmZiZDM4NjkzYzUyMGQyZGRlMzgxYjZmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnRleHQuY2MK
KysrIC9kZXYvbnVsbApAQCAtMSw4ODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIw
MTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0K
LSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGlvbWFuaXA+ICAvLyBzZXRmaWxsLCBz
ZXR3Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHN0cmlu
Zz4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gcGFpcgotCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVz
LmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXJfbmV3LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFw
dG9yX2NvbmZpZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFj
a2V0L2J5ZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0
L2NvbW1vbl9oZWFkZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC9leHRlbmRlZF9yZXBvcnRzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9wYWNrZXQvZmlyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9wYWNrZXQvbmFjay5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0Y3BfcGFja2V0L3BsaS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcGFja2V0L3JhcGlkX3Jlc3luY19yZXF1ZXN0LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVjZWl2ZXJfcmVwb3J0LmgiCi0jaW5jbHVkZSAibW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVtYi5oIgotI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3NkZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9zZW5kZXJfcmVwb3J0LmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdG1tYm4uaCIKLSNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1ici5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RyYW5zcG9ydF9mZWVkYmFjay5oIgot
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91dGlsaXR5LmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZmxhZ3MuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9z
dHJpbmdfYnVpbGRlci5oIgotCi1uYW1lc3BhY2UgewotCi1ERUZJTkVfYm9vbCh1bmtub3duLCB0
cnVlLCAiVXNlIC0tbm91bmtub3duIHRvIGV4Y2x1ZGUgdW5rbm93biBldmVudHMuIik7Ci1ERUZJ
TkVfYm9vbChzdGFydHN0b3AsIHRydWUsICJVc2UgLS1ub3N0YXJ0c3RvcCB0byBleGNsdWRlIHN0
YXJ0L3N0b3AgZXZlbnRzLiIpOwotREVGSU5FX2Jvb2woY29uZmlnLCB0cnVlLCAiVXNlIC0tbm9j
b25maWcgdG8gZXhjbHVkZSBzdHJlYW0gY29uZmlndXJhdGlvbnMuIik7Ci1ERUZJTkVfYm9vbChi
d2UsIHRydWUsICJVc2UgLS1ub2J3ZSB0byBleGNsdWRlIEJXRSBldmVudHMuIik7Ci1ERUZJTkVf
Ym9vbChpbmNvbWluZywgdHJ1ZSwgIlVzZSAtLW5vaW5jb21pbmcgdG8gZXhjbHVkZSBpbmNvbWlu
ZyBwYWNrZXRzLiIpOwotREVGSU5FX2Jvb2wob3V0Z29pbmcsIHRydWUsICJVc2UgLS1ub291dGdv
aW5nIHRvIGV4Y2x1ZGUgcGFja2V0cy4iKTsKLS8vIFRPRE8odGVyZWxpdXMpOiBOb3RlIHRoYXQg
dGhlIG1lZGlhIHR5cGUgZG9lc24ndCB3b3JrIHdpdGggb3V0Z29pbmcgcGFja2V0cy4KLURFRklO
RV9ib29sKGF1ZGlvLCB0cnVlLCAiVXNlIC0tbm9hdWRpbyB0byBleGNsdWRlIGF1ZGlvIHBhY2tl
dHMuIik7Ci0vLyBUT0RPKHRlcmVsaXVzKTogTm90ZSB0aGF0IHRoZSBtZWRpYSB0eXBlIGRvZXNu
J3Qgd29yayB3aXRoIG91dGdvaW5nIHBhY2tldHMuCi1ERUZJTkVfYm9vbCh2aWRlbywgdHJ1ZSwg
IlVzZSAtLW5vdmlkZW8gdG8gZXhjbHVkZSB2aWRlbyBwYWNrZXRzLiIpOwotLy8gVE9ETyh0ZXJl
bGl1cyk6IE5vdGUgdGhhdCB0aGUgbWVkaWEgdHlwZSBkb2Vzbid0IHdvcmsgd2l0aCBvdXRnb2lu
ZyBwYWNrZXRzLgotREVGSU5FX2Jvb2woZGF0YSwgdHJ1ZSwgIlVzZSAtLW5vZGF0YSB0byBleGNs
dWRlIGRhdGEgcGFja2V0cy4iKTsKLURFRklORV9ib29sKHJ0cCwgdHJ1ZSwgIlVzZSAtLW5vcnRw
IHRvIGV4Y2x1ZGUgUlRQIHBhY2tldHMuIik7Ci1ERUZJTkVfYm9vbChydGNwLCB0cnVlLCAiVXNl
IC0tbm9ydGNwIHRvIGV4Y2x1ZGUgUlRDUCBwYWNrZXRzLiIpOwotREVGSU5FX2Jvb2wocGxheW91
dCwgdHJ1ZSwgIlVzZSAtLW5vcGxheW91dCB0byBleGNsdWRlIGF1ZGlvIHBsYXlvdXQgZXZlbnRz
LiIpOwotREVGSU5FX2Jvb2woYW5hLCB0cnVlLCAiVXNlIC0tbm9hbmEgdG8gZXhjbHVkZSBBTkEg
ZXZlbnRzLiIpOwotREVGSU5FX2Jvb2wocHJvYmUsIHRydWUsICJVc2UgLS1ub3Byb2JlIHRvIGV4
Y2x1ZGUgcHJvYmUgZXZlbnRzLiIpOwotREVGSU5FX2Jvb2woaWNlLCB0cnVlLCAiVXNlIC0tbm9p
Y2UgdG8gZXhjbHVkZSBJQ0UgZXZlbnRzLiIpOwotCi1ERUZJTkVfYm9vbChwcmludF9mdWxsX3Bh
Y2tldHMsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQcmludCB0aGUgZnVsbCBS
VFAgaGVhZGVycyBhbmQgUlRDUCBwYWNrZXRzIGluIGhleC4iKTsKLQotLy8gVE9ETyh0ZXJlbGl1
cyk6IEFsbG93IGEgbGlzdCBvZiBTU1JDcy4KLURFRklORV9zdHJpbmcoc3NyYywKLSAgICAgICAg
ICAgICAgIiIsCi0gICAgICAgICAgICAgICJQcmludCBvbmx5IHBhY2tldHMgd2l0aCB0aGlzIFNT
UkMgKGRlY2ltYWwgb3IgaGV4LCB0aGUgbGF0dGVyICIKLSAgICAgICAgICAgICAgInN0YXJ0aW5n
IHdpdGggMHgpLiIpOwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNz
YWdlLiIpOwotCi11c2luZyBNZWRpYVR5cGUgPSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpNZWRpYVR5cGU7Ci0KLXN0YXRpYyB1aW50MzJfdCBmaWx0ZXJlZF9zc3JjID0gMDsKLQotLy8g
UGFyc2VzIHRoZSBpbnB1dCBzdHJpbmcgZm9yIGEgdmFsaWQgU1NSQy4gSWYgYSB2YWxpZCBTU1JD
IGlzIGZvdW5kLCBpdCBpcwotLy8gd3JpdHRlbiB0byB0aGUgc3RhdGljIGdsb2JhbCB2YXJpYWJs
ZSB8ZmlsdGVyZWRfc3NyY3wsIGFuZCB0cnVlIGlzIHJldHVybmVkLgotLy8gT3RoZXJ3aXNlLCBm
YWxzZSBpcyByZXR1cm5lZC4KLS8vIFRoZSBlbXB0eSBzdHJpbmcgbXVzdCBiZSB2YWxpZGF0ZWQg
YXMgdHJ1ZSwgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdCB2YWx1ZQotLy8gb2YgdGhlIGNvbW1h
bmQtbGluZSBmbGFnLiBJbiB0aGlzIGNhc2UsIG5vIHZhbHVlIGlzIHdyaXR0ZW4gdG8gdGhlIG91
dHB1dAotLy8gdmFyaWFibGUuCi1ib29sIFBhcnNlU3NyYyhzdGQ6OnN0cmluZyBzdHIpIHsKLSAg
Ly8gSWYgdGhlIGlucHV0IHN0cmluZyBzdGFydHMgd2l0aCAweCBvciAwWCBpdCBpbmRpY2F0ZXMg
YSBoZXhhZGVjaW1hbCBudW1iZXIuCi0gIGF1dG8gcmVhZF9tb2RlID0gc3RkOjpkZWM7Ci0gIGlm
IChzdHIuc2l6ZSgpID4gMiAmJgotICAgICAgKHN0ci5zdWJzdHIoMCwgMikgPT0gIjB4IiB8fCBz
dHIuc3Vic3RyKDAsIDIpID09ICIwWCIpKSB7Ci0gICAgcmVhZF9tb2RlID0gc3RkOjpoZXg7Ci0g
ICAgc3RyID0gc3RyLnN1YnN0cigyKTsKLSAgfQotICBzdGQ6OnN0cmluZ3N0cmVhbSBzcyhzdHIp
OwotICBzcyA+PiByZWFkX21vZGUgPj4gZmlsdGVyZWRfc3NyYzsKLSAgcmV0dXJuIHN0ci5lbXB0
eSgpIHx8ICghc3MuZmFpbCgpICYmIHNzLmVvZigpKTsKLX0KLQotYm9vbCBFeGNsdWRlUGFja2V0
KHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbiwKLSAgICAgICAgICAgICAgICAgICBN
ZWRpYVR5cGUgbWVkaWFfdHlwZSwKLSAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBwYWNrZXRf
c3NyYykgewotICBpZiAoIUZMQUdfb3V0Z29pbmcgJiYgZGlyZWN0aW9uID09IHdlYnJ0Yzo6a091
dGdvaW5nUGFja2V0KQotICAgIHJldHVybiB0cnVlOwotICBpZiAoIUZMQUdfaW5jb21pbmcgJiYg
ZGlyZWN0aW9uID09IHdlYnJ0Yzo6a0luY29taW5nUGFja2V0KQotICAgIHJldHVybiB0cnVlOwot
ICBpZiAoIUZMQUdfYXVkaW8gJiYgbWVkaWFfdHlwZSA9PSBNZWRpYVR5cGU6OkFVRElPKQotICAg
IHJldHVybiB0cnVlOwotICBpZiAoIUZMQUdfdmlkZW8gJiYgbWVkaWFfdHlwZSA9PSBNZWRpYVR5
cGU6OlZJREVPKQotICAgIHJldHVybiB0cnVlOwotICBpZiAoIUZMQUdfZGF0YSAmJiBtZWRpYV90
eXBlID09IE1lZGlhVHlwZTo6REFUQSkKLSAgICByZXR1cm4gdHJ1ZTsKLSAgaWYgKHN0cmxlbihG
TEFHX3NzcmMpID4gMCAmJiBwYWNrZXRfc3NyYyAhPSBmaWx0ZXJlZF9zc3JjKQotICAgIHJldHVy
biB0cnVlOwotICByZXR1cm4gZmFsc2U7Ci19Ci0KLWNvbnN0IGNoYXIqIFN0cmVhbUluZm8od2Vi
cnRjOjpQYWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBN
ZWRpYVR5cGUgbWVkaWFfdHlwZSkgewotICBpZiAoZGlyZWN0aW9uID09IHdlYnJ0Yzo6a091dGdv
aW5nUGFja2V0KSB7Ci0gICAgaWYgKG1lZGlhX3R5cGUgPT0gTWVkaWFUeXBlOjpBVURJTykKLSAg
ICAgIHJldHVybiAiKG91dCxhdWRpbykiOwotICAgIGVsc2UgaWYgKG1lZGlhX3R5cGUgPT0gTWVk
aWFUeXBlOjpWSURFTykKLSAgICAgIHJldHVybiAiKG91dCx2aWRlbykiOwotICAgIGVsc2UgaWYg
KG1lZGlhX3R5cGUgPT0gTWVkaWFUeXBlOjpEQVRBKQotICAgICAgcmV0dXJuICIob3V0LGRhdGEp
IjsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gIihvdXQpIjsKLSAgfQotICBpZiAoZGlyZWN0aW9u
ID09IHdlYnJ0Yzo6a0luY29taW5nUGFja2V0KSB7Ci0gICAgaWYgKG1lZGlhX3R5cGUgPT0gTWVk
aWFUeXBlOjpBVURJTykKLSAgICAgIHJldHVybiAiKGluLGF1ZGlvKSI7Ci0gICAgZWxzZSBpZiAo
bWVkaWFfdHlwZSA9PSBNZWRpYVR5cGU6OlZJREVPKQotICAgICAgcmV0dXJuICIoaW4sdmlkZW8p
IjsKLSAgICBlbHNlIGlmIChtZWRpYV90eXBlID09IE1lZGlhVHlwZTo6REFUQSkKLSAgICAgIHJl
dHVybiAiKGluLGRhdGEpIjsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gIihpbikiOwotICB9Ci0g
IHJldHVybiAiKHVua25vd24pIjsKLX0KLQotLy8gUmV0dXJuIGRlZmF1bHQgdmFsdWVzIGZvciBo
ZWFkZXIgZXh0ZW5zaW9ucywgdG8gdXNlIG9uIHN0cmVhbXMgd2l0aG91dCBzdG9yZWQKLS8vIG1h
cHBpbmcgZGF0YS4gQ3VycmVudGx5IHRoaXMgb25seSBhcHBsaWVzIHRvIGF1ZGlvIHN0cmVhbXMs
IHNpbmNlIHRoZSBtYXBwaW5nCi0vLyBpcyBub3Qgc3RvcmVkIGluIHRoZSBldmVudCBsb2cuCi0v
LyBUT0RPKGl2b2MpOiBSZW1vdmUgdGhpcyBvbmNlIHRoaXMgbWFwcGluZyBpcyBzdG9yZWQgaW4g
dGhlIGV2ZW50IGxvZyBmb3IKLS8vICAgICAgICAgICAgIGF1ZGlvIHN0cmVhbXMuIFRyYWNraW5n
IGJ1Zzogd2VicnRjOjYzOTkKLXdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwIEdldERlZmF1
bHRIZWFkZXJFeHRlbnNpb25NYXAoKSB7Ci0gIHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFw
IGRlZmF1bHRfbWFwOwotICBkZWZhdWx0X21hcC5SZWdpc3Rlcjx3ZWJydGM6OkF1ZGlvTGV2ZWw+
KAotICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb246OmtBdWRpb0xldmVsRGVmYXVsdElkKTsKLSAg
ZGVmYXVsdF9tYXAuUmVnaXN0ZXI8d2VicnRjOjpUcmFuc21pc3Npb25PZmZzZXQ+KAotICAgICAg
d2VicnRjOjpSdHBFeHRlbnNpb246OmtUaW1lc3RhbXBPZmZzZXREZWZhdWx0SWQpOwotICBkZWZh
dWx0X21hcC5SZWdpc3Rlcjx3ZWJydGM6OkFic29sdXRlU2VuZFRpbWU+KAotICAgICAgd2VicnRj
OjpSdHBFeHRlbnNpb246OmtBYnNTZW5kVGltZURlZmF1bHRJZCk7Ci0gIGRlZmF1bHRfbWFwLlJl
Z2lzdGVyPHdlYnJ0Yzo6VmlkZW9PcmllbnRhdGlvbj4oCi0gICAgICB3ZWJydGM6OlJ0cEV4dGVu
c2lvbjo6a1ZpZGVvUm90YXRpb25EZWZhdWx0SWQpOwotICBkZWZhdWx0X21hcC5SZWdpc3Rlcjx3
ZWJydGM6OlZpZGVvQ29udGVudFR5cGVFeHRlbnNpb24+KAotICAgICAgd2VicnRjOjpSdHBFeHRl
bnNpb246OmtWaWRlb0NvbnRlbnRUeXBlRGVmYXVsdElkKTsKLSAgZGVmYXVsdF9tYXAuUmVnaXN0
ZXI8d2VicnRjOjpWaWRlb1RpbWluZ0V4dGVuc2lvbj4oCi0gICAgICB3ZWJydGM6OlJ0cEV4dGVu
c2lvbjo6a1ZpZGVvVGltaW5nRGVmYXVsdElkKTsKLSAgZGVmYXVsdF9tYXAuUmVnaXN0ZXI8d2Vi
cnRjOjpGcmFtZU1hcmtpbmdFeHRlbnNpb24+KAotICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb246
OmtGcmFtZU1hcmtpbmdEZWZhdWx0SWQpOwotICBkZWZhdWx0X21hcC5SZWdpc3Rlcjx3ZWJydGM6
OlRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyPigKLSAgICAgIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjpr
VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJEZWZhdWx0SWQpOwotICBkZWZhdWx0X21hcC5SZWdpc3Rl
cjx3ZWJydGM6OlBsYXlvdXREZWxheUxpbWl0cz4oCi0gICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lv
bjo6a1BsYXlvdXREZWxheURlZmF1bHRJZCk7Ci0gIHJldHVybiBkZWZhdWx0X21hcDsKLX0KLQot
dm9pZCBQcmludFNlbmRlclJlcG9ydChjb25zdCB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3
JiBwYXJzZWRfc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OnJ0
Y3A6OkNvbW1vbkhlYWRlciYgcnRjcF9ibG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDY0X3QgbG9nX3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpQYWNr
ZXREaXJlY3Rpb24gZGlyZWN0aW9uKSB7Ci0gIHdlYnJ0Yzo6cnRjcDo6U2VuZGVyUmVwb3J0IHNy
OwotICBpZiAoIXNyLlBhcnNlKHJ0Y3BfYmxvY2spKQotICAgIHJldHVybjsKLSAgTWVkaWFUeXBl
IG1lZGlhX3R5cGUgPQotICAgICAgcGFyc2VkX3N0cmVhbS5HZXRNZWRpYVR5cGUoc3Iuc2VuZGVy
X3NzcmMoKSwgZGlyZWN0aW9uKTsKLSAgaWYgKEV4Y2x1ZGVQYWNrZXQoZGlyZWN0aW9uLCBtZWRp
YV90eXBlLCBzci5zZW5kZXJfc3NyYygpKSkKLSAgICByZXR1cm47Ci0gIHN0ZDo6Y291dCA8PCBs
b2dfdGltZXN0YW1wIDw8ICJcdCIKLSAgICAgICAgICAgIDw8ICJSVENQX1NSIiA8PCBTdHJlYW1J
bmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCBz
ci5zZW5kZXJfc3NyYygpCi0gICAgICAgICAgICA8PCAiXHR0aW1lc3RhbXA9IiA8PCBzci5ydHBf
dGltZXN0YW1wKCkgPDwgc3RkOjplbmRsOwotfQotCi12b2lkIFByaW50UmVjZWl2ZXJSZXBvcnQo
Y29uc3Qgd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldyYgcGFyc2VkX3N0cmVhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OnJ0Y3A6OkNvbW1vbkhlYWRlciYgcnRj
cF9ibG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBsb2dfdGltZXN0YW1w
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVj
dGlvbikgewotICB3ZWJydGM6OnJ0Y3A6OlJlY2VpdmVyUmVwb3J0IHJyOwotICBpZiAoIXJyLlBh
cnNlKHJ0Y3BfYmxvY2spKQotICAgIHJldHVybjsKLSAgTWVkaWFUeXBlIG1lZGlhX3R5cGUgPQot
ICAgICAgcGFyc2VkX3N0cmVhbS5HZXRNZWRpYVR5cGUocnIuc2VuZGVyX3NzcmMoKSwgZGlyZWN0
aW9uKTsKLSAgaWYgKEV4Y2x1ZGVQYWNrZXQoZGlyZWN0aW9uLCBtZWRpYV90eXBlLCByci5zZW5k
ZXJfc3NyYygpKSkKLSAgICByZXR1cm47Ci0gIHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0YW1wIDw8
ICJcdCIKLSAgICAgICAgICAgIDw8ICJSVENQX1JSIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwg
bWVkaWFfdHlwZSkKLSAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCByci5zZW5kZXJfc3NyYygp
IDw8IHN0ZDo6ZW5kbDsKLX0KLQotdm9pZCBQcmludFhyKGNvbnN0IHdlYnJ0Yzo6UGFyc2VkUnRj
RXZlbnRMb2dOZXcmIHBhcnNlZF9zdHJlYW0sCi0gICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpy
dGNwOjpDb21tb25IZWFkZXImIHJ0Y3BfYmxvY2ssCi0gICAgICAgICAgICAgdWludDY0X3QgbG9n
X3RpbWVzdGFtcCwKLSAgICAgICAgICAgICB3ZWJydGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rp
b24pIHsKLSAgd2VicnRjOjpydGNwOjpFeHRlbmRlZFJlcG9ydHMgeHI7Ci0gIGlmICgheHIuUGFy
c2UocnRjcF9ibG9jaykpCi0gICAgcmV0dXJuOwotICBNZWRpYVR5cGUgbWVkaWFfdHlwZSA9Ci0g
ICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZSh4ci5zZW5kZXJfc3NyYygpLCBkaXJlY3Rp
b24pOwotICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIHhyLnNlbmRl
cl9zc3JjKCkpKQotICAgIHJldHVybjsKLSAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwg
Ilx0IgotICAgICAgICAgICAgPDwgIlJUQ1BfWFIiIDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBt
ZWRpYV90eXBlKQotICAgICAgICAgICAgPDwgIlx0c3NyYz0iIDw8IHhyLnNlbmRlcl9zc3JjKCkg
PDwgc3RkOjplbmRsOwotfQotCi12b2lkIFByaW50U2Rlcyhjb25zdCB3ZWJydGM6OnJ0Y3A6OkNv
bW1vbkhlYWRlciYgcnRjcF9ibG9jaywKLSAgICAgICAgICAgICAgIHVpbnQ2NF90IGxvZ190aW1l
c3RhbXAsCi0gICAgICAgICAgICAgICB3ZWJydGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb24p
IHsKLSAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgPDwg
IlJUQ1BfU0RFUyIgPDwgU3RyZWFtSW5mbyhkaXJlY3Rpb24sIE1lZGlhVHlwZTo6QU5ZKQotICAg
ICAgICAgICAgPDwgc3RkOjplbmRsOwotICBSVENfTk9UUkVBQ0hFRCgpIDw8ICJTREVTIHNob3Vs
ZCBoYXZlIGJlZW4gcmVkYWN0ZWQgd2hlbiB3cml0aW5nIHRoZSBsb2ciOwotfQotCi12b2lkIFBy
aW50QnllKGNvbnN0IHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXcmIHBhcnNlZF9zdHJlYW0s
Ci0gICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6cnRjcDo6Q29tbW9uSGVhZGVyJiBydGNwX2Js
b2NrLAotICAgICAgICAgICAgICB1aW50NjRfdCBsb2dfdGltZXN0YW1wLAotICAgICAgICAgICAg
ICB3ZWJydGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb24pIHsKLSAgd2VicnRjOjpydGNwOjpC
eWUgYnllOwotICBpZiAoIWJ5ZS5QYXJzZShydGNwX2Jsb2NrKSkKLSAgICByZXR1cm47Ci0gIE1l
ZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgIHBhcnNlZF9zdHJlYW0uR2V0TWVkaWFUeXBlKGJ5
ZS5zZW5kZXJfc3NyYygpLCBkaXJlY3Rpb24pOwotICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rp
b24sIG1lZGlhX3R5cGUsIGJ5ZS5zZW5kZXJfc3NyYygpKSkKLSAgICByZXR1cm47Ci0gIHN0ZDo6
Y291dCA8PCBsb2dfdGltZXN0YW1wIDw8ICJcdCIKLSAgICAgICAgICAgIDw8ICJSVENQX0JZRSIg
PDwgU3RyZWFtSW5mbyhkaXJlY3Rpb24sIG1lZGlhX3R5cGUpCi0gICAgICAgICAgICA8PCAiXHRz
c3JjPSIgPDwgYnllLnNlbmRlcl9zc3JjKCkgPDwgc3RkOjplbmRsOwotfQotCi12b2lkIFByaW50
UnRwRmVlZGJhY2soY29uc3Qgd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldyYgcGFyc2VkX3N0
cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OnJ0Y3A6OkNvbW1vbkhl
YWRlciYgcnRjcF9ibG9jaywKLSAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBsb2dfdGlt
ZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRp
cmVjdGlvbikgewotICBzd2l0Y2ggKHJ0Y3BfYmxvY2suZm10KCkpIHsKLSAgICBjYXNlIHdlYnJ0
Yzo6cnRjcDo6TmFjazo6a0ZlZWRiYWNrTWVzc2FnZVR5cGU6IHsKLSAgICAgIHdlYnJ0Yzo6cnRj
cDo6TmFjayBuYWNrOwotICAgICAgaWYgKCFuYWNrLlBhcnNlKHJ0Y3BfYmxvY2spKQotICAgICAg
ICByZXR1cm47Ci0gICAgICBNZWRpYVR5cGUgbWVkaWFfdHlwZSA9Ci0gICAgICAgICAgcGFyc2Vk
X3N0cmVhbS5HZXRNZWRpYVR5cGUobmFjay5zZW5kZXJfc3NyYygpLCBkaXJlY3Rpb24pOwotICAg
ICAgaWYgKEV4Y2x1ZGVQYWNrZXQoZGlyZWN0aW9uLCBtZWRpYV90eXBlLCBuYWNrLnNlbmRlcl9z
c3JjKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFt
cCA8PCAiXHQiCi0gICAgICAgICAgICAgICAgPDwgIlJUQ1BfTkFDSyIgPDwgU3RyZWFtSW5mbyhk
aXJlY3Rpb24sIG1lZGlhX3R5cGUpCi0gICAgICAgICAgICAgICAgPDwgIlx0c3NyYz0iIDw8IG5h
Y2suc2VuZGVyX3NzcmMoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAg
Y2FzZSB3ZWJydGM6OnJ0Y3A6OlRtbWJyOjprRmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAg
d2VicnRjOjpydGNwOjpUbW1iciB0bW1icjsKLSAgICAgIGlmICghdG1tYnIuUGFyc2UocnRjcF9i
bG9jaykpCi0gICAgICAgIHJldHVybjsKLSAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAg
ICAgICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZSh0bW1ici5zZW5kZXJfc3NyYygpLCBk
aXJlY3Rpb24pOwotICAgICAgaWYgKEV4Y2x1ZGVQYWNrZXQoZGlyZWN0aW9uLCBtZWRpYV90eXBl
LCB0bW1ici5zZW5kZXJfc3NyYygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgc3RkOjpjb3V0
IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgICAgIDw8ICJSVENQX1RNTUJS
IiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAgICAgICAgICA8
PCAiXHRzc3JjPSIgPDwgdG1tYnIuc2VuZGVyX3NzcmMoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICBi
cmVhazsKLSAgICB9Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OlRtbWJuOjprRmVlZGJhY2tNZXNz
YWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNwOjpUbW1ibiB0bW1ibjsKLSAgICAgIGlmICgh
dG1tYm4uUGFyc2UocnRjcF9ibG9jaykpCi0gICAgICAgIHJldHVybjsKLSAgICAgIE1lZGlhVHlw
ZSBtZWRpYV90eXBlID0KLSAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZSh0bW1i
bi5zZW5kZXJfc3NyYygpLCBkaXJlY3Rpb24pOwotICAgICAgaWYgKEV4Y2x1ZGVQYWNrZXQoZGly
ZWN0aW9uLCBtZWRpYV90eXBlLCB0bW1ibi5zZW5kZXJfc3NyYygpKSkKLSAgICAgICAgcmV0dXJu
OwotICAgICAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAg
ICAgIDw8ICJSVENQX1RNTUJOIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkK
LSAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgdG1tYm4uc2VuZGVyX3NzcmMoKSA8PCBz
dGQ6OmVuZGw7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OlJh
cGlkUmVzeW5jUmVxdWVzdDo6a0ZlZWRiYWNrTWVzc2FnZVR5cGU6IHsKLSAgICAgIHdlYnJ0Yzo6
cnRjcDo6UmFwaWRSZXN5bmNSZXF1ZXN0IHNyX3JlcTsKLSAgICAgIGlmICghc3JfcmVxLlBhcnNl
KHJ0Y3BfYmxvY2spKQotICAgICAgICByZXR1cm47Ci0gICAgICBNZWRpYVR5cGUgbWVkaWFfdHlw
ZSA9Ci0gICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRNZWRpYVR5cGUoc3JfcmVxLnNlbmRlcl9z
c3JjKCksIGRpcmVjdGlvbik7Ci0gICAgICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1l
ZGlhX3R5cGUsIHNyX3JlcS5zZW5kZXJfc3NyYygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAg
c3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgICAgIDw8ICJS
VENQX1NSUkVRIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAg
ICAgICAgICA8PCAiXHRzc3JjPSIgPDwgc3JfcmVxLnNlbmRlcl9zc3JjKCkgPDwgc3RkOjplbmRs
OwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ugd2VicnRjOjpydGNwOjpUcmFuc3BvcnRG
ZWVkYmFjazo6a0ZlZWRiYWNrTWVzc2FnZVR5cGU6IHsKLSAgICAgIHdlYnJ0Yzo6cnRjcDo6VHJh
bnNwb3J0RmVlZGJhY2sgdHJhbnNwb3J0X2ZlZWRiYWNrOwotICAgICAgaWYgKCF0cmFuc3BvcnRf
ZmVlZGJhY2suUGFyc2UocnRjcF9ibG9jaykpCi0gICAgICAgIHJldHVybjsKLSAgICAgIE1lZGlh
VHlwZSBtZWRpYV90eXBlID0gcGFyc2VkX3N0cmVhbS5HZXRNZWRpYVR5cGUoCi0gICAgICAgICAg
dHJhbnNwb3J0X2ZlZWRiYWNrLnNlbmRlcl9zc3JjKCksIGRpcmVjdGlvbik7Ci0gICAgICBpZiAo
RXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICB0cmFuc3BvcnRfZmVlZGJhY2suc2VuZGVyX3NzcmMoKSkpCi0gICAgICAgIHJldHVybjsK
LSAgICAgIHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0YW1wIDw8ICJcdCIKLSAgICAgICAgICAgICAg
ICA8PCAiUlRDUF9ORVdGQiIgPDwgU3RyZWFtSW5mbyhkaXJlY3Rpb24sIG1lZGlhX3R5cGUpCi0g
ICAgICAgICAgICAgICAgPDwgIlx0c2VuZGVyX3NzcmM9IiA8PCB0cmFuc3BvcnRfZmVlZGJhY2su
c2VuZGVyX3NzcmMoKQotICAgICAgICAgICAgICAgIDw8ICJcdG1lZGlhX3NzcmM9IiA8PCB0cmFu
c3BvcnRfZmVlZGJhY2subWVkaWFfc3NyYygpCi0gICAgICAgICAgICAgICAgPDwgc3RkOjplbmRs
OwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICBzdGQ6OmNvdXQgPDwg
bG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICAgICAgPDwgIlJUQ1BfUlRQRkIoVU5L
Tk9XTikiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLXZvaWQgUHJpbnRQ
c0ZlZWRiYWNrKGNvbnN0IHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXcmIHBhcnNlZF9zdHJl
YW0sCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OnJ0Y3A6OkNvbW1vbkhlYWRl
ciYgcnRjcF9ibG9jaywKLSAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxvZ190aW1lc3Rh
bXAsCi0gICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rp
b24pIHsKLSAgc3dpdGNoIChydGNwX2Jsb2NrLmZtdCgpKSB7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0
Y3A6OlBsaTo6a0ZlZWRiYWNrTWVzc2FnZVR5cGU6IHsKLSAgICAgIHdlYnJ0Yzo6cnRjcDo6UGxp
IHBsaTsKLSAgICAgIGlmICghcGxpLlBhcnNlKHJ0Y3BfYmxvY2spKQotICAgICAgICByZXR1cm47
Ci0gICAgICBNZWRpYVR5cGUgbWVkaWFfdHlwZSA9Ci0gICAgICAgICAgcGFyc2VkX3N0cmVhbS5H
ZXRNZWRpYVR5cGUocGxpLnNlbmRlcl9zc3JjKCksIGRpcmVjdGlvbik7Ci0gICAgICBpZiAoRXhj
bHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIHBsaS5zZW5kZXJfc3NyYygpKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgICAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0Igot
ICAgICAgICAgICAgICAgIDw8ICJSVENQX1BMSSIgPDwgU3RyZWFtSW5mbyhkaXJlY3Rpb24sIG1l
ZGlhX3R5cGUpCi0gICAgICAgICAgICAgICAgPDwgIlx0c3NyYz0iIDw8IHBsaS5zZW5kZXJfc3Ny
YygpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIHdlYnJ0Yzo6
cnRjcDo6RmlyOjprRmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNwOjpG
aXIgZmlyOwotICAgICAgaWYgKCFmaXIuUGFyc2UocnRjcF9ibG9jaykpCi0gICAgICAgIHJldHVy
bjsKLSAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgICAgICBwYXJzZWRfc3RyZWFt
LkdldE1lZGlhVHlwZShmaXIuc2VuZGVyX3NzcmMoKSwgZGlyZWN0aW9uKTsKLSAgICAgIGlmIChF
eGNsdWRlUGFja2V0KGRpcmVjdGlvbiwgbWVkaWFfdHlwZSwgZmlyLnNlbmRlcl9zc3JjKCkpKQot
ICAgICAgICByZXR1cm47Ci0gICAgICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQi
Ci0gICAgICAgICAgICAgICAgPDwgIlJUQ1BfRklSIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwg
bWVkaWFfdHlwZSkKLSAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgZmlyLnNlbmRlcl9z
c3JjKCkgPDwgc3RkOjplbmRsOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ugd2VicnRj
OjpydGNwOjpSZW1iOjprRmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNw
OjpSZW1iIHJlbWI7Ci0gICAgICBpZiAoIXJlbWIuUGFyc2UocnRjcF9ibG9jaykpCi0gICAgICAg
IHJldHVybjsKLSAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgICAgICBwYXJzZWRf
c3RyZWFtLkdldE1lZGlhVHlwZShyZW1iLnNlbmRlcl9zc3JjKCksIGRpcmVjdGlvbik7Ci0gICAg
ICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIHJlbWIuc2VuZGVyX3Nz
cmMoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICAgIHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0YW1w
IDw8ICJcdCIKLSAgICAgICAgICAgICAgICA8PCAiUlRDUF9SRU1CIiA8PCBTdHJlYW1JbmZvKGRp
cmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgcmVt
Yi5zZW5kZXJfc3NyYygpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBk
ZWZhdWx0OgotICAgICAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAgICAg
ICAgICAgICAgIDw8ICJSVENQX1BTRkIoVU5LTk9XTikiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGJy
ZWFrOwotICB9Ci19Ci0KLWVudW0gY2xhc3MgSW5wdXRTb3VyY2UgewotICBTVERJTiwKLSAgRklM
RSwKLX07Ci0KLXZvaWQgUHJpbnRVc2FnZUd1aWRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9ncmFt
X25hbWUpIHsKLSAgc3RkOjpjb3V0Ci0gICAgICA8PCAiVG9vbCBmb3IgcHJpbnRpbmcgcGFja2V0
IGluZm9ybWF0aW9uIGZyb20gYW4gUnRjRXZlbnRMb2cgYXMgdGV4dC5cbiIKLSAgICAgIDw8ICIq
IFJ1biAiICsgcHJvZ3JhbV9uYW1lICsgIiAtLWhlbHAgZm9yIHVzYWdlLlxuIgotICAgICAgPDwg
IiogRXhhbXBsZSB1c2FnZSBmb3IgcGFyc2luZyBhIGZpbGU6XG4iCi0gICAgICA8PCAiICAiIDw8
IHByb2dyYW1fbmFtZSArICIgaW5wdXQucmVsXG4iCi0gICAgICA8PCAiKiBFeGFtcGxlIHVzYWdl
IGZvciBwYXJzaW5nIHRoZSBzdGRpbjpcbiIKLSAgICAgIDw8ICIgICIgPDwgcHJvZ3JhbV9uYW1l
ICsgIlxuIjsKLX0KLQotLy8gVE9ETyhlbGFkYWxvbik6IFJldHVybiBhIHN0cmVhbSBvciBmaWxl
IGRlc2NyaXB0b3IgaW5zdGVhZC4KLUlucHV0U291cmNlIFBhcnNlQ29tbWFuZExpbmVGbGFncyhp
bnQgYXJnYywgY2hhciogYXJndltdKSB7Ci0gIGlmIChydGM6OkZsYWdMaXN0OjpTZXRGbGFnc0Zy
b21Db21tYW5kTGluZSgmYXJnYywgYXJndiwgdHJ1ZSkgIT0gMCkgewotICAgIFByaW50VXNhZ2VH
dWlkZShhcmd2WzBdKTsKLSAgICBleGl0KC0xKTsKLSAgfQotCi0gIGlmIChGTEFHX2hlbHApIHsK
LSAgICBQcmludFVzYWdlR3VpZGUoYXJndlswXSk7Ci0gICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5k
bDsKLSAgICBydGM6OkZsYWdMaXN0OjpQcmludChudWxscHRyLCBmYWxzZSk7Ci0gICAgZXhpdCgw
KTsKLSAgfQotCi0gIHN3aXRjaCAoYXJnYykgewotICAgIGNhc2UgMToKLSAgICAgIHJldHVybiBJ
bnB1dFNvdXJjZTo6U1RESU47Ci0gICAgY2FzZSAyOgotICAgICAgcmV0dXJuIElucHV0U291cmNl
OjpGSUxFOwotICAgIGRlZmF1bHQ6Ci0gICAgICBQcmludFVzYWdlR3VpZGUoYXJndlswXSk7Ci0g
ICAgICBleGl0KC0xKTsKLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotLy8gVGhpcyB1dGls
aXR5IHdpbGwgcHJpbnQgYmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBwYWNrZXQgdG8gc3Rk
b3V0LgotLy8gTm90ZSB0aGF0IHBhcnNlciB3aWxsIGFzc2VydCBpZiB0aGUgcHJvdG9idWYgZXZl
bnQgaXMgbWlzc2luZyBzb21lIHJlcXVpcmVkCi0vLyBmaWVsZHMgYW5kIHdlIGF0dGVtcHQgdG8g
YWNjZXNzIHRoZW0uIFdlIGRvbid0IGhhbmRsZSB0aGlzIGF0IHRoZSBtb21lbnQuCi1pbnQgbWFp
bihpbnQgYXJnYywgY2hhciogYXJndltdKSB7Ci0gIElucHV0U291cmNlIGlucHV0X3NvdXJjZSA9
IFBhcnNlQ29tbWFuZExpbmVGbGFncyhhcmdjLCBhcmd2KTsKLQotICBpZiAoc3RybGVuKEZMQUdf
c3NyYykgPiAwKQotICAgIFJUQ19DSEVDSyhQYXJzZVNzcmMoRkxBR19zc3JjKSkgPDwgIkZsYWcg
dmVyaWZpY2F0aW9uIGhhcyBmYWlsZWQuIjsKLQotICB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lv
bk1hcCBkZWZhdWx0X21hcCA9IEdldERlZmF1bHRIZWFkZXJFeHRlbnNpb25NYXAoKTsKLSAgYm9v
bCBkZWZhdWx0X21hcF91c2VkID0gZmFsc2U7Ci0KLSAgd2VicnRjOjpQYXJzZWRSdGNFdmVudExv
Z05ldyBwYXJzZWRfc3RyZWFtOwotCi0gIHN3aXRjaCAoaW5wdXRfc291cmNlKSB7Ci0gICAgY2Fz
ZSBJbnB1dFNvdXJjZTo6U1RESU46IHsKLSAgICAgIGlmICghcGFyc2VkX3N0cmVhbS5QYXJzZVN0
cmVhbShzdGQ6OmNpbikpIHsKLSAgICAgICAgc3RkOjpjZXJyIDw8ICJFcnJvciB3aGlsZSBwYXJz
aW5nIGlucHV0IHN0cmVhbS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuIC0xOwotICAg
ICAgfQotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgSW5wdXRTb3VyY2U6OkZJTEU6IHsK
LSAgICAgIGlmICghcGFyc2VkX3N0cmVhbS5QYXJzZUZpbGUoYXJndlsxXSkpIHsKLSAgICAgICAg
c3RkOjpjZXJyIDw8ICJFcnJvciB3aGlsZSBwYXJzaW5nIGlucHV0IGZpbGU6ICIgPDwgYXJndlsx
XSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICAgIH0KLSAgICAgIGJyZWFr
OwotICAgIH0KLSAgICBkZWZhdWx0OiB7IFJUQ19OT1RSRUFDSEVEKCkgPDwgIlVuc3VwcG9ydGVk
IGlucHV0IHNvdXJjZS4iOyB9Ci0gIH0KLQotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNl
ZF9zdHJlYW0uR2V0TnVtYmVyT2ZFdmVudHMoKTsgaSsrKSB7Ci0gICAgYm9vbCBldmVudF9yZWNv
Z25pemVkID0gZmFsc2U7Ci0gICAgc3dpdGNoIChwYXJzZWRfc3RyZWFtLkdldEV2ZW50VHlwZShp
KSkgewotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6
OlVOS05PV05fRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfdW5rbm93bikgewotICAgICAgICAg
IHN0ZDo6Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRVTktOT1dO
X0VWRU5UIgotICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAg
ICAgICAgZXZlbnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQot
Ci0gICAgICBjYXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6TE9H
X1NUQVJUOiB7Ci0gICAgICAgIGlmIChGTEFHX3N0YXJ0c3RvcCkgewotICAgICAgICAgIHN0ZDo6
Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRMT0dfU1RBUlQiCi0g
ICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVu
dF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNh
c2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpMT0dfRU5EOiB7Ci0g
ICAgICAgIGlmIChGTEFHX3N0YXJ0c3RvcCkgewotICAgICAgICAgIHN0ZDo6Y291dCA8PCBwYXJz
ZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRMT0dfRU5EIgotICAgICAgICAgICAgICAg
ICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZlbnRfcmVjb2duaXplZCA9
IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBjYXNlIHdlYnJ0Yzo6UGFy
c2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6UlRQX0VWRU5UOiB7Ci0gICAgICAgIGlmIChG
TEFHX3J0cCkgewotICAgICAgICAgIHNpemVfdCBoZWFkZXJfbGVuZ3RoOwotICAgICAgICAgIHNp
emVfdCB0b3RhbF9sZW5ndGg7Ci0gICAgICAgICAgdWludDhfdCBoZWFkZXJbSVBfUEFDS0VUX1NJ
WkVdOwotICAgICAgICAgIHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbjsKLSAgICAg
ICAgICBjb25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCogZXh0ZW5zaW9uX21hcCA9
Ci0gICAgICAgICAgICAgIHBhcnNlZF9zdHJlYW0uR2V0UnRwSGVhZGVyKGksICZkaXJlY3Rpb24s
IGhlYWRlciwgJmhlYWRlcl9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZ0b3RhbF9sZW5ndGgsIG51bGxwdHIpOwotCi0gICAgICAgICAgaWYgKGV4dGVu
c2lvbl9tYXAgPT0gbnVsbHB0cikgewotICAgICAgICAgICAgZXh0ZW5zaW9uX21hcCA9ICZkZWZh
dWx0X21hcDsKLSAgICAgICAgICAgIGlmICghZGVmYXVsdF9tYXBfdXNlZCkKLSAgICAgICAgICAg
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVXNpbmcgZGVmYXVsdCBoZWFkZXIgZXh0ZW5zaW9u
IG1hcCI7Ci0gICAgICAgICAgICBkZWZhdWx0X21hcF91c2VkID0gdHJ1ZTsKLSAgICAgICAgICB9
Ci0KLSAgICAgICAgICAvLyBQYXJzZSBoZWFkZXIgdG8gZ2V0IFNTUkMgYW5kIFJUUCB0aW1lLgot
ICAgICAgICAgIHdlYnJ0Yzo6UnRwVXRpbGl0eTo6UnRwSGVhZGVyUGFyc2VyIHJ0cF9wYXJzZXIo
aGVhZGVyLCBoZWFkZXJfbGVuZ3RoKTsKLSAgICAgICAgICB3ZWJydGM6OlJUUEhlYWRlciBwYXJz
ZWRfaGVhZGVyOwotICAgICAgICAgIHJ0cF9wYXJzZXIuUGFyc2UoJnBhcnNlZF9oZWFkZXIsIGV4
dGVuc2lvbl9tYXApOwotICAgICAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgICAg
ICAgICAgcGFyc2VkX3N0cmVhbS5HZXRNZWRpYVR5cGUocGFyc2VkX2hlYWRlci5zc3JjLCBkaXJl
Y3Rpb24pOwotCi0gICAgICAgICAgaWYgKEV4Y2x1ZGVQYWNrZXQoZGlyZWN0aW9uLCBtZWRpYV90
eXBlLCBwYXJzZWRfaGVhZGVyLnNzcmMpKSB7Ci0gICAgICAgICAgICBldmVudF9yZWNvZ25pemVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHN0
ZDo6Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRSVFAiCi0gICAg
ICAgICAgICAgICAgICAgIDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBtZWRpYV90eXBlKQotICAg
ICAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgcGFyc2VkX2hlYWRlci5zc3JjCi0gICAg
ICAgICAgICAgICAgICAgIDw8ICJcdHRpbWVzdGFtcD0iIDw8IHBhcnNlZF9oZWFkZXIudGltZXN0
YW1wOwotICAgICAgICAgIGlmIChwYXJzZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0ZVNl
bmRUaW1lKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0QWJzU2VuZFRpbWU9IgotICAg
ICAgICAgICAgICAgICAgICAgIDw8IHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLmFic29sdXRlU2Vu
ZFRpbWU7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChwYXJzZWRfaGVhZGVyLmV4dGVuc2lv
bi5oYXNWaWRlb0NvbnRlbnRUeXBlKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0Q29u
dGVudFR5cGU9IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLnZpZGVv
Q29udGVudFR5cGUpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAocGFyc2VkX2hlYWRlci5l
eHRlbnNpb24uaGFzVmlkZW9Sb3RhdGlvbikgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJc
dFJvdGF0aW9uPSIKLSAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfaGVhZGVyLmV4dGVuc2lvbi52aWRl
b1JvdGF0aW9uKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHBhcnNlZF9oZWFkZXIuZXh0
ZW5zaW9uLmhhc1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKSB7Ci0gICAgICAgICAgICBzdGQ6OmNv
dXQgPDwgIlx0VHJhbnNwb3J0U2VxPSIKLSAgICAgICAgICAgICAgICAgICAgICA8PCBwYXJzZWRf
aGVhZGVyLmV4dGVuc2lvbi50cmFuc3BvcnRTZXF1ZW5jZU51bWJlcjsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgaWYgKHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zbWlzc2lvblRpbWVP
ZmZzZXQpIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRUcmFuc21UaW1lT2Zmc2V0PSIK
LSAgICAgICAgICAgICAgICAgICAgICA8PCBwYXJzZWRfaGVhZGVyLmV4dGVuc2lvbi50cmFuc21p
c3Npb25UaW1lT2Zmc2V0OwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAocGFyc2VkX2hlYWRl
ci5leHRlbnNpb24uaGFzQXVkaW9MZXZlbCkgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJc
dEF1ZGlvTGV2ZWw9IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4o
cGFyc2VkX2hlYWRlci5leHRlbnNpb24uYXVkaW9MZXZlbCk7Ci0gICAgICAgICAgfQotICAgICAg
ICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgaWYgKEZMQUdfcHJpbnRfZnVs
bF9wYWNrZXRzKSB7Ci0gICAgICAgICAgICAvLyBUT0RPKHRlcmVsaXVzKTogUmV3cml0ZSB0aGlz
IGZpbGUgdG8gdXNlIHByaW50ZiBpbnN0ZWFkIG9mIGNvdXQuCi0gICAgICAgICAgICBzdGQ6OmNv
dXQgPDwgIlx0XHQiIDw8IHN0ZDo6aGV4OwotICAgICAgICAgICAgY2hhciBwcmV2X2ZpbGwgPSBz
dGQ6OmNvdXQuZmlsbCgnMCcpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBo
ZWFkZXJfbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8IHN0ZDo6c2V0
dygyKSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGVhZGVyW2ldKTsKLSAgICAgICAgICAgICAg
aWYgKGkgJSA0ID09IDMpCi0gICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICIgIjsgIC8vIFNl
cGFyYXRvciBiZXR3ZWVuIDMyLWJpdCB3b3Jkcy4KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHN0ZDo6Y291dC5maWxsKHByZXZfZmlsbCk7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgc3Rk
OjpkZWMgPDwgc3RkOjplbmRsOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBldmVu
dF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNh
c2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpSVENQX0VWRU5UOiB7
Ci0gICAgICAgIGlmIChGTEFHX3J0Y3ApIHsKLSAgICAgICAgICBzaXplX3QgbGVuZ3RoOwotICAg
ICAgICAgIHVpbnQ4X3QgcGFja2V0W0lQX1BBQ0tFVF9TSVpFXTsKLSAgICAgICAgICB3ZWJydGM6
OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb247Ci0gICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRS
dGNwUGFja2V0KGksICZkaXJlY3Rpb24sIHBhY2tldCwgJmxlbmd0aCk7Ci0KLSAgICAgICAgICB3
ZWJydGM6OnJ0Y3A6OkNvbW1vbkhlYWRlciBydGNwX2Jsb2NrOwotICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIHBhY2tldF9lbmQgPSBwYWNrZXQgKyBsZW5ndGg7Ci0gICAgICAgICAgZm9yIChjb25z
dCB1aW50OF90KiBuZXh0X2Jsb2NrID0gcGFja2V0OyBuZXh0X2Jsb2NrICE9IHBhY2tldF9lbmQ7
Ci0gICAgICAgICAgICAgICBuZXh0X2Jsb2NrID0gcnRjcF9ibG9jay5OZXh0UGFja2V0KCkpIHsK
LSAgICAgICAgICAgIHB0cmRpZmZfdCByZW1haW5pbmdfYmxvY2tzX3NpemUgPSBwYWNrZXRfZW5k
IC0gbmV4dF9ibG9jazsKLSAgICAgICAgICAgIFJUQ19EQ0hFQ0tfR1QocmVtYWluaW5nX2Jsb2Nr
c19zaXplLCAwKTsKLSAgICAgICAgICAgIGlmICghcnRjcF9ibG9jay5QYXJzZShuZXh0X2Jsb2Nr
LCByZW1haW5pbmdfYmxvY2tzX3NpemUpKSB7Ci0gICAgICAgICAgICAgIFJUQ19MT0coTFNfV0FS
TklORykgPDwgIkZhaWxlZCB0byBwYXJzZSBSVENQIjsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHVpbnQ2NF90IGxvZ190aW1lc3RhbXAgPSBwYXJz
ZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAocnRjcF9ibG9j
ay50eXBlKCkpIHsKLSAgICAgICAgICAgICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OlNlbmRlclJlcG9y
dDo6a1BhY2tldFR5cGU6Ci0gICAgICAgICAgICAgICAgUHJpbnRTZW5kZXJSZXBvcnQocGFyc2Vk
X3N0cmVhbSwgcnRjcF9ibG9jaywgbG9nX3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6UmVjZWl2ZXJSZXBvcnQ6OmtQYWNrZXRUeXBlOgot
ICAgICAgICAgICAgICAgIFByaW50UmVjZWl2ZXJSZXBvcnQocGFyc2VkX3N0cmVhbSwgcnRjcF9i
bG9jaywgbG9nX3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpcmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2Ug
d2VicnRjOjpydGNwOjpTZGVzOjprUGFja2V0VHlwZToKLSAgICAgICAgICAgICAgICBQcmludFNk
ZXMocnRjcF9ibG9jaywgbG9nX3RpbWVzdGFtcCwgZGlyZWN0aW9uKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OkV4dGVuZGVkUmVwb3J0
czo6a1BhY2tldFR5cGU6Ci0gICAgICAgICAgICAgICAgUHJpbnRYcihwYXJzZWRfc3RyZWFtLCBy
dGNwX2Jsb2NrLCBsb2dfdGltZXN0YW1wLCBkaXJlY3Rpb24pOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6QnllOjprUGFja2V0VHlwZToK
LSAgICAgICAgICAgICAgICBQcmludEJ5ZShwYXJzZWRfc3RyZWFtLCBydGNwX2Jsb2NrLCBsb2df
dGltZXN0YW1wLCBkaXJlY3Rpb24pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6UnRwZmI6OmtQYWNrZXRUeXBlOgotICAgICAgICAgICAg
ICAgIFByaW50UnRwRmVlZGJhY2socGFyc2VkX3N0cmVhbSwgcnRjcF9ibG9jaywgbG9nX3RpbWVz
dGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbik7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2Ugd2VicnRjOjpydGNwOjpQc2Zi
OjprUGFja2V0VHlwZToKLSAgICAgICAgICAgICAgICBQcmludFBzRmVlZGJhY2socGFyc2VkX3N0
cmVhbSwgcnRjcF9ibG9jaywgbG9nX3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChGTEFHX3ByaW50X2Z1bGxfcGFja2V0cykgewotICAgICAgICAgICAgICBzdGQ6
OmNvdXQgPDwgIlx0XHQiIDw8IHN0ZDo6aGV4OwotICAgICAgICAgICAgICBjaGFyIHByZXZfZmls
bCA9IHN0ZDo6Y291dC5maWxsKCcwJyk7Ci0gICAgICAgICAgICAgIGZvciAoY29uc3QgdWludDhf
dCogcCA9IG5leHRfYmxvY2s7IHAgPCBydGNwX2Jsb2NrLk5leHRQYWNrZXQoKTsKLSAgICAgICAg
ICAgICAgICAgICBwKyspIHsKLSAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgc3RkOjpzZXR3
KDIpIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPigqcCk7Ci0gICAgICAgICAgICAgICAgcHRyZGlm
Zl90IGNoYXJzX3ByaW50ZWQgPSBwIC0gbmV4dF9ibG9jazsKLSAgICAgICAgICAgICAgICBpZiAo
Y2hhcnNfcHJpbnRlZCAlIDQgPT0gMykKLSAgICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAi
ICI7ICAvLyBTZXBhcmF0b3IgYmV0d2VlbiAzMi1iaXQgd29yZHMuCi0gICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgc3RkOjpjb3V0LmZpbGwocHJldl9maWxsKTsKLSAgICAgICAgICAgICAg
c3RkOjpjb3V0IDw8IHN0ZDo6ZGVjIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZXZlbnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBjYXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRM
b2dOZXc6OkV2ZW50VHlwZTo6QVVESU9fUExBWU9VVF9FVkVOVDogewotICAgICAgICBpZiAoRkxB
R19wbGF5b3V0KSB7Ci0gICAgICAgICAgYXV0byBhdWRpb19wbGF5b3V0ID0gcGFyc2VkX3N0cmVh
bS5HZXRBdWRpb1BsYXlvdXQoaSk7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IGF1ZGlvX3BsYXlv
dXQubG9nX3RpbWVfdXMoKSA8PCAiXHRBVURJT19QTEFZT1VUIgotICAgICAgICAgICAgICAgICAg
ICA8PCAiXHRzc3JjPSIgPDwgYXVkaW9fcGxheW91dC5zc3JjIDw8IHN0ZDo6ZW5kbDsKLSAgICAg
ICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRU
eXBlOjpMT1NTX0JBU0VEX0JXRV9VUERBVEU6IHsKLSAgICAgICAgaWYgKEZMQUdfYndlKSB7Ci0g
ICAgICAgICAgYXV0byBid2VfdXBkYXRlID0gcGFyc2VkX3N0cmVhbS5HZXRMb3NzQmFzZWRCd2VV
cGRhdGUoaSk7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IGJ3ZV91cGRhdGUubG9nX3RpbWVfdXMo
KSA8PCAiXHRCV0UoTE9TU19CQVNFRCkiCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdGJpdHJh
dGVfYnBzPSIgPDwgYndlX3VwZGF0ZS5iaXRyYXRlX2JwcwotICAgICAgICAgICAgICAgICAgICA8
PCAiXHRmcmFjdGlvbl9sb3N0PSIKLSAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJ3ZV91cGRhdGUuZnJhY3Rpb25fbG9zdCkKLSAgICAgICAgICAgICAgICAgICAg
PDwgIlx0ZXhwZWN0ZWRfcGFja2V0cz0iIDw8IGJ3ZV91cGRhdGUuZXhwZWN0ZWRfcGFja2V0cwot
ICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZl
bnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBj
YXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6REVMQVlfQkFTRURf
QldFX1VQREFURTogewotICAgICAgICBpZiAoRkxBR19id2UpIHsKLSAgICAgICAgICBhdXRvIGJ3
ZV91cGRhdGUgPSBwYXJzZWRfc3RyZWFtLkdldERlbGF5QmFzZWRCd2VVcGRhdGUoaSk7Ci0gICAg
ICAgICAgc3RkOjpjb3V0IDw8IGJ3ZV91cGRhdGUubG9nX3RpbWVfdXMoKSA8PCAiXHRCV0UoREVM
QVlfQkFTRUQpIgotICAgICAgICAgICAgICAgICAgICA8PCAiXHRiaXRyYXRlX2Jwcz0iIDw8IGJ3
ZV91cGRhdGUuYml0cmF0ZV9icHMKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0ZGV0ZWN0b3Jf
c3RhdGU9IgotICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KGJ3ZV91cGRh
dGUuZGV0ZWN0b3Jfc3RhdGUpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVu
dF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNh
c2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjoKLSAgICAgICAgICBW
SURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfY29uZmlnICYm
IEZMQUdfdmlkZW8gJiYgRkxBR19pbmNvbWluZykgewotICAgICAgICAgIHdlYnJ0Yzo6cnRjbG9n
OjpTdHJlYW1Db25maWcgY29uZmlnID0KLSAgICAgICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRW
aWRlb1JlY2VpdmVDb25maWcoaSk7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IHBhcnNlZF9zdHJl
YW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdFZJREVPX1JFQ1ZfQ09ORklHIgotICAgICAgICAgICAg
ICAgICAgICA8PCAiXHRzc3JjPSIgPDwgY29uZmlnLnJlbW90ZV9zc3JjCi0gICAgICAgICAgICAg
ICAgICAgIDw8ICJcdGZlZWRiYWNrX3NzcmM9IiA8PCBjb25maWcubG9jYWxfc3NyYzsKLSAgICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlx0ZXh0ZW5zaW9ucz17IjsKLSAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGV4dGVuc2lvbiA6IGNvbmZpZy5ydHBfZXh0ZW5zaW9ucykgewotICAgICAgICAgICAg
c3RkOjpjb3V0IDw8IGV4dGVuc2lvbi5Ub1N0cmluZygpIDw8ICIsIjsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgc3RkOjpjb3V0IDw8ICJ9IjsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0Y29k
ZWNzPXsiOwotICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY29kZWMgOiBjb25maWcuY29kZWNz
KSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIntuYW1lOiAiIDw8IGNvZGVjLnBheWxvYWRf
bmFtZQotICAgICAgICAgICAgICAgICAgICAgIDw8ICIsIHBheWxvYWRfdHlwZTogIiA8PCBjb2Rl
Yy5wYXlsb2FkX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBydHhfcGF5bG9hZF90
eXBlOiAiIDw8IGNvZGVjLnJ0eF9wYXlsb2FkX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICA8
PCAifSI7Ci0gICAgICAgICAgfQotICAgICAgICAgIHN0ZDo6Y291dCA8PCAifSIgPDwgc3RkOjpl
bmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9n
TmV3OjpFdmVudFR5cGU6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQ6IHsKLSAgICAgICAgaWYg
KEZMQUdfY29uZmlnICYmIEZMQUdfdmlkZW8gJiYgRkxBR19vdXRnb2luZykgewotICAgICAgICAg
IHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6cnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZ3MgPQotICAg
ICAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldFZpZGVvU2VuZENvbmZpZyhpKTsKLSAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNvbmZpZyA6IGNvbmZpZ3MpIHsKLSAgICAgICAgICAgIHN0ZDo6
Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRWSURFT19TRU5EX0NP
TkZJRyI7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0c3NyY3M9IiA8PCBjb25maWcubG9j
YWxfc3NyYzsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRydHhfc3NyY3M9IiA8PCBjb25m
aWcucnR4X3NzcmM7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0ZXh0ZW5zaW9ucz17IjsK
LSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZXh0ZW5zaW9uIDogY29uZmlnLnJ0cF9leHRl
bnNpb25zKSB7Ci0gICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBleHRlbnNpb24uVG9TdHJpbmco
KSA8PCAiLCI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIn0iOwot
ICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJcdGNvZGVjcz17IjsKLSAgICAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgY29kZWMgOiBjb25maWcuY29kZWNzKSB7Ci0gICAgICAgICAgICAgIHN0ZDo6
Y291dCA8PCAie25hbWU6ICIgPDwgY29kZWMucGF5bG9hZF9uYW1lCi0gICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiLCBwYXlsb2FkX3R5cGU6ICIgPDwgY29kZWMucGF5bG9hZF90eXBlCi0gICAg
ICAgICAgICAgICAgICAgICAgICA8PCAiLCBydHhfcGF5bG9hZF90eXBlOiAiIDw8IGNvZGVjLnJ0
eF9wYXlsb2FkX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJ9IjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAifSIgPDwgc3RkOjplbmRsOwotICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExv
Z05ldzo6RXZlbnRUeXBlOjoKLSAgICAgICAgICBBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6
IHsKLSAgICAgICAgaWYgKEZMQUdfY29uZmlnICYmIEZMQUdfYXVkaW8gJiYgRkxBR19pbmNvbWlu
ZykgewotICAgICAgICAgIHdlYnJ0Yzo6cnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnID0KLSAg
ICAgICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRBdWRpb1JlY2VpdmVDb25maWcoaSk7Ci0gICAg
ICAgICAgc3RkOjpjb3V0IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdEFV
RElPX1JFQ1ZfQ09ORklHIgotICAgICAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgY29u
ZmlnLnJlbW90ZV9zc3JjCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdGZlZWRiYWNrX3NzcmM9
IiA8PCBjb25maWcubG9jYWxfc3NyYzsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0ZXh0ZW5z
aW9ucz17IjsKLSAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGV4dGVuc2lvbiA6IGNvbmZpZy5y
dHBfZXh0ZW5zaW9ucykgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8IGV4dGVuc2lvbi5Ub1N0
cmluZygpIDw8ICIsIjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8ICJ9IjsK
LSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0Y29kZWNzPXsiOwotICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgY29kZWMgOiBjb25maWcuY29kZWNzKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQg
PDwgIntuYW1lOiAiIDw8IGNvZGVjLnBheWxvYWRfbmFtZQotICAgICAgICAgICAgICAgICAgICAg
IDw8ICIsIHBheWxvYWRfdHlwZTogIiA8PCBjb2RlYy5wYXlsb2FkX3R5cGUKLSAgICAgICAgICAg
ICAgICAgICAgICA8PCAiLCBydHhfcGF5bG9hZF90eXBlOiAiIDw8IGNvZGVjLnJ0eF9wYXlsb2Fk
X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICA8PCAifSI7Ci0gICAgICAgICAgfQotICAgICAg
ICAgIHN0ZDo6Y291dCA8PCAifSIgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2
ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAg
Y2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkFVRElPX1NFTkRF
Ul9DT05GSUdfRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfY29uZmlnICYmIEZMQUdfYXVkaW8g
JiYgRkxBR19vdXRnb2luZykgewotICAgICAgICAgIHdlYnJ0Yzo6cnRjbG9nOjpTdHJlYW1Db25m
aWcgY29uZmlnID0KLSAgICAgICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRBdWRpb1NlbmRDb25m
aWcoaSk7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1w
KGkpIDw8ICJcdEFVRElPX1NFTkRfQ09ORklHIgotICAgICAgICAgICAgICAgICAgICA8PCAiXHRz
c3JjPSIgPDwgY29uZmlnLmxvY2FsX3NzcmM7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8ICJcdGV4
dGVuc2lvbnM9eyI7Ci0gICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBleHRlbnNpb24gOiBjb25m
aWcucnRwX2V4dGVuc2lvbnMpIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBleHRlbnNpb24u
VG9TdHJpbmcoKSA8PCAiLCI7Ci0gICAgICAgICAgfQotICAgICAgICAgIHN0ZDo6Y291dCA8PCAi
fSI7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8ICJcdGNvZGVjcz17IjsKLSAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNvZGVjIDogY29uZmlnLmNvZGVjcykgewotICAgICAgICAgICAgc3RkOjpj
b3V0IDw8ICJ7bmFtZTogIiA8PCBjb2RlYy5wYXlsb2FkX25hbWUKLSAgICAgICAgICAgICAgICAg
ICAgICA8PCAiLCBwYXlsb2FkX3R5cGU6ICIgPDwgY29kZWMucGF5bG9hZF90eXBlCi0gICAgICAg
ICAgICAgICAgICAgICAgPDwgIiwgcnR4X3BheWxvYWRfdHlwZTogIiA8PCBjb2RlYy5ydHhfcGF5
bG9hZF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgPDwgIn0iOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBzdGQ6OmNvdXQgPDwgIn0iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAg
ICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAg
ICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjoKLSAgICAg
ICAgICBBVURJT19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdf
YW5hKSB7Ci0gICAgICAgICAgYXV0byBhbmFfZXZlbnQgPSBwYXJzZWRfc3RyZWFtLkdldEF1ZGlv
TmV0d29ya0FkYXB0YXRpb24oaSk7Ci0gICAgICAgICAgY2hhciBidWZmZXJbMzAwXTsKLSAgICAg
ICAgICBydGM6OlNpbXBsZVN0cmluZ0J1aWxkZXIgYnVpbGRlcihidWZmZXIpOwotICAgICAgICAg
IGJ1aWxkZXIgPDwgcGFyc2VkX3N0cmVhbS5HZXRUaW1lc3RhbXAoaSkgPDwgIlx0QU5BX1VQREFU
RSI7Ci0gICAgICAgICAgaWYgKGFuYV9ldmVudC5jb25maWcuYml0cmF0ZV9icHMpIHsKLSAgICAg
ICAgICAgIGJ1aWxkZXIgPDwgIlx0Yml0cmF0ZV9icHM9IiA8PCAqYW5hX2V2ZW50LmNvbmZpZy5i
aXRyYXRlX2JwczsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGFuYV9ldmVudC5jb25maWcu
ZnJhbWVfbGVuZ3RoX21zKSB7Ci0gICAgICAgICAgICBidWlsZGVyIDw8ICJcdGZyYW1lX2xlbmd0
aF9tcz0iCi0gICAgICAgICAgICAgICAgICAgIDw8ICphbmFfZXZlbnQuY29uZmlnLmZyYW1lX2xl
bmd0aF9tczsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGFuYV9ldmVudC5jb25maWcudXBs
aW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKSB7Ci0gICAgICAgICAgICBidWlsZGVyIDw8ICJcdHVw
bGlua19wYWNrZXRfbG9zc19mcmFjdGlvbj0iCi0gICAgICAgICAgICAgICAgICAgIDw8ICphbmFf
ZXZlbnQuY29uZmlnLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbjsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgaWYgKGFuYV9ldmVudC5jb25maWcuZW5hYmxlX2ZlYykgewotICAgICAgICAgICAg
YnVpbGRlciA8PCAiXHRlbmFibGVfZmVjPSIgPDwgKmFuYV9ldmVudC5jb25maWcuZW5hYmxlX2Zl
YzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGFuYV9ldmVudC5jb25maWcuZW5hYmxlX2R0
eCkgewotICAgICAgICAgICAgYnVpbGRlciA8PCAiXHRlbmFibGVfZHR4PSIgPDwgKmFuYV9ldmVu
dC5jb25maWcuZW5hYmxlX2R0eDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGFuYV9ldmVu
dC5jb25maWcubnVtX2NoYW5uZWxzKSB7Ci0gICAgICAgICAgICBidWlsZGVyIDw8ICJcdG51bV9j
aGFubmVscz0iIDw8ICphbmFfZXZlbnQuY29uZmlnLm51bV9jaGFubmVsczsKLSAgICAgICAgICB9
Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IGJ1aWxkZXIuc3RyKCkgPDwgc3RkOjplbmRsOwotICAg
ICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsK
LSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVu
dFR5cGU6OgotICAgICAgICAgIEJXRV9QUk9CRV9DTFVTVEVSX0NSRUFURURfRVZFTlQ6IHsKLSAg
ICAgICAgaWYgKEZMQUdfcHJvYmUpIHsKLSAgICAgICAgICBhdXRvIHByb2JlX2V2ZW50ID0gcGFy
c2VkX3N0cmVhbS5HZXRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkKGkpOwotICAgICAgICAgIHN0ZDo6
Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRQUk9CRV9DUkVBVEVE
KCIKLSAgICAgICAgICAgICAgICAgICAgPDwgcHJvYmVfZXZlbnQuaWQgPDwgIikiCi0gICAgICAg
ICAgICAgICAgICAgIDw8ICJcdGJpdHJhdGVfYnBzPSIgPDwgcHJvYmVfZXZlbnQuYml0cmF0ZV9i
cHMKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0bWluX3BhY2tldHM9IiA8PCBwcm9iZV9ldmVu
dC5taW5fcGFja2V0cwotICAgICAgICAgICAgICAgICAgICA8PCAiXHRtaW5fYnl0ZXM9IiA8PCBw
cm9iZV9ldmVudC5taW5fYnl0ZXMgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2
ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAg
Y2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9G
QUlMVVJFX0VWRU5UOiB7Ci0gICAgICAgIGlmIChGTEFHX3Byb2JlKSB7Ci0gICAgICAgICAgd2Vi
cnRjOjpMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCBwcm9iZV9yZXN1bHQgPQotICAgICAgICAg
ICAgICBwYXJzZWRfc3RyZWFtLkdldEJ3ZVByb2JlRmFpbHVyZShpKTsKLSAgICAgICAgICBzdGQ6
OmNvdXQgPDwgcGFyc2VkX3N0cmVhbS5HZXRUaW1lc3RhbXAoaSkgPDwgIlx0UFJPQkVfRkFJTFVS
RSgiCi0gICAgICAgICAgICAgICAgICAgIDw8IHByb2JlX3Jlc3VsdC5pZCA8PCAiKSIKLSAgICAg
ICAgICAgICAgICAgICAgPDwgIlx0ZmFpbHVyZV9yZWFzb249IgotICAgICAgICAgICAgICAgICAg
ICA8PCBzdGF0aWNfY2FzdDxpbnQ+KHByb2JlX3Jlc3VsdC5mYWlsdXJlX3JlYXNvbikKLSAgICAg
ICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3Jl
Y29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3
ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9TVUNDRVNT
X0VWRU5UOiB7Ci0gICAgICAgIGlmIChGTEFHX3Byb2JlKSB7Ci0gICAgICAgICAgd2VicnRjOjpM
b2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCBwcm9iZV9yZXN1bHQgPQotICAgICAgICAgICAgICBw
YXJzZWRfc3RyZWFtLkdldEJ3ZVByb2JlU3VjY2VzcyhpKTsKLSAgICAgICAgICBzdGQ6OmNvdXQg
PDwgcGFyc2VkX3N0cmVhbS5HZXRUaW1lc3RhbXAoaSkgPDwgIlx0UFJPQkVfU1VDQ0VTUygiCi0g
ICAgICAgICAgICAgICAgICAgIDw8IHByb2JlX3Jlc3VsdC5pZCA8PCAiKSIKLSAgICAgICAgICAg
ICAgICAgICAgPDwgIlx0Yml0cmF0ZV9icHM9IiA8PCBwcm9iZV9yZXN1bHQuYml0cmF0ZV9icHMK
LSAgICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2
ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAg
Y2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkFMUl9TVEFURV9F
VkVOVDogewotICAgICAgICBpZiAoRkxBR19id2UpIHsKLSAgICAgICAgICB3ZWJydGM6OkxvZ2dl
ZEFsclN0YXRlRXZlbnQgYWxyX3N0YXRlID0gcGFyc2VkX3N0cmVhbS5HZXRBbHJTdGF0ZShpKTsK
LSAgICAgICAgICBzdGQ6OmNvdXQgPDwgcGFyc2VkX3N0cmVhbS5HZXRUaW1lc3RhbXAoaSkgPDwg
Ilx0QUxSX1NUQVRFIgotICAgICAgICAgICAgICAgICAgICA8PCAiXHRpbl9hbHI9IiA8PCBhbHJf
c3RhdGUuaW5fYWxyIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNv
Z25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2Vi
cnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRFX1BBSVJf
Q09ORklHOiB7Ci0gICAgICAgIGlmIChGTEFHX2ljZSkgewotICAgICAgICAgIHdlYnJ0Yzo6TG9n
Z2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyBpY2VfY3BfY29uZmlnID0KLSAgICAgICAgICAgICAg
cGFyc2VkX3N0cmVhbS5HZXRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKGkpOwotICAgICAgICAgIC8v
IFRPRE8ocWluZ3NpKTogY29udmVydCB0aGUgbnVtZXJpYyByZXByZXNlbnRhdGlvbiBvZiBzdGF0
ZXMgdG8gdGV4dAotICAgICAgICAgIHN0ZDo6Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVz
dGFtcChpKQotICAgICAgICAgICAgICAgICAgICA8PCAiXHRJQ0VfQ0FORElEQVRFX1BBSVJfQ09O
RklHIgotICAgICAgICAgICAgICAgICAgICA8PCAiXHR0eXBlPSIgPDwgc3RhdGljX2Nhc3Q8aW50
PihpY2VfY3BfY29uZmlnLnR5cGUpCi0gICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6
RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRFX1BBSVJfRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdf
aWNlKSB7Ci0gICAgICAgICAgd2VicnRjOjpMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQgaWNl
X2NwX2V2ZW50ID0KLSAgICAgICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRJY2VDYW5kaWRhdGVQ
YWlyRXZlbnQoaSk7Ci0gICAgICAgICAgLy8gVE9ETyhxaW5nc2kpOiBjb252ZXJ0IHRoZSBudW1l
cmljIHJlcHJlc2VudGF0aW9uIG9mIHN0YXRlcyB0byB0ZXh0Ci0gICAgICAgICAgc3RkOjpjb3V0
IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpCi0gICAgICAgICAgICAgICAgICAgIDw8
ICJcdElDRV9DQU5ESURBVEVfUEFJUl9FVkVOVCIKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0
dHlwZT0iIDw8IHN0YXRpY19jYXN0PGludD4oaWNlX2NwX2V2ZW50LnR5cGUpCi0gICAgICAgICAg
ICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25p
emVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFl
dmVudF9yZWNvZ25pemVkKSB7Ci0gICAgICBzdGQ6OmNvdXQgPDwgIlVucmVjb2duaXplZCBldmVu
dCAoIgotICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4ocGFyc2VkX3N0cmVhbS5H
ZXRFdmVudFR5cGUoaSkpIDw8ICIpIgotICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAg
ICB9Ci0gIH0KLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xv
Z19pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfaW1wbC5jYwppbmRleCA1NTRhMDI4M2Zk
NmY5NzM3YWEwNGUyZTJhODRmMWQ4ODg4NDQyMTQ2Li5jMDIyYTNkNDE4NWNmMTQzYjk0ZTBlMjgx
YmM2ZmU3MjVjZWUzNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19pbXBsLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX2ltcGwuY2MKQEAgLTE4LDggKzE4LDkgQEAKICNp
bmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNs
dWRlICJhcGkvcnRjZXZlbnRsb2dvdXRwdXQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbGVnYWN5LmgiCi0jaW5jbHVkZSAi
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL291dHB1dC9ydGNfZXZlbnRfbG9nX291dHB1dF9maWxlLmgi
CisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19l
bmNvZGVyX25ld19mb3JtYXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZl
bnQuaCIKQEAgLTY0LDcgKzY1LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZ0VuY29k
ZXI+IENyZWF0ZUVuY29kZXIoCiAgICAgUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZSB0eXBlKSB7
CiAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6
TGVnYWN5OgorICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQ3JlYXRpbmcgbGVnYWN5IGVuY29k
ZXIgZm9yIFJUQyBldmVudCBsb2cuIjsKICAgICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxS
dGNFdmVudExvZ0VuY29kZXJMZWdhY3k+KCk7CisgICAgY2FzZSBSdGNFdmVudExvZzo6RW5jb2Rp
bmdUeXBlOjpOZXdGb3JtYXQ6CisgICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJDcmVhdGluZyBu
ZXcgZm9ybWF0IGVuY29kZXIgZm9yIFJUQyBldmVudCBsb2cuIjsKKyAgICAgIHJldHVybiBhYnNs
OjptYWtlX3VuaXF1ZTxSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ+KCk7CiAgICAgZGVmYXVs
dDoKICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJVbmtub3duIFJ0Y0V2ZW50TG9nIGVuY29k
ZXIgdHlwZSAoIiA8PCBpbnQodHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIpIjsK
QEAgLTE2OCwyMCArMTczLDE5IEBAIGJvb2wgUnRjRXZlbnRMb2dJbXBsOjpTdGFydExvZ2dpbmco
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nT3V0cHV0PiBvdXRwdXQsCiAgICAgcmV0dXJuIGZh
bHNlOwogICB9CiAKLSAgLy8gVE9ETyh0ZXJlbGl1cyk6IFRoZSBtYXBwaW5nIGJldHdlZW4gbG9n
IHRpbWVzdGFtcHMgYW5kIFVUQyBzaG91bGQgYmUgc3RvcmVkCi0gIC8vIGluIHRoZSBldmVudF9s
b2cgU1RBUlQgZXZlbnQuCiAgIGNvbnN0IGludDY0X3QgdGltZXN0YW1wX3VzID0gcnRjOjpUaW1l
TWljcm9zKCk7CiAgIGNvbnN0IGludDY0X3QgdXRjX3RpbWVfdXMgPSBydGM6OlRpbWVVVENNaWNy
b3MoKTsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU3RhcnRpbmcgV2ViUlRDIGV2ZW50IGxvZy4g
KFRpbWVzdGFtcCwgVVRDKSA9ICIKICAgICAgICAgICAgICAgICAgICA8PCAiKCIgPDwgdGltZXN0
YW1wX3VzIDw8ICIsICIgPDwgdXRjX3RpbWVfdXMgPDwgIikuIjsKIAogICAvLyBCaW5kaW5nIHRv
IHx0aGlzfCBpcyBzYWZlIGJlY2F1c2UgfHRoaXN8IG91dGxpdmVzIHRoZSB8dGFza19xdWV1ZV98
LgotICBhdXRvIHN0YXJ0ID0gW3RoaXMsIHRpbWVzdGFtcF91c10oc3RkOjp1bmlxdWVfcHRyPFJ0
Y0V2ZW50TG9nT3V0cHV0PiBvdXRwdXQpIHsKKyAgYXV0byBzdGFydCA9IFt0aGlzLCB0aW1lc3Rh
bXBfdXMsCisgICAgICAgICAgICAgICAgdXRjX3RpbWVfdXNdKHN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudExvZ091dHB1dD4gb3V0cHV0KSB7CiAgICAgUlRDX0RDSEVDS19SVU5fT04odGFza19xdWV1
ZV8uZ2V0KCkpOwogICAgIFJUQ19EQ0hFQ0sob3V0cHV0LT5Jc0FjdGl2ZSgpKTsKICAgICBldmVu
dF9vdXRwdXRfID0gc3RkOjptb3ZlKG91dHB1dCk7CiAgICAgbnVtX2NvbmZpZ19ldmVudHNfd3Jp
dHRlbl8gPSAwOwotICAgIFdyaXRlVG9PdXRwdXQoZXZlbnRfZW5jb2Rlcl8tPkVuY29kZUxvZ1N0
YXJ0KHRpbWVzdGFtcF91cykpOworICAgIFdyaXRlVG9PdXRwdXQoZXZlbnRfZW5jb2Rlcl8tPkVu
Y29kZUxvZ1N0YXJ0KHRpbWVzdGFtcF91cywgdXRjX3RpbWVfdXMpKTsKICAgICBMb2dFdmVudHNG
cm9tTWVtb3J5VG9PdXRwdXQoKTsKICAgfTsKIApAQCAtMTk3LDcgKzIwMSw3IEBAIHZvaWQgUnRj
RXZlbnRMb2dJbXBsOjpTdG9wTG9nZ2luZygpIHsKIAogICBSVENfTE9HKExTX0lORk8pIDw8ICJT
dG9wcGluZyBXZWJSVEMgZXZlbnQgbG9nLiI7CiAKLSAgcnRjOjpFdmVudCBvdXRwdXRfc3RvcHBl
ZCh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgb3V0cHV0X3N0b3BwZWQ7CiAKICAgLy8gQmlu
ZGluZyB0byB8dGhpc3wgaXMgc2FmZSBiZWNhdXNlIHx0aGlzfCBvdXRsaXZlcyB0aGUgfHRhc2tf
cXVldWVffC4KICAgdGFza19xdWV1ZV8tPlBvc3RUYXNrKFt0aGlzLCAmb3V0cHV0X3N0b3BwZWRd
KCkgewpAQCAtMzcyLDggKzM3Niw0IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZz4gUnRj
RXZlbnRMb2c6OkNyZWF0ZSgKICNlbmRpZiAgLy8gRU5BQkxFX1JUQ19FVkVOVF9MT0cKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBSdGNFdmVudExvZzo6Q3JlYXRlTnVsbCgpIHsK
LSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZz4obmV3IFJ0Y0V2ZW50TG9nTnVs
bEltcGwoKSk7Ci19Ci0KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ydGNfZXZlbnRfbG9nX3BhcnNlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5j
YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAyYWYxODlhYWQ1OTI3MDY2OGY1N2Mz
MzVkMjJjMzFkNDZiMzVlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXIuY2MKKysrIC9kZXYvbnVsbApAQCAt
MSw4NTEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
LSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJsb2dnaW5n
L3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXIuaCIKLQotI2luY2x1ZGUgPHN0ZGlu
dC5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1
ZGUgPGZzdHJlYW0+Ci0jaW5jbHVkZSA8aXN0cmVhbT4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVk
ZSA8dXRpbGl0eT4KLQotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRf
bG9nLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFw
dG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9y
ZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3Byb3RvYnVmX3V0aWxzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1u
YW1lc3BhY2UgewotUnRjcE1vZGUgR2V0UnVudGltZVJ0Y3BNb2RlKHJ0Y2xvZzo6VmlkZW9SZWNl
aXZlQ29uZmlnOjpSdGNwTW9kZSBydGNwX21vZGUpIHsKLSAgc3dpdGNoIChydGNwX21vZGUpIHsK
LSAgICBjYXNlIHJ0Y2xvZzo6VmlkZW9SZWNlaXZlQ29uZmlnOjpSVENQX0NPTVBPVU5EOgotICAg
ICAgcmV0dXJuIFJ0Y3BNb2RlOjprQ29tcG91bmQ7Ci0gICAgY2FzZSBydGNsb2c6OlZpZGVvUmVj
ZWl2ZUNvbmZpZzo6UlRDUF9SRURVQ0VEU0laRToKLSAgICAgIHJldHVybiBSdGNwTW9kZTo6a1Jl
ZHVjZWRTaXplOwotICB9Ci0gIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIHJldHVybiBSdGNwTW9kZTo6
a09mZjsKLX0KLQotUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZSBHZXRSdW50aW1lRXZlbnRU
eXBlKAotICAgIHJ0Y2xvZzo6RXZlbnQ6OkV2ZW50VHlwZSBldmVudF90eXBlKSB7Ci0gIHN3aXRj
aCAoZXZlbnRfdHlwZSkgewotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6VU5LTk9XTl9FVkVOVDoK
LSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpVTktOT1dOX0VWRU5U
OwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6TE9HX1NUQVJUOgotICAgICAgcmV0dXJuIFBhcnNl
ZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OkxPR19TVEFSVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZl
bnQ6OkxPR19FTkQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6
TE9HX0VORDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OlJUUF9FVkVOVDoKLSAgICAgIHJldHVy
biBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpSVFBfRVZFTlQ7Ci0gICAgY2FzZSBydGNs
b2c6OkV2ZW50OjpSVENQX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpF
dmVudFR5cGU6OlJUQ1BfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBVURJT19QTEFZ
T1VUX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OkFV
RElPX1BMQVlPVVRfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpMT1NTX0JBU0VEX0JX
RV9VUERBVEU6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6TE9T
U19CQVNFRF9CV0VfVVBEQVRFOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6REVMQVlfQkFTRURf
QldFX1VQREFURToKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpE
RUxBWV9CQVNFRF9CV0VfVVBEQVRFOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6VklERU9fUkVD
RUlWRVJfQ09ORklHX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVu
dFR5cGU6OlZJREVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZl
bnQ6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZl
bnRMb2c6OkV2ZW50VHlwZTo6VklERU9fU0VOREVSX0NPTkZJR19FVkVOVDsKLSAgICBjYXNlIHJ0
Y2xvZzo6RXZlbnQ6OkFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDoKLSAgICAgIHJldHVybiBQ
YXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ7
Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBVURJT19TRU5ERVJfQ09ORklHX0VWRU5UOgotICAg
ICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OkFVRElPX1NFTkRFUl9DT05G
SUdfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBVURJT19ORVRXT1JLX0FEQVBUQVRJ
T05fRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6QVVE
SU9fTkVUV09SS19BREFQVEFUSU9OX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QldF
X1BST0JFX0NMVVNURVJfQ1JFQVRFRF9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVu
dExvZzo6RXZlbnRUeXBlOjpCV0VfUFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0VWRU5UOwotICAgIGNh
c2UgcnRjbG9nOjpFdmVudDo6QldFX1BST0JFX1JFU1VMVF9FVkVOVDoKLSAgICAgIHJldHVybiBQ
YXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpCV0VfUFJPQkVfUkVTVUxUX0VWRU5UOwotICAg
IGNhc2UgcnRjbG9nOjpFdmVudDo6QUxSX1NUQVRFX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNl
ZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OkFMUl9TVEFURV9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xv
Zzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJUl9DT05GSUc6Ci0gICAgICByZXR1cm4gUGFyc2Vk
UnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6SUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRzsKLSAgICBj
YXNlIHJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJUl9FVkVOVDoKLSAgICAgIHJldHVy
biBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRFX1BBSVJfRVZFTlQ7
Ci0gIH0KLSAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OlVOS05PV05fRVZF
TlQ7Ci19Ci0KLUJhbmR3aWR0aFVzYWdlIEdldFJ1bnRpbWVEZXRlY3RvclN0YXRlKAotICAgIHJ0
Y2xvZzo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZTo6RGV0ZWN0b3JTdGF0ZSBkZXRlY3Rvcl9zdGF0ZSkg
ewotICBzd2l0Y2ggKGRldGVjdG9yX3N0YXRlKSB7Ci0gICAgY2FzZSBydGNsb2c6OkRlbGF5QmFz
ZWRCd2VVcGRhdGU6OkJXRV9OT1JNQUw6Ci0gICAgICByZXR1cm4gQmFuZHdpZHRoVXNhZ2U6OmtC
d05vcm1hbDsKLSAgICBjYXNlIHJ0Y2xvZzo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZTo6QldFX1VOREVS
VVNJTkc6Ci0gICAgICByZXR1cm4gQmFuZHdpZHRoVXNhZ2U6OmtCd1VuZGVydXNpbmc7Ci0gICAg
Y2FzZSBydGNsb2c6OkRlbGF5QmFzZWRCd2VVcGRhdGU6OkJXRV9PVkVSVVNJTkc6Ci0gICAgICBy
ZXR1cm4gQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZzsKLSAgfQotICBSVENfTk9UUkVBQ0hF
RCgpOwotICByZXR1cm4gQmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1hbDsKLX0KLQotSWNlQ2FuZGlk
YXRlUGFpckNvbmZpZ1R5cGUgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlKAot
ICAgIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZp
Z1R5cGUgdHlwZSkgewotICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZzo6QURERUQ6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckNv
bmZpZ1R5cGU6OmtBZGRlZDsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZp
Zzo6VVBEQVRFRDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a1Vw
ZGF0ZWQ7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkRFU1RST1lF
RDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a0Rlc3Ryb3llZDsK
LSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6U0VMRUNURUQ6Ci0gICAg
ICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGU6OmtTZWxlY3RlZDsKLSAgfQotICBS
VENfTk9UUkVBQ0hFRCgpOwotICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGU6OmtB
ZGRlZDsKLX0KLQotSWNlQ2FuZGlkYXRlVHlwZSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlVHlwZSgK
LSAgICBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkljZUNhbmRpZGF0ZVR5cGUgdHlw
ZSkgewotICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZzo6TE9DQUw6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlVHlwZTo6a0xvY2FsOwot
ICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpTVFVOOgotICAgICAgcmV0
dXJuIEljZUNhbmRpZGF0ZVR5cGU6OmtTdHVuOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnOjpQUkZMWDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVUeXBlOjprUHJm
bHg7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlJFTEFZOgotICAg
ICAgcmV0dXJuIEljZUNhbmRpZGF0ZVR5cGU6OmtSZWxheTsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNl
Q2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9DQU5ESURBVEVfVFlQRToKLSAgICAgIHJldHVy
biBJY2VDYW5kaWRhdGVUeXBlOjprVW5rbm93bjsKLSAgfQotICBSVENfTk9UUkVBQ0hFRCgpOwot
ICByZXR1cm4gSWNlQ2FuZGlkYXRlVHlwZTo6a1Vua25vd247Ci19Ci0KLUljZUNhbmRpZGF0ZVBh
aXJQcm90b2NvbCBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sKAotICAgIHJ0Y2xv
Zzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6UHJvdG9jb2wgcHJvdG9jb2wpIHsKLSAgc3dpdGNo
IChwcm90b2NvbCkgewotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpV
RFA6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprVWRwOwotICAgIGNh
c2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpUQ1A6Ci0gICAgICByZXR1cm4gSWNl
Q2FuZGlkYXRlUGFpclByb3RvY29sOjprVGNwOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnOjpTU0xUQ1A6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3Rv
Y29sOjprU3NsdGNwOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpU
TFM6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprVGxzOwotICAgIGNh
c2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX1BST1RPQ09MOgotICAg
ICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbDo6a1Vua25vd247Ci0gIH0KLSAgUlRD
X05PVFJFQUNIRUQoKTsKLSAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbDo6a1Vua25v
d247Ci19Ci0KLUljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5IEdldFJ1bnRpbWVJY2VDYW5k
aWRhdGVQYWlyQWRkcmVzc0ZhbWlseSgKLSAgICBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25m
aWc6OkFkZHJlc3NGYW1pbHkgYWRkcmVzc19mYW1pbHkpIHsKLSAgc3dpdGNoIChhZGRyZXNzX2Zh
bWlseSkgewotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJUFY0Ogot
ICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5OjprSXB2NDsKLSAgICBj
YXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SVBWNjoKLSAgICAgIHJldHVybiBJ
Y2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6a0lwdjY7Ci0gICAgY2FzZSBydGNsb2c6Oklj
ZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fQUREUkVTU19GQU1JTFk6Ci0gICAgICByZXR1
cm4gSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHk6OmtVbmtub3duOwotICB9Ci0gIFJUQ19O
T1RSRUFDSEVEKCk7Ci0gIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6a1Vu
a25vd247Ci19Ci0KLUljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlIEdldFJ1bnRpbWVJY2VDYW5kaWRh
dGVOZXR3b3JrVHlwZSgKLSAgICBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6Ok5ldHdv
cmtUeXBlIG5ldHdvcmtfdHlwZSkgewotICBzd2l0Y2ggKG5ldHdvcmtfdHlwZSkgewotICAgIGNh
c2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpFVEhFUk5FVDoKLSAgICAgIHJldHVy
biBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a0V0aGVybmV0OwotICAgIGNhc2UgcnRjbG9nOjpJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpMT09QQkFDSzoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRh
dGVOZXR3b3JrVHlwZTo6a0xvb3BiYWNrOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnOjpXSUZJOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjpr
V2lmaTsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VlBOOgotICAg
ICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprVnBuOwotICAgIGNhc2UgcnRjbG9n
OjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpDRUxMVUxBUjoKLSAgICAgIHJldHVybiBJY2VDYW5k
aWRhdGVOZXR3b3JrVHlwZTo6a0NlbGx1bGFyOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnOjpVTktOT1dOX05FVFdPUktfVFlQRToKLSAgICAgIHJldHVybiBJY2VDYW5k
aWRhdGVOZXR3b3JrVHlwZTo6a1Vua25vd247Ci0gIH0KLSAgUlRDX05PVFJFQUNIRUQoKTsKLSAg
cmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprVW5rbm93bjsKLX0KLQotSWNlQ2FuZGlk
YXRlUGFpckV2ZW50VHlwZSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSgKLSAg
ICBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJFdmVudDo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlw
ZSB0eXBlKSB7Ci0gIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRh
dGVQYWlyRXZlbnQ6OkNIRUNLX1NFTlQ6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckV2
ZW50VHlwZTo6a0NoZWNrU2VudDsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckV2
ZW50OjpDSEVDS19SRUNFSVZFRDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRU
eXBlOjprQ2hlY2tSZWNlaXZlZDsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckV2
ZW50OjpDSEVDS19SRVNQT05TRV9TRU5UOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJF
dmVudFR5cGU6OmtDaGVja1Jlc3BvbnNlU2VudDsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlk
YXRlUGFpckV2ZW50OjpDSEVDS19SRVNQT05TRV9SRUNFSVZFRDoKLSAgICAgIHJldHVybiBJY2VD
YW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tSZXNwb25zZVJlY2VpdmVkOwotICB9Ci0gIFJU
Q19OT1RSRUFDSEVEKCk7Ci0gIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hl
Y2tTZW50OwotfQotCi1zdGQ6OnBhaXI8dWludDY0X3QsIGJvb2w+IFBhcnNlVmFySW50KHN0ZDo6
aXN0cmVhbSYgc3RyZWFtKSB7Ci0gIHVpbnQ2NF90IHZhcmludCA9IDA7Ci0gIGZvciAoc2l6ZV90
IGJ5dGVzX3JlYWQgPSAwOyBieXRlc19yZWFkIDwgMTA7ICsrYnl0ZXNfcmVhZCkgewotICAgIC8v
IFRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiBlYWNoIGJ5dGUgaXMgMCBpZiBpdCBpcyB0aGUg
bGFzdCBieXRlIGluCi0gICAgLy8gdGhlIHZhcmludCBhbmQgMSBvdGhlcndpc2UuIFRodXMsIHdl
IHRha2UgdGhlIDcgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cwotICAgIC8vIG9mIGVhY2ggYnl0ZSBh
bmQgc2hpZnQgdGhlbSA3IGJpdHMgZm9yIGVhY2ggYnl0ZSByZWFkIHByZXZpb3VzbHkgdG8gZ2V0
Ci0gICAgLy8gdGhlICh1bnNpZ25lZCkgaW50ZWdlci4KLSAgICBpbnQgYnl0ZSA9IHN0cmVhbS5n
ZXQoKTsKLSAgICBpZiAoc3RyZWFtLmVvZigpKSB7Ci0gICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIodmFyaW50LCBmYWxzZSk7Ci0gICAgfQotICAgIFJUQ19EQ0hFQ0tfR0UoYnl0ZSwgMCk7Ci0g
ICAgUlRDX0RDSEVDS19MRShieXRlLCAyNTUpOwotICAgIHZhcmludCB8PSBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oYnl0ZSAmIDB4N0YpIDw8ICg3ICogYnl0ZXNfcmVhZCk7Ci0gICAgaWYgKChieXRl
ICYgMHg4MCkgPT0gMCkgewotICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHZhcmludCwgdHJ1
ZSk7Ci0gICAgfQotICB9Ci0gIHJldHVybiBzdGQ6Om1ha2VfcGFpcih2YXJpbnQsIGZhbHNlKTsK
LX0KLQotdm9pZCBHZXRIZWFkZXJFeHRlbnNpb25zKHN0ZDo6dmVjdG9yPFJ0cEV4dGVuc2lvbj4q
IGhlYWRlcl9leHRlbnNpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlcGVh
dGVkUHRyRmllbGQ8cnRjbG9nOjpSdHBIZWFkZXJFeHRlbnNpb24+JgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm90b19oZWFkZXJfZXh0ZW5zaW9ucykgewotICBoZWFkZXJfZXh0ZW5z
aW9ucy0+Y2xlYXIoKTsKLSAgZm9yIChhdXRvJiBwIDogcHJvdG9faGVhZGVyX2V4dGVuc2lvbnMp
IHsKLSAgICBSVENfQ0hFQ0socC5oYXNfbmFtZSgpKTsKLSAgICBSVENfQ0hFQ0socC5oYXNfaWQo
KSk7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUgPSBwLm5hbWUoKTsKLSAgICBpbnQgaWQg
PSBwLmlkKCk7Ci0gICAgaGVhZGVyX2V4dGVuc2lvbnMtPnB1c2hfYmFjayhSdHBFeHRlbnNpb24o
bmFtZSwgaWQpKTsKLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotUGFyc2VkUnRjRXZlbnRM
b2c6OlBhcnNlZFJ0Y0V2ZW50TG9nKCkgPSBkZWZhdWx0OwotUGFyc2VkUnRjRXZlbnRMb2c6On5Q
YXJzZWRSdGNFdmVudExvZygpID0gZGVmYXVsdDsKLQotUGFyc2VkUnRjRXZlbnRMb2c6OkJ3ZVBy
b2JlUmVzdWx0RXZlbnQ6OkJ3ZVByb2JlUmVzdWx0RXZlbnQoKSA9IGRlZmF1bHQ7Ci1QYXJzZWRS
dGNFdmVudExvZzo6QndlUHJvYmVSZXN1bHRFdmVudDo6QndlUHJvYmVSZXN1bHRFdmVudCgKLSAg
ICBjb25zdCBCd2VQcm9iZVJlc3VsdEV2ZW50JikgPSBkZWZhdWx0OwotCi1ib29sIFBhcnNlZFJ0
Y0V2ZW50TG9nOjpQYXJzZUZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKSB7Ci0gIHN0
ZDo6aWZzdHJlYW0gZmlsZShmaWxlbmFtZSwgc3RkOjppb3NfYmFzZTo6aW4gfCBzdGQ6Omlvc19i
YXNlOjpiaW5hcnkpOwotICBpZiAoIWZpbGUuZ29vZCgpIHx8ICFmaWxlLmlzX29wZW4oKSkgewot
ICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNvdWxkIG5vdCBvcGVuIGZpbGUgZm9yIHJlYWRp
bmcuIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICByZXR1cm4gUGFyc2VTdHJlYW0oZmls
ZSk7Ci19Ci0KLWJvb2wgUGFyc2VkUnRjRXZlbnRMb2c6OlBhcnNlU3RyaW5nKGNvbnN0IHN0ZDo6
c3RyaW5nJiBzKSB7Ci0gIHN0ZDo6aXN0cmluZ3N0cmVhbSBzdHJlYW0ocywgc3RkOjppb3NfYmFz
ZTo6aW4gfCBzdGQ6Omlvc19iYXNlOjpiaW5hcnkpOwotICByZXR1cm4gUGFyc2VTdHJlYW0oc3Ry
ZWFtKTsKLX0KLQotYm9vbCBQYXJzZWRSdGNFdmVudExvZzo6UGFyc2VTdHJlYW0oc3RkOjppc3Ry
ZWFtJiBzdHJlYW0pIHsKLSAgZXZlbnRzXy5jbGVhcigpOwotICBjb25zdCBzaXplX3Qga01heEV2
ZW50U2l6ZSA9ICgxdSA8PCAxNikgLSAxOwotICBzdGQ6OnZlY3RvcjxjaGFyPiB0bXBfYnVmZmVy
KGtNYXhFdmVudFNpemUpOwotICB1aW50NjRfdCB0YWc7Ci0gIHVpbnQ2NF90IG1lc3NhZ2VfbGVu
Z3RoOwotICBib29sIHN1Y2Nlc3M7Ci0KLSAgUlRDX0RDSEVDSyhzdHJlYW0uZ29vZCgpKTsKLQot
ICB3aGlsZSAoMSkgewotICAgIC8vIENoZWNrIHdoZXRoZXIgd2UgaGF2ZSByZWFjaGVkIGVuZCBv
ZiBmaWxlLgotICAgIHN0cmVhbS5wZWVrKCk7Ci0gICAgaWYgKHN0cmVhbS5lb2YoKSkgewotICAg
ICAgLy8gUHJvY2VzcyBhbGwgZXh0ZW5zaW9ucyBtYXBzIGZvciBmYXN0ZXIgbG9vay11cCBsYXRl
ci4KLSAgICAgIGZvciAoYXV0byYgZXZlbnRfc3RyZWFtIDogc3RyZWFtc18pIHsKLSAgICAgICAg
cnRwX2V4dGVuc2lvbnNfbWFwc19bU3RyZWFtSWQoZXZlbnRfc3RyZWFtLnNzcmMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3N0cmVhbS5kaXJlY3Rpb24pXSA9
Ci0gICAgICAgICAgICAmZXZlbnRfc3RyZWFtLnJ0cF9leHRlbnNpb25zX21hcDsKLSAgICAgIH0K
LSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIFJlYWQgdGhlIG5leHQgbWVzc2Fn
ZSB0YWcuIFRoZSB0YWcgbnVtYmVyIGlzIGRlZmluZWQgYXMKLSAgICAvLyAoZmllbGRudW1iZXIg
PDwgMykgfCB3aXJlX3R5cGUuIEluIG91ciBjYXNlLCB0aGUgZmllbGQgbnVtYmVyIGlzCi0gICAg
Ly8gc3VwcG9zZWQgdG8gYmUgMSBhbmQgdGhlIHdpcmUgdHlwZSBmb3IgYW4KLSAgICAvLyBsZW5n
dGgtZGVsaW1pdGVkIGZpZWxkIGlzIDIuCi0gICAgY29uc3QgdWludDY0X3Qga0V4cGVjdGVkVGFn
ID0gKDEgPDwgMykgfCAyOwotICAgIHN0ZDo6dGllKHRhZywgc3VjY2VzcykgPSBQYXJzZVZhcklu
dChzdHJlYW0pOwotICAgIGlmICghc3VjY2VzcykgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5H
KQotICAgICAgICAgIDw8ICJNaXNzaW5nIGZpZWxkIHRhZyBmcm9tIGJlZ2lubmluZyBvZiBwcm90
b2J1ZiBldmVudC4iOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSBpZiAodGFnICE9
IGtFeHBlY3RlZFRhZykgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQotICAgICAgICAgIDw8
ICJVbmV4cGVjdGVkIGZpZWxkIHRhZyBhdCBiZWdpbm5pbmcgb2YgcHJvdG9idWYgZXZlbnQuIjsK
LSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBSZWFkIHRoZSBsZW5ndGggZmll
bGQuCi0gICAgc3RkOjp0aWUobWVzc2FnZV9sZW5ndGgsIHN1Y2Nlc3MpID0gUGFyc2VWYXJJbnQo
c3RyZWFtKTsKLSAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIk1pc3NpbmcgbWVzc2FnZSBsZW5ndGggYWZ0ZXIgcHJvdG9idWYgZmllbGQgdGFnLiI7Ci0g
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChtZXNzYWdlX2xlbmd0aCA+IGtNYXhF
dmVudFNpemUpIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlByb3RvYnVmIG1lc3Nh
Z2UgbGVuZ3RoIGlzIHRvbyBsYXJnZS4iOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIC8vIFJlYWQgdGhlIG5leHQgcHJvdG9idWYgZXZlbnQgdG8gYSB0ZW1wb3JhcnkgY2hhciBi
dWZmZXIuCi0gICAgc3RyZWFtLnJlYWQodG1wX2J1ZmZlci5kYXRhKCksIG1lc3NhZ2VfbGVuZ3Ro
KTsKLSAgICBpZiAoc3RyZWFtLmdjb3VudCgpICE9IHN0YXRpY19jYXN0PGludD4obWVzc2FnZV9s
ZW5ndGgpKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcmVhZCBw
cm90b2J1ZiBtZXNzYWdlIGZyb20gZmlsZS4iOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIC8vIFBhcnNlIHRoZSBwcm90b2J1ZiBldmVudCBmcm9tIHRoZSBidWZmZXIuCi0gICAg
cnRjbG9nOjpFdmVudCBldmVudDsKLSAgICBpZiAoIWV2ZW50LlBhcnNlRnJvbUFycmF5KHRtcF9i
dWZmZXIuZGF0YSgpLCBtZXNzYWdlX2xlbmd0aCkpIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklO
RykgPDwgIkZhaWxlZCB0byBwYXJzZSBwcm90b2J1ZiBtZXNzYWdlLiI7Ci0gICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgRXZlbnRUeXBlIHR5cGUgPSBHZXRSdW50aW1lRXZlbnRUeXBl
KGV2ZW50LnR5cGUoKSk7Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICBjYXNlIFZJREVPX1JF
Q0VJVkVSX0NPTkZJR19FVkVOVDogewotICAgICAgICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25m
aWcgPSBHZXRWaWRlb1JlY2VpdmVDb25maWcoZXZlbnQpOwotICAgICAgICBzdHJlYW1zXy5lbXBs
YWNlX2JhY2soY29uZmlnLnJlbW90ZV9zc3JjLCBNZWRpYVR5cGU6OlZJREVPLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga0luY29taW5nUGFja2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucykp
OwotICAgICAgICBzdHJlYW1zXy5lbXBsYWNlX2JhY2soY29uZmlnLmxvY2FsX3NzcmMsIE1lZGlh
VHlwZTo6VklERU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrT3V0Z29pbmdQYWNr
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAo
Y29uZmlnLnJ0cF9leHRlbnNpb25zKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAg
Y2FzZSBWSURFT19TRU5ERVJfQ09ORklHX0VWRU5UOiB7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHJ0
Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWdzID0gR2V0VmlkZW9TZW5kQ29uZmlnKGV2ZW50KTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb25maWdzLnNpemUoKTsgaSsrKSB7Ci0g
ICAgICAgICAgc3RyZWFtc18uZW1wbGFjZV9iYWNrKAotICAgICAgICAgICAgICBjb25maWdzW2ld
LmxvY2FsX3NzcmMsIE1lZGlhVHlwZTo6VklERU8sIGtPdXRnb2luZ1BhY2tldCwKLSAgICAgICAg
ICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZ3NbaV0ucnRwX2V4dGVuc2lvbnMpKTsK
LQotICAgICAgICAgIHN0cmVhbXNfLmVtcGxhY2VfYmFjaygKLSAgICAgICAgICAgICAgY29uZmln
c1tpXS5ydHhfc3NyYywgTWVkaWFUeXBlOjpWSURFTywga091dGdvaW5nUGFja2V0LAotICAgICAg
ICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnc1tpXS5ydHBfZXh0ZW5zaW9ucykp
OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgY2FzZSBBVURJT19S
RUNFSVZFUl9DT05GSUdfRVZFTlQ6IHsKLSAgICAgICAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29u
ZmlnID0gR2V0QXVkaW9SZWNlaXZlQ29uZmlnKGV2ZW50KTsKLSAgICAgICAgc3RyZWFtc18uZW1w
bGFjZV9iYWNrKGNvbmZpZy5yZW1vdGVfc3NyYywgTWVkaWFUeXBlOjpBVURJTywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtJbmNvbWluZ1BhY2tldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4dGVuc2lvbnMp
KTsKLSAgICAgICAgc3RyZWFtc18uZW1wbGFjZV9iYWNrKGNvbmZpZy5sb2NhbF9zc3JjLCBNZWRp
YVR5cGU6OkFVRElPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga091dGdvaW5nUGFj
a2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFw
KGNvbmZpZy5ydHBfZXh0ZW5zaW9ucykpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAg
IGNhc2UgQVVESU9fU0VOREVSX0NPTkZJR19FVkVOVDogewotICAgICAgICBydGNsb2c6OlN0cmVh
bUNvbmZpZyBjb25maWcgPSBHZXRBdWRpb1NlbmRDb25maWcoZXZlbnQpOwotICAgICAgICBzdHJl
YW1zXy5lbXBsYWNlX2JhY2soY29uZmlnLmxvY2FsX3NzcmMsIE1lZGlhVHlwZTo6QVVESU8sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrT3V0Z29pbmdQYWNrZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRl
bnNpb25zKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZXZlbnRzXy5wdXNoX2JhY2soZXZlbnQpOwotICB9Ci19
Ci0KLXNpemVfdCBQYXJzZWRSdGNFdmVudExvZzo6R2V0TnVtYmVyT2ZFdmVudHMoKSBjb25zdCB7
Ci0gIHJldHVybiBldmVudHNfLnNpemUoKTsKLX0KLQotaW50NjRfdCBQYXJzZWRSdGNFdmVudExv
Zzo6R2V0VGltZXN0YW1wKHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5k
ZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9
IGV2ZW50c19baW5kZXhdOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3RpbWVzdGFtcF91cygpKTsK
LSAgcmV0dXJuIGV2ZW50LnRpbWVzdGFtcF91cygpOwotfQotCi1QYXJzZWRSdGNFdmVudExvZzo6
RXZlbnRUeXBlIFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRFdmVudFR5cGUoCi0gICAgc2l6ZV90IGlu
ZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7
Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19D
SEVDSyhldmVudC5oYXNfdHlwZSgpKTsKLSAgcmV0dXJuIEdldFJ1bnRpbWVFdmVudFR5cGUoZXZl
bnQudHlwZSgpKTsKLX0KLQotLy8gVGhlIGhlYWRlciBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxl
YXN0IElQX1BBQ0tFVF9TSVpFIGJ5dGVzLgotd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAq
IFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRSdHBIZWFkZXIoCi0gICAgc2l6ZV90IGluZGV4LAotICAg
IFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcsCi0gICAgdWludDhfdCogaGVhZGVyLAotICAgIHNp
emVfdCogaGVhZGVyX2xlbmd0aCwKLSAgICBzaXplX3QqIHRvdGFsX2xlbmd0aCwKLSAgICBpbnQq
IHByb2JlX2NsdXN0ZXJfaWQpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1i
ZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2lu
ZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZl
bnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpSVFBfRVZFTlQpOwotICBSVENfQ0hFQ0soZXZlbnQu
aGFzX3J0cF9wYWNrZXQoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6UnRwUGFja2V0JiBydHBfcGFja2V0
ID0gZXZlbnQucnRwX3BhY2tldCgpOwotICAvLyBHZXQgZGlyZWN0aW9uIG9mIHBhY2tldC4KLSAg
UlRDX0NIRUNLKHJ0cF9wYWNrZXQuaGFzX2luY29taW5nKCkpOwotICBpZiAoaW5jb21pbmcgIT0g
bnVsbHB0cikgewotICAgICppbmNvbWluZyA9IHJ0cF9wYWNrZXQuaW5jb21pbmcoKSA/IGtJbmNv
bWluZ1BhY2tldCA6IGtPdXRnb2luZ1BhY2tldDsKLSAgfQotICAvLyBHZXQgcGFja2V0IGxlbmd0
aC4KLSAgUlRDX0NIRUNLKHJ0cF9wYWNrZXQuaGFzX3BhY2tldF9sZW5ndGgoKSk7Ci0gIGlmICh0
b3RhbF9sZW5ndGggIT0gbnVsbHB0cikgewotICAgICp0b3RhbF9sZW5ndGggPSBydHBfcGFja2V0
LnBhY2tldF9sZW5ndGgoKTsKLSAgfQotICAvLyBHZXQgaGVhZGVyIGxlbmd0aC4KLSAgUlRDX0NI
RUNLKHJ0cF9wYWNrZXQuaGFzX2hlYWRlcigpKTsKLSAgaWYgKGhlYWRlcl9sZW5ndGggIT0gbnVs
bHB0cikgewotICAgICpoZWFkZXJfbGVuZ3RoID0gcnRwX3BhY2tldC5oZWFkZXIoKS5zaXplKCk7
Ci0gIH0KLSAgLy8gR2V0IGhlYWRlciBjb250ZW50cy4KLSAgaWYgKGhlYWRlciAhPSBudWxscHRy
KSB7Ci0gICAgY29uc3Qgc2l6ZV90IGtNaW5SdHBIZWFkZXJTaXplID0gMTI7Ci0gICAgUlRDX0NI
RUNLX0dFKHJ0cF9wYWNrZXQuaGVhZGVyKCkuc2l6ZSgpLCBrTWluUnRwSGVhZGVyU2l6ZSk7Ci0g
ICAgUlRDX0NIRUNLX0xFKHJ0cF9wYWNrZXQuaGVhZGVyKCkuc2l6ZSgpLAotICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KElQX1BBQ0tFVF9TSVpFKSk7Ci0gICAgbWVtY3B5KGhl
YWRlciwgcnRwX3BhY2tldC5oZWFkZXIoKS5kYXRhKCksIHJ0cF9wYWNrZXQuaGVhZGVyKCkuc2l6
ZSgpKTsKLSAgICB1aW50MzJfdCBzc3JjID0gQnl0ZVJlYWRlcjx1aW50MzJfdD46OlJlYWRCaWdF
bmRpYW4oaGVhZGVyICsgOCk7Ci0gICAgU3RyZWFtSWQgc3RyZWFtX2lkKAotICAgICAgICBzc3Jj
LCBydHBfcGFja2V0LmluY29taW5nKCkgPyBrSW5jb21pbmdQYWNrZXQgOiBrT3V0Z29pbmdQYWNr
ZXQpOwotICAgIGF1dG8gaXQgPSBydHBfZXh0ZW5zaW9uc19tYXBzXy5maW5kKHN0cmVhbV9pZCk7
Ci0gICAgaWYgKGl0ICE9IHJ0cF9leHRlbnNpb25zX21hcHNfLmVuZCgpKSB7Ci0gICAgICByZXR1
cm4gaXQtPnNlY29uZDsKLSAgICB9Ci0gIH0KLSAgaWYgKHByb2JlX2NsdXN0ZXJfaWQgIT0gbnVs
bHB0cikgewotICAgIGlmIChydHBfcGFja2V0Lmhhc19wcm9iZV9jbHVzdGVyX2lkKCkpIHsKLSAg
ICAgICpwcm9iZV9jbHVzdGVyX2lkID0gcnRwX3BhY2tldC5wcm9iZV9jbHVzdGVyX2lkKCk7Ci0g
ICAgICBSVENfQ0hFQ0tfTkUoKnByb2JlX2NsdXN0ZXJfaWQsIFBhY2VkUGFja2V0SW5mbzo6a05v
dEFQcm9iZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICpwcm9iZV9jbHVzdGVyX2lkID0gUGFjZWRQ
YWNrZXRJbmZvOjprTm90QVByb2JlOwotICAgIH0KLSAgfQotICByZXR1cm4gbnVsbHB0cjsKLX0K
LQotLy8gVGhlIHBhY2tldCBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxlYXN0IElQX1BBQ0tFVF9T
SVpFIGJ5dGVzLgotdm9pZCBQYXJzZWRSdGNFdmVudExvZzo6R2V0UnRjcFBhY2tldChzaXplX3Qg
aW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tldERpcmVj
dGlvbiogaW5jb21pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90KiBsZW5ndGgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2
ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsK
LSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlw
ZSgpLCBydGNsb2c6OkV2ZW50OjpSVENQX0VWRU5UKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19y
dGNwX3BhY2tldCgpKTsKLSAgY29uc3QgcnRjbG9nOjpSdGNwUGFja2V0JiBydGNwX3BhY2tldCA9
IGV2ZW50LnJ0Y3BfcGFja2V0KCk7Ci0gIC8vIEdldCBkaXJlY3Rpb24gb2YgcGFja2V0LgotICBS
VENfQ0hFQ0socnRjcF9wYWNrZXQuaGFzX2luY29taW5nKCkpOwotICBpZiAoaW5jb21pbmcgIT0g
bnVsbHB0cikgewotICAgICppbmNvbWluZyA9IHJ0Y3BfcGFja2V0LmluY29taW5nKCkgPyBrSW5j
b21pbmdQYWNrZXQgOiBrT3V0Z29pbmdQYWNrZXQ7Ci0gIH0KLSAgLy8gR2V0IHBhY2tldCBsZW5n
dGguCi0gIFJUQ19DSEVDSyhydGNwX3BhY2tldC5oYXNfcGFja2V0X2RhdGEoKSk7Ci0gIGlmIChs
ZW5ndGggIT0gbnVsbHB0cikgewotICAgICpsZW5ndGggPSBydGNwX3BhY2tldC5wYWNrZXRfZGF0
YSgpLnNpemUoKTsKLSAgfQotICAvLyBHZXQgcGFja2V0IGNvbnRlbnRzLgotICBpZiAocGFja2V0
ICE9IG51bGxwdHIpIHsKLSAgICBSVENfQ0hFQ0tfTEUocnRjcF9wYWNrZXQucGFja2V0X2RhdGEo
KS5zaXplKCksCi0gICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihJUF9QQUNL
RVRfU0laRSkpOwotICAgIG1lbWNweShwYWNrZXQsIHJ0Y3BfcGFja2V0LnBhY2tldF9kYXRhKCku
ZGF0YSgpLAotICAgICAgICAgICBydGNwX3BhY2tldC5wYWNrZXRfZGF0YSgpLnNpemUoKSk7Ci0g
IH0KLX0KLQotcnRjbG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRMb2c6OkdldFZpZGVv
UmVjZWl2ZUNvbmZpZygKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xU
KGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgcmV0dXJuIEdldFZpZGVvUmVjZWl2ZUNv
bmZpZyhldmVudHNfW2luZGV4XSk7Ci19Ci0KLXJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNlZFJ0
Y0V2ZW50TG9nOjpHZXRWaWRlb1JlY2VpdmVDb25maWcoCi0gICAgY29uc3QgcnRjbG9nOjpFdmVu
dCYgZXZlbnQpIGNvbnN0IHsKLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOwotICBSVENf
Q0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShldmVudC50eXBlKCksIHJ0
Y2xvZzo6RXZlbnQ6OlZJREVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCk7Ci0gIFJUQ19DSEVDSyhl
dmVudC5oYXNfdmlkZW9fcmVjZWl2ZXJfY29uZmlnKCkpOwotICBjb25zdCBydGNsb2c6OlZpZGVv
UmVjZWl2ZUNvbmZpZyYgcmVjZWl2ZXJfY29uZmlnID0KLSAgICAgIGV2ZW50LnZpZGVvX3JlY2Vp
dmVyX2NvbmZpZygpOwotICAvLyBHZXQgU1NSQ3MuCi0gIFJUQ19DSEVDSyhyZWNlaXZlcl9jb25m
aWcuaGFzX3JlbW90ZV9zc3JjKCkpOwotICBjb25maWcucmVtb3RlX3NzcmMgPSByZWNlaXZlcl9j
b25maWcucmVtb3RlX3NzcmMoKTsKLSAgUlRDX0NIRUNLKHJlY2VpdmVyX2NvbmZpZy5oYXNfbG9j
YWxfc3NyYygpKTsKLSAgY29uZmlnLmxvY2FsX3NzcmMgPSByZWNlaXZlcl9jb25maWcubG9jYWxf
c3NyYygpOwotICBjb25maWcucnR4X3NzcmMgPSAwOwotICAvLyBHZXQgUlRDUCBzZXR0aW5ncy4K
LSAgUlRDX0NIRUNLKHJlY2VpdmVyX2NvbmZpZy5oYXNfcnRjcF9tb2RlKCkpOwotICBjb25maWcu
cnRjcF9tb2RlID0gR2V0UnVudGltZVJ0Y3BNb2RlKHJlY2VpdmVyX2NvbmZpZy5ydGNwX21vZGUo
KSk7Ci0gIFJUQ19DSEVDSyhyZWNlaXZlcl9jb25maWcuaGFzX3JlbWIoKSk7Ci0gIGNvbmZpZy5y
ZW1iID0gcmVjZWl2ZXJfY29uZmlnLnJlbWIoKTsKLQotICAvLyBHZXQgUlRYIG1hcC4KLSAgc3Rk
OjptYXA8dWludDMyX3QsIGNvbnN0IHJ0Y2xvZzo6UnR4Q29uZmlnPiBydHhfbWFwOwotICBmb3Ig
KGludCBpID0gMDsgaSA8IHJlY2VpdmVyX2NvbmZpZy5ydHhfbWFwX3NpemUoKTsgaSsrKSB7Ci0g
ICAgY29uc3QgcnRjbG9nOjpSdHhNYXAmIG1hcCA9IHJlY2VpdmVyX2NvbmZpZy5ydHhfbWFwKGkp
OwotICAgIFJUQ19DSEVDSyhtYXAuaGFzX3BheWxvYWRfdHlwZSgpKTsKLSAgICBSVENfQ0hFQ0so
bWFwLmhhc19jb25maWcoKSk7Ci0gICAgUlRDX0NIRUNLKG1hcC5jb25maWcoKS5oYXNfcnR4X3Nz
cmMoKSk7Ci0gICAgUlRDX0NIRUNLKG1hcC5jb25maWcoKS5oYXNfcnR4X3BheWxvYWRfdHlwZSgp
KTsKLSAgICBydHhfbWFwLmluc2VydChzdGQ6Om1ha2VfcGFpcihtYXAucGF5bG9hZF90eXBlKCks
IG1hcC5jb25maWcoKSkpOwotICB9Ci0KLSAgLy8gR2V0IGhlYWRlciBleHRlbnNpb25zLgotICBH
ZXRIZWFkZXJFeHRlbnNpb25zKCZjb25maWcucnRwX2V4dGVuc2lvbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgcmVjZWl2ZXJfY29uZmlnLmhlYWRlcl9leHRlbnNpb25zKCkpOwotICAvLyBHZXQg
ZGVjb2RlcnMuCi0gIGNvbmZpZy5jb2RlY3MuY2xlYXIoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkg
PCByZWNlaXZlcl9jb25maWcuZGVjb2RlcnNfc2l6ZSgpOyBpKyspIHsKLSAgICBSVENfQ0hFQ0so
cmVjZWl2ZXJfY29uZmlnLmRlY29kZXJzKGkpLmhhc19uYW1lKCkpOwotICAgIFJUQ19DSEVDSyhy
ZWNlaXZlcl9jb25maWcuZGVjb2RlcnMoaSkuaGFzX3BheWxvYWRfdHlwZSgpKTsKLSAgICBpbnQg
cnR4X3BheWxvYWRfdHlwZSA9IDA7Ci0gICAgYXV0byBydHhfaXQgPSBydHhfbWFwLmZpbmQocmVj
ZWl2ZXJfY29uZmlnLmRlY29kZXJzKGkpLnBheWxvYWRfdHlwZSgpKTsKLSAgICBpZiAocnR4X2l0
ICE9IHJ0eF9tYXAuZW5kKCkpIHsKLSAgICAgIHJ0eF9wYXlsb2FkX3R5cGUgPSBydHhfaXQtPnNl
Y29uZC5ydHhfcGF5bG9hZF90eXBlKCk7Ci0gICAgICBpZiAoY29uZmlnLnJ0eF9zc3JjICE9IDAg
JiYKLSAgICAgICAgICBjb25maWcucnR4X3NzcmMgIT0gcnR4X2l0LT5zZWNvbmQucnR4X3NzcmMo
KSkgewotICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAgICAgICA8PCAiUnRjRXZl
bnRMb2cgcHJvdG9idWYgY29udGFpbmVkIGRpZmZlcmVudCBTU1JDcyBmb3IgIgotICAgICAgICAg
ICAgICAgImRpZmZlcmVudCByZWNlaXZlZCBSVFggcGF5bG9hZCB0eXBlcy4gV2lsbCBvbmx5IHVz
ZSAiCi0gICAgICAgICAgICAgICAicnR4X3NzcmMgPSAiCi0gICAgICAgICAgICA8PCBjb25maWcu
cnR4X3NzcmMgPDwgIi4iOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgY29uZmlnLnJ0eF9zc3Jj
ID0gcnR4X2l0LT5zZWNvbmQucnR4X3NzcmMoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY29uZmln
LmNvZGVjcy5lbXBsYWNlX2JhY2socmVjZWl2ZXJfY29uZmlnLmRlY29kZXJzKGkpLm5hbWUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcl9jb25maWcuZGVjb2RlcnMo
aSkucGF5bG9hZF90eXBlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnR4X3Bh
eWxvYWRfdHlwZSk7Ci0gIH0KLSAgcmV0dXJuIGNvbmZpZzsKLX0KLQotc3RkOjp2ZWN0b3I8cnRj
bG9nOjpTdHJlYW1Db25maWc+IFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRWaWRlb1NlbmRDb25maWco
Ci0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVt
YmVyT2ZFdmVudHMoKSk7Ci0gIHJldHVybiBHZXRWaWRlb1NlbmRDb25maWcoZXZlbnRzX1tpbmRl
eF0pOwotfQotCi1zdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gUGFyc2VkUnRjRXZl
bnRMb2c6OkdldFZpZGVvU2VuZENvbmZpZygKLSAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVu
dCkgY29uc3QgewotICBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmlnczsK
LSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlw
ZSgpLCBydGNsb2c6OkV2ZW50OjpWSURFT19TRU5ERVJfQ09ORklHX0VWRU5UKTsKLSAgUlRDX0NI
RUNLKGV2ZW50Lmhhc192aWRlb19zZW5kZXJfY29uZmlnKCkpOwotICBjb25zdCBydGNsb2c6OlZp
ZGVvU2VuZENvbmZpZyYgc2VuZGVyX2NvbmZpZyA9IGV2ZW50LnZpZGVvX3NlbmRlcl9jb25maWco
KTsKLSAgaWYgKHNlbmRlcl9jb25maWcucnR4X3NzcmNzX3NpemUoKSA+IDAgJiYKLSAgICAgIHNl
bmRlcl9jb25maWcuc3NyY3Nfc2l6ZSgpICE9IHNlbmRlcl9jb25maWcucnR4X3NzcmNzX3NpemUo
KSkgewotICAgIFJUQ19MT0coV0FSTklORykKLSAgICAgICAgPDwgIlZpZGVvU2VuZENvbmZpZyBp
cyBjb25maWd1cmVkIGZvciBSVFggYnV0IHRoZSBudW1iZXIgb2YgIgotICAgICAgICAgICAiU1NS
Q3MgZG9lc24ndCBtYXRjaCB0aGUgbnVtYmVyIG9mIFJUWCBTU1JDcy4iOwotICB9Ci0gIGNvbmZp
Z3MucmVzaXplKHNlbmRlcl9jb25maWcuc3NyY3Nfc2l6ZSgpKTsKLSAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzZW5kZXJfY29uZmlnLnNzcmNzX3NpemUoKTsgaSsrKSB7Ci0gICAgLy8gR2V0IFNTUkNz
LgotICAgIGNvbmZpZ3NbaV0ubG9jYWxfc3NyYyA9IHNlbmRlcl9jb25maWcuc3NyY3MoaSk7Ci0g
ICAgaWYgKHNlbmRlcl9jb25maWcucnR4X3NzcmNzX3NpemUoKSA+IDAgJiYKLSAgICAgICAgaSA8
IHNlbmRlcl9jb25maWcucnR4X3NzcmNzX3NpemUoKSkgewotICAgICAgUlRDX0NIRUNLKHNlbmRl
cl9jb25maWcuaGFzX3J0eF9wYXlsb2FkX3R5cGUoKSk7Ci0gICAgICBjb25maWdzW2ldLnJ0eF9z
c3JjID0gc2VuZGVyX2NvbmZpZy5ydHhfc3NyY3MoaSk7Ci0gICAgfQotICAgIC8vIEdldCBoZWFk
ZXIgZXh0ZW5zaW9ucy4KLSAgICBHZXRIZWFkZXJFeHRlbnNpb25zKCZjb25maWdzW2ldLnJ0cF9l
eHRlbnNpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VuZGVyX2NvbmZpZy5oZWFkZXJf
ZXh0ZW5zaW9ucygpKTsKLQotICAgIC8vIEdldCB0aGUgY29kZWMuCi0gICAgUlRDX0NIRUNLKHNl
bmRlcl9jb25maWcuaGFzX2VuY29kZXIoKSk7Ci0gICAgUlRDX0NIRUNLKHNlbmRlcl9jb25maWcu
ZW5jb2RlcigpLmhhc19uYW1lKCkpOwotICAgIFJUQ19DSEVDSyhzZW5kZXJfY29uZmlnLmVuY29k
ZXIoKS5oYXNfcGF5bG9hZF90eXBlKCkpOwotICAgIGNvbmZpZ3NbaV0uY29kZWNzLmVtcGxhY2Vf
YmFjaygKLSAgICAgICAgc2VuZGVyX2NvbmZpZy5lbmNvZGVyKCkubmFtZSgpLCBzZW5kZXJfY29u
ZmlnLmVuY29kZXIoKS5wYXlsb2FkX3R5cGUoKSwKLSAgICAgICAgc2VuZGVyX2NvbmZpZy5oYXNf
cnR4X3BheWxvYWRfdHlwZSgpID8gc2VuZGVyX2NvbmZpZy5ydHhfcGF5bG9hZF90eXBlKCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMCk7Ci0gIH0KLSAg
cmV0dXJuIGNvbmZpZ3M7Ci19Ci0KLXJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50
TG9nOjpHZXRBdWRpb1JlY2VpdmVDb25maWcoCi0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0g
IFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIHJldHVybiBHZXRB
dWRpb1JlY2VpdmVDb25maWcoZXZlbnRzX1tpbmRleF0pOwotfQotCi1ydGNsb2c6OlN0cmVhbUNv
bmZpZyBQYXJzZWRSdGNFdmVudExvZzo6R2V0QXVkaW9SZWNlaXZlQ29uZmlnKAotICAgIGNvbnN0
IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7Ci0gIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNv
bmZpZzsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZl
bnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQpOwot
ICBSVENfQ0hFQ0soZXZlbnQuaGFzX2F1ZGlvX3JlY2VpdmVyX2NvbmZpZygpKTsKLSAgY29uc3Qg
cnRjbG9nOjpBdWRpb1JlY2VpdmVDb25maWcmIHJlY2VpdmVyX2NvbmZpZyA9Ci0gICAgICBldmVu
dC5hdWRpb19yZWNlaXZlcl9jb25maWcoKTsKLSAgLy8gR2V0IFNTUkNzLgotICBSVENfQ0hFQ0so
cmVjZWl2ZXJfY29uZmlnLmhhc19yZW1vdGVfc3NyYygpKTsKLSAgY29uZmlnLnJlbW90ZV9zc3Jj
ID0gcmVjZWl2ZXJfY29uZmlnLnJlbW90ZV9zc3JjKCk7Ci0gIFJUQ19DSEVDSyhyZWNlaXZlcl9j
b25maWcuaGFzX2xvY2FsX3NzcmMoKSk7Ci0gIGNvbmZpZy5sb2NhbF9zc3JjID0gcmVjZWl2ZXJf
Y29uZmlnLmxvY2FsX3NzcmMoKTsKLSAgLy8gR2V0IGhlYWRlciBleHRlbnNpb25zLgotICBHZXRI
ZWFkZXJFeHRlbnNpb25zKCZjb25maWcucnRwX2V4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAg
ICAgICAgcmVjZWl2ZXJfY29uZmlnLmhlYWRlcl9leHRlbnNpb25zKCkpOwotICByZXR1cm4gY29u
ZmlnOwotfQotCi1ydGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZzo6R2V0QXVk
aW9TZW5kQ29uZmlnKHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgs
IEdldE51bWJlck9mRXZlbnRzKCkpOwotICByZXR1cm4gR2V0QXVkaW9TZW5kQ29uZmlnKGV2ZW50
c19baW5kZXhdKTsKLX0KLQotcnRjbG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRMb2c6
OkdldEF1ZGlvU2VuZENvbmZpZygKLSAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29u
c3QgewotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7Ci0gIFJUQ19DSEVDSyhldmVudC5o
YXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VRKGV2ZW50LnR5cGUoKSwgcnRjbG9nOjpFdmVudDo6
QVVESU9fU0VOREVSX0NPTkZJR19FVkVOVCk7Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfYXVkaW9f
c2VuZGVyX2NvbmZpZygpKTsKLSAgY29uc3QgcnRjbG9nOjpBdWRpb1NlbmRDb25maWcmIHNlbmRl
cl9jb25maWcgPSBldmVudC5hdWRpb19zZW5kZXJfY29uZmlnKCk7Ci0gIC8vIEdldCBTU1JDcy4K
LSAgUlRDX0NIRUNLKHNlbmRlcl9jb25maWcuaGFzX3NzcmMoKSk7Ci0gIGNvbmZpZy5sb2NhbF9z
c3JjID0gc2VuZGVyX2NvbmZpZy5zc3JjKCk7Ci0gIC8vIEdldCBoZWFkZXIgZXh0ZW5zaW9ucy4K
LSAgR2V0SGVhZGVyRXh0ZW5zaW9ucygmY29uZmlnLnJ0cF9leHRlbnNpb25zLAotICAgICAgICAg
ICAgICAgICAgICAgIHNlbmRlcl9jb25maWcuaGVhZGVyX2V4dGVuc2lvbnMoKSk7Ci0gIHJldHVy
biBjb25maWc7Ci19Ci0KLXZvaWQgUGFyc2VkUnRjRXZlbnRMb2c6OkdldEF1ZGlvUGxheW91dChz
aXplX3QgaW5kZXgsIHVpbnQzMl90KiBzc3JjKSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRl
eCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0g
ZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NI
RUNLX0VRKGV2ZW50LnR5cGUoKSwgcnRjbG9nOjpFdmVudDo6QVVESU9fUExBWU9VVF9FVkVOVCk7
Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfYXVkaW9fcGxheW91dF9ldmVudCgpKTsKLSAgY29uc3Qg
cnRjbG9nOjpBdWRpb1BsYXlvdXRFdmVudCYgbG9zc19ldmVudCA9IGV2ZW50LmF1ZGlvX3BsYXlv
dXRfZXZlbnQoKTsKLSAgUlRDX0NIRUNLKGxvc3NfZXZlbnQuaGFzX2xvY2FsX3NzcmMoKSk7Ci0g
IGlmIChzc3JjICE9IG51bGxwdHIpIHsKLSAgICAqc3NyYyA9IGxvc3NfZXZlbnQubG9jYWxfc3Ny
YygpOwotICB9Ci19Ci0KLXZvaWQgUGFyc2VkUnRjRXZlbnRMb2c6OkdldExvc3NCYXNlZEJ3ZVVw
ZGF0ZShzaXplX3QgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCogYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogZnJhY3Rpb25fbG9zcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiB0b3RhbF9wYWNrZXRz
KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0g
IGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19DSEVD
SyhldmVudC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VRKGV2ZW50LnR5cGUoKSwgcnRjbG9n
OjpFdmVudDo6TE9TU19CQVNFRF9CV0VfVVBEQVRFKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19s
b3NzX2Jhc2VkX2J3ZV91cGRhdGUoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6TG9zc0Jhc2VkQndlVXBk
YXRlJiBsb3NzX2V2ZW50ID0gZXZlbnQubG9zc19iYXNlZF9id2VfdXBkYXRlKCk7Ci0gIFJUQ19D
SEVDSyhsb3NzX2V2ZW50Lmhhc19iaXRyYXRlX2JwcygpKTsKLSAgaWYgKGJpdHJhdGVfYnBzICE9
IG51bGxwdHIpIHsKLSAgICAqYml0cmF0ZV9icHMgPSBsb3NzX2V2ZW50LmJpdHJhdGVfYnBzKCk7
Ci0gIH0KLSAgUlRDX0NIRUNLKGxvc3NfZXZlbnQuaGFzX2ZyYWN0aW9uX2xvc3MoKSk7Ci0gIGlm
IChmcmFjdGlvbl9sb3NzICE9IG51bGxwdHIpIHsKLSAgICAqZnJhY3Rpb25fbG9zcyA9IGxvc3Nf
ZXZlbnQuZnJhY3Rpb25fbG9zcygpOwotICB9Ci0gIFJUQ19DSEVDSyhsb3NzX2V2ZW50Lmhhc190
b3RhbF9wYWNrZXRzKCkpOwotICBpZiAodG90YWxfcGFja2V0cyAhPSBudWxscHRyKSB7Ci0gICAg
KnRvdGFsX3BhY2tldHMgPSBsb3NzX2V2ZW50LnRvdGFsX3BhY2tldHMoKTsKLSAgfQotfQotCi1Q
YXJzZWRSdGNFdmVudExvZzo6QndlRGVsYXlCYXNlZFVwZGF0ZQotUGFyc2VkUnRjRXZlbnRMb2c6
OkdldERlbGF5QmFzZWRCd2VVcGRhdGUoc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVD
S19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQm
IGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsK
LSAgUlRDX0NIRUNLX0VRKGV2ZW50LnR5cGUoKSwgcnRjbG9nOjpFdmVudDo6REVMQVlfQkFTRURf
QldFX1VQREFURSk7Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfZGVsYXlfYmFzZWRfYndlX3VwZGF0
ZSgpKTsKLSAgY29uc3QgcnRjbG9nOjpEZWxheUJhc2VkQndlVXBkYXRlJiBkZWxheV9ldmVudCA9
Ci0gICAgICBldmVudC5kZWxheV9iYXNlZF9id2VfdXBkYXRlKCk7Ci0KLSAgQndlRGVsYXlCYXNl
ZFVwZGF0ZSByZXM7Ci0gIHJlcy50aW1lc3RhbXAgPSBHZXRUaW1lc3RhbXAoaW5kZXgpOwotICBS
VENfQ0hFQ0soZGVsYXlfZXZlbnQuaGFzX2JpdHJhdGVfYnBzKCkpOwotICByZXMuYml0cmF0ZV9i
cHMgPSBkZWxheV9ldmVudC5iaXRyYXRlX2JwcygpOwotICBSVENfQ0hFQ0soZGVsYXlfZXZlbnQu
aGFzX2RldGVjdG9yX3N0YXRlKCkpOwotICByZXMuZGV0ZWN0b3Jfc3RhdGUgPSBHZXRSdW50aW1l
RGV0ZWN0b3JTdGF0ZShkZWxheV9ldmVudC5kZXRlY3Rvcl9zdGF0ZSgpKTsKLSAgcmV0dXJuIHJl
czsKLX0KLQotdm9pZCBQYXJzZWRSdGNFdmVudExvZzo6R2V0QXVkaW9OZXR3b3JrQWRhcHRhdGlv
bigKLSAgICBzaXplX3QgaW5kZXgsCi0gICAgQXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZyogY29u
ZmlnKSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7
Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19D
SEVDSyhldmVudC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VRKGV2ZW50LnR5cGUoKSwgcnRj
bG9nOjpFdmVudDo6QVVESU9fTkVUV09SS19BREFQVEFUSU9OX0VWRU5UKTsKLSAgUlRDX0NIRUNL
KGV2ZW50Lmhhc19hdWRpb19uZXR3b3JrX2FkYXB0YXRpb24oKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6
QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiYgYW5hX2V2ZW50ID0KLSAgICAgIGV2ZW50LmF1ZGlvX25l
dHdvcmtfYWRhcHRhdGlvbigpOwotICBpZiAoYW5hX2V2ZW50Lmhhc19iaXRyYXRlX2JwcygpKQot
ICAgIGNvbmZpZy0+Yml0cmF0ZV9icHMgPSBhbmFfZXZlbnQuYml0cmF0ZV9icHMoKTsKLSAgaWYg
KGFuYV9ldmVudC5oYXNfZW5hYmxlX2ZlYygpKQotICAgIGNvbmZpZy0+ZW5hYmxlX2ZlYyA9IGFu
YV9ldmVudC5lbmFibGVfZmVjKCk7Ci0gIGlmIChhbmFfZXZlbnQuaGFzX2VuYWJsZV9kdHgoKSkK
LSAgICBjb25maWctPmVuYWJsZV9kdHggPSBhbmFfZXZlbnQuZW5hYmxlX2R0eCgpOwotICBpZiAo
YW5hX2V2ZW50Lmhhc19mcmFtZV9sZW5ndGhfbXMoKSkKLSAgICBjb25maWctPmZyYW1lX2xlbmd0
aF9tcyA9IGFuYV9ldmVudC5mcmFtZV9sZW5ndGhfbXMoKTsKLSAgaWYgKGFuYV9ldmVudC5oYXNf
bnVtX2NoYW5uZWxzKCkpCi0gICAgY29uZmlnLT5udW1fY2hhbm5lbHMgPSBhbmFfZXZlbnQubnVt
X2NoYW5uZWxzKCk7Ci0gIGlmIChhbmFfZXZlbnQuaGFzX3VwbGlua19wYWNrZXRfbG9zc19mcmFj
dGlvbigpKQotICAgIGNvbmZpZy0+dXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uID0KLSAgICAg
ICAgYW5hX2V2ZW50LnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbigpOwotfQotCi1QYXJzZWRS
dGNFdmVudExvZzo6QndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50Ci1QYXJzZWRSdGNFdmVudExv
Zzo6R2V0QndlUHJvYmVDbHVzdGVyQ3JlYXRlZChzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRD
X0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpF
dmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBl
KCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpCV0VfUFJP
QkVfQ0xVU1RFUl9DUkVBVEVEX0VWRU5UKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19wcm9iZV9j
bHVzdGVyKCkpOwotICBjb25zdCBydGNsb2c6OkJ3ZVByb2JlQ2x1c3RlciYgcGNjX2V2ZW50ID0g
ZXZlbnQucHJvYmVfY2x1c3RlcigpOwotICBCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQgcmVz
OwotICByZXMudGltZXN0YW1wID0gR2V0VGltZXN0YW1wKGluZGV4KTsKLSAgUlRDX0NIRUNLKHBj
Y19ldmVudC5oYXNfaWQoKSk7Ci0gIHJlcy5pZCA9IHBjY19ldmVudC5pZCgpOwotICBSVENfQ0hF
Q0socGNjX2V2ZW50Lmhhc19iaXRyYXRlX2JwcygpKTsKLSAgcmVzLmJpdHJhdGVfYnBzID0gcGNj
X2V2ZW50LmJpdHJhdGVfYnBzKCk7Ci0gIFJUQ19DSEVDSyhwY2NfZXZlbnQuaGFzX21pbl9wYWNr
ZXRzKCkpOwotICByZXMubWluX3BhY2tldHMgPSBwY2NfZXZlbnQubWluX3BhY2tldHMoKTsKLSAg
UlRDX0NIRUNLKHBjY19ldmVudC5oYXNfbWluX2J5dGVzKCkpOwotICByZXMubWluX2J5dGVzID0g
cGNjX2V2ZW50Lm1pbl9ieXRlcygpOwotICByZXR1cm4gcmVzOwotfQotCi1QYXJzZWRSdGNFdmVu
dExvZzo6QndlUHJvYmVSZXN1bHRFdmVudCBQYXJzZWRSdGNFdmVudExvZzo6R2V0QndlUHJvYmVS
ZXN1bHQoCi0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwg
R2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZl
bnRzX1tpbmRleF07Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNL
X0VRKGV2ZW50LnR5cGUoKSwgcnRjbG9nOjpFdmVudDo6QldFX1BST0JFX1JFU1VMVF9FVkVOVCk7
Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfcHJvYmVfcmVzdWx0KCkpOwotICBjb25zdCBydGNsb2c6
OkJ3ZVByb2JlUmVzdWx0JiBwcl9ldmVudCA9IGV2ZW50LnByb2JlX3Jlc3VsdCgpOwotICBCd2VQ
cm9iZVJlc3VsdEV2ZW50IHJlczsKLSAgcmVzLnRpbWVzdGFtcCA9IEdldFRpbWVzdGFtcChpbmRl
eCk7Ci0gIFJUQ19DSEVDSyhwcl9ldmVudC5oYXNfaWQoKSk7Ci0gIHJlcy5pZCA9IHByX2V2ZW50
LmlkKCk7Ci0KLSAgUlRDX0NIRUNLKHByX2V2ZW50Lmhhc19yZXN1bHQoKSk7Ci0gIGlmIChwcl9l
dmVudC5yZXN1bHQoKSA9PSBydGNsb2c6OkJ3ZVByb2JlUmVzdWx0OjpTVUNDRVNTKSB7Ci0gICAg
UlRDX0NIRUNLKHByX2V2ZW50Lmhhc19iaXRyYXRlX2JwcygpKTsKLSAgICByZXMuYml0cmF0ZV9i
cHMgPSBwcl9ldmVudC5iaXRyYXRlX2JwcygpOwotICB9IGVsc2UgaWYgKHByX2V2ZW50LnJlc3Vs
dCgpID09Ci0gICAgICAgICAgICAgcnRjbG9nOjpCd2VQcm9iZVJlc3VsdDo6SU5WQUxJRF9TRU5E
X1JFQ0VJVkVfSU5URVJWQUwpIHsKLSAgICByZXMuZmFpbHVyZV9yZWFzb24gPSBQcm9iZUZhaWx1
cmVSZWFzb246OmtJbnZhbGlkU2VuZFJlY2VpdmVJbnRlcnZhbDsKLSAgfSBlbHNlIGlmIChwcl9l
dmVudC5yZXN1bHQoKSA9PQotICAgICAgICAgICAgIHJ0Y2xvZzo6QndlUHJvYmVSZXN1bHQ6OklO
VkFMSURfU0VORF9SRUNFSVZFX1JBVElPKSB7Ci0gICAgcmVzLmZhaWx1cmVfcmVhc29uID0gUHJv
YmVGYWlsdXJlUmVhc29uOjprSW52YWxpZFNlbmRSZWNlaXZlUmF0aW87Ci0gIH0gZWxzZSBpZiAo
cHJfZXZlbnQucmVzdWx0KCkgPT0gcnRjbG9nOjpCd2VQcm9iZVJlc3VsdDo6VElNRU9VVCkgewot
ICAgIHJlcy5mYWlsdXJlX3JlYXNvbiA9IFByb2JlRmFpbHVyZVJlYXNvbjo6a1RpbWVvdXQ7Ci0g
IH0gZWxzZSB7Ci0gICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgfQotCi0gIHJldHVybiByZXM7Ci19
Ci0KLVBhcnNlZFJ0Y0V2ZW50TG9nOjpBbHJTdGF0ZUV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nOjpH
ZXRBbHJTdGF0ZSgKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGlu
ZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQg
PSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENf
Q0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpBTFJfU1RBVEVfRVZFTlQpOwot
ICBSVENfQ0hFQ0soZXZlbnQuaGFzX2Fscl9zdGF0ZSgpKTsKLSAgY29uc3QgcnRjbG9nOjpBbHJT
dGF0ZSYgYWxyX2V2ZW50ID0gZXZlbnQuYWxyX3N0YXRlKCk7Ci0gIEFsclN0YXRlRXZlbnQgcmVz
OwotICByZXMudGltZXN0YW1wID0gR2V0VGltZXN0YW1wKGluZGV4KTsKLSAgUlRDX0NIRUNLKGFs
cl9ldmVudC5oYXNfaW5fYWxyKCkpOwotICByZXMuaW5fYWxyID0gYWxyX2V2ZW50LmluX2Fscigp
OwotCi0gIHJldHVybiByZXM7Ci19Ci0KLVBhcnNlZFJ0Y0V2ZW50TG9nOjpJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnCi1QYXJzZWRSdGNFdmVudExvZzo6R2V0SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyhz
aXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2
ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgcnRjX2V2ZW50ID0gZXZlbnRzX1tpbmRl
eF07Ci0gIFJUQ19DSEVDSyhydGNfZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShy
dGNfZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpJQ0VfQ0FORElEQVRFX1BBSVJfQ09ORklH
KTsKLSAgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyByZXM7Ci0gIGNvbnN0IHJ0Y2xvZzo6SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZyYgY29uZmlnID0KLSAgICAgIHJ0Y19ldmVudC5pY2VfY2FuZGlkYXRl
X3BhaXJfY29uZmlnKCk7Ci0gIHJlcy50aW1lc3RhbXAgPSBHZXRUaW1lc3RhbXAoaW5kZXgpOwot
ICBSVENfQ0hFQ0soY29uZmlnLmhhc19jb25maWdfdHlwZSgpKTsKLSAgcmVzLnR5cGUgPSBHZXRS
dW50aW1lSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUoY29uZmlnLmNvbmZpZ190eXBlKCkpOwot
ICBSVENfQ0hFQ0soY29uZmlnLmhhc19jYW5kaWRhdGVfcGFpcl9pZCgpKTsKLSAgcmVzLmNhbmRp
ZGF0ZV9wYWlyX2lkID0gY29uZmlnLmNhbmRpZGF0ZV9wYWlyX2lkKCk7Ci0gIFJUQ19DSEVDSyhj
b25maWcuaGFzX2xvY2FsX2NhbmRpZGF0ZV90eXBlKCkpOwotICByZXMubG9jYWxfY2FuZGlkYXRl
X3R5cGUgPQotICAgICAgR2V0UnVudGltZUljZUNhbmRpZGF0ZVR5cGUoY29uZmlnLmxvY2FsX2Nh
bmRpZGF0ZV90eXBlKCkpOwotICBSVENfQ0hFQ0soY29uZmlnLmhhc19sb2NhbF9yZWxheV9wcm90
b2NvbCgpKTsKLSAgcmVzLmxvY2FsX3JlbGF5X3Byb3RvY29sID0KLSAgICAgIEdldFJ1bnRpbWVJ
Y2VDYW5kaWRhdGVQYWlyUHJvdG9jb2woY29uZmlnLmxvY2FsX3JlbGF5X3Byb3RvY29sKCkpOwot
ICBSVENfQ0hFQ0soY29uZmlnLmhhc19sb2NhbF9uZXR3b3JrX3R5cGUoKSk7Ci0gIHJlcy5sb2Nh
bF9uZXR3b3JrX3R5cGUgPQotICAgICAgR2V0UnVudGltZUljZUNhbmRpZGF0ZU5ldHdvcmtUeXBl
KGNvbmZpZy5sb2NhbF9uZXR3b3JrX3R5cGUoKSk7Ci0gIFJUQ19DSEVDSyhjb25maWcuaGFzX2xv
Y2FsX2FkZHJlc3NfZmFtaWx5KCkpOwotICByZXMubG9jYWxfYWRkcmVzc19mYW1pbHkgPQotICAg
ICAgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5KGNvbmZpZy5sb2NhbF9h
ZGRyZXNzX2ZhbWlseSgpKTsKLSAgUlRDX0NIRUNLKGNvbmZpZy5oYXNfcmVtb3RlX2NhbmRpZGF0
ZV90eXBlKCkpOwotICByZXMucmVtb3RlX2NhbmRpZGF0ZV90eXBlID0KLSAgICAgIEdldFJ1bnRp
bWVJY2VDYW5kaWRhdGVUeXBlKGNvbmZpZy5yZW1vdGVfY2FuZGlkYXRlX3R5cGUoKSk7Ci0gIFJU
Q19DSEVDSyhjb25maWcuaGFzX3JlbW90ZV9hZGRyZXNzX2ZhbWlseSgpKTsKLSAgcmVzLnJlbW90
ZV9hZGRyZXNzX2ZhbWlseSA9Ci0gICAgICBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckFkZHJl
c3NGYW1pbHkoY29uZmlnLnJlbW90ZV9hZGRyZXNzX2ZhbWlseSgpKTsKLSAgUlRDX0NIRUNLKGNv
bmZpZy5oYXNfY2FuZGlkYXRlX3BhaXJfcHJvdG9jb2woKSk7Ci0gIHJlcy5jYW5kaWRhdGVfcGFp
cl9wcm90b2NvbCA9Ci0gICAgICBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sKGNv
bmZpZy5jYW5kaWRhdGVfcGFpcl9wcm90b2NvbCgpKTsKLSAgcmV0dXJuIHJlczsKLX0KLQotUGFy
c2VkUnRjRXZlbnRMb2c6OkljZUNhbmRpZGF0ZVBhaXJFdmVudAotUGFyc2VkUnRjRXZlbnRMb2c6
OkdldEljZUNhbmRpZGF0ZVBhaXJFdmVudChzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NI
RUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVu
dCYgcnRjX2V2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19DSEVDSyhydGNfZXZlbnQuaGFz
X3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShydGNfZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50
OjpJQ0VfQ0FORElEQVRFX1BBSVJfRVZFTlQpOwotICBJY2VDYW5kaWRhdGVQYWlyRXZlbnQgcmVz
OwotICBjb25zdCBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJFdmVudCYgZXZlbnQgPQotICAgICAg
cnRjX2V2ZW50LmljZV9jYW5kaWRhdGVfcGFpcl9ldmVudCgpOwotICByZXMudGltZXN0YW1wID0g
R2V0VGltZXN0YW1wKGluZGV4KTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19ldmVudF90eXBlKCkp
OwotICByZXMudHlwZSA9IEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlKGV2ZW50
LmV2ZW50X3R5cGUoKSk7Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfY2FuZGlkYXRlX3BhaXJfaWQo
KSk7Ci0gIHJlcy5jYW5kaWRhdGVfcGFpcl9pZCA9IGV2ZW50LmNhbmRpZGF0ZV9wYWlyX2lkKCk7
Ci0gIHJldHVybiByZXM7Ci19Ci0KLS8vIFJldHVybnMgdGhlIE1lZGlhVHlwZSBmb3IgcmVnaXN0
ZXJlZCBTU1JDcy4gU2VhcmNoIGZyb20gdGhlIGVuZCB0byB1c2UgbGFzdAotLy8gcmVnaXN0ZXJl
ZCB0eXBlcyBmaXJzdC4KLVBhcnNlZFJ0Y0V2ZW50TG9nOjpNZWRpYVR5cGUgUGFyc2VkUnRjRXZl
bnRMb2c6OkdldE1lZGlhVHlwZSgKLSAgICB1aW50MzJfdCBzc3JjLAotICAgIFBhY2tldERpcmVj
dGlvbiBkaXJlY3Rpb24pIGNvbnN0IHsKLSAgZm9yIChhdXRvIHJpdCA9IHN0cmVhbXNfLnJiZWdp
bigpOyByaXQgIT0gc3RyZWFtc18ucmVuZCgpOyArK3JpdCkgewotICAgIGlmIChyaXQtPnNzcmMg
PT0gc3NyYyAmJiByaXQtPmRpcmVjdGlvbiA9PSBkaXJlY3Rpb24pCi0gICAgICByZXR1cm4gcml0
LT5tZWRpYV90eXBlOwotICB9Ci0gIHJldHVybiBNZWRpYVR5cGU6OkFOWTsKLX0KLX0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM5M2VjNmRhN2MzNjFhYmFiYWRjNWYyNjM0NDEwZjAyOGFjYjhiNjguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9s
b2dfcGFyc2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNTkgKzAsMCBAQAotLyoKLSAqICBDb3B5
cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgotICovCi0jaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19SVENfRVZFTlRfTE9HX1BB
UlNFUl9IXwotI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfUlRDX0VWRU5UX0xPR19QQVJT
RVJfSF8KLQotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxzc3RyZWFtPiAgLy8gbm8tcHJlc3Vi
bWl0LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUg
PHV0aWxpdHk+ICAvLyBwYWlyCi0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiY2FsbC92
aWRlb19yZWNlaXZlX3N0cmVhbS5oIgotI2luY2x1ZGUgImNhbGwvdmlkZW9fc2VuZF9zdHJlYW0u
aCIKLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2Vf
Y2FuZGlkYXRlX3BhaXIuaCIKLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnLmgiCi0jaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuaCIK
LSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgotI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIKLSNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvaWdub3JlX3d1bmRlZi5oIgotCi0vLyBGaWxlcyBnZW5lcmF0ZWQgYXQgYnVpbGQtdGlt
ZSBieSB0aGUgcHJvdG9idWYgY29tcGlsZXIuCi1SVENfUFVTSF9JR05PUklOR19XVU5ERUYoKQot
I2lmZGVmIFdFQlJUQ19BTkRST0lEX1BMQVRGT1JNX0JVSUxECi0jaW5jbHVkZSAiZXh0ZXJuYWwv
d2VicnRjL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5wYi5oIgot
I2Vsc2UKLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5wYi5o
IgotI2VuZGlmCi1SVENfUE9QX0lHTk9SSU5HX1dVTkRFRigpCi0KLW5hbWVzcGFjZSB3ZWJydGMg
ewotCi1lbnVtIGNsYXNzIEJhbmR3aWR0aFVzYWdlOwotZW51bSBjbGFzcyBNZWRpYVR5cGU7Ci0K
LXN0cnVjdCBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnOwotCi1jbGFzcyBQYXJzZWRSdGNFdmVu
dExvZyB7Ci0gIGZyaWVuZCBjbGFzcyBSdGNFdmVudExvZ1Rlc3RIZWxwZXI7Ci0KLSBwdWJsaWM6
Ci0gIFBhcnNlZFJ0Y0V2ZW50TG9nKCk7Ci0gIH5QYXJzZWRSdGNFdmVudExvZygpOwotCi0gIHN0
cnVjdCBCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQgewotICAgIHVpbnQ2NF90IHRpbWVzdGFt
cDsKLSAgICB1aW50MzJfdCBpZDsKLSAgICB1aW50NjRfdCBiaXRyYXRlX2JwczsKLSAgICB1aW50
MzJfdCBtaW5fcGFja2V0czsKLSAgICB1aW50MzJfdCBtaW5fYnl0ZXM7Ci0gIH07Ci0KLSAgc3Ry
dWN0IEJ3ZVByb2JlUmVzdWx0RXZlbnQgewotICAgIEJ3ZVByb2JlUmVzdWx0RXZlbnQoKTsKLSAg
ICBCd2VQcm9iZVJlc3VsdEV2ZW50KGNvbnN0IEJ3ZVByb2JlUmVzdWx0RXZlbnQmKTsKLQotICAg
IHVpbnQ2NF90IHRpbWVzdGFtcDsKLSAgICB1aW50MzJfdCBpZDsKLSAgICBhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4gYml0cmF0ZV9icHM7Ci0gICAgYWJzbDo6b3B0aW9uYWw8UHJvYmVGYWlsdXJl
UmVhc29uPiBmYWlsdXJlX3JlYXNvbjsKLSAgfTsKLQotICBzdHJ1Y3QgQndlRGVsYXlCYXNlZFVw
ZGF0ZSB7Ci0gICAgdWludDY0X3QgdGltZXN0YW1wOwotICAgIGludDMyX3QgYml0cmF0ZV9icHM7
Ci0gICAgQmFuZHdpZHRoVXNhZ2UgZGV0ZWN0b3Jfc3RhdGU7Ci0gIH07Ci0KLSAgc3RydWN0IEFs
clN0YXRlRXZlbnQgewotICAgIHVpbnQ2NF90IHRpbWVzdGFtcDsKLSAgICBib29sIGluX2FscjsK
LSAgfTsKLQotICBzdHJ1Y3QgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyB7Ci0gICAgdWludDY0X3Qg
dGltZXN0YW1wOwotICAgIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlIHR5cGU7Ci0gICAgdWlu
dDMyX3QgY2FuZGlkYXRlX3BhaXJfaWQ7Ci0gICAgSWNlQ2FuZGlkYXRlVHlwZSBsb2NhbF9jYW5k
aWRhdGVfdHlwZTsKLSAgICBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2wgbG9jYWxfcmVsYXlfcHJv
dG9jb2w7Ci0gICAgSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGUgbG9jYWxfbmV0d29ya190eXBlOwot
ICAgIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5IGxvY2FsX2FkZHJlc3NfZmFtaWx5Owot
ICAgIEljZUNhbmRpZGF0ZVR5cGUgcmVtb3RlX2NhbmRpZGF0ZV90eXBlOwotICAgIEljZUNhbmRp
ZGF0ZVBhaXJBZGRyZXNzRmFtaWx5IHJlbW90ZV9hZGRyZXNzX2ZhbWlseTsKLSAgICBJY2VDYW5k
aWRhdGVQYWlyUHJvdG9jb2wgY2FuZGlkYXRlX3BhaXJfcHJvdG9jb2w7Ci0gIH07Ci0KLSAgc3Ry
dWN0IEljZUNhbmRpZGF0ZVBhaXJFdmVudCB7Ci0gICAgdWludDY0X3QgdGltZXN0YW1wOwotICAg
IEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgdHlwZTsKLSAgICB1aW50MzJfdCBjYW5kaWRhdGVf
cGFpcl9pZDsKLSAgfTsKLQotICBlbnVtIEV2ZW50VHlwZSB7Ci0gICAgVU5LTk9XTl9FVkVOVCA9
IDAsCi0gICAgTE9HX1NUQVJUID0gMSwKLSAgICBMT0dfRU5EID0gMiwKLSAgICBSVFBfRVZFTlQg
PSAzLAotICAgIFJUQ1BfRVZFTlQgPSA0LAotICAgIEFVRElPX1BMQVlPVVRfRVZFTlQgPSA1LAot
ICAgIExPU1NfQkFTRURfQldFX1VQREFURSA9IDYsCi0gICAgREVMQVlfQkFTRURfQldFX1VQREFU
RSA9IDcsCi0gICAgVklERU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UID0gOCwKLSAgICBWSURFT19T
RU5ERVJfQ09ORklHX0VWRU5UID0gOSwKLSAgICBBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQg
PSAxMCwKLSAgICBBVURJT19TRU5ERVJfQ09ORklHX0VWRU5UID0gMTEsCi0gICAgQVVESU9fTkVU
V09SS19BREFQVEFUSU9OX0VWRU5UID0gMTYsCi0gICAgQldFX1BST0JFX0NMVVNURVJfQ1JFQVRF
RF9FVkVOVCA9IDE3LAotICAgIEJXRV9QUk9CRV9SRVNVTFRfRVZFTlQgPSAxOCwKLSAgICBBTFJf
U1RBVEVfRVZFTlQgPSAxOSwKLSAgICBJQ0VfQ0FORElEQVRFX1BBSVJfQ09ORklHID0gMjAsCi0g
ICAgSUNFX0NBTkRJREFURV9QQUlSX0VWRU5UID0gMjEsCi0gIH07Ci0KLSAgZW51bSBjbGFzcyBN
ZWRpYVR5cGUgeyBBTlksIEFVRElPLCBWSURFTywgREFUQSB9OwotCi0gIC8vIFJlYWRzIGFuIFJ0
Y0V2ZW50TG9nIGZpbGUgYW5kIHJldHVybnMgdHJ1ZSBpZiBwYXJzaW5nIHdhcyBzdWNjZXNzZnVs
LgotICBib29sIFBhcnNlRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lKTsKLQotICAv
LyBSZWFkcyBhbiBSdGNFdmVudExvZyBmcm9tIGEgc3RyaW5nIGFuZCByZXR1cm5zIHRydWUgaWYg
c3VjY2Vzc2Z1bC4KLSAgYm9vbCBQYXJzZVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcyk7Ci0K
LSAgLy8gUmVhZHMgYW4gUnRjRXZlbnRMb2cgZnJvbSBhbiBpc3RyZWFtIGFuZCByZXR1cm5zIHRy
dWUgaWYgc3VjY2Vzc2Z1bC4KLSAgYm9vbCBQYXJzZVN0cmVhbShzdGQ6OmlzdHJlYW0mIHN0cmVh
bSk7Ci0KLSAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGV2ZW50cyBpbiBhbiBFdmVudFN0cmVh
bS4KLSAgc2l6ZV90IEdldE51bWJlck9mRXZlbnRzKCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgdGhl
IGFycml2YWwgdGltZXN0YW1wIChpbiBtaWNyb3NlY29uZHMpIGZyb20gYSBydGNsb2c6OkV2ZW50
LgotICBpbnQ2NF90IEdldFRpbWVzdGFtcChzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJl
YWRzIHRoZSBldmVudCB0eXBlIG9mIHRoZSBydGNsb2c6OkV2ZW50IGF0IHxpbmRleHwuCi0gIEV2
ZW50VHlwZSBHZXRFdmVudFR5cGUoc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyB0
aGUgaGVhZGVyLCBkaXJlY3Rpb24sIGhlYWRlciBsZW5ndGggYW5kIHBhY2tldCBsZW5ndGggZnJv
bSB0aGUgUlRQCi0gIC8vIGV2ZW50IGF0IHxpbmRleHwsIGFuZCBzdG9yZXMgdGhlIHZhbHVlcyBp
biB0aGUgY29ycmVzcG9uZGluZyBvdXRwdXQKLSAgLy8gcGFyYW1ldGVycy4gRWFjaCBvdXRwdXQg
cGFyYW1ldGVyIGNhbiBiZSBzZXQgdG8gbnVsbHB0ciBpZiB0aGF0IHZhbHVlCi0gIC8vIGlzbid0
IG5lZWRlZC4KLSAgLy8gTkI6IFRoZSBoZWFkZXIgbXVzdCBoYXZlIHNwYWNlIGZvciBhdCBsZWFz
dCBJUF9QQUNLRVRfU0laRSBieXRlcy4KLSAgLy8gUmV0dXJuczogYSBwb2ludGVyIHRvIGEgaGVh
ZGVyIGV4dGVuc2lvbnMgbWFwIGFjcXVpcmVkIGZyb20gcGFyc2luZwotICAvLyBjb3JyZXNwb25k
aW5nIEF1ZGlvL1ZpZGVvIFNlbmRlci9SZWNlaXZlciBjb25maWcgZXZlbnRzLgotICAvLyBXYXJu
aW5nOiBpZiB0aGUgc2FtZSBTU1JDIGlzIHJldXNlZCBieSBib3RoIHZpZGVvIGFuZCBhdWRpbyBz
dHJlYW1zIGR1cmluZwotICAvLyBjYWxsLCBleHRlbnNpb25zIG1hcHMgbWF5IGJlIGluY29ycmVj
dCAodGhlIGxhc3Qgb25lIHdvdWxkIGJlIHJldHVybmVkKS4KLSAgd2VicnRjOjpSdHBIZWFkZXJF
eHRlbnNpb25NYXAqIEdldFJ0cEhlYWRlcihzaXplX3QgaW5kZXgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0RGlyZWN0aW9uKiBpbmNvbWluZywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBo
ZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90KiBoZWFkZXJfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCogdG90YWxfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCogcHJvYmVfY2x1c3Rlcl9pZCkgY29uc3Q7Ci0KLSAg
Ly8gUmVhZHMgcGFja2V0LCBkaXJlY3Rpb24gYW5kIHBhY2tldCBsZW5ndGggZnJvbSB0aGUgUlRD
UCBldmVudCBhdCB8aW5kZXh8LAotICAvLyBhbmQgc3RvcmVzIHRoZSB2YWx1ZXMgaW4gdGhlIGNv
cnJlc3BvbmRpbmcgb3V0cHV0IHBhcmFtZXRlcnMuCi0gIC8vIEVhY2ggb3V0cHV0IHBhcmFtZXRl
ciBjYW4gYmUgc2V0IHRvIG51bGxwdHIgaWYgdGhhdCB2YWx1ZSBpc24ndCBuZWVkZWQuCi0gIC8v
IE5COiBUaGUgcGFja2V0IG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VUX1NJ
WkUgYnl0ZXMuCi0gIHZvaWQgR2V0UnRjcFBhY2tldChzaXplX3QgaW5kZXgsCi0gICAgICAgICAg
ICAgICAgICAgICBQYWNrZXREaXJlY3Rpb24qIGluY29taW5nLAotICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgp
IGNvbnN0OwotCi0gIC8vIFJlYWRzIGEgdmlkZW8gcmVjZWl2ZSBjb25maWcgZXZlbnQgdG8gYSBT
dHJlYW1Db25maWcgc3RydWN0LgotICAvLyBPbmx5IHRoZSBmaWVsZHMgdGhhdCBhcmUgc3RvcmVk
IGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdyaXR0ZW4uCi0gIHJ0Y2xvZzo6U3RyZWFtQ29uZmln
IEdldFZpZGVvUmVjZWl2ZUNvbmZpZyhzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRz
IGEgdmlkZW8gc2VuZCBjb25maWcgZXZlbnQgdG8gYSBTdHJlYW1Db25maWcgc3RydWN0LiBJZiB0
aGUgcHJvdG8KLSAgLy8gY29udGFpbnMgbXVsdGlwbGUgU1NSQ3MgYW5kIFJUWCBTU1JDcyAodGhp
cyB1c2VkIHRvIGJlIHRoZSBjYXNlIGZvcgotICAvLyBzaW11bGNhc3Qgc3RyZWFtcykgdGhlbiB3
ZSByZXR1cm4gb25lIFN0cmVhbUNvbmZpZyBwZXIgU1NSQyxSVFhfU1NSQyBwYWlyLgotICAvLyBP
bmx5IHRoZSBmaWVsZHMgdGhhdCBhcmUgc3RvcmVkIGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdy
aXR0ZW4uCi0gIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBHZXRWaWRlb1NlbmRD
b25maWcoc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyBhIGF1ZGlvIHJlY2VpdmUg
Y29uZmlnIGV2ZW50IHRvIGEgU3RyZWFtQ29uZmlnIHN0cnVjdC4KLSAgLy8gT25seSB0aGUgZmll
bGRzIHRoYXQgYXJlIHN0b3JlZCBpbiB0aGUgcHJvdG9idWYgd2lsbCBiZSB3cml0dGVuLgotICBy
dGNsb2c6OlN0cmVhbUNvbmZpZyBHZXRBdWRpb1JlY2VpdmVDb25maWcoc2l6ZV90IGluZGV4KSBj
b25zdDsKLQotICAvLyBSZWFkcyBhIGNvbmZpZyBldmVudCB0byBhIFN0cmVhbUNvbmZpZyBzdHJ1
Y3QuCi0gIC8vIE9ubHkgdGhlIGZpZWxkcyB0aGF0IGFyZSBzdG9yZWQgaW4gdGhlIHByb3RvYnVm
IHdpbGwgYmUgd3JpdHRlbi4KLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgR2V0QXVkaW9TZW5kQ29u
ZmlnKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgdGhlIFNTUkMgZnJvbSB0aGUg
YXVkaW8gcGxheW91dCBldmVudCBhdCB8aW5kZXh8LiBUaGUgU1NSQyBpcyBzdG9yZWQKLSAgLy8g
aW4gdGhlIG91dHB1dCBwYXJhbWV0ZXIgc3NyYy4gVGhlIG91dHB1dCBwYXJhbWV0ZXIgY2FuIGJl
IHNldCB0byBudWxscHRyCi0gIC8vIGFuZCBpbiB0aGF0IGNhc2UgdGhlIGZ1bmN0aW9uIG9ubHkg
YXNzZXJ0cyB0aGF0IHRoZSBldmVudCBpcyB3ZWxsIGZvcm1lZC4KLSAgdm9pZCBHZXRBdWRpb1Bs
YXlvdXQoc2l6ZV90IGluZGV4LCB1aW50MzJfdCogc3NyYykgY29uc3Q7Ci0KLSAgLy8gUmVhZHMg
Yml0cmF0ZSwgZnJhY3Rpb24gbG9zcyAoYXMgZGVmaW5lZCBpbiBSRkMgMTg4OSkgYW5kIHRvdGFs
IG51bWJlciBvZgotICAvLyBleHBlY3RlZCBwYWNrZXRzIGZyb20gdGhlIGxvc3MgYmFzZWQgQldF
IGV2ZW50IGF0IHxpbmRleHwgYW5kIHN0b3JlcyB0aGUKLSAgLy8gdmFsdWVzIGluCi0gIC8vIHRo
ZSBjb3JyZXNwb25kaW5nIG91dHB1dCBwYXJhbWV0ZXJzLiBFYWNoIG91dHB1dCBwYXJhbWV0ZXIg
Y2FuIGJlIHNldCB0bwotICAvLyBudWxscHRyIGlmIHRoYXQKLSAgLy8gdmFsdWUgaXNuJ3QgbmVl
ZGVkLgotICB2b2lkIEdldExvc3NCYXNlZEJ3ZVVwZGF0ZShzaXplX3QgaW5kZXgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QqIGJpdHJhdGVfYnBzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90KiBmcmFjdGlvbl9sb3NzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQzMl90KiB0b3RhbF9wYWNrZXRzKSBjb25zdDsKLQotICAvLyBSZWFk
cyBiaXRyYXRlIGFuZCBkZXRlY3Rvcl9zdGF0ZSBmcm9tIHRoZSBkZWxheSBiYXNlZCBCV0UgZXZl
bnQgYXQgfGluZGV4fAotICAvLyBhbmQgc3RvcmVzIHRoZSB2YWx1ZXMgaW4gdGhlIGNvcnJlc3Bv
bmRpbmcgb3V0cHV0IHBhcmFtZXRlcnMuIEVhY2ggb3V0cHV0Ci0gIC8vIHBhcmFtZXRlciBjYW4g
YmUgc2V0IHRvIG51bGxwdHIgaWYgdGhhdAotICAvLyB2YWx1ZSBpc24ndCBuZWVkZWQuCi0gIEJ3
ZURlbGF5QmFzZWRVcGRhdGUgR2V0RGVsYXlCYXNlZEJ3ZVVwZGF0ZShzaXplX3QgaW5kZXgpIGNv
bnN0OwotCi0gIC8vIFJlYWRzIGEgYXVkaW8gbmV0d29yayBhZGFwdGF0aW9uIGV2ZW50IHRvIGEg
KG5vbi1OVUxMKQotICAvLyBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnIHN0cnVjdC4gT25seSB0
aGUgZmllbGRzIHRoYXQgYXJlCi0gIC8vIHN0b3JlZCBpbiB0aGUgcHJvdG9idWYgd2lsbCBiZSB3
cml0dGVuLgotICB2b2lkIEdldEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oc2l6ZV90IGluZGV4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9FbmNvZGVyUnVudGltZUNvbmZp
ZyogY29uZmlnKSBjb25zdDsKLQotICBCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQgR2V0Qndl
UHJvYmVDbHVzdGVyQ3JlYXRlZChzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIEJ3ZVByb2JlUmVz
dWx0RXZlbnQgR2V0QndlUHJvYmVSZXN1bHQoc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICBNZWRp
YVR5cGUgR2V0TWVkaWFUeXBlKHVpbnQzMl90IHNzcmMsIFBhY2tldERpcmVjdGlvbiBkaXJlY3Rp
b24pIGNvbnN0OwotCi0gIEFsclN0YXRlRXZlbnQgR2V0QWxyU3RhdGUoc2l6ZV90IGluZGV4KSBj
b25zdDsKLQotICBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnIEdldEljZUNhbmRpZGF0ZVBhaXJDb25m
aWcoc2l6ZV90IGluZGV4KSBjb25zdDsKLSAgSWNlQ2FuZGlkYXRlUGFpckV2ZW50IEdldEljZUNh
bmRpZGF0ZVBhaXJFdmVudChzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgcnRj
bG9nOjpTdHJlYW1Db25maWcgR2V0VmlkZW9SZWNlaXZlQ29uZmlnKGNvbnN0IHJ0Y2xvZzo6RXZl
bnQmIGV2ZW50KSBjb25zdDsKLSAgc3RkOjp2ZWN0b3I8cnRjbG9nOjpTdHJlYW1Db25maWc+IEdl
dFZpZGVvU2VuZENvbmZpZygKLSAgICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25z
dDsKLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgR2V0QXVkaW9SZWNlaXZlQ29uZmlnKGNvbnN0IHJ0
Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdDsKLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgR2V0QXVk
aW9TZW5kQ29uZmlnKGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdDsKLQotICBzdGQ6
OnZlY3RvcjxydGNsb2c6OkV2ZW50PiBldmVudHNfOwotCi0gIHN0cnVjdCBTdHJlYW0gewotICAg
IFN0cmVhbSh1aW50MzJfdCBzc3JjLAotICAgICAgICAgICBNZWRpYVR5cGUgbWVkaWFfdHlwZSwK
LSAgICAgICAgICAgd2VicnRjOjpQYWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uLAotICAgICAgICAg
ICB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCBtYXApCi0gICAgICAgIDogc3NyYyhzc3Jj
KSwKLSAgICAgICAgICBtZWRpYV90eXBlKG1lZGlhX3R5cGUpLAotICAgICAgICAgIGRpcmVjdGlv
bihkaXJlY3Rpb24pLAotICAgICAgICAgIHJ0cF9leHRlbnNpb25zX21hcChtYXApIHt9Ci0gICAg
dWludDMyX3Qgc3NyYzsKLSAgICBNZWRpYVR5cGUgbWVkaWFfdHlwZTsKLSAgICB3ZWJydGM6OlBh
Y2tldERpcmVjdGlvbiBkaXJlY3Rpb247Ci0gICAgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25N
YXAgcnRwX2V4dGVuc2lvbnNfbWFwOwotICB9OwotCi0gIC8vIEFsbCBjb25maWd1cmVkIHN0cmVh
bXMgZm91bmQgaW4gdGhlIGV2ZW50IGxvZy4KLSAgc3RkOjp2ZWN0b3I8U3RyZWFtPiBzdHJlYW1z
XzsKLQotICAvLyBUbyBmaW5kIGNvbmZpZ3VyZWQgZXh0ZW5zaW9ucyBtYXAgZm9yIGdpdmVuIHN0
cmVhbSwgd2hhdCBhcmUgbmVlZGVkIHRvCi0gIC8vIHBhcnNlIGEgaGVhZGVyLgotICB0eXBlZGVm
IHN0ZDo6cGFpcjx1aW50MzJfdCwgd2VicnRjOjpQYWNrZXREaXJlY3Rpb24+IFN0cmVhbUlkOwot
ICBzdGQ6Om1hcDxTdHJlYW1JZCwgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAqPiBydHBf
ZXh0ZW5zaW9uc19tYXBzXzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlm
ICAvLyBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfUlRDX0VWRU5UX0xPR19QQVJTRVJfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlcl9uZXcuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2
ZW50X2xvZ19wYXJzZXJfbmV3LmNjCmluZGV4IDVmYTY5ZWQ2MzdmNjVlYWMwOTEyOWI0NmY4MmI4
NTk1ZjQxMzg0NTcuLjcyNzhlYTE4YjFkMzNjNDVjM2Q4ZTc3ZTAwZTEyYmZjZWU5OGUzOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlcl9uZXcuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5jYwpAQCAtMjQsMjEgKzI0LDMwIEBACiAjaW5jbHVk
ZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9ydHBfaGVhZGVycy5oIgog
I2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGluZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29kaW5nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbi5oIgogI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0
d29ya19hZGFwdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
dHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9jdm8uaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9u
dW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcHJvdG9idWZf
dXRpbHMuaCIKIAordXNpbmcgd2VicnRjX2V2ZW50X2xvZ2dpbmc6OlRvU2lnbmVkOwordXNpbmcg
d2VicnRjX2V2ZW50X2xvZ2dpbmc6OlRvVW5zaWduZWQ7CisKIG5hbWVzcGFjZSB3ZWJydGMgewog
CiBuYW1lc3BhY2UgeworLy8gQ29udmVyc2lvbiBmdW5jdGlvbnMgZm9yIGxlZ2FjeSB3aXJlIGZv
cm1hdC4KIFJ0Y3BNb2RlIEdldFJ1bnRpbWVSdGNwTW9kZShydGNsb2c6OlZpZGVvUmVjZWl2ZUNv
bmZpZzo6UnRjcE1vZGUgcnRjcF9tb2RlKSB7CiAgIHN3aXRjaCAocnRjcF9tb2RlKSB7CiAgICAg
Y2FzZSBydGNsb2c6OlZpZGVvUmVjZWl2ZUNvbmZpZzo6UlRDUF9DT01QT1VORDoKQEAgLTUwLDUy
ICs1OSw2IEBAIFJ0Y3BNb2RlIEdldFJ1bnRpbWVSdGNwTW9kZShydGNsb2c6OlZpZGVvUmVjZWl2
ZUNvbmZpZzo6UnRjcE1vZGUgcnRjcF9tb2RlKSB7CiAgIHJldHVybiBSdGNwTW9kZTo6a09mZjsK
IH0KIAotUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZSBHZXRSdW50aW1lRXZlbnRUeXBl
KAotICAgIHJ0Y2xvZzo6RXZlbnQ6OkV2ZW50VHlwZSBldmVudF90eXBlKSB7Ci0gIHN3aXRjaCAo
ZXZlbnRfdHlwZSkgewotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6VU5LTk9XTl9FVkVOVDoKLSAg
ICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpVTktOT1dOX0VWRU5U
OwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6TE9HX1NUQVJUOgotICAgICAgcmV0dXJuIFBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkxPR19TVEFSVDsKLSAgICBjYXNlIHJ0Y2xvZzo6
RXZlbnQ6OkxPR19FTkQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50
VHlwZTo6TE9HX0VORDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OlJUUF9FVkVOVDoKLSAgICAg
IHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpSVFBfRVZFTlQ7Ci0gICAg
Y2FzZSBydGNsb2c6OkV2ZW50OjpSVENQX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpFdmVudFR5cGU6OlJUQ1BfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50
OjpBVURJT19QTEFZT1VUX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpFdmVudFR5cGU6OkFVRElPX1BMQVlPVVRfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50
OjpMT1NTX0JBU0VEX0JXRV9VUERBVEU6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dO
ZXc6OkV2ZW50VHlwZTo6TE9TU19CQVNFRF9CV0VfVVBEQVRFOwotICAgIGNhc2UgcnRjbG9nOjpF
dmVudDo6REVMQVlfQkFTRURfQldFX1VQREFURToKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVu
dExvZ05ldzo6RXZlbnRUeXBlOjpERUxBWV9CQVNFRF9CV0VfVVBEQVRFOwotICAgIGNhc2UgcnRj
bG9nOjpFdmVudDo6VklERU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UOgotICAgICAgcmV0dXJuIFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlZJREVPX1JFQ0VJVkVSX0NPTkZJR19FVkVO
VDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQ6Ci0g
ICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6VklERU9fU0VOREVS
X0NPTkZJR19FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1JFQ0VJVkVSX0NP
TkZJR19FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBl
OjpBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpB
VURJT19TRU5ERVJfQ09ORklHX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9n
TmV3OjpFdmVudFR5cGU6OkFVRElPX1NFTkRFUl9DT05GSUdfRVZFTlQ7Ci0gICAgY2FzZSBydGNs
b2c6OkV2ZW50OjpBVURJT19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQ6Ci0gICAgICByZXR1cm4g
UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QVVESU9fTkVUV09SS19BREFQVEFUSU9O
X0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QldFX1BST0JFX0NMVVNURVJfQ1JFQVRF
RF9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpC
V0VfUFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6
QldFX1BST0JFX1JFU1VMVF9FVkVOVDoKLSAgICAgIC8vIFByb2JlIHN1Y2Nlc3NlcyBhbmQgZmFp
bHVyZXMgYXJlIGN1cnJlbnRseSBzdG9yZWQgaW4gdGhlIHNhbWUgcHJvdG8KLSAgICAgIC8vIG1l
c3NhZ2UsIHdlIGFyZSBtb3ZpbmcgdG93YXJkcyBzZXBhcmF0ZSBtZXNzYWdlcy4gUHJvYmUgcmVz
dWx0cwotICAgICAgLy8gdGhlcmVmb3JlIG5lZWQgc3BlY2lhbCB0cmVhdG1lbnQgaW4gdGhlIHBh
cnNlci4KLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpVTktO
T1dOX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QUxSX1NUQVRFX0VWRU5UOgotICAg
ICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkFMUl9TVEFURV9FVkVO
VDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJUl9DT05GSUc6Ci0g
ICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6SUNFX0NBTkRJREFU
RV9QQUlSX0NPTkZJRzsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJ
Ul9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpJ
Q0VfQ0FORElEQVRFX1BBSVJfRVZFTlQ7Ci0gIH0KLSAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9n
TmV3OjpFdmVudFR5cGU6OlVOS05PV05fRVZFTlQ7Ci19Ci0KIEJhbmR3aWR0aFVzYWdlIEdldFJ1
bnRpbWVEZXRlY3RvclN0YXRlKAogICAgIHJ0Y2xvZzo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZTo6RGV0
ZWN0b3JTdGF0ZSBkZXRlY3Rvcl9zdGF0ZSkgewogICBzd2l0Y2ggKGRldGVjdG9yX3N0YXRlKSB7
CkBAIC0yMTIsNiArMTc1LDE3NSBAQCBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlIEdldFJ1bnRp
bWVJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlKAogICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckV2
ZW50VHlwZTo6a0NoZWNrU2VudDsKIH0KIAorLy8gQ29udmVyc2lvbiBmdW5jdGlvbnMgZm9yIHZl
cnNpb24gMiBvZiB0aGUgd2lyZSBmb3JtYXQuCitCYW5kd2lkdGhVc2FnZSBHZXRSdW50aW1lRGV0
ZWN0b3JTdGF0ZSgKKyAgICBydGNsb2cyOjpEZWxheUJhc2VkQndlVXBkYXRlczo6RGV0ZWN0b3JT
dGF0ZSBkZXRlY3Rvcl9zdGF0ZSkgeworICBzd2l0Y2ggKGRldGVjdG9yX3N0YXRlKSB7CisgICAg
Y2FzZSBydGNsb2cyOjpEZWxheUJhc2VkQndlVXBkYXRlczo6QldFX05PUk1BTDoKKyAgICAgIHJl
dHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3Tm9ybWFsOworICAgIGNhc2UgcnRjbG9nMjo6RGVsYXlC
YXNlZEJ3ZVVwZGF0ZXM6OkJXRV9VTkRFUlVTSU5HOgorICAgICAgcmV0dXJuIEJhbmR3aWR0aFVz
YWdlOjprQndVbmRlcnVzaW5nOworICAgIGNhc2UgcnRjbG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0
ZXM6OkJXRV9PVkVSVVNJTkc6CisgICAgICByZXR1cm4gQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1
c2luZzsKKyAgICBjYXNlIHJ0Y2xvZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVzOjpCV0VfVU5LTk9X
Tl9TVEFURToKKyAgICAgIGJyZWFrOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVy
biBCYW5kd2lkdGhVc2FnZTo6a0J3Tm9ybWFsOworfQorCitQcm9iZUZhaWx1cmVSZWFzb24gR2V0
UnVudGltZVByb2JlRmFpbHVyZVJlYXNvbigKKyAgICBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZh
aWx1cmU6OkZhaWx1cmVSZWFzb24gZmFpbHVyZSkgeworICBzd2l0Y2ggKGZhaWx1cmUpIHsKKyAg
ICBjYXNlIHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0RmFpbHVyZTo6SU5WQUxJRF9TRU5EX1JFQ0VJ
VkVfSU5URVJWQUw6CisgICAgICByZXR1cm4gUHJvYmVGYWlsdXJlUmVhc29uOjprSW52YWxpZFNl
bmRSZWNlaXZlSW50ZXJ2YWw7CisgICAgY2FzZSBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1
cmU6OklOVkFMSURfU0VORF9SRUNFSVZFX1JBVElPOgorICAgICAgcmV0dXJuIFByb2JlRmFpbHVy
ZVJlYXNvbjo6a0ludmFsaWRTZW5kUmVjZWl2ZVJhdGlvOworICAgIGNhc2UgcnRjbG9nMjo6Qndl
UHJvYmVSZXN1bHRGYWlsdXJlOjpUSU1FT1VUOgorICAgICAgcmV0dXJuIFByb2JlRmFpbHVyZVJl
YXNvbjo6a1RpbWVvdXQ7CisgICAgY2FzZSBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1cmU6
OlVOS05PV046CisgICAgICBicmVhazsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1
cm4gUHJvYmVGYWlsdXJlUmVhc29uOjprVGltZW91dDsKK30KKworSWNlQ2FuZGlkYXRlUGFpckNv
bmZpZ1R5cGUgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlKAorICAgIHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlIHR5
cGUpIHsKKyAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnOjpBRERFRDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlw
ZTo6a0FkZGVkOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VVBE
QVRFRDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a1VwZGF0ZWQ7
CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpERVNUUk9ZRUQ6Cisg
ICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGU6OmtEZXN0cm95ZWQ7CisgICAg
Y2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpTRUxFQ1RFRDoKKyAgICAgIHJl
dHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a1NlbGVjdGVkOworICAgIGNhc2UgcnRj
bG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9DT05GSUdfVFlQRToKKyAgICAg
IGJyZWFrOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnVHlwZTo6a0FkZGVkOworfQorCitJY2VDYW5kaWRhdGVUeXBlIEdldFJ1bnRpbWVJ
Y2VDYW5kaWRhdGVUeXBlKAorICAgIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6Oklj
ZUNhbmRpZGF0ZVR5cGUgdHlwZSkgeworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkxPQ0FMOgorICAgICAgcmV0dXJuIEljZUNhbmRp
ZGF0ZVR5cGU6OmtMb2NhbDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25m
aWc6OlNUVU46CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlVHlwZTo6a1N0dW47CisgICAgY2Fz
ZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpQUkZMWDoKKyAgICAgIHJldHVybiBJ
Y2VDYW5kaWRhdGVUeXBlOjprUHJmbHg7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnOjpSRUxBWToKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVUeXBlOjprUmVsYXk7
CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX0NBTkRJ
REFURV9UWVBFOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVR5cGU6OmtVbmtub3duOworICB9
CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBJY2VDYW5kaWRhdGVUeXBlOjprVW5rbm93
bjsKK30KKworSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQ
YWlyUHJvdG9jb2woCisgICAgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6UHJvdG9j
b2wgcHJvdG9jb2wpIHsKKyAgc3dpdGNoIChwcm90b2NvbCkgeworICAgIGNhc2UgcnRjbG9nMjo6
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VURQOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBh
aXJQcm90b2NvbDo6a1VkcDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25m
aWc6OlRDUDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtUY3A7Cisg
ICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpTU0xUQ1A6CisgICAgICBy
ZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprU3NsdGNwOworICAgIGNhc2UgcnRjbG9n
Mjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VExTOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0
ZVBhaXJQcm90b2NvbDo6a1RsczsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJD
b25maWc6OlVOS05PV05fUFJPVE9DT0w6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclBy
b3RvY29sOjprVW5rbm93bjsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gSWNl
Q2FuZGlkYXRlUGFpclByb3RvY29sOjprVW5rbm93bjsKK30KKworSWNlQ2FuZGlkYXRlUGFpckFk
ZHJlc3NGYW1pbHkgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5KAorICAg
IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkFkZHJlc3NGYW1pbHkgYWRkcmVzc19m
YW1pbHkpIHsKKyAgc3dpdGNoIChhZGRyZXNzX2ZhbWlseSkgeworICAgIGNhc2UgcnRjbG9nMjo6
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SVBWNDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQ
YWlyQWRkcmVzc0ZhbWlseTo6a0lwdjQ7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnOjpJUFY2OgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFt
aWx5OjprSXB2NjsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVO
S05PV05fQUREUkVTU19GQU1JTFk6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckFkZHJl
c3NGYW1pbHk6OmtVbmtub3duOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBJ
Y2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6a1Vua25vd247Cit9CisKK0ljZUNhbmRpZGF0
ZU5ldHdvcmtUeXBlIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZSgKKyAgICBydGNs
b2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpOZXR3b3JrVHlwZSBuZXR3b3JrX3R5cGUpIHsK
KyAgc3dpdGNoIChuZXR3b3JrX3R5cGUpIHsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0
ZVBhaXJDb25maWc6OkVUSEVSTkVUOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtU
eXBlOjprRXRoZXJuZXQ7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmln
OjpMT09QQkFDSzoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a0xvb3Bi
YWNrOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6V0lGSToKKyAg
ICAgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a1dpZmk7CisgICAgY2FzZSBydGNs
b2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpWUE46CisgICAgICByZXR1cm4gSWNlQ2FuZGlk
YXRlTmV0d29ya1R5cGU6OmtWcG47CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWly
Q29uZmlnOjpDRUxMVUxBUjoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6
a0NlbGx1bGFyOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5L
Tk9XTl9ORVRXT1JLX1RZUEU6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6
OmtVbmtub3duOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBJY2VDYW5kaWRh
dGVOZXR3b3JrVHlwZTo6a1Vua25vd247Cit9CisKK0ljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUg
R2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUoCisgICAgcnRjbG9nMjo6SWNlQ2Fu
ZGlkYXRlUGFpckV2ZW50OjpJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlIHR5cGUpIHsKKyAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6OkNI
RUNLX1NFTlQ6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0NoZWNr
U2VudDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudDo6Q0hFQ0tfUkVD
RUlWRUQ6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0NoZWNrUmVj
ZWl2ZWQ7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6OkNIRUNLX1JF
U1BPTlNFX1NFTlQ6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0No
ZWNrUmVzcG9uc2VTZW50OworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50
OjpDSEVDS19SRVNQT05TRV9SRUNFSVZFRDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWly
RXZlbnRUeXBlOjprQ2hlY2tSZXNwb25zZVJlY2VpdmVkOworICAgIGNhc2UgcnRjbG9nMjo6SWNl
Q2FuZGlkYXRlUGFpckV2ZW50OjpVTktOT1dOX0NIRUNLX1RZUEU6CisgICAgICBicmVhazsKKyAg
fQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlw
ZTo6a0NoZWNrU2VudDsKK30KKworc3RkOjp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiBHZXRSdW50aW1l
UnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnKAorICAgIGNvbnN0IHJ0Y2xvZzI6OlJ0cEhlYWRlckV4
dGVuc2lvbkNvbmZpZyYgcHJvdG9faGVhZGVyX2V4dGVuc2lvbnMpIHsKKyAgc3RkOjp2ZWN0b3I8
UnRwRXh0ZW5zaW9uPiBydHBfZXh0ZW5zaW9uczsKKyAgaWYgKHByb3RvX2hlYWRlcl9leHRlbnNp
b25zLmhhc190cmFuc21pc3Npb25fdGltZV9vZmZzZXRfaWQoKSkgeworICAgIHJ0cF9leHRlbnNp
b25zLmVtcGxhY2VfYmFjaygKKyAgICAgICAgUnRwRXh0ZW5zaW9uOjprVGltZXN0YW1wT2Zmc2V0
VXJpLAorICAgICAgICBwcm90b19oZWFkZXJfZXh0ZW5zaW9ucy50cmFuc21pc3Npb25fdGltZV9v
ZmZzZXRfaWQoKSk7CisgIH0KKyAgaWYgKHByb3RvX2hlYWRlcl9leHRlbnNpb25zLmhhc19hYnNv
bHV0ZV9zZW5kX3RpbWVfaWQoKSkgeworICAgIHJ0cF9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygK
KyAgICAgICAgUnRwRXh0ZW5zaW9uOjprQWJzU2VuZFRpbWVVcmksCisgICAgICAgIHByb3RvX2hl
YWRlcl9leHRlbnNpb25zLmFic29sdXRlX3NlbmRfdGltZV9pZCgpKTsKKyAgfQorICBpZiAocHJv
dG9faGVhZGVyX2V4dGVuc2lvbnMuaGFzX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfaWQoKSkg
eworICAgIHJ0cF9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygKKyAgICAgICAgUnRwRXh0ZW5zaW9u
OjprVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJVcmksCisgICAgICAgIHByb3RvX2hlYWRlcl9leHRl
bnNpb25zLnRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfaWQoKSk7CisgIH0KKyAgaWYgKHByb3Rv
X2hlYWRlcl9leHRlbnNpb25zLmhhc19hdWRpb19sZXZlbF9pZCgpKSB7CisgICAgcnRwX2V4dGVu
c2lvbnMuZW1wbGFjZV9iYWNrKFJ0cEV4dGVuc2lvbjo6a0F1ZGlvTGV2ZWxVcmksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvX2hlYWRlcl9leHRlbnNpb25zLmF1ZGlvX2xl
dmVsX2lkKCkpOworICB9CisgIGlmIChwcm90b19oZWFkZXJfZXh0ZW5zaW9ucy5oYXNfdmlkZW9f
cm90YXRpb25faWQoKSkgeworICAgIHJ0cF9leHRlbnNpb25zLmVtcGxhY2VfYmFjayhSdHBFeHRl
bnNpb246OmtWaWRlb1JvdGF0aW9uVXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm90b19oZWFkZXJfZXh0ZW5zaW9ucy52aWRlb19yb3RhdGlvbl9pZCgpKTsKKyAgfQorICBy
ZXR1cm4gcnRwX2V4dGVuc2lvbnM7Cit9CisvLyBFbmQgb2YgY29udmVyc2lvbiBmdW5jdGlvbnMu
CisKIC8vIFJlYWRzIGEgVmFySW50IGZyb20gfHN0cmVhbXwgYW5kIHJldHVybnMgaXQuIEFsc28g
d3JpdGVzIHRoZSByZWFkIGJ5dGVzIHRvCiAvLyB8YnVmZmVyfCBzdGFydGluZyB8Ynl0ZXNfd3Jp
dHRlbnwgYnl0ZXMgaW50byB0aGUgYnVmZmVyLiB8Ynl0ZXNfd3JpdHRlbnwgaXMKIC8vIGluY3Jl
bWVudGVkIGZvciBlYWNoIHdyaXR0ZW4gYnl0ZS4KQEAgLTI3MSwxNSArNDAzLDMyMiBAQCB2b2lk
IFNvcnRQYWNrZXRGZWVkYmFja1ZlY3RvcldpdGhMb3NzKHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRi
YWNrPiogdmVjKSB7CiAgIHN0ZDo6c29ydCh2ZWMtPmJlZ2luKCksIHZlYy0+ZW5kKCksIExvc3NI
YW5kbGluZ1BhY2tldEZlZWRiYWNrQ29tcGFyYXRvcigpKTsKIH0KIAordGVtcGxhdGUgPHR5cGVu
YW1lIFByb3RvVHlwZSwgdHlwZW5hbWUgTG9nZ2VkVHlwZT4KK3ZvaWQgU3RvcmVSdHBQYWNrZXRz
KAorICAgIGNvbnN0IFByb3RvVHlwZSYgcHJvdG8sCisgICAgc3RkOjptYXA8dWludDMyX3QsIHN0
ZDo6dmVjdG9yPExvZ2dlZFR5cGU+PiogcnRwX3BhY2tldHNfbWFwKSB7CisgIFJUQ19DSEVDSyhw
cm90by5oYXNfdGltZXN0YW1wX21zKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX21hcmtlcigp
KTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19wYXlsb2FkX3R5cGUoKSk7CisgIFJUQ19DSEVDSyhw
cm90by5oYXNfc2VxdWVuY2VfbnVtYmVyKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3J0cF90
aW1lc3RhbXAoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfc3NyYygpKTsKKyAgUlRDX0NIRUNL
KHByb3RvLmhhc19wYXlsb2FkX3NpemUoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfaGVhZGVy
X3NpemUoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfcGFkZGluZ19zaXplKCkpOworCisgIC8v
IEJhc2UgZXZlbnQKKyAgeworICAgIFJUUEhlYWRlciBoZWFkZXI7CisgICAgaGVhZGVyLm1hcmtl
ckJpdCA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PGJvb2w+KHByb3RvLm1hcmtlcigpKTsKKyAgICBoZWFk
ZXIucGF5bG9hZFR5cGUgPSBydGM6OmNoZWNrZWRfY2FzdDx1aW50OF90Pihwcm90by5wYXlsb2Fk
X3R5cGUoKSk7CisgICAgaGVhZGVyLnNlcXVlbmNlTnVtYmVyID0KKyAgICAgICAgcnRjOjpjaGVj
a2VkX2Nhc3Q8dWludDE2X3Q+KHByb3RvLnNlcXVlbmNlX251bWJlcigpKTsKKyAgICBoZWFkZXIu
dGltZXN0YW1wID0gcnRjOjpjaGVja2VkX2Nhc3Q8dWludDMyX3Q+KHByb3RvLnJ0cF90aW1lc3Rh
bXAoKSk7CisgICAgaGVhZGVyLnNzcmMgPSBydGM6OmNoZWNrZWRfY2FzdDx1aW50MzJfdD4ocHJv
dG8uc3NyYygpKTsKKyAgICBoZWFkZXIubnVtQ1NSQ3MgPSAwOyAgLy8gVE9ETyh0ZXJlbGl1cyk6
IEltcGxlbWVudCBDU1JDLgorICAgIGhlYWRlci5wYWRkaW5nTGVuZ3RoID0gcnRjOjpjaGVja2Vk
X2Nhc3Q8c2l6ZV90Pihwcm90by5wYWRkaW5nX3NpemUoKSk7CisgICAgaGVhZGVyLmhlYWRlckxl
bmd0aCA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PHNpemVfdD4ocHJvdG8uaGVhZGVyX3NpemUoKSk7Cisg
ICAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBpbXBsZW1lbnQgcGF5bG9hZF90eXBlX2Zy
ZXF1ZW5jeT8KKyAgICBpZiAocHJvdG8uaGFzX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIoKSkg
eworICAgICAgaGVhZGVyLmV4dGVuc2lvbi5oYXNUcmFuc3BvcnRTZXF1ZW5jZU51bWJlciA9IHRy
dWU7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyID0KKyAg
ICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDx1aW50MTZfdD4ocHJvdG8udHJhbnNwb3J0X3NlcXVl
bmNlX251bWJlcigpKTsKKyAgICB9CisgICAgaWYgKHByb3RvLmhhc190cmFuc21pc3Npb25fdGlt
ZV9vZmZzZXQoKSkgeworICAgICAgaGVhZGVyLmV4dGVuc2lvbi5oYXNUcmFuc21pc3Npb25UaW1l
T2Zmc2V0ID0gdHJ1ZTsKKyAgICAgIGhlYWRlci5leHRlbnNpb24udHJhbnNtaXNzaW9uVGltZU9m
ZnNldCA9CisgICAgICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8aW50MzJfdD4ocHJvdG8udHJhbnNt
aXNzaW9uX3RpbWVfb2Zmc2V0KCkpOworICAgIH0KKyAgICBpZiAocHJvdG8uaGFzX2Fic29sdXRl
X3NlbmRfdGltZSgpKSB7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLmhhc0Fic29sdXRlU2VuZFRp
bWUgPSB0cnVlOworICAgICAgaGVhZGVyLmV4dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1lID0KKyAg
ICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDx1aW50MzJfdD4ocHJvdG8uYWJzb2x1dGVfc2VuZF90
aW1lKCkpOworICAgIH0KKyAgICBpZiAocHJvdG8uaGFzX3ZpZGVvX3JvdGF0aW9uKCkpIHsKKyAg
ICAgIGhlYWRlci5leHRlbnNpb24uaGFzVmlkZW9Sb3RhdGlvbiA9IHRydWU7CisgICAgICBoZWFk
ZXIuZXh0ZW5zaW9uLnZpZGVvUm90YXRpb24gPSBDb252ZXJ0Q1ZPQnl0ZVRvVmlkZW9Sb3RhdGlv
bigKKyAgICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDx1aW50OF90Pihwcm90by52aWRlb19yb3Rh
dGlvbigpKSk7CisgICAgfQorICAgIGlmIChwcm90by5oYXNfYXVkaW9fbGV2ZWwoKSkgeworICAg
ICAgUlRDX0NIRUNLKHByb3RvLmhhc192b2ljZV9hY3Rpdml0eSgpKTsKKyAgICAgIGhlYWRlci5l
eHRlbnNpb24uaGFzQXVkaW9MZXZlbCA9IHRydWU7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLnZv
aWNlQWN0aXZpdHkgPQorICAgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PGJvb2w+KHByb3RvLnZv
aWNlX2FjdGl2aXR5KCkpOworICAgICAgY29uc3QgdWludDhfdCBhdWRpb19sZXZlbCA9CisgICAg
ICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8dWludDhfdD4ocHJvdG8uYXVkaW9fbGV2ZWwoKSk7Cisg
ICAgICBSVENfQ0hFQ0tfTEUoYXVkaW9fbGV2ZWwsIDB4N0Z1KTsKKyAgICAgIGhlYWRlci5leHRl
bnNpb24uYXVkaW9MZXZlbCA9IGF1ZGlvX2xldmVsOworICAgIH0gZWxzZSB7CisgICAgICBSVENf
Q0hFQ0soIXByb3RvLmhhc192b2ljZV9hY3Rpdml0eSgpKTsKKyAgICB9CisgICAgKCpydHBfcGFj
a2V0c19tYXApW2hlYWRlci5zc3JjXS5lbXBsYWNlX2JhY2soCisgICAgICAgIHByb3RvLnRpbWVz
dGFtcF9tcygpICogMTAwMCwgaGVhZGVyLCBwcm90by5oZWFkZXJfc2l6ZSgpLAorICAgICAgICBw
cm90by5wYXlsb2FkX3NpemUoKSArIGhlYWRlci5oZWFkZXJMZW5ndGggKyBoZWFkZXIucGFkZGlu
Z0xlbmd0aCk7CisgIH0KKworICBjb25zdCBzaXplX3QgbnVtYmVyX29mX2RlbHRhcyA9CisgICAg
ICBwcm90by5oYXNfbnVtYmVyX29mX2RlbHRhcygpID8gcHJvdG8ubnVtYmVyX29mX2RlbHRhcygp
IDogMHU7CisgIGlmIChudW1iZXJfb2ZfZGVsdGFzID09IDApIHsKKyAgICByZXR1cm47CisgIH0K
KworICAvLyB0aW1lc3RhbXBfbXMgKGV2ZW50KQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4+IHRpbWVzdGFtcF9tc192YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHBy
b3RvLnRpbWVzdGFtcF9tc19kZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICBUb1Vuc2lnbmVk
KHByb3RvLnRpbWVzdGFtcF9tcygpKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19F
USh0aW1lc3RhbXBfbXNfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8g
bWFya2VyIChSVFAgYmFzZSkKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+
PiBtYXJrZXJfdmFsdWVzID0KKyAgICAgIERlY29kZURlbHRhcyhwcm90by5tYXJrZXJfZGVsdGFz
KCksIHByb3RvLm1hcmtlcigpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKG1h
cmtlcl92YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBwYXlsb2FkX3R5
cGUgKFJUUCBiYXNlKQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHBh
eWxvYWRfdHlwZV92YWx1ZXMgPSBEZWNvZGVEZWx0YXMoCisgICAgICBwcm90by5wYXlsb2FkX3R5
cGVfZGVsdGFzKCksIHByb3RvLnBheWxvYWRfdHlwZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAg
UlRDX0NIRUNLX0VRKHBheWxvYWRfdHlwZV92YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFz
KTsKKworICAvLyBzZXF1ZW5jZV9udW1iZXIgKFJUUCBiYXNlKQorICBzdGQ6OnZlY3RvcjxhYnNs
OjpvcHRpb25hbDx1aW50NjRfdD4+IHNlcXVlbmNlX251bWJlcl92YWx1ZXMgPQorICAgICAgRGVj
b2RlRGVsdGFzKHByb3RvLnNlcXVlbmNlX251bWJlcl9kZWx0YXMoKSwgcHJvdG8uc2VxdWVuY2Vf
bnVtYmVyKCksCisgICAgICAgICAgICAgICAgICAgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19D
SEVDS19FUShzZXF1ZW5jZV9udW1iZXJfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7
CisKKyAgLy8gcnRwX3RpbWVzdGFtcCAoUlRQIGJhc2UpCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90Pj4gcnRwX3RpbWVzdGFtcF92YWx1ZXMgPSBEZWNvZGVEZWx0YXMoCisg
ICAgICBwcm90by5ydHBfdGltZXN0YW1wX2RlbHRhcygpLCBwcm90by5ydHBfdGltZXN0YW1wKCks
IG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEocnRwX3RpbWVzdGFtcF92YWx1ZXMu
c2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBzc3JjIChSVFAgYmFzZSkKKyAgc3Rk
Ojp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBzc3JjX3ZhbHVlcyA9CisgICAgICBE
ZWNvZGVEZWx0YXMocHJvdG8uc3NyY19kZWx0YXMoKSwgcHJvdG8uc3NyYygpLCBudW1iZXJfb2Zf
ZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHNzcmNfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2Rl
bHRhcyk7CisKKyAgLy8gcGF5bG9hZF9zaXplIChSVFAgYmFzZSkKKyAgc3RkOjp2ZWN0b3I8YWJz
bDo6b3B0aW9uYWw8dWludDY0X3Q+PiBwYXlsb2FkX3NpemVfdmFsdWVzID0gRGVjb2RlRGVsdGFz
KAorICAgICAgcHJvdG8ucGF5bG9hZF9zaXplX2RlbHRhcygpLCBwcm90by5wYXlsb2FkX3NpemUo
KSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShwYXlsb2FkX3NpemVfdmFsdWVz
LnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gaGVhZGVyX3NpemUgKFJUUCBiYXNl
KQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGhlYWRlcl9zaXplX3Zh
bHVlcyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3RvLmhlYWRlcl9zaXplX2RlbHRhcygpLCBw
cm90by5oZWFkZXJfc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGhl
YWRlcl9zaXplX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIHBhZGRp
bmdfc2l6ZSAoUlRQIGJhc2UpCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
Pj4gcGFkZGluZ19zaXplX3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3RvLnBhZGRp
bmdfc2l6ZV9kZWx0YXMoKSwgcHJvdG8ucGFkZGluZ19zaXplKCksIG51bWJlcl9vZl9kZWx0YXMp
OworICBSVENfQ0hFQ0tfRVEocGFkZGluZ19zaXplX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9k
ZWx0YXMpOworCisgIC8vIHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgKFJUUCBleHRlbnNpb24p
CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdHJhbnNwb3J0X3NlcXVl
bmNlX251bWJlcl92YWx1ZXM7CisgIHsKKyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRf
dD4gYmFzZV90cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyID0KKyAgICAgICAgcHJvdG8uaGFzX3Ry
YW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIoKQorICAgICAgICAgICAgPyBwcm90by50cmFuc3BvcnRf
c2VxdWVuY2VfbnVtYmVyKCkKKyAgICAgICAgICAgIDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+
KCk7CisgICAgdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl92YWx1ZXMgPQorICAgICAgICBEZWNv
ZGVEZWx0YXMocHJvdG8udHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9kZWx0YXMoKSwKKyAgICAg
ICAgICAgICAgICAgICAgIGJhc2VfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciwgbnVtYmVyX29m
X2RlbHRhcyk7CisgICAgUlRDX0NIRUNLX0VRKHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfdmFs
dWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIH0KKworICAvLyB0cmFuc21pc3Npb25f
dGltZV9vZmZzZXQgKFJUUCBleHRlbnNpb24pCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90Pj4gdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X3ZhbHVlczsKKyAgeworICAgIGNv
bnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiB1bnNpZ25lZF9iYXNlX3RyYW5zbWlzc2lvbl90
aW1lX29mZnNldCA9CisgICAgICAgIHByb3RvLmhhc190cmFuc21pc3Npb25fdGltZV9vZmZzZXQo
KQorICAgICAgICAgICAgPyBUb1Vuc2lnbmVkKHByb3RvLnRyYW5zbWlzc2lvbl90aW1lX29mZnNl
dCgpKQorICAgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgICB0cmFu
c21pc3Npb25fdGltZV9vZmZzZXRfdmFsdWVzID0KKyAgICAgICAgRGVjb2RlRGVsdGFzKHByb3Rv
LnRyYW5zbWlzc2lvbl90aW1lX29mZnNldF9kZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkX2Jhc2VfdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0LCBudW1iZXJfb2ZfZGVsdGFz
KTsKKyAgICBSVENfQ0hFQ0tfRVEodHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X3ZhbHVlcy5zaXpl
KCksIG51bWJlcl9vZl9kZWx0YXMpOworICB9CisKKyAgLy8gYWJzb2x1dGVfc2VuZF90aW1lIChS
VFAgZXh0ZW5zaW9uKQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGFi
c29sdXRlX3NlbmRfdGltZV92YWx1ZXM7CisgIHsKKyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4gYmFzZV9hYnNvbHV0ZV9zZW5kX3RpbWUgPQorICAgICAgICBwcm90by5oYXNfYWJz
b2x1dGVfc2VuZF90aW1lKCkgPyBwcm90by5hYnNvbHV0ZV9zZW5kX3RpbWUoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4o
KTsKKyAgICBhYnNvbHV0ZV9zZW5kX3RpbWVfdmFsdWVzID0KKyAgICAgICAgRGVjb2RlRGVsdGFz
KHByb3RvLmFic29sdXRlX3NlbmRfdGltZV9kZWx0YXMoKSwgYmFzZV9hYnNvbHV0ZV9zZW5kX3Rp
bWUsCisgICAgICAgICAgICAgICAgICAgICBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgICBSVENfQ0hF
Q0tfRVEoYWJzb2x1dGVfc2VuZF90aW1lX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMp
OworICB9CisKKyAgLy8gdmlkZW9fcm90YXRpb24gKFJUUCBleHRlbnNpb24pCisgIHN0ZDo6dmVj
dG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmlkZW9fcm90YXRpb25fdmFsdWVzOworICB7
CisgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2VfdmlkZW9fcm90YXRpb24g
PQorICAgICAgICBwcm90by5oYXNfdmlkZW9fcm90YXRpb24oKSA/IHByb3RvLnZpZGVvX3JvdGF0
aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4oKTsKKyAgICB2aWRlb19yb3RhdGlvbl92YWx1ZXMgPSBEZWNvZGVEZWx0YXMo
cHJvdG8udmlkZW9fcm90YXRpb25fZGVsdGFzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2VfdmlkZW9fcm90YXRpb24sIG51bWJlcl9vZl9kZWx0YXMpOwor
ICAgIFJUQ19DSEVDS19FUSh2aWRlb19yb3RhdGlvbl92YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2Zf
ZGVsdGFzKTsKKyAgfQorCisgIC8vIGF1ZGlvX2xldmVsIChSVFAgZXh0ZW5zaW9uKQorICBzdGQ6
OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGF1ZGlvX2xldmVsX3ZhbHVlczsKKyAg
eworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlX2F1ZGlvX2xldmVsID0K
KyAgICAgICAgcHJvdG8uaGFzX2F1ZGlvX2xldmVsKCkgPyBwcm90by5hdWRpb19sZXZlbCgpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+
KCk7CisgICAgYXVkaW9fbGV2ZWxfdmFsdWVzID0gRGVjb2RlRGVsdGFzKHByb3RvLmF1ZGlvX2xl
dmVsX2RlbHRhcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
X2F1ZGlvX2xldmVsLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgICBSVENfQ0hFQ0tfRVEoYXVkaW9f
bGV2ZWxfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIH0KKworICAvLyB2b2lj
ZV9hY3Rpdml0eSAoUlRQIGV4dGVuc2lvbikKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+PiB2b2ljZV9hY3Rpdml0eV92YWx1ZXM7CisgIHsKKyAgICBjb25zdCBhYnNsOjpv
cHRpb25hbDx1aW50NjRfdD4gYmFzZV92b2ljZV9hY3Rpdml0eSA9CisgICAgICAgIHByb3RvLmhh
c192b2ljZV9hY3Rpdml0eSgpID8gcHJvdG8udm9pY2VfYWN0aXZpdHkoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICAg
IHZvaWNlX2FjdGl2aXR5X3ZhbHVlcyA9IERlY29kZURlbHRhcyhwcm90by52b2ljZV9hY3Rpdml0
eV9kZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZV92b2ljZV9hY3Rpdml0eSwgbnVtYmVyX29mX2RlbHRhcyk7CisgICAgUlRDX0NIRUNLX0VRKHZv
aWNlX2FjdGl2aXR5X3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworICB9CisKKyAg
Ly8gRGVsdGEgZGVjb2RpbmcKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJfb2ZfZGVs
dGFzOyArK2kpIHsKKyAgICBSVENfQ0hFQ0sodGltZXN0YW1wX21zX3ZhbHVlc1tpXS5oYXNfdmFs
dWUoKSk7CisgICAgUlRDX0NIRUNLKG1hcmtlcl92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAg
IFJUQ19DSEVDSyhwYXlsb2FkX3R5cGVfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBSVENf
Q0hFQ0soc2VxdWVuY2VfbnVtYmVyX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgUlRDX0NI
RUNLKHJ0cF90aW1lc3RhbXBfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBSVENfQ0hFQ0so
c3NyY192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDSyhwYXlsb2FkX3NpemVf
dmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBSVENfQ0hFQ0soaGVhZGVyX3NpemVfdmFsdWVz
W2ldLmhhc192YWx1ZSgpKTsKKyAgICBSVENfQ0hFQ0socGFkZGluZ19zaXplX3ZhbHVlc1tpXS5o
YXNfdmFsdWUoKSk7CisKKyAgICBpbnQ2NF90IHRpbWVzdGFtcF9tczsKKyAgICBSVENfQ0hFQ0so
VG9TaWduZWQodGltZXN0YW1wX21zX3ZhbHVlc1tpXS52YWx1ZSgpLCAmdGltZXN0YW1wX21zKSk7
CisKKyAgICBSVFBIZWFkZXIgaGVhZGVyOworICAgIGhlYWRlci5tYXJrZXJCaXQgPSBydGM6OmNo
ZWNrZWRfY2FzdDxib29sPigqbWFya2VyX3ZhbHVlc1tpXSk7CisgICAgaGVhZGVyLnBheWxvYWRU
eXBlID0gcnRjOjpjaGVja2VkX2Nhc3Q8dWludDhfdD4oKnBheWxvYWRfdHlwZV92YWx1ZXNbaV0p
OworICAgIGhlYWRlci5zZXF1ZW5jZU51bWJlciA9CisgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0
PHVpbnQxNl90Pigqc2VxdWVuY2VfbnVtYmVyX3ZhbHVlc1tpXSk7CisgICAgaGVhZGVyLnRpbWVz
dGFtcCA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQzMl90PigqcnRwX3RpbWVzdGFtcF92YWx1ZXNb
aV0pOworICAgIGhlYWRlci5zc3JjID0gcnRjOjpjaGVja2VkX2Nhc3Q8dWludDMyX3Q+KCpzc3Jj
X3ZhbHVlc1tpXSk7CisgICAgaGVhZGVyLm51bUNTUkNzID0gMDsgIC8vIFRPRE8odGVyZWxpdXMp
OiBJbXBsZW1lbnQgQ1NSQy4KKyAgICBoZWFkZXIucGFkZGluZ0xlbmd0aCA9IHJ0Yzo6Y2hlY2tl
ZF9jYXN0PHNpemVfdD4oKnBhZGRpbmdfc2l6ZV92YWx1ZXNbaV0pOworICAgIGhlYWRlci5oZWFk
ZXJMZW5ndGggPSBydGM6OmNoZWNrZWRfY2FzdDxzaXplX3Q+KCpoZWFkZXJfc2l6ZV92YWx1ZXNb
aV0pOworICAgIC8vIFRPRE8odGVyZWxpdXMpOiBTaG91bGQgd2UgaW1wbGVtZW50IHBheWxvYWRf
dHlwZV9mcmVxdWVuY3k/CisgICAgaWYgKHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfdmFsdWVz
LnNpemUoKSA+IGkgJiYKKyAgICAgICAgdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl92YWx1ZXNb
aV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIGhlYWRlci5leHRlbnNpb24uaGFzVHJhbnNwb3J0U2Vx
dWVuY2VOdW1iZXIgPSB0cnVlOworICAgICAgaGVhZGVyLmV4dGVuc2lvbi50cmFuc3BvcnRTZXF1
ZW5jZU51bWJlciA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQxNl90PigKKyAgICAgICAgICB0cmFu
c3BvcnRfc2VxdWVuY2VfbnVtYmVyX3ZhbHVlc1tpXS52YWx1ZSgpKTsKKyAgICB9CisgICAgaWYg
KHRyYW5zbWlzc2lvbl90aW1lX29mZnNldF92YWx1ZXMuc2l6ZSgpID4gaSAmJgorICAgICAgICB0
cmFuc21pc3Npb25fdGltZV9vZmZzZXRfdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBo
ZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zbWlzc2lvblRpbWVPZmZzZXQgPSB0cnVlOworICAgICAg
aW50MzJfdCB0cmFuc21pc3Npb25fdGltZV9vZmZzZXQ7CisgICAgICBSVENfQ0hFQ0soVG9TaWdu
ZWQodHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X3ZhbHVlc1tpXS52YWx1ZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICZ0cmFuc21pc3Npb25fdGltZV9vZmZzZXQpKTsKKyAgICAgIGhlYWRl
ci5leHRlbnNpb24udHJhbnNtaXNzaW9uVGltZU9mZnNldCA9IHRyYW5zbWlzc2lvbl90aW1lX29m
ZnNldDsKKyAgICB9CisgICAgaWYgKGFic29sdXRlX3NlbmRfdGltZV92YWx1ZXMuc2l6ZSgpID4g
aSAmJgorICAgICAgICBhYnNvbHV0ZV9zZW5kX3RpbWVfdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7
CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLmhhc0Fic29sdXRlU2VuZFRpbWUgPSB0cnVlOworICAg
ICAgaGVhZGVyLmV4dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1lID0KKyAgICAgICAgICBydGM6OmNo
ZWNrZWRfY2FzdDx1aW50MzJfdD4oYWJzb2x1dGVfc2VuZF90aW1lX3ZhbHVlc1tpXS52YWx1ZSgp
KTsKKyAgICB9CisgICAgaWYgKHZpZGVvX3JvdGF0aW9uX3ZhbHVlcy5zaXplKCkgPiBpICYmCisg
ICAgICAgIHZpZGVvX3JvdGF0aW9uX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSkgeworICAgICAgaGVh
ZGVyLmV4dGVuc2lvbi5oYXNWaWRlb1JvdGF0aW9uID0gdHJ1ZTsKKyAgICAgIGhlYWRlci5leHRl
bnNpb24udmlkZW9Sb3RhdGlvbiA9IENvbnZlcnRDVk9CeXRlVG9WaWRlb1JvdGF0aW9uKAorICAg
ICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQ4X3Q+KHZpZGVvX3JvdGF0aW9uX3ZhbHVlc1tp
XS52YWx1ZSgpKSk7CisgICAgfQorICAgIGlmIChhdWRpb19sZXZlbF92YWx1ZXMuc2l6ZSgpID4g
aSAmJiBhdWRpb19sZXZlbF92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIFJUQ19DSEVD
Syh2b2ljZV9hY3Rpdml0eV92YWx1ZXMuc2l6ZSgpID4gaSAmJgorICAgICAgICAgICAgICAgIHZv
aWNlX2FjdGl2aXR5X3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgICBoZWFkZXIuZXh0ZW5z
aW9uLmhhc0F1ZGlvTGV2ZWwgPSB0cnVlOworICAgICAgaGVhZGVyLmV4dGVuc2lvbi52b2ljZUFj
dGl2aXR5ID0KKyAgICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDxib29sPih2b2ljZV9hY3Rpdml0
eV92YWx1ZXNbaV0udmFsdWUoKSk7CisgICAgICBjb25zdCB1aW50OF90IGF1ZGlvX2xldmVsID0K
KyAgICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDx1aW50OF90PihhdWRpb19sZXZlbF92YWx1ZXNb
aV0udmFsdWUoKSk7CisgICAgICBSVENfQ0hFQ0tfTEUoYXVkaW9fbGV2ZWwsIDB4N0Z1KTsKKyAg
ICAgIGhlYWRlci5leHRlbnNpb24uYXVkaW9MZXZlbCA9IGF1ZGlvX2xldmVsOworICAgIH0gZWxz
ZSB7CisgICAgICBSVENfQ0hFQ0sodm9pY2VfYWN0aXZpdHlfdmFsdWVzLnNpemUoKSA8PSBpIHx8
CisgICAgICAgICAgICAgICAgIXZvaWNlX2FjdGl2aXR5X3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7
CisgICAgfQorICAgICgqcnRwX3BhY2tldHNfbWFwKVtoZWFkZXIuc3NyY10uZW1wbGFjZV9iYWNr
KAorICAgICAgICAxMDAwICogdGltZXN0YW1wX21zLCBoZWFkZXIsIGhlYWRlci5oZWFkZXJMZW5n
dGgsCisgICAgICAgIHBheWxvYWRfc2l6ZV92YWx1ZXNbaV0udmFsdWUoKSArIGhlYWRlci5oZWFk
ZXJMZW5ndGggKworICAgICAgICAgICAgaGVhZGVyLnBhZGRpbmdMZW5ndGgpOworICB9Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBQcm90b1R5cGUsIHR5cGVuYW1lIExvZ2dlZFR5cGU+Cit2b2lk
IFN0b3JlUnRjcFBhY2tldHMoY29uc3QgUHJvdG9UeXBlJiBwcm90bywKKyAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnZlY3RvcjxMb2dnZWRUeXBlPiogcnRjcF9wYWNrZXRzKSB7CisgIFJUQ19D
SEVDSyhwcm90by5oYXNfdGltZXN0YW1wX21zKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3Jh
d19wYWNrZXQoKSk7CisKKyAgLy8gQmFzZSBldmVudAorICBydGNwX3BhY2tldHMtPmVtcGxhY2Vf
YmFjayhwcm90by50aW1lc3RhbXBfbXMoKSAqIDEwMDAsIHByb3RvLnJhd19wYWNrZXQoKSk7CisK
KyAgY29uc3Qgc2l6ZV90IG51bWJlcl9vZl9kZWx0YXMgPQorICAgICAgcHJvdG8uaGFzX251bWJl
cl9vZl9kZWx0YXMoKSA/IHByb3RvLm51bWJlcl9vZl9kZWx0YXMoKSA6IDB1OworICBpZiAobnVt
YmVyX29mX2RlbHRhcyA9PSAwKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgLy8gdGltZXN0YW1w
X21zCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdGltZXN0YW1wX21z
X3ZhbHVlcyA9CisgICAgICBEZWNvZGVEZWx0YXMocHJvdG8udGltZXN0YW1wX21zX2RlbHRhcygp
LAorICAgICAgICAgICAgICAgICAgIFRvVW5zaWduZWQocHJvdG8udGltZXN0YW1wX21zKCkpLCBu
dW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHRpbWVzdGFtcF9tc192YWx1ZXMuc2l6
ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyByYXdfcGFja2V0CisgIFJUQ19DSEVDSyhw
cm90by5oYXNfcmF3X3BhY2tldF9ibG9icygpKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5n
X3ZpZXc+IHJhd19wYWNrZXRfdmFsdWVzID0KKyAgICAgIERlY29kZUJsb2JzKHByb3RvLnJhd19w
YWNrZXRfYmxvYnMoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShyYXdfcGFj
a2V0X3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIERlbHRhIGRlY29k
aW5nCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyX29mX2RlbHRhczsgKytpKSB7Cisg
ICAgUlRDX0NIRUNLKHRpbWVzdGFtcF9tc192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIGlu
dDY0X3QgdGltZXN0YW1wX21zOworICAgIFJUQ19DSEVDSyhUb1NpZ25lZCh0aW1lc3RhbXBfbXNf
dmFsdWVzW2ldLnZhbHVlKCksICZ0aW1lc3RhbXBfbXMpKTsKKworICAgIHJ0Y3BfcGFja2V0cy0+
ZW1wbGFjZV9iYWNrKAorICAgICAgICAxMDAwICogdGltZXN0YW1wX21zLAorICAgICAgICByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihyYXdfcGFja2V0X3ZhbHVlc1tpXS5kYXRhKCkp
LAorICAgICAgICByYXdfcGFja2V0X3ZhbHVlc1tpXS5zaXplKCkpOworICB9Cit9CisKIH0gIC8v
IG5hbWVzcGFjZQogCiBMb2dnZWRSdGNwUGFja2V0OjpMb2dnZWRSdGNwUGFja2V0KHVpbnQ2NF90
IHRpbWVzdGFtcF91cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCogcGFja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgdG90YWxfbGVuZ3RoKQogICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIHJhd19k
YXRhKHBhY2tldCwgcGFja2V0ICsgdG90YWxfbGVuZ3RoKSB7fQorTG9nZ2VkUnRjcFBhY2tldDo6
TG9nZ2VkUnRjcFBhY2tldCh1aW50NjRfdCB0aW1lc3RhbXBfdXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYWNrZXQpCisgICAgOiB0aW1l
c3RhbXBfdXModGltZXN0YW1wX3VzKSwgcmF3X2RhdGEocGFja2V0LnNpemUoKSkgeworICBtZW1j
cHkocmF3X2RhdGEuZGF0YSgpLCBwYWNrZXQuZGF0YSgpLCBwYWNrZXQuc2l6ZSgpKTsKK30KIExv
Z2dlZFJ0Y3BQYWNrZXQ6OkxvZ2dlZFJ0Y3BQYWNrZXQoY29uc3QgTG9nZ2VkUnRjcFBhY2tldCYg
cmhzKSA9IGRlZmF1bHQ7CiBMb2dnZWRSdGNwUGFja2V0Ojp+TG9nZ2VkUnRjcFBhY2tldCgpID0g
ZGVmYXVsdDsKIAorTG9nZ2VkVmlkZW9TZW5kQ29uZmlnOjpMb2dnZWRWaWRlb1NlbmRDb25maWco
KSA9IGRlZmF1bHQ7CiBMb2dnZWRWaWRlb1NlbmRDb25maWc6OkxvZ2dlZFZpZGVvU2VuZENvbmZp
ZygKICAgICBpbnQ2NF90IHRpbWVzdGFtcF91cywKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxydGNs
b2c6OlN0cmVhbUNvbmZpZz4mIGNvbmZpZ3MpCkBAIC0zNjEsNyArODAwLDYgQEAgUGFyc2VkUnRj
RXZlbnRMb2dOZXc6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3KAogfQogCiB2b2lkIFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpDbGVhcigpIHsKLSAgZXZlbnRzXy5jbGVhcigpOwogICBkZWZhdWx0X2V4dGVu
c2lvbl9tYXBfID0gR2V0RGVmYXVsdEhlYWRlckV4dGVuc2lvbk1hcCgpOwogCiAgIGluY29taW5n
X3J0eF9zc3Jjc18uY2xlYXIoKTsKQEAgLTQ3OCw5ICs5MTYsOCBAQCBib29sIFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpQYXJzZVN0cmVhbSgKIAogYm9vbCBQYXJzZWRSdGNFdmVudExvZ05ldzo6UGFy
c2VTdHJlYW1JbnRlcm5hbCgKICAgICBzdGQ6OmlzdHJlYW0mIHN0cmVhbSkgeyAgLy8gbm8tcHJl
c3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCi0gIGNvbnN0IHNpemVfdCBrTWF4RXZlbnRT
aXplID0gKDF1IDw8IDE2KSAtIDE7Ci0gIGNvbnN0IHNpemVfdCBrTWF4VmFyaW50U2l6ZSA9IDEw
OwotICBzdGQ6OnZlY3RvcjxjaGFyPiBidWZmZXIoa01heEV2ZW50U2l6ZSArIDIgKiBrTWF4VmFy
aW50U2l6ZSk7CisgIGNvbnN0ZXhwciB1aW50NjRfdCBrTWF4RXZlbnRTaXplID0gMTAwMDAwMDA7
ICAvLyBTYW5pdHkgY2hlY2suCisgIHN0ZDo6dmVjdG9yPGNoYXI+IGJ1ZmZlcigweEZGRkYpOwog
CiAgIFJUQ19EQ0hFQ0soc3RyZWFtLmdvb2QoKSk7CiAKQEAgLTQ5MSwxMCArOTI4LDEyIEBAIGJv
b2wgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlBhcnNlU3RyZWFtSW50ZXJuYWwoCiAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICAvLyBSZWFkIHRoZSBuZXh0IG1lc3NhZ2UgdGFnLiBUaGUgdGFnIG51
bWJlciBpcyBkZWZpbmVkIGFzCi0gICAgLy8gKGZpZWxkbnVtYmVyIDw8IDMpIHwgd2lyZV90eXBl
LiBJbiBvdXIgY2FzZSwgdGhlIGZpZWxkIG51bWJlciBpcwotICAgIC8vIHN1cHBvc2VkIHRvIGJl
IDEgYW5kIHRoZSB3aXJlIHR5cGUgZm9yIGEgbGVuZ3RoLWRlbGltaXRlZCBmaWVsZCBpcyAyLgot
ICAgIGNvbnN0IHVpbnQ2NF90IGtFeHBlY3RlZFYxVGFnID0gKDEgPDwgMykgfCAyOworICAgIC8v
IFJlYWQgdGhlIG5leHQgbWVzc2FnZSB0YWcuIFByb3RvYnVmIGRlZmluZXMgdGhlIG1lc3NhZ2Ug
dGFnIGFzCisgICAgLy8gKGZpZWxkX251bWJlciA8PCAzKSB8IHdpcmVfdHlwZS4gSW4gdGhlIGxl
Z2FjeSBlbmNvZGluZywgdGhlIGZpZWxkIG51bWJlcgorICAgIC8vIGlzIHN1cHBvc2VkIHRvIGJl
IDEgYW5kIHRoZSB3aXJlIHR5cGUgZm9yIGEgbGVuZ3RoLWRlbGltaXRlZCBmaWVsZCBpcyAyLgor
ICAgIC8vIEluIHRoZSBuZXcgZW5jb2Rpbmcgd2Ugc3RpbGwgZXhwZWN0IHRoZSB3aXJlIHR5cGUg
dG8gYmUgMiwgYnV0IHRoZSBmaWVsZAorICAgIC8vIG51bWJlciB3aWxsIGJlIGdyZWF0ZXIgdGhh
biAxLgorICAgIGNvbnN0ZXhwciB1aW50NjRfdCBrRXhwZWN0ZWRWMVRhZyA9ICgxIDw8IDMpIHwg
MjsKICAgICBzaXplX3QgYnl0ZXNfd3JpdHRlbiA9IDA7CiAgICAgYWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHRhZyA9CiAgICAgICAgIFBhcnNlVmFySW50KHN0cmVhbSwgYnVmZmVyLmRhdGEoKSwg
JmJ5dGVzX3dyaXR0ZW4pOwpAQCAtNTAyLDkgKzk0MSwxMyBAQCBib29sIFBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpQYXJzZVN0cmVhbUludGVybmFsKAogICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQog
ICAgICAgICAgIDw8ICJNaXNzaW5nIGZpZWxkIHRhZyBmcm9tIGJlZ2lubmluZyBvZiBwcm90b2J1
ZiBldmVudC4iOwogICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSBpZiAoKnRhZyAhPSBr
RXhwZWN0ZWRWMVRhZykgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQotICAgICAgICAgIDw8
ICJVbmV4cGVjdGVkIGZpZWxkIHRhZyBhdCBiZWdpbm5pbmcgb2YgcHJvdG9idWYgZXZlbnQuIjsK
KyAgICB9CisgICAgY29uc3RleHByIHVpbnQ2NF90IGtXaXJlVHlwZU1hc2sgPSAweDA3OworICAg
IGNvbnN0IHVpbnQ2NF90IHdpcmVfdHlwZSA9ICp0YWcgJiBrV2lyZVR5cGVNYXNrOworICAgIGlm
ICh3aXJlX3R5cGUgIT0gMikgeworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRXhwZWN0
ZWQgZmllbGQgdGFnIHdpdGggd2lyZSB0eXBlIDIgKGxlbmd0aCAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZWxpbWl0ZWQgbWVzc2FnZSkuIEZvdW5kIHdpcmUgdHlwZSAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IHdpcmVfdHlwZTsKICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTUyMCw2ICs5NjMsOCBAQCBib29sIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpQ
YXJzZVN0cmVhbUludGVybmFsKAogICAgIH0KIAogICAgIC8vIFJlYWQgdGhlIG5leHQgcHJvdG9i
dWYgZXZlbnQgdG8gYSB0ZW1wb3JhcnkgY2hhciBidWZmZXIuCisgICAgaWYgKGJ1ZmZlci5zaXpl
KCkgPCBieXRlc193cml0dGVuICsgKm1lc3NhZ2VfbGVuZ3RoKQorICAgICAgYnVmZmVyLnJlc2l6
ZShieXRlc193cml0dGVuICsgKm1lc3NhZ2VfbGVuZ3RoKTsKICAgICBzdHJlYW0ucmVhZChidWZm
ZXIuZGF0YSgpICsgYnl0ZXNfd3JpdHRlbiwgKm1lc3NhZ2VfbGVuZ3RoKTsKICAgICBpZiAoc3Ry
ZWFtLmdjb3VudCgpICE9IHN0YXRpY19jYXN0PGludD4oKm1lc3NhZ2VfbGVuZ3RoKSkgewogICAg
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHJlYWQgcHJvdG9idWYgbWVzc2Fn
ZSBmcm9tIGZpbGUuIjsKQEAgLTUyNywyMSArOTcyLDMyIEBAIGJvb2wgUGFyc2VkUnRjRXZlbnRM
b2dOZXc6OlBhcnNlU3RyZWFtSW50ZXJuYWwoCiAgICAgfQogICAgIHNpemVfdCBidWZmZXJfc2l6
ZSA9IGJ5dGVzX3dyaXR0ZW4gKyAqbWVzc2FnZV9sZW5ndGg7CiAKLSAgICAvLyBQYXJzZSB0aGUg
cHJvdG9idWYgZXZlbnQgZnJvbSB0aGUgYnVmZmVyLgotICAgIHJ0Y2xvZzo6RXZlbnRTdHJlYW0g
ZXZlbnRfc3RyZWFtOwotICAgIGlmICghZXZlbnRfc3RyZWFtLlBhcnNlRnJvbUFycmF5KGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlcl9zaXplKSkgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
RmFpbGVkIHRvIHBhcnNlIHByb3RvYnVmIG1lc3NhZ2UuIjsKLSAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9CisgICAgaWYgKCp0YWcgPT0ga0V4cGVjdGVkVjFUYWcpIHsKKyAgICAgIC8vIFBhcnNl
IHRoZSBwcm90b2J1ZiBldmVudCBmcm9tIHRoZSBidWZmZXIuCisgICAgICBydGNsb2c6OkV2ZW50
U3RyZWFtIGV2ZW50X3N0cmVhbTsKKyAgICAgIGlmICghZXZlbnRfc3RyZWFtLlBhcnNlRnJvbUFy
cmF5KGJ1ZmZlci5kYXRhKCksIGJ1ZmZlcl9zaXplKSkgeworICAgICAgICBSVENfTE9HKExTX1dB
Uk5JTkcpCisgICAgICAgICAgICA8PCAiRmFpbGVkIHRvIHBhcnNlIGxlZ2FjeS1mb3JtYXQgcHJv
dG9idWYgbWVzc2FnZS4iOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CiAKLSAgICBS
VENfQ0hFQ0tfRVEoZXZlbnRfc3RyZWFtLnN0cmVhbV9zaXplKCksIDEpOwotICAgIFN0b3JlUGFy
c2VkRXZlbnQoZXZlbnRfc3RyZWFtLnN0cmVhbSgwKSk7Ci0gICAgZXZlbnRzXy5wdXNoX2JhY2so
ZXZlbnRfc3RyZWFtLnN0cmVhbSgwKSk7CisgICAgICBSVENfQ0hFQ0tfRVEoZXZlbnRfc3RyZWFt
LnN0cmVhbV9zaXplKCksIDEpOworICAgICAgU3RvcmVQYXJzZWRMZWdhY3lFdmVudChldmVudF9z
dHJlYW0uc3RyZWFtKDApKTsKKyAgICB9IGVsc2UgeworICAgICAgLy8gUGFyc2UgdGhlIHByb3Rv
YnVmIGV2ZW50IGZyb20gdGhlIGJ1ZmZlci4KKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtIGV2
ZW50X3N0cmVhbTsKKyAgICAgIGlmICghZXZlbnRfc3RyZWFtLlBhcnNlRnJvbUFycmF5KGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlcl9zaXplKSkgeworICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8
ICJGYWlsZWQgdG8gcGFyc2UgbmV3LWZvcm1hdCBwcm90b2J1ZiBtZXNzYWdlLiI7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIFN0b3JlUGFyc2VkTmV3Rm9ybWF0RXZlbnQo
ZXZlbnRfc3RyZWFtKTsKKyAgICB9CiAgIH0KICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUGFy
c2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlUGFyc2VkRXZlbnQoY29uc3QgcnRjbG9nOjpFdmVudCYg
ZXZlbnQpIHsKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlUGFyc2VkTGVnYWN5RXZl
bnQoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIHsKKyAgUlRDX0NIRUNLKGV2ZW50Lmhhc190
eXBlKCkpOwogICBpZiAoZXZlbnQudHlwZSgpICE9IHJ0Y2xvZzo6RXZlbnQ6OlZJREVPX1JFQ0VJ
VkVSX0NPTkZJR19FVkVOVCAmJgogICAgICAgZXZlbnQudHlwZSgpICE9IHJ0Y2xvZzo6RXZlbnQ6
OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQgJiYKICAgICAgIGV2ZW50LnR5cGUoKSAhPSBydGNs
b2c6OkV2ZW50OjpBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQgJiYKQEAgLTU1NCw1NSArMTAx
MCw2MyBAQCB2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZVBhcnNlZEV2ZW50KGNvbnN0
IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSB7CiAgICAgbGFzdF90aW1lc3RhbXBfID0gc3RkOjptYXgo
bGFzdF90aW1lc3RhbXBfLCB0aW1lc3RhbXApOwogICB9CiAKLSAgc3dpdGNoIChHZXRFdmVudFR5
cGUoZXZlbnQpKSB7Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpW
SURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6IHsKKyAgc3dpdGNoIChldmVudC50eXBlKCkpIHsK
KyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OlZJREVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDogewog
ICAgICAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnID0gR2V0VmlkZW9SZWNlaXZlQ29uZmln
KGV2ZW50KTsKICAgICAgIHZpZGVvX3JlY3ZfY29uZmlnc18uZW1wbGFjZV9iYWNrKEdldFRpbWVz
dGFtcChldmVudCksIGNvbmZpZyk7Ci0gICAgICBpbmNvbWluZ19ydHBfZXh0ZW5zaW9uc19tYXBz
X1tjb25maWcucmVtb3RlX3NzcmNdID0KLSAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAo
Y29uZmlnLnJ0cF9leHRlbnNpb25zKTsKLSAgICAgIC8vIFRPRE8odGVyZWxpdXMpOiBJIGRvbid0
IHVuZGVyc3RhbmQgdGhlIHJlYXNvbiBmb3IgY29uZmlndXJpbmcgaGVhZGVyCi0gICAgICAvLyBl
eHRlbnNpb25zIGZvciB0aGUgbG9jYWwgU1NSQy4gSSB0aGluayBpdCBzaG91bGQgYmUgcmVtb3Zl
ZCwgYnV0IGZvcgotICAgICAgLy8gbm93IEkgd2FudCB0byBwcmVzZXJ2ZSB0aGUgcHJldmlvdXMg
ZnVuY3Rpb25hbGl0eS4KLSAgICAgIGluY29taW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZp
Zy5sb2NhbF9zc3JjXSA9Ci0gICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5y
dHBfZXh0ZW5zaW9ucyk7CisgICAgICBpZiAoIWNvbmZpZy5ydHBfZXh0ZW5zaW9ucy5lbXB0eSgp
KSB7CisgICAgICAgIGluY29taW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5yZW1vdGVf
c3NyY10gPQorICAgICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0
ZW5zaW9ucyk7CisgICAgICAgIC8vIFRPRE8odGVyZWxpdXMpOiBJIGRvbid0IHVuZGVyc3RhbmQg
dGhlIHJlYXNvbiBmb3IgY29uZmlndXJpbmcgaGVhZGVyCisgICAgICAgIC8vIGV4dGVuc2lvbnMg
Zm9yIHRoZSBsb2NhbCBTU1JDLiBJIHRoaW5rIGl0IHNob3VsZCBiZSByZW1vdmVkLCBidXQgZm9y
CisgICAgICAgIC8vIG5vdyBJIHdhbnQgdG8gcHJlc2VydmUgdGhlIHByZXZpb3VzIGZ1bmN0aW9u
YWxpdHkuCisgICAgICAgIGluY29taW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5sb2Nh
bF9zc3JjXSA9CisgICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9l
eHRlbnNpb25zKTsKKyAgICAgIH0KICAgICAgIGluY29taW5nX3ZpZGVvX3NzcmNzXy5pbnNlcnQo
Y29uZmlnLnJlbW90ZV9zc3JjKTsKICAgICAgIGluY29taW5nX3ZpZGVvX3NzcmNzXy5pbnNlcnQo
Y29uZmlnLnJ0eF9zc3JjKTsKICAgICAgIGluY29taW5nX3J0eF9zc3Jjc18uaW5zZXJ0KGNvbmZp
Zy5ydHhfc3NyYyk7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVu
dExvZ05ldzo6RXZlbnRUeXBlOjpWSURFT19TRU5ERVJfQ09ORklHX0VWRU5UOiB7CisgICAgY2Fz
ZSBydGNsb2c6OkV2ZW50OjpWSURFT19TRU5ERVJfQ09ORklHX0VWRU5UOiB7CiAgICAgICBzdGQ6
OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmlncyA9IEdldFZpZGVvU2VuZENvbmZp
ZyhldmVudCk7CiAgICAgICB2aWRlb19zZW5kX2NvbmZpZ3NfLmVtcGxhY2VfYmFjayhHZXRUaW1l
c3RhbXAoZXZlbnQpLCBjb25maWdzKTsKICAgICAgIGZvciAoY29uc3QgYXV0byYgY29uZmlnIDog
Y29uZmlncykgewotICAgICAgICBvdXRnb2luZ19ydHBfZXh0ZW5zaW9uc19tYXBzX1tjb25maWcu
bG9jYWxfc3NyY10gPQotICAgICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5y
dHBfZXh0ZW5zaW9ucyk7Ci0gICAgICAgIG91dGdvaW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2Nv
bmZpZy5ydHhfc3NyY10gPQotICAgICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZp
Zy5ydHBfZXh0ZW5zaW9ucyk7CisgICAgICAgIGlmICghY29uZmlnLnJ0cF9leHRlbnNpb25zLmVt
cHR5KCkpIHsKKyAgICAgICAgICBvdXRnb2luZ19ydHBfZXh0ZW5zaW9uc19tYXBzX1tjb25maWcu
bG9jYWxfc3NyY10gPQorICAgICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmln
LnJ0cF9leHRlbnNpb25zKTsKKyAgICAgICAgICBvdXRnb2luZ19ydHBfZXh0ZW5zaW9uc19tYXBz
X1tjb25maWcucnR4X3NzcmNdID0KKyAgICAgICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFw
KGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7CisgICAgICAgIH0KICAgICAgICAgb3V0Z29pbmdfdmlk
ZW9fc3NyY3NfLmluc2VydChjb25maWcubG9jYWxfc3NyYyk7CiAgICAgICAgIG91dGdvaW5nX3Zp
ZGVvX3NzcmNzXy5pbnNlcnQoY29uZmlnLnJ0eF9zc3JjKTsKICAgICAgICAgb3V0Z29pbmdfcnR4
X3NzcmNzXy5pbnNlcnQoY29uZmlnLnJ0eF9zc3JjKTsKICAgICAgIH0KICAgICAgIGJyZWFrOwog
ICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkFVRElPX1JF
Q0VJVkVSX0NPTkZJR19FVkVOVDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QVVESU9fUkVD
RUlWRVJfQ09ORklHX0VWRU5UOiB7CiAgICAgICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcg
PSBHZXRBdWRpb1JlY2VpdmVDb25maWcoZXZlbnQpOwogICAgICAgYXVkaW9fcmVjdl9jb25maWdz
Xy5lbXBsYWNlX2JhY2soR2V0VGltZXN0YW1wKGV2ZW50KSwgY29uZmlnKTsKLSAgICAgIGluY29t
aW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5yZW1vdGVfc3NyY10gPQotICAgICAgICAg
IFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4dGVuc2lvbnMpOwotICAgICAgaW5j
b21pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29uZmlnLmxvY2FsX3NzcmNdID0KLSAgICAgICAg
ICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKTsKKyAgICAgIGlm
ICghY29uZmlnLnJ0cF9leHRlbnNpb25zLmVtcHR5KCkpIHsKKyAgICAgICAgaW5jb21pbmdfcnRw
X2V4dGVuc2lvbnNfbWFwc19bY29uZmlnLnJlbW90ZV9zc3JjXSA9CisgICAgICAgICAgICBSdHBI
ZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKTsKKyAgICAgICAgaW5jb21p
bmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29uZmlnLmxvY2FsX3NzcmNdID0KKyAgICAgICAgICAg
IFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4dGVuc2lvbnMpOworICAgICAgfQog
ICAgICAgaW5jb21pbmdfYXVkaW9fc3NyY3NfLmluc2VydChjb25maWcucmVtb3RlX3NzcmMpOwog
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50
VHlwZTo6QVVESU9fU0VOREVSX0NPTkZJR19FVkVOVDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVu
dDo6QVVESU9fU0VOREVSX0NPTkZJR19FVkVOVDogewogICAgICAgcnRjbG9nOjpTdHJlYW1Db25m
aWcgY29uZmlnID0gR2V0QXVkaW9TZW5kQ29uZmlnKGV2ZW50KTsKICAgICAgIGF1ZGlvX3NlbmRf
Y29uZmlnc18uZW1wbGFjZV9iYWNrKEdldFRpbWVzdGFtcChldmVudCksIGNvbmZpZyk7Ci0gICAg
ICBvdXRnb2luZ19ydHBfZXh0ZW5zaW9uc19tYXBzX1tjb25maWcubG9jYWxfc3NyY10gPQotICAg
ICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4dGVuc2lvbnMpOworICAg
ICAgaWYgKCFjb25maWcucnRwX2V4dGVuc2lvbnMuZW1wdHkoKSkgeworICAgICAgICBvdXRnb2lu
Z19ydHBfZXh0ZW5zaW9uc19tYXBzX1tjb25maWcubG9jYWxfc3NyY10gPQorICAgICAgICAgICAg
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7CisgICAgICB9CiAg
ICAgICBvdXRnb2luZ19hdWRpb19zc3Jjc18uaW5zZXJ0KGNvbmZpZy5sb2NhbF9zc3JjKTsKICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5
cGU6OlJUUF9FVkVOVDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6UlRQX0VWRU5UOiB7CiAg
ICAgICBQYWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgICAgdWludDhfdCBoZWFkZXJbSVBf
UEFDS0VUX1NJWkVdOwogICAgICAgc2l6ZV90IGhlYWRlcl9sZW5ndGg7CkBAIC02NDUsNyArMTEw
OSw3IEBAIHZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlUGFyc2VkRXZlbnQoY29uc3Qg
cnRjbG9nOjpFdmVudCYgZXZlbnQpIHsKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlJUQ1BfRVZFTlQ6IHsKKyAg
ICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OlJUQ1BfRVZFTlQ6IHsKICAgICAgIFBhY2tldERpcmVjdGlv
biBkaXJlY3Rpb247CiAgICAgICB1aW50OF90IHBhY2tldFtJUF9QQUNLRVRfU0laRV07CiAgICAg
ICBzaXplX3QgdG90YWxfbGVuZ3RoOwpAQCAtNzMxLDExMyArMTE5NSw3NiBAQCB2b2lkIFBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZVBhcnNlZEV2ZW50KGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2
ZW50KSB7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNF
dmVudExvZ05ldzo6RXZlbnRUeXBlOjpMT0dfU1RBUlQ6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZl
bnQ6OkxPR19TVEFSVDogewogICAgICAgc3RhcnRfbG9nX2V2ZW50c18ucHVzaF9iYWNrKExvZ2dl
ZFN0YXJ0RXZlbnQoR2V0VGltZXN0YW1wKGV2ZW50KSkpOwogICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6TE9HX0VORDogeworICAg
IGNhc2UgcnRjbG9nOjpFdmVudDo6TE9HX0VORDogewogICAgICAgc3RvcF9sb2dfZXZlbnRzXy5w
dXNoX2JhY2soTG9nZ2VkU3RvcEV2ZW50KEdldFRpbWVzdGFtcChldmVudCkpKTsKICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkFV
RElPX1BMQVlPVVRfRVZFTlQ6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1BMQVlP
VVRfRVZFTlQ6IHsKICAgICAgIExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50IHBsYXlvdXRfZXZlbnQg
PSBHZXRBdWRpb1BsYXlvdXQoZXZlbnQpOwogICAgICAgYXVkaW9fcGxheW91dF9ldmVudHNfW3Bs
YXlvdXRfZXZlbnQuc3NyY10ucHVzaF9iYWNrKHBsYXlvdXRfZXZlbnQpOwogICAgICAgYnJlYWs7
CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6TE9TU19C
QVNFRF9CV0VfVVBEQVRFOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpMT1NTX0JBU0VEX0JX
RV9VUERBVEU6IHsKICAgICAgIGJ3ZV9sb3NzX3VwZGF0ZXNfLnB1c2hfYmFjayhHZXRMb3NzQmFz
ZWRCd2VVcGRhdGUoZXZlbnQpKTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkRFTEFZX0JBU0VEX0JXRV9VUERBVEU6IHsKKyAg
ICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkRFTEFZX0JBU0VEX0JXRV9VUERBVEU6IHsKICAgICAgIGJ3
ZV9kZWxheV91cGRhdGVzXy5wdXNoX2JhY2soR2V0RGVsYXlCYXNlZEJ3ZVVwZGF0ZShldmVudCkp
OwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2
ZW50VHlwZTo6QVVESU9fTkVUV09SS19BREFQVEFUSU9OX0VWRU5UOiB7CisgICAgY2FzZSBydGNs
b2c6OkV2ZW50OjpBVURJT19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQ6IHsKICAgICAgIExvZ2dl
ZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCBhbmFfZXZlbnQgPQogICAgICAgICAgIEdldEF1
ZGlvTmV0d29ya0FkYXB0YXRpb24oZXZlbnQpOwogICAgICAgYXVkaW9fbmV0d29ya19hZGFwdGF0
aW9uX2V2ZW50c18ucHVzaF9iYWNrKGFuYV9ldmVudCk7CiAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpCV0VfUFJPQkVfQ0xVU1RF
Ul9DUkVBVEVEX0VWRU5UOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfQ0xV
U1RFUl9DUkVBVEVEX0VWRU5UOiB7CiAgICAgICBid2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2
ZW50c18ucHVzaF9iYWNrKAogICAgICAgICAgIEdldEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQoZXZl
bnQpKTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9GQUlMVVJFX0VWRU5UOiB7Ci0gICAgICBid2VfcHJvYmVf
ZmFpbHVyZV9ldmVudHNfLnB1c2hfYmFjayhHZXRCd2VQcm9iZUZhaWx1cmUoZXZlbnQpKTsKLSAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5
cGU6OkJXRV9QUk9CRV9TVUNDRVNTX0VWRU5UOiB7Ci0gICAgICBid2VfcHJvYmVfc3VjY2Vzc19l
dmVudHNfLnB1c2hfYmFjayhHZXRCd2VQcm9iZVN1Y2Nlc3MoZXZlbnQpKTsKKyAgICBjYXNlIHJ0
Y2xvZzo6RXZlbnQ6OkJXRV9QUk9CRV9SRVNVTFRfRVZFTlQ6IHsKKyAgICAgIC8vIFByb2JlIHN1
Y2Nlc3NlcyBhbmQgZmFpbHVyZXMgYXJlIGN1cnJlbnRseSBzdG9yZWQgaW4gdGhlIHNhbWUgcHJv
dG8KKyAgICAgIC8vIG1lc3NhZ2UsIHdlIGFyZSBtb3ZpbmcgdG93YXJkcyBzZXBhcmF0ZSBtZXNz
YWdlcy4gUHJvYmUgcmVzdWx0cworICAgICAgLy8gdGhlcmVmb3JlIG5lZWQgc3BlY2lhbCB0cmVh
dG1lbnQgaW4gdGhlIHBhcnNlci4KKyAgICAgIFJUQ19DSEVDSyhldmVudC5oYXNfcHJvYmVfcmVz
dWx0KCkpOworICAgICAgUlRDX0NIRUNLKGV2ZW50LnByb2JlX3Jlc3VsdCgpLmhhc19yZXN1bHQo
KSk7CisgICAgICBpZiAoZXZlbnQucHJvYmVfcmVzdWx0KCkucmVzdWx0KCkgPT0gcnRjbG9nOjpC
d2VQcm9iZVJlc3VsdDo6U1VDQ0VTUykgeworICAgICAgICBid2VfcHJvYmVfc3VjY2Vzc19ldmVu
dHNfLnB1c2hfYmFjayhHZXRCd2VQcm9iZVN1Y2Nlc3MoZXZlbnQpKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIGJ3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50c18ucHVzaF9iYWNrKEdldEJ3ZVByb2Jl
RmFpbHVyZShldmVudCkpOworICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2Ug
UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QUxSX1NUQVRFX0VWRU5UOiB7CisgICAg
Y2FzZSBydGNsb2c6OkV2ZW50OjpBTFJfU1RBVEVfRVZFTlQ6IHsKICAgICAgIGFscl9zdGF0ZV9l
dmVudHNfLnB1c2hfYmFjayhHZXRBbHJTdGF0ZShldmVudCkpOwogICAgICAgYnJlYWs7CiAgICAg
fQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6SUNFX0NBTkRJREFU
RV9QQUlSX0NPTkZJRzogeworICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9Q
QUlSX0NPTkZJRzogewogICAgICAgaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZ3NfLnB1c2hfYmFj
ayhHZXRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKGV2ZW50KSk7CiAgICAgICBicmVhazsKICAgICB9
Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRF
X1BBSVJfRVZFTlQ6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJ
Ul9FVkVOVDogewogICAgICAgaWNlX2NhbmRpZGF0ZV9wYWlyX2V2ZW50c18ucHVzaF9iYWNrKEdl
dEljZUNhbmRpZGF0ZVBhaXJFdmVudChldmVudCkpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAg
IGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6VU5LTk9XTl9FVkVOVDogewor
ICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6VU5LTk9XTl9FVkVOVDogewogICAgICAgYnJlYWs7CiAg
ICAgfQogICB9CiB9CiAKLXNpemVfdCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0TnVtYmVyT2ZF
dmVudHMoKSBjb25zdCB7Ci0gIHJldHVybiBldmVudHNfLnNpemUoKTsKLX0KLQotaW50NjRfdCBQ
YXJzZWRSdGNFdmVudExvZ05ldzo6R2V0VGltZXN0YW1wKHNpemVfdCBpbmRleCkgY29uc3Qgewot
ICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNs
b2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0VGltZXN0YW1w
KGV2ZW50KTsKLX0KIAogaW50NjRfdCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0VGltZXN0YW1w
KGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAgIFJUQ19DSEVDSyhldmVudC5o
YXNfdGltZXN0YW1wX3VzKCkpOwogICByZXR1cm4gZXZlbnQudGltZXN0YW1wX3VzKCk7CiB9CiAK
LVBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGUgUGFyc2VkUnRjRXZlbnRMb2dOZXc6Okdl
dEV2ZW50VHlwZSgKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGlu
ZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQg
PSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJuIEdldEV2ZW50VHlwZShldmVudCk7Ci19Ci0KLVBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGUgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEV2
ZW50VHlwZSgKLSAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3QgewotICBSVENf
Q0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIGlmIChldmVudC50eXBlKCkgPT0gcnRjbG9nOjpF
dmVudDo6QldFX1BST0JFX1JFU1VMVF9FVkVOVCkgewotICAgIFJUQ19DSEVDSyhldmVudC5oYXNf
cHJvYmVfcmVzdWx0KCkpOwotICAgIFJUQ19DSEVDSyhldmVudC5wcm9iZV9yZXN1bHQoKS5oYXNf
cmVzdWx0KCkpOwotICAgIGlmIChldmVudC5wcm9iZV9yZXN1bHQoKS5yZXN1bHQoKSA9PSBydGNs
b2c6OkJ3ZVByb2JlUmVzdWx0OjpTVUNDRVNTKQotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9TVUNDRVNTX0VWRU5UOwotICAgIHJldHVybiBQ
YXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpCV0VfUFJPQkVfRkFJTFVSRV9FVkVOVDsK
LSAgfQotICByZXR1cm4gR2V0UnVudGltZUV2ZW50VHlwZShldmVudC50eXBlKCkpOwotfQotCiAv
LyBUaGUgaGVhZGVyIG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VUX1NJWkUg
Ynl0ZXMuCi1jb25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCogUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OkdldFJ0cEhlYWRlcigKLSAgICBzaXplX3QgaW5kZXgsCi0gICAgUGFja2V0RGly
ZWN0aW9uKiBpbmNvbWluZywKLSAgICB1aW50OF90KiBoZWFkZXIsCi0gICAgc2l6ZV90KiBoZWFk
ZXJfbGVuZ3RoLAotICAgIHNpemVfdCogdG90YWxfbGVuZ3RoLAotICAgIGludCogcHJvYmVfY2x1
c3Rlcl9pZCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRz
KCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICBy
ZXR1cm4gR2V0UnRwSGVhZGVyKGV2ZW50LCBpbmNvbWluZywgaGVhZGVyLCBoZWFkZXJfbGVuZ3Ro
LCB0b3RhbF9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgcHJvYmVfY2x1c3Rlcl9pZCk7
Ci19Ci0KIGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKiBQYXJzZWRSdGNFdmVu
dExvZ05ldzo6R2V0UnRwSGVhZGVyKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50LAog
ICAgIFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcsCkBAIC04OTksMTUgKzEzMjYsNiBAQCBjb25z
dCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCogUGFyc2VkUnRjRXZlbnRMb2dOZXc6Okdl
dFJ0cEhlYWRlcigKIH0KIAogLy8gVGhlIHBhY2tldCBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxl
YXN0IElQX1BBQ0tFVF9TSVpFIGJ5dGVzLgotdm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0
UnRjcFBhY2tldChzaXplX3QgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgpIGNvbnN0IHsKLSAgUlRDX0NI
RUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVu
dCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgR2V0UnRjcFBhY2tldChldmVudCwgaW5jb21p
bmcsIHBhY2tldCwgbGVuZ3RoKTsKLX0KLQogdm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0
UnRjcFBhY2tldChjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0RGlyZWN0aW9uKiBpbmNvbWluZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogcGFja2V0LApAQCAt
OTM1LDEyICsxMzUzLDYgQEAgdm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0UnRjcFBhY2tl
dChjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCwKICAgfQogfQogCi1ydGNsb2c6OlN0cmVhbUNv
bmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0VmlkZW9SZWNlaXZlQ29uZmlnKAotICAgIHNp
emVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZl
bnRzKCkpOwotICByZXR1cm4gR2V0VmlkZW9SZWNlaXZlQ29uZmlnKGV2ZW50c19baW5kZXhdKTsK
LX0KLQogcnRjbG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldFZpZGVv
UmVjZWl2ZUNvbmZpZygKICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3Qgewog
ICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7CkBAIC0xMDAyLDEyICsxNDE0LDYgQEAgcnRj
bG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldFZpZGVvUmVjZWl2ZUNv
bmZpZygKICAgcmV0dXJuIGNvbmZpZzsKIH0KIAotc3RkOjp2ZWN0b3I8cnRjbG9nOjpTdHJlYW1D
b25maWc+IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRWaWRlb1NlbmRDb25maWcoCi0gICAgc2l6
ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVu
dHMoKSk7Ci0gIHJldHVybiBHZXRWaWRlb1NlbmRDb25maWcoZXZlbnRzX1tpbmRleF0pOwotfQot
CiBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OkdldFZpZGVvU2VuZENvbmZpZygKICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29u
c3QgewogICBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmlnczsKQEAgLTEw
NDYsMTIgKzE0NTIsNiBAQCBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gUGFyc2Vk
UnRjRXZlbnRMb2dOZXc6OkdldFZpZGVvU2VuZENvbmZpZygKICAgcmV0dXJuIGNvbmZpZ3M7CiB9
CiAKLXJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBdWRpb1Jl
Y2VpdmVDb25maWcoCi0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChp
bmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIHJldHVybiBHZXRBdWRpb1JlY2VpdmVDb25m
aWcoZXZlbnRzX1tpbmRleF0pOwotfQotCiBydGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNF
dmVudExvZ05ldzo6R2V0QXVkaW9SZWNlaXZlQ29uZmlnKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZl
bnQmIGV2ZW50KSBjb25zdCB7CiAgIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZzsKQEAgLTEw
NzEsMTIgKzE0NzEsNiBAQCBydGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05l
dzo6R2V0QXVkaW9SZWNlaXZlQ29uZmlnKAogICByZXR1cm4gY29uZmlnOwogfQogCi1ydGNsb2c6
OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QXVkaW9TZW5kQ29uZmlnKAot
ICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJl
ck9mRXZlbnRzKCkpOwotICByZXR1cm4gR2V0QXVkaW9TZW5kQ29uZmlnKGV2ZW50c19baW5kZXhd
KTsKLX0KLQogcnRjbG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEF1
ZGlvU2VuZENvbmZpZygKICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3Qgewog
ICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7CkBAIC0xMDkzLDEzICsxNDg3LDYgQEAgcnRj
bG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEF1ZGlvU2VuZENvbmZp
ZygKICAgcmV0dXJuIGNvbmZpZzsKIH0KIAotTG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQgUGFyc2Vk
UnRjRXZlbnRMb2dOZXc6OkdldEF1ZGlvUGxheW91dCgKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0
IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3Qg
cnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJuIEdldEF1ZGlv
UGxheW91dChldmVudCk7Ci19Ci0KIExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50IFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpHZXRBdWRpb1BsYXlvdXQoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZl
bnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwpAQCAtMTExMywxMyAr
MTUwMCw2IEBAIExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpH
ZXRBdWRpb1BsYXlvdXQoCiAgIHJldHVybiByZXM7CiB9CiAKLUxvZ2dlZEJ3ZUxvc3NCYXNlZFVw
ZGF0ZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0TG9zc0Jhc2VkQndlVXBkYXRlKAotICAgIHNp
emVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZl
bnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwot
ICByZXR1cm4gR2V0TG9zc0Jhc2VkQndlVXBkYXRlKGV2ZW50KTsKLX0KLQogTG9nZ2VkQndlTG9z
c0Jhc2VkVXBkYXRlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRMb3NzQmFzZWRCd2VVcGRhdGUo
CiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKGV2
ZW50Lmhhc190eXBlKCkpOwpAQCAtMTEzOCwxMyArMTUxOCw2IEBAIExvZ2dlZEJ3ZUxvc3NCYXNl
ZFVwZGF0ZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0TG9zc0Jhc2VkQndlVXBkYXRlKAogICBy
ZXR1cm4gYndlX3VwZGF0ZTsKIH0KIAotTG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSBQYXJzZWRS
dGNFdmVudExvZ05ldzo6R2V0RGVsYXlCYXNlZEJ3ZVVwZGF0ZSgKLSAgICBzaXplX3QgaW5kZXgp
IGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAg
Y29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJuIEdl
dERlbGF5QmFzZWRCd2VVcGRhdGUoZXZlbnQpOwotfQotCiBMb2dnZWRCd2VEZWxheUJhc2VkVXBk
YXRlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXREZWxheUJhc2VkQndlVXBkYXRlKAogICAgIGNv
bnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAgIFJUQ19DSEVDSyhldmVudC5oYXNf
dHlwZSgpKTsKQEAgLTExNjIsMTMgKzE1MzUsNiBAQCBMb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRl
IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXREZWxheUJhc2VkQndlVXBkYXRlKAogICByZXR1cm4g
cmVzOwogfQogCi1Mb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRXZlbnQKLVBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpHZXRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKHNpemVfdCBpbmRleCkgY29uc3Qg
ewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBy
dGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0QXVkaW9O
ZXR3b3JrQWRhcHRhdGlvbihldmVudCk7Ci19Ci0KIExvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRp
b25FdmVudAogUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEF1ZGlvTmV0d29ya0FkYXB0YXRpb24o
CiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKQEAgLTExOTYsMTMgKzE1
NjIsNiBAQCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QXVkaW9OZXR3b3JrQWRhcHRhdGlvbigK
ICAgcmV0dXJuIHJlczsKIH0KIAotTG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50Ci1Q
YXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QndlUHJvYmVDbHVzdGVyQ3JlYXRlZChzaXplX3QgaW5k
ZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsK
LSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJu
IEdldEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQoZXZlbnQpOwotfQotCiBMb2dnZWRCd2VQcm9iZUNs
dXN0ZXJDcmVhdGVkRXZlbnQKIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRCd2VQcm9iZUNsdXN0
ZXJDcmVhdGVkKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CkBAIC0x
MjIzLDEzICsxNTgyLDYgQEAgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEJ3ZVByb2JlQ2x1c3Rl
ckNyZWF0ZWQoCiAgIHJldHVybiByZXM7CiB9CiAKLUxvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50
IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRCd2VQcm9iZUZhaWx1cmUoCi0gICAgc2l6ZV90IGlu
ZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7
Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJldHVy
biBHZXRCd2VQcm9iZUZhaWx1cmUoZXZlbnQpOwotfQotCiBMb2dnZWRCd2VQcm9iZUZhaWx1cmVF
dmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QndlUHJvYmVGYWlsdXJlKAogICAgIGNvbnN0
IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAgIFJUQ19DSEVDSyhldmVudC5oYXNfdHlw
ZSgpKTsKQEAgLTEyNjAsMTMgKzE2MTIsNiBAQCBMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCBQ
YXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QndlUHJvYmVGYWlsdXJlKAogICByZXR1cm4gcmVzOwog
fQogCi1Mb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0
QndlUHJvYmVTdWNjZXNzKAotICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tf
TFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBl
dmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0QndlUHJvYmVTdWNjZXNzKGV2ZW50
KTsKLX0KLQogTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OkdldEJ3ZVByb2JlU3VjY2VzcygKICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29u
c3QgewogICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7CkBAIC0xMjg2LDEyICsxNjMxLDYg
QEAgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEJ3
ZVByb2JlU3VjY2VzcygKICAgcmV0dXJuIHJlczsKIH0KIAotTG9nZ2VkQWxyU3RhdGVFdmVudCBQ
YXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QWxyU3RhdGUoc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0g
IFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xv
Zzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJldHVybiBHZXRBbHJTdGF0ZShl
dmVudCk7Ci19Ci0KIExvZ2dlZEFsclN0YXRlRXZlbnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6Okdl
dEFsclN0YXRlKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAgIFJU
Q19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKQEAgLTEzMDYsMTMgKzE2NDUsNiBAQCBMb2dnZWRB
bHJTdGF0ZUV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBbHJTdGF0ZSgKICAgcmV0dXJu
IHJlczsKIH0KIAotTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyBQYXJzZWRSdGNFdmVudExv
Z05ldzo6R2V0SWNlQ2FuZGlkYXRlUGFpckNvbmZpZygKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0
IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3Qg
cnRjbG9nOjpFdmVudCYgcnRjX2V2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJldHVybiBHZXRJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnKHJ0Y19ldmVudCk7Ci19Ci0KIExvZ2dlZEljZUNhbmRpZGF0
ZVBhaXJDb25maWcgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEljZUNhbmRpZGF0ZVBhaXJDb25m
aWcoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgcnRjX2V2ZW50KSBjb25zdCB7CiAgIFJUQ19D
SEVDSyhydGNfZXZlbnQuaGFzX3R5cGUoKSk7CkBAIC0xMzQ5LDEzICsxNjgxLDYgQEAgTG9nZ2Vk
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0SWNlQ2FuZGlk
YXRlUGFpckNvbmZpZygKICAgcmV0dXJuIHJlczsKIH0KIAotTG9nZ2VkSWNlQ2FuZGlkYXRlUGFp
ckV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRJY2VDYW5kaWRhdGVQYWlyRXZlbnQoCi0g
ICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVy
T2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIHJ0Y19ldmVudCA9IGV2ZW50c19b
aW5kZXhdOwotICByZXR1cm4gR2V0SWNlQ2FuZGlkYXRlUGFpckV2ZW50KHJ0Y19ldmVudCk7Ci19
Ci0KIExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0
SWNlQ2FuZGlkYXRlUGFpckV2ZW50KAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIHJ0Y19ldmVu
dCkgY29uc3QgewogICBSVENfQ0hFQ0socnRjX2V2ZW50Lmhhc190eXBlKCkpOwpAQCAtMTQzOCw3
ICsxNzYzLDggQEAgY29uc3Qgc3RkOjp2ZWN0b3I8TWF0Y2hlZFNlbmRBcnJpdmFsVGltZXM+IEdl
dE5ldHdvcmtUcmFjZSgKICAgICBjbG9jay5BZHZhbmNlVGltZU1pY3Jvc2Vjb25kcyh0aW1lX3Vz
IC0gY2xvY2suVGltZUluTWljcm9zZWNvbmRzKCkpOwogICAgIGlmIChjbG9jay5UaW1lSW5NaWNy
b3NlY29uZHMoKSA+PSBOZXh0UnRjcFRpbWUoKSkgewogICAgICAgUlRDX0RDSEVDS19FUShjbG9j
ay5UaW1lSW5NaWNyb3NlY29uZHMoKSwgTmV4dFJ0Y3BUaW1lKCkpOwotICAgICAgZmVlZGJhY2tf
YWRhcHRlci5PblRyYW5zcG9ydEZlZWRiYWNrKHJ0Y3BfaXRlcmF0b3ItPnRyYW5zcG9ydF9mZWVk
YmFjayk7CisgICAgICBmZWVkYmFja19hZGFwdGVyLlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjaygK
KyAgICAgICAgICBydGNwX2l0ZXJhdG9yLT50cmFuc3BvcnRfZmVlZGJhY2spOwogICAgICAgc3Rk
Ojp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IGZlZWRiYWNrID0KICAgICAgICAgICBmZWVkYmFja19h
ZGFwdGVyLkdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCk7CiAgICAgICBTb3J0UGFja2V0RmVl
ZGJhY2tWZWN0b3JXaXRoTG9zcygmZmVlZGJhY2spOwpAQCAtMTQ1MiwxNCArMTc3OCwyNSBAQCBj
b25zdCBzdGQ6OnZlY3RvcjxNYXRjaGVkU2VuZEFycml2YWxUaW1lcz4gR2V0TmV0d29ya1RyYWNl
KAogICAgIGlmIChjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSA+PSBOZXh0UnRwVGltZSgpKSB7
CiAgICAgICBSVENfRENIRUNLX0VRKGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygpLCBOZXh0UnRw
VGltZSgpKTsKICAgICAgIGNvbnN0IFJ0cFBhY2tldFR5cGUmIHJ0cF9wYWNrZXQgPSAqcnRwX2l0
ZXJhdG9yLT5zZWNvbmQ7CisgICAgICBydGM6OlNlbnRQYWNrZXQgc2VudF9wYWNrZXQ7CisgICAg
ICBzZW50X3BhY2tldC5zZW5kX3RpbWVfbXMgPSBydHBfcGFja2V0LnJ0cC5sb2dfdGltZV9tcygp
OworICAgICAgc2VudF9wYWNrZXQuaW5mby5wYWNrZXRfc2l6ZV9ieXRlcyA9IHJ0cF9wYWNrZXQu
cnRwLnRvdGFsX2xlbmd0aDsKICAgICAgIGlmIChydHBfcGFja2V0LnJ0cC5oZWFkZXIuZXh0ZW5z
aW9uLmhhc1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKSB7CiAgICAgICAgIGZlZWRiYWNrX2FkYXB0
ZXIuQWRkUGFja2V0KAogICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAuaGVhZGVyLnNzcmMsCiAg
ICAgICAgICAgICBydHBfcGFja2V0LnJ0cC5oZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVl
bmNlTnVtYmVyLAogICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAudG90YWxfbGVuZ3RoLCBQYWNl
ZFBhY2tldEluZm8oKSk7Ci0gICAgICAgIGZlZWRiYWNrX2FkYXB0ZXIuT25TZW50UGFja2V0KAot
ICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAuaGVhZGVyLmV4dGVuc2lvbi50cmFuc3BvcnRTZXF1
ZW5jZU51bWJlciwKLSAgICAgICAgICAgIHJ0cF9wYWNrZXQucnRwLmxvZ190aW1lX21zKCkpOwor
ICAgICAgICBzZW50X3BhY2tldC5wYWNrZXRfaWQgPQorICAgICAgICAgICAgcnRwX3BhY2tldC5y
dHAuaGVhZGVyLmV4dGVuc2lvbi50cmFuc3BvcnRTZXF1ZW5jZU51bWJlcjsKKyAgICAgICAgc2Vu
dF9wYWNrZXQuaW5mby5pbmNsdWRlZF9pbl9mZWVkYmFjayA9IHRydWU7CisgICAgICAgIHNlbnRf
cGFja2V0LmluZm8uaW5jbHVkZWRfaW5fYWxsb2NhdGlvbiA9IHRydWU7CisgICAgICAgIGZlZWRi
YWNrX2FkYXB0ZXIuUHJvY2Vzc1NlbnRQYWNrZXQoc2VudF9wYWNrZXQpOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgc2VudF9wYWNrZXQuaW5mby5pbmNsdWRlZF9pbl9mZWVkYmFjayA9IGZhbHNl
OworICAgICAgICAvLyBUT0RPKHNydGUpOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGluZGljYXRlIHRo
YXQgYWxsIHBhY2tldHMgYXJlIHBhcnQgb2YKKyAgICAgICAgLy8gYWxsb2NhdGlvbi4KKyAgICAg
ICAgc2VudF9wYWNrZXQuaW5mby5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0gZmFsc2U7CisgICAg
ICAgIGZlZWRiYWNrX2FkYXB0ZXIuUHJvY2Vzc1NlbnRQYWNrZXQoc2VudF9wYWNrZXQpOwogICAg
ICAgfQogICAgICAgKytydHBfaXRlcmF0b3I7CiAgICAgfQpAQCAtMTQ2OCw0ICsxODA1LDYxMyBA
QCBjb25zdCBzdGQ6OnZlY3RvcjxNYXRjaGVkU2VuZEFycml2YWxUaW1lcz4gR2V0TmV0d29ya1Ry
YWNlKAogICByZXR1cm4gcnRwX3J0Y3BfbWF0Y2hlZDsKIH0KIAorLy8gSGVscGVyIGZ1bmN0aW9u
cyBmb3IgbmV3IGZvcm1hdCBzdGFydCBoZXJlCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpT
dG9yZVBhcnNlZE5ld0Zvcm1hdEV2ZW50KAorICAgIGNvbnN0IHJ0Y2xvZzI6OkV2ZW50U3RyZWFt
JiBzdHJlYW0pIHsKKyAgUlRDX0RDSEVDS19FUShzdHJlYW0uc3RyZWFtX3NpemUoKSwgMCk7CisK
KyAgUlRDX0RDSEVDS19FUSgKKyAgICAgIHN0cmVhbS5pbmNvbWluZ19ydHBfcGFja2V0c19zaXpl
KCkgKyBzdHJlYW0ub3V0Z29pbmdfcnRwX3BhY2tldHNfc2l6ZSgpICsKKyAgICAgICAgICBzdHJl
YW0uaW5jb21pbmdfcnRjcF9wYWNrZXRzX3NpemUoKSArCisgICAgICAgICAgc3RyZWFtLm91dGdv
aW5nX3J0Y3BfcGFja2V0c19zaXplKCkgKworICAgICAgICAgIHN0cmVhbS5hdWRpb19wbGF5b3V0
X2V2ZW50c19zaXplKCkgKyBzdHJlYW0uYmVnaW5fbG9nX2V2ZW50c19zaXplKCkgKworICAgICAg
ICAgIHN0cmVhbS5lbmRfbG9nX2V2ZW50c19zaXplKCkgKyBzdHJlYW0ubG9zc19iYXNlZF9id2Vf
dXBkYXRlc19zaXplKCkgKworICAgICAgICAgIHN0cmVhbS5kZWxheV9iYXNlZF9id2VfdXBkYXRl
c19zaXplKCkgKworICAgICAgICAgIHN0cmVhbS5hdWRpb19uZXR3b3JrX2FkYXB0YXRpb25zX3Np
emUoKSArCisgICAgICAgICAgc3RyZWFtLnByb2JlX2NsdXN0ZXJzX3NpemUoKSArIHN0cmVhbS5w
cm9iZV9zdWNjZXNzX3NpemUoKSArCisgICAgICAgICAgc3RyZWFtLnByb2JlX2ZhaWx1cmVfc2l6
ZSgpICsgc3RyZWFtLmFscl9zdGF0ZXNfc2l6ZSgpICsKKyAgICAgICAgICBzdHJlYW0uaWNlX2Nh
bmRpZGF0ZV9jb25maWdzX3NpemUoKSArCisgICAgICAgICAgc3RyZWFtLmljZV9jYW5kaWRhdGVf
ZXZlbnRzX3NpemUoKSArCisgICAgICAgICAgc3RyZWFtLmF1ZGlvX3JlY3Zfc3RyZWFtX2NvbmZp
Z3Nfc2l6ZSgpICsKKyAgICAgICAgICBzdHJlYW0uYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnc19z
aXplKCkgKworICAgICAgICAgIHN0cmVhbS52aWRlb19yZWN2X3N0cmVhbV9jb25maWdzX3NpemUo
KSArCisgICAgICAgICAgc3RyZWFtLnZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZ3Nfc2l6ZSgpLAor
ICAgICAgMXUpOworCisgIGlmIChzdHJlYW0uaW5jb21pbmdfcnRwX3BhY2tldHNfc2l6ZSgpID09
IDEpIHsKKyAgICBTdG9yZUluY29taW5nUnRwUGFja2V0cyhzdHJlYW0uaW5jb21pbmdfcnRwX3Bh
Y2tldHMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5vdXRnb2luZ19ydHBfcGFja2V0c19zaXpl
KCkgPT0gMSkgeworICAgIFN0b3JlT3V0Z29pbmdSdHBQYWNrZXRzKHN0cmVhbS5vdXRnb2luZ19y
dHBfcGFja2V0cygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLmluY29taW5nX3J0Y3BfcGFja2V0
c19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlSW5jb21pbmdSdGNwUGFja2V0cyhzdHJlYW0uaW5j
b21pbmdfcnRjcF9wYWNrZXRzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0ub3V0Z29pbmdfcnRj
cF9wYWNrZXRzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVPdXRnb2luZ1J0Y3BQYWNrZXRzKHN0
cmVhbS5vdXRnb2luZ19ydGNwX3BhY2tldHMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5hdWRp
b19wbGF5b3V0X2V2ZW50c19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlQXVkaW9QbGF5b3V0RXZl
bnQoc3RyZWFtLmF1ZGlvX3BsYXlvdXRfZXZlbnRzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0u
YmVnaW5fbG9nX2V2ZW50c19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlU3RhcnRFdmVudChzdHJl
YW0uYmVnaW5fbG9nX2V2ZW50cygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLmVuZF9sb2dfZXZl
bnRzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVTdG9wRXZlbnQoc3RyZWFtLmVuZF9sb2dfZXZl
bnRzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0ubG9zc19iYXNlZF9id2VfdXBkYXRlc19zaXpl
KCkgPT0gMSkgeworICAgIFN0b3JlQndlTG9zc0Jhc2VkVXBkYXRlKHN0cmVhbS5sb3NzX2Jhc2Vk
X2J3ZV91cGRhdGVzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0uZGVsYXlfYmFzZWRfYndlX3Vw
ZGF0ZXNfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUJ3ZURlbGF5QmFzZWRVcGRhdGUoc3RyZWFt
LmRlbGF5X2Jhc2VkX2J3ZV91cGRhdGVzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0uYXVkaW9f
bmV0d29ya19hZGFwdGF0aW9uc19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlQXVkaW9OZXR3b3Jr
QWRhcHRhdGlvbkV2ZW50KHN0cmVhbS5hdWRpb19uZXR3b3JrX2FkYXB0YXRpb25zKDApKTsKKyAg
fSBlbHNlIGlmIChzdHJlYW0ucHJvYmVfY2x1c3RlcnNfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9y
ZUJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQoc3RyZWFtLnByb2JlX2NsdXN0ZXJzKDApKTsKKyAgfSBl
bHNlIGlmIChzdHJlYW0ucHJvYmVfc3VjY2Vzc19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlQndl
UHJvYmVTdWNjZXNzRXZlbnQoc3RyZWFtLnByb2JlX3N1Y2Nlc3MoMCkpOworICB9IGVsc2UgaWYg
KHN0cmVhbS5wcm9iZV9mYWlsdXJlX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVCd2VQcm9iZUZh
aWx1cmVFdmVudChzdHJlYW0ucHJvYmVfZmFpbHVyZSgwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFt
LmFscl9zdGF0ZXNfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUFsclN0YXRlRXZlbnQoc3RyZWFt
LmFscl9zdGF0ZXMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5pY2VfY2FuZGlkYXRlX2NvbmZp
Z3Nfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUljZUNhbmRpZGF0ZVBhaXJDb25maWcoc3RyZWFt
LmljZV9jYW5kaWRhdGVfY29uZmlncygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLmljZV9jYW5k
aWRhdGVfZXZlbnRzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVJY2VDYW5kaWRhdGVFdmVudChz
dHJlYW0uaWNlX2NhbmRpZGF0ZV9ldmVudHMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5hdWRp
b19yZWN2X3N0cmVhbV9jb25maWdzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVBdWRpb1JlY3ZD
b25maWcoc3RyZWFtLmF1ZGlvX3JlY3Zfc3RyZWFtX2NvbmZpZ3MoMCkpOworICB9IGVsc2UgaWYg
KHN0cmVhbS5hdWRpb19zZW5kX3N0cmVhbV9jb25maWdzX3NpemUoKSA9PSAxKSB7CisgICAgU3Rv
cmVBdWRpb1NlbmRDb25maWcoc3RyZWFtLmF1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZ3MoMCkpOwor
ICB9IGVsc2UgaWYgKHN0cmVhbS52aWRlb19yZWN2X3N0cmVhbV9jb25maWdzX3NpemUoKSA9PSAx
KSB7CisgICAgU3RvcmVWaWRlb1JlY3ZDb25maWcoc3RyZWFtLnZpZGVvX3JlY3Zfc3RyZWFtX2Nv
bmZpZ3MoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS52aWRlb19zZW5kX3N0cmVhbV9jb25maWdz
X3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVWaWRlb1NlbmRDb25maWcoc3RyZWFtLnZpZGVvX3Nl
bmRfc3RyZWFtX2NvbmZpZ3MoMCkpOworICB9IGVsc2UgeworICAgIFJUQ19OT1RSRUFDSEVEKCk7
CisgIH0KK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVBbHJTdGF0ZUV2ZW50
KGNvbnN0IHJ0Y2xvZzI6OkFsclN0YXRlJiBwcm90bykgeworICBSVENfQ0hFQ0socHJvdG8uaGFz
X3RpbWVzdGFtcF9tcygpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19pbl9hbHIoKSk7CisgIExv
Z2dlZEFsclN0YXRlRXZlbnQgYWxyX2V2ZW50OworICBhbHJfZXZlbnQudGltZXN0YW1wX3VzID0g
cHJvdG8udGltZXN0YW1wX21zKCkgKiAxMDAwOworICBhbHJfZXZlbnQuaW5fYWxyID0gcHJvdG8u
aW5fYWxyKCk7CisKKyAgYWxyX3N0YXRlX2V2ZW50c18ucHVzaF9iYWNrKGFscl9ldmVudCk7Cisg
IC8vIFRPRE8odGVyZWxpdXMpOiBTaG91bGQgd2UgZGVsdGEgZW5jb2RlIHRoaXMgZXZlbnQgdHlw
ZT8KK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVBdWRpb1BsYXlvdXRFdmVu
dCgKKyAgICBjb25zdCBydGNsb2cyOjpBdWRpb1BsYXlvdXRFdmVudHMmIHByb3RvKSB7CisgIFJU
Q19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1wX21zKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFz
X2xvY2FsX3NzcmMoKSk7CisKKyAgLy8gQmFzZSBldmVudAorICBhdXRvIG1hcF9pdCA9IGF1ZGlv
X3BsYXlvdXRfZXZlbnRzX1twcm90by5sb2NhbF9zc3JjKCldOworICBhdWRpb19wbGF5b3V0X2V2
ZW50c19bcHJvdG8ubG9jYWxfc3NyYygpXS5lbXBsYWNlX2JhY2soCisgICAgICAxMDAwICogcHJv
dG8udGltZXN0YW1wX21zKCksIHByb3RvLmxvY2FsX3NzcmMoKSk7CisKKyAgY29uc3Qgc2l6ZV90
IG51bWJlcl9vZl9kZWx0YXMgPQorICAgICAgcHJvdG8uaGFzX251bWJlcl9vZl9kZWx0YXMoKSA/
IHByb3RvLm51bWJlcl9vZl9kZWx0YXMoKSA6IDB1OworICBpZiAobnVtYmVyX29mX2RlbHRhcyA9
PSAwKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgLy8gdGltZXN0YW1wX21zCisgIHN0ZDo6dmVj
dG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdGltZXN0YW1wX21zX3ZhbHVlcyA9CisgICAg
ICBEZWNvZGVEZWx0YXMocHJvdG8udGltZXN0YW1wX21zX2RlbHRhcygpLAorICAgICAgICAgICAg
ICAgICAgIFRvVW5zaWduZWQocHJvdG8udGltZXN0YW1wX21zKCkpLCBudW1iZXJfb2ZfZGVsdGFz
KTsKKyAgUlRDX0NIRUNLX0VRKHRpbWVzdGFtcF9tc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2Zf
ZGVsdGFzKTsKKworICAvLyBsb2NhbF9zc3JjCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90Pj4gbG9jYWxfc3NyY192YWx1ZXMgPSBEZWNvZGVEZWx0YXMoCisgICAgICBwcm90
by5sb2NhbF9zc3JjX2RlbHRhcygpLCBwcm90by5sb2NhbF9zc3JjKCksIG51bWJlcl9vZl9kZWx0
YXMpOworICBSVENfQ0hFQ0tfRVEobG9jYWxfc3NyY192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2Zf
ZGVsdGFzKTsKKworICAvLyBEZWx0YSBkZWNvZGluZworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bWJlcl9vZl9kZWx0YXM7ICsraSkgeworICAgIFJUQ19DSEVDSyh0aW1lc3RhbXBfbXNfdmFs
dWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBSVENfQ0hFQ0sobG9jYWxfc3NyY192YWx1ZXNbaV0u
aGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDS19MRShsb2NhbF9zc3JjX3ZhbHVlc1tpXS52YWx1
ZSgpLAorICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCkpOworCisgICAgaW50NjRfdCB0aW1lc3RhbXBfbXM7CisgICAgUlRDX0NIRUNLKFRvU2lnbmVk
KHRpbWVzdGFtcF9tc192YWx1ZXNbaV0udmFsdWUoKSwgJnRpbWVzdGFtcF9tcykpOworCisgICAg
Y29uc3QgdWludDMyX3QgbG9jYWxfc3NyYyA9CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90
Pihsb2NhbF9zc3JjX3ZhbHVlc1tpXS52YWx1ZSgpKTsKKyAgICBhdWRpb19wbGF5b3V0X2V2ZW50
c19bbG9jYWxfc3NyY10uZW1wbGFjZV9iYWNrKDEwMDAgKiB0aW1lc3RhbXBfbXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9zc3JjKTsK
KyAgfQorfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUluY29taW5nUnRwUGFj
a2V0cygKKyAgICBjb25zdCBydGNsb2cyOjpJbmNvbWluZ1J0cFBhY2tldHMmIHByb3RvKSB7Cisg
IFN0b3JlUnRwUGFja2V0cyhwcm90bywgJmluY29taW5nX3J0cF9wYWNrZXRzX21hcF8pOworfQor
Cit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZU91dGdvaW5nUnRwUGFja2V0cygKKyAg
ICBjb25zdCBydGNsb2cyOjpPdXRnb2luZ1J0cFBhY2tldHMmIHByb3RvKSB7CisgIFN0b3JlUnRw
UGFja2V0cyhwcm90bywgJm91dGdvaW5nX3J0cF9wYWNrZXRzX21hcF8pOworfQorCit2b2lkIFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUluY29taW5nUnRjcFBhY2tldHMoCisgICAgY29uc3Qg
cnRjbG9nMjo6SW5jb21pbmdSdGNwUGFja2V0cyYgcHJvdG8pIHsKKyAgU3RvcmVSdGNwUGFja2V0
cyhwcm90bywgJmluY29taW5nX3J0Y3BfcGFja2V0c18pOworfQorCit2b2lkIFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpTdG9yZU91dGdvaW5nUnRjcFBhY2tldHMoCisgICAgY29uc3QgcnRjbG9nMjo6
T3V0Z29pbmdSdGNwUGFja2V0cyYgcHJvdG8pIHsKKyAgU3RvcmVSdGNwUGFja2V0cyhwcm90bywg
Jm91dGdvaW5nX3J0Y3BfcGFja2V0c18pOworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpTdG9yZVN0YXJ0RXZlbnQoCisgICAgY29uc3QgcnRjbG9nMjo6QmVnaW5Mb2dFdmVudCYgcHJv
dG8pIHsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190aW1lc3RhbXBfbXMoKSk7CisgIFJUQ19DSEVD
Syhwcm90by5oYXNfdmVyc2lvbigpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc191dGNfdGltZV9t
cygpKTsKKyAgUlRDX0NIRUNLX0VRKHByb3RvLnZlcnNpb24oKSwgMik7CisgIExvZ2dlZFN0YXJ0
RXZlbnQgc3RhcnRfZXZlbnQocHJvdG8udGltZXN0YW1wX21zKCkgKiAxMDAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3RvLnV0Y190aW1lX21zKCkpOworCisgIHN0YXJ0X2xv
Z19ldmVudHNfLnB1c2hfYmFjayhzdGFydF9ldmVudCk7Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OlN0b3JlU3RvcEV2ZW50KGNvbnN0IHJ0Y2xvZzI6OkVuZExvZ0V2ZW50JiBwcm90
bykgeworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgTG9nZ2VkU3Rv
cEV2ZW50IHN0b3BfZXZlbnQocHJvdG8udGltZXN0YW1wX21zKCkgKiAxMDAwKTsKKworICBzdG9w
X2xvZ19ldmVudHNfLnB1c2hfYmFjayhzdG9wX2V2ZW50KTsKK30KKwordm9pZCBQYXJzZWRSdGNF
dmVudExvZ05ldzo6U3RvcmVCd2VMb3NzQmFzZWRVcGRhdGUoCisgICAgY29uc3QgcnRjbG9nMjo6
TG9zc0Jhc2VkQndlVXBkYXRlcyYgcHJvdG8pIHsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190aW1l
c3RhbXBfbXMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfYml0cmF0ZV9icHMoKSk7CisgIFJU
Q19DSEVDSyhwcm90by5oYXNfZnJhY3Rpb25fbG9zcygpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhh
c190b3RhbF9wYWNrZXRzKCkpOworCisgIC8vIEJhc2UgZXZlbnQKKyAgYndlX2xvc3NfdXBkYXRl
c18uZW1wbGFjZV9iYWNrKDEwMDAgKiBwcm90by50aW1lc3RhbXBfbXMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3RvLmJpdHJhdGVfYnBzKCksIHByb3RvLmZyYWN0aW9u
X2xvc3MoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvLnRvdGFsX3Bh
Y2tldHMoKSk7CisKKyAgY29uc3Qgc2l6ZV90IG51bWJlcl9vZl9kZWx0YXMgPQorICAgICAgcHJv
dG8uaGFzX251bWJlcl9vZl9kZWx0YXMoKSA/IHByb3RvLm51bWJlcl9vZl9kZWx0YXMoKSA6IDB1
OworICBpZiAobnVtYmVyX29mX2RlbHRhcyA9PSAwKSB7CisgICAgcmV0dXJuOworICB9CisKKyAg
Ly8gdGltZXN0YW1wX21zCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4g
dGltZXN0YW1wX21zX3ZhbHVlcyA9CisgICAgICBEZWNvZGVEZWx0YXMocHJvdG8udGltZXN0YW1w
X21zX2RlbHRhcygpLAorICAgICAgICAgICAgICAgICAgIFRvVW5zaWduZWQocHJvdG8udGltZXN0
YW1wX21zKCkpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHRpbWVzdGFtcF9t
c192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBiaXRyYXRlX2Jwcwor
ICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGJpdHJhdGVfYnBzX3ZhbHVl
cyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3RvLmJpdHJhdGVfYnBzX2RlbHRhcygpLCBwcm90
by5iaXRyYXRlX2JwcygpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGJpdHJh
dGVfYnBzX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIGZyYWN0aW9u
X2xvc3MKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBmcmFjdGlvbl9s
b3NzX3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3RvLmZyYWN0aW9uX2xvc3NfZGVs
dGFzKCksIHByb3RvLmZyYWN0aW9uX2xvc3MoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19D
SEVDS19FUShmcmFjdGlvbl9sb3NzX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOwor
CisgIC8vIHRvdGFsX3BhY2tldHMKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0
X3Q+PiB0b3RhbF9wYWNrZXRzX3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3RvLnRv
dGFsX3BhY2tldHNfZGVsdGFzKCksIHByb3RvLnRvdGFsX3BhY2tldHMoKSwgbnVtYmVyX29mX2Rl
bHRhcyk7CisgIFJUQ19DSEVDS19FUSh0b3RhbF9wYWNrZXRzX3ZhbHVlcy5zaXplKCksIG51bWJl
cl9vZl9kZWx0YXMpOworCisgIC8vIERlbHRhIGRlY29kaW5nCisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtYmVyX29mX2RlbHRhczsgKytpKSB7CisgICAgUlRDX0NIRUNLKHRpbWVzdGFtcF9t
c192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIGludDY0X3QgdGltZXN0YW1wX21zOworICAg
IFJUQ19DSEVDSyhUb1NpZ25lZCh0aW1lc3RhbXBfbXNfdmFsdWVzW2ldLnZhbHVlKCksICZ0aW1l
c3RhbXBfbXMpKTsKKworICAgIFJUQ19DSEVDSyhiaXRyYXRlX2Jwc192YWx1ZXNbaV0uaGFzX3Zh
bHVlKCkpOworICAgIFJUQ19DSEVDS19MRShiaXRyYXRlX2Jwc192YWx1ZXNbaV0udmFsdWUoKSwK
KyAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsK
KyAgICBjb25zdCB1aW50MzJfdCBiaXRyYXRlX2JwcyA9CisgICAgICAgIHN0YXRpY19jYXN0PHVp
bnQzMl90PihiaXRyYXRlX2Jwc192YWx1ZXNbaV0udmFsdWUoKSk7CisKKyAgICBSVENfQ0hFQ0so
ZnJhY3Rpb25fbG9zc192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDS19MRShm
cmFjdGlvbl9sb3NzX3ZhbHVlc1tpXS52YWx1ZSgpLAorICAgICAgICAgICAgICAgICBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOworICAgIGNvbnN0IHVpbnQzMl90IGZyYWN0
aW9uX2xvc3MgPQorICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhY3Rpb25fbG9zc192
YWx1ZXNbaV0udmFsdWUoKSk7CisKKyAgICBSVENfQ0hFQ0sodG90YWxfcGFja2V0c192YWx1ZXNb
aV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDS19MRSh0b3RhbF9wYWNrZXRzX3ZhbHVlc1tp
XS52YWx1ZSgpLAorICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90
Pjo6bWF4KCkpOworICAgIGNvbnN0IHVpbnQzMl90IHRvdGFsX3BhY2tldHMgPQorICAgICAgICBz
dGF0aWNfY2FzdDx1aW50MzJfdD4odG90YWxfcGFja2V0c192YWx1ZXNbaV0udmFsdWUoKSk7CisK
KyAgICBid2VfbG9zc191cGRhdGVzXy5lbXBsYWNlX2JhY2soMTAwMCAqIHRpbWVzdGFtcF9tcywg
Yml0cmF0ZV9icHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9u
X2xvc3MsIHRvdGFsX3BhY2tldHMpOworICB9Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dO
ZXc6OlN0b3JlQndlRGVsYXlCYXNlZFVwZGF0ZSgKKyAgICBjb25zdCBydGNsb2cyOjpEZWxheUJh
c2VkQndlVXBkYXRlcyYgcHJvdG8pIHsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190aW1lc3RhbXBf
bXMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfYml0cmF0ZV9icHMoKSk7CisgIFJUQ19DSEVD
Syhwcm90by5oYXNfZGV0ZWN0b3Jfc3RhdGUoKSk7CisKKyAgLy8gQmFzZSBldmVudAorICBjb25z
dCBCYW5kd2lkdGhVc2FnZSBiYXNlX2RldGVjdG9yX3N0YXRlID0KKyAgICAgIEdldFJ1bnRpbWVE
ZXRlY3RvclN0YXRlKHByb3RvLmRldGVjdG9yX3N0YXRlKCkpOworICBid2VfZGVsYXlfdXBkYXRl
c18uZW1wbGFjZV9iYWNrKDEwMDAgKiBwcm90by50aW1lc3RhbXBfbXMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcm90by5iaXRyYXRlX2JwcygpLCBiYXNlX2RldGVjdG9y
X3N0YXRlKTsKKworICBjb25zdCBzaXplX3QgbnVtYmVyX29mX2RlbHRhcyA9CisgICAgICBwcm90
by5oYXNfbnVtYmVyX29mX2RlbHRhcygpID8gcHJvdG8ubnVtYmVyX29mX2RlbHRhcygpIDogMHU7
CisgIGlmIChudW1iZXJfb2ZfZGVsdGFzID09IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAv
LyB0aW1lc3RhbXBfbXMKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB0
aW1lc3RhbXBfbXNfdmFsdWVzID0KKyAgICAgIERlY29kZURlbHRhcyhwcm90by50aW1lc3RhbXBf
bXNfZGVsdGFzKCksCisgICAgICAgICAgICAgICAgICAgVG9VbnNpZ25lZChwcm90by50aW1lc3Rh
bXBfbXMoKSksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEodGltZXN0YW1wX21z
X3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIGJpdHJhdGVfYnBzCisg
IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gYml0cmF0ZV9icHNfdmFsdWVz
ID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJvdG8uYml0cmF0ZV9icHNfZGVsdGFzKCksIHByb3Rv
LmJpdHJhdGVfYnBzKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEoYml0cmF0
ZV9icHNfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gZGV0ZWN0b3Jf
c3RhdGUKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBkZXRlY3Rvcl9z
dGF0ZV92YWx1ZXMgPSBEZWNvZGVEZWx0YXMoCisgICAgICBwcm90by5kZXRlY3Rvcl9zdGF0ZV9k
ZWx0YXMoKSwKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihwcm90by5kZXRlY3Rvcl9zdGF0
ZSgpKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShkZXRlY3Rvcl9zdGF0ZV92
YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBEZWx0YSBkZWNvZGluZwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlcl9vZl9kZWx0YXM7ICsraSkgeworICAgIFJU
Q19DSEVDSyh0aW1lc3RhbXBfbXNfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBpbnQ2NF90
IHRpbWVzdGFtcF9tczsKKyAgICBSVENfQ0hFQ0soVG9TaWduZWQodGltZXN0YW1wX21zX3ZhbHVl
c1tpXS52YWx1ZSgpLCAmdGltZXN0YW1wX21zKSk7CisKKyAgICBSVENfQ0hFQ0soYml0cmF0ZV9i
cHNfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBSVENfQ0hFQ0tfTEUoYml0cmF0ZV9icHNf
dmFsdWVzW2ldLnZhbHVlKCksCisgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDMyX3Q+OjptYXgoKSk7CisgICAgY29uc3QgdWludDMyX3QgYml0cmF0ZV9icHMgPQorICAg
ICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYml0cmF0ZV9icHNfdmFsdWVzW2ldLnZhbHVlKCkp
OworCisgICAgUlRDX0NIRUNLKGRldGVjdG9yX3N0YXRlX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7
CisgICAgY29uc3QgYXV0byBkZXRlY3Rvcl9zdGF0ZSA9CisgICAgICAgIHN0YXRpY19jYXN0PHJ0
Y2xvZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVzOjpEZXRlY3RvclN0YXRlPigKKyAgICAgICAgICAg
IGRldGVjdG9yX3N0YXRlX3ZhbHVlc1tpXS52YWx1ZSgpKTsKKworICAgIGJ3ZV9kZWxheV91cGRh
dGVzXy5lbXBsYWNlX2JhY2soMTAwMCAqIHRpbWVzdGFtcF9tcywgYml0cmF0ZV9icHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRSdW50aW1lRGV0ZWN0b3JTdGF0ZShk
ZXRlY3Rvcl9zdGF0ZSkpOworICB9Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0
b3JlQndlUHJvYmVDbHVzdGVyQ3JlYXRlZCgKKyAgICBjb25zdCBydGNsb2cyOjpCd2VQcm9iZUNs
dXN0ZXImIHByb3RvKSB7CisgIExvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCBwcm9i
ZV9jbHVzdGVyOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgcHJv
YmVfY2x1c3Rlci50aW1lc3RhbXBfdXMgPSBwcm90by50aW1lc3RhbXBfbXMoKSAqIDEwMDA7Cisg
IFJUQ19DSEVDSyhwcm90by5oYXNfaWQoKSk7CisgIHByb2JlX2NsdXN0ZXIuaWQgPSBwcm90by5p
ZCgpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2JpdHJhdGVfYnBzKCkpOworICBwcm9iZV9jbHVz
dGVyLmJpdHJhdGVfYnBzID0gcHJvdG8uYml0cmF0ZV9icHMoKTsKKyAgUlRDX0NIRUNLKHByb3Rv
Lmhhc19taW5fcGFja2V0cygpKTsKKyAgcHJvYmVfY2x1c3Rlci5taW5fcGFja2V0cyA9IHByb3Rv
Lm1pbl9wYWNrZXRzKCk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfbWluX2J5dGVzKCkpOworICBw
cm9iZV9jbHVzdGVyLm1pbl9ieXRlcyA9IHByb3RvLm1pbl9ieXRlcygpOworCisgIGJ3ZV9wcm9i
ZV9jbHVzdGVyX2NyZWF0ZWRfZXZlbnRzXy5wdXNoX2JhY2socHJvYmVfY2x1c3Rlcik7CisKKyAg
Ly8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YSBlbmNvZGUgdGhpcyBldmVudCB0eXBl
PworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUJ3ZVByb2JlU3VjY2Vzc0V2
ZW50KAorICAgIGNvbnN0IHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0U3VjY2VzcyYgcHJvdG8pIHsK
KyAgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQgcHJvYmVfcmVzdWx0OworICBSVENfQ0hFQ0so
cHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgcHJvYmVfcmVzdWx0LnRpbWVzdGFtcF91cyA9
IHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAwMDsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19pZCgp
KTsKKyAgcHJvYmVfcmVzdWx0LmlkID0gcHJvdG8uaWQoKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhh
c19iaXRyYXRlX2JwcygpKTsKKyAgcHJvYmVfcmVzdWx0LmJpdHJhdGVfYnBzID0gcHJvdG8uYml0
cmF0ZV9icHMoKTsKKworICBid2VfcHJvYmVfc3VjY2Vzc19ldmVudHNfLnB1c2hfYmFjayhwcm9i
ZV9yZXN1bHQpOworCisgIC8vIFRPRE8odGVyZWxpdXMpOiBTaG91bGQgd2UgZGVsdGEgZW5jb2Rl
IHRoaXMgZXZlbnQgdHlwZT8KK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVC
d2VQcm9iZUZhaWx1cmVFdmVudCgKKyAgICBjb25zdCBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZh
aWx1cmUmIHByb3RvKSB7CisgIExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50IHByb2JlX3Jlc3Vs
dDsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190aW1lc3RhbXBfbXMoKSk7CisgIHByb2JlX3Jlc3Vs
dC50aW1lc3RhbXBfdXMgPSBwcm90by50aW1lc3RhbXBfbXMoKSAqIDEwMDA7CisgIFJUQ19DSEVD
Syhwcm90by5oYXNfaWQoKSk7CisgIHByb2JlX3Jlc3VsdC5pZCA9IHByb3RvLmlkKCk7CisgIFJU
Q19DSEVDSyhwcm90by5oYXNfZmFpbHVyZSgpKTsKKyAgcHJvYmVfcmVzdWx0LmZhaWx1cmVfcmVh
c29uID0gR2V0UnVudGltZVByb2JlRmFpbHVyZVJlYXNvbihwcm90by5mYWlsdXJlKCkpOworCisg
IGJ3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50c18ucHVzaF9iYWNrKHByb2JlX3Jlc3VsdCk7CisKKyAg
Ly8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YSBlbmNvZGUgdGhpcyBldmVudCB0eXBl
PworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUF1ZGlvTmV0d29ya0FkYXB0
YXRpb25FdmVudCgKKyAgICBjb25zdCBydGNsb2cyOjpBdWRpb05ldHdvcmtBZGFwdGF0aW9ucyYg
cHJvdG8pIHsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190aW1lc3RhbXBfbXMoKSk7CisKKyAgLy8g
QmFzZSBldmVudAorICB7CisgICAgQXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZyBydW50aW1lX2Nv
bmZpZzsKKyAgICBpZiAocHJvdG8uaGFzX2JpdHJhdGVfYnBzKCkpIHsKKyAgICAgIHJ1bnRpbWVf
Y29uZmlnLmJpdHJhdGVfYnBzID0gcHJvdG8uYml0cmF0ZV9icHMoKTsKKyAgICB9CisgICAgaWYg
KHByb3RvLmhhc19mcmFtZV9sZW5ndGhfbXMoKSkgeworICAgICAgcnVudGltZV9jb25maWcuZnJh
bWVfbGVuZ3RoX21zID0gcHJvdG8uZnJhbWVfbGVuZ3RoX21zKCk7CisgICAgfQorICAgIGlmIChw
cm90by5oYXNfdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKCkpIHsKKyAgICAgIGZsb2F0IHVw
bGlua19wYWNrZXRfbG9zc19mcmFjdGlvbjsKKyAgICAgIFJUQ19DSEVDSyhQYXJzZVBhY2tldExv
c3NGcmFjdGlvbkZyb21Qcm90b0Zvcm1hdCgKKyAgICAgICAgICBwcm90by51cGxpbmtfcGFja2V0
X2xvc3NfZnJhY3Rpb24oKSwgJnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbikpOworICAgICAg
cnVudGltZV9jb25maWcudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uID0gdXBsaW5rX3BhY2tl
dF9sb3NzX2ZyYWN0aW9uOworICAgIH0KKyAgICBpZiAocHJvdG8uaGFzX2VuYWJsZV9mZWMoKSkg
eworICAgICAgcnVudGltZV9jb25maWcuZW5hYmxlX2ZlYyA9IHByb3RvLmVuYWJsZV9mZWMoKTsK
KyAgICB9CisgICAgaWYgKHByb3RvLmhhc19lbmFibGVfZHR4KCkpIHsKKyAgICAgIHJ1bnRpbWVf
Y29uZmlnLmVuYWJsZV9kdHggPSBwcm90by5lbmFibGVfZHR4KCk7CisgICAgfQorICAgIGlmIChw
cm90by5oYXNfbnVtX2NoYW5uZWxzKCkpIHsKKyAgICAgIC8vIE5vdGU6IEVuY29kaW5nIE4gYXMg
Ti0xIG9ubHkgZG9uZSBmb3IgfG51bV9jaGFubmVsc19kZWx0YXN8LgorICAgICAgcnVudGltZV9j
b25maWcubnVtX2NoYW5uZWxzID0gcHJvdG8ubnVtX2NoYW5uZWxzKCk7CisgICAgfQorICAgIGF1
ZGlvX25ldHdvcmtfYWRhcHRhdGlvbl9ldmVudHNfLmVtcGxhY2VfYmFjaygxMDAwICogcHJvdG8u
dGltZXN0YW1wX21zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ1bnRpbWVfY29uZmlnKTsKKyAgfQorCisgIGNvbnN0IHNpemVfdCBudW1iZXJf
b2ZfZGVsdGFzID0KKyAgICAgIHByb3RvLmhhc19udW1iZXJfb2ZfZGVsdGFzKCkgPyBwcm90by5u
dW1iZXJfb2ZfZGVsdGFzKCkgOiAwdTsKKyAgaWYgKG51bWJlcl9vZl9kZWx0YXMgPT0gMCkgewor
ICAgIHJldHVybjsKKyAgfQorCisgIC8vIHRpbWVzdGFtcF9tcworICBzdGQ6OnZlY3RvcjxhYnNs
OjpvcHRpb25hbDx1aW50NjRfdD4+IHRpbWVzdGFtcF9tc192YWx1ZXMgPQorICAgICAgRGVjb2Rl
RGVsdGFzKHByb3RvLnRpbWVzdGFtcF9tc19kZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICBU
b1Vuc2lnbmVkKHByb3RvLnRpbWVzdGFtcF9tcygpKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJU
Q19DSEVDS19FUSh0aW1lc3RhbXBfbXNfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7
CisKKyAgLy8gYml0cmF0ZV9icHMKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHVu
c2lnbmVkX2Jhc2VfYml0cmF0ZV9icHMgPQorICAgICAgcHJvdG8uaGFzX2JpdHJhdGVfYnBzKCkK
KyAgICAgICAgICA/IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PihUb1Vuc2lnbmVkKHByb3RvLmJp
dHJhdGVfYnBzKCkpKQorICAgICAgICAgIDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7Cisg
IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gYml0cmF0ZV9icHNfdmFsdWVz
ID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJvdG8uYml0cmF0ZV9icHNfZGVsdGFzKCksIHVuc2ln
bmVkX2Jhc2VfYml0cmF0ZV9icHMsIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEo
Yml0cmF0ZV9icHNfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gZnJh
bWVfbGVuZ3RoX21zCisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiB1bnNpZ25lZF9i
YXNlX2ZyYW1lX2xlbmd0aF9tcyA9CisgICAgICBwcm90by5oYXNfZnJhbWVfbGVuZ3RoX21zKCkK
KyAgICAgICAgICA/IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PihUb1Vuc2lnbmVkKHByb3RvLmZy
YW1lX2xlbmd0aF9tcygpKSkKKyAgICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pigp
OworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGZyYW1lX2xlbmd0aF9t
c192YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLmZyYW1lX2xlbmd0aF9tc19kZWx0
YXMoKSwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZF9iYXNlX2ZyYW1lX2xlbmd0aF9tcywg
bnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShmcmFtZV9sZW5ndGhfbXNfdmFsdWVz
LnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gdXBsaW5rX3BhY2tldF9sb3NzX2Zy
YWN0aW9uCisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiB1cGxpbmtfcGFja2V0X2xv
c3NfZnJhY3Rpb24gPQorICAgICAgcHJvdG8uaGFzX3VwbGlua19wYWNrZXRfbG9zc19mcmFjdGlv
bigpCisgICAgICAgICAgPyBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4ocHJvdG8udXBsaW5rX3Bh
Y2tldF9sb3NzX2ZyYWN0aW9uKCkpCisgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRf
dD4oKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB1cGxpbmtfcGFj
a2V0X2xvc3NfZnJhY3Rpb25fdmFsdWVzID0KKyAgICAgIERlY29kZURlbHRhcyhwcm90by51cGxp
bmtfcGFja2V0X2xvc3NfZnJhY3Rpb25fZGVsdGFzKCksCisgICAgICAgICAgICAgICAgICAgdXBs
aW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNL
X0VRKHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbl92YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2Zf
ZGVsdGFzKTsKKworICAvLyBlbmFibGVfZmVjCisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2
NF90PiBlbmFibGVfZmVjID0KKyAgICAgIHByb3RvLmhhc19lbmFibGVfZmVjKCkgPyBhYnNsOjpv
cHRpb25hbDx1aW50NjRfdD4ocHJvdG8uZW5hYmxlX2ZlYygpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICBzdGQ6OnZlY3Rvcjxh
YnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGVuYWJsZV9mZWNfdmFsdWVzID0KKyAgICAgIERlY29k
ZURlbHRhcyhwcm90by5lbmFibGVfZmVjX2RlbHRhcygpLCBlbmFibGVfZmVjLCBudW1iZXJfb2Zf
ZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGVuYWJsZV9mZWNfdmFsdWVzLnNpemUoKSwgbnVtYmVy
X29mX2RlbHRhcyk7CisKKyAgLy8gZW5hYmxlX2R0eAorICBjb25zdCBhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4gZW5hYmxlX2R0eCA9CisgICAgICBwcm90by5oYXNfZW5hYmxlX2R0eCgpID8gYWJz
bDo6b3B0aW9uYWw8dWludDY0X3Q+KHByb3RvLmVuYWJsZV9kdHgoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgc3RkOjp2ZWN0
b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBlbmFibGVfZHR4X3ZhbHVlcyA9CisgICAgICBE
ZWNvZGVEZWx0YXMocHJvdG8uZW5hYmxlX2R0eF9kZWx0YXMoKSwgZW5hYmxlX2R0eCwgbnVtYmVy
X29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShlbmFibGVfZHR4X3ZhbHVlcy5zaXplKCksIG51
bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIG51bV9jaGFubmVscworICAvLyBOb3RlOiBGb3IgZGVs
dGEgZW5jb2RpbmcsIGFsbCBudW1fY2hhbm5lbCB2YWx1ZXMsIGluY2x1ZGluZyB0aGUgYmFzZSwK
KyAgLy8gd2VyZSBzaGlmdGVkIGRvd24gYnkgb25lLCBidXQgaW4gdGhlIGJhc2UgZXZlbnQsIHRo
ZXkgd2VyZSBub3QuCisgIC8vIFdlIGxpa2V3aXNlIHNoaWZ0IHRoZSBiYXNlIGV2ZW50IGRvd24g
Ynkgb25lLCB0byBnZXQgdGhlIHNhbWUgYmFzZSBhcworICAvLyBlbmNvZGluZyBoYWQsIGJ1dCB0
aGVuIHNoaWZ0IGFsbCBvZiB0aGUgdmFsdWVzIChleGNlcHQgdGhlIGJhc2UpIGJhY2sgdXAKKyAg
Ly8gIHRvIHRoZWlyIG9yaWdpbmFsIHZhbHVlLgorICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4g
c2hpZnRlZF9iYXNlX251bV9jaGFubmVsczsKKyAgaWYgKHByb3RvLmhhc19udW1fY2hhbm5lbHMo
KSkgeworICAgIHNoaWZ0ZWRfYmFzZV9udW1fY2hhbm5lbHMgPQorICAgICAgICBhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4ocHJvdG8ubnVtX2NoYW5uZWxzKCkgLSAxKTsKKyAgfQorICBzdGQ6OnZl
Y3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IG51bV9jaGFubmVsc192YWx1ZXMgPSBEZWNv
ZGVEZWx0YXMoCisgICAgICBwcm90by5udW1fY2hhbm5lbHNfZGVsdGFzKCksIHNoaWZ0ZWRfYmFz
ZV9udW1fY2hhbm5lbHMsIG51bWJlcl9vZl9kZWx0YXMpOworICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bV9jaGFubmVsc192YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBpZiAobnVtX2NoYW5u
ZWxzX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSkgeworICAgICAgbnVtX2NoYW5uZWxzX3ZhbHVlc1tp
XSA9IG51bV9jaGFubmVsc192YWx1ZXNbaV0udmFsdWUoKSArIDE7CisgICAgfQorICB9CisgIFJU
Q19DSEVDS19FUShudW1fY2hhbm5lbHNfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7
CisKKyAgLy8gRGVsdGEgZGVjb2RpbmcKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJf
b2ZfZGVsdGFzOyArK2kpIHsKKyAgICBSVENfQ0hFQ0sodGltZXN0YW1wX21zX3ZhbHVlc1tpXS5o
YXNfdmFsdWUoKSk7CisgICAgaW50NjRfdCB0aW1lc3RhbXBfbXM7CisgICAgUlRDX0NIRUNLKFRv
U2lnbmVkKHRpbWVzdGFtcF9tc192YWx1ZXNbaV0udmFsdWUoKSwgJnRpbWVzdGFtcF9tcykpOwor
CisgICAgQXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZyBydW50aW1lX2NvbmZpZzsKKyAgICBpZiAo
Yml0cmF0ZV9icHNfdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBpbnQgc2lnbmVkX2Jp
dHJhdGVfYnBzOworICAgICAgUlRDX0NIRUNLKFRvU2lnbmVkKGJpdHJhdGVfYnBzX3ZhbHVlc1tp
XS52YWx1ZSgpLCAmc2lnbmVkX2JpdHJhdGVfYnBzKSk7CisgICAgICBydW50aW1lX2NvbmZpZy5i
aXRyYXRlX2JwcyA9IHNpZ25lZF9iaXRyYXRlX2JwczsKKyAgICB9CisgICAgaWYgKGZyYW1lX2xl
bmd0aF9tc192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIGludCBzaWduZWRfZnJhbWVf
bGVuZ3RoX21zOworICAgICAgUlRDX0NIRUNLKAorICAgICAgICAgIFRvU2lnbmVkKGZyYW1lX2xl
bmd0aF9tc192YWx1ZXNbaV0udmFsdWUoKSwgJnNpZ25lZF9mcmFtZV9sZW5ndGhfbXMpKTsKKyAg
ICAgIHJ1bnRpbWVfY29uZmlnLmZyYW1lX2xlbmd0aF9tcyA9IHNpZ25lZF9mcmFtZV9sZW5ndGhf
bXM7CisgICAgfQorICAgIGlmICh1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb25fdmFsdWVzW2ld
Lmhhc192YWx1ZSgpKSB7CisgICAgICBmbG9hdCB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb247
CisgICAgICBSVENfQ0hFQ0soUGFyc2VQYWNrZXRMb3NzRnJhY3Rpb25Gcm9tUHJvdG9Gb3JtYXQo
CisgICAgICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8dWludDMyX3Q+KAorICAgICAgICAgICAgICB1
cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb25fdmFsdWVzW2ldLnZhbHVlKCkpLAorICAgICAgICAg
ICZ1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24pKTsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLnVw
bGlua19wYWNrZXRfbG9zc19mcmFjdGlvbiA9IHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbjsK
KyAgICB9CisgICAgaWYgKGVuYWJsZV9mZWNfdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAg
ICBydW50aW1lX2NvbmZpZy5lbmFibGVfZmVjID0KKyAgICAgICAgICBydGM6OmNoZWNrZWRfY2Fz
dDxib29sPihlbmFibGVfZmVjX3ZhbHVlc1tpXS52YWx1ZSgpKTsKKyAgICB9CisgICAgaWYgKGVu
YWJsZV9kdHhfdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBydW50aW1lX2NvbmZpZy5l
bmFibGVfZHR4ID0KKyAgICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDxib29sPihlbmFibGVfZHR4
X3ZhbHVlc1tpXS52YWx1ZSgpKTsKKyAgICB9CisgICAgaWYgKG51bV9jaGFubmVsc192YWx1ZXNb
aV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLm51bV9jaGFubmVscyA9Cisg
ICAgICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8c2l6ZV90PihudW1fY2hhbm5lbHNfdmFsdWVzW2ld
LnZhbHVlKCkpOworICAgIH0KKyAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb25fZXZlbnRzXy5l
bXBsYWNlX2JhY2soMTAwMCAqIHRpbWVzdGFtcF9tcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZV9jb25maWcpOworICB9Cit9CisKK3Zv
aWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlSWNlQ2FuZGlkYXRlUGFpckNvbmZpZygKKyAg
ICBjb25zdCBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnJiBwcm90bykgeworICBMb2dn
ZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnIGljZV9jb25maWc7CisgIFJUQ19DSEVDSyhwcm90by5o
YXNfdGltZXN0YW1wX21zKCkpOworICBpY2VfY29uZmlnLnRpbWVzdGFtcF91cyA9IHByb3RvLnRp
bWVzdGFtcF9tcygpICogMTAwMDsKKworICBSVENfQ0hFQ0socHJvdG8uaGFzX2NvbmZpZ190eXBl
KCkpOworICBpY2VfY29uZmlnLnR5cGUgPSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckNvbmZp
Z1R5cGUocHJvdG8uY29uZmlnX3R5cGUoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfY2FuZGlk
YXRlX3BhaXJfaWQoKSk7CisgIGljZV9jb25maWcuY2FuZGlkYXRlX3BhaXJfaWQgPSBwcm90by5j
YW5kaWRhdGVfcGFpcl9pZCgpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2xvY2FsX2NhbmRpZGF0
ZV90eXBlKCkpOworICBpY2VfY29uZmlnLmxvY2FsX2NhbmRpZGF0ZV90eXBlID0KKyAgICAgIEdl
dFJ1bnRpbWVJY2VDYW5kaWRhdGVUeXBlKHByb3RvLmxvY2FsX2NhbmRpZGF0ZV90eXBlKCkpOwor
ICBSVENfQ0hFQ0socHJvdG8uaGFzX2xvY2FsX3JlbGF5X3Byb3RvY29sKCkpOworICBpY2VfY29u
ZmlnLmxvY2FsX3JlbGF5X3Byb3RvY29sID0KKyAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQ
YWlyUHJvdG9jb2wocHJvdG8ubG9jYWxfcmVsYXlfcHJvdG9jb2woKSk7CisgIFJUQ19DSEVDSyhw
cm90by5oYXNfbG9jYWxfbmV0d29ya190eXBlKCkpOworICBpY2VfY29uZmlnLmxvY2FsX25ldHdv
cmtfdHlwZSA9CisgICAgICBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGUocHJvdG8u
bG9jYWxfbmV0d29ya190eXBlKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2xvY2FsX2FkZHJl
c3NfZmFtaWx5KCkpOworICBpY2VfY29uZmlnLmxvY2FsX2FkZHJlc3NfZmFtaWx5ID0KKyAgICAg
IEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseShwcm90by5sb2NhbF9hZGRy
ZXNzX2ZhbWlseSgpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19yZW1vdGVfY2FuZGlkYXRlX3R5
cGUoKSk7CisgIGljZV9jb25maWcucmVtb3RlX2NhbmRpZGF0ZV90eXBlID0KKyAgICAgIEdldFJ1
bnRpbWVJY2VDYW5kaWRhdGVUeXBlKHByb3RvLnJlbW90ZV9jYW5kaWRhdGVfdHlwZSgpKTsKKyAg
UlRDX0NIRUNLKHByb3RvLmhhc19yZW1vdGVfYWRkcmVzc19mYW1pbHkoKSk7CisgIGljZV9jb25m
aWcucmVtb3RlX2FkZHJlc3NfZmFtaWx5ID0KKyAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQ
YWlyQWRkcmVzc0ZhbWlseShwcm90by5yZW1vdGVfYWRkcmVzc19mYW1pbHkoKSk7CisgIFJUQ19D
SEVDSyhwcm90by5oYXNfY2FuZGlkYXRlX3BhaXJfcHJvdG9jb2woKSk7CisgIGljZV9jb25maWcu
Y2FuZGlkYXRlX3BhaXJfcHJvdG9jb2wgPQorICAgICAgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBh
aXJQcm90b2NvbChwcm90by5jYW5kaWRhdGVfcGFpcl9wcm90b2NvbCgpKTsKKworICBpY2VfY2Fu
ZGlkYXRlX3BhaXJfY29uZmlnc18ucHVzaF9iYWNrKGljZV9jb25maWcpOworCisgIC8vIFRPRE8o
dGVyZWxpdXMpOiBTaG91bGQgd2UgZGVsdGEgZW5jb2RlIHRoaXMgZXZlbnQgdHlwZT8KK30KKwor
dm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVJY2VDYW5kaWRhdGVFdmVudCgKKyAgICBj
b25zdCBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQmIHByb3RvKSB7CisgIExvZ2dlZElj
ZUNhbmRpZGF0ZVBhaXJFdmVudCBpY2VfZXZlbnQ7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdGlt
ZXN0YW1wX21zKCkpOworICBpY2VfZXZlbnQudGltZXN0YW1wX3VzID0gcHJvdG8udGltZXN0YW1w
X21zKCkgKiAxMDAwOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2V2ZW50X3R5cGUoKSk7CisgIGlj
ZV9ldmVudC50eXBlID0gR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUocHJvdG8u
ZXZlbnRfdHlwZSgpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19jYW5kaWRhdGVfcGFpcl9pZCgp
KTsKKyAgaWNlX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2lkID0gcHJvdG8uY2FuZGlkYXRlX3BhaXJf
aWQoKTsKKworICBpY2VfY2FuZGlkYXRlX3BhaXJfZXZlbnRzXy5wdXNoX2JhY2soaWNlX2V2ZW50
KTsKKworICAvLyBUT0RPKHRlcmVsaXVzKTogU2hvdWxkIHdlIGRlbHRhIGVuY29kZSB0aGlzIGV2
ZW50IHR5cGU/Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlVmlkZW9SZWN2
Q29uZmlnKAorICAgIGNvbnN0IHJ0Y2xvZzI6OlZpZGVvUmVjdlN0cmVhbUNvbmZpZyYgcHJvdG8p
IHsKKyAgTG9nZ2VkVmlkZW9SZWN2Q29uZmlnIHN0cmVhbTsKKyAgUlRDX0NIRUNLKHByb3RvLmhh
c190aW1lc3RhbXBfbXMoKSk7CisgIHN0cmVhbS50aW1lc3RhbXBfdXMgPSBwcm90by50aW1lc3Rh
bXBfbXMoKSAqIDEwMDA7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfcmVtb3RlX3NzcmMoKSk7Cisg
IHN0cmVhbS5jb25maWcucmVtb3RlX3NzcmMgPSBwcm90by5yZW1vdGVfc3NyYygpOworICBSVENf
Q0hFQ0socHJvdG8uaGFzX2xvY2FsX3NzcmMoKSk7CisgIHN0cmVhbS5jb25maWcubG9jYWxfc3Ny
YyA9IHByb3RvLmxvY2FsX3NzcmMoKTsKKyAgaWYgKHByb3RvLmhhc19ydHhfc3NyYygpKSB7Cisg
ICAgc3RyZWFtLmNvbmZpZy5ydHhfc3NyYyA9IHByb3RvLnJ0eF9zc3JjKCk7CisgIH0KKyAgaWYg
KHByb3RvLmhhc19oZWFkZXJfZXh0ZW5zaW9ucygpKSB7CisgICAgc3RyZWFtLmNvbmZpZy5ydHBf
ZXh0ZW5zaW9ucyA9CisgICAgICAgIEdldFJ1bnRpbWVSdHBIZWFkZXJFeHRlbnNpb25Db25maWco
cHJvdG8uaGVhZGVyX2V4dGVuc2lvbnMoKSk7CisgIH0KKyAgdmlkZW9fcmVjdl9jb25maWdzXy5w
dXNoX2JhY2soc3RyZWFtKTsKK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVW
aWRlb1NlbmRDb25maWcoCisgICAgY29uc3QgcnRjbG9nMjo6VmlkZW9TZW5kU3RyZWFtQ29uZmln
JiBwcm90bykgeworICBMb2dnZWRWaWRlb1NlbmRDb25maWcgc3RyZWFtOworICBSVENfQ0hFQ0so
cHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgc3RyZWFtLnRpbWVzdGFtcF91cyA9IHByb3Rv
LnRpbWVzdGFtcF9tcygpICogMTAwMDsKKyAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOwor
ICBSVENfQ0hFQ0socHJvdG8uaGFzX3NzcmMoKSk7CisgIGNvbmZpZy5sb2NhbF9zc3JjID0gcHJv
dG8uc3NyYygpOworICBpZiAocHJvdG8uaGFzX3J0eF9zc3JjKCkpIHsKKyAgICBjb25maWcucnR4
X3NzcmMgPSBwcm90by5ydHhfc3NyYygpOworICB9CisgIGlmIChwcm90by5oYXNfaGVhZGVyX2V4
dGVuc2lvbnMoKSkgeworICAgIGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyA9CisgICAgICAgIEdldFJ1
bnRpbWVSdHBIZWFkZXJFeHRlbnNpb25Db25maWcocHJvdG8uaGVhZGVyX2V4dGVuc2lvbnMoKSk7
CisgIH0KKyAgc3RyZWFtLmNvbmZpZ3MucHVzaF9iYWNrKGNvbmZpZyk7CisgIHZpZGVvX3NlbmRf
Y29uZmlnc18ucHVzaF9iYWNrKHN0cmVhbSk7Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dO
ZXc6OlN0b3JlQXVkaW9SZWN2Q29uZmlnKAorICAgIGNvbnN0IHJ0Y2xvZzI6OkF1ZGlvUmVjdlN0
cmVhbUNvbmZpZyYgcHJvdG8pIHsKKyAgTG9nZ2VkQXVkaW9SZWN2Q29uZmlnIHN0cmVhbTsKKyAg
UlRDX0NIRUNLKHByb3RvLmhhc190aW1lc3RhbXBfbXMoKSk7CisgIHN0cmVhbS50aW1lc3RhbXBf
dXMgPSBwcm90by50aW1lc3RhbXBfbXMoKSAqIDEwMDA7CisgIFJUQ19DSEVDSyhwcm90by5oYXNf
cmVtb3RlX3NzcmMoKSk7CisgIHN0cmVhbS5jb25maWcucmVtb3RlX3NzcmMgPSBwcm90by5yZW1v
dGVfc3NyYygpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2xvY2FsX3NzcmMoKSk7CisgIHN0cmVh
bS5jb25maWcubG9jYWxfc3NyYyA9IHByb3RvLmxvY2FsX3NzcmMoKTsKKyAgaWYgKHByb3RvLmhh
c19oZWFkZXJfZXh0ZW5zaW9ucygpKSB7CisgICAgc3RyZWFtLmNvbmZpZy5ydHBfZXh0ZW5zaW9u
cyA9CisgICAgICAgIEdldFJ1bnRpbWVSdHBIZWFkZXJFeHRlbnNpb25Db25maWcocHJvdG8uaGVh
ZGVyX2V4dGVuc2lvbnMoKSk7CisgIH0KKyAgYXVkaW9fcmVjdl9jb25maWdzXy5wdXNoX2JhY2so
c3RyZWFtKTsKK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVBdWRpb1NlbmRD
b25maWcoCisgICAgY29uc3QgcnRjbG9nMjo6QXVkaW9TZW5kU3RyZWFtQ29uZmlnJiBwcm90bykg
eworICBMb2dnZWRBdWRpb1NlbmRDb25maWcgc3RyZWFtOworICBSVENfQ0hFQ0socHJvdG8uaGFz
X3RpbWVzdGFtcF9tcygpKTsKKyAgc3RyZWFtLnRpbWVzdGFtcF91cyA9IHByb3RvLnRpbWVzdGFt
cF9tcygpICogMTAwMDsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19zc3JjKCkpOworICBzdHJlYW0u
Y29uZmlnLmxvY2FsX3NzcmMgPSBwcm90by5zc3JjKCk7CisgIGlmIChwcm90by5oYXNfaGVhZGVy
X2V4dGVuc2lvbnMoKSkgeworICAgIHN0cmVhbS5jb25maWcucnRwX2V4dGVuc2lvbnMgPQorICAg
ICAgICBHZXRSdW50aW1lUnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnKHByb3RvLmhlYWRlcl9leHRl
bnNpb25zKCkpOworICB9CisgIGF1ZGlvX3NlbmRfY29uZmlnc18ucHVzaF9iYWNrKHN0cmVhbSk7
Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZl
bnRfbG9nX3BhcnNlcl9uZXcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlcl9uZXcuaApp
bmRleCA1YWIwYzE1YjkyYTc5ZTU2YzRjMDljZGYwZDRiMDRlZWYxMmYwNjc2Li41MGUzYjk5MjJk
ZTI2YWRjOGRlODAwMGQwZWE2ZjRlYzRjYmI1YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2
ZW50X2xvZ19wYXJzZXJfbmV3LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25l
dy5oCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2
ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuaCIKICNpbmNsdWRlICJsb2dnaW5n
L3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvci5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9p
bmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvY29tbW9uX2hlYWRlci5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L25hY2suaCIKQEAgLTM5
LDggKzM5LDEwIEBACiBSVENfUFVTSF9JR05PUklOR19XVU5ERUYoKQogI2lmZGVmIFdFQlJUQ19B
TkRST0lEX1BMQVRGT1JNX0JVSUxECiAjaW5jbHVkZSAiZXh0ZXJuYWwvd2VicnRjL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5wYi5oIgorI2luY2x1ZGUgImV4dGVy
bmFsL3dlYnJ0Yy93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnBi
LmgiCiAjZWxzZQogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9n
LnBiLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnBi
LmgiCiAjZW5kaWYKIFJUQ19QT1BfSUdOT1JJTkdfV1VOREVGKCkKIApAQCAtNTUsNzAgKzU3LDEz
NiBAQCBzdHJ1Y3QgQXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZzsKIC8vIGNvbnNpZGVyZWQgdG8g
b3V0d2VpZ2ggdGhlIGFkZGVkIG1lbW9yeSBhbmQgcnVudGltZSBvdmVyaGVhZCBpbmN1cnJlZCBi
eQogLy8gYWRkaW5nIGEgdnB0ci4KIHN0cnVjdCBMb2dnZWRBbHJTdGF0ZUV2ZW50IHsKLSAgaW50
NjRfdCB0aW1lc3RhbXBfdXM7Ci0gIGJvb2wgaW5fYWxyOworICBMb2dnZWRBbHJTdGF0ZUV2ZW50
KCkgPSBkZWZhdWx0OworICBMb2dnZWRBbHJTdGF0ZUV2ZW50KGludDY0X3QgdGltZXN0YW1wX3Vz
LCBib29sIGluX2FscikKKyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIGluX2Fs
cihpbl9hbHIpIHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRp
bWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGlt
ZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBib29sIGlu
X2FscjsKIH07CiAKIHN0cnVjdCBMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCB7Ci0gIGludDY0X3Qg
dGltZXN0YW1wX3VzOwotICB1aW50MzJfdCBzc3JjOworICBMb2dnZWRBdWRpb1BsYXlvdXRFdmVu
dCgpID0gZGVmYXVsdDsKKyAgTG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQoaW50NjRfdCB0aW1lc3Rh
bXBfdXMsIHVpbnQzMl90IHNzcmMpCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMp
LCBzc3JjKHNzcmMpIHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJu
IHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4g
dGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICB1aW50
MzJfdCBzc3JjOwogfTsKIAogc3RydWN0IExvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVu
dCB7Ci0gIGludDY0X3QgdGltZXN0YW1wX3VzOwotICBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmln
IGNvbmZpZzsKKyAgTG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50KCkgPSBkZWZhdWx0
OworICBMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRXZlbnQoaW50NjRfdCB0aW1lc3RhbXBf
dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb0VuY29k
ZXJSdW50aW1lQ29uZmlnJiBjb25maWcpCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBf
dXMpLCBjb25maWcoY29uZmlnKSB7fQorCiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7
IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsg
cmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKworICBpbnQ2NF90IHRpbWVzdGFtcF91czsK
KyAgQXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZyBjb25maWc7CiB9OwogCiBzdHJ1Y3QgTG9nZ2Vk
QndlRGVsYXlCYXNlZFVwZGF0ZSB7CisgIExvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoKSA9IGRl
ZmF1bHQ7CisgIExvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoaW50NjRfdCB0aW1lc3RhbXBfdXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBiaXRyYXRlX2JwcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCYW5kd2lkdGhVc2FnZSBkZXRlY3Rvcl9zdGF0ZSkKKyAg
ICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksCisgICAgICAgIGJpdHJhdGVfYnBzKGJp
dHJhdGVfYnBzKSwKKyAgICAgICAgZGV0ZWN0b3Jfc3RhdGUoZGV0ZWN0b3Jfc3RhdGUpIHt9CisK
KyAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQor
ICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAw
MDsgfQorCiAgIGludDY0X3QgdGltZXN0YW1wX3VzOwogICBpbnQzMl90IGJpdHJhdGVfYnBzOwog
ICBCYW5kd2lkdGhVc2FnZSBkZXRlY3Rvcl9zdGF0ZTsKLSAgaW50NjRfdCBsb2dfdGltZV91cygp
IGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21zKCkg
Y29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExvZ2dl
ZEJ3ZUxvc3NCYXNlZFVwZGF0ZSB7CisgIExvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSgpID0gZGVm
YXVsdDsKKyAgTG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlKGludDY0X3QgdGltZXN0YW1wX3VzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBiaXRyYXRlX2JwcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgZXhwZWN0ZWRfcGFja2V0cykKKyAgICAgIDogdGltZXN0YW1w
X3VzKHRpbWVzdGFtcF91cyksCisgICAgICAgIGJpdHJhdGVfYnBzKGJpdHJhdGVfYnBzKSwKKyAg
ICAgICAgZnJhY3Rpb25fbG9zdChmcmFjdGlvbl9sb3N0KSwKKyAgICAgICAgZXhwZWN0ZWRfcGFj
a2V0cyhleHBlY3RlZF9wYWNrZXRzKSB7fQorCisgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25z
dCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KKyAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0
IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKwogICBpbnQ2NF90IHRpbWVzdGFtcF91
czsKICAgaW50MzJfdCBiaXRyYXRlX2JwczsKICAgdWludDhfdCBmcmFjdGlvbl9sb3N0OwogICBp
bnQzMl90IGV4cGVjdGVkX3BhY2tldHM7Ci0gIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7
IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KLSAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsg
cmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KIH07CiAKIHN0cnVjdCBMb2dnZWRCd2VQcm9i
ZUNsdXN0ZXJDcmVhdGVkRXZlbnQgeworICBMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZl
bnQoKSA9IGRlZmF1bHQ7CisgIExvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudChpbnQ2
NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDMyX3QgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGJp
dHJhdGVfYnBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
bWluX3BhY2tldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBtaW5fYnl0ZXMpCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLAorICAgICAg
ICBpZChpZCksCisgICAgICAgIGJpdHJhdGVfYnBzKGJpdHJhdGVfYnBzKSwKKyAgICAgICAgbWlu
X3BhY2tldHMobWluX3BhY2tldHMpLAorICAgICAgICBtaW5fYnl0ZXMobWluX2J5dGVzKSB7fQor
CisgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0K
KyAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEw
MDA7IH0KKwogICBpbnQ2NF90IHRpbWVzdGFtcF91czsKICAgaW50MzJfdCBpZDsKICAgaW50MzJf
dCBiaXRyYXRlX2JwczsKICAgdWludDMyX3QgbWluX3BhY2tldHM7CiAgIHVpbnQzMl90IG1pbl9i
eXRlczsKLSAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91
czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
IC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50IHsKKyAg
TG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQoKSA9IGRlZmF1bHQ7CisgIExvZ2dlZEJ3ZVByb2Jl
U3VjY2Vzc0V2ZW50KGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90
IGJpdHJhdGVfYnBzKQorICAgICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwgaWQoaWQp
LCBiaXRyYXRlX2JwcyhiaXRyYXRlX2Jwcykge30KKworICBpbnQ2NF90IGxvZ190aW1lX3VzKCkg
Y29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CisgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBj
b25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKICAgaW50NjRfdCB0aW1lc3Rh
bXBfdXM7CiAgIGludDMyX3QgaWQ7CiAgIGludDMyX3QgYml0cmF0ZV9icHM7Ci0gIGludDY0X3Qg
bG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KLSAgaW50NjRfdCBs
b2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KIH07CiAK
IHN0cnVjdCBMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCB7CisgIExvZ2dlZEJ3ZVByb2JlRmFp
bHVyZUV2ZW50KCkgPSBkZWZhdWx0OworICBMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudChpbnQ2
NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBp
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYmVGYWlsdXJlUmVhc29uIGZhaWx1
cmVfcmVhc29uKQorICAgICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwgaWQoaWQpLCBm
YWlsdXJlX3JlYXNvbihmYWlsdXJlX3JlYXNvbikge30KKworICBpbnQ2NF90IGxvZ190aW1lX3Vz
KCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CisgIGludDY0X3QgbG9nX3RpbWVfbXMo
KSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKICAgaW50NjRfdCB0aW1l
c3RhbXBfdXM7CiAgIGludDMyX3QgaWQ7CiAgIFByb2JlRmFpbHVyZVJlYXNvbiBmYWlsdXJlX3Jl
YXNvbjsKLSAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91
czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
IC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWcgewor
ICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9Cisg
IGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAw
OyB9CisKICAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CiAgIEljZUNhbmRpZGF0ZVBhaXJDb25maWdU
eXBlIHR5cGU7CiAgIHVpbnQzMl90IGNhbmRpZGF0ZV9wYWlyX2lkOwpAQCAtMTI5LDE2ICsxOTcs
MjMgQEAgc3RydWN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWcgewogICBJY2VDYW5kaWRh
dGVUeXBlIHJlbW90ZV9jYW5kaWRhdGVfdHlwZTsKICAgSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NG
YW1pbHkgcmVtb3RlX2FkZHJlc3NfZmFtaWx5OwogICBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2wg
Y2FuZGlkYXRlX3BhaXJfcHJvdG9jb2w7Ci0gIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7
IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KLSAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsg
cmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KIH07CiAKIHN0cnVjdCBMb2dnZWRJY2VDYW5k
aWRhdGVQYWlyRXZlbnQgeworICBMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQoKSA9IGRlZmF1
bHQ7CisgIExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudChpbnQ2NF90IHRpbWVzdGFtcF91cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGNhbmRpZGF0ZV9w
YWlyX2lkKQorICAgICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwKKyAgICAgICAgdHlw
ZSh0eXBlKSwKKyAgICAgICAgY2FuZGlkYXRlX3BhaXJfaWQoY2FuZGlkYXRlX3BhaXJfaWQpIHt9
CisKKyAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsg
fQorICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8g
MTAwMDsgfQorCiAgIGludDY0X3QgdGltZXN0YW1wX3VzOwogICBJY2VDYW5kaWRhdGVQYWlyRXZl
bnRUeXBlIHR5cGU7CiAgIHVpbnQzMl90IGNhbmRpZGF0ZV9wYWlyX2lkOwotICBpbnQ2NF90IGxv
Z190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9Ci0gIGludDY0X3QgbG9n
X3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CiB9OwogCiBz
dHJ1Y3QgTG9nZ2VkUnRwUGFja2V0IHsKQEAgLTE1MCwxMyArMjI1LDE1IEBAIHN0cnVjdCBMb2dn
ZWRSdHBQYWNrZXQgewogICAgICAgICBoZWFkZXIoaGVhZGVyKSwKICAgICAgICAgaGVhZGVyX2xl
bmd0aChoZWFkZXJfbGVuZ3RoKSwKICAgICAgICAgdG90YWxfbGVuZ3RoKHRvdGFsX2xlbmd0aCkg
e30KKworICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
OyB9CisgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMg
LyAxMDAwOyB9CisKICAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CiAgIC8vIFRPRE8odGVyZWxpdXMp
OiBUaGlzIGFsbG9jYXRlcyBzcGFjZSBmb3IgMTUgQ1NSQ3MgZXZlbiBpZiBub25lIGFyZSB1c2Vk
LgogICBSVFBIZWFkZXIgaGVhZGVyOwogICBzaXplX3QgaGVhZGVyX2xlbmd0aDsKICAgc2l6ZV90
IHRvdGFsX2xlbmd0aDsKLSAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRp
bWVzdGFtcF91czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGlt
ZXN0YW1wX3VzIC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5n
IHsKQEAgLTE2NSw5ICsyNDIsMTAgQEAgc3RydWN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlYWRlcl9sZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCB0b3RhbF9sZW5ndGgpCiAgICAgICA6IHJ0cCh0aW1l
c3RhbXBfdXMsIGhlYWRlciwgaGVhZGVyX2xlbmd0aCwgdG90YWxfbGVuZ3RoKSB7fQotICBMb2dn
ZWRSdHBQYWNrZXQgcnRwOwogICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4g
cnRwLnRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1
cm4gcnRwLnRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKworICBMb2dnZWRSdHBQYWNrZXQgcnRwOwog
fTsKIAogc3RydWN0IExvZ2dlZFJ0cFBhY2tldE91dGdvaW5nIHsKQEAgLTE3NiwyMSArMjU0LDI1
IEBAIHN0cnVjdCBMb2dnZWRSdHBQYWNrZXRPdXRnb2luZyB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBoZWFkZXJfbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgdG90YWxfbGVuZ3RoKQogICAgICAgOiBydHAodGltZXN0YW1wX3VzLCBoZWFkZXIsIGhl
YWRlcl9sZW5ndGgsIHRvdGFsX2xlbmd0aCkge30KLSAgTG9nZ2VkUnRwUGFja2V0IHJ0cDsKICAg
aW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHJ0cC50aW1lc3RhbXBfdXM7IH0K
ICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHJ0cC50aW1lc3RhbXBfdXMg
LyAxMDAwOyB9CisKKyAgTG9nZ2VkUnRwUGFja2V0IHJ0cDsKIH07CiAKIHN0cnVjdCBMb2dnZWRS
dGNwUGFja2V0IHsKICAgTG9nZ2VkUnRjcFBhY2tldCh1aW50NjRfdCB0aW1lc3RhbXBfdXMsCiAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogcGFja2V0LAogICAgICAgICAgICAgICAg
ICAgIHNpemVfdCB0b3RhbF9sZW5ndGgpOworICBMb2dnZWRSdGNwUGFja2V0KHVpbnQ2NF90IHRp
bWVzdGFtcF91cywgY29uc3Qgc3RkOjpzdHJpbmcmIHBhY2tldCk7CiAgIExvZ2dlZFJ0Y3BQYWNr
ZXQoY29uc3QgTG9nZ2VkUnRjcFBhY2tldCYpOwogICB+TG9nZ2VkUnRjcFBhY2tldCgpOwotICBp
bnQ2NF90IHRpbWVzdGFtcF91czsKLSAgc3RkOjp2ZWN0b3I8dWludDhfdD4gcmF3X2RhdGE7CisK
ICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQog
ICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAw
MDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBy
YXdfZGF0YTsKIH07CiAKIHN0cnVjdCBMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcgewpAQCAtMTk4
LDkgKzI4MCwxMyBAQCBzdHJ1Y3QgTG9nZ2VkUnRjcFBhY2tldEluY29taW5nIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCB0b3RhbF9sZW5ndGgpCiAgICAgICA6IHJ0Y3AodGltZXN0YW1w
X3VzLCBwYWNrZXQsIHRvdGFsX2xlbmd0aCkge30KLSAgTG9nZ2VkUnRjcFBhY2tldCBydGNwOwor
ICBMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcodWludDY0X3QgdGltZXN0YW1wX3VzLCBjb25zdCBz
dGQ6OnN0cmluZyYgcGFja2V0KQorICAgICAgOiBydGNwKHRpbWVzdGFtcF91cywgcGFja2V0KSB7
fQorCiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiBydGNwLnRpbWVzdGFt
cF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gcnRjcC50aW1l
c3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgTG9nZ2VkUnRjcFBhY2tldCBydGNwOwogfTsKIAogc3Ry
dWN0IExvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZyB7CkBAIC0yMDgsOTcgKzI5NCwxNTAgQEAgc3Ry
dWN0IExvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90KiBwYWNrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgdG90YWxfbGVuZ3RoKQogICAgICAgOiBydGNwKHRpbWVzdGFtcF91cywgcGFja2V0LCB0b3Rh
bF9sZW5ndGgpIHt9Ci0gIExvZ2dlZFJ0Y3BQYWNrZXQgcnRjcDsKKyAgTG9nZ2VkUnRjcFBhY2tl
dE91dGdvaW5nKHVpbnQ2NF90IHRpbWVzdGFtcF91cywgY29uc3Qgc3RkOjpzdHJpbmcmIHBhY2tl
dCkKKyAgICAgIDogcnRjcCh0aW1lc3RhbXBfdXMsIHBhY2tldCkge30KKwogICBpbnQ2NF90IGxv
Z190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gcnRjcC50aW1lc3RhbXBfdXM7IH0KICAgaW50NjRf
dCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHJ0Y3AudGltZXN0YW1wX3VzIC8gMTAwMDsg
fQorCisgIExvZ2dlZFJ0Y3BQYWNrZXQgcnRjcDsKIH07CiAKIHN0cnVjdCBMb2dnZWRSdGNwUGFj
a2V0UmVjZWl2ZXJSZXBvcnQgewotICBpbnQ2NF90IHRpbWVzdGFtcF91czsKLSAgcnRjcDo6UmVj
ZWl2ZXJSZXBvcnQgcnI7CisgIExvZ2dlZFJ0Y3BQYWNrZXRSZWNlaXZlclJlcG9ydCgpID0gZGVm
YXVsdDsKKyAgTG9nZ2VkUnRjcFBhY2tldFJlY2VpdmVyUmVwb3J0KGludDY0X3QgdGltZXN0YW1w
X3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjcDo6UmVjZWl2
ZXJSZXBvcnQmIHJyKQorICAgICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwgcnIocnIp
IHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91
czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
IC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBydGNwOjpSZWNlaXZlclJl
cG9ydCBycjsKIH07CiAKIHN0cnVjdCBMb2dnZWRSdGNwUGFja2V0U2VuZGVyUmVwb3J0IHsKLSAg
aW50NjRfdCB0aW1lc3RhbXBfdXM7Ci0gIHJ0Y3A6OlNlbmRlclJlcG9ydCBzcjsKKyAgTG9nZ2Vk
UnRjcFBhY2tldFNlbmRlclJlcG9ydCgpID0gZGVmYXVsdDsKKyAgTG9nZ2VkUnRjcFBhY2tldFNl
bmRlclJlcG9ydChpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGNwOjpTZW5kZXJSZXBvcnQmIHNyKQorICAgICAgOiB0aW1lc3RhbXBf
dXModGltZXN0YW1wX3VzKSwgc3Ioc3IpIHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNv
bnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29u
c3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1w
X3VzOworICBydGNwOjpTZW5kZXJSZXBvcnQgc3I7CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkUnRjcFBh
Y2tldFJlbWIgewotICBpbnQ2NF90IHRpbWVzdGFtcF91czsKLSAgcnRjcDo6UmVtYiByZW1iOwor
ICBMb2dnZWRSdGNwUGFja2V0UmVtYigpID0gZGVmYXVsdDsKKyAgTG9nZ2VkUnRjcFBhY2tldFJl
bWIoaW50NjRfdCB0aW1lc3RhbXBfdXMsIGNvbnN0IHJ0Y3A6OlJlbWImIHJlbWIpCisgICAgICA6
IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCByZW1iKHJlbWIpIHt9CisKICAgaW50NjRfdCBs
b2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxv
Z190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGlu
dDY0X3QgdGltZXN0YW1wX3VzOworICBydGNwOjpSZW1iIHJlbWI7CiB9OwogCiBzdHJ1Y3QgTG9n
Z2VkUnRjcFBhY2tldE5hY2sgewotICBpbnQ2NF90IHRpbWVzdGFtcF91czsKLSAgcnRjcDo6TmFj
ayBuYWNrOworICBMb2dnZWRSdGNwUGFja2V0TmFjaygpID0gZGVmYXVsdDsKKyAgTG9nZ2VkUnRj
cFBhY2tldE5hY2soaW50NjRfdCB0aW1lc3RhbXBfdXMsIGNvbnN0IHJ0Y3A6Ok5hY2smIG5hY2sp
CisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBuYWNrKG5hY2spIHt9CisKICAg
aW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBp
bnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsg
fQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBydGNwOjpOYWNrIG5hY2s7CiB9OwogCiBz
dHJ1Y3QgTG9nZ2VkUnRjcFBhY2tldFRyYW5zcG9ydEZlZWRiYWNrIHsKLSAgaW50NjRfdCB0aW1l
c3RhbXBfdXM7Ci0gIHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrIHRyYW5zcG9ydF9mZWVkYmFjazsK
KyAgTG9nZ2VkUnRjcFBhY2tldFRyYW5zcG9ydEZlZWRiYWNrKCkgPSBkZWZhdWx0OworICBMb2dn
ZWRSdGNwUGFja2V0VHJhbnNwb3J0RmVlZGJhY2soCisgICAgICBpbnQ2NF90IHRpbWVzdGFtcF91
cywKKyAgICAgIGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiB0cmFuc3BvcnRfZmVlZGJh
Y2spCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCB0cmFuc3BvcnRfZmVlZGJh
Y2sodHJhbnNwb3J0X2ZlZWRiYWNrKSB7fQorCiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25z
dCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0
IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKworICBpbnQ2NF90IHRpbWVzdGFtcF91
czsKKyAgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2sgdHJhbnNwb3J0X2ZlZWRiYWNrOwogfTsKIAog
c3RydWN0IExvZ2dlZFN0YXJ0RXZlbnQgewogICBleHBsaWNpdCBMb2dnZWRTdGFydEV2ZW50KGlu
dDY0X3QgdGltZXN0YW1wX3VzKQotICAgICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSB7
fQotICBpbnQ2NF90IHRpbWVzdGFtcF91czsKKyAgICAgIDogTG9nZ2VkU3RhcnRFdmVudCh0aW1l
c3RhbXBfdXMsIHRpbWVzdGFtcF91cyAvIDEwMDApIHt9CisKKyAgTG9nZ2VkU3RhcnRFdmVudChp
bnQ2NF90IHRpbWVzdGFtcF91cywgaW50NjRfdCB1dGNfc3RhcnRfdGltZV9tcykKKyAgICAgIDog
dGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIHV0Y19zdGFydF90aW1lX21zKHV0Y19zdGFydF90
aW1lX21zKSB7fQorCiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1l
c3RhbXBfdXM7IH0KICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVz
dGFtcF91cyAvIDEwMDA7IH0KKworICBpbnQ2NF90IHRpbWVzdGFtcF91czsKKyAgaW50NjRfdCB1
dGNfc3RhcnRfdGltZV9tczsKIH07CiAKIHN0cnVjdCBMb2dnZWRTdG9wRXZlbnQgewogICBleHBs
aWNpdCBMb2dnZWRTdG9wRXZlbnQoaW50NjRfdCB0aW1lc3RhbXBfdXMpIDogdGltZXN0YW1wX3Vz
KHRpbWVzdGFtcF91cykge30KLSAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CisKICAgaW50NjRfdCBs
b2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxv
Z190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGlu
dDY0X3QgdGltZXN0YW1wX3VzOwogfTsKIAogc3RydWN0IExvZ2dlZEF1ZGlvUmVjdkNvbmZpZyB7
CisgIExvZ2dlZEF1ZGlvUmVjdkNvbmZpZygpID0gZGVmYXVsdDsKICAgTG9nZ2VkQXVkaW9SZWN2
Q29uZmlnKGludDY0X3QgdGltZXN0YW1wX3VzLCBjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZyBj
b25maWcpCiAgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBjb25maWcoY29uZmln
KSB7fQotICBpbnQ2NF90IHRpbWVzdGFtcF91czsKLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29u
ZmlnOworCiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBf
dXM7IH0KICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91
cyAvIDEwMDA7IH0KKworICBpbnQ2NF90IHRpbWVzdGFtcF91czsKKyAgcnRjbG9nOjpTdHJlYW1D
b25maWcgY29uZmlnOwogfTsKIAogc3RydWN0IExvZ2dlZEF1ZGlvU2VuZENvbmZpZyB7CisgIExv
Z2dlZEF1ZGlvU2VuZENvbmZpZygpID0gZGVmYXVsdDsKICAgTG9nZ2VkQXVkaW9TZW5kQ29uZmln
KGludDY0X3QgdGltZXN0YW1wX3VzLCBjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcp
CiAgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBjb25maWcoY29uZmlnKSB7fQot
ICBpbnQ2NF90IHRpbWVzdGFtcF91czsKLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOwor
CiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0K
ICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEw
MDA7IH0KKworICBpbnQ2NF90IHRpbWVzdGFtcF91czsKKyAgcnRjbG9nOjpTdHJlYW1Db25maWcg
Y29uZmlnOwogfTsKIAogc3RydWN0IExvZ2dlZFZpZGVvUmVjdkNvbmZpZyB7CisgIExvZ2dlZFZp
ZGVvUmVjdkNvbmZpZygpID0gZGVmYXVsdDsKICAgTG9nZ2VkVmlkZW9SZWN2Q29uZmlnKGludDY0
X3QgdGltZXN0YW1wX3VzLCBjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcpCiAgICAg
ICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBjb25maWcoY29uZmlnKSB7fQotICBpbnQ2
NF90IHRpbWVzdGFtcF91czsKLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOworCiAgIGlu
dDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KICAgaW50
NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0K
KworICBpbnQ2NF90IHRpbWVzdGFtcF91czsKKyAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmln
OwogfTsKIAogc3RydWN0IExvZ2dlZFZpZGVvU2VuZENvbmZpZyB7CisgIExvZ2dlZFZpZGVvU2Vu
ZENvbmZpZygpOwogICBMb2dnZWRWaWRlb1NlbmRDb25maWcoaW50NjRfdCB0aW1lc3RhbXBfdXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVh
bUNvbmZpZz4mIGNvbmZpZ3MpOwogICBMb2dnZWRWaWRlb1NlbmRDb25maWcoY29uc3QgTG9nZ2Vk
VmlkZW9TZW5kQ29uZmlnJik7CiAgIH5Mb2dnZWRWaWRlb1NlbmRDb25maWcoKTsKLSAgaW50NjRf
dCB0aW1lc3RhbXBfdXM7Ci0gIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25m
aWdzOworCiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBf
dXM7IH0KICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91
cyAvIDEwMDA7IH0KKworICBpbnQ2NF90IHRpbWVzdGFtcF91czsKKyAgc3RkOjp2ZWN0b3I8cnRj
bG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZ3M7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
QEAgLTQ3NywzMCArNjE2LDYgQEAgY2xhc3MgUGFyc2VkUnRjRXZlbnRMb2dOZXcgewogICBmcmll
bmQgY2xhc3MgUnRjRXZlbnRMb2dUZXN0SGVscGVyOwogCiAgcHVibGljOgotICB+UGFyc2VkUnRj
RXZlbnRMb2dOZXcoKTsKLQotICBlbnVtIGNsYXNzIEV2ZW50VHlwZSB7Ci0gICAgVU5LTk9XTl9F
VkVOVCA9IDAsCi0gICAgTE9HX1NUQVJUID0gMSwKLSAgICBMT0dfRU5EID0gMiwKLSAgICBSVFBf
RVZFTlQgPSAzLAotICAgIFJUQ1BfRVZFTlQgPSA0LAotICAgIEFVRElPX1BMQVlPVVRfRVZFTlQg
PSA1LAotICAgIExPU1NfQkFTRURfQldFX1VQREFURSA9IDYsCi0gICAgREVMQVlfQkFTRURfQldF
X1VQREFURSA9IDcsCi0gICAgVklERU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UID0gOCwKLSAgICBW
SURFT19TRU5ERVJfQ09ORklHX0VWRU5UID0gOSwKLSAgICBBVURJT19SRUNFSVZFUl9DT05GSUdf
RVZFTlQgPSAxMCwKLSAgICBBVURJT19TRU5ERVJfQ09ORklHX0VWRU5UID0gMTEsCi0gICAgQVVE
SU9fTkVUV09SS19BREFQVEFUSU9OX0VWRU5UID0gMTYsCi0gICAgQldFX1BST0JFX0NMVVNURVJf
Q1JFQVRFRF9FVkVOVCA9IDE3LAotICAgIEJXRV9QUk9CRV9GQUlMVVJFX0VWRU5UID0gMTgsCi0g
ICAgQldFX1BST0JFX1NVQ0NFU1NfRVZFTlQgPSAxOSwKLSAgICBBTFJfU1RBVEVfRVZFTlQgPSAy
MCwKLSAgICBJQ0VfQ0FORElEQVRFX1BBSVJfQ09ORklHID0gMjEsCi0gICAgSUNFX0NBTkRJREFU
RV9QQUlSX0VWRU5UID0gMjIsCi0gIH07Ci0KICAgZW51bSBjbGFzcyBNZWRpYVR5cGUgeyBBTlks
IEFVRElPLCBWSURFTywgREFUQSB9OwogICBlbnVtIGNsYXNzIFVuY29uZmlndXJlZEhlYWRlckV4
dGVuc2lvbnMgewogICAgIGtEb250UGFyc2UsCkBAIC01NDEsNiArNjU2LDggQEAgY2xhc3MgUGFy
c2VkUnRjRXZlbnRMb2dOZXcgewogICAgICAgVW5jb25maWd1cmVkSGVhZGVyRXh0ZW5zaW9ucyBw
YXJzZV91bmNvbmZpZ3VyZWRfaGVhZGVyX2V4dGVuc2lvbnMgPQogICAgICAgICAgIFVuY29uZmln
dXJlZEhlYWRlckV4dGVuc2lvbnM6OmtEb250UGFyc2UpOwogCisgIH5QYXJzZWRSdGNFdmVudExv
Z05ldygpOworCiAgIC8vIENsZWFycyBwcmV2aW91c2x5IHBhcnNlZCBldmVudHMgYW5kIHJlc2V0
cyB0aGUgUGFyc2VkUnRjRXZlbnRMb2dOZXcgdG8gYW4KICAgLy8gZW1wdHkgc3RhdGUuCiAgIHZv
aWQgQ2xlYXIoKTsKQEAgLTU1NSwxMTEgKzY3Miw4IEBAIGNsYXNzIFBhcnNlZFJ0Y0V2ZW50TG9n
TmV3IHsKICAgYm9vbCBQYXJzZVN0cmVhbSgKICAgICAgIHN0ZDo6aXN0cmVhbSYgc3RyZWFtKTsg
IC8vIG5vLXByZXN1Ym1pdC1jaGVjayBUT0RPKHdlYnJ0Yzo4OTgyKQogCi0gIC8vIFJldHVybnMg
dGhlIG51bWJlciBvZiBldmVudHMgaW4gYW4gRXZlbnRTdHJlYW0uCi0gIHNpemVfdCBHZXROdW1i
ZXJPZkV2ZW50cygpIGNvbnN0OwotCi0gIC8vIFJlYWRzIHRoZSBhcnJpdmFsIHRpbWVzdGFtcCAo
aW4gbWljcm9zZWNvbmRzKSBmcm9tIGEgcnRjbG9nOjpFdmVudC4KLSAgaW50NjRfdCBHZXRUaW1l
c3RhbXAoc2l6ZV90IGluZGV4KSBjb25zdDsKLSAgaW50NjRfdCBHZXRUaW1lc3RhbXAoY29uc3Qg
cnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0OwotCi0gIC8vIFJlYWRzIHRoZSBldmVudCB0eXBl
IG9mIHRoZSBydGNsb2c6OkV2ZW50IGF0IHxpbmRleHwuCi0gIEV2ZW50VHlwZSBHZXRFdmVudFR5
cGUoc2l6ZV90IGluZGV4KSBjb25zdDsKLSAgRXZlbnRUeXBlIEdldEV2ZW50VHlwZShjb25zdCBy
dGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgdGhlIGhlYWRlciwgZGly
ZWN0aW9uLCBoZWFkZXIgbGVuZ3RoIGFuZCBwYWNrZXQgbGVuZ3RoIGZyb20gdGhlIFJUUAotICAv
LyBldmVudCBhdCB8aW5kZXh8LCBhbmQgc3RvcmVzIHRoZSB2YWx1ZXMgaW4gdGhlIGNvcnJlc3Bv
bmRpbmcgb3V0cHV0Ci0gIC8vIHBhcmFtZXRlcnMuIEVhY2ggb3V0cHV0IHBhcmFtZXRlciBjYW4g
YmUgc2V0IHRvIG51bGxwdHIgaWYgdGhhdCB2YWx1ZQotICAvLyBpc24ndCBuZWVkZWQuCi0gIC8v
IE5COiBUaGUgaGVhZGVyIG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VUX1NJ
WkUgYnl0ZXMuCi0gIC8vIFJldHVybnM6IGEgcG9pbnRlciB0byBhIGhlYWRlciBleHRlbnNpb25z
IG1hcCBhY3F1aXJlZCBmcm9tIHBhcnNpbmcKLSAgLy8gY29ycmVzcG9uZGluZyBBdWRpby9WaWRl
byBTZW5kZXIvUmVjZWl2ZXIgY29uZmlnIGV2ZW50cy4KLSAgLy8gV2FybmluZzogaWYgdGhlIHNh
bWUgU1NSQyBpcyByZXVzZWQgYnkgYm90aCB2aWRlbyBhbmQgYXVkaW8gc3RyZWFtcyBkdXJpbmcK
LSAgLy8gY2FsbCwgZXh0ZW5zaW9ucyBtYXBzIG1heSBiZSBpbmNvcnJlY3QgKHRoZSBsYXN0IG9u
ZSB3b3VsZCBiZSByZXR1cm5lZCkuCi0gIGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9u
TWFwKiBHZXRSdHBIZWFkZXIoCi0gICAgICBzaXplX3QgaW5kZXgsCi0gICAgICBQYWNrZXREaXJl
Y3Rpb24qIGluY29taW5nLAotICAgICAgdWludDhfdCogaGVhZGVyLAotICAgICAgc2l6ZV90KiBo
ZWFkZXJfbGVuZ3RoLAotICAgICAgc2l6ZV90KiB0b3RhbF9sZW5ndGgsCi0gICAgICBpbnQqIHBy
b2JlX2NsdXN0ZXJfaWQpIGNvbnN0OwotICBjb25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lv
bk1hcCogR2V0UnRwSGVhZGVyKAotICAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQsCi0g
ICAgICBQYWNrZXREaXJlY3Rpb24qIGluY29taW5nLAotICAgICAgdWludDhfdCogaGVhZGVyLAot
ICAgICAgc2l6ZV90KiBoZWFkZXJfbGVuZ3RoLAotICAgICAgc2l6ZV90KiB0b3RhbF9sZW5ndGgs
Ci0gICAgICBpbnQqIHByb2JlX2NsdXN0ZXJfaWQpIGNvbnN0OwotCi0gIC8vIFJlYWRzIHBhY2tl
dCwgZGlyZWN0aW9uIGFuZCBwYWNrZXQgbGVuZ3RoIGZyb20gdGhlIFJUQ1AgZXZlbnQgYXQgfGlu
ZGV4fCwKLSAgLy8gYW5kIHN0b3JlcyB0aGUgdmFsdWVzIGluIHRoZSBjb3JyZXNwb25kaW5nIG91
dHB1dCBwYXJhbWV0ZXJzLgotICAvLyBFYWNoIG91dHB1dCBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0
byBudWxscHRyIGlmIHRoYXQgdmFsdWUgaXNuJ3QgbmVlZGVkLgotICAvLyBOQjogVGhlIHBhY2tl
dCBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxlYXN0IElQX1BBQ0tFVF9TSVpFIGJ5dGVzLgotICB2
b2lkIEdldFJ0Y3BQYWNrZXQoc2l6ZV90IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgUGFj
a2V0RGlyZWN0aW9uKiBpbmNvbWluZywKLSAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIHBh
Y2tldCwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogbGVuZ3RoKSBjb25zdDsKLSAgdm9p
ZCBHZXRSdGNwUGFja2V0KGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50LAotICAgICAgICAgICAg
ICAgICAgICAgUGFja2V0RGlyZWN0aW9uKiBpbmNvbWluZywKLSAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogbGVuZ3RoKSBj
b25zdDsKLQotICAvLyBSZWFkcyBhIHZpZGVvIHJlY2VpdmUgY29uZmlnIGV2ZW50IHRvIGEgU3Ry
ZWFtQ29uZmlnIHN0cnVjdC4KLSAgLy8gT25seSB0aGUgZmllbGRzIHRoYXQgYXJlIHN0b3JlZCBp
biB0aGUgcHJvdG9idWYgd2lsbCBiZSB3cml0dGVuLgotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBH
ZXRWaWRlb1JlY2VpdmVDb25maWcoc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyBh
IHZpZGVvIHNlbmQgY29uZmlnIGV2ZW50IHRvIGEgU3RyZWFtQ29uZmlnIHN0cnVjdC4gSWYgdGhl
IHByb3RvCi0gIC8vIGNvbnRhaW5zIG11bHRpcGxlIFNTUkNzIGFuZCBSVFggU1NSQ3MgKHRoaXMg
dXNlZCB0byBiZSB0aGUgY2FzZSBmb3IKLSAgLy8gc2ltdWxjYXN0IHN0cmVhbXMpIHRoZW4gd2Ug
cmV0dXJuIG9uZSBTdHJlYW1Db25maWcgcGVyIFNTUkMsUlRYX1NTUkMgcGFpci4KLSAgLy8gT25s
eSB0aGUgZmllbGRzIHRoYXQgYXJlIHN0b3JlZCBpbiB0aGUgcHJvdG9idWYgd2lsbCBiZSB3cml0
dGVuLgotICBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gR2V0VmlkZW9TZW5kQ29u
ZmlnKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgYSBhdWRpbyByZWNlaXZlIGNv
bmZpZyBldmVudCB0byBhIFN0cmVhbUNvbmZpZyBzdHJ1Y3QuCi0gIC8vIE9ubHkgdGhlIGZpZWxk
cyB0aGF0IGFyZSBzdG9yZWQgaW4gdGhlIHByb3RvYnVmIHdpbGwgYmUgd3JpdHRlbi4KLSAgcnRj
bG9nOjpTdHJlYW1Db25maWcgR2V0QXVkaW9SZWNlaXZlQ29uZmlnKHNpemVfdCBpbmRleCkgY29u
c3Q7Ci0KLSAgLy8gUmVhZHMgYSBjb25maWcgZXZlbnQgdG8gYSBTdHJlYW1Db25maWcgc3RydWN0
LgotICAvLyBPbmx5IHRoZSBmaWVsZHMgdGhhdCBhcmUgc3RvcmVkIGluIHRoZSBwcm90b2J1ZiB3
aWxsIGJlIHdyaXR0ZW4uCi0gIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIEdldEF1ZGlvU2VuZENvbmZp
ZyhzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIHRoZSBTU1JDIGZyb20gdGhlIGF1
ZGlvIHBsYXlvdXQgZXZlbnQgYXQgfGluZGV4fC4gVGhlIFNTUkMgaXMgc3RvcmVkCi0gIC8vIGlu
IHRoZSBvdXRwdXQgcGFyYW1ldGVyIHNzcmMuIFRoZSBvdXRwdXQgcGFyYW1ldGVyIGNhbiBiZSBz
ZXQgdG8gbnVsbHB0cgotICAvLyBhbmQgaW4gdGhhdCBjYXNlIHRoZSBmdW5jdGlvbiBvbmx5IGFz
c2VydHMgdGhhdCB0aGUgZXZlbnQgaXMgd2VsbCBmb3JtZWQuCi0gIExvZ2dlZEF1ZGlvUGxheW91
dEV2ZW50IEdldEF1ZGlvUGxheW91dChzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRz
IGJpdHJhdGUsIGZyYWN0aW9uIGxvc3MgKGFzIGRlZmluZWQgaW4gUkZDIDE4ODkpIGFuZCB0b3Rh
bCBudW1iZXIgb2YKLSAgLy8gZXhwZWN0ZWQgcGFja2V0cyBmcm9tIHRoZSBsb3NzIGJhc2VkIEJX
RSBldmVudCBhdCB8aW5kZXh8IGFuZCBzdG9yZXMgdGhlCi0gIC8vIHZhbHVlcyBpbgotICAvLyB0
aGUgY29ycmVzcG9uZGluZyBvdXRwdXQgcGFyYW1ldGVycy4gRWFjaCBvdXRwdXQgcGFyYW1ldGVy
IGNhbiBiZSBzZXQgdG8KLSAgLy8gbnVsbHB0ciBpZiB0aGF0Ci0gIC8vIHZhbHVlIGlzbid0IG5l
ZWRlZC4KLSAgTG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlIEdldExvc3NCYXNlZEJ3ZVVwZGF0ZShz
aXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIGJpdHJhdGUgYW5kIGRldGVjdG9yX3N0
YXRlIGZyb20gdGhlIGRlbGF5IGJhc2VkIEJXRSBldmVudCBhdCB8aW5kZXh8Ci0gIC8vIGFuZCBz
dG9yZXMgdGhlIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9uZGluZyBvdXRwdXQgcGFyYW1ldGVycy4g
RWFjaCBvdXRwdXQKLSAgLy8gcGFyYW1ldGVyIGNhbiBiZSBzZXQgdG8gbnVsbHB0ciBpZiB0aGF0
Ci0gIC8vIHZhbHVlIGlzbid0IG5lZWRlZC4KLSAgTG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSBH
ZXREZWxheUJhc2VkQndlVXBkYXRlKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMg
YSBhdWRpbyBuZXR3b3JrIGFkYXB0YXRpb24gZXZlbnQgdG8gYSAobm9uLU5VTEwpCi0gIC8vIEF1
ZGlvRW5jb2RlclJ1bnRpbWVDb25maWcgc3RydWN0LiBPbmx5IHRoZSBmaWVsZHMgdGhhdCBhcmUK
LSAgLy8gc3RvcmVkIGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdyaXR0ZW4uCi0gIExvZ2dlZEF1
ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCBHZXRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAotICAg
ICAgc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICBMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVk
RXZlbnQgR2V0QndlUHJvYmVDbHVzdGVyQ3JlYXRlZCgKLSAgICAgIHNpemVfdCBpbmRleCkgY29u
c3Q7Ci0KLSAgTG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQgR2V0QndlUHJvYmVGYWlsdXJlKHNp
emVfdCBpbmRleCkgY29uc3Q7Ci0gIExvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50IEdldEJ3ZVBy
b2JlU3VjY2VzcyhzaXplX3QgaW5kZXgpIGNvbnN0OwotCiAgIE1lZGlhVHlwZSBHZXRNZWRpYVR5
cGUodWludDMyX3Qgc3NyYywgUGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3Q7CiAKLSAg
TG9nZ2VkQWxyU3RhdGVFdmVudCBHZXRBbHJTdGF0ZShzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0g
IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWcgR2V0SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyhz
aXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCBHZXRJ
Y2VDYW5kaWRhdGVQYWlyRXZlbnQoc2l6ZV90IGluZGV4KSBjb25zdDsKLQogICAvLyBDb25maWd1
cmVkIFNTUkNzLgogICBjb25zdCBzdGQ6OnNldDx1aW50MzJfdD4mIGluY29taW5nX3J0eF9zc3Jj
cygpIGNvbnN0IHsKICAgICByZXR1cm4gaW5jb21pbmdfcnR4X3NzcmNzXzsKQEAgLTg0MSw3ICs4
NTUsMzYgQEAgY2xhc3MgUGFyc2VkUnRjRXZlbnRMb2dOZXcgewogICBib29sIFBhcnNlU3RyZWFt
SW50ZXJuYWwoCiAgICAgICBzdGQ6OmlzdHJlYW0mIHN0cmVhbSk7ICAvLyBuby1wcmVzdWJtaXQt
Y2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKIAotICB2b2lkIFN0b3JlUGFyc2VkRXZlbnQoY29uc3Qg
cnRjbG9nOjpFdmVudCYgZXZlbnQpOworICB2b2lkIFN0b3JlUGFyc2VkTGVnYWN5RXZlbnQoY29u
c3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpOworCisgIC8vIFJlYWRzIHRoZSBhcnJpdmFsIHRpbWVz
dGFtcCAoaW4gbWljcm9zZWNvbmRzKSBmcm9tIGEgcnRjbG9nOjpFdmVudC4KKyAgaW50NjRfdCBH
ZXRUaW1lc3RhbXAoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0OworCisgIC8vIFJl
YWRzIHRoZSBoZWFkZXIsIGRpcmVjdGlvbiwgaGVhZGVyIGxlbmd0aCBhbmQgcGFja2V0IGxlbmd0
aCBmcm9tIHRoZSBSVFAKKyAgLy8gZXZlbnQgYXQgfGluZGV4fCwgYW5kIHN0b3JlcyB0aGUgdmFs
dWVzIGluIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dAorICAvLyBwYXJhbWV0ZXJzLiBFYWNoIG91
dHB1dCBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0byBudWxscHRyIGlmIHRoYXQgdmFsdWUKKyAgLy8g
aXNuJ3QgbmVlZGVkLgorICAvLyBOQjogVGhlIGhlYWRlciBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0
IGxlYXN0IElQX1BBQ0tFVF9TSVpFIGJ5dGVzLgorICAvLyBSZXR1cm5zOiBhIHBvaW50ZXIgdG8g
YSBoZWFkZXIgZXh0ZW5zaW9ucyBtYXAgYWNxdWlyZWQgZnJvbSBwYXJzaW5nCisgIC8vIGNvcnJl
c3BvbmRpbmcgQXVkaW8vVmlkZW8gU2VuZGVyL1JlY2VpdmVyIGNvbmZpZyBldmVudHMuCisgIC8v
IFdhcm5pbmc6IGlmIHRoZSBzYW1lIFNTUkMgaXMgcmV1c2VkIGJ5IGJvdGggdmlkZW8gYW5kIGF1
ZGlvIHN0cmVhbXMgZHVyaW5nCisgIC8vIGNhbGwsIGV4dGVuc2lvbnMgbWFwcyBtYXkgYmUgaW5j
b3JyZWN0ICh0aGUgbGFzdCBvbmUgd291bGQgYmUgcmV0dXJuZWQpLgorICBjb25zdCB3ZWJydGM6
OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCogR2V0UnRwSGVhZGVyKAorICAgICAgY29uc3QgcnRjbG9n
OjpFdmVudCYgZXZlbnQsCisgICAgICBQYWNrZXREaXJlY3Rpb24qIGluY29taW5nLAorICAgICAg
dWludDhfdCogaGVhZGVyLAorICAgICAgc2l6ZV90KiBoZWFkZXJfbGVuZ3RoLAorICAgICAgc2l6
ZV90KiB0b3RhbF9sZW5ndGgsCisgICAgICBpbnQqIHByb2JlX2NsdXN0ZXJfaWQpIGNvbnN0Owor
CisgIC8vIFJlYWRzIHBhY2tldCwgZGlyZWN0aW9uIGFuZCBwYWNrZXQgbGVuZ3RoIGZyb20gdGhl
IFJUQ1AgZXZlbnQgYXQgfGluZGV4fCwKKyAgLy8gYW5kIHN0b3JlcyB0aGUgdmFsdWVzIGluIHRo
ZSBjb3JyZXNwb25kaW5nIG91dHB1dCBwYXJhbWV0ZXJzLgorICAvLyBFYWNoIG91dHB1dCBwYXJh
bWV0ZXIgY2FuIGJlIHNldCB0byBudWxscHRyIGlmIHRoYXQgdmFsdWUgaXNuJ3QgbmVlZGVkLgor
ICAvLyBOQjogVGhlIHBhY2tldCBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxlYXN0IElQX1BBQ0tF
VF9TSVpFIGJ5dGVzLgorICB2b2lkIEdldFJ0Y3BQYWNrZXQoY29uc3QgcnRjbG9nOjpFdmVudCYg
ZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICBQYWNrZXREaXJlY3Rpb24qIGluY29taW5nLAor
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogcGFja2V0LAorICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90KiBsZW5ndGgpIGNvbnN0OwogCiAgIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIEdldFZp
ZGVvUmVjZWl2ZUNvbmZpZyhjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3Q7CiAgIHN0
ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBHZXRWaWRlb1NlbmRDb25maWcoCkBAIC04
NzMsNyArOTE2LDMxIEBAIGNsYXNzIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3IHsKICAgTG9nZ2VkSWNl
Q2FuZGlkYXRlUGFpckV2ZW50IEdldEljZUNhbmRpZGF0ZVBhaXJFdmVudCgKICAgICAgIGNvbnN0
IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdDsKIAotICBzdGQ6OnZlY3RvcjxydGNsb2c6OkV2
ZW50PiBldmVudHNfOworICAvLyBQYXJzaW5nIGZ1bmN0aW9ucyBmb3IgbmV3IGZvcm1hdC4KKyAg
dm9pZCBTdG9yZVBhcnNlZE5ld0Zvcm1hdEV2ZW50KGNvbnN0IHJ0Y2xvZzI6OkV2ZW50U3RyZWFt
JiBldmVudCk7CisgIHZvaWQgU3RvcmVJbmNvbWluZ1J0cFBhY2tldHMoY29uc3QgcnRjbG9nMjo6
SW5jb21pbmdSdHBQYWNrZXRzJiBwcm90byk7CisgIHZvaWQgU3RvcmVPdXRnb2luZ1J0cFBhY2tl
dHMoY29uc3QgcnRjbG9nMjo6T3V0Z29pbmdSdHBQYWNrZXRzJiBwcm90byk7CisgIHZvaWQgU3Rv
cmVJbmNvbWluZ1J0Y3BQYWNrZXRzKGNvbnN0IHJ0Y2xvZzI6OkluY29taW5nUnRjcFBhY2tldHMm
IHByb3RvKTsKKyAgdm9pZCBTdG9yZU91dGdvaW5nUnRjcFBhY2tldHMoY29uc3QgcnRjbG9nMjo6
T3V0Z29pbmdSdGNwUGFja2V0cyYgcHJvdG8pOworICB2b2lkIFN0b3JlQXVkaW9QbGF5b3V0RXZl
bnQoY29uc3QgcnRjbG9nMjo6QXVkaW9QbGF5b3V0RXZlbnRzJiBwcm90byk7CisgIHZvaWQgU3Rv
cmVTdGFydEV2ZW50KGNvbnN0IHJ0Y2xvZzI6OkJlZ2luTG9nRXZlbnQmIHByb3RvKTsKKyAgdm9p
ZCBTdG9yZVN0b3BFdmVudChjb25zdCBydGNsb2cyOjpFbmRMb2dFdmVudCYgcHJvdG8pOworICB2
b2lkIFN0b3JlQndlTG9zc0Jhc2VkVXBkYXRlKGNvbnN0IHJ0Y2xvZzI6Okxvc3NCYXNlZEJ3ZVVw
ZGF0ZXMmIHByb3RvKTsKKyAgdm9pZCBTdG9yZUJ3ZURlbGF5QmFzZWRVcGRhdGUoY29uc3QgcnRj
bG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXMmIHByb3RvKTsKKyAgdm9pZCBTdG9yZUF1ZGlvTmV0
d29ya0FkYXB0YXRpb25FdmVudCgKKyAgICAgIGNvbnN0IHJ0Y2xvZzI6OkF1ZGlvTmV0d29ya0Fk
YXB0YXRpb25zJiBwcm90byk7CisgIHZvaWQgU3RvcmVCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkKGNv
bnN0IHJ0Y2xvZzI6OkJ3ZVByb2JlQ2x1c3RlciYgcHJvdG8pOworICB2b2lkIFN0b3JlQndlUHJv
YmVTdWNjZXNzRXZlbnQoY29uc3QgcnRjbG9nMjo6QndlUHJvYmVSZXN1bHRTdWNjZXNzJiBwcm90
byk7CisgIHZvaWQgU3RvcmVCd2VQcm9iZUZhaWx1cmVFdmVudChjb25zdCBydGNsb2cyOjpCd2VQ
cm9iZVJlc3VsdEZhaWx1cmUmIHByb3RvKTsKKyAgdm9pZCBTdG9yZUFsclN0YXRlRXZlbnQoY29u
c3QgcnRjbG9nMjo6QWxyU3RhdGUmIHByb3RvKTsKKyAgdm9pZCBTdG9yZUljZUNhbmRpZGF0ZVBh
aXJDb25maWcoCisgICAgICBjb25zdCBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnJiBw
cm90byk7CisgIHZvaWQgU3RvcmVJY2VDYW5kaWRhdGVFdmVudChjb25zdCBydGNsb2cyOjpJY2VD
YW5kaWRhdGVQYWlyRXZlbnQmIHByb3RvKTsKKyAgdm9pZCBTdG9yZUF1ZGlvUmVjdkNvbmZpZyhj
b25zdCBydGNsb2cyOjpBdWRpb1JlY3ZTdHJlYW1Db25maWcmIHByb3RvKTsKKyAgdm9pZCBTdG9y
ZUF1ZGlvU2VuZENvbmZpZyhjb25zdCBydGNsb2cyOjpBdWRpb1NlbmRTdHJlYW1Db25maWcmIHBy
b3RvKTsKKyAgdm9pZCBTdG9yZVZpZGVvUmVjdkNvbmZpZyhjb25zdCBydGNsb2cyOjpWaWRlb1Jl
Y3ZTdHJlYW1Db25maWcmIHByb3RvKTsKKyAgdm9pZCBTdG9yZVZpZGVvU2VuZENvbmZpZyhjb25z
dCBydGNsb2cyOjpWaWRlb1NlbmRTdHJlYW1Db25maWcmIHByb3RvKTsKKyAgLy8gRW5kIG9mIG5l
dyBwYXJzaW5nIGZ1bmN0aW9ucy4KIAogICBzdHJ1Y3QgU3RyZWFtIHsKICAgICBTdHJlYW0odWlu
dDMyX3Qgc3NyYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3QuY2MKaW5kZXggZTIzOGY4NDg4NDYxOGFj
MTkwNzNlNzMwNGUwMWVlMTc0NmU0YmM5MS4uZjdiNzg5ODk5M2Y3YzkyYjkxNTdkOWE3OTE4ZTky
NGQ4MTEwY2I4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3QuY2MKQEAgLTEwMSwxMyArMTAxLDE2
IEBAIHN0cnVjdCBFdmVudENvdW50cyB7CiB9OwogCiBjbGFzcyBSdGNFdmVudExvZ1Nlc3Npb24K
LSAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08c3RkOjp0dXBsZTx1aW50NjRf
dCwgaW50NjRfdD4+IHsKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Cisg
ICAgICAgICAgc3RkOjp0dXBsZTx1aW50NjRfdCwgaW50NjRfdCwgUnRjRXZlbnRMb2c6OkVuY29k
aW5nVHlwZT4+IHsKICBwdWJsaWM6CiAgIFJ0Y0V2ZW50TG9nU2Vzc2lvbigpCiAgICAgICA6IHNl
ZWRfKHN0ZDo6Z2V0PDA+KEdldFBhcmFtKCkpKSwKICAgICAgICAgcHJuZ18oc2VlZF8pLAorICAg
ICAgICBvdXRwdXRfcGVyaW9kX21zXyhzdGQ6OmdldDwxPihHZXRQYXJhbSgpKSksCisgICAgICAg
IGVuY29kaW5nX3R5cGVfKHN0ZDo6Z2V0PDI+KEdldFBhcmFtKCkpKSwKICAgICAgICAgZ2VuXyhz
ZWVkXyAqIDg4MDAwMVVMKSwKLSAgICAgICAgb3V0cHV0X3BlcmlvZF9tc18oc3RkOjpnZXQ8MT4o
R2V0UGFyYW0oKSkpIHsKKyAgICAgICAgdmVyaWZpZXJfKGVuY29kaW5nX3R5cGVfKSB7CiAgICAg
Y2xvY2tfLlNldFRpbWVNaWNyb3MocHJuZ18uUmFuZDx1aW50MzJfdD4oKSk7CiAgICAgLy8gRmlu
ZCB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0ZXN0LCBpbiBvcmRlciB0byB1c2UgaXQgYXMgYSB0
ZW1wb3JhcnkKICAgICAvLyBmaWxlbmFtZS4KQEAgLTE2NiwxMiArMTY5LDE1IEBAIGNsYXNzIFJ0
Y0V2ZW50TG9nU2Vzc2lvbgogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRS
dGNwUGFja2V0T3V0Z29pbmc+PiBvdXRnb2luZ19ydGNwX2xpc3RfOwogCiAgIGludDY0X3Qgc3Rh
cnRfdGltZV91c187CisgIGludDY0X3QgdXRjX3N0YXJ0X3RpbWVfdXNfOwogICBpbnQ2NF90IHN0
b3BfdGltZV91c187CiAKICAgY29uc3QgdWludDY0X3Qgc2VlZF87CiAgIFJhbmRvbSBwcm5nXzsK
KyAgY29uc3QgaW50NjRfdCBvdXRwdXRfcGVyaW9kX21zXzsKKyAgY29uc3QgUnRjRXZlbnRMb2c6
OkVuY29kaW5nVHlwZSBlbmNvZGluZ190eXBlXzsKICAgdGVzdDo6RXZlbnRHZW5lcmF0b3IgZ2Vu
XzsKLSAgaW50NjRfdCBvdXRwdXRfcGVyaW9kX21zXzsKKyAgdGVzdDo6RXZlbnRWZXJpZmllciB2
ZXJpZmllcl87CiAgIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGNsb2NrXzsKICAgc3RkOjpzdHJpbmcg
dGVtcF9maWxlbmFtZV87CiB9OwpAQCAtMjg0LDggKzI5MCw3IEBAIHZvaWQgUnRjRXZlbnRMb2dT
ZXNzaW9uOjpXcml0ZUxvZyhFdmVudENvdW50cyBjb3VudCwKICAgLy8gTWF5YmUgYWx3YXlzIHVz
ZSB0aGUgU2NvcGVkRmFrZUNsb2NrLCBidXQgY29uZGl0aW9uYWxseSBTbGVlcE1zKCk/CiAKICAg
Ly8gVGhlIGxvZyBmaWxlIHdpbGwgYmUgZmx1c2hlZCB0byBkaXNrIHdoZW4gdGhlIGV2ZW50X2xv
ZyBnb2VzIG91dCBvZiBzY29wZS4KLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBldmVu
dF9sb2coCi0gICAgICBSdGNFdmVudExvZzo6Q3JlYXRlKFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5
cGU6OkxlZ2FjeSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2c+IGV2ZW50X2xvZyhS
dGNFdmVudExvZzo6Q3JlYXRlKGVuY29kaW5nX3R5cGVfKSk7CiAKICAgLy8gV2UgY2FuJ3Qgc2Vu
ZCBvciByZWNlaXZlIHBhY2tldHMgd2l0aG91dCBjb25maWd1cmVkIHN0cmVhbXMuCiAgIFJUQ19D
SEVDS19HRShjb3VudC52aWRlb19yZWN2X3N0cmVhbXMsIDEpOwpAQCAtMzA2LDYgKzMxMSw3IEBA
IHZvaWQgUnRjRXZlbnRMb2dTZXNzaW9uOjpXcml0ZUxvZyhFdmVudENvdW50cyBjb3VudCwKICAg
ICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudExvZ091dHB1dEZpbGU+KHRlbXBfZmls
ZW5hbWVfLCAxMDAwMDAwMCksCiAgICAgICAgICAgb3V0cHV0X3BlcmlvZF9tc18pOwogICAgICAg
c3RhcnRfdGltZV91c18gPSBydGM6OlRpbWVNaWNyb3MoKTsKKyAgICAgIHV0Y19zdGFydF90aW1l
X3VzXyA9IHJ0Yzo6VGltZVVUQ01pY3JvcygpOwogICAgIH0KIAogICAgIGNsb2NrXy5BZHZhbmNl
VGltZU1pY3Jvcyhwcm5nXy5SYW5kKDIwKSAqIDEwMDApOwpAQCAtNDY1LDE5ICs0NzEsMTggQEAg
dm9pZCBSdGNFdmVudExvZ1Nlc3Npb246OlJlYWRBbmRWZXJpZnlMb2coKSB7CiAgIC8vIFN0YXJ0
IGFuZCBzdG9wIGV2ZW50cy4KICAgYXV0byYgcGFyc2VkX3N0YXJ0X2xvZ19ldmVudHMgPSBwYXJz
ZWRfbG9nLnN0YXJ0X2xvZ19ldmVudHMoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF9zdGFydF9sb2df
ZXZlbnRzLnNpemUoKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSk7Ci0gIEVYUEVDVF9UUlVFKAot
ICAgICAgdGVzdDo6VmVyaWZ5TG9nZ2VkU3RhcnRFdmVudChzdGFydF90aW1lX3VzXywgcGFyc2Vk
X3N0YXJ0X2xvZ19ldmVudHNbMF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFN0YXJ0RXZl
bnQoc3RhcnRfdGltZV91c18sIHV0Y19zdGFydF90aW1lX3VzXywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyc2VkX3N0YXJ0X2xvZ19ldmVudHNbMF0pOwogCiAgIGF1dG8m
IHBhcnNlZF9zdG9wX2xvZ19ldmVudHMgPSBwYXJzZWRfbG9nLnN0b3BfbG9nX2V2ZW50cygpOwog
ICBBU1NFUlRfRVEocGFyc2VkX3N0b3BfbG9nX2V2ZW50cy5zaXplKCksIHN0YXRpY19jYXN0PHNp
emVfdD4oMSkpOwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIHRlc3Q6OlZlcmlmeUxvZ2dlZFN0b3BF
dmVudChzdG9wX3RpbWVfdXNfLCBwYXJzZWRfc3RvcF9sb2dfZXZlbnRzWzBdKSk7CisgIHZlcmlm
aWVyXy5WZXJpZnlMb2dnZWRTdG9wRXZlbnQoc3RvcF90aW1lX3VzXywgcGFyc2VkX3N0b3BfbG9n
X2V2ZW50c1swXSk7CiAKICAgYXV0byYgcGFyc2VkX2Fscl9zdGF0ZV9ldmVudHMgPSBwYXJzZWRf
bG9nLmFscl9zdGF0ZV9ldmVudHMoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF9hbHJfc3RhdGVfZXZl
bnRzLnNpemUoKSwgYWxyX3N0YXRlX2xpc3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcGFyc2VkX2Fscl9zdGF0ZV9ldmVudHMuc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1Rf
VFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRBbHJTdGF0ZUV2ZW50KCphbHJfc3RhdGVfbGlzdF9baV0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRf
YWxyX3N0YXRlX2V2ZW50c1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRBbHJTdGF0
ZUV2ZW50KCphbHJfc3RhdGVfbGlzdF9baV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyc2VkX2Fscl9zdGF0ZV9ldmVudHNbaV0pOwogICB9CiAKICAgY29uc3Qg
YXV0byYgcGFyc2VkX2F1ZGlvX3BsYXlvdXRfbWFwID0gcGFyc2VkX2xvZy5hdWRpb19wbGF5b3V0
X2V2ZW50cygpOwpAQCAtNDg4LDggKzQ5Myw4IEBAIHZvaWQgUnRjRXZlbnRMb2dTZXNzaW9uOjpS
ZWFkQW5kVmVyaWZ5TG9nKCkgewogICAgIGNvbnN0IGF1dG8mIGF1ZGlvX3BsYXlvdXRfc3RyZWFt
ID0gYXVkaW9fcGxheW91dF9tYXBfW3NzcmNdOwogICAgIEFTU0VSVF9FUShwYXJzZWRfYXVkaW9f
cGxheW91dF9zdHJlYW0uc2l6ZSgpLCBhdWRpb19wbGF5b3V0X3N0cmVhbS5zaXplKCkpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2F1ZGlvX3BsYXlvdXRfbWFwLnNpemUoKTsg
aSsrKSB7Ci0gICAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRBdWRpb1BsYXlvdXRF
dmVudCgKLSAgICAgICAgICAqYXVkaW9fcGxheW91dF9zdHJlYW1baV0sIHBhcnNlZF9hdWRpb19w
bGF5b3V0X3N0cmVhbVtpXSkpOworICAgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEF1ZGlvUGxh
eW91dEV2ZW50KCphdWRpb19wbGF5b3V0X3N0cmVhbVtpXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfYXVkaW9fcGxheW91dF9zdHJlYW1baV0p
OwogICAgIH0KICAgfQogCkBAIC00OTgsMjIgKzUwMywyMiBAQCB2b2lkIFJ0Y0V2ZW50TG9nU2Vz
c2lvbjo6UmVhZEFuZFZlcmlmeUxvZygpIHsKICAgQVNTRVJUX0VRKHBhcnNlZF9hdWRpb19uZXR3
b3JrX2FkYXB0YXRpb25fZXZlbnRzLnNpemUoKSwKICAgICAgICAgICAgIGFuYV9jb25maWdzX2xp
c3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2F1ZGlvX25ldHdv
cmtfYWRhcHRhdGlvbl9ldmVudHMuc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0
OjpWZXJpZnlMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRXZlbnQoCi0gICAgICAgICphbmFf
Y29uZmlnc19saXN0X1tpXSwgcGFyc2VkX2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbl9ldmVudHNb
aV0pKTsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2
ZW50KAorICAgICAgICAqYW5hX2NvbmZpZ3NfbGlzdF9baV0sIHBhcnNlZF9hdWRpb19uZXR3b3Jr
X2FkYXB0YXRpb25fZXZlbnRzW2ldKTsKICAgfQogCiAgIGF1dG8mIHBhcnNlZF9id2VfZGVsYXlf
dXBkYXRlcyA9IHBhcnNlZF9sb2cuYndlX2RlbGF5X3VwZGF0ZXMoKTsKICAgQVNTRVJUX0VRKHBh
cnNlZF9id2VfZGVsYXlfdXBkYXRlcy5zaXplKCksIGJ3ZV9kZWxheV9saXN0Xy5zaXplKCkpOwog
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9id2VfZGVsYXlfdXBkYXRlcy5zaXplKCk7
IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRV
cGRhdGUoCi0gICAgICAgICpid2VfZGVsYXlfbGlzdF9baV0sIHBhcnNlZF9id2VfZGVsYXlfdXBk
YXRlc1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRl
KCpid2VfZGVsYXlfbGlzdF9baV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyc2VkX2J3ZV9kZWxheV91cGRhdGVzW2ldKTsKICAgfQogCiAgIGF1dG8m
IHBhcnNlZF9id2VfbG9zc191cGRhdGVzID0gcGFyc2VkX2xvZy5id2VfbG9zc191cGRhdGVzKCk7
CiAgIEFTU0VSVF9FUShwYXJzZWRfYndlX2xvc3NfdXBkYXRlcy5zaXplKCksIGJ3ZV9sb3NzX2xp
c3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2J3ZV9sb3NzX3Vw
ZGF0ZXMuc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRC
d2VMb3NzQmFzZWRVcGRhdGUoCi0gICAgICAgICpid2VfbG9zc19saXN0X1tpXSwgcGFyc2VkX2J3
ZV9sb3NzX3VwZGF0ZXNbaV0pKTsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlTG9zc0Jh
c2VkVXBkYXRlKCpid2VfbG9zc19saXN0X1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcnNlZF9id2VfbG9zc191cGRhdGVzW2ldKTsKICAgfQogCiAg
IGF1dG8mIHBhcnNlZF9id2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50cyA9CkBAIC01MjEs
MzAgKzUyNiwzMCBAQCB2b2lkIFJ0Y0V2ZW50TG9nU2Vzc2lvbjo6UmVhZEFuZFZlcmlmeUxvZygp
IHsKICAgQVNTRVJUX0VRKHBhcnNlZF9id2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50cy5z
aXplKCksCiAgICAgICAgICAgICBwcm9iZV9jcmVhdGlvbl9saXN0Xy5zaXplKCkpOwogICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9id2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50
cy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZVBy
b2JlQ2x1c3RlckNyZWF0ZWRFdmVudCgKLSAgICAgICAgKnByb2JlX2NyZWF0aW9uX2xpc3RfW2ld
LCBwYXJzZWRfYndlX3Byb2JlX2NsdXN0ZXJfY3JlYXRlZF9ldmVudHNbaV0pKTsKKyAgICB2ZXJp
Zmllcl8uVmVyaWZ5TG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50KAorICAgICAgICAq
cHJvYmVfY3JlYXRpb25fbGlzdF9baV0sIHBhcnNlZF9id2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVk
X2V2ZW50c1tpXSk7CiAgIH0KIAogICBhdXRvJiBwYXJzZWRfYndlX3Byb2JlX2ZhaWx1cmVfZXZl
bnRzID0gcGFyc2VkX2xvZy5id2VfcHJvYmVfZmFpbHVyZV9ldmVudHMoKTsKICAgQVNTRVJUX0VR
KHBhcnNlZF9id2VfcHJvYmVfZmFpbHVyZV9ldmVudHMuc2l6ZSgpLCBwcm9iZV9mYWlsdXJlX2xp
c3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2J3ZV9wcm9iZV9m
YWlsdXJlX2V2ZW50cy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlm
eUxvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50KAotICAgICAgICAqcHJvYmVfZmFpbHVyZV9saXN0
X1tpXSwgcGFyc2VkX2J3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50c1tpXSkpOworICAgIHZlcmlmaWVy
Xy5WZXJpZnlMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCgKKyAgICAgICAgKnByb2JlX2ZhaWx1
cmVfbGlzdF9baV0sIHBhcnNlZF9id2VfcHJvYmVfZmFpbHVyZV9ldmVudHNbaV0pOwogICB9CiAK
ICAgYXV0byYgcGFyc2VkX2J3ZV9wcm9iZV9zdWNjZXNzX2V2ZW50cyA9IHBhcnNlZF9sb2cuYndl
X3Byb2JlX3N1Y2Nlc3NfZXZlbnRzKCk7CiAgIEFTU0VSVF9FUShwYXJzZWRfYndlX3Byb2JlX3N1
Y2Nlc3NfZXZlbnRzLnNpemUoKSwgcHJvYmVfc3VjY2Vzc19saXN0Xy5zaXplKCkpOwogICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9id2VfcHJvYmVfc3VjY2Vzc19ldmVudHMuc2l6ZSgp
OyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRCd2VQcm9iZVN1Y2Nl
c3NFdmVudCgKLSAgICAgICAgKnByb2JlX3N1Y2Nlc3NfbGlzdF9baV0sIHBhcnNlZF9id2VfcHJv
YmVfc3VjY2Vzc19ldmVudHNbaV0pKTsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlUHJv
YmVTdWNjZXNzRXZlbnQoCisgICAgICAgICpwcm9iZV9zdWNjZXNzX2xpc3RfW2ldLCBwYXJzZWRf
YndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRzW2ldKTsKICAgfQogCiAgIGF1dG8mIHBhcnNlZF9pY2Vf
Y2FuZGlkYXRlX3BhaXJfY29uZmlncyA9CiAgICAgICBwYXJzZWRfbG9nLmljZV9jYW5kaWRhdGVf
cGFpcl9jb25maWdzKCk7CiAgIEFTU0VSVF9FUShwYXJzZWRfaWNlX2NhbmRpZGF0ZV9wYWlyX2Nv
bmZpZ3Muc2l6ZSgpLCBpY2VfY29uZmlnX2xpc3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcGFyc2VkX2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWdzLnNpemUoKTsgaSsrKSB7
Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZp
ZygKLSAgICAgICAgKmljZV9jb25maWdfbGlzdF9baV0sIHBhcnNlZF9pY2VfY2FuZGlkYXRlX3Bh
aXJfY29uZmlnc1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnKAorICAgICAgICAqaWNlX2NvbmZpZ19saXN0X1tpXSwgcGFyc2VkX2ljZV9jYW5k
aWRhdGVfcGFpcl9jb25maWdzW2ldKTsKICAgfQogCiAgIGF1dG8mIHBhcnNlZF9pY2VfY2FuZGlk
YXRlX3BhaXJfZXZlbnRzID0KQEAgLTU1Miw4ICs1NTcsOCBAQCB2b2lkIFJ0Y0V2ZW50TG9nU2Vz
c2lvbjo6UmVhZEFuZFZlcmlmeUxvZygpIHsKICAgQVNTRVJUX0VRKHBhcnNlZF9pY2VfY2FuZGlk
YXRlX3BhaXJfZXZlbnRzLnNpemUoKSwKICAgICAgICAgICAgIHBhcnNlZF9pY2VfY2FuZGlkYXRl
X3BhaXJfZXZlbnRzLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2lj
ZV9jYW5kaWRhdGVfcGFpcl9ldmVudHMuc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0
ZXN0OjpWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQoCi0gICAgICAgICppY2VfZXZl
bnRfbGlzdF9baV0sIHBhcnNlZF9pY2VfY2FuZGlkYXRlX3BhaXJfZXZlbnRzW2ldKSk7CisgICAg
dmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCgKKyAgICAgICAgKmlj
ZV9ldmVudF9saXN0X1tpXSwgcGFyc2VkX2ljZV9jYW5kaWRhdGVfcGFpcl9ldmVudHNbaV0pOwog
ICB9CiAKICAgYXV0byYgcGFyc2VkX2luY29taW5nX3J0cF9wYWNrZXRzX2J5X3NzcmMgPQpAQCAt
NTY2LDggKzU3MSw4IEBAIHZvaWQgUnRjRXZlbnRMb2dTZXNzaW9uOjpSZWFkQW5kVmVyaWZ5TG9n
KCkgewogICAgIGNvbnN0IGF1dG8mIHJ0cF9zdHJlYW0gPSBpbmNvbWluZ19ydHBfbWFwX1tzc3Jj
XTsKICAgICBBU1NFUlRfRVEocGFyc2VkX3J0cF9zdHJlYW0uc2l6ZSgpLCBydHBfc3RyZWFtLnNp
emUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfcnRwX3N0cmVhbS5zaXpl
KCk7IGkrKykgewotICAgICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkUnRwUGFja2V0
SW5jb21pbmcoKnJ0cF9zdHJlYW1baV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfcnRwX3N0cmVhbVtpXSkpOworICAgICAgdmVy
aWZpZXJfLlZlcmlmeUxvZ2dlZFJ0cFBhY2tldEluY29taW5nKCpydHBfc3RyZWFtW2ldLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9ydHBfc3Ry
ZWFtW2ldKTsKICAgICB9CiAgIH0KIApAQCAtNTgxLDQ3ICs1ODYsNDcgQEAgdm9pZCBSdGNFdmVu
dExvZ1Nlc3Npb246OlJlYWRBbmRWZXJpZnlMb2coKSB7CiAgICAgY29uc3QgYXV0byYgcnRwX3N0
cmVhbSA9IG91dGdvaW5nX3J0cF9tYXBfW3NzcmNdOwogICAgIEFTU0VSVF9FUShwYXJzZWRfcnRw
X3N0cmVhbS5zaXplKCksIHJ0cF9zdHJlYW0uc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBhcnNlZF9ydHBfc3RyZWFtLnNpemUoKTsgaSsrKSB7Ci0gICAgICBFWFBFQ1RfVFJV
RSh0ZXN0OjpWZXJpZnlMb2dnZWRSdHBQYWNrZXRPdXRnb2luZygqcnRwX3N0cmVhbVtpXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNl
ZF9ydHBfc3RyZWFtW2ldKSk7CisgICAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkUnRwUGFja2V0
T3V0Z29pbmcoKnJ0cF9zdHJlYW1baV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyc2VkX3J0cF9zdHJlYW1baV0pOwogICAgIH0KICAgfQogCiAgIGF1
dG8mIHBhcnNlZF9pbmNvbWluZ19ydGNwX3BhY2tldHMgPSBwYXJzZWRfbG9nLmluY29taW5nX3J0
Y3BfcGFja2V0cygpOwogICBBU1NFUlRfRVEocGFyc2VkX2luY29taW5nX3J0Y3BfcGFja2V0cy5z
aXplKCksIGluY29taW5nX3J0Y3BfbGlzdF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwYXJzZWRfaW5jb21pbmdfcnRjcF9wYWNrZXRzLnNpemUoKTsgaSsrKSB7Ci0gICAgRVhQ
RUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkUnRjcFBhY2tldEluY29taW5nKAotICAgICAgICAq
aW5jb21pbmdfcnRjcF9saXN0X1tpXSwgcGFyc2VkX2luY29taW5nX3J0Y3BfcGFja2V0c1tpXSkp
OworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcoKmluY29taW5n
X3J0Y3BfbGlzdF9baV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJzZWRfaW5jb21pbmdfcnRjcF9wYWNrZXRzW2ldKTsKICAgfQogCiAgIGF1dG8mIHBh
cnNlZF9vdXRnb2luZ19ydGNwX3BhY2tldHMgPSBwYXJzZWRfbG9nLm91dGdvaW5nX3J0Y3BfcGFj
a2V0cygpOwogICBBU1NFUlRfRVEocGFyc2VkX291dGdvaW5nX3J0Y3BfcGFja2V0cy5zaXplKCks
IG91dGdvaW5nX3J0Y3BfbGlzdF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
YXJzZWRfb3V0Z29pbmdfcnRjcF9wYWNrZXRzLnNpemUoKTsgaSsrKSB7Ci0gICAgRVhQRUNUX1RS
VUUodGVzdDo6VmVyaWZ5TG9nZ2VkUnRjcFBhY2tldE91dGdvaW5nKAotICAgICAgICAqb3V0Z29p
bmdfcnRjcF9saXN0X1tpXSwgcGFyc2VkX291dGdvaW5nX3J0Y3BfcGFja2V0c1tpXSkpOworICAg
IHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmcoKm91dGdvaW5nX3J0Y3Bf
bGlzdF9baV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJzZWRfb3V0Z29pbmdfcnRjcF9wYWNrZXRzW2ldKTsKICAgfQogICBhdXRvJiBwYXJzZWRfYXVk
aW9fcmVjdl9jb25maWdzID0gcGFyc2VkX2xvZy5hdWRpb19yZWN2X2NvbmZpZ3MoKTsKICAgQVNT
RVJUX0VRKHBhcnNlZF9hdWRpb19yZWN2X2NvbmZpZ3Muc2l6ZSgpLCBhdWRpb19yZWN2X2NvbmZp
Z19saXN0Xy5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9hdWRpb19y
ZWN2X2NvbmZpZ3Muc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlM
b2dnZWRBdWRpb1JlY3ZDb25maWcoCi0gICAgICAgICphdWRpb19yZWN2X2NvbmZpZ19saXN0X1tp
XSwgcGFyc2VkX2F1ZGlvX3JlY3ZfY29uZmlnc1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlM
b2dnZWRBdWRpb1JlY3ZDb25maWcoKmF1ZGlvX3JlY3ZfY29uZmlnX2xpc3RfW2ldLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX2F1ZGlvX3JlY3ZfY29u
Zmlnc1tpXSk7CiAgIH0KICAgYXV0byYgcGFyc2VkX2F1ZGlvX3NlbmRfY29uZmlncyA9IHBhcnNl
ZF9sb2cuYXVkaW9fc2VuZF9jb25maWdzKCk7CiAgIEFTU0VSVF9FUShwYXJzZWRfYXVkaW9fc2Vu
ZF9jb25maWdzLnNpemUoKSwgYXVkaW9fc2VuZF9jb25maWdfbGlzdF8uc2l6ZSgpKTsKICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfYXVkaW9fc2VuZF9jb25maWdzLnNpemUoKTsgaSsr
KSB7Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQXVkaW9TZW5kQ29uZmlnKAot
ICAgICAgICAqYXVkaW9fc2VuZF9jb25maWdfbGlzdF9baV0sIHBhcnNlZF9hdWRpb19zZW5kX2Nv
bmZpZ3NbaV0pKTsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQXVkaW9TZW5kQ29uZmlnKCph
dWRpb19zZW5kX2NvbmZpZ19saXN0X1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnNlZF9hdWRpb19zZW5kX2NvbmZpZ3NbaV0pOwogICB9CiAgIGF1dG8m
IHBhcnNlZF92aWRlb19yZWN2X2NvbmZpZ3MgPSBwYXJzZWRfbG9nLnZpZGVvX3JlY3ZfY29uZmln
cygpOwogICBBU1NFUlRfRVEocGFyc2VkX3ZpZGVvX3JlY3ZfY29uZmlncy5zaXplKCksIHZpZGVv
X3JlY3ZfY29uZmlnX2xpc3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFy
c2VkX3ZpZGVvX3JlY3ZfY29uZmlncy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRl
c3Q6OlZlcmlmeUxvZ2dlZFZpZGVvUmVjdkNvbmZpZygKLSAgICAgICAgKnZpZGVvX3JlY3ZfY29u
ZmlnX2xpc3RfW2ldLCBwYXJzZWRfdmlkZW9fcmVjdl9jb25maWdzW2ldKSk7CisgICAgdmVyaWZp
ZXJfLlZlcmlmeUxvZ2dlZFZpZGVvUmVjdkNvbmZpZygqdmlkZW9fcmVjdl9jb25maWdfbGlzdF9b
aV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfdmlk
ZW9fcmVjdl9jb25maWdzW2ldKTsKICAgfQogICBhdXRvJiBwYXJzZWRfdmlkZW9fc2VuZF9jb25m
aWdzID0gcGFyc2VkX2xvZy52aWRlb19zZW5kX2NvbmZpZ3MoKTsKICAgQVNTRVJUX0VRKHBhcnNl
ZF92aWRlb19zZW5kX2NvbmZpZ3Muc2l6ZSgpLCB2aWRlb19zZW5kX2NvbmZpZ19saXN0Xy5zaXpl
KCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF92aWRlb19zZW5kX2NvbmZpZ3Mu
c2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRWaWRlb1Nl
bmRDb25maWcoCi0gICAgICAgICp2aWRlb19zZW5kX2NvbmZpZ19saXN0X1tpXSwgcGFyc2VkX3Zp
ZGVvX3NlbmRfY29uZmlnc1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRWaWRlb1Nl
bmRDb25maWcoKnZpZGVvX3NlbmRfY29uZmlnX2xpc3RfW2ldLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX3ZpZGVvX3NlbmRfY29uZmlnc1tpXSk7CiAg
IH0KIAogICAvLyBDbGVhbiB1cCB0ZW1wb3JhcnkgZmlsZSAtIGNhbiBiZSBwcmV0dHkgc2xvdy4K
QEAgLTY4MCw3ICs2ODUsMjUgQEAgVEVTVF9QKFJ0Y0V2ZW50TG9nU2Vzc2lvbiwgU3RhcnRMb2dn
aW5nSW5UaGVNaWRkbGUpIHsKICAgUmVhZEFuZFZlcmlmeUxvZygpOwogfQogCi1URVNUKFJ0Y0V2
ZW50TG9nVGVzdCwgQ2lyY3VsYXJCdWZmZXJLZWVwc01vc3RSZWNlbnRFdmVudHMpIHsKK0lOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIFJ0Y0V2ZW50TG9nVGVzdCwKKyAgICBSdGNFdmVudExv
Z1Nlc3Npb24sCisgICAgOjp0ZXN0aW5nOjpDb21iaW5lKAorICAgICAgICA6OnRlc3Rpbmc6OlZh
bHVlcygxMjM0NTY3LCA3NjU0MzIxKSwKKyAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoUnRjRXZl
bnRMb2c6OmtJbW1lZGlhdGVPdXRwdXQsIDEsIDUpLAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVl
cyhSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpMZWdhY3ksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6Ok5ld0Zvcm1hdCkpKTsKKworY2xhc3Mg
UnRjRXZlbnRMb2dDaXJjdWxhckJ1ZmZlclRlc3QKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08UnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZT4geworIHB1YmxpYzoKKyAgUnRj
RXZlbnRMb2dDaXJjdWxhckJ1ZmZlclRlc3QoKQorICAgICAgOiBlbmNvZGluZ190eXBlXyhHZXRQ
YXJhbSgpKSwgdmVyaWZpZXJfKGVuY29kaW5nX3R5cGVfKSB7fQorICBjb25zdCBSdGNFdmVudExv
Zzo6RW5jb2RpbmdUeXBlIGVuY29kaW5nX3R5cGVfOworICBjb25zdCB0ZXN0OjpFdmVudFZlcmlm
aWVyIHZlcmlmaWVyXzsKK307CisKK1RFU1RfUChSdGNFdmVudExvZ0NpcmN1bGFyQnVmZmVyVGVz
dCwgS2VlcHNNb3N0UmVjZW50RXZlbnRzKSB7CiAgIC8vIFRPRE8odGVyZWxpdXMpOiBNYXliZSBt
YWtlIGEgc2VwYXJhdGUgUnRjRXZlbnRMb2dJbXBsVGVzdCB0aGF0IGNhbiBhY2Nlc3MKICAgLy8g
dGhlIHNpemUgb2YgdGhlIGN5Y2xpYyBidWZmZXI/CiAgIGNvbnN0ZXhwciBzaXplX3Qga051bUV2
ZW50cyA9IDIwMDAwOwpAQCAtNjk5LDggKzcyMiw3IEBAIFRFU1QoUnRjRXZlbnRMb2dUZXN0LCBD
aXJjdWxhckJ1ZmZlcktlZXBzTW9zdFJlY2VudEV2ZW50cykgewogCiAgIC8vIFdoZW4gbG9nX2R1
bXBlciBnb2VzIG91dCBvZiBzY29wZSwgaXQgY2F1c2VzIHRoZSBsb2cgZmlsZSB0byBiZSBmbHVz
aGVkCiAgIC8vIHRvIGRpc2suCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZz4gbG9nX2R1
bXBlcigKLSAgICAgIFJ0Y0V2ZW50TG9nOjpDcmVhdGUoUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlw
ZTo6TGVnYWN5KSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZz4gbG9nX2R1bXBlcihS
dGNFdmVudExvZzo6Q3JlYXRlKGVuY29kaW5nX3R5cGVfKSk7CiAKICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBrTnVtRXZlbnRzOyBpKyspIHsKICAgICAvLyBUaGUgcHVycG9zZSBvZiB0aGUgdGVz
dCBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgbG9nIGNhbiBoYW5kbGUKQEAgLTcxNCw2ICs3MzYsNyBA
QCBURVNUKFJ0Y0V2ZW50TG9nVGVzdCwgQ2lyY3VsYXJCdWZmZXJLZWVwc01vc3RSZWNlbnRFdmVu
dHMpIHsKICAgICBmYWtlX2Nsb2NrLT5BZHZhbmNlVGltZU1pY3JvcygxMDAwMCk7CiAgIH0KICAg
aW50NjRfdCBzdGFydF90aW1lX3VzID0gcnRjOjpUaW1lTWljcm9zKCk7CisgIGludDY0X3QgdXRj
X3N0YXJ0X3RpbWVfdXMgPSBydGM6OlRpbWVVVENNaWNyb3MoKTsKICAgbG9nX2R1bXBlci0+U3Rh
cnRMb2dnaW5nKAogICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dPdXRwdXRGaWxl
Pih0ZW1wX2ZpbGVuYW1lLCAxMDAwMDAwMCksCiAgICAgICBSdGNFdmVudExvZzo6a0ltbWVkaWF0
ZU91dHB1dCk7CkBAIC03MjcsMTEgKzc1MCwxMiBAQCBURVNUKFJ0Y0V2ZW50TG9nVGVzdCwgQ2ly
Y3VsYXJCdWZmZXJLZWVwc01vc3RSZWNlbnRFdmVudHMpIHsKIAogICBjb25zdCBhdXRvJiBzdGFy
dF9sb2dfZXZlbnRzID0gcGFyc2VkX2xvZy5zdGFydF9sb2dfZXZlbnRzKCk7CiAgIEFTU0VSVF9F
UShzdGFydF9sb2dfZXZlbnRzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJp
ZnlMb2dnZWRTdGFydEV2ZW50KHN0YXJ0X3RpbWVfdXMsIHN0YXJ0X2xvZ19ldmVudHNbMF0pKTsK
KyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFN0YXJ0RXZlbnQoc3RhcnRfdGltZV91cywgdXRjX3N0
YXJ0X3RpbWVfdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xv
Z19ldmVudHNbMF0pOwogCiAgIGNvbnN0IGF1dG8mIHN0b3BfbG9nX2V2ZW50cyA9IHBhcnNlZF9s
b2cuc3RvcF9sb2dfZXZlbnRzKCk7CiAgIEFTU0VSVF9FUShzdG9wX2xvZ19ldmVudHMuc2l6ZSgp
LCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZFN0b3BFdmVudChzdG9wX3Rp
bWVfdXMsIHN0b3BfbG9nX2V2ZW50c1swXSkpOworICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkU3Rv
cEV2ZW50KHN0b3BfdGltZV91cywgc3RvcF9sb2dfZXZlbnRzWzBdKTsKIAogICBjb25zdCBhdXRv
JiBwcm9iZV9zdWNjZXNzX2V2ZW50cyA9IHBhcnNlZF9sb2cuYndlX3Byb2JlX3N1Y2Nlc3NfZXZl
bnRzKCk7CiAgIC8vIElmIHRoZSBmb2xsb3dpbmcgZmFpbHMsIGl0IHByb2JhYmx5IG1lYW5zIHRo
YXQga051bUV2ZW50cyBpc24ndCBsYXJnZXIKQEAgLTc1MiwxOSArNzc2LDIwIEBAIFRFU1QoUnRj
RXZlbnRMb2dUZXN0LCBDaXJjdWxhckJ1ZmZlcktlZXBzTW9zdFJlY2VudEV2ZW50cykgewogICBm
YWtlX2Nsb2NrLT5TZXRUaW1lTWljcm9zKGZpcnN0X3RpbWVzdGFtcF91cyk7CiAgIGZvciAoc2l6
ZV90IGkgPSAxOyBpIDwgcHJvYmVfc3VjY2Vzc19ldmVudHMuc2l6ZSgpOyBpKyspIHsKICAgICBm
YWtlX2Nsb2NrLT5BZHZhbmNlVGltZU1pY3JvcygxMDAwMCk7Ci0gICAgQVNTRVJUX1RSVUUodGVz
dDo6VmVyaWZ5TG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQoCisgICAgdmVyaWZpZXJfLlZlcmlm
eUxvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50KAogICAgICAgICBSdGNFdmVudFByb2JlUmVzdWx0
U3VjY2VzcyhmaXJzdF9pZCArIGksIGZpcnN0X2JpdHJhdGVfYnBzICsgaSAqIDEwMDApLAotICAg
ICAgICBwcm9iZV9zdWNjZXNzX2V2ZW50c1tpXSkpOworICAgICAgICBwcm9iZV9zdWNjZXNzX2V2
ZW50c1tpXSk7CiAgIH0KIH0KIAorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisgICAgUnRjRXZl
bnRMb2dUZXN0LAorICAgIFJ0Y0V2ZW50TG9nQ2lyY3VsYXJCdWZmZXJUZXN0LAorICAgIDo6dGVz
dGluZzo6VmFsdWVzKFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6OkxlZ2FjeSwKKyAgICAgICAg
ICAgICAgICAgICAgICBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpOZXdGb3JtYXQpKTsKKwog
Ly8gVE9ETyh0ZXJlbGl1cyk6IFZlcmlmeSBwYXJzZXIgYmVoYXZpb3IgaWYgdGhlIHRpbWVzdGFt
cHMgYXJlIG5vdAogLy8gbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGluIHRoZSBsb2cuCiAKLUlO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAotICAgIFJ0Y0V2ZW50TG9nVGVzdCwKLSAgICBSdGNFdmVu
dExvZ1Nlc3Npb24sCi0gICAgOjp0ZXN0aW5nOjpDb21iaW5lKDo6dGVzdGluZzo6VmFsdWVzKDEy
MzQ1NjcsIDc2NTQzMjEpLAotICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVl
cyhSdGNFdmVudExvZzo6a0ltbWVkaWF0ZU91dHB1dCwgMSwgNSkpKTsKIAogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3RfaGVs
cGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3RfaGVscGVyLmNjCmluZGV4IDlm
NjI0MGNiZTFlNmJmNzc3NzFkZjFiMTM3ZGJlOWQzN2YxMGI2MzguLmU4NzgwOGQxMjVjM2U0OTNj
MTFmMTVjNzdhOWRhZjAxNjQzYjUyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9n
X3VuaXR0ZXN0X2hlbHBlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdF9o
ZWxwZXIuY2MKQEAgLTEyLDEyICsxMiwxNSBAQAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBt
ZW1jbXAKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1
ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9v
cHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtf
YWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvci5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2N2by5oIgpAQCAtMjUsNiArMjgsNyBA
QAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0Lmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC02Miw2ICs2NiwxNiBAQCB2b2lkIFNodWZmbGVJ
blBsYWNlKFJhbmRvbSogcHJuZywgcnRjOjpBcnJheVZpZXc8VD4gYXJyYXkpIHsKICAgICBzdGQ6
OnN3YXAoYXJyYXlbaV0sIGFycmF5W290aGVyXSk7CiAgIH0KIH0KKworYWJzbDo6b3B0aW9uYWw8
aW50PiBHZXRFeHRlbnNpb25JZChjb25zdCBzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+JiBleHRl
bnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdXJpKSB7CisgIGZvciAoY29uc3QgYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9ucykg
eworICAgIGlmIChleHRlbnNpb24udXJpID09IHVyaSkKKyAgICAgIHJldHVybiBleHRlbnNpb24u
aWQ7CisgIH0KKyAgcmV0dXJuIGFic2w6Om51bGxvcHQ7Cit9CisKIH0gIC8vIG5hbWVzcGFjZQog
CiBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBbHJTdGF0ZT4gRXZlbnRHZW5lcmF0b3I6Ok5ld0Fs
clN0YXRlKCkgewpAQCAtMjY2LDcgKzI4MCw4IEBAIHZvaWQgRXZlbnRHZW5lcmF0b3I6OlJhbmRv
bWl6ZVJ0cFBhY2tldCgKICAgICBzaXplX3QgcGFkZGluZ19zaXplLAogICAgIHVpbnQzMl90IHNz
cmMsCiAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBleHRlbnNpb25fbWFwLAotICAg
IFJ0cFBhY2tldCogcnRwX3BhY2tldCkgeworICAgIFJ0cFBhY2tldCogcnRwX3BhY2tldCwKKyAg
ICBib29sIGFsbF9jb25maWd1cmVkX2V4dHMpIHsKICAgY29uc3RleHByIGludCBrTWF4UGF5bG9h
ZFR5cGUgPSAxMjc7CiAgIHJ0cF9wYWNrZXQtPlNldFBheWxvYWRUeXBlKHBybmdfLlJhbmQoa01h
eFBheWxvYWRUeXBlKSk7CiAgIHJ0cF9wYWNrZXQtPlNldE1hcmtlcihwcm5nXy5SYW5kPGJvb2w+
KCkpOwpAQCAtMjgxLDE2ICsyOTYsMzAgQEAgdm9pZCBFdmVudEdlbmVyYXRvcjo6UmFuZG9taXpl
UnRwUGFja2V0KAogICB9CiAgIHJ0cF9wYWNrZXQtPlNldENzcmNzKGNzcmNzKTsKIAotICBpZiAo
ZXh0ZW5zaW9uX21hcC5Jc1JlZ2lzdGVyZWQoVHJhbnNtaXNzaW9uT2Zmc2V0OjprSWQpKQorICBp
ZiAoZXh0ZW5zaW9uX21hcC5Jc1JlZ2lzdGVyZWQoVHJhbnNtaXNzaW9uT2Zmc2V0OjprSWQpICYm
CisgICAgICAoYWxsX2NvbmZpZ3VyZWRfZXh0cyB8fCBwcm5nXy5SYW5kPGJvb2w+KCkpKSB7CiAg
ICAgcnRwX3BhY2tldC0+U2V0RXh0ZW5zaW9uPFRyYW5zbWlzc2lvbk9mZnNldD4ocHJuZ18uUmFu
ZCgweDAwZmZmZmZmKSk7Ci0gIGlmIChleHRlbnNpb25fbWFwLklzUmVnaXN0ZXJlZChBdWRpb0xl
dmVsOjprSWQpKQorICB9CisKKyAgaWYgKGV4dGVuc2lvbl9tYXAuSXNSZWdpc3RlcmVkKEF1ZGlv
TGV2ZWw6OmtJZCkgJiYKKyAgICAgIChhbGxfY29uZmlndXJlZF9leHRzIHx8IHBybmdfLlJhbmQ8
Ym9vbD4oKSkpIHsKICAgICBydHBfcGFja2V0LT5TZXRFeHRlbnNpb248QXVkaW9MZXZlbD4ocHJu
Z18uUmFuZDxib29sPigpLCBwcm5nXy5SYW5kKDEyNykpOwotICBpZiAoZXh0ZW5zaW9uX21hcC5J
c1JlZ2lzdGVyZWQoQWJzb2x1dGVTZW5kVGltZTo6a0lkKSkKKyAgfQorCisgIGlmIChleHRlbnNp
b25fbWFwLklzUmVnaXN0ZXJlZChBYnNvbHV0ZVNlbmRUaW1lOjprSWQpICYmCisgICAgICAoYWxs
X2NvbmZpZ3VyZWRfZXh0cyB8fCBwcm5nXy5SYW5kPGJvb2w+KCkpKSB7CiAgICAgcnRwX3BhY2tl
dC0+U2V0RXh0ZW5zaW9uPEFic29sdXRlU2VuZFRpbWU+KHBybmdfLlJhbmQoMHgwMGZmZmZmZikp
OwotICBpZiAoZXh0ZW5zaW9uX21hcC5Jc1JlZ2lzdGVyZWQoVmlkZW9PcmllbnRhdGlvbjo6a0lk
KSkKKyAgfQorCisgIGlmIChleHRlbnNpb25fbWFwLklzUmVnaXN0ZXJlZChWaWRlb09yaWVudGF0
aW9uOjprSWQpICYmCisgICAgICAoYWxsX2NvbmZpZ3VyZWRfZXh0cyB8fCBwcm5nXy5SYW5kPGJv
b2w+KCkpKSB7CiAgICAgcnRwX3BhY2tldC0+U2V0RXh0ZW5zaW9uPFZpZGVvT3JpZW50YXRpb24+
KHBybmdfLlJhbmQoMykpOwotICBpZiAoZXh0ZW5zaW9uX21hcC5Jc1JlZ2lzdGVyZWQoVHJhbnNw
b3J0U2VxdWVuY2VOdW1iZXI6OmtJZCkpCisgIH0KKworICBpZiAoZXh0ZW5zaW9uX21hcC5Jc1Jl
Z2lzdGVyZWQoVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI6OmtJZCkgJiYKKyAgICAgIChhbGxfY29u
ZmlndXJlZF9leHRzIHx8IHBybmdfLlJhbmQ8Ym9vbD4oKSkpIHsKICAgICBydHBfcGFja2V0LT5T
ZXRFeHRlbnNpb248VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI+KHBybmdfLlJhbmQ8dWludDE2X3Q+
KCkpOworICB9CiAKICAgUlRDX0NIRUNLX0xFKHJ0cF9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpICsg
cGF5bG9hZF9zaXplLCBJUF9QQUNLRVRfU0laRSk7CiAKQEAgLTI5OSwxMiArMzI4LDEzIEBAIHZv
aWQgRXZlbnRHZW5lcmF0b3I6OlJhbmRvbWl6ZVJ0cFBhY2tldCgKICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwYXlsb2FkX3NpemU7IGkrKykgewogICAgIHBheWxvYWRbaV0gPSBwcm5nXy5SYW5k
PHVpbnQ4X3Q+KCk7CiAgIH0KLSAgUlRDX0NIRUNLKHJ0cF9wYWNrZXQtPlNldFBhZGRpbmcocGFk
ZGluZ19zaXplLCAmcHJuZ18pKTsKKyAgUlRDX0NIRUNLKHJ0cF9wYWNrZXQtPlNldFBhZGRpbmco
cGFkZGluZ19zaXplKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0cFBhY2tldElu
Y29taW5nPiBFdmVudEdlbmVyYXRvcjo6TmV3UnRwUGFja2V0SW5jb21pbmcoCiAgICAgdWludDMy
X3Qgc3NyYywKLSAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXAp
IHsKKyAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXAsCisgICAg
Ym9vbCBhbGxfY29uZmlndXJlZF9leHRzKSB7CiAgIGNvbnN0ZXhwciBzaXplX3Qga01heFBhZGRp
bmdMZW5ndGggPSAyMjQ7CiAgIGNvbnN0IGJvb2wgcGFkZGluZyA9IHBybmdfLlJhbmQoMCwgOSkg
PT0gMDsgIC8vIExldCBwYWRkaW5nIGJlIDEwJSBwcm9iYWJsZS4KICAgY29uc3Qgc2l6ZV90IHBh
ZGRpbmdfc2l6ZSA9ICFwYWRkaW5nID8gMHUgOiBwcm5nXy5SYW5kKDB1LCBrTWF4UGFkZGluZ0xl
bmd0aCk7CkBAIC0zMjUsMTQgKzM1NSwxNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdHBQ
YWNrZXRJbmNvbWluZz4gRXZlbnRHZW5lcmF0b3I6Ok5ld1J0cFBhY2tldEluY29taW5nKAogCiAg
IFJ0cFBhY2tldFJlY2VpdmVkIHJ0cF9wYWNrZXQoJmV4dGVuc2lvbl9tYXApOwogICBSYW5kb21p
emVSdHBQYWNrZXQocGF5bG9hZF9zaXplLCBwYWRkaW5nX3NpemUsIHNzcmMsIGV4dGVuc2lvbl9t
YXAsCi0gICAgICAgICAgICAgICAgICAgICAmcnRwX3BhY2tldCk7CisgICAgICAgICAgICAgICAg
ICAgICAmcnRwX3BhY2tldCwgYWxsX2NvbmZpZ3VyZWRfZXh0cyk7CiAKICAgcmV0dXJuIGFic2w6
Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc+KHJ0cF9wYWNrZXQpOwogfQog
CiBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZz4gRXZlbnRHZW5lcmF0
b3I6Ok5ld1J0cFBhY2tldE91dGdvaW5nKAogICAgIHVpbnQzMl90IHNzcmMsCi0gICAgY29uc3Qg
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBleHRlbnNpb25fbWFwKSB7CisgICAgY29uc3QgUnRwSGVh
ZGVyRXh0ZW5zaW9uTWFwJiBleHRlbnNpb25fbWFwLAorICAgIGJvb2wgYWxsX2NvbmZpZ3VyZWRf
ZXh0cykgewogICBjb25zdGV4cHIgc2l6ZV90IGtNYXhQYWRkaW5nTGVuZ3RoID0gMjI0OwogICBj
b25zdCBib29sIHBhZGRpbmcgPSBwcm5nXy5SYW5kKDAsIDkpID09IDA7ICAvLyBMZXQgcGFkZGlu
ZyBiZSAxMCUgcHJvYmFibGUuCiAgIGNvbnN0IHNpemVfdCBwYWRkaW5nX3NpemUgPSAhcGFkZGlu
ZyA/IDB1IDogcHJuZ18uUmFuZCgwdSwga01heFBhZGRpbmdMZW5ndGgpOwpAQCAtMzU0LDMzICsz
ODUsMzQgQEAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmc+IEV2ZW50
R2VuZXJhdG9yOjpOZXdSdHBQYWNrZXRPdXRnb2luZygKICAgUnRwUGFja2V0VG9TZW5kIHJ0cF9w
YWNrZXQoJmV4dGVuc2lvbl9tYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtNYXhI
ZWFkZXJTaXplICsgcGF5bG9hZF9zaXplICsgcGFkZGluZ19zaXplKTsKICAgUmFuZG9taXplUnRw
UGFja2V0KHBheWxvYWRfc2l6ZSwgcGFkZGluZ19zaXplLCBzc3JjLCBleHRlbnNpb25fbWFwLAot
ICAgICAgICAgICAgICAgICAgICAgJnJ0cF9wYWNrZXQpOworICAgICAgICAgICAgICAgICAgICAg
JnJ0cF9wYWNrZXQsIGFsbF9jb25maWd1cmVkX2V4dHMpOwogCiAgIGludCBwcm9iZV9jbHVzdGVy
X2lkID0gcHJuZ18uUmFuZCgwLCAxMDAwMDApOwogICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8
UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZz4ocnRwX3BhY2tldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2JlX2NsdXN0ZXJfaWQpOwog
fQogCi1SdHBIZWFkZXJFeHRlbnNpb25NYXAgRXZlbnRHZW5lcmF0b3I6Ok5ld1J0cEhlYWRlckV4
dGVuc2lvbk1hcCgpIHsKK1J0cEhlYWRlckV4dGVuc2lvbk1hcCBFdmVudEdlbmVyYXRvcjo6TmV3
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKAorICAgIGJvb2wgY29uZmlndXJlX2FsbCkgewogICBSdHBI
ZWFkZXJFeHRlbnNpb25NYXAgZXh0ZW5zaW9uX21hcDsKICAgc3RkOjp2ZWN0b3I8aW50PiBpZChS
dHBFeHRlbnNpb246OmtPbmVCeXRlSGVhZGVyRXh0ZW5zaW9uTWF4SWQgLQogICAgICAgICAgICAg
ICAgICAgICAgIFJ0cEV4dGVuc2lvbjo6a01pbklkICsgMSk7CiAgIHN0ZDo6aW90YShpZC5iZWdp
bigpLCBpZC5lbmQoKSwgUnRwRXh0ZW5zaW9uOjprTWluSWQpOwogICBTaHVmZmxlSW5QbGFjZSgm
cHJuZ18sIHJ0Yzo6QXJyYXlWaWV3PGludD4oaWQpKTsKIAotICBpZiAocHJuZ18uUmFuZDxib29s
PigpKSB7CisgIGlmIChjb25maWd1cmVfYWxsIHx8IHBybmdfLlJhbmQ8Ym9vbD4oKSkgewogICAg
IGV4dGVuc2lvbl9tYXAuUmVnaXN0ZXI8QXVkaW9MZXZlbD4oaWRbMF0pOwogICB9Ci0gIGlmIChw
cm5nXy5SYW5kPGJvb2w+KCkpIHsKKyAgaWYgKGNvbmZpZ3VyZV9hbGwgfHwgcHJuZ18uUmFuZDxi
b29sPigpKSB7CiAgICAgZXh0ZW5zaW9uX21hcC5SZWdpc3RlcjxUcmFuc21pc3Npb25PZmZzZXQ+
KGlkWzFdKTsKICAgfQotICBpZiAocHJuZ18uUmFuZDxib29sPigpKSB7CisgIGlmIChjb25maWd1
cmVfYWxsIHx8IHBybmdfLlJhbmQ8Ym9vbD4oKSkgewogICAgIGV4dGVuc2lvbl9tYXAuUmVnaXN0
ZXI8QWJzb2x1dGVTZW5kVGltZT4oaWRbMl0pOwogICB9Ci0gIGlmIChwcm5nXy5SYW5kPGJvb2w+
KCkpIHsKKyAgaWYgKGNvbmZpZ3VyZV9hbGwgfHwgcHJuZ18uUmFuZDxib29sPigpKSB7CiAgICAg
ZXh0ZW5zaW9uX21hcC5SZWdpc3RlcjxWaWRlb09yaWVudGF0aW9uPihpZFszXSk7CiAgIH0KLSAg
aWYgKHBybmdfLlJhbmQ8Ym9vbD4oKSkgeworICBpZiAoY29uZmlndXJlX2FsbCB8fCBwcm5nXy5S
YW5kPGJvb2w+KCkpIHsKICAgICBleHRlbnNpb25fbWFwLlJlZ2lzdGVyPFRyYW5zcG9ydFNlcXVl
bmNlTnVtYmVyPihpZFs0XSk7CiAgIH0KIApAQCAtNDY5LDM5NiArNTAxLDMxNyBAQCBFdmVudEdl
bmVyYXRvcjo6TmV3VmlkZW9TZW5kU3RyZWFtQ29uZmlnKAogICByZXR1cm4gYWJzbDo6bWFrZV91
bmlxdWU8UnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWc+KHN0ZDo6bW92ZShjb25maWcpKTsK
IH0KIAotYm9vbCBWZXJpZnlMb2dnZWRBbHJTdGF0ZUV2ZW50KGNvbnN0IFJ0Y0V2ZW50QWxyU3Rh
dGUmIG9yaWdpbmFsX2V2ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IExvZ2dlZEFsclN0YXRlRXZlbnQmIGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZl
bnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1
cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5pbl9hbHJfICE9IGxvZ2dlZF9ldmVudC5p
bl9hbHIpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKK3ZvaWQgRXZlbnRWZXJp
Zmllcjo6VmVyaWZ5TG9nZ2VkQWxyU3RhdGVFdmVudCgKKyAgICBjb25zdCBSdGNFdmVudEFsclN0
YXRlJiBvcmlnaW5hbF9ldmVudCwKKyAgICBjb25zdCBMb2dnZWRBbHJTdGF0ZUV2ZW50JiBsb2dn
ZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9t
cygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9l
dmVudC5pbl9hbHIoKSwgbG9nZ2VkX2V2ZW50LmluX2Fscik7CiB9CiAKLWJvb2wgVmVyaWZ5TG9n
Z2VkQXVkaW9QbGF5b3V0RXZlbnQoCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZEF1
ZGlvUGxheW91dEV2ZW50KAogICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0JiBvcmlnaW5h
bF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCYgbG9nZ2VkX2V2ZW50
KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5s
b2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnNz
cmNfICE9IGxvZ2dlZF9ldmVudC5zc3JjKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRy
dWU7CisgICAgY29uc3QgTG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQmIGxvZ2dlZF9ldmVudCkgY29u
c3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX21zKCksIGxvZ2dlZF9l
dmVudC5sb2dfdGltZV9tcygpKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnNzcmMoKSwg
bG9nZ2VkX2V2ZW50LnNzcmMpOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZEF1ZGlvTmV0d29ya0Fk
YXB0YXRpb25FdmVudCgKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkQXVkaW9OZXR3
b3JrQWRhcHRhdGlvbkV2ZW50KAogICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRh
dGlvbiYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRh
dGlvbkV2ZW50JiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFt
cF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwot
Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5jb25maWdfLT5iaXRyYXRlX2JwcyAhPSBsb2dnZWRfZXZl
bnQuY29uZmlnLmJpdHJhdGVfYnBzKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFs
X2V2ZW50LmNvbmZpZ18tPmVuYWJsZV9kdHggIT0gbG9nZ2VkX2V2ZW50LmNvbmZpZy5lbmFibGVf
ZHR4KQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNvbmZpZ18tPmVu
YWJsZV9mZWMgIT0gbG9nZ2VkX2V2ZW50LmNvbmZpZy5lbmFibGVfZmVjKQotICAgIHJldHVybiBm
YWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNvbmZpZ18tPmZyYW1lX2xlbmd0aF9tcyAhPQot
ICAgICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy5mcmFtZV9sZW5ndGhfbXMpCi0gICAgcmV0dXJuIGZh
bHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuY29uZmlnXy0+bnVtX2NoYW5uZWxzICE9IGxvZ2dl
ZF9ldmVudC5jb25maWcubnVtX2NoYW5uZWxzKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9y
aWdpbmFsX2V2ZW50LmNvbmZpZ18tPnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbiAhPQotICAg
ICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24pCi0gICAg
cmV0dXJuIGZhbHNlOwotCi0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZlcmlmeUxvZ2dlZEJ3
ZURlbGF5QmFzZWRVcGRhdGUoCisgICAgY29uc3QgTG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlv
bkV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50
LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CisKKyAgRVhQRUNU
X0VRKG9yaWdpbmFsX2V2ZW50LmNvbmZpZygpLmJpdHJhdGVfYnBzLAorICAgICAgICAgICAgbG9n
Z2VkX2V2ZW50LmNvbmZpZy5iaXRyYXRlX2Jwcyk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVu
dC5jb25maWcoKS5lbmFibGVfZHR4LCBsb2dnZWRfZXZlbnQuY29uZmlnLmVuYWJsZV9kdHgpOwor
ICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY29uZmlnKCkuZW5hYmxlX2ZlYywgbG9nZ2VkX2V2
ZW50LmNvbmZpZy5lbmFibGVfZmVjKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNvbmZp
ZygpLmZyYW1lX2xlbmd0aF9tcywKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVudC5jb25maWcuZnJh
bWVfbGVuZ3RoX21zKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNvbmZpZygpLm51bV9j
aGFubmVscywKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVudC5jb25maWcubnVtX2NoYW5uZWxzKTsK
KworICAvLyB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24KKyAgQVNTRVJUX0VRKG9yaWdpbmFs
X2V2ZW50LmNvbmZpZygpLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbi5oYXNfdmFsdWUoKSwK
KyAgICAgICAgICAgIGxvZ2dlZF9ldmVudC5jb25maWcudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0
aW9uLmhhc192YWx1ZSgpKTsKKyAgaWYgKG9yaWdpbmFsX2V2ZW50LmNvbmZpZygpLnVwbGlua19w
YWNrZXRfbG9zc19mcmFjdGlvbi5oYXNfdmFsdWUoKSkgeworICAgIGNvbnN0IGZsb2F0IG9yaWdp
bmFsID0KKyAgICAgICAgb3JpZ2luYWxfZXZlbnQuY29uZmlnKCkudXBsaW5rX3BhY2tldF9sb3Nz
X2ZyYWN0aW9uLnZhbHVlKCk7CisgICAgY29uc3QgZmxvYXQgbG9nZ2VkID0KKyAgICAgICAgbG9n
Z2VkX2V2ZW50LmNvbmZpZy51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24udmFsdWUoKTsKKyAg
ICBjb25zdCBmbG9hdCB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb25fZGVsdGEgPSBzdGQ6OmFi
cyhvcmlnaW5hbCAtIGxvZ2dlZCk7CisgICAgRVhQRUNUX0xFKHVwbGlua19wYWNrZXRfbG9zc19m
cmFjdGlvbl9kZWx0YSwgMC4wMDAxZik7CisgIH0KK30KKwordm9pZCBFdmVudFZlcmlmaWVyOjpW
ZXJpZnlMb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRlKAogICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBk
YXRlRGVsYXlCYXNlZCYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQndlRGVsYXlC
YXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3Rh
bXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsK
LSAgaWYgKG9yaWdpbmFsX2V2ZW50LmJpdHJhdGVfYnBzXyAhPSBsb2dnZWRfZXZlbnQuYml0cmF0
ZV9icHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuZGV0ZWN0b3Jf
c3RhdGVfICE9IGxvZ2dlZF9ldmVudC5kZXRlY3Rvcl9zdGF0ZSkKLSAgICByZXR1cm4gZmFsc2U7
Ci0gIHJldHVybiB0cnVlOworICAgIGNvbnN0IExvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUmIGxv
Z2dlZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1w
X21zKCksIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFs
X2V2ZW50LmJpdHJhdGVfYnBzKCksIGxvZ2dlZF9ldmVudC5iaXRyYXRlX2Jwcyk7CisgIEVYUEVD
VF9FUShvcmlnaW5hbF9ldmVudC5kZXRlY3Rvcl9zdGF0ZSgpLCBsb2dnZWRfZXZlbnQuZGV0ZWN0
b3Jfc3RhdGUpOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSgKK3Zv
aWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlKAogICAgIGNv
bnN0IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25z
dCBMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUmIGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2lu
YWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5iaXRyYXRlX2Jwc18gIT0gbG9n
Z2VkX2V2ZW50LmJpdHJhdGVfYnBzKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFs
X2V2ZW50LmZyYWN0aW9uX2xvc3NfICE9IGxvZ2dlZF9ldmVudC5mcmFjdGlvbl9sb3N0KQotICAg
IHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRvdGFsX3BhY2tldHNfICE9IGxv
Z2dlZF9ldmVudC5leHBlY3RlZF9wYWNrZXRzKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50
KAorICAgIGNvbnN0IExvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50KSBjb25z
dCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2
ZW50LmxvZ190aW1lX21zKCkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuYml0cmF0ZV9i
cHMoKSwgbG9nZ2VkX2V2ZW50LmJpdHJhdGVfYnBzKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2
ZW50LmZyYWN0aW9uX2xvc3MoKSwgbG9nZ2VkX2V2ZW50LmZyYWN0aW9uX2xvc3QpOworICBFWFBF
Q1RfRVEob3JpZ2luYWxfZXZlbnQudG90YWxfcGFja2V0cygpLCBsb2dnZWRfZXZlbnQuZXhwZWN0
ZWRfcGFja2V0cyk7Cit9CisKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkQndlUHJv
YmVDbHVzdGVyQ3JlYXRlZEV2ZW50KAogICAgIGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3Jl
YXRlZCYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3Jl
YXRlZEV2ZW50JiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFt
cF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwot
ICBpZiAob3JpZ2luYWxfZXZlbnQuaWRfICE9IGxvZ2dlZF9ldmVudC5pZCkKLSAgICByZXR1cm4g
ZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5iaXRyYXRlX2Jwc18gIT0gbG9nZ2VkX2V2ZW50
LmJpdHJhdGVfYnBzKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50Lm1p
bl9wcm9iZXNfICE9IGxvZ2dlZF9ldmVudC5taW5fcGFja2V0cykKLSAgICByZXR1cm4gZmFsc2U7
Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5taW5fYnl0ZXNfICE9IGxvZ2dlZF9ldmVudC5taW5fYnl0
ZXMpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZlcmlm
eUxvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50KAorICAgIGNvbnN0IExvZ2dlZEJ3ZVByb2JlQ2x1
c3RlckNyZWF0ZWRFdmVudCYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmln
aW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOwor
ICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuaWQoKSwgbG9nZ2VkX2V2ZW50LmlkKTsKKyAgRVhQ
RUNUX0VRKG9yaWdpbmFsX2V2ZW50LmJpdHJhdGVfYnBzKCksIGxvZ2dlZF9ldmVudC5iaXRyYXRl
X2Jwcyk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5taW5fcHJvYmVzKCksIGxvZ2dlZF9l
dmVudC5taW5fcGFja2V0cyk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5taW5fYnl0ZXMo
KSwgbG9nZ2VkX2V2ZW50Lm1pbl9ieXRlcyk7Cit9CisKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVy
aWZ5TG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQoCiAgICAgY29uc3QgUnRjRXZlbnRQcm9iZVJl
c3VsdEZhaWx1cmUmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZEJ3ZVByb2JlRmFp
bHVyZUV2ZW50JiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFt
cF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwot
ICBpZiAob3JpZ2luYWxfZXZlbnQuaWRfICE9IGxvZ2dlZF9ldmVudC5pZCkKLSAgICByZXR1cm4g
ZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5mYWlsdXJlX3JlYXNvbl8gIT0gbG9nZ2VkX2V2
ZW50LmZhaWx1cmVfcmVhc29uKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Cisg
ICAgY29uc3QgTG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Qg
eworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX21zKCksIGxvZ2dlZF9ldmVu
dC5sb2dfdGltZV9tcygpKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmlkKCksIGxvZ2dl
ZF9ldmVudC5pZCk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5mYWlsdXJlX3JlYXNvbigp
LCBsb2dnZWRfZXZlbnQuZmFpbHVyZV9yZWFzb24pOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZEJ3
ZVByb2JlU3VjY2Vzc0V2ZW50KAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRCd2VQ
cm9iZVN1Y2Nlc3NFdmVudCgKICAgICBjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2VzcyYg
b3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQmIGxv
Z2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dn
ZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5h
bF9ldmVudC5pZF8gIT0gbG9nZ2VkX2V2ZW50LmlkKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYg
KG9yaWdpbmFsX2V2ZW50LmJpdHJhdGVfYnBzXyAhPSBsb2dnZWRfZXZlbnQuYml0cmF0ZV9icHMp
Ci0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBMb2dnZWRCd2VQ
cm9iZVN1Y2Nlc3NFdmVudCYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmln
aW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOwor
ICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuaWQoKSwgbG9nZ2VkX2V2ZW50LmlkKTsKKyAgRVhQ
RUNUX0VRKG9yaWdpbmFsX2V2ZW50LmJpdHJhdGVfYnBzKCksIGxvZ2dlZF9ldmVudC5iaXRyYXRl
X2Jwcyk7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZygKK3Zv
aWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZygKICAg
ICBjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWcmIG9yaWdpbmFsX2V2ZW50LAot
ICAgIGNvbnN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWcmIGxvZ2dlZF9ldmVudCkgewot
ICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3Rp
bWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnR5cGVf
ICE9IGxvZ2dlZF9ldmVudC50eXBlKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFs
X2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2lkXyAhPSBsb2dnZWRfZXZlbnQuY2FuZGlkYXRlX3BhaXJf
aWQpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3Bh
aXJfZGVzY18ubG9jYWxfY2FuZGlkYXRlX3R5cGUgIT0KLSAgICAgIGxvZ2dlZF9ldmVudC5sb2Nh
bF9jYW5kaWRhdGVfdHlwZSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVu
dC5jYW5kaWRhdGVfcGFpcl9kZXNjXy5sb2NhbF9yZWxheV9wcm90b2NvbCAhPQotICAgICAgbG9n
Z2VkX2V2ZW50LmxvY2FsX3JlbGF5X3Byb3RvY29sKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYg
KG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2Rlc2NfLmxvY2FsX25ldHdvcmtfdHlwZSAh
PQotICAgICAgbG9nZ2VkX2V2ZW50LmxvY2FsX25ldHdvcmtfdHlwZSkKLSAgICByZXR1cm4gZmFs
c2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjXy5sb2NhbF9hZGRy
ZXNzX2ZhbWlseSAhPQotICAgICAgbG9nZ2VkX2V2ZW50LmxvY2FsX2FkZHJlc3NfZmFtaWx5KQot
ICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2Rl
c2NfLnJlbW90ZV9jYW5kaWRhdGVfdHlwZSAhPQotICAgICAgbG9nZ2VkX2V2ZW50LnJlbW90ZV9j
YW5kaWRhdGVfdHlwZSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5j
YW5kaWRhdGVfcGFpcl9kZXNjXy5yZW1vdGVfYWRkcmVzc19mYW1pbHkgIT0KLSAgICAgIGxvZ2dl
ZF9ldmVudC5yZW1vdGVfYWRkcmVzc19mYW1pbHkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAo
b3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzY18uY2FuZGlkYXRlX3BhaXJfcHJvdG9j
b2wgIT0KLSAgICAgIGxvZ2dlZF9ldmVudC5jYW5kaWRhdGVfcGFpcl9wcm90b2NvbCkKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkSWNl
Q2FuZGlkYXRlUGFpckV2ZW50KAorICAgIGNvbnN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25m
aWcmIGxvZ2dlZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGlt
ZXN0YW1wX21zKCksIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKworICBFWFBFQ1RfRVEo
b3JpZ2luYWxfZXZlbnQudHlwZSgpLCBsb2dnZWRfZXZlbnQudHlwZSk7CisgIEVYUEVDVF9FUShv
cmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9pZCgpLCBsb2dnZWRfZXZlbnQuY2FuZGlkYXRl
X3BhaXJfaWQpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVz
YygpLmxvY2FsX2NhbmRpZGF0ZV90eXBlLAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LmxvY2Fs
X2NhbmRpZGF0ZV90eXBlKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9w
YWlyX2Rlc2MoKS5sb2NhbF9yZWxheV9wcm90b2NvbCwKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVu
dC5sb2NhbF9yZWxheV9wcm90b2NvbCk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5jYW5k
aWRhdGVfcGFpcl9kZXNjKCkubG9jYWxfbmV0d29ya190eXBlLAorICAgICAgICAgICAgbG9nZ2Vk
X2V2ZW50LmxvY2FsX25ldHdvcmtfdHlwZSk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5j
YW5kaWRhdGVfcGFpcl9kZXNjKCkubG9jYWxfYWRkcmVzc19mYW1pbHksCisgICAgICAgICAgICBs
b2dnZWRfZXZlbnQubG9jYWxfYWRkcmVzc19mYW1pbHkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxf
ZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzYygpLnJlbW90ZV9jYW5kaWRhdGVfdHlwZSwKKyAgICAg
ICAgICAgIGxvZ2dlZF9ldmVudC5yZW1vdGVfY2FuZGlkYXRlX3R5cGUpOworICBFWFBFQ1RfRVEo
b3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzYygpLnJlbW90ZV9hZGRyZXNzX2ZhbWls
eSwKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVudC5yZW1vdGVfYWRkcmVzc19mYW1pbHkpOworICBF
WFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzYygpLmNhbmRpZGF0ZV9w
YWlyX3Byb3RvY29sLAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX3By
b3RvY29sKTsKK30KKwordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRJY2VDYW5kaWRh
dGVQYWlyRXZlbnQoCiAgICAgY29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyJiBvcmlnaW5h
bF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQmIGxvZ2dlZF9l
dmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRfZXZl
bnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKG9yaWdpbmFsX2V2
ZW50LnR5cGVfICE9IGxvZ2dlZF9ldmVudC50eXBlKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYg
KG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2lkXyAhPSBsb2dnZWRfZXZlbnQuY2FuZGlk
YXRlX3BhaXJfaWQpCi0gICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IExvZ2dlZEljZUNhbmRp
ZGF0ZVBhaXJFdmVudCYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5h
bF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOwogCi0g
IHJldHVybiB0cnVlOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudHlwZSgpLCBsb2dnZWRf
ZXZlbnQudHlwZSk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9p
ZCgpLCBsb2dnZWRfZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQpOwogfQogCi1ib29sIFZlcmlmeUxv
Z2dlZFJ0cEhlYWRlcihjb25zdCBSdHBQYWNrZXQmIG9yaWdpbmFsX2hlYWRlciwKK3ZvaWQgVmVy
aWZ5TG9nZ2VkUnRwSGVhZGVyKGNvbnN0IFJ0cFBhY2tldCYgb3JpZ2luYWxfaGVhZGVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUlRQSGVhZGVyJiBsb2dnZWRfaGVhZGVyKSB7
CiAgIC8vIFN0YW5kYXJkIFJUUCBoZWFkZXIuCi0gIGlmIChvcmlnaW5hbF9oZWFkZXIuTWFya2Vy
KCkgIT0gbG9nZ2VkX2hlYWRlci5tYXJrZXJCaXQpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAo
b3JpZ2luYWxfaGVhZGVyLlBheWxvYWRUeXBlKCkgIT0gbG9nZ2VkX2hlYWRlci5wYXlsb2FkVHlw
ZSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9oZWFkZXIuU2VxdWVuY2VOdW1i
ZXIoKSAhPSBsb2dnZWRfaGVhZGVyLnNlcXVlbmNlTnVtYmVyKQotICAgIHJldHVybiBmYWxzZTsK
LSAgaWYgKG9yaWdpbmFsX2hlYWRlci5UaW1lc3RhbXAoKSAhPSBsb2dnZWRfaGVhZGVyLnRpbWVz
dGFtcCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9oZWFkZXIuU3NyYygpICE9
IGxvZ2dlZF9oZWFkZXIuc3NyYykKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9o
ZWFkZXIuQ3NyY3MoKS5zaXplKCkgIT0gbG9nZ2VkX2hlYWRlci5udW1DU1JDcykKLSAgICByZXR1
cm4gZmFsc2U7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9nZ2VkX2hlYWRlci5udW1DU1JD
czsgaSsrKSB7Ci0gICAgaWYgKG9yaWdpbmFsX2hlYWRlci5Dc3JjcygpW2ldICE9IGxvZ2dlZF9o
ZWFkZXIuYXJyT2ZDU1JDc1tpXSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgfQorICBFWFBFQ1Rf
RVEob3JpZ2luYWxfaGVhZGVyLk1hcmtlcigpLCBsb2dnZWRfaGVhZGVyLm1hcmtlckJpdCk7Cisg
IEVYUEVDVF9FUShvcmlnaW5hbF9oZWFkZXIuUGF5bG9hZFR5cGUoKSwgbG9nZ2VkX2hlYWRlci5w
YXlsb2FkVHlwZSk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9oZWFkZXIuU2VxdWVuY2VOdW1iZXIo
KSwgbG9nZ2VkX2hlYWRlci5zZXF1ZW5jZU51bWJlcik7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9o
ZWFkZXIuVGltZXN0YW1wKCksIGxvZ2dlZF9oZWFkZXIudGltZXN0YW1wKTsKKyAgRVhQRUNUX0VR
KG9yaWdpbmFsX2hlYWRlci5Tc3JjKCksIGxvZ2dlZF9oZWFkZXIuc3NyYyk7CiAKLSAgaWYgKG9y
aWdpbmFsX2hlYWRlci5oZWFkZXJzX3NpemUoKSAhPSBsb2dnZWRfaGVhZGVyLmhlYWRlckxlbmd0
aCkKLSAgICByZXR1cm4gZmFsc2U7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9oZWFkZXIuaGVhZGVy
c19zaXplKCksIGxvZ2dlZF9oZWFkZXIuaGVhZGVyTGVuZ3RoKTsKIAogICAvLyBUcmFuc21pc3Np
b25PZmZzZXQgaGVhZGVyIGV4dGVuc2lvbi4KLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5IYXNFeHRl
bnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0PigpICE9Ci0gICAgICBsb2dnZWRfaGVhZGVyLmV4dGVu
c2lvbi5oYXNUcmFuc21pc3Npb25UaW1lT2Zmc2V0KQotICAgIHJldHVybiBmYWxzZTsKKyAgQVNT
RVJUX0VRKG9yaWdpbmFsX2hlYWRlci5IYXNFeHRlbnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0Pigp
LAorICAgICAgICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzVHJhbnNtaXNzaW9uVGlt
ZU9mZnNldCk7CiAgIGlmIChsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNUcmFuc21pc3Npb25U
aW1lT2Zmc2V0KSB7CiAgICAgaW50MzJfdCBvZmZzZXQ7Ci0gICAgb3JpZ2luYWxfaGVhZGVyLkdl
dEV4dGVuc2lvbjxUcmFuc21pc3Npb25PZmZzZXQ+KCZvZmZzZXQpOwotICAgIGlmIChvZmZzZXQg
IT0gbG9nZ2VkX2hlYWRlci5leHRlbnNpb24udHJhbnNtaXNzaW9uVGltZU9mZnNldCkKLSAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlRfVFJVRShvcmlnaW5hbF9oZWFkZXIuR2V0RXh0ZW5z
aW9uPFRyYW5zbWlzc2lvbk9mZnNldD4oJm9mZnNldCkpOworICAgIEVYUEVDVF9FUShvZmZzZXQs
IGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLnRyYW5zbWlzc2lvblRpbWVPZmZzZXQpOwogICB9CiAK
ICAgLy8gQWJzb2x1dGVTZW5kVGltZSBoZWFkZXIgZXh0ZW5zaW9uLgotICBpZiAob3JpZ2luYWxf
aGVhZGVyLkhhc0V4dGVuc2lvbjxBYnNvbHV0ZVNlbmRUaW1lPigpICE9Ci0gICAgICBsb2dnZWRf
aGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0ZVNlbmRUaW1lKQotICAgIHJldHVybiBmYWxzZTsK
KyAgQVNTRVJUX0VRKG9yaWdpbmFsX2hlYWRlci5IYXNFeHRlbnNpb248QWJzb2x1dGVTZW5kVGlt
ZT4oKSwKKyAgICAgICAgICAgIGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc0Fic29sdXRlU2Vu
ZFRpbWUpOwogICBpZiAobG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5kVGlt
ZSkgewogICAgIHVpbnQzMl90IHNlbmR0aW1lOwotICAgIG9yaWdpbmFsX2hlYWRlci5HZXRFeHRl
bnNpb248QWJzb2x1dGVTZW5kVGltZT4oJnNlbmR0aW1lKTsKLSAgICBpZiAoc2VuZHRpbWUgIT0g
bG9nZ2VkX2hlYWRlci5leHRlbnNpb24uYWJzb2x1dGVTZW5kVGltZSkKLSAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBBU1NFUlRfVFJVRShvcmlnaW5hbF9oZWFkZXIuR2V0RXh0ZW5zaW9uPEFic29s
dXRlU2VuZFRpbWU+KCZzZW5kdGltZSkpOworICAgIEVYUEVDVF9FUShzZW5kdGltZSwgbG9nZ2Vk
X2hlYWRlci5leHRlbnNpb24uYWJzb2x1dGVTZW5kVGltZSk7CiAgIH0KIAogICAvLyBUcmFuc3Bv
cnRTZXF1ZW5jZU51bWJlciBoZWFkZXIgZXh0ZW5zaW9uLgotICBpZiAob3JpZ2luYWxfaGVhZGVy
Lkhhc0V4dGVuc2lvbjxUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcj4oKSAhPQotICAgICAgbG9nZ2Vk
X2hlYWRlci5leHRlbnNpb24uaGFzVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpCi0gICAgcmV0dXJu
IGZhbHNlOworICBBU1NFUlRfRVEob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxUcmFuc3Bv
cnRTZXF1ZW5jZU51bWJlcj4oKSwKKyAgICAgICAgICAgIGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9u
Lmhhc1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKTsKICAgaWYgKGxvZ2dlZF9oZWFkZXIuZXh0ZW5z
aW9uLmhhc1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKSB7CiAgICAgdWludDE2X3Qgc2VxbnVtOwot
ICAgIG9yaWdpbmFsX2hlYWRlci5HZXRFeHRlbnNpb248VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI+
KCZzZXFudW0pOwotICAgIGlmIChzZXFudW0gIT0gbG9nZ2VkX2hlYWRlci5leHRlbnNpb24udHJh
bnNwb3J0U2VxdWVuY2VOdW1iZXIpCi0gICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUX1RS
VUUob3JpZ2luYWxfaGVhZGVyLkdldEV4dGVuc2lvbjxUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcj4o
JnNlcW51bSkpOworICAgIEVYUEVDVF9FUShzZXFudW0sIGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9u
LnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKTsKICAgfQogCiAgIC8vIEF1ZGlvTGV2ZWwgaGVhZGVy
IGV4dGVuc2lvbi4KLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5IYXNFeHRlbnNpb248QXVkaW9MZXZl
bD4oKSAhPQotICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzQXVkaW9MZXZlbCkKLSAg
ICByZXR1cm4gZmFsc2U7CisgIEFTU0VSVF9FUShvcmlnaW5hbF9oZWFkZXIuSGFzRXh0ZW5zaW9u
PEF1ZGlvTGV2ZWw+KCksCisgICAgICAgICAgICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNB
dWRpb0xldmVsKTsKICAgaWYgKGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc0F1ZGlvTGV2ZWwp
IHsKICAgICBib29sIHZvaWNlX2FjdGl2aXR5OwogICAgIHVpbnQ4X3QgYXVkaW9fbGV2ZWw7Ci0g
ICAgb3JpZ2luYWxfaGVhZGVyLkdldEV4dGVuc2lvbjxBdWRpb0xldmVsPigmdm9pY2VfYWN0aXZp
dHksICZhdWRpb19sZXZlbCk7Ci0gICAgaWYgKHZvaWNlX2FjdGl2aXR5ICE9IGxvZ2dlZF9oZWFk
ZXIuZXh0ZW5zaW9uLnZvaWNlQWN0aXZpdHkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KGF1ZGlvX2xldmVsICE9IGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmF1ZGlvTGV2ZWwpCi0gICAg
ICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUX1RSVUUob3JpZ2luYWxfaGVhZGVyLkdldEV4dGVu
c2lvbjxBdWRpb0xldmVsPigmdm9pY2VfYWN0aXZpdHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXVkaW9fbGV2ZWwpKTsKKyAgICBF
WFBFQ1RfRVEodm9pY2VfYWN0aXZpdHksIGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLnZvaWNlQWN0
aXZpdHkpOworICAgIEVYUEVDVF9FUShhdWRpb19sZXZlbCwgbG9nZ2VkX2hlYWRlci5leHRlbnNp
b24uYXVkaW9MZXZlbCk7CiAgIH0KIAogICAvLyBWaWRlb09yaWVudGF0aW9uIGhlYWRlciBleHRl
bnNpb24uCi0gIGlmIChvcmlnaW5hbF9oZWFkZXIuSGFzRXh0ZW5zaW9uPFZpZGVvT3JpZW50YXRp
b24+KCkgIT0KLSAgICAgIGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc1ZpZGVvUm90YXRpb24p
Ci0gICAgcmV0dXJuIGZhbHNlOworICBBU1NFUlRfRVEob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVu
c2lvbjxWaWRlb09yaWVudGF0aW9uPigpLAorICAgICAgICAgICAgbG9nZ2VkX2hlYWRlci5leHRl
bnNpb24uaGFzVmlkZW9Sb3RhdGlvbik7CiAgIGlmIChsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5o
YXNWaWRlb1JvdGF0aW9uKSB7CiAgICAgdWludDhfdCByb3RhdGlvbjsKLSAgICBvcmlnaW5hbF9o
ZWFkZXIuR2V0RXh0ZW5zaW9uPFZpZGVvT3JpZW50YXRpb24+KCZyb3RhdGlvbik7Ci0gICAgaWYg
KENvbnZlcnRDVk9CeXRlVG9WaWRlb1JvdGF0aW9uKHJvdGF0aW9uKSAhPQotICAgICAgICBsb2dn
ZWRfaGVhZGVyLmV4dGVuc2lvbi52aWRlb1JvdGF0aW9uKQotICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIEFTU0VSVF9UUlVFKG9yaWdpbmFsX2hlYWRlci5HZXRFeHRlbnNpb248VmlkZW9PcmllbnRh
dGlvbj4oJnJvdGF0aW9uKSk7CisgICAgRVhQRUNUX0VRKENvbnZlcnRDVk9CeXRlVG9WaWRlb1Jv
dGF0aW9uKHJvdGF0aW9uKSwKKyAgICAgICAgICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24u
dmlkZW9Sb3RhdGlvbik7CiAgIH0KLQotICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWZXJpZnlM
b2dnZWRSdHBQYWNrZXRJbmNvbWluZygKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2Vk
UnRwUGFja2V0SW5jb21pbmcoCiAgICAgY29uc3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyYg
b3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIGxvZ2dl
ZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRf
ZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKG9yaWdpbmFs
X2V2ZW50LmhlYWRlcl8uaGVhZGVyc19zaXplKCkgIT0gbG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXJf
bGVuZ3RoKQotICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAob3JpZ2luYWxfZXZlbnQucGFja2V0
X2xlbmd0aF8gIT0gbG9nZ2VkX2V2ZW50LnJ0cC50b3RhbF9sZW5ndGgpCi0gICAgcmV0dXJuIGZh
bHNlOwotCi0gIGlmICgob3JpZ2luYWxfZXZlbnQuaGVhZGVyXy5kYXRhKClbMF0gJiAweDIwKSAh
PSAwICYmICAvLyBoYXMgcGFkZGluZwotICAgICAgb3JpZ2luYWxfZXZlbnQucGFja2V0X2xlbmd0
aF8gLSBvcmlnaW5hbF9ldmVudC5oZWFkZXJfLmhlYWRlcnNfc2l6ZSgpICE9Ci0gICAgICAgICAg
bG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXIucGFkZGluZ0xlbmd0aCkgewotICAgIC8vIEN1cnJlbnRs
eSwgUlRDIGV2ZW50bG9nIGVuY29kZXItcGFyc2VyIGNhbiBvbmx5IG1haW50YWluIHBhZGRpbmcg
bGVuZ3RoCi0gICAgLy8gaWYgcGFja2V0IGlzIGZ1bGwgcGFkZGluZy4KLSAgICAvLyBUT0RPKHdl
YnJ0Yzo5NzMwKTogQ2hhbmdlIHRoZSBjb25kaXRpb24gdG8gc29tZXRoaW5nIGxpa2UKLSAgICAv
LyBvcmlnaW5hbF9ldmVudC5wYWRkaW5nX2xlbmd0aF8gIT0gbG9nZ2VkX2V2ZW50LnJ0cC5oZWFk
ZXIucGFkZGluZ0xlbmd0aC4KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KKyAgICBjb25zdCBMb2dn
ZWRSdHBQYWNrZXRJbmNvbWluZyYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShv
cmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkp
OworCisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5oZWFkZXIoKS5oZWFkZXJzX3NpemUoKSwK
KyAgICAgICAgICAgIGxvZ2dlZF9ldmVudC5ydHAuaGVhZGVyX2xlbmd0aCk7CisKKyAgRVhQRUNU
X0VRKG9yaWdpbmFsX2V2ZW50LnBhY2tldF9sZW5ndGgoKSwgbG9nZ2VkX2V2ZW50LnJ0cC50b3Rh
bF9sZW5ndGgpOwogCi0gIGlmICghVmVyaWZ5TG9nZ2VkUnRwSGVhZGVyKG9yaWdpbmFsX2V2ZW50
LmhlYWRlcl8sIGxvZ2dlZF9ldmVudC5ydHAuaGVhZGVyKSkKLSAgICByZXR1cm4gZmFsc2U7Cisg
IC8vIEN1cnJlbnRseSwgUlRDIGV2ZW50bG9nIGVuY29kZXItcGFyc2VyIGNhbiBvbmx5IG1haW50
YWluIHBhZGRpbmcgbGVuZ3RoCisgIC8vIGlmIHBhY2tldCBpcyBmdWxsIHBhZGRpbmcuCisgIEVY
UEVDVF9FUShvcmlnaW5hbF9ldmVudC5wYWRkaW5nX2xlbmd0aCgpLAorICAgICAgICAgICAgbG9n
Z2VkX2V2ZW50LnJ0cC5oZWFkZXIucGFkZGluZ0xlbmd0aCk7CiAKLSAgcmV0dXJuIHRydWU7Cisg
IFZlcmlmeUxvZ2dlZFJ0cEhlYWRlcihvcmlnaW5hbF9ldmVudC5oZWFkZXIoKSwgbG9nZ2VkX2V2
ZW50LnJ0cC5oZWFkZXIpOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZFJ0cFBhY2tldE91dGdvaW5n
KAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRSdHBQYWNrZXRPdXRnb2luZygKICAg
ICBjb25zdCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nJiBvcmlnaW5hbF9ldmVudCwKLSAgICBj
b25zdCBMb2dnZWRSdHBQYWNrZXRPdXRnb2luZyYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmln
aW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQot
ICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAob3JpZ2luYWxfZXZlbnQuaGVhZGVyXy5oZWFkZXJz
X3NpemUoKSAhPSBsb2dnZWRfZXZlbnQucnRwLmhlYWRlcl9sZW5ndGgpCi0gICAgcmV0dXJuIGZh
bHNlOwotCi0gIGlmIChvcmlnaW5hbF9ldmVudC5wYWNrZXRfbGVuZ3RoXyAhPSBsb2dnZWRfZXZl
bnQucnRwLnRvdGFsX2xlbmd0aCkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKChvcmlnaW5h
bF9ldmVudC5oZWFkZXJfLmRhdGEoKVswXSAmIDB4MjApICE9IDAgJiYgIC8vIGhhcyBwYWRkaW5n
Ci0gICAgICBvcmlnaW5hbF9ldmVudC5wYWNrZXRfbGVuZ3RoXyAtIG9yaWdpbmFsX2V2ZW50Lmhl
YWRlcl8uaGVhZGVyc19zaXplKCkgIT0KLSAgICAgICAgICBsb2dnZWRfZXZlbnQucnRwLmhlYWRl
ci5wYWRkaW5nTGVuZ3RoKSB7Ci0gICAgLy8gQ3VycmVudGx5LCBSVEMgZXZlbnRsb2cgZW5jb2Rl
ci1wYXJzZXIgY2FuIG9ubHkgbWFpbnRhaW4gcGFkZGluZyBsZW5ndGgKLSAgICAvLyBpZiBwYWNr
ZXQgaXMgZnVsbCBwYWRkaW5nLgotICAgIC8vIFRPRE8od2VicnRjOjk3MzApOiBDaGFuZ2UgdGhl
IGNvbmRpdGlvbiB0byBzb21ldGhpbmcgbGlrZQotICAgIC8vIG9yaWdpbmFsX2V2ZW50LnBhZGRp
bmdfbGVuZ3RoXyAhPSBsb2dnZWRfZXZlbnQucnRwLmhlYWRlci5wYWRkaW5nTGVuZ3RoLgotICAg
IHJldHVybiBmYWxzZTsKLSAgfQorICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldE91dGdvaW5nJiBs
b2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFt
cF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CisKKyAgRVhQRUNUX0VRKG9yaWdp
bmFsX2V2ZW50LmhlYWRlcigpLmhlYWRlcnNfc2l6ZSgpLAorICAgICAgICAgICAgbG9nZ2VkX2V2
ZW50LnJ0cC5oZWFkZXJfbGVuZ3RoKTsKKworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQucGFj
a2V0X2xlbmd0aCgpLCBsb2dnZWRfZXZlbnQucnRwLnRvdGFsX2xlbmd0aCk7CisKKyAgLy8gQ3Vy
cmVudGx5LCBSVEMgZXZlbnRsb2cgZW5jb2Rlci1wYXJzZXIgY2FuIG9ubHkgbWFpbnRhaW4gcGFk
ZGluZyBsZW5ndGgKKyAgLy8gaWYgcGFja2V0IGlzIGZ1bGwgcGFkZGluZy4KKyAgRVhQRUNUX0VR
KG9yaWdpbmFsX2V2ZW50LnBhZGRpbmdfbGVuZ3RoKCksCisgICAgICAgICAgICBsb2dnZWRfZXZl
bnQucnRwLmhlYWRlci5wYWRkaW5nTGVuZ3RoKTsKIAogICAvLyBUT0RPKHRlcmVsaXVzKTogUHJv
YmUgY2x1c3RlciBJRCBpc24ndCBwYXJzZWQsIHVzZWQgb3IgdGVzdGVkLiBVbmxlc3MKICAgLy8g
c29tZW9uZSBoYXMgYSBzdHJvbmcgcmVhc29uIHRvIGtlZXAgaXQsIGl0J2xsIGJlIHJlbW92ZWQu
CiAKLSAgaWYgKCFWZXJpZnlMb2dnZWRSdHBIZWFkZXIob3JpZ2luYWxfZXZlbnQuaGVhZGVyXywg
bG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXIpKQotICAgIHJldHVybiBmYWxzZTsKLQotICByZXR1cm4g
dHJ1ZTsKKyAgVmVyaWZ5TG9nZ2VkUnRwSGVhZGVyKG9yaWdpbmFsX2V2ZW50LmhlYWRlcigpLCBs
b2dnZWRfZXZlbnQucnRwLmhlYWRlcik7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkUnRjcFBhY2tl
dEluY29taW5nKAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRSdGNwUGFja2V0SW5j
b21pbmcoCiAgICAgY29uc3QgUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmcmIG9yaWdpbmFsX2V2
ZW50LAotICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNrZXRJbmNvbWluZyYgbG9nZ2VkX2V2ZW50KSB7
Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2df
dGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAob3JpZ2luYWxfZXZlbnQucGFj
a2V0Xy5zaXplKCkgIT0gbG9nZ2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEuc2l6ZSgpKQotICAgIHJl
dHVybiBmYWxzZTsKLSAgaWYgKG1lbWNtcChvcmlnaW5hbF9ldmVudC5wYWNrZXRfLmRhdGEoKSwg
bG9nZ2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEuZGF0YSgpLAotICAgICAgICAgICAgIG9yaWdpbmFs
X2V2ZW50LnBhY2tldF8uc2l6ZSgpKSAhPSAwKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0g
IHJldHVybiB0cnVlOworICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNrZXRJbmNvbWluZyYgbG9nZ2Vk
X2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMo
KSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOworCisgIEFTU0VSVF9FUShvcmlnaW5hbF9l
dmVudC5wYWNrZXQoKS5zaXplKCksIGxvZ2dlZF9ldmVudC5ydGNwLnJhd19kYXRhLnNpemUoKSk7
CisgIEVYUEVDVF9FUSgKKyAgICAgIG1lbWNtcChvcmlnaW5hbF9ldmVudC5wYWNrZXQoKS5kYXRh
KCksIGxvZ2dlZF9ldmVudC5ydGNwLnJhd19kYXRhLmRhdGEoKSwKKyAgICAgICAgICAgICBvcmln
aW5hbF9ldmVudC5wYWNrZXQoKS5zaXplKCkpLAorICAgICAgMCk7CiB9CiAKLWJvb2wgVmVyaWZ5
TG9nZ2VkUnRjcFBhY2tldE91dGdvaW5nKAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dn
ZWRSdGNwUGFja2V0T3V0Z29pbmcoCiAgICAgY29uc3QgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29p
bmcmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZyYg
bG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxv
Z2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAob3Jp
Z2luYWxfZXZlbnQucGFja2V0Xy5zaXplKCkgIT0gbG9nZ2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEu
c2l6ZSgpKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG1lbWNtcChvcmlnaW5hbF9ldmVudC5w
YWNrZXRfLmRhdGEoKSwgbG9nZ2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEuZGF0YSgpLAotICAgICAg
ICAgICAgIG9yaWdpbmFsX2V2ZW50LnBhY2tldF8uc2l6ZSgpKSAhPSAwKSB7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZyYgbG9nZ2VkX2V2ZW50
KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9n
Z2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOworCisgIEFTU0VSVF9FUShvcmlnaW5hbF9ldmVudC5w
YWNrZXQoKS5zaXplKCksIGxvZ2dlZF9ldmVudC5ydGNwLnJhd19kYXRhLnNpemUoKSk7CisgIEVY
UEVDVF9FUSgKKyAgICAgIG1lbWNtcChvcmlnaW5hbF9ldmVudC5wYWNrZXQoKS5kYXRhKCksIGxv
Z2dlZF9ldmVudC5ydGNwLnJhd19kYXRhLmRhdGEoKSwKKyAgICAgICAgICAgICBvcmlnaW5hbF9l
dmVudC5wYWNrZXQoKS5zaXplKCkpLAorICAgICAgMCk7Cit9CisKK3ZvaWQgRXZlbnRWZXJpZmll
cjo6VmVyaWZ5TG9nZ2VkU3RhcnRFdmVudCgKKyAgICBpbnQ2NF90IHN0YXJ0X3RpbWVfdXMsCisg
ICAgaW50NjRfdCB1dGNfc3RhcnRfdGltZV91cywKKyAgICBjb25zdCBMb2dnZWRTdGFydEV2ZW50
JiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKHN0YXJ0X3RpbWVfdXMgLyAxMDAw
LCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CisgIGlmIChlbmNvZGluZ190eXBlXyA9PSBS
dGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpOZXdGb3JtYXQpIHsKKyAgICBFWFBFQ1RfRVEodXRj
X3N0YXJ0X3RpbWVfdXMgLyAxMDAwLCBsb2dnZWRfZXZlbnQudXRjX3N0YXJ0X3RpbWVfbXMpOwog
ICB9Ci0gIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZFN0YXJ0RXZlbnQoaW50
NjRfdCBzdGFydF90aW1lX3VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExv
Z2dlZFN0YXJ0RXZlbnQmIGxvZ2dlZF9ldmVudCkgewotICBpZiAoc3RhcnRfdGltZV91cyAhPSBs
b2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0
cnVlOwordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRTdG9wRXZlbnQoCisgICAgaW50
NjRfdCBzdG9wX3RpbWVfdXMsCisgICAgY29uc3QgTG9nZ2VkU3RvcEV2ZW50JiBsb2dnZWRfZXZl
bnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKHN0b3BfdGltZV91cyAvIDEwMDAsIGxvZ2dlZF9ldmVu
dC5sb2dfdGltZV9tcygpKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRTdG9wRXZlbnQoaW50NjRf
dCBzdG9wX3RpbWVfdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRT
dG9wRXZlbnQmIGxvZ2dlZF9ldmVudCkgewotICBpZiAoc3RvcF90aW1lX3VzICE9IGxvZ2dlZF9l
dmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Cit2
b2lkIFZlcmlmeUxvZ2dlZFN0cmVhbUNvbmZpZyhjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZyYg
b3JpZ2luYWxfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
bG9nOjpTdHJlYW1Db25maWcmIGxvZ2dlZF9jb25maWcpIHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFs
X2NvbmZpZy5sb2NhbF9zc3JjLCBsb2dnZWRfY29uZmlnLmxvY2FsX3NzcmMpOworICBFWFBFQ1Rf
RVEob3JpZ2luYWxfY29uZmlnLnJlbW90ZV9zc3JjLCBsb2dnZWRfY29uZmlnLnJlbW90ZV9zc3Jj
KTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2NvbmZpZy5ydHhfc3NyYywgbG9nZ2VkX2NvbmZpZy5y
dHhfc3NyYyk7CisKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2NvbmZpZy5ydHBfZXh0ZW5zaW9ucy5z
aXplKCksCisgICAgICAgICAgICBsb2dnZWRfY29uZmlnLnJ0cF9leHRlbnNpb25zLnNpemUoKSk7
CisgIHNpemVfdCByZWNvZ25pemVkX2V4dGVuc2lvbnMgPSAwOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGtNYXhOdW1FeHRlbnNpb25zOyBpKyspIHsKKyAgICBhdXRvIG9yaWdpbmFsX2lkID0K
KyAgICAgICAgR2V0RXh0ZW5zaW9uSWQob3JpZ2luYWxfY29uZmlnLnJ0cF9leHRlbnNpb25zLCBr
RXh0ZW5zaW9uc1tpXS5uYW1lKTsKKyAgICBhdXRvIGxvZ2dlZF9pZCA9CisgICAgICAgIEdldEV4
dGVuc2lvbklkKGxvZ2dlZF9jb25maWcucnRwX2V4dGVuc2lvbnMsIGtFeHRlbnNpb25zW2ldLm5h
bWUpOworICAgIEVYUEVDVF9FUShvcmlnaW5hbF9pZCwgbG9nZ2VkX2lkKQorICAgICAgICA8PCAi
SURzIGZvciAiIDw8IGtFeHRlbnNpb25zW2ldLm5hbWUgPDwgIiBkb24ndCBtYXRjaC4gT3JpZ2lu
YWwgSUQgIgorICAgICAgICA8PCBvcmlnaW5hbF9pZC52YWx1ZV9vcigtMSkgPDwgIi4gUGFyc2Vk
IElEICIgPDwgbG9nZ2VkX2lkLnZhbHVlX29yKC0xKQorICAgICAgICA8PCAiLiI7CisgICAgaWYg
KG9yaWdpbmFsX2lkKSB7CisgICAgICByZWNvZ25pemVkX2V4dGVuc2lvbnMrKzsKKyAgICB9Cisg
IH0KKyAgRVhQRUNUX0VRKHJlY29nbml6ZWRfZXh0ZW5zaW9ucywgb3JpZ2luYWxfY29uZmlnLnJ0
cF9leHRlbnNpb25zLnNpemUoKSk7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkQXVkaW9SZWN2Q29u
ZmlnKAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRBdWRpb1JlY3ZDb25maWcoCiAg
ICAgY29uc3QgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWcmIG9yaWdpbmFsX2V2ZW50
LAotICAgIGNvbnN0IExvZ2dlZEF1ZGlvUmVjdkNvbmZpZyYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlm
IChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91
cygpKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKCpvcmlnaW5hbF9ldmVudC5jb25maWdfICE9
IGxvZ2dlZF9ldmVudC5jb25maWcpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsK
KyAgICBjb25zdCBMb2dnZWRBdWRpb1JlY3ZDb25maWcmIGxvZ2dlZF9ldmVudCkgY29uc3Qgewor
ICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX21zKCksIGxvZ2dlZF9ldmVudC5s
b2dfdGltZV9tcygpKTsKKyAgVmVyaWZ5TG9nZ2VkU3RyZWFtQ29uZmlnKG9yaWdpbmFsX2V2ZW50
LmNvbmZpZygpLCBsb2dnZWRfZXZlbnQuY29uZmlnKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRB
dWRpb1NlbmRDb25maWcoCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZEF1ZGlvU2Vu
ZENvbmZpZygKICAgICBjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyYgb3JpZ2lu
YWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQXVkaW9TZW5kQ29uZmlnJiBsb2dnZWRfZXZlbnQp
IHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50Lmxv
Z190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoKm9yaWdpbmFsX2V2ZW50LmNv
bmZpZ18gIT0gbG9nZ2VkX2V2ZW50LmNvbmZpZykKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVy
biB0cnVlOworICAgIGNvbnN0IExvZ2dlZEF1ZGlvU2VuZENvbmZpZyYgbG9nZ2VkX2V2ZW50KSBj
b25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2Vk
X2V2ZW50LmxvZ190aW1lX21zKCkpOworICBWZXJpZnlMb2dnZWRTdHJlYW1Db25maWcob3JpZ2lu
YWxfZXZlbnQuY29uZmlnKCksIGxvZ2dlZF9ldmVudC5jb25maWcpOwogfQogCi1ib29sIFZlcmlm
eUxvZ2dlZFZpZGVvUmVjdkNvbmZpZygKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2Vk
VmlkZW9SZWN2Q29uZmlnKAogICAgIGNvbnN0IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29u
ZmlnJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRWaWRlb1JlY3ZDb25maWcmIGxv
Z2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dn
ZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmICgqb3JpZ2lu
YWxfZXZlbnQuY29uZmlnXyAhPSBsb2dnZWRfZXZlbnQuY29uZmlnKQotICAgIHJldHVybiBmYWxz
ZTsKLSAgcmV0dXJuIHRydWU7CisgICAgY29uc3QgTG9nZ2VkVmlkZW9SZWN2Q29uZmlnJiBsb2dn
ZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9t
cygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CisgIFZlcmlmeUxvZ2dlZFN0cmVhbUNv
bmZpZyhvcmlnaW5hbF9ldmVudC5jb25maWcoKSwgbG9nZ2VkX2V2ZW50LmNvbmZpZyk7CiB9CiAK
LWJvb2wgVmVyaWZ5TG9nZ2VkVmlkZW9TZW5kQ29uZmlnKAordm9pZCBFdmVudFZlcmlmaWVyOjpW
ZXJpZnlMb2dnZWRWaWRlb1NlbmRDb25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRWaWRlb1NlbmRT
dHJlYW1Db25maWcmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZFZpZGVvU2VuZENv
bmZpZyYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNf
ICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKKyAgICBj
b25zdCBMb2dnZWRWaWRlb1NlbmRDb25maWcmIGxvZ2dlZF9ldmVudCkgY29uc3QgeworICBFWFBF
Q1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX21zKCksIGxvZ2dlZF9ldmVudC5sb2dfdGlt
ZV9tcygpKTsKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IEluIHRoZSBwYXN0LCB3ZSBhbGxvd2VkIHN0
b3JpbmcgbXVsdGlwbGUgUnRjU3RyZWFtQ29uZmlncwogICAvLyBpbiB0aGUgc2FtZSBSdGNFdmVu
dFZpZGVvU2VuZFN0cmVhbUNvbmZpZy4gTG9vayBpbnRvIHdoZXRoZXIgd2Ugc2hvdWxkIGRyb3AK
ICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgaW4gdGhlIHBhcnNlci4KLSAgaWYgKGxvZ2dl
ZF9ldmVudC5jb25maWdzLnNpemUoKSAhPSAxKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKCpv
cmlnaW5hbF9ldmVudC5jb25maWdfICE9IGxvZ2dlZF9ldmVudC5jb25maWdzWzBdKQotICAgIHJl
dHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7CisgIEFTU0VSVF9FUShsb2dnZWRfZXZlbnQuY29u
Zmlncy5zaXplKCksIDF1KTsKKyAgVmVyaWZ5TG9nZ2VkU3RyZWFtQ29uZmlnKG9yaWdpbmFsX2V2
ZW50LmNvbmZpZygpLCBsb2dnZWRfZXZlbnQuY29uZmlnc1swXSk7CiB9CiAKIH0gIC8vIG5hbWVz
cGFjZSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdF9oZWxw
ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0X2hlbHBlci5oCmluZGV4IGY0ZDE4
NzY1Mjg3YmU0ZGMxNTY2MzNlYzNiYjQ4ZDNjODkyN2Q1MjIuLjgxNzYwYjc1NTUzNjA4YWZmYWFh
ZTM2MGQ4MmFlMGI5MDhmMGU4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3Vu
aXR0ZXN0X2hlbHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0X2hlbHBl
ci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2
ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgiCiAjaW5jbHVkZSAi
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1f
Y29uZmlnLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2df
cGFyc2VyX25ldy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFt
X2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0
L3JlY2VpdmVyX3JlcG9ydC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcGFja2V0L3JlcG9ydF9ibG9jay5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfcGFja2V0L3NlbmRlcl9yZXBvcnQuaCIKQEAgLTcwLDIxICs3MSwzMiBAQCBjbGFz
cyBFdmVudEdlbmVyYXRvciB7CiAKICAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRjcFBhY2tl
dE91dGdvaW5nPiBOZXdSdGNwUGFja2V0T3V0Z29pbmcoKTsKIAorICAvLyB8YWxsX2NvbmZpZ3Vy
ZWRfZXh0c3wgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBSVFAgcGFja2V0IGV4aGliaXRzIGFsbAor
ICAvLyBjb25maWd1cmVkIGV4dGVuc2lvbnMsIG9yIGEgcmFuZG9tIHN1YnNldCB0aGVyZW9mLgog
ICB2b2lkIFJhbmRvbWl6ZVJ0cFBhY2tldChzaXplX3QgcGF5bG9hZF9zaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgcGFkZGluZ19zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBzc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBS
dHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIFJ0cFBhY2tldCogcnRwX3BhY2tldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
IFJ0cFBhY2tldCogcnRwX3BhY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBh
bGxfY29uZmlndXJlZF9leHRzKTsKIAorICAvLyB8YWxsX2NvbmZpZ3VyZWRfZXh0c3wgZGV0ZXJt
aW5lcyB3aGV0aGVyIHRoZSBSVFAgcGFja2V0IGV4aGliaXRzIGFsbAorICAvLyBjb25maWd1cmVk
IGV4dGVuc2lvbnMsIG9yIGEgcmFuZG9tIHN1YnNldCB0aGVyZW9mLgogICBzdGQ6OnVuaXF1ZV9w
dHI8UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZz4gTmV3UnRwUGFja2V0SW5jb21pbmcoCiAgICAg
ICB1aW50MzJfdCBzc3JjLAotICAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBleHRl
bnNpb25fbWFwKTsKKyAgICAgIGNvbnN0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgZXh0ZW5zaW9u
X21hcCwKKyAgICAgIGJvb2wgYWxsX2NvbmZpZ3VyZWRfZXh0cyA9IHRydWUpOwogCisgIC8vIHxh
bGxfY29uZmlndXJlZF9leHRzfCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIFJUUCBwYWNrZXQgZXho
aWJpdHMgYWxsCisgIC8vIGNvbmZpZ3VyZWQgZXh0ZW5zaW9ucywgb3IgYSByYW5kb20gc3Vic2V0
IHRoZXJlb2YuCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nPiBO
ZXdSdHBQYWNrZXRPdXRnb2luZygKICAgICAgIHVpbnQzMl90IHNzcmMsCi0gICAgICBjb25zdCBS
dHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXApOworICAgICAgY29uc3QgUnRwSGVh
ZGVyRXh0ZW5zaW9uTWFwJiBleHRlbnNpb25fbWFwLAorICAgICAgYm9vbCBhbGxfY29uZmlndXJl
ZF9leHRzID0gdHJ1ZSk7CiAKLSAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwIE5ld1J0cEhlYWRlckV4
dGVuc2lvbk1hcCgpOworICAvLyB8Y29uZmlndXJlX2FsbHwgZGV0ZXJtaW5lcyB3aGV0aGVyIGFs
bCBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBhcmUgY29uZmlndXJlZCwKKyAgLy8gb3IgYSByYW5kb20g
c3Vic2V0LgorICBSdHBIZWFkZXJFeHRlbnNpb25NYXAgTmV3UnRwSGVhZGVyRXh0ZW5zaW9uTWFw
KGJvb2wgY29uZmlndXJlX2FsbCA9IGZhbHNlKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc+IE5ld0F1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZygK
ICAgICAgIHVpbnQzMl90IHNzcmMsCkBAIC0xMTAsODAgKzEyMiwxMTEgQEAgY2xhc3MgRXZlbnRH
ZW5lcmF0b3IgewogICBSYW5kb20gcHJuZ187CiB9OwogCi1ib29sIFZlcmlmeUxvZ2dlZEFsclN0
YXRlRXZlbnQoY29uc3QgUnRjRXZlbnRBbHJTdGF0ZSYgb3JpZ2luYWxfZXZlbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9nZ2VkQWxyU3RhdGVFdmVudCYgbG9nZ2Vk
X2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRBdWRpb1BsYXlvdXRFdmVudChjb25zdCBSdGNF
dmVudEF1ZGlvUGxheW91dCYgb3JpZ2luYWxfZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50JiBsb2dnZWRfZXZlbnQp
OwotCi1ib29sIFZlcmlmeUxvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCgKLSAgICBj
b25zdCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24mIG9yaWdpbmFsX2V2ZW50LAotICAg
IGNvbnN0IExvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCYgbG9nZ2VkX2V2ZW50KTsK
LQotYm9vbCBWZXJpZnlMb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRlKAotICAgIGNvbnN0IFJ0Y0V2
ZW50QndlVXBkYXRlRGVsYXlCYXNlZCYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2Vk
QndlRGVsYXlCYXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRC
d2VMb3NzQmFzZWRVcGRhdGUoCi0gICAgY29uc3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQm
IG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSYgbG9n
Z2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZl
bnQoCi0gICAgY29uc3QgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkJiBvcmlnaW5hbF9ldmVu
dCwKLSAgICBjb25zdCBMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQmIGxvZ2dlZF9l
dmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQoCi0gICAgY29u
c3QgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0
IExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50JiBsb2dnZWRfZXZlbnQpOwotCi1ib29sIFZlcmlm
eUxvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50KAotICAgIGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1
bHRTdWNjZXNzJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRCd2VQcm9iZVN1Y2Nl
c3NFdmVudCYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnKAotICAgIGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgb3Jp
Z2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgbG9n
Z2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQoCi0g
ICAgY29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyJiBvcmlnaW5hbF9ldmVudCwKLSAgICBj
b25zdCBMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wg
VmVyaWZ5TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcoCi0gICAgY29uc3QgUnRjRXZlbnRSdHBQYWNr
ZXRJbmNvbWluZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0SW5j
b21pbmcmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0T3V0Z29p
bmcoCi0gICAgY29uc3QgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZyYgb3JpZ2luYWxfZXZlbnQs
Ci0gICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcmIGxvZ2dlZF9ldmVudCk7Ci0KLWJv
b2wgVmVyaWZ5TG9nZ2VkUnRjcFBhY2tldEluY29taW5nKAotICAgIGNvbnN0IFJ0Y0V2ZW50UnRj
cFBhY2tldEluY29taW5nJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRSdGNwUGFj
a2V0SW5jb21pbmcmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkUnRjcFBhY2tl
dE91dGdvaW5nKAotICAgIGNvbnN0IFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdvaW5nJiBvcmlnaW5h
bF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmcmIGxvZ2dlZF9ldmVu
dCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkU3RhcnRFdmVudChpbnQ2NF90IHN0YXJ0X3RpbWVfdXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9nZ2VkU3RhcnRFdmVudCYgbG9n
Z2VkX2V2ZW50KTsKLWJvb2wgVmVyaWZ5TG9nZ2VkU3RvcEV2ZW50KGludDY0X3Qgc3RvcF90aW1l
X3VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9nZ2VkU3RvcEV2ZW50JiBs
b2dnZWRfZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZEF1ZGlvUmVjdkNvbmZpZygKLSAgICBj
b25zdCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCi0g
ICAgY29uc3QgTG9nZ2VkQXVkaW9SZWN2Q29uZmlnJiBsb2dnZWRfZXZlbnQpOwotCi1ib29sIFZl
cmlmeUxvZ2dlZEF1ZGlvU2VuZENvbmZpZygKLSAgICBjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0
cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQXVkaW9TZW5kQ29u
ZmlnJiBsb2dnZWRfZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZFZpZGVvUmVjdkNvbmZpZygK
LSAgICBjb25zdCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZl
bnQsCi0gICAgY29uc3QgTG9nZ2VkVmlkZW9SZWN2Q29uZmlnJiBsb2dnZWRfZXZlbnQpOworY2xh
c3MgRXZlbnRWZXJpZmllciB7CisgcHVibGljOgorICBleHBsaWNpdCBFdmVudFZlcmlmaWVyKFJ0
Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGUgZW5jb2RpbmdfdHlwZSkKKyAgICAgIDogZW5jb2Rpbmdf
dHlwZV8oZW5jb2RpbmdfdHlwZSkge30KKworICB2b2lkIFZlcmlmeUxvZ2dlZEFsclN0YXRlRXZl
bnQoY29uc3QgUnRjRXZlbnRBbHJTdGF0ZSYgb3JpZ2luYWxfZXZlbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRBbHJTdGF0ZUV2ZW50JiBsb2dnZWRfZXZl
bnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5TG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQoCisgICAg
ICBjb25zdCBSdGNFdmVudEF1ZGlvUGxheW91dCYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25z
dCBMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCYgbG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lk
IFZlcmlmeUxvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCgKKyAgICAgIGNvbnN0IFJ0
Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25z
dCBMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Q7
CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRlKAorICAgICAgY29uc3Qg
UnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0
IExvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9p
ZCBWZXJpZnlMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUoCisgICAgICBjb25zdCBSdGNFdmVudEJ3
ZVVwZGF0ZUxvc3NCYXNlZCYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRCd2VM
b3NzQmFzZWRVcGRhdGUmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dn
ZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQoCisgICAgICBjb25zdCBSdGNFdmVudFByb2Jl
Q2x1c3RlckNyZWF0ZWQmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9nZ2VkQndlUHJv
YmVDbHVzdGVyQ3JlYXRlZEV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVy
aWZ5TG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQoCisgICAgICBjb25zdCBSdGNFdmVudFByb2Jl
UmVzdWx0RmFpbHVyZSYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRCd2VQcm9i
ZUZhaWx1cmVFdmVudCYgbG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dl
ZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50KAorICAgICAgY29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdFN1
Y2Nlc3MmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9nZ2VkQndlUHJvYmVTdWNjZXNz
RXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnKAorICAgICAgY29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29u
ZmlnJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJD
b25maWcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRJY2VDYW5k
aWRhdGVQYWlyRXZlbnQoCisgICAgICBjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXImIG9y
aWdpbmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50JiBs
b2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0SW5jb21p
bmcoCisgICAgICBjb25zdCBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nJiBvcmlnaW5hbF9ldmVu
dCwKKyAgICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBsb2dnZWRfZXZlbnQpIGNv
bnN0OworCisgIHZvaWQgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcoCisgICAgICBjb25z
dCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0
IExvZ2dlZFJ0cFBhY2tldE91dGdvaW5nJiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBFdmVudFR5cGUsIHR5cGVuYW1lIFBhcnNlZFR5cGU+CisgIHZvaWQgVmVy
aWZ5TG9nZ2VkUnRwUGFja2V0KGNvbnN0IEV2ZW50VHlwZSYgb3JpZ2luYWxfZXZlbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhcnNlZFR5cGUmIGxvZ2dlZF9ldmVudCkg
eworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFBhcnNlZFR5cGUpID09IDAsCisgICAgICAgICAg
ICAgICAgICAiWW91IGhhdmUgdG8gdXNlIG9uZSBvZiB0aGUgdHdvIGRlZmluZWQgdGVtcGxhdGUg
IgorICAgICAgICAgICAgICAgICAgInNwZWNpYWxpemF0aW9ucyBvZiBWZXJpZnlMb2dnZWRSdHBQ
YWNrZXQiKTsKKyAgfQorCisgIHRlbXBsYXRlIDw+CisgIHZvaWQgVmVyaWZ5TG9nZ2VkUnRwUGFj
a2V0KGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcmIG9yaWdpbmFsX2V2ZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyYg
bG9nZ2VkX2V2ZW50KSB7CisgICAgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcob3JpZ2lu
YWxfZXZlbnQsIGxvZ2dlZF9ldmVudCk7CisgIH0KKworICB0ZW1wbGF0ZSA8PgorICB2b2lkIFZl
cmlmeUxvZ2dlZFJ0cFBhY2tldChjb25zdCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nJiBvcmln
aW5hbF9ldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9nZ2VkUnRw
UGFja2V0T3V0Z29pbmcmIGxvZ2dlZF9ldmVudCkgeworICAgIFZlcmlmeUxvZ2dlZFJ0cFBhY2tl
dE91dGdvaW5nKG9yaWdpbmFsX2V2ZW50LCBsb2dnZWRfZXZlbnQpOworICB9CisKKyAgdm9pZCBW
ZXJpZnlMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcoCisgICAgICBjb25zdCBSdGNFdmVudFJ0Y3BQ
YWNrZXRJbmNvbWluZyYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRSdGNwUGFj
a2V0SW5jb21pbmcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRS
dGNwUGFja2V0T3V0Z29pbmcoCisgICAgICBjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2lu
ZyYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmcm
IGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRTdGFydEV2ZW50KGlu
dDY0X3Qgc3RhcnRfdGltZV91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgdXRjX3N0YXJ0X3RpbWVfdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBMb2dnZWRTdGFydEV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0OworICB2b2lkIFZlcmlmeUxv
Z2dlZFN0b3BFdmVudChpbnQ2NF90IHN0b3BfdGltZV91cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTG9nZ2VkU3RvcEV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisg
IHZvaWQgVmVyaWZ5TG9nZ2VkQXVkaW9SZWN2Q29uZmlnKAorICAgICAgY29uc3QgUnRjRXZlbnRB
dWRpb1JlY2VpdmVTdHJlYW1Db25maWcmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9n
Z2VkQXVkaW9SZWN2Q29uZmlnJiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5
TG9nZ2VkQXVkaW9TZW5kQ29uZmlnKAorICAgICAgY29uc3QgUnRjRXZlbnRBdWRpb1NlbmRTdHJl
YW1Db25maWcmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9nZ2VkQXVkaW9TZW5kQ29u
ZmlnJiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5TG9nZ2VkVmlkZW9SZWN2
Q29uZmlnKAorICAgICAgY29uc3QgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcmIG9y
aWdpbmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9nZ2VkVmlkZW9SZWN2Q29uZmlnJiBsb2dnZWRf
ZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5TG9nZ2VkVmlkZW9TZW5kQ29uZmlnKAorICAg
ICAgY29uc3QgUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWcmIG9yaWdpbmFsX2V2ZW50LAor
ICAgICAgY29uc3QgTG9nZ2VkVmlkZW9TZW5kQ29uZmlnJiBsb2dnZWRfZXZlbnQpIGNvbnN0Owog
Ci1ib29sIFZlcmlmeUxvZ2dlZFZpZGVvU2VuZENvbmZpZygKLSAgICBjb25zdCBSdGNFdmVudFZp
ZGVvU2VuZFN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkVmlk
ZW9TZW5kQ29uZmlnJiBsb2dnZWRfZXZlbnQpOworIHByaXZhdGU6CisgIFJ0Y0V2ZW50TG9nOjpF
bmNvZGluZ1R5cGUgZW5jb2RpbmdfdHlwZV87Cit9OwogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19zdHJlYW1fY29u
ZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvcnRjX3N0cmVhbV9jb25maWcuaAppbmRleCBkOTVjODM1OWVjZTgyOWY3
MDUyN2JhNDE4Y2IyMzQ4YzllNTc2ZTg4Li5hOWRhNDgxNGU2YjM4ODQ4MTAyMmJhZmM0YjVhYWI3
ZjhkNDk0ZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX3N0cmVhbV9jb25maWcuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvcnRjX3N0cmVhbV9jb25maWcuaApAQCAtMTEsMTIgKzExLDEyIEBACiAjaWZuZGVmIExP
R0dJTkdfUlRDX0VWRU5UX0xPR19SVENfU1RSRUFNX0NPTkZJR19IXwogI2RlZmluZSBMT0dHSU5H
X1JUQ19FVkVOVF9MT0dfUlRDX1NUUkVBTV9DT05GSUdfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkv
cnRwX2hlYWRlcnMuaCIKICNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgotI2luY2x1ZGUg
ImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogbmFtZXNwYWNlIHJ0Y2xvZyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL0JVSUxELmduCmluZGV4IDg1OGIyNzJm
NTU4MGRjMmE0YjE2ZWZmZjM3ZDQwODdiNGNlNmVjMTguLmI2Zjk4YzY3YjcyNzgyMjdkMTdjNjY3
NjQ2NGQ5ZjgyMTM2OWUzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL0JVSUxELmduCkBAIC00Miw2ICs0Miw3IEBAIHJ0
Y19zb3VyY2Vfc2V0KCJydGNfaDI2NF9wcm9maWxlX2lkIikgewogICAgICIuLjp3ZWJydGNfY29t
bW9uIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9
CkBAIC0xMzYsNyArMTM3LDkgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfbWVkaWFfYmFzZSIp
IHsKICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3Npbmdfc3Rh
dGlzdGljcyIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAiLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIs
CiAgICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3QiLAorICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiAKQEAgLTE1OSw2ICsxNjIsNTIgQEAgcnRj
X3N0YXRpY19saWJyYXJ5KCJydGNfY29uc3RhbnRzIikgewogICBdCiB9CiAKK3J0Y19zdGF0aWNf
bGlicmFyeSgicnRjX3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIiKSB7CisgIHZpc2liaWxpdHkg
PSBbICIqIiBdCisgIGRlZmluZXMgPSBbXQorICBsaWJzID0gW10KKyAgc291cmNlcyA9IFsKKyAg
ICAiZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIuY2MiLAorICAgICJlbmdpbmUvc2lt
dWxjYXN0X2VuY29kZXJfYWRhcHRlci5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9hcGkv
dmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uIiwKKyAgICAiLi4vYXBpL3ZpZGVvOnZpZGVv
X2ZyYW1lX2k0MjAiLAorICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGki
LAorICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAor
ICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCisgICAg
Ii4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVk
IiwKKyAgICAiLi4vcnRjX2Jhc2U6c2VxdWVuY2VkX3Rhc2tfY2hlY2tlciIsCisgICAgIi4uL3N5
c3RlbV93cmFwcGVycyIsCisgICAgIi4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCisg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgICAi
Ly90aGlyZF9wYXJ0eS9saWJ5dXYiLAorICBdCisgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAm
JiBpc19jbGFuZykgeworICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0g
Q2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KKyAgICBzdXBwcmVzc2VkX2NvbmZp
Z3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRfY29uc3RydWN0cyIgXQorICB9
Cit9CisKK3J0Y19zdGF0aWNfbGlicmFyeSgicnRjX3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94
eSIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgZGVmaW5lcyA9IFtdCisgIGxpYnMgPSBb
XQorICBzb3VyY2VzID0gWworICAgICJlbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5
LmNjIiwKKyAgICAiZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eS5oIiwKKyAgXQor
ICBkZXBzID0gWworICAgICI6cnRjX3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIiLAorICAgICIu
Li9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAorICBdCisgIGlmICghYnVpbGRf
d2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgeworICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJv
bSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KKyAgICBz
dXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRfY29u
c3RydWN0cyIgXQorICB9Cit9CisKIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2ludGVybmFsX3Zp
ZGVvX2NvZGVjcyIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgYWxsb3dfcG9pc29uID0g
WyAic29mdHdhcmVfdmlkZW9fY29kZWNzIiBdCkBAIC0xNjYsOCArMjE1LDkgQEAgcnRjX3N0YXRp
Y19saWJyYXJ5KCJydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIikgewogICBsaWJzID0gW10KICAg
ZGVwcyA9IFsKICAgICAiOnJ0Y19oMjY0X3Byb2ZpbGVfaWQiLAorICAgICI6cnRjX3NpbXVsY2Fz
dF9lbmNvZGVyX2FkYXB0ZXIiLAorICAgICI6cnRjX3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94
eSIsCiAgICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGVjX2ludGVyZmFjZSIs
Ci0gICAgIi4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KICAgc291cmNlcyA9IFsKQEAgLTE4Myw5
ICsyMzMsOSBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3Mi
KSB7CiAgICAgImVuZ2luZS9zY29wZWR2aWRlb2RlY29kZXIuaCIsCiAgICAgImVuZ2luZS9zY29w
ZWR2aWRlb2VuY29kZXIuY2MiLAogICAgICJlbmdpbmUvc2NvcGVkdmlkZW9lbmNvZGVyLmgiLAot
ICAgICJlbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5jYyIsCi0gICAgImVuZ2luZS9z
aW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmgiLAotICAgICJlbmdpbmUvdnA4X2VuY29kZXJfc2lt
dWxjYXN0X3Byb3h5LmNjIiwKKworICAgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvNzkyNSk6IHN0
b3AgZXhwb3J0aW5nIHRoaXMgaGVhZGVyIG9uY2UgZG93bnN0cmVhbQorICAgICMgdGFyZ2V0cyBk
ZXBlbmQgb24gOnJ0Y192cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkgZGlyZWN0bHkuCiAgICAg
ImVuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuaCIsCiAgICAgImVuZ2luZS93ZWJy
dGN2aWRlb2RlY29kZXJmYWN0b3J5LmgiLAogICAgICJlbmdpbmUvd2VicnRjdmlkZW9lbmNvZGVy
ZmFjdG9yeS5oIiwKQEAgLTIwMiwyNCArMjUyLDIwIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRj
X2ludGVybmFsX3ZpZGVvX2NvZGVjcyIpIHsKICAgZGVwcyArPSBbCiAgICAgIjpydGNfY29uc3Rh
bnRzIiwKICAgICAiOnJ0Y19tZWRpYV9iYXNlIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAg
ICAgIi4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRpb24iLAotICAgICIuLi9hcGkv
dmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCisgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIs
CiAgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6cnRjX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXJz
IiwKICAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAiLi4v
Y2FsbDpjYWxsX2ludGVyZmFjZXMiLAogICAgICIuLi9jYWxsOnZpZGVvX3N0cmVhbV9hcGkiLAot
ICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAgICAg
Ii4uL21vZHVsZXMvdmlkZW9fY29kaW5nOndlYnJ0Y19oMjY0IiwKICAgICAiLi4vbW9kdWxlcy92
aWRlb19jb2Rpbmc6d2VicnRjX211bHRpcGxleCIsCiAgICAgIi4uL21vZHVsZXMvdmlkZW9fY29k
aW5nOndlYnJ0Y192cDgiLAogICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp3ZWJydGNfdnA5
IiwKICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLAotICAgICIuLi9ydGNfYmFzZTpzZXF1ZW5jZWRfdGFza19jaGVja2VyIiwKLSAg
ICAiLi4vc3lzdGVtX3dyYXBwZXJzIiwKLSAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXM6b3B0aW9uYWwiLAotICAgICIvL3RoaXJkX3BhcnR5L2xpYnl1diIsCisgICAgIi4u
L3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncyIsCiAgIF0KIH0KIApAQCAtMjMyLDEyICsyNzgsMTUgQEAgcnRjX3N0
YXRpY19saWJyYXJ5KCJydGNfYXVkaW9fdmlkZW8iKSB7CiAgIGRlZmluZXMgPSBbXQogICBsaWJz
ID0gW10KICAgZGVwcyA9IFsKKyAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnkiLAorICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAg
ICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wOmFlY19kdW1wIiwKICAgICAi
Li4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKICAgICAiLi4v
bW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kaW5nIiwKICAgICAiLi4vbW9kdWxlcy92aWRl
b19jb2Rpbmc6dmlkZW9fY29kaW5nX3V0aWxpdHkiLAogICAgICIuLi9ydGNfYmFzZTphdWRpb19m
b3JtYXRfdG9fc3RyaW5nIiwKICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vcnRj
X2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIuLi9ydGNfYmFzZS90aGlyZF9wYXJ0eS9i
YXNlNjQiLAogICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIuLi9z
eXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCkBAIC0zMDUsNiArMzU0LDcgQEAgcnRjX3N0YXRpY19s
aWJyYXJ5KCJydGNfYXVkaW9fdmlkZW8iKSB7CiAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNv
bm5lY3Rpb25fYXBpIiwKICAgICAiLi4vYXBpOnRyYW5zcG9ydF9hcGkiLAogICAgICIuLi9hcGkv
YXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAorICAgICIuLi9hcGkvdmlkZW86YnVpbHRp
bl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAiLi4vYXBpL3ZpZGVvOnZp
ZGVvX2ZyYW1lIiwKICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAogICAgICIu
Li9hcGkvdmlkZW9fY29kZWNzOnJ0Y19zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVycyIsCkBAIC0z
MjIsNyArMzcyLDEwIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2F1ZGlvX3ZpZGVvIikgewog
ICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1
ZXVlIiwKICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAorICAgICIuLi9ydGNfYmFzZS9l
eHBlcmltZW50czpub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudCIsCiAgICAgIi4u
L3N5c3RlbV93cmFwcGVycyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21l
bW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0K
QEAgLTM5MSwyNCArNDQ0LDI5IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIGluY2x1
ZGVfZGlycyA9IFtdCiAgICAgZGVwcyA9IFsKICAgICAgICI6cnRjX2F1ZGlvX3ZpZGVvIiwKKyAg
ICAgICI6cnRjX3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIiLAogICAgICAgIi4uL2FwaTpsaWJq
aW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJh
bWVfaTQyMCIsCiAgICAgICAiLi4vY2FsbDp2aWRlb19zdHJlYW1fYXBpIiwKICAgICAgICIuLi9j
b21tb25fdmlkZW86Y29tbW9uX3ZpZGVvIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2NvZGlu
ZzpyZW50X2FfY29kZWMiLAorICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGki
LAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwK
ICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgICAgICAiLi4v
bW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKICAgICAgICIuLi9t
b2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAgICAgICAiLi4vcDJw
OnJ0Y19wMnAiLAogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLi4vcnRjX2Jh
c2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAog
ICAgICAgIi4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKICAgICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MiLAogICAgIF0KICAgICBzb3VyY2VzID0gWwogICAgICAgImJhc2UvZmFrZWZy
YW1lc291cmNlLmNjIiwKICAgICAgICJiYXNlL2Zha2VmcmFtZXNvdXJjZS5oIiwKKyAgICAgICJi
YXNlL2Zha2VtZWRpYWVuZ2luZS5jYyIsCiAgICAgICAiYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIs
CiAgICAgICAiYmFzZS9mYWtlbmV0d29ya2ludGVyZmFjZS5oIiwKICAgICAgICJiYXNlL2Zha2Vy
dHAuY2MiLApAQCAtNDUwLDcgKzUwOCw2IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAg
ICAgIi4uL2NhbGw6bW9ja19ydHBfaW50ZXJmYWNlcyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRj
X2Jhc2UiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIu
Li9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRj
X3Rhc2tfcXVldWVfZm9yX3Rlc3QiLAogICAgICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L3Np
Z3Nsb3QiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKQEAgLTQ4Niw4ICs1NDMsMTAg
QEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOnJ0Y19hdWRpb192aWRlbyIsCiAg
ICAgICAiOnJ0Y19jb25zdGFudHMiLAogICAgICAgIjpydGNfZGF0YSIsCisgICAgICAiLi4vYXBp
L3Rlc3QvdmlkZW86ZnVuY3Rpb25fdmlkZW9fZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpL3VuaXRz
OnRpbWVfZGVsdGEiLAogICAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKKyAg
ICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICIuLi9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3Npbmc6bW9ja3MiLAogICAgICAgIi4uL21vZHVsZXMvcnRwX3J0Y3AiLAog
ICAgICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGVjX2ludGVyZmFjZSIsCkBA
IC00OTUsMTEgKzU1NCwxMyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9w
YzpydGNfcGMiLAogICAgICAgIi4uL3BjOnJ0Y19wY19iYXNlIiwKICAgICAgICIuLi9ydGNfYmFz
ZTpjaGVja3MiLAorICAgICAgIi4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAorICAgICAgIi4u
L3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNf
dGFza19xdWV1ZSIsCiAgICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAogICAgICAgIi4u
L3Rlc3Q6ZmllbGRfdHJpYWwiLAotICAgICAgIi4uL3Rlc3Q6dGVzdF9jb21tb24iLAogICAgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgXQogICAgIHNvdXJjZXMgPSBbCiAg
ICAgICAiYmFzZS9jb2RlY191bml0dGVzdC5jYyIsCkBAIC01NjgsMTMgKzYyOSwxOCBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6cnRjX21lZGlhIiwKICAgICAgICI6cnRjX21l
ZGlhX2Jhc2UiLAogICAgICAgIjpydGNfbWVkaWFfdGVzdHNfdXRpbHMiLAorICAgICAgIjpydGNf
c2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlciIsCisgICAgICAiOnJ0Y192cDhfZW5jb2Rlcl9zaW11
bGNhc3RfcHJveHkiLAogICAgICAgIjpydGNfdnA5X3Byb2ZpbGUiLAogICAgICAgIi4uL2FwaTpj
cmVhdGVfc2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9hcGkiLAogICAgICAgIi4uL2FwaTpsaWJqaW5n
bGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKKyAgICAgICIuLi9hcGk6bW9ja192aWRlb19iaXRyYXRl
X2FsbG9jYXRvciIsCisgICAgICAiLi4vYXBpOm1vY2tfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpOm1vY2tfdmlkZW9fY29kZWNfZmFjdG9yeSIsCiAgICAg
ICAiLi4vYXBpOnNpbXVsY2FzdF90ZXN0X2ZpeHR1cmVfYXBpIiwKICAgICAgICIuLi9hcGkvYXVk
aW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKICAgICAgICIuLi9hcGkv
YXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAgICIuLi9h
cGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAg
ICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uIiwKICAgICAgICIuLi9hcGkv
dmlkZW86dmlkZW9fZnJhbWUiLAogICAgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6YnVpbHRpbl92
aWRlb19kZWNvZGVyX2ZhY3RvcnkiLApAQCAtNTkyLDcgKzY1OCw2IEBAIGlmIChydGNfaW5jbHVk
ZV90ZXN0cykgewogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVz
dHNfbWFpbiIsCi0gICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAg
ICAgIi4uL3Rlc3Q6YXVkaW9fY29kZWNfbW9ja3MiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBw
b3J0IiwKICAgICAgICIuLi90ZXN0OnZpZGVvX3Rlc3RfY29tbW9uIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL09XTkVSUyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL09XTkVSUwppbmRl
eCA2MzRlYWYyYmZhNzllMTg3MWE3YjA2MDhjZjVjMDIwNTU2MmI3YzUyLi40NTQ0ZTlmNDgwNjEz
ODY3MDgyM2RiODRiYTNlYmJhYTRkNDdmMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9PV05FUlMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvT1dORVJTCkBAIC00LDYgKzQsNyBA
QCBzcHJhbmdAd2VicnRjLm9yZwogbWFnamVkQHdlYnJ0Yy5vcmcKIG1mbG9kbWFuQHdlYnJ0Yy5v
cmcKIHBlcmtqQHdlYnJ0Yy5vcmcKK3NoYW1wc29uQHdlYnJ0Yy5vcmcKIHNvbGVuYmVyZ0B3ZWJy
dGMub3JnCiAKICMgVGhlc2UgYXJlIGZvciB0aGUgY29tbW9uIGNhc2Ugb2YgYWRkaW5nIG9yIHJl
bmFtaW5nIGZpbGVzLiBJZiB5b3UncmUgZG9pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvY29kZWMuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2NvZGVjLmNjCmlu
ZGV4IGNhZjMyMTIxMTI1YjFkYmVjMGNhOGNmMjBmOTYxODk0ODkzMTVmZTguLjBhMWM3MTU2YWY4
MGUwNTk5ZDE5ZTUyNzUyYjhlMmQ3MzFhNTFiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvY29kZWMuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9jb2RlYy5j
YwpAQCAtMTIsMTMgKzEyLDEzIEBACiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKKyNpbmNsdWRl
ICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2gyNjRfcHJvZmls
ZV9sZXZlbF9pZC5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Ry
aW5ncy9zdHJpbmdfYnVpbGRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgi
CiAKIG5hbWVzcGFjZSBjcmlja2V0IHsKIApAQCAtMjYsOCArMjYsOCBAQCBGZWVkYmFja1BhcmFt
czo6RmVlZGJhY2tQYXJhbXMoKSA9IGRlZmF1bHQ7CiBGZWVkYmFja1BhcmFtczo6fkZlZWRiYWNr
UGFyYW1zKCkgPSBkZWZhdWx0OwogCiBib29sIEZlZWRiYWNrUGFyYW06Om9wZXJhdG9yPT0oY29u
c3QgRmVlZGJhY2tQYXJhbSYgb3RoZXIpIGNvbnN0IHsKLSAgcmV0dXJuIF9zdHJpY21wKG90aGVy
LmlkKCkuY19zdHIoKSwgaWQoKS5jX3N0cigpKSA9PSAwICYmCi0gICAgICAgICBfc3RyaWNtcChv
dGhlci5wYXJhbSgpLmNfc3RyKCksIHBhcmFtKCkuY19zdHIoKSkgPT0gMDsKKyAgcmV0dXJuIGFi
c2w6OkVxdWFsc0lnbm9yZUNhc2Uob3RoZXIuaWQoKSwgaWQoKSkgJiYKKyAgICAgICAgIGFic2w6
OkVxdWFsc0lnbm9yZUNhc2Uob3RoZXIucGFyYW0oKSwgcGFyYW0oKSk7CiB9CiAKIGJvb2wgRmVl
ZGJhY2tQYXJhbXM6Om9wZXJhdG9yPT0oY29uc3QgRmVlZGJhY2tQYXJhbXMmIG90aGVyKSBjb25z
dCB7CkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgQ29kZWM6Ok1hdGNoZXMoY29uc3QgQ29kZWMmIGNv
ZGVjKSBjb25zdCB7CiAgIGNvbnN0IGludCBrTWF4U3RhdGljUGF5bG9hZElkID0gOTU7CiAgIHJl
dHVybiAoaWQgPD0ga01heFN0YXRpY1BheWxvYWRJZCB8fCBjb2RlYy5pZCA8PSBrTWF4U3RhdGlj
UGF5bG9hZElkKQogICAgICAgICAgICAgID8gKGlkID09IGNvZGVjLmlkKQotICAgICAgICAgICAg
IDogKF9zdHJpY21wKG5hbWUuY19zdHIoKSwgY29kZWMubmFtZS5jX3N0cigpKSA9PSAwKTsKKyAg
ICAgICAgICAgICA6IChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUsIGNvZGVjLm5hbWUpKTsK
IH0KIAogYm9vbCBDb2RlYzo6R2V0UGFyYW0oY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIHN0ZDo6
c3RyaW5nKiBvdXQpIGNvbnN0IHsKQEAgLTIzNSw3ICsyMzUsNyBAQCBWaWRlb0NvZGVjJiBWaWRl
b0NvZGVjOjpvcGVyYXRvcj0oY29uc3QgVmlkZW9Db2RlYyYgYykgPSBkZWZhdWx0OwogVmlkZW9D
b2RlYyYgVmlkZW9Db2RlYzo6b3BlcmF0b3I9KFZpZGVvQ29kZWMmJiBjKSA9IGRlZmF1bHQ7CiAK
IHZvaWQgVmlkZW9Db2RlYzo6U2V0RGVmYXVsdFBhcmFtZXRlcnMoKSB7Ci0gIGlmIChfc3RyaWNt
cChrSDI2NENvZGVjTmFtZSwgbmFtZS5jX3N0cigpKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVh
bHNJZ25vcmVDYXNlKGtIMjY0Q29kZWNOYW1lLCBuYW1lKSkgewogICAgIC8vIFRoaXMgZGVmYXVs
dCBpcyBzZXQgZm9yIGFsbCBILjI2NCBjb2RlY3MgY3JlYXRlZCBiZWNhdXNlCiAgICAgLy8gdGhh
dCB3YXMgdGhlIGRlZmF1bHQgYmVmb3JlIHBhY2tldGl6YXRpb24gbW9kZSBzdXBwb3J0IHdhcyBh
ZGRlZC4KICAgICAvLyBUT0RPKGh0YSk6IE1vdmUgdGhpcyB0byB0aGUgcGxhY2VzIHRoYXQgY3Jl
YXRlIFZpZGVvQ29kZWNzIGZyb20KQEAgLTI2OCwxMCArMjY4LDEwIEBAIHN0YXRpYyBib29sIElz
U2FtZUgyNjRQYWNrZXRpemF0aW9uTW9kZShjb25zdCBDb2RlY1BhcmFtZXRlck1hcCYgb3VycywK
IGJvb2wgVmlkZW9Db2RlYzo6TWF0Y2hlcyhjb25zdCBWaWRlb0NvZGVjJiBvdGhlcikgY29uc3Qg
ewogICBpZiAoIUNvZGVjOjpNYXRjaGVzKG90aGVyKSkKICAgICByZXR1cm4gZmFsc2U7Ci0gIGlm
IChDb2RlY05hbWVzRXEobmFtZS5jX3N0cigpLCBrSDI2NENvZGVjTmFtZSkpCisgIGlmIChhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUsIGtIMjY0Q29kZWNOYW1lKSkKICAgICByZXR1cm4gd2Vi
cnRjOjpIMjY0OjpJc1NhbWVIMjY0UHJvZmlsZShwYXJhbXMsIG90aGVyLnBhcmFtcykgJiYKICAg
ICAgICAgICAgSXNTYW1lSDI2NFBhY2tldGl6YXRpb25Nb2RlKHBhcmFtcywgb3RoZXIucGFyYW1z
KTsKLSAgaWYgKENvZGVjTmFtZXNFcShuYW1lLmNfc3RyKCksIGtWcDlDb2RlY05hbWUpKQorICBp
ZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lLCBrVnA5Q29kZWNOYW1lKSkKICAgICByZXR1
cm4gd2VicnRjOjpJc1NhbWVWUDlQcm9maWxlKHBhcmFtcywgb3RoZXIucGFyYW1zKTsKICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yODUsMTYgKzI4NSwxNiBAQCBWaWRlb0NvZGVjIFZpZGVvQ29kZWM6
OkNyZWF0ZVJ0eENvZGVjKGludCBydHhfcGF5bG9hZF90eXBlLAogCiBWaWRlb0NvZGVjOjpDb2Rl
Y1R5cGUgVmlkZW9Db2RlYzo6R2V0Q29kZWNUeXBlKCkgY29uc3QgewogICBjb25zdCBjaGFyKiBw
YXlsb2FkX25hbWUgPSBuYW1lLmNfc3RyKCk7Ci0gIGlmIChfc3RyaWNtcChwYXlsb2FkX25hbWUs
IGtSZWRDb2RlY05hbWUpID09IDApIHsKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGF5
bG9hZF9uYW1lLCBrUmVkQ29kZWNOYW1lKSkgewogICAgIHJldHVybiBDT0RFQ19SRUQ7CiAgIH0K
LSAgaWYgKF9zdHJpY21wKHBheWxvYWRfbmFtZSwga1VscGZlY0NvZGVjTmFtZSkgPT0gMCkgewor
ICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25hbWUsIGtVbHBmZWNDb2RlY05h
bWUpKSB7CiAgICAgcmV0dXJuIENPREVDX1VMUEZFQzsKICAgfQotICBpZiAoX3N0cmljbXAocGF5
bG9hZF9uYW1lLCBrRmxleGZlY0NvZGVjTmFtZSkgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxz
SWdub3JlQ2FzZShwYXlsb2FkX25hbWUsIGtGbGV4ZmVjQ29kZWNOYW1lKSkgewogICAgIHJldHVy
biBDT0RFQ19GTEVYRkVDOwogICB9Ci0gIGlmIChfc3RyaWNtcChwYXlsb2FkX25hbWUsIGtSdHhD
b2RlY05hbWUpID09IDApIHsKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGF5bG9hZF9u
YW1lLCBrUnR4Q29kZWNOYW1lKSkgewogICAgIHJldHVybiBDT0RFQ19SVFg7CiAgIH0KIApAQCAt
MzYyLDE0ICszNjIsNiBAQCBib29sIEhhc1RyYW5zcG9ydENjKGNvbnN0IENvZGVjJiBjb2RlYykg
ewogICAgICAgRmVlZGJhY2tQYXJhbShrUnRjcEZiUGFyYW1UcmFuc3BvcnRDYywga1BhcmFtVmFs
dWVFbXB0eSkpOwogfQogCi1ib29sIENvZGVjTmFtZXNFcShjb25zdCBzdGQ6OnN0cmluZyYgbmFt
ZTEsIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lMikgewotICByZXR1cm4gQ29kZWNOYW1lc0VxKG5h
bWUxLmNfc3RyKCksIG5hbWUyLmNfc3RyKCkpOwotfQotCi1ib29sIENvZGVjTmFtZXNFcShjb25z
dCBjaGFyKiBuYW1lMSwgY29uc3QgY2hhciogbmFtZTIpIHsKLSAgcmV0dXJuIF9zdHJpY21wKG5h
bWUxLCBuYW1lMikgPT0gMDsKLX0KLQogY29uc3QgVmlkZW9Db2RlYyogRmluZE1hdGNoaW5nQ29k
ZWMoCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIHN1cHBvcnRlZF9jb2RlY3Ms
CiAgICAgY29uc3QgVmlkZW9Db2RlYyYgY29kZWMpIHsKQEAgLTM4NywxMiArMzc5LDEyIEBAIGJv
b2wgSXNTYW1lQ29kZWMoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUxLAogICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZTIsCiAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVj
UGFyYW1ldGVyTWFwJiBwYXJhbXMyKSB7CiAgIC8vIElmIGRpZmZlcmVudCBuYW1lcyAoY2FzZSBp
bnNlbnNpdGl2ZSksIHRoZW4gbm90IHNhbWUgZm9ybWF0cy4KLSAgaWYgKCFDb2RlY05hbWVzRXEo
bmFtZTEsIG5hbWUyKSkKKyAgaWYgKCFhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUxLCBuYW1l
MikpCiAgICAgcmV0dXJuIGZhbHNlOwogICAvLyBGb3IgZXZlcnkgZm9ybWF0IGJlc2lkZXMgSDI2
NCBhbmQgVlA5LCBjb21wYXJpbmcgbmFtZXMgaXMgZW5vdWdoLgotICBpZiAoQ29kZWNOYW1lc0Vx
KG5hbWUxLmNfc3RyKCksIGtIMjY0Q29kZWNOYW1lKSkKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9y
ZUNhc2UobmFtZTEsIGtIMjY0Q29kZWNOYW1lKSkKICAgICByZXR1cm4gd2VicnRjOjpIMjY0OjpJ
c1NhbWVIMjY0UHJvZmlsZShwYXJhbXMxLCBwYXJhbXMyKTsKLSAgaWYgKENvZGVjTmFtZXNFcShu
YW1lMS5jX3N0cigpLCBrVnA5Q29kZWNOYW1lKSkKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNh
c2UobmFtZTEsIGtWcDlDb2RlY05hbWUpKQogICAgIHJldHVybiB3ZWJydGM6OklzU2FtZVZQOVBy
b2ZpbGUocGFyYW1zMSwgcGFyYW1zMik7CiAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9jb2Rl
Yy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFz
ZS9jb2RlYy5oCmluZGV4IGRiMTMzZjZlMjdmNjQ0ZjUxZTBkNzlkYTgyOWNjMjUzZjAwMTM5MjIu
LjBjYTY1MzUyODdiZWViMjlmZjU1OThkZjFmMjVjYmFmMTQwOTBkNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvY29kZWMu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9i
YXNlL2NvZGVjLmgKQEAgLTE4LDggKzE4LDggQEAKIAogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCi0j
aW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNs
dWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lz
dGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewogCkBAIC02Miw3ICs2Miw3
IEBAIGNsYXNzIEZlZWRiYWNrUGFyYW1zIHsKICAgc3RkOjp2ZWN0b3I8RmVlZGJhY2tQYXJhbT4g
cGFyYW1zXzsKIH07CiAKLXN0cnVjdCBDb2RlYyB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBDb2RlYyB7
CiAgIGludCBpZDsKICAgc3RkOjpzdHJpbmcgbmFtZTsKICAgaW50IGNsb2NrcmF0ZTsKQEAgLTE0
Miw3ICsxNDIsNyBAQCBzdHJ1Y3QgQXVkaW9Db2RlYyA6IHB1YmxpYyBDb2RlYyB7CiAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBBdWRpb0NvZGVjJiBjKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IGMpOyB9CiB9OwogCi1zdHJ1Y3QgVmlkZW9Db2RlYyA6IHB1YmxpYyBDb2RlYyB7CitzdHJ1Y3Qg
UlRDX0VYUE9SVCBWaWRlb0NvZGVjIDogcHVibGljIENvZGVjIHsKICAgLy8gQ3JlYXRlcyBhIGNv
ZGVjIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCiAgIFZpZGVvQ29kZWMoaW50IGlkLCBjb25z
dCBzdGQ6OnN0cmluZyYgbmFtZSk7CiAgIC8vIENyZWF0ZXMgYSBjb2RlYyB3aXRoIHRoZSBnaXZl
biBuYW1lIGFuZCBlbXB0eSBpZC4KQEAgLTIxNSw4ICsyMTUsNiBAQCBjb25zdCBDb2RlYyogRmlu
ZENvZGVjQnlJZChjb25zdCBzdGQ6OnZlY3RvcjxDb2RlYz4mIGNvZGVjcywgaW50IHBheWxvYWRf
dHlwZSkgewogICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBDb2RlY05hbWVzRXEoY29uc3Qg
c3RkOjpzdHJpbmcmIG5hbWUxLCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZTIpOwotYm9vbCBDb2Rl
Y05hbWVzRXEoY29uc3QgY2hhciogbmFtZTEsIGNvbnN0IGNoYXIqIG5hbWUyKTsKIGJvb2wgSGFz
TmFjayhjb25zdCBDb2RlYyYgY29kZWMpOwogYm9vbCBIYXNSZW1iKGNvbnN0IENvZGVjJiBjb2Rl
Yyk7CiBib29sIEhhc1JydHIoY29uc3QgQ29kZWMmIGNvZGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZW1lZGlh
ZW5naW5lLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ4MjA2ZmQ3Nzc3MmFjOTM4
OGIwODYwZTI5ZjU1ODg1MGZlMzM5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmNj
CkBAIC0wLDAgKzEsNTk4IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibWVkaWEv
YmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKKworI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRl
ICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKworbmFtZXNwYWNlIGNyaWNrZXQgeworCitG
YWtlVm9pY2VNZWRpYUNoYW5uZWw6OkR0bWZJbmZvOjpEdG1mSW5mbyh1aW50MzJfdCBzc3JjLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV2ZW50X2NvZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHVyYXRpb24p
CisgICAgOiBzc3JjKHNzcmMpLCBldmVudF9jb2RlKGV2ZW50X2NvZGUpLCBkdXJhdGlvbihkdXJh
dGlvbikge30KKworRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpWb2ljZUNoYW5uZWxBdWRpb1Npbms6
OlZvaWNlQ2hhbm5lbEF1ZGlvU2luaygKKyAgICBBdWRpb1NvdXJjZSogc291cmNlKQorICAgIDog
c291cmNlXyhzb3VyY2UpIHsKKyAgc291cmNlXy0+U2V0U2luayh0aGlzKTsKK30KK0Zha2VWb2lj
ZU1lZGlhQ2hhbm5lbDo6Vm9pY2VDaGFubmVsQXVkaW9TaW5rOjp+Vm9pY2VDaGFubmVsQXVkaW9T
aW5rKCkgeworICBpZiAoc291cmNlXykgeworICAgIHNvdXJjZV8tPlNldFNpbmsobnVsbHB0cik7
CisgIH0KK30KK3ZvaWQgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpWb2ljZUNoYW5uZWxBdWRpb1Np
bms6Ok9uRGF0YSgKKyAgICBjb25zdCB2b2lkKiBhdWRpb19kYXRhLAorICAgIGludCBiaXRzX3Bl
cl9zYW1wbGUsCisgICAgaW50IHNhbXBsZV9yYXRlLAorICAgIHNpemVfdCBudW1iZXJfb2ZfY2hh
bm5lbHMsCisgICAgc2l6ZV90IG51bWJlcl9vZl9mcmFtZXMpIHt9Cit2b2lkIEZha2VWb2ljZU1l
ZGlhQ2hhbm5lbDo6Vm9pY2VDaGFubmVsQXVkaW9TaW5rOjpPbkNsb3NlKCkgeworICBzb3VyY2Vf
ID0gbnVsbHB0cjsKK30KK0F1ZGlvU291cmNlKiBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlZvaWNl
Q2hhbm5lbEF1ZGlvU2luazo6c291cmNlKCkgY29uc3QgeworICByZXR1cm4gc291cmNlXzsKK30K
KworRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpGYWtlVm9pY2VNZWRpYUNoYW5uZWwoRmFrZVZvaWNl
RW5naW5lKiBlbmdpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBlbmdpbmVfKGVuZ2luZSks
IG1heF9icHNfKC0xKSB7CisgIG91dHB1dF9zY2FsaW5nc19bMF0gPSAxLjA7ICAvLyBGb3IgZGVm
YXVsdCBjaGFubmVsLgorICBTZXRPcHRpb25zKG9wdGlvbnMpOworfQorRmFrZVZvaWNlTWVkaWFD
aGFubmVsOjp+RmFrZVZvaWNlTWVkaWFDaGFubmVsKCkgeworICBpZiAoZW5naW5lXykgeworICAg
IGVuZ2luZV8tPlVucmVnaXN0ZXJDaGFubmVsKHRoaXMpOworICB9Cit9Citjb25zdCBzdGQ6OnZl
Y3RvcjxBdWRpb0NvZGVjPiYgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpyZWN2X2NvZGVjcygpIGNv
bnN0IHsKKyAgcmV0dXJuIHJlY3ZfY29kZWNzXzsKK30KK2NvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlv
Q29kZWM+JiBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OnNlbmRfY29kZWNzKCkgY29uc3QgeworICBy
ZXR1cm4gc2VuZF9jb2RlY3NfOworfQorY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIEZh
a2VWb2ljZU1lZGlhQ2hhbm5lbDo6Y29kZWNzKCkgY29uc3QgeworICByZXR1cm4gc2VuZF9jb2Rl
Y3MoKTsKK30KK2NvbnN0IHN0ZDo6dmVjdG9yPEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6RHRtZklu
Zm8+JgorRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpkdG1mX2luZm9fcXVldWUoKSBjb25zdCB7Cisg
IHJldHVybiBkdG1mX2luZm9fcXVldWVfOworfQorY29uc3QgQXVkaW9PcHRpb25zJiBGYWtlVm9p
Y2VNZWRpYUNoYW5uZWw6Om9wdGlvbnMoKSBjb25zdCB7CisgIHJldHVybiBvcHRpb25zXzsKK30K
K2ludCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6Om1heF9icHMoKSBjb25zdCB7CisgIHJldHVybiBt
YXhfYnBzXzsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRTZW5kUGFyYW1ldGVy
cygKKyAgICBjb25zdCBBdWRpb1NlbmRQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKKyAgc2V0X3NlbmRf
cnRjcF9wYXJhbWV0ZXJzKHBhcmFtcy5ydGNwKTsKKyAgcmV0dXJuIChTZXRTZW5kQ29kZWNzKHBh
cmFtcy5jb2RlY3MpICYmCisgICAgICAgICAgU2V0U2VuZEV4dG1hcEFsbG93TWl4ZWQocGFyYW1z
LmV4dG1hcF9hbGxvd19taXhlZCkgJiYKKyAgICAgICAgICBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5z
aW9ucyhwYXJhbXMuZXh0ZW5zaW9ucykgJiYKKyAgICAgICAgICBTZXRNYXhTZW5kQmFuZHdpZHRo
KHBhcmFtcy5tYXhfYmFuZHdpZHRoX2JwcykgJiYKKyAgICAgICAgICBTZXRPcHRpb25zKHBhcmFt
cy5vcHRpb25zKSk7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0UmVjdlBhcmFt
ZXRlcnMoCisgICAgY29uc3QgQXVkaW9SZWN2UGFyYW1ldGVycyYgcGFyYW1zKSB7CisgIHNldF9y
ZWN2X3J0Y3BfcGFyYW1ldGVycyhwYXJhbXMucnRjcCk7CisgIHJldHVybiAoU2V0UmVjdkNvZGVj
cyhwYXJhbXMuY29kZWNzKSAmJgorICAgICAgICAgIFNldFJlY3ZSdHBIZWFkZXJFeHRlbnNpb25z
KHBhcmFtcy5leHRlbnNpb25zKSk7Cit9Cit2b2lkIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0
UGxheW91dChib29sIHBsYXlvdXQpIHsKKyAgc2V0X3BsYXlvdXQocGxheW91dCk7Cit9Cit2b2lk
IEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0U2VuZChib29sIHNlbmQpIHsKKyAgc2V0X3NlbmRp
bmcoc2VuZCk7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0QXVkaW9TZW5kKHVp
bnQzMl90IHNzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZW5hYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBBdWRpb09wdGlvbnMqIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEF1ZGlvU291cmNlKiBzb3VyY2UpIHsKKyAgaWYgKCFTZXRMb2NhbFNvdXJjZShz
c3JjLCBzb3VyY2UpKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmICghUnRwSGVscGVy
PFZvaWNlTWVkaWFDaGFubmVsPjo6TXV0ZVN0cmVhbShzc3JjLCAhZW5hYmxlKSkgeworICAgIHJl
dHVybiBmYWxzZTsKKyAgfQorICBpZiAoZW5hYmxlICYmIG9wdGlvbnMpIHsKKyAgICByZXR1cm4g
U2V0T3B0aW9ucygqb3B0aW9ucyk7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VW
b2ljZU1lZGlhQ2hhbm5lbDo6SGFzU291cmNlKHVpbnQzMl90IHNzcmMpIGNvbnN0IHsKKyAgcmV0
dXJuIGxvY2FsX3NpbmtzXy5maW5kKHNzcmMpICE9IGxvY2FsX3NpbmtzXy5lbmQoKTsKK30KK2Jv
b2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpBZGRSZWN2U3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFt
cyYgc3ApIHsKKyAgaWYgKCFSdHBIZWxwZXI8Vm9pY2VNZWRpYUNoYW5uZWw+OjpBZGRSZWN2U3Ry
ZWFtKHNwKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIG91dHB1dF9zY2FsaW5nc19bc3AuZmlyc3Rf
c3NyYygpXSA9IDEuMDsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hh
bm5lbDo6UmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSB7CisgIGlmICghUnRwSGVscGVy
PFZvaWNlTWVkaWFDaGFubmVsPjo6UmVtb3ZlUmVjdlN0cmVhbShzc3JjKSkKKyAgICByZXR1cm4g
ZmFsc2U7CisgIG91dHB1dF9zY2FsaW5nc18uZXJhc2Uoc3NyYyk7CisgIHJldHVybiB0cnVlOwor
fQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OkNhbkluc2VydER0bWYoKSB7CisgIGZvciAo
c3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2VuZF9jb2RlY3Nf
LmJlZ2luKCk7CisgICAgICAgaXQgIT0gc2VuZF9jb2RlY3NfLmVuZCgpOyArK2l0KSB7CisgICAg
Ly8gRmluZCB0aGUgRFRNRiB0ZWxlcGhvbmUgZXZlbnQgImNvZGVjIi4KKyAgICBpZiAoYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShpdC0+bmFtZSwgInRlbGVwaG9uZS1ldmVudCIpKSB7CisgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorYm9vbCBGYWtlVm9p
Y2VNZWRpYUNoYW5uZWw6Okluc2VydER0bWYodWludDMyX3Qgc3NyYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBldmVudF9jb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGR1cmF0aW9uKSB7CisgIGR0bWZfaW5mb19xdWV1
ZV8ucHVzaF9iYWNrKER0bWZJbmZvKHNzcmMsIGV2ZW50X2NvZGUsIGR1cmF0aW9uKSk7CisgIHJl
dHVybiB0cnVlOworfQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlNldE91dHB1dFZvbHVt
ZSh1aW50MzJfdCBzc3JjLCBkb3VibGUgdm9sdW1lKSB7CisgIGlmICgwID09IHNzcmMpIHsKKyAg
ICBzdGQ6Om1hcDx1aW50MzJfdCwgZG91YmxlPjo6aXRlcmF0b3IgaXQ7CisgICAgZm9yIChpdCA9
IG91dHB1dF9zY2FsaW5nc18uYmVnaW4oKTsgaXQgIT0gb3V0cHV0X3NjYWxpbmdzXy5lbmQoKTsg
KytpdCkgeworICAgICAgaXQtPnNlY29uZCA9IHZvbHVtZTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7CisgIH0gZWxzZSBpZiAob3V0cHV0X3NjYWxpbmdzXy5maW5kKHNzcmMpICE9IG91dHB1dF9z
Y2FsaW5nc18uZW5kKCkpIHsKKyAgICBvdXRwdXRfc2NhbGluZ3NfW3NzcmNdID0gdm9sdW1lOwor
ICAgIHJldHVybiB0cnVlOworICB9CisgIHJldHVybiBmYWxzZTsKK30KK2Jvb2wgRmFrZVZvaWNl
TWVkaWFDaGFubmVsOjpHZXRPdXRwdXRWb2x1bWUodWludDMyX3Qgc3NyYywgZG91YmxlKiB2b2x1
bWUpIHsKKyAgaWYgKG91dHB1dF9zY2FsaW5nc18uZmluZChzc3JjKSA9PSBvdXRwdXRfc2NhbGlu
Z3NfLmVuZCgpKQorICAgIHJldHVybiBmYWxzZTsKKyAgKnZvbHVtZSA9IG91dHB1dF9zY2FsaW5n
c19bc3NyY107CisgIHJldHVybiB0cnVlOworfQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6
OkdldFN0YXRzKFZvaWNlTWVkaWFJbmZvKiBpbmZvKSB7CisgIHJldHVybiBmYWxzZTsKK30KK3Zv
aWQgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRSYXdBdWRpb1NpbmsoCisgICAgdWludDMyX3Qg
c3NyYywKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpBdWRpb1NpbmtJbnRlcmZhY2U+IHNp
bmspIHsKKyAgc2lua18gPSBzdGQ6Om1vdmUoc2luayk7Cit9CitzdGQ6OnZlY3Rvcjx3ZWJydGM6
OlJ0cFNvdXJjZT4gRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpHZXRTb3VyY2VzKAorICAgIHVpbnQz
Ml90IHNzcmMpIGNvbnN0IHsKKyAgcmV0dXJuIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNl
PigpOworfQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlNldFJlY3ZDb2RlY3MoCisgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGNvZGVjcykgeworICBpZiAoZmFpbF9zZXRf
cmVjdl9jb2RlY3MoKSkgeworICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0UmVjdkNvZGVj
cy4KKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmVjdl9jb2RlY3NfID0gY29kZWNzOworICBy
ZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRTZW5kQ29kZWNz
KAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MpIHsKKyAgaWYgKGZh
aWxfc2V0X3NlbmRfY29kZWNzKCkpIHsKKyAgICAvLyBGYWtlIHRoZSBmYWlsdXJlIGluIFNldFNl
bmRDb2RlY3MuCisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHNlbmRfY29kZWNzXyA9IGNvZGVj
czsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0TWF4
U2VuZEJhbmR3aWR0aChpbnQgYnBzKSB7CisgIG1heF9icHNfID0gYnBzOworICByZXR1cm4gdHJ1
ZTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRPcHRpb25zKGNvbnN0IEF1ZGlv
T3B0aW9ucyYgb3B0aW9ucykgeworICAvLyBEb2VzIGEgIm1lcmdlIiBvZiBjdXJyZW50IG9wdGlv
bnMgYW5kIHNldCBvcHRpb25zLgorICBvcHRpb25zXy5TZXRBbGwob3B0aW9ucyk7CisgIHJldHVy
biB0cnVlOworfQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlNldExvY2FsU291cmNlKHVp
bnQzMl90IHNzcmMsIEF1ZGlvU291cmNlKiBzb3VyY2UpIHsKKyAgYXV0byBpdCA9IGxvY2FsX3Np
bmtzXy5maW5kKHNzcmMpOworICBpZiAoc291cmNlKSB7CisgICAgaWYgKGl0ICE9IGxvY2FsX3Np
bmtzXy5lbmQoKSkgeworICAgICAgUlRDX0NIRUNLKGl0LT5zZWNvbmQtPnNvdXJjZSgpID09IHNv
dXJjZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGxvY2FsX3NpbmtzXy5pbnNlcnQoc3RkOjptYWtl
X3BhaXIoCisgICAgICAgICAgc3NyYywgYWJzbDo6bWFrZV91bmlxdWU8Vm9pY2VDaGFubmVsQXVk
aW9TaW5rPihzb3VyY2UpKSk7CisgICAgfQorICB9IGVsc2UgeworICAgIGlmIChpdCAhPSBsb2Nh
bF9zaW5rc18uZW5kKCkpIHsKKyAgICAgIGxvY2FsX3NpbmtzXy5lcmFzZShpdCk7CisgICAgfQor
ICB9CisgIHJldHVybiB0cnVlOworfQorCitib29sIENvbXBhcmVEdG1mSW5mbyhjb25zdCBGYWtl
Vm9pY2VNZWRpYUNoYW5uZWw6OkR0bWZJbmZvJiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3Qgc3NyYywKKyAgICAgICAgICAgICAgICAgICAgIGludCBldmVudF9jb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgaW50IGR1cmF0aW9uKSB7CisgIHJldHVybiAoaW5mby5kdXJhdGlv
biA9PSBkdXJhdGlvbiAmJiBpbmZvLmV2ZW50X2NvZGUgPT0gZXZlbnRfY29kZSAmJgorICAgICAg
ICAgIGluZm8uc3NyYyA9PSBzc3JjKTsKK30KKworRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpGYWtl
VmlkZW9NZWRpYUNoYW5uZWwoRmFrZVZpZGVvRW5naW5lKiBlbmdpbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlv
bnMpCisgICAgOiBlbmdpbmVfKGVuZ2luZSksIG1heF9icHNfKC0xKSB7CisgIFNldE9wdGlvbnMo
b3B0aW9ucyk7Cit9CitGYWtlVmlkZW9NZWRpYUNoYW5uZWw6On5GYWtlVmlkZW9NZWRpYUNoYW5u
ZWwoKSB7CisgIGlmIChlbmdpbmVfKSB7CisgICAgZW5naW5lXy0+VW5yZWdpc3RlckNoYW5uZWwo
dGhpcyk7CisgIH0KK30KK2NvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBGYWtlVmlkZW9N
ZWRpYUNoYW5uZWw6OnJlY3ZfY29kZWNzKCkgY29uc3QgeworICByZXR1cm4gcmVjdl9jb2RlY3Nf
OworfQorY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIEZha2VWaWRlb01lZGlhQ2hhbm5l
bDo6c2VuZF9jb2RlY3MoKSBjb25zdCB7CisgIHJldHVybiBzZW5kX2NvZGVjc187Cit9Citjb25z
dCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpjb2RlY3Mo
KSBjb25zdCB7CisgIHJldHVybiBzZW5kX2NvZGVjcygpOworfQorYm9vbCBGYWtlVmlkZW9NZWRp
YUNoYW5uZWw6OnJlbmRlcmluZygpIGNvbnN0IHsKKyAgcmV0dXJuIHBsYXlvdXQoKTsKK30KK2Nv
bnN0IFZpZGVvT3B0aW9ucyYgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpvcHRpb25zKCkgY29uc3Qg
eworICByZXR1cm4gb3B0aW9uc187Cit9Citjb25zdCBzdGQ6Om1hcDx1aW50MzJfdCwgcnRjOjpW
aWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPio+JgorRmFrZVZpZGVvTWVkaWFD
aGFubmVsOjpzaW5rcygpIGNvbnN0IHsKKyAgcmV0dXJuIHNpbmtzXzsKK30KK2ludCBGYWtlVmlk
ZW9NZWRpYUNoYW5uZWw6Om1heF9icHMoKSBjb25zdCB7CisgIHJldHVybiBtYXhfYnBzXzsKK30K
K2Jvb2wgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpTZXRTZW5kUGFyYW1ldGVycygKKyAgICBjb25z
dCBWaWRlb1NlbmRQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKKyAgc2V0X3NlbmRfcnRjcF9wYXJhbWV0
ZXJzKHBhcmFtcy5ydGNwKTsKKyAgcmV0dXJuIChTZXRTZW5kQ29kZWNzKHBhcmFtcy5jb2RlY3Mp
ICYmCisgICAgICAgICAgU2V0U2VuZEV4dG1hcEFsbG93TWl4ZWQocGFyYW1zLmV4dG1hcF9hbGxv
d19taXhlZCkgJiYKKyAgICAgICAgICBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJhbXMu
ZXh0ZW5zaW9ucykgJiYKKyAgICAgICAgICBTZXRNYXhTZW5kQmFuZHdpZHRoKHBhcmFtcy5tYXhf
YmFuZHdpZHRoX2JwcykpOworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OlNldFJlY3ZQ
YXJhbWV0ZXJzKAorICAgIGNvbnN0IFZpZGVvUmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgeworICBz
ZXRfcmVjdl9ydGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOworICByZXR1cm4gKFNldFJlY3ZD
b2RlY3MocGFyYW1zLmNvZGVjcykgJiYKKyAgICAgICAgICBTZXRSZWN2UnRwSGVhZGVyRXh0ZW5z
aW9ucyhwYXJhbXMuZXh0ZW5zaW9ucykpOworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6
OkFkZFNlbmRTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgeworICByZXR1cm4gUnRwSGVs
cGVyPFZpZGVvTWVkaWFDaGFubmVsPjo6QWRkU2VuZFN0cmVhbShzcCk7Cit9Citib29sIEZha2VW
aWRlb01lZGlhQ2hhbm5lbDo6UmVtb3ZlU2VuZFN0cmVhbSh1aW50MzJfdCBzc3JjKSB7CisgIHJl
dHVybiBSdHBIZWxwZXI8VmlkZW9NZWRpYUNoYW5uZWw+OjpSZW1vdmVTZW5kU3RyZWFtKHNzcmMp
OworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OkdldFNlbmRDb2RlYyhWaWRlb0NvZGVj
KiBzZW5kX2NvZGVjKSB7CisgIGlmIChzZW5kX2NvZGVjc18uZW1wdHkoKSkgeworICAgIHJldHVy
biBmYWxzZTsKKyAgfQorICAqc2VuZF9jb2RlYyA9IHNlbmRfY29kZWNzX1swXTsKKyAgcmV0dXJu
IHRydWU7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6U2V0U2luaygKKyAgICB1aW50
MzJfdCBzc3JjLAorICAgIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFt
ZT4qIHNpbmspIHsKKyAgaWYgKHNzcmMgIT0gMCAmJiBzaW5rc18uZmluZChzc3JjKSA9PSBzaW5r
c18uZW5kKCkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKHNzcmMgIT0gMCkgewor
ICAgIHNpbmtzX1tzc3JjXSA9IHNpbms7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZh
a2VWaWRlb01lZGlhQ2hhbm5lbDo6SGFzU2luayh1aW50MzJfdCBzc3JjKSBjb25zdCB7CisgIHJl
dHVybiBzaW5rc18uZmluZChzc3JjKSAhPSBzaW5rc18uZW5kKCkgJiYgc2lua3NfLmF0KHNzcmMp
ICE9IG51bGxwdHI7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6U2V0U2VuZChib29s
IHNlbmQpIHsKKyAgcmV0dXJuIHNldF9zZW5kaW5nKHNlbmQpOworfQorYm9vbCBGYWtlVmlkZW9N
ZWRpYUNoYW5uZWw6OlNldFZpZGVvU2VuZCgKKyAgICB1aW50MzJfdCBzc3JjLAorICAgIGNvbnN0
IFZpZGVvT3B0aW9ucyogb3B0aW9ucywKKyAgICBydGM6OlZpZGVvU291cmNlSW50ZXJmYWNlPHdl
YnJ0Yzo6VmlkZW9GcmFtZT4qIHNvdXJjZSkgeworICBpZiAob3B0aW9ucykgeworICAgIGlmICgh
U2V0T3B0aW9ucygqb3B0aW9ucykpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0K
KyAgc291cmNlc19bc3NyY10gPSBzb3VyY2U7CisgIHJldHVybiB0cnVlOworfQorYm9vbCBGYWtl
VmlkZW9NZWRpYUNoYW5uZWw6Okhhc1NvdXJjZSh1aW50MzJfdCBzc3JjKSBjb25zdCB7CisgIHJl
dHVybiBzb3VyY2VzXy5maW5kKHNzcmMpICE9IHNvdXJjZXNfLmVuZCgpICYmIHNvdXJjZXNfLmF0
KHNzcmMpICE9IG51bGxwdHI7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6QWRkUmVj
dlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSB7CisgIGlmICghUnRwSGVscGVyPFZpZGVv
TWVkaWFDaGFubmVsPjo6QWRkUmVjdlN0cmVhbShzcCkpCisgICAgcmV0dXJuIGZhbHNlOworICBz
aW5rc19bc3AuZmlyc3Rfc3NyYygpXSA9IE5VTEw7CisgIHJldHVybiB0cnVlOworfQorYm9vbCBG
YWtlVmlkZW9NZWRpYUNoYW5uZWw6OlJlbW92ZVJlY3ZTdHJlYW0odWludDMyX3Qgc3NyYykgewor
ICBpZiAoIVJ0cEhlbHBlcjxWaWRlb01lZGlhQ2hhbm5lbD46OlJlbW92ZVJlY3ZTdHJlYW0oc3Ny
YykpCisgICAgcmV0dXJuIGZhbHNlOworICBzaW5rc18uZXJhc2Uoc3NyYyk7CisgIHJldHVybiB0
cnVlOworfQordm9pZCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OkZpbGxCaXRyYXRlSW5mbyhCYW5k
d2lkdGhFc3RpbWF0aW9uSW5mbyogYndlX2luZm8pIHsKK30KK2Jvb2wgRmFrZVZpZGVvTWVkaWFD
aGFubmVsOjpHZXRTdGF0cyhWaWRlb01lZGlhSW5mbyogaW5mbykgeworICByZXR1cm4gZmFsc2U7
Cit9CitzdGQ6OnZlY3Rvcjx3ZWJydGM6OlJ0cFNvdXJjZT4gRmFrZVZpZGVvTWVkaWFDaGFubmVs
OjpHZXRTb3VyY2VzKAorICAgIHVpbnQzMl90IHNzcmMpIGNvbnN0IHsKKyAgcmV0dXJuIHt9Owor
fQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OlNldFJlY3ZDb2RlY3MoCisgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNvZGVjcykgeworICBpZiAoZmFpbF9zZXRfcmVjdl9j
b2RlY3MoKSkgeworICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0UmVjdkNvZGVjcy4KKyAg
ICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmVjdl9jb2RlY3NfID0gY29kZWNzOworICByZXR1cm4g
dHJ1ZTsKK30KK2Jvb2wgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpTZXRTZW5kQ29kZWNzKAorICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBjb2RlY3MpIHsKKyAgaWYgKGZhaWxfc2V0
X3NlbmRfY29kZWNzKCkpIHsKKyAgICAvLyBGYWtlIHRoZSBmYWlsdXJlIGluIFNldFNlbmRDb2Rl
Y3MuCisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHNlbmRfY29kZWNzXyA9IGNvZGVjczsKKwor
ICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpTZXRPcHRpb25z
KGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykgeworICBvcHRpb25zXyA9IG9wdGlvbnM7Cisg
IHJldHVybiB0cnVlOworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OlNldE1heFNlbmRC
YW5kd2lkdGgoaW50IGJwcykgeworICBtYXhfYnBzXyA9IGJwczsKKyAgcmV0dXJuIHRydWU7Cit9
CisKK0Zha2VEYXRhTWVkaWFDaGFubmVsOjpGYWtlRGF0YU1lZGlhQ2hhbm5lbCh2b2lkKiB1bnVz
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGF0
YU9wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBzZW5kX2Jsb2NrZWRfKGZhbHNlKSwgbWF4X2Jwc18o
LTEpIHt9CitGYWtlRGF0YU1lZGlhQ2hhbm5lbDo6fkZha2VEYXRhTWVkaWFDaGFubmVsKCkge30K
K2NvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIEZha2VEYXRhTWVkaWFDaGFubmVsOjpyZWN2
X2NvZGVjcygpIGNvbnN0IHsKKyAgcmV0dXJuIHJlY3ZfY29kZWNzXzsKK30KK2NvbnN0IHN0ZDo6
dmVjdG9yPERhdGFDb2RlYz4mIEZha2VEYXRhTWVkaWFDaGFubmVsOjpzZW5kX2NvZGVjcygpIGNv
bnN0IHsKKyAgcmV0dXJuIHNlbmRfY29kZWNzXzsKK30KK2NvbnN0IHN0ZDo6dmVjdG9yPERhdGFD
b2RlYz4mIEZha2VEYXRhTWVkaWFDaGFubmVsOjpjb2RlY3MoKSBjb25zdCB7CisgIHJldHVybiBz
ZW5kX2NvZGVjcygpOworfQoraW50IEZha2VEYXRhTWVkaWFDaGFubmVsOjptYXhfYnBzKCkgY29u
c3QgeworICByZXR1cm4gbWF4X2Jwc187Cit9Citib29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpT
ZXRTZW5kUGFyYW1ldGVycyhjb25zdCBEYXRhU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgeworICBz
ZXRfc2VuZF9ydGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOworICByZXR1cm4gKFNldFNlbmRD
b2RlY3MocGFyYW1zLmNvZGVjcykgJiYKKyAgICAgICAgICBTZXRNYXhTZW5kQmFuZHdpZHRoKHBh
cmFtcy5tYXhfYmFuZHdpZHRoX2JwcykpOworfQorYm9vbCBGYWtlRGF0YU1lZGlhQ2hhbm5lbDo6
U2V0UmVjdlBhcmFtZXRlcnMoY29uc3QgRGF0YVJlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKKyAg
c2V0X3JlY3ZfcnRjcF9wYXJhbWV0ZXJzKHBhcmFtcy5ydGNwKTsKKyAgcmV0dXJuIFNldFJlY3ZD
b2RlY3MocGFyYW1zLmNvZGVjcyk7Cit9Citib29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpTZXRT
ZW5kKGJvb2wgc2VuZCkgeworICByZXR1cm4gc2V0X3NlbmRpbmcoc2VuZCk7Cit9Citib29sIEZh
a2VEYXRhTWVkaWFDaGFubmVsOjpTZXRSZWNlaXZlKGJvb2wgcmVjZWl2ZSkgeworICBzZXRfcGxh
eW91dChyZWNlaXZlKTsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VEYXRhTWVkaWFDaGFu
bmVsOjpBZGRSZWN2U3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIHsKKyAgaWYgKCFSdHBI
ZWxwZXI8RGF0YU1lZGlhQ2hhbm5lbD46OkFkZFJlY3ZTdHJlYW0oc3ApKQorICAgIHJldHVybiBm
YWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpSZW1v
dmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMpIHsKKyAgaWYgKCFSdHBIZWxwZXI8RGF0YU1lZGlh
Q2hhbm5lbD46OlJlbW92ZVJlY3ZTdHJlYW0oc3NyYykpCisgICAgcmV0dXJuIGZhbHNlOworICBy
ZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZURhdGFNZWRpYUNoYW5uZWw6OlNlbmREYXRhKGNvbnN0
IFNlbmREYXRhUGFyYW1zJiBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBwYXlsb2FkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2VuZERhdGFSZXN1bHQqIHJlc3VsdCkgeworICBpZiAo
c2VuZF9ibG9ja2VkXykgeworICAgICpyZXN1bHQgPSBTRFJfQkxPQ0s7CisgICAgcmV0dXJuIGZh
bHNlOworICB9IGVsc2UgeworICAgIGxhc3Rfc2VudF9kYXRhX3BhcmFtc18gPSBwYXJhbXM7Cisg
ICAgbGFzdF9zZW50X2RhdGFfID0gc3RkOjpzdHJpbmcocGF5bG9hZC5kYXRhPGNoYXI+KCksIHBh
eWxvYWQuc2l6ZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorfQorU2VuZERhdGFQYXJhbXMg
RmFrZURhdGFNZWRpYUNoYW5uZWw6Omxhc3Rfc2VudF9kYXRhX3BhcmFtcygpIHsKKyAgcmV0dXJu
IGxhc3Rfc2VudF9kYXRhX3BhcmFtc187Cit9CitzdGQ6OnN0cmluZyBGYWtlRGF0YU1lZGlhQ2hh
bm5lbDo6bGFzdF9zZW50X2RhdGEoKSB7CisgIHJldHVybiBsYXN0X3NlbnRfZGF0YV87Cit9Citi
b29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjppc19zZW5kX2Jsb2NrZWQoKSB7CisgIHJldHVybiBz
ZW5kX2Jsb2NrZWRfOworfQordm9pZCBGYWtlRGF0YU1lZGlhQ2hhbm5lbDo6c2V0X3NlbmRfYmxv
Y2tlZChib29sIGJsb2NrZWQpIHsKKyAgc2VuZF9ibG9ja2VkXyA9IGJsb2NrZWQ7Cit9Citib29s
IEZha2VEYXRhTWVkaWFDaGFubmVsOjpTZXRSZWN2Q29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPERh
dGFDb2RlYz4mIGNvZGVjcykgeworICBpZiAoZmFpbF9zZXRfcmVjdl9jb2RlY3MoKSkgeworICAg
IC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0UmVjdkNvZGVjcy4KKyAgICByZXR1cm4gZmFsc2U7
CisgIH0KKyAgcmVjdl9jb2RlY3NfID0gY29kZWNzOworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wg
RmFrZURhdGFNZWRpYUNoYW5uZWw6OlNldFNlbmRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8RGF0
YUNvZGVjPiYgY29kZWNzKSB7CisgIGlmIChmYWlsX3NldF9zZW5kX2NvZGVjcygpKSB7CisgICAg
Ly8gRmFrZSB0aGUgZmFpbHVyZSBpbiBTZXRTZW5kQ29kZWNzLgorICAgIHJldHVybiBmYWxzZTsK
KyAgfQorICBzZW5kX2NvZGVjc18gPSBjb2RlY3M7CisgIHJldHVybiB0cnVlOworfQorYm9vbCBG
YWtlRGF0YU1lZGlhQ2hhbm5lbDo6U2V0TWF4U2VuZEJhbmR3aWR0aChpbnQgYnBzKSB7CisgIG1h
eF9icHNfID0gYnBzOworICByZXR1cm4gdHJ1ZTsKK30KKworRmFrZVZvaWNlRW5naW5lOjpGYWtl
Vm9pY2VFbmdpbmUoKSA6IGZhaWxfY3JlYXRlX2NoYW5uZWxfKGZhbHNlKSB7CisgIC8vIEFkZCBh
IGZha2UgYXVkaW8gY29kZWMuIE5vdGUgdGhhdCB0aGUgbmFtZSBtdXN0IG5vdCBiZSAiIiBhcyB0
aGVyZSBhcmUKKyAgLy8gc2FuaXR5IGNoZWNrcyBhZ2FpbnN0IHRoYXQuCisgIGNvZGVjc18ucHVz
aF9iYWNrKEF1ZGlvQ29kZWMoMTAxLCAiZmFrZV9hdWRpb19jb2RlYyIsIDAsIDAsIDEpKTsKK30K
K1J0cENhcGFiaWxpdGllcyBGYWtlVm9pY2VFbmdpbmU6OkdldENhcGFiaWxpdGllcygpIGNvbnN0
IHsKKyAgcmV0dXJuIFJ0cENhcGFiaWxpdGllcygpOworfQordm9pZCBGYWtlVm9pY2VFbmdpbmU6
OkluaXQoKSB7fQorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4gRmFrZVZv
aWNlRW5naW5lOjpHZXRBdWRpb1N0YXRlKCkgY29uc3QgeworICByZXR1cm4gcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4oKTsKK30KK1ZvaWNlTWVkaWFDaGFubmVsKiBGYWtl
Vm9pY2VFbmdpbmU6OkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICB3ZWJydGM6OkNhbGwqIGNhbGws
CisgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKKyAgICBjb25zdCBBdWRpb09wdGlvbnMm
IG9wdGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cykgeworICBpZiAoZmFpbF9jcmVhdGVfY2hhbm5lbF8pIHsKKyAgICByZXR1cm4gbnVsbHB0cjsK
KyAgfQorCisgIEZha2VWb2ljZU1lZGlhQ2hhbm5lbCogY2ggPSBuZXcgRmFrZVZvaWNlTWVkaWFD
aGFubmVsKHRoaXMsIG9wdGlvbnMpOworICBjaGFubmVsc18ucHVzaF9iYWNrKGNoKTsKKyAgcmV0
dXJuIGNoOworfQorRmFrZVZvaWNlTWVkaWFDaGFubmVsKiBGYWtlVm9pY2VFbmdpbmU6OkdldENo
YW5uZWwoc2l6ZV90IGluZGV4KSB7CisgIHJldHVybiAoY2hhbm5lbHNfLnNpemUoKSA+IGluZGV4
KSA/IGNoYW5uZWxzX1tpbmRleF0gOiBOVUxMOworfQordm9pZCBGYWtlVm9pY2VFbmdpbmU6OlVu
cmVnaXN0ZXJDaGFubmVsKFZvaWNlTWVkaWFDaGFubmVsKiBjaGFubmVsKSB7CisgIGNoYW5uZWxz
Xy5lcmFzZShzdGQ6OmZpbmQoY2hhbm5lbHNfLmJlZ2luKCksIGNoYW5uZWxzXy5lbmQoKSwgY2hh
bm5lbCkpOworfQorY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIEZha2VWb2ljZUVuZ2lu
ZTo6c2VuZF9jb2RlY3MoKSBjb25zdCB7CisgIHJldHVybiBjb2RlY3NfOworfQorY29uc3Qgc3Rk
Ojp2ZWN0b3I8QXVkaW9Db2RlYz4mIEZha2VWb2ljZUVuZ2luZTo6cmVjdl9jb2RlY3MoKSBjb25z
dCB7CisgIHJldHVybiBjb2RlY3NfOworfQordm9pZCBGYWtlVm9pY2VFbmdpbmU6OlNldENvZGVj
cyhjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKSB7CisgIGNvZGVjc18gPSBj
b2RlY3M7Cit9CitpbnQgRmFrZVZvaWNlRW5naW5lOjpHZXRJbnB1dExldmVsKCkgeworICByZXR1
cm4gMDsKK30KK2Jvb2wgRmFrZVZvaWNlRW5naW5lOjpTdGFydEFlY0R1bXAocnRjOjpQbGF0Zm9y
bUZpbGUgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBt
YXhfc2l6ZV9ieXRlcykgeworICByZXR1cm4gZmFsc2U7Cit9Cit2b2lkIEZha2VWb2ljZUVuZ2lu
ZTo6U3RvcEFlY0R1bXAoKSB7fQorYm9vbCBGYWtlVm9pY2VFbmdpbmU6OlN0YXJ0UnRjRXZlbnRM
b2cocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgbWF4X3NpemVfYnl0ZXMpIHsKKyAgcmV0dXJuIGZhbHNlOworfQor
dm9pZCBGYWtlVm9pY2VFbmdpbmU6OlN0b3BSdGNFdmVudExvZygpIHt9CisKK0Zha2VWaWRlb0Vu
Z2luZTo6RmFrZVZpZGVvRW5naW5lKCkKKyAgICA6IGNhcHR1cmVfKGZhbHNlKSwgZmFpbF9jcmVh
dGVfY2hhbm5lbF8oZmFsc2UpIHsKKyAgLy8gQWRkIGEgZmFrZSB2aWRlbyBjb2RlYy4gTm90ZSB0
aGF0IHRoZSBuYW1lIG11c3Qgbm90IGJlICIiIGFzIHRoZXJlIGFyZQorICAvLyBzYW5pdHkgY2hl
Y2tzIGFnYWluc3QgdGhhdC4KKyAgY29kZWNzXy5wdXNoX2JhY2soVmlkZW9Db2RlYygwLCAiZmFr
ZV92aWRlb19jb2RlYyIpKTsKK30KK1J0cENhcGFiaWxpdGllcyBGYWtlVmlkZW9FbmdpbmU6Okdl
dENhcGFiaWxpdGllcygpIGNvbnN0IHsKKyAgcmV0dXJuIFJ0cENhcGFiaWxpdGllcygpOworfQor
Ym9vbCBGYWtlVmlkZW9FbmdpbmU6OlNldE9wdGlvbnMoY29uc3QgVmlkZW9PcHRpb25zJiBvcHRp
b25zKSB7CisgIG9wdGlvbnNfID0gb3B0aW9uczsKKyAgcmV0dXJuIHRydWU7Cit9CitWaWRlb01l
ZGlhQ2hhbm5lbCogRmFrZVZpZGVvRW5naW5lOjpDcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgd2Vi
cnRjOjpDYWxsKiBjYWxsLAorICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCisgICAgY29u
c3QgVmlkZW9PcHRpb25zJiBvcHRpb25zLAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9u
cyYgY3J5cHRvX29wdGlvbnMpIHsKKyAgaWYgKGZhaWxfY3JlYXRlX2NoYW5uZWxfKSB7CisgICAg
cmV0dXJuIG51bGxwdHI7CisgIH0KKworICBGYWtlVmlkZW9NZWRpYUNoYW5uZWwqIGNoID0gbmV3
IEZha2VWaWRlb01lZGlhQ2hhbm5lbCh0aGlzLCBvcHRpb25zKTsKKyAgY2hhbm5lbHNfLmVtcGxh
Y2VfYmFjayhjaCk7CisgIHJldHVybiBjaDsKK30KK0Zha2VWaWRlb01lZGlhQ2hhbm5lbCogRmFr
ZVZpZGVvRW5naW5lOjpHZXRDaGFubmVsKHNpemVfdCBpbmRleCkgeworICByZXR1cm4gKGNoYW5u
ZWxzXy5zaXplKCkgPiBpbmRleCkgPyBjaGFubmVsc19baW5kZXhdIDogbnVsbHB0cjsKK30KK3Zv
aWQgRmFrZVZpZGVvRW5naW5lOjpVbnJlZ2lzdGVyQ2hhbm5lbChWaWRlb01lZGlhQ2hhbm5lbCog
Y2hhbm5lbCkgeworICBhdXRvIGl0ID0gc3RkOjpmaW5kKGNoYW5uZWxzXy5iZWdpbigpLCBjaGFu
bmVsc18uZW5kKCksIGNoYW5uZWwpOworICBSVENfRENIRUNLKGl0ICE9IGNoYW5uZWxzXy5lbmQo
KSk7CisgIGNoYW5uZWxzXy5lcmFzZShpdCk7Cit9CitzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiBG
YWtlVmlkZW9FbmdpbmU6OmNvZGVjcygpIGNvbnN0IHsKKyAgcmV0dXJuIGNvZGVjc187Cit9Cit2
b2lkIEZha2VWaWRlb0VuZ2luZTo6U2V0Q29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29k
ZWM+IGNvZGVjcykgeworICBjb2RlY3NfID0gY29kZWNzOworfQorYm9vbCBGYWtlVmlkZW9Fbmdp
bmU6OlNldENhcHR1cmUoYm9vbCBjYXB0dXJlKSB7CisgIGNhcHR1cmVfID0gY2FwdHVyZTsKKyAg
cmV0dXJuIHRydWU7Cit9CisKK0Zha2VNZWRpYUVuZ2luZTo6RmFrZU1lZGlhRW5naW5lKCkKKyAg
ICA6IENvbXBvc2l0ZU1lZGlhRW5naW5lKGFic2w6Om1ha2VfdW5pcXVlPEZha2VWb2ljZUVuZ2lu
ZT4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VW
aWRlb0VuZ2luZT4oKSksCisgICAgICB2b2ljZV8oc3RhdGljX2Nhc3Q8RmFrZVZvaWNlRW5naW5l
Kj4oJnZvaWNlKCkpKSwKKyAgICAgIHZpZGVvXyhzdGF0aWNfY2FzdDxGYWtlVmlkZW9FbmdpbmUq
PigmdmlkZW8oKSkpIHt9CitGYWtlTWVkaWFFbmdpbmU6On5GYWtlTWVkaWFFbmdpbmUoKSB7fQor
dm9pZCBGYWtlTWVkaWFFbmdpbmU6OlNldEF1ZGlvQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPEF1
ZGlvQ29kZWM+JiBjb2RlY3MpIHsKKyAgdm9pY2VfLT5TZXRDb2RlY3MoY29kZWNzKTsKK30KK3Zv
aWQgRmFrZU1lZGlhRW5naW5lOjpTZXRWaWRlb0NvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRl
b0NvZGVjPiYgY29kZWNzKSB7CisgIHZpZGVvXy0+U2V0Q29kZWNzKGNvZGVjcyk7Cit9CisKK0Zh
a2VWb2ljZU1lZGlhQ2hhbm5lbCogRmFrZU1lZGlhRW5naW5lOjpHZXRWb2ljZUNoYW5uZWwoc2l6
ZV90IGluZGV4KSB7CisgIHJldHVybiB2b2ljZV8tPkdldENoYW5uZWwoaW5kZXgpOworfQorRmFr
ZVZpZGVvTWVkaWFDaGFubmVsKiBGYWtlTWVkaWFFbmdpbmU6OkdldFZpZGVvQ2hhbm5lbChzaXpl
X3QgaW5kZXgpIHsKKyAgcmV0dXJuIHZpZGVvXy0+R2V0Q2hhbm5lbChpbmRleCk7Cit9CisKK3Zv
aWQgRmFrZU1lZGlhRW5naW5lOjpzZXRfZmFpbF9jcmVhdGVfY2hhbm5lbChib29sIGZhaWwpIHsK
KyAgdm9pY2VfLT5mYWlsX2NyZWF0ZV9jaGFubmVsXyA9IGZhaWw7CisgIHZpZGVvXy0+ZmFpbF9j
cmVhdGVfY2hhbm5lbF8gPSBmYWlsOworfQorCitEYXRhTWVkaWFDaGFubmVsKiBGYWtlRGF0YUVu
Z2luZTo6Q3JlYXRlQ2hhbm5lbChjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnKSB7CisgIEZha2VE
YXRhTWVkaWFDaGFubmVsKiBjaCA9IG5ldyBGYWtlRGF0YU1lZGlhQ2hhbm5lbCh0aGlzLCBEYXRh
T3B0aW9ucygpKTsKKyAgY2hhbm5lbHNfLnB1c2hfYmFjayhjaCk7CisgIHJldHVybiBjaDsKK30K
K0Zha2VEYXRhTWVkaWFDaGFubmVsKiBGYWtlRGF0YUVuZ2luZTo6R2V0Q2hhbm5lbChzaXplX3Qg
aW5kZXgpIHsKKyAgcmV0dXJuIChjaGFubmVsc18uc2l6ZSgpID4gaW5kZXgpID8gY2hhbm5lbHNf
W2luZGV4XSA6IE5VTEw7Cit9Cit2b2lkIEZha2VEYXRhRW5naW5lOjpVbnJlZ2lzdGVyQ2hhbm5l
bChEYXRhTWVkaWFDaGFubmVsKiBjaGFubmVsKSB7CisgIGNoYW5uZWxzXy5lcmFzZShzdGQ6OmZp
bmQoY2hhbm5lbHNfLmJlZ2luKCksIGNoYW5uZWxzXy5lbmQoKSwgY2hhbm5lbCkpOworfQordm9p
ZCBGYWtlRGF0YUVuZ2luZTo6U2V0RGF0YUNvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxEYXRhQ29k
ZWM+JiBkYXRhX2NvZGVjcykgeworICBkYXRhX2NvZGVjc18gPSBkYXRhX2NvZGVjczsKK30KK2Nv
bnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIEZha2VEYXRhRW5naW5lOjpkYXRhX2NvZGVjcygp
IHsKKyAgcmV0dXJuIGRhdGFfY29kZWNzXzsKK30KKworfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2Zha2VtZWRpYWVuZ2luZS5oCmluZGV4IDYyYmQ2YmE1
YmE1MGYyMTRhNjlmOWY3MWJiNDM2ZjNlOWYxNjFkZWEuLmUzYTA2Mzg3MTUyODJjYmE3YTIxYmIx
Zjc1ZGMxZWE2NmZjZDY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtlbWVkaWFl
bmdpbmUuaApAQCAtMTcsMTAgKzE3LDggQEAKICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3Ry
aW5nPgogI2luY2x1ZGUgPHR1cGxlPgotI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCi0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL2Nh
bGwvYXVkaW9fc2luay5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVkaW9zb3VyY2UuaCIKICNp
bmNsdWRlICJtZWRpYS9iYXNlL21lZGlhZW5naW5lLmgiCkBAIC0yOCwxMCArMjYsOCBAQAogI2lu
Y2x1ZGUgIm1lZGlhL2Jhc2Uvc3RyZWFtcGFyYW1zLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5l
L3dlYnJ0Y3ZpZGVvZW5naW5lLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbmV0d29ya3JvdXRlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIK
IAogdXNpbmcgd2VicnRjOjpSdHBFeHRlbnNpb247CiAKQEAgLTEyOCw3ICsxMjQsNyBAQCBjbGFz
cyBSdHBIZWxwZXIgOiBwdWJsaWMgQmFzZSB7CiAgICAgfQogICAgIHJlY2VpdmVfc3RyZWFtc18u
cHVzaF9iYWNrKHNwKTsKICAgICBydHBfcmVjZWl2ZV9wYXJhbWV0ZXJzX1tzcC5maXJzdF9zc3Jj
KCldID0KLSAgICAgICAgQ3JlYXRlUnRwUGFyYW1ldGVyc1dpdGhPbmVFbmNvZGluZygpOworICAg
ICAgICBDcmVhdGVSdHBQYXJhbWV0ZXJzV2l0aEVuY29kaW5ncyhzcCk7CiAgICAgcmV0dXJuIHRy
dWU7CiAgIH0KICAgdmlydHVhbCBib29sIFJlbW92ZVJlY3ZTdHJlYW0odWludDMyX3Qgc3NyYykg
ewpAQCAtMjU2LDYgKzI1MiwxMiBAQCBjbGFzcyBSdHBIZWxwZXIgOiBwdWJsaWMgQmFzZSB7CiAg
ICAgcmVjdl9leHRlbnNpb25zXyA9IGV4dGVuc2lvbnM7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0K
KyAgYm9vbCBTZXRTZW5kRXh0bWFwQWxsb3dNaXhlZChib29sIGV4dG1hcF9hbGxvd19taXhlZCkg
eworICAgIGlmIChCYXNlOjpFeHRtYXBBbGxvd01peGVkKCkgIT0gZXh0bWFwX2FsbG93X21peGVk
KSB7CisgICAgICBCYXNlOjpTZXRFeHRtYXBBbGxvd01peGVkKGV4dG1hcF9hbGxvd19taXhlZCk7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworICB9CiAgIGJvb2wgU2V0U2VuZFJ0cEhlYWRlckV4
dGVuc2lvbnMoY29uc3Qgc3RkOjp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiYgZXh0ZW5zaW9ucykgewog
ICAgIHNlbmRfZXh0ZW5zaW9uc18gPSBleHRlbnNpb25zOwogICAgIHJldHVybiB0cnVlOwpAQCAt
MjY3LDExICsyNjksMTEgQEAgY2xhc3MgUnRwSGVscGVyIDogcHVibGljIEJhc2UgewogICAgIHJl
Y3ZfcnRjcF9wYXJhbWV0ZXJzXyA9IHBhcmFtczsKICAgfQogICB2aXJ0dWFsIHZvaWQgT25QYWNr
ZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykg
ewogICAgIHJ0cF9wYWNrZXRzXy5wdXNoX2JhY2soc3RkOjpzdHJpbmcocGFja2V0LT5kYXRhPGNo
YXI+KCksIHBhY2tldC0+c2l6ZSgpKSk7CiAgIH0KICAgdmlydHVhbCB2b2lkIE9uUnRjcFJlY2Vp
dmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgICBydGNw
X3BhY2tldHNfLnB1c2hfYmFjayhzdGQ6OnN0cmluZyhwYWNrZXQtPmRhdGE8Y2hhcj4oKSwgcGFj
a2V0LT5zaXplKCkpKTsKICAgfQogICB2aXJ0dWFsIHZvaWQgT25SZWFkeVRvU2VuZChib29sIHJl
YWR5KSB7IHJlYWR5X3RvX3NlbmRfID0gcmVhZHk7IH0KQEAgLTMxMiwxODcgKzMxNCw3MiBAQCBj
bGFzcyBSdHBIZWxwZXIgOiBwdWJsaWMgQmFzZSB7CiBjbGFzcyBGYWtlVm9pY2VNZWRpYUNoYW5u
ZWwgOiBwdWJsaWMgUnRwSGVscGVyPFZvaWNlTWVkaWFDaGFubmVsPiB7CiAgcHVibGljOgogICBz
dHJ1Y3QgRHRtZkluZm8gewotICAgIER0bWZJbmZvKHVpbnQzMl90IHNzcmMsIGludCBldmVudF9j
b2RlLCBpbnQgZHVyYXRpb24pCi0gICAgICAgIDogc3NyYyhzc3JjKSwgZXZlbnRfY29kZShldmVu
dF9jb2RlKSwgZHVyYXRpb24oZHVyYXRpb24pIHt9CisgICAgRHRtZkluZm8odWludDMyX3Qgc3Ny
YywgaW50IGV2ZW50X2NvZGUsIGludCBkdXJhdGlvbik7CiAgICAgdWludDMyX3Qgc3NyYzsKICAg
ICBpbnQgZXZlbnRfY29kZTsKICAgICBpbnQgZHVyYXRpb247CiAgIH07CiAgIGV4cGxpY2l0IEZh
a2VWb2ljZU1lZGlhQ2hhbm5lbChGYWtlVm9pY2VFbmdpbmUqIGVuZ2luZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykKLSAgICAg
IDogZW5naW5lXyhlbmdpbmUpLCBtYXhfYnBzXygtMSkgewotICAgIG91dHB1dF9zY2FsaW5nc19b
MF0gPSAxLjA7ICAvLyBGb3IgZGVmYXVsdCBjaGFubmVsLgotICAgIFNldE9wdGlvbnMob3B0aW9u
cyk7Ci0gIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0
aW9ucyYgb3B0aW9ucyk7CiAgIH5GYWtlVm9pY2VNZWRpYUNoYW5uZWwoKTsKLSAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8QXVkaW9Db2RlYz4mIHJlY3ZfY29kZWNzKCkgY29uc3QgeyByZXR1cm4gcmVjdl9j
b2RlY3NfOyB9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBzZW5kX2NvZGVjcygp
IGNvbnN0IHsgcmV0dXJuIHNlbmRfY29kZWNzXzsgfQotICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRp
b0NvZGVjPiYgY29kZWNzKCkgY29uc3QgeyByZXR1cm4gc2VuZF9jb2RlY3MoKTsgfQotICBjb25z
dCBzdGQ6OnZlY3RvcjxEdG1mSW5mbz4mIGR0bWZfaW5mb19xdWV1ZSgpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gZHRtZl9pbmZvX3F1ZXVlXzsKLSAgfQotICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlv
bnMoKSBjb25zdCB7IHJldHVybiBvcHRpb25zXzsgfQotICBpbnQgbWF4X2JwcygpIGNvbnN0IHsg
cmV0dXJuIG1heF9icHNfOyB9Ci0gIHZpcnR1YWwgYm9vbCBTZXRTZW5kUGFyYW1ldGVycyhjb25z
dCBBdWRpb1NlbmRQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKLSAgICBzZXRfc2VuZF9ydGNwX3BhcmFt
ZXRlcnMocGFyYW1zLnJ0Y3ApOwotICAgIHJldHVybiAoU2V0U2VuZENvZGVjcyhwYXJhbXMuY29k
ZWNzKSAmJgotICAgICAgICAgICAgU2V0U2VuZFJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1zLmV4
dGVuc2lvbnMpICYmCi0gICAgICAgICAgICBTZXRNYXhTZW5kQmFuZHdpZHRoKHBhcmFtcy5tYXhf
YmFuZHdpZHRoX2JwcykgJiYKLSAgICAgICAgICAgIFNldE9wdGlvbnMocGFyYW1zLm9wdGlvbnMp
KTsKLSAgfQotCi0gIHZpcnR1YWwgYm9vbCBTZXRSZWN2UGFyYW1ldGVycyhjb25zdCBBdWRpb1Jl
Y3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKLSAgICBzZXRfcmVjdl9ydGNwX3BhcmFtZXRlcnMocGFy
YW1zLnJ0Y3ApOwotICAgIHJldHVybiAoU2V0UmVjdkNvZGVjcyhwYXJhbXMuY29kZWNzKSAmJgot
ICAgICAgICAgICAgU2V0UmVjdlJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1zLmV4dGVuc2lvbnMp
KTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRQbGF5b3V0KGJvb2wgcGxheW91dCkgeyBzZXRf
cGxheW91dChwbGF5b3V0KTsgfQotICB2aXJ0dWFsIHZvaWQgU2V0U2VuZChib29sIHNlbmQpIHsg
c2V0X3NlbmRpbmcoc2VuZCk7IH0KLSAgdmlydHVhbCBib29sIFNldEF1ZGlvU2VuZCh1aW50MzJf
dCBzc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyogb3B0aW9ucywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBdWRpb1NvdXJjZSogc291cmNlKSB7Ci0gICAgaWYgKCFT
ZXRMb2NhbFNvdXJjZShzc3JjLCBzb3VyY2UpKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIGlmICghUnRwSGVscGVyPFZvaWNlTWVkaWFDaGFubmVsPjo6TXV0ZVN0cmVhbShzc3Jj
LCAhZW5hYmxlKSkgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoZW5hYmxl
ICYmIG9wdGlvbnMpIHsKLSAgICAgIHJldHVybiBTZXRPcHRpb25zKCpvcHRpb25zKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4m
IHJlY3ZfY29kZWNzKCkgY29uc3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBz
ZW5kX2NvZGVjcygpIGNvbnN0OworICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29k
ZWNzKCkgY29uc3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPER0bWZJbmZvPiYgZHRtZl9pbmZvX3F1
ZXVlKCkgY29uc3Q7CisgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0OworICBp
bnQgbWF4X2JwcygpIGNvbnN0OworICBib29sIFNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0IEF1ZGlv
U2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgb3ZlcnJpZGU7CiAKLSAgYm9vbCBIYXNTb3VyY2UodWlu
dDMyX3Qgc3NyYykgY29uc3QgewotICAgIHJldHVybiBsb2NhbF9zaW5rc18uZmluZChzc3JjKSAh
PSBsb2NhbF9zaW5rc18uZW5kKCk7Ci0gIH0KKyAgYm9vbCBTZXRSZWN2UGFyYW1ldGVycyhjb25z
dCBBdWRpb1JlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIG92ZXJyaWRlOwogCi0gIHZpcnR1YWwgYm9v
bCBBZGRSZWN2U3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIHsKLSAgICBpZiAoIVJ0cEhl
bHBlcjxWb2ljZU1lZGlhQ2hhbm5lbD46OkFkZFJlY3ZTdHJlYW0oc3ApKQotICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIG91dHB1dF9zY2FsaW5nc19bc3AuZmlyc3Rfc3NyYygpXSA9IDEuMDsKLSAg
ICByZXR1cm4gdHJ1ZTsKLSAgfQotICB2aXJ0dWFsIGJvb2wgUmVtb3ZlUmVjdlN0cmVhbSh1aW50
MzJfdCBzc3JjKSB7Ci0gICAgaWYgKCFSdHBIZWxwZXI8Vm9pY2VNZWRpYUNoYW5uZWw+OjpSZW1v
dmVSZWN2U3RyZWFtKHNzcmMpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG91dHB1dF9zY2Fs
aW5nc18uZXJhc2Uoc3NyYyk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAgdm9pZCBTZXRQbGF5
b3V0KGJvb2wgcGxheW91dCkgb3ZlcnJpZGU7CisgIHZvaWQgU2V0U2VuZChib29sIHNlbmQpIG92
ZXJyaWRlOworICBib29sIFNldEF1ZGlvU2VuZCh1aW50MzJfdCBzc3JjLAorICAgICAgICAgICAg
ICAgICAgICBib29sIGVuYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRp
b25zKiBvcHRpb25zLAorICAgICAgICAgICAgICAgICAgICBBdWRpb1NvdXJjZSogc291cmNlKSBv
dmVycmlkZTsKIAotICB2aXJ0dWFsIGJvb2wgQ2FuSW5zZXJ0RHRtZigpIHsKLSAgICBmb3IgKHN0
ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNlbmRfY29kZWNzXy5i
ZWdpbigpOwotICAgICAgICAgaXQgIT0gc2VuZF9jb2RlY3NfLmVuZCgpOyArK2l0KSB7Ci0gICAg
ICAvLyBGaW5kIHRoZSBEVE1GIHRlbGVwaG9uZSBldmVudCAiY29kZWMiLgotICAgICAgaWYgKF9z
dHJpY21wKGl0LT5uYW1lLmNfc3RyKCksICJ0ZWxlcGhvbmUtZXZlbnQiKSA9PSAwKSB7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0K
LSAgdmlydHVhbCBib29sIEluc2VydER0bWYodWludDMyX3Qgc3NyYywgaW50IGV2ZW50X2NvZGUs
IGludCBkdXJhdGlvbikgewotICAgIGR0bWZfaW5mb19xdWV1ZV8ucHVzaF9iYWNrKER0bWZJbmZv
KHNzcmMsIGV2ZW50X2NvZGUsIGR1cmF0aW9uKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAg
Ym9vbCBIYXNTb3VyY2UodWludDMyX3Qgc3NyYykgY29uc3Q7CiAKLSAgdmlydHVhbCBib29sIFNl
dE91dHB1dFZvbHVtZSh1aW50MzJfdCBzc3JjLCBkb3VibGUgdm9sdW1lKSB7Ci0gICAgaWYgKDAg
PT0gc3NyYykgewotICAgICAgc3RkOjptYXA8dWludDMyX3QsIGRvdWJsZT46Oml0ZXJhdG9yIGl0
OwotICAgICAgZm9yIChpdCA9IG91dHB1dF9zY2FsaW5nc18uYmVnaW4oKTsgaXQgIT0gb3V0cHV0
X3NjYWxpbmdzXy5lbmQoKTsgKytpdCkgewotICAgICAgICBpdC0+c2Vjb25kID0gdm9sdW1lOwot
ICAgICAgfQotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSBlbHNlIGlmIChvdXRwdXRfc2NhbGlu
Z3NfLmZpbmQoc3NyYykgIT0gb3V0cHV0X3NjYWxpbmdzXy5lbmQoKSkgewotICAgICAgb3V0cHV0
X3NjYWxpbmdzX1tzc3JjXSA9IHZvbHVtZTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgYm9vbCBHZXRPdXRwdXRWb2x1bWUodWludDMyX3Qgc3Ny
YywgZG91YmxlKiB2b2x1bWUpIHsKLSAgICBpZiAob3V0cHV0X3NjYWxpbmdzXy5maW5kKHNzcmMp
ID09IG91dHB1dF9zY2FsaW5nc18uZW5kKCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgKnZv
bHVtZSA9IG91dHB1dF9zY2FsaW5nc19bc3NyY107Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAg
Ym9vbCBBZGRSZWN2U3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIG92ZXJyaWRlOworICBi
b29sIFJlbW92ZVJlY3ZTdHJlYW0odWludDMyX3Qgc3NyYykgb3ZlcnJpZGU7CisKKyAgYm9vbCBD
YW5JbnNlcnREdG1mKCkgb3ZlcnJpZGU7CisgIGJvb2wgSW5zZXJ0RHRtZih1aW50MzJfdCBzc3Jj
LCBpbnQgZXZlbnRfY29kZSwgaW50IGR1cmF0aW9uKSBvdmVycmlkZTsKKworICBib29sIFNldE91
dHB1dFZvbHVtZSh1aW50MzJfdCBzc3JjLCBkb3VibGUgdm9sdW1lKSBvdmVycmlkZTsKKyAgYm9v
bCBHZXRPdXRwdXRWb2x1bWUodWludDMyX3Qgc3NyYywgZG91YmxlKiB2b2x1bWUpOwogCi0gIHZp
cnR1YWwgYm9vbCBHZXRTdGF0cyhWb2ljZU1lZGlhSW5mbyogaW5mbykgeyByZXR1cm4gZmFsc2U7
IH0KKyAgYm9vbCBHZXRTdGF0cyhWb2ljZU1lZGlhSW5mbyogaW5mbykgb3ZlcnJpZGU7CiAKLSAg
dmlydHVhbCB2b2lkIFNldFJhd0F1ZGlvU2luaygKKyAgdm9pZCBTZXRSYXdBdWRpb1NpbmsoCiAg
ICAgICB1aW50MzJfdCBzc3JjLAotICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6QXVkaW9T
aW5rSW50ZXJmYWNlPiBzaW5rKSB7Ci0gICAgc2lua18gPSBzdGQ6Om1vdmUoc2luayk7Ci0gIH0K
KyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkF1ZGlvU2lua0ludGVyZmFjZT4gc2luaykg
b3ZlcnJpZGU7CiAKLSAgdmlydHVhbCBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlJ0cFNvdXJjZT4gR2V0
U291cmNlcyh1aW50MzJfdCBzc3JjKSBjb25zdCB7Ci0gICAgcmV0dXJuIHN0ZDo6dmVjdG9yPHdl
YnJ0Yzo6UnRwU291cmNlPigpOwotICB9CisgIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNl
PiBHZXRTb3VyY2VzKHVpbnQzMl90IHNzcmMpIGNvbnN0IG92ZXJyaWRlOwogCiAgcHJpdmF0ZToK
ICAgY2xhc3MgVm9pY2VDaGFubmVsQXVkaW9TaW5rIDogcHVibGljIEF1ZGlvU291cmNlOjpTaW5r
IHsKICAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBWb2ljZUNoYW5uZWxBdWRpb1NpbmsoQXVkaW9T
b3VyY2UqIHNvdXJjZSkgOiBzb3VyY2VfKHNvdXJjZSkgewotICAgICAgc291cmNlXy0+U2V0U2lu
ayh0aGlzKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+Vm9pY2VDaGFubmVsQXVkaW9TaW5rKCkgewot
ICAgICAgaWYgKHNvdXJjZV8pIHsKLSAgICAgICAgc291cmNlXy0+U2V0U2luayhudWxscHRyKTsK
LSAgICAgIH0KLSAgICB9CisgICAgZXhwbGljaXQgVm9pY2VDaGFubmVsQXVkaW9TaW5rKEF1ZGlv
U291cmNlKiBzb3VyY2UpOworICAgIH5Wb2ljZUNoYW5uZWxBdWRpb1NpbmsoKSBvdmVycmlkZTsK
ICAgICB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiBhdWRpb19kYXRhLAogICAgICAgICAgICAgICAg
IGludCBiaXRzX3Blcl9zYW1wbGUsCiAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlLAog
ICAgICAgICAgICAgICAgIHNpemVfdCBudW1iZXJfb2ZfY2hhbm5lbHMsCi0gICAgICAgICAgICAg
ICAgc2l6ZV90IG51bWJlcl9vZl9mcmFtZXMpIG92ZXJyaWRlIHt9Ci0gICAgdm9pZCBPbkNsb3Nl
KCkgb3ZlcnJpZGUgeyBzb3VyY2VfID0gbnVsbHB0cjsgfQotICAgIEF1ZGlvU291cmNlKiBzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBzb3VyY2VfOyB9CisgICAgICAgICAgICAgICAgc2l6ZV90IG51
bWJlcl9vZl9mcmFtZXMpIG92ZXJyaWRlOworICAgIHZvaWQgT25DbG9zZSgpIG92ZXJyaWRlOwor
ICAgIEF1ZGlvU291cmNlKiBzb3VyY2UoKSBjb25zdDsKIAogICAgcHJpdmF0ZToKICAgICBBdWRp
b1NvdXJjZSogc291cmNlXzsKICAgfTsKIAotICBib29sIFNldFJlY3ZDb2RlY3MoY29uc3Qgc3Rk
Ojp2ZWN0b3I8QXVkaW9Db2RlYz4mIGNvZGVjcykgewotICAgIGlmIChmYWlsX3NldF9yZWN2X2Nv
ZGVjcygpKSB7Ci0gICAgICAvLyBGYWtlIHRoZSBmYWlsdXJlIGluIFNldFJlY3ZDb2RlY3MuCi0g
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJlY3ZfY29kZWNzXyA9IGNvZGVjczsKLSAg
ICByZXR1cm4gdHJ1ZTsKLSAgfQotICBib29sIFNldFNlbmRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0
b3I8QXVkaW9Db2RlYz4mIGNvZGVjcykgewotICAgIGlmIChmYWlsX3NldF9zZW5kX2NvZGVjcygp
KSB7Ci0gICAgICAvLyBGYWtlIHRoZSBmYWlsdXJlIGluIFNldFNlbmRDb2RlY3MuCi0gICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHNlbmRfY29kZWNzXyA9IGNvZGVjczsKLSAgICByZXR1
cm4gdHJ1ZTsKLSAgfQotICBib29sIFNldE1heFNlbmRCYW5kd2lkdGgoaW50IGJwcykgewotICAg
IG1heF9icHNfID0gYnBzOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIGJvb2wgU2V0T3B0aW9u
cyhjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMpIHsKLSAgICAvLyBEb2VzIGEgIm1lcmdlIiBv
ZiBjdXJyZW50IG9wdGlvbnMgYW5kIHNldCBvcHRpb25zLgotICAgIG9wdGlvbnNfLlNldEFsbChv
cHRpb25zKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICBib29sIFNldExvY2FsU291cmNlKHVp
bnQzMl90IHNzcmMsIEF1ZGlvU291cmNlKiBzb3VyY2UpIHsKLSAgICBhdXRvIGl0ID0gbG9jYWxf
c2lua3NfLmZpbmQoc3NyYyk7Ci0gICAgaWYgKHNvdXJjZSkgewotICAgICAgaWYgKGl0ICE9IGxv
Y2FsX3NpbmtzXy5lbmQoKSkgewotICAgICAgICBSVENfQ0hFQ0soaXQtPnNlY29uZC0+c291cmNl
KCkgPT0gc291cmNlKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGxvY2FsX3NpbmtzXy5pbnNl
cnQoc3RkOjptYWtlX3BhaXIoCi0gICAgICAgICAgICBzc3JjLCBhYnNsOjptYWtlX3VuaXF1ZTxW
b2ljZUNoYW5uZWxBdWRpb1Npbms+KHNvdXJjZSkpKTsKLSAgICAgIH0KLSAgICB9IGVsc2Ugewot
ICAgICAgaWYgKGl0ICE9IGxvY2FsX3NpbmtzXy5lbmQoKSkgewotICAgICAgICBsb2NhbF9zaW5r
c18uZXJhc2UoaXQpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBi
b29sIFNldFJlY3ZDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGNvZGVjcyk7
CisgIGJvb2wgU2V0U2VuZENvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29k
ZWNzKTsKKyAgYm9vbCBTZXRNYXhTZW5kQmFuZHdpZHRoKGludCBicHMpOworICBib29sIFNldE9w
dGlvbnMoY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKTsKKyAgYm9vbCBTZXRMb2NhbFNvdXJj
ZSh1aW50MzJfdCBzc3JjLCBBdWRpb1NvdXJjZSogc291cmNlKTsKIAogICBGYWtlVm9pY2VFbmdp
bmUqIGVuZ2luZV87CiAgIHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+IHJlY3ZfY29kZWNzXzsKQEAg
LTUwNiwxMzYgKzM5Myw1NSBAQCBjbGFzcyBGYWtlVm9pY2VNZWRpYUNoYW5uZWwgOiBwdWJsaWMg
UnRwSGVscGVyPFZvaWNlTWVkaWFDaGFubmVsPiB7CiB9OwogCiAvLyBBIGhlbHBlciBmdW5jdGlv
biB0byBjb21wYXJlIHRoZSBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OkR0bWZJbmZvLgotaW5saW5l
IGJvb2wgQ29tcGFyZUR0bWZJbmZvKGNvbnN0IEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6RHRtZklu
Zm8mIGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXZlbnRfY29kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgZHVyYXRpb24pIHsKLSAgcmV0dXJuIChpbmZvLmR1cmF0aW9uID09
IGR1cmF0aW9uICYmIGluZm8uZXZlbnRfY29kZSA9PSBldmVudF9jb2RlICYmCi0gICAgICAgICAg
aW5mby5zc3JjID09IHNzcmMpOwotfQorYm9vbCBDb21wYXJlRHRtZkluZm8oY29uc3QgRmFrZVZv
aWNlTWVkaWFDaGFubmVsOjpEdG1mSW5mbyYgaW5mbywKKyAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IHNzcmMsCisgICAgICAgICAgICAgICAgICAgICBpbnQgZXZlbnRfY29kZSwKKyAgICAg
ICAgICAgICAgICAgICAgIGludCBkdXJhdGlvbik7CiAKIGNsYXNzIEZha2VWaWRlb01lZGlhQ2hh
bm5lbCA6IHB1YmxpYyBSdHBIZWxwZXI8VmlkZW9NZWRpYUNoYW5uZWw+IHsKICBwdWJsaWM6Ci0g
IEZha2VWaWRlb01lZGlhQ2hhbm5lbChGYWtlVmlkZW9FbmdpbmUqIGVuZ2luZSwgY29uc3QgVmlk
ZW9PcHRpb25zJiBvcHRpb25zKQotICAgICAgOiBlbmdpbmVfKGVuZ2luZSksIG1heF9icHNfKC0x
KSB7Ci0gICAgU2V0T3B0aW9ucyhvcHRpb25zKTsKLSAgfQorICBGYWtlVmlkZW9NZWRpYUNoYW5u
ZWwoRmFrZVZpZGVvRW5naW5lKiBlbmdpbmUsIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucyk7
CiAKICAgfkZha2VWaWRlb01lZGlhQ2hhbm5lbCgpOwogCi0gIGNvbnN0IHN0ZDo6dmVjdG9yPFZp
ZGVvQ29kZWM+JiByZWN2X2NvZGVjcygpIGNvbnN0IHsgcmV0dXJuIHJlY3ZfY29kZWNzXzsgfQot
ICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgc2VuZF9jb2RlY3MoKSBjb25zdCB7IHJl
dHVybiBzZW5kX2NvZGVjc187IH0KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNv
ZGVjcygpIGNvbnN0IHsgcmV0dXJuIHNlbmRfY29kZWNzKCk7IH0KLSAgYm9vbCByZW5kZXJpbmco
KSBjb25zdCB7IHJldHVybiBwbGF5b3V0KCk7IH0KLSAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRp
b25zKCkgY29uc3QgeyByZXR1cm4gb3B0aW9uc187IH0KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8Vmlk
ZW9Db2RlYz4mIHJlY3ZfY29kZWNzKCkgY29uc3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVv
Q29kZWM+JiBzZW5kX2NvZGVjcygpIGNvbnN0OworICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0Nv
ZGVjPiYgY29kZWNzKCkgY29uc3Q7CisgIGJvb2wgcmVuZGVyaW5nKCkgY29uc3Q7CisgIGNvbnN0
IFZpZGVvT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0OwogICBjb25zdCBzdGQ6Om1hcDx1aW50MzJf
dCwgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPio+JgotICBzaW5r
cygpIGNvbnN0IHsKLSAgICByZXR1cm4gc2lua3NfOwotICB9Ci0gIGludCBtYXhfYnBzKCkgY29u
c3QgeyByZXR1cm4gbWF4X2Jwc187IH0KLSAgYm9vbCBTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBW
aWRlb1NlbmRQYXJhbWV0ZXJzJiBwYXJhbXMpIG92ZXJyaWRlIHsKLSAgICBzZXRfc2VuZF9ydGNw
X3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOwotICAgIHJldHVybiAoU2V0U2VuZENvZGVjcyhwYXJh
bXMuY29kZWNzKSAmJgotICAgICAgICAgICAgU2V0U2VuZFJ0cEhlYWRlckV4dGVuc2lvbnMocGFy
YW1zLmV4dGVuc2lvbnMpICYmCi0gICAgICAgICAgICBTZXRNYXhTZW5kQmFuZHdpZHRoKHBhcmFt
cy5tYXhfYmFuZHdpZHRoX2JwcykpOwotICB9Ci0gIGJvb2wgU2V0UmVjdlBhcmFtZXRlcnMoY29u
c3QgVmlkZW9SZWN2UGFyYW1ldGVycyYgcGFyYW1zKSBvdmVycmlkZSB7Ci0gICAgc2V0X3JlY3Zf
cnRjcF9wYXJhbWV0ZXJzKHBhcmFtcy5ydGNwKTsKLSAgICByZXR1cm4gKFNldFJlY3ZDb2RlY3Mo
cGFyYW1zLmNvZGVjcykgJiYKLSAgICAgICAgICAgIFNldFJlY3ZSdHBIZWFkZXJFeHRlbnNpb25z
KHBhcmFtcy5leHRlbnNpb25zKSk7Ci0gIH0KLSAgYm9vbCBBZGRTZW5kU3RyZWFtKGNvbnN0IFN0
cmVhbVBhcmFtcyYgc3ApIG92ZXJyaWRlIHsKLSAgICByZXR1cm4gUnRwSGVscGVyPFZpZGVvTWVk
aWFDaGFubmVsPjo6QWRkU2VuZFN0cmVhbShzcCk7Ci0gIH0KLSAgYm9vbCBSZW1vdmVTZW5kU3Ry
ZWFtKHVpbnQzMl90IHNzcmMpIG92ZXJyaWRlIHsKLSAgICByZXR1cm4gUnRwSGVscGVyPFZpZGVv
TWVkaWFDaGFubmVsPjo6UmVtb3ZlU2VuZFN0cmVhbShzc3JjKTsKLSAgfQotCi0gIGJvb2wgR2V0
U2VuZENvZGVjKFZpZGVvQ29kZWMqIHNlbmRfY29kZWMpIG92ZXJyaWRlIHsKLSAgICBpZiAoc2Vu
ZF9jb2RlY3NfLmVtcHR5KCkpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgKnNl
bmRfY29kZWMgPSBzZW5kX2NvZGVjc19bMF07Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAgc2lu
a3MoKSBjb25zdDsKKyAgaW50IG1heF9icHMoKSBjb25zdDsKKyAgYm9vbCBTZXRTZW5kUGFyYW1l
dGVycyhjb25zdCBWaWRlb1NlbmRQYXJhbWV0ZXJzJiBwYXJhbXMpIG92ZXJyaWRlOworICBib29s
IFNldFJlY3ZQYXJhbWV0ZXJzKGNvbnN0IFZpZGVvUmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgb3Zl
cnJpZGU7CisgIGJvb2wgQWRkU2VuZFN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSBvdmVy
cmlkZTsKKyAgYm9vbCBSZW1vdmVTZW5kU3RyZWFtKHVpbnQzMl90IHNzcmMpIG92ZXJyaWRlOwor
CisgIGJvb2wgR2V0U2VuZENvZGVjKFZpZGVvQ29kZWMqIHNlbmRfY29kZWMpIG92ZXJyaWRlOwog
ICBib29sIFNldFNpbmsodWludDMyX3Qgc3NyYywKLSAgICAgICAgICAgICAgIHJ0Yzo6VmlkZW9T
aW5rSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4qIHNpbmspIG92ZXJyaWRlIHsKLSAgICBp
ZiAoc3NyYyAhPSAwICYmIHNpbmtzXy5maW5kKHNzcmMpID09IHNpbmtzXy5lbmQoKSkgewotICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoc3NyYyAhPSAwKSB7Ci0gICAgICBzaW5r
c19bc3NyY10gPSBzaW5rOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICBib29sIEhh
c1NpbmsodWludDMyX3Qgc3NyYykgY29uc3QgewotICAgIHJldHVybiBzaW5rc18uZmluZChzc3Jj
KSAhPSBzaW5rc18uZW5kKCkgJiYgc2lua3NfLmF0KHNzcmMpICE9IG51bGxwdHI7Ci0gIH0KKyAg
ICAgICAgICAgICAgIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4q
IHNpbmspIG92ZXJyaWRlOworICBib29sIEhhc1NpbmsodWludDMyX3Qgc3NyYykgY29uc3Q7CiAK
LSAgYm9vbCBTZXRTZW5kKGJvb2wgc2VuZCkgb3ZlcnJpZGUgeyByZXR1cm4gc2V0X3NlbmRpbmco
c2VuZCk7IH0KKyAgYm9vbCBTZXRTZW5kKGJvb2wgc2VuZCkgb3ZlcnJpZGU7CiAgIGJvb2wgU2V0
VmlkZW9TZW5kKAogICAgICAgdWludDMyX3Qgc3NyYywKICAgICAgIGNvbnN0IFZpZGVvT3B0aW9u
cyogb3B0aW9ucywKLSAgICAgIHJ0Yzo6VmlkZW9Tb3VyY2VJbnRlcmZhY2U8d2VicnRjOjpWaWRl
b0ZyYW1lPiogc291cmNlKSBvdmVycmlkZSB7Ci0gICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgIGlm
ICghU2V0T3B0aW9ucygqb3B0aW9ucykpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
fQotICAgIH0KLSAgICBzb3VyY2VzX1tzc3JjXSA9IHNvdXJjZTsKLSAgICByZXR1cm4gdHJ1ZTsK
LSAgfQorICAgICAgcnRjOjpWaWRlb1NvdXJjZUludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+
KiBzb3VyY2UpIG92ZXJyaWRlOwogCi0gIGJvb2wgSGFzU291cmNlKHVpbnQzMl90IHNzcmMpIGNv
bnN0IHsKLSAgICByZXR1cm4gc291cmNlc18uZmluZChzc3JjKSAhPSBzb3VyY2VzXy5lbmQoKSAm
JgotICAgICAgICAgICBzb3VyY2VzXy5hdChzc3JjKSAhPSBudWxscHRyOwotICB9Ci0gIGJvb2wg
QWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSBvdmVycmlkZSB7Ci0gICAgaWYg
KCFSdHBIZWxwZXI8VmlkZW9NZWRpYUNoYW5uZWw+OjpBZGRSZWN2U3RyZWFtKHNwKSkKLSAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBzaW5rc19bc3AuZmlyc3Rfc3NyYygpXSA9IE5VTEw7Ci0gICAg
cmV0dXJuIHRydWU7Ci0gIH0KLSAgYm9vbCBSZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMp
IG92ZXJyaWRlIHsKLSAgICBpZiAoIVJ0cEhlbHBlcjxWaWRlb01lZGlhQ2hhbm5lbD46OlJlbW92
ZVJlY3ZTdHJlYW0oc3NyYykpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc2lua3NfLmVyYXNl
KHNzcmMpOwotICAgIHJldHVybiB0cnVlOwotICB9CisgIGJvb2wgSGFzU291cmNlKHVpbnQzMl90
IHNzcmMpIGNvbnN0OworICBib29sIEFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBz
cCkgb3ZlcnJpZGU7CisgIGJvb2wgUmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSBvdmVy
cmlkZTsKIAotICB2b2lkIEZpbGxCaXRyYXRlSW5mbyhCYW5kd2lkdGhFc3RpbWF0aW9uSW5mbyog
YndlX2luZm8pIG92ZXJyaWRlIHt9Ci0gIGJvb2wgR2V0U3RhdHMoVmlkZW9NZWRpYUluZm8qIGlu
Zm8pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgIHZvaWQgRmlsbEJpdHJhdGVJbmZvKEJh
bmR3aWR0aEVzdGltYXRpb25JbmZvKiBid2VfaW5mbykgb3ZlcnJpZGU7CisgIGJvb2wgR2V0U3Rh
dHMoVmlkZW9NZWRpYUluZm8qIGluZm8pIG92ZXJyaWRlOwogCi0gIHN0ZDo6dmVjdG9yPHdlYnJ0
Yzo6UnRwU291cmNlPiBHZXRTb3VyY2VzKHVpbnQzMl90IHNzcmMpIGNvbnN0IG92ZXJyaWRlIHsK
LSAgICByZXR1cm4ge307Ci0gIH0KKyAgc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+IEdl
dFNvdXJjZXModWludDMyX3Qgc3NyYykgY29uc3Qgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgotICBi
b29sIFNldFJlY3ZDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNvZGVjcykg
ewotICAgIGlmIChmYWlsX3NldF9yZWN2X2NvZGVjcygpKSB7Ci0gICAgICAvLyBGYWtlIHRoZSBm
YWlsdXJlIGluIFNldFJlY3ZDb2RlY3MuCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IHJlY3ZfY29kZWNzXyA9IGNvZGVjczsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICBib29sIFNl
dFNlbmRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNvZGVjcykgewotICAg
IGlmIChmYWlsX3NldF9zZW5kX2NvZGVjcygpKSB7Ci0gICAgICAvLyBGYWtlIHRoZSBmYWlsdXJl
IGluIFNldFNlbmRDb2RlY3MuCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHNlbmRf
Y29kZWNzXyA9IGNvZGVjczsKLQotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIGJvb2wgU2V0T3B0
aW9ucyhjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpIHsKLSAgICBvcHRpb25zXyA9IG9wdGlv
bnM7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgYm9vbCBTZXRNYXhTZW5kQmFuZHdpZHRoKGlu
dCBicHMpIHsKLSAgICBtYXhfYnBzXyA9IGJwczsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBi
b29sIFNldFJlY3ZDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNvZGVjcyk7
CisgIGJvb2wgU2V0U2VuZENvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29k
ZWNzKTsKKyAgYm9vbCBTZXRPcHRpb25zKGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucyk7Cisg
IGJvb2wgU2V0TWF4U2VuZEJhbmR3aWR0aChpbnQgYnBzKTsKIAogICBGYWtlVmlkZW9FbmdpbmUq
IGVuZ2luZV87CiAgIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IHJlY3ZfY29kZWNzXzsKQEAgLTY1
Miw3OCArNDU4LDMzIEBAIGNsYXNzIERhdGFPcHRpb25zIHt9OwogCiBjbGFzcyBGYWtlRGF0YU1l
ZGlhQ2hhbm5lbCA6IHB1YmxpYyBSdHBIZWxwZXI8RGF0YU1lZGlhQ2hhbm5lbD4gewogIHB1Ymxp
YzoKLSAgZXhwbGljaXQgRmFrZURhdGFNZWRpYUNoYW5uZWwodm9pZCogdW51c2VkLCBjb25zdCBE
YXRhT3B0aW9ucyYgb3B0aW9ucykKLSAgICAgIDogc2VuZF9ibG9ja2VkXyhmYWxzZSksIG1heF9i
cHNfKC0xKSB7fQotICB+RmFrZURhdGFNZWRpYUNoYW5uZWwoKSB7fQotICBjb25zdCBzdGQ6OnZl
Y3RvcjxEYXRhQ29kZWM+JiByZWN2X2NvZGVjcygpIGNvbnN0IHsgcmV0dXJuIHJlY3ZfY29kZWNz
XzsgfQotICBjb25zdCBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+JiBzZW5kX2NvZGVjcygpIGNvbnN0
IHsgcmV0dXJuIHNlbmRfY29kZWNzXzsgfQotICBjb25zdCBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+
JiBjb2RlY3MoKSBjb25zdCB7IHJldHVybiBzZW5kX2NvZGVjcygpOyB9Ci0gIGludCBtYXhfYnBz
KCkgY29uc3QgeyByZXR1cm4gbWF4X2Jwc187IH0KLQotICB2aXJ0dWFsIGJvb2wgU2V0U2VuZFBh
cmFtZXRlcnMoY29uc3QgRGF0YVNlbmRQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKLSAgICBzZXRfc2Vu
ZF9ydGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOwotICAgIHJldHVybiAoU2V0U2VuZENvZGVj
cyhwYXJhbXMuY29kZWNzKSAmJgotICAgICAgICAgICAgU2V0TWF4U2VuZEJhbmR3aWR0aChwYXJh
bXMubWF4X2JhbmR3aWR0aF9icHMpKTsKLSAgfQotICB2aXJ0dWFsIGJvb2wgU2V0UmVjdlBhcmFt
ZXRlcnMoY29uc3QgRGF0YVJlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKLSAgICBzZXRfcmVjdl9y
dGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOwotICAgIHJldHVybiBTZXRSZWN2Q29kZWNzKHBh
cmFtcy5jb2RlY3MpOwotICB9Ci0gIHZpcnR1YWwgYm9vbCBTZXRTZW5kKGJvb2wgc2VuZCkgeyBy
ZXR1cm4gc2V0X3NlbmRpbmcoc2VuZCk7IH0KLSAgdmlydHVhbCBib29sIFNldFJlY2VpdmUoYm9v
bCByZWNlaXZlKSB7Ci0gICAgc2V0X3BsYXlvdXQocmVjZWl2ZSk7Ci0gICAgcmV0dXJuIHRydWU7
Ci0gIH0KLSAgdmlydHVhbCBib29sIEFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBz
cCkgewotICAgIGlmICghUnRwSGVscGVyPERhdGFNZWRpYUNoYW5uZWw+OjpBZGRSZWN2U3RyZWFt
KHNwKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICB2aXJ0
dWFsIGJvb2wgUmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSB7Ci0gICAgaWYgKCFSdHBI
ZWxwZXI8RGF0YU1lZGlhQ2hhbm5lbD46OlJlbW92ZVJlY3ZTdHJlYW0oc3NyYykpCi0gICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgU2Vu
ZERhdGEoY29uc3QgU2VuZERhdGFQYXJhbXMmIHBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIHBheWxvYWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBTZW5kRGF0YVJlc3VsdCogcmVzdWx0KSB7Ci0gICAgaWYgKHNlbmRfYmxvY2tl
ZF8pIHsKLSAgICAgICpyZXN1bHQgPSBTRFJfQkxPQ0s7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIGxhc3Rfc2VudF9kYXRhX3BhcmFtc18gPSBwYXJhbXM7Ci0gICAg
ICBsYXN0X3NlbnRfZGF0YV8gPSBzdGQ6OnN0cmluZyhwYXlsb2FkLmRhdGE8Y2hhcj4oKSwgcGF5
bG9hZC5zaXplKCkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICB9Ci0KLSAgU2VuZERh
dGFQYXJhbXMgbGFzdF9zZW50X2RhdGFfcGFyYW1zKCkgeyByZXR1cm4gbGFzdF9zZW50X2RhdGFf
cGFyYW1zXzsgfQotICBzdGQ6OnN0cmluZyBsYXN0X3NlbnRfZGF0YSgpIHsgcmV0dXJuIGxhc3Rf
c2VudF9kYXRhXzsgfQotICBib29sIGlzX3NlbmRfYmxvY2tlZCgpIHsgcmV0dXJuIHNlbmRfYmxv
Y2tlZF87IH0KLSAgdm9pZCBzZXRfc2VuZF9ibG9ja2VkKGJvb2wgYmxvY2tlZCkgeyBzZW5kX2Js
b2NrZWRfID0gYmxvY2tlZDsgfQorICBleHBsaWNpdCBGYWtlRGF0YU1lZGlhQ2hhbm5lbCh2b2lk
KiB1bnVzZWQsIGNvbnN0IERhdGFPcHRpb25zJiBvcHRpb25zKTsKKyAgfkZha2VEYXRhTWVkaWFD
aGFubmVsKCk7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIHJlY3ZfY29kZWNzKCkg
Y29uc3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIHNlbmRfY29kZWNzKCkgY29u
c3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGNvZGVjcygpIGNvbnN0OworICBp
bnQgbWF4X2JwcygpIGNvbnN0OworCisgIGJvb2wgU2V0U2VuZFBhcmFtZXRlcnMoY29uc3QgRGF0
YVNlbmRQYXJhbWV0ZXJzJiBwYXJhbXMpIG92ZXJyaWRlOworICBib29sIFNldFJlY3ZQYXJhbWV0
ZXJzKGNvbnN0IERhdGFSZWN2UGFyYW1ldGVycyYgcGFyYW1zKSBvdmVycmlkZTsKKyAgYm9vbCBT
ZXRTZW5kKGJvb2wgc2VuZCkgb3ZlcnJpZGU7CisgIGJvb2wgU2V0UmVjZWl2ZShib29sIHJlY2Vp
dmUpIG92ZXJyaWRlOworICBib29sIEFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBz
cCkgb3ZlcnJpZGU7CisgIGJvb2wgUmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSBvdmVy
cmlkZTsKKworICBib29sIFNlbmREYXRhKGNvbnN0IFNlbmREYXRhUGFyYW1zJiBwYXJhbXMsCisg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgcGF5bG9hZCwKKyAg
ICAgICAgICAgICAgICBTZW5kRGF0YVJlc3VsdCogcmVzdWx0KSBvdmVycmlkZTsKKworICBTZW5k
RGF0YVBhcmFtcyBsYXN0X3NlbnRfZGF0YV9wYXJhbXMoKTsKKyAgc3RkOjpzdHJpbmcgbGFzdF9z
ZW50X2RhdGEoKTsKKyAgYm9vbCBpc19zZW5kX2Jsb2NrZWQoKTsKKyAgdm9pZCBzZXRfc2VuZF9i
bG9ja2VkKGJvb2wgYmxvY2tlZCk7CiAKICBwcml2YXRlOgotICBib29sIFNldFJlY3ZDb2RlY3Mo
Y29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgY29kZWNzKSB7Ci0gICAgaWYgKGZhaWxfc2V0
X3JlY3ZfY29kZWNzKCkpIHsKLSAgICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0UmVjdkNv
ZGVjcy4KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmVjdl9jb2RlY3NfID0gY29k
ZWNzOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIGJvb2wgU2V0U2VuZENvZGVjcyhjb25zdCBz
dGQ6OnZlY3RvcjxEYXRhQ29kZWM+JiBjb2RlY3MpIHsKLSAgICBpZiAoZmFpbF9zZXRfc2VuZF9j
b2RlY3MoKSkgewotICAgICAgLy8gRmFrZSB0aGUgZmFpbHVyZSBpbiBTZXRTZW5kQ29kZWNzLgot
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBzZW5kX2NvZGVjc18gPSBjb2RlY3M7Ci0g
ICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgYm9vbCBTZXRNYXhTZW5kQmFuZHdpZHRoKGludCBicHMp
IHsKLSAgICBtYXhfYnBzXyA9IGJwczsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBib29sIFNl
dFJlY3ZDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgY29kZWNzKTsKKyAgYm9v
bCBTZXRTZW5kQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGNvZGVjcyk7Cisg
IGJvb2wgU2V0TWF4U2VuZEJhbmR3aWR0aChpbnQgYnBzKTsKIAogICBzdGQ6OnZlY3RvcjxEYXRh
Q29kZWM+IHJlY3ZfY29kZWNzXzsKICAgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiBzZW5kX2NvZGVj
c187CkBAIC03MzMsMjMzICs0OTQsOTggQEAgY2xhc3MgRmFrZURhdGFNZWRpYUNoYW5uZWwgOiBw
dWJsaWMgUnRwSGVscGVyPERhdGFNZWRpYUNoYW5uZWw+IHsKICAgaW50IG1heF9icHNfOwogfTsK
IAotLy8gQSBiYXNlIGNsYXNzIGZvciBhbGwgb2YgdGhlIHNoYXJlZCBwYXJ0cyBiZXR3ZWVuIEZh
a2VWb2ljZUVuZ2luZQotLy8gYW5kIEZha2VWaWRlb0VuZ2luZS4KLWNsYXNzIEZha2VCYXNlRW5n
aW5lIHsKLSBwdWJsaWM6Ci0gIEZha2VCYXNlRW5naW5lKCkgOiBvcHRpb25zX2NoYW5nZWRfKGZh
bHNlKSwgZmFpbF9jcmVhdGVfY2hhbm5lbF8oZmFsc2UpIHt9Ci0gIHZvaWQgc2V0X2ZhaWxfY3Jl
YXRlX2NoYW5uZWwoYm9vbCBmYWlsKSB7IGZhaWxfY3JlYXRlX2NoYW5uZWxfID0gZmFpbDsgfQot
Ci0gIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBjYXBh
YmlsaXRpZXNfOyB9Ci0gIHZvaWQgc2V0X3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyhjb25zdCBzdGQ6
OnZlY3RvcjxSdHBFeHRlbnNpb24+JiBleHRlbnNpb25zKSB7Ci0gICAgY2FwYWJpbGl0aWVzXy5o
ZWFkZXJfZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnM7Ci0gIH0KLQotICB2b2lkIHNldF9ydHBfaGVh
ZGVyX2V4dGVuc2lvbnMoCi0gICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpSdHBIZWFk
ZXJFeHRlbnNpb24+JiBleHRlbnNpb25zKSB7Ci0gICAgZm9yIChjb25zdCBjcmlja2V0OjpSdHBI
ZWFkZXJFeHRlbnNpb24mIGV4dCA6IGV4dGVuc2lvbnMpIHsKLSAgICAgIFJ0cEV4dGVuc2lvbiB3
ZWJydGNfZXh0OwotICAgICAgd2VicnRjX2V4dC51cmkgPSBleHQudXJpOwotICAgICAgd2VicnRj
X2V4dC5pZCA9IGV4dC5pZDsKLSAgICAgIGNhcGFiaWxpdGllc18uaGVhZGVyX2V4dGVuc2lvbnMu
cHVzaF9iYWNrKHdlYnJ0Y19leHQpOwotICAgIH0KLSAgfQotCi0gcHJvdGVjdGVkOgotICAvLyBG
bGFnIHVzZWQgYnkgb3B0aW9uc21lc3NhZ2VoYW5kbGVyX3VuaXR0ZXN0IGZvciBjaGVja2luZyB3
aGV0aGVyIGFueQotICAvLyByZWxldmFudCBzZXR0aW5nIGhhcyBiZWVuIHVwZGF0ZWQuCi0gIC8v
IFRPRE8odGhhbG91bik6IFJlcGxhY2Ugd2l0aCBleHBsaWNpdCBjaGVja3Mgb2YgYmVmb3JlICYg
YWZ0ZXIgdmFsdWVzLgotICBib29sIG9wdGlvbnNfY2hhbmdlZF87Ci0gIGJvb2wgZmFpbF9jcmVh
dGVfY2hhbm5lbF87Ci0gIFJ0cENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXNfOwotfTsKLQotY2xh
c3MgRmFrZVZvaWNlRW5naW5lIDogcHVibGljIEZha2VCYXNlRW5naW5lIHsKK2NsYXNzIEZha2VW
b2ljZUVuZ2luZSA6IHB1YmxpYyBWb2ljZUVuZ2luZUludGVyZmFjZSB7CiAgcHVibGljOgotICBG
YWtlVm9pY2VFbmdpbmUoKSB7Ci0gICAgLy8gQWRkIGEgZmFrZSBhdWRpbyBjb2RlYy4gTm90ZSB0
aGF0IHRoZSBuYW1lIG11c3Qgbm90IGJlICIiIGFzIHRoZXJlIGFyZQotICAgIC8vIHNhbml0eSBj
aGVja3MgYWdhaW5zdCB0aGF0LgotICAgIGNvZGVjc18ucHVzaF9iYWNrKEF1ZGlvQ29kZWMoMTAx
LCAiZmFrZV9hdWRpb19jb2RlYyIsIDAsIDAsIDEpKTsKLSAgfQotICB2b2lkIEluaXQoKSB7fQot
ICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiBHZXRBdWRpb1N0YXRlKCkg
Y29uc3QgewotICAgIHJldHVybiBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRl
PigpOwotICB9Ci0KLSAgVm9pY2VNZWRpYUNoYW5uZWwqIENyZWF0ZUNoYW5uZWwod2VicnRjOjpD
YWxsKiBjYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZWRp
YUNvbmZpZyYgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBBdWRpb09wdGlvbnMmIG9wdGlvbnMpIHsKLSAgICBpZiAoZmFpbF9jcmVhdGVfY2hhbm5lbF8p
IHsKLSAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIEZha2VWb2ljZU1lZGlhQ2hh
bm5lbCogY2ggPSBuZXcgRmFrZVZvaWNlTWVkaWFDaGFubmVsKHRoaXMsIG9wdGlvbnMpOwotICAg
IGNoYW5uZWxzXy5wdXNoX2JhY2soY2gpOwotICAgIHJldHVybiBjaDsKLSAgfQotICBGYWtlVm9p
Y2VNZWRpYUNoYW5uZWwqIEdldENoYW5uZWwoc2l6ZV90IGluZGV4KSB7Ci0gICAgcmV0dXJuIChj
aGFubmVsc18uc2l6ZSgpID4gaW5kZXgpID8gY2hhbm5lbHNfW2luZGV4XSA6IE5VTEw7Ci0gIH0K
LSAgdm9pZCBVbnJlZ2lzdGVyQ2hhbm5lbChWb2ljZU1lZGlhQ2hhbm5lbCogY2hhbm5lbCkgewot
ICAgIGNoYW5uZWxzXy5lcmFzZShzdGQ6OmZpbmQoY2hhbm5lbHNfLmJlZ2luKCksIGNoYW5uZWxz
Xy5lbmQoKSwgY2hhbm5lbCkpOwotICB9CisgIEZha2VWb2ljZUVuZ2luZSgpOworICBSdHBDYXBh
YmlsaXRpZXMgR2V0Q2FwYWJpbGl0aWVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIHZvaWQgSW5pdCgp
IG92ZXJyaWRlOworICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiBHZXRB
dWRpb1N0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgVm9pY2VNZWRpYUNoYW5uZWwqIENyZWF0
ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKKyAgICAgIGNvbnN0IE1l
ZGlhQ29uZmlnJiBjb25maWcsCisgICAgICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMsCisg
ICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSBvdmVycmlk
ZTsKKyAgRmFrZVZvaWNlTWVkaWFDaGFubmVsKiBHZXRDaGFubmVsKHNpemVfdCBpbmRleCk7Cisg
IHZvaWQgVW5yZWdpc3RlckNoYW5uZWwoVm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5uZWwpOwogCiAg
IC8vIFRPRE8ob3NzdSk6IEZvciBwcm9wZXIgdGVzdGluZywgVGhlc2Ugc2hvdWxkIGVpdGhlciBp
bmRpdmlkdWFsbHkgc2V0dGFibGUKICAgLy8gICAgICAgICAgICAgb3IgdGhlIHZvaWNlIGVuZ2lu
ZSBzaG91bGQgcmVmZXJlbmNlIG1vY2thYmxlIGZhY3Rvcmllcy4KLSAgY29uc3Qgc3RkOjp2ZWN0
b3I8QXVkaW9Db2RlYz4mIHNlbmRfY29kZWNzKCkgeyByZXR1cm4gY29kZWNzXzsgfQotICBjb25z
dCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgcmVjdl9jb2RlY3MoKSB7IHJldHVybiBjb2RlY3Nf
OyB9Ci0gIHZvaWQgU2V0Q29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2Rl
Y3MpIHsgY29kZWNzXyA9IGNvZGVjczsgfQotCi0gIGludCBHZXRJbnB1dExldmVsKCkgeyByZXR1
cm4gMDsgfQotCi0gIGJvb2wgU3RhcnRBZWNEdW1wKHJ0Yzo6UGxhdGZvcm1GaWxlIGZpbGUsIGlu
dDY0X3QgbWF4X3NpemVfYnl0ZXMpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICB2b2lk
IFN0b3BBZWNEdW1wKCkge30KLQotICBib29sIFN0YXJ0UnRjRXZlbnRMb2cocnRjOjpQbGF0Zm9y
bUZpbGUgZmlsZSwgaW50NjRfdCBtYXhfc2l6ZV9ieXRlcykgewotICAgIHJldHVybiBmYWxzZTsK
LSAgfQotCi0gIHZvaWQgU3RvcFJ0Y0V2ZW50TG9nKCkge30KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8
QXVkaW9Db2RlYz4mIHNlbmRfY29kZWNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIGNvbnN0IHN0ZDo6
dmVjdG9yPEF1ZGlvQ29kZWM+JiByZWN2X2NvZGVjcygpIGNvbnN0IG92ZXJyaWRlOworICB2b2lk
IFNldENvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKTsKKyAgaW50
IEdldElucHV0TGV2ZWwoKTsKKyAgYm9vbCBTdGFydEFlY0R1bXAocnRjOjpQbGF0Zm9ybUZpbGUg
ZmlsZSwgaW50NjRfdCBtYXhfc2l6ZV9ieXRlcykgb3ZlcnJpZGU7CisgIHZvaWQgU3RvcEFlY0R1
bXAoKSBvdmVycmlkZTsKKyAgYm9vbCBTdGFydFJ0Y0V2ZW50TG9nKHJ0Yzo6UGxhdGZvcm1GaWxl
IGZpbGUsIGludDY0X3QgbWF4X3NpemVfYnl0ZXMpOworICB2b2lkIFN0b3BSdGNFdmVudExvZygp
OwogCiAgcHJpdmF0ZToKICAgc3RkOjp2ZWN0b3I8RmFrZVZvaWNlTWVkaWFDaGFubmVsKj4gY2hh
bm5lbHNfOwogICBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiBjb2RlY3NfOworICBib29sIGZhaWxf
Y3JlYXRlX2NoYW5uZWxfOwogCiAgIGZyaWVuZCBjbGFzcyBGYWtlTWVkaWFFbmdpbmU7CiB9Owog
Ci1jbGFzcyBGYWtlVmlkZW9FbmdpbmUgOiBwdWJsaWMgRmFrZUJhc2VFbmdpbmUgeworY2xhc3Mg
RmFrZVZpZGVvRW5naW5lIDogcHVibGljIFZpZGVvRW5naW5lSW50ZXJmYWNlIHsKICBwdWJsaWM6
Ci0gIEZha2VWaWRlb0VuZ2luZSgpIDogY2FwdHVyZV8oZmFsc2UpIHsKLSAgICAvLyBBZGQgYSBm
YWtlIHZpZGVvIGNvZGVjLiBOb3RlIHRoYXQgdGhlIG5hbWUgbXVzdCBub3QgYmUgIiIgYXMgdGhl
cmUgYXJlCi0gICAgLy8gc2FuaXR5IGNoZWNrcyBhZ2FpbnN0IHRoYXQuCi0gICAgY29kZWNzXy5w
dXNoX2JhY2soVmlkZW9Db2RlYygwLCAiZmFrZV92aWRlb19jb2RlYyIpKTsKLSAgfQotCi0gIGJv
b2wgU2V0T3B0aW9ucyhjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpIHsKLSAgICBvcHRpb25z
XyA9IG9wdGlvbnM7Ci0gICAgb3B0aW9uc19jaGFuZ2VkXyA9IHRydWU7Ci0gICAgcmV0dXJuIHRy
dWU7Ci0gIH0KLQotICBWaWRlb01lZGlhQ2hhbm5lbCogQ3JlYXRlQ2hhbm5lbCh3ZWJydGM6OkNh
bGwqIGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlh
Q29uZmlnJiBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykgewotICAgIGlmIChmYWlsX2NyZWF0ZV9jaGFubmVsXykg
ewotICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgRmFrZVZpZGVvTWVkaWFDaGFu
bmVsKiBjaCA9IG5ldyBGYWtlVmlkZW9NZWRpYUNoYW5uZWwodGhpcywgb3B0aW9ucyk7Ci0gICAg
Y2hhbm5lbHNfLmVtcGxhY2VfYmFjayhjaCk7Ci0gICAgcmV0dXJuIGNoOwotICB9Ci0KLSAgRmFr
ZVZpZGVvTWVkaWFDaGFubmVsKiBHZXRDaGFubmVsKHNpemVfdCBpbmRleCkgewotICAgIHJldHVy
biAoY2hhbm5lbHNfLnNpemUoKSA+IGluZGV4KSA/IGNoYW5uZWxzX1tpbmRleF0gOiBudWxscHRy
OwotICB9Ci0KLSAgdm9pZCBVbnJlZ2lzdGVyQ2hhbm5lbChWaWRlb01lZGlhQ2hhbm5lbCogY2hh
bm5lbCkgewotICAgIGF1dG8gaXQgPSBzdGQ6OmZpbmQoY2hhbm5lbHNfLmJlZ2luKCksIGNoYW5u
ZWxzXy5lbmQoKSwgY2hhbm5lbCk7Ci0gICAgUlRDX0RDSEVDSyhpdCAhPSBjaGFubmVsc18uZW5k
KCkpOwotICAgIGNoYW5uZWxzXy5lcmFzZShpdCk7Ci0gIH0KLQotICBjb25zdCBzdGQ6OnZlY3Rv
cjxWaWRlb0NvZGVjPiYgY29kZWNzKCkgY29uc3QgeyByZXR1cm4gY29kZWNzXzsgfQotCi0gIHZv
aWQgU2V0Q29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IGNvZGVjcykgeyBjb2Rl
Y3NfID0gY29kZWNzOyB9Ci0KLSAgYm9vbCBTZXRDYXB0dXJlKGJvb2wgY2FwdHVyZSkgewotICAg
IGNhcHR1cmVfID0gY2FwdHVyZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBGYWtlVmlkZW9F
bmdpbmUoKTsKKyAgUnRwQ2FwYWJpbGl0aWVzIEdldENhcGFiaWxpdGllcygpIGNvbnN0IG92ZXJy
aWRlOworICBib29sIFNldE9wdGlvbnMoY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKTsKKyAg
VmlkZW9NZWRpYUNoYW5uZWwqIENyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIHdlYnJ0Yzo6Q2Fs
bCogY2FsbCwKKyAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCisgICAgICBjb25zdCBW
aWRlb09wdGlvbnMmIG9wdGlvbnMsCisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMm
IGNyeXB0b19vcHRpb25zKSBvdmVycmlkZTsKKyAgRmFrZVZpZGVvTWVkaWFDaGFubmVsKiBHZXRD
aGFubmVsKHNpemVfdCBpbmRleCk7CisgIHZvaWQgVW5yZWdpc3RlckNoYW5uZWwoVmlkZW9NZWRp
YUNoYW5uZWwqIGNoYW5uZWwpOworICBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiBjb2RlY3MoKSBj
b25zdCBvdmVycmlkZTsKKyAgdm9pZCBTZXRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9D
b2RlYz4gY29kZWNzKTsKKyAgYm9vbCBTZXRDYXB0dXJlKGJvb2wgY2FwdHVyZSk7CiAKICBwcml2
YXRlOgogICBzdGQ6OnZlY3RvcjxGYWtlVmlkZW9NZWRpYUNoYW5uZWwqPiBjaGFubmVsc187CiAg
IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IGNvZGVjc187CiAgIGJvb2wgY2FwdHVyZV87CiAgIFZp
ZGVvT3B0aW9ucyBvcHRpb25zXzsKKyAgYm9vbCBmYWlsX2NyZWF0ZV9jaGFubmVsXzsKIAogICBm
cmllbmQgY2xhc3MgRmFrZU1lZGlhRW5naW5lOwogfTsKIAotY2xhc3MgRmFrZU1lZGlhRW5naW5l
Ci0gICAgOiBwdWJsaWMgQ29tcG9zaXRlTWVkaWFFbmdpbmU8RmFrZVZvaWNlRW5naW5lLCBGYWtl
VmlkZW9FbmdpbmU+IHsKK2NsYXNzIEZha2VNZWRpYUVuZ2luZSA6IHB1YmxpYyBDb21wb3NpdGVN
ZWRpYUVuZ2luZSB7CiAgcHVibGljOgotICBGYWtlTWVkaWFFbmdpbmUoKQotICAgICAgOiBDb21w
b3NpdGVNZWRpYUVuZ2luZTxGYWtlVm9pY2VFbmdpbmUsIEZha2VWaWRlb0VuZ2luZT4oc3RkOjp0
dXBsZTw+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnR1cGxlPD4oKSkgewotICB9CisgIEZha2VNZWRpYUVuZ2lu
ZSgpOwogCi0gIHZpcnR1YWwgfkZha2VNZWRpYUVuZ2luZSgpIHt9CisgIH5GYWtlTWVkaWFFbmdp
bmUoKSBvdmVycmlkZTsKIAotICB2b2lkIFNldEF1ZGlvQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9y
PEF1ZGlvQ29kZWM+JiBjb2RlY3MpIHsKLSAgICB2b2ljZSgpLlNldENvZGVjcyhjb2RlY3MpOwot
ICB9Ci0gIHZvaWQgU2V0VmlkZW9Db2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4m
IGNvZGVjcykgewotICAgIHZpZGVvKCkuU2V0Q29kZWNzKGNvZGVjcyk7Ci0gIH0KKyAgdm9pZCBT
ZXRBdWRpb0NvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKTsKKyAg
dm9pZCBTZXRWaWRlb0NvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNz
KTsKIAotICB2b2lkIFNldEF1ZGlvUnRwSGVhZGVyRXh0ZW5zaW9ucygKLSAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPFJ0cEV4dGVuc2lvbj4mIGV4dGVuc2lvbnMpIHsKLSAgICB2b2ljZSgpLnNldF9y
dHBfaGVhZGVyX2V4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7Ci0gIH0KLSAgdm9pZCBTZXRWaWRlb1J0
cEhlYWRlckV4dGVuc2lvbnMoCi0gICAgICBjb25zdCBzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+
JiBleHRlbnNpb25zKSB7Ci0gICAgdmlkZW8oKS5zZXRfcnRwX2hlYWRlcl9leHRlbnNpb25zKGV4
dGVuc2lvbnMpOwotICB9CisgIEZha2VWb2ljZU1lZGlhQ2hhbm5lbCogR2V0Vm9pY2VDaGFubmVs
KHNpemVfdCBpbmRleCk7CisgIEZha2VWaWRlb01lZGlhQ2hhbm5lbCogR2V0VmlkZW9DaGFubmVs
KHNpemVfdCBpbmRleCk7CiAKLSAgdm9pZCBTZXRBdWRpb1J0cEhlYWRlckV4dGVuc2lvbnMoCi0g
ICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb24+JiBleHRl
bnNpb25zKSB7Ci0gICAgdm9pY2UoKS5zZXRfcnRwX2hlYWRlcl9leHRlbnNpb25zKGV4dGVuc2lv
bnMpOwotICB9Ci0gIHZvaWQgU2V0VmlkZW9SdHBIZWFkZXJFeHRlbnNpb25zKAotICAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8Y3JpY2tldDo6UnRwSGVhZGVyRXh0ZW5zaW9uPiYgZXh0ZW5zaW9ucykg
ewotICAgIHZpZGVvKCkuc2V0X3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKLSAg
fQorICB2b2lkIHNldF9mYWlsX2NyZWF0ZV9jaGFubmVsKGJvb2wgZmFpbCk7CiAKLSAgRmFrZVZv
aWNlTWVkaWFDaGFubmVsKiBHZXRWb2ljZUNoYW5uZWwoc2l6ZV90IGluZGV4KSB7Ci0gICAgcmV0
dXJuIHZvaWNlKCkuR2V0Q2hhbm5lbChpbmRleCk7Ci0gIH0KLSAgRmFrZVZpZGVvTWVkaWFDaGFu
bmVsKiBHZXRWaWRlb0NoYW5uZWwoc2l6ZV90IGluZGV4KSB7Ci0gICAgcmV0dXJuIHZpZGVvKCku
R2V0Q2hhbm5lbChpbmRleCk7Ci0gIH0KLQotICBib29sIGNhcHR1cmUoKSBjb25zdCB7IHJldHVy
biB2aWRlbygpLmNhcHR1cmVfOyB9Ci0gIGJvb2wgb3B0aW9uc19jaGFuZ2VkKCkgY29uc3QgeyBy
ZXR1cm4gdmlkZW8oKS5vcHRpb25zX2NoYW5nZWRfOyB9Ci0gIHZvaWQgY2xlYXJfb3B0aW9uc19j
aGFuZ2VkKCkgeyB2aWRlbygpLm9wdGlvbnNfY2hhbmdlZF8gPSBmYWxzZTsgfQotICB2b2lkIHNl
dF9mYWlsX2NyZWF0ZV9jaGFubmVsKGJvb2wgZmFpbCkgewotICAgIHZvaWNlKCkuc2V0X2ZhaWxf
Y3JlYXRlX2NoYW5uZWwoZmFpbCk7Ci0gICAgdmlkZW8oKS5zZXRfZmFpbF9jcmVhdGVfY2hhbm5l
bChmYWlsKTsKLSAgfQorIHByaXZhdGU6CisgIEZha2VWb2ljZUVuZ2luZSogY29uc3Qgdm9pY2Vf
OworICBGYWtlVmlkZW9FbmdpbmUqIGNvbnN0IHZpZGVvXzsKIH07CiAKIC8vIEhhdmUgdG8gY29t
ZSBhZnRlcndhcmRzIGR1ZSB0byBkZWNsYXJhdGlvbiBvcmRlcgotaW5saW5lIEZha2VWb2ljZU1l
ZGlhQ2hhbm5lbDo6fkZha2VWb2ljZU1lZGlhQ2hhbm5lbCgpIHsKLSAgaWYgKGVuZ2luZV8pIHsK
LSAgICBlbmdpbmVfLT5VbnJlZ2lzdGVyQ2hhbm5lbCh0aGlzKTsKLSAgfQotfQotCi1pbmxpbmUg
RmFrZVZpZGVvTWVkaWFDaGFubmVsOjp+RmFrZVZpZGVvTWVkaWFDaGFubmVsKCkgewotICBpZiAo
ZW5naW5lXykgewotICAgIGVuZ2luZV8tPlVucmVnaXN0ZXJDaGFubmVsKHRoaXMpOwotICB9Ci19
CiAKIGNsYXNzIEZha2VEYXRhRW5naW5lIDogcHVibGljIERhdGFFbmdpbmVJbnRlcmZhY2Ugewog
IHB1YmxpYzoKLSAgdmlydHVhbCBEYXRhTWVkaWFDaGFubmVsKiBDcmVhdGVDaGFubmVsKGNvbnN0
IE1lZGlhQ29uZmlnJiBjb25maWcpIHsKLSAgICBGYWtlRGF0YU1lZGlhQ2hhbm5lbCogY2ggPSBu
ZXcgRmFrZURhdGFNZWRpYUNoYW5uZWwodGhpcywgRGF0YU9wdGlvbnMoKSk7Ci0gICAgY2hhbm5l
bHNfLnB1c2hfYmFjayhjaCk7Ci0gICAgcmV0dXJuIGNoOwotICB9CisgIERhdGFNZWRpYUNoYW5u
ZWwqIENyZWF0ZUNoYW5uZWwoY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZykgb3ZlcnJpZGU7CiAK
LSAgRmFrZURhdGFNZWRpYUNoYW5uZWwqIEdldENoYW5uZWwoc2l6ZV90IGluZGV4KSB7Ci0gICAg
cmV0dXJuIChjaGFubmVsc18uc2l6ZSgpID4gaW5kZXgpID8gY2hhbm5lbHNfW2luZGV4XSA6IE5V
TEw7Ci0gIH0KKyAgRmFrZURhdGFNZWRpYUNoYW5uZWwqIEdldENoYW5uZWwoc2l6ZV90IGluZGV4
KTsKIAotICB2b2lkIFVucmVnaXN0ZXJDaGFubmVsKERhdGFNZWRpYUNoYW5uZWwqIGNoYW5uZWwp
IHsKLSAgICBjaGFubmVsc18uZXJhc2Uoc3RkOjpmaW5kKGNoYW5uZWxzXy5iZWdpbigpLCBjaGFu
bmVsc18uZW5kKCksIGNoYW5uZWwpKTsKLSAgfQorICB2b2lkIFVucmVnaXN0ZXJDaGFubmVsKERh
dGFNZWRpYUNoYW5uZWwqIGNoYW5uZWwpOwogCi0gIHZpcnR1YWwgdm9pZCBTZXREYXRhQ29kZWNz
KGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGRhdGFfY29kZWNzKSB7Ci0gICAgZGF0YV9j
b2RlY3NfID0gZGF0YV9jb2RlY3M7Ci0gIH0KKyAgdm9pZCBTZXREYXRhQ29kZWNzKGNvbnN0IHN0
ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGRhdGFfY29kZWNzKTsKIAotICB2aXJ0dWFsIGNvbnN0IHN0
ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGRhdGFfY29kZWNzKCkgeyByZXR1cm4gZGF0YV9jb2RlY3Nf
OyB9CisgIGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGRhdGFfY29kZWNzKCkgb3ZlcnJp
ZGU7CiAKICBwcml2YXRlOgogICBzdGQ6OnZlY3RvcjxGYWtlRGF0YU1lZGlhQ2hhbm5lbCo+IGNo
YW5uZWxzXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21lZGlhL2Jhc2UvZmFrZW5ldHdvcmtpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZW5ldHdvcmtpbnRlcmZh
Y2UuaAppbmRleCAwZjE0NjU5YzQ2MDZjOWRmNmE3NjBlNmVlMzM4M2IyZjk3YWM5YTU5Li5kZmQz
NDA3NzJiNjkzMzkyYjE1ZDM1NDRiN2M0YzZkMWQyMmZjZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2Zha2VuZXR3b3Jr
aW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvYmFzZS9mYWtlbmV0d29ya2ludGVyZmFjZS5oCkBAIC0xNjksOSArMTY5LDkgQEAg
Y2xhc3MgRmFrZU5ldHdvcmtJbnRlcmZhY2UgOiBwdWJsaWMgTWVkaWFDaGFubmVsOjpOZXR3b3Jr
SW50ZXJmYWNlLAogICAgICAgICBzdGF0aWNfY2FzdDxydGM6OlR5cGVkTWVzc2FnZURhdGE8cnRj
OjpDb3B5T25Xcml0ZUJ1ZmZlcj4qPihtc2ctPnBkYXRhKTsKICAgICBpZiAoZGVzdF8pIHsKICAg
ICAgIGlmIChtc2ctPm1lc3NhZ2VfaWQgPT0gU1RfUlRQKSB7Ci0gICAgICAgIGRlc3RfLT5PblBh
Y2tldFJlY2VpdmVkKCZtc2dfZGF0YS0+ZGF0YSgpLCBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkp
OworICAgICAgICBkZXN0Xy0+T25QYWNrZXRSZWNlaXZlZCgmbXNnX2RhdGEtPmRhdGEoKSwgcnRj
OjpUaW1lTWljcm9zKCkpOwogICAgICAgfSBlbHNlIHsKLSAgICAgICAgZGVzdF8tPk9uUnRjcFJl
Y2VpdmVkKCZtc2dfZGF0YS0+ZGF0YSgpLCBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpOworICAg
ICAgICBkZXN0Xy0+T25SdGNwUmVjZWl2ZWQoJm1zZ19kYXRhLT5kYXRhKCksIHJ0Yzo6VGltZU1p
Y3JvcygpKTsKICAgICAgIH0KICAgICB9CiAgICAgZGVsZXRlIG1zZ19kYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9m
YWtldmlkZW9jYXB0dXJlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21lZGlhL2Jhc2UvZmFrZXZpZGVvY2FwdHVyZXIuY2MKaW5kZXggOTQ5MDBiYTM3YjZh
NTRiMDBmYTYyNjdiNjlkYmViNTIzODMxODQ1Ny4uYjVkMDE4OTYwOGE5MjM1MmI4ZWQ0NTBlYjNl
Njc1MjgwMzJmZmNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtldmlkZW9jYXB0dXJlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2Zha2V2aWRlb2Nh
cHR1cmVyLmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtldmlk
ZW9jYXB0dXJlci5oIgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKIG5hbWVzcGFjZSBjcmlja2V0IHsKIApAQCAtOTUs
NyArOTYsNyBAQCBjcmlja2V0OjpDYXB0dXJlU3RhdGUgRmFrZVZpZGVvQ2FwdHVyZXI6OlN0YXJ0
KAogICBTZXRDYXB0dXJlU3RhdGUoY3JpY2tldDo6Q1NfUlVOTklORyk7CiAgIGZyYW1lX3NvdXJj
ZV8gPSBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlRnJhbWVTb3VyY2U+KAogICAgICAgZm9ybWF0Lndp
ZHRoLCBmb3JtYXQuaGVpZ2h0LAotICAgICAgZm9ybWF0LmludGVydmFsIC8gcnRjOjprTnVtTmFu
b3NlY3NQZXJNaWNyb3NlYyk7CisgICAgICBmb3JtYXQuaW50ZXJ2YWwgLyBydGM6OmtOdW1OYW5v
c2Vjc1Blck1pY3Jvc2VjLCBydGM6OlRpbWVNaWNyb3MoKSk7CiAgIGZyYW1lX3NvdXJjZV8tPlNl
dFJvdGF0aW9uKHJvdGF0aW9uXyk7CiAgIHJldHVybiBjcmlja2V0OjpDU19SVU5OSU5HOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2ZWxfaWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvaDI2NF9wcm9maWxlX2xldmVsX2lkLmgKaW5k
ZXggYjRmZjg4MzY5YzYxNDg5ZjRmODUxYjk1YzU0NmMyNzFhOWMwZmRmOC4uNmEzZTdjZGIzMjE5
NjZmNjkzYmY4M2ZiOTBhNjFhOTRjNDczOWI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2ZWxf
aWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL2gyNjRfcHJvZmlsZV9sZXZlbF9pZC5oCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAv
LyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4
cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBIMjY0IHsKQEAgLTYxLDE4
ICs2MiwxOSBAQCBhYnNsOjpvcHRpb25hbDxQcm9maWxlTGV2ZWxJZD4gUGFyc2VQcm9maWxlTGV2
ZWxJZChjb25zdCBjaGFyKiBzdHIpOwogLy8gY29udGFpbmVkIGluIGFuIFNEUCBrZXktdmFsdWUg
bWFwLiBBIGRlZmF1bHQgcHJvZmlsZSBsZXZlbCBpZCB3aWxsIGJlCiAvLyByZXR1cm5lZCBpZiB0
aGUgcHJvZmlsZS1sZXZlbC1pZCBrZXkgaXMgbWlzc2luZy4gTm90aGluZyB3aWxsIGJlIHJldHVy
bmVkIGlmCiAvLyB0aGUga2V5IGlzIHByZXNlbnQgYnV0IHRoZSBzdHJpbmcgaXMgaW52YWxpZC4K
LWFic2w6Om9wdGlvbmFsPFByb2ZpbGVMZXZlbElkPiBQYXJzZVNkcFByb2ZpbGVMZXZlbElkKAor
UlRDX0VYUE9SVCBhYnNsOjpvcHRpb25hbDxQcm9maWxlTGV2ZWxJZD4gUGFyc2VTZHBQcm9maWxl
TGV2ZWxJZCgKICAgICBjb25zdCBDb2RlY1BhcmFtZXRlck1hcCYgcGFyYW1zKTsKIAogLy8gR2l2
ZW4gdGhhdCBhIGRlY29kZXIgc3VwcG9ydHMgdXAgdG8gYSBnaXZlbiBmcmFtZSBzaXplIChpbiBw
aXhlbHMpIGF0IHVwIHRvIGEKIC8vIGdpdmVuIG51bWJlciBvZiBmcmFtZXMgcGVyIHNlY29uZCwg
cmV0dXJuIHRoZSBoaWdoZXN0IEguMjY0IGxldmVsIHdoZXJlIGl0CiAvLyBjYW4gZ3VhcmFudGVl
IHRoYXQgaXQgd2lsbCBiZSBhYmxlIHRvIHN1cHBvcnQgYWxsIHZhbGlkIGVuY29kZWQgc3RyZWFt
cyB0aGF0CiAvLyBhcmUgd2l0aGluIHRoYXQgbGV2ZWwuCi1hYnNsOjpvcHRpb25hbDxMZXZlbD4g
U3VwcG9ydGVkTGV2ZWwoaW50IG1heF9mcmFtZV9waXhlbF9jb3VudCwgZmxvYXQgbWF4X2Zwcyk7
CitSVENfRVhQT1JUIGFic2w6Om9wdGlvbmFsPExldmVsPiBTdXBwb3J0ZWRMZXZlbChpbnQgbWF4
X2ZyYW1lX3BpeGVsX2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgbWF4X2Zwcyk7CiAKIC8vIFJldHVybnMgY2Fub25pY2FsIHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBhcyB0aHJlZSBoZXggYnl0ZXMgb2YgdGhlIHByb2ZpbGUKIC8vIGxl
dmVsIGlkLCBvciByZXR1cm5zIG5vdGhpbmcgZm9yIGludmFsaWQgcHJvZmlsZSBsZXZlbCBpZHMu
Ci1hYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gUHJvZmlsZUxldmVsSWRUb1N0cmluZygKK1JU
Q19FWFBPUlQgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IFByb2ZpbGVMZXZlbElkVG9TdHJp
bmcoCiAgICAgY29uc3QgUHJvZmlsZUxldmVsSWQmIHByb2ZpbGVfbGV2ZWxfaWQpOwogCiAvLyBH
ZW5lcmF0ZSBjb2RlYyBwYXJhbWV0ZXJzIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGFuc3dlciBpbiBh
biBTRFAgbmVnb3RpYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFjaGFubmVsLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuY2MK
aW5kZXggY2JhM2JlMzBlZDE2MTZjZTMzNzVhY2FhMGE5ZDU3NjM3Njk4Y2Y5ZS4uMDYzNGIyZTU3
NWY4YjJlYmFmZmMyMjk5ZTEyYjdlN2QwOTQ0ZmI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFz
ZS9tZWRpYWNoYW5uZWwuY2MKQEAgLTE2LDE2ICsxNiwxOSBAQCBWaWRlb09wdGlvbnM6OlZpZGVv
T3B0aW9ucygpID0gZGVmYXVsdDsKIFZpZGVvT3B0aW9uczo6flZpZGVvT3B0aW9ucygpID0gZGVm
YXVsdDsKIAogTWVkaWFDaGFubmVsOjpNZWRpYUNoYW5uZWwoY29uc3QgTWVkaWFDb25maWcmIGNv
bmZpZykKLSAgICA6IGVuYWJsZV9kc2NwXyhjb25maWcuZW5hYmxlX2RzY3ApLCBuZXR3b3JrX2lu
dGVyZmFjZV8oTlVMTCkge30KKyAgICA6IGVuYWJsZV9kc2NwXyhjb25maWcuZW5hYmxlX2RzY3Ap
IHt9CiAKLU1lZGlhQ2hhbm5lbDo6TWVkaWFDaGFubmVsKCkgOiBlbmFibGVfZHNjcF8oZmFsc2Up
LCBuZXR3b3JrX2ludGVyZmFjZV8oTlVMTCkge30KK01lZGlhQ2hhbm5lbDo6TWVkaWFDaGFubmVs
KCkgOiBlbmFibGVfZHNjcF8oZmFsc2UpIHt9CiAKIE1lZGlhQ2hhbm5lbDo6fk1lZGlhQ2hhbm5l
bCgpIHt9CiAKLXZvaWQgTWVkaWFDaGFubmVsOjpTZXRJbnRlcmZhY2UoTmV0d29ya0ludGVyZmFj
ZSogaWZhY2UpIHsKK3ZvaWQgTWVkaWFDaGFubmVsOjpTZXRJbnRlcmZhY2UoCisgICAgTmV0d29y
a0ludGVyZmFjZSogaWZhY2UsCisgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSog
bWVkaWFfdHJhbnNwb3J0KSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZuZXR3b3JrX2ludGVyZmFj
ZV9jcml0Xyk7CiAgIG5ldHdvcmtfaW50ZXJmYWNlXyA9IGlmYWNlOwotICBTZXREc2NwKGVuYWJs
ZV9kc2NwXyA/IFByZWZlcnJlZERzY3AoKSA6IHJ0Yzo6RFNDUF9ERUZBVUxUKTsKKyAgbWVkaWFf
dHJhbnNwb3J0XyA9IG1lZGlhX3RyYW5zcG9ydDsKKyAgVXBkYXRlRHNjcCgpOwogfQogCiBpbnQg
TWVkaWFDaGFubmVsOjpHZXRSdHBTZW5kVGltZUV4dG5JZCgpIGNvbnN0IHsKQEAgLTg0LDYgKzg3
LDEwIEBAIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gQXVkaW9TZW5kUGFyYW1l
dGVyczo6VG9TdHJpbmdNYXAoKSBjb25zdCB7CiAgIHJldHVybiBwYXJhbXM7CiB9CiAKK2NyaWNr
ZXQ6Ok1lZGlhVHlwZSBWb2ljZU1lZGlhQ2hhbm5lbDo6bWVkaWFfdHlwZSgpIGNvbnN0IHsKKyAg
cmV0dXJuIGNyaWNrZXQ6Ok1lZGlhVHlwZTo6TUVESUFfVFlQRV9BVURJTzsKK30KKwogVmlkZW9T
ZW5kUGFyYW1ldGVyczo6VmlkZW9TZW5kUGFyYW1ldGVycygpID0gZGVmYXVsdDsKIFZpZGVvU2Vu
ZFBhcmFtZXRlcnM6On5WaWRlb1NlbmRQYXJhbWV0ZXJzKCkgPSBkZWZhdWx0OwogCkBAIC05Mywx
MSArMTAwLDE5IEBAIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gVmlkZW9TZW5k
UGFyYW1ldGVyczo6VG9TdHJpbmdNYXAoKSBjb25zdCB7CiAgIHJldHVybiBwYXJhbXM7CiB9CiAK
K2NyaWNrZXQ6Ok1lZGlhVHlwZSBWaWRlb01lZGlhQ2hhbm5lbDo6bWVkaWFfdHlwZSgpIGNvbnN0
IHsKKyAgcmV0dXJuIGNyaWNrZXQ6Ok1lZGlhVHlwZTo6TUVESUFfVFlQRV9WSURFTzsKK30KKwog
RGF0YU1lZGlhQ2hhbm5lbDo6RGF0YU1lZGlhQ2hhbm5lbCgpID0gZGVmYXVsdDsKIERhdGFNZWRp
YUNoYW5uZWw6OkRhdGFNZWRpYUNoYW5uZWwoY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZykKICAg
ICA6IE1lZGlhQ2hhbm5lbChjb25maWcpIHt9CiBEYXRhTWVkaWFDaGFubmVsOjp+RGF0YU1lZGlh
Q2hhbm5lbCgpID0gZGVmYXVsdDsKIAorY3JpY2tldDo6TWVkaWFUeXBlIERhdGFNZWRpYUNoYW5u
ZWw6Om1lZGlhX3R5cGUoKSBjb25zdCB7CisgIHJldHVybiBjcmlja2V0OjpNZWRpYVR5cGU6Ok1F
RElBX1RZUEVfREFUQTsKK30KKwogYm9vbCBEYXRhTWVkaWFDaGFubmVsOjpHZXRTdGF0cyhEYXRh
TWVkaWFJbmZvKiBpbmZvKSB7CiAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNoYW5u
ZWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jh
c2UvbWVkaWFjaGFubmVsLmgKaW5kZXggZmYzMzY4Y2Y0MDFkNWY3OGFmMDc3OWM1NDdjZjBiMmVk
N2NiMjgyZS4uZmNhNmVlNGRkOWJlNWE1NWZiMjU4NTcwMjhlMzAwYTRmOGU3YTA4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFz
ZS9tZWRpYWNoYW5uZWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY2hhbm5lbC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX29wdGlvbnMuaCIKICNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZGVj
cnlwdG9yaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL2NyeXB0by9mcmFtZWVuY3J5cHRvcmlu
dGVyZmFjZS5oIgorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCiAjaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJhcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKQEAgLTE4MywxNCArMTg0LDIy
IEBAIGNsYXNzIE1lZGlhQ2hhbm5lbCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAg
IE1lZGlhQ2hhbm5lbCgpOwogICB+TWVkaWFDaGFubmVsKCkgb3ZlcnJpZGU7CiAKLSAgLy8gU2V0
cyB0aGUgYWJzdHJhY3QgaW50ZXJmYWNlIGNsYXNzIGZvciBzZW5kaW5nIFJUUC9SVENQIGRhdGEu
Ci0gIHZpcnR1YWwgdm9pZCBTZXRJbnRlcmZhY2UoTmV0d29ya0ludGVyZmFjZSogaWZhY2UpOwor
ICB2aXJ0dWFsIGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlKCkgY29uc3QgPSAwOworCisg
IC8vIFNldHMgdGhlIGFic3RyYWN0IGludGVyZmFjZSBjbGFzcyBmb3Igc2VuZGluZyBSVFAvUlRD
UCBkYXRhIGFuZAorICAvLyBpbnRlcmZhY2UgZm9yIG1lZGlhIHRyYW5zcG9ydCAoZXhwZXJpbWVu
dGFsKS4gSWYgbWVkaWEgdHJhbnNwb3J0IGlzCisgIC8vIHByb3ZpZGVkLCBpdCBzaG91bGQgYmUg
dXNlZCBpbnN0ZWFkIG9mIFJUUC9SVENQLgorICAvLyBUT0RPKHN1a2hhbm92KTogQ3VycmVudGx5
IG1lZGlhIHRyYW5zcG9ydCBjYW4gY28tZXhpc3Qgd2l0aCBSVFAvUlRDUCwgYnV0CisgIC8vIGlu
IHRoZSBmdXR1cmUgd2Ugd2lsbCByZWZhY3RvciBjb2RlIHRvIHNlbmQgYWxsIGZyYW1lcyB3aXRo
IG1lZGlhCisgIC8vIHRyYW5zcG9ydC4KKyAgdmlydHVhbCB2b2lkIFNldEludGVyZmFjZShOZXR3
b3JrSW50ZXJmYWNlKiBpZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6
Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpOwogICAvLyBDYWxsZWQg
d2hlbiBhIFJUUCBwYWNrZXQgaXMgcmVjZWl2ZWQuCiAgIHZpcnR1YWwgdm9pZCBPblBhY2tldFJl
Y2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgPSAwOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSA9
IDA7CiAgIC8vIENhbGxlZCB3aGVuIGEgUlRDUCBwYWNrZXQgaXMgcmVjZWl2ZWQuCiAgIHZpcnR1
YWwgdm9pZCBPblJ0Y3BSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tl
dF90aW1lX3VzKSA9IDA7CiAgIC8vIENhbGxlZCB3aGVuIHRoZSBzb2NrZXQncyBhYmlsaXR5IHRv
IHNlbmQgaGFzIGNoYW5nZWQuCiAgIHZpcnR1YWwgdm9pZCBPblJlYWR5VG9TZW5kKGJvb2wgcmVh
ZHkpID0gMDsKICAgLy8gQ2FsbGVkIHdoZW4gdGhlIG5ldHdvcmsgcm91dGUgdXNlZCBmb3Igc2Vu
ZGluZyBwYWNrZXRzIGNoYW5nZWQuCkBAIC0yNTEsMTQgKzI2MCwyOCBAQCBjbGFzcyBNZWRpYUNo
YW5uZWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIHJldHVybiBuZXR3b3Jr
X2ludGVyZmFjZV8tPlNldE9wdGlvbih0eXBlLCBvcHQsIG9wdGlvbik7CiAgIH0KIAorICB3ZWJy
dGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQoKSB7CisgICAgcmV0
dXJuIG1lZGlhX3RyYW5zcG9ydF87CisgIH0KKworICAvLyBDb3JyZXNwb25kcyB0byB0aGUgU0RQ
IGF0dHJpYnV0ZSBleHRtYXAtYWxsb3ctbWl4ZWQsIHNlZSBSRkM4Mjg1LgorICAvLyBTZXQgdG8g
dHJ1ZSBpZiBpdCdzIGFsbG93ZWQgdG8gbWl4IG9uZS0gYW5kIHR3by1ieXRlIFJUUCBoZWFkZXIg
ZXh0ZW5zaW9ucworICAvLyBpbiB0aGUgc2FtZSBzdHJlYW0uIFRoZSBzZXR0ZXIgYW5kIGdldHRl
ciBtdXN0IG9ubHkgYmUgY2FsbGVkIGZyb20KKyAgLy8gd29ya2VyX3RocmVhZC4KKyAgdm9pZCBT
ZXRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSB7CisgICAgZXh0bWFw
X2FsbG93X21peGVkXyA9IGV4dG1hcF9hbGxvd19taXhlZDsKKyAgfQorICBib29sIEV4dG1hcEFs
bG93TWl4ZWQoKSBjb25zdCB7IHJldHVybiBleHRtYXBfYWxsb3dfbWl4ZWRfOyB9CisKICBwcm90
ZWN0ZWQ6CiAgIHZpcnR1YWwgcnRjOjpEaWZmU2VydkNvZGVQb2ludCBQcmVmZXJyZWREc2NwKCkg
Y29uc3Q7CiAKICAgYm9vbCBEc2NwRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGVuYWJsZV9kc2Nw
XzsgfQogCi0gcHJpdmF0ZToKICAgLy8gVGhpcyBtZXRob2Qgc2V0cyBEU0NQIHx2YWx1ZXwgb24g
Ym90aCBSVFAgYW5kIFJUQ1AgY2hhbm5lbHMuCi0gIGludCBTZXREc2NwKHJ0Yzo6RGlmZlNlcnZD
b2RlUG9pbnQgdmFsdWUpIHsKKyAgaW50IFVwZGF0ZURzY3AoKSB7CisgICAgcnRjOjpEaWZmU2Vy
dkNvZGVQb2ludCB2YWx1ZSA9CisgICAgICAgIGVuYWJsZV9kc2NwXyA/IFByZWZlcnJlZERzY3Ao
KSA6IHJ0Yzo6RFNDUF9ERUZBVUxUOwogICAgIGludCByZXQ7CiAgICAgcmV0ID0gU2V0T3B0aW9u
KE5ldHdvcmtJbnRlcmZhY2U6OlNUX1JUUCwgcnRjOjpTb2NrZXQ6Ok9QVF9EU0NQLCB2YWx1ZSk7
CiAgICAgaWYgKHJldCA9PSAwKSB7CkBAIC0yNjcsNiArMjkwLDcgQEAgY2xhc3MgTWVkaWFDaGFu
bmVsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICByZXR1cm4gcmV0OwogICB9
CiAKKyBwcml2YXRlOgogICBib29sIERvU2VuZFBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVy
KiBwYWNrZXQsCiAgICAgICAgICAgICAgICAgICAgIGJvb2wgcnRjcCwKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRPcHRpb25zJiBvcHRpb25zKSB7CkBAIC0yODMsNyArMzA3
LDkgQEAgY2xhc3MgTWVkaWFDaGFubmVsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsK
ICAgLy8gZnJvbSBhbnkgTWVkaWFFbmdpbmUgdGhyZWFkcy4gVGhpcyBjcml0aWNhbCBzZWN0aW9u
IGlzIHRvIHByb3RlY3QgYWNjZXNzaW5nCiAgIC8vIG9mIG5ldHdvcmtfaW50ZXJmYWNlXyBvYmpl
Y3QuCiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIG5ldHdvcmtfaW50ZXJmYWNlX2NyaXRfOwotICBO
ZXR3b3JrSW50ZXJmYWNlKiBuZXR3b3JrX2ludGVyZmFjZV87CisgIE5ldHdvcmtJbnRlcmZhY2Uq
IG5ldHdvcmtfaW50ZXJmYWNlXyA9IG51bGxwdHI7CisgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJ
bnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydF8gPSBudWxscHRyOworICBib29sIGV4dG1hcF9hbGxv
d19taXhlZF8gPSBmYWxzZTsKIH07CiAKIC8vIFRoZSBzdGF0cyBpbmZvcm1hdGlvbiBpcyBzdHJ1
Y3R1cmVkIGFzIGZvbGxvd3M6CkBAIC00MDIsMTQgKzQyOCw2IEBAIHN0cnVjdCBWb2ljZVNlbmRl
ckluZm8gOiBwdWJsaWMgTWVkaWFTZW5kZXJJbmZvIHsKICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL3dlYnJ0Yy1zdGF0cy8jZG9tLXJ0Y21lZGlhc3RyZWFtdHJhY2tzdGF0cy10b3RhbGF1ZGlv
ZW5lcmd5CiAgIGRvdWJsZSB0b3RhbF9pbnB1dF9lbmVyZ3kgPSAwLjA7CiAgIGRvdWJsZSB0b3Rh
bF9pbnB1dF9kdXJhdGlvbiA9IDAuMDsKLSAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODU3Mik6
IFJlbW92ZSBBUE0gc3RhdHMgZnJvbSB0aGlzIHN0cnVjdCwgc2luY2UgdGhleQotICAvLyBhcmUg
bm8gbG9uZ2VyIG5lZWRlZCBub3cgdGhhdCB3ZSBoYXZlIGFwbV9zdGF0aXN0aWNzLgotICBpbnQg
ZWNob19kZWxheV9tZWRpYW5fbXMgPSAwOwotICBpbnQgZWNob19kZWxheV9zdGRfbXMgPSAwOwot
ICBpbnQgZWNob19yZXR1cm5fbG9zcyA9IDA7Ci0gIGludCBlY2hvX3JldHVybl9sb3NzX2VuaGFu
Y2VtZW50ID0gMDsKLSAgZmxvYXQgcmVzaWR1YWxfZWNob19saWtlbGlob29kID0gMC4wZjsKLSAg
ZmxvYXQgcmVzaWR1YWxfZWNob19saWtlbGlob29kX3JlY2VudF9tYXggPSAwLjBmOwogICBib29s
IHR5cGluZ19ub2lzZV9kZXRlY3RlZCA9IGZhbHNlOwogICB3ZWJydGM6OkFOQVN0YXRzIGFuYV9z
dGF0aXN0aWNzOwogICB3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZ1N0YXRzIGFwbV9zdGF0aXN0aWNz
OwpAQCAtNDU4LDYgKzQ3NiwxMCBAQCBzdHJ1Y3QgVm9pY2VSZWNlaXZlckluZm8gOiBwdWJsaWMg
TWVkaWFSZWNlaXZlckluZm8gewogICBpbnQgZGVjb2RpbmdfbXV0ZWRfb3V0cHV0ID0gMDsKICAg
Ly8gRXN0aW1hdGVkIGNhcHR1cmUgc3RhcnQgdGltZSBpbiBOVFAgdGltZSBpbiBtcy4KICAgaW50
NjRfdCBjYXB0dXJlX3N0YXJ0X250cF90aW1lX21zID0gLTE7CisgIC8vIENvdW50IG9mIHRoZSBu
dW1iZXIgb2YgYnVmZmVyIGZsdXNoZXMuCisgIHVpbnQ2NF90IGppdHRlcl9idWZmZXJfZmx1c2hl
cyA9IDA7CisgIC8vIE51bWJlciBvZiBzYW1wbGVzIGV4cGFuZGVkIGR1ZSB0byBkZWxheWVkIHBh
Y2tldHMuCisgIHVpbnQ2NF90IGRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzID0gMDsKIH07
CiAKIHN0cnVjdCBWaWRlb1NlbmRlckluZm8gOiBwdWJsaWMgTWVkaWFTZW5kZXJJbmZvIHsKQEAg
LTY0NywxMiArNjY5LDE0IEBAIHN0cnVjdCBSdHBTZW5kUGFyYW1ldGVycyA6IFJ0cFBhcmFtZXRl
cnM8Q29kZWM+IHsKICAgLy8gVGhpcyBpcyB0aGUgdmFsdWUgdG8gYmUgc2VudCBpbiB0aGUgTUlE
IFJUUCBoZWFkZXIgZXh0ZW5zaW9uIChpZiB0aGUgaGVhZGVyCiAgIC8vIGV4dGVuc2lvbiBpbiBp
bmNsdWRlZCBpbiB0aGUgbGlzdCBvZiBleHRlbnNpb25zKS4KICAgc3RkOjpzdHJpbmcgbWlkOwor
ICBib29sIGV4dG1hcF9hbGxvd19taXhlZCA9IGZhbHNlOwogCiAgcHJvdGVjdGVkOgogICBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IFRvU3RyaW5nTWFwKCkgY29uc3Qgb3ZlcnJp
ZGUgewogICAgIGF1dG8gcGFyYW1zID0gUnRwUGFyYW1ldGVyczxDb2RlYz46OlRvU3RyaW5nTWFw
KCk7CiAgICAgcGFyYW1zWyJtYXhfYmFuZHdpZHRoX2JwcyJdID0gcnRjOjpUb1N0cmluZyhtYXhf
YmFuZHdpZHRoX2Jwcyk7CiAgICAgcGFyYW1zWyJtaWQiXSA9IChtaWQuZW1wdHkoKSA/ICI8bm90
IHNldD4iIDogbWlkKTsKKyAgICBwYXJhbXNbImV4dG1hcC1hbGxvdy1taXhlZCJdID0gZXh0bWFw
X2FsbG93X21peGVkID8gInRydWUiIDogImZhbHNlIjsKICAgICByZXR1cm4gcGFyYW1zOwogICB9
CiB9OwpAQCAtNjc0LDYgKzY5OCw4IEBAIGNsYXNzIFZvaWNlTWVkaWFDaGFubmVsIDogcHVibGlj
IE1lZGlhQ2hhbm5lbCB7CiAgIGV4cGxpY2l0IFZvaWNlTWVkaWFDaGFubmVsKGNvbnN0IE1lZGlh
Q29uZmlnJiBjb25maWcpCiAgICAgICA6IE1lZGlhQ2hhbm5lbChjb25maWcpIHt9CiAgIH5Wb2lj
ZU1lZGlhQ2hhbm5lbCgpIG92ZXJyaWRlIHt9CisKKyAgY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlh
X3R5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgdmlydHVhbCBib29sIFNldFNlbmRQYXJhbWV0ZXJz
KGNvbnN0IEF1ZGlvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgPSAwOwogICB2aXJ0dWFsIGJvb2wg
U2V0UmVjdlBhcmFtZXRlcnMoY29uc3QgQXVkaW9SZWN2UGFyYW1ldGVycyYgcGFyYW1zKSA9IDA7
CiAgIHZpcnR1YWwgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIEdldFJ0cFNlbmRQYXJhbWV0ZXJzKHVp
bnQzMl90IHNzcmMpIGNvbnN0ID0gMDsKQEAgLTc0Niw2ICs3NzIsNyBAQCBjbGFzcyBWaWRlb01l
ZGlhQ2hhbm5lbCA6IHB1YmxpYyBNZWRpYUNoYW5uZWwgewogICAgICAgOiBNZWRpYUNoYW5uZWwo
Y29uZmlnKSB7fQogICB+VmlkZW9NZWRpYUNoYW5uZWwoKSBvdmVycmlkZSB7fQogCisgIGNyaWNr
ZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIHZpcnR1YWwgYm9v
bCBTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBWaWRlb1NlbmRQYXJhbWV0ZXJzJiBwYXJhbXMpID0g
MDsKICAgdmlydHVhbCBib29sIFNldFJlY3ZQYXJhbWV0ZXJzKGNvbnN0IFZpZGVvUmVjdlBhcmFt
ZXRlcnMmIHBhcmFtcykgPSAwOwogICB2aXJ0dWFsIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBHZXRS
dHBTZW5kUGFyYW1ldGVycyh1aW50MzJfdCBzc3JjKSBjb25zdCA9IDA7CkBAIC04NTcsNiArODg0
LDcgQEAgY2xhc3MgRGF0YU1lZGlhQ2hhbm5lbCA6IHB1YmxpYyBNZWRpYUNoYW5uZWwgewogICBl
eHBsaWNpdCBEYXRhTWVkaWFDaGFubmVsKGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcpOwogICB+
RGF0YU1lZGlhQ2hhbm5lbCgpIG92ZXJyaWRlOwogCisgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRp
YV90eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIHZpcnR1YWwgYm9vbCBTZXRTZW5kUGFyYW1ldGVy
cyhjb25zdCBEYXRhU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgPSAwOwogICB2aXJ0dWFsIGJvb2wg
U2V0UmVjdlBhcmFtZXRlcnMoY29uc3QgRGF0YVJlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpID0gMDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvYmFzZS9tZWRpYWNvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNvbmZpZy5oCmluZGV4IGVkYTM4N2UzMTkxMTJi
MzIxZjJmZDhlNjhiNjhmMjNkNWIwYmYwODkuLmM4ZmM1MjEyYTBmOGNiYzViMjczODZiNTg3ZWY0
NjA1M2NhNWZiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFjb25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY29uZmlnLmgKQEAgLTU5
LDggKzU5LDE3IEBAIHN0cnVjdCBNZWRpYUNvbmZpZyB7CiAgICAgLy8gVE9ETyhidWdzLndlYnJ0
Yy5vcmcvODUwNCk6IElmIGFsbCBnb2VzIHdlbGwsIHRoZSBmbGFnIHdpbGwgYmUgcmVtb3ZlZAog
ICAgIC8vIHRvZ2V0aGVyIHdpdGggdGhlIG9sZCBtZXRob2Qgb2YgZXN0aW1hdGlvbi4KICAgICBi
b29sIGV4cGVyaW1lbnRfY3B1X2xvYWRfZXN0aW1hdG9yID0gZmFsc2U7CisKKyAgICAvLyBUaW1l
IGludGVydmFsIGJldHdlZW4gUlRDUCByZXBvcnQgZm9yIHZpZGVvCisgICAgaW50IHJ0Y3BfcmVw
b3J0X2ludGVydmFsX21zID0gMTAwMDsKICAgfSB2aWRlbzsKIAorICAvLyBBdWRpby1zcGVjaWZp
YyBjb25maWcuCisgIHN0cnVjdCBBdWRpbyB7CisgICAgLy8gVGltZSBpbnRlcnZhbCBiZXR3ZWVu
IFJUQ1AgcmVwb3J0IGZvciBhdWRpbworICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9
IDUwMDA7CisgIH0gYXVkaW87CisKICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhQ29uZmln
JiBvKSBjb25zdCB7CiAgICAgcmV0dXJuIGVuYWJsZV9kc2NwID09IG8uZW5hYmxlX2RzY3AgJiYK
ICAgICAgICAgICAgdmlkZW8uZW5hYmxlX2NwdV9hZGFwdGF0aW9uID09IG8udmlkZW8uZW5hYmxl
X2NwdV9hZGFwdGF0aW9uICYmCkBAIC03MSw3ICs4MCw5IEBAIHN0cnVjdCBNZWRpYUNvbmZpZyB7
CiAgICAgICAgICAgIHZpZGVvLnBlcmlvZGljX2Fscl9iYW5kd2lkdGhfcHJvYmluZyA9PQogICAg
ICAgICAgICAgICAgby52aWRlby5wZXJpb2RpY19hbHJfYmFuZHdpZHRoX3Byb2JpbmcgJiYKICAg
ICAgICAgICAgdmlkZW8uZXhwZXJpbWVudF9jcHVfbG9hZF9lc3RpbWF0b3IgPT0KLSAgICAgICAg
ICAgICAgIG8udmlkZW8uZXhwZXJpbWVudF9jcHVfbG9hZF9lc3RpbWF0b3I7CisgICAgICAgICAg
ICAgICBvLnZpZGVvLmV4cGVyaW1lbnRfY3B1X2xvYWRfZXN0aW1hdG9yICYmCisgICAgICAgICAg
IHZpZGVvLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID09IG8udmlkZW8ucnRjcF9yZXBvcnRfaW50
ZXJ2YWxfbXMgJiYKKyAgICAgICAgICAgYXVkaW8ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPT0g
by5hdWRpby5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tczsKICAgfQogCiAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBNZWRpYUNvbmZpZyYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oCmluZGV4IDE0YzQ5YmFmNzJj
YmFkMWM1YTkyMDI4YjQ3OWEwYjE3M2MwZGFiY2QuLmM0YTM0MDZmZDg1YTIzYThhYWJhMzQwM2Mz
MTljNmU4MTFmNWE2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY29uc3RhbnRz
LmgKQEAgLTEzLDYgKzEzLDggQEAKIAogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgInJ0
Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCisKIC8vIFRoaXMgZmlsZSBjb250YWlucyBjb25z
dGFudHMgcmVsYXRlZCB0byBtZWRpYS4KIAogbmFtZXNwYWNlIGNyaWNrZXQgewpAQCAtMTI3LDEy
ICsxMjksMTIgQEAgZXh0ZXJuIGNvbnN0IGNoYXIga0NvbWZvcnROb2lzZUNvZGVjTmFtZVtdOwog
CiBleHRlcm4gY29uc3QgY2hhciBrVnA4Q29kZWNOYW1lW107CiBleHRlcm4gY29uc3QgY2hhciBr
VnA5Q29kZWNOYW1lW107Ci1leHRlcm4gY29uc3QgY2hhciBrSDI2NENvZGVjTmFtZVtdOworUlRD
X0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciBrSDI2NENvZGVjTmFtZVtdOwogCiAvLyBSRkMgNjE4
NCBSVFAgUGF5bG9hZCBGb3JtYXQgZm9yIEguMjY0IHZpZGVvCi1leHRlcm4gY29uc3QgY2hhciBr
SDI2NEZtdHBQcm9maWxlTGV2ZWxJZFtdOwotZXh0ZXJuIGNvbnN0IGNoYXIga0gyNjRGbXRwTGV2
ZWxBc3ltbWV0cnlBbGxvd2VkW107Ci1leHRlcm4gY29uc3QgY2hhciBrSDI2NEZtdHBQYWNrZXRp
emF0aW9uTW9kZVtdOworUlRDX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciBrSDI2NEZtdHBQcm9m
aWxlTGV2ZWxJZFtdOworUlRDX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciBrSDI2NEZtdHBMZXZl
bEFzeW1tZXRyeUFsbG93ZWRbXTsKK1JUQ19FWFBPUlQgZXh0ZXJuIGNvbnN0IGNoYXIga0gyNjRG
bXRwUGFja2V0aXphdGlvbk1vZGVbXTsKIGV4dGVybiBjb25zdCBjaGFyIGtIMjY0Rm10cFNwcm9w
UGFyYW1ldGVyU2V0c1tdOwogZXh0ZXJuIGNvbnN0IGNoYXIga0gyNjRQcm9maWxlTGV2ZWxDb25z
dHJhaW5lZEJhc2VsaW5lW107CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFlbmdpbmUuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhZW5naW5lLmNj
CmluZGV4IDc2Y2FjNGI0MzgzNDJlMGFiZTIyNmE3Mjc2NWQwNDYyOWQ1ODIzYjcuLmQ1MTk4ZmU2
NGYxOTAxZTAwM2RmNDgyMjkzOTgzNGRjZjFiY2VmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFlbmdpbmUuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFz
ZS9tZWRpYWVuZ2luZS5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAibWVkaWEvYmFz
ZS9tZWRpYWVuZ2luZS5oIgogCisjaW5jbHVkZSA8dXRpbGl0eT4KKwogI2luY2x1ZGUgImFwaS92
aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJp
bmdlbmNvZGUuaCIKIApAQCAtMTA0LDQgKzEwNiwzMyBAQCB3ZWJydGM6OlJUQ0Vycm9yIFZhbGlk
YXRlUnRwUGFyYW1ldGVycygKICAgcmV0dXJuIHdlYnJ0Yzo6UlRDRXJyb3I6Ok9LKCk7CiB9CiAK
K0NvbXBvc2l0ZU1lZGlhRW5naW5lOjpDb21wb3NpdGVNZWRpYUVuZ2luZSgKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Vm9pY2VFbmdpbmVJbnRlcmZhY2U+IHZvaWNlX2VuZ2luZSwKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9FbmdpbmVJbnRlcmZhY2U+IHZpZGVvX2VuZ2luZSkKKyAgICA6IHZvaWNl
X2VuZ2luZV8oc3RkOjptb3ZlKHZvaWNlX2VuZ2luZSkpLAorICAgICAgdmlkZW9fZW5naW5lXyhz
dGQ6Om1vdmUodmlkZW9fZW5naW5lKSkge30KKworQ29tcG9zaXRlTWVkaWFFbmdpbmU6On5Db21w
b3NpdGVNZWRpYUVuZ2luZSgpID0gZGVmYXVsdDsKKworYm9vbCBDb21wb3NpdGVNZWRpYUVuZ2lu
ZTo6SW5pdCgpIHsKKyAgdm9pY2UoKS5Jbml0KCk7CisgIHJldHVybiB0cnVlOworfQorCitWb2lj
ZUVuZ2luZUludGVyZmFjZSYgQ29tcG9zaXRlTWVkaWFFbmdpbmU6OnZvaWNlKCkgeworICByZXR1
cm4gKnZvaWNlX2VuZ2luZV8uZ2V0KCk7Cit9CisKK1ZpZGVvRW5naW5lSW50ZXJmYWNlJiBDb21w
b3NpdGVNZWRpYUVuZ2luZTo6dmlkZW8oKSB7CisgIHJldHVybiAqdmlkZW9fZW5naW5lXy5nZXQo
KTsKK30KKworY29uc3QgVm9pY2VFbmdpbmVJbnRlcmZhY2UmIENvbXBvc2l0ZU1lZGlhRW5naW5l
Ojp2b2ljZSgpIGNvbnN0IHsKKyAgcmV0dXJuICp2b2ljZV9lbmdpbmVfLmdldCgpOworfQorCitj
b25zdCBWaWRlb0VuZ2luZUludGVyZmFjZSYgQ29tcG9zaXRlTWVkaWFFbmdpbmU6OnZpZGVvKCkg
Y29uc3QgeworICByZXR1cm4gKnZpZGVvX2VuZ2luZV8uZ2V0KCk7Cit9CisKIH07ICAvLyBuYW1l
c3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5oCmluZGV4IDAx
YzZmYjY1MjY5ZWEyZTcyNjEyNGRlOWFiYjcyODlkNTY2NTRiZGIuLjAxMzAwZDQ4YWMzNzBiN2E5
NWE2ZGFhNzg4YTZmNDkyYzQ2YzdhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFlbmdpbmUuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhZW5n
aW5lLmgKQEAgLTE1LDEzICsxNSwxMyBAQAogI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW8u
aD4KICNlbmRpZgogCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNs
dWRlIDx0dXBsZT4KLSNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJh
cGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKICNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgImNhbGwvYXVkaW9fc3RhdGUuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Nv
ZGVjLmgiCkBAIC00OCwzNyArNDgsMzAgQEAgc3RydWN0IFJ0cENhcGFiaWxpdGllcyB7CiAgIHN0
ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uPiBoZWFkZXJfZXh0ZW5zaW9uczsKIH07CiAK
LS8vIE1lZGlhRW5naW5lSW50ZXJmYWNlIGlzIGFuIGFic3RyYWN0aW9uIG9mIGEgbWVkaWEgZW5n
aW5lIHdoaWNoIGNhbiBiZQotLy8gc3ViY2xhc3NlZCB0byBzdXBwb3J0IGRpZmZlcmVudCBtZWRp
YSBjb21wb25lbnRyeSBiYWNrZW5kcy4KLS8vIEl0IHN1cHBvcnRzIHZvaWNlIGFuZCB2aWRlbyBv
cGVyYXRpb25zIGluIHRoZSBzYW1lIGNsYXNzIHRvIGZhY2lsaXRhdGUKLS8vIHByb3BlciBzeW5j
aHJvbml6YXRpb24gYmV0d2VlbiBib3RoIG1lZGlhIHR5cGVzLgotY2xhc3MgTWVkaWFFbmdpbmVJ
bnRlcmZhY2UgeworY2xhc3MgVm9pY2VFbmdpbmVJbnRlcmZhY2UgewogIHB1YmxpYzoKLSAgdmly
dHVhbCB+TWVkaWFFbmdpbmVJbnRlcmZhY2UoKSB7fQorICBWb2ljZUVuZ2luZUludGVyZmFjZSgp
ID0gZGVmYXVsdDsKKyAgdmlydHVhbCB+Vm9pY2VFbmdpbmVJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7
CisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oVm9pY2VFbmdpbmVJbnRlcmZhY2UpOwog
CiAgIC8vIEluaXRpYWxpemF0aW9uCiAgIC8vIFN0YXJ0cyB0aGUgZW5naW5lLgotICB2aXJ0dWFs
IGJvb2wgSW5pdCgpID0gMDsKKyAgdmlydHVhbCB2b2lkIEluaXQoKSA9IDA7CisKICAgLy8gVE9E
Tyhzb2xlbmJlcmcpOiBSZW1vdmUgb25jZSBWb0UgQVBJIHJlZmFjdG9yaW5nIGlzIGRvbmUuCiAg
IHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4gR2V0QXVkaW9T
dGF0ZSgpIGNvbnN0ID0gMDsKIAogICAvLyBNZWRpYUNoYW5uZWwgY3JlYXRpb24KICAgLy8gQ3Jl
YXRlcyBhIHZvaWNlIG1lZGlhIGNoYW5uZWwuIFJldHVybnMgTlVMTCBvbiBmYWlsdXJlLgotICB2
aXJ0dWFsIFZvaWNlTWVkaWFDaGFubmVsKiBDcmVhdGVDaGFubmVsKHdlYnJ0Yzo6Q2FsbCogY2Fs
bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZWRp
YUNvbmZpZyYgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykgPSAwOwotICAvLyBDcmVhdGVzIGEgdmlk
ZW8gbWVkaWEgY2hhbm5lbCwgcGFpcmVkIHdpdGggdGhlIHNwZWNpZmllZCB2b2ljZSBjaGFubmVs
LgotICAvLyBSZXR1cm5zIE5VTEwgb24gZmFpbHVyZS4KLSAgdmlydHVhbCBWaWRlb01lZGlhQ2hh
bm5lbCogQ3JlYXRlVmlkZW9DaGFubmVsKAorICB2aXJ0dWFsIFZvaWNlTWVkaWFDaGFubmVsKiBD
cmVhdGVNZWRpYUNoYW5uZWwoCiAgICAgICB3ZWJydGM6OkNhbGwqIGNhbGwsCiAgICAgICBjb25z
dCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25z
KSA9IDA7CisgICAgICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMsCisgICAgICBjb25zdCB3
ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSA9IDA7CiAKLSAgdmlydHVhbCBj
b25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgYXVkaW9fc2VuZF9jb2RlY3MoKSA9IDA7Ci0g
IHZpcnR1YWwgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGF1ZGlvX3JlY3ZfY29kZWNz
KCkgPSAwOwotICB2aXJ0dWFsIFJ0cENhcGFiaWxpdGllcyBHZXRBdWRpb0NhcGFiaWxpdGllcygp
ID0gMDsKLSAgdmlydHVhbCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiB2aWRlb19jb2RlY3MoKSA9
IDA7Ci0gIHZpcnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldFZpZGVvQ2FwYWJpbGl0aWVzKCkgPSAw
OworICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBzZW5kX2NvZGVjcygp
IGNvbnN0ID0gMDsKKyAgdmlydHVhbCBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgcmVj
dl9jb2RlY3MoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldENhcGFi
aWxpdGllcygpIGNvbnN0ID0gMDsKIAogICAvLyBTdGFydHMgQUVDIGR1bXAgdXNpbmcgZXhpc3Rp
bmcgZmlsZSwgYSBtYXhpbXVtIGZpbGUgc2l6ZSBpbiBieXRlcyBjYW4gYmUKICAgLy8gc3BlY2lm
aWVkLiBMb2dnaW5nIGlzIHN0b3BwZWQganVzdCBiZWZvcmUgdGhlIHNpemUgbGltaXQgaXMgZXhj
ZWVkZWQuCkBAIC04OSw2OSArODIsNjYgQEAgY2xhc3MgTWVkaWFFbmdpbmVJbnRlcmZhY2Ugewog
ICB2aXJ0dWFsIHZvaWQgU3RvcEFlY0R1bXAoKSA9IDA7CiB9OwogCitjbGFzcyBWaWRlb0VuZ2lu
ZUludGVyZmFjZSB7CisgcHVibGljOgorICBWaWRlb0VuZ2luZUludGVyZmFjZSgpID0gZGVmYXVs
dDsKKyAgdmlydHVhbCB+VmlkZW9FbmdpbmVJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CisgIFJUQ19E
SVNBTExPV19DT1BZX0FORF9BU1NJR04oVmlkZW9FbmdpbmVJbnRlcmZhY2UpOworCisgIC8vIENy
ZWF0ZXMgYSB2aWRlbyBtZWRpYSBjaGFubmVsLCBwYWlyZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHZv
aWNlIGNoYW5uZWwuCisgIC8vIFJldHVybnMgTlVMTCBvbiBmYWlsdXJlLgorICB2aXJ0dWFsIFZp
ZGVvTWVkaWFDaGFubmVsKiBDcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICB3ZWJydGM6OkNhbGwq
IGNhbGwsCisgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAorICAgICAgY29uc3QgVmlk
ZW9PcHRpb25zJiBvcHRpb25zLAorICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBj
cnlwdG9fb3B0aW9ucykgPSAwOworCisgIHZpcnR1YWwgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4g
Y29kZWNzKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBhYmls
aXRpZXMoKSBjb25zdCA9IDA7Cit9OworCisvLyBNZWRpYUVuZ2luZUludGVyZmFjZSBpcyBhbiBh
YnN0cmFjdGlvbiBvZiBhIG1lZGlhIGVuZ2luZSB3aGljaCBjYW4gYmUKKy8vIHN1YmNsYXNzZWQg
dG8gc3VwcG9ydCBkaWZmZXJlbnQgbWVkaWEgY29tcG9uZW50cnkgYmFja2VuZHMuCisvLyBJdCBz
dXBwb3J0cyB2b2ljZSBhbmQgdmlkZW8gb3BlcmF0aW9ucyBpbiB0aGUgc2FtZSBjbGFzcyB0byBm
YWNpbGl0YXRlCisvLyBwcm9wZXIgc3luY2hyb25pemF0aW9uIGJldHdlZW4gYm90aCBtZWRpYSB0
eXBlcy4KK2NsYXNzIE1lZGlhRW5naW5lSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwg
fk1lZGlhRW5naW5lSW50ZXJmYWNlKCkge30KKworICAvLyBJbml0aWFsaXphdGlvbgorICAvLyBT
dGFydHMgdGhlIGVuZ2luZS4KKyAgdmlydHVhbCBib29sIEluaXQoKSA9IDA7CisgIHZpcnR1YWwg
Vm9pY2VFbmdpbmVJbnRlcmZhY2UmIHZvaWNlKCkgPSAwOworICB2aXJ0dWFsIFZpZGVvRW5naW5l
SW50ZXJmYWNlJiB2aWRlbygpID0gMDsKKyAgdmlydHVhbCBjb25zdCBWb2ljZUVuZ2luZUludGVy
ZmFjZSYgdm9pY2UoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgY29uc3QgVmlkZW9FbmdpbmVJbnRl
cmZhY2UmIHZpZGVvKCkgY29uc3QgPSAwOworfTsKKwogLy8gQ29tcG9zaXRlTWVkaWFFbmdpbmUg
Y29uc3RydWN0cyBhIE1lZGlhRW5naW5lIGZyb20gc2VwYXJhdGUKIC8vIHZvaWNlIGFuZCB2aWRl
byBlbmdpbmUgY2xhc3Nlcy4KLXRlbXBsYXRlIDxjbGFzcyBWT0lDRSwgY2xhc3MgVklERU8+CiBj
bGFzcyBDb21wb3NpdGVNZWRpYUVuZ2luZSA6IHB1YmxpYyBNZWRpYUVuZ2luZUludGVyZmFjZSB7
CiAgcHVibGljOgotICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJnczEsIGNsYXNzLi4uIEFyZ3MyPgot
ICBDb21wb3NpdGVNZWRpYUVuZ2luZShzdGQ6OnR1cGxlPEFyZ3MxLi4uPiBmaXJzdF9hcmdzLAot
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnR1cGxlPEFyZ3MyLi4uPiBzZWNvbmRfYXJncykK
LSAgICAgIDogZW5naW5lc18oc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LAotICAgICAgICAgICAg
ICAgICBzdGQ6Om1vdmUoZmlyc3RfYXJncyksCi0gICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShz
ZWNvbmRfYXJncykpIHt9Ci0KLSAgdmlydHVhbCB+Q29tcG9zaXRlTWVkaWFFbmdpbmUoKSB7fQot
ICB2aXJ0dWFsIGJvb2wgSW5pdCgpIHsKLSAgICB2b2ljZSgpLkluaXQoKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLSAgfQotCi0gIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9T
dGF0ZT4gR2V0QXVkaW9TdGF0ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gdm9pY2UoKS5HZXRBdWRp
b1N0YXRlKCk7Ci0gIH0KLSAgdmlydHVhbCBWb2ljZU1lZGlhQ2hhbm5lbCogQ3JlYXRlQ2hhbm5l
bCh3ZWJydGM6OkNhbGwqIGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMpIHsKLSAg
ICByZXR1cm4gdm9pY2UoKS5DcmVhdGVDaGFubmVsKGNhbGwsIGNvbmZpZywgb3B0aW9ucyk7Ci0g
IH0KLSAgdmlydHVhbCBWaWRlb01lZGlhQ2hhbm5lbCogQ3JlYXRlVmlkZW9DaGFubmVsKHdlYnJ0
Yzo6Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpIHsK
LSAgICByZXR1cm4gdmlkZW8oKS5DcmVhdGVDaGFubmVsKGNhbGwsIGNvbmZpZywgb3B0aW9ucyk7
Ci0gIH0KLQotICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBhdWRpb19z
ZW5kX2NvZGVjcygpIHsKLSAgICByZXR1cm4gdm9pY2UoKS5zZW5kX2NvZGVjcygpOwotICB9Ci0g
IHZpcnR1YWwgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGF1ZGlvX3JlY3ZfY29kZWNz
KCkgewotICAgIHJldHVybiB2b2ljZSgpLnJlY3ZfY29kZWNzKCk7Ci0gIH0KLSAgdmlydHVhbCBS
dHBDYXBhYmlsaXRpZXMgR2V0QXVkaW9DYXBhYmlsaXRpZXMoKSB7Ci0gICAgcmV0dXJuIHZvaWNl
KCkuR2V0Q2FwYWJpbGl0aWVzKCk7Ci0gIH0KLSAgdmlydHVhbCBzdGQ6OnZlY3RvcjxWaWRlb0Nv
ZGVjPiB2aWRlb19jb2RlY3MoKSB7IHJldHVybiB2aWRlbygpLmNvZGVjcygpOyB9Ci0gIHZpcnR1
YWwgUnRwQ2FwYWJpbGl0aWVzIEdldFZpZGVvQ2FwYWJpbGl0aWVzKCkgewotICAgIHJldHVybiB2
aWRlbygpLkdldENhcGFiaWxpdGllcygpOwotICB9Ci0KLSAgdmlydHVhbCBib29sIFN0YXJ0QWVj
RHVtcChydGM6OlBsYXRmb3JtRmlsZSBmaWxlLCBpbnQ2NF90IG1heF9zaXplX2J5dGVzKSB7Ci0g
ICAgcmV0dXJuIHZvaWNlKCkuU3RhcnRBZWNEdW1wKGZpbGUsIG1heF9zaXplX2J5dGVzKTsKLSAg
fQotCi0gIHZpcnR1YWwgdm9pZCBTdG9wQWVjRHVtcCgpIHsgdm9pY2UoKS5TdG9wQWVjRHVtcCgp
OyB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIFZPSUNFJiB2b2ljZSgpIHsgcmV0dXJuIGVuZ2luZXNfLmZp
cnN0OyB9Ci0gIFZJREVPJiB2aWRlbygpIHsgcmV0dXJuIGVuZ2luZXNfLnNlY29uZDsgfQotICBj
b25zdCBWT0lDRSYgdm9pY2UoKSBjb25zdCB7IHJldHVybiBlbmdpbmVzXy5maXJzdDsgfQotICBj
b25zdCBWSURFTyYgdmlkZW8oKSBjb25zdCB7IHJldHVybiBlbmdpbmVzXy5zZWNvbmQ7IH0KKyAg
Q29tcG9zaXRlTWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPFZvaWNlRW5naW5lSW50ZXJmYWNl
PiBhdWRpb19lbmdpbmUsCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0VuZ2luZUludGVyZmFjZT4gdmlkZW9fZW5naW5lKTsKKyAgfkNvbXBvc2l0ZU1lZGlhRW5n
aW5lKCkgb3ZlcnJpZGU7CisgIGJvb2wgSW5pdCgpIG92ZXJyaWRlOworCisgIFZvaWNlRW5naW5l
SW50ZXJmYWNlJiB2b2ljZSgpIG92ZXJyaWRlOworICBWaWRlb0VuZ2luZUludGVyZmFjZSYgdmlk
ZW8oKSBvdmVycmlkZTsKKyAgY29uc3QgVm9pY2VFbmdpbmVJbnRlcmZhY2UmIHZvaWNlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgIGNvbnN0IFZpZGVvRW5naW5lSW50ZXJmYWNlJiB2aWRlbygpIGNvbnN0
IG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKLSAgc3RkOjpwYWlyPFZPSUNFLCBWSURFTz4gZW5naW5l
c187CisgIHN0ZDo6dW5pcXVlX3B0cjxWb2ljZUVuZ2luZUludGVyZmFjZT4gdm9pY2VfZW5naW5l
XzsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5naW5lSW50ZXJmYWNlPiB2aWRlb19lbmdpbmVf
OwogfTsKIAotZW51bSBEYXRhQ2hhbm5lbFR5cGUgeyBEQ1RfTk9ORSA9IDAsIERDVF9SVFAgPSAx
LCBEQ1RfU0NUUCA9IDIgfTsKK2VudW0gRGF0YUNoYW5uZWxUeXBlIHsKKyAgRENUX05PTkUgPSAw
LAorICBEQ1RfUlRQID0gMSwKKyAgRENUX1NDVFAgPSAyLAorICBEQ1RfTUVESUFfVFJBTlNQT1JU
ID0gMworfTsKIAogY2xhc3MgRGF0YUVuZ2luZUludGVyZmFjZSB7CiAgcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFz
ZS9ydHBkYXRhZW5naW5lLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5naW5lLmNjCmluZGV4IGZjMmI3MzE0MWVkZDc1ZTA4
ZTZkNjZiMzViNjQzODljZmRhOGYzZTYuLmMzMzY3YzBhMWY2MGI0OTRmN2EzMzEzZDFmNTUyY2I3
YWQ2ZWRlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3J0cGRhdGFlbmdpbmUuY2MKQEAg
LTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgPG1hcD4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5n
cy9tYXRjaC5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29kZWMuaCIKICNpbmNsdWRlICJtZWRp
YS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9ydHB1dGlscy5o
IgpAQCAtMjEsNyArMjIsNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2FuaXRpemVyLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQg
ewogCkBAIC00Nyw3ICs0Nyw3IEBAIERhdGFNZWRpYUNoYW5uZWwqIFJ0cERhdGFFbmdpbmU6OkNy
ZWF0ZUNoYW5uZWwoY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZykgewogc3RhdGljIGNvbnN0IERh
dGFDb2RlYyogRmluZENvZGVjQnlOYW1lKGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGNv
ZGVjcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgbmFtZSkgewogICBmb3IgKGNvbnN0IERhdGFDb2RlYyYgY29kZWMgOiBjb2RlY3Mp
IHsKLSAgICBpZiAoX3N0cmljbXAobmFtZS5jX3N0cigpLCBjb2RlYy5uYW1lLmNfc3RyKCkpID09
IDApCisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwgY29kZWMubmFtZSkpCiAg
ICAgICByZXR1cm4gJmNvZGVjOwogICB9CiAgIHJldHVybiBudWxscHRyOwpAQCAtMTk0LDcgKzE5
NCw3IEBAIGJvb2wgUnRwRGF0YU1lZGlhQ2hhbm5lbDo6UmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJf
dCBzc3JjKSB7CiB9CiAKIHZvaWQgUnRwRGF0YU1lZGlhQ2hhbm5lbDo6T25QYWNrZXRSZWNlaXZl
ZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgLyog
cGFja2V0X3RpbWVfdXMgKi8pIHsKICAgUnRwSGVhZGVyIGhlYWRlcjsKICAgaWYgKCFHZXRSdHBI
ZWFkZXIocGFja2V0LT5jZGF0YSgpLCBwYWNrZXQtPnNpemUoKSwgJmhlYWRlcikpIHsKICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9iYXNlL3J0cGRhdGFlbmdpbmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZS5oCmluZGV4IDk2NmQw
YzgxNTE0MTU3ZDJlMDdhM2M3N2Q1NGY2M2YzMmUzMGI2ZjMuLjQyZTkxOTAzOWQwMTNmOWNmYTg2
Mzc5ZTNhYWFhMmRhZDI3N2M3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVu
Z2luZS5oCkBAIC04Miw5ICs4Miw5IEBAIGNsYXNzIFJ0cERhdGFNZWRpYUNoYW5uZWwgOiBwdWJs
aWMgRGF0YU1lZGlhQ2hhbm5lbCB7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KICAgdmlydHVhbCB2
b2lkIE9uUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRf
dGltZV91cyk7CiAgIHZpcnR1YWwgdm9pZCBPblJ0Y3BSZWNlaXZlZChydGM6OkNvcHlPbldyaXRl
QnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7fQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykge30KICAgdmlydHVhbCB2b2lkIE9uUmVhZHlUb1Nl
bmQoYm9vbCByZWFkeSkge30KICAgdmlydHVhbCBib29sIFNlbmREYXRhKGNvbnN0IFNlbmREYXRh
UGFyYW1zJiBwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlP
bldyaXRlQnVmZmVyJiBwYXlsb2FkLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5naW5lX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9y
dHBkYXRhZW5naW5lX3VuaXR0ZXN0LmNjCmluZGV4IGMxNWM1NWY1ZTYyNzRlODhkMzU3ZjlkOTYw
ZGU2YzE2YTdlODg1MTcuLjliOGUxMGI0NTAwN2NjZWQ2Njk4YTVlMjQ0MjAzZTA4YjZkZDQ1ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3J0cGRhdGFlbmdpbmVfdW5pdHRl
c3QuY2MKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgUnRwRGF0YU1lZGlhQ2hhbm5lbFRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgY3JpY2tldDo6TWVkaWFDb25maWcgY29uZmlnOwog
ICAgIGNyaWNrZXQ6OlJ0cERhdGFNZWRpYUNoYW5uZWwqIGNoYW5uZWwgPQogICAgICAgICBzdGF0
aWNfY2FzdDxjcmlja2V0OjpSdHBEYXRhTWVkaWFDaGFubmVsKj4oZG1lLT5DcmVhdGVDaGFubmVs
KGNvbmZpZykpOwotICAgIGNoYW5uZWwtPlNldEludGVyZmFjZShpZmFjZV8uZ2V0KCkpOworICAg
IGNoYW5uZWwtPlNldEludGVyZmFjZShpZmFjZV8uZ2V0KCksIC8qbWVkaWFfdHJhbnNwb3J0PSov
bnVsbHB0cik7CiAgICAgY2hhbm5lbC0+U2lnbmFsRGF0YVJlY2VpdmVkLmNvbm5lY3QocmVjZWl2
ZXJfLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZGYWtl
RGF0YVJlY2VpdmVyOjpPbkRhdGFSZWNlaXZlZCk7CiAgICAgcmV0dXJuIGNoYW5uZWw7CkBAIC0z
MTcsMTMgKzMxNywxMyBAQCBURVNUX0YoUnRwRGF0YU1lZGlhQ2hhbm5lbFRlc3QsIFJlY2VpdmVE
YXRhKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpSdHBEYXRhTWVkaWFDaGFubmVsPiBk
bWMoQ3JlYXRlQ2hhbm5lbCgpKTsKIAogICAvLyBTZXRSZWNlaXZlZCBub3QgY2FsbGVkLgotICBk
bWMtPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcnRjOjpQYWNrZXRUaW1lKCkpOworICBkbWMt
Pk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBF
WFBFQ1RfRkFMU0UoSGFzUmVjZWl2ZWREYXRhKCkpOwogCiAgIGRtYy0+U2V0UmVjZWl2ZSh0cnVl
KTsKIAogICAvLyBVbmtub3duIHBheWxvYWQgaWQKLSAgZG1jLT5PblBhY2tldFJlY2VpdmVkKCZw
YWNrZXQsIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgZG1jLT5PblBhY2tldFJlY2VpdmVkKCZwYWNr
ZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgRVhQRUNUX0ZBTFNFKEhhc1JlY2VpdmVk
RGF0YSgpKTsKIAogICBjcmlja2V0OjpEYXRhQ29kZWMgY29kZWM7CkBAIC0zMzQsNyArMzM0LDcg
QEAgVEVTVF9GKFJ0cERhdGFNZWRpYUNoYW5uZWxUZXN0LCBSZWNlaXZlRGF0YSkgewogICBBU1NF
UlRfVFJVRShkbWMtPlNldFJlY3ZQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpKTsKIAogICAvLyBVbmtu
b3duIHN0cmVhbQotICBkbWMtPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcnRjOjpQYWNrZXRU
aW1lKCkpOworICBkbWMtPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVf
dXMgKi8gLTEpOwogICBFWFBFQ1RfRkFMU0UoSGFzUmVjZWl2ZWREYXRhKCkpOwogCiAgIGNyaWNr
ZXQ6OlN0cmVhbVBhcmFtcyBzdHJlYW07CkBAIC0zNDIsNyArMzQyLDcgQEAgVEVTVF9GKFJ0cERh
dGFNZWRpYUNoYW5uZWxUZXN0LCBSZWNlaXZlRGF0YSkgewogICBBU1NFUlRfVFJVRShkbWMtPkFk
ZFJlY3ZTdHJlYW0oc3RyZWFtKSk7CiAKICAgLy8gRmluYWxseSB3b3JrcyEKLSAgZG1jLT5PblBh
Y2tldFJlY2VpdmVkKCZwYWNrZXQsIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgZG1jLT5PblBhY2tl
dFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgRVhQRUNUX1RS
VUUoSGFzUmVjZWl2ZWREYXRhKCkpOwogICBFWFBFQ1RfRVEoImFiY2RlIiwgR2V0UmVjZWl2ZWRE
YXRhKCkpOwogICBFWFBFQ1RfRVEoNVUsIEdldFJlY2VpdmVkRGF0YUxlbigpKTsKQEAgLTM1NSw2
ICszNTUsNiBAQCBURVNUX0YoUnRwRGF0YU1lZGlhQ2hhbm5lbFRlc3QsIEludmFsaWRSdHBQYWNr
ZXRzKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpSdHBEYXRhTWVkaWFDaGFubmVsPiBk
bWMoQ3JlYXRlQ2hhbm5lbCgpKTsKIAogICAvLyBUb28gc2hvcnQKLSAgZG1jLT5PblBhY2tldFJl
Y2VpdmVkKCZwYWNrZXQsIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgZG1jLT5PblBhY2tldFJlY2Vp
dmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgRVhQRUNUX0ZBTFNFKEhh
c1JlY2VpdmVkRGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwdXRpbHMuaAppbmRleCAw
ZmQ5YTU5ODE2YjZlN2U0YzFhOGFiM2MyNGU5NTRkYjAxMGQ2YjI4Li5jNWZlMTRmYjNkMzgxNzg4
OTM3ZDE1YWIwMDI3ZDFiMjU2Yzg1NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3J0cHV0aWxzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHB1dGlscy5o
CkBAIC0xMiw2ICsxMiw3IEBACiAjZGVmaW5lIE1FRElBX0JBU0VfUlRQVVRJTFNfSF8KIAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2J5dGVvcmRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9y
dGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSBydGMgewogc3RydWN0IFBhY2tldFRpbWVVcGRhdGVQ
YXJhbXM7CkBAIC02OCw5ICs2OSw5IEBAIGJvb2wgSXNWYWxpZFJ0cFJ0Y3BQYWNrZXRTaXplKGJv
b2wgcnRjcCwgc2l6ZV90IHNpemUpOwogY29uc3QgY2hhciogUnRwUnRjcFN0cmluZ0xpdGVyYWwo
Ym9vbCBydGNwKTsKIAogLy8gVmVyaWZpZXMgdGhhdCBhIHBhY2tldCBoYXMgYSB2YWxpZCBSVFAg
aGVhZGVyLgotYm9vbCBWYWxpZGF0ZVJ0cEhlYWRlcihjb25zdCB1aW50OF90KiBydHAsCi0gICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCogaGVhZGVyX2xlbmd0aCk7Citib29sIFJUQ19FWFBPUlQgVmFsaWRhdGVSdHBIZWFk
ZXIoY29uc3QgdWludDhfdCogcnRwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
KiBoZWFkZXJfbGVuZ3RoKTsKIAogLy8gSGVscGVyIG1ldGhvZCB3aGljaCB1cGRhdGVzIHRoZSBh
YnNvbHV0ZSBzZW5kIHRpbWUgZXh0ZW5zaW9uIGlmIHByZXNlbnQuCiBib29sIFVwZGF0ZVJ0cEFi
c1NlbmRUaW1lRXh0ZW5zaW9uKHVpbnQ4X3QqIHJ0cCwKQEAgLTgwLDEwICs4MSwxMSBAQCBib29s
IFVwZGF0ZVJ0cEFic1NlbmRUaW1lRXh0ZW5zaW9uKHVpbnQ4X3QqIHJ0cCwKIAogLy8gQXBwbGll
cyBzcGVjaWZpZWQgfG9wdGlvbnN8IHRvIHRoZSBwYWNrZXQuIEl0IHVwZGF0ZXMgdGhlIGFic29s
dXRlIHNlbmQgdGltZQogLy8gZXh0ZW5zaW9uIGhlYWRlciBpZiBpdCBpcyBwcmVzZW50IHByZXNl
bnQgdGhlbiB1cGRhdGVzIEhNQUMuCi1ib29sIEFwcGx5UGFja2V0T3B0aW9ucyh1aW50OF90KiBk
YXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZVVwZGF0ZVBhcmFtcyYgcGFja2V0X3Rp
bWVfcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdGltZV91cyk7Citi
b29sIFJUQ19FWFBPUlQKK0FwcGx5UGFja2V0T3B0aW9ucyh1aW50OF90KiBkYXRhLAorICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpQYWNrZXRUaW1lVXBkYXRlUGFyYW1zJiBwYWNrZXRfdGltZV9wYXJhbXMsCisgICAgICAgICAg
ICAgICAgICAgdWludDY0X3QgdGltZV91cyk7CiAKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2Jhc2UvdGVzdHV0aWxzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvYmFzZS90ZXN0dXRpbHMuY2MKaW5kZXggOTNjMmJjOThhZWYzMmI4NzA3
NzJiMzUxNTBiMjg0OWVmNjkwNjdmNS4uNTEyZGM5MWY5M2MzMWIzM2ZlYTNjNDU0ZTgyN2ZjMjFl
OTljMjRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS90ZXN0dXRpbHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS90ZXN0dXRpbHMuY2MKQEAgLTEwLDkwICsx
MCwxNCBAQAogCiAjaW5jbHVkZSAibWVkaWEvYmFzZS90ZXN0dXRpbHMuaCIKIAotI2luY2x1ZGUg
PG1hdGguaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5j
bHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS92aWRl
b2NhcHR1cmVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvYnl0ZWJ1ZmZlci5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2d1bml0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyZWFtLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90ZXN0dXRpbHMu
aCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewogCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBJbXBsZW1l
bnRhdGlvbiBvZiBSYXdSdHBQYWNrZXQKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLXZvaWQgUmF3UnRwUGFj
a2V0OjpXcml0ZVRvQnl0ZUJ1ZmZlcih1aW50MzJfdCBpbl9zc3JjLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7
Ci0gIGlmICghYnVmKQotICAgIHJldHVybjsKLQotICBidWYtPldyaXRlVUludDgodmVyX3RvX2Nj
KTsKLSAgYnVmLT5Xcml0ZVVJbnQ4KG1fdG9fcHQpOwotICBidWYtPldyaXRlVUludDE2KHNlcXVl
bmNlX251bWJlcik7Ci0gIGJ1Zi0+V3JpdGVVSW50MzIodGltZXN0YW1wKTsKLSAgYnVmLT5Xcml0
ZVVJbnQzMihpbl9zc3JjKTsKLSAgYnVmLT5Xcml0ZUJ5dGVzKHBheWxvYWQsIHNpemVvZihwYXls
b2FkKSk7Ci19Ci0KLWJvb2wgUmF3UnRwUGFja2V0OjpSZWFkRnJvbUJ5dGVCdWZmZXIocnRjOjpC
eXRlQnVmZmVyUmVhZGVyKiBidWYpIHsKLSAgaWYgKCFidWYpCi0gICAgcmV0dXJuIGZhbHNlOwot
Ci0gIGJvb2wgcmV0ID0gdHJ1ZTsKLSAgcmV0ICY9IGJ1Zi0+UmVhZFVJbnQ4KCZ2ZXJfdG9fY2Mp
OwotICByZXQgJj0gYnVmLT5SZWFkVUludDgoJm1fdG9fcHQpOwotICByZXQgJj0gYnVmLT5SZWFk
VUludDE2KCZzZXF1ZW5jZV9udW1iZXIpOwotICByZXQgJj0gYnVmLT5SZWFkVUludDMyKCZ0aW1l
c3RhbXApOwotICByZXQgJj0gYnVmLT5SZWFkVUludDMyKCZzc3JjKTsKLSAgcmV0ICY9IGJ1Zi0+
UmVhZEJ5dGVzKHBheWxvYWQsIHNpemVvZihwYXlsb2FkKSk7Ci0gIHJldHVybiByZXQ7Ci19Ci0K
LWJvb2wgUmF3UnRwUGFja2V0OjpTYW1lRXhjZXB0U2VxTnVtVGltZXN0YW1wU3NyYyhjb25zdCBS
YXdSdHBQYWNrZXQmIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MTZfdCBzZXEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NjKSBjb25zdCB7Ci0gIHJldHVy
biBzZXF1ZW5jZV9udW1iZXIgPT0gc2VxICYmIHRpbWVzdGFtcCA9PSB0cyAmJgotICAgICAgICAg
dmVyX3RvX2NjID09IHBhY2tldC52ZXJfdG9fY2MgJiYgbV90b19wdCA9PSBwYWNrZXQubV90b19w
dCAmJgotICAgICAgICAgc3NyYyA9PSBzc2MgJiYgMCA9PSBtZW1jbXAocGF5bG9hZCwgcGFja2V0
LnBheWxvYWQsIHNpemVvZihwYXlsb2FkKSk7Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIElt
cGxlbWVudGF0aW9uIG9mIFJhd1J0Y3BQYWNrZXQKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLXZvaWQgUmF3
UnRjcFBhY2tldDo6V3JpdGVUb0J5dGVCdWZmZXIocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYp
IGNvbnN0IHsKLSAgaWYgKCFidWYpCi0gICAgcmV0dXJuOwotCi0gIGJ1Zi0+V3JpdGVVSW50OCh2
ZXJfdG9fY291bnQpOwotICBidWYtPldyaXRlVUludDgodHlwZSk7Ci0gIGJ1Zi0+V3JpdGVVSW50
MTYobGVuZ3RoKTsKLSAgYnVmLT5Xcml0ZUJ5dGVzKHBheWxvYWQsIHNpemVvZihwYXlsb2FkKSk7
Ci19Ci0KLWJvb2wgUmF3UnRjcFBhY2tldDo6UmVhZEZyb21CeXRlQnVmZmVyKHJ0Yzo6Qnl0ZUJ1
ZmZlclJlYWRlciogYnVmKSB7Ci0gIGlmICghYnVmKQotICAgIHJldHVybiBmYWxzZTsKLQotICBi
b29sIHJldCA9IHRydWU7Ci0gIHJldCAmPSBidWYtPlJlYWRVSW50OCgmdmVyX3RvX2NvdW50KTsK
LSAgcmV0ICY9IGJ1Zi0+UmVhZFVJbnQ4KCZ0eXBlKTsKLSAgcmV0ICY9IGJ1Zi0+UmVhZFVJbnQx
NigmbGVuZ3RoKTsKLSAgcmV0ICY9IGJ1Zi0+UmVhZEJ5dGVzKHBheWxvYWQsIHNpemVvZihwYXls
b2FkKSk7Ci0gIHJldHVybiByZXQ7Ci19Ci0KLWJvb2wgUmF3UnRjcFBhY2tldDo6RXF1YWxzVG8o
Y29uc3QgUmF3UnRjcFBhY2tldCYgcGFja2V0KSBjb25zdCB7Ci0gIHJldHVybiB2ZXJfdG9fY291
bnQgPT0gcGFja2V0LnZlcl90b19jb3VudCAmJiB0eXBlID09IHBhY2tldC50eXBlICYmCi0gICAg
ICAgICBsZW5ndGggPT0gcGFja2V0Lmxlbmd0aCAmJgotICAgICAgICAgMCA9PSBtZW1jbXAocGF5
bG9hZCwgcGFja2V0LnBheWxvYWQsIHNpemVvZihwYXlsb2FkKSk7Ci19Ci0KIC8vIEltcGxlbWVu
dGF0aW9uIG9mIFZpZGVvQ2FwdHVyZUxpc3RlbmVyLgogVmlkZW9DYXB0dXJlckxpc3RlbmVyOjpW
aWRlb0NhcHR1cmVyTGlzdGVuZXIoVmlkZW9DYXB0dXJlciogY2FwdHVyZXIpCiAgICAgOiBjYXB0
dXJlcl8oY2FwdHVyZXIpLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS90ZXN0dXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdGVzdHV0aWxzLmgKaW5kZXggYzg0
Njk2MjM2YjRhNDAyZmM0YzQ2ZTM0MWRhMjk4MzYxMzZkMzUzNi4uNmI2M2ZmZDE4MDAwMzY0NmNh
YTU0YWY3NTU3NTRiNzg1NmI1ZTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS90ZXN0dXRpbHMuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3Rlc3R1dGlscy5o
CkBAIC0yMCwxMiArMjAsNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgogCi1uYW1lc3Bh
Y2UgcnRjIHsKLWNsYXNzIEJ5dGVCdWZmZXJSZWFkZXI7Ci1jbGFzcyBCeXRlQnVmZmVyV3JpdGVy
OwotY2xhc3MgU3RyZWFtSW50ZXJmYWNlOwotfSAgLy8gbmFtZXNwYWNlIHJ0YwotCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIGNsYXNzIFZpZGVvRnJhbWU7CiB9CkBAIC00Myw0MCArMzcsNiBAQCBpbmxp
bmUgc3RkOjp2ZWN0b3I8VD4gTWFrZVZlY3Rvcihjb25zdCBUIGFbXSwgc2l6ZV90IHMpIHsKIH0K
ICNkZWZpbmUgTUFLRV9WRUNUT1IoYSkgY3JpY2tldDo6TWFrZVZlY3RvcihhLCBhcnJheXNpemUo
YSkpCiAKLXN0cnVjdCBSdHBEdW1wUGFja2V0OwotY2xhc3MgUnRwRHVtcFdyaXRlcjsKLQotc3Ry
dWN0IFJhd1J0cFBhY2tldCB7Ci0gIHZvaWQgV3JpdGVUb0J5dGVCdWZmZXIodWludDMyX3QgaW5f
c3NyYywgcnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0OwotICBib29sIFJlYWRGcm9t
Qnl0ZUJ1ZmZlcihydGM6OkJ5dGVCdWZmZXJSZWFkZXIqIGJ1Zik7Ci0gIC8vIENoZWNrIGlmIHRo
aXMgcGFja2V0IGlzIHRoZSBzYW1lIGFzIHRoZSBzcGVjaWZpZWQgcGFja2V0IGV4Y2VwdCB0aGUK
LSAgLy8gc2VxdWVuY2UgbnVtYmVyIGFuZCB0aW1lc3RhbXAsIHdoaWNoIHNob3VsZCBiZSB0aGUg
c2FtZSBhcyB0aGUgc3BlY2lmaWVkCi0gIC8vIHBhcmFtZXRlcnMuCi0gIGJvb2wgU2FtZUV4Y2Vw
dFNlcU51bVRpbWVzdGFtcFNzcmMoY29uc3QgUmF3UnRwUGFja2V0JiBwYWNrZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3Qgc2VxLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNzYykgY29uc3Q7Ci0gIGludCBzaXplKCkgY29u
c3QgeyByZXR1cm4gMjg7IH0KLQotICB1aW50OF90IHZlcl90b19jYzsKLSAgdWludDhfdCBtX3Rv
X3B0OwotICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXI7Ci0gIHVpbnQzMl90IHRpbWVzdGFtcDsK
LSAgdWludDMyX3Qgc3NyYzsKLSAgY2hhciBwYXlsb2FkWzE2XTsKLX07Ci0KLXN0cnVjdCBSYXdS
dGNwUGFja2V0IHsKLSAgdm9pZCBXcml0ZVRvQnl0ZUJ1ZmZlcihydGM6OkJ5dGVCdWZmZXJXcml0
ZXIqIGJ1ZikgY29uc3Q7Ci0gIGJvb2wgUmVhZEZyb21CeXRlQnVmZmVyKHJ0Yzo6Qnl0ZUJ1ZmZl
clJlYWRlciogYnVmKTsKLSAgYm9vbCBFcXVhbHNUbyhjb25zdCBSYXdSdGNwUGFja2V0JiBwYWNr
ZXQpIGNvbnN0OwotCi0gIHVpbnQ4X3QgdmVyX3RvX2NvdW50OwotICB1aW50OF90IHR5cGU7Ci0g
IHVpbnQxNl90IGxlbmd0aDsKLSAgY2hhciBwYXlsb2FkWzE2XTsKLX07Ci0KIC8vIFRlc3QgaGVs
cGVyIGZvciB0ZXN0aW5nIFZpZGVvQ2FwdHVyZXIgaW1wbGVtZW50YXRpb25zLgogY2xhc3MgVmlk
ZW9DYXB0dXJlckxpc3RlbmVyCiAgICAgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL3R1cm51dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS90dXJudXRpbHMuaAppbmRleCAxM2VkMjZiN2E1ZmY3Y2MyNzU2OWMy
NjZhOGRkNjQ1MjJjZmZiNjIzLi43YWEwNjUxY2VhM2VhNTU5ZjRiZWIxM2I1M2I0MjJkMTU3ZjRl
YTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9iYXNlL3R1cm51dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdHVybnV0aWxzLmgKQEAgLTE0LDE2ICsxNCwxOCBA
QAogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8Y3N0ZGludD4KIAorI2luY2x1ZGUgInJ0
Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCisKIG5hbWVzcGFjZSBjcmlja2V0IHsKIAogc3Ry
dWN0IFBhY2tldE9wdGlvbnM7CiAKIC8vIEZpbmRzIGRhdGEgbG9jYXRpb24gd2l0aGluIGEgVFVS
TiBDaGFubmVsIE1lc3NhZ2Ugb3IgVFVSTiBTZW5kIEluZGljYXRpb24KIC8vIG1lc3NhZ2UuCi1i
b29sIFVud3JhcFR1cm5QYWNrZXQoY29uc3QgdWludDhfdCogcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBwYWNrZXRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QqIGNvbnRlbnRfcG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBjb250
ZW50X3NpemUpOworYm9vbCBSVENfRVhQT1JUIFVud3JhcFR1cm5QYWNrZXQoY29uc3QgdWludDhf
dCogcGFja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhY2tl
dF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBjb250ZW50
X3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBjb250
ZW50X3NpemUpOwogCiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tldAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvYWRh
cHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2Jhc2UvdmlkZW9hZGFwdGVyLmNjCmluZGV4IDg0MDEwMWJjZWUzNDAzZDY0YmI4ZjkxZjc1YzRk
NTFlYmQwNGI3MmQuLmIyZWQzMzM2MTQ5MzA4ODc2NjNiNTc0ZjNmZTU4YzA1Y2I2MjEwOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2Jhc2UvdmlkZW9hZGFwdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9hZGFwdGVyLmNjCkBAIC0xNjksOCArMTY5LDE4
IEBAIGJvb2wgVmlkZW9BZGFwdGVyOjpBZGFwdEZyYW1lUmVzb2x1dGlvbihpbnQgaW5fd2lkdGgs
CiAgIC8vIE9uT3V0cHV0Rm9ybWF0UmVxdWVzdCBhbmQgT25SZXNvbHV0aW9uRnJhbWVyYXRlUmVx
dWVzdC4KICAgaW50IG1heF9waXhlbF9jb3VudCA9IHJlc29sdXRpb25fcmVxdWVzdF9tYXhfcGl4
ZWxfY291bnRfOwogCi0gIGlmIChtYXhfcGl4ZWxfY291bnRfKQotICAgIG1heF9waXhlbF9jb3Vu
dCA9IHN0ZDo6bWluKG1heF9waXhlbF9jb3VudCwgKm1heF9waXhlbF9jb3VudF8pOworICAvLyBT
ZWxlY3QgdGFyZ2V0IGFzcGVjdCByYXRpbyBhbmQgbWF4IHBpeGVsIGNvdW50IGRlcGVuZGluZyBv
biBpbnB1dCBmcmFtZQorICAvLyBvcmllbnRhdGlvbi4KKyAgYWJzbDo6b3B0aW9uYWw8c3RkOjpw
YWlyPGludCwgaW50Pj4gdGFyZ2V0X2FzcGVjdF9yYXRpbzsKKyAgaWYgKGluX3dpZHRoID4gaW5f
aGVpZ2h0KSB7CisgICAgdGFyZ2V0X2FzcGVjdF9yYXRpbyA9IHRhcmdldF9sYW5kc2NhcGVfYXNw
ZWN0X3JhdGlvXzsKKyAgICBpZiAobWF4X2xhbmRzY2FwZV9waXhlbF9jb3VudF8pCisgICAgICBt
YXhfcGl4ZWxfY291bnQgPSBzdGQ6Om1pbihtYXhfcGl4ZWxfY291bnQsICptYXhfbGFuZHNjYXBl
X3BpeGVsX2NvdW50Xyk7CisgIH0gZWxzZSB7CisgICAgdGFyZ2V0X2FzcGVjdF9yYXRpbyA9IHRh
cmdldF9wb3J0cmFpdF9hc3BlY3RfcmF0aW9fOworICAgIGlmIChtYXhfcG9ydHJhaXRfcGl4ZWxf
Y291bnRfKQorICAgICAgbWF4X3BpeGVsX2NvdW50ID0gc3RkOjptaW4obWF4X3BpeGVsX2NvdW50
LCAqbWF4X3BvcnRyYWl0X3BpeGVsX2NvdW50Xyk7CisgIH0KIAogICBpbnQgdGFyZ2V0X3BpeGVs
X2NvdW50ID0KICAgICAgIHN0ZDo6bWluKHJlc29sdXRpb25fcmVxdWVzdF90YXJnZXRfcGl4ZWxf
Y291bnRfLCBtYXhfcGl4ZWxfY291bnQpOwpAQCAtMTk1LDE5ICsyMDUsMTQgQEAgYm9vbCBWaWRl
b0FkYXB0ZXI6OkFkYXB0RnJhbWVSZXNvbHV0aW9uKGludCBpbl93aWR0aCwKICAgfQogCiAgIC8v
IENhbGN1bGF0ZSBob3cgdGhlIGlucHV0IHNob3VsZCBiZSBjcm9wcGVkLgotICBpZiAoIXRhcmdl
dF9hc3BlY3RfcmF0aW9fIHx8IHRhcmdldF9hc3BlY3RfcmF0aW9fLT5maXJzdCA8PSAwIHx8Ci0g
ICAgICB0YXJnZXRfYXNwZWN0X3JhdGlvXy0+c2Vjb25kIDw9IDApIHsKKyAgaWYgKCF0YXJnZXRf
YXNwZWN0X3JhdGlvIHx8IHRhcmdldF9hc3BlY3RfcmF0aW8tPmZpcnN0IDw9IDAgfHwKKyAgICAg
IHRhcmdldF9hc3BlY3RfcmF0aW8tPnNlY29uZCA8PSAwKSB7CiAgICAgKmNyb3BwZWRfd2lkdGgg
PSBpbl93aWR0aDsKICAgICAqY3JvcHBlZF9oZWlnaHQgPSBpbl9oZWlnaHQ7CiAgIH0gZWxzZSB7
Ci0gICAgLy8gQWRqdXN0IHx0YXJnZXRfYXNwZWN0X3JhdGlvX3wgb3JpZW50YXRpb24gdG8gbWF0
Y2ggaW5wdXQuCi0gICAgaWYgKChpbl93aWR0aCA+IGluX2hlaWdodCkgIT0KLSAgICAgICAgKHRh
cmdldF9hc3BlY3RfcmF0aW9fLT5maXJzdCA+IHRhcmdldF9hc3BlY3RfcmF0aW9fLT5zZWNvbmQp
KSB7Ci0gICAgICBzdGQ6OnN3YXAodGFyZ2V0X2FzcGVjdF9yYXRpb18tPmZpcnN0LCB0YXJnZXRf
YXNwZWN0X3JhdGlvXy0+c2Vjb25kKTsKLSAgICB9CiAgICAgY29uc3QgZmxvYXQgcmVxdWVzdGVk
X2FzcGVjdCA9Ci0gICAgICAgIHRhcmdldF9hc3BlY3RfcmF0aW9fLT5maXJzdCAvCi0gICAgICAg
IHN0YXRpY19jYXN0PGZsb2F0Pih0YXJnZXRfYXNwZWN0X3JhdGlvXy0+c2Vjb25kKTsKKyAgICAg
ICAgdGFyZ2V0X2FzcGVjdF9yYXRpby0+Zmlyc3QgLworICAgICAgICBzdGF0aWNfY2FzdDxmbG9h
dD4odGFyZ2V0X2FzcGVjdF9yYXRpby0+c2Vjb25kKTsKICAgICAqY3JvcHBlZF93aWR0aCA9CiAg
ICAgICAgIHN0ZDo6bWluKGluX3dpZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KGluX2hlaWdodCAqIHJl
cXVlc3RlZF9hc3BlY3QpKTsKICAgICAqY3JvcHBlZF9oZWlnaHQgPQpAQCAtMjc0LDkgKzI3OSwz
MyBAQCB2b2lkIFZpZGVvQWRhcHRlcjo6T25PdXRwdXRGb3JtYXRSZXF1ZXN0KAogICAgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQsIGludD4+JiB0YXJnZXRfYXNwZWN0X3JhdGlv
LAogICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9waXhlbF9jb3VudCwKICAgICBj
b25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBtYXhfZnBzKSB7CisgIGFic2w6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxpbnQsIGludD4+IHRhcmdldF9sYW5kc2NhcGVfYXNwZWN0X3JhdGlvOworICBhYnNs
OjpvcHRpb25hbDxzdGQ6OnBhaXI8aW50LCBpbnQ+PiB0YXJnZXRfcG9ydHJhaXRfYXNwZWN0X3Jh
dGlvOworICBpZiAodGFyZ2V0X2FzcGVjdF9yYXRpbyAmJiB0YXJnZXRfYXNwZWN0X3JhdGlvLT5m
aXJzdCA+IDAgJiYKKyAgICAgIHRhcmdldF9hc3BlY3RfcmF0aW8tPnNlY29uZCA+IDApIHsKKyAg
ICAvLyBNYWludGFpbiBpbnB1dCBvcmllbnRhdGlvbi4KKyAgICBjb25zdCBpbnQgbWF4X3NpZGUg
PQorICAgICAgICBzdGQ6Om1heCh0YXJnZXRfYXNwZWN0X3JhdGlvLT5maXJzdCwgdGFyZ2V0X2Fz
cGVjdF9yYXRpby0+c2Vjb25kKTsKKyAgICBjb25zdCBpbnQgbWluX3NpZGUgPQorICAgICAgICBz
dGQ6Om1pbih0YXJnZXRfYXNwZWN0X3JhdGlvLT5maXJzdCwgdGFyZ2V0X2FzcGVjdF9yYXRpby0+
c2Vjb25kKTsKKyAgICB0YXJnZXRfbGFuZHNjYXBlX2FzcGVjdF9yYXRpbyA9IHN0ZDo6bWFrZV9w
YWlyKG1heF9zaWRlLCBtaW5fc2lkZSk7CisgICAgdGFyZ2V0X3BvcnRyYWl0X2FzcGVjdF9yYXRp
byA9IHN0ZDo6bWFrZV9wYWlyKG1pbl9zaWRlLCBtYXhfc2lkZSk7CisgIH0KKyAgT25PdXRwdXRG
b3JtYXRSZXF1ZXN0KHRhcmdldF9sYW5kc2NhcGVfYXNwZWN0X3JhdGlvLCBtYXhfcGl4ZWxfY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcG9ydHJhaXRfYXNwZWN0X3JhdGlv
LCBtYXhfcGl4ZWxfY291bnQsIG1heF9mcHMpOworfQorCit2b2lkIFZpZGVvQWRhcHRlcjo6T25P
dXRwdXRGb3JtYXRSZXF1ZXN0KAorICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxp
bnQsIGludD4+JiB0YXJnZXRfbGFuZHNjYXBlX2FzcGVjdF9yYXRpbywKKyAgICBjb25zdCBhYnNs
OjpvcHRpb25hbDxpbnQ+JiBtYXhfbGFuZHNjYXBlX3BpeGVsX2NvdW50LAorICAgIGNvbnN0IGFi
c2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQsIGludD4+JiB0YXJnZXRfcG9ydHJhaXRfYXNwZWN0
X3JhdGlvLAorICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9wb3J0cmFpdF9waXhl
bF9jb3VudCwKKyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBtYXhfZnBzKSB7CiAgIHJ0
Yzo6Q3JpdFNjb3BlIGNzKCZjcml0aWNhbF9zZWN0aW9uXyk7Ci0gIHRhcmdldF9hc3BlY3RfcmF0
aW9fID0gdGFyZ2V0X2FzcGVjdF9yYXRpbzsKLSAgbWF4X3BpeGVsX2NvdW50XyA9IG1heF9waXhl
bF9jb3VudDsKKyAgdGFyZ2V0X2xhbmRzY2FwZV9hc3BlY3RfcmF0aW9fID0gdGFyZ2V0X2xhbmRz
Y2FwZV9hc3BlY3RfcmF0aW87CisgIG1heF9sYW5kc2NhcGVfcGl4ZWxfY291bnRfID0gbWF4X2xh
bmRzY2FwZV9waXhlbF9jb3VudDsKKyAgdGFyZ2V0X3BvcnRyYWl0X2FzcGVjdF9yYXRpb18gPSB0
YXJnZXRfcG9ydHJhaXRfYXNwZWN0X3JhdGlvOworICBtYXhfcG9ydHJhaXRfcGl4ZWxfY291bnRf
ID0gbWF4X3BvcnRyYWl0X3BpeGVsX2NvdW50OwogICBtYXhfZnBzXyA9IG1heF9mcHM7CiAgIG5l
eHRfZnJhbWVfdGltZXN0YW1wX25zXyA9IGFic2w6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVv
YWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS92aWRlb2FkYXB0ZXIuaAppbmRleCBiYjlhYjgwMjZmMDg4YWNkOTQzMjk0OTFjYTI1
ZDRhNjJlYTk0NmZhLi4xODY0ZDVjYzBjN2JmMzU4ZDk1YmJkYTNjNWZiZTIwNTQwNzgwOWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL3ZpZGVvYWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9hZGFwdGVyLmgKQEAgLTY4LDYgKzY4LDE3IEBA
IGNsYXNzIFZpZGVvQWRhcHRlciB7CiAgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBt
YXhfcGl4ZWxfY291bnQsCiAgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBtYXhfZnBz
KTsKIAorICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgYWxsb3dzIHNldHRpbmcgdHdvIGRpZmZlcmVu
dCB0YXJnZXQgYXNwZWN0IHJhdGlvcworICAvLyBkZXBlbmRpbmcgb24gaW5jb21pbmcgZnJhbWUg
b3JpZW50YXRpb24uIFRoaXMgZ2l2ZXMgbW9yZSBmaW5lLWdyYWluZWQKKyAgLy8gY29udHJvbCBh
bmQgY2FuIGUuZy4gYmUgdXNlZCB0byBmb3JjZSBsYW5kc2NhcGUgdmlkZW8gdG8gYmUgY3JvcHBl
ZCB0bworICAvLyBwb3J0cmFpdCB2aWRlby4KKyAgdm9pZCBPbk91dHB1dEZvcm1hdFJlcXVlc3Qo
CisgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxzdGQ6OnBhaXI8aW50LCBpbnQ+PiYgdGFyZ2V0
X2xhbmRzY2FwZV9hc3BlY3RfcmF0aW8sCisgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+
JiBtYXhfbGFuZHNjYXBlX3BpeGVsX2NvdW50LAorICAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8
c3RkOjpwYWlyPGludCwgaW50Pj4mIHRhcmdldF9wb3J0cmFpdF9hc3BlY3RfcmF0aW8sCisgICAg
ICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBtYXhfcG9ydHJhaXRfcGl4ZWxfY291bnQsCisg
ICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBtYXhfZnBzKTsKKwogICAvLyBSZXF1ZXN0
cyB0aGUgb3V0cHV0IGZyYW1lIHNpemUgZnJvbSB8QWRhcHRGcmFtZVJlc29sdXRpb258IHRvIGhh
dmUgYXMgY2xvc2UKICAgLy8gYXMgcG9zc2libGUgdG8gfHRhcmdldF9waXhlbF9jb3VudHwgcGl4
ZWxzIChpZiBzZXQpIGJ1dCBubyBtb3JlIHRoYW4KICAgLy8gfG1heF9waXhlbF9jb3VudHwuCkBA
IC0xMDAsOSArMTExLDE0IEBAIGNsYXNzIFZpZGVvQWRhcHRlciB7CiAgIC8vIE1heCBudW1iZXIg
b2YgcGl4ZWxzL2ZwcyByZXF1ZXN0ZWQgdmlhIGNhbGxzIHRvIE9uT3V0cHV0Rm9ybWF0UmVxdWVz
dCwKICAgLy8gT25SZXNvbHV0aW9uRnJhbWVyYXRlUmVxdWVzdCByZXNwZWN0aXZlbHkuCiAgIC8v
IFRoZSBhZGFwdGVkIG91dHB1dCBmb3JtYXQgaXMgdGhlIG1pbmltdW0gb2YgdGhlc2UuCi0gIGFi
c2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQsIGludD4+IHRhcmdldF9hc3BlY3RfcmF0aW9fCisg
IGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQsIGludD4+IHRhcmdldF9sYW5kc2NhcGVfYXNw
ZWN0X3JhdGlvXworICAgICAgUlRDX0dVQVJERURfQlkoY3JpdGljYWxfc2VjdGlvbl8pOworICBh
YnNsOjpvcHRpb25hbDxpbnQ+IG1heF9sYW5kc2NhcGVfcGl4ZWxfY291bnRfCisgICAgICBSVENf
R1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9uXyk7CisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFp
cjxpbnQsIGludD4+IHRhcmdldF9wb3J0cmFpdF9hc3BlY3RfcmF0aW9fCisgICAgICBSVENfR1VB
UkRFRF9CWShjcml0aWNhbF9zZWN0aW9uXyk7CisgIGFic2w6Om9wdGlvbmFsPGludD4gbWF4X3Bv
cnRyYWl0X3BpeGVsX2NvdW50XwogICAgICAgUlRDX0dVQVJERURfQlkoY3JpdGljYWxfc2VjdGlv
bl8pOwotICBhYnNsOjpvcHRpb25hbDxpbnQ+IG1heF9waXhlbF9jb3VudF8gUlRDX0dVQVJERURf
QlkoY3JpdGljYWxfc2VjdGlvbl8pOwogICBhYnNsOjpvcHRpb25hbDxpbnQ+IG1heF9mcHNfIFJU
Q19HVUFSREVEX0JZKGNyaXRpY2FsX3NlY3Rpb25fKTsKICAgaW50IHJlc29sdXRpb25fcmVxdWVz
dF90YXJnZXRfcGl4ZWxfY291bnRfIFJUQ19HVUFSREVEX0JZKGNyaXRpY2FsX3NlY3Rpb25fKTsK
ICAgaW50IHJlc29sdXRpb25fcmVxdWVzdF9tYXhfcGl4ZWxfY291bnRfIFJUQ19HVUFSREVEX0JZ
KGNyaXRpY2FsX3NlY3Rpb25fKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9hZGFwdGVyX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRl
b2FkYXB0ZXJfdW5pdHRlc3QuY2MKaW5kZXggNjdhNjYyNjM5ZTU1MTRlNDQ0MzhkMmE1ZTAxNjg2
YTA5MWYwYmU1OC4uYzYwMGZjMmMwNzMwYzk5MTZjNGE0YTljMTdiMzgyNmE3YWU4OTIxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
YmFzZS92aWRlb2FkYXB0ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2FkYXB0ZXJfdW5pdHRlc3QuY2MK
QEAgLTE4LDcgKzE4LDYgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNs
dWRlICJtZWRpYS9iYXNlL2Zha2VmcmFtZXNvdXJjZS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2Uv
bWVkaWFjaGFubmVsLmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS90ZXN0dXRpbHMuaCIKICNpbmNs
dWRlICJtZWRpYS9iYXNlL3ZpZGVvYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgpAQCAtMTExMiw0ICsxMTExLDYxIEBA
IFRFU1RfUChWaWRlb0FkYXB0ZXJUZXN0LCBUZXN0QWRhcHRUb01heCkgewogICBFWFBFQ1RfRVEo
NjQwLCBvdXRfd2lkdGhfKTsKICAgRVhQRUNUX0VRKDM2MCwgb3V0X2hlaWdodF8pOwogfQorCisv
LyBUZXN0IGFkanVzdGluZyB0byAxNjo5IGluIGxhbmRzY2FwZSwgYW5kIDk6MTYgaW4gcG9ydHJh
aXQuCitURVNUKFZpZGVvQWRhcHRlclRlc3RNdWx0aXBsZU9yaWVudGF0aW9uLCBUZXN0Tm9ybWFs
KSB7CisgIFZpZGVvQWRhcHRlciB2aWRlb19hZGFwdGVyOworICB2aWRlb19hZGFwdGVyLk9uT3V0
cHV0Rm9ybWF0UmVxdWVzdChzdGQ6Om1ha2VfcGFpcig2NDAsIDM2MCksIDY0MCAqIDM2MCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIoMzYwLCA2
NDApLCAzNjAgKiA2NDAsIDMwKTsKKworICBpbnQgY3JvcHBlZF93aWR0aDsKKyAgaW50IGNyb3Bw
ZWRfaGVpZ2h0OworICBpbnQgb3V0X3dpZHRoOworICBpbnQgb3V0X2hlaWdodDsKKyAgRVhQRUNU
X1RSVUUodmlkZW9fYWRhcHRlci5BZGFwdEZyYW1lUmVzb2x1dGlvbigKKyAgICAgIC8qIGluX3dp
ZHRoPSAqLyA2NDAsIC8qIGluX2hlaWdodD0gKi8gNDgwLCAvKiBpbl90aW1lc3RhbXBfbnM9ICov
IDAsCisgICAgICAmY3JvcHBlZF93aWR0aCwgJmNyb3BwZWRfaGVpZ2h0LCAmb3V0X3dpZHRoLCAm
b3V0X2hlaWdodCkpOworICBFWFBFQ1RfRVEoNjQwLCBjcm9wcGVkX3dpZHRoKTsKKyAgRVhQRUNU
X0VRKDM2MCwgY3JvcHBlZF9oZWlnaHQpOworICBFWFBFQ1RfRVEoNjQwLCBvdXRfd2lkdGgpOwor
ICBFWFBFQ1RfRVEoMzYwLCBvdXRfaGVpZ2h0KTsKKworICBFWFBFQ1RfVFJVRSh2aWRlb19hZGFw
dGVyLkFkYXB0RnJhbWVSZXNvbHV0aW9uKAorICAgICAgLyogaW5fd2lkdGg9ICovIDQ4MCwgLyog
aW5faGVpZ2h0PSAqLyA2NDAsCisgICAgICAvKiBpbl90aW1lc3RhbXBfbnM9ICovIHJ0Yzo6a051
bU5hbm9zZWNzUGVyU2VjIC8gMzAsICZjcm9wcGVkX3dpZHRoLAorICAgICAgJmNyb3BwZWRfaGVp
Z2h0LCAmb3V0X3dpZHRoLCAmb3V0X2hlaWdodCkpOworICBFWFBFQ1RfRVEoMzYwLCBjcm9wcGVk
X3dpZHRoKTsKKyAgRVhQRUNUX0VRKDY0MCwgY3JvcHBlZF9oZWlnaHQpOworICBFWFBFQ1RfRVEo
MzYwLCBvdXRfd2lkdGgpOworICBFWFBFQ1RfRVEoNjQwLCBvdXRfaGVpZ2h0KTsKK30KKworLy8g
Rm9yY2Ugb3V0cHV0IHRvIGJlIDk6MTYsIGV2ZW4gZm9yIGxhbmRzY2FwZSBpbnB1dC4KK1RFU1Qo
VmlkZW9BZGFwdGVyVGVzdE11bHRpcGxlT3JpZW50YXRpb24sIFRlc3RGb3JjZVBvcnRyYWl0KSB7
CisgIFZpZGVvQWRhcHRlciB2aWRlb19hZGFwdGVyOworICB2aWRlb19hZGFwdGVyLk9uT3V0cHV0
Rm9ybWF0UmVxdWVzdChzdGQ6Om1ha2VfcGFpcigzNjAsIDY0MCksIDY0MCAqIDM2MCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIoMzYwLCA2NDAp
LCAzNjAgKiA2NDAsIDMwKTsKKworICBpbnQgY3JvcHBlZF93aWR0aDsKKyAgaW50IGNyb3BwZWRf
aGVpZ2h0OworICBpbnQgb3V0X3dpZHRoOworICBpbnQgb3V0X2hlaWdodDsKKyAgRVhQRUNUX1RS
VUUodmlkZW9fYWRhcHRlci5BZGFwdEZyYW1lUmVzb2x1dGlvbigKKyAgICAgIC8qIGluX3dpZHRo
PSAqLyA2NDAsIC8qIGluX2hlaWdodD0gKi8gNDgwLCAvKiBpbl90aW1lc3RhbXBfbnM9ICovIDAs
CisgICAgICAmY3JvcHBlZF93aWR0aCwgJmNyb3BwZWRfaGVpZ2h0LCAmb3V0X3dpZHRoLCAmb3V0
X2hlaWdodCkpOworICBFWFBFQ1RfRVEoMjcwLCBjcm9wcGVkX3dpZHRoKTsKKyAgRVhQRUNUX0VR
KDQ4MCwgY3JvcHBlZF9oZWlnaHQpOworICBFWFBFQ1RfRVEoMjcwLCBvdXRfd2lkdGgpOworICBF
WFBFQ1RfRVEoNDgwLCBvdXRfaGVpZ2h0KTsKKworICBFWFBFQ1RfVFJVRSh2aWRlb19hZGFwdGVy
LkFkYXB0RnJhbWVSZXNvbHV0aW9uKAorICAgICAgLyogaW5fd2lkdGg9ICovIDQ4MCwgLyogaW5f
aGVpZ2h0PSAqLyA2NDAsCisgICAgICAvKiBpbl90aW1lc3RhbXBfbnM9ICovIHJ0Yzo6a051bU5h
bm9zZWNzUGVyU2VjIC8gMzAsICZjcm9wcGVkX3dpZHRoLAorICAgICAgJmNyb3BwZWRfaGVpZ2h0
LCAmb3V0X3dpZHRoLCAmb3V0X2hlaWdodCkpOworICBFWFBFQ1RfRVEoMzYwLCBjcm9wcGVkX3dp
ZHRoKTsKKyAgRVhQRUNUX0VRKDY0MCwgY3JvcHBlZF9oZWlnaHQpOworICBFWFBFQ1RfRVEoMzYw
LCBvdXRfd2lkdGgpOworICBFWFBFQ1RfRVEoNjQwLCBvdXRfaGVpZ2h0KTsKK30KKwogfSAgLy8g
bmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9jYXB0dXJlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyLmgK
aW5kZXggODI2ZTM4ZmE1YTFhY2JkYjE2MjhlNzc0NWExMGQ1MjA0OTg2ZmI1Mi4uMzI3NDIwNjJh
YTkyOGMwMjE3ODg1YzNkMGFhMzg2YmE5MThlMTc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFz
ZS92aWRlb2NhcHR1cmVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJtZWRpYS9iYXNl
L3ZpZGVvY29tbW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2ln
c2xvdC9zaWdzbG90LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKICNp
bmNsdWRlICJydGNfYmFzZS90aW1lc3RhbXBhbGlnbmVyLmgiCkBAIC03Miw4ICs3Myw5IEBAIGVu
dW0gQ2FwdHVyZVN0YXRlIHsKIC8vICAgbWVkaWEgZW5naW5lIHRocmVhZCkuIEhlbmNlLCB0aGUg
VmlkZW9DYXB0dXJlIHN1YmNsYXNzZXMgZG9udCBuZWVkIHRvIGJlCiAvLyAgIHRocmVhZCBzYWZl
LgogLy8KLWNsYXNzIFZpZGVvQ2FwdHVyZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4s
Ci0gICAgICAgICAgICAgICAgICAgICAgcHVibGljIHJ0Yzo6VmlkZW9Tb3VyY2VJbnRlcmZhY2U8
d2VicnRjOjpWaWRlb0ZyYW1lPiB7CitjbGFzcyBSVENfRVhQT1JUIFZpZGVvQ2FwdHVyZXIKKyAg
ICA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiwKKyAgICAgIHB1YmxpYyBydGM6OlZpZGVv
U291cmNlSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4gewogIHB1YmxpYzoKICAgVmlkZW9D
YXB0dXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY2FwdHVyZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY2FwdHVy
ZXJfdW5pdHRlc3QuY2MKaW5kZXggMDgwZjRhMDhjYWVhYjA0OGQ2ZmExZTNiZWI5ZGJkMDg0Njdk
OWYzZi4uMDczNDRjYTdhYzg1YWUyNDUxYjQ5N2ZhNDllNjc0MGU3NThiY2ZkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92
aWRlb2NhcHR1cmVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9jYXB0dXJlcl91bml0dGVzdC5jYwpAQCAt
MTUsNyArMTUsNiBAQAogCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtldmlkZW9jYXB0dXJlci5o
IgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZXZpZGVvcmVuZGVyZXIuaCIKLSNpbmNsdWRlICJt
ZWRpYS9iYXNlL3Rlc3R1dGlscy5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvdmlkZW9jYXB0dXJl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NvbW1vbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NvbW1vbi5oCmluZGV4IDBmZmQ5ODlj
YjY1MTVmMGU1ZTlkMjIwMDFiODdjYmY2NDVjYzc5OTguLjY0NDdjYmEzYjJiNjlhYzUzZjU4OWE3
N2NiYWM1NTAyNGIzZWE2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY29tbW9uLmgK
QEAgLTE3LDYgKzE3LDcgQEAKIAogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgInJ0Y19i
YXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgi
CiAKIG5hbWVzcGFjZSBjcmlja2V0IHsKQEAgLTE0OSw3ICsxNTAsNyBAQCBzdHJ1Y3QgVmlkZW9G
b3JtYXRQb2QgewogICB1aW50MzJfdCBmb3VyY2M7ICAvLyBDb2xvciBzcGFjZS4gRk9VUkNDX0FO
WSBtZWFucyB0aGF0IGFueSBjb2xvciBzcGFjZSBpcyBPSy4KIH07CiAKLXN0cnVjdCBWaWRlb0Zv
cm1hdCA6IFZpZGVvRm9ybWF0UG9kIHsKK3N0cnVjdCBSVENfRVhQT1JUIFZpZGVvRm9ybWF0IDog
VmlkZW9Gb3JtYXRQb2QgewogICBzdGF0aWMgY29uc3QgaW50NjRfdCBrTWluaW11bUludGVydmFs
ID0KICAgICAgIHJ0Yzo6a051bU5hbm9zZWNzUGVyU2VjIC8gMTAwMDA7ICAvLyAxMGsgZnBzLgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9iYXNlL3ZwOV9wcm9maWxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvYmFzZS92cDlfcHJvZmlsZS5jYwppbmRleCBhMjhhOTEyNzYyYTcy
OWU2Mjc5Njc0MGFlYjg0ODE1YzNiOTkxYzJhLi5jOWNjYWE5ZjlkN2RlYzFmMDU5MTkzNWRkZjk2
MGY5YzBmZDZjM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZwOV9wcm9maWxlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuY2MKQEAg
LTE1LDcgKzE1LDcgQEAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBQcm9maWxlIGluZm9ybWF0
aW9uIGZvciBWUDkgdmlkZW8uCi1jb25zdCBjaGFyIGtWUDlGbXRwUHJvZmlsZUlkW10gPSAieC1n
b29nbGUtcHJvZmlsZS1pZCI7Citjb25zdCBjaGFyIGtWUDlGbXRwUHJvZmlsZUlkW10gPSAicHJv
ZmlsZS1pZCI7CiAKIHN0ZDo6c3RyaW5nIFZQOVByb2ZpbGVUb1N0cmluZyhWUDlQcm9maWxlIHBy
b2ZpbGUpIHsKICAgc3dpdGNoIChwcm9maWxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZwOV9wcm9maWxlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZwOV9w
cm9maWxlLmgKaW5kZXggNWNjMWQxNjZhODc4OWIxODI5ZDdhYTJkOTE5NTFjYTVlZmUwODI1OC4u
NzU1YzQ2ZGEyY2JkYjk2M2I1YWVkY2NhZTRlOTU5NmY4NTY0ZjIwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92cDlfcHJv
ZmlsZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuaApAQCAtMTYsNyArMTYsNiBAQAogCiAjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVv
X2Zvcm1hdC5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2lu
Y2x1ZGUpCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvYWRtX2hlbHBlcnMuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9h
ZG1faGVscGVycy5oCmluZGV4IGM2ZWEzYTIwOWYyYzlhZjM2MzJiYzQ4YzM5Mzc2YWQ0Yzk1YWYy
ODAuLjJhMzVkMjZiNDcxNjE0MDUzM2U5NmE2YWY4YTdkZTM1ZGY3NjQ0MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9h
ZG1faGVscGVycy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS9hZG1faGVscGVycy5oCkBAIC0xMSw4ICsxMSw2IEBACiAjaWZuZGVm
IE1FRElBX0VOR0lORV9BRE1fSEVMUEVSU19IXwogI2RlZmluZSBNRURJQV9FTkdJTkVfQURNX0hF
TFBFUlNfSF8KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2lu
Y2x1ZGUpCi0KIG5hbWVzcGFjZSB3ZWJydGMgewogCiBjbGFzcyBBdWRpb0RldmljZU1vZHVsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS9hcG1faGVscGVyc191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9hcG1faGVscGVyc191bml0dGVzdC5j
YwppbmRleCA0NjRlMDUzZGMwYThkMTZiYjZlMWQyYmZmNjlhOTkzYjJkNGVmOTJjLi43MGFjMGMx
YzIxZThhNTM1YmNkYjZhMDMwOTlkODNjZDM1NjM5YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvYXBtX2hlbHBlcnNf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL2FwbV9oZWxwZXJzX3VuaXR0ZXN0LmNjCkBAIC0xNjQsMTEgKzE2NCw0
IEBAIFRFU1QoQXBtSGVscGVyc1Rlc3QsIFR5cGluZ0RldGVjdGlvblN0YXR1c19FbmFibGVEaXNh
YmxlKSB7CiAgIEVYUEVDVF9FUShWb2ljZURldGVjdGlvbjo6a1ZlcnlMb3dMaWtlbGlob29kLCB2
ZC0+bGlrZWxpaG9vZCgpKTsKICAgRVhQRUNUX0ZBTFNFKHZkLT5pc19lbmFibGVkKCkpOwogfQot
Ci0vLyBUT0RPKHNvbGVuYmVyZyk6IE1vdmUgdGhpcyB0ZXN0IHRvIGEgYmV0dGVyIHBsYWNlIC0g
YWRkZWQgaGVyZSBmb3IgdGhlIHNha2UKLS8vIG9mIGR1cGxpY2F0aW5nIGFsbCByZWxldmFudCB0
ZXN0cyBmcm9tIGF1ZGlvX3Byb2Nlc3NpbmdfdGVzdC5jYy4KLVRFU1QoQXBtSGVscGVyc1Rlc3Qs
IEhpZ2hQYXNzRmlsdGVyX0RlZmF1bHRNb2RlKSB7Ci0gIFRlc3RIZWxwZXIgaGVscGVyOwotICBF
WFBFQ1RfRkFMU0UoaGVscGVyLmFwbSgpLT5oaWdoX3Bhc3NfZmlsdGVyKCktPmlzX2VuYWJsZWQo
KSk7Ci19CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29uc3RhbnRzLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Nv
bnN0YW50cy5jYwppbmRleCA3MzY2ODVmYzc5ZjM2ODRmNGRmNDE5NWVlYjRmNDg1MDNhZTQ1ODE1
Li5mYjNhYzY5OGU2MTcwMjc4ZTViOGU4MTM3N2VkNzhlZGIyZGFkNmRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29u
c3RhbnRzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2VuZ2luZS9jb25zdGFudHMuY2MKQEAgLTE0LDUgKzE0LDYgQEAgbmFtZXNwYWNlIGNy
aWNrZXQgewogCiBjb25zdCBpbnQga01pblZpZGVvQml0cmF0ZUJwcyA9IDMwMDAwOwogY29uc3Qg
aW50IGtWaWRlb010dSA9IDEyMDA7Ci1jb25zdCBpbnQga1ZpZGVvUnRwQnVmZmVyU2l6ZSA9IDY1
NTM2OworY29uc3QgaW50IGtWaWRlb1J0cFNlbmRCdWZmZXJTaXplID0gNjU1MzY7Citjb25zdCBp
bnQga1ZpZGVvUnRwUmVjdkJ1ZmZlclNpemUgPSAyNjIxNDQ7CiB9ICAvLyBuYW1lc3BhY2UgY3Jp
Y2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL2NvbnN0YW50cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2NvbnN0YW50cy5oCmluZGV4IGVhNmMwNzU0YTY1
ZDk3MmViZjg2MTdiZGIxNGFhODY5YTE4YTZhMjQuLmIxMzYwNjA1NDYxMDAxOTRlZDZmZTUxNDc4
ZmViNWIxNTgzODM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb25zdGFudHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29uc3RhbnRzLmgKQEAg
LTE0LDcgKzE0LDggQEAKIG5hbWVzcGFjZSBjcmlja2V0IHsKIAogZXh0ZXJuIGNvbnN0IGludCBr
VmlkZW9NdHU7Ci1leHRlcm4gY29uc3QgaW50IGtWaWRlb1J0cEJ1ZmZlclNpemU7CitleHRlcm4g
Y29uc3QgaW50IGtWaWRlb1J0cFNlbmRCdWZmZXJTaXplOworZXh0ZXJuIGNvbnN0IGludCBrVmlk
ZW9SdHBSZWN2QnVmZmVyU2l6ZTsKIAogZXh0ZXJuIGNvbnN0IGNoYXIga0gyNjRDb2RlY05hbWVb
XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL2NvbnZlcnRfbGVnYWN5X3ZpZGVvX2ZhY3RvcnkuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29udmVydF9s
ZWdhY3lfdmlkZW9fZmFjdG9yeS5jYwppbmRleCA3ZGExYjBmZTJmZDdjMmI3NjM4MmUyMWZmZGQx
MjMzOGQxNWU4ODY4Li4yOTdhMTQzNDI1YjRjMWVhNDFjYzA1MWFmYTQzYWQ5MTM1YzNjZDMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9lbmdpbmUvY29udmVydF9sZWdhY3lfdmlkZW9fZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29udmVydF9sZWdh
Y3lfdmlkZW9fZmFjdG9yeS5jYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4K
IAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5n
cy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyX3NvZnR3YXJl
X2ZhbGxiYWNrX3dyYXBwZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2Vu
Y29kZXJfZmFjdG9yeS5oIgpAQCAtMTMwLDcgKzEzMSw3IEBAIGNsYXNzIEVuY29kZXJBZGFwdGVy
IDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeSB7CiAgICAgaWYgKElzRm9ybWF0
U3VwcG9ydGVkKGludGVybmFsX2VuY29kZXJfZmFjdG9yeV8tPkdldFN1cHBvcnRlZEZvcm1hdHMo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KSkgewogICAgICAgaW50ZXJuYWxf
ZW5jb2RlciA9Ci0gICAgICAgICAgQ29kZWNOYW1lc0VxKGZvcm1hdC5uYW1lLmNfc3RyKCksIGtW
cDhDb2RlY05hbWUpCisgICAgICAgICAgYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFt
ZSwga1ZwOENvZGVjTmFtZSkKICAgICAgICAgICAgICAgPyBhYnNsOjptYWtlX3VuaXF1ZTx3ZWJy
dGM6OlZQOEVuY29kZXJTaW11bGNhc3RQcm94eT4oCiAgICAgICAgICAgICAgICAgICAgIGludGVy
bmFsX2VuY29kZXJfZmFjdG9yeV8uZ2V0KCksIGZvcm1hdCkKICAgICAgICAgICAgICAgOiBpbnRl
cm5hbF9lbmNvZGVyX2ZhY3RvcnlfLT5DcmVhdGVWaWRlb0VuY29kZXIoZm9ybWF0KTsKQEAgLTE0
MSw3ICsxNDIsNyBAQCBjbGFzcyBFbmNvZGVyQWRhcHRlciA6IHB1YmxpYyB3ZWJydGM6OlZpZGVv
RW5jb2RlckZhY3RvcnkgewogICAgIGlmIChJc0Zvcm1hdFN1cHBvcnRlZChleHRlcm5hbF9lbmNv
ZGVyX2ZhY3RvcnlfLT5HZXRTdXBwb3J0ZWRGb3JtYXRzKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCkpIHsKICAgICAgIGV4dGVybmFsX2VuY29kZXIgPQotICAgICAgICAgIENv
ZGVjTmFtZXNFcShmb3JtYXQubmFtZS5jX3N0cigpLCBrVnA4Q29kZWNOYW1lKQorICAgICAgICAg
IGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsIGtWcDhDb2RlY05hbWUpCiAgICAg
ICAgICAgICAgID8gYWJzbDo6bWFrZV91bmlxdWU8d2VicnRjOjpTaW11bGNhc3RFbmNvZGVyQWRh
cHRlcj4oCiAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsX2VuY29kZXJfZmFjdG9yeV8uZ2V0
KCksIGZvcm1hdCkKICAgICAgICAgICAgICAgOiBleHRlcm5hbF9lbmNvZGVyX2ZhY3RvcnlfLT5D
cmVhdGVWaWRlb0VuY29kZXIoZm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb252ZXJ0X2xlZ2FjeV92aWRl
b19mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9lbmdpbmUvY29udmVydF9sZWdhY3lfdmlkZW9fZmFjdG9yeS5oCmluZGV4IDViZDM1ODBh
NmYxMDQyNWQzMGZkOTVkNDM4MTM2OGJhNjg3ZWNiYmYuLjI3MzgzYWIzODZlOWYzOTgzZGU0MzI1
NzMzZGQxZTQ4NmRiNjVjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb252ZXJ0X2xlZ2FjeV92aWRlb19mYWN0b3J5
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL2NvbnZlcnRfbGVnYWN5X3ZpZGVvX2ZhY3RvcnkuaApAQCAtMTMsNiArMTMsOCBAQAog
CiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBv
cnQuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBWaWRlb0VuY29kZXJGYWN0b3J5Owog
Y2xhc3MgVmlkZW9EZWNvZGVyRmFjdG9yeTsKQEAgLTI3LDEwICsyOSwxMiBAQCBjbGFzcyBXZWJS
dGNWaWRlb0RlY29kZXJGYWN0b3J5OwogLy8gbmV3IHR5cGUgb2YgY29kZWMgZmFjdG9yaWVzLiBU
aGUgcHVycG9zZSBvZiB0aGVzZSBmdW5jdGlvbnMgaXMgdG8gcHJvdmlkZSBhbgogLy8gZWFzeSB3
YXkgZm9yIGNsaWVudHMgdG8gbWlncmF0ZSB0byB0aGUgQVBJIHdpdGggbmV3IGZhY3RvcnkgdHlw
ZXMuCiAvLyBUT0RPKG1hZ2plZCk6IFJlbW92ZSBvbmNlIG9sZCBmYWN0b3JpZXMgYXJlIGdvbmUs
IHdlYnJ0Yzo3OTI1Lgotc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9y
eT4gQ29udmVydFZpZGVvRW5jb2RlckZhY3RvcnkoCitSVENfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0
cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+CitDb252ZXJ0VmlkZW9FbmNvZGVyRmFjdG9y
eSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeT4gZXh0ZXJu
YWxfZW5jb2Rlcl9mYWN0b3J5KTsKIAotc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNv
ZGVyRmFjdG9yeT4gQ29udmVydFZpZGVvRGVjb2RlckZhY3RvcnkoCitSVENfRVhQT1JUIHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+CitDb252ZXJ0VmlkZW9EZWNv
ZGVyRmFjdG9yeSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9y
eT4gZXh0ZXJuYWxfZGVjb2Rlcl9mYWN0b3J5KTsKIAogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS9mYWtld2VicnRjY2FsbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjY2FsbC5jYwppbmRleCBjZTk5
YjljMTAzNGMwOTIxNTQwODk0ODgzNmU0Yzk0NDMxMTJhZjQyLi42YzViOGM3NGI4ZjA4ZDE4Mjlm
NTg1MmVmYjNmZDQ1OTE5ZWExNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y2NhbGwuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zh
a2V3ZWJydGNjYWxsLmNjCkBAIC0xMjMsNiArMTIzLDcgQEAgRmFrZVZpZGVvU2VuZFN0cmVhbTo6
RmFrZVZpZGVvU2VuZFN0cmVhbSgKICAgICAgIHNvdXJjZV8obnVsbHB0ciksCiAgICAgICBudW1f
c3dhcHBlZF9mcmFtZXNfKDApIHsKICAgUlRDX0RDSEVDSyhjb25maWcuZW5jb2Rlcl9zZXR0aW5n
cy5lbmNvZGVyX2ZhY3RvcnkgIT0gbnVsbHB0cik7CisgIFJUQ19EQ0hFQ0soY29uZmlnLmVuY29k
ZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSAhPSBudWxscHRyKTsKICAgUmVj
b25maWd1cmVWaWRlb0VuY29kZXIoc3RkOjptb3ZlKGVuY29kZXJfY29uZmlnKSk7CiB9CiAKQEAg
LTY0Myw0ICs2NDQsNyBAQCB2b2lkIEZha2VDYWxsOjpPblNlbnRQYWNrZXQoY29uc3QgcnRjOjpT
ZW50UGFja2V0JiBzZW50X3BhY2tldCkgewogICB9CiB9CiAKK3ZvaWQgRmFrZUNhbGw6Ok1lZGlh
VHJhbnNwb3J0Q2hhbmdlKAorICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1l
ZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UpIHt9CisKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9lbmdpbmUvZmFrZXdlYnJ0Y2NhbGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjY2FsbC5oCmluZGV4IGRiY2VkYjhm
NDEwOGZlNTVmMWEyMTgxYjg4YTAzMTZjOWIyMDg4OWIuLjFiNmRlYjA3MDJkYTdmMzVlNzQyNWFl
MDJmNjYzMDUyOTE1YmUxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjY2FsbC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2Vi
cnRjY2FsbC5oCkBAIC0yNzMsNiArMjczLDkgQEAgY2xhc3MgRmFrZUNhbGwgZmluYWwgOiBwdWJs
aWMgd2VicnRjOjpDYWxsLCBwdWJsaWMgd2VicnRjOjpQYWNrZXRSZWNlaXZlciB7CiAgIGludCBH
ZXROdW1DcmVhdGVkUmVjZWl2ZVN0cmVhbXMoKSBjb25zdDsKICAgdm9pZCBTZXRTdGF0cyhjb25z
dCB3ZWJydGM6OkNhbGw6OlN0YXRzJiBzdGF0cyk7CiAKKyAgdm9pZCBNZWRpYVRyYW5zcG9ydENo
YW5nZSgKKyAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5z
cG9ydF9pbnRlcmZhY2UpIG92ZXJyaWRlOworCiAgcHJpdmF0ZToKICAgd2VicnRjOjpBdWRpb1Nl
bmRTdHJlYW0qIENyZWF0ZUF1ZGlvU2VuZFN0cmVhbSgKICAgICAgIGNvbnN0IHdlYnJ0Yzo6QXVk
aW9TZW5kU3RyZWFtOjpDb25maWcmIGNvbmZpZykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdl
YnJ0Y3ZpZGVvY2FwdHVyZW1vZHVsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGN2aWRlb2NhcHR1cmVtb2R1bGUuaApp
bmRleCA0N2YxMzkzYzNmMzgxOWU4NTE3MTBiYjg0YmIyODFhNGViZDQwZDM4Li43NTU2ODExZjJk
ZTAxOTYyYmZlMDE0ZTUwNTYzMjRjMmQ2ODQwMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVv
Y2FwdHVyZW1vZHVsZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlkZW9jYXB0dXJlbW9kdWxlLmgKQEAgLTE0
LDcgKzE0LDYgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvdmlkZW8vaTQy
MF9idWZmZXIuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL3Rlc3R1dGlscy5oIgogI2luY2x1ZGUg
Im1lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2NhcHR1cmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
dGFza19xdWV1ZV9mb3JfdGVzdC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVvZW5naW5l
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL2Zha2V3ZWJydGN2aWRlb2VuZ2luZS5jYwppbmRleCA3MDgxYjY0OTMzYTk1NmYyYzA2YWE1
YTg2Mjg0NTc0YjEwZjNkYjcyLi42OTBmM2U3ZjgzMWVjYTc2MGE3NWM1MTE0NDM0Y2NkZTZiOTE0
YmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVvZW5naW5lLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlk
ZW9lbmdpbmUuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9m
YWtld2VicnRjdmlkZW9lbmdpbmUuaCIKIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5o
IgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29kZWMuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUv
c2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJy
dGN2aWRlb2RlY29kZXJmYWN0b3J5LmgiCkBAIC0xMjgsOSArMTI5LDcgQEAgRmFrZVdlYlJ0Y1Zp
ZGVvRGVjb2RlckZhY3Rvcnk6OmRlY29kZXJzKCkgewogLy8gRW5jb2Rlci4KIEZha2VXZWJSdGNW
aWRlb0VuY29kZXI6OkZha2VXZWJSdGNWaWRlb0VuY29kZXIoCiAgICAgRmFrZVdlYlJ0Y1ZpZGVv
RW5jb2RlckZhY3RvcnkqIGZhY3RvcnkpCi0gICAgOiBpbml0X2VuY29kZV9ldmVudF8oZmFsc2Us
IGZhbHNlKSwKLSAgICAgIG51bV9mcmFtZXNfZW5jb2RlZF8oMCksCi0gICAgICBmYWN0b3J5Xyhm
YWN0b3J5KSB7fQorICAgIDogbnVtX2ZyYW1lc19lbmNvZGVkXygwKSwgZmFjdG9yeV8oZmFjdG9y
eSkge30KIAogRmFrZVdlYlJ0Y1ZpZGVvRW5jb2Rlcjo6fkZha2VXZWJSdGNWaWRlb0VuY29kZXIo
KSB7CiAgIGlmIChmYWN0b3J5XykgewpAQCAtMTY3LDExICsxNjYsNiBAQCBpbnQzMl90IEZha2VX
ZWJSdGNWaWRlb0VuY29kZXI6OlJlbGVhc2UoKSB7CiAgIHJldHVybiBXRUJSVENfVklERU9fQ09E
RUNfT0s7CiB9CiAKLWludDMyX3QgRmFrZVdlYlJ0Y1ZpZGVvRW5jb2Rlcjo6U2V0Q2hhbm5lbFBh
cmFtZXRlcnModWludDMyX3QgcGFja2V0TG9zcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBydHQpIHsKLSAgcmV0dXJuIFdFQlJU
Q19WSURFT19DT0RFQ19PSzsKLX0KLQogaW50MzJfdCBGYWtlV2ViUnRjVmlkZW9FbmNvZGVyOjpT
ZXRSYXRlQWxsb2NhdGlvbigKICAgICBjb25zdCB3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRp
b24mIGFsbG9jYXRpb24sCiAgICAgdWludDMyX3QgZnJhbWVyYXRlKSB7CkBAIC0xOTQsOCArMTg4
LDcgQEAgaW50IEZha2VXZWJSdGNWaWRlb0VuY29kZXI6OkdldE51bUVuY29kZWRGcmFtZXMoKSB7
CiAKIC8vIFZpZGVvIGVuY29kZXIgZmFjdG9yeS4KIEZha2VXZWJSdGNWaWRlb0VuY29kZXJGYWN0
b3J5OjpGYWtlV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSgpCi0gICAgOiBjcmVhdGVkX3ZpZGVv
X2VuY29kZXJfZXZlbnRfKGZhbHNlLCBmYWxzZSksCi0gICAgICBudW1fY3JlYXRlZF9lbmNvZGVy
c18oMCksCisgICAgOiBudW1fY3JlYXRlZF9lbmNvZGVyc18oMCksCiAgICAgICBlbmNvZGVyc19o
YXZlX2ludGVybmFsX3NvdXJjZXNfKGZhbHNlKSwKICAgICAgIHZwOF9mYWN0b3J5X21vZGVfKGZh
bHNlKSB7fQogCkBAIC0yMTgsNyArMjExLDcgQEAgRmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3Rv
cnk6OkNyZWF0ZVZpZGVvRW5jb2RlcigKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF8pOwog
ICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXI+IGVuY29kZXI7CiAgIGlmIChJ
c0Zvcm1hdFN1cHBvcnRlZChmb3JtYXRzXywgZm9ybWF0KSkgewotICAgIGlmIChDb2RlY05hbWVz
RXEoZm9ybWF0Lm5hbWUuY19zdHIoKSwga1ZwOENvZGVjTmFtZSkgJiYKKyAgICBpZiAoYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwga1ZwOENvZGVjTmFtZSkgJiYKICAgICAgICAg
IXZwOF9mYWN0b3J5X21vZGVfKSB7CiAgICAgICAvLyBUaGUgc2ltdWxjYXN0IGFkYXB0ZXIgd2ls
bCBhc2sgdGhpcyBmYWN0b3J5IGZvciBtdWx0aXBsZSBWUDgKICAgICAgIC8vIGVuY29kZXJzLiBF
bnRlciB2cDhfZmFjdG9yeV9tb2RlIHNvIHRoYXQgd2Ugbm93IGNyZWF0ZSB0aGVzZSBlbmNvZGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvZW5naW5lL2Zha2V3ZWJydGN2aWRlb2VuZ2luZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGN2aWRlb2VuZ2lu
ZS5oCmluZGV4IGY0Mjg3YTMxZDI2MDI2ZmRlZTg5MzFiZTkzNDdkYjQ4OTg0NmFlMjMuLjZlZDky
YTc4OWI1N2UyZGQ3OTA5ODBkN2E5Yzg5NjJiYTI0N2YwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRj
dmlkZW9lbmdpbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVvZW5naW5lLmgKQEAgLTg2LDcgKzg2LDYg
QEAgY2xhc3MgRmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlciA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRW5j
b2RlciB7CiAgIGludDMyX3QgUmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKAogICAgICAg
d2VicnRjOjpFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwogICBpbnQz
Ml90IFJlbGVhc2UoKSBvdmVycmlkZTsKLSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1
aW50MzJfdCBwYWNrZXRMb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CiAgIGludDMyX3QgU2V0
UmF0ZUFsbG9jYXRpb24oY29uc3Qgd2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBhbGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2VuZ2luZS9pbnRlcm5hbGRlY29kZXJmYWN0b3J5LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2ludGVybmFs
ZGVjb2RlcmZhY3RvcnkuY2MKaW5kZXggZGY3NDc3M2M4NmRiMjZlZTM3NDg0MTI0N2FhMTBiYjQw
MGIxOTdhYy4uNzIyNDEzMzM4ZTUxMTk4ZDJmYzYxNmFmNTllOTlmOWY3NjBmN2JjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3Rvcnku
Y2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGRl
Y29kZXJmYWN0b3J5LmgiCiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNs
dWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKICNpbmNsdWRlICJtZWRp
YS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0LmgiCkBAIC01NSwxMSArNTYsMTEgQEAgc3RkOjp1bmlx
dWVfcHRyPFZpZGVvRGVjb2Rlcj4gSW50ZXJuYWxEZWNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9E
ZWNvZGVyKAogICAgIHJldHVybiBudWxscHRyOwogICB9CiAKLSAgaWYgKGNyaWNrZXQ6OkNvZGVj
TmFtZXNFcShmb3JtYXQubmFtZSwgY3JpY2tldDo6a1ZwOENvZGVjTmFtZSkpCisgIGlmIChhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCBjcmlja2V0OjprVnA4Q29kZWNOYW1lKSkK
ICAgICByZXR1cm4gVlA4RGVjb2Rlcjo6Q3JlYXRlKCk7Ci0gIGlmIChjcmlja2V0OjpDb2RlY05h
bWVzRXEoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUpKQorICBpZiAoYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgY3JpY2tldDo6a1ZwOUNvZGVjTmFtZSkpCiAg
ICAgcmV0dXJuIFZQOURlY29kZXI6OkNyZWF0ZSgpOwotICBpZiAoY3JpY2tldDo6Q29kZWNOYW1l
c0VxKGZvcm1hdC5uYW1lLCBjcmlja2V0OjprSDI2NENvZGVjTmFtZSkpCisgIGlmIChhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCBjcmlja2V0OjprSDI2NENvZGVjTmFtZSkpCiAg
ICAgcmV0dXJuIEgyNjREZWNvZGVyOjpDcmVhdGUoKTsKIAogICBSVENfTk9UUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvZW5naW5lL2ludGVybmFsZW5jb2RlcmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9y
eS5jYwppbmRleCBlNmMzYzJlNzJmZDYzMmVhYzcxZWIzOGRmYWI2MTMyN2ExOGI4MmRmLi5lODFi
NzNkNWUzZDZjZjE1YWMzOGNmN2QzNTUzNWQxNWQ0MjIwYzg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvaW50ZXJuYWxl
bmNvZGVyZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5jYwpAQCAtMTIsNiAr
MTIsNyBAQAogCiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9t
YXRjaC5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2luY2x1ZGUvaDI2NC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDgu
aCIKQEAgLTQxLDExICs0MiwxMSBAQCBWaWRlb0VuY29kZXJGYWN0b3J5OjpDb2RlY0luZm8gSW50
ZXJuYWxFbmNvZGVyRmFjdG9yeTo6UXVlcnlWaWRlb0VuY29kZXIoCiAKIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb0VuY29kZXI+IEludGVybmFsRW5jb2RlckZhY3Rvcnk6OkNyZWF0ZVZpZGVvRW5jb2Rl
cigKICAgICBjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIGlmIChjcmlja2V0OjpD
b2RlY05hbWVzRXEoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6OmtWcDhDb2RlY05hbWUpKQorICBpZiAo
YWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgY3JpY2tldDo6a1ZwOENvZGVjTmFt
ZSkpCiAgICAgcmV0dXJuIFZQOEVuY29kZXI6OkNyZWF0ZSgpOwotICBpZiAoY3JpY2tldDo6Q29k
ZWNOYW1lc0VxKGZvcm1hdC5uYW1lLCBjcmlja2V0OjprVnA5Q29kZWNOYW1lKSkKKyAgaWYgKGFi
c2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUp
KQogICAgIHJldHVybiBWUDlFbmNvZGVyOjpDcmVhdGUoY3JpY2tldDo6VmlkZW9Db2RlYyhmb3Jt
YXQpKTsKLSAgaWYgKGNyaWNrZXQ6OkNvZGVjTmFtZXNFcShmb3JtYXQubmFtZSwgY3JpY2tldDo6
a0gyNjRDb2RlY05hbWUpKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFt
ZSwgY3JpY2tldDo6a0gyNjRDb2RlY05hbWUpKQogICAgIHJldHVybiBIMjY0RW5jb2Rlcjo6Q3Jl
YXRlKGNyaWNrZXQ6OlZpZGVvQ29kZWMoZm9ybWF0KSk7CiAgIFJUQ19MT0coTFNfRVJST1IpIDw8
ICJUcnlpbmcgdG8gY3JlYXRlZCBlbmNvZGVyIG9mIHVuc3VwcG9ydGVkIGZvcm1hdCAiCiAgICAg
ICAgICAgICAgICAgICAgIDw8IGZvcm1hdC5uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL211bHRpcGxleGNvZGVj
ZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS9tdWx0aXBsZXhjb2RlY2ZhY3RvcnkuY2MKaW5kZXggMjM2YTJlODFhY2M3MjJk
ODQ4NTU0YTg3YWRmNDg0MGMyNGQ3NWY5NC4uYjM5MTMyNDNlZGViMDVkMTYzZGQzYTJhYjg3M2Zj
MDBmMjAwY2Y0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvZW5naW5lL211bHRpcGxleGNvZGVjZmFjdG9yeS5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbXVsdGlw
bGV4Y29kZWNmYWN0b3J5LmNjCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRlIDx1dGlsaXR5
PgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5o
IgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKQEAgLTIyLDggKzIzLDgg
QEAKIG5hbWVzcGFjZSB7CiAKIGJvb2wgSXNNdWx0aXBsZXhDb2RlYyhjb25zdCBjcmlja2V0OjpW
aWRlb0NvZGVjJiBjb2RlYykgewotICByZXR1cm4gY3JpY2tldDo6Q29kZWNOYW1lc0VxKGNvZGVj
Lm5hbWUuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0Ojpr
TXVsdGlwbGV4Q29kZWNOYW1lKTsKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29k
ZWMubmFtZS5jX3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0
OjprTXVsdGlwbGV4Q29kZWNOYW1lKTsKIH0KIAogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpA
QCAtNDIsNyArNDMsNyBAQCBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gTXVsdGlwbGV4RW5j
b2RlckZhY3Rvcnk6OkdldFN1cHBvcnRlZEZvcm1hdHMoKQogICAgIGNvbnN0IHsKICAgc3RkOjp2
ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IGZvcm1hdHMgPSBmYWN0b3J5Xy0+R2V0U3VwcG9ydGVkRm9y
bWF0cygpOwogICBmb3IgKGNvbnN0IGF1dG8mIGZvcm1hdCA6IGZvcm1hdHMpIHsKLSAgICBpZiAo
Y3JpY2tldDo6Q29kZWNOYW1lc0VxKGZvcm1hdC5uYW1lLCBrTXVsdGlwbGV4QXNzb2NpYXRlZENv
ZGVjTmFtZSkpIHsKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwg
a011bHRpcGxleEFzc29jaWF0ZWRDb2RlY05hbWUpKSB7CiAgICAgICBTZHBWaWRlb0Zvcm1hdCBt
dWx0aXBsZXhfZm9ybWF0ID0gZm9ybWF0OwogICAgICAgbXVsdGlwbGV4X2Zvcm1hdC5wYXJhbWV0
ZXJzW2NyaWNrZXQ6OmtDb2RlY1BhcmFtQXNzb2NpYXRlZENvZGVjTmFtZV0gPQogICAgICAgICAg
IGZvcm1hdC5uYW1lOwpAQCAtODgsNyArODksNyBAQCBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1h
dD4gTXVsdGlwbGV4RGVjb2RlckZhY3Rvcnk6OkdldFN1cHBvcnRlZEZvcm1hdHMoKQogICAgIGNv
bnN0IHsKICAgc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IGZvcm1hdHMgPSBmYWN0b3J5Xy0+
R2V0U3VwcG9ydGVkRm9ybWF0cygpOwogICBmb3IgKGNvbnN0IGF1dG8mIGZvcm1hdCA6IGZvcm1h
dHMpIHsKLSAgICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGZvcm1hdC5uYW1lLCBrTXVsdGlw
bGV4QXNzb2NpYXRlZENvZGVjTmFtZSkpIHsKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2Fz
ZShmb3JtYXQubmFtZSwga011bHRpcGxleEFzc29jaWF0ZWRDb2RlY05hbWUpKSB7CiAgICAgICBT
ZHBWaWRlb0Zvcm1hdCBtdWx0aXBsZXhfZm9ybWF0ID0gZm9ybWF0OwogICAgICAgbXVsdGlwbGV4
X2Zvcm1hdC5wYXJhbWV0ZXJzW2NyaWNrZXQ6OmtDb2RlY1BhcmFtQXNzb2NpYXRlZENvZGVjTmFt
ZV0gPQogICAgICAgICAgIGZvcm1hdC5uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL211bHRpcGxleGNvZGVjZmFj
dG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL211bHRpcGxleGNvZGVjZmFjdG9yeS5oCmluZGV4IDdhODUxYzhjMWVjZmM0MjAzY2E4
M2ZhZTkxYWM4NmVhYzc3ZmU2N2EuLmFlMDk5YTRlZjNlNzhiMWVmYWRmYjE5MmQ3NjkwMzAxNWRj
YjUzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS9tdWx0aXBsZXhjb2RlY2ZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbXVsdGlwbGV4Y29k
ZWNmYWN0b3J5LmgKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFwaS92aWRlb19jb2Rl
Y3MvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92
aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4
cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIC8vIE11bHRpcGxleCBjb2RlYyBpcyBhIGNv
bXBsZXRlbHkgbW9kdWxhci9vcHRpb25hbCBjb2RlYyB0aGF0IGFsbG93cyB1c2VycyB0bwpAQCAt
MzYsNyArMzcsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIC8vIGFuZCBkZWNvZGVyIGluc3RhbmNl
KHMpIHVzaW5nIHRoZXNlIGZhY3Rvcmllcy4KIC8vIC0gVXNlIE11bHRpcGxleCpjb2RlckZhY3Rv
cnkgY2xhc3NlcyBpbiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSBjYWxscy4KIC8vIC0g
U2VsZWN0ICJtdWx0aXBsZXgiIGNvZGVjIGluIFNEUCBuZWdvdGlhdGlvbi4KLWNsYXNzIE11bHRp
cGxleEVuY29kZXJGYWN0b3J5IDogcHVibGljIFZpZGVvRW5jb2RlckZhY3RvcnkgeworY2xhc3Mg
UlRDX0VYUE9SVCBNdWx0aXBsZXhFbmNvZGVyRmFjdG9yeSA6IHB1YmxpYyBWaWRlb0VuY29kZXJG
YWN0b3J5IHsKICBwdWJsaWM6CiAgIC8vIHxzdXBwb3J0c19hdWdtZW50aW5nX2RhdGF8IGRlZmlu
ZXMgaWYgdGhlIGVuY29kZXIgd291bGQgc3VwcG9ydCBhdWdtZW50aW5nCiAgIC8vIGRhdGEuIElm
IHNldCwgdGhlIGVuY29kZXIgZXhwZWN0cyB0byByZWNlaXZlIHZpZGVvIGZyYW1lIGJ1ZmZlcnMg
b2YgdHlwZQpAQCAtNTQsNyArNTUsNyBAQCBjbGFzcyBNdWx0aXBsZXhFbmNvZGVyRmFjdG9yeSA6
IHB1YmxpYyBWaWRlb0VuY29kZXJGYWN0b3J5IHsKICAgY29uc3QgYm9vbCBzdXBwb3J0c19hdWdt
ZW50aW5nX2RhdGFfOwogfTsKIAotY2xhc3MgTXVsdGlwbGV4RGVjb2RlckZhY3RvcnkgOiBwdWJs
aWMgVmlkZW9EZWNvZGVyRmFjdG9yeSB7CitjbGFzcyBSVENfRVhQT1JUIE11bHRpcGxleERlY29k
ZXJGYWN0b3J5IDogcHVibGljIFZpZGVvRGVjb2RlckZhY3RvcnkgewogIHB1YmxpYzoKICAgLy8g
fHN1cHBvcnRzX2F1Z21lbnRpbmdfZGF0YXwgZGVmaW5lcyBpZiB0aGUgZGVjb2RlciB3b3VsZCBz
dXBwb3J0IGF1Z21lbnRpbmcKICAgLy8gZGF0YS4gSWYgc2V0LCB0aGUgZGVjb2RlciBpcyBleHBl
Y3RlZCB0byBvdXRwdXQgdmlkZW8gZnJhbWUgYnVmZmVycyBvZiB0eXBlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbnVs
bHdlYnJ0Y3ZpZGVvZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbnVsbHdlYnJ0Y3ZpZGVvZW5naW5lLmgKaW5kZXggOWFmMGY5
YjEzMGM2YzJlNDU2NDUzNGU5MDIyZGUwN2U3NTdmYzhjMS4uNjIzMjZkZDRkZGQ0M2IzOTY5OGVk
ZDEyMmRlMGNjMWFkZGVmNWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL251bGx3ZWJydGN2aWRlb2VuZ2luZS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS9udWxsd2VicnRjdmlkZW9lbmdpbmUuaApAQCAtMzAsMTUgKzMwLDE5IEBAIGNsYXNzIFdlYlJ0
Y1ZpZGVvRW5jb2RlckZhY3Rvcnk7CiAKIC8vIFZpZGVvIGVuZ2luZSBpbXBsZW1lbnRhdGlvbiB0
aGF0IGRvZXMgbm90aGluZyBhbmQgY2FuIGJlIHVzZWQgaW4KIC8vIENvbXBvc2l0ZU1lZGlhRW5n
aW5lLgotY2xhc3MgTnVsbFdlYlJ0Y1ZpZGVvRW5naW5lIHsKK2NsYXNzIE51bGxXZWJSdGNWaWRl
b0VuZ2luZSA6IHB1YmxpYyBWaWRlb0VuZ2luZUludGVyZmFjZSB7CiAgcHVibGljOgotICBzdGQ6
OnZlY3RvcjxWaWRlb0NvZGVjPiBjb2RlY3MoKSBjb25zdCB7IHJldHVybiBzdGQ6OnZlY3RvcjxW
aWRlb0NvZGVjPigpOyB9CisgIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IGNvZGVjcygpIGNvbnN0
IG92ZXJyaWRlIHsKKyAgICByZXR1cm4gc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4oKTsKKyAgfQog
Ci0gIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBSdHBD
YXBhYmlsaXRpZXMoKTsgfQorICBSdHBDYXBhYmlsaXRpZXMgR2V0Q2FwYWJpbGl0aWVzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gUnRwQ2FwYWJpbGl0aWVzKCk7IH0KIAotICBWaWRlb01lZGlh
Q2hhbm5lbCogQ3JlYXRlQ2hhbm5lbCh3ZWJydGM6OkNhbGwqIGNhbGwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykg
eworICBWaWRlb01lZGlhQ2hhbm5lbCogQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgd2VicnRj
OjpDYWxsKiBjYWxsLAorICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKKyAgICAgIGNv
bnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucywKKyAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0
aW9ucyYgY3J5cHRvX29wdGlvbnMpIG92ZXJyaWRlIHsKICAgICByZXR1cm4gbnVsbHB0cjsKICAg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS9udWxsd2VicnRjdmlkZW9lbmdpbmVfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbnVsbHdl
YnJ0Y3ZpZGVvZW5naW5lX3VuaXR0ZXN0LmNjCmluZGV4IDZjNzQwYjhjOGMzNzJhYjhhMjkwYzMx
YmRjYWU1NzVjODU1YjJhZGYuLmU3MThkMWJiNjk3ZTIxODIyNzI4ZmE4YzFmNDVlY2M1ZTVkODYz
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2VuZ2luZS9udWxsd2VicnRjdmlkZW9lbmdpbmVfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL251bGx3
ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5jYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5j
bHVkZSAibWVkaWEvZW5naW5lL251bGx3ZWJydGN2aWRlb2VuZ2luZS5oIgorI2luY2x1ZGUgImFi
c2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVu
Z2luZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvbW9ja19hdWRp
b19kZXZpY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9h
dWRpb19wcm9jZXNzaW5nLmgiCkBAIC0xOCw4ICsxOSw3IEBACiAKIG5hbWVzcGFjZSBjcmlja2V0
IHsKIAotY2xhc3MgV2ViUnRjTWVkaWFFbmdpbmVOdWxsVmlkZW8KLSAgICA6IHB1YmxpYyBDb21w
b3NpdGVNZWRpYUVuZ2luZTxXZWJSdGNWb2ljZUVuZ2luZSwgTnVsbFdlYlJ0Y1ZpZGVvRW5naW5l
PiB7CitjbGFzcyBXZWJSdGNNZWRpYUVuZ2luZU51bGxWaWRlbyA6IHB1YmxpYyBDb21wb3NpdGVN
ZWRpYUVuZ2luZSB7CiAgcHVibGljOgogICBXZWJSdGNNZWRpYUVuZ2luZU51bGxWaWRlbygKICAg
ICAgIHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGUqIGFkbSwKQEAgLTI3LDEzICsyNywxMyBAQCBj
bGFzcyBXZWJSdGNNZWRpYUVuZ2luZU51bGxWaWRlbwogICAgICAgICAgIGF1ZGlvX2VuY29kZXJf
ZmFjdG9yeSwKICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVj
b2RlckZhY3Rvcnk+JgogICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSkKLSAgICAgIDog
Q29tcG9zaXRlTWVkaWFFbmdpbmU8V2ViUnRjVm9pY2VFbmdpbmUsIE51bGxXZWJSdGNWaWRlb0Vu
Z2luZT4oCi0gICAgICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoYWRtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKSks
Ci0gICAgICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoKSkge30KKyAgICAgIDogQ29tcG9z
aXRlTWVkaWFFbmdpbmUoYWJzbDo6bWFrZV91bmlxdWU8V2ViUnRjVm9pY2VFbmdpbmU+KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdl
YnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8TnVsbFdlYlJ0Y1ZpZGVvRW5naW5lPigp
KSB7fQogfTsKIAogLy8gU2ltcGxlIHRlc3QgdG8gY2hlY2sgaWYgTnVsbFdlYlJ0Y1ZpZGVvRW5n
aW5lIGltcGxlbWVudHMgdGhlIG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9wYXlsb2FkX3R5cGVfbWFwcGVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL3BheWxvYWRfdHlwZV9tYXBwZXIuY2MKaW5kZXggNWQyZmI2NzU3YzQ0NWFkMjEyNTE3OTAw
ZTg5NGRjODQwOWRmNTY1NS4uYWU0ZTMwOWVmNDkwMGQzYjkxN2Y4OWFkMDYxOGZkY2VkMjcyMTlh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvZW5naW5lL3BheWxvYWRfdHlwZV9tYXBwZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3BheWxvYWRfdHlwZV9tYXBw
ZXIuY2MKQEAgLTEyLDggKzEyLDggQEAKIAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRl
ICJhYnNsL3N0cmluZ3MvYXNjaWkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlv
X2Zvcm1hdC5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2lu
Y2x1ZGUpCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgogCiBuYW1lc3Bh
Y2UgY3JpY2tldCB7CkBAIC0xNDAsNyArMTQwLDggQEAgYm9vbCBQYXlsb2FkVHlwZU1hcHBlcjo6
U2RwQXVkaW9Gb3JtYXRPcmRlcmluZzo6b3BlcmF0b3IoKSgKICAgICBjb25zdCB3ZWJydGM6OlNk
cEF1ZGlvRm9ybWF0JiBiKSBjb25zdCB7CiAgIGlmIChhLmNsb2NrcmF0ZV9oeiA9PSBiLmNsb2Nr
cmF0ZV9oeikgewogICAgIGlmIChhLm51bV9jaGFubmVscyA9PSBiLm51bV9jaGFubmVscykgewot
ICAgICAgaW50IG5hbWVfY21wID0gU1RSX0NBU0VfQ01QKGEubmFtZS5jX3N0cigpLCBiLm5hbWUu
Y19zdHIoKSk7CisgICAgICBpbnQgbmFtZV9jbXAgPQorICAgICAgICAgIGFic2w6OkFzY2lpU3Ry
VG9Mb3dlcihhLm5hbWUpLmNvbXBhcmUoYWJzbDo6QXNjaWlTdHJUb0xvd2VyKGIubmFtZSkpOwog
ICAgICAgaWYgKG5hbWVfY21wID09IDApCiAgICAgICAgIHJldHVybiBhLnBhcmFtZXRlcnMgPCBi
LnBhcmFtZXRlcnM7CiAgICAgICByZXR1cm4gbmFtZV9jbXAgPCAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3Njb3Bl
ZHZpZGVvZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS9zY29wZWR2aWRlb2VuY29kZXIuY2MKaW5kZXggMDI2NjU0ZTA3MjA0
ZDA0NGI2OWY1Y2I4OTY2NmY3OGI5MmFiMzFjNi4uZGIxMTQ4YmYzMGZlMjAwOTMwNGI1N2E3OTcy
YmI4ZmYxY2NmNjM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3Njb3BlZHZpZGVvZW5jb2Rlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2NvcGVk
dmlkZW9lbmNvZGVyLmNjCkBAIC0zMywxNCArMzMsMTAgQEAgY2xhc3MgU2NvcGVkVmlkZW9FbmNv
ZGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyIHsKICAgaW50MzJfdCBFbmNvZGUoY29u
c3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgICAgICAgY29uc3Qgd2Vi
cnRjOjpDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8d2VicnRjOjpGcmFtZVR5cGU+KiBmcmFtZV90eXBlcykg
b3ZlcnJpZGU7Ci0gIGludDMyX3QgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0
X2xvc3MsIGludDY0X3QgcnR0KSBvdmVycmlkZTsKICAgaW50MzJfdCBTZXRSYXRlcyh1aW50MzJf
dCBiaXRyYXRlLCB1aW50MzJfdCBmcmFtZXJhdGUpIG92ZXJyaWRlOwogICBpbnQzMl90IFNldFJh
dGVBbGxvY2F0aW9uKGNvbnN0IHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYWxsb2Nh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIG92
ZXJyaWRlOwotICBTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
Y29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KKyAgRW5j
b2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZTsKICAgflNjb3BlZFZpZGVv
RW5jb2RlcigpIG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKQEAgLTc1LDExICs3MSw2IEBAIGludDMy
X3QgU2NvcGVkVmlkZW9FbmNvZGVyOjpFbmNvZGUoCiAgIHJldHVybiBlbmNvZGVyXy0+RW5jb2Rl
KGZyYW1lLCBjb2RlY19zcGVjaWZpY19pbmZvLCBmcmFtZV90eXBlcyk7CiB9CiAKLWludDMyX3Qg
U2NvcGVkVmlkZW9FbmNvZGVyOjpTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRf
bG9zcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90IHJ0dCkgewotICByZXR1cm4gZW5jb2Rlcl8tPlNldENoYW5uZWxQYXJhbWV0ZXJzKHBh
Y2tldF9sb3NzLCBydHQpOwotfQotCiBpbnQzMl90IFNjb3BlZFZpZGVvRW5jb2Rlcjo6U2V0UmF0
ZXModWludDMyX3QgYml0cmF0ZSwgdWludDMyX3QgZnJhbWVyYXRlKSB7CiAgIHJldHVybiBlbmNv
ZGVyXy0+U2V0UmF0ZXMoYml0cmF0ZSwgZnJhbWVyYXRlKTsKIH0KQEAgLTkwLDE3ICs4MSw4IEBA
IGludDMyX3QgU2NvcGVkVmlkZW9FbmNvZGVyOjpTZXRSYXRlQWxsb2NhdGlvbigKICAgcmV0dXJu
IGVuY29kZXJfLT5TZXRSYXRlQWxsb2NhdGlvbihhbGxvY2F0aW9uLCBmcmFtZXJhdGUpOwogfQog
Ci13ZWJydGM6OlZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIFNjb3BlZFZpZGVvRW5jb2Rl
cjo6R2V0U2NhbGluZ1NldHRpbmdzKCkKLSAgICBjb25zdCB7Ci0gIHJldHVybiBlbmNvZGVyXy0+
R2V0U2NhbGluZ1NldHRpbmdzKCk7Ci19Ci0KLWJvb2wgU2NvcGVkVmlkZW9FbmNvZGVyOjpTdXBw
b3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGVuY29kZXJfLT5TdXBwb3J0c05h
dGl2ZUhhbmRsZSgpOwotfQotCi1jb25zdCBjaGFyKiBTY29wZWRWaWRlb0VuY29kZXI6OkltcGxl
bWVudGF0aW9uTmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGVuY29kZXJfLT5JbXBsZW1lbnRhdGlv
bk5hbWUoKTsKK3dlYnJ0Yzo6VmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBTY29wZWRWaWRlb0Vu
Y29kZXI6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICByZXR1cm4gZW5jb2Rlcl8tPkdldEVu
Y29kZXJJbmZvKCk7CiB9CiAKIFNjb3BlZFZpZGVvRW5jb2Rlcjo6flNjb3BlZFZpZGVvRW5jb2Rl
cigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0LmNjCmluZGV4IGM0MmUxZGNh
ZTI5MDg0MGE5YjM5OGNjODMwZDEyYzgxY2Y2MTYxYzYuLmRlM2Q4ZGYwOTdmMTUwNWQwMWY2NGNl
MzBmZTdhNmUwMjJkYzBmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdC5j
YwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9zaW11bGNhc3QuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF9yYXRlX2Fs
bG9jYXRvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVy
cy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKQEAgLTE0MCw3ICsxNDEsMTMgQEAgaW50IEZpbmRT
aW11bGNhc3RGb3JtYXRJbmRleChpbnQgd2lkdGgsIGludCBoZWlnaHQsIHNpemVfdCBtYXhfbGF5
ZXJzKSB7CiAvLyBTaW11bGNhc3Qgc3RyZWFtIHdpZHRoIGFuZCBoZWlnaHQgbXVzdCBib3RoIGJl
IGRpdmlkYWJsZSBieQogLy8gfDIgXiAoc2ltdWxjYXN0X2xheWVycyAtIDEpfC4KIGludCBOb3Jt
YWxpemVTaW11bGNhc3RTaXplKGludCBzaXplLCBzaXplX3Qgc2ltdWxjYXN0X2xheWVycykgewot
ICBjb25zdCBpbnQgYmFzZTJfZXhwb25lbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpbXVsY2FzdF9s
YXllcnMpIC0gMTsKKyAgaW50IGJhc2UyX2V4cG9uZW50ID0gc3RhdGljX2Nhc3Q8aW50PihzaW11
bGNhc3RfbGF5ZXJzKSAtIDE7CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4gZXhwZXJpbWVu
dGFsX2Jhc2UyX2V4cG9uZW50ID0KKyAgICAgIHdlYnJ0Yzo6Tm9ybWFsaXplU2ltdWxjYXN0U2l6
ZUV4cGVyaW1lbnQ6OkdldEJhc2UyRXhwb25lbnQoKTsKKyAgaWYgKGV4cGVyaW1lbnRhbF9iYXNl
Ml9leHBvbmVudCAmJgorICAgICAgKHNpemUgPiAoMSA8PCAqZXhwZXJpbWVudGFsX2Jhc2UyX2V4
cG9uZW50KSkpIHsKKyAgICBiYXNlMl9leHBvbmVudCA9ICpleHBlcmltZW50YWxfYmFzZTJfZXhw
b25lbnQ7CisgIH0KICAgcmV0dXJuICgoc2l6ZSA+PiBiYXNlMl9leHBvbmVudCkgPDwgYmFzZTJf
ZXhwb25lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9z
aW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmNjCmluZGV4IDMwZGE2OGVjODVjYThiN2ZhMGRlNzFh
NzFjNjViOGNkNGQxNzI1YzguLjYyNDFmZjlkMzZkNjkxZDAzOWNkZmVjNmM2YzY2NjYxMjJkNTk2
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3Rf
ZW5jb2Rlcl9hZGFwdGVyLmNjCkBAIC0xNyw5ICsxNyw5IEBACiAjaW5jbHVkZSAiYXBpL3ZpZGVv
L2k0MjBfYnVmZmVyLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2Nh
dGlvbi5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
LmgiCi0jaW5jbHVkZSAibWVkaWEvZW5naW5lL3Njb3BlZHZpZGVvZW5jb2Rlci5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJ0
aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvc2NhbGUuaCIKQEAgLTEyNyw5ICsxMjcs
OSBAQCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXIoVmlk
ZW9FbmNvZGVyRmFjdG9yeSogZmFjdG9yeSwKICAgICAgIGZhY3RvcnlfKGZhY3RvcnkpLAogICAg
ICAgdmlkZW9fZm9ybWF0Xyhmb3JtYXQpLAogICAgICAgZW5jb2RlZF9jb21wbGV0ZV9jYWxsYmFj
a18obnVsbHB0ciksCi0gICAgICBpbXBsZW1lbnRhdGlvbl9uYW1lXygiU2ltdWxjYXN0RW5jb2Rl
ckFkYXB0ZXIiKSwKICAgICAgIGV4cGVyaW1lbnRhbF9ib29zdGVkX3NjcmVlbnNoYXJlX3FwXyhH
ZXRTY3JlZW5zaGFyZUJvb3N0ZWRRcFZhbHVlKCkpIHsKICAgUlRDX0RDSEVDSyhmYWN0b3J5Xyk7
CisgIGVuY29kZXJfaW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSA9ICJTaW11bGNhc3RFbmNvZGVy
QWRhcHRlciI7CiAKICAgLy8gVGhlIGFkYXB0ZXIgaXMgdHlwaWNhbGx5IGNyZWF0ZWQgb24gdGhl
IHdvcmtlciB0aHJlYWQsIGJ1dCBvcGVyYXRlZCBvbgogICAvLyB0aGUgZW5jb2RlciB0YXNrIHF1
ZXVlLgpAQCAtMjAzLDcgKzIwMyw4IEBAIGludCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6SW5p
dEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBpbnN0LAogICAgIHN0YXJ0X2JpdHJhdGVzLnB1c2hf
YmFjayhzdHJlYW1fYml0cmF0ZSk7CiAgIH0KIAotICBzdGQ6OnN0cmluZyBpbXBsZW1lbnRhdGlv
bl9uYW1lOworICBlbmNvZGVyX2luZm9fLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSB0cnVlOwor
ICBlbmNvZGVyX2luZm9fLnNjYWxpbmdfc2V0dGluZ3MudGhyZXNob2xkcyA9IGFic2w6Om51bGxv
cHQ7CiAgIC8vIENyZWF0ZSB8bnVtYmVyX29mX3N0cmVhbXN8IG9mIGVuY29kZXIgaW5zdGFuY2Vz
IGFuZCBpbml0IHRoZW0uCiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyX29mX3N0cmVhbXM7
ICsraSkgewogICAgIFZpZGVvQ29kZWMgc3RyZWFtX2NvZGVjOwpAQCAtMjEyLDYgKzIxMyw3IEBA
IGludCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6SW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVj
KiBpbnN0LAogICAgIGlmICghZG9pbmdfc2ltdWxjYXN0KSB7CiAgICAgICBzdHJlYW1fY29kZWMg
PSBjb2RlY187CiAgICAgICBzdHJlYW1fY29kZWMubnVtYmVyT2ZTaW11bGNhc3RTdHJlYW1zID0g
MTsKKwogICAgIH0gZWxzZSB7CiAgICAgICAvLyBDYXAgc3RhcnQgYml0cmF0ZSB0byB0aGUgbWlu
IGJpdHJhdGUgaW4gb3JkZXIgdG8gYXZvaWQgc3RyYW5nZSBjb2RlYwogICAgICAgLy8gYmVoYXZp
b3IuIFNpbmNlIHNlbmRpbmcgd2lsbCBiZSBmYWxzZSwgdGhpcyBzaG91bGQgbm90IG1hdHRlci4K
QEAgLTI0Nyw2ICsyNDksNyBAQCBpbnQgU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXI6OkluaXRFbmNv
ZGUoY29uc3QgVmlkZW9Db2RlYyogaW5zdCwKICAgICAgIFJlbGVhc2UoKTsKICAgICAgIHJldHVy
biByZXQ7CiAgICAgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRJbWFnZUNhbGxiYWNr
PiBjYWxsYmFjaygKICAgICAgICAgbmV3IEFkYXB0ZXJFbmNvZGVkSW1hZ2VDYWxsYmFjayh0aGlz
LCBpKSk7CiAgICAgZW5jb2Rlci0+UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKGNhbGxi
YWNrLmdldCgpKTsKQEAgLTI1NCwxNyArMjU3LDQ1IEBAIGludCBTaW11bGNhc3RFbmNvZGVyQWRh
cHRlcjo6SW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBpbnN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2NvZGVjLndpZHRoLCBzdHJlYW1fY29kZWMuaGVpZ2h0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9zdHJlYW0pOwogCi0gICAgaWYgKGkg
IT0gMCkgewotICAgICAgaW1wbGVtZW50YXRpb25fbmFtZSArPSAiLCAiOworICAgIGlmICghZG9p
bmdfc2ltdWxjYXN0KSB7CisgICAgICAvLyBXaXRob3V0IHNpbXVsY2FzdCwganVzdCBwYXNzIHRo
cm91Z2ggdGhlIGVuY29kZXIgaW5mbyBmcm9tIHRoZSBvbmUKKyAgICAgIC8vIGFjdGl2ZSBlbmNv
ZGVyLgorICAgICAgZW5jb2Rlcl9pbmZvXyA9IHN0cmVhbWluZm9zX1swXS5lbmNvZGVyLT5HZXRF
bmNvZGVySW5mbygpOworICAgIH0gZWxzZSB7CisgICAgICBjb25zdCBFbmNvZGVySW5mbyBlbmNv
ZGVyX2ltcGxfaW5mbyA9CisgICAgICAgICAgc3RyZWFtaW5mb3NfW2ldLmVuY29kZXItPkdldEVu
Y29kZXJJbmZvKCk7CisKKyAgICAgIGlmIChpID09IDApIHsKKyAgICAgICAgLy8gUXVhbGl0eSBz
Y2FsaW5nIG5vdCBlbmFibGVkIGZvciBzaW11bGNhc3QuCisgICAgICAgIGVuY29kZXJfaW5mb18u
c2NhbGluZ19zZXR0aW5ncyA9IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjprT2ZmOwor
CisgICAgICAgIC8vIEVuY29kZXIgbmFtZSBpbmRpY2F0ZXMgbmFtZXMgb2YgYWxsIHN1Yi1lbmNv
ZGVycy4KKyAgICAgICAgZW5jb2Rlcl9pbmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lID0gIlNpbXVs
Y2FzdEVuY29kZXJBZGFwdGVyICgiOworICAgICAgICBlbmNvZGVyX2luZm9fLmltcGxlbWVudGF0
aW9uX25hbWUgKz0KKyAgICAgICAgICAgIGVuY29kZXJfaW1wbF9pbmZvLmltcGxlbWVudGF0aW9u
X25hbWU7CisKKyAgICAgICAgZW5jb2Rlcl9pbmZvXy5zdXBwb3J0c19uYXRpdmVfaGFuZGxlID0K
KyAgICAgICAgICAgIGVuY29kZXJfaW1wbF9pbmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGU7Cisg
ICAgICAgIGVuY29kZXJfaW5mb18uaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyID0KKyAgICAg
ICAgICAgIGVuY29kZXJfaW1wbF9pbmZvLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcjsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGVuY29kZXJfaW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSAr
PSAiLCAiOworICAgICAgICBlbmNvZGVyX2luZm9fLmltcGxlbWVudGF0aW9uX25hbWUgKz0KKyAg
ICAgICAgICAgIGVuY29kZXJfaW1wbF9pbmZvLmltcGxlbWVudGF0aW9uX25hbWU7CisKKyAgICAg
ICAgLy8gTmF0aXZlIGhhbmRsZSBzdXBwb3J0ZWQgb25seSBpZiBhbGwgZW5jb2RlcnMgc3VwcG9y
dHMgaXQuCisgICAgICAgIGVuY29kZXJfaW5mb18uc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSAmPQor
ICAgICAgICAgICAgZW5jb2Rlcl9pbXBsX2luZm8uc3VwcG9ydHNfbmF0aXZlX2hhbmRsZTsKKwor
ICAgICAgICAvLyBUcnVzdGVkIHJhdGUgY29udHJvbGxlciBvbmx5IGlmIGFsbCBlbmNvZGVycyBo
YXZlIGl0LgorICAgICAgICBlbmNvZGVyX2luZm9fLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxl
ciAmPQorICAgICAgICAgICAgZW5jb2Rlcl9pbXBsX2luZm8uaGFzX3RydXN0ZWRfcmF0ZV9jb250
cm9sbGVyOworICAgICAgfQogICAgIH0KLSAgICBpbXBsZW1lbnRhdGlvbl9uYW1lICs9IHN0cmVh
bWluZm9zX1tpXS5lbmNvZGVyLT5JbXBsZW1lbnRhdGlvbk5hbWUoKTsKICAgfQogCiAgIGlmIChk
b2luZ19zaW11bGNhc3QpIHsKLSAgICBpbXBsZW1lbnRhdGlvbl9uYW1lXyA9Ci0gICAgICAgICJT
aW11bGNhc3RFbmNvZGVyQWRhcHRlciAoIiArIGltcGxlbWVudGF0aW9uX25hbWUgKyAiKSI7Ci0g
IH0gZWxzZSB7Ci0gICAgaW1wbGVtZW50YXRpb25fbmFtZV8gPSBpbXBsZW1lbnRhdGlvbl9uYW1l
OworICAgIGVuY29kZXJfaW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSArPSAiKSI7CiAgIH0KIAog
ICAvLyBUbyBzYXZlIG1lbW9yeSwgZG9uJ3Qgc3RvcmUgZW5jb2RlcnMgdGhhdCB3ZSBkb24ndCB1
c2UuCkBAIC0zNzcsMTUgKzQwOCw2IEBAIGludCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6UmVn
aXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKAogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVD
X09LOwogfQogCi1pbnQgU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXI6OlNldENoYW5uZWxQYXJhbWV0
ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJ0dCkgewotICBSVENfRENIRUNLX0NBTExFRF9T
RVFVRU5USUFMTFkoJmVuY29kZXJfcXVldWVfKTsKLSAgZm9yIChzaXplX3Qgc3RyZWFtX2lkeCA9
IDA7IHN0cmVhbV9pZHggPCBzdHJlYW1pbmZvc18uc2l6ZSgpOyArK3N0cmVhbV9pZHgpIHsKLSAg
ICBzdHJlYW1pbmZvc19bc3RyZWFtX2lkeF0uZW5jb2Rlci0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMo
cGFja2V0X2xvc3MsIHJ0dCk7Ci0gIH0KLSAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsK
LX0KLQogaW50IFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpTZXRSYXRlQWxsb2NhdGlvbigKICAg
ICBjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlLAogICAgIHVpbnQzMl90IG5l
d19mcmFtZXJhdGUpIHsKQEAgLTQ1Miw3ICs0NzQsNiBAQCBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6
UmVzdWx0IFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpPbkVuY29kZWRJbWFnZSgKICAgICBjb25z
dCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKSB7CiAgIEVuY29kZWRJbWFn
ZSBzdHJlYW1faW1hZ2UoZW5jb2RlZEltYWdlKTsKICAgQ29kZWNTcGVjaWZpY0luZm8gc3RyZWFt
X2NvZGVjX3NwZWNpZmljID0gKmNvZGVjU3BlY2lmaWNJbmZvOwotICBzdHJlYW1fY29kZWNfc3Bl
Y2lmaWMuY29kZWNfbmFtZSA9IGltcGxlbWVudGF0aW9uX25hbWVfLmNfc3RyKCk7CiAKICAgc3Ry
ZWFtX2ltYWdlLlNldFNwYXRpYWxJbmRleChzdHJlYW1faWR4KTsKIApAQCAtNTE3LDMyICs1Mzgs
OCBAQCB2b2lkIFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpEZXN0cm95U3RvcmVkRW5jb2RlcnMo
KSB7CiAgIH0KIH0KIAotYm9vbCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6U3VwcG9ydHNOYXRp
dmVIYW5kbGUoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmZW5j
b2Rlcl9xdWV1ZV8pOwotICAvLyBXZSBzaG91bGQgbm90IGJlIGNhbGxpbmcgdGhpcyBtZXRob2Qg
YmVmb3JlIHN0cmVhbWluZm9zXyBhcmUgY29uZmlndXJlZC4KLSAgUlRDX0RDSEVDSyghc3RyZWFt
aW5mb3NfLmVtcHR5KCkpOwotICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbWluZm8gOiBzdHJlYW1p
bmZvc18pIHsKLSAgICBpZiAoIXN0cmVhbWluZm8uZW5jb2Rlci0+U3VwcG9ydHNOYXRpdmVIYW5k
bGUoKSkgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotICByZXR1cm4gdHJ1ZTsK
LX0KLQotVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgU2ltdWxjYXN0RW5jb2RlckFkYXB0
ZXI6OkdldFNjYWxpbmdTZXR0aW5ncygpCi0gICAgY29uc3QgewotICAvLyBUT0RPKGJyYW5kdHIp
OiBJbnZlc3RpZ2F0ZSB3aHkgdGhlIHNlcXVlbmNlIGNoZWNrZXIgYmVsb3cgZmFpbHMgb24gbWFj
LgotICAvLyBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJmVuY29kZXJfcXVldWVfKTsK
LSAgLy8gVHVybiBvZmYgcXVhbGl0eSBzY2FsaW5nIGZvciBzaW11bGNhc3QuCi0gIGlmICghSW5p
dGlhbGl6ZWQoKSB8fCBOdW1iZXJPZlN0cmVhbXMoY29kZWNfKSAhPSAxKSB7Ci0gICAgcmV0dXJu
IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjprT2ZmOwotICB9Ci0gIHJldHVybiBzdHJl
YW1pbmZvc19bMF0uZW5jb2Rlci0+R2V0U2NhbGluZ1NldHRpbmdzKCk7Ci19Ci0KLWNvbnN0IGNo
YXIqIFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7
Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmZW5jb2Rlcl9xdWV1ZV8pOwotICBy
ZXR1cm4gaW1wbGVtZW50YXRpb25fbmFtZV8uY19zdHIoKTsKK1ZpZGVvRW5jb2Rlcjo6RW5jb2Rl
ckluZm8gU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXI6OkdldEVuY29kZXJJbmZvKCkgY29uc3Qgewor
ICByZXR1cm4gZW5jb2Rlcl9pbmZvXzsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFw
dGVyLmgKaW5kZXggNTI2NDNhYTc5YjE2MjcwMDE5ZjU5NmU3ODlkYWFlOTk1OTFhOTRiNS4uNzgz
YzM0MmQ2YjlmYzRhMjg5YmU3NzU4YWY5M2FkYzY0ZGRkN2MzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2Fz
dF9lbmNvZGVyX2FkYXB0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5oCkBAIC0x
OSw3ICsxOSw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9v
cHRpb25hbC5oIgotI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuY29kZXJmYWN0
b3J5LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCiAj
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyLmgiCkBAIC00OCw3ICs0OCw2IEBAIGNsYXNzIFNpbXVs
Y2FzdEVuY29kZXJBZGFwdGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgICAgICAgICAgICAg
Y29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCiAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiogZnJhbWVfdHlwZXMpIG92ZXJyaWRlOwog
ICBpbnQgUmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNhbGxiYWNr
KiBjYWxsYmFjaykgb3ZlcnJpZGU7Ci0gIGludCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJf
dCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwogICBpbnQgU2V0UmF0ZUFsbG9j
YXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IG5ld19mcmFtZXJhdGUpIG92ZXJyaWRlOwogCkBAIC02MSwx
MCArNjAsNyBAQCBjbGFzcyBTaW11bGNhc3RFbmNvZGVyQWRhcHRlciA6IHB1YmxpYyBWaWRlb0Vu
Y29kZXIgewogICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2lu
Zm8sCiAgICAgICBjb25zdCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKTsK
IAotICBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBj
b25zdCBvdmVycmlkZTsKLQotICBib29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRl
OworICBFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0IG92ZXJyaWRlOwogCiAgcHJp
dmF0ZToKICAgc3RydWN0IFN0cmVhbUluZm8gewpAQCAtMTA0LDcgKzEwMCw3IEBAIGNsYXNzIFNp
bXVsY2FzdEVuY29kZXJBZGFwdGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgIFZpZGVvQ29k
ZWMgY29kZWNfOwogICBzdGQ6OnZlY3RvcjxTdHJlYW1JbmZvPiBzdHJlYW1pbmZvc187CiAgIEVu
Y29kZWRJbWFnZUNhbGxiYWNrKiBlbmNvZGVkX2NvbXBsZXRlX2NhbGxiYWNrXzsKLSAgc3RkOjpz
dHJpbmcgaW1wbGVtZW50YXRpb25fbmFtZV87CisgIEVuY29kZXJJbmZvIGVuY29kZXJfaW5mb187
CiAKICAgLy8gVXNlZCBmb3IgY2hlY2tpbmcgdGhlIHNpbmdsZS10aHJlYWRlZCBhY2Nlc3Mgb2Yg
dGhlIGVuY29kZXIgaW50ZXJmYWNlLgogICBydGM6OlNlcXVlbmNlZFRhc2tDaGVja2VyIGVuY29k
ZXJfcXVldWVfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXJfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdp
bmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlcl91bml0dGVzdC5jYwppbmRleCA1YjdkMTg1Yjhj
YzZlYmFhMmMyNDQ4ODBlYzM0ZTA1ZTYwZmI4ZmMzLi41OTU0MTc1NWZhNTFkYzM3N2I2ZTNlNjM3
MTBiNDMzZWJjMzM0YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlcl91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlcl91bml0dGVzdC5jYwpAQCAtMTUs
MTYgKzE1LDE3IEBACiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAi
YXBpL3Rlc3QvY3JlYXRlX3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUuaCIKICNpbmNsdWRlICJhcGkv
dGVzdC9zaW11bGNhc3RfdGVzdF9maXh0dXJlLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8v
ZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3Qvdmlk
ZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92
aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92
aWRlb19mcmFtZV9idWZmZXIuaCIKKyNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRz
LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZW5jb2RlcmZhY3RvcnkuaCIKICNp
bmNsdWRlICJtZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3Rf
Zml4dHVyZV9pbXBsLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2Zh
Y3RvcnkuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5o
IgogI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKQEAg
LTU1LDcgKzU2LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFNpbXVsY2FzdFRlc3RGaXh0dXJlPiBDcmVh
dGVTcGVjaWZpY1NpbXVsY2FzdFRlc3RGaXh0dXJlKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptb3ZlKGRlY29kZXJfZmFjdG9yeSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTZHBWaWRlb0Zvcm1hdChjcmlja2V0OjprVnA4Q29kZWNOYW1l
KSk7CiB9Ci0KIH0gIC8vIG5hbWVzcGFjZQogCiBURVNUKFNpbXVsY2FzdEVuY29kZXJBZGFwdGVy
U2ltdWxjYXN0VGVzdCwgVGVzdEtleUZyYW1lUmVxdWVzdHNPbkFsbFN0cmVhbXMpIHsKQEAgLTE0
NCw2ICsxNDQsMTIgQEAgVEVTVChTaW11bGNhc3RFbmNvZGVyQWRhcHRlclNpbXVsY2FzdFRlc3Qs
CiAgIGZpeHR1cmUtPlRlc3RTcGF0aW9UZW1wb3JhbExheWVyczMyMVBhdHRlcm5FbmNvZGVyKCk7
CiB9CiAKK1RFU1QoU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJTaW11bGNhc3RUZXN0LCBUZXN0RGVj
b2RlV2lkdGhIZWlnaHRTZXQpIHsKKyAgSW50ZXJuYWxFbmNvZGVyRmFjdG9yeSBpbnRlcm5hbF9l
bmNvZGVyX2ZhY3Rvcnk7CisgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVNwZWNpZmljU2ltdWxjYXN0
VGVzdEZpeHR1cmUoJmludGVybmFsX2VuY29kZXJfZmFjdG9yeSk7CisgIGZpeHR1cmUtPlRlc3RE
ZWNvZGVXaWR0aEhlaWdodFNldCgpOworfQorCiBjbGFzcyBNb2NrVmlkZW9FbmNvZGVyOwogCiBj
bGFzcyBNb2NrVmlkZW9FbmNvZGVyRmFjdG9yeSA6IHB1YmxpYyBWaWRlb0VuY29kZXJGYWN0b3J5
IHsKQEAgLTE3MCw3ICsxNzYsOSBAQCBjbGFzcyBNb2NrVmlkZW9FbmNvZGVyRmFjdG9yeSA6IHB1
YmxpYyBWaWRlb0VuY29kZXJGYWN0b3J5IHsKIGNsYXNzIE1vY2tWaWRlb0VuY29kZXIgOiBwdWJs
aWMgVmlkZW9FbmNvZGVyIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IE1vY2tWaWRlb0VuY29kZXIo
TW9ja1ZpZGVvRW5jb2RlckZhY3RvcnkqIGZhY3RvcnkpCi0gICAgICA6IGZhY3RvcnlfKGZhY3Rv
cnkpLCBjYWxsYmFja18obnVsbHB0cikge30KKyAgICAgIDogZmFjdG9yeV8oZmFjdG9yeSksCisg
ICAgICAgIHNjYWxpbmdfc2V0dGluZ3NfKFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjpr
T2ZmKSwKKyAgICAgICAgY2FsbGJhY2tfKG51bGxwdHIpIHt9CiAKICAgLy8gVE9ETyhuaXNzZSk6
IFZhbGlkIG92ZXJyaWRlcyBjb21tZW50ZWQgb3V0LCBiZWNhdXNlIHRoZSBnbW9jawogICAvLyBt
ZXRob2RzIGRvbid0IHVzZSBhbnkgb3ZlcnJpZGUgZGVjbGFyYXRpb25zLCBhbmQgd2Ugd2FudCB0
byBhdm9pZApAQCAtMjAzLDEwICsyMTEsMTMgQEAgY2xhc3MgTW9ja1ZpZGVvRW5jb2RlciA6IHB1
YmxpYyBWaWRlb0VuY29kZXIgewogICAgIHJldHVybiAwOwogICB9CiAKLSAgTU9DS19NRVRIT0Qy
KFNldENoYW5uZWxQYXJhbWV0ZXJzLCBpbnQzMl90KHVpbnQzMl90IHBhY2tldExvc3MsIGludDY0
X3QgcnR0KSk7Ci0KLSAgYm9vbCBTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0IC8qIG92ZXJy
aWRlICovIHsKLSAgICByZXR1cm4gc3VwcG9ydHNfbmF0aXZlX2hhbmRsZV87CisgIEVuY29kZXJJ
bmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgIEVuY29kZXJJbmZvIGlu
Zm87CisgICAgaW5mby5zdXBwb3J0c19uYXRpdmVfaGFuZGxlID0gc3VwcG9ydHNfbmF0aXZlX2hh
bmRsZV87CisgICAgaW5mby5pbXBsZW1lbnRhdGlvbl9uYW1lID0gaW1wbGVtZW50YXRpb25fbmFt
ZV87CisgICAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0gc2NhbGluZ19zZXR0aW5nc187CisgICAg
aW5mby5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIgPSBoYXNfdHJ1c3RlZF9yYXRlX2NvbnRy
b2xsZXJfOworICAgIHJldHVybiBpbmZvOwogICB9CiAKICAgdmlydHVhbCB+TW9ja1ZpZGVvRW5j
b2RlcigpIHsgZmFjdG9yeV8tPkRlc3Ryb3lWaWRlb0VuY29kZXIodGhpcyk7IH0KQEAgLTIyOCwx
NyArMjM5LDMwIEBAIGNsYXNzIE1vY2tWaWRlb0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVy
IHsKICAgICBzdXBwb3J0c19uYXRpdmVfaGFuZGxlXyA9IGVuYWJsZWQ7CiAgIH0KIAorICB2b2lk
IHNldF9pbXBsZW1lbnRhdGlvbl9uYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7CisgICAg
aW1wbGVtZW50YXRpb25fbmFtZV8gPSBuYW1lOworICB9CisKICAgdm9pZCBzZXRfaW5pdF9lbmNv
ZGVfcmV0dXJuX3ZhbHVlKGludDMyX3QgdmFsdWUpIHsKICAgICBpbml0X2VuY29kZV9yZXR1cm5f
dmFsdWVfID0gdmFsdWU7CiAgIH0KIAotICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGxhc3Rfc2V0
X2JpdHJhdGUoKSBjb25zdCB7IHJldHVybiBsYXN0X3NldF9iaXRyYXRlXzsgfQorICB2b2lkIHNl
dF9zY2FsaW5nX3NldHRpbmdzKGNvbnN0IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzJiBz
ZXR0aW5ncykgeworICAgIHNjYWxpbmdfc2V0dGluZ3NfID0gc2V0dGluZ3M7CisgIH0KIAotICBN
T0NLX0NPTlNUX01FVEhPRDAoSW1wbGVtZW50YXRpb25OYW1lLCBjb25zdCBjaGFyKigpKTsKKyAg
dm9pZCBzZXRfaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKGJvb2wgdHJ1c3RlZCkgeworICAg
IGhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcl8gPSB0cnVzdGVkOworICB9CisKKyAgVmlkZW9C
aXRyYXRlQWxsb2NhdGlvbiBsYXN0X3NldF9iaXRyYXRlKCkgY29uc3QgeyByZXR1cm4gbGFzdF9z
ZXRfYml0cmF0ZV87IH0KIAogIHByaXZhdGU6CiAgIE1vY2tWaWRlb0VuY29kZXJGYWN0b3J5KiBj
b25zdCBmYWN0b3J5XzsKICAgYm9vbCBzdXBwb3J0c19uYXRpdmVfaGFuZGxlXyA9IGZhbHNlOwor
ICBzdGQ6OnN0cmluZyBpbXBsZW1lbnRhdGlvbl9uYW1lXyA9ICJ1bmtub3duIjsKKyAgVmlkZW9F
bmNvZGVyOjpTY2FsaW5nU2V0dGluZ3Mgc2NhbGluZ19zZXR0aW5nc187CisgIGJvb2wgaGFzX3Ry
dXN0ZWRfcmF0ZV9jb250cm9sbGVyXyA9IGZhbHNlOwogICBpbnQzMl90IGluaXRfZW5jb2RlX3Jl
dHVybl92YWx1ZV8gPSAwOwogICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGxhc3Rfc2V0X2JpdHJh
dGVfOwogCkBAIC0yNjAsNyArMjg0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4g
TW9ja1ZpZGVvRW5jb2RlckZhY3Rvcnk6OkNyZWF0ZVZpZGVvRW5jb2RlcigKICAgY29uc3QgY2hh
ciogZW5jb2Rlcl9uYW1lID0gZW5jb2Rlcl9uYW1lc18uZW1wdHkoKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPyAiY29kZWNfaW1wbGVtZW50YXRpb25fbmFtZSIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogZW5jb2Rlcl9uYW1lc19bZW5jb2RlcnNfLnNpemUo
KV07Ci0gIE9OX0NBTEwoKmVuY29kZXIsIEltcGxlbWVudGF0aW9uTmFtZSgpKS5XaWxsQnlEZWZh
dWx0KFJldHVybihlbmNvZGVyX25hbWUpKTsKKyAgZW5jb2Rlci0+c2V0X2ltcGxlbWVudGF0aW9u
X25hbWUoZW5jb2Rlcl9uYW1lKTsKICAgZW5jb2RlcnNfLnB1c2hfYmFjayhlbmNvZGVyLmdldCgp
KTsKICAgcmV0dXJuIGVuY29kZXI7CiB9CkBAIC0zMDIsMTUgKzMyNiw2IEBAIGNsYXNzIFRlc3RT
aW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2VIZWxwZXIgewogICAgIHJldHVybiBuZXcgU2ltdWxj
YXN0RW5jb2RlckFkYXB0ZXIoZmFjdG9yeV8uZ2V0KCksIFNkcFZpZGVvRm9ybWF0KCJWUDgiKSk7
CiAgIH0KIAotICB2b2lkIEV4cGVjdENhbGxTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBw
YWNrZXRMb3NzLCBpbnQ2NF90IHJ0dCkgewotICAgIEVYUEVDVF9UUlVFKCFmYWN0b3J5Xy0+ZW5j
b2RlcnMoKS5lbXB0eSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZhY3RvcnlfLT5l
bmNvZGVycygpLnNpemUoKTsgKytpKSB7Ci0gICAgICBFWFBFQ1RfQ0FMTCgqZmFjdG9yeV8tPmVu
Y29kZXJzKClbaV0sCi0gICAgICAgICAgICAgICAgICBTZXRDaGFubmVsUGFyYW1ldGVycyhwYWNr
ZXRMb3NzLCBydHQpKQotICAgICAgICAgIC5UaW1lcygxKTsKLSAgICB9Ci0gIH0KLQogICBNb2Nr
VmlkZW9FbmNvZGVyRmFjdG9yeSogZmFjdG9yeSgpIHsgcmV0dXJuIGZhY3RvcnlfLmdldCgpOyB9
CiAKICBwcml2YXRlOgpAQCAtNDU5LDE0ICs0NzQsNiBAQCBURVNUX0YoVGVzdFNpbXVsY2FzdEVu
Y29kZXJBZGFwdGVyRmFrZSwgUmVpbml0KSB7CiAgIEVYUEVDVF9FUSgwLCBhZGFwdGVyXy0+SW5p
dEVuY29kZSgmY29kZWNfLCAxLCAxMjAwKSk7CiB9CiAKLVRFU1RfRihUZXN0U2ltdWxjYXN0RW5j
b2RlckFkYXB0ZXJGYWtlLCBTZXRDaGFubmVsUGFyYW1ldGVycykgewotICBTZXR1cENvZGVjKCk7
Ci0gIGNvbnN0IHVpbnQzMl90IHBhY2tldExvc3MgPSA1OwotICBjb25zdCBpbnQ2NF90IHJ0dCA9
IDMwOwotICBoZWxwZXJfLT5FeHBlY3RDYWxsU2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0TG9z
cywgcnR0KTsKLSAgYWRhcHRlcl8tPlNldENoYW5uZWxQYXJhbWV0ZXJzKHBhY2tldExvc3MsIHJ0
dCk7Ci19Ci0KIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBFbmNvZGVk
Q2FsbGJhY2tGb3JEaWZmZXJlbnRFbmNvZGVycykgewogICBTZXR1cENvZGVjKCk7CiAKQEAgLTcy
OCw5ICs3MzUsMTEgQEAgVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2UsIFN1
cHBvcnRzTmF0aXZlSGFuZGxlRm9yU2luZ2xlU3RyZWFtcykgewogICBhZGFwdGVyXy0+UmVnaXN0
ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKHRoaXMpOwogICBBU1NFUlRfRVEoMXUsIGhlbHBlcl8t
PmZhY3RvcnkoKS0+ZW5jb2RlcnMoKS5zaXplKCkpOwogICBoZWxwZXJfLT5mYWN0b3J5KCktPmVu
Y29kZXJzKClbMF0tPnNldF9zdXBwb3J0c19uYXRpdmVfaGFuZGxlKHRydWUpOwotICBFWFBFQ1Rf
VFJVRShhZGFwdGVyXy0+U3VwcG9ydHNOYXRpdmVIYW5kbGUoKSk7CisgIEVYUEVDVF9FUSgwLCBh
ZGFwdGVyXy0+SW5pdEVuY29kZSgmY29kZWNfLCAxLCAxMjAwKSk7CisgIEVYUEVDVF9UUlVFKGFk
YXB0ZXJfLT5HZXRFbmNvZGVySW5mbygpLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUpOwogICBoZWxw
ZXJfLT5mYWN0b3J5KCktPmVuY29kZXJzKClbMF0tPnNldF9zdXBwb3J0c19uYXRpdmVfaGFuZGxl
KGZhbHNlKTsKLSAgRVhQRUNUX0ZBTFNFKGFkYXB0ZXJfLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgp
KTsKKyAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJfLT5Jbml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDAp
KTsKKyAgRVhQRUNUX0ZBTFNFKGFkYXB0ZXJfLT5HZXRFbmNvZGVySW5mbygpLnN1cHBvcnRzX25h
dGl2ZV9oYW5kbGUpOwogfQogCiBURVNUX0YoVGVzdFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyRmFr
ZSwgU2V0UmF0ZXNVbmRlck1pbkJpdHJhdGUpIHsKQEAgLTc2Myw3ICs3NzIsOCBAQCBURVNUX0Yo
VGVzdFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZSwgU2V0UmF0ZXNVbmRlck1pbkJpdHJhdGUp
IHsKIH0KIAogVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2UsIFN1cHBvcnRz
SW1wbGVtZW50YXRpb25OYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiU2ltdWxjYXN0RW5jb2RlckFk
YXB0ZXIiLCBhZGFwdGVyXy0+SW1wbGVtZW50YXRpb25OYW1lKCkpOworICBFWFBFQ1RfRVEoIlNp
bXVsY2FzdEVuY29kZXJBZGFwdGVyIiwKKyAgICAgICAgICAgIGFkYXB0ZXJfLT5HZXRFbmNvZGVy
SW5mbygpLmltcGxlbWVudGF0aW9uX25hbWUpOwogICBTaW11bGNhc3RUZXN0Rml4dHVyZUltcGw6
OkRlZmF1bHRTZXR0aW5ncygKICAgICAgICZjb2RlY18sIHN0YXRpY19jYXN0PGNvbnN0IGludCo+
KGtUZXN0VGVtcG9yYWxMYXllclByb2ZpbGUpLAogICAgICAga1ZpZGVvQ29kZWNWUDgpOwpAQCAt
NzczLDggKzc4Myw4IEBAIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBT
dXBwb3J0c0ltcGxlbWVudGF0aW9uTmFtZSkgewogICBlbmNvZGVyX25hbWVzLnB1c2hfYmFjaygi
Y29kZWMzIik7CiAgIGhlbHBlcl8tPmZhY3RvcnkoKS0+U2V0RW5jb2Rlck5hbWVzKGVuY29kZXJf
bmFtZXMpOwogICBFWFBFQ1RfRVEoMCwgYWRhcHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwg
MTIwMCkpOwotICBFWFBFQ1RfU1RSRVEoIlNpbXVsY2FzdEVuY29kZXJBZGFwdGVyIChjb2RlYzEs
IGNvZGVjMiwgY29kZWMzKSIsCi0gICAgICAgICAgICAgICBhZGFwdGVyXy0+SW1wbGVtZW50YXRp
b25OYW1lKCkpOworICBFWFBFQ1RfRVEoIlNpbXVsY2FzdEVuY29kZXJBZGFwdGVyIChjb2RlYzEs
IGNvZGVjMiwgY29kZWMzKSIsCisgICAgICAgICAgICBhZGFwdGVyXy0+R2V0RW5jb2RlckluZm8o
KS5pbXBsZW1lbnRhdGlvbl9uYW1lKTsKIAogICAvLyBTaW5nbGUgc3RyZWFtcyBzaG91bGQgbm90
IGV4cG9zZSAiU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXIiIGluIG5hbWUuCiAgIEVYUEVDVF9FUSgw
LCBhZGFwdGVyXy0+UmVsZWFzZSgpKTsKQEAgLTc4Miw3ICs3OTIsNyBAQCBURVNUX0YoVGVzdFNp
bXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZSwgU3VwcG9ydHNJbXBsZW1lbnRhdGlvbk5hbWUpIHsK
ICAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJfLT5Jbml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsK
ICAgYWRhcHRlcl8tPlJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayh0aGlzKTsKICAgQVNT
RVJUX0VRKDF1LCBoZWxwZXJfLT5mYWN0b3J5KCktPmVuY29kZXJzKCkuc2l6ZSgpKTsKLSAgRVhQ
RUNUX1NUUkVRKCJjb2RlYzEiLCBhZGFwdGVyXy0+SW1wbGVtZW50YXRpb25OYW1lKCkpOworICBF
WFBFQ1RfRVEoImNvZGVjMSIsIGFkYXB0ZXJfLT5HZXRFbmNvZGVySW5mbygpLmltcGxlbWVudGF0
aW9uX25hbWUpOwogfQogCiBURVNUX0YoVGVzdFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZSwK
QEAgLTc5OCwxMCArODA4LDExIEBAIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJG
YWtlLAogICAgIGVuY29kZXItPnNldF9zdXBwb3J0c19uYXRpdmVfaGFuZGxlKHRydWUpOwogICAv
LyBJZiBvbmUgZW5jb2RlciBkb2Vzbid0IHN1cHBvcnQgaXQsIHRoZW4gb3ZlcmFsbCBzdXBwb3J0
IGlzIGRpc2FibGVkLgogICBoZWxwZXJfLT5mYWN0b3J5KCktPmVuY29kZXJzKClbMF0tPnNldF9z
dXBwb3J0c19uYXRpdmVfaGFuZGxlKGZhbHNlKTsKLSAgRVhQRUNUX0ZBTFNFKGFkYXB0ZXJfLT5T
dXBwb3J0c05hdGl2ZUhhbmRsZSgpKTsKKyAgRVhQRUNUX0ZBTFNFKGFkYXB0ZXJfLT5HZXRFbmNv
ZGVySW5mbygpLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUpOwogICAvLyBPbmNlIGFsbCBkbywgdGhl
biB0aGUgYWRhcHRlciBjbGFpbXMgc3VwcG9ydC4KICAgaGVscGVyXy0+ZmFjdG9yeSgpLT5lbmNv
ZGVycygpWzBdLT5zZXRfc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSh0cnVlKTsKLSAgRVhQRUNUX1RS
VUUoYWRhcHRlcl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCkpOworICBFWFBFQ1RfRVEoMCwgYWRh
cHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwgMTIwMCkpOworICBFWFBFQ1RfVFJVRShhZGFw
dGVyXy0+R2V0RW5jb2RlckluZm8oKS5zdXBwb3J0c19uYXRpdmVfaGFuZGxlKTsKIH0KIAogLy8g
VE9ETyhuaXNzZSk6IFJldXNlIGRlZmluaXRpb24gaW4gd2VicnRjL3Rlc3QvZmFrZV90ZXh0dXJl
X2hhbmRsZS5oLgpAQCAtODM3LDcgKzg0OCw4IEBAIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2Rl
ckFkYXB0ZXJGYWtlLAogICBBU1NFUlRfRVEoM3UsIGhlbHBlcl8tPmZhY3RvcnkoKS0+ZW5jb2Rl
cnMoKS5zaXplKCkpOwogICBmb3IgKE1vY2tWaWRlb0VuY29kZXIqIGVuY29kZXIgOiBoZWxwZXJf
LT5mYWN0b3J5KCktPmVuY29kZXJzKCkpCiAgICAgZW5jb2Rlci0+c2V0X3N1cHBvcnRzX25hdGl2
ZV9oYW5kbGUodHJ1ZSk7Ci0gIEVYUEVDVF9UUlVFKGFkYXB0ZXJfLT5TdXBwb3J0c05hdGl2ZUhh
bmRsZSgpKTsKKyAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJfLT5Jbml0RW5jb2RlKCZjb2RlY18sIDEs
IDEyMDApKTsKKyAgRVhQRUNUX1RSVUUoYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCkuc3VwcG9y
dHNfbmF0aXZlX2hhbmRsZSk7CiAKICAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvRnJhbWVCdWZm
ZXI+IGJ1ZmZlcigKICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8RmFrZU5hdGl2ZUJ1
ZmZlck5vSTQyMD4oMTI4MCwgNzIwKSk7CkBAIC05NDgsNSArOTYwLDUwIEBAIFRFU1RfRihUZXN0
U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBBY3RpdmF0ZXNDb3JyZWN0U3RyZWFtc0luSW5p
dEVuY29kZSkgewogICBmcmFtZV90eXBlcy5yZXNpemUoMywga1ZpZGVvRnJhbWVLZXkpOwogICBF
WFBFQ1RfRVEoMCwgYWRhcHRlcl8tPkVuY29kZShpbnB1dF9mcmFtZSwgbnVsbHB0ciwgJmZyYW1l
X3R5cGVzKSk7CiB9CisKK1RFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBU
cnVzdGVkUmF0ZUNvbnRyb2wpIHsKKyAgLy8gU2V0IHVwIGNvbW1vbiBzZXR0aW5ncyBmb3IgdGhy
ZWUgc3RyZWFtcy4KKyAgU2ltdWxjYXN0VGVzdEZpeHR1cmVJbXBsOjpEZWZhdWx0U2V0dGluZ3Mo
CisgICAgICAmY29kZWNfLCBzdGF0aWNfY2FzdDxjb25zdCBpbnQqPihrVGVzdFRlbXBvcmFsTGF5
ZXJQcm9maWxlKSwKKyAgICAgIGtWaWRlb0NvZGVjVlA4KTsKKyAgcmF0ZV9hbGxvY2F0b3JfLnJl
c2V0KG5ldyBTaW11bGNhc3RSYXRlQWxsb2NhdG9yKGNvZGVjXykpOworICBhZGFwdGVyXy0+UmVn
aXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKHRoaXMpOworCisgIC8vIE9ubHkgZW5vdWdoIHN0
YXJ0IGJpdHJhdGUgZm9yIHRoZSBsb3dlc3Qgc3RyZWFtLgorICBBU1NFUlRfRVEoM3UsIGNvZGVj
Xy5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMpOworICBjb2RlY18uc3RhcnRCaXRyYXRlID0gY29k
ZWNfLnNpbXVsY2FzdFN0cmVhbVswXS50YXJnZXRCaXRyYXRlICsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvZGVjXy5zaW11bGNhc3RTdHJlYW1bMV0ubWluQml0cmF0ZSAtIDE7CisKKyAgLy8g
SW5wdXQgZGF0YS4KKyAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvRnJhbWVCdWZmZXI+IGJ1ZmZl
cihJNDIwQnVmZmVyOjpDcmVhdGUoMTI4MCwgNzIwKSk7CisgIFZpZGVvRnJhbWUgaW5wdXRfZnJh
bWUoYnVmZmVyLCAxMDAsIDEwMDAsIGtWaWRlb1JvdGF0aW9uXzE4MCk7CisKKyAgLy8gTm8gZW5j
b2RlciB0cnVzdGVkLCBzbyBzaW11bGNhc3QgYWRhcHRlciBzaG91bGQgbm90IGJlIGVpdGhlci4K
KyAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJfLT5Jbml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsK
KyAgRVhQRUNUX0ZBTFNFKGFkYXB0ZXJfLT5HZXRFbmNvZGVySW5mbygpLmhhc190cnVzdGVkX3Jh
dGVfY29udHJvbGxlcik7CisKKyAgLy8gRW5jb2RlIHdpdGggdGhyZWUgc3RyZWFtcy4KKyAgc3Rk
Ojp2ZWN0b3I8TW9ja1ZpZGVvRW5jb2Rlcio+IG9yaWdpbmFsX2VuY29kZXJzID0KKyAgICAgIGhl
bHBlcl8tPmZhY3RvcnkoKS0+ZW5jb2RlcnMoKTsKKworICAvLyBBbGwgZW5jb2RlcnMgYXJlIHRy
dXN0ZWQsIHNvIHNpbXVsY2FzdCBhZGFwdGVyIHNob3VsZCBiZSB0b28uCisgIG9yaWdpbmFsX2Vu
Y29kZXJzWzBdLT5zZXRfaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKHRydWUpOworICBvcmln
aW5hbF9lbmNvZGVyc1sxXS0+c2V0X2hhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcih0cnVlKTsK
KyAgb3JpZ2luYWxfZW5jb2RlcnNbMl0tPnNldF9oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIo
dHJ1ZSk7CisgIEVYUEVDVF9FUSgwLCBhZGFwdGVyXy0+SW5pdEVuY29kZSgmY29kZWNfLCAxLCAx
MjAwKSk7CisgIEVYUEVDVF9UUlVFKGFkYXB0ZXJfLT5HZXRFbmNvZGVySW5mbygpLmhhc190cnVz
dGVkX3JhdGVfY29udHJvbGxlcik7CisKKyAgLy8gT25lIGVuY29kZXIgbm90IHRydXN0ZWQsIHNv
IHNpbXVsY2FzdCBhZGFwdGVyIHNob3VsZCBub3QgYmUgZWl0aGVyLgorICBvcmlnaW5hbF9lbmNv
ZGVyc1syXS0+c2V0X2hhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcihmYWxzZSk7CisgIEVYUEVD
VF9FUSgwLCBhZGFwdGVyXy0+SW5pdEVuY29kZSgmY29kZWNfLCAxLCAxMjAwKSk7CisgIEVYUEVD
VF9GQUxTRShhZGFwdGVyXy0+R2V0RW5jb2RlckluZm8oKS5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRy
b2xsZXIpOworCisgIC8vIE5vIGVuY29kZXIgdHJ1c3RlZCwgc28gc2ltdWxjYXN0IGFkYXB0ZXIg
c2hvdWxkIG5vdCBiZSBlaXRoZXIuCisgIG9yaWdpbmFsX2VuY29kZXJzWzBdLT5zZXRfaGFzX3Ry
dXN0ZWRfcmF0ZV9jb250cm9sbGVyKGZhbHNlKTsKKyAgb3JpZ2luYWxfZW5jb2RlcnNbMV0tPnNl
dF9oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIoZmFsc2UpOworICBFWFBFQ1RfRVEoMCwgYWRh
cHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwgMTIwMCkpOworICBFWFBFQ1RfRkFMU0UoYWRh
cHRlcl8tPkdldEVuY29kZXJJbmZvKCkuaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKTsKK30K
KwogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS9zaW11bGNhc3RfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0X3VuaXR0ZXN0LmNjCmluZGV4IGY0MTYz
Njg2OTc4OTkzMTczOWQ2ZjkzYWIwOGUxNmJiNTk4NjYwZmMuLjBjMjc4MTYwNjg5ZGZlMzYzOWNm
OGQwOTE0OTkxMDI0ZDVjMjc2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5l
L3NpbXVsY2FzdF91bml0dGVzdC5jYwpAQCAtMTc5LDcgKzE3OSw3IEBAIFRFU1QoU2ltdWxjYXN0
VGVzdCwgR2V0Q29uZmlnV2l0aE5vcm1hbGl6ZWRSZXNvbHV0aW9uKSB7CiAgICAgICBrTWF4TGF5
ZXJzLCA2NDAgKyAxLCAzNjAgKyAxLCBrTWF4Qml0cmF0ZUJwcywga0JpdHJhdGVQcmlvcml0eSwg
a1FwTWF4LAogICAgICAga01heEZwcywgIWtTY3JlZW5zaGFyZSk7CiAKLSAgLy8gTXVzdCBiZSBk
aXZpZGFibGUgYnkgfDIgXiAobnVtX2xheWVycyAtIDEpfC4KKyAgLy8gTXVzdCBiZSBkaXZpc2li
bGUgYnkgfDIgXiAobnVtX2xheWVycyAtIDEpfC4KICAgRVhQRUNUX0VRKGtNYXhMYXllcnMsIHN0
cmVhbXMuc2l6ZSgpKTsKICAgRVhQRUNUX0VRKDMyMHUsIHN0cmVhbXNbMF0ud2lkdGgpOwogICBF
WFBFQ1RfRVEoMTgwdSwgc3RyZWFtc1swXS5oZWlnaHQpOwpAQCAtMTg3LDYgKzE4Nyw0MCBAQCBU
RVNUKFNpbXVsY2FzdFRlc3QsIEdldENvbmZpZ1dpdGhOb3JtYWxpemVkUmVzb2x1dGlvbikgewog
ICBFWFBFQ1RfRVEoMzYwdSwgc3RyZWFtc1sxXS5oZWlnaHQpOwogfQogCitURVNUKFNpbXVsY2Fz
dFRlc3QsIEdldENvbmZpZ1dpdGhOb3JtYWxpemVkUmVzb2x1dGlvbkRpdmlzaWJsZUJ5NCkgewor
ICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisgICAgICAiV2ViUlRDLU5v
cm1hbGl6ZVNpbXVsY2FzdFJlc29sdXRpb24vRW5hYmxlZC0yLyIpOworCisgIGNvbnN0IHNpemVf
dCBrTWF4TGF5ZXJzID0gMjsKKyAgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+IHN0cmVhbXMgPSBj
cmlja2V0OjpHZXRTaW11bGNhc3RDb25maWcoCisgICAgICBrTWF4TGF5ZXJzLCA3MDksIDUwMSwg
a01heEJpdHJhdGVCcHMsIGtCaXRyYXRlUHJpb3JpdHksIGtRcE1heCwga01heEZwcywKKyAgICAg
ICFrU2NyZWVuc2hhcmUpOworCisgIC8vIE11c3QgYmUgZGl2aXNpYmxlIGJ5IHwyIF4gMnwuCisg
IEVYUEVDVF9FUShrTWF4TGF5ZXJzLCBzdHJlYW1zLnNpemUoKSk7CisgIEVYUEVDVF9FUSgzNTR1
LCBzdHJlYW1zWzBdLndpZHRoKTsKKyAgRVhQRUNUX0VRKDI1MHUsIHN0cmVhbXNbMF0uaGVpZ2h0
KTsKKyAgRVhQRUNUX0VRKDcwOHUsIHN0cmVhbXNbMV0ud2lkdGgpOworICBFWFBFQ1RfRVEoNTAw
dSwgc3RyZWFtc1sxXS5oZWlnaHQpOworfQorCitURVNUKFNpbXVsY2FzdFRlc3QsIEdldENvbmZp
Z1dpdGhOb3JtYWxpemVkUmVzb2x1dGlvbkRpdmlzaWJsZUJ5OCkgeworICB0ZXN0OjpTY29wZWRG
aWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisgICAgICAiV2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2Fz
dFJlc29sdXRpb24vRW5hYmxlZC0zLyIpOworCisgIGNvbnN0IHNpemVfdCBrTWF4TGF5ZXJzID0g
MjsKKyAgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+IHN0cmVhbXMgPSBjcmlja2V0OjpHZXRTaW11
bGNhc3RDb25maWcoCisgICAgICBrTWF4TGF5ZXJzLCA3MDksIDUwMSwga01heEJpdHJhdGVCcHMs
IGtCaXRyYXRlUHJpb3JpdHksIGtRcE1heCwga01heEZwcywKKyAgICAgICFrU2NyZWVuc2hhcmUp
OworCisgIC8vIE11c3QgYmUgZGl2aXNpYmxlIGJ5IHwyIF4gM3wuCisgIEVYUEVDVF9FUShrTWF4
TGF5ZXJzLCBzdHJlYW1zLnNpemUoKSk7CisgIEVYUEVDVF9FUSgzNTJ1LCBzdHJlYW1zWzBdLndp
ZHRoKTsKKyAgRVhQRUNUX0VRKDI0OHUsIHN0cmVhbXNbMF0uaGVpZ2h0KTsKKyAgRVhQRUNUX0VR
KDcwNHUsIHN0cmVhbXNbMV0ud2lkdGgpOworICBFWFBFQ1RfRVEoNDk2dSwgc3RyZWFtc1sxXS5o
ZWlnaHQpOworfQorCiBURVNUKFNpbXVsY2FzdFRlc3QsIEdldENvbmZpZ0ZvclNjcmVlbnNoYXJl
KSB7CiAgIGNvbnN0IHNpemVfdCBrTWF4TGF5ZXJzID0gMzsKICAgc3RkOjp2ZWN0b3I8VmlkZW9T
dHJlYW0+IHN0cmVhbXMgPSBjcmlja2V0OjpHZXRTaW11bGNhc3RDb25maWcoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
dnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94
eS5jYwppbmRleCA0ZDg1ODYzMGI1ODI0ZDcwNGVlODljMWI4MDQxNjQ3MGRiOWEyZTg2Li4xYTJm
NTc3MjVjZWMyNWFlZTQzMGI0NjhkYzE1OTI3ODViOTMyMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2VuY29k
ZXJfc2ltdWxjYXN0X3Byb3h5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuY2MK
QEAgLTEwLDkgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9z
aW11bGNhc3RfcHJveHkuaCIKIAotI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9zY29wZWR2aWRlb2Vu
Y29kZXIuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRl
ci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IFZQOEVuY29kZXJTaW11bGNhc3RQcm94eTo6VlA4RW5jb2RlclNpbXVsY2FzdFByb3h5KFZpZGVv
RW5jb2RlckZhY3RvcnkqIGZhY3RvcnksCkBAIC01NywyOCArNTUsMTQgQEAgaW50IFZQOEVuY29k
ZXJTaW11bGNhc3RQcm94eTo6UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKAogICByZXR1
cm4gZW5jb2Rlcl8tPlJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhjYWxsYmFjayk7CiB9
CiAKLWludCBWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHk6OlNldENoYW5uZWxQYXJhbWV0ZXJzKHVp
bnQzMl90IHBhY2tldF9sb3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50NjRfdCBydHQpIHsKLSAgcmV0dXJuIGVuY29kZXJfLT5TZXRDaGFu
bmVsUGFyYW1ldGVycyhwYWNrZXRfbG9zcywgcnR0KTsKLX0KLQogaW50IFZQOEVuY29kZXJTaW11
bGNhc3RQcm94eTo6U2V0UmF0ZUFsbG9jYXRpb24oCiAgICAgY29uc3QgVmlkZW9CaXRyYXRlQWxs
b2NhdGlvbiYgYml0cmF0ZSwKICAgICB1aW50MzJfdCBuZXdfZnJhbWVyYXRlKSB7CiAgIHJldHVy
biBlbmNvZGVyXy0+U2V0UmF0ZUFsbG9jYXRpb24oYml0cmF0ZSwgbmV3X2ZyYW1lcmF0ZSk7CiB9
CiAKLVZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIFZQOEVuY29kZXJTaW11bGNhc3RQcm94
eTo6R2V0U2NhbGluZ1NldHRpbmdzKCkKLSAgICBjb25zdCB7Ci0gIHJldHVybiBlbmNvZGVyXy0+
R2V0U2NhbGluZ1NldHRpbmdzKCk7Ci19Ci0KLWJvb2wgVlA4RW5jb2RlclNpbXVsY2FzdFByb3h5
OjpTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGVuY29kZXJfLT5TdXBw
b3J0c05hdGl2ZUhhbmRsZSgpOwotfQotCi1jb25zdCBjaGFyKiBWUDhFbmNvZGVyU2ltdWxjYXN0
UHJveHk6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGVuY29kZXJfLT5J
bXBsZW1lbnRhdGlvbk5hbWUoKTsKK1ZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gVlA4RW5jb2Rl
clNpbXVsY2FzdFByb3h5OjpHZXRFbmNvZGVySW5mbygpIGNvbnN0IHsKKyAgcmV0dXJuIGVuY29k
ZXJfLT5HZXRFbmNvZGVySW5mbygpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0
X3Byb3h5LmgKaW5kZXggNjg1YmNiZWQ2ZWY4NDZkNzlhZmJkM2Y4MzM5ODkwODA4ZjY1MmEwMC4u
ZDA0NjI0ZjI2YzVkODYxNTA3ZTY4YTY4MmEyMmNlZmNlODA2NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3ZwOF9l
bmNvZGVyX3NpbXVsY2FzdF9wcm94eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHku
aApAQCAtMTYsOCArMTYsOCBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS92
aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2Rl
Y3MvdmlkZW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Zw
OC9pbmNsdWRlL3ZwOC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtNDIsMTQgKzQyLDkg
QEAgY2xhc3MgVlA4RW5jb2RlclNpbXVsY2FzdFByb3h5IDogcHVibGljIFZpZGVvRW5jb2RlciB7
CiAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2lu
Zm8sCiAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiogZnJhbWVfdHlw
ZXMpIG92ZXJyaWRlOwogICBpbnQgUmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKEVuY29k
ZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7Ci0gIGludCBTZXRDaGFubmVsUGFy
YW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwogICBp
bnQgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5ld19mcmFtZXJhdGUpIG92ZXJy
aWRlOwotCi0gIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5n
cygpIGNvbnN0IG92ZXJyaWRlOwotCi0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25z
dCBvdmVycmlkZTsKLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICBwcml2YXRlOgogICBWaWRlb0VuY29kZXJGYWN0b3J5KiBjb25zdCBmYWN0b3J5XzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Vu
Z2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHlfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2VuY29kZXJf
c2ltdWxjYXN0X3Byb3h5X3VuaXR0ZXN0LmNjCmluZGV4IGQxZGM5YTMxZGY2NmJjNTkzM2ZhZjBi
OGI3NTA0NTZkNTZhOWJjNzMuLmQxYjI2YmJlOTNlNjkxM2E3YTliMjc5NzFlMmMwODM5NzFlYjU1
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHlfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5l
L3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eV91bml0dGVzdC5jYwpAQCAtMTAsMTIgKzEwLDEx
IEBACiAgKi8KIAogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3Rf
cHJveHkuaCIKLQogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgImFwaS90ZXN0L21vY2tf
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhf
dGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5j
b2RlcmZhY3RvcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4
L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAidGVzdC9n
bW9jay5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKQEAgLTUyLDkgKzUxLDcgQEAgY2xhc3Mg
TW9ja0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgICAgICAgICAgICAgY29uc3Qg
Q29kZWNTcGVjaWZpY0luZm8qIGNvZGVjU3BlY2lmaWNJbmZvLAogICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+KiBmcmFtZV90eXBlcykgLyogb3ZlcnJpZGUgKi8pOwog
Ci0gIE1PQ0tfTUVUSE9EMihTZXRDaGFubmVsUGFyYW1ldGVycywgaW50MzJfdCh1aW50MzJfdCBw
YWNrZXRMb3NzLCBpbnQ2NF90IHJ0dCkpOwotCi0gIE1PQ0tfQ09OU1RfTUVUSE9EMChJbXBsZW1l
bnRhdGlvbk5hbWUsIGNvbnN0IGNoYXIqKCkpOworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0RW5j
b2RlckluZm8sIFZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8odm9pZCkpOwogfTsKIAogVEVTVChW
UDhFbmNvZGVyU2ltdWxjYXN0UHJveHksIENob29zZXNDb3JyZWN0SW1wbGVtZW50YXRpb24pIHsK
QEAgLTk0LDggKzkxLDEwIEBAIFRFU1QoVlA4RW5jb2RlclNpbXVsY2FzdFByb3h5LCBDaG9vc2Vz
Q29ycmVjdEltcGxlbWVudGF0aW9uKSB7CiAKICAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2Rlciwg
SW5pdEVuY29kZShfLCBfLCBfKSkKICAgICAgIC5XaWxsT25jZShSZXR1cm4oV0VCUlRDX1ZJREVP
X0NPREVDX09LKSk7Ci0gIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIsIEltcGxlbWVudGF0aW9u
TmFtZSgpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihrSW1wbGVtZW50YXRpb25OYW1l
LmNfc3RyKCkpKTsKKyAgVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBlbmNvZGVyX2luZm87Cisg
IGVuY29kZXJfaW5mby5pbXBsZW1lbnRhdGlvbl9uYW1lID0ga0ltcGxlbWVudGF0aW9uTmFtZTsK
KyAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlciwgR2V0RW5jb2RlckluZm8oKSkKKyAgICAgIC5X
aWxsUmVwZWF0ZWRseShSZXR1cm4oZW5jb2Rlcl9pbmZvKSk7CiAKICAgRVhQRUNUX0NBTEwoc2lt
dWxjYXN0X2ZhY3RvcnksIENyZWF0ZVZpZGVvRW5jb2RlclByb3h5KF8pKQogICAgICAgLlRpbWVz
KDEpCkBAIC0xMDUsNyArMTA0LDggQEAgVEVTVChWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHksIENo
b29zZXNDb3JyZWN0SW1wbGVtZW50YXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFZpZGVvRm9ybWF0KCJWUDgiKSk7CiAgIEVYUEVD
VF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCiAgICAgICAgICAgICBzaW11bGNhc3RfZW5hYmxl
ZF9wcm94eS5Jbml0RW5jb2RlKCZjb2RlY19zZXR0aW5ncywgNCwgMTIwMCkpOwotICBFWFBFQ1Rf
RVEoa0ltcGxlbWVudGF0aW9uTmFtZSwgc2ltdWxjYXN0X2VuYWJsZWRfcHJveHkuSW1wbGVtZW50
YXRpb25OYW1lKCkpOworICBFWFBFQ1RfRVEoa0ltcGxlbWVudGF0aW9uTmFtZSwKKyAgICAgICAg
ICAgIHNpbXVsY2FzdF9lbmFibGVkX3Byb3h5LkdldEVuY29kZXJJbmZvKCkuaW1wbGVtZW50YXRp
b25fbmFtZSk7CiAKICAgTmljZU1vY2s8TW9ja0VuY29kZXI+KiBtb2NrX2VuY29kZXIxID0gbmV3
IE5pY2VNb2NrPE1vY2tFbmNvZGVyPigpOwogICBOaWNlTW9jazxNb2NrRW5jb2Rlcj4qIG1vY2tf
ZW5jb2RlcjIgPSBuZXcgTmljZU1vY2s8TW9ja0VuY29kZXI+KCk7CkBAIC0xMTYsMjMgKzExNiwy
MyBAQCBURVNUKFZQOEVuY29kZXJTaW11bGNhc3RQcm94eSwgQ2hvb3Nlc0NvcnJlY3RJbXBsZW1l
bnRhdGlvbikgewogICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVyMSwgSW5pdEVuY29kZShfLCBf
LCBfKSkKICAgICAgIC5XaWxsT25jZSgKICAgICAgICAgICBSZXR1cm4oV0VCUlRDX1ZJREVPX0NP
REVDX0VSUl9TSU1VTENBU1RfUEFSQU1FVEVSU19OT1RfU1VQUE9SVEVEKSk7Ci0gIEVYUEVDVF9D
QUxMKCptb2NrX2VuY29kZXIxLCBJbXBsZW1lbnRhdGlvbk5hbWUoKSkKLSAgICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm4oa0ltcGxlbWVudGF0aW9uTmFtZS5jX3N0cigpKSk7CisgIEVYUEVDVF9D
QUxMKCptb2NrX2VuY29kZXIxLCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldpbGxSZXBlYXRl
ZGx5KFJldHVybihlbmNvZGVyX2luZm8pKTsKIAogICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVy
MiwgSW5pdEVuY29kZShfLCBfLCBfKSkKICAgICAgIC5XaWxsT25jZShSZXR1cm4oV0VCUlRDX1ZJ
REVPX0NPREVDX09LKSk7Ci0gIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIyLCBJbXBsZW1lbnRh
dGlvbk5hbWUoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oa0ltcGxlbWVudGF0aW9u
TmFtZS5jX3N0cigpKSk7CisgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIyLCBHZXRFbmNvZGVy
SW5mbygpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihlbmNvZGVyX2luZm8pKTsKIAog
ICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVyMywgSW5pdEVuY29kZShfLCBfLCBfKSkKICAgICAg
IC5XaWxsT25jZShSZXR1cm4oV0VCUlRDX1ZJREVPX0NPREVDX09LKSk7Ci0gIEVYUEVDVF9DQUxM
KCptb2NrX2VuY29kZXIzLCBJbXBsZW1lbnRhdGlvbk5hbWUoKSkKLSAgICAgIC5XaWxsUmVwZWF0
ZWRseShSZXR1cm4oa0ltcGxlbWVudGF0aW9uTmFtZS5jX3N0cigpKSk7CisgIEVYUEVDVF9DQUxM
KCptb2NrX2VuY29kZXIzLCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldpbGxSZXBlYXRlZGx5
KFJldHVybihlbmNvZGVyX2luZm8pKTsKIAogICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVyNCwg
SW5pdEVuY29kZShfLCBfLCBfKSkKICAgICAgIC5XaWxsT25jZShSZXR1cm4oV0VCUlRDX1ZJREVP
X0NPREVDX09LKSk7Ci0gIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXI0LCBJbXBsZW1lbnRhdGlv
bk5hbWUoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oa0ltcGxlbWVudGF0aW9uTmFt
ZS5jX3N0cigpKSk7CisgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXI0LCBHZXRFbmNvZGVySW5m
bygpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihlbmNvZGVyX2luZm8pKTsKIAogICBF
WFBFQ1RfQ0FMTChub25zaW11bGNhc3RfZmFjdG9yeSwgQ3JlYXRlVmlkZW9FbmNvZGVyUHJveHko
XykpCiAgICAgICAuVGltZXMoNCkKQEAgLTE0NiwxMiArMTQ2LDM4IEBAIFRFU1QoVlA4RW5jb2Rl
clNpbXVsY2FzdFByb3h5LCBDaG9vc2VzQ29ycmVjdEltcGxlbWVudGF0aW9uKSB7CiAgIEVYUEVD
VF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCiAgICAgICAgICAgICBzaW11bGNhc3RfZGlzYWJs
ZWRfcHJveHkuSW5pdEVuY29kZSgmY29kZWNfc2V0dGluZ3MsIDQsIDEyMDApKTsKICAgRVhQRUNU
X0VRKGtTaW11bGNhc3RBZGFwdGVkSW1wbGVtZW50YXRpb25OYW1lLAotICAgICAgICAgICAgc2lt
dWxjYXN0X2Rpc2FibGVkX3Byb3h5LkltcGxlbWVudGF0aW9uTmFtZSgpKTsKKyAgICAgICAgICAg
IHNpbXVsY2FzdF9kaXNhYmxlZF9wcm94eS5HZXRFbmNvZGVySW5mbygpLmltcGxlbWVudGF0aW9u
X25hbWUpOwogCiAgIC8vIENsZWFudXAuCiAgIHNpbXVsY2FzdF9lbmFibGVkX3Byb3h5LlJlbGVh
c2UoKTsKICAgc2ltdWxjYXN0X2Rpc2FibGVkX3Byb3h5LlJlbGVhc2UoKTsKIH0KIAorVEVTVChW
UDhFbmNvZGVyU2ltdWxjYXN0UHJveHksIEZvcndhcmRzVHJ1c3RlZFNldHRpbmcpIHsKKyAgTmlj
ZU1vY2s8TW9ja0VuY29kZXI+KiBtb2NrX2VuY29kZXIgPSBuZXcgTmljZU1vY2s8TW9ja0VuY29k
ZXI+KCk7CisgIE5pY2VNb2NrPE1vY2tWaWRlb0VuY29kZXJGYWN0b3J5PiBzaW11bGNhc3RfZmFj
dG9yeTsKKworICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVyLCBJbml0RW5jb2RlKF8sIF8sIF8p
KQorICAgICAgLldpbGxPbmNlKFJldHVybihXRUJSVENfVklERU9fQ09ERUNfT0spKTsKKworICBF
WFBFQ1RfQ0FMTChzaW11bGNhc3RfZmFjdG9yeSwgQ3JlYXRlVmlkZW9FbmNvZGVyUHJveHkoXykp
CisgICAgICAuVGltZXMoMSkKKyAgICAgIC5XaWxsT25jZShSZXR1cm4obW9ja19lbmNvZGVyKSk7
CisKKyAgVlA4RW5jb2RlclNpbXVsY2FzdFByb3h5IHNpbXVsY2FzdF9lbmFibGVkX3Byb3h5KCZz
aW11bGNhc3RfZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNkcFZpZGVvRm9ybWF0KCJWUDgiKSk7CisgIFZpZGVvQ29kZWMgY29kZWNf
c2V0dGluZ3M7CisgIHdlYnJ0Yzo6dGVzdDo6Q29kZWNTZXR0aW5ncyhrVmlkZW9Db2RlY1ZQOCwg
JmNvZGVjX3NldHRpbmdzKTsKKyAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAg
ICAgICAgICAgIHNpbXVsY2FzdF9lbmFibGVkX3Byb3h5LkluaXRFbmNvZGUoJmNvZGVjX3NldHRp
bmdzLCA0LCAxMjAwKSk7CisKKyAgVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBpbmZvOworICBp
bmZvLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlciA9IHRydWU7CisgIEVYUEVDVF9DQUxMKCpt
b2NrX2VuY29kZXIsIEdldEVuY29kZXJJbmZvKCkpLldpbGxSZXBlYXRlZGx5KFJldHVybihpbmZv
KSk7CisKKyAgRVhQRUNUX1RSVUUoCisgICAgICBzaW11bGNhc3RfZW5hYmxlZF9wcm94eS5HZXRF
bmNvZGVySW5mbygpLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcik7Cit9CisKIH0gIC8vIG5h
bWVzcGFjZSB0ZXN0aW5nCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRj
bWVkaWFlbmdpbmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuY2MKaW5kZXggZTYwYzU5MmEzZmFiZWVk
MTJlYjU4ZmVkOWE2YjZlY2Q2N2ZkZjAzNS4uYmM3ZDNjM2UxMjRmZmVmZWEzNmIwMjFlNWJjNjM1
YTM2MDJlYjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGNtZWRp
YWVuZ2luZS5jYwpAQCAtMTEsMTAgKzExLDEwIEBACiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dl
YnJ0Y21lZGlhZW5naW5lLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bWVt
b3J5PgotI2luY2x1ZGUgPHR1cGxlPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJh
YnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19i
aXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92
aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVv
X2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVu
Z2luZS5oIgpAQCAtMzgsMjMgKzM4LDI0IEBAIE1lZGlhRW5naW5lSW50ZXJmYWNlKiBDcmVhdGVX
ZWJSdGNNZWRpYUVuZ2luZSgKICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAogICAgIFdl
YlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKICAgICBXZWJS
dGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgc3RkOjp1
bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgICAg
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpBdWRpb01peGVyPiBhdWRpb19taXhlciwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcpIHsKKyAgc3RkOjp1bmlx
dWVfcHRyPFZpZGVvRW5naW5lSW50ZXJmYWNlPiB2aWRlb19lbmdpbmU7CiAjaWZkZWYgSEFWRV9X
RUJSVENfVklERU8KLSAgdHlwZWRlZiBXZWJSdGNWaWRlb0VuZ2luZSBWaWRlb0VuZ2luZTsKLSAg
c3RkOjp0dXBsZTxzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeT4sCi0g
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnk+Pgot
ICAgICAgdmlkZW9fYXJncygKLSAgICAgICAgICAoc3RkOjp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVv
RW5jb2RlckZhY3Rvcnk+KHZpZGVvX2VuY29kZXJfZmFjdG9yeSkpLAotICAgICAgICAgIChzdGQ6
OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeT4odmlkZW9fZGVjb2Rlcl9mYWN0
b3J5KSkpOworICB2aWRlb19lbmdpbmUgPSBhYnNsOjptYWtlX3VuaXF1ZTxXZWJSdGNWaWRlb0Vu
Z2luZT4oCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeT4o
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRl
b0RlY29kZXJGYWN0b3J5Pih2aWRlb19kZWNvZGVyX2ZhY3RvcnkpLAorICAgICAgc3RkOjptb3Zl
KHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkpKTsKICNlbHNlCi0gIHR5cGVkZWYgTnVs
bFdlYlJ0Y1ZpZGVvRW5naW5lIFZpZGVvRW5naW5lOwotICBzdGQ6OnR1cGxlPD4gdmlkZW9fYXJn
czsKKyAgdmlkZW9fZW5naW5lID0gYWJzbDo6bWFrZV91bmlxdWU8TnVsbFdlYlJ0Y1ZpZGVvRW5n
aW5lPigpOwogI2VuZGlmCi0gIHJldHVybiBuZXcgQ29tcG9zaXRlTWVkaWFFbmdpbmU8V2ViUnRj
Vm9pY2VFbmdpbmUsIFZpZGVvRW5naW5lPigKLSAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShh
ZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX21peGVyLCBhdWRpb19wcm9jZXNzaW5nKSwKLSAg
ICAgIHN0ZDo6bW92ZSh2aWRlb19hcmdzKSk7CisgIHJldHVybiBuZXcgQ29tcG9zaXRlTWVkaWFF
bmdpbmUoCisgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxXZWJSdGNWb2ljZUVuZ2luZT4oYWRtLCBh
dWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCBhdWRpb19taXhlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wcm9jZXNzaW5nKSwKKyAgICAg
IHN0ZDo6bW92ZSh2aWRlb19lbmdpbmUpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCkBAIC02Nywx
MCArNjgsNDMgQEAgTWVkaWFFbmdpbmVJbnRlcmZhY2UqIFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9y
eTo6Q3JlYXRlKAogICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCiAgICAgV2ViUnRjVmlk
ZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAogICAgIFdlYlJ0Y1ZpZGVv
RGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSkgewotICByZXR1cm4gQ3JlYXRl
V2ViUnRjTWVkaWFFbmdpbmUoYWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksIHZpZGVvX2VuY29k
ZXJfZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvX2RlY29k
ZXJfZmFjdG9yeSwgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdl
YnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpKTsKKyAgcmV0dXJuIFdlYlJ0
Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAorICAgICAgYWRtLCBhdWRpb19lbmNvZGVyX2Zh
Y3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAg
ICAgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluVmlk
ZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpKTsKK30KKworTWVkaWFFbmdpbmVJbnRlcmZhY2Uq
IFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAorICAgIHdlYnJ0Yzo6QXVkaW9EZXZp
Y2VNb2R1bGUqIGFkbSwKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRp
b0VuY29kZXJGYWN0b3J5PiYKKyAgICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIGNv
bnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVjb2RlckZhY3Rvcnk+JgorICAg
ICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9y
eSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnkq
IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRl
b0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICB2aWRlb19iaXRyYXRlX2FsbG9jYXRv
cl9mYWN0b3J5KSB7CisgIHJldHVybiBDcmVhdGVXZWJSdGNNZWRpYUVuZ2luZSgKKyAgICAgIGFk
bSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksIHZpZGVvX2Vu
Y29kZXJfZmFjdG9yeSwKKyAgICAgIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwgc3RkOjptb3ZlKHZp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkpLAorICAgICAgbnVsbHB0ciwgd2VicnRjOjpB
dWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpOworfQorCitNZWRpYUVuZ2luZUludGVy
ZmFjZSogV2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCisgICAgd2VicnRjOjpBdWRp
b0RldmljZU1vZHVsZSogYWRtLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkF1ZGlvRW5jb2RlckZhY3Rvcnk+JgorICAgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisg
ICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeT4m
CisgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBXZWJSdGNWaWRlb0VuY29kZXJG
YWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFj
dG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZykgeworICByZXR1cm4gV2ViUnRj
TWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCisgICAgICBhZG0sIGF1ZGlvX2VuY29kZXJfZmFj
dG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAg
ICB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRl
b0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCksIGF1ZGlvX21peGVyLAorICAgICAgYXVkaW9fcHJv
Y2Vzc2luZyk7CiB9CiAKIE1lZGlhRW5naW5lSW50ZXJmYWNlKiBXZWJSdGNNZWRpYUVuZ2luZUZh
Y3Rvcnk6OkNyZWF0ZSgKQEAgLTgxLDExICsxMTUsMTQgQEAgTWVkaWFFbmdpbmVJbnRlcmZhY2Uq
IFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAogICAgICAgICBhdWRpb19kZWNvZGVy
X2ZhY3RvcnksCiAgICAgV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LAogICAgIFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFj
dG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JG
YWN0b3J5PgorICAgICAgICB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LAogICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAogICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2lu
ZykgewogICByZXR1cm4gQ3JlYXRlV2ViUnRjTWVkaWFFbmdpbmUoCiAgICAgICBhZG0sIGF1ZGlv
X2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCB2aWRlb19lbmNvZGVyX2Zh
Y3RvcnksCi0gICAgICB2aWRlb19kZWNvZGVyX2ZhY3RvcnksIGF1ZGlvX21peGVyLCBhdWRpb19w
cm9jZXNzaW5nKTsKKyAgICAgIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwgc3RkOjptb3ZlKHZpZGVv
X2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkpLAorICAgICAgYXVkaW9fbWl4ZXIsIGF1ZGlvX3By
b2Nlc3NpbmcpOwogfQogI2VuZGlmCiAKQEAgLTk3LDIyICsxMzQsMzUgQEAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhRW5naW5lSW50ZXJmYWNlPiBXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0
ZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRl
b19kZWNvZGVyX2ZhY3RvcnksCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9N
aXhlcj4gYXVkaW9fbWl4ZXIsCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Q
cm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nKSB7CisgIHJldHVybiBXZWJSdGNNZWRpYUVuZ2lu
ZUZhY3Rvcnk6OkNyZWF0ZSgKKyAgICAgIGFkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRp
b19kZWNvZGVyX2ZhY3RvcnksCisgICAgICBzdGQ6Om1vdmUodmlkZW9fZW5jb2Rlcl9mYWN0b3J5
KSwgc3RkOjptb3ZlKHZpZGVvX2RlY29kZXJfZmFjdG9yeSksCisgICAgICB3ZWJydGM6OkNyZWF0
ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCksIGF1ZGlvX21peGVyLAorICAg
ICAgYXVkaW9fcHJvY2Vzc2luZyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxNZWRpYUVuZ2luZUlu
dGVyZmFjZT4gV2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCisgICAgcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGU+IGFkbSwKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3Rv
cnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeT4g
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVv
RW5jb2RlckZhY3Rvcnk+IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisg
ICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4K
KyAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSwKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb01peGVyPiBhdWRpb19taXhlciwKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcpIHsKICNp
ZmRlZiBIQVZFX1dFQlJUQ19WSURFTwotICB0eXBlZGVmIFdlYlJ0Y1ZpZGVvRW5naW5lIFZpZGVv
RW5naW5lOwotICBzdGQ6OnR1cGxlPHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rl
ckZhY3Rvcnk+LAotICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVj
b2RlckZhY3Rvcnk+PgotICAgICAgdmlkZW9fYXJncyhzdGQ6Om1vdmUodmlkZW9fZW5jb2Rlcl9m
YWN0b3J5KSwKLSAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHZpZGVvX2RlY29kZXJfZmFjdG9y
eSkpOworICBhdXRvIHZpZGVvX2VuZ2luZSA9IGFic2w6Om1ha2VfdW5pcXVlPFdlYlJ0Y1ZpZGVv
RW5naW5lPigKKyAgICAgIHN0ZDo6bW92ZSh2aWRlb19lbmNvZGVyX2ZhY3RvcnkpLCBzdGQ6Om1v
dmUodmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSwKKyAgICAgIHN0ZDo6bW92ZSh2aWRlb19iaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5KSk7CiAjZWxzZQotICB0eXBlZGVmIE51bGxXZWJSdGNWaWRlb0Vu
Z2luZSBWaWRlb0VuZ2luZTsKLSAgc3RkOjp0dXBsZTw+IHZpZGVvX2FyZ3M7CisgIGF1dG8gdmlk
ZW9fZW5naW5lID0gYWJzbDo6bWFrZV91bmlxdWU8TnVsbFdlYlJ0Y1ZpZGVvRW5naW5lPigpOwog
I2VuZGlmCi0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFFbmdpbmVJbnRlcmZhY2U+KAot
ICAgICAgbmV3IENvbXBvc2l0ZU1lZGlhRW5naW5lPFdlYlJ0Y1ZvaWNlRW5naW5lLCBWaWRlb0Vu
Z2luZT4oCi0gICAgICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKGFkbSwgYXVkaW9fZW5jb2Rl
cl9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19kZWNvZGVy
X2ZhY3RvcnksIGF1ZGlvX21peGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dWRpb19wcm9jZXNzaW5nKSwKLSAgICAgICAgICBzdGQ6Om1vdmUodmlkZW9fYXJncykpKTsKKyAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYUVuZ2luZUludGVyZmFjZT4obmV3IENvbXBvc2l0
ZU1lZGlhRW5naW5lKAorICAgICAgYWJzbDo6bWFrZV91bmlxdWU8V2ViUnRjVm9pY2VFbmdpbmU+
KGFkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwgYXVkaW9fbWl4ZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcHJvY2Vzc2luZyks
CisgICAgICBzdGQ6Om1vdmUodmlkZW9fZW5naW5lKSkpOwogfQogCiBuYW1lc3BhY2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaAppbmRleCBkODJl
Y2NmOWRjMzQ3ZmFmOTZmODYzMWZkZjI2NGI5MDIyMTczYWY5Li5mYmY0NDY2NzMyNzE1ZjMzMjc4
ZDg1ZmQzYTU2Y2JmNDJkYzNiMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
d2VicnRjbWVkaWFlbmdpbmUuaApAQCAtMjUsNiArMjUsNyBAQCBjbGFzcyBBdWRpb01peGVyOwog
Y2xhc3MgQXVkaW9Qcm9jZXNzaW5nOwogY2xhc3MgVmlkZW9EZWNvZGVyRmFjdG9yeTsKIGNsYXNz
IFZpZGVvRW5jb2RlckZhY3Rvcnk7CitjbGFzcyBWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5
OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogbmFtZXNwYWNlIGNyaWNrZXQgewogY2xhc3MgV2Vi
UnRjVmlkZW9EZWNvZGVyRmFjdG9yeTsKQEAgLTUwLDYgKzUxLDI5IEBAIGNsYXNzIFdlYlJ0Y01l
ZGlhRW5naW5lRmFjdG9yeSB7CiAgICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAogICAg
ICAgV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAogICAg
ICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KTsKKwor
ICBzdGF0aWMgTWVkaWFFbmdpbmVJbnRlcmZhY2UqIENyZWF0ZSgKKyAgICAgIHdlYnJ0Yzo6QXVk
aW9EZXZpY2VNb2R1bGUqIGFkbSwKKyAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+JgorICAgICAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9y
eSwKKyAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVjb2RlckZh
Y3Rvcnk+JgorICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICAgIFdlYlJ0Y1Zp
ZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICAgIFdlYlJ0Y1Zp
ZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAorICAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPiBhcG0pOworCisgIHN0YXRpYyBN
ZWRpYUVuZ2luZUludGVyZmFjZSogQ3JlYXRlKAorICAgICAgd2VicnRjOjpBdWRpb0RldmljZU1v
ZHVsZSogYWRtLAorICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9F
bmNvZGVyRmFjdG9yeT4mCisgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgICAg
Y29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeT4mCisg
ICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgV2ViUnRjVmlkZW9FbmNvZGVy
RmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgICAgV2ViUnRjVmlkZW9EZWNvZGVy
RmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgICAgICB2aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5KTsKKwogICBzdGF0aWMgTWVkaWFFbmdpbmVJbnRlcmZhY2Uq
IENyZWF0ZSgKICAgICAgIHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGUqIGFkbSwKICAgICAgIGNv
bnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+JgpAQCAt
NTgsNiArODIsOCBAQCBjbGFzcyBXZWJSdGNNZWRpYUVuZ2luZUZhY3RvcnkgewogICAgICAgICAg
IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKICAgICAgIFdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3Rvcnkq
IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKICAgICAgIFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnkq
IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZp
ZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+CisgICAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeSwKICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvTWl4
ZXI+IGF1ZGlvX21peGVyLAogICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Q
cm9jZXNzaW5nPiBhcG0pOwogI2VuZGlmCkBAIC03Myw2ICs5OSwxNyBAQCBjbGFzcyBXZWJSdGNN
ZWRpYUVuZ2luZUZhY3RvcnkgewogICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9E
ZWNvZGVyRmFjdG9yeT4gdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAogICAgICAgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCiAgICAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcpOworCisg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFFbmdpbmVJbnRlcmZhY2U+IENyZWF0ZSgKKyAg
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlPiBhZG0sCisg
ICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRp
b19lbmNvZGVyX2ZhY3RvcnksCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRp
b0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiB2aWRlb19lbmNvZGVyX2ZhY3Rvcnks
CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRl
b19kZWNvZGVyX2ZhY3RvcnksCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0Jp
dHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnksCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb01peGVyPiBh
dWRpb19taXhlciwKKyAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvUHJvY2Vz
c2luZz4gYXVkaW9fcHJvY2Vzc2luZyk7CiB9OwogCiAvLyBWZXJpZnkgdGhhdCBleHRlbnNpb24g
SURzIGFyZSB3aXRoaW4gMS1ieXRlIGV4dGVuc2lvbiByYW5nZSBhbmQgYXJlIG5vdApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL3dlYnJ0Y21lZGlhZW5naW5lX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lX3VuaXR0
ZXN0LmNjCmluZGV4IDRmYTlhNmI1ZWUzNWQ4OWNiZmM2ODU0OTE5ZDFiZjQ0YWQ1Mzk2NDAuLmVl
YzdkYzM5YzQ4ODFjMzY5ZDRiZTY0MmM5ZjZjM2NkYjgzMTAwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGNt
ZWRpYWVuZ2luZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmVfdW5pdHRlc3QuY2MK
QEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9h
dWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0
aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5f
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19j
b2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlk
ZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibWVk
aWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lLmgiCkBAIC0yNDksNCArMjUwLDE1IEBAIFRFU1Qo
V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5VGVzdCwgQ3JlYXRlV2l0aEJ1aWx0aW5EZWNvZGVycykg
ewogICBFWFBFQ1RfVFJVRShlbmdpbmUpOwogfQogCitURVNUKFdlYlJ0Y01lZGlhRW5naW5lRmFj
dG9yeVRlc3QsIENyZWF0ZVdpdGhWaWRlb0JpdHJhdGVGYWN0b3J5KSB7CisgIHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYUVuZ2luZUludGVyZmFjZT4gZW5naW5lKFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9y
eTo6Q3JlYXRlKAorICAgICAgbnVsbHB0ciAvKiBhZG0gKi8sIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRp
bkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwKKyAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlv
RGVjb2RlckZhY3RvcnkoKSwKKyAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVvRW5jb2Rl
ckZhY3RvcnkoKSwKKyAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVvRGVjb2RlckZhY3Rv
cnkoKSwKKyAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZh
Y3RvcnkoKSwKKyAgICAgIG51bGxwdHIgLyogYXVkaW9fbWl4ZXIgKi8sIHdlYnJ0Yzo6QXVkaW9Q
cm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpKSk7CisgIEVYUEVDVF9UUlVFKGVuZ2luZSk7Cit9
CisKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9kZWNvZGVy
ZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZGVjb2RlcmZhY3RvcnkuaAppbmRleCAwMTZjYjA5ZGEwMDBm
NDc0ZmFkZDY1NjIyOTM0ZGQ2MzA4YTk1MGUwLi5mMDBkOWE2OWUwZTI2NmQ1ODlkMmZmOTQ3MmJk
NTRhNGYzZWUyNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9kZWNvZGVyZmFjdG9yeS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93
ZWJydGN2aWRlb2RlY29kZXJmYWN0b3J5LmgKQEAgLTEzLDkgKzEzLDEwIEBACiAKICNpbmNsdWRl
IDxzdHJpbmc+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9p
bmNsdWRlKQorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19jb2RlY190eXBlLmgiCiAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9jb2RlYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiBjbGFzcyBWaWRlb0RlY29kZXI7CkBAIC0yOSw3ICszMCw3IEBAIHN0cnVjdCBWaWRlb0Rl
Y29kZXJQYXJhbXMgewogCiAvLyBEZXByZWNhdGVkLiBVc2Ugd2VicnRjOjpWaWRlb0RlY29kZXJG
YWN0b3J5IGluc3RlYWQuCiAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Avd2VicnRjL2lz
c3Vlcy9kZXRhaWw/aWQ9NzkyNQotY2xhc3MgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSB7Citj
bGFzcyBSVENfRVhQT1JUIFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkgewogIHB1YmxpYzoKICAg
Ly8gQ2FsbGVyIHRha2VzIHRoZSBvd25lcnNoaXAgb2YgdGhlIHJldHVybmVkIG9iamVjdCBhbmQg
aXQgc2hvdWxkIGJlIHJlbGVhc2VkCiAgIC8vIGJ5IGNhbGxpbmcgRGVzdHJveVZpZGVvRGVjb2Rl
cigpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3RvcnkuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2Vu
Y29kZXJmYWN0b3J5LmgKaW5kZXggOTdhYzAzYjQ3M2Y4ZjBjNzhjODRlZTg2NTAzNjU2MGNhZDYx
OTIxMy4uZDM5ZTBmZDVmOTVhZTQ1NDA4MDE1MDNmMmQ1NThmZDgwZjIwYjc3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5l
L3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmNvZGVyZmFjdG9y
eS5oCkBAIC0xNCw4ICsxNCw5IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rv
cj4KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
CisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvZGVjX3R5cGUuaCIKICNpbmNsdWRlICJtZWRp
YS9iYXNlL2NvZGVjLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBWaWRlb0VuY29kZXI7CkBAIC0yNSw3ICsyNiw3
IEBAIG5hbWVzcGFjZSBjcmlja2V0IHsKIAogLy8gRGVwcmVjYXRlZC4gVXNlIHdlYnJ0Yzo6Vmlk
ZW9FbmNvZGVyRmFjdG9yeSBpbnN0ZWFkLgogLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9w
L3dlYnJ0Yy9pc3N1ZXMvZGV0YWlsP2lkPTc5MjUKLWNsYXNzIFdlYlJ0Y1ZpZGVvRW5jb2RlckZh
Y3RvcnkgeworY2xhc3MgUlRDX0VYUE9SVCBXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5IHsKICBw
dWJsaWM6CiAgIHZpcnR1YWwgfldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkoKSB7fQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuY2MKaW5kZXggNDBi
MGM0NWEzZDgzMmMxMTY2YWMzNzQ0ZWZhZDY1ZTdmZTAzNmQwMS4uYTc1ZGI3MzY5NzA2OWI5Mzdm
YTg4YjYxN2MzZTNkOWE0ZjRiNDhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS93ZWJydGN2aWRlb2VuZ2luZS5jYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPHN0cmlu
Zz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgi
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCiAjaW5jbHVk
ZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJh
cGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXIuaCIKQEAgLTExMSw4ICsxMTIsOCBAQCBzdGQ6
OnZlY3RvcjxWaWRlb0NvZGVjPiBBc3NpZ25QYXlsb2FkVHlwZXNBbmREZWZhdWx0Q29kZWNzKAog
ICAgIH0KIAogICAgIC8vIEFkZCBhc3NvY2lhdGVkIFJUWCBjb2RlYyBmb3Igbm9uLUZFQyBjb2Rl
Y3MuCi0gICAgaWYgKCFDb2RlY05hbWVzRXEoY29kZWMubmFtZSwga1VscGZlY0NvZGVjTmFtZSkg
JiYKLSAgICAgICAgIUNvZGVjTmFtZXNFcShjb2RlYy5uYW1lLCBrRmxleGZlY0NvZGVjTmFtZSkp
IHsKKyAgICBpZiAoIWFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwga1VscGZlY0Nv
ZGVjTmFtZSkgJiYKKyAgICAgICAgIWFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwg
a0ZsZXhmZWNDb2RlY05hbWUpKSB7CiAgICAgICBvdXRwdXRfY29kZWNzLnB1c2hfYmFjaygKICAg
ICAgICAgICBWaWRlb0NvZGVjOjpDcmVhdGVSdHhDb2RlYyhwYXlsb2FkX3R5cGUsIGNvZGVjLmlk
KSk7CiAKQEAgLTE0Nyw4ICsxNDgsOCBAQCBpbnQgR2V0TWF4RnJhbWVyYXRlKGNvbnN0IHdlYnJ0
Yzo6VmlkZW9FbmNvZGVyQ29uZmlnJiBlbmNvZGVyX2NvbmZpZywKIH0KIAogYm9vbCBJc1RlbXBv
cmFsTGF5ZXJzU3VwcG9ydGVkKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb2RlY19uYW1lKSB7Ci0gIHJl
dHVybiBDb2RlY05hbWVzRXEoY29kZWNfbmFtZSwga1ZwOENvZGVjTmFtZSkgfHwKLSAgICAgICAg
IENvZGVjTmFtZXNFcShjb2RlY19uYW1lLCBrVnA5Q29kZWNOYW1lKTsKKyAgcmV0dXJuIGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UoY29kZWNfbmFtZSwga1ZwOENvZGVjTmFtZSkgfHwKKyAgICAgICAg
IGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWNfbmFtZSwga1ZwOUNvZGVjTmFtZSk7CiB9CiAK
IHN0YXRpYyBzdGQ6OnN0cmluZyBDb2RlY1ZlY3RvclRvU3RyaW5nKGNvbnN0IHN0ZDo6dmVjdG9y
PFZpZGVvQ29kZWM+JiBjb2RlY3MpIHsKQEAgLTIyMCw5ICsyMjEsOSBAQCBzdGF0aWMgYm9vbCBW
YWxpZGF0ZVN0cmVhbVBhcmFtcyhjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSB7CiAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIGdpdmVuIGNvZGVjIGlzIGRpc2FsbG93ZWQgZnJvbSBkb2luZyBzaW11bGNh
c3QuCiBib29sIElzQ29kZWNCbGFja2xpc3RlZEZvclNpbXVsY2FzdChjb25zdCBzdGQ6OnN0cmlu
ZyYgY29kZWNfbmFtZSkgewogICByZXR1cm4gd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVk
KCJXZWJSVEMtSDI2NFNpbXVsY2FzdCIpCi0gICAgPyBDb2RlY05hbWVzRXEoY29kZWNfbmFtZSwg
a1ZwOUNvZGVjTmFtZSkKLSAgICA6IENvZGVjTmFtZXNFcShjb2RlY19uYW1lLCBrSDI2NENvZGVj
TmFtZSkgfHwKLSAgICAgIENvZGVjTmFtZXNFcShjb2RlY19uYW1lLCBrVnA5Q29kZWNOYW1lKTsK
KyAgICAgICAgICAgICA/IGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWNfbmFtZSwga1ZwOUNv
ZGVjTmFtZSkKKyAgICAgICAgICAgICA6IGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWNfbmFt
ZSwga0gyNjRDb2RlY05hbWUpIHx8CisgICAgICAgICAgICAgICAgICAgYWJzbDo6RXF1YWxzSWdu
b3JlQ2FzZShjb2RlY19uYW1lLCBrVnA5Q29kZWNOYW1lKTsKIH0KIAogLy8gVGhlIHNlbGVjdGVk
IHRocmVzaG9sZHMgZm9yIFFWR0EgYW5kIFZHQSBjb3JyZXNwb25kZWQgdG8gYSBRUCBhcm91bmQg
MTAuCkBAIC0zMzcsMTQgKzMzOCwxNCBAQCBXZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVv
U2VuZFN0cmVhbTo6Q29uZmlndXJlVmlkZW9FbmNvZGVyU2V0dGluZ3MoCiAgICAgZGVub2lzaW5n
ID0gcGFyYW1ldGVyc18ub3B0aW9ucy52aWRlb19ub2lzZV9yZWR1Y3Rpb24udmFsdWVfb3IoZmFs
c2UpOwogICB9CiAKLSAgaWYgKENvZGVjTmFtZXNFcShjb2RlYy5uYW1lLCBrSDI2NENvZGVjTmFt
ZSkpIHsKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwga0gyNjRDb2Rl
Y05hbWUpKSB7CiAgICAgd2VicnRjOjpWaWRlb0NvZGVjSDI2NCBoMjY0X3NldHRpbmdzID0KICAg
ICAgICAgd2VicnRjOjpWaWRlb0VuY29kZXI6OkdldERlZmF1bHRIMjY0U2V0dGluZ3MoKTsKICAg
ICBoMjY0X3NldHRpbmdzLmZyYW1lRHJvcHBpbmdPbiA9IGZyYW1lX2Ryb3BwaW5nOwogICAgIHJl
dHVybiBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PAogICAgICAgICB3ZWJydGM6OlZpZGVvRW5j
b2RlckNvbmZpZzo6SDI2NEVuY29kZXJTcGVjaWZpY1NldHRpbmdzPihoMjY0X3NldHRpbmdzKTsK
ICAgfQotICBpZiAoQ29kZWNOYW1lc0VxKGNvZGVjLm5hbWUsIGtWcDhDb2RlY05hbWUpKSB7Cisg
IGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjLm5hbWUsIGtWcDhDb2RlY05hbWUpKSB7
CiAgICAgd2VicnRjOjpWaWRlb0NvZGVjVlA4IHZwOF9zZXR0aW5ncyA9CiAgICAgICAgIHdlYnJ0
Yzo6VmlkZW9FbmNvZGVyOjpHZXREZWZhdWx0VnA4U2V0dGluZ3MoKTsKICAgICB2cDhfc2V0dGlu
Z3MuYXV0b21hdGljUmVzaXplT24gPSBhdXRvbWF0aWNfcmVzaXplOwpAQCAtMzU0LDcgKzM1NSw3
IEBAIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9TZW5kU3RyZWFtOjpDb25maWd1cmVW
aWRlb0VuY29kZXJTZXR0aW5ncygKICAgICByZXR1cm4gbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVj
dDwKICAgICAgICAgd2VicnRjOjpWaWRlb0VuY29kZXJDb25maWc6OlZwOEVuY29kZXJTcGVjaWZp
Y1NldHRpbmdzPih2cDhfc2V0dGluZ3MpOwogICB9Ci0gIGlmIChDb2RlY05hbWVzRXEoY29kZWMu
bmFtZSwga1ZwOUNvZGVjTmFtZSkpIHsKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29k
ZWMubmFtZSwga1ZwOUNvZGVjTmFtZSkpIHsKICAgICB3ZWJydGM6OlZpZGVvQ29kZWNWUDkgdnA5
X3NldHRpbmdzID0KICAgICAgICAgd2VicnRjOjpWaWRlb0VuY29kZXI6OkdldERlZmF1bHRWcDlT
ZXR0aW5ncygpOwogICAgIGNvbnN0IHNpemVfdCBkZWZhdWx0X251bV9zcGF0aWFsX2xheWVycyA9
CkBAIC00MzYsMjAgKzQzNywyNiBAQCB2b2lkIERlZmF1bHRVbnNpZ25hbGxlZFNzcmNIYW5kbGVy
OjpTZXREZWZhdWx0U2luaygKICNpZiBkZWZpbmVkKFVTRV9CVUlMVElOX1NXX0NPREVDUykKIFdl
YlJ0Y1ZpZGVvRW5naW5lOjpXZWJSdGNWaWRlb0VuZ2luZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeT4gZXh0ZXJuYWxfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
LAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5PiBleHRlcm5h
bF92aWRlb19kZWNvZGVyX2ZhY3RvcnkpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVv
RGVjb2RlckZhY3Rvcnk+IGV4dGVybmFsX3ZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAg
ICB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KQogICAgIDogZGVjb2Rlcl9mYWN0b3J5
XyhDb252ZXJ0VmlkZW9EZWNvZGVyRmFjdG9yeSgKICAgICAgICAgICBzdGQ6Om1vdmUoZXh0ZXJu
YWxfdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSkpLAogICAgICAgZW5jb2Rlcl9mYWN0b3J5XyhDb252
ZXJ0VmlkZW9FbmNvZGVyRmFjdG9yeSgKLSAgICAgICAgICBzdGQ6Om1vdmUoZXh0ZXJuYWxfdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5KSkpIHsKKyAgICAgICAgICBzdGQ6Om1vdmUoZXh0ZXJuYWxfdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5KSkpLAorICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8o
c3RkOjptb3ZlKHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkpKSB7CiAgIFJUQ19MT0co
TFNfSU5GTykgPDwgIldlYlJ0Y1ZpZGVvRW5naW5lOjpXZWJSdGNWaWRlb0VuZ2luZSgpIjsKIH0K
ICNlbmRpZgogCiBXZWJSdGNWaWRlb0VuZ2luZTo6V2ViUnRjVmlkZW9FbmdpbmUoCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4gdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LAotICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+
IHZpZGVvX2RlY29kZXJfZmFjdG9yeSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRl
b0RlY29kZXJGYWN0b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVf
cHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgICAgdmlkZW9f
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkKICAgICA6IGRlY29kZXJfZmFjdG9yeV8oc3RkOjpt
b3ZlKHZpZGVvX2RlY29kZXJfZmFjdG9yeSkpLAotICAgICAgZW5jb2Rlcl9mYWN0b3J5XyhzdGQ6
Om1vdmUodmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSkgeworICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyhz
dGQ6Om1vdmUodmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSksCisgICAgICBiaXRyYXRlX2FsbG9jYXRv
cl9mYWN0b3J5XyhzdGQ6Om1vdmUodmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkpIHsK
ICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiV2ViUnRjVmlkZW9FbmdpbmU6OldlYlJ0Y1ZpZGVvRW5n
aW5lKCkiOwogfQogCkBAIC00NTcsMTUgKzQ2NCwxNiBAQCBXZWJSdGNWaWRlb0VuZ2luZTo6fldl
YlJ0Y1ZpZGVvRW5naW5lKCkgewogICBSVENfTE9HKExTX0lORk8pIDw8ICJXZWJSdGNWaWRlb0Vu
Z2luZTo6fldlYlJ0Y1ZpZGVvRW5naW5lIjsKIH0KIAotV2ViUnRjVmlkZW9DaGFubmVsKiBXZWJS
dGNWaWRlb0VuZ2luZTo6Q3JlYXRlQ2hhbm5lbCgKK1ZpZGVvTWVkaWFDaGFubmVsKiBXZWJSdGNW
aWRlb0VuZ2luZTo6Q3JlYXRlTWVkaWFDaGFubmVsKAogICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwK
ICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYg
b3B0aW9ucykgewotICBSVENfTE9HKExTX0lORk8pIDw8ICJDcmVhdGVDaGFubmVsLiBPcHRpb25z
OiAiIDw8IG9wdGlvbnMuVG9TdHJpbmcoKTsKLSAgcmV0dXJuIG5ldyBXZWJSdGNWaWRlb0NoYW5u
ZWwoY2FsbCwgY29uZmlnLCBvcHRpb25zLCBlbmNvZGVyX2ZhY3RvcnlfLmdldCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyX2ZhY3RvcnlfLmdldCgpKTsKKyAgICBj
b25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRp
b25zJiBjcnlwdG9fb3B0aW9ucykgeworICBSVENfTE9HKExTX0lORk8pIDw8ICJDcmVhdGVNZWRp
YUNoYW5uZWwuIE9wdGlvbnM6ICIgPDwgb3B0aW9ucy5Ub1N0cmluZygpOworICByZXR1cm4gbmV3
IFdlYlJ0Y1ZpZGVvQ2hhbm5lbChjYWxsLCBjb25maWcsIG9wdGlvbnMsIGNyeXB0b19vcHRpb25z
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfLmdldCgp
LCBkZWNvZGVyX2ZhY3RvcnlfLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKSk7CiB9Ci0KIHN0ZDo6dmVjdG9yPFZp
ZGVvQ29kZWM+IFdlYlJ0Y1ZpZGVvRW5naW5lOjpjb2RlY3MoKSBjb25zdCB7CiAgIHJldHVybiBB
c3NpZ25QYXlsb2FkVHlwZXNBbmREZWZhdWx0Q29kZWNzKGVuY29kZXJfZmFjdG9yeV8uZ2V0KCkp
OwogfQpAQCAtNDk2LDYgKzUwNCwxMSBAQCBSdHBDYXBhYmlsaXRpZXMgV2ViUnRjVmlkZW9Fbmdp
bmU6OkdldENhcGFiaWxpdGllcygpIGNvbnN0IHsKICAgY2FwYWJpbGl0aWVzLmhlYWRlcl9leHRl
bnNpb25zLnB1c2hfYmFjaygKICAgICAgIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uKHdlYnJ0Yzo6UnRw
RXh0ZW5zaW9uOjprRnJhbWVNYXJraW5nVXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2VicnRjOjpSdHBFeHRlbnNpb246OmtGcmFtZU1hcmtpbmdEZWZhdWx0SWQpKTsKKyAgaWYgKHdl
YnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUdlbmVyaWNEZXNjcmlwdG9yQWR2
ZXJ0aXNlZCIpKSB7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlcl9leHRlbnNpb25zLnB1c2hfYmFj
ayh3ZWJydGM6OlJ0cEV4dGVuc2lvbigKKyAgICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb246OmtH
ZW5lcmljRnJhbWVEZXNjcmlwdG9yVXJpLAorICAgICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6
a0dlbmVyaWNGcmFtZURlc2NyaXB0b3JEZWZhdWx0SWQpKTsKKyAgfQogICAvLyBUT0RPKGJ1Z3Mu
d2VicnRjLm9yZy80MDUwKTogQWRkIE1JRCBoZWFkZXIgZXh0ZW5zaW9uIGFzIGNhcGFiaWxpdHkg
b25jZSBNSUQKICAgLy8gZGVtdXhpbmcgaXMgY29tcGxldGVkLgogICAvLyBjYXBhYmlsaXRpZXMu
aGVhZGVyX2V4dGVuc2lvbnMucHVzaF9iYWNrKHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uKApAQCAtNTA3
LDE2ICs1MjAsMjMgQEAgV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNWaWRlb0NoYW5uZWwoCiAg
ICAgd2VicnRjOjpDYWxsKiBjYWxsLAogICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCiAg
ICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zLAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRv
T3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCiAgICAgd2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5
KiBlbmNvZGVyX2ZhY3RvcnksCi0gICAgd2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5KiBkZWNv
ZGVyX2ZhY3RvcnkpCisgICAgd2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5KiBkZWNvZGVyX2Zh
Y3RvcnksCisgICAgd2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KiBiaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5KQogICAgIDogVmlkZW9NZWRpYUNoYW5uZWwoY29uZmlnKSwKICAg
ICAgIGNhbGxfKGNhbGwpLAogICAgICAgdW5zaWduYWxsZWRfc3NyY19oYW5kbGVyXygmZGVmYXVs
dF91bnNpZ25hbGxlZF9zc3JjX2hhbmRsZXJfKSwKICAgICAgIHZpZGVvX2NvbmZpZ18oY29uZmln
LnZpZGVvKSwKICAgICAgIGVuY29kZXJfZmFjdG9yeV8oZW5jb2Rlcl9mYWN0b3J5KSwKICAgICAg
IGRlY29kZXJfZmFjdG9yeV8oZGVjb2Rlcl9mYWN0b3J5KSwKKyAgICAgIGJpdHJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnlfKGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkpLAorICAgICAgcHJlZmVycmVk
X2RzY3BfKHJ0Yzo6RFNDUF9ERUZBVUxUKSwKICAgICAgIGRlZmF1bHRfc2VuZF9vcHRpb25zXyhv
cHRpb25zKSwKLSAgICAgIGxhc3Rfc3RhdHNfbG9nX21zXygtMSkgeworICAgICAgbGFzdF9zdGF0
c19sb2dfbXNfKC0xKSwKKyAgICAgIGRpc2NhcmRfdW5rbm93bl9zc3JjX3BhY2tldHNfKHdlYnJ0
Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgKKyAgICAgICAgICAiV2ViUlRDLVZpZGVvLURpc2Nh
cmRQYWNrZXRzV2l0aFVua25vd25Tc3JjIikpLAorICAgICAgY3J5cHRvX29wdGlvbnNfKGNyeXB0
b19vcHRpb25zKSB7CiAgIFJUQ19EQ0hFQ0sodGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRU
aHJlYWQoKSk7CiAKICAgcnRjcF9yZWNlaXZlcl9yZXBvcnRfc3NyY18gPSBrRGVmYXVsdFJ0Y3BS
ZWNlaXZlclJlcG9ydFNzcmM7CkBAIC02MTIsNiArNjMyLDkgQEAgYm9vbCBXZWJSdGNWaWRlb0No
YW5uZWw6OkdldENoYW5nZWRTZW5kUGFyYW1ldGVycygKICAgICBjaGFuZ2VkX3BhcmFtcy0+Y29k
ZWMgPSBzZWxlY3RlZF9zZW5kX2NvZGVjOwogCiAgIC8vIEhhbmRsZSBSVFAgaGVhZGVyIGV4dGVu
c2lvbnMuCisgIGlmIChwYXJhbXMuZXh0bWFwX2FsbG93X21peGVkICE9IEV4dG1hcEFsbG93TWl4
ZWQoKSkgeworICAgIGNoYW5nZWRfcGFyYW1zLT5leHRtYXBfYWxsb3dfbWl4ZWQgPSBwYXJhbXMu
ZXh0bWFwX2FsbG93X21peGVkOworICB9CiAgIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwRXh0ZW5z
aW9uPiBmaWx0ZXJlZF9leHRlbnNpb25zID0gRmlsdGVyUnRwRXh0ZW5zaW9ucygKICAgICAgIHBh
cmFtcy5leHRlbnNpb25zLCB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6SXNTdXBwb3J0ZWRGb3JWaWRl
bywgdHJ1ZSk7CiAgIGlmICghc2VuZF9ydHBfZXh0ZW5zaW9uc18gfHwgKCpzZW5kX3J0cF9leHRl
bnNpb25zXyAhPSBmaWx0ZXJlZF9leHRlbnNpb25zKSkgewpAQCAtNjQ5LDcgKzY3Miw3IEBAIGJv
b2wgV2ViUnRjVmlkZW9DaGFubmVsOjpHZXRDaGFuZ2VkU2VuZFBhcmFtZXRlcnMoCiB9CiAKIHJ0
Yzo6RGlmZlNlcnZDb2RlUG9pbnQgV2ViUnRjVmlkZW9DaGFubmVsOjpQcmVmZXJyZWREc2NwKCkg
Y29uc3QgewotICByZXR1cm4gcnRjOjpEU0NQX0FGNDE7CisgIHJldHVybiBwcmVmZXJyZWRfZHNj
cF87CiB9CiAKIGJvb2wgV2ViUnRjVmlkZW9DaGFubmVsOjpTZXRTZW5kUGFyYW1ldGVycyhjb25z
dCBWaWRlb1NlbmRQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKQEAgLTY2Niw2ICs2ODksOSBAQCBib29s
IFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6U2V0U2VuZFBhcmFtZXRlcnMoY29uc3QgVmlkZW9TZW5kUGFy
YW1ldGVycyYgcGFyYW1zKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiVXNpbmcgY29kZWM6
ICIgPDwgY29kZWNfc2V0dGluZ3MuY29kZWMuVG9TdHJpbmcoKTsKICAgfQogCisgIGlmIChjaGFu
Z2VkX3BhcmFtcy5leHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICBTZXRFeHRtYXBBbGxvd01peGVk
KCpjaGFuZ2VkX3BhcmFtcy5leHRtYXBfYWxsb3dfbWl4ZWQpOworICB9CiAgIGlmIChjaGFuZ2Vk
X3BhcmFtcy5ydHBfaGVhZGVyX2V4dGVuc2lvbnMpIHsKICAgICBzZW5kX3J0cF9leHRlbnNpb25z
XyA9IGNoYW5nZWRfcGFyYW1zLnJ0cF9oZWFkZXJfZXh0ZW5zaW9uczsKICAgfQpAQCAtNzY0LDEx
ICs3OTAsMzQgQEAgd2VicnRjOjpSVENFcnJvciBXZWJSdGNWaWRlb0NoYW5uZWw6OlNldFJ0cFNl
bmRQYXJhbWV0ZXJzKAogICAvLyBkaWZmZXJlbnQgb3JkZXIgKHdoaWNoIHNob3VsZCBjaGFuZ2Ug
dGhlIHNlbmQgY29kZWMpLgogICB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgY3VycmVudF9wYXJhbWV0
ZXJzID0gR2V0UnRwU2VuZFBhcmFtZXRlcnMoc3NyYyk7CiAgIGlmIChjdXJyZW50X3BhcmFtZXRl
cnMuY29kZWNzICE9IHBhcmFtZXRlcnMuY29kZWNzKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIlVzaW5nIFNldFBhcmFtZXRlcnMgdG8gY2hhbmdlIHRoZSBzZXQgb2YgY29kZWNzICIKLSAg
ICAgICAgICAgICAgICAgICAgICA8PCAiaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuIjsKKyAg
ICBSVENfRExPRyhMU19FUlJPUikgPDwgIlVzaW5nIFNldFBhcmFtZXRlcnMgdG8gY2hhbmdlIHRo
ZSBzZXQgb2YgY29kZWNzICIKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgImlzIG5vdCBjdXJy
ZW50bHkgc3VwcG9ydGVkLiI7CiAgICAgcmV0dXJuIHdlYnJ0Yzo6UlRDRXJyb3Iod2VicnRjOjpS
VENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SKTsKICAgfQogCisgIGlmICghcGFyYW1ldGVycy5l
bmNvZGluZ3MuZW1wdHkoKSkgeworICAgIGNvbnN0IGF1dG8mIHByaW9yaXR5ID0gcGFyYW1ldGVy
cy5lbmNvZGluZ3NbMF0ubmV0d29ya19wcmlvcml0eTsKKyAgICBydGM6OkRpZmZTZXJ2Q29kZVBv
aW50IG5ld19kc2NwID0gcnRjOjpEU0NQX0RFRkFVTFQ7CisgICAgaWYgKHByaW9yaXR5ID09IDAu
NSAqIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkpIHsKKyAgICAgIG5ld19kc2NwID0g
cnRjOjpEU0NQX0NTMTsKKyAgICB9IGVsc2UgaWYgKHByaW9yaXR5ID09IHdlYnJ0Yzo6a0RlZmF1
bHRCaXRyYXRlUHJpb3JpdHkpIHsKKyAgICAgIG5ld19kc2NwID0gcnRjOjpEU0NQX0RFRkFVTFQ7
CisgICAgfSBlbHNlIGlmIChwcmlvcml0eSA9PSAyLjAgKiB3ZWJydGM6OmtEZWZhdWx0Qml0cmF0
ZVByaW9yaXR5KSB7CisgICAgICBuZXdfZHNjcCA9IHJ0Yzo6RFNDUF9BRjQyOworICAgIH0gZWxz
ZSBpZiAocHJpb3JpdHkgPT0gNC4wICogd2VicnRjOjprRGVmYXVsdEJpdHJhdGVQcmlvcml0eSkg
eworICAgICAgbmV3X2RzY3AgPSBydGM6OkRTQ1BfQUY0MTsKKyAgICB9IGVsc2UgeworICAgICAg
UlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVjZWl2ZWQgaW52YWxpZCBzZW5kIG5ldHdvcmsgcHJp
b3JpdHk6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcHJpb3JpdHk7CisgICAgICBy
ZXR1cm4gd2VicnRjOjpSVENFcnJvcih3ZWJydGM6OlJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9SQU5H
RSk7CisgICAgfQorCisgICAgaWYgKG5ld19kc2NwICE9IHByZWZlcnJlZF9kc2NwXykgeworICAg
ICAgcHJlZmVycmVkX2RzY3BfID0gbmV3X2RzY3A7CisgICAgICBNZWRpYUNoYW5uZWw6OlVwZGF0
ZURzY3AoKTsKKyAgICB9CisgIH0KKwogICByZXR1cm4gaXQtPnNlY29uZC0+U2V0UnRwUGFyYW1l
dGVycyhwYXJhbWV0ZXJzKTsKIH0KIApAQCAtODMyLDggKzg4MSw4IEBAIGJvb2wgV2ViUnRjVmlk
ZW9DaGFubmVsOjpTZXRSdHBSZWNlaXZlUGFyYW1ldGVycygKIAogICB3ZWJydGM6OlJ0cFBhcmFt
ZXRlcnMgY3VycmVudF9wYXJhbWV0ZXJzID0gR2V0UnRwUmVjZWl2ZVBhcmFtZXRlcnMoc3NyYyk7
CiAgIGlmIChjdXJyZW50X3BhcmFtZXRlcnMgIT0gcGFyYW1ldGVycykgewotICAgIFJUQ19MT0co
TFNfRVJST1IpIDw8ICJDaGFuZ2luZyB0aGUgUlRQIHJlY2VpdmUgcGFyYW1ldGVycyBpcyBjdXJy
ZW50bHkgIgotICAgICAgICAgICAgICAgICAgICAgIDw8ICJ1bnN1cHBvcnRlZC4iOworICAgIFJU
Q19ETE9HKExTX0VSUk9SKSA8PCAiQ2hhbmdpbmcgdGhlIFJUUCByZWNlaXZlIHBhcmFtZXRlcnMg
aXMgY3VycmVudGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgInVuc3VwcG9ydGVkLiI7
CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIHJldHVybiB0cnVlOwpAQCAtOTQ5LDcgKzk5OCw3
IEBAIGJvb2wgV2ViUnRjVmlkZW9DaGFubmVsOjpTZXRTZW5kKGJvb2wgc2VuZCkgewogICBUUkFD
RV9FVkVOVDAoIndlYnJ0YyIsICJXZWJSdGNWaWRlb0NoYW5uZWw6OlNldFNlbmQiKTsKICAgUlRD
X0xPRyhMU19WRVJCT1NFKSA8PCAiU2V0U2VuZDogIiA8PCAoc2VuZCA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOwogICBpZiAoc2VuZCAmJiAhc2VuZF9jb2RlY18pIHsKLSAgICBSVENfTE9HKExTX0VSUk9S
KSA8PCAiU2V0U2VuZCh0cnVlKSBjYWxsZWQgYmVmb3JlIHNldHRpbmcgY29kZWMuIjsKKyAgICBS
VENfRExPRyhMU19FUlJPUikgPDwgIlNldFNlbmQodHJ1ZSkgY2FsbGVkIGJlZm9yZSBzZXR0aW5n
IGNvZGVjLiI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIHsKQEAgLTEwMjgsNiArMTA3Nywx
MSBAQCBib29sIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6QWRkU2VuZFN0cmVhbShjb25zdCBTdHJlYW1Q
YXJhbXMmIHNwKSB7CiAgIGNvbmZpZy5lbmNvZGVyX3NldHRpbmdzLmV4cGVyaW1lbnRfY3B1X2xv
YWRfZXN0aW1hdG9yID0KICAgICAgIHZpZGVvX2NvbmZpZ18uZXhwZXJpbWVudF9jcHVfbG9hZF9l
c3RpbWF0b3I7CiAgIGNvbmZpZy5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9IGVu
Y29kZXJfZmFjdG9yeV87CisgIGNvbmZpZy5lbmNvZGVyX3NldHRpbmdzLmJpdHJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnkgPQorICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV87CisgIGNvbmZp
Zy5jcnlwdG9fb3B0aW9ucyA9IGNyeXB0b19vcHRpb25zXzsKKyAgY29uZmlnLnJ0cC5leHRtYXBf
YWxsb3dfbWl4ZWQgPSBFeHRtYXBBbGxvd01peGVkKCk7CisgIGNvbmZpZy5ydGNwX3JlcG9ydF9p
bnRlcnZhbF9tcyA9IHZpZGVvX2NvbmZpZ18ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM7CiAKICAg
V2ViUnRjVmlkZW9TZW5kU3RyZWFtKiBzdHJlYW0gPSBuZXcgV2ViUnRjVmlkZW9TZW5kU3RyZWFt
KAogICAgICAgY2FsbF8sIHNwLCBzdGQ6Om1vdmUoY29uZmlnKSwgZGVmYXVsdF9zZW5kX29wdGlv
bnNfLApAQCAtMTE0NCw2ICsxMTk4LDcgQEAgYm9vbCBXZWJSdGNWaWRlb0NoYW5uZWw6OkFkZFJl
Y3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCwKICAgd2VicnRjOjpGbGV4ZmVjUmVjZWl2
ZVN0cmVhbTo6Q29uZmlnIGZsZXhmZWNfY29uZmlnKHRoaXMpOwogICBDb25maWd1cmVSZWNlaXZl
clJ0cCgmY29uZmlnLCAmZmxleGZlY19jb25maWcsIHNwKTsKIAorICBjb25maWcuY3J5cHRvX29w
dGlvbnMgPSBjcnlwdG9fb3B0aW9uc187CiAgIC8vIFRPRE8obmlzc2UpOiBSZW5hbWUgY29uZmln
IHZhcmlhYmxlIHRvIGF2b2lkIG5lZ2F0aW9uLgogICBjb25maWcuZGlzYWJsZV9wcmVyZW5kZXJl
cl9zbW9vdGhpbmcgPQogICAgICAgIXZpZGVvX2NvbmZpZ18uZW5hYmxlX3ByZXJlbmRlcmVyX3Nt
b290aGluZzsKQEAgLTEzMzIsMTAgKzEzODcsMTAgQEAgdm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6
OkZpbGxTZW5kQW5kUmVjZWl2ZUNvZGVjU3RhdHMoCiB9CiAKIHZvaWQgV2ViUnRjVmlkZW9DaGFu
bmVsOjpPblBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0
VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgY29uc3Qgd2VicnRjOjpQYWNrZXRS
ZWNlaXZlcjo6RGVsaXZlcnlTdGF0dXMgZGVsaXZlcnlfcmVzdWx0ID0KICAgICAgIGNhbGxfLT5S
ZWNlaXZlcigpLT5EZWxpdmVyUGFja2V0KHdlYnJ0Yzo6TWVkaWFUeXBlOjpWSURFTywgKnBhY2tl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lLnRp
bWVzdGFtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRf
dGltZV91cyk7CiAgIHN3aXRjaCAoZGVsaXZlcnlfcmVzdWx0KSB7CiAgICAgY2FzZSB3ZWJydGM6
OlBhY2tldFJlY2VpdmVyOjpERUxJVkVSWV9PSzoKICAgICAgIHJldHVybjsKQEAgLTEzNDUsNiAr
MTQwMCwxMCBAQCB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZChydGM6
OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCiAgICAgICBicmVhazsKICAgfQogCisgIGlmIChk
aXNjYXJkX3Vua25vd25fc3NyY19wYWNrZXRzXykgeworICAgIHJldHVybjsKKyAgfQorCiAgIHVp
bnQzMl90IHNzcmMgPSAwOwogICBpZiAoIUdldFJ0cFNzcmMocGFja2V0LT5jZGF0YSgpLCBwYWNr
ZXQtPnNpemUoKSwgJnNzcmMpKSB7CiAgICAgcmV0dXJuOwpAQCAtMTM3OSw3ICsxNDM4LDcgQEAg
dm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6Ok9uUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0
ZUJ1ZmZlciogcGFja2V0LAogICB9CiAKICAgaWYgKGNhbGxfLT5SZWNlaXZlcigpLT5EZWxpdmVy
UGFja2V0KHdlYnJ0Yzo6TWVkaWFUeXBlOjpWSURFTywgKnBhY2tldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lLnRpbWVzdGFtcCkgIT0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lX3VzKSAhPQogICAg
ICAgd2VicnRjOjpQYWNrZXRSZWNlaXZlcjo6REVMSVZFUllfT0spIHsKICAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gZGVsaXZlciBSVFAgcGFja2V0IG9uIHJlLWRlbGl2ZXJ5
LiI7CiAgICAgcmV0dXJuOwpAQCAtMTM4NywxMyArMTQ0NiwxMyBAQCB2b2lkIFdlYlJ0Y1ZpZGVv
Q2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQs
CiB9CiAKIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpPblJ0Y3BSZWNlaXZlZChydGM6OkNvcHlP
bldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAg
Ly8gVE9ETyhwYm9zKTogQ2hlY2sgd2VicnRjOjpQYWNrZXRSZWNlaXZlcjo6REVMSVZFUllfT0sg
b25jZSB3ZSBkZWxpdmVyCiAgIC8vIGZvciBib3RoIGF1ZGlvIGFuZCB2aWRlbyBvbiB0aGUgc2Ft
ZSBwYXRoLiBTaW5jZSBCdW5kbGVGaWx0ZXIgZG9lc24ndAogICAvLyBmaWx0ZXIgUlRDUCBhbnlt
b3JlIGluY29taW5nIFJUQ1AgcGFja2V0cyBjb3VsZCd2ZSBiZWVuIGdvaW5nIHRvIGF1ZGlvIChz
bwogICAvLyBsb2dnaW5nIGZhaWx1cmVzIHNwYW0gdGhlIGxvZykuCiAgIGNhbGxfLT5SZWNlaXZl
cigpLT5EZWxpdmVyUGFja2V0KHdlYnJ0Yzo6TWVkaWFUeXBlOjpWSURFTywgKnBhY2tldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWUudGltZXN0YW1wKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWVfdXMpOwogfQog
CiB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6T25SZWFkeVRvU2VuZChib29sIHJlYWR5KSB7CkBA
IC0xNDEyLDMxICsxNDcxLDQ2IEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpPbk5ldHdvcmtS
b3V0ZUNoYW5nZWQoCiAgICAgICBuZXR3b3JrX3JvdXRlLnBhY2tldF9vdmVyaGVhZCk7CiB9CiAK
LXZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpTZXRJbnRlcmZhY2UoTmV0d29ya0ludGVyZmFjZSog
aWZhY2UpIHsKLSAgTWVkaWFDaGFubmVsOjpTZXRJbnRlcmZhY2UoaWZhY2UpOwordm9pZCBXZWJS
dGNWaWRlb0NoYW5uZWw6OlNldEludGVyZmFjZSgKKyAgICBOZXR3b3JrSW50ZXJmYWNlKiBpZmFj
ZSwKKyAgICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQp
IHsKKyAgLy8gVE9ETyhzdWtoYW5vdik6IFZpZGVvIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVk
IHdpdGggbWVkaWEgdHJhbnNwb3J0LgorICBSVENfQ0hFQ0sobWVkaWFfdHJhbnNwb3J0ID09IG51
bGxwdHIpOworCisgIE1lZGlhQ2hhbm5lbDo6U2V0SW50ZXJmYWNlKGlmYWNlLCBtZWRpYV90cmFu
c3BvcnQpOwogICAvLyBTZXQgdGhlIFJUUCByZWN2L3NlbmQgYnVmZmVyIHRvIGEgYmlnZ2VyIHNp
emUuCiAKLSAgLy8gVGhlIGdyb3VwIGhlcmUgY2FuIGJlIGVpdGhlciBhIHBvc2l0aXZlIGludGVn
ZXIgd2l0aCBhbiBleHBsaWNpdCBzaXplLCBpbgotICAvLyB3aGljaCBjYXNlIHRoYXQgaXMgdXNl
ZCBhcyBzaXplLiBBbGwgb3RoZXIgdmFsdWVzIHNoYWxsIHJlc3VsdCBpbiB0aGUKLSAgLy8gZGVm
YXVsdCB2YWx1ZSBiZWluZyB1c2VkLgotICBjb25zdCBzdGQ6OnN0cmluZyBncm91cF9uYW1lID0K
LSAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZSgiV2ViUlRDLUluY3JlYXNl
ZFJlY2VpdmVidWZmZXJzIik7Ci0gIGludCByZWN2X2J1ZmZlcl9zaXplID0ga1ZpZGVvUnRwQnVm
ZmVyU2l6ZTsKLSAgaWYgKCFncm91cF9uYW1lLmVtcHR5KCkgJiYKLSAgICAgIChzc2NhbmYoZ3Jv
dXBfbmFtZS5jX3N0cigpLCAiJWQiLCAmcmVjdl9idWZmZXJfc2l6ZSkgIT0gMSB8fAotICAgICAg
IHJlY3ZfYnVmZmVyX3NpemUgPD0gMCkpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJJ
bnZhbGlkIHJlY2VpdmUgYnVmZmVyIHNpemU6ICIgPDwgZ3JvdXBfbmFtZTsKLSAgICByZWN2X2J1
ZmZlcl9zaXplID0ga1ZpZGVvUnRwQnVmZmVyU2l6ZTsKLSAgfQogICBNZWRpYUNoYW5uZWw6OlNl
dE9wdGlvbihOZXR3b3JrSW50ZXJmYWNlOjpTVF9SVFAsIHJ0Yzo6U29ja2V0OjpPUFRfUkNWQlVG
LAotICAgICAgICAgICAgICAgICAgICAgICAgICByZWN2X2J1ZmZlcl9zaXplKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAga1ZpZGVvUnRwUmVjdkJ1ZmZlclNpemUpOwogCiAgIC8vIFNwZWN1
bGF0aXZlIGNoYW5nZSB0byBpbmNyZWFzZSB0aGUgb3V0Ym91bmQgc29ja2V0IGJ1ZmZlciBzaXpl
LgogICAvLyBJbiBiLzE1MTUyMjU3LCB3ZSBhcmUgc2VlaW5nIGEgc2lnbmlmaWNhbnQgbnVtYmVy
IG9mIHBhY2tldHMgZGlzY2FyZGVkCiAgIC8vIGR1ZSB0byBsYWNrIG9mIHNvY2tldCBidWZmZXIg
c3BhY2UsIGFsdGhvdWdoIGl0J3Mgbm90IHlldCBjbGVhciB3aGF0IHRoZQogICAvLyBpZGVhbCB2
YWx1ZSBzaG91bGQgYmUuCiAgIE1lZGlhQ2hhbm5lbDo6U2V0T3B0aW9uKE5ldHdvcmtJbnRlcmZh
Y2U6OlNUX1JUUCwgcnRjOjpTb2NrZXQ6Ok9QVF9TTkRCVUYsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGtWaWRlb1J0cEJ1ZmZlclNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgICBr
VmlkZW9SdHBTZW5kQnVmZmVyU2l6ZSk7Cit9CisKK3ZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpT
ZXRGcmFtZURlY3J5cHRvcigKKyAgICB1aW50MzJfdCBzc3JjLAorICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OkZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IpIHsK
KyAgcnRjOjpDcml0U2NvcGUgc3RyZWFtX2xvY2soJnN0cmVhbV9jcml0Xyk7CisgIGF1dG8gbWF0
Y2hpbmdfc3RyZWFtID0gcmVjZWl2ZV9zdHJlYW1zXy5maW5kKHNzcmMpOworICBpZiAobWF0Y2hp
bmdfc3RyZWFtICE9IHJlY2VpdmVfc3RyZWFtc18uZW5kKCkpIHsKKyAgICBtYXRjaGluZ19zdHJl
YW0tPnNlY29uZC0+U2V0RnJhbWVEZWNyeXB0b3IoZnJhbWVfZGVjcnlwdG9yKTsKKyAgfQorfQor
Cit2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6U2V0RnJhbWVFbmNyeXB0b3IoCisgICAgdWludDMy
X3Qgc3NyYywKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZUVuY3J5cHRvcklu
dGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yKSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIHN0cmVhbV9sb2Nr
KCZzdHJlYW1fY3JpdF8pOworICBhdXRvIG1hdGNoaW5nX3N0cmVhbSA9IHNlbmRfc3RyZWFtc18u
ZmluZChzc3JjKTsKKyAgaWYgKG1hdGNoaW5nX3N0cmVhbSAhPSBzZW5kX3N0cmVhbXNfLmVuZCgp
KSB7CisgICAgbWF0Y2hpbmdfc3RyZWFtLT5zZWNvbmQtPlNldEZyYW1lRW5jcnlwdG9yKGZyYW1l
X2VuY3J5cHRvcik7CisgIH0gZWxzZSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIk5vIHN0
cmVhbSBmb3VuZCB0byBhdHRhY2ggZnJhbWUgZW5jcnlwdG9yIjsKKyAgfQogfQogCiBhYnNsOjpv
cHRpb25hbDx1aW50MzJfdD4gV2ViUnRjVmlkZW9DaGFubmVsOjpHZXREZWZhdWx0UmVjZWl2ZVN0
cmVhbVNzcmMoKSB7CkBAIC0xNDc0LDYgKzE1NDgsMTAgQEAgYm9vbCBXZWJSdGNWaWRlb0NoYW5u
ZWw6OlNlbmRSdHAoY29uc3QgdWludDhfdCogZGF0YSwKICAgaWYgKERzY3BFbmFibGVkKCkpIHsK
ICAgICBydGNfb3B0aW9ucy5kc2NwID0gUHJlZmVycmVkRHNjcCgpOwogICB9CisgIHJ0Y19vcHRp
b25zLmluZm9fc2lnbmFsZWRfYWZ0ZXJfc2VudC5pbmNsdWRlZF9pbl9mZWVkYmFjayA9CisgICAg
ICBvcHRpb25zLmluY2x1ZGVkX2luX2ZlZWRiYWNrOworICBydGNfb3B0aW9ucy5pbmZvX3NpZ25h
bGVkX2FmdGVyX3NlbnQuaW5jbHVkZWRfaW5fYWxsb2NhdGlvbiA9CisgICAgICBvcHRpb25zLmlu
Y2x1ZGVkX2luX2FsbG9jYXRpb247CiAgIHJldHVybiBNZWRpYUNoYW5uZWw6OlNlbmRQYWNrZXQo
JnBhY2tldCwgcnRjX29wdGlvbnMpOwogfQogCkBAIC0xNDgzLDYgKzE1NjEsNyBAQCBib29sIFdl
YlJ0Y1ZpZGVvQ2hhbm5lbDo6U2VuZFJ0Y3AoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxl
bikgewogICBpZiAoRHNjcEVuYWJsZWQoKSkgewogICAgIHJ0Y19vcHRpb25zLmRzY3AgPSBQcmVm
ZXJyZWREc2NwKCk7CiAgIH0KKwogICByZXR1cm4gTWVkaWFDaGFubmVsOjpTZW5kUnRjcCgmcGFj
a2V0LCBydGNfb3B0aW9ucyk7CiB9CiAKQEAgLTE1NjksNyArMTY0OCw2IEBAIFdlYlJ0Y1ZpZGVv
Q2hhbm5lbDo6V2ViUnRjVmlkZW9TZW5kU3RyZWFtOjpXZWJSdGNWaWRlb1NlbmRTdHJlYW0oCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gd2VicnRjOjpSdGNwTW9k
ZTo6a1JlZHVjZWRTaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogd2VicnRjOjpSdGNwTW9kZTo6a0NvbXBvdW5kOwogICBwYXJhbWV0ZXJzXy5jb25maWcucnRw
Lm1pZCA9IHNlbmRfcGFyYW1zLm1pZDsKLQogICBydHBfcGFyYW1ldGVyc18ucnRjcC5yZWR1Y2Vk
X3NpemUgPSBzZW5kX3BhcmFtcy5ydGNwLnJlZHVjZWRfc2l6ZTsKIAogICBpZiAoY29kZWNfc2V0
dGluZ3MpIHsKQEAgLTE2OTksNiArMTc3NywxMCBAQCB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6
V2ViUnRjVmlkZW9TZW5kU3RyZWFtOjpTZXRTZW5kUGFyYW1ldGVycygKICAgICAgICAgcGFyYW1l
dGVyc18uY29uZmlnLnJ0cC5ydGNwX21vZGUgPT0gd2VicnRjOjpSdGNwTW9kZTo6a1JlZHVjZWRT
aXplOwogICAgIHJlY3JlYXRlX3N0cmVhbSA9IHRydWU7CiAgIH0KKyAgaWYgKHBhcmFtcy5leHRt
YXBfYWxsb3dfbWl4ZWQpIHsKKyAgICBwYXJhbWV0ZXJzXy5jb25maWcucnRwLmV4dG1hcF9hbGxv
d19taXhlZCA9ICpwYXJhbXMuZXh0bWFwX2FsbG93X21peGVkOworICAgIHJlY3JlYXRlX3N0cmVh
bSA9IHRydWU7CisgIH0KICAgaWYgKHBhcmFtcy5ydHBfaGVhZGVyX2V4dGVuc2lvbnMpIHsKICAg
ICBwYXJhbWV0ZXJzXy5jb25maWcucnRwLmV4dGVuc2lvbnMgPSAqcGFyYW1zLnJ0cF9oZWFkZXJf
ZXh0ZW5zaW9uczsKICAgICBydHBfcGFyYW1ldGVyc18uaGVhZGVyX2V4dGVuc2lvbnMgPSAqcGFy
YW1zLnJ0cF9oZWFkZXJfZXh0ZW5zaW9uczsKQEAgLTE3OTksNiArMTg4MSwxNSBAQCBXZWJSdGNW
aWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvU2VuZFN0cmVhbTo6R2V0UnRwUGFyYW1ldGVycygpIGNv
bnN0IHsKICAgcmV0dXJuIHJ0cF9wYXJhbWV0ZXJzXzsKIH0KIAordm9pZCBXZWJSdGNWaWRlb0No
YW5uZWw6OldlYlJ0Y1ZpZGVvU2VuZFN0cmVhbTo6U2V0RnJhbWVFbmNyeXB0b3IoCisgICAgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2Vu
Y3J5cHRvcikgeworICBSVENfRENIRUNLX1JVTl9PTigmdGhyZWFkX2NoZWNrZXJfKTsKKyAgcGFy
YW1ldGVyc18uY29uZmlnLmZyYW1lX2VuY3J5cHRvciA9IGZyYW1lX2VuY3J5cHRvcjsKKyAgaWYg
KHN0cmVhbV8pIHsKKyAgICBSZWNyZWF0ZVdlYlJ0Y1N0cmVhbSgpOworICB9Cit9CisKIHZvaWQg
V2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNWaWRlb1NlbmRTdHJlYW06OlVwZGF0ZVNlbmRTdGF0
ZSgpIHsKICAgUlRDX0RDSEVDS19SVU5fT04oJnRocmVhZF9jaGVja2VyXyk7CiAgIGlmIChzZW5k
aW5nXykgewpAQCAtMjE2MSwyNiArMjI1MiwyMCBAQCBXZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0
Y1ZpZGVvUmVjZWl2ZVN0cmVhbTo6R2V0U291cmNlcygpIHsKICAgcmV0dXJuIHN0cmVhbV8tPkdl
dFNvdXJjZXMoKTsKIH0KIAotYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+Ci1XZWJSdGNWaWRlb0No
YW5uZWw6OldlYlJ0Y1ZpZGVvUmVjZWl2ZVN0cmVhbTo6R2V0Rmlyc3RQcmltYXJ5U3NyYygpIGNv
bnN0IHsKK3dlYnJ0Yzo6UnRwUGFyYW1ldGVycworV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNW
aWRlb1JlY2VpdmVTdHJlYW06OkdldFJ0cFBhcmFtZXRlcnMoKSBjb25zdCB7CisgIHdlYnJ0Yzo6
UnRwUGFyYW1ldGVycyBydHBfcGFyYW1ldGVyczsKKwogICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4g
cHJpbWFyeV9zc3JjczsKICAgc3RyZWFtX3BhcmFtc18uR2V0UHJpbWFyeVNzcmNzKCZwcmltYXJ5
X3NzcmNzKTsKLQotICBpZiAocHJpbWFyeV9zc3Jjcy5lbXB0eSgpKSB7Ci0gICAgUlRDX0xPRyhM
U19XQVJOSU5HKQotICAgICAgICA8PCAiRW1wdHkgcHJpbWFyeSBzc3JjcyB2ZWN0b3IsIHJldHVy
bmluZyBlbXB0eSBvcHRpb25hbCI7Ci0gICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7Ci0gIH0gZWxz
ZSB7Ci0gICAgcmV0dXJuIHByaW1hcnlfc3NyY3NbMF07CisgIGZvciAodWludDMyX3Qgc3NyYyA6
IHByaW1hcnlfc3NyY3MpIHsKKyAgICBydHBfcGFyYW1ldGVycy5lbmNvZGluZ3MuZW1wbGFjZV9i
YWNrKCk7CisgICAgcnRwX3BhcmFtZXRlcnMuZW5jb2RpbmdzLmJhY2soKS5zc3JjID0gc3NyYzsK
ICAgfQotfQogCi13ZWJydGM6OlJ0cFBhcmFtZXRlcnMKLVdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2Vi
UnRjVmlkZW9SZWNlaXZlU3RyZWFtOjpHZXRSdHBQYXJhbWV0ZXJzKCkgY29uc3QgewotICB3ZWJy
dGM6OlJ0cFBhcmFtZXRlcnMgcnRwX3BhcmFtZXRlcnM7Ci0gIHJ0cF9wYXJhbWV0ZXJzLmVuY29k
aW5ncy5lbXBsYWNlX2JhY2soKTsKLSAgcnRwX3BhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnNzcmMg
PSBHZXRGaXJzdFByaW1hcnlTc3JjKCk7CiAgIHJ0cF9wYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNp
b25zID0gY29uZmlnXy5ydHAuZXh0ZW5zaW9uczsKKyAgcnRwX3BhcmFtZXRlcnMucnRjcC5yZWR1
Y2VkX3NpemUgPQorICAgICAgY29uZmlnXy5ydHAucnRjcF9tb2RlID09IHdlYnJ0Yzo6UnRjcE1v
ZGU6OmtSZWR1Y2VkU2l6ZTsKIAogICByZXR1cm4gcnRwX3BhcmFtZXRlcnM7CiB9CkBAIC0yMjMw
LDkgKzIzMTUsOSBAQCB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9SZWNlaXZl
U3RyZWFtOjpTZXRMb2NhbFNzcmMoCiAgIC8vIHJpZ2h0IG5vdyB0aGlzIGNhbid0IGJlIGRvbmUg
ZHVlIHRvIHVuaXR0ZXN0cyBkZXBlbmRpbmcgb24gcmVjZWl2aW5nIHdoYXQKICAgLy8gdGhleSBh
cmUgc2VuZGluZyBmcm9tIHRoZSBzYW1lIE1lZGlhQ2hhbm5lbC4KICAgaWYgKGxvY2FsX3NzcmMg
PT0gY29uZmlnXy5ydHAubG9jYWxfc3NyYykgewotICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkln
bm9yaW5nIGNhbGwgdG8gU2V0TG9jYWxTc3JjIGJlY2F1c2UgcGFyYW1ldGVycyBhcmUgIgotICAg
ICAgICAgICAgICAgICAgICAgICAgInVuY2hhbmdlZDsgbG9jYWxfc3NyYz0iCi0gICAgICAgICAg
ICAgICAgICAgICA8PCBsb2NhbF9zc3JjOworICAgIFJUQ19ETE9HKExTX0lORk8pIDw8ICJJZ25v
cmluZyBjYWxsIHRvIFNldExvY2FsU3NyYyBiZWNhdXNlIHBhcmFtZXRlcnMgYXJlICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAidW5jaGFuZ2VkOyBsb2NhbF9zc3JjPSIKKyAgICAgICAgICAg
ICAgICAgICAgICA8PCBsb2NhbF9zc3JjOwogICAgIHJldHVybjsKICAgfQogCkBAIC0yMzcyLDYg
KzI0NTcsMTQgQEAgYm9vbCBXZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvUmVjZWl2ZVN0
cmVhbTo6SXNEZWZhdWx0U3RyZWFtKCkgY29uc3QgewogICByZXR1cm4gZGVmYXVsdF9zdHJlYW1f
OwogfQogCit2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9SZWNlaXZlU3RyZWFt
OjpTZXRGcmFtZURlY3J5cHRvcigKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFt
ZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yKSB7CisgIGNvbmZpZ18uZnJhbWVf
ZGVjcnlwdG9yID0gZnJhbWVfZGVjcnlwdG9yOworICBpZiAoc3RyZWFtXykgeworICAgIFJlY3Jl
YXRlV2ViUnRjVmlkZW9TdHJlYW0oKTsKKyAgfQorfQorCiB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5l
bDo6V2ViUnRjVmlkZW9SZWNlaXZlU3RyZWFtOjpTZXRTaW5rKAogICAgIHJ0Yzo6VmlkZW9TaW5r
SW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4qIHNpbmspIHsKICAgcnRjOjpDcml0U2NvcGUg
Y3JpdCgmc2lua19sb2NrXyk7CkBAIC0yNjA3LDEwICsyNzAwLDExIEBAIHN0ZDo6dmVjdG9yPHdl
YnJ0Yzo6VmlkZW9TdHJlYW0+IEVuY29kZXJTdHJlYW1GYWN0b3J5OjpDcmVhdGVFbmNvZGVyU3Ry
ZWFtcygKICAgc3RkOjp2ZWN0b3I8d2VicnRjOjpWaWRlb1N0cmVhbT4gbGF5ZXJzOwogCiAgIGlm
IChlbmNvZGVyX2NvbmZpZy5udW1iZXJfb2Zfc3RyZWFtcyA+IDEgfHwKLSAgICAgKChDb2RlY05h
bWVzRXEoY29kZWNfbmFtZV8sIGtWcDhDb2RlY05hbWUpIHx8Ci0gICAgICAgIENvZGVjTmFtZXNF
cShjb2RlY19uYW1lXywga0gyNjRDb2RlY05hbWUpKSAmJgorICAgICAgKChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKGNvZGVjX25hbWVfLCBrVnA4Q29kZWNOYW1lKSB8fAorICAgICAgICBhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKGNvZGVjX25hbWVfLCBrSDI2NENvZGVjTmFtZSkpICYmCiAgICAgICAg
aXNfc2NyZWVuc2hhcmVfICYmIHNjcmVlbnNoYXJlX2NvbmZpZ19leHBsaWNpdGx5X2VuYWJsZWRf
KSkgewotICAgIGJvb2wgdGVtcG9yYWxfbGF5ZXJzX3N1cHBvcnRlZCA9IENvZGVjTmFtZXNFcShj
b2RlY19uYW1lXywga1ZwOENvZGVjTmFtZSk7CisgICAgYm9vbCB0ZW1wb3JhbF9sYXllcnNfc3Vw
cG9ydGVkID0KKyAgICAgICAgYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19uYW1lXywga1Zw
OENvZGVjTmFtZSk7CiAgICAgbGF5ZXJzID0gR2V0U2ltdWxjYXN0Q29uZmlnKGVuY29kZXJfY29u
ZmlnLm51bWJlcl9vZl9zdHJlYW1zLCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwIC8qbm90IHVzZWQqLywgZW5jb2Rlcl9jb25maWcuYml0cmF0ZV9wcmlv
cml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3FwXywgMCAvKm5vdF91
c2VkKi8sIGlzX3NjcmVlbnNoYXJlXywKQEAgLTI3MDMsNyArMjc5Nyw3IEBAIHN0ZDo6dmVjdG9y
PHdlYnJ0Yzo6VmlkZW9TdHJlYW0+IEVuY29kZXJTdHJlYW1GYWN0b3J5OjpDcmVhdGVFbmNvZGVy
U3RyZWFtcygKICAgbGF5ZXIubWF4X3FwID0gbWF4X3FwXzsKICAgbGF5ZXIuYml0cmF0ZV9wcmlv
cml0eSA9IGVuY29kZXJfY29uZmlnLmJpdHJhdGVfcHJpb3JpdHk7CiAKLSAgaWYgKENvZGVjTmFt
ZXNFcShjb2RlY19uYW1lXywga1ZwOUNvZGVjTmFtZSkpIHsKKyAgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UoY29kZWNfbmFtZV8sIGtWcDlDb2RlY05hbWUpKSB7CiAgICAgUlRDX0RDSEVDSyhl
bmNvZGVyX2NvbmZpZy5lbmNvZGVyX3NwZWNpZmljX3NldHRpbmdzKTsKICAgICAvLyBVc2UgVlA5
IFNWQyBsYXllcmluZyBmcm9tIGNvZGVjIHNldHRpbmdzIHdoaWNoIG1pZ2h0IGJlIGluaXRpYWxp
emVkCiAgICAgLy8gdGhvdWdoIGZpZWxkIHRyaWFsIGluIENvbmZpZ3VyZVZpZGVvRW5jb2RlclNl
dHRpbmdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUu
aAppbmRleCA4YTFlNmFkNGQxNzAzNjQ4ZWRjZjQ1NzBkZjQ3YTMzOTE3ZDNjNjFhLi4zYjc5YWQ0
MGI4YTJkNjczZmI4N2YxMjY0Y2E4YjU1ZDcyNGE5ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9l
bmdpbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuaApAQCAtMTksNiArMTksNyBAQAogCiAjaW5j
bHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9y
dC5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvL3ZpZGVvX3NpbmtfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3Nv
dXJjZV9pbnRlcmZhY2UuaCIKQEAgLTc4LDQzICs3OSw1MyBAQCBjbGFzcyBEZWZhdWx0VW5zaWdu
YWxsZWRTc3JjSGFuZGxlciA6IHB1YmxpYyBVbnNpZ25hbGxlZFNzcmNIYW5kbGVyIHsKIH07CiAK
IC8vIFdlYlJ0Y1ZpZGVvRW5naW5lIGlzIHVzZWQgZm9yIHRoZSBuZXcgbmF0aXZlIFdlYlJUQyBW
aWRlbyBBUEkgKHdlYnJ0YzoxNjY3KS4KLWNsYXNzIFdlYlJ0Y1ZpZGVvRW5naW5lIHsKK2NsYXNz
IFdlYlJ0Y1ZpZGVvRW5naW5lIDogcHVibGljIFZpZGVvRW5naW5lSW50ZXJmYWNlIHsKICBwdWJs
aWM6CiAjaWYgZGVmaW5lZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCiAgIC8vIEludGVybmFsIFNX
IHZpZGVvIGNvZGVjcyB3aWxsIGJlIGFkZGVkIG9uIHRvcCBvZiB0aGUgZXh0ZXJuYWwgY29kZWNz
LgogICBXZWJSdGNWaWRlb0VuZ2luZSgKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRl
b0VuY29kZXJGYWN0b3J5PiBleHRlcm5hbF92aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeT4KLSAgICAgICAgICBleHRl
cm5hbF92aWRlb19kZWNvZGVyX2ZhY3RvcnkpOworICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlJ0
Y1ZpZGVvRGVjb2RlckZhY3Rvcnk+IGV4dGVybmFsX3ZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+
CisgICAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSk7CiAjZW5kaWYKIAog
ICAvLyBUaGVzZSB2aWRlbyBjb2RlYyBmYWN0b3JpZXMgcmVwcmVzZW50cyBhbGwgdmlkZW8gY29k
ZWNzLCBpLmUuIGJvdGggc29mdHdhcmUKICAgLy8gYW5kIGV4dGVybmFsIGhhcmR3YXJlIGNvZGVj
cy4KICAgV2ViUnRjVmlkZW9FbmdpbmUoCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpW
aWRlb0VuY29kZXJGYWN0b3J5PiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICBzdGQ6OnVu
aXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3Rv
cnkpOworICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4g
dmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6Vmlk
ZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgICAgICB2aWRlb19iaXRyYXRlX2FsbG9j
YXRvcl9mYWN0b3J5KTsKIAotICB2aXJ0dWFsIH5XZWJSdGNWaWRlb0VuZ2luZSgpOworICB+V2Vi
UnRjVmlkZW9FbmdpbmUoKSBvdmVycmlkZTsKIAotICBXZWJSdGNWaWRlb0NoYW5uZWwqIENyZWF0
ZUNoYW5uZWwod2VicnRjOjpDYWxsKiBjYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucyk7CisgIFZpZGVvTWVk
aWFDaGFubmVsKiBDcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICB3ZWJydGM6OkNhbGwqIGNhbGws
CisgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAorICAgICAgY29uc3QgVmlkZW9PcHRp
b25zJiBvcHRpb25zLAorICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9f
b3B0aW9ucykgb3ZlcnJpZGU7CiAKLSAgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNzKCkg
Y29uc3Q7Ci0gIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKKyAgc3Rk
Ojp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIFJ0cENhcGFi
aWxpdGllcyBHZXRDYXBhYmlsaXRpZXMoKSBjb25zdCBvdmVycmlkZTsKIAogIHByaXZhdGU6CiAg
IGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IGRlY29k
ZXJfZmFjdG9yeV87CiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rl
ckZhY3Rvcnk+IGVuY29kZXJfZmFjdG9yeV87CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+CisgICAgICBiaXRyYXRlX2FsbG9jYXRv
cl9mYWN0b3J5XzsKIH07CiAKIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCA6IHB1YmxpYyBWaWRl
b01lZGlhQ2hhbm5lbCwgcHVibGljIHdlYnJ0Yzo6VHJhbnNwb3J0IHsKICBwdWJsaWM6Ci0gIFdl
YlJ0Y1ZpZGVvQ2hhbm5lbCh3ZWJydGM6OkNhbGwqIGNhbGwsCi0gICAgICAgICAgICAgICAgICAg
ICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmlkZW9PcHRpb25zJiBvcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpWaWRl
b0VuY29kZXJGYWN0b3J5KiBlbmNvZGVyX2ZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICB3
ZWJydGM6OlZpZGVvRGVjb2RlckZhY3RvcnkqIGRlY29kZXJfZmFjdG9yeSk7CisgIFdlYlJ0Y1Zp
ZGVvQ2hhbm5lbCgKKyAgICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKKyAgICAgIGNvbnN0IE1lZGlh
Q29uZmlnJiBjb25maWcsCisgICAgICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMsCisgICAg
ICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgICAgd2Vi
cnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5KiBlbmNvZGVyX2ZhY3RvcnksCisgICAgICB3ZWJydGM6
OlZpZGVvRGVjb2RlckZhY3RvcnkqIGRlY29kZXJfZmFjdG9yeSwKKyAgICAgIHdlYnJ0Yzo6Vmlk
ZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSogYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSk7CiAg
IH5XZWJSdGNWaWRlb0NoYW5uZWwoKSBvdmVycmlkZTsKIAogICAvLyBWaWRlb01lZGlhQ2hhbm5l
bCBpbXBsZW1lbnRhdGlvbgpAQCAtMTQ3LDEzICsxNTgsMjggQEAgY2xhc3MgV2ViUnRjVmlkZW9D
aGFubmVsIDogcHVibGljIFZpZGVvTWVkaWFDaGFubmVsLCBwdWJsaWMgd2VicnRjOjpUcmFuc3Bv
cnQgewogICBib29sIEdldFN0YXRzKFZpZGVvTWVkaWFJbmZvKiBpbmZvKSBvdmVycmlkZTsKIAog
ICB2b2lkIE9uUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGlt
ZSkgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1l
X3VzKSBvdmVycmlkZTsKICAgdm9pZCBPblJ0Y3BSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVm
ZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1l
JiBwYWNrZXRfdGltZSkgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBw
YWNrZXRfdGltZV91cykgb3ZlcnJpZGU7CiAgIHZvaWQgT25SZWFkeVRvU2VuZChib29sIHJlYWR5
KSBvdmVycmlkZTsKICAgdm9pZCBPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoY29uc3Qgc3RkOjpzdHJp
bmcmIHRyYW5zcG9ydF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBy
dGM6Ok5ldHdvcmtSb3V0ZSYgbmV0d29ya19yb3V0ZSkgb3ZlcnJpZGU7Ci0gIHZvaWQgU2V0SW50
ZXJmYWNlKE5ldHdvcmtJbnRlcmZhY2UqIGlmYWNlKSBvdmVycmlkZTsKKyAgdm9pZCBTZXRJbnRl
cmZhY2UoTmV0d29ya0ludGVyZmFjZSogaWZhY2UsCisgICAgICAgICAgICAgICAgICAgIHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCkgb3ZlcnJpZGU7CisK
KyAgLy8gRTJFIEVuY3J5cHRlZCBWaWRlbyBGcmFtZSBBUEkKKyAgLy8gU2V0IGEgZnJhbWUgZGVj
cnlwdG9yIHRvIGEgcGFydGljdWxhciBzc3JjIHRoYXQgd2lsbCBpbnRlcmNlcHQgYWxsCisgIC8v
IGluY29taW5nIHZpZGVvIGZyYW1lcyBhbmQgYXR0ZW1wdCB0byBkZWNyeXB0IHRoZW0gYmVmb3Jl
IGZvcndhcmRpbmcgdGhlCisgIC8vIHJlc3VsdC4KKyAgdm9pZCBTZXRGcmFtZURlY3J5cHRvcih1
aW50MzJfdCBzc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OkZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFtZV9kZWNyeXB0b3IpIG92ZXJyaWRlOworICAvLyBTZXQgYSBmcmFtZSBlbmNy
eXB0b3IgdG8gYSBwYXJ0aWN1bGFyIHNzcmMgdGhhdCB3aWxsIGludGVyY2VwdCBhbGwKKyAgLy8g
b3V0Z29pbmcgdmlkZW8gZnJhbWVzIGFuZCBhdHRlbXB0IHRvIGVuY3J5cHQgdGhlbSBhbmQgZm9y
d2FyZCB0aGUgcmVzdWx0CisgIC8vIHRvIHRoZSBwYWNrZXRpemVyLgorICB2b2lkIFNldEZyYW1l
RW5jcnlwdG9yKHVpbnQzMl90IHNzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZyYW1lX2VuY3J5cHRvcikgb3ZlcnJpZGU7CiAKICAgLy8gSW1w
bGVtZW50ZWQgZm9yIFZpZGVvTWVkaWFDaGFubmVsVGVzdC4KICAgYm9vbCBzZW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gc2VuZGluZ187IH0KQEAgLTIwMSw2ICsyMjcsNyBAQCBjbGFzcyBXZWJSdGNW
aWRlb0NoYW5uZWwgOiBwdWJsaWMgVmlkZW9NZWRpYUNoYW5uZWwsIHB1YmxpYyB3ZWJydGM6OlRy
YW5zcG9ydCB7CiAgICAgYWJzbDo6b3B0aW9uYWw8VmlkZW9Db2RlY1NldHRpbmdzPiBjb2RlYzsK
ICAgICBhYnNsOjpvcHRpb25hbDxzdGQ6OnZlY3Rvcjx3ZWJydGM6OlJ0cEV4dGVuc2lvbj4+IHJ0
cF9oZWFkZXJfZXh0ZW5zaW9uczsKICAgICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gbWlk
OworICAgIGFic2w6Om9wdGlvbmFsPGJvb2w+IGV4dG1hcF9hbGxvd19taXhlZDsKICAgICBhYnNs
OjpvcHRpb25hbDxpbnQ+IG1heF9iYW5kd2lkdGhfYnBzOwogICAgIGFic2w6Om9wdGlvbmFsPGJv
b2w+IGNvbmZlcmVuY2VfbW9kZTsKICAgICBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OlJ0Y3BNb2Rl
PiBydGNwX21vZGU7CkBAIC0yNTcsNiArMjg0LDkgQEAgY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVs
IDogcHVibGljIFZpZGVvTWVkaWFDaGFubmVsLCBwdWJsaWMgd2VicnRjOjpUcmFuc3BvcnQgewog
ICAgIHdlYnJ0Yzo6UlRDRXJyb3IgU2V0UnRwUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpOwogICAgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBHZXRSdHBQ
YXJhbWV0ZXJzKCkgY29uc3Q7CiAKKyAgICB2b2lkIFNldEZyYW1lRW5jcnlwdG9yKAorICAgICAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJh
bWVfZW5jcnlwdG9yKTsKKwogICAgIC8vIEltcGxlbWVudHMgcnRjOjpWaWRlb1NvdXJjZUludGVy
ZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+LgogICAgIC8vIFdlYlJ0Y1ZpZGVvU2VuZFN0cmVhbSBh
Y3RzIGFzIGEgc291cmNlIHRvIHRoZSB3ZWJydGM6OlZpZGVvU2VuZFN0cmVhbQogICAgIC8vIGlu
IHxzdHJlYW1ffC4gVGhpcyBpcyBkb25lIHRvIHByb3h5IFZpZGVvU2lua1dhbnRzIGZyb20gdGhl
IGVuY29kZXIgdG8KQEAgLTM3MSw2ICs0MDEsOSBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWwg
OiBwdWJsaWMgVmlkZW9NZWRpYUNoYW5uZWwsIHB1YmxpYyB3ZWJydGM6OlRyYW5zcG9ydCB7CiAg
ICAgdm9pZCBPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUpIG92ZXJyaWRl
OwogICAgIGJvb2wgSXNEZWZhdWx0U3RyZWFtKCkgY29uc3Q7CiAKKyAgICB2b2lkIFNldEZyYW1l
RGVjcnlwdG9yKAorICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZURlY3J5
cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yKTsKKwogICAgIHZvaWQgU2V0U2luayhydGM6
OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KiBzaW5rKTsKIAogICAgIFZp
ZGVvUmVjZWl2ZXJJbmZvIEdldFZpZGVvUmVjZWl2ZXJJbmZvKGJvb2wgbG9nX3N0YXRzKTsKQEAg
LTM4Nyw4ICs0MjAsNiBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWwgOiBwdWJsaWMgVmlkZW9N
ZWRpYUNoYW5uZWwsIHB1YmxpYyB3ZWJydGM6OlRyYW5zcG9ydCB7CiAKICAgICBzdGQ6OnN0cmlu
ZyBHZXRDb2RlY05hbWVGcm9tUGF5bG9hZFR5cGUoaW50IHBheWxvYWRfdHlwZSk7CiAKLSAgICBh
YnNsOjpvcHRpb25hbDx1aW50MzJfdD4gR2V0Rmlyc3RQcmltYXJ5U3NyYygpIGNvbnN0OwotCiAg
ICAgd2VicnRjOjpDYWxsKiBjb25zdCBjYWxsXzsKICAgICBjb25zdCBTdHJlYW1QYXJhbXMgc3Ry
ZWFtX3BhcmFtc187CiAKQEAgLTQ2Niw2ICs0OTcsNyBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5u
ZWwgOiBwdWJsaWMgVmlkZW9NZWRpYUNoYW5uZWwsIHB1YmxpYyB3ZWJydGM6OlRyYW5zcG9ydCB7
CiAKICAgd2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5KiBjb25zdCBlbmNvZGVyX2ZhY3Rvcnlf
OwogICB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3RvcnkqIGNvbnN0IGRlY29kZXJfZmFjdG9yeV87
CisgIHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSogY29uc3QgYml0cmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeV87CiAgIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWNTZXR0aW5ncz4gcmVj
dl9jb2RlY3NfOwogICBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlJ0cEV4dGVuc2lvbj4gcmVjdl9ydHBf
ZXh0ZW5zaW9uc187CiAgIC8vIFNlZSByZWFzb24gZm9yIGtlZXBpbmcgdHJhY2sgb2YgdGhlIEZs
ZXhGRUMgcGF5bG9hZCB0eXBlIHNlcGFyYXRlbHkgaW4KQEAgLTQ3NSwxNCArNTA3LDE5IEBAIGNs
YXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCA6IHB1YmxpYyBWaWRlb01lZGlhQ2hhbm5lbCwgcHVibGlj
IHdlYnJ0Yzo6VHJhbnNwb3J0IHsKICAgLy8gVE9ETyhkZWFkYmVlZik6IERvbid0IGR1cGxpY2F0
ZSBpbmZvcm1hdGlvbiBiZXR3ZWVuCiAgIC8vIHNlbmRfcGFyYW1zL3JlY3ZfcGFyYW1zLCBydHBf
ZXh0ZW5zaW9ucywgb3B0aW9ucywgZXRjLgogICBWaWRlb1NlbmRQYXJhbWV0ZXJzIHNlbmRfcGFy
YW1zXzsKKyAgcnRjOjpEaWZmU2VydkNvZGVQb2ludCBwcmVmZXJyZWRfZHNjcF87CiAgIFZpZGVv
T3B0aW9ucyBkZWZhdWx0X3NlbmRfb3B0aW9uc187CiAgIFZpZGVvUmVjdlBhcmFtZXRlcnMgcmVj
dl9wYXJhbXNfOwogICBpbnQ2NF90IGxhc3Rfc3RhdHNfbG9nX21zXzsKKyAgY29uc3QgYm9vbCBk
aXNjYXJkX3Vua25vd25fc3NyY19wYWNrZXRzXzsKICAgLy8gVGhpcyBpcyBhIHN0cmVhbSBwYXJh
bSB0aGF0IGNvbWVzIGZyb20gdGhlIHJlbW90ZSBkZXNjcmlwdGlvbiwgYnV0IHdhc24ndAogICAv
LyBzaWduYWxlZCB3aXRoIGFueSBhPXNzcmMgbGluZXMuIEl0IGhvbGRzIGluZm9ybWF0aW9uIHRo
YXQgd2FzIHNpZ25hbGVkCiAgIC8vIGJlZm9yZSB0aGUgdW5zaWduYWxlZCByZWNlaXZlIHN0cmVh
bSBpcyBjcmVhdGVkIHdoZW4gdGhlIGZpcnN0IHBhY2tldCBpcwogICAvLyByZWNlaXZlZC4KICAg
U3RyZWFtUGFyYW1zIHVuc2lnbmFsZWRfc3RyZWFtX3BhcmFtc187CisgIC8vIFBlciBwZWVyIGNv
bm5lY3Rpb24gY3J5cHRvIG9wdGlvbnMgdGhhdCBsYXN0IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhl
IHBlZXIKKyAgLy8gY29ubmVjdGlvbi4KKyAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNy
eXB0b19vcHRpb25zXzsKIH07CiAKIGNsYXNzIEVuY29kZXJTdHJlYW1GYWN0b3J5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdp
bmUvd2VicnRjdmlkZW9lbmdpbmVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmVfdW5pdHRl
c3QuY2MKaW5kZXggZTg3ZjYzZmY0YTY1ZjJhMTQ1NDZhYjFhZjc5YTU0MGE0ZDViYTRjMC4uYWIw
NGZhNmFmM2U1YTY2NTExNTQ5MDViNDA4ODcwMjlhOTE2NWU5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3Zp
ZGVvZW5naW5lX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5jYwpA
QCAtMTQsMTAgKzE0LDE0IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+
CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvcnRwcGFy
YW1ldGVycy5oIgorI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fYml0cmF0ZV9hbGxvY2F0
b3IuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2Zh
Y3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5o
IgogI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiYXBpL3VuaXRzL3RpbWVfZGVsdGEuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRp
bl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVv
L3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
YnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29k
ZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCkBAIC0xMDEsNyArMTA1LDcgQEAg
Ym9vbCBIYXNSdHhDb2RlYyhjb25zdCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpWaWRlb0NvZGVjPiYg
Y29kZWNzLAogICAgICAgICAgICAgICAgICBpbnQgcGF5bG9hZF90eXBlKSB7CiAgIGZvciAoY29u
c3QgY3JpY2tldDo6VmlkZW9Db2RlYyYgY29kZWMgOiBjb2RlY3MpIHsKICAgICBpbnQgYXNzb2Np
YXRlZF9wYXlsb2FkX3R5cGU7Ci0gICAgaWYgKGNyaWNrZXQ6OkNvZGVjTmFtZXNFcShjb2RlYy5u
YW1lLmNfc3RyKCksICJydHgiKSAmJgorICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNv
ZGVjLm5hbWUuY19zdHIoKSwgInJ0eCIpICYmCiAgICAgICAgIGNvZGVjLkdldFBhcmFtKGNyaWNr
ZXQ6OmtDb2RlY1BhcmFtQXNzb2NpYXRlZFBheWxvYWRUeXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAmYXNzb2NpYXRlZF9wYXlsb2FkX3R5cGUpICYmCiAgICAgICAgIGFzc29jaWF0ZWRfcGF5
bG9hZF90eXBlID09IHBheWxvYWRfdHlwZSkgewpAQCAtMjEzLDcgKzIxNyw4IEBAIGNsYXNzIFdl
YlJ0Y1ZpZGVvRW5naW5lVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBl
bmdpbmVfKHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpGYWtlV2ViUnRjVmlkZW9FbmNvZGVyRmFj
dG9yeT4oCiAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJfZmFjdG9yeV8pLAogICAgICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpGYWtlV2ViUnRjVmlkZW9EZWNvZGVyRmFj
dG9yeT4oCi0gICAgICAgICAgICAgICAgICAgIGRlY29kZXJfZmFjdG9yeV8pKSB7CisgICAgICAg
ICAgICAgICAgICAgIGRlY29kZXJfZmFjdG9yeV8pLAorICAgICAgICAgICAgICAgIHdlYnJ0Yzo6
Q3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSkgewogICAgIC8vIEVu
c3VyZSBmYWtlIGNsb2NrIGRvZXNuJ3QgcmV0dXJuIDAsIHdoaWNoIHdpbGwgY2F1c2Ugc29tZSBp
bml0aWFsaXphdGlvbnMKICAgICAvLyBmYWlsIGluc2lkZSBSVFAgc2VuZGVycy4KICAgICBmYWtl
X2Nsb2NrXy5BZHZhbmNlVGltZU1pY3JvcygxKTsKQEAgLTMxOCw2ICszMjMsMjUgQEAgVEVTVF9G
KFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwgU3VwcG9ydHNWaWRlb1JvdGF0aW9uSGVhZGVyRXh0ZW5z
aW9uKSB7CiAgIEZBSUwoKSA8PCAiVmlkZW8gUm90YXRpb24gZXh0ZW5zaW9uIG5vdCBpbiBoZWFk
ZXItZXh0ZW5zaW9uIGxpc3QuIjsKIH0KIAorY2xhc3MgV2ViUnRjVmlkZW9FbmdpbmVUZXN0V2l0
aEdlbmVyaWNEZXNjcmlwdG9yCisgICAgOiBwdWJsaWMgV2ViUnRjVmlkZW9FbmdpbmVUZXN0IHsK
KyBwdWJsaWM6CisgIFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdFdpdGhHZW5lcmljRGVzY3JpcHRvcigp
CisgICAgICA6IFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCgiV2ViUlRDLUdlbmVyaWNEZXNjcmlwdG9y
QWR2ZXJ0aXNlZC9FbmFibGVkLyIpIHt9Cit9OworCitURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVU
ZXN0V2l0aEdlbmVyaWNEZXNjcmlwdG9yLCBBZHZlcnRpc2VHZW5lcmljRGVzY3JpcHRvcikgewor
ICBSdHBDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzID0gZW5naW5lXy5HZXRDYXBhYmlsaXRpZXMo
KTsKKyAgQVNTRVJUX0ZBTFNFKGNhcGFiaWxpdGllcy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXB0eSgp
KTsKKyAgZm9yIChjb25zdCBSdHBFeHRlbnNpb24mIGV4dGVuc2lvbiA6IGNhcGFiaWxpdGllcy5o
ZWFkZXJfZXh0ZW5zaW9ucykgeworICAgIGlmIChleHRlbnNpb24udXJpID09IFJ0cEV4dGVuc2lv
bjo6a0dlbmVyaWNGcmFtZURlc2NyaXB0b3JVcmkpIHsKKyAgICAgIEVYUEVDVF9FUShSdHBFeHRl
bnNpb246OmtHZW5lcmljRnJhbWVEZXNjcmlwdG9yRGVmYXVsdElkLCBleHRlbnNpb24uaWQpOwor
ICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorICBGQUlMKCkgPDwgIkdlbmVyaWMgZGVzY3JpcHRv
ciBleHRlbnNpb24gbm90IGluIGhlYWRlci1leHRlbnNpb24gbGlzdC4iOworfQorCiBURVNUX0Yo
V2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBDVk9TZXRIZWFkZXJFeHRlbnNpb25CZWZvcmVDYXB0dXJl
cikgewogICAvLyBBbGxvY2F0ZSB0aGUgc291cmNlIGZpcnN0IHRvIHByZXZlbnQgZWFybHkgZGVz
dHJ1Y3Rpb24gYmVmb3JlIGNoYW5uZWwncwogICAvLyBkdG9yIGlzIGNhbGxlZC4KQEAgLTQzMyw4
ICs0NTcsOCBAQCBURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBDVk9TZXRIZWFkZXJFeHRl
bnNpb25BZnRlckNhcHR1cmVyKSB7CiBURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBTZXRT
ZW5kRmFpbHNCZWZvcmVTZXR0aW5nQ29kZWNzKSB7CiAgIGVuY29kZXJfZmFjdG9yeV8tPkFkZFN1
cHBvcnRlZFZpZGVvQ29kZWNUeXBlKCJWUDgiKTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9N
ZWRpYUNoYW5uZWw+IGNoYW5uZWwoCi0gICAgICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoY2FsbF8u
Z2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpKSk7CisgIHN0ZDo6dW5pcXVl
X3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gY2hhbm5lbChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5l
bCgKKyAgICAgIGNhbGxfLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSwg
d2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKIAogICBFWFBFQ1RfVFJVRShjaGFubmVsLT5BZGRT
ZW5kU3RyZWFtKFN0cmVhbVBhcmFtczo6Q3JlYXRlTGVnYWN5KDEyMykpKTsKIApAQCAtNDQ3LDgg
KzQ3MSw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsIFNldFNlbmRGYWlsc0JlZm9y
ZVNldHRpbmdDb2RlY3MpIHsKIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsIEdldFN0YXRz
V2l0aG91dFNlbmRDb2RlY3NTZXREb2VzTm90Q3Jhc2gpIHsKICAgZW5jb2Rlcl9mYWN0b3J5Xy0+
QWRkU3VwcG9ydGVkVmlkZW9Db2RlY1R5cGUoIlZQOCIpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb01lZGlhQ2hhbm5lbD4gY2hhbm5lbCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChj
YWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3RkOjp1
bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBjaGFubmVsKGVuZ2luZV8uQ3JlYXRlTWVkaWFD
aGFubmVsKAorICAgICAgY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9u
cygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBFWFBFQ1RfVFJVRShjaGFubmVsLT5B
ZGRTZW5kU3RyZWFtKFN0cmVhbVBhcmFtczo6Q3JlYXRlTGVnYWN5KDEyMykpKTsKICAgVmlkZW9N
ZWRpYUluZm8gaW5mbzsKICAgY2hhbm5lbC0+R2V0U3RhdHMoJmluZm8pOwpAQCAtNTMwLDcgKzU1
NCw3IEBAIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsIFJ0eENvZGVjQWRkZWRGb3JIMjY0
Q29kZWMpIHsKICAgICAgIGNvZGVjcywgRmluZE1hdGNoaW5nQ29kZWMoY29kZWNzLCBjcmlja2V0
OjpWaWRlb0NvZGVjKGgyNjRfaGlnaCkpLT5pZCkpOwogfQogCi0jaWYgIWRlZmluZWQoUlRDX0RJ
U0FCTEVfVlA5KQorI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiBURVNUX0YoV2ViUnRjVmlk
ZW9FbmdpbmVUZXN0LCBDYW5Db25zdHJ1Y3REZWNvZGVyRm9yVnA5RW5jb2RlckZhY3RvcnkpIHsK
ICAgZW5jb2Rlcl9mYWN0b3J5Xy0+QWRkU3VwcG9ydGVkVmlkZW9Db2RlY1R5cGUoIlZQOSIpOwog
CkBAIC01NDAsNyArNTY0LDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwgQ2FuQ29u
c3RydWN0RGVjb2RlckZvclZwOUVuY29kZXJGYWN0b3J5KSB7CiAgIEVYUEVDVF9UUlVFKAogICAg
ICAgY2hhbm5lbC0+QWRkUmVjdlN0cmVhbShjcmlja2V0OjpTdHJlYW1QYXJhbXM6OkNyZWF0ZUxl
Z2FjeShrU3NyYykpKTsKIH0KLSNlbmRpZiAgLy8gIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQor
I2VuZGlmICAvLyBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogCiBURVNUX0YoV2ViUnRjVmlkZW9F
bmdpbmVUZXN0LCBQcm9wYWdhdGVzSW5wdXRGcmFtZVRpbWVzdGFtcCkgewogICBlbmNvZGVyX2Zh
Y3RvcnlfLT5BZGRTdXBwb3J0ZWRWaWRlb0NvZGVjVHlwZSgiVlA4Iik7CkBAIC02MzEsMTEgKzY1
NSwxMSBAQCBzaXplX3QgV2ViUnRjVmlkZW9FbmdpbmVUZXN0OjpHZXRFbmdpbmVDb2RlY0luZGV4
KAogICBjb25zdCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpWaWRlb0NvZGVjPiBjb2RlY3MgPSBlbmdp
bmVfLmNvZGVjcygpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVjcy5zaXplKCk7ICsr
aSkgewogICAgIGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29kZWMgZW5naW5lX2NvZGVjID0gY29kZWNz
W2ldOwotICAgIGlmICghQ29kZWNOYW1lc0VxKG5hbWUsIGVuZ2luZV9jb2RlYy5uYW1lKSkKKyAg
ICBpZiAoIWFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwgZW5naW5lX2NvZGVjLm5hbWUpKQog
ICAgICAgY29udGludWU7CiAgICAgLy8gVGhlIHRlc3RzIG9ubHkgdXNlIEgyNjQgQ29uc3RyYWlu
ZWQgQmFzZWxpbmUuIE1ha2Ugc3VyZSB3ZSBkb24ndCByZXR1cm4KICAgICAvLyBhbiBpbnRlcm5h
bCBIMjY0IGNvZGVjIGZyb20gdGhlIGVuZ2luZSB3aXRoIGEgZGlmZmVyZW50IEgyNjQgcHJvZmls
ZS4KLSAgICBpZiAoQ29kZWNOYW1lc0VxKG5hbWUuY19zdHIoKSwga0gyNjRDb2RlY05hbWUpKSB7
CisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZS5jX3N0cigpLCBrSDI2NENvZGVj
TmFtZSkpIHsKICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6SDI2NDo6UHJvZmls
ZUxldmVsSWQ+IHByb2ZpbGVfbGV2ZWxfaWQgPQogICAgICAgICAgIHdlYnJ0Yzo6SDI2NDo6UGFy
c2VTZHBQcm9maWxlTGV2ZWxJZChlbmdpbmVfY29kZWMucGFyYW1zKTsKICAgICAgIGlmIChwcm9m
aWxlX2xldmVsX2lkLT5wcm9maWxlICE9CkBAIC02NTcsOCArNjgxLDggQEAgY3JpY2tldDo6Vmlk
ZW9Db2RlYyBXZWJSdGNWaWRlb0VuZ2luZVRlc3Q6OkdldEVuZ2luZUNvZGVjKAogCiBWaWRlb01l
ZGlhQ2hhbm5lbCoKIFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdDo6U2V0U2VuZFBhcmFtc1dpdGhBbGxT
dXBwb3J0ZWRDb2RlY3MoKSB7Ci0gIFZpZGVvTWVkaWFDaGFubmVsKiBjaGFubmVsID0KLSAgICAg
IGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlk
ZW9PcHRpb25zKCkpOworICBWaWRlb01lZGlhQ2hhbm5lbCogY2hhbm5lbCA9IGVuZ2luZV8uQ3Jl
YXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZp
ZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSk7CiAgIGNyaWNrZXQ6OlZpZGVv
U2VuZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgLy8gV2UgbmVlZCB0byBsb29rIHVwIHRoZSBj
b2RlYyBpbiB0aGUgZW5naW5lIHRvIGdldCB0aGUgY29ycmVjdCBwYXlsb2FkIHR5cGUuCiAgIGZv
ciAoY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0IDoKQEAgLTY3Nyw4ICs3MDEs
OCBAQCBXZWJSdGNWaWRlb0VuZ2luZVRlc3Q6OlNldFNlbmRQYXJhbXNXaXRoQWxsU3VwcG9ydGVk
Q29kZWNzKCkgewogCiBWaWRlb01lZGlhQ2hhbm5lbCogV2ViUnRjVmlkZW9FbmdpbmVUZXN0OjpT
ZXRSZWN2UGFyYW1zV2l0aFN1cHBvcnRlZENvZGVjcygKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxW
aWRlb0NvZGVjPiYgY29kZWNzKSB7Ci0gIFZpZGVvTWVkaWFDaGFubmVsKiBjaGFubmVsID0KLSAg
ICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwg
VmlkZW9PcHRpb25zKCkpOworICBWaWRlb01lZGlhQ2hhbm5lbCogY2hhbm5lbCA9IGVuZ2luZV8u
Q3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCks
IFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSk7CiAgIGNyaWNrZXQ6OlZp
ZGVvUmVjdlBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgcGFyYW1ldGVycy5jb2RlY3MgPSBjb2Rl
Y3M7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWwtPlNldFJlY3ZQYXJhbWV0ZXJzKHBhcmFtZXRlcnMp
KTsKQEAgLTczMiw4ICs3NTYsOCBAQCBURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBDaGFu
bmVsV2l0aEgyNjRDYW5DaGFuZ2VUb1ZwOCkgewogICBFWFBFQ1RfRVEoY3JpY2tldDo6Q1NfUlVO
TklORywKICAgICAgICAgICAgIGNhcHR1cmVyLlN0YXJ0KGNhcHR1cmVyLkdldFN1cHBvcnRlZEZv
cm1hdHMoKS0+ZnJvbnQoKSkpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5l
bD4gY2hhbm5lbCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgR2V0
TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
TWVkaWFDaGFubmVsPiBjaGFubmVsKGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAg
Y2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNy
eXB0b09wdGlvbnMoKSkpOwogICBjcmlja2V0OjpWaWRlb1NlbmRQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CiAgIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhHZXRFbmdpbmVDb2RlYygiSDI2NCIp
KTsKICAgRVhQRUNUX1RSVUUoY2hhbm5lbC0+U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycykp
OwpAQCAtNzYxLDggKzc4NSw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsCiAgIGVu
Y29kZXJfZmFjdG9yeV8tPkFkZFN1cHBvcnRlZFZpZGVvQ29kZWNUeXBlKCJWUDgiKTsKICAgZW5j
b2Rlcl9mYWN0b3J5Xy0+QWRkU3VwcG9ydGVkVmlkZW9Db2RlY1R5cGUoIkgyNjQiKTsKIAotICBz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IGNoYW5uZWwoCi0gICAgICBlbmdpbmVf
LkNyZWF0ZUNoYW5uZWwoY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9u
cygpKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gY2hhbm5lbChlbmdp
bmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGNhbGxfLmdldCgpLCBHZXRNZWRpYUNvbmZp
ZygpLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKICAgY3JpY2tl
dDo6VmlkZW9TZW5kUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICBwYXJhbWV0ZXJzLmNvZGVjcy5w
dXNoX2JhY2soR2V0RW5naW5lQ29kZWMoIlZQOCIpKTsKICAgRVhQRUNUX1RSVUUoY2hhbm5lbC0+
U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycykpOwpAQCAtNzk2LDggKzgyMCw4IEBAIFRFU1Rf
RihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsCiAgIGVuY29kZXJfZmFjdG9yeV8tPkFkZFN1cHBvcnRl
ZFZpZGVvQ29kZWNUeXBlKCJWUDgiKTsKICAgZW5jb2Rlcl9mYWN0b3J5Xy0+QWRkU3VwcG9ydGVk
VmlkZW9Db2RlY1R5cGUoIkgyNjQiKTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNo
YW5uZWw+IGNoYW5uZWwoCi0gICAgICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoY2FsbF8uZ2V0KCks
IEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb01lZGlhQ2hhbm5lbD4gY2hhbm5lbChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAg
ICAgIGNhbGxfLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSwgd2VicnRj
OjpDcnlwdG9PcHRpb25zKCkpKTsKICAgY3JpY2tldDo6VmlkZW9TZW5kUGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwogICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soR2V0RW5naW5lQ29kZWMoIkgy
NjQiKSk7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWwtPlNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRl
cnMpKTsKQEAgLTgyOCw4ICs4NTIsOCBAQCBURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBT
aW11bGNhc3RFbmFibGVkRm9ySDI2NEJlaGluZEZpZWxkVHJpYWwpIHsKICAgICAgICJXZWJSVEMt
SDI2NFNpbXVsY2FzdC9FbmFibGVkLyIpOwogICBlbmNvZGVyX2ZhY3RvcnlfLT5BZGRTdXBwb3J0
ZWRWaWRlb0NvZGVjVHlwZSgiSDI2NCIpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlh
Q2hhbm5lbD4gY2hhbm5lbCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQo
KSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3RkOjp1bmlxdWVfcHRy
PFZpZGVvTWVkaWFDaGFubmVsPiBjaGFubmVsKGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAor
ICAgICAgY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBjcmlja2V0OjpWaWRlb1NlbmRQYXJhbWV0ZXJzIHBh
cmFtZXRlcnM7CiAgIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhHZXRFbmdpbmVDb2RlYygi
SDI2NCIpKTsKICAgRVhQRUNUX1RSVUUoY2hhbm5lbC0+U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1l
dGVycykpOwpAQCAtOTg5LDggKzEwMTMsMTAgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVz
dCwgR2V0U291cmNlc1dpdGhOb25FeGlzdGluZ1NzcmMpIHsKIFRFU1QoV2ViUnRjVmlkZW9Fbmdp
bmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3QsIE51bGxGYWN0b3JpZXMpIHsKICAgc3RkOjp1bmlx
dWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4gZW5jb2Rlcl9mYWN0b3J5OwogICBz
dGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiBkZWNvZGVyX2ZhY3Rv
cnk7CisgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rv
cnk+IHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnk7CiAgIFdlYlJ0Y1ZpZGVvRW5naW5lIGVuZ2luZShz
dGQ6Om1vdmUoZW5jb2Rlcl9mYWN0b3J5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bW92ZShkZWNvZGVyX2ZhY3RvcnkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bW92ZShkZWNvZGVyX2ZhY3RvcnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojptb3ZlKHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkpKTsKICAgRVhQRUNUX0VRKDB1LCBlbmdpbmUu
Y29kZWNzKCkuc2l6ZSgpKTsKIH0KIApAQCAtMTAwMCwxMyArMTAyNiwxOCBAQCBURVNUKFdlYlJ0
Y1ZpZGVvRW5naW5lTmV3VmlkZW9Db2RlY0ZhY3RvcnlUZXN0LCBFbXB0eUZhY3Rvcmllcykgewog
ICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1ZpZGVvRW5jb2RlckZhY3RvcnkoKTsKICAgd2VicnRjOjpN
b2NrVmlkZW9EZWNvZGVyRmFjdG9yeSogZGVjb2Rlcl9mYWN0b3J5ID0KICAgICAgIG5ldyB3ZWJy
dGM6Ok1vY2tWaWRlb0RlY29kZXJGYWN0b3J5KCk7CisgIHdlYnJ0Yzo6TW9ja1ZpZGVvQml0cmF0
ZUFsbG9jYXRvckZhY3RvcnkqIHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkgPQorICAgICAgbmV3IHdl
YnJ0Yzo6TW9ja1ZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKTsKICAgV2ViUnRjVmlkZW9F
bmdpbmUgZW5naW5lKAogICAgICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rl
ckZhY3Rvcnk+KGVuY29kZXJfZmFjdG9yeSkpLAotICAgICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+KGRlY29kZXJfZmFjdG9yeSkpKTsKKyAgICAgIChzdGQ6
OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PihkZWNvZGVyX2ZhY3Rvcnkp
KSwKKyAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JG
YWN0b3J5PigKKyAgICAgICAgICByYXRlX2FsbG9jYXRvcl9mYWN0b3J5KSkpOwogICBFWFBFQ1Rf
Q0FMTCgqZW5jb2Rlcl9mYWN0b3J5LCBHZXRTdXBwb3J0ZWRGb3JtYXRzKCkpOwogICBFWFBFQ1Rf
RVEoMHUsIGVuZ2luZS5jb2RlY3MoKS5zaXplKCkpOwogICBFWFBFQ1RfQ0FMTCgqZW5jb2Rlcl9m
YWN0b3J5LCBEaWUoKSk7CiAgIEVYUEVDVF9DQUxMKCpkZWNvZGVyX2ZhY3RvcnksIERpZSgpKTsK
KyAgRVhQRUNUX0NBTEwoKnJhdGVfYWxsb2NhdG9yX2ZhY3RvcnksIERpZSgpKTsKIH0KIAogLy8g
VGVzdCBmdWxsIGJlaGF2aW9yIGluIHRoZSB2aWRlbyBlbmdpbmUgd2hlbiB2aWRlbyBjb2RlYyBm
YWN0b3JpZXMgb2YgdGhlIG5ldwpAQCAtMTAxOSw5ICsxMDUwLDE3IEBAIFRFU1QoV2ViUnRjVmlk
ZW9FbmdpbmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3QsIFZwOCkgewogICAgICAgbmV3IHdlYnJ0
Yzo6TW9ja1ZpZGVvRW5jb2RlckZhY3RvcnkoKTsKICAgd2VicnRjOjpNb2NrVmlkZW9EZWNvZGVy
RmFjdG9yeSogZGVjb2Rlcl9mYWN0b3J5ID0KICAgICAgIG5ldyB3ZWJydGM6Ok1vY2tWaWRlb0Rl
Y29kZXJGYWN0b3J5KCk7CisgIHdlYnJ0Yzo6TW9ja1ZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rv
cnkqIHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkgPQorICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1ZpZGVv
Qml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKTsKKyAgRVhQRUNUX0NBTEwoKnJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnksCisgICAgICAgICAgICAgIENyZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRvclByb3h5
KEZpZWxkKAorICAgICAgICAgICAgICAgICAgJndlYnJ0Yzo6VmlkZW9Db2RlYzo6Y29kZWNUeXBl
LCB3ZWJydGM6OmtWaWRlb0NvZGVjVlA4KSkpCisgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0
dXJuKG5ldyB3ZWJydGM6Ok1vY2tWaWRlb0JpdHJhdGVBbGxvY2F0b3IoKSkpOwogICBXZWJSdGNW
aWRlb0VuZ2luZSBlbmdpbmUoCiAgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9F
bmNvZGVyRmFjdG9yeT4oZW5jb2Rlcl9mYWN0b3J5KSksCi0gICAgICAoc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4oZGVjb2Rlcl9mYWN0b3J5KSkpOworICAgICAg
KHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+KGRlY29kZXJfZmFj
dG9yeSkpLAorICAgICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9j
YXRvckZhY3Rvcnk+KAorICAgICAgICAgIHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkpKSk7CiAgIGNv
bnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQgdnA4X2Zvcm1hdCgiVlA4Iik7CiAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQ+IHN1cHBvcnRlZF9mb3JtYXRzID0ge3Zw
OF9mb3JtYXR9OwogICBFWFBFQ1RfQ0FMTCgqZW5jb2Rlcl9mYWN0b3J5LCBHZXRTdXBwb3J0ZWRG
b3JtYXRzKCkpCkBAIC0xMDY2LDcgKzExMDUsNyBAQCBURVNUKFdlYlJ0Y1ZpZGVvRW5naW5lTmV3
VmlkZW9Db2RlY0ZhY3RvcnlUZXN0LCBWcDgpIHsKICAgRVhQRUNUX0NBTEwoKmVuY29kZXJfZmFj
dG9yeSwgUXVlcnlWaWRlb0VuY29kZXIoZm9ybWF0KSkKICAgICAgIC5XaWxsUmVwZWF0ZWRseSh0
ZXN0aW5nOjpSZXR1cm4oY29kZWNfaW5mbykpOwogICBGYWtlV2ViUnRjVmlkZW9FbmNvZGVyKiBj
b25zdCBlbmNvZGVyID0gbmV3IEZha2VXZWJSdGNWaWRlb0VuY29kZXIobnVsbHB0cik7Ci0gIHJ0
Yzo6RXZlbnQgZW5jb2Rlcl9jcmVhdGVkKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZW5j
b2Rlcl9jcmVhdGVkOwogICBFWFBFQ1RfQ0FMTCgqZW5jb2Rlcl9mYWN0b3J5LCBDcmVhdGVWaWRl
b0VuY29kZXJQcm94eShmb3JtYXQpKQogICAgICAgLldpbGxPbmNlKAogICAgICAgICAgIDo6dGVz
dGluZzo6RG9BbGwoOjp0ZXN0aW5nOjpJbnZva2VXaXRob3V0QXJncygKQEAgLTEwODUsOCArMTEy
NCw4IEBAIFRFU1QoV2ViUnRjVmlkZW9FbmdpbmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3QsIFZw
OCkgewogCiAgIC8vIENyZWF0ZSBzZW5kIGNoYW5uZWwuCiAgIGNvbnN0IGludCBzZW5kX3NzcmMg
PSAxMjM7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gc2VuZF9jaGFubmVs
KAotICAgICAgZW5naW5lLkNyZWF0ZUNoYW5uZWwoY2FsbC5nZXQoKSwgR2V0TWVkaWFDb25maWco
KSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVs
PiBzZW5kX2NoYW5uZWwoZW5naW5lLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGNhbGwuZ2V0
KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlv
bnMoKSkpOwogICBjcmlja2V0OjpWaWRlb1NlbmRQYXJhbWV0ZXJzIHNlbmRfcGFyYW1ldGVyczsK
ICAgc2VuZF9wYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soZW5naW5lX2NvZGVjcy5hdCgwKSk7
CiAgIEVYUEVDVF9UUlVFKHNlbmRfY2hhbm5lbC0+U2V0U2VuZFBhcmFtZXRlcnMoc2VuZF9wYXJh
bWV0ZXJzKSk7CkBAIC0xMTA2LDggKzExNDUsOCBAQCBURVNUKFdlYlJ0Y1ZpZGVvRW5naW5lTmV3
VmlkZW9Db2RlY0ZhY3RvcnlUZXN0LCBWcDgpIHsKIAogICAvLyBDcmVhdGUgcmVjdiBjaGFubmVs
LgogICBjb25zdCBpbnQgcmVjdl9zc3JjID0gMzIxOwotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9N
ZWRpYUNoYW5uZWw+IHJlY3ZfY2hhbm5lbCgKLSAgICAgIGVuZ2luZS5DcmVhdGVDaGFubmVsKGNh
bGwuZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpKSk7CisgIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gcmVjdl9jaGFubmVsKGVuZ2luZS5DcmVhdGVNZWRp
YUNoYW5uZWwoCisgICAgICBjYWxsLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlv
bnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKICAgY3JpY2tldDo6VmlkZW9SZWN2UGFy
YW1ldGVycyByZWN2X3BhcmFtZXRlcnM7CiAgIHJlY3ZfcGFyYW1ldGVycy5jb2RlY3MucHVzaF9i
YWNrKGVuZ2luZV9jb2RlY3MuYXQoMCkpOwogICBFWFBFQ1RfVFJVRShyZWN2X2NoYW5uZWwtPlNl
dFJlY3ZQYXJhbWV0ZXJzKHJlY3ZfcGFyYW1ldGVycykpOwpAQCAtMTExNyw2ICsxMTU2LDcgQEAg
VEVTVChXZWJSdGNWaWRlb0VuZ2luZU5ld1ZpZGVvQ29kZWNGYWN0b3J5VGVzdCwgVnA4KSB7CiAg
IC8vIFJlbW92ZSBzdHJlYW1zIHByZXZpb3VzbHkgYWRkZWQgdG8gZnJlZSB0aGUgZW5jb2RlciBh
bmQgZGVjb2RlciBpbnN0YW5jZS4KICAgRVhQRUNUX0NBTEwoKmVuY29kZXJfZmFjdG9yeSwgRGll
KCkpOwogICBFWFBFQ1RfQ0FMTCgqZGVjb2Rlcl9mYWN0b3J5LCBEaWUoKSk7CisgIEVYUEVDVF9D
QUxMKCpyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LCBEaWUoKSk7CiAgIEVYUEVDVF9UUlVFKHNlbmRf
Y2hhbm5lbC0+UmVtb3ZlU2VuZFN0cmVhbShzZW5kX3NzcmMpKTsKICAgRVhQRUNUX1RSVUUocmVj
dl9jaGFubmVsLT5SZW1vdmVSZWN2U3RyZWFtKHJlY3Zfc3NyYykpOwogfQpAQCAtMTEyNSwxMiAr
MTE2NSwxNiBAQCBURVNUKFdlYlJ0Y1ZpZGVvRW5naW5lTmV3VmlkZW9Db2RlY0ZhY3RvcnlUZXN0
LCBWcDgpIHsKIFRFU1QoV2ViUnRjVmlkZW9FbmdpbmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3Qs
IE51bGxEZWNvZGVyKSB7CiAgIC8vIHxlbmdpbmV8IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBmYWN0
b3JpZXMuCiAgIHdlYnJ0Yzo6TW9ja1ZpZGVvRW5jb2RlckZhY3RvcnkqIGVuY29kZXJfZmFjdG9y
eSA9Ci0gICAgICBuZXcgdGVzdGluZzo6U3RyaWN0TW9jazx3ZWJydGM6Ok1vY2tWaWRlb0VuY29k
ZXJGYWN0b3J5PigpOworICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1ZpZGVvRW5jb2RlckZhY3Rvcnko
KTsKICAgd2VicnRjOjpNb2NrVmlkZW9EZWNvZGVyRmFjdG9yeSogZGVjb2Rlcl9mYWN0b3J5ID0K
LSAgICAgIG5ldyB0ZXN0aW5nOjpTdHJpY3RNb2NrPHdlYnJ0Yzo6TW9ja1ZpZGVvRGVjb2RlckZh
Y3Rvcnk+KCk7CisgICAgICBuZXcgd2VicnRjOjpNb2NrVmlkZW9EZWNvZGVyRmFjdG9yeSgpOwor
ICB3ZWJydGM6Ok1vY2tWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KiByYXRlX2FsbG9jYXRv
cl9mYWN0b3J5ID0KKyAgICAgIG5ldyB3ZWJydGM6Ok1vY2tWaWRlb0JpdHJhdGVBbGxvY2F0b3JG
YWN0b3J5KCk7CiAgIFdlYlJ0Y1ZpZGVvRW5naW5lIGVuZ2luZSgKICAgICAgIChzdGQ6OnVuaXF1
ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PihlbmNvZGVyX2ZhY3RvcnkpKSwKLSAg
ICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PihkZWNvZGVy
X2ZhY3RvcnkpKSk7CisgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVy
RmFjdG9yeT4oZGVjb2Rlcl9mYWN0b3J5KSksCisgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0
Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4oCisgICAgICAgICAgcmF0ZV9hbGxvY2F0
b3JfZmFjdG9yeSkpKTsKICAgY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCB2cDhfZm9ybWF0
KCJWUDgiKTsKICAgY29uc3Qgc3RkOjp2ZWN0b3I8d2VicnRjOjpTZHBWaWRlb0Zvcm1hdD4gc3Vw
cG9ydGVkX2Zvcm1hdHMgPSB7dnA4X2Zvcm1hdH07CiAgIEVYUEVDVF9DQUxMKCplbmNvZGVyX2Zh
Y3RvcnksIEdldFN1cHBvcnRlZEZvcm1hdHMoKSkKQEAgLTExNDcsOCArMTE5MSw4IEBAIFRFU1Qo
V2ViUnRjVmlkZW9FbmdpbmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3QsIE51bGxEZWNvZGVyKSB7
CiAKICAgLy8gQ3JlYXRlIHJlY3YgY2hhbm5lbC4KICAgY29uc3QgaW50IHJlY3Zfc3NyYyA9IDMy
MTsKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiByZWN2X2NoYW5uZWwoCi0g
ICAgICBlbmdpbmUuQ3JlYXRlQ2hhbm5lbChjYWxsLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBW
aWRlb09wdGlvbnMoKSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IHJl
Y3ZfY2hhbm5lbChlbmdpbmUuQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbC5nZXQoKSwg
R2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygp
KSk7CiAgIGNyaWNrZXQ6OlZpZGVvUmVjdlBhcmFtZXRlcnMgcmVjdl9wYXJhbWV0ZXJzOwogICBy
ZWN2X3BhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhlbmdpbmUuY29kZWNzKCkuZnJvbnQoKSk7
CiAgIEVYUEVDVF9UUlVFKHJlY3ZfY2hhbm5lbC0+U2V0UmVjdlBhcmFtZXRlcnMocmVjdl9wYXJh
bWV0ZXJzKSk7CkBAIC0xMjIzLDcgKzEyNjcsOCBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWxC
YXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICBwcm90ZWN0ZWQ6CiAgIFdlYlJ0Y1Zp
ZGVvQ2hhbm5lbEJhc2VUZXN0KCkKICAgICAgIDogZW5naW5lXyh3ZWJydGM6OkNyZWF0ZUJ1aWx0
aW5WaWRlb0VuY29kZXJGYWN0b3J5KCksCi0gICAgICAgICAgICAgICAgd2VicnRjOjpDcmVhdGVC
dWlsdGluVmlkZW9EZWNvZGVyRmFjdG9yeSgpKSB7fQorICAgICAgICAgICAgICAgIHdlYnJ0Yzo6
Q3JlYXRlQnVpbHRpblZpZGVvRGVjb2RlckZhY3RvcnkoKSwKKyAgICAgICAgICAgICAgICB3ZWJy
dGM6OkNyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkpIHt9CiAKICAg
dmlydHVhbCB2b2lkIFNldFVwKCkgewogICAgIC8vIE9uZSB0ZXN0Y2FzZSBjYWxscyBTZXRVcCBp
biBhIGxvb3AsIG9ubHkgY3JlYXRlIGNhbGxfIG9uY2UuCkBAIC0xMjM2LDEyICsxMjgxLDE0IEBA
IGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbEJhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
ewogICAgIC8vIG5lZWRzIHRvIGJlIGRpc2FibGVkLCBvdGhlcndpc2UsIHRlc3RzIHdoaWNoIGNo
ZWNrIHRoZSBzaXplIG9mIHJlY2VpdmVkCiAgICAgLy8gZnJhbWVzIGJlY29tZSBmbGFreS4KICAg
ICBtZWRpYV9jb25maWcudmlkZW8uZW5hYmxlX2NwdV9hZGFwdGF0aW9uID0gZmFsc2U7Ci0gICAg
Y2hhbm5lbF8ucmVzZXQoZW5naW5lXy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgpLCBtZWRpYV9j
b25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6
OlZpZGVvT3B0aW9ucygpKSk7CisgICAgY2hhbm5lbF8ucmVzZXQoCisgICAgICAgIHN0YXRpY19j
YXN0PGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvQ2hhbm5lbCo+KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFu
bmVsKAorICAgICAgICAgICAgY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywgY3JpY2tldDo6Vmlk
ZW9PcHRpb25zKCksCisgICAgICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpKTsKICAg
ICBjaGFubmVsXy0+T25SZWFkeVRvU2VuZCh0cnVlKTsKICAgICBFWFBFQ1RfVFJVRShjaGFubmVs
Xy5nZXQoKSAhPSBOVUxMKTsKICAgICBuZXR3b3JrX2ludGVyZmFjZV8uU2V0RGVzdGluYXRpb24o
Y2hhbm5lbF8uZ2V0KCkpOwotICAgIGNoYW5uZWxfLT5TZXRJbnRlcmZhY2UoJm5ldHdvcmtfaW50
ZXJmYWNlXyk7CisgICAgY2hhbm5lbF8tPlNldEludGVyZmFjZSgmbmV0d29ya19pbnRlcmZhY2Vf
LCAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogICAgIGNyaWNrZXQ6OlZpZGVvUmVjdlBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGVuZ2luZV8uY29k
ZWNzKCk7CiAgICAgY2hhbm5lbF8tPlNldFJlY3ZQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwpAQCAt
MTQxMSw3ICsxNDU4LDcgQEAgY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsQmFzZVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CiAKICAgY3JpY2tldDo6VmlkZW9Db2RlYyBHZXRFbmdpbmVDb2Rl
Yyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkgewogICAgIGZvciAoY29uc3QgY3JpY2tldDo6Vmlk
ZW9Db2RlYyYgZW5naW5lX2NvZGVjIDogZW5naW5lXy5jb2RlY3MoKSkgewotICAgICAgaWYgKENv
ZGVjTmFtZXNFcShuYW1lLCBlbmdpbmVfY29kZWMubmFtZSkpCisgICAgICBpZiAoYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShuYW1lLCBlbmdpbmVfY29kZWMubmFtZSkpCiAgICAgICAgIHJldHVybiBl
bmdpbmVfY29kZWM7CiAgICAgfQogICAgIC8vIFRoaXMgcG9pbnQgc2hvdWxkIG5ldmVyIGJlIHJl
YWNoZWQuCkBAIC0xNDY1LDYwICsxNTEyLDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbEJh
c2VUZXN0LCBTZXRTZW5kU2V0c1RyYW5zcG9ydEJ1ZmZlclNpemVzKSB7CiAgIEVYUEVDVF9UUlVF
KFNldE9uZUNvZGVjKERlZmF1bHRDb2RlYygpKSk7CiAgIEVYUEVDVF9UUlVFKFNldFNlbmQodHJ1
ZSkpOwogICBFWFBFQ1RfRVEoNjQgKiAxMDI0LCBuZXR3b3JrX2ludGVyZmFjZV8uc2VuZGJ1Zl9z
aXplKCkpOwotICBFWFBFQ1RfRVEoNjQgKiAxMDI0LCBuZXR3b3JrX2ludGVyZmFjZV8ucmVjdmJ1
Zl9zaXplKCkpOwotfQotCi0vLyBUZXN0IHRoYXQgd2UgcHJvcGVybHkgc2V0IHRoZSBzZW5kIGFu
ZCByZWN2IGJ1ZmZlciBzaXplcyB3aGVuIG92ZXJyaWRpbmcKLS8vIHZpYSBmaWVsZCB0cmlhbHMu
Ci1URVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsQmFzZVRlc3QsIE92ZXJyaWRlc1JlY3ZCdWZmZXJT
aXplKSB7Ci0gIC8vIFNldCBmaWVsZCB0cmlhbCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCByZWN2
IGJ1ZmZlciBzaXplLCBhbmQgdGhlbiByZS1ydW4KLSAgLy8gc2V0dXAgd2hlcmUgdGhlIGludGVy
ZmFjZSBpcyBjcmVhdGVkIGFuZCBjb25maWd1cmVkLgotICBjb25zdCBpbnQga0N1c3RvbVJlY3ZC
dWZmZXJTaXplID0gMTIzNDU2OwotICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZp
ZWxkX3RyaWFsKAotICAgICAgIldlYlJUQy1JbmNyZWFzZWRSZWNlaXZlYnVmZmVycy8xMjM0NTYv
Iik7Ci0gIFNldFVwKCk7Ci0KLSAgRVhQRUNUX1RSVUUoU2V0T25lQ29kZWMoRGVmYXVsdENvZGVj
KCkpKTsKLSAgRVhQRUNUX1RSVUUoU2V0U2VuZCh0cnVlKSk7Ci0gIEVYUEVDVF9FUSg2NCAqIDEw
MjQsIG5ldHdvcmtfaW50ZXJmYWNlXy5zZW5kYnVmX3NpemUoKSk7Ci0gIEVYUEVDVF9FUShrQ3Vz
dG9tUmVjdkJ1ZmZlclNpemUsIG5ldHdvcmtfaW50ZXJmYWNlXy5yZWN2YnVmX3NpemUoKSk7Ci19
Ci0KLS8vIFRlc3QgdGhhdCB3ZSBwcm9wZXJseSBzZXQgdGhlIHNlbmQgYW5kIHJlY3YgYnVmZmVy
IHNpemVzIHdoZW4gb3ZlcnJpZGluZwotLy8gdmlhIGZpZWxkIHRyaWFscyB3aXRoIHN1ZmZpeC4K
LVRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxCYXNlVGVzdCwgT3ZlcnJpZGVzUmVjdkJ1ZmZlclNp
emVXaXRoU3VmZml4KSB7Ci0gIC8vIFNldCBmaWVsZCB0cmlhbCB0byBvdmVycmlkZSB0aGUgZGVm
YXVsdCByZWN2IGJ1ZmZlciBzaXplLCBhbmQgdGhlbiByZS1ydW4KLSAgLy8gc2V0dXAgd2hlcmUg
dGhlIGludGVyZmFjZSBpcyBjcmVhdGVkIGFuZCBjb25maWd1cmVkLgotICBjb25zdCBpbnQga0N1
c3RvbVJlY3ZCdWZmZXJTaXplID0gMTIzNDU2OwotICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxk
VHJpYWxzIGZpZWxkX3RyaWFsKAotICAgICAgIldlYlJUQy1JbmNyZWFzZWRSZWNlaXZlYnVmZmVy
cy8xMjM0NTZfRG9nZm9vZC8iKTsKLSAgU2V0VXAoKTsKLQotICBFWFBFQ1RfVFJVRShTZXRPbmVD
b2RlYyhEZWZhdWx0Q29kZWMoKSkpOwotICBFWFBFQ1RfVFJVRShTZXRTZW5kKHRydWUpKTsKLSAg
RVhQRUNUX0VRKDY0ICogMTAyNCwgbmV0d29ya19pbnRlcmZhY2VfLnNlbmRidWZfc2l6ZSgpKTsK
LSAgRVhQRUNUX0VRKGtDdXN0b21SZWN2QnVmZmVyU2l6ZSwgbmV0d29ya19pbnRlcmZhY2VfLnJl
Y3ZidWZfc2l6ZSgpKTsKLX0KLQotLy8gVGVzdCB0aGF0IHdlIHByb3Blcmx5IHNldCB0aGUgc2Vu
ZCBhbmQgcmVjdiBidWZmZXIgc2l6ZXMgd2hlbiBvdmVycmlkaW5nCi0vLyB2aWEgZmllbGQgdHJp
YWxzIHRoYXQgZG9uJ3QgbWFrZSBhbnkgc2Vuc2UuCi1URVNUX0YoV2ViUnRjVmlkZW9DaGFubmVs
QmFzZVRlc3QsIEludmFsaWRSZWN2QnVmZmVyU2l6ZSkgewotICAvLyBTZXQgYm9ndXMgZmllbGQg
dHJpYWwgdmFsdWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHJlY3YgYnVmZmVyIHNpemUsIGFu
ZAotICAvLyB0aGVuIHJlLXJ1biBzZXR1cCB3aGVyZSB0aGUgaW50ZXJmYWNlIGlzIGNyZWF0ZWQg
YW5kIGNvbmZpZ3VyZWQuIFRoZQotICAvLyBkZWZhdWx0IHZhbHVlIHNob3VsZCBzdGlsbCBiZSB1
c2VkLgotCi0gIGZvciAoc3RkOjpzdHJpbmcgZ3JvdXAgOiB7IiAiLCAiTm90QU51bWJlciIsICIt
MSIsICIwIn0pIHsKLSAgICBzdGQ6OnN0cmluZyBmaWVsZF90cmlhbF9zdHJpbmcgPSAiV2ViUlRD
LUluY3JlYXNlZFJlY2VpdmVidWZmZXJzLyI7Ci0gICAgZmllbGRfdHJpYWxfc3RyaW5nICs9IGdy
b3VwOwotICAgIGZpZWxkX3RyaWFsX3N0cmluZyArPSAiLyI7Ci0gICAgd2VicnRjOjp0ZXN0OjpT
Y29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbChmaWVsZF90cmlhbF9zdHJpbmcpOwotICAgIFNl
dFVwKCk7Ci0KLSAgICBFWFBFQ1RfVFJVRShTZXRPbmVDb2RlYyhEZWZhdWx0Q29kZWMoKSkpOwot
ICAgIEVYUEVDVF9UUlVFKFNldFNlbmQodHJ1ZSkpOwotICAgIEVYUEVDVF9FUSg2NCAqIDEwMjQs
IG5ldHdvcmtfaW50ZXJmYWNlXy5zZW5kYnVmX3NpemUoKSk7Ci0gICAgRVhQRUNUX0VRKDY0ICog
MTAyNCwgbmV0d29ya19pbnRlcmZhY2VfLnJlY3ZidWZfc2l6ZSgpKTsKLSAgfQorICBFWFBFQ1Rf
RVEoMjU2ICogMTAyNCwgbmV0d29ya19pbnRlcmZhY2VfLnJlY3ZidWZfc2l6ZSgpKTsKIH0KIAog
Ly8gVGVzdCB0aGF0IHN0YXRzIHdvcmsgcHJvcGVybHkgZm9yIGEgMS0xIGNhbGwuCkBAIC0xNzU3
LDcgKzE3NTEsNyBAQCBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsQmFzZVRlc3QsIFNldFNpbmsp
IHsKICAgRVhQRUNUX1RSVUUoU2V0RGVmYXVsdENvZGVjKCkpOwogICBFWFBFQ1RfVFJVRShTZXRT
ZW5kKHRydWUpKTsKICAgRVhQRUNUX0VRKDAsIHJlbmRlcmVyXy5udW1fcmVuZGVyZWRfZnJhbWVz
KCkpOwotICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0MSwgcnRjOjpQYWNrZXRU
aW1lKCkpOworICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0MSwgLyogcGFja2V0
X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfVFJVRShjaGFubmVsXy0+U2V0U2luayhrRGVmYXVs
dFJlY2VpdmVTc3JjLCAmcmVuZGVyZXJfKSk7CiAgIEVYUEVDVF9UUlVFKFNlbmRGcmFtZSgpKTsK
ICAgRVhQRUNUX0ZSQU1FX1dBSVQoMSwga1ZpZGVvV2lkdGgsIGtWaWRlb0hlaWdodCwga1RpbWVv
dXQpOwpAQCAtMjA0Niw4ICsyMDQwLDkgQEAgY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsVGVzdCA6
IHB1YmxpYyBXZWJSdGNWaWRlb0VuZ2luZVRlc3QgewogI2VuZGlmCiAKICAgICBmYWtlX2NhbGxf
LnJlc2V0KG5ldyBGYWtlQ2FsbCgpKTsKLSAgICBjaGFubmVsXy5yZXNldChlbmdpbmVfLkNyZWF0
ZUNoYW5uZWwoZmFrZV9jYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9PcHRpb25zKCkpKTsKKyAgICBjaGFu
bmVsXy5yZXNldChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbChmYWtlX2NhbGxfLmdldCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldE1lZGlhQ29u
ZmlnKCksIFZpZGVvT3B0aW9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgICAgY2hhbm5lbF8tPk9u
UmVhZHlUb1NlbmQodHJ1ZSk7CiAgICAgbGFzdF9zc3JjXyA9IDEyMzsKICAgICBzZW5kX3BhcmFt
ZXRlcnNfLmNvZGVjcyA9IGVuZ2luZV8uY29kZWNzKCk7CkBAIC0yMTIxLDYgKzIxMTYsMjkgQEAg
Y2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsVGVzdCA6IHB1YmxpYyBXZWJSdGNWaWRlb0VuZ2luZVRl
c3QgewogICAgICAgICAgICAgICAgICAgICAmQml0cmF0ZUNvbnN0cmFpbnRzOjptYXhfYml0cmF0
ZV9icHMsIG1heF9iaXRyYXRlX2JwcykpKTsKICAgfQogCisgIHZvaWQgVGVzdEV4dG1hcEFsbG93
TWl4ZWRDYWxsZXIoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICAvLyBGb3IgYSBjYWxs
ZXIsIHRoZSBhbnN3ZXIgd2lsbCBiZSBhcHBsaWVkIGluIHNldCByZW1vdGUgZGVzY3JpcHRpb24K
KyAgICAvLyB3aGVyZSBTZXRTZW5kUGFyYW1ldGVycygpIGlzIGNhbGxlZC4KKyAgICBFWFBFQ1Rf
VFJVRSgKKyAgICAgICAgY2hhbm5lbF8tPkFkZFNlbmRTdHJlYW0oY3JpY2tldDo6U3RyZWFtUGFy
YW1zOjpDcmVhdGVMZWdhY3koa1NzcmMpKSk7CisgICAgc2VuZF9wYXJhbWV0ZXJzXy5leHRtYXBf
YWxsb3dfbWl4ZWQgPSBleHRtYXBfYWxsb3dfbWl4ZWQ7CisgICAgRVhQRUNUX1RSVUUoY2hhbm5l
bF8tPlNldFNlbmRQYXJhbWV0ZXJzKHNlbmRfcGFyYW1ldGVyc18pKTsKKyAgICBjb25zdCB3ZWJy
dGM6OlZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcgPQorICAgICAgICBmYWtlX2NhbGxf
LT5HZXRWaWRlb1NlbmRTdHJlYW1zKClbMF0tPkdldENvbmZpZygpOworICAgIEVYUEVDVF9FUShl
eHRtYXBfYWxsb3dfbWl4ZWQsIGNvbmZpZy5ydHAuZXh0bWFwX2FsbG93X21peGVkKTsKKyAgfQor
CisgIHZvaWQgVGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZWUoYm9vbCBleHRtYXBfYWxsb3dfbWl4
ZWQpIHsKKyAgICAvLyBGb3IgYSBjYWxsZWUsIHRoZSBhbnN3ZXIgd2lsbCBiZSBhcHBsaWVkIGlu
IHNldCBsb2NhbCBkZXNjcmlwdGlvbgorICAgIC8vIHdoZXJlIFNldEV4dG1hcEFsbG93TWl4ZWQo
KSBhbmQgQWRkU2VuZFN0cmVhbSgpIGFyZSBjYWxsZWQuCisgICAgY2hhbm5lbF8tPlNldEV4dG1h
cEFsbG93TWl4ZWQoZXh0bWFwX2FsbG93X21peGVkKTsKKyAgICBFWFBFQ1RfVFJVRSgKKyAgICAg
ICAgY2hhbm5lbF8tPkFkZFNlbmRTdHJlYW0oY3JpY2tldDo6U3RyZWFtUGFyYW1zOjpDcmVhdGVM
ZWdhY3koa1NzcmMpKSk7CisgICAgY29uc3Qgd2VicnRjOjpWaWRlb1NlbmRTdHJlYW06OkNvbmZp
ZyYgY29uZmlnID0KKyAgICAgICAgZmFrZV9jYWxsXy0+R2V0VmlkZW9TZW5kU3RyZWFtcygpWzBd
LT5HZXRDb25maWcoKTsKKyAgICBFWFBFQ1RfRVEoZXh0bWFwX2FsbG93X21peGVkLCBjb25maWcu
cnRwLmV4dG1hcF9hbGxvd19taXhlZCk7CisgIH0KKwogICB2b2lkIFRlc3RTZXRTZW5kUnRwSGVh
ZGVyRXh0ZW5zaW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgZXh0X3VyaSkgewogICAgIC8vIEVuYWJs
ZSBleHRlbnNpb24uCiAgICAgY29uc3QgaW50IGlkID0gMTsKQEAgLTIzNzcsNiArMjM5NSwyMCBA
QCBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgUmVjdlN0cmVhbU5vUnR4KSB7CiAgIEFT
U0VSVF9FUSgwVSwgcmVjdl9zdHJlYW0tPkdldENvbmZpZygpLnJ0cC5ydHhfc3NyYyk7CiB9CiAK
Ky8vIFRlc3QgcHJvcGFnYXRpb24gb2YgZXh0bWFwIGFsbG93IG1peGVkIHNldHRpbmcuCitURVNU
X0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgU2V0RXh0bWFwQWxsb3dNaXhlZEFzQ2FsbGVyKSB7
CisgIFRlc3RFeHRtYXBBbGxvd01peGVkQ2FsbGVyKC8qZXh0bWFwX2FsbG93X21peGVkPSovdHJ1
ZSk7Cit9CitURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgU2V0RXh0bWFwQWxsb3dNaXhl
ZERpc2FibGVkQXNDYWxsZXIpIHsKKyAgVGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZXIoLypleHRt
YXBfYWxsb3dfbWl4ZWQ9Ki9mYWxzZSk7Cit9CitURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVz
dCwgU2V0RXh0bWFwQWxsb3dNaXhlZEFzQ2FsbGVlKSB7CisgIFRlc3RFeHRtYXBBbGxvd01peGVk
Q2FsbGVlKC8qZXh0bWFwX2FsbG93X21peGVkPSovdHJ1ZSk7Cit9CitURVNUX0YoV2ViUnRjVmlk
ZW9DaGFubmVsVGVzdCwgU2V0RXh0bWFwQWxsb3dNaXhlZERpc2FibGVkQXNDYWxsZWUpIHsKKyAg
VGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZWUoLypleHRtYXBfYWxsb3dfbWl4ZWQ9Ki9mYWxzZSk7
Cit9CisKIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBOb0hlYWRlckV4dGVzaW9uc0J5
RGVmYXVsdCkgewogICBGYWtlVmlkZW9TZW5kU3RyZWFtKiBzZW5kX3N0cmVhbSA9CiAgICAgICBB
ZGRTZW5kU3RyZWFtKGNyaWNrZXQ6OlN0cmVhbVBhcmFtczo6Q3JlYXRlTGVnYWN5KGtTc3JjczFb
MF0pKTsKQEAgLTI4NTMsOCArMjg4NSw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0
LCBTZXRNZWRpYUNvbmZpZ1N1c3BlbmRCZWxvd01pbkJpdHJhdGUpIHsKICAgTWVkaWFDb25maWcg
bWVkaWFfY29uZmlnID0gR2V0TWVkaWFDb25maWcoKTsKICAgbWVkaWFfY29uZmlnLnZpZGVvLnN1
c3BlbmRfYmVsb3dfbWluX2JpdHJhdGUgPSB0cnVlOwogCi0gIGNoYW5uZWxfLnJlc2V0KAotICAg
ICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywg
VmlkZW9PcHRpb25zKCkpKTsKKyAgY2hhbm5lbF8ucmVzZXQoZW5naW5lXy5DcmVhdGVNZWRpYUNo
YW5uZWwoCisgICAgICBmYWtlX2NhbGxfLmdldCgpLCBtZWRpYV9jb25maWcsIFZpZGVvT3B0aW9u
cygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBjaGFubmVsXy0+T25SZWFkeVRvU2Vu
ZCh0cnVlKTsKIAogICBjaGFubmVsXy0+U2V0U2VuZFBhcmFtZXRlcnMoc2VuZF9wYXJhbWV0ZXJz
Xyk7CkBAIC0yODYzLDggKzI4OTUsOCBAQCBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwg
U2V0TWVkaWFDb25maWdTdXNwZW5kQmVsb3dNaW5CaXRyYXRlKSB7CiAgIEVYUEVDVF9UUlVFKHN0
cmVhbS0+R2V0Q29uZmlnKCkuc3VzcGVuZF9iZWxvd19taW5fYml0cmF0ZSk7CiAKICAgbWVkaWFf
Y29uZmlnLnZpZGVvLnN1c3BlbmRfYmVsb3dfbWluX2JpdHJhdGUgPSBmYWxzZTsKLSAgY2hhbm5l
bF8ucmVzZXQoCi0gICAgICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoZmFrZV9jYWxsXy5nZXQoKSwg
bWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMoKSkpOworICBjaGFubmVsXy5yZXNldChlbmdpbmVf
LkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZp
ZywgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgIGNoYW5uZWxf
LT5PblJlYWR5VG9TZW5kKHRydWUpOwogCiAgIGNoYW5uZWxfLT5TZXRTZW5kUGFyYW1ldGVycyhz
ZW5kX3BhcmFtZXRlcnNfKTsKQEAgLTMyMDQsOCArMzIzNiw4IEBAIFRFU1RfRihXZWJSdGNWaWRl
b0NoYW5uZWxUZXN0LCBBZGFwdHNPbk92ZXJ1c2VBbmRDaGFuZ2VSZXNvbHV0aW9uKSB7CiAgIHBh
cmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhjb2RlYyk7CiAKICAgTWVkaWFDb25maWcgbWVkaWFf
Y29uZmlnID0gR2V0TWVkaWFDb25maWcoKTsKLSAgY2hhbm5lbF8ucmVzZXQoCi0gICAgICBlbmdp
bmVfLkNyZWF0ZUNoYW5uZWwoZmFrZV9jYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09w
dGlvbnMoKSkpOworICBjaGFubmVsXy5yZXNldChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgK
KyAgICAgIGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywgVmlkZW9PcHRpb25zKCksIHdl
YnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgIGNoYW5uZWxfLT5PblJlYWR5VG9TZW5kKHRydWUp
OwogICBBU1NFUlRfVFJVRShjaGFubmVsXy0+U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycykp
OwogCkBAIC0zMjg1LDggKzMzMTcsOCBAQCBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwg
UHJldmlvdXNBZGFwdGF0aW9uRG9lc05vdEFwcGx5VG9TY3JlZW5zaGFyZSkgewogCiAgIE1lZGlh
Q29uZmlnIG1lZGlhX2NvbmZpZyA9IEdldE1lZGlhQ29uZmlnKCk7CiAgIG1lZGlhX2NvbmZpZy52
aWRlby5lbmFibGVfY3B1X2FkYXB0YXRpb24gPSB0cnVlOwotICBjaGFubmVsXy5yZXNldCgKLSAg
ICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChmYWtlX2NhbGxfLmdldCgpLCBtZWRpYV9jb25maWcs
IFZpZGVvT3B0aW9ucygpKSk7CisgIGNoYW5uZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRlTWVkaWFD
aGFubmVsKAorICAgICAgZmFrZV9jYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlv
bnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKICAgY2hhbm5lbF8tPk9uUmVhZHlUb1Nl
bmQodHJ1ZSk7CiAgIEFTU0VSVF9UUlVFKGNoYW5uZWxfLT5TZXRTZW5kUGFyYW1ldGVycyhwYXJh
bWV0ZXJzKSk7CiAKQEAgLTMzNTksOCArMzM5MSw4IEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVs
VGVzdDo6VGVzdERlZ3JhZGF0aW9uUHJlZmVyZW5jZSgKIAogICBNZWRpYUNvbmZpZyBtZWRpYV9j
b25maWcgPSBHZXRNZWRpYUNvbmZpZygpOwogICBtZWRpYV9jb25maWcudmlkZW8uZW5hYmxlX2Nw
dV9hZGFwdGF0aW9uID0gdHJ1ZTsKLSAgY2hhbm5lbF8ucmVzZXQoCi0gICAgICBlbmdpbmVfLkNy
ZWF0ZUNoYW5uZWwoZmFrZV9jYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMo
KSkpOworICBjaGFubmVsXy5yZXNldChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAg
IGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6
Q3J5cHRvT3B0aW9ucygpKSk7CiAgIGNoYW5uZWxfLT5PblJlYWR5VG9TZW5kKHRydWUpOwogCiAg
IEVYUEVDVF9UUlVFKGNoYW5uZWxfLT5TZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSk7CkBA
IC0zMzk0LDggKzM0MjYsOCBAQCB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3Q6OlRlc3RDcHVB
ZGFwdGF0aW9uKGJvb2wgZW5hYmxlX292ZXJ1c2UsCiAgIGlmIChlbmFibGVfb3ZlcnVzZSkgewog
ICAgIG1lZGlhX2NvbmZpZy52aWRlby5lbmFibGVfY3B1X2FkYXB0YXRpb24gPSB0cnVlOwogICB9
Ci0gIGNoYW5uZWxfLnJlc2V0KAotICAgICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGZha2VfY2Fs
bF8uZ2V0KCksIG1lZGlhX2NvbmZpZywgVmlkZW9PcHRpb25zKCkpKTsKKyAgY2hhbm5lbF8ucmVz
ZXQoZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICBmYWtlX2NhbGxfLmdldCgpLCBt
ZWRpYV9jb25maWcsIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwog
ICBjaGFubmVsXy0+T25SZWFkeVRvU2VuZCh0cnVlKTsKIAogICBFWFBFQ1RfVFJVRShjaGFubmVs
Xy0+U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycykpOwpAQCAtNDU3NSwzMSArNDYwNyw1NSBA
QCBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgVGVzdFNldERzY3BPcHRpb25zKSB7CiAg
ICAgICBuZXcgY3JpY2tldDo6RmFrZU5ldHdvcmtJbnRlcmZhY2UpOwogICBNZWRpYUNvbmZpZyBj
b25maWc7CiAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpXZWJSdGNWaWRlb0NoYW5uZWw+IGNo
YW5uZWw7CisgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCi0gIGNoYW5uZWwu
cmVzZXQoc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRjVmlkZW9DaGFubmVsKj4oCi0gICAgICBl
bmdpbmVfLkNyZWF0ZUNoYW5uZWwoY2FsbF8uZ2V0KCksIGNvbmZpZywgVmlkZW9PcHRpb25zKCkp
KSk7Ci0gIGNoYW5uZWwtPlNldEludGVyZmFjZShuZXR3b3JrX2ludGVyZmFjZS5nZXQoKSk7Cisg
IGNoYW5uZWwucmVzZXQoCisgICAgICBzdGF0aWNfY2FzdDxjcmlja2V0OjpXZWJSdGNWaWRlb0No
YW5uZWwqPihlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgICAgICBjYWxsXy5nZXQo
KSwgY29uZmlnLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKSk7Cisg
IGNoYW5uZWwtPlNldEludGVyZmFjZShuZXR3b3JrX2ludGVyZmFjZS5nZXQoKSwgLyptZWRpYV90
cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgLy8gRGVmYXVsdCB2YWx1ZSB3aGVuIERTQ1AgaXMgZGlz
YWJsZWQgc2hvdWxkIGJlIERTQ1BfREVGQVVMVC4KICAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9ERUZB
VUxULCBuZXR3b3JrX2ludGVyZmFjZS0+ZHNjcCgpKTsKIAorICAvLyBEZWZhdWx0IHZhbHVlIHdo
ZW4gRFNDUCBpcyBlbmFibGVkIGlzIGFsc28gRFNDUF9ERUZBVUxULCB1bnRpbCBpdCBpcyBzZXQK
KyAgLy8gdGhyb3VnaCBydHAgcGFyYW1ldGVycy4KICAgY29uZmlnLmVuYWJsZV9kc2NwID0gdHJ1
ZTsKLSAgY2hhbm5lbC5yZXNldChzdGF0aWNfY2FzdDxjcmlja2V0OjpXZWJSdGNWaWRlb0NoYW5u
ZWwqPigKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgY29uZmlnLCBW
aWRlb09wdGlvbnMoKSkpKTsKLSAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKG5ldHdvcmtfaW50ZXJm
YWNlLmdldCgpKTsKKyAgY2hhbm5lbC5yZXNldCgKKyAgICAgIHN0YXRpY19jYXN0PGNyaWNrZXQ6
OldlYlJ0Y1ZpZGVvQ2hhbm5lbCo+KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAg
ICAgIGNhbGxfLmdldCgpLCBjb25maWcsIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09w
dGlvbnMoKSkpKTsKKyAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKG5ldHdvcmtfaW50ZXJmYWNlLmdl
dCgpLCAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOworICBFWFBFQ1RfRVEocnRjOjpEU0NQ
X0RFRkFVTFQsIG5ldHdvcmtfaW50ZXJmYWNlLT5kc2NwKCkpOworCisgIC8vIENyZWF0ZSBhIHNl
bmQgc3RyZWFtIHRvIGNvbmZpZ3VyZQorICBFWFBFQ1RfVFJVRShjaGFubmVsLT5BZGRTZW5kU3Ry
ZWFtKFN0cmVhbVBhcmFtczo6Q3JlYXRlTGVnYWN5KGtTc3JjKSkpOworICBwYXJhbWV0ZXJzID0g
Y2hhbm5lbC0+R2V0UnRwU2VuZFBhcmFtZXRlcnMoa1NzcmMpOworICBBU1NFUlRfRkFMU0UocGFy
YW1ldGVycy5lbmNvZGluZ3MuZW1wdHkoKSk7CisKKyAgLy8gVmFyaW91cyBwcmlvcml0aWVzIG1h
cCB0byB2YXJpb3VzIGRzY3AgdmFsdWVzLgorICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3
b3JrX3ByaW9yaXR5ID0gNC4wOworICBBU1NFUlRfVFJVRShjaGFubmVsLT5TZXRSdHBTZW5kUGFy
YW1ldGVycyhrU3NyYywgcGFyYW1ldGVycykub2soKSk7CiAgIEVYUEVDVF9FUShydGM6OkRTQ1Bf
QUY0MSwgbmV0d29ya19pbnRlcmZhY2UtPmRzY3AoKSk7CisgIHBhcmFtZXRlcnMuZW5jb2Rpbmdz
WzBdLm5ldHdvcmtfcHJpb3JpdHkgPSAwLjU7CisgIEFTU0VSVF9UUlVFKGNoYW5uZWwtPlNldFJ0
cFNlbmRQYXJhbWV0ZXJzKGtTc3JjLCBwYXJhbWV0ZXJzKS5vaygpKTsKKyAgRVhQRUNUX0VRKHJ0
Yzo6RFNDUF9DUzEsIG5ldHdvcmtfaW50ZXJmYWNlLT5kc2NwKCkpOworCisgIC8vIEEgYmFkIHBy
aW9yaXR5IGRvZXMgbm90IGNoYW5nZSB0aGUgZHNjcCB2YWx1ZS4KKyAgcGFyYW1ldGVycy5lbmNv
ZGluZ3NbMF0ubmV0d29ya19wcmlvcml0eSA9IDAuMDsKKyAgQVNTRVJUX0ZBTFNFKGNoYW5uZWwt
PlNldFJ0cFNlbmRQYXJhbWV0ZXJzKGtTc3JjLCBwYXJhbWV0ZXJzKS5vaygpKTsKKyAgRVhQRUNU
X0VRKHJ0Yzo6RFNDUF9DUzEsIG5ldHdvcmtfaW50ZXJmYWNlLT5kc2NwKCkpOwogCiAgIC8vIFBh
Y2tldHMgc2hvdWxkIGFsc28gc2VsZi1pZGVudGlmeSB0aGVpciBkc2NwIGluIFBhY2tldE9wdGlv
bnMuCiAgIGNvbnN0IHVpbnQ4X3Qga0RhdGFbMTBdID0gezB9OwogICBFWFBFQ1RfVFJVRShzdGF0
aWNfY2FzdDx3ZWJydGM6OlRyYW5zcG9ydCo+KGNoYW5uZWwuZ2V0KCkpCiAgICAgICAgICAgICAg
ICAgICAtPlNlbmRSdGNwKGtEYXRhLCBzaXplb2Yoa0RhdGEpKSk7Ci0gIEVYUEVDVF9FUShydGM6
OkRTQ1BfQUY0MSwgbmV0d29ya19pbnRlcmZhY2UtPm9wdGlvbnMoKS5kc2NwKTsKKyAgRVhQRUNU
X0VRKHJ0Yzo6RFNDUF9DUzEsIG5ldHdvcmtfaW50ZXJmYWNlLT5vcHRpb25zKCkuZHNjcCk7CiAK
ICAgLy8gVmVyaWZ5IHRoYXQgc2V0dGluZyB0aGUgb3B0aW9uIHRvIGZhbHNlIHJlc2V0cyB0aGUK
ICAgLy8gRGlmZlNlcnZDb2RlUG9pbnQuCiAgIGNvbmZpZy5lbmFibGVfZHNjcCA9IGZhbHNlOwot
ICBjaGFubmVsLnJlc2V0KHN0YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvQ2hhbm5lbCo+
KAotICAgICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgpLCBjb25maWcsIFZpZGVv
T3B0aW9ucygpKSkpOwotICBjaGFubmVsLT5TZXRJbnRlcmZhY2UobmV0d29ya19pbnRlcmZhY2Uu
Z2V0KCkpOworICBjaGFubmVsLnJlc2V0KAorICAgICAgc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2Vi
UnRjVmlkZW9DaGFubmVsKj4oZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICAgICAg
Y2FsbF8uZ2V0KCksIGNvbmZpZywgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9u
cygpKSkpOworICBjaGFubmVsLT5TZXRJbnRlcmZhY2UobmV0d29ya19pbnRlcmZhY2UuZ2V0KCks
IC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgIEVYUEVDVF9FUShydGM6OkRTQ1BfREVG
QVVMVCwgbmV0d29ya19pbnRlcmZhY2UtPmRzY3AoKSk7CiB9CiAKQEAgLTQ5NTcsOCArNTAxMyw3
IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBEZWZhdWx0UmVjZWl2ZVN0cmVhbVJl
Y29uZmlndXJlc1RvVXNlUnR4KSB7CiAgIG1lbXNldChkYXRhLCAwLCBzaXplb2YoZGF0YSkpOwog
ICBydGM6OlNldEJFMzIoJmRhdGFbOF0sIHNzcmNzWzBdKTsKICAgcnRjOjpDb3B5T25Xcml0ZUJ1
ZmZlciBwYWNrZXQoZGF0YSwga0RhdGFMZW5ndGgpOwotICBydGM6OlBhY2tldFRpbWUgcGFja2V0
X3RpbWU7Ci0gIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1l
KTsKKyAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVf
dXMgKi8gLTEpOwogCiAgIEFTU0VSVF9FUSgxdSwgZmFrZV9jYWxsXy0+R2V0VmlkZW9SZWNlaXZl
U3RyZWFtcygpLnNpemUoKSkKICAgICAgIDw8ICJObyBkZWZhdWx0IHJlY2VpdmUgc3RyZWFtIGNy
ZWF0ZWQuIjsKQEAgLTUxMTYsOCArNTE3MSw3IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxU
ZXN0LCBSZWN2VW5zaWduYWxlZFNzcmNXaXRoU2lnbmFsZWRTdHJlYW1JZCkgewogICBtZW1zZXQo
ZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKICAgcnRjOjpTZXRCRTMyKCZkYXRhWzhdLCBrSW5jb21p
bmdVbnNpZ25hbGxlZFNzcmMpOwogICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldChkYXRh
LCBrRGF0YUxlbmd0aCk7Ci0gIHJ0Yzo6UGFja2V0VGltZSBwYWNrZXRfdGltZTsKLSAgY2hhbm5l
bF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcGFja2V0X3RpbWUpOworICBjaGFubmVsXy0+
T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAKICAg
Ly8gVGhlIHN0cmVhbSBzaG91bGQgbm93IGJlIGNyZWF0ZWQgd2l0aCB0aGUgYXBwcm9wcmlhdGUg
c3luYyBsYWJlbC4KICAgRVhQRUNUX0VRKDF1LCBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVT
dHJlYW1zKCkuc2l6ZSgpKTsKQEAgLTUxMzAsNyArNTE4NCw3IEBAIFRFU1RfRihXZWJSdGNWaWRl
b0NoYW5uZWxUZXN0LCBSZWN2VW5zaWduYWxlZFNzcmNXaXRoU2lnbmFsZWRTdHJlYW1JZCkgewog
ICBBU1NFUlRfVFJVRShjaGFubmVsXy0+UmVtb3ZlUmVjdlN0cmVhbShrSW5jb21pbmdVbnNpZ25h
bGxlZFNzcmMpKTsKICAgRVhQRUNUX0VRKDB1LCBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVT
dHJlYW1zKCkuc2l6ZSgpKTsKIAotICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0
LCBwYWNrZXRfdGltZSk7CisgIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIC8q
IHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgRVhQRUNUX0VRKDF1LCBmYWtlX2NhbGxfLT5HZXRW
aWRlb1JlY2VpdmVTdHJlYW1zKCkuc2l6ZSgpKTsKICAgRVhQRUNUX1RSVUUoCiAgICAgICBmYWtl
X2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVTdHJlYW1zKClbMF0tPkdldENvbmZpZygpLnN5bmNfZ3Jv
dXAuZW1wdHkoKSk7CkBAIC01MTU2LDggKzUyMTAsNyBAQCB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5l
bFRlc3Q6OlRlc3RSZWNlaXZlVW5zaWduYWxlZFNzcmNQYWNrZXQoCiAgIHJ0Yzo6U2V0OChkYXRh
LCAxLCBwYXlsb2FkX3R5cGUpOwogICBydGM6OlNldEJFMzIoJmRhdGFbOF0sIGtJbmNvbWluZ1Vu
c2lnbmFsbGVkU3NyYyk7CiAgIHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgcGFja2V0KGRhdGEsIGtE
YXRhTGVuZ3RoKTsKLSAgcnRjOjpQYWNrZXRUaW1lIHBhY2tldF90aW1lOwotICBjaGFubmVsXy0+
T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBwYWNrZXRfdGltZSk7CisgIGNoYW5uZWxfLT5PblBh
Y2tldFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKIAogICBpZiAo
ZXhwZWN0X2NyZWF0ZWRfcmVjZWl2ZV9zdHJlYW0pIHsKICAgICBFWFBFQ1RfRVEoMXUsIGZha2Vf
Y2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKS5zaXplKCkpCkBAIC01MTcwLDYgKzUyMjMs
MTggQEAgdm9pZCBXZWJSdGNWaWRlb0NoYW5uZWxUZXN0OjpUZXN0UmVjZWl2ZVVuc2lnbmFsZWRT
c3JjUGFja2V0KAogICB9CiB9CiAKK2NsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbERpc2NhcmRVbmtu
b3duU3NyY1Rlc3QgOiBwdWJsaWMgV2ViUnRjVmlkZW9DaGFubmVsVGVzdCB7CisgcHVibGljOgor
ICBXZWJSdGNWaWRlb0NoYW5uZWxEaXNjYXJkVW5rbm93blNzcmNUZXN0KCkKKyAgICAgIDogV2Vi
UnRjVmlkZW9DaGFubmVsVGVzdCgKKyAgICAgICAgICAgICJXZWJSVEMtVmlkZW8tRGlzY2FyZFBh
Y2tldHNXaXRoVW5rbm93blNzcmMvRW5hYmxlZC8iKSB7fQorfTsKKworVEVTVF9GKFdlYlJ0Y1Zp
ZGVvQ2hhbm5lbERpc2NhcmRVbmtub3duU3NyY1Rlc3QsIE5vVW5zaWduYWxsZWRTdHJlYW1DcmVh
dGVkKSB7CisgIFRlc3RSZWNlaXZlVW5zaWduYWxlZFNzcmNQYWNrZXQoR2V0RW5naW5lQ29kZWMo
IlZQOCIpLmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIGV4
cGVjdF9jcmVhdGVkX3JlY2VpdmVfc3RyZWFtICovKTsKK30KKwogVEVTVF9GKFdlYlJ0Y1ZpZGVv
Q2hhbm5lbFRlc3QsIFZwOFBhY2tldENyZWF0ZXNVbnNpZ25hbGxlZFN0cmVhbSkgewogICBUZXN0
UmVjZWl2ZVVuc2lnbmFsZWRTc3JjUGFja2V0KEdldEVuZ2luZUNvZGVjKCJWUDgiKS5pZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlIC8qIGV4cGVjdF9jcmVhdGVkX3Jl
Y2VpdmVfc3RyZWFtICovKTsKQEAgLTUyMzIsOCArNTI5Nyw3IEBAIFRFU1RfRihXZWJSdGNWaWRl
b0NoYW5uZWxUZXN0LCBSZWNlaXZlRGlmZmVyZW50VW5zaWduYWxlZFNzcmMpIHsKICAgcnRwSGVh
ZGVyLnNzcmMgPSBrSW5jb21pbmdVbnNpZ25hbGxlZFNzcmMgKyAxOwogICBjcmlja2V0OjpTZXRS
dHBIZWFkZXIoZGF0YSwgc2l6ZW9mKGRhdGEpLCBydHBIZWFkZXIpOwogICBydGM6OkNvcHlPbldy
aXRlQnVmZmVyIHBhY2tldChkYXRhLCBzaXplb2YoZGF0YSkpOwotICBydGM6OlBhY2tldFRpbWUg
cGFja2V0X3RpbWU7Ci0gIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tl
dF90aW1lKTsKKyAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0
X3RpbWVfdXMgKi8gLTEpOwogICAvLyBWUDggcGFja2V0IHNob3VsZCBjcmVhdGUgZGVmYXVsdCBy
ZWNlaXZlIHN0cmVhbS4KICAgQVNTRVJUX0VRKDF1LCBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2Vp
dmVTdHJlYW1zKCkuc2l6ZSgpKTsKICAgRmFrZVZpZGVvUmVjZWl2ZVN0cmVhbSogcmVjdl9zdHJl
YW0gPSBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVTdHJlYW1zKClbMF07CkBAIC01MjQ5LDcg
KzUzMTMsNyBAQCBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgUmVjZWl2ZURpZmZlcmVu
dFVuc2lnbmFsZWRTc3JjKSB7CiAgIHJ0cEhlYWRlci5zc3JjID0ga0luY29taW5nVW5zaWduYWxs
ZWRTc3JjICsgMjsKICAgY3JpY2tldDo6U2V0UnRwSGVhZGVyKGRhdGEsIHNpemVvZihkYXRhKSwg
cnRwSGVhZGVyKTsKICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQyKGRhdGEsIHNpemVv
ZihkYXRhKSk7Ci0gIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQyLCBwYWNrZXRf
dGltZSk7CisgIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQyLCAvKiBwYWNrZXRf
dGltZV91cyAqLyAtMSk7CiAgIC8vIFZQOSBwYWNrZXQgc2hvdWxkIHJlcGxhY2UgdGhlIGRlZmF1
bHQgcmVjZWl2ZSBTU1JDLgogICBBU1NFUlRfRVEoMXUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVj
ZWl2ZVN0cmVhbXMoKS5zaXplKCkpOwogICByZWN2X3N0cmVhbSA9IGZha2VfY2FsbF8tPkdldFZp
ZGVvUmVjZWl2ZVN0cmVhbXMoKVswXTsKQEAgLTUyNjYsNyArNTMzMCw3IEBAIFRFU1RfRihXZWJS
dGNWaWRlb0NoYW5uZWxUZXN0LCBSZWNlaXZlRGlmZmVyZW50VW5zaWduYWxlZFNzcmMpIHsKICAg
cnRwSGVhZGVyLnNzcmMgPSBrSW5jb21pbmdVbnNpZ25hbGxlZFNzcmMgKyAzOwogICBjcmlja2V0
OjpTZXRSdHBIZWFkZXIoZGF0YSwgc2l6ZW9mKGRhdGEpLCBydHBIZWFkZXIpOwogICBydGM6OkNv
cHlPbldyaXRlQnVmZmVyIHBhY2tldDMoZGF0YSwgc2l6ZW9mKGRhdGEpKTsKLSAgY2hhbm5lbF8t
Pk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldDMsIHBhY2tldF90aW1lKTsKKyAgY2hhbm5lbF8tPk9u
UGFja2V0UmVjZWl2ZWQoJnBhY2tldDMsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgLy8g
SDI2NCBwYWNrZXQgc2hvdWxkIHJlcGxhY2UgdGhlIGRlZmF1bHQgcmVjZWl2ZSBTU1JDLgogICBB
U1NFUlRfRVEoMXUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKS5zaXplKCkp
OwogICByZWN2X3N0cmVhbSA9IGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKVsw
XTsKQEAgLTUzMDAsOCArNTM2NCw3IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LAog
ICBydHBfaGVhZGVyLnNzcmMgPSBrU3NyY3MzWzBdOwogICBjcmlja2V0OjpTZXRSdHBIZWFkZXIo
ZGF0YSwgc2l6ZW9mKGRhdGEpLCBydHBfaGVhZGVyKTsKICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZl
ciBwYWNrZXQoZGF0YSwgc2l6ZW9mKGRhdGEpKTsKLSAgcnRjOjpQYWNrZXRUaW1lIHBhY2tldF90
aW1lOwotICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBwYWNrZXRfdGltZSk7
CisgIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3Vz
ICovIC0xKTsKICAgLy8gRGVmYXVsdCByZWNlaXZlIHN0cmVhbSBzaG91bGQgYmUgY3JlYXRlZC4K
ICAgQVNTRVJUX0VRKDF1LCBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVTdHJlYW1zKCkuc2l6
ZSgpKTsKICAgRmFrZVZpZGVvUmVjZWl2ZVN0cmVhbSogcmVjdl9zdHJlYW0wID0KQEAgLTUzMTks
NyArNTM4Miw3IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LAogICBydHBfaGVhZGVy
LnNzcmMgPSBrU3NyY3MzWzFdOwogICBjcmlja2V0OjpTZXRSdHBIZWFkZXIoZGF0YSwgc2l6ZW9m
KGRhdGEpLCBydHBfaGVhZGVyKTsKICAgcGFja2V0LlNldERhdGEoZGF0YSwgc2l6ZW9mKGRhdGEp
KTsKLSAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcGFja2V0X3RpbWUpOwor
ICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCAvKiBwYWNrZXRfdGltZV91cyAq
LyAtMSk7CiAgIC8vIE5ldyBkZWZhdWx0IHJlY2VpdmUgc3RyZWFtIHNob3VsZCBiZSBjcmVhdGVk
LCBidXQgb2xkIHN0cmVhbSBzaG91bGQgcmVtYWluLgogICBBU1NFUlRfRVEoMnUsIGZha2VfY2Fs
bF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKS5zaXplKCkpOwogICBFWFBFQ1RfRVEocmVjdl9z
dHJlYW0wLCBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVTdHJlYW1zKClbMF0pOwpAQCAtNTY0
Niw2ICs1NzA5LDI4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBTZXRSdHBTZW5k
UGFyYW1ldGVyc1ByaW9yaXR5U2ltdWxjYXN0U3RyZWFtcykgewogICBFWFBFQ1RfVFJVRShjaGFu
bmVsXy0+U2V0VmlkZW9TZW5kKHByaW1hcnlfc3NyYywgbnVsbHB0ciwgbnVsbHB0cikpOwogfQog
CisvLyBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMubmV0d29ya19wcmlvcml0eSBtdXN0IGJlIG9u
ZSBvZiBhIGZldyB2YWx1ZXMKKy8vIGRlcml2ZWQgZnJvbSB0aGUgZGVmYXVsdCBwcmlvcml0eSwg
Y29ycmVzcG9uZGluZyB0byB2ZXJ5LWxvdywgbG93LCBtZWRpdW0sCisvLyBvciBoaWdoLgorVEVT
VF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIFNldFJ0cFNlbmRQYXJhbWV0ZXJzSW52YWxpZE5l
dHdvcmtQcmlvcml0eSkgeworICBBZGRTZW5kU3RyZWFtKCk7CisgIHdlYnJ0Yzo6UnRwUGFyYW1l
dGVycyBwYXJhbWV0ZXJzID0gY2hhbm5lbF8tPkdldFJ0cFNlbmRQYXJhbWV0ZXJzKGxhc3Rfc3Ny
Y18pOworICBFWFBFQ1RfRVEoMVVMLCBwYXJhbWV0ZXJzLmVuY29kaW5ncy5zaXplKCkpOworICBF
WFBFQ1RfRVEod2VicnRjOjprRGVmYXVsdEJpdHJhdGVQcmlvcml0eSwKKyAgICAgICAgICAgIHBh
cmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdvcmtfcHJpb3JpdHkpOworCisgIGRvdWJsZSBnb29k
X3ZhbHVlc1tdID0gezAuNSwgMS4wLCAyLjAsIDQuMH07CisgIGRvdWJsZSBiYWRfdmFsdWVzW10g
PSB7LTEuMCwgMC4wLCAwLjQ5LCAwLjUxLCAxLjEsIDMuOTksIDQuMSwgNS4wfTsKKyAgZm9yIChh
dXRvIGl0IDogZ29vZF92YWx1ZXMpIHsKKyAgICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3
b3JrX3ByaW9yaXR5ID0gaXQ7CisgICAgRVhQRUNUX1RSVUUoY2hhbm5lbF8tPlNldFJ0cFNlbmRQ
YXJhbWV0ZXJzKGxhc3Rfc3NyY18sIHBhcmFtZXRlcnMpLm9rKCkpOworICB9CisgIGZvciAoYXV0
byBpdCA6IGJhZF92YWx1ZXMpIHsKKyAgICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3b3Jr
X3ByaW9yaXR5ID0gaXQ7CisgICAgRVhQRUNUX0ZBTFNFKGNoYW5uZWxfLT5TZXRSdHBTZW5kUGFy
YW1ldGVycyhsYXN0X3NzcmNfLCBwYXJhbWV0ZXJzKS5vaygpKTsKKyAgfQorfQorCiBURVNUX0Yo
V2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgR2V0QW5kU2V0UnRwU2VuZFBhcmFtZXRlcnNNYXhGcmFt
ZXJhdGUpIHsKICAgY29uc3Qgc2l6ZV90IGtOdW1TaW11bGNhc3RTdHJlYW1zID0gMzsKICAgU2V0
VXBTaW11bGNhc3QodHJ1ZSwgZmFsc2UpOwpAQCAtNjYzNCw4ICs2NzE5LDcgQEAgVEVTVF9GKFdl
YlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIEdldFJ0cFJlY2VpdmVQYXJhbWV0ZXJzV2l0aFVuc2lnbmFs
ZWRTc3JjKSB7CiAgIHJ0cEhlYWRlci5zc3JjID0ga0luY29taW5nVW5zaWduYWxsZWRTc3JjOwog
ICBjcmlja2V0OjpTZXRSdHBIZWFkZXIoZGF0YSwgc2l6ZW9mKGRhdGEpLCBydHBIZWFkZXIpOwog
ICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldChkYXRhLCBzaXplb2YoZGF0YSkpOwotICBy
dGM6OlBhY2tldFRpbWUgcGFja2V0X3RpbWU7Ci0gIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVk
KCZwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBh
Y2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogCiAgIC8vIFRoZSB8c3NyY3wgbWVtYmVy
IHNob3VsZCBzdGlsbCBiZSB1bnNldC4KICAgcnRwX3BhcmFtZXRlcnMgPSBjaGFubmVsXy0+R2V0
UnRwUmVjZWl2ZVBhcmFtZXRlcnMoMCk7CkBAIC02Njk5LDE2ICs2NzgzLDIxIEBAIGNsYXNzIFdl
YlJ0Y1ZpZGVvQ2hhbm5lbFNpbXVsY2FzdFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAg
ICAgICA6IGZha2VfY2FsbF8oKSwKICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5XyhuZXcgY3JpY2tl
dDo6RmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkpLAogICAgICAgICBkZWNvZGVyX2ZhY3Rv
cnlfKG5ldyBjcmlja2V0OjpGYWtlV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSksCisgICAgICAg
IG1vY2tfcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8oCisgICAgICAgICAgICBuZXcgd2VicnRjOjpN
b2NrVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSksCiAgICAgICAgIGVuZ2luZV8oc3RkOjp1
bmlxdWVfcHRyPGNyaWNrZXQ6OkZha2VXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5PigKICAgICAg
ICAgICAgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5XyksCiAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPGNyaWNrZXQ6OkZha2VXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5PigKLSAgICAg
ICAgICAgICAgICAgICAgZGVjb2Rlcl9mYWN0b3J5XykpLAorICAgICAgICAgICAgICAgICAgICBk
ZWNvZGVyX2ZhY3RvcnlfKSwKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRj
OjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PigKKyAgICAgICAgICAgICAgICAgICAgbW9j
a19yYXRlX2FsbG9jYXRvcl9mYWN0b3J5XykpLAogICAgICAgICBsYXN0X3NzcmNfKDApIHt9CiAK
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsKICAgICBlbmNvZGVyX2ZhY3RvcnlfLT5BZGRTdXBw
b3J0ZWRWaWRlb0NvZGVjVHlwZSgiVlA4Iik7Ci0gICAgY2hhbm5lbF8ucmVzZXQoCi0gICAgICAg
IGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbCgmZmFrZV9jYWxsXywgR2V0TWVkaWFDb25maWcoKSwgVmlk
ZW9PcHRpb25zKCkpKTsKKyAgICBjaGFubmVsXy5yZXNldChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hh
bm5lbCgmZmFrZV9jYWxsXywgR2V0TWVkaWFDb25maWcoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb09wdGlvbnMoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkp
OwogICAgIGNoYW5uZWxfLT5PblJlYWR5VG9TZW5kKHRydWUpOwogICAgIGxhc3Rfc3NyY18gPSAx
MjM7CiAgIH0KQEAgLTY4NTgsNiArNjk0Nyw3IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbFNp
bXVsY2FzdFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgIEZha2VDYWxsIGZha2VfY2Fs
bF87CiAgIGNyaWNrZXQ6OkZha2VXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiBlbmNvZGVyX2Zh
Y3RvcnlfOwogICBjcmlja2V0OjpGYWtlV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogZGVjb2Rl
cl9mYWN0b3J5XzsKKyAgd2VicnRjOjpNb2NrVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSog
bW9ja19yYXRlX2FsbG9jYXRvcl9mYWN0b3J5XzsKICAgV2ViUnRjVmlkZW9FbmdpbmUgZW5naW5l
XzsKICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBjaGFubmVsXzsKICAgdWlu
dDMyX3QgbGFzdF9zc3JjXzsKQEAgLTY5MDUsMTYgKzY5OTUsMjAgQEAgVEVTVF9GKFdlYlJ0Y1Zp
ZGVvQ2hhbm5lbFNpbXVsY2FzdFRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNl
KTsKIH0KIAotLy8gVGhlIGZha2UgY2xvY2sgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZSBiZWZvcmUg
dGhlIGNhbGwuCi0vLyBTbyBkZWZlciBjcmVhdGluZyBjYWxsIGluIGJhc2UgY2xhc3MuCi1jbGFz
cyBXZWJSdGNWaWRlb0NoYW5uZWxUZXN0V2l0aENsb2NrIDogcHVibGljIFdlYlJ0Y1ZpZGVvQ2hh
bm5lbEJhc2VUZXN0IHsKK2NsYXNzIFdlYlJ0Y1ZpZGVvRmFrZUNsb2NrIHsKICBwdWJsaWM6Ci0g
IFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3RXaXRoQ2xvY2soKSB7CisgIFdlYlJ0Y1ZpZGVvRmFrZUNs
b2NrKCkgewogICAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lKHdlYnJ0Yzo6VGltZURlbHRhOjpt
cygxKSk7ICAvLyBhdm9pZCB0aW1lPTAKICAgfQogICBydGM6OlNjb3BlZEZha2VDbG9jayBmYWtl
X2Nsb2NrXzsKIH07CiAKKy8vIFRoZSBmYWtlIGNsb2NrIG5lZWRzIHRvIGJlIGluaXRpYWxpemVk
IGJlZm9yZSB0aGUgY2FsbCwgYW5kIG5vdAorLy8gZGVzdHJveWVkIHVudGlsIGFmdGVyIGFsbCB0
aHJlYWRzIHNwYXduZWQgYnkgdGhlIHRlc3QgaGF2ZSBiZWVuIHN0b3BwZWQuCisvLyBUaGlzIG1p
eGluIGVuc3VyZXMgdGhhdC4KK2NsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3RXaXRoQ2xvY2sg
OiBwdWJsaWMgV2ViUnRjVmlkZW9GYWtlQ2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIFdlYlJ0Y1ZpZGVvQ2hhbm5lbEJhc2VUZXN0IHt9OworCiBU
RVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdFdpdGhDbG9jaywgR2V0U291cmNlcykgewogICB1
aW50OF90IGRhdGExW10gPSB7MHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKICAg
ICAgICAgICAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5lLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5lLmNjCmluZGV4
IDhhZTdiOTkxZTgwNTM5MmRjOTI1NGFlYTg0YjEzODYxODZiNzNmZjkuLjE2NjBiZDg2ZTExNGFh
ZmJjZWMxNjQ3ZDYzODhiOTE1YWFiZjRkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2luZS5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvd2VicnRjdm9pY2VlbmdpbmUuY2MKQEAgLTE5LDggKzE5LDEwIEBACiAjaW5jbHVkZSA8
dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0
Y2guaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIK
ICNpbmNsdWRlICJhcGkvY2FsbC9hdWRpb19zaW5rLmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3Ry
YW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2F1ZGlvc291cmNlLmgi
CiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgogI2luY2x1ZGUgIm1lZGlh
L2Jhc2Uvc3RyZWFtcGFyYW1zLmgiCkBAIC0zOCwxMCArNDAsOCBAQAogI2luY2x1ZGUgInJ0Y19i
YXNlL2hlbHBlcnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2Rl
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9hdWRpb19mb3JtYXRfdG9fc3RyaW5nLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkv
YmFzZTY0L2Jhc2U2NC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50LmgiCiAjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKQEAgLTU4LDExICs1
OCw2IEBAIGNvbnN0ZXhwciBpbnQga05hY2tSdHBIaXN0b3J5TXMgPSA1MDAwOwogY29uc3QgaW50
IGtPcHVzTWluQml0cmF0ZUJwcyA9IDYwMDA7CiBjb25zdCBpbnQga09wdXNCaXRyYXRlRmJCcHMg
PSAzMjAwMDsKIAotLy8gRGVmYXVsdCBhdWRpbyBkc2NwIHZhbHVlLgotLy8gU2VlIGh0dHA6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzI0NzQgZm9yIGRldGFpbHMuCi0vLyBTZWUgYWxzbyBodHRw
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1qZW5uaW5ncy1ydGN3ZWItcW9zLTAwCi1jb25z
dCBydGM6OkRpZmZTZXJ2Q29kZVBvaW50IGtBdWRpb0RzY3BWYWx1ZSA9IHJ0Yzo6RFNDUF9FRjsK
LQogY29uc3QgaW50IGtNaW5UZWxlcGhvbmVFdmVudENvZGUgPSAwOyAgLy8gUkZDNDczMyAoU2Vj
dGlvbiAyLjMuMSkKIGNvbnN0IGludCBrTWF4VGVsZXBob25lRXZlbnRDb2RlID0gMjU1OwogCkBA
IC04MywxMiArNzgsMTIgQEAgY2xhc3MgUHJveHlTaW5rIDogcHVibGljIHdlYnJ0Yzo6QXVkaW9T
aW5rSW50ZXJmYWNlIHsKIAogYm9vbCBWYWxpZGF0ZVN0cmVhbVBhcmFtcyhjb25zdCBTdHJlYW1Q
YXJhbXMmIHNwKSB7CiAgIGlmIChzcC5zc3Jjcy5lbXB0eSgpKSB7Ci0gICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIk5vIFNTUkNzIGluIHN0cmVhbSBwYXJhbWV0ZXJzOiAiIDw8IHNwLlRvU3RyaW5n
KCk7CisgICAgUlRDX0RMT0coTFNfRVJST1IpIDw8ICJObyBTU1JDcyBpbiBzdHJlYW0gcGFyYW1l
dGVyczogIiA8PCBzcC5Ub1N0cmluZygpOwogICAgIHJldHVybiBmYWxzZTsKICAgfQogICBpZiAo
c3Auc3NyY3Muc2l6ZSgpID4gMSkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJNdWx0aXBs
ZSBTU1JDcyBpbiBzdHJlYW0gcGFyYW1ldGVyczogIgotICAgICAgICAgICAgICAgICAgICAgIDw8
IHNwLlRvU3RyaW5nKCk7CisgICAgUlRDX0RMT0coTFNfRVJST1IpIDw8ICJNdWx0aXBsZSBTU1JD
cyBpbiBzdHJlYW0gcGFyYW1ldGVyczogIgorICAgICAgICAgICAgICAgICAgICAgICA8PCBzcC5U
b1N0cmluZygpOwogICAgIHJldHVybiBmYWxzZTsKICAgfQogICByZXR1cm4gdHJ1ZTsKQEAgLTEx
MCw3ICsxMDUsNyBAQCBzdGQ6OnN0cmluZyBUb1N0cmluZyhjb25zdCBBdWRpb0NvZGVjJiBjb2Rl
YykgewogfQogCiBib29sIElzQ29kZWMoY29uc3QgQXVkaW9Db2RlYyYgY29kZWMsIGNvbnN0IGNo
YXIqIHJlZl9uYW1lKSB7Ci0gIHJldHVybiAoX3N0cmljbXAoY29kZWMubmFtZS5jX3N0cigpLCBy
ZWZfbmFtZSkgPT0gMCk7CisgIHJldHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjLm5h
bWUsIHJlZl9uYW1lKTsKIH0KIAogYm9vbCBGaW5kQ29kZWMoY29uc3Qgc3RkOjp2ZWN0b3I8QXVk
aW9Db2RlYz4mIGNvZGVjcywKQEAgLTI4NCw2ICsyNzksNyBAQCB2b2lkIFdlYlJ0Y1ZvaWNlRW5n
aW5lOjpJbml0KCkgewogICAgIG9wdGlvbnMuc3RlcmVvX3N3YXBwaW5nID0gZmFsc2U7CiAgICAg
b3B0aW9ucy5hdWRpb19qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzID0gNTA7CiAgICAgb3B0aW9u
cy5hdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSA9IGZhbHNlOworICAgIG9wdGlv
bnMuYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMgPSAwOwogICAgIG9wdGlvbnMudHlw
aW5nX2RldGVjdGlvbiA9IHRydWU7CiAgICAgb3B0aW9ucy5leHBlcmltZW50YWxfYWdjID0gZmFs
c2U7CiAgICAgb3B0aW9ucy5leHRlbmRlZF9maWx0ZXJfYWVjID0gZmFsc2U7CkBAIC0zMDMsMTIg
KzI5OSwxNCBAQCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiBXZWJSdGNW
b2ljZUVuZ2luZTo6R2V0QXVkaW9TdGF0ZSgpCiAgIHJldHVybiBhdWRpb19zdGF0ZV87CiB9CiAK
LVZvaWNlTWVkaWFDaGFubmVsKiBXZWJSdGNWb2ljZUVuZ2luZTo6Q3JlYXRlQ2hhbm5lbCgKK1Zv
aWNlTWVkaWFDaGFubmVsKiBXZWJSdGNWb2ljZUVuZ2luZTo6Q3JlYXRlTWVkaWFDaGFubmVsKAog
ICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAot
ICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykgeworICAgIGNvbnN0IEF1ZGlvT3B0aW9u
cyYgb3B0aW9ucywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRp
b25zKSB7CiAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlk
VGhyZWFkKCkpOwotICByZXR1cm4gbmV3IFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKHRoaXMsIGNv
bmZpZywgb3B0aW9ucywgY2FsbCk7CisgIHJldHVybiBuZXcgV2ViUnRjVm9pY2VNZWRpYUNoYW5u
ZWwodGhpcywgY29uZmlnLCBvcHRpb25zLCBjcnlwdG9fb3B0aW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWxsKTsKIH0KIAogYm9vbCBXZWJSdGNWb2ljZUVuZ2lu
ZTo6QXBwbHlPcHRpb25zKGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9uc19pbikgewpAQCAtMzIw
LDExICszMTgsNiBAQCBib29sIFdlYlJ0Y1ZvaWNlRW5naW5lOjpBcHBseU9wdGlvbnMoY29uc3Qg
QXVkaW9PcHRpb25zJiBvcHRpb25zX2luKSB7CiAgIC8vIFNldCBhbmQgYWRqdXN0IGVjaG8gY2Fu
Y2VsbGVyIG9wdGlvbnMuCiAgIC8vIGtFY0NvbmZlcmVuY2UgaXMgQUVDIHdpdGggaGlnaCBzdXBw
cmVzc2lvbi4KICAgd2VicnRjOjpFY01vZGVzIGVjX21vZGUgPSB3ZWJydGM6OmtFY0NvbmZlcmVu
Y2U7Ci0gIGlmIChvcHRpb25zLmFlY21fZ2VuZXJhdGVfY29tZm9ydF9ub2lzZSAmJgotICAgICAg
Km9wdGlvbnMuYWVjbV9nZW5lcmF0ZV9jb21mb3J0X25vaXNlKSB7Ci0gICAgUlRDX0xPRyhMU19X
QVJOSU5HKQotICAgICAgICA8PCAiSWdub3JpbmcgZGVwcmVjYXRlZCBtb2JpbGUgQUVDIHNldHRp
bmc6IGNvbWZvcnQgbm9pc2UiOwotICB9CiAKICNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCiAgIGlm
IChvcHRpb25zLmlvc19mb3JjZV9zb2Z0d2FyZV9hZWNfSEFDSyAmJgpAQCAtNDkwLDYgKzQ4Mywx
MiBAQCBib29sIFdlYlJ0Y1ZvaWNlRW5naW5lOjpBcHBseU9wdGlvbnMoY29uc3QgQXVkaW9PcHRp
b25zJiBvcHRpb25zX2luKSB7CiAgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJh
dGVfID0KICAgICAgICAgKm9wdGlvbnMuYXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJh
dGU7CiAgIH0KKyAgaWYgKG9wdGlvbnMuYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMp
IHsKKyAgICBSVENfTE9HKExTX0lORk8pIDw8ICJOZXRFcSBtaW5pbXVtIGRlbGF5IGlzICIKKyAg
ICAgICAgICAgICAgICAgICAgIDw8ICpvcHRpb25zLmF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2Rl
bGF5X21zOworICAgIGF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zXyA9CisgICAgICAg
ICpvcHRpb25zLmF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zOworICB9CiAKICAgaWYg
KG9wdGlvbnMudHlwaW5nX2RldGVjdGlvbikgewogICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlR5
cGluZyBkZXRlY3Rpb24gaXMgZW5hYmxlZD8gIgpAQCAtNzEzLDE2ICs3MTIsMjAgQEAgY2xhc3Mg
V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0Y0F1ZGlvU2VuZFN0cmVhbQogICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdHJhY2tfaWQsCiAgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDx3ZWJy
dGM6OkF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjpTZW5kQ29kZWNTcGVjPiYKICAgICAgICAgICBz
ZW5kX2NvZGVjX3NwZWMsCisgICAgICBib29sIGV4dG1hcF9hbGxvd19taXhlZCwKICAgICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uPiYgZXh0ZW5zaW9ucywKICAgICAg
IGludCBtYXhfc2VuZF9iaXRyYXRlX2JwcywKKyAgICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZh
bF9tcywKICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiYgYXVkaW9fbmV0
d29ya19hZGFwdG9yX2NvbmZpZywKICAgICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKICAgICAgIHdl
YnJ0Yzo6VHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwKKyAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFu
c3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCwKICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+JiBlbmNvZGVyX2ZhY3RvcnksCiAg
ICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkF1ZGlvQ29kZWNQYWlySWQ+IGNvZGVj
X3BhaXJfaWQsCi0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZUVuY3J5cHRv
ckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yKQorICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2VuY3J5cHRvciwKKyAgICAgIGNv
bnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpCiAgICAgICA6IGNhbGxf
KGNhbGwpLAotICAgICAgICBjb25maWdfKHNlbmRfdHJhbnNwb3J0KSwKKyAgICAgICAgY29uZmln
XyhzZW5kX3RyYW5zcG9ydCwgbWVkaWFfdHJhbnNwb3J0KSwKICAgICAgICAgc2VuZF9zaWRlX2J3
ZV93aXRoX292ZXJoZWFkXygKICAgICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5h
YmxlZCgiV2ViUlRDLVNlbmRTaWRlQndlLVdpdGhPdmVyaGVhZCIpKSwKICAgICAgICAgbWF4X3Nl
bmRfYml0cmF0ZV9icHNfKG1heF9zZW5kX2JpdHJhdGVfYnBzKSwKQEAgLTczMiwxMiArNzM1LDE3
IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpXZWJSdGNBdWRpb1NlbmRTdHJlYW0K
ICAgICBjb25maWdfLnJ0cC5zc3JjID0gc3NyYzsKICAgICBjb25maWdfLnJ0cC5taWQgPSBtaWQ7
CiAgICAgY29uZmlnXy5ydHAuY19uYW1lID0gY19uYW1lOworICAgIGNvbmZpZ18ucnRwLmV4dG1h
cF9hbGxvd19taXhlZCA9IGV4dG1hcF9hbGxvd19taXhlZDsKICAgICBjb25maWdfLnJ0cC5leHRl
bnNpb25zID0gZXh0ZW5zaW9uczsKKyAgICBjb25maWdfLmhhc19kc2NwID0gcnRwX3BhcmFtZXRl
cnNfLmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5ICE9CisgICAgICAgICAgICAgICAgICAg
ICAgIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3JpdHk7CiAgICAgY29uZmlnXy5hdWRpb19u
ZXR3b3JrX2FkYXB0b3JfY29uZmlnID0gYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZzsKICAg
ICBjb25maWdfLmVuY29kZXJfZmFjdG9yeSA9IGVuY29kZXJfZmFjdG9yeTsKICAgICBjb25maWdf
LmNvZGVjX3BhaXJfaWQgPSBjb2RlY19wYWlyX2lkOwogICAgIGNvbmZpZ18udHJhY2tfaWQgPSB0
cmFja19pZDsKICAgICBjb25maWdfLmZyYW1lX2VuY3J5cHRvciA9IGZyYW1lX2VuY3J5cHRvcjsK
KyAgICBjb25maWdfLmNyeXB0b19vcHRpb25zID0gY3J5cHRvX29wdGlvbnM7CisgICAgY29uZmln
Xy5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zOwogICAg
IHJ0cF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3NbMF0uc3NyYyA9IHNzcmM7CiAgICAgcnRwX3BhcmFt
ZXRlcnNfLnJ0Y3AuY25hbWUgPSBjX25hbWU7CiAgICAgcnRwX3BhcmFtZXRlcnNfLmhlYWRlcl9l
eHRlbnNpb25zID0gZXh0ZW5zaW9uczsKQEAgLTc2OCw2ICs3NzYsMTEgQEAgY2xhc3MgV2ViUnRj
Vm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0Y0F1ZGlvU2VuZFN0cmVhbQogICAgIFJlY29uZmlndXJl
QXVkaW9TZW5kU3RyZWFtKCk7CiAgIH0KIAorICB2b2lkIFNldEV4dG1hcEFsbG93TWl4ZWQoYm9v
bCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICBjb25maWdfLnJ0cC5leHRtYXBfYWxsb3dfbWl4
ZWQgPSBleHRtYXBfYWxsb3dfbWl4ZWQ7CisgICAgUmVjb25maWd1cmVBdWRpb1NlbmRTdHJlYW0o
KTsKKyAgfQorCiAgIHZvaWQgU2V0TWlkKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpIHsKICAgICBS
VENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsK
ICAgICBpZiAoY29uZmlnXy5ydHAubWlkID09IG1pZCkgewpAQCAtOTI4LDEyICs5NDEsMTYgQEAg
Y2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0Y0F1ZGlvU2VuZFN0cmVhbQogICAg
IGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4gb2xkX3J0cF9tYXhfYml0cmF0ZSA9CiAgICAgICAg
IHJ0cF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3NbMF0ubWF4X2JpdHJhdGVfYnBzOwogICAgIGRvdWJs
ZSBvbGRfcHJpb3JpdHkgPSBydHBfcGFyYW1ldGVyc18uZW5jb2RpbmdzWzBdLmJpdHJhdGVfcHJp
b3JpdHk7CisgICAgZG91YmxlIG9sZF9kc2NwID0gcnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1sw
XS5uZXR3b3JrX3ByaW9yaXR5OwogICAgIHJ0cF9wYXJhbWV0ZXJzXyA9IHBhcmFtZXRlcnM7CiAg
ICAgY29uZmlnXy5iaXRyYXRlX3ByaW9yaXR5ID0gcnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1sw
XS5iaXRyYXRlX3ByaW9yaXR5OworICAgIGNvbmZpZ18uaGFzX2RzY3AgPSAocnRwX3BhcmFtZXRl
cnNfLmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5ICE9CisgICAgICAgICAgICAgICAgICAg
ICAgICB3ZWJydGM6OmtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5KTsKIAogICAgIGJvb2wgcmVjb25m
aWd1cmVfc2VuZF9zdHJlYW0gPQogICAgICAgICAocnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1sw
XS5tYXhfYml0cmF0ZV9icHMgIT0gb2xkX3J0cF9tYXhfYml0cmF0ZSkgfHwKLSAgICAgICAgKHJ0
cF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3NbMF0uYml0cmF0ZV9wcmlvcml0eSAhPSBvbGRfcHJpb3Jp
dHkpOworICAgICAgICAocnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5iaXRyYXRlX3ByaW9y
aXR5ICE9IG9sZF9wcmlvcml0eSkgfHwKKyAgICAgICAgKHJ0cF9wYXJhbWV0ZXJzXy5lbmNvZGlu
Z3NbMF0ubmV0d29ya19wcmlvcml0eSAhPSBvbGRfZHNjcCk7CiAgICAgaWYgKHJ0cF9wYXJhbWV0
ZXJzXy5lbmNvZGluZ3NbMF0ubWF4X2JpdHJhdGVfYnBzICE9IG9sZF9ydHBfbWF4X2JpdHJhdGUp
IHsKICAgICAgIC8vIFVwZGF0ZSB0aGUgYml0cmF0ZSByYW5nZS4KICAgICAgIGlmIChzZW5kX3Jh
dGUpIHsKQEAgLTk2OSw4ICs5ODYsOCBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6
V2ViUnRjQXVkaW9TZW5kU3RyZWFtCiAgICAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNr
ZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAgICAgY29uc3QgYm9vbCBpc19vcHVzID0KICAg
ICAgICAgY29uZmlnXy5zZW5kX2NvZGVjX3NwZWMgJiYKLSAgICAgICAgIVNUUl9DQVNFX0NNUChj
b25maWdfLnNlbmRfY29kZWNfc3BlYy0+Zm9ybWF0Lm5hbWUuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICBrT3B1c0NvZGVjTmFtZSk7CisgICAgICAgIGFic2w6OkVxdWFsc0lnbm9yZUNh
c2UoY29uZmlnXy5zZW5kX2NvZGVjX3NwZWMtPmZvcm1hdC5uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtPcHVzQ29kZWNOYW1lKTsKICAgICBpZiAoaXNfb3B1cyAmJiB3ZWJy
dGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BdWRpby1TZW5kU2lkZUJ3ZSIpKSB7
CiAgICAgICBjb25maWdfLm1pbl9iaXRyYXRlX2JwcyA9IGtPcHVzTWluQml0cmF0ZUJwczsKIApA
QCAtMTAxNCw4ICsxMDMxLDYgQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0
Y0F1ZGlvU2VuZFN0cmVhbQogICB2b2lkIFVwZGF0ZVNlbmRDb2RlY1NwZWMoCiAgICAgICBjb25z
dCB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjpTZW5kQ29kZWNTcGVjJiBzZW5kX2Nv
ZGVjX3NwZWMpIHsKICAgICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVk
T25WYWxpZFRocmVhZCgpKTsKLSAgICBjb25maWdfLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zID0K
LSAgICAgICAgc2VuZF9jb2RlY19zcGVjLm5hY2tfZW5hYmxlZCA/IGtOYWNrUnRwSGlzdG9yeU1z
IDogMDsKICAgICBjb25maWdfLnNlbmRfY29kZWNfc3BlYyA9IHNlbmRfY29kZWNfc3BlYzsKICAg
ICBhdXRvIGluZm8gPQogICAgICAgICBjb25maWdfLmVuY29kZXJfZmFjdG9yeS0+UXVlcnlBdWRp
b0VuY29kZXIoc2VuZF9jb2RlY19zcGVjLmZvcm1hdCk7CkBAIC0xMDc3LDEyICsxMDkyLDE1IEBA
IGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpXZWJSdGNBdWRpb1JlY2VpdmVTdHJlYW0g
ewogICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBFeHRlbnNpb24+JiBleHRlbnNp
b25zLAogICAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAogICAgICAgd2VicnRjOjpUcmFuc3BvcnQq
IHJ0Y3Bfc2VuZF90cmFuc3BvcnQsCisgICAgICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJm
YWNlKiBtZWRpYV90cmFuc3BvcnQsCiAgICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiYgZGVjb2Rlcl9mYWN0b3J5LAogICAgICAgY29uc3Qg
c3RkOjptYXA8aW50LCB3ZWJydGM6OlNkcEF1ZGlvRm9ybWF0PiYgZGVjb2Rlcl9tYXAsCiAgICAg
ICBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkF1ZGlvQ29kZWNQYWlySWQ+IGNvZGVjX3BhaXJfaWQs
CiAgICAgICBzaXplX3Qgaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cywKICAgICAgIGJvb2wgaml0
dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGUsCi0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yKQorICAgICAgaW50
IGppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zLAorICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRvciwKKyAgICAgIGNv
bnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpCiAgICAgICA6IGNhbGxf
KGNhbGwpLCBjb25maWdfKCkgewogICAgIFJUQ19EQ0hFQ0soY2FsbCk7CiAgICAgY29uZmlnXy5y
dHAucmVtb3RlX3NzcmMgPSByZW1vdGVfc3NyYzsKQEAgLTEwOTEsOCArMTEwOSwxMCBAQCBjbGFz
cyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjQXVkaW9SZWNlaXZlU3RyZWFtIHsKICAg
ICBjb25maWdfLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zID0gdXNlX25hY2sgPyBrTmFja1J0cEhp
c3RvcnlNcyA6IDA7CiAgICAgY29uZmlnXy5ydHAuZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnM7CiAg
ICAgY29uZmlnXy5ydGNwX3NlbmRfdHJhbnNwb3J0ID0gcnRjcF9zZW5kX3RyYW5zcG9ydDsKKyAg
ICBjb25maWdfLm1lZGlhX3RyYW5zcG9ydCA9IG1lZGlhX3RyYW5zcG9ydDsKICAgICBjb25maWdf
LmppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMgPSBqaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzOwog
ICAgIGNvbmZpZ18uaml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGUgPSBqaXR0ZXJfYnVmZmVy
X2Zhc3RfYWNjZWxlcmF0ZTsKKyAgICBjb25maWdfLmppdHRlcl9idWZmZXJfbWluX2RlbGF5X21z
ID0gaml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXM7CiAgICAgaWYgKCFzdHJlYW1faWRzLmVtcHR5
KCkpIHsKICAgICAgIGNvbmZpZ18uc3luY19ncm91cCA9IHN0cmVhbV9pZHNbMF07CiAgICAgfQpA
QCAtMTEwMCw2ICsxMTIwLDcgQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0
Y0F1ZGlvUmVjZWl2ZVN0cmVhbSB7CiAgICAgY29uZmlnXy5kZWNvZGVyX21hcCA9IGRlY29kZXJf
bWFwOwogICAgIGNvbmZpZ18uY29kZWNfcGFpcl9pZCA9IGNvZGVjX3BhaXJfaWQ7CiAgICAgY29u
ZmlnXy5mcmFtZV9kZWNyeXB0b3IgPSBmcmFtZV9kZWNyeXB0b3I7CisgICAgY29uZmlnXy5jcnlw
dG9fb3B0aW9ucyA9IGNyeXB0b19vcHRpb25zOwogICAgIFJlY3JlYXRlQXVkaW9SZWNlaXZlU3Ry
ZWFtKCk7CiAgIH0KIApAQCAtMTIzNywxMSArMTI1OCwxNyBAQCBjbGFzcyBXZWJSdGNWb2ljZU1l
ZGlhQ2hhbm5lbDo6V2ViUnRjQXVkaW9SZWNlaXZlU3RyZWFtIHsKICAgUlRDX0RJU0FMTE9XX0lN
UExJQ0lUX0NPTlNUUlVDVE9SUyhXZWJSdGNBdWRpb1JlY2VpdmVTdHJlYW0pOwogfTsKIAotV2Vi
UnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKFdlYlJ0Y1ZvaWNl
RW5naW5lKiBlbmdpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRj
OjpDYWxsKiBjYWxsKQotICAgIDogVm9pY2VNZWRpYUNoYW5uZWwoY29uZmlnKSwgZW5naW5lXyhl
bmdpbmUpLCBjYWxsXyhjYWxsKSB7CitXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjVm9p
Y2VNZWRpYUNoYW5uZWwoCisgICAgV2ViUnRjVm9pY2VFbmdpbmUqIGVuZ2luZSwKKyAgICBjb25z
dCBNZWRpYUNvbmZpZyYgY29uZmlnLAorICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywK
KyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgIHdl
YnJ0Yzo6Q2FsbCogY2FsbCkKKyAgICA6IFZvaWNlTWVkaWFDaGFubmVsKGNvbmZpZyksCisgICAg
ICBlbmdpbmVfKGVuZ2luZSksCisgICAgICBjYWxsXyhjYWxsKSwKKyAgICAgIGF1ZGlvX2NvbmZp
Z18oY29uZmlnLmF1ZGlvKSwKKyAgICAgIGNyeXB0b19vcHRpb25zXyhjcnlwdG9fb3B0aW9ucykg
ewogICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICJXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2Vi
UnRjVm9pY2VNZWRpYUNoYW5uZWwiOwogICBSVENfRENIRUNLKGNhbGwpOwogICBlbmdpbmUtPlJl
Z2lzdGVyQ2hhbm5lbCh0aGlzKTsKQEAgLTEyNjQsNyArMTI5MSw3IEBAIFdlYlJ0Y1ZvaWNlTWVk
aWFDaGFubmVsOjp+V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwoKSB7CiB9CiAKIHJ0Yzo6RGlmZlNl
cnZDb2RlUG9pbnQgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OlByZWZlcnJlZERzY3AoKSBjb25z
dCB7Ci0gIHJldHVybiBrQXVkaW9Ec2NwVmFsdWU7CisgIHJldHVybiBwcmVmZXJyZWRfZHNjcF87
CiB9CiAKIGJvb2wgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OlNldFNlbmRQYXJhbWV0ZXJzKApA
QCAtMTI4Myw2ICsxMzEwLDE0IEBAIGJvb2wgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OlNldFNl
bmRQYXJhbWV0ZXJzKAogICBpZiAoIVZhbGlkYXRlUnRwRXh0ZW5zaW9ucyhwYXJhbXMuZXh0ZW5z
aW9ucykpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KKworICBpZiAoRXh0bWFwQWxsb3dNaXhl
ZCgpICE9IHBhcmFtcy5leHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICBTZXRFeHRtYXBBbGxvd01p
eGVkKHBhcmFtcy5leHRtYXBfYWxsb3dfbWl4ZWQpOworICAgIGZvciAoYXV0byYgaXQgOiBzZW5k
X3N0cmVhbXNfKSB7CisgICAgICBpdC5zZWNvbmQtPlNldEV4dG1hcEFsbG93TWl4ZWQocGFyYW1z
LmV4dG1hcF9hbGxvd19taXhlZCk7CisgICAgfQorICB9CisKICAgc3RkOjp2ZWN0b3I8d2VicnRj
OjpSdHBFeHRlbnNpb24+IGZpbHRlcmVkX2V4dGVuc2lvbnMgPSBGaWx0ZXJSdHBFeHRlbnNpb25z
KAogICAgICAgcGFyYW1zLmV4dGVuc2lvbnMsIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjpJc1N1cHBv
cnRlZEZvckF1ZGlvLCB0cnVlKTsKICAgaWYgKHNlbmRfcnRwX2V4dGVuc2lvbnNfICE9IGZpbHRl
cmVkX2V4dGVuc2lvbnMpIHsKQEAgLTEzNjUsMTEgKzE0MDAsMzQgQEAgd2VicnRjOjpSVENFcnJv
ciBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0UnRwU2VuZFBhcmFtZXRlcnMoCiAgIC8vIGRp
ZmZlcmVudCBvcmRlciAod2hpY2ggc2hvdWxkIGNoYW5nZSB0aGUgc2VuZCBjb2RlYykuCiAgIHdl
YnJ0Yzo6UnRwUGFyYW1ldGVycyBjdXJyZW50X3BhcmFtZXRlcnMgPSBHZXRSdHBTZW5kUGFyYW1l
dGVycyhzc3JjKTsKICAgaWYgKGN1cnJlbnRfcGFyYW1ldGVycy5jb2RlY3MgIT0gcGFyYW1ldGVy
cy5jb2RlY3MpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVXNpbmcgU2V0UGFyYW1ldGVy
cyB0byBjaGFuZ2UgdGhlIHNldCBvZiBjb2RlY3MgIgotICAgICAgICAgICAgICAgICAgICAgIDw8
ICJpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4iOworICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8
PCAiVXNpbmcgU2V0UGFyYW1ldGVycyB0byBjaGFuZ2UgdGhlIHNldCBvZiBjb2RlY3MgIgorICAg
ICAgICAgICAgICAgICAgICAgICA8PCAiaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuIjsKICAg
ICByZXR1cm4gd2VicnRjOjpSVENFcnJvcih3ZWJydGM6OlJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JU
RURfUEFSQU1FVEVSKTsKICAgfQogCisgIGlmICghcGFyYW1ldGVycy5lbmNvZGluZ3MuZW1wdHko
KSkgeworICAgIGF1dG8mIHByaW9yaXR5ID0gcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubmV0d29y
a19wcmlvcml0eTsKKyAgICBydGM6OkRpZmZTZXJ2Q29kZVBvaW50IG5ld19kc2NwID0gcnRjOjpE
U0NQX0RFRkFVTFQ7CisgICAgaWYgKHByaW9yaXR5ID09IDAuNSAqIHdlYnJ0Yzo6a0RlZmF1bHRC
aXRyYXRlUHJpb3JpdHkpIHsKKyAgICAgIG5ld19kc2NwID0gcnRjOjpEU0NQX0NTMTsKKyAgICB9
IGVsc2UgaWYgKHByaW9yaXR5ID09IDEuMCAqIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3Jp
dHkpIHsKKyAgICAgIG5ld19kc2NwID0gcnRjOjpEU0NQX0RFRkFVTFQ7CisgICAgfSBlbHNlIGlm
IChwcmlvcml0eSA9PSAyLjAgKiB3ZWJydGM6OmtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5KSB7Cisg
ICAgICBuZXdfZHNjcCA9IHJ0Yzo6RFNDUF9FRjsKKyAgICB9IGVsc2UgaWYgKHByaW9yaXR5ID09
IDQuMCAqIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkpIHsKKyAgICAgIG5ld19kc2Nw
ID0gcnRjOjpEU0NQX0VGOworICAgIH0gZWxzZSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcp
IDw8ICJSZWNlaXZlZCBpbnZhbGlkIHNlbmQgbmV0d29yayBwcmlvcml0eTogIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBwcmlvcml0eTsKKyAgICAgIHJldHVybiB3ZWJydGM6OlJUQ0Vy
cm9yKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpJTlZBTElEX1JBTkdFKTsKKyAgICB9CisKKyAgICBp
ZiAobmV3X2RzY3AgIT0gcHJlZmVycmVkX2RzY3BfKSB7CisgICAgICBwcmVmZXJyZWRfZHNjcF8g
PSBuZXdfZHNjcDsKKyAgICAgIE1lZGlhQ2hhbm5lbDo6VXBkYXRlRHNjcCgpOworICAgIH0KKyAg
fQorCiAgIC8vIFRPRE8obWlueXVlKTogVGhlIGZvbGxvd2luZyBsZWdhY3kgYWN0aW9ucyBnbyBp
bnRvCiAgIC8vIHxXZWJSdGNBdWRpb1NlbmRTdHJlYW06OlNldFJ0cFBhcmFtZXRlcnMoKXwgd2hp
Y2ggaXMgY2FsbGVkIGF0IHRoZSBlbmQsCiAgIC8vIHRob3VnaCB0aGVyZSBhcmUgdHdvIGRpZmZl
cmVuY2U6CkBAIC0xNDQwLDggKzE0OTgsOCBAQCBib29sIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVs
OjpTZXRSdHBSZWNlaXZlUGFyYW1ldGVycygKIAogICB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgY3Vy
cmVudF9wYXJhbWV0ZXJzID0gR2V0UnRwUmVjZWl2ZVBhcmFtZXRlcnMoc3NyYyk7CiAgIGlmIChj
dXJyZW50X3BhcmFtZXRlcnMgIT0gcGFyYW1ldGVycykgewotICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJDaGFuZ2luZyB0aGUgUlRQIHJlY2VpdmUgcGFyYW1ldGVycyBpcyBjdXJyZW50bHkgIgot
ICAgICAgICAgICAgICAgICAgICAgIDw8ICJ1bnN1cHBvcnRlZC4iOworICAgIFJUQ19ETE9HKExT
X0VSUk9SKSA8PCAiQ2hhbmdpbmcgdGhlIFJUUCByZWNlaXZlIHBhcmFtZXRlcnMgaXMgY3VycmVu
dGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgInVuc3VwcG9ydGVkLiI7CiAgICAgcmV0
dXJuIGZhbHNlOwogICB9CiAgIHJldHVybiB0cnVlOwpAQCAtMTYyMywxNyArMTY4MSwxNyBAQCBi
b29sIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpTZXRTZW5kQ29kZWNzKAogICAgIC8vIFRPRE8o
c29sZW5iZXJnKTogQnJlYWsgb3V0IGludG8gYSBzZXBhcmF0ZSBmdW5jdGlvbj8KICAgICBmb3Ig
KGNvbnN0IEF1ZGlvQ29kZWMmIGNuX2NvZGVjIDogY29kZWNzKSB7CiAgICAgICBpZiAoSXNDb2Rl
Yyhjbl9jb2RlYywga0NuQ29kZWNOYW1lKSAmJgotICAgICAgICAgIGNuX2NvZGVjLmNsb2NrcmF0
ZSA9PSBzZW5kX2NvZGVjX3NwZWMtPmZvcm1hdC5jbG9ja3JhdGVfaHopIHsKLSAgICAgICAgc3dp
dGNoIChjbl9jb2RlYy5jbG9ja3JhdGUpIHsKLSAgICAgICAgICBjYXNlIDgwMDA6Ci0gICAgICAg
ICAgY2FzZSAxNjAwMDoKLSAgICAgICAgICBjYXNlIDMyMDAwOgotICAgICAgICAgICAgc2VuZF9j
b2RlY19zcGVjLT5jbmdfcGF5bG9hZF90eXBlID0gY25fY29kZWMuaWQ7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUlRDX0xPRyhMU19XQVJOSU5H
KQotICAgICAgICAgICAgICAgIDw8ICJDTiBmcmVxdWVuY3kgIiA8PCBjbl9jb2RlYy5jbG9ja3Jh
dGUgPDwgIiBub3Qgc3VwcG9ydGVkLiI7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBj
bl9jb2RlYy5jbG9ja3JhdGUgPT0gc2VuZF9jb2RlY19zcGVjLT5mb3JtYXQuY2xvY2tyYXRlX2h6
ICYmCisgICAgICAgICAgY25fY29kZWMuY2hhbm5lbHMgPT0gdm9pY2VfY29kZWNfaW5mby0+bnVt
X2NoYW5uZWxzKSB7CisgICAgICAgIGlmIChjbl9jb2RlYy5jaGFubmVscyAhPSAxKSB7CisgICAg
ICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQorICAgICAgICAgICAgICA8PCAiQ04gI2NoYW5uZWxz
ICIgPDwgY25fY29kZWMuY2hhbm5lbHMgPDwgIiBub3Qgc3VwcG9ydGVkLiI7CisgICAgICAgIH0g
ZWxzZSBpZiAoY25fY29kZWMuY2xvY2tyYXRlICE9IDgwMDAgJiYgY25fY29kZWMuY2xvY2tyYXRl
ICE9IDE2MDAwICYmCisgICAgICAgICAgICAgICAgICAgY25fY29kZWMuY2xvY2tyYXRlICE9IDMy
MDAwKSB7CisgICAgICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQorICAgICAgICAgICAgICA8PCAi
Q04gZnJlcXVlbmN5ICIgPDwgY25fY29kZWMuY2xvY2tyYXRlIDw8ICIgbm90IHN1cHBvcnRlZC4i
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHNlbmRfY29kZWNfc3BlYy0+Y25nX3BheWxv
YWRfdHlwZSA9IGNuX2NvZGVjLmlkOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICAg
fQpAQCAtMTc2MSw5ICsxODE5LDExIEBAIGJvb2wgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OkFk
ZFNlbmRTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgewogICBhYnNsOjpvcHRpb25hbDxz
dGQ6OnN0cmluZz4gYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZyA9CiAgICAgICBHZXRBdWRp
b05ldHdvcmtBZGFwdG9yQ29uZmlnKG9wdGlvbnNfKTsKICAgV2ViUnRjQXVkaW9TZW5kU3RyZWFt
KiBzdHJlYW0gPSBuZXcgV2ViUnRjQXVkaW9TZW5kU3RyZWFtKAotICAgICAgc3NyYywgbWlkXywg
c3AuY25hbWUsIHNwLmlkLCBzZW5kX2NvZGVjX3NwZWNfLCBzZW5kX3J0cF9leHRlbnNpb25zXywK
LSAgICAgIG1heF9zZW5kX2JpdHJhdGVfYnBzXywgYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZp
ZywgY2FsbF8sIHRoaXMsCi0gICAgICBlbmdpbmUoKS0+ZW5jb2Rlcl9mYWN0b3J5XywgY29kZWNf
cGFpcl9pZF8sIG51bGxwdHIpOworICAgICAgc3NyYywgbWlkXywgc3AuY25hbWUsIHNwLmlkLCBz
ZW5kX2NvZGVjX3NwZWNfLCBFeHRtYXBBbGxvd01peGVkKCksCisgICAgICBzZW5kX3J0cF9leHRl
bnNpb25zXywgbWF4X3NlbmRfYml0cmF0ZV9icHNfLAorICAgICAgYXVkaW9fY29uZmlnXy5ydGNw
X3JlcG9ydF9pbnRlcnZhbF9tcywgYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZywKKyAgICAg
IGNhbGxfLCB0aGlzLCBtZWRpYV90cmFuc3BvcnQoKSwgZW5naW5lKCktPmVuY29kZXJfZmFjdG9y
eV8sCisgICAgICBjb2RlY19wYWlyX2lkXywgbnVsbHB0ciwgY3J5cHRvX29wdGlvbnNfKTsKICAg
c2VuZF9zdHJlYW1zXy5pbnNlcnQoc3RkOjptYWtlX3BhaXIoc3NyYywgc3RyZWFtKSk7CiAKICAg
Ly8gQXQgdGhpcyBwb2ludCB0aGUgc3RyZWFtJ3MgbG9jYWwgU1NSQyBoYXMgYmVlbiB1cGRhdGVk
LiBJZiBpdCBpcyB0aGUgZmlyc3QKQEAgLTE4MjYsNyArMTg4Niw3IEBAIGJvb2wgV2ViUnRjVm9p
Y2VNZWRpYUNoYW5uZWw6OkFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgewog
CiAgIGNvbnN0IHVpbnQzMl90IHNzcmMgPSBzcC5maXJzdF9zc3JjKCk7CiAgIGlmIChzc3JjID09
IDApIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJBZGRSZWN2U3RyZWFtIHdpdGggc3Ny
Yz09MCBpcyBub3Qgc3VwcG9ydGVkLiI7CisgICAgUlRDX0RMT0coTFNfV0FSTklORykgPDwgIkFk
ZFJlY3ZTdHJlYW0gd2l0aCBzc3JjPT0wIGlzIG5vdCBzdXBwb3J0ZWQuIjsKICAgICByZXR1cm4g
ZmFsc2U7CiAgIH0KIApAQCAtMTg0NCwxMyArMTkwNCwxNSBAQCBib29sIFdlYlJ0Y1ZvaWNlTWVk
aWFDaGFubmVsOjpBZGRSZWN2U3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIHsKIAogICAv
LyBDcmVhdGUgYSBuZXcgY2hhbm5lbCBmb3IgcmVjZWl2aW5nIGF1ZGlvIGRhdGEuCiAgIHJlY3Zf
c3RyZWFtc18uaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKAotICAgICAgc3NyYywgbmV3IFdlYlJ0Y0F1
ZGlvUmVjZWl2ZVN0cmVhbSgKLSAgICAgICAgICAgICAgICBzc3JjLCByZWNlaXZlcl9yZXBvcnRz
X3NzcmNfLCByZWN2X3RyYW5zcG9ydF9jY19lbmFibGVkXywKLSAgICAgICAgICAgICAgICByZWN2
X25hY2tfZW5hYmxlZF8sIHNwLnN0cmVhbV9pZHMoKSwgcmVjdl9ydHBfZXh0ZW5zaW9uc18sCi0g
ICAgICAgICAgICAgICAgY2FsbF8sIHRoaXMsIGVuZ2luZSgpLT5kZWNvZGVyX2ZhY3RvcnlfLCBk
ZWNvZGVyX21hcF8sCi0gICAgICAgICAgICAgICAgY29kZWNfcGFpcl9pZF8sIGVuZ2luZSgpLT5h
dWRpb19qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzXywKLSAgICAgICAgICAgICAgICBlbmdpbmUo
KS0+YXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGVfLAotICAgICAgICAgICAgICAg
IHVuc2lnbmFsZWRfZnJhbWVfZGVjcnlwdG9yXykpKTsKKyAgICAgIHNzcmMsCisgICAgICBuZXcg
V2ViUnRjQXVkaW9SZWNlaXZlU3RyZWFtKAorICAgICAgICAgIHNzcmMsIHJlY2VpdmVyX3JlcG9y
dHNfc3NyY18sIHJlY3ZfdHJhbnNwb3J0X2NjX2VuYWJsZWRfLAorICAgICAgICAgIHJlY3ZfbmFj
a19lbmFibGVkXywgc3Auc3RyZWFtX2lkcygpLCByZWN2X3J0cF9leHRlbnNpb25zXywgY2FsbF8s
CisgICAgICAgICAgdGhpcywgbWVkaWFfdHJhbnNwb3J0KCksIGVuZ2luZSgpLT5kZWNvZGVyX2Zh
Y3RvcnlfLCBkZWNvZGVyX21hcF8sCisgICAgICAgICAgY29kZWNfcGFpcl9pZF8sIGVuZ2luZSgp
LT5hdWRpb19qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzXywKKyAgICAgICAgICBlbmdpbmUoKS0+
YXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGVfLAorICAgICAgICAgIGVuZ2luZSgp
LT5hdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tc18sCisgICAgICAgICAgdW5zaWduYWxl
ZF9mcmFtZV9kZWNyeXB0b3JfLCBjcnlwdG9fb3B0aW9uc18pKSk7CiAgIHJlY3Zfc3RyZWFtc19b
c3NyY10tPlNldFBsYXlvdXQocGxheW91dF8pOwogCiAgIHJldHVybiB0cnVlOwpAQCAtMTk3OSwx
NCArMjA0MSwxNCBAQCBib29sIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpJbnNlcnREdG1mKHVp
bnQzMl90IHNzcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZl
bnQsIGR1cmF0aW9uKTsKIH0KIAotdm9pZCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6T25QYWNr
ZXRSZWNlaXZlZCgKLSAgICBydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgY29u
c3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewordm9pZCBXZWJSdGNWb2ljZU1lZGlh
Q2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qg
cGFja2V0X3RpbWVfdXMpIHsKICAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNh
bGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAKICAgd2VicnRjOjpQYWNrZXRSZWNlaXZlcjo6RGVsaXZl
cnlTdGF0dXMgZGVsaXZlcnlfcmVzdWx0ID0KICAgICAgIGNhbGxfLT5SZWNlaXZlcigpLT5EZWxp
dmVyUGFja2V0KHdlYnJ0Yzo6TWVkaWFUeXBlOjpBVURJTywgKnBhY2tldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lLnRpbWVzdGFtcCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdGltZV91cyk7CisKICAg
aWYgKGRlbGl2ZXJ5X3Jlc3VsdCAhPSB3ZWJydGM6OlBhY2tldFJlY2VpdmVyOjpERUxJVkVSWV9V
TktOT1dOX1NTUkMpIHsKICAgICByZXR1cm47CiAgIH0KQEAgLTIwMTcsOCArMjA3OSw4IEBAIHZv
aWQgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6Ok9uUGFja2V0UmVjZWl2ZWQoCiAgIC8vIFJlbW92
ZSBvbGRlc3QgdW5zaWduYWxlZCBzdHJlYW0sIGlmIHdlIGhhdmUgdG9vIG1hbnkuCiAgIGlmICh1
bnNpZ25hbGVkX3JlY3Zfc3NyY3NfLnNpemUoKSA+IGtNYXhVbnNpZ25hbGVkUmVjdlN0cmVhbXMp
IHsKICAgICB1aW50MzJfdCByZW1vdmVfc3NyYyA9IHVuc2lnbmFsZWRfcmVjdl9zc3Jjc18uZnJv
bnQoKTsKLSAgICBSVENfTE9HKExTX0lORk8pIDw8ICJSZW1vdmluZyB1bnNpZ25hbGVkIHJlY2Vp
dmUgc3RyZWFtIHdpdGggU1NSQz0iCi0gICAgICAgICAgICAgICAgICAgICA8PCByZW1vdmVfc3Ny
YzsKKyAgICBSVENfRExPRyhMU19JTkZPKSA8PCAiUmVtb3ZpbmcgdW5zaWduYWxlZCByZWNlaXZl
IHN0cmVhbSB3aXRoIFNTUkM9IgorICAgICAgICAgICAgICAgICAgICAgIDw8IHJlbW92ZV9zc3Jj
OwogICAgIFJlbW92ZVJlY3ZTdHJlYW0ocmVtb3ZlX3NzcmMpOwogICB9CiAgIFJUQ19EQ0hFQ0tf
R0Uoa01heFVuc2lnbmFsZWRSZWN2U3RyZWFtcywgdW5zaWduYWxlZF9yZWN2X3NzcmNzXy5zaXpl
KCkpOwpAQCAtMjAzOCwxOSArMjEwMCwxOCBAQCB2b2lkIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVs
OjpPblBhY2tldFJlY2VpdmVkKAogICAgIFNldFJhd0F1ZGlvU2luayhzc3JjLCBzdGQ6Om1vdmUo
cHJveHlfc2luaykpOwogICB9CiAKLSAgZGVsaXZlcnlfcmVzdWx0ID0gY2FsbF8tPlJlY2VpdmVy
KCktPkRlbGl2ZXJQYWNrZXQoCi0gICAgICB3ZWJydGM6Ok1lZGlhVHlwZTo6QVVESU8sICpwYWNr
ZXQsIHBhY2tldF90aW1lLnRpbWVzdGFtcCk7CisgIGRlbGl2ZXJ5X3Jlc3VsdCA9IGNhbGxfLT5S
ZWNlaXZlcigpLT5EZWxpdmVyUGFja2V0KHdlYnJ0Yzo6TWVkaWFUeXBlOjpBVURJTywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBhY2tldCwg
cGFja2V0X3RpbWVfdXMpOwogICBSVENfRENIRUNLX05FKHdlYnJ0Yzo6UGFja2V0UmVjZWl2ZXI6
OkRFTElWRVJZX1VOS05PV05fU1NSQywgZGVsaXZlcnlfcmVzdWx0KTsKIH0KIAotdm9pZCBXZWJS
dGNWb2ljZU1lZGlhQ2hhbm5lbDo6T25SdGNwUmVjZWl2ZWQoCi0gICAgcnRjOjpDb3B5T25Xcml0
ZUJ1ZmZlciogcGFja2V0LAotICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUp
IHsKK3ZvaWQgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6Ok9uUnRjcFJlY2VpdmVkKHJ0Yzo6Q29w
eU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgUlRDX0RDSEVDSyh3b3Jr
ZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAKICAgLy8gRm9yd2Fy
ZCBwYWNrZXQgdG8gQ2FsbCBhcyB3ZWxsLgogICBjYWxsXy0+UmVjZWl2ZXIoKS0+RGVsaXZlclBh
Y2tldCh3ZWJydGM6Ok1lZGlhVHlwZTo6QVVESU8sICpwYWNrZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lLnRpbWVzdGFtcCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lX3VzKTsKIH0KIAogdm9pZCBXZWJSdGNW
b2ljZU1lZGlhQ2hhbm5lbDo6T25OZXR3b3JrUm91dGVDaGFuZ2VkKApAQCAtMjE4Miw2ICsyMjQz
LDcgQEAgYm9vbCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6R2V0U3RhdHMoVm9pY2VNZWRpYUlu
Zm8qIGluZm8pIHsKICAgICByaW5mby5zZWNvbmRhcnlfZGlzY2FyZGVkX3JhdGUgPSBzdGF0cy5z
ZWNvbmRhcnlfZGlzY2FyZGVkX3JhdGU7CiAgICAgcmluZm8uYWNjZWxlcmF0ZV9yYXRlID0gc3Rh
dHMuYWNjZWxlcmF0ZV9yYXRlOwogICAgIHJpbmZvLnByZWVtcHRpdmVfZXhwYW5kX3JhdGUgPSBz
dGF0cy5wcmVlbXB0aXZlX2V4cGFuZF9yYXRlOworICAgIHJpbmZvLmRlbGF5ZWRfcGFja2V0X291
dGFnZV9zYW1wbGVzID0gc3RhdHMuZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXM7CiAgICAg
cmluZm8uZGVjb2RpbmdfY2FsbHNfdG9fc2lsZW5jZV9nZW5lcmF0b3IgPQogICAgICAgICBzdGF0
cy5kZWNvZGluZ19jYWxsc190b19zaWxlbmNlX2dlbmVyYXRvcjsKICAgICByaW5mby5kZWNvZGlu
Z19jYWxsc190b19uZXRlcSA9IHN0YXRzLmRlY29kaW5nX2NhbGxzX3RvX25ldGVxOwpAQCAtMjE5
MSw2ICsyMjUzLDggQEAgYm9vbCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6R2V0U3RhdHMoVm9p
Y2VNZWRpYUluZm8qIGluZm8pIHsKICAgICByaW5mby5kZWNvZGluZ19wbGNfY25nID0gc3RhdHMu
ZGVjb2RpbmdfcGxjX2NuZzsKICAgICByaW5mby5kZWNvZGluZ19tdXRlZF9vdXRwdXQgPSBzdGF0
cy5kZWNvZGluZ19tdXRlZF9vdXRwdXQ7CiAgICAgcmluZm8uY2FwdHVyZV9zdGFydF9udHBfdGlt
ZV9tcyA9IHN0YXRzLmNhcHR1cmVfc3RhcnRfbnRwX3RpbWVfbXM7CisgICAgcmluZm8uaml0dGVy
X2J1ZmZlcl9mbHVzaGVzID0gc3RhdHMuaml0dGVyX2J1ZmZlcl9mbHVzaGVzOworCiAgICAgaW5m
by0+cmVjZWl2ZXJzLnB1c2hfYmFjayhyaW5mbyk7CiAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3Zv
aWNlZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9lbmdpbmUvd2VicnRjdm9pY2VlbmdpbmUuaAppbmRleCBiZWRlZGUxMjQ4MGRjNzdmZTc0
YzMwYmI1NDc4N2MxOTQ4N2Q4YWI0Li4yMTNmMWIzOTNmOWUyY2EyOGUwNTlmMDVjZjExYTVlM2Y2
YzI4ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9pY2VlbmdpbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9pY2Vlbmdp
bmUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDsKIAog
Ly8gV2ViUnRjVm9pY2VFbmdpbmUgaXMgYSBjbGFzcyB0byBiZSB1c2VkIHdpdGggQ29tcG9zaXRl
TWVkaWFFbmdpbmUuCiAvLyBJdCB1c2VzIHRoZSBXZWJSdGMgVm9pY2VFbmdpbmUgbGlicmFyeSBm
b3IgYXVkaW8gaGFuZGxpbmcuCi1jbGFzcyBXZWJSdGNWb2ljZUVuZ2luZSBmaW5hbCB7CitjbGFz
cyBXZWJSdGNWb2ljZUVuZ2luZSBmaW5hbCA6IHB1YmxpYyBWb2ljZUVuZ2luZUludGVyZmFjZSB7
CiAgIGZyaWVuZCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDsKIAogIHB1YmxpYzoKQEAg
LTUwLDE5ICs1MCwyMSBAQCBjbGFzcyBXZWJSdGNWb2ljZUVuZ2luZSBmaW5hbCB7CiAgICAgICBj
b25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiYgZGVj
b2Rlcl9mYWN0b3J5LAogICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9NaXhl
cj4gYXVkaW9fbWl4ZXIsCiAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1By
b2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcpOwotICB+V2ViUnRjVm9pY2VFbmdpbmUoKTsKKyAg
fldlYlJ0Y1ZvaWNlRW5naW5lKCkgb3ZlcnJpZGU7CiAKICAgLy8gRG9lcyBpbml0aWFsaXphdGlv
biB0aGF0IG5lZWRzIHRvIG9jY3VyIG9uIHRoZSB3b3JrZXIgdGhyZWFkLgotICB2b2lkIEluaXQo
KTsKKyAgdm9pZCBJbml0KCkgb3ZlcnJpZGU7CiAKLSAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9TdGF0ZT4gR2V0QXVkaW9TdGF0ZSgpIGNvbnN0OwotICBWb2ljZU1lZGlhQ2hhbm5l
bCogQ3JlYXRlQ2hhbm5lbCh3ZWJydGM6OkNhbGwqIGNhbGwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucyk7CisgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+IEdldEF1ZGlvU3RhdGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgVm9pY2VNZWRpYUNoYW5uZWwqIENyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAg
ICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKKyAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcs
CisgICAgICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMsCisgICAgICBjb25zdCB3ZWJydGM6
OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSBvdmVycmlkZTsKIAotICBjb25zdCBzdGQ6
OnZlY3RvcjxBdWRpb0NvZGVjPiYgc2VuZF9jb2RlY3MoKSBjb25zdDsKLSAgY29uc3Qgc3RkOjp2
ZWN0b3I8QXVkaW9Db2RlYz4mIHJlY3ZfY29kZWNzKCkgY29uc3Q7Ci0gIFJ0cENhcGFiaWxpdGll
cyBHZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2Rl
Yz4mIHNlbmRfY29kZWNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPEF1
ZGlvQ29kZWM+JiByZWN2X2NvZGVjcygpIGNvbnN0IG92ZXJyaWRlOworICBSdHBDYXBhYmlsaXRp
ZXMgR2V0Q2FwYWJpbGl0aWVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgLy8gRm9yIHRyYWNraW5n
IFdlYlJ0YyBjaGFubmVscy4gTmVlZGVkIGJlY2F1c2Ugd2UgaGF2ZSB0byBwYXVzZSB0aGVtCiAg
IC8vIGFsbCB3aGVuIHN3aXRjaGluZyBkZXZpY2VzLgpAQCAtNzQsMTAgKzc2LDEwIEBAIGNsYXNz
IFdlYlJ0Y1ZvaWNlRW5naW5lIGZpbmFsIHsKICAgLy8gc3BlY2lmaWVkLiBXaGVuIHRoZSBtYXhp
bXVtIGZpbGUgc2l6ZSBpcyByZWFjaGVkLCBsb2dnaW5nIGlzIHN0b3BwZWQgYW5kCiAgIC8vIHRo
ZSBmaWxlIGlzIGNsb3NlZC4gSWYgbWF4X3NpemVfYnl0ZXMgaXMgc2V0IHRvIDw9IDAsIG5vIGxp
bWl0IHdpbGwgYmUKICAgLy8gdXNlZC4KLSAgYm9vbCBTdGFydEFlY0R1bXAocnRjOjpQbGF0Zm9y
bUZpbGUgZmlsZSwgaW50NjRfdCBtYXhfc2l6ZV9ieXRlcyk7CisgIGJvb2wgU3RhcnRBZWNEdW1w
KHJ0Yzo6UGxhdGZvcm1GaWxlIGZpbGUsIGludDY0X3QgbWF4X3NpemVfYnl0ZXMpIG92ZXJyaWRl
OwogCiAgIC8vIFN0b3BzIEFFQyBkdW1wLgotICB2b2lkIFN0b3BBZWNEdW1wKCk7CisgIHZvaWQg
U3RvcEFlY0R1bXAoKSBvdmVycmlkZTsKIAogICBjb25zdCB3ZWJydGM6OkF1ZGlvUHJvY2Vzc2lu
Zzo6Q29uZmlnIEdldEFwbUNvbmZpZ0ZvclRlc3QoKSBjb25zdCB7CiAgICAgcmV0dXJuIGFwbSgp
LT5HZXRDb25maWcoKTsKQEAgLTEzMCw2ICsxMzIsNyBAQCBjbGFzcyBXZWJSdGNWb2ljZUVuZ2lu
ZSBmaW5hbCB7CiAgIC8vIEppdHRlciBidWZmZXIgc2V0dGluZ3MgZm9yIG5ldyBzdHJlYW1zLgog
ICBzaXplX3QgYXVkaW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0c18gPSA1MDsKICAgYm9vbCBh
dWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZV8gPSBmYWxzZTsKKyAgaW50IGF1ZGlv
X2ppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zXyA9IDA7CiAKICAgUlRDX0RJU0FMTE9XX0lNUExJ
Q0lUX0NPTlNUUlVDVE9SUyhXZWJSdGNWb2ljZUVuZ2luZSk7CiB9OwpAQCAtMTQyLDYgKzE0NSw3
IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsIGZpbmFsIDogcHVibGljIFZvaWNlTWVk
aWFDaGFubmVsLAogICBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbChXZWJSdGNWb2ljZUVuZ2luZSog
ZW5naW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29u
ZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlv
bnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9u
cyYgY3J5cHRvX29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q2Fs
bCogY2FsbCk7CiAgIH5XZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCgpIG92ZXJyaWRlOwogCkBAIC0x
OTIsOSArMTk2LDkgQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwgZmluYWwgOiBwdWJs
aWMgVm9pY2VNZWRpYUNoYW5uZWwsCiAgIGJvb2wgSW5zZXJ0RHRtZih1aW50MzJfdCBzc3JjLCBp
bnQgZXZlbnQsIGludCBkdXJhdGlvbikgb3ZlcnJpZGU7CiAKICAgdm9pZCBPblBhY2tldFJlY2Vp
dmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIG92ZXJyaWRlOworICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgb3ZlcnJpZGU7CiAgIHZv
aWQgT25SdGNwUmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIG92ZXJy
aWRlOworICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIG92ZXJy
aWRlOwogICB2b2lkIE9uTmV0d29ya1JvdXRlQ2hhbmdlZChjb25zdCBzdGQ6OnN0cmluZyYgdHJh
bnNwb3J0X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6TmV0
d29ya1JvdXRlJiBuZXR3b3JrX3JvdXRlKSBvdmVycmlkZTsKICAgdm9pZCBPblJlYWR5VG9TZW5k
KGJvb2wgcmVhZHkpIG92ZXJyaWRlOwpAQCAtMjE4LDYgKzIyMiwxMCBAQCBjbGFzcyBXZWJSdGNW
b2ljZU1lZGlhQ2hhbm5lbCBmaW5hbCA6IHB1YmxpYyBWb2ljZU1lZGlhQ2hhbm5lbCwKICAgICBp
ZiAoRHNjcEVuYWJsZWQoKSkgewogICAgICAgcnRjX29wdGlvbnMuZHNjcCA9IFByZWZlcnJlZERz
Y3AoKTsKICAgICB9CisgICAgcnRjX29wdGlvbnMuaW5mb19zaWduYWxlZF9hZnRlcl9zZW50Lmlu
Y2x1ZGVkX2luX2ZlZWRiYWNrID0KKyAgICAgICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9mZWVkYmFj
azsKKyAgICBydGNfb3B0aW9ucy5pbmZvX3NpZ25hbGVkX2FmdGVyX3NlbnQuaW5jbHVkZWRfaW5f
YWxsb2NhdGlvbiA9CisgICAgICAgIG9wdGlvbnMuaW5jbHVkZWRfaW5fYWxsb2NhdGlvbjsKICAg
ICByZXR1cm4gVm9pY2VNZWRpYUNoYW5uZWw6OlNlbmRQYWNrZXQoJnBhY2tldCwgcnRjX29wdGlv
bnMpOwogICB9CiAKQEAgLTIyNyw2ICsyMzUsNyBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hh
bm5lbCBmaW5hbCA6IHB1YmxpYyBWb2ljZU1lZGlhQ2hhbm5lbCwKICAgICBpZiAoRHNjcEVuYWJs
ZWQoKSkgewogICAgICAgcnRjX29wdGlvbnMuZHNjcCA9IFByZWZlcnJlZERzY3AoKTsKICAgICB9
CisKICAgICByZXR1cm4gVm9pY2VNZWRpYUNoYW5uZWw6OlNlbmRSdGNwKCZwYWNrZXQsIHJ0Y19v
cHRpb25zKTsKICAgfQogCkBAIC0yNTgsNiArMjY3LDcgQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRp
YUNoYW5uZWwgZmluYWwgOiBwdWJsaWMgVm9pY2VNZWRpYUNoYW5uZWwsCiAgIHN0ZDo6dmVjdG9y
PEF1ZGlvQ29kZWM+IHJlY3ZfY29kZWNzXzsKIAogICBpbnQgbWF4X3NlbmRfYml0cmF0ZV9icHNf
ID0gMDsKKyAgcnRjOjpEaWZmU2VydkNvZGVQb2ludCBwcmVmZXJyZWRfZHNjcF8gPSBydGM6OkRT
Q1BfREVGQVVMVDsKICAgQXVkaW9PcHRpb25zIG9wdGlvbnNfOwogICBhYnNsOjpvcHRpb25hbDxp
bnQ+IGR0bWZfcGF5bG9hZF90eXBlXzsKICAgaW50IGR0bWZfcGF5bG9hZF9mcmVxXyA9IC0xOwpA
QCAtMjY4LDYgKzI3OCw4IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsIGZpbmFsIDog
cHVibGljIFZvaWNlTWVkaWFDaGFubmVsLAogICBib29sIHNlbmRfID0gZmFsc2U7CiAgIHdlYnJ0
Yzo6Q2FsbCogY29uc3QgY2FsbF8gPSBudWxscHRyOwogCisgIGNvbnN0IE1lZGlhQ29uZmlnOjpB
dWRpbyBhdWRpb19jb25maWdfOworCiAgIC8vIFF1ZXVlIG9mIHVuc2lnbmFsZWQgU1NSQ3M7IG9s
ZGVzdCBhdCB0aGUgYmVnaW5uaW5nLgogICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gdW5zaWduYWxl
ZF9yZWN2X3NzcmNzXzsKIApAQCAtMzAyLDYgKzMxNCw5IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVk
aWFDaGFubmVsIGZpbmFsIDogcHVibGljIFZvaWNlTWVkaWFDaGFubmVsLAogICBjb25zdCB3ZWJy
dGM6OkF1ZGlvQ29kZWNQYWlySWQgY29kZWNfcGFpcl9pZF8gPQogICAgICAgd2VicnRjOjpBdWRp
b0NvZGVjUGFpcklkOjpDcmVhdGUoKTsKIAorICAvLyBQZXIgcGVlciBjb25uZWN0aW9uIGNyeXB0
byBvcHRpb25zIHRoYXQgbGFzdCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwZWVyCisgIC8vIGNv
bm5lY3Rpb24uCisgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uc187
CiAgIC8vIFVuc2lnbmFsZWQgc3RyZWFtcyBoYXZlIGFuIG9wdGlvbiB0byBoYXZlIGEgZnJhbWUg
ZGVjcnlwdG9yIHNldCBvbiB0aGVtLgogICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFt
ZURlY3J5cHRvckludGVyZmFjZT4KICAgICAgIHVuc2lnbmFsZWRfZnJhbWVfZGVjcnlwdG9yXzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2luZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2lu
ZV91bml0dGVzdC5jYwppbmRleCBiYjgxNmVlZDExODI3ZjJjMGNkYzYyOTkxNjQzZWJkYjA5ODM1
ZjgzLi45ZmQ1ZGZiMGFkODVjNGY3ODM5ZGE4YTMzNGNhM2UxMzI5MzAyMDc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
d2VicnRjdm9pY2VlbmdpbmVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5lX3VuaXR0
ZXN0LmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0
aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkv
YXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAi
YXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1
ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCkBAIC0yMTAsOCArMjExLDkgQEAgY2xhc3MgV2ViUnRj
Vm9pY2VFbmdpbmVUZXN0RmFrZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIAogICBib29sIFNl
dHVwQ2hhbm5lbCgpIHsKICAgICBFWFBFQ1RfQ0FMTCgqYXBtXywgU2V0RXh0cmFPcHRpb25zKHRl
c3Rpbmc6Ol8pKTsKLSAgICBjaGFubmVsXyA9IGVuZ2luZV8tPkNyZWF0ZUNoYW5uZWwoJmNhbGxf
LCBjcmlja2V0OjpNZWRpYUNvbmZpZygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSk7CisgICAgY2hhbm5lbF8gPSBlbmdpbmVf
LT5DcmVhdGVNZWRpYUNoYW5uZWwoJmNhbGxfLCBjcmlja2V0OjpNZWRpYUNvbmZpZygpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkF1ZGlvT3B0
aW9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0
Yzo6Q3J5cHRvT3B0aW9ucygpKTsKICAgICByZXR1cm4gKGNoYW5uZWxfICE9IG51bGxwdHIpOwog
ICB9CiAKQEAgLTI1Myw3ICsyNTUsNyBAQCBjbGFzcyBXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtl
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogCiAgIHZvaWQgRGVsaXZlclBhY2tldChjb25zdCB2
b2lkKiBkYXRhLCBpbnQgbGVuKSB7CiAgICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbik7Ci0gICAgY2hhbm5l
bF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgIGNo
YW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0x
KTsKICAgfQogCiAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZSB7IGRlbGV0ZSBjaGFubmVsXzsg
fQpAQCAtMzQ5LDYgKzM1MSwzMCBAQCBjbGFzcyBXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlIDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIEVYUEVDVF9FUSgxMjMsIHRlbGVwaG9uZV9ldmVu
dC5kdXJhdGlvbl9tcyk7CiAgIH0KIAorICB2b2lkIFRlc3RFeHRtYXBBbGxvd01peGVkQ2FsbGVy
KGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSB7CisgICAgLy8gRm9yIGEgY2FsbGVyLCB0aGUgYW5z
d2VyIHdpbGwgYmUgYXBwbGllZCBpbiBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uCisgICAgLy8gd2hl
cmUgU2V0U2VuZFBhcmFtZXRlcnMoKSBpcyBjYWxsZWQuCisgICAgRVhQRUNUX1RSVUUoU2V0dXBD
aGFubmVsKCkpOworICAgIEVYUEVDVF9UUlVFKAorICAgICAgICBjaGFubmVsXy0+QWRkU2VuZFN0
cmVhbShjcmlja2V0OjpTdHJlYW1QYXJhbXM6OkNyZWF0ZUxlZ2FjeShrU3NyY1gpKSk7CisgICAg
c2VuZF9wYXJhbWV0ZXJzXy5leHRtYXBfYWxsb3dfbWl4ZWQgPSBleHRtYXBfYWxsb3dfbWl4ZWQ7
CisgICAgU2V0U2VuZFBhcmFtZXRlcnMoc2VuZF9wYXJhbWV0ZXJzXyk7CisgICAgY29uc3Qgd2Vi
cnRjOjpBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyYgY29uZmlnID0gR2V0U2VuZFN0cmVhbUNvbmZp
ZyhrU3NyY1gpOworICAgIEVYUEVDVF9FUShleHRtYXBfYWxsb3dfbWl4ZWQsIGNvbmZpZy5ydHAu
ZXh0bWFwX2FsbG93X21peGVkKTsKKyAgfQorCisgIHZvaWQgVGVzdEV4dG1hcEFsbG93TWl4ZWRD
YWxsZWUoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICAvLyBGb3IgYSBjYWxsZWUsIHRo
ZSBhbnN3ZXIgd2lsbCBiZSBhcHBsaWVkIGluIHNldCBsb2NhbCBkZXNjcmlwdGlvbgorICAgIC8v
IHdoZXJlIFNldEV4dG1hcEFsbG93TWl4ZWQoKSBhbmQgQWRkU2VuZFN0cmVhbSgpIGFyZSBjYWxs
ZWQuCisgICAgRVhQRUNUX1RSVUUoU2V0dXBDaGFubmVsKCkpOworICAgIGNoYW5uZWxfLT5TZXRF
eHRtYXBBbGxvd01peGVkKGV4dG1hcF9hbGxvd19taXhlZCk7CisgICAgRVhQRUNUX1RSVUUoCisg
ICAgICAgIGNoYW5uZWxfLT5BZGRTZW5kU3RyZWFtKGNyaWNrZXQ6OlN0cmVhbVBhcmFtczo6Q3Jl
YXRlTGVnYWN5KGtTc3JjWCkpKTsKKworICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFt
OjpDb25maWcmIGNvbmZpZyA9IEdldFNlbmRTdHJlYW1Db25maWcoa1NzcmNYKTsKKyAgICBFWFBF
Q1RfRVEoZXh0bWFwX2FsbG93X21peGVkLCBjb25maWcucnRwLmV4dG1hcF9hbGxvd19taXhlZCk7
CisgIH0KKwogICAvLyBUZXN0IHRoYXQgc2VuZCBiYW5kd2lkdGggaXMgc2V0IGNvcnJlY3RseS4K
ICAgLy8gfGNvZGVjfCBpcyB0aGUgY29kZWMgdW5kZXIgdGVzdC4KICAgLy8gfG1heF9iaXRyYXRl
fCBpcyBhIHBhcmFtZXRlciB0byBzZXQgdG8gU2V0TWF4U2VuZEJhbmR3aWR0aCgpLgpAQCAtNzM1
LDcgKzc2MSw3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiB9OwogCiAvLyBUZXN0cyB0aGF0IHdlIGNhbiBjcmVhdGUgYW5kIGRlc3Ry
b3kgYSBjaGFubmVsLgotVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIENyZWF0ZUNo
YW5uZWwpIHsKK1RFU1RfRihXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBDcmVhdGVNZWRpYUNo
YW5uZWwpIHsKICAgRVhQRUNUX1RSVUUoU2V0dXBDaGFubmVsKCkpOwogfQogCkBAIC0xMTM3LDYg
KzExNjMsMjggQEAgVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFJ0cFBhcmFtZXRl
cnNBcmVQZXJTdHJlYW0pIHsKICAgRVhQRUNUX0VRKDMyMDAwLCBHZXRDb2RlY0JpdHJhdGUoa1Nz
cmNzNFsyXSkpOwogfQogCisvLyBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMubmV0d29ya19wcmlv
cml0eSBtdXN0IGJlIG9uZSBvZiBhIGZldyB2YWx1ZXMKKy8vIGRlcml2ZWQgZnJvbSB0aGUgZGVm
YXVsdCBwcmlvcml0eSwgY29ycmVzcG9uZGluZyB0byB2ZXJ5LWxvdywgbG93LCBtZWRpdW0sCisv
LyBvciBoaWdoLgorVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNldFJ0cFNlbmRQ
YXJhbWV0ZXJzSW52YWxpZE5ldHdvcmtQcmlvcml0eSkgeworICBFWFBFQ1RfVFJVRShTZXR1cFNl
bmRTdHJlYW0oKSk7CisgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gY2hhbm5l
bF8tPkdldFJ0cFNlbmRQYXJhbWV0ZXJzKGtTc3JjWCk7CisgIEVYUEVDVF9FUSgxVUwsIHBhcmFt
ZXRlcnMuZW5jb2RpbmdzLnNpemUoKSk7CisgIEVYUEVDVF9FUSh3ZWJydGM6OmtEZWZhdWx0Qml0
cmF0ZVByaW9yaXR5LAorICAgICAgICAgICAgcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubmV0d29y
a19wcmlvcml0eSk7CisKKyAgZG91YmxlIGdvb2RfdmFsdWVzW10gPSB7MC41LCAxLjAsIDIuMCwg
NC4wfTsKKyAgZG91YmxlIGJhZF92YWx1ZXNbXSA9IHstMS4wLCAwLjAsIDAuNDksIDAuNTEsIDEu
MSwgMy45OSwgNC4xLCA1LjB9OworICBmb3IgKGF1dG8gaXQgOiBnb29kX3ZhbHVlcykgeworICAg
IHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdvcmtfcHJpb3JpdHkgPSBpdDsKKyAgICBFWFBF
Q1RfVFJVRShjaGFubmVsXy0+U2V0UnRwU2VuZFBhcmFtZXRlcnMoa1NzcmNYLCBwYXJhbWV0ZXJz
KS5vaygpKTsKKyAgfQorICBmb3IgKGF1dG8gaXQgOiBiYWRfdmFsdWVzKSB7CisgICAgcGFyYW1l
dGVycy5lbmNvZGluZ3NbMF0ubmV0d29ya19wcmlvcml0eSA9IGl0OworICAgIEVYUEVDVF9GQUxT
RShjaGFubmVsXy0+U2V0UnRwU2VuZFBhcmFtZXRlcnMoa1NzcmNYLCBwYXJhbWV0ZXJzKS5vaygp
KTsKKyAgfQorfQorCiAvLyBUZXN0IHRoYXQgR2V0UnRwU2VuZFBhcmFtZXRlcnMgcmV0dXJucyB0
aGUgY3VycmVudGx5IGNvbmZpZ3VyZWQgY29kZWNzLgogVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5l
VGVzdEZha2UsIEdldFJ0cFNlbmRQYXJhbWV0ZXJzQ29kZWNzKSB7CiAgIEVYUEVDVF9UUlVFKFNl
dHVwU2VuZFN0cmVhbSgpKTsKQEAgLTE1ODcsMTggKzE2MzUsNiBAQCBURVNUX0YoV2ViUnRjVm9p
Y2VFbmdpbmVUZXN0RmFrZSwgU2V0TWF4U2VuZEJhbmR3aWR0aEZvckF1ZGlvRG9lc250QWZmZWN0
QndlKSB7CiAgIFNldFNlbmRQYXJhbWV0ZXJzKHNlbmRfcGFyYW1ldGVyc18pOwogfQogCi0vLyBU
ZXN0IHRoYXQgd2UgY2FuIGVuYWJsZSBOQUNLIHdpdGggb3B1cyBhcyBjYWxsZXIuCi1URVNUX0Yo
V2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0U2VuZENvZGVjRW5hYmxlTmFja0FzQ2FsbGVy
KSB7Ci0gIEVYUEVDVF9UUlVFKFNldHVwU2VuZFN0cmVhbSgpKTsKLSAgY3JpY2tldDo6QXVkaW9T
ZW5kUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2so
a09wdXNDb2RlYyk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzWzBdLkFkZEZlZWRiYWNrUGFyYW0oY3Jp
Y2tldDo6RmVlZGJhY2tQYXJhbSgKLSAgICAgIGNyaWNrZXQ6OmtSdGNwRmJQYXJhbU5hY2ssIGNy
aWNrZXQ6OmtQYXJhbVZhbHVlRW1wdHkpKTsKLSAgRVhQRUNUX0VRKDAsIEdldFNlbmRTdHJlYW1D
b25maWcoa1NzcmNYKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7Ci0gIFNldFNlbmRQYXJhbWV0
ZXJzKHBhcmFtZXRlcnMpOwotICBFWFBFQ1RfRVEoa1J0cEhpc3RvcnlNcywgR2V0U2VuZFN0cmVh
bUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKLX0KLQogLy8gVGVzdCB0
aGF0IHdlIGNhbiBlbmFibGUgTkFDSyB3aXRoIG9wdXMgYXMgY2FsbGVlLgogVEVTVF9GKFdlYlJ0
Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNldFNlbmRDb2RlY0VuYWJsZU5hY2tBc0NhbGxlZSkgewog
ICBFWFBFQ1RfVFJVRShTZXR1cFJlY3ZTdHJlYW0oKSk7CkBAIC0xNjEzLDcgKzE2NDksNiBAQCBU
RVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0U2VuZENvZGVjRW5hYmxlTmFja0Fz
Q2FsbGVlKSB7CiAKICAgRVhQRUNUX1RSVUUoCiAgICAgICBjaGFubmVsXy0+QWRkU2VuZFN0cmVh
bShjcmlja2V0OjpTdHJlYW1QYXJhbXM6OkNyZWF0ZUxlZ2FjeShrU3NyY1gpKSk7Ci0gIEVYUEVD
VF9FUShrUnRwSGlzdG9yeU1zLCBHZXRTZW5kU3RyZWFtQ29uZmlnKGtTc3JjWCkucnRwLm5hY2su
cnRwX2hpc3RvcnlfbXMpOwogfQogCiAvLyBUZXN0IHRoYXQgd2UgY2FuIGVuYWJsZSBOQUNLIG9u
IHJlY2VpdmUgc3RyZWFtcy4KQEAgLTE2MjQsMjkgKzE2NTksMTEgQEAgVEVTVF9GKFdlYlJ0Y1Zv
aWNlRW5naW5lVGVzdEZha2UsIFNldFNlbmRDb2RlY0VuYWJsZU5hY2tSZWN2U3RyZWFtcykgewog
ICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soa09wdXNDb2RlYyk7CiAgIHBhcmFtZXRlcnMu
Y29kZWNzWzBdLkFkZEZlZWRiYWNrUGFyYW0oY3JpY2tldDo6RmVlZGJhY2tQYXJhbSgKICAgICAg
IGNyaWNrZXQ6OmtSdGNwRmJQYXJhbU5hY2ssIGNyaWNrZXQ6OmtQYXJhbVZhbHVlRW1wdHkpKTsK
LSAgRVhQRUNUX0VRKDAsIEdldFNlbmRTdHJlYW1Db25maWcoa1NzcmNYKS5ydHAubmFjay5ydHBf
aGlzdG9yeV9tcyk7CiAgIEVYUEVDVF9FUSgwLCBHZXRSZWN2U3RyZWFtQ29uZmlnKGtTc3JjWSku
cnRwLm5hY2sucnRwX2hpc3RvcnlfbXMpOwogICBTZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJz
KTsKLSAgRVhQRUNUX0VRKGtSdHBIaXN0b3J5TXMsIEdldFNlbmRTdHJlYW1Db25maWcoa1NzcmNY
KS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7CiAgIEVYUEVDVF9FUShrUnRwSGlzdG9yeU1zLCBH
ZXRSZWN2U3RyZWFtQ29uZmlnKGtTc3JjWSkucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMpOwogfQog
Ci0vLyBUZXN0IHRoYXQgd2UgY2FuIGRpc2FibGUgTkFDSy4KLVRFU1RfRihXZWJSdGNWb2ljZUVu
Z2luZVRlc3RGYWtlLCBTZXRTZW5kQ29kZWNEaXNhYmxlTmFjaykgewotICBFWFBFQ1RfVFJVRShT
ZXR1cFNlbmRTdHJlYW0oKSk7Ci0gIGNyaWNrZXQ6OkF1ZGlvU2VuZFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKGtPcHVzQ29kZWMpOwotICBwYXJh
bWV0ZXJzLmNvZGVjc1swXS5BZGRGZWVkYmFja1BhcmFtKGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0o
Ci0gICAgICBjcmlja2V0OjprUnRjcEZiUGFyYW1OYWNrLCBjcmlja2V0OjprUGFyYW1WYWx1ZUVt
cHR5KSk7Ci0gIFNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotICBFWFBFQ1RfRVEoa1J0
cEhpc3RvcnlNcywgR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9oaXN0
b3J5X21zKTsKLQotICBwYXJhbWV0ZXJzLmNvZGVjcy5jbGVhcigpOwotICBwYXJhbWV0ZXJzLmNv
ZGVjcy5wdXNoX2JhY2soa09wdXNDb2RlYyk7Ci0gIFNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRl
cnMpOwotICBFWFBFQ1RfRVEoMCwgR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNr
LnJ0cF9oaXN0b3J5X21zKTsKLX0KLQogLy8gVGVzdCB0aGF0IHdlIGNhbiBkaXNhYmxlIE5BQ0sg
b24gcmVjZWl2ZSBzdHJlYW1zLgogVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNl
dFNlbmRDb2RlY0Rpc2FibGVOYWNrUmVjdlN0cmVhbXMpIHsKICAgRVhQRUNUX1RSVUUoU2V0dXBT
ZW5kU3RyZWFtKCkpOwpAQCAtMTY1NiwxMyArMTY3MywxMSBAQCBURVNUX0YoV2ViUnRjVm9pY2VF
bmdpbmVUZXN0RmFrZSwgU2V0U2VuZENvZGVjRGlzYWJsZU5hY2tSZWN2U3RyZWFtcykgewogICBw
YXJhbWV0ZXJzLmNvZGVjc1swXS5BZGRGZWVkYmFja1BhcmFtKGNyaWNrZXQ6OkZlZWRiYWNrUGFy
YW0oCiAgICAgICBjcmlja2V0OjprUnRjcEZiUGFyYW1OYWNrLCBjcmlja2V0OjprUGFyYW1WYWx1
ZUVtcHR5KSk7CiAgIFNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotICBFWFBFQ1RfRVEo
a1J0cEhpc3RvcnlNcywgR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9o
aXN0b3J5X21zKTsKICAgRVhQRUNUX0VRKGtSdHBIaXN0b3J5TXMsIEdldFJlY3ZTdHJlYW1Db25m
aWcoa1NzcmNZKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7CiAKICAgcGFyYW1ldGVycy5jb2Rl
Y3MuY2xlYXIoKTsKICAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKGtPcHVzQ29kZWMpOwog
ICBTZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKLSAgRVhQRUNUX0VRKDAsIEdldFNlbmRT
dHJlYW1Db25maWcoa1NzcmNYKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7CiAgIEVYUEVDVF9F
USgwLCBHZXRSZWN2U3RyZWFtQ29uZmlnKGtTc3JjWSkucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMp
OwogfQogCkBAIC0xNjc1LDcgKzE2OTAsNiBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0
RmFrZSwgQWRkUmVjdlN0cmVhbUVuYWJsZU5hY2spIHsKICAgcGFyYW1ldGVycy5jb2RlY3NbMF0u
QWRkRmVlZGJhY2tQYXJhbShjcmlja2V0OjpGZWVkYmFja1BhcmFtKAogICAgICAgY3JpY2tldDo6
a1J0Y3BGYlBhcmFtTmFjaywgY3JpY2tldDo6a1BhcmFtVmFsdWVFbXB0eSkpOwogICBTZXRTZW5k
UGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKLSAgRVhQRUNUX0VRKGtSdHBIaXN0b3J5TXMsIEdldFNl
bmRTdHJlYW1Db25maWcoa1NzcmNYKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7CiAKICAgRVhQ
RUNUX1RSVUUoQWRkUmVjdlN0cmVhbShrU3NyY1kpKTsKICAgRVhQRUNUX0VRKGtSdHBIaXN0b3J5
TXMsIEdldFJlY3ZTdHJlYW1Db25maWcoa1NzcmNZKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7
CkBAIC0yNzk5LDYgKzI4MTMsMjAgQEAgVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2Us
IEluc2VydER0bWZPblNlbmRTdHJlYW1Bc0NhbGxlZSkgewogICBUZXN0SW5zZXJ0RHRtZihrU3Ny
Y1gsIGZhbHNlLCBrVGVsZXBob25lRXZlbnRDb2RlYzEpOwogfQogCisvLyBUZXN0IHByb3BhZ2F0
aW9uIG9mIGV4dG1hcCBhbGxvdyBtaXhlZCBzZXR0aW5nLgorVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5n
aW5lVGVzdEZha2UsIFNldEV4dG1hcEFsbG93TWl4ZWRBc0NhbGxlcikgeworICBUZXN0RXh0bWFw
QWxsb3dNaXhlZENhbGxlcigvKmV4dG1hcF9hbGxvd19taXhlZD0qL3RydWUpOworfQorVEVTVF9G
KFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNldEV4dG1hcEFsbG93TWl4ZWREaXNhYmxlZEFz
Q2FsbGVyKSB7CisgIFRlc3RFeHRtYXBBbGxvd01peGVkQ2FsbGVyKC8qZXh0bWFwX2FsbG93X21p
eGVkPSovZmFsc2UpOworfQorVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNldEV4
dG1hcEFsbG93TWl4ZWRBc0NhbGxlZSkgeworICBUZXN0RXh0bWFwQWxsb3dNaXhlZENhbGxlZSgv
KmV4dG1hcF9hbGxvd19taXhlZD0qL3RydWUpOworfQorVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5l
VGVzdEZha2UsIFNldEV4dG1hcEFsbG93TWl4ZWREaXNhYmxlZEFzQ2FsbGVlKSB7CisgIFRlc3RF
eHRtYXBBbGxvd01peGVkQ2FsbGVlKC8qZXh0bWFwX2FsbG93X21peGVkPSovZmFsc2UpOworfQor
CiBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0QXVkaW9PcHRpb25zKSB7CiAg
IEVYUEVDVF9UUlVFKFNldHVwU2VuZFN0cmVhbSgpKTsKICAgRVhQRUNUX1RSVUUoQWRkUmVjdlN0
cmVhbShrU3NyY1kpKTsKQEAgLTI5MTQsMTEgKzI5NDIsMTUgQEAgVEVTVF9GKFdlYlJ0Y1ZvaWNl
RW5naW5lVGVzdEZha2UsIFNldE9wdGlvbk92ZXJyaWRlc1ZpYUNoYW5uZWxzKSB7CiAgIEVYUEVD
VF9DQUxMKCphcG1fLCBTZXRFeHRyYU9wdGlvbnModGVzdGluZzo6XykpLlRpbWVzKDEwKTsKIAog
ICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw+IGNoYW5u
ZWwxKAotICAgICAgc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwq
PihlbmdpbmVfLT5DcmVhdGVDaGFubmVsKAotICAgICAgICAgICZjYWxsXywgY3JpY2tldDo6TWVk
aWFDb25maWcoKSwgY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpKSk7CisgICAgICBzdGF0aWNfY2Fz
dDxjcmlja2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCo+KAorICAgICAgICAgIGVuZ2luZV8t
PkNyZWF0ZU1lZGlhQ2hhbm5lbCgmY2FsbF8sIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkNyeXB0b09w
dGlvbnMoKSkpKTsKICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OldlYlJ0Y1ZvaWNlTWVkaWFD
aGFubmVsPiBjaGFubmVsMigKLSAgICAgIHN0YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZvaWNl
TWVkaWFDaGFubmVsKj4oZW5naW5lXy0+Q3JlYXRlQ2hhbm5lbCgKLSAgICAgICAgICAmY2FsbF8s
IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKSkpOworICAg
ICAgc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwqPigKKyAgICAg
ICAgICBlbmdpbmVfLT5DcmVhdGVNZWRpYUNoYW5uZWwoJmNhbGxfLCBjcmlja2V0OjpNZWRpYUNv
bmZpZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpB
dWRpb09wdGlvbnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vi
cnRjOjpDcnlwdG9PcHRpb25zKCkpKSk7CiAKICAgLy8gSGF2ZSB0byBhZGQgYSBzdHJlYW0gdG8g
bWFrZSBTZXRTZW5kIHdvcmsuCiAgIGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyBzdHJlYW0xOwpAQCAt
MzAxNyw2ICszMDQ5LDcgQEAgVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFRlc3RT
ZXREc2NwT3B0aW9ucykgewogICBjcmlja2V0OjpGYWtlTmV0d29ya0ludGVyZmFjZSBuZXR3b3Jr
X2ludGVyZmFjZTsKICAgY3JpY2tldDo6TWVkaWFDb25maWcgY29uZmlnOwogICBzdGQ6OnVuaXF1
ZV9wdHI8Y3JpY2tldDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw+IGNoYW5uZWw7CisgIHdlYnJ0
Yzo6UnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCiAgIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5n
OjpDb25maWcgYXBtX2NvbmZpZzsKICAgRVhQRUNUX0NBTEwoKmFwbV8sIEdldENvbmZpZygpKQpA
QCAtMzAyNiwzMiArMzA1OSw1NCBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwg
VGVzdFNldERzY3BPcHRpb25zKSB7CiAgIEVYUEVDVF9DQUxMKCphcG1fLCBTZXRFeHRyYU9wdGlv
bnModGVzdGluZzo6XykpLlRpbWVzKDMpOwogCiAgIGNoYW5uZWwucmVzZXQoc3RhdGljX2Nhc3Q8
Y3JpY2tldDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwqPigKLSAgICAgIGVuZ2luZV8tPkNyZWF0
ZUNoYW5uZWwoJmNhbGxfLCBjb25maWcsIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKSkpOwotICBj
aGFubmVsLT5TZXRJbnRlcmZhY2UoJm5ldHdvcmtfaW50ZXJmYWNlKTsKKyAgICAgIGVuZ2luZV8t
PkNyZWF0ZU1lZGlhQ2hhbm5lbCgmY2FsbF8sIGNvbmZpZywgY3JpY2tldDo6QXVkaW9PcHRpb25z
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRp
b25zKCkpKSk7CisgIGNoYW5uZWwtPlNldEludGVyZmFjZSgmbmV0d29ya19pbnRlcmZhY2UsIC8q
bWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgIC8vIERlZmF1bHQgdmFsdWUgd2hlbiBEU0NQ
IGlzIGRpc2FibGVkIHNob3VsZCBiZSBEU0NQX0RFRkFVTFQuCiAgIEVYUEVDVF9FUShydGM6OkRT
Q1BfREVGQVVMVCwgbmV0d29ya19pbnRlcmZhY2UuZHNjcCgpKTsKIAogICBjb25maWcuZW5hYmxl
X2RzY3AgPSB0cnVlOwogICBjaGFubmVsLnJlc2V0KHN0YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0
Y1ZvaWNlTWVkaWFDaGFubmVsKj4oCi0gICAgICBlbmdpbmVfLT5DcmVhdGVDaGFubmVsKCZjYWxs
XywgY29uZmlnLCBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSkpKTsKLSAgY2hhbm5lbC0+U2V0SW50
ZXJmYWNlKCZuZXR3b3JrX2ludGVyZmFjZSk7CisgICAgICBlbmdpbmVfLT5DcmVhdGVNZWRpYUNo
YW5uZWwoJmNhbGxfLCBjb25maWcsIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSkpOworICBj
aGFubmVsLT5TZXRJbnRlcmZhY2UoJm5ldHdvcmtfaW50ZXJmYWNlLCAvKm1lZGlhX3RyYW5zcG9y
dD0qL251bGxwdHIpOworICBFWFBFQ1RfRVEocnRjOjpEU0NQX0RFRkFVTFQsIG5ldHdvcmtfaW50
ZXJmYWNlLmRzY3AoKSk7CisKKyAgLy8gQ3JlYXRlIGEgc2VuZCBzdHJlYW0gdG8gY29uZmlndXJl
CisgIEVYUEVDVF9UUlVFKAorICAgICAgY2hhbm5lbC0+QWRkU2VuZFN0cmVhbShjcmlja2V0OjpT
dHJlYW1QYXJhbXM6OkNyZWF0ZUxlZ2FjeShrU3NyY1opKSk7CisgIHBhcmFtZXRlcnMgPSBjaGFu
bmVsLT5HZXRSdHBTZW5kUGFyYW1ldGVycyhrU3NyY1opOworICBBU1NFUlRfRkFMU0UocGFyYW1l
dGVycy5lbmNvZGluZ3MuZW1wdHkoKSk7CisKKyAgLy8gVmFyaW91cyBwcmlvcml0aWVzIG1hcCB0
byB2YXJpb3VzIGRzY3AgdmFsdWVzLgorICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3b3Jr
X3ByaW9yaXR5ID0gNC4wOworICBBU1NFUlRfVFJVRShjaGFubmVsLT5TZXRSdHBTZW5kUGFyYW1l
dGVycyhrU3NyY1osIHBhcmFtZXRlcnMpLm9rKCkpOwogICBFWFBFQ1RfRVEocnRjOjpEU0NQX0VG
LCBuZXR3b3JrX2ludGVyZmFjZS5kc2NwKCkpOworICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5u
ZXR3b3JrX3ByaW9yaXR5ID0gMC41OworICBBU1NFUlRfVFJVRShjaGFubmVsLT5TZXRSdHBTZW5k
UGFyYW1ldGVycyhrU3NyY1osIHBhcmFtZXRlcnMpLm9rKCkpOworICBFWFBFQ1RfRVEocnRjOjpE
U0NQX0NTMSwgbmV0d29ya19pbnRlcmZhY2UuZHNjcCgpKTsKKworICAvLyBBIGJhZCBwcmlvcml0
eSBkb2VzIG5vdCBjaGFuZ2UgdGhlIGRzY3AgdmFsdWUuCisgIHBhcmFtZXRlcnMuZW5jb2Rpbmdz
WzBdLm5ldHdvcmtfcHJpb3JpdHkgPSAwLjA7CisgIEFTU0VSVF9GQUxTRShjaGFubmVsLT5TZXRS
dHBTZW5kUGFyYW1ldGVycyhrU3NyY1osIHBhcmFtZXRlcnMpLm9rKCkpOworICBFWFBFQ1RfRVEo
cnRjOjpEU0NQX0NTMSwgbmV0d29ya19pbnRlcmZhY2UuZHNjcCgpKTsKIAogICAvLyBQYWNrZXRz
IHNob3VsZCBhbHNvIHNlbGYtaWRlbnRpZnkgdGhlaXIgZHNjcCBpbiBQYWNrZXRPcHRpb25zLgog
ICBjb25zdCB1aW50OF90IGtEYXRhWzEwXSA9IHswfTsKICAgRVhQRUNUX1RSVUUoY2hhbm5lbC0+
U2VuZFJ0Y3Aoa0RhdGEsIHNpemVvZihrRGF0YSkpKTsKLSAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9F
RiwgbmV0d29ya19pbnRlcmZhY2Uub3B0aW9ucygpLmRzY3ApOworICBFWFBFQ1RfRVEocnRjOjpE
U0NQX0NTMSwgbmV0d29ya19pbnRlcmZhY2Uub3B0aW9ucygpLmRzY3ApOwogCiAgIC8vIFZlcmlm
eSB0aGF0IHNldHRpbmcgdGhlIG9wdGlvbiB0byBmYWxzZSByZXNldHMgdGhlCiAgIC8vIERpZmZT
ZXJ2Q29kZVBvaW50LgogICBjb25maWcuZW5hYmxlX2RzY3AgPSBmYWxzZTsKICAgY2hhbm5lbC5y
ZXNldChzdGF0aWNfY2FzdDxjcmlja2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCo+KAotICAg
ICAgZW5naW5lXy0+Q3JlYXRlQ2hhbm5lbCgmY2FsbF8sIGNvbmZpZywgY3JpY2tldDo6QXVkaW9P
cHRpb25zKCkpKSk7Ci0gIGNoYW5uZWwtPlNldEludGVyZmFjZSgmbmV0d29ya19pbnRlcmZhY2Up
OworICAgICAgZW5naW5lXy0+Q3JlYXRlTWVkaWFDaGFubmVsKCZjYWxsXywgY29uZmlnLCBjcmlj
a2V0OjpBdWRpb09wdGlvbnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpKTsKKyAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKCZuZXR3
b3JrX2ludGVyZmFjZSwgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgLy8gRGVmYXVs
dCB2YWx1ZSB3aGVuIERTQ1AgaXMgZGlzYWJsZWQgc2hvdWxkIGJlIERTQ1BfREVGQVVMVC4KICAg
RVhQRUNUX0VRKHJ0Yzo6RFNDUF9ERUZBVUxULCBuZXR3b3JrX2ludGVyZmFjZS5kc2NwKCkpOwog
Ci0gIGNoYW5uZWwtPlNldEludGVyZmFjZShudWxscHRyKTsKKyAgY2hhbm5lbC0+U2V0SW50ZXJm
YWNlKG51bGxwdHIsIG51bGxwdHIpOwogfQogCiBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0
RmFrZSwgU2V0T3V0cHV0Vm9sdW1lKSB7CkBAIC0zMTk0LDkgKzMyNDksOSBAQCBURVNUX0YoV2Vi
UnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgRGVsaXZlckF1ZGlvUGFja2V0X0NhbGwpIHsKICAgY29u
c3QgY3JpY2tldDo6RmFrZUF1ZGlvUmVjZWl2ZVN0cmVhbSogcyA9CiAgICAgICBjYWxsXy5HZXRB
dWRpb1JlY2VpdmVTdHJlYW0oa0F1ZGlvU3NyYyk7CiAgIEVYUEVDVF9FUSgwLCBzLT5yZWNlaXZl
ZF9wYWNrZXRzKCkpOwotICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgma1BjbXVQYWNrZXQs
IHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJmtQY211
UGFja2V0LCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIEVYUEVDVF9FUSgxLCBzLT5yZWNl
aXZlZF9wYWNrZXRzKCkpOwotICBjaGFubmVsXy0+T25SdGNwUmVjZWl2ZWQoJmtSdGNwUGFja2V0
LCBydGM6OlBhY2tldFRpbWUoKSk7CisgIGNoYW5uZWxfLT5PblJ0Y3BSZWNlaXZlZCgma1J0Y3BQ
YWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgRVhQRUNUX0VRKDIsIHMtPnJlY2Vp
dmVkX3BhY2tldHMoKSk7CiB9CiAKQEAgLTMzNzQsOCArMzQyOSw5IEBAIFRFU1QoV2ViUnRjVm9p
Y2VFbmdpbmVUZXN0LCBTdGFydHVwU2h1dGRvd24pIHsKICAgd2VicnRjOjpSdGNFdmVudExvZ051
bGxJbXBsIGV2ZW50X2xvZzsKICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6Q2FsbD4gY2FsbCgK
ICAgICAgIHdlYnJ0Yzo6Q2FsbDo6Q3JlYXRlKHdlYnJ0Yzo6Q2FsbDo6Q29uZmlnKCZldmVudF9s
b2cpKSk7Ci0gIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiBjaGFubmVsID0gZW5naW5lLkNy
ZWF0ZUNoYW5uZWwoCi0gICAgICBjYWxsLmdldCgpLCBjcmlja2V0OjpNZWRpYUNvbmZpZygpLCBj
cmlja2V0OjpBdWRpb09wdGlvbnMoKSk7CisgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiBj
aGFubmVsID0gZW5naW5lLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGNhbGwuZ2V0KCksIGNy
aWNrZXQ6Ok1lZGlhQ29uZmlnKCksIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpLAorICAgICAgd2Vi
cnRjOjpDcnlwdG9PcHRpb25zKCkpOwogICBFWFBFQ1RfVFJVRShjaGFubmVsICE9IG51bGxwdHIp
OwogICBkZWxldGUgY2hhbm5lbDsKIH0KQEAgLTMzOTcsOCArMzQ1Myw5IEBAIFRFU1QoV2ViUnRj
Vm9pY2VFbmdpbmVUZXN0LCBTdGFydHVwU2h1dGRvd25XaXRoRXh0ZXJuYWxBRE0pIHsKICAgICB3
ZWJydGM6OlJ0Y0V2ZW50TG9nTnVsbEltcGwgZXZlbnRfbG9nOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjx3ZWJydGM6OkNhbGw+IGNhbGwoCiAgICAgICAgIHdlYnJ0Yzo6Q2FsbDo6Q3JlYXRlKHdlYnJ0
Yzo6Q2FsbDo6Q29uZmlnKCZldmVudF9sb2cpKSk7Ci0gICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNo
YW5uZWwqIGNoYW5uZWwgPSBlbmdpbmUuQ3JlYXRlQ2hhbm5lbCgKLSAgICAgICAgY2FsbC5nZXQo
KSwgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpOworICAg
IGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiBjaGFubmVsID0gZW5naW5lLkNyZWF0ZU1lZGlh
Q2hhbm5lbCgKKyAgICAgICAgY2FsbC5nZXQoKSwgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgY3Jp
Y2tldDo6QXVkaW9PcHRpb25zKCksCisgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsK
ICAgICBFWFBFQ1RfVFJVRShjaGFubmVsICE9IG51bGxwdHIpOwogICAgIGRlbGV0ZSBjaGFubmVs
OwogICB9CkBAIC0zNDE3LDcgKzM0NzQsNyBAQCBURVNUKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdCwg
SGFzQ29ycmVjdFBheWxvYWRUeXBlTWFwcGluZykgewogICBlbmdpbmUuSW5pdCgpOwogICBmb3Ig
KGNvbnN0IGNyaWNrZXQ6OkF1ZGlvQ29kZWMmIGNvZGVjIDogZW5naW5lLnNlbmRfY29kZWNzKCkp
IHsKICAgICBhdXRvIGlzX2NvZGVjID0gWyZjb2RlY10oY29uc3QgY2hhciogbmFtZSwgaW50IGNs
b2NrcmF0ZSA9IDApIHsKLSAgICAgIHJldHVybiBTVFJfQ0FTRV9DTVAoY29kZWMubmFtZS5jX3N0
cigpLCBuYW1lKSA9PSAwICYmCisgICAgICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShj
b2RlYy5uYW1lLCBuYW1lKSAmJgogICAgICAgICAgICAgIChjbG9ja3JhdGUgPT0gMCB8fCBjb2Rl
Yy5jbG9ja3JhdGUgPT0gY2xvY2tyYXRlKTsKICAgICB9OwogICAgIGlmIChpc19jb2RlYygiQ04i
LCAxNjAwMCkpIHsKQEAgLTM0NjcsOCArMzUyNCw5IEBAIFRFU1QoV2ViUnRjVm9pY2VFbmdpbmVU
ZXN0LCBIYXMzMkNoYW5uZWxzKSB7CiAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiBjaGFu
bmVsc1szMl07CiAgIHNpemVfdCBudW1fY2hhbm5lbHMgPSAwOwogICB3aGlsZSAobnVtX2NoYW5u
ZWxzIDwgYXJyYXlzaXplKGNoYW5uZWxzKSkgewotICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFu
bmVsKiBjaGFubmVsID0gZW5naW5lLkNyZWF0ZUNoYW5uZWwoCi0gICAgICAgIGNhbGwuZ2V0KCks
IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKTsKKyAgICBj
cmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCogY2hhbm5lbCA9IGVuZ2luZS5DcmVhdGVNZWRpYUNo
YW5uZWwoCisgICAgICAgIGNhbGwuZ2V0KCksIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIGNyaWNr
ZXQ6OkF1ZGlvT3B0aW9ucygpLAorICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSk7CiAg
ICAgaWYgKCFjaGFubmVsKQogICAgICAgYnJlYWs7CiAgICAgY2hhbm5lbHNbbnVtX2NoYW5uZWxz
KytdID0gY2hhbm5lbDsKQEAgLTM1MDIsNyArMzU2MCw4IEBAIFRFU1QoV2ViUnRjVm9pY2VFbmdp
bmVUZXN0LCBTZXRSZWN2Q29kZWNzKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkNhbGw+
IGNhbGwoCiAgICAgICB3ZWJydGM6OkNhbGw6OkNyZWF0ZSh3ZWJydGM6OkNhbGw6OkNvbmZpZygm
ZXZlbnRfbG9nKSkpOwogICBjcmlja2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCBjaGFubmVs
KCZlbmdpbmUsIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6QXVkaW9PcHRpb25zKCksIGNhbGwuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkF1
ZGlvT3B0aW9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBjYWxsLmdldCgpKTsKICAgY3JpY2tldDo6QXVkaW9S
ZWN2UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGVuZ2luZS5y
ZWN2X2NvZGVjcygpOwogICBFWFBFQ1RfVFJVRShjaGFubmVsLlNldFJlY3ZQYXJhbWV0ZXJzKHBh
cmFtZXRlcnMpKTsKQEAgLTM1NjQsNyArMzYyMyw3IEBAIFRFU1QoV2ViUnRjVm9pY2VFbmdpbmVU
ZXN0LCBDb2xsZWN0UmVjdkNvZGVjcykgewogICBhdXRvIGZpbmRfY29kZWMgPSBbJmNvZGVjc10o
Y29uc3Qgd2VicnRjOjpTZHBBdWRpb0Zvcm1hdCYgZm9ybWF0KSAtPiBpbnQgewogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpICE9IGNvZGVjcy5zaXplKCk7ICsraSkgewogICAgICAgY29uc3QgY3Jp
Y2tldDo6QXVkaW9Db2RlYyYgY29kZWMgPSBjb2RlY3NbaV07Ci0gICAgICBpZiAoU1RSX0NBU0Vf
Q01QKGNvZGVjLm5hbWUuY19zdHIoKSwgZm9ybWF0Lm5hbWUuY19zdHIoKSkgPT0gMCAmJgorICAg
ICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwgZm9ybWF0Lm5hbWUpICYm
CiAgICAgICAgICAgY29kZWMuY2xvY2tyYXRlID09IGZvcm1hdC5jbG9ja3JhdGVfaHogJiYKICAg
ICAgICAgICBjb2RlYy5jaGFubmVscyA9PSBmb3JtYXQubnVtX2NoYW5uZWxzKSB7CiAgICAgICAg
IHJldHVybiBydGM6OmNoZWNrZWRfY2FzdDxpbnQ+KGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvc2N0cC9PV05FUlMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL09XTkVSUwpp
bmRleCA4MjYyZmY3NTA4OTZmYjY5YjFjMDcwZDU5MDU4NjFiYTQ2ZDNmMGI0Li5iYzIxODJiMWI2
MGYyYzljNDMwNjAyNjJhZGVhMTBhOGM5MGJhNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL09XTkVSUworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL09XTkVSUwpA
QCAtMSwyICsxIEBACiBqZXJvZW5kYkB3ZWJydGMub3JnCi1zaGFtcHNvbkB3ZWJydGMub3JnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9zY3RwL3NjdHB0cmFuc3BvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnQuY2MKaW5kZXggYThiOTQ1YTZmMTcz
ZDliYTA2ZjI5YTRiYjI4YzRhNWZhYmMwOTgyMi4uNGZmYWFmN2Y1YTA0NDhkMTBmYzMxZWY0MDVj
YzNlZjZiODQ4YmQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwdHJhbnNwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRyYW5zcG9ydC5j
YwpAQCAtODU4LDcgKzg1OCw3IEBAIHZvaWQgU2N0cFRyYW5zcG9ydDo6T25Xcml0YWJsZVN0YXRl
KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCkgewogdm9pZCBTY3RwVHJh
bnNwb3J0OjpPblBhY2tldFJlYWQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNw
b3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFj
a2V0X3RpbWVfdXMgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxh
Z3MpIHsKICAgUlRDX0RDSEVDS19SVU5fT04obmV0d29ya190aHJlYWRfKTsKICAgUlRDX0RDSEVD
S19FUSh0cmFuc3BvcnRfLCB0cmFuc3BvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwdHJhbnNwb3J0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0
cmFuc3BvcnQuaAppbmRleCBhNDAxZDhiNzk1YThhYTkxNGFlMzY0YWIxMzU1MjYyOGM1MzA3NzIx
Li41YzJhNzUwZTRmM2MzMjIwYzRlOTdiNGI4MDcxNjk4M2JkZDQzMDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0
cmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnQuaApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUg
PGVycm5vLmg+CiAKICNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8bWVtb3J5PiAgLy8gZm9yIHVu
aXF1ZV9wdHIuCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxz
dHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgpAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNjdHBU
cmFuc3BvcnQgOiBwdWJsaWMgU2N0cFRyYW5zcG9ydEludGVybmFsLAogICB2aXJ0dWFsIHZvaWQg
T25QYWNrZXRSZWFkKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZmxhZ3MpOwogCiAgIC8vIE1ldGhvZHMgcmVsYXRlZCB0byB1c3JzY3Rw
IGNhbGxiYWNrcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRyYW5zcG9ydGludGVybmFsLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnRp
bnRlcm5hbC5oCmluZGV4IDAzODBhODcwYjRjMGIwOGQyY2UxYjQ2ODQ2YjU4ODY4NGNiYTc3ZDAu
LjRjM2I1NDJhNTIxZDhiYjYzNDgzNzIwYjgwNjRkYTQ2NDk1ZjQ5YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRy
YW5zcG9ydGludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwdHJhbnNwb3J0aW50ZXJuYWwuaApAQCAtMTQsNyArMTQs
NyBAQAogLy8gVE9ETyhkZWFkYmVlZik6IE1vdmUgU0NUUCBjb2RlIG91dCBvZiBtZWRpYS8sIGFu
ZCBtYWtlIGl0IG5vdCBkZXBlbmQgb24KIC8vIGFueXRoaW5nIGluIG1lZGlhLy4KIAotI2luY2x1
ZGUgPG1lbW9yeT4gIC8vIGZvciB1bmlxdWVfcHRyCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvQlVJTEQuZ24gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL0JVSUxELmduCmluZGV4
IDgxMjcyNDQ0NjJiMzM1NzI2NjI5NmFmMmMzNTg2ZjE1Yzg4YmY2ZDAuLmVmMDI5OTE0YjMwOTNj
MmJlNDM4ZmEyMzBlYmFiYWMxYzZmMDQ5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvQlVJTEQuZ24KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9CVUlMRC5nbgpAQCAtNTQs
NiArNTQsNyBAQCBydGNfc291cmNlX3NldCgibW9kdWxlX2FwaSIpIHsKICAgICAiLi4vYXBpOmxp
YmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0
cF92aWRlb19oZWFkZXIiLAogICAgICIuLi9ydGNfYmFzZTpzYWZlX2NvbnZlcnNpb25zIiwKKyAg
ICAiLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICBdCiB9CiAKQEAgLTIzNiw2ICsy
MzcsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBkZXBzID0gWwogICAgICAgIjpt
b2R1bGVfYXBpIiwKICAgICAgICIuLi90ZXN0OnRlc3RfbWFpbiIsCisgICAgICAiLi4vdGVzdDp0
ZXN0X3N1cHBvcnQiLAogICAgICAgImF1ZGlvX2NvZGluZzphdWRpb19jb2RpbmdfdW5pdHRlc3Rz
IiwKICAgICAgICJhdWRpb19kZXZpY2U6YXVkaW9fZGV2aWNlX3VuaXR0ZXN0cyIsCiAgICAgICAi
YXVkaW9fbWl4ZXI6YXVkaW9fbWl4ZXJfdW5pdHRlc3RzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL0JV
SUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvQlVJTEQuZ24KaW5kZXggNDk4MmQxOWE3YjMwMzZmNzUwODkwMTJkMWUw
ZTNkNzQxN2NiZmJjNC4uZGY0YmEyM2ZmZjVkMzc3NDAxMzhjNzdiODAyMjM5YjRjNjI4MzE1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvQlVJTEQuZ24KQEAgLTE0LDMy
ICsxNCw2IEBAIGlmICghYnVpbGRfd2l0aF9tb3ppbGxhKSB7CiAKIHZpc2liaWxpdHkgPSBbICI6
KiIgXQogCi1hdWRpb19jb2RlY19kZXBzID0gWwotICAiOmNuZyIsCi0gICI6ZzcxMSIsCi0gICI6
cGNtMTZiIiwKLV0KLWlmIChydGNfaW5jbHVkZV9pbGJjKSB7Ci0gIGF1ZGlvX2NvZGVjX2RlcHMg
Kz0gWyAiOmlsYmMiIF0KLX0KLWlmIChydGNfaW5jbHVkZV9vcHVzKSB7Ci0gIGF1ZGlvX2NvZGVj
X2RlcHMgKz0gWyAiOndlYnJ0Y19vcHVzIiBdCi19Ci1pZiAoY3VycmVudF9jcHUgPT0gImFybSIp
IHsKLSAgYXVkaW9fY29kZWNfZGVwcyArPSBbICI6aXNhY19maXgiIF0KLX0gZWxzZSB7Ci0gIGF1
ZGlvX2NvZGVjX2RlcHMgKz0gWyAiOmlzYWMiIF0KLX0KLWF1ZGlvX2NvZGVjX2RlcHMgKz0gWyAi
Omc3MjIiIF0KLWlmICghYnVpbGRfd2l0aF9tb3ppbGxhICYmICFidWlsZF93aXRoX2Nocm9taXVt
KSB7Ci0gIGF1ZGlvX2NvZGVjX2RlcHMgKz0gWyAiOnJlZCIgXQotfQotYXVkaW9fY29kaW5nX2Rl
cHMgPSBhdWRpb19jb2RlY19kZXBzICsgWwotICAgICAgICAgICAgICAgICAgICAgICIuLi8uLjp3
ZWJydGNfY29tbW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAiLi4vLi4vY29tbW9uX2F1ZGlv
IiwKLSAgICAgICAgICAgICAgICAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKLSAgICAg
ICAgICAgICAgICAgICAgXQotCiBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2Zvcm1hdF9jb252
ZXJzaW9uIikgewogICB2aXNpYmlsaXR5ICs9IHdlYnJ0Y19kZWZhdWx0X3Zpc2liaWxpdHkKICAg
c291cmNlcyA9IFsKQEAgLTUzLDYgKzI3LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19m
b3JtYXRfY29udmVyc2lvbiIpIHsKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAi
Li4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi9ydGNfYmFzZTpz
YW5pdGl6ZXIiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwK
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBd
CiB9CkBAIC02Myw3ICszOCw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicmVudF9hX2NvZGVjIikg
ewogICAjIFRPRE8oYnVncy53ZWJydGMub3JnLzk4MDgpOiBNb3ZlIHRvIHByaXZhdGUgdmlzaWJp
bGl0eSBhcyBzb29uIGFzIHRoYXQKICAgIyBjbGllbnQgY29kZSBnZXRzIHVwZGF0ZWQuCiAgIHZp
c2liaWxpdHkgKz0gWyAiKiIgXQotICBhbGxvd19wb2lzb24gPSBbICJhdWRpb19jb2RlY3MiIF0K
IAogICBzb3VyY2VzID0gWwogICAgICJhY20yL2FjbV9jb2RlY19kYXRhYmFzZS5jYyIsCkBAIC03
MiwyMCArNDYsMTggQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJyZW50X2FfY29kZWMiKSB7CiAgICAg
ImFjbTIvcmVudF9hX2NvZGVjLmgiLAogICBdCiAgIGRlcHMgPSBbCi0gICAgICAgICAgICIuLi8u
Li9ydGNfYmFzZTpjaGVja3MiLAotICAgICAgICAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAot
ICAgICAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwi
LAotICAgICAgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwK
LSAgICAgICAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAotICAgICAgICAgICAiLi4vLi4vcnRj
X2Jhc2U6cHJvdG9idWZfdXRpbHMiLAotICAgICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jh
c2VfYXBwcm92ZWQiLAotICAgICAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKLSAgICAg
ICAgICAgIjphdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzIiwKLSAgICAgICAgICAgIjppc2Fj
X2NvbW1vbiIsCi0gICAgICAgICAgICI6aXNhY19maXhfYyIsCi0gICAgICAgICAgICI6bmV0ZXFf
ZGVjb2Rlcl9lbnVtIiwKLSAgICAgICAgIF0gKyBhdWRpb19jb2RlY19kZXBzCi0KKyAgICAiOmF1
ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMiLAorICAgICI6bmV0ZXFfZGVjb2Rlcl9lbnVtIiwK
KyAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwK
KyAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKKyAgICAiLi4v
Li4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6cHJvdG9idWZfdXRpbHMi
LAorICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3N5
c3RlbV93cmFwcGVycyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIs
CisgIF0KICAgZGVmaW5lcyA9IGF1ZGlvX2NvZGVjX2RlZmluZXMKIH0KIApAQCAtOTUsMTIgKzY3
LDEyIEBAIHJ0Y19zb3VyY2Vfc2V0KCJhdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzIikgewog
ICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAorICAgICIuLi8uLi9y
dGNfYmFzZTpkZXByZWNhdGlvbiIsCiAgIF0KIH0KIAogcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRp
b19jb2RpbmciKSB7CiAgIHZpc2liaWxpdHkgKz0gWyAiKiIgXQotICBhbGxvd19wb2lzb24gPSBb
ICJhdWRpb19jb2RlY3MiIF0gICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvODM5Nik6IFJlbW92ZS4K
ICAgc291cmNlcyA9IFsKICAgICAiYWNtMi9hY21fcmVjZWl2ZXIuY2MiLAogICAgICJhY20yL2Fj
bV9yZWNlaXZlci5oIiwKQEAgLTEwOSwzNyArODEsMzQgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJh
dWRpb19jb2RpbmciKSB7CiAgICAgImFjbTIvYXVkaW9fY29kaW5nX21vZHVsZS5jYyIsCiAgICAg
ImFjbTIvY2FsbF9zdGF0aXN0aWNzLmNjIiwKICAgICAiYWNtMi9jYWxsX3N0YXRpc3RpY3MuaCIs
Ci0gICAgImFjbTIvY29kZWNfbWFuYWdlci5jYyIsCi0gICAgImFjbTIvY29kZWNfbWFuYWdlci5o
IiwKICAgICAiaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiLAogICBdCiAKICAgZGVmaW5l
cyA9IFtdCiAKLSAgaWYgKHJ0Y19pbmNsdWRlX29wdXMpIHsKLSAgICBwdWJsaWNfZGVwcyA9IFsK
LSAgICAgICI6d2VicnRjX29wdXMiLAotICAgIF0KLSAgfQotCi0gIGRlcHMgPSBhdWRpb19jb2Rp
bmdfZGVwcyArIFsKLSAgICAgICAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwK
LSAgICAgICAgICAgIi4uLy4uL2FwaS9hdWRpbzphdWRpb19mcmFtZV9hcGkiLAotICAgICAgICAg
ICAiLi46bW9kdWxlX2FwaSIsCi0gICAgICAgICAgICIuLi8uLi9jb21tb25fYXVkaW86Y29tbW9u
X2F1ZGlvX2MiLAotICAgICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6ZGVwcmVjYXRpb24iLAotICAg
ICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKLSAgICAgICAgICAgIi4uLy4uL2FwaTph
cnJheV92aWV3IiwKLSAgICAgICAgICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29k
ZWNzX2FwaSIsCi0gICAgICAgICAgICI6YXVkaW9fY29kaW5nX21vZHVsZV90eXBlZGVmcyIsCi0g
ICAgICAgICAgICI6bmV0ZXEiLAotICAgICAgICAgICAiOnJlbnRfYV9jb2RlYyIsCi0gICAgICAg
ICAgICIuLi8uLi9ydGNfYmFzZTphdWRpb19mb3JtYXRfdG9fc3RyaW5nIiwKLSAgICAgICAgICAg
Ii4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICAgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKLSAgICAgICAgICAgIi4uLy4u
L2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAotICAgICAgICAgXQotICBkZWZpbmVzID0gYXVk
aW9fY29kaW5nX2RlZmluZXMKKyAgZGVwcyA9IFsKKyAgICAiOmF1ZGlvX2NvZGluZ19tb2R1bGVf
dHlwZWRlZnMiLAorICAgICI6bmV0ZXEiLAorICAgICI6bmV0ZXFfZGVjb2Rlcl9lbnVtIiwKKyAg
ICAiOnJlbnRfYV9jb2RlYyIsCisgICAgIi4uOm1vZHVsZV9hcGkiLAorICAgICIuLjptb2R1bGVf
YXBpX3B1YmxpYyIsCisgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAorICAgICIuLi8uLi9hcGk6
YXJyYXlfdmlldyIsCisgICAgIi4uLy4uL2FwaS9hdWRpbzphdWRpb19mcmFtZV9hcGkiLAorICAg
ICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAorICAgICIuLi8uLi9j
b21tb25fYXVkaW86Y29tbW9uX2F1ZGlvIiwKKyAgICAiLi4vLi4vY29tbW9uX2F1ZGlvOmNvbW1v
bl9hdWRpb19jIiwKKyAgICAiLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCisgICAg
Ii4uLy4uL3J0Y19iYXNlOmF1ZGlvX2Zvcm1hdF90b19zdHJpbmciLAorICAgICIuLi8uLi9ydGNf
YmFzZTpjaGVja3MiLAorICAgICIuLi8uLi9ydGNfYmFzZTpkZXByZWNhdGlvbiIsCisgICAgIi4u
Ly4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dyYXBw
ZXJzIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3MiLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICBdCiB9CiAKIHJ0Y19zdGF0aWNfbGlicmFy
eSgibGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUiKSB7CkBAIC0xNTAsMjYgKzExOSw0MSBAQCBy
dGNfc3RhdGljX2xpYnJhcnkoImxlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lIikgewogICBkZXBz
ID0gWwogICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uL2FwaS9hdWRpb19j
b2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAg
ICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CiAKLXJ0Y19zdGF0aWNf
bGlicmFyeSgiY25nIikgewotICB2aXNpYmlsaXR5ICs9IFsgIioiIF0KK3J0Y19zdGF0aWNfbGli
cmFyeSgid2VicnRjX2NuZyIpIHsKKyAgdmlzaWJpbGl0eSArPSB3ZWJydGNfZGVmYXVsdF92aXNp
YmlsaXR5CiAgIHNvdXJjZXMgPSBbCi0gICAgImNvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcu
Y2MiLAotICAgICJjb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmgiLAogICAgICJjb2RlY3Mv
Y25nL3dlYnJ0Y19jbmcuY2MiLAogICAgICJjb2RlY3MvY25nL3dlYnJ0Y19jbmcuaCIsCiAgIF0K
IAogICBkZXBzID0gWwotICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBp
OmFycmF5X3ZpZXciLAotICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19h
cGkiLAotICAgICIuLi8uLi9jb21tb25fYXVkaW8iLAogICAgICIuLi8uLi9jb21tb25fYXVkaW86
Y29tbW9uX2F1ZGlvX2MiLAorICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8u
Li9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVf
Y29udmVyc2lvbnMiLAorICBdCit9CisKK3J0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZW5jb2Rl
cl9jbmciKSB7CisgIHZpc2liaWxpdHkgKz0gWyAiKiIgXQorICBzb3VyY2VzID0gWworICAgICJj
b2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjIiwKKyAgICAiY29kZWNzL2NuZy9hdWRpb19l
bmNvZGVyX2NuZy5oIiwKKyAgXQorCisgIGRlcHMgPSBbCisgICAgIjp3ZWJydGNfY25nIiwKKyAg
ICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKKyAgICAiLi4vLi4v
Y29tbW9uX2F1ZGlvIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQogfQogCkBAIC0xODEsMTAgKzE2
NSwxMiBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJlZCIpIHsKICAgXQogCiAgIGRlcHMgPSBbCisg
ICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczph
dWRpb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4vY29tbW9uX2F1ZGlvIiwKICAgICAiLi4vLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAg
IF0KIH0KIApAQCAtMjAxLDYgKzE4Nyw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiZzcxMSIpIHsK
ICAgZGVwcyA9IFsKICAgICAiOmxlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lIiwKICAgICAiLi4v
Li46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4v
Li4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4vcnRjX2Jh
c2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLApAQCAt
MjM1LDYgKzIyMiw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiZzcyMiIpIHsKICAgZGVwcyA9IFsK
ICAgICAiOmxlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lIiwKICAgICAiLi4vLi46d2VicnRjX2Nv
bW1vbiIsCisgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vYXBpL2F1ZGlv
X2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjcy9n
NzIyOmF1ZGlvX2VuY29kZXJfZzcyMl9jb25maWciLAogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVj
a3MiLApAQCAtMjcwLDYgKzI1OCw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiaWxiYyIpIHsKICAg
ZGVwcyA9IFsKICAgICAiOmxlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lIiwKICAgICAiLi4vLi46
d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4v
YXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4vYXBpL2F1ZGlv
X2NvZGVjcy9pbGJjOmF1ZGlvX2VuY29kZXJfaWxiY19jb25maWciLAogICAgICIuLi8uLi9jb21t
b25fYXVkaW8iLApAQCAtNzg2LDYgKzc3NSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicGNtMTZi
IikgewogICAgICI6ZzcxMSIsCiAgICAgIjpsZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZSIsCiAg
ICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAorICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAg
ICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCiAgICAgIi4uLy4u
L3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVk
IiwKQEAgLTgyMCw2ICs4MTAsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoIndlYnJ0Y19vcHVzIikg
ewogICBkZXBzID0gWwogICAgICI6YXVkaW9fbmV0d29ya19hZGFwdG9yIiwKICAgICAiLi4vLi46
d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4v
YXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4vYXBpL2F1ZGlv
X2NvZGVjcy9vcHVzOmF1ZGlvX2VuY29kZXJfb3B1c19jb25maWciLAogICAgICIuLi8uLi9jb21t
b25fYXVkaW8iLApAQCAtODI5LDYgKzgyMCw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgid2VicnRj
X29wdXMiKSB7CiAgICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAiLi4vLi4v
c3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKICAgXQogICBwdWJsaWNfZGVwcyA9IFsKQEAgLTg4Miw2ICs4NzQsNyBAQCBpZiAocnRjX2Vu
YWJsZV9wcm90b2J1ZikgewogICAgIHByb3RvX291dF9kaXIgPSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yIgogICB9CiAgIHByb3RvX2xpYnJhcnkoImFuYV9jb25m
aWdfcHJvdG8iKSB7CisgICAgdmlzaWJpbGl0eSArPSBbICIqIiBdCiAgICAgc291cmNlcyA9IFsK
ICAgICAgICJhdWRpb19uZXR3b3JrX2FkYXB0b3IvY29uZmlnLnByb3RvIiwKICAgICBdCkBAIC0x
MDMyLDggKzEwMjUsNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoIm5ldGVxIikgewogICAgICJuZXRl
cS9yYW5kb21fdmVjdG9yLmgiLAogICAgICJuZXRlcS9yZWRfcGF5bG9hZF9zcGxpdHRlci5jYyIs
CiAgICAgIm5ldGVxL3JlZF9wYXlsb2FkX3NwbGl0dGVyLmgiLAotICAgICJuZXRlcS9ydGNwLmNj
IiwKLSAgICAibmV0ZXEvcnRjcC5oIiwKICAgICAibmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9y
LmNjIiwKICAgICAibmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmgiLAogICAgICJuZXRlcS9z
eW5jX2J1ZmZlci5jYyIsCkBAIC0xMDQ4LDkgKzEwMzksMTAgQEAgcnRjX3N0YXRpY19saWJyYXJ5
KCJuZXRlcSIpIHsKIAogICBkZXBzID0gWwogICAgICI6YXVkaW9fY29kaW5nX21vZHVsZV90eXBl
ZGVmcyIsCi0gICAgIjpjbmciLAogICAgICI6bmV0ZXFfZGVjb2Rlcl9lbnVtIiwKKyAgICAiOndl
YnJ0Y19jbmciLAogICAgICIuLjptb2R1bGVfYXBpIiwKKyAgICAiLi46bW9kdWxlX2FwaV9wdWJs
aWMiLAogICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBpOmFycmF5X3Zp
ZXciLAogICAgICIuLi8uLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCkBAIC0x
MDY3LDYgKzEwNTksNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoIm5ldGVxIikgewogICAgICIuLi8u
Li9ydGNfYmFzZS9zeXN0ZW06ZmFsbHRocm91Z2giLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBl
cnM6ZmllbGRfdHJpYWwiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCisg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTExMDUs
NiArMTA5OCw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJuZXRlcV90b29sc19taW5pbWFsIikgewogICAg
ICIuLi9ydHBfcnRjcCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
Om9wdGlvbmFsIiwKICAgXQorICBkZWZpbmVzID0gYXVkaW9fY29kZWNfZGVmaW5lcwogfQogCiBy
dGNfc291cmNlX3NldCgibmV0ZXFfdGVzdF90b29scyIpIHsKQEAgLTExNDAsMTEgKzExMzQsMTEg
QEAgcnRjX3NvdXJjZV9zZXQoIm5ldGVxX3Rlc3RfdG9vbHMiKSB7CiAgICAgIi4uLy4uL3J0Y19i
YXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAiLi4vLi4v
cnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFz
ZV90ZXN0c191dGlscyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTphcmNoIiwKICAgICAi
Li4vLi4vdGVzdDpydHBfdGVzdF91dGlscyIsCiAgICAgIi4uL3J0cF9ydGNwIiwKICAgICAiLi4v
cnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiAKICAgcHVibGljX2RlcHMgPSBbCkBAIC0xMjM4
LDYgKzEyMzIsNyBAQCBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgICAgIi4uLy4uL3J0
Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi9ydHBfcnRjcCIsCiAgICAgICAi
Li4vcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgICAgXQogICAgIHB1YmxpY19kZXBzID0gWwog
ICAgICAgIi4uLy4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19wcm90byIsCkBAIC0xMjQ2LDYgKzEy
NDEsMzAgQEAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKIH0KIAogaWYgKHJ0Y19pbmNsdWRl
X3Rlc3RzKSB7CisgIGF1ZGlvX2NvZGluZ19kZXBzID0gWworICAgICIuLi8uLi9jb21tb25fYXVk
aW8iLAorICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAorICAgICIuLi8uLjp3ZWJydGNfY29t
bW9uIiwKKyAgICAiOmF1ZGlvX2VuY29kZXJfY25nIiwKKyAgICAiOmc3MTEiLAorICAgICI6Zzcy
MiIsCisgICAgIjpwY20xNmIiLAorICBdCisgIGlmIChydGNfaW5jbHVkZV9pbGJjKSB7CisgICAg
YXVkaW9fY29kaW5nX2RlcHMgKz0gWyAiOmlsYmMiIF0KKyAgfQorICBpZiAocnRjX2luY2x1ZGVf
b3B1cykgeworICAgIGF1ZGlvX2NvZGluZ19kZXBzICs9IFsgIjp3ZWJydGNfb3B1cyIgXQorICB9
CisgIGlmIChjdXJyZW50X2NwdSA9PSAiYXJtIikgeworICAgIGF1ZGlvX2NvZGluZ19kZXBzICs9
IFsgIjppc2FjX2ZpeCIgXQorICB9IGVsc2UgeworICAgIGF1ZGlvX2NvZGluZ19kZXBzICs9IFsg
Ijppc2FjIiBdCisgIH0KKyAgaWYgKCFidWlsZF93aXRoX21vemlsbGEgJiYgIWJ1aWxkX3dpdGhf
Y2hyb21pdW0pIHsKKyAgICBhdWRpb19jb2RpbmdfZGVwcyArPSBbICI6cmVkIiBdCisgIH0KKwog
ICBydGNfc291cmNlX3NldCgibW9ja3MiKSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAgICAgc291
cmNlcyA9IFsKQEAgLTEzMzAsMTAgKzEzNDksMTEgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7
CiAgICAgZGVwcyA9IFsKICAgICAgICI6YXVkaW9fY29kaW5nIiwKICAgICAgICI6YXVkaW9fY29k
aW5nX21vZHVsZV90eXBlZGVmcyIsCisgICAgICAiOmF1ZGlvX2VuY29kZXJfY25nIiwKICAgICAg
ICI6YXVkaW9fZm9ybWF0X2NvbnZlcnNpb24iLAotICAgICAgIjpjbmciLAogICAgICAgIjpwY20x
NmJfYyIsCiAgICAgICAiOnJlZCIsCisgICAgICAiOndlYnJ0Y19vcHVzX2MiLAogICAgICAgIi4u
Om1vZHVsZV9hcGkiLAogICAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICAgIi4uLy4u
L2FwaS9hdWRpbzphdWRpb19mcmFtZV9hcGkiLApAQCAtMTM1OSw2ICsxMzc5LDcgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAg
ICIuLi8uLi90ZXN0OmZpbGV1dGlscyIsCiAgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQi
LAorICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgICBdCiAg
ICAgZGVmaW5lcyA9IGF1ZGlvX2NvZGluZ19kZWZpbmVzCkBAIC0xNDE0LDYgKzE0MzUsNyBAQCBp
ZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICAgICAgICAiOm5ldGVxX3Rvb2xzIiwKICAg
ICAgICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgICAg
ICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgICAgICAgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICAgICAgICAgICIvL3Rlc3RpbmcvZ3Rl
c3QiLAogICAgICAgICAgICBdCiAgIH0KQEAgLTE0NzcsNiArMTQ5OSw3IEBAIGlmIChydGNfaW5j
bHVkZV90ZXN0cykgewogICAgICAgICAgICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06YXJjaCIs
CiAgICAgICAgICAgICAgIi4uLy4uL3Rlc3Q6dGVzdF9tYWluIiwKICAgICAgICAgICAgICAiLy90
ZXN0aW5nL2d0ZXN0IiwKKyAgICAgICAgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAog
ICAgICAgICAgICBdICsgYXVkaW9fY29kaW5nX2RlcHMKIAogICAgIGRhdGEgPSBhdWRpb19kZWNv
ZGVyX3VuaXR0ZXN0c19yZXNvdXJjZXMKQEAgLTE1MDEsNyArMTUyNCw3IEBAIGlmIChydGNfaW5j
bHVkZV90ZXN0cykgewogICAgIHJ0Y19zb3VyY2Vfc2V0KCJuZXRlcV90ZXN0X2ZhY3RvcnkiKSB7
CiAgICAgICB0ZXN0b25seSA9IHRydWUKICAgICAgIHZpc2liaWxpdHkgKz0gd2VicnRjX2RlZmF1
bHRfdmlzaWJpbGl0eQotICAgICAgZGVmaW5lcyA9IFtdCisgICAgICBkZWZpbmVzID0gYXVkaW9f
Y29kZWNfZGVmaW5lcwogICAgICAgZGVwcyA9IFsKICAgICAgICAgIi4uLy4uL3J0Y19iYXNlOmNo
ZWNrcyIsCiAgICAgICAgICIuLi8uLi90ZXN0OmZpbGV1dGlscyIsCkBAIC0xNTk0LDYgKzE2MTcs
NyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi8uLi9hcGk6bGliamluZ2xl
X3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBw
cm92ZWQiLAogICAgICAgIi4uLy4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIuLi8uLi90ZXN0
OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLi4vYXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAiLy90
ZXN0aW5nL2d0ZXN0IiwKICAgICBdCkBAIC0xNjYxLDYgKzE2ODUsNyBAQCBpZiAocnRjX2luY2x1
ZGVfdGVzdHMpIHsKICAgICBkZXBzID0gYXVkaW9fY29kaW5nX2RlcHMgKyBbCiAgICAgICAgICAg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgICAgICAgICAgICAg
IjphdWRpb19jb2RpbmciLAorICAgICAgICAgICAgICI6YXVkaW9fZW5jb2Rlcl9jbmciLAogICAg
ICAgICAgICAgICI6bmV0ZXFfaW5wdXRfYXVkaW9fdG9vbHMiLAogICAgICAgICAgICAgICIuLi8u
Li9hcGkvYXVkaW86YXVkaW9fZnJhbWVfYXBpIiwKICAgICAgICAgICAgICAiLi4vLi4vYXBpL2F1
ZGlvX2NvZGVjcy9nNzExOmF1ZGlvX2VuY29kZXJfZzcxMSIsCkBAIC0xNzU2LDcgKzE3ODEsNiBA
QCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6bmV0ZXFfdGVzdF9zdXBwb3J0IiwK
ICAgICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCi0gICAgICAiLi4vLi4vdGVzdDpmaWxldXRpbHMiLAogICAgICAgIi4u
Ly4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICBdCiAgIH0KQEAgLTE5NTYsNiArMTk4MCw3IEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNl
X2FwcHJvdmVkIiwKICAgICAgICIuLi8uLi90ZXN0OmZpbGV1dGlscyIsCiAgICAgICAiLi4vLi4v
dGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4uLy4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAg
ICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgIF0KICAgfQpAQCAtMTk2OCw4ICsxOTkzLDYgQEAgaWYg
KHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiYWNtMi9hY21fcmVjZWl2ZXJfdW5pdHRlc3Qu
Y2MiLAogICAgICAgImFjbTIvYXVkaW9fY29kaW5nX21vZHVsZV91bml0dGVzdC5jYyIsCiAgICAg
ICAiYWNtMi9jYWxsX3N0YXRpc3RpY3NfdW5pdHRlc3QuY2MiLAotICAgICAgImFjbTIvY29kZWNf
bWFuYWdlcl91bml0dGVzdC5jYyIsCi0gICAgICAiYWNtMi9yZW50X2FfY29kZWNfdW5pdHRlc3Qu
Y2MiLAogICAgICAgImF1ZGlvX25ldHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3Jf
aW1wbF91bml0dGVzdC5jYyIsCiAgICAgICAiYXVkaW9fbmV0d29ya19hZGFwdG9yL2JpdHJhdGVf
Y29udHJvbGxlcl91bml0dGVzdC5jYyIsCiAgICAgICAiYXVkaW9fbmV0d29ya19hZGFwdG9yL2No
YW5uZWxfY29udHJvbGxlcl91bml0dGVzdC5jYyIsCkBAIC0yMDQ4LDkgKzIwNzEsOSBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6YWNtX3NlbmRfdGVzdCIsCiAgICAgICAiOmF1
ZGlvX2NvZGluZyIsCiAgICAgICAiOmF1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMiLAorICAg
ICAgIjphdWRpb19lbmNvZGVyX2NuZyIsCiAgICAgICAiOmF1ZGlvX2Zvcm1hdF9jb252ZXJzaW9u
IiwKICAgICAgICI6YXVkaW9fbmV0d29ya19hZGFwdG9yIiwKLSAgICAgICI6Y25nIiwKICAgICAg
ICI6ZzcxMSIsCiAgICAgICAiOmlsYmMiLAogICAgICAgIjppc2FjIiwKQEAgLTIwNjQsNiArMjA4
Nyw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpwY20xNmIiLAogICAgICAg
IjpyZWQiLAogICAgICAgIjpyZW50X2FfY29kZWMiLAorICAgICAgIjp3ZWJydGNfY25nIiwKICAg
ICAgICI6d2VicnRjX29wdXMiLAogICAgICAgIi4uOm1vZHVsZV9hcGkiLAogICAgICAgIi4uLy4u
OndlYnJ0Y19jb21tb24iLApAQCAtMjA3OSw2ICsyMTAzLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rl
c3RzKSB7CiAgICAgICAiLi4vLi4vbG9nZ2luZzptb2NrcyIsCiAgICAgICAiLi4vLi4vbG9nZ2lu
ZzpydGNfZXZlbnRfYXVkaW8iLAogICAgICAgIi4uLy4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19h
cGkiLAorICAgICAgIi4uLy4uL21vZHVsZXMvcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAg
ICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnByb3Rv
YnVmX3V0aWxzIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZSIsCkBAIC0yMDk4LDYg
KzIxMjMsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJjb2RlY3Mvb3B1cy90
ZXN0OnRlc3RfdW5pdHRlc3QiLAogICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCiAgICAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgICAgXQogCiAgICAgZGVmaW5lcyA9
IGF1ZGlvX2NvZGluZ19kZWZpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9PV05FUlMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9P
V05FUlMKaW5kZXggYzFhZGM1NjFiODk1ZGQ4MjI0N2QzMmYzNDgxZjI0YWY0N2M3M2M4OS4uNDZm
OTk1ODY4NDJiMzkxNTFkMjBhYjdjNmY2Mzg3NmVlNThkMGM2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
T1dORVJTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL09XTkVSUwpAQCAtNCw2ICs0LDcgQEAga3dpYmVyZ0B3ZWJydGMu
b3JnCiBtaW55dWVAd2VicnRjLm9yZwogamFuLnNrb2dsdW5kQHdlYnJ0Yy5vcmcKIG9zc3VAd2Vi
cnRjLm9yZworaXZvY0B3ZWJydGMub3JnCiAKICMgVGhlc2UgYXJlIGZvciB0aGUgY29tbW9uIGNh
c2Ugb2YgYWRkaW5nIG9yIHJlbmFtaW5nIGZpbGVzLiBJZiB5b3UncmUgZG9pbmcKICMgc3RydWN0
dXJhbCBjaGFuZ2VzLCBwbGVhc2UgZ2V0IGEgcmV2aWV3IGZyb20gYSByZXZpZXdlciBpbiB0aGlz
IGZpbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9jb2RlY19kYXRhYmFzZS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2FjbTIvYWNtX2NvZGVjX2RhdGFiYXNlLmNjCmluZGV4IDMxMWFmMmRmM2ZmNmU5NGZkNTkz
M2YyOWVlMTlhMTg1MTA2NWViMTQuLmNhZGE4MGMwNjE4ODQzODlhMWRhYTA0MjQ5MDk5YTJlOGM0
YjNhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX2NvZGVjX2RhdGFiYXNlLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2FjbTIvYWNtX2NvZGVjX2RhdGFiYXNlLmNjCkBAIC0xNyw3ICsxNyw5IEBACiAvLyBy
ZWZlcmVuY2VzLCB3aGVyZSBhcHByb3ByaWF0ZS4KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9hY20yL2FjbV9jb2RlY19kYXRhYmFzZS5oIgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCisjaW5jbHVkZSAiYXBpL2Fy
cmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9j
b2RlYy5oIgogCiAjaWYgKChkZWZpbmVkIFdFQlJUQ19DT0RFQ19JU0FDKSAmJiAoZGVmaW5lZCBX
RUJSVENfQ09ERUNfSVNBQ0ZYKSkKICNlcnJvciBpU0FDIGFuZCBpU0FDRlggY29kZWNzIGNhbm5v
dCBiZSBlbmFibGVkIGF0IHRoZSBzYW1lIHRpbWUKQEAgLTIzOSwxMiArMjQxLDEyIEBAIGludCBB
Q01Db2RlY0RCOjpDb2RlY051bWJlcihjb25zdCBDb2RlY0luc3QmIGNvZGVjX2luc3QpIHsKICAg
fQogCiAgIC8vIENvbWZvcnQgTm9pc2UgaXMgc3BlY2lhbCBjYXNlLCBwYWNrZXQtc2l6ZSAmIHJh
dGUgaXMgbm90IGNoZWNrZWQuCi0gIGlmIChTVFJfQ0FTRV9DTVAoZGF0YWJhc2VfW2NvZGVjX2lk
XS5wbG5hbWUsICJDTiIpID09IDApIHsKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZGF0
YWJhc2VfW2NvZGVjX2lkXS5wbG5hbWUsICJDTiIpKSB7CiAgICAgcmV0dXJuIGNvZGVjX2lkOwog
ICB9CiAKICAgLy8gUkVEIGlzIHNwZWNpYWwgY2FzZSwgcGFja2V0LXNpemUgJiByYXRlIGlzIG5v
dCBjaGVja2VkLgotICBpZiAoU1RSX0NBU0VfQ01QKGRhdGFiYXNlX1tjb2RlY19pZF0ucGxuYW1l
LCAicmVkIikgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShkYXRhYmFzZV9b
Y29kZWNfaWRdLnBsbmFtZSwgInJlZCIpKSB7CiAgICAgcmV0dXJuIGNvZGVjX2lkOwogICB9CiAK
QEAgLTI3MiwxMiArMjc0LDEyIEBAIGludCBBQ01Db2RlY0RCOjpDb2RlY051bWJlcihjb25zdCBD
b2RlY0luc3QmIGNvZGVjX2luc3QpIHsKIAogICAvLyBDaGVjayB0aGUgdmFsaWRpdHkgb2YgcmF0
ZS4gQ29kZWNzIHdpdGggbXVsdGlwbGUgcmF0ZXMgaGF2ZSB0aGVpciBvd24KICAgLy8gZnVuY3Rp
b24gZm9yIHRoaXMuCi0gIGlmIChTVFJfQ0FTRV9DTVAoImlzYWMiLCBjb2RlY19pbnN0LnBsbmFt
ZSkgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZSgiaXNhYyIsIGNvZGVjX2lu
c3QucGxuYW1lKSkgewogICAgIHJldHVybiBJc0lTQUNSYXRlVmFsaWQoY29kZWNfaW5zdC5yYXRl
KSA/IGNvZGVjX2lkIDoga0ludmFsaWRSYXRlOwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUCgi
aWxiYyIsIGNvZGVjX2luc3QucGxuYW1lKSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZSgiaWxiYyIsIGNvZGVjX2luc3QucGxuYW1lKSkgewogICAgIHJldHVybiBJ
c0lMQkNSYXRlVmFsaWQoY29kZWNfaW5zdC5yYXRlLCBjb2RlY19pbnN0LnBhY3NpemUpID8gY29k
ZWNfaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IGtJbnZhbGlkUmF0ZTsKLSAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAo
Im9wdXMiLCBjb2RlY19pbnN0LnBsbmFtZSkgPT0gMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVx
dWFsc0lnbm9yZUNhc2UoIm9wdXMiLCBjb2RlY19pbnN0LnBsbmFtZSkpIHsKICAgICByZXR1cm4g
SXNPcHVzUmF0ZVZhbGlkKGNvZGVjX2luc3QucmF0ZSkgPyBjb2RlY19pZCA6IGtJbnZhbGlkUmF0
ZTsKICAgfQogCkBAIC0yOTYsNyArMjk4LDcgQEAgaW50IEFDTUNvZGVjREI6OkNvZGVjSWQoY29u
c3QgQ29kZWNJbnN0JiBjb2RlY19pbnN0KSB7CiBpbnQgQUNNQ29kZWNEQjo6Q29kZWNJZChjb25z
dCBjaGFyKiBwYXlsb2FkX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJlcXVl
bmN5LAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNoYW5uZWxzKSB7Ci0gIGZvciAo
Y29uc3QgQ29kZWNJbnN0JiBjaSA6IFJlbnRBQ29kZWM6OkRhdGFiYXNlKCkpIHsKKyAgZm9yIChj
b25zdCBDb2RlY0luc3QmIGNpIDogZGF0YWJhc2VfKSB7CiAgICAgYm9vbCBuYW1lX21hdGNoID0g
ZmFsc2U7CiAgICAgYm9vbCBmcmVxdWVuY3lfbWF0Y2ggPSBmYWxzZTsKICAgICBib29sIGNoYW5u
ZWxzX21hdGNoID0gZmFsc2U7CkBAIC0zMDQsMTAgKzMwNiwxMCBAQCBpbnQgQUNNQ29kZWNEQjo6
Q29kZWNJZChjb25zdCBjaGFyKiBwYXlsb2FkX25hbWUsCiAgICAgLy8gUGF5bG9hZCBuYW1lLCBz
YW1wbGluZyBmcmVxdWVuY3kgYW5kIG51bWJlciBvZiBjaGFubmVscyBuZWVkIHRvIG1hdGNoLgog
ICAgIC8vIE5PVEUhIElmIHxmcmVxdWVuY3l8IGlzIC0xLCB0aGUgZnJlcXVlbmN5IGlzIG5vdCBh
cHBsaWNhYmxlLCBhbmQgaXMKICAgICAvLyBhbHdheXMgdHJlYXRlZCBhcyB0cnVlLCBsaWtlIGZv
ciBSRUQuCi0gICAgbmFtZV9tYXRjaCA9IChTVFJfQ0FTRV9DTVAoY2kucGxuYW1lLCBwYXlsb2Fk
X25hbWUpID09IDApOworICAgIG5hbWVfbWF0Y2ggPSBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNp
LnBsbmFtZSwgcGF5bG9hZF9uYW1lKTsKICAgICBmcmVxdWVuY3lfbWF0Y2ggPSAoZnJlcXVlbmN5
ID09IGNpLnBsZnJlcSkgfHwgKGZyZXF1ZW5jeSA9PSAtMSk7CiAgICAgLy8gVGhlIG51bWJlciBv
ZiBjaGFubmVscyBtdXN0IG1hdGNoIGZvciBhbGwgY29kZWNzIGJ1dCBPcHVzLgotICAgIGlmIChT
VFJfQ0FTRV9DTVAocGF5bG9hZF9uYW1lLCAib3B1cyIpICE9IDApIHsKKyAgICBpZiAoIWFic2w6
OkVxdWFsc0lnbm9yZUNhc2UocGF5bG9hZF9uYW1lLCAib3B1cyIpKSB7CiAgICAgICBjaGFubmVs
c19tYXRjaCA9IChjaGFubmVscyA9PSBjaS5jaGFubmVscyk7CiAgICAgfSBlbHNlIHsKICAgICAg
IC8vIEZvciBvcHVzIHdlIGp1c3QgY2hlY2sgdGhhdCBudW1iZXIgb2YgY2hhbm5lbHMgaXMgdmFs
aWQuCkBAIC0zMTYsNyArMzE4LDcgQEAgaW50IEFDTUNvZGVjREI6OkNvZGVjSWQoY29uc3QgY2hh
ciogcGF5bG9hZF9uYW1lLAogCiAgICAgaWYgKG5hbWVfbWF0Y2ggJiYgZnJlcXVlbmN5X21hdGNo
ICYmIGNoYW5uZWxzX21hdGNoKSB7CiAgICAgICAvLyBXZSBoYXZlIGZvdW5kIGEgbWF0Y2hpbmcg
Y29kZWMgaW4gdGhlIGxpc3QuCi0gICAgICByZXR1cm4gJmNpIC0gUmVudEFDb2RlYzo6RGF0YWJh
c2UoKS5kYXRhKCk7CisgICAgICByZXR1cm4gJmNpIC0gZGF0YWJhc2VfOwogICAgIH0KICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20y
L2FjbV9yZWNlaXZlX3Rlc3QuY2MKaW5kZXggMmQ3ZjI5NjBkZTU4OWJkYTRkOTM1YWMzMzI5NGE2
ZTU5ZjYxOWZhNS4uYzE0OWVjMWIwYmMyMWRlZmU5YWQzMGNjOGZiNzEzOGVlNmQ0MzhlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIv
YWNtX3JlY2VpdmVfdGVzdC5jYwpAQCAtMTQsNiArMTQsNyBAQAogCiAjaW5jbHVkZSA8bWVtb3J5
PgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlv
X2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9hdWRpb19mb3JtYXRfY29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oIgpA
QCAtMzAsMTEgKzMxLDExIEBAIG5hbWVzcGFjZSB7CiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNv
ZGVjIHNob3VsZCBiZSByZWdpc3RlcmVkLCBvdGhlcndpc2UgZmFsc2UuIENoYW5nZXMKIC8vIHRo
ZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRoZSBPcHVzIGNvZGVjIHRvIGFsd2F5cyBiZSAxLgog
Ym9vbCBNb2RpZnlBbmRVc2VUaGlzQ29kZWMoQ29kZWNJbnN0KiBjb2RlY19wYXJhbSkgewotICBp
ZiAoU1RSX0NBU0VfQ01QKGNvZGVjX3BhcmFtLT5wbG5hbWUsICJDTiIpID09IDAgJiYKKyAgaWYg
KGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWNfcGFyYW0tPnBsbmFtZSwgIkNOIikgJiYKICAg
ICAgIGNvZGVjX3BhcmFtLT5wbGZyZXEgPT0gNDgwMDApCiAgICAgcmV0dXJuIGZhbHNlOyAgLy8g
U2tpcCA0OCBrSHogY29tZm9ydCBub2lzZS4KIAotICBpZiAoU1RSX0NBU0VfQ01QKGNvZGVjX3Bh
cmFtLT5wbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSA9PSAwKQorICBpZiAoYWJzbDo6RXF1YWxz
SWdub3JlQ2FzZShjb2RlY19wYXJhbS0+cGxuYW1lLCAidGVsZXBob25lLWV2ZW50IikpCiAgICAg
cmV0dXJuIGZhbHNlOyAgLy8gU2tpcCBEVEZNLgogCiAgIHJldHVybiB0cnVlOwpAQCAtNjUsMzkg
KzY2LDQzIEBAIGJvb2wgUmVtYXBQbHR5cGVBbmRVc2VUaGlzQ29kZWMoY29uc3QgY2hhciogcGxu
YW1lLAogICAgIHJldHVybiBmYWxzZTsgIC8vIERvbid0IHVzZSBub24tbW9ubyBjb2RlY3MuCiAK
ICAgLy8gUmUtbWFwIHBsdHlwZXMgdG8gdGhvc2UgdXNlZCBpbiB0aGUgTmV0RXEgdGVzdCBmaWxl
cy4KLSAgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJQQ01VIikgPT0gMCAmJiBwbGZyZXEgPT0g
ODAwMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJQQ01VIikgJiYg
cGxmcmVxID09IDgwMDApIHsKICAgICAqcGx0eXBlID0gMDsKLSAgfSBlbHNlIGlmIChTVFJfQ0FT
RV9DTVAocGxuYW1lLCAiUENNQSIpID09IDAgJiYgcGxmcmVxID09IDgwMDApIHsKKyAgfSBlbHNl
IGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgIlBDTUEiKSAmJiBwbGZyZXEgPT0g
ODAwMCkgewogICAgICpwbHR5cGUgPSA4OwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5h
bWUsICJDTiIpID09IDAgJiYgcGxmcmVxID09IDgwMDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgIkNOIikgJiYgcGxmcmVxID09IDgwMDApIHsKICAgICAq
cGx0eXBlID0gMTM7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgIkNOIikgPT0g
MCAmJiBwbGZyZXEgPT0gMTYwMDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVD
YXNlKHBsbmFtZSwgIkNOIikgJiYgcGxmcmVxID09IDE2MDAwKSB7CiAgICAgKnBsdHlwZSA9IDk4
OwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJDTiIpID09IDAgJiYgcGxmcmVx
ID09IDMyMDAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUs
ICJDTiIpICYmIHBsZnJlcSA9PSAzMjAwMCkgewogICAgICpwbHR5cGUgPSA5OTsKLSAgfSBlbHNl
IGlmIChTVFJfQ0FTRV9DTVAocGxuYW1lLCAiSUxCQyIpID09IDApIHsKKyAgfSBlbHNlIGlmIChh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgIklMQkMiKSkgewogICAgICpwbHR5cGUgPSAx
MDI7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgIklTQUMiKSA9PSAwICYmIHBs
ZnJlcSA9PSAxNjAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxu
YW1lLCAiSVNBQyIpICYmIHBsZnJlcSA9PSAxNjAwMCkgewogICAgICpwbHR5cGUgPSAxMDM7Ci0g
IH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgIklTQUMiKSA9PSAwICYmIHBsZnJlcSA9
PSAzMjAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAi
SVNBQyIpICYmIHBsZnJlcSA9PSAzMjAwMCkgewogICAgICpwbHR5cGUgPSAxMDQ7Ci0gIH0gZWxz
ZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgInRlbGVwaG9uZS1ldmVudCIpID09IDAgJiYgcGxm
cmVxID09IDgwMDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFt
ZSwgInRlbGVwaG9uZS1ldmVudCIpICYmCisgICAgICAgICAgICAgcGxmcmVxID09IDgwMDApIHsK
ICAgICAqcGx0eXBlID0gMTA2OwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJ0
ZWxlcGhvbmUtZXZlbnQiKSA9PSAwICYmIHBsZnJlcSA9PSAxNjAwMCkgeworICB9IGVsc2UgaWYg
KGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAidGVsZXBob25lLWV2ZW50IikgJiYKKyAg
ICAgICAgICAgICBwbGZyZXEgPT0gMTYwMDApIHsKICAgICAqcGx0eXBlID0gMTE0OwotICB9IGVs
c2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSA9PSAwICYmIHBs
ZnJlcSA9PSAzMjAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxu
YW1lLCAidGVsZXBob25lLWV2ZW50IikgJiYKKyAgICAgICAgICAgICBwbGZyZXEgPT0gMzIwMDAp
IHsKICAgICAqcGx0eXBlID0gMTE1OwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUs
ICJ0ZWxlcGhvbmUtZXZlbnQiKSA9PSAwICYmIHBsZnJlcSA9PSA0ODAwMCkgeworICB9IGVsc2Ug
aWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAidGVsZXBob25lLWV2ZW50IikgJiYK
KyAgICAgICAgICAgICBwbGZyZXEgPT0gNDgwMDApIHsKICAgICAqcGx0eXBlID0gMTE2OwotICB9
IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJyZWQiKSA9PSAwKSB7CisgIH0gZWxzZSBp
ZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJyZWQiKSkgewogICAgICpwbHR5cGUg
PSAxMTc7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgIkwxNiIpID09IDAgJiYg
cGxmcmVxID09IDgwMDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBs
bmFtZSwgIkwxNiIpICYmIHBsZnJlcSA9PSA4MDAwKSB7CiAgICAgKnBsdHlwZSA9IDkzOwotICB9
IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJMMTYiKSA9PSAwICYmIHBsZnJlcSA9PSAx
NjAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAiTDE2
IikgJiYgcGxmcmVxID09IDE2MDAwKSB7CiAgICAgKnBsdHlwZSA9IDk0OwotICB9IGVsc2UgaWYg
KFNUUl9DQVNFX0NNUChwbG5hbWUsICJMMTYiKSA9PSAwICYmIHBsZnJlcSA9PSAzMjAwMCkgewor
ICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAiTDE2IikgJiYgcGxm
cmVxID09IDMyMDAwKSB7CiAgICAgKnBsdHlwZSA9IDk1OwotICB9IGVsc2UgaWYgKFNUUl9DQVNF
X0NNUChwbG5hbWUsICJHNzIyIikgPT0gMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UocGxuYW1lLCAiRzcyMiIpKSB7CiAgICAgKnBsdHlwZSA9IDk7CiAgIH0gZWxzZSB7
CiAgICAgLy8gRG9uJ3QgdXNlIGFueSBvdGhlciBjb2RlY3MuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9h
Y20yL2FjbV9yZWNlaXZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVyLmNjCmluZGV4IGY2
MzE3NDZiODhmNGJmYjhlNTBiYWFkYmQzNmUyOTUwZTJlNDNmZGIuLmQzYWY3YzAzNDE4ODUxYTE2
YzQ5YmZjMzI1NGNhY2IyYWIzZDBiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2Vp
dmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVyLmNjCkBAIC0xMCwyMSArMTAsMjEg
QEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVyLmgi
CiAKLSNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIG1hbGxvYwotCi0jaW5jbHVkZSA8YWxnb3JpdGht
PiAgLy8gc29ydAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lu
Y2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL21hdGNoLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2ZyYW1lLmgiCiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCi0jaW5jbHVkZSAiY29tbW9uX2F1
ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5o
IgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVzYW1wbGVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jYWxsX3N0YXRpc3RpY3MuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9kZWNvZGVyX2VudW0uaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2Fm
ZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3MvYXVkaW9fZm9ybWF0
X3RvX3N0cmluZy5oIgpAQCAtOTIsNyArOTIsNyBAQCBpbnQgQWNtUmVjZWl2ZXI6Okluc2VydFBh
Y2tldChjb25zdCBXZWJSdGNSVFBIZWFkZXImIHJ0cF9oZWFkZXIsCiAgICAgfQogICAgIHJlY2Vp
dmVfdGltZXN0YW1wID0gTm93SW5UaW1lc3RhbXAoY2ktPnBsZnJlcSk7CiAKLSAgICBpZiAoU1RS
X0NBU0VfQ01QKGNpLT5wbG5hbWUsICJjbiIpID09IDApIHsKKyAgICBpZiAoYWJzbDo6RXF1YWxz
SWdub3JlQ2FzZShjaS0+cGxuYW1lLCAiY24iKSkgewogICAgICAgaWYgKGxhc3RfYXVkaW9fZGVj
b2Rlcl8gJiYgbGFzdF9hdWRpb19kZWNvZGVyXy0+Y2hhbm5lbHMgPiAxKSB7CiAgICAgICAgIC8v
IFRoaXMgaXMgYSBDTkcgYW5kIHRoZSBhdWRpbyBjb2RlYyBpcyBub3QgbW9ubywgc28gc2tpcCBw
dXNoaW5nIGluCiAgICAgICAgIC8vIHBhY2tldHMgaW50byBOZXRFcS4KQEAgLTM0NSw2ICszNDUs
MTMgQEAgdm9pZCBBY21SZWNlaXZlcjo6R2V0TmV0d29ya1N0YXRpc3RpY3MoTmV0d29ya1N0YXRp
c3RpY3MqIGFjbV9zdGF0KSB7CiAgIGFjbV9zdGF0LT5jb25jZWFsZWRTYW1wbGVzID0gbmV0ZXFf
bGlmZXRpbWVfc3RhdC5jb25jZWFsZWRfc2FtcGxlczsKICAgYWNtX3N0YXQtPmNvbmNlYWxtZW50
RXZlbnRzID0gbmV0ZXFfbGlmZXRpbWVfc3RhdC5jb25jZWFsbWVudF9ldmVudHM7CiAgIGFjbV9z
dGF0LT5qaXR0ZXJCdWZmZXJEZWxheU1zID0gbmV0ZXFfbGlmZXRpbWVfc3RhdC5qaXR0ZXJfYnVm
ZmVyX2RlbGF5X21zOworICBhY21fc3RhdC0+ZGVsYXllZFBhY2tldE91dGFnZVNhbXBsZXMgPQor
ICAgICAgbmV0ZXFfbGlmZXRpbWVfc3RhdC5kZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlczsK
KworICBOZXRFcU9wZXJhdGlvbnNBbmRTdGF0ZSBuZXRlcV9vcGVyYXRpb25zX2FuZF9zdGF0ZSA9
CisgICAgICBuZXRlcV8tPkdldE9wZXJhdGlvbnNBbmRTdGF0ZSgpOworICBhY21fc3RhdC0+cGFj
a2V0QnVmZmVyRmx1c2hlcyA9CisgICAgICBuZXRlcV9vcGVyYXRpb25zX2FuZF9zdGF0ZS5wYWNr
ZXRfYnVmZmVyX2ZsdXNoZXM7CiB9CiAKIGludCBBY21SZWNlaXZlcjo6RGVjb2RlckJ5UGF5bG9h
ZFR5cGUodWludDhfdCBwYXlsb2FkX3R5cGUsCkBAIC0zOTEsNyArMzk4LDcgQEAgY29uc3QgYWJz
bDo6b3B0aW9uYWw8Q29kZWNJbnN0PiBBY21SZWNlaXZlcjo6UnRwSGVhZGVyVG9EZWNvZGVyKAog
ICAgIHVpbnQ4X3QgZmlyc3RfcGF5bG9hZF9ieXRlKSBjb25zdCB7CiAgIGNvbnN0IGFic2w6Om9w
dGlvbmFsPENvZGVjSW5zdD4gY2kgPQogICAgICAgbmV0ZXFfLT5HZXREZWNvZGVyKHJ0cF9oZWFk
ZXIucGF5bG9hZFR5cGUpOwotICBpZiAoY2kgJiYgU1RSX0NBU0VfQ01QKGNpLT5wbG5hbWUsICJy
ZWQiKSA9PSAwKSB7CisgIGlmIChjaSAmJiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNpLT5wbG5h
bWUsICJyZWQiKSkgewogICAgIC8vIFRoaXMgaXMgYSBSRUQgcGFja2V0LiBHZXQgdGhlIHBheWxv
YWQgb2YgdGhlIGF1ZGlvIGNvZGVjLgogICAgIHJldHVybiBuZXRlcV8tPkdldERlY29kZXIoZmly
c3RfcGF5bG9hZF9ieXRlICYgMHg3Zik7CiAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9h
Y20yL2FjbV9yZWNlaXZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuaAppbmRleCBhMmFl
NzIzZGVlZTZhY2RiYzdmNDNmZjJmMzIyYzhmZmU3YzQyNDhkLi44ZTdkODM5NzhjMGQ3YTEzYTM5
YjYyYjkyMTljZDRiNGUzMGEzMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZl
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNp
Zm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQUNNMl9BQ01fUkVDRUlWRVJfSF8KICNkZWZpbmUg
TU9EVUxFU19BVURJT19DT0RJTkdfQUNNMl9BQ01fUkVDRUlWRVJfSF8KIAorI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3Ry
aW5nPgpAQCAtMTgsMTkgKzE5LDIxIEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFs
LmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW8vYXVk
aW9fZnJhbWUuaCIKLSNpbmNsdWRlICJjb21tb25fYXVkaW8vdmFkL2luY2x1ZGUvd2VicnRjX3Zh
ZC5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oIgorI2luY2x1
ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvYWNtMi9hY21fcmVzYW1wbGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvYWNtMi9jYWxsX3N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGUuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9pbmNsdWRlL25ldGVxLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25z
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBDbG9jazsKIHN0cnVjdCBDb2RlY0lu
c3Q7CiBjbGFzcyBOZXRFcTsKK3N0cnVjdCBSVFBIZWFkZXI7CitzdHJ1Y3QgV2ViUnRjUlRQSGVh
ZGVyOwogCiBuYW1lc3BhY2UgYWNtMiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jl
Y2VpdmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXJfdW5pdHRlc3QuY2MK
aW5kZXggMjlmMmE0NTY2OWIzZDk5ZjIxZWRjMDQwMmQxNmMxZmVkMGJlMWYxMS4uNDYzODRmZWJi
NTc0OWY0NWQwZWQyZGM3MTU1M2U5NDQ0MDkzOTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9h
Y21fcmVjZWl2ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXJfdW5p
dHRlc3QuY2MKQEAgLTczLDEyICs3MywxMiBAQCBjbGFzcyBBY21SZWNlaXZlclRlc3RPbGRBcGkg
OiBwdWJsaWMgQXVkaW9QYWNrZXRpemF0aW9uQ2FsbGJhY2ssCiAgICAgLy8gSWYgd2UgaGF2ZSBh
IGNvbXBhdGlibGUgQ04gc3BlY2lmaWNhdGlvbiwgc3RhY2sgYSBDTkcgb24gdG9wLgogICAgIGF1
dG8gaXQgPSBjbmdfcGF5bG9hZF90eXBlcy5maW5kKGluZm8uc2FtcGxlX3JhdGVfaHopOwogICAg
IGlmIChpdCAhPSBjbmdfcGF5bG9hZF90eXBlcy5lbmQoKSkgewotICAgICAgQXVkaW9FbmNvZGVy
Q25nOjpDb25maWcgY29uZmlnOworICAgICAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnIGNvbmZpZzsK
ICAgICAgIGNvbmZpZy5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShlbmMpOwogICAgICAgY29u
ZmlnLm51bV9jaGFubmVscyA9IDE7CiAgICAgICBjb25maWcucGF5bG9hZF90eXBlID0gaXQtPnNl
Y29uZDsKICAgICAgIGNvbmZpZy52YWRfbW9kZSA9IFZhZDo6a1ZhZE5vcm1hbDsKLSAgICAgIGVu
YyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlckNuZz4oc3RkOjptb3ZlKGNvbmZpZykp
OworICAgICAgZW5jID0gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2RlcihzdGQ6Om1vdmUoY29uZmln
KSk7CiAgICAgfQogCiAgICAgLy8gQWN0dWFsbHkgc3RhcnQgdXNpbmcgdGhlIG5ldyBlbmNvZGVy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVzYW1wbGVyLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9h
Y21fcmVzYW1wbGVyLmNjCmluZGV4IGMwYjIwNjQ0NTM3NTljZDRmZGJmMTY3YjFhZGM1YjMyNDA3
Y2I0YjAuLmNhMzU4M2UzMmNkZWE0NjRiOTk0NmM2YWI5YzhjNWZlNWMzNzRjNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2FjbTIvYWNtX3Jlc2FtcGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNh
bXBsZXIuY2MKQEAgLTEzLDcgKzEzLDYgQEAKICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRl
IDxzdHJpbmcuaD4KIAotI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yZXNhbXBsZXIvaW5jbHVkZS9y
ZXNhbXBsZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVzYW1wbGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9h
Y20yL2FjbV9yZXNhbXBsZXIuaAppbmRleCA5MDRlYTUyNGY4ODM5YTYwNGRhOGEzODZmN2FhNTI0
NzQ1N2FkZjgzLi45NmJhOTNhNzYyMjk5NWNlOWFjYTMxNWJmNWFhYWQ5MzQ5NGJkNmUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9y
ZXNhbXBsZXIuaApAQCAtMTEsNiArMTEsOSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElO
R19BQ00yX0FDTV9SRVNBTVBMRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfQUNN
Ml9BQ01fUkVTQU1QTEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRp
bnQuaD4KKwogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yZXNhbXBsZXIvaW5jbHVkZS9wdXNoX3Jl
c2FtcGxlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIv
YXVkaW9fY29kaW5nX21vZHVsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYXVkaW9fY29kaW5nX21vZHVsZS5j
YwppbmRleCA2MGFmZWI2OWJkZWQzOWNmYzM3ZjI0ZmMzZjc1MTA1MzljOWJjYzEyLi5jMGFhYjNh
MzBmYTUzOWEzYmI5MGVhOGIxMzBmZGIwMjdmNTdjYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20y
L2F1ZGlvX2NvZGluZ19tb2R1bGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hdWRpb19jb2RpbmdfbW9k
dWxlLmNjCkBAIC0xMCwyOCArMTAsMjkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oIgogCisjaW5jbHVkZSA8YXNzZXJ0Lmg+
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVzYW1wbGVyLmgiCi0jaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jb2RlY19tYW5hZ2VyLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuaCIKICNpbmNsdWRlICJtb2R1bGVzL2lu
Y2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9t
b2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRp
Y2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
dGhyZWFkX2Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
bWV0cmljcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogbmFtZXNwYWNlIHsKIAotc3RydWN0
IEVuY29kZXJGYWN0b3J5IHsKLSAgQXVkaW9FbmNvZGVyKiBleHRlcm5hbF9zcGVlY2hfZW5jb2Rl
ciA9IG51bGxwdHI7Ci0gIGFjbTI6OkNvZGVjTWFuYWdlciBjb2RlY19tYW5hZ2VyOwotICBhY20y
OjpSZW50QUNvZGVjIHJlbnRfYV9jb2RlYzsKLX07Ci0KIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxl
SW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0NvZGluZ01vZHVsZSB7CiAgcHVibGljOgogICBleHBs
aWNpdCBBdWRpb0NvZGluZ01vZHVsZUltcGwoY29uc3QgQXVkaW9Db2RpbmdNb2R1bGU6OkNvbmZp
ZyYgY29uZmlnKTsKQEAgLTQxLDEyICs0Miw2IEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlSW1w
bCBmaW5hbCA6IHB1YmxpYyBBdWRpb0NvZGluZ01vZHVsZSB7CiAgIC8vICAgU2VuZGVyCiAgIC8v
CiAKLSAgLy8gQ2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBmb3IgQ29kZWMsIENORywgUkVE
LgotICBpbnQgUmVnaXN0ZXJTZW5kQ29kZWMoY29uc3QgQ29kZWNJbnN0JiBzZW5kX2NvZGVjKSBv
dmVycmlkZTsKLQotICB2b2lkIFJlZ2lzdGVyRXh0ZXJuYWxTZW5kQ29kZWMoCi0gICAgICBBdWRp
b0VuY29kZXIqIGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyKSBvdmVycmlkZTsKLQogICB2b2lkIE1v
ZGlmeUVuY29kZXIocnRjOjpGdW5jdGlvblZpZXc8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9F
bmNvZGVyPiopPgogICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyKSBvdmVycmlkZTsK
IApAQCAtNjUsMjYgKzYwLDEwIEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbCBmaW5hbCA6
IHB1YmxpYyBBdWRpb0NvZGluZ01vZHVsZSB7CiAgIC8vIEFkZCAxMCBtcyBvZiByYXcgKFBDTSkg
YXVkaW8gZGF0YSB0byB0aGUgZW5jb2Rlci4KICAgaW50IEFkZDEwTXNEYXRhKGNvbnN0IEF1ZGlv
RnJhbWUmIGF1ZGlvX2ZyYW1lKSBvdmVycmlkZTsKIAotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotICAvLyAoUkVEKSBSZWR1bmRhbnQgQ29kaW5nCi0gIC8vCi0K
LSAgLy8gQ29uZmlndXJlIFJFRCBzdGF0dXMgaS5lLiBvbi9vZmYuCi0gIGludCBTZXRSRURTdGF0
dXMoYm9vbCBlbmFibGVfcmVkKSBvdmVycmlkZTsKLQotICAvLyBHZXQgUkVEIHN0YXR1cy4KLSAg
Ym9vbCBSRURTdGF0dXMoKSBjb25zdCBvdmVycmlkZTsKLQogICAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAvLyAoRkVDKSBGb3J3YXJkIEVycm9yIENvcnJlY3Rp
b24gKGNvZGVjIGludGVybmFsKQogICAvLwogCi0gIC8vIENvbmZpZ3VyZSBGRUMgc3RhdHVzIGku
ZS4gb24vb2ZmLgotICBpbnQgU2V0Q29kZWNGRUMoYm9vbCBlbmFibGVkX2NvZGVjX2ZlYykgb3Zl
cnJpZGU7Ci0KLSAgLy8gR2V0IEZFQyBzdGF0dXMuCi0gIGJvb2wgQ29kZWNGRUMoKSBjb25zdCBv
dmVycmlkZTsKLQogICAvLyBTZXQgdGFyZ2V0IHBhY2tldCBsb3NzIHJhdGUKICAgaW50IFNldFBh
Y2tldExvc3NSYXRlKGludCBsb3NzX3JhdGUpIG92ZXJyaWRlOwogCkBAIC05NCwxNCArNzMsNiBA
QCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZUltcGwgZmluYWwgOiBwdWJsaWMgQXVkaW9Db2RpbmdN
b2R1bGUgewogICAvLyAgIChDTkcpIENvbWZvcnQgTm9pc2UgR2VuZXJhdGlvbgogICAvLwogCi0g
IGludCBTZXRWQUQoYm9vbCBlbmFibGVfZHR4ID0gdHJ1ZSwKLSAgICAgICAgICAgICBib29sIGVu
YWJsZV92YWQgPSBmYWxzZSwKLSAgICAgICAgICAgICBBQ01WQURNb2RlIG1vZGUgPSBWQUROb3Jt
YWwpIG92ZXJyaWRlOwotCi0gIGludCBWQUQoYm9vbCogZHR4X2VuYWJsZWQsCi0gICAgICAgICAg
Ym9vbCogdmFkX2VuYWJsZWQsCi0gICAgICAgICAgQUNNVkFETW9kZSogbW9kZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0KICAgaW50IFJlZ2lzdGVyVkFEQ2FsbGJhY2soQUNNVkFEQ2FsbGJhY2sqIHZhZF9j
YWxsYmFjaykgb3ZlcnJpZGU7CiAKICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KQEAgLTEyMiwxMSArOTMsNiBAQCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZUltcGwg
ZmluYWwgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGUgewogICBib29sIFJlZ2lzdGVyUmVjZWl2
ZUNvZGVjKGludCBydHBfcGF5bG9hZF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBhdWRpb19mb3JtYXQpIG92ZXJyaWRlOwogCi0gIGludCBS
ZWdpc3RlclJlY2VpdmVDb2RlYyhjb25zdCBDb2RlY0luc3QmIHJlY2VpdmVfY29kZWMpIG92ZXJy
aWRlOwotICBpbnQgUmVnaXN0ZXJSZWNlaXZlQ29kZWMoCi0gICAgICBjb25zdCBDb2RlY0luc3Qm
IHJlY2VpdmVfY29kZWMsCi0gICAgICBydGM6OkZ1bmN0aW9uVmlldzxzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9EZWNvZGVyPigpPiBpc2FjX2ZhY3RvcnkpIG92ZXJyaWRlOwotCiAgIGludCBSZWdpc3Rl
ckV4dGVybmFsUmVjZWl2ZUNvZGVjKGludCBydHBfcGF5bG9hZF90eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0RlY29kZXIqIGV4dGVybmFsX2RlY29kZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKQEAg
LTIxNCwxMSArMTgwLDYgQEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGVJbXBsIGZpbmFsIDogcHVi
bGljIEF1ZGlvQ29kaW5nTW9kdWxlIHsKICAgICBjb25zdCBzdGQ6OnN0cmluZyBoaXN0b2dyYW1f
bmFtZV87CiAgIH07CiAKLSAgaW50IFJlZ2lzdGVyUmVjZWl2ZUNvZGVjVW5sb2NrZWQoCi0gICAg
ICBjb25zdCBDb2RlY0luc3QmIGNvZGVjLAotICAgICAgcnRjOjpGdW5jdGlvblZpZXc8c3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4oKT4gaXNhY19mYWN0b3J5KQotICAgICAgUlRDX0VYQ0xV
U0lWRV9MT0NLU19SRVFVSVJFRChhY21fY3JpdF9zZWN0Xyk7Ci0KICAgaW50IEFkZDEwTXNEYXRh
SW50ZXJuYWwoY29uc3QgQXVkaW9GcmFtZSYgYXVkaW9fZnJhbWUsIElucHV0RGF0YSogaW5wdXRf
ZGF0YSkKICAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoYWNtX2NyaXRfc2VjdF8p
OwogICBpbnQgRW5jb2RlKGNvbnN0IElucHV0RGF0YSYgaW5wdXRfZGF0YSkKQEAgLTI1NiwxMiAr
MjE3LDcgQEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGVJbXBsIGZpbmFsIDogcHVibGljIEF1ZGlv
Q29kaW5nTW9kdWxlIHsKICAgYWNtMjo6QWNtUmVjZWl2ZXIgcmVjZWl2ZXJfOyAgLy8gQWNtUmVj
ZWl2ZXIgaGFzIGl0J3Mgb3duIGludGVybmFsIGxvY2suCiAgIENoYW5nZUxvZ2dlciBiaXRyYXRl
X2xvZ2dlcl8gUlRDX0dVQVJERURfQlkoYWNtX2NyaXRfc2VjdF8pOwogCi0gIHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyRmFjdG9yeT4gZW5jb2Rlcl9mYWN0b3J5XwotICAgICAgUlRDX0dVQVJERURf
QlkoYWNtX2NyaXRfc2VjdF8pOwotCi0gIC8vIEN1cnJlbnQgZW5jb2RlciBzdGFjaywgZWl0aGVy
IG9idGFpbmVkIGZyb20KLSAgLy8gZW5jb2Rlcl9mYWN0b3J5Xy0+cmVudF9hX2NvZGVjLlJlbnRF
bmNvZGVyU3RhY2sgb3IgcHJvdmlkZWQgYnkgYSBjYWxsIHRvCi0gIC8vIFJlZ2lzdGVyRW5jb2Rl
ci4KKyAgLy8gQ3VycmVudCBlbmNvZGVyIHN0YWNrLCBwcm92aWRlZCBieSBhIGNhbGwgdG8gUmVn
aXN0ZXJFbmNvZGVyLgogICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmNvZGVyX3N0
YWNrXyBSVENfR1VBUkRFRF9CWShhY21fY3JpdF9zZWN0Xyk7CiAKICAgc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvRGVjb2Rlcj4gaXNhY19kZWNvZGVyXzE2a18KQEAgLTM5NywyOCArMzUzLDYgQEAgY2xh
c3MgUmF3QXVkaW9FbmNvZGVyV3JhcHBlciBmaW5hbCA6IHB1YmxpYyBBdWRpb0VuY29kZXIgewog
ICBBdWRpb0VuY29kZXIqIGVuY187CiB9OwogCi0vLyBSZXR1cm4gZmFsc2Ugb24gZXJyb3IuCi1i
b29sIENyZWF0ZVNwZWVjaEVuY29kZXJJZk5lY2Vzc2FyeShFbmNvZGVyRmFjdG9yeSogZWYpIHsK
LSAgYXV0byogc3AgPSBlZi0+Y29kZWNfbWFuYWdlci5HZXRTdGFja1BhcmFtcygpOwotICBpZiAo
c3AtPnNwZWVjaF9lbmNvZGVyKSB7Ci0gICAgLy8gRG8gbm90aGluZzsgd2UgYWxyZWFkeSBoYXZl
IGEgc3BlZWNoIGVuY29kZXIuCi0gIH0gZWxzZSBpZiAoZWYtPmNvZGVjX21hbmFnZXIuR2V0Q29k
ZWNJbnN0KCkpIHsKLSAgICBSVENfRENIRUNLKCFlZi0+ZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXIp
OwotICAgIC8vIFdlIGhhdmUgbm8gc3BlZWNoIGVuY29kZXIsIGJ1dCB3ZSBoYXZlIGEgc3BlY2lm
aWNhdGlvbiBmb3IgbWFraW5nIG9uZS4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVy
PiBlbmMgPQotICAgICAgICBlZi0+cmVudF9hX2NvZGVjLlJlbnRFbmNvZGVyKCplZi0+Y29kZWNf
bWFuYWdlci5HZXRDb2RlY0luc3QoKSk7Ci0gICAgaWYgKCFlbmMpCi0gICAgICByZXR1cm4gZmFs
c2U7ICAvLyBFbmNvZGVyIHNwZWMgd2FzIGJhZC4KLSAgICBzcC0+c3BlZWNoX2VuY29kZXIgPSBz
dGQ6Om1vdmUoZW5jKTsKLSAgfSBlbHNlIGlmIChlZi0+ZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXIp
IHsKLSAgICBSVENfRENIRUNLKCFlZi0+Y29kZWNfbWFuYWdlci5HZXRDb2RlY0luc3QoKSk7Ci0g
ICAgLy8gV2UgaGF2ZSBhbiBleHRlcm5hbCBzcGVlY2ggZW5jb2Rlci4KLSAgICBzcC0+c3BlZWNo
X2VuY29kZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPigKLSAgICAgICAgbmV3IFJh
d0F1ZGlvRW5jb2RlcldyYXBwZXIoZWYtPmV4dGVybmFsX3NwZWVjaF9lbmNvZGVyKSk7Ci0gIH0K
LSAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpDaGFuZ2VM
b2dnZXI6Ok1heWJlTG9nKGludCB2YWx1ZSkgewogICBpZiAodmFsdWUgIT0gbGFzdF92YWx1ZV8g
fHwgZmlyc3RfdGltZV8pIHsKICAgICBmaXJzdF90aW1lXyA9IGZhbHNlOwpAQCAtNDMzLDcgKzM2
Nyw2IEBAIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6QXVkaW9Db2RpbmdNb2R1bGVJbXBsKAogICAg
ICAgZXhwZWN0ZWRfaW5fdHNfKDB4RDg3RjNGOUYpLAogICAgICAgcmVjZWl2ZXJfKGNvbmZpZyks
CiAgICAgICBiaXRyYXRlX2xvZ2dlcl8oIldlYlJUQy5BdWRpby5UYXJnZXRCaXRyYXRlSW5LYnBz
IiksCi0gICAgICBlbmNvZGVyX2ZhY3RvcnlfKG5ldyBFbmNvZGVyRmFjdG9yeSksCiAgICAgICBl
bmNvZGVyX3N0YWNrXyhudWxscHRyKSwKICAgICAgIHByZXZpb3VzX3BsdHlwZV8oMjU1KSwKICAg
ICAgIHJlY2VpdmVyX2luaXRpYWxpemVkXyhmYWxzZSksCkBAIC01NDEsNjkgKzQ3NCwyOSBAQCBp
bnQzMl90IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6RW5jb2RlKGNvbnN0IElucHV0RGF0YSYgaW5w
dXRfZGF0YSkgewogLy8gICBTZW5kZXIKIC8vCiAKLS8vIENhbiBiZSBjYWxsZWQgbXVsdGlwbGUg
dGltZXMgZm9yIENvZGVjLCBDTkcsIFJFRC4KLWludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OlJl
Z2lzdGVyU2VuZENvZGVjKGNvbnN0IENvZGVjSW5zdCYgc2VuZF9jb2RlYykgewotICBydGM6OkNy
aXRTY29wZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0gIGlmICghZW5jb2Rlcl9mYWN0b3J5Xy0+
Y29kZWNfbWFuYWdlci5SZWdpc3RlckVuY29kZXIoc2VuZF9jb2RlYykpIHsKLSAgICByZXR1cm4g
LTE7Ci0gIH0KLSAgaWYgKGVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0Q29kZWNJ
bnN0KCkpIHsKLSAgICBlbmNvZGVyX2ZhY3RvcnlfLT5leHRlcm5hbF9zcGVlY2hfZW5jb2RlciA9
IG51bGxwdHI7Ci0gIH0KLSAgaWYgKCFDcmVhdGVTcGVlY2hFbmNvZGVySWZOZWNlc3NhcnkoZW5j
b2Rlcl9mYWN0b3J5Xy5nZXQoKSkpIHsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgYXV0byogc3Ag
PSBlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1zKCk7Ci0gIGlm
IChzcC0+c3BlZWNoX2VuY29kZXIpCi0gICAgZW5jb2Rlcl9zdGFja18gPSBlbmNvZGVyX2ZhY3Rv
cnlfLT5yZW50X2FfY29kZWMuUmVudEVuY29kZXJTdGFjayhzcCk7Ci0gIHJldHVybiAwOwotfQot
Ci12b2lkIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6UmVnaXN0ZXJFeHRlcm5hbFNlbmRDb2RlYygK
LSAgICBBdWRpb0VuY29kZXIqIGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyKSB7Ci0gIHJ0Yzo6Q3Jp
dFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgZW5jb2Rlcl9mYWN0b3J5Xy0+Y29kZWNf
bWFuYWdlci5VbnNldENvZGVjSW5zdCgpOwotICBlbmNvZGVyX2ZhY3RvcnlfLT5leHRlcm5hbF9z
cGVlY2hfZW5jb2RlciA9IGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyOwotICBSVENfQ0hFQ0soQ3Jl
YXRlU3BlZWNoRW5jb2RlcklmTmVjZXNzYXJ5KGVuY29kZXJfZmFjdG9yeV8uZ2V0KCkpKTsKLSAg
YXV0byogc3AgPSBlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1z
KCk7Ci0gIFJUQ19DSEVDSyhzcC0+c3BlZWNoX2VuY29kZXIpOwotICBlbmNvZGVyX3N0YWNrXyA9
IGVuY29kZXJfZmFjdG9yeV8tPnJlbnRfYV9jb2RlYy5SZW50RW5jb2RlclN0YWNrKHNwKTsKLX0K
LQogdm9pZCBBdWRpb0NvZGluZ01vZHVsZUltcGw6Ok1vZGlmeUVuY29kZXIoCiAgICAgcnRjOjpG
dW5jdGlvblZpZXc8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiopPiBtb2RpZmll
cikgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0KLSAgLy8gV2lw
ZSB0aGUgZW5jb2RlciBmYWN0b3J5LCBzbyB0aGF0IGV2ZXJ5dGhpbmcgdGhhdCByZWxpZXMgb24g
aXQgd2lsbCBmYWlsLgotICAvLyBXZSBkb24ndCB3YW50IHRoZSBjb21wbGV4aXR5IG9mIHN1cHBv
cnRpbmcgc3dhcHBpbmcgYmFjayBhbmQgZm9ydGguCi0gIGlmIChlbmNvZGVyX2ZhY3RvcnlfKSB7
Ci0gICAgZW5jb2Rlcl9mYWN0b3J5Xy5yZXNldCgpOwotICAgIFJUQ19DSEVDSyghZW5jb2Rlcl9z
dGFja18pOyAgLy8gRW5zdXJlIHdlIGhhZG4ndCBzdGFydGVkIHVzaW5nIHRoZSBmYWN0b3J5Lgot
ICB9Ci0KICAgbW9kaWZpZXIoJmVuY29kZXJfc3RhY2tfKTsKIH0KIAogLy8gR2V0IGN1cnJlbnQg
c2VuZCBjb2RlYy4KIGFic2w6Om9wdGlvbmFsPENvZGVjSW5zdD4gQXVkaW9Db2RpbmdNb2R1bGVJ
bXBsOjpTZW5kQ29kZWMoKSBjb25zdCB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0
X3NlY3RfKTsKLSAgaWYgKGVuY29kZXJfZmFjdG9yeV8pIHsKLSAgICBhdXRvKiBjaSA9IGVuY29k
ZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0Q29kZWNJbnN0KCk7Ci0gICAgaWYgKGNpKSB7
Ci0gICAgICByZXR1cm4gKmNpOwotICAgIH0KLSAgICBDcmVhdGVTcGVlY2hFbmNvZGVySWZOZWNl
c3NhcnkoZW5jb2Rlcl9mYWN0b3J5Xy5nZXQoKSk7Ci0gICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvRW5jb2Rlcj4mIGVuYyA9Ci0gICAgICAgIGVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21h
bmFnZXIuR2V0U3RhY2tQYXJhbXMoKS0+c3BlZWNoX2VuY29kZXI7Ci0gICAgaWYgKGVuYykgewot
ICAgICAgcmV0dXJuIGFjbTI6OkNvZGVjTWFuYWdlcjo6Rm9yZ2VDb2RlY0luc3QoZW5jLmdldCgp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIGlmIChlbmNvZGVyX3N0YWNr
XykgeworICAgIENvZGVjSW5zdCBjaTsKKyAgICBjaS5jaGFubmVscyA9IGVuY29kZXJfc3RhY2tf
LT5OdW1DaGFubmVscygpOworICAgIGNpLnBsZnJlcSA9IGVuY29kZXJfc3RhY2tfLT5TYW1wbGVS
YXRlSHooKTsKKyAgICBjaS5wYWNzaXplID0gcnRjOjpDaGVja2VkRGl2RXhhY3QoCisgICAgICAg
IHN0YXRpY19jYXN0PGludD4oZW5jb2Rlcl9zdGFja18tPk1heDEwTXNGcmFtZXNJbkFQYWNrZXQo
KSAqIGNpLnBsZnJlcSksCisgICAgICAgIDEwMCk7CisgICAgY2kucGx0eXBlID0gLTE7ICAvLyBO
b3QgdmFsaWQuCisgICAgY2kucmF0ZSA9IC0xOyAgICAvLyBOb3QgdmFsaWQuCisgICAgc3RhdGlj
IGNvbnN0IGNoYXIga05hbWVbXSA9ICJleHRlcm5hbCI7CisgICAgbWVtY3B5KGNpLnBsbmFtZSwg
a05hbWUsIHNpemVvZihrTmFtZSkpOworICAgIHJldHVybiBjaTsKICAgfSBlbHNlIHsKLSAgICBy
ZXR1cm4gZW5jb2Rlcl9zdGFja18KLSAgICAgICAgICAgICAgID8gYWJzbDo6b3B0aW9uYWw8Q29k
ZWNJbnN0PigKLSAgICAgICAgICAgICAgICAgICAgIGFjbTI6OkNvZGVjTWFuYWdlcjo6Rm9yZ2VD
b2RlY0luc3QoZW5jb2Rlcl9zdGFja18uZ2V0KCkpKQotICAgICAgICAgICAgICAgOiBhYnNsOjpu
dWxsb3B0OworICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwogICB9CiB9CiAKQEAgLTgwMCw1OSAr
NjkzLDEwIEBAIGludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OlByZXByb2Nlc3NUb0FkZERhdGEo
Y29uc3QgQXVkaW9GcmFtZSYgaW5fZnJhbWUsCiAgIHJldHVybiAwOwogfQogCi0vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gICAoUkVEKSBSZWR1bmRhbnQgQ29k
aW5nCi0vLwotCi1ib29sIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6UkVEU3RhdHVzKCkgY29uc3Qg
ewotICBydGM6OkNyaXRTY29wZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0gIHJldHVybiBlbmNv
ZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1zKCktPnVzZV9yZWQ7Ci19
Ci0KLS8vIENvbmZpZ3VyZSBSRUQgc3RhdHVzIGkuZSBvbi9vZmYuCi1pbnQgQXVkaW9Db2RpbmdN
b2R1bGVJbXBsOjpTZXRSRURTdGF0dXMoYm9vbCBlbmFibGVfcmVkKSB7Ci0jaWZkZWYgV0VCUlRD
X0NPREVDX1JFRAotICBydGM6OkNyaXRTY29wZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0gIENy
ZWF0ZVNwZWVjaEVuY29kZXJJZk5lY2Vzc2FyeShlbmNvZGVyX2ZhY3RvcnlfLmdldCgpKTsKLSAg
aWYgKCFlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2VyLlNldENvcHlSZWQoZW5hYmxlX3Jl
ZCkpIHsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgYXV0byogc3AgPSBlbmNvZGVyX2ZhY3Rvcnlf
LT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1zKCk7Ci0gIGlmIChzcC0+c3BlZWNoX2VuY29k
ZXIpCi0gICAgZW5jb2Rlcl9zdGFja18gPSBlbmNvZGVyX2ZhY3RvcnlfLT5yZW50X2FfY29kZWMu
UmVudEVuY29kZXJTdGFjayhzcCk7Ci0gIHJldHVybiAwOwotI2Vsc2UKLSAgUlRDX0xPRyhMU19X
QVJOSU5HKSA8PCAiICBXRUJSVENfQ09ERUNfUkVEIGlzIHVuZGVmaW5lZCI7Ci0gIHJldHVybiAt
MTsKLSNlbmRpZgotfQotCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwogLy8gICAoRkVDKSBGb3J3YXJkIEVycm9yIENvcnJlY3Rpb24gKGNvZGVjIGludGVybmFsKQog
Ly8KIAotYm9vbCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OkNvZGVjRkVDKCkgY29uc3QgewotICBy
dGM6OkNyaXRTY29wZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0gIHJldHVybiBlbmNvZGVyX2Zh
Y3RvcnlfLT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1zKCktPnVzZV9jb2RlY19mZWM7Ci19
Ci0KLWludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OlNldENvZGVjRkVDKGJvb2wgZW5hYmxlX2Nv
ZGVjX2ZlYykgewotICBydGM6OkNyaXRTY29wZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0gIENy
ZWF0ZVNwZWVjaEVuY29kZXJJZk5lY2Vzc2FyeShlbmNvZGVyX2ZhY3RvcnlfLmdldCgpKTsKLSAg
aWYgKCFlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2VyLlNldENvZGVjRkVDKGVuYWJsZV9j
b2RlY19mZWMpKSB7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIGF1dG8qIHNwID0gZW5jb2Rlcl9m
YWN0b3J5Xy0+Y29kZWNfbWFuYWdlci5HZXRTdGFja1BhcmFtcygpOwotICBpZiAoc3AtPnNwZWVj
aF9lbmNvZGVyKQotICAgIGVuY29kZXJfc3RhY2tfID0gZW5jb2Rlcl9mYWN0b3J5Xy0+cmVudF9h
X2NvZGVjLlJlbnRFbmNvZGVyU3RhY2soc3ApOwotICBpZiAoZW5hYmxlX2NvZGVjX2ZlYykgewot
ICAgIHJldHVybiBzcC0+dXNlX2NvZGVjX2ZlYyA/IDAgOiAtMTsKLSAgfSBlbHNlIHsKLSAgICBS
VENfRENIRUNLKCFzcC0+dXNlX2NvZGVjX2ZlYyk7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQog
aW50IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6U2V0UGFja2V0TG9zc1JhdGUoaW50IGxvc3NfcmF0
ZSkgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7CiAgIGlmIChIYXZl
VmFsaWRFbmNvZGVyKCJTZXRQYWNrZXRMb3NzUmF0ZSIpKSB7CkBAIC04NjEsMzYgKzcwNSw2IEBA
IGludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OlNldFBhY2tldExvc3NSYXRlKGludCBsb3NzX3Jh
dGUpIHsKICAgcmV0dXJuIDA7CiB9CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0vLyAgIChWQUQpIFZvaWNlIEFjdGl2aXR5IERldGVjdGlvbgotLy8KLWludCBB
dWRpb0NvZGluZ01vZHVsZUltcGw6OlNldFZBRChib29sIGVuYWJsZV9kdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGVfdmFkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFDTVZBRE1vZGUgbW9kZSkgewotICAvLyBOb3RlOiB8ZW5hYmxl
X3ZhZHwgaXMgbm90IHVzZWQ7IFZBRCBpcyBlbmFibGVkIGJhc2VkIG9uIHRoZSBEVFggc2V0dGlu
Zy4KLSAgUlRDX0RDSEVDS19FUShlbmFibGVfZHR4LCBlbmFibGVfdmFkKTsKLSAgcnRjOjpDcml0
U2NvcGUgbG9jaygmYWNtX2NyaXRfc2VjdF8pOwotICBDcmVhdGVTcGVlY2hFbmNvZGVySWZOZWNl
c3NhcnkoZW5jb2Rlcl9mYWN0b3J5Xy5nZXQoKSk7Ci0gIGlmICghZW5jb2Rlcl9mYWN0b3J5Xy0+
Y29kZWNfbWFuYWdlci5TZXRWQUQoZW5hYmxlX2R0eCwgbW9kZSkpIHsKLSAgICByZXR1cm4gLTE7
Ci0gIH0KLSAgYXV0byogc3AgPSBlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2VyLkdldFN0
YWNrUGFyYW1zKCk7Ci0gIGlmIChzcC0+c3BlZWNoX2VuY29kZXIpCi0gICAgZW5jb2Rlcl9zdGFj
a18gPSBlbmNvZGVyX2ZhY3RvcnlfLT5yZW50X2FfY29kZWMuUmVudEVuY29kZXJTdGFjayhzcCk7
Ci0gIHJldHVybiAwOwotfQotCi0vLyBHZXQgVkFEL0RUWCBzZXR0aW5ncy4KLWludCBBdWRpb0Nv
ZGluZ01vZHVsZUltcGw6OlZBRChib29sKiBkdHhfZW5hYmxlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sKiB2YWRfZW5hYmxlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBQ01WQURNb2RlKiBtb2RlKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2so
JmFjbV9jcml0X3NlY3RfKTsKLSAgY29uc3QgYXV0byogc3AgPSBlbmNvZGVyX2ZhY3RvcnlfLT5j
b2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1zKCk7Ci0gICpkdHhfZW5hYmxlZCA9ICp2YWRfZW5h
YmxlZCA9IHNwLT51c2VfY25nOwotICAqbW9kZSA9IHNwLT52YWRfbW9kZTsKLSAgcmV0dXJuIDA7
Ci19Ci0KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyAgIFJl
Y2VpdmVyCiAvLwpAQCAtOTQ5LDU5ICs3NjMsNiBAQCBib29sIEF1ZGlvQ29kaW5nTW9kdWxlSW1w
bDo6UmVnaXN0ZXJSZWNlaXZlQ29kZWMoCiAgIHJldHVybiByZWNlaXZlcl8uQWRkQ29kZWMocnRw
X3BheWxvYWRfdHlwZSwgYXVkaW9fZm9ybWF0KTsKIH0KIAotaW50IEF1ZGlvQ29kaW5nTW9kdWxl
SW1wbDo6UmVnaXN0ZXJSZWNlaXZlQ29kZWMoY29uc3QgQ29kZWNJbnN0JiBjb2RlYykgewotICBy
dGM6OkNyaXRTY29wZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0gIGF1dG8qIGVmID0gZW5jb2Rl
cl9mYWN0b3J5Xy5nZXQoKTsKLSAgcmV0dXJuIFJlZ2lzdGVyUmVjZWl2ZUNvZGVjVW5sb2NrZWQo
Ci0gICAgICBjb2RlYywgWyZdIHsgcmV0dXJuIGVmLT5yZW50X2FfY29kZWMuUmVudElzYWNEZWNv
ZGVyKGNvZGVjLnBsZnJlcSk7IH0pOwotfQotCi1pbnQgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpS
ZWdpc3RlclJlY2VpdmVDb2RlYygKLSAgICBjb25zdCBDb2RlY0luc3QmIGNvZGVjLAotICAgIHJ0
Yzo6RnVuY3Rpb25WaWV3PHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RlY29kZXI+KCk+IGlzYWNfZmFj
dG9yeSkgewotICBydGM6OkNyaXRTY29wZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0gIHJldHVy
biBSZWdpc3RlclJlY2VpdmVDb2RlY1VubG9ja2VkKGNvZGVjLCBpc2FjX2ZhY3RvcnkpOwotfQot
Ci1pbnQgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpSZWdpc3RlclJlY2VpdmVDb2RlY1VubG9ja2Vk
KAotICAgIGNvbnN0IENvZGVjSW5zdCYgY29kZWMsCi0gICAgcnRjOjpGdW5jdGlvblZpZXc8c3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4oKT4gaXNhY19mYWN0b3J5KSB7Ci0gIFJUQ19EQ0hF
Q0socmVjZWl2ZXJfaW5pdGlhbGl6ZWRfKTsKLSAgaWYgKGNvZGVjLmNoYW5uZWxzID4gMikgewot
ICAgIFJUQ19MT0dfRihMU19FUlJPUikgPDwgIlVuc3VwcG9ydGVkIG51bWJlciBvZiBjaGFubmVs
czogIiA8PCBjb2RlYy5jaGFubmVsczsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLQotICBhdXRvIGNv
ZGVjX2lkID0gYWNtMjo6UmVudEFDb2RlYzo6Q29kZWNJZEJ5UGFyYW1zKGNvZGVjLnBsbmFtZSwg
Y29kZWMucGxmcmVxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvZGVjLmNoYW5uZWxzKTsKLSAgaWYgKCFjb2RlY19pZCkgewotICAgIFJUQ19M
T0dfRihMU19FUlJPUikKLSAgICAgICAgPDwgIldyb25nIGNvZGVjIHBhcmFtcyB0byBiZSByZWdp
c3RlcmVkIGFzIHJlY2VpdmUgY29kZWMiOwotICAgIHJldHVybiAtMTsKLSAgfQotICBhdXRvIGNv
ZGVjX2luZGV4ID0gYWNtMjo6UmVudEFDb2RlYzo6Q29kZWNJbmRleEZyb21JZCgqY29kZWNfaWQp
OwotICBSVENfQ0hFQ0soY29kZWNfaW5kZXgpIDw8ICJJbnZhbGlkIGNvZGVjIElEOiAiIDw8IHN0
YXRpY19jYXN0PGludD4oKmNvZGVjX2lkKTsKLQotICAvLyBDaGVjayBpZiB0aGUgcGF5bG9hZC10
eXBlIGlzIHZhbGlkLgotICBpZiAoIWFjbTI6OlJlbnRBQ29kZWM6OklzUGF5bG9hZFR5cGVWYWxp
ZChjb2RlYy5wbHR5cGUpKSB7Ci0gICAgUlRDX0xPR19GKExTX0VSUk9SKSA8PCAiSW52YWxpZCBw
YXlsb2FkIHR5cGUgIiA8PCBjb2RlYy5wbHR5cGUgPDwgIiBmb3IgIgotICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgY29kZWMucGxuYW1lOwotICAgIHJldHVybiAtMTsKLSAgfQotCi0gIEF1ZGlv
RGVjb2RlciogaXNhY19kZWNvZGVyID0gbnVsbHB0cjsKLSAgaWYgKFNUUl9DQVNFX0NNUChjb2Rl
Yy5wbG5hbWUsICJpc2FjIikgPT0gMCkgewotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RlY29k
ZXI+JiBzYXZlZF9pc2FjX2RlY29kZXIgPQotICAgICAgICBjb2RlYy5wbGZyZXEgPT0gMTYwMDAg
PyBpc2FjX2RlY29kZXJfMTZrXyA6IGlzYWNfZGVjb2Rlcl8zMmtfOwotICAgIGlmICghc2F2ZWRf
aXNhY19kZWNvZGVyKSB7Ci0gICAgICBzYXZlZF9pc2FjX2RlY29kZXIgPSBpc2FjX2ZhY3Rvcnko
KTsKLSAgICB9Ci0gICAgaXNhY19kZWNvZGVyID0gc2F2ZWRfaXNhY19kZWNvZGVyLmdldCgpOwot
ICB9Ci0gIHJldHVybiByZWNlaXZlcl8uQWRkQ29kZWMoKmNvZGVjX2luZGV4LCBjb2RlYy5wbHR5
cGUsIGNvZGVjLmNoYW5uZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjLnBs
ZnJlcSwgaXNhY19kZWNvZGVyLCBjb2RlYy5wbG5hbWUpOwotfQotCiBpbnQgQXVkaW9Db2RpbmdN
b2R1bGVJbXBsOjpSZWdpc3RlckV4dGVybmFsUmVjZWl2ZUNvZGVjKAogICAgIGludCBydHBfcGF5
bG9hZF90eXBlLAogICAgIEF1ZGlvRGVjb2RlciogZXh0ZXJuYWxfZGVjb2RlciwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2FjbTIvYXVkaW9fY29kaW5nX21vZHVsZV91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Fj
bTIvYXVkaW9fY29kaW5nX21vZHVsZV91bml0dGVzdC5jYwppbmRleCA1YWM2MTAyYzY4MjA5OTg4
YWRiYjAyYjdiMWNhNWNjMDQ4ZmYwNTI3Li40ZTI2MmY3YjAzOGEzYmRmOWYxMzZmM2E1NjRhNDk1
MmE3YTI2YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2F1ZGlvX2NvZGluZ19tb2R1bGVfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hdWRpb19jb2RpbmdfbW9kdWxlX3VuaXR0ZXN0LmNj
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
dG9vbHMvcGFja2V0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9v
bHMvcnRwX2ZpbGVfc291cmNlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9u
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNz
YWdlZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9u
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5oIgpAQCAtNDIsNyArNDMs
NiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9hcmNoLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1
ZGUvY2xvY2suaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFw
cGVyLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvc2xlZXAuaCIKICNpbmNs
dWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9tb2NrX2F1ZGlvX2RlY29kZXIuaCIK
QEAgLTQwOCwxMiArNDA4LDEyIEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlVGVzdFdpdGhDb21m
b3J0Tm9pc2VPbGRBcGkKICAgICAgICAgICAgICAgYWNtXy0+UmVnaXN0ZXJSZWNlaXZlQ29kZWMo
CiAgICAgICAgICAgICAgICAgICBydHBfcGF5bG9hZF90eXBlLCBTZHBBdWRpb0Zvcm1hdCgiY24i
LCBrU2FtcGxlUmF0ZUh6LCAxKSkpOwogICAgIGFjbV8tPk1vZGlmeUVuY29kZXIoWyZdKHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmMpIHsKLSAgICAgIEF1ZGlvRW5jb2RlckNuZzo6
Q29uZmlnIGNvbmZpZzsKKyAgICAgIEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyBjb25maWc7CiAgICAg
ICBjb25maWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUoKmVuYyk7CiAgICAgICBjb25maWcu
bnVtX2NoYW5uZWxzID0gMTsKICAgICAgIGNvbmZpZy5wYXlsb2FkX3R5cGUgPSBydHBfcGF5bG9h
ZF90eXBlOwogICAgICAgY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkTm9ybWFsOwotICAgICAg
KmVuYyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlckNuZz4oc3RkOjptb3ZlKGNvbmZp
ZykpOworICAgICAgKmVuYyA9IENyZWF0ZUNvbWZvcnROb2lzZUVuY29kZXIoc3RkOjptb3ZlKGNv
bmZpZykpOwogICAgIH0pOwogICB9CiAKQEAgLTQ4MSw3ICs0ODEsNiBAQCBjbGFzcyBBdWRpb0Nv
ZGluZ01vZHVsZU10VGVzdE9sZEFwaSA6IHB1YmxpYyBBdWRpb0NvZGluZ01vZHVsZVRlc3RPbGRB
cGkgewogICAgICAgICBzZW5kX3RocmVhZF8oQ2JTZW5kVGhyZWFkLCB0aGlzLCAic2VuZCIpLAog
ICAgICAgICBpbnNlcnRfcGFja2V0X3RocmVhZF8oQ2JJbnNlcnRQYWNrZXRUaHJlYWQsIHRoaXMs
ICJpbnNlcnRfcGFja2V0IiksCiAgICAgICAgIHB1bGxfYXVkaW9fdGhyZWFkXyhDYlB1bGxBdWRp
b1RocmVhZCwgdGhpcywgInB1bGxfYXVkaW8iKSwKLSAgICAgICAgdGVzdF9jb21wbGV0ZV8oRXZl
bnRXcmFwcGVyOjpDcmVhdGUoKSksCiAgICAgICAgIHNlbmRfY291bnRfKDApLAogICAgICAgICBp
bnNlcnRfcGFja2V0X2NvdW50XygwKSwKICAgICAgICAgcHVsbF9hdWRpb19jb3VudF8oMCksCkBA
IC01MTIsOCArNTExLDggQEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGVNdFRlc3RPbGRBcGkgOiBw
dWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVUZXN0T2xkQXBpIHsKICAgICBpbnNlcnRfcGFja2V0X3Ro
cmVhZF8uU3RvcCgpOwogICB9CiAKLSAgRXZlbnRUeXBlV3JhcHBlciBSdW5UZXN0KCkgewotICAg
IHJldHVybiB0ZXN0X2NvbXBsZXRlXy0+V2FpdCgxMCAqIDYwICogMTAwMCk7ICAvLyAxMCBtaW51
dGVzJyB0aW1lb3V0LgorICBib29sIFJ1blRlc3QoKSB7CisgICAgcmV0dXJuIHRlc3RfY29tcGxl
dGVfLldhaXQoMTAgKiA2MCAqIDEwMDApOyAgLy8gMTAgbWludXRlcycgdGltZW91dC4KICAgfQog
CiAgIHZpcnR1YWwgYm9vbCBUZXN0RG9uZSgpIHsKQEAgLTUzOCwxMiArNTM3LDEyIEBAIGNsYXNz
IEF1ZGlvQ29kaW5nTW9kdWxlTXRUZXN0T2xkQXBpIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxl
VGVzdE9sZEFwaSB7CiAgICAgU2xlZXBNcygxKTsKICAgICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkp
IHsKICAgICAgIC8vIEVuZCB0aGUgdGVzdCBlYXJseSBpZiBhIGZhdGFsIGZhaWx1cmUgKEFTU0VS
VF8qKSBoYXMgb2NjdXJyZWQuCi0gICAgICB0ZXN0X2NvbXBsZXRlXy0+U2V0KCk7CisgICAgICB0
ZXN0X2NvbXBsZXRlXy5TZXQoKTsKICAgICB9CiAgICAgKytzZW5kX2NvdW50XzsKICAgICBJbnNl
cnRBdWRpb0FuZFZlcmlmeUVuY29kaW5nKCk7CiAgICAgaWYgKFRlc3REb25lKCkpIHsKLSAgICAg
IHRlc3RfY29tcGxldGVfLT5TZXQoKTsKKyAgICAgIHRlc3RfY29tcGxldGVfLlNldCgpOwogICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKICAgfQpAQCAtNTkyLDcgKzU5MSw3IEBAIGNsYXNzIEF1ZGlv
Q29kaW5nTW9kdWxlTXRUZXN0T2xkQXBpIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlVGVzdE9s
ZEFwaSB7CiAgIHJ0Yzo6UGxhdGZvcm1UaHJlYWQgc2VuZF90aHJlYWRfOwogICBydGM6OlBsYXRm
b3JtVGhyZWFkIGluc2VydF9wYWNrZXRfdGhyZWFkXzsKICAgcnRjOjpQbGF0Zm9ybVRocmVhZCBw
dWxsX2F1ZGlvX3RocmVhZF87Ci0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+
IHRlc3RfY29tcGxldGVfOworICBydGM6OkV2ZW50IHRlc3RfY29tcGxldGVfOwogICBpbnQgc2Vu
ZF9jb3VudF87CiAgIGludCBpbnNlcnRfcGFja2V0X2NvdW50XzsKICAgaW50IHB1bGxfYXVkaW9f
Y291bnRfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8pOwpAQCAtNjA3LDcgKzYwNiw3IEBAIGNs
YXNzIEF1ZGlvQ29kaW5nTW9kdWxlTXRUZXN0T2xkQXBpIDogcHVibGljIEF1ZGlvQ29kaW5nTW9k
dWxlVGVzdE9sZEFwaSB7CiAjZGVmaW5lIE1BWUJFX0RvVGVzdCBEb1Rlc3QKICNlbmRpZgogVEVT
VF9GKEF1ZGlvQ29kaW5nTW9kdWxlTXRUZXN0T2xkQXBpLCBNQVlCRV9Eb1Rlc3QpIHsKLSAgRVhQ
RUNUX0VRKGtFdmVudFNpZ25hbGVkLCBSdW5UZXN0KCkpOworICBFWFBFQ1RfVFJVRShSdW5UZXN0
KCkpOwogfQogCiAvLyBUaGlzIGlzIGEgbXVsdGktdGhyZWFkZWQgQUNNIHRlc3QgdXNpbmcgaVNB
Qy4gVGhlIHRlc3QgZW5jb2RlcyBhdWRpbwpAQCAtNzE3LDcgKzcxNiw3IEBAIGNsYXNzIEFjbUlz
YWNNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVNdFRlc3RPbGRBcGkgewog
I2VuZGlmCiAjaWYgZGVmaW5lZChXRUJSVENfQ09ERUNfSVNBQykgfHwgZGVmaW5lZChXRUJSVENf
Q09ERUNfSVNBQ0ZYKQogVEVTVF9GKEFjbUlzYWNNdFRlc3RPbGRBcGksIE1BWUJFX0RvVGVzdCkg
ewotICBFWFBFQ1RfRVEoa0V2ZW50U2lnbmFsZWQsIFJ1blRlc3QoKSk7CisgIEVYUEVDVF9UUlVF
KFJ1blRlc3QoKSk7CiB9CiAjZW5kaWYKIApAQCAtNzM0LDcgKzczMyw2IEBAIGNsYXNzIEFjbVJl
UmVnaXN0ZXJJc2FjTXRUZXN0T2xkQXBpIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlVGVzdE9s
ZEFwaSB7CiAgICAgICAgIGNvZGVjX3JlZ2lzdHJhdGlvbl90aHJlYWRfKENiQ29kZWNSZWdpc3Ry
YXRpb25UaHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2RlY19yZWdpc3RyYXRpb24iKSwK
LSAgICAgICAgdGVzdF9jb21wbGV0ZV8oRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCiAgICAgICAg
IGNvZGVjX3JlZ2lzdGVyZWRfKGZhbHNlKSwKICAgICAgICAgcmVjZWl2ZV9wYWNrZXRfY291bnRf
KDApLAogICAgICAgICBuZXh0X2luc2VydF9wYWNrZXRfdGltZV9tc18oMCksCkBAIC03ODEsOCAr
Nzc5LDggQEAgY2xhc3MgQWNtUmVSZWdpc3RlcklzYWNNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVk
aW9Db2RpbmdNb2R1bGVUZXN0T2xkQXBpIHsKICAgICBjb2RlY19yZWdpc3RyYXRpb25fdGhyZWFk
Xy5TdG9wKCk7CiAgIH0KIAotICBFdmVudFR5cGVXcmFwcGVyIFJ1blRlc3QoKSB7Ci0gICAgcmV0
dXJuIHRlc3RfY29tcGxldGVfLT5XYWl0KDEwICogNjAgKiAxMDAwKTsgIC8vIDEwIG1pbnV0ZXMn
IHRpbWVvdXQuCisgIGJvb2wgUnVuVGVzdCgpIHsKKyAgICByZXR1cm4gdGVzdF9jb21wbGV0ZV8u
V2FpdCgxMCAqIDYwICogMTAwMCk7ICAvLyAxMCBtaW51dGVzJyB0aW1lb3V0LgogICB9CiAKICAg
c3RhdGljIGJvb2wgQ2JSZWNlaXZlVGhyZWFkKHZvaWQqIGNvbnRleHQpIHsKQEAgLTg0NSw3ICs4
NDMsNyBAQCBjbGFzcyBBY21SZVJlZ2lzdGVySXNhY010VGVzdE9sZEFwaSA6IHB1YmxpYyBBdWRp
b0NvZGluZ01vZHVsZVRlc3RPbGRBcGkgewogICAgIFNsZWVwTXMoMSk7CiAgICAgaWYgKEhhc0Zh
dGFsRmFpbHVyZSgpKSB7CiAgICAgICAvLyBFbmQgdGhlIHRlc3QgZWFybHkgaWYgYSBmYXRhbCBm
YWlsdXJlIChBU1NFUlRfKikgaGFzIG9jY3VycmVkLgotICAgICAgdGVzdF9jb21wbGV0ZV8tPlNl
dCgpOworICAgICAgdGVzdF9jb21wbGV0ZV8uU2V0KCk7CiAgICAgfQogICAgIHJ0Yzo6Q3JpdFNj
b3BlIGxvY2soJmNyaXRfc2VjdF8pOwogICAgIGlmICghY29kZWNfcmVnaXN0ZXJlZF8gJiYKQEAg
LTg1NiwxNCArODU0LDE0IEBAIGNsYXNzIEFjbVJlUmVnaXN0ZXJJc2FjTXRUZXN0T2xkQXBpIDog
cHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlVGVzdE9sZEFwaSB7CiAgICAgICBjb2RlY19yZWdpc3Rl
cmVkXyA9IHRydWU7CiAgICAgfQogICAgIGlmIChjb2RlY19yZWdpc3RlcmVkXyAmJiByZWNlaXZl
X3BhY2tldF9jb3VudF8gPiBrTnVtUGFja2V0cykgewotICAgICAgdGVzdF9jb21wbGV0ZV8tPlNl
dCgpOworICAgICAgdGVzdF9jb21wbGV0ZV8uU2V0KCk7CiAgICAgfQogICAgIHJldHVybiB0cnVl
OwogICB9CiAKICAgcnRjOjpQbGF0Zm9ybVRocmVhZCByZWNlaXZlX3RocmVhZF87CiAgIHJ0Yzo6
UGxhdGZvcm1UaHJlYWQgY29kZWNfcmVnaXN0cmF0aW9uX3RocmVhZF87Ci0gIGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+IHRlc3RfY29tcGxldGVfOworICBydGM6OkV2ZW50IHRl
c3RfY29tcGxldGVfOwogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X3NlY3RfOwogICBib29s
IGNvZGVjX3JlZ2lzdGVyZWRfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8pOwogICBpbnQgcmVj
ZWl2ZV9wYWNrZXRfY291bnRfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8pOwpAQCAtODgwLDcg
Kzg3OCw3IEBAIGNsYXNzIEFjbVJlUmVnaXN0ZXJJc2FjTXRUZXN0T2xkQXBpIDogcHVibGljIEF1
ZGlvQ29kaW5nTW9kdWxlVGVzdE9sZEFwaSB7CiAjZW5kaWYKICNpZiBkZWZpbmVkKFdFQlJUQ19D
T0RFQ19JU0FDKSB8fCBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FDRlgpCiBURVNUX0YoQWNtUmVS
ZWdpc3RlcklzYWNNdFRlc3RPbGRBcGksIE1BWUJFX0RvVGVzdCkgewotICBFWFBFQ1RfRVEoa0V2
ZW50U2lnbmFsZWQsIFJ1blRlc3QoKSk7CisgIEVYUEVDVF9UUlVFKFJ1blRlc3QoKSk7CiB9CiAj
ZW5kaWYKIApAQCAtMTE4NSwxNCArMTE4MywxNCBAQCBjbGFzcyBBY21TZW5kZXJCaXRFeGFjdG5l
c3NPbGRBcGkgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0LAogCiAgICAgLy8gRXh0cmFjdCBhbmQg
dmVyaWZ5IHRoZSBhdWRpbyBjaGVja3N1bS4KICAgICBzdGQ6OnN0cmluZyBjaGVja3N1bV9zdHJp
bmcgPSBhdWRpb19jaGVja3N1bS5GaW5pc2goKTsKLSAgICBFWFBFQ1RfRVEoYXVkaW9fY2hlY2tz
dW1fcmVmLCBjaGVja3N1bV9zdHJpbmcpOworICAgIEV4cGVjdENoZWNrc3VtRXEoYXVkaW9fY2hl
Y2tzdW1fcmVmLCBjaGVja3N1bV9zdHJpbmcpOwogCiAgICAgLy8gRXh0cmFjdCBhbmQgdmVyaWZ5
IHRoZSBwYXlsb2FkIGNoZWNrc3VtLgogICAgIHJ0Yzo6QnVmZmVyIGNoZWNrc3VtX3Jlc3VsdChw
YXlsb2FkX2NoZWNrc3VtXy0+U2l6ZSgpKTsKICAgICBwYXlsb2FkX2NoZWNrc3VtXy0+RmluaXNo
KGNoZWNrc3VtX3Jlc3VsdC5kYXRhKCksIGNoZWNrc3VtX3Jlc3VsdC5zaXplKCkpOwogICAgIGNo
ZWNrc3VtX3N0cmluZyA9CiAgICAgICAgIHJ0Yzo6aGV4X2VuY29kZShjaGVja3N1bV9yZXN1bHQu
ZGF0YTxjaGFyPigpLCBjaGVja3N1bV9yZXN1bHQuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVEocGF5
bG9hZF9jaGVja3N1bV9yZWYsIGNoZWNrc3VtX3N0cmluZyk7CisgICAgRXhwZWN0Q2hlY2tzdW1F
cShwYXlsb2FkX2NoZWNrc3VtX3JlZiwgY2hlY2tzdW1fc3RyaW5nKTsKIAogICAgIC8vIFZlcmlm
eSBudW1iZXIgb2YgcGFja2V0cyBwcm9kdWNlZC4KICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGFj
a2V0cywgcGFja2V0X2NvdW50Xyk7CkBAIC0xMjAxLDYgKzExOTksMTggQEAgY2xhc3MgQWNtU2Vu
ZGVyQml0RXhhY3RuZXNzT2xkQXBpIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCwKICAgICByZW1v
dmUob3V0cHV0X2ZpbGVfbmFtZS5jX3N0cigpKTsKICAgfQogCisgIC8vIEhlbHBlcjogcmVzdWx0
IG11c3QgYmUgb25lIHRoZSAifCItc2VwYXJhdGVkIGNoZWNrc3Vtcy4KKyAgdm9pZCBFeHBlY3RD
aGVja3N1bUVxKHN0ZDo6c3RyaW5nIHJlZiwgc3RkOjpzdHJpbmcgcmVzdWx0KSB7CisgICAgaWYg
KHJlZi5zaXplKCkgPT0gcmVzdWx0LnNpemUoKSkgeworICAgICAgLy8gT25seSBvbmUgY2hlY2tz
dW06IGNsZWFyZXIgbWVzc2FnZS4KKyAgICAgIEVYUEVDVF9FUShyZWYsIHJlc3VsdCk7CisgICAg
fSBlbHNlIHsKKyAgICAgIEVYUEVDVF9ORShyZWYuZmluZChyZXN1bHQpLCBzdGQ6OnN0cmluZzo6
bnBvcykKKyAgICAgICAgICA8PCByZXN1bHQgPDwgIiBtdXN0IGJlIG9uZSBvZiB0aGVzZTpcbiIK
KyAgICAgICAgICA8PCByZWY7CisgICAgfQorICB9CisKICAgLy8gSW5oZXJpdGVkIGZyb20gdGVz
dDo6UGFja2V0U291cmNlLgogICBzdGQ6OnVuaXF1ZV9wdHI8dGVzdDo6UGFja2V0PiBOZXh0UGFj
a2V0KCkgb3ZlcnJpZGUgewogICAgIGF1dG8gcGFja2V0ID0gc2VuZF90ZXN0Xy0+TmV4dFBhY2tl
dCgpOwpAQCAtMTQzOCwyMSArMTQ0OCwzNSBAQCBURVNUX0YoQWNtU2VuZGVyQml0RXhhY3RuZXNz
T2xkQXBpLCBNQVlCRV9HNzIyX3N0ZXJlb18yMG1zKSB7CiAgICAgICA1MCwgdGVzdDo6QWNtUmVj
ZWl2ZVRlc3RPbGRBcGk6OmtTdGVyZW9PdXRwdXQpOwogfQogCituYW1lc3BhY2UgeworLy8gQ2hl
Y2tzdW0gZGVwZW5kcyBvbiBsaWJvcHVzIGJlaW5nIGNvbXBpbGVkIHdpdGggb3Igd2l0aG91dCBT
U0UuCitjb25zdCBzdGQ6OnN0cmluZyBhdWRpb19tYXliZV9zc2UgPQorICAgICIzZTI4NWI3NDUx
MGU2MjA2MmZiZDgxNDJkYWNkMTZlOXwiCisgICAgImZkNWQ1N2Q2ZDc2NjkwOGU2YTcyMTFlMmE1
YzdmNzhhIjsKK2NvbnN0IHN0ZDo6c3RyaW5nIHBheWxvYWRfbWF5YmVfc3NlID0KKyAgICAiNzhj
ZjhmMDMxNTczNThhY2RjNjlmNjgzNWNhYTBkOWJ8IgorICAgICJiNjkzYmQ5NWMyZWUyMzU0Zjky
MzQwZGQwOWU5ZGE2OCI7CisvLyBDb21tb24gY2hlY2tzdW1zLgorY29uc3Qgc3RkOjpzdHJpbmcg
YXVkaW9fY2hlY2tzdW0gPQorICAgIEFjbVJlY2VpdmVyQml0RXhhY3RuZXNzT2xkQXBpOjpQbGF0
Zm9ybUNoZWNrc3VtKAorICAgICAgICBhdWRpb19tYXliZV9zc2UsCisgICAgICAgIGF1ZGlvX21h
eWJlX3NzZSwKKyAgICAgICAgIjQzOWU5N2FkMTkzMmM0OTkyM2I1ZGEwMjljMTdkZDVlIiwKKyAg
ICAgICAgIjAzOGVjOTBmNWYzZmMyMzIwZjMwOTBmOGVjZWY2YmI3IiwKKyAgICAgICAgIjAzOGVj
OTBmNWYzZmMyMzIwZjMwOTBmOGVjZWY2YmI3Iik7Citjb25zdCBzdGQ6OnN0cmluZyBwYXlsb2Fk
X2NoZWNrc3VtID0KKyAgICBBY21SZWNlaXZlckJpdEV4YWN0bmVzc09sZEFwaTo6UGxhdGZvcm1D
aGVja3N1bSgKKyAgICAgICAgcGF5bG9hZF9tYXliZV9zc2UsCisgICAgICAgIHBheWxvYWRfbWF5
YmVfc3NlLAorICAgICAgICAiYWI4OGIxYTA0OWMzNmJkZmViN2U4YjA1N2VmNjk4MmEiLAorICAg
ICAgICAiMjdmZWY3Yjc5OTM5MzM0N2VjM2I1Njk0MzY5YTFjMzYiLAorICAgICAgICAiMjdmZWY3
Yjc5OTM5MzM0N2VjM2I1Njk0MzY5YTFjMzYiKTsKK307ICAvLyBuYW1lc3BhY2UKKwogVEVTVF9G
KEFjbVNlbmRlckJpdEV4YWN0bmVzc09sZEFwaSwgT3B1c19zdGVyZW9fMjBtcykgewogICBBU1NF
UlRfTk9fRkFUQUxfRkFJTFVSRShTZXRVcFRlc3QoIm9wdXMiLCA0ODAwMCwgMiwgMTIwLCA5NjAs
IDk2MCkpOwotICBSdW4oQWNtUmVjZWl2ZXJCaXRFeGFjdG5lc3NPbGRBcGk6OlBsYXRmb3JtQ2hl
Y2tzdW0oCi0gICAgICAgICAgIjNlMjg1Yjc0NTEwZTYyMDYyZmJkODE0MmRhY2QxNmU5IiwKLSAg
ICAgICAgICAiM2UyODViNzQ1MTBlNjIwNjJmYmQ4MTQyZGFjZDE2ZTkiLAotICAgICAgICAgICI0
MzllOTdhZDE5MzJjNDk5MjNiNWRhMDI5YzE3ZGQ1ZSIsCi0gICAgICAgICAgIjAzOGVjOTBmNWYz
ZmMyMzIwZjMwOTBmOGVjZWY2YmI3IiwKLSAgICAgICAgICAiMDM4ZWM5MGY1ZjNmYzIzMjBmMzA5
MGY4ZWNlZjZiYjciKSwKLSAgICAgIEFjbVJlY2VpdmVyQml0RXhhY3RuZXNzT2xkQXBpOjpQbGF0
Zm9ybUNoZWNrc3VtKAotICAgICAgICAgICI3OGNmOGYwMzE1NzM1OGFjZGM2OWY2ODM1Y2FhMGQ5
YiIsCi0gICAgICAgICAgIjc4Y2Y4ZjAzMTU3MzU4YWNkYzY5ZjY4MzVjYWEwZDliIiwKLSAgICAg
ICAgICAiYWI4OGIxYTA0OWMzNmJkZmViN2U4YjA1N2VmNjk4MmEiLAotICAgICAgICAgICIyN2Zl
ZjdiNzk5MzkzMzQ3ZWMzYjU2OTQzNjlhMWMzNiIsCi0gICAgICAgICAgIjI3ZmVmN2I3OTkzOTMz
NDdlYzNiNTY5NDM2OWExYzM2IiksCi0gICAgICA1MCwgdGVzdDo6QWNtUmVjZWl2ZVRlc3RPbGRB
cGk6OmtTdGVyZW9PdXRwdXQpOworICBSdW4oYXVkaW9fY2hlY2tzdW0sIHBheWxvYWRfY2hlY2tz
dW0sIDUwLAorICAgICAgdGVzdDo6QWNtUmVjZWl2ZVRlc3RPbGRBcGk6OmtTdGVyZW9PdXRwdXQp
OwogfQogCiBURVNUX0YoQWNtU2VuZGVyQml0RXhhY3RuZXNzTmV3QXBpLCBNQVlCRV9PcHVzRnJv
bUZvcm1hdF9zdGVyZW9fMjBtcykgewpAQCAtMTQ2MCwxOSArMTQ4NCw4IEBAIFRFU1RfRihBY21T
ZW5kZXJCaXRFeGFjdG5lc3NOZXdBcGksIE1BWUJFX09wdXNGcm9tRm9ybWF0X3N0ZXJlb18yMG1z
KSB7CiAgICAgICBTZHBBdWRpb0Zvcm1hdCgib3B1cyIsIDQ4MDAwLCAyLCB7eyJzdGVyZW8iLCAi
MSJ9fSkpOwogICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShTZXRVcFRlc3RFeHRlcm5hbEVuY29k
ZXIoCiAgICAgICBBdWRpb0VuY29kZXJPcHVzOjpNYWtlQXVkaW9FbmNvZGVyKCpjb25maWcsIDEy
MCksIDEyMCkpOwotICBSdW4oQWNtUmVjZWl2ZXJCaXRFeGFjdG5lc3NPbGRBcGk6OlBsYXRmb3Jt
Q2hlY2tzdW0oCi0gICAgICAgICAgIjNlMjg1Yjc0NTEwZTYyMDYyZmJkODE0MmRhY2QxNmU5IiwK
LSAgICAgICAgICAiM2UyODViNzQ1MTBlNjIwNjJmYmQ4MTQyZGFjZDE2ZTkiLAotICAgICAgICAg
ICI0MzllOTdhZDE5MzJjNDk5MjNiNWRhMDI5YzE3ZGQ1ZSIsCi0gICAgICAgICAgIjAzOGVjOTBm
NWYzZmMyMzIwZjMwOTBmOGVjZWY2YmI3IiwKLSAgICAgICAgICAiMDM4ZWM5MGY1ZjNmYzIzMjBm
MzA5MGY4ZWNlZjZiYjciKSwKLSAgICAgIEFjbVJlY2VpdmVyQml0RXhhY3RuZXNzT2xkQXBpOjpQ
bGF0Zm9ybUNoZWNrc3VtKAotICAgICAgICAgICI3OGNmOGYwMzE1NzM1OGFjZGM2OWY2ODM1Y2Fh
MGQ5YiIsCi0gICAgICAgICAgIjc4Y2Y4ZjAzMTU3MzU4YWNkYzY5ZjY4MzVjYWEwZDliIiwKLSAg
ICAgICAgICAiYWI4OGIxYTA0OWMzNmJkZmViN2U4YjA1N2VmNjk4MmEiLAotICAgICAgICAgICIy
N2ZlZjdiNzk5MzkzMzQ3ZWMzYjU2OTQzNjlhMWMzNiIsCi0gICAgICAgICAgIjI3ZmVmN2I3OTkz
OTMzNDdlYzNiNTY5NDM2OWExYzM2IiksCi0gICAgICA1MCwgdGVzdDo6QWNtUmVjZWl2ZVRlc3RP
bGRBcGk6OmtTdGVyZW9PdXRwdXQpOworICBSdW4oYXVkaW9fY2hlY2tzdW0sIHBheWxvYWRfY2hl
Y2tzdW0sIDUwLAorICAgICAgdGVzdDo6QWNtUmVjZWl2ZVRlc3RPbGRBcGk6OmtTdGVyZW9PdXRw
dXQpOwogfQogCiBURVNUX0YoQWNtU2VuZGVyQml0RXhhY3RuZXNzTmV3QXBpLCBPcHVzRnJvbUZv
cm1hdF9zdGVyZW9fMjBtc192b2lwKSB7CkBAIC0xNDgyLDE1ICsxNDk1LDE5IEBAIFRFU1RfRihB
Y21TZW5kZXJCaXRFeGFjdG5lc3NOZXdBcGksIE9wdXNGcm9tRm9ybWF0X3N0ZXJlb18yMG1zX3Zv
aXApIHsKICAgY29uZmlnLT5hcHBsaWNhdGlvbiA9IEF1ZGlvRW5jb2Rlck9wdXNDb25maWc6OkFw
cGxpY2F0aW9uTW9kZTo6a1ZvaXA7CiAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKFNldFVwVGVz
dEV4dGVybmFsRW5jb2RlcigKICAgICAgIEF1ZGlvRW5jb2Rlck9wdXM6Ok1ha2VBdWRpb0VuY29k
ZXIoKmNvbmZpZywgMTIwKSwgMTIwKSk7CisgIC8vIENoZWNrc3VtIGRlcGVuZHMgb24gbGlib3B1
cyBiZWluZyBjb21waWxlZCB3aXRoIG9yIHdpdGhvdXQgU1NFLgorICBjb25zdCBzdGQ6OnN0cmlu
ZyBhdWRpb19tYXliZV9zc2UgPQorICAgICAgImIwMzI1ZGY0ZTgxMDRmMDRlMDNhZjIzYzBiNzU4
MDBlfCIKKyAgICAgICIzY2Q0ZTFiYzJhY2Q5NDQwYmI5ZTk3YWYzNDA4MGZmYyI7CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIHBheWxvYWRfbWF5YmVfc3NlID0KKyAgICAgICI0ZWFiMjI1OWI2ZmUyNGMy
MmRkMjQyYTExM2UwYjNkOXwiCisgICAgICAiNGZjMGFmMGFhMDZjMjY0NTRhZjA5ODMyZDNlYzFi
NGUiOwogICBSdW4oQWNtUmVjZWl2ZXJCaXRFeGFjdG5lc3NPbGRBcGk6OlBsYXRmb3JtQ2hlY2tz
dW0oCi0gICAgICAgICAgImIwMzI1ZGY0ZTgxMDRmMDRlMDNhZjIzYzBiNzU4MDBlIiwKLSAgICAg
ICAgICAiYjAzMjVkZjRlODEwNGYwNGUwM2FmMjNjMGI3NTgwMGUiLAotICAgICAgICAgICIxYzgx
MTIxZjVkOTI4NmE1YTg2NWQwMWRiYWIyMmNlOCIsCisgICAgICAgICAgYXVkaW9fbWF5YmVfc3Nl
LCBhdWRpb19tYXliZV9zc2UsICIxYzgxMTIxZjVkOTI4NmE1YTg2NWQwMWRiYWIyMmNlOCIsCiAg
ICAgICAgICAgIjExZDU0N2Y4OTE0MmU5ZWYwM2YzN2Q3Y2E3ZjMyMzc5IiwKICAgICAgICAgICAi
MTFkNTQ3Zjg5MTQyZTllZjAzZjM3ZDdjYTdmMzIzNzkiKSwKICAgICAgIEFjbVJlY2VpdmVyQml0
RXhhY3RuZXNzT2xkQXBpOjpQbGF0Zm9ybUNoZWNrc3VtKAotICAgICAgICAgICI0ZWFiMjI1OWI2
ZmUyNGMyMmRkMjQyYTExM2UwYjNkOSIsCi0gICAgICAgICAgIjRlYWIyMjU5YjZmZTI0YzIyZGQy
NDJhMTEzZTBiM2Q5IiwKKyAgICAgICAgICBwYXlsb2FkX21heWJlX3NzZSwgcGF5bG9hZF9tYXli
ZV9zc2UsCiAgICAgICAgICAgIjgzOWVhNjAzOTk0NDcyNjhlZTBmMDI2MmE1MGI3NWZkIiwKICAg
ICAgICAgICAiMTgxNWZkNTU4OWNhZDBjNmY2Y2Y5NDZjNzZiODFhZWIiLAogICAgICAgICAgICIx
ODE1ZmQ1NTg5Y2FkMGM2ZjZjZjk0NmM3NmI4MWFlYiIpLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNt
Mi9jYWxsX3N0YXRpc3RpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvY2FsbF9zdGF0aXN0aWNzLmgKaW5kZXgg
OWRjZWQ2NDc1YTgwYzc3M2Y0YzE0MjkwYmY3Zjc3MDY3NGFlMDM3YS4uNWQ5NGFjNDUzODkxZGI4
ZDM1MWI3NTU2OTE0NTk5NmQ0ZmVmZWE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jYWxsX3N0
YXRpc3RpY3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NhbGxfc3RhdGlzdGljcy5oCkBAIC0xMiw3ICsx
Miw3IEBACiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FDTTJfQ0FMTF9TVEFUSVNUSUNT
X0hfCiAKICNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKLSNpbmNsdWRlICJjb21t
b25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZV90eXBlZGVmcy5oIgogCiAv
LwogLy8gVGhpcyBjbGFzcyBpcyBmb3IgYm9vayBrZWVwaW5nIG9mIGNhbGxzIHRvIEFDTS4gSXQg
aXMgbm90IHVzZWZ1bCB0byBsb2cgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVjX21h
bmFnZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVjX21hbmFnZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGYyOWUwZjFhMWUyN2I5MGNjOTA1NGQ4Mzc3ZWIyZjg1YjRkY2Q1MDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9j
b2RlY19tYW5hZ2VyLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLS8qCi0gKiAg
Q29weXJpZ2h0IChjKSAyMDE1IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
LSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jb2Rl
Y19tYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLS8vI2luY2x1ZGUg
InJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hY20yL3JlbnRfYV9jb2RlYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLQot
bmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgYWNtMiB7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8v
IENoZWNrIGlmIHRoZSBnaXZlbiBjb2RlYyBpcyBhIHZhbGlkIHRvIGJlIHJlZ2lzdGVyZWQgYXMg
c2VuZCBjb2RlYy4KLWludCBJc1ZhbGlkU2VuZENvZGVjKGNvbnN0IENvZGVjSW5zdCYgc2VuZF9j
b2RlYykgewotICBpZiAoKHNlbmRfY29kZWMuY2hhbm5lbHMgIT0gMSkgJiYgKHNlbmRfY29kZWMu
Y2hhbm5lbHMgIT0gMikpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiV3JvbmcgbnVtYmVy
IG9mIGNoYW5uZWxzICgiIDw8IHNlbmRfY29kZWMuY2hhbm5lbHMKLSAgICAgICAgICAgICAgICAg
ICAgICA8PCAiKSwgb25seSBtb25vIGFuZCBzdGVyZW8gYXJlIHN1cHBvcnRlZCkiOwotICAgIHJl
dHVybiAtMTsKLSAgfQotCi0gIGF1dG8gbWF5YmVfY29kZWNfaWQgPSBSZW50QUNvZGVjOjpDb2Rl
Y0lkQnlJbnN0KHNlbmRfY29kZWMpOwotICBpZiAoIW1heWJlX2NvZGVjX2lkKSB7Ci0gICAgUlRD
X0xPRyhMU19FUlJPUikgPDwgIkludmFsaWQgY29kZWMgc2V0dGluZyBmb3IgdGhlIHNlbmQgY29k
ZWMuIjsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLQotICAvLyBUZWxlcGhvbmUtZXZlbnQgY2Fubm90
IGJlIGEgc2VuZCBjb2RlYy4KLSAgaWYgKCFTVFJfQ0FTRV9DTVAoc2VuZF9jb2RlYy5wbG5hbWUs
ICJ0ZWxlcGhvbmUtZXZlbnQiKSkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJ0ZWxlcGhv
bmUtZXZlbnQgY2Fubm90IGJlIGEgc2VuZCBjb2RlYyI7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0K
LSAgaWYgKCFSZW50QUNvZGVjOjpJc1N1cHBvcnRlZE51bUNoYW5uZWxzKCptYXliZV9jb2RlY19p
ZCwgc2VuZF9jb2RlYy5jaGFubmVscykKLSAgICAgICAgICAgLnZhbHVlX29yKGZhbHNlKSkgewot
ICAgIFJUQ19MT0coTFNfRVJST1IpIDw8IHNlbmRfY29kZWMuY2hhbm5lbHMKLSAgICAgICAgICAg
ICAgICAgICAgICA8PCAiIG51bWJlciBvZiBjaGFubmVscyBub3Qgc3VwcG9ydGVkIGZvciAiCi0g
ICAgICAgICAgICAgICAgICAgICAgPDwgc2VuZF9jb2RlYy5wbG5hbWUgPDwgIi4iOwotICAgIHJl
dHVybiAtMTsKLSAgfQotICByZXR1cm4gUmVudEFDb2RlYzo6Q29kZWNJbmRleEZyb21JZCgqbWF5
YmVfY29kZWNfaWQpLnZhbHVlX29yKC0xKTsKLX0KLQotYm9vbCBJc09wdXMoY29uc3QgQ29kZWNJ
bnN0JiBjb2RlYykgewotICByZXR1cm4KLSNpZmRlZiBXRUJSVENfQ09ERUNfT1BVUwotICAgICAg
IVNUUl9DQVNFX0NNUChjb2RlYy5wbG5hbWUsICJvcHVzIikgfHwKLSNlbmRpZgotICAgICAgZmFs
c2U7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1Db2RlY01hbmFnZXI6OkNvZGVjTWFuYWdlcigp
IHsKLSAgdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZyb21UaHJlYWQoKTsKLX0KLQotQ29kZWNNYW5h
Z2VyOjp+Q29kZWNNYW5hZ2VyKCkgPSBkZWZhdWx0OwotCi1ib29sIENvZGVjTWFuYWdlcjo6UmVn
aXN0ZXJFbmNvZGVyKGNvbnN0IENvZGVjSW5zdCYgc2VuZF9jb2RlYykgewotICBSVENfRENIRUNL
KHRocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBpbnQgY29kZWNfaWQg
PSBJc1ZhbGlkU2VuZENvZGVjKHNlbmRfY29kZWMpOwotCi0gIC8vIENoZWNrIGZvciByZXBvcnRl
ZCBlcnJvcnMgZnJvbSBmdW5jdGlvbiBJc1ZhbGlkU2VuZENvZGVjKCkuCi0gIGlmIChjb2RlY19p
ZCA8IDApIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBzd2l0Y2ggKFJlbnRBQ29kZWM6
OlJlZ2lzdGVyUmVkUGF5bG9hZFR5cGUoCi0gICAgICAmY29kZWNfc3RhY2tfcGFyYW1zXy5yZWRf
cGF5bG9hZF90eXBlcywgc2VuZF9jb2RlYykpIHsKLSAgICBjYXNlIFJlbnRBQ29kZWM6OlJlZ2lz
dHJhdGlvblJlc3VsdDo6a09rOgotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBSZW50QUNv
ZGVjOjpSZWdpc3RyYXRpb25SZXN1bHQ6OmtCYWRGcmVxOgotICAgICAgUlRDX0xPRyhMU19FUlJP
UikKLSAgICAgICAgICA8PCAiUmVnaXN0ZXJTZW5kQ29kZWMoKSBmYWlsZWQsIGludmFsaWQgZnJl
cXVlbmN5IGZvciBSRUQiCi0gICAgICAgICAgICAgIiByZWdpc3RyYXRpb24iOwotICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGNhc2UgUmVudEFDb2RlYzo6UmVnaXN0cmF0aW9uUmVzdWx0OjprU2tp
cDoKLSAgICAgIGJyZWFrOwotICB9Ci0gIHN3aXRjaCAoUmVudEFDb2RlYzo6UmVnaXN0ZXJDbmdQ
YXlsb2FkVHlwZSgKLSAgICAgICZjb2RlY19zdGFja19wYXJhbXNfLmNuZ19wYXlsb2FkX3R5cGVz
LCBzZW5kX2NvZGVjKSkgewotICAgIGNhc2UgUmVudEFDb2RlYzo6UmVnaXN0cmF0aW9uUmVzdWx0
OjprT2s6Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFJlbnRBQ29kZWM6OlJlZ2lzdHJh
dGlvblJlc3VsdDo6a0JhZEZyZXE6Ci0gICAgICBSVENfTE9HKExTX0VSUk9SKQotICAgICAgICAg
IDw8ICJSZWdpc3RlclNlbmRDb2RlYygpIGZhaWxlZCwgaW52YWxpZCBmcmVxdWVuY3kgZm9yIENO
RyIKLSAgICAgICAgICAgICAiIHJlZ2lzdHJhdGlvbiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgY2FzZSBSZW50QUNvZGVjOjpSZWdpc3RyYXRpb25SZXN1bHQ6OmtTa2lwOgotICAgICAgYnJl
YWs7Ci0gIH0KLQotICBpZiAoSXNPcHVzKHNlbmRfY29kZWMpKSB7Ci0gICAgLy8gVkFEL0RUWCBu
b3Qgc3VwcG9ydGVkLgotICAgIGNvZGVjX3N0YWNrX3BhcmFtc18udXNlX2NuZyA9IGZhbHNlOwot
ICB9Ci0KLSAgc2VuZF9jb2RlY19pbnN0XyA9IHNlbmRfY29kZWM7Ci0gIHJlY3JlYXRlX2VuY29k
ZXJfID0gdHJ1ZTsgIC8vIENhbGxlciBtdXN0IHJlY3JlYXRlIGl0LgotICByZXR1cm4gdHJ1ZTsK
LX0KLQotQ29kZWNJbnN0IENvZGVjTWFuYWdlcjo6Rm9yZ2VDb2RlY0luc3QoCi0gICAgY29uc3Qg
QXVkaW9FbmNvZGVyKiBleHRlcm5hbF9zcGVlY2hfZW5jb2RlcikgewotICBDb2RlY0luc3QgY2k7
Ci0gIGNpLmNoYW5uZWxzID0gZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXItPk51bUNoYW5uZWxzKCk7
Ci0gIGNpLnBsZnJlcSA9IGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyLT5TYW1wbGVSYXRlSHooKTsK
LSAgY2kucGFjc2l6ZSA9IHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KAotICAgICAgc3RhdGljX2Nhc3Q8
aW50PihleHRlcm5hbF9zcGVlY2hfZW5jb2Rlci0+TWF4MTBNc0ZyYW1lc0luQVBhY2tldCgpICoK
LSAgICAgICAgICAgICAgICAgICAgICAgY2kucGxmcmVxKSwKLSAgICAgIDEwMCk7Ci0gIGNpLnBs
dHlwZSA9IC0xOyAgLy8gTm90IHZhbGlkLgotICBjaS5yYXRlID0gLTE7ICAgIC8vIE5vdCB2YWxp
ZC4KLSAgc3RhdGljIGNvbnN0IGNoYXIga05hbWVbXSA9ICJleHRlcm5hbCI7Ci0gIG1lbWNweShj
aS5wbG5hbWUsIGtOYW1lLCBzaXplb2Yoa05hbWUpKTsKLSAgcmV0dXJuIGNpOwotfQotCi1ib29s
IENvZGVjTWFuYWdlcjo6U2V0Q29weVJlZChib29sIGVuYWJsZSkgewotICBpZiAoZW5hYmxlICYm
IGNvZGVjX3N0YWNrX3BhcmFtc18udXNlX2NvZGVjX2ZlYykgewotICAgIFJUQ19MT0coTFNfV0FS
TklORykgPDwgIkNvZGVjIGludGVybmFsIEZFQyBhbmQgUkVEIGNhbm5vdCBiZSBjby1lbmFibGVk
LiI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGlmIChlbmFibGUgJiYgc2VuZF9jb2RlY19p
bnN0XyAmJgotICAgICAgY29kZWNfc3RhY2tfcGFyYW1zXy5yZWRfcGF5bG9hZF90eXBlcy5jb3Vu
dChzZW5kX2NvZGVjX2luc3RfLT5wbGZyZXEpIDwKLSAgICAgICAgICAxKSB7Ci0gICAgUlRDX0xP
RyhMU19XQVJOSU5HKSA8PCAiQ2Fubm90IGVuYWJsZSBSRUQgYXQgIiA8PCBzZW5kX2NvZGVjX2lu
c3RfLT5wbGZyZXEKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgSHouIjsKLSAgICByZXR1
cm4gZmFsc2U7Ci0gIH0KLSAgY29kZWNfc3RhY2tfcGFyYW1zXy51c2VfcmVkID0gZW5hYmxlOwot
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBDb2RlY01hbmFnZXI6OlNldFZBRChib29sIGVuYWJs
ZSwgQUNNVkFETW9kZSBtb2RlKSB7Ci0gIC8vIFNhbml0eSBjaGVjayBvZiB0aGUgbW9kZS4KLSAg
UlRDX0RDSEVDSyhtb2RlID09IFZBRE5vcm1hbCB8fCBtb2RlID09IFZBRExvd0JpdHJhdGUgfHwg
bW9kZSA9PSBWQURBZ2dyIHx8Ci0gICAgICAgICAgICAgbW9kZSA9PSBWQURWZXJ5QWdncik7Ci0K
LSAgLy8gQ2hlY2sgdGhhdCB0aGUgc2VuZCBjb2RlYyBpcyBtb25vLiBXZSBkb24ndCBzdXBwb3J0
IFZBRC9EVFggZm9yIHN0ZXJlbwotICAvLyBzZW5kaW5nLgotICBjb25zdCBib29sIHN0ZXJlb19z
ZW5kID0KLSAgICAgIGNvZGVjX3N0YWNrX3BhcmFtc18uc3BlZWNoX2VuY29kZXIKLSAgICAgICAg
ICA/IChjb2RlY19zdGFja19wYXJhbXNfLnNwZWVjaF9lbmNvZGVyLT5OdW1DaGFubmVscygpICE9
IDEpCi0gICAgICAgICAgOiBmYWxzZTsKLSAgaWYgKGVuYWJsZSAmJiBzdGVyZW9fc2VuZCkgewot
ICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWQUQvRFRYIG5vdCBzdXBwb3J0ZWQgZm9yIHN0ZXJl
byBzZW5kaW5nIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvLyBUT0RPKGt3aWJlcmcp
OiBUaGlzIGRvZXNuJ3QgcHJvdGVjdCBPcHVzIHdoZW4gaW5qZWN0ZWQgYXMgYW4gZXh0ZXJuYWwK
LSAgLy8gZW5jb2Rlci4KLSAgaWYgKHNlbmRfY29kZWNfaW5zdF8gJiYgSXNPcHVzKCpzZW5kX2Nv
ZGVjX2luc3RfKSkgewotICAgIC8vIFZBRC9EVFggbm90IHN1cHBvcnRlZCwgYnV0IGRvbid0IGZh
aWwuCi0gICAgZW5hYmxlID0gZmFsc2U7Ci0gIH0KLQotICBjb2RlY19zdGFja19wYXJhbXNfLnVz
ZV9jbmcgPSBlbmFibGU7Ci0gIGNvZGVjX3N0YWNrX3BhcmFtc18udmFkX21vZGUgPSBtb2RlOwot
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBDb2RlY01hbmFnZXI6OlNldENvZGVjRkVDKGJvb2wg
ZW5hYmxlX2NvZGVjX2ZlYykgewotICBpZiAoZW5hYmxlX2NvZGVjX2ZlYyAmJiBjb2RlY19zdGFj
a19wYXJhbXNfLnVzZV9yZWQpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJDb2RlYyBp
bnRlcm5hbCBGRUMgYW5kIFJFRCBjYW5ub3QgYmUgY28tZW5hYmxlZC4iOwotICAgIHJldHVybiBm
YWxzZTsKLSAgfQotCi0gIGNvZGVjX3N0YWNrX3BhcmFtc18udXNlX2NvZGVjX2ZlYyA9IGVuYWJs
ZV9jb2RlY19mZWM7Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIENvZGVjTWFuYWdlcjo6TWFr
ZUVuY29kZXIoUmVudEFDb2RlYyogcmFjLCBBdWRpb0NvZGluZ01vZHVsZSogYWNtKSB7Ci0gIFJU
Q19EQ0hFQ0socmFjKTsKLSAgUlRDX0RDSEVDSyhhY20pOwotCi0gIGlmICghcmVjcmVhdGVfZW5j
b2Rlcl8pIHsKLSAgICBib29sIGVycm9yID0gZmFsc2U7Ci0gICAgLy8gVHJ5IHRvIHJlLXVzZSB0
aGUgc3BlZWNoIGVuY29kZXIgd2UndmUgZ2l2ZW4gdG8gdGhlIEFDTS4KLSAgICBhY20tPk1vZGlm
eUVuY29kZXIoWyZdKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmNvZGVyKSB7Ci0g
ICAgICBpZiAoISplbmNvZGVyKSB7Ci0gICAgICAgIC8vIFRoZXJlIGlzIG5vIGV4aXN0aW5nIGVu
Y29kZXIuCi0gICAgICAgIHJlY3JlYXRlX2VuY29kZXJfID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
OwotICAgICAgfQotCi0gICAgICAvLyBFeHRyYWN0IHRoZSBzcGVlY2ggZW5jb2RlciBmcm9tIHRo
ZSBBQ00uCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmMgPSBzdGQ6Om1v
dmUoKmVuY29kZXIpOwotICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgYXV0byBzdWJfZW5j
ID0gZW5jLT5SZWNsYWltQ29udGFpbmVkRW5jb2RlcnMoKTsKLSAgICAgICAgaWYgKHN1Yl9lbmMu
ZW1wdHkoKSkgewotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIFJUQ19DSEVD
S19FUSgxLCBzdWJfZW5jLnNpemUoKSk7Ci0KLSAgICAgICAgLy8gUmVwbGFjZSBlbmMgd2l0aCBp
dHMgc3ViIGVuY29kZXIuIFdlIG5lZWQgdG8gcHV0IHRoZSBzdWIgZW5jb2RlciBpbgotICAgICAg
ICAvLyBhIHRlbXBvcmFyeSBmaXJzdCwgc2luY2Ugb3RoZXJ3aXNlIHRoZSBvbGQgdmFsdWUgb2Yg
ZW5jIHdvdWxkIGJlCi0gICAgICAgIC8vIGRlc3Ryb3llZCBiZWZvcmUgdGhlIG5ldyB2YWx1ZSBn
b3QgYXNzaWduZWQsIHdoaWNoIHdvdWxkIGJlIGJhZAotICAgICAgICAvLyBzaW5jZSB0aGUgbmV3
IHZhbHVlIGlzIGEgcGFydCBvZiB0aGUgb2xkIHZhbHVlLgotICAgICAgICBhdXRvIHRtcF9lbmMg
PSBzdGQ6Om1vdmUoc3ViX2VuY1swXSk7Ci0gICAgICAgIGVuYyA9IHN0ZDo6bW92ZSh0bXBfZW5j
KTsKLSAgICAgIH0KLQotICAgICAgLy8gV3JhcCBpdCBpbiBhIG5ldyBlbmNvZGVyIHN0YWNrIGFu
ZCBwdXQgaXQgYmFjay4KLSAgICAgIGNvZGVjX3N0YWNrX3BhcmFtc18uc3BlZWNoX2VuY29kZXIg
PSBzdGQ6Om1vdmUoZW5jKTsKLSAgICAgICplbmNvZGVyID0gcmFjLT5SZW50RW5jb2RlclN0YWNr
KCZjb2RlY19zdGFja19wYXJhbXNfKTsKLSAgICAgIGlmICghKmVuY29kZXIpIHsKLSAgICAgICAg
ZXJyb3IgPSB0cnVlOwotICAgICAgfQotICAgIH0pOwotICAgIGlmIChlcnJvcikgewotICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoIXJlY3JlYXRlX2VuY29kZXJfKSB7Ci0gICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0KLQotICBpZiAoIXNlbmRfY29kZWNfaW5zdF8pIHsK
LSAgICAvLyBXZSBkb24ndCBoYXZlIHRoZSBpbmZvcm1hdGlvbiB3ZSBuZWVkIHRvIGNyZWF0ZSBh
IG5ldyBzcGVlY2ggZW5jb2Rlci4KLSAgICAvLyAoVGhpcyBpcyBub3QgYW4gZXJyb3IuKQotICAg
IHJldHVybiB0cnVlOwotICB9Ci0KLSAgY29kZWNfc3RhY2tfcGFyYW1zXy5zcGVlY2hfZW5jb2Rl
ciA9IHJhYy0+UmVudEVuY29kZXIoKnNlbmRfY29kZWNfaW5zdF8pOwotICBhdXRvIHN0YWNrID0g
cmFjLT5SZW50RW5jb2RlclN0YWNrKCZjb2RlY19zdGFja19wYXJhbXNfKTsKLSAgaWYgKCFzdGFj
aykgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBhY20tPlNldEVuY29kZXIoc3RkOjptb3Zl
KHN0YWNrKSk7Ci0gIHJlY3JlYXRlX2VuY29kZXJfID0gZmFsc2U7Ci0gIHJldHVybiB0cnVlOwot
fQotCi19ICAvLyBuYW1lc3BhY2UgYWNtMgotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvYWNtMi9jb2RlY19tYW5hZ2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVjX21hbmFn
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZiYWQ5NjcwODgwNTA4Yzc2ZjE2
ODE1NzY5ODUzMDcwNTcxZWQ4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVjX21hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDc1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE1PRFVMRVNfQVVE
SU9fQ09ESU5HX0FDTTJfQ09ERUNfTUFOQUdFUl9IXwotI2RlZmluZSBNT0RVTEVTX0FVRElPX0NP
RElOR19BQ00yX0NPREVDX01BTkFHRVJfSF8KLQotI2luY2x1ZGUgPG1hcD4KLQotI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIv
cmVudF9hX2NvZGVjLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9h
dWRpb19jb2RpbmdfbW9kdWxlLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvaW5j
bHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgi
Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1jbGFzcyBBdWRpb0RlY29kZXI7Ci1jbGFzcyBBdWRp
b0VuY29kZXI7Ci0KLW5hbWVzcGFjZSBhY20yIHsKLQotY2xhc3MgQ29kZWNNYW5hZ2VyIGZpbmFs
IHsKLSBwdWJsaWM6Ci0gIENvZGVjTWFuYWdlcigpOwotICB+Q29kZWNNYW5hZ2VyKCk7Ci0KLSAg
Ly8gUGFyc2VzIHRoZSBnaXZlbiBzcGVjaWZpY2F0aW9uLiBPbiBzdWNjZXNzLCByZXR1cm5zIHRy
dWUgYW5kIHVwZGF0ZXMgdGhlCi0gIC8vIHN0b3JlZCBDb2RlY0luc3QgYW5kIHN0YWNrIHBhcmFt
ZXRlcnM7IG9uIGVycm9yLCByZXR1cm5zIGZhbHNlLgotICBib29sIFJlZ2lzdGVyRW5jb2Rlcihj
b25zdCBDb2RlY0luc3QmIHNlbmRfY29kZWMpOwotCi0gIHN0YXRpYyBDb2RlY0luc3QgRm9yZ2VD
b2RlY0luc3QoY29uc3QgQXVkaW9FbmNvZGVyKiBleHRlcm5hbF9zcGVlY2hfZW5jb2Rlcik7Ci0K
LSAgY29uc3QgQ29kZWNJbnN0KiBHZXRDb2RlY0luc3QoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHNl
bmRfY29kZWNfaW5zdF8gPyAmKnNlbmRfY29kZWNfaW5zdF8gOiBudWxscHRyOwotICB9Ci0KLSAg
dm9pZCBVbnNldENvZGVjSW5zdCgpIHsgc2VuZF9jb2RlY19pbnN0XyA9IGFic2w6Om51bGxvcHQ7
IH0KLQotICBjb25zdCBSZW50QUNvZGVjOjpTdGFja1BhcmFtZXRlcnMqIEdldFN0YWNrUGFyYW1z
KCkgY29uc3QgewotICAgIHJldHVybiAmY29kZWNfc3RhY2tfcGFyYW1zXzsKLSAgfQotICBSZW50
QUNvZGVjOjpTdGFja1BhcmFtZXRlcnMqIEdldFN0YWNrUGFyYW1zKCkgeyByZXR1cm4gJmNvZGVj
X3N0YWNrX3BhcmFtc187IH0KLQotICBib29sIFNldENvcHlSZWQoYm9vbCBlbmFibGUpOwotCi0g
IGJvb2wgU2V0VkFEKGJvb2wgZW5hYmxlLCBBQ01WQURNb2RlIG1vZGUpOwotCi0gIGJvb2wgU2V0
Q29kZWNGRUMoYm9vbCBlbmFibGVfY29kZWNfZmVjKTsKLQotICAvLyBVc2VzIHRoZSBwcm92aWRl
ZCBSZW50LUEtQ29kZWMgdG8gY3JlYXRlIGEgbmV3IGVuY29kZXIgc3RhY2ssIGlmIHdlIGhhdmUg
YQotICAvLyBjb21wbGV0ZSBzcGVjaWZpY2F0aW9uOyBpZiBzbywgaXQgaXMgdGhlbiBwYXNzZWQg
dG8gc2V0X2VuY29kZXIuIE9uIGVycm9yLAotICAvLyByZXR1cm5zIGZhbHNlLgotICBib29sIE1h
a2VFbmNvZGVyKFJlbnRBQ29kZWMqIHJhYywgQXVkaW9Db2RpbmdNb2R1bGUqIGFjbSk7Ci0KLSBw
cml2YXRlOgotICBydGM6OlRocmVhZENoZWNrZXIgdGhyZWFkX2NoZWNrZXJfOwotICBhYnNsOjpv
cHRpb25hbDxDb2RlY0luc3Q+IHNlbmRfY29kZWNfaW5zdF87Ci0gIFJlbnRBQ29kZWM6OlN0YWNr
UGFyYW1ldGVycyBjb2RlY19zdGFja19wYXJhbXNfOwotICBib29sIHJlY3JlYXRlX2VuY29kZXJf
ID0gdHJ1ZTsgIC8vIE5lZWQgdG8gcmVjcmVhdGUgZW5jb2Rlcj8KLQotICBSVENfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKENvZGVjTWFuYWdlcik7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgYWNt
MgotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotI2VuZGlmICAvLyBNT0RVTEVTX0FVRElPX0NPRElO
R19BQ00yX0NPREVDX01BTkFHRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvY29kZWNfbWFu
YWdlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvY29kZWNfbWFuYWdlcl91bml0dGVzdC5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmE1ZWE1ZjUyZTI1NTYyNDhkNmMwN2Q0MmVj
M2ZhMmI0YTNiMzg3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9hY20yL2NvZGVjX21hbmFnZXJfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApA
QCAtMSw3MCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNSBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9y
eT4KLQotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvY29kZWNfbWFuYWdlci5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmgiCi0j
aW5jbHVkZSAidGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgInRlc3QvbW9ja19hdWRpb19lbmNvZGVy
LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIGFjbTIgewotCi11c2luZyA6OnRl
c3Rpbmc6OlJldHVybjsKLQotbmFtZXNwYWNlIHsKLQotLy8gQ3JlYXRlIGEgTW9ja0F1ZGlvRW5j
b2RlciB3aXRoIHNvbWUgcmVhc29uYWJsZSBkZWZhdWx0IGJlaGF2aW9yLgotc3RkOjp1bmlxdWVf
cHRyPE1vY2tBdWRpb0VuY29kZXI+IENyZWF0ZU1vY2tFbmNvZGVyKCkgewotICBhdXRvIGVuYyA9
IHN0ZDo6dW5pcXVlX3B0cjxNb2NrQXVkaW9FbmNvZGVyPihuZXcgTW9ja0F1ZGlvRW5jb2Rlcik7
Ci0gIEVYUEVDVF9DQUxMKCplbmMsIFNhbXBsZVJhdGVIeigpKS5XaWxsUmVwZWF0ZWRseShSZXR1
cm4oODAwMCkpOwotICBFWFBFQ1RfQ0FMTCgqZW5jLCBOdW1DaGFubmVscygpKS5XaWxsUmVwZWF0
ZWRseShSZXR1cm4oMSkpOwotICBFWFBFQ1RfQ0FMTCgqZW5jLCBNYXgxME1zRnJhbWVzSW5BUGFj
a2V0KCkpLldpbGxSZXBlYXRlZGx5KFJldHVybigxKSk7Ci0gIHJldHVybiBlbmM7Ci19Ci0KLX0g
IC8vIG5hbWVzcGFjZQotCi1URVNUKENvZGVjTWFuYWdlclRlc3QsIEV4dGVybmFsRW5jb2RlckZl
YykgewotICBhdXRvIGVuYzAgPSBDcmVhdGVNb2NrRW5jb2RlcigpOwotICBhdXRvIGVuYzEgPSBD
cmVhdGVNb2NrRW5jb2RlcigpOwotICBhdXRvIGVuYzIgPSBDcmVhdGVNb2NrRW5jb2RlcigpOwot
ICB7Ci0gICAgOjp0ZXN0aW5nOjpJblNlcXVlbmNlIHM7Ci0gICAgRVhQRUNUX0NBTEwoKmVuYzAs
IFNldEZlYyhmYWxzZSkpLldpbGxPbmNlKFJldHVybih0cnVlKSk7Ci0gICAgRVhQRUNUX0NBTEwo
KmVuYzEsIFNldEZlYyh0cnVlKSkuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKLSAgICBFWFBFQ1Rf
Q0FMTCgqZW5jMiwgU2V0RmVjKHRydWUpKS5XaWxsT25jZShSZXR1cm4oZmFsc2UpKTsKLSAgfQot
Ci0gIENvZGVjTWFuYWdlciBjbTsKLSAgUmVudEFDb2RlYyByYWM7Ci0KLSAgLy8gdXNlX2NvZGVj
X2ZlYyBzdGFydHMgb3V0IGZhbHNlLgotICBFWFBFQ1RfRkFMU0UoY20uR2V0U3RhY2tQYXJhbXMo
KS0+dXNlX2NvZGVjX2ZlYyk7Ci0gIGNtLkdldFN0YWNrUGFyYW1zKCktPnNwZWVjaF9lbmNvZGVy
ID0gc3RkOjptb3ZlKGVuYzApOwotICBFWFBFQ1RfVFJVRShyYWMuUmVudEVuY29kZXJTdGFjayhj
bS5HZXRTdGFja1BhcmFtcygpKSk7Ci0gIEVYUEVDVF9GQUxTRShjbS5HZXRTdGFja1BhcmFtcygp
LT51c2VfY29kZWNfZmVjKTsKLQotICAvLyBTZXQgaXQgdG8gdHJ1ZS4KLSAgRVhQRUNUX0VRKHRy
dWUsIGNtLlNldENvZGVjRkVDKHRydWUpKTsKLSAgRVhQRUNUX1RSVUUoY20uR2V0U3RhY2tQYXJh
bXMoKS0+dXNlX2NvZGVjX2ZlYyk7Ci0gIGNtLkdldFN0YWNrUGFyYW1zKCktPnNwZWVjaF9lbmNv
ZGVyID0gc3RkOjptb3ZlKGVuYzEpOwotICBFWFBFQ1RfVFJVRShyYWMuUmVudEVuY29kZXJTdGFj
ayhjbS5HZXRTdGFja1BhcmFtcygpKSk7Ci0gIEVYUEVDVF9UUlVFKGNtLkdldFN0YWNrUGFyYW1z
KCktPnVzZV9jb2RlY19mZWMpOwotCi0gIC8vIFN3aXRjaCB0byBhIGNvZGVjIHRoYXQgZG9lc24n
dCBzdXBwb3J0IGl0LgotICBjbS5HZXRTdGFja1BhcmFtcygpLT5zcGVlY2hfZW5jb2RlciA9IHN0
ZDo6bW92ZShlbmMyKTsKLSAgRVhQRUNUX1RSVUUocmFjLlJlbnRFbmNvZGVyU3RhY2soY20uR2V0
U3RhY2tQYXJhbXMoKSkpOwotICBFWFBFQ1RfRkFMU0UoY20uR2V0U3RhY2tQYXJhbXMoKS0+dXNl
X2NvZGVjX2ZlYyk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBhY20yCi19ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Fj
bTIvcmVudF9hX2NvZGVjLmNjCmluZGV4IDQ1ZDc4ZDc0YTVkZDRlOGE5NmU4NDM1MTEwN2EzYjQx
NjJkY2Q5YTIuLmJmZGRjNDJiYzkxMTg3NmNmNTliNmVkYTg1MDc4MDFiMWQwNmEwZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9h
X2NvZGVjLmNjCkBAIC0xMywzNCArMTMsOSBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx1dGlsaXR5PgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9h
dWRpb19lbmNvZGVyX2NuZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9nNzExL2F1ZGlvX2VuY29kZXJfcGNtLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29k
ZXJfZzcyMi5oIgotI2lmZGVmIFdFQlJUQ19DT0RFQ19JTEJDCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmgiICAvLyBub2duY2hl
Y2sKLSNlbmRpZgotI2lmZGVmIFdFQlJUQ19DT0RFQ19JU0FDRlgKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvaW5jbHVkZS9hdWRpb19kZWNvZGVyX2lzYWNm
aXguaCIgIC8vIG5vZ25jaGVjawotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9pc2FjL2ZpeC9pbmNsdWRlL2F1ZGlvX2VuY29kZXJfaXNhY2ZpeC5oIiAgLy8gbm9nbmNoZWNr
Ci0jZW5kaWYKLSNpZmRlZiBXRUJSVENfQ09ERUNfSVNBQwotI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vaW5jbHVkZS9hdWRpb19kZWNvZGVyX2lzYWMuaCIg
IC8vIG5vZ25jaGVjawotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2Fj
L21haW4vaW5jbHVkZS9hdWRpb19lbmNvZGVyX2lzYWMuaCIgIC8vIG5vZ25jaGVjawotI2VuZGlm
Ci0jaWZkZWYgV0VCUlRDX0NPREVDX09QVVMKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXMuaCIKLSNlbmRpZgotI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9fZW5jb2Rlcl9wY20xNmIuaCIK
LSNpZmRlZiBXRUJSVENfQ09ERUNfUkVECi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL3JlZC9hdWRpb19lbmNvZGVyX2NvcHlfcmVkLmgiICAvLyBub2duY2hlY2sKLSNlbmRp
ZgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX2NvZGVjX2RhdGFiYXNl
LmgiCiAKLSNpZiBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FDRlgpIHx8IGRlZmluZWQoV0VCUlRD
X0NPREVDX0lTQUMpCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMv
bG9ja2VkX2JhbmR3aWR0aF9pbmZvLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiBu
YW1lc3BhY2UgYWNtMiB7CiAKQEAgLTU0LDcgKzI5LDggQEAgYWJzbDo6b3B0aW9uYWw8UmVudEFD
b2RlYzo6Q29kZWNJZD4gUmVudEFDb2RlYzo6Q29kZWNJZEJ5UGFyYW1zKAogCiBhYnNsOjpvcHRp
b25hbDxDb2RlY0luc3Q+IFJlbnRBQ29kZWM6OkNvZGVjSW5zdEJ5SWQoQ29kZWNJZCBjb2RlY19p
ZCkgewogICBhYnNsOjpvcHRpb25hbDxpbnQ+IG1pID0gQ29kZWNJbmRleEZyb21JZChjb2RlY19p
ZCk7Ci0gIHJldHVybiBtaSA/IGFic2w6Om9wdGlvbmFsPENvZGVjSW5zdD4oRGF0YWJhc2UoKVsq
bWldKSA6IGFic2w6Om51bGxvcHQ7CisgIHJldHVybiBtaSA/IGFic2w6Om9wdGlvbmFsPENvZGVj
SW5zdD4oQUNNQ29kZWNEQjo6ZGF0YWJhc2VfWyptaV0pCisgICAgICAgICAgICA6IGFic2w6Om51
bGxvcHQ7CiB9CiAKIGFic2w6Om9wdGlvbmFsPFJlbnRBQ29kZWM6OkNvZGVjSWQ+IFJlbnRBQ29k
ZWM6OkNvZGVjSWRCeUluc3QoCkBAIC04MCwyMCArNTYsNiBAQCBhYnNsOjpvcHRpb25hbDxDb2Rl
Y0luc3Q+IFJlbnRBQ29kZWM6OkNvZGVjSW5zdEJ5UGFyYW1zKAogICByZXR1cm4gY2k7CiB9CiAK
LWFic2w6Om9wdGlvbmFsPGJvb2w+IFJlbnRBQ29kZWM6OklzU3VwcG9ydGVkTnVtQ2hhbm5lbHMo
Q29kZWNJZCBjb2RlY19pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9jaGFubmVscykgewotICBhdXRvIGkgPSBDb2Rl
Y0luZGV4RnJvbUlkKGNvZGVjX2lkKTsKLSAgcmV0dXJuIGkgPyBhYnNsOjpvcHRpb25hbDxib29s
PigKLSAgICAgICAgICAgICAgICAgQUNNQ29kZWNEQjo6Y29kZWNfc2V0dGluZ3NfWyppXS5jaGFu
bmVsX3N1cHBvcnQgPj0KLSAgICAgICAgICAgICAgICAgbnVtX2NoYW5uZWxzKQotICAgICAgICAg
ICA6IGFic2w6Om51bGxvcHQ7Ci19Ci0KLXJ0Yzo6QXJyYXlWaWV3PGNvbnN0IENvZGVjSW5zdD4g
UmVudEFDb2RlYzo6RGF0YWJhc2UoKSB7Ci0gIHJldHVybiBydGM6OkFycmF5Vmlldzxjb25zdCBD
b2RlY0luc3Q+KEFDTUNvZGVjREI6OmRhdGFiYXNlXywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTnVtYmVyT2ZDb2RlY3MoKSk7Ci19Ci0KIGFic2w6Om9wdGlvbmFs
PE5ldEVxRGVjb2Rlcj4gUmVudEFDb2RlYzo6TmV0RXFEZWNvZGVyRnJvbUNvZGVjSWQoCiAgICAg
Q29kZWNJZCBjb2RlY19pZCwKICAgICBzaXplX3QgbnVtX2NoYW5uZWxzKSB7CkBAIC0xMDYsMjAw
ICs2OCw1IEBAIGFic2w6Om9wdGlvbmFsPE5ldEVxRGVjb2Rlcj4gUmVudEFDb2RlYzo6TmV0RXFE
ZWNvZGVyRnJvbUNvZGVjSWQoCiAgICAgICAgICAgICAgOiBuZWQ7CiB9CiAKLVJlbnRBQ29kZWM6
OlJlZ2lzdHJhdGlvblJlc3VsdCBSZW50QUNvZGVjOjpSZWdpc3RlckNuZ1BheWxvYWRUeXBlKAot
ICAgIHN0ZDo6bWFwPGludCwgaW50PiogcHRfbWFwLAotICAgIGNvbnN0IENvZGVjSW5zdCYgY29k
ZWNfaW5zdCkgewotICBpZiAoU1RSX0NBU0VfQ01QKGNvZGVjX2luc3QucGxuYW1lLCAiQ04iKSAh
PSAwKQotICAgIHJldHVybiBSZWdpc3RyYXRpb25SZXN1bHQ6OmtTa2lwOwotICBzd2l0Y2ggKGNv
ZGVjX2luc3QucGxmcmVxKSB7Ci0gICAgY2FzZSA4MDAwOgotICAgIGNhc2UgMTYwMDA6Ci0gICAg
Y2FzZSAzMjAwMDoKLSAgICBjYXNlIDQ4MDAwOgotICAgICAgKCpwdF9tYXApW2NvZGVjX2luc3Qu
cGxmcmVxXSA9IGNvZGVjX2luc3QucGx0eXBlOwotICAgICAgcmV0dXJuIFJlZ2lzdHJhdGlvblJl
c3VsdDo6a09rOwotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gUmVnaXN0cmF0aW9uUmVzdWx0
OjprQmFkRnJlcTsKLSAgfQotfQotCi1SZW50QUNvZGVjOjpSZWdpc3RyYXRpb25SZXN1bHQgUmVu
dEFDb2RlYzo6UmVnaXN0ZXJSZWRQYXlsb2FkVHlwZSgKLSAgICBzdGQ6Om1hcDxpbnQsIGludD4q
IHB0X21hcCwKLSAgICBjb25zdCBDb2RlY0luc3QmIGNvZGVjX2luc3QpIHsKLSAgaWYgKFNUUl9D
QVNFX0NNUChjb2RlY19pbnN0LnBsbmFtZSwgIlJFRCIpICE9IDApCi0gICAgcmV0dXJuIFJlZ2lz
dHJhdGlvblJlc3VsdDo6a1NraXA7Ci0gIHN3aXRjaCAoY29kZWNfaW5zdC5wbGZyZXEpIHsKLSAg
ICBjYXNlIDgwMDA6Ci0gICAgICAoKnB0X21hcClbY29kZWNfaW5zdC5wbGZyZXFdID0gY29kZWNf
aW5zdC5wbHR5cGU7Ci0gICAgICByZXR1cm4gUmVnaXN0cmF0aW9uUmVzdWx0OjprT2s7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgIHJldHVybiBSZWdpc3RyYXRpb25SZXN1bHQ6OmtCYWRGcmVxOwotICB9
Ci19Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFJldHVybnMgYSBuZXcgc3BlZWNoIGVuY29kZXIsIG9y
IG51bGwgb24gZXJyb3IuCi0vLyBUT0RPKGt3aWJlcmcpOiBEb24ndCBoYW5kbGUgZXJyb3JzIGhl
cmUgKGJ1ZyA1MDMzKQotc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gQ3JlYXRlRW5jb2Rl
cigKLSAgICBjb25zdCBDb2RlY0luc3QmIHNwZWVjaF9pbnN0LAotICAgIGNvbnN0IHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxMb2NrZWRJc2FjQmFuZHdpZHRoSW5mbz4mIGJ3aW5mbykgewotI2lmIGRlZmlu
ZWQoV0VCUlRDX0NPREVDX0lTQUNGWCkKLSAgaWYgKFNUUl9DQVNFX0NNUChzcGVlY2hfaW5zdC5w
bG5hbWUsICJpc2FjIikgPT0gMCkKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5j
b2Rlcj4oCi0gICAgICAgIG5ldyBBdWRpb0VuY29kZXJJc2FjRml4SW1wbChzcGVlY2hfaW5zdCwg
YndpbmZvKSk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FDKQotICBpZiAo
U1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBsbmFtZSwgImlzYWMiKSA9PSAwKQotICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPigKLSAgICAgICAgbmV3IEF1ZGlvRW5jb2Rl
cklzYWNGbG9hdEltcGwoc3BlZWNoX2luc3QsIGJ3aW5mbykpOwotI2VuZGlmCi0jaWZkZWYgV0VC
UlRDX0NPREVDX09QVVMKLSAgaWYgKFNUUl9DQVNFX0NNUChzcGVlY2hfaW5zdC5wbG5hbWUsICJv
cHVzIikgPT0gMCkKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4obmV3
IEF1ZGlvRW5jb2Rlck9wdXNJbXBsKHNwZWVjaF9pbnN0KSk7Ci0jZW5kaWYKLSAgaWYgKFNUUl9D
QVNFX0NNUChzcGVlY2hfaW5zdC5wbG5hbWUsICJwY211IikgPT0gMCkKLSAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4obmV3IEF1ZGlvRW5jb2RlclBjbVUoc3BlZWNoX2lu
c3QpKTsKLSAgaWYgKFNUUl9DQVNFX0NNUChzcGVlY2hfaW5zdC5wbG5hbWUsICJwY21hIikgPT0g
MCkKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4obmV3IEF1ZGlvRW5j
b2RlclBjbUEoc3BlZWNoX2luc3QpKTsKLSAgaWYgKFNUUl9DQVNFX0NNUChzcGVlY2hfaW5zdC5w
bG5hbWUsICJsMTYiKSA9PSAwKQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNv
ZGVyPihuZXcgQXVkaW9FbmNvZGVyUGNtMTZCKHNwZWVjaF9pbnN0KSk7Ci0jaWZkZWYgV0VCUlRD
X0NPREVDX0lMQkMKLSAgaWYgKFNUUl9DQVNFX0NNUChzcGVlY2hfaW5zdC5wbG5hbWUsICJpbGJj
IikgPT0gMCkKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4obmV3IEF1
ZGlvRW5jb2RlcklsYmNJbXBsKHNwZWVjaF9pbnN0KSk7Ci0jZW5kaWYKLSAgaWYgKFNUUl9DQVNF
X0NNUChzcGVlY2hfaW5zdC5wbG5hbWUsICJnNzIyIikgPT0gMCkKLSAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4obmV3IEF1ZGlvRW5jb2Rlckc3MjJJbXBsKHNwZWVjaF9p
bnN0KSk7Ci0gIFJUQ19MT0dfRihMU19FUlJPUikgPDwgIkNvdWxkIG5vdCBjcmVhdGUgZW5jb2Rl
ciBvZiB0eXBlICIKLSAgICAgICAgICAgICAgICAgICAgICA8PCBzcGVlY2hfaW5zdC5wbG5hbWU7
Ci0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPigpOwotfQotCi1zdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBDcmVhdGVSZWRFbmNvZGVyKAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0VuY29kZXI+IGVuY29kZXIsCi0gICAgaW50IHJlZF9wYXlsb2FkX3R5cGUpIHsK
LSNpZmRlZiBXRUJSVENfQ09ERUNfUkVECi0gIEF1ZGlvRW5jb2RlckNvcHlSZWQ6OkNvbmZpZyBj
b25maWc7Ci0gIGNvbmZpZy5wYXlsb2FkX3R5cGUgPSByZWRfcGF5bG9hZF90eXBlOwotICBjb25m
aWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUoZW5jb2Rlcik7Ci0gIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9FbmNvZGVyPigKLSAgICAgIG5ldyBBdWRpb0VuY29kZXJDb3B5UmVkKHN0
ZDo6bW92ZShjb25maWcpKSk7Ci0jZWxzZQotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
RW5jb2Rlcj4oKTsKLSNlbmRpZgotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBD
cmVhdGVDbmdFbmNvZGVyKAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29k
ZXIsCi0gICAgaW50IHBheWxvYWRfdHlwZSwKLSAgICBBQ01WQURNb2RlIHZhZF9tb2RlKSB7Ci0g
IEF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnIGNvbmZpZzsKLSAgY29uZmlnLm51bV9jaGFubmVscyA9
IGVuY29kZXItPk51bUNoYW5uZWxzKCk7Ci0gIGNvbmZpZy5wYXlsb2FkX3R5cGUgPSBwYXlsb2Fk
X3R5cGU7Ci0gIGNvbmZpZy5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShlbmNvZGVyKTsKLSAg
c3dpdGNoICh2YWRfbW9kZSkgewotICAgIGNhc2UgVkFETm9ybWFsOgotICAgICAgY29uZmlnLnZh
ZF9tb2RlID0gVmFkOjprVmFkTm9ybWFsOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWQURMb3dC
aXRyYXRlOgotICAgICAgY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkTG93Qml0cmF0ZTsKLSAg
ICAgIGJyZWFrOwotICAgIGNhc2UgVkFEQWdncjoKLSAgICAgIGNvbmZpZy52YWRfbW9kZSA9IFZh
ZDo6a1ZhZEFnZ3Jlc3NpdmU7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFZBRFZlcnlBZ2dyOgot
ICAgICAgY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkVmVyeUFnZ3Jlc3NpdmU7Ci0gICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgUlRDX0ZBVEFMKCk7Ci0gIH0KLSAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KG5ldyBBdWRpb0VuY29kZXJDbmcoc3RkOjptb3Zl
KGNvbmZpZykpKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4gQ3JlYXRlSXNh
Y0RlY29kZXIoCi0gICAgaW50IHNhbXBsZV9yYXRlX2h6LAotICAgIGNvbnN0IHJ0Yzo6c2NvcGVk
X3JlZnB0cjxMb2NrZWRJc2FjQmFuZHdpZHRoSW5mbz4mIGJ3aW5mbykgewotI2lmIGRlZmluZWQo
V0VCUlRDX0NPREVDX0lTQUNGWCkKLSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RlY29k
ZXI+KAotICAgICAgbmV3IEF1ZGlvRGVjb2RlcklzYWNGaXhJbXBsKHNhbXBsZV9yYXRlX2h6LCBi
d2luZm8pKTsKLSNlbGlmIGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUMpCi0gIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPigKLSAgICAgIG5ldyBBdWRpb0RlY29kZXJJc2FjRmxv
YXRJbXBsKHNhbXBsZV9yYXRlX2h6LCBid2luZm8pKTsKLSNlbHNlCi0gIFJUQ19GQVRBTCgpIDw8
ICJpU0FDIGlzIG5vdCBzdXBwb3J0ZWQuIjsKLSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b0RlY29kZXI+KCk7Ci0jZW5kaWYKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLVJlbnRBQ29kZWM6
OlJlbnRBQ29kZWMoKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfQ09ERUNfSVNBQ0ZYKSB8fCBkZWZp
bmVkKFdFQlJUQ19DT0RFQ19JU0FDKQotICBpc2FjX2JhbmR3aWR0aF9pbmZvXyA9IG5ldyBMb2Nr
ZWRJc2FjQmFuZHdpZHRoSW5mbzsKLSNlbmRpZgotfQotUmVudEFDb2RlYzo6flJlbnRBQ29kZWMo
KSA9IGRlZmF1bHQ7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IFJlbnRBQ29kZWM6
OlJlbnRFbmNvZGVyKAotICAgIGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCkgewotICByZXR1
cm4gQ3JlYXRlRW5jb2Rlcihjb2RlY19pbnN0LCBpc2FjX2JhbmR3aWR0aF9pbmZvXyk7Ci19Ci0K
LVJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVyczo6U3RhY2tQYXJhbWV0ZXJzKCkgewotICAvLyBS
ZWdpc3RlciB0aGUgZGVmYXVsdCBwYXlsb2FkIHR5cGVzIGZvciBSRUQgYW5kIENORy4KLSAgZm9y
IChjb25zdCBDb2RlY0luc3QmIGNpIDogUmVudEFDb2RlYzo6RGF0YWJhc2UoKSkgewotICAgIFJl
bnRBQ29kZWM6OlJlZ2lzdGVyQ25nUGF5bG9hZFR5cGUoJmNuZ19wYXlsb2FkX3R5cGVzLCBjaSk7
Ci0gICAgUmVudEFDb2RlYzo6UmVnaXN0ZXJSZWRQYXlsb2FkVHlwZSgmcmVkX3BheWxvYWRfdHlw
ZXMsIGNpKTsKLSAgfQotfQotCi1SZW50QUNvZGVjOjpTdGFja1BhcmFtZXRlcnM6On5TdGFja1Bh
cmFtZXRlcnMoKSA9IGRlZmF1bHQ7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IFJl
bnRBQ29kZWM6OlJlbnRFbmNvZGVyU3RhY2soCi0gICAgU3RhY2tQYXJhbWV0ZXJzKiBwYXJhbSkg
ewotICBpZiAoIXBhcmFtLT5zcGVlY2hfZW5jb2RlcikKLSAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICBpZiAocGFyYW0tPnVzZV9jb2RlY19mZWMpIHsKLSAgICAvLyBTd2l0Y2ggRkVDIG9uLiBPbiBm
YWlsdXJlLCByZW1lbWJlciB0aGF0IEZFQyBpcyBvZmYuCi0gICAgaWYgKCFwYXJhbS0+c3BlZWNo
X2VuY29kZXItPlNldEZlYyh0cnVlKSkKLSAgICAgIHBhcmFtLT51c2VfY29kZWNfZmVjID0gZmFs
c2U7Ci0gIH0gZWxzZSB7Ci0gICAgLy8gU3dpdGNoIEZFQyBvZmYuIFRoaXMgc2hvdWxkbid0IGZh
aWwuCi0gICAgY29uc3QgYm9vbCBzdWNjZXNzID0gcGFyYW0tPnNwZWVjaF9lbmNvZGVyLT5TZXRG
ZWMoZmFsc2UpOwotICAgIFJUQ19EQ0hFQ0soc3VjY2Vzcyk7Ci0gIH0KLQotICBhdXRvIHB0ID0g
WyZwYXJhbV0oY29uc3Qgc3RkOjptYXA8aW50LCBpbnQ+JiBtKSB7Ci0gICAgYXV0byBpdCA9IG0u
ZmluZChwYXJhbS0+c3BlZWNoX2VuY29kZXItPlNhbXBsZVJhdGVIeigpKTsKLSAgICByZXR1cm4g
aXQgPT0gbS5lbmQoKSA/IGFic2w6Om51bGxvcHQgOiBhYnNsOjpvcHRpb25hbDxpbnQ+KGl0LT5z
ZWNvbmQpOwotICB9OwotICBhdXRvIGNuZ19wdCA9IHB0KHBhcmFtLT5jbmdfcGF5bG9hZF90eXBl
cyk7Ci0gIHBhcmFtLT51c2VfY25nID0KLSAgICAgIHBhcmFtLT51c2VfY25nICYmIGNuZ19wdCAm
JiBwYXJhbS0+c3BlZWNoX2VuY29kZXItPk51bUNoYW5uZWxzKCkgPT0gMTsKLSAgYXV0byByZWRf
cHQgPSBwdChwYXJhbS0+cmVkX3BheWxvYWRfdHlwZXMpOwotICBwYXJhbS0+dXNlX3JlZCA9IHBh
cmFtLT51c2VfcmVkICYmIHJlZF9wdDsKLQotICBpZiAocGFyYW0tPnVzZV9jbmcgfHwgcGFyYW0t
PnVzZV9yZWQpIHsKLSAgICAvLyBUaGUgUkVEIGFuZCBDTkcgZW5jb2RlcnMgbmVlZCB0byBiZSBp
biBzeW5jIHdpdGggdGhlIHNwZWVjaCBlbmNvZGVyLCBzbwotICAgIC8vIHJlc2V0IHRoZSBsYXR0
ZXIgdG8gZW5zdXJlIGl0cyBidWZmZXIgaXMgZW1wdHkuCi0gICAgcGFyYW0tPnNwZWVjaF9lbmNv
ZGVyLT5SZXNldCgpOwotICB9Ci0gIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29k
ZXJfc3RhY2sgPQotICAgICAgc3RkOjptb3ZlKHBhcmFtLT5zcGVlY2hfZW5jb2Rlcik7Ci0gIGlm
IChwYXJhbS0+dXNlX3JlZCkgewotICAgIGVuY29kZXJfc3RhY2sgPSBDcmVhdGVSZWRFbmNvZGVy
KHN0ZDo6bW92ZShlbmNvZGVyX3N0YWNrKSwgKnJlZF9wdCk7Ci0gIH0KLSAgaWYgKHBhcmFtLT51
c2VfY25nKSB7Ci0gICAgZW5jb2Rlcl9zdGFjayA9Ci0gICAgICAgIENyZWF0ZUNuZ0VuY29kZXIo
c3RkOjptb3ZlKGVuY29kZXJfc3RhY2spLCAqY25nX3B0LCBwYXJhbS0+dmFkX21vZGUpOwotICB9
Ci0gIHJldHVybiBlbmNvZGVyX3N0YWNrOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNv
ZGVyPiBSZW50QUNvZGVjOjpSZW50SXNhY0RlY29kZXIoaW50IHNhbXBsZV9yYXRlX2h6KSB7Ci0g
IHJldHVybiBDcmVhdGVJc2FjRGVjb2RlcihzYW1wbGVfcmF0ZV9oeiwgaXNhY19iYW5kd2lkdGhf
aW5mb18pOwotfQotCiB9ICAvLyBuYW1lc3BhY2UgYWNtMgogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVu
dF9hX2NvZGVjLmgKaW5kZXggYjBhZDM4MmQ4YTliMjQzZDJjY2ViN2FhMDEzYzUwZjAyNTAxMGI1
MS4uMmNmMWM2ZTE4YzllNmY4YjA2MGMwNTQwOGM2MjVlNDNkYTJkODYyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvYWNtMi9yZW50X2FfY29kZWMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5o
CkBAIC0zMSw4ICszMSw3IEBAIGNsYXNzIExvY2tlZElzYWNCYW5kd2lkdGhJbmZvOwogCiBuYW1l
c3BhY2UgYWNtMiB7CiAKLWNsYXNzIFJlbnRBQ29kZWMgewotIHB1YmxpYzoKK3N0cnVjdCBSZW50
QUNvZGVjIHsKICAgZW51bSBjbGFzcyBDb2RlY0lkIHsKICNpZiBkZWZpbmVkKFdFQlJUQ19DT0RF
Q19JU0FDKSB8fCBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FDRlgpCiAgICAga0lTQUMsCkBAIC0x
MzMsNjQgKzEzMiw5IEBAIGNsYXNzIFJlbnRBQ29kZWMgewogICAgIHJldHVybiBwYXlsb2FkX3R5
cGUgPj0gMCAmJiBwYXlsb2FkX3R5cGUgPD0gMTI3OwogICB9CiAKLSAgc3RhdGljIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IENvZGVjSW5zdD4gRGF0YWJhc2UoKTsKLQotICBzdGF0aWMgYWJzbDo6b3B0
aW9uYWw8Ym9vbD4gSXNTdXBwb3J0ZWROdW1DaGFubmVscyhDb2RlY0lkIGNvZGVjX2lkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bnVtX2NoYW5uZWxzKTsKLQogICBzdGF0aWMgYWJzbDo6b3B0aW9uYWw8TmV0RXFEZWNvZGVyPiBO
ZXRFcURlY29kZXJGcm9tQ29kZWNJZCgKICAgICAgIENvZGVjSWQgY29kZWNfaWQsCiAgICAgICBz
aXplX3QgbnVtX2NoYW5uZWxzKTsKLQotICAvLyBQYXJzZSBjb2RlY19pbnN0IGFuZCBleHRyYWN0
IHBheWxvYWQgdHlwZXMuIElmIHRoZSBnaXZlbiBDb2RlY0luc3Qgd2FzIGZvcgotICAvLyB0aGUg
d3Jvbmcgc29ydCBvZiBjb2RlYywgcmV0dXJuIGtTa2lwOyBvdGhlcndpc2UsIGlmIHRoZSByYXRl
IHdhcyBpbGxlZ2FsLAotICAvLyByZXR1cm4ga0JhZEZyZXE7IG90aGVyd2lzZSwgdXBkYXRlIHRo
ZSBnaXZlbiBSVFAgdGltZXN0YW1wIHJhdGUgKEh6KSAtPgotICAvLyBwYXlsb2FkIHR5cGUgbWFw
IGFuZCByZXR1cm4ga09rLgotICBlbnVtIGNsYXNzIFJlZ2lzdHJhdGlvblJlc3VsdCB7IGtPaywg
a1NraXAsIGtCYWRGcmVxIH07Ci0gIHN0YXRpYyBSZWdpc3RyYXRpb25SZXN1bHQgUmVnaXN0ZXJD
bmdQYXlsb2FkVHlwZShzdGQ6Om1hcDxpbnQsIGludD4qIHB0X21hcCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjSW5zdCYgY29k
ZWNfaW5zdCk7Ci0gIHN0YXRpYyBSZWdpc3RyYXRpb25SZXN1bHQgUmVnaXN0ZXJSZWRQYXlsb2Fk
VHlwZShzdGQ6Om1hcDxpbnQsIGludD4qIHB0X21hcCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCk7
Ci0KLSAgUmVudEFDb2RlYygpOwotICB+UmVudEFDb2RlYygpOwotCi0gIC8vIENyZWF0ZXMgYW5k
IHJldHVybnMgYW4gYXVkaW8gZW5jb2RlciBidWlsdCB0byB0aGUgZ2l2ZW4gc3BlY2lmaWNhdGlv
bi4KLSAgLy8gUmV0dXJucyBudWxsIGluIGNhc2Ugb2YgZXJyb3IuCi0gIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb0VuY29kZXI+IFJlbnRFbmNvZGVyKGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCk7
Ci0KLSAgc3RydWN0IFN0YWNrUGFyYW1ldGVycyB7Ci0gICAgU3RhY2tQYXJhbWV0ZXJzKCk7Ci0g
ICAgflN0YWNrUGFyYW1ldGVycygpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rl
cj4gc3BlZWNoX2VuY29kZXI7Ci0KLSAgICBib29sIHVzZV9jb2RlY19mZWMgPSBmYWxzZTsKLSAg
ICBib29sIHVzZV9yZWQgPSBmYWxzZTsKLSAgICBib29sIHVzZV9jbmcgPSBmYWxzZTsKLSAgICBB
Q01WQURNb2RlIHZhZF9tb2RlID0gVkFETm9ybWFsOwotCi0gICAgLy8gTWFwcyBmcm9tIFJUUCB0
aW1lc3RhbXAgcmF0ZSAoaW4gSHopIHRvIHBheWxvYWQgdHlwZS4KLSAgICBzdGQ6Om1hcDxpbnQs
IGludD4gY25nX3BheWxvYWRfdHlwZXM7Ci0gICAgc3RkOjptYXA8aW50LCBpbnQ+IHJlZF9wYXls
b2FkX3R5cGVzOwotICB9OwotCi0gIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYW4gYXVkaW8gZW5j
b2RlciBzdGFjayBjb25zdHJ1Y3RlZCB0byB0aGUgZ2l2ZW4KLSAgLy8gc3BlY2lmaWNhdGlvbi4g
SWYgdGhlIHNwZWNpZmljYXRpb24gaXNuJ3QgY29tcGF0aWJsZSB3aXRoIHRoZSBlbmNvZGVyLCBp
dAotICAvLyB3aWxsIGJlIGNoYW5nZWQgdG8gbWF0Y2ggKHRoaW5ncyB3aWxsIGJlIHN3aXRjaGVk
IG9mZikuIFRoZSBzcGVlY2ggZW5jb2RlcgotICAvLyB3aWxsIGJlIHN0b2xlbi4gSWYgdGhlIHNw
ZWNpZmljYXRpb24gaXNuJ3QgY29tcGxldGUsIHJldHVybnMgbnVsbHB0ci4KLSAgc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvRW5jb2Rlcj4gUmVudEVuY29kZXJTdGFjayhTdGFja1BhcmFtZXRlcnMqIHBh
cmFtKTsKLQotICAvLyBDcmVhdGVzIGFuZCByZXR1cm5zIGFuIGlTQUMgZGVjb2Rlci4KLSAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4gUmVudElzYWNEZWNvZGVyKGludCBzYW1wbGVfcmF0
ZV9oeik7Ci0KLSBwcml2YXRlOgotICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBzcGVl
Y2hfZW5jb2Rlcl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGNuZ19lbmNvZGVy
XzsKLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gcmVkX2VuY29kZXJfOwotICBydGM6
OnNjb3BlZF9yZWZwdHI8TG9ja2VkSXNhY0JhbmR3aWR0aEluZm8+IGlzYWNfYmFuZHdpZHRoX2lu
Zm9fOwotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVudEFDb2RlYyk7CiB9Owog
CiB9ICAvLyBuYW1lc3BhY2UgYWNtMgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29k
ZWNfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlY191bml0dGVzdC5jYwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQzMzI5Y2ZiMTEzNTljZjVkMjdjMzQxN2ExOTk4
M2NhODE2ZGI1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9hY20yL3JlbnRfYV9jb2RlY191bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0x
LDIyOCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNSBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQot
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4K
LQotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2FjbTIvcmVudF9hX2NvZGVjLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgi
Ci0jaW5jbHVkZSAidGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgInRlc3QvbW9ja19hdWRpb19lbmNv
ZGVyLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIGFjbTIgewotCi11c2luZyA6
OnRlc3Rpbmc6OlJldHVybjsKLQotbmFtZXNwYWNlIHsKLQotY29uc3QgaW50IGtEYXRhTGVuZ3Ro
U2FtcGxlcyA9IDgwOwotY29uc3QgaW50IGtQYWNrZXRTaXplU2FtcGxlcyA9IDIgKiBrRGF0YUxl
bmd0aFNhbXBsZXM7Ci1jb25zdCBpbnQxNl90IGtaZXJvRGF0YVtrRGF0YUxlbmd0aFNhbXBsZXNd
ID0gezB9OwotY29uc3QgQ29kZWNJbnN0IGtEZWZhdWx0Q29kZWNJbnN0ID0gezAsICJwY211Iiwg
ODAwMCwga1BhY2tldFNpemVTYW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEsIDY0MDAwfTsKLWNvbnN0IGludCBrQ25nUHQgPSAxMzsKLQotY2xhc3MgTWFya2Vy
IGZpbmFsIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShNYXJrLCB2b2lkKHN0ZDo6c3RyaW5n
IGRlc2MpKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1jbGFzcyBSZW50QUNvZGVjVGVzdEYg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZvaWQgQ3JlYXRlQ29k
ZWMoKSB7Ci0gICAgYXV0byBzcGVlY2hfZW5jb2RlciA9IHJlbnRfYV9jb2RlY18uUmVudEVuY29k
ZXIoa0RlZmF1bHRDb2RlY0luc3QpOwotICAgIEFTU0VSVF9UUlVFKHNwZWVjaF9lbmNvZGVyKTsK
LSAgICBSZW50QUNvZGVjOjpTdGFja1BhcmFtZXRlcnMgcGFyYW07Ci0gICAgcGFyYW0udXNlX2Nu
ZyA9IHRydWU7Ci0gICAgcGFyYW0uc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUoc3BlZWNoX2Vu
Y29kZXIpOwotICAgIGVuY29kZXJfID0gcmVudF9hX2NvZGVjXy5SZW50RW5jb2RlclN0YWNrKCZw
YXJhbSk7Ci0gIH0KLQotICB2b2lkIEVuY29kZUFuZFZlcmlmeShzaXplX3QgZXhwZWN0ZWRfb3V0
X2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZXhwZWN0ZWRfdGltZXN0
YW1wLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXhwZWN0ZWRfcGF5bG9hZF90eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXhwZWN0ZWRfc2VuZF9ldmVuX2lmX2VtcHR5KSB7
Ci0gICAgcnRjOjpCdWZmZXIgb3V0OwotICAgIEF1ZGlvRW5jb2Rlcjo6RW5jb2RlZEluZm8gZW5j
b2RlZF9pbmZvOwotICAgIGVuY29kZWRfaW5mbyA9IGVuY29kZXJfLT5FbmNvZGUodGltZXN0YW1w
Xywga1plcm9EYXRhLCAmb3V0KTsKLSAgICB0aW1lc3RhbXBfICs9IGtEYXRhTGVuZ3RoU2FtcGxl
czsKLSAgICBFWFBFQ1RfVFJVRShlbmNvZGVkX2luZm8ucmVkdW5kYW50LmVtcHR5KCkpOwotICAg
IEVYUEVDVF9FUShleHBlY3RlZF9vdXRfbGVuZ3RoLCBlbmNvZGVkX2luZm8uZW5jb2RlZF9ieXRl
cyk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkX3RpbWVzdGFtcCwgZW5jb2RlZF9pbmZvLmVuY29k
ZWRfdGltZXN0YW1wKTsKLSAgICBpZiAoZXhwZWN0ZWRfcGF5bG9hZF90eXBlID49IDApCi0gICAg
ICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGF5bG9hZF90eXBlLCBlbmNvZGVkX2luZm8ucGF5bG9hZF90
eXBlKTsKLSAgICBpZiAoZXhwZWN0ZWRfc2VuZF9ldmVuX2lmX2VtcHR5ID49IDApCi0gICAgICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Ym9vbD4oZXhwZWN0ZWRfc2VuZF9ldmVuX2lmX2VtcHR5KSwK
LSAgICAgICAgICAgICAgICBlbmNvZGVkX2luZm8uc2VuZF9ldmVuX2lmX2VtcHR5KTsKLSAgfQot
Ci0gIFJlbnRBQ29kZWMgcmVudF9hX2NvZGVjXzsKLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5j
b2Rlcj4gZW5jb2Rlcl87Ci0gIHVpbnQzMl90IHRpbWVzdGFtcF8gPSAwOwotfTsKLQotLy8gVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgQ05HIGZyYW1lcyBhcmUgZGVsaXZlcmVkIGFzIGV4cGVjdGVk
LiBTaW5jZSB0aGUgZnJhbWUKLS8vIHNpemUgaXMgc2V0IHRvIDIwIG1zLCB3ZSBleHBlY3QgdGhl
IGZpcnN0IGVuY29kZSBjYWxsIHRvIHByb2R1Y2Ugbm8gb3V0cHV0Ci0vLyAod2hpY2ggaXMgc2ln
bmFsZWQgYXMgMCBieXRlcyBvdXRwdXQgb2YgdHlwZSBrTm9FbmNvZGluZykuIFRoZSBuZXh0IGVu
Y29kZQotLy8gY2FsbCBzaG91bGQgcHJvZHVjZSBvbmUgU0lEIGZyYW1lIG9mIDkgYnl0ZXMuIFRo
ZSB0aGlyZCBjYWxsIHNob3VsZCBub3QKLS8vIHJlc3VsdCBpbiBhbnkgb3V0cHV0IChqdXN0IGxp
a2UgdGhlIGZpcnN0IG9uZSkuIFRoZSBmb3VydGggYW5kIGZpbmFsIGVuY29kZQotLy8gY2FsbCBz
aG91bGQgcHJvZHVjZSBhbiAiZW1wdHkgZnJhbWUiLCB3aGljaCBpcyBsaWtlIG5vIG91dHB1dCwg
YnV0IHdpdGgKLS8vIEF1ZGlvRW5jb2Rlcjo6RW5jb2RlZEluZm86OnNlbmRfZXZlbl9pZl9lbXB0
eSBzZXQgdG8gdHJ1ZS4gKFRoZSByZWFzb24gdG8KLS8vIHByb2R1Y2UgYW4gZW1wdHkgZnJhbWUg
aXMgdG8gZHJpdmUgc2VuZGluZyBvZiBEVE1GIHBhY2tldHMgaW4gdGhlIFJUUC9SVENQCi0vLyBt
b2R1bGUuKQotVEVTVF9GKFJlbnRBQ29kZWNUZXN0RiwgVmVyaWZ5Q25nRnJhbWVzKSB7Ci0gIENy
ZWF0ZUNvZGVjKCk7Ci0gIHVpbnQzMl90IGV4cGVjdGVkX3RpbWVzdGFtcCA9IHRpbWVzdGFtcF87
Ci0gIC8vIFZlcmlmeSBubyBmcmFtZS4KLSAgewotICAgIFNDT1BFRF9UUkFDRSgiRmlyc3QgZW5j
b2RpbmciKTsKLSAgICBFbmNvZGVBbmRWZXJpZnkoMCwgZXhwZWN0ZWRfdGltZXN0YW1wLCAtMSwg
LTEpOwotICB9Ci0KLSAgLy8gVmVyaWZ5IFNJRCBmcmFtZSBkZWxpdmVyZWQuCi0gIHsKLSAgICBT
Q09QRURfVFJBQ0UoIlNlY29uZCBlbmNvZGluZyIpOwotICAgIEVuY29kZUFuZFZlcmlmeSg5LCBl
eHBlY3RlZF90aW1lc3RhbXAsIGtDbmdQdCwgMSk7Ci0gIH0KLQotICAvLyBWZXJpZnkgbm8gZnJh
bWUuCi0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIlRoaXJkIGVuY29kaW5nIik7Ci0gICAgRW5jb2Rl
QW5kVmVyaWZ5KDAsIGV4cGVjdGVkX3RpbWVzdGFtcCwgLTEsIC0xKTsKLSAgfQotCi0gIC8vIFZl
cmlmeSBOb0VuY29kaW5nLgotICBleHBlY3RlZF90aW1lc3RhbXAgKz0gMiAqIGtEYXRhTGVuZ3Ro
U2FtcGxlczsKLSAgewotICAgIFNDT1BFRF9UUkFDRSgiRm91cnRoIGVuY29kaW5nIik7Ci0gICAg
RW5jb2RlQW5kVmVyaWZ5KDAsIGV4cGVjdGVkX3RpbWVzdGFtcCwga0NuZ1B0LCAxKTsKLSAgfQot
fQotCi1URVNUKFJlbnRBQ29kZWNUZXN0LCBFeHRlcm5hbEVuY29kZXIpIHsKLSAgY29uc3QgaW50
IGtTYW1wbGVSYXRlSHogPSA4MDAwOwotICBhdXRvKiBleHRlcm5hbF9lbmNvZGVyID0gbmV3IE1v
Y2tBdWRpb0VuY29kZXI7Ci0gIEVYUEVDVF9DQUxMKCpleHRlcm5hbF9lbmNvZGVyLCBTYW1wbGVS
YXRlSHooKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oa1NhbXBsZVJhdGVIeikpOwot
ICBFWFBFQ1RfQ0FMTCgqZXh0ZXJuYWxfZW5jb2RlciwgTnVtQ2hhbm5lbHMoKSkuV2lsbFJlcGVh
dGVkbHkoUmV0dXJuKDEpKTsKLSAgRVhQRUNUX0NBTEwoKmV4dGVybmFsX2VuY29kZXIsIFNldEZl
YyhmYWxzZSkpLldpbGxSZXBlYXRlZGx5KFJldHVybih0cnVlKSk7Ci0KLSAgUmVudEFDb2RlYyBy
YWM7Ci0gIFJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVycyBwYXJhbTsKLSAgcGFyYW0uc3BlZWNo
X2VuY29kZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPihleHRlcm5hbF9lbmNvZGVy
KTsKLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2Rlcl9zdGFjayA9IHJhYy5S
ZW50RW5jb2RlclN0YWNrKCZwYXJhbSk7Ci0gIEVYUEVDVF9FUShleHRlcm5hbF9lbmNvZGVyLCBl
bmNvZGVyX3N0YWNrLmdldCgpKTsKLSAgY29uc3QgaW50IGtQYWNrZXRTaXplU2FtcGxlcyA9IGtT
YW1wbGVSYXRlSHogLyAxMDA7Ci0gIGludDE2X3QgYXVkaW9ba1BhY2tldFNpemVTYW1wbGVzXSA9
IHswfTsKLSAgcnRjOjpCdWZmZXIgZW5jb2RlZDsKLSAgQXVkaW9FbmNvZGVyOjpFbmNvZGVkSW5m
byBpbmZvOwotCi0gIE1hcmtlciBtYXJrZXI7Ci0gIHsKLSAgICA6OnRlc3Rpbmc6OkluU2VxdWVu
Y2UgczsKLSAgICBpbmZvLmVuY29kZWRfdGltZXN0YW1wID0gMDsKLSAgICBFWFBFQ1RfQ0FMTCgq
ZXh0ZXJuYWxfZW5jb2RlciwKLSAgICAgICAgICAgICAgICBFbmNvZGVJbXBsKDAsIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IGludDE2X3Q+KGF1ZGlvKSwgJmVuY29kZWQpKQotICAgICAgICAuV2lsbE9u
Y2UoUmV0dXJuKGluZm8pKTsKLSAgICBFWFBFQ1RfQ0FMTChtYXJrZXIsIE1hcmsoIkEiKSk7Ci0g
ICAgRVhQRUNUX0NBTEwobWFya2VyLCBNYXJrKCJCIikpOwotICAgIEVYUEVDVF9DQUxMKG1hcmtl
ciwgTWFyaygiQyIpKTsKLSAgfQotCi0gIGluZm8gPSBlbmNvZGVyX3N0YWNrLT5FbmNvZGUoMCwg
YXVkaW8sICZlbmNvZGVkKTsKLSAgRVhQRUNUX0VRKDB1LCBpbmZvLmVuY29kZWRfdGltZXN0YW1w
KTsKLSAgbWFya2VyLk1hcmsoIkEiKTsKLQotICAvLyBDaGFuZ2UgdG8gaW50ZXJuYWwgZW5jb2Rl
ci4KLSAgQ29kZWNJbnN0IGNvZGVjX2luc3QgPSBrRGVmYXVsdENvZGVjSW5zdDsKLSAgY29kZWNf
aW5zdC5wYWNzaXplID0ga1BhY2tldFNpemVTYW1wbGVzOwotICBwYXJhbS5zcGVlY2hfZW5jb2Rl
ciA9IHJhYy5SZW50RW5jb2Rlcihjb2RlY19pbnN0KTsKLSAgQVNTRVJUX1RSVUUocGFyYW0uc3Bl
ZWNoX2VuY29kZXIpOwotICBBdWRpb0VuY29kZXIqIGVuYyA9IHBhcmFtLnNwZWVjaF9lbmNvZGVy
LmdldCgpOwotICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBzdGFjayA9IHJhYy5SZW50
RW5jb2RlclN0YWNrKCZwYXJhbSk7Ci0gIEVYUEVDVF9FUShlbmMsIHN0YWNrLmdldCgpKTsKLQot
ICAvLyBEb24ndCBleHBlY3QgYW55IG1vcmUgY2FsbHMgdG8gdGhlIGV4dGVybmFsIGVuY29kZXIu
Ci0gIGluZm8gPSBzdGFjay0+RW5jb2RlKDEsIGF1ZGlvLCAmZW5jb2RlZCk7Ci0gIG1hcmtlci5N
YXJrKCJCIik7Ci0gIGVuY29kZXJfc3RhY2sucmVzZXQoKTsKLSAgbWFya2VyLk1hcmsoIkMiKTsK
LX0KLQotLy8gVmVyaWZ5IHRoYXQgdGhlIHNwZWVjaCBlbmNvZGVyJ3MgUmVzZXQgbWV0aG9kIGlz
IGNhbGxlZCB3aGVuIENORyBvciBSRUQKLS8vIChvciBib3RoKSBhcmUgc3dpdGNoZWQgb24sIGJ1
dCBub3Qgd2hlbiB0aGV5J3JlIHN3aXRjaGVkIG9mZi4KLXZvaWQgVGVzdENuZ0FuZFJlZFJlc2V0
U3BlZWNoRW5jb2Rlcihib29sIHVzZV9jbmcsIGJvb2wgdXNlX3JlZCkgewotICBhdXRvIG1ha2Vf
ZW5jID0gW10gewotICAgIGF1dG8gc3BlZWNoX2VuY29kZXIgPQotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TW9ja0F1ZGlvRW5jb2Rlcj4obmV3IE1vY2tBdWRpb0VuY29kZXIpOwotICAgIEVYUEVD
VF9DQUxMKCpzcGVlY2hfZW5jb2RlciwgTnVtQ2hhbm5lbHMoKSkuV2lsbFJlcGVhdGVkbHkoUmV0
dXJuKDEpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqc3BlZWNoX2VuY29kZXIsIE1heDEwTXNGcmFtZXNJ
bkFQYWNrZXQoKSkKLSAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigyKSk7Ci0gICAgRVhQ
RUNUX0NBTEwoKnNwZWVjaF9lbmNvZGVyLCBTYW1wbGVSYXRlSHooKSkuV2lsbFJlcGVhdGVkbHko
UmV0dXJuKDgwMDApKTsKLSAgICBFWFBFQ1RfQ0FMTCgqc3BlZWNoX2VuY29kZXIsIFNldEZlYyhm
YWxzZSkpLldpbGxSZXBlYXRlZGx5KFJldHVybih0cnVlKSk7Ci0gICAgcmV0dXJuIHNwZWVjaF9l
bmNvZGVyOwotICB9OwotICBhdXRvIHNwZWVjaF9lbmNvZGVyMSA9IG1ha2VfZW5jKCk7Ci0gIGF1
dG8gc3BlZWNoX2VuY29kZXIyID0gbWFrZV9lbmMoKTsKLSAgTWFya2VyIG1hcmtlcjsKLSAgewot
ICAgIDo6dGVzdGluZzo6SW5TZXF1ZW5jZSBzOwotICAgIEVYUEVDVF9DQUxMKG1hcmtlciwgTWFy
aygiZGlzYWJsZWQiKSk7Ci0gICAgRVhQRUNUX0NBTEwobWFya2VyLCBNYXJrKCJlbmFibGVkIikp
OwotICAgIGlmICh1c2VfY25nIHx8IHVzZV9yZWQpCi0gICAgICBFWFBFQ1RfQ0FMTCgqc3BlZWNo
X2VuY29kZXIyLCBSZXNldCgpKTsKLSAgfQotCi0gIFJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVy
cyBwYXJhbTEsIHBhcmFtMjsKLSAgcGFyYW0xLnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKHNw
ZWVjaF9lbmNvZGVyMSk7Ci0gIHBhcmFtMi5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShzcGVl
Y2hfZW5jb2RlcjIpOwotICBwYXJhbTIudXNlX2NuZyA9IHVzZV9jbmc7Ci0gIHBhcmFtMi51c2Vf
cmVkID0gdXNlX3JlZDsKLSAgbWFya2VyLk1hcmsoImRpc2FibGVkIik7Ci0gIFJlbnRBQ29kZWMg
cmFjOwotICByYWMuUmVudEVuY29kZXJTdGFjaygmcGFyYW0xKTsKLSAgbWFya2VyLk1hcmsoImVu
YWJsZWQiKTsKLSAgcmFjLlJlbnRFbmNvZGVyU3RhY2soJnBhcmFtMik7Ci19Ci0KLVRFU1QoUmVu
dEFDb2RlY1Rlc3QsIENuZ1Jlc2V0c1NwZWVjaEVuY29kZXIpIHsKLSAgVGVzdENuZ0FuZFJlZFJl
c2V0U3BlZWNoRW5jb2Rlcih0cnVlLCBmYWxzZSk7Ci19Ci0KLVRFU1QoUmVudEFDb2RlY1Rlc3Qs
IFJlZFJlc2V0c1NwZWVjaEVuY29kZXIpIHsKLSAgVGVzdENuZ0FuZFJlZFJlc2V0U3BlZWNoRW5j
b2RlcihmYWxzZSwgdHJ1ZSk7Ci19Ci0KLVRFU1QoUmVudEFDb2RlY1Rlc3QsIENuZ0FuZFJlZFJl
c2V0c1NwZWVjaEVuY29kZXIpIHsKLSAgVGVzdENuZ0FuZFJlZFJlc2V0U3BlZWNoRW5jb2Rlcih0
cnVlLCB0cnVlKTsKLX0KLQotVEVTVChSZW50QUNvZGVjVGVzdCwgTm9DbmdBbmRSZWROb1NwZWVj
aEVuY29kZXJSZXNldCkgewotICBUZXN0Q25nQW5kUmVkUmVzZXRTcGVlY2hFbmNvZGVyKGZhbHNl
LCBmYWxzZSk7Ci19Ci0KLVRFU1QoUmVudEFDb2RlY1Rlc3QsIFJlbnRFbmNvZGVyRXJyb3IpIHsK
LSAgY29uc3QgQ29kZWNJbnN0IGNvZGVjX2luc3QgPSB7Ci0gICAgICAwLCAiUm9iZXJ0Jyk7IERS
T1AgVEFCTEUgU3R1ZGVudHM7IiwgODAwMCwgMTYwLCAxLCA2NDAwMH07Ci0gIFJlbnRBQ29kZWMg
cmVudF9hX2NvZGVjOwotICBFWFBFQ1RfRkFMU0UocmVudF9hX2NvZGVjLlJlbnRFbmNvZGVyKGNv
ZGVjX2luc3QpKTsKLX0KLQotVEVTVChSZW50QUNvZGVjVGVzdCwgUmVudEVuY29kZXJTdGFja1dp
dGhvdXRTcGVlY2hFbmNvZGVyKSB7Ci0gIFJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVycyBzcDsK
LSAgRVhQRUNUX0VRKG51bGxwdHIsIHNwLnNwZWVjaF9lbmNvZGVyKTsKLSAgRVhQRUNUX0VRKG51
bGxwdHIsIFJlbnRBQ29kZWMoKS5SZW50RW5jb2RlclN0YWNrKCZzcCkpOwotfQotCi19ICAvLyBu
YW1lc3BhY2UgYWNtMgotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
YXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsLmNjCmlu
ZGV4IGM0ODMyYTM2ZGU0YTU1N2U1NzdlNmU1ZDczNDc2MDYwNTk4Mjg4ZWMuLjllNDdhMDZmN2Nh
YzljM2JkZmFmZTU0OWYxMTRjMzY5N2ZlMzIzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9h
dWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFwdG9yX2ltcGwuY2MKQEAgLTEw
LDkgKzEwLDE0IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3
b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFwdG9yX2ltcGwuaCIKIAorI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1
ZGlvX25ldHdvcmtfYWRhcHRvci9jb250cm9sbGVyX21hbmFnZXIuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZGVidWdfZHVtcF93cml0ZXIu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3Iv
ZXZlbnRfbG9nX3dyaXRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNs
dWRlL2ZpZWxkX3RyaWFsLmgiCiAKQEAgLTQxLDE3ICs0Niw3IEBAIEF1ZGlvTmV0d29ya0FkYXB0
b3JJbXBsOjpBdWRpb05ldHdvcmtBZGFwdG9ySW1wbCgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga0V2ZW50TG9nTWluQml0cmF0ZUNoYW5nZUJwcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga0V2ZW50TG9nTWluQml0cmF0ZUNoYW5nZUZyYWN0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRXZlbnRMb2dNaW5QYWNrZXRMb3Nz
Q2hhbmdlRnJhY3Rpb24pCi0gICAgICAgICAgICAgIDogbnVsbHB0ciksCi0gICAgICBlbmFibGVf
Yml0cmF0ZV9hZGFwdGF0aW9uXygKLSAgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0Vu
YWJsZWQoIldlYlJUQy1BdWRpby1CaXRyYXRlQWRhcHRhdGlvbiIpKSwKLSAgICAgIGVuYWJsZV9k
dHhfYWRhcHRhdGlvbl8oCi0gICAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVk
KCJXZWJSVEMtQXVkaW8tRHR4QWRhcHRhdGlvbiIpKSwKLSAgICAgIGVuYWJsZV9mZWNfYWRhcHRh
dGlvbl8oCi0gICAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMt
QXVkaW8tRmVjQWRhcHRhdGlvbiIpKSwKLSAgICAgIGVuYWJsZV9jaGFubmVsX2FkYXB0YXRpb25f
KAotICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUF1ZGlv
LUNoYW5uZWxBZGFwdGF0aW9uIikpLAotICAgICAgZW5hYmxlX2ZyYW1lX2xlbmd0aF9hZGFwdGF0
aW9uXyh3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoCi0gICAgICAgICAgIldlYlJUQy1B
dWRpby1GcmFtZUxlbmd0aEFkYXB0YXRpb24iKSkgeworICAgICAgICAgICAgICA6IG51bGxwdHIp
IHsKICAgUlRDX0RDSEVDSyhjb250cm9sbGVyX21hbmFnZXJfKTsKIH0KIApAQCAtMTUyLDI0ICsx
NDcsNiBAQCBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnIEF1ZGlvTmV0d29ya0FkYXB0b3JJbXBs
OjpHZXRFbmNvZGVyUnVudGltZUNvbmZpZygpIHsKICAgfQogICBwcmV2X2NvbmZpZ18gPSBjb25m
aWc7CiAKLSAgLy8gUHJldmVudCBjZXJ0YWluIGNvbnRyb2xsZXJzIGZyb20gdGFraW5nIGFjdGlv
biAoZGV0ZXJtaW5lZCBieSBmaWVsZCB0cmlhbHMpCi0gIGlmICghZW5hYmxlX2JpdHJhdGVfYWRh
cHRhdGlvbl8gJiYgY29uZmlnLmJpdHJhdGVfYnBzKSB7Ci0gICAgY29uZmlnLmJpdHJhdGVfYnBz
LnJlc2V0KCk7Ci0gIH0KLSAgaWYgKCFlbmFibGVfZHR4X2FkYXB0YXRpb25fICYmIGNvbmZpZy5l
bmFibGVfZHR4KSB7Ci0gICAgY29uZmlnLmVuYWJsZV9kdHgucmVzZXQoKTsKLSAgfQotICBpZiAo
IWVuYWJsZV9mZWNfYWRhcHRhdGlvbl8gJiYgY29uZmlnLmVuYWJsZV9mZWMpIHsKLSAgICBjb25m
aWcuZW5hYmxlX2ZlYy5yZXNldCgpOwotICAgIGNvbmZpZy51cGxpbmtfcGFja2V0X2xvc3NfZnJh
Y3Rpb24ucmVzZXQoKTsKLSAgfQotICBpZiAoIWVuYWJsZV9mcmFtZV9sZW5ndGhfYWRhcHRhdGlv
bl8gJiYgY29uZmlnLmZyYW1lX2xlbmd0aF9tcykgewotICAgIGNvbmZpZy5mcmFtZV9sZW5ndGhf
bXMucmVzZXQoKTsKLSAgfQotICBpZiAoIWVuYWJsZV9jaGFubmVsX2FkYXB0YXRpb25fICYmIGNv
bmZpZy5udW1fY2hhbm5lbHMpIHsKLSAgICBjb25maWcubnVtX2NoYW5uZWxzLnJlc2V0KCk7Ci0g
IH0KLQogICBpZiAoZGVidWdfZHVtcF93cml0ZXJfKQogICAgIGRlYnVnX2R1bXBfd3JpdGVyXy0+
RHVtcEVuY29kZXJSdW50aW1lQ29uZmlnKGNvbmZpZywgcnRjOjpUaW1lTWlsbGlzKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFw
dG9yX2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2Fk
YXB0b3JfaW1wbC5oCmluZGV4IGUyMDhlZDI2MDdjMzQ0NjMyYmE3NjcxOGZiZjAzNDI2MzdlYWU0
YWMuLjRjMWMxOWI3ZWEyOGNiMWM1ZTdhZDc2MGJlMGE0MWVlMWFkZDAyYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3Jf
aW1wbC5oCkBAIC0xMSwxNyArMTEsMjEgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdf
QVVESU9fTkVUV09SS19BREFQVE9SX0FVRElPX05FVFdPUktfQURBUFRPUl9JTVBMX0hfCiAjZGVm
aW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElPX05FVFdPUktfQURBUFRPUl9BVURJT19ORVRX
T1JLX0FEQVBUT1JfSU1QTF9IXwogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxtZW1v
cnk+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2F1
ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2NvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlcl9tYW5hZ2VyLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2Rl
YnVnX2R1bXBfd3JpdGVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9f
bmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2Fk
YXB0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2Fk
YXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAorY2xh
c3MgQ29udHJvbGxlck1hbmFnZXI7CitjbGFzcyBFdmVudExvZ1dyaXRlcjsKIGNsYXNzIFJ0Y0V2
ZW50TG9nOwogCiBjbGFzcyBBdWRpb05ldHdvcmtBZGFwdG9ySW1wbCBmaW5hbCA6IHB1YmxpYyBB
dWRpb05ldHdvcmtBZGFwdG9yIHsKQEAgLTc5LDEyICs4Myw2IEBAIGNsYXNzIEF1ZGlvTmV0d29y
a0FkYXB0b3JJbXBsIGZpbmFsIDogcHVibGljIEF1ZGlvTmV0d29ya0FkYXB0b3IgewogCiAgIEFO
QVN0YXRzIHN0YXRzXzsKIAotICBjb25zdCBib29sIGVuYWJsZV9iaXRyYXRlX2FkYXB0YXRpb25f
OwotICBjb25zdCBib29sIGVuYWJsZV9kdHhfYWRhcHRhdGlvbl87Ci0gIGNvbnN0IGJvb2wgZW5h
YmxlX2ZlY19hZGFwdGF0aW9uXzsKLSAgY29uc3QgYm9vbCBlbmFibGVfY2hhbm5lbF9hZGFwdGF0
aW9uXzsKLSAgY29uc3QgYm9vbCBlbmFibGVfZnJhbWVfbGVuZ3RoX2FkYXB0YXRpb25fOwotCiAg
IFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oQXVkaW9OZXR3b3JrQWRhcHRvckltcGwpOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdv
cmtfYWRhcHRvcl9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9y
L2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsX3VuaXR0ZXN0LmNjCmluZGV4IDU5NDhhYzM2NDQw
ZGEwZjAyYzRhMmZjNWZhZGRjMDQ3ZWZhMDM5NTQuLmJlOTU1MGE3YTc2M2U1ZGUzNDVjYzIwNzNl
MGJjNjVhY2M1YjgwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9h
dWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFwdG9yX2ltcGxfdW5pdHRlc3QuY2MKQEAg
LTUxLDcgKzUxLDcgQEAgTUFUQ0hFUl9QKElzUnRjRXZlbnRBbmFDb25maWdFcXVhbFRvLCBjb25m
aWcsICIiKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIGF1dG8gYW5hX2V2ZW50ID0gc3Rh
dGljX2Nhc3Q8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKj4oYXJnKTsKLSAgcmV0dXJu
ICphbmFfZXZlbnQtPmNvbmZpZ18gPT0gY29uZmlnOworICByZXR1cm4gYW5hX2V2ZW50LT5jb25m
aWcoKSA9PSBjb25maWc7CiB9CiAKIE1BVENIRVJfUChFbmNvZGVyUnVudGltZUNvbmZpZ0lzLCBj
b25maWcsICIiKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYml0
cmF0ZV9jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYml0cmF0ZV9j
b250cm9sbGVyLmgKaW5kZXggMjgyZjU5OWI2ZGEzMDI1NTQ3YzUwMjBhZWQ3ZmQyNTljYmQ2ZGJl
MC4uNmI2MzMwYjAzMDE1MmIyMWUyZWQ4MjA1NTgyZDc3NzQwZmMyNmQxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2JpdHJhdGVfY29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9iaXRyYXRlX2NvbnRyb2xsZXIuaApAQCAtMTEsNyAr
MTEsMTEgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQ
VE9SX0JJVFJBVEVfQ09OVFJPTExFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19B
VURJT19ORVRXT1JLX0FEQVBUT1JfQklUUkFURV9DT05UUk9MTEVSX0hfCiAKKyNpbmNsdWRlIDxz
dGRkZWYuaD4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlci5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNs
dWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
b25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2NoYW5uZWxfY29udHJvbGxlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVk
aW9fbmV0d29ya19hZGFwdG9yL2NoYW5uZWxfY29udHJvbGxlci5oCmluZGV4IDIzY2JlZjY2M2I0
ZmJmYzU1NTFjMjM3Mjc4ZTUwZjI3MWU1ZGVhYzEuLjBkNzc1YjFjNzdmMWM5NzMxMTQ2N2Q3ODk3
YmFmODllYTQ0N2I3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9j
aGFubmVsX2NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY2hh
bm5lbF9jb250cm9sbGVyLmgKQEAgLTExLDcgKzExLDExIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fQ09ESU5HX0FVRElPX05FVFdPUktfQURBUFRPUl9DSEFOTkVMX0NPTlRST0xMRVJfSF8KICNk
ZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0NIQU5ORUxf
Q09OVFJPTExFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpbmNsdWRlICJhYnNsL3R5
cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0
d29ya19hZGFwdG9yL2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29u
ZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9kZWJ1
Z19kdW1wX3dyaXRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9kZWJ1Z19kdW1w
X3dyaXRlci5jYwppbmRleCA4MTgzNjJlZDBkYTdlYTNhM2E3Y2Y3YTMzOWFiMjY3YTYwMzdkMDM1
Li44ZTA0ZThlYWZjOTM3MWYxZmYzNTQ3MTkwNmI4N2ZkOTJiMzA1YTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZGVidWdfZHVtcF93cml0ZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2RlYnVnX2R1bXBfd3JpdGVyLmNjCkBAIC0xMCwxMCAr
MTAsMTIgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtf
YWRhcHRvci9kZWJ1Z19kdW1wX3dyaXRlci5oIgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRp
b25hbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2lnbm9yZV93dW5kZWYuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZl
cnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcHJvdG9idWZfdXRpbHMuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zeXN0ZW0vZmlsZV93cmFwcGVyLmgiCiAKICNpZiBXRUJSVENfRU5BQkxFX1BS
T1RPQlVGCiBSVENfUFVTSF9JR05PUklOR19XVU5ERUYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVk
aW9fbmV0d29ya19hZGFwdG9yL2R0eF9jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3Jr
X2FkYXB0b3IvZHR4X2NvbnRyb2xsZXIuaAppbmRleCBmYjQwZGIyOGIyMGNjYTczZTk1OTMyMmY0
MmQ0ZDRkYmE4N2FmY2QwLi5kMzMzNGVjYTllZjAwMWI1Mjg0MGM0YmY1MDdmZmYwZTJjZmQxMGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZHR4X2NvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZHR4X2NvbnRyb2xsZXIuaApAQCAt
MTEsNyArMTEsOSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JL
X0FEQVBUT1JfRFRYX0NPTlRST0xMRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdf
QVVESU9fTkVUV09SS19BREFQVE9SX0RUWF9DT05UUk9MTEVSX0hfCiAKKyNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9f
bmV0d29ya19hZGFwdG9yL2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3Jf
Y29uZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9l
dmVudF9sb2dfd3JpdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xv
Z193cml0ZXIuY2MKaW5kZXggNGE5MjM0M2Q5Njg4YmQwOWFhZjk4ZTM1MjBhNjE1NzlkMzA5NjAz
My4uNzkyNWI4OTEyNzc1MDFkZTBkYzYyYjcwNGU5OWQ1OTk4YzQ4ZDQzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXIuY2MKQEAgLTksMTMgKzks
MTcgQEAKICAqLwogCiAjaW5jbHVkZSA8bWF0aC5oPgotCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgogI2luY2x1ZGUg
ImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX25ldHdvcmtfYWRh
cHRhdGlvbi5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9n
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9y
L2V2ZW50X2xvZ193cml0ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRv
ci9ldmVudF9sb2dfd3JpdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZXZlbnRf
bG9nX3dyaXRlci5oCmluZGV4IGZjYThlNTNiNjY0YmYxYmYzZGU4OWU1MGU5OGE4MmU4YjA5MDky
NjcuLjcyYjUyNDVlMTE1YTZmZmQ1MDIwNWQxMGEzYzhjYmE5ZTFkYzg5OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9ldmVudF9sb2dfd3JpdGVyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXIuaApAQCAtMTEsNyArMTEs
NyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1Jf
RVZFTlRfTE9HX1dSSVRFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19O
RVRXT1JLX0FEQVBUT1JfRVZFTlRfTE9HX1dSSVRFUl9IXwogCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19h
ZGFwdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19h
ZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlcl91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9ldmVudF9sb2dfd3JpdGVyX3Vu
aXR0ZXN0LmNjCmluZGV4IGRmOTc1OTQ3Y2ExM2ExZjQzYWM4Y2ViOGU3NWE1YmY0Y2NkNTI0NDYu
LjQyMTg5YzNlMTFjMzIxZmEwMzYzOWE2NzNkY2EyMjMwNjc3OWUwY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9ldmVudF9sb2dfd3JpdGVyX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9ldmVudF9sb2dfd3JpdGVyX3VuaXR0ZXN0
LmNjCkBAIC0zNiw3ICszNiw3IEBAIE1BVENIRVJfUChJc1J0Y0V2ZW50QW5hQ29uZmlnRXF1YWxU
bywgY29uZmlnLCAiIikgewogICAgIHJldHVybiBmYWxzZTsKICAgfQogICBhdXRvIGFuYV9ldmVu
dCA9IHN0YXRpY19jYXN0PFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbio+KGFyZyk7Ci0g
IHJldHVybiAqYW5hX2V2ZW50LT5jb25maWdfID09IGNvbmZpZzsKKyAgcmV0dXJuIGFuYV9ldmVu
dC0+Y29uZmlnKCkgPT0gY29uZmlnOwogfQogCiBzdHJ1Y3QgRXZlbnRMb2dXcml0ZXJTdGF0ZXMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVy
X3Bscl9iYXNlZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxl
cl9wbHJfYmFzZWQuY2MKaW5kZXggN2FiNzJjOTQzN2UzNzIxOWQyNGZkMWUwYTEyNzk5ZDRiNWQ4
N2Q4OC4uOTM2ZTIyNDI5YWM4ODg1NGZjZDcyZWNhNzUyMTdlN2QzMjZhYTEwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVyX3Bscl9iYXNlZC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJfcGxyX2Jh
c2VkLmNjCkBAIC0xMCw3ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJfcGxyX2Jhc2VkLmgiCiAKLSNp
bmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAK
ICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9wbHJfYmFzZWQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9wbHJfYmFzZWQuaAppbmRleCBiNjY4ODNlZjU1
MmU1MTRiMDM4ZTgyYjI1ZTRkNmRjOTcyN2M2NGFkLi5iN2QzZDU2MTczZTZiYThkZTJkNmNiMzUy
MDNiOWNlMzFiZDM3ZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3Iv
ZmVjX2NvbnRyb2xsZXJfcGxyX2Jhc2VkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFw
dG9yL2ZlY19jb250cm9sbGVyX3Bscl9iYXNlZC5oCkBAIC0xMyw4ICsxMywxMCBAQAogCiAjaW5j
bHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1
ZGUgImNvbW1vbl9hdWRpby9zbW9vdGhpbmdfZmlsdGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRp
b19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL3V0aWwvdGhyZXNob2xkX2N1cnZlLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRp
b19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJfcnBscl9iYXNlZC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1
ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9ycGxyX2Jhc2VkLmNjCmluZGV4IGM4
Y2ZkMzE2MDdjNDZlMzBhNGNlZmM1YTQxZmMzNDk0NTdiMjY0MTQuLjZjMzBiOGYyYzA3NDNlNzQw
MDhlNmEyMmQ0MWU2MDE4YThjMDMzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtf
YWRhcHRvci9mZWNfY29udHJvbGxlcl9ycGxyX2Jhc2VkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9ycGxyX2Jhc2VkLmNjCkBAIC0xMCw5ICsxMCw2
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0
b3IvZmVjX2NvbnRyb2xsZXJfcnBscl9iYXNlZC5oIgogCi0jaW5jbHVkZSA8bGltaXRzPgotI2lu
Y2x1ZGUgPHV0aWxpdHk+Ci0KICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVj
X2NvbnRyb2xsZXJfcnBscl9iYXNlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2Zl
Y19jb250cm9sbGVyX3JwbHJfYmFzZWQuaAppbmRleCA5YTNjMzdjM2QxZDhjZTA2YzIwOGFmNzI3
MjBmYTdkMTY4NmExZTEzLi40MjFjYjcwYWJkMThiYWFhYmNmYzZhMGZhZGY0Mzc2NGY4N2IwNWVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJf
cnBscl9iYXNlZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJv
bGxlcl9ycGxyX2Jhc2VkLmgKQEAgLTExLDkgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0ZFQ19DT05UUk9MTEVSX1JQTFJfQkFTRURf
SF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0ZF
Q19DT05UUk9MTEVSX1JQTFJfQkFTRURfSF8KIAotI2luY2x1ZGUgPG1lbW9yeT4KLQorI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtf
YWRhcHRvcl9jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvdXRpbC90aHJlc2hvbGRfY3VydmUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtf
YWRhcHRvci9mcmFtZV9sZW5ndGhfY29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtf
YWRhcHRvci9mcmFtZV9sZW5ndGhfY29udHJvbGxlci5jYwppbmRleCA0MGU5N2NiMzcxZTQzYzI3
MGY3NzFlY2YwNjBlMWYwZTYzNjE1ZjAyLi5iMTIzYzdjNzBlZDVlODdmODI1ODYzYzA5YTJjM2Zh
Njg2NjY0ZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZnJhbWVf
bGVuZ3RoX2NvbnRyb2xsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2Zy
YW1lX2xlbmd0aF9jb250cm9sbGVyLmNjCkBAIC0xMSwxMCArMTEsMTAgQEAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZnJhbWVfbGVuZ3RoX2Nv
bnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxpdGVyYXRvcj4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2ZyYW1lX2xlbmd0aF9jb250cm9sbGVy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZnJhbWVfbGVuZ3RoX2NvbnRyb2xsZXIu
aAppbmRleCBmMDg0ZmQwMzgyZjE2MDc5NTlkMGMwMThjNWRmNDJiNjk1YmFiOTI2Li5mMGE1YWFi
YTlhMmE2YTJhN2Q0NjUzNzU2NDAwNDE0YTZlMWI4ZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRp
b19uZXR3b3JrX2FkYXB0b3IvZnJhbWVfbGVuZ3RoX2NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9h
dWRpb19uZXR3b3JrX2FkYXB0b3IvZnJhbWVfbGVuZ3RoX2NvbnRyb2xsZXIuaApAQCAtMTEsMTAg
KzExLDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElPX05FVFdPUktfQURB
UFRPUl9GUkFNRV9MRU5HVEhfQ09OVFJPTExFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NP
RElOR19BVURJT19ORVRXT1JLX0FEQVBUT1JfRlJBTUVfTEVOR1RIX0NPTlRST0xMRVJfSF8KIAor
I2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAK
KyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19u
ZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9j
b25maWcuaAppbmRleCAyNTdhNzlhZjE4ZDkxOTRmMWQwMDY1ZWIwYWFkZDhjMzk2ODkzOTBjLi45
NGU4ZWQ5NjFlN2U2ODNiZjBkODliZTU3YjEwZTJiZTM0N2NlZmFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29u
ZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0
d29ya19hZGFwdG9yX2NvbmZpZy5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNf
QVVESU9fQ09ESU5HX0FVRElPX05FVFdPUktfQURBUFRPUl9JTkNMVURFX0FVRElPX05FVFdPUktf
QURBUFRPUl9DT05GSUdfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfQVVESU9fTkVU
V09SS19BREFQVE9SX0lOQ0xVREVfQVVESU9fTkVUV09SS19BREFQVE9SX0NPTkZJR19IXwogCisj
aW5jbHVkZSA8c3RkZGVmLmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2F1ZGlvX2Zvcm1h
dF9jb252ZXJzaW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2F1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uLmNj
CmluZGV4IGUzOGFhMzMzMzUwNWM3NjQyMGZiNTRmNzg5MmVmNjQ5N2Y4N2ZjZjEuLmYwNjgzMDFh
ZGY5MTY4NTc2Y2IxMTMwNmZkYmNmZmE3MWU1NjQ1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9hdWRpb19mb3JtYXRfY29udmVyc2lvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvYXVkaW9fZm9y
bWF0X2NvbnZlcnNpb24uY2MKQEAgLTExLDExICsxMSwxMiBAQAogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9hdWRpb19mb3JtYXRfY29udmVyc2lvbi5oIgogCiAjaW5jbHVk
ZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNp
bmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21h
dGNoLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2FuaXRpemVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpA
QCAtNDEsMTEgKzQyLDExIEBAIENvZGVjSW5zdCBNYWtlQ29kZWNJbnN0KGludCBwYXlsb2FkX3R5
cGUsCiB9ICAvLyBuYW1lc3BhY2UKIAogU2RwQXVkaW9Gb3JtYXQgQ29kZWNJbnN0VG9TZHAoY29u
c3QgQ29kZWNJbnN0JiBjaSkgewotICBpZiAoU1RSX0NBU0VfQ01QKGNpLnBsbmFtZSwgImc3MjIi
KSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNpLnBsbmFtZSwgImc3MjIi
KSkgewogICAgIFJUQ19DSEVDS19FUSgxNjAwMCwgY2kucGxmcmVxKTsKICAgICBSVENfQ0hFQ0so
Y2kuY2hhbm5lbHMgPT0gMSB8fCBjaS5jaGFubmVscyA9PSAyKTsKICAgICByZXR1cm4geyJnNzIy
IiwgODAwMCwgY2kuY2hhbm5lbHN9OwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChjaS5wbG5h
bWUsICJvcHVzIikgPT0gMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uo
Y2kucGxuYW1lLCAib3B1cyIpKSB7CiAgICAgUlRDX0NIRUNLX0VRKDQ4MDAwLCBjaS5wbGZyZXEp
OwogICAgIFJUQ19DSEVDSyhjaS5jaGFubmVscyA9PSAxIHx8IGNpLmNoYW5uZWxzID09IDIpOwog
ICAgIHJldHVybiBjaS5jaGFubmVscyA9PSAxCkBAIC01NywxMiArNTgsMTIgQEAgU2RwQXVkaW9G
b3JtYXQgQ29kZWNJbnN0VG9TZHAoY29uc3QgQ29kZWNJbnN0JiBjaSkgewogfQogCiBDb2RlY0lu
c3QgU2RwVG9Db2RlY0luc3QoaW50IHBheWxvYWRfdHlwZSwgY29uc3QgU2RwQXVkaW9Gb3JtYXQm
IGF1ZGlvX2Zvcm1hdCkgewotICBpZiAoU1RSX0NBU0VfQ01QKGF1ZGlvX2Zvcm1hdC5uYW1lLmNf
c3RyKCksICJnNzIyIikgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShhdWRp
b19mb3JtYXQubmFtZSwgImc3MjIiKSkgewogICAgIFJUQ19DSEVDS19FUSg4MDAwLCBhdWRpb19m
b3JtYXQuY2xvY2tyYXRlX2h6KTsKICAgICBSVENfQ0hFQ0soYXVkaW9fZm9ybWF0Lm51bV9jaGFu
bmVscyA9PSAxIHx8IGF1ZGlvX2Zvcm1hdC5udW1fY2hhbm5lbHMgPT0gMik7CiAgICAgcmV0dXJu
IE1ha2VDb2RlY0luc3QocGF5bG9hZF90eXBlLCAiZzcyMiIsIDE2MDAwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1ZGlvX2Zvcm1hdC5udW1fY2hhbm5lbHMpOwotICB9IGVsc2UgaWYgKFNU
Ul9DQVNFX0NNUChhdWRpb19mb3JtYXQubmFtZS5jX3N0cigpLCAib3B1cyIpID09IDApIHsKKyAg
fSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGF1ZGlvX2Zvcm1hdC5uYW1lLCAib3B1
cyIpKSB7CiAgICAgUlRDX0NIRUNLX0VRKDQ4MDAwLCBhdWRpb19mb3JtYXQuY2xvY2tyYXRlX2h6
KTsKICAgICBSVENfQ0hFQ0tfRVEoMiwgYXVkaW9fZm9ybWF0Lm51bV9jaGFubmVscyk7CiAgICAg
Y29uc3QgaW50IG51bV9jaGFubmVscyA9IFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
Y25nL2F1ZGlvX2VuY29kZXJfY25nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVy
X2NuZy5jYwppbmRleCAwNTUxOTA0OTdhNTRjMjg0MzZlZDQwMTI5NWQyYTAxNTE2ZWU0MzYwLi40
NzY5NTRmZTYwZDA2ZDA0NzhjYmI1YmQ0N2QyN2QzYzg5ZDljZTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcv
YXVkaW9fZW5jb2Rlcl9jbmcuY2MKQEAgLTEwLDQwICsxMCw3MiBAQAogCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5oIgogCi0jaW5j
bHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxjc3RkaW50Pgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2Nu
Zy93ZWJydGNfY25nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCiBuYW1lc3BhY2UgewogCiBjb25zdCBpbnQga01heEZyYW1lU2l6ZU1zID0g
NjA7CiAKLX0gIC8vIG5hbWVzcGFjZQotCi1BdWRpb0VuY29kZXJDbmc6OkNvbmZpZzo6Q29uZmln
KCkgPSBkZWZhdWx0OwotQXVkaW9FbmNvZGVyQ25nOjpDb25maWc6OkNvbmZpZyhDb25maWcmJikg
PSBkZWZhdWx0OwotQXVkaW9FbmNvZGVyQ25nOjpDb25maWc6On5Db25maWcoKSA9IGRlZmF1bHQ7
Ci0KLWJvb2wgQXVkaW9FbmNvZGVyQ25nOjpDb25maWc6OklzT2soKSBjb25zdCB7Ci0gIGlmIChu
dW1fY2hhbm5lbHMgIT0gMSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmICghc3BlZWNoX2VuY29k
ZXIpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAobnVtX2NoYW5uZWxzICE9IHNwZWVjaF9lbmNv
ZGVyLT5OdW1DaGFubmVscygpKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKHNpZF9mcmFtZV9p
bnRlcnZhbF9tcyA8Ci0gICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNwZWVjaF9lbmNvZGVyLT5NYXgx
ME1zRnJhbWVzSW5BUGFja2V0KCkgKiAxMCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAobnVt
X2NuZ19jb2VmZmljaWVudHMgPiBXRUJSVENfQ05HX01BWF9MUENfT1JERVIgfHwKLSAgICAgIG51
bV9jbmdfY29lZmZpY2llbnRzIDw9IDApCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1
ZTsKLX0KLQotQXVkaW9FbmNvZGVyQ25nOjpBdWRpb0VuY29kZXJDbmcoQ29uZmlnJiYgY29uZmln
KQorY2xhc3MgQXVkaW9FbmNvZGVyQ25nIGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7Cisg
cHVibGljOgorICBleHBsaWNpdCBBdWRpb0VuY29kZXJDbmcoQXVkaW9FbmNvZGVyQ25nQ29uZmln
JiYgY29uZmlnKTsKKyAgfkF1ZGlvRW5jb2RlckNuZygpIG92ZXJyaWRlOworCisgIC8vIE5vdCBj
b3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgQXVkaW9FbmNvZGVyQ25nKGNvbnN0IEF1ZGlvRW5jb2Rl
ckNuZyYpID0gZGVsZXRlOworICBBdWRpb0VuY29kZXJDbmcoQXVkaW9FbmNvZGVyQ25nJiYpID0g
ZGVsZXRlOworICBBdWRpb0VuY29kZXJDbmcmIG9wZXJhdG9yPShjb25zdCBBdWRpb0VuY29kZXJD
bmcmKSA9IGRlbGV0ZTsKKyAgQXVkaW9FbmNvZGVyQ25nJiBvcGVyYXRvcj0oQXVkaW9FbmNvZGVy
Q25nJiYpID0gZGVsZXRlOworCisgIGludCBTYW1wbGVSYXRlSHooKSBjb25zdCBvdmVycmlkZTsK
KyAgc2l6ZV90IE51bUNoYW5uZWxzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIGludCBSdHBUaW1lc3Rh
bXBSYXRlSHooKSBjb25zdCBvdmVycmlkZTsKKyAgc2l6ZV90IE51bTEwTXNGcmFtZXNJbk5leHRQ
YWNrZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgc2l6ZV90IE1heDEwTXNGcmFtZXNJbkFQYWNrZXQo
KSBjb25zdCBvdmVycmlkZTsKKyAgaW50IEdldFRhcmdldEJpdHJhdGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgRW5jb2RlZEluZm8gRW5jb2RlSW1wbCh1aW50MzJfdCBydHBfdGltZXN0YW1wLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGludDE2X3Q+IGF1ZGlv
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QnVmZmVyKiBlbmNvZGVkKSBvdmVycmlk
ZTsKKyAgdm9pZCBSZXNldCgpIG92ZXJyaWRlOworICBib29sIFNldEZlYyhib29sIGVuYWJsZSkg
b3ZlcnJpZGU7CisgIGJvb2wgU2V0RHR4KGJvb2wgZW5hYmxlKSBvdmVycmlkZTsKKyAgYm9vbCBT
ZXRBcHBsaWNhdGlvbihBcHBsaWNhdGlvbiBhcHBsaWNhdGlvbikgb3ZlcnJpZGU7CisgIHZvaWQg
U2V0TWF4UGxheWJhY2tSYXRlKGludCBmcmVxdWVuY3lfaHopIG92ZXJyaWRlOworICBydGM6OkFy
cmF5VmlldzxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPj4gUmVjbGFpbUNvbnRhaW5lZEVu
Y29kZXJzKCkKKyAgICAgIG92ZXJyaWRlOworICB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtQYWNrZXRM
b3NzRnJhY3Rpb24oCisgICAgICBmbG9hdCB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24pIG92
ZXJyaWRlOworICB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtSZWNvdmVyYWJsZVBhY2tldExvc3NGcmFj
dGlvbigKKyAgICAgIGZsb2F0IHVwbGlua19yZWNvdmVyYWJsZV9wYWNrZXRfbG9zc19mcmFjdGlv
bikgb3ZlcnJpZGU7CisgIHZvaWQgT25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aCgKKyAgICAgIGlu
dCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMsCisgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90
PiBid2VfcGVyaW9kX21zKSBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIEVuY29kZWRJbmZvIEVu
Y29kZVBhc3NpdmUoc2l6ZV90IGZyYW1lc190b19lbmNvZGUsIHJ0Yzo6QnVmZmVyKiBlbmNvZGVk
KTsKKyAgRW5jb2RlZEluZm8gRW5jb2RlQWN0aXZlKHNpemVfdCBmcmFtZXNfdG9fZW5jb2RlLCBy
dGM6OkJ1ZmZlciogZW5jb2RlZCk7CisgIHNpemVfdCBTYW1wbGVzUGVyMTBtc0ZyYW1lKCkgY29u
c3Q7CisKKyAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gc3BlZWNoX2VuY29kZXJfOwor
ICBjb25zdCBpbnQgY25nX3BheWxvYWRfdHlwZV87CisgIGNvbnN0IGludCBudW1fY25nX2NvZWZm
aWNpZW50c187CisgIGNvbnN0IGludCBzaWRfZnJhbWVfaW50ZXJ2YWxfbXNfOworICBzdGQ6OnZl
Y3RvcjxpbnQxNl90PiBzcGVlY2hfYnVmZmVyXzsKKyAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHJ0
cF90aW1lc3RhbXBzXzsKKyAgYm9vbCBsYXN0X2ZyYW1lX2FjdGl2ZV87CisgIHN0ZDo6dW5pcXVl
X3B0cjxWYWQ+IHZhZF87CisgIHN0ZDo6dW5pcXVlX3B0cjxDb21mb3J0Tm9pc2VFbmNvZGVyPiBj
bmdfZW5jb2Rlcl87Cit9OworCitBdWRpb0VuY29kZXJDbmc6OkF1ZGlvRW5jb2RlckNuZyhBdWRp
b0VuY29kZXJDbmdDb25maWcmJiBjb25maWcpCiAgICAgOiBzcGVlY2hfZW5jb2Rlcl8oKHN0YXRp
Y19jYXN0PHZvaWQ+KFsmXSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgUlRDX0NIRUNLKGNv
bmZpZy5Jc09rKCkpIDw8ICJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uIjsKICAgICAgICAgICAgICAg
ICAgICAgICAgfSgpKSwKQEAgLTI2MSw0ICsyOTMsMzEgQEAgc2l6ZV90IEF1ZGlvRW5jb2RlckNu
Zzo6U2FtcGxlc1BlcjEwbXNGcmFtZSgpIGNvbnN0IHsKICAgcmV0dXJuIHJ0Yzo6Q2hlY2tlZERp
dkV4YWN0KDEwICogU2FtcGxlUmF0ZUh6KCksIDEwMDApOwogfQogCit9ICAvLyBuYW1lc3BhY2UK
KworQXVkaW9FbmNvZGVyQ25nQ29uZmlnOjpBdWRpb0VuY29kZXJDbmdDb25maWcoKSA9IGRlZmF1
bHQ7CitBdWRpb0VuY29kZXJDbmdDb25maWc6OkF1ZGlvRW5jb2RlckNuZ0NvbmZpZyhBdWRpb0Vu
Y29kZXJDbmdDb25maWcmJikgPSBkZWZhdWx0OworQXVkaW9FbmNvZGVyQ25nQ29uZmlnOjp+QXVk
aW9FbmNvZGVyQ25nQ29uZmlnKCkgPSBkZWZhdWx0OworCitib29sIEF1ZGlvRW5jb2RlckNuZ0Nv
bmZpZzo6SXNPaygpIGNvbnN0IHsKKyAgaWYgKG51bV9jaGFubmVscyAhPSAxKQorICAgIHJldHVy
biBmYWxzZTsKKyAgaWYgKCFzcGVlY2hfZW5jb2RlcikKKyAgICByZXR1cm4gZmFsc2U7CisgIGlm
IChudW1fY2hhbm5lbHMgIT0gc3BlZWNoX2VuY29kZXItPk51bUNoYW5uZWxzKCkpCisgICAgcmV0
dXJuIGZhbHNlOworICBpZiAoc2lkX2ZyYW1lX2ludGVydmFsX21zIDwKKyAgICAgIHN0YXRpY19j
YXN0PGludD4oc3BlZWNoX2VuY29kZXItPk1heDEwTXNGcmFtZXNJbkFQYWNrZXQoKSAqIDEwKSkK
KyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChudW1fY25nX2NvZWZmaWNpZW50cyA+IFdFQlJUQ19D
TkdfTUFYX0xQQ19PUkRFUiB8fAorICAgICAgbnVtX2NuZ19jb2VmZmljaWVudHMgPD0gMCkKKyAg
ICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVlOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9FbmNvZGVyPiBDcmVhdGVDb21mb3J0Tm9pc2VFbmNvZGVyKAorICAgIEF1ZGlvRW5jb2RlckNu
Z0NvbmZpZyYmIGNvbmZpZykgeworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNv
ZGVyQ25nPihzdGQ6Om1vdmUoY29uZmlnKSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuaAppbmRleCBlNGM2NTA3NzY1MWMwNTM2ZWMy
M2UwYzljZWJjOTk1OTVmYTQ3NGMzLi4yZWYzMjM2NGM3ZWE5ZGY0ZWMxNjg3NGIxMTIwMDU1OTlm
NjIwOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5oCkBAIC0xMSw4NiArMTEs
MzggQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX0NOR19BVURJT19FTkNP
REVSX0NOR19IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfQ05HX0FVRElP
X0VOQ09ERVJfQ05HX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtZW1vcnk+
Ci0jaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19l
bmNvZGVyLmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3ZhZC9pbmNsdWRlL3ZhZC5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2VicnRjX2NuZy5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKLWNsYXNzIFZhZDsKLQotY2xhc3MgQXVkaW9FbmNvZGVyQ25nIGZpbmFsIDogcHVibGljIEF1
ZGlvRW5jb2RlciB7Ci0gcHVibGljOgotICBzdHJ1Y3QgQ29uZmlnIHsKLSAgICBDb25maWcoKTsK
LSAgICBDb25maWcoQ29uZmlnJiYpOwotICAgIH5Db25maWcoKTsKLSAgICBib29sIElzT2soKSBj
b25zdDsKLQotICAgIHNpemVfdCBudW1fY2hhbm5lbHMgPSAxOwotICAgIGludCBwYXlsb2FkX3R5
cGUgPSAxMzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBzcGVlY2hfZW5jb2Rl
cjsKLSAgICBWYWQ6OkFnZ3Jlc3NpdmVuZXNzIHZhZF9tb2RlID0gVmFkOjprVmFkTm9ybWFsOwot
ICAgIGludCBzaWRfZnJhbWVfaW50ZXJ2YWxfbXMgPSAxMDA7Ci0gICAgaW50IG51bV9jbmdfY29l
ZmZpY2llbnRzID0gODsKLSAgICAvLyBUaGUgVmFkIHBvaW50ZXIgaXMgbWFpbmx5IGZvciB0ZXN0
aW5nLiBJZiBhIE5VTEwgcG9pbnRlciBpcyBwYXNzZWQsIHRoZQotICAgIC8vIEF1ZGlvRW5jb2Rl
ckNuZyBjcmVhdGVzIChhbmQgZGVzdHJveXMpIGEgVmFkIG9iamVjdCBpbnRlcm5hbGx5LiBJZiBh
bgotICAgIC8vIG9iamVjdCBpcyBwYXNzZWQsIHRoZSBBdWRpb0VuY29kZXJDbmcgYXNzdW1lcyBv
d25lcnNoaXAgb2YgdGhlIFZhZAotICAgIC8vIG9iamVjdC4KLSAgICBWYWQqIHZhZCA9IG51bGxw
dHI7Ci0gIH07Ci0KLSAgZXhwbGljaXQgQXVkaW9FbmNvZGVyQ25nKENvbmZpZyYmIGNvbmZpZyk7
Ci0gIH5BdWRpb0VuY29kZXJDbmcoKSBvdmVycmlkZTsKLQotICBpbnQgU2FtcGxlUmF0ZUh6KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gIHNpemVfdCBOdW1DaGFubmVscygpIGNvbnN0IG92ZXJyaWRlOwot
ICBpbnQgUnRwVGltZXN0YW1wUmF0ZUh6KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIHNpemVfdCBOdW0x
ME1zRnJhbWVzSW5OZXh0UGFja2V0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIHNpemVfdCBNYXgxME1z
RnJhbWVzSW5BUGFja2V0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGludCBHZXRUYXJnZXRCaXRyYXRl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIEVuY29kZWRJbmZvIEVuY29kZUltcGwodWludDMyX3QgcnRw
X3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25z
dCBpbnQxNl90PiBhdWRpbywKLSAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkJ1ZmZlciog
ZW5jb2RlZCkgb3ZlcnJpZGU7Ci0gIHZvaWQgUmVzZXQoKSBvdmVycmlkZTsKLSAgYm9vbCBTZXRG
ZWMoYm9vbCBlbmFibGUpIG92ZXJyaWRlOwotICBib29sIFNldER0eChib29sIGVuYWJsZSkgb3Zl
cnJpZGU7Ci0gIGJvb2wgU2V0QXBwbGljYXRpb24oQXBwbGljYXRpb24gYXBwbGljYXRpb24pIG92
ZXJyaWRlOwotICB2b2lkIFNldE1heFBsYXliYWNrUmF0ZShpbnQgZnJlcXVlbmN5X2h6KSBvdmVy
cmlkZTsKLSAgcnRjOjpBcnJheVZpZXc8c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4+IFJl
Y2xhaW1Db250YWluZWRFbmNvZGVycygpCi0gICAgICBvdmVycmlkZTsKLSAgdm9pZCBPblJlY2Vp
dmVkVXBsaW5rUGFja2V0TG9zc0ZyYWN0aW9uKAotICAgICAgZmxvYXQgdXBsaW5rX3BhY2tldF9s
b3NzX2ZyYWN0aW9uKSBvdmVycmlkZTsKLSAgdm9pZCBPblJlY2VpdmVkVXBsaW5rUmVjb3ZlcmFi
bGVQYWNrZXRMb3NzRnJhY3Rpb24oCi0gICAgICBmbG9hdCB1cGxpbmtfcmVjb3ZlcmFibGVfcGFj
a2V0X2xvc3NfZnJhY3Rpb24pIG92ZXJyaWRlOwotICB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtCYW5k
d2lkdGgoCi0gICAgICBpbnQgdGFyZ2V0X2F1ZGlvX2JpdHJhdGVfYnBzLAotICAgICAgYWJzbDo6
b3B0aW9uYWw8aW50NjRfdD4gYndlX3BlcmlvZF9tcykgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgot
ICBFbmNvZGVkSW5mbyBFbmNvZGVQYXNzaXZlKHNpemVfdCBmcmFtZXNfdG9fZW5jb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QnVmZmVyKiBlbmNvZGVkKTsKLSAgRW5jb2Rl
ZEluZm8gRW5jb2RlQWN0aXZlKHNpemVfdCBmcmFtZXNfdG9fZW5jb2RlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnRjOjpCdWZmZXIqIGVuY29kZWQpOwotICBzaXplX3QgU2FtcGxlc1Bl
cjEwbXNGcmFtZSgpIGNvbnN0OwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IHNw
ZWVjaF9lbmNvZGVyXzsKLSAgY29uc3QgaW50IGNuZ19wYXlsb2FkX3R5cGVfOwotICBjb25zdCBp
bnQgbnVtX2NuZ19jb2VmZmljaWVudHNfOwotICBjb25zdCBpbnQgc2lkX2ZyYW1lX2ludGVydmFs
X21zXzsKLSAgc3RkOjp2ZWN0b3I8aW50MTZfdD4gc3BlZWNoX2J1ZmZlcl87Ci0gIHN0ZDo6dmVj
dG9yPHVpbnQzMl90PiBydHBfdGltZXN0YW1wc187Ci0gIGJvb2wgbGFzdF9mcmFtZV9hY3RpdmVf
OwotICBzdGQ6OnVuaXF1ZV9wdHI8VmFkPiB2YWRfOwotICBzdGQ6OnVuaXF1ZV9wdHI8Q29tZm9y
dE5vaXNlRW5jb2Rlcj4gY25nX2VuY29kZXJfOwotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9B
U1NJR04oQXVkaW9FbmNvZGVyQ25nKTsKK3N0cnVjdCBBdWRpb0VuY29kZXJDbmdDb25maWcgewor
ICAvLyBNb3ZlYWJsZSwgbm90IGNvcHlhYmxlLgorICBBdWRpb0VuY29kZXJDbmdDb25maWcoKTsK
KyAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnKEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyYmKTsKKyAgfkF1
ZGlvRW5jb2RlckNuZ0NvbmZpZygpOworCisgIGJvb2wgSXNPaygpIGNvbnN0OworCisgIHNpemVf
dCBudW1fY2hhbm5lbHMgPSAxOworICBpbnQgcGF5bG9hZF90eXBlID0gMTM7CisgIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0VuY29kZXI+IHNwZWVjaF9lbmNvZGVyOworICBWYWQ6OkFnZ3Jlc3NpdmVu
ZXNzIHZhZF9tb2RlID0gVmFkOjprVmFkTm9ybWFsOworICBpbnQgc2lkX2ZyYW1lX2ludGVydmFs
X21zID0gMTAwOworICBpbnQgbnVtX2NuZ19jb2VmZmljaWVudHMgPSA4OworICAvLyBUaGUgVmFk
IHBvaW50ZXIgaXMgbWFpbmx5IGZvciB0ZXN0aW5nLiBJZiBhIE5VTEwgcG9pbnRlciBpcyBwYXNz
ZWQsIHRoZQorICAvLyBBdWRpb0VuY29kZXJDbmcgY3JlYXRlcyAoYW5kIGRlc3Ryb3lzKSBhIFZh
ZCBvYmplY3QgaW50ZXJuYWxseS4gSWYgYW4KKyAgLy8gb2JqZWN0IGlzIHBhc3NlZCwgdGhlIEF1
ZGlvRW5jb2RlckNuZyBhc3N1bWVzIG93bmVyc2hpcCBvZiB0aGUgVmFkCisgIC8vIG9iamVjdC4K
KyAgVmFkKiB2YWQgPSBudWxscHRyOwogfTsKIAorc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rl
cj4gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2RlcigKKyAgICBBdWRpb0VuY29kZXJDbmdDb25maWcm
JiBjb25maWcpOworCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKICNlbmRpZiAgLy8gTU9EVUxF
U19BVURJT19DT0RJTkdfQ09ERUNTX0NOR19BVURJT19FTkNPREVSX0NOR19IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZ191bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmdfdW5pdHRlc3QuY2MKaW5kZXggYTc2ZGNiZGEy
OTg5ZjllMWYwN2MzYTI1Nzg1MmU2YzFmOWFlYjk4MC4uZTM2NTViNDY0YTVjZWY4OGE2ZGJlMDYz
MGZkOGNlYjM2NDM3MWIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNv
ZGVyX2NuZ191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJf
Y25nX3VuaXR0ZXN0LmNjCkBAIC01MCw4ICs1MCw4IEBAIGNsYXNzIEF1ZGlvRW5jb2RlckNuZ1Rl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICBjbmdfLnJlc2V0KCk7CiAgIH0KIAot
ICBBdWRpb0VuY29kZXJDbmc6OkNvbmZpZyBNYWtlQ25nQ29uZmlnKCkgewotICAgIEF1ZGlvRW5j
b2RlckNuZzo6Q29uZmlnIGNvbmZpZzsKKyAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnIE1ha2VDbmdD
b25maWcoKSB7CisgICAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnIGNvbmZpZzsKICAgICBjb25maWcu
c3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUobW9ja19lbmNvZGVyX293bmVyXyk7CiAgICAgRVhQ
RUNUX1RSVUUoY29uZmlnLnNwZWVjaF9lbmNvZGVyKTsKIApAQCAtNjMsNyArNjMsNyBAQCBjbGFz
cyBBdWRpb0VuY29kZXJDbmdUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgcmV0
dXJuIGNvbmZpZzsKICAgfQogCi0gIHZvaWQgQ3JlYXRlQ25nKEF1ZGlvRW5jb2RlckNuZzo6Q29u
ZmlnJiYgY29uZmlnKSB7CisgIHZvaWQgQ3JlYXRlQ25nKEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyYm
IGNvbmZpZykgewogICAgIG51bV9hdWRpb19zYW1wbGVzXzEwbXNfID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PigxMCAqIHNhbXBsZV9yYXRlX2h6XyAvIDEwMDApOwogICAgIEFTU0VSVF9MRShudW1fYXVk
aW9fc2FtcGxlc18xMG1zXywga01heE51bVNhbXBsZXMpOwogICAgIGlmIChjb25maWcuc3BlZWNo
X2VuY29kZXIpIHsKQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgQXVkaW9FbmNvZGVyQ25nVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2Rl
cl8sIE1heDEwTXNGcmFtZXNJbkFQYWNrZXQoKSkKICAgICAgICAgICAuV2lsbE9uY2UoUmV0dXJu
KDF1KSk7CiAgICAgfQotICAgIGNuZ18ucmVzZXQobmV3IEF1ZGlvRW5jb2RlckNuZyhzdGQ6Om1v
dmUoY29uZmlnKSkpOworICAgIGNuZ18gPSBDcmVhdGVDb21mb3J0Tm9pc2VFbmNvZGVyKHN0ZDo6
bW92ZShjb25maWcpKTsKICAgfQogCiAgIHZvaWQgRW5jb2RlKCkgewpAQCAtMTkzLDcgKzE5Myw3
IEBAIGNsYXNzIEF1ZGlvRW5jb2RlckNuZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsK
ICAgICByZXR1cm4gZW5jb2RlZF9pbmZvXy5wYXlsb2FkX3R5cGUgIT0ga0NuZ1BheWxvYWRUeXBl
OwogICB9CiAKLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2RlckNuZz4gY25nXzsKKyAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gY25nXzsKICAgc3RkOjp1bmlxdWVfcHRyPE1vY2tB
dWRpb0VuY29kZXI+IG1vY2tfZW5jb2Rlcl9vd25lcl87CiAgIE1vY2tBdWRpb0VuY29kZXIqIG1v
Y2tfZW5jb2Rlcl87CiAgIE1vY2tWYWQqIG1vY2tfdmFkXzsgIC8vIE93bmVyc2hpcCBpcyB0cmFu
c2ZlcnJlZCB0byB8Y25nX3wuCkBAIC00MzIsNyArNDMyLDcgQEAgY2xhc3MgQXVkaW9FbmNvZGVy
Q25nRGVhdGhUZXN0IDogcHVibGljIEF1ZGlvRW5jb2RlckNuZ1Rlc3QgewogICAvLyBkZWxldGVk
LgogICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUgeyBjbmdfLnJlc2V0KCk7IH0KIAotICBBdWRp
b0VuY29kZXJDbmc6OkNvbmZpZyBNYWtlQ25nQ29uZmlnKCkgeworICBBdWRpb0VuY29kZXJDbmdD
b25maWcgTWFrZUNuZ0NvbmZpZygpIHsKICAgICAvLyBEb24ndCBwcm92aWRlIGEgVmFkIG1vY2sg
b2JqZWN0LCBzaW5jZSBpdCB3b3VsZCBsZWFrIHdoZW4gdGhlIHRlc3QgZGllcy4KICAgICBhdXRv
IGNvbmZpZyA9IEF1ZGlvRW5jb2RlckNuZ1Rlc3Q6Ok1ha2VDbmdDb25maWcoKTsKICAgICBjb25m
aWcudmFkID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2VicnRjX2Nu
Zy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2VicnRjX2NuZy5jYwppbmRleCBhMDdiMDkzYjNjNzA5
NWJiZGQ0NTgyNzI2YTYzYzllZDdmNDFhZWE3Li5mMThmYjI4ZTk4ODA3YjMwMTJkYmRkYzA2MjA2
MDkzZGJlMDNhNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL3dlYnJ0Y19jbmcuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmNjCkBAIC0xMyw2ICsxMyw3IEBACiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9j
ZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVy
c2lvbnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
Y25nL3dlYnJ0Y19jbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2VicnRjX2NuZy5oCmluZGV4IDNm
OGZhZGNkNzFiNGRjNzc3NGQ5Yjg1OWU5YzQ2NzQ1MTk5YmI3YTYuLjZmZjc1Mjk4YWZhMTZhNDFi
NzZlMTJlZWViZmQ3NDczOWFiNTczMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2Vi
cnRjX2NuZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2VicnRjX2NuZy5oCkBAIC0xMSw2ICsx
MSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19DTkdfV0VCUlRDX0NO
R19IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfQ05HX1dFQlJUQ19DTkdf
SF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPGNzdGRkZWY+CiAKICNpbmNsdWRl
ICJhcGkvYXJyYXlfdmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MTEvYXVkaW9f
ZGVjb2Rlcl9wY20uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3BjbS5jYwpp
bmRleCAyNWY0OTVmMzlkODE4N2ViYTIyYzVhZTFiMmUwNGFjY2FmZTljNWI4Li5kNTgwYTA1MDli
NDczOGQ3NGI4ZjRkZmQ4NjhmMzE3ZmJhMTNlMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
ZzcxMS9hdWRpb19kZWNvZGVyX3BjbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19k
ZWNvZGVyX3BjbS5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9wY20uaCIKIAorI2luY2x1ZGUgPHV0
aWxpdHk+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9nNzEx
X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9sZWdh
Y3lfZW5jb2RlZF9hdWRpb19mcmFtZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcx
MS9hdWRpb19kZWNvZGVyX3BjbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9w
Y20uaAppbmRleCAyOWU0ZmE2NTkzYjkzYjdjYmFlMjZiMjZjZTIxMzJkMzFiNjRjMDUwLi45YTAx
YjhhZmY0ZWJmOGQxNWM0Y2RlYjE4MzVlNmQzNDA4ZmQzMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3BjbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1
ZGlvX2RlY29kZXJfcGNtLmgKQEAgLTExLDcgKzExLDEyIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fQ09ESU5HX0NPREVDU19HNzExX0FVRElPX0RFQ09ERVJfUENNX0hfCiAjZGVmaW5lIE1PRFVM
RVNfQVVESU9fQ09ESU5HX0NPREVDU19HNzExX0FVRElPX0RFQ09ERVJfUENNX0hfCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9nNzExL2F1ZGlvX2VuY29kZXJfcGNtLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MTEvYXVkaW9fZW5j
b2Rlcl9wY20uY2MKaW5kZXggYzE0Mjg3ZWQ0ODdlOWRiYjZmOWJhMTNkMjMxMzdlNTM2ZmM4MmIx
NC4uZGNlMTYzNThlZjM1MThmY2NjMjg2YWUyMWQwNGQ5MmI5MmY0ZDY0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9wY20uY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L2c3MTEvYXVkaW9fZW5jb2Rlcl9wY20uY2MKQEAgLTEwLDEwICsxMCw5IEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19lbmNvZGVyX3BjbS5oIgog
Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxjc3Rk
aW50PgogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVk
ZSkKKyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvZzcxMS9nNzExX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3
MjIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIuY2MKaW5kZXggZWE0
YTcyMWIxMjA1MjU2NWQ5ODE5ZjAwMDQxN2IwMjljYzY3NjdjMi4uNGRlNTVhMGJiNTBmZGY3NjMx
ZWZlN2QwMjlmYjJiNzk0ODY5MTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVk
aW9fZGVjb2Rlcl9nNzIyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJf
ZzcyMi5jYwpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+
CisjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9nNzIyL2c3MjJfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL2xlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9h
dWRpb19lbmNvZGVyX2c3MjIuY2MKaW5kZXggY2I5NmMzYzE3ZWY4MTcwMjY0OWZjODg4YmEzMzI2
ZGU4ZDUyZjFkMC4uZTYzZDU5MDMwOTA1MjI5ODVhZDE5ZmE0YTY0ZDAyMTIxMzU5YmI2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5jYwpAQCAtMTAsMTAgKzEwLDkgQEAK
IAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29k
ZXJfZzcyMi5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAK
LSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQo
YnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9nNzIyX2ludGVyZmFjZS5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29u
dmVyc2lvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJf
aWxiYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5jYwppbmRleCA5
ZTU4Y2UwM2NhNDc0YmIwYzljZDJmMGM2MjM1OTFhNzVhZTQxODg1Li41N2I1YWJiZTIzZGY3ZmMy
YTJhMTk3ZmE4ODBhNmMxZDgzOWE4YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9h
dWRpb19kZWNvZGVyX2lsYmMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rl
cl9pbGJjLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuaCIKIAorI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2lsYmMvaWxiYy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9f
ZGVjb2Rlcl9pbGJjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuaApp
bmRleCBlZGI2NWQwOWM2ZDJmZGFjZDc4NDQ4YjFkNDk5YTY4MTRkYWY4NGJmLi5mY2IyMDc0ZGM5
NTMzNjAxODgwN2RhNmQwYzlkYmUwYzcwMDg1MDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
aWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19k
ZWNvZGVyX2lsYmMuaApAQCAtMTEsNyArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19D
T0RJTkdfQ09ERUNTX0lMQkNfQVVESU9fREVDT0RFUl9JTEJDX0hfCiAjZGVmaW5lIE1PRFVMRVNf
QVVESU9fQ09ESU5HX0NPREVDU19JTEJDX0FVRElPX0RFQ09ERVJfSUxCQ19IXwogCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8dmVjdG9yPgorCiAj
aW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgog
CiB0eXBlZGVmIHN0cnVjdCBpTEJDX2RlY2luc3RfdF8gSWxiY0RlY29kZXJJbnN0YW5jZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYwppbmRleCBkYWU5NTZiMzBjMDQ5OGVl
MDQwYWRhZDNkOThiNjk3NTU2MTNhMDExLi4zNWU2ZmM2NGE2MmFiYWM2MzRhNmYyMTNhNzU4ZTk2
Mjg5OTlkNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2ls
YmMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCkBAIC0x
MSw4ICsxMSw5IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMv
YXVkaW9fZW5jb2Rlcl9pbGJjLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8
bGltaXRzPgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1
ZGUpCisjaW5jbHVkZSA8Y3N0ZGludD4KKworI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2lsYmMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2Nv
bnZlcnNpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy90ZXN0L2lMQkN0ZXN0
c2NyaXB0LnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL3Rlc3QvaUxCQ3Rlc3RzY3JpcHQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWM2MDkyMTE2YjdmZjUwMGVjZjY5Y2QzOThk
NzRjODFlOTE2NmJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9pbGJjL3Rlc3QvaUxCQ3Rlc3RzY3JpcHQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNzMgKzAsMCBAQAotIyEvYmluL2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9u
dWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIK
LQotIwotIyBUaGlzIHNjcmlwdCBjYW4gYmUgdXNlZCB0byB2ZXJpZnkgdGhlIGJpdCBleGFjdG5l
c3Mgb2YgaUxCQyBmaXhlZC1wb2ludCB2ZXJzaW9uIDEuMC42Ci0jCi0KLUlOUD0uLi8uLi8uLi8u
Li8uLi8uLi9yZXNvdXJjZXMvYXVkaW9fY29kaW5nCi1FWEVQPS4uLy4uLy4uLy4uLy4uLy4uLy4u
L291dC9SZWxlYXNlCi1PVVRQPS4vR2VuZXJhdGVkRmlsZXMKLW1rZGlyIC4vR2VuZXJhdGVkRmls
ZXMKLQotJEVYRVAvaUxCQ3Rlc3QgMjAgJElOUC9GMDAuSU5QICRPVVRQL0YwMC5CSVQyMCAkT1VU
UC9GMDAuT1VUMjAgJElOUC9jbGVhbi5jaG4KLSRFWEVQL2lMQkN0ZXN0IDIwICRJTlAvRjAxLklO
UCAkT1VUUC9GMDEuQklUMjAgJE9VVFAvRjAxLk9VVDIwICRJTlAvY2xlYW4uY2huCi0kRVhFUC9p
TEJDdGVzdCAyMCAkSU5QL0YwMi5JTlAgJE9VVFAvRjAyLkJJVDIwICRPVVRQL0YwMi5PVVQyMCAk
SU5QL2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMjAgJElOUC9GMDMuSU5QICRPVVRQL0YwMy5C
SVQyMCAkT1VUUC9GMDMuT1VUMjAgJElOUC9jbGVhbi5jaG4KLSRFWEVQL2lMQkN0ZXN0IDIwICRJ
TlAvRjA0LklOUCAkT1VUUC9GMDQuQklUMjAgJE9VVFAvRjA0Lk9VVDIwICRJTlAvY2xlYW4uY2hu
Ci0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0YwNS5JTlAgJE9VVFAvRjA1LkJJVDIwICRPVVRQL0Yw
NS5PVVQyMCAkSU5QL2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMjAgJElOUC9GMDYuSU5QICRP
VVRQL0YwNi5CSVQyMCAkT1VUUC9GMDYuT1VUMjAgJElOUC9jbGVhbi5jaG4KLQotJEVYRVAvaUxC
Q3Rlc3QgMzAgJElOUC9GMDAuSU5QICRPVVRQL0YwMC5CSVQzMCAkT1VUUC9GMDAuT1VUMzAgJElO
UC9jbGVhbi5jaG4KLSRFWEVQL2lMQkN0ZXN0IDMwICRJTlAvRjAxLklOUCAkT1VUUC9GMDEuQklU
MzAgJE9VVFAvRjAxLk9VVDMwICRJTlAvY2xlYW4uY2huCi0kRVhFUC9pTEJDdGVzdCAzMCAkSU5Q
L0YwMi5JTlAgJE9VVFAvRjAyLkJJVDMwICRPVVRQL0YwMi5PVVQzMCAkSU5QL2NsZWFuLmNobgot
JEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9GMDMuSU5QICRPVVRQL0YwMy5CSVQzMCAkT1VUUC9GMDMu
T1VUMzAgJElOUC9jbGVhbi5jaG4KLSRFWEVQL2lMQkN0ZXN0IDMwICRJTlAvRjA0LklOUCAkT1VU
UC9GMDQuQklUMzAgJE9VVFAvRjA0Lk9VVDMwICRJTlAvY2xlYW4uY2huCi0kRVhFUC9pTEJDdGVz
dCAzMCAkSU5QL0YwNS5JTlAgJE9VVFAvRjA1LkJJVDMwICRPVVRQL0YwNS5PVVQzMCAkSU5QL2Ns
ZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9GMDYuSU5QICRPVVRQL0YwNi5CSVQzMCAk
T1VUUC9GMDYuT1VUMzAgJElOUC9jbGVhbi5jaG4KLQotJEVYRVAvaUxCQ3Rlc3QgMjAgJElOUC9G
MDAuSU5QICRPVVRQL0YwMC5CSVQyMCAkT1VUUC9GMDBfdGxtMTAuT1VUMjAgJElOUC90bG0xMC5j
aG4KLSRFWEVQL2lMQkN0ZXN0IDIwICRJTlAvRjAxLklOUCAkT1VUUC9GMDEuQklUMjAgJE9VVFAv
RjAxX3RsbTEwLk9VVDIwICRJTlAvdGxtMTAuY2huCi0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0Yw
Mi5JTlAgJE9VVFAvRjAyLkJJVDIwICRPVVRQL0YwMl90bG0xMC5PVVQyMCAkSU5QL3RsbTEwLmNo
bgotJEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9GMDAuSU5QICRPVVRQL0YwMC5CSVQzMCAkT1VUUC9G
MDBfdGxtMTAuT1VUMzAgJElOUC90bG0xMC5jaG4KLSRFWEVQL2lMQkN0ZXN0IDMwICRJTlAvRjAx
LklOUCAkT1VUUC9GMDEuQklUMzAgJE9VVFAvRjAxX3RsbTEwLk9VVDMwICRJTlAvdGxtMTAuY2hu
Ci0kRVhFUC9pTEJDdGVzdCAzMCAkSU5QL0YwMi5JTlAgJE9VVFAvRjAyLkJJVDMwICRPVVRQL0Yw
Ml90bG0xMC5PVVQzMCAkSU5QL3RsbTEwLmNobgotCi0KLWRpZmYgJE9VVFAvRjAwLkJJVDIwICRJ
TlAvRjAwLkJJVDIwCi1kaWZmICRPVVRQL0YwMS5CSVQyMCAkSU5QL0YwMS5CSVQyMAotZGlmZiAk
T1VUUC9GMDIuQklUMjAgJElOUC9GMDIuQklUMjAKLWRpZmYgJE9VVFAvRjAzLkJJVDIwICRJTlAv
RjAzLkJJVDIwCi1kaWZmICRPVVRQL0YwNC5CSVQyMCAkSU5QL0YwNC5CSVQyMAotZGlmZiAkT1VU
UC9GMDUuQklUMjAgJElOUC9GMDUuQklUMjAKLWRpZmYgJE9VVFAvRjA2LkJJVDIwICRJTlAvRjA2
LkJJVDIwCi1kaWZmICRPVVRQL0YwMC5PVVQyMCAkSU5QL0YwMC5PVVQyMAotZGlmZiAkT1VUUC9G
MDEuT1VUMjAgJElOUC9GMDEuT1VUMjAKLWRpZmYgJE9VVFAvRjAyLk9VVDIwICRJTlAvRjAyLk9V
VDIwCi1kaWZmICRPVVRQL0YwMy5PVVQyMCAkSU5QL0YwMy5PVVQyMAotZGlmZiAkT1VUUC9GMDQu
T1VUMjAgJElOUC9GMDQuT1VUMjAKLWRpZmYgJE9VVFAvRjA1Lk9VVDIwICRJTlAvRjA1Lk9VVDIw
Ci1kaWZmICRPVVRQL0YwNi5PVVQyMCAkSU5QL0YwNi5PVVQyMAotCi1kaWZmICRPVVRQL0YwMC5C
SVQzMCAkSU5QL0YwMC5CSVQzMAotZGlmZiAkT1VUUC9GMDEuQklUMzAgJElOUC9GMDEuQklUMzAK
LWRpZmYgJE9VVFAvRjAyLkJJVDMwICRJTlAvRjAyLkJJVDMwCi1kaWZmICRPVVRQL0YwMy5CSVQz
MCAkSU5QL0YwMy5CSVQzMAotZGlmZiAkT1VUUC9GMDQuQklUMzAgJElOUC9GMDQuQklUMzAKLWRp
ZmYgJE9VVFAvRjA1LkJJVDMwICRJTlAvRjA1LkJJVDMwCi1kaWZmICRPVVRQL0YwNi5CSVQzMCAk
SU5QL0YwNi5CSVQzMAotZGlmZiAkT1VUUC9GMDAuT1VUMzAgJElOUC9GMDAuT1VUMzAKLWRpZmYg
JE9VVFAvRjAxLk9VVDMwICRJTlAvRjAxLk9VVDMwCi1kaWZmICRPVVRQL0YwMi5PVVQzMCAkSU5Q
L0YwMi5PVVQzMAotZGlmZiAkT1VUUC9GMDMuT1VUMzAgJElOUC9GMDMuT1VUMzAKLWRpZmYgJE9V
VFAvRjA0Lk9VVDMwICRJTlAvRjA0Lk9VVDMwCi1kaWZmICRPVVRQL0YwNS5PVVQzMCAkSU5QL0Yw
NS5PVVQzMAotZGlmZiAkT1VUUC9GMDYuT1VUMzAgJElOUC9GMDYuT1VUMzAKLQotZGlmZiAkT1VU
UC9GMDBfdGxtMTAuT1VUMjAgJElOUC9GMDBfdGxtMTAuT1VUMjAKLWRpZmYgJE9VVFAvRjAxX3Rs
bTEwLk9VVDIwICRJTlAvRjAxX3RsbTEwLk9VVDIwCi1kaWZmICRPVVRQL0YwMl90bG0xMC5PVVQy
MCAkSU5QL0YwMl90bG0xMC5PVVQyMAotZGlmZiAkT1VUUC9GMDBfdGxtMTAuT1VUMzAgJElOUC9G
MDBfdGxtMTAuT1VUMzAKLWRpZmYgJE9VVFAvRjAxX3RsbTEwLk9VVDMwICRJTlAvRjAxX3RsbTEw
Lk9VVDMwCi1kaWZmICRPVVRQL0YwMl90bG0xMC5PVVQzMCAkSU5QL0YwMl90bG0xMC5PVVQzMAot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9DaGFubmVsRmlsZXMu
dHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvQ2hhbm5lbEZpbGVzLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVmNzQxMDE0MWU4Mzk5ZjJiNmI1YmJlMTNmMjYy
ZjVkMjg4NmU4MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9DaGFubmVsRmlsZXMudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsMyArMCwwIEBACi1ib3R0bGVuZWNrcy50eHQKLWxvd3JhdGVzLnR4dAotdHdv
cmF0ZXMudHh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9JbnB1
dEZpbGVzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0lucHV0RmlsZXMudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjZiN2FmYjZjYTg1OWE1MjA5YzZjY2Yz
Nzk5ZDU4MDNiZTQyYTMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0lucHV0RmlsZXMudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRFRNRl8xNmtIel9sb25nLnBjbQotRFRNRl8xNmtI
el9zaG9ydC5wY20KLUYwMC5JTlAKLUYwMS5JTlAKLUYwMi5JTlAKLUYwMy5JTlAKLUYwNC5JTlAK
LUYwNS5JTlAKLUYwNi5JTlAKLWxvbmd0ZXN0LnBjbQotbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQot
bHRlc3RfbXVzaWMucGNtCi1sdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1taXNjMi5wY20KLXB1cmVu
Yi5wY20KLXNhd3N3ZWVwXzM4MF82MC5wY20KLXNpbmVzd2VlcC5wY20KLXNpbmVzd2VlcF9oYWxm
LnBjbQotc3BlZWNobXVzaWMucGNtCi1zcGVlY2htdXNpY19uYi5wY20KLXNwZWVjaG9mZmljZTBk
Qi5wY20KLXNwZWVjaF9hbmRfbWlzY19OQi5wY20KLXNwZWVjaF9hbmRfbWlzY19XQi5wY20KLXRl
c3RNNC5wY20KLXRlc3RNNERfcmV2LnBjbSAgCi10ZXN0TTRELnBjbSAgCi10ZXN0ZmlsZS5wY20K
LXRvbmVfY2lzY28ucGNtCi10b25lX2Npc2NvX2xvbmcucGNtCi13Yl9jb250c3BlZWNoLnBjbQot
d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvSW5wdXRGaWxlc0Zldy50eHQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9JbnB1dEZpbGVzRmV3LnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhiYmRlMzBkNzMzN2IyODM2ZGM1M2EwMDUzYTNhMzA5
Y2UyYzQ5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9JbnB1dEZpbGVzRmV3LnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDYgKzAsMCBAQAotRFRNRl8xNmtIel9zaG9ydC5wY20KLWx0ZXN0X3NwZWVjaF9u
b2lzeS5wY20KLW1pc2MyLnBjbQotc2luZXN3ZWVwLnBjbQotc3BlZWNobXVzaWMucGNtCi10b25l
X2Npc2NvLnBjbQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvTGlz
dE9mVGVzdENhc2VzLnhscyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0xpc3RPZlRl
c3RDYXNlcy54bHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwODg5ZWY0ZWRkYjUz
YjUyOTVlNDI0ODA1OWUzZTM0NTIyM2YyNWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVy
YWwgMTUyMDY0CnpjbWVJYjNBaTBxbHw2cCRPRzNnUiNVenNtazlrYjs8fEtqeTBWOE1fTHt3QlhK
ZHppUDJgYFg1QVNlaV5JSERxYAp6SU4mX2JJTGBfV0M+cTM+IztMSmV5VmJVfSkkVnBeRn43Q1ct
UzxAOFF+VDZDPWlLTV97cmxmT3pFZm5hUzlTS0AKelhScTItX3R0KiplJmc8ND98YjcxX1dnPFJl
dlVWRCV3TS17Wj8+IU9iTVd0MDJrJkNjQXBwZEctTGBGOGhkdit3CnpfLTcxSWZCKlNrdW1iblAk
SFMzQz01e1d8SlBoVzFLRT91IT9KOykxKmIhcVZqMGElc2o4Un1mMCVsaT8tN3QyPwp6KmFQRSU3
PCojdWd8Um9ySntiRkFKUDJieWowYT12azh1RlRBald8aDJWb3FIYVJ8bnQ3PjhqVGomVElXa3Ir
b3wKejlGMWBkI3pLcm03PmhCNkZvclFrRmgoKVBGdmMrXkZxVTh9I2FNPiU1Ujc5bmo+Qzg7I188
QC1GOzJqRTd7LVloCnpDdDtrN0BvPGI0Nz5+ZD4xPjtuVk1gQW4qVjxwQ0U3Xmg+TGZwSTNycWNQ
NkhjbnJxYjc+fnR4OUxEMUAmY1MjQgp6I3VHN35nbUVzJGxRRXV4dT9waW5qN2Z+dTd8Zz5Pe0Ne
NSNFeWV7SDdoPGYjY3ErenZqMTNxVVZON0ZlI0pDdmEKejV7eWs0bj14aUVGMiVTRTw4cThHNyp9
OUM0ZGR3O1M3S2ErQGVHV3NGfE5UbDNvfnVSayVOZVE4dm95OWtIOVk/CnpmQSlsOEl4LSk/RkBw
PVpIUmQrRXdNKklsN3ErK1Z7ciszbT97akRDJj0hOCotVk4pdDVqTk1HXlF8OUBHVk56Swp6R3Rp
b2dMcG5haDk4Sl5QbWJWPzRoczw0eVJsTndBVkM8KTI3MW1teCRqbzU8SGA/X00mM2dwd0JPSDdG
KDEqfXwKeks3WEdPXlBzd29QeWxfSHZLZEo4WERSRz1Wdm5gWV4qVngxPDdmSz9JRSVOTlhXbl9o
VUdyfjhIUXhAdXtEflBiCnp4Nlp2Q1RWd3RTPDZJflc9bCQ5MXJZOHFDT2J0Rl8pOHpEOyFOMmoo
aVBuZTc3SmF4NHpDTl9JME54RT9vIyZjYwp6QGMmJjxTQD04VEFLVHNTX1dnRzZQdXVON0B0Wjk7
WWhRb2pDeXJucDtGYW99ZmZNWTBGUzZUJT5+PzJ0VGpwYy0Kem5EMUw9ODE/Q2cqbmZlIWZvbjhp
UE1xSTUzMGx8eUV1MFVIdFY3TkR8SVF2NExWWmlrckAwOHUofkhFPE4kY3FgCnoke3lYWiU8Wnx5
NTN4cVJtRl92WFYhUVRTdXwwYjNhYV8rbWpfPEtZMyQ/dl9KJHo0RnhLY0ZsIUR+ciNfRkszegp6
X0xeZ2Q5Ji0lZkQlczEqZn1VMms1Ni1kdy0yRzZVYVYwK0prYkAzQj1IUD5lUnZtZmx4a3Elc3hr
djZsX2RzMGgKel92YHhvbGdecjJeV15URzQjTGQ8RjU4e3M3N2NhSjFJKCFvI3xkK2d6bjM/Zz83
OVMzYlg+RG4oVXFlSEpEdiRWCnpfWHRhemQqcmJ+OUpLSHRfYFR8ZzZJUXs+QkhSJCptU0VLcCkj
SHZEdFI4Z0tWQW0xTGFvZDAhZlUyPX0xbHsobQp6WVphNXJtelBFLWFRQWB4M30+YCt5dENVbSpx
U2JueXdCYmQ4U2BKOzI2MStEZXJfQjVKSX1TNHtkSClXIU9rTTEKejhuKS0+e2o2Ujg1NmlGU3pU
VTJYb3F1bkRlXi1FaVV4MHMyZlBhNjBlQH1wYVpHZUFhZkRpYy1uKlQjfjleUzhhCnp1Z35pT2VB
fVA7eyV3RWl7OTZMXmQ/M0pvSUtZMjR6YHIyQ2U8SHhBYHR1UHgmeUtiQVkzcWNxZjkkJXdZfVp8
SAp6LXRwIWcmRD5ZbXtkYVp6K08/bE07QnlDPHhnV0ZxSmskYG97fnhofntwc2xRJE4reSNmSW12
KmBURVB3fERRNncKem9MX3dIKX03ekJwNjdTP0A3Unx5Mlh4THl6VUgoMHd8UnUkX0grQV5BSCtX
cXpRPW9aYWxoRH0kRXtDV3xHMy1pCnolenF5S3hvPkE0elA5WjReV0N5OyFyIXYldTZ5cGRDKVdB
Wm1najN3eUZjYnt1WEI2LT1pJDArZDJnTSE+K0o5Twp6eGtyY3A0cXU4TEA3N19yNHF3Xi0kXzBD
dkU0ZWBLPVhtcXVkdzsjPHNzIyhwUmI0IUg3e0VSQTlgPHpzWnpGazsKeiNPMzl2b3BEN1RzMnxZ
MihAWiNeZVohWTx6P0BXPF8kbmJPMkEwJk0xREtQZjExUT8wMURLU2cxMVImUDE5Kk5WCno5bChO
O2JPNnRjcXl1PkJCXnwoWERkXytmem9ZfD5QQ2VrNSlCX2YjOTxWNiYwTmd+VDE8a2pkJTJuZHxT
MWtncQp6c30/LVdzfldoK003YCpvKUJYVmkzIzZSeiNCQVJXNC1WRVIhSHNxQU53ekktb2BtbkZf
NEgoOXcwamMyMiMjVHIKemFRckJPZSo4bnVEeXRqbkB3ViFNNGFgT1N7S1h4PWBURGtTezZ9PDZh
Kk5xY3BKZHlZbjxuQUFod2I9akBScTU3CnpDKUB0Km1XbjRZXzBsPHhMKzlJY2ErMmxDRkFJM0de
O0s/P2A0WnlRUzZ7dHRQPTEocFBFaDV4dVc8TzR7bjxnYAp6dTNGJGIjckgkMlBBJTcrYHJZcS1T
OTVDbF41ciRCcyQ5bkBhXmUlLUkmTTIoPD8ycjE2PHgpdEtWS0RDWnEyRmMKenNgUiV+ejhkKjFh
O2JydVF5cFg1dTQlY0lzei1LfGk7U2w7ZV5nMW9ee3NEcGxYTnN0VUR9U1pEaV49cHspeCU9Cnp6
fXFKI2IlazdZWW9IemwtI319TmhFZGRSWEY0YjV3cnlLJFFHRD0mQUZQUnslNXxiM2hxPilmTT5K
S2dlI144Tgp6YDw3OHEyVkZ+aClxPS0qPWlfbFdWNkgyI3dKNW1tNDZqPCR4YjdYVWIzV0dWKTxI
T2B0ZDs9dkJ6R25XKkRjLXsKem15XmBJO35MS35RKXtjPClqaW9XV3xGTmRuPHYyPUxLUk57dn5j
fDVAMUgjZiQ0dF9HKyFTNkR6TDwodzZXKH0rCnpDJkJ3KXkoaWhhdlV3N2B8NWNkO0t3cCNRTmUr
cGJyMlk2VTkxZFRZTTYzeiN0OzNWLTlXJSsrbUNjanYtISV6PAp6ejkhOSs5MnpxVHQ0fnVuZURO
RXhDZTQlVjZFbiV5bUNjampePCV7bzBEVm9HQ3BqITtsSj9gLWFFa2ZESGV5WnEKejNNbzdaVVlf
QCFXYjRaMk5kfihuMG5wY15kNkw2cENUVHllNHVgYHhzVXBeZEY5TzRwSlNiKzh0dCo9K0lrME9J
CnowRFZvV2xpVzEwOD1pWE0jb2ZyenBAUnp0QUdVaCspYnp+b2pTRWdRSCopRlpyIXt4flo0YmJe
PnFCXndLOFVCfgp6Z0x1TmQ4dm5KUUV3KjFfd0QyVDx7QGtneEtsc15peDZSfGZkOX1lXnpAZENe
ZkBYSTAmNVlFfDlNb1dAe1RqclkKem5LIWxlY1IlYH1aZX07JSV4Sy1yVkdVOzV1VHJkOz9XV2ZM
XjB6PEkmRnQ9KjhMT0spcz0qOWokSVFXOTQ7RV92CnopWV9sal9iYzdaOT1ANkp4fHV9e1g4M1lK
JXEmMXxlKkpzaCVtYU5oNkxtOHE0UUFUNndLa2dWcmBGIzhpK2dvNQp6ZCh6QlV2KGdUTG5YdzNe
WkMmfkN0dn1WeD9CJHpMbHktMX5uWDF5WnVLYnJ6ZHxXclB3e0ojSytUamdtcyFIM3MKekB9OGY1
U35zKGdaJD9xdChHNnkqTzUzX30+dXVsSCZGdCUmUUl4ajAhQXc8WVRVVVBjTT9jcmlKamdlckN+
ZFVDCnpPalQpSFNOYFJAQUopejZNPjctNk4qamNraTNwe1FqSzJJc19xNUhocHk5e1d2PExmVTZy
fi1+VjVYfEhrPG9pXgp6ZXp8VURmOFVJdnY/Q2hLUkZ5VXxgdVhwQFN+cWltWiQ/cXRGJTQjX04q
ZnZkOzJYY0puO0c9WUNgdWJARmpIMDkKeiRtbVVYTnJtPXZiRChjVlFRQkM4blgxeDhNKm49PDRP
JW9pO3FmJT95V0RtMlZjdkR+IVExOHN1YSlUY3k3bntyCnpxejlMaUxRKCN0MllRb01SZkk8JFhQ
JX17ZFBxNGJeeTUhQHM1ZmE8R3NlODtRJX0kKkorenpAWVZqdk0od25yWgp6NU0hPWNeQ29ATCFe
JW1hNFMmKnctbFNETXByYElWY2olS0lVUVAtbl8+JkhNbFVCMkQlcFlFe0xZczV9eChWP2oKentL
VXlNSCFmSiNvJXo7LXcjYDhnO0d8ak91RTZ2N3JVPjM0PGxQYmYmOUBQeWxJKCoxMUg2WlMoJlVF
S211e0d4CnpTK3taZSNzJH1RUGRLcFd3akkkPiRkKH5DYzVUNEYlMHt5Sl9EK0o2XjZqalMwbHZM
dDRReisqTzglMVhYU0E+awp6UmtXWkJaUXE0JThZc3xKZnV8OENUe3lMUntvcU1jOCNkZ3k7QStw
V3l8KFFEemI/ZWg7QSp0bzRkVU5aQFEhVlQKenJCezNfJUg5LUtQdHVOOGVFKEBYPVQjZVp5bFNK
NFM4YTM/LW4yZFhubU9CVVRyayt9JURnISthdVBiPCtNUmM+CnpXd2BHIypLQ0o8a01RPjA0dD5i
d3pKdXRjOUl9MHM/UENeUkdaKTdrPHtkTTQrWDVWT0RmK2NHKj9ac0IoJGAyVQp6aT57ZkVCTmxs
XyUtXjxDP1RCdCQ0QEIxfi1sbG9AbVd3d2BQRVhFays7cWpAKjs4OSlaZH53KT94X2FHeDl4JjwK
eiR9TVB7V0EzTUl7QExidTE9anAqeFUmVSU7RzAqUz5AKFJTdWs4XlYta3kySCMqR2xfdkVCMndf
VDRyWWpqMyRkCno/M09DdTUlMF9lVzFZRW5NJU1+bkw3WHgqeG58dzsxJXI2NDs1ajtIN3AmfGxh
RVJKcDJTK2J9Z1lETXtSc3VMLQp6NG1rQ3lfSD5sdWUwYklfZ2Z8V0JqMjlWfCR4LXxLJCMrI0la
YFolVDxsQzBOPEYrM281S2NaP29nNmpMcEx7b0UKekBeJjJ6T3kwZ1Y3X2dJJVJWUE8rXmF7ZTkt
SWQ4JTU4RH09VXROfSkyNmpOdEcyWnQlYl43ODxBJSNvM1EjUDslCno7JGN0ZSNuMio/VVk9OyVA
VjxYMVg/IUApPWpwIS1aamV4eVI8NF5+S2VhfkF8M2BWdz8yV3AjKGs2TzZsRD8qXgp6MD9jdTBi
aFc1Y2VmU3BsYzM4TmIme2Q1cT07PjNKJlROYFFkR1FLIVlkO2pgKD1qbjQtMl9kc3UoViYlKm17
YkcKekM3cFAwITRua2BKUzI2RSFSYXtLP1E2QHg8bXBpUUNmbDBKc2J1d0FfLUZaSWIkaiRCVnY1
ckAmUD82NztRYTE2CnoyNm4qdCFafksoNnlJeSlzfituTC1sKj1CR2BgN1A3VFB4SWwoYVZMbChh
VXdYPCRiKm1FJXBWR2NLTDY4TmJ7IQp6YGFuIzVoRnlidCZae00jNnx5Vm1CdVk9KHNOK2MrYnYk
ViFtYT5PakdZQE5iTlZmfn48ez1TaEJJWnIqZytHXiEKelFhelNaSiR2MkUyQ1VYX19mY35TcX5+
bT9WK00paWRlem41O3VPYyhES15lZjBwNUVMYk1+PVFhS1lRenBLQz9jCnpfNUszYXk7RGNwKFJM
NmV3a3NPK2NTODY0PGZkdHN0YWY9Xy10RmtYajtQZCtobE5jenVSMnZyRTMzU1MrWkJIQwp6Zl4q
RF5Ee3FxQWZhckZgZWBqTm9eS0c8YGZ5LUNlZjFRVGRTcSN+YnkkcXxrNCg7PnxzTjkyUiY7X2BQ
JlkpQ0kKem5EY0R3QE81Wkd6V1FVNz04bitmcmkmJnc0OS1rI3AxQlRQJGdUVEg/X2dGO1ViPG1N
KmFCQT9LNn1DV2EtdlhzCnpuaW1heytTI21Gd2BKa2w0STN4aEpITDl0LXNhVTYtYG56VUtaU1dT
bnohRnZgNWd7NypXK3woO2xKQ19GbnYzQQp6ZSg9QXcld05wbDtMQXw4STQ7RUJQYl53fCozXmNu
JDwwJVgqSDJBUFUkSk92JWhjZSlRd044S0BING5AI21kM2EKenArVzRsV14haDdAeTFRLUU/OWk+
Kns3e29IOVdFWWwmN3VRdXlPaT1NSGpFV3NJJFcqbFopNGw0eV90aWM4TX1JCnprIUVUbC1QQ3d+
UjNuS3xJYUJGVEM3SyVQQlVodG9RSSkzQnFlP2E5N0JGM2JWfko1WVF8VkQ5bml9bVJTTDEwPgp6
bThSMDhOO080WVdMQXJiI0hnSTleciRwYm4qdWVrdExCfSphUiEma1h9cEAreWw3XzJPc0MkKDZ2
Um9iOGc3ZysKeng/JHR4bjxqRFBOVmNlemswXl5YbXY3OW9zR1p0UjRhNjlHYW9LI34jIVdOSSlu
IVJWRksoWUdWLTEzRjZMbkl7CnpPQnQ+JiQ7TW5JWCgoRSVGPGR2N3JiZ3pCV2tpOzB0Z1FTUWt1
NkoldFRkSnBuUUNsKFNkQWxZODhhZHE5QDBYSwp6dlgmOEF2YkZMV2tQfTxBYlVEI0IjOHo2JWk3
blpoeUF0SFlSeE9mSXV7bW93djhtU1o5KU5vTG9wdEdQRjtwdHAKeldjQjk2P1FsdHEqe0YrO28z
ZClOZGg2aEpoX1ZAVmBFZ1RMWkJ7U3JaaWh6KTsldk1DdHIhfHdibjVBNlJ3bFF2CnpYaHd5UG4k
czdFR0FDY1UjTE84aVAwRX5uPHV3LUpyPCpnPCZ4a3E4ZGhNVHowWUFya2Amckh6PjFXS0dGN2At
Mgp6Q25FZkdiNEwwWkY9dHN3Qm1HPmArc3xeJk5JenJkYlZWYEomIXJLNXg7WjJMPzlCUFohMSoz
dVBRfCYoJHZAZHkKemd2WkJCOXhqXjclcEpGKlcpN0R8VyMoblE3ZGlhKSZXZlI3dHBIKzklViFx
QStNRnphRj58Xzt0MWh0R29HNUBKCnpMbEoodUlxTCRlJT9VcWE8fThhPHFAVG1Se1ZlQjxeZlA4
bzdraXxpQk4yWU9JVjFneW42b1RhayQmUTArRG83MQp6b1JOT1UlO30wJXFAVEUkX1ZtLXU4Uj0o
ZFBKRklScFpBbUVUKHRsV2NoMEREVnJGbHVmZDA4UElvdUkhKVlNSFMKenVzKEghIytxdjJoKkFT
YmFEIXBfJW88cG1sZUh5Z1BJckZRSENDSUdINHJ4I0peZ2ZaKS1fZ31sWVUwYlM9T3NhCnpLWEdt
QzwhM28ocUBPVyF5NFdOQSNGZV9JcEtpYGJLT15RVz5zNiRteFNzYSV2eiM7MSZ6THp+eV44YTU2
Y3dlWAp6cEtpYExLaSE8T1EzSWBXVHtSRl8wIXV+fXMtX3hQcEJsd0dlKEkoZ1NmNHRrd2dld1h0
UVo8cVlUemhKdyZnUXgKelV+TnYrbVomLTFgQm0zZ1pCRXB7UVBsc1FlITRtOThtckFvS09eUVc+
czYkbVAqeUtMJVErK2NqRzVFTDlfYzQhCnorUzUtclhRWkRJYkMmZmcob2JsPG0hSVhGayQlUl4+
RlFPYXBTWWcoXndaNTU+MVN1b3pIOHVkPW4qaUIjbHg7Ygp6KmZHJn1BKyo3Rk9ecXdKQzhNVHBE
dW5mXmFrMV5TKmlBUXNWX0c0RXlPeiVeZ3RhK1lVfUVOVUNzfCErd0stVmAKejVxblFSLUpFcnkp
I2p3MTVwJE1CRTdES2dYIVA+NG9ITnFUbV5vZVNhZWp7Qj1CMX5mWnE3SkFXOUJUMlItflZ9CnpR
MXxrKW9ITnFUbV5vZTFpdTRsfil0LUwzSVYxaC0lLU1HI0w9Q2pnYnJxX1BzLWc7Mik2SE9RWVFF
RUMkKjhIRAp6WUc4ZnBofTw+Uno7VUdwal5SZWJAfGlXVEhZYUxKKVNUfThzJXh3XkN1LW1yWlp2
eE8+RV42IXRUcmU4akZfe20KelNDTXw9TXgmUlg8KCFkeiM/MHdya010OUYwWF9ZNmI0TDBaRj10
dD9CS15lbXczbmFkb1JOT1UlPDFZP3FAVEUrCnpfVm0tdThSPShkJmVeRGUqMTJqODk2XlAoV0te
TVFzKTY7WEo0R2RHPlpUZjRwRX1+NFpLe0QyU2BFYjIhMTk/agp6dXI/PWFPVSNfXntIa2xMSFlh
TX1JNCYoY3tkOUJJSENDR3dlI1hwTSl+aVRBYWg+WXJYRXxyMnBEfVp+KmR6VksKejhQTDtESClv
YHU1cCRPSEQkLUEhUFFDbXI9WnkzLVc9PmJIQkteZDwrMCMhcVhRWkU8SWNLOD1USWFmSUFnLSpJ
CnpqNEQpM0hMeU40RXs1P19IYFQhVSlWT3xHR1BFWCotNyMkVj1pZjNZWkpGY2EpbjcpPD9xeygm
TDFtQGNoWiNTKwp6SkxpMWVnPVN9UW9UJmI/JCMqdzxpdG4rcm12dEAwX2ElfE9tJFJxJTl6REJU
bkgxbGIjYF5BTlB3X289X09rd14Kel9gV1JDX2oyfFctPWstREg4SHtXaUpANUUtUnVkemNoOFEk
OV8jYT1iayl+TlMocUhAJUoyQ3hjRVZMU1hyd0M8CnpRQVdiYElBbW5CRDw3ZCZ7cFFOZHZiPHta
I1p5ek9GST1ANmY2ejZwKWFaJWY0ZUQtRDdIYk1ucj5aMX5idnd0Ugp6SkopTjk/cjlPVmR9MVUk
TXJTY0UjJm5CaUV6WE5eRyYjbzdWcVQwSDdUdjFtI1c8RThxcUNTN1c0Z3QldyYlcS0Kem8qWkxv
Ril6anBpfCFoYjd2bl5Gakx1P1Npfik9SWBtMjdnTTc7e288WT1KNlVLVjQhO3ApYGVhRyhmOThF
JntACnpeKT8pKzQzbUx+QmQlZj5VQWxTUVlWR3AxcSU5QClgejlOJTdVLSZWYjV0KV95bkhPcHY3
emYhd1pWJkdme2s4dgp6Sjd7QkJkPnI5RmZiITw+KUBzUitfeHB4P2x5eGdEQTR9d2ZhJmJvNE5Y
dGkoalVLaGhgQl9+bjxhfipvcFlIZGUKektja0I4UmAoWGFWc0xVKUVAalNJPStFIUZ0bzVvdFpa
P3stSnAla3gwUXt4bzxmdlIkKyNYVChkWCpoRlRVVGdPCnotUTYjdlplRGZLJD9mdj0jJncmb1Ew
bVErPyRZTFZpP1hPb3UqbzctbDN9cSZwPSt7O2RiZ3plclk5OyFYRTg2dgp6YmM8eVglKiRpPE87
MWRXck56NyRHYzNBUSY1Tj03clk5OyFYRTg2dmJjPyslMD09ezwqTUVQdmhWIXdzbT18TSkKek1S
JFM3JWNJO0lxe1FlZj1FV0dXSUxvKW9QTFc7M0pnfmt8Y2RmbEhTTjstcTg0ZCY7V3dfVU10SUBG
Qm0tK2lWCnpIc15OdnFJSHtCazd5VUpXJHJnb15aTDRSTV5+MjJlaX1tRHlzb2JKWE1qMntFPCNJ
KCs7NXV2YkBSc2g4I2l4Ugp6PiFiWjBqYDZwZ0hgP0YwZEVHaWhgI1RjbHViVmc4LT43LVo4WFdF
S1hwRnoqeXdVIX4mRmt1RXc3Kzlmezw/WGkKentWbkhSNntydGdIfUgpZ1F7IUIkb1lhJEo8KFlT
R2pEPktgKXUlNTc5V3tOcHZnKl45YFYwTFBaUjZWdzdoayQqCnpZV2pTb2ZHITtgZS0kO2VwVjlM
MCU0KU5PIz9JYHtNUEd5WiVxKmY0PColQjJifkRITzk1LWBXQDhXJTQ2NkpGXwp6YkcqLXlHclFH
QF9qemZZJnUtPjtwV3xqTz50NExpJWM2V1BYTzh6ZGElTlppcUozVUE2ejgqPklvanZ5JSVRaUYK
ejtfR1ZaVyN2PyM5MitoOXJ9UzRAJVphKVNqRm8ocGZwQmR0QythZCNzZSRWUDVqMGxVJjZBZ0p6
STx4eFYqSUBUCnotdCF6JSVJdmFYV3VHV3BleSl7eUR6VUtlQ2Zqbzd1ZG1vMXdvcjxmalZTdngj
cFBeZSNGYzJQdGZkKW9qaSR2Xwp6K1JCSjQpc3xic2pKVT1VPDhybiM7ITNudCo1cikxIz8jXnxa
RHF1allSbEVfakpQSGU8OHJuIzs/aXR3NCVFWj0KenRBLUxsckM/MnRYO3Y/ZXVeUFRaP2Azant2
T3w9fkBSZGNHdWA5fUAkX2BIc01BPnw7U3ZOZ3BGRS1qJFgzNkkyCnpaPT5kfj43K1ZDQj9ObkFp
SiN4cWpoZn58XllkITVHfT9iUmYwRjt2Xk95QkokXlRgc3srSUo3YFFKVCU9dz1BfAp6Mnx3dVVe
MDFtO3RVdnhGcHpHSUIyMnVoQEZpPStMbG5lfEg0YVlgTThjMiZFLWhpdmNYJVVQPk44ayprTWJL
XkYKemY8UDVZc1BLVlBkVUM4PXVXTW9+SEJ8TUduZWxHYk13d30tPFV1cHRuR1plcWpqUF9QRX1Z
ITNSdz8xYkwhJlBKCnpabDVTcUtAR1RScyVKWjFDblRHNEg4LWVkKXMhdFBWYCkpMlF5RWRFbkpP
IUJNcFdhU3NCRGtHI1YtN1lncThMKAp6TFVaPXdPdTFGZTJ5TFBoVEI1MHBzTTFXOGJ2cS1mQCYr
YSpTRVo/cHMxaS1OVEFtU0FkMFBffGx7MXdRbTE2M1cKem42bHBaaEo5VVhsfk9mMVVTNitVYysp
WDlCUTdPdyFZK2VLMzYzJXRhWiU5P0RrVXFfZlp1JDF2MGRANVZXPCs2Cnp7Y1BXJVckbE50Wmln
ciVISTs7bypzRHM0ayNMMHk4e3plMmNxa3pmWEN5SV82ZURGPnVic2E9QXttYTRxJUBLbQp6TnMx
QS1UJmE8YUJ0K3RqcSgraXBxJTdhNWsmTVBpUVd7QihCKmxtOyp7UDk/Qn1DJGtxKDxUIT5BJk9D
XlNWO1YKekNkYkZVVXhzZUJ4P2FGRVRubUVkPWo4WkFqO1YmTEshZDN6ayl+cW58MD94eUA5PVBT
Xjw8eVcwKE9+ZCgxYz0mCno3bEtxJXR8VDtRVHJwKVkyaH5KSE1DRDluTTNyVyRFWkdAUlJXO0Um
cz90PE9SRWVoQzAlazxEdzQoSGdzR087Ywp6c00xVzhyOTMwNT5SbklvczdnfkFRNi12a1dqI0hy
az9MKCRMeyFkSGRRX1VKUyRKaHBSJE90dj5yJGZWQmtEIyEKej5UMDRIUjhralpGelRBMzdAU1pO
ODEpVE94PmghPlVBdTFlKVg8c313UmYmWTxSLUlncnptNShURHM8YHE+V0ReCnpoTGVyQ0dMalJT
KztueiUpRClSQm1KP1pgdjlqI3ZMPyQ8KHY1fVI9YXcxREw9OVYhaEdQeDtAaj81WCRpN2U0cgp6
U15qZShsVXVtaCRWeXs1ayk7fVFtdz1xZTxsWlZlR0d7QyZHUkBkNUpucHR2b1VSQmV3UUYpaEUw
UiZxb19rJCQKeiFYfndYNUBvWDJSVlFweEpKVWxaeUl5QUtzIyFIVHk9RH5+Vl5eSzdVd1kqQikh
IzQ1cV49ISpzITledTdvWkgyCnp1RWI8VURZcS1XWWZWdSlsYktQYm49Q0k4bk5pOTtRYkxyYSQ7
PkQtT3VCezVpKmkoTSV1PUZzQ2k5fXFGai16WQp6R05ZN2dtaz8hWEdCZTV5bGtQSC04S281MWxx
ajlhJXFSbVVgfk9xNl9LUn5ybHVHclJvUkZJeGYxandvREM+MDwKel5DI154RWNZVipLMmU1eVVD
YURReTl+PiVnMT04dztTR00+Z3VsUiNTRmRRSmFzQDMtdyljeE4qLUtNKGxZQnspCnpXNzN0UlVU
MDMtQjtVNml0eDJoT2wrSSprbDw2a1IlUyZkSVpRYUApZmVSQjdUSDRKRndSWFByVC19RGdGPyhP
QAp6ZHRXKEErVFJ7cEo1diUmVz01SEF2YkBHKkNiVnwlKkU3bn1XTS01WkNmemtBR3NAYiVVKypa
TCQ7PkROQ1RJViQKeikoKWoyLV5xITwzUClYQzt4Qjg4O1h1JCloVHxgNWlzOU9BWitvQjYkR2tT
YVB+Km9ab2k/VnVGRjNsYXs5Vi00Cnp6SU12UEVCVWY3IWVYYSgqOWB3bSg1TDM1WD42JGNVNmE+
dD5VZ2dzciFMRVhnNGVAUVVZQW9SY3BXKmxUYVd+PQp6TjgtRzhRenYqR0grNU5fNlRCWGNeMTdU
bCFSeUdXVUFheTBkTXdVc0grNiM3bTh0dnhZczFwYiUyX3xUcTtndEAKeitTNE4rezA5dEZXRkJR
OFQhOH15RHZGSGl6dFZHaUB+VFohbXVjbThZYGtzUD9HUi18JiQ2NE5rXik8SmxaPzMyCnpIWl91
b2doLXJgKUpQSkhsd350RGt8cHR4bHR4a2BOaXBKPEQ+YWcoMzZWRz5zZ1djWURhJmhXQnl3QmdH
flJIWQp6bHR4a2BOaXBJfFplaz9rUVdLKmhhWWhtJnNUdHxOJDsocXhyTiZHeWtxZSo7RGIlQnNS
T3tWclU4ZHghPCRmN3UKenMjbiFfdnZyeUJPWTsqMFpPanBPKzl6d1plX1NxSl9Mb3RVMlVPcnMm
aTk5K0N3SGZQSyojPiV5eGtzYHQ3MT5qCnotUSsycmA7JVg1akNtJTt2b01+R2FVSTVVRnJKST9K
ZEVkS3lhM35jN31zT0cyOzs+VkZUdUQwPEUwb2tWJSZ1Qgp6R0tgbUZ5YU1COWo4fGczM2dndW51
ZmV6bDxGeSNDISsxVCQ4IStDOEBnfEhuVzRzMDl0ciV+XmNzc15CRnk0dnIKekV7dTAkeWEoZ0c4
MUtWKUtnTypYQUhldF4jKW1MSWpQVmhTazc5ZmI8S3F+ZyExeUdfciFZUV5AZm5RSVZ0ZndjCnpI
akxYYks5QkpRajR4dCozRjhpb0ZKcFdLPDQlbVBWdGZyX0U1PTxJVSZwdWA7fk47PyNQfUEqdz11
cWhAbS1BWAp6VmNkaTk0O2M0aWQ+YFduNyhjfUw1eXA9KHt0QEZvakd0aXE2VUkrNT8lJWQ7K3Qy
WC1mNUdAeWpHdHJ0MF5ecSQKenxBejReakROQFlITzZsK3tzWkg7N3s5fiNKO3J9eHsxP1c1V0Jk
VypqfklXI18lcGA7VkVoSCtldkgzall7TWB1CnpvT0Z4Tm4hK2M/Wj1QRGJlcmtJOWliWWRmclVy
NCZtNnpUVzwjdExIVyZPblAzMCtRfXFUSlpZLUQjMkhkOGhMQQp6XjR2fEg7KDZyYzwpdDtuXkcr
ZXs7ZHdjRWlzIU1EeUd2PGA9YmhXbFVZQChqUSNgTHV6QihZcXR9QUJhcFhKRSkKem5WeG9DI2l+
fSRpP0lAWmNQd1AwYjFPXlJRNl9wYGs4NHFNP2xKamBhfDJRSXliaUJqd18oYmcqfWV9eFpVZ0Iy
CnpIZm5rOyZ6JVY+JVdxJFAjWlRgfVR9YDlmXiE4JEcqUVdFXkNoeSghTiM0ZyFVeldAeUA5ak56
ZyFrcTJOIX58Swp6Py1uUDtgdzRxOUFMRzU3S0U/YSE+QzRpWTxoe0tDanF0dmxLRlJ5Jj4wUzl1
XjR7SmojKDN8aFB4OEtOYGwmJDgKek52cUV0WERiekFhIUhwJCZ5VFV3VCVrMjFPU15PJFd1Jj1B
dDQ2eD05bDgpU1NMdXpAUT4je15iIT8rbnJ6YntkCnp4XyUjSnFMJVpuREpxJDt3S35Pd0pFZCE/
NFZxeFJvKjBYZCFrSXtuQkhsejxSdWlLYmtCKmA9a3IralMzQWEjKgp6UUIxQH47WT1oKDVwU1hf
dngha0dpSEBRKWtyK2pTMzBIMHRxZ1dhcmcpQDtEZz1iPTJPdGxUKWI9d30xYnImcXwKel9QYkoy
Q1lPJE18ODh4SiFHYGk0RGxDJnJ6MHckRXNHLUQlNFNBKklzZXk8aCVscztTX25jYm1tejY4JGM4
VzM8CnptVn0kOWxBP0NpUGNgT2hMMElDZEcxaC1QNm16VFZjNH5edThPdyspKW1UfXBiMFFsfmk+
eCUzNklyUzt3flJURgp6Um5Gcz5vUnl0ZklndXFBRHtGZEFXUj0xWjZJcDMyQyRkeXl1Rm1IflI7
ZzRga3ZVXklrIWkqQDJXbiUmaS12bG8KenNNTX4+cklrQSo3dmpZK1IlNU8pWnBKUT9tRD9HJkx6
S3l3dEJzcW4lVmchPSF8ZjJkeiVeY1hFPGI8Tz5XJE1nCno/V1NKc3M8VUxnd284O0RVb297PUQp
SERXUE5KYjs/UEBlK3VRbjY0VTc4fHRoU0RRU0dFfG0rfElEdHJUVXxPRQp6KFVSSU80SDE9dyhq
IVZVPGQhWnlxTlBhQElZYTNZQl5mRzllUkBSOFFYKG8xckFMJXokZCZseWg/V2l8TWRTPTYKek4y
RDBxNypvOzFGSGBVZXJSSUMocT8laz5TSCpASGl7V2NYdiQ9WjhxUmZTX0FDMmFnKWV8PXBoXzJW
UUw7ZV9+Cnp7ZkNxejw3PjM5PW9ucik0MHFIJHFzJUlMUTc1WTsmfFhtVCUoX3lkb0RWKEN2S1RL
TiQlKXBQJjVrejVZPFZmagp6aiY/TDcrUnwpeHZ7YDF8QjQ8WkNtSl9Xcm47bVZBKzQyJlM5VzhK
RFJMd1Y+eDI0KGFYdFRfXiVTKDImeWp4My0Keil8dChZSGZaKiRLdXdOK3RyUUJWUVlqfncxJmow
M1YoZDN3QHptQXFHOUR+aVFOfG11ZjR6K2RZWTFBWHUqbWZtCnpvNXEhMnhNSmxYdzZ9MUBzcG1a
VzxXJkcmZCFLeXZYKUV4Y1dCbjtsVGViUFpqaGtrP21zKnAmYSVsVHh5OD1DQwp6eTI0JkwmNlZx
Q2VedUlGajRZWWJ6anR6SVJybUwkeVM9akEzOW4zVmNkI31BY1EoIWI+WnNxTzJCRFBTamhBZ1MK
enlhdVhLZ2syaHFJeUw9IUA4K3xeZVNvZlZUOWx0SCVVQDwyNEBWcHtqO09uaEtWJFpEK302SlBL
LSo1eXV3VF9aCnp2YFlRfSo4TXUkZnJqWUlQWjt3VEFNeUpSVHNpd0lQYCpMIytsU09FWj57bVMr
MitJWGhzYDU9JnBnXn5HcC1BIwp6b19efXR0SW00WiokOzJ7UipPYjJEc1QzMjVoZXAoYmlHelh6
K0ttJEBLQDBEd2JGIXF5UlE+a2dOXmQkLU1gYW4KenUpJFF5X3Z1RjIyO01SYCpnemFoaFA+WjUj
NCtrXy1PfVAlQXtQSmAkNVI2Tj1vbENyP29Je24lMGgzc3VBTiFECnpjQmMwR28oNHcjKSZAclop
JnxEQCkmfEReKSY/ZzIpJmBkUnRxbTtlKD9GPClzeXErY0hPY2t9T3dMUiQtbmdteAp6ZUs+bkkz
PWdmVW9lLWZuJEV1YlZwMUU+eCplaW15aTg+S3FHQVh0JC1tdG9FWmhnLWE5UVdGJXBPfGB7NC1a
WUIKektVfXZLeH5KPDM0JVM4bl5Gb3xIZjIzfm9uS25kckdwfF47V3lPWSNsUVpeajNjNDtLd09o
SzI1SFdsPnNrNGdoCnpnalFaVSlIQG0wWmR0b3dAIUFiKndeVXpZYmF1O2ghWSlMKjZZeFpIO184
VCU9ejd0K3UlQmZaUUMySSpnWndxZgp6XmBQc3VjVkJCVG56O3RQMmw7RURkNE5Cd2c4RkNzajhJ
PHR5SGpHVXZKUCYpT2dEUDBnYDIpfT5ZQFBKR1pQIXQKempjWCVUQmtgO1ZgaGU7JXR9Ujg1NH1H
amR3aHo4OGRsYnAwYihxTHEyajdRMik8Tn41LUpDVG1YVUJANnArJT5qCnpleHxRUHM5PWZ3RCR8
JTJiSEVzNi0hWFE8RUdhITszMUthalUqJVh6aXomc0R1TlkwVztoMl5zI049Ql9pPllJJgp6ZU4j
M3wzTEZrN2FDbTZOa297ZXpIOWEpZDhnRUJCKS1JZWk0WFVQaWAheV9xPChOdjBEI2V0cTRQQXg3
czc0Wl4KekA9WWExKWlJVCszX1ktc2tQYiZ6NEI2amhUR0x9d3R4PDteWWRQWGIzfldwUyVRMk4w
UmY7S0o5RW5rbENxKDYmCnpOe3Amd0RwTUpIVjUxPSZQT0tRUnpzdDB5JEVJNE40bTtMeiNFfT5u
Rjh8aHo5OC14PXJJXy0/a3IpK2owSFVNdgp6TyhqT3ZGX296ZEorUUhtNHNqUD9mMHQ9Wms0PzJr
OWRAa2NoJEFocTUhP2I7SCohcCtNVWBhQTdlYGBMeENNeGcKeiR+VG81Um1XN09HVzVYNDEzRGJS
VTRaPnZyWnFoXylmI2xAdG1UTCFGKS1XJFNUfU1eQn1TRUUkYD9tc1JKYTkqCnpqPjxRYzcqKXFx
clpWKXZDUEYmSVU0Wj52clpxaF8pZiNvIXY2ZHJfI0szUzFWQk4/dWxeOWl1RFBKNmtRUTtPSwp6
SXg2MihWcEpWZG1xeHMlakNfWm1AN01FJWNsWXlwX2RlI3goJmBTR2NDeyQwKUIwfjBRST1oSCtt
QkoyLXlldjEKeiRGaipOVVB6QkR0TH42dkckK3p6cXJRa1Z5O2NNOW1sdShhNHBuIUVpUFNmbTVv
eCM0PWcqPnNzZjxwJD1XMllHCnopXnRHNHFyPmYlMCU9bG55SnFeTHUwZlA5UDxZNmY9Un5ZYWwt
OHBocCUlS0U7TX02KklNVXlXXng9cHZQeFlMTAp6VVhmODxDTlY0R0pKUjJaMVJReUtnaHBjUHpn
LW05fER4NTNGfFE5Til3PUJ3bkF0S2poJG9CVDxwe2RLYkgjVUkKek9UK0BpcENtIWtKVWhtez15
T2JHTXhBNVkqSSlRVlhwREx5QldtQXRYNEptdiU7RnBsSmx2d31aaEo8aGh0QShNCnopMGdse195
K3Yqa0t6eWI1PnQpaCZ3KlohQEtqalpSVGY/SWM4KCtjdHc8a15fIyo5M0NlakEhRko4PXdfPlQw
cQp6QV59SSplX0Z7Qi0qK3BKKG82MTZtJDQhRCtmMGpFXmxuYiZxXk1ZSUg7Xl5RNztfIzMlfFpI
TyF8dH5ePTh+Z0oKekd2YFo1KTNvIzdVcmFfZjsoaSt3b29fQlZ5MypWdzUhZG1eODx+cVEtODQx
cnttRSk2KDkhYk9uS3JkMyVTcnVKCnpNY3AyJipxbn10R2UpQ2ZnR31SQ2BSZzJtPUBCTHhebzY3
OHY8JCZ0UWJzc2x7eUhXPy0oWSUjNkAlP1I3LSs2RAp6a3lfbjZkSExxY3I9fjdtSE0kaE5eaDFH
SHQ3OCsmZXdraXFrdD8oTllmYyQhVVIqT3ZkWDh7YFg8d3IzbSpZWW8KenRCfnUwRkZ7VDdOXzJp
QXhDJT5ee2JFK1pjY0c2fSZ8SjdZTEpQNnkjayVQIWR0IXZuaC1GPVctPDRAdWpsYW48Cnomd181
dD9aMjZCdF8zbW15ZWt8Zj1pQF9OZCpxblNpOGpObUZFVWw8T15YYkxqfUlxRD56bURydyVjcT5Z
aWc+Vgp6UzZ3KXtWUW9PdjwwQ0Y9d19CelVqblRXd2VWc3d4bmgpKjJQbjw9SzJPVkpRTjkmN188
M1JvaldJRXNydXU9RG8KekReVUo8c0BwQVExJCtuY1MzcSRmXntxYTZtcnFAVShCRyFJb0FoITI0
XiVVKXQxSGxLb3VgMHJKP0QrUyUpc1NhCnpXOEZKKUlpQHFDJk4xeXZFO0ROUmo/PCo1ZWJicHlg
PSZHTlpJOGZMMXooU2olaCM7aCprIWomQTl9MW56eX1JbQp6QGdiKCpNQlVldnIoM2BRKV9uUU8q
WGtuVklGUD5ybkdYME8lJEM4I1EyVSszKURgZEAkWClAPmZ5YEghO1lEYkYKenB4RHFGQDRNdykt
SmNrNHVSXzs7bk89bGZxSEF7TDdEKTlYPUgqclZgT3hTQlBLYiNTV2cmODA9d2xVZlVHT0VACnpo
YTUmVFNIWDlvazUkbEkkYjl3X1VXb0doPnJXNCE4ZXtGWEBPUkRoQ0E9Y08wcXEwe18hOUg1Qm1O
eGU8cEBzYAp6eGx7OVomMmdsXjczc3FmVSMkSmZNREY1cFI+WEl0elpENU0obz9VVT87NDFHVlF1
ZCglNWVTZmxQfDk9YTtOOS0KeitTNEk/bnR8ZD0lO008MjtEJjE9OzdnOGZXOHxWYyFWXmdEe1FP
MTlhaXFUJD5CQTlVeEJhYiUreklCYWkwPz4kCnpELXYpZF5QIWN0RDExbGZ3NlZhT1FQcjxCJiRP
dzxBR1YzfXFHfmhkc1pQd3JCeTE0K1VuMVgzJVFlVWBtPnl4Rwp6TDA/a29YX1BPU2pnOFBabT55
eHBWQ0xJNDtVSmFvRkxuaktfVHxpKCoyNTc4dHk4KzR1Uzh3N1kzZWRBY0ZzRkQKem5TcG57KTNo
SmNuTmpETV85ZDFYYj81c35RPTt9d1hHWk90Wmghd3BeQmQmS0p3IXZgcGB1KjxsRzlBOTRLWnQw
CnpzcUwhT19FJXN1I35OUmt6MyZTelB2K2BadD4mMV9oJShpckZRJHhpUj1AMnZDUTlGQU13Q15Q
blNhRiozYmcpUgp6aURmPiF6V2chTVpZYksyVH1ycGhacEAhSSNBLUtXNm43UWZVcVlFPEckWWI8
cXJSOWooej4ra249b1N7Xl5OOTQKeitHWF5MKj1zcm9lTyN3Z3ZIdloxbllQdUstNGBHUWltLTN7
dldVMiZ3QV5UellPWntqNkBBTXdvRUxHMVZQOVVWCnpyaDcoUWBIcmpEaDwoRig1cXBMKy19LUoy
K0lfUT58SVF3QnQkb2l7cldlZ0M1Y0MyP1RsRkk2LVMwallxVmdIUgp6JmVhP2pgZEVjcjdrbng5
dT9tJlhDezlgaC0tU0xfTDMxSkl2bEp1bXgwXm1aNmpIUkdZTj5wMFBeSmdrSWBzNV8KelhHSHkq
aWBwTlctVCFAZlB4Q0FiXj1+ckRGYHBmTW9fU3d7K0liS1l6NEZDTUcxMj94YkU4K3h6Yk45YEFG
cUZUCnp1KylBZ1NedV50Y2xRKGlQTFdLMTB4Sl5iNF5FMShLUUQrX3BPfHxpczNYYzVvRmRERC0r
N1liT3VzQUJtb3ZVXwp6MUxzWmokXl5mVkMxeiFPWFpsXjRwZmZSI0piWSljR1c4RkwpO2A9Knh6
KnlRTHt+cWwqbk1EVmp3NHU9SlYkVUUKejFzIT18Izk1QFRoP2I9Mldmez96Q0M4aWd2Z0NTVypD
eWFpaiZ4UEU9em1CViZgYkI5I2spVmQleUM5bE9xP15LCnpuU2U3ZG5OYClxZDQmNFEmcCkzPGtI
WDR7XkdMSzRARj9mNEsyPCZMdWtgfGdEWmt6KSRFMiF9cGg9Tk1YKUArcgp6eldEbDR3UUc5PjdP
JW0jNFJrKT9TYF5UcUBvPl9zIz1Hb0ZvPWR3aWtBM3VAejMmcm9VR1VvYkt7bmlCP3xZMUwKek9z
Z3F3RyVhWl5UZzImS2AlQ1NiVXlTSGMhLTNqJjRLJik5TyFzZDtvYjUqWWxKUmMpSWo7eFE2U3tw
PDxyPCpfCnpyP3VhcG8/fjltZUEldDUkeGQ/Ym5+JipOUFJNPzw1MGR9Y0BTI0JnJXwzXypkPmA4
MVZ3UTZqYzt8bDRIPT1wWgp6UihYNGZ4eW11RllNfE07TldlMjVeTDl3UTAtOE0jMG5DQzI7cnVz
eUFuRXIhWGdBNSF6Z317OTJ0V0FOI2BnQ30KenJyeEhYZSZTKnpKTT14MHk+MFI8KCgtS0xpP2BJ
KkMldFgqYCFacUVgfklydDdYVVdTay1wPjF1bztUOC05OGVMCnpQc205NVItJX0yQHg0VCRoPGpV
PyU9VHFINm5pa28/aTxgQiQ2biF6MiUxezFlbWprTy1QX3d7VXN9JHoqX1cweAp6Wk13e01lTmpg
eStLd1Fmcz9ESTl7Q3hKTXJjaD5rVFh6eG5hVkNYZzU5ekF3OHhKI1VCcUZZVSVUUH0obXAxIy0K
emE7RDlgdzQ3PHZXajA2NHM/Q3NeJUMmV0lfTXhVd1dfdyRBNSUqeW9UMl5CWllTfS1KXlhqdHRC
fmlVP19OQz1hCnpuPVolNng8WTAlWk13YFIrZUFLOW4/V2BDYFJ1bllYSWdnPV9vcnBtZFByQkp2
dmE/IWUkaUtObnwqMEgoYEh7PAp6JmF+Kz1vMTxtYlc9UEFtZUQ8czVPelNTPHs8TiVHNTkrRz1a
TiZOYTgwd2RgXnxzbFVtTlJZa3JSN1lVRjAobVcKelImNTVnP0J9eXpFb1dNSDUlO0hNKXE0QUZg
LXM9US1hU1VJMlA1dkNqS0hVdV9PYDMqSW5GTXd6fWE/bk8tST9+CnpJfnYoYFU2IzlhOWNNUWpa
fk1LdmkyVWw+angqbldYQ259S1p4M0FMbiFja3cyKExqPFl5TiMjdUVxbk9PV1dJUwp6cEJtNCQr
byM1fT9ZZDBvWCpeJnpzNHpkantjQWtpMH5kTH04VmA2NyhwdjN4YTwwWSRwRVRVdFpsNDtAdyVl
ITEKenYrY1N9PVY/NChIPkJ9ZWUqNCNXd2cpY3FlbDtIT3AjOFQ5Xj1zTTRfPms9cFhuZ1B6YnNl
I2ZVV1c4dDg/MX1yCnpLOXhTNFpNYVhWPU5vbnomKG5JeWFKJShoTz59cFRgeGtxQDNvaUQ0KWdF
I29CKUhtMz9BKCQqLTJKc1V1RVZVaQp6O2VNNSNaTWF7aFhCJjNlJlF5QjlhN2dMMzlNNksldnQ0
a3BfcFM3UjNxaXM4RlRrXnY5JSMrJFpNYXtoWEIrTlUKej5EaCl8d2xrRjtGZFM2NnBXfDZqZGJT
SExfUCYpS2FOJTZyRkkmSHxePWNiWVNgeXRtRVc+MyNWKDttN0pxTUA5CnppfFZCNWI9OEtadztk
b0UtZ3x1PyFSZm9iVW1Mc2p4Jm5oJXFfM2xscXFtXyhvaSFRaWp3cU9KfEFudHRIJHhXZQp6P2VD
Y1RaU1V6YilSWiFQaE1IMlFjVWtERmJUMGd8OWtibzgjSS1NezQ8Xn1QYCNkJEo3OzxyRlJWeD97
V1pOQjQKekRCWlB9bT8+JStjbExXdnBQe0NkPWArLW5HUUc8fXlxZTFDTHUjdDZlViY/OTQ3b1VS
KUtuU0ByclNTMVFxKGxqCnpUVE8ySTNeaz1wcFB7Q2Q+MEs3JClsXk8mUkZoakE9WTQ5REBxfVlJ
I2dMMDUpZXZoX1goKihvK1V1a2dINyk2Pgp6cmdIaVdIS2sxTkApNEpBVys3I0lteFp8THglVERz
QXZLa1k8R2ZFemEoNWlQNFlAY3s0UnVFcFJGblQmQnQ9YjIKemQjbE0hcFB7Q2Q+MExoSigjPFRT
T3oqTX5IJEIoQm9JYVJqdz5aeEcpRmdNdShjNiVWQmheck1MfkNNU1M5b2QpCnp7TllqZ3h+fWBY
aGtCZFFSbj0mUWspKWImYFJQaTNsTnRMdUZWJjM4UFEwMFZIMF9XMWpDajRSLSZadlRDOW5Jcwp6
PExZaEQjaWdtUG0lKTAzTDBTME1gYjcxT2Jia2ReWiE+eDdPRSMwSXpHTzJsT0cpYlUlbWxeWT1P
JFp5JHAmM3EKem5kPFdsaEdiRUQtSUEpbD8oZ1I2WjY7SEZzYihfT211a2prRE5UTGRXPHUoIzx0
QVQhc1JtdEt4JDVnUzc/ZyM3CnpleDw2ZntBeEQtdjFNO0ZuZChiNWxjfk5gR2NIU00+Z3pUV1JH
KilsZUR4KDd2XkBmWUYxVEM/YzNUWjtxeFJ3YAp6UmY2VUIobHRyMkc/T1g4UjVPX3BPZn09T2xx
U0okR2EoNjxpe18lcTVkJlVzakhEV0xhcGY0cSY3V3M1czZQTTIKelJJMipBS2slVHBuTjBQaW5z
TkR4bWokendZUXwrTC1WQWZvWjY+SGJLUjVYV0Z4OC1vRF80RXAxfjFIZztUIXRBCnoxXjNjLSNR
KDVgLWxoVHlZJk9OTHJKRCs8dStiRD4wJXc/VjhTN1NKdm5lZ0FfTk8pSHpZdVA9Km5UTm9pPzZw
KQp6N29WIWdvPF9BdWdIckt0SnA3djJYd0NqMXlaQHpgeS1qN1NHVGxfUkQkYEI1dGZpe2JIeCgz
IXBRfUtQWSlzalIKenM1MEhDaSFXYzV6UnszV1lBP3BwUnEyMUpYPlV7NnMhVFZQdDslIyRFXkRj
KF5pNzNTUzw2KkZzIVRXUDs+JWExCnpaIXs8c3xOS2k9VyVYTlRgM2sxRHNjY29JbzYxJll4KyN+
blI4eyg+Zn54ZCQpc0hJRWprQF5xUnB9Y0lOdX5DPgp6RW5TdD5afmtwa1dvYXJ+bUZjRmtSaGUk
ZVdpM15lek53SFolTFF+JTxxM3JNJkZNeTZlMGZIQlUrRWhTcz92V3cKem0jb1VzPmVvUnhzP3dS
dFJiX0BMbSVrTExBWnI8PlQtSClkQXkrazFLfj1nMWJXIUNBTTJvTXRRNVJwSFE3ektZCnpRfD98
MyNpN3I8YjElVjFocjQmX1pBak4tX2Jnc2Q8dUY0Xkhzb15HQzZoKSZlRUZTaiRtSmAra1A9Yioo
fEVJQQp6ZHA4SHhldiN3SCo0dzB1UDE5bWVsUy02OWYleHwpVVZVdHwjaDJacUJpKzA3SGs3TnhX
SjlAMU9nN31RbThlOXwKelAqNF9yamBWeFQ/bVQkc3ZiQH4odig/K0FpIUVEO1VYJnEkKUx5P09F
N0FMb3NAe2ZqbTYmV09TQmM0blQoJU9HCno9b3QjaHFMIW1SbCRkUE4jZz9yXiZ0eTtfe2ByPXlN
RE0lOWRLPTFCVnpReEpCXzxuayotQktSWERGeWRLU3pCaQp6RzE7VnhFbkE3NiQmZiY1dWhXdjFT
b3NuO3pJTiR0Q3w4TmVoQkIwUm9jWit9VnthQ2R0K3x2WCVGIzB2bDRDN1YKemVhSkR7cT5DK0Vq
LUpWJk84Z2dTJCNWMlFyQE9iSVRzYkJpJTg7V35Wek1FWnR3YmV5aEpzNDtiSlR8dGxURXRWCnp2
WCR0VystNj1xWE15P2NMU3VGXiMrKjhBJSRobUlkfV8+Pz9gPnp5Vk1+cDkqYmNeQWV5bE0hS0VS
bTBqeUdteAp6N2h8QGJWOWRZblgzVTBAakN0K0BqWDdrNkcwWFFoPThMQm9eTjslKWJMRkZxeCV0
N3k5RFRZbTJWdmZPJm90JjYKejFJRTFJRn4oZHcmelJ4SThGUnp9Vn01YXRHNTJCcT1SZTdxWWNU
KCNvP15fMm5FJSpHKnhCOGZePVEyfmVAfG9uCno9S15EWHd+c01idFQqT2olPT1NdjdkIypIdUUz
aVBgXitgd0pOTykpeDZlMWBXJXljPDNvemZzXylOUSNGeTlIIQp6RmxLa21fWXswPCEhWUxpPzZa
d3xEZHlZbWRHSERJP1N3QntgcDVsQElxJHtCNnF4ViFtKlFCJi0rSCsqdzw3K2YKenVTQV5OOCp7
Xko1Rmg1ZHw4PlReMmxHdzYkKFRMJUZ5YGxQTVZ4IVZfamVrel8oOEBqZTZLTS0rfjFoNS1mR05h
Cno1JTF5Ozh9bXVUSk81KT9LZzdHPUMqa0xnIys+e2FXQTVKQm0/enczJXVqYlU9ODwxOD1EVjJo
ayQyJCNuRDViZAp6Vmppc0hgbU0oTkh7eU5tLU53dnE4OGgkT1NhWmJ0alBEdXFHc0p0eHl8OVYt
bWpCM0B3XygwTis9cDBebSReVH4KenY1NTFKS1IwRi08fmllNlNUb0Vze1RwTEdmSCt0Rzl7WGRT
QztoPmcqVEp1a3syQlhWcDU2YXklO1ReU20kekV4CnpsYkdrYkZ1Rko5OEN9cGFtdG5uJW9tJUVC
JXlaTihFcHNhVElkX2tpY3s8fHo+MFRgfTJrWjM3MmVyKC01WWkwPwp6dzlOYWxQT20oO1dqPTx1
VVZNMVZ5Y2hhLSRJJmhHV3ZxOD1zQWN7RktZbGFYR1FXZiRwSUZpfEFCRz4zJEZ8SjUKeklSMWQ7
RXdlOTxLa31yT0lSd1hfYGlQYn04T09pLVE3IVd9OVJJfkxTX1VhR3c+X3ExWnBRSTFldGdTSjty
UGNyCnpzYnY9OF8jSVpZJXVmKTxYVX1oJG1tfX1iUz0leUMjPTFXN3NWeV4lSlQwMVRuUnkyb2JL
c195YDN+fVF8RGBSUAp6P0BPK0xKP1E3OVNIZDNoe28xUXI9MWxuVSZTJTBlJXlaeztFcHNLLTxB
S2pfblhoMHlDYS1VcUorS35reXJnOXcKejN4OVVJc2IkXj57WTx+MlckdVQ1ZSpMUEp4ZURfPUB3
Rn1VMyhSLU44P1licHoyWXFgbzl7UWg5c1ZHJHpyTCR3CnpVSWYzVS0tcUwlcFN3VE1HN29gWXN+
N0J2ZnI7ZUBydFF5d2RCdVdWRmErWCVDO2tqODBgNF54NGhiXlhnUyk9TQp6QGQhOSV3Zysjdity
Xy18ZlY8fTNaZHp0THRtMkxYRUJSfnReSjUlKipULTlDezQqYHtuY0d8RDtkaXZtVTA7UncKemNl
bClzekt6eFhobkQmR0FHWFk7S1lfPXZlY2RseDxeakxLWVg4MXY5e2s2YW5md2N8OE5rZHRWWT4h
cjd5ckYwCnp3I012WTdNUT1oXlM5cVI/ZmYmQnVkQDc2bU90OFZwSnx6RXV1dGRiJjtkQVNqJWko
cy1gcVlJYXhmQDQ9Mj4+ewp6WFdRKnoqbjYlMGBJcUh+U04/czNvOHstcmtGNU9yamtZUXMxQ3tm
P3hwd3ROP2EjTkRjbUJWNT5YcnFFbk9qT1gKeklffGp0QTItX2g9VlJmOzAmfHRFcH5uMitTJXBG
SmpUeWl4aTY1PmRHPkBAaDBJUDJRZVQ/Tnl0RlJuRjNsWCt8CnorMiopWEpfbCpsSUlmTXFBNU9e
e04wMHBkUChvQFAxTlFnQnNhQGwhQjdaLVdrUSNeNnZCdSQ0c0J2NT9lP0ZZVAp6SEk2SWo/fXQ7
VyMtVilHSUduO1lqKFlPdnFyUUJPPWJxMUBxfGBXXiZOVTlEcVE7PnQqRXAxYjhpI1VNPDR8JkgK
ejlMaCRHTHk3Qys/emlXRGAmeCZwMlNtdmdjMXVMZkBsMCsxaiVxNm14Qk1NLVJAZn5PNjt7fFM1
dytGVUpQfW5ACnoqZXd6RDFWdipATD9zbj1PR0ZKN2MxdUx7Nm4wQlEtNHUzOU04eTwjT0dLPntj
MXVLKzZuMEJRZUgzO31MfWU2cQp6T0dIZitjMXVKeDZuMEJROVRhdjtMPEpPZk9UXnE0YzF5JnA3
antkO2Q+M3wwIzdxfTxPVC0pKGMxeShVN0lzVS0KenljVHYjI0VjZXBPVD02amMxeSU4N0l1NCZJ
b1hfbUx+S0IxPkV9UHpwK1VeKj4taioxSjRvUlVSPTdoSD9vZnEwCnpPeUxlIXhGWnpxTlFGQn07
Zl98Z1YtIytvIVl4dmAjUkBtMWFLajJXcUh3JSRfLWo5PWFOYE8kcD5SdFNabUdnOAp6UUBEcEgr
XzRJR29XZWErO2ZgMGg8c0p1QjxKeE5tRnk+JmBUVS0ycEpCO31seFo1PF9XOSkjakJMP218JT55
dVkKeiN3YWp3X2kxKjsqYlFUTTRCVW05MlYoNHJmamQjTkheeDJ+YChvZ1opYS19eFYydTRTYUEj
QDtGJUhCeTJtXlBoCno9QzlrZlpSMHFzQF44U3V8TklTQ3p6amtZaDI2NW85Y1U0Xk02NVo1LTRl
MGQ2bjBDKkkjYnYhNWkzayN3P3dRaAp6aDIwWGRzdVhyaCNDbFRMRWZGaDhWWWZ1QUElKSEldjNl
QUNPVEBaUypld3cmTXEjJV50UUNkYjYwdTRZYzF5KGkKelB9blVJRD8/JG9NNjN5Zy00ZH1INm4w
QypJI0FkeDVpM0Fwdz9zVm0zJWUhYVN6cCpLNXpxSStaaSNyTjdqe2Q7CnpiRykheUJBKHJhLTRn
TTxGNkA/d1hMTW49TF9DKVp5Q3ZkVFQtZmJ3VVdaUD10YlEkZ244S1o/YTM/OTskcU0meQp6ZzxH
TDtrNUlUJTZ6KWBvZCEpaVdPNXMqMistVkFUeTI3MklhQXp2cXFaUkhmZz9vJmBvdm08PlJrKzZ+
K35YRFEKejlFRSM9IWFZJnBvfV9UK0QlX0o1P2tOaGwlSHljJjZUbFVBT0dNPXJjMXVMZjY/UktS
d0gwPHRNNGM2T09HSmVnCnpjMXVLVTY/UktSUlRYd2lMX0hPRE9HRzZWYzF1Sko2P1JLUl4lUW5Y
TUJObTJPR0wjS2MxdUw5Nm4wQlFsQHhZTQp6TTEyJT9PR0lUOWMxdUp9Nm4wQlFINTdKQkw+Jn0l
T0dFX31jMXkoRTdqe2Q7dFFVNG0jQyNXYU9UPGhVYzF5JEAKejdqe2Q7Pj10JVEjSm09RU9UPiY4
YzF5JXU3SXNVLUVFYVk8bnwwX3MlPDkqbk5yZ0xLO1pgZiQ4aWt1dXhVfnYqCnpmeD15PWFPKUtB
c1MzQVY7V2pBVE1HN35xYTJwbHdWdWlhejtXakRVV2Amemt4SndvOEdLSVRiO2tHRTs2JDx3Pgp6
Zz9xWmZVOCEoYURjbXlAP3JNKnRzP1AmZypld3kyU0oqOFBIQ05hejUhRmBNRWZJQkEqZXd3aVJA
Zn5Pd049PEgKejVtaTsjRWZNdXAqZXd5MlJNOyZNSEJ7SXc1IUYtSkVmSUI3KmV3d2lRYGp2THdO
bHRFNW1pI3lFZk11bSpld3kyCnpRUD9kSkhCczB0NSFGIUdFZklCNCpld3dpUH1uVUliNj9tazV3
bCp7RWZNb3cqZXd3PVVEeiFWYjZuVWg1d2x5Xgp6RWZNb3QqZXd3PVRHJVpTYjZNQ2U1d2xwPj9R
R1ZlWWNRKXtocHR0KVhEWnlZNno8c3ljYiZwTE44ejVVYUwtZT8Kej1QVFJgNnordXpjZkc+Qk5h
MD9yYTQlN344eC0hUDNVe056LUsyMFlRQEVFYSskJDlCV2AlcEQhbzVvMlVhZkdpCnpRTWcrYT96
SVp7SSkhX14kNUdZU2ZHZ35saHtgTU1tV1l9dz8zUmRYRTl7bnRJeEZtIWh6Y3cwbVdiTGE/M1Jl
Qwp6RChzZXNkTWZPZWgpT0UjbVdVY0U/M1JlP0RlUlZyeCsoMEloPjl1Zm1XV3lAPzNSY3NEZVJW
cmBZN3l7aHtgREoKem1XWX10PzNSZFhERDBNcUl3PFV4aHpjbXxtV2E3OD8zUmRHRllLMHhgN1oz
MWg/eT96bVdWa24/M1JleEUkbyh2CnpjYGZYZ2gjNCpIbVdhNzU/M1JkR0ViTWtSPihDbzh0Nnp1
U3NCbXZteEhsYEBUTkxpQzNpbWRKZCVNRURMKmRAMwp6YVBMeU1jUHJkYDZ6O3RXX2RiUHR6cngr
QmEzNF4oND1VVjs2ejs8Y19Zc0Jyc0tSfHI7WGJaI3BIUjNARCVfX08Kej8kWmtROEhNfC0haE8h
O3NPbVI+RTl7bnQkfTgtYWg/Kjx4bVdYT0E/M1JjK0U5e250M009ZkVofXRVNV9nbjNFCnpuVyhE
NWF7THxqUjJYdFpSOG5EbkFiVjBuaDI0WHtxazBPdjJOODhzNyg1RUskNUFuYjtyeyNgd05sdnFp
S3Zwbwp6ezdDa3NKXz5zQGVAQTUkaERRQG82Tk5wUmgteFY4KEx+ZmlWUiRxVjY7Umx0aUoxR3M5
ITxvbzd4cmkoPURWOyoKejZFVnw7SihgRilGNl99biV4KzxpQ1NxTy1kbyZSPFRHKnFCbjlJVCpP
fmZufl9VUEhITCRfZzh6WWc4NWFHekpXCnpGRFRwPjc0QXo0Y1piNCNTPmU4LWFDYSkpUn43RFMz
YiQzXj9vem1+RThOYCpfWUg7bnJvdyRvO2w4YkstJStebAp6RCV8JUo/akQ4djJaZyY9O2w4aE1L
VHg8SUQlXzcwPyNCeEVqfispPS12K0wqWDh7cUZTSjw8Rmg/Kjx4U3dLWCEKejc0fEczcVJ0OT9H
IVllNipyU1E0dC0+Qm5MeyR+YFhkPiNWdXR5VjdOcmdSe2gjRCZGKExfe0ZWVUglRlpWRyFlCno1
ZnhMfHFsdWBNIVg4YVRsQCNgOUJJPXtDTS14I1FnKn0+eG5rZWtpTHt2anprMHpvSDNWU3BXNjtS
bHRpSjFHcwp6OSE8b283eHJpKD1EVjsqNkVWfDtKKGBGKUY2X31uJXgrPGlDU3FPLWRvJlI8VEcq
cUJtYGxga1k+QWpmKU5YOE4KenZrdSpkYFRSUWM2TlVSSGg1S2lQYD5EZUhPeVR9VDtyPjxPZXko
dThQYEY8eitgbFFAdU4zYXo3NEZ2eF9aeC0jCno0fjZAISF1P0wrZXk/ITxzY2A/TGFSMDR2ZV45
dFREJV90Rz8jfk1NS01NQzNnfVl6ans7RmA+SmRVY3E0Oz0wQAp6dXFDNE1hNCNXPG5rKCNDen41
MUFnKl4rMXNJJFR6Tys8d2lfR2x0JXQxdnY4aF5pez0oTH5mIVZVSCVGa192az8KejVqOWxVcWx1
YFYhWDhhVC00eW17QX1YZV5NLXgjaWcqfT54RGs8I0lNQVMhTmswem9yM1ZTcFdIQnMyM2lLdkZj
Cno5ISozWTYhdkgkRHhrMU82RVhMTkooYEdGRllNN28leShnckNTcy13ZG8mU3FULWMrRG5CQnIy
T35rd3dfR2x0egp6dzZJNExGXyhvc251dTh9PzlzRFhoZnN1U2IlK25ze28ySGI+cHNWYT9MTm5j
Pz47d0E7ck1YZy07V1JMZVUxPEIKemVVMTxGZVUxPEplVTE8TmVVMTxSZVU4bGxLRjgoJnBKVEl0
JiNgJkg9aCNmKGI4SWZ+SVdgO2s5R2VlKGo/RC1ACnokTDBpfFczeihLdjNiR2cqdiNOX1k7TiM1
SGFxd25uOygzUiVAOTd2PF9Nby12cVk3bnN6RV4ySlBVfVp5dXpMWgp6TUFUZWkmaktRPHQqfmJT
NXBgREJxbHVfNl5xcFojTH5XdChPYn1JdHpCNTc4NloqfnNRQXl9SzZHUlE2P0BTUVkKemdUNkND
KUQ4TzExV19eUUl9PkNaTm87IXd0eTNsRkpDb20wQUx1KDFMfWo0d09ifDdKekI1NW8xTnpQY1Ez
dlFkCno2R1IxfD9AU1BMa0c/Wk8lc1RxYzFUbyp9SX1ebEFxd2g9KmJCdystTENofXQmSUI+OT1z
T2R7akgyJk01T2F5WAp6R2VPS0VgcCZTTyV7bnhRYEtzRHJQdVlQQWNhWHZ6dFo7YFkrQFQ3MG44
Rj5kYTdRVElrcVVRfCFYMiR9JDAqIUYKemc8R1U+aXhxQjI7ZjU3JU1CenBpWmNPM0U2PmRWfG1N
R2ooZzxHYUA0Xmc7ZDc0QTVOZCNKKTR1Vy12ZmolT3xQCnpoeUY9eWlLc21FUFlSO3UmXzV9TllE
NTJ8QW5MNUpOQW94O3RndUhEUUNzTGNsMEImXl5jQE1KcDNyd0JoKVAxPQp6a3N4WGFlTWY/Kjlg
cWR2cUhmVDRCIzRTWi07cDN7MSR7Pz9zMW8hWTM4RnNHY087MClLO014ZFk2NSpuZn5XQGMKejlT
TmNpKDAzJD0zUDloSEFtJCFATX1uQWpeY0BMZXpSYENpaD96IztrcyMoNmVNZj9yVUd5Q1pWcVZk
QUIjMFNCCnotO3A1WjVgOU80bV9fcypWTE98Mz1tZ0I/KlAofGcrPSZXemxFUiY9YTFVM3c2JDx3
VmcqISN6UEYxKV5EJV8oSwp6WmwlSlZyZntiIyshK2RZcm91ZzE7bSVVSCQwKiN7M2ludXJkemB7
T1VnNkdCeEY7eXc2QlhgQjNVe3U7SnozJE4KenFId0Rganh+ZSZMO29ETUx7dUw3PUxBdTY9JHtp
cndWezdiNU9zI1dCU0JPY2BpPXhxVGopQ3lMeyp7aE5EJWRlCnp6OVRfWTY4ZXE9UUE2bEU1PTha
Jj8/QDFKZ1Q1bXtSMUVyIzFXX3lLSX0ke2RwemxaIV4/fC00S354NiVqcyNIPwp6PXNPWmJISzZa
RTVPc2pRQlNCT0VgaT14S192a3drI0heJDVORCVYbHo5VGAqSDJSSk5GfntnVDYyJERIPz9AMnkK
emlvUFIzJXFhU2YxVG1OQkl9KmUhcVZFWFgqe25uN1ZMcmJPTylBe14zYiRJfSkrcFNSIW1VLWYz
bCMxYGc8R2ReCnpQZ1NffTNiI1N3RT5nSEBoMTtsYjdjMU4pM2IjcSZIWT9uVyFkPEZ4bW5xIWsz
YiNlIXUyOHRBRGNzVyk/bjtIYgp6TzV2V05hOTRYQUQtWlJEe3lBKWtzNjZ6fjM4TG9FS1BRTjRM
O3N2MD5JezhIZn5ZWGA5U05lZygwMyQ9c3pUcTkKekFuRk55TX1udiVeY0BNSmhSfUI7aTBWUCNr
cyNeQGVNZj8qODF4K3BxRV5zJUIjMF9PLTtwNWQxQVJ3PXMwe1FTCnozOEUmQGNPLX52SztNeGQ+
SHZMNWZ+V3hXOVNMSVkoUlU8PlN4NFdJQW0kcj1NfW5BWF5jQExlaj9zNHtofWxLbwp6a3MjKDNl
TWY/clFTPT1OVmxMNWxCIzJvPS14MFI2UyU8RXtlMTA5ZVJeZ3RoYUwtYj5YRGkldzNpbGpeZCM9
SmcKelB2TUBnYTQlNH03YkBLSzNpbCN+ZCRHZDNNQiMyd3hSKXkyalM2PkAhbzV1NFVhb01qUGBI
fkY/dilEbkR1c0tzCnohbzVifVpjKF9gRCV8VDc/KTR0VyUwdkMzZS0yd0JEaThnMGZ+WXo0Jmsz
VTEmXzVATEl6ISkpQVN3KWZNfW52PQp6XmNATUpzP2N7Tmg8Wlpia3N2QXdlTWY/KkFAbSZ5cUkl
R0dCIzYyfS07cDNIMjdPMEBzMUBgYjM4RzVTY087MVYKeks7TXhkRGclOC1mflgxZjlTTmN1KDAz
JD1JelpvJUFTd1dUTX1uQXBeY0BMZSozb3cpaTF8an1rc3hMb2VNZj9yCnpXQXEmZlZzX0RZQiMz
IU0tO3AzQDZuI2c2bWBuNT4zMVN3fWNaQlYxKX1jM0dLRURwVlFRX1hDYUJvKCl3PHozTwp6NzRC
XmNfalpNUWhyKyM2O29oWmk/XmR8P0RCT0QkP3RLZFBldWNZTDtYYV5uQTVeI3hEY3B3QD9qczhL
UUhBQE0KeiFoS3hmS0F+YCpSSmN6bStAfUBwR1lhPXZoNU1ZeHZHUCFWPSUyJXVoe3s5JW9GSGxy
e2Qwbi1IdVRSNHFSIUJGCnpCIX4oXy07cDN7M3c9anxzNERhdzM4SjNSY08tflBMZj9AZlk2elcx
Zn5YI0o4VlJDcSZ8NCZraWF+RllBWmk4Twp6TTFyVWliUTF9cEtGfmlUaHt7MCFrUldPVHtYPkdO
Mkp7YUpxN0trTUIhfig/fEJ4VyY5e29kdG4wNTNJMzFZc3sKektPfjVtTSpvbD88ezE0JGZ8eTxP
NCsmeWsoTFdASjhBYm4pQW0kU05MeFB3Xl5iY1Y+bnwwX20lOyhwaytaRkVmCnozaWt6dGA9WXtx
TiNYOEx4R3lXKlJ9fTZ9aDVNPyllTkV4RUQlQFFQX2pRSDRUajlRO2FOa3Q4Wno8Zmo3NEFDPAp6
X2cjaGlwMkZSdWFRfm9pX2JTfT83NDhRTF9kfHZJaztrIzNQKj47KyFqXzFOTFNLKnxZNipRb2Z+
WD8mMXFxXmwKeiY9KHwjJTBYWHtBWmlBRUw0djNqXmFUbGBQUzYpNWh6ZGJwa1JXT1VlTDtlIzNp
SmdEcThgdX1CIzI1dFV5dlliCnowRFZEJW4wQHBHMzFaJlM3Ykopb01fLVUyPHtFdUxmfHpDVzFx
b3QpKEhBNiRuTUdmYUFtJFcoTDR1ZX5eYVRsRwp6OT89JmhoIzVwKmtSYXZgZUw7ZWxIU2A0dVYh
cUg5QiM0PHBVbDZ3VW09bnhqPUhSb0lgdU1EYjt8RiMjQUtlYSoKekl4JCFJXkZuLWYmST1jbTc9
T3IpUGowe3lPUy1+aF5UUVZaYi17d1lGdntLVjBYWTE3Pk56SmplRkQhT1p2VU98Cnp1ZjZfPyZy
OTAmenYrezc3LVopWWJVT2J4XyFPUEFQdHhncGF0X3lrMztLV1dsWEY7OF89Qno8Z2lwaihLdiQy
VAp6MGdMVnYxZXhQXktNXiQ3cUpJKUomIVRAOExAfWVRTjY+dFdla089b01PVGxZP0pmRk9MRyVW
KUolVjwkPW9kaXUKejsxZig8aVUwcEZAT2RRbTQ4cT0jWFY2YWVxaGFgPVFUVyZQUyFkOE8pKjNo
TEdgeXJXVkQ2bmFVP3o3TUZ1Jk0mCnp6K0FIWGZjZXYyMUxvVE9AYyNuX3t1Z35sKSRFKkVvekpL
YF49YUxvUU5efFR6aj55eVotSTVqemVqdzQhdEpiWgp6PXhNMVB5TmtsQHMmS24wLTBsajt0QWcq
fTB+S3loaDEqTnZfRXh4azZtRE9JZHl2QklyKklFZXhjd0ZHMEZOc3gKei09fFVKJUY2Y3tMRzgt
LVN3WmN9X2M9bEIlNkZUZmNJQ1RXUGBtUGRVUW9POGVMK3lXQF9rV0l5WWhXV1BgbVFvCnpBKmZ5
WHpBVDhrIU0mOXJEaEJzZmZ+WGJUVE00MnthQm40dWBvTylGQVN3ZypSKVZNcisqPTh2OGdPcVZo
JnNUJQp6bF5ga3JfZn4/S2QpIStJViVCa1FDNVpYUHlfRnpsOHV3TyRtfUFecTMxVzZ9WnpZSSUj
bDRqdlcpJH5VZnx5SjYKelRubDByKFFeJG5vM0dzbEZ7YGlwMH5QS2RnKiNaYDRwRiM2NzQ5JkZK
NnokOFBgRCElP2tJJmpUSCQhQF41YjJvCnphRWxhZnZCQ3swK18xdXBEQlAmUmpWYXU/IWM4ZEw1
YHxsO2FMV3wjQXFzYl8hWDJrQDReX0QxNj5obzV2R05ScAp6TChqRW5vWFNKYndJRkheY1Z+akFI
ciQ7RnFSIUJCRXI8JWstSSpZMjNxOTlAczREYmEzITxLSWNQNUJSTGVJNHoKelk2eTJ7Zn5YJCFU
bm5PWmFDYXQlaWIybntBWmk2WSpNZ2BMXmpyJn5LRzFWNWh7ezBFd0lGSCZKPWNQJDJKfkRECnpx
N0trPUVyPCQwJiRTQHQ5ekVCQm4wNTRBM3UzO31iMWpJT00kZmUlPGBfTktmfHk8T1RubDFlKFFf
P2A4QVo+dgp6QW0kUTEqTWdXdV5qcmhZVypzXkt2LTs9ZCF4WmpCZyohPiVQRkE+d0U4R2YmZHhY
TkJxSHcxdysjP240UTN8KEcKejtaOVN5KC1yT3ZnKiNLPjk8NlheRGNvWmU/cmVwN3RpbkFgO1Uy
R1c9UDJBMDZ6KyklX2F1Y29TSyokbGE4RlVWCnpSVVhHV2JPSmNeVCNMcjNKb0g9KHFVTytaRXJA
REUmJFNAeDQwaiVMK1ZAZFo3PCNTK1FDc01fN0RRRnk5U2xMIwp6Nk1DKSVRQXl+ejdETnI8d1N5
cTQyUit3PHMybFdMMyEtQXNiMWpIayFEb0Y2cURzKG5FcnxMKyYkUz5iMTNsTSoKenMwczkzMyEp
bShiMWpIRUsrbS14RGdacyNmfHpec1RubDI+KFFfP2BgOXt5UkFaOGpwKk1nWDFeanImS2NGfVYh
CnpoPFFjTndJRjVgSj1jUG1PWX5kfFZpd1ZKNEskbHw9c2U4bypQJSY7Sjcze2VFOEg0fG5eTCY3
M1VgNlJVOHIjRAp6NnotYEN3X2Yya0RCTUt+SD80M1I3NEJrJXlGfXFPRGNvai1uXkN3Kzc0OTtI
eUlrUzZEQktrYV9jVm9qeTI0JGwKemE5MWhaR1pnTT5rN0ZHPTQ7KkB+TWRNVCtkYWVhZ2JMaERp
d0EhS3IxV3sqJjg1QmY/cTMybzx3U31IKkt+eG9iCnp0XzR2fj0oIWR8Qzg2aDk1SCpDSlllN15H
ZGFlYWdIfFYoKk04JS16U2BmOEBvQCtyPTMzeyN0UTZLMko3RFEjQgp6PVVOYW9mdTN0WVIwRGRo
MXlLait4ZlZuUHB5eWY7YkJ+XkRMQ2lYT3RfM21RPSghZmVPcnombzVPYSo0WWVDRXwKemRhZWFB
dWpzaUojRWhjblNgYyVJb0ArdE9CNl9aWVgwcn1tZ0lXRExiZ2paWVF7a1NhYUwtbl8+bEUlZTNp
bil2CnpkIUU4UVUqVFMkYTQlSDI+bE4tcjNpbzEjZHhecmBwbH5sJHhFbUdqQ1dVKk0hbzZKS1Va
SFJ8RThIczs/b3xyKwp6WUs0MV4hcmh7OXVUezkkRGN0S2xqJjxsN2FPay1malo9Qih4ZlZwdHEz
Mm88KXJPdkhMRFUmfnRfNHdIPSghZHwKelpLM0J7NUxKYnFZZUNjI2RhZWFnTiQ5eTJMPUI8bVNg
Z0tQb0ArdFc0U0tFeFE4RFBiN0RUT309VU5hfGZ9VSRaCnopQ1lSNTF5TEYzeGZWb0NweXlmOylx
dExCTERUX3l0XzR2Nj0oIWZlK0B0NE81Vk1ZK1llQ0Y2ZGFlYUEpOUFTdAp6IzJsbU5TYGYyfm9A
K3RPRHwpVTRGezl8WTdRfGVsPVVOYzZoQE5ZcCp7bmx2el5yfjlkWldVPE4jV2tDYUJvcSMKenc8
X0cqNno9VGBfWVFAN3JeM0JVO29oeHE/QF9xLUQlfEBOPyk/Z1B0SE9PaTtYYkh2QTV5cHZFOElz
RT94UEMjCnpGQF5pTSFoSiZGS0I7aEBRbipobSstRFQtdmtMYilrN0ZIcjEzMl90aV5pIXVeanIm
fj1Gb0YzaC15UjZ3SUojWQp6Sj1jUCRGIVdwdHFQRWE7RXJfWkAmJFNAeDJ8ZD8+czNpMVUzITtZ
NWIxakpLTEM+YHk+SU9hNmZ+WGt1VG5uT0IKeiZ+cShfRG5aWStBbkY0PipNZ2BGXmpyJn5DZVUq
JmgteUkzd0lKI01KPWNQJDBRNmk3VighcyVFcj9sMSYkU0B0Cno4JEgqOG19Jkd9M3UyRFpiMWpK
M01iRVYkPGBxNUhmfHliQ1RubDBAKFFfP2BTd3puQCZ9YFBCK2Myd05oaStINgp6Jm53Jik2eis9
KF9hJWs5TCpjJXhhOT5mbEl+REckM2ltYUkrcDJKUERjc2k7P3J3JHFoUWZWUTtsOERDLSZWTnEK
ekRCTzF5P3QyUCVrSF8mbXpZUUZFbm5ncCpFUDkjK0Z7a0toN1F9MyNyJiRwNWhATklhJXBpSzIx
dT1LJVglQHQrCnpwe0gzOF5NIyZmTENoMy1uZ3VhTz14RytqPzRZTXY1YzdoYlc8a3NkZFlUMD43
d0JtZyM0TW52U3JGR0JKPFdvKwp6XjV8KDYjNUc0eHZtbVpFZFlUMXNvemNAUWglMWJxVzxnd0Fe
ZlV8TnMtbVlFPXBLQndKenB0cFpLWnZLTnhQR1AKelhaaV5rb3U2UFk0JGJxVnsybU51X1RuNjRy
e0lRYkBUbWdfJSl5NVpuMEZzRlVgN2BZbWB7eGtuM0krY242RGktCnpVQGwrJmY0N3NzVC1WKTZ6
X3NHU3xLSURgYEZrZnBgPHUpNXZIM3JTNWBZbGUrYGJDO0FjZm1jO1UyN1RgenpjNQp6OT4+YmZB
M1hobkZHTz8rUHJuMldTb0FBRkNgdEk7ellDZ2MoWFIhfnYqPFUxd3pLRnoxa0piVHd9S1d9XmdC
VkAKelRsOU5EXmFmQUExbnA/aWUraztqcVc+MjMwRV8tMFhsSU41RDUkWExQbDklXz0rQTw3d2Rq
OFk/UGskbTFucTlvCnp7ZXQkZTI8P1MtVF4/dT04VnhQbCg7fGNBO2hPRGI1ISRGTStTe1Q1TENp
RnM4VkYqSkB6ZypOdnh9eiZmfHlzLQp6Mnw+JiNvKkQ+WkV+JTJYMSFmVVg0Uzs2ejRzOCYjYGdk
cHREJT9RfGNkKWA4cUh1PlErK2hsTHhXWE53YTdRWksKelEzYGpvIXR2VlckR2NHQjdBZjNmZyZS
YDFWVEJ0fXhLVnswUUBDLTNuXjNxVjNiJDBAbU1QcHI2eio3c0o1SiNxCnpzJkwwRSs7V2ZPU3Vf
WF5QcnBSdFIzNHN3MzhMb2teaColY2hOb1lHczUzbk01PTRkSj42YWpDM3MxaVVRQmA+UQp6QzVV
PiQoPVMwKDV9dGt1cUs1R0ZPQXl0QXIoYzRvOCRBNklNOCk5Z21tcTJkUHJuM0ZDM3lOSmkyQV9P
RkZ7bFcKem9fLTBVQ2gqaWk1WT5SRTI3OyZxSlQod1IxPmxvZjFUcHRgWTlOU04kNVI3QSVyfkFJ
Mng2eDMpSWJuKGpIZD5JCnptfForSTVYOExWc2V2Rzc2aSpFVkZfKEMxQWMkR1NRdjt5Y3RWMVZZ
Unt5K3duOEtaP2EzPzk7JHFNJnlnPEdMOwp6azVJVCU2eilgb2QhKWlXTzVzKjIrLVZBVHkyNzJJ
YUF6dnFxWlJIZmc/byZgb3ZtPD5Says2fit+WERROUVFIz0KeiFhWSZwb31fVCtEJV9KNT9rTmhs
JUh2cHZQNV82ZVUhcmo7NF5PYFlRRkQwdUM1VVJuKD1TMlA4Sj5PI3FRZGE+CnpPQXhoJXIoYzRv
RG0/dVhMX09pQG1tbiQkUHJuM0ZMd05jbmkwWi05RkcxN3xvXy0wVVYofDEhNVZlQSpVeEtJLQp6
SnBCP3hlYzxWckFTd2UtelhWWWVjeG9Wc1lRUiRpTERUYEI4Vkk1U0BZRnlNYkMwSjZmfHp3WUg0
d3luPEVlb2wKelcqU2NvMVRue1dZOU5UJiNadj04JXF5TjYyeDNPQClJYm4oaUtobUZtXzxBXzBH
aURAYlJLNSk+KEhkYW92KDFLCno2PmcyZk8pMT0zZ31YckVFPnlVNjNpbmluVGQhfiU2eihGMG5e
dzR1M1V7JT5VN35RQzZtR01eJV8hV1ozVWBecAp6VTlOQ2o2eiZSemR6ISpNVUUhYCZ4VF9USTg0
N29gJEZVQmIyTSRsYU1CYEsqb18tMFU9SjUxTzVZPmpLVXhLSkoKekpwQj94aDJpTyFBWmlPd3pY
VlpMYz17IVhkY3hCJEt+eGYrZWhIJDZAYnBVJSlxfCZCZn5Ycmp7U3JqUTtPVW5qCnpZNlZaZjFX
X2U7YFh6fF56fCR7NVIwZmBZMzhFKE8pSWJvYGZUc3E2cn5eRFQ1SlV5d3NldkhvOSMwSmZHMyQ3
MAp6QWMqPEtRdipURkdAY3A9VnZoMERLb0dOd3J2YCRVUzNFVGsjRWp5cGZndDcqUFluYnlpK0V9
UEdARXRrOHFEZ34KenA9JVpIbkZ7d1RnP3FOYlU4aXUqUU1sKFMtMThMZmAzbTt9Zz9wakdVOVdJ
MlFuKGlAKylFVmgyOERhNiFyaUVGCnpIITBsOTZ6PTU7X1g+cihTPmF4KGFJYUZoUzFhNlc2eiYj
PGQjJUV+UFRea2ZhalprdmZXeS0tKEt3WmRyKGM0bwp6SVh3TG1NNzgxUm1tdW00UHJuM0ZWUi1y
X2h9eSFfRkZ7bGxvXy0wVXA3OFdiNVM0X2RVeEtKMUpwQj94XzJCODMKekFuRkVCelhWWStjPXsh
WFRFV3ZWS354RXplaEgjSkBicFUlbTRUO1Vmfld+UilldUJBO0hpY24+SHRxUTFXXkhhCnpzdihI
RSQ1UmJLJXNRVEcyeDdrUlI2YEltamkoeGRtfTVORTVYOWBfc2ZIbHQ2O0N3O0Z7NX5AQSY5eGVR
dz40UAp6QkEjamgmMU1+WDE3YEs+Jj5JISpPJHpzQmc/byNfeTtiNGZyZl9kcHhPWFZySX5ERi0z
aW9iPmR5bTRzU0s7MkwKemFQTD5SVE5VbUQzaW07VWA7ZndZU204ZFJhMzU4O2sxNT44NzQ4IVhf
ZXE4T2wpYDtsO1hiMnFwSDtaZWNedkR8Cno4XkdifG9NQGNOIV96ckkpRXU3OTM4TEVZYldSWDto
TnA5YXM0elU4NkdVeXs+Nns+ezNReSsqUUJRYX1DeH1ZSQp6KD5YIVo1SSU4ODVZPlpFOTE9dmA7
MWg9Z1E4RDwkQXdrcCVLNTxBOFJmMTAoNT00RkE2TmR5KjhUaUJATERVMzMKenNZTVhnZktPQD5M
Pj1JaFNfRHg2X0Bvdj0lc29ELU1HJikmUGloZ3dlQitaXjFUb1kycSF2TlVGK1FuOTVWTU88CnpZ
N3hZfDsqKGtnRntBalQ3RDNEPEtCK3x6dnhyWT4waC1NXmJRQDslPihLMkFfaiFmO2cySGBLO2w4
QUJjUFFNSwp6NzQ5bnZjYztSQVJwR3YtYTliN2JFYHxITCFyaVRLLSV6LTNkS31OVStyWihJYnRJ
UXVWU0tXVkFnKFB3U3d8MzgKejZgIW1saTBnP0ApKUI7JiMzJDxyO3VfK1VicCZ6c0BYMCFZeE5p
N2w5WUlfJWU2byVwdGAkQzZNLVcjRHBSNk5ACno+d3swJDV5WHxqQytpNX1uJjZYbDFhVVIrJHZU
MyM0KXxtcEwwa2NSdkpUS2E8X1A7cjtPdk59QDlpaDx5IU19Zgp6KGZKOEphaTs/bUA3P3cqZl9u
VnpLS0Ezc1g0dDw/RkBNRiFWJDgkOHg1Sm9edT5nYkk0KVQ5fll7dVZ6e3tPV0MKemY4QSNBSDRh
b2pfWVpZKC0qdkQ1LUpqMDVhRj0oI2JiJmVnQERKVFAxZGJPRllKPE4mMGI/JTRESHpuc2NeSkU0
CnpZe0EkRzt8N2NlVkRQNExjWl8jbig5JXpGKEVqLVVFKk5MOG8xUHJwRmc1c3lPX1M0V2ZQMysk
dHl7Zm08S35UUAp6WDlnZD5XJWJrcz54MjJrbFRLUSt7aGg1N2FRcm9RVXY9eUhlZVBfeyFNfGdF
biZLYiQ/cEAhI1d6bUNueCM/IWEKemY2U2xXJE4ydzx1e3tSa0tORitDSTBzYGQ0RW56IyNzJjw9
SGlOO3F1Zio2QjxKbE5va0x4a0dLSHRLcXRfUE9JCnp7PE1BSCQ8OVRCYk1uWGt8TmJ6LVY+czk4
OCNpNHZ4blhjLVlWKFpVWl5oKUw4KW4qJnNYNl9gX1BePXdpZ2pCUwp6dUhDUzRRaHZQP1d9ejJj
ZDBLZTwjIWMldFVwT14ydilSeSpqI0shal9SflV6bjFjZXJ2dG49bz1QfGFaPDl7bS0KeiE9fXZG
OEVlPEJUUnFpSSt1K0YxKENEREVXR2x7ej4oO0phaWpPWmIjJTZaV1c5WS04clJHMUVlZWU+SGZC
KlRMCnl0VSR9MGdzJXBfMnd3PChoQkBEVSlwKGtqLUpxUm5NVHxMYD1nKzI/OVY3UWl3STRaY15s
dHh+P2YqWT5ZaWpITwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FB
L2RpZmZpU0FDLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL2RpZmZpU0FDLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZiODdjMDY2YjNhYzdhNWJhZDkyOGQ2
NjA2ZTM2YmNjZWE4ZTk1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9kaWZmaVNBQy50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw0ODEgKzAsMCBAQAotIyEvYmluL2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+
L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFy
YWN0ZXIKLQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzFEVE1GXzE2a0h6X2xvbmcucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfMURUTUZfMTZrSHpfbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8x
RFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzFEVE1GXzE2a0h6X2xvbmcucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMkRUTUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUx
L2kzMF8yRFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzJEVE1GXzE2
a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBfMkRUTUZfMTZrSHpfbG9uZy5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2kzMF8zRFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzNE
VE1GXzE2a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfM0RUTUZfMTZrSHpfbG9u
Zy5wY20gLi4vZGF0YXFhMzUxL2k2MF8zRFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzREVE1GXzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pMzBfNERUTUZfMTZr
SHpfbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF80RFRNRl8xNmtIel9sb25nLnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzREVE1GXzE2a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfNURUTUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUxL2kzMF81RFRNRl8xNmtIel9sb25n
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzVEVE1GXzE2a0h6X2xvbmcucGNtIC4uL2RhdGFx
YTM1MS9pNjBfNURUTUZfMTZrSHpfbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF82RFRN
Rl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzZEVE1GXzE2a0h6X2xvbmcucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfNkRUTUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2
MF82RFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTFEVE1GXzE2a0h6X2xv
bmcucGNtIC4uL2RhdGFxYTM1MS9hMURUTUZfMTZrSHpfbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2EyRFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEvYTJEVE1GXzE2a0h6X2xvbmcu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hM0RUTUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUx
L2EzRFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzdEVE1GXzE2a0h6
X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzdEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzdEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzdE
VE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzhEVE1GXzE2a0h6X3No
b3J0LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzhEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzhEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzhEVE1G
XzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzlEVE1GXzE2a0h6X3Nob3J0
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzlEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzlEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzlEVE1GXzE2
a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEwRFRNRl8xNmtIel9zaG9ydC5w
Y20gLi4vZGF0YXFhMzUxL2kzMF8xMERUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfMTBEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwRFRNRl8x
NmtIel9zaG9ydC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMURUTUZfMTZrSHpfc2hvcnQu
cGNtIC4uL2RhdGFxYTM1MS9pMzBfMTFEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzExRFRNRl8xNmtIel9zaG9ydC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMURUTUZf
MTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTJEVE1GXzE2a0h6X3Nob3J0
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEyRFRNRl8xNmtIel9zaG9ydC5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2k2MF8xMkRUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTJEVE1G
XzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTREVE1GXzE2a0h6X3Nob3J0LnBj
bSAuLi9kYXRhcWEzNTEvYTREVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
YTVEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvYTVEVE1GXzE2a0h6X3Nob3J0LnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvYTZEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEv
YTZEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEzRjAwLklOUCAu
Li9kYXRhcWEzNTAvaTMwXzEzRjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEzRjAwLklO
UCAuLi9kYXRhcWEzNTAvaTYwXzEzRjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0RjAw
LklOUCAuLi9kYXRhcWEzNTAvaTMwXzE0RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0
RjAwLklOUCAuLi9kYXRhcWEzNTAvaTYwXzE0RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzE1RjAwLklOUCAuLi9kYXRhcWEzNTAvaTMwXzE1RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzE1RjAwLklOUCAuLi9kYXRhcWEzNTAvaTYwXzE1RjAwLklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzE2RjAwLklOUCAuLi9kYXRhcWEzNTAvaTMwXzE2RjAwLklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzE2RjAwLklOUCAuLi9kYXRhcWEzNTAvaTYwXzE2RjAwLklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzE3RjAwLklOUCAuLi9kYXRhcWEzNTAvaTMwXzE3RjAwLklOUAotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzE3RjAwLklOUCAuLi9kYXRhcWEzNTAvaTYwXzE3RjAwLklOUAotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzE4RjAwLklOUCAuLi9kYXRhcWEzNTAvaTMwXzE4RjAwLklOUAot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE4RjAwLklOUCAuLi9kYXRhcWEzNTAvaTYwXzE4RjAwLklO
UAotZGlmZiAuLi9kYXRhcWEzNTAvYTdGMDAuSU5QIC4uL2RhdGFxYTM1MC9hN0YwMC5JTlAKLWRp
ZmYgLi4vZGF0YXFhMzUwL2E4RjAwLklOUCAuLi9kYXRhcWEzNTAvYThGMDAuSU5QCi1kaWZmIC4u
L2RhdGFxYTM1MC9hOUYwMC5JTlAgLi4vZGF0YXFhMzUwL2E5RjAwLklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzE5RjAxLklOUCAuLi9kYXRhcWEzNTAvaTMwXzE5RjAxLklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzE5RjAxLklOUCAuLi9kYXRhcWEzNTAvaTYwXzE5RjAxLklOUAotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzIwRjAxLklOUCAuLi9kYXRhcWEzNTAvaTMwXzIwRjAxLklOUAotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzIwRjAxLklOUCAuLi9kYXRhcWEzNTAvaTYwXzIwRjAxLklOUAot
ZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzIxRjAxLklOUCAuLi9kYXRhcWEzNTAvaTMwXzIxRjAxLklO
UAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzIxRjAxLklOUCAuLi9kYXRhcWEzNTAvaTYwXzIxRjAx
LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzIyRjAxLklOUCAuLi9kYXRhcWEzNTAvaTMwXzIy
RjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzIyRjAxLklOUCAuLi9kYXRhcWEzNTAvaTYw
XzIyRjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzIzRjAxLklOUCAuLi9kYXRhcWEzNTAv
aTMwXzIzRjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzIzRjAxLklOUCAuLi9kYXRhcWEz
NTAvaTYwXzIzRjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzI0RjAxLklOUCAuLi9kYXRh
cWEzNTAvaTMwXzI0RjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzI0RjAxLklOUCAuLi9k
YXRhcWEzNTAvaTYwXzI0RjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTEwRjAxLklOUCAuLi9k
YXRhcWEzNTAvYTEwRjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTExRjAxLklOUCAuLi9kYXRh
cWEzNTAvYTExRjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTEyRjAxLklOUCAuLi9kYXRhcWEz
NTAvYTEyRjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzI1RjAyLklOUCAuLi9kYXRhcWEz
NTAvaTMwXzI1RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzI1RjAyLklOUCAuLi9kYXRh
cWEzNTAvaTYwXzI1RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzI2RjAyLklOUCAuLi9k
YXRhcWEzNTAvaTMwXzI2RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzI2RjAyLklOUCAu
Li9kYXRhcWEzNTAvaTYwXzI2RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzI3RjAyLklO
UCAuLi9kYXRhcWEzNTAvaTMwXzI3RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzI3RjAy
LklOUCAuLi9kYXRhcWEzNTAvaTYwXzI3RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzI4
RjAyLklOUCAuLi9kYXRhcWEzNTAvaTMwXzI4RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzI4RjAyLklOUCAuLi9kYXRhcWEzNTAvaTYwXzI4RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzI5RjAyLklOUCAuLi9kYXRhcWEzNTAvaTMwXzI5RjAyLklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzI5RjAyLklOUCAuLi9kYXRhcWEzNTAvaTYwXzI5RjAyLklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzMwRjAyLklOUCAuLi9kYXRhcWEzNTAvaTMwXzMwRjAyLklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzMwRjAyLklOUCAuLi9kYXRhcWEzNTAvaTYwXzMwRjAyLklOUAotZGlmZiAu
Li9kYXRhcWEzNTAvYTEzRjAyLklOUCAuLi9kYXRhcWEzNTAvYTEzRjAyLklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvYTE0RjAyLklOUCAuLi9kYXRhcWEzNTAvYTE0RjAyLklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvYTE1RjAyLklOUCAuLi9kYXRhcWEzNTAvYTE1RjAyLklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzMxRjAzLklOUCAuLi9kYXRhcWEzNTAvaTMwXzMxRjAzLklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzMxRjAzLklOUCAuLi9kYXRhcWEzNTAvaTYwXzMxRjAzLklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzMyRjAzLklOUCAuLi9kYXRhcWEzNTAvaTMwXzMyRjAzLklOUAotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzMyRjAzLklOUCAuLi9kYXRhcWEzNTAvaTYwXzMyRjAzLklOUAotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzMzRjAzLklOUCAuLi9kYXRhcWEzNTAvaTMwXzMzRjAzLklOUAot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzMzRjAzLklOUCAuLi9kYXRhcWEzNTAvaTYwXzMzRjAzLklO
UAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzM0RjAzLklOUCAuLi9kYXRhcWEzNTAvaTMwXzM0RjAz
LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzM0RjAzLklOUCAuLi9kYXRhcWEzNTAvaTYwXzM0
RjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzM1RjAzLklOUCAuLi9kYXRhcWEzNTAvaTMw
XzM1RjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzM1RjAzLklOUCAuLi9kYXRhcWEzNTAv
aTYwXzM1RjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzM2RjAzLklOUCAuLi9kYXRhcWEz
NTAvaTMwXzM2RjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzM2RjAzLklOUCAuLi9kYXRh
cWEzNTAvaTYwXzM2RjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTE2RjAzLklOUCAuLi9kYXRh
cWEzNTAvYTE2RjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTE3RjAzLklOUCAuLi9kYXRhcWEz
NTAvYTE3RjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTE4RjAzLklOUCAuLi9kYXRhcWEzNTAv
YTE4RjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzM3RjA0LklOUCAuLi9kYXRhcWEzNTAv
aTMwXzM3RjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzM3RjA0LklOUCAuLi9kYXRhcWEz
NTAvaTYwXzM3RjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzM4RjA0LklOUCAuLi9kYXRh
cWEzNTAvaTMwXzM4RjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzM4RjA0LklOUCAuLi9k
YXRhcWEzNTAvaTYwXzM4RjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzM5RjA0LklOUCAu
Li9kYXRhcWEzNTAvaTMwXzM5RjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzM5RjA0LklO
UCAuLi9kYXRhcWEzNTAvaTYwXzM5RjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQwRjA0
LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQwRjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQw
RjA0LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQwRjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzQxRjA0LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQxRjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzQxRjA0LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQxRjA0LklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzQyRjA0LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQyRjA0LklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzQyRjA0LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQyRjA0LklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvYTE5RjA0LklOUCAuLi9kYXRhcWEzNTAvYTE5RjA0LklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvYTIwRjA0LklOUCAuLi9kYXRhcWEzNTAvYTIwRjA0LklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvYTIxRjA0LklOUCAuLi9kYXRhcWEzNTAvYTIxRjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzQzRjA1LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQzRjA1LklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzQzRjA1LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQzRjA1LklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzQ0RjA1LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQ0RjA1LklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzQ0RjA1LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQ0RjA1LklOUAotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzQ1RjA1LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQ1RjA1LklOUAotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzQ1RjA1LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQ1RjA1LklOUAot
ZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQ2RjA1LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQ2RjA1LklO
UAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQ2RjA1LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQ2RjA1
LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQ3RjA1LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQ3
RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQ3RjA1LklOUCAuLi9kYXRhcWEzNTAvaTYw
XzQ3RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQ4RjA1LklOUCAuLi9kYXRhcWEzNTAv
aTMwXzQ4RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQ4RjA1LklOUCAuLi9kYXRhcWEz
NTAvaTYwXzQ4RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTIyRjA1LklOUCAuLi9kYXRhcWEz
NTAvYTIyRjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTIzRjA1LklOUCAuLi9kYXRhcWEzNTAv
YTIzRjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTI0RjA1LklOUCAuLi9kYXRhcWEzNTAvYTI0
RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQ5RjA2LklOUCAuLi9kYXRhcWEzNTAvaTMw
XzQ5RjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQ5RjA2LklOUCAuLi9kYXRhcWEzNTAv
aTYwXzQ5RjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzUwRjA2LklOUCAuLi9kYXRhcWEz
NTAvaTMwXzUwRjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzUwRjA2LklOUCAuLi9kYXRh
cWEzNTAvaTYwXzUwRjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzUxRjA2LklOUCAuLi9k
YXRhcWEzNTAvaTMwXzUxRjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzUxRjA2LklOUCAu
Li9kYXRhcWEzNTAvaTYwXzUxRjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzUyRjA2LklO
UCAuLi9kYXRhcWEzNTAvaTMwXzUyRjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzUyRjA2
LklOUCAuLi9kYXRhcWEzNTAvaTYwXzUyRjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzUz
RjA2LklOUCAuLi9kYXRhcWEzNTAvaTMwXzUzRjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzUzRjA2LklOUCAuLi9kYXRhcWEzNTAvaTYwXzUzRjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzU0RjA2LklOUCAuLi9kYXRhcWEzNTAvaTMwXzU0RjA2LklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzU0RjA2LklOUCAuLi9kYXRhcWEzNTAvaTYwXzU0RjA2LklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvYTI1RjA2LklOUCAuLi9kYXRhcWEzNTAvYTI1RjA2LklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvYTI2RjA2LklOUCAuLi9kYXRhcWEzNTAvYTI2RjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAv
YTI3RjA2LklOUCAuLi9kYXRhcWEzNTAvYTI3RjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzU1bG9uZ3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9pMzBfNTVsb25ndGVzdC5wY20KLWRpZmYgLi4v
ZGF0YXFhMzUwL2k2MF81NWxvbmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzU1bG9uZ3Rlc3Qu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTZsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUxL2kz
MF81Nmxvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzU2bG9uZ3Rlc3QucGNtIC4u
L2RhdGFxYTM1MS9pNjBfNTZsb25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF81N2xv
bmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzU3bG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfNTdsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUxL2k2MF81N2xvbmd0ZXN0LnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzU4bG9uZ3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9pMzBfNThs
b25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF81OGxvbmd0ZXN0LnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzU4bG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTlsb25ndGVz
dC5wY20gLi4vZGF0YXFhMzUxL2kzMF81OWxvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzU5bG9uZ3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9pNjBfNTlsb25ndGVzdC5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2kzMF82MGxvbmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzYwbG9uZ3Rl
c3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNjBsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUx
L2k2MF82MGxvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTI4bG9uZ3Rlc3QucGNtIC4u
L2RhdGFxYTM1MS9hMjhsb25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2EyOWxvbmd0ZXN0
LnBjbSAuLi9kYXRhcWEzNTEvYTI5bG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzBs
b25ndGVzdC5wY20gLi4vZGF0YXFhMzUxL2EzMGxvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzYxbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzYxbHRlc3Rf
c3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzYxbHRlc3Rfc3BlZWNoX2Ns
ZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzYxbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzYybHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzYybHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzYybHRlc3Rf
c3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzYybHRlc3Rfc3BlZWNoX2NsZWFuLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzYzbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRh
cWEzNTEvaTMwXzYzbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzYzbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzYzbHRlc3Rfc3BlZWNo
X2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzY0bHRlc3Rfc3BlZWNoX2NsZWFuLnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzY0bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzY0bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzY0bHRl
c3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzY1bHRlc3Rfc3BlZWNo
X2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzY1bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzY1bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEv
aTYwXzY1bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzY2bHRl
c3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzY2bHRlc3Rfc3BlZWNoX2NsZWFu
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzY2bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzY2bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
YTMxbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvYTMxbHRlc3Rfc3BlZWNoX2Ns
ZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTMybHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9k
YXRhcWEzNTEvYTMybHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTMz
bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvYTMzbHRlc3Rfc3BlZWNoX2NsZWFu
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzY3bHRlc3RfbXVzaWMucGNtIC4uL2RhdGFxYTM1
MS9pMzBfNjdsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF82N2x0ZXN0X211
c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzY3bHRlc3RfbXVzaWMucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfNjhsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2kzMF82OGx0ZXN0X211c2lj
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzY4bHRlc3RfbXVzaWMucGNtIC4uL2RhdGFxYTM1
MS9pNjBfNjhsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF82OWx0ZXN0X211
c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzY5bHRlc3RfbXVzaWMucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfNjlsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2k2MF82OWx0ZXN0X211c2lj
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzcwbHRlc3RfbXVzaWMucGNtIC4uL2RhdGFxYTM1
MS9pMzBfNzBsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF83MGx0ZXN0X211
c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzcwbHRlc3RfbXVzaWMucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfNzFsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2kzMF83MWx0ZXN0X211c2lj
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzcxbHRlc3RfbXVzaWMucGNtIC4uL2RhdGFxYTM1
MS9pNjBfNzFsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF83Mmx0ZXN0X211
c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzcybHRlc3RfbXVzaWMucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfNzJsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2k2MF83Mmx0ZXN0X211c2lj
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTM0bHRlc3RfbXVzaWMucGNtIC4uL2RhdGFxYTM1MS9h
MzRsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2EzNWx0ZXN0X211c2ljLnBjbSAu
Li9kYXRhcWEzNTEvYTM1bHRlc3RfbXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzZsdGVz
dF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2EzNmx0ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzczbHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzczbHRl
c3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzczbHRlc3Rfc3BlZWNo
X25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzczbHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzc0bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzc0bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzc0bHRl
c3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzc0bHRlc3Rfc3BlZWNoX25vaXN5
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzc1bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzc1bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzc1bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzc1bHRlc3Rfc3Bl
ZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzc2bHRlc3Rfc3BlZWNoX25vaXN5
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzc2bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzc2bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzc2
bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzc3bHRlc3Rfc3Bl
ZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzc3bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzc3bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEz
NTEvaTYwXzc3bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzc4
bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzc4bHRlc3Rfc3BlZWNoX25v
aXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzc4bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzc4bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvYTM3bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvYTM3bHRlc3Rfc3BlZWNo
X25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTM4bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAu
Li9kYXRhcWEzNTEvYTM4bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
YTM5bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvYTM5bHRlc3Rfc3BlZWNoX25v
aXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzc5bWlzYzIucGNtIC4uL2RhdGFxYTM1MS9p
MzBfNzltaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF83OW1pc2MyLnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzc5bWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfODBtaXNjMi5wY20g
Li4vZGF0YXFhMzUxL2kzMF84MG1pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzgwbWlz
YzIucGNtIC4uL2RhdGFxYTM1MS9pNjBfODBtaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kz
MF84MW1pc2MyLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzgxbWlzYzIucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfODFtaXNjMi5wY20gLi4vZGF0YXFhMzUxL2k2MF84MW1pc2MyLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzgybWlzYzIucGNtIC4uL2RhdGFxYTM1MS9pMzBfODJtaXNjMi5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2k2MF84Mm1pc2MyLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzgybWlz
YzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfODNtaXNjMi5wY20gLi4vZGF0YXFhMzUxL2kz
MF84M21pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzgzbWlzYzIucGNtIC4uL2RhdGFx
YTM1MS9pNjBfODNtaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF84NG1pc2MyLnBjbSAu
Li9kYXRhcWEzNTEvaTMwXzg0bWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfODRtaXNj
Mi5wY20gLi4vZGF0YXFhMzUxL2k2MF84NG1pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQw
bWlzYzIucGNtIC4uL2RhdGFxYTM1MS9hNDBtaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E0
MW1pc2MyLnBjbSAuLi9kYXRhcWEzNTEvYTQxbWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9h
NDJtaXNjMi5wY20gLi4vZGF0YXFhMzUxL2E0Mm1pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzg1cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzg1cHVyZW5iLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzg1cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzg1cHVyZW5iLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzg2cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzg2cHVy
ZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzg2cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEv
aTYwXzg2cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzg3cHVyZW5iLnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzg3cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzg3cHVyZW5i
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzg3cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
Xzg4cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzg4cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzg4cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzg4cHVyZW5iLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzg5cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzg5cHVyZW5i
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzg5cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTYw
Xzg5cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzkwcHVyZW5iLnBjbSAuLi9kYXRh
cWEzNTEvaTMwXzkwcHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzkwcHVyZW5iLnBj
bSAuLi9kYXRhcWEzNTEvaTYwXzkwcHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQzcHVy
ZW5iLnBjbSAuLi9kYXRhcWEzNTEvYTQzcHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQ0
cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvYTQ0cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
YTQ1cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvYTQ1cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzkxc2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzkxc2F3c3dlZXBf
MzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzkxc2F3c3dlZXBfMzgwXzYwLnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzkxc2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzkyc2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzkyc2F3c3dlZXBfMzgw
XzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzkyc2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzkyc2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
Xzkzc2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzkzc2F3c3dlZXBfMzgwXzYw
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzkzc2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzkzc2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk0
c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzk0c2F3c3dlZXBfMzgwXzYwLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzk0c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEz
NTEvaTYwXzk0c2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk1c2F3
c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzk1c2F3c3dlZXBfMzgwXzYwLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzk1c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEv
aTYwXzk1c2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk2c2F3c3dl
ZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzk2c2F3c3dlZXBfMzgwXzYwLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzk2c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTYw
Xzk2c2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQ2c2F3c3dlZXBfMzgw
XzYwLnBjbSAuLi9kYXRhcWEzNTEvYTQ2c2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvYTQ3c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvYTQ3c2F3c3dlZXBfMzgw
XzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQ4c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRh
cWEzNTEvYTQ4c2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk3c2lu
ZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzk3c2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzk3c2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzk3c2luZXN3ZWVwLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk4c2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTMw
Xzk4c2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzk4c2luZXN3ZWVwLnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzk4c2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk5
c2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzk5c2luZXN3ZWVwLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzk5c2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzk5c2luZXN3ZWVw
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEwMHNpbmVzd2VlcC5wY20gLi4vZGF0YXFhMzUx
L2kzMF8xMDBzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTAwc2luZXN3ZWVw
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwMHNpbmVzd2VlcC5wY20KLWRpZmYgLi4vZGF0YXFhMzUw
L2kzMF8xMDFzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTAxc2luZXN3ZWVwLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEwMXNpbmVzd2VlcC5wY20gLi4vZGF0YXFhMzUxL2k2MF8x
MDFzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTAyc2luZXN3ZWVwLnBjbSAu
Li9kYXRhcWEzNTEvaTMwXzEwMnNpbmVzd2VlcC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8x
MDJzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTAyc2luZXN3ZWVwLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvYTQ5c2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvYTQ5c2luZXN3ZWVwLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvYTUwc2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvYTUwc2lu
ZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTUxc2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEz
NTEvYTUxc2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEwM3NpbmVzd2VlcF9o
YWxmLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEwM3NpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzEwM3NpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwM3Np
bmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEwNHNpbmVzd2VlcF9oYWxm
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEwNHNpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzEwNHNpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwNHNpbmVz
d2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEwNXNpbmVzd2VlcF9oYWxmLnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzEwNXNpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzEwNXNpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwNXNpbmVzd2Vl
cF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEwNnNpbmVzd2VlcF9oYWxmLnBjbSAu
Li9kYXRhcWEzNTEvaTMwXzEwNnNpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzEwNnNpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwNnNpbmVzd2VlcF9o
YWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEwN3NpbmVzd2VlcF9oYWxmLnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzEwN3NpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzEwN3NpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwN3NpbmVzd2VlcF9oYWxm
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEwOHNpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRh
cWEzNTEvaTMwXzEwOHNpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEw
OHNpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwOHNpbmVzd2VlcF9oYWxmLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvYTUyc2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9h
NTJzaW5lc3dlZXBfaGFsZi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E1M3NpbmVzd2VlcF9oYWxm
LnBjbSAuLi9kYXRhcWEzNTEvYTUzc2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9hNTRzaW5lc3dlZXBfaGFsZi5wY20gLi4vZGF0YXFhMzUxL2E1NHNpbmVzd2VlcF9oYWxmLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEwOXNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzEwOXNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEwOXNwZWVjaG11
c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwOXNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzExMHNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzExMHNwZWVjaG11
c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExMHNwZWVjaG11c2ljLnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzExMHNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExMXNw
ZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzExMXNwZWVjaG11c2ljLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzExMXNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExMXNw
ZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExMnNwZWVjaG11c2ljLnBjbSAu
Li9kYXRhcWEzNTEvaTMwXzExMnNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzExMnNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExMnNwZWVjaG11c2ljLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExM3NwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzExM3NwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExM3NwZWVjaG11c2lj
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExM3NwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzExNHNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzExNHNwZWVjaG11c2lj
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExNHNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEz
NTEvaTYwXzExNHNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTU1c3BlZWNobXVz
aWMucGNtIC4uL2RhdGFxYTM1MS9hNTVzcGVlY2htdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUw
L2E1NnNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvYTU2c3BlZWNobXVzaWMucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9hNTdzcGVlY2htdXNpYy5wY20gLi4vZGF0YXFhMzUxL2E1N3NwZWVjaG11
c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExNXNwZWVjaG11c2ljX25iLnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzExNXNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzExNXNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExNXNwZWVjaG11c2ljX25i
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExNnNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRh
cWEzNTEvaTMwXzExNnNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEx
NnNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExNnNwZWVjaG11c2ljX25iLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExN3NwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEz
NTEvaTMwXzExN3NwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExN3Nw
ZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExN3NwZWVjaG11c2ljX25iLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExOHNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzExOHNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExOHNwZWVj
aG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExOHNwZWVjaG11c2ljX25iLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzExOXNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzExOXNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExOXNwZWVjaG11
c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExOXNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzEyMHNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEy
MHNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEyMHNwZWVjaG11c2lj
X25iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEyMHNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvYTU4c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9hNThzcGVlY2htdXNp
Y19uYi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E1OXNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRh
cWEzNTEvYTU5c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjBzcGVlY2ht
dXNpY19uYi5wY20gLi4vZGF0YXFhMzUxL2E2MHNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzEyMXNwZWVjaG9mZmljZTBkQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMjFz
cGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTIxc3BlZWNob2ZmaWNl
MGRCLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEyMXNwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYgLi4v
ZGF0YXFhMzUwL2kzMF8xMjJzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTIy
c3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEyMnNwZWVjaG9mZmlj
ZTBkQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMjJzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfMTIzc3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEy
M3NwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMjNzcGVlY2hvZmZp
Y2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTIzc3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzEyNHNwZWVjaG9mZmljZTBkQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8x
MjRzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTI0c3BlZWNob2Zm
aWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEyNHNwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2kzMF8xMjVzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pMzBf
MTI1c3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEyNXNwZWVjaG9m
ZmljZTBkQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMjVzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMTI2c3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzEyNnNwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMjZzcGVlY2hv
ZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTI2c3BlZWNob2ZmaWNlMGRCLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvYTYxc3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvYTYxc3Bl
ZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTYyc3BlZWNob2ZmaWNlMGRCLnBj
bSAuLi9kYXRhcWEzNTEvYTYyc3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
YTYzc3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvYTYzc3BlZWNob2ZmaWNlMGRCLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEyN3NwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4vZGF0
YXFhMzUxL2kzMF8xMjdzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMTI3c3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEyN3NwZWVjaF9h
bmRfbWlzY19OQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMjhzcGVlY2hfYW5kX21pc2Nf
TkIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTI4c3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzEyOHNwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4vZGF0YXFhMzUxL2k2
MF8xMjhzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTI5c3Bl
ZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEyOXNwZWVjaF9hbmRfbWlzY19O
Qi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMjlzcGVlY2hfYW5kX21pc2NfTkIucGNtIC4u
L2RhdGFxYTM1MS9pNjBfMTI5c3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzEzMHNwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMzBzcGVl
Y2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTMwc3BlZWNoX2FuZF9t
aXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEzMHNwZWVjaF9hbmRfbWlzY19OQi5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2kzMF8xMzFzcGVlY2hfYW5kX21pc2NfTkIucGNtIC4uL2RhdGFxYTM1
MS9pMzBfMTMxc3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEz
MXNwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMzFzcGVlY2hfYW5kX21p
c2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTMyc3BlZWNoX2FuZF9taXNjX05CLnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzEzMnNwZWVjaF9hbmRfbWlzY19OQi5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2k2MF8xMzJzcGVlY2hfYW5kX21pc2NfTkIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTMy
c3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTY0c3BlZWNoX2FuZF9t
aXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvYTY0c3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvYTY1c3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvYTY1c3Bl
ZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTY2c3BlZWNoX2FuZF9taXNj
X05CLnBjbSAuLi9kYXRhcWEzNTEvYTY2c3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzEzM3NwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8x
MzNzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTMzc3BlZWNo
X2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEzM3NwZWVjaF9hbmRfbWlzY19XQi5w
Y20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMzRzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfMTM0c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzEzNHNwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMzRzcGVlY2hf
YW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTM1c3BlZWNoX2FuZF9taXNj
X1dCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEzNXNwZWVjaF9hbmRfbWlzY19XQi5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2k2MF8xMzVzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1MS9p
NjBfMTM1c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEzNnNw
ZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMzZzcGVlY2hfYW5kX21pc2Nf
V0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTM2c3BlZWNoX2FuZF9taXNjX1dCLnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzEzNnNwZWVjaF9hbmRfbWlzY19XQi5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2kzMF8xMzdzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTM3c3Bl
ZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEzN3NwZWVjaF9hbmRf
bWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMzdzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfMTM4c3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEz
NTEvaTMwXzEzOHNwZWVjaF9hbmRfbWlzY19XQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8x
MzhzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTM4c3BlZWNoX2FuZF9t
aXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTY3c3BlZWNoX2FuZF9taXNjX1dCLnBjbSAu
Li9kYXRhcWEzNTEvYTY3c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
YTY4c3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvYTY4c3BlZWNoX2FuZF9taXNj
X1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTY5c3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9k
YXRhcWEzNTEvYTY5c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzEzOXRlc3RNNC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMzl0ZXN0TTQucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMTM5dGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEzOXRlc3RNNC5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNDB0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTQw
dGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0MHRlc3RNNC5wY20gLi4vZGF0YXFh
MzUxL2k2MF8xNDB0ZXN0TTQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTQxdGVzdE00LnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzE0MXRlc3RNNC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8x
NDF0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTQxdGVzdE00LnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzE0MnRlc3RNNC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNDJ0ZXN0TTQucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQydGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE0MnRl
c3RNNC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNDN0ZXN0TTQucGNtIC4uL2RhdGFxYTM1
MS9pMzBfMTQzdGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0M3Rlc3RNNC5wY20g
Li4vZGF0YXFhMzUxL2k2MF8xNDN0ZXN0TTQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTQ0
dGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE0NHRlc3RNNC5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2k2MF8xNDR0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTQ0dGVzdE00LnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvYTcwdGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvYTcwdGVzdE00LnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvYTcxdGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvYTcxdGVzdE00LnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvYTcydGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvYTcydGVzdE00
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0NXRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEz
NTEvaTMwXzE0NXRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0NXRlc3RN
NERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE0NXRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzE0NnRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE0NnRlc3RN
NERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0NnRlc3RNNERfcmV2LnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzE0NnRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0
N3Rlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE0N3Rlc3RNNERfcmV2LnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzE0N3Rlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE0
N3Rlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0OHRlc3RNNERfcmV2LnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzE0OHRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzE0OHRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE0OHRlc3RNNERfcmV2LnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0OXRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzE0OXRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0OXRlc3RNNERf
cmV2LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE0OXRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzE1MHRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE1MHRlc3RNNERf
cmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1MHRlc3RNNERfcmV2LnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzE1MHRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTczdGVzdE00
RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9hNzN0ZXN0TTREX3Jldi5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2E3NHRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvYTc0dGVzdE00RF9yZXYucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9hNzV0ZXN0TTREX3Jldi5wY20gLi4vZGF0YXFhMzUxL2E3NXRlc3RN
NERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE1MXRlc3RNNEQucGNtIC4uL2RhdGFx
YTM1MS9pMzBfMTUxdGVzdE00RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNTF0ZXN0TTRE
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE1MXRlc3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfMTUydGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNTJ0ZXN0TTRELnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzE1MnRlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTUydGVzdE00
RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNTN0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzE1M3Rlc3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTUzdGVzdE00RC5wY20g
Li4vZGF0YXFhMzUxL2k2MF8xNTN0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE1
NHRlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTU0dGVzdE00RC5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2k2MF8xNTR0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE1NHRlc3RNNEQucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTU1dGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2kzMF8x
NTV0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1NXRlc3RNNEQucGNtIC4uL2Rh
dGFxYTM1MS9pNjBfMTU1dGVzdE00RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNTZ0ZXN0
TTRELnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE1NnRlc3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMTU2dGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNTZ0ZXN0TTRELnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvYTc2dGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2E3NnRlc3RNNEQucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hNzd0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvYTc3dGVzdE00
RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E3OHRlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9hNzh0
ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE1N3Rlc3RmaWxlLnBjbSAuLi9kYXRh
cWEzNTEvaTMwXzE1N3Rlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1N3Rlc3Rm
aWxlLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE1N3Rlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzE1OHRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE1OHRlc3RmaWxlLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1OHRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE1
OHRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE1OXRlc3RmaWxlLnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzE1OXRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1OXRl
c3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE1OXRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzE2MHRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE2MHRlc3RmaWxlLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE2MHRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTYw
XzE2MHRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE2MXRlc3RmaWxlLnBjbSAu
Li9kYXRhcWEzNTEvaTMwXzE2MXRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE2
MXRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE2MXRlc3RmaWxlLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzE2MnRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE2MnRlc3RmaWxl
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE2MnRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEv
aTYwXzE2MnRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTc5dGVzdGZpbGUucGNtIC4u
L2RhdGFxYTM1MS9hNzl0ZXN0ZmlsZS5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E4MHRlc3RmaWxl
LnBjbSAuLi9kYXRhcWEzNTEvYTgwdGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hODF0
ZXN0ZmlsZS5wY20gLi4vZGF0YXFhMzUxL2E4MXRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzE2M3RvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTYzdG9uZV9jaXNjby5w
Y20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNjN0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEv
aTYwXzE2M3RvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTY0dG9uZV9jaXNj
by5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNjR0b25lX2Npc2NvLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzE2NHRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTY0dG9uZV9jaXNjby5w
Y20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNjV0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzE2NXRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTY1dG9uZV9jaXNj
by5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNjV0b25lX2Npc2NvLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzE2NnRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTY2dG9uZV9jaXNjby5w
Y20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNjZ0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEv
aTYwXzE2NnRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTY3dG9uZV9jaXNj
by5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNjd0b25lX2Npc2NvLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzE2N3RvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTY3dG9uZV9jaXNjby5w
Y20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNjh0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzE2OHRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTY4dG9uZV9jaXNj
by5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNjh0b25lX2Npc2NvLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvYTgydG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2E4MnRvbmVfY2lzY28ucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9hODN0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEvYTgzdG9uZV9jaXNj
by5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E4NHRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9h
ODR0b25lX2Npc2NvLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE2OXRvbmVfY2lzY29fbG9u
Zy5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNjl0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMTY5dG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE2OXRv
bmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNzB0b25lX2Npc2NvX2xv
bmcucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTcwdG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzE3MHRvbmVfY2lzY29fbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNzB0
b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTcxdG9uZV9jaXNjb19s
b25nLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE3MXRvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4v
ZGF0YXFhMzUwL2k2MF8xNzF0b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTcx
dG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE3MnRvbmVfY2lzY29f
bG9uZy5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNzJ0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMTcydG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE3
MnRvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNzN0b25lX2Npc2Nv
X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTczdG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzE3M3RvbmVfY2lzY29fbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF8x
NzN0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTc0dG9uZV9jaXNj
b19sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE3NHRvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2k2MF8xNzR0b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBf
MTc0dG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTg1dG9uZV9jaXNjb19s
b25nLnBjbSAuLi9kYXRhcWEzNTEvYTg1dG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvYTg2dG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRhcWEzNTEvYTg2dG9uZV9jaXNjb19s
b25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTg3dG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRh
cWEzNTEvYTg3dG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE3NXdi
X2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTc1d2JfY29udHNwZWVjaC5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2k2MF8xNzV3Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvaTYw
XzE3NXdiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTc2d2JfY29udHNw
ZWVjaC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNzZ3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzE3NndiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTc2d2Jf
Y29udHNwZWVjaC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNzd3Yl9jb250c3BlZWNoLnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzE3N3diX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMTc3d2JfY29udHNwZWVjaC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNzd3Yl9jb250c3Bl
ZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE3OHdiX2NvbnRzcGVlY2gucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfMTc4d2JfY29udHNwZWVjaC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8x
Nzh3Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE3OHdiX2NvbnRzcGVlY2gucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTc5d2JfY29udHNwZWVjaC5wY20gLi4vZGF0YXFhMzUx
L2kzMF8xNzl3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE3OXdiX2Nv
bnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTc5d2JfY29udHNwZWVjaC5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2kzMF8xODB3Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE4
MHdiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTgwd2JfY29udHNwZWVj
aC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xODB3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvYTg4d2JfY29udHNwZWVjaC5wY20gLi4vZGF0YXFhMzUxL2E4OHdiX2NvbnRzcGVlY2gu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hODl3Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEv
YTg5d2JfY29udHNwZWVjaC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E5MHdiX2NvbnRzcGVlY2gu
cGNtIC4uL2RhdGFxYTM1MS9hOTB3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzE4MXdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE4MXdiX3Nw
ZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE4MXdiX3NwZWVjaF9v
ZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE4MXdiX3NwZWVjaF9vZmZpY2UyNWRiLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE4MndiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzE4MndiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzE4MndiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE4Mndi
X3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE4M3diX3NwZWVj
aF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE4M3diX3NwZWVjaF9vZmZpY2UyNWRi
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE4M3diX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzE4M3diX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzE4NHdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE4
NHdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE4NHdiX3Nw
ZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE4NHdiX3NwZWVjaF9vZmZpY2Uy
NWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE4NXdiX3NwZWVjaF9vZmZpY2UyNWRiLnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzE4NXdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzE4NXdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTYw
XzE4NXdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE4Nndi
X3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE4NndiX3NwZWVjaF9vZmZp
Y2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE4NndiX3NwZWVjaF9vZmZpY2UyNWRi
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE4NndiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvYTkxd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9hOTF3
Yl9zcGVlY2hfb2ZmaWNlMjVkYi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E5MndiX3NwZWVjaF9v
ZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvYTkyd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9hOTN3Yl9zcGVlY2hfb2ZmaWNlMjVkYi5wY20gLi4vZGF0YXFhMzUx
L2E5M3diX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTMwXzFEVE1G
XzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvYTMwXzFEVE1GXzE2a0h6X3Nob3J0LnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvYTYwXzFEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEv
YTYwXzFEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTMwXzJsdGVzdF9z
cGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9hMzBfMmx0ZXN0X3NwZWVjaF9ub2lzeS5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2E2MF8ybHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEz
NTEvYTYwXzJsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzBfM21p
c2MyLnBjbSAuLi9kYXRhcWEzNTEvYTMwXzNtaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E2
MF8zbWlzYzIucGNtIC4uL2RhdGFxYTM1MS9hNjBfM21pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvYTMwXzRzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9hMzBfNHNpbmVzd2VlcC5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2E2MF80c2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvYTYwXzRzaW5l
c3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzBfNXNwZWVjaG11c2ljLnBjbSAuLi9kYXRh
cWEzNTEvYTMwXzVzcGVlY2htdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E2MF81c3BlZWNo
bXVzaWMucGNtIC4uL2RhdGFxYTM1MS9hNjBfNXNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvYTMwXzZ0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEvYTMwXzZ0b25lX2Npc2NvLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvYTYwXzZ0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEvYTYw
XzZ0b25lX2Npc2NvLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTYwXzd0b25lX2Npc2NvLnBjbSAu
Li9kYXRhcWEzNTEvYTYwXzd0b25lX2Npc2NvLnBjbQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L2lzYWMvZml4L3Rlc3QvUUEvZGlmZmlTQUNQTEMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4
L3Rlc3QvUUEvZGlmZmlTQUNQTEMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
ZTM2MjliMmNhNzJhNDkwZTMxYzViNDcyZGQ5MWIzZDRkMmE4MzY3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0
L1FBL2RpZmZpU0FDUExDLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLSMhL2Jp
bi9iYXNoCi0oc2V0IC1vIGlnbmNyKSAyPi9kZXYvbnVsbCAmJiBzZXQgLW8gaWduY3I7ICMgZm9y
Y2UgYmFzaCB0byBpZ25vcmUgXHIgY2hhcmFjdGVyCi0KLUxPR0ZJTEU9bG9ncGxjLnR4dAotZWNo
byAiU1RBUlQgUExDIFRFU1QiID4gJExPR0ZJTEUKLQotT1VURElSMT0uLi9kYXRhcWFwbGNfMAot
T1VURElSMj0uLi9kYXRhcWFwbGNfMQotCi1kaWZmICRPVVRESVIxL291dHBsYzEucGNtICRPVVRE
SVIyL291dHBsYzEucGNtIAotZGlmZiAkT1VURElSMS9vdXRwbGMyLnBjbSAkT1VURElSMi9vdXRw
bGMyLnBjbSAKLWRpZmYgJE9VVERJUjEvb3V0cGxjMy5wY20gJE9VVERJUjIvb3V0cGxjMy5wY20g
Ci1kaWZmICRPVVRESVIxL291dHBsYzQucGNtICRPVVRESVIyL291dHBsYzQucGNtIAotZGlmZiAk
T1VURElSMS9vdXRwbGM1LnBjbSAkT1VURElSMi9vdXRwbGM1LnBjbSAKLWRpZmYgJE9VVERJUjEv
b3V0cGxjNi5wY20gJE9VVERJUjIvb3V0cGxjNi5wY20gCi0KLWVjaG8gRE9ORSEKLQotCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNMb25ndGVzdC50
eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDTG9uZ3Rlc3QudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWZmYzBjOTU1ZWRkMDdhYzlmMGViMDU0OGNh
ZTEwMGI2ZTAzOTcxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNMb25ndGVzdC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikg
Mj4vZGV2L251bGwgJiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNo
YXJhY3RlcgotCi1MT0dGSUxFPWxvZ05vcm1hbC50eHQKLWVjaG8gIlNUQVJUIElTQUMgVEVTVCIg
PiAkTE9HRklMRQotZWNobyA+PiAkTE9HRklMRQotCi1JU0FDPS4uL1JlbGVhc2Uva2VubnkuZXhl
Ci1JU0FDRklYRkxPQVQ9Li4vUmVsZWFzZS90ZXN0Rml4RmxvYXQuZXhlCi0KLUlORklMRVM9JChj
YXQgSW5wdXRGaWxlcy50eHQpCi1TVUJTRVQ9JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi1DSEFO
TkVMRklMRVM9JChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkKLUNIQU5ORUxMSVNUPSgkKGNhdCBDaGFu
bmVsRmlsZXMudHh0KSkKLUlORElSPS4uL2RhdGEvb3JpZwotT1VURElSPS4uL2RhdGFxYQotbWtk
aXIgLXAgJE9VVERJUgotCi1UQVJHRVRSQVRFPSgxMDAwMCAxNTAwMCAyMDAwMCAyNTAwMCAzMDAw
MCAzMjAwMCkKLSNlY2hvICR7Q0hBTk5FTEZJTEVTWzFdfQotCi1pbmRleDE9MAotaW5kZXgyPTAK
LQotZm9yIGZpbGUgaW4gJElORklMRVMgIyBsb29wIG92ZXIgYWxsIGlucHV0IGZpbGVzCi0gIGRv
Ci0gIAotICBmb3IgcmF0ZSBpbiAke1RBUkdFVFJBVEVbKl19Ci0JZG8KLQlsZXQgImluZGV4MT1p
bmRleDErMSIKLQkkSVNBQyAtSSAkcmF0ZSAtRkwgMzAgJElORElSLyIkZmlsZSIgJE9VVERJUi9p
MzBfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQyAtSSAkcmF0ZSAtRkwgNjAgJElO
RElSLyIkZmlsZSIgJE9VVERJUi9pNjBfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLSAgZG9u
ZQotICBmb3IgY2hhbm5lbCBpbiAkQ0hBTk5FTEZJTEVTCi0JZG8KLQlsZXQgImluZGV4Mj1pbmRl
eDIrMSIKLQkkSVNBQyAkSU5ESVIvJGNoYW5uZWwgJElORElSLyIkZmlsZSIgJE9VVERJUi9hJGlu
ZGV4MiIkZmlsZSIgPj4gJExPR0ZJTEUKLSAgZG9uZQotCi1kb25lCi0KLWluZGV4MT0wCi0KLWZv
ciBmaWxlIGluICRTVUJTRVQgIyBsb29wIG92ZXIgdGhlIHN1YnNldCBvZiBpbnB1dCBmaWxlcwot
ICBkbwotCWxldCAiaW5kZXgxPWluZGV4MSsxIgotCSRJU0FDICRJTkRJUi8ke0NIQU5ORUxMSVNU
WzBdfSAtRkwgMzAgLUZJWEVEX0ZMICRJTkRJUi8iJGZpbGUiICRPVVRESVIvYTMwXyRpbmRleDEi
JGZpbGUiID4+ICRMT0dGSUxFCi0JJElTQUMgJElORElSLyR7Q0hBTk5FTExJU1RbMF19IC1GTCA2
MCAtRklYRURfRkwgJElORElSLyIkZmlsZSIgJE9VVERJUi9hNjBfJGluZGV4MSIkZmlsZSIgPj4g
JExPR0ZJTEUKLWRvbmUKLQotbGV0ICJpbmRleDE9aW5kZXgxKzEiCQotICRJU0FDICRJTkRJUi8k
e0NIQU5ORUxMSVNUWzBdfSAtSU5JVFJBVEUgMjUwMDAgLUZMIDMwICRJTkRJUi8iJGZpbGUiICRP
VVRESVIvYTYwXyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxFCi0KLSMgUnVuIGZhdWx0IHRlc3QK
LQotIy4vcnVuaVNBQ2ZhdWx0LnR4dAotCi1lY2hvIERPTkUhCi0KLQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDTkIudHh0IGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ05CLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjA1NTk1Y2MwNGZjYTYxOTI0YjliYTdjYzdjYWVmYjk2ZDAyYTAzOC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9m
aXgvdGVzdC9RQS9ydW5pU0FDTkIudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
IyEvYmluL2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsg
IyBmb3JjZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIKLQotTE9HRklMRT1sb2dOQi50eHQK
LWVjaG8gIlNUQVJUIE5BUlJPV0JBTkQgVEVTVCIgPiAkTE9HRklMRQotZWNobyA+PiAkTE9HRklM
RQotCi1JU0FDPS4uL1JlbGVhc2Uva2VubnkuZXhlCi1JU0FDRklYRkxPQVQ9Li4vUmVsZWFzZS90
ZXN0Rml4RmxvYXQuZXhlCi0KLUlORklMRVM9JChjYXQgSW5wdXRGaWxlcy50eHQpCi1TVUJTRVQ9
JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi1DSEFOTkVMRklMRVM9JChjYXQgQ2hhbm5lbEZpbGVz
LnR4dCkKLUNIQU5ORUxMSVNUPSgkKGNhdCBDaGFubmVsRmlsZXMudHh0KSkKLUlORElSPS4uL2Rh
dGEvb3JpZwotT1VURElSPS4uL2RhdGFxYU5CCi1ta2RpciAtcCAkT1VURElSCi0KLVRBUkdFVFJB
VEU9KDEwMDAwIDE1MDAwIDIwMDAwIDI1MDAwIDMwMDAwIDMyMDAwKQotI2VjaG8gJHtDSEFOTkVM
RklMRVNbMV19Ci0KLWluZGV4MT0wCi1pbmRleDI9MAotCi0jIE5hcnJvd2JhbmQgSW50ZXJmYWNl
cwotCi1mb3IgZmlsZSBpbiAkU1VCU0VUICMgbG9vcCBvdmVyIGFsbCBpbnB1dCBmaWxlcwotICBk
bwotICBmb3IgcmF0ZSBpbiAke1RBUkdFVFJBVEVbKl19Ci0JZG8KLQlsZXQgImluZGV4MT1pbmRl
eDErMSIKLSAJJElTQUMgJHJhdGUgLUZMIDMwIC1OQiAxICRJTkRJUi8iJGZpbGUiICRPVVRESVIv
bmIxMzBfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQyAkcmF0ZSAtRkwgNjAgLU5C
IDEgJElORElSLyIkZmlsZSIgJE9VVERJUi9uYjE2MF8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklM
RQotCSRJU0FDICRyYXRlIC1GTCAzMCAtTkIgMiAkSU5ESVIvIiRmaWxlIiAkT1VURElSL25iMjMw
XyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxFCi0JJElTQUMgJHJhdGUgLUZMIDYwIC1OQiAyICRJ
TkRJUi8iJGZpbGUiICRPVVRESVIvbmIyNjBfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkk
SVNBQyAkcmF0ZSAtRkwgMzAgLU5CIDIgLVBMIDEwICRJTkRJUi8iJGZpbGUiICRPVVRESVIvbmIy
cGxjMzBfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQyAkcmF0ZSAtRkwgNjAgLU5C
IDIgLVBMIDEwICRJTkRJUi8iJGZpbGUiICRPVVRESVIvbmIycGxjNjBfJGluZGV4MSIkZmlsZSIg
Pj4gJExPR0ZJTEUKLSAgZG9uZQotCi1kb25lCi0KLWVjaG8gRE9ORSEKLQotCi0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNQTEMudHh0IGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ1BMQy50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZiZWU2ZjdjM2YzMjM4NjEwNzI4ZTI3NDkyMWY2Mjg3OGE0NThlOTYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ1BMQy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMyAr
MCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwgJiYgc2V0IC1v
IGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3RlcgotCi1MT0dGSUxFPWxv
Z3BsYy50eHQKLWVjaG8gIlNUQVJUIFBMQyBURVNUIiA+ICRMT0dGSUxFCi0KLUlTQUM9Li4vUmVs
ZWFzZS9rZW5ueS5leGUKLQotSU5ESVI9Li4vZGF0YS9vcmlnCi1PVVRESVI9Li4vZGF0YXFhcGxj
XzAKLW1rZGlyIC1wICRPVVRESVIKLQotJElTQUMgMTIwMDAgLVBMIDE1ICRJTkRJUi9zcGVlY2ht
dXNpYy5wY20gJE9VVERJUi9vdXRwbGMxLnBjbSAKLSRJU0FDIDIwMDAwIC1QTCAxNSAkSU5ESVIv
c3BlZWNobXVzaWMucGNtICRPVVRESVIvb3V0cGxjMi5wY20gCi0kSVNBQyAzMjAwMCAtUEwgMTUg
JElORElSL3NwZWVjaG11c2ljLnBjbSAkT1VURElSL291dHBsYzMucGNtIAotJElTQUMgMTIwMDAg
LVBMIDE1ICRJTkRJUi90b25lX2Npc2NvLnBjbSAkT1VURElSL291dHBsYzQucGNtIAotJElTQUMg
MjAwMDAgLVBMIDE1ICRJTkRJUi90b25lX2Npc2NvLnBjbSAkT1VURElSL291dHBsYzUucGNtIAot
JElTQUMgMzIwMDAgLVBMIDE1ICRJTkRJUi90b25lX2Npc2NvLnBjbSAkT1VURElSL291dHBsYzYu
cGNtIAotCi1lY2hvIERPTkUhCi0KLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9m
aXgvdGVzdC9RQS9ydW5pU0FDUmF0ZS50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9R
QS9ydW5pU0FDUmF0ZS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NDAzZTA5
OWQ2NTBmYjc1ZWIzNjgyNzRiYmUxMzlmOWQ0OTgyZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVu
aVNBQ1JhdGUudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotIyEvYmluL2Jhc2gK
LShzZXQgLW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBiYXNo
IHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIKLQotTE9HRz1sb2dnUmF0ZS50eHQKLU9VVERJUj0uLi9k
YXRhcWFSYXRlCi1ta2RpciAtcCAkT1VURElSCi0KLS4uL1JlbGVhc2Uva2VubnkuZXhlIDEzMDAw
IC1GSVhFRF9GTCAtRkwgMzAgLU1BWCAxMDAgLi4vZGF0YS9vcmlnL3Nhd3N3ZWVwXzM4MF82MC5w
Y20gJE9VVERJUi9vdXRfbmFwaV8xLnBjbSA+ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAu
Li9kYXRhL29yaWcvYm90dGxlbmVja3MudHh0IC1GSVhFRF9GTCAtRkwgMzAgLU1BWFJBVEUgMzIw
MDAgLi4vZGF0YS9vcmlnL3Nhd3N3ZWVwXzM4MF82MC5wY20gJE9VVERJUi9vdXRfbmFwaV8yLnBj
bSA+PiAkTE9HRwotLi4vUmVsZWFzZS9rZW5ueS5leGUgMTMwMDAgLUZJWEVEX0ZMIC1GTCAzMCAt
TUFYIDEwMCAuLi9kYXRhL29yaWcvc2F3c3dlZXBfMzgwXzYwLnBjbSAkT1VURElSL291dF9uYXBp
XzMucGNtID4+ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAuLi9kYXRhL29yaWcvYm90dGxl
bmVja3MudHh0IC1GSVhFRF9GTCAtRkwgMzAgLU1BWFJBVEUgMzIwMDAgLi4vZGF0YS9vcmlnL3Nh
d3N3ZWVwXzM4MF82MC5wY20gJE9VVERJUi9vdXRfbmFwaV80LnBjbSA+PiAkTE9HRwotLi4vUmVs
ZWFzZS9rZW5ueS5leGUgMTMwMDAgLUZJWEVEX0ZMIC1GTCA2MCAtTUFYIDEwMCAuLi9kYXRhL29y
aWcvc2F3c3dlZXBfMzgwXzYwLnBjbSAkT1VURElSL291dF9uYXBpXzUucGNtID4+ICRMT0dHCi0u
Li9SZWxlYXNlL2tlbm55LmV4ZSAuLi9kYXRhL29yaWcvYm90dGxlbmVja3MudHh0IC1GSVhFRF9G
TCAtRkwgNjAgLU1BWFJBVEUgMzIwMDAgLi4vZGF0YS9vcmlnL3Nhd3N3ZWVwXzM4MF82MC5wY20g
JE9VVERJUi9vdXRfbmFwaV82LnBjbSA+PiAkTE9HRwotLi4vUmVsZWFzZS9rZW5ueS5leGUgMTMw
MDAgLUlOSVRfUkFURSAzMjAwMCAtRklYRURfRkwgLUZMIDYwIC1NQVggMTAwIC4uL2RhdGEvb3Jp
Zy9zYXdzd2VlcF8zODBfNjAucGNtICRPVVRESVIvb3V0X25hcGlfNy5wY20gPj4gJExPR0cKLQot
Li4vUmVsZWFzZS9rZW5ueS5leGUgMTMwMDAgLUZJWEVEX0ZMIC1GTCAzMCAtTUFYIDEwMCAuLi9k
YXRhL29yaWcvbG9uZ3NwZWVjaC5wY20gJE9VVERJUi9vdXRfbmFwaV8xMS5wY20gPj4gJExPR0cK
LS4uL1JlbGVhc2Uva2VubnkuZXhlIC4uL2RhdGEvb3JpZy9ib3R0bGVuZWNrcy50eHQgLUZJWEVE
X0ZMIC1GTCAzMCAtTUFYUkFURSAzMjAwMCAuLi9kYXRhL29yaWcvbG9uZ3NwZWVjaC5wY20gJE9V
VERJUi9vdXRfbmFwaV8xMi5wY20gPj4gJExPR0cKLS4uL1JlbGVhc2Uva2VubnkuZXhlIDEzMDAw
IC1GSVhFRF9GTCAtRkwgMzAgLU1BWCAxMDAgLi4vZGF0YS9vcmlnL2xvbmdzcGVlY2gucGNtICRP
VVRESVIvb3V0X25hcGlfMTMucGNtID4+ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAuLi9k
YXRhL29yaWcvYm90dGxlbmVja3MudHh0IC1GSVhFRF9GTCAtRkwgMzAgLU1BWFJBVEUgMzIwMDAg
Li4vZGF0YS9vcmlnL2xvbmdzcGVlY2gucGNtICRPVVRESVIvb3V0X25hcGlfMTQucGNtID4+ICRM
T0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAxMzAwMCAtRklYRURfRkwgLUZMIDYwIC1NQVggMTAw
IC4uL2RhdGEvb3JpZy9sb25nc3BlZWNoLnBjbSAkT1VURElSL291dF9uYXBpXzE1LnBjbSA+PiAk
TE9HRwotLi4vUmVsZWFzZS9rZW5ueS5leGUgLi4vZGF0YS9vcmlnL2JvdHRsZW5lY2tzLnR4dCAt
RklYRURfRkwgLUZMIDYwIC1NQVhSQVRFIDMyMDAwIC4uL2RhdGEvb3JpZy9sb25nc3BlZWNoLnBj
bSAkT1VURElSL291dF9uYXBpXzE2LnBjbSA+PiAkTE9HRwotLi4vUmVsZWFzZS9rZW5ueS5leGUg
MTMwMDAgLUlOSVRfUkFURSAzMjAwMCAtRklYRURfRkwgLUZMIDYwIC1NQVggMTAwIC4uL2RhdGEv
b3JpZy9sb25nc3BlZWNoLnBjbSAkT1VURElSL291dF9uYXBpXzE3LnBjbSA+PiAkTE9HRwotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDZmF1bHQudHh0
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ2ZhdWx0LnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRkOTQ3OGZkNDliZmY1MTAzY2Q0MmFjNDU5ZWExYzhi
YTRlODczOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDZmF1bHQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNDAgKzAsMCBAQAotIyEvYmluL2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9u
dWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIK
LQotTE9HRklMRT1sb2dmYXVsdC50eHQKLWVjaG8gIlNUQVJUIEZBVUxUIFRFU1QiID4gJExPR0ZJ
TEUKLQotSVNBQz0uLi9SZWxlYXNlL2tlbm55LmV4ZQotSVNBQ0ZJWEZMT0FUPS4uL1JlbGVhc2Uv
dGVzdEZpeEZsb2F0LmV4ZQotCi1JTkZJTEVTPSQoY2F0IElucHV0RmlsZXMudHh0KQotU1VCU0VU
PSQoY2F0IElucHV0RmlsZXNGZXcudHh0KQotQ0hBTk5FTEZJTEVTPSQoY2F0IENoYW5uZWxGaWxl
cy50eHQpCi1DSEFOTkVMTElTVD0oJChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkpCi1JTkRJUj0uLi9k
YXRhL29yaWcKLU9VVERJUj0uLi9kYXRhcWFmdAotbWtkaXIgLXAgJE9VVERJUgotCi1UQVJHRVRS
QVRFPSgxMDAwMCAxNTAwMCAyMDAwMCAyNTAwMCAzMDAwMCAzMjAwMCkKLUZBVUxUVEVTVD0oMSAy
IDMgNCA1IDYgNyA5KQotCi1pbmRleDE9MAotCi1maWxlPXdiX2NvbnRzcGVlY2gucGNtCi0KLSMg
RmF1bHQgdGVzdAotZm9yIHRlc3RuciBpbiAke0ZBVUxUVEVTVFsqXX0KLSAgIGRvCi0JJElTQUMg
MzIwMDAgLUYgJHRlc3RuciAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2Z0JHRlc3RuciIkZmlsZSIg
Pj4gJExPR0ZJTEUKLWRvbmUKLQotIyBGYXVsdCB0ZXN0IG51bWJlciAxMCwgZXJyb3IgaW4gYml0
c3RyZWFtCi0gJElTQUMgMzIwMDAgLUYgMTAgJElORElSLyIkZmlsZSIgJE9VVERJUi9mdDEwXyIk
ZmlsZSIgPj4gJExPR0ZJTEUKLSAkSVNBQyAzMjAwMCAtRiAxMCAtUEwgMTAgJElORElSLyIkZmls
ZSIgJE9VVERJUi9mdDEwcGxjXyIkZmlsZSIgPj4gJExPR0ZJTEUKLSAkSVNBQyAzMjAwMCAtRiAx
MCAtTkIgMSAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2Z0MTBuYjFfIiRmaWxlIiA+PiAkTE9HRklM
RQotICRJU0FDIDMyMDAwIC1GIDEwIC1OQiAyIC1QTCAxMCAkSU5ESVIvIiRmaWxlIiAkT1VURElS
L2Z0MTBuYjJfIiRmaWxlIiA+PiAkTE9HRklMRQotCi1lY2hvIERPTkUhCi0KLQotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDZml4ZmxvYXQudHh0IGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ2ZpeGZsb2F0LnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzllMDJkZjJlOWYzMzY2MDI1NWU2MmU0ZjZhNjJjMGFl
ZTExNTYxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDZml4ZmxvYXQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNDcgKzAsMCBAQAotIyEvYmluL2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rl
di9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0
ZXIKLQotTE9HRklMRT1sb2dmeGZsLnR4dAotZWNobyAiU1RBUlQgRklYLUZMT0FUIFRFU1QiID4g
JExPR0ZJTEUKLQotCi1JU0FDRklYRkxPQVQ9Li4vdGVzdEZpeEZsb2F0LmV4ZQotCi1JTkZJTEVT
PSQoY2F0IElucHV0RmlsZXMudHh0KQotU1VCU0VUPSQoY2F0IElucHV0RmlsZXNGZXcudHh0KQot
Q0hBTk5FTEZJTEVTPSQoY2F0IENoYW5uZWxGaWxlcy50eHQpCi1DSEFOTkVMTElTVD0oJChjYXQg
Q2hhbm5lbEZpbGVzLnR4dCkpCi1JTkRJUj0uLi9kYXRhL29yaWcKLU9VVERJUj0uLi9kYXRhcWFm
eGZsCi1ta2RpciAtcCAkT1VURElSCi0KLWluZGV4MT0wCi0KLWZvciBmaWxlIGluICRJTkZJTEVT
ICMgbG9vcCBvdmVyIGFsbCBpbnB1dCBmaWxlcwotICBkbwotICAKLSAgZm9yIGNoYW5uZWwgaW4g
JENIQU5ORUxGSUxFUwotCWRvCi0JbGV0ICJpbmRleDE9aW5kZXgxKzEiCi0KLQkkSVNBQ0ZJWEZM
T0FUICRJTkRJUi8kY2hhbm5lbCAtbSAxIC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9mbGZ4
JGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5l
bCAtbSAyIC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9meGZsJGluZGV4MSIkZmlsZSIgPj4g
JExPR0ZJTEUKLSAgZG9uZQotCi1kb25lCi0KLWluZGV4MT0wCi0KLWZvciBmaWxlIGluICRTVUJT
RVQgIyBsb29wIG92ZXIgdGhlIHN1YnNldCBvZiBpbnB1dCBmaWxlcwotICBkbwotCWxldCAiaW5k
ZXgxPWluZGV4MSsxIgotCSRJU0FDRklYRkxPQVQgJElORElSLyRjaGFubmVsIC1tIDEgLU5CIDEg
JElORElSLyIkZmlsZSIgJE9VVERJUi9mbGZ4bmIxXyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxF
Ci0JJElTQUNGSVhGTE9BVCAkSU5ESVIvJGNoYW5uZWwgLW0gMiAtTkIgMSAkSU5ESVIvIiRmaWxl
IiAkT1VURElSL2Z4ZmxuYjFfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJWEZM
T0FUICRJTkRJUi8kY2hhbm5lbCAtbSAxIC1OQiAyIC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJ
Ui9mbGZ4bmIyXyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxFCi0JJElTQUNGSVhGTE9BVCAkSU5E
SVIvJGNoYW5uZWwgLW0gMiAtTkIgMiAtUExDICRJTkRJUi8iJGZpbGUiICRPVVRESVIvZnhmbG5i
Ml8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotZG9uZQotCi1lY2hvIERPTkUhCi0KLQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9tYWluL3NvdXJjZS9lbnRyb3B5X2NvZGluZy5j
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi9zb3VyY2UvZW50cm9weV9jb2RpbmcuYwppbmRleCAy
ODc2N2FmYzYzM2MwOWVlYzc1YWQwOGUyY2JmNzE2OThiNDExNjQwLi42NjkyYTUxOWNhOTdjMzAy
ZDdhZjVhMGRlYjNiZDU1ODY5MjhlY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9t
YWluL3NvdXJjZS9lbnRyb3B5X2NvZGluZy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4v
c291cmNlL2VudHJvcHlfY29kaW5nLmMKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGljIHZvaWQgRmlu
ZEludkFyU3BlYyhjb25zdCBpbnQxNl90KiBBUkNvZWZRMTIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGludDMyX3QgZ2FpblExMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCogQ3VydmVRMTYpIHsKICAgaW50MzJfdCBDb3JyUTExW0FSX09SREVSICsgMV07Ci0g
IGludDMyX3Qgc3VtLCB0bXBHYWluOworICBpbnQ2NF90IHN1bSwgdG1wR2FpbjsKICAgaW50MzJf
dCBkaWZmUTE2W0ZSQU1FU0FNUExFUyAvIDhdOwogICBjb25zdCBpbnQxNl90KiBDU19wdHJROTsK
ICAgaW50IGssIG47CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9tYWluL3Rlc3QvUUEv
cnVuaVNBQ0xvbmd0ZXN0LnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9ydW5p
U0FDTG9uZ3Rlc3QudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjA1MjI0YTBl
Y2MyNTZhZTExNmE3ZThlOTc0NGU3YTAwNTBkYTZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9ydW5p
U0FDTG9uZ3Rlc3QudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDMzICswLDAgQEAKLSMhL2Jpbi9i
YXNoCi0oc2V0IC1vIGlnbmNyKSAyPi9kZXYvbnVsbCAmJiBzZXQgLW8gaWduY3I7ICMgZm9yY2Ug
YmFzaCB0byBpZ25vcmUgXHIgY2hhcmFjdGVyCi0KLQotCi1pZiAgWyAiJDEiID0gIng2NCIgXSB8
fCBbICIkMiIgPSAieDY0IiBdIHx8IFsgIiQjIiAtZXEgMCBdCi0gICAgdGhlbgotICAgIFBMQVRG
T1JNPV9YNjQKLSAgICBJU0FDPS4uL3g2NC9SZWxlYXNlL1JlbGVhc2VUZXN0LUFQSV8yMDA1LmV4
ZQotZWxpZiBbICIkMSIgPSAiTElOVVgiIF0gfHwgWyAiJDIiID0gIkxJTlVYIiBdCi0gICAgdGhl
bgotICAgIFBMQVRGT1JNPV9saW51eAotICAgIElTQUM9Li4vUmVsZWFzZVRlc3QtQVBJL2lzYWNz
d3Rlc3QKLWVsc2UKLSAgICBQTEFURk9STT1fMjAwNQotICAgIElTQUM9Li4vd2luMzIvUmVsZWFz
ZS9SZWxlYXNlVGVzdC1BUElfMjAwNS5leGUKLWZpCi0KLWlmICBbICIkIyIgLWVxIDAgXSB8fCBb
ICIkMSIgPSAiYWxsIiBdIHx8IFsgIiQxIiA9ICJ3YiIgXQotICAgIHRoZW4KLSAgICBMT0dGSUxF
PWxvZ05vcm1hbCIkUExBVEZPUk0iLnR4dAotICAgIGVjaG8gIlNUQVJUIElTQUMgV0IgVEVTVCIg
PiAkTE9HRklMRQotICAgIGVjaG8gPj4gJExPR0ZJTEUKLQotICAgIElORklMRVM9JChjYXQgSW5w
dXRGaWxlcy50eHQpCi0gICAgU1VCU0VUPSQoY2F0IElucHV0RmlsZXNGZXcudHh0KQotICAgIENI
QU5ORUxGSUxFUz0kKGNhdCBDaGFubmVsRmlsZXMudHh0KQotICAgIENIQU5ORUxMSVNUPSgkKGNh
dCBDaGFubmVsRmlsZXMudHh0KSkKLSAgICBJTkRJUj0uLi9kYXRhL29yaWcKLSAgICBPVVRESVI9
Li4vZGF0YXFhIiRQTEFURk9STSIKLSAgICBta2RpciAtcCAkT1VURElSCi0gICAgcm0gLWYgJE9V
VERJUi8qCi0gICAgCi0gICAgaWR4PTAKLSAgICBSQVRFPTEwMDAwCi0gICAgRlJBTUVTSVpFPTMw
Ci0gICAgCi0KLSAgICBmb3IgZmlsZSBpbiAkSU5GSUxFUyAjIGxvb3Agb3ZlciBhbGwgaW5wdXQg
ZmlsZXMKLSAgICAgIGRvCi0gICAgICAKLSAgICAgIGVjaG8gIklucHV0IGZpbGU6ICIgJGZpbGUK
LSAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotICAgICAg
ZWNobyAiSW5zdGFudGFuZW91cyB3aXRoIFJBVEUgIiAkUkFURSAiLCBhbmQgRnJhbWUtc2l6ZSAi
ICRGUkFNRVNJWkUKLSAgICAgICRJU0FDIC1JIC1CICRSQVRFIC1GTCAkRlJBTUVTSVpFIC1GUyAx
NiAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2lfIiRGUkFNRVNJWkUiXyIkUkFURSJfIiRmaWxlIiA+
PiAkTE9HRklMRQotICAgICAgZWNobwotICAgICAgCi0gICAgICBuYW1lPSIke0NIQU5ORUxMSVNU
WyRpZHhdfSIKLSAgICAgIGVjaG8gIkFkYXB0aXZlIHdpdGggY2hhbm5lbCBmaWxlOiAiICRuYW1l
IAotICAgICAgCi0gICAgICAkSVNBQyAtQiAkSU5ESVIvJHtDSEFOTkVMTElTVFskaWR4XX0gLUZT
IDE2ICRJTkRJUi8iJGZpbGUiICRPVVRESVIvYV8ke25hbWUlLip9XyIkZmlsZSIgPj4gJExPR0ZJ
TEUKLSAgICAgIAotICAgICAgZWNobwotICAgICAgZWNobwotICAgICAgCi0jICAgICBhbHRlcm5h
dGUgYmV0d2VlbiAzMCAmIDYwIG1zLgotICAgICAgaWYgWyAkRlJBTUVTSVpFIC1lcSAzMCBdCi0J
ICB0aGVuCi0JICBGUkFNRVNJWkU9NjAKLSAgICAgIGVsc2UKLQkgIEZSQU1FU0laRT0zMAotICAg
ICAgZmkKLSAgICAgIAotIyAgICAgcmF0ZSBiZXR3ZWVuIDEwMDAwIHRvIDMyMDAwIGJpdHMvc2Vj
Ci0gICAgICBpZiBbICRSQVRFIC1sZSAzMDAwMCBdCi0JICB0aGVuCi0JICBsZXQgIlJBVEU9UkFU
RSsyMDAwIgotICAgICAgZWxzZQotCSAgbGV0ICJSQVRFPTEwMDAwIgotICAgICAgZmkKLSAgICAg
IAotIyAgICAgdGhlcmUgYXJlIG9ubHkgdGhyZWUgY2hhbm5lbCBmaWxlCi0gICAgICBpZiBbICRp
ZHggLWdlIDIgXTsgdGhlbgotCSAgaWR4PTAKLSAgICAgIGVsc2UKLQkgIGxldCAiaWR4PWlkeCsx
IgotICAgICAgZmkKLSAgICAgIAotICAgIGRvbmUKLQotICAgIGlkeD0wCi0gICAgCi0jICAgbG9v
cCBvdmVyIHRoZSBzdWJzZXQgb2YgaW5wdXQgZmlsZXMKLSAgICBmb3IgZmlsZSBpbiAkU1VCU0VU
IAotICAgICAgZG8KLSAgICAgIAotICAgICAgaWYgWyAkaWR4IC1lcSAwIF07IHRoZW4KLQkgICRJ
U0FDIC1CICRJTkRJUi8ke0NIQU5ORUxMSVNUWzBdfSAtRkwgMzAgLUZJWEVEX0ZMIC1GUyAxNiAk
SU5ESVIvIiRmaWxlIiAkT1VURElSL2EzMF8iJGZpbGUiID4+ICRMT0dGSUxFCi0JICBpZHg9MQot
ICAgICAgZWxzZQotCSAgJElTQUMgLUIgJElORElSLyR7Q0hBTk5FTExJU1RbMF19IC1GTCA2MCAt
RklYRURfRkwgLUZTIDE2ICRJTkRJUi8iJGZpbGUiICRPVVRESVIvYTYwXyIkZmlsZSIgPj4gJExP
R0ZJTEUKLQkgIGlkeD0wCi0gICAgICBmaQotICAgIGRvbmUKLQotICAgICRJU0FDIC1CICRJTkRJ
Ui8ke0NIQU5ORUxMSVNUWzBdfSAtSU5JVFJBVEUgMjUwMDAgLUZMIDMwIC1GUyAxNiAkSU5ESVIv
IiRmaWxlIiAkT1VURElSL2E2MF9Jbml0MjVrYnBzXyIkZmlsZSIgPj4gJExPR0ZJTEUKLQotICAg
IGVjaG8KLSAgICBlY2hvIFdJREVCQU5EIERPTkUhCi0gICAgZWNobwotICAgIGVjaG8KLWZpCi0K
LWlmICBbICIkIyIgLWVxIDAgXSB8fCBbICIkMSIgPSAiYWxsIiBdIHx8IFsgIiQxIiA9ICJzd2Ii
IF0KLSAgICB0aGVuCi0KLSAgICBMT0dGSUxFPWxvZ05vcm1hbF9TV0IiJFBMQVRGT1JNIi50eHQK
LSAgICBlY2hvICJTVEFSVCBJU0FDIFNXQiBURVNUIiA+ICRMT0dGSUxFCi0gICAgZWNobyA+PiAk
TE9HRklMRQotCi0gICAgZWNobyBTVEFSVElORyBUTyBURVNUIFNVUEVSLVdJREVCQU5ECi0gICAg
Ci0gICAgSU5GSUxFUz0kKGNhdCBJbnB1dEZpbGVzU1dCLnR4dCkKLSAgICBJTkRJUj0uLi9kYXRh
L29yaWdzd2IKLSAgICBPVVRESVI9Li4vZGF0YXFhc3diIiRQTEFURk9STSIKLSAgICBta2RpciAt
cCAkT1VURElSCi0gICAgcm0gLWYgJE9VVERJUi8qCi0gICAgCi0gICAgZm9yIGZpbGUgaW4gJElO
RklMRVMKLSAgICAgIGRvCi0gICAgICBlY2hvCi0gICAgICBlY2hvICJJbnB1dCBmaWxlOiAiICRm
aWxlCi0gICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSAgICAg
IGZvciBSQVRFIGluIDEyMDAwIDIwMDAwIDMyMDAwIDM4MDAwIDQ1MDAwIDUwMDAwIDU2MDAwICAK
LQlkbwotCQotCWVjaG8gIlJhdGUgIiAkUkFURQotCSRJU0FDIC1JIC1CICRSQVRFIC1GTCAzMCAt
RlMgMzIgJElORElSLyIkZmlsZSIgJE9VVERJUi9zd2JfIiRSQVRFIl8iJGZpbGUiID4+ICRMT0dG
SUxFCi0JZWNobwotCQotICAgICAgZG9uZQotICAKLSAgICBkb25lCi1maQotCi1pZiAgWyAiJCMi
IC1lcSAwIF0gfHwgWyAiJDEiID0gImFsbCIgXSB8fCBbICIkMSIgPSAiQVBJIiBdCi0gICAgdGhl
bgotCi0gICAgTE9HRklMRV9BUEk9bG9nTm9ybWFsX0FQSSIkUExBVEZPUk0iLnR4dAotICAgIGVj
aG8KLSAgICBlY2hvCi0gICAgZWNobyAiU1RBUlQgSVNBQyBBUEkgVEVTVCIgPiAkTE9HRklMRV9B
UEkKLSAgICBlY2hvID4+ICRMT0dGSUxFX0FQSQotICAgIGlkeD0xCi0gICAgZWNobyAiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRlc3QgRW5mb3JjZW1lbnQgb2YgZnJhbWUtc2l6ZSIKLSAg
ICBlY2hvICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgotICAgIG1rZGlyIC1wIC4u
L0ZyYW1lU2l6ZUxpbSIkUExBVEZPUk0iCi0gICAgcm0gLWYgLi4vRnJhbWVTaXplTGltIiRQTEFU
Rk9STSIvKgotICAgIGVjaG8KLSAgICBlY2hvICItLSBObyBlbmZvcmNlbWVudDsgQk4gMTAwMDAi
Ci0gICAgZWNobwotICAgICRJU0FDIC1CIDEwMDAwIC1GUyAxNiAuLi9kYXRhL29yaWcvc3BlZWNo
X2FuZF9taXNjX1dCLnBjbSBcCi0JLi4vRnJhbWVTaXplTGltIiRQTEFURk9STSIvQVBJVGVzdF8i
JGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8K
LSAgICBlY2hvCi0gICAgZWNobyAiLS0gTm93IEVuZm9yY2UgMzAgbXMgZnJhbWUgc2l6ZSB3aXRo
IHRoZSBzYW1lIGJvdHRsZW5lY2siCi0gICAgZWNobyAiVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkg
NjAgbXMgZnJhbWUiCi0gICAgZWNobwotICAgICRJU0FDIC1CIDEwMDAwIC1GTCAzMCAtRklYRURf
RkwgLUZTIDE2IC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNtIFwKLQkuLi9GcmFt
ZVNpemVMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0g
ICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSBObyBl
bmZvcmNlbWVudDsgQk4gMzIwMDAiCi0gICAgZWNobwotICAgICRJU0FDIC1CIDMyMDAwIC1GUyAx
NiAuLi9kYXRhL29yaWcvc3BlZWNoX2FuZF9taXNjX1dCLnBjbSBcCi0JLi4vRnJhbWVTaXplTGlt
IiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAi
aWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gTm93IEVuZm9yY2Ug
NjAgbXMgZnJhbWUgc2l6ZSB3aXRoIHRoZSBzYW1lIGJvdHRsZW5lY2siCi0gICAgZWNobyAiVGhl
cmUgc2hvdWxkIG5vdCBiZSBhbnkgMzAgbXMgZnJhbWUiCi0gICAgZWNobyAKLSAgICAkSVNBQyAt
QiAzMjAwMCAtRkwgNjAgLUZJWEVEX0ZMIC1GUyAxNiAuLi9kYXRhL29yaWcvc3BlZWNoX2FuZF9t
aXNjX1dCLnBjbSBcCi0JLi4vRnJhbWVTaXplTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIu
cGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBl
Y2hvCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvCi0KLSAgICBlY2hvICIgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXN0IExpbWl0aW5nIG9mIFBheWxvYWQgU2l6ZSBhbmQgUmF0ZSIK
LSAgICBlY2hvICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgotICAgIG1rZGlyIC1w
IC4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIgotICAgIHJtIC1mIC4uL1BheWxvYWRMaW0iJFBMQVRG
T1JNIi8qCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSBObyBMaW1pdCwgZnJhbWUt
c2l6ZSA2MCBtcywgV0lERUJBTkQiCi0gICAgZWNobyAKLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAt
RkwgNjAgLUZTIDE2ICAgICAgICAgICAgICAgIC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2Nf
V0IucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+
ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0g
ICAgZWNobyAiLS0gUGF5bG9hZC1zaXplIGxpbWl0IG9mIDI1MCwgZnJhbWUtc2l6ZSA2MCBtcywg
V0lERUJBTkQiCi0gICAgZWNobyAKLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgNjAgLUZTIDE2
IC1NQVggMjUwICAgICAgIC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNtIFwKLQku
Li9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQ
SQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0g
UmF0ZSBsaW1pdCBvZiAzMyBrYnBzIGZvciA2MCBtcyBmcmFtZS1zaXplIgotICAgIGVjaG8KLSAg
ICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgNjAgLUZTIDE2IC1NQVhSQVRFIDMzMDAwIC4uL2RhdGEv
b3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIv
QVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgot
ICAgIGVjaG8gCi0gICAgZWNobyAiX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18iCi0gICAgZWNobwotICAgIGVjaG8KLQotICAgIGVjaG8gIi0t
IE5vIExpbWl0LCBmcmFtZS1zaXplIDMwIG1zLCBXSURFQkFORCIKLSAgICBlY2hvIAotICAgICRJ
U0FDIC1JIC1CIDMyMDAwIC1GTCAzMCAtRlMgMTYgICAgICAgICAgICAgICAgLi4vZGF0YS9vcmln
L3NwZWVjaF9hbmRfbWlzY19XQi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElU
ZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAg
ZWNobwotICAgIGVjaG8gICAgCi0gICAgZWNobyAiLS0gUGF5bG9hZC1zaXplIGxpbWl0IG9mIDEz
MCwgZnJhbWUtc2l6ZSAzMCBtcywgV0lERUJBTkQiCi0gICAgZWNobyAKLSAgICAkSVNBQyAtSSAt
QiAzMjAwMCAtRkwgMzAgLUZTIDE2IC1NQVggMTMwICAgICAgIC4uL2RhdGEvb3JpZy9zcGVlY2hf
YW5kX21pc2NfV0IucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlk
eCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAg
ICBlY2hvCi0gICAgZWNobyAiLS0gUmF0ZSBsaW1pdCBvZiAzMyBrYnBzIGZvciAzMCBtcyBmcmFt
ZS1zaXplLCB3aWRlYmFuZCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUkgLUIgMzIwMDAgLUZMIDMw
IC1GUyAxNiAtTUFYUkFURSAzMzAwMCAuLi9kYXRhL29yaWcvc3BlZWNoX2FuZF9taXNjX1dCLnBj
bSBcCi0JLi4vUGF5bG9hZExpbSIkUExBVEZPUk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9H
RklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobyAiX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iCi0gICAg
ZWNobwotICAgIGVjaG8KLQotICAgIGVjaG8gIi0tIE5vIGxpbWl0IGZvciAzMiBrYnBzLCAzMCBt
cywgU1VQRVItV0lERUJBTkQiCi0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1GTCAz
MCAtRlMgMzIgICAgICAgICAgLi4vZGF0YS9vcmlnc3diL2pzdGVzdF8zMi5wY20gXAotCS4uL1Bh
eWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0g
ICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSBQYXls
b2FkIGxpbWl0IG9mIDEzMCBieXRlcyBmb3IgMzIga2JwcywgMzAgbXMsIFNVUEVSLVdJREVCQU5E
IgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgMzAgLUZTIDMyIC1NQVggMTMw
IC4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9S
TSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsx
IgotICAgIGVjaG8KLSAgICBlY2hvICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXyIKLSAgICBlY2hvCi0gICAgZWNobwotCi0gICAgZWNobyAi
LS0gTm8gbGltaXQsIFJhdGUgNDUga2JwcywgMzAgbXMsIFNVUEVSLVdJREVCQU5ELCAxMiBrSHoi
Ci0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDQ1MDAwIC1GTCAzMCAtRlMgMzIgICAgICAgICAg
ICAgICAuLi9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSBcCi0JLi4vUGF5bG9hZExpbSIkUExB
VEZPUk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1p
ZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gIi0tIFJhdGUgbGltaXQgb2YgNDYg
a2JwcyBmb3IgNDIga2JwcywgMzAgbXMsIFNVUEVSLVdJREVCQU5ELCAxMiBrSHoiCi0gICAgZWNo
bwotICAgICRJU0FDIC1JIC1CIDQ1MDAwIC1GTCAzMCAtRlMgMzIgLU1BWFJBVEUgNDYwMDAgLi4v
ZGF0YS9vcmlnc3diL2pzdGVzdF8zMi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9B
UElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0g
ICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSBQYXlsb2FkIGxpbWl0IG9mIDE3MCBieXRl
cyBmb3IgNDUga2JwcywgMzAgbXMsIFNVUEVSLVdJREVCQU5ELCAxMiBrSHoiCi0gICAgZWNobwot
ICAgICRJU0FDIC1JIC1CIDQ1MDAwIC1GTCAzMCAtRlMgMzIgLU1BWCAxNzAgICAgICAgLi4vZGF0
YS9vcmlnc3diL2pzdGVzdF8zMi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElU
ZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAg
ZWNobwotICAgIGVjaG8gIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fIgotICAgIGVjaG8KLSAgICBlY2hvCi0gIAotICAgIGVjaG8gIi0tIE5v
IGxpbWl0IGZvciA1NiBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQsIDE2IGtIeiIKLSAgICBl
Y2hvCi0gICAgJElTQUMgLUkgLUIgNTYwMDAgLUZMIDMwIC1GUyAzMiAgICAgICAgICAgICAgICAu
Li9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSBcCi0JLi4vUGF5bG9hZExpbSIkUExBVEZPUk0i
L0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIK
LSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gIi0tIFBheWxvYWQgbGltaXQgb2YgMjAwIGJ5
dGVzIGZvciA1NiBrYnBzIDMwIG1zLCBTVVBFUi1XSURFQkFORCwgMTYga0h6IgotICAgIGVjaG8K
LSAgICAkSVNBQyAtSSAtQiA1NjAwMCAtRkwgMzAgLUZTIDMyIC1NQVggMjAwICAgICAgIC4uL2Rh
dGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJ
VGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAg
IGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gUmF0ZSBsaW1pdCBvZiA1NyBrYnBzIGZvciA1
NiBrYnBzIDMwIG1zLCBTVVBFUi1XSURFQkFORCwgMTYga0h6IgotICAgIGVjaG8KLSAgICAkSVNB
QyAtSSAtQiA1NjAwMCAtRkwgMzAgLUZTIDMyIC1NQVhSQVRFIDU3MDAwIC4uL2RhdGEvb3JpZ3N3
Yi9qc3Rlc3RfMzIucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlk
eCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAg
ICBlY2hvICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXyIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNo
bwotICAgIAotICAgIGVjaG8gIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
c3QgVHJhbnMtQ29kaW5nIgotICAgIGVjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0iCi0gICAgbWtkaXIgLXAgLi4vVHJhbnNjb2RpbmciJFBMQVRGT1JNIgotICAgIHJtIC1mIC4u
L1RyYW5zY29kaW5nIiRQTEFURk9STSIvKgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAi
LS0gMjAga2JwcywgMzAgbXMsIFdJREVCQU5EIgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiAy
MDAwMCAtRkwgMzAgLUZTIDE2ICAgICAgICAgIC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2Nf
V0IucGNtIFwKLQkuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3RfcmVmVHJhbnMyMFdC
LnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAg
ZWNobwotICAgIAotICAgIGVjaG8gIi0tIDMyIGticHMgdHJhbnMtY29kaW5nIHRvIDIwIGticHMs
IDMwIG1zLCBXSURFQkFORCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUkgLUIgMzIwMDAgLUZMIDMw
IC1GUyAxNiAgLVQgMjAwMDAgIC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF8zMlQy
MC5wY20gXAotCS4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL1RyYW5zY29k
aW5nIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxl
dCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvICJfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIKLQotICAgIGVjaG8KLSAgICBlY2hv
Ci0gICAgZWNobyAiLS0gMzgga2JwcywgMzAgbXMsIFNVUEVSLVdJREVCQU5EIgotICAgIGVjaG8K
LSAgICAkSVNBQyAtSSAtQiAzODAwMCAtRkwgMzAgLUZTIDMyICAgICAgICAgIC4uL2RhdGEvb3Jp
Z3N3Yi9qc3Rlc3RfMzIucGNtIFwKLQkuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3Rf
cmVmVHJhbnMzOC5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAg
ZWNobwotICAgIGVjaG8KLSAgICAKLSAgICBlY2hvICItLSA0NSBrYnBzIHRyYW5zLWNvZGluZyB0
byAzOCBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQiCi0gICAgZWNobwotICAgICRJU0FDIC1J
IC1CIDQ1MDAwIC1GTCAzMCAtRlMgMzIgIC1UIDM4MDAwICAuLi9UcmFuc2NvZGluZyIkUExBVEZP
Uk0iL0FQSVRlc3RfNDVUMzgucGNtIFwKLQkuLi9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSAu
Li9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9B
UEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8g
Ii0tIDIwIGticHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCIKLSAgICBlY2hvCi0gICAgJElTQUMg
LUkgLUIgMjAwMDAgLUZMIDMwIC1GUyAzMiAgICAgICAgICAuLi9kYXRhL29yaWdzd2IvanN0ZXN0
XzMyLnBjbSBcCi0JLi4vVHJhbnNjb2RpbmciJFBMQVRGT1JNIi9BUElUZXN0X3JlZlRyYW5zMjBT
V0IucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotCi0gICAgZWNobwot
ICAgIGVjaG8KLSAgICAKLSAgICBlY2hvICItLSA0NSBrYnBzIHRyYW5zLWNvZGluZyB0byAyMCBr
YnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQiCi0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDQ1
MDAwIC1GTCAzMCAtRlMgMzIgIC1UIDIwMDAwICAuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQ
SVRlc3RfNDVUMjAucGNtIFwKLQkuLi9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSAuLi9UcmFu
c2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAg
ICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobyAiX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iCi0gICAgZWNobwotICAgIGVj
aG8KLSAgICBlY2hvICItLSA1MCBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQiCi0gICAgZWNo
bwotICAgICRJU0FDIC1JIC1CIDUwMDAwIC1GTCAzMCAtRlMgMzIgICAgICAgICAgLi4vZGF0YS9v
cmlnc3diL2pzdGVzdF8zMi5wY20gXAotCS4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVz
dF9yZWZUcmFuczUwLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAg
ICBlY2hvCi0gICAgZWNobwotICAgIAotICAgIGVjaG8gIi0tIDU2IGticHMgdHJhbnMtY29kaW5n
IHRvIDUwIGticHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCIKLSAgICBlY2hvCi0gICAgJElTQUMg
LUkgLUIgNTYwMDAgLUZMIDMwIC1GUyAzMiAgLVQgNTAwMDAgIC4uL1RyYW5zY29kaW5nIiRQTEFU
Rk9STSIvQVBJVGVzdF81NlQ1MC5wY20gXAotCS4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNt
IC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxF
X0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgCi0gICAg
ZWNobyAiLS0gNTYga2JwcyB0cmFucy1jb2RpbmcgdG8gMjAga2JwcywgMzAgbXMsIFNVUEVSLVdJ
REVCQU5EIgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiA1NjAwMCAtRkwgMzAgLUZTIDMyICAt
VCAyMDAwMCAuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3RfNTZUMjAucGNtIFwKLQku
Li9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSAuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQ
SVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAg
ICBlY2hvCi0gICAgZWNobyAiX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18iCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvIAotICAgIGVj
aG8KLSAgICBlY2hvCi0gICAgCi0gICAgZWNobyAiICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXN0IEZFQyIKLSAgICBlY2hvICI9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09IgotICAgIG1rZGlyIC1wIC4uL0ZFQyIkUExBVEZPUk0iCi0gICAgcm0gLWYgLi4v
RkVDIiRQTEFURk9STSIvKgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gMzIga2Jw
cyB3aXRoIHRyYW5zY29kaW5nIHRvIDIwa2JwcywgMzAgbXMsIFdJREVCQU5ELCAxMCUgcGFja2V0
IGxvc3MiCi0gICAgJElTQUMgLUkgLUIgMzIwMDAgLUZMIDMwIC1GUyAxNiAtUEwgMTAgLVQgMjAw
MDAgLi4vRkVDIiRQTEFURk9STSIvQVBJVGVzdF9QTDEwX1dCMzBfVDIwLnBjbSBcCi0JLi4vZGF0
YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vRkVDIiRQTEFURk9STSIvQVBJVGVzdF9Q
TDEwX1dCMzAucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVj
aG8KLSAgICBlY2hvCi0gICAgCi0gICAgZWNobyAiLS0gMzIga2JwcywgNjAgbXMsIFdJREVCQU5E
LCAxMCUgcGFja2V0IGxvc3MiCi0gICAgJElTQUMgLUkgLUIgMzIwMDAgLUZMIDYwIC1GUyAxNiAt
UEwgMTAgLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gXAotCS4uL0ZFQyIkUExB
VEZPUk0iL0FQSVRlc3RfUEwxMF9XQjYwLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlk
eD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIAotICAgIGVjaG8gIi0tIDMyIGticHMg
d2l0aCB0cmFuc2NvZGluZyB0byAyMCBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQsIDEwJSBw
YWNrZXQgbG9zcyIKLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgMzAgLUZTIDMyIC1QTCAxMCAt
VCAyMDAwMCAuLi9GRUMiJFBMQVRGT1JNIi9BUElUZXN0X1BMMTBfU1dCXzhrSHpfVDIwLnBjbSBc
Ci0JLi4vZGF0YS9vcmlnc3diL2pzdGVzdF8zMi5wY20gLi4vRkVDIiRQTEFURk9STSIvQVBJVGVz
dF9QTDEwX1NXQl84a0h6LnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIK
LSAgICBlY2hvCi0gICAgZWNobwotCi0gICAgZWNobyAiLS0gNDUga2JwcyB3aXRoIFRyYXNjb2Rp
bmcgdG8gMzgga2JwcywgMzAgbXMsIFNVUEVSLVdJREVCQU5ELCAxMCUgcGFja2V0IGxvc3MiCi0g
ICAgJElTQUMgLUkgLUIgNDUwMDAgLUZMIDMwIC1GUyAzMiAtUEwgMTAgLVQgMzgwMDAgLi4vRkVD
IiRQTEFURk9STSIvQVBJVGVzdF9QTDEwX1NXQl8xMmtIel9UMzgucGNtIFwKLQkuLi9kYXRhL29y
aWdzd2IvanN0ZXN0XzMyLnBjbSAuLi9GRUMiJFBMQVRGT1JNIi9BUElUZXN0X1BMMTBfU1dCXzEy
a0h6LnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0g
ICAgZWNobwotCi0gICAgZWNobyAiLS0gNTYga2JwcyB3aXRoIHRyYW5zY29kaW5nIHRvIDUwIGti
cHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCwgMTAlIHBhY2tldCBsb3NzIgotICAgICRJU0FDIC1J
IC1CIDU2MDAwIC1GTCAzMCAtRlMgMzIgLVBMIDEwIC1UIDUwMDAwIC4uL0ZFQyIkUExBVEZPUk0i
L0FQSVRlc3RfUEwxMF9TV0JfMTZrSHpfVDUwLnBjbSBcCi0JLi4vZGF0YS9vcmlnc3diL2pzdGVz
dF8zMi5wY20gLi4vRkVDIiRQTEFURk9STSIvQVBJVGVzdF9QTDEwX1NXQl8xNmtIei5wY20gPj4g
JExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLWZp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9tYWluL3Rlc3QvUUEvcnVuaVNBQ2ZhdWx0
LnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9ydW5pU0FDZmF1bHQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzgyOWE0Yjk4MzRlYzMyZjI0ZjhiZDlmNzgz
ZWFiYjViZGQyOWJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9ydW5pU0FDZmF1bHQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotIyEvYmluL2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+
L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFy
YWN0ZXI/Pz8/PyA/Pz8/Pz8gCi1pZiAgWyAiJDEiID0gIng2NCIgXSB8fCBbICIkIyIgLWVxIDAg
XQotICAgIHRoZW4KLSAgICBQTEFURk9STT1fWDY0Ci0gICAgSVNBQz0uLi94NjQvUmVsZWFzZS9S
ZWxlYXNlVGVzdC1BUElfMjAwNS5leGUKLWVsaWYgWyAiJDEiID0gIjIwMDUiIF0KLQl0aGVuCi0g
ICAgUExBVEZPUk09XzIwMDUKLSAgICBJU0FDPS4uL3dpbjMyL1JlbGVhc2UvUmVsZWFzZVRlc3Qt
QVBJXzIwMDUuZXhlCi1lbGlmIFsgIiQxIiA9PSAiTElOVVgiIF0KLQl0aGVuCi0gICAgUExBVEZP
Uk09X2xpbnV4Ci0gICAgSVNBQz0uLi9SZWxlYXNlVGVzdC1BUEkvaXNhY3N3dGVzdAotZWxzZQot
CWVjaG8gVW5rbm93biBQbGF0Zm9ybQotCWV4aXQgMgotZmkKLQotTE9HRklMRT1sb2dmYXVsdCRQ
TEFURk9STS50eHQKLWVjaG8gIlNUQVJUIEZBVUxUIFRFU1QiID4gJExPR0ZJTEUKLQotCi1JTkZJ
TEVTPSQoY2F0IElucHV0RmlsZXMudHh0KQotU1VCU0VUPSQoY2F0IElucHV0RmlsZXNGZXcudHh0
KQotQ0hBTk5FTEZJTEVTPSQoY2F0IENoYW5uZWxGaWxlcy50eHQpCi1DSEFOTkVMTElTVD0oJChj
YXQgQ2hhbm5lbEZpbGVzLnR4dCkpCi1JTkRJUj0uLi9kYXRhL29yaWcKLUlORElSU1dCPS4uL2Rh
dGEvb3JpZ3N3YgotT1VURElSPS4uL2RhdGFxYWZ0JFBMQVRGT1JNCi1ta2RpciAtcCAkT1VURElS
Ci0KLSNtYXhpbXVtIFRhcmdldCByYXRlIGZvciBkaWZmZXJlbnQgYmFuZHdpZHRoCi1UQVJHRVRS
QVRFPSggMzIwMDAgMzIwMDAgNDQwMDAgNTYwMDAgKQotU0FNUEZSRVE9KCAxNiAzMiAzMiAzMiAp
Ci1GQVVMVFRFU1Q9KDEgMiAzIDQgNSA2IDcgOSkKLQotaW5kZXgxPTAKLQotZmlsZV93Yj0uLi9k
YXRhL29yaWcvMTZrSHoucGNtCi1maWxlX3N3Yj0uLi9kYXRhL29yaWdzd2IvMzJrSHoucGNtCi0K
LWZvciBpZHggaW4gMCAxIDIgMyAKLSAgZG8KLSMgRmF1bHQgdGVzdAotICBlY2hvCi0gIGVjaG8g
IlNhbXBsaW5nIEZyZXF1ZW5jeSAiICR7U0FNUEZSRVFbaWR4XX0gImtIeiwgUmF0ZSAiICR7VEFS
R0VUUkFURVtpZHhdfSAiYnBzLiIKLSAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotICBpZiBbICR7U0FNUEZSRVFbaWR4XX0gLWVxIDE2
IF07IHRoZW4KLSAgICBmaWxlPSRmaWxlX3diCi0gIGVsc2UKLSAgICBmaWxlPSRmaWxlX3N3Ygot
ICBmaQotCi0gIGZvciB0ZXN0bnIgaW4gJHtGQVVMVFRFU1RbKl19Ci0gICAgZG8KLSAgICBlY2hv
ICJSdW5uaW5nIEZhdWx0IFRlc3QgIiAkdGVzdG5yCi0gICAgJElTQUMgLUkgLUIgIiR7VEFSR0VU
UkFURVtpZHhdfSIgLUYgJHRlc3RuciAtRlMgIiR7U0FNUEZSRVFbaWR4XX0iICIkZmlsZSIgXAot
CSRPVVRESVIvZnQiJHRlc3RuciJfIiR7VEFSR0VUUkFURVtpZHhdfSJfIiR7U0FNUEZSRVFbaWR4
XX0iLnBjbSA+PiBMT0dGSUxFCi0gICAgZWNobwotICAgIAotICBkb25lCi0gIAotIyBGYXVsdCB0
ZXN0IG51bWJlciAxMCwgZXJyb3IgaW4gYml0c3RyZWFtCi0gIGVjaG8gIlJ1bm5pbmcgRmF1bHQg
VGVzdCAxMCIKLSAgJElTQUMgLUkgLUIgIiR7VEFSR0VUUkFURVtpZHhdfSIgLUYgMTAgICAgICAg
IC1GUyAiJHtTQU1QRlJFUVtpZHhdfSIgIiRmaWxlIiBcCi0gICAgJE9VVERJUi9mdDEwXyIke1RB
UkdFVFJBVEVbaWR4XX0iXyIke1NBTVBGUkVRW2lkeF19Ii5wY20gPj4gTE9HRklMRQotICBlY2hv
Ci0gIGVjaG8gIlJ1bm5pbmcgRmF1bHQgVGVzdCAxMCB3aXRoIHBhY2tldGxvc3MiCi0gICRJU0FD
IC1JIC1CICIke1RBUkdFVFJBVEVbaWR4XX0iIC1GIDEwIC1QTCAxMCAtRlMgIiR7U0FNUEZSRVFb
aWR4XX0iICIkZmlsZSIgXAotICAgICRPVVRESVIvZnQxMHBsY18iJHtUQVJHRVRSQVRFW2lkeF19
Il8iJHtTQU1QRlJFUVtpZHhdfSIucGNtID4+IExPR0ZJTEUKLSAgZWNobwotZG9uZQotCi1lY2hv
IAotZWNobwotZWNobyBET05FIQotICAKLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNh
Yy9tYWluL3Rlc3QvUUEvcnVuaVNBQ2ZpeGZsb2F0LnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21h
aW4vdGVzdC9RQS9ydW5pU0FDZml4ZmxvYXQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0Y2RhNzhlNGZlYTZiNTNhNzlmZjc0MDk5MzVlNzY0MTI4NGI5Mjc4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21h
aW4vdGVzdC9RQS9ydW5pU0FDZml4ZmxvYXQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAs
MCBAQAotIyEvYmluL2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBp
Z25jcjsgIyBmb3JjZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIKLQotTE9HRklMRT1sb2dm
eGZsLnR4dAotZWNobyAiU1RBUlQgRklYLUZMT0FUIFRFU1QiID4gJExPR0ZJTEUKLQotCi1JU0FD
RklYRkxPQVQ9Li4vLi4vLi4vZml4L3Rlc3QvdGVzdEZpeEZsb2F0LmV4ZQotCi1JTkZJTEVTPSQo
Y2F0IElucHV0RmlsZXMudHh0KQotU1VCU0VUPSQoY2F0IElucHV0RmlsZXNGZXcudHh0KQotQ0hB
Tk5FTEZJTEVTPSQoY2F0IENoYW5uZWxGaWxlcy50eHQpCi1DSEFOTkVMTElTVD0oJChjYXQgQ2hh
bm5lbEZpbGVzLnR4dCkpCi1JTkRJUj0uLi9kYXRhL29yaWcKLU9VVERJUj0uLi9kYXRhcWFmeGZs
Ci1ta2RpciAtcCAkT1VURElSCi0KLWluZGV4MT0wCi0KLWZvciBmaWxlIGluICRJTkZJTEVTICMg
bG9vcCBvdmVyIGFsbCBpbnB1dCBmaWxlcwotICBkbwotICAKLSAgZm9yIGNoYW5uZWwgaW4gJENI
QU5ORUxGSUxFUwotCWRvCi0JbGV0ICJpbmRleDE9aW5kZXgxKzEiCi0KLQkkSVNBQ0ZJWEZMT0FU
ICRJTkRJUi8kY2hhbm5lbCAtbSAxIC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9mbGZ4JGlu
ZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5lbCAt
bSAyIC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9meGZsJGluZGV4MSIkZmlsZSIgPj4gJExP
R0ZJTEUKLSAgZG9uZQotCi1kb25lCi0KLWluZGV4MT0wCi0KLWZvciBmaWxlIGluICRTVUJTRVQg
IyBsb29wIG92ZXIgdGhlIHN1YnNldCBvZiBpbnB1dCBmaWxlcwotICBkbwotCWxldCAiaW5kZXgx
PWluZGV4MSsxIgotCSRJU0FDRklYRkxPQVQgJElORElSLyRjaGFubmVsIC1tIDEgLU5CIDEgJElO
RElSLyIkZmlsZSIgJE9VVERJUi9mbGZ4bmIxXyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxFCi0J
JElTQUNGSVhGTE9BVCAkSU5ESVIvJGNoYW5uZWwgLW0gMiAtTkIgMSAkSU5ESVIvIiRmaWxlIiAk
T1VURElSL2Z4ZmxuYjFfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJWEZMT0FU
ICRJTkRJUi8kY2hhbm5lbCAtbSAxIC1OQiAyIC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9m
bGZ4bmIyXyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxFCi0JJElTQUNGSVhGTE9BVCAkSU5ESVIv
JGNoYW5uZWwgLW0gMiAtTkIgMiAtUExDICRJTkRJUi8iJGZpbGUiICRPVVRESVIvZnhmbG5iMl8k
aW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotZG9uZQotCi1lY2hvIERPTkUhCi0KLQotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvbGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvbGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUuY2MKaW5kZXggMGJmM2IxOWEzYjE3
Y2IzNDZiY2NkODg3NzYyYTI3N2IyZWMxZTQwNS4uZDllZmMyMTFkYTNkYWM2ODAwYjIxYjVkOTc5
ZGI5MWJkNmRlNjgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2xlZ2FjeV9lbmNvZGVkX2F1
ZGlvX2ZyYW1lLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9sZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFt
ZS5jYwpAQCAtMTQsNiArMTQsOCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGls
aXR5PgogCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCiBMZWdhY3lFbmNvZGVkQXVkaW9GcmFtZTo6TGVnYWN5RW5jb2RlZEF1ZGlvRnJhbWUoQXVk
aW9EZWNvZGVyKiBkZWNvZGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2xlZ2FjeV9lbmNv
ZGVkX2F1ZGlvX2ZyYW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvbGVnYWN5X2VuY29kZWRfYXVkaW9fZnJh
bWUuaAppbmRleCAwNWQ0ZmU0ODljOTFkZTBhM2MwNmJkZGI2Y2ZmZmY0ZmIyMDVjODVjLi40MWIw
OGY3ODk4ZTJlOGZiZjk2NGNjYjMxZmUyMTM0OTEzNWVjMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvbGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvbGVn
YWN5X2VuY29kZWRfYXVkaW9fZnJhbWUuaApAQCAtMTEsMTAgKzExLDE0IEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19MRUdBQ1lfRU5DT0RFRF9BVURJT19GUkFNRV9IXwog
I2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfTEVHQUNZX0VOQ09ERURfQVVESU9f
RlJBTUVfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNs
dWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9f
ZGVjb2Rlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVz
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmNjCmluZGV4IDMwMmI3
MTQwMzE5NmFhZGU4NmJiMzNmYjFkNGQ4ZjQ5Yzc3OGQyNmUuLjM1N2NiMWEyMGRhNzk5ZGQwMjg4
ZGQxZmZlODQ0NmM3NTk1OGJhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlv
X2RlY29kZXJfb3B1cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29w
dXMuY2MKQEAgLTEwLDggKzEwLDExIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuaCIKIAorI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgor
I2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVk
aW9fZGVjb2Rlcl9vcHVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMu
aAppbmRleCA3MGFhNDBiZGM0NmIwMWU4OGI5ZmYwYWEwZjVmY2VjMjdmN2UwMGVjLi44MDQzNDI1
MjQzY2Q5ZWQ1NjRiNzA0Y2UzMzIzMzEwOTM5NDZlYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRp
b19kZWNvZGVyX29wdXMuaApAQCAtMTEsOCArMTEsMTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19DT0RJTkdfQ09ERUNTX09QVVNfQVVESU9fREVDT0RFUl9PUFVTX0hfCiAjZGVmaW5lIE1PRFVM
RVNfQVVESU9fQ09ESU5HX0NPREVDU19PUFVTX0FVRElPX0RFQ09ERVJfT1BVU19IXwogCisjaW5j
bHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8dmVjdG9yPgor
CiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvb3B1c19pbnRlcmZhY2UuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29w
dXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rl
cl9vcHVzLmNjCmluZGV4IGU2MjQwZTY5ODI2YTE0MGY4NjgxOGNjNzM3MjAzYzA4MTZjODU1ZGUu
LjFhODhhY2YzYzAzNTI2ZmI2MWUyYmY0NjA5NTQyNTRlNDEyNjZjNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
b3B1cy9hdWRpb19lbmNvZGVyX29wdXMuY2MKQEAgLTE1LDcgKzE1LDggQEAKICNpbmNsdWRlIDx1
dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29t
bW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0
cmluZ3MvbWF0Y2guaCIKKyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFw
dG9yX2ltcGwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3Jr
X2FkYXB0b3IvY29udHJvbGxlcl9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL29wdXMvb3B1c19pbnRlcmZhY2UuaCIKQEAgLTIxNCw4ICsyMTUsODAgQEAg
aW50IEdldEJpdHJhdGVCcHMoY29uc3QgQXVkaW9FbmNvZGVyT3B1c0NvbmZpZyYgY29uZmlnKSB7
CiAgIHJldHVybiAqY29uZmlnLmJpdHJhdGVfYnBzOwogfQogCitib29sIElzVmFsaWRQYWNrZXRM
b3NzUmF0ZShpbnQgdmFsdWUpIHsKKyAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMTAw
OworfQorCitmbG9hdCBUb0ZyYWN0aW9uKGludCBwZXJjZW50KSB7CisgIHJldHVybiBzdGF0aWNf
Y2FzdDxmbG9hdD4ocGVyY2VudCkgLyAxMDA7Cit9CisKK2Zsb2F0IEdldE1pblBhY2tldExvc3NS
YXRlKCkgeworICBjb25zdGV4cHIgY2hhciBrUGFja2V0TG9zc0ZpZWxkVHJpYWxbXSA9ICJXZWJS
VEMtQXVkaW8tT3B1c01pblBhY2tldExvc3NSYXRlIjsKKyAgY29uc3QgYm9vbCB1c2Vfb3B1c19t
aW5fcGFja2V0X2xvc3NfcmF0ZSA9CisgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoa1BhY2tldExvc3NGaWVsZFRyaWFsKTsKKyAgaWYgKHVzZV9vcHVzX21pbl9wYWNrZXRfbG9z
c19yYXRlKSB7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZmllbGRfdHJpYWxfc3RyaW5nID0KKyAg
ICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtQYWNrZXRMb3NzRmllbGRU
cmlhbCk7CisgICAgY29uc3RleHByIGludCBrRGVmYXVsdE1pblBhY2tldExvc3NSYXRlID0gMTsK
KyAgICBpbnQgdmFsdWUgPSBrRGVmYXVsdE1pblBhY2tldExvc3NSYXRlOworICAgIGlmIChzc2Nh
bmYoZmllbGRfdHJpYWxfc3RyaW5nLmNfc3RyKCksICJFbmFibGVkLSVkIiwgJnZhbHVlKSA9PSAx
ICYmCisgICAgICAgICFJc1ZhbGlkUGFja2V0TG9zc1JhdGUodmFsdWUpKSB7CisgICAgICBSVENf
TE9HKExTX1dBUk5JTkcpIDw8ICJJbnZhbGlkIHBhcmFtZXRlciBmb3IgIiA8PCBrUGFja2V0TG9z
c0ZpZWxkVHJpYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgdXNpbmcgZGVmYXVs
dCB2YWx1ZTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBrRGVmYXVsdE1pblBhY2tl
dExvc3NSYXRlOworICAgICAgdmFsdWUgPSBrRGVmYXVsdE1pblBhY2tldExvc3NSYXRlOworICAg
IH0KKyAgICByZXR1cm4gVG9GcmFjdGlvbih2YWx1ZSk7CisgIH0KKyAgcmV0dXJuIDAuMDsKK30K
Kworc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpOZXdQYWNrZXRMb3NzUmF0
ZU9wdGltaXplcj4KK0dldE5ld1BhY2tldExvc3NSYXRlT3B0aW1pemVyKCkgeworICBjb25zdGV4
cHIgY2hhciBrUGFja2V0TG9zc09wdGltaXphdGlvbk5hbWVbXSA9CisgICAgICAiV2ViUlRDLUF1
ZGlvLU5ld09wdXNQYWNrZXRMb3NzUmF0ZU9wdGltaXphdGlvbiI7CisgIGNvbnN0IGJvb2wgdXNl
X25ld19wYWNrZXRfbG9zc19vcHRpbWl6YXRpb24gPQorICAgICAgd2VicnRjOjpmaWVsZF90cmlh
bDo6SXNFbmFibGVkKGtQYWNrZXRMb3NzT3B0aW1pemF0aW9uTmFtZSk7CisgIGlmICh1c2VfbmV3
X3BhY2tldF9sb3NzX29wdGltaXphdGlvbikgeworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpZWxk
X3RyaWFsX3N0cmluZyA9CisgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFt
ZShrUGFja2V0TG9zc09wdGltaXphdGlvbk5hbWUpOworICAgIGludCBtaW5fcmF0ZTsKKyAgICBp
bnQgbWF4X3JhdGU7CisgICAgZmxvYXQgc2xvcGU7CisgICAgaWYgKHNzY2FuZihmaWVsZF90cmlh
bF9zdHJpbmcuY19zdHIoKSwgIkVuYWJsZWQtJWQtJWQtJWYiLCAmbWluX3JhdGUsCisgICAgICAg
ICAgICAgICAmbWF4X3JhdGUsICZzbG9wZSkgPT0gMyAmJgorICAgICAgICBJc1ZhbGlkUGFja2V0
TG9zc1JhdGUobWluX3JhdGUpICYmIElzVmFsaWRQYWNrZXRMb3NzUmF0ZShtYXhfcmF0ZSkpIHsK
KyAgICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTwKKyAgICAgICAgICBBdWRpb0VuY29kZXJP
cHVzSW1wbDo6TmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXI+KAorICAgICAgICAgIFRvRnJhY3Rp
b24obWluX3JhdGUpLCBUb0ZyYWN0aW9uKG1heF9yYXRlKSwgc2xvcGUpOworICAgIH0KKyAgICBS
VENfTE9HKExTX1dBUk5JTkcpIDw8ICJJbnZhbGlkIHBhcmFtZXRlcnMgZm9yICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IGtQYWNrZXRMb3NzT3B0aW1pemF0aW9uTmFtZQorICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIiwgdXNpbmcgZGVmYXVsdCB2YWx1ZXMuIjsKKyAgICByZXR1cm4g
YWJzbDo6bWFrZV91bmlxdWU8CisgICAgICAgIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpOZXdQYWNr
ZXRMb3NzUmF0ZU9wdGltaXplcj4oKTsKKyAgfQorICByZXR1cm4gbnVsbHB0cjsKK30KKwogfSAg
Ly8gbmFtZXNwYWNlCiAKK0F1ZGlvRW5jb2Rlck9wdXNJbXBsOjpOZXdQYWNrZXRMb3NzUmF0ZU9w
dGltaXplcjo6TmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXIoCisgICAgZmxvYXQgbWluX3BhY2tl
dF9sb3NzX3JhdGUsCisgICAgZmxvYXQgbWF4X3BhY2tldF9sb3NzX3JhdGUsCisgICAgZmxvYXQg
c2xvcGUpCisgICAgOiBtaW5fcGFja2V0X2xvc3NfcmF0ZV8obWluX3BhY2tldF9sb3NzX3JhdGUp
LAorICAgICAgbWF4X3BhY2tldF9sb3NzX3JhdGVfKG1heF9wYWNrZXRfbG9zc19yYXRlKSwKKyAg
ICAgIHNsb3BlXyhzbG9wZSkge30KKworZmxvYXQgQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok5ld1Bh
Y2tldExvc3NSYXRlT3B0aW1pemVyOjpPcHRpbWl6ZVBhY2tldExvc3NSYXRlKAorICAgIGZsb2F0
IHBhY2tldF9sb3NzX3JhdGUpIGNvbnN0IHsKKyAgcGFja2V0X2xvc3NfcmF0ZSA9IHNsb3BlXyAq
IHBhY2tldF9sb3NzX3JhdGU7CisgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChwYWNrZXRfbG9z
c19yYXRlLCBtaW5fcGFja2V0X2xvc3NfcmF0ZV8pLAorICAgICAgICAgICAgICAgICAgbWF4X3Bh
Y2tldF9sb3NzX3JhdGVfKTsKK30KKwogdm9pZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6QXBwZW5k
U3VwcG9ydGVkRW5jb2RlcnMoCiAgICAgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlY1NwZWM+KiBzcGVj
cykgewogICBjb25zdCBTZHBBdWRpb0Zvcm1hdCBmbXQgPSB7CkBAIC0yNDQsNyArMzE3LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok1ha2VB
dWRpb0VuY29kZXIoCiAKIGFic2w6Om9wdGlvbmFsPEF1ZGlvQ29kZWNJbmZvPiBBdWRpb0VuY29k
ZXJPcHVzSW1wbDo6UXVlcnlBdWRpb0VuY29kZXIoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQm
IGZvcm1hdCkgewotICBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksIEdldFBh
eWxvYWROYW1lKCkpID09IDAgJiYKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0
Lm5hbWUsIEdldFBheWxvYWROYW1lKCkpICYmCiAgICAgICBmb3JtYXQuY2xvY2tyYXRlX2h6ID09
IDQ4MDAwICYmIGZvcm1hdC5udW1fY2hhbm5lbHMgPT0gMikgewogICAgIGNvbnN0IHNpemVfdCBu
dW1fY2hhbm5lbHMgPSBHZXRDaGFubmVsQ291bnQoZm9ybWF0KTsKICAgICBjb25zdCBpbnQgYml0
cmF0ZSA9CkBAIC0yNzYsNyArMzQ5LDcgQEAgQXVkaW9FbmNvZGVyT3B1c0NvbmZpZyBBdWRpb0Vu
Y29kZXJPcHVzSW1wbDo6Q3JlYXRlQ29uZmlnKAogCiBhYnNsOjpvcHRpb25hbDxBdWRpb0VuY29k
ZXJPcHVzQ29uZmlnPiBBdWRpb0VuY29kZXJPcHVzSW1wbDo6U2RwVG9Db25maWcoCiAgICAgY29u
c3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5u
YW1lLmNfc3RyKCksICJvcHVzIikgIT0gMCB8fAorICBpZiAoIWFic2w6OkVxdWFsc0lnbm9yZUNh
c2UoZm9ybWF0Lm5hbWUsICJvcHVzIikgfHwKICAgICAgIGZvcm1hdC5jbG9ja3JhdGVfaHogIT0g
NDgwMDAgfHwgZm9ybWF0Lm51bV9jaGFubmVscyAhPSAyKSB7CiAgICAgcmV0dXJuIGFic2w6Om51
bGxvcHQ7CiAgIH0KQEAgLTM5OCwxMCArNDcxLDE0IEBAIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpB
dWRpb0VuY29kZXJPcHVzSW1wbCgKICAgICA6IHBheWxvYWRfdHlwZV8ocGF5bG9hZF90eXBlKSwK
ICAgICAgIHNlbmRfc2lkZV9id2Vfd2l0aF9vdmVyaGVhZF8oCiAgICAgICAgICAgd2VicnRjOjpm
aWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtU2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikp
LAorICAgICAgdXNlX2xpbmtfY2FwYWNpdHlfZm9yX2FkYXB0YXRpb25fKHdlYnJ0Yzo6ZmllbGRf
dHJpYWw6OklzRW5hYmxlZCgKKyAgICAgICAgICAiV2ViUlRDLUF1ZGlvLUxpbmtDYXBhY2l0eUFk
YXB0YXRpb24iKSksCiAgICAgICBhZGp1c3RfYmFuZHdpZHRoXygKICAgICAgICAgICB3ZWJydGM6
OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZGp1c3RPcHVzQmFuZHdpZHRoIikpLAog
ICAgICAgYml0cmF0ZV9jaGFuZ2VkXyh0cnVlKSwKICAgICAgIHBhY2tldF9sb3NzX3JhdGVfKDAu
MCksCisgICAgICBtaW5fcGFja2V0X2xvc3NfcmF0ZV8oR2V0TWluUGFja2V0TG9zc1JhdGUoKSks
CisgICAgICBuZXdfcGFja2V0X2xvc3Nfb3B0aW1pemVyXyhHZXROZXdQYWNrZXRMb3NzUmF0ZU9w
dGltaXplcigpKSwKICAgICAgIGluc3RfKG51bGxwdHIpLAogICAgICAgcGFja2V0X2xvc3NfZnJh
Y3Rpb25fc21vb3RoZXJfKG5ldyBQYWNrZXRMb3NzRnJhY3Rpb25TbW9vdGhlcigpKSwKICAgICAg
IGF1ZGlvX25ldHdvcmtfYWRhcHRvcl9jcmVhdG9yXyhhdWRpb19uZXR3b3JrX2FkYXB0b3JfY3Jl
YXRvciksCkBAIC00MTQsNiArNDkxLDcgQEAgQXVkaW9FbmNvZGVyT3B1c0ltcGw6OkF1ZGlvRW5j
b2Rlck9wdXNJbXBsKAogICBSVENfQ0hFQ0soY29uZmlnLnBheWxvYWRfdHlwZSA9PSAtMSB8fCBj
b25maWcucGF5bG9hZF90eXBlID09IHBheWxvYWRfdHlwZSk7CiAKICAgUlRDX0NIRUNLKFJlY3Jl
YXRlRW5jb2Rlckluc3RhbmNlKGNvbmZpZykpOworICBTZXRQcm9qZWN0ZWRQYWNrZXRMb3NzUmF0
ZShwYWNrZXRfbG9zc19yYXRlXyk7CiB9CiAKIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpBdWRpb0Vu
Y29kZXJPcHVzSW1wbChjb25zdCBDb2RlY0luc3QmIGNvZGVjX2luc3QpCkBAIC01MjksNyArNjA3
LDggQEAgdm9pZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6T25SZWNlaXZlZFVwbGlua1JlY292ZXJh
YmxlUGFja2V0TG9zc0ZyYWN0aW9uKAogCiB2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpPblJl
Y2VpdmVkVXBsaW5rQmFuZHdpZHRoKAogICAgIGludCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMs
Ci0gICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gYndlX3BlcmlvZF9tcykgeworICAgIGFic2w6
Om9wdGlvbmFsPGludDY0X3Q+IGJ3ZV9wZXJpb2RfbXMsCisgICAgYWJzbDo6b3B0aW9uYWw8aW50
NjRfdD4gbGlua19jYXBhY2l0eV9hbGxvY2F0aW9uX2JwcykgewogICBpZiAoYXVkaW9fbmV0d29y
a19hZGFwdG9yXykgewogICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRvcl8tPlNldFRhcmdldEF1ZGlv
Qml0cmF0ZSh0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMpOwogICAgIC8vIFdlIGdpdmUgc21vb3Ro
ZWQgYml0cmF0ZSBhbGxvY2F0aW9uIHRvIGF1ZGlvIG5ldHdvcmsgYWRhcHRvciBhcwpAQCAtNTQ3
LDYgKzYyNiw5IEBAIHZvaWQgQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok9uUmVjZWl2ZWRVcGxpbmtC
YW5kd2lkdGgoCiAgICAgICBiaXRyYXRlX3Ntb290aGVyXy0+U2V0VGltZUNvbnN0YW50TXMoKmJ3
ZV9wZXJpb2RfbXMgKiA0KTsKICAgICBiaXRyYXRlX3Ntb290aGVyXy0+QWRkU2FtcGxlKHRhcmdl
dF9hdWRpb19iaXRyYXRlX2Jwcyk7CiAKKyAgICBpZiAobGlua19jYXBhY2l0eV9hbGxvY2F0aW9u
X2JwcykKKyAgICAgIGxpbmtfY2FwYWNpdHlfYWxsb2NhdGlvbl9icHNfID0gbGlua19jYXBhY2l0
eV9hbGxvY2F0aW9uX2JwczsKKwogICAgIEFwcGx5QXVkaW9OZXR3b3JrQWRhcHRvcigpOwogICB9
IGVsc2UgaWYgKHNlbmRfc2lkZV9id2Vfd2l0aF9vdmVyaGVhZF8pIHsKICAgICBpZiAoIW92ZXJo
ZWFkX2J5dGVzX3Blcl9wYWNrZXRfKSB7CkBAIC01NjUsNiArNjQ3LDE4IEBAIHZvaWQgQXVkaW9F
bmNvZGVyT3B1c0ltcGw6Ok9uUmVjZWl2ZWRVcGxpbmtCYW5kd2lkdGgoCiAgICAgU2V0VGFyZ2V0
Qml0cmF0ZSh0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMpOwogICB9CiB9Cit2b2lkIEF1ZGlvRW5j
b2Rlck9wdXNJbXBsOjpPblJlY2VpdmVkVXBsaW5rQmFuZHdpZHRoKAorICAgIGludCB0YXJnZXRf
YXVkaW9fYml0cmF0ZV9icHMsCisgICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gYndlX3Blcmlv
ZF9tcykgeworICBPblJlY2VpdmVkVXBsaW5rQmFuZHdpZHRoKHRhcmdldF9hdWRpb19iaXRyYXRl
X2JwcywgYndlX3BlcmlvZF9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpu
dWxsb3B0KTsKK30KKwordm9pZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6T25SZWNlaXZlZFVwbGlu
a0FsbG9jYXRpb24oCisgICAgQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlKSB7CisgIE9u
UmVjZWl2ZWRVcGxpbmtCYW5kd2lkdGgodXBkYXRlLnRhcmdldF9iaXRyYXRlLmJwcygpLCB1cGRh
dGUuYndlX3BlcmlvZC5tcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZS5s
aW5rX2NhcGFjaXR5LmJwcygpKTsKK30KIAogdm9pZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6T25S
ZWNlaXZlZFJ0dChpbnQgcnR0X21zKSB7CiAgIGlmICghYXVkaW9fbmV0d29ya19hZGFwdG9yXykK
QEAgLTczOCw5ICs4MzIsMTQgQEAgdm9pZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6U2V0TnVtQ2hh
bm5lbHNUb0VuY29kZSgKIH0KIAogdm9pZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6U2V0UHJvamVj
dGVkUGFja2V0TG9zc1JhdGUoZmxvYXQgZnJhY3Rpb24pIHsKLSAgZmxvYXQgb3B0X2xvc3NfcmF0
ZSA9IE9wdGltaXplUGFja2V0TG9zc1JhdGUoZnJhY3Rpb24sIHBhY2tldF9sb3NzX3JhdGVfKTsK
LSAgaWYgKHBhY2tldF9sb3NzX3JhdGVfICE9IG9wdF9sb3NzX3JhdGUpIHsKLSAgICBwYWNrZXRf
bG9zc19yYXRlXyA9IG9wdF9sb3NzX3JhdGU7CisgIGlmIChuZXdfcGFja2V0X2xvc3Nfb3B0aW1p
emVyXykgeworICAgIGZyYWN0aW9uID0gbmV3X3BhY2tldF9sb3NzX29wdGltaXplcl8tPk9wdGlt
aXplUGFja2V0TG9zc1JhdGUoZnJhY3Rpb24pOworICB9IGVsc2UgeworICAgIGZyYWN0aW9uID0g
T3B0aW1pemVQYWNrZXRMb3NzUmF0ZShmcmFjdGlvbiwgcGFja2V0X2xvc3NfcmF0ZV8pOworICAg
IGZyYWN0aW9uID0gc3RkOjptYXgoZnJhY3Rpb24sIG1pbl9wYWNrZXRfbG9zc19yYXRlXyk7Cisg
IH0KKyAgaWYgKHBhY2tldF9sb3NzX3JhdGVfICE9IGZyYWN0aW9uKSB7CisgICAgcGFja2V0X2xv
c3NfcmF0ZV8gPSBmcmFjdGlvbjsKICAgICBSVENfQ0hFQ0tfRVEoCiAgICAgICAgIDAsIFdlYlJ0
Y09wdXNfU2V0UGFja2V0TG9zc1JhdGUoCiAgICAgICAgICAgICAgICBpbnN0Xywgc3RhdGljX2Nh
c3Q8aW50MzJfdD4ocGFja2V0X2xvc3NfcmF0ZV8gKiAxMDAgKyAuNSkpKTsKQEAgLTc5NCwxNCAr
ODkzLDIwIEBAIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpEZWZhdWx0QXVkaW9OZXR3b3JrQWRhcHRv
ckNyZWF0b3IoCiAKIHZvaWQgQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok1heWJlVXBkYXRlVXBsaW5r
QmFuZHdpZHRoKCkgewogICBpZiAoYXVkaW9fbmV0d29ya19hZGFwdG9yXykgewotICAgIGludDY0
X3Qgbm93X21zID0gcnRjOjpUaW1lTWlsbGlzKCk7Ci0gICAgaWYgKCFiaXRyYXRlX3Ntb290aGVy
X2xhc3RfdXBkYXRlX3RpbWVfIHx8Ci0gICAgICAgIG5vd19tcyAtICpiaXRyYXRlX3Ntb290aGVy
X2xhc3RfdXBkYXRlX3RpbWVfID49Ci0gICAgICAgICAgICBjb25maWdfLnVwbGlua19iYW5kd2lk
dGhfdXBkYXRlX2ludGVydmFsX21zKSB7Ci0gICAgICBhYnNsOjpvcHRpb25hbDxmbG9hdD4gc21v
b3RoZWRfYml0cmF0ZSA9IGJpdHJhdGVfc21vb3RoZXJfLT5HZXRBdmVyYWdlKCk7Ci0gICAgICBp
ZiAoc21vb3RoZWRfYml0cmF0ZSkKLSAgICAgICAgYXVkaW9fbmV0d29ya19hZGFwdG9yXy0+U2V0
VXBsaW5rQmFuZHdpZHRoKCpzbW9vdGhlZF9iaXRyYXRlKTsKLSAgICAgIGJpdHJhdGVfc21vb3Ro
ZXJfbGFzdF91cGRhdGVfdGltZV8gPSBub3dfbXM7CisgICAgaWYgKHVzZV9saW5rX2NhcGFjaXR5
X2Zvcl9hZGFwdGF0aW9uXyAmJiBsaW5rX2NhcGFjaXR5X2FsbG9jYXRpb25fYnBzXykgeworICAg
ICAgYXVkaW9fbmV0d29ya19hZGFwdG9yXy0+U2V0VXBsaW5rQmFuZHdpZHRoKAorICAgICAgICAg
ICpsaW5rX2NhcGFjaXR5X2FsbG9jYXRpb25fYnBzXyk7CisgICAgfSBlbHNlIHsKKyAgICAgIGlu
dDY0X3Qgbm93X21zID0gcnRjOjpUaW1lTWlsbGlzKCk7CisgICAgICBpZiAoIWJpdHJhdGVfc21v
b3RoZXJfbGFzdF91cGRhdGVfdGltZV8gfHwKKyAgICAgICAgICBub3dfbXMgLSAqYml0cmF0ZV9z
bW9vdGhlcl9sYXN0X3VwZGF0ZV90aW1lXyA+PQorICAgICAgICAgICAgICBjb25maWdfLnVwbGlu
a19iYW5kd2lkdGhfdXBkYXRlX2ludGVydmFsX21zKSB7CisgICAgICAgIGFic2w6Om9wdGlvbmFs
PGZsb2F0PiBzbW9vdGhlZF9iaXRyYXRlID0KKyAgICAgICAgICAgIGJpdHJhdGVfc21vb3RoZXJf
LT5HZXRBdmVyYWdlKCk7CisgICAgICAgIGlmIChzbW9vdGhlZF9iaXRyYXRlKQorICAgICAgICAg
IGF1ZGlvX25ldHdvcmtfYWRhcHRvcl8tPlNldFVwbGlua0JhbmR3aWR0aCgqc21vb3RoZWRfYml0
cmF0ZSk7CisgICAgICAgIGJpdHJhdGVfc21vb3RoZXJfbGFzdF91cGRhdGVfdGltZV8gPSBub3df
bXM7CisgICAgICB9CiAgICAgfQogICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1
cy9hdWRpb19lbmNvZGVyX29wdXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJf
b3B1cy5oCmluZGV4IGVhNGIyNjUwYmJiZTczNjQ2YTM5YjFkNzhkZTVkNjJhYTVlMjllYzQuLjE1
MDQyM2ZkM2VlN2FhN2VjNGE3M2NmNGVlYmI4ODg5ZTE3ODE2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVz
L2F1ZGlvX2VuY29kZXJfb3B1cy5oCkBAIC0zNCw2ICszNCwyNiBAQCBzdHJ1Y3QgQ29kZWNJbnN0
OwogCiBjbGFzcyBBdWRpb0VuY29kZXJPcHVzSW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0VuY29k
ZXIgewogIHB1YmxpYzoKKyAgY2xhc3MgTmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXIgeworICAg
cHVibGljOgorICAgIE5ld1BhY2tldExvc3NSYXRlT3B0aW1pemVyKGZsb2F0IG1pbl9wYWNrZXRf
bG9zc19yYXRlID0gMC4wMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBt
YXhfcGFja2V0X2xvc3NfcmF0ZSA9IDAuMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBzbG9wZSA9IDEuMCk7CisKKyAgICBmbG9hdCBPcHRpbWl6ZVBhY2tldExvc3NSYXRl
KGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpIGNvbnN0OworCisgICAgLy8gR2V0dGVycyBmb3IgdGVz
dGluZy4KKyAgICBmbG9hdCBtaW5fcGFja2V0X2xvc3NfcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1p
bl9wYWNrZXRfbG9zc19yYXRlXzsgfTsKKyAgICBmbG9hdCBtYXhfcGFja2V0X2xvc3NfcmF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1heF9wYWNrZXRfbG9zc19yYXRlXzsgfTsKKyAgICBmbG9hdCBzbG9w
ZSgpIGNvbnN0IHsgcmV0dXJuIHNsb3BlXzsgfTsKKworICAgcHJpdmF0ZToKKyAgICBjb25zdCBm
bG9hdCBtaW5fcGFja2V0X2xvc3NfcmF0ZV87CisgICAgY29uc3QgZmxvYXQgbWF4X3BhY2tldF9s
b3NzX3JhdGVfOworICAgIGNvbnN0IGZsb2F0IHNsb3BlXzsKKyAgICBSVENfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOKE5ld1BhY2tldExvc3NSYXRlT3B0aW1pemVyKTsKKyAgfTsKKwogICBzdGF0
aWMgQXVkaW9FbmNvZGVyT3B1c0NvbmZpZyBDcmVhdGVDb25maWcoY29uc3QgQ29kZWNJbnN0JiBj
b2RlY19pbnN0KTsKIAogICAvLyBSZXR1cm5zIGVtcHR5IGlmIHRoZSBjdXJyZW50IGJpdHJhdGUg
ZmFsbHMgd2l0aGluIHRoZSBoeXN0ZXJlc2lzIHdpbmRvdywKQEAgLTk5LDYgKzExOSw3IEBAIGNs
YXNzIEF1ZGlvRW5jb2Rlck9wdXNJbXBsIGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7CiAg
IHZvaWQgT25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aCgKICAgICAgIGludCB0YXJnZXRfYXVkaW9f
Yml0cmF0ZV9icHMsCiAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBid2VfcGVyaW9kX21z
KSBvdmVycmlkZTsKKyAgdm9pZCBPblJlY2VpdmVkVXBsaW5rQWxsb2NhdGlvbihCaXRyYXRlQWxs
b2NhdGlvblVwZGF0ZSB1cGRhdGUpIG92ZXJyaWRlOwogICB2b2lkIE9uUmVjZWl2ZWRSdHQoaW50
IHJ0dF9tcykgb3ZlcnJpZGU7CiAgIHZvaWQgT25SZWNlaXZlZE92ZXJoZWFkKHNpemVfdCBvdmVy
aGVhZF9ieXRlc19wZXJfcGFja2V0KSBvdmVycmlkZTsKICAgdm9pZCBTZXRSZWNlaXZlckZyYW1l
TGVuZ3RoUmFuZ2UoaW50IG1pbl9mcmFtZV9sZW5ndGhfbXMsCkBAIC0xMTAsNiArMTMxLDkgQEAg
Y2xhc3MgQXVkaW9FbmNvZGVyT3B1c0ltcGwgZmluYWwgOiBwdWJsaWMgQXVkaW9FbmNvZGVyIHsK
IAogICAvLyBHZXR0ZXJzIGZvciB0ZXN0aW5nLgogICBmbG9hdCBwYWNrZXRfbG9zc19yYXRlKCkg
Y29uc3QgeyByZXR1cm4gcGFja2V0X2xvc3NfcmF0ZV87IH0KKyAgTmV3UGFja2V0TG9zc1JhdGVP
cHRpbWl6ZXIqIG5ld19wYWNrZXRfbG9zc19vcHRpbWl6ZXIoKSBjb25zdCB7CisgICAgcmV0dXJu
IG5ld19wYWNrZXRfbG9zc19vcHRpbWl6ZXJfLmdldCgpOworICB9CiAgIEF1ZGlvRW5jb2Rlck9w
dXNDb25maWc6OkFwcGxpY2F0aW9uTW9kZSBhcHBsaWNhdGlvbigpIGNvbnN0IHsKICAgICByZXR1
cm4gY29uZmlnXy5hcHBsaWNhdGlvbjsKICAgfQpAQCAtMTQxLDYgKzE2NSwxMSBAQCBjbGFzcyBB
dWRpb0VuY29kZXJPcHVzSW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0VuY29kZXIgewogICB2b2lk
IFNldE51bUNoYW5uZWxzVG9FbmNvZGUoc2l6ZV90IG51bV9jaGFubmVsc190b19lbmNvZGUpOwog
ICB2b2lkIFNldFByb2plY3RlZFBhY2tldExvc3NSYXRlKGZsb2F0IGZyYWN0aW9uKTsKIAorICB2
b2lkIE9uUmVjZWl2ZWRVcGxpbmtCYW5kd2lkdGgoCisgICAgICBpbnQgdGFyZ2V0X2F1ZGlvX2Jp
dHJhdGVfYnBzLAorICAgICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gYndlX3BlcmlvZF9tcywK
KyAgICAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGxpbmtfY2FwYWNpdHlfYWxsb2NhdGlvbik7
CisKICAgLy8gVE9ETyhtaW55dWUpOiByZW1vdmUgIm92ZXJyaWRlIiB3aGVuIHdlIGNhbiBkZXBy
ZWNhdGUKICAgLy8gfEF1ZGlvRW5jb2Rlcjo6U2V0VGFyZ2V0Qml0cmF0ZXwuCiAgIHZvaWQgU2V0
VGFyZ2V0Qml0cmF0ZShpbnQgdGFyZ2V0X2Jwcykgb3ZlcnJpZGU7CkBAIC0xNTUsOSArMTg0LDEy
IEBAIGNsYXNzIEF1ZGlvRW5jb2Rlck9wdXNJbXBsIGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2Rl
ciB7CiAgIEF1ZGlvRW5jb2Rlck9wdXNDb25maWcgY29uZmlnXzsKICAgY29uc3QgaW50IHBheWxv
YWRfdHlwZV87CiAgIGNvbnN0IGJvb2wgc2VuZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXzsKKyAg
Y29uc3QgYm9vbCB1c2VfbGlua19jYXBhY2l0eV9mb3JfYWRhcHRhdGlvbl87CiAgIGNvbnN0IGJv
b2wgYWRqdXN0X2JhbmR3aWR0aF87CiAgIGJvb2wgYml0cmF0ZV9jaGFuZ2VkXzsKICAgZmxvYXQg
cGFja2V0X2xvc3NfcmF0ZV87CisgIGNvbnN0IGZsb2F0IG1pbl9wYWNrZXRfbG9zc19yYXRlXzsK
KyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPE5ld1BhY2tldExvc3NSYXRlT3B0aW1pemVyPiBuZXdf
cGFja2V0X2xvc3Nfb3B0aW1pemVyXzsKICAgc3RkOjp2ZWN0b3I8aW50MTZfdD4gaW5wdXRfYnVm
ZmVyXzsKICAgT3B1c0VuY0luc3QqIGluc3RfOwogICB1aW50MzJfdCBmaXJzdF90aW1lc3RhbXBf
aW5fYnVmZmVyXzsKQEAgLTE3MCw2ICsyMDIsNyBAQCBjbGFzcyBBdWRpb0VuY29kZXJPcHVzSW1w
bCBmaW5hbCA6IHB1YmxpYyBBdWRpb0VuY29kZXIgewogICBhYnNsOjpvcHRpb25hbDxzaXplX3Q+
IG92ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXRfOwogICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8U21v
b3RoaW5nRmlsdGVyPiBiaXRyYXRlX3Ntb290aGVyXzsKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRf
dD4gYml0cmF0ZV9zbW9vdGhlcl9sYXN0X3VwZGF0ZV90aW1lXzsKKyAgYWJzbDo6b3B0aW9uYWw8
aW50NjRfdD4gbGlua19jYXBhY2l0eV9hbGxvY2F0aW9uX2Jwc187CiAgIGludCBjb25zZWN1dGl2
ZV9kdHhfZnJhbWVzXzsKIAogICBmcmllbmQgc3RydWN0IEF1ZGlvRW5jb2Rlck9wdXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXNfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXNfdW5pdHRlc3QuY2MKaW5kZXgg
N2E2ZDVmZGE0YmJjMTYxNDFhYjg0YTkzNWNkNzMzNGVkNzliNzdkZS4uZDVjMmM4NGYxZmY3MTNh
MWJjYjYxNzAxYjE1NTg2MjZhNmIyMTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMv
YXVkaW9fZW5jb2Rlcl9vcHVzX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1
ZGlvX2VuY29kZXJfb3B1c191bml0dGVzdC5jYwpAQCAtMjcyLDYgKzI3Miw1MSBAQCBURVNUKEF1
ZGlvRW5jb2Rlck9wdXNUZXN0LCBQYWNrZXRMb3NzUmF0ZU9wdGltaXplZCkgewogICAvLyBjbGFu
Zy1mb3JtYXQgb24KIH0KIAorVEVTVChBdWRpb0VuY29kZXJPcHVzVGVzdCwgUGFja2V0TG9zc1Jh
dGVMb3dlckJvdW5kZWQpIHsKKyAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmll
bGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1BdWRpby1PcHVzTWluUGFja2V0TG9zc1JhdGUvRW5h
YmxlZC01LyIpOworICBhdXRvIHN0YXRlcyA9IENyZWF0ZUNvZGVjKDEpOworICBhdXRvIEkgPSBb
XShmbG9hdCBhLCBmbG9hdCBiKSB7IHJldHVybiBJbnRlcnZhbFN0ZXBzKGEsIGIsIDEwKTsgfTsK
KyAgY29uc3RleHByIGZsb2F0IGVwcyA9IDFlLThmOworCisgIC8vIGNsYW5nLWZvcm1hdCBvZmYK
KyAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgSSgwLjAwZiAgICAgICwgMC4w
MWYgLSBlcHMpLCAwLjA1Zik7CisgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCks
IEkoMC4wMWYgKyBlcHMsIDAuMDZmIC0gZXBzKSwgMC4wNWYpOworICBUZXN0U2V0UGFja2V0TG9z
c1JhdGUoc3RhdGVzLmdldCgpLCBJKDAuMDZmICsgZXBzLCAwLjExZiAtIGVwcyksIDAuMDVmKTsK
KyAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgSSgwLjExZiArIGVwcywgMC4y
MmYgLSBlcHMpLCAwLjEwZik7CisgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCks
IEkoMC4yMmYgKyBlcHMsIDEuMDBmICAgICAgKSwgMC4yMGYpOworCisgIFRlc3RTZXRQYWNrZXRM
b3NzUmF0ZShzdGF0ZXMuZ2V0KCksIEkoMS4wMGYgICAgICAsIDAuMThmICsgZXBzKSwgMC4yMGYp
OworICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCBJKDAuMThmIC0gZXBzLCAw
LjA5ZiArIGVwcyksIDAuMTBmKTsKKyAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQo
KSwgSSgwLjA5ZiAtIGVwcywgMC4wNGYgKyBlcHMpLCAwLjA1Zik7CisgIFRlc3RTZXRQYWNrZXRM
b3NzUmF0ZShzdGF0ZXMuZ2V0KCksIEkoMC4wNGYgLSBlcHMsIDAuMDFmICsgZXBzKSwgMC4wNWYp
OworICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCBJKDAuMDFmIC0gZXBzLCAw
LjAwZiAgICAgICksIDAuMDVmKTsKKyAgLy8gY2xhbmctZm9ybWF0IG9uCit9CisKK1RFU1QoQXVk
aW9FbmNvZGVyT3B1c1Rlc3QsIE5ld1BhY2tldExvc3NSYXRlT3B0aW1pemF0aW9uKSB7CisgIHsK
KyAgICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlhbHMoCisgICAg
ICAgICJXZWJSVEMtQXVkaW8tTmV3T3B1c1BhY2tldExvc3NSYXRlT3B0aW1pemF0aW9uL0VuYWJs
ZWQtNS0xNS0wLjUvIik7CisgICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVDb2RlYygxKTsKKworICAg
IFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIHswLjAwZn0sIDAuMDVmKTsKKyAg
ICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCB7MC4xMmZ9LCAwLjA2Zik7Cisg
ICAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgezAuMjJmfSwgMC4xMWYpOwor
ICAgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIHswLjUwZn0sIDAuMTVmKTsK
KyAgfQorICB7CisgICAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJp
YWxzKAorICAgICAgICAiV2ViUlRDLUF1ZGlvLU5ld09wdXNQYWNrZXRMb3NzUmF0ZU9wdGltaXph
dGlvbi9FbmFibGVkLyIpOworICAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisKKyAg
ICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCB7MC4wMGZ9LCAwLjAxZik7Cisg
ICAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgezAuMTJmfSwgMC4xMmYpOwor
ICAgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIHswLjIyZn0sIDAuMjBmKTsK
KyAgICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCB7MC41MGZ9LCAwLjIwZik7
CisgIH0KK30KKwogVEVTVChBdWRpb0VuY29kZXJPcHVzVGVzdCwgU2V0UmVjZWl2ZXJGcmFtZUxl
bmd0aFJhbmdlKSB7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMik7CiAgIC8vIEJlZm9y
ZSBjYWxsaW5nIHRvIHxTZXRSZWNlaXZlckZyYW1lTGVuZ3RoUmFuZ2V8LApAQCAtNDQ2LDYgKzQ5
MSw1NyBAQCBURVNUKEF1ZGlvRW5jb2Rlck9wdXNUZXN0LCBCaXRyYXRlQm91bmRlZCkgewogICBF
WFBFQ1RfRVEoa01heEJpdHJhdGVCcHMsIHN0YXRlcy0+ZW5jb2Rlci0+R2V0VGFyZ2V0Qml0cmF0
ZSgpKTsKIH0KIAorVEVTVChBdWRpb0VuY29kZXJPcHVzVGVzdCwgTWluUGFja2V0TG9zc1JhdGUp
IHsKKyAgY29uc3RleHByIGZsb2F0IGtEZWZhdWx0TWluUGFja2V0TG9zc1JhdGUgPSAwLjAxOwor
ICB7CisgICAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAor
ICAgICAgICAiV2ViUlRDLUF1ZGlvLU9wdXNNaW5QYWNrZXRMb3NzUmF0ZS9FbmFibGVkLyIpOwor
ICAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgICAgRVhQRUNUX0VRKGtEZWZhdWx0
TWluUGFja2V0TG9zc1JhdGUsIHN0YXRlcy0+ZW5jb2Rlci0+cGFja2V0X2xvc3NfcmF0ZSgpKTsK
KyAgfQorICB7CisgICAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJp
YWxzKAorICAgICAgICAiV2ViUlRDLUF1ZGlvLU9wdXNNaW5QYWNrZXRMb3NzUmF0ZS9FbmFibGVk
LTIwMC8iKTsKKyAgICBhdXRvIHN0YXRlcyA9IENyZWF0ZUNvZGVjKDEpOworICAgIEVYUEVDVF9F
UShrRGVmYXVsdE1pblBhY2tldExvc3NSYXRlLCBzdGF0ZXMtPmVuY29kZXItPnBhY2tldF9sb3Nz
X3JhdGUoKSk7CisgIH0KKyAgeworICAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRl
X2ZpZWxkX3RyaWFscygKKyAgICAgICAgIldlYlJUQy1BdWRpby1PcHVzTWluUGFja2V0TG9zc1Jh
dGUvRW5hYmxlZC01MC8iKTsKKyAgICBjb25zdGV4cHIgZmxvYXQga01pblBhY2tldExvc3NSYXRl
ID0gMC41OworICAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgICAgRVhQRUNUX0VR
KGtNaW5QYWNrZXRMb3NzUmF0ZSwgc3RhdGVzLT5lbmNvZGVyLT5wYWNrZXRfbG9zc19yYXRlKCkp
OworICB9Cit9CisKK1RFU1QoQXVkaW9FbmNvZGVyT3B1c1Rlc3QsIE5ld1BhY2tldExvc3NSYXRl
T3B0aW1pemVyKSB7CisgIHsKKyAgICBhdXRvIHN0YXRlcyA9IENyZWF0ZUNvZGVjKDEpOworICAg
IGF1dG8gb3B0aW1pemVyID0gc3RhdGVzLT5lbmNvZGVyLT5uZXdfcGFja2V0X2xvc3Nfb3B0aW1p
emVyKCk7CisgICAgRVhQRUNUX0VRKG51bGxwdHIsIG9wdGltaXplcik7CisgIH0KKyAgeworICAg
IHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscygKKyAgICAgICAg
IldlYlJUQy1BdWRpby1OZXdPcHVzUGFja2V0TG9zc1JhdGVPcHRpbWl6YXRpb24vRW5hYmxlZC8i
KTsKKyAgICBhdXRvIHN0YXRlcyA9IENyZWF0ZUNvZGVjKDEpOworICAgIGF1dG8gb3B0aW1pemVy
ID0gc3RhdGVzLT5lbmNvZGVyLT5uZXdfcGFja2V0X2xvc3Nfb3B0aW1pemVyKCk7CisgICAgQVNT
RVJUX05FKG51bGxwdHIsIG9wdGltaXplcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMDEsIG9w
dGltaXplci0+bWluX3BhY2tldF9sb3NzX3JhdGUoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAu
MjAsIG9wdGltaXplci0+bWF4X3BhY2tldF9sb3NzX3JhdGUoKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDEuMDAsIG9wdGltaXplci0+c2xvcGUoKSk7CisgIH0KKyAgeworICAgIHRlc3Q6OlNjb3Bl
ZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscygKKyAgICAgICAgIldlYlJUQy1BdWRp
by1OZXdPcHVzUGFja2V0TG9zc1JhdGVPcHRpbWl6YXRpb24vRW5hYmxlZC0yLTUwLTAuNy8iKTsK
KyAgICBhdXRvIHN0YXRlcyA9IENyZWF0ZUNvZGVjKDEpOworICAgIGF1dG8gb3B0aW1pemVyID0g
c3RhdGVzLT5lbmNvZGVyLT5uZXdfcGFja2V0X2xvc3Nfb3B0aW1pemVyKCk7CisgICAgQVNTRVJU
X05FKG51bGxwdHIsIG9wdGltaXplcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMDIsIG9wdGlt
aXplci0+bWluX3BhY2tldF9sb3NzX3JhdGUoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNTAs
IG9wdGltaXplci0+bWF4X3BhY2tldF9sb3NzX3JhdGUoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDAuNzAsIG9wdGltaXplci0+c2xvcGUoKSk7CisgIH0KK30KKwogLy8gVmVyaWZpZXMgdGhhdCB0
aGUgY29tcGxleGl0eSBhZGFwdGF0aW9uIGluIHRoZSBjb25maWcgd29ya3MgYXMgaW50ZW5kZWQu
CiBURVNUKEF1ZGlvRW5jb2Rlck9wdXNUZXN0LCBDb25maWdDb21wbGV4aXR5QWRhcHRhdGlvbikg
ewogICBBdWRpb0VuY29kZXJPcHVzQ29uZmlnIGNvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9wY20xNmIvYXVkaW9fZGVjb2Rlcl9wY20xNmIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZi
L2F1ZGlvX2RlY29kZXJfcGNtMTZiLmNjCmluZGV4IGIwNzYyNGRmZmM1YzRlMzJjODM2M2VlMGE2
Zjg3OTEwNTA0YTA1NjAuLjFkZDJmZjI4OWVlMTAyODA5NjNjM2RiNWRlNTg1NDU4ODZjNjBkNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9fZGVjb2Rlcl9wY20xNmIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19kZWNvZGVyX3BjbTE2Yi5jYwpAQCAtMTAs
NiArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2
Yi9hdWRpb19kZWNvZGVyX3BjbTE2Yi5oIgogCisjaW5jbHVkZSA8dXRpbGl0eT4KKwogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9sZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFt
ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZi
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvcGNtMTZiL2F1ZGlvX2RlY29kZXJfcGNtMTZiLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1
ZGlvX2RlY29kZXJfcGNtMTZiLmgKaW5kZXggN2QyMzQyMjRlM2NkMDBkYWE4ZTgxYjhhZDMzNzRj
MTc5MzE4NTkzOS4uOWI0NzhkODA2ZjdhYzYwNWQxYTk0OTMzMTY4Y2IwZDI1MWZhNjE0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19kZWNvZGVyX3BjbTE2Yi5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9fZGVjb2Rlcl9wY20xNmIuaApAQCAtMTEsNyArMTEs
MTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX1BDTTE2Ql9BVURJT19E
RUNPREVSX1BDTTE2Ql9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfUENN
MTZCX0FVRElPX0RFQ09ERVJfUENNMTZCX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNs
dWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19lbmNvZGVyX3BjbTE2Yi5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9fZW5jb2Rlcl9wY20xNmIuY2MKaW5kZXggODMx
ZGFlZGM2M2Y5ZDFmNjJiZDMzY2ZmMTMzZWU4ZDBmOGVhMzMyNi4uMTA2YWIxNjc5NDAyNTE4M2Fk
YTQwMTgxYjZkNDY1NDA5NTQ3MWIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9h
dWRpb19lbmNvZGVyX3BjbTE2Yi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2Vu
Y29kZXJfcGNtMTZiLmNjCkBAIC0xMCwxMiArMTAsOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19lbmNvZGVyX3BjbTE2Yi5oIgogCi0jaW5j
bHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQo
YnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3BjbTE2Yi5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lv
bnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9w
Y20xNmIvcGNtMTZiX2NvbW1vbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiX2NvbW1v
bi5jYwppbmRleCA2ZDBmYzJkMDE1Y2M1ODg2OGI2ZjhiMDFkZWRhZjhmZDExODk2NmM1Li44Zjhi
YmE1MjdiZTQ1ZjkwYjk3MDhjOGExYzBiOWMzZTBlYmJhNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvcGNtMTZiL3BjbTE2Yl9jb21tb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9w
Y20xNmJfY29tbW9uLmNjCkBAIC0xMCw2ICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3BjbTE2Yl9jb21tb24uaCIKIAorI2luY2x1ZGUgPHN0
ZGludC5oPgorI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CisKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCiB2b2lkIFBjbTE2QkFwcGVuZFN1cHBvcnRlZENvZGVjU3BlY3Moc3RkOjp2ZWN0b3I8QXVk
aW9Db2RlY1NwZWM+KiBzcGVjcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9w
Y20xNmJfY29tbW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3BjbTE2Yl9jb21tb24uaAppbmRl
eCA5ODBhOTk2NDA4ODY0MmRhYzg5MjJkZTgxNjIzNmJiNDUwZWE2MDcxLi4zZmFlNzE3ZmYzMWQ5
YzRjMWFlMzAxOTA5N2E1NTVhZDljNDY3OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNt
MTZiL3BjbTE2Yl9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3BjbTE2Yl9jb21t
b24uaApAQCAtMTMsNyArMTMsNyBAQAogCiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAi
YXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkv
YXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIHZvaWQg
UGNtMTZCQXBwZW5kU3VwcG9ydGVkQ29kZWNTcGVjcyhzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjU3Bl
Yz4qIHNwZWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9yZWQvYXVkaW9fZW5jb2Rlcl9j
b3B5X3JlZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9yZWQvYXVkaW9fZW5jb2Rlcl9jb3B5X3JlZC5jYwpp
bmRleCAyNjAxZjI2ZTQ0ZmRkYWNkZGExOGY0YWIwZWRiNzM0NDE3MGRiMmM2Li4xMjRlODExOTgx
NzljZDNjYzA1ODI0YjY3NGQ5NzcyYzVkYzIyN2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
cmVkL2F1ZGlvX2VuY29kZXJfY29weV9yZWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9hdWRp
b19lbmNvZGVyX2NvcHlfcmVkLmNjCkBAIC0xMSw4ICsxMSw4IEBACiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9hdWRpb19lbmNvZGVyX2NvcHlfcmVkLmgiCiAKICNp
bmNsdWRlIDxzdHJpbmcuaD4KLQogI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9y
PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9yZWQvYXVkaW9fZW5jb2Rlcl9jb3B5X3JlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9hdWRp
b19lbmNvZGVyX2NvcHlfcmVkLmgKaW5kZXggNDkyZWUzYWZiNDcxNzYzYjg3ZDI3NzdkNjA1ODMw
Njk2ZGIyYjI3OS4uNWE2ODg3NmI4OThjMTQzZDU2YTEyMTNmOGJmNDYwZmEzMDcyOGU1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9hdWRpb19lbmNvZGVyX2NvcHlfcmVkLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL3JlZC9hdWRpb19lbmNvZGVyX2NvcHlfcmVkLmgKQEAgLTExLDkgKzExLDEy
IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19SRURfQVVESU9fRU5DT0RF
Ul9DT1BZX1JFRF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfUkVEX0FV
RElPX0VOQ09ERVJfQ09QWV9SRURfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGUuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oCmluZGV4IGI5ZjIyMjg4ZmQ5ZmNlMzJiNWYx
ZTVmOTc5YmU0N2YxY2RjNTAwYTMuLmY5ZmRiYTVmNTExYjMzZDBhYjkwMmFhOWIyZWMwZGJkMDgx
YTU4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oCkBAIC0xNTQsNDAgKzE1NCw2
IEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlIHsKICAgLy8gICBTZW5kZXIKICAgLy8KIAotICAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gaW50MzJfdCBSZWdpc3RlclNlbmRDb2RlYygpCi0gIC8v
IFJlZ2lzdGVycyBhIGNvZGVjLCBzcGVjaWZpZWQgYnkgfHNlbmRfY29kZWN8LCBhcyBzZW5kaW5n
IGNvZGVjLgotICAvLyBUaGlzIEFQSSBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIG9mIHRpbWVzIHRv
IHJlZ2lzdGVyIENvZGVjLiBUaGUgbGFzdCBjb2RlYwotICAvLyByZWdpc3RlcmVkIG92ZXJ3cml0
ZXMgdGhlIHByZXZpb3VzIG9uZXMuCi0gIC8vIFRoZSBBUEkgY2FuIGFsc28gYmUgdXNlZCB0byBj
aGFuZ2UgcGF5bG9hZCB0eXBlIGZvciBDTkcgYW5kIFJFRCwgd2hpY2ggYXJlCi0gIC8vIHJlZ2lz
dGVyZWQgYnkgZGVmYXVsdCB0byBkZWZhdWx0IHBheWxvYWQgdHlwZXMuCi0gIC8vIE5vdGUgdGhh
dCByZWdpc3RlcmluZyBDTkcgYW5kIFJFRCB3b24ndCBvdmVyd3JpdGUgc3BlZWNoIGNvZGVjcy4K
LSAgLy8gVGhpcyBBUEkgY2FuIGJlIGNhbGxlZCB0byBzZXQvY2hhbmdlIHRoZSBzZW5kIHBheWxv
YWQtdHlwZSwgZnJhbWUtc2l6ZQotICAvLyBvciBlbmNvZGluZyByYXRlIChpZiBhcHBsaWNhYmxl
IGZvciB0aGUgY29kZWMpLgotICAvLwotICAvLyBOb3RlOiBJZiBhIHN0ZXJlbyBjb2RlYyBpcyBy
ZWdpc3RlcmVkIGFzIHNlbmQgY29kZWMsIFZBRC9EVFggd2lsbAotICAvLyBhdXRvbWF0aWNhbGx5
IGJlIHR1cm5lZCBvZmYsIHNpbmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN0ZXJlbyBzZW5k
aW5nLgotICAvLwotICAvLyBOb3RlOiBJZiBhIHNlY29uZGFyeSBlbmNvZGVyIGlzIGFscmVhZHkg
cmVnaXN0ZXJlZCwgYW5kIHRoZSBuZXcgc2VuZC1jb2RlYwotICAvLyBoYXMgYSBzYW1wbGluZyBy
YXRlIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHNlY29uZGFyeSBlbmNvZGVyLCB0aGUKLSAgLy8g
c2Vjb25kYXJ5IGVuY29kZXIgd2lsbCBiZSB1bnJlZ2lzdGVyZWQuCi0gIC8vCi0gIC8vIElucHV0
OgotICAvLyAgIC1zZW5kX2NvZGVjICAgICAgICAgOiBQYXJhbWV0ZXJzIG9mIHRoZSBjb2RlYyB0
byBiZSByZWdpc3RlcmVkLCBjLmYuCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1v
bl90eXBlcy5oIGZvciB0aGUgZGVmaW5pdGlvbiBvZgotICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICBDb2RlY0luc3QuCi0gIC8vCi0gIC8vIFJldHVybiB2YWx1ZToKLSAgLy8gICAtMSBpZiBm
YWlsZWQgdG8gaW5pdGlhbGl6ZSwKLSAgLy8gICAgMCBpZiBzdWNjZWVkZWQuCi0gIC8vCi0gIHZp
cnR1YWwgaW50MzJfdCBSZWdpc3RlclNlbmRDb2RlYyhjb25zdCBDb2RlY0luc3QmIHNlbmRfY29k
ZWMpID0gMDsKLQotICAvLyBSZWdpc3RlcnMgfGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyfCBhcyBl
bmNvZGVyLiBUaGUgbmV3IGVuY29kZXIgd2lsbAotICAvLyByZXBsYWNlIGFueSBwcmV2aW91c2x5
IHJlZ2lzdGVyZWQgc3BlZWNoIGVuY29kZXIgKGludGVybmFsIG9yIGV4dGVybmFsKS4KLSAgdmly
dHVhbCB2b2lkIFJlZ2lzdGVyRXh0ZXJuYWxTZW5kQ29kZWMoCi0gICAgICBBdWRpb0VuY29kZXIq
IGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyKSA9IDA7Ci0KICAgLy8gfG1vZGlmaWVyfCBpcyBjYWxs
ZWQgZXhhY3RseSBvbmNlIHdpdGggb25lIGFyZ3VtZW50OiBhIHBvaW50ZXIgdG8gdGhlCiAgIC8v
IHVuaXF1ZV9wdHIgdGhhdCBob2xkcyB0aGUgY3VycmVudCBlbmNvZGVyICh3aGljaCBpcyBudWxs
IGlmIHRoZXJlIGlzIG5vCiAgIC8vIGN1cnJlbnQgZW5jb2RlcikuIEZvciB0aGUgZHVyYXRpb24g
b2YgdGhlIGNhbGwsIHxtb2RpZmllcnwgaGFzIGV4Y2x1c2l2ZQpAQCAtMjU3LDcxICsyMjMsNiBA
QCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZSB7CiAgIC8vCiAgIHZpcnR1YWwgaW50MzJfdCBBZGQx
ME1zRGF0YShjb25zdCBBdWRpb0ZyYW1lJiBhdWRpb19mcmFtZSkgPSAwOwogCi0gIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwotICAvLyAoUkVEKSBSZWR1bmRhbnQgQ29kaW5nCi0gIC8vCi0KLSAgLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0gIC8vIGludDMyX3QgU2V0UkVEU3RhdHVzKCkKLSAgLy8gY29uZmlndXJl
IFJFRCBzdGF0dXMgaS5lLiBvbi9vZmYuCi0gIC8vCi0gIC8vIFJGQyAyMTk4IGRlc2NyaWJlcyBh
IHNvbHV0aW9uIHdoaWNoIGhhcyBhIHNpbmdsZSBwYXlsb2FkIHR5cGUgd2hpY2gKLSAgLy8gc2ln
bmlmaWVzIGEgcGFja2V0IHdpdGggcmVkdW5kYW5jeS4gVGhhdCBwYWNrZXQgdGhlbiBiZWNvbWVz
IGEgY29udGFpbmVyLAotICAvLyBlbmNhcHN1bGF0aW5nIG11bHRpcGxlIHBheWxvYWRzIGludG8g
YSBzaW5nbGUgUlRQIHBhY2tldC4KLSAgLy8gU3VjaCBhIHNjaGVtZSBpcyBmbGV4aWJsZSwgc2lu
Y2UgYW55IGFtb3VudCBvZiByZWR1bmRhbmN5IG1heSBiZQotICAvLyBlbmNhcHN1bGF0ZWQgd2l0
aGluIGEgc2luZ2xlIHBhY2tldC4gIFRoZXJlIGlzLCBob3dldmVyLCBhIHNtYWxsIG92ZXJoZWFk
Ci0gIC8vIHNpbmNlIGVhY2ggZW5jYXBzdWxhdGVkIHBheWxvYWQgbXVzdCBiZSBwcmVjZWRlZCBi
eSBhIGhlYWRlciBpbmRpY2F0aW5nCi0gIC8vIHRoZSB0eXBlIG9mIGRhdGEgZW5jbG9zZWQuCi0g
IC8vCi0gIC8vIElucHV0OgotICAvLyAgIC1lbmFibGVfcmVkICAgICAgICAgOiBpZiB0cnVlIFJF
RCBpcyBlbmFibGVkLCBvdGhlcndpc2UgUkVEIGlzCi0gIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpc2FibGVkLgotICAvLwotICAvLyBSZXR1cm4gdmFsdWU6Ci0gIC8vICAgLTEgaWYgZmFp
bGVkIHRvIHNldCBSRUQgc3RhdHVzLAotICAvLyAgICAwIGlmIHN1Y2NlZWRlZC4KLSAgLy8KLSAg
dmlydHVhbCBpbnQzMl90IFNldFJFRFN0YXR1cyhib29sIGVuYWJsZV9yZWQpID0gMDsKLQotICAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gYm9vbCBSRURTdGF0dXMoKQotICAvLyBHZXQgUkVEIHN0
YXR1cwotICAvLwotICAvLyBSZXR1cm4gdmFsdWU6Ci0gIC8vICAgdHJ1ZSBpZiBSRUQgaXMgZW5h
YmxlZCwKLSAgLy8gICBmYWxzZSBpZiBSRUQgaXMgZGlzYWJsZWQuCi0gIC8vCi0gIHZpcnR1YWwg
Ym9vbCBSRURTdGF0dXMoKSBjb25zdCA9IDA7Ci0KLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8v
IChGRUMpIEZvcndhcmQgRXJyb3IgQ29ycmVjdGlvbiAoY29kZWMgaW50ZXJuYWwpCi0gIC8vCi0K
LSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8vIGludDMyX3QgU2V0Q29kZWNGRUMoKQotICAvLyBD
b25maWd1cmVzIGNvZGVjIGludGVybmFsIEZFQyBzdGF0dXMgaS5lLiBvbi9vZmYuIE5vIGVmZmVj
dHMgb24gY29kZWNzIHRoYXQKLSAgLy8gZG8gbm90IHByb3ZpZGUgaW50ZXJuYWwgRkVDLgotICAv
LwotICAvLyBJbnB1dDoKLSAgLy8gICAtZW5hYmxlX2ZlYyAgICAgICAgIDogaWYgdHJ1ZSBGRUMg
d2lsbCBiZSBlbmFibGVkIG90aGVyd2lzZSB0aGUgRkVDIGlzCi0gIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpc2FibGVkLgotICAvLwotICAvLyBSZXR1cm4gdmFsdWU6Ci0gIC8vICAgLTEg
aWYgZmFpbGVkLCBvciB0aGUgY29kZWMgZG9lcyBub3Qgc3VwcG9ydCBGRUMKLSAgLy8gICAgMCBp
ZiBzdWNjZWVkZWQuCi0gIC8vCi0gIHZpcnR1YWwgaW50IFNldENvZGVjRkVDKGJvb2wgZW5hYmxl
X2NvZGVjX2ZlYykgPSAwOwotCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAvLyBib29sIENvZGVj
RkVDKCkKLSAgLy8gR2V0cyBzdGF0dXMgb2YgY29kZWMgaW50ZXJuYWwgRkVDLgotICAvLwotICAv
LyBSZXR1cm4gdmFsdWU6Ci0gIC8vICAgdHJ1ZSBpZiBGRUMgaXMgZW5hYmxlZCwKLSAgLy8gICBm
YWxzZSBpZiBGRUMgaXMgZGlzYWJsZWQuCi0gIC8vCi0gIHZpcnR1YWwgYm9vbCBDb2RlY0ZFQygp
IGNvbnN0ID0gMDsKLQogICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgLy8gaW50IFNldFBhY2tldExv
c3NSYXRlKCkKICAgLy8gU2V0cyBleHBlY3RlZCBwYWNrZXQgbG9zcyByYXRlIGZvciBlbmNvZGlu
Zy4gU29tZSBlbmNvZGVycyBwcm92aWRlIHBhY2tldApAQCAtMzQzLDU1ICsyNDQsNiBAQCBjbGFz
cyBBdWRpb0NvZGluZ01vZHVsZSB7CiAgIC8vICAgKFZBRCkgVm9pY2UgQWN0aXZpdHkgRGV0ZWN0
aW9uCiAgIC8vCiAKLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8vIGludDMyX3QgU2V0VkFEKCkK
LSAgLy8gSWYgRFRYIGlzIGVuYWJsZWQgJiB0aGUgY29kZWMgZG9lcyBub3QgaGF2ZSBpbnRlcm5h
bCBEVFgvVkFECi0gIC8vIFdlYlJ0YyBWQUQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGVuYWJsZWQg
YW5kIHxlbmFibGVfdmFkfCBpcyBpZ25vcmVkLgotICAvLwotICAvLyBJZiBEVFggaXMgZGlzYWJs
ZWQgYnV0IFZBRCBpcyBlbmFibGVkIG5vIERUWCBwYWNrZXRzIGFyZSBzZW5kLAotICAvLyByZWdh
cmRsZXNzIG9mIHdoZXRoZXIgdGhlIGNvZGVjIGhhcyBpbnRlcm5hbCBEVFgvVkFEIG9yIG5vdC4g
SW4gdGhpcwotICAvLyBjYXNlLCBXZWJSdGMgVkFEIGlzIHJ1bm5pbmcgdG8gbGFiZWwgZnJhbWVz
IGFzIGFjdGl2ZS9pbi1hY3RpdmUuCi0gIC8vCi0gIC8vIE5PVEUhIFZBRC9EVFggaXMgbm90IHN1
cHBvcnRlZCB3aGVuIHNlbmRpbmcgc3RlcmVvLgotICAvLwotICAvLyBJbnB1dHM6Ci0gIC8vICAg
LWVuYWJsZV9kdHggICAgICAgICA6IGlmIHRydWUgRFRYIGlzIGVuYWJsZWQsCi0gIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSBEVFggaXMgZGlzYWJsZWQuCi0gIC8vICAgLWVu
YWJsZV92YWQgICAgICAgICA6IGlmIHRydWUgVkFEIGlzIGVuYWJsZWQsCi0gIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgIG90aGVyd2lzZSBWQUQgaXMgZGlzYWJsZWQuCi0gIC8vICAgLXZhZF9t
b2RlICAgICAgICAgICA6IGRldGVybWluZXMgdGhlIGFnZ3Jlc3NpdmVuZXNzIG9mIFZBRC4gQSBt
b3JlCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGFnZ3Jlc3NpdmUgbW9kZSByZXN1bHRz
IGluIG1vcmUgZnJhbWVzIGxhYmVsZWQKLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXMg
aW4tYWN0aXZlLCBjLmYuIGRlZmluaXRpb24gb2YKLSAgLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgQUNNVkFETW9kZSBpbiBhdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzLmgKLSAgLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIHZhbGlkIHZhbHVlcy4KLSAgLy8KLSAgLy8gUmV0dXJu
IHZhbHVlOgotICAvLyAgIC0xIGlmIGZhaWxlZCB0byBzZXQgdXAgVkFEL0RUWCwKLSAgLy8gICAg
MCBpZiBzdWNjZWVkZWQuCi0gIC8vCi0gIHZpcnR1YWwgaW50MzJfdCBTZXRWQUQoY29uc3QgYm9v
bCBlbmFibGVfZHR4ID0gdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29s
IGVuYWJsZV92YWQgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBQ01W
QURNb2RlIHZhZF9tb2RlID0gVkFETm9ybWFsKSA9IDA7Ci0KLSAgLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0gIC8vIGludDMyX3QgVkFEKCkKLSAgLy8gR2V0IFZBRCBzdGF0dXMuCi0gIC8vCi0gIC8vIE91
dHB1dHM6Ci0gIC8vICAgLWR0eF9lbmFibGVkICAgICAgICA6IGlzIHNldCB0byB0cnVlIGlmIERU
WCBpcyBlbmFibGVkLCBvdGhlcndpc2UKLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgaXMg
c2V0IHRvIGZhbHNlLgotICAvLyAgIC12YWRfZW5hYmxlZCAgICAgICAgOiBpcyBzZXQgdG8gdHJ1
ZSBpZiBWQUQgaXMgZW5hYmxlZCwgb3RoZXJ3aXNlCi0gIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgIGlzIHNldCB0byBmYWxzZS4KLSAgLy8gICAtdmFkX21vZGUgICAgICAgICAgICA6IGlzIHNl
dCB0byB0aGUgY3VycmVudCBhZ2dyZXNzaXZlbmVzcyBvZiBWQUQuCi0gIC8vCi0gIC8vIFJldHVy
biB2YWx1ZToKLSAgLy8gICAtMSBpZiBmYWlscyB0byByZXRyaWV2ZSB0aGUgc2V0dGluZyBvZiBE
VFgvVkFELAotICAvLyAgICAwIGlmIHN1Y2NlZWRlZC4KLSAgLy8KLSAgdmlydHVhbCBpbnQzMl90
IFZBRChib29sKiBkdHhfZW5hYmxlZCwKLSAgICAgICAgICAgICAgICAgICAgICBib29sKiB2YWRf
ZW5hYmxlZCwKLSAgICAgICAgICAgICAgICAgICAgICBBQ01WQURNb2RlKiB2YWRfbW9kZSkgY29u
c3QgPSAwOwotCiAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAvLyBpbnQzMl90IFJlZ2lzdGVyVkFE
Q2FsbGJhY2soKQogICAvLyBDYWxsIHRoaXMgbWV0aG9kIHRvIHJlZ2lzdGVyIGEgY2FsbGJhY2sg
ZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkCkBAIC00NTUsMjkgKzMwNyw2IEBAIGNsYXNzIEF1ZGlv
Q29kaW5nTW9kdWxlIHsKICAgdmlydHVhbCBib29sIFJlZ2lzdGVyUmVjZWl2ZUNvZGVjKGludCBy
dHBfcGF5bG9hZF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU2RwQXVkaW9Gb3JtYXQmIGF1ZGlvX2Zvcm1hdCkgPSAwOwogCi0gIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotICAvLyBpbnQzMl90IFJlZ2lzdGVyUmVjZWl2ZUNvZGVjKCkKLSAgLy8gUmVnaXN0ZXIg
cG9zc2libGUgZGVjb2RlcnMsIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgZm9yCi0gIC8v
IGNvZGVjcywgQ05HLU5CLCBDTkctV0IsIENORy1TV0IsIEFWVCBhbmQgUkVELgotICAvLwotICAv
LyBJbnB1dDoKLSAgLy8gICAtcmVjZWl2ZV9jb2RlYyAgICAgIDogcGFyYW1ldGVycyBvZiB0aGUg
Y29kZWMgdG8gYmUgcmVnaXN0ZXJlZCwgYy5mLgotICAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICBjb21tb25fdHlwZXMuaCBmb3IgdGhlIGRlZmluaXRpb24gb2YKLSAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgQ29kZWNJbnN0LgotICAvLwotICAvLyBSZXR1cm4gdmFsdWU6Ci0gIC8vICAg
LTEgaWYgZmFpbGVkIHRvIHJlZ2lzdGVyIHRoZSBjb2RlYwotICAvLyAgICAwIGlmIHRoZSBjb2Rl
YyByZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseS4KLSAgLy8KLSAgdmlydHVhbCBpbnQgUmVnaXN0ZXJS
ZWNlaXZlQ29kZWMoY29uc3QgQ29kZWNJbnN0JiByZWNlaXZlX2NvZGVjKSA9IDA7Ci0KLSAgLy8g
UmVnaXN0ZXIgYSBkZWNvZGVyOyBjYWxsIHJlcGVhdGVkbHkgdG8gcmVnaXN0ZXIgbXVsdGlwbGUg
ZGVjb2RlcnMuIHxkZnwgaXMKLSAgLy8gYSBkZWNvZGVyIGZhY3RvcnkgdGhhdCByZXR1cm5zIGFu
IGlTQUMgZGVjb2RlcjsgaXQgd2lsbCBiZSBjYWxsZWQgb25jZSBpZgotICAvLyB0aGUgZGVjb2Rl
ciBiZWluZyByZWdpc3RlcmVkIGlzIGlTQUMuCi0gIHZpcnR1YWwgaW50IFJlZ2lzdGVyUmVjZWl2
ZUNvZGVjKAotICAgICAgY29uc3QgQ29kZWNJbnN0JiByZWNlaXZlX2NvZGVjLAotICAgICAgcnRj
OjpGdW5jdGlvblZpZXc8c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4oKT4gaXNhY19mYWN0
b3J5KSA9IDA7Ci0KICAgLy8gUmVnaXN0ZXJzIGFuIGV4dGVybmFsIGRlY29kZXIuIFRoZSBuYW1l
IGlzIG9ubHkgdXNlZCB0byBwcm92aWRlIGluZm9ybWF0aW9uCiAgIC8vIGJhY2sgdG8gdGhlIGNh
bGxlciBhYm91dCB0aGUgZGVjb2Rlci4gSGVuY2UsIHRoZSBuYW1lIGlzIGFyYml0cmFyeSwgYW5k
IG1heQogICAvLyBiZSBlbXB0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29k
aW5nX21vZHVsZV90eXBlZGVmcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxl
X3R5cGVkZWZzLmgKaW5kZXggY2Q0MzUxYjA3ZmYxYjk0MzQ1MDkwNDM5MDg3MzI5NmU2NzMzNTRl
NC4uYmFmZmY3MmU1YWQ0YjZhY2YwMWVhMjgzZGU3YzA2MTU2MWE1ZjM2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
aW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzLmgKQEAgLTEzLDYgKzEzLDggQEAK
IAogI2luY2x1ZGUgPG1hcD4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgiCisK
IG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTQzLDYgKzQ1LDg0
IEBAIGVudW0gT3B1c0FwcGxpY2F0aW9uTW9kZSB7CiAgIGtBdWRpbyA9IDEsCiB9OwogCisvLyBT
dGF0aXN0aWNzIGZvciBjYWxscyB0byBBdWRpb0NvZGluZ01vZHVsZTo6UGxheW91dERhdGExME1z
KCkuCitzdHJ1Y3QgQXVkaW9EZWNvZGluZ0NhbGxTdGF0cyB7CisgIEF1ZGlvRGVjb2RpbmdDYWxs
U3RhdHMoKQorICAgICAgOiBjYWxsc190b19zaWxlbmNlX2dlbmVyYXRvcigwKSwKKyAgICAgICAg
Y2FsbHNfdG9fbmV0ZXEoMCksCisgICAgICAgIGRlY29kZWRfbm9ybWFsKDApLAorICAgICAgICBk
ZWNvZGVkX3BsYygwKSwKKyAgICAgICAgZGVjb2RlZF9jbmcoMCksCisgICAgICAgIGRlY29kZWRf
cGxjX2NuZygwKSwKKyAgICAgICAgZGVjb2RlZF9tdXRlZF9vdXRwdXQoMCkge30KKworICBpbnQg
Y2FsbHNfdG9fc2lsZW5jZV9nZW5lcmF0b3I7ICAvLyBOdW1iZXIgb2YgY2FsbHMgd2hlcmUgc2ls
ZW5jZSBnZW5lcmF0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFu
ZCBOZXRFcSB3YXMgZGlzZW5nYWdlZCBmcm9tIGRlY29kaW5nLgorICBpbnQgY2FsbHNfdG9fbmV0
ZXE7ICAgICAgICAgICAgICAvLyBOdW1iZXIgb2YgY2FsbHMgdG8gTmV0RXEuCisgIGludCBkZWNv
ZGVkX25vcm1hbDsgIC8vIE51bWJlciBvZiBjYWxscyB3aGVyZSBhdWRpbyBSVFAgcGFja2V0IGRl
Y29kZWQuCisgIGludCBkZWNvZGVkX3BsYzsgICAgIC8vIE51bWJlciBvZiBjYWxscyByZXN1bHRl
ZCBpbiBQTEMuCisgIGludCBkZWNvZGVkX2NuZzsgIC8vIE51bWJlciBvZiBjYWxscyB3aGVyZSBj
b21mb3J0IG5vaXNlIGdlbmVyYXRlZCBkdWUgdG8gRFRYLgorICBpbnQgZGVjb2RlZF9wbGNfY25n
OyAgICAgICAvLyBOdW1iZXIgb2YgY2FsbHMgcmVzdWx0ZWQgd2hlcmUgUExDIGZhZGVkIHRvIENO
Ry4KKyAgaW50IGRlY29kZWRfbXV0ZWRfb3V0cHV0OyAgLy8gTnVtYmVyIG9mIGNhbGxzIHJldHVy
bmluZyBhIG11dGVkIHN0YXRlIG91dHB1dC4KK307CisKKy8vIE5FVEVRIHN0YXRpc3RpY3MuCitz
dHJ1Y3QgTmV0d29ya1N0YXRpc3RpY3MgeworICAvLyBjdXJyZW50IGppdHRlciBidWZmZXIgc2l6
ZSBpbiBtcworICB1aW50MTZfdCBjdXJyZW50QnVmZmVyU2l6ZTsKKyAgLy8gcHJlZmVycmVkIChv
cHRpbWFsKSBidWZmZXIgc2l6ZSBpbiBtcworICB1aW50MTZfdCBwcmVmZXJyZWRCdWZmZXJTaXpl
OworICAvLyBhZGRpbmcgZXh0cmEgZGVsYXkgZHVlIHRvICJwZWFreSBqaXR0ZXIiCisgIGJvb2wg
aml0dGVyUGVha3NGb3VuZDsKKyAgLy8gU3RhdHMgYmVsb3cgY29ycmVzcG9uZCB0byBzaW1pbGFy
bHktbmFtZWQgZmllbGRzIGluIHRoZSBXZWJSVEMgc3RhdHMgc3BlYy4KKyAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jZG9tLXJ0Y21lZGlhc3RyZWFtdHJhY2tzdGF0cwor
ICB1aW50NjRfdCB0b3RhbFNhbXBsZXNSZWNlaXZlZDsKKyAgdWludDY0X3QgY29uY2VhbGVkU2Ft
cGxlczsKKyAgdWludDY0X3QgY29uY2VhbG1lbnRFdmVudHM7CisgIHVpbnQ2NF90IGppdHRlckJ1
ZmZlckRlbGF5TXM7CisgIC8vIFN0YXRzIGJlbG93IERPIE5PVCBjb3JyZXNwb25kIGRpcmVjdGx5
IHRvIGFueXRoaW5nIGluIHRoZSBXZWJSVEMgc3RhdHMKKyAgLy8gTG9zcyByYXRlIChuZXR3b3Jr
ICsgbGF0ZSk7IGZyYWN0aW9uIGJldHdlZW4gMCBhbmQgMSwgc2NhbGVkIHRvIFExNC4KKyAgdWlu
dDE2X3QgY3VycmVudFBhY2tldExvc3NSYXRlOworICAvLyBMYXRlIGxvc3MgcmF0ZTsgZnJhY3Rp
b24gYmV0d2VlbiAwIGFuZCAxLCBzY2FsZWQgdG8gUTE0LgorICB1bmlvbiB7CisgICAgUlRDX0RF
UFJFQ0FURUQgdWludDE2X3QgY3VycmVudERpc2NhcmRSYXRlOworICB9OworICAvLyBmcmFjdGlv
biAob2Ygb3JpZ2luYWwgc3RyZWFtKSBvZiBzeW50aGVzaXplZCBhdWRpbyBpbnNlcnRlZCB0aHJv
dWdoCisgIC8vIGV4cGFuc2lvbiAoaW4gUTE0KQorICB1aW50MTZfdCBjdXJyZW50RXhwYW5kUmF0
ZTsKKyAgLy8gZnJhY3Rpb24gKG9mIG9yaWdpbmFsIHN0cmVhbSkgb2Ygc3ludGhlc2l6ZWQgc3Bl
ZWNoIGluc2VydGVkIHRocm91Z2gKKyAgLy8gZXhwYW5zaW9uIChpbiBRMTQpCisgIHVpbnQxNl90
IGN1cnJlbnRTcGVlY2hFeHBhbmRSYXRlOworICAvLyBmcmFjdGlvbiBvZiBzeW50aGVzaXplZCBz
cGVlY2ggaW5zZXJ0ZWQgdGhyb3VnaCBwcmUtZW1wdGl2ZSBleHBhbnNpb24KKyAgLy8gKGluIFEx
NCkKKyAgdWludDE2X3QgY3VycmVudFByZWVtcHRpdmVSYXRlOworICAvLyBmcmFjdGlvbiBvZiBk
YXRhIHJlbW92ZWQgdGhyb3VnaCBhY2NlbGVyYXRpb24gKGluIFExNCkKKyAgdWludDE2X3QgY3Vy
cmVudEFjY2VsZXJhdGVSYXRlOworICAvLyBmcmFjdGlvbiBvZiBkYXRhIGNvbWluZyBmcm9tIHNl
Y29uZGFyeSBkZWNvZGluZyAoaW4gUTE0KQorICB1aW50MTZfdCBjdXJyZW50U2Vjb25kYXJ5RGVj
b2RlZFJhdGU7CisgIC8vIEZyYWN0aW9uIG9mIHNlY29uZGFyeSBkYXRhLCBpbmNsdWRpbmcgRkVD
IGFuZCBSRUQsIHRoYXQgaXMgZGlzY2FyZGVkIChpbgorICAvLyBRMTQpLiBEaXNjYXJkaW5nIG9m
IHNlY29uZGFyeSBkYXRhIGNhbiBiZSBjYXVzZWQgYnkgdGhlIHJlY2VwdGlvbiBvZiB0aGUKKyAg
Ly8gcHJpbWFyeSBkYXRhLCBvYnNvbGV0aW5nIHRoZSBzZWNvbmRhcnkgZGF0YS4gSXQgY2FuIGFs
c28gYmUgY2F1c2VkIGJ5IGVhcmx5CisgIC8vIG9yIGxhdGUgYXJyaXZhbCBvZiBzZWNvbmRhcnkg
ZGF0YS4KKyAgdWludDE2X3QgY3VycmVudFNlY29uZGFyeURpc2NhcmRlZFJhdGU7CisgIC8vIGNs
b2NrLWRyaWZ0IGluIHBhcnRzLXBlci1taWxsaW9uIChuZWdhdGl2ZSBvciBwb3NpdGl2ZSkKKyAg
aW50MzJfdCBjbG9ja0RyaWZ0UFBNOworICAvLyBhdmVyYWdlIHBhY2tldCB3YWl0aW5nIHRpbWUg
aW4gdGhlIGppdHRlciBidWZmZXIgKG1zKQorICBpbnQgbWVhbldhaXRpbmdUaW1lTXM7CisgIC8v
IG1lZGlhbiBwYWNrZXQgd2FpdGluZyB0aW1lIGluIHRoZSBqaXR0ZXIgYnVmZmVyIChtcykKKyAg
aW50IG1lZGlhbldhaXRpbmdUaW1lTXM7CisgIC8vIG1pbiBwYWNrZXQgd2FpdGluZyB0aW1lIGlu
IHRoZSBqaXR0ZXIgYnVmZmVyIChtcykKKyAgaW50IG1pbldhaXRpbmdUaW1lTXM7CisgIC8vIG1h
eCBwYWNrZXQgd2FpdGluZyB0aW1lIGluIHRoZSBqaXR0ZXIgYnVmZmVyIChtcykKKyAgaW50IG1h
eFdhaXRpbmdUaW1lTXM7CisgIC8vIGFkZGVkIHNhbXBsZXMgaW4gb2ZmIG1vZGUgZHVlIHRvIHBh
Y2tldCBsb3NzCisgIHNpemVfdCBhZGRlZFNhbXBsZXM7CisgIC8vIGNvdW50IG9mIHRoZSBudW1i
ZXIgb2YgYnVmZmVyIGZsdXNoZXMKKyAgdWludDY0X3QgcGFja2V0QnVmZmVyRmx1c2hlczsKKyAg
Ly8gbnVtYmVyIG9mIHNhbXBsZXMgZXhwYW5kZWQgZHVlIHRvIGRlbGF5ZWQgcGFja2V0cworICB1
aW50NjRfdCBkZWxheWVkUGFja2V0T3V0YWdlU2FtcGxlczsKK307CisKIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKIAogI2VuZGlmICAvLyBNT0RVTEVTX0FVRElPX0NPRElOR19JTkNMVURFX0FVRElP
X0NPRElOR19NT0RVTEVfVFlQRURFRlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2FjY2Vs
ZXJhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hY2NlbGVyYXRlLmNjCmluZGV4IDE4MzUwYjBhNzg5NzEw
NjQ2NTQ0OTdiZmRhNzYxZWExZDMwZmZhZjQuLjYxNjFhOGY5MWJmMjk0ZmM0Y2NjNTJkZjRmYzIz
YmZhZGIzZTZjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2FjY2VsZXJhdGUuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5jYwpAQCAtMTAsNyArMTAsMTAgQEAKIAogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2FjY2VsZXJhdGUuaCIKIAotI2luY2x1ZGUgImNv
bW1vbl9hdWRpby9zaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNzaW5nX2xp
YnJhcnkuaCIKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworI2luY2x1ZGUgImFwaS9hcnJheV92aWV3
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVj
dG9yLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9h
Y2NlbGVyYXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hY2NlbGVyYXRlLmgKaW5kZXggNTYwOTU2ODk1Yjdk
ZjYzY2Q2NjVkYzRiYTE0MWFhOTMzOTU2MDY4Yy4uMWEzYWY0MmIyZTlmM2M0Yzg4YjkxYTcwOGY0
NDZkMTQxZTg2ZTI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2FjY2VsZXJhdGUuaApAQCAtMTEsMTMgKzExLDE1IEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0FDQ0VMRVJBVEVfSF8KICNkZWZpbmUgTU9EVUxFU19B
VURJT19DT0RJTkdfTkVURVFfQUNDRUxFUkFURV9IXwogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+
CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90aW1lX3N0cmV0Y2guaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2lj
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KK2Ns
YXNzIEF1ZGlvTXVsdGlWZWN0b3I7CiBjbGFzcyBCYWNrZ3JvdW5kTm9pc2U7CiAKIC8vIFRoaXMg
Y2xhc3MgaW1wbGVtZW50cyB0aGUgQWNjZWxlcmF0ZSBvcGVyYXRpb24uIE1vc3Qgb2YgdGhlIHdv
cmsgaXMgZG9uZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaAppbmRleCA4NmY4MjgyMGNhN2E3N2Jk
NjZkMGM2NDBkMTk1MDY2ZGNlOWViYjI2Li5hMmRkM2MzY2IxMGNmZDRjY2I1OGJiMmE4OGQwOTk3
NzhiYmQ3MjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaApAQCAtMTEsOCArMTEsOCBAQAog
I2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9BVURJT19NVUxUSV9WRUNUT1JfSF8K
ICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfQVVESU9fTVVMVElfVkVDVE9SX0hf
CiAKLSNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIEFjY2VzcyB0byBzaXplX3QuCi0KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNp
bmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9f
dmVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb192ZWN0b3IuaAppbmRleCA4MjVhM2JjZWFjOWJl
MGYzYjVlZDYwYTI3ZjU2OGU3NzNmMjkzZDMwLi5kMGRiMzMyZGI2NWRlODQ4ZDMwMmYyMDY0YjMw
MmZmMTFiMTAzYTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb192ZWN0b3IuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9hdWRpb192ZWN0b3IuaApAQCAtMTEsNyArMTEsOCBAQAogI2lmbmRlZiBN
T0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9BVURJT19WRUNUT1JfSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19DT0RJTkdfTkVURVFfQVVESU9fVkVDVE9SX0hfCiAKLSNpbmNsdWRlIDxzdHJpbmcu
aD4gIC8vIEFjY2VzcyB0byBzaXplX3QuCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8
Y3N0ZGludD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2JhY2tncm91bmRfbm9pc2UuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2JhY2tncm91bmRfbm9pc2UuaAppbmRleCA1OGVlY2FhNzA1Y2U4MjUyZGM4N2JiNzc1NGMy
M2M3ZTIyOTJhY2U0Li44NGQ3ZWI5ZDc0NWFmMzZhNDdjNDc2N2U5Y2ZhZDUzMGRiMTRlZWVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9iYWNrZ3JvdW5kX25vaXNlLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvYmFja2dyb3VuZF9ub2lzZS5oCkBAIC0xNCwxMyArMTQsMTIgQEAKICNpbmNsdWRlIDxzdHJp
bmcuaD4gIC8vIHNpemVfdAogI2luY2x1ZGUgPG1lbW9yeT4KIAotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oIgotI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBGb3J3YXJk
IGRlY2xhcmF0aW9ucy4KK2NsYXNzIEF1ZGlvTXVsdGlWZWN0b3I7CiBjbGFzcyBQb3N0RGVjb2Rl
VmFkOwogCiAvLyBUaGlzIGNsYXNzIGhhbmRsZXMgZXN0aW1hdGlvbiBvZiBiYWNrZ3JvdW5kIG5v
aXNlIHBhcmFtZXRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9idWZmZXJfbGV2ZWxfZmls
dGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvYnVmZmVyX2xldmVsX2ZpbHRlci5jYwppbmRleCA2ZThkYTBh
MDFiOTVmYjBjYjk2ZjAzZTkzZmNmYmEyYTYwYzVmMjE2Li4yZjk2NjE4NTM2MmY5NGVlZTljYmI2
MDlmZTg4YzAzMDFmZjlkYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9idWZmZXJfbGV2ZWxf
ZmlsdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2J1ZmZlcl9sZXZlbF9maWx0ZXIuY2MKQEAgLTEw
LDcgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2J1ZmZl
cl9sZXZlbF9maWx0ZXIuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIFByb3ZpZGUgYWNj
ZXNzIHRvIHN0ZDo6bWF4LgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGFsZ29yaXRo
bT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvY29tZm9ydF9ub2lzZS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2Nv
bWZvcnRfbm9pc2UuY2MKaW5kZXggYjM0MWFjZDVhNTBkNmU1OGI4ZGQyMzY1YWY1YzZkNmJkYTcy
NDY4OS4uY2IyYjc0ZGJmMmIxOWEwYWY4ZjE1M2M2OGU3NGU0Zjc4MDVmODljMSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvY29tZm9ydF9ub2lzZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9jb21mb3J0
X25vaXNlLmNjCkBAIC0xMSwxMSArMTEsMTggQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9jb21mb3J0X25vaXNlLmgiCiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNs
dWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPG1lbW9yeT4KIAotI2luY2x1ZGUgImFwaS9hdWRpb19j
b2RlY3MvYXVkaW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fdmVjdG9yLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjb2Rlcl9kYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RzcF9oZWxwZXIuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zeW5jX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9jb21mb3J0X25vaXNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9jb21mb3J0X25vaXNlLmgK
aW5kZXggNTE2OTEyNDA0MGY2NzdjMDRmZWRjYTEyYTA0MTlkYmMzODMyMDE5MS4uM2E5YmZkZTdh
YWI1YjRlNjE4MTNkNWQ2OWVhNGY5MDYwMzgzYmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
Y29tZm9ydF9ub2lzZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2NvbWZvcnRfbm9pc2UuaApAQCAtMTEs
MTIgKzExLDE0IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0NPTUZPUlRf
Tk9JU0VfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfQ09NRk9SVF9OT0lT
RV9IXwogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlf
dmVjdG9yLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNpbmNsdWRlICJydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBGb3J3YXJkIGRlY2xh
cmF0aW9ucy4KK2NsYXNzIEF1ZGlvTXVsdGlWZWN0b3I7CiBjbGFzcyBEZWNvZGVyRGF0YWJhc2U7
CiBjbGFzcyBTeW5jQnVmZmVyOwogc3RydWN0IFBhY2tldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2Nyb3NzX2NvcnJlbGF0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9jcm9zc19jb3JyZWxhdGlvbi5o
CmluZGV4IGE3NDc3NzJjZmM0MzUyYmIyOGRhNTI2NWYwMzljYTM0N2Y0NGUxYjYuLjljZThiZTgz
YWVjZjBmNTJkZWFiN2NkYjJiNjNlNzNjOWNjNjY3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L2Nyb3NzX2NvcnJlbGF0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvY3Jvc3NfY29ycmVsYXRpb24u
aApAQCAtMTEsNyArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9D
Uk9TU19DT1JSRUxBVElPTl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9D
Uk9TU19DT1JSRUxBVElPTl9IXwogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJ
TlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQu
aD4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY2lz
aW9uX2xvZ2ljLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjaXNpb25fbG9naWMuY2MKaW5kZXggMzQ5ZmRh
YjlmMTVkMDk3M2U5ZjhjMzkzZWRkNTZmNDNmODhmYjcxMi4uODNjMmIzYjkwYzU2OWVhYjNjYzEx
ZDQ5MTk3MWNlYjA2OTMyZDNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjaXNpb25fbG9n
aWMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjaXNpb25fbG9naWMuY2MKQEAgLTExLDggKzExLDgg
QEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpYy5o
IgogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2J1ZmZlcl9sZXZlbF9maWx0ZXIuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmgiCkBA
IC0yMCw4ICsyMCw5IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhw
YW5kLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0X2J1ZmZl
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N5bmNfYnVmZmVyLmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpYy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVj
aXNpb25fbG9naWMuaAppbmRleCAzOTc2MWRhMDcwMmI0MTliN2Q1NTU3M2YzMzJlNzY5N2QxM2Y0
MjQ2Li4yYTUzMzU5NGIzMzgyZjQ3MWNlMDg4YTg2ZjIyM2UxODVmOGI2ZjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY2lzaW9u
X2xvZ2ljLmgKQEAgLTEyLDcgKzEyLDYgQEAKICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdf
TkVURVFfREVDSVNJT05fTE9HSUNfSF8KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2RlZmluZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9p
bmNsdWRlL25ldGVxLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGlj
a190aW1lci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjaXNpb25fbG9naWNfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS9kZWNpc2lvbl9sb2dpY191bml0dGVzdC5jYwppbmRleCAwODcyMGQxNzY4ZjQ1NmQwMDA4
MWIzMDA4N2UwZjEwNWFlZTE1NzU4Li4xODNiOWM3OWM5MzU2MzMxZjA3ZDNmNjgwNmU5MWI4OTU3
YzkwN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpY191bml0dGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpY191bml0dGVzdC5jYwpAQCAtMzEsNyAr
MzEsNyBAQCBURVNUKERlY2lzaW9uTG9naWMsIENyZWF0ZUFuZERlc3Ryb3kpIHsKICAgVGlja1Rp
bWVyIHRpY2tfdGltZXI7CiAgIFBhY2tldEJ1ZmZlciBwYWNrZXRfYnVmZmVyKDEwLCAmdGlja190
aW1lcik7CiAgIERlbGF5UGVha0RldGVjdG9yIGRlbGF5X3BlYWtfZGV0ZWN0b3IoJnRpY2tfdGlt
ZXIpOwotICBEZWxheU1hbmFnZXIgZGVsYXlfbWFuYWdlcigyNDAsICZkZWxheV9wZWFrX2RldGVj
dG9yLCAmdGlja190aW1lcik7CisgIERlbGF5TWFuYWdlciBkZWxheV9tYW5hZ2VyKDI0MCwgMCwg
JmRlbGF5X3BlYWtfZGV0ZWN0b3IsICZ0aWNrX3RpbWVyKTsKICAgQnVmZmVyTGV2ZWxGaWx0ZXIg
YnVmZmVyX2xldmVsX2ZpbHRlcjsKICAgRGVjaXNpb25Mb2dpYyogbG9naWMgPSBEZWNpc2lvbkxv
Z2ljOjpDcmVhdGUoCiAgICAgICBmc19oeiwgb3V0cHV0X3NpemVfc2FtcGxlcywgZmFsc2UsICZk
ZWNvZGVyX2RhdGFiYXNlLCBwYWNrZXRfYnVmZmVyLApAQCAtNDgsNyArNDgsNyBAQCBURVNUKERl
Y2lzaW9uTG9naWMsIFBvc3Rwb25lRGVjb2RpbmdBZnRlckV4cGFuc2lvblNldHRpbmdzKSB7CiAg
IFRpY2tUaW1lciB0aWNrX3RpbWVyOwogICBQYWNrZXRCdWZmZXIgcGFja2V0X2J1ZmZlcigxMCwg
JnRpY2tfdGltZXIpOwogICBEZWxheVBlYWtEZXRlY3RvciBkZWxheV9wZWFrX2RldGVjdG9yKCZ0
aWNrX3RpbWVyKTsKLSAgRGVsYXlNYW5hZ2VyIGRlbGF5X21hbmFnZXIoMjQwLCAmZGVsYXlfcGVh
a19kZXRlY3RvciwgJnRpY2tfdGltZXIpOworICBEZWxheU1hbmFnZXIgZGVsYXlfbWFuYWdlcigy
NDAsIDAsICZkZWxheV9wZWFrX2RldGVjdG9yLCAmdGlja190aW1lcik7CiAgIEJ1ZmZlckxldmVs
RmlsdGVyIGJ1ZmZlcl9sZXZlbF9maWx0ZXI7CiAgIHsKICAgICB0ZXN0OjpTY29wZWRGaWVsZFRy
aWFscyBmaWVsZF90cmlhbCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJh
c2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmNjCmluZGV4IDFmZDhjMDNjYTI0
YTYzYmE1NTU5MGFhY2FjMzRhMDVjMDNmNWM2YmEuLjA4OTBiZWI5MzQyZDY4MmZkY2U2Y2NiZGI5
OGMwNDU3MWMxODM3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2Uu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjb2Rlcl9kYXRhYmFzZS5jYwpAQCAtMTAsOSArMTAsMTUg
QEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJh
c2UuaCIKIAotI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBwYWlyCisjaW5jbHVkZSA8c3RkZGVmLmg+
CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2gu
aCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKKyNpbmNsdWRl
ICJjb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9hdWRpb19m
b3JtYXRfdG9fc3RyaW5nLmgiCkBAIC0xMDEsNyArMTA3LDcgQEAgQXVkaW9EZWNvZGVyKiBEZWNv
ZGVyRGF0YWJhc2U6OkRlY29kZXJJbmZvOjpHZXREZWNvZGVyKCkgY29uc3QgewogfQogCiBib29s
IERlY29kZXJEYXRhYmFzZTo6RGVjb2RlckluZm86OklzVHlwZShjb25zdCBjaGFyKiBuYW1lKSBj
b25zdCB7Ci0gIHJldHVybiBTVFJfQ0FTRV9DTVAoYXVkaW9fZm9ybWF0Xy5uYW1lLmNfc3RyKCks
IG5hbWUpID09IDA7CisgIHJldHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGF1ZGlvX2Zvcm1h
dF8ubmFtZSwgbmFtZSk7CiB9CiAKIGJvb2wgRGVjb2RlckRhdGFiYXNlOjpEZWNvZGVySW5mbzo6
SXNUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSBjb25zdCB7CkBAIC0xMTAsNyArMTE2LDcg
QEAgYm9vbCBEZWNvZGVyRGF0YWJhc2U6OkRlY29kZXJJbmZvOjpJc1R5cGUoY29uc3Qgc3RkOjpz
dHJpbmcmIG5hbWUpIGNvbnN0IHsKIAogYWJzbDo6b3B0aW9uYWw8RGVjb2RlckRhdGFiYXNlOjpE
ZWNvZGVySW5mbzo6Q25nRGVjb2Rlcj4KIERlY29kZXJEYXRhYmFzZTo6RGVjb2RlckluZm86OkNu
Z0RlY29kZXI6OkNyZWF0ZShjb25zdCBTZHBBdWRpb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIGlmIChT
VFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIkNOIikgPT0gMCkgeworICBpZiAoYWJz
bDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIkNOIikpIHsKICAgICAvLyBDTiBoYXMg
YSAxOjEgUlRQIGNsb2NrIHJhdGUgdG8gc2FtcGxlIHJhdGUgcmF0aW8uCiAgICAgY29uc3QgaW50
IHNhbXBsZV9yYXRlX2h6ID0gZm9ybWF0LmNsb2NrcmF0ZV9oejsKICAgICBSVENfRENIRUNLKHNh
bXBsZV9yYXRlX2h6ID09IDgwMDAgfHwgc2FtcGxlX3JhdGVfaHogPT0gMTYwMDAgfHwKQEAgLTEy
MywxMSArMTI5LDExIEBAIERlY29kZXJEYXRhYmFzZTo6RGVjb2RlckluZm86OkNuZ0RlY29kZXI6
OkNyZWF0ZShjb25zdCBTZHBBdWRpb0Zvcm1hdCYgZm9ybWF0KSB7CiAKIERlY29kZXJEYXRhYmFz
ZTo6RGVjb2RlckluZm86OlN1YnR5cGUKIERlY29kZXJEYXRhYmFzZTo6RGVjb2RlckluZm86OlN1
YnR5cGVGcm9tRm9ybWF0KGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgaWYgKFNU
Ul9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0cigpLCAiQ04iKSA9PSAwKSB7CisgIGlmIChhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiQ04iKSkgewogICAgIHJldHVybiBTdWJ0
eXBlOjprQ29tZm9ydE5vaXNlOwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChmb3JtYXQubmFt
ZS5jX3N0cigpLCAidGVsZXBob25lLWV2ZW50IikgPT0gMCkgeworICB9IGVsc2UgaWYgKGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSkgewogICAg
IHJldHVybiBTdWJ0eXBlOjprRHRtZjsKLSAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0
Lm5hbWUuY19zdHIoKSwgInJlZCIpID09IDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKGZvcm1hdC5uYW1lLCAicmVkIikpIHsKICAgICByZXR1cm4gU3VidHlwZTo6a1Jl
ZDsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9tYW5hZ2VyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvZGVsYXlfbWFuYWdlci5jYwppbmRleCBlNWViNTkyZWZhMTM0NzU2NWI2MmIwYjE5
ZGE3NWY3MWEzMjAwZGQzLi42N2U2YTEzYzFkNzY5NTI2ZDE3MTgyMjRhODc3YzJlNjQyZGM5M2E3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9tYW5hZ2VyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2RlbGF5X21hbmFnZXIuY2MKQEAgLTExLDE0ICsxMSwxNSBAQAogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXIuaCIKIAogI2luY2x1ZGUgPGFzc2Vy
dC5oPgotI2luY2x1ZGUgPG1hdGguaD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIG1heCwg
bWluCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNs
dWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vz
c2luZ19saWJyYXJ5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVs
YXlfcGVha19kZXRlY3Rvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29t
bW9uX3R5cGVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlw
ZXNfcHVibGljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVy
c2lvbnMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5o
IgpAQCAtNjEsNiArNjIsNyBAQCBhYnNsOjpvcHRpb25hbDxpbnQ+IEdldEZvcmNlZExpbWl0UHJv
YmFiaWxpdHkoKSB7CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogRGVsYXlNYW5hZ2VyOjpEZWxheU1h
bmFnZXIoc2l6ZV90IG1heF9wYWNrZXRzX2luX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBiYXNlX21pbl90YXJnZXRfZGVsYXlfbXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEZWxheVBlYWtEZXRlY3RvciogcGVha19kZXRlY3RvciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRpY2tUaW1lciogdGlja190aW1lcikKICAgICA6IGZpcnN0X3Bh
Y2tldF9yZWNlaXZlZF8oZmFsc2UpLApAQCAtNjgsMTMgKzcwLDE0IEBAIERlbGF5TWFuYWdlcjo6
RGVsYXlNYW5hZ2VyKHNpemVfdCBtYXhfcGFja2V0c19pbl9idWZmZXIsCiAgICAgICBpYXRfdmVj
dG9yXyhrTWF4SWF0ICsgMSwgMCksCiAgICAgICBpYXRfZmFjdG9yXygwKSwKICAgICAgIHRpY2tf
dGltZXJfKHRpY2tfdGltZXIpLAorICAgICAgYmFzZV9taW5fdGFyZ2V0X2RlbGF5X21zXyhiYXNl
X21pbl90YXJnZXRfZGVsYXlfbXMpLAogICAgICAgYmFzZV90YXJnZXRfbGV2ZWxfKDQpLCAgICAg
ICAgICAgICAgICAgICAvLyBJbiBRMCBkb21haW4uCiAgICAgICB0YXJnZXRfbGV2ZWxfKGJhc2Vf
dGFyZ2V0X2xldmVsXyA8PCA4KSwgIC8vIEluIFE4IGRvbWFpbi4KICAgICAgIHBhY2tldF9sZW5f
bXNfKDApLAogICAgICAgc3RyZWFtaW5nX21vZGVfKGZhbHNlKSwKICAgICAgIGxhc3Rfc2VxX25v
XygwKSwKICAgICAgIGxhc3RfdGltZXN0YW1wXygwKSwKLSAgICAgIG1pbmltdW1fZGVsYXlfbXNf
KDApLAorICAgICAgbWluaW11bV9kZWxheV9tc18oYmFzZV9taW5fdGFyZ2V0X2RlbGF5X21zXyks
CiAgICAgICBtYXhpbXVtX2RlbGF5X21zXyh0YXJnZXRfbGV2ZWxfKSwKICAgICAgIGlhdF9jdW11
bGF0aXZlX3N1bV8oMCksCiAgICAgICBtYXhfaWF0X2N1bXVsYXRpdmVfc3VtXygwKSwKQEAgLTg0
LDYgKzg3LDggQEAgRGVsYXlNYW5hZ2VyOjpEZWxheU1hbmFnZXIoc2l6ZV90IG1heF9wYWNrZXRz
X2luX2J1ZmZlciwKICAgICAgICAgICBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVk
aW8tTmV0RXFGcmFtZWxlbmd0aEV4cGVyaW1lbnQiKSksCiAgICAgICBmb3JjZWRfbGltaXRfcHJv
YmFiaWxpdHlfKEdldEZvcmNlZExpbWl0UHJvYmFiaWxpdHkoKSkgewogICBhc3NlcnQocGVha19k
ZXRlY3Rvcik7ICAvLyBTaG91bGQgbmV2ZXIgYmUgTlVMTC4KKyAgUlRDX0RDSEVDS19HRShiYXNl
X21pbl90YXJnZXRfZGVsYXlfbXNfLCAwKTsKKyAgUlRDX0RDSEVDS19MRShtaW5pbXVtX2RlbGF5
X21zXywgbWF4aW11bV9kZWxheV9tc18pOwogCiAgIFJlc2V0KCk7CiB9CkBAIC00ODQsNyArNDg5
LDcgQEAgYm9vbCBEZWxheU1hbmFnZXI6OlNldE1pbmltdW1EZWxheShpbnQgZGVsYXlfbXMpIHsK
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PigzICogbWF4X3BhY2tldHNfaW5fYnVmZmVyXyAq
IHBhY2tldF9sZW5fbXNfIC8gNCkpKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9Ci0gIG1pbmlt
dW1fZGVsYXlfbXNfID0gZGVsYXlfbXM7CisgIG1pbmltdW1fZGVsYXlfbXNfID0gc3RkOjptYXgo
ZGVsYXlfbXMsIGJhc2VfbWluX3RhcmdldF9kZWxheV9tc18pOwogICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlfbWFuYWdlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
ZGVsYXlfbWFuYWdlci5oCmluZGV4IGNkNWZjMDkwMzE2OTFmMjU5ZmRlNDNlMWMwMjNmMGMzMGFj
YmYxZTUuLjJjODA4MWIwNzVmZTQxMzU3ZWE2YzY0ZGJlMjA5MWUwNWQ0ODFmZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9t
YW5hZ2VyLmgKQEAgLTMxLDkgKzMxLDExIEBAIGNsYXNzIERlbGF5TWFuYWdlciB7CiAKICAgLy8g
Q3JlYXRlIGEgRGVsYXlNYW5hZ2VyIG9iamVjdC4gTm90aWZ5IHRoZSBkZWxheSBtYW5hZ2VyIHRo
YXQgdGhlIHBhY2tldAogICAvLyBidWZmZXIgY2FuIGhvbGQgbm8gbW9yZSB0aGFuIHxtYXhfcGFj
a2V0c19pbl9idWZmZXJ8IHBhY2tldHMgKGkuZS4sIHRoaXMKLSAgLy8gaXMgdGhlIG51bWJlciBv
ZiBwYWNrZXQgc2xvdHMgaW4gdGhlIGJ1ZmZlcikuIFN1cHBseSBhIFBlYWtEZXRlY3RvcgotICAv
LyBvYmplY3QgdG8gdGhlIERlbGF5TWFuYWdlci4KKyAgLy8gaXMgdGhlIG51bWJlciBvZiBwYWNr
ZXQgc2xvdHMgaW4gdGhlIGJ1ZmZlcikgYW5kIHRoYXQgdGhlIHRhcmdldCBkZWxheQorICAvLyBz
aG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHxiYXNlX21pbl90YXJnZXRfZGVsYXlf
bXN8LiBTdXBwbHkgYQorICAvLyBQZWFrRGV0ZWN0b3Igb2JqZWN0IHRvIHRoZSBEZWxheU1hbmFn
ZXIuCiAgIERlbGF5TWFuYWdlcihzaXplX3QgbWF4X3BhY2tldHNfaW5fYnVmZmVyLAorICAgICAg
ICAgICAgICAgaW50IGJhc2VfbWluX3RhcmdldF9kZWxheV9tcywKICAgICAgICAgICAgICAgIERl
bGF5UGVha0RldGVjdG9yKiBwZWFrX2RldGVjdG9yLAogICAgICAgICAgICAgICAgY29uc3QgVGlj
a1RpbWVyKiB0aWNrX3RpbWVyKTsKIApAQCAtMTQ0LDYgKzE0Niw4IEBAIGNsYXNzIERlbGF5TWFu
YWdlciB7CiAgIElBVFZlY3RvciBpYXRfdmVjdG9yXzsgICAgICAgICAgICAgICAgLy8gSGlzdG9n
cmFtIG9mIGludGVyLWFycml2YWwgdGltZXMuCiAgIGludCBpYXRfZmFjdG9yXzsgIC8vIEZvcmdl
dHRpbmcgZmFjdG9yIGZvciB1cGRhdGluZyB0aGUgSUFUIGhpc3RvZ3JhbSAoUTE1KS4KICAgY29u
c3QgVGlja1RpbWVyKiB0aWNrX3RpbWVyXzsKKyAgY29uc3QgaW50IGJhc2VfbWluX3RhcmdldF9k
ZWxheV9tc187ICAvLyBMb3dlciBib3VuZCBmb3IgdGFyZ2V0X2xldmVsXyBhbmQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtaW5pbXVtX2RlbGF5X21zXy4KICAg
Ly8gVGltZSBlbGFwc2VkIHNpbmNlIGxhc3QgcGFja2V0LgogICBzdGQ6OnVuaXF1ZV9wdHI8VGlj
a1RpbWVyOjpTdG9wd2F0Y2g+IHBhY2tldF9pYXRfc3RvcHdhdGNoXzsKICAgaW50IGJhc2VfdGFy
Z2V0X2xldmVsXzsgIC8vIEN1cnJlbnRseSBwcmVmZXJyZWQgYnVmZmVyIGxldmVsIGJlZm9yZSBw
ZWFrCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9tYW5hZ2VyX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvZGVsYXlfbWFuYWdlcl91bml0dGVzdC5jYwppbmRleCBlNGU4NjVmZTQ2YmUz
MDAyODAzMmM3ZDU0NmM5M2M4MmFhZGMxYTEwLi42MjgxYTE1Njc5OTg5M2MwMjUxNTVlYTU1ZTY3
NWZiZTdlOWM2OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9tYW5hZ2VyX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXJfdW5pdHRlc3QuY2MKQEAgLTI3
LDYgKzI3LDcgQEAgdXNpbmcgOjp0ZXN0aW5nOjpfOwogY2xhc3MgRGVsYXlNYW5hZ2VyVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDoKICAgc3RhdGljIGNvbnN0IGlu
dCBrTWF4TnVtYmVyT2ZQYWNrZXRzID0gMjQwOworICBzdGF0aWMgY29uc3QgaW50IGtNaW5EZWxh
eU1zID0gMDsKICAgc3RhdGljIGNvbnN0IGludCBrVGltZVN0ZXBNcyA9IDEwOwogICBzdGF0aWMg
Y29uc3QgaW50IGtGcyA9IDgwMDA7CiAgIHN0YXRpYyBjb25zdCBpbnQga0ZyYW1lU2l6ZU1zID0g
MjA7CkBAIC01Niw3ICs1Nyw4IEBAIHZvaWQgRGVsYXlNYW5hZ2VyVGVzdDo6U2V0VXAoKSB7CiAK
IHZvaWQgRGVsYXlNYW5hZ2VyVGVzdDo6UmVjcmVhdGVEZWxheU1hbmFnZXIoKSB7CiAgIEVYUEVD
VF9DQUxMKGRldGVjdG9yXywgUmVzZXQoKSkuVGltZXMoMSk7Ci0gIGRtXy5yZXNldChuZXcgRGVs
YXlNYW5hZ2VyKGtNYXhOdW1iZXJPZlBhY2tldHMsICZkZXRlY3Rvcl8sICZ0aWNrX3RpbWVyXykp
OworICBkbV8ucmVzZXQobmV3IERlbGF5TWFuYWdlcihrTWF4TnVtYmVyT2ZQYWNrZXRzLCBrTWlu
RGVsYXlNcywgJmRldGVjdG9yXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRpY2tf
dGltZXJfKSk7CiB9CiAKIHZvaWQgRGVsYXlNYW5hZ2VyVGVzdDo6U2V0UGFja2V0QXVkaW9MZW5n
dGgoaW50IGxlbmd0X21zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9wZWFrX2Rl
dGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlfcGVha19kZXRlY3Rvci5jYwppbmRleCBlYjlm
NmQ1MzBkNWQ2NTFhYTU2NzIxZGU3ZmVjYjAxYzIwN2VkYWEzLi44OTNjZTNlOGZkMjQ0NDhjZWE2
NmM3ZWE0M2RlNmI3MDZjNzI0NjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9wZWFr
X2RldGVjdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X3BlYWtfZGV0ZWN0b3IuY2MKQEAg
LTEwLDEwICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9k
ZWxheV9wZWFrX2RldGVjdG9yLmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBtYXgKKyNp
bmNsdWRlIDxhbGdvcml0aG0+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9wZWFrX2RldGVjdG9yLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS9kZWxheV9wZWFrX2RldGVjdG9yLmgKaW5kZXggOWRlZmNhNWFkMDIxNjQ3OGJjN2VkYzAz
ZDRkZjk5OGQ0ZDhmYzQxNS4uMjcyZDUwZWQ1MDlmY2UyM2I1NjI2OGJkNWRmMTdkNmU3YWVjNmIz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlfcGVha19kZXRlY3Rvci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2RlbGF5X3BlYWtfZGV0ZWN0b3IuaApAQCAtMTEsOCArMTEsOCBAQAogI2lmbmRl
ZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9ERUxBWV9QRUFLX0RFVEVDVE9SX0hfCiAjZGVm
aW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0RFTEFZX1BFQUtfREVURUNUT1JfSF8KIAot
I2luY2x1ZGUgPHN0cmluZy5oPiAgLy8gc2l6ZV90Ci0KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNp
bmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPG1lbW9yeT4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHNwX2hlbHBlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHNwX2hl
bHBlci5oCmluZGV4IGVmYTJmOWNlMDY0NDdhOGRlMmYyZTM0ODc5NTA2ZjU4MGE2OGFiY2IuLjgz
Nzk0NjEyYzVmZGY2MWE0ZTVkMzRhMTdiYTliYTlhM2ZiOTg1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2RzcF9oZWxwZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kc3BfaGVscGVyLmgKQEAgLTEx
LDkgKzExLDExIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0RTUF9IRUxQ
RVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfRFNQX0hFTFBFUl9IXwog
Ci0jaW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBBY2Nlc3MgdG8gc2l6ZV90LgorI2luY2x1ZGUgPHN0
ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvYXVkaW9fdmVjdG9yLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3Ry
dWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2R0bWZfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1mX2J1ZmZlci5oCmluZGV4IDZkZTUx
Mjc3MmYyZWE1MGQ4YjNlYjI4NWRkN2Y0NWE2YzgwZWEwMWEuLjI0YjE0ZWNlNDE2YTFiNDZiM2Rk
Njc1NGZmODNlYWRmNWE3ZWM0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2R0bWZfYnVmZmVy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvZHRtZl9idWZmZXIuaApAQCAtMTEsOCArMTEsOSBAQAogI2lm
bmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9EVE1GX0JVRkZFUl9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9EVE1GX0JVRkZFUl9IXwogCisjaW5jbHVkZSA8c3Rk
ZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxz
dHJpbmc+ICAvLyBzaXplX3QKIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHRtZl90b25lX2dlbmVyYXRvci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2R0bWZfdG9uZV9nZW5lcmF0b3IuY2MKaW5kZXggNmZkYjk1YWFjYWQ2N2JmMTMz
Y2VjNzE0NzFlNjk2NzAzYzMyOGFiOS4uNmM0MTJlMzY0ZDg3ZDRjZjc0Nzk2ODQ1OTY3MmIzNGVi
MGNjZjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHRtZl90b25lX2dlbmVyYXRvci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJhdG9yLmNjCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJh
dG9yLmgiCiAKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb192ZWN0
b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHRtZl90b25lX2dlbmVyYXRv
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvZHRtZl90b25lX2dlbmVyYXRvci5oCmluZGV4IGE3NzNmZjM1M2Qz
YjMwZGY2OTQ4ZGM3Y2FkNzQ4ZDMwZjkzMjZhNTMuLjIyZTE2NmVmMGM0M2Y5YmI4MDEyNzQyMTcz
M2RlMzAxNjMzNjNkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2R0bWZfdG9uZV9nZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJhdG9yLmgKQEAgLTExLDYgKzEx
LDkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfRFRNRl9UT05FX0dFTkVS
QVRPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9EVE1GX1RPTkVfR0VO
RVJBVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvZXhwYW5kLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kLmNjCmluZGV4IDVmNjcx
YWRhNmI2MjAzNTI2ZTFmMjgzYmMwOTZmOTIxM2M1NmE1NGMuLjRhMDZkMDljMWM2MWE3MjYxNDM3
YTlhNzdjZDE3OGYzYzU5ZTAwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9leHBhbmQuY2MKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlIDxs
aW1pdHM+ICAgICAvLyBudW1lcmljX2xpbWl0czxUPgogCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlv
L3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2JhY2tncm91bmRfbm9pc2Uu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9jcm9zc19jb3JyZWxhdGlv
bi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RzcF9oZWxwZXIuaCIK
QEAgLTMyMiw4ICszMjMsNyBAQCB2b2lkIEV4cGFuZDo6U2V0UGFyYW1ldGVyc0Zvck5vcm1hbEFm
dGVyRXhwYW5kKCkgewogICBjdXJyZW50X2xhZ19pbmRleF8gPSAwOwogICBsYWdfaW5kZXhfZGly
ZWN0aW9uXyA9IDA7CiAgIHN0b3BfbXV0aW5nXyA9IHRydWU7ICAvLyBEbyBub3QgbXV0ZSBzaWdu
YWwgYW55IG1vcmUuCi0gIHN0YXRpc3RpY3NfLT5Mb2dEZWxheWVkUGFja2V0T3V0YWdlRXZlbnQo
Ci0gICAgICBydGM6OmRjaGVja2VkX2Nhc3Q8aW50PihleHBhbmRfZHVyYXRpb25fc2FtcGxlc18p
IC8gKGZzX2h6XyAvIDEwMDApKTsKKyAgc3RhdGlzdGljc18tPkxvZ0RlbGF5ZWRQYWNrZXRPdXRh
Z2VFdmVudChleHBhbmRfZHVyYXRpb25fc2FtcGxlc18sIGZzX2h6Xyk7CiB9CiAKIHZvaWQgRXhw
YW5kOjpTZXRQYXJhbWV0ZXJzRm9yTWVyZ2VBZnRlckV4cGFuZCgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2V4cGFuZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kLmgKaW5kZXggNGNmZTdiOWQ4
Y2JlZWMxZTc5OTBiYjQyNzlhNjQwMTZiZTE0OTYwMC4uMzBjMzRhMmMzMDBkZjE2MjQyOTUzMWEw
ZWQzMmVkOTIwMDFhZTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvZXhwYW5kLmgKQEAgLTE0LDEyICsxNCwxMyBAQAogI2luY2x1ZGUgPGFzc2Vy
dC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2F1ZGlvX3ZlY3Rvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEZvcndhcmQgZGVjbGFyYXRpb25z
LgorY2xhc3MgQXVkaW9NdWx0aVZlY3RvcjsKIGNsYXNzIEJhY2tncm91bmROb2lzZTsKIGNsYXNz
IFJhbmRvbVZlY3RvcjsKIGNsYXNzIFN0YXRpc3RpY3NDYWxjdWxhdG9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvZXhwYW5kX3VtYV9sb2dnZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZF91bWFf
bG9nZ2VyLmgKaW5kZXggMDA5MDdkNGU1YTg0MWI0YmZhYzU5MmQ3MmM5NmU3ODhkYzY5NjY1Mi4u
YmQwNzljNmFiNzc1MGIwZjNjMWM1ZmE2NTM3ODAzMThhZWQ3NjVkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvZXhwYW5kX3VtYV9sb2dnZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmRfdW1h
X2xvZ2dlci5oCkBAIC0xMCw2ICsxMCw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5H
X05FVEVRX0VYUEFORF9VTUFfTE9HR0VSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5H
X05FVEVRX0VYUEFORF9VTUFfTE9HR0VSX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9leHBhbmRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmRfdW5pdHRlc3QuY2MKaW5k
ZXggYjRlNjQ2NmU5MDQ1MDAyYmZmODA4YmRhY2VlZmE3MjZiN2QwZWE1Ni4uMDk5MTRkYWNhODIy
OTVjODhkYWRlZTgxOTA0MTMxODY4MzJiNWExZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhw
YW5kX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZF91bml0dGVzdC5jYwpAQCAt
NTEsMTQgKzUxLDE2IEBAIFRFU1QoRXhwYW5kLCBDcmVhdGVVc2luZ0ZhY3RvcnkpIHsKIG5hbWVz
cGFjZSB7CiBjbGFzcyBGYWtlU3RhdGlzdGljc0NhbGN1bGF0b3IgOiBwdWJsaWMgU3RhdGlzdGlj
c0NhbGN1bGF0b3IgewogIHB1YmxpYzoKLSAgdm9pZCBMb2dEZWxheWVkUGFja2V0T3V0YWdlRXZl
bnQoaW50IG91dGFnZV9kdXJhdGlvbl9tcykgb3ZlcnJpZGUgewotICAgIGxhc3Rfb3V0YWdlX2R1
cmF0aW9uX21zXyA9IG91dGFnZV9kdXJhdGlvbl9tczsKKyAgdm9pZCBMb2dEZWxheWVkUGFja2V0
T3V0YWdlRXZlbnQoaW50IG51bV9zYW1wbGVzLCBpbnQgZnNfaHopIG92ZXJyaWRlIHsKKyAgICBs
YXN0X291dGFnZV9kdXJhdGlvbl9zYW1wbGVzXyA9IG51bV9zYW1wbGVzOwogICB9CiAKLSAgaW50
IGxhc3Rfb3V0YWdlX2R1cmF0aW9uX21zKCkgY29uc3QgeyByZXR1cm4gbGFzdF9vdXRhZ2VfZHVy
YXRpb25fbXNfOyB9CisgIGludCBsYXN0X291dGFnZV9kdXJhdGlvbl9zYW1wbGVzKCkgY29uc3Qg
eworICAgIHJldHVybiBsYXN0X291dGFnZV9kdXJhdGlvbl9zYW1wbGVzXzsKKyAgfQogCiAgcHJp
dmF0ZToKLSAgaW50IGxhc3Rfb3V0YWdlX2R1cmF0aW9uX21zXyA9IDA7CisgIGludCBsYXN0X291
dGFnZV9kdXJhdGlvbl9zYW1wbGVzXyA9IDA7CiB9OwogCiAvLyBUaGlzIGlzIHRoZSBzYW1lIHNp
emUgdGhhdCBpcyBnaXZlbiB0byB0aGUgU3luY0J1ZmZlciBvYmplY3QgaW4gTmV0RXEuCkBAIC0x
MjAsMTMgKzEyMiwxMiBAQCBURVNUX0YoRXhwYW5kVGVzdCwgRGVsYXllZFBhY2tldE91dGFnZSkg
ewogICAgIEVYUEVDVF9FUSgwLCBleHBhbmRfLlByb2Nlc3MoJm91dHB1dCkpOwogICAgIEVYUEVD
VF9HVChvdXRwdXQuU2l6ZSgpLCAwdSk7CiAgICAgc3VtX291dHB1dF9sZW5fc2FtcGxlcyArPSBv
dXRwdXQuU2l6ZSgpOwotICAgIEVYUEVDVF9FUSgwLCBzdGF0aXN0aWNzXy5sYXN0X291dGFnZV9k
dXJhdGlvbl9tcygpKTsKKyAgICBFWFBFQ1RfRVEoMCwgc3RhdGlzdGljc18ubGFzdF9vdXRhZ2Vf
ZHVyYXRpb25fc2FtcGxlcygpKTsKICAgfQogICBleHBhbmRfLlNldFBhcmFtZXRlcnNGb3JOb3Jt
YWxBZnRlckV4cGFuZCgpOwogICAvLyBDb252ZXJ0IHxzdW1fb3V0cHV0X2xlbl9zYW1wbGVzfCB0
byBtaWxsaXNlY29uZHMuCi0gIEVYUEVDVF9FUShydGM6OmNoZWNrZWRfY2FzdDxpbnQ+KHN1bV9v
dXRwdXRfbGVuX3NhbXBsZXMgLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
dGVzdF9zYW1wbGVfcmF0ZV9oel8gLyAxMDAwKSksCi0gICAgICAgICAgICBzdGF0aXN0aWNzXy5s
YXN0X291dGFnZV9kdXJhdGlvbl9tcygpKTsKKyAgRVhQRUNUX0VRKHJ0Yzo6Y2hlY2tlZF9jYXN0
PGludD4oc3VtX291dHB1dF9sZW5fc2FtcGxlcyksCisgICAgICAgICAgICBzdGF0aXN0aWNzXy5s
YXN0X291dGFnZV9kdXJhdGlvbl9zYW1wbGVzKCkpOwogfQogCiAvLyBUaGlzIHRlc3QgaXMgc2lt
aWxhciB0byBEZWxheWVkUGFja2V0T3V0YWdlLCBidXQgZW5kcyBieSBjYWxsaW5nCkBAIC0xNDAs
MTAgKzE0MSwxMCBAQCBURVNUX0YoRXhwYW5kVGVzdCwgTG9zdFBhY2tldE91dGFnZSkgewogICAg
IEVYUEVDVF9FUSgwLCBleHBhbmRfLlByb2Nlc3MoJm91dHB1dCkpOwogICAgIEVYUEVDVF9HVChv
dXRwdXQuU2l6ZSgpLCAwdSk7CiAgICAgc3VtX291dHB1dF9sZW5fc2FtcGxlcyArPSBvdXRwdXQu
U2l6ZSgpOwotICAgIEVYUEVDVF9FUSgwLCBzdGF0aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlv
bl9tcygpKTsKKyAgICBFWFBFQ1RfRVEoMCwgc3RhdGlzdGljc18ubGFzdF9vdXRhZ2VfZHVyYXRp
b25fc2FtcGxlcygpKTsKICAgfQogICBleHBhbmRfLlNldFBhcmFtZXRlcnNGb3JNZXJnZUFmdGVy
RXhwYW5kKCk7Ci0gIEVYUEVDVF9FUSgwLCBzdGF0aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlv
bl9tcygpKTsKKyAgRVhQRUNUX0VRKDAsIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9u
X3NhbXBsZXMoKSk7CiB9CiAKIC8vIFRoaXMgdGVzdCBpcyBzaW1pbGFyIHRvIHRoZSBEZWxheWVk
UGFja2V0T3V0YWdlIHRlc3QgYWJvdmUsIGJ1dCB3aXRoIHRoZQpAQCAtMTYxLDEzICsxNjIsMTIg
QEAgVEVTVF9GKEV4cGFuZFRlc3QsIENoZWNrT3V0YWdlU3RhdHNBZnRlclJlc2V0KSB7CiAgICAg
ICBleHBhbmRfLlJlc2V0KCk7CiAgICAgICBzdW1fb3V0cHV0X2xlbl9zYW1wbGVzID0gMDsKICAg
ICB9Ci0gICAgRVhQRUNUX0VRKDAsIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9uX21z
KCkpOworICAgIEVYUEVDVF9FUSgwLCBzdGF0aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlvbl9z
YW1wbGVzKCkpOwogICB9CiAgIGV4cGFuZF8uU2V0UGFyYW1ldGVyc0Zvck5vcm1hbEFmdGVyRXhw
YW5kKCk7CiAgIC8vIENvbnZlcnQgfHN1bV9vdXRwdXRfbGVuX3NhbXBsZXN8IHRvIG1pbGxpc2Vj
b25kcy4KLSAgRVhQRUNUX0VRKHJ0Yzo6Y2hlY2tlZF9jYXN0PGludD4oc3VtX291dHB1dF9sZW5f
c2FtcGxlcyAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0X3NhbXBs
ZV9yYXRlX2h6XyAvIDEwMDApKSwKLSAgICAgICAgICAgIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdl
X2R1cmF0aW9uX21zKCkpOworICBFWFBFQ1RfRVEocnRjOjpjaGVja2VkX2Nhc3Q8aW50PihzdW1f
b3V0cHV0X2xlbl9zYW1wbGVzKSwKKyAgICAgICAgICAgIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdl
X2R1cmF0aW9uX3NhbXBsZXMoKSk7CiB9CiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9pbmNsdWRlL25ldGVxLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9pbmNsdWRlL25ldGVxLmgKaW5k
ZXggNTMwOTc1ZjNiOGU3ZDdjNTNiY2UzNzU0MDFmYjI1ZmI1NzQ1MzE3ZS4uMjgyMGZkODQ3ODdk
NTYzNmYxMWIxNzBjOTJhNWIzNzA1OGQxOWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvaW5j
bHVkZS9uZXRlcS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaApAQCAtNzIsNiAr
NzIsNyBAQCBzdHJ1Y3QgTmV0RXFMaWZldGltZVN0YXRpc3RpY3MgewogICB1aW50NjRfdCBqaXR0
ZXJfYnVmZmVyX2RlbGF5X21zID0gMDsKICAgLy8gQmVsb3cgc3RhdCBpcyBub3QgcGFydCBvZiB0
aGUgc3BlYy4KICAgdWludDY0X3Qgdm9pY2VfY29uY2VhbGVkX3NhbXBsZXMgPSAwOworICB1aW50
NjRfdCBkZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlcyA9IDA7CiB9OwogCiAvLyBNZXRyaWNz
IHRoYXQgZGVzY3JpYmUgdGhlIG9wZXJhdGlvbnMgcGVyZm9ybWVkIGluIE5ldEVxLCBhbmQgdGhl
IGludGVybmFsCkBAIC0xMTIsNiArMTEzLDcgQEAgY2xhc3MgTmV0RXEgewogICAgIGJvb2wgZW5h
YmxlX3Bvc3RfZGVjb2RlX3ZhZCA9IGZhbHNlOwogICAgIHNpemVfdCBtYXhfcGFja2V0c19pbl9i
dWZmZXIgPSA1MDsKICAgICBpbnQgbWF4X2RlbGF5X21zID0gMjAwMDsKKyAgICBpbnQgbWluX2Rl
bGF5X21zID0gMDsKICAgICBib29sIGVuYWJsZV9mYXN0X2FjY2VsZXJhdGUgPSBmYWxzZTsKICAg
ICBib29sIGVuYWJsZV9tdXRlZF9zdGF0ZSA9IGZhbHNlOwogICAgIGFic2w6Om9wdGlvbmFsPEF1
ZGlvQ29kZWNQYWlySWQ+IGNvZGVjX3BhaXJfaWQ7CkBAIC0yMzEsMTMgKzIzMyw2IEBAIGNsYXNz
IE5ldEVxIHsKICAgLy8gc3RhdGlzdGljcyBhcmUgbmV2ZXIgcmVzZXQuCiAgIHZpcnR1YWwgTmV0
RXFPcGVyYXRpb25zQW5kU3RhdGUgR2V0T3BlcmF0aW9uc0FuZFN0YXRlKCkgY29uc3QgPSAwOwog
Ci0gIC8vIFdyaXRlcyB0aGUgY3VycmVudCBSVENQIHN0YXRpc3RpY3MgdG8gfHN0YXRzfC4gVGhl
IHN0YXRpc3RpY3MgYXJlIHJlc2V0Ci0gIC8vIGFuZCBhIG5ldyByZXBvcnQgcGVyaW9kIGlzIHN0
YXJ0ZWQgd2l0aCB0aGUgY2FsbC4KLSAgdmlydHVhbCB2b2lkIEdldFJ0Y3BTdGF0aXN0aWNzKFJ0
Y3BTdGF0aXN0aWNzKiBzdGF0cykgPSAwOwotCi0gIC8vIFNhbWUgYXMgUnRjcFN0YXRpc3RpY3Mo
KSwgYnV0IGRvZXMgbm90IHJlc2V0IGFueXRoaW5nLgotICB2aXJ0dWFsIHZvaWQgR2V0UnRjcFN0
YXRpc3RpY3NOb1Jlc2V0KFJ0Y3BTdGF0aXN0aWNzKiBzdGF0cykgPSAwOwotCiAgIC8vIEVuYWJs
ZXMgcG9zdC1kZWNvZGUgVkFELiBXaGVuIGVuYWJsZWQsIEdldEF1ZGlvKCkgd2lsbCByZXR1cm4K
ICAgLy8ga091dHB1dFZBRFBhc3NpdmUgd2hlbiB0aGUgc2lnbmFsIGNvbnRhaW5zIG5vIHNwZWVj
aC4KICAgdmlydHVhbCB2b2lkIEVuYWJsZVZhZCgpID0gMDsKQEAgLTI2NiwxMCArMjYxLDYgQEAg
Y2xhc3MgTmV0RXEgewogICAvLyBGbHVzaGVzIGJvdGggdGhlIHBhY2tldCBidWZmZXIgYW5kIHRo
ZSBzeW5jIGJ1ZmZlci4KICAgdmlydHVhbCB2b2lkIEZsdXNoQnVmZmVycygpID0gMDsKIAotICAv
LyBDdXJyZW50IHVzYWdlIG9mIHBhY2tldC1idWZmZXIgYW5kIGl0J3MgbGltaXRzLgotICB2aXJ0
dWFsIHZvaWQgUGFja2V0QnVmZmVyU3RhdGlzdGljcyhpbnQqIGN1cnJlbnRfbnVtX3BhY2tldHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWF4X251bV9wYWNr
ZXRzKSBjb25zdCA9IDA7Ci0KICAgLy8gRW5hYmxlcyBOQUNLIGFuZCBzZXRzIHRoZSBtYXhpbXVt
IHNpemUgb2YgdGhlIE5BQ0sgbGlzdCwgd2hpY2ggc2hvdWxkIGJlCiAgIC8vIHBvc2l0aXZlIGFu
ZCBubyBsYXJnZXIgdGhhbiBOYWNrOjprTmFja0xpc3RTaXplTGltaXQuIElmIE5BQ0sgaXMgYWxy
ZWFkeQogICAvLyBlbmFibGVkIHRoZW4gdGhlIG1heGltdW0gTkFDSyBsaXN0IHNpemUgaXMgbW9k
aWZpZWQgYWNjb3JkaW5nbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9tb2NrL21vY2tfZGVs
YXlfbWFuYWdlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbW9jay9tb2NrX2RlbGF5X21hbmFnZXIuaAppbmRl
eCA5YjJlZDQ5OGQ5ZGJmY2MyNDFhZTE0ZjdhNzUyMDk2MDFjYWRlMDk3Li4yMDZjZWE3ZjEwZTdm
NTY5YTQ1YzQ4NjM5MGM5Yjg3NDhhNWM1YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9tb2Nr
L21vY2tfZGVsYXlfbWFuYWdlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL21vY2svbW9ja19kZWxheV9t
YW5hZ2VyLmgKQEAgLTIwLDkgKzIwLDEzIEBAIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgTW9j
a0RlbGF5TWFuYWdlciA6IHB1YmxpYyBEZWxheU1hbmFnZXIgewogIHB1YmxpYzoKICAgTW9ja0Rl
bGF5TWFuYWdlcihzaXplX3QgbWF4X3BhY2tldHNfaW5fYnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgIGludCBiYXNlX21pbl90YXJnZXRfZGVsYXlfbXMsCiAgICAgICAgICAgICAgICAgICAgRGVs
YXlQZWFrRGV0ZWN0b3IqIHBlYWtfZGV0ZWN0b3IsCiAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VGlja1RpbWVyKiB0aWNrX3RpbWVyKQotICAgICAgOiBEZWxheU1hbmFnZXIobWF4X3BhY2tldHNf
aW5fYnVmZmVyLCBwZWFrX2RldGVjdG9yLCB0aWNrX3RpbWVyKSB7fQorICAgICAgOiBEZWxheU1h
bmFnZXIobWF4X3BhY2tldHNfaW5fYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgYmFzZV9t
aW5fdGFyZ2V0X2RlbGF5X21zLAorICAgICAgICAgICAgICAgICAgICAgcGVha19kZXRlY3RvciwK
KyAgICAgICAgICAgICAgICAgICAgIHRpY2tfdGltZXIpIHt9CiAgIHZpcnR1YWwgfk1vY2tEZWxh
eU1hbmFnZXIoKSB7IERpZSgpOyB9CiAgIE1PQ0tfTUVUSE9EMChEaWUsIHZvaWQoKSk7CiAgIE1P
Q0tfQ09OU1RfTUVUSE9EMChpYXRfdmVjdG9yLCBjb25zdCBJQVRWZWN0b3ImKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvbmFja190cmFja2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmFja190cmFj
a2VyLmNjCmluZGV4IGM2MmNkZjg4ZTRkYzEzZDg0ZmUzMDExYmJlNjQzNWJhNDljOGY3YzQuLmUz
ZWNmZWFlZDI3MDczYzY2Y2EyYWUyYWEwZDJlMWJkODQ2ZGIxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL25hY2tfdHJhY2tlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uYWNrX3RyYWNrZXIuY2MK
QEAgLTEwLDkgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L25hY2tfdHJhY2tlci5oIgogCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+ICAvLyBGb3IgYXNzZXJ0Lgot
Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gRm9yIHN0ZDo6bWF4LgorI2luY2x1ZGUgPGFzc2Vy
dC5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uYWNrX3RyYWNr
ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL25hY2tfdHJhY2tlci5oCmluZGV4IDE5MzZhOTQ0Y2NiNTJiZTc0
ZTU5ODJiOGRkZTM2Y2Y3YTMxYWMxZTMuLmQ3YzZiMDg0MjIyY2ZjMmIwYzRmZGU3N2VlNDRjZDU4
NjIyNzY5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25hY2tfdHJhY2tlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL25hY2tfdHJhY2tlci5oCkBAIC0xMSwxMSArMTEsMTIgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19DT0RJTkdfTkVURVFfTkFDS19UUkFDS0VSX0hfCiAjZGVmaW5lIE1PRFVMRVNf
QVVESU9fQ09ESU5HX05FVEVRX05BQ0tfVFJBQ0tFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+
CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHZlY3Rvcj4K
IAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21v
ZHVsZV90eXBlZGVmcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9u
X3R5cGVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXNf
cHVibGljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3Rlc3RfcHJvZF91dGlsLmgiCiAKIC8vCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxLmNjCmlu
ZGV4IGNmMWM2YWE2NjUzNjQ1NTNmMzA0MDZiNzZhYTQzMGJjNmYyMTllMjAuLjBlNjE0N2UyMzJj
YjE0NzAxODViZGY5ODcyYTcwOGQ4NTU1ZWY2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25l
dGVxLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxLmNjCkBAIC0xMCw4ICsxMCw2IEBACiAKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9pbmNsdWRlL25ldGVxLmgiCiAKLSNp
bmNsdWRlIDxtZW1vcnk+Ci0KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9u
ZXRlcV9pbXBsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5o
IgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBsLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
bmV0ZXFfaW1wbC5jYwppbmRleCBmNDI4YmUxYzNiYzgyNTBkY2QxNmNiZmUwODZhNjI5NDI3NmVm
NDVmLi4yYTAyNWYzMDRlNTM3Y2UxMTgwMGI3YzkxNjAwMzJlMTlkMjI0NTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9uZXRlcV9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGwu
Y2MKQEAgLTExLDEzICsxMSwxNiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL25ldGVxX2ltcGwuaCIKIAogI2luY2x1ZGUgPGFzc2VydC5oPgotCiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRl
IDxsaXN0PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1
ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2VicnRjX2NuZy5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2FjY2VsZXJhdGUuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9iYWNrZ3JvdW5kX25vaXNlLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYnVmZmVyX2xldmVsX2ZpbHRlci5o
IgpAQCAtNDAsMTUgKzQzLDE0IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9zeW5jX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3RpY2tfdGltZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
aW1lX3N0cmV0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aW1l
c3RhbXBfc2NhbGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29u
dmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zYW5pdGl6ZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zdHJpbmdzL2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zeXN0ZW0vZmFsbHRocm91Z2guaCIKICNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVu
dC5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC02MSw2ICs2Myw3IEBAIE5ldEVxSW1wbDo6RGVwZW5k
ZW5jaWVzOjpEZXBlbmRlbmNpZXMoCiAgICAgICAgICAgbmV3IERlY29kZXJEYXRhYmFzZShkZWNv
ZGVyX2ZhY3RvcnksIGNvbmZpZy5jb2RlY19wYWlyX2lkKSksCiAgICAgICBkZWxheV9wZWFrX2Rl
dGVjdG9yKG5ldyBEZWxheVBlYWtEZXRlY3Rvcih0aWNrX3RpbWVyLmdldCgpKSksCiAgICAgICBk
ZWxheV9tYW5hZ2VyKG5ldyBEZWxheU1hbmFnZXIoY29uZmlnLm1heF9wYWNrZXRzX2luX2J1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcubWluX2RlbGF5
X21zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5X3BlYWtfZGV0
ZWN0b3IuZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja190
aW1lci5nZXQoKSkpLAogICAgICAgZHRtZl9idWZmZXIobmV3IER0bWZCdWZmZXIoY29uZmlnLnNh
bXBsZV9yYXRlX2h6KSksCkBAIC0zODUsMjAgKzM4OCw2IEBAIE5ldEVxT3BlcmF0aW9uc0FuZFN0
YXRlIE5ldEVxSW1wbDo6R2V0T3BlcmF0aW9uc0FuZFN0YXRlKCkgY29uc3QgewogICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIE5ldEVxSW1wbDo6R2V0UnRjcFN0YXRpc3RpY3MoUnRjcFN0YXRp
c3RpY3MqIHN0YXRzKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfc2VjdF8pOwotICBp
ZiAoc3RhdHMpIHsKLSAgICBydGNwXy5HZXRTdGF0aXN0aWNzKGZhbHNlLCBzdGF0cyk7Ci0gIH0K
LX0KLQotdm9pZCBOZXRFcUltcGw6OkdldFJ0Y3BTdGF0aXN0aWNzTm9SZXNldChSdGNwU3RhdGlz
dGljcyogc3RhdHMpIHsKLSAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF9zZWN0Xyk7Ci0gIGlm
IChzdGF0cykgewotICAgIHJ0Y3BfLkdldFN0YXRpc3RpY3ModHJ1ZSwgc3RhdHMpOwotICB9Ci19
Ci0KIHZvaWQgTmV0RXFJbXBsOjpFbmFibGVWYWQoKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2so
JmNyaXRfc2VjdF8pOwogICBhc3NlcnQodmFkXy5nZXQoKSk7CkBAIC00NzMsMTIgKzQ2Miw2IEBA
IHZvaWQgTmV0RXFJbXBsOjpGbHVzaEJ1ZmZlcnMoKSB7CiAgIGZpcnN0X3BhY2tldF8gPSB0cnVl
OwogfQogCi12b2lkIE5ldEVxSW1wbDo6UGFja2V0QnVmZmVyU3RhdGlzdGljcyhpbnQqIGN1cnJl
bnRfbnVtX3BhY2tldHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQqIG1heF9udW1fcGFja2V0cykgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0
X3NlY3RfKTsKLSAgcGFja2V0X2J1ZmZlcl8tPkJ1ZmZlclN0YXQoY3VycmVudF9udW1fcGFja2V0
cywgbWF4X251bV9wYWNrZXRzKTsKLX0KLQogdm9pZCBOZXRFcUltcGw6OkVuYWJsZU5hY2soc2l6
ZV90IG1heF9uYWNrX2xpc3Rfc2l6ZSkgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0X3Nl
Y3RfKTsKICAgaWYgKCFuYWNrX2VuYWJsZWRfKSB7CkBAIC01NzQsOCArNTU3LDYgQEAgaW50IE5l
dEVxSW1wbDo6SW5zZXJ0UGFja2V0SW50ZXJuYWwoY29uc3QgUlRQSGVhZGVyJiBydHBfaGVhZGVy
LAogICAgIC8vIE5vdGU6IHxmaXJzdF9wYWNrZXRffCB3aWxsIGJlIGNsZWFyZWQgZnVydGhlciBk
b3duIGluIHRoaXMgbWV0aG9kLCBvbmNlCiAgICAgLy8gdGhlIHBhY2tldCBoYXMgYmVlbiBzdWNj
ZXNzZnVsbHkgaW5zZXJ0ZWQgaW50byB0aGUgcGFja2V0IGJ1ZmZlci4KIAotICAgIHJ0Y3BfLklu
aXQocnRwX2hlYWRlci5zZXF1ZW5jZU51bWJlcik7Ci0KICAgICAvLyBGbHVzaCB0aGUgcGFja2V0
IGJ1ZmZlciBhbmQgRFRNRiBidWZmZXIuCiAgICAgcGFja2V0X2J1ZmZlcl8tPkZsdXNoKCk7CiAg
ICAgZHRtZl9idWZmZXJfLT5GbHVzaCgpOwpAQCAtNTkwLDkgKzU3MSw2IEBAIGludCBOZXRFcUlt
cGw6Okluc2VydFBhY2tldEludGVybmFsKGNvbnN0IFJUUEhlYWRlciYgcnRwX2hlYWRlciwKICAg
ICB0aW1lc3RhbXBfID0gbWFpbl90aW1lc3RhbXA7CiAgIH0KIAotICAvLyBVcGRhdGUgUlRDUCBz
dGF0aXN0aWNzLCBvbmx5IGZvciByZWd1bGFyIHBhY2tldHMuCi0gIHJ0Y3BfLlVwZGF0ZShydHBf
aGVhZGVyLCByZWNlaXZlX3RpbWVzdGFtcCk7Ci0KICAgaWYgKG5hY2tfZW5hYmxlZF8pIHsKICAg
ICBSVENfRENIRUNLKG5hY2tfKTsKICAgICBpZiAodXBkYXRlX3NhbXBsZV9yYXRlX2FuZF9jaGFu
bmVscykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfaW1wbC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvbmV0ZXFfaW1wbC5oCmluZGV4IDhlZjk3Y2UwYWYzNzZmOTQxZWFkNGIxZWMzZWFmMWQ4ODk2
ZWM5ZjMuLjUyNWFlNjE1ZDg1NmVmZDQyZWExNjgzNzhiOTIyNGMwMzYyZTE3NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBs
LmgKQEAgLTE3LDEyICsxNywxMSBAQAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
ICNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9kZWZpbmVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvZGVmaW5lcy5oIiAgLy8gTW9kZXMsIE9wZXJhdGlvbnMKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmRfdW1hX2xvZ2dlci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaCIKLSNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXQuaCIgIC8vIERlY2xhcmUgUGFja2V0TGlz
dC4KKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXQuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9yYW5kb21fdmVjdG9yLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcnRjcC5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3N0YXRpc3RpY3NfY2FsY3VsYXRvci5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpY2tfdGltZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCkBAIC0xNzAsMTcgKzE2OSwxMCBAQCBjbGFzcyBOZXRFcUlt
cGwgOiBwdWJsaWMgd2VicnRjOjpOZXRFcSB7CiAgIC8vIGFmdGVyIHRoZSBjYWxsLgogICBpbnQg
TmV0d29ya1N0YXRpc3RpY3MoTmV0RXFOZXR3b3JrU3RhdGlzdGljcyogc3RhdHMpIG92ZXJyaWRl
OwogCi0gIC8vIFdyaXRlcyB0aGUgY3VycmVudCBSVENQIHN0YXRpc3RpY3MgdG8gfHN0YXRzfC4g
VGhlIHN0YXRpc3RpY3MgYXJlIHJlc2V0Ci0gIC8vIGFuZCBhIG5ldyByZXBvcnQgcGVyaW9kIGlz
IHN0YXJ0ZWQgd2l0aCB0aGUgY2FsbC4KLSAgdm9pZCBHZXRSdGNwU3RhdGlzdGljcyhSdGNwU3Rh
dGlzdGljcyogc3RhdHMpIG92ZXJyaWRlOwotCiAgIE5ldEVxTGlmZXRpbWVTdGF0aXN0aWNzIEdl
dExpZmV0aW1lU3RhdGlzdGljcygpIGNvbnN0IG92ZXJyaWRlOwogCiAgIE5ldEVxT3BlcmF0aW9u
c0FuZFN0YXRlIEdldE9wZXJhdGlvbnNBbmRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIC8v
IFNhbWUgYXMgUnRjcFN0YXRpc3RpY3MoKSwgYnV0IGRvZXMgbm90IHJlc2V0IGFueXRoaW5nLgot
ICB2b2lkIEdldFJ0Y3BTdGF0aXN0aWNzTm9SZXNldChSdGNwU3RhdGlzdGljcyogc3RhdHMpIG92
ZXJyaWRlOwotCiAgIC8vIEVuYWJsZXMgcG9zdC1kZWNvZGUgVkFELiBXaGVuIGVuYWJsZWQsIEdl
dEF1ZGlvKCkgd2lsbCByZXR1cm4KICAgLy8ga091dHB1dFZBRFBhc3NpdmUgd2hlbiB0aGUgc2ln
bmFsIGNvbnRhaW5zIG5vIHNwZWVjaC4KICAgdm9pZCBFbmFibGVWYWQoKSBvdmVycmlkZTsKQEAg
LTIwMCw5ICsxOTIsNiBAQCBjbGFzcyBOZXRFcUltcGwgOiBwdWJsaWMgd2VicnRjOjpOZXRFcSB7
CiAgIC8vIEZsdXNoZXMgYm90aCB0aGUgcGFja2V0IGJ1ZmZlciBhbmQgdGhlIHN5bmMgYnVmZmVy
LgogICB2b2lkIEZsdXNoQnVmZmVycygpIG92ZXJyaWRlOwogCi0gIHZvaWQgUGFja2V0QnVmZmVy
U3RhdGlzdGljcyhpbnQqIGN1cnJlbnRfbnVtX3BhY2tldHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQqIG1heF9udW1fcGFja2V0cykgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgdm9p
ZCBFbmFibGVOYWNrKHNpemVfdCBtYXhfbmFja19saXN0X3NpemUpIG92ZXJyaWRlOwogCiAgIHZv
aWQgRGlzYWJsZU5hY2soKSBvdmVycmlkZTsKQEAgLTM5NSw3ICszODQsNiBAQCBjbGFzcyBOZXRF
cUltcGwgOiBwdWJsaWMgd2VicnRjOjpOZXRFcSB7CiAgICAgICBSVENfR1VBUkRFRF9CWShjcml0
X3NlY3RfKTsKICAgUmFuZG9tVmVjdG9yIHJhbmRvbV92ZWN0b3JfIFJUQ19HVUFSREVEX0JZKGNy
aXRfc2VjdF8pOwogICBzdGQ6OnVuaXF1ZV9wdHI8Q29tZm9ydE5vaXNlPiBjb21mb3J0X25vaXNl
XyBSVENfR1VBUkRFRF9CWShjcml0X3NlY3RfKTsKLSAgUnRjcCBydGNwXyBSVENfR1VBUkRFRF9C
WShjcml0X3NlY3RfKTsKICAgU3RhdGlzdGljc0NhbGN1bGF0b3Igc3RhdHNfIFJUQ19HVUFSREVE
X0JZKGNyaXRfc2VjdF8pOwogICBpbnQgZnNfaHpfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8p
OwogICBpbnQgZnNfbXVsdF8gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9uZXRlcV9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFf
aW1wbF91bml0dGVzdC5jYwppbmRleCBiNzcyZGZhNzFkZTExOWZiY2MwNDA2ZWI0YmVkNDYxNjBl
NDdmNWU4Li4wZTA4N2M4NDdmMThmZGZjMzVmZDI4ZjMyMmY1ZmFiMjU5NTJhMDMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBsX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L25ldGVxX2ltcGxfdW5pdHRlc3QuY2MKQEAgLTkyLDcgKzkyLDggQEAgY2xhc3MgTmV0RXFJbXBs
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogCiAgICAgaWYgKHVzZV9tb2NrX2RlbGF5
X21hbmFnZXJfKSB7CiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0RlbGF5TWFuYWdlcj4gbW9j
ayhuZXcgTW9ja0RlbGF5TWFuYWdlcigKLSAgICAgICAgICBjb25maWdfLm1heF9wYWNrZXRzX2lu
X2J1ZmZlciwgZGVsYXlfcGVha19kZXRlY3Rvcl8sIHRpY2tfdGltZXJfKSk7CisgICAgICAgICAg
Y29uZmlnXy5tYXhfcGFja2V0c19pbl9idWZmZXIsIGNvbmZpZ18ubWluX2RlbGF5X21zLAorICAg
ICAgICAgIGRlbGF5X3BlYWtfZGV0ZWN0b3JfLCB0aWNrX3RpbWVyXykpOwogICAgICAgbW9ja19k
ZWxheV9tYW5hZ2VyXyA9IG1vY2suZ2V0KCk7CiAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja19kZWxh
eV9tYW5hZ2VyXywgc2V0X3N0cmVhbWluZ19tb2RlKGZhbHNlKSkuVGltZXMoMSk7CiAgICAgICBk
ZXBzLmRlbGF5X21hbmFnZXIgPSBzdGQ6Om1vdmUobW9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS9uZXRlcV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX3VuaXR0ZXN0LmNjCmlu
ZGV4IDNlZTBiNWJmNjkzZjUzOWZmZmU3NDZkZDQ0OWY0NzlkYTJmMmY0NGYuLmU4YjUwMjM3NzAz
MTQ4YTMzYWVmYTgzNGMxM2EwM2ZjODVmNmVmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25l
dGVxX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX3VuaXR0ZXN0LmNjCkBAIC0y
MiwxMiArMjIsMTIgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19mcmFtZS5oIgogI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIK
LSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvYXVkaW9fbG9vcC5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3BhY2tldF9zb3Vy
Y2VfaW5wdXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9u
ZXRlcV90ZXN0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMv
cnRwX2ZpbGVfc291cmNlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0
Y3Bfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2lnbm9yZV93dW5kZWYuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVt
ZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgpAQCAtNTIsNyArNTIsNyBAQCBSVENfUFVTSF9JR05P
UklOR19XVU5ERUYoKQogUlRDX1BPUF9JR05PUklOR19XVU5ERUYoKQogI2VuZGlmCiAKLURFRklO
RV9ib29sKGdlbl9yZWYsIGZhbHNlLCAiR2VuZXJhdGUgcmVmZXJlbmNlIGZpbGVzLiIpOworV0VC
UlRDX0RFRklORV9ib29sKGdlbl9yZWYsIGZhbHNlLCAiR2VuZXJhdGUgcmVmZXJlbmNlIGZpbGVz
LiIpOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMjM0LDcgKzIzNCwxNCBAQCB2b2lkIFJl
c3VsdFNpbms6OlZlcmlmeUNoZWNrc3VtKGNvbnN0IHN0ZDo6c3RyaW5nJiBjaGVja3N1bSkgewog
ICBidWZmZXIucmVzaXplKGRpZ2VzdF8tPlNpemUoKSk7CiAgIGRpZ2VzdF8tPkZpbmlzaCgmYnVm
ZmVyWzBdLCBidWZmZXIuc2l6ZSgpKTsKICAgY29uc3Qgc3RkOjpzdHJpbmcgcmVzdWx0ID0gcnRj
OjpoZXhfZW5jb2RlKCZidWZmZXJbMF0sIGRpZ2VzdF8tPlNpemUoKSk7Ci0gIEVYUEVDVF9FUShj
aGVja3N1bSwgcmVzdWx0KTsKKyAgaWYgKGNoZWNrc3VtLnNpemUoKSA9PSByZXN1bHQuc2l6ZSgp
KSB7CisgICAgRVhQRUNUX0VRKGNoZWNrc3VtLCByZXN1bHQpOworICB9IGVsc2UgeworICAgIC8v
IENoZWNrIHJlc3VsdCBpcyBvbmUgdGhlICd8Jy1zZXBhcmF0ZWQgY2hlY2tzdW1zLgorICAgIEVY
UEVDVF9ORShjaGVja3N1bS5maW5kKHJlc3VsdCksIHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAg
ICA8PCByZXN1bHQgPDwgIiBzaG91bGQgYmUgb25lIG9mIHRoZXNlOlxuIgorICAgICAgICA8PCBj
aGVja3N1bTsKKyAgfQogfQogCiBjbGFzcyBOZXRFcURlY29kaW5nVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgewpAQCAtMjU4LDcgKzI2NSw2IEBAIGNsYXNzIE5ldEVxRGVjb2RpbmdUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgIHZvaWQgRGVjb2RlQW5kQ29tcGFyZShjb25z
dCBzdGQ6OnN0cmluZyYgcnRwX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgb3V0cHV0X2NoZWNrc3VtLAogICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIG5ldHdvcmtfc3RhdHNfY2hlY2tzdW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcnRjcF9zdGF0c19jaGVja3N1bSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZ2VuX3JlZik7CiAKICAgc3RhdGljIHZvaWQgUG9wdWxhdGVS
dHBJbmZvKGludCBmcmFtZV9pbmRleCwKQEAgLTM2Niw3ICszNzIsNiBAQCB2b2lkIE5ldEVxRGVj
b2RpbmdUZXN0OjpEZWNvZGVBbmRDb21wYXJlKAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBydHBf
ZmlsZSwKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2NoZWNrc3VtLAogICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBuZXR3b3JrX3N0YXRzX2NoZWNrc3VtLAotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBydGNwX3N0YXRzX2NoZWNrc3VtLAogICAgIGJvb2wgZ2VuX3JlZikgewogICBPcGVuSW5w
dXRGaWxlKHJ0cF9maWxlKTsKIApAQCAtMzc4LDEwICszODMsNiBAQCB2b2lkIE5ldEVxRGVjb2Rp
bmdUZXN0OjpEZWNvZGVBbmRDb21wYXJlKAogICAgICAgZ2VuX3JlZiA/IHdlYnJ0Yzo6dGVzdDo6
T3V0cHV0UGF0aCgpICsgIm5ldGVxX25ldHdvcmtfc3RhdHMuZGF0IiA6ICIiOwogICBSZXN1bHRT
aW5rIG5ldHdvcmtfc3RhdHMoc3RhdF9vdXRfZmlsZSk7CiAKLSAgc3RkOjpzdHJpbmcgcnRjcF9v
dXRfZmlsZSA9Ci0gICAgICBnZW5fcmVmID8gd2VicnRjOjp0ZXN0OjpPdXRwdXRQYXRoKCkgKyAi
bmV0ZXFfcnRjcF9zdGF0cy5kYXQiIDogIiI7Ci0gIFJlc3VsdFNpbmsgcnRjcF9zdGF0cyhydGNw
X291dF9maWxlKTsKLQogICBwYWNrZXRfID0gcnRwX3NvdXJjZV8tPk5leHRQYWNrZXQoKTsKICAg
aW50IGkgPSAwOwogICB1aW50NjRfdCBsYXN0X2NvbmNlYWxlZF9zYW1wbGVzID0gMDsKQEAgLTQx
OCwxMSArNDE5LDYgQEAgdm9pZCBOZXRFcURlY29kaW5nVGVzdDo6RGVjb2RlQW5kQ29tcGFyZSgK
ICAgICAgIEVYUEVDVF9ORUFSKAogICAgICAgICAgIChkZWx0YV9jb25jZWFsZWRfc2FtcGxlcyA8
PCAxNCkgLyBkZWx0YV90b3RhbF9zYW1wbGVzX3JlY2VpdmVkLAogICAgICAgICAgIGN1cnJlbnRf
bmV0d29ya19zdGF0cy5leHBhbmRfcmF0ZSwgKDIgPDwgMTQpIC8gMTAwLjApOwotCi0gICAgICAv
LyBQcm9jZXNzIFJUQ1BzdGF0LgotICAgICAgUnRjcFN0YXRpc3RpY3MgY3VycmVudF9ydGNwX3N0
YXRzOwotICAgICAgbmV0ZXFfLT5HZXRSdGNwU3RhdGlzdGljcygmY3VycmVudF9ydGNwX3N0YXRz
KTsKLSAgICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKHJ0Y3Bfc3RhdHMuQWRkUmVzdWx0KGN1
cnJlbnRfcnRjcF9zdGF0cykpOwogICAgIH0KICAgfQogCkBAIC00MzAsOCArNDI2LDYgQEAgdm9p
ZCBOZXRFcURlY29kaW5nVGVzdDo6RGVjb2RlQW5kQ29tcGFyZSgKICAgb3V0cHV0LlZlcmlmeUNo
ZWNrc3VtKG91dHB1dF9jaGVja3N1bSk7CiAgIFNDT1BFRF9UUkFDRSgiQ2hlY2sgbmV0d29yayBz
dGF0cy4iKTsKICAgbmV0d29ya19zdGF0cy5WZXJpZnlDaGVja3N1bShuZXR3b3JrX3N0YXRzX2No
ZWNrc3VtKTsKLSAgU0NPUEVEX1RSQUNFKCJDaGVjayBydGNwIHN0YXRzLiIpOwotICBydGNwX3N0
YXRzLlZlcmlmeUNoZWNrc3VtKHJ0Y3Bfc3RhdHNfY2hlY2tzdW0pOwogfQogCiB2b2lkIE5ldEVx
RGVjb2RpbmdUZXN0OjpQb3B1bGF0ZVJ0cEluZm8oaW50IGZyYW1lX2luZGV4LApAQCAtNDgxLDE0
ICs0NzUsOCBAQCBURVNUX0YoTmV0RXFEZWNvZGluZ1Rlc3QsIE1BWUJFX1Rlc3RCaXRFeGFjdG5l
c3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIjRiMjM3MGY1Yzc5NDc0MWQyYTQ2YmU1Yzc5
MzVjNjZlZjNmYjUzZTkiLAogICAgICAgICAgICAgICAgICAgICAgICAiNGIyMzcwZjVjNzk0NzQx
ZDJhNDZiZTVjNzkzNWM2NmVmM2ZiNTNlOSIpOwogCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHJ0Y3Bf
c3RhdHNfY2hlY2tzdW0gPQotICAgICAgUGxhdGZvcm1DaGVja3N1bSgiYjg4ODBiZjlmZWQyNDg3
ZWZiZGRjYjhkOTRiOTkzN2EyOWFlNTIxZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICJmM2Y3
YjNkM2U3MWQ3ZTYzNTI0MGI1MzczYjU3ZGY2YTdlNGNlOWQ0IiwgIm5vdCB1c2VkIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgImI4ODgwYmY5ZmVkMjQ4N2VmYmRkY2I4ZDk0Yjk5MzdhMjlhZTUy
MWQiLAotICAgICAgICAgICAgICAgICAgICAgICAiYjg4ODBiZjlmZWQyNDg3ZWZiZGRjYjhkOTRi
OTkzN2EyOWFlNTIxZCIpOwotCiAgIERlY29kZUFuZENvbXBhcmUoaW5wdXRfcnRwX2ZpbGUsIG91
dHB1dF9jaGVja3N1bSwgbmV0d29ya19zdGF0c19jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAg
ICBydGNwX3N0YXRzX2NoZWNrc3VtLCBGTEFHX2dlbl9yZWYpOworICAgICAgICAgICAgICAgICAg
IEZMQUdfZ2VuX3JlZik7CiB9CiAKICNpZiAhZGVmaW5lZChXRUJSVENfSU9TKSAmJiBkZWZpbmVk
KFdFQlJUQ19ORVRFUV9VTklUVEVTVF9CSVRFWEFDVCkgJiYgXApAQCAtNTAxLDEyICs0ODksMTMg
QEAgVEVTVF9GKE5ldEVxRGVjb2RpbmdUZXN0LCBNQVlCRV9UZXN0T3B1c0JpdEV4YWN0bmVzcykg
ewogICBjb25zdCBzdGQ6OnN0cmluZyBpbnB1dF9ydHBfZmlsZSA9CiAgICAgICB3ZWJydGM6OnRl
c3Q6OlJlc291cmNlUGF0aCgiYXVkaW9fY29kaW5nL25ldGVxX29wdXMiLCAicnRwIik7CiAKLSAg
Y29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0X2NoZWNrc3VtID0KLSAgICAgIFBsYXRmb3JtQ2hlY2tz
dW0oIjE0YTYzYjNjN2I5MjVjODIyOTZiZTRiYWZjNzFiZWM4NWYyOTE1YzIiLAotICAgICAgICAg
ICAgICAgICAgICAgICAiYjdiN2VkODAyYjBlMThlZTQxNjk3M2JmM2I5YWU5ODU5OWIwMTgxZCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICI1ODc2ZTUyZGRhOTBkNWNhNDMzYzM3MjY1NTViOTA3
Yjk3Yzg2Mzc0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIjE0YTYzYjNjN2I5MjVjODIyOTZi
ZTRiYWZjNzFiZWM4NWYyOTE1YzIiLAotICAgICAgICAgICAgICAgICAgICAgICAiMTRhNjNiM2M3
YjkyNWM4MjI5NmJlNGJhZmM3MWJlYzg1ZjI5MTVjMiIpOworICAvLyBDaGVja3N1bSBkZXBlbmRz
IG9uIGxpYm9wdXMgYmVpbmcgY29tcGlsZWQgd2l0aCBvciB3aXRob3V0IFNTRS4KKyAgY29uc3Qg
c3RkOjpzdHJpbmcgbWF5YmVfc3NlID0KKyAgICAgICIxNGE2M2IzYzdiOTI1YzgyMjk2YmU0YmFm
YzcxYmVjODVmMjkxNWMyfCIKKyAgICAgICIyYzA1Njc3ZGFhOTY4ZDZjNjhiOTJhZGY0YWZmYjdj
ZDliYjRkMzYzIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0X2NoZWNrc3VtID0gUGxhdGZv
cm1DaGVja3N1bSgKKyAgICAgIG1heWJlX3NzZSwgImI3YjdlZDgwMmIwZTE4ZWU0MTY5NzNiZjNi
OWFlOTg1OTliMDE4MWQiLAorICAgICAgIjU4NzZlNTJkZGE5MGQ1Y2E0MzNjMzcyNjU1NWI5MDdi
OTdjODYzNzQiLCBtYXliZV9zc2UsIG1heWJlX3NzZSk7CiAKICAgY29uc3Qgc3RkOjpzdHJpbmcg
bmV0d29ya19zdGF0c19jaGVja3N1bSA9CiAgICAgICBQbGF0Zm9ybUNoZWNrc3VtKCJhZGIzMjcy
NDk4ZTQzNmQxYzAxOWNiZmQ3MTYxMGU5NTEwYzU0NDk3IiwKQEAgLTUxNSwxNSArNTA0LDggQEAg
VEVTVF9GKE5ldEVxRGVjb2RpbmdUZXN0LCBNQVlCRV9UZXN0T3B1c0JpdEV4YWN0bmVzcykgewog
ICAgICAgICAgICAgICAgICAgICAgICAiYWRiMzI3MjQ5OGU0MzZkMWMwMTljYmZkNzE2MTBlOTUx
MGM1NDQ5NyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJhZGIzMjcyNDk4ZTQzNmQxYzAxOWNi
ZmQ3MTYxMGU5NTEwYzU0NDk3Iik7CiAKLSAgY29uc3Qgc3RkOjpzdHJpbmcgcnRjcF9zdGF0c19j
aGVja3N1bSA9Ci0gICAgICBQbGF0Zm9ybUNoZWNrc3VtKCJlMzdjNzk3ZTNkZTZhNjRkZGE4OGM5
YWRlN2EwMTNkMDIyYTJlMWUwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgImUzN2M3OTdlM2Rl
NmE2NGRkYTg4YzlhZGU3YTAxM2QwMjJhMmUxZTAiLAotICAgICAgICAgICAgICAgICAgICAgICAi
ZTM3Yzc5N2UzZGU2YTY0ZGRhODhjOWFkZTdhMDEzZDAyMmEyZTFlMCIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICJlMzdjNzk3ZTNkZTZhNjRkZGE4OGM5YWRlN2EwMTNkMDIyYTJlMWUwIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgImUzN2M3OTdlM2RlNmE2NGRkYTg4YzlhZGU3YTAxM2QwMjJh
MmUxZTAiKTsKLQogICBEZWNvZGVBbmRDb21wYXJlKGlucHV0X3J0cF9maWxlLCBvdXRwdXRfY2hl
Y2tzdW0sIG5ldHdvcmtfc3RhdHNfY2hlY2tzdW0sCi0gICAgICAgICAgICAgICAgICAgcnRjcF9z
dGF0c19jaGVja3N1bSwgRkxBR19nZW5fcmVmKTsKKyAgICAgICAgICAgICAgICAgICBGTEFHX2dl
bl9yZWYpOwogfQogCiAjaWYgIWRlZmluZWQoV0VCUlRDX0lPUykgJiYgZGVmaW5lZChXRUJSVENf
TkVURVFfVU5JVFRFU1RfQklURVhBQ1QpICYmIFwKQEAgLTUzNiwyMSArNTE4LDE4IEBAIFRFU1Rf
RihOZXRFcURlY29kaW5nVGVzdCwgTUFZQkVfVGVzdE9wdXNEdHhCaXRFeGFjdG5lc3MpIHsKICAg
Y29uc3Qgc3RkOjpzdHJpbmcgaW5wdXRfcnRwX2ZpbGUgPQogICAgICAgd2VicnRjOjp0ZXN0OjpS
ZXNvdXJjZVBhdGgoImF1ZGlvX2NvZGluZy9uZXRlcV9vcHVzX2R0eCIsICJydHAiKTsKIAotICBj
b25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfY2hlY2tzdW0gPQotICAgICAgUGxhdGZvcm1DaGVja3N1
bSgiNzEzYWY2YzkyODgxZjVhYWIxMjg1NzY1ZWU2NjgwZGE5ZDFjMDZjZSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICIzZWM5OTFiOTY4NzIxMjNmMTU1NGMwM2M1NDNjYTVkNTE4NDMxZTQ2IiwK
LSAgICAgICAgICAgICAgICAgICAgICAgImRhOWY5YTJkOTRlMGMyZDY3MzQyZmFkNDk2NWQ3Yjkx
Y2RhNTBiMjUiLAotICAgICAgICAgICAgICAgICAgICAgICAiNzEzYWY2YzkyODgxZjVhYWIxMjg1
NzY1ZWU2NjgwZGE5ZDFjMDZjZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICI3MTNhZjZjOTI4
ODFmNWFhYjEyODU3NjVlZTY2ODBkYTlkMWMwNmNlIik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1h
eWJlX3NzZSA9CisgICAgICAiNzEzYWY2YzkyODgxZjVhYWIxMjg1NzY1ZWU2NjgwZGE5ZDFjMDZj
ZXwiCisgICAgICAiMmFjMTBjNGU3OWFlZWRkMGRmMjg2M2IwNzlkYTU4NDhiNDBmMDBiNSI7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1dF9jaGVja3N1bSA9IFBsYXRmb3JtQ2hlY2tzdW0oCisg
ICAgICBtYXliZV9zc2UsICIzZWM5OTFiOTY4NzIxMjNmMTU1NGMwM2M1NDNjYTVkNTE4NDMxZTQ2
IiwKKyAgICAgICJkYTlmOWEyZDk0ZTBjMmQ2NzM0MmZhZDQ5NjVkN2I5MWNkYTUwYjI1IiwgbWF5
YmVfc3NlLCBtYXliZV9zc2UpOwogCiAgIGNvbnN0IHN0ZDo6c3RyaW5nIG5ldHdvcmtfc3RhdHNf
Y2hlY2tzdW0gPQogICAgICAgImJhYjU4ZGM1ODdkOTU2ZjMyNjA1NmQ3MzQwYzk2ZWI5ZDJkM2Nj
MjEiOwogCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHJ0Y3Bfc3RhdHNfY2hlY2tzdW0gPQotICAgICAg
ImFjMjdhN2YzMDVlZmI1OGIzOWJmMTIzZGNjZWUyNWRlZTU3NThlNjMiOwotCiAgIERlY29kZUFu
ZENvbXBhcmUoaW5wdXRfcnRwX2ZpbGUsIG91dHB1dF9jaGVja3N1bSwgbmV0d29ya19zdGF0c19j
aGVja3N1bSwKLSAgICAgICAgICAgICAgICAgICBydGNwX3N0YXRzX2NoZWNrc3VtLCBGTEFHX2dl
bl9yZWYpOworICAgICAgICAgICAgICAgICAgIEZMQUdfZ2VuX3JlZik7CiB9CiAKIC8vIFVzZSBm
YXggbW9kZSB0byBhdm9pZCB0aW1lLXNjYWxpbmcuIFRoaXMgaXMgdG8gc2ltcGxpZnkgdGhlIHRl
c3Rpbmcgb2YKQEAgLTE3NDAsNyArMTcxOSw3IEBAIFRFU1QoTmV0RXFOb1RpbWVTdHJldGNoaW5n
TW9kZSwgUnVuVGVzdCkgewogICAgICAgezgsIGtSdHBFeHRlbnNpb25WaWRlb1RpbWluZ319Owog
ICBzdGQ6OnVuaXF1ZV9wdHI8TmV0RXFJbnB1dD4gaW5wdXQobmV3IE5ldEVxUnRwRHVtcElucHV0
KAogICAgICAgd2VicnRjOjp0ZXN0OjpSZXNvdXJjZVBhdGgoImF1ZGlvX2NvZGluZy9uZXRlcV91
bml2ZXJzYWxfbmV3IiwgInJ0cCIpLAotICAgICAgcnRwX2V4dF9tYXApKTsKKyAgICAgIHJ0cF9l
eHRfbWFwLCBhYnNsOjpudWxsb3B0IC8qTm8gU1NSQyBmaWx0ZXIqLykpOwogICBzdGQ6OnVuaXF1
ZV9wdHI8VGltZUxpbWl0ZWROZXRFcUlucHV0PiBpbnB1dF90aW1lX2xpbWl0KAogICAgICAgbmV3
IFRpbWVMaW1pdGVkTmV0RXFJbnB1dChzdGQ6Om1vdmUoaW5wdXQpLCAyMDAwMCkpOwogICBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9TaW5rPiBvdXRwdXQobmV3IFZvaWRBdWRpb1NpbmspOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvbm9ybWFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ub3JtYWwuaAppbmRleCBi
MTNmMTZlNTBkYzgxOGQxYzA4NjFlY2MxZmRjMjM5Yzk4NzdhOTJlLi44MDQ1MWI1MDA3ODEzZmE3
MTM5NmI4NzFiZTU1Y2RkODEzNTI4NTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ub3JtYWwu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9ub3JtYWwuaApAQCAtMTEsMTEgKzExLDkgQEAKICNpZm5kZWYg
TU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfTk9STUFMX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fQ09ESU5HX05FVEVRX05PUk1BTF9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVk
ZSA8c3RyaW5nLmg+ICAvLyBBY2Nlc3MgdG8gc2l6ZV90LgogCi0jaW5jbHVkZSA8dmVjdG9yPgot
Ci0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9y
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVmaW5lcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKQEAgLTI0LDYgKzIyLDcgQEAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBGb3J3
YXJkIGRlY2xhcmF0aW9ucy4KK2NsYXNzIEF1ZGlvTXVsdGlWZWN0b3I7CiBjbGFzcyBCYWNrZ3Jv
dW5kTm9pc2U7CiBjbGFzcyBEZWNvZGVyRGF0YWJhc2U7CiBjbGFzcyBFeHBhbmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldC5oCmluZGV4IDQ1
YzU2ZTFiNjg2YjM1M2JkZmU5NDdlNTdjNzEwZWI4YzAwZTdjZDkuLjM1OGQ4ZmExYWJiOGY4Yjll
MDk3ZmUxNzU1NDViYTg2OWVmMWZkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3BhY2tldC5oCkBAIC0xMSwxMiArMTEsMTQgQEAKICNpZm5kZWYg
TU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfUEFDS0VUX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fQ09ESU5HX05FVEVRX1BBQ0tFVF9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVk
ZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
aWNrX3RpbWVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9wYWNrZXRfYnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0X2J1ZmZlci5jYwpp
bmRleCBlYmE0ZDNlNjhiNjZkNmU1NzFlOWMwNmU0NTU3MzgxN2FmN2RhOTc4Li4zNDM3NjNiNGU0
ZDgxM2ZhNjEwNWMzYWI5OWU2ZmVhNzA2MDY2MmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9w
YWNrZXRfYnVmZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldF9idWZmZXIuY2MKQEAgLTE0
LDEyICsxNCwxNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFj
a2V0X2J1ZmZlci5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gZmluZF9pZigpCisjaW5j
bHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8bWVtb3J5PgorI2lu
Y2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhcGkv
YXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvdGlja190aW1lci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CkBAIC0yOTQsOSArMjk5LDQgQEAgYm9vbCBQYWNrZXRCdWZmZXI6OkNvbnRhaW5zRHR4T3JDbmdQ
YWNrZXQoCiAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBQYWNrZXRCdWZmZXI6OkJ1ZmZlclN0
YXQoaW50KiBudW1fcGFja2V0cywgaW50KiBtYXhfbnVtX3BhY2tldHMpIGNvbnN0IHsKLSAgKm51
bV9wYWNrZXRzID0gc3RhdGljX2Nhc3Q8aW50PihidWZmZXJfLnNpemUoKSk7Ci0gICptYXhfbnVt
X3BhY2tldHMgPSBzdGF0aWNfY2FzdDxpbnQ+KG1heF9udW1iZXJfb2ZfcGFja2V0c18pOwotfQot
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRf
YnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRfYnVmZmVyLmgKaW5kZXggN2UzNGMxZTlmY2Uw
YjgwMDNkNDM3ODY2MjU2NDBjM2MyMmY1MDVjZS4uMGY1Y2Q3ZjhlZDVkYWNkMDVjNzA1MTcwNmI2
ZDVmMDA1ZmFiNGRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0X2J1ZmZlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3BhY2tldF9idWZmZXIuaApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvcGFja2V0LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21t
b25fdHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBl
c19wdWJsaWMuaCIgIC8vIElzTmV3ZXJUaW1lc3RhbXAKICNpbmNsdWRlICJydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMTI1LDggKzEyNSw2IEBA
IGNsYXNzIFBhY2tldEJ1ZmZlciB7CiAgIHZpcnR1YWwgYm9vbCBDb250YWluc0R0eE9yQ25nUGFj
a2V0KAogICAgICAgY29uc3QgRGVjb2RlckRhdGFiYXNlKiBkZWNvZGVyX2RhdGFiYXNlKSBjb25z
dDsKIAotICB2aXJ0dWFsIHZvaWQgQnVmZmVyU3RhdChpbnQqIG51bV9wYWNrZXRzLCBpbnQqIG1h
eF9udW1fcGFja2V0cykgY29uc3Q7Ci0KICAgLy8gU3RhdGljIG1ldGhvZCByZXR1cm5pbmcgdHJ1
ZSBpZiB8dGltZXN0YW1wfCBpcyBvbGRlciB0aGFuIHx0aW1lc3RhbXBfbGltaXR8CiAgIC8vIGJ1
dCBsZXNzIHRoYW4gfGhvcml6b25fc2FtcGxlc3wgYmVoaW5kIHx0aW1lc3RhbXBfbGltaXR8LiBG
b3IgaW5zdGFuY2UsCiAgIC8vIHdpdGggdGltZXN0YW1wX2xpbWl0ID0gMTAwIGFuZCBob3Jpem9u
X3NhbXBsZXMgPSAxMCwgYSB0aW1lc3RhbXAgaW4gdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9wb3N0X2RlY29kZV92YWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Bvc3RfZGVjb2RlX3ZhZC5oCmluZGV4
IGFkNGYwODIzYmI3YTVkNzJjODExMWUwNzU4MTQxZjM0Zjc2Yzk5NmQuLjI3ZDY5YTZlZWIyMjgw
YWZiODM0ZTY4M2I5ZjJkYTFhNGI4ZDMxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Bvc3Rf
ZGVjb2RlX3ZhZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Bvc3RfZGVjb2RlX3ZhZC5oCkBAIC0xMSwx
MyArMTEsMTEgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfUE9TVF9ERUNP
REVfVkFEX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1BPU1RfREVDT0RF
X1ZBRF9IXwogCi0jaW5jbHVkZSA8c3RyaW5nPiAgLy8gc2l6ZV90CisjaW5jbHVkZSA8c3RkZGVm
Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1
ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vdmFkL2luY2x1ZGUvd2VicnRj
X3ZhZC5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1
ZGUpICAvLyBOVUxMCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVmaW5l
cy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wcmVlbXB0aXZlX2V4cGFuZC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3ByZWVtcHRpdmVfZXhwYW5kLmNjCmluZGV4IDYxNTlhOWNiMTVkNzBlNjcwODZkZmYxZjdl
ZjBjMDI1Yzc1MWYzOTMuLmNhZDhkNmE1MGY2Y2NkMmE1MGRhMjU5NGJiYTc5YjA3NDFkZjcyMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3ByZWVtcHRpdmVfZXhwYW5kLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3ByZWVtcHRpdmVfZXhwYW5kLmNjCkBAIC0xMCw5ICsxMCwxMSBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcHJlZW1wdGl2ZV9leHBhbmQuaCIKIAotI2lu
Y2x1ZGUgPGFsZ29yaXRobT4gIC8vIG1pbiwgbWF4CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi0j
aW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3By
b2Nlc3NpbmdfbGlicmFyeS5oIgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGltZV9zdHJldGNoLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wcmVlbXB0aXZlX2V4cGFu
ZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvcHJlZW1wdGl2ZV9leHBhbmQuaAppbmRleCBhY2U2NDhmMTVjY2Uy
NTcxMDk5NzZiYmVjODhkYzg3YjBhMTI1ZjUzLi4wZjdiM2JjOGFjZjE4YmQzY2U5ZTZmY2VkZGVm
ZmM4YWVlZjVhM2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wcmVlbXB0aXZlX2V4cGFuZC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3ByZWVtcHRpdmVfZXhwYW5kLmgKQEAgLTExLDEzICsxMSwxNSBA
QAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9QUkVFTVBUSVZFX0VYUEFORF9I
XwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9QUkVFTVBUSVZFX0VYUEFORF9I
XwogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVj
dG9yLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aW1lX3N0cmV0Y2guaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi0v
LyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KK2NsYXNzIEF1ZGlvTXVsdGlWZWN0b3I7CiBjbGFzcyBC
YWNrZ3JvdW5kTm9pc2U7CiAKIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgUHJlZW1wdGl2
ZUV4cGFuZCBvcGVyYXRpb24uIE1vc3Qgb2YgdGhlIHdvcmsgaXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3JlZF9wYXlsb2FkX3NwbGl0dGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRf
c3BsaXR0ZXIuY2MKaW5kZXggZjU0MzVlOGVhYjRhZDFlZmI5NmQzYTAzOWY5Njc2ZGNiODI5ZmM3
MC4uMmRmZTgzODZmZjlhOTRlZWE5N2VlMjdmYTc0MzY1NzRjZWI3ZjAyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcmVk
X3BheWxvYWRfc3BsaXR0ZXIuY2MKQEAgLTExLDEwICsxMSwxNSBAQAogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3JlZF9wYXlsb2FkX3NwbGl0dGVyLmgiCiAKICNpbmNsdWRl
IDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2lu
Y2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvcGFja2V0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVf
Y29udmVyc2lvbnMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3Bs
aXR0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3JlZF9wYXlsb2FkX3NwbGl0dGVyLmgKaW5kZXggNWUyMzlk
ZGM3MDgyNjBlNjZmZjRlYTM2MWM1Y2MyNjExNzU2NGI0Ni4uNTUwNjNlNzQxNzY5ZTBjMDMxYjky
YmEwZjA3NTNhOTBmZWQwZjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRf
c3BsaXR0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9yZWRfcGF5bG9hZF9zcGxpdHRlci5oCkBAIC0x
Niw3ICsxNiw2IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi0vLyBGb3J3YXJkIGRlY2xhcmF0
aW9ucy4KIGNsYXNzIERlY29kZXJEYXRhYmFzZTsKIAogLy8gVGhpcyBjbGFzcyBoYW5kbGVzIHNw
bGl0dGluZyBvZiBSRUQgcGF5bG9hZHMgaW50byBzbWFsbGVyIHBhcnRzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvcnRjcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3J0Y3AuY2MKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDU1MWViNWY3NWI0MDFmZmIyZjk1ODI4YjI4MmQ4ZmRkNWFmY2E5YzIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvcnRjcC5jYworKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IChjKSAyMDExIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcnRjcC5oIgot
Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxh
bGdvcml0aG0+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi12b2lkIFJ0Y3A6OkluaXQodWludDE2
X3Qgc3RhcnRfc2VxdWVuY2VfbnVtYmVyKSB7Ci0gIGN5Y2xlc18gPSAwOwotICBtYXhfc2VxX25v
XyA9IHN0YXJ0X3NlcXVlbmNlX251bWJlcjsKLSAgYmFzZV9zZXFfbm9fID0gc3RhcnRfc2VxdWVu
Y2VfbnVtYmVyOwotICByZWNlaXZlZF9wYWNrZXRzXyA9IDA7Ci0gIHJlY2VpdmVkX3BhY2tldHNf
cHJpb3JfID0gMDsKLSAgZXhwZWN0ZWRfcHJpb3JfID0gMDsKLSAgaml0dGVyXyA9IDA7Ci0gIHRy
YW5zaXRfID0gMDsKLX0KLQotdm9pZCBSdGNwOjpVcGRhdGUoY29uc3QgUlRQSGVhZGVyJiBydHBf
aGVhZGVyLCB1aW50MzJfdCByZWNlaXZlX3RpbWVzdGFtcCkgewotICAvLyBVcGRhdGUgbnVtYmVy
IG9mIHJlY2VpdmVkIHBhY2tldHMsIGFuZCBsYXJnZXN0IHBhY2tldCBudW1iZXIgcmVjZWl2ZWQu
Ci0gIHJlY2VpdmVkX3BhY2tldHNfKys7Ci0gIGludDE2X3Qgc25fZGlmZiA9IHJ0cF9oZWFkZXIu
c2VxdWVuY2VOdW1iZXIgLSBtYXhfc2VxX25vXzsKLSAgaWYgKHNuX2RpZmYgPj0gMCkgewotICAg
IGlmIChydHBfaGVhZGVyLnNlcXVlbmNlTnVtYmVyIDwgbWF4X3NlcV9ub18pIHsKLSAgICAgIC8v
IFdyYXAtYXJvdW5kIGRldGVjdGVkLgotICAgICAgY3ljbGVzXysrOwotICAgIH0KLSAgICBtYXhf
c2VxX25vXyA9IHJ0cF9oZWFkZXIuc2VxdWVuY2VOdW1iZXI7Ci0gIH0KLQotICAvLyBDYWxjdWxh
dGUgaml0dGVyIGFjY29yZGluZyB0byBSRkMgMzU1MCwgYW5kIHVwZGF0ZSBwcmV2aW91cyB0aW1l
c3RhbXBzLgotICAvLyBOb3RlIHRoYXQgdGhlIHZhbHVlIGluIHxqaXR0ZXJffCBpcyBpbiBRNC4K
LSAgaWYgKHJlY2VpdmVkX3BhY2tldHNfID4gMSkgewotICAgIGludDMyX3QgdHNfZGlmZiA9IHJl
Y2VpdmVfdGltZXN0YW1wIC0gKHJ0cF9oZWFkZXIudGltZXN0YW1wIC0gdHJhbnNpdF8pOwotICAg
IGludDY0X3Qgaml0dGVyX2RpZmYgPSAoc3RkOjphYnMoaW50NjRfdHt0c19kaWZmfSkgPDwgNCkg
LSBqaXR0ZXJfOwotICAgIC8vIENhbGN1bGF0ZSAxNSAqIGppdHRlcl8gLyAxNiArIGppdHRlcl9k
aWZmIC8gMTYgKHdpdGggcHJvcGVyIHJvdW5kaW5nKS4KLSAgICBqaXR0ZXJfID0gaml0dGVyXyAr
ICgoaml0dGVyX2RpZmYgKyA4KSA+PiA0KTsKLSAgICBSVENfRENIRUNLX0dFKGppdHRlcl8sIDAp
OwotICB9Ci0gIHRyYW5zaXRfID0gcnRwX2hlYWRlci50aW1lc3RhbXAgLSByZWNlaXZlX3RpbWVz
dGFtcDsKLX0KLQotdm9pZCBSdGNwOjpHZXRTdGF0aXN0aWNzKGJvb2wgbm9fcmVzZXQsIFJ0Y3BT
dGF0aXN0aWNzKiBzdGF0cykgewotICAvLyBFeHRlbmRlZCBoaWdoZXN0IHNlcXVlbmNlIG51bWJl
ciByZWNlaXZlZC4KLSAgc3RhdHMtPmV4dGVuZGVkX2hpZ2hlc3Rfc2VxdWVuY2VfbnVtYmVyID0K
LSAgICAgIChzdGF0aWNfY2FzdDxpbnQ+KGN5Y2xlc18pIDw8IDE2KSArIG1heF9zZXFfbm9fOwot
Ci0gIC8vIENhbGN1bGF0ZSBleHBlY3RlZCBudW1iZXIgb2YgcGFja2V0cyBhbmQgY29tcGFyZSBp
dCB3aXRoIHRoZSBudW1iZXIgb2YKLSAgLy8gcGFja2V0cyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVj
ZWl2ZWQuIFRoZSBjdW11bGF0aXZlIG51bWJlciBvZiBsb3N0IHBhY2tldHMKLSAgLy8gY2FuIGJl
IGV4dHJhY3RlZC4KLSAgdWludDMyX3QgZXhwZWN0ZWRfcGFja2V0cyA9Ci0gICAgICBzdGF0cy0+
ZXh0ZW5kZWRfaGlnaGVzdF9zZXF1ZW5jZV9udW1iZXIgLSBiYXNlX3NlcV9ub18gKyAxOwotICBp
ZiAocmVjZWl2ZWRfcGFja2V0c18gPT0gMCkgewotICAgIC8vIE5vIHBhY2tldHMgcmVjZWl2ZWQs
IGFzc3VtZSBub25lIGxvc3QuCi0gICAgc3RhdHMtPnBhY2tldHNfbG9zdCA9IDA7Ci0gIH0gZWxz
ZSBpZiAoZXhwZWN0ZWRfcGFja2V0cyA+IHJlY2VpdmVkX3BhY2tldHNfKSB7Ci0gICAgc3RhdHMt
PnBhY2tldHNfbG9zdCA9IGV4cGVjdGVkX3BhY2tldHMgLSByZWNlaXZlZF9wYWNrZXRzXzsKLSAg
ICBpZiAoc3RhdHMtPnBhY2tldHNfbG9zdCA+IDB4RkZGRkZGKSB7Ci0gICAgICBzdGF0cy0+cGFj
a2V0c19sb3N0ID0gMHhGRkZGRkY7Ci0gICAgfQotICB9IGVsc2UgewotICAgIHN0YXRzLT5wYWNr
ZXRzX2xvc3QgPSAwOwotICB9Ci0KLSAgLy8gRnJhY3Rpb24gbG9zdCBzaW5jZSBsYXN0IHJlcG9y
dC4KLSAgdWludDMyX3QgZXhwZWN0ZWRfc2luY2VfbGFzdCA9IGV4cGVjdGVkX3BhY2tldHMgLSBl
eHBlY3RlZF9wcmlvcl87Ci0gIHVpbnQzMl90IHJlY2VpdmVkX3NpbmNlX2xhc3QgPSByZWNlaXZl
ZF9wYWNrZXRzXyAtIHJlY2VpdmVkX3BhY2tldHNfcHJpb3JfOwotICBpZiAoIW5vX3Jlc2V0KSB7
Ci0gICAgZXhwZWN0ZWRfcHJpb3JfID0gZXhwZWN0ZWRfcGFja2V0czsKLSAgICByZWNlaXZlZF9w
YWNrZXRzX3ByaW9yXyA9IHJlY2VpdmVkX3BhY2tldHNfOwotICB9Ci0gIGludDMyX3QgbG9zdCA9
IGV4cGVjdGVkX3NpbmNlX2xhc3QgLSByZWNlaXZlZF9zaW5jZV9sYXN0OwotICBpZiAoZXhwZWN0
ZWRfc2luY2VfbGFzdCA9PSAwIHx8IGxvc3QgPD0gMCB8fCByZWNlaXZlZF9wYWNrZXRzXyA9PSAw
KSB7Ci0gICAgc3RhdHMtPmZyYWN0aW9uX2xvc3QgPSAwOwotICB9IGVsc2UgewotICAgIHN0YXRz
LT5mcmFjdGlvbl9sb3N0ID0gc3RkOjptaW4oMHhGRlUsIChsb3N0IDw8IDgpIC8gZXhwZWN0ZWRf
c2luY2VfbGFzdCk7Ci0gIH0KLQotICBzdGF0cy0+aml0dGVyID0gaml0dGVyXyA+PiA0OyAgLy8g
U2NhbGluZyBmcm9tIFE0LgotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9ydGNwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ydGNwLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGIxZGU3ZWI3ZjQ4N2YyN2ViOGJjNjk2Y2U4MTA2OTgzOTg0OThmMDku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvcnRjcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgKGMpIDIwMTEgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfUlRDUF9IXwotI2Rl
ZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9SVENQX0hfCi0KLSNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9pbmNsdWRlL25ldGVxLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2UvY29uc3RydWN0b3JtYWdpYy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gRm9yd2Fy
ZCBkZWNsYXJhdGlvbi4KLXN0cnVjdCBSVFBIZWFkZXI7Ci0KLWNsYXNzIFJ0Y3AgewotIHB1Ymxp
YzoKLSAgUnRjcCgpIHsgSW5pdCgwKTsgfQotCi0gIH5SdGNwKCkge30KLQotICAvLyBSZXNldHMg
dGhlIFJUQ1Agc3RhdGlzdGljcywgYW5kIHNldHMgdGhlIGZpcnN0IHJlY2VpdmVkIHNlcXVlbmNl
IG51bWJlci4KLSAgdm9pZCBJbml0KHVpbnQxNl90IHN0YXJ0X3NlcXVlbmNlX251bWJlcik7Ci0K
LSAgLy8gVXBkYXRlcyB0aGUgUlRDUCBzdGF0aXN0aWNzIHdpdGggYSBuZXcgcmVjZWl2ZWQgcGFj
a2V0LgotICB2b2lkIFVwZGF0ZShjb25zdCBSVFBIZWFkZXImIHJ0cF9oZWFkZXIsIHVpbnQzMl90
IHJlY2VpdmVfdGltZXN0YW1wKTsKLQotICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IFJUQ1Agc3Rh
dGlzdGljcy4gSWYgfG5vX3Jlc2V0fCBpcyB0cnVlLCB0aGUgc3RhdGlzdGljcwotICAvLyBhcmUg
bm90IHJlc2V0LCBvdGhlcndpc2UgdGhleSBhcmUuCi0gIHZvaWQgR2V0U3RhdGlzdGljcyhib29s
IG5vX3Jlc2V0LCBSdGNwU3RhdGlzdGljcyogc3RhdHMpOwotCi0gcHJpdmF0ZToKLSAgdWludDE2
X3QgY3ljbGVzXzsgICAgICAgLy8gVGhlIG51bWJlciBvZiB3cmFwLWFyb3VuZHMgZm9yIHRoZSBz
ZXF1ZW5jZSBudW1iZXIuCi0gIHVpbnQxNl90IG1heF9zZXFfbm9fOyAgIC8vIFRoZSBtYXhpbXVt
IHNlcXVlbmNlIG51bWJlciByZWNlaXZlZC4gU3RhcnRzIG92ZXIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZnJvbSAwIGFmdGVyIHdyYXAtYXJvdW5kLgotICB1aW50MTZfdCBiYXNlX3Nl
cV9ub187ICAvLyBUaGUgc2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBmaXJzdCByZWNlaXZlZCBwYWNr
ZXQuCi0gIHVpbnQzMl90IHJlY2VpdmVkX3BhY2tldHNfOyAgLy8gVGhlIG51bWJlciBvZiBwYWNr
ZXRzIHRoYXQgaGF2ZSBiZWVuIHJlY2VpdmVkLgotICB1aW50MzJfdCByZWNlaXZlZF9wYWNrZXRz
X3ByaW9yXzsgIC8vIE51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIHdoZW4gbGFzdAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcG9ydCB3YXMgZ2VuZXJhdGVkLgot
ICB1aW50MzJfdCBleHBlY3RlZF9wcmlvcl87ICAvLyBFeHBlY3RlZCBudW1iZXIgb2YgcGFja2V0
cywgYXQgdGhlIHRpbWUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxh
c3QgcmVwb3J0LgotICBpbnQ2NF90IGppdHRlcl87ICAgICAgICAgICAvLyBDdXJyZW50IGppdHRl
ciB2YWx1ZSBpbiBRNC4KLSAgaW50MzJfdCB0cmFuc2l0XzsgICAgICAgICAgLy8gQ2xvY2sgZGlm
ZmVyZW5jZSBmb3IgcHJldmlvdXMgcGFja2V0LgotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9B
U1NJR04oUnRjcCk7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0jZW5kaWYgIC8vIE1P
RFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1JUQ1BfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L3N0YXRpc3RpY3NfY2FsY3VsYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N0YXRpc3RpY3NfY2FsY3Vs
YXRvci5jYwppbmRleCBjMGU3YTQwMmFhYzAwYWE3MmE1Zjc5ZGQzNDg2OGYyNjNjOWY4NTFkLi41
MDUyMWZiMDNkMzY0ZWEwODBkNDU3MDQ3YWM3MGYxYTM4NzlhNjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlz
dGljc19jYWxjdWxhdG9yLmNjCkBAIC0xMjYsNyArMTI2LDEwIEBAIFN0YXRpc3RpY3NDYWxjdWxh
dG9yOjpTdGF0aXN0aWNzQ2FsY3VsYXRvcigpCiAgICAgICAgICAgMTAwKSwKICAgICAgIGV4Y2Vz
c19idWZmZXJfZGVsYXlfKCJXZWJSVEMuQXVkaW8uQXZlcmFnZUV4Y2Vzc0J1ZmZlckRlbGF5TXMi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgNjAwMDAsICAvLyA2MCBzZWNvbmRzIHJlcG9y
dCBpbnRlcnZhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDApIHt9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMDAwKSwKKyAgICAgIGJ1ZmZlcl9mdWxsX2NvdW50ZXJfKCJX
ZWJSVEMuQXVkaW8uSml0dGVyQnVmZmVyRnVsbFBlck1pbnV0ZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2MDAwMCwgIC8vIDYwIHNlY29uZHMgcmVwb3J0IGludGVydmFsLgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTAwKSB7fQogCiBTdGF0aXN0aWNzQ2FsY3VsYXRvcjo6flN0
YXRpc3RpY3NDYWxjdWxhdG9yKCkgPSBkZWZhdWx0OwogCkBAIC0yMjksNiArMjMyLDcgQEAgdm9p
ZCBTdGF0aXN0aWNzQ2FsY3VsYXRvcjo6SW5jcmVhc2VDb3VudGVyKHNpemVfdCBudW1fc2FtcGxl
cywgaW50IGZzX2h6KSB7CiAgICAgICBydGM6OkNoZWNrZWREaXZFeGFjdChzdGF0aWNfY2FzdDxp
bnQ+KDEwMDAgKiBudW1fc2FtcGxlcyksIGZzX2h6KTsKICAgZGVsYXllZF9wYWNrZXRfb3V0YWdl
X2NvdW50ZXJfLkFkdmFuY2VDbG9jayh0aW1lX3N0ZXBfbXMpOwogICBleGNlc3NfYnVmZmVyX2Rl
bGF5Xy5BZHZhbmNlQ2xvY2sodGltZV9zdGVwX21zKTsKKyAgYnVmZmVyX2Z1bGxfY291bnRlcl8u
QWR2YW5jZUNsb2NrKHRpbWVfc3RlcF9tcyk7CiAgIHRpbWVzdGFtcHNfc2luY2VfbGFzdF9yZXBv
cnRfICs9IHN0YXRpY19jYXN0PHVpbnQzMl90PihudW1fc2FtcGxlcyk7CiAgIGlmICh0aW1lc3Rh
bXBzX3NpbmNlX2xhc3RfcmVwb3J0XyA+CiAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnNf
aHogKiBrTWF4UmVwb3J0UGVyaW9kKSkgewpAQCAtMjUwLDEzICsyNTQsMTcgQEAgdm9pZCBTdGF0
aXN0aWNzQ2FsY3VsYXRvcjo6U2Vjb25kYXJ5RGVjb2RlZFNhbXBsZXMoaW50IG51bV9zYW1wbGVz
KSB7CiAKIHZvaWQgU3RhdGlzdGljc0NhbGN1bGF0b3I6OkZsdXNoZWRQYWNrZXRCdWZmZXIoKSB7
CiAgIG9wZXJhdGlvbnNfYW5kX3N0YXRlXy5wYWNrZXRfYnVmZmVyX2ZsdXNoZXMrKzsKKyAgYnVm
ZmVyX2Z1bGxfY291bnRlcl8uUmVnaXN0ZXJTYW1wbGUoKTsKIH0KIAotdm9pZCBTdGF0aXN0aWNz
Q2FsY3VsYXRvcjo6TG9nRGVsYXllZFBhY2tldE91dGFnZUV2ZW50KGludCBvdXRhZ2VfZHVyYXRp
b25fbXMpIHsKK3ZvaWQgU3RhdGlzdGljc0NhbGN1bGF0b3I6OkxvZ0RlbGF5ZWRQYWNrZXRPdXRh
Z2VFdmVudChpbnQgbnVtX3NhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZzX2h6KSB7CisgIGludCBvdXRhZ2VfZHVyYXRp
b25fbXMgPSBudW1fc2FtcGxlcyAvIChmc19oeiAvIDEwMDApOwogICBSVENfSElTVE9HUkFNX0NP
VU5UUygiV2ViUlRDLkF1ZGlvLkRlbGF5ZWRQYWNrZXRPdXRhZ2VFdmVudE1zIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0YWdlX2R1cmF0aW9uX21zLCAxIC8qIG1pbiAqLywgMjAwMCAvKiBt
YXggKi8sCiAgICAgICAgICAgICAgICAgICAgICAgIDEwMCAvKiBidWNrZXQgY291bnQgKi8pOwog
ICBkZWxheWVkX3BhY2tldF9vdXRhZ2VfY291bnRlcl8uUmVnaXN0ZXJTYW1wbGUoKTsKKyAgbGlm
ZXRpbWVfc3RhdHNfLmRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzICs9IG51bV9zYW1wbGVz
OwogfQogCiB2b2lkIFN0YXRpc3RpY3NDYWxjdWxhdG9yOjpTdG9yZVdhaXRpbmdUaW1lKGludCB3
YWl0aW5nX3RpbWVfbXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N0YXRpc3RpY3NfY2Fs
Y3VsYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmgKaW5kZXggOWU1
ZGFjZmQ5MjBhNjM5OTgwMjZjM2JjYjk2YmVkOGYzM2ViMDRhNi4uNDliNzRhMDRiM2I0YTZkNzdj
ZTA1ZTU3MDRmYzg2YzJiYzQ5NjhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGlj
c19jYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmgK
QEAgLTg2LDEwICs4NiwxMCBAQCBjbGFzcyBTdGF0aXN0aWNzQ2FsY3VsYXRvciB7CiAgIC8vIFJl
cnBvcnQgdGhhdCB0aGUgcGFja2V0IGJ1ZmZlciB3YXMgZmx1c2hlZC4KICAgdm9pZCBGbHVzaGVk
UGFja2V0QnVmZmVyKCk7CiAKLSAgLy8gTG9ncyBhIGRlbGF5ZWQgcGFja2V0IG91dGFnZSBldmVu
dCBvZiB8b3V0YWdlX2R1cmF0aW9uX21zfC4gQSBkZWxheWVkCi0gIC8vIHBhY2tldCBvdXRhZ2Ug
ZXZlbnQgaXMgZGVmaW5lZCBhcyBhbiBleHBhbmQgcGVyaW9kIGNhdXNlZCBub3QgYnkgYW4gYWN0
dWFsCi0gIC8vIHBhY2tldCBsb3NzLCBidXQgYnkgYSBkZWxheWVkIHBhY2tldC4KLSAgdmlydHVh
bCB2b2lkIExvZ0RlbGF5ZWRQYWNrZXRPdXRhZ2VFdmVudChpbnQgb3V0YWdlX2R1cmF0aW9uX21z
KTsKKyAgLy8gTG9ncyBhIGRlbGF5ZWQgcGFja2V0IG91dGFnZSBldmVudCBvZiB8bnVtX3NhbXBs
ZXN8IGV4cGFuZGVkIGF0IGEgc2FtcGxlCisgIC8vIHJhdGUgb2YgfGZzX2h6fC4gQSBkZWxheWVk
IHBhY2tldCBvdXRhZ2UgZXZlbnQgaXMgZGVmaW5lZCBhcyBhbiBleHBhbmQKKyAgLy8gcGVyaW9k
IGNhdXNlZCBub3QgYnkgYW4gYWN0dWFsIHBhY2tldCBsb3NzLCBidXQgYnkgYSBkZWxheWVkIHBh
Y2tldC4KKyAgdmlydHVhbCB2b2lkIExvZ0RlbGF5ZWRQYWNrZXRPdXRhZ2VFdmVudChpbnQgbnVt
X3NhbXBsZXMsIGludCBmc19oeik7CiAKICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBuZXR3b3Jr
IHN0YXRpc3RpY3MgaW4gfHN0YXRzfC4gVGhlIGN1cnJlbnQgc2FtcGxlIHJhdGUKICAgLy8gaXMg
fGZzX2h6fCwgdGhlIHRvdGFsIG51bWJlciBvZiBzYW1wbGVzIGluIHBhY2tldCBidWZmZXIgYW5k
IHN5bmMgYnVmZmVyCkBAIC0xOTksNiArMTk5LDcgQEAgY2xhc3MgU3RhdGlzdGljc0NhbGN1bGF0
b3IgewogICBzaXplX3QgZGlzY2FyZGVkX3NlY29uZGFyeV9wYWNrZXRzXzsKICAgUGVyaW9kaWNV
bWFDb3VudCBkZWxheWVkX3BhY2tldF9vdXRhZ2VfY291bnRlcl87CiAgIFBlcmlvZGljVW1hQXZl
cmFnZSBleGNlc3NfYnVmZmVyX2RlbGF5XzsKKyAgUGVyaW9kaWNVbWFDb3VudCBidWZmZXJfZnVs
bF9jb3VudGVyXzsKIAogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFN0YXRpc3RpY3ND
YWxjdWxhdG9yKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zeW5jX2J1ZmZlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvc3luY19idWZmZXIuaAppbmRleCA3MmUzMjBjNjFmNmY5MDE3YzhiMmQ1NDA5
ODAyNDllODBlZWFjMDkyLi5kNjQ1ZTkxNjNlOTEwNWM5OGYxYjkwMGIwOWNhZWY0MTZmZmZjYTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zeW5jX2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L3N5bmNfYnVmZmVyLmgKQEAgLTExLDggKzExLDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9f
Q09ESU5HX05FVEVRX1NZTkNfQlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5H
X05FVEVRX1NZTkNfQlVGRkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxz
dGRpbnQuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKICNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9f
ZnJhbWUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0
aV92ZWN0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb192
ZWN0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0
ZXFfaWxiY19xdWFsaXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX2lsYmNfcXVh
bGl0eV90ZXN0LmNjCmluZGV4IGFkNjEyMzVjZjI4OTY2ZGFhYjQ5MWU2ZGRiNzc2MWFmODI4NTBj
NGMuLjZmMTAzNDUyOTgwZGU1MmYwOTc0NTJmYjQ5NmFjMzJmZjk1YzRmOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfaWxiY19xdWFsaXR5X3Rlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvdGVzdC9uZXRlcV9pbGJjX3F1YWxpdHlfdGVzdC5jYwpAQCAtMjUsNyArMjUsNyBAQCBu
YW1lc3BhY2Ugewogc3RhdGljIGNvbnN0IGludCBrSW5wdXRTYW1wbGVSYXRlS2h6ID0gODsKIHN0
YXRpYyBjb25zdCBpbnQga091dHB1dFNhbXBsZVJhdGVLaHogPSA4OwogCi1ERUZJTkVfaW50KGZy
YW1lX3NpemVfbXMsIDIwLCAiQ29kZWMgZnJhbWUgc2l6ZSAobWlsbGlzZWNvbmRzKS4iKTsKK1dF
QlJUQ19ERUZJTkVfaW50KGZyYW1lX3NpemVfbXMsIDIwLCAiQ29kZWMgZnJhbWUgc2l6ZSAobWls
bGlzZWNvbmRzKS4iKTsKIAogfSAgLy8gbmFtZXNwYWNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Rlc3QvbmV0ZXFfaXNhY19xdWFsaXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25l
dGVxX2lzYWNfcXVhbGl0eV90ZXN0LmNjCmluZGV4IDk0OTg0Yjg3ZTZmMTIzOTIwMTkyNGFmYTc1
ZGJmMTAxNmQwOGUzMjUuLjY1MWIwY2E3MWE2OGVkODM0MTBhMTRkZTlkNzM5Yjg4MDU1MzU2NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfaXNhY19xdWFsaXR5X3Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9pc2FjX3F1YWxpdHlfdGVzdC5jYwpAQCAtMjEs
NyArMjEsNyBAQCBzdGF0aWMgY29uc3QgaW50IGtJc2FjQmxvY2tEdXJhdGlvbk1zID0gMzA7CiBz
dGF0aWMgY29uc3QgaW50IGtJc2FjSW5wdXRTYW1wbGluZ0toeiA9IDE2Owogc3RhdGljIGNvbnN0
IGludCBrSXNhY091dHB1dFNhbXBsaW5nS2h6ID0gMTY7CiAKLURFRklORV9pbnQoYml0X3JhdGVf
a2JwcywgMzIsICJUYXJnZXQgYml0IHJhdGUgKGticHMpLiIpOworV0VCUlRDX0RFRklORV9pbnQo
Yml0X3JhdGVfa2JwcywgMzIsICJUYXJnZXQgYml0IHJhdGUgKGticHMpLiIpOwogCiB9ICAvLyBu
YW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9vcHVzX3F1YWxp
dHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfb3B1c19xdWFsaXR5X3Rlc3QuY2MK
aW5kZXggNjg2MWU0YzU1YWFmZDZjNDQ2NDdmZGJjMDRiMmFkOTI1MDg2ZmM2Mi4uZjRhMzYzNjNi
YWE5NWJlYTdlYjAzY2E2ZDJhNTNkOTBlYWE2NmQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
dGVzdC9uZXRlcV9vcHVzX3F1YWxpdHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25l
dGVxX29wdXNfcXVhbGl0eV90ZXN0LmNjCkBAIC0yMiwyNCArMjIsMjYgQEAgbmFtZXNwYWNlIHsK
IHN0YXRpYyBjb25zdCBpbnQga09wdXNCbG9ja0R1cmF0aW9uTXMgPSAyMDsKIHN0YXRpYyBjb25z
dCBpbnQga09wdXNTYW1wbGluZ0toeiA9IDQ4OwogCi1ERUZJTkVfaW50KGJpdF9yYXRlX2ticHMs
IDMyLCAiVGFyZ2V0IGJpdCByYXRlIChrYnBzKS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGJpdF9y
YXRlX2ticHMsIDMyLCAiVGFyZ2V0IGJpdCByYXRlIChrYnBzKS4iKTsKIAotREVGSU5FX2ludChj
b21wbGV4aXR5LAotICAgICAgICAgICAxMCwKLSAgICAgICAgICAgIkNvbXBsZXhpdHk6IDAgfiAx
MCAtLSBkZWZpbmVkIGFzIGluIE9wdXMiCi0gICAgICAgICAgICJzcGVjaWZpY2F0aW9uLiIpOwor
V0VCUlRDX0RFRklORV9pbnQoY29tcGxleGl0eSwKKyAgICAgICAgICAgICAgICAgIDEwLAorICAg
ICAgICAgICAgICAgICAgIkNvbXBsZXhpdHk6IDAgfiAxMCAtLSBkZWZpbmVkIGFzIGluIE9wdXMi
CisgICAgICAgICAgICAgICAgICAic3BlY2lmaWNhdGlvbi4iKTsKIAotREVGSU5FX2ludChtYXhw
bGF5YmFja3JhdGUsIDQ4MDAwLCAiTWF4aW11bSBwbGF5YmFjayByYXRlIChIeikuIik7CitXRUJS
VENfREVGSU5FX2ludChtYXhwbGF5YmFja3JhdGUsIDQ4MDAwLCAiTWF4aW11bSBwbGF5YmFjayBy
YXRlIChIeikuIik7CiAKLURFRklORV9pbnQoYXBwbGljYXRpb24sIDAsICJBcHBsaWNhdGlvbiBt
b2RlOiAwIC0tIFZPSVAsIDEgLS0gQXVkaW8uIik7CitXRUJSVENfREVGSU5FX2ludChhcHBsaWNh
dGlvbiwgMCwgIkFwcGxpY2F0aW9uIG1vZGU6IDAgLS0gVk9JUCwgMSAtLSBBdWRpby4iKTsKIAot
REVGSU5FX2ludChyZXBvcnRlZF9sb3NzX3JhdGUsIDEwLCAiUmVwb3J0ZWQgcGVyY2VudGlsZSBv
ZiBwYWNrZXQgbG9zcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHJlcG9ydGVkX2xvc3NfcmF0ZSwK
KyAgICAgICAgICAgICAgICAgIDEwLAorICAgICAgICAgICAgICAgICAgIlJlcG9ydGVkIHBlcmNl
bnRpbGUgb2YgcGFja2V0IGxvc3MuIik7CiAKLURFRklORV9ib29sKGZlYywgZmFsc2UsICJFbmFi
bGUgRkVDIGZvciBlbmNvZGluZyAoLW5vZmVjIHRvIGRpc2FibGUpLiIpOworV0VCUlRDX0RFRklO
RV9ib29sKGZlYywgZmFsc2UsICJFbmFibGUgRkVDIGZvciBlbmNvZGluZyAoLW5vZmVjIHRvIGRp
c2FibGUpLiIpOwogCi1ERUZJTkVfYm9vbChkdHgsIGZhbHNlLCAiRW5hYmxlIERUWCBmb3IgZW5j
b2RpbmcgKC1ub2R0eCB0byBkaXNhYmxlKS4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChkdHgsIGZh
bHNlLCAiRW5hYmxlIERUWCBmb3IgZW5jb2RpbmcgKC1ub2R0eCB0byBkaXNhYmxlKS4iKTsKIAot
REVGSU5FX2ludChzdWJfcGFja2V0cywgMSwgIk51bWJlciBvZiBzdWIgcGFja2V0cyB0byByZXBh
Y2tldGl6ZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHN1Yl9wYWNrZXRzLCAxLCAiTnVtYmVyIG9m
IHN1YiBwYWNrZXRzIHRvIHJlcGFja2V0aXplLiIpOwogCiB9ICAvLyBuYW1lc3BhY2UKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9wY20xNmJfcXVhbGl0eV90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9wY20xNmJfcXVhbGl0eV90ZXN0LmNjCmluZGV4IDg4NzJi
OTRhMDYzOTMxNWMyZTlmZDk2NmIxZDU3NDM5NDFiNmRmOGQuLjljNTM5MTlkNTQwNzdlZjMwNjRk
YTg4Y2I5NDJmZWYxZDQ5OWY5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFf
cGNtMTZiX3F1YWxpdHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX3BjbTE2
Yl9xdWFsaXR5X3Rlc3QuY2MKQEAgLTI2LDcgKzI2LDcgQEAgbmFtZXNwYWNlIHsKIHN0YXRpYyBj
b25zdCBpbnQga0lucHV0U2FtcGxlUmF0ZUtoeiA9IDQ4Owogc3RhdGljIGNvbnN0IGludCBrT3V0
cHV0U2FtcGxlUmF0ZUtoeiA9IDQ4OwogCi1ERUZJTkVfaW50KGZyYW1lX3NpemVfbXMsIDIwLCAi
Q29kZWMgZnJhbWUgc2l6ZSAobWlsbGlzZWNvbmRzKS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGZy
YW1lX3NpemVfbXMsIDIwLCAiQ29kZWMgZnJhbWUgc2l6ZSAobWlsbGlzZWNvbmRzKS4iKTsKIAog
fSAgLy8gbmFtZXNwYWNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfcGNt
dV9xdWFsaXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX3BjbXVfcXVhbGl0eV90
ZXN0LmNjCmluZGV4IDU0ZmY4NDk3MzlhMzkwMmYzYzk3NGFiNjJlMGY1ODM2MWE5MGY5MmQuLjg1
ZjIyNjcxZWFjNDdhZGE5OWZlMzg5MjUzYjE2MmYxZDQ1OGQzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3Rlc3QvbmV0ZXFfcGNtdV9xdWFsaXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
dGVzdC9uZXRlcV9wY211X3F1YWxpdHlfdGVzdC5jYwpAQCAtMjUsNyArMjUsNyBAQCBuYW1lc3Bh
Y2Ugewogc3RhdGljIGNvbnN0IGludCBrSW5wdXRTYW1wbGVSYXRlS2h6ID0gODsKIHN0YXRpYyBj
b25zdCBpbnQga091dHB1dFNhbXBsZVJhdGVLaHogPSA4OwogCi1ERUZJTkVfaW50KGZyYW1lX3Np
emVfbXMsIDIwLCAiQ29kZWMgZnJhbWUgc2l6ZSAobWlsbGlzZWNvbmRzKS4iKTsKK1dFQlJUQ19E
RUZJTkVfaW50KGZyYW1lX3NpemVfbXMsIDIwLCAiQ29kZWMgZnJhbWUgc2l6ZSAobWlsbGlzZWNv
bmRzKS4iKTsKIAogfSAgLy8gbmFtZXNwYWNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rl
c3QvbmV0ZXFfc3BlZWRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfc3BlZWRfdGVz
dC5jYwppbmRleCBjNDg2YWM2MGJkN2M4OWNlNDE3MjI5YzUyMGNjOWY0YTYwM2FiOWY2Li43MDc3
N2EyZDAyMTQ5MjE0ODNhZGRjZjIwYWQ1OWQzYzkxYmFmM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90ZXN0L25ldGVxX3NwZWVkX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRl
cV9zcGVlZF90ZXN0LmNjCkBAIC0xNCwxMyArMTQsMTIgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3BlcmZvcm1hbmNlX3Rlc3QuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9mbGFncy5oIgotI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0
aWxzLmgiCiAKIC8vIERlZmluZSBjb21tYW5kIGxpbmUgZmxhZ3MuCi1ERUZJTkVfaW50KHJ1bnRp
bWVfbXMsIDEwMDAwLCAiU2ltdWxhdGVkIHJ1bnRpbWUgaW4gbXMuIik7Ci1ERUZJTkVfaW50KGxv
c3NyYXRlLCAxMCwgIlBhY2tldCBsb3NzcmF0ZTsgZHJvcCBldmVyeSBOIHBhY2tldHMuIik7Ci1E
RUZJTkVfZmxvYXQoZHJpZnQsIDAuMWYsICJDbG9ja2RyaWZ0IGZhY3Rvci4iKTsKLURFRklORV9i
b29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlLiIpOworV0VCUlRDX0RFRklORV9p
bnQocnVudGltZV9tcywgMTAwMDAsICJTaW11bGF0ZWQgcnVudGltZSBpbiBtcy4iKTsKK1dFQlJU
Q19ERUZJTkVfaW50KGxvc3NyYXRlLCAxMCwgIlBhY2tldCBsb3NzcmF0ZTsgZHJvcCBldmVyeSBO
IHBhY2tldHMuIik7CitXRUJSVENfREVGSU5FX2Zsb2F0KGRyaWZ0LCAwLjFmLCAiQ2xvY2tkcmlm
dCBmYWN0b3IuIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlz
IG1lc3NhZ2UuIik7CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgc3Rk
OjpzdHJpbmcgcHJvZ3JhbV9uYW1lID0gYXJndlswXTsKQEAgLTMzLDcgKzMyLDYgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgICAgIiAgLS1sb3NzcmF0ZT1OICAgICAg
ICAgICBkcm9wIGV2ZXJ5IE4gcGFja2V0czsgZGVmYXVsdCBpcyAxMFxuIgogICAgICAgIiAgLS1k
cmlmdD1GICAgICAgICAgICAgICBjbG9ja2RyaWZ0IGZhY3RvciBiZXR3ZWVuIDAuMCBhbmQgMS4w
OyAiCiAgICAgICAiZGVmYXVsdCBpcyAwLjFcbiI7Ci0gIHdlYnJ0Yzo6dGVzdDo6U2V0RXhlY3V0
YWJsZVBhdGgoYXJndlswXSk7CiAgIGlmIChydGM6OkZsYWdMaXN0OjpTZXRGbGFnc0Zyb21Db21t
YW5kTGluZSgmYXJnYywgYXJndiwgdHJ1ZSkgfHwgRkxBR19oZWxwIHx8CiAgICAgICBhcmdjICE9
IDEpIHsKICAgICBwcmludGYoIiVzIiwgdXNhZ2UuY19zdHIoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS90aWNrX3RpbWVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aWNrX3RpbWVyLmgKaW5kZXggNTIw
MDk5ZTM0NjYyNGI1NTc1MjkzNTg1ZGM5ZDdjYTdkM2NjNGQ2MC4uMDJmMDgzZTAyZWI5NzljYzc3
YWZmYWE0NTgxNjYxMTI2MjJmYTU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGlja190aW1l
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpY2tfdGltZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lm
bmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9USUNLX1RJTUVSX0hfCiAjZGVmaW5lIE1P
RFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1RJQ0tfVElNRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGlu
dC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGltZXN0YW1wX3NjYWxlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L3RpbWVzdGFtcF9zY2FsZXIuY2MKaW5kZXggMDdkOTQ1ZWRjZTA3MTJkN2Y1MWU0ZWNlNDFjOWY5
YmFkOGUyYmNiYS4uYjA0NjFiYjkyZDg0ZWYzNDA4MmIxYzRiMTZkMTQ5ZGRkZmY5ZjgxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdGltZXN0YW1wX3NjYWxlci5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90aW1lc3RhbXBfc2NhbGVyLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aW1lc3RhbXBfc2NhbGVyLmgiCiAKKyNpbmNsdWRlICJh
cGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfZXZlbnRfbG9nX2lu
cHV0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfZXZlbnRfbG9nX2lucHV0LmNjCmluZGV4
IDIxYzVmOWVmMDIyM2Y3YjEwZThhNzc1YjBmZTAwN2JhMmY1M2VhOTYuLjkxMDdlNWU1ZWY0ZmMw
MjRjMGU4MDUyMWY0MTkxZDY1MmZkZTMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xz
L25ldGVxX2V2ZW50X2xvZ19pbnB1dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9l
dmVudF9sb2dfaW5wdXQuY2MKQEAgLTE5LDExICsxOSw4IEBAIG5hbWVzcGFjZSB3ZWJydGMgewog
bmFtZXNwYWNlIHRlc3QgewogCiBOZXRFcUV2ZW50TG9nSW5wdXQ6Ok5ldEVxRXZlbnRMb2dJbnB1
dChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBoZHJfZXh0X21hcCkK
LSAgICA6IHNvdXJjZV8oUnRjRXZlbnRMb2dTb3VyY2U6OkNyZWF0ZShmaWxlX25hbWUpKSB7Ci0g
IGZvciAoY29uc3QgYXV0byYgZXh0X3BhaXIgOiBoZHJfZXh0X21hcCkgewotICAgIHNvdXJjZV8t
PlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKGV4dF9wYWlyLnNlY29uZCwgZXh0X3BhaXIuZmly
c3QpOwotICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpv
cHRpb25hbDx1aW50MzJfdD4gc3NyY19maWx0ZXIpCisgICAgOiBzb3VyY2VfKFJ0Y0V2ZW50TG9n
U291cmNlOjpDcmVhdGUoZmlsZV9uYW1lLCBzc3JjX2ZpbHRlcikpIHsKICAgTG9hZE5leHRQYWNr
ZXQoKTsKICAgQWR2YW5jZU91dHB1dEV2ZW50KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90b29scy9uZXRlcV9ldmVudF9sb2dfaW5wdXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVx
X2V2ZW50X2xvZ19pbnB1dC5oCmluZGV4IDg2Y2Y5ZjJmMDJhOTJiNmVmMzhjNDQ3YmZkODlmY2Zm
ODU0Y2JkMGIuLmUwNGRmMTY4NGYxYjg3MWQzY2NjY2VlNzdlOGZiNDk1MGUzYjIzNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX2V2ZW50X2xvZ19pbnB1dC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL3Rvb2xzL25ldGVxX2V2ZW50X2xvZ19pbnB1dC5oCkBAIC0yOCw3ICsyOCw3IEBA
IGNsYXNzIFJ0Y0V2ZW50TG9nU291cmNlOwogY2xhc3MgTmV0RXFFdmVudExvZ0lucHV0IGZpbmFs
IDogcHVibGljIE5ldEVxUGFja2V0U291cmNlSW5wdXQgewogIHB1YmxpYzoKICAgTmV0RXFFdmVu
dExvZ0lucHV0KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGhkcl9leHRfbWFwKTsKKyAgICAgICAg
ICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlcik7CiAKICAg
YWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gTmV4dE91dHB1dEV2ZW50VGltZSgpIGNvbnN0IG92ZXJy
aWRlOwogICB2b2lkIEFkdmFuY2VPdXRwdXRFdmVudCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGFja2V0X3NvdXJjZV9pbnB1dC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Rvb2xzL25ldGVxX3BhY2tldF9zb3VyY2VfaW5wdXQuY2MKaW5kZXggYTg2Y2Y2YWZhNTkw
MTc4NGY3MTY0MDYzMGFkZGU2YTk4YTkyNGY2Zi4uZWUwMjI4OGM4NmQ2NmU1ZjNkZDA2YjE0OTVj
ZDhlNjI0NTY2NjJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGFja2V0
X3NvdXJjZV9pbnB1dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9wYWNrZXRfc291
cmNlX2lucHV0LmNjCkBAIC01OCwxNSArNTgsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPE5ldEVxSW5w
dXQ6OlBhY2tldERhdGE+IE5ldEVxUGFja2V0U291cmNlSW5wdXQ6OlBvcFBhY2tldCgpIHsKICAg
cmV0dXJuIHBhY2tldF9kYXRhOwogfQogCi12b2lkIE5ldEVxUGFja2V0U291cmNlSW5wdXQ6OlNl
bGVjdFNzcmModWludDMyX3Qgc3NyYykgewotICBzb3VyY2UoKS0+U2VsZWN0U3NyYyhzc3JjKTsK
LSAgaWYgKHBhY2tldF8gJiYgcGFja2V0Xy0+aGVhZGVyKCkuc3NyYyAhPSBzc3JjKQotICAgIExv
YWROZXh0UGFja2V0KCk7Ci19Ci0KIE5ldEVxUnRwRHVtcElucHV0OjpOZXRFcVJ0cER1bXBJbnB1
dChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgaGRyX2V4dF9tYXApCi0g
ICAgOiBzb3VyY2VfKFJ0cEZpbGVTb3VyY2U6OkNyZWF0ZShmaWxlX25hbWUpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFw
JiBoZHJfZXh0X21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNs
OjpvcHRpb25hbDx1aW50MzJfdD4gc3NyY19maWx0ZXIpCisgICAgOiBzb3VyY2VfKFJ0cEZpbGVT
b3VyY2U6OkNyZWF0ZShmaWxlX25hbWUsIHNzcmNfZmlsdGVyKSkgewogICBmb3IgKGNvbnN0IGF1
dG8mIGV4dF9wYWlyIDogaGRyX2V4dF9tYXApIHsKICAgICBzb3VyY2VfLT5SZWdpc3RlclJ0cEhl
YWRlckV4dGVuc2lvbihleHRfcGFpci5zZWNvbmQsIGV4dF9wYWlyLmZpcnN0KTsKICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGFja2V0X3NvdXJjZV9pbnB1dC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGFja2V0X3NvdXJjZV9pbnB1dC5oCmluZGV4IGIzMmM1
MzQwODUxZjY2MjU1YTU1ZDY2ZDg2ZWU4ZjgwZTA5NTZlODQuLjg2MzNkMWY1ZGQxY2YzN2VjNjcx
Yjg3MjRlMmNhYzI4OTQ0ZTAxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVx
X3BhY2tldF9zb3VyY2VfaW5wdXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9wYWNr
ZXRfc291cmNlX2lucHV0LmgKQEAgLTEyLDggKzEyLDEwIEBACiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fQ09ESU5HX05FVEVRX1RPT0xTX05FVEVRX1BBQ0tFVF9TT1VSQ0VfSU5QVVRfSF8KIAogI2lu
Y2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5j
bHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL3Rvb2xzL25ldGVxX2lucHV0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKIApAQCAtMzIsNyArMzQsNiBAQCBjbGFzcyBO
ZXRFcVBhY2tldFNvdXJjZUlucHV0IDogcHVibGljIE5ldEVxSW5wdXQgewogICBzdGQ6OnVuaXF1
ZV9wdHI8UGFja2V0RGF0YT4gUG9wUGFja2V0KCkgb3ZlcnJpZGU7CiAgIGFic2w6Om9wdGlvbmFs
PFJUUEhlYWRlcj4gTmV4dEhlYWRlcigpIGNvbnN0IG92ZXJyaWRlOwogICBib29sIGVuZGVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW5leHRfb3V0cHV0X2V2ZW50X21zXzsgfQotICB2b2lk
IFNlbGVjdFNzcmModWludDMyX3QpOwogCiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIFBhY2tldFNv
dXJjZSogc291cmNlKCkgPSAwOwpAQCAtNDgsNyArNDksOCBAQCBjbGFzcyBOZXRFcVBhY2tldFNv
dXJjZUlucHV0IDogcHVibGljIE5ldEVxSW5wdXQgewogY2xhc3MgTmV0RXFSdHBEdW1wSW5wdXQg
ZmluYWwgOiBwdWJsaWMgTmV0RXFQYWNrZXRTb3VyY2VJbnB1dCB7CiAgcHVibGljOgogICBOZXRF
cVJ0cER1bXBJbnB1dChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGhkcl9leHRfbWFwKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBoZHJfZXh0X21hcCwK
KyAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVy
KTsKIAogICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBOZXh0T3V0cHV0RXZlbnRUaW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgIHZvaWQgQWR2YW5jZU91dHB1dEV2ZW50KCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9xdWFsaXR5X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90b29scy9uZXRlcV9xdWFsaXR5X3Rlc3QuY2MKaW5kZXggZmFjYTg5NTlkNGQ0ZjVjN2Nm
NmExM2U5OGNhMzIxNDFiMmIxZjc2ZS4uMmVlNjc3OWM1MzllMWI5ZTY3YmI3YzVmYjA3MWUyNTFm
NWQwOWJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcXVhbGl0eV90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3F1YWxpdHlfdGVzdC5jYwpAQCAtNDcs
NDIgKzQ3LDQ3IEBAIHN0YXRpYyBib29sIFZhbGlkYXRlRmlsZW5hbWUoY29uc3Qgc3RkOjpzdHJp
bmcmIHZhbHVlLCBib29sIHdyaXRlKSB7CiAgIHJldHVybiB0cnVlOwogfQogCi1ERUZJTkVfc3Ry
aW5nKAorV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgaW5fZmlsZW5hbWUsCiAgICAgRGVmYXVs
dEluRmlsZW5hbWUoKS5jX3N0cigpLAogICAgICJGaWxlbmFtZSBmb3IgaW5wdXQgYXVkaW8gKHNw
ZWNpZnkgc2FtcGxlIHJhdGUgd2l0aCAtLWlucHV0X3NhbXBsZV9yYXRlLCAiCiAgICAgImFuZCBj
aGFubmVscyB3aXRoIC0tY2hhbm5lbHMpLiIpOwogCi1ERUZJTkVfaW50KGlucHV0X3NhbXBsZV9y
YXRlLCAxNjAwMCwgIlNhbXBsZSByYXRlIG9mIGlucHV0IGZpbGUgaW4gSHouIik7CitXRUJSVENf
REVGSU5FX2ludChpbnB1dF9zYW1wbGVfcmF0ZSwgMTYwMDAsICJTYW1wbGUgcmF0ZSBvZiBpbnB1
dCBmaWxlIGluIEh6LiIpOwogCi1ERUZJTkVfaW50KGNoYW5uZWxzLCAxLCAiTnVtYmVyIG9mIGNo
YW5uZWxzIGluIGlucHV0IGF1ZGlvLiIpOworV0VCUlRDX0RFRklORV9pbnQoY2hhbm5lbHMsIDEs
ICJOdW1iZXIgb2YgY2hhbm5lbHMgaW4gaW5wdXQgYXVkaW8uIik7CiAKLURFRklORV9zdHJpbmco
b3V0X2ZpbGVuYW1lLAotICAgICAgICAgICAgICBEZWZhdWx0T3V0RmlsZW5hbWUoKS5jX3N0cigp
LAotICAgICAgICAgICAgICAiTmFtZSBvZiBvdXRwdXQgYXVkaW8gZmlsZS4iKTsKK1dFQlJUQ19E
RUZJTkVfc3RyaW5nKG91dF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRP
dXRGaWxlbmFtZSgpLmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAiTmFtZSBvZiBvdXRw
dXQgYXVkaW8gZmlsZS4iKTsKIAotREVGSU5FX2ludChydW50aW1lX21zLCAxMDAwMCwgIlNpbXVs
YXRlZCBydW50aW1lIChtaWxsaXNlY29uZHMpLiIpOworV0VCUlRDX0RFRklORV9pbnQocnVudGlt
ZV9tcywgMTAwMDAsICJTaW11bGF0ZWQgcnVudGltZSAobWlsbGlzZWNvbmRzKS4iKTsKIAotREVG
SU5FX2ludChwYWNrZXRfbG9zc19yYXRlLCAxMCwgIlBlcmNlbnRpbGUgb2YgcGFja2V0IGxvc3Mu
Iik7CitXRUJSVENfREVGSU5FX2ludChwYWNrZXRfbG9zc19yYXRlLCAxMCwgIlBlcmNlbnRpbGUg
b2YgcGFja2V0IGxvc3MuIik7CiAKLURFRklORV9pbnQocmFuZG9tX2xvc3NfbW9kZSwKLSAgICAg
ICAgICAga1VuaWZvcm1Mb3NzLAotICAgICAgICAgICAiUmFuZG9tIGxvc3MgbW9kZTogMC0tbm8g
bG9zcywgMS0tdW5pZm9ybSBsb3NzLCAyLS1HaWxiZXJ0IEVsbGlvdCAiCi0gICAgICAgICAgICJs
b3NzLCAzLS1maXhlZCBsb3NzLiIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgcmFuZG9tX2xv
c3NfbW9kZSwKKyAgICBrVW5pZm9ybUxvc3MsCisgICAgIlJhbmRvbSBsb3NzIG1vZGU6IDAtLW5v
IGxvc3MsIDEtLXVuaWZvcm0gbG9zcywgMi0tR2lsYmVydCBFbGxpb3QgIgorICAgICJsb3NzLCAz
LS1maXhlZCBsb3NzLiIpOwogCi1ERUZJTkVfaW50KGJ1cnN0X2xlbmd0aCwKLSAgICAgICAgICAg
MzAsCi0gICAgICAgICAgICJCdXJzdCBsZW5ndGggaW4gbWlsbGlzZWNvbmRzLCBvbmx5IHZhbGlk
IGZvciBHaWxiZXJ0IEVsbGlvdCBsb3NzLiIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgYnVy
c3RfbGVuZ3RoLAorICAgIDMwLAorICAgICJCdXJzdCBsZW5ndGggaW4gbWlsbGlzZWNvbmRzLCBv
bmx5IHZhbGlkIGZvciBHaWxiZXJ0IEVsbGlvdCBsb3NzLiIpOwogCi1ERUZJTkVfZmxvYXQoZHJp
ZnRfZmFjdG9yLCAwLjAsICJUaW1lIGRyaWZ0IGZhY3Rvci4iKTsKK1dFQlJUQ19ERUZJTkVfZmxv
YXQoZHJpZnRfZmFjdG9yLCAwLjAsICJUaW1lIGRyaWZ0IGZhY3Rvci4iKTsKIAotREVGSU5FX2lu
dChwcmVsb2FkX3BhY2tldHMsIDAsICJQcmVsb2FkIHRoZSBidWZmZXIgd2l0aCB0aGlzIG1hbnkg
cGFja2V0cy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHByZWxvYWRfcGFja2V0cywKKyAgICAgICAg
ICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiUHJlbG9hZCB0aGUgYnVmZmVyIHdpdGgg
dGhpcyBtYW55IHBhY2tldHMuIik7CiAKLURFRklORV9zdHJpbmcobG9zc19ldmVudHMsCi0gICAg
ICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiTGlzdCBvZiBsb3NzIGV2ZW50cyB0aW1lIGFu
ZCBkdXJhdGlvbiBzZXBhcmF0ZWQgYnkgY29tbWE6ICIKLSAgICAgICAgICAgICAgIjxmaXJzdF9l
dmVudF90aW1lPiA8Zmlyc3RfZXZlbnRfZHVyYXRpb24+LCA8c2Vjb25kX2V2ZW50X3RpbWU+ICIK
LSAgICAgICAgICAgICAgIjxzZWNvbmRfZXZlbnRfZHVyYXRpb24+LCAuLi4iKTsKK1dFQlJUQ19E
RUZJTkVfc3RyaW5nKAorICAgIGxvc3NfZXZlbnRzLAorICAgICIiLAorICAgICJMaXN0IG9mIGxv
c3MgZXZlbnRzIHRpbWUgYW5kIGR1cmF0aW9uIHNlcGFyYXRlZCBieSBjb21tYTogIgorICAgICI8
Zmlyc3RfZXZlbnRfdGltZT4gPGZpcnN0X2V2ZW50X2R1cmF0aW9uPiwgPHNlY29uZF9ldmVudF90
aW1lPiAiCisgICAgIjxzZWNvbmRfZXZlbnRfZHVyYXRpb24+LCAuLi4iKTsKIAogLy8gUHJvYlRy
YW5zMDBTb2x2ZXIoKSBpcyB0byBjYWxjdWxhdGUgdGhlIHRyYW5zaXRpb24gcHJvYmFiaWxpdHkg
ZnJvbSBuby1sb3NzCiAvLyBzdGF0ZSB0byBpdHNlbGYgaW4gYSBtb2RpZmllZCBHaWxiZXJ0IEVs
bGlvdCBwYWNrZXQgbG9zcyBtb2RlbC4gVGhlIHJlc3VsdCBpcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvdG9vbHMvbmV0ZXFfcnRwcGxheS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3J0
cHBsYXkuY2MKaW5kZXggMjVlOGNkODgxNmUxMjBiYTdiM2Q4NTJmN2E3MWUwN2Y3YmM5ZjY4Ni4u
YzI3MjZlYjQ3MDRiODczYmUyN2UwYjcxY2QxMjJjOGU5MzY1MjRhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcnRwcGxheS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9u
ZXRlcV9ydHBwbGF5LmNjCkBAIC0xNywxNyArMTcsMTcgQEAKICNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwu
aCIKIAotREVGSU5FX2Jvb2woY29kZWNfbWFwLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAg
ICAgICAiUHJpbnRzIHRoZSBtYXBwaW5nIGJldHdlZW4gUlRQIHBheWxvYWQgdHlwZSBhbmQgIgot
ICAgICAgICAgICAgImNvZGVjIik7Ci1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9ib29s
KGNvZGVjX21hcCwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAiUHJpbnRzIHRoZSBtYXBwaW5nIGJldHdlZW4gUlRQIHBheWxvYWQgdHlwZSBhbmQgIgorICAg
ICAgICAgICAgICAgICAgICJjb2RlYyIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgZm9y
Y2VfZmllbGR0cmlhbHMsCiAgICAgIiIsCiAgICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVy
aW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgogICAgICJFLmcuIHJ1
bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZS8i
CiAgICAgIiB3aWxsIGFzc2lnbiB0aGUgZ3JvdXAgRW5hYmxlIHRvIGZpZWxkIHRyaWFsIFdlYlJU
Qy1Gb29GZWF0dXJlLiIpOwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBt
ZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBt
ZXNzYWdlIik7CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgd2VicnRj
Ojp0ZXN0OjpOZXRFcVRlc3RGYWN0b3J5IGZhY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90b29scy9uZXRlcV90ZXN0X2ZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV90
ZXN0X2ZhY3RvcnkuY2MKaW5kZXggNTEwNzdiYzZiOGI5MjM1NzEyYmYyZjE2NTk4Y2IzNTRhNjE3
ZDkzZS4uYWE5NTZjZThhYmNkMzExODI4YTMzMzc3NzNmNGNjYzEyZDQyZGVkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfdGVzdF9mYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Rvb2xzL25ldGVxX3Rlc3RfZmFjdG9yeS5jYwpAQCAtOTEsNDcgKzkxLDYwIEBAIHN0YXRp
YyBib29sIFZhbGlkYXRlRXh0ZW5zaW9uSWQoaW50IHZhbHVlKSB7CiB9CiAKIC8vIERlZmluZSBj
b21tYW5kIGxpbmUgZmxhZ3MuCi1ERUZJTkVfaW50KHBjbXUsIDAsICJSVFAgcGF5bG9hZCB0eXBl
IGZvciBQQ00tdSIpOwotREVGSU5FX2ludChwY21hLCA4LCAiUlRQIHBheWxvYWQgdHlwZSBmb3Ig
UENNLWEiKTsKLURFRklORV9pbnQoaWxiYywgMTAyLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgaUxC
QyIpOwotREVGSU5FX2ludChpc2FjLCAxMDMsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBpU0FDIik7
Ci1ERUZJTkVfaW50KGlzYWNfc3diLCAxMDQsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBpU0FDLXN3
YiAoMzIga0h6KSIpOwotREVGSU5FX2ludChvcHVzLCAxMTEsICJSVFAgcGF5bG9hZCB0eXBlIGZv
ciBPcHVzIik7Ci1ERUZJTkVfaW50KHBjbTE2YiwgOTMsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQ
Q00xNmItbmIgKDgga0h6KSIpOwotREVGSU5FX2ludChwY20xNmJfd2IsIDk0LCAiUlRQIHBheWxv
YWQgdHlwZSBmb3IgUENNMTZiLXdiICgxNiBrSHopIik7Ci1ERUZJTkVfaW50KHBjbTE2Yl9zd2Iz
MiwgOTUsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQQ00xNmItc3diMzIgKDMyIGtIeikiKTsKLURF
RklORV9pbnQocGNtMTZiX3N3YjQ4LCA5NiwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIFBDTTE2Yi1z
d2I0OCAoNDgga0h6KSIpOwotREVGSU5FX2ludChnNzIyLCA5LCAiUlRQIHBheWxvYWQgdHlwZSBm
b3IgRy43MjIiKTsKLURFRklORV9pbnQoYXZ0LCAxMDYsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBB
VlQvRFRNRiAoOCBrSHopIik7Ci1ERUZJTkVfaW50KGF2dF8xNiwgMTE0LCAiUlRQIHBheWxvYWQg
dHlwZSBmb3IgQVZUL0RUTUYgKDE2IGtIeikiKTsKLURFRklORV9pbnQoYXZ0XzMyLCAxMTUsICJS
VFAgcGF5bG9hZCB0eXBlIGZvciBBVlQvRFRNRiAoMzIga0h6KSIpOwotREVGSU5FX2ludChhdnRf
NDgsIDExNiwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIEFWVC9EVE1GICg0OCBrSHopIik7Ci1ERUZJ
TkVfaW50KHJlZCwgMTE3LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgcmVkdW5kYW50IGF1ZGlvIChS
RUQpIik7Ci1ERUZJTkVfaW50KGNuX25iLCAxMywgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGNvbWZv
cnQgbm9pc2UgKDgga0h6KSIpOwotREVGSU5FX2ludChjbl93YiwgOTgsICJSVFAgcGF5bG9hZCB0
eXBlIGZvciBjb21mb3J0IG5vaXNlICgxNiBrSHopIik7Ci1ERUZJTkVfaW50KGNuX3N3YjMyLCA5
OSwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGNvbWZvcnQgbm9pc2UgKDMyIGtIeikiKTsKLURFRklO
RV9pbnQoY25fc3diNDgsIDEwMCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGNvbWZvcnQgbm9pc2Ug
KDQ4IGtIeikiKTsKLURFRklORV9zdHJpbmcocmVwbGFjZW1lbnRfYXVkaW9fZmlsZSwKLSAgICAg
ICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJBIFBDTSBmaWxlIHRoYXQgd2lsbCBiZSB1c2Vk
IHRvIHBvcHVsYXRlICIKLSAgICAgICAgICAgICAgImR1bW15IgotICAgICAgICAgICAgICAiIFJU
UCBwYWNrZXRzIik7Ci1ERUZJTkVfc3RyaW5nKHNzcmMsCi0gICAgICAgICAgICAgICIiLAotICAg
ICAgICAgICAgICAiT25seSB1c2UgcGFja2V0cyB3aXRoIHRoaXMgU1NSQyAoZGVjaW1hbCBvciBo
ZXgsIHRoZSBsYXR0ZXIgIgotICAgICAgICAgICAgICAic3RhcnRpbmcgd2l0aCAweCkiKTsKLURF
RklORV9pbnQoYXVkaW9fbGV2ZWwsIDEsICJFeHRlbnNpb24gSUQgZm9yIGF1ZGlvIGxldmVsIChS
RkMgNjQ2NCkiKTsKLURFRklORV9pbnQoYWJzX3NlbmRfdGltZSwgMywgIkV4dGVuc2lvbiBJRCBm
b3IgYWJzb2x1dGUgc2VuZGVyIHRpbWUiKTsKLURFRklORV9pbnQodHJhbnNwb3J0X3NlcV9ubywg
NSwgIkV4dGVuc2lvbiBJRCBmb3IgdHJhbnNwb3J0IHNlcXVlbmNlIG51bWJlciIpOwotREVGSU5F
X2ludCh2aWRlb19jb250ZW50X3R5cGUsIDcsICJFeHRlbnNpb24gSUQgZm9yIHZpZGVvIGNvbnRl
bnQgdHlwZSIpOwotREVGSU5FX2ludCh2aWRlb190aW1pbmcsIDgsICJFeHRlbnNpb24gSUQgZm9y
IHZpZGVvIHRpbWluZyIpOwotREVGSU5FX2Jvb2wobWF0bGFicGxvdCwKLSAgICAgICAgICAgIGZh
bHNlLAotICAgICAgICAgICAgIkdlbmVyYXRlcyBhIG1hdGxhYiBzY3JpcHQgZm9yIHBsb3R0aW5n
IHRoZSBkZWxheSBwcm9maWxlIik7Ci1ERUZJTkVfYm9vbChweXRob25wbG90LAotICAgICAgICAg
ICAgZmFsc2UsCi0gICAgICAgICAgICAiR2VuZXJhdGVzIGEgcHl0aG9uIHNjcmlwdCBmb3IgcGxv
dHRpbmcgdGhlIGRlbGF5IHByb2ZpbGUiKTsKLURFRklORV9ib29sKGNvbmNlYWxtZW50X2V2ZW50
cywgZmFsc2UsICJQcmludHMgY29uY2VhbG1lbnQgZXZlbnRzIik7CitXRUJSVENfREVGSU5FX2lu
dChwY211LCAwLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgUENNLXUiKTsKK1dFQlJUQ19ERUZJTkVf
aW50KHBjbWEsIDgsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQQ00tYSIpOworV0VCUlRDX0RFRklO
RV9pbnQoaWxiYywgMTAyLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgaUxCQyIpOworV0VCUlRDX0RF
RklORV9pbnQoaXNhYywgMTAzLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgaVNBQyIpOworV0VCUlRD
X0RFRklORV9pbnQoaXNhY19zd2IsIDEwNCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGlTQUMtc3di
ICgzMiBrSHopIik7CitXRUJSVENfREVGSU5FX2ludChvcHVzLCAxMTEsICJSVFAgcGF5bG9hZCB0
eXBlIGZvciBPcHVzIik7CitXRUJSVENfREVGSU5FX2ludChwY20xNmIsIDkzLCAiUlRQIHBheWxv
YWQgdHlwZSBmb3IgUENNMTZiLW5iICg4IGtIeikiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHBjbTE2
Yl93YiwgOTQsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQQ00xNmItd2IgKDE2IGtIeikiKTsKK1dF
QlJUQ19ERUZJTkVfaW50KHBjbTE2Yl9zd2IzMiwKKyAgICAgICAgICAgICAgICAgIDk1LAorICAg
ICAgICAgICAgICAgICAgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIFBDTTE2Yi1zd2IzMiAoMzIga0h6
KSIpOworV0VCUlRDX0RFRklORV9pbnQocGNtMTZiX3N3YjQ4LAorICAgICAgICAgICAgICAgICAg
OTYsCisgICAgICAgICAgICAgICAgICAiUlRQIHBheWxvYWQgdHlwZSBmb3IgUENNMTZiLXN3YjQ4
ICg0OCBrSHopIik7CitXRUJSVENfREVGSU5FX2ludChnNzIyLCA5LCAiUlRQIHBheWxvYWQgdHlw
ZSBmb3IgRy43MjIiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGF2dCwgMTA2LCAiUlRQIHBheWxvYWQg
dHlwZSBmb3IgQVZUL0RUTUYgKDgga0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQoYXZ0XzE2LCAx
MTQsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBBVlQvRFRNRiAoMTYga0h6KSIpOworV0VCUlRDX0RF
RklORV9pbnQoYXZ0XzMyLCAxMTUsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBBVlQvRFRNRiAoMzIg
a0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQoYXZ0XzQ4LCAxMTYsICJSVFAgcGF5bG9hZCB0eXBl
IGZvciBBVlQvRFRNRiAoNDgga0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQocmVkLCAxMTcsICJS
VFAgcGF5bG9hZCB0eXBlIGZvciByZWR1bmRhbnQgYXVkaW8gKFJFRCkiKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KGNuX25iLCAxMywgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGNvbWZvcnQgbm9pc2UgKDgg
a0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQoY25fd2IsIDk4LCAiUlRQIHBheWxvYWQgdHlwZSBm
b3IgY29tZm9ydCBub2lzZSAoMTYga0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQoY25fc3diMzIs
IDk5LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgY29tZm9ydCBub2lzZSAoMzIga0h6KSIpOworV0VC
UlRDX0RFRklORV9pbnQoY25fc3diNDgsIDEwMCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGNvbWZv
cnQgbm9pc2UgKDQ4IGtIeikiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHJlcGxhY2VtZW50X2F1
ZGlvX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAg
ICJBIFBDTSBmaWxlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHBvcHVsYXRlICIKKyAgICAgICAgICAg
ICAgICAgICAgICJkdW1teSIKKyAgICAgICAgICAgICAgICAgICAgICIgUlRQIHBhY2tldHMiKTsK
K1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIHNzcmMsCisgICAgIiIsCisgICAgIk9ubHkgdXNl
IHBhY2tldHMgd2l0aCB0aGlzIFNTUkMgKGRlY2ltYWwgb3IgaGV4LCB0aGUgbGF0dGVyICIKKyAg
ICAic3RhcnRpbmcgd2l0aCAweCkiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGF1ZGlvX2xldmVsLCAx
LCAiRXh0ZW5zaW9uIElEIGZvciBhdWRpbyBsZXZlbCAoUkZDIDY0NjQpIik7CitXRUJSVENfREVG
SU5FX2ludChhYnNfc2VuZF90aW1lLCAzLCAiRXh0ZW5zaW9uIElEIGZvciBhYnNvbHV0ZSBzZW5k
ZXIgdGltZSIpOworV0VCUlRDX0RFRklORV9pbnQodHJhbnNwb3J0X3NlcV9ubywKKyAgICAgICAg
ICAgICAgICAgIDUsCisgICAgICAgICAgICAgICAgICAiRXh0ZW5zaW9uIElEIGZvciB0cmFuc3Bv
cnQgc2VxdWVuY2UgbnVtYmVyIik7CitXRUJSVENfREVGSU5FX2ludCh2aWRlb19jb250ZW50X3R5
cGUsIDcsICJFeHRlbnNpb24gSUQgZm9yIHZpZGVvIGNvbnRlbnQgdHlwZSIpOworV0VCUlRDX0RF
RklORV9pbnQodmlkZW9fdGltaW5nLCA4LCAiRXh0ZW5zaW9uIElEIGZvciB2aWRlbyB0aW1pbmci
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbChtYXRsYWJwbG90LAorICAgICAgICAgICAgICAgICAgIGZh
bHNlLAorICAgICAgICAgICAgICAgICAgICJHZW5lcmF0ZXMgYSBtYXRsYWIgc2NyaXB0IGZvciBw
bG90dGluZyB0aGUgZGVsYXkgcHJvZmlsZSIpOworV0VCUlRDX0RFRklORV9ib29sKHB5dGhvbnBs
b3QsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIkdlbmVy
YXRlcyBhIHB5dGhvbiBzY3JpcHQgZm9yIHBsb3R0aW5nIHRoZSBkZWxheSBwcm9maWxlIik7CitX
RUJSVENfREVGSU5FX2Jvb2woY29uY2VhbG1lbnRfZXZlbnRzLCBmYWxzZSwgIlByaW50cyBjb25j
ZWFsbWVudCBldmVudHMiKTsKK1dFQlJUQ19ERUZJTkVfaW50KG1heF9ucl9wYWNrZXRzX2luX2J1
ZmZlciwKKyAgICAgICAgICAgICAgICAgIDUwLAorICAgICAgICAgICAgICAgICAgIk1heGltdW0g
YWxsb3dlZCBudW1iZXIgb2YgcGFja2V0cyBpbiB0aGUgYnVmZmVyIik7CitXRUJSVENfREVGSU5F
X2Jvb2woZW5hYmxlX2Zhc3RfYWNjZWxlcmF0ZSwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAiRW5hYmxlcyBqaXR0ZXIgYnVmZmVyIGZhc3QgYWNjZWxlcmF0
ZSIpOwogCiAvLyBNYXBzIGEgY29kZWMgdHlwZSB0byBhIHByaW50YWJsZSBuYW1lIHN0cmluZy4K
IHN0ZDo6c3RyaW5nIENvZGVjTmFtZShOZXRFcURlY29kZXIgY29kZWMpIHsKQEAgLTMwOSwyNSAr
MzIyLDI3IEBAIHN0ZDo6dW5pcXVlX3B0cjxOZXRFcVRlc3Q+IE5ldEVxVGVzdEZhY3Rvcnk6Oklu
aXRpYWxpemVUZXN0KAogICAgICAge0ZMQUdfdmlkZW9fY29udGVudF90eXBlLCBrUnRwRXh0ZW5z
aW9uVmlkZW9Db250ZW50VHlwZX0sCiAgICAgICB7RkxBR192aWRlb190aW1pbmcsIGtSdHBFeHRl
bnNpb25WaWRlb1RpbWluZ319OwogCisgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBzc3JjX2Zp
bHRlcjsKKyAgLy8gQ2hlY2sgaWYgYW4gU1NSQyB2YWx1ZSB3YXMgcHJvdmlkZWQuCisgIGlmIChz
dHJsZW4oRkxBR19zc3JjKSA+IDApIHsKKyAgICB1aW50MzJfdCBzc3JjOworICAgIFJUQ19DSEVD
SyhQYXJzZVNzcmMoRkxBR19zc3JjLCAmc3NyYykpIDw8ICJGbGFnIHZlcmlmaWNhdGlvbiBoYXMg
ZmFpbGVkLiI7CisgICAgc3NyY19maWx0ZXIgPSBzc3JjOworICB9CisKICAgc3RkOjp1bmlxdWVf
cHRyPE5ldEVxSW5wdXQ+IGlucHV0OwogICBpZiAoUnRwRmlsZVNvdXJjZTo6VmFsaWRSdHBEdW1w
KGlucHV0X2ZpbGVfbmFtZSkgfHwKICAgICAgIFJ0cEZpbGVTb3VyY2U6OlZhbGlkUGNhcChpbnB1
dF9maWxlX25hbWUpKSB7Ci0gICAgaW5wdXQucmVzZXQobmV3IE5ldEVxUnRwRHVtcElucHV0KGlu
cHV0X2ZpbGVfbmFtZSwgcnRwX2V4dF9tYXApKTsKKyAgICBpbnB1dC5yZXNldCgKKyAgICAgICAg
bmV3IE5ldEVxUnRwRHVtcElucHV0KGlucHV0X2ZpbGVfbmFtZSwgcnRwX2V4dF9tYXAsIHNzcmNf
ZmlsdGVyKSk7CiAgIH0gZWxzZSB7Ci0gICAgaW5wdXQucmVzZXQobmV3IE5ldEVxRXZlbnRMb2dJ
bnB1dChpbnB1dF9maWxlX25hbWUsIHJ0cF9leHRfbWFwKSk7CisgICAgaW5wdXQucmVzZXQobmV3
IE5ldEVxRXZlbnRMb2dJbnB1dChpbnB1dF9maWxlX25hbWUsIHNzcmNfZmlsdGVyKSk7CiAgIH0K
IAogICBzdGQ6OmNvdXQgPDwgIklucHV0IGZpbGU6ICIgPDwgaW5wdXRfZmlsZV9uYW1lIDw8IHN0
ZDo6ZW5kbDsKICAgUlRDX0NIRUNLKGlucHV0KSA8PCAiQ2Fubm90IG9wZW4gaW5wdXQgZmlsZSI7
CiAgIFJUQ19DSEVDSyghaW5wdXQtPmVuZGVkKCkpIDw8ICJJbnB1dCBmaWxlIGlzIGVtcHR5IjsK
IAotICAvLyBDaGVjayBpZiBhbiBTU1JDIHZhbHVlIHdhcyBwcm92aWRlZC4KLSAgaWYgKHN0cmxl
bihGTEFHX3NzcmMpID4gMCkgewotICAgIHVpbnQzMl90IHNzcmM7Ci0gICAgUlRDX0NIRUNLKFBh
cnNlU3NyYyhGTEFHX3NzcmMsICZzc3JjKSkgPDwgIkZsYWcgdmVyaWZpY2F0aW9uIGhhcyBmYWls
ZWQuIjsKLSAgICBzdGF0aWNfY2FzdDxOZXRFcVBhY2tldFNvdXJjZUlucHV0Kj4oaW5wdXQuZ2V0
KCkpLT5TZWxlY3RTc3JjKHNzcmMpOwotICB9Ci0KICAgLy8gQ2hlY2sgdGhlIHNhbXBsZSByYXRl
LgogICBhYnNsOjpvcHRpb25hbDxpbnQ+IHNhbXBsZV9yYXRlX2h6OwogICBzdGQ6OnNldDxzdGQ6
OnBhaXI8aW50LCB1aW50MzJfdD4+IGRpc2NhcmRlZF9wdF9hbmRfc3NyYzsKQEAgLTQ1Nyw2ICs0
NzIsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TmV0RXFUZXN0PiBOZXRFcVRlc3RGYWN0b3J5OjpJbml0
aWFsaXplVGVzdCgKICAgY2FsbGJhY2tzLnNpbXVsYXRpb25fZW5kZWRfY2FsbGJhY2sgPSBzdGF0
c19wbG90dGVyXy5nZXQoKTsKICAgTmV0RXE6OkNvbmZpZyBjb25maWc7CiAgIGNvbmZpZy5zYW1w
bGVfcmF0ZV9oeiA9ICpzYW1wbGVfcmF0ZV9oejsKKyAgY29uZmlnLm1heF9wYWNrZXRzX2luX2J1
ZmZlciA9IEZMQUdfbWF4X25yX3BhY2tldHNfaW5fYnVmZmVyOworICBjb25maWcuZW5hYmxlX2Zh
c3RfYWNjZWxlcmF0ZSA9IEZMQUdfZW5hYmxlX2Zhc3RfYWNjZWxlcmF0ZTsKICAgcmV0dXJuIGFi
c2w6Om1ha2VfdW5pcXVlPE5ldEVxVGVzdD4oY29uZmlnLCBjb2RlY3MsIGV4dF9jb2RlY3NfLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoaW5wdXQpLCBz
dGQ6Om1vdmUob3V0cHV0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2tzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL3Rvb2xzL3BhY2tldC5jYwppbmRleCBiMWE5YjY0MTkzYmY3NWI3OWE3MGM3NmUy
MGYyMDEyZTg5ZjUzMDhhLi4wZTc5NTFiNmUzYzM0M2VjMjJiOTcwYzFkNjEyNzljMDg3MmI2YzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXQuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvdG9vbHMvcGFja2V0LmNjCkBAIC00OSw2ICs0OSwyMCBAQCBQYWNrZXQ6OlBhY2tldCh1aW50
OF90KiBwYWNrZXRfbWVtb3J5LAogICB2YWxpZF9oZWFkZXJfID0gUGFyc2VIZWFkZXIocGFyc2Vy
KTsKIH0KIAorUGFja2V0OjpQYWNrZXQoY29uc3QgUlRQSGVhZGVyJiBoZWFkZXIsCisgICAgICAg
ICAgICAgICBzaXplX3QgdmlydHVhbF9wYWNrZXRfbGVuZ3RoX2J5dGVzLAorICAgICAgICAgICAg
ICAgc2l6ZV90IHZpcnR1YWxfcGF5bG9hZF9sZW5ndGhfYnl0ZXMsCisgICAgICAgICAgICAgICBk
b3VibGUgdGltZV9tcykKKyAgICA6IGhlYWRlcl8oaGVhZGVyKSwKKyAgICAgIHBheWxvYWRfbWVt
b3J5XygpLAorICAgICAgcGF5bG9hZF8oTlVMTCksCisgICAgICBwYWNrZXRfbGVuZ3RoX2J5dGVz
XygwKSwKKyAgICAgIHBheWxvYWRfbGVuZ3RoX2J5dGVzXygwKSwKKyAgICAgIHZpcnR1YWxfcGFj
a2V0X2xlbmd0aF9ieXRlc18odmlydHVhbF9wYWNrZXRfbGVuZ3RoX2J5dGVzKSwKKyAgICAgIHZp
cnR1YWxfcGF5bG9hZF9sZW5ndGhfYnl0ZXNfKHZpcnR1YWxfcGF5bG9hZF9sZW5ndGhfYnl0ZXMp
LAorICAgICAgdGltZV9tc18odGltZV9tcyksCisgICAgICB2YWxpZF9oZWFkZXJfKHRydWUpIHt9
CisKIFBhY2tldDo6UGFja2V0KHVpbnQ4X3QqIHBhY2tldF9tZW1vcnksIHNpemVfdCBhbGxvY2F0
ZWRfYnl0ZXMsIGRvdWJsZSB0aW1lX21zKQogICAgIDogcGF5bG9hZF9tZW1vcnlfKHBhY2tldF9t
ZW1vcnkpLAogICAgICAgcGF5bG9hZF8oTlVMTCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
b29scy9wYWNrZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldC5oCmluZGV4IDYyM2M1Y2I2
MzU5YTk5ZjVjOTNhMzlkMjNhMDdlNDExY2JhOTFhY2UuLjM5MTM3YWFlNDNhMGFlYzU5MjM0MDA3
NTQyYjEwOGZjZmE3Yjg4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldC5oCkBAIC01MCw3ICs1MCwxNyBAQCBjbGFz
cyBQYWNrZXQgewogICAgICAgICAgZG91YmxlIHRpbWVfbXMsCiAgICAgICAgICBjb25zdCBSdHBI
ZWFkZXJQYXJzZXImIHBhcnNlcik7CiAKLSAgLy8gVGhlIGZvbGxvd2luZyB0d28gY29uc3RydWN0
b3JzIGFyZSB0aGUgc2FtZSBhcyBhYm92ZSwgYnV0IHdpdGhvdXQgYQorICAvLyBTYW1lIGFzIGFi
b3ZlLCBidXQgY3JlYXRlcyB0aGUgcGFja2V0IGZyb20gYW4gYWxyZWFkeSBwYXJzZWQgUlRQSGVh
ZGVyLgorICAvLyBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHdoZW4gcmVhZGluZyBSVFAgZHVtcCBm
aWxlcyB0aGF0IG9ubHkgY29udGFpbiB0aGUKKyAgLy8gUlRQIGhlYWRlcnMsIGFuZCBubyBwYXls
b2FkLiBUaGUgfHZpcnR1YWxfcGFja2V0X2xlbmd0aF9ieXRlc3wgdGVsbHMgd2hhdAorICAvLyBz
aXplIHRoZSBwYWNrZXQgaGFkIG9uIHdpcmUsIGluY2x1ZGluZyB0aGUgbm93IGRpc2NhcmRlZCBw
YXlsb2FkLAorICAvLyBUaGUgfHZpcnR1YWxfcGF5bG9hZF9sZW5ndGhfYnl0ZXN8IHRlbGxzIHRo
ZSBzaXplIG9mIHRoZSBwYXlsb2FkLgorICBQYWNrZXQoY29uc3QgUlRQSGVhZGVyJiBoZWFkZXIs
CisgICAgICAgICBzaXplX3QgdmlydHVhbF9wYWNrZXRfbGVuZ3RoX2J5dGVzLAorICAgICAgICAg
c2l6ZV90IHZpcnR1YWxfcGF5bG9hZF9sZW5ndGhfYnl0ZXMsCisgICAgICAgICBkb3VibGUgdGlt
ZV9tcyk7CisKKyAgLy8gVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RvcnMgYXJlIHRoZSBzYW1lIGFz
IHRoZSBmaXJzdCB0d28sIGJ1dCB3aXRob3V0IGEKICAgLy8gcGFyc2VyLiBOb3RlIHRoYXQgd2hl
biB0aGUgb2JqZWN0IGlzIGNvbnN0cnVjdGVkIHVzaW5nIGFueSBvZiB0aGVzZQogICAvLyBtZXRo
b2RzLCB0aGUgaGVhZGVyIHdpbGwgYmUgcGFyc2VkIHVzaW5nIGEgZGVmYXVsdCBSdHBIZWFkZXJQ
YXJzZXIgb2JqZWN0LgogICAvLyBJbiBwYXJ0aWN1bGFyLCBSVFAgaGVhZGVyIGV4dGVuc2lvbnMg
d29uJ3QgYmUgcGFyc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0X3Nv
dXJjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldF9zb3VyY2UuY2MKaW5kZXggMzBiZjQz
MTgzNTU1MjM5NWU0OGNmNzg5YWFhM2M0MmRjZjdjNDVmMS4uNTk4YWU2ZWRkNDA4ZDNlM2VjMDlm
MTI5ZGQ1YWNhMWViYjEyZGRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0
X3NvdXJjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXRfc291cmNlLmNjCkBAIC0x
Myw3ICsxMyw3IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIAotUGFj
a2V0U291cmNlOjpQYWNrZXRTb3VyY2UoKSA6IHVzZV9zc3JjX2ZpbHRlcl8oZmFsc2UpLCBzc3Jj
XygwKSB7fQorUGFja2V0U291cmNlOjpQYWNrZXRTb3VyY2UoKSA9IGRlZmF1bHQ7CiAKIFBhY2tl
dFNvdXJjZTo6flBhY2tldFNvdXJjZSgpID0gZGVmYXVsdDsKIApAQCAtMjEsMTAgKzIxLDUgQEAg
dm9pZCBQYWNrZXRTb3VyY2U6OkZpbHRlck91dFBheWxvYWRUeXBlKHVpbnQ4X3QgcGF5bG9hZF90
eXBlKSB7CiAgIGZpbHRlcl8uc2V0KHBheWxvYWRfdHlwZSwgdHJ1ZSk7CiB9CiAKLXZvaWQgUGFj
a2V0U291cmNlOjpTZWxlY3RTc3JjKHVpbnQzMl90IHNzcmMpIHsKLSAgdXNlX3NzcmNfZmlsdGVy
XyA9IHRydWU7Ci0gIHNzcmNfID0gc3NyYzsKLX0KLQogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tl
dF9zb3VyY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldF9zb3VyY2UuaAppbmRleCBmYjY4
OWUzM2Q0ZTQ4NTJjOTgxNDQwYTJhZTIxODBiODI1MTU4MDRkLi5jYjg2YTk4OTk5ZGUwNmJmZWU4
NWM1NjhmZTk4Y2I2ZmYyM2UyMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNr
ZXRfc291cmNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0X3NvdXJjZS5oCkBAIC0z
MiwxMyArMzIsOCBAQCBjbGFzcyBQYWNrZXRTb3VyY2UgewogCiAgIHZpcnR1YWwgdm9pZCBGaWx0
ZXJPdXRQYXlsb2FkVHlwZSh1aW50OF90IHBheWxvYWRfdHlwZSk7CiAKLSAgdmlydHVhbCB2b2lk
IFNlbGVjdFNzcmModWludDMyX3Qgc3NyYyk7Ci0KICBwcm90ZWN0ZWQ6CiAgIHN0ZDo6Yml0c2V0
PDEyOD4gZmlsdGVyXzsgIC8vIFBheWxvYWQgdHlwZSBpcyA3IGJpdHMgaW4gdGhlIFJGQy4KLSAg
Ly8gSWYgU1NSQyBmaWx0ZXJpbmcgZGlzY2FyZHMgYWxsIHBhY2tldCB0aGF0IGRvIG5vdCBtYXRj
aCB0aGUgU1NSQy4KLSAgYm9vbCB1c2Vfc3NyY19maWx0ZXJfOyAgLy8gVHJ1ZSB3aGVuIFNTUkMg
ZmlsdGVyaW5nIGlzIGFjdGl2ZS4KLSAgdWludDMyX3Qgc3NyY187ICAvLyBUaGUgc2VsZWN0ZWQg
U1NSQy4gQWxsIG90aGVyIFNTUkNzIHdpbGwgYmUgZGlzY2FyZGVkLgogCiAgcHJpdmF0ZToKICAg
UlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihQYWNrZXRTb3VyY2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdG9vbHMvcnRjX2V2ZW50X2xvZ19zb3VyY2UuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5jYwppbmRleCA5ZTQzNWM3Y2Y4OGZjMmI5ZDZkODY2
ZGU0ODA4ODlmMTg2YjNmODNmLi41ODJjMmYyZjEzNTUxZjk4N2JhYWY5MWFhZWEyZWM4OTc2ZmYy
ZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5jYwpAQCAtMTMs
OTQgKzEzLDExNSBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGlvc3RyZWFtPgog
I2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9wcm9jZXNzb3IuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXQuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9wYXJzZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiAKLVJ0Y0V2
ZW50TG9nU291cmNlKiBSdGNFdmVudExvZ1NvdXJjZTo6Q3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBmaWxlX25hbWUpIHsKK25hbWVzcGFjZSB7Citib29sIFNob3VsZFNraXBTdHJlYW0oUGFyc2Vk
UnRjRXZlbnRMb2dOZXc6Ok1lZGlhVHlwZSBtZWRpYV90eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IHNzcmMsCisgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8
dWludDMyX3Q+IHNzcmNfZmlsdGVyKSB7CisgIGlmIChtZWRpYV90eXBlICE9IFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpNZWRpYVR5cGU6OkFVRElPKQorICAgIHJldHVybiB0cnVlOworICBpZiAoc3Ny
Y19maWx0ZXIuaGFzX3ZhbHVlKCkgJiYgc3NyYyAhPSAqc3NyY19maWx0ZXIpCisgICAgcmV0dXJu
IHRydWU7CisgIHJldHVybiBmYWxzZTsKK30KK30gIC8vIG5hbWVzcGFjZQorCitSdGNFdmVudExv
Z1NvdXJjZSogUnRjRXZlbnRMb2dTb3VyY2U6OkNyZWF0ZSgKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgZmlsZV9uYW1lLAorICAgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlcikg
ewogICBSdGNFdmVudExvZ1NvdXJjZSogc291cmNlID0gbmV3IFJ0Y0V2ZW50TG9nU291cmNlKCk7
Ci0gIFJUQ19DSEVDSyhzb3VyY2UtPk9wZW5GaWxlKGZpbGVfbmFtZSkpOworICBSVENfQ0hFQ0so
c291cmNlLT5PcGVuRmlsZShmaWxlX25hbWUsIHNzcmNfZmlsdGVyKSk7CiAgIHJldHVybiBzb3Vy
Y2U7CiB9CiAKIFJ0Y0V2ZW50TG9nU291cmNlOjp+UnRjRXZlbnRMb2dTb3VyY2UoKSB7fQogCi1i
b29sIFJ0Y0V2ZW50TG9nU291cmNlOjpSZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihSVFBFeHRl
bnNpb25UeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90IGlkKSB7Ci0gIFJUQ19DSEVDSyhwYXJzZXJfLmdldCgpKTsKLSAg
cmV0dXJuIHBhcnNlcl8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKHR5cGUsIGlkKTsKLX0K
LQogc3RkOjp1bmlxdWVfcHRyPFBhY2tldD4gUnRjRXZlbnRMb2dTb3VyY2U6Ok5leHRQYWNrZXQo
KSB7Ci0gIGZvciAoOyBydHBfcGFja2V0X2luZGV4XyA8IHBhcnNlZF9zdHJlYW1fLkdldE51bWJl
ck9mRXZlbnRzKCk7Ci0gICAgICAgcnRwX3BhY2tldF9pbmRleF8rKykgewotICAgIGlmIChwYXJz
ZWRfc3RyZWFtXy5HZXRFdmVudFR5cGUocnRwX3BhY2tldF9pbmRleF8pID09Ci0gICAgICAgIFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlJUUF9FVkVOVCkgewotICAgICAgUGFja2V0
RGlyZWN0aW9uIGRpcmVjdGlvbjsKLSAgICAgIHNpemVfdCBoZWFkZXJfbGVuZ3RoOwotICAgICAg
c2l6ZV90IHBhY2tldF9sZW5ndGg7Ci0gICAgICB1aW50NjRfdCB0aW1lc3RhbXBfdXMgPSBwYXJz
ZWRfc3RyZWFtXy5HZXRUaW1lc3RhbXAocnRwX3BhY2tldF9pbmRleF8pOwotICAgICAgcGFyc2Vk
X3N0cmVhbV8uR2V0UnRwSGVhZGVyKHJ0cF9wYWNrZXRfaW5kZXhfLCAmZGlyZWN0aW9uLCBudWxs
cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoZWFkZXJfbGVuZ3RoLCAm
cGFja2V0X2xlbmd0aCwgbnVsbHB0cik7Ci0KLSAgICAgIGlmIChkaXJlY3Rpb24gIT0ga0luY29t
aW5nUGFja2V0KSB7Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotCi0gICAgICB1aW50OF90
KiBwYWNrZXRfaGVhZGVyID0gbmV3IHVpbnQ4X3RbaGVhZGVyX2xlbmd0aF07Ci0gICAgICBwYXJz
ZWRfc3RyZWFtXy5HZXRSdHBIZWFkZXIocnRwX3BhY2tldF9pbmRleF8sIG51bGxwdHIsIHBhY2tl
dF9oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0cik7Ci0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFja2V0PiBwYWNrZXQoCi0g
ICAgICAgICAgbmV3IFBhY2tldChwYWNrZXRfaGVhZGVyLCBoZWFkZXJfbGVuZ3RoLCBwYWNrZXRf
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lc3Rh
bXBfdXMpIC8gMTAwMCwgKnBhcnNlcl8uZ2V0KCkpKTsKLQotICAgICAgaWYgKCFwYWNrZXQtPnZh
bGlkX2hlYWRlcigpKSB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiV2FybmluZzogUGFja2V0IHdp
dGggaW5kZXggIiA8PCBydHBfcGFja2V0X2luZGV4XwotICAgICAgICAgICAgICAgICAgPDwgIiBo
YXMgYW4gaW52YWxpZCBoZWFkZXIgYW5kIHdpbGwgYmUgaWdub3JlZC4iIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChwYXJzZWRfc3RyZWFtXy5H
ZXRNZWRpYVR5cGUocGFja2V0LT5oZWFkZXIoKS5zc3JjLCBkaXJlY3Rpb24pICE9Ci0gICAgICAg
ICAgUGFyc2VkUnRjRXZlbnRMb2dOZXc6Ok1lZGlhVHlwZTo6QVVESU8pIHsKLSAgICAgICAgY29u
dGludWU7Ci0gICAgICB9Ci0KLSAgICAgIC8vIENoZWNrIGlmIHRoZSBwYWNrZXQgc2hvdWxkIG5v
dCBiZSBmaWx0ZXJlZCBvdXQuCi0gICAgICBpZiAoIWZpbHRlcl8udGVzdChwYWNrZXQtPmhlYWRl
cigpLnBheWxvYWRUeXBlKSAmJgotICAgICAgICAgICEodXNlX3NzcmNfZmlsdGVyXyAmJiBwYWNr
ZXQtPmhlYWRlcigpLnNzcmMgIT0gc3NyY18pKSB7Ci0gICAgICAgICsrcnRwX3BhY2tldF9pbmRl
eF87Ci0gICAgICAgIHJldHVybiBwYWNrZXQ7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJldHVy
biBudWxscHRyOworICBpZiAocnRwX3BhY2tldF9pbmRleF8gPj0gcnRwX3BhY2tldHNfLnNpemUo
KSkKKyAgICByZXR1cm4gbnVsbHB0cjsKKworICBzdGQ6OnVuaXF1ZV9wdHI8UGFja2V0PiBwYWNr
ZXQgPSBzdGQ6Om1vdmUocnRwX3BhY2tldHNfW3J0cF9wYWNrZXRfaW5kZXhfKytdKTsKKyAgcmV0
dXJuIHBhY2tldDsKIH0KIAogaW50NjRfdCBSdGNFdmVudExvZ1NvdXJjZTo6TmV4dEF1ZGlvT3V0
cHV0RXZlbnRNcygpIHsKLSAgd2hpbGUgKGF1ZGlvX291dHB1dF9pbmRleF8gPCBwYXJzZWRfc3Ry
ZWFtXy5HZXROdW1iZXJPZkV2ZW50cygpKSB7Ci0gICAgaWYgKHBhcnNlZF9zdHJlYW1fLkdldEV2
ZW50VHlwZShhdWRpb19vdXRwdXRfaW5kZXhfKSA9PQotICAgICAgICBQYXJzZWRSdGNFdmVudExv
Z05ldzo6RXZlbnRUeXBlOjpBVURJT19QTEFZT1VUX0VWRU5UKSB7Ci0gICAgICBMb2dnZWRBdWRp
b1BsYXlvdXRFdmVudCBwbGF5b3V0X2V2ZW50ID0KLSAgICAgICAgICBwYXJzZWRfc3RyZWFtXy5H
ZXRBdWRpb1BsYXlvdXQoYXVkaW9fb3V0cHV0X2luZGV4Xyk7Ci0gICAgICBpZiAoISh1c2Vfc3Ny
Y19maWx0ZXJfICYmIHBsYXlvdXRfZXZlbnQuc3NyYyAhPSBzc3JjXykpIHsKLSAgICAgICAgYXVk
aW9fb3V0cHV0X2luZGV4XysrOwotICAgICAgICByZXR1cm4gcGxheW91dF9ldmVudC50aW1lc3Rh
bXBfdXMgLyAxMDAwOwotICAgICAgfQorICBpZiAoYXVkaW9fb3V0cHV0X2luZGV4XyA+PSBhdWRp
b19vdXRwdXRzXy5zaXplKCkpCisgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRf
dD46Om1heCgpOworCisgIGludDY0X3Qgb3V0cHV0X3RpbWVfbXMgPSBhdWRpb19vdXRwdXRzX1th
dWRpb19vdXRwdXRfaW5kZXhfKytdOworICByZXR1cm4gb3V0cHV0X3RpbWVfbXM7Cit9CisKK1J0
Y0V2ZW50TG9nU291cmNlOjpSdGNFdmVudExvZ1NvdXJjZSgpIDogUGFja2V0U291cmNlKCkge30K
KworYm9vbCBSdGNFdmVudExvZ1NvdXJjZTo6T3BlbkZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZp
bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFs
PHVpbnQzMl90PiBzc3JjX2ZpbHRlcikgeworICBQYXJzZWRSdGNFdmVudExvZ05ldyBwYXJzZWRf
bG9nOworICBpZiAoIXBhcnNlZF9sb2cuUGFyc2VGaWxlKGZpbGVfbmFtZSkpCisgICAgcmV0dXJu
IGZhbHNlOworCisgIGNvbnN0IGF1dG8gZmlyc3RfbG9nX2VuZF90aW1lX3VzID0KKyAgICAgIHBh
cnNlZF9sb2cuc3RvcF9sb2dfZXZlbnRzKCkuZW1wdHkoKQorICAgICAgICAgID8gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkKKyAgICAgICAgICA6IHBhcnNlZF9sb2cuc3RvcF9s
b2dfZXZlbnRzKCkuZnJvbnQoKS5sb2dfdGltZV91cygpOworCisgIGF1dG8gaGFuZGxlX3J0cF9w
YWNrZXQgPQorICAgICAgW3RoaXMsCisgICAgICAgZmlyc3RfbG9nX2VuZF90aW1lX3VzXShjb25z
dCB3ZWJydGM6OkxvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBpbmNvbWluZykgeworICAgICAgICBp
ZiAoIWZpbHRlcl8udGVzdChpbmNvbWluZy5ydHAuaGVhZGVyLnBheWxvYWRUeXBlKSAmJgorICAg
ICAgICAgICAgaW5jb21pbmcubG9nX3RpbWVfdXMoKSA8IGZpcnN0X2xvZ19lbmRfdGltZV91cykg
eworICAgICAgICAgIHJ0cF9wYWNrZXRzXy5lbXBsYWNlX2JhY2soYWJzbDo6bWFrZV91bmlxdWU8
UGFja2V0PigKKyAgICAgICAgICAgICAgaW5jb21pbmcucnRwLmhlYWRlciwgaW5jb21pbmcucnRw
LnRvdGFsX2xlbmd0aCwKKyAgICAgICAgICAgICAgaW5jb21pbmcucnRwLnRvdGFsX2xlbmd0aCAt
IGluY29taW5nLnJ0cC5oZWFkZXJfbGVuZ3RoLAorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxk
b3VibGU+KGluY29taW5nLmxvZ190aW1lX21zKCkpKSk7CisgICAgICAgIH0KKyAgICAgIH07CisK
KyAgYXV0byBoYW5kbGVfYXVkaW9fcGxheW91dCA9CisgICAgICBbdGhpcywgZmlyc3RfbG9nX2Vu
ZF90aW1lX3VzXSgKKyAgICAgICAgICBjb25zdCB3ZWJydGM6OkxvZ2dlZEF1ZGlvUGxheW91dEV2
ZW50JiBhdWRpb19wbGF5b3V0KSB7CisgICAgICAgIGlmIChhdWRpb19wbGF5b3V0LmxvZ190aW1l
X3VzKCkgPCBmaXJzdF9sb2dfZW5kX3RpbWVfdXMpIHsKKyAgICAgICAgICBhdWRpb19vdXRwdXRz
Xy5lbXBsYWNlX2JhY2soYXVkaW9fcGxheW91dC5sb2dfdGltZV9tcygpKTsKKyAgICAgICAgfQor
ICAgICAgfTsKKworICAvLyBUaGlzIHdvdWxkbid0IGJlIG5lZWRlZCBpZiB3ZSBrbmV3IHRoYXQg
dGhlcmUgd2FzIGF0IG1vc3Qgb25lIGF1ZGlvIHN0cmVhbS4KKyAgd2VicnRjOjpSdGNFdmVudFBy
b2Nlc3NvciBldmVudF9wcm9jZXNzb3I7CisgIGZvciAoY29uc3QgYXV0byYgcnRwX3BhY2tldHMg
OiBwYXJzZWRfbG9nLmluY29taW5nX3J0cF9wYWNrZXRzX2J5X3NzcmMoKSkgeworICAgIFBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSA9CisgICAgICAgIHBhcnNlZF9s
b2cuR2V0TWVkaWFUeXBlKHJ0cF9wYWNrZXRzLnNzcmMsIHdlYnJ0Yzo6a0luY29taW5nUGFja2V0
KTsKKyAgICBpZiAoU2hvdWxkU2tpcFN0cmVhbShtZWRpYV90eXBlLCBydHBfcGFja2V0cy5zc3Jj
LCBzc3JjX2ZpbHRlcikpIHsKKyAgICAgIGNvbnRpbnVlOwogICAgIH0KLSAgICBhdWRpb19vdXRw
dXRfaW5kZXhfKys7CisgICAgYXV0byBydHBfdmlldyA9IGFic2w6Om1ha2VfdW5pcXVlPAorICAg
ICAgICB3ZWJydGM6OlByb2Nlc3NhYmxlRXZlbnRMaXN0PHdlYnJ0Yzo6TG9nZ2VkUnRwUGFja2V0
SW5jb21pbmc+PigKKyAgICAgICAgcnRwX3BhY2tldHMuaW5jb21pbmdfcGFja2V0cy5iZWdpbigp
LAorICAgICAgICBydHBfcGFja2V0cy5pbmNvbWluZ19wYWNrZXRzLmVuZCgpLCBoYW5kbGVfcnRw
X3BhY2tldCk7CisgICAgZXZlbnRfcHJvY2Vzc29yLkFkZEV2ZW50cyhzdGQ6Om1vdmUocnRwX3Zp
ZXcpKTsKKyAgfQorCisgIGZvciAoY29uc3QgYXV0byYgYXVkaW9fcGxheW91dHMgOiBwYXJzZWRf
bG9nLmF1ZGlvX3BsYXlvdXRfZXZlbnRzKCkpIHsKKyAgICBpZiAoc3NyY19maWx0ZXIuaGFzX3Zh
bHVlKCkgJiYgYXVkaW9fcGxheW91dHMuZmlyc3QgIT0gKnNzcmNfZmlsdGVyKQorICAgICAgY29u
dGludWU7CisgICAgYXV0byBhdWRpb192aWV3ID0gYWJzbDo6bWFrZV91bmlxdWU8CisgICAgICAg
IHdlYnJ0Yzo6UHJvY2Vzc2FibGVFdmVudExpc3Q8d2VicnRjOjpMb2dnZWRBdWRpb1BsYXlvdXRF
dmVudD4+KAorICAgICAgICBhdWRpb19wbGF5b3V0cy5zZWNvbmQuYmVnaW4oKSwgYXVkaW9fcGxh
eW91dHMuc2Vjb25kLmVuZCgpLAorICAgICAgICBoYW5kbGVfYXVkaW9fcGxheW91dCk7CisgICAg
ZXZlbnRfcHJvY2Vzc29yLkFkZEV2ZW50cyhzdGQ6Om1vdmUoYXVkaW9fdmlldykpOwogICB9Ci0g
IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsKLX0KIAotUnRjRXZl
bnRMb2dTb3VyY2U6OlJ0Y0V2ZW50TG9nU291cmNlKCkKLSAgICA6IFBhY2tldFNvdXJjZSgpLCBw
YXJzZXJfKFJ0cEhlYWRlclBhcnNlcjo6Q3JlYXRlKCkpIHt9CisgIC8vIEZpbGxzIGluIHJ0cF9w
YWNrZXRzXyBhbmQgYXVkaW9fb3V0cHV0c18uCisgIGV2ZW50X3Byb2Nlc3Nvci5Qcm9jZXNzRXZl
bnRzSW5PcmRlcigpOwogCi1ib29sIFJ0Y0V2ZW50TG9nU291cmNlOjpPcGVuRmlsZShjb25zdCBz
dGQ6OnN0cmluZyYgZmlsZV9uYW1lKSB7Ci0gIHJldHVybiBwYXJzZWRfc3RyZWFtXy5QYXJzZUZp
bGUoZmlsZV9uYW1lKTsKKyAgcmV0dXJuIHRydWU7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdG9vbHMvcnRjX2V2ZW50X2xvZ19zb3VyY2UuaAppbmRleCBkYjRlYjE5ZTEx
ZjM2OWRiOTA0NDcwY2JiNTI4ZWIyNTQ1ODZlMWFjLi42Yjc2MWY3ZGJiZDI2MmQ2ZmNlZGFhNThh
ZmYyMDVhZjg5MGU2ZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydGNfZXZlbnRf
bG9nX3NvdXJjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0Y19ldmVudF9sb2dfc291cmNl
LmgKQEAgLTEzLDcgKzEzLDkgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJp
bmc+CisjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlcl9u
ZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXRf
c291cmNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2Rl
ZmluZXMuaCIKQEAgLTMxLDEzICszMywxMSBAQCBjbGFzcyBSdGNFdmVudExvZ1NvdXJjZSA6IHB1
YmxpYyBQYWNrZXRTb3VyY2UgewogIHB1YmxpYzoKICAgLy8gQ3JlYXRlcyBhbiBSdGNFdmVudExv
Z1NvdXJjZSByZWFkaW5nIGZyb20gfGZpbGVfbmFtZXwuIElmIHRoZSBmaWxlIGNhbm5vdAogICAv
LyBiZSBvcGVuZWQsIG9yIGhhcyB0aGUgd3JvbmcgZm9ybWF0LCBOVUxMIHdpbGwgYmUgcmV0dXJu
ZWQuCi0gIHN0YXRpYyBSdGNFdmVudExvZ1NvdXJjZSogQ3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBmaWxlX25hbWUpOworICBzdGF0aWMgUnRjRXZlbnRMb2dTb3VyY2UqIENyZWF0ZShjb25zdCBz
dGQ6OnN0cmluZyYgZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gc3NyY19maWx0ZXIpOwogCiAgIHZpcnR1YWwgflJ0
Y0V2ZW50TG9nU291cmNlKCk7CiAKLSAgLy8gUmVnaXN0ZXJzIGFuIFJUUCBoZWFkZXIgZXh0ZW5z
aW9uIGFuZCBiaW5kcyBpdCB0byB8aWR8LgotICB2aXJ0dWFsIGJvb2wgUmVnaXN0ZXJSdHBIZWFk
ZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlLCB1aW50OF90IGlkKTsKLQogICBzdGQ6
OnVuaXF1ZV9wdHI8UGFja2V0PiBOZXh0UGFja2V0KCkgb3ZlcnJpZGU7CiAKICAgLy8gUmV0dXJu
cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBuZXh0IGF1ZGlvIG91dHB1dCBldmVudCwgaW4gbWlsbGlz
ZWNvbmRzLiBUaGUKQEAgLTQ4LDE0ICs0OCwxNCBAQCBjbGFzcyBSdGNFdmVudExvZ1NvdXJjZSA6
IHB1YmxpYyBQYWNrZXRTb3VyY2UgewogIHByaXZhdGU6CiAgIFJ0Y0V2ZW50TG9nU291cmNlKCk7
CiAKLSAgYm9vbCBPcGVuRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lKTsKKyAgYm9v
bCBPcGVuRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lLAorICAgICAgICAgICAgICAg
IGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlcik7CiAKKyAgc3RkOjp2ZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFBhY2tldD4+IHJ0cF9wYWNrZXRzXzsKICAgc2l6ZV90IHJ0cF9wYWNr
ZXRfaW5kZXhfID0gMDsKKyAgc3RkOjp2ZWN0b3I8aW50NjRfdD4gYXVkaW9fb3V0cHV0c187CiAg
IHNpemVfdCBhdWRpb19vdXRwdXRfaW5kZXhfID0gMDsKIAotICBQYXJzZWRSdGNFdmVudExvZ05l
dyBwYXJzZWRfc3RyZWFtXzsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cEhlYWRlclBhcnNlcj4gcGFy
c2VyXzsKLQogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJ0Y0V2ZW50TG9nU291cmNl
KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9hbmFseXplLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2FuYWx5emUuY2MKaW5kZXggZjkzOTAzODFjZDM4ZDBkMTJl
YzExM2EzMTM1NjVlYWRmNzA0ODRmZS4uOWQzMDQxZWE2NjhkY2ExZGViZGMzMjBjYmE1NDYzNjMw
YTI0OGQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2FuYWx5emUuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2FuYWx5emUuY2MKQEAgLTE5LDE2ICsxOSwxNiBAQAog
I2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCiAKIC8vIERlZmluZSBjb21tYW5kIGxpbmUgZmxh
Z3MuCi1ERUZJTkVfaW50KHJlZCwgMTE3LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgUkVEIik7Ci1E
RUZJTkVfaW50KGF1ZGlvX2xldmVsLAotICAgICAgICAgICAtMSwKLSAgICAgICAgICAgIkV4dGVu
c2lvbiBJRCBmb3IgYXVkaW8gbGV2ZWwgKFJGQyA2NDY0KTsgIgotICAgICAgICAgICAiLTEgbm90
IHRvIHByaW50IGF1ZGlvIGxldmVsIik7Ci1ERUZJTkVfaW50KGFic19zZW5kX3RpbWUsCi0gICAg
ICAgICAgIC0xLAotICAgICAgICAgICAiRXh0ZW5zaW9uIElEIGZvciBhYnNvbHV0ZSBzZW5kZXIg
dGltZTsgIgotICAgICAgICAgICAiLTEgbm90IHRvIHByaW50IGFic29sdXRlIHNlbmQgdGltZSIp
OwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJU
Q19ERUZJTkVfaW50KHJlZCwgMTE3LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgUkVEIik7CitXRUJS
VENfREVGSU5FX2ludChhdWRpb19sZXZlbCwKKyAgICAgICAgICAgICAgICAgIC0xLAorICAgICAg
ICAgICAgICAgICAgIkV4dGVuc2lvbiBJRCBmb3IgYXVkaW8gbGV2ZWwgKFJGQyA2NDY0KTsgIgor
ICAgICAgICAgICAgICAgICAgIi0xIG5vdCB0byBwcmludCBhdWRpbyBsZXZlbCIpOworV0VCUlRD
X0RFRklORV9pbnQoYWJzX3NlbmRfdGltZSwKKyAgICAgICAgICAgICAgICAgIC0xLAorICAgICAg
ICAgICAgICAgICAgIkV4dGVuc2lvbiBJRCBmb3IgYWJzb2x1dGUgc2VuZGVyIHRpbWU7ICIKKyAg
ICAgICAgICAgICAgICAgICItMSBub3QgdG8gcHJpbnQgYWJzb2x1dGUgc2VuZCB0aW1lIik7CitX
RUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UiKTsKIAog
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBzdGQ6OnN0cmluZyBwcm9ncmFt
X25hbWUgPSBhcmd2WzBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2VuY29k
ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9lbmNvZGUuY2MKaW5kZXggNTA2NWNhMTY3NTdk
MDZmYTUyNWU2ZTNlNzdhZDQxZDdjZjIxYjI5OC4uMTRjNmU1OGE5ZDY0NGE3MzFmYzA1ZWU4NGFh
OWYwYzMzY2Q4NGFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2VuY29kZS5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZW5jb2RlLmNjCkBAIC00MCwyMCArNDAsMjQg
QEAgbmFtZXNwYWNlIHRlc3QgewogbmFtZXNwYWNlIHsKIAogLy8gRGVmaW5lIGNvbW1hbmQgbGlu
ZSBmbGFncy4KLURFRklORV9ib29sKGxpc3RfY29kZWNzLCBmYWxzZSwgIkVudW1lcmF0ZSBhbGwg
Y29kZWNzIik7Ci1ERUZJTkVfc3RyaW5nKGNvZGVjLCAib3B1cyIsICJDb2RlYyB0byB1c2UiKTsK
LURFRklORV9pbnQoZnJhbWVfbGVuLCAwLCAiRnJhbWUgbGVuZ3RoIGluIG1zOyAwIGluZGljYXRl
cyBjb2RlYyBkZWZhdWx0IHZhbHVlIik7Ci1ERUZJTkVfaW50KGJpdHJhdGUsIDAsICJCaXRyYXRl
IGluIGticHM7IDAgaW5kaWNhdGVzIGNvZGVjIGRlZmF1bHQgdmFsdWUiKTsKLURFRklORV9pbnQo
cGF5bG9hZF90eXBlLAotICAgICAgICAgICAtMSwKLSAgICAgICAgICAgIlJUUCBwYXlsb2FkIHR5
cGU7IC0xIGluZGljYXRlcyBjb2RlYyBkZWZhdWx0IHZhbHVlIik7Ci1ERUZJTkVfaW50KGNuZ19w
YXlsb2FkX3R5cGUsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiUlRQIHBheWxvYWQgdHlw
ZSBmb3IgQ05HOyAtMSBpbmRpY2F0ZXMgZGVmYXVsdCB2YWx1ZSIpOwotREVGSU5FX2ludChzc3Jj
LCAwLCAiU1NSQyB0byB3cml0ZSB0byB0aGUgUlRQIGhlYWRlciIpOwotREVGSU5FX2Jvb2woZHR4
LCBmYWxzZSwgIlVzZSBEVFgvQ05HIik7Ci1ERUZJTkVfaW50KHNhbXBsZV9yYXRlLCA0ODAwMCwg
IlNhbXBsZSByYXRlIG9mIHRoZSBpbnB1dCBmaWxlIik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxz
ZSwgIlByaW50IHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklORV9ib29sKGxpc3RfY29kZWNz
LCBmYWxzZSwgIkVudW1lcmF0ZSBhbGwgY29kZWNzIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhj
b2RlYywgIm9wdXMiLCAiQ29kZWMgdG8gdXNlIik7CitXRUJSVENfREVGSU5FX2ludChmcmFtZV9s
ZW4sCisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIkZyYW1lIGxlbmd0
aCBpbiBtczsgMCBpbmRpY2F0ZXMgY29kZWMgZGVmYXVsdCB2YWx1ZSIpOworV0VCUlRDX0RFRklO
RV9pbnQoYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAi
Qml0cmF0ZSBpbiBrYnBzOyAwIGluZGljYXRlcyBjb2RlYyBkZWZhdWx0IHZhbHVlIik7CitXRUJS
VENfREVGSU5FX2ludChwYXlsb2FkX3R5cGUsCisgICAgICAgICAgICAgICAgICAtMSwKKyAgICAg
ICAgICAgICAgICAgICJSVFAgcGF5bG9hZCB0eXBlOyAtMSBpbmRpY2F0ZXMgY29kZWMgZGVmYXVs
dCB2YWx1ZSIpOworV0VCUlRDX0RFRklORV9pbnQoY25nX3BheWxvYWRfdHlwZSwKKyAgICAgICAg
ICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIENO
RzsgLTEgaW5kaWNhdGVzIGRlZmF1bHQgdmFsdWUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNzcmMs
IDAsICJTU1JDIHRvIHdyaXRlIHRvIHRoZSBSVFAgaGVhZGVyIik7CitXRUJSVENfREVGSU5FX2Jv
b2woZHR4LCBmYWxzZSwgIlVzZSBEVFgvQ05HIik7CitXRUJSVENfREVGSU5FX2ludChzYW1wbGVf
cmF0ZSwgNDgwMDAsICJTYW1wbGUgcmF0ZSBvZiB0aGUgaW5wdXQgZmlsZSIpOworV0VCUlRDX0RF
RklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlIik7CiAKIC8vIEFkZCBu
ZXcgY29kZWNzIGhlcmUsIGFuZCB0byB0aGUgbWFwIGJlbG93LgogZW51bSBjbGFzcyBDb2RlY1R5
cGUgewpAQCAtMjQyLDggKzI0Niw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IENy
ZWF0ZUVuY29kZXIoQ29kZWNUeXBlIGNvZGVjX3R5cGUsCiAgIHJldHVybiBudWxscHRyOwogfQog
Ci1BdWRpb0VuY29kZXJDbmc6OkNvbmZpZyBHZXRDbmdDb25maWcoaW50IHNhbXBsZV9yYXRlX2h6
KSB7Ci0gIEF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnIGNuZ19jb25maWc7CitBdWRpb0VuY29kZXJD
bmdDb25maWcgR2V0Q25nQ29uZmlnKGludCBzYW1wbGVfcmF0ZV9oeikgeworICBBdWRpb0VuY29k
ZXJDbmdDb25maWcgY25nX2NvbmZpZzsKICAgY29uc3QgYXV0byBkZWZhdWx0X3BheWxvYWRfdHlw
ZSA9IFsmXSB7CiAgICAgc3dpdGNoIChzYW1wbGVfcmF0ZV9oeikgewogICAgICAgY2FzZSA4MDAw
OgpAQCAtMzA5LDEwICszMTMsMTAgQEAgaW50IFJ1blJ0cEVuY29kZShpbnQgYXJnYywgY2hhciog
YXJndltdKSB7CiAKICAgLy8gQ3JlYXRlIGFuIGV4dGVybmFsIFZBRC9DTkcgZW5jb2RlciBpZiBu
ZWVkZWQuCiAgIGlmIChGTEFHX2R0eCAmJiAhY29kZWNfaXQtPnNlY29uZC5pbnRlcm5hbF9kdHgp
IHsKLSAgICBBdWRpb0VuY29kZXJDbmc6OkNvbmZpZyBjbmdfY29uZmlnID0gR2V0Q25nQ29uZmln
KGNvZGVjLT5TYW1wbGVSYXRlSHooKSk7CisgICAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnIGNuZ19j
b25maWcgPSBHZXRDbmdDb25maWcoY29kZWMtPlNhbXBsZVJhdGVIeigpKTsKICAgICBSVENfRENI
RUNLKGNvZGVjKTsKICAgICBjbmdfY29uZmlnLnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKGNv
ZGVjKTsKLSAgICBjb2RlYyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlckNuZz4oc3Rk
Ojptb3ZlKGNuZ19jb25maWcpKTsKKyAgICBjb2RlYyA9IENyZWF0ZUNvbWZvcnROb2lzZUVuY29k
ZXIoc3RkOjptb3ZlKGNuZ19jb25maWcpKTsKICAgfQogICBSVENfRENIRUNLKGNvZGVjKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmNjCmluZGV4IDdiZjdkNTIwODNjYzY1YzQwMThl
MTM3MmVhNGFkYTkwZTlmYzNiYjYuLmVkYTJiM2UzMWZjYmQ0YTA2OWExNWVkZDAyNjQ0MmM0ODk2
ZDE0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJjZS5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2UuY2MKQEAgLTI2LDggKzI2LDkg
QEAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewogCi1SdHBGaWxlU291cmNl
KiBSdHBGaWxlU291cmNlOjpDcmVhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSkgewot
ICBSdHBGaWxlU291cmNlKiBzb3VyY2UgPSBuZXcgUnRwRmlsZVNvdXJjZSgpOworUnRwRmlsZVNv
dXJjZSogUnRwRmlsZVNvdXJjZTo6Q3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IHNzcmNfZmlsdGVyKSB7CisgIFJ0cEZpbGVTb3VyY2UqIHNvdXJjZSA9IG5ldyBSdHBG
aWxlU291cmNlKHNzcmNfZmlsdGVyKTsKICAgUlRDX0NIRUNLKHNvdXJjZS0+T3BlbkZpbGUoZmls
ZV9uYW1lKSk7CiAgIHJldHVybiBzb3VyY2U7CiB9CkBAIC03Miw3ICs3Myw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYWNrZXQ+IFJ0cEZpbGVTb3VyY2U6Ok5leHRQYWNrZXQoKSB7CiAgICAgICBjb250
aW51ZTsKICAgICB9CiAgICAgaWYgKGZpbHRlcl8udGVzdChwYWNrZXQtPmhlYWRlcigpLnBheWxv
YWRUeXBlKSB8fAotICAgICAgICAodXNlX3NzcmNfZmlsdGVyXyAmJiBwYWNrZXQtPmhlYWRlcigp
LnNzcmMgIT0gc3NyY18pKSB7CisgICAgICAgIChzc3JjX2ZpbHRlcl8gJiYgcGFja2V0LT5oZWFk
ZXIoKS5zc3JjICE9ICpzc3JjX2ZpbHRlcl8pKSB7CiAgICAgICAvLyBUaGlzIHBheWxvYWQgdHlw
ZSBzaG91bGQgYmUgZmlsdGVyZWQgb3V0LiBDb250aW51ZSB0byB0aGUgbmV4dCBwYWNrZXQuCiAg
ICAgICBjb250aW51ZTsKICAgICB9CkBAIC04MCw4ICs4MSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGFja2V0PiBSdHBGaWxlU291cmNlOjpOZXh0UGFja2V0KCkgewogICB9CiB9CiAKLVJ0cEZpbGVT
b3VyY2U6OlJ0cEZpbGVTb3VyY2UoKQotICAgIDogUGFja2V0U291cmNlKCksIHBhcnNlcl8oUnRw
SGVhZGVyUGFyc2VyOjpDcmVhdGUoKSkge30KK1J0cEZpbGVTb3VyY2U6OlJ0cEZpbGVTb3VyY2Uo
YWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyKQorICAgIDogUGFja2V0U291cmNl
KCksCisgICAgICBwYXJzZXJfKFJ0cEhlYWRlclBhcnNlcjo6Q3JlYXRlKCkpLAorICAgICAgc3Ny
Y19maWx0ZXJfKHNzcmNfZmlsdGVyKSB7fQogCiBib29sIFJ0cEZpbGVTb3VyY2U6Ok9wZW5GaWxl
KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpIHsKICAgcnRwX3JlYWRlcl8ucmVzZXQoUnRw
RmlsZVJlYWRlcjo6Q3JlYXRlKFJ0cEZpbGVSZWFkZXI6OmtSdHBEdW1wLCBmaWxlX25hbWUpKTsK
QEAgLTg5LDcgKzkyLDcgQEAgYm9vbCBSdHBGaWxlU291cmNlOjpPcGVuRmlsZShjb25zdCBzdGQ6
OnN0cmluZyYgZmlsZV9uYW1lKSB7CiAgICAgcmV0dXJuIHRydWU7CiAgIHJ0cF9yZWFkZXJfLnJl
c2V0KFJ0cEZpbGVSZWFkZXI6OkNyZWF0ZShSdHBGaWxlUmVhZGVyOjprUGNhcCwgZmlsZV9uYW1l
KSk7CiAgIGlmICghcnRwX3JlYWRlcl8pIHsKLSAgICBSVENfRkFUQUwoKSA8PCAiQ291bGRuJ3Qg
b3BlbiBpbnB1dCBmaWxlIGFzIGVpdGhlciBhIHJ0cGR1bXAgb3IgLnBjYXAuIE5vdGUgIgorICAg
IEZBVEFMKCkgPDwgIkNvdWxkbid0IG9wZW4gaW5wdXQgZmlsZSBhcyBlaXRoZXIgYSBydHBkdW1w
IG9yIC5wY2FwLiBOb3RlICIKICAgICAgICAgICAgICAgICJ0aGF0IC5wY2FwbmcgaXMgbm90IHN1
cHBvcnRlZC4iOwogICB9CiAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
dG9vbHMvcnRwX2ZpbGVfc291cmNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3Vy
Y2UuaAppbmRleCAwMTMzMzNiODlhMzY5ZmEyMjJmNDdjYzI4OTBmMWY3OWFlZTc0ZmExLi4wMmFi
ODk3NTY2MTkwYjMzNTIxNWNjNjgzZjk2MDliOWJmNzIwZThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBf
ZmlsZV9zb3VyY2UuaApAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVk
ZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXRfc291cmNlLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKQEAgLTMzLDcg
KzM0LDkgQEAgY2xhc3MgUnRwRmlsZVNvdXJjZSA6IHB1YmxpYyBQYWNrZXRTb3VyY2UgewogIHB1
YmxpYzoKICAgLy8gQ3JlYXRlcyBhbiBSdHBGaWxlU291cmNlIHJlYWRpbmcgZnJvbSB8ZmlsZV9u
YW1lfC4gSWYgdGhlIGZpbGUgY2Fubm90IGJlCiAgIC8vIG9wZW5lZCwgb3IgaGFzIHRoZSB3cm9u
ZyBmb3JtYXQsIE5VTEwgd2lsbCBiZSByZXR1cm5lZC4KLSAgc3RhdGljIFJ0cEZpbGVTb3VyY2Uq
IENyZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lKTsKKyAgc3RhdGljIFJ0cEZpbGVT
b3VyY2UqIENyZWF0ZSgKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUsCisgICAg
ICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gc3NyY19maWx0ZXIgPSBhYnNsOjpudWxsb3B0KTsK
IAogICAvLyBDaGVja3Mgd2hldGhlciBhIGZpbGVzIGlzIGEgdmFsaWQgUlRQIGR1bXAgb3IgUENB
UCAoV2lyZXNoYXJrKSBmaWxlLgogICBzdGF0aWMgYm9vbCBWYWxpZFJ0cER1bXAoY29uc3Qgc3Rk
OjpzdHJpbmcmIGZpbGVfbmFtZSk7CkBAIC01MSwxMiArNTQsMTMgQEAgY2xhc3MgUnRwRmlsZVNv
dXJjZSA6IHB1YmxpYyBQYWNrZXRTb3VyY2UgewogICBzdGF0aWMgY29uc3QgaW50IGtSdHBGaWxl
SGVhZGVyU2l6ZSA9IDQgKyA0ICsgNCArIDIgKyAyOwogICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQ
YWNrZXRIZWFkZXJTaXplID0gODsKIAotICBSdHBGaWxlU291cmNlKCk7CisgIGV4cGxpY2l0IFJ0
cEZpbGVTb3VyY2UoYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyKTsKIAogICBi
b29sIE9wZW5GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpOwogCiAgIHN0ZDo6dW5p
cXVlX3B0cjxSdHBGaWxlUmVhZGVyPiBydHBfcmVhZGVyXzsKICAgc3RkOjp1bmlxdWVfcHRyPFJ0
cEhlYWRlclBhcnNlcj4gcGFyc2VyXzsKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+
IHNzcmNfZmlsdGVyXzsKIAogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJ0cEZpbGVT
b3VyY2UpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9qaXR0ZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS90b29scy9ydHBfaml0dGVyLmNjCmluZGV4IDNjNDk0NDMwMzZjMzlmNzMy
MmVmMWU4ZTYzN2MzMmQ2MTY4MTk3ODkuLjkyYTdhOGQyMTUwYWZiNDRlMTdmY2M2ZDNlMTQ5MDVm
Njc4ODRhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9qaXR0ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ppdHRlci5jYwpAQCAtMjMsNyArMjMsNyBAQCBuYW1l
c3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIG5hbWVzcGFjZSB7CiAKLURFRklORV9i
b29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgaGVscCBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2Jv
b2woaGVscCwgZmFsc2UsICJQcmludCBoZWxwIG1lc3NhZ2UiKTsKIAogY29uc3RleHByIHNpemVf
dCBrUnRwRHVtcEhlYWRlckxlbmd0aCA9IDg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvRW5j
b2RlRGVjb2RlVGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvRW5jb2RlRGVjb2RlVGVzdC5jYwppbmRleCBj
NmYzZjhjOWYyNTYyZDQ5MmU0OGRkZTM1NDY1NDg1M2M2MWQyNWViLi4yNDA4MzY2ODhjZjBjZmFl
MjMzMWFmODU4MjY3MzJkYzZlMjlkOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L0VuY29kZURl
Y29kZVRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9FbmNvZGVEZWNvZGVUZXN0LmNjCkBAIC0xNCw5
ICsxNCw5IEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5j
bHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9i
dWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2Rl
Y3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlw
ZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9hdWRpb19mb3JtYXRfY29udmVyc2lvbi5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvdXRpbGl0eS5oIgpAQCAtMjQ4LDExICsyNDgsMTEg
QEAgdm9pZCBFbmNvZGVEZWNvZGVUZXN0OjpQZXJmb3JtKCkgewogCiAgIGZvciAoaW50IG4gPSAw
OyBuIDwgbnVtQ29kZWNzOyBuKyspIHsKICAgICBFWFBFQ1RfRVEoMCwgYWNtLT5Db2RlYyhuLCAm
c2VuZENvZGVjVG1wKSk7Ci0gICAgaWYgKFNUUl9DQVNFX0NNUChzZW5kQ29kZWNUbXAucGxuYW1l
LCAidGVsZXBob25lLWV2ZW50IikgPT0gMCkgeworICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVD
YXNlKHNlbmRDb2RlY1RtcC5wbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSkgewogICAgICAgbnVt
UGFyc1tuXSA9IDA7Ci0gICAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAoc2VuZENvZGVjVG1wLnBs
bmFtZSwgImNuIikgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2Fz
ZShzZW5kQ29kZWNUbXAucGxuYW1lLCAiY24iKSkgewogICAgICAgbnVtUGFyc1tuXSA9IDA7Ci0g
ICAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAoc2VuZENvZGVjVG1wLnBsbmFtZSwgInJlZCIpID09
IDApIHsKKyAgICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uoc2VuZENvZGVjVG1w
LnBsbmFtZSwgInJlZCIpKSB7CiAgICAgICBudW1QYXJzW25dID0gMDsKICAgICB9IGVsc2UgaWYg
KHNlbmRDb2RlY1RtcC5jaGFubmVscyA9PSAyKSB7CiAgICAgICBudW1QYXJzW25dID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL3Rlc3QvVGVzdFJlZEZlYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvVGVzdFJlZEZl
Yy5jYwppbmRleCBjNTZmZWQ5NWRhYjk2ZGM1NTJjMDE5YjJiZDIyYTc4NWNjYTYwZThhLi44YmIz
OTcxMzczZGE3ZjA3MjEwODFhNzIxYjc1ZDM3NGU0OTQ5NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90
ZXN0L1Rlc3RSZWRGZWMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9UZXN0UmVkRmVjLmNjCkBAIC0xNzMs
MTQgKzE3MywxNCBAQCB2b2lkIFRlc3RSZWRGZWM6OlJlZ2lzdGVyU2VuZENvZGVjKAogICBhdXRv
IGVuY29kZXIgPSBlbmNvZGVyX2ZhY3RvcnlfLT5NYWtlQXVkaW9FbmNvZGVyKHBheWxvYWRfdHlw
ZSwgY29kZWNfZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6Om51bGxvcHQpOwogICBFWFBFQ1RfTkUoZW5jb2RlciwgbnVsbHB0
cik7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoY29kZWNfZm9ybWF0Lm5hbWUuY19zdHIoKSwgIm9wdXMi
KSAhPSAwKSB7CisgIGlmICghYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19mb3JtYXQubmFt
ZSwgIm9wdXMiKSkgewogICAgIGlmICh2YWRfbW9kZS5oYXNfdmFsdWUoKSkgewotICAgICAgQXVk
aW9FbmNvZGVyQ25nOjpDb25maWcgY29uZmlnOworICAgICAgQXVkaW9FbmNvZGVyQ25nQ29uZmln
IGNvbmZpZzsKICAgICAgIGNvbmZpZy5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShlbmNvZGVy
KTsKICAgICAgIGNvbmZpZy5udW1fY2hhbm5lbHMgPSAxOwogICAgICAgY29uZmlnLnBheWxvYWRf
dHlwZSA9IGNuX3BheWxvYWRfdHlwZTsKICAgICAgIGNvbmZpZy52YWRfbW9kZSA9IHZhZF9tb2Rl
LnZhbHVlKCk7Ci0gICAgICBlbmNvZGVyID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVy
Q25nPihzdGQ6Om1vdmUoY29uZmlnKSk7CisgICAgICBlbmNvZGVyID0gQ3JlYXRlQ29tZm9ydE5v
aXNlRW5jb2RlcihzdGQ6Om1vdmUoY29uZmlnKSk7CiAgICAgICBFWFBFQ1RfRVEodHJ1ZSwKICAg
ICAgICAgICAgICAgICBvdGhlcl9hY20tPlJlZ2lzdGVyUmVjZWl2ZUNvZGVjKAogICAgICAgICAg
ICAgICAgICAgICBjbl9wYXlsb2FkX3R5cGUsIHsiQ04iLCBjb2RlY19mb3JtYXQuY2xvY2tyYXRl
X2h6LCAxfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9UZXN0U3RlcmVvLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
dGVzdC9UZXN0U3RlcmVvLmNjCmluZGV4IGZkNjlmZDI2MjYyMmUzMTQzNjUxZGE4N2Y0ZjI1MWJi
OGQ4MzM2YTEuLmJmOGUxODk0ZDBlNDFiOTM2MzIyZGQ1ZjdkYjRmNTFiZDAwNDJlMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL3Rlc3QvVGVzdFN0ZXJlby5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RTdGVy
ZW8uY2MKQEAgLTEyLDkgKzEyLDkgQEAKIAogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRp
bl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1
aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgi
ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvYXVkaW9fZm9ybWF0X2NvbnZlcnNpb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L3V0aWxpdHkuaCIKQEAgLTYyNiwxNCArNjI2
LDE0IEBAIHZvaWQgVGVzdFN0ZXJlbzo6UmVnaXN0ZXJTZW5kQ29kZWMoY2hhciBzaWRlLAogICBB
U1NFUlRfVFJVRShteV9hY20gIT0gTlVMTCk7CiAKICAgYXV0byBlbmNvZGVyX2ZhY3RvcnkgPSBD
cmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpOwotICBjb25zdCBpbnQgY2xvY2tyYXRl
X2h6ID0gU1RSX0NBU0VfQ01QKGNvZGVjX25hbWUsICJnNzIyIikgPT0gMAorICBjb25zdCBpbnQg
Y2xvY2tyYXRlX2h6ID0gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19uYW1lLCAiZzcyMiIp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzYW1wbGluZ19mcmVxX2h6IC8gMgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2FtcGxpbmdfZnJlcV9oejsKICAgY29u
c3Qgc3RkOjpzdHJpbmcgcHRpbWUgPSBydGM6OlRvU3RyaW5nKHJ0Yzo6Q2hlY2tlZERpdkV4YWN0
KAogICAgICAgcGFja19zaXplLCBydGM6OkNoZWNrZWREaXZFeGFjdChzYW1wbGluZ19mcmVxX2h6
LCAxMDAwKSkpOwogICBTZHBBdWRpb0Zvcm1hdDo6UGFyYW1ldGVycyBwYXJhbXMgPSB7eyJwdGlt
ZSIsIHB0aW1lfX07CiAgIFJUQ19DSEVDSyhjaGFubmVscyA9PSAxIHx8IGNoYW5uZWxzID09IDIp
OwotICBpZiAoU1RSX0NBU0VfQ01QKGNvZGVjX25hbWUsICJvcHVzIikgPT0gMCkgeworICBpZiAo
YWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19uYW1lLCAib3B1cyIpKSB7CiAgICAgaWYgKGNo
YW5uZWxzID09IDIpIHsKICAgICAgIHBhcmFtc1sic3RlcmVvIl0gPSAiMSI7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvdGVzdC9UZXN0VkFERFRYLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9UZXN0VkFERFRY
LmNjCmluZGV4IDRmMDJlZGFhODM3NDRjMTkzYjBlNzQyZWMyMmY3ODczOGUzZThlYmEuLjA5YzY5
ZjljNmJiZTU2NjA5NmZhN2JmMmNhYTQxZmVkNWY3MWFlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rl
c3QvVGVzdFZBRERUWC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RWQUREVFguY2MKQEAgLTEyLDYg
KzEyLDcgQEAKIAogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9t
YXRjaC5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
X3RlbXBsYXRlLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2Zh
Y3RvcnlfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9f
ZGVjb2Rlcl9pbGJjLmgiCkBAIC04MSwxMyArODIsMTMgQEAgYm9vbCBUZXN0VmFkRHR4OjpSZWdp
c3RlckNvZGVjKGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBjb2RlY19mb3JtYXQsCiAgIGF1dG8gZW5j
b2RlciA9IGVuY29kZXJfZmFjdG9yeV8tPk1ha2VBdWRpb0VuY29kZXIocGF5bG9hZF90eXBlLCBj
b2RlY19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWJzbDo6bnVsbG9wdCk7CiAgIGlmICh2YWRfbW9kZS5oYXNfdmFsdWUoKSAmJgot
ICAgICAgU1RSX0NBU0VfQ01QKGNvZGVjX2Zvcm1hdC5uYW1lLmNfc3RyKCksICJvcHVzIikgIT0g
MCkgewotICAgIEF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnIGNvbmZpZzsKKyAgICAgICFhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKGNvZGVjX2Zvcm1hdC5uYW1lLCAib3B1cyIpKSB7CisgICAgQXVkaW9F
bmNvZGVyQ25nQ29uZmlnIGNvbmZpZzsKICAgICBjb25maWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6
Om1vdmUoZW5jb2Rlcik7CiAgICAgY29uZmlnLm51bV9jaGFubmVscyA9IDE7CiAgICAgY29uZmln
LnBheWxvYWRfdHlwZSA9IGNuX3BheWxvYWRfdHlwZTsKICAgICBjb25maWcudmFkX21vZGUgPSB2
YWRfbW9kZS52YWx1ZSgpOwotICAgIGVuY29kZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0Vu
Y29kZXJDbmc+KHN0ZDo6bW92ZShjb25maWcpKTsKKyAgICBlbmNvZGVyID0gQ3JlYXRlQ29tZm9y
dE5vaXNlRW5jb2RlcihzdGQ6Om1vdmUoY29uZmlnKSk7CiAgICAgYWRkZWRfY29tZm9ydF9ub2lz
ZSA9IHRydWU7CiAgIH0KICAgY2hhbm5lbF8tPlNldElzU3RlcmVvKGVuY29kZXItPk51bUNoYW5u
ZWxzKCkgPiAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvaVNBQ1Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90
ZXN0L2lTQUNUZXN0LmNjCmluZGV4IGExMzBhZTNlNjZmZGFjOGIwMzEwMTY5MGEwZjA5NGRmZjFm
NmI2YmIuLmMzMzJmZTA4ZjExMTgzNjk0YjFhODllYjg5ZDFiNGEzMWMyOGI2YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL3Rlc3QvaVNBQ1Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9pU0FDVGVzdC5jYwpA
QCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPHRpbWUuaD4KICNlbmRpZgogCisjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGlu
X2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvaXNh
Yy9hdWRpb19lbmNvZGVyX2lzYWNfZmxvYXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvYXVkaW9fZm9ybWF0X2NvbnZlcnNpb24uaCIKQEAgLTkyLDEyICs5MywxMiBA
QCB2b2lkIElTQUNUZXN0OjpTZXR1cCgpIHsKICAgZm9yIChjb2RlY0NudHIgPSAwOyBjb2RlY0Nu
dHIgPCBBdWRpb0NvZGluZ01vZHVsZTo6TnVtYmVyT2ZDb2RlY3MoKTsKICAgICAgICBjb2RlY0Nu
dHIrKykgewogICAgIEVYUEVDVF9FUSgwLCBBdWRpb0NvZGluZ01vZHVsZTo6Q29kZWMoY29kZWND
bnRyLCAmY29kZWNQYXJhbSkpOwotICAgIGlmICghU1RSX0NBU0VfQ01QKGNvZGVjUGFyYW0ucGxu
YW1lLCAiSVNBQyIpICYmCisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWNQYXJh
bS5wbG5hbWUsICJJU0FDIikgJiYKICAgICAgICAgY29kZWNQYXJhbS5wbGZyZXEgPT0gMTYwMDAp
IHsKICAgICAgIG1lbWNweSgmX3BhcmFtSVNBQzE2a0h6LCAmY29kZWNQYXJhbSwgc2l6ZW9mKENv
ZGVjSW5zdCkpOwogICAgICAgX2lkSVNBQzE2a0h6ID0gY29kZWNDbnRyOwogICAgIH0KLSAgICBp
ZiAoIVNUUl9DQVNFX0NNUChjb2RlY1BhcmFtLnBsbmFtZSwgIklTQUMiKSAmJgorICAgIGlmIChh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjUGFyYW0ucGxuYW1lLCAiSVNBQyIpICYmCiAgICAg
ICAgIGNvZGVjUGFyYW0ucGxmcmVxID09IDMyMDAwKSB7CiAgICAgICBtZW1jcHkoJl9wYXJhbUlT
QUMzMmtIeiwgJmNvZGVjUGFyYW0sIHNpemVvZihDb2RlY0luc3QpKTsKICAgICAgIF9pZElTQUMz
MmtIeiA9IGNvZGVjQ250cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvdXRpbGl0eS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL3Rlc3QvdXRpbGl0eS5jYwppbmRleCA4M2MyNWI1MzdlNDVjMTgyNzBjZmMzM2U4Njk0NzU2
NDI1N2YzZjVkLi41M2Y4MDc3OTBlZjMzNzdhYjIwZWY0NzAwYTkxM2Q5MGFjYjI0ZDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy90ZXN0L3V0aWxpdHkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC91dGlsaXR5LmNj
CkBAIC0xNSw3ICsxNSw3IEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5n
Lmg+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRl
KQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oIgogI2luY2x1ZGUgInRlc3Qv
Z3Rlc3QuaCIKIApAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgRml4ZWRQYXlsb2FkVHlwZUNvZGVj
KGNvbnN0IGNoYXIqIHBheWxvYWROYW1lKSB7CiAgICAgICAiRzcyMiIsICJRQ0VMUCIsICJDTiIs
ICAiTVBBIiwgICJHNzI4IiwgIkc3MjkifTsKIAogICBmb3IgKGludCBuID0gMDsgbiA8IE5VTV9D
T0RFQ1NfV0lUSF9GSVhFRF9QQVlMT0FEX1RZUEU7IG4rKykgewotICAgIGlmICghU1RSX0NBU0Vf
Q01QKHBheWxvYWROYW1lLCBmaXhQYXlsb2FkVHlwZUNvZGVjc1tuXSkpIHsKKyAgICBpZiAoYWJz
bDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkTmFtZSwgZml4UGF5bG9hZFR5cGVDb2RlY3Nbbl0p
KSB7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL0JV
SUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19kZXZpY2UvQlVJTEQuZ24KaW5kZXggYjY5MDA1MDk4MTE5NDM5NWQ3YTA3NTg5NTE5
N2I3MWJkNzg1ZmE2Ny4uNjc0OTVhY2E3NzU1NmU3NTU5M2ExMzMxZDJlNWY1ODM4ZDQ0NGY4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19kZXZpY2UvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvQlVJTEQuZ24KQEAgLTI0LDYg
KzI0LDE2IEBAIGNvbmZpZygiYXVkaW9fZGV2aWNlX3dhcm5pbmdzX2NvbmZpZyIpIHsKICAgfQog
fQogCitydGNfc291cmNlX3NldCgiYXVkaW9fZGV2aWNlX2RlZmF1bHQiKSB7CisgIHZpc2liaWxp
dHkgPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImluY2x1ZGUvYXVkaW9fZGV2aWNlX2Rl
ZmF1bHQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmF1ZGlvX2RldmljZV9hcGkiLAorICBd
Cit9CisKIHJ0Y19zb3VyY2Vfc2V0KCJhdWRpb19kZXZpY2UiKSB7CiAgIHZpc2liaWxpdHkgPSBb
ICIqIiBdCiAgIHB1YmxpY19kZXBzID0gWwpAQCAtMjAzLDggKzIxMyw4IEBAIHJ0Y19zb3VyY2Vf
c2V0KCJhdWRpb19kZXZpY2VfaW1wbCIpIHsKICAgZGVwcyA9IFsKICAgICAiOmF1ZGlvX2Rldmlj
ZV9hcGkiLAogICAgICI6YXVkaW9fZGV2aWNlX2J1ZmZlciIsCisgICAgIjphdWRpb19kZXZpY2Vf
ZGVmYXVsdCIsCiAgICAgIjphdWRpb19kZXZpY2VfZ2VuZXJpYyIsCi0gICAgIi4uLy4uOndlYnJ0
Y19jb21tb24iLAogICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uL2NvbW1v
bl9hdWRpbyIsCiAgICAgIi4uLy4uL2NvbW1vbl9hdWRpbzpjb21tb25fYXVkaW9fYyIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2RldmljZS9hbmRyb2lkL2F1ZGlvX2RldmljZV91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2Fu
ZHJvaWQvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjCmluZGV4IGIwY2Y0MmVkZWM1M2EzMTU5NWY5
ZGI0Nzk1MmU0MDRmMGRiMGE2ODAuLjZlMDkxMzljNzliNjg4NTBmOGQ5MjJiYTk0NWM2ODc4NTI0
NzhkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2FuZHJvaWQvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fZGV2aWNlL2FuZHJvaWQvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjCkBAIC0yNSwxMCAr
MjUsMTAgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL21vY2tfYXVk
aW9fdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2Uvc2NvcGVkX3JlZl9wdHIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKLSNp
bmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmgiCiAjaW5jbHVk
ZSAidGVzdC9nbW9jay5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0
L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgpAQCAtMzY1LDcgKzM2NSw3IEBAIGNsYXNzIE1vY2tB
dWRpb1RyYW5zcG9ydEFuZHJvaWQgOiBwdWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0IHsK
IAogICAvLyBTZXQgZGVmYXVsdCBhY3Rpb25zIG9mIHRoZSBtb2NrIG9iamVjdC4gV2UgYXJlIGRl
bGVnYXRpbmcgdG8gZmFrZQogICAvLyBpbXBsZW1lbnRhdGlvbnMgKG9mIEF1ZGlvU3RyZWFtSW50
ZXJmYWNlKSBoZXJlLgotICB2b2lkIEhhbmRsZUNhbGxiYWNrcyhFdmVudFdyYXBwZXIqIHRlc3Rf
aXNfZG9uZSwKKyAgdm9pZCBIYW5kbGVDYWxsYmFja3MocnRjOjpFdmVudCogdGVzdF9pc19kb25l
LAogICAgICAgICAgICAgICAgICAgICAgICBBdWRpb1N0cmVhbUludGVyZmFjZSogYXVkaW9fc3Ry
ZWFtLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtX2NhbGxiYWNrcykgewogICAgIHRl
c3RfaXNfZG9uZV8gPSB0ZXN0X2lzX2RvbmU7CkBAIC00NDgsNyArNDQ4LDcgQEAgY2xhc3MgTW9j
a0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCA6IHB1YmxpYyB0ZXN0OjpNb2NrQXVkaW9UcmFuc3BvcnQg
ewogICBib29sIHJlY19tb2RlKCkgY29uc3QgeyByZXR1cm4gdHlwZV8gJiBrUmVjb3JkaW5nOyB9
CiAKICBwcml2YXRlOgotICBFdmVudFdyYXBwZXIqIHRlc3RfaXNfZG9uZV87CisgIHJ0Yzo6RXZl
bnQqIHRlc3RfaXNfZG9uZV87CiAgIHNpemVfdCBudW1fY2FsbGJhY2tzXzsKICAgaW50IHR5cGVf
OwogICBzaXplX3QgcGxheV9jb3VudF87CkBAIC00NjAsNyArNDYwLDcgQEAgY2xhc3MgTW9ja0F1
ZGlvVHJhbnNwb3J0QW5kcm9pZCA6IHB1YmxpYyB0ZXN0OjpNb2NrQXVkaW9UcmFuc3BvcnQgewog
Ly8gQXVkaW9EZXZpY2VUZXN0IHRlc3QgZml4dHVyZS4KIGNsYXNzIEF1ZGlvRGV2aWNlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDoKLSAgQXVkaW9EZXZpY2VUZXN0
KCkgOiB0ZXN0X2lzX2RvbmVfKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpIHsKKyAgQXVkaW9EZXZp
Y2VUZXN0KCkgewogICAgIC8vIE9uZS10aW1lIGluaXRpYWxpemF0aW9uIG9mIEpWTSBhbmQgYXBw
bGljYXRpb24gY29udGV4dC4gRW5zdXJlcyB0aGF0IHdlCiAgICAgLy8gY2FuIGRvIGNhbGxzIGJl
dHdlZW4gQysrIGFuZCBKYXZhLiBJbml0aWFsaXplcyBib3RoIEphdmEgYW5kIE9wZW5TTCBFUwog
ICAgIC8vIGltcGxlbWVudGF0aW9ucy4KQEAgLTYzOCw3ICs2MzgsNyBAQCBjbGFzcyBBdWRpb0Rl
dmljZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICByZXR1cm4gdm9sdW1lOwog
ICB9CiAKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gdGVzdF9pc19kb25lXzsKKyAg
cnRjOjpFdmVudCB0ZXN0X2lzX2RvbmVfOwogICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZXZp
Y2VNb2R1bGU+IGF1ZGlvX2RldmljZV87CiAgIEF1ZGlvUGFyYW1ldGVycyBwbGF5b3V0X3BhcmFt
ZXRlcnNfOwogICBBdWRpb1BhcmFtZXRlcnMgcmVjb3JkX3BhcmFtZXRlcnNfOwpAQCAtODY3LDE0
ICs4NjcsMTQgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RvcFJlY29yZGluZ1JlcXVpcmVz
SW5pdFRvUmVzdGFydCkgewogLy8gYXVkaW8gc2FtcGxlcyB0byBwbGF5IG91dCB1c2luZyB0aGUg
TmVlZE1vcmVQbGF5RGF0YSBjYWxsYmFjay4KIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0
UGxheW91dFZlcmlmeUNhbGxiYWNrcykgewogICBNb2NrQXVkaW9UcmFuc3BvcnRBbmRyb2lkIG1v
Y2soa1BsYXlvdXQpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgp
LCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRlc3Rf
aXNfZG9uZV8sIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOwogICBFWFBFQ1RfQ0FMTChtb2NrLCBO
ZWVkTW9yZVBsYXlEYXRhKHBsYXlvdXRfZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtCeXRlc1BlclNhbXBsZSwgcGxheW91dF9j
aGFubmVscygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlvdXRf
c2FtcGxlX3JhdGUoKSwgTm90TnVsbCgpLCBfLCBfLCBfKSkKICAgICAgIC5UaW1lcyhBdExlYXN0
KGtOdW1DYWxsYmFja3MpKTsKICAgRVhQRUNUX0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3Rl
ckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9u
ZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOworICB0ZXN0X2lzX2RvbmVfLldh
aXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOwogICBTdG9wUGxheW91dCgpOwogfQogCkBA
IC04ODQsNyArODg0LDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0VmVy
aWZ5Q2FsbGJhY2tzKSB7CiAvLyBkZWxheSBlc3RpbWF0ZXMgYXMgd2VsbCAoYXJndW1lbnQgIzYp
LgogVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3Mp
IHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCBtb2NrKGtSZWNvcmRpbmcpOwotICBtb2Nr
LkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBudWxscHRyLCBrTnVtQ2FsbGJh
Y2tzKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRlc3RfaXNfZG9uZV8sIG51bGxwdHIsIGtO
dW1DYWxsYmFja3MpOwogICBFWFBFQ1RfQ0FMTCgKICAgICAgIG1vY2ssIFJlY29yZGVkRGF0YUlz
QXZhaWxhYmxlKE5vdE51bGwoKSwgcmVjb3JkX2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtCeXRlc1BlclNhbXBsZSwgcmVjb3Jk
X2NoYW5uZWxzKCksCkBAIC04OTMsNyArODkzLDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwg
U3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKIAogICBFWFBFQ1RfRVEoMCwgYXVkaW9f
ZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFJlY29yZGlu
ZygpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsK
KyAgdGVzdF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAgU3Rv
cFJlY29yZGluZygpOwogfQogCkBAIC05MDEsNyArOTAxLDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNl
VGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKIC8vIGFjdGl2ZSBpbiBib3Ro
IGRpcmVjdGlvbnMuCiBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRBbmRSZWNv
cmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCBtb2Nr
KGtQbGF5b3V0IHwga1JlY29yZGluZyk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNf
ZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNhbGxi
YWNrcygmdGVzdF9pc19kb25lXywgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVDVF9D
QUxMKG1vY2ssIE5lZWRNb3JlUGxheURhdGEocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVy
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J5dGVzUGVyU2FtcGxl
LCBwbGF5b3V0X2NoYW5uZWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGxheW91dF9zYW1wbGVfcmF0ZSgpLCBOb3ROdWxsKCksIF8sIF8sIF8pKQpAQCAtOTE0LDcg
KzkxNCw3IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UGxheW91dEFuZFJlY29yZGlu
Z1ZlcmlmeUNhbGxiYWNrcykgewogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lz
dGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsKICAgU3RhcnRSZWNv
cmRpbmcoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25k
cyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAg
IFN0b3BSZWNvcmRpbmcoKTsKICAgU3RvcFBsYXlvdXQoKTsKIH0KQEAgLTkzMCwxMiArOTMwLDEx
IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFJ1blBsYXlvdXRXaXRoRmlsZUFzU291cmNlKSB7
CiAgIHN0ZDo6c3RyaW5nIGZpbGVfbmFtZSA9IEdldEZpbGVOYW1lKHBsYXlvdXRfc2FtcGxlX3Jh
dGUoKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxlQXVkaW9TdHJlYW0+IGZpbGVfYXVkaW9fc3Ry
ZWFtKAogICAgICAgbmV3IEZpbGVBdWRpb1N0cmVhbShudW1fY2FsbGJhY2tzLCBmaWxlX25hbWUs
IHBsYXlvdXRfc2FtcGxlX3JhdGUoKSkpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lz
X2RvbmVfLmdldCgpLCBmaWxlX2F1ZGlvX3N0cmVhbS5nZXQoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgbnVtX2NhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2Rv
bmVfLCBmaWxlX2F1ZGlvX3N0cmVhbS5nZXQoKSwgbnVtX2NhbGxiYWNrcyk7CiAgIC8vIFNldE1h
eFBsYXlvdXRWb2x1bWUoKTsKICAgRVhQRUNUX0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3Rl
ckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9u
ZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOworICB0ZXN0X2lzX2RvbmVfLldh
aXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOwogICBTdG9wUGxheW91dCgpOwogfQogCkBA
IC05NjQsMTMgKzk2MywxMyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBESVNBQkxFRF9SdW5Q
bGF5b3V0QW5kUmVjb3JkaW5nSW5GdWxsRHVwbGV4KSB7CiAgIE5pY2VNb2NrPE1vY2tBdWRpb1Ry
YW5zcG9ydEFuZHJvaWQ+IG1vY2soa1BsYXlvdXQgfCBrUmVjb3JkaW5nKTsKICAgc3RkOjp1bmlx
dWVfcHRyPEZpZm9BdWRpb1N0cmVhbT4gZmlmb19hdWRpb19zdHJlYW0oCiAgICAgICBuZXcgRmlm
b0F1ZGlvU3RyZWFtKHBsYXlvdXRfZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKSk7Ci0gIG1vY2su
SGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIGZpZm9fYXVkaW9fc3RyZWFtLmdl
dCgpLAorICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgZmlmb19hdWRpb19z
dHJlYW0uZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGtGdWxsRHVwbGV4VGltZUluU2Vj
ICoga051bUNhbGxiYWNrc1BlclNlY29uZCk7CiAgIFNldE1heFBsYXlvdXRWb2x1bWUoKTsKICAg
RVhQRUNUX0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2sp
KTsKICAgU3RhcnRSZWNvcmRpbmcoKTsKICAgU3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9u
ZV8tPldhaXQoCisgIHRlc3RfaXNfZG9uZV8uV2FpdCgKICAgICAgIHN0ZDo6bWF4KGtUZXN0VGlt
ZU91dEluTWlsbGlzZWNvbmRzLCAxMDAwICoga0Z1bGxEdXBsZXhUaW1lSW5TZWMpKTsKICAgU3Rv
cFBsYXlvdXQoKTsKICAgU3RvcFJlY29yZGluZygpOwpAQCAtOTk3LDE0ICs5OTYsMTQgQEAgVEVT
VF9GKEF1ZGlvRGV2aWNlVGVzdCwgRElTQUJMRURfTWVhc3VyZUxvb3BiYWNrTGF0ZW5jeSkgewog
ICBOaWNlTW9jazxNb2NrQXVkaW9UcmFuc3BvcnRBbmRyb2lkPiBtb2NrKGtQbGF5b3V0IHwga1Jl
Y29yZGluZyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxMYXRlbmN5TWVhc3VyaW5nQXVkaW9TdHJlYW0+
IGxhdGVuY3lfYXVkaW9fc3RyZWFtKAogICAgICAgbmV3IExhdGVuY3lNZWFzdXJpbmdBdWRpb1N0
cmVhbShwbGF5b3V0X2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSkpOwotICBtb2NrLkhhbmRsZUNh
bGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBsYXRlbmN5X2F1ZGlvX3N0cmVhbS5nZXQoKSwK
KyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRlc3RfaXNfZG9uZV8sIGxhdGVuY3lfYXVkaW9fc3Ry
ZWFtLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICBrTWVhc3VyZUxhdGVuY3lUaW1lSW5T
ZWMgKiBrTnVtQ2FsbGJhY2tzUGVyU2Vjb25kKTsKICAgRVhQRUNUX0VRKDAsIGF1ZGlvX2Rldmlj
ZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU2V0TWF4UGxheW91dFZvbHVt
ZSgpOwogICBEaXNhYmxlQnVpbHRJbkFFQ0lmQXZhaWxhYmxlKCk7CiAgIFN0YXJ0UmVjb3JkaW5n
KCk7CiAgIFN0YXJ0UGxheW91dCgpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KAorICB0ZXN0X2lz
X2RvbmVfLldhaXQoCiAgICAgICBzdGQ6Om1heChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcywg
MTAwMCAqIGtNZWFzdXJlTGF0ZW5jeVRpbWVJblNlYykpOwogICBTdG9wUGxheW91dCgpOwogICBT
dG9wUmVjb3JkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19kZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5jYwppbmRleCA1YzQ1NzgwNDI2Yjc4ZjkxNGE5
YjE5NTE2MTU2OGM0N2Q4MWQ4N2E1Li44ZjkyMGNmZmY4ZWE5YzM0YTM2NTU2MmI5NjhhYTBlN2I3
Yzc0ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2
aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuY2MKQEAgLTgsMTkgKzgsMTYgQEAKICAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAq
LwogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUg
PGNtYXRoPgotCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2J1
ZmZlci5oIgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGludD4KIAogI2luY2x1
ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNz
aW5nX2xpYnJhcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZp
Y2VfY29uZmlnLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2JpbmQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVk
ZS9tZXRyaWNzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
ZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuaAppbmRleCA3ZjBjZjgzYmFmN2Q3ZWE3ZDZlN2Jj
N2RjMDMzMTczNWViYmJlMWUzLi5iYmUyOTY5ZDQzNjk3NTU4YjY1ODc0ZTM1MDFlN2VkYTYwNzk5
MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2Uv
YXVkaW9fZGV2aWNlX2J1ZmZlci5oCkBAIC0xMSw5ICsxMSwxMSBAQAogI2lmbmRlZiBNT0RVTEVT
X0FVRElPX0RFVklDRV9BVURJT19ERVZJQ0VfQlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fREVWSUNFX0FVRElPX0RFVklDRV9CVUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgor
I2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPGF0b21pYz4KIAotI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlLmgiCisjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZGVmaW5lcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1
ZGlvX2RldmljZV9kYXRhX29ic2VydmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2RhdGFfb2Jz
ZXJ2ZXIuY2MKaW5kZXggNzIzZDFjOGJiZGM3NGM5YTljNmJkMjg1NmE0MTJhOTk4MDgxOGI4Yi4u
OTk0YzJlZmRmMzMyMTBhMWJmNDZmZjcyZWQzNzU5NjQ4NGI1ZTJhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZp
Y2UvYXVkaW9fZGV2aWNlX2RhdGFfb2JzZXJ2ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNl
X2RhdGFfb2JzZXJ2ZXIuY2MKQEAgLTksNiArOSw4IEBACiAgKi8KIAogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlX2RhdGFfb2JzZXJ2ZXIuaCIKKwor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlX2RlZmlu
ZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9y
ZWZjb3VudGVkb2JqZWN0LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9nZW5l
cmljLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfZ2VuZXJpYy5oCmluZGV4IGJlOWMwNzJjNDEyY2U4
NGIxYmM3NGE0OTMzMDVkMWIzOTg5YWZiMzAuLjdkM2M4M2UxMTk2MDNiYjZlYmRlOTIyNWE5ODU3
MjQzNTg3YmRmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9nZW5lcmljLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19kZXZpY2UvYXVkaW9fZGV2aWNlX2dlbmVyaWMuaApAQCAtMTEsOCArMTEsMTEgQEAKICNpZm5k
ZWYgQVVESU9fREVWSUNFX0FVRElPX0RFVklDRV9HRU5FUklDX0hfCiAjZGVmaW5lIEFVRElPX0RF
VklDRV9BVURJT19ERVZJQ0VfR0VORVJJQ19IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZV9kZWZpbmVzLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2Vf
aW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9pbXBsLmNjCmluZGV4IDkxZDYyMDhmZTFmZDFl
OGU4NTQ3MGE2OGVmNTJlOTU5MGE2NDIxOTguLjMxZDViNWVjZmM1MWU5YThjYTUzYjJjM2FlZTg5
ODY1OTgzZTA2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9pbXBsLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
ZGV2aWNlL2F1ZGlvX2RldmljZV9pbXBsLmNjCkBAIC0xMCwxMiArMTAsMTQgQEAKIAogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9pbXBsLmgiCiAKLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfY29uZmlnLmgiCisjaW5jbHVkZSA8
c3RkZGVmLmg+CisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2Vf
Y29uZmlnLmgiICAvLyBJV1lVIHByYWdtYToga2VlcAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
ZGV2aWNlL2F1ZGlvX2RldmljZV9nZW5lcmljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Jl
ZmNvdW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJz
L2luY2x1ZGUvbWV0cmljcy5oIgogCiAjaWYgZGVmaW5lZChfV0lOMzIpCkBAIC00NywxMCArNDks
MTAgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9tYWMvYXVkaW9fZGV2aWNlX21h
Yy5oIgogI2VuZGlmCiAjaWYgZGVmaW5lZChXRUJSVENfRFVNTVlfRklMRV9ERVZJQ0VTKQorI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2VfZmFj
dG9yeS5oIgogI2VuZGlmCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvYXVk
aW9fZGV2aWNlX2R1bW15LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkv
ZmlsZV9hdWRpb19kZXZpY2UuaCIKIAogI2RlZmluZSBDSEVDS2luaXRpYWxpemVkXygpIFwKICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZp
Y2VfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2ltcGwuaAppbmRleCA0ODFjZGYzMmUwMGRj
YTRhYzlmNzY2ZGYyNWIwZWRmYTFmMTE4N2Q2Li5hZmU1M2IzMjQwMzI4ZDk0MTc2OTg1OGUzNDU4
OThjZDdjMTIzODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfaW1wbC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
ZGV2aWNlL2F1ZGlvX2RldmljZV9pbXBsLmgKQEAgLTEzLDEyICsxMywxMSBAQAogCiAjaWYgZGVm
aW5lZChXRUJSVENfSU5DTFVERV9JTlRFUk5BTF9BVURJT19ERVZJQ0UpCiAKKyNpbmNsdWRlIDxz
dGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Rl
dmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZp
Y2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNl
L2F1ZGlvX2RldmljZV91bml0dGVzdC5jYwppbmRleCBhODJiYzRhMzNiYTNhN2RiYjQ2ZmM5MWIz
M2JmZWU3Yjk1NjU3MTlkLi4xYWEyOGU1ZDdjMTIzMGEzNzA2YTc5NzZmMGM2ODE5MTE3YTk5ZTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2Uv
YXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjCkBAIC01MDksNyArNTA5LDcgQEAgY2xhc3MgTW9ja0F1
ZGlvVHJhbnNwb3J0IDogcHVibGljIHRlc3Q6Ok1vY2tBdWRpb1RyYW5zcG9ydCB7CiBjbGFzcyBB
dWRpb0RldmljZVRlc3QKICAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08d2Vi
cnRjOjpBdWRpb0RldmljZU1vZHVsZTo6QXVkaW9MYXllcj4gewogIHByb3RlY3RlZDoKLSAgQXVk
aW9EZXZpY2VUZXN0KCkgOiBhdWRpb19sYXllcl8oR2V0UGFyYW0oKSksIGV2ZW50XyhmYWxzZSwg
ZmFsc2UpIHsKKyAgQXVkaW9EZXZpY2VUZXN0KCkgOiBhdWRpb19sYXllcl8oR2V0UGFyYW0oKSkg
ewogLy8gVE9ETyh3ZWJydGM6OTc3OCk6IFJlLWVuYWJsZSBvbiBUSFJFQURfU0FOSVRJWkVSPwog
I2lmICFkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVSKSAmJiAhZGVmaW5lZChNRU1PUllfU0FOSVRJ
WkVSKSAmJiBcCiAgICAgIWRlZmluZWQoV0VCUlRDX0RVTU1ZX0FVRElPX0JVSUxEKSAmJiAhZGVm
aW5lZChUSFJFQURfU0FOSVRJWkVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvYXVkaW9fZGV2
aWNlX2R1bW15LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9hdWRpb19kZXZpY2VfZHVtbXkuaAppbmRleCBkNzA5
Zjc3NjkxOWZjN2RjM2E0ZWQ4OTNjOWNlNWI2ZmRkN2M3NDU4Li4yYTI1NDEwOThlYTg2ODY5YWVl
MmRjMzFkOWQyOTIxZDFmMmZjODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9hdWRpb19kZXZp
Y2VfZHVtbXkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9hdWRpb19kZXZpY2VfZHVtbXkuaApAQCAtMTEs
OSArMTEsMTIgQEAKICNpZm5kZWYgQVVESU9fREVWSUNFX0FVRElPX0RFVklDRV9EVU1NWV9IXwog
I2RlZmluZSBBVURJT19ERVZJQ0VfQVVESU9fREVWSUNFX0RVTU1ZX0hfCiAKLSNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19k
ZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2
aWNlL2F1ZGlvX2RldmljZV9nZW5lcmljLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZp
Y2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Rldmlj
ZS9pbmNsdWRlL2F1ZGlvX2RldmljZV9kZWZpbmVzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZS5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1
bW15L2ZpbGVfYXVkaW9fZGV2aWNlLmNjCmluZGV4IGI5YWVhYTE1MDY1YTk4ODcwMDdjZTVlMjIy
ZmQ3MTEyOTIwMWZhZjQuLjI4NDhlZWFlMzUwODk1Nzg5YjAxYzYxNTMyMzZkZDYyMTNkNjJhMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNl
L2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlLmNjCkBAIC05LDkgKzksMTMgQEAKICAqLwogCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuaCIKKwor
I2luY2x1ZGUgPHN0cmluZy5oPgorCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3Ro
cmVhZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL3NsZWVwLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVf
YXVkaW9fZGV2aWNlLmgKaW5kZXggZjA3NjkwZTdlMDMzNzkwMjAyYmQ5MDRkZGE2ZDg2Zjk3MmJj
MjkyYi4uMjEwYzhmN2I4YmU2MDI2ZmIwMjBhMzMyZjlmYjZiMWIwNjM2NjI2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxl
X2F1ZGlvX2RldmljZS5oCkBAIC0yNiw3ICsyNiw2IEBAIGNsYXNzIFBsYXRmb3JtVGhyZWFkOwog
fSAgLy8gbmFtZXNwYWNlIHJ0YwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIEV2ZW50V3Jh
cHBlcjsKIAogLy8gVGhpcyBpcyBhIGZha2UgYXVkaW8gZGV2aWNlIHdoaWNoIHBsYXlzIGF1ZGlv
IGZyb20gYSBmaWxlIGFzIGl0cyBtaWNyb3Bob25lCiAvLyBhbmQgcGxheXMgb3V0IGludG8gYSBm
aWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2VfZmFjdG9yeS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlX2ZhY3RvcnkuY2MKaW5kZXggNmIzOGQ4
YmMwNTVhZTg1MzBkMWU1Mjg1YmFmNzA1ZDIyYWEwYjhmYi4uMDI3YjEzYmY1YzVjZTFiYmI3ZWU3
NmJmYzFmYTAxNGU3ZmZhZjU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19k
ZXZpY2VfZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0
b3J5LmNjCkBAIC0xMCw4ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Rldmlj
ZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0b3J5LmgiCiAKKyNpbmNsdWRlIDxzdGRpby5o
PgogI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KIAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19k
ZXZpY2VfZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2VfZmFjdG9yeS5o
CmluZGV4IDljZDViM2Q2MjU2NmY2YjJkYjI4NzBhYjM5YTE1ZjVjNzhmODE2ZjEuLjcyZjRhYjJi
Mzg0ZWQ5NDA3ZTE2NzY4OGM0NDBmNmRmOGExODlmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15
L2ZpbGVfYXVkaW9fZGV2aWNlX2ZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlv
X2RldmljZV9mYWN0b3J5LmgKQEAgLTExLDcgKzExLDcgQEAKICNpZm5kZWYgQVVESU9fREVWSUNF
X0ZJTEVfQVVESU9fREVWSUNFX0ZBQ1RPUllfSF8KICNkZWZpbmUgQVVESU9fREVWSUNFX0ZJTEVf
QVVESU9fREVWSUNFX0ZBQ1RPUllfSF8KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8g
Tk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9maW5lX2F1ZGlvX2J1ZmZlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNl
L2ZpbmVfYXVkaW9fYnVmZmVyLmNjCmluZGV4IDRhZjM0NGFlZjM3ODZhMzAwMjczMDc1ODViNjE3
MWU5MTQ1ZDIzNGUuLmI0ZjNjMzcxYWNlMzY5Y2RjZmQ0NWJiOTMyNjE2NDgwODMwYmQ0MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fZGV2aWNlL2ZpbmVfYXVkaW9fYnVmZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2ZpbmVfYXVk
aW9fYnVmZmVyLmNjCkBAIC0xMCw2ICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2RldmljZS9maW5lX2F1ZGlvX2J1ZmZlci5oIgogCisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNs
dWRlIDxjc3RyaW5nPgorCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2
aWNlX2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNl
X2RhdGFfb2JzZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlX2RhdGFfb2JzZXJ2
ZXIuaAppbmRleCAzYTRlZTk5NTE4YWE5MjZiMWNjMjE1ZjA2OTNiMzMwZmM5NzYxYmIxLi45NTlj
ZmE0NjYyYzY5NmI5MjZmZmYxN2M2OTQ1YzE1Mzg3YjFlMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9p
bmNsdWRlL2F1ZGlvX2RldmljZV9kYXRhX29ic2VydmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9h
dWRpb19kZXZpY2VfZGF0YV9vYnNlcnZlci5oCkBAIC0xMSw2ICsxMSw5IEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fREVWSUNFX0lOQ0xVREVfQVVESU9fREVWSUNFX0RBVEFfT0JTRVJWRVJfSF8K
ICNkZWZpbmUgTU9EVUxFU19BVURJT19ERVZJQ0VfSU5DTFVERV9BVURJT19ERVZJQ0VfREFUQV9P
QlNFUlZFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNl
L2luY2x1ZGUvdGVzdF9hdWRpb19kZXZpY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL3Rlc3RfYXVkaW9f
ZGV2aWNlLmNjCmluZGV4IDdkNTVjNDc1MjlhMjk2Zjk4ZDM4ZTlmZWU5YWMwODgyYTE5NDNjNmMu
LjhhZWExZDI0NWUyMjZiZTFkNzdhMzZkZjNiZjM1NTAyZTcxNmMzNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2
aWNlL2luY2x1ZGUvdGVzdF9hdWRpb19kZXZpY2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS90ZXN0
X2F1ZGlvX2RldmljZS5jYwpAQCAtOCw4ICs4LDExIEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KICNpbmNsdWRl
IDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxjc3RkbGliPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAgLTI4LDYgKzMxLDcg
QEAKICNpbmNsdWRlICJydGNfYmFzZS9yYW5kb20uaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZj
b3VudGVkb2JqZWN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0
aWxzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNTgsOCArNjIsNiBAQCBjbGFzcyBUZXN0
QXVkaW9EZXZpY2VNb2R1bGVJbXBsCiAgICAgICAgIGF1ZGlvX2NhbGxiYWNrXyhudWxscHRyKSwK
ICAgICAgICAgcmVuZGVyaW5nXyhmYWxzZSksCiAgICAgICAgIGNhcHR1cmluZ18oZmFsc2UpLAot
ICAgICAgICBkb25lX3JlbmRlcmluZ18odHJ1ZSwgdHJ1ZSksCi0gICAgICAgIGRvbmVfY2FwdHVy
aW5nXyh0cnVlLCB0cnVlKSwKICAgICAgICAgc3RvcF90aHJlYWRfKGZhbHNlKSB7CiAgICAgYXV0
byBnb29kX3NhbXBsZV9yYXRlID0gW10oaW50IHNyKSB7CiAgICAgICByZXR1cm4gc3IgPT0gODAw
MCB8fCBzciA9PSAxNjAwMCB8fCBzciA9PSAzMjAwMCB8fCBzciA9PSA0NDEwMCB8fApAQCAtMTA4
LDE0ICsxMTAsMTIgQEAgY2xhc3MgVGVzdEF1ZGlvRGV2aWNlTW9kdWxlSW1wbAogICAgIHJ0Yzo6
Q3JpdFNjb3BlIGNzKCZsb2NrXyk7CiAgICAgUlRDX0NIRUNLKHJlbmRlcmVyXyk7CiAgICAgcmVu
ZGVyaW5nXyA9IHRydWU7Ci0gICAgZG9uZV9yZW5kZXJpbmdfLlJlc2V0KCk7CiAgICAgcmV0dXJu
IDA7CiAgIH0KIAogICBpbnQzMl90IFN0b3BQbGF5b3V0KCkgewogICAgIHJ0Yzo6Q3JpdFNjb3Bl
IGNzKCZsb2NrXyk7CiAgICAgcmVuZGVyaW5nXyA9IGZhbHNlOwotICAgIGRvbmVfcmVuZGVyaW5n
Xy5TZXQoKTsKICAgICByZXR1cm4gMDsKICAgfQogCkBAIC0xMjMsMTQgKzEyMywxMiBAQCBjbGFz
cyBUZXN0QXVkaW9EZXZpY2VNb2R1bGVJbXBsCiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJmxvY2tf
KTsKICAgICBSVENfQ0hFQ0soY2FwdHVyZXJfKTsKICAgICBjYXB0dXJpbmdfID0gdHJ1ZTsKLSAg
ICBkb25lX2NhcHR1cmluZ18uUmVzZXQoKTsKICAgICByZXR1cm4gMDsKICAgfQogCiAgIGludDMy
X3QgU3RvcFJlY29yZGluZygpIHsKICAgICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwogICAg
IGNhcHR1cmluZ18gPSBmYWxzZTsKLSAgICBkb25lX2NhcHR1cmluZ18uU2V0KCk7CiAgICAgcmV0
dXJuIDA7CiAgIH0KIApAQCAtMTcyLDkgKzE3MCwxMCBAQCBjbGFzcyBUZXN0QXVkaW9EZXZpY2VN
b2R1bGVJbXBsCiAgICAgICAgICAgdWludDMyX3QgbmV3X21pY19sZXZlbCA9IDA7CiAgICAgICAg
ICAgaWYgKHJlY29yZGluZ19idWZmZXJfLnNpemUoKSA+IDApIHsKICAgICAgICAgICAgIGF1ZGlv
X2NhbGxiYWNrXy0+UmVjb3JkZWREYXRhSXNBdmFpbGFibGUoCi0gICAgICAgICAgICAgICAgcmVj
b3JkaW5nX2J1ZmZlcl8uZGF0YSgpLCByZWNvcmRpbmdfYnVmZmVyXy5zaXplKCksIDIsCi0gICAg
ICAgICAgICAgICAgY2FwdHVyZXJfLT5OdW1DaGFubmVscygpLCBjYXB0dXJlcl8tPlNhbXBsaW5n
RnJlcXVlbmN5KCksIDAsIDAsCi0gICAgICAgICAgICAgICAgMCwgZmFsc2UsIG5ld19taWNfbGV2
ZWwpOworICAgICAgICAgICAgICAgIHJlY29yZGluZ19idWZmZXJfLmRhdGEoKSwKKyAgICAgICAg
ICAgICAgICByZWNvcmRpbmdfYnVmZmVyXy5zaXplKCkgLyBjYXB0dXJlcl8tPk51bUNoYW5uZWxz
KCksCisgICAgICAgICAgICAgICAgMiAqIGNhcHR1cmVyXy0+TnVtQ2hhbm5lbHMoKSwgY2FwdHVy
ZXJfLT5OdW1DaGFubmVscygpLAorICAgICAgICAgICAgICAgIGNhcHR1cmVyXy0+U2FtcGxpbmdG
cmVxdWVuY3koKSwgMCwgMCwgMCwgZmFsc2UsIG5ld19taWNfbGV2ZWwpOwogICAgICAgICAgIH0K
ICAgICAgICAgICBpZiAoIWtlZXBfY2FwdHVyaW5nKSB7CiAgICAgICAgICAgICBjYXB0dXJpbmdf
ID0gZmFsc2U7CkBAIC0xODcsOSArMTg2LDEwIEBAIGNsYXNzIFRlc3RBdWRpb0RldmljZU1vZHVs
ZUltcGwKICAgICAgICAgICBpbnQ2NF90IG50cF90aW1lX21zID0gLTE7CiAgICAgICAgICAgY29u
c3QgaW50IHNhbXBsaW5nX2ZyZXF1ZW5jeSA9IHJlbmRlcmVyXy0+U2FtcGxpbmdGcmVxdWVuY3ko
KTsKICAgICAgICAgICBhdWRpb19jYWxsYmFja18tPk5lZWRNb3JlUGxheURhdGEoCi0gICAgICAg
ICAgICAgIFNhbXBsZXNQZXJGcmFtZShzYW1wbGluZ19mcmVxdWVuY3kpLCAyLCByZW5kZXJlcl8t
Pk51bUNoYW5uZWxzKCksCi0gICAgICAgICAgICAgIHNhbXBsaW5nX2ZyZXF1ZW5jeSwgcGxheW91
dF9idWZmZXJfLmRhdGEoKSwgc2FtcGxlc19vdXQsCi0gICAgICAgICAgICAgICZlbGFwc2VkX3Rp
bWVfbXMsICZudHBfdGltZV9tcyk7CisgICAgICAgICAgICAgIFNhbXBsZXNQZXJGcmFtZShzYW1w
bGluZ19mcmVxdWVuY3kpLCAyICogcmVuZGVyZXJfLT5OdW1DaGFubmVscygpLAorICAgICAgICAg
ICAgICByZW5kZXJlcl8tPk51bUNoYW5uZWxzKCksIHNhbXBsaW5nX2ZyZXF1ZW5jeSwKKyAgICAg
ICAgICAgICAgcGxheW91dF9idWZmZXJfLmRhdGEoKSwgc2FtcGxlc19vdXQsICZlbGFwc2VkX3Rp
bWVfbXMsCisgICAgICAgICAgICAgICZudHBfdGltZV9tcyk7CiAgICAgICAgICAgY29uc3QgYm9v
bCBrZWVwX3JlbmRlcmluZyA9CiAgICAgICAgICAgICAgIHJlbmRlcmVyXy0+UmVuZGVyKHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGludDE2X3Q+KAogICAgICAgICAgICAgICAgICAgcGxheW91dF9idWZm
ZXJfLmRhdGEoKSwgc2FtcGxlc19vdXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvdGVz
dF9hdWRpb19kZXZpY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvdGVzdF9hdWRpb19kZXZpY2UuaAppbmRl
eCA3ZDAzNGRjZThjNzBlY2RiNjI5YzJjNjUyYjhlNmIyMTRiZGE2YTRhLi45M2YwYjEzNjAxZmI3
OTBmNDI1NDhiNTQxZjNhZGJkNDAzZWFiYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL3Rl
c3RfYXVkaW9fZGV2aWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS90ZXN0X2F1ZGlvX2RldmljZS5o
CkBAIC0xMCwxNCArMTAsMTggQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19ERVZJQ0VfSU5DTFVE
RV9URVNUX0FVRElPX0RFVklDRV9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0RFVklDRV9JTkNM
VURFX1RFU1RfQVVESU9fREVWSUNFX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1
ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZV9kZWZpbmVzLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVk
X3JlZl9wdHIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2lv
cy9hdWRpb19kZXZpY2VfdW5pdHRlc3RfaW9zLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW9zL2F1ZGlvX2RldmljZV91
bml0dGVzdF9pb3MubW0KaW5kZXggNDdiODczZDRhOTliNzFhMGVkNmI2NjExNmU5Y2ViODlkZDQz
YTJkMi4uMTlmZjljOTIzMzIzNmE4YWU1MDJhZWIwMjQwMTE5MzU4ZDNjMmE0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19kZXZpY2UvaW9zL2F1ZGlvX2RldmljZV91bml0dGVzdF9pb3MubW0KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW9z
L2F1ZGlvX2RldmljZV91bml0dGVzdF9pb3MubW0KQEAgLTIyLDExICsyMiwxMSBAQAogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2lvcy9hdWRpb19kZXZpY2VfaW9zLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0
aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9m
b3JtYXRfbWFjcm9zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxz
LmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oIgog
I2luY2x1ZGUgInRlc3QvZ21vY2suaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVk
ZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKQEAgLTM3Miw3ICszNzIsNyBAQCBjbGFz
cyBNb2NrQXVkaW9UcmFuc3BvcnRJT1MgOiBwdWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0
IHsKIAogICAvLyBTZXQgZGVmYXVsdCBhY3Rpb25zIG9mIHRoZSBtb2NrIG9iamVjdC4gV2UgYXJl
IGRlbGVnYXRpbmcgdG8gZmFrZQogICAvLyBpbXBsZW1lbnRhdGlvbnMgKG9mIEF1ZGlvU3RyZWFt
SW50ZXJmYWNlKSBoZXJlLgotICB2b2lkIEhhbmRsZUNhbGxiYWNrcyhFdmVudFdyYXBwZXIqIHRl
c3RfaXNfZG9uZSwKKyAgdm9pZCBIYW5kbGVDYWxsYmFja3MocnRjOjpFdmVudCogdGVzdF9pc19k
b25lLAogICAgICAgICAgICAgICAgICAgICAgICBBdWRpb1N0cmVhbUludGVyZmFjZSogYXVkaW9f
c3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2NhbGxiYWNrcykgewog
ICAgIHRlc3RfaXNfZG9uZV8gPSB0ZXN0X2lzX2RvbmU7CkBAIC00NjEsNyArNDYxLDcgQEAgY2xh
c3MgTW9ja0F1ZGlvVHJhbnNwb3J0SU9TIDogcHVibGljIHRlc3Q6Ok1vY2tBdWRpb1RyYW5zcG9y
dCB7CiAgIGJvb2wgcmVjX21vZGUoKSBjb25zdCB7IHJldHVybiB0eXBlXyAmIGtSZWNvcmRpbmc7
IH0KIAogIHByaXZhdGU6Ci0gIEV2ZW50V3JhcHBlciogdGVzdF9pc19kb25lXzsKKyAgcnRjOjpF
dmVudCogdGVzdF9pc19kb25lXzsKICAgc2l6ZV90IG51bV9jYWxsYmFja3NfOwogICBpbnQgdHlw
ZV87CiAgIHNpemVfdCBwbGF5X2NvdW50XzsKQEAgLTQ3Miw3ICs0NzIsNyBAQCBjbGFzcyBNb2Nr
QXVkaW9UcmFuc3BvcnRJT1MgOiBwdWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0IHsKIC8v
IEF1ZGlvRGV2aWNlVGVzdCB0ZXN0IGZpeHR1cmUuCiBjbGFzcyBBdWRpb0RldmljZVRlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICBwcm90ZWN0ZWQ6Ci0gIEF1ZGlvRGV2aWNlVGVzdCgp
IDogdGVzdF9pc19kb25lXyhFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSB7CisgIEF1ZGlvRGV2aWNl
VGVzdCgpIHsKICAgICBvbGRfc2V2XyA9IHJ0Yzo6TG9nTWVzc2FnZTo6R2V0TG9nVG9EZWJ1Zygp
OwogICAgIC8vIFNldCBzdWl0YWJsZSBsb2dnaW5nIGxldmVsIGhlcmUuIENoYW5nZSB0byBydGM6
OkxTX0lORk8gZm9yIG1vcmUgdmVyYm9zZQogICAgIC8vIG91dHB1dC4gU2VlIHdlYnJ0Yy9ydGNf
YmFzZS9sb2dnaW5nLmggZm9yIGNvbXBsZXRlIGxpc3Qgb2Ygb3B0aW9ucy4KQEAgLTU3Miw3ICs1
NzIsNyBAQCBjbGFzcyBBdWRpb0RldmljZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsK
ICAgICBFWFBFQ1RfRkFMU0UoYXVkaW9fZGV2aWNlKCktPlJlY29yZGluZygpKTsKICAgfQogCi0g
IHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+IHRlc3RfaXNfZG9uZV87CisgIHJ0Yzo6RXZl
bnQgdGVzdF9pc19kb25lXzsKICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxl
PiBhdWRpb19kZXZpY2VfOwogICBBdWRpb1BhcmFtZXRlcnMgcGxheW91dF9wYXJhbWV0ZXJzXzsK
ICAgQXVkaW9QYXJhbWV0ZXJzIHJlY29yZF9wYXJhbWV0ZXJzXzsKQEAgLTY2Miw3ICs2NjIsNyBA
QCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBESVNBQkxFRF9TdGFydFBsYXlvdXRPblR3b0luc3Rh
bmNlcykgewogICAvLyBoYXMgYmVlbiBkb25lIHN1Y2Nlc3NmdWxseSBhbmQgdGhhdCB0aGVyZSBp
cyBubyBjb25mbGljdCB3aXRoIHRoZSBhbHJlYWR5CiAgIC8vIHBsYXlpbmcgZmlyc3QgQURNLgog
ICBNb2NrQXVkaW9UcmFuc3BvcnRJT1MgbW9jazIoa1BsYXlvdXQpOwotICBtb2NrMi5IYW5kbGVD
YWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7Cisg
IG1vY2syLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVsbHB0ciwga051bUNhbGxi
YWNrcyk7CiAgIEVYUEVDVF9DQUxMKAogICAgICAgbW9jazIsIE5lZWRNb3JlUGxheURhdGEocGxh
eW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCksIGtCeXRlc1BlclNhbXBsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBsYXlvdXRfY2hhbm5lbHMoKSwgcGxheW91dF9zYW1wbGVf
cmF0ZSgpLApAQCAtNjcxLDcgKzY3MSw3IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIERJU0FC
TEVEX1N0YXJ0UGxheW91dE9uVHdvSW5zdGFuY2VzKSB7CiAgIEVYUEVDVF9FUSgwLCBzZWNvbmRf
YXVkaW9fZGV2aWNlLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2syKSk7CiAgIEVYUEVDVF9F
USgwLCBzZWNvbmRfYXVkaW9fZGV2aWNlLT5TdGFydFBsYXlvdXQoKSk7CiAgIEVYUEVDVF9UUlVF
KHNlY29uZF9hdWRpb19kZXZpY2UtPlBsYXlpbmcoKSk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQo
a1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOworICB0ZXN0X2lzX2RvbmVfLldhaXQoa1Rlc3RU
aW1lT3V0SW5NaWxsaXNlY29uZHMpOwogICBFWFBFQ1RfRVEoMCwgc2Vjb25kX2F1ZGlvX2Rldmlj
ZS0+U3RvcFBsYXlvdXQoKSk7CiAgIEVYUEVDVF9GQUxTRShzZWNvbmRfYXVkaW9fZGV2aWNlLT5Q
bGF5aW5nKCkpOwogICBFWFBFQ1RfRkFMU0Uoc2Vjb25kX2F1ZGlvX2RldmljZS0+UGxheW91dElz
SW5pdGlhbGl6ZWQoKSk7CkBAIC02ODMsMTQgKzY4MywxNCBAQCBURVNUX0YoQXVkaW9EZXZpY2VU
ZXN0LCBESVNBQkxFRF9TdGFydFBsYXlvdXRPblR3b0luc3RhbmNlcykgewogLy8gYXVkaW8gc2Ft
cGxlcyB0byBwbGF5IG91dCB1c2luZyB0aGUgTmVlZE1vcmVQbGF5RGF0YSBjYWxsYmFjay4KIFRF
U1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UGxheW91dFZlcmlmeUNhbGxiYWNrcykgewogICBN
b2NrQXVkaW9UcmFuc3BvcnRJT1MgbW9jayhrUGxheW91dCk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJh
Y2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOworICBtb2Nr
LkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7
CiAgIEVYUEVDVF9DQUxMKG1vY2ssIE5lZWRNb3JlUGxheURhdGEocGxheW91dF9mcmFtZXNfcGVy
XzEwbXNfYnVmZmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J5
dGVzUGVyU2FtcGxlLCBwbGF5b3V0X2NoYW5uZWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGxheW91dF9zYW1wbGVfcmF0ZSgpLCBOb3ROdWxsKCksIF8sIF8sIF8p
KQogICAgICAgLlRpbWVzKEF0TGVhc3Qoa051bUNhbGxiYWNrcykpOwogICBFWFBFQ1RfRVEoMCwg
YXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFBs
YXlvdXQoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25k
cyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAg
IFN0b3BQbGF5b3V0KCk7CiB9CiAKQEAgLTY5OCw3ICs2OTgsNyBAQCBURVNUX0YoQXVkaW9EZXZp
Y2VUZXN0LCBTdGFydFBsYXlvdXRWZXJpZnlDYWxsYmFja3MpIHsKIC8vIGF1ZGlvIHNhbXBsZXMg
dmlhIHRoZSBSZWNvcmRlZERhdGFJc0F2YWlsYWJsZSBjYWxsYmFjay4KIFRFU1RfRihBdWRpb0Rl
dmljZVRlc3QsIFN0YXJ0UmVjb3JkaW5nVmVyaWZ5Q2FsbGJhY2tzKSB7CiAgIE1vY2tBdWRpb1Ry
YW5zcG9ydElPUyBtb2NrKGtSZWNvcmRpbmcpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0
X2lzX2RvbmVfLmdldCgpLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKKyAgbW9jay5IYW5kbGVD
YWxsYmFja3MoJnRlc3RfaXNfZG9uZV8sIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOwogICBFWFBF
Q1RfQ0FMTChtb2NrLAogICAgICAgICAgICAgICBSZWNvcmRlZERhdGFJc0F2YWlsYWJsZSgKICAg
ICAgICAgICAgICAgICAgIE5vdE51bGwoKSwgcmVjb3JkX2ZyYW1lc19wZXJfMTBtc19idWZmZXIo
KSwga0J5dGVzUGVyU2FtcGxlLApAQCAtNzA4LDcgKzcwOCw3IEBAIFRFU1RfRihBdWRpb0Rldmlj
ZVRlc3QsIFN0YXJ0UmVjb3JkaW5nVmVyaWZ5Q2FsbGJhY2tzKSB7CiAKICAgRVhQRUNUX0VRKDAs
IGF1ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3RhcnRS
ZWNvcmRpbmcoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vj
b25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7
CiAgIFN0b3BSZWNvcmRpbmcoKTsKIH0KIApAQCAtNzE2LDcgKzcxNiw3IEBAIFRFU1RfRihBdWRp
b0RldmljZVRlc3QsIFN0YXJ0UmVjb3JkaW5nVmVyaWZ5Q2FsbGJhY2tzKSB7CiAvLyBhY3RpdmUg
aW4gYm90aCBkaXJlY3Rpb25zLgogVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0
QW5kUmVjb3JkaW5nVmVyaWZ5Q2FsbGJhY2tzKSB7CiAgIE1vY2tBdWRpb1RyYW5zcG9ydElPUyBt
b2NrKGtQbGF5b3V0IHwga1JlY29yZGluZyk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3Rf
aXNfZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNh
bGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVD
VF9DQUxMKG1vY2ssIE5lZWRNb3JlUGxheURhdGEocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVm
ZmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J5dGVzUGVyU2Ft
cGxlLCBwbGF5b3V0X2NoYW5uZWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGxheW91dF9zYW1wbGVfcmF0ZSgpLCBOb3ROdWxsKCksIF8sIF8sIF8pKQpAQCAtNzMw
LDcgKzczMCw3IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UGxheW91dEFuZFJlY29y
ZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJl
Z2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsKICAgU3RhcnRS
ZWNvcmRpbmcoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vj
b25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7
CiAgIFN0b3BSZWNvcmRpbmcoKTsKICAgU3RvcFBsYXlvdXQoKTsKIH0KQEAgLTc0NiwxMiArNzQ2
LDExIEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFJ1blBsYXlvdXRXaXRoRmlsZUFzU291cmNl
KSB7CiAgIHN0ZDo6c3RyaW5nIGZpbGVfbmFtZSA9IEdldEZpbGVOYW1lKHBsYXlvdXRfc2FtcGxl
X3JhdGUoKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxlQXVkaW9TdHJlYW0+IGZpbGVfYXVkaW9f
c3RyZWFtKAogICAgICAgbmV3IEZpbGVBdWRpb1N0cmVhbShudW1fY2FsbGJhY2tzLCBmaWxlX25h
bWUsIHBsYXlvdXRfc2FtcGxlX3JhdGUoKSkpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0
X2lzX2RvbmVfLmdldCgpLCBmaWxlX2F1ZGlvX3N0cmVhbS5nZXQoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgbnVtX2NhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lz
X2RvbmVfLCBmaWxlX2F1ZGlvX3N0cmVhbS5nZXQoKSwgbnVtX2NhbGxiYWNrcyk7CiAgIC8vIFNl
dE1heFBsYXlvdXRWb2x1bWUoKTsKICAgRVhQRUNUX0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdp
c3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNf
ZG9uZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOworICB0ZXN0X2lzX2RvbmVf
LldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOwogICBTdG9wUGxheW91dCgpOwogfQog
CkBAIC03ODAsMTQgKzc3OSwxMyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBSdW5QbGF5b3V0
QW5kUmVjb3JkaW5nSW5GdWxsRHVwbGV4KSB7CiAgIE5pY2VNb2NrPE1vY2tBdWRpb1RyYW5zcG9y
dElPUz4gbW9jayhrUGxheW91dCB8IGtSZWNvcmRpbmcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8Rmlm
b0F1ZGlvU3RyZWFtPiBmaWZvX2F1ZGlvX3N0cmVhbSgKICAgICAgIG5ldyBGaWZvQXVkaW9TdHJl
YW0ocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpKTsKLSAgbW9jay5IYW5kbGVDYWxs
YmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgZmlmb19hdWRpb19zdHJlYW0uZ2V0KCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIGtGdWxsRHVwbGV4VGltZUluU2VjICoga051bUNhbGxiYWNrc1Bl
clNlY29uZCk7CisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKAorICAgICAgJnRlc3RfaXNfZG9uZV8s
IGZpZm9fYXVkaW9fc3RyZWFtLmdldCgpLCBrRnVsbER1cGxleFRpbWVJblNlYyAqIGtOdW1DYWxs
YmFja3NQZXJTZWNvbmQpOwogICAvLyBTZXRNYXhQbGF5b3V0Vm9sdW1lKCk7CiAgIEVYUEVDVF9F
USgwLCBhdWRpb19kZXZpY2UoKS0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0
YXJ0UmVjb3JkaW5nKCk7CiAgIFN0YXJ0UGxheW91dCgpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0
KAotICAgICAgc3RkOjptYXgoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMsIDEwMDAgKiBrRnVs
bER1cGxleFRpbWVJblNlYykpOworICB0ZXN0X2lzX2RvbmVfLldhaXQoc3RkOjptYXgoa1Rlc3RU
aW1lT3V0SW5NaWxsaXNlY29uZHMsIDEwMDAgKiBrRnVsbER1cGxleFRpbWVJblNlYykpOwogICBT
dG9wUGxheW91dCgpOwogICBTdG9wUmVjb3JkaW5nKCk7CiAgIEVYUEVDVF9MRShmaWZvX2F1ZGlv
X3N0cmVhbS0+YXZlcmFnZV9zaXplKCksIDEwdSk7CkBAIC04MDksMTUgKzgwNywxNSBAQCBURVNU
X0YoQXVkaW9EZXZpY2VUZXN0LCBESVNBQkxFRF9NZWFzdXJlTG9vcGJhY2tMYXRlbmN5KSB7CiAg
IE5pY2VNb2NrPE1vY2tBdWRpb1RyYW5zcG9ydElPUz4gbW9jayhrUGxheW91dCB8IGtSZWNvcmRp
bmcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8TGF0ZW5jeU1lYXN1cmluZ0F1ZGlvU3RyZWFtPiBsYXRl
bmN5X2F1ZGlvX3N0cmVhbSgKICAgICAgIG5ldyBMYXRlbmN5TWVhc3VyaW5nQXVkaW9TdHJlYW0o
cGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpKTsKLSAgbW9jay5IYW5kbGVDYWxsYmFj
a3ModGVzdF9pc19kb25lXy5nZXQoKSwgbGF0ZW5jeV9hdWRpb19zdHJlYW0uZ2V0KCksCisgIG1v
Y2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLAorICAgICAgICAgICAgICAgICAgICAg
ICBsYXRlbmN5X2F1ZGlvX3N0cmVhbS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAga01l
YXN1cmVMYXRlbmN5VGltZUluU2VjICoga051bUNhbGxiYWNrc1BlclNlY29uZCk7CiAgIEVYUEVD
VF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAg
IC8vIFNldE1heFBsYXlvdXRWb2x1bWUoKTsKICAgLy8gRGlzYWJsZUJ1aWx0SW5BRUNJZkF2YWls
YWJsZSgpOwogICBTdGFydFJlY29yZGluZygpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9p
c19kb25lXy0+V2FpdCgKLSAgICAgIHN0ZDo6bWF4KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRz
LCAxMDAwICoga01lYXN1cmVMYXRlbmN5VGltZUluU2VjKSk7CisgIHRlc3RfaXNfZG9uZV8uV2Fp
dChzdGQ6Om1heChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcywgMTAwMCAqIGtNZWFzdXJlTGF0
ZW5jeVRpbWVJblNlYykpOwogICBTdG9wUGxheW91dCgpOwogICBTdG9wUmVjb3JkaW5nKCk7CiAg
IC8vIFZlcmlmeSB0aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiB0cmFuc21pdHRlZCBpbXB1bHNl
cyBhcmUgZGV0ZWN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19kZXZpY2VfYWxz
YV9saW51eC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX2Fsc2FfbGludXguaAppbmRleCAz
ZDE1NTY1YjhkYzQ4MTQwMGFjMWE0ZTAyZWM2MDc4ZThjMTA5ODg3Li5kNjBkY2FmZGNlZDE2Y2Jj
YTdlZDM5MjNmMzQyY2YyYzEzZjdiNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19k
ZXZpY2VfYWxzYV9saW51eC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9hbHNhX2xp
bnV4LmgKQEAgLTI5LDcgKzI5LDYgQEAgdHlwZWRlZiB3ZWJydGM6OmFkbV9saW51eF9hbHNhOjpB
bHNhU3ltYm9sVGFibGUgV2ViUlRDQWxzYVN5bWJvbFRhYmxlOwogV2ViUlRDQWxzYVN5bWJvbFRh
YmxlKiBHZXRBbHNhU3ltYm9sVGFibGUoKTsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBF
dmVudFdyYXBwZXI7CiAKIGNsYXNzIEF1ZGlvRGV2aWNlTGludXhBTFNBIDogcHVibGljIEF1ZGlv
RGV2aWNlR2VuZXJpYyB7CiAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9f
ZGV2aWNlX3B1bHNlX2xpbnV4LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xp
bnV4LmNjCmluZGV4IDIxNTdhZjMyOGM2ZDNiMjM3NDIwYWFlZjc1OWQyY2VjODdmY2IyYzMuLjM3
MDZkOTE3NmVjZDgwZmU1NDk2ODMzMTNhMDcxYzA2ZWIzODNiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNl
L2xpbnV4L2F1ZGlvX2RldmljZV9wdWxzZV9saW51eC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRp
b19kZXZpY2VfcHVsc2VfbGludXguY2MKQEAgLTgsMTEgKzgsMTIgQEAKICAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwog
Ci0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2NvbmZpZy5oIgor
I2luY2x1ZGUgPHN0cmluZy5oPgorCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvbGlu
dXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xpbnV4LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19k
ZXZpY2UvbGludXgvbGF0ZWJpbmRpbmdzeW1ib2x0YWJsZV9saW51eC5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRl
ICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmgiCiAKIFdlYlJUQ1B1bHNl
U3ltYm9sVGFibGUqIEdldFB1bHNlU3ltYm9sVGFibGUoKSB7CiAgIHN0YXRpYyBXZWJSVENQdWxz
ZVN5bWJvbFRhYmxlKiBwdWxzZV9zeW1ib2xfdGFibGUgPQpAQCAtMzEsMTAgKzMyLDYgQEAgbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKIEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6QXVkaW9EZXZpY2VMaW51
eFB1bHNlKCkKICAgICA6IF9wdHJBdWRpb0J1ZmZlcihOVUxMKSwKLSAgICAgIF90aW1lRXZlbnRS
ZWMoKkV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAotICAgICAgX3RpbWVFdmVudFBsYXkoKkV2ZW50
V3JhcHBlcjo6Q3JlYXRlKCkpLAotICAgICAgX3JlY1N0YXJ0RXZlbnQoKkV2ZW50V3JhcHBlcjo6
Q3JlYXRlKCkpLAotICAgICAgX3BsYXlTdGFydEV2ZW50KCpFdmVudFdyYXBwZXI6OkNyZWF0ZSgp
KSwKICAgICAgIF9pbnB1dERldmljZUluZGV4KDApLAogICAgICAgX291dHB1dERldmljZUluZGV4
KDApLAogICAgICAgX2lucHV0RGV2aWNlSXNTcGVjaWZpZWQoZmFsc2UpLApAQCAtMTExLDExICsx
MDgsNiBAQCBBdWRpb0RldmljZUxpbnV4UHVsc2U6On5BdWRpb0RldmljZUxpbnV4UHVsc2UoKSB7
CiAgICAgZGVsZXRlW10gX3JlY0RldmljZU5hbWU7CiAgICAgX3JlY0RldmljZU5hbWUgPSBOVUxM
OwogICB9Ci0KLSAgZGVsZXRlICZfcmVjU3RhcnRFdmVudDsKLSAgZGVsZXRlICZfcGxheVN0YXJ0
RXZlbnQ7Ci0gIGRlbGV0ZSAmX3RpbWVFdmVudFJlYzsKLSAgZGVsZXRlICZfdGltZUV2ZW50UGxh
eTsKIH0KIAogdm9pZCBBdWRpb0RldmljZUxpbnV4UHVsc2U6OkF0dGFjaEF1ZGlvQnVmZmVyKEF1
ZGlvRGV2aWNlQnVmZmVyKiBhdWRpb0J1ZmZlcikgewpAQCAtMTA2NSw3ICsxMDU3LDcgQEAgaW50
MzJfdCBBdWRpb0RldmljZUxpbnV4UHVsc2U6OlN0YXJ0UmVjb3JkaW5nKCkgewogCiAgIC8vIFRo
ZSBhdWRpbyB0aHJlYWQgd2lsbCBzaWduYWwgd2hlbiByZWNvcmRpbmcgaGFzIHN0YXJ0ZWQuCiAg
IF90aW1lRXZlbnRSZWMuU2V0KCk7Ci0gIGlmIChrRXZlbnRUaW1lb3V0ID09IF9yZWNTdGFydEV2
ZW50LldhaXQoMTAwMDApKSB7CisgIGlmICghX3JlY1N0YXJ0RXZlbnQuV2FpdCgxMDAwMCkpIHsK
ICAgICB7CiAgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZfY3JpdFNlY3QpOwogICAgICAgX3N0
YXJ0UmVjID0gZmFsc2U7CkBAIC0xMTgwLDcgKzExNzIsNyBAQCBpbnQzMl90IEF1ZGlvRGV2aWNl
TGludXhQdWxzZTo6U3RhcnRQbGF5b3V0KCkgewogCiAgIC8vIFRoZSBhdWRpbyB0aHJlYWQgd2ls
bCBzaWduYWwgd2hlbiBwbGF5b3V0IGhhcyBzdGFydGVkLgogICBfdGltZUV2ZW50UGxheS5TZXQo
KTsKLSAgaWYgKGtFdmVudFRpbWVvdXQgPT0gX3BsYXlTdGFydEV2ZW50LldhaXQoMTAwMDApKSB7
CisgIGlmICghX3BsYXlTdGFydEV2ZW50LldhaXQoMTAwMDApKSB7CiAgICAgewogICAgICAgcnRj
OjpDcml0U2NvcGUgbG9jaygmX2NyaXRTZWN0KTsKICAgICAgIF9zdGFydFBsYXkgPSBmYWxzZTsK
QEAgLTE5OTQsMTQgKzE5ODYsOCBAQCBib29sIEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6UmVjVGhy
ZWFkRnVuYyh2b2lkKiBwVGhpcykgewogfQogCiBib29sIEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6
UGxheVRocmVhZFByb2Nlc3MoKSB7Ci0gIHN3aXRjaCAoX3RpbWVFdmVudFBsYXkuV2FpdCgxMDAw
KSkgewotICAgIGNhc2Uga0V2ZW50U2lnbmFsZWQ6Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGtF
dmVudEVycm9yOgotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRXZlbnRXcmFwcGVyOjpX
YWl0KCkgZmFpbGVkIjsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2Uga0V2ZW50VGltZW91
dDoKLSAgICAgIHJldHVybiB0cnVlOworICBpZiAoIV90aW1lRXZlbnRQbGF5LldhaXQoMTAwMCkp
IHsKKyAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJl9jcml0
U2VjdCk7CkBAIC0yMTY4LDE0ICsyMTU0LDggQEAgYm9vbCBBdWRpb0RldmljZUxpbnV4UHVsc2U6
OlBsYXlUaHJlYWRQcm9jZXNzKCkgewogfQogCiBib29sIEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6
UmVjVGhyZWFkUHJvY2VzcygpIHsKLSAgc3dpdGNoIChfdGltZUV2ZW50UmVjLldhaXQoMTAwMCkp
IHsKLSAgICBjYXNlIGtFdmVudFNpZ25hbGVkOgotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBrRXZl
bnRFcnJvcjoKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkV2ZW50V3JhcHBlcjo6V2Fp
dCgpIGZhaWxlZCI7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIGtFdmVudFRpbWVvdXQ6
Ci0gICAgICByZXR1cm4gdHJ1ZTsKKyAgaWYgKCFfdGltZUV2ZW50UmVjLldhaXQoMTAwMCkpIHsK
KyAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJl9jcml0U2Vj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19kZXZpY2VfcHVsc2VfbGludXguaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
ZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9wdWxzZV9saW51eC5oCmluZGV4IDE2NTViMTgxMTdm
YjI0ZTMxNzM4ZWI5Y2IyNDZhODJjNzJiNmQ2MTEuLjRkZTg3ZmMzZTZlM2U0ZWQ2ZTIxNTRlY2Mx
OTcyMDljNzcyODgwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9wdWxz
ZV9saW51eC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9wdWxzZV9saW51eC5oCkBA
IC0xMywxMCArMTMsMTYgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfZ2VuZXJpYy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX21peGVyX21hbmFnZXJfcHVsc2VfbGludXgu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9wdWxzZWF1ZGlvc3ltYm9s
dGFibGVfbGludXguaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3Ro
cmVhZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19VU0Vf
WDExKQpAQCAtMjQsNiArMzAsOCBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxwdWxzZS9wdWxzZWF1
ZGlvLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKIC8vIFdl
IGRlZmluZSB0aGlzIGZsYWcgaWYgaXQncyBtaXNzaW5nIGZyb20gb3VyIGhlYWRlcnMsIGJlY2F1
c2Ugd2Ugd2FudCB0byBiZQogLy8gYWJsZSB0byBjb21waWxlIGFnYWluc3Qgb2xkIGhlYWRlcnMg
YnV0IHN0aWxsIHVzZSBQQV9TVFJFQU1fQURKVVNUX0xBVEVOQ1kKQEAgLTk2LDcgKzEwNCw2IEBA
IHR5cGVkZWYgd2VicnRjOjphZG1fbGludXhfcHVsc2U6OlB1bHNlQXVkaW9TeW1ib2xUYWJsZSBX
ZWJSVENQdWxzZVN5bWJvbFRhYmxlOwogV2ViUlRDUHVsc2VTeW1ib2xUYWJsZSogR2V0UHVsc2VT
eW1ib2xUYWJsZSgpOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIEV2ZW50V3JhcHBlcjsK
IAogY2xhc3MgQXVkaW9EZXZpY2VMaW51eFB1bHNlIDogcHVibGljIEF1ZGlvRGV2aWNlR2VuZXJp
YyB7CiAgcHVibGljOgpAQCAtMjU1LDEwICsyNjIsMTAgQEAgY2xhc3MgQXVkaW9EZXZpY2VMaW51
eFB1bHNlIDogcHVibGljIEF1ZGlvRGV2aWNlR2VuZXJpYyB7CiAgIEF1ZGlvRGV2aWNlQnVmZmVy
KiBfcHRyQXVkaW9CdWZmZXI7CiAKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gX2NyaXRTZWN0Owot
ICBFdmVudFdyYXBwZXImIF90aW1lRXZlbnRSZWM7Ci0gIEV2ZW50V3JhcHBlciYgX3RpbWVFdmVu
dFBsYXk7Ci0gIEV2ZW50V3JhcHBlciYgX3JlY1N0YXJ0RXZlbnQ7Ci0gIEV2ZW50V3JhcHBlciYg
X3BsYXlTdGFydEV2ZW50OworICBydGM6OkV2ZW50IF90aW1lRXZlbnRSZWM7CisgIHJ0Yzo6RXZl
bnQgX3RpbWVFdmVudFBsYXk7CisgIHJ0Yzo6RXZlbnQgX3JlY1N0YXJ0RXZlbnQ7CisgIHJ0Yzo6
RXZlbnQgX3BsYXlTdGFydEV2ZW50OwogCiAgIC8vIFRPRE8ocGJvcyk6IFJlbW92ZSB1bmlxdWVf
cHRyIGFuZCB1c2UgZGlyZWN0bHkgd2l0aG91dCByZXNldHRpbmcuCiAgIHN0ZDo6dW5pcXVlX3B0
cjxydGM6OlBsYXRmb3JtVGhyZWFkPiBfcHRyVGhyZWFkUGxheTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNl
L2xpbnV4L2F1ZGlvX21peGVyX21hbmFnZXJfcHVsc2VfbGludXguY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9h
dWRpb19taXhlcl9tYW5hZ2VyX3B1bHNlX2xpbnV4LmNjCmluZGV4IDViYTkyM2JiOTExYzFkMjIy
NDQ5ZTUxYzgwNjBkN2Y4NzQxODg4NDQuLjIyZTEwNDA3ZGUyZmYxM2YwYWE2MzA2NDYyZTZhNGU5
NzAyOGVlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX21peGVyX21hbmFnZXJfcHVs
c2VfbGludXguY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9s
aW51eC5jYwpAQCAtOCw4ICs4LDEyIEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNl
X3B1bHNlX2xpbnV4LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVk
aW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
ZGV2aWNlL2xpbnV4L2xhdGViaW5kaW5nc3ltYm9sdGFibGVfbGludXguaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9wdWxzZWF1ZGlvc3ltYm9sdGFibGVfbGludXguaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX21peGVyX21hbmFnZXJfcHVsc2Vf
bGludXguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX21peGVyX21hbmFnZXJfcHVsc2VfbGludXguaApp
bmRleCBjNTQ2MGI2MjM3YWY4NzIyNTIzMDdiMmE3ZmMxNDgxODBmYzYyMDNlLi42NzlkMWI0Yjdj
MjZkMjM2ZTUyMzA2ZDhhZDlkMWFmZDg1YWZhOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9h
dWRpb19taXhlcl9tYW5hZ2VyX3B1bHNlX2xpbnV4LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9f
bWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5oCkBAIC0xMSwxMyArMTEsMTEgQEAKICNpZm5kZWYg
QVVESU9fREVWSUNFX0FVRElPX01JWEVSX01BTkFHRVJfUFVMU0VfTElOVVhfSF8KICNkZWZpbmUg
QVVESU9fREVWSUNFX0FVRElPX01JWEVSX01BTkFHRVJfUFVMU0VfTElOVVhfSF8KIAotI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvcHVsc2VhdWRpb3N5bWJvbHRhYmxlX2xpbnV4
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKLQogI2luY2x1ZGUgPHB1
bHNlL3B1bHNlYXVkaW8uaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KIAorI2luY2x1ZGUgInJ0Y19i
YXNlL3RocmVhZF9jaGVja2VyLmgiCisKICNpZm5kZWYgVUlOVDMyX01BWAogI2RlZmluZSBVSU5U
MzJfTUFYICgodWludDMyX3QpLTEpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL21hYy9hdWRp
b19kZXZpY2VfbWFjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjL2F1ZGlvX2RldmljZV9tYWMuY2MKaW5kZXggMDYz
YWM4NTczNmRkYzRkMTAxNWYyMTg2MzUxZmYwMmQyNzk3ZjNmZC4uOWRhZjdiZGRmN2JmNzNjNTlk
ZTI4ZmUzNTM1NjRjMWI4ZjMzNWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjL2F1ZGlvX2Rldmlj
ZV9tYWMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjL2F1ZGlvX2RldmljZV9tYWMuY2MKQEAgLTE2LDcgKzE2
LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9w
bGF0Zm9ybV90aHJlYWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgotI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCIKIAogI2luY2x1
ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogI2luY2x1ZGUg
PGxpYmtlcm4vT1NBdG9taWMuaD4gIC8vIE9TQXRvbWljQ29tcGFyZUFuZFN3YXAoKQpAQCAtMTE1
LDggKzExNCw2IEBAIHZvaWQgQXVkaW9EZXZpY2VNYWM6OmxvZ0NBTXNnKGNvbnN0IHJ0Yzo6TG9n
Z2luZ1NldmVyaXR5IHNldiwKIAogQXVkaW9EZXZpY2VNYWM6OkF1ZGlvRGV2aWNlTWFjKCkKICAg
ICA6IF9wdHJBdWRpb0J1ZmZlcihOVUxMKSwKLSAgICAgIF9zdG9wRXZlbnRSZWMoKkV2ZW50V3Jh
cHBlcjo6Q3JlYXRlKCkpLAotICAgICAgX3N0b3BFdmVudCgqRXZlbnRXcmFwcGVyOjpDcmVhdGUo
KSksCiAgICAgICBfbWl4ZXJNYW5hZ2VyKCksCiAgICAgICBfaW5wdXREZXZpY2VJbmRleCgwKSwK
ICAgICAgIF9vdXRwdXREZXZpY2VJbmRleCgwKSwKQEAgLTE1Myw5ICsxNTAsNiBAQCBBdWRpb0Rl
dmljZU1hYzo6QXVkaW9EZXZpY2VNYWMoKQogICAgICAgcHJldl9rZXlfc3RhdGVfKCkgewogICBS
VENfTE9HKExTX0lORk8pIDw8IF9fRlVOQ1RJT05fXyA8PCAiIGNyZWF0ZWQiOwogCi0gIFJUQ19E
Q0hFQ0soJl9zdG9wRXZlbnQgIT0gTlVMTCk7Ci0gIFJUQ19EQ0hFQ0soJl9zdG9wRXZlbnRSZWMg
IT0gTlVMTCk7Ci0KICAgbWVtc2V0KF9yZW5kZXJDb252ZXJ0RGF0YSwgMCwgc2l6ZW9mKF9yZW5k
ZXJDb252ZXJ0RGF0YSkpOwogICBtZW1zZXQoJl9vdXRTdHJlYW1Gb3JtYXQsIDAsIHNpemVvZihB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pKTsKICAgbWVtc2V0KCZfb3V0RGVzaXJlZEZvcm1h
dCwgMCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwpAQCAtMjA0LDggKzE5
OCw2IEBAIEF1ZGlvRGV2aWNlTWFjOjp+QXVkaW9EZXZpY2VNYWMoKSB7CiAgICAgUlRDX0xPRyhM
U19FUlJPUikgPDwgInNlbWFwaG9yZV9kZXN0cm95KCkgZXJyb3I6ICIgPDwga2VybkVycjsKICAg
fQogCi0gIGRlbGV0ZSAmX3N0b3BFdmVudDsKLSAgZGVsZXRlICZfc3RvcEV2ZW50UmVjOwogfQog
CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xMzM4LDcgKzEzMzAsNyBAQCBpbnQzMl90IEF1
ZGlvRGV2aWNlTWFjOjpTdG9wUmVjb3JkaW5nKCkgewogICAgICAgX3JlY29yZGluZyA9IGZhbHNl
OwogICAgICAgX2RvU3RvcFJlYyA9IHRydWU7ICAvLyBTaWduYWwgdG8gaW8gcHJvYyB0byBzdG9w
IGF1ZGlvIGRldmljZQogICAgICAgX2NyaXRTZWN0LkxlYXZlKCk7ICAvLyBDYW5ub3QgYmUgdW5k
ZXIgbG9jaywgcmlzayBvZiBkZWFkbG9jawotICAgICAgaWYgKGtFdmVudFRpbWVvdXQgPT0gX3N0
b3BFdmVudFJlYy5XYWl0KDIwMDApKSB7CisgICAgICBpZiAoIV9zdG9wRXZlbnRSZWMuV2FpdCgy
MDAwKSkgewogICAgICAgICBydGM6OkNyaXRTY29wZSBjcml0U2NvcGVkKCZfY3JpdFNlY3QpOwog
ICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJUaW1lZCBvdXQgc3RvcHBpbmcgdGhlIGNh
cHR1cmUgSU9Qcm9jLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiV2UgbWF5IGhh
dmUgZmFpbGVkIHRvIGRldGVjdCBhIGRldmljZSByZW1vdmFsLiI7CkBAIC0xMzY2LDcgKzEzNTgs
NyBAQCBpbnQzMl90IEF1ZGlvRGV2aWNlTWFjOjpTdG9wUmVjb3JkaW5nKCkgewogICAgICAgX3Jl
Y29yZGluZyA9IGZhbHNlOwogICAgICAgX2RvU3RvcCA9IHRydWU7ICAgICAvLyBTaWduYWwgdG8g
aW8gcHJvYyB0byBzdG9wIGF1ZGlvIGRldmljZQogICAgICAgX2NyaXRTZWN0LkxlYXZlKCk7ICAv
LyBDYW5ub3QgYmUgdW5kZXIgbG9jaywgcmlzayBvZiBkZWFkbG9jawotICAgICAgaWYgKGtFdmVu
dFRpbWVvdXQgPT0gX3N0b3BFdmVudC5XYWl0KDIwMDApKSB7CisgICAgICBpZiAoIV9zdG9wRXZl
bnQuV2FpdCgyMDAwKSkgewogICAgICAgICBydGM6OkNyaXRTY29wZSBjcml0U2NvcGVkKCZfY3Jp
dFNlY3QpOwogICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJUaW1lZCBvdXQgc3RvcHBp
bmcgdGhlIHNoYXJlZCBJT1Byb2MuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJX
ZSBtYXkgaGF2ZSBmYWlsZWQgdG8gZGV0ZWN0IGEgZGV2aWNlIHJlbW92YWwuIjsKQEAgLTE0NzQs
NyArMTQ2Niw3IEBAIGludDMyX3QgQXVkaW9EZXZpY2VNYWM6OlN0b3BQbGF5b3V0KCkgewogICAg
IF9wbGF5aW5nID0gZmFsc2U7CiAgICAgX2RvU3RvcCA9IHRydWU7ICAgICAvLyBTaWduYWwgdG8g
aW8gcHJvYyB0byBzdG9wIGF1ZGlvIGRldmljZQogICAgIF9jcml0U2VjdC5MZWF2ZSgpOyAgLy8g
Q2Fubm90IGJlIHVuZGVyIGxvY2ssIHJpc2sgb2YgZGVhZGxvY2sKLSAgICBpZiAoa0V2ZW50VGlt
ZW91dCA9PSBfc3RvcEV2ZW50LldhaXQoMjAwMCkpIHsKKyAgICBpZiAoIV9zdG9wRXZlbnQuV2Fp
dCgyMDAwKSkgewogICAgICAgcnRjOjpDcml0U2NvcGUgY3JpdFNjb3BlZCgmX2NyaXRTZWN0KTsK
ICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlRpbWVkIG91dCBzdG9wcGluZyB0aGUgcmVu
ZGVyIElPUHJvYy4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJXZSBtYXkgaGF2ZSBm
YWlsZWQgdG8gZGV0ZWN0IGEgZGV2aWNlIHJlbW92YWwuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL21h
Yy9hdWRpb19kZXZpY2VfbWFjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9tYWMvYXVkaW9fZGV2aWNlX21hYy5oCmluZGV4
IDVjYmRhZTI4MzcxYTI5MzBlMDczNWE3NDIzZDQ1YjY2ZWE0Y2MxMzUuLjVhNzA3NjA2NTMzNGNm
NzU0ZDc1NmEwNGViODE3MGVhNmJjODgzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL21hYy9hdWRpb19k
ZXZpY2VfbWFjLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjL2F1ZGlvX2RldmljZV9tYWMuaApAQCAtMTYsOSAr
MTYsOSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9nZW5l
cmljLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjL2F1ZGlvX21peGVyX21h
bmFnZXJfbWFjLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCi0jaW5jbHVkZSAic3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oIgogCiAjaW5jbHVkZSA8QXVkaW9Ub29s
Ym94L0F1ZGlvQ29udmVydGVyLmg+CiAjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpby5oPgpA
QCAtMzEsNyArMzEsNiBAQCBjbGFzcyBQbGF0Zm9ybVRocmVhZDsKIH0gIC8vIG5hbWVzcGFjZSBy
dGMKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBFdmVudFdyYXBwZXI7CiAKIGNvbnN0IHVp
bnQzMl90IE5fUkVDX1NBTVBMRVNfUEVSX1NFQyA9IDQ4MDAwOwogY29uc3QgdWludDMyX3QgTl9Q
TEFZX1NBTVBMRVNfUEVSX1NFQyA9IDQ4MDAwOwpAQCAtMjUyLDggKzI1MSw4IEBAIGNsYXNzIEF1
ZGlvRGV2aWNlTWFjIDogcHVibGljIEF1ZGlvRGV2aWNlR2VuZXJpYyB7CiAKICAgcnRjOjpDcml0
aWNhbFNlY3Rpb24gX2NyaXRTZWN0OwogCi0gIEV2ZW50V3JhcHBlciYgX3N0b3BFdmVudFJlYzsK
LSAgRXZlbnRXcmFwcGVyJiBfc3RvcEV2ZW50OworICBydGM6OkV2ZW50IF9zdG9wRXZlbnRSZWM7
CisgIHJ0Yzo6RXZlbnQgX3N0b3BFdmVudDsKIAogICAvLyBUT0RPKHBib3MpOiBSZXBsYWNlIHdp
dGggZGlyZWN0IG1lbWJlcnMsIGp1c3Qgc3RhcnQvc3RvcCwgbm8gbmVlZCB0bwogICAvLyByZWNy
ZWF0ZSB0aGUgdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvQlVJTEQu
Z24KaW5kZXggMGJiM2FlMTM3YWVlZGRkZmQ5OWM3NDBmMTEzZjA5YjBhNDUxYzlmMi4uZjkzNWU4
M2M1YmEyM2Y5ZWZlZGFlNTU0MjIxM2I3NjQ2YjhiNWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9CVUlM
RC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX21peGVyL0JVSUxELmduCkBAIC0zNyw3ICszNyw2IEBAIHJ0Y19zdGF0aWNfbGli
cmFyeSgiYXVkaW9fbWl4ZXJfaW1wbCIpIHsKIAogICBkZXBzID0gWwogICAgICI6YXVkaW9fZnJh
bWVfbWFuaXB1bGF0b3IiLAotICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4v
YXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGkvYXVkaW86YXVkaW9fZnJhbWVfYXBpIiwK
ICAgICAiLi4vLi4vYXBpL2F1ZGlvOmF1ZGlvX21peGVyX2FwaSIsCkBAIC00OCw2ICs0Nyw3IEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fbWl4ZXJfaW1wbCIpIHsKICAgICAiLi4vLi4vc3lz
dGVtX3dyYXBwZXJzIiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3MiLAogICAg
ICIuLi9hdWRpb19wcm9jZXNzaW5nIiwKKyAgICAiLi4vYXVkaW9fcHJvY2Vzc2luZzphcGkiLAog
ICAgICIuLi9hdWRpb19wcm9jZXNzaW5nOmFwbV9sb2dnaW5nIiwKICAgICAiLi4vYXVkaW9fcHJv
Y2Vzc2luZzphdWRpb19mcmFtZV92aWV3IiwKICAgICAiLi4vYXVkaW9fcHJvY2Vzc2luZy9hZ2My
OmZpeGVkX2RpZ2l0YWwiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9hdWRpb19taXhlcl9pbXBsLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21p
eGVyL2F1ZGlvX21peGVyX2ltcGwuaAppbmRleCBlODk5NGE2NzRiYzYwNWQ4NTY0OTczODZlMWRm
NGQ1OGFkODQwMTRiLi44ZWRkM2I4YmRjNGQzZTRiNjAwMzYxNzVhODQ1YWVlZTY2ODkwNzIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVyX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVy
X2ltcGwuaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19taXhl
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fbWl4ZXIvZnJhbWVfY29tYmluZXIuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX21peGVyL291dHB1dF9yYXRlX2NhbGN1bGF0b3IuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9y
YWNlX2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9h
dWRpb19taXhlcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9hdWRpb19taXhlcl90ZXN0LmNjCmluZGV4IDIwMDRh
ZWVmNDYzYWIwYWI5MDIxMzBmNzMyNDA2Yjk5YzBlY2RjN2IuLmI2MDc4Nzc1NWQ4MzZlMDI4MmQw
YmFkNGQxNzNmNWY3ODUyODEwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvYXVkaW9fbWl4ZXJfdGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX21peGVyL2F1ZGlvX21peGVyX3Rlc3QuY2MKQEAgLTE5LDI0ICsxOSwyNSBAQAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJp
bmdfYnVpbGRlci5oIgogCi1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1l
c3NhZ2UiKTsKLURFRklORV9pbnQoc2FtcGxpbmdfcmF0ZSwKLSAgICAgICAgICAgMTYwMDAsCi0g
ICAgICAgICAgICJSYXRlIGF0IHdoaWNoIHRvIG1peCAoYWxsIGlucHV0IHN0cmVhbXMgbXVzdCBo
YXZlIHRoaXMgcmF0ZSkiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50
cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfaW50KAorICAgIHNhbXBsaW5nX3JhdGUs
CisgICAgMTYwMDAsCisgICAgIlJhdGUgYXQgd2hpY2ggdG8gbWl4IChhbGwgaW5wdXQgc3RyZWFt
cyBtdXN0IGhhdmUgdGhpcyByYXRlKSIpOwogCi1ERUZJTkVfYm9vbCgKK1dFQlJUQ19ERUZJTkVf
Ym9vbCgKICAgICBzdGVyZW8sCiAgICAgZmFsc2UsCiAgICAgIkVuYWJsZSBzdGVyZW8gKGludGVy
bGVhdmVkKS4gSW5wdXRzIG5lZWQgbm90IGJlIGFzIHRoaXMgcGFyYW1ldGVyLiIpOwogCi1ERUZJ
TkVfYm9vbChsaW1pdGVyLCB0cnVlLCAiRW5hYmxlIGxpbWl0ZXIuIik7Ci1ERUZJTkVfc3RyaW5n
KG91dHB1dF9maWxlLAotICAgICAgICAgICAgICAibWl4ZWRfZmlsZS53YXYiLAotICAgICAgICAg
ICAgICAiRmlsZSBpbiB3aGljaCB0byBzdG9yZSB0aGUgbWl4ZWQgcmVzdWx0LiIpOwotREVGSU5F
X3N0cmluZyhpbnB1dF9maWxlXzEsICIiLCAiRmlyc3QgaW5wdXQuIERlZmF1bHQgbm9uZS4iKTsK
LURFRklORV9zdHJpbmcoaW5wdXRfZmlsZV8yLCAiIiwgIlNlY29uZCBpbnB1dC4gRGVmYXVsdCBu
b25lLiIpOwotREVGSU5FX3N0cmluZyhpbnB1dF9maWxlXzMsICIiLCAiVGhpcmQgaW5wdXQuIERl
ZmF1bHQgbm9uZS4iKTsKLURFRklORV9zdHJpbmcoaW5wdXRfZmlsZV80LCAiIiwgIkZvdXJ0aCBp
bnB1dC4gRGVmYXVsdCBub25lLiIpOworV0VCUlRDX0RFRklORV9ib29sKGxpbWl0ZXIsIHRydWUs
ICJFbmFibGUgbGltaXRlci4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKG91dHB1dF9maWxlLAor
ICAgICAgICAgICAgICAgICAgICAgIm1peGVkX2ZpbGUud2F2IiwKKyAgICAgICAgICAgICAgICAg
ICAgICJGaWxlIGluIHdoaWNoIHRvIHN0b3JlIHRoZSBtaXhlZCByZXN1bHQuIik7CitXRUJSVENf
REVGSU5FX3N0cmluZyhpbnB1dF9maWxlXzEsICIiLCAiRmlyc3QgaW5wdXQuIERlZmF1bHQgbm9u
ZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGlucHV0X2ZpbGVfMiwgIiIsICJTZWNvbmQgaW5w
dXQuIERlZmF1bHQgbm9uZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGlucHV0X2ZpbGVfMywg
IiIsICJUaGlyZCBpbnB1dC4gRGVmYXVsdCBub25lLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmco
aW5wdXRfZmlsZV80LCAiIiwgIkZvdXJ0aCBpbnB1dC4gRGVmYXVsdCBub25lLiIpOwogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvZnJhbWVf
Y29tYmluZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX21peGVyL2ZyYW1lX2NvbWJpbmVyLmNjCmluZGV4IGNmZjIyODJlMzNmZTY5
ODI0MWRhOWFhM2IyMDRjMjk5MTI4ZWQyZmIuLmQzNDkzZjVjM2RkNDM3ZmRmNDQzMjY2OTQ1MTI2
N2Y3ZDhmYmNmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvZnJhbWVfY29tYmluZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhl
ci9mcmFtZV9jb21iaW5lci5jYwpAQCAtOTIsMTAgKzkyLDEwIEBAIHN0ZDo6YXJyYXk8T25lQ2hh
bm5lbEJ1ZmZlciwga01heGltdW1BbW91bnRPZkNoYW5uZWxzPiBNaXhUb0Zsb2F0RnJhbWUoCiAg
IHJldHVybiBtaXhpbmdfYnVmZmVyOwogfQogCi12b2lkIFJ1bkxpbWl0ZXIoQXVkaW9GcmFtZVZp
ZXc8ZmxvYXQ+IG1peGluZ19idWZmZXJfdmlldywKLSAgICAgICAgICAgICAgICBGaXhlZEdhaW5D
b250cm9sbGVyKiBsaW1pdGVyKSB7Cit2b2lkIFJ1bkxpbWl0ZXIoQXVkaW9GcmFtZVZpZXc8Zmxv
YXQ+IG1peGluZ19idWZmZXJfdmlldywgTGltaXRlciogbGltaXRlcikgewogICBjb25zdCBzaXpl
X3Qgc2FtcGxlX3JhdGUgPSBtaXhpbmdfYnVmZmVyX3ZpZXcuc2FtcGxlc19wZXJfY2hhbm5lbCgp
ICogMTAwMCAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTWl4ZXJJbXBsOjpr
RnJhbWVEdXJhdGlvbkluTXM7CisgIC8vIFRPRE8oYWxlc3Npb2IpOiBBdm9pZCBjYWxsaW5nIFNl
dFNhbXBsZVJhdGUgZXZlcnkgdGltZS4KICAgbGltaXRlci0+U2V0U2FtcGxlUmF0ZShzYW1wbGVf
cmF0ZSk7CiAgIGxpbWl0ZXItPlByb2Nlc3MobWl4aW5nX2J1ZmZlcl92aWV3KTsKIH0KQEAgLTEx
NywxMCArMTE3LDggQEAgdm9pZCBJbnRlcmxlYXZlVG9BdWRpb0ZyYW1lKEF1ZGlvRnJhbWVWaWV3
PGNvbnN0IGZsb2F0PiBtaXhpbmdfYnVmZmVyX3ZpZXcsCiAKIEZyYW1lQ29tYmluZXI6OkZyYW1l
Q29tYmluZXIoYm9vbCB1c2VfbGltaXRlcikKICAgICA6IGRhdGFfZHVtcGVyXyhuZXcgQXBtRGF0
YUR1bXBlcigwKSksCi0gICAgICBsaW1pdGVyXyhkYXRhX2R1bXBlcl8uZ2V0KCksICJBdWRpb01p
eGVyIiksCi0gICAgICB1c2VfbGltaXRlcl8odXNlX2xpbWl0ZXIpIHsKLSAgbGltaXRlcl8uU2V0
R2FpbigwLmYpOwotfQorICAgICAgbGltaXRlcl8oc3RhdGljX2Nhc3Q8c2l6ZV90Pig0ODAwMCks
IGRhdGFfZHVtcGVyXy5nZXQoKSwgIkF1ZGlvTWl4ZXIiKSwKKyAgICAgIHVzZV9saW1pdGVyXyh1
c2VfbGltaXRlcikge30KIAogRnJhbWVDb21iaW5lcjo6fkZyYW1lQ29tYmluZXIoKSA9IGRlZmF1
bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvZnJhbWVfY29tYmluZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvZnJhbWVfY29t
YmluZXIuaAppbmRleCA3MGFjMDI3NzU4OTkwNzBhNDBjNzUyNzEwZjU3ZjA2NmYxZDczNWE1Li4x
YzFjZDUzZWZmMzExNWVlMTJlYzE4NmZlZmViMDM3ZmRjMDU0ZTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVy
L2ZyYW1lX2NvbWJpbmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9mcmFtZV9jb21iaW5lci5oCkBAIC0xNSwxMSAr
MTUsMTAgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9f
ZnJhbWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9n
YWluX2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9saW1pdGVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgQXBtRGF0YUR1bXBlcjsK
LWNsYXNzIEZpeGVkR2FpbkNvbnRyb2xsZXI7CiAKIGNsYXNzIEZyYW1lQ29tYmluZXIgewogIHB1
YmxpYzoKQEAgLTQ1LDcgKzQ0LDcgQEAgY2xhc3MgRnJhbWVDb21iaW5lciB7CiAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG51bWJlcl9vZl9zdHJlYW1zKSBjb25zdDsKIAogICBzdGQ6OnVu
aXF1ZV9wdHI8QXBtRGF0YUR1bXBlcj4gZGF0YV9kdW1wZXJfOwotICBGaXhlZEdhaW5Db250cm9s
bGVyIGxpbWl0ZXJfOworICBMaW1pdGVyIGxpbWl0ZXJfOwogICBjb25zdCBib29sIHVzZV9saW1p
dGVyXzsKICAgbXV0YWJsZSBpbnQgdW1hX2xvZ2dpbmdfY291bnRlcl8gPSAwOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9CVUlMRC5nbgppbmRleCA2MWI0
ZDQ5NWVkMmY5MTYxODIzY2M3YzUzZTM4YWQ1ZDMxNDY4ZWExLi42NmIwN2RmMTk5ZTY3ZGFjZjky
NDU3NDJiZWRhMzBkMTQ0Mjk3ODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvQlVJTEQuZ24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL0JVSUxELmduCkBAIC0yNiw2ICsyNiw0MSBAQCBjb25maWcoImFwbV9kZWJ1
Z19kdW1wIikgewogICB9CiB9CiAKK3J0Y19zdGF0aWNfbGlicmFyeSgiY29uZmlnIikgeworICB2
aXNpYmlsaXR5ID0gWyAiOioiIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW5jbHVkZS9jb25maWcu
Y2MiLAorICAgICJpbmNsdWRlL2NvbmZpZy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi8u
Li9ydGNfYmFzZTptYWNyb21hZ2ljIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19l
eHBvcnQiLAorICBdCit9CisKK3J0Y19zb3VyY2Vfc2V0KCJhcGkiKSB7CisgIHZpc2liaWxpdHkg
PSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImluY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5j
YyIsCisgICAgImluY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIiwKKyAgXQorICBkZXBzID0gWwor
ICAgICI6YXVkaW9fZnJhbWVfdmlldyIsCisgICAgIjphdWRpb19nZW5lcmF0b3JfaW50ZXJmYWNl
IiwKKyAgICAiOmF1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcyIsCisgICAgIjpjb25maWciLAor
ICAgICI6Z2Fpbl9jb250cm9sX2ludGVyZmFjZSIsCisgICAgIi4uLy4uL2FwaS9hdWRpbzphZWMz
X2NvbmZpZyIsCisgICAgIi4uLy4uL2FwaS9hdWRpbzplY2hvX2NvbnRyb2wiLAorICAgICIuLi8u
Li9ydGNfYmFzZTpkZXByZWNhdGlvbiIsCisgICAgIi4uLy4uL3J0Y19iYXNlOm1hY3JvbWFnaWMi
LAorICAgICIuLi8uLi9ydGNfYmFzZTpwdHJfdXRpbCIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnJ0
Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQi
LAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisg
IF0KK30KKwogcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19wcm9jZXNzaW5nIikgewogICB2aXNp
YmlsaXR5ID0gWyAiKiIgXQogICBjb25maWdzICs9IFsgIjphcG1fZGVidWdfZHVtcCIgXQpAQCAt
NTUsMTAgKzkwLDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19wcm9jZXNzaW5nIikgewog
ICAgICJnYWluX2NvbnRyb2xsZXIyLmgiLAogICAgICJpbmNsdWRlL2FlY19kdW1wLmNjIiwKICAg
ICAiaW5jbHVkZS9hZWNfZHVtcC5oIiwKLSAgICAiaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmNj
IiwKLSAgICAiaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiLAotICAgICJpbmNsdWRlL2NvbmZp
Zy5jYyIsCi0gICAgImluY2x1ZGUvY29uZmlnLmgiLAogICAgICJsZXZlbF9lc3RpbWF0b3JfaW1w
bC5jYyIsCiAgICAgImxldmVsX2VzdGltYXRvcl9pbXBsLmgiLAogICAgICJsb3dfY3V0X2ZpbHRl
ci5jYyIsCkBAIC05NSwxMSArMTI2LDEzIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fcHJv
Y2Vzc2luZyIpIHsKIAogICBkZWZpbmVzID0gW10KICAgZGVwcyA9IFsKKyAgICAiOmFwaSIsCiAg
ICAgIjphcG1fbG9nZ2luZyIsCiAgICAgIjphdWRpb19mcmFtZV92aWV3IiwKICAgICAiOmF1ZGlv
X2dlbmVyYXRvcl9pbnRlcmZhY2UiLAogICAgICI6YXVkaW9fcHJvY2Vzc2luZ19jIiwKICAgICAi
OmF1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcyIsCisgICAgIjpjb25maWciLAogICAgICI6Z2Fp
bl9jb250cm9sX2ludGVyZmFjZSIsCiAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIu
Li8uLi9hcGk6YXJyYXlfdmlldyIsCkBAIC0xMTUsNiArMTQ4LDcgQEAgcnRjX3N0YXRpY19saWJy
YXJ5KCJhdWRpb19wcm9jZXNzaW5nIikgewogICAgICIuLi8uLi9ydGNfYmFzZTpzYWZlX21pbm1h
eCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnNhbml0aXplciIsCiAgICAgIi4uLy4uL3J0Y19iYXNl
L3N5c3RlbTphcmNoIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAog
ICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6Y3B1X2ZlYXR1cmVzX2FwaSIsCiAgICAgIi4uLy4u
L3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVy
czptZXRyaWNzIiwKQEAgLTE2Miw2ICsxOTYsNyBAQCBydGNfc291cmNlX3NldCgiYXVkaW9fcHJv
Y2Vzc2luZ19zdGF0aXN0aWNzIikgewogICAgICJpbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmdfc3Rh
dGlzdGljcy5oIiwKICAgXQogICBkZXBzID0gWworICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06
cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9w
dGlvbmFsIiwKICAgXQogfQpAQCAtMjk0LDYgKzMyOSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhcG1f
bG9nZ2luZyIpIHsKICAgZGVwcyA9IFsKICAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAg
ICIuLi8uLi9jb21tb25fYXVkaW86Y29tbW9uX2F1ZGlvIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6
Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIu
Li8uLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIsCiAgIF0KQEAgLTMwNyw2ICszNDMsNyBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJpbmNsdWRlL21vY2tfYXVkaW9fcHJvY2Vzc2lu
Zy5oIiwKICAgICBdCiAgICAgZGVwcyA9IFsKKyAgICAgICI6YXBpIiwKICAgICAgICI6YXVkaW9f
cHJvY2Vzc2luZyIsCiAgICAgICAiOmF1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcyIsCiAgICAg
ICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLApAQCAtMzU4LDEwICszOTUsMTIgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAKICAgICBkZXBzID0gWwogICAgICAgIjphbmFsb2dfbWljX3Np
bXVsYXRpb24iLAorICAgICAgIjphcGkiLAogICAgICAgIjphcG1fbG9nZ2luZyIsCiAgICAgICAi
OmF1ZGlvX2ZyYW1lX3ZpZXciLAogICAgICAgIjphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICI6
YXVkaW9wcm9jX3Rlc3RfdXRpbHMiLAorICAgICAgIjpjb25maWciLAogICAgICAgIjpmaWxlX2F1
ZGlvX2dlbmVyYXRvcl91bml0dGVzdHMiLAogICAgICAgIjptb2NrcyIsCiAgICAgICAiLi4vLi46
d2VicnRjX2NvbW1vbiIsCkBAIC0zNzUsNiArNDE0LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3Rz
KSB7CiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cHJvdG9idWZfdXRpbHMiLAogICAgICAgIi4uLy4u
L3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHBy
b3ZlZCIsCisgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAg
ICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAgICIuLi8uLi9ydGNfYmFzZS9z
eXN0ZW06YXJjaCIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOmZpbGVfd3JhcHBlciIs
CkBAIC0zOTEsNiArNDMxLDggQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiYWdj
MjpiaXF1YWRfZmlsdGVyX3VuaXR0ZXN0cyIsCiAgICAgICAiYWdjMjpmaXhlZF9kaWdpdGFsX3Vu
aXR0ZXN0cyIsCiAgICAgICAiYWdjMjpub2lzZV9lc3RpbWF0b3JfdW5pdHRlc3RzIiwKKyAgICAg
ICJhZ2MyOnJubl92YWRfd2l0aF9sZXZlbF91bml0dGVzdHMiLAorICAgICAgImFnYzI6dGVzdF91
dGlscyIsCiAgICAgICAiYWdjMi9ybm5fdmFkOnVuaXR0ZXN0cyIsCiAgICAgICAidGVzdC9jb252
ZXJzYXRpb25hbF9zcGVlY2g6dW5pdHRlc3QiLAogICAgICAgInV0aWxpdHk6YmxvY2tfbWVhbl9j
YWxjdWxhdG9yX3VuaXR0ZXN0IiwKQEAgLTQxOCw3ICs0NjAsNiBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICAgICAgIjphdWRpb3Byb2NfdW5pdHRlc3RfcHJvdG8iLAogICAgICAgICAi
OnJ1bnRpbWVfc2V0dGluZ3NfcHJvdG9idWZfdXRpbHMiLAogICAgICAgICAiLi4vLi4vYXBpL2F1
ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCi0gICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90
ZXN0c191dGlscyIsCiAgICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCiAg
ICAgICAgICJhZWNfZHVtcCIsCiAgICAgICAgICJhZWNfZHVtcDphZWNfZHVtcF91bml0dGVzdHMi
LApAQCAtNDgyLDYgKzUyMyw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIF0KIAog
ICAgIGRlcHMgPSBbCisgICAgICAiOmFwaSIsCiAgICAgICAiOmF1ZGlvX2dlbmVyYXRvcl9mYWN0
b3J5IiwKICAgICAgICI6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAiOmZpbGVfYXVkaW9fZ2Vu
ZXJhdG9yIiwKQEAgLTUxMiw2ICs1NTQsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAg
aWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAgICBydGNfc291cmNlX3NldCgiYXVkaW9wcm9j
X2ZfaW1wbCIpIHsKICAgICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAgICAgY29uZmlncyArPSBbICI6
YXBtX2RlYnVnX2R1bXAiIF0KICAgICAgIHNvdXJjZXMgPSBbCiAgICAgICAgICJ0ZXN0L2FlY19k
dW1wX2Jhc2VkX3NpbXVsYXRvci5jYyIsCiAgICAgICAgICJ0ZXN0L2FlY19kdW1wX2Jhc2VkX3Np
bXVsYXRvci5oIiwKQEAgLTUyNSwxMSArNTY4LDE0IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykg
ewogCiAgICAgICBkZXBzID0gWwogICAgICAgICAiOmFuYWxvZ19taWNfc2ltdWxhdGlvbiIsCisg
ICAgICAgICI6YXBpIiwKKyAgICAgICAgIjphcG1fbG9nZ2luZyIsCiAgICAgICAgICI6YXVkaW9f
cHJvY2Vzc2luZyIsCiAgICAgICAgICI6YXVkaW9wcm9jX2RlYnVnX3Byb3RvIiwKICAgICAgICAg
IjphdWRpb3Byb2NfcHJvdG9idWZfdXRpbHMiLAogICAgICAgICAiOmF1ZGlvcHJvY190ZXN0X3V0
aWxzIiwKICAgICAgICAgIjpydW50aW1lX3NldHRpbmdzX3Byb3RvYnVmX3V0aWxzIiwKKyAgICAg
ICAgIi4uLy4uL2FwaS9hdWRpbzphZWMzX2NvbmZpZ19qc29uIiwKICAgICAgICAgIi4uLy4uL2Fw
aS9hdWRpbzphZWMzX2ZhY3RvcnkiLAogICAgICAgICAiLi4vLi4vY29tbW9uX2F1ZGlvOmNvbW1v
bl9hdWRpbyIsCiAgICAgICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLApAQCAtNTQ0LDYgKzU5
MCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgICAiYWVjX2R1bXA6YWVjX2R1
bXBfaW1wbCIsCiAgICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgICAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICAgICAgXQogICAgIH0gICMgYXVkaW9wcm9jX2ZfaW1w
bApAQCAtNTUzLDYgKzYwMCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgICAi
dGVzdC9hdWRpb3Byb2NfZmxvYXRfbWFpbi5jYyIsCiAgICAgICBdCiAgICAgICBkZXBzID0gWwor
ICAgICAgICAiOmFwaSIsCiAgICAgICAgICI6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAgICIu
Li8uLi9hcGk6YXVkaW9wcm9jX2ZfYXBpIiwKICAgICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKQEAgLTU3OCw2ICs2MjYsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMp
IHsKICAgICBdCiAKICAgICBkZXBzID0gWworICAgICAgIjphcGkiLAogICAgICAgIjphdWRpb19w
cm9jZXNzaW5nIiwKICAgICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgICAiLi4vLi4v
YXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCkBAIC02NjIsNiArNzExLDcgQEAgaWYgKHJ0Y19p
bmNsdWRlX3Rlc3RzKSB7CiAgICAgICBdCiAKICAgICAgIGRlcHMgPSBbCisgICAgICAgICI6YXBp
IiwKICAgICAgICAgIjphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICAgIjphdWRpb3Byb2NfZGVi
dWdfcHJvdG8iLAogICAgICAgICAiOmF1ZGlvcHJvY19wcm90b2J1Zl91dGlscyIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19jb3JlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfY29yZS5j
YwppbmRleCA1YThjZjhmNThiNjAxZjFhYjI1ZTQ5OWUzMmE3ZDFhMzdlYTdiODdmLi42MmI4YWQw
ZjdjMDcwOWU1YzM0YjdmNjQ2Mzg1YzAwN2I5YTA4OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjL2FlY19jb3JlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMvYWVjX2NvcmUuY2MKQEAgLTIxLDYg
KzIxLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKKwogZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3JpbmdfYnVmZmVy
LmgiCiB9CkBAIC0yOSw3ICszMCw2IEBAIGV4dGVybiAiQyIgewogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMvYWVjX2NvcmVfb3B0aW1pemVkX21ldGhvZHMuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9kZWxheV9lc3RpbWF0
b3Jfd3JhcHBlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3N5c3RlbS9hcmNoLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
Y3B1X2ZlYXR1cmVzX3dyYXBwZXIuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVk
ZS9tZXRyaWNzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19yZXNhbXBsZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjL2FlY19yZXNhbXBsZXIuY2MKaW5kZXggMjg1MWMwYjZkZDU3NWQ2OTY4
Yjc2NjY5ZGIyNWVlNDIwMDU3NzJmNi4uMjEwYzJiZWJlMGUyMTEzYWQwZTgwOGQyNGYyM2I5YmM4
MDg2MDhhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfcmVzYW1wbGVyLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMvYWVjX3Jlc2FtcGxlci5jYwpAQCAtMTQsNyArMTQsNiBAQAogCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfcmVzYW1wbGVyLmgiCiAKLSNp
bmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMvYWVjX3Jlc2FtcGxlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYy9hZWNfcmVzYW1wbGVyLmgKaW5kZXggMTMwZjdlYzdjNzY2NDdkMWNlODM2ZmMyMzJhNDE3
NzZmZWVhZWRlYi4uYTExMmM0MzRkMGJjOTFiYTFhOWQ1NmViZjFhZTMxYjM2MThmMGZlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfcmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
Yy9hZWNfcmVzYW1wbGVyLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FFQ19BRUNfUkVTQU1QTEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9f
UFJPQ0VTU0lOR19BRUNfQUVDX1JFU0FNUExFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19jb3JlLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9CVUlMRC5nbgppbmRleCBlNjMxNzMyYTQ1MzlhYjEzNjJmMTViOTk4YmQ1
YzExY2VmODI3MzJjLi4xODliY2ZkNzEyNTUzMzliYzdkYmY3N2YwZjM3MGNlYmIzMWY0ZTQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9C
VUlMRC5nbgpAQCAtMjAsMTYgKzIwLDIxIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYWVjMyIpIHsK
ICAgICAiYWVjM19mZnQuaCIsCiAgICAgImFlY19zdGF0ZS5jYyIsCiAgICAgImFlY19zdGF0ZS5o
IiwKKyAgICAiYXBpX2NhbGxfaml0dGVyX21ldHJpY3MuY2MiLAorICAgICJhcGlfY2FsbF9qaXR0
ZXJfbWV0cmljcy5oIiwKICAgICAiYmxvY2tfZGVsYXlfYnVmZmVyLmNjIiwKICAgICAiYmxvY2tf
ZGVsYXlfYnVmZmVyLmgiLAogICAgICJibG9ja19mcmFtZXIuY2MiLAogICAgICJibG9ja19mcmFt
ZXIuaCIsCiAgICAgImJsb2NrX3Byb2Nlc3Nvci5jYyIsCiAgICAgImJsb2NrX3Byb2Nlc3Nvci5o
IiwKKyAgICAiYmxvY2tfcHJvY2Vzc29yMi5jYyIsCiAgICAgImJsb2NrX3Byb2Nlc3Nvcl9tZXRy
aWNzLmNjIiwKICAgICAiYmxvY2tfcHJvY2Vzc29yX21ldHJpY3MuaCIsCiAgICAgImNhc2NhZGVk
X2JpcXVhZF9maWx0ZXIuY2MiLAogICAgICJjYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmgiLAorICAg
ICJjbG9ja2RyaWZ0X2RldGVjdG9yLmNjIiwKKyAgICAiY2xvY2tkcmlmdF9kZXRlY3Rvci5oIiwK
ICAgICAiY29tZm9ydF9ub2lzZV9nZW5lcmF0b3IuY2MiLAogICAgICJjb21mb3J0X25vaXNlX2dl
bmVyYXRvci5oIiwKICAgICAiZGVjaW1hdG9yLmNjIiwKQEAgLTc2LDEwICs4MSwxNCBAQCBydGNf
c3RhdGljX2xpYnJhcnkoImFlYzMiKSB7CiAgICAgInJlbmRlcl9idWZmZXIuaCIsCiAgICAgInJl
bmRlcl9kZWxheV9idWZmZXIuY2MiLAogICAgICJyZW5kZXJfZGVsYXlfYnVmZmVyLmgiLAorICAg
ICJyZW5kZXJfZGVsYXlfYnVmZmVyMi5jYyIsCiAgICAgInJlbmRlcl9kZWxheV9jb250cm9sbGVy
LmNjIiwKICAgICAicmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIuaCIsCisgICAgInJlbmRlcl9kZWxh
eV9jb250cm9sbGVyMi5jYyIsCiAgICAgInJlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3Mu
Y2MiLAogICAgICJyZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzLmgiLAorICAgICJyZW5k
ZXJfcmV2ZXJiX21vZGVsLmNjIiwKKyAgICAicmVuZGVyX3JldmVyYl9tb2RlbC5oIiwKICAgICAi
cmVuZGVyX3NpZ25hbF9hbmFseXplci5jYyIsCiAgICAgInJlbmRlcl9zaWduYWxfYW5hbHl6ZXIu
aCIsCiAgICAgInJlc2lkdWFsX2VjaG9fZXN0aW1hdG9yLmNjIiwKQEAgLTk2LDYgKzEwNSw4IEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiYWVjMyIpIHsKICAgICAicmV2ZXJiX21vZGVsX2ZhbGxiYWNr
LmgiLAogICAgICJzaGFkb3dfZmlsdGVyX3VwZGF0ZV9nYWluLmNjIiwKICAgICAic2hhZG93X2Zp
bHRlcl91cGRhdGVfZ2Fpbi5oIiwKKyAgICAic2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRv
ci5jYyIsCisgICAgInNpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3IuaCIsCiAgICAgInNr
ZXdfZXN0aW1hdG9yLmNjIiwKICAgICAic2tld19lc3RpbWF0b3IuaCIsCiAgICAgInN0YXRpb25h
cml0eV9lc3RpbWF0b3IuY2MiLApAQCAtMTgzLDExICsxOTQsMTMgQEAgaWYgKHJ0Y19pbmNsdWRl
X3Rlc3RzKSB7CiAgICAgICAgICJhZGFwdGl2ZV9maXJfZmlsdGVyX3VuaXR0ZXN0LmNjIiwKICAg
ICAgICAgImFlYzNfZmZ0X3VuaXR0ZXN0LmNjIiwKICAgICAgICAgImFlY19zdGF0ZV91bml0dGVz
dC5jYyIsCisgICAgICAgICJhcGlfY2FsbF9qaXR0ZXJfbWV0cmljc191bml0dGVzdC5jYyIsCiAg
ICAgICAgICJibG9ja19kZWxheV9idWZmZXJfdW5pdHRlc3QuY2MiLAogICAgICAgICAiYmxvY2tf
ZnJhbWVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgImJsb2NrX3Byb2Nlc3Nvcl9tZXRyaWNzX3Vu
aXR0ZXN0LmNjIiwKICAgICAgICAgImJsb2NrX3Byb2Nlc3Nvcl91bml0dGVzdC5jYyIsCiAgICAg
ICAgICJjYXNjYWRlZF9iaXF1YWRfZmlsdGVyX3VuaXR0ZXN0LmNjIiwKKyAgICAgICAgImNsb2Nr
ZHJpZnRfZGV0ZWN0b3JfdW5pdHRlc3QuY2MiLAogICAgICAgICAiY29tZm9ydF9ub2lzZV9nZW5l
cmF0b3JfdW5pdHRlc3QuY2MiLAogICAgICAgICAiZGVjaW1hdG9yX3VuaXR0ZXN0LmNjIiwKICAg
ICAgICAgImVjaG9fY2FuY2VsbGVyM191bml0dGVzdC5jYyIsCkBAIC0yMTEsNiArMjI0LDcgQEAg
aWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAgICJyZXNpZHVhbF9lY2hvX2VzdGltYXRv
cl91bml0dGVzdC5jYyIsCiAgICAgICAgICJyZXZlcmJfbW9kZWxfZXN0aW1hdG9yX3VuaXR0ZXN0
LmNjIiwKICAgICAgICAgInNoYWRvd19maWx0ZXJfdXBkYXRlX2dhaW5fdW5pdHRlc3QuY2MiLAor
ICAgICAgICAic2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvcl91bml0dGVzdC5jYyIsCiAg
ICAgICAgICJza2V3X2VzdGltYXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJzdWJ0cmFjdG9y
X3VuaXR0ZXN0LmNjIiwKICAgICAgICAgInN1cHByZXNzaW9uX2ZpbHRlcl91bml0dGVzdC5jYyIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZGFwdGl2ZV9maXJfZmlsdGVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvYWRhcHRpdmVfZmlyX2ZpbHRlci5jYwppbmRleCA5YTFlODExZmNmZTNjZjUy
ZWE5YmI5ODY4ZjkxZjkyN2Q4ZGU3Njg4Li4zYWIxZWJjYzRiOWRlYmNkOTE5ZWFhYmIyZGIzZmQw
OGMzYTNkOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZGFwdGl2ZV9maXJfZmlsdGVy
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0aXZlX2Zpcl9maWx0ZXIuY2MKQEAgLTI0LDcg
KzI0LDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9k
YXRhLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
bG9nZ2luZy5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFs
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC00MTcsMTIgKzQxNywyMSBAQCB2b2lkIEFw
cGx5RmlsdGVyX1NTRTIoY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAogCiB9ICAv
LyBuYW1lc3BhY2UgYWVjMwogCituYW1lc3BhY2UgeworCitib29sIEVuYWJsZVBhcnRpYWxGaWx0
ZXJSZXNldCgpIHsKKyAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVj
M1BhcnRpYWxGaWx0ZXJSZXNldEtpbGxTd2l0Y2giKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisK
IEFkYXB0aXZlRmlyRmlsdGVyOjpBZGFwdGl2ZUZpckZpbHRlcihzaXplX3QgbWF4X3NpemVfcGFy
dGl0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5p
dGlhbF9zaXplX3BhcnRpdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHNpemVfY2hhbmdlX2R1cmF0aW9uX2Jsb2NrcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBZWMzT3B0aW1pemF0aW9uIG9wdGltaXphdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcG1EYXRhRHVtcGVyKiBkYXRhX2R1bXBl
cikKICAgICA6IGRhdGFfZHVtcGVyXyhkYXRhX2R1bXBlciksCisgICAgICB1c2VfcGFydGlhbF9m
aWx0ZXJfcmVzZXRfKEVuYWJsZVBhcnRpYWxGaWx0ZXJSZXNldCgpKSwKICAgICAgIGZmdF8oKSwK
ICAgICAgIG9wdGltaXphdGlvbl8ob3B0aW1pemF0aW9uKSwKICAgICAgIG1heF9zaXplX3BhcnRp
dGlvbnNfKG1heF9zaXplX3BhcnRpdGlvbnMpLApAQCAtNDU1LDIwICs0NjQsMjIgQEAgQWRhcHRp
dmVGaXJGaWx0ZXI6On5BZGFwdGl2ZUZpckZpbHRlcigpID0gZGVmYXVsdDsKIHZvaWQgQWRhcHRp
dmVGaXJGaWx0ZXI6OkhhbmRsZUVjaG9QYXRoQ2hhbmdlKCkgewogICBzaXplX3QgY3VycmVudF9o
X3NpemUgPSBoXy5zaXplKCk7CiAgIGhfLnJlc2l6ZShHZXRUaW1lRG9tYWluTGVuZ3RoKG1heF9z
aXplX3BhcnRpdGlvbnNfKSk7Ci0gIHN0ZDo6ZmlsbChoXy5iZWdpbigpLCBoXy5lbmQoKSwgMC5m
KTsKKyAgY29uc3Qgc2l6ZV90IGJlZ2luX2NvZWZmZmljaWVudCA9CisgICAgICB1c2VfcGFydGlh
bF9maWx0ZXJfcmVzZXRfID8gY3VycmVudF9oX3NpemUgOiAwOworICBzdGQ6OmZpbGwoaF8uYmVn
aW4oKSArIGJlZ2luX2NvZWZmZmljaWVudCwgaF8uZW5kKCksIDAuZik7CiAgIGhfLnJlc2l6ZShj
dXJyZW50X2hfc2l6ZSk7CiAKICAgc2l6ZV90IGN1cnJlbnRfc2l6ZV9wYXJ0aXRpb25zID0gSF8u
c2l6ZSgpOwogICBIXy5yZXNpemUobWF4X3NpemVfcGFydGl0aW9uc18pOwotICBmb3IgKGF1dG8m
IEhfaiA6IEhfKSB7Ci0gICAgSF9qLkNsZWFyKCk7Ci0gIH0KLSAgSF8ucmVzaXplKGN1cnJlbnRf
c2l6ZV9wYXJ0aXRpb25zKTsKLQogICBIMl8ucmVzaXplKG1heF9zaXplX3BhcnRpdGlvbnNfKTsK
LSAgZm9yIChhdXRvJiBIMl9rIDogSDJfKSB7Ci0gICAgSDJfay5maWxsKDAuZik7CisKKyAgY29u
c3Qgc2l6ZV90IGJlZ2luX3BhcnRpdGlvbiA9CisgICAgICB1c2VfcGFydGlhbF9maWx0ZXJfcmVz
ZXRfID8gY3VycmVudF9zaXplX3BhcnRpdGlvbnMgOiAwOworICBmb3IgKHNpemVfdCBrID0gYmVn
aW5fcGFydGl0aW9uOyBrIDwgbWF4X3NpemVfcGFydGl0aW9uc187ICsraykgeworICAgIEhfW2td
LkNsZWFyKCk7CisgICAgSDJfW2tdLmZpbGwoMC5mKTsKICAgfQorICBIXy5yZXNpemUoY3VycmVu
dF9zaXplX3BhcnRpdGlvbnMpOwogICBIMl8ucmVzaXplKGN1cnJlbnRfc2l6ZV9wYXJ0aXRpb25z
KTsKIAogICBlcmxfLmZpbGwoMC5mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0
aXZlX2Zpcl9maWx0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0aXZlX2Zpcl9maWx0ZXIuaApp
bmRleCA1ZGZiNDY2MGZhMjFjMDM3NWNiYmE1ZTJjOTEwNTQ5YmZhMDA3OGI0Li43YzgzMmE2Y2Qy
M2E0MDVjNDZmOGI5ODVhNTYxOWUyMzYwODBhZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9hZGFwdGl2ZV9maXJfZmlsdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWRhcHRpdmVfZmly
X2ZpbHRlci5oCkBAIC0xMSw4ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BRUMzX0FEQVBUSVZFX0ZJUl9GSUxURVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19Q
Uk9DRVNTSU5HX0FFQzNfQURBUFRJVkVfRklSX0ZJTFRFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CiAjaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rv
cj4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCkBAIC0xNjQsNiArMTY0LDcgQEAgY2xh
c3MgQWRhcHRpdmVGaXJGaWx0ZXIgewogICB2b2lkIFVwZGF0ZVNpemUoKTsKIAogICBBcG1EYXRh
RHVtcGVyKiBjb25zdCBkYXRhX2R1bXBlcl87CisgIGNvbnN0IGJvb2wgdXNlX3BhcnRpYWxfZmls
dGVyX3Jlc2V0XzsKICAgY29uc3QgQWVjM0ZmdCBmZnRfOwogICBjb25zdCBBZWMzT3B0aW1pemF0
aW9uIG9wdGltaXphdGlvbl87CiAgIGNvbnN0IHNpemVfdCBtYXhfc2l6ZV9wYXJ0aXRpb25zXzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvYWVjM19jb21tb24uY2MKaW5kZXggYzM3NGEzNTE3ZDYwZTM3YTc5OTFkNGVlOTY0YjEwMGVk
NzAwMWQ2NC4uYWViODQ4YTU3MDBhNjQ4MjBkZGNjZDRmMzNmZjkzMzA1YjU2MWY0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YWVjM19jb21tb24uY2MKQEAgLTEwLDEwICsxMCwxMSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKIAotI2luY2x1ZGUgInN5c3RlbV93
cmFwcGVycy9pbmNsdWRlL2NwdV9mZWF0dXJlc193cmFwcGVyLmgiCisjaW5jbHVkZSA8c3RkaW50
Lmg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
eXN0ZW0vYXJjaC5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9mZWF0
dXJlc193cmFwcGVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hZWMzX2ZmdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfZmZ0LmNjCmluZGV4
IGUyOTQzNGQzMDAyZGRiZjIxNDQzMjkyYmRmZTE5YTczMjhmYWIxMGIuLjE4MzIxMDE4NTUyNDIw
MzBhZTBhOWJlNjI1ZTZiY2RkMWQ2MzllNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Fl
YzNfZmZ0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfZmZ0LmNjCkBAIC0xMiw2ICsxMiw3
IEBACiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNs
dWRlIDxpdGVyYXRvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2ZmdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQu
aAppbmRleCBiNzAwMjIyNTVkOTU2NGQzMzJmZGMyYTQ2YTkxYWQ5MWFhM2U3MzYxLi42Y2Q2NDlh
ZjhmNGM5NmE0MjEzMzQzNzdjYmE5NTU2ZjQ0MzE1ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9hZWMzX2ZmdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfZmZ0LmgKQEAgLTE3LDYg
KzE3LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2Nv
bW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9kYXRh
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvb291cmFfZmZ0
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29u
c3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2FlY19zdGF0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlY19zdGF0ZS5jYwppbmRl
eCA1ZTU4YTFjMjc5YzAzMWFiZjYyOWZmMzYwOTM0ODU4ZTFlMTM0ODViLi5kNWYyNTZiMWMxMjU2
ZTlmZWYyNzQ5MGQ1MDgwZjI5MmViYmQ4YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9h
ZWNfc3RhdGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlLmNjCkBAIC0xMSw3ICsx
MSw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRl
LmgiCiAKICNpbmNsdWRlIDxtYXRoLmg+Ci0KKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVk
ZSA8bnVtZXJpYz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAgLTMwLDYgKzMwLDIyIEBAIGJvb2wg
RW5hYmxlRXJsZVJlc2V0c0F0R2FpbkNoYW5nZXMoKSB7CiAgIHJldHVybiAhZmllbGRfdHJpYWw6
OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNSZXNldEVybGVBdEdhaW5DaGFuZ2VzS2lsbFN3aXRjaCIp
OwogfQogCitib29sIFVzZUxlZ2FjeUZpbHRlclF1YWxpdHlTdGF0ZSgpIHsKKyAgcmV0dXJuIGZp
ZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzRmlsdGVyUXVhbGl0eVN0YXRlS2lsbFN3
aXRjaCIpOworfQorCitib29sIEVuYWJsZUxlZ2FjeVNhdHVyYXRpb25CZWhhdmlvcigpIHsKKyAg
cmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzTmV3U2F0dXJhdGlvbkJl
aGF2aW9yS2lsbFN3aXRjaCIpOworfQorCitib29sIFVzZVN1cHByZXNzaW9uR2FpbkxpbWl0ZXIo
KSB7CisgIHJldHVybiBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM0dhaW5MaW1p
dGVyRGVhY3RpdmF0aW9uS2lsbFN3aXRjaCIpOworfQorYm9vbCBFbmFibGVFcmxlVXBkYXRlc0R1
cmluZ1JldmVyYigpIHsKKyAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKAorICAgICAg
IldlYlJUQy1BZWMzRW5hYmxlRXJsZVVwZGF0ZXNEdXJpbmdSZXZlcmJLaWxsU3dpdGNoIik7Cit9
CisKIGNvbnN0ZXhwciBzaXplX3Qga0Jsb2Nrc1NpbmNlQ29udmVyZ2VuY2VkRmlsdGVySW5pdCA9
IDEwMDAwOwogY29uc3RleHByIHNpemVfdCBrQmxvY2tzU2luY2VDb25zaXN0ZW50RXN0aW1hdGVJ
bml0ID0gMTAwMDA7CiAKQEAgLTUyLDE4ICs2OCwxMCBAQCB2b2lkIEFlY1N0YXRlOjpHZXRSZXNp
ZHVhbEVjaG9TY2FsaW5nKAogfQogCiBhYnNsOjpvcHRpb25hbDxmbG9hdD4gQWVjU3RhdGU6OkVy
bGVVbmNlcnRhaW50eSgpIGNvbnN0IHsKLSAgYm9vbCBmaWx0ZXJfaGFzX2hhZF90aW1lX3RvX2Nv
bnZlcmdlOwotICBpZiAoY29uZmlnXy5maWx0ZXIuY29uc2VydmF0aXZlX2luaXRpYWxfcGhhc2Up
IHsKLSAgICBmaWx0ZXJfaGFzX2hhZF90aW1lX3RvX2NvbnZlcmdlID0KLSAgICAgICAgc3Ryb25n
X25vdF9zYXR1cmF0ZWRfcmVuZGVyX2Jsb2Nrc18gPj0gMS41ZiAqIGtOdW1CbG9ja3NQZXJTZWNv
bmQ7Ci0gIH0gZWxzZSB7Ci0gICAgZmlsdGVyX2hhc19oYWRfdGltZV90b19jb252ZXJnZSA9Ci0g
ICAgICAgIHN0cm9uZ19ub3Rfc2F0dXJhdGVkX3JlbmRlcl9ibG9ja3NfID49IDAuOGYgKiBrTnVt
QmxvY2tzUGVyU2Vjb25kOwotICB9Ci0KLSAgaWYgKCFmaWx0ZXJfaGFzX2hhZF90aW1lX3RvX2Nv
bnZlcmdlKSB7CisgIGlmIChTYXR1cmF0ZWRFY2hvKCkgJiYgdXNlX2xlZ2FjeV9zYXR1cmF0aW9u
X2JlaGF2aW9yXykgewogICAgIHJldHVybiAxLmY7CiAgIH0KKwogICByZXR1cm4gYWJzbDo6bnVs
bG9wdDsKIH0KIApAQCAtNzEsMjIgKzc5LDI0IEBAIEFlY1N0YXRlOjpBZWNTdGF0ZShjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKQogICAgIDogZGF0YV9kdW1wZXJfKAogICAgICAg
ICAgIG5ldyBBcG1EYXRhRHVtcGVyKHJ0Yzo6QXRvbWljT3BzOjpJbmNyZW1lbnQoJmluc3RhbmNl
X2NvdW50XykpKSwKICAgICAgIGNvbmZpZ18oY29uZmlnKSwKKyAgICAgIHVzZV9sZWdhY3lfc2F0
dXJhdGlvbl9iZWhhdmlvcl8oRW5hYmxlTGVnYWN5U2F0dXJhdGlvbkJlaGF2aW9yKCkpLAorICAg
ICAgZW5hYmxlX2VybGVfcmVzZXRzX2F0X2dhaW5fY2hhbmdlc18oRW5hYmxlRXJsZVJlc2V0c0F0
R2FpbkNoYW5nZXMoKSksCisgICAgICBlbmFibGVfZXJsZV91cGRhdGVzX2R1cmluZ19yZXZlcmJf
KEVuYWJsZUVybGVVcGRhdGVzRHVyaW5nUmV2ZXJiKCkpLAorICAgICAgdXNlX2xlZ2FjeV9maWx0
ZXJfcXVhbGl0eV8oVXNlTGVnYWN5RmlsdGVyUXVhbGl0eVN0YXRlKCkpLAorICAgICAgdXNlX3N1
cHByZXNzb3JfZ2Fpbl9saW1pdGVyXyhVc2VTdXBwcmVzc2lvbkdhaW5MaW1pdGVyKCkpLAogICAg
ICAgaW5pdGlhbF9zdGF0ZV8oY29uZmlnXyksCiAgICAgICBkZWxheV9zdGF0ZV8oY29uZmlnXyks
CiAgICAgICB0cmFuc3BhcmVudF9zdGF0ZV8oY29uZmlnXyksCiAgICAgICBmaWx0ZXJfcXVhbGl0
eV9zdGF0ZV8oY29uZmlnXyksCi0gICAgICBzYXR1cmF0aW9uX2RldGVjdG9yXyhjb25maWdfKSwK
KyAgICAgIGxlZ2FjeV9maWx0ZXJfcXVhbGl0eV9zdGF0ZV8oY29uZmlnXyksCisgICAgICBsZWdh
Y3lfc2F0dXJhdGlvbl9kZXRlY3Rvcl8oY29uZmlnXyksCiAgICAgICBlcmxfZXN0aW1hdG9yXygy
ICoga051bUJsb2Nrc1BlclNlY29uZCksCi0gICAgICBlcmxlX2VzdGltYXRvcl8oMiAqIGtOdW1C
bG9ja3NQZXJTZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgY29uZmlnXy5lcmxlLm1pbiwK
LSAgICAgICAgICAgICAgICAgICAgICBjb25maWdfLmVybGUubWF4X2wsCi0gICAgICAgICAgICAg
ICAgICAgICAgY29uZmlnXy5lcmxlLm1heF9oKSwKKyAgICAgIGVybGVfZXN0aW1hdG9yXygyICog
a051bUJsb2Nrc1BlclNlY29uZCwgY29uZmlnXyksCiAgICAgICBzdXBwcmVzc2lvbl9nYWluX2xp
bWl0ZXJfKGNvbmZpZ18pLAogICAgICAgZmlsdGVyX2FuYWx5emVyXyhjb25maWdfKSwKICAgICAg
IGVjaG9fYXVkaWJpbGl0eV8oCiAgICAgICAgICAgY29uZmlnXy5lY2hvX2F1ZGliaWxpdHkudXNl
X3N0YXRpb25hcml0eV9wcm9wZXJ0aWVzX2F0X2luaXQpLAotICAgICAgcmV2ZXJiX21vZGVsX2Vz
dGltYXRvcl8oY29uZmlnXyksCi0gICAgICBlbmFibGVfZXJsZV9yZXNldHNfYXRfZ2Fpbl9jaGFu
Z2VzXyhFbmFibGVFcmxlUmVzZXRzQXRHYWluQ2hhbmdlcygpKSB7fQorICAgICAgcmV2ZXJiX21v
ZGVsX2VzdGltYXRvcl8oY29uZmlnXykge30KIAogQWVjU3RhdGU6On5BZWNTdGF0ZSgpID0gZGVm
YXVsdDsKIApAQCAtOTcsMTMgKzEwNywyMSBAQCB2b2lkIEFlY1N0YXRlOjpIYW5kbGVFY2hvUGF0
aENoYW5nZSgKICAgICBjYXB0dXJlX3NpZ25hbF9zYXR1cmF0aW9uXyA9IGZhbHNlOwogICAgIHN0
cm9uZ19ub3Rfc2F0dXJhdGVkX3JlbmRlcl9ibG9ja3NfID0gMDsKICAgICBibG9ja3Nfd2l0aF9h
Y3RpdmVfcmVuZGVyXyA9IDA7Ci0gICAgc3VwcHJlc3Npb25fZ2Fpbl9saW1pdGVyXy5SZXNldCgp
OworICAgIGlmICh1c2Vfc3VwcHJlc3Nvcl9nYWluX2xpbWl0ZXJfKSB7CisgICAgICBzdXBwcmVz
c2lvbl9nYWluX2xpbWl0ZXJfLlJlc2V0KCk7CisgICAgfQogICAgIGluaXRpYWxfc3RhdGVfLlJl
c2V0KCk7CiAgICAgdHJhbnNwYXJlbnRfc3RhdGVfLlJlc2V0KCk7Ci0gICAgc2F0dXJhdGlvbl9k
ZXRlY3Rvcl8uUmVzZXQoKTsKKyAgICBpZiAodXNlX2xlZ2FjeV9zYXR1cmF0aW9uX2JlaGF2aW9y
XykgeworICAgICAgbGVnYWN5X3NhdHVyYXRpb25fZGV0ZWN0b3JfLlJlc2V0KCk7CisgICAgfQog
ICAgIGVybGVfZXN0aW1hdG9yXy5SZXNldCh0cnVlKTsKICAgICBlcmxfZXN0aW1hdG9yXy5SZXNl
dCgpOwotICAgIGZpbHRlcl9xdWFsaXR5X3N0YXRlXy5SZXNldCgpOworICAgIGlmICh1c2VfbGVn
YWN5X2ZpbHRlcl9xdWFsaXR5XykgeworICAgICAgbGVnYWN5X2ZpbHRlcl9xdWFsaXR5X3N0YXRl
Xy5SZXNldCgpOworICAgIH0gZWxzZSB7CisgICAgICBmaWx0ZXJfcXVhbGl0eV9zdGF0ZV8uUmVz
ZXQoKTsKKyAgICB9CiAgIH07CiAKICAgLy8gVE9ETyhwZWFoKTogUmVmaW5lIHRoZSByZXNldCBz
Y2hlbWUgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mIGdhaW4gYW5kCkBAIC0xNTUsMzUgKzE3Myw1
NiBAQCB2b2lkIEFlY1N0YXRlOjpVcGRhdGUoCiAgIHN0cm9uZ19ub3Rfc2F0dXJhdGVkX3JlbmRl
cl9ibG9ja3NfICs9CiAgICAgICBhY3RpdmVfcmVuZGVyICYmICFTYXR1cmF0ZWRDYXB0dXJlKCkg
PyAxIDogMDsKIAotICAvLyBVcGRhdGUgdGhlIGxpbWl0IG9uIHRoZSBlY2hvIHN1cHByIGVzc2lv
biBhZnRlciBhbiBlY2hvIHBhdGggY2hhbmdlIHRvCi0gIC8vIGF2b2lkIGFuIGluaXRpYWwgZWNo
byBidXJzdC4KLSAgc3VwcHJlc3Npb25fZ2Fpbl9saW1pdGVyXy5VcGRhdGUocmVuZGVyX2J1ZmZl
ci5HZXRSZW5kZXJBY3Rpdml0eSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUcmFuc3BhcmVudE1vZGUoKSk7Ci0gIGlmIChzdWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl8u
Q29udmVyZ2VkRmlsdGVyKCkpIHsKLSAgICBzdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXJfLkRlYWN0
aXZhdGUoKTsKKyAgaWYgKHVzZV9zdXBwcmVzc29yX2dhaW5fbGltaXRlcl8pIHsKKyAgICAvLyBV
cGRhdGUgdGhlIGxpbWl0IG9uIHRoZSBlY2hvIHN1cHByZXNzaW9uIGFmdGVyIGFuIGVjaG8gcGF0
aCBjaGFuZ2UgdG8KKyAgICAvLyBhdm9pZCBhbiBpbml0aWFsIGVjaG8gYnVyc3QuCisgICAgc3Vw
cHJlc3Npb25fZ2Fpbl9saW1pdGVyXy5VcGRhdGUocmVuZGVyX2J1ZmZlci5HZXRSZW5kZXJBY3Rp
dml0eSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcGFyZW50
TW9kZSgpKTsKKworICAgIGlmIChzdWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl8uQ29udmVyZ2Vk
RmlsdGVyKCkpIHsKKyAgICAgIHN1cHByZXNzaW9uX2dhaW5fbGltaXRlcl8uRGVhY3RpdmF0ZSgp
OworICAgIH0KICAgfQogCisgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4g
WDJfcmV2ZXJiOworICByZW5kZXJfcmV2ZXJiXy5BcHBseSgKKyAgICAgIHJlbmRlcl9idWZmZXIu
R2V0U3BlY3RydW1CdWZmZXIoKSwgZGVsYXlfc3RhdGVfLkRpcmVjdFBhdGhGaWx0ZXJEZWxheSgp
LAorICAgICAgY29uZmlnXy5lcF9zdHJlbmd0aC5yZXZlcmJfYmFzZWRfb25fcmVuZGVyID8gUmV2
ZXJiRGVjYXkoKSA6IDAuZiwKKyAgICAgIFgyX3JldmVyYik7CisKICAgaWYgKGNvbmZpZ18uZWNo
b19hdWRpYmlsaXR5LnVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXMpIHsKICAgICAvLyBVcGRhdGUg
dGhlIGVjaG8gYXVkaWJpbGl0eSBldmFsdWF0b3IuCi0gICAgZWNob19hdWRpYmlsaXR5Xy5VcGRh
dGUoCi0gICAgICAgIHJlbmRlcl9idWZmZXIsIGRlbGF5X3N0YXRlXy5EaXJlY3RQYXRoRmlsdGVy
RGVsYXkoKSwKLSAgICAgICAgZGVsYXlfc3RhdGVfLkV4dGVybmFsRGVsYXlSZXBvcnRlZCgpLAot
ICAgICAgICBjb25maWdfLmVwX3N0cmVuZ3RoLnJldmVyYl9iYXNlZF9vbl9yZW5kZXIgPyBSZXZl
cmJEZWNheSgpIDogMC5mKTsKKyAgICBlY2hvX2F1ZGliaWxpdHlfLlVwZGF0ZShyZW5kZXJfYnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9yZXZlcmJfLkdldFJldmVy
YkNvbnRyaWJ1dGlvblBvd2VyU3BlY3RydW0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWxheV9zdGF0ZV8uRGlyZWN0UGF0aEZpbHRlckRlbGF5KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVsYXlfc3RhdGVfLkV4dGVybmFsRGVsYXlSZXBvcnRlZCgpKTsKICAgfQog
CiAgIC8vIFVwZGF0ZSB0aGUgRVJMIGFuZCBFUkxFIG1lYXN1cmVzLgogICBpZiAoaW5pdGlhbF9z
dGF0ZV8uVHJhbnNpdGlvblRyaWdnZXJlZCgpKSB7CiAgICAgZXJsZV9lc3RpbWF0b3JfLlJlc2V0
KGZhbHNlKTsKICAgfQorCiAgIGNvbnN0IGF1dG8mIFgyID0gcmVuZGVyX2J1ZmZlci5TcGVjdHJ1
bShkZWxheV9zdGF0ZV8uRGlyZWN0UGF0aEZpbHRlckRlbGF5KCkpOwotICBlcmxlX2VzdGltYXRv
cl8uVXBkYXRlKFgyLCBZMiwgRTJfbWFpbiwKKyAgY29uc3QgYXV0byYgWDJfaW5wdXRfZXJsZSA9
CisgICAgICBlbmFibGVfZXJsZV91cGRhdGVzX2R1cmluZ19yZXZlcmJfID8gWDJfcmV2ZXJiIDog
WDI7CisKKyAgZXJsZV9lc3RpbWF0b3JfLlVwZGF0ZShyZW5kZXJfYnVmZmVyLCBhZGFwdGl2ZV9m
aWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFgyX2lu
cHV0X2VybGUsIFkyLCBFMl9tYWluLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRyYWN0
b3Jfb3V0cHV0X2FuYWx5emVyXy5Db252ZXJnZWRGaWx0ZXIoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25maWdfLmVybGUub25zZXRfZGV0ZWN0aW9uKTsKKwogICBlcmxfZXN0aW1hdG9y
Xy5VcGRhdGUoc3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXJfLkNvbnZlcmdlZEZpbHRlcigpLCBY
MiwgWTIpOwogCiAgIC8vIERldGVjdCBhbmQgZmxhZyBlY2hvIHNhdHVyYXRpb24uCi0gIHNhdHVy
YXRpb25fZGV0ZWN0b3JfLlVwZGF0ZShhbGlnbmVkX3JlbmRlcl9ibG9jaywgU2F0dXJhdGVkQ2Fw
dHVyZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNob1BhdGhHYWluKCkpOwor
ICBpZiAodXNlX2xlZ2FjeV9zYXR1cmF0aW9uX2JlaGF2aW9yXykgeworICAgIGxlZ2FjeV9zYXR1
cmF0aW9uX2RldGVjdG9yXy5VcGRhdGUoYWxpZ25lZF9yZW5kZXJfYmxvY2ssIFNhdHVyYXRlZENh
cHR1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVjaG9QYXRo
R2FpbigpKTsKKyAgfSBlbHNlIHsKKyAgICBzYXR1cmF0aW9uX2RldGVjdG9yXy5VcGRhdGUoYWxp
Z25lZF9yZW5kZXJfYmxvY2ssIFNhdHVyYXRlZENhcHR1cmUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVXNhYmxlTGluZWFyRXN0aW1hdGUoKSwgc3VidHJhY3Rvcl9vdXRwdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVjaG9QYXRoR2FpbigpKTsKKyAgfQog
CiAgIC8vIFVwZGF0ZSB0aGUgZGVjaXNpb24gb24gd2hldGhlciB0byB1c2UgdGhlIGluaXRpYWwg
c3RhdGUgcGFyYW1ldGVyIHNldC4KICAgaW5pdGlhbF9zdGF0ZV8uVXBkYXRlKGFjdGl2ZV9yZW5k
ZXIsIFNhdHVyYXRlZENhcHR1cmUoKSk7CkBAIC0xOTYsMTEgKzIzNSwxNyBAQCB2b2lkIEFlY1N0
YXRlOjpVcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlX3JlbmRlciwg
U2F0dXJhdGVkQ2FwdHVyZSgpKTsKIAogICAvLyBBbmFseXplIHRoZSBxdWFsaXR5IG9mIHRoZSBm
aWx0ZXIuCi0gIGZpbHRlcl9xdWFsaXR5X3N0YXRlXy5VcGRhdGUoc2F0dXJhdGlvbl9kZXRlY3Rv
cl8uU2F0dXJhdGVkRWNobygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2
ZV9yZW5kZXIsIFNhdHVyYXRlZENhcHR1cmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUcmFuc3BhcmVudE1vZGUoKSwgZXh0ZXJuYWxfZGVsYXksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXJfLkNvbnZlcmdlZEZpbHRl
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRyYWN0b3Jfb3V0cHV0X2Fu
YWx5emVyXy5EaXZlcmdlZEZpbHRlcigpKTsKKyAgaWYgKHVzZV9sZWdhY3lfZmlsdGVyX3F1YWxp
dHlfKSB7CisgICAgbGVnYWN5X2ZpbHRlcl9xdWFsaXR5X3N0YXRlXy5VcGRhdGUoCisgICAgICAg
IFNhdHVyYXRlZEVjaG8oKSwgYWN0aXZlX3JlbmRlciwgU2F0dXJhdGVkQ2FwdHVyZSgpLCBUcmFu
c3BhcmVudE1vZGUoKSwKKyAgICAgICAgZXh0ZXJuYWxfZGVsYXksIHN1YnRyYWN0b3Jfb3V0cHV0
X2FuYWx5emVyXy5Db252ZXJnZWRGaWx0ZXIoKSwKKyAgICAgICAgc3VidHJhY3Rvcl9vdXRwdXRf
YW5hbHl6ZXJfLkRpdmVyZ2VkRmlsdGVyKCkpOworICB9IGVsc2UgeworICAgIGZpbHRlcl9xdWFs
aXR5X3N0YXRlXy5VcGRhdGUoYWN0aXZlX3JlbmRlciwgVHJhbnNwYXJlbnRNb2RlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXR1cmF0ZWRDYXB0dXJlKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfYW5hbHl6ZXJfLkNvbnNpc3RlbnQoKSwg
ZXh0ZXJuYWxfZGVsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0cmFj
dG9yX291dHB1dF9hbmFseXplcl8uQ29udmVyZ2VkRmlsdGVyKCkpOworICB9CiAKICAgLy8gVXBk
YXRlIHRoZSByZXZlcmIgZXN0aW1hdGUuCiAgIGNvbnN0IGJvb2wgc3RhdGlvbmFyeV9ibG9jayA9
CkBAIC0yMjcsOCArMjcyLDcgQEAgdm9pZCBBZWNTdGF0ZTo6VXBkYXRlKAogICBkYXRhX2R1bXBl
cl8tPkR1bXBSYXcoImFlYzNfaW5pdGlhbF9zdGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBpbml0aWFsX3N0YXRlXy5Jbml0aWFsU3RhdGVBY3RpdmUoKSk7CiAgIGRhdGFfZHVtcGVyXy0+
RHVtcFJhdygiYWVjM19jYXB0dXJlX3NhdHVyYXRpb24iLCBTYXR1cmF0ZWRDYXB0dXJlKCkpOwot
ICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfZWNob19zYXR1cmF0aW9uIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNhdHVyYXRpb25fZGV0ZWN0b3JfLlNhdHVyYXRlZEVjaG8oKSk7Cisg
IGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19lY2hvX3NhdHVyYXRpb24iLCBTYXR1cmF0ZWRF
Y2hvKCkpOwogICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfY29udmVyZ2VkX2ZpbHRlciIs
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl8uQ29u
dmVyZ2VkRmlsdGVyKCkpOwogICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfZGl2ZXJnZWRf
ZmlsdGVyIiwKQEAgLTM4Miw2ICs0MjYsNTEgQEAgdm9pZCBBZWNTdGF0ZTo6VHJhbnNwYXJlbnRN
b2RlOjpVcGRhdGUoaW50IGZpbHRlcl9kZWxheV9ibG9ja3MsCiB9CiAKIEFlY1N0YXRlOjpGaWx0
ZXJpbmdRdWFsaXR5QW5hbHl6ZXI6OkZpbHRlcmluZ1F1YWxpdHlBbmFseXplcigKKyAgICBjb25z
dCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKSB7fQorCit2b2lkIEFlY1N0YXRlOjpGaWx0
ZXJpbmdRdWFsaXR5QW5hbHl6ZXI6OlJlc2V0KCkgeworICB1c2FibGVfbGluZWFyX2VzdGltYXRl
XyA9IGZhbHNlOworICBmaWx0ZXJfdXBkYXRlX2Jsb2Nrc19zaW5jZV9yZXNldF8gPSAwOworfQor
Cit2b2lkIEFlY1N0YXRlOjpGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXI6OlVwZGF0ZSgKKyAgICBi
b29sIGFjdGl2ZV9yZW5kZXIsCisgICAgYm9vbCB0cmFuc3BhcmVudF9tb2RlLAorICAgIGJvb2wg
c2F0dXJhdGVkX2NhcHR1cmUsCisgICAgYm9vbCBjb25zaXN0ZW50X2VzdGltYXRlXywKKyAgICBj
b25zdCBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiYgZXh0ZXJuYWxfZGVsYXksCisgICAg
Ym9vbCBjb252ZXJnZWRfZmlsdGVyKSB7CisgIC8vIFVwZGF0ZSBibG9ja3MgY291bnRlci4KKyAg
Y29uc3QgYm9vbCBmaWx0ZXJfdXBkYXRlID0gYWN0aXZlX3JlbmRlciAmJiAhc2F0dXJhdGVkX2Nh
cHR1cmU7CisgIGZpbHRlcl91cGRhdGVfYmxvY2tzX3NpbmNlX3Jlc2V0XyArPSBmaWx0ZXJfdXBk
YXRlID8gMSA6IDA7CisgIGZpbHRlcl91cGRhdGVfYmxvY2tzX3NpbmNlX3N0YXJ0XyArPSBmaWx0
ZXJfdXBkYXRlID8gMSA6IDA7CisKKyAgLy8gU3RvcmUgY29udmVyZ2VuY2UgZmxhZyB3aGVuIG9i
c2VydmVkLgorICBjb252ZXJnZW5jZV9zZWVuXyA9IGNvbnZlcmdlbmNlX3NlZW5fIHx8IGNvbnZl
cmdlZF9maWx0ZXI7CisKKyAgLy8gVmVyaWZ5IHJlcXVpcmVtZW50cyBmb3IgYWNoaWV2aW5nIGEg
ZGVjZW50IGZpbHRlci4gVGhlIHJlcXVpcmVtZW50cyBmb3IKKyAgLy8gZmlsdGVyIGFkYXB0YXRp
b24gYXQgY2FsbCBzdGFydHVwIGFyZSBtb3JlIHJlc3RyaWN0aXZlIHRoYW4gYWZ0ZXIgYW4KKyAg
Ly8gaW4tY2FsbCByZXNldC4KKyAgY29uc3QgYm9vbCBzdWZmaWNpZW50X2RhdGFfdG9fY29udmVy
Z2VfYXRfc3RhcnR1cCA9CisgICAgICBmaWx0ZXJfdXBkYXRlX2Jsb2Nrc19zaW5jZV9zdGFydF8g
PiBrTnVtQmxvY2tzUGVyU2Vjb25kICogMC40ZjsKKyAgY29uc3QgYm9vbCBzdWZmaWNpZW50X2Rh
dGFfdG9fY29udmVyZ2VfYXRfcmVzZXQgPQorICAgICAgc3VmZmljaWVudF9kYXRhX3RvX2NvbnZl
cmdlX2F0X3N0YXJ0dXAgJiYKKyAgICAgIGZpbHRlcl91cGRhdGVfYmxvY2tzX3NpbmNlX3Jlc2V0
XyA+IGtOdW1CbG9ja3NQZXJTZWNvbmQgKiAwLjJmOworCisgIC8vIFRoZSBsaW5lYXIgZmlsdGVy
IGNhbiBvbmx5IGJlIHVzZWQgaXQgaGFzIGhhZCB0aW1lIHRvIGNvbnZlcmdlLgorICB1c2FibGVf
bGluZWFyX2VzdGltYXRlXyA9IHN1ZmZpY2llbnRfZGF0YV90b19jb252ZXJnZV9hdF9zdGFydHVw
ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZmljaWVudF9kYXRhX3RvX2NvbnZl
cmdlX2F0X3Jlc2V0OworCisgIC8vIFRoZSBsaW5lYXIgZmlsdGVyIGNhbiBvbmx5IGJlIHVzZWQg
aWYgYW4gZXh0ZXJuYWwgZGVsYXkgb3IgY29udmVyZ2VuY2UgaGF2ZQorICAvLyBiZWVuIGlkZW50
aWZpZWQKKyAgdXNhYmxlX2xpbmVhcl9lc3RpbWF0ZV8gPQorICAgICAgdXNhYmxlX2xpbmVhcl9l
c3RpbWF0ZV8gJiYgKGV4dGVybmFsX2RlbGF5IHx8IGNvbnZlcmdlbmNlX3NlZW5fKTsKKworICAv
LyBJZiB0cmFuc3BhcmVudCBtb2RlIGlzIG9uLCBkZWFjdGl2YXRlIHVzaWduIHRoZSBsaW5lYXIg
ZmlsdGVyLgorICB1c2FibGVfbGluZWFyX2VzdGltYXRlXyA9IHVzYWJsZV9saW5lYXJfZXN0aW1h
dGVfICYmICF0cmFuc3BhcmVudF9tb2RlOworfQorCitBZWNTdGF0ZTo6TGVnYWN5RmlsdGVyaW5n
UXVhbGl0eUFuYWx5emVyOjpMZWdhY3lGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXIoCiAgICAgY29u
c3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZykKICAgICA6IGNvbnNlcnZhdGl2ZV9pbml0
aWFsX3BoYXNlXyhjb25maWcuZmlsdGVyLmNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlKSwKICAg
ICAgIHJlcXVpcmVkX2Jsb2Nrc19mb3JfY29udmVyZ2VuY2VfKApAQCAtMzkwLDcgKzQ3OSw3IEBA
IEFlY1N0YXRlOjpGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXI6OkZpbHRlcmluZ1F1YWxpdHlBbmFs
eXplcigKICAgICAgICAgICBjb25maWcuZWNob19yZW1vdmFsX2NvbnRyb2wubGluZWFyX2FuZF9z
dGFibGVfZWNob19wYXRoKSwKICAgICAgIG5vbl9jb252ZXJnZWRfc2VxdWVuY2Vfc2l6ZV8oa0Js
b2Nrc1NpbmNlQ29udmVyZ2VuY2VkRmlsdGVySW5pdCkge30KIAotdm9pZCBBZWNTdGF0ZTo6Rmls
dGVyaW5nUXVhbGl0eUFuYWx5emVyOjpSZXNldCgpIHsKK3ZvaWQgQWVjU3RhdGU6OkxlZ2FjeUZp
bHRlcmluZ1F1YWxpdHlBbmFseXplcjo6UmVzZXQoKSB7CiAgIHVzYWJsZV9saW5lYXJfZXN0aW1h
dGVfID0gZmFsc2U7CiAgIHN0cm9uZ19ub3Rfc2F0dXJhdGVkX3JlbmRlcl9ibG9ja3NfID0gMDsK
ICAgaWYgKGxpbmVhcl9hbmRfc3RhYmxlX2VjaG9fcGF0aF8pIHsKQEAgLTQwMiw3ICs0OTEsNyBA
QCB2b2lkIEFlY1N0YXRlOjpGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXI6OlJlc2V0KCkgewogICBy
ZWNlbnRfY29udmVyZ2VuY2VfID0gdHJ1ZTsKIH0KIAotdm9pZCBBZWNTdGF0ZTo6RmlsdGVyaW5n
UXVhbGl0eUFuYWx5emVyOjpVcGRhdGUoCit2b2lkIEFlY1N0YXRlOjpMZWdhY3lGaWx0ZXJpbmdR
dWFsaXR5QW5hbHl6ZXI6OlVwZGF0ZSgKICAgICBib29sIHNhdHVyYXRlZF9lY2hvLAogICAgIGJv
b2wgYWN0aXZlX3JlbmRlciwKICAgICBib29sIHNhdHVyYXRlZF9jYXB0dXJlLApAQCAtNDU0LDE4
ICs1NDMsNDEgQEAgdm9pZCBBZWNTdGF0ZTo6RmlsdGVyaW5nUXVhbGl0eUFuYWx5emVyOjpVcGRh
dGUoCiAgIH0KIH0KIAotQWVjU3RhdGU6OlNhdHVyYXRpb25EZXRlY3Rvcjo6U2F0dXJhdGlvbkRl
dGVjdG9yKAordm9pZCBBZWNTdGF0ZTo6U2F0dXJhdGlvbkRldGVjdG9yOjpVcGRhdGUoCisgICAg
cnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHgsCisgICAgYm9vbCBzYXR1cmF0ZWRfY2FwdHVy
ZSwKKyAgICBib29sIHVzYWJsZV9saW5lYXJfZXN0aW1hdGUsCisgICAgY29uc3QgU3VidHJhY3Rv
ck91dHB1dCYgc3VidHJhY3Rvcl9vdXRwdXQsCisgICAgZmxvYXQgZWNob19wYXRoX2dhaW4pIHsK
KyAgc2F0dXJhdGVkX2VjaG9fID0gc2F0dXJhdGVkX2NhcHR1cmU7CisgIGlmICh1c2FibGVfbGlu
ZWFyX2VzdGltYXRlKSB7CisgICAgY29uc3RleHByIGZsb2F0IGtTYXR1cmF0aW9uVGhyZXNob2xk
ID0gMjAwMDAuZjsKKyAgICBzYXR1cmF0ZWRfZWNob18gPQorICAgICAgICBzYXR1cmF0ZWRfZWNo
b18gJiYKKyAgICAgICAgKHN1YnRyYWN0b3Jfb3V0cHV0LnNfbWFpbl9tYXhfYWJzID4ga1NhdHVy
YXRpb25UaHJlc2hvbGQgfHwKKyAgICAgICAgIHN1YnRyYWN0b3Jfb3V0cHV0LnNfc2hhZG93X21h
eF9hYnMgPiBrU2F0dXJhdGlvblRocmVzaG9sZCk7CisgIH0gZWxzZSB7CisgICAgY29uc3QgZmxv
YXQgbWF4X3NhbXBsZSA9IGZhYnMoKnN0ZDo6bWF4X2VsZW1lbnQoCisgICAgICAgIHguYmVnaW4o
KSwgeC5lbmQoKSwgW10oZmxvYXQgYSwgZmxvYXQgYikgeyByZXR1cm4gYSAqIGEgPCBiICogYjsg
fSkpOworCisgICAgY29uc3QgZmxvYXQga01hcmdpbiA9IDEwLmY7CisgICAgZmxvYXQgcGVha19l
Y2hvX2FtcGxpdHVkZSA9IG1heF9zYW1wbGUgKiBlY2hvX3BhdGhfZ2FpbiAqIGtNYXJnaW47Cisg
ICAgc2F0dXJhdGVkX2VjaG9fID0gc2F0dXJhdGVkX2VjaG9fICYmIHBlYWtfZWNob19hbXBsaXR1
ZGUgPiAzMjAwMDsKKyAgfQorfQorCitBZWNTdGF0ZTo6TGVnYWN5U2F0dXJhdGlvbkRldGVjdG9y
OjpMZWdhY3lTYXR1cmF0aW9uRGV0ZWN0b3IoCiAgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25m
aWcmIGNvbmZpZykKICAgICA6IGVjaG9fY2FuX3NhdHVyYXRlXyhjb25maWcuZXBfc3RyZW5ndGgu
ZWNob19jYW5fc2F0dXJhdGUpLAogICAgICAgbm90X3NhdHVyYXRlZF9zZXF1ZW5jZV9zaXplXygx
MDAwKSB7fQogCi12b2lkIEFlY1N0YXRlOjpTYXR1cmF0aW9uRGV0ZWN0b3I6OlJlc2V0KCkgewor
dm9pZCBBZWNTdGF0ZTo6TGVnYWN5U2F0dXJhdGlvbkRldGVjdG9yOjpSZXNldCgpIHsKICAgbm90
X3NhdHVyYXRlZF9zZXF1ZW5jZV9zaXplXyA9IDA7CiB9CiAKLXZvaWQgQWVjU3RhdGU6OlNhdHVy
YXRpb25EZXRlY3Rvcjo6VXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiB4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXR1cmF0ZWRfY2Fw
dHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGVj
aG9fcGF0aF9nYWluKSB7Cit2b2lkIEFlY1N0YXRlOjpMZWdhY3lTYXR1cmF0aW9uRGV0ZWN0b3I6
OlVwZGF0ZShydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4geCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F0dXJhdGVkX2NhcHR1cmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBlY2hv
X3BhdGhfZ2FpbikgewogICBpZiAoIWVjaG9fY2FuX3NhdHVyYXRlXykgewogICAgIHNhdHVyYXRl
ZF9lY2hvXyA9IGZhbHNlOwogICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2FlY19zdGF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlLmgKaW5kZXggY2E0NzY0Mjhh
NTRkODRhY2QyMjQwNjA4N2RmYmUyMzJkNjRiNDVmYS4uYzlkOWNmM2YzYTBiZDI4YzRhYjZmNjYy
Mjc3MmM3ODU4YjIxNTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlLmgKQEAgLTExLDkgKzExLDggQEAKICNpZm5k
ZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQUVDX1NUQVRFX0hfCiAjZGVmaW5lIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0FFQ19TVEFURV9IXwogCi0jaW5jbHVkZSA8bWF0
aC5oPgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1
ZGUgPGFycmF5PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAgLTI4
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxl
X2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Zp
bHRlcl9hbmFseXplci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JlbmRlcl9idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZW5kZXJfcmV2ZXJiX21vZGVsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvcmV2ZXJiX21vZGVsX2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXIuaCIKQEAg
LTQ2LDExICs0NiwxNyBAQCBjbGFzcyBBZWNTdGF0ZSB7CiAgIC8vIFJldHVybnMgd2hldGhlciB0
aGUgZWNobyBzdWJ0cmFjdG9yIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgcmVzaWR1YWwK
ICAgLy8gZWNoby4KICAgYm9vbCBVc2FibGVMaW5lYXJFc3RpbWF0ZSgpIGNvbnN0IHsKKyAgICBp
ZiAodXNlX2xlZ2FjeV9maWx0ZXJfcXVhbGl0eV8pIHsKKyAgICAgIHJldHVybiBsZWdhY3lfZmls
dGVyX3F1YWxpdHlfc3RhdGVfLkxpbmVhckZpbHRlclVzYWJsZSgpOworICAgIH0KICAgICByZXR1
cm4gZmlsdGVyX3F1YWxpdHlfc3RhdGVfLkxpbmVhckZpbHRlclVzYWJsZSgpOwogICB9CiAKICAg
Ly8gUmV0dXJucyB3aGV0aGVyIHRoZSBlY2hvIHN1YnRyYWN0b3Igb3V0cHV0IHNob3VsZCBiZSB1
c2VkIGFzIG91dHB1dC4KICAgYm9vbCBVc2VMaW5lYXJGaWx0ZXJPdXRwdXQoKSBjb25zdCB7Cisg
ICAgaWYgKHVzZV9sZWdhY3lfZmlsdGVyX3F1YWxpdHlfKSB7CisgICAgICByZXR1cm4gbGVnYWN5
X2ZpbHRlcl9xdWFsaXR5X3N0YXRlXy5MaW5lYXJGaWx0ZXJVc2FibGUoKTsKKyAgICB9CiAgICAg
cmV0dXJuIGZpbHRlcl9xdWFsaXR5X3N0YXRlXy5MaW5lYXJGaWx0ZXJVc2FibGUoKTsKICAgfQog
CkBAIC05OSw3ICsxMDUsMTEgQEAgY2xhc3MgQWVjU3RhdGUgewogICBib29sIFNhdHVyYXRlZENh
cHR1cmUoKSBjb25zdCB7IHJldHVybiBjYXB0dXJlX3NpZ25hbF9zYXR1cmF0aW9uXzsgfQogCiAg
IC8vIFJldHVybnMgd2hldGhlciB0aGUgZWNobyBzaWduYWwgaXMgc2F0dXJhdGVkLgotICBib29s
IFNhdHVyYXRlZEVjaG8oKSBjb25zdCB7IHJldHVybiBzYXR1cmF0aW9uX2RldGVjdG9yXy5TYXR1
cmF0ZWRFY2hvKCk7IH0KKyAgYm9vbCBTYXR1cmF0ZWRFY2hvKCkgY29uc3QgeworICAgIHJldHVy
biB1c2VfbGVnYWN5X3NhdHVyYXRpb25fYmVoYXZpb3JfCisgICAgICAgICAgICAgICA/IGxlZ2Fj
eV9zYXR1cmF0aW9uX2RldGVjdG9yXy5TYXR1cmF0ZWRFY2hvKCkKKyAgICAgICAgICAgICAgIDog
c2F0dXJhdGlvbl9kZXRlY3Rvcl8uU2F0dXJhdGVkRWNobygpOworICB9CiAKICAgLy8gVXBkYXRl
cyB0aGUgY2FwdHVyZSBzaWduYWwgc2F0dXJhdGlvbi4KICAgdm9pZCBVcGRhdGVDYXB0dXJlU2F0
dXJhdGlvbihib29sIGNhcHR1cmVfc2lnbmFsX3NhdHVyYXRpb24pIHsKQEAgLTEyMiw3ICsxMzIs
MTEgQEAgY2xhc3MgQWVjU3RhdGUgewogCiAgIC8vIFJldHVybnMgdGhlIHVwcGVyIGxpbWl0IGZv
ciB0aGUgZWNobyBzdXBwcmVzc2lvbiBnYWluLgogICBmbG9hdCBTdXBwcmVzc2lvbkdhaW5MaW1p
dCgpIGNvbnN0IHsKLSAgICByZXR1cm4gc3VwcHJlc3Npb25fZ2Fpbl9saW1pdGVyXy5MaW1pdCgp
OworICAgIGlmICh1c2Vfc3VwcHJlc3Nvcl9nYWluX2xpbWl0ZXJfKSB7CisgICAgICByZXR1cm4g
c3VwcHJlc3Npb25fZ2Fpbl9saW1pdGVyXy5MaW1pdCgpOworICAgIH0gZWxzZSB7CisgICAgICBy
ZXR1cm4gMS5mOworICAgIH0KICAgfQogCiAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgc3VwcHJl
c3Npb24gZ2FpbiBsaW1pdGVyIGlzIGFjdGl2ZS4KQEAgLTE1MywxMyArMTY3LDE0IEBAIGNsYXNz
IEFlY1N0YXRlIHsKICAgfQogCiAgcHJpdmF0ZToKLSAgdm9pZCBVcGRhdGVTdXBwcmVzc29yR2Fp
bkxpbWl0KGJvb2wgcmVuZGVyX2FjdGl2aXR5KTsKLSAgYm9vbCBEZXRlY3RFY2hvU2F0dXJhdGlv
bihydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4geCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCBlY2hvX3BhdGhfZ2Fpbik7Ci0KICAgc3RhdGljIGludCBpbnN0YW5jZV9jb3Vu
dF87CiAgIHN0ZDo6dW5pcXVlX3B0cjxBcG1EYXRhRHVtcGVyPiBkYXRhX2R1bXBlcl87CiAgIGNv
bnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZ187CisgIGNvbnN0IGJvb2wgdXNlX2xlZ2Fj
eV9zYXR1cmF0aW9uX2JlaGF2aW9yXzsKKyAgY29uc3QgYm9vbCBlbmFibGVfZXJsZV9yZXNldHNf
YXRfZ2Fpbl9jaGFuZ2VzXzsKKyAgY29uc3QgYm9vbCBlbmFibGVfZXJsZV91cGRhdGVzX2R1cmlu
Z19yZXZlcmJfOworICBjb25zdCBib29sIHVzZV9sZWdhY3lfZmlsdGVyX3F1YWxpdHlfOworICBj
b25zdCBib29sIHVzZV9zdXBwcmVzc29yX2dhaW5fbGltaXRlcl87CiAKICAgLy8gQ2xhc3MgZm9y
IGNvbnRyb2xsaW5nIHRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIGludGlhbCBzdGF0ZSwgd2hpY2gg
aW4gdHVybgogICAvLyBjb250cm9scyB3aGVuIHRoZSBmaWx0ZXIgcGFyYW1ldGVycyBmb3IgdGhl
IGluaXRpYWwgc3RhdGUgc2hvdWxkIGJlIHVzZWQuCkBAIC0yNTUsNyArMjcwLDM3IEBAIGNsYXNz
IEFlY1N0YXRlIHsKICAgLy8gc3VwcHJlc3Nvci4KICAgY2xhc3MgRmlsdGVyaW5nUXVhbGl0eUFu
YWx5emVyIHsKICAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6
ZXIoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZyk7CisgICAgRmlsdGVyaW5nUXVh
bGl0eUFuYWx5emVyKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpOworCisgICAg
Ly8gUmV0dXJucyB3aGV0aGVyIHRoZSB0aGUgbGluZWFyIGZpbHRlciBjYW4gYmUgdXNlZCBmb3Ig
dGhlIGVjaG8KKyAgICAvLyBjYW5jZWxsZXIgb3V0cHV0LgorICAgIGJvb2wgTGluZWFyRmlsdGVy
VXNhYmxlKCkgY29uc3QgeyByZXR1cm4gdXNhYmxlX2xpbmVhcl9lc3RpbWF0ZV87IH0KKworICAg
IC8vIFJlc2V0cyB0aGUgc3RhdGUgb2YgdGhlIGFuYWx5emVyLgorICAgIHZvaWQgUmVzZXQoKTsK
KworICAgIC8vIFVwZGF0ZXMgdGhlIGFuYWx5c2lzIGJhc2VkIG9uIG5ldyBkYXRhLgorICAgIHZv
aWQgVXBkYXRlKGJvb2wgYWN0aXZlX3JlbmRlciwKKyAgICAgICAgICAgICAgICBib29sIHRyYW5z
cGFyZW50X21vZGUsCisgICAgICAgICAgICAgICAgYm9vbCBzYXR1cmF0ZWRfY2FwdHVyZSwKKyAg
ICAgICAgICAgICAgICBib29sIGNvbnNpc3RlbnRfZXN0aW1hdGVfLAorICAgICAgICAgICAgICAg
IGNvbnN0IGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+JiBleHRlcm5hbF9kZWxheSwKKyAg
ICAgICAgICAgICAgICBib29sIGNvbnZlcmdlZF9maWx0ZXIpOworCisgICBwcml2YXRlOgorICAg
IGJvb2wgdXNhYmxlX2xpbmVhcl9lc3RpbWF0ZV8gPSBmYWxzZTsKKyAgICBzaXplX3QgZmlsdGVy
X3VwZGF0ZV9ibG9ja3Nfc2luY2VfcmVzZXRfID0gMDsKKyAgICBzaXplX3QgZmlsdGVyX3VwZGF0
ZV9ibG9ja3Nfc2luY2Vfc3RhcnRfID0gMDsKKyAgICBib29sIGNvbnZlcmdlbmNlX3NlZW5fID0g
ZmFsc2U7CisgIH0gZmlsdGVyX3F1YWxpdHlfc3RhdGVfOworCisgIC8vIENsYXNzIGNvbnRhaW5p
bmcgdGhlIGxlZ2FjeSBmdW5jdGlvbmFsaXR5IGZvciBhbmFseXppbmcgaG93IHdlbGwgdGhlIGxp
bmVhcgorICAvLyBmaWx0ZXIgaXMsIGFuZCBjYW4gYmUgZXhwZWN0ZWQgdG8gcGVyZm9ybSBvbiB0
aGUgY3VycmVudCBzaWduYWxzLiBUaGUKKyAgLy8gcHVycG9zZSBvZiB0aGlzIGlzIGZvciB1c2lu
ZyB0byBzZWxlY3QgdGhlIGVjaG8gc3VwcHJlc3Npb24gZnVuY3Rpb25hbGl0eQorICAvLyBhcyB3
ZWxsIGFzIHRoZSBpbnB1dCB0byB0aGUgZWNobyBzdXBwcmVzc29yLgorICBjbGFzcyBMZWdhY3lG
aWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXIgeworICAgcHVibGljOgorICAgIGV4cGxpY2l0IExlZ2Fj
eUZpbHRlcmluZ1F1YWxpdHlBbmFseXplcihjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29u
ZmlnKTsKIAogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgdGhlIGxpbmVhciBmaWx0ZXIgaXMg
Y2FuIGJlIHVzZWQgZm9yIHRoZSBlY2hvCiAgICAgLy8gY2FuY2VsbGVyIG91dHB1dC4KQEAgLTI4
NCwxNCArMzI5LDMyIEBAIGNsYXNzIEFlY1N0YXRlIHsKICAgICBzaXplX3QgYWN0aXZlX25vbl9j
b252ZXJnZWRfc2VxdWVuY2Vfc2l6ZV8gPSAwOwogICAgIGJvb2wgcmVjZW50X2NvbnZlcmdlbmNl
X2R1cmluZ19hY3Rpdml0eV8gPSBmYWxzZTsKICAgICBib29sIHJlY2VudF9jb252ZXJnZW5jZV8g
PSBmYWxzZTsKLSAgfSBmaWx0ZXJfcXVhbGl0eV9zdGF0ZV87CisgIH0gbGVnYWN5X2ZpbHRlcl9x
dWFsaXR5X3N0YXRlXzsKIAotICAvLyBDbGFzcyBmb3IgZGV0ZWN0aW5nIHdoZXRoZXIgdGhlIGVj
aG8gaXMgdG8gYmUgY29uc2lkZXJlZCB0byBiZSBzYXR1cmF0ZWQuCi0gIC8vIFRoZSBwdXJwb3Nl
IG9mIHRoaXMgaXMgdG8gYWxsb3cgY3VzdG9taXplZCBiZWhhdmlvciBpbiB0aGUgZWNobyBzdXBw
cmVzc29yCi0gIC8vIGZvciB3aGVuIHRoZSBlY2hvIGlzIHNhdHVyYXRlZC4KKyAgLy8gQ2xhc3Mg
Zm9yIGRldGVjdGluZyB3aGV0aGVyIHRoZSBlY2hvIGlzIHRvIGJlIGNvbnNpZGVyZWQgdG8gYmUK
KyAgLy8gc2F0dXJhdGVkLgogICBjbGFzcyBTYXR1cmF0aW9uRGV0ZWN0b3IgewogICAgcHVibGlj
OgotICAgIGV4cGxpY2l0IFNhdHVyYXRpb25EZXRlY3Rvcihjb25zdCBFY2hvQ2FuY2VsbGVyM0Nv
bmZpZyYgY29uZmlnKTsKKyAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGVjaG8gaXMgdG8gYmUg
Y29uc2lkZXJlZCBzYXR1cmF0ZWQuCisgICAgYm9vbCBTYXR1cmF0ZWRFY2hvKCkgY29uc3QgeyBy
ZXR1cm4gc2F0dXJhdGVkX2VjaG9fOyB9OworCisgICAgLy8gVXBkYXRlcyB0aGUgZGV0ZWN0aW9u
IGRlY2lzaW9uIGJhc2VkIG9uIG5ldyBkYXRhLgorICAgIHZvaWQgVXBkYXRlKHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IGZsb2F0PiB4LAorICAgICAgICAgICAgICAgIGJvb2wgc2F0dXJhdGVkX2NhcHR1
cmUsCisgICAgICAgICAgICAgICAgYm9vbCB1c2FibGVfbGluZWFyX2VzdGltYXRlLAorICAgICAg
ICAgICAgICAgIGNvbnN0IFN1YnRyYWN0b3JPdXRwdXQmIHN1YnRyYWN0b3Jfb3V0cHV0LAorICAg
ICAgICAgICAgICAgIGZsb2F0IGVjaG9fcGF0aF9nYWluKTsKKworICAgcHJpdmF0ZToKKyAgICBi
b29sIHNhdHVyYXRlZF9lY2hvXyA9IGZhbHNlOworICB9IHNhdHVyYXRpb25fZGV0ZWN0b3JfOwor
CisgIC8vIExlZ2FjeSBjbGFzcyBmb3IgZGV0ZWN0aW5nIHdoZXRoZXIgdGhlIGVjaG8gaXMgdG8g
YmUgY29uc2lkZXJlZCB0byBiZQorICAvLyBzYXR1cmF0ZWQuIFRoaXMgaXMga2VwdCBhcyBhIGZh
bGxiYWNrIHNvbHV0aW9uIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBjbGFzcworICAvLyBTYXR1cmF0
aW9uRGV0ZWN0b3IsCisgIGNsYXNzIExlZ2FjeVNhdHVyYXRpb25EZXRlY3RvciB7CisgICBwdWJs
aWM6CisgICAgZXhwbGljaXQgTGVnYWN5U2F0dXJhdGlvbkRldGVjdG9yKGNvbnN0IEVjaG9DYW5j
ZWxsZXIzQ29uZmlnJiBjb25maWcpOwogCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBlY2hv
IGlzIHRvIGJlIGNvbnNpZGVyZWQgc2F0dXJhdGVkLgogICAgIGJvb2wgU2F0dXJhdGVkRWNobygp
IGNvbnN0IHsgcmV0dXJuIHNhdHVyYXRlZF9lY2hvXzsgfTsKQEAgLTMwOCw3ICszNzEsNyBAQCBj
bGFzcyBBZWNTdGF0ZSB7CiAgICAgY29uc3QgYm9vbCBlY2hvX2Nhbl9zYXR1cmF0ZV87CiAgICAg
c2l6ZV90IG5vdF9zYXR1cmF0ZWRfc2VxdWVuY2Vfc2l6ZV87CiAgICAgYm9vbCBzYXR1cmF0ZWRf
ZWNob18gPSBmYWxzZTsKLSAgfSBzYXR1cmF0aW9uX2RldGVjdG9yXzsKKyAgfSBsZWdhY3lfc2F0
dXJhdGlvbl9kZXRlY3Rvcl87CiAKICAgRXJsRXN0aW1hdG9yIGVybF9lc3RpbWF0b3JfOwogICBF
cmxlRXN0aW1hdG9yIGVybGVfZXN0aW1hdG9yXzsKQEAgLTMyMSw4ICszODQsOCBAQCBjbGFzcyBB
ZWNTdGF0ZSB7CiAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IGV4dGVybmFsX2RlbGF5
XzsKICAgRWNob0F1ZGliaWxpdHkgZWNob19hdWRpYmlsaXR5XzsKICAgUmV2ZXJiTW9kZWxFc3Rp
bWF0b3IgcmV2ZXJiX21vZGVsX2VzdGltYXRvcl87CisgIFJlbmRlclJldmVyYk1vZGVsIHJlbmRl
cl9yZXZlcmJfOwogICBTdWJ0cmFjdG9yT3V0cHV0QW5hbHl6ZXIgc3VidHJhY3Rvcl9vdXRwdXRf
YW5hbHl6ZXJfOwotICBib29sIGVuYWJsZV9lcmxlX3Jlc2V0c19hdF9nYWluX2NoYW5nZXNfID0g
dHJ1ZTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2FlY19zdGF0ZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlY19zdGF0ZV91
bml0dGVzdC5jYwppbmRleCBiZjMyYTBiNjA3MjBlY2VlNzFmMzJlZjM0YTM1YjE1Mzc0ZmU3MDZk
Li5hMzMxMDA2Mzc4MTYyMzE4YjZjMWM2ZTcxYTkzMzJjZWVhYTBjY2U1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YWVjX3N0YXRlX3VuaXR0ZXN0LmNjCkBAIC0yNSw3ICsyNSw3IEBAIFRFU1QoQWVjU3RhdGUsIE5v
cm1hbFVzYWdlKSB7CiAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IGRlbGF5X2VzdGlt
YXRlID0KICAgICAgIERlbGF5RXN0aW1hdGUoRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a1JlZmlu
ZWQsIDEwKTsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVs
YXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsK
KyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogICBzdGQ6OmFy
cmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IEUyX21haW4gPSB7fTsKICAgc3RkOjphcnJh
eTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBZMiA9IHt9OwogICBzdGQ6OnZlY3RvcjxzdGQ6
OnZlY3RvcjxmbG9hdD4+IHgoMywgc3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUsIDAuZikp
OwpAQCAtNTYsNyArNTYsNyBAQCBURVNUKEFlY1N0YXRlLCBOb3JtYWxVc2FnZSkgewogICBzdGQ6
OmZpbGwoeFswXS5iZWdpbigpLCB4WzBdLmVuZCgpLCAxMDEuZik7CiAgIGZvciAoaW50IGsgPSAw
OyBrIDwgMzAwMDsgKytrKSB7CiAgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+SW5zZXJ0KHgpOwot
ICAgIG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7CisgICAgb3V0cHV0LkNvbXB1dGVNZXRyaWNzKHkp
OwogICAgIHN0YXRlLlVwZGF0ZShkZWxheV9lc3RpbWF0ZSwgY29udmVyZ2VkX2ZpbHRlcl9mcmVx
dWVuY3lfcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgIGltcHVsc2VfcmVzcG9uc2UsICpyZW5k
ZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZmZXIoKSwKICAgICAgICAgICAgICAgICAgRTJf
bWFpbiwgWTIsIG91dHB1dCwgeSk7CkBAIC02NSw3ICs2NSw3IEBAIFRFU1QoQWVjU3RhdGUsIE5v
cm1hbFVzYWdlKSB7CiAKICAgLy8gVmVyaWZ5IHRoYXQgbGluZWFyIEFFQyB1c2FiaWxpdHkgYmVj
b21lcyBmYWxzZSBhZnRlciBhbiBlY2hvIHBhdGggY2hhbmdlIGlzCiAgIC8vIHJlcG9ydGVkCi0g
IG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7CisgIG91dHB1dC5Db21wdXRlTWV0cmljcyh5KTsKICAg
c3RhdGUuSGFuZGxlRWNob1BhdGhDaGFuZ2UoRWNob1BhdGhWYXJpYWJpbGl0eSgKICAgICAgIGZh
bHNlLCBFY2hvUGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6OmtCdWZmZXJSZWFkanVz
dG1lbnQsIGZhbHNlKSk7CiAgIHN0YXRlLlVwZGF0ZShkZWxheV9lc3RpbWF0ZSwgY29udmVyZ2Vk
X2ZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCkBAIC03Niw3ICs3Niw3IEBAIFRFU1QoQWVjU3Rh
dGUsIE5vcm1hbFVzYWdlKSB7CiAgIC8vIFZlcmlmeSB0aGF0IHRoZSBhY3RpdmUgcmVuZGVyIGRl
dGVjdGlvbiB3b3JrcyBhcyBpbnRlbmRlZC4KICAgc3RkOjpmaWxsKHhbMF0uYmVnaW4oKSwgeFsw
XS5lbmQoKSwgMTAxLmYpOwogICByZW5kZXJfZGVsYXlfYnVmZmVyLT5JbnNlcnQoeCk7Ci0gIG91
dHB1dC5VcGRhdGVQb3dlcnMoeSk7CisgIG91dHB1dC5Db21wdXRlTWV0cmljcyh5KTsKICAgc3Rh
dGUuSGFuZGxlRWNob1BhdGhDaGFuZ2UoRWNob1BhdGhWYXJpYWJpbGl0eSgKICAgICAgIHRydWUs
IEVjaG9QYXRoVmFyaWFiaWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6a05ld0RldGVjdGVkRGVsYXks
IGZhbHNlKSk7CiAgIHN0YXRlLlVwZGF0ZShkZWxheV9lc3RpbWF0ZSwgY29udmVyZ2VkX2ZpbHRl
cl9mcmVxdWVuY3lfcmVzcG9uc2UsCkBAIC04Niw3ICs4Niw3IEBAIFRFU1QoQWVjU3RhdGUsIE5v
cm1hbFVzYWdlKSB7CiAKICAgZm9yIChpbnQgayA9IDA7IGsgPCAxMDAwOyArK2spIHsKICAgICBy
ZW5kZXJfZGVsYXlfYnVmZmVyLT5JbnNlcnQoeCk7Ci0gICAgb3V0cHV0LlVwZGF0ZVBvd2Vycyh5
KTsKKyAgICBvdXRwdXQuQ29tcHV0ZU1ldHJpY3MoeSk7CiAgICAgc3RhdGUuVXBkYXRlKGRlbGF5
X2VzdGltYXRlLCBjb252ZXJnZWRfZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwKICAgICAgICAg
ICAgICAgICAgaW1wdWxzZV9yZXNwb25zZSwgKnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJlbmRl
ckJ1ZmZlcigpLAogICAgICAgICAgICAgICAgICBFMl9tYWluLCBZMiwgb3V0cHV0LCB5KTsKQEAg
LTExMCw3ICsxMTAsNyBAQCBURVNUKEFlY1N0YXRlLCBOb3JtYWxVc2FnZSkgewogCiAgIFkyLmZp
bGwoMTAuZiAqIDEwMDAwLmYgKiAxMDAwMC5mKTsKICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAx
MDAwOyArK2spIHsKLSAgICBvdXRwdXQuVXBkYXRlUG93ZXJzKHkpOworICAgIG91dHB1dC5Db21w
dXRlTWV0cmljcyh5KTsKICAgICBzdGF0ZS5VcGRhdGUoZGVsYXlfZXN0aW1hdGUsIGNvbnZlcmdl
ZF9maWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAogICAgICAgICAgICAgICAgICBpbXB1bHNlX3Jl
c3BvbnNlLCAqcmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksCiAgICAgICAg
ICAgICAgICAgIEUyX21haW4sIFkyLCBvdXRwdXQsIHkpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIFRF
U1QoQWVjU3RhdGUsIE5vcm1hbFVzYWdlKSB7CiAgIEUyX21haW4uZmlsbCgxLmYgKiAxMDAwMC5m
ICogMTAwMDAuZik7CiAgIFkyLmZpbGwoMTAuZiAqIEUyX21haW5bMF0pOwogICBmb3IgKHNpemVf
dCBrID0gMDsgayA8IDEwMDA7ICsraykgewotICAgIG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7Cisg
ICAgb3V0cHV0LkNvbXB1dGVNZXRyaWNzKHkpOwogICAgIHN0YXRlLlVwZGF0ZShkZWxheV9lc3Rp
bWF0ZSwgY29udmVyZ2VkX2ZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCiAgICAgICAgICAgICAg
ICAgIGltcHVsc2VfcmVzcG9uc2UsICpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZm
ZXIoKSwKICAgICAgICAgICAgICAgICAgRTJfbWFpbiwgWTIsIG91dHB1dCwgeSk7CkBAIC0xNTIs
NyArMTUyLDcgQEAgVEVTVChBZWNTdGF0ZSwgTm9ybWFsVXNhZ2UpIHsKICAgRTJfbWFpbi5maWxs
KDEuZiAqIDEwMDAwLmYgKiAxMDAwMC5mKTsKICAgWTIuZmlsbCg1LmYgKiBFMl9tYWluWzBdKTsK
ICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAxMDAwOyArK2spIHsKLSAgICBvdXRwdXQuVXBkYXRl
UG93ZXJzKHkpOworICAgIG91dHB1dC5Db21wdXRlTWV0cmljcyh5KTsKICAgICBzdGF0ZS5VcGRh
dGUoZGVsYXlfZXN0aW1hdGUsIGNvbnZlcmdlZF9maWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAog
ICAgICAgICAgICAgICAgICBpbXB1bHNlX3Jlc3BvbnNlLCAqcmVuZGVyX2RlbGF5X2J1ZmZlci0+
R2V0UmVuZGVyQnVmZmVyKCksCiAgICAgICAgICAgICAgICAgIEUyX21haW4sIFkyLCBvdXRwdXQs
IHkpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIFRFU1QoQWVjU3RhdGUsIENvbnZlcmdlZEZpbHRlckRl
bGF5KSB7CiAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZzsKICAgQWVjU3RhdGUgc3RhdGUo
Y29uZmlnKTsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVs
YXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsK
KyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogICBhYnNsOjpv
cHRpb25hbDxEZWxheUVzdGltYXRlPiBkZWxheV9lc3RpbWF0ZTsKICAgc3RkOjphcnJheTxmbG9h
dCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBFMl9tYWluOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0
TGVuZ3RoQnkyUGx1czE+IFkyOwpAQCAtMjA4LDcgKzIwOCw3IEBAIFRFU1QoQWVjU3RhdGUsIENv
bnZlcmdlZEZpbHRlckRlbGF5KSB7CiAgICAgaW1wdWxzZV9yZXNwb25zZVtrICoga0Jsb2NrU2l6
ZSArIDFdID0gMS5mOwogCiAgICAgc3RhdGUuSGFuZGxlRWNob1BhdGhDaGFuZ2UoZWNob19wYXRo
X3ZhcmlhYmlsaXR5KTsKLSAgICBvdXRwdXQuVXBkYXRlUG93ZXJzKHkpOworICAgIG91dHB1dC5D
b21wdXRlTWV0cmljcyh5KTsKICAgICBzdGF0ZS5VcGRhdGUoZGVsYXlfZXN0aW1hdGUsIGZyZXF1
ZW5jeV9yZXNwb25zZSwgaW1wdWxzZV9yZXNwb25zZSwKICAgICAgICAgICAgICAgICAgKnJlbmRl
cl9kZWxheV9idWZmZXItPkdldFJlbmRlckJ1ZmZlcigpLCBFMl9tYWluLCBZMiwgb3V0cHV0LAog
ICAgICAgICAgICAgICAgICB5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxs
X2ppdHRlcl9tZXRyaWNzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJp
Y3MuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDVmNTZhNWRjZTZmYWIxMzcxZjI0NGU4OWUyYzAyNWY3YTQ0MGM5
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxsX2ppdHRlcl9tZXRy
aWNzLmNjCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxsX2ppdHRlcl9tZXRyaWNz
LmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bGltaXRzPgorCisjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRl
ICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworbmFtZXNwYWNlIHsKKworYm9vbCBUaW1lVG9SZXBvcnRNZXRyaWNzKGludCBmcmFtZXNfc2lu
Y2VfbGFzdF9yZXBvcnQpIHsKKyAgY29uc3RleHByIGludCBrTnVtRnJhbWVzUGVyU2Vjb25kID0g
MTAwOworICBjb25zdGV4cHIgaW50IGtSZXBvcnRpbmdJbnRlcnZhbEZyYW1lcyA9IDEwICoga051
bUZyYW1lc1BlclNlY29uZDsKKyAgcmV0dXJuIGZyYW1lc19zaW5jZV9sYXN0X3JlcG9ydCA9PSBr
UmVwb3J0aW5nSW50ZXJ2YWxGcmFtZXM7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitBcGlDYWxs
Sml0dGVyTWV0cmljczo6Sml0dGVyOjpKaXR0ZXIoKQorICAgIDogbWF4XygwKSwgbWluXyhzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSB7fQorCit2b2lkIEFwaUNhbGxKaXR0ZXJNZXRy
aWNzOjpKaXR0ZXI6OlVwZGF0ZShpbnQgbnVtX2FwaV9jYWxsc19pbl9hX3JvdykgeworICBtaW5f
ID0gc3RkOjptaW4obWluXywgbnVtX2FwaV9jYWxsc19pbl9hX3Jvdyk7CisgIG1heF8gPSBzdGQ6
Om1heChtYXhfLCBudW1fYXBpX2NhbGxzX2luX2Ffcm93KTsKK30KKwordm9pZCBBcGlDYWxsSml0
dGVyTWV0cmljczo6Sml0dGVyOjpSZXNldCgpIHsKKyAgbWluXyA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7CisgIG1heF8gPSAwOworfQorCit2b2lkIEFwaUNhbGxKaXR0ZXJNZXRy
aWNzOjpSZXNldCgpIHsKKyAgcmVuZGVyX2ppdHRlcl8uUmVzZXQoKTsKKyAgY2FwdHVyZV9qaXR0
ZXJfLlJlc2V0KCk7CisgIG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfID0gMDsKKyAgZnJhbWVzX3Np
bmNlX2xhc3RfcmVwb3J0XyA9IDA7CisgIGxhc3RfY2FsbF93YXNfcmVuZGVyXyA9IGZhbHNlOwor
ICBwcm9wZXJfY2FsbF9vYnNlcnZlZF8gPSBmYWxzZTsKK30KKwordm9pZCBBcGlDYWxsSml0dGVy
TWV0cmljczo6UmVwb3J0UmVuZGVyQ2FsbCgpIHsKKyAgaWYgKCFsYXN0X2NhbGxfd2FzX3JlbmRl
cl8pIHsKKyAgICAvLyBJZiB0aGUgcHJldmlvdXMgY2FsbCB3YXMgYSBjYXB0dXJlIGFuZCBhIHBy
b3BlciBjYWxsIGhhcyBiZWVuIG9ic2VydmVkCisgICAgLy8gKGNvbnRhaW5pbmcgYm90aCByZW5k
ZXIgYW5kIGNhcHR1cmUgZGF0YSksIHN0b3JpbmcgdGhlIGxhc3QgbnVtYmVyIG9mCisgICAgLy8g
Y2FwdHVyZSBjYWxscyBpbnRvIHRoZSBtZXRyaWNzLgorICAgIGlmIChwcm9wZXJfY2FsbF9vYnNl
cnZlZF8pIHsKKyAgICAgIGNhcHR1cmVfaml0dGVyXy5VcGRhdGUobnVtX2FwaV9jYWxsc19pbl9h
X3Jvd18pOworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBjYWxsIGNvdW50ZXIgdG8gc3RhcnQg
Y291bnRpbmcgcmVuZGVyIGNhbGxzLgorICAgIG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfID0gMDsK
KyAgfQorICArK251bV9hcGlfY2FsbHNfaW5fYV9yb3dfOworICBsYXN0X2NhbGxfd2FzX3JlbmRl
cl8gPSB0cnVlOworfQorCit2b2lkIEFwaUNhbGxKaXR0ZXJNZXRyaWNzOjpSZXBvcnRDYXB0dXJl
Q2FsbCgpIHsKKyAgaWYgKGxhc3RfY2FsbF93YXNfcmVuZGVyXykgeworICAgIC8vIElmIHRoZSBw
cmV2aW91cyBjYWxsIHdhcyBhIHJlbmRlciBhbmQgYSBwcm9wZXIgY2FsbCBoYXMgYmVlbiBvYnNl
cnZlZAorICAgIC8vIChjb250YWluaW5nIGJvdGggcmVuZGVyIGFuZCBjYXB0dXJlIGRhdGEpLCBz
dG9yaW5nIHRoZSBsYXN0IG51bWJlciBvZgorICAgIC8vIHJlbmRlciBjYWxscyBpbnRvIHRoZSBt
ZXRyaWNzLgorICAgIGlmIChwcm9wZXJfY2FsbF9vYnNlcnZlZF8pIHsKKyAgICAgIHJlbmRlcl9q
aXR0ZXJfLlVwZGF0ZShudW1fYXBpX2NhbGxzX2luX2Ffcm93Xyk7CisgICAgfQorICAgIC8vIFJl
c2V0IHRoZSBjYWxsIGNvdW50ZXIgdG8gc3RhcnQgY291bnRpbmcgY2FwdHVyZSBjYWxscy4KKyAg
ICBudW1fYXBpX2NhbGxzX2luX2Ffcm93XyA9IDA7CisKKyAgICAvLyBJZiB0aGlzIHN0YXRlbWVu
dCBpcyByZWFjaGVkLCBhdCBsZWFzdCBvbmUgcmVuZGVyIGFuZCBvbmUgY2FwdHVyZSBjYWxsCisg
ICAgLy8gaGF2ZSBiZWVuIG9ic2VydmVkLgorICAgIHByb3Blcl9jYWxsX29ic2VydmVkXyA9IHRy
dWU7CisgIH0KKyAgKytudW1fYXBpX2NhbGxzX2luX2Ffcm93XzsKKyAgbGFzdF9jYWxsX3dhc19y
ZW5kZXJfID0gZmFsc2U7CisKKyAgLy8gT25seSByZXBvcnQgYW5kIHVwZGF0ZSBqaXR0ZXIgbWV0
cmljcyBmb3Igd2hlbiBhIHByb3BlciBjYWxsLCBjb250YWluaW5nCisgIC8vIGJvdGggcmVuZGVy
IGFuZCBjYXB0dXJlIGRhdGEsIGhhcyBiZWVuIG9ic2VydmVkLgorICBpZiAocHJvcGVyX2NhbGxf
b2JzZXJ2ZWRfICYmCisgICAgICBUaW1lVG9SZXBvcnRNZXRyaWNzKCsrZnJhbWVzX3NpbmNlX2xh
c3RfcmVwb3J0XykpIHsKKyAgICAvLyBSZXBvcnQgaml0dGVyLCB3aGVyZSB0aGUgYmFzZSBiYXNp
YyB1bml0IGlzIGZyYW1lcy4KKyAgICBjb25zdGV4cHIgaW50IGtNYXhKaXR0ZXJUb1JlcG9ydCA9
IDUwOworCisgICAgLy8gUmVwb3J0IG1heCBhbmQgbWluIGppdHRlciBmb3IgcmVuZGVyIGFuZCBj
YXB0dXJlLCBpbiB1bml0cyBvZiAyMCBtcy4KKyAgICBSVENfSElTVE9HUkFNX0NPVU5UU19MSU5F
QVIoCisgICAgICAgICJXZWJSVEMuQXVkaW8uRWNob0NhbmNlbGxlci5NYXhSZW5kZXJKaXR0ZXIi
LAorICAgICAgICBzdGQ6Om1pbihrTWF4Sml0dGVyVG9SZXBvcnQsIHJlbmRlcl9qaXR0ZXIoKS5t
YXgoKSksIDEsCisgICAgICAgIGtNYXhKaXR0ZXJUb1JlcG9ydCwga01heEppdHRlclRvUmVwb3J0
KTsKKyAgICBSVENfSElTVE9HUkFNX0NPVU5UU19MSU5FQVIoCisgICAgICAgICJXZWJSVEMuQXVk
aW8uRWNob0NhbmNlbGxlci5NaW5SZW5kZXJKaXR0ZXIiLAorICAgICAgICBzdGQ6Om1pbihrTWF4
Sml0dGVyVG9SZXBvcnQsIHJlbmRlcl9qaXR0ZXIoKS5taW4oKSksIDEsCisgICAgICAgIGtNYXhK
aXR0ZXJUb1JlcG9ydCwga01heEppdHRlclRvUmVwb3J0KTsKKworICAgIFJUQ19ISVNUT0dSQU1f
Q09VTlRTX0xJTkVBUigKKyAgICAgICAgIldlYlJUQy5BdWRpby5FY2hvQ2FuY2VsbGVyLk1heENh
cHR1cmVKaXR0ZXIiLAorICAgICAgICBzdGQ6Om1pbihrTWF4Sml0dGVyVG9SZXBvcnQsIGNhcHR1
cmVfaml0dGVyKCkubWF4KCkpLCAxLAorICAgICAgICBrTWF4Sml0dGVyVG9SZXBvcnQsIGtNYXhK
aXR0ZXJUb1JlcG9ydCk7CisgICAgUlRDX0hJU1RPR1JBTV9DT1VOVFNfTElORUFSKAorICAgICAg
ICAiV2ViUlRDLkF1ZGlvLkVjaG9DYW5jZWxsZXIuTWluQ2FwdHVyZUppdHRlciIsCisgICAgICAg
IHN0ZDo6bWluKGtNYXhKaXR0ZXJUb1JlcG9ydCwgY2FwdHVyZV9qaXR0ZXIoKS5taW4oKSksIDEs
CisgICAgICAgIGtNYXhKaXR0ZXJUb1JlcG9ydCwga01heEppdHRlclRvUmVwb3J0KTsKKworICAg
IGZyYW1lc19zaW5jZV9sYXN0X3JlcG9ydF8gPSAwOworICAgIFJlc2V0KCk7CisgIH0KK30KKwor
Ym9vbCBBcGlDYWxsSml0dGVyTWV0cmljczo6V2lsbFJlcG9ydE1ldHJpY3NBdE5leHRDYXB0dXJl
KCkgY29uc3QgeworICByZXR1cm4gVGltZVRvUmVwb3J0TWV0cmljcyhmcmFtZXNfc2luY2VfbGFz
dF9yZXBvcnRfICsgMSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxsX2ppdHRlcl9tZXRyaWNzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkMWZhODJlOTMyNDcwNzI5
MmU4N2VlMmYzNzVjZjg1ZTcxN2YzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0FQSV9D
QUxMX0pJVFRFUl9NRVRSSUNTX0hfCisjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19B
RUMzX0FQSV9DQUxMX0pJVFRFUl9NRVRSSUNTX0hfCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisv
LyBTdG9yZXMgZGF0YSBmb3IgcmVwb3J0aW5nIG1ldHJpY3Mgb24gdGhlIEFQSSBjYWxsIGppdHRl
ci4KK2NsYXNzIEFwaUNhbGxKaXR0ZXJNZXRyaWNzIHsKKyBwdWJsaWM6CisgIGNsYXNzIEppdHRl
ciB7CisgICBwdWJsaWM6CisgICAgSml0dGVyKCk7CisgICAgdm9pZCBVcGRhdGUoaW50IG51bV9h
cGlfY2FsbHNfaW5fYV9yb3cpOworICAgIHZvaWQgUmVzZXQoKTsKKworICAgIGludCBtaW4oKSBj
b25zdCB7IHJldHVybiBtaW5fOyB9CisgICAgaW50IG1heCgpIGNvbnN0IHsgcmV0dXJuIG1heF87
IH0KKworICAgcHJpdmF0ZToKKyAgICBpbnQgbWF4XzsKKyAgICBpbnQgbWluXzsKKyAgfTsKKwor
ICBBcGlDYWxsSml0dGVyTWV0cmljcygpIHsgUmVzZXQoKTsgfQorCisgIC8vIFVwZGF0ZSBtZXRy
aWNzIGZvciByZW5kZXIgQVBJIGNhbGwuCisgIHZvaWQgUmVwb3J0UmVuZGVyQ2FsbCgpOworCisg
IC8vIFVwZGF0ZSBhbmQgcGVyaW9kaWNhbGx5IHJlcG9ydCBtZXRyaWNzIGZvciBjYXB0dXJlIEFQ
SSBjYWxsLgorICB2b2lkIFJlcG9ydENhcHR1cmVDYWxsKCk7CisKKyAgLy8gTWV0aG9kcyB1c2Vk
IG9ubHkgZm9yIHRlc3RpbmcuCisgIGNvbnN0IEppdHRlciYgcmVuZGVyX2ppdHRlcigpIGNvbnN0
IHsgcmV0dXJuIHJlbmRlcl9qaXR0ZXJfOyB9CisgIGNvbnN0IEppdHRlciYgY2FwdHVyZV9qaXR0
ZXIoKSBjb25zdCB7IHJldHVybiBjYXB0dXJlX2ppdHRlcl87IH0KKyAgYm9vbCBXaWxsUmVwb3J0
TWV0cmljc0F0TmV4dENhcHR1cmUoKSBjb25zdDsKKworIHByaXZhdGU6CisgIHZvaWQgUmVzZXQo
KTsKKworICBKaXR0ZXIgcmVuZGVyX2ppdHRlcl87CisgIEppdHRlciBjYXB0dXJlX2ppdHRlcl87
CisKKyAgaW50IG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfID0gMDsKKyAgaW50IGZyYW1lc19zaW5j
ZV9sYXN0X3JlcG9ydF8gPSAwOworICBib29sIGxhc3RfY2FsbF93YXNfcmVuZGVyXyA9IGZhbHNl
OworICBib29sIHByb3Blcl9jYWxsX29ic2VydmVkXyA9IGZhbHNlOworfTsKKworfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMz
X0FQSV9DQUxMX0pJVFRFUl9NRVRSSUNTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9h
cGlfY2FsbF9qaXR0ZXJfbWV0cmljc191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9j
YWxsX2ppdHRlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2NjA4YWEzZTEwOTNm
OTdiYzM3MGRjOWFhNmI5MWJiZmY0OTMzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljc191bml0dGVzdC5jYwpAQCAtMCwwICsxLDEwOSBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCisKKyNpbmNsdWRlICJ0ZXN0L2d0
ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBWZXJpZnkgY29uc3RhbnQgaml0dGVy
LgorVEVTVChBcGlDYWxsSml0dGVyTWV0cmljcywgQ29uc3RhbnRKaXR0ZXIpIHsKKyAgZm9yIChp
bnQgaml0dGVyID0gMTsgaml0dGVyIDwgMjA7ICsraml0dGVyKSB7CisgICAgQXBpQ2FsbEppdHRl
ck1ldHJpY3MgbWV0cmljczsKKyAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDMwICoga051bUJs
b2Nrc1BlclNlY29uZDsgKytrKSB7CisgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGppdHRlcjsg
KytqKSB7CisgICAgICAgIG1ldHJpY3MuUmVwb3J0UmVuZGVyQ2FsbCgpOworICAgICAgfQorCisg
ICAgICBmb3IgKGludCBqID0gMDsgaiA8IGppdHRlcjsgKytqKSB7CisgICAgICAgIG1ldHJpY3Mu
UmVwb3J0Q2FwdHVyZUNhbGwoKTsKKworICAgICAgICBpZiAobWV0cmljcy5XaWxsUmVwb3J0TWV0
cmljc0F0TmV4dENhcHR1cmUoKSkgeworICAgICAgICAgIEVYUEVDVF9FUShqaXR0ZXIsIG1ldHJp
Y3MucmVuZGVyX2ppdHRlcigpLm1pbigpKTsKKyAgICAgICAgICBFWFBFQ1RfRVEoaml0dGVyLCBt
ZXRyaWNzLnJlbmRlcl9qaXR0ZXIoKS5tYXgoKSk7CisgICAgICAgICAgRVhQRUNUX0VRKGppdHRl
ciwgbWV0cmljcy5jYXB0dXJlX2ppdHRlcigpLm1pbigpKTsKKyAgICAgICAgICBFWFBFQ1RfRVEo
aml0dGVyLCBtZXRyaWNzLmNhcHR1cmVfaml0dGVyKCkubWF4KCkpOworICAgICAgICB9CisgICAg
ICB9CisgICAgfQorICB9Cit9CisKKy8vIFZlcmlmeSBwZWFreSBqaXR0ZXIgZm9yIHRoZSByZW5k
ZXIuCitURVNUKEFwaUNhbGxKaXR0ZXJNZXRyaWNzLCBKaXR0ZXJQZWFrUmVuZGVyKSB7CisgIGNv
bnN0ZXhwciBpbnQga01pbkppdHRlciA9IDI7CisgIGNvbnN0ZXhwciBpbnQga0ppdHRlclBlYWsg
PSAxMDsKKyAgY29uc3RleHByIGludCBrUGVha0ludGVydmFsID0gMTAwOworCisgIEFwaUNhbGxK
aXR0ZXJNZXRyaWNzIG1ldHJpY3M7CisgIGludCByZW5kZXJfc3VycGx1cyA9IDA7CisKKyAgZm9y
IChzaXplX3QgayA9IDA7IGsgPCAzMCAqIGtOdW1CbG9ja3NQZXJTZWNvbmQ7ICsraykgeworICAg
IGNvbnN0IGludCBudW1fcmVuZGVyX2NhbGxzID0KKyAgICAgICAgayAlIGtQZWFrSW50ZXJ2YWwg
PT0gMCA/IGtKaXR0ZXJQZWFrIDoga01pbkppdHRlcjsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8
IG51bV9yZW5kZXJfY2FsbHM7ICsraikgeworICAgICAgbWV0cmljcy5SZXBvcnRSZW5kZXJDYWxs
KCk7CisgICAgICArK3JlbmRlcl9zdXJwbHVzOworICAgIH0KKworICAgIEFTU0VSVF9MRShrTWlu
Sml0dGVyLCByZW5kZXJfc3VycGx1cyk7CisgICAgY29uc3QgaW50IG51bV9jYXB0dXJlX2NhbGxz
ID0KKyAgICAgICAgcmVuZGVyX3N1cnBsdXMgPT0ga01pbkppdHRlciA/IGtNaW5KaXR0ZXIgOiBr
TWluSml0dGVyICsgMTsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bV9jYXB0dXJlX2NhbGxz
OyArK2opIHsKKyAgICAgIG1ldHJpY3MuUmVwb3J0Q2FwdHVyZUNhbGwoKTsKKworICAgICAgaWYg
KG1ldHJpY3MuV2lsbFJlcG9ydE1ldHJpY3NBdE5leHRDYXB0dXJlKCkpIHsKKyAgICAgICAgRVhQ
RUNUX0VRKGtNaW5KaXR0ZXIsIG1ldHJpY3MucmVuZGVyX2ppdHRlcigpLm1pbigpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGtKaXR0ZXJQZWFrLCBtZXRyaWNzLnJlbmRlcl9qaXR0ZXIoKS5tYXgoKSk7
CisgICAgICAgIEVYUEVDVF9FUShrTWluSml0dGVyLCBtZXRyaWNzLmNhcHR1cmVfaml0dGVyKCku
bWluKCkpOworICAgICAgICBFWFBFQ1RfRVEoa01pbkppdHRlciArIDEsIG1ldHJpY3MuY2FwdHVy
ZV9qaXR0ZXIoKS5tYXgoKSk7CisgICAgICB9CisgICAgICAtLXJlbmRlcl9zdXJwbHVzOworICAg
IH0KKyAgfQorfQorCisvLyBWZXJpZnkgcGVha3kgaml0dGVyIGZvciB0aGUgY2FwdHVyZS4KK1RF
U1QoQXBpQ2FsbEppdHRlck1ldHJpY3MsIEppdHRlclBlYWtDYXB0dXJlKSB7CisgIGNvbnN0ZXhw
ciBpbnQga01pbkppdHRlciA9IDI7CisgIGNvbnN0ZXhwciBpbnQga0ppdHRlclBlYWsgPSAxMDsK
KyAgY29uc3RleHByIGludCBrUGVha0ludGVydmFsID0gMTAwOworCisgIEFwaUNhbGxKaXR0ZXJN
ZXRyaWNzIG1ldHJpY3M7CisgIGludCBjYXB0dXJlX3N1cnBsdXMgPSBrTWluSml0dGVyOworCisg
IGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgMzAgKiBrTnVtQmxvY2tzUGVyU2Vjb25kOyArK2spIHsK
KyAgICBBU1NFUlRfTEUoa01pbkppdHRlciwgY2FwdHVyZV9zdXJwbHVzKTsKKyAgICBjb25zdCBp
bnQgbnVtX3JlbmRlcl9jYWxscyA9CisgICAgICAgIGNhcHR1cmVfc3VycGx1cyA9PSBrTWluSml0
dGVyID8ga01pbkppdHRlciA6IGtNaW5KaXR0ZXIgKyAxOworICAgIGZvciAoaW50IGogPSAwOyBq
IDwgbnVtX3JlbmRlcl9jYWxsczsgKytqKSB7CisgICAgICBtZXRyaWNzLlJlcG9ydFJlbmRlckNh
bGwoKTsKKyAgICAgIC0tY2FwdHVyZV9zdXJwbHVzOworICAgIH0KKworICAgIGNvbnN0IGludCBu
dW1fY2FwdHVyZV9jYWxscyA9CisgICAgICAgIGsgJSBrUGVha0ludGVydmFsID09IDAgPyBrSml0
dGVyUGVhayA6IGtNaW5KaXR0ZXI7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1fY2FwdHVy
ZV9jYWxsczsgKytqKSB7CisgICAgICBtZXRyaWNzLlJlcG9ydENhcHR1cmVDYWxsKCk7CisKKyAg
ICAgIGlmIChtZXRyaWNzLldpbGxSZXBvcnRNZXRyaWNzQXROZXh0Q2FwdHVyZSgpKSB7CisgICAg
ICAgIEVYUEVDVF9FUShrTWluSml0dGVyLCBtZXRyaWNzLnJlbmRlcl9qaXR0ZXIoKS5taW4oKSk7
CisgICAgICAgIEVYUEVDVF9FUShrTWluSml0dGVyICsgMSwgbWV0cmljcy5yZW5kZXJfaml0dGVy
KCkubWF4KCkpOworICAgICAgICBFWFBFQ1RfRVEoa01pbkppdHRlciwgbWV0cmljcy5jYXB0dXJl
X2ppdHRlcigpLm1pbigpKTsKKyAgICAgICAgRVhQRUNUX0VRKGtKaXR0ZXJQZWFrLCBtZXRyaWNz
LmNhcHR1cmVfaml0dGVyKCkubWF4KCkpOworICAgICAgfQorICAgICAgKytjYXB0dXJlX3N1cnBs
dXM7CisgICAgfQorICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2Jsb2NrX2RlbGF5X2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxv
Y2tfZGVsYXlfYnVmZmVyLmgKaW5kZXggNmU1ZmQ1YzA5ZDBkNDZlMjUwODJkNTY4MDVhYzJkY2Yx
ZWI0ZDA4OC4uNjI0ZTkxMzlhMzg4OGM5MGEwODZkMjVmYzI1NWExNjZlZTM4OWNlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfZGVsYXlfYnVmZmVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYmxvY2tfZGVsYXlfYnVmZmVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQkxPQ0tfREVMQVlfQlVGRkVSX0hfCiAjZGVmaW5l
IE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0JMT0NLX0RFTEFZX0JVRkZFUl9IXwogCisj
aW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYmxvY2tfZnJhbWVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfZnJhbWVyLmNjCmlu
ZGV4IDMxNjA2MjQ1MTVhYmFlOTljOTI0ODZiN2NlMzA4Y2Y4MjhjMzgyZGIuLmNhNzY2N2MyNGY0
NjI2ZjM0Y2I1OTc4ZTI2NzEwMzljOWQzN2Q3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2Jsb2NrX2ZyYW1lci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19mcmFtZXIuY2MKQEAg
LTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYmxvY2tfcHJvY2Vzc29yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29y
LmNjCmluZGV4IDFiYjY5NTg0Y2MzZmJmNzkzMmMxYTY3MjIxN2QxZjVlMGQ1NjlhNzguLmVmMjVl
N2MyM2JjNzU0ZWRjYzYwNDg4OGFhMDNjNmYyYzliNzFmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9j
ZXNzb3IuY2MKQEAgLTksMTIgKzksMTYgQEAKICAqLwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5oIgogCisjaW5jbHVkZSA8dXRpbGl0eT4K
KwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvcl9tZXRyaWNzLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZGVsYXlfZXN0aW1hdGUuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfdmFyaWFiaWxpdHkuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1w
ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCkBAIC0xMDQsNyArMTA4LDcgQEAgdm9pZCBCbG9j
a1Byb2Nlc3NvckltcGw6OlByb2Nlc3NDYXB0dXJlKAogICAgIGlmICghY2FwdHVyZV9wcm9wZXJs
eV9zdGFydGVkXykgewogICAgICAgY2FwdHVyZV9wcm9wZXJseV9zdGFydGVkXyA9IHRydWU7CiAg
ICAgICByZW5kZXJfYnVmZmVyXy0+UmVzZXQoKTsKLSAgICAgIGRlbGF5X2NvbnRyb2xsZXJfLT5S
ZXNldCgpOworICAgICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0KHRydWUpOwogICAgIH0KICAg
fSBlbHNlIHsKICAgICAvLyBJZiBubyByZW5kZXIgZGF0YSBoYXMgeWV0IGFycml2ZWQsIGRvIG5v
dCBwcm9jZXNzIHRoZSBjYXB0dXJlIHNpZ25hbC4KQEAgLTExOSw3ICsxMjMsNyBAQCB2b2lkIEJs
b2NrUHJvY2Vzc29ySW1wbDo6UHJvY2Vzc0NhcHR1cmUoCiAgICAgICByZW5kZXJfcHJvcGVybHlf
c3RhcnRlZF8pIHsKICAgICBlY2hvX3BhdGhfdmFyaWFiaWxpdHkuZGVsYXlfY2hhbmdlID0KICAg
ICAgICAgRWNob1BhdGhWYXJpYWJpbGl0eTo6RGVsYXlBZGp1c3RtZW50OjprQnVmZmVyRmx1c2g7
Ci0gICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0KCk7CisgICAgZGVsYXlfY29udHJvbGxlcl8t
PlJlc2V0KHRydWUpOwogICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlJlc2V0IGR1ZSB0byBy
ZW5kZXIgYnVmZmVyIG92ZXJydW4gYXQgYmxvY2sgICIKICAgICAgICAgICAgICAgICAgICAgICAg
IDw8IGNhcHR1cmVfY2FsbF9jb3VudGVyXzsKICAgfQpAQCAtMTM1LDExICsxMzksMTEgQEAgdm9p
ZCBCbG9ja1Byb2Nlc3NvckltcGw6OlByb2Nlc3NDYXB0dXJlKAogICAgICAgICBlc3RpbWF0ZWRf
ZGVsYXlfLT5xdWFsaXR5ID09IERlbGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVkKSB7CiAg
ICAgICBlY2hvX3BhdGhfdmFyaWFiaWxpdHkuZGVsYXlfY2hhbmdlID0KICAgICAgICAgICBFY2hv
UGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6OmtEZWxheVJlc2V0OwotICAgICAgZGVs
YXlfY29udHJvbGxlcl8tPlJlc2V0KCk7CisgICAgICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQo
dHJ1ZSk7CiAgICAgICBjYXB0dXJlX3Byb3Blcmx5X3N0YXJ0ZWRfID0gZmFsc2U7CiAgICAgICBy
ZW5kZXJfcHJvcGVybHlfc3RhcnRlZF8gPSBmYWxzZTsKIAotICAgICAgUlRDX0xPRyhMU19XQVJO
SU5HKSA8PCAiUmVzZXQgZHVlIHRvIHJlbmRlciBidWZmZXIgdW5kZXJycnVuIGF0IGJsb2NrICIK
KyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlJlc2V0IGR1ZSB0byByZW5kZXIgYnVmZmVy
IHVuZGVycnVuIGF0IGJsb2NrICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgY2FwdHVy
ZV9jYWxsX2NvdW50ZXJfOwogICAgIH0KICAgfSBlbHNlIGlmIChyZW5kZXJfZXZlbnRfID09IFJl
bmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVudDo6a0FwaUNhbGxTa2V3KSB7CkBAIC0xNDcs
NyArMTUxLDcgQEAgdm9pZCBCbG9ja1Byb2Nlc3NvckltcGw6OlByb2Nlc3NDYXB0dXJlKAogICAg
IC8vIGVjaG8uCiAgICAgZWNob19wYXRoX3ZhcmlhYmlsaXR5LmRlbGF5X2NoYW5nZSA9CiAgICAg
ICAgIEVjaG9QYXRoVmFyaWFiaWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6a0RlbGF5UmVzZXQ7Ci0g
ICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0KCk7CisgICAgZGVsYXlfY29udHJvbGxlcl8tPlJl
c2V0KHRydWUpOwogICAgIGNhcHR1cmVfcHJvcGVybHlfc3RhcnRlZF8gPSBmYWxzZTsKICAgICBy
ZW5kZXJfcHJvcGVybHlfc3RhcnRlZF8gPSBmYWxzZTsKICAgICBSVENfTE9HKExTX1dBUk5JTkcp
IDw8ICJSZXNldCBkdWUgdG8gcmVuZGVyIGJ1ZmZlciBhcGkgc2tldyBhdCBibG9jayAiCkBAIC0x
ODAsNyArMTg0LDcgQEAgdm9pZCBCbG9ja1Byb2Nlc3NvckltcGw6OlByb2Nlc3NDYXB0dXJlKAog
ICAgICAgaWYgKGVzdGltYXRlZF9kZWxheV8tPnF1YWxpdHkgPT0gRGVsYXlFc3RpbWF0ZTo6UXVh
bGl0eTo6a1JlZmluZWQpIHsKICAgICAgICAgZWNob19wYXRoX3ZhcmlhYmlsaXR5LmRlbGF5X2No
YW5nZSA9CiAgICAgICAgICAgICBFY2hvUGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6
OmtEZWxheVJlc2V0OwotICAgICAgICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQoKTsKKyAgICAg
ICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0KHRydWUpOwogICAgICAgICByZW5kZXJfYnVmZmVy
Xy0+UmVzZXQoKTsKICAgICAgICAgY2FwdHVyZV9wcm9wZXJseV9zdGFydGVkXyA9IGZhbHNlOwog
ICAgICAgICByZW5kZXJfcHJvcGVybHlfc3RhcnRlZF8gPSBmYWxzZTsKQEAgLTE5MCw2ICsxOTQs
OCBAQCB2b2lkIEJsb2NrUHJvY2Vzc29ySW1wbDo6UHJvY2Vzc0NhcHR1cmUoCiAgICAgfQogICB9
CiAKKyAgZWNob19wYXRoX3ZhcmlhYmlsaXR5LmNsb2NrX2RyaWZ0ID0gZGVsYXlfY29udHJvbGxl
cl8tPkhhc0Nsb2NrZHJpZnQoKTsKKwogICAvLyBSZW1vdmUgdGhlIGVjaG8gZnJvbSB0aGUgY2Fw
dHVyZSBzaWduYWwuCiAgIGVjaG9fcmVtb3Zlcl8tPlByb2Nlc3NDYXB0dXJlKAogICAgICAgZWNo
b19wYXRoX3ZhcmlhYmlsaXR5LCBjYXB0dXJlX3NpZ25hbF9zYXR1cmF0aW9uLCBlc3RpbWF0ZWRf
ZGVsYXlfLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3IuaAppbmRleCBhMzk2N2VhN2U0YTQxZTU3NzE0
NGU5YzIwNmIxNWYzOGE5ODRiNzlmLi41ZjdlYzdjMTdjM2M4NmI3ODkyYjMwZjNiMWNiODVmYjBl
MWRiNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3IuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3IuaApAQCAtMTEsOSArMTEsMTIgQEAKICNp
Zm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQkxPQ0tfUFJPQ0VTU09SX0hfCiAj
ZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0JMT0NLX1BST0NFU1NPUl9IXwog
CisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rv
cj4KIAorI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCisjaW5j
bHVkZSAiYXBpL2F1ZGlvL2VjaG9fY29udHJvbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlci5oIgpAQCAtMjMs
MTkgKzI2LDMzIEBAIG5hbWVzcGFjZSB3ZWJydGMgewogLy8gQ2xhc3MgZm9yIHBlcmZvcm1pbmcg
ZWNobyBjYW5jZWxsYXRpb24gb24gNjQgc2FtcGxlIGJsb2NrcyBvZiBhdWRpbyBkYXRhLgogY2xh
c3MgQmxvY2tQcm9jZXNzb3IgewogIHB1YmxpYzoKKyAgLy8gQ3JlYXRlIGEgYmxvY2sgcHJvY2Vz
c29yIHdpdGggdGhlIGxlZ2FjeSByZW5kZXIgYnVmZmVyaW5nLgogICBzdGF0aWMgQmxvY2tQcm9j
ZXNzb3IqIENyZWF0ZShjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHopOworICAvLyBDcmVh
dGUgYSBibG9jayBwcm9jZXNzb3Igd2l0aCB0aGUgbmV3IHJlbmRlciBidWZmZXJpbmcuCisgIHN0
YXRpYyBCbG9ja1Byb2Nlc3NvciogQ3JlYXRlMihjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYg
Y29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRl
X2h6KTsKICAgLy8gT25seSB1c2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgogICBzdGF0aWMgQmxv
Y2tQcm9jZXNzb3IqIENyZWF0ZSgKICAgICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBj
b25maWcsCiAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHosCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIpOworICBzdGF0aWMgQmxvY2tQcm9jZXNz
b3IqIENyZWF0ZTIoCisgICAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAor
ICAgICAgaW50IHNhbXBsZV9yYXRlX2h6LAorICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRl
bGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyKTsKICAgc3RhdGljIEJsb2NrUHJvY2Vzc29yKiBDcmVh
dGUoCiAgICAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAogICAgICAgaW50
IHNhbXBsZV9yYXRlX2h6LAogICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVy
PiByZW5kZXJfYnVmZmVyLAogICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJv
bGxlcj4gZGVsYXlfY29udHJvbGxlciwKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zl
cj4gZWNob19yZW1vdmVyKTsKKyAgc3RhdGljIEJsb2NrUHJvY2Vzc29yKiBDcmVhdGUyKAorICAg
ICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKKyAgICAgIGludCBzYW1wbGVf
cmF0ZV9oeiwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVy
X2J1ZmZlciwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRl
bGF5X2NvbnRyb2xsZXIsCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWNob1JlbW92ZXI+IGVjaG9f
cmVtb3Zlcik7CiAKICAgdmlydHVhbCB+QmxvY2tQcm9jZXNzb3IoKSA9IGRlZmF1bHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3NvcjIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9ibG9ja19wcm9jZXNzb3IyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwYmQzZWU1Y2EyOTUyY2EyMjdl
NDFiNjFjNDAyMDU2MzQwYjFkNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9i
bG9ja19wcm9jZXNzb3IyLmNjCkBAIC0wLDAgKzEsMjU2IEBACisvKgorICogIENvcHlyaWdodCAo
YykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRp
bGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFs
LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKKyNpbmNs
dWRlICJhcGkvYXVkaW8vZWNob19jb250cm9sLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3JfbWV0cmljcy5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2RlbGF5X2VzdGltYXRlLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX3ZhcmlhYmlsaXR5LmgiCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZl
ci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxh
eV9jb250cm9sbGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dp
bmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7CisKK2VudW0gY2xhc3MgQmxvY2tQ
cm9jZXNzb3JBcGlDYWxsIHsga0NhcHR1cmUsIGtSZW5kZXIgfTsKKworY2xhc3MgQmxvY2tQcm9j
ZXNzb3JJbXBsMiBmaW5hbCA6IHB1YmxpYyBCbG9ja1Byb2Nlc3NvciB7CisgcHVibGljOgorICBC
bG9ja1Byb2Nlc3NvckltcGwyKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisg
ICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6LAorICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9s
bGVyPiBkZWxheV9jb250cm9sbGVyLAorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxFY2hvUmVtb3Zlcj4gZWNob19yZW1vdmVyKTsKKworICBCbG9ja1Byb2Nlc3NvckltcGwy
KCkgPSBkZWxldGU7CisKKyAgfkJsb2NrUHJvY2Vzc29ySW1wbDIoKSBvdmVycmlkZTsKKworICB2
b2lkIFByb2Nlc3NDYXB0dXJlKGJvb2wgZWNob19wYXRoX2dhaW5fY2hhbmdlLAorICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgY2FwdHVyZV9zaWduYWxfc2F0dXJhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+KiBjYXB0dXJlX2Jsb2Nr
KSBvdmVycmlkZTsKKworICB2b2lkIEJ1ZmZlclJlbmRlcihjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnZlY3RvcjxmbG9hdD4+JiBibG9jaykgb3ZlcnJpZGU7CisKKyAgdm9pZCBVcGRhdGVFY2hvTGVh
a2FnZVN0YXR1cyhib29sIGxlYWthZ2VfZGV0ZWN0ZWQpIG92ZXJyaWRlOworCisgIHZvaWQgR2V0
TWV0cmljcyhFY2hvQ29udHJvbDo6TWV0cmljcyogbWV0cmljcykgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgdm9pZCBTZXRBdWRpb0J1ZmZlckRlbGF5KHNpemVfdCBkZWxheV9tcykgb3ZlcnJpZGU7CisK
KyBwcml2YXRlOgorICBzdGF0aWMgaW50IGluc3RhbmNlX2NvdW50XzsKKyAgc3RkOjp1bmlxdWVf
cHRyPEFwbURhdGFEdW1wZXI+IGRhdGFfZHVtcGVyXzsKKyAgY29uc3QgRWNob0NhbmNlbGxlcjND
b25maWcgY29uZmlnXzsKKyAgYm9vbCBjYXB0dXJlX3Byb3Blcmx5X3N0YXJ0ZWRfID0gZmFsc2U7
CisgIGJvb2wgcmVuZGVyX3Byb3Blcmx5X3N0YXJ0ZWRfID0gZmFsc2U7CisgIGNvbnN0IHNpemVf
dCBzYW1wbGVfcmF0ZV9oel87CisgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4g
cmVuZGVyX2J1ZmZlcl87CisgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+
IGRlbGF5X2NvbnRyb2xsZXJfOworICBzdGQ6OnVuaXF1ZV9wdHI8RWNob1JlbW92ZXI+IGVjaG9f
cmVtb3Zlcl87CisgIEJsb2NrUHJvY2Vzc29yTWV0cmljcyBtZXRyaWNzXzsKKyAgUmVuZGVyRGVs
YXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50IHJlbmRlcl9ldmVudF87CisgIHNpemVfdCBjYXB0dXJl
X2NhbGxfY291bnRlcl8gPSAwOworICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBlc3Rp
bWF0ZWRfZGVsYXlfOworICBhYnNsOjpvcHRpb25hbDxpbnQ+IGVjaG9fcmVtb3Zlcl9kZWxheV87
Cit9OworCitpbnQgQmxvY2tQcm9jZXNzb3JJbXBsMjo6aW5zdGFuY2VfY291bnRfID0gMDsKKwor
QmxvY2tQcm9jZXNzb3JJbXBsMjo6QmxvY2tQcm9jZXNzb3JJbXBsMigKKyAgICBjb25zdCBFY2hv
Q2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIsCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlciwKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RWNob1JlbW92ZXI+IGVjaG9fcmVtb3ZlcikKKyAgICA6IGRhdGFf
ZHVtcGVyXygKKyAgICAgICAgICBuZXcgQXBtRGF0YUR1bXBlcihydGM6OkF0b21pY09wczo6SW5j
cmVtZW50KCZpbnN0YW5jZV9jb3VudF8pKSksCisgICAgICBjb25maWdfKGNvbmZpZyksCisgICAg
ICBzYW1wbGVfcmF0ZV9oel8oc2FtcGxlX3JhdGVfaHopLAorICAgICAgcmVuZGVyX2J1ZmZlcl8o
c3RkOjptb3ZlKHJlbmRlcl9idWZmZXIpKSwKKyAgICAgIGRlbGF5X2NvbnRyb2xsZXJfKHN0ZDo6
bW92ZShkZWxheV9jb250cm9sbGVyKSksCisgICAgICBlY2hvX3JlbW92ZXJfKHN0ZDo6bW92ZShl
Y2hvX3JlbW92ZXIpKSwKKyAgICAgIHJlbmRlcl9ldmVudF8oUmVuZGVyRGVsYXlCdWZmZXI6OkJ1
ZmZlcmluZ0V2ZW50OjprTm9uZSkgeworICBSVENfRENIRUNLKFZhbGlkRnVsbEJhbmRSYXRlKHNh
bXBsZV9yYXRlX2h6XykpOworfQorCitCbG9ja1Byb2Nlc3NvckltcGwyOjp+QmxvY2tQcm9jZXNz
b3JJbXBsMigpID0gZGVmYXVsdDsKKwordm9pZCBCbG9ja1Byb2Nlc3NvckltcGwyOjpQcm9jZXNz
Q2FwdHVyZSgKKyAgICBib29sIGVjaG9fcGF0aF9nYWluX2NoYW5nZSwKKyAgICBib29sIGNhcHR1
cmVfc2lnbmFsX3NhdHVyYXRpb24sCisgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+
PiogY2FwdHVyZV9ibG9jaykgeworICBSVENfRENIRUNLKGNhcHR1cmVfYmxvY2spOworICBSVENf
RENIRUNLX0VRKE51bUJhbmRzRm9yUmF0ZShzYW1wbGVfcmF0ZV9oel8pLCBjYXB0dXJlX2Jsb2Nr
LT5zaXplKCkpOworICBSVENfRENIRUNLX0VRKGtCbG9ja1NpemUsICgqY2FwdHVyZV9ibG9jaylb
MF0uc2l6ZSgpKTsKKworICBjYXB0dXJlX2NhbGxfY291bnRlcl8rKzsKKworICBkYXRhX2R1bXBl
cl8tPkR1bXBSYXcoImFlYzNfcHJvY2Vzc2Jsb2NrX2NhbGxfb3JkZXIiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihCbG9ja1Byb2Nlc3NvckFwaUNhbGw6OmtDYXB0
dXJlKSk7CisgIGRhdGFfZHVtcGVyXy0+RHVtcFdhdigiYWVjM19wcm9jZXNzYmxvY2tfY2FwdHVy
ZV9pbnB1dCIsIGtCbG9ja1NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAmKCpjYXB0dXJl
X2Jsb2NrKVswXVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIExvd2VzdEJhbmRSYXRlKHNh
bXBsZV9yYXRlX2h6XyksIDEpOworCisgIGlmIChyZW5kZXJfcHJvcGVybHlfc3RhcnRlZF8pIHsK
KyAgICBpZiAoIWNhcHR1cmVfcHJvcGVybHlfc3RhcnRlZF8pIHsKKyAgICAgIGNhcHR1cmVfcHJv
cGVybHlfc3RhcnRlZF8gPSB0cnVlOworICAgICAgcmVuZGVyX2J1ZmZlcl8tPlJlc2V0KCk7Cisg
ICAgICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQodHJ1ZSk7CisgICAgfQorICB9IGVsc2Ugewor
ICAgIC8vIElmIG5vIHJlbmRlciBkYXRhIGhhcyB5ZXQgYXJyaXZlZCwgZG8gbm90IHByb2Nlc3Mg
dGhlIGNhcHR1cmUgc2lnbmFsLgorICAgIHJldHVybjsKKyAgfQorCisgIEVjaG9QYXRoVmFyaWFi
aWxpdHkgZWNob19wYXRoX3ZhcmlhYmlsaXR5KAorICAgICAgZWNob19wYXRoX2dhaW5fY2hhbmdl
LCBFY2hvUGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6OmtOb25lLAorICAgICAgZmFs
c2UpOworCisgIGlmIChyZW5kZXJfZXZlbnRfID09IFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJp
bmdFdmVudDo6a1JlbmRlck92ZXJydW4gJiYKKyAgICAgIHJlbmRlcl9wcm9wZXJseV9zdGFydGVk
XykgeworICAgIGVjaG9fcGF0aF92YXJpYWJpbGl0eS5kZWxheV9jaGFuZ2UgPQorICAgICAgICBF
Y2hvUGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6OmtCdWZmZXJGbHVzaDsKKyAgICBk
ZWxheV9jb250cm9sbGVyXy0+UmVzZXQodHJ1ZSk7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8
PCAiUmVzZXQgZHVlIHRvIHJlbmRlciBidWZmZXIgb3ZlcnJ1biBhdCBibG9jayAgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgY2FwdHVyZV9jYWxsX2NvdW50ZXJfOworICB9CisgIHJlbmRl
cl9ldmVudF8gPSBSZW5kZXJEZWxheUJ1ZmZlcjo6QnVmZmVyaW5nRXZlbnQ6OmtOb25lOworCisg
IC8vIFVwZGF0ZSB0aGUgcmVuZGVyIGJ1ZmZlcnMgd2l0aCBhbnkgbmV3bHkgYXJyaXZlZCByZW5k
ZXIgYmxvY2tzIGFuZCBwcmVwYXJlCisgIC8vIHRoZSByZW5kZXIgYnVmZmVycyBmb3IgcmVhZGlu
ZyB0aGUgcmVuZGVyIGRhdGEgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudAorICAvLyBjYXB0
dXJlIGJsb2NrLgorICBSZW5kZXJEZWxheUJ1ZmZlcjo6QnVmZmVyaW5nRXZlbnQgYnVmZmVyX2V2
ZW50ID0KKyAgICAgIHJlbmRlcl9idWZmZXJfLT5QcmVwYXJlQ2FwdHVyZVByb2Nlc3NpbmcoKTsK
KyAgLy8gUmVzZXQgdGhlIGRlbGF5IGNvbnRyb2xsZXIgYXQgcmVuZGVyIGJ1ZmZlciB1bmRlcnJ1
bi4KKyAgaWYgKGJ1ZmZlcl9ldmVudCA9PSBSZW5kZXJEZWxheUJ1ZmZlcjo6QnVmZmVyaW5nRXZl
bnQ6OmtSZW5kZXJVbmRlcnJ1bikgeworICAgIGRlbGF5X2NvbnRyb2xsZXJfLT5SZXNldChmYWxz
ZSk7CisgIH0KKworICBkYXRhX2R1bXBlcl8tPkR1bXBXYXYoImFlYzNfcHJvY2Vzc2Jsb2NrX2Nh
cHR1cmVfaW5wdXQyIiwga0Jsb2NrU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICYoKmNh
cHR1cmVfYmxvY2spWzBdWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgTG93ZXN0QmFuZFJh
dGUoc2FtcGxlX3JhdGVfaHpfKSwgMSk7CisKKyAgLy8gQ29tcHV0ZSBhbmQgYW5kIGFwcGx5IHRo
ZSByZW5kZXIgZGVsYXkgcmVxdWlyZWQgdG8gYWNoaWV2ZSBwcm9wZXIgc2lnbmFsCisgIC8vIGFs
aWdubWVudC4KKyAgZXN0aW1hdGVkX2RlbGF5XyA9IGRlbGF5X2NvbnRyb2xsZXJfLT5HZXREZWxh
eSgKKyAgICAgIHJlbmRlcl9idWZmZXJfLT5HZXREb3duc2FtcGxlZFJlbmRlckJ1ZmZlcigpLCBy
ZW5kZXJfYnVmZmVyXy0+RGVsYXkoKSwKKyAgICAgIGVjaG9fcmVtb3Zlcl9kZWxheV8sICgqY2Fw
dHVyZV9ibG9jaylbMF0pOworCisgIGlmIChlc3RpbWF0ZWRfZGVsYXlfKSB7CisgICAgYm9vbCBk
ZWxheV9jaGFuZ2UgPSByZW5kZXJfYnVmZmVyXy0+U2V0RGVsYXkoZXN0aW1hdGVkX2RlbGF5Xy0+
ZGVsYXkpOworICAgIGlmIChkZWxheV9jaGFuZ2UpIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklO
RykgPDwgIkRlbGF5IGNoYW5nZWQgdG8gIiA8PCBlc3RpbWF0ZWRfZGVsYXlfLT5kZWxheQorICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGF0IGJsb2NrICIgPDwgY2FwdHVyZV9jYWxsX2Nv
dW50ZXJfOworICAgICAgZWNob19wYXRoX3ZhcmlhYmlsaXR5LmRlbGF5X2NoYW5nZSA9CisgICAg
ICAgICAgRWNob1BhdGhWYXJpYWJpbGl0eTo6RGVsYXlBZGp1c3RtZW50OjprTmV3RGV0ZWN0ZWRE
ZWxheTsKKyAgICB9CisgIH0KKworICBlY2hvX3BhdGhfdmFyaWFiaWxpdHkuY2xvY2tfZHJpZnQg
PSBkZWxheV9jb250cm9sbGVyXy0+SGFzQ2xvY2tkcmlmdCgpOworCisgIC8vIFJlbW92ZSB0aGUg
ZWNobyBmcm9tIHRoZSBjYXB0dXJlIHNpZ25hbC4KKyAgZWNob19yZW1vdmVyXy0+UHJvY2Vzc0Nh
cHR1cmUoCisgICAgICBlY2hvX3BhdGhfdmFyaWFiaWxpdHksIGNhcHR1cmVfc2lnbmFsX3NhdHVy
YXRpb24sIGVzdGltYXRlZF9kZWxheV8sCisgICAgICByZW5kZXJfYnVmZmVyXy0+R2V0UmVuZGVy
QnVmZmVyKCksIGNhcHR1cmVfYmxvY2spOworCisgIC8vIENoZWNrIHRvIHNlZSBpZiBhIHJlZmlu
ZWQgZGVsYXkgZXN0aW1hdGUgaGFzIGJlZW4gb2J0YWluZWQgZnJvbSB0aGUgZWNobworICAvLyBy
ZW1vdmVyLgorICBlY2hvX3JlbW92ZXJfZGVsYXlfID0gZWNob19yZW1vdmVyXy0+RGVsYXkoKTsK
KworICAvLyBVcGRhdGUgdGhlIG1ldHJpY3MuCisgIG1ldHJpY3NfLlVwZGF0ZUNhcHR1cmUoZmFs
c2UpOworfQorCit2b2lkIEJsb2NrUHJvY2Vzc29ySW1wbDI6OkJ1ZmZlclJlbmRlcigKKyAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+JiBibG9jaykgeworICBSVENfRENI
RUNLX0VRKE51bUJhbmRzRm9yUmF0ZShzYW1wbGVfcmF0ZV9oel8pLCBibG9jay5zaXplKCkpOwor
ICBSVENfRENIRUNLX0VRKGtCbG9ja1NpemUsIGJsb2NrWzBdLnNpemUoKSk7CisgIGRhdGFfZHVt
cGVyXy0+RHVtcFJhdygiYWVjM19wcm9jZXNzYmxvY2tfY2FsbF9vcmRlciIsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KEJsb2NrUHJvY2Vzc29yQXBpQ2FsbDo6a1Jl
bmRlcikpOworICBkYXRhX2R1bXBlcl8tPkR1bXBXYXYoImFlYzNfcHJvY2Vzc2Jsb2NrX3JlbmRl
cl9pbnB1dCIsIGtCbG9ja1NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAmYmxvY2tbMF1b
MF0sIExvd2VzdEJhbmRSYXRlKHNhbXBsZV9yYXRlX2h6XyksIDEpOworICBkYXRhX2R1bXBlcl8t
PkR1bXBXYXYoImFlYzNfcHJvY2Vzc2Jsb2NrX3JlbmRlcl9pbnB1dDIiLCBrQmxvY2tTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgJmJsb2NrWzBdWzBdLCBMb3dlc3RCYW5kUmF0ZShzYW1w
bGVfcmF0ZV9oel8pLCAxKTsKKworICByZW5kZXJfZXZlbnRfID0gcmVuZGVyX2J1ZmZlcl8tPklu
c2VydChibG9jayk7CisKKyAgbWV0cmljc18uVXBkYXRlUmVuZGVyKHJlbmRlcl9ldmVudF8gIT0K
KyAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVu
dDo6a05vbmUpOworCisgIHJlbmRlcl9wcm9wZXJseV9zdGFydGVkXyA9IHRydWU7CisgIGRlbGF5
X2NvbnRyb2xsZXJfLT5Mb2dSZW5kZXJDYWxsKCk7Cit9CisKK3ZvaWQgQmxvY2tQcm9jZXNzb3JJ
bXBsMjo6VXBkYXRlRWNob0xlYWthZ2VTdGF0dXMoYm9vbCBsZWFrYWdlX2RldGVjdGVkKSB7Cisg
IGVjaG9fcmVtb3Zlcl8tPlVwZGF0ZUVjaG9MZWFrYWdlU3RhdHVzKGxlYWthZ2VfZGV0ZWN0ZWQp
OworfQorCit2b2lkIEJsb2NrUHJvY2Vzc29ySW1wbDI6OkdldE1ldHJpY3MoRWNob0NvbnRyb2w6
Ok1ldHJpY3MqIG1ldHJpY3MpIGNvbnN0IHsKKyAgZWNob19yZW1vdmVyXy0+R2V0TWV0cmljcyht
ZXRyaWNzKTsKKyAgY29uc3QgaW50IGJsb2NrX3NpemVfbXMgPSBzYW1wbGVfcmF0ZV9oel8gPT0g
ODAwMCA/IDggOiA0OworICBhYnNsOjpvcHRpb25hbDxzaXplX3Q+IGRlbGF5ID0gcmVuZGVyX2J1
ZmZlcl8tPkRlbGF5KCk7CisgIG1ldHJpY3MtPmRlbGF5X21zID0gZGVsYXkgPyBzdGF0aWNfY2Fz
dDxpbnQ+KCpkZWxheSkgKiBibG9ja19zaXplX21zIDogMDsKK30KKwordm9pZCBCbG9ja1Byb2Nl
c3NvckltcGwyOjpTZXRBdWRpb0J1ZmZlckRlbGF5KHNpemVfdCBkZWxheV9tcykgeworICByZW5k
ZXJfYnVmZmVyXy0+U2V0QXVkaW9CdWZmZXJEZWxheShkZWxheV9tcyk7Cit9CisKK30gIC8vIG5h
bWVzcGFjZQorCitCbG9ja1Byb2Nlc3NvciogQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoY29uc3Qg
RWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHopIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyKAorICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6
OkNyZWF0ZTIoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUoc2FtcGxlX3JhdGVfaHopKSk7CisgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5X2NvbnRyb2xsZXIoCisg
ICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZTIoY29uZmlnLCBzYW1wbGVfcmF0ZV9o
eikpOworICBzdGQ6OnVuaXF1ZV9wdHI8RWNob1JlbW92ZXI+IGVjaG9fcmVtb3ZlcigKKyAgICAg
IEVjaG9SZW1vdmVyOjpDcmVhdGUoY29uZmlnLCBzYW1wbGVfcmF0ZV9oeikpOworICByZXR1cm4g
Q3JlYXRlMihjb25maWcsIHNhbXBsZV9yYXRlX2h6LCBzdGQ6Om1vdmUocmVuZGVyX2J1ZmZlciks
CisgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShkZWxheV9jb250cm9sbGVyKSwgc3RkOjptb3Zl
KGVjaG9fcmVtb3ZlcikpOworfQorCitCbG9ja1Byb2Nlc3NvciogQmxvY2tQcm9jZXNzb3I6OkNy
ZWF0ZTIoCisgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKKyAgICBpbnQg
c2FtcGxlX3JhdGVfaHosCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiBy
ZW5kZXJfYnVmZmVyKSB7CisgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+
IGRlbGF5X2NvbnRyb2xsZXIoCisgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZTIo
Y29uZmlnLCBzYW1wbGVfcmF0ZV9oeikpOworICBzdGQ6OnVuaXF1ZV9wdHI8RWNob1JlbW92ZXI+
IGVjaG9fcmVtb3ZlcigKKyAgICAgIEVjaG9SZW1vdmVyOjpDcmVhdGUoY29uZmlnLCBzYW1wbGVf
cmF0ZV9oeikpOworICByZXR1cm4gQ3JlYXRlMihjb25maWcsIHNhbXBsZV9yYXRlX2h6LCBzdGQ6
Om1vdmUocmVuZGVyX2J1ZmZlciksCisgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShkZWxheV9j
b250cm9sbGVyKSwgc3RkOjptb3ZlKGVjaG9fcmVtb3ZlcikpOworfQorCitCbG9ja1Byb2Nlc3Nv
ciogQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoCisgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25m
aWcmIGNvbmZpZywKKyAgICBpbnQgc2FtcGxlX3JhdGVfaHosCisgICAgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5X2NvbnRyb2xsZXIsCisgICAgc3RkOjp1bmlxdWVf
cHRyPEVjaG9SZW1vdmVyPiBlY2hvX3JlbW92ZXIpIHsKKyAgcmV0dXJuIG5ldyBCbG9ja1Byb2Nl
c3NvckltcGwyKAorICAgICAgY29uZmlnLCBzYW1wbGVfcmF0ZV9oeiwgc3RkOjptb3ZlKHJlbmRl
cl9idWZmZXIpLAorICAgICAgc3RkOjptb3ZlKGRlbGF5X2NvbnRyb2xsZXIpLCBzdGQ6Om1vdmUo
ZWNob19yZW1vdmVyKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvcl9tZXRyaWNzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvYmxvY2tfcHJvY2Vzc29yX21ldHJpY3MuY2MKaW5kZXggYzhiZGRhNzM4OThlYzA2MDFkNTY2
OTc2MWY3N2I1MTUxNDFmN2FjMS4uZGVhYzFmY2QyMjFhMDVlNDIwZTUxZWFkZTM3M2I3N2I5MGUw
MjA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yX21ldHJpY3Mu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yX21ldHJpY3MuY2MKQEAgLTEx
LDYgKzExLDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9j
a19wcm9jZXNzb3JfbWV0cmljcy5oIgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yX3VuaXR0ZXN0LmNjCmluZGV4
IDcxNDU3ODY4YjI0YWRiZGJjZDYyMWJjZGFhZDNmMzIzYjhmZGE5ODYuLjhhYmE1YjU2NjFlNWQ1
OTRmNmY2NWEyNzg2MGU1YTUxOTJiZmZkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Js
b2NrX3Byb2Nlc3Nvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9j
ZXNzb3JfdW5pdHRlc3QuY2MKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgdGVzdGluZzo6XzsKIC8v
IG1ldGhvZHMgYXJlIGNhbGxhYmxlLgogdm9pZCBSdW5CYXNpY1NldHVwQW5kQXBpQ2FsbFRlc3Qo
aW50IHNhbXBsZV9yYXRlX2h6LCBpbnQgbnVtX2l0ZXJhdGlvbnMpIHsKICAgc3RkOjp1bmlxdWVf
cHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3IoCi0gICAgICBCbG9ja1Byb2Nlc3Nv
cjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHNhbXBsZV9yYXRlX2h6KSk7CisgICAg
ICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBzYW1wbGVf
cmF0ZV9oeikpOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IGJsb2NrKE51bUJh
bmRzRm9yUmF0ZShzYW1wbGVfcmF0ZV9oeiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUsIDEwMDAuZikpOwogCkBA
IC01MSw3ICs1MSw3IEBAIHZvaWQgUnVuQmFzaWNTZXR1cEFuZEFwaUNhbGxUZXN0KGludCBzYW1w
bGVfcmF0ZV9oeiwgaW50IG51bV9pdGVyYXRpb25zKSB7CiAjaWYgUlRDX0RDSEVDS19JU19PTiAm
JiBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKIHZvaWQg
UnVuUmVuZGVyQmxvY2tTaXplVmVyaWZpY2F0aW9uVGVzdChpbnQgc2FtcGxlX3JhdGVfaHopIHsK
ICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3IoCi0gICAg
ICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHNhbXBsZV9y
YXRlX2h6KSk7CisgICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0Nv
bmZpZygpLCBzYW1wbGVfcmF0ZV9oeikpOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9h
dD4+IGJsb2NrKAogICAgICAgTnVtQmFuZHNGb3JSYXRlKHNhbXBsZV9yYXRlX2h6KSwgc3RkOjp2
ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUgLSAxLCAwLmYpKTsKIApAQCAtNjAsNyArNjAsNyBAQCB2
b2lkIFJ1blJlbmRlckJsb2NrU2l6ZVZlcmlmaWNhdGlvblRlc3QoaW50IHNhbXBsZV9yYXRlX2h6
KSB7CiAKIHZvaWQgUnVuQ2FwdHVyZUJsb2NrU2l6ZVZlcmlmaWNhdGlvblRlc3QoaW50IHNhbXBs
ZV9yYXRlX2h6KSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja1Byb2Nlc3Nvcj4gYmxvY2tfcHJv
Y2Vzc29yKAotICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZp
ZygpLCBzYW1wbGVfcmF0ZV9oeikpOworICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoRWNo
b0NhbmNlbGxlcjNDb25maWcoKSwgc2FtcGxlX3JhdGVfaHopKTsKICAgc3RkOjp2ZWN0b3I8c3Rk
Ojp2ZWN0b3I8ZmxvYXQ+PiBibG9jaygKICAgICAgIE51bUJhbmRzRm9yUmF0ZShzYW1wbGVfcmF0
ZV9oeiksIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXplIC0gMSwgMC5mKSk7CiAKQEAgLTcy
LDcgKzcyLDcgQEAgdm9pZCBSdW5SZW5kZXJOdW1CYW5kc1ZlcmlmaWNhdGlvblRlc3QoaW50IHNh
bXBsZV9yYXRlX2h6KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBO
dW1CYW5kc0ZvclJhdGUoc2FtcGxlX3JhdGVfaHopICsgMQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogMTsKICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBi
bG9ja19wcm9jZXNzb3IoCi0gICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlKEVjaG9DYW5jZWxs
ZXIzQ29uZmlnKCksIHNhbXBsZV9yYXRlX2h6KSk7CisgICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3Jl
YXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBzYW1wbGVfcmF0ZV9oeikpOwogICBzdGQ6OnZl
Y3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IGJsb2NrKHdyb25nX251bV9iYW5kcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2Nr
U2l6ZSwgMC5mKSk7CiAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBSdW5DYXB0dXJlTnVtQmFuZHNW
ZXJpZmljYXRpb25UZXN0KGludCBzYW1wbGVfcmF0ZV9oeikgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID8gTnVtQmFuZHNGb3JSYXRlKHNhbXBsZV9yYXRlX2h6KSArIDEK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7CiAgIHN0ZDo6dW5pcXVl
X3B0cjxCbG9ja1Byb2Nlc3Nvcj4gYmxvY2tfcHJvY2Vzc29yKAotICAgICAgQmxvY2tQcm9jZXNz
b3I6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBzYW1wbGVfcmF0ZV9oeikpOworICAg
ICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgc2FtcGxl
X3JhdGVfaHopKTsKICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiBibG9jayh3cm9u
Z19udW1fYmFuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUsIDAuZikpOwogCkBAIC0xMjQsNyArMTI0LDcgQEAg
VEVTVChCbG9ja1Byb2Nlc3NvciwgRElTQUJMRURfRGVsYXlDb250cm9sbGVySW50ZWdyYXRpb24p
IHsKICAgICBFWFBFQ1RfQ0FMTCgqcmVuZGVyX2RlbGF5X2J1ZmZlcl9tb2NrLCBEZWxheSgpKQog
ICAgICAgICAuVGltZXMoa051bUJsb2NrcyArIDEpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShS
ZXR1cm4oMCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja1Byb2Nlc3Nvcj4gYmxvY2tfcHJv
Y2Vzc29yKEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUoCisgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2Nr
UHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3IoQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoCiAgICAg
ICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHJhdGUsIHN0ZDo6bW92ZShyZW5kZXJfZGVsYXlf
YnVmZmVyX21vY2spKSk7CiAKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IHJl
bmRlcl9ibG9jaygKQEAgLTE3Myw3ICsxNzMsNyBAQCBURVNUKEJsb2NrUHJvY2Vzc29yLCBESVNB
QkxFRF9TdWJtb2R1bGVJbnRlZ3JhdGlvbikgewogICAgIEVYUEVDVF9DQUxMKCplY2hvX3JlbW92
ZXJfbW9jaywgVXBkYXRlRWNob0xlYWthZ2VTdGF0dXMoXykpCiAgICAgICAgIC5UaW1lcyhrTnVt
QmxvY2tzKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja1Byb2Nlc3Nvcj4gYmxvY2tfcHJv
Y2Vzc29yKEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUoCisgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2Nr
UHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3IoQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoCiAgICAg
ICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHJhdGUsIHN0ZDo6bW92ZShyZW5kZXJfZGVsYXlf
YnVmZmVyX21vY2spLAogICAgICAgICBzdGQ6Om1vdmUocmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJf
bW9jayksIHN0ZDo6bW92ZShlY2hvX3JlbW92ZXJfbW9jaykpKTsKIApAQCAtMjM5LDcgKzIzOSw3
IEBAIFRFU1QoQmxvY2tQcm9jZXNzb3IsIFZlcmlmeUNhcHR1cmVOdW1CYW5kc0NoZWNrKSB7CiAv
LyBWZXJpZmllcnMgdGhhdCB0aGUgdmVyaWZpY2F0aW9uIGZvciBudWxsIFByb2Nlc3NDYXB0dXJl
IGlucHV0IHdvcmtzLgogVEVTVChCbG9ja1Byb2Nlc3NvciwgTnVsbFByb2Nlc3NDYXB0dXJlUGFy
YW1ldGVyKSB7CiAgIEVYUEVDVF9ERUFUSChzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tQcm9jZXNzb3I+
KAotICAgICAgICAgICAgICAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUoRWNob0NhbmNlbGxl
cjNDb25maWcoKSwgODAwMCkpCisgICAgICAgICAgICAgICAgICAgQmxvY2tQcm9jZXNzb3I6OkNy
ZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgODAwMCkpCiAgICAgICAgICAgICAgICAgICAg
LT5Qcm9jZXNzQ2FwdHVyZShmYWxzZSwgZmFsc2UsIG51bGxwdHIpLAogICAgICAgICAgICAgICAg
IiIpOwogfQpAQCAtMjQ5LDcgKzI0OSw3IEBAIFRFU1QoQmxvY2tQcm9jZXNzb3IsIE51bGxQcm9j
ZXNzQ2FwdHVyZVBhcmFtZXRlcikgewogLy8gdGVzdHMgb24gdGVzdCBib3RzIGhhcyBiZWVuIGZp
eGVkLgogVEVTVChCbG9ja1Byb2Nlc3NvciwgRElTQUJMRURfV3JvbmdTYW1wbGVSYXRlKSB7CiAg
IEVYUEVDVF9ERUFUSChzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tQcm9jZXNzb3I+KAotICAgICAgICAg
ICAgICAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwg
ODAwMSkpLAorICAgICAgICAgICAgICAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUyKEVjaG9D
YW5jZWxsZXIzQ29uZmlnKCksIDgwMDEpKSwKICAgICAgICAgICAgICAgICIiKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2FzY2FkZWRfYmlxdWFkX2ZpbHRlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2Nhc2NhZGVkX2JpcXVhZF9maWx0ZXIuY2MKaW5kZXggMzMzZDIyNjdhNDE4Y2Zi
MTQxOWE2YTJhNmJmZThiYjU1NDYzZGZkZS4uNWRmZDdjNTRlMmI0ZTRjZjc3YTI2MDA4MzljMzgy
NzJkMDczYTkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2FzY2FkZWRfYmlxdWFkX2Zp
bHRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmNjCkBA
IC05LDYgKzksOCBAQAogICovCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvY2FzY2FkZWRfYmlxdWFkX2ZpbHRlci5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvY2FzY2FkZWRfYmlxdWFkX2ZpbHRlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvY2FzY2FkZWRfYmlxdWFkX2ZpbHRlci5oCmluZGV4IDFlMDlmYTZlNWE0MjA0NzYxYmMy
NDExY2M5YjNhODdhOGFlZDk5NDguLjJhM2I2ZDY1YzVhMGY3NTEwYzA2MGZmMDhlYjVhYjAwMDVm
MDA1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nhc2NhZGVkX2JpcXVhZF9maWx0ZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmgKQEAgLTExLDYg
KzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQ0FTQ0FERURf
QklRVUFEX0ZJTFRFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19D
QVNDQURFRF9CSVFVQURfRklMVEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRl
IDxjb21wbGV4PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0
ZWN0b3IuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM0OWI3OTVjNDNkYTUzNjNmZTI4NjcxNWY2MWI0ODM3MTIz
YzRkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0
b3IuY2MKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5oIgorCitu
YW1lc3BhY2Ugd2VicnRjIHsKKworQ2xvY2tkcmlmdERldGVjdG9yOjpDbG9ja2RyaWZ0RGV0ZWN0
b3IoKQorICAgIDogbGV2ZWxfKExldmVsOjprTm9uZSksIHN0YWJpbGl0eV9jb3VudGVyXygwKSB7
CisgIGRlbGF5X2hpc3RvcnlfLmZpbGwoMCk7Cit9CisKK0Nsb2NrZHJpZnREZXRlY3Rvcjo6fkNs
b2NrZHJpZnREZXRlY3RvcigpID0gZGVmYXVsdDsKKwordm9pZCBDbG9ja2RyaWZ0RGV0ZWN0b3I6
OlVwZGF0ZShpbnQgZGVsYXlfZXN0aW1hdGUpIHsKKyAgaWYgKGRlbGF5X2VzdGltYXRlID09IGRl
bGF5X2hpc3RvcnlfWzBdKSB7CisgICAgLy8gUmVzZXQgY2xvY2tkcmlmdCBsZXZlbCBpZiBkZWxh
eSBlc3RpbWF0ZSBpcyBzdGFibGUgZm9yIDc1MDAgYmxvY2tzICgzMAorICAgIC8vIHNlY29uZHMp
LgorICAgIGlmICgrK3N0YWJpbGl0eV9jb3VudGVyXyA+IDc1MDApCisgICAgICBsZXZlbF8gPSBM
ZXZlbDo6a05vbmU7CisgICAgcmV0dXJuOworICB9CisKKyAgc3RhYmlsaXR5X2NvdW50ZXJfID0g
MDsKKyAgY29uc3QgaW50IGQxID0gZGVsYXlfaGlzdG9yeV9bMF0gLSBkZWxheV9lc3RpbWF0ZTsK
KyAgY29uc3QgaW50IGQyID0gZGVsYXlfaGlzdG9yeV9bMV0gLSBkZWxheV9lc3RpbWF0ZTsKKyAg
Y29uc3QgaW50IGQzID0gZGVsYXlfaGlzdG9yeV9bMl0gLSBkZWxheV9lc3RpbWF0ZTsKKworICAv
LyBQYXR0ZXJucyByZWNvZ25pemVkIGFzIHBvc2l0aXZlIGNsb2NrZHJpZnQ6CisgIC8vIFt4LTNd
LCB4LTIsIHgtMSwgeC4KKyAgLy8gW3gtM10sIHgtMSwgeC0yLCB4LgorICBjb25zdCBib29sIHBy
b2JhYmxlX2RyaWZ0X3VwID0KKyAgICAgIChkMSA9PSAtMSAmJiBkMiA9PSAtMikgfHwgKGQxID09
IC0yICYmIGQyID09IC0xKTsKKyAgY29uc3QgYm9vbCBkcmlmdF91cCA9IHByb2JhYmxlX2RyaWZ0
X3VwICYmIGQzID09IC0zOworCisgIC8vIFBhdHRlcm5zIHJlY29nbml6ZWQgYXMgbmVnYXRpdmUg
Y2xvY2tkcmlmdDoKKyAgLy8gW3grM10sIHgrMiwgeCsxLCB4LgorICAvLyBbeCszXSwgeCsxLCB4
KzIsIHguCisgIGNvbnN0IGJvb2wgcHJvYmFibGVfZHJpZnRfZG93biA9IChkMSA9PSAxICYmIGQy
ID09IDIpIHx8IChkMSA9PSAyICYmIGQyID09IDEpOworICBjb25zdCBib29sIGRyaWZ0X2Rvd24g
PSBwcm9iYWJsZV9kcmlmdF9kb3duICYmIGQzID09IDM7CisKKyAgLy8gU2V0IGNsb2NrZHJpZnQg
bGV2ZWwuCisgIGlmIChkcmlmdF91cCB8fCBkcmlmdF9kb3duKSB7CisgICAgbGV2ZWxfID0gTGV2
ZWw6OmtWZXJpZmllZDsKKyAgfSBlbHNlIGlmICgocHJvYmFibGVfZHJpZnRfdXAgfHwgcHJvYmFi
bGVfZHJpZnRfZG93bikgJiYKKyAgICAgICAgICAgICBsZXZlbF8gPT0gTGV2ZWw6OmtOb25lKSB7
CisgICAgbGV2ZWxfID0gTGV2ZWw6OmtQcm9iYWJsZTsKKyAgfQorCisgIC8vIFNoaWZ0IGRlbGF5
IGhpc3Rvcnkgb25lIHN0ZXAuCisgIGRlbGF5X2hpc3RvcnlfWzJdID0gZGVsYXlfaGlzdG9yeV9b
MV07CisgIGRlbGF5X2hpc3RvcnlfWzFdID0gZGVsYXlfaGlzdG9yeV9bMF07CisgIGRlbGF5X2hp
c3RvcnlfWzBdID0gZGVsYXlfZXN0aW1hdGU7Cit9Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9yLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI1MjhjOTQ4OTIyYTgw
Y2RiOTRmYzM2NGE0MGE3OGE4YWJiMmZlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3IuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogIENvcHly
aWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19DTE9DS0RS
SUZUX0RFVEVDVE9SX0hfCisjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0NM
T0NLRFJJRlRfREVURUNUT1JfSF8KKworI2luY2x1ZGUgPGFycmF5PgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworY2xhc3MgQXBtRGF0YUR1bXBlcjsKK3N0cnVjdCBEb3duc2FtcGxlZFJlbmRlckJ1
ZmZlcjsKK3N0cnVjdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZzsKKworLy8gRGV0ZWN0cyBjbG9ja2Ry
aWZ0IGJ5IGFuYWx5emluZyB0aGUgZXN0aW1hdGVkIGRlbGF5LgorY2xhc3MgQ2xvY2tkcmlmdERl
dGVjdG9yIHsKKyBwdWJsaWM6CisgIGVudW0gY2xhc3MgTGV2ZWwgeyBrTm9uZSwga1Byb2JhYmxl
LCBrVmVyaWZpZWQsIGtOdW1DYXRlZ29yaWVzIH07CisgIENsb2NrZHJpZnREZXRlY3RvcigpOwor
ICB+Q2xvY2tkcmlmdERldGVjdG9yKCk7CisgIHZvaWQgVXBkYXRlKGludCBkZWxheV9lc3RpbWF0
ZSk7CisgIExldmVsIENsb2NrZHJpZnRMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIGxldmVsXzsgfQor
CisgcHJpdmF0ZToKKyAgc3RkOjphcnJheTxpbnQsIDM+IGRlbGF5X2hpc3RvcnlfOworICBMZXZl
bCBsZXZlbF87CisgIHNpemVfdCBzdGFiaWxpdHlfY291bnRlcl87Cit9OworfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0NM
T0NLRFJJRlRfREVURUNUT1JfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJp
ZnRfZGV0ZWN0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVj
dG9yX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmOThiMDFkM2FhZTNlYmUxNjdjOWQ5YTQ1Mjhh
YjQzZjgwNjVkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0
X2RldGVjdG9yX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlm
dF9kZXRlY3Rvci5oIgorCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKK1RFU1QoQ2xvY2tkcmlmdERldGVjdG9yLCBDbG9ja2RyaWZ0RGV0ZWN0b3IpIHsKKyAg
Q2xvY2tkcmlmdERldGVjdG9yIGM7CisgIC8vIE5vIGNsb2NrZHJpZnQgYXQgc3RhcnQuCisgIEVY
UEVDVF9UUlVFKGMuQ2xvY2tkcmlmdExldmVsKCkgPT0gQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZl
bDo6a05vbmUpOworCisgIC8vIE1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBkZWxheS4KKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBjLlVwZGF0ZSgxMDAwKTsKKyAgRVhQRUNU
X1RSVUUoYy5DbG9ja2RyaWZ0TGV2ZWwoKSA9PSBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjpr
Tm9uZSk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspCisgICAgYy5VcGRhdGUoMTAw
MSk7CisgIEVYUEVDVF9UUlVFKGMuQ2xvY2tkcmlmdExldmVsKCkgPT0gQ2xvY2tkcmlmdERldGVj
dG9yOjpMZXZlbDo6a05vbmUpOworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAg
IGMuVXBkYXRlKDEwMDIpOworICAvLyBQcm9iYWJsZSBjbG9ja2RyaWZ0LgorICBFWFBFQ1RfVFJV
RShjLkNsb2NrZHJpZnRMZXZlbCgpID09IENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtQcm9i
YWJsZSk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspCisgICAgYy5VcGRhdGUoMTAw
Myk7CisgIC8vIFZlcmlmaWVkIGNsb2NrZHJpZnQuCisgIEVYUEVDVF9UUlVFKGMuQ2xvY2tkcmlm
dExldmVsKCkgPT0gQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6a1ZlcmlmaWVkKTsKKworICAv
LyBTdGFibGUgZGVsYXkuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykKKyAgICBj
LlVwZGF0ZSgxMDAzKTsKKyAgLy8gTm8gY2xvY2tkcmlmdC4KKyAgRVhQRUNUX1RSVUUoYy5DbG9j
a2RyaWZ0TGV2ZWwoKSA9PSBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjprTm9uZSk7CisKKyAg
Ly8gRGVjcmVhc2luZyBkZWxheS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAg
ICBjLlVwZGF0ZSgxMDAxKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBj
LlVwZGF0ZSg5OTkpOworICAvLyBQcm9iYWJsZSBjbG9ja2RyaWZ0LgorICBFWFBFQ1RfVFJVRShj
LkNsb2NrZHJpZnRMZXZlbCgpID09IENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtQcm9iYWJs
ZSk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspCisgICAgYy5VcGRhdGUoMTAwMCk7
CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspCisgICAgYy5VcGRhdGUoOTk4KTsKKyAg
Ly8gVmVyaWZpZWQgY2xvY2tkcmlmdC4KKyAgRVhQRUNUX1RSVUUoYy5DbG9ja2RyaWZ0TGV2ZWwo
KSA9PSBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjprVmVyaWZpZWQpOworfQorfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lzZV9n
ZW5lcmF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dlbmVyYXRvci5jYwpp
bmRleCA1NWZhZjRiNTI5MWExNzViYmU0YmRhYjM1MTYxNGNkMDdiZWVjZjUxLi43NjZlNjU4NjM5
ODFjYWZiYTA5ZGQ1MTA4NWRlZjZmMjZjMWY4OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9jb21mb3J0X25vaXNlX2dlbmVyYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0
X25vaXNlX2dlbmVyYXRvci5jYwpAQCAtMTYsMTMgKzE2LDE2IEBACiAjaWYgZGVmaW5lZChXRUJS
VENfQVJDSF9YODZfRkFNSUxZKQogI2luY2x1ZGUgPGVtbWludHJpbi5oPgogI2VuZGlmCi0jaW5j
bHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxhcnJheT4KKyNp
bmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CiAjaW5jbHVkZSA8bnVtZXJpYz4KIAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJv
Y2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNzaW5nX2xpYnJhcnkuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3JfbWF0aC5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMzgsNjQgKzQxLDEw
IEBAIHZvaWQgVGFibGVSYW5kb21WYWx1ZShpbnQxNl90KiB2ZWN0b3IsIGludDE2X3QgdmVjdG9y
X2xlbmd0aCwgdWludDMyX3QqIHNlZWQpIHsKIAogfSAgLy8gbmFtZXNwYWNlCiAKLW5hbWVzcGFj
ZSBhZWMzIHsKLQotI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfWDg2X0ZBTUlMWSkKLQotdm9pZCBF
c3RpbWF0ZUNvbWZvcnROb2lzZV9TU0UyKGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5n
dGhCeTJQbHVzMT4mIE4yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
KiBzZWVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZmdERhdGEqIGxvd2VyX2Jh
bmRfbm9pc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmZ0RGF0YSogdXBwZXJf
YmFuZF9ub2lzZSkgewotICBGZnREYXRhKiBOX2xvdyA9IGxvd2VyX2JhbmRfbm9pc2U7Ci0gIEZm
dERhdGEqIE5faGlnaCA9IHVwcGVyX2JhbmRfbm9pc2U7Ci0KLSAgLy8gQ29tcHV0ZSBzcXVhcmUg
cm9vdCBzcGVjdHJ1bS4KLSAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBO
OwotICBmb3IgKHNpemVfdCBrID0gMDsgayA8IGtGZnRMZW5ndGhCeTI7IGsgKz0gNCkgewotICAg
IF9fbTEyOCB2ID0gX21tX2xvYWR1X3BzKCZOMltrXSk7Ci0gICAgdiA9IF9tbV9zcXJ0X3BzKHYp
OwotICAgIF9tbV9zdG9yZXVfcHMoJk5ba10sIHYpOwotICB9Ci0KLSAgTltrRmZ0TGVuZ3RoQnky
XSA9IHNxcnRmKE4yW2tGZnRMZW5ndGhCeTJdKTsKLQotICAvLyBDb21wdXRlIHRoZSBub2lzZSBs
ZXZlbCBmb3IgdGhlIHVwcGVyIGJhbmRzLgotICBjb25zdGV4cHIgZmxvYXQga09uZUJ5TnVtQmFu
ZHMgPSAxLmYgLyAoa0ZmdExlbmd0aEJ5MlBsdXMxIC8gMiArIDEpOwotICBjb25zdGV4cHIgaW50
IGtGZnRMZW5ndGhCeTJQbHVzMUJ5MiA9IGtGZnRMZW5ndGhCeTJQbHVzMSAvIDI7Ci0gIGNvbnN0
IGZsb2F0IGhpZ2hfYmFuZF9ub2lzZV9sZXZlbCA9Ci0gICAgICBzdGQ6OmFjY3VtdWxhdGUoTi5i
ZWdpbigpICsga0ZmdExlbmd0aEJ5MlBsdXMxQnkyLCBOLmVuZCgpLCAwLmYpICoKLSAgICAgIGtP
bmVCeU51bUJhbmRzOwotCi0gIC8vIEdlbmVyYXRlIGNvbXBsZXggbm9pc2UuCi0gIHN0ZDo6YXJy
YXk8aW50MTZfdCwga0ZmdExlbmd0aEJ5MiAtIDE+IHJhbmRvbV92YWx1ZXNfaW50OwotICBUYWJs
ZVJhbmRvbVZhbHVlKHJhbmRvbV92YWx1ZXNfaW50LmRhdGEoKSwgcmFuZG9tX3ZhbHVlc19pbnQu
c2l6ZSgpLCBzZWVkKTsKLQotICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyIC0gMT4g
c2luOwotICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyIC0gMT4gY29zOwotICBjb25z
dGV4cHIgZmxvYXQga1NjYWxlID0gNi4yODMxODUzMDcxNzk1OWYgLyAzMjc2OC4wZjsKLSAgc3Rk
Ojp0cmFuc2Zvcm0ocmFuZG9tX3ZhbHVlc19pbnQuYmVnaW4oKSwgcmFuZG9tX3ZhbHVlc19pbnQu
ZW5kKCksCi0gICAgICAgICAgICAgICAgIHNpbi5iZWdpbigpLCBbJl0oaW50MTZfdCBhKSB7IHJl
dHVybiAtc2luZihrU2NhbGUgKiBhKTsgfSk7Ci0gIHN0ZDo6dHJhbnNmb3JtKHJhbmRvbV92YWx1
ZXNfaW50LmJlZ2luKCksIHJhbmRvbV92YWx1ZXNfaW50LmVuZCgpLAotICAgICAgICAgICAgICAg
ICBjb3MuYmVnaW4oKSwgWyZdKGludDE2X3QgYSkgeyByZXR1cm4gY29zZihrU2NhbGUgKiBhKTsg
fSk7Ci0KLSAgLy8gRm9ybSBsb3ctZnJlcXVlbmN5IG5vaXNlIHZpYSBzcGVjdHJhbCBzaGFwaW5n
LgotICBOX2xvdy0+cmVbMF0gPSBOX2xvdy0+cmVba0ZmdExlbmd0aEJ5Ml0gPSBOX2hpZ2gtPnJl
WzBdID0KLSAgICAgIE5faGlnaC0+cmVba0ZmdExlbmd0aEJ5Ml0gPSAwLmY7Ci0gIHN0ZDo6dHJh
bnNmb3JtKGNvcy5iZWdpbigpLCBjb3MuZW5kKCksIE4uYmVnaW4oKSArIDEsIE5fbG93LT5yZS5i
ZWdpbigpICsgMSwKLSAgICAgICAgICAgICAgICAgc3RkOjptdWx0aXBsaWVzPGZsb2F0PigpKTsK
LSAgc3RkOjp0cmFuc2Zvcm0oc2luLmJlZ2luKCksIHNpbi5lbmQoKSwgTi5iZWdpbigpICsgMSwg
Tl9sb3ctPmltLmJlZ2luKCkgKyAxLAotICAgICAgICAgICAgICAgICBzdGQ6Om11bHRpcGxpZXM8
ZmxvYXQ+KCkpOwotCi0gIC8vIEZvcm0gdGhlIGhpZ2gtZnJlcXVlbmN5IG5vaXNlIHZpYSBzaW1w
bGUgbGV2ZWxsaW5nLgotICBzdGQ6OnRyYW5zZm9ybShjb3MuYmVnaW4oKSwgY29zLmVuZCgpLCBO
X2hpZ2gtPnJlLmJlZ2luKCkgKyAxLAotICAgICAgICAgICAgICAgICBbJl0oZmxvYXQgYSkgeyBy
ZXR1cm4gaGlnaF9iYW5kX25vaXNlX2xldmVsICogYTsgfSk7Ci0gIHN0ZDo6dHJhbnNmb3JtKHNp
bi5iZWdpbigpLCBzaW4uZW5kKCksIE5faGlnaC0+aW0uYmVnaW4oKSArIDEsCi0gICAgICAgICAg
ICAgICAgIFsmXShmbG9hdCBhKSB7IHJldHVybiBoaWdoX2JhbmRfbm9pc2VfbGV2ZWwgKiBhOyB9
KTsKLX0KLQotI2VuZGlmCituYW1lc3BhY2UgewogCi12b2lkIEVzdGltYXRlQ29tZm9ydE5vaXNl
KGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIE4yLAordm9pZCBH
ZW5lcmF0ZUNvbWZvcnROb2lzZShBZWMzT3B0aW1pemF0aW9uIG9wdGltaXphdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5
MlBsdXMxPiYgTjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiBzZWVkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBGZnREYXRhKiBsb3dlcl9iYW5kX25vaXNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBGZnREYXRhKiB1cHBlcl9iYW5kX25vaXNlKSB7CkBAIC0x
MDQsOCArNTMsOCBAQCB2b2lkIEVzdGltYXRlQ29tZm9ydE5vaXNlKGNvbnN0IHN0ZDo6YXJyYXk8
ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIE4yLAogCiAgIC8vIENvbXB1dGUgc3F1YXJlIHJv
b3Qgc3BlY3RydW0uCiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gTjsK
LSAgc3RkOjp0cmFuc2Zvcm0oTjIuYmVnaW4oKSwgTjIuZW5kKCksIE4uYmVnaW4oKSwKLSAgICAg
ICAgICAgICAgICAgW10oZmxvYXQgYSkgeyByZXR1cm4gc3FydGYoYSk7IH0pOworICBzdGQ6OmNv
cHkoTjIuYmVnaW4oKSwgTjIuZW5kKCksIE4uYmVnaW4oKSk7CisgIGFlYzM6OlZlY3Rvck1hdGgo
b3B0aW1pemF0aW9uKS5TcXJ0KE4pOwogCiAgIC8vIENvbXB1dGUgdGhlIG5vaXNlIGxldmVsIGZv
ciB0aGUgdXBwZXIgYmFuZHMuCiAgIGNvbnN0ZXhwciBmbG9hdCBrT25lQnlOdW1CYW5kcyA9IDEu
ZiAvIChrRmZ0TGVuZ3RoQnkyUGx1czEgLyAyICsgMSk7CkBAIC0xMTgsMTMgKzY3LDIxIEBAIHZv
aWQgRXN0aW1hdGVDb21mb3J0Tm9pc2UoY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0
aEJ5MlBsdXMxPiYgTjIsCiAgIHN0ZDo6YXJyYXk8aW50MTZfdCwga0ZmdExlbmd0aEJ5MiAtIDE+
IHJhbmRvbV92YWx1ZXNfaW50OwogICBUYWJsZVJhbmRvbVZhbHVlKHJhbmRvbV92YWx1ZXNfaW50
LmRhdGEoKSwgcmFuZG9tX3ZhbHVlc19pbnQuc2l6ZSgpLCBzZWVkKTsKIAorICAvLyBUaGUgYW5h
bHlzaXMgYW5kIHN5bnRoZXNpcyB3aW5kb3dpbmcgY2F1c2UgbG9zcyBvZiBwb3dlciB3aGVuCisg
IC8vIGNyb3NzLWZhZGluZyB0aGUgbm9pc2Ugd2hlcmUgZnJhbWVzIGFyZSBjb21wbGV0ZWx5IHVu
Y29ycmVsYXRlZAorICAvLyAoZ2VuZXJhdGVkIHdpdGggcmFuZG9tIHBoYXNlKSwgaGVuY2UgdGhl
IGZhY3RvciBzcXJ0KDIpLgorICAvLyBUaGlzIGlzIG5vdCB0aGUgY2FzZSBmb3IgdGhlIHNwZWVj
aCBzaWduYWwgd2hlcmUgdGhlIGlucHV0IGlzIG92ZXJsYXBwaW5nCisgIC8vIChzdHJvbmcgY29y
cmVsYXRpb24pLgogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyIC0gMT4gc2luOwog
ICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyIC0gMT4gY29zOwogICBjb25zdGV4cHIg
ZmxvYXQga1NjYWxlID0gNi4yODMxODUzMDcxNzk1OWYgLyAzMjc2OC4wZjsKKyAgY29uc3RleHBy
IGZsb2F0IGtTcXJ0MiA9IDEuNDE0MjEzNTYyM2Y7CiAgIHN0ZDo6dHJhbnNmb3JtKHJhbmRvbV92
YWx1ZXNfaW50LmJlZ2luKCksIHJhbmRvbV92YWx1ZXNfaW50LmVuZCgpLAotICAgICAgICAgICAg
ICAgICBzaW4uYmVnaW4oKSwgWyZdKGludDE2X3QgYSkgeyByZXR1cm4gLXNpbmYoa1NjYWxlICog
YSk7IH0pOworICAgICAgICAgICAgICAgICBzaW4uYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAg
WyZdKGludDE2X3QgYSkgeyByZXR1cm4gLXNpbmYoa1NjYWxlICogYSkgKiBrU3FydDI7IH0pOwog
ICBzdGQ6OnRyYW5zZm9ybShyYW5kb21fdmFsdWVzX2ludC5iZWdpbigpLCByYW5kb21fdmFsdWVz
X2ludC5lbmQoKSwKLSAgICAgICAgICAgICAgICAgY29zLmJlZ2luKCksIFsmXShpbnQxNl90IGEp
IHsgcmV0dXJuIGNvc2Yoa1NjYWxlICogYSk7IH0pOworICAgICAgICAgICAgICAgICBjb3MuYmVn
aW4oKSwKKyAgICAgICAgICAgICAgICAgWyZdKGludDE2X3QgYSkgeyByZXR1cm4gY29zZihrU2Nh
bGUgKiBhKSAqIGtTcXJ0MjsgfSk7CiAKICAgLy8gRm9ybSBsb3ctZnJlcXVlbmN5IG5vaXNlIHZp
YSBzcGVjdHJhbCBzaGFwaW5nLgogICBOX2xvdy0+cmVbMF0gPSBOX2xvdy0+cmVba0ZmdExlbmd0
aEJ5Ml0gPSBOX2hpZ2gtPnJlWzBdID0KQEAgLTE0MSw3ICs5OCw3IEBAIHZvaWQgRXN0aW1hdGVD
b21mb3J0Tm9pc2UoY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYg
TjIsCiAgICAgICAgICAgICAgICAgIFsmXShmbG9hdCBhKSB7IHJldHVybiBoaWdoX2JhbmRfbm9p
c2VfbGV2ZWwgKiBhOyB9KTsKIH0KIAotfSAgLy8gbmFtZXNwYWNlIGFlYzMKK30gIC8vIG5hbWVz
cGFjZQogCiBDb21mb3J0Tm9pc2VHZW5lcmF0b3I6OkNvbWZvcnROb2lzZUdlbmVyYXRvcihBZWMz
T3B0aW1pemF0aW9uIG9wdGltaXphdGlvbikKICAgICA6IG9wdGltaXphdGlvbl8ob3B0aW1pemF0
aW9uKSwKQEAgLTIwNSwxNyArMTYyLDggQEAgdm9pZCBDb21mb3J0Tm9pc2VHZW5lcmF0b3I6OkNv
bXB1dGUoCiAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIE4y
ID0KICAgICAgIE4yX2luaXRpYWxfID8gKk4yX2luaXRpYWxfIDogTjJfOwogCi0gIHN3aXRjaCAo
b3B0aW1pemF0aW9uXykgewotI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfWDg2X0ZBTUlMWSkKLSAg
ICBjYXNlIEFlYzNPcHRpbWl6YXRpb246OmtTc2UyOgotICAgICAgYWVjMzo6RXN0aW1hdGVDb21m
b3J0Tm9pc2VfU1NFMihOMiwgJnNlZWRfLCBsb3dlcl9iYW5kX25vaXNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlcl9iYW5kX25vaXNlKTsKLSAgICAgIGJyZWFr
OwotI2VuZGlmCi0gICAgZGVmYXVsdDoKLSAgICAgIGFlYzM6OkVzdGltYXRlQ29tZm9ydE5vaXNl
KE4yLCAmc2VlZF8sIGxvd2VyX2JhbmRfbm9pc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cHBlcl9iYW5kX25vaXNlKTsKLSAgfQorICBHZW5lcmF0ZUNvbWZvcnROb2lzZShv
cHRpbWl6YXRpb25fLCBOMiwgJnNlZWRfLCBsb3dlcl9iYW5kX25vaXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICB1cHBlcl9iYW5kX25vaXNlKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3IuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2NvbWZvcnRfbm9pc2VfZ2VuZXJhdG9yLmgKaW5kZXggNmE0Nzk4OTZl
Y2I5NzZmYjMwYWJkM2EzYTY5NzE5YzQ3YWMxNjRiOS4uM2JlMzg2YmFiMWU3Njg3Y2MwZjRhZjI1
Y2I4ZTQ3YzJkZTE1MzMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lz
ZV9nZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dlbmVyYXRv
ci5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19B
RUMzX0NPTUZPUlRfTk9JU0VfR0VORVJBVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJP
Q0VTU0lOR19BRUMzX0NPTUZPUlRfTk9JU0VfR0VORVJBVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRp
bnQuaD4KICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxtZW1vcnk+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2NvbWZvcnRfbm9pc2VfZ2VuZXJhdG9yX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3JfdW5pdHRlc3QuY2MKaW5kZXggNzdh
MDllZGNkNmEwMzhlZmRmYjg4ZjlkNTM1NmQ4ZGUxOWU4N2U0NC4uMTBiYTY5NjAzNjgxZmQzMGI1
ZWRjZjEzMTA0ZTc4MmVhYjUzYzA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY29tZm9y
dF9ub2lzZV9nZW5lcmF0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY29tZm9y
dF9ub2lzZV9nZW5lcmF0b3JfdW5pdHRlc3QuY2MKQEAgLTUyLDQ1ICs1Miw2IEBAIFRFU1QoQ29t
Zm9ydE5vaXNlR2VuZXJhdG9yLCBOdWxsVXBwZXJCYW5kTm9pc2UpIHsKIAogI2VuZGlmCiAKLSNp
ZiBkZWZpbmVkKFdFQlJUQ19BUkNIX1g4Nl9GQU1JTFkpCi0vLyBWZXJpZmllcyB0aGF0IHRoZSBv
cHRpbWl6ZWQgbWV0aG9kcyBhcmUgYml0ZXhhY3QgdG8gdGhlaXIgcmVmZXJlbmNlCi0vLyBjb3Vu
dGVycGFydHMuCi1URVNUKENvbWZvcnROb2lzZUdlbmVyYXRvciwgVGVzdE9wdGltaXphdGlvbnMp
IHsKLSAgaWYgKFdlYlJ0Y19HZXRDUFVJbmZvKGtTU0UyKSAhPSAwKSB7Ci0gICAgUmFuZG9tIHJh
bmRvbV9nZW5lcmF0b3IoNDJVKTsKLSAgICB1aW50MzJfdCBzZWVkID0gNDI7Ci0gICAgdWludDMy
X3Qgc2VlZF9TU0UyID0gNDI7Ci0gICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBs
dXMxPiBOMjsKLSAgICBGZnREYXRhIGxvd2VyX2JhbmRfbm9pc2U7Ci0gICAgRmZ0RGF0YSB1cHBl
cl9iYW5kX25vaXNlOwotICAgIEZmdERhdGEgbG93ZXJfYmFuZF9ub2lzZV9TU0UyOwotICAgIEZm
dERhdGEgdXBwZXJfYmFuZF9ub2lzZV9TU0UyOwotICAgIGZvciAoaW50IGsgPSAwOyBrIDwgMTA7
ICsraykgewotICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBOMi5zaXplKCk7ICsraikgewot
ICAgICAgICBOMltqXSA9IHJhbmRvbV9nZW5lcmF0b3IuUmFuZDxmbG9hdD4oKSAqIDEwMDAuZjsK
LSAgICAgIH0KLQotICAgICAgRXN0aW1hdGVDb21mb3J0Tm9pc2UoTjIsICZzZWVkLCAmbG93ZXJf
YmFuZF9ub2lzZSwgJnVwcGVyX2JhbmRfbm9pc2UpOwotICAgICAgRXN0aW1hdGVDb21mb3J0Tm9p
c2VfU1NFMihOMiwgJnNlZWRfU1NFMiwgJmxvd2VyX2JhbmRfbm9pc2VfU1NFMiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnVwcGVyX2JhbmRfbm9pc2VfU1NFMik7Ci0gICAgICBm
b3IgKHNpemVfdCBqID0gMDsgaiA8IGxvd2VyX2JhbmRfbm9pc2UucmUuc2l6ZSgpOyArK2opIHsK
LSAgICAgICAgRVhQRUNUX05FQVIobG93ZXJfYmFuZF9ub2lzZS5yZVtqXSwgbG93ZXJfYmFuZF9u
b2lzZV9TU0UyLnJlW2pdLAotICAgICAgICAgICAgICAgICAgICAwLjAwMDAxZik7Ci0gICAgICAg
IEVYUEVDVF9ORUFSKHVwcGVyX2JhbmRfbm9pc2UucmVbal0sIHVwcGVyX2JhbmRfbm9pc2VfU1NF
Mi5yZVtqXSwKLSAgICAgICAgICAgICAgICAgICAgMC4wMDAwMWYpOwotICAgICAgfQotICAgICAg
Zm9yIChzaXplX3QgaiA9IDE7IGogPCBsb3dlcl9iYW5kX25vaXNlLnJlLnNpemUoKSAtIDE7ICsr
aikgewotICAgICAgICBFWFBFQ1RfTkVBUihsb3dlcl9iYW5kX25vaXNlLmltW2pdLCBsb3dlcl9i
YW5kX25vaXNlX1NTRTIuaW1bal0sCi0gICAgICAgICAgICAgICAgICAgIDAuMDAwMDFmKTsKLSAg
ICAgICAgRVhQRUNUX05FQVIodXBwZXJfYmFuZF9ub2lzZS5pbVtqXSwgdXBwZXJfYmFuZF9ub2lz
ZV9TU0UyLmltW2pdLAotICAgICAgICAgICAgICAgICAgICAwLjAwMDAxZik7Ci0gICAgICB9Ci0g
ICAgfQotICB9Ci19Ci0KLSNlbmRpZgotCiBURVNUKENvbWZvcnROb2lzZUdlbmVyYXRvciwgQ29y
cmVjdExldmVsKSB7CiAgIENvbWZvcnROb2lzZUdlbmVyYXRvciBjbmcoRGV0ZWN0T3B0aW1pemF0
aW9uKCkpOwogICBBZWNTdGF0ZSBhZWNfc3RhdGUoRWNob0NhbmNlbGxlcjNDb25maWd7fSk7CkBA
IC0xMTMsOCArNzQsOCBAQCBURVNUKENvbWZvcnROb2lzZUdlbmVyYXRvciwgQ29ycmVjdExldmVs
KSB7CiAgIGZvciAoaW50IGsgPSAwOyBrIDwgMTAwMDA7ICsraykgewogICAgIGNuZy5Db21wdXRl
KGFlY19zdGF0ZSwgTjIsICZuX2xvd2VyLCAmbl91cHBlcik7CiAgIH0KLSAgRVhQRUNUX05FQVIo
TjJbMF0sIFBvd2VyKG5fbG93ZXIpLCBOMlswXSAvIDEwLmYpOwotICBFWFBFQ1RfTkVBUihOMlsw
XSwgUG93ZXIobl91cHBlciksIE4yWzBdIC8gMTAuZik7CisgIEVYUEVDVF9ORUFSKDIuZiAqIE4y
WzBdLCBQb3dlcihuX2xvd2VyKSwgTjJbMF0gLyAxMC5mKTsKKyAgRVhQRUNUX05FQVIoMi5mICog
TjJbMF0sIFBvd2VyKG5fdXBwZXIpLCBOMlswXSAvIDEwLmYpOwogfQogCiB9ICAvLyBuYW1lc3Bh
Y2UgYWVjMwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZGVjaW1hdG9yLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvZGVjaW1hdG9yLmNjCmluZGV4IGQ5ZmFhNjJkYzQ0Njk3NmExM2QzZWEwNmYwYjMy
OTRkZGYzYWNkNjcuLmJkMDMyMzdjYTA4MGZiNTM0MTQ1MmExZmFhMzllMTYwZWRlZWVlMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2RlY2ltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9kZWNpbWF0b3IuY2MKQEAgLTksNiArOSwxMCBAQAogICovCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZGVjaW1hdG9yLmgiCiAKKyNpbmNsdWRlIDxhcnJheT4KKyNp
bmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRl
cl9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJfYnVmZmVyLmNj
CmluZGV4IGRmMGFmNmUwZDg2MDAxNjBkMmI1NzRhOTY5YzM4ODNhYTlmNTkwODEuLmMxMDU5MTFh
YTg4MzRkZjIwNDlkMjgxYzg0NTc3ZmRmYTU1OGVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93
bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5o
IgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogRG93bnNh
bXBsZWRSZW5kZXJCdWZmZXI6OkRvd25zYW1wbGVkUmVuZGVyQnVmZmVyKHNpemVfdCBkb3duc2Ft
cGxlZF9idWZmZXJfc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVk
X3JlbmRlcl9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZm
ZXIuaAppbmRleCA5NDM5NDk2NjZhMDY5ZjBlNDQ3YmE5MzI1NzgwNGRjZGFlZDhkY2NkLi5jOTFl
YTNiODM2ZjYwZTg1MjczYjk0YWJiNjgxMDhlZmJmNDUyNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
ZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5oCkBAIC0xMSw5ICsxMSw5IEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0RPV05TQU1QTEVEX1JFTkRFUl9CVUZGRVJfSF8K
ICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRE9XTlNBTVBMRURfUkVOREVS
X0JVRkZFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0j
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2F1ZGliaWxpdHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9l
Y2hvX2F1ZGliaWxpdHkuY2MKaW5kZXggZmExMjNkZTM1MWU1NDQ5ZGFhYWJhNjZmODk5YThlNzlh
MjEwOGVlYS4uZTg1N2E3ZTQ1YTA4NDc2ZjAyOGM3Y2ZlMzgwNGY4ZjhkMzI4NzYzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19hdWRpYmlsaXR5LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2VjaG9fYXVkaWJpbGl0eS5jYwpAQCAtMTIsOCArMTIsMTAgQEAKIAogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUg
PHZlY3Rvcj4KIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNf
Y29tbW9uLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRyaXhfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3RhdGlvbmFyaXR5X2VzdGltYXRvci5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuaCIKQEAgLTI3
LDE2ICsyOSwxOCBAQCBFY2hvQXVkaWJpbGl0eTo6RWNob0F1ZGliaWxpdHkoYm9vbCB1c2VfcmVu
ZGVyX3N0YXRpb25hcml0eV9hdF9pbml0KQogCiBFY2hvQXVkaWJpbGl0eTo6fkVjaG9BdWRpYmls
aXR5KCkgPSBkZWZhdWx0OwogCi12b2lkIEVjaG9BdWRpYmlsaXR5OjpVcGRhdGUoY29uc3QgUmVu
ZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBkZWxheV9ibG9ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHRlcm5h
bF9kZWxheV9zZWVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJldmVyYl9k
ZWNheSkgewordm9pZCBFY2hvQXVkaWJpbGl0eTo6VXBkYXRlKAorICAgIGNvbnN0IFJlbmRlckJ1
ZmZlciYgcmVuZGVyX2J1ZmZlciwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmVu
ZGVyX3JldmVyYl9jb250cmlidXRpb25fc3BlY3RydW0sCisgICAgaW50IGRlbGF5X2Jsb2NrcywK
KyAgICBib29sIGV4dGVybmFsX2RlbGF5X3NlZW4pIHsKICAgVXBkYXRlUmVuZGVyTm9pc2VFc3Rp
bWF0b3IocmVuZGVyX2J1ZmZlci5HZXRTcGVjdHJ1bUJ1ZmZlcigpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZW5kZXJfYnVmZmVyLkdldEJsb2NrQnVmZmVyKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4dGVybmFsX2RlbGF5X3NlZW4pOwogCiAgIGlmIChleHRlcm5h
bF9kZWxheV9zZWVuIHx8IHVzZV9yZW5kZXJfc3RhdGlvbmFyaXR5X2F0X2luaXRfKSB7Ci0gICAg
VXBkYXRlUmVuZGVyU3RhdGlvbmFyaXR5RmxhZ3MocmVuZGVyX2J1ZmZlciwgZGVsYXlfYmxvY2tz
LCByZXZlcmJfZGVjYXkpOworICAgIFVwZGF0ZVJlbmRlclN0YXRpb25hcml0eUZsYWdzKAorICAg
ICAgICByZW5kZXJfYnVmZmVyLCByZW5kZXJfcmV2ZXJiX2NvbnRyaWJ1dGlvbl9zcGVjdHJ1bSwg
ZGVsYXlfYmxvY2tzKTsKICAgfQogfQogCkBAIC00OCw4ICs1Miw4IEBAIHZvaWQgRWNob0F1ZGli
aWxpdHk6OlJlc2V0KCkgewogCiB2b2lkIEVjaG9BdWRpYmlsaXR5OjpVcGRhdGVSZW5kZXJTdGF0
aW9uYXJpdHlGbGFncygKICAgICBjb25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCi0g
ICAgaW50IGRlbGF5X2Jsb2NrcywKLSAgICBmbG9hdCByZXZlcmJfZGVjYXkpIHsKKyAgICBydGM6
OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmVuZGVyX3JldmVyYl9jb250cmlidXRpb25fc3BlY3Ry
dW0sCisgICAgaW50IGRlbGF5X2Jsb2NrcykgewogICBjb25zdCBWZWN0b3JCdWZmZXImIHNwZWN0
cnVtX2J1ZmZlciA9IHJlbmRlcl9idWZmZXIuR2V0U3BlY3RydW1CdWZmZXIoKTsKICAgaW50IGlk
eF9hdF9kZWxheSA9CiAgICAgICBzcGVjdHJ1bV9idWZmZXIuT2Zmc2V0SW5kZXgoc3BlY3RydW1f
YnVmZmVyLnJlYWQsIGRlbGF5X2Jsb2Nrcyk7CkBAIC01Nyw4ICs2MSw5IEBAIHZvaWQgRWNob0F1
ZGliaWxpdHk6OlVwZGF0ZVJlbmRlclN0YXRpb25hcml0eUZsYWdzKAogICBpbnQgbnVtX2xvb2th
aGVhZCA9IHJlbmRlcl9idWZmZXIuSGVhZHJvb20oKSAtIGRlbGF5X2Jsb2NrcyArIDE7CiAgIG51
bV9sb29rYWhlYWQgPSBzdGQ6Om1heCgwLCBudW1fbG9va2FoZWFkKTsKIAotICByZW5kZXJfc3Rh
dGlvbmFyaXR5Xy5VcGRhdGVTdGF0aW9uYXJpdHlGbGFncyhzcGVjdHJ1bV9idWZmZXIsIGlkeF9h
dF9kZWxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVtX2xvb2thaGVhZCwgcmV2ZXJiX2RlY2F5KTsKKyAgcmVuZGVyX3N0YXRpb25hcml0eV8uVXBk
YXRlU3RhdGlvbmFyaXR5RmxhZ3MoCisgICAgICBzcGVjdHJ1bV9idWZmZXIsIHJlbmRlcl9yZXZl
cmJfY29udHJpYnV0aW9uX3NwZWN0cnVtLCBpZHhfYXRfZGVsYXksCisgICAgICBudW1fbG9va2Fo
ZWFkKTsKIH0KIAogdm9pZCBFY2hvQXVkaWJpbGl0eTo6VXBkYXRlUmVuZGVyTm9pc2VFc3RpbWF0
b3IoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2F1ZGliaWxpdHkuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2VjaG9fYXVkaWJpbGl0eS5oCmluZGV4IDNiMjUyZjNlYTJiN2U1Y2JkOTA2NTM3
NmMyNzY5ODg3YTc2Mjk4YjcuLmI5MDNjYTBjZjFkNzllZmJhOGU0Yjc0ODUzOTJmNzUwMGY3NTUy
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fYXVkaWJpbGl0eS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2VjaG9fYXVkaWJpbGl0eS5oCkBAIC0xMSwxMSArMTEsNyBAQAogI2lmbmRl
ZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FQ0hPX0FVRElCSUxJVFlfSF8KICNkZWZp
bmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRUNIT19BVURJQklMSVRZX0hfCiAKLSNp
bmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8bGltaXRzPgot
I2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8c3RkZGVmLmg+
CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5
X3ZpZXcuaCIKQEAgLTI3LDggKzIzLDYgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNz
IEFwbURhdGFEdW1wZXI7Ci0KIGNsYXNzIEVjaG9BdWRpYmlsaXR5IHsKICBwdWJsaWM6CiAgIGV4
cGxpY2l0IEVjaG9BdWRpYmlsaXR5KGJvb2wgdXNlX3JlbmRlcl9zdGF0aW9uYXJpdHlfYXRfaW5p
dCk7CkBAIC0zNiw5ICszMCw5IEBAIGNsYXNzIEVjaG9BdWRpYmlsaXR5IHsKIAogICAvLyBGZWVk
IG5ldyByZW5kZXIgZGF0YSB0byB0aGUgZWNobyBhdWRpYmlsaXR5IGVzdGltYXRvci4KICAgdm9p
ZCBVcGRhdGUoY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgICAgICAgICAg
ICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmVuZGVyX3JldmVyYl9jb250cmlidXRpb25f
c3BlY3RydW0sCiAgICAgICAgICAgICAgIGludCBkZWxheV9ibG9ja3MsCi0gICAgICAgICAgICAg
IGJvb2wgZXh0ZXJuYWxfZGVsYXlfc2VlbiwKLSAgICAgICAgICAgICAgZmxvYXQgcmV2ZXJiX2Rl
Y2F5KTsKKyAgICAgICAgICAgICAgYm9vbCBleHRlcm5hbF9kZWxheV9zZWVuKTsKICAgLy8gR2V0
IHRoZSByZXNpZHVhbCBlY2hvIHNjYWxpbmcuCiAgIHZvaWQgR2V0UmVzaWR1YWxFY2hvU2NhbGlu
Zyhib29sIGZpbHRlcl9oYXNfaGFkX3RpbWVfdG9fY29udmVyZ2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydGM6OkFycmF5VmlldzxmbG9hdD4gcmVzaWR1YWxfc2NhbGluZykgY29u
c3QgewpAQCAtNjIsOSArNTYsMTAgQEAgY2xhc3MgRWNob0F1ZGliaWxpdHkgewogICB2b2lkIFJl
c2V0KCk7CiAKICAgLy8gVXBkYXRlcyB0aGUgcmVuZGVyIHN0YXRpb25hcml0eSBmbGFncyBmb3Ig
dGhlIGN1cnJlbnQgZnJhbWUuCi0gIHZvaWQgVXBkYXRlUmVuZGVyU3RhdGlvbmFyaXR5RmxhZ3Mo
Y29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBkZWxheV9ibG9ja3MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgcmV2ZXJiX2RlY2F5KTsKKyAgdm9pZCBVcGRhdGVSZW5kZXJT
dGF0aW9uYXJpdHlGbGFncygKKyAgICAgIGNvbnN0IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZl
ciwKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZW5kZXJfcmV2ZXJiX2NvbnRy
aWJ1dGlvbl9zcGVjdHJ1bSwKKyAgICAgIGludCBkZWxheV9ibG9ja3MpOwogCiAgIC8vIFVwZGF0
ZXMgdGhlIG5vaXNlIGVzdGltYXRvciB3aXRoIHRoZSBuZXcgcmVuZGVyIGRhdGEgc2luY2UgdGhl
IHByZXZpb3VzCiAgIC8vIGNhbGwgdG8gdGhpcyBtZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9lY2hvX2NhbmNlbGxlcjMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2NhbmNlbGxl
cjMuY2MKaW5kZXggZTUyMTljNzJhYjdmYWU5YTllMGJmZTJlOGU1ZmY0NTMwNzZjOTc0MC4uZjA1
ZWRiMTVjM2U1NmFmOThjYTZiZmNhOTAyNjIzMTZmODZjYjM5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvZWNob19jYW5jZWxsZXIzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fY2Fu
Y2VsbGVyMy5jYwpAQCAtOSw5ICs5LDEyIEBACiAgKi8KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2NhbmNlbGxlcjMuaCIKIAorI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNv
cHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dy
YXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC00
MSwyNSArNDQsNDQgQEAgYm9vbCBFbmFibGVSZXZlcmJNb2RlbGxpbmcoKSB7CiAgIHJldHVybiAh
ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNSZXZlcmJNb2RlbGxpbmdLaWxsU3dp
dGNoIik7CiB9CiAKLWJvb2wgRW5hYmxlU3VwcHJlc3Nvck5lYXJlbmRBdmVyYWdpbmcoKSB7Ci0g
IHJldHVybiAhZmllbGRfdHJpYWw6OklzRW5hYmxlZCgKLSAgICAgICJXZWJSVEMtQWVjM1N1cHBy
ZXNzb3JOZWFyZW5kQXZlcmFnaW5nS2lsbFN3aXRjaCIpOworYm9vbCBFbmFibGVVbml0eUluaXRp
YWxSYW1wdXBHYWluKCkgeworICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRD
LUFlYzNFbmFibGVVbml0eUluaXRpYWxSYW1wdXBHYWluIik7CiB9CiAKLWJvb2wgRW5hYmxlU2xv
d0ZpbHRlckFkYXB0YXRpb24oKSB7Ci0gIHJldHVybiAhZmllbGRfdHJpYWw6OklzRW5hYmxlZCgi
V2ViUlRDLUFlYzNTbG93RmlsdGVyQWRhcHRhdGlvbktpbGxTd2l0Y2giKTsKK2Jvb2wgRW5hYmxl
VW5pdHlOb25aZXJvUmFtcHVwR2FpbigpIHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoIldlYlJUQy1BZWMzRW5hYmxlVW5pdHlOb25aZXJvUmFtcHVwR2FpbiIpOwogfQogCi1ib29s
IEVuYWJsZVNoYWRvd0ZpbHRlckp1bXBzdGFydCgpIHsKLSAgcmV0dXJuICFmaWVsZF90cmlhbDo6
SXNFbmFibGVkKCJXZWJSVEMtQWVjM1NoYWRvd0ZpbHRlckp1bXBzdGFydEtpbGxTd2l0Y2giKTsK
K2Jvb2wgRW5hYmxlTG9uZ1JldmVyYigpIHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoIldlYlJUQy1BZWMzU2hvcnRSZXZlcmJLaWxsU3dpdGNoIik7CiB9CiAKLWJvb2wgRW5hYmxl
VW5pdHlJbml0aWFsUmFtcHVwR2FpbigpIHsKLSAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoIldlYlJUQy1BZWMzRW5hYmxlVW5pdHlJbml0aWFsUmFtcHVwR2FpbiIpOworYm9vbCBFbmFi
bGVOZXdGaWx0ZXJQYXJhbXMoKSB7CisgIHJldHVybiAhZmllbGRfdHJpYWw6OklzRW5hYmxlZCgi
V2ViUlRDLUFlYzNOZXdGaWx0ZXJQYXJhbXNLaWxsU3dpdGNoIik7CiB9CiAKLWJvb2wgRW5hYmxl
VW5pdHlOb25aZXJvUmFtcHVwR2FpbigpIHsKLSAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoIldlYlJUQy1BZWMzRW5hYmxlVW5pdHlOb25aZXJvUmFtcHVwR2FpbiIpOworYm9vbCBFbmFi
bGVMZWdhY3lEb21pbmFudE5lYXJlbmQoKSB7CisgIHJldHVybiBmaWVsZF90cmlhbDo6SXNFbmFi
bGVkKCJXZWJSVEMtQWVjM0VuYWJsZUxlZ2FjeURvbWluYW50TmVhcmVuZCIpOworfQorCitib29s
IFVzZUxlZ2FjeU5vcm1hbFN1cHByZXNzb3JUdW5pbmcoKSB7CisgIHJldHVybiBmaWVsZF90cmlh
bDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM1VzZUxlZ2FjeU5vcm1hbFN1cHByZXNzb3JUdW5pbmci
KTsKK30KKworYm9vbCBBY3RpdmF0ZVN0YXRpb25hcml0eVByb3BlcnRpZXMoKSB7CisgIHJldHVy
biBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM1VzZVN0YXRpb25hcml0eVByb3Bl
cnRpZXMiKTsKK30KKworYm9vbCBBY3RpdmF0ZVN0YXRpb25hcml0eVByb3BlcnRpZXNBdEluaXQo
KSB7CisgIHJldHVybiBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM1VzZVN0YXRp
b25hcml0eVByb3BlcnRpZXNBdEluaXQiKTsKK30KKworYm9vbCBFbmFibGVOZXdSZW5kZXJCdWZm
ZXJpbmcoKSB7CisgIHJldHVybiAhZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNO
ZXdSZW5kZXJCdWZmZXJpbmdLaWxsU3dpdGNoIik7Cit9CisKK2Jvb2wgVXNlRWFybHlEZWxheURl
dGVjdGlvbigpIHsKKyAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVj
M0Vhcmx5RGVsYXlEZXRlY3Rpb25LaWxsU3dpdGNoIik7CiB9CiAKIC8vIE1ldGhvZCBmb3IgYWRq
dXN0aW5nIGNvbmZpZyBwYXJhbWV0ZXIgZGVwZW5kZW5jaWVzLi4KQEAgLTcxLDY4ICs5MywyNyBA
QCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBBZGp1c3RDb25maWcoY29uc3QgRWNob0NhbmNlbGxlcjND
b25maWcmIGNvbmZpZykgewogICAgIGFkanVzdGVkX2NmZy5lcF9zdHJlbmd0aC5kZWZhdWx0X2xl
biA9IDAuZjsKICAgfQogCi0gIC8vIFVzZSBjdXN0b21pemVkIHBhcmFtZXRlcnMgd2hlbiB0aGUg
c3lzdGVtIGhhcyBjbG9jay1kcmlmdC4KLSAgaWYgKGNvbmZpZy5lY2hvX3JlbW92YWxfY29udHJv
bC5oYXNfY2xvY2tfZHJpZnQpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAgIDw8
ICJDdXN0b21pemluZyBwYXJhbWV0ZXJzIHRvIHdvcmsgd2VsbCBmb3IgdGhlIGNsb2NrLWRyaWZ0
IGNhc2UuIjsKLSAgICBpZiAoY29uZmlnLmVwX3N0cmVuZ3RoLmJvdW5kZWRfZXJsKSB7Ci0gICAg
ICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4gPSAwLjg1ZjsKLSAgICAgIGFk
anVzdGVkX2NmZy5lcF9zdHJlbmd0aC5sZiA9IDAuMDFmOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVw
X3N0cmVuZ3RoLm1mID0gMC4wMWY7Ci0gICAgICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGguaGYg
PSAwLjAxZjsKLSAgICAgIGFkanVzdGVkX2NmZy5lY2hvX21vZGVsLnJlbmRlcl9wcmVfd2luZG93
X3NpemUgPSAxOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2lu
ZG93X3NpemUgPSAxOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fbW9kZWwubm9ubGluZWFyX2hv
bGQgPSAzOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fbW9kZWwubm9ubGluZWFyX3JlbGVhc2Ug
PSAwLjAwMWY7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGFkanVzdGVkX2NmZy5lcF9zdHJlbmd0aC5i
b3VuZGVkX2VybCA9IHRydWU7Ci0gICAgICBhZGp1c3RlZF9jZmcuZGVsYXkuZG93bl9zYW1wbGlu
Z19mYWN0b3IgPSAyOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVu
ID0gMC44ZjsKLSAgICAgIGFkanVzdGVkX2NmZy5lcF9zdHJlbmd0aC5sZiA9IDAuMDFmOwotICAg
ICAgYWRqdXN0ZWRfY2ZnLmVwX3N0cmVuZ3RoLm1mID0gMC4wMWY7Ci0gICAgICBhZGp1c3RlZF9j
ZmcuZXBfc3RyZW5ndGguaGYgPSAwLjAxZjsKLSAgICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFp
biA9IHszMCwgMC4xZiwgMC44ZiwgMC4wMDFmLCAyMDA3NTM0NC5mfTsKLSAgICAgIGFkanVzdGVk
X2NmZy5maWx0ZXIuc2hhZG93ID0gezMwLCAwLjdmLCAyMDA3NTM0NC5mfTsKLSAgICAgIGFkanVz
dGVkX2NmZy5maWx0ZXIubWFpbl9pbml0aWFsID0gezMwLCAwLjFmLCAxLjVmLCAwLjAwMWYsIDIw
MDc1MzQ0LmZ9OwotICAgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5zaGFkb3dfaW5pdGlhbCA9IHsz
MCwgMC45ZiwgMjAwNzUzNDQuZn07Ci0gICAgICBhZGp1c3RlZF9jZmcuZWNob19tb2RlbC5yZW5k
ZXJfcHJlX3dpbmRvd19zaXplID0gMjsKLSAgICAgIGFkanVzdGVkX2NmZy5lY2hvX21vZGVsLnJl
bmRlcl9wb3N0X3dpbmRvd19zaXplID0gMjsKLSAgICAgIGFkanVzdGVkX2NmZy5lY2hvX21vZGVs
Lm5vbmxpbmVhcl9ob2xkID0gMzsKLSAgICAgIGFkanVzdGVkX2NmZy5lY2hvX21vZGVsLm5vbmxp
bmVhcl9yZWxlYXNlID0gMC42ZjsKLSAgICB9Ci0gIH0KLQogICBpZiAoVXNlU2hvcnREZWxheUVz
dGltYXRvcldpbmRvdygpKSB7CiAgICAgYWRqdXN0ZWRfY2ZnLmRlbGF5Lm51bV9maWx0ZXJzID0K
ICAgICAgICAgc3RkOjptaW4oYWRqdXN0ZWRfY2ZnLmRlbGF5Lm51bV9maWx0ZXJzLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KDUpKTsKICAgfQogCi0gIGlmIChFbmFibGVSZXZlcmJCYXNlZE9uUmVuZGVy
KCkgPT0gZmFsc2UpIHsKLSAgICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGgucmV2ZXJiX2Jhc2Vk
X29uX3JlbmRlciA9IGZhbHNlOworICBib29sIHVzZV9uZXdfcmVuZGVyX2J1ZmZlcmluZyA9Cisg
ICAgICBFbmFibGVOZXdSZW5kZXJCdWZmZXJpbmcoKSAmJiBjb25maWcuYnVmZmVyaW5nLnVzZV9u
ZXdfcmVuZGVyX2J1ZmZlcmluZzsKKyAgLy8gT2xkIHJlbmRlciBidWZmZXJpbmcgbmVlZHMgb25l
IG1vcmUgZmlsdGVyIHRvIGNvdmVyIHRoZSBzYW1lIGRlbGF5LgorICBpZiAoIXVzZV9uZXdfcmVu
ZGVyX2J1ZmZlcmluZykgeworICAgIGFkanVzdGVkX2NmZy5kZWxheS5udW1fZmlsdGVycyArPSAx
OwogICB9CiAKLSAgaWYgKCFFbmFibGVTdXBwcmVzc29yTmVhcmVuZEF2ZXJhZ2luZygpKSB7Ci0g
ICAgYWRqdXN0ZWRfY2ZnLnN1cHByZXNzb3IubmVhcmVuZF9hdmVyYWdlX2Jsb2NrcyA9IDE7Cisg
IGlmIChFbmFibGVSZXZlcmJCYXNlZE9uUmVuZGVyKCkgPT0gZmFsc2UpIHsKKyAgICBhZGp1c3Rl
ZF9jZmcuZXBfc3RyZW5ndGgucmV2ZXJiX2Jhc2VkX29uX3JlbmRlciA9IGZhbHNlOwogICB9CiAK
LSAgaWYgKCFFbmFibGVTbG93RmlsdGVyQWRhcHRhdGlvbigpKSB7Ci0gICAgaWYgKCFFbmFibGVT
aGFkb3dGaWx0ZXJKdW1wc3RhcnQoKSkgewotICAgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWlu
LmxlYWthZ2VfY29udmVyZ2VkID0gMC4wMDVmOwotICAgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5t
YWluLmxlYWthZ2VfZGl2ZXJnZWQgPSAwLjFmOwotICAgIH0KLSAgICBhZGp1c3RlZF9jZmcuZmls
dGVyLm1haW5faW5pdGlhbC5sZWFrYWdlX2NvbnZlcmdlZCA9IDAuMDVmOwotICAgIGFkanVzdGVk
X2NmZy5maWx0ZXIubWFpbl9pbml0aWFsLmxlYWthZ2VfZGl2ZXJnZWQgPSA1LmY7Ci0gIH0KLQot
ICBpZiAoIUVuYWJsZVNoYWRvd0ZpbHRlckp1bXBzdGFydCgpKSB7Ci0gICAgaWYgKEVuYWJsZVNs
b3dGaWx0ZXJBZGFwdGF0aW9uKCkpIHsKLSAgICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbi5s
ZWFrYWdlX2NvbnZlcmdlZCA9IDAuMDAwNWY7Ci0gICAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1h
aW4ubGVha2FnZV9kaXZlcmdlZCA9IDAuMDFmOwotICAgIH0gZWxzZSB7Ci0gICAgICBhZGp1c3Rl
ZF9jZmcuZmlsdGVyLm1haW4ubGVha2FnZV9jb252ZXJnZWQgPSAwLjAwNWY7Ci0gICAgICBhZGp1
c3RlZF9jZmcuZmlsdGVyLm1haW4ubGVha2FnZV9kaXZlcmdlZCA9IDAuMWY7Ci0gICAgfQotICAg
IGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbi5lcnJvcl9mbG9vciA9IDAuMDAxZjsKKyAgaWYgKCFF
bmFibGVOZXdGaWx0ZXJQYXJhbXMoKSkgeworICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbi5s
ZWFrYWdlX2RpdmVyZ2VkID0gMC4wMWY7CisgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluLmVy
cm9yX2Zsb29yID0gMC4xZjsKKyAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1haW4uZXJyb3JfY2Vp
bCA9IDFFMTBmOworICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbl9pbml0aWFsLmVycm9yX2Nl
aWwgPSAxRTEwZjsKICAgfQogCiAgIGlmIChFbmFibGVVbml0eUluaXRpYWxSYW1wdXBHYWluKCkg
JiYKQEAgLTE0Nyw2ICsxMjgsNDIgQEAgRWNob0NhbmNlbGxlcjNDb25maWcgQWRqdXN0Q29uZmln
KGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpIHsKICAgICBhZGp1c3RlZF9jZmcu
ZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZmlyc3Rfbm9uX3plcm9fZ2FpbiA9IDEu
ZjsKICAgfQogCisgIGlmIChFbmFibGVMb25nUmV2ZXJiKCkpIHsKKyAgICBhZGp1c3RlZF9jZmcu
ZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4gPSAwLjg4ZjsKKyAgfQorCisgIGlmIChFbmFibGVMZWdh
Y3lEb21pbmFudE5lYXJlbmQoKSkgeworICAgIGFkanVzdGVkX2NmZy5zdXBwcmVzc29yLm5lYXJl
bmRfdHVuaW5nID0KKyAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWc6OlN1cHByZXNzb3I6OlR1
bmluZygKKyAgICAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpNYXNr
aW5nVGhyZXNob2xkcyguMmYsIC4zZiwgLjNmKSwKKyAgICAgICAgICAgIEVjaG9DYW5jZWxsZXIz
Q29uZmlnOjpTdXBwcmVzc29yOjpNYXNraW5nVGhyZXNob2xkcyguMDdmLCAuMWYsIC4zZiksCisg
ICAgICAgICAgICAyLjBmLCAwLjI1Zik7CisgIH0KKworICBpZiAoVXNlTGVnYWN5Tm9ybWFsU3Vw
cHJlc3NvclR1bmluZygpKSB7CisgICAgYWRqdXN0ZWRfY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1
bmluZyA9CisgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpUdW5pbmco
CisgICAgICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6U3VwcHJlc3Nvcjo6TWFza2luZ1Ro
cmVzaG9sZHMoLjJmLCAuM2YsIC4zZiksCisgICAgICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZp
Zzo6U3VwcHJlc3Nvcjo6TWFza2luZ1RocmVzaG9sZHMoLjA3ZiwgLjFmLCAuM2YpLAorICAgICAg
ICAgICAgMi4wZiwgMC4yNWYpOworCisgICAgYWRqdXN0ZWRfY2ZnLnN1cHByZXNzb3IuZG9taW5h
bnRfbmVhcmVuZF9kZXRlY3Rpb24uZW5yX3RocmVzaG9sZCA9IDEwLmY7CisgICAgYWRqdXN0ZWRf
Y2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uc25yX3RocmVzaG9sZCA9
IDEwLmY7CisgICAgYWRqdXN0ZWRfY2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRl
Y3Rpb24uaG9sZF9kdXJhdGlvbiA9IDI1OworICB9CisKKyAgaWYgKEFjdGl2YXRlU3RhdGlvbmFy
aXR5UHJvcGVydGllcygpKSB7CisgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fYXVkaWJpbGl0eS51c2Vf
c3RhdGlvbmFyeV9wcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgfQorCisgIGlmIChBY3RpdmF0ZVN0YXRp
b25hcml0eVByb3BlcnRpZXNBdEluaXQoKSkgeworICAgIGFkanVzdGVkX2NmZy5lY2hvX2F1ZGli
aWxpdHkudXNlX3N0YXRpb25hcml0eV9wcm9wZXJ0aWVzX2F0X2luaXQgPSB0cnVlOworICB9CisK
KyAgaWYgKCFVc2VFYXJseURlbGF5RGV0ZWN0aW9uKCkpIHsKKyAgICBhZGp1c3RlZF9jZmcuZGVs
YXkuZGVsYXlfc2VsZWN0aW9uX3RocmVzaG9sZHMgPSB7MjUsIDI1fTsKKyAgfQorCiAgIHJldHVy
biBhZGp1c3RlZF9jZmc7CiB9CiAKQEAgLTMzMCwxMiArMzQ3LDE2IEBAIGludCBFY2hvQ2FuY2Vs
bGVyMzo6aW5zdGFuY2VfY291bnRfID0gMDsKIEVjaG9DYW5jZWxsZXIzOjpFY2hvQ2FuY2VsbGVy
Myhjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHVzZV9oaWdocGFzc19maWx0ZXIpCi0gICAgOiBFY2hvQ2FuY2VsbGVyMygK
LSAgICAgICAgICBBZGp1c3RDb25maWcoY29uZmlnKSwKLSAgICAgICAgICBzYW1wbGVfcmF0ZV9o
eiwKLSAgICAgICAgICB1c2VfaGlnaHBhc3NfZmlsdGVyLAotICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxCbG9ja1Byb2Nlc3Nvcj4oCi0gICAgICAgICAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVh
dGUoQWRqdXN0Q29uZmlnKGNvbmZpZyksIHNhbXBsZV9yYXRlX2h6KSkpIHt9CisgICAgOiBFY2hv
Q2FuY2VsbGVyMyhBZGp1c3RDb25maWcoY29uZmlnKSwKKyAgICAgICAgICAgICAgICAgICAgIHNh
bXBsZV9yYXRlX2h6LAorICAgICAgICAgICAgICAgICAgICAgdXNlX2hpZ2hwYXNzX2ZpbHRlciwK
KyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja1Byb2Nlc3Nvcj4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlTmV3UmVuZGVyQnVmZmVyaW5nKCkgJiYKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5idWZmZXJpbmcudXNlX25ld19y
ZW5kZXJfYnVmZmVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gQmxvY2tQcm9j
ZXNzb3I6OkNyZWF0ZTIoQWRqdXN0Q29uZmlnKGNvbmZpZyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX3JhdGVfaHopCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZShBZGp1c3RD
b25maWcoY29uZmlnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNhbXBsZV9yYXRlX2h6KSkpIHt9CiBFY2hvQ2FuY2VsbGVyMzo6RWNob0Nh
bmNlbGxlcjMoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCB1c2VfaGlnaHBhc3NfZmlsdGVyLApAQCAtNDI1LDYgKzQ0Niwx
MCBAQCB2b2lkIEVjaG9DYW5jZWxsZXIzOjpQcm9jZXNzQ2FwdHVyZShBdWRpb0J1ZmZlciogY2Fw
dHVyZSwgYm9vbCBsZXZlbF9jaGFuZ2UpIHsKICAgZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJhZWMz
X2NhbGxfb3JkZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihF
Y2hvQ2FuY2VsbGVyM0FwaUNhbGw6OmtDYXB0dXJlKSk7CiAKKyAgLy8gUmVwb3J0IGNhcHR1cmUg
Y2FsbCBpbiB0aGUgbWV0cmljcyBhbmQgcGVyaW9kaWNhbGx5IHVwZGF0ZSBBUEkgY2FsbAorICAv
LyBtZXRyaWNzLgorICBhcGlfY2FsbF9tZXRyaWNzXy5SZXBvcnRDYXB0dXJlQ2FsbCgpOworCiAg
IC8vIE9wdGlvbmFsbHkgZGVsYXkgdGhlIGNhcHR1cmUgc2lnbmFsLgogICBpZiAoY29uZmlnXy5k
ZWxheS5maXhlZF9jYXB0dXJlX2RlbGF5X3NhbXBsZXMgPiAwKSB7CiAgICAgYmxvY2tfZGVsYXlf
YnVmZmVyXy5EZWxheVNpZ25hbChjYXB0dXJlKTsKQEAgLTQ3OSw2ICs1MDQsOSBAQCB2b2lkIEVj
aG9DYW5jZWxsZXIzOjpFbXB0eVJlbmRlclF1ZXVlKCkgewogICBib29sIGZyYW1lX3RvX2J1ZmZl
ciA9CiAgICAgICByZW5kZXJfdHJhbnNmZXJfcXVldWVfLlJlbW92ZSgmcmVuZGVyX3F1ZXVlX291
dHB1dF9mcmFtZV8pOwogICB3aGlsZSAoZnJhbWVfdG9fYnVmZmVyKSB7CisgICAgLy8gUmVwb3J0
IHJlbmRlciBjYWxsIGluIHRoZSBtZXRyaWNzLgorICAgIGFwaV9jYWxsX21ldHJpY3NfLlJlcG9y
dFJlbmRlckNhbGwoKTsKKwogICAgIEJ1ZmZlclJlbmRlckZyYW1lQ29udGVudCgmcmVuZGVyX3F1
ZXVlX291dHB1dF9mcmFtZV8sIDAsICZyZW5kZXJfYmxvY2tlcl8sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJsb2NrX3Byb2Nlc3Nvcl8uZ2V0KCksICZibG9ja18sICZzdWJfZnJhbWVf
dmlld18pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2NhbmNlbGxlcjMuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5oCmluZGV4IGY1NTIwYmEzYWNlNWMzNDky
YTZiMmEyNjg5NmM4ODMyNTVmODg1NWEuLjY3MWQyNzE2NzY3NWM2NmM5OWMzZTIxZTI1NzJjNmJh
ZjczNGU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5oCkBAIC0xMSw3ICsxMSwxNCBAQAog
I2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FQ0hPX0NBTkNFTExFUjNfSF8K
ICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRUNIT19DQU5DRUxMRVIzX0hf
CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dmVj
dG9yPgorCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJhcGkvYXVkaW8v
ZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgorI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NvbnRy
b2wuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9q
aXR0ZXJfbWV0cmljcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2Jsb2NrX2RlbGF5X2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2Jsb2NrX2ZyYW1lci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5oIgpAQCAtMTksOSArMjYsMTEgQEAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mcmFtZV9ibG9ja2VyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9yYWNlX2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9zd2FwX3F1ZXVlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0xMzIsNiArMTQxLDcgQEAgY2xhc3MgRWNob0Nh
bmNlbGxlcjMgOiBwdWJsaWMgRWNob0NvbnRyb2wgewogICBzdGQ6OnZlY3RvcjxydGM6OkFycmF5
VmlldzxmbG9hdD4+IHN1Yl9mcmFtZV92aWV3XwogICAgICAgUlRDX0dVQVJERURfQlkoY2FwdHVy
ZV9yYWNlX2NoZWNrZXJfKTsKICAgQmxvY2tEZWxheUJ1ZmZlciBibG9ja19kZWxheV9idWZmZXJf
IFJUQ19HVUFSREVEX0JZKGNhcHR1cmVfcmFjZV9jaGVja2VyXyk7CisgIEFwaUNhbGxKaXR0ZXJN
ZXRyaWNzIGFwaV9jYWxsX21ldHJpY3NfIFJUQ19HVUFSREVEX0JZKGNhcHR1cmVfcmFjZV9jaGVj
a2VyXyk7CiAKICAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhFY2hvQ2FuY2Vs
bGVyMyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2Vz
dGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3IuY2MK
aW5kZXggNjM4ZGRjNDQwODRlODVmMmFjNjcwYzllZjUyMDIzZWNlNGY2YTM2Zi4uNjA2OWVkNmJl
Njk3ZGJjODMxNTE3MDMwMzc2M2Y2ZjNjNWY5OGU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hv
X3BhdGhfZGVsYXlfZXN0aW1hdG9yLmNjCkBAIC05LDMxICs5LDIxIEBACiAgKi8KICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9y
LmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8YXJyYXk+CiAKICNpbmNsdWRl
ICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIHsK
LXNpemVfdCBHZXREb3duU2FtcGxpbmdGYWN0b3IoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcm
IGNvbmZpZykgewotICAvLyBEbyBub3QgdXNlIGRvd24gc2FtcGxpbmcgZmFjdG9yIDggaWYga2ls
bCBzd2l0Y2ggaXMgdHJpZ2dlcmVkLgotICByZXR1cm4gKGNvbmZpZy5kZWxheS5kb3duX3NhbXBs
aW5nX2ZhY3RvciA9PSA4ICYmCi0gICAgICAgICAgZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2Vi
UlRDLUFlYzNEb3duU2FtcGxpbmdGYWN0b3I4S2lsbFN3aXRjaCIpKQotICAgICAgICAgICAgID8g
NAotICAgICAgICAgICAgIDogY29uZmlnLmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9yOwotfQot
fSAgLy8gbmFtZXNwYWNlCiAKIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3I6OkVjaG9QYXRoRGVsYXlF
c3RpbWF0b3IoCiAgICAgQXBtRGF0YUR1bXBlciogZGF0YV9kdW1wZXIsCiAgICAgY29uc3QgRWNo
b0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZykKICAgICA6IGRhdGFfZHVtcGVyXyhkYXRhX2R1bXBl
ciksCi0gICAgICBkb3duX3NhbXBsaW5nX2ZhY3Rvcl8oR2V0RG93blNhbXBsaW5nRmFjdG9yKGNv
bmZpZykpLAorICAgICAgZG93bl9zYW1wbGluZ19mYWN0b3JfKGNvbmZpZy5kZWxheS5kb3duX3Nh
bXBsaW5nX2ZhY3RvciksCiAgICAgICBzdWJfYmxvY2tfc2l6ZV8oZG93bl9zYW1wbGluZ19mYWN0
b3JfICE9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBrQmxvY2tTaXplIC8gZG93bl9z
YW1wbGluZ19mYWN0b3JfCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDoga0Jsb2NrU2l6ZSks
CkBAIC00NSw3ICszNSw3IEBAIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3I6OkVjaG9QYXRoRGVsYXlF
c3RpbWF0b3IoCiAgICAgICAgICAga01hdGNoZWRGaWx0ZXJXaW5kb3dTaXplU3ViQmxvY2tzLAog
ICAgICAgICAgIGNvbmZpZy5kZWxheS5udW1fZmlsdGVycywKICAgICAgICAgICBrTWF0Y2hlZEZp
bHRlckFsaWdubWVudFNoaWZ0U2l6ZVN1YkJsb2NrcywKLSAgICAgICAgICBHZXREb3duU2FtcGxp
bmdGYWN0b3IoY29uZmlnKSA9PSA4CisgICAgICAgICAgY29uZmlnLmRlbGF5LmRvd25fc2FtcGxp
bmdfZmFjdG9yID09IDgKICAgICAgICAgICAgICAgPyBjb25maWcucmVuZGVyX2xldmVscy5wb29y
X2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0X2RzOAogICAgICAgICAgICAgICA6IGNvbmZpZy5yZW5k
ZXJfbGV2ZWxzLnBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGltaXQsCiAgICAgICAgICAgY29uZmln
LmRlbGF5LmRlbGF5X2VzdGltYXRlX3Ntb290aGluZywKQEAgLTU5LDEzICs0OSw4IEBAIEVjaG9Q
YXRoRGVsYXlFc3RpbWF0b3I6OkVjaG9QYXRoRGVsYXlFc3RpbWF0b3IoCiAKIEVjaG9QYXRoRGVs
YXlFc3RpbWF0b3I6On5FY2hvUGF0aERlbGF5RXN0aW1hdG9yKCkgPSBkZWZhdWx0OwogCi12b2lk
IEVjaG9QYXRoRGVsYXlFc3RpbWF0b3I6OlJlc2V0KGJvb2wgc29mdF9yZXNldCkgewotICBpZiAo
IXNvZnRfcmVzZXQpIHsKLSAgICBtYXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRvcl8uUmVzZXQo
KTsKLSAgfQotICBtYXRjaGVkX2ZpbHRlcl8uUmVzZXQoKTsKLSAgb2xkX2FnZ3JlZ2F0ZWRfbGFn
XyA9IGFic2w6Om51bGxvcHQ7Ci0gIGNvbnNpc3RlbnRfZXN0aW1hdGVfY291bnRlcl8gPSAwOwor
dm9pZCBFY2hvUGF0aERlbGF5RXN0aW1hdG9yOjpSZXNldChib29sIHJlc2V0X2RlbGF5X2NvbmZp
ZGVuY2UpIHsKKyAgUmVzZXQodHJ1ZSwgcmVzZXRfZGVsYXlfY29uZmlkZW5jZSk7CiB9CiAKIGFi
c2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IEVjaG9QYXRoRGVsYXlFc3RpbWF0b3I6OkVzdGlt
YXRlRGVsYXkoCkBAIC04OCw2ICs3MywxMiBAQCBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRl
PiBFY2hvUGF0aERlbGF5RXN0aW1hdG9yOjpFc3RpbWF0ZURlbGF5KAogICAgICAgbWF0Y2hlZF9m
aWx0ZXJfbGFnX2FnZ3JlZ2F0b3JfLkFnZ3JlZ2F0ZSgKICAgICAgICAgICBtYXRjaGVkX2ZpbHRl
cl8uR2V0TGFnRXN0aW1hdGVzKCkpOwogCisgIC8vIFJ1biBjbG9ja2RyaWZ0IGRldGVjdGlvbi4K
KyAgaWYgKGFnZ3JlZ2F0ZWRfbWF0Y2hlZF9maWx0ZXJfbGFnICYmCisgICAgICAoKmFnZ3JlZ2F0
ZWRfbWF0Y2hlZF9maWx0ZXJfbGFnKS5xdWFsaXR5ID09CisgICAgICAgICAgRGVsYXlFc3RpbWF0
ZTo6UXVhbGl0eTo6a1JlZmluZWQpCisgICAgY2xvY2tkcmlmdF9kZXRlY3Rvcl8uVXBkYXRlKCgq
YWdncmVnYXRlZF9tYXRjaGVkX2ZpbHRlcl9sYWcpLmRlbGF5KTsKKwogICAvLyBUT0RPKHBlYWgp
OiBNb3ZlIHRoaXMgbG9nZ2luZyBvdXRzaWRlIG9mIHRoaXMgY2xhc3Mgb25jZSBFY2hvQ2FuY2Vs
bGVyMwogICAvLyBkZXZlbG9wbWVudCBpcyBkb25lLgogICBkYXRhX2R1bXBlcl8tPkR1bXBSYXco
CkBAIC0xMTIsMTAgKzEwMywxOSBAQCBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBFY2hv
UGF0aERlbGF5RXN0aW1hdG9yOjpFc3RpbWF0ZURlbGF5KAogICBvbGRfYWdncmVnYXRlZF9sYWdf
ID0gYWdncmVnYXRlZF9tYXRjaGVkX2ZpbHRlcl9sYWc7CiAgIGNvbnN0ZXhwciBzaXplX3Qga051
bUJsb2Nrc1BlclNlY29uZEJ5MiA9IGtOdW1CbG9ja3NQZXJTZWNvbmQgLyAyOwogICBpZiAoY29u
c2lzdGVudF9lc3RpbWF0ZV9jb3VudGVyXyA+IGtOdW1CbG9ja3NQZXJTZWNvbmRCeTIpIHsKLSAg
ICBSZXNldCh0cnVlKTsKKyAgICBSZXNldChmYWxzZSwgZmFsc2UpOwogICB9CiAKICAgcmV0dXJu
IGFnZ3JlZ2F0ZWRfbWF0Y2hlZF9maWx0ZXJfbGFnOwogfQogCit2b2lkIEVjaG9QYXRoRGVsYXlF
c3RpbWF0b3I6OlJlc2V0KGJvb2wgcmVzZXRfbGFnX2FnZ3JlZ2F0b3IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVzZXRfZGVsYXlfY29uZmlkZW5jZSkgeworICBp
ZiAocmVzZXRfbGFnX2FnZ3JlZ2F0b3IpIHsKKyAgICBtYXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVn
YXRvcl8uUmVzZXQocmVzZXRfZGVsYXlfY29uZmlkZW5jZSk7CisgIH0KKyAgbWF0Y2hlZF9maWx0
ZXJfLlJlc2V0KCk7CisgIG9sZF9hZ2dyZWdhdGVkX2xhZ18gPSBhYnNsOjpudWxsb3B0OworICBj
b25zaXN0ZW50X2VzdGltYXRlX2NvdW50ZXJfID0gMDsKK30KIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3Iu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3IuaAppbmRleCBjZWE5
YWJjYjUxNTE2OWNkN2JjMWZkZDNmNzcxZTUwMzk0YjY1YTcwLi4xZjE0NzM1ZDFhNTFhZmIwZDRk
ZmIzYWU2ODY2YjkyYTgyODA4NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3Bh
dGhfZGVsYXlfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5
X2VzdGltYXRvci5oCkBAIC0xMSwxMyArMTEsMTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19Q
Uk9DRVNTSU5HX0FFQzNfRUNIT19QQVRIX0RFTEFZX0VTVElNQVRPUl9IXwogI2RlZmluZSBNT0RV
TEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FQ0hPX1BBVEhfREVMQVlfRVNUSU1BVE9SX0hfCiAK
LSNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8c3RkZGVmLmg+CiAKICNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCi0jaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19j
b25maWcuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3IuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kZWNpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kZWxheV9lc3RpbWF0ZS5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVy
X2xhZ19hZ2dyZWdhdG9yLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgpAQCAtMjUsNiArMjUsOCBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNsYXNzIEFwbURhdGFE
dW1wZXI7CitzdHJ1Y3QgRG93bnNhbXBsZWRSZW5kZXJCdWZmZXI7CitzdHJ1Y3QgRWNob0NhbmNl
bGxlcjNDb25maWc7CiAKIC8vIEVzdGltYXRlcyB0aGUgZGVsYXkgb2YgdGhlIGVjaG8gcGF0aC4K
IGNsYXNzIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IgewpAQCAtMzMsOSArMzUsOSBAQCBjbGFzcyBF
Y2hvUGF0aERlbGF5RXN0aW1hdG9yIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKTsKICAgfkVjaG9QYXRoRGVsYXlFc3RpbWF0b3Io
KTsKIAotICAvLyBSZXNldHMgdGhlIGVzdGltYXRpb24uIElmIHRoZSBzb2Z0LXJlc2V0IGlzIHNw
ZWNpZmllZCwgb25seSAgdGhlIG1hdGNoZWQKLSAgLy8gZmlsdGVycyBhcmUgcmVzZXQuCi0gIHZv
aWQgUmVzZXQoYm9vbCBzb2Z0X3Jlc2V0KTsKKyAgLy8gUmVzZXRzIHRoZSBlc3RpbWF0aW9uLiBJ
ZiB0aGUgZGVsYXkgY29uZmlkZW5jZSBpcyByZXNldCwgdGhlIHJlc2V0IGJlaGF2aW9yCisgIC8v
IGlzIGFzIGlmIHRoZSBjYWxsIGlzIHJlc3RhcnRlZC4KKyAgdm9pZCBSZXNldChib29sIHJlc2V0
X2RlbGF5X2NvbmZpZGVuY2UpOwogCiAgIC8vIFByb2R1Y2UgYSBkZWxheSBlc3RpbWF0ZSBpZiBz
dWNoIGlzIGF2YWxpYWJsZS4KICAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gRXN0aW1h
dGVEZWxheSgKQEAgLTQ4LDYgKzUwLDExIEBAIGNsYXNzIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3Ig
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25fc2FtcGxpbmdf
ZmFjdG9yXyk7CiAgIH0KIAorICAvLyBSZXR1cm5zIHRoZSBsZXZlbCBvZiBkZXRlY3RlZCBjbG9j
a2RyaWZ0LgorICBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsIENsb2NrZHJpZnQoKSBjb25zdCB7
CisgICAgcmV0dXJuIGNsb2NrZHJpZnRfZGV0ZWN0b3JfLkNsb2NrZHJpZnRMZXZlbCgpOworICB9
CisKICBwcml2YXRlOgogICBBcG1EYXRhRHVtcGVyKiBjb25zdCBkYXRhX2R1bXBlcl87CiAgIGNv
bnN0IHNpemVfdCBkb3duX3NhbXBsaW5nX2ZhY3Rvcl87CkBAIC01Nyw2ICs2NCwxMCBAQCBjbGFz
cyBFY2hvUGF0aERlbGF5RXN0aW1hdG9yIHsKICAgTWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3Ig
bWF0Y2hlZF9maWx0ZXJfbGFnX2FnZ3JlZ2F0b3JfOwogICBhYnNsOjpvcHRpb25hbDxEZWxheUVz
dGltYXRlPiBvbGRfYWdncmVnYXRlZF9sYWdfOwogICBzaXplX3QgY29uc2lzdGVudF9lc3RpbWF0
ZV9jb3VudGVyXyA9IDA7CisgIENsb2NrZHJpZnREZXRlY3RvciBjbG9ja2RyaWZ0X2RldGVjdG9y
XzsKKworICAvLyBJbnRlcm5hbCByZXNldCBtZXRob2Qgd2l0aCBtb3JlIGdyYW51bGFyaXR5Lgor
ICB2b2lkIFJlc2V0KGJvb2wgcmVzZXRfbGFnX2FnZ3JlZ2F0b3IsIGJvb2wgcmVzZXRfZGVsYXlf
Y29uZmlkZW5jZSk7CiAKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihFY2hvUGF0aERl
bGF5RXN0aW1hdG9yKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhf
ZGVsYXlfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2Rl
bGF5X2VzdGltYXRvcl91bml0dGVzdC5jYwppbmRleCAzMTFhNGEyMmQ1ZjhlZTFlYzc2NDc3MTA1
MGRkMjllYTFmNjQwZTNlLi5hNGUzMTMzYmI1YmFhZTE4YjM2NWVmMzc1OGM0ZGJkNjExY2YwNTYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9yX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3Jf
dW5pdHRlc3QuY2MKQEAgLTM5LDcgKzM5LDcgQEAgVEVTVChFY2hvUGF0aERlbGF5RXN0aW1hdG9y
LCBCYXNpY0FwaUNhbGxzKSB7CiAgIEFwbURhdGFEdW1wZXIgZGF0YV9kdW1wZXIoMCk7CiAgIEVj
aG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZzsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5
QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNy
ZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZp
ZywgMykpOwogICBFY2hvUGF0aERlbGF5RXN0aW1hdG9yIGVzdGltYXRvcigmZGF0YV9kdW1wZXIs
IGNvbmZpZyk7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gcmVuZGVyKDMsIHN0
ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXplKSk7CiAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBjYXB0
dXJlKGtCbG9ja1NpemUpOwpAQCAtNjQsMTIgKzY0LDkgQEAgVEVTVChFY2hvUGF0aERlbGF5RXN0
aW1hdG9yLCBEZWxheUVzdGltYXRpb24pIHsKICAgICBjb25maWcuZGVsYXkubnVtX2ZpbHRlcnMg
PSAxMDsKICAgICBmb3IgKHNpemVfdCBkZWxheV9zYW1wbGVzIDogezMwLCA2NCwgMTUwLCAyMDAs
IDgwMCwgNDAwMH0pIHsKICAgICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KGRlbGF5
X3NhbXBsZXMsIGRvd25fc2FtcGxpbmdfZmFjdG9yKSk7Ci0KLSAgICAgIGNvbmZpZy5kZWxheS5h
cGlfY2FsbF9qaXR0ZXJfYmxvY2tzID0gNTsKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJE
ZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgICAgICBSZW5kZXJEZWxheUJ1
ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOwotICAgICAgRGVsYXlCdWZmZXI8ZmxvYXQ+IHNpZ25h
bF9kZWxheV9idWZmZXIoCi0gICAgICAgICAgZGVsYXlfc2FtcGxlcyArIDIgKiBjb25maWcuZGVs
YXkuYXBpX2NhbGxfaml0dGVyX2Jsb2NrcyAqIDY0KTsKKyAgICAgICAgICBSZW5kZXJEZWxheUJ1
ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKKyAgICAgIERlbGF5QnVmZmVyPGZsb2F0PiBzaWdu
YWxfZGVsYXlfYnVmZmVyKGRlbGF5X3NhbXBsZXMpOwogICAgICAgRWNob1BhdGhEZWxheUVzdGlt
YXRvciBlc3RpbWF0b3IoJmRhdGFfZHVtcGVyLCBjb25maWcpOwogCiAgICAgICBhYnNsOjpvcHRp
b25hbDxEZWxheUVzdGltYXRlPiBlc3RpbWF0ZWRfZGVsYXlfc2FtcGxlczsKQEAgLTk3LDkgKzk0
LDcgQEAgVEVTVChFY2hvUGF0aERlbGF5RXN0aW1hdG9yLCBEZWxheUVzdGltYXRpb24pIHsKICAg
ICAgICAgLy8gZG9tYWluLgogICAgICAgICBzaXplX3QgZGVsYXlfZHMgPSBkZWxheV9zYW1wbGVz
IC8gZG93bl9zYW1wbGluZ19mYWN0b3I7CiAgICAgICAgIHNpemVfdCBlc3RpbWF0ZWRfZGVsYXlf
ZHMgPQotICAgICAgICAgICAgKGVzdGltYXRlZF9kZWxheV9zYW1wbGVzLT5kZWxheSAtCi0gICAg
ICAgICAgICAgKGNvbmZpZy5kZWxheS5hcGlfY2FsbF9qaXR0ZXJfYmxvY2tzICsgMSkgKiA2NCkg
LwotICAgICAgICAgICAgZG93bl9zYW1wbGluZ19mYWN0b3I7CisgICAgICAgICAgICBlc3RpbWF0
ZWRfZGVsYXlfc2FtcGxlcy0+ZGVsYXkgLyBkb3duX3NhbXBsaW5nX2ZhY3RvcjsKICAgICAgICAg
RVhQRUNUX05FQVIoZGVsYXlfZHMsIGVzdGltYXRlZF9kZWxheV9kcywgMSk7CiAgICAgICB9IGVs
c2UgewogICAgICAgICBBRERfRkFJTFVSRSgpOwpAQCAtMTE4LDcgKzExMyw3IEBAIFRFU1QoRWNo
b1BhdGhEZWxheUVzdGltYXRvciwgTm9EZWxheUVzdGltYXRlc0Zvckxvd0xldmVsUmVuZGVyU2ln
bmFscykgewogICBBcG1EYXRhRHVtcGVyIGRhdGFfZHVtcGVyKDApOwogICBFY2hvUGF0aERlbGF5
RXN0aW1hdG9yIGVzdGltYXRvcigmZGF0YV9kdW1wZXIsIGNvbmZpZyk7CiAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRl
ckRlbGF5QnVmZmVyOjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgMykpOworICAgICAg
UmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgMykpOwog
ICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEwMDsgKytrKSB7CiAgICAgUmFuZG9taXplU2FtcGxl
VmVjdG9yKCZyYW5kb21fZ2VuZXJhdG9yLCByZW5kZXJbMF0pOwogICAgIGZvciAoYXV0byYgcmVu
ZGVyX2sgOiByZW5kZXJbMF0pIHsKQEAgLTE0Miw3ICsxMzcsNyBAQCBURVNUKEVjaG9QYXRoRGVs
YXlFc3RpbWF0b3IsIERJU0FCTEVEX1dyb25nUmVuZGVyQmxvY2tTaXplKSB7CiAgIEVjaG9DYW5j
ZWxsZXIzQ29uZmlnIGNvbmZpZzsKICAgRWNob1BhdGhEZWxheUVzdGltYXRvciBlc3RpbWF0b3Io
JmRhdGFfZHVtcGVyLCBjb25maWcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZm
ZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRl
KGNvbmZpZywgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAz
KSk7CiAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBjYXB0dXJlKGtCbG9ja1NpemUpOwogICBFWFBFQ1Rf
REVBVEgoZXN0aW1hdG9yLkVzdGltYXRlRGVsYXkoCiAgICAgICAgICAgICAgICAgICAgcmVuZGVy
X2RlbGF5X2J1ZmZlci0+R2V0RG93bnNhbXBsZWRSZW5kZXJCdWZmZXIoKSwgY2FwdHVyZSksCkBA
IC0xNTcsNyArMTUyLDcgQEAgVEVTVChFY2hvUGF0aERlbGF5RXN0aW1hdG9yLCBXcm9uZ0NhcHR1
cmVCbG9ja1NpemUpIHsKICAgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnOwogICBFY2hvUGF0
aERlbGF5RXN0aW1hdG9yIGVzdGltYXRvcigmZGF0YV9kdW1wZXIsIGNvbmZpZyk7CiAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAg
IFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxh
eUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGNhcHR1
cmUoc3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUgLSAxKSk7CiAgIEVYUEVDVF9ERUFUSChl
c3RpbWF0b3IuRXN0aW1hdGVEZWxheSgKICAgICAgICAgICAgICAgICAgICByZW5kZXJfZGVsYXlf
YnVmZmVyLT5HZXREb3duc2FtcGxlZFJlbmRlckJ1ZmZlcigpLCBjYXB0dXJlKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9f
cmVtb3Zlci5jYwppbmRleCBhY2RhZjMxMDRiOWZhZTI4MDk5YTAyZDFkNjY4NmM0ZTVmMjczMTU2
Li5jZmI3Mzk1MTk5MmNkOTc4NGQzMzI4ZjU2OThiZmI5Y2E3ZTI0M2RlIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19y
ZW1vdmVyLmNjCkBAIC0xMCwyNiArMTAsMjkgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXIuaCIKIAogI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNs
dWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8YXJyYXk+CiAj
aW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPG51bWVyaWM+Ci0jaW5jbHVkZSA8c3RyaW5nPgog
CiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2FlYzNfZmZ0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvYWVjX3N0YXRlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfdmFyaWFiaWxpdHkuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJfbWV0cmljcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9kYXRhLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1ZmZlci5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5
emVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxf
ZWNob19lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9zdWJ0cmFjdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
c3VidHJhY3Rvcl9vdXRwdXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9zdXBwcmVzc2lvbl9maWx0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
YXRvbWljb3BzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
ICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgpAQCAtMTc1
LDcgKzE3OCw3IEBAIEVjaG9SZW1vdmVySW1wbDo6RWNob1JlbW92ZXJJbXBsKGNvbnN0IEVjaG9D
YW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICBzdWJ0cmFjdG9yXyhjb25maWcsIGRhdGFf
ZHVtcGVyXy5nZXQoKSwgb3B0aW1pemF0aW9uXyksCiAgICAgICBzdXBwcmVzc2lvbl9nYWluXyhj
b25maWdfLCBvcHRpbWl6YXRpb25fLCBzYW1wbGVfcmF0ZV9oeiksCiAgICAgICBjbmdfKG9wdGlt
aXphdGlvbl8pLAotICAgICAgc3VwcHJlc3Npb25fZmlsdGVyXyhzYW1wbGVfcmF0ZV9oel8pLAor
ICAgICAgc3VwcHJlc3Npb25fZmlsdGVyXyhvcHRpbWl6YXRpb25fLCBzYW1wbGVfcmF0ZV9oel8p
LAogICAgICAgcmVuZGVyX3NpZ25hbF9hbmFseXplcl8oY29uZmlnXyksCiAgICAgICByZXNpZHVh
bF9lY2hvX2VzdGltYXRvcl8oY29uZmlnXyksCiAgICAgICBhZWNfc3RhdGVfKGNvbmZpZ18pIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlcl9tZXRyaWNzLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21ldHJpY3MuY2MKaW5kZXggYTA0MDI2YjRmNWY1NWJm
YjRlNDJhOThiMzA2M2RkNDM3NzA3YzM2Ni4uZGE3YTIyNGU4NjNhNjQ2MzBiOGNlYTI5ODAxMDk3
ZjlkY2U2OTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21ldHJp
Y3MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21ldHJpY3MuY2MKQEAgLTEx
LDkgKzExLDExIEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNo
b19yZW1vdmVyX21ldHJpY3MuaCIKIAogI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bnVtZXJpYz4KIAorI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVf
bWlubWF4LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJfbWV0cmljcy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21ldHJpY3MuaAppbmRleCAxN2I4MDNhMWNmOTg4OGJk
MGI0OWI4N2M3NTVjYmNkYTNlZjAxMzNkLi4wNzA3YTVmMDMxZDlhZTYxOWIxM2QxZjE1MmU2OTAy
YWI0M2ZhZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJfbWV0cmlj
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlcl9tZXRyaWNzLmgKQEAgLTExLDYg
KzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRUNIT19SRU1P
VkVSX01FVFJJQ1NfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRUNI
T19SRU1PVkVSX01FVFJJQ1NfSF8KIAorI2luY2x1ZGUgPGFycmF5PgorCisjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9f
cmVtb3Zlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlcl91bml0dGVz
dC5jYwppbmRleCBkYTAzZjRjOGU4ZGI3ZGY1NjNhMWEyOGQwMjNhMGEzMzMzZGVhOTE3Li44YmY3
NmM0MDYwZDYyMDQ1Yjg4OGI3NjRhNTRiMDhjYjk3YzZkOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9lY2hvX3JlbW92ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNo
b19yZW1vdmVyX3VuaXR0ZXN0LmNjCkBAIC00OCw3ICs0OCw3IEBAIFRFU1QoRWNob1JlbW92ZXIs
IEJhc2ljQXBpQ2FsbHMpIHsKICAgICBTQ09QRURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChyYXRl
KSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9SZW1vdmVyPiByZW1vdmVyKAogICAgICAgICBF
Y2hvUmVtb3Zlcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHJhdGUpKTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIoUmVuZGVyRGVs
YXlCdWZmZXI6OkNyZWF0ZSgKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+
IHJlbmRlcl9idWZmZXIoUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoCiAgICAgICAgIEVjaG9D
YW5jZWxsZXIzQ29uZmlnKCksIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOwogCiAgICAgc3RkOjp2
ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiByZW5kZXIoTnVtQmFuZHNGb3JSYXRlKHJhdGUpLApA
QCAtODksNyArODksNyBAQCBURVNUKEVjaG9SZW1vdmVyLCBXcm9uZ0NhcHR1cmVCbG9ja1NpemUp
IHsKICAgICBTQ09QRURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChyYXRlKSk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEVjaG9SZW1vdmVyPiByZW1vdmVyKAogICAgICAgICBFY2hvUmVtb3Zlcjo6Q3Jl
YXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHJhdGUpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIoUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0
ZSgKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIo
UmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoCiAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmln
KCksIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOwogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9y
PGZsb2F0Pj4gY2FwdHVyZSgKICAgICAgICAgTnVtQmFuZHNGb3JSYXRlKHJhdGUpLCBzdGQ6OnZl
Y3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSAtIDEsIDAuZikpOwpAQCAtMTExLDcgKzExMSw3IEBAIFRF
U1QoRWNob1JlbW92ZXIsIERJU0FCTEVEX1dyb25nQ2FwdHVyZU51bUJhbmRzKSB7CiAgICAgU0NP
UEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQocmF0ZSkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxF
Y2hvUmVtb3Zlcj4gcmVtb3ZlcigKICAgICAgICAgRWNob1JlbW92ZXI6OkNyZWF0ZShFY2hvQ2Fu
Y2VsbGVyM0NvbmZpZygpLCByYXRlKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5
QnVmZmVyPiByZW5kZXJfYnVmZmVyKFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyKFJlbmRlckRlbGF5
QnVmZmVyOjpDcmVhdGUyKAogICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBOdW1CYW5k
c0ZvclJhdGUocmF0ZSkpKTsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IGNh
cHR1cmUoCiAgICAgICAgIE51bUJhbmRzRm9yUmF0ZShyYXRlID09IDQ4MDAwID8gMTYwMDAgOiBy
YXRlICsgMTYwMDApLApAQCAtMTMxLDcgKzEzMSw3IEBAIFRFU1QoRWNob1JlbW92ZXIsIE51bGxD
YXB0dXJlKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gcmVtb3ZlcigKICAgICAg
IEVjaG9SZW1vdmVyOjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgODAwMCkpOwogICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIoCi0gICAgICBS
ZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKKyAg
ICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDMp
KTsKICAgRWNob1BhdGhWYXJpYWJpbGl0eSBlY2hvX3BhdGhfdmFyaWFiaWxpdHkoCiAgICAgICBm
YWxzZSwgRWNob1BhdGhWYXJpYWJpbGl0eTo6RGVsYXlBZGp1c3RtZW50OjprTm9uZSwgZmFsc2Up
OwogICBFWFBFQ1RfREVBVEgoCkBAIC0xNjEsNyArMTYxLDcgQEAgVEVTVChFY2hvUmVtb3Zlciwg
QmFzaWNFY2hvUmVtb3ZhbCkgewogICAgICAgY29uZmlnLmRlbGF5Lm1pbl9lY2hvX3BhdGhfZGVs
YXlfYmxvY2tzID0gMDsKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gcmVtb3Zl
cihFY2hvUmVtb3Zlcjo6Q3JlYXRlKGNvbmZpZywgcmF0ZSkpOwogICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyKAotICAgICAgICAgIFJlbmRlckRl
bGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAgICAg
ICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIE51bUJhbmRzRm9yUmF0ZShy
YXRlKSkpOwogICAgICAgcmVuZGVyX2J1ZmZlci0+U2V0RGVsYXkoZGVsYXlfc2FtcGxlcyAvIGtC
bG9ja1NpemUpOwogCiAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGVsYXlCdWZm
ZXI8ZmxvYXQ+Pj4gZGVsYXlfYnVmZmVycyh4LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9lcmxfZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsX2VzdGltYXRvci5j
YwppbmRleCAyZGE5Y2Q4ODgzNTA0MDZiZjc4OTAyODA2ZmU1NjQ5Njg5ZTQ0ZTEwLi44NWIxZTAy
MmRhMmY4NzI2NmUwZTg1NzJhNzQxY2M4NGIxMWM4NmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9lcmxfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybF9lc3RpbWF0b3Iu
Y2MKQEAgLTEzLDYgKzEzLDggQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bnVt
ZXJpYz4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybF9lc3RpbWF0
b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybF9lc3RpbWF0b3IuaAppbmRleCBkYWNkNTQ2YTZkZTcz
MmY2MjViNTk5YmQ2ZDA0MDMxYzkwYjAyMzMxLi4yOTcxOGMzNzgzNmU4YThiZDE1NjI3OTM3MWQ4
MjcyZjAwYzJkYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxfZXN0aW1hdG9yLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsX2VzdGltYXRvci5oCkBAIC0xMSw2ICsxMSw3IEBACiAj
aWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0VSTF9FU1RJTUFUT1JfSF8KICNk
ZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRVJMX0VTVElNQVRPUl9IXwogCisj
aW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YXJyYXk+CiAKICNpbmNsdWRlICJhcGkvYXJy
YXlfdmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsZV9lc3RpbWF0b3IuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5jYwppbmRleCA3MTEwODVmOTZmMDg5NGM3
YzVjMjljODZlNzIyZTk3N2JiNmI0ZjVkLi42NTZhOWM3ZmRmNTMwNjYxZTUyNmY1NWMwN2RlM2I5
ZWE2ODBlZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5jYwpAQCAtMTAsMTkgKzEwLDE4IEBA
CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRv
ci5oIgogCi0jaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogRXJsZUVzdGltYXRvcjo6RXJs
ZUVzdGltYXRvcihzaXplX3Qgc3RhcnR1cF9waGFzZV9sZW5ndGhfYmxvY2tzXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWluX2VybGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IG1heF9lcmxlX2xmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBtYXhfZXJsZV9oZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZykKICAgICA6IHN0YXJ0dXBfcGhhc2VfbGVuZ3Ro
X2Jsb2Nrc19fKHN0YXJ0dXBfcGhhc2VfbGVuZ3RoX2Jsb2Nrc18pLAotICAgICAgZnVsbGJhbmRf
ZXJsZV9lc3RpbWF0b3JfKG1pbl9lcmxlLCBtYXhfZXJsZV9sZiksCi0gICAgICBzdWJiYW5kX2Vy
bGVfZXN0aW1hdG9yXyhtaW5fZXJsZSwgbWF4X2VybGVfbGYsIG1heF9lcmxlX2hmKSB7CisgICAg
ICB1c2Vfc2lnbmFsX2RlcGVuZGVudF9lcmxlXyhjb25maWcuZXJsZS5udW1fc2VjdGlvbnMgPiAx
KSwKKyAgICAgIGZ1bGxiYW5kX2VybGVfZXN0aW1hdG9yXyhjb25maWcuZXJsZS5taW4sIGNvbmZp
Zy5lcmxlLm1heF9sKSwKKyAgICAgIHN1YmJhbmRfZXJsZV9lc3RpbWF0b3JfKGNvbmZpZyksCisg
ICAgICBzaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yXyhjb25maWcpIHsKICAgUmVzZXQo
dHJ1ZSk7CiB9CiAKQEAgLTMxLDIwICszMCwyNSBAQCBFcmxlRXN0aW1hdG9yOjp+RXJsZUVzdGlt
YXRvcigpID0gZGVmYXVsdDsKIHZvaWQgRXJsZUVzdGltYXRvcjo6UmVzZXQoYm9vbCBkZWxheV9j
aGFuZ2UpIHsKICAgZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3JfLlJlc2V0KCk7CiAgIHN1YmJhbmRf
ZXJsZV9lc3RpbWF0b3JfLlJlc2V0KCk7CisgIHNpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0
b3JfLlJlc2V0KCk7CiAgIGlmIChkZWxheV9jaGFuZ2UpIHsKICAgICBibG9ja3Nfc2luY2VfcmVz
ZXRfID0gMDsKICAgfQogfQogCi12b2lkIEVybGVFc3RpbWF0b3I6OlVwZGF0ZShydGM6OkFycmF5
Vmlldzxjb25zdCBmbG9hdD4gcmVuZGVyX3NwZWN0cnVtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNhcHR1cmVfc3BlY3RydW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gc3VidHJh
Y3Rvcl9zcGVjdHJ1bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29udmVyZ2Vk
X2ZpbHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgb25zZXRfZGV0ZWN0aW9u
KSB7Ci0gIFJUQ19EQ0hFQ0tfRVEoa0ZmdExlbmd0aEJ5MlBsdXMxLCByZW5kZXJfc3BlY3RydW0u
c2l6ZSgpKTsKK3ZvaWQgRXJsZUVzdGltYXRvcjo6VXBkYXRlKAorICAgIGNvbnN0IFJlbmRlckJ1
ZmZlciYgcmVuZGVyX2J1ZmZlciwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OmFycmF5PGZs
b2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNw
b25zZSwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmV2ZXJiX3JlbmRlcl9zcGVj
dHJ1bSwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY2FwdHVyZV9zcGVjdHJ1bSwK
KyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gc3VidHJhY3Rvcl9zcGVjdHJ1bSwKKyAg
ICBib29sIGNvbnZlcmdlZF9maWx0ZXIsCisgICAgYm9vbCBvbnNldF9kZXRlY3Rpb24pIHsKKyAg
UlRDX0RDSEVDS19FUShrRmZ0TGVuZ3RoQnkyUGx1czEsIHJldmVyYl9yZW5kZXJfc3BlY3RydW0u
c2l6ZSgpKTsKICAgUlRDX0RDSEVDS19FUShrRmZ0TGVuZ3RoQnkyUGx1czEsIGNhcHR1cmVfc3Bl
Y3RydW0uc2l6ZSgpKTsKICAgUlRDX0RDSEVDS19FUShrRmZ0TGVuZ3RoQnkyUGx1czEsIHN1YnRy
YWN0b3Jfc3BlY3RydW0uc2l6ZSgpKTsKLSAgY29uc3QgYXV0byYgWDIgPSByZW5kZXJfc3BlY3Ry
dW07CisgIGNvbnN0IGF1dG8mIFgyX3JldmVyYiA9IHJldmVyYl9yZW5kZXJfc3BlY3RydW07CiAg
IGNvbnN0IGF1dG8mIFkyID0gY2FwdHVyZV9zcGVjdHJ1bTsKICAgY29uc3QgYXV0byYgRTIgPSBz
dWJ0cmFjdG9yX3NwZWN0cnVtOwogCkBAIC01MiwxNCArNTYsMjMgQEAgdm9pZCBFcmxlRXN0aW1h
dG9yOjpVcGRhdGUocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHJlbmRlcl9zcGVjdHJ1bSwK
ICAgICByZXR1cm47CiAgIH0KIAotICBzdWJiYW5kX2VybGVfZXN0aW1hdG9yXy5VcGRhdGUoWDIs
IFkyLCBFMiwgY29udmVyZ2VkX2ZpbHRlciwgb25zZXRfZGV0ZWN0aW9uKTsKLSAgZnVsbGJhbmRf
ZXJsZV9lc3RpbWF0b3JfLlVwZGF0ZShYMiwgWTIsIEUyLCBjb252ZXJnZWRfZmlsdGVyKTsKKyAg
c3ViYmFuZF9lcmxlX2VzdGltYXRvcl8uVXBkYXRlKFgyX3JldmVyYiwgWTIsIEUyLCBjb252ZXJn
ZWRfZmlsdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25zZXRfZGV0ZWN0
aW9uKTsKKworICBpZiAodXNlX3NpZ25hbF9kZXBlbmRlbnRfZXJsZV8pIHsKKyAgICBzaWduYWxf
ZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yXy5VcGRhdGUoCisgICAgICAgIHJlbmRlcl9idWZmZXIs
IGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsIFgyX3JldmVyYiwgWTIsIEUyLAorICAgICAgICBz
dWJiYW5kX2VybGVfZXN0aW1hdG9yXy5FcmxlKCksIGNvbnZlcmdlZF9maWx0ZXIpOworICB9CisK
KyAgZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3JfLlVwZGF0ZShYMl9yZXZlcmIsIFkyLCBFMiwgY29u
dmVyZ2VkX2ZpbHRlcik7CiB9CiAKIHZvaWQgRXJsZUVzdGltYXRvcjo6RHVtcCgKICAgICBjb25z
dCBzdGQ6OnVuaXF1ZV9wdHI8QXBtRGF0YUR1bXBlcj4mIGRhdGFfZHVtcGVyKSBjb25zdCB7CiAg
IGZ1bGxiYW5kX2VybGVfZXN0aW1hdG9yXy5EdW1wKGRhdGFfZHVtcGVyKTsKICAgc3ViYmFuZF9l
cmxlX2VzdGltYXRvcl8uRHVtcChkYXRhX2R1bXBlcik7CisgIHNpZ25hbF9kZXBlbmRlbnRfZXJs
ZV9lc3RpbWF0b3JfLkR1bXAoZGF0YV9kdW1wZXIpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvZXJsZV9lc3RpbWF0b3IuaAppbmRleCA4Y2E2MDVmZjcxZDU4ZWI4Njc5Y2FhNmYw
ZDM2ZWMwZWEyNTY2ZDNjLi44MDM2YzIxOThiNGUzMmJmNGU4ZGExMjAyNjg1YjlmNWE1MGQ0YjJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmgKQEAgLTExLDEzICsxMSwxNyBAQAogI2lmbmRlZiBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FUkxFX0VTVElNQVRPUl9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FUkxFX0VTVElNQVRPUl9IXwogCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5j
bHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Z1bGxiYW5kX2VybGVfZXN0aW1hdG9yLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1ZmZlci5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NpZ25hbF9kZXBlbmRl
bnRfZXJsZV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9zdWJiYW5kX2VybGVfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAKQEAgLTI4LDE2ICszMiwxNyBA
QCBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEVybGVFc3RpbWF0b3IgewogIHB1YmxpYzoKICAg
RXJsZUVzdGltYXRvcihzaXplX3Qgc3RhcnR1cF9waGFzZV9sZW5ndGhfYmxvY2tzXywKLSAgICAg
ICAgICAgICAgICBmbG9hdCBtaW5fZXJsZSwKLSAgICAgICAgICAgICAgICBmbG9hdCBtYXhfZXJs
ZV9sZiwKLSAgICAgICAgICAgICAgICBmbG9hdCBtYXhfZXJsZV9oZik7CisgICAgICAgICAgICAg
ICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZyk7CiAgIH5FcmxlRXN0aW1hdG9y
KCk7CiAKICAgLy8gUmVzZXRzIHRoZSBmdWxsYmFuZCBFUkxFIGVzdGltYXRvciBhbmQgdGhlIHN1
YmJhbmRzIEVSTEUgZXN0aW1hdG9ycy4KICAgdm9pZCBSZXNldChib29sIGRlbGF5X2NoYW5nZSk7
CiAKICAgLy8gVXBkYXRlcyB0aGUgRVJMRSBlc3RpbWF0ZXMuCi0gIHZvaWQgVXBkYXRlKHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZW5kZXJfc3BlY3RydW0sCisgIHZvaWQgVXBkYXRlKGNv
bnN0IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKKyAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPj4mCisgICAgICAg
ICAgICAgICAgICBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAorICAgICAgICAgICAgICBydGM6
OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmV2ZXJiX3JlbmRlcl9zcGVjdHJ1bSwKICAgICAgICAg
ICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNhcHR1cmVfc3BlY3RydW0sCiAgICAg
ICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBzdWJ0cmFjdG9yX3NwZWN0cnVt
LAogICAgICAgICAgICAgICBib29sIGNvbnZlcmdlZF9maWx0ZXIsCkBAIC00NSwxMSArNTAsMTIg
QEAgY2xhc3MgRXJsZUVzdGltYXRvciB7CiAKICAgLy8gUmV0dXJucyB0aGUgbW9zdCByZWNlbnQg
c3ViYmFuZCBFUkxFIGVzdGltYXRlcy4KICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExl
bmd0aEJ5MlBsdXMxPiYgRXJsZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gc3ViYmFuZF9lcmxlX2Vz
dGltYXRvcl8uRXJsZSgpOworICAgIHJldHVybiB1c2Vfc2lnbmFsX2RlcGVuZGVudF9lcmxlXyA/
IHNpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3JfLkVybGUoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IHN1YmJhbmRfZXJsZV9lc3RpbWF0b3JfLkVybGUoKTsK
ICAgfQogICAvLyBSZXR1cm5zIHRoZSBzdWJiYW5kIEVSTEUgdGhhdCBhcmUgZXN0aW1hdGVkIGR1
cmluZyBvbnNldHMuIFVzZWQKICAgLy8gZm9yIGxvZ2dpbmcvdGVzdGluZy4KLSAgY29uc3Qgc3Rk
OjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgRXJsZU9uc2V0cygpIGNvbnN0IHsK
KyAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEVybGVPbnNldHMoKSBjb25zdCB7CiAgICAg
cmV0dXJuIHN1YmJhbmRfZXJsZV9lc3RpbWF0b3JfLkVybGVPbnNldHMoKTsKICAgfQogCkBAIC03
MCw4ICs3NiwxMCBAQCBjbGFzcyBFcmxlRXN0aW1hdG9yIHsKIAogIHByaXZhdGU6CiAgIGNvbnN0
IHNpemVfdCBzdGFydHVwX3BoYXNlX2xlbmd0aF9ibG9ja3NfXzsKKyAgY29uc3QgYm9vbCB1c2Vf
c2lnbmFsX2RlcGVuZGVudF9lcmxlXzsKICAgRnVsbEJhbmRFcmxlRXN0aW1hdG9yIGZ1bGxiYW5k
X2VybGVfZXN0aW1hdG9yXzsKICAgU3ViYmFuZEVybGVFc3RpbWF0b3Igc3ViYmFuZF9lcmxlX2Vz
dGltYXRvcl87CisgIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3Igc2lnbmFsX2RlcGVuZGVu
dF9lcmxlX2VzdGltYXRvcl87CiAgIHNpemVfdCBibG9ja3Nfc2luY2VfcmVzZXRfID0gMDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvZXJsZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKaW5kZXggMmNiMDUw
YWYzYjNkYTExMmFlMmY5NzU4ODRkNTBkMWVkZGIzNThlYi4uNTlhNzQ3MTU5MzM3ZjM2ODk2MGU0
OTdlMzBkOWMzNWJiYWU1NmY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsZV9lc3Rp
bWF0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsZV9lc3RpbWF0b3JfdW5p
dHRlc3QuY2MKQEAgLTEyLDYgKzEyLDkgQEAKIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsZV9lc3RpbWF0b3Iu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlf
YnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9y
X2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3JhbmRvbS5oIgogI2luY2x1ZGUgInRlc3Qv
Z3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0xOSwxMSArMjIsOSBAQCBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CiAKIGNvbnN0ZXhwciBpbnQga0xvd0ZyZXF1ZW5jeUxp
bWl0ID0ga0ZmdExlbmd0aEJ5MiAvIDI7Ci1jb25zdGV4cHIgZmxvYXQga01heEVybGVMZiA9IDgu
ZjsKLWNvbnN0ZXhwciBmbG9hdCBrTWF4RXJsZUhmID0gMS41ZjsKLWNvbnN0ZXhwciBmbG9hdCBr
TWluRXJsZSA9IDEuMGY7CiBjb25zdGV4cHIgZmxvYXQga1RydWVFcmxlID0gMTAuZjsKIGNvbnN0
ZXhwciBmbG9hdCBrVHJ1ZUVybGVPbnNldHMgPSAxLjBmOworY29uc3RleHByIGZsb2F0IGtFY2hv
UGF0aEdhaW4gPSAzLmY7CiAKIHZvaWQgVmVyaWZ5RXJsZUJhbmRzKHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IGZsb2F0PiBlcmxlLAogICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmVmZXJlbmNlX2xm
LApAQCAtNDQsODAgKzQ1LDE1NyBAQCB2b2lkIFZlcmlmeUVybGUocnRjOjpBcnJheVZpZXc8Y29u
c3QgZmxvYXQ+IGVybGUsCiAgIEVYUEVDVF9ORUFSKHJlZmVyZW5jZV9sZiwgZXJsZV90aW1lX2Rv
bWFpbiwgMC41KTsKIH0KIAotdm9pZCBGb3JtRmFyZW5kRnJhbWUoc3RkOjphcnJheTxmbG9hdCwg
a0ZmdExlbmd0aEJ5MlBsdXMxPiogWDIsCit2b2lkIEZvcm1GYXJlbmRUaW1lRnJhbWUocnRjOjpB
cnJheVZpZXc8ZmxvYXQ+IHgpIHsKKyAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0Jsb2NrU2l6
ZT4gZnJhbWUgPSB7CisgICAgICA3NDU5Ljg4LCAxNzIwOS42LCAxNzM4MywgICAyMDc2OC45LCAx
NjgxNi43LCAxODM4Ni4zLCA0NDkyLjgzLCA5Njc1Ljg1LAorICAgICAgNjY2NS41MiwgMTQ4MDgu
NiwgOTM0Mi4zLCAgNzQ4My4yOCwgMTkyNjEuNywgNDE0NS45OCwgMTYyMi4xOCwgMTM0NzUuMiwK
KyAgICAgIDcxNjYuMzIsIDY4NTYuNjEsIDIxOTM3LCAgIDcyNjMuMTQsIDk1NjkuMDcsIDE0OTE5
LCAgIDg0MTMuMzIsIDc1NTEuODksCisgICAgICA3ODQ4LjY1LCA2MDExLjI3LCAxMzA4MC42LCAx
NTg2NS4yLCAxMjY1NiwgICAxNzQ1OS42LCA0MjYzLjkzLCA0NTAzLjAzLAorICAgICAgOTMxMS43
OSwgMjEwOTUuOCwgMTI2NTcuOSwgMTM5MDYuNiwgMTkyNjcuMiwgMTEzMzguMSwgMTY4MjguOSwg
MTE1MDEuNiwKKyAgICAgIDExNDA1LCAgIDE1MDMxLjQsIDE0NTQxLjYsIDE5NzY1LjUsIDE4MzQ2
LjMsIDE5MzUwLjIsIDMxNTcuNDcsIDE4MDk1LjgsCisgICAgICAxNzQzLjY4LCAyMTMyOC4yLCAx
OTcyNy41LCA3Mjk1LjE2LCAxMDMzMi40LCAxMTA1NS41LCAyMDEwNy40LCAxNDcwOC40LAorICAg
ICAgMTI0MTYuMiwgMTY0MzQsICAgMjQ1NC42OSwgOTg0MC44LCAgNjg2Ny4yMywgMTYxNS43NSwg
NjA1OS45LCAgODM5NC4xOX07CisgIFJUQ19EQ0hFQ0tfR0UoeC5zaXplKCksIGZyYW1lLnNpemUo
KSk7CisgIHN0ZDo6Y29weShmcmFtZS5iZWdpbigpLCBmcmFtZS5lbmQoKSwgeC5iZWdpbigpKTsK
K30KKwordm9pZCBGb3JtRmFyZW5kRnJhbWUoY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5
MlBsdXMxPiogWDIsCiAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0
TGVuZ3RoQnkyUGx1czE+KiBFMiwKICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8Zmxv
YXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4qIFkyLAogICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
ZXJsZSkgewotICBYMi0+ZmlsbCg1MDAgKiAxMDAwLmYgKiAxMDAwLmYpOwotICBFMi0+ZmlsbCgx
MDAwLmYgKiAxMDAwLmYpOwotICBZMi0+ZmlsbChlcmxlICogKCpFMilbMF0pOwotfQorICBjb25z
dCBhdXRvJiBzcGVjdHJ1bV9idWZmZXIgPSByZW5kZXJfYnVmZmVyLkdldFNwZWN0cnVtQnVmZmVy
KCk7CisgIGNvbnN0IGF1dG8mIFgyX2Zyb21fYnVmZmVyID0gc3BlY3RydW1fYnVmZmVyLmJ1ZmZl
cltzcGVjdHJ1bV9idWZmZXIud3JpdGVdOworICBzdGQ6OmNvcHkoWDJfZnJvbV9idWZmZXIuYmVn
aW4oKSwgWDJfZnJvbV9idWZmZXIuZW5kKCksIFgyLT5iZWdpbigpKTsKKyAgc3RkOjp0cmFuc2Zv
cm0oWDItPmJlZ2luKCksIFgyLT5lbmQoKSwgWTItPmJlZ2luKCksCisgICAgICAgICAgICAgICAg
IFtdKGZsb2F0IGEpIHsgcmV0dXJuIGEgKiBrRWNob1BhdGhHYWluICoga0VjaG9QYXRoR2Fpbjsg
fSk7CisgIHN0ZDo6dHJhbnNmb3JtKFkyLT5iZWdpbigpLCBZMi0+ZW5kKCksIEUyLT5iZWdpbigp
LAorICAgICAgICAgICAgICAgICBbZXJsZV0oZmxvYXQgYSkgeyByZXR1cm4gYSAvIGVybGU7IH0p
OworCit9ICAvLyBuYW1lc3BhY2UKIAotdm9pZCBGb3JtTmVhcmVuZEZyYW1lKHN0ZDo6YXJyYXk8
ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4qIFgyLAordm9pZCBGb3JtTmVhcmVuZEZyYW1lKHJ0
Yzo6QXJyYXlWaWV3PGZsb2F0PiB4LAorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8
ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4qIFgyLAogICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4qIEUyLAogICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4qIFkyKSB7CisgIHhb
MF0gPSAwLmY7CiAgIFgyLT5maWxsKDAuZik7CiAgIFkyLT5maWxsKDUwMC5mICogMTAwMC5mICog
MTAwMC5mKTsKICAgRTItPmZpbGwoKCpZMilbMF0pOwogfQogCit2b2lkIEdldEZpbHRlckZyZXEo
c3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPj4mCisgICAg
ICAgICAgICAgICAgICAgICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCisgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGRlbGF5X2hlYWRyb29tX2Jsb2NrcykgeworICBSVENfRENIRUNLX0dF
KGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2Uuc2l6ZSgpLCBkZWxheV9oZWFkcm9vbV9ibG9ja3Mp
OworICBmb3IgKGF1dG8mIGJsb2NrX2ZyZXFfcmVzcCA6IGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9u
c2UpIHsKKyAgICBibG9ja19mcmVxX3Jlc3AuZmlsbCgwLmYpOworICB9CisKKyAgZm9yIChzaXpl
X3QgayA9IDA7IGsgPCBrRmZ0TGVuZ3RoQnkyUGx1czE7ICsraykgeworICAgIGZpbHRlcl9mcmVx
dWVuY3lfcmVzcG9uc2VbZGVsYXlfaGVhZHJvb21fYmxvY2tzXVtrXSA9IGtFY2hvUGF0aEdhaW47
CisgIH0KK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIFRFU1QoRXJsZUVzdGltYXRvciwgVmVyaWZ5
RXJsZUluY3JlYXNlQW5kSG9sZCkgewogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnky
UGx1czE+IFgyOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IEUyOwog
ICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFkyOworICBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZyBjb25maWc7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4geCgz
LCBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMC5mKSk7CisgIHN0ZDo6dmVjdG9yPHN0
ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+IGZpbHRlcl9mcmVxdWVuY3lfcmVz
cG9uc2UoCisgICAgICBjb25maWcuZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2Nrcyk7CisgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKKyAgICAg
IFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogCi0gIEVybGVFc3RpbWF0
b3IgZXN0aW1hdG9yKDAsIGtNaW5FcmxlLCBrTWF4RXJsZUxmLCBrTWF4RXJsZUhmKTsKKyAgR2V0
RmlsdGVyRnJlcShmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLCBjb25maWcuZGVsYXkuZGVsYXlf
aGVhZHJvb21fYmxvY2tzKTsKIAotICAvLyBWZXJpZmllcyB0aGF0IHRoZSBFUkxFIGVzdGltYXRl
IGlzIHByb3Blcmx5IGluY3JlYXNlZCB0byBoaWdoZXIgdmFsdWVzLgotICBGb3JtRmFyZW5kRnJh
bWUoJlgyLCAmRTIsICZZMiwga1RydWVFcmxlKTsKKyAgRXJsZUVzdGltYXRvciBlc3RpbWF0b3Io
MCwgY29uZmlnKTsKIAorICBGb3JtRmFyZW5kVGltZUZyYW1lKHhbMF0pOworICByZW5kZXJfZGVs
YXlfYnVmZmVyLT5JbnNlcnQoeCk7CisgIHJlbmRlcl9kZWxheV9idWZmZXItPlByZXBhcmVDYXB0
dXJlUHJvY2Vzc2luZygpOworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBFUkxFIGVzdGltYXRlIGlz
IHByb3Blcmx5IGluY3JlYXNlZCB0byBoaWdoZXIgdmFsdWVzLgorICBGb3JtRmFyZW5kRnJhbWUo
KnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJlbmRlckJ1ZmZlcigpLCAmWDIsICZFMiwgJlkyLAor
ICAgICAgICAgICAgICAgICAga1RydWVFcmxlKTsKICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAy
MDA7ICsraykgewotICAgIGVzdGltYXRvci5VcGRhdGUoWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7
CisgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+SW5zZXJ0KHgpOworICAgIHJlbmRlcl9kZWxheV9i
dWZmZXItPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpOworICAgIGVzdGltYXRvci5VcGRhdGUo
KnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJlbmRlckJ1ZmZlcigpLAorICAgICAgICAgICAgICAg
ICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwgWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7
CiAgIH0KICAgVmVyaWZ5RXJsZShlc3RpbWF0b3IuRXJsZSgpLCBzdGQ6OnBvdygyLmYsIGVzdGlt
YXRvci5GdWxsYmFuZEVybGVMb2cyKCkpLAotICAgICAgICAgICAgIGtNYXhFcmxlTGYsIGtNYXhF
cmxlSGYpOworICAgICAgICAgICAgIGNvbmZpZy5lcmxlLm1heF9sLCBjb25maWcuZXJsZS5tYXhf
aCk7CiAKLSAgRm9ybU5lYXJlbmRGcmFtZSgmWDIsICZFMiwgJlkyKTsKKyAgRm9ybU5lYXJlbmRG
cmFtZSh4WzBdLCAmWDIsICZFMiwgJlkyKTsKICAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgRVJMRSBp
cyBub3QgaW1tZWRpYXRlbHkgZGVjcmVhc2VkIGR1cmluZyBuZWFyZW5kCiAgIC8vIGFjdGl2aXR5
LgogICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDUwOyArK2spIHsKLSAgICBlc3RpbWF0b3IuVXBk
YXRlKFgyLCBZMiwgRTIsIHRydWUsIHRydWUpOworICAgIHJlbmRlcl9kZWxheV9idWZmZXItPklu
c2VydCh4KTsKKyAgICByZW5kZXJfZGVsYXlfYnVmZmVyLT5QcmVwYXJlQ2FwdHVyZVByb2Nlc3Np
bmcoKTsKKyAgICBlc3RpbWF0b3IuVXBkYXRlKCpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5k
ZXJCdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9u
c2UsIFgyLCBZMiwgRTIsIHRydWUsIHRydWUpOwogICB9CiAgIFZlcmlmeUVybGUoZXN0aW1hdG9y
LkVybGUoKSwgc3RkOjpwb3coMi5mLCBlc3RpbWF0b3IuRnVsbGJhbmRFcmxlTG9nMigpKSwKLSAg
ICAgICAgICAgICBrTWF4RXJsZUxmLCBrTWF4RXJsZUhmKTsKKyAgICAgICAgICAgICBjb25maWcu
ZXJsZS5tYXhfbCwgY29uZmlnLmVybGUubWF4X2gpOwogfQogCiBURVNUKEVybGVFc3RpbWF0b3Is
IFZlcmlmeUVybGVUcmFja2luZ09uT25zZXRzKSB7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4gWDI7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVz
MT4gRTI7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gWTI7CisgIEVj
aG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8Zmxv
YXQ+PiB4KDMsIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXplLCAwLmYpKTsKKyAgc3RkOjp2
ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPj4gZmlsdGVyX2ZyZXF1
ZW5jeV9yZXNwb25zZSgKKyAgICAgIGNvbmZpZy5maWx0ZXIubWFpbi5sZW5ndGhfYmxvY2tzKTsK
KworICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZm
ZXIoCisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKKworICBH
ZXRGaWx0ZXJGcmVxKGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsIGNvbmZpZy5kZWxheS5kZWxh
eV9oZWFkcm9vbV9ibG9ja3MpOworCisgIEVybGVFc3RpbWF0b3IgZXN0aW1hdG9yKDAsIGNvbmZp
Zyk7CiAKLSAgRXJsZUVzdGltYXRvciBlc3RpbWF0b3IoMCwga01pbkVybGUsIGtNYXhFcmxlTGYs
IGtNYXhFcmxlSGYpOworICBGb3JtRmFyZW5kVGltZUZyYW1lKHhbMF0pOworICByZW5kZXJfZGVs
YXlfYnVmZmVyLT5JbnNlcnQoeCk7CisgIHJlbmRlcl9kZWxheV9idWZmZXItPlByZXBhcmVDYXB0
dXJlUHJvY2Vzc2luZygpOwogCiAgIGZvciAoc2l6ZV90IGJ1cnN0ID0gMDsgYnVyc3QgPCAyMDsg
KytidXJzdCkgewotICAgIEZvcm1GYXJlbmRGcmFtZSgmWDIsICZFMiwgJlkyLCBrVHJ1ZUVybGVP
bnNldHMpOworICAgIEZvcm1GYXJlbmRGcmFtZSgqcmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVu
ZGVyQnVmZmVyKCksICZYMiwgJkUyLCAmWTIsCisgICAgICAgICAgICAgICAgICAgIGtUcnVlRXJs
ZU9uc2V0cyk7CiAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAxMDsgKytrKSB7Ci0gICAgICBl
c3RpbWF0b3IuVXBkYXRlKFgyLCBZMiwgRTIsIHRydWUsIHRydWUpOworICAgICAgcmVuZGVyX2Rl
bGF5X2J1ZmZlci0+SW5zZXJ0KHgpOworICAgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+UHJlcGFy
ZUNhcHR1cmVQcm9jZXNzaW5nKCk7CisgICAgICBlc3RpbWF0b3IuVXBkYXRlKCpyZW5kZXJfZGVs
YXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgZmls
dGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwgWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgfQot
ICAgIEZvcm1GYXJlbmRGcmFtZSgmWDIsICZFMiwgJlkyLCBrVHJ1ZUVybGUpOworICAgIEZvcm1G
YXJlbmRGcmFtZSgqcmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksICZYMiwg
JkUyLCAmWTIsCisgICAgICAgICAgICAgICAgICAgIGtUcnVlRXJsZSk7CiAgICAgZm9yIChzaXpl
X3QgayA9IDA7IGsgPCAyMDA7ICsraykgewotICAgICAgZXN0aW1hdG9yLlVwZGF0ZShYMiwgWTIs
IEUyLCB0cnVlLCB0cnVlKTsKKyAgICAgIHJlbmRlcl9kZWxheV9idWZmZXItPkluc2VydCh4KTsK
KyAgICAgIHJlbmRlcl9kZWxheV9idWZmZXItPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpOwor
ICAgICAgZXN0aW1hdG9yLlVwZGF0ZSgqcmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVm
ZmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2Us
IFgyLCBZMiwgRTIsIHRydWUsIHRydWUpOwogICAgIH0KLSAgICBGb3JtTmVhcmVuZEZyYW1lKCZY
MiwgJkUyLCAmWTIpOworICAgIEZvcm1OZWFyZW5kRnJhbWUoeFswXSwgJlgyLCAmRTIsICZZMik7
CiAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAzMDA7ICsraykgewotICAgICAgZXN0aW1hdG9y
LlVwZGF0ZShYMiwgWTIsIEUyLCB0cnVlLCB0cnVlKTsKKyAgICAgIHJlbmRlcl9kZWxheV9idWZm
ZXItPkluc2VydCh4KTsKKyAgICAgIHJlbmRlcl9kZWxheV9idWZmZXItPlByZXBhcmVDYXB0dXJl
UHJvY2Vzc2luZygpOworICAgICAgZXN0aW1hdG9yLlVwZGF0ZSgqcmVuZGVyX2RlbGF5X2J1ZmZl
ci0+R2V0UmVuZGVyQnVmZmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9mcmVx
dWVuY3lfcmVzcG9uc2UsIFgyLCBZMiwgRTIsIHRydWUsIHRydWUpOwogICAgIH0KICAgfQotICBW
ZXJpZnlFcmxlQmFuZHMoZXN0aW1hdG9yLkVybGVPbnNldHMoKSwga01pbkVybGUsIGtNaW5Fcmxl
KTsKLSAgRm9ybU5lYXJlbmRGcmFtZSgmWDIsICZFMiwgJlkyKTsKKyAgVmVyaWZ5RXJsZUJhbmRz
KGVzdGltYXRvci5FcmxlT25zZXRzKCksIGNvbmZpZy5lcmxlLm1pbiwgY29uZmlnLmVybGUubWlu
KTsKKyAgRm9ybU5lYXJlbmRGcmFtZSh4WzBdLCAmWDIsICZFMiwgJlkyKTsKICAgZm9yIChzaXpl
X3QgayA9IDA7IGsgPCAxMDAwOyBrKyspIHsKLSAgICBlc3RpbWF0b3IuVXBkYXRlKFgyLCBZMiwg
RTIsIHRydWUsIHRydWUpOworICAgIGVzdGltYXRvci5VcGRhdGUoKnJlbmRlcl9kZWxheV9idWZm
ZXItPkdldFJlbmRlckJ1ZmZlcigpLAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1
ZW5jeV9yZXNwb25zZSwgWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CiAgIH0KICAgLy8gVmVyaWZp
ZXMgdGhhdCBkdXJpbmcgbmUgYWN0aXZpdHksIEVybGUgY29udmVyZ2VzIHRvIHRoZSBFcmxlIGZv
ciBvbnNldHMuCiAgIFZlcmlmeUVybGUoZXN0aW1hdG9yLkVybGUoKSwgc3RkOjpwb3coMi5mLCBl
c3RpbWF0b3IuRnVsbGJhbmRFcmxlTG9nMigpKSwKLSAgICAgICAgICAgICBrTWluRXJsZSwga01p
bkVybGUpOworICAgICAgICAgICAgIGNvbmZpZy5lcmxlLm1pbiwgY29uZmlnLmVybGUubWluKTsK
IH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
ZmZ0X2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2J1ZmZlci5oCmluZGV4IDQ3ZWRlNDE4
MjVjZmMxYjYzNTVmOWIwOTVmMTUyZjY0YjIzZDQwM2IuLjlmODFhOTEwYThmYjcwOTRmODdkMDUx
NWFhMmJhZjMwZTFkODA0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9idWZmZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfYnVmZmVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNp
Zm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRkZUX0JVRkZFUl9IXwogI2RlZmlu
ZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19GRlRfQlVGRkVSX0hfCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9mZnRfZGF0YS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
ZmlsdGVyX2FuYWx5emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmlsdGVyX2FuYWx5emVyLmNjCmlu
ZGV4IDc5MGNiMWU4YjUyZDZiZmYxODdiNGJkZDQwMjAxOWNmN2ZhMWVkNjguLjViODkwZDc0NzQ2
YzlkZTFiY2NmYzVmMmFlMzEzNDgwM2JjMzFiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2ZpbHRlcl9hbmFseXplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9maWx0ZXJfYW5hbHl6ZXIu
Y2MKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlIDxudW1lcmljPgogCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9maWx0ZXJfYW5hbHl6ZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2ZpbHRlcl9hbmFseXplci5oCmluZGV4IDQ3ZTk1MzM2NjYyMWRjMjM4OTMyNzlmNWQ3ZWI0
NWNjYTY2Njk4OGMuLjk5YTBlMjU5NzM3NzIzNGFlMjE5MDgxYWE4ZDMzZTEwZjk3ODU1MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZpbHRlcl9hbmFseXplci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2ZpbHRlcl9hbmFseXplci5oCkBAIC0xMSwyMCArMTEsMjAgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRklMVEVSX0FOQUxZWkVSX0hfCiAjZGVmaW5lIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0ZJTFRFUl9BTkFMWVpFUl9IXwogCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRl
ICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNf
Y29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19j
b21tb24uaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jYXNjYWRl
ZF9iaXF1YWRfZmlsdGVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmVuZGVyX2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNsYXNzIEFwbURhdGFEdW1wZXI7CitjbGFzcyBS
ZW5kZXJCdWZmZXI7CiAKIC8vIENsYXNzIGZvciBhbmFseXppbmcgdGhlIHByb3BlcnRpZXMgb2Yg
YW4gYWRhcHRpdmUgZmlsdGVyLgogY2xhc3MgRmlsdGVyQW5hbHl6ZXIgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvZnJhbWVfYmxvY2tlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZyYW1lX2Js
b2NrZXIuY2MKaW5kZXggMGEwYzBlMmZhZWE1OTkzMDg2Mzc2MzQyYWE4ZGYzZGU2OWM5YmVkOS4u
Y2ExMjJlNWViYmRlZThhNzlhYWI3N2JjYTBkZTU5OTE2NjU4NmIxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZnJhbWVfYmxvY2tlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mcmFtZV9i
bG9ja2VyLmNjCkBAIC0xMCw4ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9mcmFtZV9ibG9ja2VyLmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0K
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Z1bGxiYW5kX2VybGVfZXN0aW1hdG9yLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3IuY2MKaW5kZXggZGI5YmU3YzEwNGU5Njll
NTBiMjgxMWRhYzYwMzMxNzRkMWJiZmFhNS4uNzg5M2I5N2IzYTI3YWVlNjY3M2E0M2EwOTQ4OWEx
MzdmNmQ1NjYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZnVsbGJhbmRfZXJsZV9lc3Rp
bWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3IuY2MK
QEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2Fm
ZV9taW5tYXguaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0yNSw3ICsyNiw3IEBAIG5hbWVz
cGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKIGNvbnN0ZXhwciBmbG9hdCBrRXBzaWxvbiA9IDFl
LTNmOwogY29uc3RleHByIGZsb2F0IGtYMkJhbmRFbmVyZ3lUaHJlc2hvbGQgPSA0NDAxNTA2OC4w
ZjsKLWNvbnN0ZXhwciBpbnQga0VybGVIb2xkID0gMTAwOworY29uc3RleHByIGludCBrQmxvY2tz
VG9Ib2xkRXJsZSA9IDEwMDsKIGNvbnN0ZXhwciBpbnQga1BvaW50c1RvQWNjdW11bGF0ZSA9IDY7
CiB9ICAvLyBuYW1lc3BhY2UKIApAQCAtNTQsNyArNTUsNyBAQCB2b2lkIEZ1bGxCYW5kRXJsZUVz
dGltYXRvcjo6VXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwKICAgICAgIGNv
bnN0IGZsb2F0IFkyX3N1bSA9IHN0ZDo6YWNjdW11bGF0ZShZMi5iZWdpbigpLCBZMi5lbmQoKSwg
MC4wZik7CiAgICAgICBjb25zdCBmbG9hdCBFMl9zdW0gPSBzdGQ6OmFjY3VtdWxhdGUoRTIuYmVn
aW4oKSwgRTIuZW5kKCksIDAuMGYpOwogICAgICAgaWYgKGluc3RhbnRhbmVvdXNfZXJsZV8uVXBk
YXRlKFkyX3N1bSwgRTJfc3VtKSkgewotICAgICAgICBob2xkX2NvdW50ZXJfdGltZV9kb21haW5f
ID0ga0VybGVIb2xkOworICAgICAgICBob2xkX2NvdW50ZXJfdGltZV9kb21haW5fID0ga0Jsb2Nr
c1RvSG9sZEVybGU7CiAgICAgICAgIGVybGVfdGltZV9kb21haW5fbG9nMl8gKz0KICAgICAgICAg
ICAgIDAuMWYgKiAoKGluc3RhbnRhbmVvdXNfZXJsZV8uR2V0SW5zdEVybGVMb2cyKCkudmFsdWUo
KSkgLQogICAgICAgICAgICAgICAgICAgICBlcmxlX3RpbWVfZG9tYWluX2xvZzJfKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3VwZGF0ZV9nYWluLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvbWFpbl9maWx0ZXJfdXBkYXRlX2dhaW4uY2MKaW5kZXggNGY0OGNkNDc0ODBiMmI2
MGYyOTczOGMwMGQ2NWM2OWVlYjFmYTA1YS4uZWY4N2QxNDJkYjFmYzUxOWI4YmE4NTg5NjQ3NzEx
N2NhZmVhMjI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWFpbl9maWx0ZXJfdXBkYXRl
X2dhaW4uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWFpbl9maWx0ZXJfdXBkYXRlX2dhaW4uY2MK
QEAgLTEzLDcgKzEzLDEyIEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CiAKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZGFwdGl2
ZV9maXJfZmlsdGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9l
Y2hvX3BhdGhfdmFyaWFiaWxpdHkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9mZnRfZGF0YS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2F0b21pY29wcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpAQCAtMTI3LDcg
KzEzMiwxMCBAQCB2b2lkIE1haW5GaWx0ZXJVcGRhdGVHYWluOjpDb21wdXRlKAogICAgICAgICAg
ICAgICAgICBIX2Vycm9yX2luY3JlYXNlLmJlZ2luKCksIHN0ZDo6bXVsdGlwbGllczxmbG9hdD4o
KSk7CiAgIHN0ZDo6dHJhbnNmb3JtKEhfZXJyb3JfLmJlZ2luKCksIEhfZXJyb3JfLmVuZCgpLCBI
X2Vycm9yX2luY3JlYXNlLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgIEhfZXJyb3JfLmJlZ2lu
KCksIFsmXShmbG9hdCBhLCBmbG9hdCBiKSB7Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWF4KGEgKyBiLCBjdXJyZW50X2NvbmZpZ18uZXJyb3JfZmxvb3IpOworICAgICAgICAgICAg
ICAgICAgIGZsb2F0IGVycm9yID0gYSArIGI7CisgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBz
dGQ6Om1heChlcnJvciwgY3VycmVudF9jb25maWdfLmVycm9yX2Zsb29yKTsKKyAgICAgICAgICAg
ICAgICAgICBlcnJvciA9IHN0ZDo6bWluKGVycm9yLCBjdXJyZW50X2NvbmZpZ18uZXJyb3JfY2Vp
bCk7CisgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICAgICAgICAgICB9
KTsKIAogICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfbWFpbl9nYWluX0hfZXJyb3IiLCBI
X2Vycm9yXyk7CkBAIC0xNTMsNiArMTYxLDkgQEAgdm9pZCBNYWluRmlsdGVyVXBkYXRlR2Fpbjo6
VXBkYXRlQ3VycmVudENvbmZpZygpIHsKICAgICAgIGN1cnJlbnRfY29uZmlnXy5lcnJvcl9mbG9v
ciA9CiAgICAgICAgICAgYXZlcmFnZShvbGRfdGFyZ2V0X2NvbmZpZ18uZXJyb3JfZmxvb3IsIHRh
cmdldF9jb25maWdfLmVycm9yX2Zsb29yLAogICAgICAgICAgICAgICAgICAgY2hhbmdlX2ZhY3Rv
cik7CisgICAgICBjdXJyZW50X2NvbmZpZ18uZXJyb3JfY2VpbCA9CisgICAgICAgICAgYXZlcmFn
ZShvbGRfdGFyZ2V0X2NvbmZpZ18uZXJyb3JfY2VpbCwgdGFyZ2V0X2NvbmZpZ18uZXJyb3JfY2Vp
bCwKKyAgICAgICAgICAgICAgICAgIGNoYW5nZV9mYWN0b3IpOwogICAgICAgY3VycmVudF9jb25m
aWdfLm5vaXNlX2dhdGUgPQogICAgICAgICAgIGF2ZXJhZ2Uob2xkX3RhcmdldF9jb25maWdfLm5v
aXNlX2dhdGUsIHRhcmdldF9jb25maWdfLm5vaXNlX2dhdGUsCiAgICAgICAgICAgICAgICAgICBj
aGFuZ2VfZmFjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3Vw
ZGF0ZV9nYWluLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbi5oCmlu
ZGV4IDUyNWI1MjI3OWM0NmFlNmIwZWU4MzIzZWZiNGU0YzE1YThhZTA3NWIuLjg5MmZmNjg5YTQ3
MGQzMDQ0NWFmNjI4MTQwNDRjMjFhNmFlY2Q1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L21haW5fZmlsdGVyX3VwZGF0ZV9nYWluLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWFpbl9maWx0
ZXJfdXBkYXRlX2dhaW4uaApAQCAtMTEsMjAgKzExLDIyIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BRUMzX01BSU5fRklMVEVSX1VQREFURV9HQUlOX0hfCiAjZGVmaW5lIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX01BSU5fRklMVEVSX1VQREFURV9HQUlOX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxtZW1vcnk+
Ci0jaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVy
M19jb25maWcuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZGFw
dGl2ZV9maXJfZmlsdGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvYWVjM19jb21tb24uaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9lY2hvX3BhdGhfdmFyaWFiaWxpdHkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5emVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXQuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBB
ZGFwdGl2ZUZpckZpbHRlcjsKIGNsYXNzIEFwbURhdGFEdW1wZXI7CitzdHJ1Y3QgRWNob1BhdGhW
YXJpYWJpbGl0eTsKK3N0cnVjdCBGZnREYXRhOworY2xhc3MgUmVuZGVyU2lnbmFsQW5hbHl6ZXI7
CitzdHJ1Y3QgU3VidHJhY3Rvck91dHB1dDsKIAogLy8gUHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBm
b3IgIGNvbXB1dGluZyB0aGUgYWRhcHRpdmUgZ2FpbiBmb3IgdGhlIG1haW4gZmlsdGVyLgogY2xh
c3MgTWFpbkZpbHRlclVwZGF0ZUdhaW4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWFp
bl9maWx0ZXJfdXBkYXRlX2dhaW5fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2Zp
bHRlcl91cGRhdGVfZ2Fpbl91bml0dGVzdC5jYwppbmRleCA4YzQ0YWUwNjRlMjEyMmU5ZTEyOGE3
ZWY1ZDg5ZWNkNDllNjgxY2U5Li4wOTNiMTk0NzM2Zjg2ZGNhZjM1YzlhMzg3NTA2N2M1OGEyYjI0
ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbl91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbl91
bml0dGVzdC5jYwpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFJ1bkZpbHRlclVwZGF0ZVRlc3QoaW50
IG51bV9ibG9ja3NfdG9fcHJvY2VzcywKICAgY29uZmlnLmRlbGF5Lm1pbl9lY2hvX3BhdGhfZGVs
YXlfYmxvY2tzID0gMDsKICAgY29uZmlnLmRlbGF5LmRlZmF1bHRfZGVsYXkgPSAxOwogICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAg
ICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgUmVuZGVyRGVs
YXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIEFlY1N0YXRlIGFlY19zdGF0ZShjb25m
aWcpOwogICBSZW5kZXJTaWduYWxBbmFseXplciByZW5kZXJfc2lnbmFsX2FuYWx5emVyKGNvbmZp
Zyk7CiAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IGRlbGF5X2VzdGltYXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9tYXRjaGVkX2ZpbHRlci5jYwppbmRleCA2NzQ0YmQ1ODEyYTBjNzVlM2RjMjUzNGU5NGU2MDA3
MTgxOTQ1NGI4Li43NTcyMTlkNTJjMjJiMjJmOTNiOWVkOTJkMDgyOTE4MzFiNDUwMWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9tYXRjaGVkX2ZpbHRlci5jYwpAQCAtMTksMTAgKzE5LDE0IEBACiAjaW5jbHVkZSA8ZW1t
aW50cmluLmg+CiAjZW5kaWYKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGRl
Zj4KKyNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgogI2lu
Y2x1ZGUgPG51bWVyaWM+CiAKLSNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2Nv
bmZpZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1w
bGVkX3JlbmRlcl9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
bG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L21hdGNoZWRfZmlsdGVyLmgKaW5kZXggMmVmNDgyODZkNzllZTYyMjk2NDJiMjFhMDgwZDk0MzMx
NWMwZjYwOC4uMmE2NTMzOWE0Y2JmZWZlM2QxYjAyYjE4N2ZhMWQxYjBjMjgwODRkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9tYXRjaGVkX2ZpbHRlci5oCkBAIC0xMSwxOCArMTEsMTkgQEAKICNpZm5kZWYgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0FFQzNfTUFUQ0hFRF9GSUxURVJfSF8KICNkZWZpbmUgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0FFQzNfTUFUQ0hFRF9GSUxURVJfSF8KIAotI2luY2x1ZGUgPGFycmF5
PgotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2Fy
cmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMz
X2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25z
YW1wbGVkX3JlbmRlcl9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CisKK2NsYXNzIEFwbURhdGFEdW1wZXI7CitzdHJ1Y3QgRG93bnNhbXBsZWRSZW5kZXJC
dWZmZXI7CisKIG5hbWVzcGFjZSBhZWMzIHsKIAogI2lmIGRlZmluZWQoV0VCUlRDX0hBU19ORU9O
KQpAQCAtNjUsNyArNjYsNiBAQCB2b2lkIE1hdGNoZWRGaWx0ZXJDb3JlKHNpemVfdCB4X3N0YXJ0
X2luZGV4LAogCiB9ICAvLyBuYW1lc3BhY2UgYWVjMwogCi1jbGFzcyBBcG1EYXRhRHVtcGVyOwog
CiAvLyBQcm9kdWNlcyByZWN1cnNpdmVseSB1cGRhdGVkIGNyb3NzLWNvcnJlbGF0aW9uIGVzdGlt
YXRlcyBmb3Igc2V2ZXJhbCBzaWduYWwKIC8vIHNoaWZ0cyB3aGVyZSB0aGUgaW50cmEtc2hpZnQg
c3BhY2luZyBpcyB1bmlmb3JtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9m
aWx0ZXJfbGFnX2FnZ3JlZ2F0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlcl9s
YWdfYWdncmVnYXRvci5jYwppbmRleCA3YTAzZTYwZDhiZmQ5NDQyOGI0YTM1MDdkYzkyZjEwNzhi
ZGE0MDcxLi5mNTk1MjVlZWU5ZTkwMWVjM2IyYTQ0MDI4ODllYWYxMmFiODI4Nzc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRvci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRvci5jYwpAQCAtOSw3
ICs5LDExIEBACiAgKi8KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9t
YXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRvci5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPGl0ZXJhdG9yPgorCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yNywxMSArMzEsMTMgQEAgTWF0Y2hlZEZpbHRl
ckxhZ0FnZ3JlZ2F0b3I6Ok1hdGNoZWRGaWx0ZXJMYWdBZ2dyZWdhdG9yKAogCiBNYXRjaGVkRmls
dGVyTGFnQWdncmVnYXRvcjo6fk1hdGNoZWRGaWx0ZXJMYWdBZ2dyZWdhdG9yKCkgPSBkZWZhdWx0
OwogCi12b2lkIE1hdGNoZWRGaWx0ZXJMYWdBZ2dyZWdhdG9yOjpSZXNldCgpIHsKK3ZvaWQgTWF0
Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3I6OlJlc2V0KGJvb2wgaGFyZF9yZXNldCkgewogICBzdGQ6
OmZpbGwoaGlzdG9ncmFtXy5iZWdpbigpLCBoaXN0b2dyYW1fLmVuZCgpLCAwKTsKICAgaGlzdG9n
cmFtX2RhdGFfLmZpbGwoMCk7CiAgIGhpc3RvZ3JhbV9kYXRhX2luZGV4XyA9IDA7Ci0gIHNpZ25p
ZmljYW50X2NhbmRpZGF0ZV9mb3VuZF8gPSBmYWxzZTsKKyAgaWYgKGhhcmRfcmVzZXQpIHsKKyAg
ICBzaWduaWZpY2FudF9jYW5kaWRhdGVfZm91bmRfID0gZmFsc2U7CisgIH0KIH0KIAogYWJzbDo6
b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gTWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3I6OkFnZ3Jl
Z2F0ZSgKQEAgLTc3LDkgKzgzLDEzIEBAIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IE1h
dGNoZWRGaWx0ZXJMYWdBZ2dyZWdhdG9yOjpBZ2dyZWdhdGUoCiAgICAgaWYgKGhpc3RvZ3JhbV9b
Y2FuZGlkYXRlXSA+IHRocmVzaG9sZHNfLmNvbnZlcmdlZCB8fAogICAgICAgICAoaGlzdG9ncmFt
X1tjYW5kaWRhdGVdID4gdGhyZXNob2xkc18uaW5pdGlhbCAmJgogICAgICAgICAgIXNpZ25pZmlj
YW50X2NhbmRpZGF0ZV9mb3VuZF8pKSB7Ci0gICAgICByZXR1cm4gRGVsYXlFc3RpbWF0ZShEZWxh
eUVzdGltYXRlOjpRdWFsaXR5OjprUmVmaW5lZCwgY2FuZGlkYXRlKTsKKyAgICAgIERlbGF5RXN0
aW1hdGU6OlF1YWxpdHkgcXVhbGl0eSA9IHNpZ25pZmljYW50X2NhbmRpZGF0ZV9mb3VuZF8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERlbGF5RXN0aW1hdGU6
OlF1YWxpdHk6OmtSZWZpbmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiBEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprQ29hcnNlOworICAgICAgcmV0dXJuIERl
bGF5RXN0aW1hdGUocXVhbGl0eSwgY2FuZGlkYXRlKTsKICAgICB9CiAgIH0KKwogICByZXR1cm4g
YWJzbDo6bnVsbG9wdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9m
aWx0ZXJfbGFnX2FnZ3JlZ2F0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX2xh
Z19hZ2dyZWdhdG9yLmgKaW5kZXggYzU3MDUxYWE2ODVmMzM3NGE0MDhlOWQ1MWMyZGY2ZjcxYTlj
MzhkOC4uZDdmMzRhZWQ2MDczNGJmNDE1MmJiYzM3NmMyNmQ1YjdmOTIzMDY4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXJfbGFnX2FnZ3JlZ2F0b3IuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRvci5oCkBAIC0zNCw3ICsz
NCw3IEBAIGNsYXNzIE1hdGNoZWRGaWx0ZXJMYWdBZ2dyZWdhdG9yIHsKICAgfk1hdGNoZWRGaWx0
ZXJMYWdBZ2dyZWdhdG9yKCk7CiAKICAgLy8gUmVzZXRzIHRoZSBhZ2dyZWdhdG9yLgotICB2b2lk
IFJlc2V0KCk7CisgIHZvaWQgUmVzZXQoYm9vbCBoYXJkX3Jlc2V0KTsKIAogICAvLyBBZ2dyZWdh
dGVzIHRoZSBwcm92aWRlZCBsYWcgZXN0aW1hdGVzLgogICBhYnNsOjpvcHRpb25hbDxEZWxheUVz
dGltYXRlPiBBZ2dyZWdhdGUoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2Zp
bHRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX3VuaXR0ZXN0
LmNjCmluZGV4IDE2YjYwM2ExM2ZlMzdkYWVjNjkwZTljOTM5YmE1ZDJlY2Y0NjgxNGYuLjBjMTcx
MTg5NGI0NGYyMTQ1OTlmNGFjMTFlYzVkN2FmZTQzMDRmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL21hdGNoZWRfZmlsdGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21h
dGNoZWRfZmlsdGVyX3VuaXR0ZXN0LmNjCkBAIC0xNjUsNyArMTY1LDcgQEAgVEVTVChNYXRjaGVk
RmlsdGVyLCBMYWdFc3RpbWF0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25m
aWcuZGVsYXkuZGVsYXlfY2FuZGlkYXRlX2RldGVjdGlvbl90aHJlc2hvbGQpOwogCiAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0g
ICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgICAg
ICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKIAogICAgICAgLy8gQW5h
bHl6ZSB0aGUgY29ycmVsYXRpb24gYmV0d2VlbiByZW5kZXIgYW5kIGNhcHR1cmUuCiAgICAgICBm
b3IgKHNpemVfdCBrID0gMDsgayA8ICg2MDAgKyBkZWxheV9zYW1wbGVzIC8gc3ViX2Jsb2NrX3Np
emUpOyArK2spIHsKQEAgLTI2MSw3ICsyNjEsNyBAQCBURVNUKE1hdGNoZWRGaWx0ZXIsIExhZ05v
dFJlbGlhYmxlRm9yVW5jb3JyZWxhdGVkUmVuZGVyQW5kQ2FwdHVyZSkgewogICAgIHN0ZDo6Zmls
bChjYXB0dXJlLmJlZ2luKCksIGNhcHR1cmUuZW5kKCksIDAuZik7CiAgICAgQXBtRGF0YUR1bXBl
ciBkYXRhX2R1bXBlcigwKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+
IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUo
Y29uZmlnLCAzKSk7CisgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywg
MykpOwogICAgIE1hdGNoZWRGaWx0ZXIgZmlsdGVyKCZkYXRhX2R1bXBlciwgRGV0ZWN0T3B0aW1p
emF0aW9uKCksIHN1Yl9ibG9ja19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgIGtXaW5k
b3dTaXplU3ViQmxvY2tzLCBrTnVtTWF0Y2hlZEZpbHRlcnMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAga0FsaWdubWVudFNoaWZ0U3ViQmxvY2tzLCAxNTAsCkBAIC0zMDYsNyArMzA2LDcgQEAg
VEVTVChNYXRjaGVkRmlsdGVyLCBMYWdOb3RVcGRhdGVkRm9yTG93TGV2ZWxSZW5kZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGVsYXkuZGVsYXlfZXN0aW1hdGVfc21vb3Ro
aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kZWxheS5kZWxheV9jYW5kaWRh
dGVfZGV0ZWN0aW9uX3RocmVzaG9sZCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5
QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6
Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihF
Y2hvQ2FuY2VsbGVyM0NvbmZpZygpLCAzKSk7CiAgICAgRGVjaW1hdG9yIGNhcHR1cmVfZGVjaW1h
dG9yKGRvd25fc2FtcGxpbmdfZmFjdG9yKTsKIAogICAgIC8vIEFuYWx5emUgdGhlIGNvcnJlbGF0
aW9uIGJldHdlZW4gcmVuZGVyIGFuZCBjYXB0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvbWF0cml4X2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIuY2MKaW5k
ZXggZjk1ZTdmNDY5MDJlMWYwNWUzMWEwNDVhYTdiOTI3NDIyM2NhNWI4YS4uYmQ2ZGFlYTk1Yzkw
NWNhOWUxNzhmOGI1NjIyYzhiMGFjOThmYTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
bWF0cml4X2J1ZmZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRyaXhfYnVmZmVyLmNjCkBA
IC0xMCw3ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9tYXRyaXhfYnVmZmVyLmgiCiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIuaAppbmRleCA2NGFhYzBhNGY2NWU1NzdiYjFlYmZk
NzhhZjZlMjJiMmQxZTQ0ODJlLi5jYWUzNzU5ZjkyMDg0YTNkOWUxYzgwNzYwNGRhOGYzOWE4YmYy
MThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRyaXhfYnVmZmVyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZlci5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX01BVFJJWF9CVUZGRVJfSF8KICNkZWZpbmUgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfTUFUUklYX0JVRkZFUl9IXwogCisjaW5jbHVkZSA8
c3RkZGVmLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tb2NrL21vY2tfcmVuZGVyX2RlbGF5X2Nv
bnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vY2svbW9ja19yZW5kZXJfZGVsYXlfY29udHJv
bGxlci5oCmluZGV4IGVkNTk3MWNkYTBkMzZjY2I2MTZmNjBlYWYyNmFhNmQ4MmM3ZjY5YzIuLjVm
NjUyZTE5MmY5N2ExZDhlZGRlZjA1NTk3YmE0NTk4MjkyYzljZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL21vY2svbW9ja19yZW5kZXJfZGVsYXlfY29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL21vY2svbW9ja19yZW5kZXJfZGVsYXlfY29udHJvbGxlci5oCkBAIC0yNSw3ICsy
NSw3IEBAIGNsYXNzIE1vY2tSZW5kZXJEZWxheUNvbnRyb2xsZXIgOiBwdWJsaWMgUmVuZGVyRGVs
YXlDb250cm9sbGVyIHsKICAgTW9ja1JlbmRlckRlbGF5Q29udHJvbGxlcigpOwogICB2aXJ0dWFs
IH5Nb2NrUmVuZGVyRGVsYXlDb250cm9sbGVyKCk7CiAKLSAgTU9DS19NRVRIT0QwKFJlc2V0LCB2
b2lkKCkpOworICBNT0NLX01FVEhPRDEoUmVzZXQsIHZvaWQoYm9vbCByZXNldF9kZWxheV9zdGF0
aXN0aWNzKSk7CiAgIE1PQ0tfTUVUSE9EMChMb2dSZW5kZXJDYWxsLCB2b2lkKCkpOwogICBNT0NL
X01FVEhPRDQoR2V0RGVsYXksCiAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxEZWxheUVz
dGltYXRlPigKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgTW9ja1JlbmRlckRlbGF5Q29udHJvbGxl
ciA6IHB1YmxpYyBSZW5kZXJEZWxheUNvbnRyb2xsZXIgewogICAgICAgICAgICAgICAgICAgIHNp
emVfdCByZW5kZXJfZGVsYXlfYnVmZmVyX2RlbGF5LAogICAgICAgICAgICAgICAgICAgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPGludD4mIGVjaG9fcmVtb3Zlcl9kZWxheSwKICAgICAgICAgICAgICAg
ICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY2FwdHVyZSkpOworICBNT0NLX0NPTlNU
X01FVEhPRDAoSGFzQ2xvY2tkcmlmdCwgYm9vbCgpKTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB0
ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tb3ZpbmdfYXZlcmFnZS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL21vdmluZ19hdmVyYWdlLmNjCmluZGV4IGU5ZDY0ZTZiMzI2MzI2NjBmNWEwNDUz
MzUyMjM0MTk0ZWY4NzYxMzUuLjdhODFlZTg5ZWE2N2UwZGM4ZTM5NjI2Y2I2MjU5MTkzYTQ3Mzhm
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vdmluZ19hdmVyYWdlLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL21vdmluZ19hdmVyYWdlLmNjCkBAIC0xNCw2ICsxNCw4IEBACiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKKyNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgYWVjMyB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vdmluZ19hdmVyYWdlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9tb3ZpbmdfYXZlcmFnZS5oCmluZGV4IDk0NDk3ZDc4MmM4ZDlkMmFhNDBjMDliMzQ4MjM3Y2Vl
YTBiZDVlNmEuLjBmODU1YmVmZmIwZjUwZTJkMzk2ODAzNzQ4ZTQyZDU2MDE1MzE4N2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vdmluZ19hdmVyYWdlLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvbW92aW5nX2F2ZXJhZ2UuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfQUVDM19NT1ZJTkdfQVZFUkFHRV9IXwogI2RlZmluZSBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfQUVDM19NT1ZJTkdfQVZFUkFHRV9IXwogCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JlbmRlcl9idWZmZXIuaAppbmRleCBkZDY3MjY4ZWZkNzFiYThhOThmZWQyY2Q5MDJmMTZmZTdk
MzkyNTk0Li40YzdjNjBjZjg1N2Q3ZDgzZDQ5YWUxZDMyNDMyZGRkNTIzNGUyZGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
cmVuZGVyX2J1ZmZlci5oCkBAIC0xMSwxNCArMTEsMTcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FFQzNfUkVOREVSX0JVRkZFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfQUVDM19SRU5ERVJfQlVGRkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4K
ICNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dmVjdG9yPgog
CiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2ZmdF9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9mZnRfZGF0YS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL21hdHJpeF9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy92ZWN0b3JfYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyLmNjCmluZGV4IDM3YTIzNzg3MzhjYzVi
ZTMwNjBkM2M0NTYwYzVhZmQ2NDRhNjMyMTMuLjFlYzI3NzkwYTg0MmRiOTVlZDk3OWRhN2E0YTI1
NTliOTQ3MTljOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZm
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5jYwpAQCAtMTAs
MTcgKzEwLDIxIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9y
ZW5kZXJfZGVsYXlfYnVmZmVyLmgiCiAKLSNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxz
dGRsaWIuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPG51bWVyaWM+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVk
ZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FlYzNfZmZ0LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YmxvY2tfcHJvY2Vzc29yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZGVjaW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
ZmZ0X2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Zm
dF9kYXRhLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0cml4
X2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rv
cl9idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9h
cG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCkBAIC0zNSwxNCArMzksNiBAQCBib29sIEVuYWJsZVplcm9FeHRlcm5hbERlbGF5SGVh
ZHJvb20oKSB7CiAgICAgICAiV2ViUlRDLUFlYzNaZXJvRXh0ZXJuYWxEZWxheUhlYWRyb29tS2ls
bFN3aXRjaCIpOwogfQogCi1zaXplX3QgR2V0RG93blNhbXBsaW5nRmFjdG9yKGNvbnN0IEVjaG9D
YW5jZWxsZXIzQ29uZmlnJiBjb25maWcpIHsKLSAgLy8gRG8gbm90IHVzZSBkb3duIHNhbXBsaW5n
IGZhY3RvciA4IGlmIGtpbGwgc3dpdGNoIGlzIHRyaWdnZXJlZC4KLSAgcmV0dXJuIChjb25maWcu
ZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IgPT0gOCAmJgotICAgICAgICAgIGZpZWxkX3RyaWFs
OjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzRG93blNhbXBsaW5nRmFjdG9yOEtpbGxTd2l0Y2giKSkK
LSAgICAgICAgICAgICA/IDQKLSAgICAgICAgICAgICA6IGNvbmZpZy5kZWxheS5kb3duX3NhbXBs
aW5nX2ZhY3RvcjsKLX0KLQogY2xhc3MgUmVuZGVyRGVsYXlCdWZmZXJJbXBsIGZpbmFsIDogcHVi
bGljIFJlbmRlckRlbGF5QnVmZmVyIHsKICBwdWJsaWM6CiAgIFJlbmRlckRlbGF5QnVmZmVySW1w
bChjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLCBzaXplX3QgbnVtX2JhbmRzKTsK
QEAgLTE3Nyw3ICsxNzMsNyBAQCBSZW5kZXJEZWxheUJ1ZmZlckltcGw6OlJlbmRlckRlbGF5QnVm
ZmVySW1wbChjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAogICAgICAgICAgIG5l
dyBBcG1EYXRhRHVtcGVyKHJ0Yzo6QXRvbWljT3BzOjpJbmNyZW1lbnQoJmluc3RhbmNlX2NvdW50
XykpKSwKICAgICAgIG9wdGltaXphdGlvbl8oRGV0ZWN0T3B0aW1pemF0aW9uKCkpLAogICAgICAg
Y29uZmlnXyhjb25maWcpLAotICAgICAgZG93bl9zYW1wbGluZ19mYWN0b3JfKEdldERvd25TYW1w
bGluZ0ZhY3Rvcihjb25maWcpKSwKKyAgICAgIGRvd25fc2FtcGxpbmdfZmFjdG9yXyhjb25maWcu
ZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IpLAogICAgICAgdXNlX3plcm9fZXh0ZXJuYWxfZGVs
YXlfaGVhZHJvb21fKEVuYWJsZVplcm9FeHRlcm5hbERlbGF5SGVhZHJvb20oKSksCiAgICAgICBz
dWJfYmxvY2tfc2l6ZV8oc3RhdGljX2Nhc3Q8aW50Pihkb3duX3NhbXBsaW5nX2ZhY3Rvcl8gPiAw
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBrQmxvY2tTaXpl
IC8gZG93bl9zYW1wbGluZ19mYWN0b3JfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5k
ZXJfZGVsYXlfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyLmgK
aW5kZXggYTZkNjg3NGUzZTQ2OTZiMTA1ZGUwNGE0MDJjMzMyNzE0MTM4NGEzZi4uYmQyNDJmNzQz
ZjliMmEyNDBkZGIyYzZkNzYzNTljODQyZWIzM2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxh
eV9idWZmZXIuaApAQCAtMTIsMTUgKzEyLDEwIEBACiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJP
Q0VTU0lOR19BRUMzX1JFTkRFUl9ERUxBWV9CVUZGRVJfSF8KIAogI2luY2x1ZGUgPHN0ZGRlZi5o
PgotI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKLSNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUg
ImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJfYnVmZmVyLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2RhdGEuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewpAQCAtMzMsMTIgKzI4LDEzIEBAIGNsYXNzIFJlbmRlckRlbGF5QnVmZmVyIHsK
ICAgICBrTm9uZSwKICAgICBrUmVuZGVyVW5kZXJydW4sCiAgICAga1JlbmRlck92ZXJydW4sCi0g
ICAga0FwaUNhbGxTa2V3LAotICAgIGtSZW5kZXJEYXRhTG9zdAorICAgIGtBcGlDYWxsU2tldwog
ICB9OwogCiAgIHN0YXRpYyBSZW5kZXJEZWxheUJ1ZmZlciogQ3JlYXRlKGNvbnN0IEVjaG9DYW5j
ZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBudW1fYmFuZHMpOworICBzdGF0aWMgUmVuZGVyRGVsYXlCdWZmZXIqIENyZWF0ZTIo
Y29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBudW1fYmFuZHMpOwogICB2aXJ0dWFsIH5SZW5kZXJEZWxh
eUJ1ZmZlcigpID0gZGVmYXVsdDsKIAogICAvLyBSZXNldHMgdGhlIGJ1ZmZlciBhbGlnbm1lbnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyMi5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5OTJjNWI4
OTg3NjVmMjUyOWQ5OWEzNTVhODgxY2RhNWY1NmRiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyMi5jYwpAQCAtMCwwICsxLDQ1MyBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxhbGdv
cml0aG0+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8
dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFw
aS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25m
aWcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1v
bi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfZmZ0Lmgi
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZGVjaW1hdG9yLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVy
X2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9i
dWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfZGF0
YS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9idWZm
ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVm
ZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2Rl
bGF5X2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Zl
Y3Rvcl9idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2lu
Zy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
CisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHsKKworY2xhc3MgUmVuZGVyRGVsYXlC
dWZmZXJJbXBsMiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJEZWxheUJ1ZmZlciB7CisgcHVibGljOgor
ICBSZW5kZXJEZWxheUJ1ZmZlckltcGwyKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25m
aWcsIHNpemVfdCBudW1fYmFuZHMpOworICBSZW5kZXJEZWxheUJ1ZmZlckltcGwyKCkgPSBkZWxl
dGU7CisgIH5SZW5kZXJEZWxheUJ1ZmZlckltcGwyKCkgb3ZlcnJpZGU7CisKKyAgdm9pZCBSZXNl
dCgpIG92ZXJyaWRlOworICBCdWZmZXJpbmdFdmVudCBJbnNlcnQoY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjp2ZWN0b3I8ZmxvYXQ+PiYgYmxvY2spIG92ZXJyaWRlOworICBCdWZmZXJpbmdFdmVudCBQ
cmVwYXJlQ2FwdHVyZVByb2Nlc3NpbmcoKSBvdmVycmlkZTsKKyAgYm9vbCBTZXREZWxheShzaXpl
X3QgZGVsYXkpIG92ZXJyaWRlOworICBzaXplX3QgRGVsYXkoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBDb21wdXRlRGVsYXkoKTsgfQorICBzaXplX3QgTWF4RGVsYXkoKSBjb25zdCBvdmVycmlk
ZSB7CisgICAgcmV0dXJuIGJsb2Nrc18uYnVmZmVyLnNpemUoKSAtIDEgLSBidWZmZXJfaGVhZHJv
b21fOworICB9CisgIFJlbmRlckJ1ZmZlciogR2V0UmVuZGVyQnVmZmVyKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gJmVjaG9fcmVtb3Zlcl9idWZmZXJfOyB9CisKKyAgY29uc3QgRG93bnNhbXBsZWRSZW5k
ZXJCdWZmZXImIEdldERvd25zYW1wbGVkUmVuZGVyQnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgewor
ICAgIHJldHVybiBsb3dfcmF0ZV87CisgIH0KKworICBpbnQgQnVmZmVyTGF0ZW5jeSgpIGNvbnN0
OworICBib29sIENhdXNhbERlbGF5KHNpemVfdCBkZWxheSkgY29uc3Qgb3ZlcnJpZGU7CisgIHZv
aWQgU2V0QXVkaW9CdWZmZXJEZWxheShzaXplX3QgZGVsYXlfbXMpIG92ZXJyaWRlOworCisgcHJp
dmF0ZToKKyAgc3RhdGljIGludCBpbnN0YW5jZV9jb3VudF87CisgIHN0ZDo6dW5pcXVlX3B0cjxB
cG1EYXRhRHVtcGVyPiBkYXRhX2R1bXBlcl87CisgIGNvbnN0IEFlYzNPcHRpbWl6YXRpb24gb3B0
aW1pemF0aW9uXzsKKyAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnXzsKKyAgc2l6
ZV90IGRvd25fc2FtcGxpbmdfZmFjdG9yXzsKKyAgY29uc3QgaW50IHN1Yl9ibG9ja19zaXplXzsK
KyAgTWF0cml4QnVmZmVyIGJsb2Nrc187CisgIFZlY3RvckJ1ZmZlciBzcGVjdHJhXzsKKyAgRmZ0
QnVmZmVyIGZmdHNfOworICBhYnNsOjpvcHRpb25hbDxzaXplX3Q+IGRlbGF5XzsKKyAgUmVuZGVy
QnVmZmVyIGVjaG9fcmVtb3Zlcl9idWZmZXJfOworICBEb3duc2FtcGxlZFJlbmRlckJ1ZmZlciBs
b3dfcmF0ZV87CisgIERlY2ltYXRvciByZW5kZXJfZGVjaW1hdG9yXzsKKyAgY29uc3QgQWVjM0Zm
dCBmZnRfOworICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVuZGVyX2RzXzsKKyAgY29uc3QgaW50IGJ1
ZmZlcl9oZWFkcm9vbV87CisgIGJvb2wgbGFzdF9jYWxsX3dhc19yZW5kZXJfID0gZmFsc2U7Cisg
IGludCBudW1fYXBpX2NhbGxzX2luX2Ffcm93XyA9IDA7CisgIGludCBtYXhfb2JzZXJ2ZWRfaml0
dGVyXyA9IDE7CisgIHNpemVfdCBjYXB0dXJlX2NhbGxfY291bnRlcl8gPSAwOworICBzaXplX3Qg
cmVuZGVyX2NhbGxfY291bnRlcl8gPSAwOworICBib29sIHJlbmRlcl9hY3Rpdml0eV8gPSBmYWxz
ZTsKKyAgc2l6ZV90IHJlbmRlcl9hY3Rpdml0eV9jb3VudGVyXyA9IDA7CisgIGFic2w6Om9wdGlv
bmFsPHNpemVfdD4gZXh0ZXJuYWxfYXVkaW9fYnVmZmVyX2RlbGF5XzsKKyAgYm9vbCBleHRlcm5h
bF9hdWRpb19idWZmZXJfZGVsYXlfdmVyaWZpZWRfYWZ0ZXJfcmVzZXRfID0gZmFsc2U7CisgIHNp
emVfdCBtaW5fbGF0ZW5jeV9ibG9ja3NfID0gMDsKKyAgc2l6ZV90IGV4Y2Vzc19yZW5kZXJfZGV0
ZWN0aW9uX2NvdW50ZXJfID0gMDsKKyAgc2l6ZV90IG51bV9iYW5kc187CisKKyAgaW50IE1hcERl
bGF5VG9Ub3RhbERlbGF5KHNpemVfdCBkZWxheSkgY29uc3Q7CisgIGludCBDb21wdXRlRGVsYXko
KSBjb25zdDsKKyAgdm9pZCBBcHBseVRvdGFsRGVsYXkoaW50IGRlbGF5KTsKKyAgdm9pZCBJbnNl
cnRCbG9jayhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+JiBibG9jaywKKyAg
ICAgICAgICAgICAgICAgICBpbnQgcHJldmlvdXNfd3JpdGUpOworICBib29sIERldGVjdEFjdGl2
ZVJlbmRlcihydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4geCkgY29uc3Q7CisgIGJvb2wgRGV0
ZWN0RXhjZXNzUmVuZGVyQmxvY2tzKCk7CisgIHZvaWQgSW5jcmVtZW50V3JpdGVJbmRpY2VzKCk7
CisgIHZvaWQgSW5jcmVtZW50TG93UmF0ZVJlYWRJbmRpY2VzKCk7CisgIHZvaWQgSW5jcmVtZW50
UmVhZEluZGljZXMoKTsKKyAgYm9vbCBSZW5kZXJPdmVycnVuKCk7CisgIGJvb2wgUmVuZGVyVW5k
ZXJydW4oKTsKK307CisKK2ludCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjppbnN0YW5jZV9jb3Vu
dF8gPSAwOworCitSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpSZW5kZXJEZWxheUJ1ZmZlckltcGwy
KAorICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisgICAgc2l6ZV90IG51
bV9iYW5kcykKKyAgICA6IGRhdGFfZHVtcGVyXygKKyAgICAgICAgICBuZXcgQXBtRGF0YUR1bXBl
cihydGM6OkF0b21pY09wczo6SW5jcmVtZW50KCZpbnN0YW5jZV9jb3VudF8pKSksCisgICAgICBv
cHRpbWl6YXRpb25fKERldGVjdE9wdGltaXphdGlvbigpKSwKKyAgICAgIGNvbmZpZ18oY29uZmln
KSwKKyAgICAgIGRvd25fc2FtcGxpbmdfZmFjdG9yXyhjb25maWcuZGVsYXkuZG93bl9zYW1wbGlu
Z19mYWN0b3IpLAorICAgICAgc3ViX2Jsb2NrX3NpemVfKHN0YXRpY19jYXN0PGludD4oZG93bl9z
YW1wbGluZ19mYWN0b3JfID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID8ga0Jsb2NrU2l6ZSAvIGRvd25fc2FtcGxpbmdfZmFjdG9yXworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoga0Jsb2NrU2l6ZSkpLAorICAgICAgYmxv
Y2tzXyhHZXRSZW5kZXJEZWxheUJ1ZmZlclNpemUoZG93bl9zYW1wbGluZ19mYWN0b3JfLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRlbGF5Lm51bV9maWx0
ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmZpbHRl
ci5tYWluLmxlbmd0aF9ibG9ja3MpLAorICAgICAgICAgICAgICBudW1fYmFuZHMsCisgICAgICAg
ICAgICAgIGtCbG9ja1NpemUpLAorICAgICAgc3BlY3RyYV8oYmxvY2tzXy5idWZmZXIuc2l6ZSgp
LCBrRmZ0TGVuZ3RoQnkyUGx1czEpLAorICAgICAgZmZ0c18oYmxvY2tzXy5idWZmZXIuc2l6ZSgp
KSwKKyAgICAgIGRlbGF5Xyhjb25maWdfLmRlbGF5LmRlZmF1bHRfZGVsYXkpLAorICAgICAgZWNo
b19yZW1vdmVyX2J1ZmZlcl8oJmJsb2Nrc18sICZzcGVjdHJhXywgJmZmdHNfKSwKKyAgICAgIGxv
d19yYXRlXyhHZXREb3duU2FtcGxlZEJ1ZmZlclNpemUoZG93bl9zYW1wbGluZ19mYWN0b3JfLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGVsYXkubnVt
X2ZpbHRlcnMpKSwKKyAgICAgIHJlbmRlcl9kZWNpbWF0b3JfKGRvd25fc2FtcGxpbmdfZmFjdG9y
XyksCisgICAgICBmZnRfKCksCisgICAgICByZW5kZXJfZHNfKHN1Yl9ibG9ja19zaXplXywgMC5m
KSwKKyAgICAgIGJ1ZmZlcl9oZWFkcm9vbV8oY29uZmlnLmZpbHRlci5tYWluLmxlbmd0aF9ibG9j
a3MpLAorICAgICAgbnVtX2JhbmRzXyhudW1fYmFuZHMpIHsKKyAgUlRDX0RDSEVDS19FUShibG9j
a3NfLmJ1ZmZlci5zaXplKCksIGZmdHNfLmJ1ZmZlci5zaXplKCkpOworICBSVENfRENIRUNLX0VR
KHNwZWN0cmFfLmJ1ZmZlci5zaXplKCksIGZmdHNfLmJ1ZmZlci5zaXplKCkpOworCisgIFJlc2V0
KCk7Cit9CisKK1JlbmRlckRlbGF5QnVmZmVySW1wbDI6On5SZW5kZXJEZWxheUJ1ZmZlckltcGwy
KCkgPSBkZWZhdWx0OworCisvLyBSZXNldHMgdGhlIGJ1ZmZlciBkZWxheXMgYW5kIGNsZWFycyB0
aGUgcmVwb3J0ZWQgZGVsYXlzLgordm9pZCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpSZXNldCgp
IHsKKyAgbGFzdF9jYWxsX3dhc19yZW5kZXJfID0gZmFsc2U7CisgIG51bV9hcGlfY2FsbHNfaW5f
YV9yb3dfID0gMTsKKyAgbWluX2xhdGVuY3lfYmxvY2tzXyA9IDA7CisgIGV4Y2Vzc19yZW5kZXJf
ZGV0ZWN0aW9uX2NvdW50ZXJfID0gMDsKKworICAvLyBJbml0aWFsaXplIHRoZSByZWFkIGluZGV4
IHRvIG9uZSBzdWItYmxvY2sgYmVmb3JlIHRoZSB3cml0ZSBpbmRleC4KKyAgbG93X3JhdGVfLnJl
YWQgPSBsb3dfcmF0ZV8uT2Zmc2V0SW5kZXgobG93X3JhdGVfLndyaXRlLCBzdWJfYmxvY2tfc2l6
ZV8pOworCisgIC8vIENoZWNrIGZvciBhbnkgZXh0ZXJuYWwgYXVkaW8gYnVmZmVyIGRlbGF5IGFu
ZCB3aGV0aGVyIGl0IGlzIGZlYXNpYmxlLgorICBpZiAoZXh0ZXJuYWxfYXVkaW9fYnVmZmVyX2Rl
bGF5XykgeworICAgIGNvbnN0IHNpemVfdCBoZWFkcm9vbSA9IDI7CisgICAgc2l6ZV90IGF1ZGlv
X2J1ZmZlcl9kZWxheV90b19zZXQ7CisgICAgLy8gTWluaW11bSBkZWxheSBpcyAxIChsaWtlIHRo
ZSBsb3ctcmF0ZSByZW5kZXIgYnVmZmVyKS4KKyAgICBpZiAoKmV4dGVybmFsX2F1ZGlvX2J1ZmZl
cl9kZWxheV8gPD0gaGVhZHJvb20pIHsKKyAgICAgIGF1ZGlvX2J1ZmZlcl9kZWxheV90b19zZXQg
PSAxOworICAgIH0gZWxzZSB7CisgICAgICBhdWRpb19idWZmZXJfZGVsYXlfdG9fc2V0ID0gKmV4
dGVybmFsX2F1ZGlvX2J1ZmZlcl9kZWxheV8gLSBoZWFkcm9vbTsKKyAgICB9CisKKyAgICBhdWRp
b19idWZmZXJfZGVsYXlfdG9fc2V0ID0gc3RkOjptaW4oYXVkaW9fYnVmZmVyX2RlbGF5X3RvX3Nl
dCwgTWF4RGVsYXkoKSk7CisKKyAgICAvLyBXaGVuIGFuIGV4dGVybmFsIGRlbGF5IGVzdGltYXRl
IGlzIGF2YWlsYWJsZSwgdXNlIHRoYXQgZGVsYXkgYXMgdGhlCisgICAgLy8gaW5pdGlhbCByZW5k
ZXIgYnVmZmVyIGRlbGF5LgorICAgIEFwcGx5VG90YWxEZWxheShhdWRpb19idWZmZXJfZGVsYXlf
dG9fc2V0KTsKKyAgICBkZWxheV8gPSBDb21wdXRlRGVsYXkoKTsKKworICAgIGV4dGVybmFsX2F1
ZGlvX2J1ZmZlcl9kZWxheV92ZXJpZmllZF9hZnRlcl9yZXNldF8gPSBmYWxzZTsKKyAgfSBlbHNl
IHsKKyAgICAvLyBJZiBhbiBleHRlcm5hbCBkZWxheSBlc3RpbWF0ZSBpcyBub3QgYXZhaWxhYmxl
LCB1c2UgdGhhdCBkZWxheSBhcyB0aGUKKyAgICAvLyBpbml0aWFsIGRlbGF5LiBTZXQgdGhlIHJl
bmRlciBidWZmZXIgZGVsYXlzIHRvIHRoZSBkZWZhdWx0IGRlbGF5LgorICAgIEFwcGx5VG90YWxE
ZWxheShjb25maWdfLmRlbGF5LmRlZmF1bHRfZGVsYXkpOworCisgICAgLy8gVW5zZXQgdGhlIGRl
bGF5cyB3aGljaCBhcmUgc2V0IGJ5IFNldERlbGF5LgorICAgIGRlbGF5XyA9IGFic2w6Om51bGxv
cHQ7CisgIH0KK30KKworLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBpbnRvIHRoZSByZW5kZXIgYnVm
ZmVycy4KK1JlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVudCBSZW5kZXJEZWxheUJ1ZmZl
ckltcGwyOjpJbnNlcnQoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+
PiYgYmxvY2spIHsKKyAgKytyZW5kZXJfY2FsbF9jb3VudGVyXzsKKyAgaWYgKGRlbGF5Xykgewor
ICAgIGlmICghbGFzdF9jYWxsX3dhc19yZW5kZXJfKSB7CisgICAgICBsYXN0X2NhbGxfd2FzX3Jl
bmRlcl8gPSB0cnVlOworICAgICAgbnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPSAxOworICAgIH0g
ZWxzZSB7CisgICAgICBpZiAoKytudW1fYXBpX2NhbGxzX2luX2Ffcm93XyA+IG1heF9vYnNlcnZl
ZF9qaXR0ZXJfKSB7CisgICAgICAgIG1heF9vYnNlcnZlZF9qaXR0ZXJfID0gbnVtX2FwaV9jYWxs
c19pbl9hX3Jvd187CisgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykKKyAgICAgICAgICAgIDw8
ICJOZXcgbWF4IG51bWJlciBhcGkgaml0dGVyIG9ic2VydmVkIGF0IHJlbmRlciBibG9jayAiCisg
ICAgICAgICAgICA8PCByZW5kZXJfY2FsbF9jb3VudGVyXyA8PCAiOiAgIiA8PCBudW1fYXBpX2Nh
bGxzX2luX2Ffcm93XworICAgICAgICAgICAgPDwgIiBibG9ja3MiOworICAgICAgfQorICAgIH0K
KyAgfQorCisgIC8vIEluY3JlYXNlIHRoZSB3cml0ZSBpbmRpY2VzIHRvIHdoZXJlIHRoZSBuZXcg
YmxvY2tzIHNob3VsZCBiZSB3cml0dGVuLgorICBjb25zdCBpbnQgcHJldmlvdXNfd3JpdGUgPSBi
bG9ja3NfLndyaXRlOworICBJbmNyZW1lbnRXcml0ZUluZGljZXMoKTsKKworICAvLyBBbGxvdyBv
dmVycnVuIGFuZCBkbyBhIHJlc2V0IHdoZW4gcmVuZGVyIG92ZXJydW4gb2NjdXJycyBkdWUgdG8g
bW9yZSByZW5kZXIKKyAgLy8gZGF0YSBiZWluZyBpbnNlcnRlZCB0aGFuIGNhcHR1cmUgZGF0YSBp
cyByZWNlaXZlZC4KKyAgQnVmZmVyaW5nRXZlbnQgZXZlbnQgPQorICAgICAgUmVuZGVyT3ZlcnJ1
bigpID8gQnVmZmVyaW5nRXZlbnQ6OmtSZW5kZXJPdmVycnVuIDogQnVmZmVyaW5nRXZlbnQ6OmtO
b25lOworCisgIC8vIERldGVjdCBhbmQgdXBkYXRlIHJlbmRlciBhY3Rpdml0eS4KKyAgaWYgKCFy
ZW5kZXJfYWN0aXZpdHlfKSB7CisgICAgcmVuZGVyX2FjdGl2aXR5X2NvdW50ZXJfICs9IERldGVj
dEFjdGl2ZVJlbmRlcihibG9ja1swXSkgPyAxIDogMDsKKyAgICByZW5kZXJfYWN0aXZpdHlfID0g
cmVuZGVyX2FjdGl2aXR5X2NvdW50ZXJfID49IDIwOworICB9CisKKyAgLy8gSW5zZXJ0IHRoZSBu
ZXcgcmVuZGVyIGJsb2NrIGludG8gdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4KKyAgSW5zZXJ0Qmxv
Y2soYmxvY2ssIHByZXZpb3VzX3dyaXRlKTsKKworICBpZiAoZXZlbnQgIT0gQnVmZmVyaW5nRXZl
bnQ6OmtOb25lKSB7CisgICAgUmVzZXQoKTsKKyAgfQorCisgIHJldHVybiBldmVudDsKK30KKwor
Ly8gUHJlcGFyZXMgdGhlIHJlbmRlciBidWZmZXJzIGZvciBwcm9jZXNzaW5nIGFub3RoZXIgY2Fw
dHVyZSBibG9jay4KK1JlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVudAorUmVuZGVyRGVs
YXlCdWZmZXJJbXBsMjo6UHJlcGFyZUNhcHR1cmVQcm9jZXNzaW5nKCkgeworICBSZW5kZXJEZWxh
eUJ1ZmZlcjo6QnVmZmVyaW5nRXZlbnQgZXZlbnQgPSBCdWZmZXJpbmdFdmVudDo6a05vbmU7Cisg
ICsrY2FwdHVyZV9jYWxsX2NvdW50ZXJfOworCisgIGlmIChkZWxheV8pIHsKKyAgICBpZiAobGFz
dF9jYWxsX3dhc19yZW5kZXJfKSB7CisgICAgICBsYXN0X2NhbGxfd2FzX3JlbmRlcl8gPSBmYWxz
ZTsKKyAgICAgIG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfID0gMTsKKyAgICB9IGVsc2UgeworICAg
ICAgaWYgKCsrbnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPiBtYXhfb2JzZXJ2ZWRfaml0dGVyXykg
eworICAgICAgICBtYXhfb2JzZXJ2ZWRfaml0dGVyXyA9IG51bV9hcGlfY2FsbHNfaW5fYV9yb3df
OworICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpCisgICAgICAgICAgICA8PCAiTmV3IG1heCBu
dW1iZXIgYXBpIGppdHRlciBvYnNlcnZlZCBhdCBjYXB0dXJlIGJsb2NrICIKKyAgICAgICAgICAg
IDw8IGNhcHR1cmVfY2FsbF9jb3VudGVyXyA8PCAiOiAgIiA8PCBudW1fYXBpX2NhbGxzX2luX2Ff
cm93XworICAgICAgICAgICAgPDwgIiBibG9ja3MiOworICAgICAgfQorICAgIH0KKyAgfQorCisg
IGlmIChEZXRlY3RFeGNlc3NSZW5kZXJCbG9ja3MoKSkgeworICAgIC8vIFRvbyBtYW55IHJlbmRl
ciBibG9ja3MgY29tcGFyZWQgdG8gY2FwdHVyZSBibG9ja3MuIFJpc2sgb2YgZGVsYXkgZW5kaW5n
CisgICAgLy8gdXAgYmVmb3JlIHRoZSBmaWx0ZXIgdXNlZCBieSB0aGUgZGVsYXkgZXN0aW1hdG9y
LgorICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkV4Y2VzcyByZW5kZXIgYmxvY2tzIGRldGVj
dGVkIGF0IGJsb2NrICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IGNhcHR1cmVfY2FsbF9j
b3VudGVyXzsKKyAgICBSZXNldCgpOworICAgIGV2ZW50ID0gQnVmZmVyaW5nRXZlbnQ6OmtSZW5k
ZXJPdmVycnVuOworICB9IGVsc2UgaWYgKFJlbmRlclVuZGVycnVuKCkpIHsKKyAgICAvLyBEb24n
dCBpbmNyZW1lbnQgdGhlIHJlYWQgaW5kaWNlcyBvZiB0aGUgbG93IHJhdGUgYnVmZmVyIGlmIHRo
ZXJlIGlzIGEKKyAgICAvLyByZW5kZXIgdW5kZXJydW4uCisgICAgUlRDX0xPRyhMU19XQVJOSU5H
KSA8PCAiUmVuZGVyIGJ1ZmZlciB1bmRlcnJ1biBkZXRlY3RlZCBhdCBibG9jayAiCisgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBjYXB0dXJlX2NhbGxfY291bnRlcl87CisgICAgSW5jcmVtZW50
UmVhZEluZGljZXMoKTsKKyAgICAvLyBJbmNyZW1lbnRpbmcgdGhlIGJ1ZmZlciBpbmRleCB3aXRo
b3V0IGluY3JlYXNpbmcgdGhlIGxvdyByYXRlIGJ1ZmZlcgorICAgIC8vIGluZGV4IG1lYW5zIHRo
YXQgdGhlIGRlbGF5IGlzIHJlZHVjZWQgYnkgb25lLgorICAgIGlmIChkZWxheV8gJiYgKmRlbGF5
XyA+IDApCisgICAgICBkZWxheV8gPSAqZGVsYXlfIC0gMTsKKyAgICBldmVudCA9IEJ1ZmZlcmlu
Z0V2ZW50OjprUmVuZGVyVW5kZXJydW47CisgIH0gZWxzZSB7CisgICAgLy8gSW5jcmVtZW50IHRo
ZSByZWFkIGluZGljZXMgaW4gdGhlIHJlbmRlciBidWZmZXJzIHRvIHBvaW50IHRvIHRoZSBtb3N0
CisgICAgLy8gcmVjZW50IGJsb2NrIHRvIHVzZSBpbiB0aGUgY2FwdHVyZSBwcm9jZXNzaW5nLgor
ICAgIEluY3JlbWVudExvd1JhdGVSZWFkSW5kaWNlcygpOworICAgIEluY3JlbWVudFJlYWRJbmRp
Y2VzKCk7CisgIH0KKworICBlY2hvX3JlbW92ZXJfYnVmZmVyXy5TZXRSZW5kZXJBY3Rpdml0eShy
ZW5kZXJfYWN0aXZpdHlfKTsKKyAgaWYgKHJlbmRlcl9hY3Rpdml0eV8pIHsKKyAgICByZW5kZXJf
YWN0aXZpdHlfY291bnRlcl8gPSAwOworICAgIHJlbmRlcl9hY3Rpdml0eV8gPSBmYWxzZTsKKyAg
fQorCisgIHJldHVybiBldmVudDsKK30KKworLy8gU2V0cyB0aGUgZGVsYXkgYW5kIHJldHVybnMg
YSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgZGVsYXkgd2FzIGNoYW5nZWQuCitib29sIFJl
bmRlckRlbGF5QnVmZmVySW1wbDI6OlNldERlbGF5KHNpemVfdCBkZWxheSkgeworICBpZiAoIWV4
dGVybmFsX2F1ZGlvX2J1ZmZlcl9kZWxheV92ZXJpZmllZF9hZnRlcl9yZXNldF8gJiYKKyAgICAg
IGV4dGVybmFsX2F1ZGlvX2J1ZmZlcl9kZWxheV8gJiYgZGVsYXlfKSB7CisgICAgaW50IGRpZmZl
cmVuY2UgPSBzdGF0aWNfY2FzdDxpbnQ+KGRlbGF5KSAtIHN0YXRpY19jYXN0PGludD4oKmRlbGF5
Xyk7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiTWlzbWF0Y2ggYmV0d2VlbiBmaXJzdCBl
c3RpbWF0ZWQgZGVsYXkgYWZ0ZXIgcmVzZXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImFuZCBleHRlcm5hbGx5IHJlcG9ydGVkIGF1ZGlvIGJ1ZmZlciBkZWxheTogIgorICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgZGlmZmVyZW5jZSA8PCAiIGJsb2NrcyI7CisgICAgZXh0ZXJuYWxf
YXVkaW9fYnVmZmVyX2RlbGF5X3ZlcmlmaWVkX2FmdGVyX3Jlc2V0XyA9IHRydWU7CisgIH0KKyAg
aWYgKGRlbGF5XyAmJiAqZGVsYXlfID09IGRlbGF5KSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9
CisgIGRlbGF5XyA9IGRlbGF5OworCisgIC8vIENvbXB1dGUgdGhlIHRvdGFsIGRlbGF5IGFuZCBs
aW1pdCB0aGUgZGVsYXkgdG8gdGhlIGFsbG93ZWQgcmFuZ2UuCisgIGludCB0b3RhbF9kZWxheSA9
IE1hcERlbGF5VG9Ub3RhbERlbGF5KCpkZWxheV8pOworICB0b3RhbF9kZWxheSA9CisgICAgICBz
dGQ6Om1pbihNYXhEZWxheSgpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0ZDo6bWF4KHRvdGFsX2Rl
bGF5LCAwKSkpOworCisgIC8vIEFwcGx5IHRoZSBkZWxheSB0byB0aGUgYnVmZmVycy4KKyAgQXBw
bHlUb3RhbERlbGF5KHRvdGFsX2RlbGF5KTsKKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFJldHVy
bnMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGRlbGF5IGlzIGNhdXNhbC4KK2Jvb2wgUmVuZGVyRGVs
YXlCdWZmZXJJbXBsMjo6Q2F1c2FsRGVsYXkoc2l6ZV90IGRlbGF5KSBjb25zdCB7CisgIC8vIFRP
RE8oZ3VzdGFmKTogUmVtb3ZlIHRoaXMgZnJvbSBSZW5kZXJEZWxheUJ1ZmZlci4KKyAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6U2V0QXVkaW9CdWZmZXJE
ZWxheShzaXplX3QgZGVsYXlfbXMpIHsKKyAgaWYgKCFleHRlcm5hbF9hdWRpb19idWZmZXJfZGVs
YXlfKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKQorICAgICAgICA8PCAiUmVjZWl2aW5nIGEg
Zmlyc3QgZXh0ZXJuYWxseSByZXBvcnRlZCBhdWRpbyBidWZmZXIgZGVsYXkgb2YgIgorICAgICAg
ICA8PCBkZWxheV9tcyA8PCAiIG1zLiI7CisgIH0KKworICAvLyBDb252ZXJ0IGRlbGF5IGZyb20g
bWlsbGlzZWNvbmRzIHRvIGJsb2NrcyAocm91bmRlZCBkb3duKS4KKyAgZXh0ZXJuYWxfYXVkaW9f
YnVmZmVyX2RlbGF5XyA9IGRlbGF5X21zID4+ICgobnVtX2JhbmRzXyA9PSAxKSA/IDEgOiAyKTsK
K30KKworLy8gTWFwcyB0aGUgZXh0ZXJuYWxseSBjb21wdXRlZCBkZWxheSB0byB0aGUgZGVsYXkg
dXNlZCBpbnRlcm5hbGx5LgoraW50IFJlbmRlckRlbGF5QnVmZmVySW1wbDI6Ok1hcERlbGF5VG9U
b3RhbERlbGF5KAorICAgIHNpemVfdCBleHRlcm5hbF9kZWxheV9ibG9ja3MpIGNvbnN0IHsKKyAg
Y29uc3QgaW50IGxhdGVuY3lfYmxvY2tzID0gQnVmZmVyTGF0ZW5jeSgpOworICByZXR1cm4gbGF0
ZW5jeV9ibG9ja3MgKyBzdGF0aWNfY2FzdDxpbnQ+KGV4dGVybmFsX2RlbGF5X2Jsb2Nrcyk7Cit9
CisKKy8vIFJldHVybnMgdGhlIGRlbGF5IChub3QgaW5jbHVkaW5nIGNhbGwgaml0dGVyKS4KK2lu
dCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpDb21wdXRlRGVsYXkoKSBjb25zdCB7CisgIGNvbnN0
IGludCBsYXRlbmN5X2Jsb2NrcyA9IEJ1ZmZlckxhdGVuY3koKTsKKyAgaW50IGludGVybmFsX2Rl
bGF5ID0gc3BlY3RyYV8ucmVhZCA+PSBzcGVjdHJhXy53cml0ZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBzcGVjdHJhXy5yZWFkIC0gc3BlY3RyYV8ud3JpdGUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogc3BlY3RyYV8uc2l6ZSArIHNwZWN0cmFfLnJlYWQgLSBzcGVjdHJhXy53
cml0ZTsKKworICByZXR1cm4gaW50ZXJuYWxfZGVsYXkgLSBsYXRlbmN5X2Jsb2NrczsKK30KKwor
Ly8gU2V0IHRoZSByZWFkIGluZGljZXMgYWNjb3JkaW5nIHRvIHRoZSBkZWxheS4KK3ZvaWQgUmVu
ZGVyRGVsYXlCdWZmZXJJbXBsMjo6QXBwbHlUb3RhbERlbGF5KGludCBkZWxheSkgeworICBSVENf
TE9HKExTX1dBUk5JTkcpIDw8ICJBcHBseWluZyB0b3RhbCBkZWxheSBvZiAiIDw8IGRlbGF5IDw8
ICIgYmxvY2tzLiI7CisgIGJsb2Nrc18ucmVhZCA9IGJsb2Nrc18uT2Zmc2V0SW5kZXgoYmxvY2tz
Xy53cml0ZSwgLWRlbGF5KTsKKyAgc3BlY3RyYV8ucmVhZCA9IHNwZWN0cmFfLk9mZnNldEluZGV4
KHNwZWN0cmFfLndyaXRlLCBkZWxheSk7CisgIGZmdHNfLnJlYWQgPSBmZnRzXy5PZmZzZXRJbmRl
eChmZnRzXy53cml0ZSwgZGVsYXkpOworfQorCisvLyBJbnNlcnRzIGEgYmxvY2sgaW50byB0aGUg
cmVuZGVyIGJ1ZmZlcnMuCit2b2lkIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6Okluc2VydEJsb2Nr
KAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4mIGJsb2NrLAorICAg
IGludCBwcmV2aW91c193cml0ZSkgeworICBhdXRvJiBiID0gYmxvY2tzXzsKKyAgYXV0byYgbHIg
PSBsb3dfcmF0ZV87CisgIGF1dG8mIGRzID0gcmVuZGVyX2RzXzsKKyAgYXV0byYgZiA9IGZmdHNf
OworICBhdXRvJiBzID0gc3BlY3RyYV87CisgIFJUQ19EQ0hFQ0tfRVEoYmxvY2suc2l6ZSgpLCBi
LmJ1ZmZlcltiLndyaXRlXS5zaXplKCkpOworICBmb3IgKHNpemVfdCBrID0gMDsgayA8IGJsb2Nr
LnNpemUoKTsgKytrKSB7CisgICAgUlRDX0RDSEVDS19FUShibG9ja1trXS5zaXplKCksIGIuYnVm
ZmVyW2Iud3JpdGVdW2tdLnNpemUoKSk7CisgICAgc3RkOjpjb3B5KGJsb2NrW2tdLmJlZ2luKCks
IGJsb2NrW2tdLmVuZCgpLCBiLmJ1ZmZlcltiLndyaXRlXVtrXS5iZWdpbigpKTsKKyAgfQorCisg
IGRhdGFfZHVtcGVyXy0+RHVtcFdhdigiYWVjM19yZW5kZXJfZGVjaW1hdG9yX2lucHV0IiwgYmxv
Y2tbMF0uc2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tbMF0uZGF0YSgpLCAx
NjAwMCwgMSk7CisgIHJlbmRlcl9kZWNpbWF0b3JfLkRlY2ltYXRlKGJsb2NrWzBdLCBkcyk7Cisg
IGRhdGFfZHVtcGVyXy0+RHVtcFdhdigiYWVjM19yZW5kZXJfZGVjaW1hdG9yX291dHB1dCIsIGRz
LnNpemUoKSwgZHMuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgMTYwMDAgLyBkb3du
X3NhbXBsaW5nX2ZhY3Rvcl8sIDEpOworICBzdGQ6OmNvcHkoZHMucmJlZ2luKCksIGRzLnJlbmQo
KSwgbHIuYnVmZmVyLmJlZ2luKCkgKyBsci53cml0ZSk7CisgIGZmdF8uUGFkZGVkRmZ0KGJsb2Nr
WzBdLCBiLmJ1ZmZlcltwcmV2aW91c193cml0ZV1bMF0sICZmLmJ1ZmZlcltmLndyaXRlXSk7Cisg
IGYuYnVmZmVyW2Yud3JpdGVdLlNwZWN0cnVtKG9wdGltaXphdGlvbl8sIHMuYnVmZmVyW3Mud3Jp
dGVdKTsKK30KKworYm9vbCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpEZXRlY3RBY3RpdmVSZW5k
ZXIoCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHgpIGNvbnN0IHsKKyAgY29uc3Qg
ZmxvYXQgeF9lbmVyZ3kgPSBzdGQ6OmlubmVyX3Byb2R1Y3QoeC5iZWdpbigpLCB4LmVuZCgpLCB4
LmJlZ2luKCksIDAuZik7CisgIHJldHVybiB4X2VuZXJneSA+IChjb25maWdfLnJlbmRlcl9sZXZl
bHMuYWN0aXZlX3JlbmRlcl9saW1pdCAqCisgICAgICAgICAgICAgICAgICAgICBjb25maWdfLnJl
bmRlcl9sZXZlbHMuYWN0aXZlX3JlbmRlcl9saW1pdCkgKgorICAgICAgICAgICAgICAgICAgICAg
ICAga0ZmdExlbmd0aEJ5MjsKK30KKworYm9vbCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpEZXRl
Y3RFeGNlc3NSZW5kZXJCbG9ja3MoKSB7CisgIGJvb2wgZXhjZXNzX3JlbmRlcl9kZXRlY3RlZCA9
IGZhbHNlOworICBjb25zdCBzaXplX3QgbGF0ZW5jeV9ibG9ja3MgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KEJ1ZmZlckxhdGVuY3koKSk7CisgIC8vIFRoZSByZWNlbnRseSBzZWVuIG1pbmltdW0gbGF0
ZW5jeSBpbiBibG9ja3MuIFNob3VsZCBiZSBjbG9zZSB0byAwLgorICBtaW5fbGF0ZW5jeV9ibG9j
a3NfID0gc3RkOjptaW4obWluX2xhdGVuY3lfYmxvY2tzXywgbGF0ZW5jeV9ibG9ja3MpOworICAv
LyBBZnRlciBwcm9jZXNzaW5nIGEgY29uZmlndXJhYmxlIG51bWJlciBvZiBibG9ja3MgdGhlIG1p
bmltdW0gbGF0ZW5jeSBpcworICAvLyBjaGVja2VkLgorICBpZiAoKytleGNlc3NfcmVuZGVyX2Rl
dGVjdGlvbl9jb3VudGVyXyA+PQorICAgICAgY29uZmlnXy5idWZmZXJpbmcuZXhjZXNzX3JlbmRl
cl9kZXRlY3Rpb25faW50ZXJ2YWxfYmxvY2tzKSB7CisgICAgLy8gSWYgdGhlIG1pbmltdW0gbGF0
ZW5jeSBpcyBub3QgbG93ZXIgdGhhbiB0aGUgdGhyZXNob2xkIHRoZXJlIGhhdmUgYmVlbgorICAg
IC8vIG1vcmUgcmVuZGVyIHRoYW4gY2FwdHVyZSBmcmFtZXMuCisgICAgZXhjZXNzX3JlbmRlcl9k
ZXRlY3RlZCA9IG1pbl9sYXRlbmN5X2Jsb2Nrc18gPgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25maWdfLmJ1ZmZlcmluZy5tYXhfYWxsb3dlZF9leGNlc3NfcmVuZGVyX2Jsb2NrczsK
KyAgICAvLyBSZXNldCB0aGUgY291bnRlciBhbmQgbGV0IHRoZSBtaW5pbXVtIGxhdGVuY3kgYmUg
dGhlIGN1cnJlbnQgbGF0ZW5jeS4KKyAgICBtaW5fbGF0ZW5jeV9ibG9ja3NfID0gbGF0ZW5jeV9i
bG9ja3M7CisgICAgZXhjZXNzX3JlbmRlcl9kZXRlY3Rpb25fY291bnRlcl8gPSAwOworICB9CisK
KyAgZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJhZWMzX2xhdGVuY3lfYmxvY2tzIiwgbGF0ZW5jeV9i
bG9ja3MpOworICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfbWluX2xhdGVuY3lfYmxvY2tz
IiwgbWluX2xhdGVuY3lfYmxvY2tzXyk7CisgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19l
eGNlc3NfcmVuZGVyX2RldGVjdGVkIiwgZXhjZXNzX3JlbmRlcl9kZXRlY3RlZCk7CisgIHJldHVy
biBleGNlc3NfcmVuZGVyX2RldGVjdGVkOworfQorCisvLyBDb21wdXRlcyB0aGUgbGF0ZW5jeSBp
biB0aGUgYnVmZmVyICh0aGUgbnVtYmVyIG9mIHVucmVhZCBzdWItYmxvY2tzKS4KK2ludCBSZW5k
ZXJEZWxheUJ1ZmZlckltcGwyOjpCdWZmZXJMYXRlbmN5KCkgY29uc3QgeworICBjb25zdCBEb3du
c2FtcGxlZFJlbmRlckJ1ZmZlciYgbCA9IGxvd19yYXRlXzsKKyAgaW50IGxhdGVuY3lfc2FtcGxl
cyA9IChsLmJ1ZmZlci5zaXplKCkgKyBsLnJlYWQgLSBsLndyaXRlKSAlIGwuYnVmZmVyLnNpemUo
KTsKKyAgaW50IGxhdGVuY3lfYmxvY2tzID0gbGF0ZW5jeV9zYW1wbGVzIC8gc3ViX2Jsb2NrX3Np
emVfOworICByZXR1cm4gbGF0ZW5jeV9ibG9ja3M7Cit9CisKKy8vIEluY3JlbWVudHMgdGhlIHdy
aXRlIGluZGljZXMgZm9yIHRoZSByZW5kZXIgYnVmZmVycy4KK3ZvaWQgUmVuZGVyRGVsYXlCdWZm
ZXJJbXBsMjo6SW5jcmVtZW50V3JpdGVJbmRpY2VzKCkgeworICBsb3dfcmF0ZV8uVXBkYXRlV3Jp
dGVJbmRleCgtc3ViX2Jsb2NrX3NpemVfKTsKKyAgYmxvY2tzXy5JbmNXcml0ZUluZGV4KCk7Cisg
IHNwZWN0cmFfLkRlY1dyaXRlSW5kZXgoKTsKKyAgZmZ0c18uRGVjV3JpdGVJbmRleCgpOworfQor
CisvLyBJbmNyZW1lbnRzIHRoZSByZWFkIGluZGljZXMgb2YgdGhlIGxvdyByYXRlIHJlbmRlciBi
dWZmZXJzLgordm9pZCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpJbmNyZW1lbnRMb3dSYXRlUmVh
ZEluZGljZXMoKSB7CisgIGxvd19yYXRlXy5VcGRhdGVSZWFkSW5kZXgoLXN1Yl9ibG9ja19zaXpl
Xyk7Cit9CisKKy8vIEluY3JlbWVudHMgdGhlIHJlYWQgaW5kaWNlcyBmb3IgdGhlIHJlbmRlciBi
dWZmZXJzLgordm9pZCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpJbmNyZW1lbnRSZWFkSW5kaWNl
cygpIHsKKyAgaWYgKGJsb2Nrc18ucmVhZCAhPSBibG9ja3NfLndyaXRlKSB7CisgICAgYmxvY2tz
Xy5JbmNSZWFkSW5kZXgoKTsKKyAgICBzcGVjdHJhXy5EZWNSZWFkSW5kZXgoKTsKKyAgICBmZnRz
Xy5EZWNSZWFkSW5kZXgoKTsKKyAgfQorfQorCisvLyBDaGVja3MgZm9yIGEgcmVuZGVyIGJ1ZmZl
ciBvdmVycnVuLgorYm9vbCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpSZW5kZXJPdmVycnVuKCkg
eworICByZXR1cm4gbG93X3JhdGVfLnJlYWQgPT0gbG93X3JhdGVfLndyaXRlIHx8IGJsb2Nrc18u
cmVhZCA9PSBibG9ja3NfLndyaXRlOworfQorCisvLyBDaGVja3MgZm9yIGEgcmVuZGVyIGJ1ZmZl
ciB1bmRlcnJ1bi4KK2Jvb2wgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6UmVuZGVyVW5kZXJydW4o
KSB7CisgIHJldHVybiBsb3dfcmF0ZV8ucmVhZCA9PSBsb3dfcmF0ZV8ud3JpdGU7Cit9CisKK30g
IC8vIG5hbWVzcGFjZQorCitSZW5kZXJEZWxheUJ1ZmZlciogUmVuZGVyRGVsYXlCdWZmZXI6OkNy
ZWF0ZTIoCisgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKKyAgICBzaXpl
X3QgbnVtX2JhbmRzKSB7CisgIHJldHVybiBuZXcgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMihjb25m
aWcsIG51bV9iYW5kcyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyX3VuaXR0ZXN0LmNjCmluZGV4IGVlODk1OTcyNjE5
ZjQwNDE2ZDljZmYyYmMyOTFhMDg5ODcxZjQxYzYuLmQxNTMwYzYxNDJjNGU5MGIzZDIxOWFkYTdk
ZjNkZmY4MThiYjVhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9i
dWZmZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZl
cl91bml0dGVzdC5jYwpAQCAtMzgsNyArMzgsNyBAQCBURVNUKFJlbmRlckRlbGF5QnVmZmVyLCBC
dWZmZXJPdmVyZmxvdykgewogICBmb3IgKGF1dG8gcmF0ZSA6IHs4MDAwLCAxNjAwMCwgMzIwMDAs
IDQ4MDAwfSkgewogICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUpKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IGRlbGF5X2J1ZmZlcigKLSAgICAg
ICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRl
KSkpOworICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIE51bUJhbmRz
Rm9yUmF0ZShyYXRlKSkpOwogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gYmxv
Y2tfdG9faW5zZXJ0KAogICAgICAgICBOdW1CYW5kc0ZvclJhdGUocmF0ZSksIHN0ZDo6dmVjdG9y
PGZsb2F0PihrQmxvY2tTaXplLCAwLmYpKTsKICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEw
OyArK2spIHsKQEAgLTYyLDcgKzYyLDcgQEAgVEVTVChSZW5kZXJEZWxheUJ1ZmZlciwgQnVmZmVy
T3ZlcmZsb3cpIHsKIFRFU1QoUmVuZGVyRGVsYXlCdWZmZXIsIEF2YWlsYWJsZUJsb2NrKSB7CiAg
IGNvbnN0ZXhwciBzaXplX3Qga051bUJhbmRzID0gMTsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
ckRlbGF5QnVmZmVyPiBkZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3Jl
YXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIGtOdW1CYW5kcykpOworICAgICAgUmVuZGVyRGVs
YXlCdWZmZXI6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwga051bUJhbmRzKSk7CiAg
IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gaW5wdXRfYmxvY2soCiAgICAgICBrTnVt
QmFuZHMsIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXplLCAxLmYpKTsKICAgRVhQRUNUX0VR
KFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVudDo6a05vbmUsCkBAIC03NCw3ICs3NCw3
IEBAIFRFU1QoUmVuZGVyRGVsYXlCdWZmZXIsIEF2YWlsYWJsZUJsb2NrKSB7CiBURVNUKFJlbmRl
ckRlbGF5QnVmZmVyLCBTZXREZWxheSkgewogICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7
CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gZGVsYXlfYnVmZmVyKAotICAg
ICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDEpKTsKKyAgICAgIFJlbmRlckRl
bGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMSkpOwogICBBU1NFUlRfVFJVRShkZWxheV9idWZm
ZXItPkRlbGF5KCkpOwogICBkZWxheV9idWZmZXItPlJlc2V0KCk7CiAgIHNpemVfdCBpbml0aWFs
X2ludGVybmFsX2RlbGF5ID0gY29uZmlnLmRlbGF5Lm1pbl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tz
ICsKQEAgLTkzLDcgKzkzLDcgQEAgVEVTVChSZW5kZXJEZWxheUJ1ZmZlciwgU2V0RGVsYXkpIHsK
IC8vIHRlc3RzIG9uIHRlc3QgYm90cyBoYXMgYmVlbiBmaXhlZC4KIFRFU1QoUmVuZGVyRGVsYXlC
dWZmZXIsIERJU0FCTEVEX1dyb25nRGVsYXkpIHsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRl
bGF5QnVmZmVyPiBkZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRl
KEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpD
cmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKICAgRVhQRUNUX0RFQVRIKGRlbGF5
X2J1ZmZlci0+U2V0RGVsYXkoMjEpLCAiIik7CiB9CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBURVNU
KFJlbmRlckRlbGF5QnVmZmVyLCBESVNBQkxFRF9Xcm9uZ0RlbGF5KSB7CiBURVNUKFJlbmRlckRl
bGF5QnVmZmVyLCBXcm9uZ051bWJlck9mQmFuZHMpIHsKICAgZm9yIChhdXRvIHJhdGUgOiB7MTYw
MDAsIDMyMDAwLCA0ODAwMH0pIHsKICAgICBTQ09QRURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChy
YXRlKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiBkZWxheV9idWZm
ZXIoUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZSgKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
RGVsYXlCdWZmZXI+IGRlbGF5X2J1ZmZlcihSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMigKICAg
ICAgICAgRWNob0NhbmNlbGxlcjNDb25maWcoKSwgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAg
ICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiBibG9ja190b19pbnNlcnQoCiAgICAg
ICAgIE51bUJhbmRzRm9yUmF0ZShyYXRlIDwgNDgwMDAgPyByYXRlICsgMTYwMDAgOiAxNjAwMCks
CkBAIC0xMTUsNyArMTE1LDcgQEAgVEVTVChSZW5kZXJEZWxheUJ1ZmZlciwgV3JvbmdCbG9ja0xl
bmd0aCkgewogICBmb3IgKGF1dG8gcmF0ZSA6IHs4MDAwLCAxNjAwMCwgMzIwMDAsIDQ4MDAwfSkg
ewogICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUpKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IGRlbGF5X2J1ZmZlcigKLSAgICAgICAgUmVuZGVy
RGVsYXlCdWZmZXI6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCAzKSk7CisgICAgICAg
IFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsK
ICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IGJsb2NrX3RvX2luc2VydCgKICAg
ICAgICAgTnVtQmFuZHNGb3JSYXRlKHJhdGUpLCBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6
ZSAtIDEsIDAuZikpOwogICAgIEVYUEVDVF9ERUFUSChkZWxheV9idWZmZXItPkluc2VydChibG9j
a190b19pbnNlcnQpLCAiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVs
YXlfY29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVy
LmNjCmluZGV4IGYzMzZjMzkyYjRlZTcwMzk2MjM2NjgyMjFkODRjODA1ZmI2YTk1ODguLmM0NjY1
ZWFhMjI0ZGVjMWVkZDQzMjViMjI4MjYxMDRkNDE1N2E5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jl
bmRlcl9kZWxheV9jb250cm9sbGVyLmNjCkBAIC05LDEwICs5LDkgQEAKICAqLwogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgi
CiAKKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
bWVtb3J5PgotI2luY2x1ZGUgPG51bWVyaWM+Ci0jaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgi
CkBAIC0yMCw3ICsxOSw5IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3MuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9za2V3X2VzdGltYXRvci5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
ZmllbGRfdHJpYWwuaCIKQEAgLTQ0LDYgKzQ1LDEwIEBAIGJvb2wgVXNlT2Zmc2V0QmxvY2tzKCkg
ewogICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNVc2VPZmZzZXRC
bG9ja3MiKTsKIH0KIAorYm9vbCBVc2VFYXJseURlbGF5RGV0ZWN0aW9uKCkgeworICByZXR1cm4g
IWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzRWFybHlEZWxheURldGVjdGlvbktp
bGxTd2l0Y2giKTsKK30KKwogY29uc3RleHByIGludCBrU2tld0hpc3RvcnlTaXplTG9nMiA9IDg7
CiAKIGNsYXNzIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGwgZmluYWwgOiBwdWJsaWMgUmVuZGVy
RGVsYXlDb250cm9sbGVyIHsKQEAgLTUyLDE3ICs1NywxOSBAQCBjbGFzcyBSZW5kZXJEZWxheUNv
bnRyb2xsZXJJbXBsIGZpbmFsIDogcHVibGljIFJlbmRlckRlbGF5Q29udHJvbGxlciB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vbl9jYXVzYWxfb2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeik7CiAgIH5SZW5kZXJEZWxheUNv
bnRyb2xsZXJJbXBsKCkgb3ZlcnJpZGU7Ci0gIHZvaWQgUmVzZXQoKSBvdmVycmlkZTsKKyAgdm9p
ZCBSZXNldChib29sIHJlc2V0X2RlbGF5X2NvbmZpZGVuY2UpIG92ZXJyaWRlOwogICB2b2lkIExv
Z1JlbmRlckNhbGwoKSBvdmVycmlkZTsKICAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4g
R2V0RGVsYXkoCiAgICAgICBjb25zdCBEb3duc2FtcGxlZFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1
ZmZlciwKICAgICAgIHNpemVfdCByZW5kZXJfZGVsYXlfYnVmZmVyX2RlbGF5LAogICAgICAgY29u
c3QgYWJzbDo6b3B0aW9uYWw8aW50PiYgZWNob19yZW1vdmVyX2RlbGF5LAogICAgICAgcnRjOjpB
cnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNhcHR1cmUpIG92ZXJyaWRlOworICBib29sIEhhc0Nsb2Nr
ZHJpZnQoKSBjb25zdCBvdmVycmlkZTsKIAogIHByaXZhdGU6CiAgIHN0YXRpYyBpbnQgaW5zdGFu
Y2VfY291bnRfOwogICBzdGQ6OnVuaXF1ZV9wdHI8QXBtRGF0YUR1bXBlcj4gZGF0YV9kdW1wZXJf
OworICBjb25zdCBib29sIHVzZV9lYXJseV9kZWxheV9kZXRlY3Rpb25fOwogICBjb25zdCBpbnQg
ZGVsYXlfaGVhZHJvb21fYmxvY2tzXzsKICAgY29uc3QgaW50IGh5c3RlcmVzaXNfbGltaXRfMV9i
bG9ja3NfOwogICBjb25zdCBpbnQgaHlzdGVyZXNpc19saW1pdF8yX2Jsb2Nrc187CkBAIC04MSw2
ICs4OCw3IEBAIGNsYXNzIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGwgZmluYWwgOiBwdWJsaWMg
UmVuZGVyRGVsYXlDb250cm9sbGVyIHsKICAgc2l6ZV90IGNhcHR1cmVfY2FsbF9jb3VudGVyXyA9
IDA7CiAgIGludCBkZWxheV9jaGFuZ2VfY291bnRlcl8gPSAwOwogICBzaXplX3Qgc29mdF9yZXNl
dF9jb3VudGVyXyA9IDA7CisgIERlbGF5RXN0aW1hdGU6OlF1YWxpdHkgbGFzdF9kZWxheV9lc3Rp
bWF0ZV9xdWFsaXR5XzsKICAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhSZW5k
ZXJEZWxheUNvbnRyb2xsZXJJbXBsKTsKIH07CiAKQEAgLTEyOSw2ICsxMzcsNyBAQCBSZW5kZXJE
ZWxheUNvbnRyb2xsZXJJbXBsOjpSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsKAogICAgIGludCBz
YW1wbGVfcmF0ZV9oeikKICAgICA6IGRhdGFfZHVtcGVyXygKICAgICAgICAgICBuZXcgQXBtRGF0
YUR1bXBlcihydGM6OkF0b21pY09wczo6SW5jcmVtZW50KCZpbnN0YW5jZV9jb3VudF8pKSksCisg
ICAgICB1c2VfZWFybHlfZGVsYXlfZGV0ZWN0aW9uXyhVc2VFYXJseURlbGF5RGV0ZWN0aW9uKCkp
LAogICAgICAgZGVsYXlfaGVhZHJvb21fYmxvY2tzXygKICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQ+KGNvbmZpZy5kZWxheS5kZWxheV9oZWFkcm9vbV9ibG9ja3MpKSwKICAgICAgIGh5c3RlcmVz
aXNfbGltaXRfMV9ibG9ja3NfKApAQCAtMTM5LDcgKzE0OCw4IEBAIFJlbmRlckRlbGF5Q29udHJv
bGxlckltcGw6OlJlbmRlckRlbGF5Q29udHJvbGxlckltcGwoCiAgICAgICB1c2Vfb2Zmc2V0X2Js
b2Nrc18oVXNlT2Zmc2V0QmxvY2tzKCkpLAogICAgICAgZGVsYXlfZXN0aW1hdG9yXyhkYXRhX2R1
bXBlcl8uZ2V0KCksIGNvbmZpZyksCiAgICAgICBkZWxheV9idWZfKGtCbG9ja1NpemUgKiBub25f
Y2F1c2FsX29mZnNldCwgMC5mKSwKLSAgICAgIHNrZXdfZXN0aW1hdG9yXyhrU2tld0hpc3RvcnlT
aXplTG9nMikgeworICAgICAgc2tld19lc3RpbWF0b3JfKGtTa2V3SGlzdG9yeVNpemVMb2cyKSwK
KyAgICAgIGxhc3RfZGVsYXlfZXN0aW1hdGVfcXVhbGl0eV8oRGVsYXlFc3RpbWF0ZTo6UXVhbGl0
eTo6a0NvYXJzZSkgewogICBSVENfRENIRUNLKFZhbGlkRnVsbEJhbmRSYXRlKHNhbXBsZV9yYXRl
X2h6KSk7CiAgIGRlbGF5X2VzdGltYXRvcl8uTG9nRGVsYXlFc3RpbWF0aW9uUHJvcGVydGllcyhz
YW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbGF5X2J1Zl8uc2l6ZSgpKTsKQEAgLTE0NywxNiArMTU3LDE5IEBAIFJlbmRlckRl
bGF5Q29udHJvbGxlckltcGw6OlJlbmRlckRlbGF5Q29udHJvbGxlckltcGwoCiAKIFJlbmRlckRl
bGF5Q29udHJvbGxlckltcGw6On5SZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsKCkgPSBkZWZhdWx0
OwogCi12b2lkIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGw6OlJlc2V0KCkgewordm9pZCBSZW5k
ZXJEZWxheUNvbnRyb2xsZXJJbXBsOjpSZXNldChib29sIHJlc2V0X2RlbGF5X2NvbmZpZGVuY2Up
IHsKICAgZGVsYXlfID0gYWJzbDo6bnVsbG9wdDsKICAgZGVsYXlfc2FtcGxlc18gPSBhYnNsOjpu
dWxsb3B0OwogICBza2V3XyA9IGFic2w6Om51bGxvcHQ7CiAgIHByZXZpb3VzX29mZnNldF9ibG9j
a3NfID0gMDsKICAgc3RkOjpmaWxsKGRlbGF5X2J1Zl8uYmVnaW4oKSwgZGVsYXlfYnVmXy5lbmQo
KSwgMC5mKTsKLSAgZGVsYXlfZXN0aW1hdG9yXy5SZXNldChmYWxzZSk7CisgIGRlbGF5X2VzdGlt
YXRvcl8uUmVzZXQocmVzZXRfZGVsYXlfY29uZmlkZW5jZSk7CiAgIHNrZXdfZXN0aW1hdG9yXy5S
ZXNldCgpOwogICBkZWxheV9jaGFuZ2VfY291bnRlcl8gPSAwOwogICBzb2Z0X3Jlc2V0X2NvdW50
ZXJfID0gMDsKKyAgaWYgKHJlc2V0X2RlbGF5X2NvbmZpZGVuY2UpIHsKKyAgICBsYXN0X2RlbGF5
X2VzdGltYXRlX3F1YWxpdHlfID0gRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a0NvYXJzZTsKKyAg
fQogfQogCiB2b2lkIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGw6OkxvZ1JlbmRlckNhbGwoKSB7
CkBAIC0xOTQsOSArMjA3LDYgQEAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gUmVuZGVy
RGVsYXlDb250cm9sbGVySW1wbDo6R2V0RGVsYXkoCiAgIGFic2w6Om9wdGlvbmFsPGludD4gc2tl
dyA9IHNrZXdfZXN0aW1hdG9yXy5HZXRTa2V3RnJvbUNhcHR1cmUoKTsKIAogICBpZiAoZGVsYXlf
c2FtcGxlcykgewotICAgIC8vIFRPRE8ocGVhaCk6IFJlZmFjdG9yIHRoZSByZXN0IG9mIHRoZSBj
b2RlIHRvIGFzc3VtZSBhIGtSZWZpbmVkIGVzdGltYXRlCi0gICAgLy8gcXVhbGl0eS4KLSAgICBS
VENfRENIRUNLKERlbGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVkID09IGRlbGF5X3NhbXBs
ZXMtPnF1YWxpdHkpOwogICAgIGlmICghZGVsYXlfc2FtcGxlc18gfHwgZGVsYXlfc2FtcGxlcy0+
ZGVsYXkgIT0gZGVsYXlfc2FtcGxlc18tPmRlbGF5KSB7CiAgICAgICBkZWxheV9jaGFuZ2VfY291
bnRlcl8gPSAwOwogICAgIH0KQEAgLTIzOSw3ICsyNDksNyBAQCBhYnNsOjpvcHRpb25hbDxEZWxh
eUVzdGltYXRlPiBSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsOjpHZXREZWxheSgKICAgICB9IGVs
c2UgaWYgKHNvZnRfcmVzZXRfY291bnRlcl8gPiAxMCAqIGtOdW1CbG9ja3NQZXJTZWNvbmQpIHsK
ICAgICAgIC8vIFNvZnQgcmVzZXQgdGhlIGRlbGF5IGVzdGltYXRvciBpZiB0aGVyZSBpcyBhIHNp
Z25pZmljYW50IG9mZnNldAogICAgICAgLy8gZGV0ZWN0ZWQuCi0gICAgICBkZWxheV9lc3RpbWF0
b3JfLlJlc2V0KHRydWUpOworICAgICAgZGVsYXlfZXN0aW1hdG9yXy5SZXNldChmYWxzZSk7CiAg
ICAgICBzb2Z0X3Jlc2V0X2NvdW50ZXJfID0gMDsKICAgICB9CiAgIH0KQEAgLTI2NCwxNCArMjc0
LDIwIEBAIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IFJlbmRlckRlbGF5Q29udHJvbGxl
ckltcGw6OkdldERlbGF5KAogCiAgIGlmIChkZWxheV9zYW1wbGVzXykgewogICAgIC8vIENvbXB1
dGUgdGhlIHJlbmRlciBkZWxheSBidWZmZXIgZGVsYXkuCi0gICAgZGVsYXlfID0gQ29tcHV0ZUJ1
ZmZlckRlbGF5KAotICAgICAgICBkZWxheV8sIGRlbGF5X2hlYWRyb29tX2Jsb2Nrc18sIGh5c3Rl
cmVzaXNfbGltaXRfMV9ibG9ja3NfLAotICAgICAgICBoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tz
Xywgb2Zmc2V0X2Jsb2NrcywgKmRlbGF5X3NhbXBsZXNfKTsKKyAgICBjb25zdCBib29sIHVzZV9o
eXN0ZXJlc2lzID0KKyAgICAgICAgbGFzdF9kZWxheV9lc3RpbWF0ZV9xdWFsaXR5XyA9PSBEZWxh
eUVzdGltYXRlOjpRdWFsaXR5OjprUmVmaW5lZCAmJgorICAgICAgICBkZWxheV9zYW1wbGVzXy0+
cXVhbGl0eSA9PSBEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprUmVmaW5lZDsKKyAgICBkZWxheV8g
PSBDb21wdXRlQnVmZmVyRGVsYXkoZGVsYXlfLCBkZWxheV9oZWFkcm9vbV9ibG9ja3NfLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfaHlzdGVyZXNpcyA/IGh5c3RlcmVzaXNf
bGltaXRfMV9ibG9ja3NfIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNl
X2h5c3RlcmVzaXMgPyBoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzXyA6IDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldF9ibG9ja3MsICpkZWxheV9zYW1wbGVzXyk7Cisg
ICAgbGFzdF9kZWxheV9lc3RpbWF0ZV9xdWFsaXR5XyA9IGRlbGF5X3NhbXBsZXNfLT5xdWFsaXR5
OwogICB9CiAKICAgbWV0cmljc18uVXBkYXRlKGRlbGF5X3NhbXBsZXNfID8gYWJzbDo6b3B0aW9u
YWw8c2l6ZV90PihkZWxheV9zYW1wbGVzXy0+ZGVsYXkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IGFic2w6Om51bGxvcHQsCi0gICAgICAgICAgICAgICAgICBkZWxheV8gPyBk
ZWxheV8tPmRlbGF5IDogMCwgc2tld19zaGlmdCk7CisgICAgICAgICAgICAgICAgICBkZWxheV8g
PyBkZWxheV8tPmRlbGF5IDogMCwgc2tld19zaGlmdCwKKyAgICAgICAgICAgICAgICAgIGRlbGF5
X2VzdGltYXRvcl8uQ2xvY2tkcmlmdCgpKTsKIAogICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFl
YzNfcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfZGVsYXkiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgZGVsYXlfc2FtcGxlcyA/IGRlbGF5X3NhbXBsZXMtPmRlbGF5IDogMCk7CkBAIC0yODcsNiAr
MzAzLDEwIEBAIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IFJlbmRlckRlbGF5Q29udHJv
bGxlckltcGw6OkdldERlbGF5KAogICByZXR1cm4gZGVsYXlfOwogfQogCitib29sIFJlbmRlckRl
bGF5Q29udHJvbGxlckltcGw6Okhhc0Nsb2NrZHJpZnQoKSBjb25zdCB7CisgIHJldHVybiBkZWxh
eV9lc3RpbWF0b3JfLkNsb2NrZHJpZnQoKSAhPSBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjpr
Tm9uZTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIFJlbmRlckRlbGF5Q29udHJvbGxlciogUmVu
ZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9y
ZW5kZXJfZGVsYXlfY29udHJvbGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2Nv
bnRyb2xsZXIuaAppbmRleCBkZGQ5NTQ4MmZjY2UxOGI4YmJhOTJkYTlmNDY5ODUyNWVhMWMwODk0
Li5iNDZlZDg5MjUyN2Y3OTI4ODFlZjU0OGMzYjIxOTY5OGUyY2ViOGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgKQEAgLTI3LDEwICsyNywxMyBAQCBjbGFzcyBS
ZW5kZXJEZWxheUNvbnRyb2xsZXIgewogICBzdGF0aWMgUmVuZGVyRGVsYXlDb250cm9sbGVyKiBD
cmVhdGUoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBub25fY2F1c2FsX29mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeik7CisgIHN0
YXRpYyBSZW5kZXJEZWxheUNvbnRyb2xsZXIqIENyZWF0ZTIoY29uc3QgRWNob0NhbmNlbGxlcjND
b25maWcmIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2FtcGxlX3JhdGVfaHopOwogICB2aXJ0dWFsIH5SZW5kZXJEZWxheUNvbnRyb2xsZXIoKSA9
IGRlZmF1bHQ7CiAKLSAgLy8gUmVzZXRzIHRoZSBkZWxheSBjb250cm9sbGVyLgotICB2aXJ0dWFs
IHZvaWQgUmVzZXQoKSA9IDA7CisgIC8vIFJlc2V0cyB0aGUgZGVsYXkgY29udHJvbGxlci4gSWYg
dGhlIGRlbGF5IGNvbmZpZGVuY2UgaXMgcmVzZXQsIHRoZSByZXNldAorICAvLyBiZWhhdmlvciBp
cyBhcyBpZiB0aGUgY2FsbCBpcyByZXN0YXJ0ZWQuCisgIHZpcnR1YWwgdm9pZCBSZXNldChib29s
IHJlc2V0X2RlbGF5X2NvbmZpZGVuY2UpID0gMDsKIAogICAvLyBMb2dzIGEgcmVuZGVyIGNhbGwu
CiAgIHZpcnR1YWwgdm9pZCBMb2dSZW5kZXJDYWxsKCkgPSAwOwpAQCAtNDEsNiArNDQsOSBAQCBj
bGFzcyBSZW5kZXJEZWxheUNvbnRyb2xsZXIgewogICAgICAgc2l6ZV90IHJlbmRlcl9kZWxheV9i
dWZmZXJfZGVsYXksCiAgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBlY2hvX3JlbW92
ZXJfZGVsYXksCiAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY2FwdHVyZSkgPSAw
OworCisgIC8vIFJldHVybnMgdHJ1ZSBpZiBjbG9ja2RyaWZ0IGhhcyBiZWVuIGRldGVjdGVkLgor
ICB2aXJ0dWFsIGJvb2wgSGFzQ2xvY2tkcmlmdCgpIGNvbnN0ID0gMDsKIH07CiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9j
b250cm9sbGVyMi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyMi5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMGRhZjhmMmFmNzFjMmRkYWJiMzc0YWNhZGZlZGI3OTY5OThlNDI2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIy
LmNjCkBAIC0wLDAgKzEsMjE4IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKyNpbmNsdWRlIDxz
dGRkZWYuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5j
bHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2RlbGF5X2VzdGltYXRlLmgiCisjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZl
ci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9k
ZWxheV9lc3RpbWF0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZW5kZXJfZGVsYXlfY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3MuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CisKK25hbWVzcGFjZSB7CisKK2Jvb2wgVXNlRWFybHlEZWxheURldGVjdGlvbigpIHsKKyAgcmV0
dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM0Vhcmx5RGVsYXlEZXRlY3Rp
b25LaWxsU3dpdGNoIik7Cit9CisKK2NsYXNzIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGwyIGZp
bmFsIDogcHVibGljIFJlbmRlckRlbGF5Q29udHJvbGxlciB7CisgcHVibGljOgorICBSZW5kZXJE
ZWxheUNvbnRyb2xsZXJJbXBsMihjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHopOworICB+UmVu
ZGVyRGVsYXlDb250cm9sbGVySW1wbDIoKSBvdmVycmlkZTsKKyAgdm9pZCBSZXNldChib29sIHJl
c2V0X2RlbGF5X2NvbmZpZGVuY2UpIG92ZXJyaWRlOworICB2b2lkIExvZ1JlbmRlckNhbGwoKSBv
dmVycmlkZTsKKyAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gR2V0RGVsYXkoCisgICAg
ICBjb25zdCBEb3duc2FtcGxlZFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKKyAgICAgIHNp
emVfdCByZW5kZXJfZGVsYXlfYnVmZmVyX2RlbGF5LAorICAgICAgY29uc3QgYWJzbDo6b3B0aW9u
YWw8aW50PiYgZWNob19yZW1vdmVyX2RlbGF5LAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qg
ZmxvYXQ+IGNhcHR1cmUpIG92ZXJyaWRlOworICBib29sIEhhc0Nsb2NrZHJpZnQoKSBjb25zdCBv
dmVycmlkZTsKKworIHByaXZhdGU6CisgIHN0YXRpYyBpbnQgaW5zdGFuY2VfY291bnRfOworICBz
dGQ6OnVuaXF1ZV9wdHI8QXBtRGF0YUR1bXBlcj4gZGF0YV9kdW1wZXJfOworICBjb25zdCBib29s
IHVzZV9lYXJseV9kZWxheV9kZXRlY3Rpb25fOworICBjb25zdCBpbnQgZGVsYXlfaGVhZHJvb21f
YmxvY2tzXzsKKyAgY29uc3QgaW50IGh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3NfOworICBjb25z
dCBpbnQgaHlzdGVyZXNpc19saW1pdF8yX2Jsb2Nrc187CisgIGFic2w6Om9wdGlvbmFsPERlbGF5
RXN0aW1hdGU+IGRlbGF5XzsKKyAgRWNob1BhdGhEZWxheUVzdGltYXRvciBkZWxheV9lc3RpbWF0
b3JfOworICBSZW5kZXJEZWxheUNvbnRyb2xsZXJNZXRyaWNzIG1ldHJpY3NfOworICBhYnNsOjpv
cHRpb25hbDxEZWxheUVzdGltYXRlPiBkZWxheV9zYW1wbGVzXzsKKyAgc2l6ZV90IGNhcHR1cmVf
Y2FsbF9jb3VudGVyXyA9IDA7CisgIGludCBkZWxheV9jaGFuZ2VfY291bnRlcl8gPSAwOworICBE
ZWxheUVzdGltYXRlOjpRdWFsaXR5IGxhc3RfZGVsYXlfZXN0aW1hdGVfcXVhbGl0eV87CisgIFJU
Q19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoUmVuZGVyRGVsYXlDb250cm9sbGVySW1w
bDIpOworfTsKKworRGVsYXlFc3RpbWF0ZSBDb21wdXRlQnVmZmVyRGVsYXkoCisgICAgY29uc3Qg
YWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4mIGN1cnJlbnRfZGVsYXksCisgICAgaW50IGRl
bGF5X2hlYWRyb29tX2Jsb2NrcywKKyAgICBpbnQgaHlzdGVyZXNpc19saW1pdF8xX2Jsb2NrcywK
KyAgICBpbnQgaHlzdGVyZXNpc19saW1pdF8yX2Jsb2NrcywKKyAgICBEZWxheUVzdGltYXRlIGVz
dGltYXRlZF9kZWxheSkgeworICAvLyBUaGUgYmVsb3cgZGl2aXNpb24gaXMgbm90IGV4YWN0IGFu
ZCB0aGUgdHJ1bmNhdGlvbiBpcyBpbnRlbmRlZC4KKyAgY29uc3QgaW50IGVjaG9fcGF0aF9kZWxh
eV9ibG9ja3MgPSBlc3RpbWF0ZWRfZGVsYXkuZGVsYXkgPj4ga0Jsb2NrU2l6ZUxvZzI7CisKKyAg
Ly8gQ29tcHV0ZSB0aGUgYnVmZmVyIGRlbGF5IGluY3JlYXNlIHJlcXVpcmVkIHRvIGFjaGlldmUg
dGhlIGRlc2lyZWQgbGF0ZW5jeS4KKyAgc2l6ZV90IG5ld19kZWxheV9ibG9ja3MgPQorICAgICAg
c3RkOjptYXgoZWNob19wYXRoX2RlbGF5X2Jsb2NrcyAtIGRlbGF5X2hlYWRyb29tX2Jsb2Nrcywg
MCk7CisKKyAgLy8gQWRkIGh5c3RlcmVzaXMuCisgIGlmIChjdXJyZW50X2RlbGF5KSB7CisgICAg
c2l6ZV90IGN1cnJlbnRfZGVsYXlfYmxvY2tzID0gY3VycmVudF9kZWxheS0+ZGVsYXk7CisgICAg
aWYgKG5ld19kZWxheV9ibG9ja3MgPiBjdXJyZW50X2RlbGF5X2Jsb2NrcykgeworICAgICAgaWYg
KG5ld19kZWxheV9ibG9ja3MgPD0KKyAgICAgICAgICBjdXJyZW50X2RlbGF5X2Jsb2NrcyArIGh5
c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MpIHsKKyAgICAgICAgbmV3X2RlbGF5X2Jsb2NrcyA9IGN1
cnJlbnRfZGVsYXlfYmxvY2tzOworICAgICAgfQorICAgIH0gZWxzZSBpZiAobmV3X2RlbGF5X2Js
b2NrcyA8IGN1cnJlbnRfZGVsYXlfYmxvY2tzKSB7CisgICAgICBzaXplX3QgaHlzdGVyZXNpc19s
aW1pdCA9IHN0ZDo6bWF4KAorICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oY3VycmVudF9kZWxh
eV9ibG9ja3MpIC0gaHlzdGVyZXNpc19saW1pdF8yX2Jsb2NrcywKKyAgICAgICAgICAwKTsKKyAg
ICAgIGlmIChuZXdfZGVsYXlfYmxvY2tzID49IGh5c3RlcmVzaXNfbGltaXQpIHsKKyAgICAgICAg
bmV3X2RlbGF5X2Jsb2NrcyA9IGN1cnJlbnRfZGVsYXlfYmxvY2tzOworICAgICAgfQorICAgIH0K
KyAgfQorCisgIERlbGF5RXN0aW1hdGUgbmV3X2RlbGF5ID0gZXN0aW1hdGVkX2RlbGF5OworICBu
ZXdfZGVsYXkuZGVsYXkgPSBuZXdfZGVsYXlfYmxvY2tzOworICByZXR1cm4gbmV3X2RlbGF5Owor
fQorCitpbnQgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDI6Omluc3RhbmNlX2NvdW50XyA9IDA7
CisKK1JlbmRlckRlbGF5Q29udHJvbGxlckltcGwyOjpSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBs
MigKKyAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgIGludCBzYW1w
bGVfcmF0ZV9oeikKKyAgICA6IGRhdGFfZHVtcGVyXygKKyAgICAgICAgICBuZXcgQXBtRGF0YUR1
bXBlcihydGM6OkF0b21pY09wczo6SW5jcmVtZW50KCZpbnN0YW5jZV9jb3VudF8pKSksCisgICAg
ICB1c2VfZWFybHlfZGVsYXlfZGV0ZWN0aW9uXyhVc2VFYXJseURlbGF5RGV0ZWN0aW9uKCkpLAor
ICAgICAgZGVsYXlfaGVhZHJvb21fYmxvY2tzXygKKyAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+
KGNvbmZpZy5kZWxheS5kZWxheV9oZWFkcm9vbV9ibG9ja3MpKSwKKyAgICAgIGh5c3RlcmVzaXNf
bGltaXRfMV9ibG9ja3NfKAorICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oY29uZmlnLmRlbGF5
Lmh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MpKSwKKyAgICAgIGh5c3RlcmVzaXNfbGltaXRfMl9i
bG9ja3NfKAorICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oY29uZmlnLmRlbGF5Lmh5c3RlcmVz
aXNfbGltaXRfMl9ibG9ja3MpKSwKKyAgICAgIGRlbGF5X2VzdGltYXRvcl8oZGF0YV9kdW1wZXJf
LmdldCgpLCBjb25maWcpLAorICAgICAgbGFzdF9kZWxheV9lc3RpbWF0ZV9xdWFsaXR5XyhEZWxh
eUVzdGltYXRlOjpRdWFsaXR5OjprQ29hcnNlKSB7CisgIFJUQ19EQ0hFQ0soVmFsaWRGdWxsQmFu
ZFJhdGUoc2FtcGxlX3JhdGVfaHopKTsKKyAgZGVsYXlfZXN0aW1hdG9yXy5Mb2dEZWxheUVzdGlt
YXRpb25Qcm9wZXJ0aWVzKHNhbXBsZV9yYXRlX2h6LCAwKTsKK30KKworUmVuZGVyRGVsYXlDb250
cm9sbGVySW1wbDI6On5SZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsMigpID0gZGVmYXVsdDsKKwor
dm9pZCBSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsMjo6UmVzZXQoYm9vbCByZXNldF9kZWxheV9j
b25maWRlbmNlKSB7CisgIGRlbGF5XyA9IGFic2w6Om51bGxvcHQ7CisgIGRlbGF5X3NhbXBsZXNf
ID0gYWJzbDo6bnVsbG9wdDsKKyAgZGVsYXlfZXN0aW1hdG9yXy5SZXNldChyZXNldF9kZWxheV9j
b25maWRlbmNlKTsKKyAgZGVsYXlfY2hhbmdlX2NvdW50ZXJfID0gMDsKKyAgaWYgKHJlc2V0X2Rl
bGF5X2NvbmZpZGVuY2UpIHsKKyAgICBsYXN0X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlfID0gRGVs
YXlFc3RpbWF0ZTo6UXVhbGl0eTo6a0NvYXJzZTsKKyAgfQorfQorCit2b2lkIFJlbmRlckRlbGF5
Q29udHJvbGxlckltcGwyOjpMb2dSZW5kZXJDYWxsKCkge30KKworYWJzbDo6b3B0aW9uYWw8RGVs
YXlFc3RpbWF0ZT4gUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDI6OkdldERlbGF5KAorICAgIGNv
bnN0IERvd25zYW1wbGVkUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgIHNpemVfdCBy
ZW5kZXJfZGVsYXlfYnVmZmVyX2RlbGF5LAorICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4m
IGVjaG9fcmVtb3Zlcl9kZWxheSwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY2Fw
dHVyZSkgeworICBSVENfRENIRUNLX0VRKGtCbG9ja1NpemUsIGNhcHR1cmUuc2l6ZSgpKTsKKyAg
KytjYXB0dXJlX2NhbGxfY291bnRlcl87CisKKyAgYXV0byBkZWxheV9zYW1wbGVzID0gZGVsYXlf
ZXN0aW1hdG9yXy5Fc3RpbWF0ZURlbGF5KHJlbmRlcl9idWZmZXIsIGNhcHR1cmUpOworCisgIC8v
IE92ZXJydWxlIHRoZSBkZWxheSBlc3RpbWF0b3IgZGVsYXkgaWYgdGhlIGVjaG8gcmVtb3ZlciBy
ZXBvcnRzIGEgZGVsYXkuCisgIGlmIChlY2hvX3JlbW92ZXJfZGVsYXkpIHsKKyAgICBpbnQgdG90
YWxfZWNob19yZW1vdmVyX2RlbGF5X3NhbXBsZXMgPQorICAgICAgICAocmVuZGVyX2RlbGF5X2J1
ZmZlcl9kZWxheSArICplY2hvX3JlbW92ZXJfZGVsYXkpICoga0Jsb2NrU2l6ZTsKKyAgICBkZWxh
eV9zYW1wbGVzID0gRGVsYXlFc3RpbWF0ZShEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprUmVmaW5l
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9lY2hvX3JlbW92ZXJf
ZGVsYXlfc2FtcGxlcyk7CisgIH0KKworICBpZiAoZGVsYXlfc2FtcGxlcykgeworICAgIGlmICgh
ZGVsYXlfc2FtcGxlc18gfHwgZGVsYXlfc2FtcGxlcy0+ZGVsYXkgIT0gZGVsYXlfc2FtcGxlc18t
PmRlbGF5KSB7CisgICAgICBkZWxheV9jaGFuZ2VfY291bnRlcl8gPSAwOworICAgIH0KKyAgICBp
ZiAoZGVsYXlfc2FtcGxlc18pIHsKKyAgICAgIGRlbGF5X3NhbXBsZXNfLT5ibG9ja3Nfc2luY2Vf
bGFzdF9jaGFuZ2UgPQorICAgICAgICAgIGRlbGF5X3NhbXBsZXNfLT5kZWxheSA9PSBkZWxheV9z
YW1wbGVzLT5kZWxheQorICAgICAgICAgICAgICA/IGRlbGF5X3NhbXBsZXNfLT5ibG9ja3Nfc2lu
Y2VfbGFzdF9jaGFuZ2UgKyAxCisgICAgICAgICAgICAgIDogMDsKKyAgICAgIGRlbGF5X3NhbXBs
ZXNfLT5ibG9ja3Nfc2luY2VfbGFzdF91cGRhdGUgPSAwOworICAgICAgZGVsYXlfc2FtcGxlc18t
PmRlbGF5ID0gZGVsYXlfc2FtcGxlcy0+ZGVsYXk7CisgICAgICBkZWxheV9zYW1wbGVzXy0+cXVh
bGl0eSA9IGRlbGF5X3NhbXBsZXMtPnF1YWxpdHk7CisgICAgfSBlbHNlIHsKKyAgICAgIGRlbGF5
X3NhbXBsZXNfID0gZGVsYXlfc2FtcGxlczsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKGRl
bGF5X3NhbXBsZXNfKSB7CisgICAgICArK2RlbGF5X3NhbXBsZXNfLT5ibG9ja3Nfc2luY2VfbGFz
dF9jaGFuZ2U7CisgICAgICArK2RlbGF5X3NhbXBsZXNfLT5ibG9ja3Nfc2luY2VfbGFzdF91cGRh
dGU7CisgICAgfQorICB9CisKKyAgaWYgKGRlbGF5X2NoYW5nZV9jb3VudGVyXyA8IDIgKiBrTnVt
QmxvY2tzUGVyU2Vjb25kKSB7CisgICAgKytkZWxheV9jaGFuZ2VfY291bnRlcl87CisgIH0KKwor
ICBpZiAoZGVsYXlfc2FtcGxlc18pIHsKKyAgICAvLyBDb21wdXRlIHRoZSByZW5kZXIgZGVsYXkg
YnVmZmVyIGRlbGF5LgorICAgIGNvbnN0IGJvb2wgdXNlX2h5c3RlcmVzaXMgPQorICAgICAgICBs
YXN0X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlfID09IERlbGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtS
ZWZpbmVkICYmCisgICAgICAgIGRlbGF5X3NhbXBsZXNfLT5xdWFsaXR5ID09IERlbGF5RXN0aW1h
dGU6OlF1YWxpdHk6OmtSZWZpbmVkOworICAgIGRlbGF5XyA9IENvbXB1dGVCdWZmZXJEZWxheShk
ZWxheV8sIGRlbGF5X2hlYWRyb29tX2Jsb2Nrc18sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVzZV9oeXN0ZXJlc2lzID8gaHlzdGVyZXNpc19saW1pdF8xX2Jsb2Nrc18gOiAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfaHlzdGVyZXNpcyA/IGh5c3RlcmVz
aXNfbGltaXRfMl9ibG9ja3NfIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KmRlbGF5X3NhbXBsZXNfKTsKKyAgICBsYXN0X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlfID0gZGVs
YXlfc2FtcGxlc18tPnF1YWxpdHk7CisgIH0KKworICBtZXRyaWNzXy5VcGRhdGUoZGVsYXlfc2Ft
cGxlc18gPyBhYnNsOjpvcHRpb25hbDxzaXplX3Q+KGRlbGF5X3NhbXBsZXNfLT5kZWxheSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYWJzbDo6bnVsbG9wdCwKKyAgICAgICAg
ICAgICAgICAgIGRlbGF5XyA/IGRlbGF5Xy0+ZGVsYXkgOiAwLCAwLCBkZWxheV9lc3RpbWF0b3Jf
LkNsb2NrZHJpZnQoKSk7CisKKyAgZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJhZWMzX3JlbmRlcl9k
ZWxheV9jb250cm9sbGVyX2RlbGF5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5X3Nh
bXBsZXMgPyBkZWxheV9zYW1wbGVzLT5kZWxheSA6IDApOworICBkYXRhX2R1bXBlcl8tPkR1bXBS
YXcoImFlYzNfcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfYnVmZmVyX2RlbGF5IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlbGF5XyA/IGRlbGF5Xy0+ZGVsYXkgOiAwKTsKKworICByZXR1cm4g
ZGVsYXlfOworfQorCitib29sIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGwyOjpIYXNDbG9ja2Ry
aWZ0KCkgY29uc3QgeworICByZXR1cm4gZGVsYXlfZXN0aW1hdG9yXy5DbG9ja2RyaWZ0KCkgIT0g
Q2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6a05vbmU7Cit9CisKK30gIC8vIG5hbWVzcGFjZQor
CitSZW5kZXJEZWxheUNvbnRyb2xsZXIqIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlMigK
KyAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgIGludCBzYW1wbGVf
cmF0ZV9oeikgeworICByZXR1cm4gbmV3IFJlbmRlckRlbGF5Q29udHJvbGxlckltcGwyKGNvbmZp
Zywgc2FtcGxlX3JhdGVfaHopOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljcy5jYwppbmRleCAw
OWRiMzM5NjgzNDBlMTc1NjcwNTM3NjQzMzdjYjlmZTI0YzVkNjQ2Li41ODJlMDMzNDgyOTdlYzM5
NjU2Zjc2OTUzYTJiNGYzNWU2YWU4MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5k
ZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRl
cl9kZWxheV9jb250cm9sbGVyX21ldHJpY3MuY2MKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9h
ZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBA
IC00NSw3ICs0Niw4IEBAIFJlbmRlckRlbGF5Q29udHJvbGxlck1ldHJpY3M6OlJlbmRlckRlbGF5
Q29udHJvbGxlck1ldHJpY3MoKSA9IGRlZmF1bHQ7CiB2b2lkIFJlbmRlckRlbGF5Q29udHJvbGxl
ck1ldHJpY3M6OlVwZGF0ZSgKICAgICBhYnNsOjpvcHRpb25hbDxzaXplX3Q+IGRlbGF5X3NhbXBs
ZXMsCiAgICAgc2l6ZV90IGJ1ZmZlcl9kZWxheV9ibG9ja3MsCi0gICAgYWJzbDo6b3B0aW9uYWw8
aW50PiBza2V3X3NoaWZ0X2Jsb2NrcykgeworICAgIGFic2w6Om9wdGlvbmFsPGludD4gc2tld19z
aGlmdF9ibG9ja3MsCisgICAgQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbCBjbG9ja2RyaWZ0KSB7
CiAgICsrY2FsbF9jb3VudGVyXzsKIAogICBpZiAoIWluaXRpYWxfdXBkYXRlKSB7CkBAIC0xMTQs
NiArMTE2LDEwIEBAIHZvaWQgUmVuZGVyRGVsYXlDb250cm9sbGVyTWV0cmljczo6VXBkYXRlKAog
ICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGRlbGF5X2NoYW5nZXMpLAogICAgICAgICBzdGF0aWNf
Y2FzdDxpbnQ+KERlbGF5Q2hhbmdlc0NhdGVnb3J5OjprTnVtQ2F0ZWdvcmllcykpOwogCisgICAg
UlRDX0hJU1RPR1JBTV9FTlVNRVJBVElPTigKKyAgICAgICAgIldlYlJUQy5BdWRpby5FY2hvQ2Fu
Y2VsbGVyLkNsb2NrZHJpZnQiLCBzdGF0aWNfY2FzdDxpbnQ+KGNsb2NrZHJpZnQpLAorICAgICAg
ICBzdGF0aWNfY2FzdDxpbnQ+KENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtOdW1DYXRlZ29y
aWVzKSk7CisKICAgICBtZXRyaWNzX3JlcG9ydGVkXyA9IHRydWU7CiAgICAgY2FsbF9jb3VudGVy
XyA9IDA7CiAgICAgUmVzZXRNZXRyaWNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9y
ZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJf
ZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzLmgKaW5kZXggMWNmZTg5OWI0ODg1Y2IzMDRiMjdhZmY1
OTcxZWNhOTYyNzA1N2UyZi4uMjJjYzIwMmU3M2E1MmQzMTZiMTI4ZWE0ODJiZDZkZGRjM2ZiMDA2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0
cmljcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJp
Y3MuaApAQCAtMTEsNyArMTEsMTAgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5H
X0FFQzNfUkVOREVSX0RFTEFZX0NPTlRST0xMRVJfTUVUUklDU19IXwogI2RlZmluZSBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUVDM19SRU5ERVJfREVMQVlfQ09OVFJPTExFUl9NRVRSSUNTX0hf
CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0X2Rl
dGVjdG9yLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKQEAgLTI0LDcgKzI3LDggQEAgY2xhc3MgUmVuZGVyRGVsYXlDb250cm9s
bGVyTWV0cmljcyB7CiAgIC8vIFVwZGF0ZXMgdGhlIG1ldHJpYyB3aXRoIG5ldyBkYXRhLgogICB2
b2lkIFVwZGF0ZShhYnNsOjpvcHRpb25hbDxzaXplX3Q+IGRlbGF5X3NhbXBsZXMsCiAgICAgICAg
ICAgICAgIHNpemVfdCBidWZmZXJfZGVsYXlfYmxvY2tzLAotICAgICAgICAgICAgICBhYnNsOjpv
cHRpb25hbDxpbnQ+IHNrZXdfc2hpZnRfYmxvY2tzKTsKKyAgICAgICAgICAgICAgYWJzbDo6b3B0
aW9uYWw8aW50PiBza2V3X3NoaWZ0X2Jsb2NrcywKKyAgICAgICAgICAgICAgQ2xvY2tkcmlmdERl
dGVjdG9yOjpMZXZlbCBjbG9ja2RyaWZ0KTsKIAogICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIG1l
dHJpY3MgaGF2ZSBqdXN0IGJlZW4gcmVwb3J0ZWQsIG90aGVyd2lzZSBmYWxzZS4KICAgYm9vbCBN
ZXRyaWNzUmVwb3J0ZWQoKSB7IHJldHVybiBtZXRyaWNzX3JlcG9ydGVkXzsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljc191bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3NfdW5p
dHRlc3QuY2MKaW5kZXggZTg2N2RlNGRmNDI4MjgwZGRjNmMxZDRmZWU0OTA0MGIxMzAwMWQwOC4u
MjE2YjBlMjIwZDRiMjY1Nzc3YmQzNGJjYTkyMGZkOTU2YmNiYjNiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljc191bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzX3VuaXR0
ZXN0LmNjCkBAIC0yMiwxMCArMjIsMTIgQEAgVEVTVChSZW5kZXJEZWxheUNvbnRyb2xsZXJNZXRy
aWNzLCBOb3JtYWxVc2FnZSkgewogCiAgIGZvciAoaW50IGogPSAwOyBqIDwgMzsgKytqKSB7CiAg
ICAgZm9yIChpbnQgayA9IDA7IGsgPCBrTWV0cmljc1JlcG9ydGluZ0ludGVydmFsQmxvY2tzIC0g
MTsgKytrKSB7Ci0gICAgICBtZXRyaWNzLlVwZGF0ZShhYnNsOjpudWxsb3B0LCAwLCBhYnNsOjpu
dWxsb3B0KTsKKyAgICAgIG1ldHJpY3MuVXBkYXRlKGFic2w6Om51bGxvcHQsIDAsIGFic2w6Om51
bGxvcHQsCisgICAgICAgICAgICAgICAgICAgICBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjpr
Tm9uZSk7CiAgICAgICBFWFBFQ1RfRkFMU0UobWV0cmljcy5NZXRyaWNzUmVwb3J0ZWQoKSk7CiAg
ICAgfQotICAgIG1ldHJpY3MuVXBkYXRlKGFic2w6Om51bGxvcHQsIDAsIGFic2w6Om51bGxvcHQp
OworICAgIG1ldHJpY3MuVXBkYXRlKGFic2w6Om51bGxvcHQsIDAsIGFic2w6Om51bGxvcHQsCisg
ICAgICAgICAgICAgICAgICAgQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6a05vbmUpOwogICAg
IEVYUEVDVF9UUlVFKG1ldHJpY3MuTWV0cmljc1JlcG9ydGVkKCkpOwogICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCmluZGV4
IDkzYzY0OTk4ZTliZDQwODMzNTg0ZDkzN2YyNmRiMTEyZWZiYWU1MDcuLmU5ZjAyZDMyNGMxM2Qz
NGVkNGRjMmE0NDRlMDhhZTMzYmM3MGQ2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jl
bmRlcl9kZWxheV9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jl
bmRlcl9kZWxheV9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCkBAIC01NywxMCArNTcsOSBAQCBURVNU
KFJlbmRlckRlbGF5Q29udHJvbGxlciwgTm9SZW5kZXJTaWduYWwpIHsKICAgICAgIGZvciAoYXV0
byByYXRlIDogezgwMDAsIDE2MDAwLCAzMjAwMCwgNDgwMDB9KSB7CiAgICAgICAgIFNDT1BFRF9U
UkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUpKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlckRlbGF5QnVmZmVyPiBkZWxheV9idWZmZXIoCi0gICAgICAgICAgICBSZW5kZXJEZWxheUJ1
ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CisgICAgICAgICAg
ICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRl
KSkpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPiBkZWxh
eV9jb250cm9sbGVyKAotICAgICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUo
Ci0gICAgICAgICAgICAgICAgY29uZmlnLCBSZW5kZXJEZWxheUJ1ZmZlcjo6RGVsYXlFc3RpbWF0
b3JPZmZzZXQoY29uZmlnKSwgcmF0ZSkpOworICAgICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9s
bGVyOjpDcmVhdGUyKGNvbmZpZywgcmF0ZSkpOwogICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsg
ayA8IDEwMDsgKytrKSB7CiAgICAgICAgICAgYXV0byBkZWxheSA9IGRlbGF5X2NvbnRyb2xsZXIt
PkdldERlbGF5KAogICAgICAgICAgICAgICBkZWxheV9idWZmZXItPkdldERvd25zYW1wbGVkUmVu
ZGVyQnVmZmVyKCksIGRlbGF5X2J1ZmZlci0+RGVsYXkoKSwKQEAgLTg3LDExICs4Niw5IEBAIFRF
U1QoUmVuZGVyRGVsYXlDb250cm9sbGVyLCBCYXNpY0FwaUNhbGxzKSB7CiAgICAgICAgIHN0ZDo6
dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gcmVuZGVyX2Jsb2NrKAogICAgICAgICAgICAgTnVt
QmFuZHNGb3JSYXRlKHJhdGUpLCBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMC5mKSk7
CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5
X2J1ZmZlcigKLSAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCBO
dW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpD
cmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5X2NvbnRyb2xsZXIoCi0gICAgICAg
ICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZSgKLSAgICAgICAgICAgICAgICBFY2hv
Q2FuY2VsbGVyM0NvbmZpZygpLAotICAgICAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpE
ZWxheUVzdGltYXRvck9mZnNldChjb25maWcpLCByYXRlKSk7CisgICAgICAgICAgICBSZW5kZXJE
ZWxheUNvbnRyb2xsZXI6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgcmF0ZSkpOwog
ICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEwOyArK2spIHsKICAgICAgICAgICByZW5k
ZXJfZGVsYXlfYnVmZmVyLT5JbnNlcnQocmVuZGVyX2Jsb2NrKTsKICAgICAgICAgICByZW5kZXJf
ZGVsYXlfYnVmZmVyLT5QcmVwYXJlQ2FwdHVyZVByb2Nlc3NpbmcoKTsKQEAgLTEyOCwxMSArMTI1
LDkgQEAgVEVTVChSZW5kZXJEZWxheUNvbnRyb2xsZXIsIEFsaWdubWVudCkgewogICAgICAgICAg
IGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IGRlbGF5X2Jsb2NrczsKICAgICAgICAgICBT
Q09QRURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChyYXRlLCBkZWxheV9zYW1wbGVzKSk7CiAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVm
ZmVyKAotICAgICAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVt
QmFuZHNGb3JSYXRlKHJhdGUpKSk7CisgICAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpD
cmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlcigKLSAgICAg
ICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICBjb25maWcsIFJlbmRlckRlbGF5QnVmZmVyOjpEZWxheUVzdGltYXRvck9mZnNldChjb25maWcp
LAotICAgICAgICAgICAgICAgICAgcmF0ZSkpOworICAgICAgICAgICAgICBSZW5kZXJEZWxheUNv
bnRyb2xsZXI6OkNyZWF0ZTIoY29uZmlnLCByYXRlKSk7CiAgICAgICAgICAgRGVsYXlCdWZmZXI8
ZmxvYXQ+IHNpZ25hbF9kZWxheV9idWZmZXIoZGVsYXlfc2FtcGxlcyk7CiAgICAgICAgICAgZm9y
IChzaXplX3QgayA9IDA7IGsgPCAoNDAwICsgZGVsYXlfc2FtcGxlcyAvIGtCbG9ja1NpemUpOyAr
K2spIHsKICAgICAgICAgICAgIFJhbmRvbWl6ZVNhbXBsZVZlY3RvcigmcmFuZG9tX2dlbmVyYXRv
ciwgcmVuZGVyX2Jsb2NrWzBdKTsKQEAgLTE3OSwxMSArMTc0LDkgQEAgVEVTVChSZW5kZXJEZWxh
eUNvbnRyb2xsZXIsIE5vbkNhdXNhbEFsaWdubWVudCkgewogICAgICAgICAgIGFic2w6Om9wdGlv
bmFsPERlbGF5RXN0aW1hdGU+IGRlbGF5X2Jsb2NrczsKICAgICAgICAgICBTQ09QRURfVFJBQ0Uo
UHJvZHVjZURlYnVnVGV4dChyYXRlLCAtZGVsYXlfc2FtcGxlcykpOwogICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAg
ICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIE51bUJhbmRzRm9yUmF0
ZShyYXRlKSkpOworICAgICAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25m
aWcsIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOwogICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5X2NvbnRyb2xsZXIoCi0gICAgICAgICAgICAgIFJl
bmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlKAotICAgICAgICAgICAgICAgICAgRWNob0NhbmNl
bGxlcjNDb25maWcoKSwKLSAgICAgICAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpEZWxh
eUVzdGltYXRvck9mZnNldChjb25maWcpLCByYXRlKSk7CisgICAgICAgICAgICAgIFJlbmRlckRl
bGF5Q29udHJvbGxlcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCByYXRlKSk7CiAg
ICAgICAgICAgRGVsYXlCdWZmZXI8ZmxvYXQ+IHNpZ25hbF9kZWxheV9idWZmZXIoLWRlbGF5X3Nh
bXBsZXMpOwogICAgICAgICAgIGZvciAoaW50IGsgPSAwOwogICAgICAgICAgICAgICAgayA8ICg0
MDAgLSBkZWxheV9zYW1wbGVzIC8gc3RhdGljX2Nhc3Q8aW50PihrQmxvY2tTaXplKSk7ICsraykg
ewpAQCAtMjIzLDExICsyMTYsOSBAQCBURVNUKFJlbmRlckRlbGF5Q29udHJvbGxlciwgQWxpZ25t
ZW50V2l0aEppdHRlcikgewogICAgICAgICAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+
IGRlbGF5X2Jsb2NrczsKICAgICAgICAgICBTQ09QRURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChy
YXRlLCBkZWxheV9zYW1wbGVzKSk7CiAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRl
bGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgICAgICAgICBSZW5kZXJEZWxh
eUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CisgICAgICAg
ICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRl
KHJhdGUpKSk7CiAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxl
cj4gZGVsYXlfY29udHJvbGxlcigKLSAgICAgICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9sbGVy
OjpDcmVhdGUoCi0gICAgICAgICAgICAgICAgICBjb25maWcsIFJlbmRlckRlbGF5QnVmZmVyOjpE
ZWxheUVzdGltYXRvck9mZnNldChjb25maWcpLAotICAgICAgICAgICAgICAgICAgcmF0ZSkpOwor
ICAgICAgICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZTIoY29uZmlnLCByYXRl
KSk7CiAgICAgICAgICAgRGVsYXlCdWZmZXI8ZmxvYXQ+IHNpZ25hbF9kZWxheV9idWZmZXIoZGVs
YXlfc2FtcGxlcyk7CiAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCAoMTAwMCArIGRl
bGF5X3NhbXBsZXMgLyBrQmxvY2tTaXplKSAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbmZpZy5kZWxheS5hcGlfY2FsbF9qaXR0ZXJfYmxvY2tzICsKQEAgLTI4
MCwxMSArMjcxLDEwIEBAIFRFU1QoUmVuZGVyRGVsYXlDb250cm9sbGVyLCBJbml0aWFsSGVhZHJv
b20pIHsKICAgICAgIGZvciAoYXV0byByYXRlIDogezgwMDAsIDE2MDAwLCAzMjAwMCwgNDgwMDB9
KSB7CiAgICAgICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUpKTsKICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVy
KAotICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIE51bUJhbmRz
Rm9yUmF0ZShyYXRlKSkpOworICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIo
Y29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPiBkZWxheV9jb250cm9sbGVyKAotICAgICAgICAgICAg
UmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUoCi0gICAgICAgICAgICAgICAgY29uZmlnLCBS
ZW5kZXJEZWxheUJ1ZmZlcjo6RGVsYXlFc3RpbWF0b3JPZmZzZXQoY29uZmlnKSwgcmF0ZSkpOwor
ICAgICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUyKGNvbmZpZywgcmF0ZSkp
OwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMzAwLDEyICsyOTAsMTAgQEAgVEVTVChSZW5kZXJE
ZWxheUNvbnRyb2xsZXIsIFdyb25nQ2FwdHVyZVNpemUpIHsKICAgZm9yIChhdXRvIHJhdGUgOiB7
ODAwMCwgMTYwMDAsIDMyMDAwLCA0ODAwMH0pIHsKICAgICBTQ09QRURfVFJBQ0UoUHJvZHVjZURl
YnVnVGV4dChyYXRlKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiBy
ZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNv
bmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CisgICAgICAgIFJlbmRlckRlbGF5QnVmZmVy
OjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAgICAgRVhQRUNUX0RF
QVRIKAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPigKLSAg
ICAgICAgICAgIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlKAotICAgICAgICAgICAgICAg
IEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksCi0gICAgICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZm
ZXI6OkRlbGF5RXN0aW1hdG9yT2Zmc2V0KGNvbmZpZyksIHJhdGUpKQorICAgICAgICAgICAgUmVu
ZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHJhdGUp
KQogICAgICAgICAgICAgLT5HZXREZWxheShyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXREb3duc2Ft
cGxlZFJlbmRlckJ1ZmZlcigpLAogICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfZGVsYXlf
YnVmZmVyLT5EZWxheSgpLCBlY2hvX3JlbW92ZXJfZGVsYXksIGJsb2NrKSwKICAgICAgICAgIiIp
OwpAQCAtMzIwLDExICszMDgsMTAgQEAgVEVTVChSZW5kZXJEZWxheUNvbnRyb2xsZXIsIERJU0FC
TEVEX1dyb25nU2FtcGxlUmF0ZSkgewogICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0
KHJhdGUpKTsKICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgICBS
ZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7
CisgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JS
YXRlKHJhdGUpKSk7CiAgICAgRVhQRUNUX0RFQVRIKAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyRGVsYXlDb250cm9sbGVyPihSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZSgKLSAg
ICAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksCi0gICAgICAgICAgICBSZW5kZXJEZWxh
eUJ1ZmZlcjo6RGVsYXlFc3RpbWF0b3JPZmZzZXQoY29uZmlnKSwgcmF0ZSkpLAorICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPigKKyAgICAgICAgICAgIFJlbmRl
ckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCByYXRlKSks
CiAgICAgICAgICIiKTsKICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVy
X3JldmVyYl9tb2RlbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9yZXZlcmJfbW9kZWwuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGFkNTRjMGNjMzQ1ZjY1ZDU2ZGYyZTdmMDRmYzM5OWRmYzU2YzMyZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9yZXZlcmJfbW9kZWwuY2MKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfcmV2ZXJiX21vZGVsLmgiCisKKyNpbmNsdWRl
IDxhbGdvcml0aG0+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworUmVuZGVyUmV2ZXJiTW9k
ZWw6OlJlbmRlclJldmVyYk1vZGVsKCkgeworICBSZXNldCgpOworfQorCitSZW5kZXJSZXZlcmJN
b2RlbDo6flJlbmRlclJldmVyYk1vZGVsKCkgPSBkZWZhdWx0OworCit2b2lkIFJlbmRlclJldmVy
Yk1vZGVsOjpSZXNldCgpIHsKKyAgcmVuZGVyX3JldmVyYl8uUmVzZXQoKTsKK30KKwordm9pZCBS
ZW5kZXJSZXZlcmJNb2RlbDo6QXBwbHkoY29uc3QgVmVjdG9yQnVmZmVyJiBzcGVjdHJ1bV9idWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVsYXlfYmxvY2tzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmV2ZXJiX2RlY2F5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8ZmxvYXQ+IHJldmVyYl9wb3dlcl9z
cGVjdHJ1bSkgeworICBpbnQgaWR4X2F0X2RlbGF5ID0KKyAgICAgIHNwZWN0cnVtX2J1ZmZlci5P
ZmZzZXRJbmRleChzcGVjdHJ1bV9idWZmZXIucmVhZCwgZGVsYXlfYmxvY2tzKTsKKyAgaW50IGlk
eF9wYXN0ID0gc3BlY3RydW1fYnVmZmVyLkluY0luZGV4KGlkeF9hdF9kZWxheSk7CisgIGNvbnN0
IGF1dG8mIFgyID0gc3BlY3RydW1fYnVmZmVyLmJ1ZmZlcltpZHhfYXRfZGVsYXldOworICBSVENf
RENIRUNLX0VRKFgyLnNpemUoKSwgcmV2ZXJiX3Bvd2VyX3NwZWN0cnVtLnNpemUoKSk7CisgIHN0
ZDo6Y29weShYMi5iZWdpbigpLCBYMi5lbmQoKSwgcmV2ZXJiX3Bvd2VyX3NwZWN0cnVtLmJlZ2lu
KCkpOworICByZW5kZXJfcmV2ZXJiXy5BZGRSZXZlcmJOb0ZyZXFTaGFwaW5nKHNwZWN0cnVtX2J1
ZmZlci5idWZmZXJbaWR4X3Bhc3RdLCAxLjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldmVyYl9kZWNheSwgcmV2ZXJiX3Bvd2VyX3NwZWN0cnVtKTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVy
X3JldmVyYl9tb2RlbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3JldmVyYl9tb2RlbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ0MDRhNjllY2QyZjIwYzA3NTk3OWE4OWU1NGNlN2MzMTU0NDkxMjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfcmV2ZXJiX21vZGVsLmgKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FFQzNfUkVOREVSX1JFVkVSQl9NT0RFTF9IXworI2RlZmluZSBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUVDM19SRU5ERVJfUkVWRVJCX01PREVMX0hfCisKKyNpbmNsdWRl
ICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JldmVyYl9tb2RlbC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3ZlY3Rvcl9idWZmZXIuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFRoZSBSZW5k
ZXJSZXZlcmJNb2RlbCBjbGFzcyBhcHBsaWVzIGFuIGV4cG9uZW50aWFsIHJldmVyYmVyYW50IG1v
ZGVsIG92ZXIgdGhlCisvLyByZW5kZXIgc3BlY3RydW0uCitjbGFzcyBSZW5kZXJSZXZlcmJNb2Rl
bCB7CisgcHVibGljOgorICBSZW5kZXJSZXZlcmJNb2RlbCgpOworICB+UmVuZGVyUmV2ZXJiTW9k
ZWwoKTsKKworICAvLyBSZXNldHMgdGhlIHN0YXRlLgorICB2b2lkIFJlc2V0KCk7CisKKyAgLy8g
QXBwbGllcyB0aGUgcmV2ZXJiZXJhdGlvbiBtb2RlbCBvdmVyIHRoZSByZW5kZXIgc3BlY3RydW0u
IEl0IGFsc28gcmV0dXJucworICAvLyB0aGUgcmV2ZXJiZXJhdGlvbiByZW5kZXIgcG93ZXIgc3Bl
Y3RydW0gaW4gdGhlIGFycmF5IHJldmVyYl9wb3dlcl9zcGVjdHJ1bS4KKyAgdm9pZCBBcHBseShj
b25zdCBWZWN0b3JCdWZmZXImIHNwZWN0cnVtX2J1ZmZlciwKKyAgICAgICAgICAgICBpbnQgZGVs
YXlfYmxvY2tzLAorICAgICAgICAgICAgIGZsb2F0IHJldmVyYl9kZWNheSwKKyAgICAgICAgICAg
ICBydGM6OkFycmF5VmlldzxmbG9hdD4gcmV2ZXJiX3Bvd2VyX3NwZWN0cnVtKTsKKworICAvLyBH
ZXRzIHRoZSByZXZlcmJlcmF0aW9uIHNwZWN0cnVtIHRoYXQgd2FzIGFkZGVkIHRvIHRoZSByZW5k
ZXIgc3BlY3RydW0gZm9yCisgIC8vIGNvbXB1dGluZyB0aGUgcmV2ZXJiZXJhdGlvbiByZW5kZXIg
c3BlY3RydW0uCisgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBHZXRSZXZlcmJDb250cmli
dXRpb25Qb3dlclNwZWN0cnVtKCkgY29uc3QgeworICAgIHJldHVybiByZW5kZXJfcmV2ZXJiXy5H
ZXRQb3dlclNwZWN0cnVtKCk7CisgIH0KKworIHByaXZhdGU6CisgIFJldmVyYk1vZGVsIHJlbmRl
cl9yZXZlcmJfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Yy4KKworI2VuZGlmICAvLyBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRU5ERVJfUkVWRVJCX01PREVMX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5emVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplci5jYwppbmRleCA1MGMzNGNlNDNmNjFhNTAy
ZWRmMjgxM2NjMDdiMDQ0MDY4ZjQxNDFjLi4zM2IwNGJmNzBjOWZmODBkM2U5MDM5MTFlNzkzMTIx
ZjNjOTlkNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5
emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuY2MKQEAg
LTEyLDcgKzEyLDEwIEBACiAKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5
emVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5emVyLmgKaW5kZXggYzYw
M2M5MjE0NDdiOTA1Y2QwZjQyZTUxMDEzODkwNTY2ODNmYmQ2ZS4uOGE0NDIzMmNmOWEwZDMxYzdm
ZDVhMmQ2MDU2YjQ3ZTAzYWRlMzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVy
X3NpZ25hbF9hbmFseXplci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5h
bHl6ZXIuaApAQCAtMTEsMTMgKzExLDE1IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BRUMzX1JFTkRFUl9TSUdOQUxfQU5BTFlaRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FFQzNfUkVOREVSX1NJR05BTF9BTkFMWVpFUl9IXwogCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgogI2luY2x1ZGUgPGFycmF5PgotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRl
IDxjc3RkZGVmPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUg
ImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxf
YW5hbHl6ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5
emVyX3VuaXR0ZXN0LmNjCmluZGV4IGY5YjE5NTU4Mzg3NWYwMjk2ODkwMDMxNGEzMjZmYjY2MmQy
OGU5YWMuLmE5OTNmOGY4YWNmODljZDliMDIzNWMzODA0NDU3MWZjMzI1OTk4N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXJfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplcl91bml0dGVzdC5jYwpAQCAt
NTksNyArNTksNyBAQCBURVNUKFJlbmRlclNpZ25hbEFuYWx5emVyLCBOb0ZhbHNlRGV0ZWN0aW9u
T2ZOYXJyb3dCYW5kcykgewogICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IHgoMywg
c3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUsIDAuZikpOwogICBzdGQ6OmFycmF5PGZsb2F0
LCBrQmxvY2tTaXplPiB4X29sZDsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVy
PiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShF
Y2hvQ2FuY2VsbGVyM0NvbmZpZygpLCAzKSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3Jl
YXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCAzKSk7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtG
ZnRMZW5ndGhCeTJQbHVzMT4gbWFzazsKICAgeF9vbGQuZmlsbCgwLmYpOwogCkBAIC05Myw3ICs5
Myw3IEBAIFRFU1QoUmVuZGVyU2lnbmFsQW5hbHl6ZXIsIE5hcnJvd0JhbmREZXRlY3Rpb24pIHsK
ICAgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnOwogICBjb25maWcuZGVsYXkubWluX2VjaG9f
cGF0aF9kZWxheV9ibG9ja3MgPSAwOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZm
ZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRl
KGNvbmZpZywgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAz
KSk7CiAKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBtYXNrOwogICB4
X29sZC5maWxsKDAuZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hv
X2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9fZXN0aW1hdG9yLmNj
CmluZGV4IDJlM2FkOWZlYTcyN2UyOWVhNGNmYzE3MDZmMjkzZGZmNjc4ZDgwOWEuLjYyN2RkOTAw
YzRlODk1MGUwZGM2ODdiZWQ1NGQzYzVkNmQyZGJiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3Jlc2lkdWFsX2VjaG9fZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lk
dWFsX2VjaG9fZXN0aW1hdG9yLmNjCkBAIC0xMSw5ICsxMSwxMSBAQAogCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNob19lc3RpbWF0b3IuaCIKIAot
I2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsX2ZhbGxi
YWNrLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCkBAIC0xMDUsOSArMTA3LDE1IEBA
IHZvaWQgUmVzaWR1YWxFY2hvRXN0aW1hdG9yOjpFc3RpbWF0ZSgKIAogICAvLyBFc3RpbWF0ZSB0
aGUgcmVzaWR1YWwgZWNobyBwb3dlci4KICAgaWYgKGFlY19zdGF0ZS5Vc2FibGVMaW5lYXJFc3Rp
bWF0ZSgpKSB7Ci0gICAgUlRDX0RDSEVDSyghYWVjX3N0YXRlLlNhdHVyYXRlZEVjaG8oKSk7CiAg
ICAgTGluZWFyRXN0aW1hdGUoUzJfbGluZWFyLCBhZWNfc3RhdGUuRXJsZSgpLCBhZWNfc3RhdGUu
RXJsZVVuY2VydGFpbnR5KCksCiAgICAgICAgICAgICAgICAgICAgUjIpOworCisgICAgLy8gV2hl
biB0aGVyZSBpcyBzYXR1cmF0ZWQgZWNobywgYXNzdW1lIHRoZSBzYW1lIHNwZWN0cmFsIGNvbnRl
bnQgYXMgaXMKKyAgICAvLyBwcmVzZW50IGluIHRoZSBtaWNyb3BvbmUgc2lnbmFsLgorICAgIGlm
IChhZWNfc3RhdGUuU2F0dXJhdGVkRWNobygpKSB7CisgICAgICBzdGQ6OmNvcHkoWTIuYmVnaW4o
KSwgWTIuZW5kKCksIFIyLT5iZWdpbigpKTsKKyAgICB9CisKICAgICAvLyBBZGRzIHRoZSBlc3Rp
bWF0ZWQgdW5tb2RlbGxlZCBlY2hvIHBvd2VyIHRvIHRoZSByZXNpZHVhbCBlY2hvIHBvd2VyCiAg
ICAgLy8gZXN0aW1hdGUuCiAgICAgaWYgKGVjaG9fcmV2ZXJiXykgewpAQCAtMTUxLDEwICsxNTks
MTAgQEAgdm9pZCBSZXNpZHVhbEVjaG9Fc3RpbWF0b3I6OkVzdGltYXRlKAogICAgIH0KICAgICBO
b25MaW5lYXJFc3RpbWF0ZShlY2hvX3BhdGhfZ2FpbiwgWDIsIFkyLCBSMik7CiAKLSAgICAvLyBJ
ZiB0aGUgZWNobyBpcyBzYXR1cmF0ZWQsIGVzdGltYXRlIHRoZSBlY2hvIHBvd2VyIGFzIHRoZSBt
YXhpbXVtIGVjaG8KLSAgICAvLyBwb3dlciB3aXRoIGEgbGVha2FnZSBmYWN0b3IuCisgICAgLy8g
V2hlbiB0aGVyZSBpcyBzYXR1cmF0ZWQgZWNobywgYXNzdW1lIHRoZSBzYW1lIHNwZWN0cmFsIGNv
bnRlbnQgYXMgaXMKKyAgICAvLyBwcmVzZW50IGluIHRoZSBtaWNyb3BvbmUgc2lnbmFsLgogICAg
IGlmIChhZWNfc3RhdGUuU2F0dXJhdGVkRWNobygpKSB7Ci0gICAgICBSMi0+ZmlsbCgoKnN0ZDo6
bWF4X2VsZW1lbnQoUjItPmJlZ2luKCksIFIyLT5lbmQoKSkpICogMTAwLmYpOworICAgICAgc3Rk
Ojpjb3B5KFkyLmJlZ2luKCksIFkyLmVuZCgpLCBSMi0+YmVnaW4oKSk7CiAgICAgfQogCiAgICAg
aWYgKCEoYWVjX3N0YXRlLlRyYW5zcGFyZW50TW9kZSgpICYmIHNvZnRfdHJhbnNwYXJlbnRfbW9k
ZV8pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hvX2VzdGltYXRv
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNob19lc3RpbWF0b3IuaAppbmRleCA2ZGNm
MjRmMDkwNzkwYjcyNGU4ZTJlNDc0MmNmMzNjYTE0MjEzY2FlLi41Mjg4NWE1OGQ4NWEzMzgyNDIy
Y2RmOWNlMjJlZjIwM2JhMTI5ZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVh
bF9lY2hvX2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9fZXN0
aW1hdG9yLmgKQEAgLTExLDE4ICsxMSwxOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NF
U1NJTkdfQUVDM19SRVNJRFVBTF9FQ0hPX0VTVElNQVRPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfQUVDM19SRVNJRFVBTF9FQ0hPX0VTVElNQVRPUl9IXwogCi0jaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNs
dWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFi
c2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIz
X2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNf
Y29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0
YXRlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1
ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9t
b2RlbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9t
b2RlbF9mYWxsYmFjay5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3ZlY3Rvcl9idWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAt
MzksNyArMzksNyBAQCBjbGFzcyBSZXNpZHVhbEVjaG9Fc3RpbWF0b3IgewogICAgICAgICAgICAg
ICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4qIFIyKTsKIAogICAvLyBS
ZXR1cm5zIHRoZSByZXZlcmJlcmFudCBwb3dlciBzcGVjdHJ1bSBjb250cmlidXRpb25zIHRvIHRo
ZSBlY2hvIHJlc2lkdWFsLgotICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnky
UGx1czE+JiBHZXRSZXZlcmJQb3dlclNwZWN0cnVtKCkgY29uc3QgeworICBydGM6OkFycmF5Vmll
dzxjb25zdCBmbG9hdD4gR2V0UmV2ZXJiUG93ZXJTcGVjdHJ1bSgpIGNvbnN0IHsKICAgICBpZiAo
ZWNob19yZXZlcmJfKSB7CiAgICAgICByZXR1cm4gZWNob19yZXZlcmJfLT5HZXRQb3dlclNwZWN0
cnVtKCk7CiAgICAgfSBlbHNlIHsKQEAgLTY2LDcgKzY2LDYgQEAgY2xhc3MgUmVzaWR1YWxFY2hv
RXN0aW1hdG9yIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmFycmF5PGZs
b2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBZMiwKICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+KiBSMik7CiAKLQogICAvLyBFc3Rp
bWF0ZXMgdGhlIGVjaG8gZ2VuZXJhdGluZyBzaWduYWwgcG93ZXIgYXMgZ2F0ZWQgbWF4aW1hbCBw
b3dlciBvdmVyIGEKICAgLy8gdGltZSB3aW5kb3cuCiAgIHZvaWQgRWNob0dlbmVyYXRpbmdQb3dl
cihjb25zdCBWZWN0b3JCdWZmZXImIHNwZWN0cnVtX2J1ZmZlciwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9fZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmVzaWR1YWxfZWNob19lc3RpbWF0b3JfdW5pdHRlc3QuY2MKaW5kZXggODMyZDhjYTFk
MzNiNjU3NjQ4OWFlMjFiODEwMjVhOWI2NjNjMzIwNy4uMmU3M2E3ZTYxMTYxMDFmY2M2YmNjYTE3
ZjJjNzA4MWE1MTFjOWFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNo
b19lc3RpbWF0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNo
b19lc3RpbWF0b3JfdW5pdHRlc3QuY2MKQEAgLTI3LDcgKzI3LDcgQEAgVEVTVChSZXNpZHVhbEVj
aG9Fc3RpbWF0b3IsIE51bGxSZXNpZHVhbEVjaG9Qb3dlck91dHB1dCkgewogICBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZyBjb25maWc7CiAgIEFlY1N0YXRlIGFlY19zdGF0ZShjb25maWcpOwogICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAg
ICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgUmVuZGVyRGVs
YXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8
ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+IEgyOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0
TGVuZ3RoQnkyUGx1czE+IFMyX2xpbmVhcjsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0
aEJ5MlBsdXMxPiBZMjsKQEAgLTQ4LDcgKzQ4LDcgQEAgVEVTVChSZXNpZHVhbEVjaG9Fc3RpbWF0
b3IsIERJU0FCTEVEX0Jhc2ljVGVzdCkgewogICBSZXNpZHVhbEVjaG9Fc3RpbWF0b3IgZXN0aW1h
dG9yKGNvbmZpZyk7CiAgIEFlY1N0YXRlIGFlY19zdGF0ZShjb25maWcpOwogICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICBSZW5k
ZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZm
ZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0
aEJ5MlBsdXMxPiBFMl9tYWluOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1
czE+IEUyX3NoYWRvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9kZWNheV9l
c3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVjYXlfZXN0aW1hdG9yLmNjCmlu
ZGV4IGY4MGFmYTJkZmNiYTA5NjNmZTE5YzIwOWQzMjAzZDE3N2MwYzhjNTkuLjk1ZmQxM2FmNTk2
MjY5YWUxNTFhZmVhZjg3NDE0NmExNzNjM2ExN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JldmVyYl9kZWNheV9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2Rl
Y2F5X2VzdGltYXRvci5jYwpAQCAtMTAsMTEgKzEwLDEzIEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVjYXlfZXN0aW1hdG9yLmgiCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CiAj
aW5jbHVkZSA8bnVtZXJpYz4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVk
ZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVs
ZF90cmlhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2RlY2F5X2VzdGlt
YXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2RlY2F5X2VzdGltYXRvci5oCmluZGV4IDY3
YTg0YWI4ZmNiZjUzM2Q5YzdhZjBkYThlOTkyODg4M2E2MGE2ZDYuLjRjOGQwYzY0MzQ2MmZlYWU3
N2VkYTlhNDVlNWUxYTE3NWUwNjE2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVy
Yl9kZWNheV9lc3RpbWF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVjYXlfZXN0
aW1hdG9yLmgKQEAgLTE2LDEyICsxNiwxMiBAQAogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRp
b25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5jbHVkZSAiYXBpL2F1ZGlv
L2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2FlYzNfY29tbW9uLmgiICAvLyBrTWF4QWRhcHRpdmVGaWx0ZXIuLi4KIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKIGNsYXNzIEFwbURhdGFEdW1wZXI7CitzdHJ1Y3QgRWNob0NhbmNl
bGxlcjNDb25maWc7CiAKIC8vIENsYXNzIGZvciBlc3RpbWF0aW5nIHRoZSBkZWNheSBvZiB0aGUg
bGF0ZSByZXZlcmIuCiBjbGFzcyBSZXZlcmJEZWNheUVzdGltYXRvciB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9yZXZlcmJfZnJlcXVlbmN5X3Jlc3BvbnNlLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmV2ZXJiX2ZyZXF1ZW5jeV9yZXNwb25zZS5jYwppbmRleCAwZDgyNTE1ZWM0YjI1Njg4ZDcz
NTRiZTEzMmE4MjIwOGE5NjVkYzZiLi5kMjEwM2Q0NDJlNGI0NWZmODRlMTZhNzZkNjA0YzhhMDQ2
NDliNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZnJlcXVlbmN5X3Jlc3Bv
bnNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9mcmVxdWVuY3lfcmVzcG9uc2UuY2MK
QEAgLTEwLDE0ICsxMCwxMiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmV2ZXJiX2ZyZXF1ZW5jeV9yZXNwb25zZS5oIgogCisjaW5jbHVkZSA8c3RkZGVmLmg+
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGFycmF5PgotI2luY2x1ZGUgPGNtYXRo
PgotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxudW1lcmljPgogCiAjaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZp
Zy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9u
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jl
dmVyYl9mcmVxdWVuY3lfcmVzcG9uc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9mcmVxdWVu
Y3lfcmVzcG9uc2UuaAppbmRleCAyMzQ4NWUwMDlmYmUzMGViNmQzMjczNjFiZTZhMTQwNzMwODFi
MDJjLi5lYjYzYjhlNTJlODU0YmNjYTlmMTg0ZWVmYTY1MTg3MzljZDhiOGExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZnJlcXVlbmN5X3Jlc3BvbnNlLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvcmV2ZXJiX2ZyZXF1ZW5jeV9yZXNwb25zZS5oCkBAIC0xMSwxMyArMTEsMTIgQEAK
ICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfUkVWRVJCX0ZSRVFVRU5DWV9S
RVNQT05TRV9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRVZFUkJf
RlJFUVVFTkNZX1JFU1BPTlNFX0hfCiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8YXJy
YXk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3JldmVyYl9tb2RlbC5jYwppbmRleCAwY2EyNDhmYzc1NDMxZWE2MzM3N2MyNGVkNjkz
YzZiZWM2YjkwN2U2Li5mMGEyNGMwMjQ5ODIzNDg1ZDk5NzM2MWI3NTY2ZGIxOTI2MzYzNDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWwuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmV2ZXJiX21vZGVsLmNjCkBAIC0xMCwxMyArMTAsMTEgQEAKIAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5oIgogCi0jaW5jbHVkZSA8
bWF0aC5oPgotCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgotI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWwu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5oCmluZGV4IGQzMDg3YTcyZDkxMDIzYTUz
ZDdjYTU5ZTZlNWZkMDU0OTI5NzM4ZDUuLjU2ZTIyNjZlNTY5ZTc0NDdhMWZiMGZjMmY2Mjc5ODIw
ZDk5NzAzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVm
IE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1JFVkVSQl9NT0RFTF9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRVZFUkJfTU9ERUxfSF8KIAorI2luY2x1ZGUg
PGFycmF5PgorCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogCkBAIC01MCw5ICs1Miw3IEBA
IGNsYXNzIFJldmVyYk1vZGVsIHsKICAgICAgIGZsb2F0IHJldmVyYl9kZWNheSk7CiAKICAgLy8g
UmV0dXJucyB0aGUgY3VycmVudCBwb3dlciBzcGVjdHJ1bSByZXZlcmJlcmF0aW9uIGNvbnRyaWJ1
dGlvbnMuCi0gIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIEdl
dFBvd2VyU3BlY3RydW0oKSBjb25zdCB7Ci0gICAgcmV0dXJuIHJldmVyYl87Ci0gIH0KKyAgcnRj
OjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEdldFBvd2VyU3BlY3RydW0oKSBjb25zdCB7IHJldHVy
biByZXZlcmJfOyB9CiAKICBwcml2YXRlOgogICAvLyBVcGRhdGVzIHRoZSByZXZlcmJlcmF0aW9u
IGNvbnRyaWJ1dGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWxf
ZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWxfZXN0aW1hdG9yLmgKaW5k
ZXggYjZhMzU5MWUwOTE5NzBiOTBjOGNlMDEyYzAxZDdjYTM0OTY3Y2EwYy4uMTExMmY5M2E3MTkz
NTRiYWFmYzNjOTg4NDRjYzBiOTQxYTVhY2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
cmV2ZXJiX21vZGVsX2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2Rl
bF9lc3RpbWF0b3IuaApAQCAtMTEsMTEgKzExLDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9f
UFJPQ0VTU0lOR19BRUMzX1JFVkVSQl9NT0RFTF9FU1RJTUFUT1JfSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX0FFQzNfUkVWRVJCX01PREVMX0VTVElNQVRPUl9IXwogCisjaW5j
bHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9v
cHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1
ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIiAgLy8ga0ZmdExlbmd0aEJ5MlBsdXMxCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2RlY2F5X2VzdGltYXRv
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9mcmVx
dWVuY3lfcmVzcG9uc2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21v
ZGVsX2ZhbGxiYWNrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWxfZmFsbGJhY2suaApp
bmRleCAxYjJhOTUzZWE2NDE3YzJiZWU4MDZjNjM3ZGU2ZjEyZTQ3M2I1NDUxLi4xYmQyYjU5NGUw
NmFhYzBiYTUwOWQ2ZWNmNTE5MjUwMWM4YzZmMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZXZlcmJfbW9kZWxfZmFsbGJhY2suaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9k
ZWxfZmFsbGJhY2suaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfQUVDM19SRVZFUkJfTU9ERUxfRkFMTEJBQ0tfSF8KICNkZWZpbmUgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0FFQzNfUkVWRVJCX01PREVMX0ZBTExCQUNLX0hfCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NoYWRvd19maWx0ZXJfdXBkYXRlX2dhaW4uaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3NoYWRvd19maWx0ZXJfdXBkYXRlX2dhaW4uaAppbmRleCBhOTJiYzNiOGI3ZmEw
MTdhODhhM2ViOTRlMGI3NWQyYjI2YmJiOGU2Li4wNWU2MzJmYTc4Yjg3MzEzZTJlZjVkMWRiN2Zk
Nzc0YzVhMTY3MDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaGFkb3dfZmlsdGVyX3Vw
ZGF0ZV9nYWluLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fp
bi5oCkBAIC0xMSwxMSArMTEsMTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5H
X0FFQzNfU0hBRE9XX0ZJTFRFUl9VUERBVEVfR0FJTl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfQUVDM19TSEFET1dfRklMVEVSX1VQREFURV9HQUlOX0hfCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxhcnJheT4KKwogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hv
X2NhbmNlbGxlcjNfY29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYWVjM19jb21tb24uaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9yZW5kZXJfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvZmZ0X2RhdGEuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZW5kZXJfc2lnbmFsX2FuYWx5emVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0
b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3NoYWRvd19maWx0ZXJfdXBkYXRlX2dhaW5fdW5pdHRlc3QuY2MKaW5kZXggYzA0MGJiZmY5
MWYyYjdiYmJlZmE1OGQ1NDEyY2YzMDAwMDRmZTJkZS4uMDE3YzY3OTU4OGIxYjcyNWRlNzYzODYw
ZTYwOWNkYmFiZGM2YzBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2hhZG93X2ZpbHRl
cl91cGRhdGVfZ2Fpbl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaGFkb3dfZmls
dGVyX3VwZGF0ZV9nYWluX3VuaXR0ZXN0LmNjCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgUnVuRmls
dGVyVXBkYXRlVGVzdChpbnQgbnVtX2Jsb2Nrc190b19wcm9jZXNzLAogICBjb25maWcuZGVsYXku
bWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3MgPSAwOwogICBjb25maWcuZGVsYXkuZGVmYXVsdF9k
ZWxheSA9IDE7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2Rl
bGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7
CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKIAogICBzdGQ6
OmFycmF5PGZsb2F0LCBrQmxvY2tTaXplPiB4X29sZDsKICAgeF9vbGQuZmlsbCgwLmYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3NpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3IuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzJiMzZhYjIxNWE1NDcxYzFjYjkwZDM5MDUxNWFmNzM4ZDk2NTBjOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0
b3IuY2MKQEAgLTAsMCArMSwzNjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2Vz
dGltYXRvci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CisjaW5jbHVkZSA8bnVtZXJpYz4KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3ZlY3Rvcl9idWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZl
X21pbm1heC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworbmFtZXNwYWNlIHsKKworY29uc3Rl
eHByIHN0ZDo6YXJyYXk8c2l6ZV90LCBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjprU3Vi
YmFuZHMgKyAxPgorICAgIGtCYW5kQm91bmRhcmllcyA9IHsxLCA4LCAxNiwgMjQsIDMyLCA0OCwg
a0ZmdExlbmd0aEJ5MlBsdXMxfTsKKworc3RkOjphcnJheTxzaXplX3QsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4gRm9ybVN1YmJhbmRNYXAoKSB7CisgIHN0ZDo6YXJyYXk8c2l6ZV90LCBrRmZ0TGVuZ3Ro
QnkyUGx1czE+IG1hcF9iYW5kX3RvX3N1YmJhbmQ7CisgIHNpemVfdCBzdWJiYW5kID0gMTsKKyAg
Zm9yIChzaXplX3QgayA9IDA7IGsgPCBtYXBfYmFuZF90b19zdWJiYW5kLnNpemUoKTsgKytrKSB7
CisgICAgUlRDX0RDSEVDS19MVChzdWJiYW5kLCBrQmFuZEJvdW5kYXJpZXMuc2l6ZSgpKTsKKyAg
ICBpZiAoayA+PSBrQmFuZEJvdW5kYXJpZXNbc3ViYmFuZF0pIHsKKyAgICAgIHN1YmJhbmQrKzsK
KyAgICAgIFJUQ19EQ0hFQ0tfTFQoaywga0JhbmRCb3VuZGFyaWVzW3N1YmJhbmRdKTsKKyAgICB9
CisgICAgbWFwX2JhbmRfdG9fc3ViYmFuZFtrXSA9IHN1YmJhbmQgLSAxOworICB9CisgIHJldHVy
biBtYXBfYmFuZF90b19zdWJiYW5kOworfQorCisvLyBEZWZpbmVzIHRoZSBzaXplIGluIGJsb2Nr
cyBvZiB0aGUgc2VjdGlvbnMgdGhhdCBhcmUgdXNlZCBmb3IgZGl2aWRpbmcgdGhlCisvLyBsaW5l
YXIgZmlsdGVyLiBUaGUgc2VjdGlvbnMgYXJlIHNwbGl0IGluIGEgbm9uLWxpbmVhciBtYW5uZXIg
c28gdGhhdCBsb3dlcgorLy8gc2VjdGlvbnMgdGhhdCB0eXBpY2FsbHkgcmVwcmVzZW50IHRoZSBk
aXJlY3QgcGF0aCBoYXZlIGEgbGFyZ2VyIHJlc29sdXRpb24KKy8vIHRoYW4gdGhlIGhpZ2hlciBz
ZWN0aW9ucyB3aGljaCB0eXBpY2FsbHkgcmVwcmVzZW50IG1vcmUgcmV2ZXJiZXJhbnQgYWNvdXN0
aWMKKy8vIHBhdGhzLgorc3RkOjp2ZWN0b3I8c2l6ZV90PiBEZWZpbmVGaWx0ZXJTZWN0aW9uU2l6
ZXMoc2l6ZV90IGRlbGF5X2hlYWRyb29tX2Jsb2NrcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1fYmxvY2tzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9zZWN0aW9ucykgeworICBz
aXplX3QgZmlsdGVyX2xlbmd0aF9ibG9ja3MgPSBudW1fYmxvY2tzIC0gZGVsYXlfaGVhZHJvb21f
YmxvY2tzOworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IHNlY3Rpb25fc2l6ZXMobnVtX3NlY3Rpb25z
KTsKKyAgc2l6ZV90IHJlbWFpbmluZ19ibG9ja3MgPSBmaWx0ZXJfbGVuZ3RoX2Jsb2NrczsKKyAg
c2l6ZV90IHJlbWFpbmluZ19zZWN0aW9ucyA9IG51bV9zZWN0aW9uczsKKyAgc2l6ZV90IGVzdGlt
YXRvcl9zaXplID0gMjsKKyAgc2l6ZV90IGlkeCA9IDA7CisgIHdoaWxlIChyZW1haW5pbmdfc2Vj
dGlvbnMgPiAxICYmCisgICAgICAgICByZW1haW5pbmdfYmxvY2tzID4gZXN0aW1hdG9yX3NpemUg
KiByZW1haW5pbmdfc2VjdGlvbnMpIHsKKyAgICBSVENfRENIRUNLX0xUKGlkeCwgc2VjdGlvbl9z
aXplcy5zaXplKCkpOworICAgIHNlY3Rpb25fc2l6ZXNbaWR4XSA9IGVzdGltYXRvcl9zaXplOwor
ICAgIHJlbWFpbmluZ19ibG9ja3MgLT0gZXN0aW1hdG9yX3NpemU7CisgICAgcmVtYWluaW5nX3Nl
Y3Rpb25zLS07CisgICAgZXN0aW1hdG9yX3NpemUgKj0gMjsKKyAgICBpZHgrKzsKKyAgfQorCisg
IHNpemVfdCBsYXN0X2dyb3Vwc19zaXplID0gcmVtYWluaW5nX2Jsb2NrcyAvIHJlbWFpbmluZ19z
ZWN0aW9uczsKKyAgZm9yICg7IGlkeCA8IG51bV9zZWN0aW9uczsgaWR4KyspIHsKKyAgICBzZWN0
aW9uX3NpemVzW2lkeF0gPSBsYXN0X2dyb3Vwc19zaXplOworICB9CisgIHNlY3Rpb25fc2l6ZXNb
bnVtX3NlY3Rpb25zIC0gMV0gKz0KKyAgICAgIHJlbWFpbmluZ19ibG9ja3MgLSBsYXN0X2dyb3Vw
c19zaXplICogcmVtYWluaW5nX3NlY3Rpb25zOworICByZXR1cm4gc2VjdGlvbl9zaXplczsKK30K
KworLy8gRm9ybXMgdGhlIGxpbWl0cyBpbiBibG9ja3MgZm9yIGVhY2ggZmlsdGVyIHNlY3Rpb24u
IFRob3NlIHNlY3Rpb25zCisvLyBhcmUgdXNlZCBmb3IgYW5hbHl6aW5nIHRoZSBlY2hvIGVzdGlt
YXRlcyBhbmQgaW52ZXN0aWdhdGluZyB3aGljaAorLy8gbGluZWFyIGZpbHRlciBzZWN0aW9ucyBj
b250cmlidXRlIG1vc3QgdG8gdGhlIGVjaG8gZXN0aW1hdGUgZW5lcmd5Lgorc3RkOjp2ZWN0b3I8
c2l6ZV90PiBTZXRTZWN0aW9uc0JvdW5kYXJpZXMoc2l6ZV90IGRlbGF5X2hlYWRyb29tX2Jsb2Nr
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1f
YmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG51bV9zZWN0aW9ucykgeworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IGVzdGltYXRvcl9ib3VuZGFy
aWVzX2Jsb2NrcyhudW1fc2VjdGlvbnMgKyAxKTsKKyAgaWYgKGVzdGltYXRvcl9ib3VuZGFyaWVz
X2Jsb2Nrcy5zaXplKCkgPT0gMikgeworICAgIGVzdGltYXRvcl9ib3VuZGFyaWVzX2Jsb2Nrc1sw
XSA9IDA7CisgICAgZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzWzFdID0gbnVtX2Jsb2NrczsK
KyAgICByZXR1cm4gZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzOworICB9CisgIFJUQ19EQ0hF
Q0tfR1QoZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzLnNpemUoKSwgMik7CisgIGNvbnN0IHN0
ZDo6dmVjdG9yPHNpemVfdD4gc2VjdGlvbl9zaXplcyA9CisgICAgICBEZWZpbmVGaWx0ZXJTZWN0
aW9uU2l6ZXMoZGVsYXlfaGVhZHJvb21fYmxvY2tzLCBudW1fYmxvY2tzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVzdGltYXRvcl9ib3VuZGFyaWVzX2Jsb2Nrcy5zaXplKCkgLSAx
KTsKKworICBzaXplX3QgaWR4ID0gMDsKKyAgc2l6ZV90IGN1cnJlbnRfc2l6ZV9ibG9jayA9IDA7
CisgIFJUQ19EQ0hFQ0tfRVEoc2VjdGlvbl9zaXplcy5zaXplKCkgKyAxLCBlc3RpbWF0b3JfYm91
bmRhcmllc19ibG9ja3Muc2l6ZSgpKTsKKyAgZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzWzBd
ID0gZGVsYXlfaGVhZHJvb21fYmxvY2tzOworICBmb3IgKHNpemVfdCBrID0gZGVsYXlfaGVhZHJv
b21fYmxvY2tzOyBrIDwgbnVtX2Jsb2NrczsgKytrKSB7CisgICAgY3VycmVudF9zaXplX2Jsb2Nr
Kys7CisgICAgaWYgKGN1cnJlbnRfc2l6ZV9ibG9jayA+PSBzZWN0aW9uX3NpemVzW2lkeF0pIHsK
KyAgICAgIGlkeCA9IGlkeCArIDE7CisgICAgICBpZiAoaWR4ID09IHNlY3Rpb25fc2l6ZXMuc2l6
ZSgpKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZXN0aW1hdG9yX2JvdW5kYXJp
ZXNfYmxvY2tzW2lkeF0gPSBrICsgMTsKKyAgICAgIGN1cnJlbnRfc2l6ZV9ibG9jayA9IDA7Cisg
ICAgfQorICB9CisgIGVzdGltYXRvcl9ib3VuZGFyaWVzX2Jsb2Nrc1tzZWN0aW9uX3NpemVzLnNp
emUoKV0gPSBudW1fYmxvY2tzOworICByZXR1cm4gZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tz
OworfQorCitzdGQ6OmFycmF5PGZsb2F0LCBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjpr
U3ViYmFuZHM+CitTZXRNYXhFcmxlU3ViYmFuZHMoZmxvYXQgbWF4X2VybGVfbCwgZmxvYXQgbWF4
X2VybGVfaCwgc2l6ZV90IGxpbWl0X3N1YmJhbmRfbCkgeworICBzdGQ6OmFycmF5PGZsb2F0LCBT
aWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjprU3ViYmFuZHM+IG1heF9lcmxlOworICBzdGQ6
OmZpbGwobWF4X2VybGUuYmVnaW4oKSwgbWF4X2VybGUuYmVnaW4oKSArIGxpbWl0X3N1YmJhbmRf
bCwgbWF4X2VybGVfbCk7CisgIHN0ZDo6ZmlsbChtYXhfZXJsZS5iZWdpbigpICsgbGltaXRfc3Vi
YmFuZF9sLCBtYXhfZXJsZS5lbmQoKSwgbWF4X2VybGVfaCk7CisgIHJldHVybiBtYXhfZXJsZTsK
K30KKworfSAgLy8gbmFtZXNwYWNlCisKK1NpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OlNp
Z25hbERlcGVuZGVudEVybGVFc3RpbWF0b3IoCisgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25m
aWcmIGNvbmZpZykKKyAgICA6IG1pbl9lcmxlXyhjb25maWcuZXJsZS5taW4pLAorICAgICAgbnVt
X3NlY3Rpb25zXyhjb25maWcuZXJsZS5udW1fc2VjdGlvbnMpLAorICAgICAgbnVtX2Jsb2Nrc18o
Y29uZmlnLmZpbHRlci5tYWluLmxlbmd0aF9ibG9ja3MpLAorICAgICAgZGVsYXlfaGVhZHJvb21f
YmxvY2tzXyhjb25maWcuZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tzKSwKKyAgICAgIGJhbmRf
dG9fc3ViYmFuZF8oRm9ybVN1YmJhbmRNYXAoKSksCisgICAgICBtYXhfZXJsZV8oU2V0TWF4RXJs
ZVN1YmJhbmRzKGNvbmZpZy5lcmxlLm1heF9sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25maWcuZXJsZS5tYXhfaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFuZF90b19zdWJiYW5kX1trRmZ0TGVuZ3RoQnkyIC8gMl0pKSwKKyAgICAgIHNlY3Rp
b25fYm91bmRhcmllc19ibG9ja3NfKFNldFNlY3Rpb25zQm91bmRhcmllcyhkZWxheV9oZWFkcm9v
bV9ibG9ja3NfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bV9ibG9ja3NfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bV9zZWN0aW9uc18pKSwKKyAgICAgIFMyX3NlY3Rpb25f
YWNjdW1fKG51bV9zZWN0aW9uc18pLAorICAgICAgZXJsZV9lc3RpbWF0b3JzXyhudW1fc2VjdGlv
bnNfKSwKKyAgICAgIGNvcnJlY3Rpb25fZmFjdG9yc18obnVtX3NlY3Rpb25zXykgeworICBSVENf
RENIRUNLX0xFKG51bV9zZWN0aW9uc18sIG51bV9ibG9ja3NfKTsKKyAgUlRDX0RDSEVDS19HRShu
dW1fc2VjdGlvbnNfLCAxKTsKKworICBSZXNldCgpOworfQorCitTaWduYWxEZXBlbmRlbnRFcmxl
RXN0aW1hdG9yOjp+U2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvcigpID0gZGVmYXVsdDsKKwor
dm9pZCBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjpSZXNldCgpIHsKKyAgZXJsZV8uZmls
bChtaW5fZXJsZV8pOworICBmb3IgKGF1dG8mIGVybGUgOiBlcmxlX2VzdGltYXRvcnNfKSB7Cisg
ICAgZXJsZS5maWxsKG1pbl9lcmxlXyk7CisgIH0KKyAgZXJsZV9yZWZfLmZpbGwobWluX2VybGVf
KTsKKyAgZm9yIChhdXRvJiBmYWN0b3IgOiBjb3JyZWN0aW9uX2ZhY3RvcnNfKSB7CisgICAgZmFj
dG9yLmZpbGwoMS4wZik7CisgIH0KKyAgbnVtX3VwZGF0ZXNfLmZpbGwoMCk7Cit9CisKKy8vIFVw
ZGF0ZXMgdGhlIEVybGUgZXN0aW1hdGUgYnkgYW5hbHl6aW5nIHRoZSBjdXJyZW50IGlucHV0IHNp
Z25hbHMuIEl0IHRha2VzCisvLyB0aGUgcmVuZGVyIGJ1ZmZlciBhbmQgdGhlIGZpbHRlciBmcmVx
dWVuY3kgcmVzcG9uc2UgaW4gb3JkZXIgdG8gZG8gYW4KKy8vIGVzdGltYXRpb24gb2YgdGhlIG51
bWJlciBvZiBzZWN0aW9ucyBvZiB0aGUgbGluZWFyIGZpbHRlciB0aGF0IGFyZSBuZWVkZWQKKy8v
IGZvciBnZXR0aW5nIHRoZSBtYWpvcml0eSBvZiB0aGUgZW5lcmd5IGluIHRoZSBlY2hvIGVzdGlt
YXRlLiBCYXNlZCBvbiB0aGF0CisvLyBudW1iZXIgb2Ygc2VjdGlvbnMsIGl0IHVwZGF0ZXMgdGhl
IGVybGUgZXN0aW1hdGlvbiBieSBpbnRyb2R1Y2luZyBhCisvLyBjb3JyZWN0aW9uIGZhY3RvciB0
byB0aGUgZXJsZSB0aGF0IGlzIGdpdmVuIGFzIGFuIGlucHV0IHRvIHRoaXMgbWV0aG9kLgordm9p
ZCBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjpVcGRhdGUoCisgICAgY29uc3QgUmVuZGVy
QnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8
ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+JgorICAgICAgICBmaWx0ZXJfZnJlcXVlbmN5X3Jl
c3BvbnNlLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwKKyAgICBydGM6OkFy
cmF5Vmlldzxjb25zdCBmbG9hdD4gWTIsCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+
IEUyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBhdmVyYWdlX2VybGUsCisgICAg
Ym9vbCBjb252ZXJnZWRfZmlsdGVyKSB7CisgIFJUQ19EQ0hFQ0tfR1QobnVtX3NlY3Rpb25zXywg
MSk7CisKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZpbHRlciBzZWN0aW9ucyB0aGF0IGFyZSBu
ZWVkZWQgZm9yIGFjaGlldmluZyA5MCAlCisgIC8vIG9mIHRoZSBwb3dlciBzcGVjdHJ1bSBlbmVy
Z3kgb2YgdGhlIGVjaG8gZXN0aW1hdGUuCisgIHN0ZDo6YXJyYXk8c2l6ZV90LCBrRmZ0TGVuZ3Ro
QnkyUGx1czE+IG5fYWN0aXZlX3NlY3Rpb25zOworICBDb21wdXRlTnVtYmVyT2ZBY3RpdmVGaWx0
ZXJTZWN0aW9ucyhyZW5kZXJfYnVmZmVyLCBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2FjdGl2ZV9zZWN0aW9ucyk7CisK
KyAgaWYgKGNvbnZlcmdlZF9maWx0ZXIpIHsKKyAgICAvLyBVcGRhdGVzIHRoZSBjb3JyZWN0aW9u
IGZhY3RvciB0aGF0IGlzIHVzZWQgZm9yIGNvcnJlY3RpbmcgdGhlIGVybGUgYW5kCisgICAgLy8g
YWRhcHQgaXQgdG8gdGhlIHBhcnRpY3VsYXIgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBpbnB1dCBz
aWduYWwuCisgICAgVXBkYXRlQ29ycmVjdGlvbkZhY3RvcnMoWDIsIFkyLCBFMiwgbl9hY3RpdmVf
c2VjdGlvbnMpOworICB9CisKKyAgLy8gQXBwbGllcyB0aGUgY29ycmVjdGlvbiBmYWN0b3IgdG8g
dGhlIGlucHV0IGVybGUgZm9yIGdldHRpbmcgYSBtb3JlIHJlZmluZWQKKyAgLy8gZXJsZSBlc3Rp
bWF0aW9uIGZvciB0aGUgY3VycmVudCBpbnB1dCBzaWduYWwuCisgIGZvciAoc2l6ZV90IGsgPSAw
OyBrIDwga0ZmdExlbmd0aEJ5MjsgKytrKSB7CisgICAgZmxvYXQgY29ycmVjdGlvbl9mYWN0b3Ig
PQorICAgICAgICBjb3JyZWN0aW9uX2ZhY3RvcnNfW25fYWN0aXZlX3NlY3Rpb25zW2tdXVtiYW5k
X3RvX3N1YmJhbmRfW2tdXTsKKyAgICBlcmxlX1trXSA9IHJ0Yzo6U2FmZUNsYW1wKGF2ZXJhZ2Vf
ZXJsZVtrXSAqIGNvcnJlY3Rpb25fZmFjdG9yLCBtaW5fZXJsZV8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXhfZXJsZV9bYmFuZF90b19zdWJiYW5kX1trXV0pOworICB9Cit9CisK
K3ZvaWQgU2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvcjo6RHVtcCgKKyAgICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8QXBtRGF0YUR1bXBlcj4mIGRhdGFfZHVtcGVyKSBjb25zdCB7CisgIGZvciAo
YXV0byYgZXJsZSA6IGVybGVfZXN0aW1hdG9yc18pIHsKKyAgICBkYXRhX2R1bXBlci0+RHVtcFJh
dygiYWVjM19hbGxfZXJsZSIsIGVybGUpOworICB9CisgIGRhdGFfZHVtcGVyLT5EdW1wUmF3KCJh
ZWMzX3JlZl9lcmxlIiwgZXJsZV9yZWZfKTsKKyAgZm9yIChhdXRvJiBmYWN0b3IgOiBjb3JyZWN0
aW9uX2ZhY3RvcnNfKSB7CisgICAgZGF0YV9kdW1wZXItPkR1bXBSYXcoImFlYzNfZXJsZV9jb3Jy
ZWN0aW9uX2ZhY3RvciIsIGZhY3Rvcik7CisgIH0KKyAgZGF0YV9kdW1wZXItPkR1bXBSYXcoImFl
YzNfZXJsZSIsIGVybGVfKTsKK30KKworLy8gRXN0aW1hdGVzIGZvciBlYWNoIGJhbmQgdGhlIHNt
YWxsZXN0IG51bWJlciBvZiBzZWN0aW9ucyBpbiB0aGUgZmlsdGVyIHRoYXQKKy8vIHRvZ2V0aGVy
IGNvbnN0aXR1dGUgOTAlIG9mIHRoZSBlc3RpbWF0ZWQgZWNobyBlbmVyZ3kuCit2b2lkIFNpZ25h
bERlcGVuZGVudEVybGVFc3RpbWF0b3I6OkNvbXB1dGVOdW1iZXJPZkFjdGl2ZUZpbHRlclNlY3Rp
b25zKAorICAgIGNvbnN0IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAg
ICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwKKyAgICBydGM6OkFycmF5VmlldzxzaXplX3Q+
IG5fYWN0aXZlX2ZpbHRlcl9zZWN0aW9ucykgeworICBSVENfRENIRUNLX0dUKG51bV9zZWN0aW9u
c18sIDEpOworICAvLyBDb21wdXRlcyBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBwb3dlciBzcGVj
dHJ1bSBpZiB0aGUgZmlsdGVyIHdvdWxkIGhhdmUKKyAgLy8gYmVlbiBsaW1pdGVkIHRvIGEgY2Vy
dGFpbiBudW1iZXIgb2YgZmlsdGVyIHNlY3Rpb25zLgorICBDb21wdXRlRWNob0VzdGltYXRlUGVy
RmlsdGVyU2VjdGlvbihyZW5kZXJfYnVmZmVyLCBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlKTsK
KyAgLy8gRm9yIGVhY2ggYmFuZCwgY29tcHV0ZXMgdGhlIG51bWJlciBvZiBmaWx0ZXIgc2VjdGlv
bnMgdGhhdCBhcmUgbmVlZGVkIGZvcgorICAvLyBhY2hpZXZpbmcgdGhlIDkwICUgZW5lcmd5IGlu
IHRoZSBlY2hvIGVzdGltYXRlLgorICBDb21wdXRlQWN0aXZlRmlsdGVyU2VjdGlvbnMobl9hY3Rp
dmVfZmlsdGVyX3NlY3Rpb25zKTsKK30KKwordm9pZCBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1h
dG9yOjpVcGRhdGVDb3JyZWN0aW9uRmFjdG9ycygKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBm
bG9hdD4gWDIsCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFkyLAorICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBFMiwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBzaXpl
X3Q+IG5fYWN0aXZlX3NlY3Rpb25zKSB7CisgIGNvbnN0ZXhwciBmbG9hdCBrWDJCYW5kRW5lcmd5
VGhyZXNob2xkID0gNDQwMTUwNjguMGY7CisgIGNvbnN0ZXhwciBmbG9hdCBrU210aENvbnN0YW50
RGVjcmVhc2VzID0gMC4xZjsKKyAgY29uc3RleHByIGZsb2F0IGtTbXRoQ29uc3RhbnRJbmNyZWFz
ZXMgPSBrU210aENvbnN0YW50RGVjcmVhc2VzIC8gMi5mOworICBhdXRvIHN1YmJhbmRfcG93ZXJz
ID0gW10ocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHBvd2VyX3NwZWN0cnVtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8ZmxvYXQ+IHBvd2VyX3NwZWN0cnVt
X3N1YmJhbmRzKSB7CisgICAgZm9yIChzaXplX3Qgc3ViYmFuZCA9IDA7IHN1YmJhbmQgPCBrU3Vi
YmFuZHM7ICsrc3ViYmFuZCkgeworICAgICAgUlRDX0RDSEVDS19MRShrQmFuZEJvdW5kYXJpZXNb
c3ViYmFuZCArIDFdLCBwb3dlcl9zcGVjdHJ1bS5zaXplKCkpOworICAgICAgcG93ZXJfc3BlY3Ry
dW1fc3ViYmFuZHNbc3ViYmFuZF0gPSBzdGQ6OmFjY3VtdWxhdGUoCisgICAgICAgICAgcG93ZXJf
c3BlY3RydW0uYmVnaW4oKSArIGtCYW5kQm91bmRhcmllc1tzdWJiYW5kXSwKKyAgICAgICAgICBw
b3dlcl9zcGVjdHJ1bS5iZWdpbigpICsga0JhbmRCb3VuZGFyaWVzW3N1YmJhbmQgKyAxXSwgMC5m
KTsKKyAgICB9CisgIH07CisKKyAgc3RkOjphcnJheTxmbG9hdCwga1N1YmJhbmRzPiBYMl9zdWJi
YW5kcywgRTJfc3ViYmFuZHMsIFkyX3N1YmJhbmRzOworICBzdWJiYW5kX3Bvd2VycyhYMiwgWDJf
c3ViYmFuZHMpOworICBzdWJiYW5kX3Bvd2VycyhFMiwgRTJfc3ViYmFuZHMpOworICBzdWJiYW5k
X3Bvd2VycyhZMiwgWTJfc3ViYmFuZHMpOworICBzdGQ6OmFycmF5PHNpemVfdCwga1N1YmJhbmRz
PiBpZHhfc3ViYmFuZHM7CisgIGZvciAoc2l6ZV90IHN1YmJhbmQgPSAwOyBzdWJiYW5kIDwga1N1
YmJhbmRzOyArK3N1YmJhbmQpIHsKKyAgICAvLyBXaGVuIGFnZ3JlZ2F0aW5nIHRoZSBudW1iZXIg
b2YgYWN0aXZlIHNlY3Rpb25zIGluIHRoZSBmaWx0ZXIgZm9yCisgICAgLy8gZGlmZmVyZW50IGJh
bmRzIHdlIGNob29zZSB0byB0YWtlIHRoZSBtaW5pbXVtIG9mIGFsbCBvZiB0aGVtLiBBcyBhbgor
ICAgIC8vIGV4YW1wbGUsIGlmIGZvciBvbmUgb2YgdGhlIGJhbmRzIGl0IGlzIHRoZSBkaXJlY3Qg
cGF0aCBpdHMgbWFpbgorICAgIC8vIGNvbnRyaWJ1dG9yIHRvIHRoZSBmaW5hbCBlY2hvIGVzdGlt
YXRlLCB3ZSBjb25zaWRlciB0aGUgZGlyZWN0IHBhdGggaXMKKyAgICAvLyBhcyB3ZWxsIHRoZSBt
YWluIGNvbnRyaWJ1dG9yIGZvciB0aGUgc3ViYmFuZCB0aGF0IGNvbnRhaW5zIHRoYXQKKyAgICAv
LyBwYXJ0aWN1bGFyIGJhbmQuIFRoYXQgYWdncmVnYXRlIG51bWJlciBvZiBzZWN0aW9ucyB3aWxs
IGJlIGxhdGVyIHVzZWQgYXMKKyAgICAvLyB0aGUgaWRlbnRpZmllciBvZiB0aGUgZXJsZSBlc3Rp
bWF0b3IgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkLgorICAgIFJUQ19EQ0hFQ0tfTEUoa0JhbmRC
b3VuZGFyaWVzW3N1YmJhbmQgKyAxXSwgbl9hY3RpdmVfc2VjdGlvbnMuc2l6ZSgpKTsKKyAgICBp
ZHhfc3ViYmFuZHNbc3ViYmFuZF0gPSAqc3RkOjptaW5fZWxlbWVudCgKKyAgICAgICAgbl9hY3Rp
dmVfc2VjdGlvbnMuYmVnaW4oKSArIGtCYW5kQm91bmRhcmllc1tzdWJiYW5kXSwKKyAgICAgICAg
bl9hY3RpdmVfc2VjdGlvbnMuYmVnaW4oKSArIGtCYW5kQm91bmRhcmllc1tzdWJiYW5kICsgMV0p
OworICB9CisKKyAgc3RkOjphcnJheTxmbG9hdCwga1N1YmJhbmRzPiBuZXdfZXJsZTsKKyAgc3Rk
OjphcnJheTxib29sLCBrU3ViYmFuZHM+IGlzX2VybGVfdXBkYXRlZDsKKyAgaXNfZXJsZV91cGRh
dGVkLmZpbGwoZmFsc2UpOworICBuZXdfZXJsZS5maWxsKDAuZik7CisgIGZvciAoc2l6ZV90IHN1
YmJhbmQgPSAwOyBzdWJiYW5kIDwga1N1YmJhbmRzOyArK3N1YmJhbmQpIHsKKyAgICBpZiAoWDJf
c3ViYmFuZHNbc3ViYmFuZF0gPiBrWDJCYW5kRW5lcmd5VGhyZXNob2xkICYmCisgICAgICAgIEUy
X3N1YmJhbmRzW3N1YmJhbmRdID4gMCkgeworICAgICAgbmV3X2VybGVbc3ViYmFuZF0gPSBZMl9z
dWJiYW5kc1tzdWJiYW5kXSAvIEUyX3N1YmJhbmRzW3N1YmJhbmRdOworICAgICAgUlRDX0RDSEVD
S19HVChuZXdfZXJsZVtzdWJiYW5kXSwgMCk7CisgICAgICBpc19lcmxlX3VwZGF0ZWRbc3ViYmFu
ZF0gPSB0cnVlOworICAgICAgKytudW1fdXBkYXRlc19bc3ViYmFuZF07CisgICAgfQorICB9CisK
KyAgZm9yIChzaXplX3Qgc3ViYmFuZCA9IDA7IHN1YmJhbmQgPCBrU3ViYmFuZHM7ICsrc3ViYmFu
ZCkgeworICAgIGNvbnN0IHNpemVfdCBpZHggPSBpZHhfc3ViYmFuZHNbc3ViYmFuZF07CisgICAg
UlRDX0RDSEVDS19MVChpZHgsIGVybGVfZXN0aW1hdG9yc18uc2l6ZSgpKTsKKyAgICBmbG9hdCBh
bHBoYSA9IG5ld19lcmxlW3N1YmJhbmRdID4gZXJsZV9lc3RpbWF0b3JzX1tpZHhdW3N1YmJhbmRd
CisgICAgICAgICAgICAgICAgICAgICAgPyBrU210aENvbnN0YW50SW5jcmVhc2VzCisgICAgICAg
ICAgICAgICAgICAgICAgOiBrU210aENvbnN0YW50RGVjcmVhc2VzOworICAgIGFscGhhID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGlzX2VybGVfdXBkYXRlZFtzdWJiYW5kXSkgKiBhbHBoYTsKKyAgICBl
cmxlX2VzdGltYXRvcnNfW2lkeF1bc3ViYmFuZF0gKz0KKyAgICAgICAgYWxwaGEgKiAobmV3X2Vy
bGVbc3ViYmFuZF0gLSBlcmxlX2VzdGltYXRvcnNfW2lkeF1bc3ViYmFuZF0pOworICAgIGVybGVf
ZXN0aW1hdG9yc19baWR4XVtzdWJiYW5kXSA9IHJ0Yzo6U2FmZUNsYW1wKAorICAgICAgICBlcmxl
X2VzdGltYXRvcnNfW2lkeF1bc3ViYmFuZF0sIG1pbl9lcmxlXywgbWF4X2VybGVfW3N1YmJhbmRd
KTsKKyAgfQorCisgIGZvciAoc2l6ZV90IHN1YmJhbmQgPSAwOyBzdWJiYW5kIDwga1N1YmJhbmRz
OyArK3N1YmJhbmQpIHsKKyAgICBmbG9hdCBhbHBoYSA9IG5ld19lcmxlW3N1YmJhbmRdID4gZXJs
ZV9yZWZfW3N1YmJhbmRdCisgICAgICAgICAgICAgICAgICAgICAgPyBrU210aENvbnN0YW50SW5j
cmVhc2VzCisgICAgICAgICAgICAgICAgICAgICAgOiBrU210aENvbnN0YW50RGVjcmVhc2VzOwor
ICAgIGFscGhhID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGlzX2VybGVfdXBkYXRlZFtzdWJiYW5kXSkg
KiBhbHBoYTsKKyAgICBlcmxlX3JlZl9bc3ViYmFuZF0gKz0gYWxwaGEgKiAobmV3X2VybGVbc3Vi
YmFuZF0gLSBlcmxlX3JlZl9bc3ViYmFuZF0pOworICAgIGVybGVfcmVmX1tzdWJiYW5kXSA9Cisg
ICAgICAgIHJ0Yzo6U2FmZUNsYW1wKGVybGVfcmVmX1tzdWJiYW5kXSwgbWluX2VybGVfLCBtYXhf
ZXJsZV9bc3ViYmFuZF0pOworICB9CisKKyAgZm9yIChzaXplX3Qgc3ViYmFuZCA9IDA7IHN1YmJh
bmQgPCBrU3ViYmFuZHM7ICsrc3ViYmFuZCkgeworICAgIGNvbnN0ZXhwciBpbnQga051bVVwZGF0
ZVRociA9IDUwOworICAgIGlmIChpc19lcmxlX3VwZGF0ZWRbc3ViYmFuZF0gJiYgbnVtX3VwZGF0
ZXNfW3N1YmJhbmRdID4ga051bVVwZGF0ZVRocikgeworICAgICAgY29uc3Qgc2l6ZV90IGlkeCA9
IGlkeF9zdWJiYW5kc1tzdWJiYW5kXTsKKyAgICAgIFJUQ19EQ0hFQ0tfR1QoZXJsZV9yZWZfW3N1
YmJhbmRdLCAwLmYpOworICAgICAgLy8gQ29tcHV0ZXMgdGhlIHJhdGlvIGJldHdlZW4gdGhlIGVy
bGUgdGhhdCBpcyB1cGRhdGVkIHVzaW5nIGFsbCB0aGUKKyAgICAgIC8vIHBvaW50cyBhbmQgdGhl
IGVybGUgdGhhdCBpcyB1cGRhdGVkIG9ubHkgb24gc2lnbmFscyB0aGF0IHNoYXJlIHRoZQorICAg
ICAgLy8gc2FtZSBudW1iZXIgb2YgYWN0aXZlIGZpbHRlciBzZWN0aW9ucy4KKyAgICAgIGZsb2F0
IG5ld19jb3JyZWN0aW9uX2ZhY3RvciA9CisgICAgICAgICAgZXJsZV9lc3RpbWF0b3JzX1tpZHhd
W3N1YmJhbmRdIC8gZXJsZV9yZWZfW3N1YmJhbmRdOworCisgICAgICBjb3JyZWN0aW9uX2ZhY3Rv
cnNfW2lkeF1bc3ViYmFuZF0gKz0KKyAgICAgICAgICAwLjFmICogKG5ld19jb3JyZWN0aW9uX2Zh
Y3RvciAtIGNvcnJlY3Rpb25fZmFjdG9yc19baWR4XVtzdWJiYW5kXSk7CisgICAgfQorICB9Cit9
CisKK3ZvaWQgU2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvcjo6Q29tcHV0ZUVjaG9Fc3RpbWF0
ZVBlckZpbHRlclNlY3Rpb24oCisgICAgY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVy
LAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4+JgorICAgICAgICBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlKSB7CisgIGNvbnN0IFZl
Y3RvckJ1ZmZlciYgc3BlY3RydW1fcmVuZGVyX2J1ZmZlciA9CisgICAgICByZW5kZXJfYnVmZmVy
LkdldFNwZWN0cnVtQnVmZmVyKCk7CisKKyAgUlRDX0RDSEVDS19FUShTMl9zZWN0aW9uX2FjY3Vt
Xy5zaXplKCkgKyAxLAorICAgICAgICAgICAgICAgIHNlY3Rpb25fYm91bmRhcmllc19ibG9ja3Nf
LnNpemUoKSk7CisgIHNpemVfdCBpZHhfcmVuZGVyID0gcmVuZGVyX2J1ZmZlci5Qb3NpdGlvbigp
OworICBpZHhfcmVuZGVyID0gc3BlY3RydW1fcmVuZGVyX2J1ZmZlci5PZmZzZXRJbmRleCgKKyAg
ICAgIGlkeF9yZW5kZXIsIHNlY3Rpb25fYm91bmRhcmllc19ibG9ja3NfWzBdKTsKKworICBmb3Ig
KHNpemVfdCBzZWN0aW9uID0gMDsgc2VjdGlvbiA8IG51bV9zZWN0aW9uc187ICsrc2VjdGlvbikg
eworICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gWDJfc2VjdGlvbjsK
KyAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IEgyX3NlY3Rpb247Cisg
ICAgWDJfc2VjdGlvbi5maWxsKDAuZik7CisgICAgSDJfc2VjdGlvbi5maWxsKDAuZik7CisgICAg
Zm9yIChzaXplX3QgYmxvY2sgPSBzZWN0aW9uX2JvdW5kYXJpZXNfYmxvY2tzX1tzZWN0aW9uXTsK
KyAgICAgICAgIGJsb2NrIDwgc2VjdGlvbl9ib3VuZGFyaWVzX2Jsb2Nrc19bc2VjdGlvbiArIDFd
OyArK2Jsb2NrKSB7CisgICAgICBzdGQ6OnRyYW5zZm9ybShYMl9zZWN0aW9uLmJlZ2luKCksIFgy
X3NlY3Rpb24uZW5kKCksCisgICAgICAgICAgICAgICAgICAgICBzcGVjdHJ1bV9yZW5kZXJfYnVm
ZmVyLmJ1ZmZlcltpZHhfcmVuZGVyXS5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgWDJf
c2VjdGlvbi5iZWdpbigpLCBzdGQ6OnBsdXM8ZmxvYXQ+KCkpOworICAgICAgc3RkOjp0cmFuc2Zv
cm0oSDJfc2VjdGlvbi5iZWdpbigpLCBIMl9zZWN0aW9uLmVuZCgpLAorICAgICAgICAgICAgICAg
ICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZVtibG9ja10uYmVnaW4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgIEgyX3NlY3Rpb24uYmVnaW4oKSwgc3RkOjpwbHVzPGZsb2F0PigpKTsKKyAg
ICAgIGlkeF9yZW5kZXIgPSBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVyLkluY0luZGV4KGlkeF9yZW5k
ZXIpOworICAgIH0KKworICAgIHN0ZDo6dHJhbnNmb3JtKFgyX3NlY3Rpb24uYmVnaW4oKSwgWDJf
c2VjdGlvbi5lbmQoKSwgSDJfc2VjdGlvbi5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgIFMy
X3NlY3Rpb25fYWNjdW1fW3NlY3Rpb25dLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgc3Rk
OjptdWx0aXBsaWVzPGZsb2F0PigpKTsKKyAgfQorCisgIGZvciAoc2l6ZV90IHNlY3Rpb24gPSAx
OyBzZWN0aW9uIDwgbnVtX3NlY3Rpb25zXzsgKytzZWN0aW9uKSB7CisgICAgc3RkOjp0cmFuc2Zv
cm0oUzJfc2VjdGlvbl9hY2N1bV9bc2VjdGlvbiAtIDFdLmJlZ2luKCksCisgICAgICAgICAgICAg
ICAgICAgUzJfc2VjdGlvbl9hY2N1bV9bc2VjdGlvbiAtIDFdLmVuZCgpLAorICAgICAgICAgICAg
ICAgICAgIFMyX3NlY3Rpb25fYWNjdW1fW3NlY3Rpb25dLmJlZ2luKCksCisgICAgICAgICAgICAg
ICAgICAgUzJfc2VjdGlvbl9hY2N1bV9bc2VjdGlvbl0uYmVnaW4oKSwgc3RkOjpwbHVzPGZsb2F0
PigpKTsKKyAgfQorfQorCit2b2lkIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OkNvbXB1
dGVBY3RpdmVGaWx0ZXJTZWN0aW9ucygKKyAgICBydGM6OkFycmF5VmlldzxzaXplX3Q+IG51bWJl
cl9hY3RpdmVfZmlsdGVyX3NlY3Rpb25zKSBjb25zdCB7CisgIHN0ZDo6ZmlsbChudW1iZXJfYWN0
aXZlX2ZpbHRlcl9zZWN0aW9ucy5iZWdpbigpLAorICAgICAgICAgICAgbnVtYmVyX2FjdGl2ZV9m
aWx0ZXJfc2VjdGlvbnMuZW5kKCksIDApOworICBmb3IgKHNpemVfdCBrID0gMDsgayA8IGtGZnRM
ZW5ndGhCeTJQbHVzMTsgKytrKSB7CisgICAgc2l6ZV90IHNlY3Rpb24gPSBudW1fc2VjdGlvbnNf
OworICAgIGZsb2F0IHRhcmdldCA9IDAuOWYgKiBTMl9zZWN0aW9uX2FjY3VtX1tudW1fc2VjdGlv
bnNfIC0gMV1ba107CisgICAgd2hpbGUgKHNlY3Rpb24gPiAwICYmIFMyX3NlY3Rpb25fYWNjdW1f
W3NlY3Rpb24gLSAxXVtrXSA+PSB0YXJnZXQpIHsKKyAgICAgIG51bWJlcl9hY3RpdmVfZmlsdGVy
X3NlY3Rpb25zW2tdID0gLS1zZWN0aW9uOworICAgIH0KKyAgfQorfQorfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxl
X2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGlt
YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ4YjU2YzJiMjBjMzgyZGQyMTljMGRkMjdhZDY1MzVjYmU0OTVj
ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2Vy
bGVfZXN0aW1hdG9yLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
KyNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfU0lHTkFMX0RFUEVOREVOVF9F
UkxFX0VTVElNQVRPUl9IXworI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19T
SUdOQUxfREVQRU5ERU5UX0VSTEVfRVNUSU1BVE9SX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+Cisj
aW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRl
ICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgorCituYW1lc3BhY2Ug
d2VicnRjIHsKKworLy8gVGhpcyBjbGFzcyBlc3RpbWF0ZXMgdGhlIGRlcGVuZGVuY3kgb2YgdGhl
IEVybGUgdG8gdGhlIGlucHV0IHNpZ25hbC4gQnkKKy8vIGxvb2tpbmcgYXQgdGhlIGlucHV0IHNp
Z25hbCwgYW4gZXN0aW1hdGlvbiBvbiB3aGV0aGVyIHRoZSBjdXJyZW50IGVjaG8KKy8vIGVzdGlt
YXRlIGlzIGR1ZSB0byB0aGUgZGlyZWN0IHBhdGggb3IgdG8gYSBtb3JlIHJldmVyYmVyYW50IG9u
ZSBpcyBwZXJmb3JtZWQuCisvLyBPbmNlIHRoYXQgZXN0aW1hdGlvbiBpcyBkb25lLCBpdCBpcyBw
b3NzaWJsZSB0byByZWZpbmUgdGhlIGF2ZXJhZ2UgRXJsZSB0aGF0CisvLyB0aGlzIGNsYXNzIHJl
Y2VpdmUgYXMgYW4gaW5wdXQuCitjbGFzcyBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yIHsK
KyBwdWJsaWM6CisgIGV4cGxpY2l0IFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3IoY29uc3Qg
RWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZyk7CisKKyAgflNpZ25hbERlcGVuZGVudEVybGVF
c3RpbWF0b3IoKTsKKworICB2b2lkIFJlc2V0KCk7CisKKyAgLy8gUmV0dXJucyB0aGUgRXJsZSBw
ZXIgZnJlcXVlbmN5IHN1YmJhbmQuCisgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5n
dGhCeTJQbHVzMT4mIEVybGUoKSBjb25zdCB7IHJldHVybiBlcmxlXzsgfQorCisgIC8vIFVwZGF0
ZXMgdGhlIEVybGUgZXN0aW1hdGUuIFRoZSBFcmxlIHRoYXQgaXMgcGFzc2VkIGFzIGFuIGlucHV0
IGlzIHJlcXVpcmVkCisgIC8vIHRvIGJlIGFuIGVzdGltYXRpb24gb2YgdGhlIGF2ZXJhZ2UgRXJs
ZSBhY2hpZXZlZCBieSB0aGUgbGluZWFyIGZpbHRlci4KKyAgdm9pZCBVcGRhdGUoY29uc3QgUmVu
ZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAgICAgICAgICAg
ICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCisgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IGZsb2F0PiBYMiwKKyAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qg
ZmxvYXQ+IFkyLAorICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gRTIs
CisgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBhdmVyYWdlX2VybGUs
CisgICAgICAgICAgICAgIGJvb2wgY29udmVyZ2VkX2ZpbHRlcik7CisKKyAgdm9pZCBEdW1wKGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxBcG1EYXRhRHVtcGVyPiYgZGF0YV9kdW1wZXIpIGNvbnN0Owor
CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTdWJiYW5kcyA9IDY7CisKKyBwcml2YXRlOgor
ICB2b2lkIENvbXB1dGVOdW1iZXJPZkFjdGl2ZUZpbHRlclNlY3Rpb25zKAorICAgICAgY29uc3Qg
UmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPj4mCisgICAgICAgICAgZmlsdGVyX2Zy
ZXF1ZW5jeV9yZXNwb25zZSwKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PHNpemVfdD4gbl9hY3RpdmVf
ZmlsdGVyX3NlY3Rpb25zKTsKKworICB2b2lkIFVwZGF0ZUNvcnJlY3Rpb25GYWN0b3JzKHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWTIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEUyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHNpemVfdD4gbl9hY3RpdmVfc2Vj
dGlvbnMpOworCisgIHZvaWQgQ29tcHV0ZUVjaG9Fc3RpbWF0ZVBlckZpbHRlclNlY3Rpb24oCisg
ICAgICBjb25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCisgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAgICAg
ICBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlKTsKKworICB2b2lkIENvbXB1dGVBY3RpdmVGaWx0
ZXJTZWN0aW9ucygKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PHNpemVfdD4gbnVtYmVyX2FjdGl2ZV9m
aWx0ZXJfc2VjdGlvbnMpIGNvbnN0OworCisgIGNvbnN0IGZsb2F0IG1pbl9lcmxlXzsKKyAgY29u
c3Qgc2l6ZV90IG51bV9zZWN0aW9uc187CisgIGNvbnN0IHNpemVfdCBudW1fYmxvY2tzXzsKKyAg
Y29uc3Qgc2l6ZV90IGRlbGF5X2hlYWRyb29tX2Jsb2Nrc187CisgIGNvbnN0IHN0ZDo6YXJyYXk8
c2l6ZV90LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IGJhbmRfdG9fc3ViYmFuZF87CisgIGNvbnN0IHN0
ZDo6YXJyYXk8ZmxvYXQsIGtTdWJiYW5kcz4gbWF4X2VybGVfOworICBjb25zdCBzdGQ6OnZlY3Rv
cjxzaXplX3Q+IHNlY3Rpb25fYm91bmRhcmllc19ibG9ja3NfOworICBzdGQ6OmFycmF5PGZsb2F0
LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IGVybGVfOworICBzdGQ6OnZlY3RvcjxzdGQ6OmFycmF5PGZs
b2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiBTMl9zZWN0aW9uX2FjY3VtXzsKKyAgc3RkOjp2ZWN0
b3I8c3RkOjphcnJheTxmbG9hdCwga1N1YmJhbmRzPj4gZXJsZV9lc3RpbWF0b3JzXzsKKyAgc3Rk
OjphcnJheTxmbG9hdCwga1N1YmJhbmRzPiBlcmxlX3JlZl87CisgIHN0ZDo6dmVjdG9yPHN0ZDo6
YXJyYXk8ZmxvYXQsIGtTdWJiYW5kcz4+IGNvcnJlY3Rpb25fZmFjdG9yc187CisgIHN0ZDo6YXJy
YXk8aW50LCBrU3ViYmFuZHM+IG51bV91cGRhdGVzXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TSUdOQUxf
REVQRU5ERU5UX0VSTEVfRVNUSU1BVE9SX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9z
aWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvcl91bml0dGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZWM2MDVmN2FiZjAyODVkMDM1NTJiMmMxMWZiM2E1MzIyNjk4YWMzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvcl91bml0
dGVzdC5jYwpAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVf
ZXN0aW1hdG9yLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8aW9zdHJlYW0+
CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVy
M19jb25maWcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5k
ZXJfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVu
ZGVyX2RlbGF5X2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1
aWxkZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CituYW1lc3BhY2UgeworCit2b2lkIEdldEFjdGl2ZUZyYW1lKHJ0Yzo6QXJyYXlWaWV3PGZsb2F0
PiB4KSB7CisgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtCbG9ja1NpemU+IGZyYW1lID0gewor
ICAgICAgNzQ1OS44OCwgMTcyMDkuNiwgMTczODMsICAgMjA3NjguOSwgMTY4MTYuNywgMTgzODYu
MywgNDQ5Mi44MywgOTY3NS44NSwKKyAgICAgIDY2NjUuNTIsIDE0ODA4LjYsIDkzNDIuMywgIDc0
ODMuMjgsIDE5MjYxLjcsIDQxNDUuOTgsIDE2MjIuMTgsIDEzNDc1LjIsCisgICAgICA3MTY2LjMy
LCA2ODU2LjYxLCAyMTkzNywgICA3MjYzLjE0LCA5NTY5LjA3LCAxNDkxOSwgICA4NDEzLjMyLCA3
NTUxLjg5LAorICAgICAgNzg0OC42NSwgNjAxMS4yNywgMTMwODAuNiwgMTU4NjUuMiwgMTI2NTYs
ICAgMTc0NTkuNiwgNDI2My45MywgNDUwMy4wMywKKyAgICAgIDkzMTEuNzksIDIxMDk1LjgsIDEy
NjU3LjksIDEzOTA2LjYsIDE5MjY3LjIsIDExMzM4LjEsIDE2ODI4LjksIDExNTAxLjYsCisgICAg
ICAxMTQwNSwgICAxNTAzMS40LCAxNDU0MS42LCAxOTc2NS41LCAxODM0Ni4zLCAxOTM1MC4yLCAz
MTU3LjQ3LCAxODA5NS44LAorICAgICAgMTc0My42OCwgMjEzMjguMiwgMTk3MjcuNSwgNzI5NS4x
NiwgMTAzMzIuNCwgMTEwNTUuNSwgMjAxMDcuNCwgMTQ3MDguNCwKKyAgICAgIDEyNDE2LjIsIDE2
NDM0LCAgIDI0NTQuNjksIDk4NDAuOCwgIDY4NjcuMjMsIDE2MTUuNzUsIDYwNTkuOSwgIDgzOTQu
MTl9OworICBSVENfRENIRUNLX0dFKHguc2l6ZSgpLCBmcmFtZS5zaXplKCkpOworICBzdGQ6OmNv
cHkoZnJhbWUuYmVnaW4oKSwgZnJhbWUuZW5kKCksIHguYmVnaW4oKSk7Cit9CisKK2NsYXNzIFRl
c3RJbnB1dHMgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgVGVzdElucHV0cyhjb25zdCBFY2hvQ2Fu
Y2VsbGVyM0NvbmZpZyYgY2ZnKTsKKyAgflRlc3RJbnB1dHMoKTsKKyAgY29uc3QgUmVuZGVyQnVm
ZmVyJiBHZXRSZW5kZXJCdWZmZXIoKSB7IHJldHVybiAqcmVuZGVyX2J1ZmZlcl87IH0KKyAgcnRj
OjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEdldFgyKCkgeyByZXR1cm4gWDJfOyB9CisgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBHZXRZMigpIHsgcmV0dXJuIFkyXzsgfQorICBydGM6OkFy
cmF5Vmlldzxjb25zdCBmbG9hdD4gR2V0RTIoKSB7IHJldHVybiBFMl87IH0KKyAgc3RkOjp2ZWN0
b3I8c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPj4gR2V0SDIoKSB7IHJldHVy
biBIMl87IH0KKyAgdm9pZCBVcGRhdGUoKTsKKworIHByaXZhdGU6CisgIHZvaWQgVXBkYXRlQ3Vy
cmVudFBvd2VyU3BlY3RyYSgpOworICBpbnQgbl8gPSAwOworICBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXJfOworICBSZW5kZXJCdWZmZXIqIHJl
bmRlcl9idWZmZXJfOworICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFgy
XzsKKyAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBZMl87CisgIHN0ZDo6
YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gRTJfOworICBzdGQ6OnZlY3RvcjxzdGQ6
OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiBIMl87CisgIHN0ZDo6dmVjdG9yPHN0
ZDo6dmVjdG9yPGZsb2F0Pj4geF87Cit9OworCitUZXN0SW5wdXRzOjpUZXN0SW5wdXRzKGNvbnN0
IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjZmcpCisgICAgOiByZW5kZXJfZGVsYXlfYnVmZmVyXyhS
ZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjZmcsIDEpKSwKKyAgICAgIEgyXyhjZmcuZmlsdGVy
Lm1haW4ubGVuZ3RoX2Jsb2NrcyksCisgICAgICB4XygxLCBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Js
b2NrU2l6ZSwgMC5mKSkgeworICByZW5kZXJfZGVsYXlfYnVmZmVyXy0+U2V0RGVsYXkoNCk7Cisg
IHJlbmRlcl9idWZmZXJfID0gcmVuZGVyX2RlbGF5X2J1ZmZlcl8tPkdldFJlbmRlckJ1ZmZlcigp
OworICBmb3IgKGF1dG8mIEggOiBIMl8pIHsKKyAgICBILmZpbGwoMC5mKTsKKyAgfQorICBIMl9b
MF0uZmlsbCgxLjBmKTsKK30KKworVGVzdElucHV0czo6flRlc3RJbnB1dHMoKSA9IGRlZmF1bHQ7
CisKK3ZvaWQgVGVzdElucHV0czo6VXBkYXRlKCkgeworICBpZiAobl8gJSAyID09IDApIHsKKyAg
ICBzdGQ6OmZpbGwoeF9bMF0uYmVnaW4oKSwgeF9bMF0uZW5kKCksIDAuZik7CisgIH0gZWxzZSB7
CisgICAgR2V0QWN0aXZlRnJhbWUoeF9bMF0pOworICB9CisKKyAgcmVuZGVyX2RlbGF5X2J1ZmZl
cl8tPkluc2VydCh4Xyk7CisgIHJlbmRlcl9kZWxheV9idWZmZXJfLT5QcmVwYXJlQ2FwdHVyZVBy
b2Nlc3NpbmcoKTsKKyAgVXBkYXRlQ3VycmVudFBvd2VyU3BlY3RyYSgpOworICArK25fOworfQor
Cit2b2lkIFRlc3RJbnB1dHM6OlVwZGF0ZUN1cnJlbnRQb3dlclNwZWN0cmEoKSB7CisgIGNvbnN0
IFZlY3RvckJ1ZmZlciYgc3BlY3RydW1fcmVuZGVyX2J1ZmZlciA9CisgICAgICByZW5kZXJfYnVm
ZmVyXy0+R2V0U3BlY3RydW1CdWZmZXIoKTsKKyAgc2l6ZV90IGlkeCA9IHJlbmRlcl9idWZmZXJf
LT5Qb3NpdGlvbigpOworICBzaXplX3QgcHJldl9pZHggPSBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVy
Lk9mZnNldEluZGV4KGlkeCwgMSk7CisgIGF1dG8mIFgyID0gc3BlY3RydW1fcmVuZGVyX2J1ZmZl
ci5idWZmZXJbaWR4XTsKKyAgYXV0byYgWDJfcHJldiA9IHNwZWN0cnVtX3JlbmRlcl9idWZmZXIu
YnVmZmVyW3ByZXZfaWR4XTsKKyAgc3RkOjpjb3B5KFgyLmJlZ2luKCksIFgyLmVuZCgpLCBYMl8u
YmVnaW4oKSk7CisgIFJUQ19EQ0hFQ0tfRVEoWDIuc2l6ZSgpLCBZMl8uc2l6ZSgpKTsKKyAgZm9y
IChzaXplX3QgayA9IDA7IGsgPCBYMi5zaXplKCk7ICsraykgeworICAgIEUyX1trXSA9IDAuMDFm
ICogWDJfcHJldltrXTsKKyAgICBZMl9ba10gPSBYMltrXSArIEUyX1trXTsKKyAgfQorfQorCit9
ICAvLyBuYW1lc3BhY2UKKworVEVTVChTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yLCBTd2Vl
cFNldHRpbmdzKSB7CisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNmZzsKKyAgc2l6ZV90IG1heF9s
ZW5ndGhfYmxvY2tzID0gNTA7CisgIGZvciAoc2l6ZV90IGJsb2NrcyA9IDA7IGJsb2NrcyA8IG1h
eF9sZW5ndGhfYmxvY2tzOyBibG9ja3MgPSBibG9ja3MgKyAxMCkgeworICAgIGZvciAoc2l6ZV90
IGRlbGF5X2hlYWRyb29tID0gMDsgZGVsYXlfaGVhZHJvb20gPCA1OyArK2RlbGF5X2hlYWRyb29t
KSB7CisgICAgICBmb3IgKHNpemVfdCBudW1fc2VjdGlvbnMgPSAyOyBudW1fc2VjdGlvbnMgPCBt
YXhfbGVuZ3RoX2Jsb2NrczsKKyAgICAgICAgICAgKytudW1fc2VjdGlvbnMpIHsKKyAgICAgICAg
Y2ZnLmZpbHRlci5tYWluLmxlbmd0aF9ibG9ja3MgPSBibG9ja3M7CisgICAgICAgIGNmZy5maWx0
ZXIubWFpbl9pbml0aWFsLmxlbmd0aF9ibG9ja3MgPQorICAgICAgICAgICAgc3RkOjptaW4oY2Zn
LmZpbHRlci5tYWluX2luaXRpYWwubGVuZ3RoX2Jsb2NrcywgYmxvY2tzKTsKKyAgICAgICAgY2Zn
LmRlbGF5LmRlbGF5X2hlYWRyb29tX2Jsb2NrcyA9IGRlbGF5X2hlYWRyb29tOworICAgICAgICBj
ZmcuZXJsZS5udW1fc2VjdGlvbnMgPSBudW1fc2VjdGlvbnM7CisgICAgICAgIGlmIChFY2hvQ2Fu
Y2VsbGVyM0NvbmZpZzo6VmFsaWRhdGUoJmNmZykpIHsKKyAgICAgICAgICBTaWduYWxEZXBlbmRl
bnRFcmxlRXN0aW1hdG9yIHMoY2ZnKTsKKyAgICAgICAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0
TGVuZ3RoQnkyUGx1czE+IGF2ZXJhZ2VfZXJsZTsKKyAgICAgICAgICBhdmVyYWdlX2VybGUuZmls
bChjZmcuZXJsZS5tYXhfbCk7CisgICAgICAgICAgVGVzdElucHV0cyBpbnB1dHMoY2ZnKTsKKyAg
ICAgICAgICBmb3IgKHNpemVfdCBuID0gMDsgbiA8IDEwOyArK24pIHsKKyAgICAgICAgICAgIGlu
cHV0cy5VcGRhdGUoKTsKKyAgICAgICAgICAgIHMuVXBkYXRlKGlucHV0cy5HZXRSZW5kZXJCdWZm
ZXIoKSwgaW5wdXRzLkdldEgyKCksIGlucHV0cy5HZXRYMigpLAorICAgICAgICAgICAgICAgICAg
ICAgaW5wdXRzLkdldFkyKCksIGlucHV0cy5HZXRFMigpLCBhdmVyYWdlX2VybGUsIHRydWUpOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQorCitURVNUKFNp
Z25hbERlcGVuZGVudEVybGVFc3RpbWF0b3IsIExvbmdlclJ1bikgeworICBFY2hvQ2FuY2VsbGVy
M0NvbmZpZyBjZmc7CisgIGNmZy5maWx0ZXIubWFpbi5sZW5ndGhfYmxvY2tzID0gMjsKKyAgY2Zn
LmZpbHRlci5tYWluX2luaXRpYWwubGVuZ3RoX2Jsb2NrcyA9IDE7CisgIGNmZy5kZWxheS5kZWxh
eV9oZWFkcm9vbV9ibG9ja3MgPSAwOworICBjZmcuZGVsYXkuaHlzdGVyZXNpc19saW1pdF8xX2Js
b2NrcyA9IDA7CisgIGNmZy5lcmxlLm51bV9zZWN0aW9ucyA9IDI7CisgIEVYUEVDVF9FUShFY2hv
Q2FuY2VsbGVyM0NvbmZpZzo6VmFsaWRhdGUoJmNmZyksIHRydWUpOworICBzdGQ6OmFycmF5PGZs
b2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IGF2ZXJhZ2VfZXJsZTsKKyAgYXZlcmFnZV9lcmxlLmZp
bGwoY2ZnLmVybGUubWF4X2wpOworICBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yIHMoY2Zn
KTsKKyAgVGVzdElucHV0cyBpbnB1dHMoY2ZnKTsKKyAgZm9yIChzaXplX3QgbiA9IDA7IG4gPCAy
MDA7ICsrbikgeworICAgIGlucHV0cy5VcGRhdGUoKTsKKyAgICBzLlVwZGF0ZShpbnB1dHMuR2V0
UmVuZGVyQnVmZmVyKCksIGlucHV0cy5HZXRIMigpLCBpbnB1dHMuR2V0WDIoKSwKKyAgICAgICAg
ICAgICBpbnB1dHMuR2V0WTIoKSwgaW5wdXRzLkdldEUyKCksIGF2ZXJhZ2VfZXJsZSwgdHJ1ZSk7
CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvc2tld19lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9za2V3X2VzdGltYXRvci5j
YwppbmRleCAzMTBlNGU5ZGQxZGEyMmM1NDFiYTNhMDcwOGI0YTQ0ZmVmNGIwNWZiLi5hMjA5OWZj
ZDAxMzAxYzJiOTU4NDgzNjhhNzM0MWZjZDZkOWU3NzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9za2V3X2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9za2V3X2VzdGltYXRv
ci5jYwpAQCAtMTAsNyArMTAsNiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3NrZXdfZXN0aW1hdG9yLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVk
ZSA8bnVtZXJpYz4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3NrZXdfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9za2V3X2VzdGltYXRvci5o
CmluZGV4IGZmMjUyNjAyNWE4N2ZhYWZhZmU2N2RkMDljMzBiOWY3NDdjNTM1YmMuLmIwOTQ2ZDgz
M2U1NDNhODcyYTZhYjIzYzdkZGYwMjhkOWVjY2E2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3NrZXdfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2tld19lc3RpbWF0b3Iu
aApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVD
M19TS0VXX0VTVElNQVRPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVD
M19TS0VXX0VTVElNQVRPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvc3RhdGlvbmFyaXR5X2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N0
YXRpb25hcml0eV9lc3RpbWF0b3IuY2MKaW5kZXggZWZlYWJmMTExN2YyMDk4ZjQzNGY3Mjg5OTc2
NTdhNjQ1MjllODhjNC4uMjUxMDBiZmQ0YWY1NmU3NDVjOTVjZmQ2ZDg2Njc2ZGYzYzdjMjA4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3RhdGlvbmFyaXR5X2VzdGltYXRvci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9zdGF0aW9uYXJpdHlfZXN0aW1hdG9yLmNjCkBAIC0xNCw2ICsxNCw3
IEBACiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9h
ZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Zl
Y3Rvcl9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2lu
Zy9hcG1fZGF0YV9kdW1wZXIuaCIKQEAgLTQwLDcgKzQxLDYgQEAgdm9pZCBTdGF0aW9uYXJpdHlF
c3RpbWF0b3I6OlJlc2V0KCkgewogICBub2lzZV8uUmVzZXQoKTsKICAgaGFuZ292ZXJzXy5maWxs
KDApOwogICBzdGF0aW9uYXJpdHlfZmxhZ3NfLmZpbGwoZmFsc2UpOwotICByZW5kZXJfcmV2ZXJi
Xy5SZXNldCgpOwogfQogCiAvLyBVcGRhdGUganVzdCB0aGUgbm9pc2UgZXN0aW1hdG9yLiBVc2Vm
dWxsIHVudGlsIHRoZSBkZWxheSBpcyBrbm93bgpAQCAtNTQsOSArNTQsOSBAQCB2b2lkIFN0YXRp
b25hcml0eUVzdGltYXRvcjo6VXBkYXRlTm9pc2VFc3RpbWF0b3IoCiAKIHZvaWQgU3RhdGlvbmFy
aXR5RXN0aW1hdG9yOjpVcGRhdGVTdGF0aW9uYXJpdHlGbGFncygKICAgICBjb25zdCBWZWN0b3JC
dWZmZXImIHNwZWN0cnVtX2J1ZmZlciwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4g
cmVuZGVyX3JldmVyYl9jb250cmlidXRpb25fc3BlY3RydW0sCiAgICAgaW50IGlkeF9jdXJyZW50
LAotICAgIGludCBudW1fbG9va2FoZWFkLAotICAgIGZsb2F0IHJldmVyYl9kZWNheSkgeworICAg
IGludCBudW1fbG9va2FoZWFkKSB7CiAgIHN0ZDo6YXJyYXk8aW50LCBrV2luZG93TGVuZ3RoPiBp
bmRleGVzOwogICBpbnQgbnVtX2xvb2thaGVhZF9ib3VuZGVkID0gc3RkOjptaW4obnVtX2xvb2th
aGVhZCwga1dpbmRvd0xlbmd0aCAtIDEpOwogICBpbnQgaWR4ID0gaWR4X2N1cnJlbnQ7CkBAIC03
OSwxMiArNzksOSBAQCB2b2lkIFN0YXRpb25hcml0eUVzdGltYXRvcjo6VXBkYXRlU3RhdGlvbmFy
aXR5RmxhZ3MoCiAgICAgICBzcGVjdHJ1bV9idWZmZXIuRGVjSW5kZXgoaW5kZXhlc1trV2luZG93
TGVuZ3RoIC0gMV0pLAogICAgICAgc3BlY3RydW1fYnVmZmVyLk9mZnNldEluZGV4KGlkeF9jdXJy
ZW50LCAtKG51bV9sb29rYWhlYWRfYm91bmRlZCArIDEpKSk7CiAKLSAgaW50IGlkeF9wYXN0ID0g
c3BlY3RydW1fYnVmZmVyLkluY0luZGV4KGlkeF9jdXJyZW50KTsKLSAgcmVuZGVyX3JldmVyYl8u
VXBkYXRlUmV2ZXJiQ29udHJpYnV0aW9uc05vRnJlcVNoYXBpbmcoCi0gICAgICBzcGVjdHJ1bV9i
dWZmZXIuYnVmZmVyW2lkeF9wYXN0XSwgMS4wZiwgcmV2ZXJiX2RlY2F5KTsKICAgZm9yIChzaXpl
X3QgayA9IDA7IGsgPCBzdGF0aW9uYXJpdHlfZmxhZ3NfLnNpemUoKTsgKytrKSB7CiAgICAgc3Rh
dGlvbmFyaXR5X2ZsYWdzX1trXSA9IEVzdGltYXRlQmFuZFN0YXRpb25hcml0eSgKLSAgICAgICAg
c3BlY3RydW1fYnVmZmVyLCByZW5kZXJfcmV2ZXJiXy5HZXRQb3dlclNwZWN0cnVtKCksIGluZGV4
ZXMsIGspOworICAgICAgICBzcGVjdHJ1bV9idWZmZXIsIHJlbmRlcl9yZXZlcmJfY29udHJpYnV0
aW9uX3NwZWN0cnVtLCBpbmRleGVzLCBrKTsKICAgfQogICBVcGRhdGVIYW5nb3ZlcigpOwogICBT
bW9vdGhTdGF0aW9uYXJ5UGVyRnJlcSgpOwpAQCAtMTAyLDcgKzk5LDcgQEAgYm9vbCBTdGF0aW9u
YXJpdHlFc3RpbWF0b3I6OklzQmxvY2tTdGF0aW9uYXJ5KCkgY29uc3QgewogCiBib29sIFN0YXRp
b25hcml0eUVzdGltYXRvcjo6RXN0aW1hdGVCYW5kU3RhdGlvbmFyaXR5KAogICAgIGNvbnN0IFZl
Y3RvckJ1ZmZlciYgc3BlY3RydW1fYnVmZmVyLAotICAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQs
IGtGZnRMZW5ndGhCeTJQbHVzMT4mIHJldmVyYiwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBm
bG9hdD4gcmV2ZXJiLAogICAgIGNvbnN0IHN0ZDo6YXJyYXk8aW50LCBrV2luZG93TGVuZ3RoPiYg
aW5kZXhlcywKICAgICBzaXplX3QgYmFuZCkgY29uc3QgewogICBjb25zdGV4cHIgZmxvYXQga1Ro
clN0YXRpb25hcml0eSA9IDEwLmY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdGF0aW9u
YXJpdHlfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdGF0aW9uYXJpdHlfZXN0aW1hdG9y
LmgKaW5kZXggZTJjNWE2MjUzNDcxZjg0ODZmMTFiZWU3YzYxOTM3NzRjNTRhZTZkOS4uNzA0ODU5
YTFmZTc4M2M1OWMxYjhlZWY3OTQ2MWM1NTBmMTllNDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvc3RhdGlvbmFyaXR5X2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N0YXRp
b25hcml0eV9lc3RpbWF0b3IuaApAQCAtMTEsMTggKzExLDE5IEBACiAjaWZuZGVmIE1PRFVMRVNf
QVVESU9fUFJPQ0VTU0lOR19BRUMzX1NUQVRJT05BUklUWV9FU1RJTUFUT1JfSF8KICNkZWZpbmUg
TU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfU1RBVElPTkFSSVRZX0VTVElNQVRPUl9IXwog
CisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bWVtb3J5
PgotI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIiAgLy8ga0Zm
dExlbmd0aEJ5MlBsdXMxLi4uCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmV2ZXJiX21vZGVsLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvdmVjdG9yX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgQXBtRGF0YUR1bXBlcjsKK3N0cnVjdCBWZWN0b3JCdWZm
ZXI7CiAKIGNsYXNzIFN0YXRpb25hcml0eUVzdGltYXRvciB7CiAgcHVibGljOgpAQCAtMzcsMTAg
KzM4LDExIEBAIGNsYXNzIFN0YXRpb25hcml0eUVzdGltYXRvciB7CiAKICAgLy8gVXBkYXRlIHRo
ZSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGlzIGN1cnJlbnQgZnJhbWUgaXMgc3RhdGlvbmFy
eS4gRm9yCiAgIC8vIGdldHRpbmcgYSBtb3JlIHJvYnVzdCBlc3RpbWF0aW9uLCBpdCBsb29rcyBh
dCBmdXR1cmUgYW5kL29yIHBhc3QgZnJhbWVzLgotICB2b2lkIFVwZGF0ZVN0YXRpb25hcml0eUZs
YWdzKGNvbnN0IFZlY3RvckJ1ZmZlciYgc3BlY3RydW1fYnVmZmVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBpZHhfY3VycmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbnVtX2xvb2thaGVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCByZXZlcmJfZGVjYXkpOworICB2b2lkIFVwZGF0ZVN0YXRpb25hcml0eUZsYWdzKAor
ICAgICAgY29uc3QgVmVjdG9yQnVmZmVyJiBzcGVjdHJ1bV9idWZmZXIsCisgICAgICBydGM6OkFy
cmF5Vmlldzxjb25zdCBmbG9hdD4gcmVuZGVyX3JldmVyYl9jb250cmlidXRpb25fc3BlY3RydW0s
CisgICAgICBpbnQgaWR4X2N1cnJlbnQsCisgICAgICBpbnQgbnVtX2xvb2thaGVhZCk7CiAKICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGJhbmQgaXMgc3RhdGlvbmFyeS4KICAgYm9v
bCBJc0JhbmRTdGF0aW9uYXJ5KHNpemVfdCBiYW5kKSBjb25zdCB7CkBAIC01NywxMSArNTksMTAg
QEAgY2xhc3MgU3RhdGlvbmFyaXR5RXN0aW1hdG9yIHsKIAogICAvLyBHZXQgYW4gZXN0aW1hdGlv
biBvZiB0aGUgc3RhdGlvbmFyaXR5IGZvciB0aGUgY3VycmVudCBiYW5kIGJ5IGxvb2tpbmcKICAg
Ly8gYXQgdGhlIHBhc3QvcHJlc2VudC9mdXR1cmUgYXZhaWxhYmxlIGRhdGEuCi0gIGJvb2wgRXN0
aW1hdGVCYW5kU3RhdGlvbmFyaXR5KAotICAgICAgY29uc3QgVmVjdG9yQnVmZmVyJiBzcGVjdHJ1
bV9idWZmZXIsCi0gICAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1
czE+JiByZXZlcmIsCi0gICAgICBjb25zdCBzdGQ6OmFycmF5PGludCwga1dpbmRvd0xlbmd0aD4m
IGluZGV4ZXMsCi0gICAgICBzaXplX3QgYmFuZCkgY29uc3Q7CisgIGJvb2wgRXN0aW1hdGVCYW5k
U3RhdGlvbmFyaXR5KGNvbnN0IFZlY3RvckJ1ZmZlciYgc3BlY3RydW1fYnVmZmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmV2
ZXJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmFycmF5PGlu
dCwga1dpbmRvd0xlbmd0aD4mIGluZGV4ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBiYW5kKSBjb25zdDsKIAogICAvLyBUcnVlIGlmIGFsbCBiYW5kcyBhdCB0aGUg
Y3VycmVudCBwb2ludCBhcmUgc3RhdGlvbmFyeS4KICAgYm9vbCBBcmVBbGxCYW5kc1N0YXRpb25h
cnkoKTsKQEAgLTExMSw3ICsxMTIsNiBAQCBjbGFzcyBTdGF0aW9uYXJpdHlFc3RpbWF0b3Igewog
ICBOb2lzZVNwZWN0cnVtIG5vaXNlXzsKICAgc3RkOjphcnJheTxpbnQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4gaGFuZ292ZXJzXzsKICAgc3RkOjphcnJheTxib29sLCBrRmZ0TGVuZ3RoQnkyUGx1czE+
IHN0YXRpb25hcml0eV9mbGFnc187Ci0gIFJldmVyYk1vZGVsIHJlbmRlcl9yZXZlcmJfOwogfTsK
IAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3Vi
YmFuZF9lcmxlX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YmJhbmRfZXJsZV9lc3Rp
bWF0b3IuY2MKaW5kZXggZDhjYjdhNzYzMTVmMjY2MjRhMTA2NTQwZDc1ZTY5YTM5Y2VjZDcyNS4u
OTQ1M2U1NzM5ZjBkNmEzOTE0MzA4ODczOWIzMTE4NzViMzU3OTJiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvc3ViYmFuZF9lcmxlX2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9zdWJiYW5kX2VybGVfZXN0aW1hdG9yLmNjCkBAIC0xMSwzNSArMTEsMzggQEAKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJiYW5kX2VybGVfZXN0aW1hdG9yLmgi
CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CiAKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCi0jaW5jbHVkZSAi
YXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9hZWMzX2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dn
aW5nL2FwbV9kYXRhX2R1bXBlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAic3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
IG5hbWVzcGFjZSB7Ci1jb25zdGV4cHIgaW50IGtQb2ludHNUb0FjY3VtdWxhdGUgPSA2OworCiBj
b25zdGV4cHIgZmxvYXQga1gyQmFuZEVuZXJneVRocmVzaG9sZCA9IDQ0MDE1MDY4LjBmOwotY29u
c3RleHByIGludCBrRXJsZUhvbGQgPSAxMDA7Ci1jb25zdGV4cHIgaW50IGtCbG9ja3NGb3JPbnNl
dERldGVjdGlvbiA9IGtFcmxlSG9sZCArIDE1MDsKK2NvbnN0ZXhwciBpbnQga0Jsb2Nrc1RvSG9s
ZEVybGUgPSAxMDA7Citjb25zdGV4cHIgaW50IGtCbG9ja3NGb3JPbnNldERldGVjdGlvbiA9IGtC
bG9ja3NUb0hvbGRFcmxlICsgMTUwOworY29uc3RleHByIGludCBrUG9pbnRzVG9BY2N1bXVsYXRl
ID0gNjsKIAogYm9vbCBFbmFibGVBZGFwdEVybGVPbkxvd1JlbmRlcigpIHsKICAgcmV0dXJuICFm
aWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM0FkYXB0RXJsZU9uTG93UmVuZGVyS2ls
bFN3aXRjaCIpOwogfQogCitzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFNl
dE1heEVybGVCYW5kcyhmbG9hdCBtYXhfZXJsZV9sLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4X2VybGVfaCkgeworICBzdGQ6
OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IG1heF9lcmxlOworICBzdGQ6OmZpbGwo
bWF4X2VybGUuYmVnaW4oKSwgbWF4X2VybGUuYmVnaW4oKSArIGtGZnRMZW5ndGhCeTIgLyAyLCBt
YXhfZXJsZV9sKTsKKyAgc3RkOjpmaWxsKG1heF9lcmxlLmJlZ2luKCkgKyBrRmZ0TGVuZ3RoQnky
IC8gMiwgbWF4X2VybGUuZW5kKCksIG1heF9lcmxlX2gpOworICByZXR1cm4gbWF4X2VybGU7Cit9
CisKIH0gIC8vIG5hbWVzcGFjZQogCi1TdWJiYW5kRXJsZUVzdGltYXRvcjo6U3ViYmFuZEVybGVF
c3RpbWF0b3IoZmxvYXQgbWluX2VybGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgbWF4X2VybGVfbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4X2VybGVfaGYpCi0gICAgOiBtaW5fZXJsZV8obWlu
X2VybGUpLAotICAgICAgbWF4X2VybGVfbGZfKG1heF9lcmxlX2xmKSwKLSAgICAgIG1heF9lcmxl
X2hmXyhtYXhfZXJsZV9oZiksCitTdWJiYW5kRXJsZUVzdGltYXRvcjo6U3ViYmFuZEVybGVFc3Rp
bWF0b3IoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZykKKyAgICA6IG1pbl9lcmxl
Xyhjb25maWcuZXJsZS5taW4pLAorICAgICAgbWF4X2VybGVfKFNldE1heEVybGVCYW5kcyhjb25m
aWcuZXJsZS5tYXhfbCwgY29uZmlnLmVybGUubWF4X2gpKSwKICAgICAgIGFkYXB0X29uX2xvd19y
ZW5kZXJfKEVuYWJsZUFkYXB0RXJsZU9uTG93UmVuZGVyKCkpIHsKICAgUmVzZXQoKTsKIH0KQEAg
LTQ5LDggKzUyLDkgQEAgU3ViYmFuZEVybGVFc3RpbWF0b3I6On5TdWJiYW5kRXJsZUVzdGltYXRv
cigpID0gZGVmYXVsdDsKIHZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6OlJlc2V0KCkgewogICBl
cmxlXy5maWxsKG1pbl9lcmxlXyk7CiAgIGVybGVfb25zZXRzXy5maWxsKG1pbl9lcmxlXyk7Ci0g
IGhvbGRfY291bnRlcnNfLmZpbGwoMCk7CiAgIGNvbWluZ19vbnNldF8uZmlsbCh0cnVlKTsKKyAg
aG9sZF9jb3VudGVyc18uZmlsbCgwKTsKKyAgUmVzZXRBY2N1bXVsYXRlZFNwZWN0cmEoKTsKIH0K
IAogdm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6VXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IGZsb2F0PiBYMiwKQEAgLTYyLDEwICs2Niw4IEBAIHZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6
OlVwZGF0ZShydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWDIsCiAgICAgLy8gTm90ZSB0aGF0
IHRoZSB1c2Ugb2YgdGhlIGNvbnZlcmdlZF9maWx0ZXIgZmxhZyBhbHJlYWR5IGltcG9zZWQKICAg
ICAvLyBhIG1pbmltdW0gb2YgdGhlIGVybGUgdGhhdCBjYW4gYmUgZXN0aW1hdGVkIGFzIHRoYXQg
ZmxhZyB3b3VsZAogICAgIC8vIGJlIGZhbHNlIGlmIHRoZSBmaWx0ZXIgaXMgcGVyZm9ybWluZyBw
b29ybHkuCi0gICAgY29uc3RleHByIHNpemVfdCBrRmZ0TGVuZ3RoQnk0ID0ga0ZmdExlbmd0aEJ5
MiAvIDI7Ci0gICAgVXBkYXRlQmFuZHMoWDIsIFkyLCBFMiwgMSwga0ZmdExlbmd0aEJ5NCwgbWF4
X2VybGVfbGZfLCBvbnNldF9kZXRlY3Rpb24pOwotICAgIFVwZGF0ZUJhbmRzKFgyLCBZMiwgRTIs
IGtGZnRMZW5ndGhCeTQsIGtGZnRMZW5ndGhCeTIsIG1heF9lcmxlX2hmXywKLSAgICAgICAgICAg
ICAgICBvbnNldF9kZXRlY3Rpb24pOworICAgIFVwZGF0ZUFjY3VtdWxhdGVkU3BlY3RyYShYMiwg
WTIsIEUyKTsKKyAgICBVcGRhdGVCYW5kcyhvbnNldF9kZXRlY3Rpb24pOwogICB9CiAKICAgaWYg
KG9uc2V0X2RldGVjdGlvbikgewpAQCAtNzgsNTMgKzgwLDQ1IEBAIHZvaWQgU3ViYmFuZEVybGVF
c3RpbWF0b3I6OlVwZGF0ZShydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWDIsCiAKIHZvaWQg
U3ViYmFuZEVybGVFc3RpbWF0b3I6OkR1bXAoCiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEFw
bURhdGFEdW1wZXI+JiBkYXRhX2R1bXBlcikgY29uc3QgewotICBkYXRhX2R1bXBlci0+RHVtcFJh
dygiYWVjM19lcmxlIiwgRXJsZSgpKTsKICAgZGF0YV9kdW1wZXItPkR1bXBSYXcoImFlYzNfZXJs
ZV9vbnNldCIsIEVybGVPbnNldHMoKSk7CiB9CiAKLXZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6
OlVwZGF0ZUJhbmRzKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBZ
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IGZsb2F0PiBFMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBzdG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
bWF4X2VybGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG9u
c2V0X2RldGVjdGlvbikgewotICBhdXRvIGVybGVfYmFuZF91cGRhdGUgPSBbXShmbG9hdCBlcmxl
X2JhbmQsIGZsb2F0IG5ld19lcmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGxvd19yZW5kZXJfZW5lcmd5LCBmbG9hdCBhbHBoYV9pbmMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IGFscGhhX2RlYywgZmxvYXQgbWluX2VybGUsIGZsb2F0IG1heF9lcmxl
KSB7Ci0gICAgaWYgKG5ld19lcmxlIDwgZXJsZV9iYW5kICYmIGxvd19yZW5kZXJfZW5lcmd5KSB7
Ci0gICAgICAvLyBEZWNyZWFzZXMgYXJlIG5vdCBhbGxvd2VkIGlmIGxvdyByZW5kZXIgZW5lcmd5
IHNpZ25hbHMgd2VyZSB1c2VkIGZvcgotICAgICAgLy8gdGhlIGVybGUgY29tcHV0YXRpb24uCi0g
ICAgICByZXR1cm4gZXJsZV9iYW5kOwordm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6VXBkYXRl
QmFuZHMoYm9vbCBvbnNldF9kZXRlY3Rpb24pIHsKKyAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExl
bmd0aEJ5Mj4gbmV3X2VybGU7CisgIHN0ZDo6YXJyYXk8Ym9vbCwga0ZmdExlbmd0aEJ5Mj4gaXNf
ZXJsZV91cGRhdGVkOworICBpc19lcmxlX3VwZGF0ZWQuZmlsbChmYWxzZSk7CisKKyAgZm9yIChz
aXplX3QgayA9IDE7IGsgPCBrRmZ0TGVuZ3RoQnkyOyArK2spIHsKKyAgICBpZiAoYWNjdW1fc3Bl
Y3RyYV8ubnVtX3BvaW50c19ba10gPT0ga1BvaW50c1RvQWNjdW11bGF0ZSAmJgorICAgICAgICBh
Y2N1bV9zcGVjdHJhXy5FMl9ba10gPiAwLmYpIHsKKyAgICAgIG5ld19lcmxlW2tdID0gYWNjdW1f
c3BlY3RyYV8uWTJfW2tdIC8gYWNjdW1fc3BlY3RyYV8uRTJfW2tdOworICAgICAgaXNfZXJsZV91
cGRhdGVkW2tdID0gdHJ1ZTsKICAgICB9Ci0gICAgZmxvYXQgYWxwaGEgPSBuZXdfZXJsZSA+IGVy
bGVfYmFuZCA/IGFscGhhX2luYyA6IGFscGhhX2RlYzsKLSAgICBmbG9hdCBlcmxlX2JhbmRfb3V0
ID0gZXJsZV9iYW5kOwotICAgIGVybGVfYmFuZF9vdXQgPSBlcmxlX2JhbmQgKyBhbHBoYSAqIChu
ZXdfZXJsZSAtIGVybGVfYmFuZCk7Ci0gICAgZXJsZV9iYW5kX291dCA9IHJ0Yzo6U2FmZUNsYW1w
KGVybGVfYmFuZF9vdXQsIG1pbl9lcmxlLCBtYXhfZXJsZSk7Ci0gICAgcmV0dXJuIGVybGVfYmFu
ZF9vdXQ7Ci0gIH07Ci0KLSAgZm9yIChzaXplX3QgayA9IHN0YXJ0OyBrIDwgc3RvcDsgKytrKSB7
Ci0gICAgaWYgKGFkYXB0X29uX2xvd19yZW5kZXJfIHx8IFgyW2tdID4ga1gyQmFuZEVuZXJneVRo
cmVzaG9sZCkgewotICAgICAgYm9vbCBsb3dfcmVuZGVyX2VuZXJneSA9IGZhbHNlOwotICAgICAg
YWJzbDo6b3B0aW9uYWw8ZmxvYXQ+IG5ld19lcmxlID0gaW5zdGFudGFuZW91c19lcmxlXy5VcGRh
dGUoCi0gICAgICAgICAgWDJba10sIFkyW2tdLCBFMltrXSwgaywgJmxvd19yZW5kZXJfZW5lcmd5
KTsKLSAgICAgIGlmIChuZXdfZXJsZSkgewotICAgICAgICBSVENfRENIRUNLKGFkYXB0X29uX2xv
d19yZW5kZXJfIHx8ICFsb3dfcmVuZGVyX2VuZXJneSk7Ci0gICAgICAgIGlmIChvbnNldF9kZXRl
Y3Rpb24gJiYgIWxvd19yZW5kZXJfZW5lcmd5KSB7Ci0gICAgICAgICAgaWYgKGNvbWluZ19vbnNl
dF9ba10pIHsKLSAgICAgICAgICAgIGNvbWluZ19vbnNldF9ba10gPSBmYWxzZTsKLSAgICAgICAg
ICAgIGVybGVfb25zZXRzX1trXSA9IGVybGVfYmFuZF91cGRhdGUoCi0gICAgICAgICAgICAgICAg
ZXJsZV9vbnNldHNfW2tdLCBuZXdfZXJsZS52YWx1ZSgpLCBsb3dfcmVuZGVyX2VuZXJneSwgMC4x
NWYsCi0gICAgICAgICAgICAgICAgMC4zZiwgbWluX2VybGVfLCBtYXhfZXJsZSk7Ci0gICAgICAg
ICAgfQotICAgICAgICAgIGhvbGRfY291bnRlcnNfW2tdID0ga0Jsb2Nrc0Zvck9uc2V0RGV0ZWN0
aW9uOworICB9CisKKyAgaWYgKG9uc2V0X2RldGVjdGlvbikgeworICAgIGZvciAoc2l6ZV90IGsg
PSAxOyBrIDwga0ZmdExlbmd0aEJ5MjsgKytrKSB7CisgICAgICBpZiAoaXNfZXJsZV91cGRhdGVk
W2tdICYmICFhY2N1bV9zcGVjdHJhXy5sb3dfcmVuZGVyX2VuZXJneV9ba10pIHsKKyAgICAgICAg
aWYgKGNvbWluZ19vbnNldF9ba10pIHsKKyAgICAgICAgICBjb21pbmdfb25zZXRfW2tdID0gZmFs
c2U7CisgICAgICAgICAgZmxvYXQgYWxwaGEgPSBuZXdfZXJsZVtrXSA8IGVybGVfb25zZXRzX1tr
XSA/IDAuM2YgOiAwLjE1ZjsKKyAgICAgICAgICBlcmxlX29uc2V0c19ba10gPSBydGM6OlNhZmVD
bGFtcCgKKyAgICAgICAgICAgICAgZXJsZV9vbnNldHNfW2tdICsgYWxwaGEgKiAobmV3X2VybGVb
a10gLSBlcmxlX29uc2V0c19ba10pLAorICAgICAgICAgICAgICBtaW5fZXJsZV8sIG1heF9lcmxl
X1trXSk7CiAgICAgICAgIH0KKyAgICAgICAgaG9sZF9jb3VudGVyc19ba10gPSBrQmxvY2tzRm9y
T25zZXREZXRlY3Rpb247CisgICAgICB9CisgICAgfQorICB9CiAKLSAgICAgICAgZXJsZV9ba10g
PQotICAgICAgICAgICAgZXJsZV9iYW5kX3VwZGF0ZShlcmxlX1trXSwgbmV3X2VybGUudmFsdWUo
KSwgbG93X3JlbmRlcl9lbmVyZ3ksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMDVm
LCAwLjFmLCBtaW5fZXJsZV8sIG1heF9lcmxlKTsKKyAgZm9yIChzaXplX3QgayA9IDE7IGsgPCBr
RmZ0TGVuZ3RoQnkyOyArK2spIHsKKyAgICBpZiAoaXNfZXJsZV91cGRhdGVkW2tdKSB7CisgICAg
ICBmbG9hdCBhbHBoYSA9IDAuMDVmOworICAgICAgaWYgKG5ld19lcmxlW2tdIDwgZXJsZV9ba10p
IHsKKyAgICAgICAgYWxwaGEgPSBhY2N1bV9zcGVjdHJhXy5sb3dfcmVuZGVyX2VuZXJneV9ba10g
PyAwLmYgOiAwLjFmOwogICAgICAgfQorICAgICAgZXJsZV9ba10gPSBydGM6OlNhZmVDbGFtcChl
cmxlX1trXSArIGFscGhhICogKG5ld19lcmxlW2tdIC0gZXJsZV9ba10pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtaW5fZXJsZV8sIG1heF9lcmxlX1trXSk7CiAgICAgfQogICB9
CiB9CkBAIC0xMzIsNyArMTI2LDcgQEAgdm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6VXBkYXRl
QmFuZHMocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFgyLAogdm9pZCBTdWJiYW5kRXJsZUVz
dGltYXRvcjo6RGVjcmVhc2VFcmxlUGVyQmFuZEZvckxvd1JlbmRlclNpZ25hbHMoKSB7CiAgIGZv
ciAoc2l6ZV90IGsgPSAxOyBrIDwga0ZmdExlbmd0aEJ5MjsgKytrKSB7CiAgICAgaG9sZF9jb3Vu
dGVyc19ba10tLTsKLSAgICBpZiAoaG9sZF9jb3VudGVyc19ba10gPD0gKGtCbG9ja3NGb3JPbnNl
dERldGVjdGlvbiAtIGtFcmxlSG9sZCkpIHsKKyAgICBpZiAoaG9sZF9jb3VudGVyc19ba10gPD0g
KGtCbG9ja3NGb3JPbnNldERldGVjdGlvbiAtIGtCbG9ja3NUb0hvbGRFcmxlKSkgewogICAgICAg
aWYgKGVybGVfW2tdID4gZXJsZV9vbnNldHNfW2tdKSB7CiAgICAgICAgIGVybGVfW2tdID0gc3Rk
OjptYXgoZXJsZV9vbnNldHNfW2tdLCAwLjk3ZiAqIGVybGVfW2tdKTsKICAgICAgICAgUlRDX0RD
SEVDS19MRShtaW5fZXJsZV8sIGVybGVfW2tdKTsKQEAgLTE0NSw0MyArMTM5LDU1IEBAIHZvaWQg
U3ViYmFuZEVybGVFc3RpbWF0b3I6OkRlY3JlYXNlRXJsZVBlckJhbmRGb3JMb3dSZW5kZXJTaWdu
YWxzKCkgewogICB9CiB9CiAKLVN1YmJhbmRFcmxlRXN0aW1hdG9yOjpFcmxlSW5zdGFudGFuZW91
czo6RXJsZUluc3RhbnRhbmVvdXMoKSB7Ci0gIFJlc2V0KCk7Cit2b2lkIFN1YmJhbmRFcmxlRXN0
aW1hdG9yOjpSZXNldEFjY3VtdWxhdGVkU3BlY3RyYSgpIHsKKyAgYWNjdW1fc3BlY3RyYV8uWTJf
LmZpbGwoMC5mKTsKKyAgYWNjdW1fc3BlY3RyYV8uRTJfLmZpbGwoMC5mKTsKKyAgYWNjdW1fc3Bl
Y3RyYV8ubnVtX3BvaW50c18uZmlsbCgwKTsKKyAgYWNjdW1fc3BlY3RyYV8ubG93X3JlbmRlcl9l
bmVyZ3lfLmZpbGwoZmFsc2UpOwogfQogCi1TdWJiYW5kRXJsZUVzdGltYXRvcjo6RXJsZUluc3Rh
bnRhbmVvdXM6On5FcmxlSW5zdGFudGFuZW91cygpID0gZGVmYXVsdDsKLQotYWJzbDo6b3B0aW9u
YWw8ZmxvYXQ+IFN1YmJhbmRFcmxlRXN0aW1hdG9yOjpFcmxlSW5zdGFudGFuZW91czo6VXBkYXRl
KAotICAgIGZsb2F0IFgyLAotICAgIGZsb2F0IFkyLAotICAgIGZsb2F0IEUyLAotICAgIHNpemVf
dCBiYW5kLAotICAgIGJvb2wqIGxvd19yZW5kZXJfZW5lcmd5KSB7Ci0gIGFic2w6Om9wdGlvbmFs
PGZsb2F0PiBlcmxlX2luc3RhbnRhbmVvdXMgPSBhYnNsOjpudWxsb3B0OwotICBSVENfRENIRUNL
X0xUKGJhbmQsIGtGZnRMZW5ndGhCeTJQbHVzMSk7Ci0gIFkyX2FjdW1fW2JhbmRdICs9IFkyOwot
ICBFMl9hY3VtX1tiYW5kXSArPSBFMjsKLSAgbG93X3JlbmRlcl9lbmVyZ3lfW2JhbmRdID0KLSAg
ICAgIGxvd19yZW5kZXJfZW5lcmd5X1tiYW5kXSB8fCBYMiA8IGtYMkJhbmRFbmVyZ3lUaHJlc2hv
bGQ7Ci0gIGlmICgrK251bV9wb2ludHNfW2JhbmRdID09IGtQb2ludHNUb0FjY3VtdWxhdGUpIHsK
LSAgICBpZiAoRTJfYWN1bV9bYmFuZF0pIHsKLSAgICAgIGVybGVfaW5zdGFudGFuZW91cyA9IFky
X2FjdW1fW2JhbmRdIC8gRTJfYWN1bV9bYmFuZF07Cit2b2lkIFN1YmJhbmRFcmxlRXN0aW1hdG9y
OjpVcGRhdGVBY2N1bXVsYXRlZFNwZWN0cmEoCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxv
YXQ+IFgyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBZMiwKKyAgICBydGM6OkFy
cmF5Vmlldzxjb25zdCBmbG9hdD4gRTIpIHsKKyAgYXV0byYgc3QgPSBhY2N1bV9zcGVjdHJhXzsK
KyAgaWYgKGFkYXB0X29uX2xvd19yZW5kZXJfKSB7CisgICAgaWYgKHN0Lm51bV9wb2ludHNfWzBd
ID09IGtQb2ludHNUb0FjY3VtdWxhdGUpIHsKKyAgICAgIHN0Lm51bV9wb2ludHNfWzBdID0gMDsK
KyAgICAgIHN0LlkyXy5maWxsKDAuZik7CisgICAgICBzdC5FMl8uZmlsbCgwLmYpOworICAgICAg
c3QubG93X3JlbmRlcl9lbmVyZ3lfLmZpbGwoZmFsc2UpOworICAgIH0KKyAgICBzdGQ6OnRyYW5z
Zm9ybShZMi5iZWdpbigpLCBZMi5lbmQoKSwgc3QuWTJfLmJlZ2luKCksIHN0LlkyXy5iZWdpbigp
LAorICAgICAgICAgICAgICAgICAgIHN0ZDo6cGx1czxmbG9hdD4oKSk7CisgICAgc3RkOjp0cmFu
c2Zvcm0oRTIuYmVnaW4oKSwgRTIuZW5kKCksIHN0LkUyXy5iZWdpbigpLCBzdC5FMl8uYmVnaW4o
KSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OnBsdXM8ZmxvYXQ+KCkpOworCisgICAgZm9yIChz
aXplX3QgayA9IDA7IGsgPCBYMi5zaXplKCk7ICsraykgeworICAgICAgc3QubG93X3JlbmRlcl9l
bmVyZ3lfW2tdID0KKyAgICAgICAgICBzdC5sb3dfcmVuZGVyX2VuZXJneV9ba10gfHwgWDJba10g
PCBrWDJCYW5kRW5lcmd5VGhyZXNob2xkOworICAgIH0KKyAgICBzdC5udW1fcG9pbnRzX1swXSsr
OworICAgIHN0Lm51bV9wb2ludHNfLmZpbGwoc3QubnVtX3BvaW50c19bMF0pOworCisgIH0gZWxz
ZSB7CisgICAgLy8gVGhlIHVwZGF0ZSBpcyBhbHdheXMgZG9uZSB1c2luZyBoaWdoIHJlbmRlciBl
bmVyZ3kgc2lnbmFscyBhbmQKKyAgICAvLyB0aGVyZWZvcmUgdGhlIGZpZWxkIGFjY3VtX3NwZWN0
cmFfLmxvd19yZW5kZXJfZW5lcmd5XyBkb2VzIG5vdCBuZWVkIHRvCisgICAgLy8gYmUgbW9kaWZp
ZWQuCisgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBYMi5zaXplKCk7ICsraykgeworICAgICAg
aWYgKFgyW2tdID4ga1gyQmFuZEVuZXJneVRocmVzaG9sZCkgeworICAgICAgICBpZiAoc3QubnVt
X3BvaW50c19ba10gPT0ga1BvaW50c1RvQWNjdW11bGF0ZSkgeworICAgICAgICAgIHN0LlkyX1tr
XSA9IDAuZjsKKyAgICAgICAgICBzdC5FMl9ba10gPSAwLmY7CisgICAgICAgICAgc3QubnVtX3Bv
aW50c19ba10gPSAwOworICAgICAgICB9CisgICAgICAgIHN0LlkyX1trXSArPSBZMltrXTsKKyAg
ICAgICAgc3QuRTJfW2tdICs9IEUyW2tdOworICAgICAgICBzdC5udW1fcG9pbnRzX1trXSsrOwor
ICAgICAgfQorICAgICAgUlRDX0RDSEVDS19FUShzdC5sb3dfcmVuZGVyX2VuZXJneV9ba10sIGZh
bHNlKTsKICAgICB9Ci0gICAgKmxvd19yZW5kZXJfZW5lcmd5ID0gbG93X3JlbmRlcl9lbmVyZ3lf
W2JhbmRdOwotICAgIG51bV9wb2ludHNfW2JhbmRdID0gMDsKLSAgICBZMl9hY3VtX1tiYW5kXSA9
IDAuZjsKLSAgICBFMl9hY3VtX1tiYW5kXSA9IDAuZjsKLSAgICBsb3dfcmVuZGVyX2VuZXJneV9b
YmFuZF0gPSBmYWxzZTsKICAgfQotCi0gIHJldHVybiBlcmxlX2luc3RhbnRhbmVvdXM7Ci19Ci0K
LXZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6OkVybGVJbnN0YW50YW5lb3VzOjpSZXNldCgpIHsK
LSAgWTJfYWN1bV8uZmlsbCgwLmYpOwotICBFMl9hY3VtXy5maWxsKDAuZik7Ci0gIGxvd19yZW5k
ZXJfZW5lcmd5Xy5maWxsKGZhbHNlKTsKLSAgbnVtX3BvaW50c18uZmlsbCgwKTsKIH0KIAogfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3ViYmFuZF9l
cmxlX2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3ViYmFuZF9lcmxlX2VzdGltYXRvci5o
CmluZGV4IGFhNWU1Y2NiMjQ4NjM2MjU1MzIxOGE5YzU5OTBmMzdjMDNkY2Q2YjguLmI5ODYyZGJj
NmRlZjFmMzE0YTg3ZWQ0NGVmZmUyNjMzYWQ0N2JhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1YmJhbmRfZXJsZV9lc3RpbWF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJiYW5k
X2VybGVfZXN0aW1hdG9yLmgKQEAgLTExLDExICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfQUVDM19TVUJCQU5EX0VSTEVfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1NVQkJBTkRfRVJMRV9FU1RJTUFUT1JfSF8KIAor
I2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAj
aW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5j
ZWxsZXIzX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dp
bmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAKQEAgLTI0LDcgKzI2LDcgQEAgbmFtZXNwYWNlIHdlYnJ0
YyB7CiAvLyBFc3RpbWF0ZXMgdGhlIGVjaG8gcmV0dXJuIGxvc3MgZW5oYW5jZW1lbnQgZm9yIGVh
Y2ggZnJlcXVlbmN5IHN1YmJhbmQuCiBjbGFzcyBTdWJiYW5kRXJsZUVzdGltYXRvciB7CiAgcHVi
bGljOgotICBTdWJiYW5kRXJsZUVzdGltYXRvcihmbG9hdCBtaW5fZXJsZSwgZmxvYXQgbWF4X2Vy
bGVfbGYsIGZsb2F0IG1heF9lcmxlX2hmKTsKKyAgZXhwbGljaXQgU3ViYmFuZEVybGVFc3RpbWF0
b3IoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZyk7CiAgIH5TdWJiYW5kRXJsZUVz
dGltYXRvcigpOwogCiAgIC8vIFJlc2V0cyB0aGUgRVJMRSBlc3RpbWF0b3IuCkBAIC00MSw1NSAr
NDMsMzUgQEAgY2xhc3MgU3ViYmFuZEVybGVFc3RpbWF0b3IgewogICBjb25zdCBzdGQ6OmFycmF5
PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBFcmxlKCkgY29uc3QgeyByZXR1cm4gZXJsZV87
IH0KIAogICAvLyBSZXR1cm5zIHRoZSBFUkxFIGVzdGltYXRlIGF0IG9uc2V0cy4KLSAgY29uc3Qg
c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgRXJsZU9uc2V0cygpIGNvbnN0
IHsKLSAgICByZXR1cm4gZXJsZV9vbnNldHNfOwotICB9CisgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IGZsb2F0PiBFcmxlT25zZXRzKCkgY29uc3QgeyByZXR1cm4gZXJsZV9vbnNldHNfOyB9CiAKICAg
dm9pZCBEdW1wKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxBcG1EYXRhRHVtcGVyPiYgZGF0YV9kdW1w
ZXIpIGNvbnN0OwogCiAgcHJpdmF0ZToKLSAgdm9pZCBVcGRhdGVCYW5kcyhydGM6OkFycmF5Vmll
dzxjb25zdCBmbG9hdD4gWDIsCi0gICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29u
c3QgZmxvYXQ+IFkyLAotICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZs
b2F0PiBFMiwKLSAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHN0b3AsCi0gICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4X2VybGUsCi0g
ICAgICAgICAgICAgICAgICAgYm9vbCBvbnNldF9kZXRlY3Rpb24pOwotICB2b2lkIERlY3JlYXNl
RXJsZVBlckJhbmRGb3JMb3dSZW5kZXJTaWduYWxzKCk7Ci0KLSAgY2xhc3MgRXJsZUluc3RhbnRh
bmVvdXMgewotICAgcHVibGljOgotICAgIEVybGVJbnN0YW50YW5lb3VzKCk7Ci0gICAgfkVybGVJ
bnN0YW50YW5lb3VzKCk7Ci0gICAgLy8gVXBkYXRlcyB0aGUgRVJMRSBmb3IgYSBiYW5kIHdpdGgg
YSBuZXcgYmxvY2suIFJldHVybnMgYWJzbDo6bnVsbG9wdAotICAgIC8vIGlmIG5vdCBlbm91Z2gg
cG9pbnRzIHdlcmUgYWNjdW11bGF0ZWQgZm9yIGRvaW5nIHRoZSBlc3RpbWF0aW9uLAotICAgIC8v
IG90aGVyd2lzZSwgaXQgcmV0dXJucyB0aGUgRVJMRS4gV2hlbiB0aGUgRVJMRSBpcyByZXR1cm5l
ZCwgdGhlCi0gICAgLy8gbG93X3JlbmRlcl9lbmVyZ3kgZmxhZyBjb250YWlucyBpbmZvcm1hdGlv
biBvbiB3aGV0aGVyIHRoZSBlc3RpbWF0aW9uIHdhcwotICAgIC8vIGRvbmUgdXNpbmcgbG93IGxl
dmVsIHJlbmRlciBzaWduYWxzLgotICAgIGFic2w6Om9wdGlvbmFsPGZsb2F0PiBVcGRhdGUoZmxv
YXQgWDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBZMiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IEUyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGJhbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sKiBsb3dfcmVuZGVyX2VuZXJneSk7Ci0gICAgLy8gUmVzZXRzIHRoZSBFUkxFIGVz
dGltYXRvciB0byBpdHMgaW5pdGlhbCBzdGF0ZS4KLSAgICB2b2lkIFJlc2V0KCk7Ci0KLSAgIHBy
aXZhdGU6Ci0gICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBZMl9hY3Vt
XzsKLSAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IEUyX2FjdW1fOwor
ICBzdHJ1Y3QgQWNjdW11bGF0ZWRTcGVjdHJhIHsKKyAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0
TGVuZ3RoQnkyUGx1czE+IFkyXzsKKyAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnky
UGx1czE+IEUyXzsKICAgICBzdGQ6OmFycmF5PGJvb2wsIGtGZnRMZW5ndGhCeTJQbHVzMT4gbG93
X3JlbmRlcl9lbmVyZ3lfOwogICAgIHN0ZDo6YXJyYXk8aW50LCBrRmZ0TGVuZ3RoQnkyUGx1czE+
IG51bV9wb2ludHNfOwogICB9OwogCi0gIEVybGVJbnN0YW50YW5lb3VzIGluc3RhbnRhbmVvdXNf
ZXJsZV87CisgIHZvaWQgVXBkYXRlQWNjdW11bGF0ZWRTcGVjdHJhKHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IGZsb2F0PiBYMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJh
eVZpZXc8Y29uc3QgZmxvYXQ+IFkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gRTIpOworCisgIHZvaWQgUmVzZXRBY2N1bXVsYXRl
ZFNwZWN0cmEoKTsKKworICB2b2lkIFVwZGF0ZUJhbmRzKGJvb2wgb25zZXRfZGV0ZWN0aW9uKTsK
KyAgdm9pZCBEZWNyZWFzZUVybGVQZXJCYW5kRm9yTG93UmVuZGVyU2lnbmFscygpOworCisgIGNv
bnN0IGZsb2F0IG1pbl9lcmxlXzsKKyAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0
aEJ5MlBsdXMxPiBtYXhfZXJsZV87CisgIGNvbnN0IGJvb2wgYWRhcHRfb25fbG93X3JlbmRlcl87
CisgIEFjY3VtdWxhdGVkU3BlY3RyYSBhY2N1bV9zcGVjdHJhXzsKICAgc3RkOjphcnJheTxmbG9h
dCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBlcmxlXzsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExl
bmd0aEJ5MlBsdXMxPiBlcmxlX29uc2V0c187CiAgIHN0ZDo6YXJyYXk8Ym9vbCwga0ZmdExlbmd0
aEJ5MlBsdXMxPiBjb21pbmdfb25zZXRfOwogICBzdGQ6OmFycmF5PGludCwga0ZmdExlbmd0aEJ5
MlBsdXMxPiBob2xkX2NvdW50ZXJzXzsKLSAgY29uc3QgZmxvYXQgbWluX2VybGVfOwotICBjb25z
dCBmbG9hdCBtYXhfZXJsZV9sZl87Ci0gIGNvbnN0IGZsb2F0IG1heF9lcmxlX2hmXzsKLSAgY29u
c3QgYm9vbCBhZGFwdF9vbl9sb3dfcmVuZGVyXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3IuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9zdWJ0cmFjdG9yLmNjCmluZGV4IDYwOWU4YWM3ZWQxYjkyN2M3MjgwOWI5MTQyMWFmN2My
NjM4NTRiOGQuLjkwMDY5YzdhNzQ5ZmM1YmIxNTIzZjc3OGY0OWQ3OWE1NzhiN2QxMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
c3VidHJhY3Rvci5jYwpAQCAtMTEsMTIgKzExLDEyIEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvci5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgot
I2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFwaS9h
cnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0
X2RhdGEuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1f
ZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5t
YXguaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgog
CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBTdWJ0cmFjdG9yOjpQcm9jZXNzKGNvbnN0IFJlbmRl
ckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgIGFkYXB0YXRpb25fZHVy
aW5nX3NhdHVyYXRpb25fLCAmc2hhZG93X3NhdHVyYXRpb24pOwogCiAgIC8vIENvbXB1dGUgdGhl
IHNpZ25hbCBwb3dlcnMgaW4gdGhlIHN1YnRyYWN0b3Igb3V0cHV0LgotICBvdXRwdXQtPlVwZGF0
ZVBvd2Vycyh5KTsKKyAgb3V0cHV0LT5Db21wdXRlTWV0cmljcyh5KTsKIAogICAvLyBBZGp1c3Qg
dGhlIGZpbHRlciBpZiBuZWVkZWQuCiAgIGJvb2wgbWFpbl9maWx0ZXJfYWRqdXN0ZWQgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3IuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1YnRyYWN0b3IuaAppbmRleCBjOTJhOTcxZjExNzgzNzNiYTBhMzYyYzRjYTRmYjY2N2Jj
OTdkYmJkLi5iZWMwMTRkZWVjOTU3ZDNjY2RlZTQ3MjJjZTFmYmRkNzg2YjIwNDA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3Vi
dHJhY3Rvci5oCkBAIC0xMSwxMSArMTEsMTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FFQzNfU1VCVFJBQ1RPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJ
TkdfQUVDM19TVUJUUkFDVE9SX0hfCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8
bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KLSNpbmNsdWRlICJtYXRoLmgiCiAKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5o
IgorI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWRhcHRpdmVfZmlyX2ZpbHRlci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuaCIKQEAgLTIz
LDEwICsyNSwxMSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Vj
aG9fcGF0aF92YXJpYWJpbGl0eS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL21haW5fZmlsdGVyX3VwZGF0ZV9nYWluLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaGFkb3dfZmlsdGVyX3VwZGF0ZV9nYWluLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRw
dXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0
YV9kdW1wZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9v
b3VyYV9mZnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9z
dWJ0cmFjdG9yX291dHB1dC5jYwppbmRleCBhZmZhNGEzYTA2ZmEyNGRiMWNmM2U1MmIyN2MzNDM4
MjEyYjBlZDc5Li45MjJjYzNkMWIzZjNlNDEzZTVmMjdmMGM0N2Q3NWViMjVjOTdhYWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5jYwpAQCAtMzMsNyArMzMsNyBAQCB2b2lkIFN1YnRy
YWN0b3JPdXRwdXQ6OlJlc2V0KCkgewogICB5MiA9IDAuZjsKIH0KIAotdm9pZCBTdWJ0cmFjdG9y
T3V0cHV0OjpVcGRhdGVQb3dlcnMocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHkpIHsKK3Zv
aWQgU3VidHJhY3Rvck91dHB1dDo6Q29tcHV0ZU1ldHJpY3MocnRjOjpBcnJheVZpZXc8Y29uc3Qg
ZmxvYXQ+IHkpIHsKICAgY29uc3QgYXV0byBzdW1fb2Zfc3F1YXJlcyA9IFtdKGZsb2F0IGEsIGZs
b2F0IGIpIHsgcmV0dXJuIGEgKyBiICogYjsgfTsKICAgeTIgPSBzdGQ6OmFjY3VtdWxhdGUoeS5i
ZWdpbigpLCB5LmVuZCgpLCAwLmYsIHN1bV9vZl9zcXVhcmVzKTsKICAgZTJfbWFpbiA9IHN0ZDo6
YWNjdW11bGF0ZShlX21haW4uYmVnaW4oKSwgZV9tYWluLmVuZCgpLCAwLmYsIHN1bV9vZl9zcXVh
cmVzKTsKQEAgLTQyLDYgKzQyLDE0IEBAIHZvaWQgU3VidHJhY3Rvck91dHB1dDo6VXBkYXRlUG93
ZXJzKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiB5KSB7CiAgIHMyX21haW4gPSBzdGQ6OmFj
Y3VtdWxhdGUoc19tYWluLmJlZ2luKCksIHNfbWFpbi5lbmQoKSwgMC5mLCBzdW1fb2Zfc3F1YXJl
cyk7CiAgIHMyX3NoYWRvdyA9CiAgICAgICBzdGQ6OmFjY3VtdWxhdGUoc19zaGFkb3cuYmVnaW4o
KSwgc19zaGFkb3cuZW5kKCksIDAuZiwgc3VtX29mX3NxdWFyZXMpOworCisgIHNfbWFpbl9tYXhf
YWJzID0gKnN0ZDo6bWF4X2VsZW1lbnQoc19tYWluLmJlZ2luKCksIHNfbWFpbi5lbmQoKSk7Cisg
IHNfbWFpbl9tYXhfYWJzID0gc3RkOjptYXgoc19tYWluX21heF9hYnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLSgqc3RkOjptaW5fZWxlbWVudChzX21haW4uYmVnaW4oKSwgc19tYWlu
LmVuZCgpKSkpOworCisgIHNfc2hhZG93X21heF9hYnMgPSAqc3RkOjptYXhfZWxlbWVudChzX3No
YWRvdy5iZWdpbigpLCBzX3NoYWRvdy5lbmQoKSk7CisgIHNfc2hhZG93X21heF9hYnMgPSBzdGQ6
Om1heCgKKyAgICAgIHNfc2hhZG93X21heF9hYnMsIC0oKnN0ZDo6bWluX2VsZW1lbnQoc19zaGFk
b3cuYmVnaW4oKSwgc19zaGFkb3cuZW5kKCkpKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5oCmluZGV4IDg5NzI3ZTkzOTZmMTIyYmFmMzZi
ZGY4OTVhYmQ0YmU0NzhlZjg4YjMuLjVmNmZkM2VkNzEyMDdlNDE5YjQ3Njg4N2Y3NDczOWI2YWFh
OGZhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXQuaApAQCAtMzYsMTIgKzM2LDE0IEBA
IHN0cnVjdCBTdWJ0cmFjdG9yT3V0cHV0IHsKICAgZmxvYXQgZTJfbWFpbiA9IDAuZjsKICAgZmxv
YXQgZTJfc2hhZG93ID0gMC5mOwogICBmbG9hdCB5MiA9IDAuZjsKKyAgZmxvYXQgc19tYWluX21h
eF9hYnMgPSAwLmY7CisgIGZsb2F0IHNfc2hhZG93X21heF9hYnMgPSAwLmY7CiAKICAgLy8gUmVz
ZXQgdGhlIHN0cnVjdCBjb250ZW50LgogICB2b2lkIFJlc2V0KCk7CiAKICAgLy8gVXBkYXRlcyB0
aGUgcG93ZXJzIG9mIHRoZSBzaWduYWxzLgotICB2b2lkIFVwZGF0ZVBvd2VycyhydGM6OkFycmF5
Vmlldzxjb25zdCBmbG9hdD4geSk7CisgIHZvaWQgQ29tcHV0ZU1ldHJpY3MocnRjOjpBcnJheVZp
ZXc8Y29uc3QgZmxvYXQ+IHkpOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dF9hbmFseXplci5jYwppbmRleCAzY2FjYjQ1NjMw
MTRhMzY1YTlhMWUyNzlmOTZjMDJhYzY0ZjFhMWZiLi45Mzc0YjgwOTlmNDdiNmI0M2IxNzU4MmNm
NDNmOGQ1M2NhM2Y4NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291
dHB1dF9hbmFseXplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dF9h
bmFseXplci5jYwpAQCAtMTAsOSArMTAsOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXIuaCIKIAotI2luY2x1ZGUg
PGFycmF5PgotI2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0X2Fu
YWx5emVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dF9hbmFseXplci5oCmlu
ZGV4IGI1OWE2OGU1ZTYwYjE5NDUxZWFhNTAyMzgxY2FlMmQ1YzIzZjE4NGEuLjBlMjNhZDVkZmFm
MzliMGJiNDBkMmI1YTc1ZGRkZGFiMDczMDhhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3N1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJh
Y3Rvcl9vdXRwdXRfYW5hbHl6ZXIuaApAQCAtMTEsNyArMTEsNiBAQAogI2lmbmRlZiBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUVDM19TVUJUUkFDVE9SX09VVFBVVF9BTkFMWVpFUl9IXwogI2Rl
ZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TVUJUUkFDVE9SX09VVFBVVF9BTkFM
WVpFUl9IXwogCi0jaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3JfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX3VuaXR0ZXN0LmNjCmluZGV4IGJhNzQ0YTZh
ODM5NjUzN2UyMTllODYxOTAyMDJhMmRjMTQwZmViNzguLjhkMTRjYzFhMDcyNTI3ODg3Nzc0YmRk
NTc3MjhlMzU1YTMwNjgwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl91bml0dGVzdC5jYwpA
QCAtNDQsNyArNDQsNyBAQCBmbG9hdCBSdW5TdWJ0cmFjdG9yVGVzdChpbnQgbnVtX2Jsb2Nrc190
b19wcm9jZXNzLAogICBjb25maWcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3MgPSAw
OwogICBjb25maWcuZGVsYXkuZGVmYXVsdF9kZWxheSA9IDE7CiAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5
QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3Jl
YXRlMihjb25maWcsIDMpKTsKICAgUmVuZGVyU2lnbmFsQW5hbHl6ZXIgcmVuZGVyX3NpZ25hbF9h
bmFseXplcihjb25maWcpOwogICBSYW5kb20gcmFuZG9tX2dlbmVyYXRvcig0MlUpOwogICBBZWMz
RmZ0IGZmdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBURVNUKFN1YnRyYWN0b3IsIERJU0FCTEVEX051
bGxPdXRwdXQpIHsKICAgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnOwogICBTdWJ0cmFjdG9y
IHN1YnRyYWN0b3IoY29uZmlnLCAmZGF0YV9kdW1wZXIsIERldGVjdE9wdGltaXphdGlvbigpKTsK
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVy
KAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJl
bmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogICBSZW5kZXJTaWduYWxBbmFs
eXplciByZW5kZXJfc2lnbmFsX2FuYWx5emVyKGNvbmZpZyk7CiAgIHN0ZDo6dmVjdG9yPGZsb2F0
PiB5KGtCbG9ja1NpemUsIDAuZik7CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBURVNUKFN1YnRyYWN0
b3IsIFdyb25nQ2FwdHVyZVNpemUpIHsKICAgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnOwog
ICBTdWJ0cmFjdG9yIHN1YnRyYWN0b3IoY29uZmlnLCAmZGF0YV9kdW1wZXIsIERldGVjdE9wdGlt
aXphdGlvbigpKTsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJf
ZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMp
KTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogICBSZW5k
ZXJTaWduYWxBbmFseXplciByZW5kZXJfc2lnbmFsX2FuYWx5emVyKGNvbmZpZyk7CiAgIHN0ZDo6
dmVjdG9yPGZsb2F0PiB5KGtCbG9ja1NpemUgLSAxLCAwLmYpOwogICBTdWJ0cmFjdG9yT3V0cHV0
IG91dHB1dDsKQEAgLTIxMCwyMSArMjEwLDQgQEAgVEVTVChTdWJ0cmFjdG9yLCBOb25Db252ZXJn
ZW5jZU9uVW5jb3JyZWxhdGVkU2lnbmFscykgewogICB9CiB9CiAKLS8vIFZlcmlmaWVzIHRoYXQg
dGhlIHN1YnRyYWN0b3IgaXMgcHJvcGVybHkgcmVzZXQgd2hlbiB0aGVyZSBpcyBhbiBlY2hvIHBh
dGgKLS8vIGNoYW5nZS4KLVRFU1QoU3VidHJhY3RvciwgRWNob1BhdGhDaGFuZ2VSZXNldCkgewot
ICBzdGQ6OnZlY3RvcjxpbnQ+IGJsb2Nrc193aXRoX2VjaG9fcGF0aF9jaGFuZ2VzOwotICBibG9j
a3Nfd2l0aF9lY2hvX3BhdGhfY2hhbmdlcy5wdXNoX2JhY2soOTkpOwotICBmb3IgKHNpemVfdCBm
aWx0ZXJfbGVuZ3RoX2Jsb2NrcyA6IHsxMiwgMjAsIDMwfSkgewotICAgIGZvciAoc2l6ZV90IGRl
bGF5X3NhbXBsZXMgOiB7MCwgNjQsIDE1MCwgMjAwLCAzMDF9KSB7Ci0gICAgICBTQ09QRURfVFJB
Q0UoUHJvZHVjZURlYnVnVGV4dChkZWxheV9zYW1wbGVzLCBmaWx0ZXJfbGVuZ3RoX2Jsb2Nrcykp
OwotCi0gICAgICBmbG9hdCBlY2hvX3RvX25lYXJlbmRfcG93ZXIgPSBSdW5TdWJ0cmFjdG9yVGVz
dCgKLSAgICAgICAgICAxMDAsIGRlbGF5X3NhbXBsZXMsIGZpbHRlcl9sZW5ndGhfYmxvY2tzLCBm
aWx0ZXJfbGVuZ3RoX2Jsb2NrcywgZmFsc2UsCi0gICAgICAgICAgYmxvY2tzX3dpdGhfZWNob19w
YXRoX2NoYW5nZXMpOwotICAgICAgRVhQRUNUX05FQVIoMS5mLCBlY2hvX3RvX25lYXJlbmRfcG93
ZXIsIDAuMDAwMDAwMWYpOwotICAgIH0KLSAgfQotfQotCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0ZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0ZXIuY2MKaW5kZXggODdlMzAwOGRjNzZhYWQ4YjI2
YzcwOWE0NDY1MWZmM2Q2NzAzNzkyYy4uNmZlMjk2YzIxOWM2MzI0MDhkNDc5N2NiNDJhOTk2N2Jm
NTA0YmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZmlsdGVyLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRlci5jYwpAQCAtMTAsMTMgKzEw
LDE0IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVz
c2lvbl9maWx0ZXIuaCIKIAotI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+
CisjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxmdW5jdGlv
bmFsPgotI2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8aXRlcmF0b3I+CiAKLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnQuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3JfbWF0aC5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlu
bWF4LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNTksOCArNjAsMTAgQEAgY29uc3QgZmxv
YXQga1NxcnRIYW5uaW5nW2tGZnRMZW5ndGhdID0gewogCiB9ICAvLyBuYW1lc3BhY2UKIAotU3Vw
cHJlc3Npb25GaWx0ZXI6OlN1cHByZXNzaW9uRmlsdGVyKGludCBzYW1wbGVfcmF0ZV9oeikKLSAg
ICA6IHNhbXBsZV9yYXRlX2h6XyhzYW1wbGVfcmF0ZV9oeiksCitTdXBwcmVzc2lvbkZpbHRlcjo6
U3VwcHJlc3Npb25GaWx0ZXIoQWVjM09wdGltaXphdGlvbiBvcHRpbWl6YXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6KQorICAgIDog
b3B0aW1pemF0aW9uXyhvcHRpbWl6YXRpb24pLAorICAgICAgc2FtcGxlX3JhdGVfaHpfKHNhbXBs
ZV9yYXRlX2h6KSwKICAgICAgIGZmdF8oKSwKICAgICAgIGVfb3V0cHV0X29sZF8oTnVtQmFuZHNG
b3JSYXRlKHNhbXBsZV9yYXRlX2h6XykpIHsKICAgUlRDX0RDSEVDSyhWYWxpZEZ1bGxCYW5kUmF0
ZShzYW1wbGVfcmF0ZV9oel8pKTsKQEAgLTkwLDE4ICs5MywxNyBAQCB2b2lkIFN1cHByZXNzaW9u
RmlsdGVyOjpBcHBseUdhaW4oCiAgIHN0ZDo6dHJhbnNmb3JtKHN1cHByZXNzaW9uX2dhaW4uYmVn
aW4oKSwgc3VwcHJlc3Npb25fZ2Fpbi5lbmQoKSwgRS5pbS5iZWdpbigpLAogICAgICAgICAgICAg
ICAgICBFLmltLmJlZ2luKCksIHN0ZDo6bXVsdGlwbGllczxmbG9hdD4oKSk7CiAKLSAgLy8gQ29t
cHV0ZSBhbmQgYWRkIHRoZSBjb21mb3J0IG5vaXNlLgotICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0
TGVuZ3RoQnkyUGx1czE+IHNjYWxlZF9jb21mb3J0X25vaXNlOworICAvLyBDb21mb3J0IG5vaXNl
IGdhaW4gaXMgc3FydCgxLWdeMiksIHdoZXJlIGcgaXMgdGhlIHN1cHByZXNzaW9uIGdhaW4uCisg
IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gbm9pc2VfZ2FpbjsKICAgc3Rk
Ojp0cmFuc2Zvcm0oc3VwcHJlc3Npb25fZ2Fpbi5iZWdpbigpLCBzdXBwcmVzc2lvbl9nYWluLmVu
ZCgpLAotICAgICAgICAgICAgICAgICBjb21mb3J0X25vaXNlLnJlLmJlZ2luKCksIHNjYWxlZF9j
b21mb3J0X25vaXNlLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgIFtdKGZsb2F0IGEsIGZsb2F0
IGIpIHsgcmV0dXJuIHN0ZDo6bWF4KDEuZiAtIGEsIDAuZikgKiBiOyB9KTsKLSAgc3RkOjp0cmFu
c2Zvcm0oc2NhbGVkX2NvbWZvcnRfbm9pc2UuYmVnaW4oKSwgc2NhbGVkX2NvbWZvcnRfbm9pc2Uu
ZW5kKCksCi0gICAgICAgICAgICAgICAgIEUucmUuYmVnaW4oKSwgRS5yZS5iZWdpbigpLCBzdGQ6
OnBsdXM8ZmxvYXQ+KCkpOwotICBzdGQ6OnRyYW5zZm9ybShzdXBwcmVzc2lvbl9nYWluLmJlZ2lu
KCksIHN1cHByZXNzaW9uX2dhaW4uZW5kKCksCi0gICAgICAgICAgICAgICAgIGNvbWZvcnRfbm9p
c2UuaW0uYmVnaW4oKSwgc2NhbGVkX2NvbWZvcnRfbm9pc2UuYmVnaW4oKSwKLSAgICAgICAgICAg
ICAgICAgW10oZmxvYXQgYSwgZmxvYXQgYikgeyByZXR1cm4gc3RkOjptYXgoMS5mIC0gYSwgMC5m
KSAqIGI7IH0pOwotICBzdGQ6OnRyYW5zZm9ybShzY2FsZWRfY29tZm9ydF9ub2lzZS5iZWdpbigp
LCBzY2FsZWRfY29tZm9ydF9ub2lzZS5lbmQoKSwKLSAgICAgICAgICAgICAgICAgRS5pbS5iZWdp
bigpLCBFLmltLmJlZ2luKCksIHN0ZDo6cGx1czxmbG9hdD4oKSk7CisgICAgICAgICAgICAgICAg
IG5vaXNlX2dhaW4uYmVnaW4oKSwgW10oZmxvYXQgZykgeyByZXR1cm4gMS5mIC0gZyAqIGc7IH0p
OworICBhZWMzOjpWZWN0b3JNYXRoKG9wdGltaXphdGlvbl8pLlNxcnQobm9pc2VfZ2Fpbik7CisK
KyAgLy8gU2NhbGUgYW5kIGFkZCB0aGUgY29tZm9ydCBub2lzZS4KKyAgZm9yIChzaXplX3QgayA9
IDA7IGsgPCBrRmZ0TGVuZ3RoQnkyUGx1czE7IGsrKykgeworICAgIEUucmVba10gKz0gbm9pc2Vf
Z2FpbltrXSAqIGNvbWZvcnRfbm9pc2UucmVba107CisgICAgRS5pbVtrXSArPSBub2lzZV9nYWlu
W2tdICogY29tZm9ydF9ub2lzZS5pbVtrXTsKKyAgfQogCiAgIC8vIFN5bnRoZXNpcyBmaWx0ZXJi
YW5rLgogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoPiBlX2V4dGVuZGVkOwpAQCAtMTM1
LDcgKzEzNyw3IEBAIHZvaWQgU3VwcHJlc3Npb25GaWx0ZXI6OkFwcGx5R2FpbigKIAogICAgIC8v
IFNjYWxlIGFuZCBhcHBseSB0aGUgbm9pc2UgdG8gdGhlIHNpZ25hbHMuCiAgICAgY29uc3QgZmxv
YXQgaGlnaF9iYW5kc19ub2lzZV9zY2FsaW5nID0KLSAgICAgICAgMC40ZiAqIHN0ZDo6bWF4KDEu
ZiAtIGhpZ2hfYmFuZHNfZ2FpbiwgMC5mKTsKKyAgICAgICAgMC40ZiAqIHN0ZDo6c3FydCgxLmYg
LSBoaWdoX2JhbmRzX2dhaW4gKiBoaWdoX2JhbmRzX2dhaW4pOwogCiAgICAgc3RkOjp0cmFuc2Zv
cm0oCiAgICAgICAgICgqZSlbMV0uYmVnaW4oKSwgKCplKVsxXS5lbmQoKSwgdGltZV9kb21haW5f
aGlnaF9iYW5kX25vaXNlLmJlZ2luKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBw
cmVzc2lvbl9maWx0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRlci5oCmlu
ZGV4IDIzNzQwOGQ3ZjlkYzNlNTk4ZWUzOGVkY2Q4OTQyODJlZDdkNGIyMDYuLmVkZDEyOTAwMTRk
MmE0YWI2MjM3M2EyYTc5NTVhOTA4MzgzZjNkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3N1cHByZXNzaW9uX2ZpbHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2Zp
bHRlci5oCkBAIC0xNiwxMyArMTYsMTUgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvYWVjM19mZnQuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9mZnRfZGF0YS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91
dGlsaXR5L29vdXJhX2ZmdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNsYXNzIFN1cHByZXNzaW9uRmlsdGVyIHsKICBw
dWJsaWM6Ci0gIGV4cGxpY2l0IFN1cHByZXNzaW9uRmlsdGVyKGludCBzYW1wbGVfcmF0ZV9oeik7
CisgIFN1cHByZXNzaW9uRmlsdGVyKEFlYzNPcHRpbWl6YXRpb24gb3B0aW1pemF0aW9uLCBpbnQg
c2FtcGxlX3JhdGVfaHopOwogICB+U3VwcHJlc3Npb25GaWx0ZXIoKTsKICAgdm9pZCBBcHBseUdh
aW4oY29uc3QgRmZ0RGF0YSYgY29tZm9ydF9ub2lzZSwKICAgICAgICAgICAgICAgICAgY29uc3Qg
RmZ0RGF0YSYgY29tZm9ydF9ub2lzZV9oaWdoX2JhbmRzLApAQCAtMzIsNiArMzQsNyBAQCBjbGFz
cyBTdXBwcmVzc2lvbkZpbHRlciB7CiAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
dmVjdG9yPGZsb2F0Pj4qIGUpOwogCiAgcHJpdmF0ZToKKyAgY29uc3QgQWVjM09wdGltaXphdGlv
biBvcHRpbWl6YXRpb25fOwogICBjb25zdCBpbnQgc2FtcGxlX3JhdGVfaHpfOwogICBjb25zdCBP
b3VyYUZmdCBvb3VyYV9mZnRfOwogICBjb25zdCBBZWMzRmZ0IGZmdF87CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9zdXBwcmVzc2lvbl9maWx0ZXJfdW5pdHRlc3QuY2MKaW5kZXggZWFhNjA4ZWVkNWQ3ZmFh
MDViMzQ2YjNiZDdlYzlhZmM1NGExM2U0YS4uOWU0ZmY3YzI4YjRjODIzMTAzMDRiMjMyMWYwMTcy
YjY3NWU4ZGZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZmlsdGVy
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRlcl91bml0
dGVzdC5jYwpAQCAtNDUsMjEgKzQ1LDIxIEBAIFRFU1QoU3VwcHJlc3Npb25GaWx0ZXIsIE51bGxP
dXRwdXQpIHsKICAgRmZ0RGF0YSBFOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnky
UGx1czE+IGdhaW47CiAKLSAgRVhQRUNUX0RFQVRIKFN1cHByZXNzaW9uRmlsdGVyKDE2MDAwKS5B
cHBseUdhaW4oY24sIGNuX2hpZ2hfYmFuZHMsIGdhaW4sIDEuMGYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUsIG51bGxwdHIpLAorICBFWFBFQ1Rf
REVBVEgoU3VwcHJlc3Npb25GaWx0ZXIoQWVjM09wdGltaXphdGlvbjo6a05vbmUsIDE2MDAwKQor
ICAgICAgICAgICAgICAgICAgIC5BcHBseUdhaW4oY24sIGNuX2hpZ2hfYmFuZHMsIGdhaW4sIDEu
MGYsIEUsIG51bGxwdHIpLAogICAgICAgICAgICAgICAgIiIpOwogfQogCiAvLyBWZXJpZmllcyB0
aGUgY2hlY2sgZm9yIGFsbG93ZWQgc2FtcGxlIHJhdGUuCiBURVNUKFN1cHByZXNzaW9uRmlsdGVy
LCBQcm9wZXJTYW1wbGVSYXRlKSB7Ci0gIEVYUEVDVF9ERUFUSChTdXBwcmVzc2lvbkZpbHRlcigx
NjAwMSksICIiKTsKKyAgRVhQRUNUX0RFQVRIKFN1cHByZXNzaW9uRmlsdGVyKEFlYzNPcHRpbWl6
YXRpb246OmtOb25lLCAxNjAwMSksICIiKTsKIH0KIAogI2VuZGlmCiAKIC8vIFZlcmlmaWVzIHRo
YXQgbm8gY29tZm9ydCBub2lzZSBpcyBhZGRlZCB3aGVuIHRoZSBnYWluIGlzIDEuCiBURVNUKFN1
cHByZXNzaW9uRmlsdGVyLCBDb21mb3J0Tm9pc2VJblVuaXR5R2FpbikgewotICBTdXBwcmVzc2lv
bkZpbHRlciBmaWx0ZXIoNDgwMDApOworICBTdXBwcmVzc2lvbkZpbHRlciBmaWx0ZXIoQWVjM09w
dGltaXphdGlvbjo6a05vbmUsIDQ4MDAwKTsKICAgRmZ0RGF0YSBjbjsKICAgRmZ0RGF0YSBjbl9o
aWdoX2JhbmRzOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IGdhaW47
CkBAIC04OSw3ICs4OSw3IEBAIFRFU1QoU3VwcHJlc3Npb25GaWx0ZXIsIENvbWZvcnROb2lzZUlu
VW5pdHlHYWluKSB7CiAKIC8vIFZlcmlmaWVzIHRoYXQgdGhlIHN1cHByZXNzb3IgaXMgYWJsZSB0
byBzdXBwcmVzcyBhIHNpZ25hbC4KIFRFU1QoU3VwcHJlc3Npb25GaWx0ZXIsIFNpZ25hbFN1cHBy
ZXNzaW9uKSB7Ci0gIFN1cHByZXNzaW9uRmlsdGVyIGZpbHRlcig0ODAwMCk7CisgIFN1cHByZXNz
aW9uRmlsdGVyIGZpbHRlcihBZWMzT3B0aW1pemF0aW9uOjprTm9uZSwgNDgwMDApOwogICBGZnRE
YXRhIGNuOwogICBGZnREYXRhIGNuX2hpZ2hfYmFuZHM7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtG
ZnRMZW5ndGhCeTI+IGVfb2xkXzsKQEAgLTEzMSw3ICsxMzEsNyBAQCBURVNUKFN1cHByZXNzaW9u
RmlsdGVyLCBTaWduYWxTdXBwcmVzc2lvbikgewogLy8gVmVyaWZpZXMgdGhhdCB0aGUgc3VwcHJl
c3NvciBpcyBhYmxlIHRvIHBhc3MgdGhyb3VnaCBhIGRlc2lyZWQgc2lnbmFsIHdoaWxlCiAvLyBh
cHBseWluZyBzdXBwcmVzc2luZyBmb3Igc29tZSBmcmVxdWVuY2llcy4KIFRFU1QoU3VwcHJlc3Np
b25GaWx0ZXIsIFNpZ25hbFRyYW5zcGFyZW5jeSkgewotICBTdXBwcmVzc2lvbkZpbHRlciBmaWx0
ZXIoNDgwMDApOworICBTdXBwcmVzc2lvbkZpbHRlciBmaWx0ZXIoQWVjM09wdGltaXphdGlvbjo6
a05vbmUsIDQ4MDAwKTsKICAgRmZ0RGF0YSBjbjsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExl
bmd0aEJ5Mj4gZV9vbGRfOwogICBBZWMzRmZ0IGZmdDsKQEAgLTE3MSw3ICsxNzEsNyBAQCBURVNU
KFN1cHByZXNzaW9uRmlsdGVyLCBTaWduYWxUcmFuc3BhcmVuY3kpIHsKIAogLy8gVmVyaWZpZXMg
dGhhdCB0aGUgc3VwcHJlc3NvciBkZWxheS4KIFRFU1QoU3VwcHJlc3Npb25GaWx0ZXIsIERlbGF5
KSB7Ci0gIFN1cHByZXNzaW9uRmlsdGVyIGZpbHRlcig0ODAwMCk7CisgIFN1cHByZXNzaW9uRmls
dGVyIGZpbHRlcihBZWMzT3B0aW1pemF0aW9uOjprTm9uZSwgNDgwMDApOwogICBGZnREYXRhIGNu
OwogICBGZnREYXRhIGNuX2hpZ2hfYmFuZHM7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5n
dGhCeTI+IGVfb2xkXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dh
aW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluLmNjCmluZGV4IDYxMzI1NjY3
MzA2OWE1NmFkOTc2ZGQ5YWJkM2E1NWQwZTRmOTg1NTUuLjg4Y2ZjMGEwMWU0ZTBkMTgzODVjNTli
ZmM2MTgwYzdjZTk3NzM2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9u
X2dhaW4uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbi5jYwpAQCAtMTEs
OCArMTEsOCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHBy
ZXNzaW9uX2dhaW4uaCIKIAogI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4K
ICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxu
dW1lcmljPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbW92aW5n
X2F2ZXJhZ2UuaCIKQEAgLTIwLDE1ICsyMCwxMCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2F0b21pY29wcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogbmFtZXNwYWNlIHsKIAotYm9vbCBFbmFibGVOZXdTdXBwcmVzc2lvbigpIHsKLSAgcmV0dXJu
ICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM05ld1N1cHByZXNzaW9uS2lsbFN3
aXRjaCIpOwotfQotCiAvLyBBZGp1c3QgdGhlIGdhaW5zIGFjY29yZGluZyB0byB0aGUgcHJlc2Vu
Y2Ugb2Yga25vd24gZXh0ZXJuYWwgZmlsdGVycy4KIHZvaWQgQWRqdXN0Rm9yRXh0ZXJuYWxGaWx0
ZXJzKHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4qIGdhaW4pIHsKICAgLy8g
TGltaXQgdGhlIGxvdyBmcmVxdWVuY3kgZ2FpbnMgdG8gYXZvaWQgdGhlIGltcGFjdCBvZiB0aGUg
aGlnaC1wYXNzIGZpbHRlcgpAQCAtODMsNTcgKzc4LDYgQEAgdm9pZCBXZWlnaHRFY2hvRm9yQXVk
aWJpbGl0eShjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAogICB3ZWlnaCh0aHJl
c2hvbGQsIG5vcm1hbGl6ZXIsIDcsIGtGZnRMZW5ndGhCeTJQbHVzMSwgZWNobywgd2VpZ2h0ZWRf
ZWNobyk7CiB9CiAKLS8vIENvbXB1dGVzIHRoZSBnYWluIHRvIHJlZHVjZSB0aGUgZWNobyB0byBh
IG5vbiBhdWRpYmxlIGxldmVsLgotdm9pZCBHYWluVG9Ob0F1ZGlibGVFY2hvRmFsbGJhY2soCi0g
ICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKLSAgICBib29sIGxvd19ub2lz
ZV9yZW5kZXIsCi0gICAgYm9vbCBzYXR1cmF0ZWRfZWNobywKLSAgICBib29sIGxpbmVhcl9lY2hv
X2VzdGltYXRlLAotICAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVz
MT4mIG5lYXJlbmQsCi0gICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBs
dXMxPiYgd2VpZ2h0ZWRfZWNobywKLSAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVu
Z3RoQnkyUGx1czE+JiBtYXNrZXIsCi0gICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExl
bmd0aEJ5MlBsdXMxPiYgbWluX2dhaW4sCi0gICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0Zm
dExlbmd0aEJ5MlBsdXMxPiYgbWF4X2dhaW4sCi0gICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwg
a0ZmdExlbmd0aEJ5MlBsdXMxPiYgb25lX2J5X3dlaWdodGVkX2VjaG8sCi0gICAgc3RkOjphcnJh
eTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogZ2FpbikgewotICBmbG9hdCBuZWFyZW5kX21h
c2tpbmdfbWFyZ2luID0gMC5mOwotICBpZiAobGluZWFyX2VjaG9fZXN0aW1hdGUpIHsKLSAgICBu
ZWFyZW5kX21hc2tpbmdfbWFyZ2luID0KLSAgICAgICAgbG93X25vaXNlX3JlbmRlcgotICAgICAg
ICAgICAgPyBjb25maWcuZ2Fpbl9tYXNrLm05Ci0gICAgICAgICAgICA6IChzYXR1cmF0ZWRfZWNo
byA/IGNvbmZpZy5nYWluX21hc2subTIgOiBjb25maWcuZ2Fpbl9tYXNrLm0zKTsKLSAgfSBlbHNl
IHsKLSAgICBuZWFyZW5kX21hc2tpbmdfbWFyZ2luID0gY29uZmlnLmdhaW5fbWFzay5tNzsKLSAg
fQotCi0gIFJUQ19EQ0hFQ0tfTEUoMC5mLCBuZWFyZW5kX21hc2tpbmdfbWFyZ2luKTsKLSAgUlRD
X0RDSEVDS19HVCgxLmYsIG5lYXJlbmRfbWFza2luZ19tYXJnaW4pOwotCi0gIGNvbnN0IGZsb2F0
IG1hc2tlcl9tYXJnaW4gPQotICAgICAgbGluZWFyX2VjaG9fZXN0aW1hdGUgPyBjb25maWcuZ2Fp
bl9tYXNrLm0wIDogY29uZmlnLmdhaW5fbWFzay5tODsKLQotICBmb3IgKHNpemVfdCBrID0gMDsg
ayA8IGdhaW4tPnNpemUoKTsgKytrKSB7Ci0gICAgLy8gVE9ETyhkZXZpY2VudGVwZW5hKTogRXhw
ZXJpbWVudCBieSByZW1vdmluZyB0aGUgcmV2ZXJiZXJhdGlvbiBlc3RpbWF0aW9uCi0gICAgLy8g
ZnJvbSB0aGUgbmVhcmVuZCBzaWduYWwgYmVmb3JlIGNvbXB1dGluZyB0aGUgZ2FpbnMuCi0gICAg
Y29uc3QgZmxvYXQgdW5pdHlfZ2Fpbl9tYXNrZXIgPSBzdGQ6Om1heChuZWFyZW5kW2tdLCBtYXNr
ZXJba10pOwotICAgIFJUQ19EQ0hFQ0tfTEUoMC5mLCBuZWFyZW5kX21hc2tpbmdfbWFyZ2luICog
dW5pdHlfZ2Fpbl9tYXNrZXIpOwotICAgIGlmICh3ZWlnaHRlZF9lY2hvW2tdIDw9IG5lYXJlbmRf
bWFza2luZ19tYXJnaW4gKiB1bml0eV9nYWluX21hc2tlciB8fAotICAgICAgICB1bml0eV9nYWlu
X21hc2tlciA8PSAwLmYpIHsKLSAgICAgICgqZ2Fpbilba10gPSAxLmY7Ci0gICAgfSBlbHNlIHsK
LSAgICAgIFJUQ19EQ0hFQ0tfTFQoMC5mLCB1bml0eV9nYWluX21hc2tlcik7Ci0gICAgICAoKmdh
aW4pW2tdID0KLSAgICAgICAgICBzdGQ6Om1heCgwLmYsICgxLmYgLSBjb25maWcuZ2Fpbl9tYXNr
LmdhaW5fY3VydmVfc2xvcGUgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWlnaHRlZF9lY2hvW2tdIC8gdW5pdHlfZ2Fpbl9tYXNrZXIpICoKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25maWcuZ2Fpbl9tYXNrLmdhaW5fY3VydmVfb2Zmc2V0KTsKLSAgICAgICgq
Z2Fpbilba10gPSBzdGQ6Om1heChtYXNrZXJfbWFyZ2luICogbWFza2VyW2tdICogb25lX2J5X3dl
aWdodGVkX2VjaG9ba10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpnYWluKVtrXSk7
Ci0gICAgfQotCi0gICAgKCpnYWluKVtrXSA9IHN0ZDo6bWluKHN0ZDo6bWF4KCgqZ2Fpbilba10s
IG1pbl9nYWluW2tdKSwgbWF4X2dhaW5ba10pOwotICB9Ci19Ci0KIC8vIFRPRE8ocGVhaCk6IE1h
a2UgYWRhcHRpdmUgdG8gdGFrZSB0aGUgYWN0dWFsIGZpbHRlciBlcnJvciBpbnRvIGFjY291bnQu
CiBjb25zdGV4cHIgc2l6ZV90IGtVcHBlckFjY3VyYXRlQmFuZFBsdXMxID0gMjk7CiAKQEAgLTMy
MSwzMCArMjY1LDkgQEAgdm9pZCBTdXBwcmVzc2lvbkdhaW46Okxvd2VyQmFuZEdhaW4oCiAgIHN0
ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gbWF4X2dhaW47CiAgIEdldE1heEdh
aW4obWF4X2dhaW4pOwogCi0gIC8vIEl0ZXJhdGl2ZWx5IGNvbXB1dGUgdGhlIGdhaW4gcmVxdWly
ZWQgdG8gYXR0ZW51YXRlIHRoZSBlY2hvIHRvIGEgbm9uCi0gIC8vIG5vdGljZWFibGUgbGV2ZWwu
Ci0KLSAgaWYgKGVuYWJsZV9uZXdfc3VwcHJlc3Npb25fKSB7CiAgICAgR2FpblRvTm9BdWRpYmxl
RWNobyhuZWFyZW5kLCB3ZWlnaHRlZF9yZXNpZHVhbF9lY2hvLCBjb21mb3J0X25vaXNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgbWluX2dhaW4sIG1heF9nYWluLCBnYWluKTsKICAgICBBZGp1
c3RGb3JFeHRlcm5hbEZpbHRlcnMoZ2Fpbik7Ci0gIH0gZWxzZSB7Ci0gICAgY29uc3QgYm9vbCBs
aW5lYXJfZWNob19lc3RpbWF0ZSA9IGFlY19zdGF0ZS5Vc2FibGVMaW5lYXJFc3RpbWF0ZSgpOwot
ICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gbWFza2VyOwotICAgIHN0
ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gb25lX2J5X3dlaWdodGVkX2VjaG87
Ci0gICAgc3RkOjp0cmFuc2Zvcm0od2VpZ2h0ZWRfcmVzaWR1YWxfZWNoby5iZWdpbigpLCB3ZWln
aHRlZF9yZXNpZHVhbF9lY2hvLmVuZCgpLAotICAgICAgICAgICAgICAgICAgIG9uZV9ieV93ZWln
aHRlZF9lY2hvLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgW10oZmxvYXQgZSkgeyByZXR1
cm4gZSA+IDAuZiA/IDEuZiAvIGUgOiAxLmY7IH0pOwotICAgIGdhaW4tPmZpbGwoMC5mKTsKLSAg
ICBmb3IgKGludCBrID0gMDsgayA8IDI7ICsraykgewotICAgICAgc3RkOjpjb3B5KGNvbWZvcnRf
bm9pc2UuYmVnaW4oKSwgY29tZm9ydF9ub2lzZS5lbmQoKSwgbWFza2VyLmJlZ2luKCkpOwotICAg
ICAgR2FpblRvTm9BdWRpYmxlRWNob0ZhbGxiYWNrKGNvbmZpZ18sIGxvd19ub2lzZV9yZW5kZXIs
IHNhdHVyYXRlZF9lY2hvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVh
cl9lY2hvX2VzdGltYXRlLCBuZWFyZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdlaWdodGVkX3Jlc2lkdWFsX2VjaG8sIG1hc2tlciwgbWluX2dhaW4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dhaW4sIG9uZV9ieV93ZWlnaHRlZF9lY2hvLCBn
YWluKTsKLSAgICAgIEFkanVzdEZvckV4dGVybmFsRmlsdGVycyhnYWluKTsKLSAgICB9Ci0gIH0K
IAogICAvLyBBZGp1c3QgdGhlIGdhaW4gZm9yIGZyZXF1ZW5jaWVzIHdoaWNoIGhhdmUgbm90IHll
dCBjb252ZXJnZWQuCiAgIEFkanVzdE5vbkNvbnZlcmdlZEZyZXF1ZW5jaWVzKGdhaW4pOwpAQCAt
MzcyLDcgKzI5NSw2IEBAIFN1cHByZXNzaW9uR2Fpbjo6U3VwcHJlc3Npb25HYWluKGNvbnN0IEVj
aG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICBjb25maWdfKGNvbmZpZyksCiAgICAg
ICBzdGF0ZV9jaGFuZ2VfZHVyYXRpb25fYmxvY2tzXygKICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQ+KGNvbmZpZ18uZmlsdGVyLmNvbmZpZ19jaGFuZ2VfZHVyYXRpb25fYmxvY2tzKSksCi0gICAg
ICBlbmFibGVfbmV3X3N1cHByZXNzaW9uXyhFbmFibGVOZXdTdXBwcmVzc2lvbigpKSwKICAgICAg
IG1vdmluZ19hdmVyYWdlXyhrRmZ0TGVuZ3RoQnkyUGx1czEsCiAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnLnN1cHByZXNzb3IubmVhcmVuZF9hdmVyYWdlX2Jsb2NrcyksCiAgICAgICBuZWFy
ZW5kX3BhcmFtc18oY29uZmlnXy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nKSwKQEAgLTQxNiw3
ICszMzgsNyBAQCB2b2lkIFN1cHByZXNzaW9uR2Fpbjo6R2V0R2FpbigKIAogICAvLyBVcGRhdGUg
dGhlIHN0YXRlIHNlbGVjdGlvbi4KICAgZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rvcl8uVXBkYXRl
KG5lYXJlbmRfc3BlY3RydW0sIHJlc2lkdWFsX2VjaG9fc3BlY3RydW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb21mb3J0X25vaXNlX3NwZWN0cnVtKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWZvcnRfbm9pc2Vfc3BlY3RydW0sIGluaXRp
YWxfc3RhdGVfKTsKIAogICAvLyBDb21wdXRlIGdhaW4gZm9yIHRoZSBsb3dlciBiYW5kLgogICBi
b29sIGxvd19ub2lzZV9yZW5kZXIgPSBsb3dfcmVuZGVyX2RldGVjdG9yXy5EZXRlY3QocmVuZGVy
KTsKQEAgLTQ3NSwxNCArMzk3LDE3IEBAIGJvb2wgU3VwcHJlc3Npb25HYWluOjpMb3dOb2lzZVJl
bmRlckRldGVjdG9yOjpEZXRlY3QoCiBTdXBwcmVzc2lvbkdhaW46OkRvbWluYW50TmVhcmVuZERl
dGVjdG9yOjpEb21pbmFudE5lYXJlbmREZXRlY3RvcigKICAgICBjb25zdCBFY2hvQ2FuY2VsbGVy
M0NvbmZpZzo6U3VwcHJlc3Nvcjo6RG9taW5hbnROZWFyZW5kRGV0ZWN0aW9uIGNvbmZpZykKICAg
ICA6IGVucl90aHJlc2hvbGRfKGNvbmZpZy5lbnJfdGhyZXNob2xkKSwKKyAgICAgIGVucl9leGl0
X3RocmVzaG9sZF8oY29uZmlnLmVucl9leGl0X3RocmVzaG9sZCksCiAgICAgICBzbnJfdGhyZXNo
b2xkXyhjb25maWcuc25yX3RocmVzaG9sZCksCiAgICAgICBob2xkX2R1cmF0aW9uXyhjb25maWcu
aG9sZF9kdXJhdGlvbiksCi0gICAgICB0cmlnZ2VyX3RocmVzaG9sZF8oY29uZmlnLnRyaWdnZXJf
dGhyZXNob2xkKSB7fQorICAgICAgdHJpZ2dlcl90aHJlc2hvbGRfKGNvbmZpZy50cmlnZ2VyX3Ro
cmVzaG9sZCksCisgICAgICB1c2VfZHVyaW5nX2luaXRpYWxfcGhhc2VfKGNvbmZpZy51c2VfZHVy
aW5nX2luaXRpYWxfcGhhc2UpIHt9CiAKIHZvaWQgU3VwcHJlc3Npb25HYWluOjpEb21pbmFudE5l
YXJlbmREZXRlY3Rvcjo6VXBkYXRlKAogICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBu
ZWFyZW5kX3NwZWN0cnVtLAogICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZXNpZHVh
bF9lY2hvX3NwZWN0cnVtLAotICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjb21mb3J0
X25vaXNlX3NwZWN0cnVtKSB7CisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNvbWZv
cnRfbm9pc2Vfc3BlY3RydW0sCisgICAgYm9vbCBpbml0aWFsX3N0YXRlKSB7CiAgIGF1dG8gbG93
X2ZyZXF1ZW5jeV9lbmVyZ3kgPSBbXShydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gc3BlY3Ry
dW0pIHsKICAgICBSVENfRENIRUNLX0xFKDE2LCBzcGVjdHJ1bS5zaXplKCkpOwogICAgIHJldHVy
biBzdGQ6OmFjY3VtdWxhdGUoc3BlY3RydW0uYmVnaW4oKSArIDEsIHNwZWN0cnVtLmJlZ2luKCkg
KyAxNiwgMC5mKTsKQEAgLTQ5Myw3ICs0MTgsOCBAQCB2b2lkIFN1cHByZXNzaW9uR2Fpbjo6RG9t
aW5hbnROZWFyZW5kRGV0ZWN0b3I6OlVwZGF0ZSgKIAogICAvLyBEZXRlY3Qgc3Ryb25nIGFjdGl2
ZSBuZWFyZW5kIGlmIHRoZSBuZWFyZW5kIGlzIHN1ZmZpY2llbnRseSBzdHJvbmdlciB0aGFuCiAg
IC8vIHRoZSBlY2hvIGFuZCB0aGUgbmVhcmVuZCBub2lzZS4KLSAgaWYgKG5lX3N1bSA+IGVucl90
aHJlc2hvbGRfICogZWNob19zdW0gJiYKKyAgaWYgKCghaW5pdGlhbF9zdGF0ZSB8fCB1c2VfZHVy
aW5nX2luaXRpYWxfcGhhc2VfKSAmJgorICAgICAgbmVfc3VtID4gZW5yX3RocmVzaG9sZF8gKiBl
Y2hvX3N1bSAmJgogICAgICAgbmVfc3VtID4gc25yX3RocmVzaG9sZF8gKiBub2lzZV9zdW0pIHsK
ICAgICBpZiAoKyt0cmlnZ2VyX2NvdW50ZXJfID49IHRyaWdnZXJfdGhyZXNob2xkXykgewogICAg
ICAgLy8gQWZ0ZXIgYSBwZXJpb2Qgb2Ygc3Ryb25nIGFjdGl2ZSBuZWFyZW5kIGFjdGl2aXR5LCBm
bGFnIG5lYXJlbmQgbW9kZS4KQEAgLTUwNSw2ICs0MzEsMTIgQEAgdm9pZCBTdXBwcmVzc2lvbkdh
aW46OkRvbWluYW50TmVhcmVuZERldGVjdG9yOjpVcGRhdGUoCiAgICAgdHJpZ2dlcl9jb3VudGVy
XyA9IHN0ZDo6bWF4KDAsIHRyaWdnZXJfY291bnRlcl8gLSAxKTsKICAgfQogCisgIC8vIEV4aXQg
bmVhcmVuZC1zdGF0ZSBlYXJseSBhdCBzdHJvbmcgZWNoby4KKyAgaWYgKG5lX3N1bSA8IGVucl9l
eGl0X3RocmVzaG9sZF8gKiBlY2hvX3N1bSAmJgorICAgICAgZWNob19zdW0gPiBzbnJfdGhyZXNo
b2xkXyAqIG5vaXNlX3N1bSkgeworICAgIGhvbGRfY291bnRlcl8gPSAwOworICB9CisKICAgLy8g
UmVtYWluIGluIGFueSBuZWFyZW5kIG1vZGUgZm9yIGEgY2VydGFpbiBkdXJhdGlvbi4KICAgaG9s
ZF9jb3VudGVyXyA9IHN0ZDo6bWF4KDAsIGhvbGRfY291bnRlcl8gLSAxKTsKICAgbmVhcmVuZF9z
dGF0ZV8gPSBob2xkX2NvdW50ZXJfID4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1
cHByZXNzaW9uX2dhaW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW4uaAppbmRl
eCA0ZWI4NTgxYTg2MmE2ZGNjYTMyMDJlMGMwNmU2MDYzZDcyMzdmOWZkLi5lNzRjZDk2MzJiMTIz
YWFkYjEwNDJiYTRiNDZiYjg3MWY3ZDJlOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9z
dXBwcmVzc2lvbl9nYWluLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbi5o
CkBAIC0xMiwxMyArMTIsMTggQEAKICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FF
QzNfU1VQUFJFU1NJT05fR0FJTl9IXwogCiAjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hv
X2NhbmNlbGxlcjNfY29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9hZWNfc3RhdGUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9mZnRfZGF0YS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21v
dmluZ19hdmVyYWdlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
cmVuZGVyX3NpZ25hbF9hbmFseXplci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0
cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0xMDIsMTMgKzEwNywxNiBA
QCBjbGFzcyBTdXBwcmVzc2lvbkdhaW4gewogICAgIC8vIFVwZGF0ZXMgdGhlIHN0YXRlIHNlbGVj
dGlvbiBiYXNlZCBvbiBsYXRlc3Qgc3BlY3RyYWwgZXN0aW1hdGVzLgogICAgIHZvaWQgVXBkYXRl
KHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBuZWFyZW5kX3NwZWN0cnVtLAogICAgICAgICAg
ICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZXNpZHVhbF9lY2hvX3NwZWN0cnVt
LAotICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjb21mb3J0X25v
aXNlX3NwZWN0cnVtKTsKKyAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9h
dD4gY29tZm9ydF9ub2lzZV9zcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICBib29sIGluaXRpYWxf
c3RhdGUpOwogCiAgICBwcml2YXRlOgogICAgIGNvbnN0IGZsb2F0IGVucl90aHJlc2hvbGRfOwor
ICAgIGNvbnN0IGZsb2F0IGVucl9leGl0X3RocmVzaG9sZF87CiAgICAgY29uc3QgZmxvYXQgc25y
X3RocmVzaG9sZF87CiAgICAgY29uc3QgaW50IGhvbGRfZHVyYXRpb25fOwogICAgIGNvbnN0IGlu
dCB0cmlnZ2VyX3RocmVzaG9sZF87CisgICAgY29uc3QgYm9vbCB1c2VfZHVyaW5nX2luaXRpYWxf
cGhhc2VfOwogCiAgICAgYm9vbCBuZWFyZW5kX3N0YXRlXyA9IGZhbHNlOwogICAgIGludCB0cmln
Z2VyX2NvdW50ZXJfID0gMDsKQEAgLTEzNyw3ICsxNDUsNiBAQCBjbGFzcyBTdXBwcmVzc2lvbkdh
aW4gewogICBMb3dOb2lzZVJlbmRlckRldGVjdG9yIGxvd19yZW5kZXJfZGV0ZWN0b3JfOwogICBi
b29sIGluaXRpYWxfc3RhdGVfID0gdHJ1ZTsKICAgaW50IGluaXRpYWxfc3RhdGVfY2hhbmdlX2Nv
dW50ZXJfID0gMDsKLSAgY29uc3QgYm9vbCBlbmFibGVfbmV3X3N1cHByZXNzaW9uXzsKICAgYWVj
Mzo6TW92aW5nQXZlcmFnZSBtb3ZpbmdfYXZlcmFnZV87CiAgIGNvbnN0IEdhaW5QYXJhbWV0ZXJz
IG5lYXJlbmRfcGFyYW1zXzsKICAgY29uc3QgR2FpblBhcmFtZXRlcnMgbm9ybWFsX3BhcmFtc187
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXIuY2MKaW5kZXggZTNkN2E2
NjBiZjA4NzkxOTMxNTVkMDA5ZThjODIyZGM3OWFkYjdkMi4uNjYyNWE3NzljMjQ0YTg4OWZhNmFl
ZDNiMzBlZTI3MDkzZmFhNGQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Np
b25fZ2Fpbl9saW1pdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW5f
bGltaXRlci5jYwpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW5fdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluX3VuaXR0ZXN0LmNjCmluZGV4IDFm
Zjk2Y2E2ZTA1NTJkOGNkM2MzNTA4M2VhODBiZDE4Y2Y2MzdlNjYuLjY1MWZkMzY3NGJjMTNjOTZl
ZTNiMjEwZjkzMTY3M2UwMTJmMGMzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHBy
ZXNzaW9uX2dhaW5fdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25f
Z2Fpbl91bml0dGVzdC5jYwpAQCAtNzcsNyArNzcsNyBAQCBURVNUKFN1cHByZXNzaW9uR2Fpbiwg
QmFzaWNHYWluQ29tcHV0YXRpb24pIHsKICAgQXBtRGF0YUR1bXBlciBkYXRhX2R1bXBlcig0Mik7
CiAgIFN1YnRyYWN0b3Igc3VidHJhY3Rvcihjb25maWcsICZkYXRhX2R1bXBlciwgRGV0ZWN0T3B0
aW1pemF0aW9uKCkpOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRl
cl9kZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywg
MykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIGFi
c2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IGRlbGF5X2VzdGltYXRlOwogCiAgIC8vIEVuc3Vy
ZSB0aGF0IGEgc3Ryb25nIG5vaXNlIGlzIGRldGVjdGVkIHRvIG1hc2sgYW55IGVjaG9lcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My92ZWN0b3JfYnVmZmVyLmNjCmluZGV4IGY0OTExNjhkOWExNDFhZTE3ODk3NzBlYTAxNjk2Yzc0
MjMzYjRiZTQuLjA2ODI4ODVjMGM3MTA4ODgxY2M0MjY5MDc0YmI2YWEzMGNiMDM5YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvdmVjdG9yX2J1ZmZlci5jYwpAQCAtMTAsNyArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5oIgogCi0jaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlIDxhbGdv
cml0aG0+CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My92ZWN0b3JfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3JfYnVmZmVyLmgKaW5kZXgg
YzdkNGY2OGIyN2MzODg2ZjM5YmFjNGI5MTk4ZWNhMDZkMGE1MzI4OC4uNGMwMjU3Y2NlYTRjZDBl
ODliNTM2NzM4MWFjYzg3OTczNDgzZTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVj
dG9yX2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuaApAQCAtMTEs
NiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19WRUNUT1Jf
QlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1ZFQ1RPUl9C
VUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1w
L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wL0JVSUxELmduCmluZGV4IGU1ZmVlM2U5NWY3
MTU0YzlhMjA3NmY3YzYzYTE1YWUwZWJiMWNiMDMuLmQ0MjYyY2E0ODU4MzVkYWQ1MTQ5N2EzNWM5
NTEzODZiOWVmMmM3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVtcC9CVUlMRC5nbgor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvQlVJTEQuZ24KQEAgLTE3LDYgKzE3LDcgQEAgcnRjX3Nv
dXJjZV9zZXQoImFlY19kdW1wIikgewogICBkZXBzID0gWwogICAgICIuLi8iLAogICAgICIuLi8u
Li8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNl
L3N5c3RlbTpydGNfZXhwb3J0IiwKICAgXQogfQogCkBAIC00Miw2ICs0Myw3IEBAIHJ0Y19zb3Vy
Y2Vfc2V0KCJtb2NrX2FlY19kdW1wX3VuaXR0ZXN0cyIpIHsKIAogICBkZXBzID0gWwogICAgICI6
bW9ja19hZWNfZHVtcCIsCisgICAgIi4uOmFwaSIsCiAgICAgIi4uLyIsCiAgICAgIi4uLy4uLy4u
L3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVtcC9hZWNfZHVtcF9mYWN0b3J5LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjX2R1bXAvYWVjX2R1bXBfZmFjdG9yeS5oCmluZGV4IGUzZjAwZjY3YTJlMjhlMGJjZWM0
YTE1MDY2MWQxZTUwMjI5YTgwZTQuLjFlNTVkNTk0ZWUzMTM0MGYyOTY1ODMxMzY5MDQwYjE3NmNl
YzcxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVtcC9hZWNfZHVtcF9mYWN0b3J5LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlY19kdW1wL2FlY19kdW1wX2ZhY3RvcnkuaApAQCAtMTYsNiArMTYs
NyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1
bXAuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiBjbGFzcyBUYXNr
UXVldWU7CkBAIC0yMyw3ICsyNCw3IEBAIGNsYXNzIFRhc2tRdWV1ZTsKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKLWNsYXNzIEFlY0R1bXBGYWN0b3J5IHsKK2NsYXNzIFJUQ19FWFBPUlQgQWVjRHVt
cEZhY3RvcnkgewogIHB1YmxpYzoKICAgLy8gVGhlIHx3b3JrZXJfcXVldWV8IG1heSBub3QgYmUg
bnVsbCBhbmQgbXVzdCBvdXRsaXZlIHRoZSBjcmVhdGVkCiAgIC8vIEFlY0R1bXAgaW5zdGFuY2Uu
IHxtYXhfbG9nX3NpemVfYnl0ZXMgPT0gLTF8IG1lYW5zIHRoZSBsb2cgc2l6ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlY19kdW1wL2FlY19kdW1wX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1
bXAvYWVjX2R1bXBfaW1wbC5jYwppbmRleCAyNzMyOTM0MTQwNjg0ODg2OTU5ZWVlYTVhNTY2OTAx
OTU2Mjg4MWE2Li45MDIwZjJiOWRjYTE0ZTYzNWI4MzQxZjFkNjQ2OTJiMTAwYmY4YWU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvYWVjX2R1bXBfaW1wbC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjX2R1bXAvYWVjX2R1bXBfaW1wbC5jYwpAQCAtNjUsNyArNjUsNyBAQCBBZWNEdW1wSW1w
bDo6QWVjRHVtcEltcGwoc3RkOjp1bmlxdWVfcHRyPEZpbGVXcmFwcGVyPiBkZWJ1Z19maWxlLAog
CiBBZWNEdW1wSW1wbDo6fkFlY0R1bXBJbXBsKCkgewogICAvLyBCbG9jayB1bnRpbCBhbGwgdGFz
a3MgaGF2ZSBmaW5pc2hlZCBydW5uaW5nLgotICBydGM6OkV2ZW50IHRocmVhZF9zeW5jX2V2ZW50
KGZhbHNlIC8qIG1hbnVhbF9yZXNldCAqLywgZmFsc2UpOworICBydGM6OkV2ZW50IHRocmVhZF9z
eW5jX2V2ZW50OwogICB3b3JrZXJfcXVldWVfLT5Qb3N0VGFzayhbJnRocmVhZF9zeW5jX2V2ZW50
XSB7IHRocmVhZF9zeW5jX2V2ZW50LlNldCgpOyB9KTsKICAgLy8gV2FpdCB1bnRpbCB0aGUgZXZl
bnQgaGFzIGJlZW4gc2lnbmFsZWQgd2l0aCAuU2V0KCkuIEJ5IHRoZW4gYWxsCiAgIC8vIHBlbmRp
bmcgdGFza3Mgd2lsbCBoYXZlIGZpbmlzaGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY20v
YWVjbV9jb3JlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY20vYWVjbV9jb3JlLmNjCmluZGV4IDBlNTZiNTBj
NWVmMzA2Yjg5YmI2ZTI4YTgzZmNkMDUxZDdkNDAzYTIuLjY3YjcwYmZiMzY2NzBhNDM5OGVjOGQy
MDAxOWM0M2U4MGZlMjE1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNtL2FlY21fY29yZS5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjbS9hZWNtX2NvcmUuY2MKQEAgLTEyLDE2ICsxMiwxNSBAQAog
CiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Ry
aW5nLmg+CiAKIGV4dGVybiAiQyIgewogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yaW5nX2J1ZmZl
ci5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3Jl
YWxfZmZ0LmgiCiB9CisjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2lu
Y2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWNtL2VjaG9fY29udHJvbF9tb2JpbGUuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9kZWxheV9lc3RpbWF0b3Jfd3JhcHBlci5oIgot
ZXh0ZXJuICJDIiB7Ci0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2ZlYXR1
cmVzX3dyYXBwZXIuaCIKLX0KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWNtL2VjaG9fY29udHJvbF9tb2JpbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjbS9lY2hv
X2NvbnRyb2xfbW9iaWxlLmNjCmluZGV4IGM5NDc1NjNiMjgwNWUyZTk3NzEyNDFmM2JkMWU1NDNj
NmFmMmY4NDguLjI1N2RmYmY1NmU0ZTgxNjM0Y2E4ODE2OTEzNDlhMTZkY2ZiNjg3YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWNtL2VjaG9fY29udHJvbF9tb2JpbGUuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlY20vZWNob19jb250cm9sX21vYmlsZS5jYwpAQCAtMTQsMTAgKzE0LDEyIEBACiAjaW5j
bHVkZSA8c3RkaW8uaD4KICNlbmRpZgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0
cmluZy5oPgogCiBleHRlcm4gIkMiIHsKICNpbmNsdWRlICJjb21tb25fYXVkaW8vcmluZ19idWZm
ZXIuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZS9z
aWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlY20vYWVjbV9kZWZpbmVzLmgiCiB9CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlY20vYWVjbV9jb3JlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2Mv
YWdjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2MuY2MKaW5kZXggMTJjOGNmYjdmYmQxNzMxZDc4MmZm
YzRkOTMxMmQ0ZTQ4OGQ5NzZkMi4uYzI0ZGIwZGQ1MjI1YmUyODIxNDM3YWY4NGY1OWRhNDNkODJl
Y2M2NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2MuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
Yy9hZ2MuY2MKQEAgLTEyLDggKzEyLDYgQEAKIAogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUg
PGNzdGRsaWI+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9sb3VkbmVzc19oaXN0b2dyYW0u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvYWdjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnYy5o
CmluZGV4IDVkMzRjMjEyZjNhYmZmOThlZTZmM2FhZmJkZjVkODAxZDk3ZDJkODQuLmFiZDY4ZDVl
MzExZDgxZmE4ZDJhMjRiNWMxNGUzZDU0ZjMyYWJlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MvYWdjLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2MuaApAQCAtMTcsNyArMTcsNiBAQAogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3MgQXVkaW9GcmFtZTsKIGNsYXNzIExvdWRuZXNzSGlz
dG9ncmFtOwogCiBjbGFzcyBBZ2MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2NfbWFu
YWdlcl9kaXJlY3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnY19tYW5hZ2VyX2RpcmVjdC5jYwppbmRl
eCBkYzZkNDUxMjFjZGQ2ZGJmZDBmOWZjYzAxODg3MGNhZmIxZWZlYzIyLi41YzRkZWVjY2JmMjlj
NWU5M2FiMDE3NDViZDY0M2QzYjdhNTg4MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2Fn
Y19tYW5hZ2VyX2RpcmVjdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnY19tYW5hZ2VyX2RpcmVj
dC5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYy9hZ2NfbWFuYWdlcl9kaXJlY3QuaCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDxjbWF0aD4KIAogI2lmZGVmIFdFQlJUQ19BR0NfREVCVUdfRFVNUApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYy9sb3VkbmVzc19oaXN0b2dyYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xv
dWRuZXNzX2hpc3RvZ3JhbS5jYwppbmRleCAwZWQ1ODUwZTcyZDU2NzUzM2EzMmJhZGFmMzJmNDQ4
NWE0ZmIxM2I3Li5jZDU3YjgyYmNjNzI0NjVhOTExYTdmMzY3YzE5NDE1ODQyMzllYWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5jYwpAQCAtMTAsOCArMTAsOCBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9sb3VkbmVzc19oaXN0b2dyYW0uaCIKIAor
I2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGNtYXRoPgotI2luY2x1ZGUgPGNzdHJpbmc+
CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYy9sb3VkbmVzc19oaXN0b2dyYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvbG91ZG5lc3NfaGlzdG9n
cmFtLmgKaW5kZXggZDhhZDc1MTE3NjRhNWFhMTg0NjU0MWY4Y2JlYmEwYThkODk2ZDczOS4uYjIx
MGJlOTZlM2I5MWVhYTI4MmQxZGY1MzkzNzdjZmFiZDM5ZGNmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYy9sb3VkbmVzc19oaXN0b2dyYW0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xvdWRuZXNz
X2hpc3RvZ3JhbS5oCkBAIC0xMSw4ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJP
Q0VTU0lOR19BR0NfTE9VRE5FU1NfSElTVE9HUkFNX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9f
UFJPQ0VTU0lOR19BR0NfTE9VRE5FU1NfSElTVE9HUkFNX0hfCiAKLSNpbmNsdWRlIDxzdHJpbmcu
aD4KLQorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9CVUlMRC5nbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL0JVSUxELmduCmluZGV4IDE4NjVmZGUzZTkxZTRmYWJmNzc5Y2FlNmYxODBjMzI2YWQ5
NWM2NWIuLjU0MzFhMTUwYzIzYzJiODBhOTg1NTFhZGU2MzI0N2U3MGVjNmFmYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL0JVSUxELmdu
CkBAIC0yNyw2ICsyNyw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJsZXZlbF9lc3RpbWF0aW9uX2FnYyIp
IHsKICAgICAiOmdhaW5fYXBwbGllciIsCiAgICAgIjpub2lzZV9sZXZlbF9lc3RpbWF0b3IiLAog
ICAgICI6cm5uX3ZhZF93aXRoX2xldmVsIiwKKyAgICAiLi46YXBpIiwKICAgICAiLi46YXBtX2xv
Z2dpbmciLAogICAgICIuLjphdWRpb19mcmFtZV92aWV3IiwKICAgICAiLi4vLi4vLi4vYXBpOmFy
cmF5X3ZpZXciLApAQCAtNTgsNiArNTksNyBAQCBydGNfc291cmNlX3NldCgiYWRhcHRpdmVfZGln
aXRhbCIpIHsKICAgICAiOmdhaW5fYXBwbGllciIsCiAgICAgIjpub2lzZV9sZXZlbF9lc3RpbWF0
b3IiLAogICAgICI6cm5uX3ZhZF93aXRoX2xldmVsIiwKKyAgICAiLi46YXBpIiwKICAgICAiLi46
YXBtX2xvZ2dpbmciLAogICAgICIuLjphdWRpb19mcmFtZV92aWV3IiwKICAgICAiLi4vLi4vLi4v
YXBpOmFycmF5X3ZpZXciLApAQCAtOTYsMTIgKzk4LDEwIEBAIHJ0Y19zb3VyY2Vfc2V0KCJmaXhl
ZF9kaWdpdGFsIikgewogICBzb3VyY2VzID0gWwogICAgICJmaXhlZF9kaWdpdGFsX2xldmVsX2Vz
dGltYXRvci5jYyIsCiAgICAgImZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmgiLAotICAg
ICJmaXhlZF9nYWluX2NvbnRyb2xsZXIuY2MiLAotICAgICJmaXhlZF9nYWluX2NvbnRyb2xsZXIu
aCIsCi0gICAgImdhaW5fY3VydmVfYXBwbGllci5jYyIsCi0gICAgImdhaW5fY3VydmVfYXBwbGll
ci5oIiwKICAgICAiaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MiLAogICAgICJpbnRlcnBvbGF0
ZWRfZ2Fpbl9jdXJ2ZS5oIiwKKyAgICAibGltaXRlci5jYyIsCisgICAgImxpbWl0ZXIuaCIsCiAg
IF0KIAogICBjb25maWdzICs9IFsgIi4uOmFwbV9kZWJ1Z19kdW1wIiBdCkBAIC0xMjgsNiArMTI4
LDcgQEAgcnRjX3NvdXJjZV9zZXQoImdhaW5fYXBwbGllciIpIHsKICAgZGVwcyA9IFsKICAgICAi
OmNvbW1vbiIsCiAgICAgIi4uOmF1ZGlvX2ZyYW1lX3ZpZXciLAorICAgICIuLi8uLi8uLi9hcGk6
YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgXQog
fQpAQCAtMTkxLDggKzE5Miw4IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhZGFwdGl2ZV9kaWdpdGFsX3Vu
aXR0ZXN0cyIpIHsKICAgICAiLi4vLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi8u
Li9jb21tb25fYXVkaW8iLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIu
Li8uLi8uLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0
c191dGlscyIsCiAgIF0KIH0KIApAQCAtMjAzLDcgKzIwNCw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJi
aXF1YWRfZmlsdGVyX3VuaXR0ZXN0cyIpIHsKICAgXQogICBkZXBzID0gWwogICAgICI6YmlxdWFk
X2ZpbHRlciIsCi0gICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwK
KyAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgIF0KIH0KIApAQCAtMjE2
LDExICsyMTcsMTAgQEAgcnRjX3NvdXJjZV9zZXQoImZpeGVkX2RpZ2l0YWxfdW5pdHRlc3RzIikg
ewogICAgICJjb21wdXRlX2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmNjIiwKICAgICAiY29tcHV0
ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIiwKICAgICAiZml4ZWRfZGlnaXRhbF9sZXZlbF9l
c3RpbWF0b3JfdW5pdHRlc3QuY2MiLAotICAgICJmaXhlZF9nYWluX2NvbnRyb2xsZXJfdW5pdHRl
c3QuY2MiLAotICAgICJnYWluX2N1cnZlX2FwcGxpZXJfdW5pdHRlc3QuY2MiLAogICAgICJpbnRl
cnBvbGF0ZWRfZ2Fpbl9jdXJ2ZV91bml0dGVzdC5jYyIsCi0gICAgImxpbWl0ZXIuY2MiLAotICAg
ICJsaW1pdGVyLmgiLAorICAgICJsaW1pdGVyX2RiX2dhaW5fY3VydmUuY2MiLAorICAgICJsaW1p
dGVyX2RiX2dhaW5fY3VydmUuaCIsCisgICAgImxpbWl0ZXJfZGJfZ2Fpbl9jdXJ2ZV91bml0dGVz
dC5jYyIsCiAgICAgImxpbWl0ZXJfdW5pdHRlc3QuY2MiLAogICBdCiAgIGRlcHMgPSBbCkBAIC0y
MzIsOCArMjMyLDggQEAgcnRjX3NvdXJjZV9zZXQoImZpeGVkX2RpZ2l0YWxfdW5pdHRlc3RzIikg
ewogICAgICIuLi8uLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uLy4uL2NvbW1vbl9h
dWRpbyIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uLy4uLy4uL3J0
Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9h
cHByb3ZlZCIsCi0gICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwK
ICAgICAiLi4vLi4vLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3MiLAogICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCkBAIC0yNTQsMTQgKzI1NCwyOSBAQCBy
dGNfc291cmNlX3NldCgibm9pc2VfZXN0aW1hdG9yX3VuaXR0ZXN0cyIpIHsKICAgICAiLi46YXVk
aW9fZnJhbWVfdmlldyIsCiAgICAgIi4uLy4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4v
Li4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6Z3VuaXRfaGVs
cGVycyIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAi
Li4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAorICBdCit9CisKK3J0Y19z
b3VyY2Vfc2V0KCJybm5fdmFkX3dpdGhfbGV2ZWxfdW5pdHRlc3RzIikgeworICB0ZXN0b25seSA9
IHRydWUKKyAgc291cmNlcyA9IFsKKyAgICAidmFkX3dpdGhfbGV2ZWxfdW5pdHRlc3QuY2MiLAor
ICBdCisgIGRlcHMgPSBbCisgICAgIjpybm5fdmFkX3dpdGhfbGV2ZWwiLAorICAgICIuLjphdWRp
b19mcmFtZV92aWV3IiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAg
IF0KIH0KIAogcnRjX3NvdXJjZV9zZXQoInRlc3RfdXRpbHMiKSB7CiAgIHRlc3Rvbmx5ID0gdHJ1
ZQotICB2aXNpYmlsaXR5ID0gWyAiOioiIF0KKyAgdmlzaWJpbGl0eSA9IFsKKyAgICAiOioiLAor
ICAgICIuLjphdWRpb19wcm9jZXNzaW5nX3VuaXR0ZXN0cyIsCisgIF0KICAgc291cmNlcyA9IFsK
ICAgICAiYWdjMl90ZXN0aW5nX2NvbW1vbi5jYyIsCiAgICAgImFnYzJfdGVzdGluZ19jb21tb24u
aCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9hZ2MuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9hZGFwdGl2ZV9hZ2MuY2MKaW5kZXggYzczNDZjNjA0Mjk5N2UwMDlkOTBkYjJjY2Nk
NTE4ODA0YzUxMzk1OC4uYTVkMzYwODljNDg0OTY0ZGJjZmI1ZGYwMGMwYTI1YWNkNmYyNTUwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfYWdjLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2FkYXB0aXZlX2FnYy5jYwpAQCAtMTAsMTIgKzEwLDEwIEBACiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9hZ2MuaCIKIAotI2luY2x1ZGUg
PGFsZ29yaXRobT4KLSNpbmNsdWRlIDxudW1lcmljPgotCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlv
L2luY2x1ZGUvYXVkaW9fdXRpbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL3ZhZF93aXRoX2xldmVsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yNyw2ICsyNSwxOSBAQCBBZGFwdGl2ZUFn
Yzo6QWRhcHRpdmVBZ2MoQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyKQogICBSVENfRENI
RUNLKGFwbV9kYXRhX2R1bXBlcik7CiB9CiAKK0FkYXB0aXZlQWdjOjpBZGFwdGl2ZUFnYyhBcG1E
YXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMiYgY29uZmlnKQorICAg
IDogc3BlZWNoX2xldmVsX2VzdGltYXRvcl8oCisgICAgICAgICAgYXBtX2RhdGFfZHVtcGVyLAor
ICAgICAgICAgIGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFsLmxldmVsX2VzdGltYXRvciwKKyAgICAg
ICAgICBjb25maWcuYWRhcHRpdmVfZGlnaXRhbC51c2Vfc2F0dXJhdGlvbl9wcm90ZWN0b3IsCisg
ICAgICAgICAgY29uZmlnLmFkYXB0aXZlX2RpZ2l0YWwuZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5f
ZGIpLAorICAgICAgZ2Fpbl9hcHBsaWVyXyhhcG1fZGF0YV9kdW1wZXIpLAorICAgICAgYXBtX2Rh
dGFfZHVtcGVyXyhhcG1fZGF0YV9kdW1wZXIpLAorICAgICAgbm9pc2VfbGV2ZWxfZXN0aW1hdG9y
XyhhcG1fZGF0YV9kdW1wZXIpIHsKKyAgUlRDX0RDSEVDSyhhcG1fZGF0YV9kdW1wZXIpOworfQor
CiBBZGFwdGl2ZUFnYzo6fkFkYXB0aXZlQWdjKCkgPSBkZWZhdWx0OwogCiB2b2lkIEFkYXB0aXZl
QWdjOjpQcm9jZXNzKEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBmbG9hdF9mcmFtZSwKQEAgLTM3LDkg
KzQ4LDkgQEAgdm9pZCBBZGFwdGl2ZUFnYzo6UHJvY2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4g
ZmxvYXRfZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsX3dpdGhfbGV2
ZWxzLnZhZF9yZXN1bHQuc3BlZWNoX3Byb2JhYmlsaXR5KTsKICAgYXBtX2RhdGFfZHVtcGVyXy0+
RHVtcFJhdygiYWdjMl92YWRfcm1zX2RiZnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpZ25hbF93aXRoX2xldmVscy52YWRfcmVzdWx0LnNwZWVjaF9ybXNfZGJmcyk7Ci0KICAgYXBt
X2RhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWdjMl92YWRfcGVha19kYmZzIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaWduYWxfd2l0aF9sZXZlbHMudmFkX3Jlc3VsdC5zcGVlY2hfcGVh
a19kYmZzKTsKKwogICBzcGVlY2hfbGV2ZWxfZXN0aW1hdG9yXy5VcGRhdGVFc3RpbWF0aW9uKHNp
Z25hbF93aXRoX2xldmVscy52YWRfcmVzdWx0KTsKIAogICBzaWduYWxfd2l0aF9sZXZlbHMuaW5w
dXRfbGV2ZWxfZGJmcyA9CkBAIC02MSw3ICs3Miw2IEBAIHZvaWQgQWRhcHRpdmVBZ2M6OlByb2Nl
c3MoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IGZsb2F0X2ZyYW1lLAogCiAgIC8vIFRoZSBnYWluIGFw
cGxpZXIgYXBwbGllcyB0aGUgZ2Fpbi4KICAgZ2Fpbl9hcHBsaWVyXy5Qcm9jZXNzKHNpZ25hbF93
aXRoX2xldmVscyk7Ci0gIDsKIH0KIAogdm9pZCBBZGFwdGl2ZUFnYzo6UmVzZXQoKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9hZ2MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2Fk
YXB0aXZlX2FnYy5oCmluZGV4IDc5MmIyYmM5MTZkZTVhYjljNmZhY2Q5OTk2MWZiNDdiODE3MWUy
MmUuLjE2YzAwODJlZDgxNjZkMmU0YTg3MzA0MTkxM2IxOGVkNDQxNGFiZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0
aXZlX2FnYy5oCkBAIC0xMSwxMyArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FHQzJfQURBUFRJVkVfQUdDX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BR0MyX0FEQVBUSVZFX0FHQ19IXwogCi0jaW5jbHVkZSA8bWVtb3J5PgotCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfZGlnaXRhbF9nYWluX2Fw
cGxpZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2
ZV9tb2RlX2xldmVsX2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL25vaXNlX2xldmVsX2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fZnJhbWVfdmlldy5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBBcG1EYXRhRHVtcGVyOwpAQCAtMjUsNiArMjQsOCBAQCBj
bGFzcyBBcG1EYXRhRHVtcGVyOwogY2xhc3MgQWRhcHRpdmVBZ2MgewogIHB1YmxpYzoKICAgZXhw
bGljaXQgQWRhcHRpdmVBZ2MoQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyKTsKKyAgQWRh
cHRpdmVBZ2MoQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyLAorICAgICAgICAgICAgICBj
b25zdCBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIyJiBjb25maWcpOwog
ICB+QWRhcHRpdmVBZ2MoKTsKIAogICB2b2lkIFByb2Nlc3MoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+
IGZsb2F0X2ZyYW1lLCBmbG9hdCBsYXN0X2F1ZGlvX2xldmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2FkYXB0aXZlX2RpZ2l0YWxfZ2Fpbl9hcHBsaWVyLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MKaW5kZXggZDQ1NjBjYWYxYTlkODQ3
MWE3ZTI2ZTgxMjcyOTdkZjUxMzkzZDgyOS4uNmVjZTgzYjIzOTI0MGZhOGUxMWFiZTRjMDU0NGE5
ZTdjZTU3MjFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfZGlnaXRhbF9n
YWluX2FwcGxpZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfZGlnaXRhbF9nYWlu
X2FwcGxpZXIuY2MKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJjb21tb25fYXVkaW8vaW5j
bHVkZS9hdWRpb191dGlsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvYWdjMl9jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9n
Z2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgogI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFw
dGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5jYwppbmRleCBiNjcwZjRiNDY5MjA1NmM0MGFhYjdm
ZjhlOGU5N2Q4YTdmZGJiODA3Li44NjQwMzI0YjU5M2ZmYjEyNmYxNWQ1NGIyMTc5MmVmZTQxNTVl
NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGlt
YXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRv
ci5jYwpAQCAtMTIsMTMgKzEyLDI3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCiBBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRvcjo6QWRhcHRpdmVNb2Rl
TGV2ZWxFc3RpbWF0b3IoCiAgICAgQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyKQotICAg
IDogc2F0dXJhdGlvbl9wcm90ZWN0b3JfKGFwbV9kYXRhX2R1bXBlciksCisgICAgOiBsZXZlbF9l
c3RpbWF0b3JfKAorICAgICAgICAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJv
bGxlcjI6OkxldmVsRXN0aW1hdG9yOjprUm1zKSwKKyAgICAgIHVzZV9zYXR1cmF0aW9uX3Byb3Rl
Y3Rvcl8odHJ1ZSksCisgICAgICBzYXR1cmF0aW9uX3Byb3RlY3Rvcl8oYXBtX2RhdGFfZHVtcGVy
KSwKKyAgICAgIGFwbV9kYXRhX2R1bXBlcl8oYXBtX2RhdGFfZHVtcGVyKSB7fQorCitBZGFwdGl2
ZU1vZGVMZXZlbEVzdGltYXRvcjo6QWRhcHRpdmVNb2RlTGV2ZWxFc3RpbWF0b3IoCisgICAgQXBt
RGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyLAorICAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmln
OjpHYWluQ29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yIGxldmVsX2VzdGltYXRvciwKKyAgICBi
b29sIHVzZV9zYXR1cmF0aW9uX3Byb3RlY3RvciwKKyAgICBmbG9hdCBleHRyYV9zYXR1cmF0aW9u
X21hcmdpbl9kYikKKyAgICA6IGxldmVsX2VzdGltYXRvcl8obGV2ZWxfZXN0aW1hdG9yKSwKKyAg
ICAgIHVzZV9zYXR1cmF0aW9uX3Byb3RlY3Rvcl8odXNlX3NhdHVyYXRpb25fcHJvdGVjdG9yKSwK
KyAgICAgIHNhdHVyYXRpb25fcHJvdGVjdG9yXyhhcG1fZGF0YV9kdW1wZXIsIGV4dHJhX3NhdHVy
YXRpb25fbWFyZ2luX2RiKSwKICAgICAgIGFwbV9kYXRhX2R1bXBlcl8oYXBtX2RhdGFfZHVtcGVy
KSB7fQogCiB2b2lkIEFkYXB0aXZlTW9kZUxldmVsRXN0aW1hdG9yOjpVcGRhdGVFc3RpbWF0aW9u
KApAQCAtNDIsMjAgKzU2LDM4IEBAIHZvaWQgQWRhcHRpdmVNb2RlTGV2ZWxFc3RpbWF0b3I6OlVw
ZGF0ZUVzdGltYXRpb24oCiAKICAgY29uc3QgZmxvYXQgbGVha19mYWN0b3IgPSBidWZmZXJfaXNf
ZnVsbCA/IGtGdWxsQnVmZmVyTGVha0ZhY3RvciA6IDEuZjsKIAorICAvLyBSZWFkIHNwZWVjaCBs
ZXZlbCBlc3RpbWF0aW9uLgorICBmbG9hdCBzcGVlY2hfbGV2ZWxfZGJmcyA9IDAuZjsKKyAgdXNp
bmcgTGV2ZWxFc3RpbWF0b3JUeXBlID0KKyAgICAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpH
YWluQ29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yOworICBzd2l0Y2ggKGxldmVsX2VzdGltYXRv
cl8pIHsKKyAgICBjYXNlIExldmVsRXN0aW1hdG9yVHlwZTo6a1JtczoKKyAgICAgIHNwZWVjaF9s
ZXZlbF9kYmZzID0gdmFkX2RhdGEuc3BlZWNoX3Jtc19kYmZzOworICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMZXZlbEVzdGltYXRvclR5cGU6OmtQZWFrOgorICAgICAgc3BlZWNoX2xldmVsX2RiZnMg
PSB2YWRfZGF0YS5zcGVlY2hfcGVha19kYmZzOworICAgICAgYnJlYWs7CisgIH0KKworICAvLyBV
cGRhdGUgc3BlZWNoIGxldmVsIGVzdGltYXRpb24uCiAgIGVzdGltYXRlX251bWVyYXRvcl8gPSBl
c3RpbWF0ZV9udW1lcmF0b3JfICogbGVha19mYWN0b3IgKwotICAgICAgICAgICAgICAgICAgICAg
ICAgdmFkX2RhdGEuc3BlZWNoX3Jtc19kYmZzICogdmFkX2RhdGEuc3BlZWNoX3Byb2JhYmlsaXR5
OworICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWNoX2xldmVsX2RiZnMgKiB2YWRfZGF0YS5z
cGVlY2hfcHJvYmFiaWxpdHk7CiAgIGVzdGltYXRlX2Rlbm9taW5hdG9yXyA9CiAgICAgICBlc3Rp
bWF0ZV9kZW5vbWluYXRvcl8gKiBsZWFrX2ZhY3RvciArIHZhZF9kYXRhLnNwZWVjaF9wcm9iYWJp
bGl0eTsKLQogICBsYXN0X2VzdGltYXRlX3dpdGhfb2Zmc2V0X2RiZnNfID0gZXN0aW1hdGVfbnVt
ZXJhdG9yXyAvIGVzdGltYXRlX2Rlbm9taW5hdG9yXzsKIAotICBzYXR1cmF0aW9uX3Byb3RlY3Rv
cl8uVXBkYXRlTWFyZ2luKHZhZF9kYXRhLCBsYXN0X2VzdGltYXRlX3dpdGhfb2Zmc2V0X2RiZnNf
KTsKLSAgRGVidWdEdW1wRXN0aW1hdGUoKTsKKyAgaWYgKHVzZV9zYXR1cmF0aW9uX3Byb3RlY3Rv
cl8pIHsKKyAgICBzYXR1cmF0aW9uX3Byb3RlY3Rvcl8uVXBkYXRlTWFyZ2luKHZhZF9kYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9lc3RpbWF0ZV93aXRo
X29mZnNldF9kYmZzXyk7CisgICAgRGVidWdEdW1wRXN0aW1hdGUoKTsKKyAgfQogfQogCiBmbG9h
dCBBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRvcjo6TGF0ZXN0TGV2ZWxFc3RpbWF0ZSgpIGNvbnN0
IHsKICAgcmV0dXJuIHJ0Yzo6U2FmZUNsYW1wPGZsb2F0PigKLSAgICAgIGxhc3RfZXN0aW1hdGVf
d2l0aF9vZmZzZXRfZGJmc18gKyBzYXR1cmF0aW9uX3Byb3RlY3Rvcl8uTGFzdE1hcmdpbigpLAor
ICAgICAgbGFzdF9lc3RpbWF0ZV93aXRoX29mZnNldF9kYmZzXyArCisgICAgICAgICAgKHVzZV9z
YXR1cmF0aW9uX3Byb3RlY3Rvcl8gPyBzYXR1cmF0aW9uX3Byb3RlY3Rvcl8uTGFzdE1hcmdpbigp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwLmYpLAogICAgICAgLTkw
LmYsIDMwLmYpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2Rl
X2xldmVsX2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9l
c3RpbWF0b3IuaAppbmRleCA0ZDQxODBjNDgwNjg3MDAwNDEyMGFhM2M5MjFlZTc1NWU4YjFiNjE5
Li42M2I5ZGUyYWVjNDRhMTI0ZGVhNzI1YTNhNmZmYzRmNjAxNzA5YWZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yLmgKQEAgLTExLDggKzExLDEy
IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0FEQVBUSVZFX01PREVf
TEVWRUxfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0My
X0FEQVBUSVZFX01PREVfTEVWRUxfRVNUSU1BVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4K
KworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgi
ICAvLyBrRnVsbEJ1ZmZlclNpemVNcy4uLgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL3NhdHVyYXRpb25fcHJvdGVjdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogY2xhc3MgQXBtRGF0YUR1bXBlcjsKQEAgLTIwLDYgKzI0LDExIEBAIGNsYXNzIEFw
bURhdGFEdW1wZXI7CiBjbGFzcyBBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRvciB7CiAgcHVibGlj
OgogICBleHBsaWNpdCBBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRvcihBcG1EYXRhRHVtcGVyKiBh
cG1fZGF0YV9kdW1wZXIpOworICBBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRvcigKKyAgICAgIEFw
bURhdGFEdW1wZXIqIGFwbV9kYXRhX2R1bXBlciwKKyAgICAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29u
ZmlnOjpHYWluQ29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yIGxldmVsX2VzdGltYXRvciwKKyAg
ICAgIGJvb2wgdXNlX3NhdHVyYXRpb25fcHJvdGVjdG9yLAorICAgICAgZmxvYXQgZXh0cmFfc2F0
dXJhdGlvbl9tYXJnaW5fZGIpOwogICB2b2lkIFVwZGF0ZUVzdGltYXRpb24oY29uc3QgVmFkV2l0
aExldmVsOjpMZXZlbEFuZFByb2JhYmlsaXR5JiB2YWRfZGF0YSk7CiAgIGZsb2F0IExhdGVzdExl
dmVsRXN0aW1hdGUoKSBjb25zdDsKICAgdm9pZCBSZXNldCgpOwpAQCAtMzAsNiArMzksOSBAQCBj
bGFzcyBBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRvciB7CiAgcHJpdmF0ZToKICAgdm9pZCBEZWJ1
Z0R1bXBFc3RpbWF0ZSgpOwogCisgIGNvbnN0IEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWlu
Q29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yCisgICAgICBsZXZlbF9lc3RpbWF0b3JfOworICBj
b25zdCBib29sIHVzZV9zYXR1cmF0aW9uX3Byb3RlY3Rvcl87CiAgIHNpemVfdCBidWZmZXJfc2l6
ZV9tc18gPSAwOwogICBmbG9hdCBsYXN0X2VzdGltYXRlX3dpdGhfb2Zmc2V0X2RiZnNfID0ga0lu
aXRpYWxTcGVlY2hMZXZlbEVzdGltYXRlRGJmczsKICAgZmxvYXQgZXN0aW1hdGVfbnVtZXJhdG9y
XyA9IDAuZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxf
ZXN0aW1hdG9yX2FnYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0
aW1hdG9yX2FnYy5jYwppbmRleCA0Y2VlOTYzM2Y3Nzc4ZGFlZGEwNWYxMGZjZjA2NDliZmUyODQ0
NjQxLi5iN2M2NDM3M2ZjOGEwMGE4MjkxMDQ2ZTcxNzQxYzEzM2Y4NzM5ZTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmNjCkBA
IC0xMCw2ICsxMCwxMCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmgiCiAKKyNpbmNsdWRlIDxjbWF0
aD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9pbmNsdWRlL2F1ZGlvX2ZyYW1lX3ZpZXcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2Mu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5oCmlu
ZGV4IDQ4NGIxMjg5MzMyNWEwMWVjZWNiZTZiZTZjYWU4NzQyZDBhOGM1NTcuLjZkMTIzMzk4ODhj
MmU4NDAwNTEzYzNiZjRlMDIyMDJiNmJjMTgyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5oCkBAIC0xMSwxMCArMTEsMTIgQEAK
ICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfQURBUFRJVkVfTU9ERV9MRVZF
TF9FU1RJTUFUT1JfQUdDX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0My
X0FEQVBUSVZFX01PREVfTEVWRUxfRVNUSU1BVE9SX0FHQ19IXwogCi0jaW5jbHVkZSA8dmVjdG9y
PgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2MuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3NhdHVyYXRpb25fcHJvdGVjdG9y
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2
ZWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9h
Z2MyX2NvbW1vbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmNjCmluZGV4IDVkYTM1
M2ZhOGZkMTM4ZmViNGZmN2IyM2M1NGM2MWM5MjEyNDQ5N2IuLmFmOTQzZGY3OGZiYjgyOGY4M2Mw
YTBjZjZhZjE3MjhhYjI1MDVhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29t
bW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmNjCkBAIC0xMCw2ICsxMCw3
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1v
bi5oIgogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRl
ICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgK
aW5kZXggNzFkMzNlNTk0ZGEyM2JkZjI0OWM0YjZiN2NiYjZmYzBmZmZmMDdiMC4uNTVkZDY0OGRi
NDlhYjE2MWExZjk4NTBlZDRhODdlNjg5YzYxZTNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvYWdjMl9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oCkBAIC0x
Myw4ICsxMyw2IEBACiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KIAotI2luY2x1ZGUgPGNtYXRoPgot
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY29uc3RleHByIGZsb2F0IGtNaW5GbG9hdFMxNlZhbHVl
ID0gLTMyNzY4LmY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvYmlxdWFkX2ZpbHRlci5jYwppbmRleCA5ODU4ZDUwNTg0NjU5MWY4
ODBlOTRkYjgxNzRhMzIxMTMxYTFmM2Y0Li5kYTg1NTdjMTkwODJjMWNhMTgwOTFiM2I2ZjQ4NGFl
NWViYjQ2ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2JpcXVhZF9maWx0ZXIuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2JpcXVhZF9maWx0ZXIuaCIK
IAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gVHJhbnNw
b3NlZCBkaXJlY3QgZm9ybSBJIGltcGxlbWVudGF0aW9uIG9mIGEgYmktcXVhZCBmaWx0ZXIgYXBw
bGllZCB0byBhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYmlxdWFkX2ZpbHRlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FnYzIvYmlxdWFkX2ZpbHRlci5oCmluZGV4IDI4NDkzMGM1OTUyODMxYTBjN2Yx
MjU1MDEzNjUwOGI1NTA0ZTlhMWUuLjNkNzhjMDc2MDc4ODg5MjI3NjBmYzA1YjY4MWFjNWVhNWNh
YWMwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2JpcXVhZF9maWx0ZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVyLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYg
TU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfQklRVUFEX0ZJTFRFUl9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9CSVFVQURfRklMVEVSX0hfCiAKKyNpbmNsdWRl
IDxhbGdvcml0aG0+CisKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2FycmF5c2l6ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2NvbXB1dGVfaW50ZXJwb2xhdGVkX2dhaW5f
Y3VydmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9jb21wdXRlX2ludGVycG9sYXRlZF9nYWluX2N1cnZl
LmNjCmluZGV4IGYzOTViY2VmZmExYmM3N2NkNjM3OWQwNmQ2MTlkZmI0NGI5YmVlMTIuLmJjOTI2
MTNiNjk3ZTZmMWE0MDYyNGMyZDM1MmFhYWU1MTBiMGM4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2NvbXB1dGVfaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvY29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYwpAQCAtMTksMjMgKzE5LDI0
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1v
bi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfdGVzdGlu
Z19jb21tb24uaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1p
dGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9k
Yl9nYWluX2N1cnZlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKIAogc3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPiBDb21w
dXRlTGluZWFyQXBwcm94aW1hdGlvblBhcmFtcygKLSAgICBjb25zdCBMaW1pdGVyKiBsaW1pdGVy
LAorICAgIGNvbnN0IExpbWl0ZXJEYkdhaW5DdXJ2ZSogbGltaXRlciwKICAgICBjb25zdCBkb3Vi
bGUgeCkgewogICBjb25zdCBkb3VibGUgbSA9IGxpbWl0ZXItPkdldEdhaW5GaXJzdERlcml2YXRp
dmVMaW5lYXIoeCk7CiAgIGNvbnN0IGRvdWJsZSBxID0gbGltaXRlci0+R2V0R2FpbkxpbmVhcih4
KSAtIG0gKiB4OwogICByZXR1cm4ge20sIHF9OwogfQogCi1kb3VibGUgQ29tcHV0ZUFyZWFVbmRl
clBpZWNld2lzZUxpbmVhckFwcHJveGltYXRpb24oY29uc3QgTGltaXRlciogbGltaXRlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBk
b3VibGUgeDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZG91YmxlIHgxKSB7Citkb3VibGUgQ29tcHV0ZUFyZWFVbmRlclBpZWNld2lz
ZUxpbmVhckFwcHJveGltYXRpb24oCisgICAgY29uc3QgTGltaXRlckRiR2FpbkN1cnZlKiBsaW1p
dGVyLAorICAgIGNvbnN0IGRvdWJsZSB4MCwKKyAgICBjb25zdCBkb3VibGUgeDEpIHsKICAgUlRD
X0NIRUNLX0xUKHgwLCB4MSk7CiAKICAgLy8gTGluZWFyIGFwcHJveGltYXRpb24gaW4geDAgYW5k
IHgxLgpAQCAtNjAsNyArNjEsNyBAQCBkb3VibGUgQ29tcHV0ZUFyZWFVbmRlclBpZWNld2lzZUxp
bmVhckFwcHJveGltYXRpb24oY29uc3QgTGltaXRlciogbGltaXRlciwKIC8vIENvbXB1dGVzIHRo
ZSBhcHByb3hpbWF0aW9uIGVycm9yIGluIHRoZSBsaW1pdGVyIHJlZ2lvbiBmb3IgYSBnaXZlbiBp
bnRlcnZhbC4KIC8vIFRoZSBlcnJvciBpcyBjb21wdXRlZCBhcyB0aGUgZGlmZmVyZW5jZSBiZXR3
ZWVuIHRoZSBhcmVhcyBiZW5lYXRoIHRoZSBsaW1pdGVyCiAvLyBjdXJ2ZSB0byBhcHByb3hpbWF0
ZSBhbmQgaXRzIGxpbmVhciB1bmRlci1hcHByb3hpbWF0aW9uLgotZG91YmxlIExpbWl0ZXJVbmRl
ckFwcHJveGltYXRpb25OZWdhdGl2ZUVycm9yKGNvbnN0IExpbWl0ZXIqIGxpbWl0ZXIsCitkb3Vi
bGUgTGltaXRlclVuZGVyQXBwcm94aW1hdGlvbk5lZ2F0aXZlRXJyb3IoY29uc3QgTGltaXRlckRi
R2FpbkN1cnZlKiBsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGRvdWJsZSB4MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeDEpIHsKICAgY29uc3QgZG91YmxlIGFyZWFf
bGltaXRlciA9IGxpbWl0ZXItPkdldEdhaW5JbnRlZ3JhbExpbmVhcih4MCwgeDEpOwpAQCAtNzcs
NyArNzgsNyBAQCBkb3VibGUgTGltaXRlclVuZGVyQXBwcm94aW1hdGlvbk5lZ2F0aXZlRXJyb3Io
Y29uc3QgTGltaXRlciogbGltaXRlciwKIC8vIGFyZSBhc3NpZ25lZCBieSBoYWx2aW5nIGludGVy
dmFscyAoc3RhcnRpbmcgd2l0aCB0aGUgd2hvbGUgYmV5b25kLWtuZWUgcmVnaW9uCiAvLyBhcyBh
IHNpbmdsZSBpbnRlcnZhbCkuIEhvd2V2ZXIsIGV2ZW4gaWYgc3ViLW9wdGltYWwsIHRoaXMgYWxn
b3JpdGhtIHdvcmtzCiAvLyB3ZWxsIGluIHByYWN0aWNlIGFuZCBpdCBpcyBlZmZpY2llbnRseSBp
bXBsZW1lbnRlZCB1c2luZyBwcmlvcml0eSBxdWV1ZXMuCi1zdGQ6OnZlY3Rvcjxkb3VibGU+IFNh
bXBsZUxpbWl0ZXJSZWdpb24oY29uc3QgTGltaXRlciogbGltaXRlcikgeworc3RkOjp2ZWN0b3I8
ZG91YmxlPiBTYW1wbGVMaW1pdGVyUmVnaW9uKGNvbnN0IExpbWl0ZXJEYkdhaW5DdXJ2ZSogbGlt
aXRlcikgewogICBzdGF0aWNfYXNzZXJ0KGtJbnRlcnBvbGF0ZWRHYWluQ3VydmVCZXlvbmRLbmVl
UG9pbnRzID4gMiwgIiIpOwogCiAgIHN0cnVjdCBJbnRlcnZhbCB7CkBAIC0xMzEsNyArMTMyLDcg
QEAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBTYW1wbGVMaW1pdGVyUmVnaW9uKGNvbnN0IExpbWl0ZXIq
IGxpbWl0ZXIpIHsKIC8vIENvbXB1dGUgdGhlIHBhcmFtZXRlcnMgdG8gb3Zlci1hcHByb3hpbWF0
ZSB0aGUga25lZSByZWdpb24gdmlhIGxpbmVhcgogLy8gaW50ZXJwb2xhdGlvbi4gT3Zlci1hcHBy
b3hpbWF0aW5nIGlzIHNhdHVyYXRpb24tc2FmZSBzaW5jZSB0aGUga25lZSByZWdpb24gaXMKIC8v
IGNvbnZleC4KLXZvaWQgUHJlY29tcHV0ZUtuZWVBcHByb3hQYXJhbXMoY29uc3QgTGltaXRlciog
bGltaXRlciwKK3ZvaWQgUHJlY29tcHV0ZUtuZWVBcHByb3hQYXJhbXMoY29uc3QgTGltaXRlckRi
R2FpbkN1cnZlKiBsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
OjpJbnRlcnBvbGF0ZWRQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKSB7CiAgIHN0YXRpY19hc3NlcnQo
a0ludGVycG9sYXRlZEdhaW5DdXJ2ZUtuZWVQb2ludHMgPiAyLCAiIik7CiAgIC8vIEdldCB8a0lu
dGVycG9sYXRlZEdhaW5DdXJ2ZUtuZWVQb2ludHN8IC0gMSBlcXVhbGx5IHNwYWNlZCBwb2ludHMu
CkBAIC0xNjUsNyArMTY2LDcgQEAgdm9pZCBQcmVjb21wdXRlS25lZUFwcHJveFBhcmFtcyhjb25z
dCBMaW1pdGVyKiBsaW1pdGVyLAogLy8gaW50ZXJwb2xhdGlvbiBhbmQgZ3JlZWR5IHNhbXBsaW5n
LiBVbmRlci1hcHByb3hpbWF0aW5nIGlzIHNhdHVyYXRpb24tc2FmZQogLy8gc2luY2UgdGhlIGJl
eW9uZC1rbmVlIHJlZ2lvbiBpcyBjb25jYXZlLgogdm9pZCBQcmVjb21wdXRlQmV5b25kS25lZUFw
cHJveFBhcmFtcygKLSAgICBjb25zdCBMaW1pdGVyKiBsaW1pdGVyLAorICAgIGNvbnN0IExpbWl0
ZXJEYkdhaW5DdXJ2ZSogbGltaXRlciwKICAgICB0ZXN0OjpJbnRlcnBvbGF0ZWRQYXJhbWV0ZXJz
KiBwYXJhbWV0ZXJzKSB7CiAgIC8vIEZpbmQgcG9pbnRzIG9uIHdoaWNoIHRoZSBsaW5lYXIgcGll
Y2VzIGFyZSB0YW5nZW50IHRvIHRoZSBnYWluIGN1cnZlLgogICBjb25zdCBhdXRvIHNhbXBsZXMg
PSBTYW1wbGVMaW1pdGVyUmVnaW9uKGxpbWl0ZXIpOwpAQCAtMjE2LDcgKzIxNyw3IEBAIG5hbWVz
cGFjZSB0ZXN0IHsKIAogSW50ZXJwb2xhdGVkUGFyYW1ldGVycyBDb21wdXRlSW50ZXJwb2xhdGVk
R2FpbkN1cnZlQXBwcm94aW1hdGlvblBhcmFtcygpIHsKICAgSW50ZXJwb2xhdGVkUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwotICBMaW1pdGVyIGxpbWl0ZXI7CisgIExpbWl0ZXJEYkdhaW5DdXJ2ZSBs
aW1pdGVyOwogICBwYXJhbWV0ZXJzLmNvbXB1dGVkX2FwcHJveGltYXRpb25fcGFyYW1zX3guZmls
bCgwLjBmKTsKICAgcGFyYW1ldGVycy5jb21wdXRlZF9hcHByb3hpbWF0aW9uX3BhcmFtc19tLmZp
bGwoMC4wZik7CiAgIHBhcmFtZXRlcnMuY29tcHV0ZWRfYXBwcm94aW1hdGlvbl9wYXJhbXNfcS5m
aWxsKDAuMGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZGlnaXRhbF9sZXZl
bF9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9kaWdpdGFsX2xldmVsX2VzdGlt
YXRvci5jYwppbmRleCAzOWNjNzY0MTg1YzFkOGZiMTM1ZDRjYjg0M2U5MzY2NjEzZDgzY2M3Li45
NzFmNGY2MmI3OTAxNTg4Yjc0MDZjY2Q4ZDVjYmRlYzA1MjBiMmE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9maXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9maXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5jYwpAQCAtMTMsNiArMTMsNyBA
QAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KIAorI2luY2x1ZGUgImFw
aS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dp
bmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJvbGxlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJvbGxlci5jYwppbmRleCAwZDdlM2E2MWIxNWQzMGFj
NTQ1MDY3ZDc2NzY5NWZlMmU3YzBlNTdlLi5lZjkwOGRjMzU4Mjg0OTRlNGQ2ZWFkZjkyYzA4YmM1
ZjA4Y2VmM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xs
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmNjCkBAIC0x
MCwxMyArMTAsOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
Zml4ZWRfZ2Fpbl9jb250cm9sbGVyLmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVk
ZSA8Y21hdGg+Ci0KICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImNvbW1v
bl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgpAQCAtMzks
NyArMzUsNyBAQCBGaXhlZEdhaW5Db250cm9sbGVyOjpGaXhlZEdhaW5Db250cm9sbGVyKEFwbURh
dGFEdW1wZXIqIGFwbV9kYXRhX2R1bXBlcikKIEZpeGVkR2FpbkNvbnRyb2xsZXI6OkZpeGVkR2Fp
bkNvbnRyb2xsZXIoQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBoaXN0b2dyYW1fbmFtZV9w
cmVmaXgpCiAgICAgOiBhcG1fZGF0YV9kdW1wZXJfKGFwbV9kYXRhX2R1bXBlciksCi0gICAgICBn
YWluX2N1cnZlX2FwcGxpZXJfKDQ4MDAwLCBhcG1fZGF0YV9kdW1wZXJfLCBoaXN0b2dyYW1fbmFt
ZV9wcmVmaXgpIHsKKyAgICAgIGxpbWl0ZXJfKDQ4MDAwLCBhcG1fZGF0YV9kdW1wZXJfLCBoaXN0
b2dyYW1fbmFtZV9wcmVmaXgpIHsKICAgLy8gRG8gdXBkYXRlIGhpc3RvZ3JhbXMueG1sIHdoZW4g
YWRkaW5nIG5hbWUgcHJlZml4ZXMuCiAgIFJUQ19EQ0hFQ0soaGlzdG9ncmFtX25hbWVfcHJlZml4
ID09ICIiIHx8IGhpc3RvZ3JhbV9uYW1lX3ByZWZpeCA9PSAiVGVzdCIgfHwKICAgICAgICAgICAg
ICBoaXN0b2dyYW1fbmFtZV9wcmVmaXggPT0gIkF1ZGlvTWl4ZXIiIHx8CkBAIC02MSwxMiArNTcs
MTIgQEAgdm9pZCBGaXhlZEdhaW5Db250cm9sbGVyOjpTZXRHYWluKGZsb2F0IGdhaW5fdG9fYXBw
bHlfZGIpIHsKICAgLy8gUmVzZXQgdGhlIGdhaW4gY3VydmUgYXBwbGllciB0byBxdWlja2x5IHJl
YWN0IG9uIGFicnVwdCBsZXZlbCBjaGFuZ2VzCiAgIC8vIGNhdXNlZCBieSBsYXJnZSBjaGFuZ2Vz
IG9mIHRoZSBhcHBsaWVkIGdhaW4uCiAgIGlmIChwcmV2aW91c19hcHBsaWVkX2dhaW5lZCAhPSBn
YWluX3RvX2FwcGx5XykgewotICAgIGdhaW5fY3VydmVfYXBwbGllcl8uUmVzZXQoKTsKKyAgICBs
aW1pdGVyXy5SZXNldCgpOwogICB9CiB9CiAKIHZvaWQgRml4ZWRHYWluQ29udHJvbGxlcjo6U2V0
U2FtcGxlUmF0ZShzaXplX3Qgc2FtcGxlX3JhdGVfaHopIHsKLSAgZ2Fpbl9jdXJ2ZV9hcHBsaWVy
Xy5TZXRTYW1wbGVSYXRlKHNhbXBsZV9yYXRlX2h6KTsKKyAgbGltaXRlcl8uU2V0U2FtcGxlUmF0
ZShzYW1wbGVfcmF0ZV9oeik7CiB9CiAKIHZvaWQgRml4ZWRHYWluQ29udHJvbGxlcjo6UHJvY2Vz
cyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFsKSB7CkBAIC04NCw3ICs4MCw3IEBAIHZvaWQg
Rml4ZWRHYWluQ29udHJvbGxlcjo6UHJvY2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFs
KSB7CiAgIH0KIAogICAvLyBVc2UgdGhlIGxpbWl0ZXIuCi0gIGdhaW5fY3VydmVfYXBwbGllcl8u
UHJvY2VzcyhzaWduYWwpOworICBsaW1pdGVyXy5Qcm9jZXNzKHNpZ25hbCk7CiAKICAgLy8gRHVt
cCBkYXRhIGZvciBkZWJ1Zy4KICAgY29uc3QgYXV0byBjaGFubmVsX3ZpZXcgPSBzaWduYWwuY2hh
bm5lbCgwKTsKQEAgLTEwMCw2ICs5Niw2IEBAIHZvaWQgRml4ZWRHYWluQ29udHJvbGxlcjo6UHJv
Y2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFsKSB7CiB9CiAKIGZsb2F0IEZpeGVkR2Fp
bkNvbnRyb2xsZXI6Okxhc3RBdWRpb0xldmVsKCkgY29uc3QgewotICByZXR1cm4gZ2Fpbl9jdXJ2
ZV9hcHBsaWVyXy5MYXN0QXVkaW9MZXZlbCgpOworICByZXR1cm4gbGltaXRlcl8uTGFzdEF1ZGlv
TGV2ZWwoKTsKIH0KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJvbGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fp
bl9jb250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmNmFiODExNzI5
NDk0ZWQ4NmRiZDg2MjZhNjMxOWJiYTYxYTRmMWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykg
MjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8K
LQotI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9GSVhFRF9HQUlOX0NPTlRS
T0xMRVJfSF8KLSNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfRklYRURfR0FJ
Tl9DT05UUk9MTEVSX0hfCi0KLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9nYWluX2N1cnZlX2FwcGxpZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvaW5jbHVkZS9hdWRpb19mcmFtZV92aWV3LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotY2xh
c3MgQXBtRGF0YUR1bXBlcjsKLQotY2xhc3MgRml4ZWRHYWluQ29udHJvbGxlciB7Ci0gcHVibGlj
OgotICBleHBsaWNpdCBGaXhlZEdhaW5Db250cm9sbGVyKEFwbURhdGFEdW1wZXIqIGFwbV9kYXRh
X2R1bXBlcik7Ci0gIEZpeGVkR2FpbkNvbnRyb2xsZXIoQXBtRGF0YUR1bXBlciogYXBtX2RhdGFf
ZHVtcGVyLAotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGhpc3RvZ3JhbV9uYW1l
X3ByZWZpeCk7Ci0KLSAgdm9pZCBQcm9jZXNzKEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBzaWduYWwp
OwotCi0gIC8vIFJhdGUgYW5kIGdhaW4gbWF5IGJlIGNoYW5nZWQgYXQgYW55IHRpbWUgKGJ1dCBu
b3QgY29uY3VycmVudGx5Ci0gIC8vIHdpdGggYW55IG90aGVyIG1ldGhvZCBjYWxsKS4KLSAgdm9p
ZCBTZXRHYWluKGZsb2F0IGdhaW5fdG9fYXBwbHlfZGIpOwotICB2b2lkIFNldFNhbXBsZVJhdGUo
c2l6ZV90IHNhbXBsZV9yYXRlX2h6KTsKLSAgZmxvYXQgTGFzdEF1ZGlvTGV2ZWwoKSBjb25zdDsK
LQotIHByaXZhdGU6Ci0gIGZsb2F0IGdhaW5fdG9fYXBwbHlfID0gMS5mOwotICBBcG1EYXRhRHVt
cGVyKiBhcG1fZGF0YV9kdW1wZXJfID0gbnVsbHB0cjsKLSAgR2FpbkN1cnZlQXBwbGllciBnYWlu
X2N1cnZlX2FwcGxpZXJfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYg
IC8vIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0ZJWEVEX0dBSU5fQ09OVFJPTExFUl9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjE3MzJhYTQ3NjQ4YWQxOTBlNjI2ZjY5
NmNmZTQ5Mzg2ZDk1MmE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJvbGxlcl91bml0dGVzdC5jYwor
KysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQot
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJv
bGxlci5oIgotCi0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9h
Z2MyX3Rlc3RpbmdfY29tbW9uLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvdmVjdG9yX2Zsb2F0X2ZyYW1lLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3Vu
aXQuaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCi0KLW5h
bWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIHsKLQotY29uc3RleHByIGZsb2F0IGtJbnB1dExl
dmVsTGluZWFyID0gMTUwMDAuZjsKLQotY29uc3RleHByIGZsb2F0IGtHYWluVG9BcHBseURiID0g
MTUuZjsKLQotZmxvYXQgUnVuRml4ZWRHYWluQ29udHJvbGxlcldpdGhDb25zdGFudElucHV0KEZp
eGVkR2FpbkNvbnRyb2xsZXIqIGZpeGVkX2djLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGlucHV0X2xldmVsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBudW1fZnJhbWVz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu
dCBzYW1wbGVfcmF0ZSkgewotICAvLyBHaXZlIHRpbWUgdG8gdGhlIGxldmVsIGV0aW1hdG9yIHRv
IGNvbnZlcmdlLgotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9mcmFtZXM7ICsraSkgewot
ICAgIFZlY3RvckZsb2F0RnJhbWUgdmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lKAotICAgICAgICAx
LCBydGM6OkNoZWNrZWREaXZFeGFjdChzYW1wbGVfcmF0ZSwgMTAwKSwgaW5wdXRfbGV2ZWwpOwot
ICAgIGZpeGVkX2djLT5Qcm9jZXNzKHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZS5mbG9hdF9mcmFt
ZV92aWV3KCkpOwotICB9Ci0KLSAgLy8gUHJvY2VzcyB0aGUgbGFzdCBmcmFtZSB3aXRoIGNvbnN0
YW50IGlucHV0IGxldmVsLgotICBWZWN0b3JGbG9hdEZyYW1lIHZlY3RvcnNfd2l0aF9mbG9hdF9m
cmFtZV9sYXN0KAotICAgICAgMSwgcnRjOjpDaGVja2VkRGl2RXhhY3Qoc2FtcGxlX3JhdGUsIDEw
MCksIGlucHV0X2xldmVsKTsKLSAgZml4ZWRfZ2MtPlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0
X2ZyYW1lX2xhc3QuZmxvYXRfZnJhbWVfdmlldygpKTsKLQotICAvLyBSZXR1cm4gdGhlIGxhc3Qg
c2FtcGxlIGZyb20gdGhlIGxhc3QgcHJvY2Vzc2VkIGZyYW1lLgotICBjb25zdCBhdXRvIGNoYW5u
ZWwgPQotICAgICAgdmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lX2xhc3QuZmxvYXRfZnJhbWVfdmll
dygpLmNoYW5uZWwoMCk7Ci0gIHJldHVybiBjaGFubmVsW2NoYW5uZWwuc2l6ZSgpIC0gMV07Ci19
Ci0KLXN0ZDo6dW5pcXVlX3B0cjxBcG1EYXRhRHVtcGVyPiBHZXRBcG1EYXRhRHVtcGVyKCkgewot
ICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8QXBtRGF0YUR1bXBlcj4oMCk7Ci19Ci0KLXN0ZDo6
dW5pcXVlX3B0cjxGaXhlZEdhaW5Db250cm9sbGVyPiBDcmVhdGVGaXhlZEdhaW5Db250cm9sbGVy
KAotICAgIGZsb2F0IGdhaW5fdG9fYXBwbHksCi0gICAgc2l6ZV90IHJhdGUsCi0gICAgc3RkOjpz
dHJpbmcgaGlzdG9ncmFtX25hbWVfcHJlZml4LAotICAgIEFwbURhdGFEdW1wZXIqIHRlc3RfZGF0
YV9kdW1wZXIpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPEZpeGVkR2FpbkNvbnRyb2xsZXI+IGZnYyA9
Ci0gICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGaXhlZEdhaW5Db250cm9sbGVyPih0ZXN0X2RhdGFf
ZHVtcGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlz
dG9ncmFtX25hbWVfcHJlZml4KTsKLSAgZmdjLT5TZXRHYWluKGdhaW5fdG9fYXBwbHkpOwotICBm
Z2MtPlNldFNhbXBsZVJhdGUocmF0ZSk7Ci0gIHJldHVybiBmZ2M7Ci19Ci0KLXN0ZDo6dW5pcXVl
X3B0cjxGaXhlZEdhaW5Db250cm9sbGVyPiBDcmVhdGVGaXhlZEdhaW5Db250cm9sbGVyKAotICAg
IGZsb2F0IGdhaW5fdG9fYXBwbHksCi0gICAgc2l6ZV90IHJhdGUsCi0gICAgQXBtRGF0YUR1bXBl
ciogdGVzdF9kYXRhX2R1bXBlcikgewotICByZXR1cm4gQ3JlYXRlRml4ZWRHYWluQ29udHJvbGxl
cihnYWluX3RvX2FwcGx5LCByYXRlLCAiIiwgdGVzdF9kYXRhX2R1bXBlcik7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZQotCi1URVNUKEF1dG9tYXRpY0dhaW5Db250cm9sbGVyMkZpeGVkRGlnaXRhbCwg
Q3JlYXRlVXNlKSB7Ci0gIGNvbnN0IGludCBrU2FtcGxlUmF0ZSA9IDQ0MDAwOwotICBhdXRvIHRl
c3RfZGF0YV9kdW1wZXIgPSBHZXRBcG1EYXRhRHVtcGVyKCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxG
aXhlZEdhaW5Db250cm9sbGVyPiBmaXhlZF9nYyA9IENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIo
Ci0gICAgICBrR2FpblRvQXBwbHlEYiwga1NhbXBsZVJhdGUsIHRlc3RfZGF0YV9kdW1wZXIuZ2V0
KCkpOwotICBWZWN0b3JGbG9hdEZyYW1lIHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZSgKLSAgICAg
IDEsIHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KGtTYW1wbGVSYXRlLCAxMDApLCBrSW5wdXRMZXZlbExp
bmVhcik7Ci0gIGF1dG8gZmxvYXRfZnJhbWUgPSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUuZmxv
YXRfZnJhbWVfdmlldygpOwotICBmaXhlZF9nYy0+UHJvY2VzcyhmbG9hdF9mcmFtZSk7Ci0gIGNv
bnN0IGF1dG8gY2hhbm5lbCA9IGZsb2F0X2ZyYW1lLmNoYW5uZWwoMCk7Ci0gIEVYUEVDVF9MVChr
SW5wdXRMZXZlbExpbmVhciwgY2hhbm5lbFswXSk7Ci19Ci0KLVRFU1QoQXV0b21hdGljR2FpbkNv
bnRyb2xsZXIyRml4ZWREaWdpdGFsLCBDaGVja1NhdHVyYXRpb25CZWhhdmlvcldpdGhMaW1pdGVy
KSB7Ci0gIGNvbnN0IGZsb2F0IGtJbnB1dExldmVsID0gMzI3NjcuZjsKLSAgY29uc3Qgc2l6ZV90
IGtOdW1GcmFtZXMgPSA1OwotICBjb25zdCBzaXplX3Qga1NhbXBsZVJhdGUgPSA0MjAwMDsKLQot
ICBhdXRvIHRlc3RfZGF0YV9kdW1wZXIgPSBHZXRBcG1EYXRhRHVtcGVyKCk7Ci0KLSAgY29uc3Qg
YXV0byBnYWluc19ub19zYXR1cmF0aW9uID0KLSAgICAgIHRlc3Q6OkxpblNwYWNlKDAuMSwgdGVz
dDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGcyAtIDAuMDEsIDEwKTsKLSAgZm9yIChjb25zdCBh
dXRvIGdhaW5fZGIgOiBnYWluc19ub19zYXR1cmF0aW9uKSB7Ci0gICAgLy8gU2luY2UgfHRlc3Q6
OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnN8ID4gfGdhaW5fZGJ8LCB0aGUKLSAgICAvLyBsaW1p
dGVyIHdpbGwgbm90IHNhdHVyYXRlIHRoZSBzaWduYWwuCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZp
eGVkR2FpbkNvbnRyb2xsZXI+IGZpeGVkX2djX25vX3NhdHVyYXRpb24gPQotICAgICAgICBDcmVh
dGVGaXhlZEdhaW5Db250cm9sbGVyKGdhaW5fZGIsIGtTYW1wbGVSYXRlLCB0ZXN0X2RhdGFfZHVt
cGVyLmdldCgpKTsKLQotICAgIC8vIFNhdHVyYXRpb24gbm90IGV4cGVjdGVkLgotICAgIFNDT1BF
RF9UUkFDRShzdGQ6OnRvX3N0cmluZyhnYWluX2RiKSk7Ci0gICAgRVhQRUNUX0xUKAotICAgICAg
ICBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoCi0gICAgICAgICAgICBm
aXhlZF9nY19ub19zYXR1cmF0aW9uLmdldCgpLCBrSW5wdXRMZXZlbCwga051bUZyYW1lcywga1Nh
bXBsZVJhdGUpLAotICAgICAgICAzMjc2Ny5mKTsKLSAgfQotCi0gIGNvbnN0IGF1dG8gZ2FpbnNf
c2F0dXJhdGlvbiA9Ci0gICAgICB0ZXN0OjpMaW5TcGFjZSh0ZXN0OjprTGltaXRlck1heElucHV0
TGV2ZWxEYkZzICsgMC4wMSwgMTAsIDEwKTsKLSAgZm9yIChjb25zdCBhdXRvIGdhaW5fZGIgOiBn
YWluc19zYXR1cmF0aW9uKSB7Ci0gICAgLy8gU2luY2UgfHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRM
ZXZlbERiRnN8IDwgfGdhaW58LCB0aGUgbGltaXRlcgotICAgIC8vIHdpbGwgc2F0dXJhdGUgdGhl
IHNpZ25hbC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Rml4ZWRHYWluQ29udHJvbGxlcj4gZml4ZWRf
Z2Nfc2F0dXJhdGlvbiA9Ci0gICAgICAgIENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIoZ2Fpbl9k
Yiwga1NhbXBsZVJhdGUsIHRlc3RfZGF0YV9kdW1wZXIuZ2V0KCkpOwotCi0gICAgLy8gU2F0dXJh
dGlvbiBleHBlY3RlZC4KLSAgICBTQ09QRURfVFJBQ0Uoc3RkOjp0b19zdHJpbmcoZ2Fpbl9kYikp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSgKLSAgICAgICAgUnVuRml4ZWRHYWluQ29udHJvbGxlcldp
dGhDb25zdGFudElucHV0KAotICAgICAgICAgICAgZml4ZWRfZ2Nfc2F0dXJhdGlvbi5nZXQoKSwg
a0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtTYW1wbGVSYXRlKSwKLSAgICAgICAgMzI3NjcuZik7
Ci0gIH0KLX0KLQotVEVTVChBdXRvbWF0aWNHYWluQ29udHJvbGxlcjJGaXhlZERpZ2l0YWwsCi0g
ICAgIENoZWNrU2F0dXJhdGlvbkJlaGF2aW9yV2l0aExpbWl0ZXJTaW5nbGVTYW1wbGUpIHsKLSAg
Y29uc3QgZmxvYXQga0lucHV0TGV2ZWwgPSAzMjc2Ny5mOwotICBjb25zdCBzaXplX3Qga051bUZy
YW1lcyA9IDU7Ci0gIGNvbnN0IHNpemVfdCBrU2FtcGxlUmF0ZSA9IDgwMDA7Ci0KLSAgYXV0byB0
ZXN0X2RhdGFfZHVtcGVyID0gR2V0QXBtRGF0YUR1bXBlcigpOwotCi0gIGNvbnN0IGF1dG8gZ2Fp
bnNfbm9fc2F0dXJhdGlvbiA9Ci0gICAgICB0ZXN0OjpMaW5TcGFjZSgwLjEsIHRlc3Q6OmtMaW1p
dGVyTWF4SW5wdXRMZXZlbERiRnMgLSAwLjAxLCAxMCk7Ci0gIGZvciAoY29uc3QgYXV0byBnYWlu
X2RiIDogZ2FpbnNfbm9fc2F0dXJhdGlvbikgewotICAgIC8vIFNpbmNlIHxnYWlufCA+IHx0ZXN0
OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzfCwgdGhlIGxpbWl0ZXIgd2lsbAotICAgIC8vIG5v
dCBzYXR1cmF0ZSB0aGUgc2lnbmFsLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxGaXhlZEdhaW5Db250
cm9sbGVyPiBmaXhlZF9nY19ub19zYXR1cmF0aW9uID0KLSAgICAgICAgQ3JlYXRlRml4ZWRHYWlu
Q29udHJvbGxlcihnYWluX2RiLCBrU2FtcGxlUmF0ZSwgdGVzdF9kYXRhX2R1bXBlci5nZXQoKSk7
Ci0KLSAgICAvLyBTYXR1cmF0aW9uIG5vdCBleHBlY3RlZC4KLSAgICBTQ09QRURfVFJBQ0Uoc3Rk
Ojp0b19zdHJpbmcoZ2Fpbl9kYikpOwotICAgIEVYUEVDVF9MVCgKLSAgICAgICAgUnVuRml4ZWRH
YWluQ29udHJvbGxlcldpdGhDb25zdGFudElucHV0KAotICAgICAgICAgICAgZml4ZWRfZ2Nfbm9f
c2F0dXJhdGlvbi5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtTYW1wbGVSYXRlKSwK
LSAgICAgICAgMzI3NjcuZik7Ci0gIH0KLQotICBjb25zdCBhdXRvIGdhaW5zX3NhdHVyYXRpb24g
PQotICAgICAgdGVzdDo6TGluU3BhY2UodGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGcyAr
IDAuMDEsIDEwLCAxMCk7Ci0gIGZvciAoY29uc3QgYXV0byBnYWluX2RiIDogZ2FpbnNfc2F0dXJh
dGlvbikgewotICAgIC8vIFNpbmdlIHxnYWlufCA8IHx0ZXN0OjprTGltaXRlck1heElucHV0TGV2
ZWxEYkZzfCwgdGhlIGxpbWl0ZXIgd2lsbAotICAgIC8vIHNhdHVyYXRlIHRoZSBzaWduYWwuCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPEZpeGVkR2FpbkNvbnRyb2xsZXI+IGZpeGVkX2djX3NhdHVyYXRp
b24gPQotICAgICAgICBDcmVhdGVGaXhlZEdhaW5Db250cm9sbGVyKGdhaW5fZGIsIGtTYW1wbGVS
YXRlLCB0ZXN0X2RhdGFfZHVtcGVyLmdldCgpKTsKLQotICAgIC8vIFNhdHVyYXRpb24gZXhwZWN0
ZWQuCi0gICAgU0NPUEVEX1RSQUNFKHN0ZDo6dG9fc3RyaW5nKGdhaW5fZGIpKTsKLSAgICBFWFBF
Q1RfRkxPQVRfRVEoCi0gICAgICAgIFJ1bkZpeGVkR2FpbkNvbnRyb2xsZXJXaXRoQ29uc3RhbnRJ
bnB1dCgKLSAgICAgICAgICAgIGZpeGVkX2djX3NhdHVyYXRpb24uZ2V0KCksIGtJbnB1dExldmVs
LCBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0ZSksCi0gICAgICAgIDMyNzY3LmYpOwotICB9Ci19Ci0K
LVRFU1QoQXV0b21hdGljR2FpbkNvbnRyb2xsZXIyRml4ZWREaWdpdGFsLCBHYWluU2hvdWxkQ2hh
bmdlT25TZXRHYWluKSB7Ci0gIGNvbnN0ZXhwciBmbG9hdCBrSW5wdXRMZXZlbCA9IDEwMDAuZjsK
LSAgY29uc3RleHByIHNpemVfdCBrTnVtRnJhbWVzID0gNTsKLSAgY29uc3RleHByIHNpemVfdCBr
U2FtcGxlUmF0ZSA9IDgwMDA7Ci0gIGNvbnN0ZXhwciBmbG9hdCBrR2FpbkRiTm9DaGFuZ2UgPSAw
LmY7Ci0gIGNvbnN0ZXhwciBmbG9hdCBrR2FpbkRiRmFjdG9yMTAgPSAyMC5mOwotCi0gIGF1dG8g
dGVzdF9kYXRhX2R1bXBlciA9IEdldEFwbURhdGFEdW1wZXIoKTsKLSAgc3RkOjp1bmlxdWVfcHRy
PEZpeGVkR2FpbkNvbnRyb2xsZXI+IGZpeGVkX2djX25vX3NhdHVyYXRpb24gPQotICAgICAgQ3Jl
YXRlRml4ZWRHYWluQ29udHJvbGxlcihrR2FpbkRiTm9DaGFuZ2UsIGtTYW1wbGVSYXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2RhdGFfZHVtcGVyLmdldCgpKTsKLQot
ICAvLyBTaWduYWwgbGV2ZWwgaXMgdW5jaGFuZ2VkIHdpdGggMCBkYiBnYWluLgotICBFWFBFQ1Rf
RkxPQVRfRVEoCi0gICAgICBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQo
Ci0gICAgICAgICAgZml4ZWRfZ2Nfbm9fc2F0dXJhdGlvbi5nZXQoKSwga0lucHV0TGV2ZWwsIGtO
dW1GcmFtZXMsIGtTYW1wbGVSYXRlKSwKLSAgICAgIGtJbnB1dExldmVsKTsKLQotICBmaXhlZF9n
Y19ub19zYXR1cmF0aW9uLT5TZXRHYWluKGtHYWluRGJGYWN0b3IxMCk7Ci0KLSAgLy8gKzIwZGIg
c2hvdWxkIGluY3JlYXNlIHNpZ25hbCBieSBhIGZhY3RvciBvZiAxMC4KLSAgRVhQRUNUX0ZMT0FU
X0VRKAotICAgICAgUnVuRml4ZWRHYWluQ29udHJvbGxlcldpdGhDb25zdGFudElucHV0KAotICAg
ICAgICAgIGZpeGVkX2djX25vX3NhdHVyYXRpb24uZ2V0KCksIGtJbnB1dExldmVsLCBrTnVtRnJh
bWVzLCBrU2FtcGxlUmF0ZSksCi0gICAgICBrSW5wdXRMZXZlbCAqIDEwKTsKLX0KLQotVEVTVChB
dXRvbWF0aWNHYWluQ29udHJvbGxlcjJGaXhlZERpZ2l0YWwsCi0gICAgIFNldEdhaW5TaG91bGRC
ZUZhc3RBbmRUaW1lSW52YXJpYW50KSB7Ci0gIC8vIE51bWJlciBvZiBmcmFtZXMgcmVxdWlyZWQg
Zm9yIHRoZSBmaXhlZCBnYWluIGNvbnRyb2xsZXIgdG8gYWRhcHQgb24gdGhlCi0gIC8vIGlucHV0
IHNpZ25hbCB3aGVuIHRoZSBnYWluIGNoYW5nZXMuCi0gIGNvbnN0ZXhwciBzaXplX3Qga051bUZy
YW1lcyA9IDU7Ci0KLSAgY29uc3RleHByIGZsb2F0IGtJbnB1dExldmVsID0gMTAwMC5mOwotICBj
b25zdGV4cHIgc2l6ZV90IGtTYW1wbGVSYXRlID0gODAwMDsKLSAgY29uc3RleHByIGZsb2F0IGtH
YWluRGJMb3cgPSAwLmY7Ci0gIGNvbnN0ZXhwciBmbG9hdCBrR2FpbkRiSGlnaCA9IDQwLmY7Ci0g
IHN0YXRpY19hc3NlcnQoa0dhaW5EYkxvdyA8IGtHYWluRGJIaWdoLCAiIik7Ci0KLSAgYXV0byB0
ZXN0X2RhdGFfZHVtcGVyID0gR2V0QXBtRGF0YUR1bXBlcigpOwotICBzdGQ6OnVuaXF1ZV9wdHI8
Rml4ZWRHYWluQ29udHJvbGxlcj4gZml4ZWRfZ2MgPSBDcmVhdGVGaXhlZEdhaW5Db250cm9sbGVy
KAotICAgICAga0dhaW5EYkxvdywga1NhbXBsZVJhdGUsIHRlc3RfZGF0YV9kdW1wZXIuZ2V0KCkp
OwotCi0gIGZpeGVkX2djLT5TZXRHYWluKGtHYWluRGJMb3cpOwotICBjb25zdCBmbG9hdCBvdXRw
dXRfbGV2ZWxfcHJlID0gUnVuRml4ZWRHYWluQ29udHJvbGxlcldpdGhDb25zdGFudElucHV0KAot
ICAgICAgZml4ZWRfZ2MuZ2V0KCksIGtJbnB1dExldmVsLCBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0
ZSk7Ci0KLSAgZml4ZWRfZ2MtPlNldEdhaW4oa0dhaW5EYkhpZ2gpOwotICBSdW5GaXhlZEdhaW5D
b250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoZml4ZWRfZ2MuZ2V0KCksIGtJbnB1dExldmVsLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga051bUZyYW1lcywga1Nh
bXBsZVJhdGUpOwotCi0gIGZpeGVkX2djLT5TZXRHYWluKGtHYWluRGJMb3cpOwotICBjb25zdCBm
bG9hdCBvdXRwdXRfbGV2ZWxfcG9zdCA9IFJ1bkZpeGVkR2FpbkNvbnRyb2xsZXJXaXRoQ29uc3Rh
bnRJbnB1dCgKLSAgICAgIGZpeGVkX2djLmdldCgpLCBrSW5wdXRMZXZlbCwga051bUZyYW1lcywg
a1NhbXBsZVJhdGUpOwotCi0gIEVYUEVDVF9FUShvdXRwdXRfbGV2ZWxfcHJlLCBvdXRwdXRfbGV2
ZWxfcG9zdCk7Ci19Ci0KLVRFU1QoQXV0b21hdGljR2FpbkNvbnRyb2xsZXIyRml4ZWREaWdpdGFs
LCBSZWdpb25IaXN0b2dyYW1Jc1VwZGF0ZWQpIHsKLSAgY29uc3RleHByIHNpemVfdCBrU2FtcGxl
UmF0ZSA9IDgwMDA7Ci0gIGNvbnN0ZXhwciBmbG9hdCBrR2FpbkRiID0gMC5mOwotICBjb25zdGV4
cHIgZmxvYXQga0lucHV0TGV2ZWwgPSAxMDAwLmY7Ci0gIGNvbnN0ZXhwciBzaXplX3Qga051bUZy
YW1lcyA9IDU7Ci0KLSAgbWV0cmljczo6UmVzZXQoKTsKLQotICBhdXRvIHRlc3RfZGF0YV9kdW1w
ZXIgPSBHZXRBcG1EYXRhRHVtcGVyKCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxGaXhlZEdhaW5Db250
cm9sbGVyPiBmaXhlZF9nY19ub19zYXR1cmF0aW9uID0KLSAgICAgIENyZWF0ZUZpeGVkR2FpbkNv
bnRyb2xsZXIoa0dhaW5EYiwga1NhbXBsZVJhdGUsICJUZXN0IiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdF9kYXRhX2R1bXBlci5nZXQoKSk7Ci0KLSAgc3RhdGljX2Nhc3Q8
dm9pZD4oUnVuRml4ZWRHYWluQ29udHJvbGxlcldpdGhDb25zdGFudElucHV0KAotICAgICAgZml4
ZWRfZ2Nfbm9fc2F0dXJhdGlvbi5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtTYW1w
bGVSYXRlKSk7Ci0KLSAgLy8gRGVzdHJveWluZyBGaXhlZEdhaW5Db250cm9sbGVyIHNob3VsZCBj
YXVzZSB0aGUgbGFzdCBsaW1pdGVyIHJlZ2lvbiB0byBiZQotICAvLyBsb2dnZWQuCi0gIGZpeGVk
X2djX25vX3NhdHVyYXRpb24ucmVzZXQoKTsKLQotICBFWFBFQ1RfRVEoMSwgbWV0cmljczo6TnVt
U2FtcGxlcygKLSAgICAgICAgICAgICAgICAgICAiV2ViUlRDLkF1ZGlvLlRlc3QuRml4ZWREaWdp
dGFsR2FpbkN1cnZlUmVnaW9uLklkZW50aXR5IikpOwotICBFWFBFQ1RfRVEoMCwgbWV0cmljczo6
TnVtU2FtcGxlcygKLSAgICAgICAgICAgICAgICAgICAiV2ViUlRDLkF1ZGlvLlRlc3QuRml4ZWRE
aWdpdGFsR2FpbkN1cnZlUmVnaW9uLktuZWUiKSk7Ci0gIEVYUEVDVF9FUSgwLCBtZXRyaWNzOjpO
dW1TYW1wbGVzKAotICAgICAgICAgICAgICAgICAgICJXZWJSVEMuQXVkaW8uVGVzdC5GaXhlZERp
Z2l0YWxHYWluQ3VydmVSZWdpb24uTGltaXRlciIpKTsKLSAgRVhQRUNUX0VRKDAsIG1ldHJpY3M6
Ok51bVNhbXBsZXMoCi0gICAgICAgICAgICAgICAgICAgIldlYlJUQy5BdWRpby5UZXN0LkZpeGVk
RGlnaXRhbEdhaW5DdXJ2ZVJlZ2lvbi5TYXR1cmF0aW9uIikpOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuY2MKaW5kZXggMzhlYjFkZTAzZjk1ODliYmQ3ZmVk
MDQ0YjgzMGU4OGZjMjhjMTQ3MC4uOGM0MzcxNzdlM2NiZmE2YmU1MDZhNmJkZjU2NzZhNzBmODli
MWNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZ2Fpbl9hcHBsaWVyLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2dhaW5fYXBwbGllci5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZ2Fpbl9hcHBsaWVyLmgiCiAKKyNpbmNs
dWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2FnYzJfY29tbW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9t
aW5tYXguaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZ2Fpbl9hcHBsaWVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuaAppbmRleCBlMjU2N2IxOWRiYmRjOWEzYmUxOGRi
NDE0NmM2YTJhYjAwOWRiOWNhLi43ZjlmMDBlMDc2MDBlMmM4MTg0ODllMmM2MTFlN2EzMjZiYzMw
MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBNT0RV
TEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9HQUlOX0FQUExJRVJfSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX0FHQzJfR0FJTl9BUFBMSUVSX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlv
X2ZyYW1lX3ZpZXcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9nYWluX2N1cnZlX2FwcGxpZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2N1cnZl
X2FwcGxpZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlY2EyMWI5OGU3MTgx
Nzg3MmEwNTQzYTBmMDllODg1OTFiZGFiNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmNjCisr
KyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0j
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVy
LmgiCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8
Y21hdGg+Ci0KLSNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLW5hbWVzcGFjZSB7Ci0KLS8v
IFRoaXMgY29uc3RhbnQgYWZmZWN0cyB0aGUgd2F5IHNjYWxpbmcgZmFjdG9ycyBhcmUgaW50ZXJw
b2xhdGVkIGZvciB0aGUgZmlyc3QKLS8vIHN1Yi1mcmFtZSBvZiBhIGZyYW1lLiBPbmx5IGluIHRo
ZSBjYXNlIGluIHdoaWNoIHRoZSBmaXJzdCBzdWItZnJhbWUgaGFzIGFuCi0vLyBlc3RpbWF0ZWQg
bGV2ZWwgd2hpY2ggaXMgZ3JlYXRlciB0aGFuIHRoZSB0aGF0IG9mIHRoZSBwcmV2aW91cyBhbmFs
eXplZAotLy8gc3ViLWZyYW1lLCBsaW5lYXIgaW50ZXJwb2xhdGlvbiBpcyByZXBsYWNlZCB3aXRo
IGEgcG93ZXIgZnVuY3Rpb24gd2hpY2gKLS8vIHJlZHVjZXMgdGhlIGNoYW5jZXMgb2Ygb3Zlci1z
aG9vdGluZyAoYW5kIGhlbmNlIHNhdHVyYXRpb24pLCBob3dldmVyIHJlZHVjaW5nCi0vLyB0aGUg
Zml4ZWQgZ2FpbiBlZmZlY3RpdmVuZXNzLgotY29uc3RleHByIGZsb2F0IGtBdHRhY2tGaXJzdFN1
YmZyYW1lSW50ZXJwb2xhdGlvblBvd2VyID0gOC5mOwotCi12b2lkIEludGVycG9sYXRlRmlyc3RT
dWJmcmFtZShmbG9hdCBsYXN0X2ZhY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IGN1cnJlbnRfZmFjdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRj
OjpBcnJheVZpZXc8ZmxvYXQ+IHN1YmZyYW1lKSB7Ci0gIGNvbnN0IGF1dG8gbiA9IHN1YmZyYW1l
LnNpemUoKTsKLSAgY29uc3RleHByIGF1dG8gcCA9IGtBdHRhY2tGaXJzdFN1YmZyYW1lSW50ZXJw
b2xhdGlvblBvd2VyOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgewotICAgIHN1
YmZyYW1lW2ldID0gc3RkOjpwb3coMS5mIC0gaSAvIG4sIHApICogKGxhc3RfZmFjdG9yIC0gY3Vy
cmVudF9mYWN0b3IpICsKLSAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZmFjdG9yOwotICB9Ci19
Ci0KLXZvaWQgQ29tcHV0ZVBlclNhbXBsZVN1YmZyYW1lRmFjdG9ycygKLSAgICBjb25zdCBzdGQ6
OmFycmF5PGZsb2F0LCBrU3ViRnJhbWVzSW5GcmFtZSArIDE+JiBzY2FsaW5nX2ZhY3RvcnMsCi0g
ICAgc2l6ZV90IHNhbXBsZXNfcGVyX2NoYW5uZWwsCi0gICAgcnRjOjpBcnJheVZpZXc8ZmxvYXQ+
IHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzKSB7Ci0gIGNvbnN0IHNpemVfdCBudW1fc3ViZnJh
bWVzID0gc2NhbGluZ19mYWN0b3JzLnNpemUoKSAtIDE7Ci0gIGNvbnN0IHNpemVfdCBzdWJmcmFt
ZV9zaXplID0KLSAgICAgIHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KHNhbXBsZXNfcGVyX2NoYW5uZWws
IG51bV9zdWJmcmFtZXMpOwotCi0gIC8vIEhhbmRsZSBmaXJzdCBzdWItZnJhbWUgZGlmZmVyZW50
bHkgaW4gY2FzZSBvZiBhdHRhY2suCi0gIGNvbnN0IGJvb2wgaXNfYXR0YWNrID0gc2NhbGluZ19m
YWN0b3JzWzBdID4gc2NhbGluZ19mYWN0b3JzWzFdOwotICBpZiAoaXNfYXR0YWNrKSB7Ci0gICAg
SW50ZXJwb2xhdGVGaXJzdFN1YmZyYW1lKAotICAgICAgICBzY2FsaW5nX2ZhY3RvcnNbMF0sIHNj
YWxpbmdfZmFjdG9yc1sxXSwKLSAgICAgICAgcnRjOjpBcnJheVZpZXc8ZmxvYXQ+KAotICAgICAg
ICAgICAgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMuc3VidmlldygwLCBzdWJmcmFtZV9zaXpl
KSkpOwotICB9Ci0KLSAgZm9yIChzaXplX3QgaSA9IGlzX2F0dGFjayA/IDEgOiAwOyBpIDwgbnVt
X3N1YmZyYW1lczsgKytpKSB7Ci0gICAgY29uc3Qgc2l6ZV90IHN1YmZyYW1lX3N0YXJ0ID0gaSAq
IHN1YmZyYW1lX3NpemU7Ci0gICAgY29uc3QgZmxvYXQgc2NhbGluZ19zdGFydCA9IHNjYWxpbmdf
ZmFjdG9yc1tpXTsKLSAgICBjb25zdCBmbG9hdCBzY2FsaW5nX2VuZCA9IHNjYWxpbmdfZmFjdG9y
c1tpICsgMV07Ci0gICAgY29uc3QgZmxvYXQgc2NhbGluZ19kaWZmID0gKHNjYWxpbmdfZW5kIC0g
c2NhbGluZ19zdGFydCkgLyBzdWJmcmFtZV9zaXplOwotICAgIGZvciAoc2l6ZV90IGogPSAwOyBq
IDwgc3ViZnJhbWVfc2l6ZTsgKytqKSB7Ci0gICAgICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9y
c1tzdWJmcmFtZV9zdGFydCArIGpdID0KLSAgICAgICAgICBzY2FsaW5nX3N0YXJ0ICsgc2NhbGlu
Z19kaWZmICogajsKLSAgICB9Ci0gIH0KLX0KLQotdm9pZCBTY2FsZVNhbXBsZXMocnRjOjpBcnJh
eVZpZXc8Y29uc3QgZmxvYXQ+IHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzLAotICAgICAgICAg
ICAgICAgICAgQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IHNpZ25hbCkgewotICBjb25zdCBzaXplX3Qg
c2FtcGxlc19wZXJfY2hhbm5lbCA9IHNpZ25hbC5zYW1wbGVzX3Blcl9jaGFubmVsKCk7Ci0gIFJU
Q19EQ0hFQ0tfRVEoc2FtcGxlc19wZXJfY2hhbm5lbCwgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3Rv
cnMuc2l6ZSgpKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaWduYWwubnVtX2NoYW5uZWxz
KCk7ICsraSkgewotICAgIGF1dG8gY2hhbm5lbCA9IHNpZ25hbC5jaGFubmVsKGkpOwotICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgc2FtcGxlc19wZXJfY2hhbm5lbDsgKytqKSB7Ci0gICAgICBj
aGFubmVsW2pdICo9IHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzW2pdOwotICAgIH0KLSAgfQot
fQotCi19ICAvLyBuYW1lc3BhY2UKLQotR2FpbkN1cnZlQXBwbGllcjo6R2FpbkN1cnZlQXBwbGll
cihzaXplX3Qgc2FtcGxlX3JhdGVfaHosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFwbURhdGFEdW1wZXIqIGFwbV9kYXRhX2R1bXBlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaGlzdG9ncmFtX25hbWUpCi0gICAgOiBpbnRlcnBf
Z2Fpbl9jdXJ2ZV8oYXBtX2RhdGFfZHVtcGVyLCBoaXN0b2dyYW1fbmFtZSksCi0gICAgICBsZXZl
bF9lc3RpbWF0b3JfKHNhbXBsZV9yYXRlX2h6LCBhcG1fZGF0YV9kdW1wZXIpLAotICAgICAgYXBt
X2RhdGFfZHVtcGVyXyhhcG1fZGF0YV9kdW1wZXIpIHt9Ci0KLUdhaW5DdXJ2ZUFwcGxpZXI6On5H
YWluQ3VydmVBcHBsaWVyKCkgPSBkZWZhdWx0OwotCi12b2lkIEdhaW5DdXJ2ZUFwcGxpZXI6OlBy
b2Nlc3MoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IHNpZ25hbCkgewotICBjb25zdCBhdXRvIGxldmVs
X2VzdGltYXRlID0gbGV2ZWxfZXN0aW1hdG9yXy5Db21wdXRlTGV2ZWwoc2lnbmFsKTsKLQotICBS
VENfRENIRUNLX0VRKGxldmVsX2VzdGltYXRlLnNpemUoKSArIDEsIHNjYWxpbmdfZmFjdG9yc18u
c2l6ZSgpKTsKLSAgc2NhbGluZ19mYWN0b3JzX1swXSA9IGxhc3Rfc2NhbGluZ19mYWN0b3JfOwot
ICBzdGQ6OnRyYW5zZm9ybShsZXZlbF9lc3RpbWF0ZS5iZWdpbigpLCBsZXZlbF9lc3RpbWF0ZS5l
bmQoKSwKLSAgICAgICAgICAgICAgICAgc2NhbGluZ19mYWN0b3JzXy5iZWdpbigpICsgMSwgW3Ro
aXNdKGZsb2F0IHgpIHsKLSAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJwX2dhaW5fY3Vy
dmVfLkxvb2tVcEdhaW5Ub0FwcGx5KHgpOwotICAgICAgICAgICAgICAgICB9KTsKLQotICBjb25z
dCBzaXplX3Qgc2FtcGxlc19wZXJfY2hhbm5lbCA9IHNpZ25hbC5zYW1wbGVzX3Blcl9jaGFubmVs
KCk7Ci0gIFJUQ19EQ0hFQ0tfTEUoc2FtcGxlc19wZXJfY2hhbm5lbCwga01heGltYWxOdW1iZXJP
ZlNhbXBsZXNQZXJDaGFubmVsKTsKLQotICBhdXRvIHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3Jz
ID0gcnRjOjpBcnJheVZpZXc8ZmxvYXQ+KAotICAgICAgJnBlcl9zYW1wbGVfc2NhbGluZ19mYWN0
b3JzX1swXSwgc2FtcGxlc19wZXJfY2hhbm5lbCk7Ci0gIENvbXB1dGVQZXJTYW1wbGVTdWJmcmFt
ZUZhY3RvcnMoc2NhbGluZ19mYWN0b3JzXywgc2FtcGxlc19wZXJfY2hhbm5lbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9ycyk7Ci0g
IFNjYWxlU2FtcGxlcyhwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9ycywgc2lnbmFsKTsKLQotICBs
YXN0X3NjYWxpbmdfZmFjdG9yXyA9IHNjYWxpbmdfZmFjdG9yc18uYmFjaygpOwotCi0gIC8vIER1
bXAgZGF0YSBmb3IgZGVidWcuCi0gIGFwbV9kYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFnYzJfZ2Fp
bl9jdXJ2ZV9hcHBsaWVyX3NjYWxpbmdfZmFjdG9ycyIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2FtcGxlc19wZXJfY2hhbm5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
ZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc18uZGF0YSgpKTsKLX0KLQotSW50ZXJwb2xhdGVkR2Fp
bkN1cnZlOjpTdGF0cyBHYWluQ3VydmVBcHBsaWVyOjpHZXRHYWluQ3VydmVTdGF0cygpIGNvbnN0
IHsKLSAgcmV0dXJuIGludGVycF9nYWluX2N1cnZlXy5nZXRfc3RhdHMoKTsKLX0KLQotdm9pZCBH
YWluQ3VydmVBcHBsaWVyOjpTZXRTYW1wbGVSYXRlKHNpemVfdCBzYW1wbGVfcmF0ZV9oeikgewot
ICBsZXZlbF9lc3RpbWF0b3JfLlNldFNhbXBsZVJhdGUoc2FtcGxlX3JhdGVfaHopOwotICAvLyBD
aGVjayB0aGF0IHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzXyBpcyBsYXJnZSBlbm91Z2guCi0g
IFJUQ19EQ0hFQ0tfTEUoc2FtcGxlX3JhdGVfaHosCi0gICAgICAgICAgICAgICAga01heGltYWxO
dW1iZXJPZlNhbXBsZXNQZXJDaGFubmVsICogMTAwMCAvIGtGcmFtZUR1cmF0aW9uTXMpOwotfQot
Ci12b2lkIEdhaW5DdXJ2ZUFwcGxpZXI6OlJlc2V0KCkgewotICBsZXZlbF9lc3RpbWF0b3JfLlJl
c2V0KCk7Ci19Ci0KLWZsb2F0IEdhaW5DdXJ2ZUFwcGxpZXI6Okxhc3RBdWRpb0xldmVsKCkgY29u
c3QgewotICByZXR1cm4gbGV2ZWxfZXN0aW1hdG9yXy5MYXN0QXVkaW9MZXZlbCgpOwotfQotCi19
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2N1
cnZlX2FwcGxpZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fY3VydmVfYXBwbGllci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGJlMTllMDY5NDRjODNjMTJlZDY5NWNiYzUwMDcy
ZGQ4ZWJhMzRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL2dhaW5fY3VydmVfYXBwbGllci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FHQzJfR0FJTl9DVVJWRV9BUFBMSUVSX0hfCi0jZGVmaW5lIE1PRFVMRVNf
QVVESU9fUFJPQ0VTU0lOR19BR0MyX0dBSU5fQ1VSVkVfQVBQTElFUl9IXwotCi0jaW5jbHVkZSA8
dmVjdG9yPgotCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRf
ZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX2ZyYW1lX3ZpZXcuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3Mg
QXBtRGF0YUR1bXBlcjsKLQotY2xhc3MgR2FpbkN1cnZlQXBwbGllciB7Ci0gcHVibGljOgotICBH
YWluQ3VydmVBcHBsaWVyKHNpemVfdCBzYW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICAgICAgICAg
ICBBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIsCi0gICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgaGlzdG9ncmFtX25hbWVfcHJlZml4KTsKLQotICB+R2FpbkN1cnZlQXBwbGllcigp
OwotCi0gIHZvaWQgUHJvY2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFsKTsKLSAgSW50
ZXJwb2xhdGVkR2FpbkN1cnZlOjpTdGF0cyBHZXRHYWluQ3VydmVTdGF0cygpIGNvbnN0OwotCi0g
IC8vIFN1cHBvcnRlZCByYXRlcyBtdXN0IGJlCi0gIC8vICogc3VwcG9ydGVkIGJ5IEZpeGVkRGln
aXRhbExldmVsRXN0aW1hdG9yCi0gIC8vICogYmVsb3cga01heGltYWxOdW1iZXJPZlNhbXBsZXNQ
ZXJDaGFubmVsKjEwMDAva0ZyYW1lRHVyYXRpb25NcwotICAvLyAgIHNvIHRoYXQgc2FtcGxlc19w
ZXJfY2hhbm5lbCBmaXQgaW4gdGhlCi0gIC8vICAgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNf
IGFycmF5LgotICB2b2lkIFNldFNhbXBsZVJhdGUoc2l6ZV90IHNhbXBsZV9yYXRlX2h6KTsKLQot
ICAvLyBSZXNldHMgdGhlIGludGVybmFsIHN0YXRlLgotICB2b2lkIFJlc2V0KCk7Ci0KLSAgZmxv
YXQgTGFzdEF1ZGlvTGV2ZWwoKSBjb25zdDsKLQotIHByaXZhdGU6Ci0gIGNvbnN0IEludGVycG9s
YXRlZEdhaW5DdXJ2ZSBpbnRlcnBfZ2Fpbl9jdXJ2ZV87Ci0gIEZpeGVkRGlnaXRhbExldmVsRXN0
aW1hdG9yIGxldmVsX2VzdGltYXRvcl87Ci0gIEFwbURhdGFEdW1wZXIqIGNvbnN0IGFwbV9kYXRh
X2R1bXBlcl8gPSBudWxscHRyOwotCi0gIC8vIFdvcmsgYXJyYXkgY29udGFpbmluZyB0aGUgc3Vi
LWZyYW1lIHNjYWxpbmcgZmFjdG9ycyB0byBiZSBpbnRlcnBvbGF0ZWQuCi0gIHN0ZDo6YXJyYXk8
ZmxvYXQsIGtTdWJGcmFtZXNJbkZyYW1lICsgMT4gc2NhbGluZ19mYWN0b3JzXyA9IHt9OwotICBz
dGQ6OmFycmF5PGZsb2F0LCBrTWF4aW1hbE51bWJlck9mU2FtcGxlc1BlckNoYW5uZWw+Ci0gICAg
ICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc18gPSB7fTsKLSAgZmxvYXQgbGFzdF9zY2FsaW5n
X2ZhY3Rvcl8gPSAxLmY7Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihHYWluQ3Vy
dmVBcHBsaWVyKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9HQUlOX0NVUlZFX0FQUExJRVJfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fY3VydmVfYXBwbGllcl91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2dhaW5fY3VydmVfYXBwbGllcl91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGY3NWY2MmM0MDdjYmIzZDk5MDQ4ZjQwODJiYmM3YzQ5YTFmZjBj
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9nYWluX2N1cnZlX2FwcGxpZXJfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAt
MSw2MCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQot
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fY3VydmVfYXBwbGllci5oIgotCi0jaW5jbHVkZSAi
Y29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvYWdjMl90ZXN0aW5nX2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZlY3Rvcl9mbG9hdF9mcmFtZS5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1URVNUKEdh
aW5DdXJ2ZUFwcGxpZXIsIEdhaW5DdXJ2ZUFwcGxpZXJTaG91bGRDb25zdHJ1Y3RBbmRSdW4pIHsK
LSAgY29uc3QgaW50IHNhbXBsZV9yYXRlX2h6ID0gNDgwMDA7Ci0gIEFwbURhdGFEdW1wZXIgYXBt
X2RhdGFfZHVtcGVyKDApOwotCi0gIEdhaW5DdXJ2ZUFwcGxpZXIgZ2Fpbl9jdXJ2ZV9hcHBsaWVy
KHNhbXBsZV9yYXRlX2h6LCAmYXBtX2RhdGFfZHVtcGVyLCAiIik7Ci0KLSAgVmVjdG9yRmxvYXRG
cmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUoMSwgc2FtcGxlX3JhdGVfaHogLyAxMDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtNYXhBYnNGbG9hdFMx
NlZhbHVlKTsKLSAgZ2Fpbl9jdXJ2ZV9hcHBsaWVyLlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0
X2ZyYW1lLmZsb2F0X2ZyYW1lX3ZpZXcoKSk7Ci19Ci0KLVRFU1QoR2FpbkN1cnZlQXBwbGllciwg
T3V0cHV0Vm9sdW1lQWJvdmVUaHJlc2hvbGQpIHsKLSAgY29uc3QgaW50IHNhbXBsZV9yYXRlX2h6
ID0gNDgwMDA7Ci0gIGNvbnN0IGZsb2F0IGlucHV0X2xldmVsID0KLSAgICAgIChrTWF4QWJzRmxv
YXRTMTZWYWx1ZSArIERiZnNUb0Zsb2F0UzE2KHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERi
RnMpKSAvCi0gICAgICAyLmY7Ci0gIEFwbURhdGFEdW1wZXIgYXBtX2RhdGFfZHVtcGVyKDApOwot
Ci0gIEdhaW5DdXJ2ZUFwcGxpZXIgZ2Fpbl9jdXJ2ZV9hcHBsaWVyKHNhbXBsZV9yYXRlX2h6LCAm
YXBtX2RhdGFfZHVtcGVyLCAiIik7Ci0KLSAgLy8gR2l2ZSB0aGUgbGV2ZWwgZXN0aW1hdG9yIHRp
bWUgdG8gYWRhcHQuCi0gIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7Ci0gICAgVmVjdG9y
RmxvYXRGcmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUoMSwgc2FtcGxlX3JhdGVfaHogLyAx
MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRf
bGV2ZWwpOwotICAgIGdhaW5fY3VydmVfYXBwbGllci5Qcm9jZXNzKHZlY3RvcnNfd2l0aF9mbG9h
dF9mcmFtZS5mbG9hdF9mcmFtZV92aWV3KCkpOwotICB9Ci0KLSAgVmVjdG9yRmxvYXRGcmFtZSB2
ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUoMSwgc2FtcGxlX3JhdGVfaHogLyAxMDAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2xldmVsKTsKLSAgZ2Fp
bl9jdXJ2ZV9hcHBsaWVyLlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lLmZsb2F0X2Zy
YW1lX3ZpZXcoKSk7Ci0gIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjaGFubmVsID0KLSAg
ICAgIHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZS5mbG9hdF9mcmFtZV92aWV3KCkuY2hhbm5lbCgw
KTsKLQotICBmb3IgKGNvbnN0IGF1dG8mIHNhbXBsZSA6IGNoYW5uZWwpIHsKLSAgICBFWFBFQ1Rf
TFQoMC45ZiAqIGtNYXhBYnNGbG9hdFMxNlZhbHVlLCBzYW1wbGUpOwotICB9Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ludGVycG9sYXRl
ZF9nYWluX2N1cnZlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUu
Y2MKaW5kZXggNzNlNmE4ZWNjMzZmMTU2MGM4MjUwOTc5N2ZmZDU1ODc1ZjhiZDBmNy4uZjVkNmI0
NzE2OWMyMjI2ZDRkMWMyZGQxMjViMzk2ZDAwYjc5MmM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvaW50
ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MKQEAgLTEwLDEwICsxMCwxMiBAQAogCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuaCIK
IAorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKwogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvaW50ZXJw
b2xhdGVkX2dhaW5fY3VydmVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0
ZWRfZ2Fpbl9jdXJ2ZV91bml0dGVzdC5jYwppbmRleCBkZDY5NjMxM2FlMjY2NTc0YTRiODUzMWVl
OWZiYjk2NDUwY2MyYjBhLi5hOGUwZjIzNjFjOTFhMTIxMzA2NzgwN2UwNDk1OGQwMWY1OGY3ODc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZV91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZV91bml0
dGVzdC5jYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5
X3ZpZXcuaCIKQEAgLTE2LDcgKzE3LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2NvbXB1dGVfaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIgot
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3VydmUu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9k
dW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9ndW5pdC5oIgpAQCAtMjcsNyArMjgsOCBAQCBuYW1lc3BhY2UgewogY29uc3RleHByIGRvdWJs
ZSBrTGV2ZWxFcHNpbG9uID0gMWUtMiAqIGtNYXhBYnNGbG9hdFMxNlZhbHVlOwogY29uc3RleHBy
IGZsb2F0IGtJbnRlcnBvbGF0ZWRHYWluQ3VydmVUb2xlcmFuY2UgPSAxLmYgLyAzMjc2OC5mOwog
QXBtRGF0YUR1bXBlciBhcG1fZGF0YV9kdW1wZXIoMCk7Ci1jb25zdCBMaW1pdGVyIGxpbWl0ZXI7
CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxMaW1pdGVyRGJH
YWluQ3VydmU+Ojp2YWx1ZSwgIiIpOworY29uc3QgTGltaXRlckRiR2FpbkN1cnZlIGxpbWl0ZXI7
CiAKIH0gIC8vIG5hbWVzcGFjZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlci5jYwppbmRleCBkMmI5ODc3YmUxMWVkNGEzNjFk
ZTkzZmE2ZGFkNzM1MjBhYTAwY2RmLi4xNTg5ZjA3NDA0ZDk5MDAzOWRkYjkzZmUwNjNjNDFkYmVh
NWVjZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2xpbWl0ZXIuY2MKQEAgLTEwLDEyOCArMTAsMTQxIEBACiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyLmgiCiAKKyNpbmNsdWRlIDxhbGdv
cml0aG0+CisjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8Y21hdGg+CiAKLSNpbmNsdWRlICJj
b21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191dGlsLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3Zp
ZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1v
bi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRh
X2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNw
YWNlIHsKIAotZG91YmxlIENvbXB1dGVLbmVlU3RhcnQoZG91YmxlIG1heF9pbnB1dF9sZXZlbF9k
YiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBrbmVlX3Ntb290aG5lc3NfZGIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgY29tcHJlc3Npb25fcmF0aW8pIHsKLSAgUlRD
X0NIRUNLX0xUKChjb21wcmVzc2lvbl9yYXRpbyAtIDEuMCkgKiBrbmVlX3Ntb290aG5lc3NfZGIg
LwotICAgICAgICAgICAgICAgICAgICgyLjAgKiBjb21wcmVzc2lvbl9yYXRpbyksCi0gICAgICAg
ICAgICAgICBtYXhfaW5wdXRfbGV2ZWxfZGIpOwotICByZXR1cm4gLWtuZWVfc21vb3RobmVzc19k
YiAvIDIuMCAtCi0gICAgICAgICBtYXhfaW5wdXRfbGV2ZWxfZGIgLyAoY29tcHJlc3Npb25fcmF0
aW8gLSAxLjApOworLy8gVGhpcyBjb25zdGFudCBhZmZlY3RzIHRoZSB3YXkgc2NhbGluZyBmYWN0
b3JzIGFyZSBpbnRlcnBvbGF0ZWQgZm9yIHRoZSBmaXJzdAorLy8gc3ViLWZyYW1lIG9mIGEgZnJh
bWUuIE9ubHkgaW4gdGhlIGNhc2UgaW4gd2hpY2ggdGhlIGZpcnN0IHN1Yi1mcmFtZSBoYXMgYW4K
Ky8vIGVzdGltYXRlZCBsZXZlbCB3aGljaCBpcyBncmVhdGVyIHRoYW4gdGhlIHRoYXQgb2YgdGhl
IHByZXZpb3VzIGFuYWx5emVkCisvLyBzdWItZnJhbWUsIGxpbmVhciBpbnRlcnBvbGF0aW9uIGlz
IHJlcGxhY2VkIHdpdGggYSBwb3dlciBmdW5jdGlvbiB3aGljaAorLy8gcmVkdWNlcyB0aGUgY2hh
bmNlcyBvZiBvdmVyLXNob290aW5nIChhbmQgaGVuY2Ugc2F0dXJhdGlvbiksIGhvd2V2ZXIgcmVk
dWNpbmcKKy8vIHRoZSBmaXhlZCBnYWluIGVmZmVjdGl2ZW5lc3MuCitjb25zdGV4cHIgZmxvYXQg
a0F0dGFja0ZpcnN0U3ViZnJhbWVJbnRlcnBvbGF0aW9uUG93ZXIgPSA4LmY7CisKK3ZvaWQgSW50
ZXJwb2xhdGVGaXJzdFN1YmZyYW1lKGZsb2F0IGxhc3RfZmFjdG9yLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgY3VycmVudF9mYWN0b3IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OkFycmF5VmlldzxmbG9hdD4gc3ViZnJhbWUpIHsKKyAgY29uc3QgYXV0
byBuID0gc3ViZnJhbWUuc2l6ZSgpOworICBjb25zdGV4cHIgYXV0byBwID0ga0F0dGFja0ZpcnN0
U3ViZnJhbWVJbnRlcnBvbGF0aW9uUG93ZXI7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsg
KytpKSB7CisgICAgc3ViZnJhbWVbaV0gPSBzdGQ6OnBvdygxLmYgLSBpIC8gbiwgcCkgKiAobGFz
dF9mYWN0b3IgLSBjdXJyZW50X2ZhY3RvcikgKworICAgICAgICAgICAgICAgICAgY3VycmVudF9m
YWN0b3I7CisgIH0KIH0KIAotc3RkOjphcnJheTxkb3VibGUsIDM+IENvbXB1dGVLbmVlUmVnaW9u
UG9seW5vbWlhbChkb3VibGUga25lZV9zdGFydF9kYmZzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUga25lZV9zbW9vdGhuZXNzX2RiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg
Y29tcHJlc3Npb25fcmF0aW8pIHsKLSAgY29uc3QgZG91YmxlIGEgPSAoMS4wIC0gY29tcHJlc3Np
b25fcmF0aW8pIC8KLSAgICAgICAgICAgICAgICAgICAoMi4wICoga25lZV9zbW9vdGhuZXNzX2Ri
ICogY29tcHJlc3Npb25fcmF0aW8pOwotICBjb25zdCBkb3VibGUgYiA9IDEuMCAtIDIuMCAqIGEg
KiBrbmVlX3N0YXJ0X2RiZnM7Ci0gIGNvbnN0IGRvdWJsZSBjID0gYSAqIGtuZWVfc3RhcnRfZGJm
cyAqIGtuZWVfc3RhcnRfZGJmczsKLSAgcmV0dXJuIHt7YSwgYiwgY319OwotfQordm9pZCBDb21w
dXRlUGVyU2FtcGxlU3ViZnJhbWVGYWN0b3JzKAorICAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQs
IGtTdWJGcmFtZXNJbkZyYW1lICsgMT4mIHNjYWxpbmdfZmFjdG9ycywKKyAgICBzaXplX3Qgc2Ft
cGxlc19wZXJfY2hhbm5lbCwKKyAgICBydGM6OkFycmF5VmlldzxmbG9hdD4gcGVyX3NhbXBsZV9z
Y2FsaW5nX2ZhY3RvcnMpIHsKKyAgY29uc3Qgc2l6ZV90IG51bV9zdWJmcmFtZXMgPSBzY2FsaW5n
X2ZhY3RvcnMuc2l6ZSgpIC0gMTsKKyAgY29uc3Qgc2l6ZV90IHN1YmZyYW1lX3NpemUgPQorICAg
ICAgcnRjOjpDaGVja2VkRGl2RXhhY3Qoc2FtcGxlc19wZXJfY2hhbm5lbCwgbnVtX3N1YmZyYW1l
cyk7CisKKyAgLy8gSGFuZGxlIGZpcnN0IHN1Yi1mcmFtZSBkaWZmZXJlbnRseSBpbiBjYXNlIG9m
IGF0dGFjay4KKyAgY29uc3QgYm9vbCBpc19hdHRhY2sgPSBzY2FsaW5nX2ZhY3RvcnNbMF0gPiBz
Y2FsaW5nX2ZhY3RvcnNbMV07CisgIGlmIChpc19hdHRhY2spIHsKKyAgICBJbnRlcnBvbGF0ZUZp
cnN0U3ViZnJhbWUoCisgICAgICAgIHNjYWxpbmdfZmFjdG9yc1swXSwgc2NhbGluZ19mYWN0b3Jz
WzFdLAorICAgICAgICBydGM6OkFycmF5VmlldzxmbG9hdD4oCisgICAgICAgICAgICBwZXJfc2Ft
cGxlX3NjYWxpbmdfZmFjdG9ycy5zdWJ2aWV3KDAsIHN1YmZyYW1lX3NpemUpKSk7CisgIH0KIAot
ZG91YmxlIENvbXB1dGVMaW1pdGVyRDEoZG91YmxlIG1heF9pbnB1dF9sZXZlbF9kYiwgZG91Ymxl
IGNvbXByZXNzaW9uX3JhdGlvKSB7Ci0gIHJldHVybiAoc3RkOjpwb3coMTAuMCwgLW1heF9pbnB1
dF9sZXZlbF9kYiAvICgyMC4wICogY29tcHJlc3Npb25fcmF0aW8pKSAqCi0gICAgICAgICAgKDEu
MCAtIGNvbXByZXNzaW9uX3JhdGlvKSAvIGNvbXByZXNzaW9uX3JhdGlvKSAvCi0gICAgICAgICBr
TWF4QWJzRmxvYXRTMTZWYWx1ZTsKKyAgZm9yIChzaXplX3QgaSA9IGlzX2F0dGFjayA/IDEgOiAw
OyBpIDwgbnVtX3N1YmZyYW1lczsgKytpKSB7CisgICAgY29uc3Qgc2l6ZV90IHN1YmZyYW1lX3N0
YXJ0ID0gaSAqIHN1YmZyYW1lX3NpemU7CisgICAgY29uc3QgZmxvYXQgc2NhbGluZ19zdGFydCA9
IHNjYWxpbmdfZmFjdG9yc1tpXTsKKyAgICBjb25zdCBmbG9hdCBzY2FsaW5nX2VuZCA9IHNjYWxp
bmdfZmFjdG9yc1tpICsgMV07CisgICAgY29uc3QgZmxvYXQgc2NhbGluZ19kaWZmID0gKHNjYWxp
bmdfZW5kIC0gc2NhbGluZ19zdGFydCkgLyBzdWJmcmFtZV9zaXplOworICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgc3ViZnJhbWVfc2l6ZTsgKytqKSB7CisgICAgICBwZXJfc2FtcGxlX3NjYWxp
bmdfZmFjdG9yc1tzdWJmcmFtZV9zdGFydCArIGpdID0KKyAgICAgICAgICBzY2FsaW5nX3N0YXJ0
ICsgc2NhbGluZ19kaWZmICogajsKKyAgICB9CisgIH0KIH0KIAotY29uc3RleHByIGRvdWJsZSBD
b21wdXRlTGltaXRlckQyKGRvdWJsZSBjb21wcmVzc2lvbl9yYXRpbykgewotICByZXR1cm4gKDEu
MCAtIDIuMCAqIGNvbXByZXNzaW9uX3JhdGlvKSAvIGNvbXByZXNzaW9uX3JhdGlvOwordm9pZCBT
Y2FsZVNhbXBsZXMocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHBlcl9zYW1wbGVfc2NhbGlu
Z19mYWN0b3JzLAorICAgICAgICAgICAgICAgICAgQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IHNpZ25h
bCkgeworICBjb25zdCBzaXplX3Qgc2FtcGxlc19wZXJfY2hhbm5lbCA9IHNpZ25hbC5zYW1wbGVz
X3Blcl9jaGFubmVsKCk7CisgIFJUQ19EQ0hFQ0tfRVEoc2FtcGxlc19wZXJfY2hhbm5lbCwgcGVy
X3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMuc2l6ZSgpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaWduYWwubnVtX2NoYW5uZWxzKCk7ICsraSkgeworICAgIGF1dG8gY2hhbm5lbCA9IHNpZ25h
bC5jaGFubmVsKGkpOworICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgc2FtcGxlc19wZXJfY2hh
bm5lbDsgKytqKSB7CisgICAgICBjaGFubmVsW2pdID0gcnRjOjpTYWZlQ2xhbXAoY2hhbm5lbFtq
XSAqIHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzW2pdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtNaW5GbG9hdFMxNlZhbHVlLCBrTWF4RmxvYXRTMTZWYWx1ZSk7CisgICAg
fQorICB9CiB9CiAKLWRvdWJsZSBDb21wdXRlTGltaXRlckkyKGRvdWJsZSBtYXhfaW5wdXRfbGV2
ZWxfZGIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgY29tcHJlc3Npb25fcmF0aW8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxKSB7
Ci0gIFJUQ19DSEVDS19ORShnYWluX2N1cnZlX2xpbWl0ZXJfaTEsIDAuZik7Ci0gIHJldHVybiBz
dGQ6OnBvdygxMC4wLCAtbWF4X2lucHV0X2xldmVsX2RiIC8gKDIwLjAgKiBjb21wcmVzc2lvbl9y
YXRpbykpIC8KLSAgICAgICAgIGdhaW5fY3VydmVfbGltaXRlcl9pMSAvCi0gICAgICAgICBzdGQ6
OnBvdyhrTWF4QWJzRmxvYXRTMTZWYWx1ZSwgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxIC0gMSk7Cit2
b2lkIENoZWNrTGltaXRlclNhbXBsZVJhdGUoc2l6ZV90IHNhbXBsZV9yYXRlX2h6KSB7CisgIC8v
IENoZWNrIHRoYXQgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNfIGlzIGxhcmdlIGVub3VnaC4K
KyAgUlRDX0RDSEVDS19MRShzYW1wbGVfcmF0ZV9oeiwKKyAgICAgICAgICAgICAgICBrTWF4aW1h
bE51bWJlck9mU2FtcGxlc1BlckNoYW5uZWwgKiAxMDAwIC8ga0ZyYW1lRHVyYXRpb25Ncyk7CiB9
CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1MaW1pdGVyOjpMaW1pdGVyKCkKLSAgICA6IG1heF9pbnB1
dF9sZXZlbF9saW5lYXJfKERiZnNUb0Zsb2F0UzE2KG1heF9pbnB1dF9sZXZlbF9kYl8pKSwKLSAg
ICAgIGtuZWVfc3RhcnRfZGJmc18oQ29tcHV0ZUtuZWVTdGFydChtYXhfaW5wdXRfbGV2ZWxfZGJf
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtuZWVfc21vb3RobmVz
c19kYl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Np
b25fcmF0aW9fKSksCi0gICAgICBrbmVlX3N0YXJ0X2xpbmVhcl8oRGJmc1RvRmxvYXRTMTYoa25l
ZV9zdGFydF9kYmZzXykpLAotICAgICAgbGltaXRlcl9zdGFydF9kYmZzXyhrbmVlX3N0YXJ0X2Ri
ZnNfICsga25lZV9zbW9vdGhuZXNzX2RiXyksCi0gICAgICBsaW1pdGVyX3N0YXJ0X2xpbmVhcl8o
RGJmc1RvRmxvYXRTMTYobGltaXRlcl9zdGFydF9kYmZzXykpLAotICAgICAga25lZV9yZWdpb25f
cG9seW5vbWlhbF8oQ29tcHV0ZUtuZWVSZWdpb25Qb2x5bm9taWFsKGtuZWVfc3RhcnRfZGJmc18s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga25lZV9zbW9vdGhuZXNzX2RiXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbl9yYXRpb18pKSwKLSAgICAgIGdh
aW5fY3VydmVfbGltaXRlcl9kMV8oCi0gICAgICAgICAgQ29tcHV0ZUxpbWl0ZXJEMShtYXhfaW5w
dXRfbGV2ZWxfZGJfLCBjb21wcmVzc2lvbl9yYXRpb18pKSwKLSAgICAgIGdhaW5fY3VydmVfbGlt
aXRlcl9kMl8oQ29tcHV0ZUxpbWl0ZXJEMihjb21wcmVzc2lvbl9yYXRpb18pKSwKLSAgICAgIGdh
aW5fY3VydmVfbGltaXRlcl9pMV8oMS4wIC8gY29tcHJlc3Npb25fcmF0aW9fKSwKLSAgICAgIGdh
aW5fY3VydmVfbGltaXRlcl9pMl8oQ29tcHV0ZUxpbWl0ZXJJMihtYXhfaW5wdXRfbGV2ZWxfZGJf
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNz
aW9uX3JhdGlvXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnYWluX2N1cnZlX2xpbWl0ZXJfaTFfKSkgewotICBzdGF0aWNfYXNzZXJ0KGtuZWVfc21vb3Ro
bmVzc19kYl8gPiAwLjBmLCAiIik7Ci0gIHN0YXRpY19hc3NlcnQoY29tcHJlc3Npb25fcmF0aW9f
ID4gMS4wZiwgIiIpOwotICBSVENfQ0hFQ0tfR0UobWF4X2lucHV0X2xldmVsX2RiXywga25lZV9z
dGFydF9kYmZzXyArIGtuZWVfc21vb3RobmVzc19kYl8pOworTGltaXRlcjo6TGltaXRlcihzaXpl
X3Qgc2FtcGxlX3JhdGVfaHosCisgICAgICAgICAgICAgICAgIEFwbURhdGFEdW1wZXIqIGFwbV9k
YXRhX2R1bXBlciwKKyAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaGlzdG9ncmFtX25hbWUp
CisgICAgOiBpbnRlcnBfZ2Fpbl9jdXJ2ZV8oYXBtX2RhdGFfZHVtcGVyLCBoaXN0b2dyYW1fbmFt
ZSksCisgICAgICBsZXZlbF9lc3RpbWF0b3JfKHNhbXBsZV9yYXRlX2h6LCBhcG1fZGF0YV9kdW1w
ZXIpLAorICAgICAgYXBtX2RhdGFfZHVtcGVyXyhhcG1fZGF0YV9kdW1wZXIpIHsKKyAgQ2hlY2tM
aW1pdGVyU2FtcGxlUmF0ZShzYW1wbGVfcmF0ZV9oeik7CiB9CiAKLWNvbnN0ZXhwciBkb3VibGUg
TGltaXRlcjo6bWF4X2lucHV0X2xldmVsX2RiXzsKLWNvbnN0ZXhwciBkb3VibGUgTGltaXRlcjo6
a25lZV9zbW9vdGhuZXNzX2RiXzsKLWNvbnN0ZXhwciBkb3VibGUgTGltaXRlcjo6Y29tcHJlc3Np
b25fcmF0aW9fOworTGltaXRlcjo6fkxpbWl0ZXIoKSA9IGRlZmF1bHQ7CiAKLWRvdWJsZSBMaW1p
dGVyOjpHZXRPdXRwdXRMZXZlbERiZnMoZG91YmxlIGlucHV0X2xldmVsX2RiZnMpIGNvbnN0IHsK
LSAgaWYgKGlucHV0X2xldmVsX2RiZnMgPCBrbmVlX3N0YXJ0X2RiZnNfKSB7Ci0gICAgcmV0dXJu
IGlucHV0X2xldmVsX2RiZnM7Ci0gIH0gZWxzZSBpZiAoaW5wdXRfbGV2ZWxfZGJmcyA8IGxpbWl0
ZXJfc3RhcnRfZGJmc18pIHsKLSAgICByZXR1cm4gR2V0S25lZVJlZ2lvbk91dHB1dExldmVsRGJm
cyhpbnB1dF9sZXZlbF9kYmZzKTsKLSAgfQotICByZXR1cm4gR2V0Q29tcHJlc3NvclJlZ2lvbk91
dHB1dExldmVsRGJmcyhpbnB1dF9sZXZlbF9kYmZzKTsKLX0KK3ZvaWQgTGltaXRlcjo6UHJvY2Vz
cyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFsKSB7CisgIGNvbnN0IGF1dG8gbGV2ZWxfZXN0
aW1hdGUgPSBsZXZlbF9lc3RpbWF0b3JfLkNvbXB1dGVMZXZlbChzaWduYWwpOwogCi1kb3VibGUg
TGltaXRlcjo6R2V0R2FpbkxpbmVhcihkb3VibGUgaW5wdXRfbGV2ZWxfbGluZWFyKSBjb25zdCB7
Ci0gIGlmIChpbnB1dF9sZXZlbF9saW5lYXIgPCBrbmVlX3N0YXJ0X2xpbmVhcl8pIHsKLSAgICBy
ZXR1cm4gMS4wOwotICB9Ci0gIHJldHVybiBEYmZzVG9GbG9hdFMxNigKLSAgICAgICAgICAgICBH
ZXRPdXRwdXRMZXZlbERiZnMoRmxvYXRTMTZUb0RiZnMoaW5wdXRfbGV2ZWxfbGluZWFyKSkpIC8K
LSAgICAgICAgIGlucHV0X2xldmVsX2xpbmVhcjsKKyAgUlRDX0RDSEVDS19FUShsZXZlbF9lc3Rp
bWF0ZS5zaXplKCkgKyAxLCBzY2FsaW5nX2ZhY3RvcnNfLnNpemUoKSk7CisgIHNjYWxpbmdfZmFj
dG9yc19bMF0gPSBsYXN0X3NjYWxpbmdfZmFjdG9yXzsKKyAgc3RkOjp0cmFuc2Zvcm0obGV2ZWxf
ZXN0aW1hdGUuYmVnaW4oKSwgbGV2ZWxfZXN0aW1hdGUuZW5kKCksCisgICAgICAgICAgICAgICAg
IHNjYWxpbmdfZmFjdG9yc18uYmVnaW4oKSArIDEsIFt0aGlzXShmbG9hdCB4KSB7CisgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGludGVycF9nYWluX2N1cnZlXy5Mb29rVXBHYWluVG9BcHBseSh4
KTsKKyAgICAgICAgICAgICAgICAgfSk7CisKKyAgY29uc3Qgc2l6ZV90IHNhbXBsZXNfcGVyX2No
YW5uZWwgPSBzaWduYWwuc2FtcGxlc19wZXJfY2hhbm5lbCgpOworICBSVENfRENIRUNLX0xFKHNh
bXBsZXNfcGVyX2NoYW5uZWwsIGtNYXhpbWFsTnVtYmVyT2ZTYW1wbGVzUGVyQ2hhbm5lbCk7CisK
KyAgYXV0byBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9ycyA9IHJ0Yzo6QXJyYXlWaWV3PGZsb2F0
PigKKyAgICAgICZwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc19bMF0sIHNhbXBsZXNfcGVyX2No
YW5uZWwpOworICBDb21wdXRlUGVyU2FtcGxlU3ViZnJhbWVGYWN0b3JzKHNjYWxpbmdfZmFjdG9y
c18sIHNhbXBsZXNfcGVyX2NoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMpOworICBTY2FsZVNhbXBsZXMocGVyX3NhbXBs
ZV9zY2FsaW5nX2ZhY3RvcnMsIHNpZ25hbCk7CisKKyAgbGFzdF9zY2FsaW5nX2ZhY3Rvcl8gPSBz
Y2FsaW5nX2ZhY3RvcnNfLmJhY2soKTsKKworICAvLyBEdW1wIGRhdGEgZm9yIGRlYnVnLgorICBh
cG1fZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJhZ2MyX2dhaW5fY3VydmVfYXBwbGllcl9zY2FsaW5n
X2ZhY3RvcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXNfcGVyX2NoYW5u
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3Rv
cnNfLmRhdGEoKSk7CiB9CiAKLS8vIENvbXB1dGVzIHRoZSBmaXJzdCBkZXJpdmF0aXZlIG9mIEdl
dEdhaW5MaW5lYXIoKSBpbiB8eHwuCi1kb3VibGUgTGltaXRlcjo6R2V0R2FpbkZpcnN0RGVyaXZh
dGl2ZUxpbmVhcihkb3VibGUgeCkgY29uc3QgewotICAvLyBCZXlvbmQta25lZSByZWdpb24gb25s
eS4KLSAgUlRDX0NIRUNLX0dFKHgsIGxpbWl0ZXJfc3RhcnRfbGluZWFyXyAtIDFlLTcgKiBrTWF4
QWJzRmxvYXRTMTZWYWx1ZSk7Ci0gIHJldHVybiBnYWluX2N1cnZlX2xpbWl0ZXJfZDFfICoKLSAg
ICAgICAgIHN0ZDo6cG93KHggLyBrTWF4QWJzRmxvYXRTMTZWYWx1ZSwgZ2Fpbl9jdXJ2ZV9saW1p
dGVyX2QyXyk7CitJbnRlcnBvbGF0ZWRHYWluQ3VydmU6OlN0YXRzIExpbWl0ZXI6OkdldEdhaW5D
dXJ2ZVN0YXRzKCkgY29uc3QgeworICByZXR1cm4gaW50ZXJwX2dhaW5fY3VydmVfLmdldF9zdGF0
cygpOwogfQogCi0vLyBDb21wdXRlcyB0aGUgaW50ZWdyYWwgb2YgR2V0R2FpbkxpbmVhcigpIGlu
IHRoZSByYW5nZSBbeDAsIHgxXS4KLWRvdWJsZSBMaW1pdGVyOjpHZXRHYWluSW50ZWdyYWxMaW5l
YXIoZG91YmxlIHgwLCBkb3VibGUgeDEpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xFKHgwLCB4MSk7
ICAgICAgICAgICAgICAgICAgICAgLy8gVmFsaWQgaW50ZXJ2YWwuCi0gIFJUQ19DSEVDS19HRSh4
MCwgbGltaXRlcl9zdGFydF9saW5lYXJfKTsgIC8vIEJleW9uZC1rbmVlIHJlZ2lvbiBvbmx5Lgot
ICBhdXRvIGxpbWl0ZXJfaW50ZWdyYWwgPSBbdGhpc10oY29uc3QgZG91YmxlJiB4KSB7Ci0gICAg
cmV0dXJuIGdhaW5fY3VydmVfbGltaXRlcl9pMl8gKiBzdGQ6OnBvdyh4LCBnYWluX2N1cnZlX2xp
bWl0ZXJfaTFfKTsKLSAgfTsKLSAgcmV0dXJuIGxpbWl0ZXJfaW50ZWdyYWwoeDEpIC0gbGltaXRl
cl9pbnRlZ3JhbCh4MCk7Cit2b2lkIExpbWl0ZXI6OlNldFNhbXBsZVJhdGUoc2l6ZV90IHNhbXBs
ZV9yYXRlX2h6KSB7CisgIENoZWNrTGltaXRlclNhbXBsZVJhdGUoc2FtcGxlX3JhdGVfaHopOwor
ICBsZXZlbF9lc3RpbWF0b3JfLlNldFNhbXBsZVJhdGUoc2FtcGxlX3JhdGVfaHopOwogfQogCi1k
b3VibGUgTGltaXRlcjo6R2V0S25lZVJlZ2lvbk91dHB1dExldmVsRGJmcyhkb3VibGUgaW5wdXRf
bGV2ZWxfZGJmcykgY29uc3QgewotICByZXR1cm4ga25lZV9yZWdpb25fcG9seW5vbWlhbF9bMF0g
KiBpbnB1dF9sZXZlbF9kYmZzICogaW5wdXRfbGV2ZWxfZGJmcyArCi0gICAgICAgICBrbmVlX3Jl
Z2lvbl9wb2x5bm9taWFsX1sxXSAqIGlucHV0X2xldmVsX2RiZnMgKwotICAgICAgICAga25lZV9y
ZWdpb25fcG9seW5vbWlhbF9bMl07Cit2b2lkIExpbWl0ZXI6OlJlc2V0KCkgeworICBsZXZlbF9l
c3RpbWF0b3JfLlJlc2V0KCk7CiB9CiAKLWRvdWJsZSBMaW1pdGVyOjpHZXRDb21wcmVzc29yUmVn
aW9uT3V0cHV0TGV2ZWxEYmZzKAotICAgIGRvdWJsZSBpbnB1dF9sZXZlbF9kYmZzKSBjb25zdCB7
Ci0gIHJldHVybiAoaW5wdXRfbGV2ZWxfZGJmcyAtIG1heF9pbnB1dF9sZXZlbF9kYl8pIC8gY29t
cHJlc3Npb25fcmF0aW9fOworZmxvYXQgTGltaXRlcjo6TGFzdEF1ZGlvTGV2ZWwoKSBjb25zdCB7
CisgIHJldHVybiBsZXZlbF9lc3RpbWF0b3JfLkxhc3RBdWRpb0xldmVsKCk7CiB9CiAKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaAppbmRleCBmMzUwYmFlZWYxMDVlM2I5YWNmZjQ3MmJm
OTQ3ODcyZjgwZWIxZGI4Li4xZTBhYjcxYTE4Mzc4NmRkMTYxNmJkOWUwMzA4NmQyZGY3YWUwMzY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvbGltaXRlci5oCkBAIC0xMSw2MiArMTEsNTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19Q
Uk9DRVNTSU5HX0FHQzJfTElNSVRFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJ
TkdfQUdDMl9MSU1JVEVSX0hfCiAKLSNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxzdHJpbmc+
CisjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvYWdjMl90ZXN0aW5nX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2ZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19mcmFtZV92
aWV3LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKK2NsYXNzIEFwbURhdGFEdW1wZXI7CiAKLS8vIEEgY2xhc3MgZm9yIGNvbXB1
dGluZyBnYWluIGN1cnZlIHBhcmFtZXRlcnMuIFRoZSBnYWluIGN1cnZlIGlzCi0vLyBkZWZpbmVk
IGJ5IGNvbnN0YW50cyBrTGltaXRlck1heElucHV0TGV2ZWxEYkZzLCBrTGltaXRlcktuZWVTbW9v
dGhuZXNzRGIsCi0vLyBrTGltaXRlckNvbXByZXNzaW9uUmF0aW8uIFRoZSBjdXJ2ZSBjb25zaW50
cyBvZiBvbmUgbGluZWFyIHBhcnQsCi0vLyBvbmUgcXVhZHJhdGljIHBvbHlub21pYWwgcGFydCBh
bmQgYW5vdGhlciBsaW5lYXIgcGFydC4gVGhlCi0vLyBjb25zdGFudHMgZGVmaW5lIHRoZSBwYXJh
bWV0ZXJzIG9mIHRoZSBwYXJ0cy4KIGNsYXNzIExpbWl0ZXIgewogIHB1YmxpYzoKLSAgTGltaXRl
cigpOworICBMaW1pdGVyKHNpemVfdCBzYW1wbGVfcmF0ZV9oeiwKKyAgICAgICAgICBBcG1EYXRh
RHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIsCisgICAgICAgICAgc3RkOjpzdHJpbmcgaGlzdG9ncmFt
X25hbWVfcHJlZml4KTsKKyAgTGltaXRlcihjb25zdCBMaW1pdGVyJiBsaW1pdGVyKSA9IGRlbGV0
ZTsKKyAgTGltaXRlciYgb3BlcmF0b3I9KGNvbnN0IExpbWl0ZXImIGxpbWl0ZXIpID0gZGVsZXRl
OworICB+TGltaXRlcigpOwogCi0gIGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfZGIoKSBjb25zdCB7
IHJldHVybiBtYXhfaW5wdXRfbGV2ZWxfZGJfOyB9Ci0gIGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxf
bGluZWFyKCkgY29uc3QgeyByZXR1cm4gbWF4X2lucHV0X2xldmVsX2xpbmVhcl87IH0KLSAgZG91
YmxlIGtuZWVfc3RhcnRfbGluZWFyKCkgY29uc3QgeyByZXR1cm4ga25lZV9zdGFydF9saW5lYXJf
OyB9Ci0gIGRvdWJsZSBsaW1pdGVyX3N0YXJ0X2xpbmVhcigpIGNvbnN0IHsgcmV0dXJuIGxpbWl0
ZXJfc3RhcnRfbGluZWFyXzsgfQorICAvLyBBcHBsaWVzIGxpbWl0ZXIgYW5kIGhhcmQtY2xpcHBp
bmcgdG8gfHNpZ25hbHwuCisgIHZvaWQgUHJvY2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2ln
bmFsKTsKKyAgSW50ZXJwb2xhdGVkR2FpbkN1cnZlOjpTdGF0cyBHZXRHYWluQ3VydmVTdGF0cygp
IGNvbnN0OwogCi0gIC8vIFRoZXNlIG1ldGhvZHMgY2FuIGJlIG1hcmtlZCAnY29uc3RleHByJyBp
biBDKysgMTQuCi0gIGRvdWJsZSBHZXRPdXRwdXRMZXZlbERiZnMoZG91YmxlIGlucHV0X2xldmVs
X2RiZnMpIGNvbnN0OwotICBkb3VibGUgR2V0R2FpbkxpbmVhcihkb3VibGUgaW5wdXRfbGV2ZWxf
bGluZWFyKSBjb25zdDsKLSAgZG91YmxlIEdldEdhaW5GaXJzdERlcml2YXRpdmVMaW5lYXIoZG91
YmxlIHgpIGNvbnN0OwotICBkb3VibGUgR2V0R2FpbkludGVncmFsTGluZWFyKGRvdWJsZSB4MCwg
ZG91YmxlIHgxKSBjb25zdDsKKyAgLy8gU3VwcG9ydGVkIHJhdGVzIG11c3QgYmUKKyAgLy8gKiBz
dXBwb3J0ZWQgYnkgRml4ZWREaWdpdGFsTGV2ZWxFc3RpbWF0b3IKKyAgLy8gKiBiZWxvdyBrTWF4
aW1hbE51bWJlck9mU2FtcGxlc1BlckNoYW5uZWwqMTAwMC9rRnJhbWVEdXJhdGlvbk1zCisgIC8v
ICAgc28gdGhhdCBzYW1wbGVzX3Blcl9jaGFubmVsIGZpdCBpbiB0aGUKKyAgLy8gICBwZXJfc2Ft
cGxlX3NjYWxpbmdfZmFjdG9yc18gYXJyYXkuCisgIHZvaWQgU2V0U2FtcGxlUmF0ZShzaXplX3Qg
c2FtcGxlX3JhdGVfaHopOwogCi0gcHJpdmF0ZToKLSAgZG91YmxlIEdldEtuZWVSZWdpb25PdXRw
dXRMZXZlbERiZnMoZG91YmxlIGlucHV0X2xldmVsX2RiZnMpIGNvbnN0OwotICBkb3VibGUgR2V0
Q29tcHJlc3NvclJlZ2lvbk91dHB1dExldmVsRGJmcyhkb3VibGUgaW5wdXRfbGV2ZWxfZGJmcykg
Y29uc3Q7Ci0KLSAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbWF4X2lucHV0X2xldmVsX2RiXyA9
IHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnM7Ci0gIHN0YXRpYyBjb25zdGV4cHIgZG91
YmxlIGtuZWVfc21vb3RobmVzc19kYl8gPSB0ZXN0OjprTGltaXRlcktuZWVTbW9vdGhuZXNzRGI7
Ci0gIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGNvbXByZXNzaW9uX3JhdGlvXyA9IHRlc3Q6OmtM
aW1pdGVyQ29tcHJlc3Npb25SYXRpbzsKLQotICBjb25zdCBkb3VibGUgbWF4X2lucHV0X2xldmVs
X2xpbmVhcl87Ci0KLSAgLy8gRG8gbm90IG1vZGlmeSBzaWduYWwgd2l0aCBsZXZlbCA8PSBrbmVl
X3N0YXJ0X2RiZnNfLgotICBjb25zdCBkb3VibGUga25lZV9zdGFydF9kYmZzXzsKLSAgY29uc3Qg
ZG91YmxlIGtuZWVfc3RhcnRfbGluZWFyXzsKKyAgLy8gUmVzZXRzIHRoZSBpbnRlcm5hbCBzdGF0
ZS4KKyAgdm9pZCBSZXNldCgpOwogCi0gIC8vIFRoZSB1cHBlciBlbmQgb2YgdGhlIGtuZWUgcmVn
aW9uLCB3aGljaCBpcyBiZXR3ZWVuIGtuZWVfc3RhcnRfZGJmc18gYW5kCi0gIC8vIGxpbWl0ZXJf
c3RhcnRfZGJmc18uCi0gIGNvbnN0IGRvdWJsZSBsaW1pdGVyX3N0YXJ0X2RiZnNfOwotICBjb25z
dCBkb3VibGUgbGltaXRlcl9zdGFydF9saW5lYXJfOworICBmbG9hdCBMYXN0QXVkaW9MZXZlbCgp
IGNvbnN0OwogCi0gIC8vIENvZWZmaWNpZW50cyB7YSwgYiwgY30gb2YgdGhlIGtuZWUgcmVnaW9u
IHBvbHlub21pYWwKLSAgLy8gYXheMiArIGJ4ICsgYyBpbiB0aGUgREIgc2NhbGUuCi0gIGNvbnN0
IHN0ZDo6YXJyYXk8ZG91YmxlLCAzPiBrbmVlX3JlZ2lvbl9wb2x5bm9taWFsXzsKLQotICAvLyBQ
YXJhbWV0ZXJzIGZvciB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGZpcnN0IGRlcml2YXRpdmUgb2Yg
R2V0R2FpbkxpbmVhcigpLgotICBjb25zdCBkb3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2QxXzsK
LSAgY29uc3QgZG91YmxlIGdhaW5fY3VydmVfbGltaXRlcl9kMl87Ci0KLSAgLy8gUGFyYW1ldGVy
cyBmb3IgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBpbnRlZ3JhbCBvZiBHZXRHYWluTGluZWFyKCku
Ci0gIGNvbnN0IGRvdWJsZSBnYWluX2N1cnZlX2xpbWl0ZXJfaTFfOwotICBjb25zdCBkb3VibGUg
Z2Fpbl9jdXJ2ZV9saW1pdGVyX2kyXzsKKyBwcml2YXRlOgorICBjb25zdCBJbnRlcnBvbGF0ZWRH
YWluQ3VydmUgaW50ZXJwX2dhaW5fY3VydmVfOworICBGaXhlZERpZ2l0YWxMZXZlbEVzdGltYXRv
ciBsZXZlbF9lc3RpbWF0b3JfOworICBBcG1EYXRhRHVtcGVyKiBjb25zdCBhcG1fZGF0YV9kdW1w
ZXJfID0gbnVsbHB0cjsKKworICAvLyBXb3JrIGFycmF5IGNvbnRhaW5pbmcgdGhlIHN1Yi1mcmFt
ZSBzY2FsaW5nIGZhY3RvcnMgdG8gYmUgaW50ZXJwb2xhdGVkLgorICBzdGQ6OmFycmF5PGZsb2F0
LCBrU3ViRnJhbWVzSW5GcmFtZSArIDE+IHNjYWxpbmdfZmFjdG9yc18gPSB7fTsKKyAgc3RkOjph
cnJheTxmbG9hdCwga01heGltYWxOdW1iZXJPZlNhbXBsZXNQZXJDaGFubmVsPgorICAgICAgcGVy
X3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNfID0ge307CisgIGZsb2F0IGxhc3Rfc2NhbGluZ19mYWN0
b3JfID0gMS5mOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWluX2N1cnZlLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGlt
aXRlcl9kYl9nYWluX2N1cnZlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NWVkNWRmNThjMWFhNWRjMTgzNGY2
MDE5YzAxMTMyMmQyZTM3YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1p
dGVyX2RiX2dhaW5fY3VydmUuY2MKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9k
Yl9nYWluX2N1cnZlLmgiCisKKyNpbmNsdWRlIDxjbWF0aD4KKworI2luY2x1ZGUgImNvbW1vbl9h
dWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgor
CituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7CisKK2RvdWJsZSBDb21wdXRlS25lZVN0
YXJ0KGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfZGIsCisgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUga25lZV9zbW9vdGhuZXNzX2RiLAorICAgICAgICAgICAgICAgICAgICAgICAgZG91Ymxl
IGNvbXByZXNzaW9uX3JhdGlvKSB7CisgIFJUQ19DSEVDS19MVCgoY29tcHJlc3Npb25fcmF0aW8g
LSAxLjApICoga25lZV9zbW9vdGhuZXNzX2RiIC8KKyAgICAgICAgICAgICAgICAgICAoMi4wICog
Y29tcHJlc3Npb25fcmF0aW8pLAorICAgICAgICAgICAgICAgbWF4X2lucHV0X2xldmVsX2RiKTsK
KyAgcmV0dXJuIC1rbmVlX3Ntb290aG5lc3NfZGIgLyAyLjAgLQorICAgICAgICAgbWF4X2lucHV0
X2xldmVsX2RiIC8gKGNvbXByZXNzaW9uX3JhdGlvIC0gMS4wKTsKK30KKworc3RkOjphcnJheTxk
b3VibGUsIDM+IENvbXB1dGVLbmVlUmVnaW9uUG9seW5vbWlhbChkb3VibGUga25lZV9zdGFydF9k
YmZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUga25lZV9zbW9vdGhuZXNzX2RiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGUgY29tcHJlc3Npb25fcmF0aW8pIHsKKyAgY29uc3Qg
ZG91YmxlIGEgPSAoMS4wIC0gY29tcHJlc3Npb25fcmF0aW8pIC8KKyAgICAgICAgICAgICAgICAg
ICAoMi4wICoga25lZV9zbW9vdGhuZXNzX2RiICogY29tcHJlc3Npb25fcmF0aW8pOworICBjb25z
dCBkb3VibGUgYiA9IDEuMCAtIDIuMCAqIGEgKiBrbmVlX3N0YXJ0X2RiZnM7CisgIGNvbnN0IGRv
dWJsZSBjID0gYSAqIGtuZWVfc3RhcnRfZGJmcyAqIGtuZWVfc3RhcnRfZGJmczsKKyAgcmV0dXJu
IHt7YSwgYiwgY319OworfQorCitkb3VibGUgQ29tcHV0ZUxpbWl0ZXJEMShkb3VibGUgbWF4X2lu
cHV0X2xldmVsX2RiLCBkb3VibGUgY29tcHJlc3Npb25fcmF0aW8pIHsKKyAgcmV0dXJuIChzdGQ6
OnBvdygxMC4wLCAtbWF4X2lucHV0X2xldmVsX2RiIC8gKDIwLjAgKiBjb21wcmVzc2lvbl9yYXRp
bykpICoKKyAgICAgICAgICAoMS4wIC0gY29tcHJlc3Npb25fcmF0aW8pIC8gY29tcHJlc3Npb25f
cmF0aW8pIC8KKyAgICAgICAgIGtNYXhBYnNGbG9hdFMxNlZhbHVlOworfQorCitjb25zdGV4cHIg
ZG91YmxlIENvbXB1dGVMaW1pdGVyRDIoZG91YmxlIGNvbXByZXNzaW9uX3JhdGlvKSB7CisgIHJl
dHVybiAoMS4wIC0gMi4wICogY29tcHJlc3Npb25fcmF0aW8pIC8gY29tcHJlc3Npb25fcmF0aW87
Cit9CisKK2RvdWJsZSBDb21wdXRlTGltaXRlckkyKGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfZGIs
CisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgY29tcHJlc3Npb25fcmF0aW8sCisgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxKSB7CisgIFJU
Q19DSEVDS19ORShnYWluX2N1cnZlX2xpbWl0ZXJfaTEsIDAuZik7CisgIHJldHVybiBzdGQ6OnBv
dygxMC4wLCAtbWF4X2lucHV0X2xldmVsX2RiIC8gKDIwLjAgKiBjb21wcmVzc2lvbl9yYXRpbykp
IC8KKyAgICAgICAgIGdhaW5fY3VydmVfbGltaXRlcl9pMSAvCisgICAgICAgICBzdGQ6OnBvdyhr
TWF4QWJzRmxvYXRTMTZWYWx1ZSwgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxIC0gMSk7Cit9CisKK30g
IC8vIG5hbWVzcGFjZQorCitMaW1pdGVyRGJHYWluQ3VydmU6OkxpbWl0ZXJEYkdhaW5DdXJ2ZSgp
CisgICAgOiBtYXhfaW5wdXRfbGV2ZWxfbGluZWFyXyhEYmZzVG9GbG9hdFMxNihtYXhfaW5wdXRf
bGV2ZWxfZGJfKSksCisgICAgICBrbmVlX3N0YXJ0X2RiZnNfKENvbXB1dGVLbmVlU3RhcnQobWF4
X2lucHV0X2xldmVsX2RiXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrbmVlX3Ntb290aG5lc3NfZGJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbXByZXNzaW9uX3JhdGlvXykpLAorICAgICAga25lZV9zdGFydF9saW5lYXJfKERi
ZnNUb0Zsb2F0UzE2KGtuZWVfc3RhcnRfZGJmc18pKSwKKyAgICAgIGxpbWl0ZXJfc3RhcnRfZGJm
c18oa25lZV9zdGFydF9kYmZzXyArIGtuZWVfc21vb3RobmVzc19kYl8pLAorICAgICAgbGltaXRl
cl9zdGFydF9saW5lYXJfKERiZnNUb0Zsb2F0UzE2KGxpbWl0ZXJfc3RhcnRfZGJmc18pKSwKKyAg
ICAgIGtuZWVfcmVnaW9uX3BvbHlub21pYWxfKENvbXB1dGVLbmVlUmVnaW9uUG9seW5vbWlhbChr
bmVlX3N0YXJ0X2RiZnNfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtuZWVfc21vb3RobmVzc19kYl8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25fcmF0
aW9fKSksCisgICAgICBnYWluX2N1cnZlX2xpbWl0ZXJfZDFfKAorICAgICAgICAgIENvbXB1dGVM
aW1pdGVyRDEobWF4X2lucHV0X2xldmVsX2RiXywgY29tcHJlc3Npb25fcmF0aW9fKSksCisgICAg
ICBnYWluX2N1cnZlX2xpbWl0ZXJfZDJfKENvbXB1dGVMaW1pdGVyRDIoY29tcHJlc3Npb25fcmF0
aW9fKSksCisgICAgICBnYWluX2N1cnZlX2xpbWl0ZXJfaTFfKDEuMCAvIGNvbXByZXNzaW9uX3Jh
dGlvXyksCisgICAgICBnYWluX2N1cnZlX2xpbWl0ZXJfaTJfKENvbXB1dGVMaW1pdGVySTIobWF4
X2lucHV0X2xldmVsX2RiXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21wcmVzc2lvbl9yYXRpb18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxXykpIHsKKyAgc3RhdGljX2Fz
c2VydChrbmVlX3Ntb290aG5lc3NfZGJfID4gMC4wZiwgIiIpOworICBzdGF0aWNfYXNzZXJ0KGNv
bXByZXNzaW9uX3JhdGlvXyA+IDEuMGYsICIiKTsKKyAgUlRDX0NIRUNLX0dFKG1heF9pbnB1dF9s
ZXZlbF9kYl8sIGtuZWVfc3RhcnRfZGJmc18gKyBrbmVlX3Ntb290aG5lc3NfZGJfKTsKK30KKwor
Y29uc3RleHByIGRvdWJsZSBMaW1pdGVyRGJHYWluQ3VydmU6Om1heF9pbnB1dF9sZXZlbF9kYl87
Citjb25zdGV4cHIgZG91YmxlIExpbWl0ZXJEYkdhaW5DdXJ2ZTo6a25lZV9zbW9vdGhuZXNzX2Ri
XzsKK2NvbnN0ZXhwciBkb3VibGUgTGltaXRlckRiR2FpbkN1cnZlOjpjb21wcmVzc2lvbl9yYXRp
b187CisKK2RvdWJsZSBMaW1pdGVyRGJHYWluQ3VydmU6OkdldE91dHB1dExldmVsRGJmcyhkb3Vi
bGUgaW5wdXRfbGV2ZWxfZGJmcykgY29uc3QgeworICBpZiAoaW5wdXRfbGV2ZWxfZGJmcyA8IGtu
ZWVfc3RhcnRfZGJmc18pIHsKKyAgICByZXR1cm4gaW5wdXRfbGV2ZWxfZGJmczsKKyAgfSBlbHNl
IGlmIChpbnB1dF9sZXZlbF9kYmZzIDwgbGltaXRlcl9zdGFydF9kYmZzXykgeworICAgIHJldHVy
biBHZXRLbmVlUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKGlucHV0X2xldmVsX2RiZnMpOworICB9Cisg
IHJldHVybiBHZXRDb21wcmVzc29yUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKGlucHV0X2xldmVsX2Ri
ZnMpOworfQorCitkb3VibGUgTGltaXRlckRiR2FpbkN1cnZlOjpHZXRHYWluTGluZWFyKGRvdWJs
ZSBpbnB1dF9sZXZlbF9saW5lYXIpIGNvbnN0IHsKKyAgaWYgKGlucHV0X2xldmVsX2xpbmVhciA8
IGtuZWVfc3RhcnRfbGluZWFyXykgeworICAgIHJldHVybiAxLjA7CisgIH0KKyAgcmV0dXJuIERi
ZnNUb0Zsb2F0UzE2KAorICAgICAgICAgICAgIEdldE91dHB1dExldmVsRGJmcyhGbG9hdFMxNlRv
RGJmcyhpbnB1dF9sZXZlbF9saW5lYXIpKSkgLworICAgICAgICAgaW5wdXRfbGV2ZWxfbGluZWFy
OworfQorCisvLyBDb21wdXRlcyB0aGUgZmlyc3QgZGVyaXZhdGl2ZSBvZiBHZXRHYWluTGluZWFy
KCkgaW4gfHh8LgorZG91YmxlIExpbWl0ZXJEYkdhaW5DdXJ2ZTo6R2V0R2FpbkZpcnN0RGVyaXZh
dGl2ZUxpbmVhcihkb3VibGUgeCkgY29uc3QgeworICAvLyBCZXlvbmQta25lZSByZWdpb24gb25s
eS4KKyAgUlRDX0NIRUNLX0dFKHgsIGxpbWl0ZXJfc3RhcnRfbGluZWFyXyAtIDFlLTcgKiBrTWF4
QWJzRmxvYXRTMTZWYWx1ZSk7CisgIHJldHVybiBnYWluX2N1cnZlX2xpbWl0ZXJfZDFfICoKKyAg
ICAgICAgIHN0ZDo6cG93KHggLyBrTWF4QWJzRmxvYXRTMTZWYWx1ZSwgZ2Fpbl9jdXJ2ZV9saW1p
dGVyX2QyXyk7Cit9CisKKy8vIENvbXB1dGVzIHRoZSBpbnRlZ3JhbCBvZiBHZXRHYWluTGluZWFy
KCkgaW4gdGhlIHJhbmdlIFt4MCwgeDFdLgorZG91YmxlIExpbWl0ZXJEYkdhaW5DdXJ2ZTo6R2V0
R2FpbkludGVncmFsTGluZWFyKGRvdWJsZSB4MCwgZG91YmxlIHgxKSBjb25zdCB7CisgIFJUQ19D
SEVDS19MRSh4MCwgeDEpOyAgICAgICAgICAgICAgICAgICAgIC8vIFZhbGlkIGludGVydmFsLgor
ICBSVENfQ0hFQ0tfR0UoeDAsIGxpbWl0ZXJfc3RhcnRfbGluZWFyXyk7ICAvLyBCZXlvbmQta25l
ZSByZWdpb24gb25seS4KKyAgYXV0byBsaW1pdGVyX2ludGVncmFsID0gW3RoaXNdKGNvbnN0IGRv
dWJsZSYgeCkgeworICAgIHJldHVybiBnYWluX2N1cnZlX2xpbWl0ZXJfaTJfICogc3RkOjpwb3co
eCwgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxXyk7CisgIH07CisgIHJldHVybiBsaW1pdGVyX2ludGVn
cmFsKHgxKSAtIGxpbWl0ZXJfaW50ZWdyYWwoeDApOworfQorCitkb3VibGUgTGltaXRlckRiR2Fp
bkN1cnZlOjpHZXRLbmVlUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKAorICAgIGRvdWJsZSBpbnB1dF9s
ZXZlbF9kYmZzKSBjb25zdCB7CisgIHJldHVybiBrbmVlX3JlZ2lvbl9wb2x5bm9taWFsX1swXSAq
IGlucHV0X2xldmVsX2RiZnMgKiBpbnB1dF9sZXZlbF9kYmZzICsKKyAgICAgICAgIGtuZWVfcmVn
aW9uX3BvbHlub21pYWxfWzFdICogaW5wdXRfbGV2ZWxfZGJmcyArCisgICAgICAgICBrbmVlX3Jl
Z2lvbl9wb2x5bm9taWFsX1syXTsKK30KKworZG91YmxlIExpbWl0ZXJEYkdhaW5DdXJ2ZTo6R2V0
Q29tcHJlc3NvclJlZ2lvbk91dHB1dExldmVsRGJmcygKKyAgICBkb3VibGUgaW5wdXRfbGV2ZWxf
ZGJmcykgY29uc3QgeworICByZXR1cm4gKGlucHV0X2xldmVsX2RiZnMgLSBtYXhfaW5wdXRfbGV2
ZWxfZGJfKSAvIGNvbXByZXNzaW9uX3JhdGlvXzsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWluX2N1cnZlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3VydmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDg2ZTI2
NzM5YjdjZmMyMGZlNmE0YzM1M2E0ZDdiYzVhYTA2ODg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWluX2N1cnZlLmgKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FH
QzJfTElNSVRFUl9EQl9HQUlOX0NVUlZFX0hfCisjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BR0MyX0xJTUlURVJfREJfR0FJTl9DVVJWRV9IXworCisjaW5jbHVkZSA8YXJyYXk+CisK
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX3Rlc3RpbmdfY29t
bW9uLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBBIGNsYXNzIGZvciBjb21wdXRpbmcg
YSBsaW1pdGVyIGdhaW4gY3VydmUgKGluIGRCIHNjYWxlKSBnaXZlbiBhIHNldCBvZgorLy8gaGFy
ZC1jb2RlZCBwYXJhbWV0ZXJzIChuYW1lbHksIGtMaW1pdGVyRGJHYWluQ3VydmVNYXhJbnB1dExl
dmVsRGJGcywKKy8vIGtMaW1pdGVyRGJHYWluQ3VydmVLbmVlU21vb3RobmVzc0RiLCBhbmQKKy8v
IGtMaW1pdGVyRGJHYWluQ3VydmVDb21wcmVzc2lvblJhdGlvKS4gVGhlIGdlbmVyYXRlZCBjdXJ2
ZSBjb25zaXN0cyBvZiBmb3VyCisvLyByZWdpb25zOiBpZGVudGl0eSAobGluZWFyKSwga25lZSAo
cXVhZHJhdGljIHBvbHlub21pYWwpLCBjb21wcmVzc2lvbgorLy8gKGxpbmVhciksIHNhdHVyYXRp
b24gKGxpbmVhcikuIFRoZSBhZm9yZW1lbnRpb25lZCBjb25zdGFudHMgYXJlIHVzZWQgdG8gc2hh
cGUKKy8vIHRoZSBkaWZmZXJlbnQgcmVnaW9ucy4KK2NsYXNzIExpbWl0ZXJEYkdhaW5DdXJ2ZSB7
CisgcHVibGljOgorICBMaW1pdGVyRGJHYWluQ3VydmUoKTsKKworICBkb3VibGUgbWF4X2lucHV0
X2xldmVsX2RiKCkgY29uc3QgeyByZXR1cm4gbWF4X2lucHV0X2xldmVsX2RiXzsgfQorICBkb3Vi
bGUgbWF4X2lucHV0X2xldmVsX2xpbmVhcigpIGNvbnN0IHsgcmV0dXJuIG1heF9pbnB1dF9sZXZl
bF9saW5lYXJfOyB9CisgIGRvdWJsZSBrbmVlX3N0YXJ0X2xpbmVhcigpIGNvbnN0IHsgcmV0dXJu
IGtuZWVfc3RhcnRfbGluZWFyXzsgfQorICBkb3VibGUgbGltaXRlcl9zdGFydF9saW5lYXIoKSBj
b25zdCB7IHJldHVybiBsaW1pdGVyX3N0YXJ0X2xpbmVhcl87IH0KKworICAvLyBUaGVzZSBtZXRo
b2RzIGNhbiBiZSBtYXJrZWQgJ2NvbnN0ZXhwcicgaW4gQysrIDE0LgorICBkb3VibGUgR2V0T3V0
cHV0TGV2ZWxEYmZzKGRvdWJsZSBpbnB1dF9sZXZlbF9kYmZzKSBjb25zdDsKKyAgZG91YmxlIEdl
dEdhaW5MaW5lYXIoZG91YmxlIGlucHV0X2xldmVsX2xpbmVhcikgY29uc3Q7CisgIGRvdWJsZSBH
ZXRHYWluRmlyc3REZXJpdmF0aXZlTGluZWFyKGRvdWJsZSB4KSBjb25zdDsKKyAgZG91YmxlIEdl
dEdhaW5JbnRlZ3JhbExpbmVhcihkb3VibGUgeDAsIGRvdWJsZSB4MSkgY29uc3Q7CisKKyBwcml2
YXRlOgorICBkb3VibGUgR2V0S25lZVJlZ2lvbk91dHB1dExldmVsRGJmcyhkb3VibGUgaW5wdXRf
bGV2ZWxfZGJmcykgY29uc3Q7CisgIGRvdWJsZSBHZXRDb21wcmVzc29yUmVnaW9uT3V0cHV0TGV2
ZWxEYmZzKGRvdWJsZSBpbnB1dF9sZXZlbF9kYmZzKSBjb25zdDsKKworICBzdGF0aWMgY29uc3Rl
eHByIGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfZGJfID0gdGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExl
dmVsRGJGczsKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga25lZV9zbW9vdGhuZXNzX2RiXyA9
IHRlc3Q6OmtMaW1pdGVyS25lZVNtb290aG5lc3NEYjsKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3Vi
bGUgY29tcHJlc3Npb25fcmF0aW9fID0gdGVzdDo6a0xpbWl0ZXJDb21wcmVzc2lvblJhdGlvOwor
CisgIGNvbnN0IGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfbGluZWFyXzsKKworICAvLyBEbyBub3Qg
bW9kaWZ5IHNpZ25hbCB3aXRoIGxldmVsIDw9IGtuZWVfc3RhcnRfZGJmc18uCisgIGNvbnN0IGRv
dWJsZSBrbmVlX3N0YXJ0X2RiZnNfOworICBjb25zdCBkb3VibGUga25lZV9zdGFydF9saW5lYXJf
OworCisgIC8vIFRoZSB1cHBlciBlbmQgb2YgdGhlIGtuZWUgcmVnaW9uLCB3aGljaCBpcyBiZXR3
ZWVuIGtuZWVfc3RhcnRfZGJmc18gYW5kCisgIC8vIGxpbWl0ZXJfc3RhcnRfZGJmc18uCisgIGNv
bnN0IGRvdWJsZSBsaW1pdGVyX3N0YXJ0X2RiZnNfOworICBjb25zdCBkb3VibGUgbGltaXRlcl9z
dGFydF9saW5lYXJfOworCisgIC8vIENvZWZmaWNpZW50cyB7YSwgYiwgY30gb2YgdGhlIGtuZWUg
cmVnaW9uIHBvbHlub21pYWwKKyAgLy8gYXheMiArIGJ4ICsgYyBpbiB0aGUgREIgc2NhbGUuCisg
IGNvbnN0IHN0ZDo6YXJyYXk8ZG91YmxlLCAzPiBrbmVlX3JlZ2lvbl9wb2x5bm9taWFsXzsKKwor
ICAvLyBQYXJhbWV0ZXJzIGZvciB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGZpcnN0IGRlcml2YXRp
dmUgb2YgR2V0R2FpbkxpbmVhcigpLgorICBjb25zdCBkb3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVy
X2QxXzsKKyAgY29uc3QgZG91YmxlIGdhaW5fY3VydmVfbGltaXRlcl9kMl87CisKKyAgLy8gUGFy
YW1ldGVycyBmb3IgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBpbnRlZ3JhbCBvZiBHZXRHYWluTGlu
ZWFyKCkuCisgIGNvbnN0IGRvdWJsZSBnYWluX2N1cnZlX2xpbWl0ZXJfaTFfOworICBjb25zdCBk
b3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kyXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9MSU1JVEVSX0RC
X0dBSU5fQ1VSVkVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXJfZGJfZ2Fp
bl9jdXJ2ZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXJfZGJfZ2Fpbl9jdXJ2
ZV91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDljOGQ1NjhlYTUwZjBjYWVmMjc5NTJmMWQ3YmZh
NWVkMGQ1NGI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9n
YWluX2N1cnZlX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9k
Yl9nYWluX2N1cnZlLmgiCisKKyNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgorCituYW1lc3Bh
Y2Ugd2VicnRjIHsKKworVEVTVChGaXhlZERpZ2l0YWxHYWluQ29udHJvbGxlcjJMaW1pdGVyLCBD
b25zdHJ1Y3REZXN0cnVjdCkgeworICBMaW1pdGVyRGJHYWluQ3VydmUgbDsKK30KKworVEVTVChG
aXhlZERpZ2l0YWxHYWluQ29udHJvbGxlcjJMaW1pdGVyLCBHYWluQ3VydmVTaG91bGRCZU1vbm90
b25lKSB7CisgIExpbWl0ZXJEYkdhaW5DdXJ2ZSBsOworICBmbG9hdCBsYXN0X291dHB1dF9sZXZl
bCA9IDAuZjsKKyAgYm9vbCBoYXNfbGFzdF9vdXRwdXRfbGV2ZWwgPSBmYWxzZTsKKyAgZm9yIChm
bG9hdCBsZXZlbCA9IC05MC5mOyBsZXZlbCA8PSBsLm1heF9pbnB1dF9sZXZlbF9kYigpOyBsZXZl
bCArPSAwLjVmKSB7CisgICAgY29uc3QgZmxvYXQgY3VycmVudF9vdXRwdXRfbGV2ZWwgPSBsLkdl
dE91dHB1dExldmVsRGJmcyhsZXZlbCk7CisgICAgaWYgKCFoYXNfbGFzdF9vdXRwdXRfbGV2ZWwp
IHsKKyAgICAgIGxhc3Rfb3V0cHV0X2xldmVsID0gY3VycmVudF9vdXRwdXRfbGV2ZWw7CisgICAg
ICBoYXNfbGFzdF9vdXRwdXRfbGV2ZWwgPSB0cnVlOworICAgIH0KKyAgICBFWFBFQ1RfTEUobGFz
dF9vdXRwdXRfbGV2ZWwsIGN1cnJlbnRfb3V0cHV0X2xldmVsKTsKKyAgICBsYXN0X291dHB1dF9s
ZXZlbCA9IGN1cnJlbnRfb3V0cHV0X2xldmVsOworICB9Cit9CisKK1RFU1QoRml4ZWREaWdpdGFs
R2FpbkNvbnRyb2xsZXIyTGltaXRlciwgR2FpbkN1cnZlU2hvdWxkQmVDb250aW51b3VzKSB7Cisg
IExpbWl0ZXJEYkdhaW5DdXJ2ZSBsOworICBmbG9hdCBsYXN0X291dHB1dF9sZXZlbCA9IDAuZjsK
KyAgYm9vbCBoYXNfbGFzdF9vdXRwdXRfbGV2ZWwgPSBmYWxzZTsKKyAgY29uc3RleHByIGZsb2F0
IGtNYXhEZWx0YSA9IDAuNWY7CisgIGZvciAoZmxvYXQgbGV2ZWwgPSAtOTAuZjsgbGV2ZWwgPD0g
bC5tYXhfaW5wdXRfbGV2ZWxfZGIoKTsgbGV2ZWwgKz0gMC41ZikgeworICAgIGNvbnN0IGZsb2F0
IGN1cnJlbnRfb3V0cHV0X2xldmVsID0gbC5HZXRPdXRwdXRMZXZlbERiZnMobGV2ZWwpOworICAg
IGlmICghaGFzX2xhc3Rfb3V0cHV0X2xldmVsKSB7CisgICAgICBsYXN0X291dHB1dF9sZXZlbCA9
IGN1cnJlbnRfb3V0cHV0X2xldmVsOworICAgICAgaGFzX2xhc3Rfb3V0cHV0X2xldmVsID0gdHJ1
ZTsKKyAgICB9CisgICAgRVhQRUNUX0xFKGN1cnJlbnRfb3V0cHV0X2xldmVsLCBsYXN0X291dHB1
dF9sZXZlbCArIGtNYXhEZWx0YSk7CisgICAgbGFzdF9vdXRwdXRfbGV2ZWwgPSBjdXJyZW50X291
dHB1dF9sZXZlbDsKKyAgfQorfQorCitURVNUKEZpeGVkRGlnaXRhbEdhaW5Db250cm9sbGVyMkxp
bWl0ZXIsIE91dHB1dEdhaW5TaG91bGRCZUxlc3NUaGFuRnVsbFNjYWxlKSB7CisgIExpbWl0ZXJE
YkdhaW5DdXJ2ZSBsOworICBmb3IgKGZsb2F0IGxldmVsID0gLTkwLmY7IGxldmVsIDw9IGwubWF4
X2lucHV0X2xldmVsX2RiKCk7IGxldmVsICs9IDAuNWYpIHsKKyAgICBjb25zdCBmbG9hdCBjdXJy
ZW50X291dHB1dF9sZXZlbCA9IGwuR2V0T3V0cHV0TGV2ZWxEYmZzKGxldmVsKTsKKyAgICBFWFBF
Q1RfTEUoY3VycmVudF9vdXRwdXRfbGV2ZWwsIDAuZik7CisgIH0KK30KKworfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXJfdW5pdHRlc3QuY2MKaW5kZXggNzA3OTgxMjYzNDc1
YWEzYjlmMGViMzUxODkxNzU5ODViYjNhNzkzMi4uZTY2MmE3ZmM4OTA0NThlMzhiNThmNzgxMmY3
MDI5OTM4N2ZkYWUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl91bml0dGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX3VuaXR0ZXN0LmNjCkBAIC0xMCw1MCAr
MTAsNTAgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0
ZXIuaCIKIAorI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfdGVzdGluZ19jb21tb24u
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92ZWN0b3JfZmxvYXRf
ZnJhbWUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1f
ZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIAotVEVTVChGaXhlZERpZ2l0YWxHYWluQ29udHJvbGxlcjJMaW1pdGVyLCBDb25z
dHJ1Y3REZXN0cnVjdCkgewotICBMaW1pdGVyIGw7Ci19CitURVNUKExpbWl0ZXIsIExpbWl0ZXJT
aG91bGRDb25zdHJ1Y3RBbmRSdW4pIHsKKyAgY29uc3QgaW50IHNhbXBsZV9yYXRlX2h6ID0gNDgw
MDA7CisgIEFwbURhdGFEdW1wZXIgYXBtX2RhdGFfZHVtcGVyKDApOwogCi1URVNUKEZpeGVkRGln
aXRhbEdhaW5Db250cm9sbGVyMkxpbWl0ZXIsIEdhaW5DdXJ2ZVNob3VsZEJlTW9ub3RvbmUpIHsK
LSAgTGltaXRlciBsOwotICBmbG9hdCBsYXN0X291dHB1dF9sZXZlbCA9IDAuZjsKLSAgYm9vbCBo
YXNfbGFzdF9vdXRwdXRfbGV2ZWwgPSBmYWxzZTsKLSAgZm9yIChmbG9hdCBsZXZlbCA9IC05MC5m
OyBsZXZlbCA8PSBsLm1heF9pbnB1dF9sZXZlbF9kYigpOyBsZXZlbCArPSAwLjVmKSB7Ci0gICAg
Y29uc3QgZmxvYXQgY3VycmVudF9vdXRwdXRfbGV2ZWwgPSBsLkdldE91dHB1dExldmVsRGJmcyhs
ZXZlbCk7Ci0gICAgaWYgKCFoYXNfbGFzdF9vdXRwdXRfbGV2ZWwpIHsKLSAgICAgIGxhc3Rfb3V0
cHV0X2xldmVsID0gY3VycmVudF9vdXRwdXRfbGV2ZWw7Ci0gICAgICBoYXNfbGFzdF9vdXRwdXRf
bGV2ZWwgPSB0cnVlOwotICAgIH0KLSAgICBFWFBFQ1RfTEUobGFzdF9vdXRwdXRfbGV2ZWwsIGN1
cnJlbnRfb3V0cHV0X2xldmVsKTsKLSAgICBsYXN0X291dHB1dF9sZXZlbCA9IGN1cnJlbnRfb3V0
cHV0X2xldmVsOwotICB9CisgIExpbWl0ZXIgbGltaXRlcihzYW1wbGVfcmF0ZV9oeiwgJmFwbV9k
YXRhX2R1bXBlciwgIiIpOworCisgIFZlY3RvckZsb2F0RnJhbWUgdmVjdG9yc193aXRoX2Zsb2F0
X2ZyYW1lKDEsIHNhbXBsZV9yYXRlX2h6IC8gMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrTWF4QWJzRmxvYXRTMTZWYWx1ZSk7CisgIGxpbWl0ZXIuUHJv
Y2Vzcyh2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUuZmxvYXRfZnJhbWVfdmlldygpKTsKIH0KIAot
VEVTVChGaXhlZERpZ2l0YWxHYWluQ29udHJvbGxlcjJMaW1pdGVyLCBHYWluQ3VydmVTaG91bGRC
ZUNvbnRpbnVvdXMpIHsKLSAgTGltaXRlciBsOwotICBmbG9hdCBsYXN0X291dHB1dF9sZXZlbCA9
IDAuZjsKLSAgYm9vbCBoYXNfbGFzdF9vdXRwdXRfbGV2ZWwgPSBmYWxzZTsKLSAgY29uc3RleHBy
IGZsb2F0IGtNYXhEZWx0YSA9IDAuNWY7Ci0gIGZvciAoZmxvYXQgbGV2ZWwgPSAtOTAuZjsgbGV2
ZWwgPD0gbC5tYXhfaW5wdXRfbGV2ZWxfZGIoKTsgbGV2ZWwgKz0gMC41ZikgewotICAgIGNvbnN0
IGZsb2F0IGN1cnJlbnRfb3V0cHV0X2xldmVsID0gbC5HZXRPdXRwdXRMZXZlbERiZnMobGV2ZWwp
OwotICAgIGlmICghaGFzX2xhc3Rfb3V0cHV0X2xldmVsKSB7Ci0gICAgICBsYXN0X291dHB1dF9s
ZXZlbCA9IGN1cnJlbnRfb3V0cHV0X2xldmVsOwotICAgICAgaGFzX2xhc3Rfb3V0cHV0X2xldmVs
ID0gdHJ1ZTsKLSAgICB9Ci0gICAgRVhQRUNUX0xFKGN1cnJlbnRfb3V0cHV0X2xldmVsLCBsYXN0
X291dHB1dF9sZXZlbCArIGtNYXhEZWx0YSk7Ci0gICAgbGFzdF9vdXRwdXRfbGV2ZWwgPSBjdXJy
ZW50X291dHB1dF9sZXZlbDsKK1RFU1QoTGltaXRlciwgT3V0cHV0Vm9sdW1lQWJvdmVUaHJlc2hv
bGQpIHsKKyAgY29uc3QgaW50IHNhbXBsZV9yYXRlX2h6ID0gNDgwMDA7CisgIGNvbnN0IGZsb2F0
IGlucHV0X2xldmVsID0KKyAgICAgIChrTWF4QWJzRmxvYXRTMTZWYWx1ZSArIERiZnNUb0Zsb2F0
UzE2KHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnMpKSAvCisgICAgICAyLmY7CisgIEFw
bURhdGFEdW1wZXIgYXBtX2RhdGFfZHVtcGVyKDApOworCisgIExpbWl0ZXIgbGltaXRlcihzYW1w
bGVfcmF0ZV9oeiwgJmFwbV9kYXRhX2R1bXBlciwgIiIpOworCisgIC8vIEdpdmUgdGhlIGxldmVs
IGVzdGltYXRvciB0aW1lIHRvIGFkYXB0LgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkg
eworICAgIFZlY3RvckZsb2F0RnJhbWUgdmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lKDEsIHNhbXBs
ZV9yYXRlX2h6IC8gMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlucHV0X2xldmVsKTsKKyAgICBsaW1pdGVyLlByb2Nlc3ModmVjdG9yc193aXRoX2Zs
b2F0X2ZyYW1lLmZsb2F0X2ZyYW1lX3ZpZXcoKSk7CiAgIH0KLX0KIAotVEVTVChGaXhlZERpZ2l0
YWxHYWluQ29udHJvbGxlcjJMaW1pdGVyLCBPdXRwdXRHYWluU2hvdWxkQmVMZXNzVGhhbkZ1bGxT
Y2FsZSkgewotICBMaW1pdGVyIGw7Ci0gIGZvciAoZmxvYXQgbGV2ZWwgPSAtOTAuZjsgbGV2ZWwg
PD0gbC5tYXhfaW5wdXRfbGV2ZWxfZGIoKTsgbGV2ZWwgKz0gMC41ZikgewotICAgIGNvbnN0IGZs
b2F0IGN1cnJlbnRfb3V0cHV0X2xldmVsID0gbC5HZXRPdXRwdXRMZXZlbERiZnMobGV2ZWwpOwot
ICAgIEVYUEVDVF9MRShjdXJyZW50X291dHB1dF9sZXZlbCwgMC5mKTsKKyAgVmVjdG9yRmxvYXRG
cmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUoMSwgc2FtcGxlX3JhdGVfaHogLyAxMDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2xldmVsKTsK
KyAgbGltaXRlci5Qcm9jZXNzKHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZS5mbG9hdF9mcmFtZV92
aWV3KCkpOworICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY2hhbm5lbCA9CisgICAgICB2
ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUuZmxvYXRfZnJhbWVfdmlldygpLmNoYW5uZWwoMCk7CisK
KyAgZm9yIChjb25zdCBhdXRvJiBzYW1wbGUgOiBjaGFubmVsKSB7CisgICAgRVhQRUNUX0xUKDAu
OWYgKiBrTWF4QWJzRmxvYXRTMTZWYWx1ZSwgc2FtcGxlKTsKICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9sZXZlbF9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9ub2lzZV9sZXZlbF9lc3RpbWF0b3IuY2MKaW5kZXggZDlhYWYxZjliZDNmNjY4OWRlN2ZhZDA0
N2I5MzM0YTNmMGY3MDZkMi4uNmU0MzY3MmNlMDMxNmYyNzYyY2U5NjBlNjI2MDdiYzg1Yjk3MmM2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbm9pc2VfbGV2ZWxfZXN0aW1hdG9yLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL25vaXNlX2xldmVsX2VzdGltYXRvci5jYwpAQCAtMTAsMTMgKzEw
LDE1IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9s
ZXZlbF9lc3RpbWF0b3IuaCIKIAotI2luY2x1ZGUgPG1hdGguaD4KLQorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxu
dW1lcmljPgogCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJjb21tb25f
YXVkaW8vaW5jbHVkZS9hdWRpb191dGlsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9ub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9zcGVj
dHJ1bV9lc3RpbWF0b3IuY2MKaW5kZXggOWUwODEyNmU4OTJlMzc1MmM2OWFiM2ZjODEyMGNlNjRk
NTFhMmQxNy4uNTczNWZhZjNkMmNiZDM2NGQwZDUwYzhiNWFkMGI0YWJiMGQwMWNkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL25vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5jYwpAQCAtMTYsNiArMTYsNyBA
QAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
YXJyYXlzaXplLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQv
ZmVhdHVyZXNfZXh0cmFjdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVyZXNf
ZXh0cmFjdGlvbi5jYwppbmRleCA4YWI1NjczNmEyZjJiOGI5MTlmNDNmNjQxNWJmZjE0YjkwMjQy
NjJhLi44ZjQ3MmE1NWVkNjQ5ZDI4MTIxYjllYTRjMmJjMTU3NDVjMDk2ZWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2ZlYXR1cmVzX2V4dHJhY3Rpb24uY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZWF0dXJlc19leHRyYWN0aW9uLmNjCkBAIC0xMCw2ICsxMCw4
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2Zl
YXR1cmVzX2V4dHJhY3Rpb24uaCIKIAorI2luY2x1ZGUgPGFycmF5PgorCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9scF9yZXNpZHVhbC5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5f
dmFkL2ZlYXR1cmVzX2V4dHJhY3Rpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVy
ZXNfZXh0cmFjdGlvbi5oCmluZGV4IDFmNjM4ODVjNGU2ZDg3NzRjMmM0NGRjMDExMjVmNTk4YTc1
M2E0MDIuLmNlNWNjZTE4NTdjZDQxN2JjYmVhNGQ3OWQwMTE5NDRjYjg2ZTVlNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVyZXNfZXh0cmFjdGlvbi5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVyZXNfZXh0cmFjdGlvbi5oCkBAIC0xMSwxMiArMTEs
MTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9GRUFU
VVJFU19FWFRSQUNUSU9OX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0My
X1JOTl9WQURfRkVBVFVSRVNfRVhUUkFDVElPTl9IXwogCi0jaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYmlxdWFkX2ZpbHRlci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvY29tbW9uLmgiCisjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9pbmZvLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFy
Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3Nl
cXVlbmNlX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L3Jubl92YWQvc3BlY3RyYWxfZmVhdHVyZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L3Jubl92YWQvZmZ0X3V0aWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2ZmdF91dGlsLmNj
CmluZGV4IDEwMTc0MDBhMjgyNGQxYmJhMmM0NjJjMDY3MzM0OGJjMTRhNWJhYTAuLmExYzVkYWM0
Nzc3NGU0MGIxODk3MDhiNjU0NWQ1ZjlhZjkwMWVlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL3Jubl92YWQvZmZ0X3V0aWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZnRf
dXRpbC5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZnRfdXRpbC5oIgogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAj
aW5jbHVkZSA8Y21hdGg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvbHBfcmVzaWR1YWwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L3Jubl92YWQvbHBfcmVzaWR1YWwuaAppbmRleCBiZmZhZmQyOTFmOTM2ZTc5YTQ5NjFiMWY3ZGRk
YmI0YjVlMTU3ZjIxLi5jZGRlZGNhNWQ2MTRlYzk0YTBmMzY1NDRiNzNkOTMwOWU0ZThkZDZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2xwX3Jlc2lkdWFsLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvcm5uX3ZhZC9scF9yZXNpZHVhbC5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZu
ZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX1JOTl9WQURfTFBfUkVTSURVQUxfSF8K
ICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9MUF9SRVNJRFVB
TF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92
YWQvcGl0Y2hfc2VhcmNoLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFyY2gu
Y2MKaW5kZXggMWY4ODU5ZDViMDRkNDUzNTA2YmExODVlN2NjOTBlZThkNGFmOWFmMy4uYWEwYjc1
MWQyOGExYWJkNWU0ZDcwY2Q1ZTJkMGM5MWU2NDRmMDgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFyY2guY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3Zh
ZC9waXRjaF9zZWFyY2guY2MKQEAgLTEwLDYgKzEwLDExIEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaC5oIgogCisjaW5jbHVk
ZSA8YXJyYXk+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKworI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBybm5fdmFkIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFyY2hfaW50ZXJuYWwuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaF9pbnRlcm5hbC5jYwppbmRleCBiN2I0
NGQyOTM3NjljMGFmOTMyNDE2OTIyYjc1ZWQ2YWFlMDAyNTM0Li4zMmVlOGMwMGRmODQ5YjU2NDIx
NzBhMDgwMzA0YzUxZGYzYzY3ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFk
L3BpdGNoX3NlYXJjaF9pbnRlcm5hbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3Bp
dGNoX3NlYXJjaF9pbnRlcm5hbC5jYwpAQCAtMTAsMTAgKzEwLDEyIEBACiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaF9pbnRlcm5h
bC5oIgogCisjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNvbXBsZXg+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNs
dWRlIDxudW1lcmljPgotI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2NvbW1vbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFy
Y2hfaW50ZXJuYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvcGl0Y2hfc2VhcmNoX2ludGVy
bmFsLmgKaW5kZXggNzVmN2YxN2E0MmZjMjk2OGYzYzI4N2VlMTQ2ZDI2NzMxYWU1ODY5My4uYmI3
NDdiYjAzZTRjNWQ4OWMxMjJkZmM4MjQ0Nzc2OTNkMzhmZmI1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFyY2hfaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaF9pbnRlcm5hbC5oCkBAIC0xMSw2ICsxMSw3IEBACiAj
aWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX1JOTl9WQURfUElUQ0hfU0VBUkNI
X0lOVEVSTkFMX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX1JOTl9W
QURfUElUQ0hfU0VBUkNIX0lOVEVSTkFMX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNs
dWRlIDxhcnJheT4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3Jubi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9ybm4u
aAppbmRleCBiM2EzYjljNDg1YzE3MmY2Mjc2Y2I0OWEyYmI1NGQxN2EwM2M4YjE1Li5hN2QwNTdk
NTc2OTU5MDAxYTQ0ZjdkM2IwYTc5Njk5NjA5NzRjMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9ybm5fdmFkL3Jubi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvcm5uLmgKQEAg
LTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5O
X1ZBRF9STk5fSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZB
RF9STk5fSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgog
I2luY2x1ZGUgPGFycmF5PgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvcm5uX3ZhZF90b29sLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvcm5uX3ZhZC9ybm5fdmFkX3Rvb2wuY2MKaW5kZXggNWZiYTBiZmFjODc3YzRkYzZkZmFmODQy
Njg3MDZjNjMwYmM2NzliZi4uYjY2ZGZkNjg0ZDc0NDNjODM2NjlmMjM3YzU2MWQzYWNlOWYwNTg2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9ybm5fdmFkX3Rvb2wuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9ybm5fdmFkX3Rvb2wuY2MKQEAgLTI1LDIyICsyNSwy
MiBAQCBuYW1lc3BhY2Ugcm5uX3ZhZCB7CiBuYW1lc3BhY2UgdGVzdCB7CiBuYW1lc3BhY2Ugewog
Ci1ERUZJTkVfc3RyaW5nKGksICIiLCAiUGF0aCB0byB0aGUgaW5wdXQgd2F2IGZpbGUiKTsKK1dF
QlJUQ19ERUZJTkVfc3RyaW5nKGksICIiLCAiUGF0aCB0byB0aGUgaW5wdXQgd2F2IGZpbGUiKTsK
IHN0ZDo6c3RyaW5nIElucHV0V2F2RmlsZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6
c3RyaW5nPihGTEFHX2kpOwogfQogCi1ERUZJTkVfc3RyaW5nKGYsICIiLCAiUGF0aCB0byB0aGUg
b3V0cHV0IGZlYXR1cmVzIGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGYsICIiLCAiUGF0
aCB0byB0aGUgb3V0cHV0IGZlYXR1cmVzIGZpbGUiKTsKIHN0ZDo6c3RyaW5nIE91dHB1dEZlYXR1
cmVzRmlsZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2YpOwog
fQogCi1ERUZJTkVfc3RyaW5nKG8sICIiLCAiUGF0aCB0byB0aGUgb3V0cHV0IFZBRCBwcm9iYWJp
bGl0aWVzIGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKG8sICIiLCAiUGF0aCB0byB0aGUg
b3V0cHV0IFZBRCBwcm9iYWJpbGl0aWVzIGZpbGUiKTsKIHN0ZDo6c3RyaW5nIE91dHB1dFZhZFBy
b2JzRmlsZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX28pOwog
fQogCi1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKIAog
fSAgLy8gbmFtZXNwYWNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc3Bl
Y3RyYWxfZmVhdHVyZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc3BlY3RyYWxfZmVhdHVy
ZXMuaAppbmRleCBiZWRkN2FiM2Q3ZDFhZGE1ODI0ZjE3NmE3YjU1YTk3OTdiM2I3NWI4Li41YzMz
ZGNkZDI0NTYxNmI4OTEzMWQwYjdmYzM2YmU3MzFhYmE0ZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9ybm5fdmFkL3NwZWN0cmFsX2ZlYXR1cmVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
cm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJlcy5oCkBAIC0xMyw2ICsxMyw3IEBACiAKICNpbmNsdWRl
IDxhcnJheT4KICNpbmNsdWRlIDxjb21wbGV4PgorI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL3Jubl92YWQvc3BlY3RyYWxfZmVhdHVyZXNfaW50ZXJuYWwuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9ybm5fdmFkL3NwZWN0cmFsX2ZlYXR1cmVzX2ludGVybmFsLmNjCmluZGV4IDlm
NGUyMTg1MGY1Zjc2ZTljMGZiNmI3MWFhMjhmNGY5ZDFhZGFlMTIuLjc0MjExZmU4MTRkYTg4NzE5
NjlhM2FiMDYwMGU1YTc1NTJhOGM4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92
YWQvc3BlY3RyYWxfZmVhdHVyZXNfaW50ZXJuYWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5u
X3ZhZC9zcGVjdHJhbF9mZWF0dXJlc19pbnRlcm5hbC5jYwpAQCAtMTIsNiArMTIsNyBAQAogCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRkZWY+
CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJlc19pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJlc19pbnRlcm5hbC5oCmluZGV4IDQ1YmIzODIwNzhl
NjU3MjczNDJkODQ2MzNhYmI2NThkMGQ4OTE5ZDguLmVkZmQxOGNjODUwNjNiMjhjNzJiZmNkNmE3
MmM5Y2U4YjYzMzkxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc3BlY3Ry
YWxfZmVhdHVyZXNfaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3NwZWN0
cmFsX2ZlYXR1cmVzX2ludGVybmFsLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9TUEVDVFJBTF9GRUFUVVJFU19JTlRFUk5B
TF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9STk5fVkFEX1NQRUNU
UkFMX0ZFQVRVUkVTX0lOVEVSTkFMX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRl
IDxhcnJheT4KICNpbmNsdWRlIDxjb21wbGV4PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9zYXR1cmF0aW9uX3Byb3RlY3Rvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3NhdHVyYXRpb25fcHJv
dGVjdG9yLmNjCmluZGV4IDA4OTU1ODNiODM5NjJmZjM2MGFlNjAxM2UzYTZiYmRmNjZhY2Q3ZWQu
Ljk0YTUyZWFhY2FhZDg2Nzc3MGE0NzVkYmMxYmIzM2FiZjJhODYwODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL3NhdHVyYXRpb25fcHJvdGVjdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L3NhdHVyYXRpb25fcHJvdGVjdG9yLmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2F0dXJhdGlvbl9wcm90ZWN0b3IuaCIKIAogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KIAogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCkBAIC01Niw5ICs1NywxNCBAQCBmbG9h
dCBTYXR1cmF0aW9uUHJvdGVjdG9yOjpQZWFrRW52ZWxvcGVyOjpRdWVyeSgpIGNvbnN0IHsKIH0K
IAogU2F0dXJhdGlvblByb3RlY3Rvcjo6U2F0dXJhdGlvblByb3RlY3RvcihBcG1EYXRhRHVtcGVy
KiBhcG1fZGF0YV9kdW1wZXIpCisgICAgOiBTYXR1cmF0aW9uUHJvdGVjdG9yKGFwbV9kYXRhX2R1
bXBlciwgR2V0RXh0cmFTYXR1cmF0aW9uTWFyZ2luT2Zmc2V0RGIoKSkgeworfQorCitTYXR1cmF0
aW9uUHJvdGVjdG9yOjpTYXR1cmF0aW9uUHJvdGVjdG9yKEFwbURhdGFEdW1wZXIqIGFwbV9kYXRh
X2R1bXBlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
ZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGIpCiAgICAgOiBhcG1fZGF0YV9kdW1wZXJfKGFwbV9k
YXRhX2R1bXBlciksCiAgICAgICBsYXN0X21hcmdpbl8oR2V0SW5pdGlhbFNhdHVyYXRpb25NYXJn
aW5EYigpKSwKLSAgICAgIGV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2RiXyhHZXRFeHRyYVNhdHVy
YXRpb25NYXJnaW5PZmZzZXREYigpKSB7fQorICAgICAgZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5f
ZGJfKGV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2RiKSB7fQogCiB2b2lkIFNhdHVyYXRpb25Qcm90
ZWN0b3I6OlVwZGF0ZU1hcmdpbigKICAgICBjb25zdCBWYWRXaXRoTGV2ZWw6OkxldmVsQW5kUHJv
YmFiaWxpdHkmIHZhZF9kYXRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2F0dXJhdGlv
bl9wcm90ZWN0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3NhdHVyYXRpb25fcHJvdGVjdG9yLmgKaW5k
ZXggMTcwNWY2YWM1ZmJiYmIwYTIxZmYxY2VlNDNiY2U5NzVmZWI1ZDY4Mi4uZTYzNzQ2OTA3MGVh
YjYwMzJhMWY2NmU1ZmI1ZDkwNTljODVhYzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
c2F0dXJhdGlvbl9wcm90ZWN0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9zYXR1cmF0aW9uX3By
b3RlY3Rvci5oCkBAIC0yNCw2ICsyNCw5IEBAIGNsYXNzIFNhdHVyYXRpb25Qcm90ZWN0b3Igewog
IHB1YmxpYzoKICAgZXhwbGljaXQgU2F0dXJhdGlvblByb3RlY3RvcihBcG1EYXRhRHVtcGVyKiBh
cG1fZGF0YV9kdW1wZXIpOwogCisgIFNhdHVyYXRpb25Qcm90ZWN0b3IoQXBtRGF0YUR1bXBlciog
YXBtX2RhdGFfZHVtcGVyLAorICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGV4dHJhX3NhdHVy
YXRpb25fbWFyZ2luX2RiKTsKKwogICAvLyBVcGRhdGUgYW5kIHJldHVybiBtYXJnaW4gZXN0aW1h
dGUuIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQKICAgLy8gd2hlbmV2ZXIgYSBmcmFtZSBp
cyByZWxpYWJseSBjbGFzc2lmaWVkIGFzICdzcGVlY2gnLgogICAvLwpAQCAtNjAsNyArNjMsNyBA
QCBjbGFzcyBTYXR1cmF0aW9uUHJvdGVjdG9yIHsKIAogICBmbG9hdCBsYXN0X21hcmdpbl87CiAg
IFBlYWtFbnZlbG9wZXIgcGVha19lbnZlbG9wZXJfOwotICBmbG9hdCBleHRyYV9zYXR1cmF0aW9u
X21hcmdpbl9kYl87CisgIGNvbnN0IGZsb2F0IGV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2RiXzsK
IH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L3NpZ25hbF9jbGFzc2lmaWVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2lnbmFsX2NsYXNzaWZpZXIu
Y2MKaW5kZXggMGVjMzQxNDhiOTM1M2E4ODRlMWMxYTIwOGYwNDNhZDk1ZmQ2MzZhZi4uODc3OGM0
OTQyNjU3OTdhNGZmODhiNjIwZTc4MDRiOTQ0YWY1M2Y1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvc2lnbmFsX2NsYXNzaWZpZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2lnbmFsX2Ns
YXNzaWZpZXIuY2MKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9kb3duX3NhbXBsZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9ub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL3ZhZF93aXRoX2xldmVsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2
ZWwuY2MKaW5kZXggZGVjZmFjZDBjMTgwMzc2MDgzNTdjYjdkMTUzZDZkYzljY2Q4MTMxMi4uNTI5
NzBkZmU2NzdjM2Q1ZTcxZWZjMmZkMmU4N2FiNGVjNGEzNTIwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhf
bGV2ZWwuY2MKQEAgLTExLDEwICsxMSwxMiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVsLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Y21hdGg+CiAKKyNpbmNsdWRlICJhcGkvYXJyYXlf
dmlldy5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2NvbW1vbi5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L3ZhZF93aXRoX2xldmVsLmgKaW5kZXggNjdhMDBjZWQ2YzEwNjA5NjY5OTFkYjRiOGVjODNkNTlj
ZGEwYTgyNS4uYjBhZDg2OGQ0Yjk3YzRhNmI1MzYwZWNlMTM2M2FhMDU2YmUwNTE2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi92YWRfd2l0aF9sZXZlbC5oCkBAIC0xMSw3ICsxMSw2IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BR0MyX1ZBRF9XSVRIX0xFVkVMX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BR0MyX1ZBRF9XSVRIX0xFVkVMX0hfCiAKLSNpbmNsdWRlICJhcGkvYXJy
YXlfdmlldy5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yZXNhbXBsZXIvaW5jbHVkZS9wdXNo
X3Jlc2FtcGxlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Ju
bl92YWQvZmVhdHVyZXNfZXh0cmFjdGlvbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL3Jubl92YWQvcm5uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92
YWRfd2l0aF9sZXZlbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVs
X3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5YWVlNjJiYTlhYWI0MTBhZjFiZTJkMDE5NTg3ZmRj
MmNmNTYzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZl
bF91bml0dGVzdC5jYwpAQCAtMCwwICsxLDQwIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKwor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVsLmgi
CisKKyNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25h
bWVzcGFjZSB0ZXN0IHsKKworVEVTVChBdXRvbWF0aWNHYWluQ29udHJvbGxlcjJWYWRXaXRoTGV2
ZWxFc3RpbWF0b3IsCisgICAgIFBlYWtMZXZlbEdyZWF0ZXJUaGFuUm1zTGV2ZWwpIHsKKyAgY29u
c3RleHByIHNpemVfdCBrU2FtcGxlUmF0ZUh6ID0gODAwMDsKKworICAvLyAxMCBtcyBpbnB1dCBm
cmFtZSwgY29uc3RhbnQgZXhjZXB0IGZvciBvbmUgcGVhayB2YWx1ZS4KKyAgLy8gSGFuZGNyYWZ0
ZWQgc28gdGhhdCB0aGUgYXZlcmFnZSBpcyBsb3dlciB0aGFuIHRoZSBwZWFrIHZhbHVlLgorICBz
dGQ6OmFycmF5PGZsb2F0LCBrU2FtcGxlUmF0ZUh6IC8gMTAwPiBmcmFtZTsKKyAgZnJhbWUuZmls
bCgxMDAwLmYpOworICBmcmFtZVsxMF0gPSAyMDAwLmY7CisgIGZsb2F0KiBjb25zdCBjaGFubmVs
MCA9IGZyYW1lLmRhdGEoKTsKKyAgQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IGZyYW1lX3ZpZXcoJmNo
YW5uZWwwLCAxLCBmcmFtZS5zaXplKCkpOworCisgIC8vIENvbXB1dGUgYXVkaW8gZnJhbWUgbGV2
ZWxzICh0aGUgVkFEIHJlc3VsdCBpcyBpZ25vcmVkKS4KKyAgVmFkV2l0aExldmVsIHZhZF93aXRo
X2xldmVsOworICBhdXRvIGxldmVsc19hbmRfdmFkX3Byb2IgPSB2YWRfd2l0aF9sZXZlbC5BbmFs
eXplRnJhbWUoZnJhbWVfdmlldyk7CisKKyAgLy8gQ29tcGFyZSBwZWFrIGFuZCBSTVMgbGV2ZWxz
LgorICBFWFBFQ1RfTFQobGV2ZWxzX2FuZF92YWRfcHJvYi5zcGVlY2hfcm1zX2RiZnMsCisgICAg
ICAgICAgICBsZXZlbHNfYW5kX3ZhZF9wcm9iLnNwZWVjaF9wZWFrX2RiZnMpOworfQorCit9ICAv
LyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2F1ZGlvX2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuY2MKaW5kZXgg
ZjE2M2Y1YTA3ZGVkMjg5MjMzZmU4ZmFhOGNhMjlkZGEwNDFjYzZhNS4uMGMzOGE0ZmU4MmI4NTRk
ZTkwNmYwNmU2NzVmYzY5NDg0MmM5YjYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1
ZmZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmNjCkBAIC0xMCwxMSArMTAsMTMg
QEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIK
IAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisKICNpbmNsdWRlICJj
b21tb25fYXVkaW8vY2hhbm5lbF9idWZmZXIuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vaW5j
bHVkZS9hdWRpb191dGlsLmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNo
X3NpbmNfcmVzYW1wbGVyLmgiCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNz
aW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgotI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3Npbmcvc3BsaXR0aW5nX2ZpbHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZm
ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaAppbmRleCBhZGUzZWVjMTNkYjJhMTczNzdk
NGNlYmYwNzRiYTc3MmNjZmFjNTVhLi40Njk2NDZlOGRiNGI2OGQ5ZmQ5NzQ4Mjg5ZjQ1YTNmMGRk
ZDM2NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2F1ZGlvX2J1ZmZlci5oCkBAIC0xMSwxOCArMTEsMjEgQEAKICNpZm5kZWYgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0FVRElPX0JVRkZFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfQVVESU9fQlVGRkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2No
YW5uZWxfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1
ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9zcGxpdHRpbmdfZmlsdGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZ3Rlc3RfcHJvZF91dGls
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBQdXNoU2luY1Jlc2FtcGxlcjsKIGNs
YXNzIElGQ2hhbm5lbEJ1ZmZlcjsKK2NsYXNzIFB1c2hTaW5jUmVzYW1wbGVyOworY2xhc3MgU3Bs
aXR0aW5nRmlsdGVyOwogCiBlbnVtIEJhbmQgeyBrQmFuZDBUbzhrSHogPSAwLCBrQmFuZDhUbzE2
a0h6ID0gMSwga0JhbmQxNlRvMjRrSHogPSAyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
dWRpb19wcm9jZXNzaW5nX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ19pbXBs
LmNjCmluZGV4IGI5MTUzZmEwOGI5MjA0MGE2NmI4OGFiMmJmYWFiMjA5Yzk1ZWNiNzIuLjI5Mzdj
MDY4MGJmNWFjNjk5YjJjMjhmZjk2ODQxOTY4ODM4MWYxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hdWRpb19wcm9jZXNzaW5nX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3Np
bmdfaW1wbC5jYwpAQCAtMTAsMTUgKzEwLDE2IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ19pbXBsLmgiCiAKLSNpbmNsdWRlIDxtYXRoLmg+
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8c3Ry
aW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIK
ICNpbmNsdWRlICJjb21tb25fYXVkaW8vYXVkaW9fY29udmVydGVyLmgiCi0jaW5jbHVkZSAiY29t
bW9uX2F1ZGlvL2NoYW5uZWxfYnVmZmVyLmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1
ZGUvYXVkaW9fdXRpbC5oIgotI2luY2x1ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJvY2Vzc2lu
Zy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNzaW5nX2xpYnJhcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19jb3JlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYy9hZ2NfbWFuYWdlcl9kaXJlY3QuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCkBAIC0yOCw2ICsyOSw3IEBACiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9mb3JfZXhwZXJpbWVu
dGFsX2FnYy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRy
b2xfaW1wbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRy
b2xsZXIyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVk
aW9fZnJhbWVfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sZXZl
bF9lc3RpbWF0b3JfaW1wbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9s
b2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9sb3dfY3V0X2ZpbHRlci5oIgpAQCAtMzcsMTAgKzM5LDkgQEAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2VfZGV0ZWN0aW9uX2ltcGwuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9hdG9taWNvcHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2Fy
Y2guaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS90cmFjZV9ldmVudC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJp
Y3MuaCIKQEAgLTExNSwyOSArMTE2LDYgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWF4QWxsb3dl
ZFZhbHVlc09mU2FtcGxlc1BlckZyYW1lID0gNDgwOwogLy8gVE9ETyhwZWFoKTogRGVjcmVhc2Ug
dGhpcyBvbmNlIHdlIHByb3Blcmx5IGhhbmRsZSBodWdlbHkgdW5iYWxhbmNlZAogLy8gcmV2ZXJz
ZSBhbmQgZm9yd2FyZCBjYWxsIG51bWJlcnMuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhOdW1G
cmFtZXNUb0J1ZmZlciA9IDEwMDsKLQotY2xhc3MgSGlnaFBhc3NGaWx0ZXJJbXBsIDogcHVibGlj
IEhpZ2hQYXNzRmlsdGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEhpZ2hQYXNzRmlsdGVySW1w
bChBdWRpb1Byb2Nlc3NpbmdJbXBsKiBhcG0pIDogYXBtXyhhcG0pIHt9Ci0gIH5IaWdoUGFzc0Zp
bHRlckltcGwoKSBvdmVycmlkZSA9IGRlZmF1bHQ7Ci0KLSAgLy8gSGlnaFBhc3NGaWx0ZXIgaW1w
bGVtZW50YXRpb24uCi0gIGludCBFbmFibGUoYm9vbCBlbmFibGUpIG92ZXJyaWRlIHsKLSAgICBh
cG1fLT5NdXRhdGVDb25maWcoW2VuYWJsZV0oQXVkaW9Qcm9jZXNzaW5nOjpDb25maWcqIGNvbmZp
ZykgewotICAgICAgY29uZmlnLT5oaWdoX3Bhc3NfZmlsdGVyLmVuYWJsZWQgPSBlbmFibGU7Ci0g
ICAgfSk7Ci0KLSAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprTm9FcnJvcjsKLSAgfQotCi0g
IGJvb2wgaXNfZW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICByZXR1cm4gYXBtXy0+R2V0
Q29uZmlnKCkuaGlnaF9wYXNzX2ZpbHRlci5lbmFibGVkOwotICB9Ci0KLSBwcml2YXRlOgotICBB
dWRpb1Byb2Nlc3NpbmdJbXBsKiBhcG1fOwotICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RS
VUNUT1JTKEhpZ2hQYXNzRmlsdGVySW1wbCk7Ci19OwogfSAgLy8gbmFtZXNwYWNlCiAKIC8vIFRo
cm91Z2hvdXQgd2VicnRjLCBpdCdzIGFzc3VtZWQgdGhhdCBzdWNjZXNzIGlzIHJlcHJlc2VudGVk
IGJ5IHplcm8uCkBAIC0yNDksOCArMjI3LDYgQEAgYm9vbCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpB
cG1TdWJtb2R1bGVTdGF0ZXM6Okxvd0N1dEZpbHRlcmluZ1JlcXVpcmVkKCkgY29uc3Qgewogc3Ry
dWN0IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkFwbVB1YmxpY1N1Ym1vZHVsZXMgewogICBBcG1QdWJs
aWNTdWJtb2R1bGVzKCkge30KICAgLy8gQWNjZXNzZWQgZXh0ZXJuYWxseSBvZiBBUE0gd2l0aG91
dCBhbnkgbG9jayBhY3F1aXJlZC4KLSAgc3RkOjp1bmlxdWVfcHRyPEVjaG9DYW5jZWxsYXRpb25J
bXBsPiBlY2hvX2NhbmNlbGxhdGlvbjsKLSAgc3RkOjp1bmlxdWVfcHRyPEVjaG9Db250cm9sTW9i
aWxlSW1wbD4gZWNob19jb250cm9sX21vYmlsZTsKICAgc3RkOjp1bmlxdWVfcHRyPEdhaW5Db250
cm9sSW1wbD4gZ2Fpbl9jb250cm9sOwogICBzdGQ6OnVuaXF1ZV9wdHI8TGV2ZWxFc3RpbWF0b3JJ
bXBsPiBsZXZlbF9lc3RpbWF0b3I7CiAgIHN0ZDo6dW5pcXVlX3B0cjxOb2lzZVN1cHByZXNzaW9u
SW1wbD4gbm9pc2Vfc3VwcHJlc3Npb247CkBAIC0yNzYsMTEgKzI1MiwxNCBAQCBzdHJ1Y3QgQXVk
aW9Qcm9jZXNzaW5nSW1wbDo6QXBtUHJpdmF0ZVN1Ym1vZHVsZXMgewogICBzdGQ6OnVuaXF1ZV9w
dHI8R2FpbkNvbnRyb2xsZXIyPiBnYWluX2NvbnRyb2xsZXIyOwogICBzdGQ6OnVuaXF1ZV9wdHI8
TG93Q3V0RmlsdGVyPiBsb3dfY3V0X2ZpbHRlcjsKICAgcnRjOjpzY29wZWRfcmVmcHRyPEVjaG9E
ZXRlY3Rvcj4gZWNob19kZXRlY3RvcjsKKyAgc3RkOjp1bmlxdWVfcHRyPEVjaG9DYW5jZWxsYXRp
b25JbXBsPiBlY2hvX2NhbmNlbGxhdGlvbjsKICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9Db250cm9s
PiBlY2hvX2NvbnRyb2xsZXI7CisgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvQ29udHJvbE1vYmlsZUlt
cGw+IGVjaG9fY29udHJvbF9tb2JpbGU7CiAgIHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21Qcm9jZXNz
aW5nPiBjYXB0dXJlX3Bvc3RfcHJvY2Vzc29yOwogICBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tUHJv
Y2Vzc2luZz4gcmVuZGVyX3ByZV9wcm9jZXNzb3I7CiAgIHN0ZDo6dW5pcXVlX3B0cjxHYWluQXBw
bGllcj4gcHJlX2FtcGxpZmllcjsKICAgc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUF1ZGlvQW5hbHl6
ZXI+IGNhcHR1cmVfYW5hbHl6ZXI7CisgIHN0ZDo6dW5pcXVlX3B0cjxMZXZlbEVzdGltYXRvcklt
cGw+IG91dHB1dF9sZXZlbF9lc3RpbWF0b3I7CiB9OwogCiBBdWRpb1Byb2Nlc3NpbmdCdWlsZGVy
OjpBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkgPSBkZWZhdWx0OwpAQCAtMzUyLDcgKzMzMSw2IEBA
IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkF1ZGlvUHJvY2Vzc2luZ0ltcGwoCiAgICAgICByZW5kZXJf
cnVudGltZV9zZXR0aW5nc18oa1J1bnRpbWVTZXR0aW5nUXVldWVTaXplKSwKICAgICAgIGNhcHR1
cmVfcnVudGltZV9zZXR0aW5nc19lbnF1ZXVlcl8oJmNhcHR1cmVfcnVudGltZV9zZXR0aW5nc18p
LAogICAgICAgcmVuZGVyX3J1bnRpbWVfc2V0dGluZ3NfZW5xdWV1ZXJfKCZyZW5kZXJfcnVudGlt
ZV9zZXR0aW5nc18pLAotICAgICAgaGlnaF9wYXNzX2ZpbHRlcl9pbXBsXyhuZXcgSGlnaFBhc3NG
aWx0ZXJJbXBsKHRoaXMpKSwKICAgICAgIGVjaG9fY29udHJvbF9mYWN0b3J5XyhzdGQ6Om1vdmUo
ZWNob19jb250cm9sX2ZhY3RvcnkpKSwKICAgICAgIHN1Ym1vZHVsZV9zdGF0ZXNfKCEhY2FwdHVy
ZV9wb3N0X3Byb2Nlc3NvciwKICAgICAgICAgICAgICAgICAgICAgICAgICEhcmVuZGVyX3ByZV9w
cm9jZXNzb3IsCkBAIC0zOTAsMTAgKzM2OCw2IEBAIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkF1ZGlv
UHJvY2Vzc2luZ0ltcGwoCiAgICAgY2FwdHVyZV9ub25sb2NrZWRfLmVjaG9fY29udHJvbGxlcl9l
bmFibGVkID0KICAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZWNob19jb250cm9sX2ZhY3Rvcnlf
KTsKIAotICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24ucmVzZXQoCi0g
ICAgICAgIG5ldyBFY2hvQ2FuY2VsbGF0aW9uSW1wbCgmY3JpdF9yZW5kZXJfLCAmY3JpdF9jYXB0
dXJlXykpOwotICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS5yZXNl
dCgKLSAgICAgICAgbmV3IEVjaG9Db250cm9sTW9iaWxlSW1wbCgmY3JpdF9yZW5kZXJfLCAmY3Jp
dF9jYXB0dXJlXykpOwogICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+Z2Fpbl9jb250cm9sLnJlc2V0
KAogICAgICAgICBuZXcgR2FpbkNvbnRyb2xJbXBsKCZjcml0X3JlbmRlcl8sICZjcml0X2NhcHR1
cmVfKSk7CiAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5sZXZlbF9lc3RpbWF0b3IucmVzZXQoCkBA
IC00MTIsNiArMzg2LDggQEAgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6QXVkaW9Qcm9jZXNzaW5nSW1w
bCgKICAgICAgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PFJlc2lkdWFsRWNob0RldGVj
dG9yPigpOwogICAgIH0KIAorICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0
aW9uLnJlc2V0KG5ldyBFY2hvQ2FuY2VsbGF0aW9uSW1wbCgpKTsKKyAgICBwcml2YXRlX3N1Ym1v
ZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLnJlc2V0KG5ldyBFY2hvQ29udHJvbE1vYmlsZUlt
cGwoKSk7CiAgICAgLy8gVE9ETyhhbGVzc2lvYik6IE1vdmUgdGhlIGluamVjdGVkIGdhaW4gY29u
dHJvbGxlciBvbmNlIGluamVjdGlvbiBpcwogICAgIC8vIGltcGxlbWVudGVkLgogICAgIHByaXZh
dGVfc3VibW9kdWxlc18tPmdhaW5fY29udHJvbGxlcjIucmVzZXQobmV3IEdhaW5Db250cm9sbGVy
MigpKTsKQEAgLTUzMCwxNiArNTA2LDE2IEBAIGludCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpJbml0
aWFsaXplTG9ja2VkKCkgewogICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHNfLmFwaV9mb3Jt
YXQub3V0cHV0X3N0cmVhbSgpLm51bV9jaGFubmVscygpLAogICAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdHNfLmFwaV9mb3JtYXQub3V0cHV0X3N0cmVhbSgpLm51bV9mcmFtZXMoKSkpOwogCi0g
IHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPkluaXRpYWxpemUoCisgIHBy
aXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5Jbml0aWFsaXplKAogICAgICAg
cHJvY19zYW1wbGVfcmF0ZV9oeigpLCBudW1fcmV2ZXJzZV9jaGFubmVscygpLCBudW1fb3V0cHV0
X2NoYW5uZWxzKCksCiAgICAgICBudW1fcHJvY19jaGFubmVscygpKTsKICAgQWxsb2NhdGVSZW5k
ZXJRdWV1ZSgpOwogCi0gIGludCBzdWNjZXNzID0gcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2Nh
bmNlbGxhdGlvbi0+ZW5hYmxlX21ldHJpY3ModHJ1ZSk7CisgIGludCBzdWNjZXNzID0gcHJpdmF0
ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmVuYWJsZV9tZXRyaWNzKHRydWUpOwog
ICBSVENfRENIRUNLX0VRKDAsIHN1Y2Nlc3MpOwotICBzdWNjZXNzID0gcHVibGljX3N1Ym1vZHVs
ZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+ZW5hYmxlX2RlbGF5X2xvZ2dpbmcodHJ1ZSk7CisgIHN1
Y2Nlc3MgPSBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+ZW5hYmxlX2Rl
bGF5X2xvZ2dpbmcodHJ1ZSk7CiAgIFJUQ19EQ0hFQ0tfRVEoMCwgc3VjY2Vzcyk7Ci0gIHB1Ymxp
Y19zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+SW5pdGlhbGl6ZSgKKyAgcHJpdmF0
ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+SW5pdGlhbGl6ZSgKICAgICAgIHBy
b2Nfc3BsaXRfc2FtcGxlX3JhdGVfaHooKSwgbnVtX3JldmVyc2VfY2hhbm5lbHMoKSwKICAgICAg
IG51bV9vdXRwdXRfY2hhbm5lbHMoKSk7CiAKQEAgLTY2MiwxOCArNjM4LDE4IEBAIGludCBBdWRp
b1Byb2Nlc3NpbmdJbXBsOjpJbml0aWFsaXplTG9ja2VkKGNvbnN0IFByb2Nlc3NpbmdDb25maWcm
IGNvbmZpZykgewogfQogCiB2b2lkIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkFwcGx5Q29uZmlnKGNv
bnN0IEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnJiBjb25maWcpIHsKLSAgY29uZmlnXyA9IGNvbmZp
ZzsKLQogICAvLyBSdW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgbWFubmVyIHdoZW4gYXBwbHlpbmcg
dGhlIHNldHRpbmdzLgogICBydGM6OkNyaXRTY29wZSBjc19yZW5kZXIoJmNyaXRfcmVuZGVyXyk7
CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoJmNyaXRfY2FwdHVyZV8pOwogCi0gIHB1Ymxp
Y19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPkVuYWJsZSgKKyAgY29uZmlnXyA9IGNv
bmZpZzsKKworICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+RW5hYmxl
KAogICAgICAgY29uZmlnXy5lY2hvX2NhbmNlbGxlci5lbmFibGVkICYmICFjb25maWdfLmVjaG9f
Y2FuY2VsbGVyLm1vYmlsZV9tb2RlKTsKLSAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRy
b2xfbW9iaWxlLT5FbmFibGUoCisgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9t
b2JpbGUtPkVuYWJsZSgKICAgICAgIGNvbmZpZ18uZWNob19jYW5jZWxsZXIuZW5hYmxlZCAmJiBj
b25maWdfLmVjaG9fY2FuY2VsbGVyLm1vYmlsZV9tb2RlKTsKIAotICBwdWJsaWNfc3VibW9kdWxl
c18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zZXRfc3VwcHJlc3Npb25fbGV2ZWwoCisgIHByaXZhdGVf
c3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zZXRfc3VwcHJlc3Npb25fbGV2ZWwoCiAg
ICAgICBjb25maWcuZWNob19jYW5jZWxsZXIubGVnYWN5X21vZGVyYXRlX3N1cHByZXNzaW9uX2xl
dmVsCiAgICAgICAgICAgPyBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6U3VwcHJlc3Npb25MZXZlbDo6
a01vZGVyYXRlU3VwcHJlc3Npb24KICAgICAgICAgICA6IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpT
dXBwcmVzc2lvbkxldmVsOjprSGlnaFN1cHByZXNzaW9uKTsKQEAgLTY5OCw2ICs2NzQsMTMgQEAg
dm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpBcHBseUNvbmZpZyhjb25zdCBBdWRpb1Byb2Nlc3Np
bmc6OkNvbmZpZyYgY29uZmlnKSB7CiAgICAgICAgICAgICAgICAgICAgPDwgY29uZmlnXy5nYWlu
X2NvbnRyb2xsZXIyLmVuYWJsZWQ7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlByZS1hbXBsaWZp
ZXIgYWN0aXZhdGVkOiAiCiAgICAgICAgICAgICAgICAgICAgPDwgY29uZmlnXy5wcmVfYW1wbGlm
aWVyLmVuYWJsZWQ7CisKKyAgaWYgKGNvbmZpZ18ubGV2ZWxfZXN0aW1hdGlvbi5lbmFibGVkICYm
CisgICAgICAhcHJpdmF0ZV9zdWJtb2R1bGVzXy0+b3V0cHV0X2xldmVsX2VzdGltYXRvcikgewor
ICAgIHByaXZhdGVfc3VibW9kdWxlc18tPm91dHB1dF9sZXZlbF9lc3RpbWF0b3IucmVzZXQoCisg
ICAgICAgIG5ldyBMZXZlbEVzdGltYXRvckltcGwoJmNyaXRfY2FwdHVyZV8pKTsKKyAgICBwcml2
YXRlX3N1Ym1vZHVsZXNfLT5vdXRwdXRfbGV2ZWxfZXN0aW1hdG9yLT5FbmFibGUodHJ1ZSk7Cisg
IH0KIH0KIAogdm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpTZXRFeHRyYU9wdGlvbnMoY29uc3Qg
d2VicnRjOjpDb25maWcmIGNvbmZpZykgewpAQCAtNzA1LDcgKzY4OCw3IEBAIHZvaWQgQXVkaW9Q
cm9jZXNzaW5nSW1wbDo6U2V0RXh0cmFPcHRpb25zKGNvbnN0IHdlYnJ0Yzo6Q29uZmlnJiBjb25m
aWcpIHsKICAgcnRjOjpDcml0U2NvcGUgY3NfcmVuZGVyKCZjcml0X3JlbmRlcl8pOwogICBydGM6
OkNyaXRTY29wZSBjc19jYXB0dXJlKCZjcml0X2NhcHR1cmVfKTsKIAotICBwdWJsaWNfc3VibW9k
dWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5TZXRFeHRyYU9wdGlvbnMoY29uZmlnKTsKKyAgcHJp
dmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPlNldEV4dHJhT3B0aW9ucyhjb25m
aWcpOwogCiAgIGlmIChjYXB0dXJlXy50cmFuc2llbnRfc3VwcHJlc3Nvcl9lbmFibGVkICE9CiAg
ICAgICBjb25maWcuR2V0PEV4cGVyaW1lbnRhbE5zPigpLmVuYWJsZWQpIHsKQEAgLTEwODIsMTIg
KzEwNjUsMTIgQEAgdm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpBbGxvY2F0ZVJlbmRlclF1ZXVl
KCkgewogdm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpFbXB0eVF1ZXVlZFJlbmRlckF1ZGlvKCkg
ewogICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKCZjcml0X2NhcHR1cmVfKTsKICAgd2hpbGUg
KGFlY19yZW5kZXJfc2lnbmFsX3F1ZXVlXy0+UmVtb3ZlKCZhZWNfY2FwdHVyZV9xdWV1ZV9idWZm
ZXJfKSkgewotICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPlByb2Nl
c3NSZW5kZXJBdWRpbygKKyAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlv
bi0+UHJvY2Vzc1JlbmRlckF1ZGlvKAogICAgICAgICBhZWNfY2FwdHVyZV9xdWV1ZV9idWZmZXJf
KTsKICAgfQogCiAgIHdoaWxlIChhZWNtX3JlbmRlcl9zaWduYWxfcXVldWVfLT5SZW1vdmUoJmFl
Y21fY2FwdHVyZV9xdWV1ZV9idWZmZXJfKSkgewotICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNo
b19jb250cm9sX21vYmlsZS0+UHJvY2Vzc1JlbmRlckF1ZGlvKAorICAgIHByaXZhdGVfc3VibW9k
dWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPlByb2Nlc3NSZW5kZXJBdWRpbygKICAgICAgICAg
YWVjbV9jYXB0dXJlX3F1ZXVlX2J1ZmZlcl8pOwogICB9CiAKQEAgLTExMDksOSArMTA5Miw2IEBA
IGludCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpQcm9jZXNzU3RyZWFtKEF1ZGlvRnJhbWUqIGZyYW1l
KSB7CiAgICAgLy8gQWNxdWlyZSB0aGUgY2FwdHVyZSBsb2NrIGluIG9yZGVyIHRvIHNhZmVseSBj
YWxsIHRoZSBmdW5jdGlvbgogICAgIC8vIHRoYXQgcmV0cmlldmVzIHRoZSByZW5kZXIgc2lkZSBk
YXRhLiBUaGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIEFQTQogICAgIC8vIGdldHRlcnMgdGhhdCBuZWVk
IHRoZSBjYXB0dXJlIGxvY2sgaGVsZCB3aGVuIGJlaW5nIGNhbGxlZC4KLSAgICAvLyBUaGUgbG9j
ayBuZWVkcyB0byBiZSByZWxlYXNlZCBhcwotICAgIC8vIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNo
b19jb250cm9sX21vYmlsZS0+aXNfZW5hYmxlZCgpIGFjcXVpcmVzIHRoaXMgbG9jawotICAgIC8v
IGFzIHdlbGwuCiAgICAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZSgmY3JpdF9jYXB0dXJlXyk7
CiAgICAgRW1wdHlRdWV1ZWRSZW5kZXJBdWRpbygpOwogICB9CkBAIC0xMTgwLDggKzExNjAsOCBA
QCBpbnQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6UHJvY2Vzc0NhcHR1cmVTdHJlYW1Mb2NrZWQoKSB7
CiAgIC8vIEVuc3VyZSB0aGF0IG5vdCBib3RoIHRoZSBBRUMgYW5kIEFFQ00gYXJlIGFjdGl2ZSBh
dCB0aGUgc2FtZSB0aW1lLgogICAvLyBUT0RPKHBlYWgpOiBTaW1wbGlmeSBvbmNlIHRoZSBwdWJs
aWMgQVBJIEVuYWJsZSBmdW5jdGlvbnMgZm9yIHRoZXNlCiAgIC8vIGFyZSBtb3ZlZCB0byBBUE0u
Ci0gIFJUQ19EQ0hFQ0soIShwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5p
c19lbmFibGVkKCkgJiYKLSAgICAgICAgICAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19j
b250cm9sX21vYmlsZS0+aXNfZW5hYmxlZCgpKSk7CisgIFJUQ19EQ0hFQ0soIShwcml2YXRlX3N1
Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+aXNfZW5hYmxlZCgpICYmCisgICAgICAgICAg
ICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5pc19lbmFibGVk
KCkpKTsKIAogICBNYXliZVVwZGF0ZUhpc3RvZ3JhbXMoKTsKIApAQCAtMTI2NSw3ICsxMjQ1LDcg
QEAgaW50IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OlByb2Nlc3NDYXB0dXJlU3RyZWFtTG9ja2VkKCkg
ewogCiAgIC8vIEVuc3VyZSB0aGF0IHRoZSBzdHJlYW0gZGVsYXkgd2FzIHNldCBiZWZvcmUgdGhl
IGNhbGwgdG8gdGhlCiAgIC8vIEFFQyBQcm9jZXNzQ2FwdHVyZUF1ZGlvIGZ1bmN0aW9uLgotICBp
ZiAocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+aXNfZW5hYmxlZCgpICYm
CisgIGlmIChwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+aXNfZW5hYmxl
ZCgpICYmCiAgICAgICAhcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sbGVyICYmICF3
YXNfc3RyZWFtX2RlbGF5X3NldCgpKSB7CiAgICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a1N0
cmVhbVBhcmFtZXRlck5vdFNldEVycm9yOwogICB9CkBAIC0xMjgxLDExICsxMjYxLDExIEBAIGlu
dCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpQcm9jZXNzQ2FwdHVyZVN0cmVhbUxvY2tlZCgpIHsKICAg
ICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xsZXItPlByb2Nlc3NDYXB0dXJlKAog
ICAgICAgICBjYXB0dXJlX2J1ZmZlciwgY2FwdHVyZV8uZWNob19wYXRoX2dhaW5fY2hhbmdlKTsK
ICAgfSBlbHNlIHsKLSAgICBSRVRVUk5fT05fRVJSKHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19j
YW5jZWxsYXRpb24tPlByb2Nlc3NDYXB0dXJlQXVkaW8oCisgICAgUkVUVVJOX09OX0VSUihwcml2
YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+UHJvY2Vzc0NhcHR1cmVBdWRpbygK
ICAgICAgICAgY2FwdHVyZV9idWZmZXIsIHN0cmVhbV9kZWxheV9tcygpKSk7CiAgIH0KIAotICBp
ZiAocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5pc19lbmFibGVkKCkg
JiYKKyAgaWYgKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2Vu
YWJsZWQoKSAmJgogICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5ub2lzZV9zdXBwcmVzc2lvbi0+
aXNfZW5hYmxlZCgpKSB7CiAgICAgY2FwdHVyZV9idWZmZXItPkNvcHlMb3dQYXNzVG9SZWZlcmVu
Y2UoKTsKICAgfQpAQCAtMTI5MywxNCArMTI3MywxNCBAQCBpbnQgQXVkaW9Qcm9jZXNzaW5nSW1w
bDo6UHJvY2Vzc0NhcHR1cmVTdHJlYW1Mb2NrZWQoKSB7CiAKICAgLy8gRW5zdXJlIHRoYXQgdGhl
IHN0cmVhbSBkZWxheSB3YXMgc2V0IGJlZm9yZSB0aGUgY2FsbCB0byB0aGUKICAgLy8gQUVDTSBQ
cm9jZXNzQ2FwdHVyZUF1ZGlvIGZ1bmN0aW9uLgotICBpZiAocHVibGljX3N1Ym1vZHVsZXNfLT5l
Y2hvX2NvbnRyb2xfbW9iaWxlLT5pc19lbmFibGVkKCkgJiYKKyAgaWYgKHByaXZhdGVfc3VibW9k
dWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJsZWQoKSAmJgogICAgICAgIXdhc19z
dHJlYW1fZGVsYXlfc2V0KCkpIHsKICAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprU3RyZWFt
UGFyYW1ldGVyTm90U2V0RXJyb3I7CiAgIH0KIAogICBpZiAoIShwcml2YXRlX3N1Ym1vZHVsZXNf
LT5lY2hvX2NvbnRyb2xsZXIgfHwKLSAgICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2Nh
bmNlbGxhdGlvbi0+aXNfZW5hYmxlZCgpKSkgewotICAgIFJFVFVSTl9PTl9FUlIocHVibGljX3N1
Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5Qcm9jZXNzQ2FwdHVyZUF1ZGlvKAorICAg
ICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+aXNfZW5hYmxlZCgp
KSkgeworICAgIFJFVFVSTl9PTl9FUlIocHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9s
X21vYmlsZS0+UHJvY2Vzc0NhcHR1cmVBdWRpbygKICAgICAgICAgY2FwdHVyZV9idWZmZXIsIHN0
cmVhbV9kZWxheV9tcygpKSk7CiAgIH0KIApAQCAtMTMxNSw3ICsxMjk1LDcgQEAgaW50IEF1ZGlv
UHJvY2Vzc2luZ0ltcGw6OlByb2Nlc3NDYXB0dXJlU3RyZWFtTG9ja2VkKCkgewogICB9CiAgIFJF
VFVSTl9PTl9FUlIocHVibGljX3N1Ym1vZHVsZXNfLT5nYWluX2NvbnRyb2wtPlByb2Nlc3NDYXB0
dXJlQXVkaW8oCiAgICAgICBjYXB0dXJlX2J1ZmZlciwKLSAgICAgIHB1YmxpY19zdWJtb2R1bGVz
Xy0+ZWNob19jYW5jZWxsYXRpb24tPnN0cmVhbV9oYXNfZWNobygpKSk7CisgICAgICBwcml2YXRl
X3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+c3RyZWFtX2hhc19lY2hvKCkpKTsKIAog
ICBpZiAoc3VibW9kdWxlX3N0YXRlc18uQ2FwdHVyZU11bHRpQmFuZFByb2Nlc3NpbmdBY3RpdmUo
KSAmJgogICAgICAgU2FtcGxlUmF0ZVN1cHBvcnRzTXVsdGlCYW5kKApAQCAtMTM2NCw2ICsxMzQ0
LDEzIEBAIGludCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpQcm9jZXNzQ2FwdHVyZVN0cmVhbUxvY2tl
ZCgpIHsKIAogICAvLyBUaGUgbGV2ZWwgZXN0aW1hdG9yIG9wZXJhdGVzIG9uIHRoZSByZWNvbWJp
bmVkIGRhdGEuCiAgIHB1YmxpY19zdWJtb2R1bGVzXy0+bGV2ZWxfZXN0aW1hdG9yLT5Qcm9jZXNz
U3RyZWFtKGNhcHR1cmVfYnVmZmVyKTsKKyAgaWYgKGNvbmZpZ18ubGV2ZWxfZXN0aW1hdGlvbi5l
bmFibGVkKSB7CisgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+b3V0cHV0X2xldmVsX2VzdGltYXRv
ci0+UHJvY2Vzc1N0cmVhbShjYXB0dXJlX2J1ZmZlcik7CisgICAgY2FwdHVyZV8uc3RhdHMub3V0
cHV0X3Jtc19kYmZzID0KKyAgICAgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+b3V0cHV0X2xldmVs
X2VzdGltYXRvci0+Uk1TKCk7CisgIH0gZWxzZSB7CisgICAgY2FwdHVyZV8uc3RhdHMub3V0cHV0
X3Jtc19kYmZzID0gYWJzbDo6bnVsbG9wdDsKKyAgfQogCiAgIGNhcHR1cmVfb3V0cHV0X3Jtc18u
QW5hbHl6ZShydGM6OkFycmF5Vmlldzxjb25zdCBpbnQxNl90PigKICAgICAgIGNhcHR1cmVfYnVm
ZmVyLT5jaGFubmVsc19jb25zdCgpWzBdLApAQCAtMTYxMywxMTIgKzE2MDAsNTIgQEAgdm9pZCBB
dWRpb1Byb2Nlc3NpbmdJbXBsOjpEZXRhY2hQbGF5b3V0QXVkaW9HZW5lcmF0b3IoKSB7CiAgIC8v
IERlbGV0ZSBhdWRpbyBnZW5lcmF0b3IsIGlmIG9uZSBpcyBhdHRhY2hlZC4KIH0KIAotQXVkaW9Q
cm9jZXNzaW5nOjpBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzOjpBdWRpb1Byb2Nlc3NpbmdTdGF0
aXN0aWNzKCkgewotICByZXNpZHVhbF9lY2hvX3JldHVybl9sb3NzLlNldCgtMTAwLjBmLCAtMTAw
LjBmLCAtMTAwLjBmLCAtMTAwLjBmKTsKLSAgZWNob19yZXR1cm5fbG9zcy5TZXQoLTEwMC4wZiwg
LTEwMC4wZiwgLTEwMC4wZiwgLTEwMC4wZik7Ci0gIGVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1l
bnQuU2V0KC0xMDAuMGYsIC0xMDAuMGYsIC0xMDAuMGYsIC0xMDAuMGYpOwotICBhX25scC5TZXQo
LTEwMC4wZiwgLTEwMC4wZiwgLTEwMC4wZiwgLTEwMC4wZik7Ci19Ci0KLUF1ZGlvUHJvY2Vzc2lu
Zzo6QXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljczo6QXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljcygK
LSAgICBjb25zdCBBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzJiBvdGhlcikgPSBkZWZhdWx0Owot
Ci1BdWRpb1Byb2Nlc3Npbmc6OkF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3M6On5BdWRpb1Byb2Nl
c3NpbmdTdGF0aXN0aWNzKCkgPQotICAgIGRlZmF1bHQ7Ci0KLS8vIFRPRE8oaXZvYyk6IFJlbW92
ZSB0aGlzIHdoZW4gR2V0U3RhdGlzdGljcygpIGJlY29tZXMgcHVyZSB2aXJ0dWFsLgotQXVkaW9Q
cm9jZXNzaW5nOjpBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzIEF1ZGlvUHJvY2Vzc2luZzo6R2V0
U3RhdGlzdGljcygpCi0gICAgY29uc3QgewotICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nU3RhdGlz
dGljcygpOwotfQotCi0vLyBUT0RPKGl2b2MpOiBSZW1vdmUgdGhpcyB3aGVuIEdldFN0YXRpc3Rp
Y3MoKSBiZWNvbWVzIHB1cmUgdmlydHVhbC4KLUF1ZGlvUHJvY2Vzc2luZ1N0YXRzIEF1ZGlvUHJv
Y2Vzc2luZzo6R2V0U3RhdGlzdGljcygKK0F1ZGlvUHJvY2Vzc2luZ1N0YXRzIEF1ZGlvUHJvY2Vz
c2luZ0ltcGw6OkdldFN0YXRpc3RpY3MoCiAgICAgYm9vbCBoYXNfcmVtb3RlX3RyYWNrcykgY29u
c3QgewotICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nU3RhdHMoKTsKLX0KLQotQXVkaW9Qcm9jZXNz
aW5nOjpBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkdldFN0
YXRpc3RpY3MoKQotICAgIGNvbnN0IHsKLSAgQXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljcyBzdGF0
czsKKyAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZSgmY3JpdF9jYXB0dXJlXyk7CisgIGlmICgh
aGFzX3JlbW90ZV90cmFja3MpIHsKKyAgICByZXR1cm4gY2FwdHVyZV8uc3RhdHM7CisgIH0KKyAg
QXVkaW9Qcm9jZXNzaW5nU3RhdHMgc3RhdHMgPSBjYXB0dXJlXy5zdGF0czsKICAgRWNob0NhbmNl
bGxhdGlvbkltcGw6Ok1ldHJpY3MgbWV0cmljczsKICAgaWYgKHByaXZhdGVfc3VibW9kdWxlc18t
PmVjaG9fY29udHJvbGxlcikgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoJmNyaXRf
Y2FwdHVyZV8pOwogICAgIGF1dG8gZWNfbWV0cmljcyA9IHByaXZhdGVfc3VibW9kdWxlc18tPmVj
aG9fY29udHJvbGxlci0+R2V0TWV0cmljcygpOwotICAgIGZsb2F0IGVybCA9IHN0YXRpY19jYXN0
PGZsb2F0PihlY19tZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3MpOwotICAgIGZsb2F0IGVybGUgPSBz
dGF0aWNfY2FzdDxmbG9hdD4oZWNfbWV0cmljcy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50
KTsKLSAgICAvLyBJbnN0YW50IHZhbHVlIHdpbGwgYWxzbyBiZSB1c2VkIGZvciBtaW4sIG1heCBh
bmQgYXZlcmFnZS4KLSAgICBzdGF0cy5lY2hvX3JldHVybl9sb3NzLlNldChlcmwsIGVybCwgZXJs
LCBlcmwpOwotICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQuU2V0KGVybGUs
IGVybGUsIGVybGUsIGVybGUpOwotICB9IGVsc2UgaWYgKHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNo
b19jYW5jZWxsYXRpb24tPkdldE1ldHJpY3MoJm1ldHJpY3MpID09CisgICAgc3RhdHMuZWNob19y
ZXR1cm5fbG9zcyA9IGVjX21ldHJpY3MuZWNob19yZXR1cm5fbG9zczsKKyAgICBzdGF0cy5lY2hv
X3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0KKyAgICAgICAgZWNfbWV0cmljcy5lY2hvX3JldHVy
bl9sb3NzX2VuaGFuY2VtZW50OworICAgIHN0YXRzLmRlbGF5X21zID0gZWNfbWV0cmljcy5kZWxh
eV9tczsKKyAgfSBlbHNlIGlmIChwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlv
bi0+R2V0TWV0cmljcygmbWV0cmljcykgPT0KICAgICAgICAgICAgICBFcnJvcjo6a05vRXJyb3Ip
IHsKLSAgICBzdGF0cy5hX25scC5TZXQobWV0cmljcy5hX25scCk7Ci0gICAgc3RhdHMuZGl2ZXJn
ZW50X2ZpbHRlcl9mcmFjdGlvbiA9IG1ldHJpY3MuZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbjsK
LSAgICBzdGF0cy5lY2hvX3JldHVybl9sb3NzLlNldChtZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3Mp
OwotICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQuU2V0KAotICAgICAgICBt
ZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQpOwotICAgIHN0YXRzLnJlc2lkdWFs
X2VjaG9fcmV0dXJuX2xvc3MuU2V0KG1ldHJpY3MucmVzaWR1YWxfZWNob19yZXR1cm5fbG9zcyk7
CisgICAgaWYgKG1ldHJpY3MuZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbiAhPSAtMS4wZikgewor
ICAgICAgc3RhdHMuZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbiA9CisgICAgICAgICAgYWJzbDo6
b3B0aW9uYWw8ZG91YmxlPihtZXRyaWNzLmRpdmVyZ2VudF9maWx0ZXJfZnJhY3Rpb24pOworICAg
IH0KKyAgICBpZiAobWV0cmljcy5lY2hvX3JldHVybl9sb3NzLmluc3RhbnQgIT0gLTEwMCkgewor
ICAgICAgc3RhdHMuZWNob19yZXR1cm5fbG9zcyA9CisgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8
ZG91YmxlPihtZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3MuaW5zdGFudCk7CisgICAgfQorICAgIGlm
IChtZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQuaW5zdGFudCAhPSAtMTAwKSB7
CisgICAgICBzdGF0cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0KKyAgICAgICAgICBh
YnNsOjpvcHRpb25hbDxkb3VibGU+KG1ldHJpY3MuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVu
dC5pbnN0YW50KTsKKyAgICB9CiAgIH0KLSAgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1
cmUoJmNyaXRfY2FwdHVyZV8pOworICBpZiAoY29uZmlnXy5yZXNpZHVhbF9lY2hvX2RldGVjdG9y
LmVuYWJsZWQpIHsKICAgICBSVENfRENIRUNLKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fZGV0
ZWN0b3IpOwogICAgIGF1dG8gZWRfbWV0cmljcyA9IHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9f
ZGV0ZWN0b3ItPkdldE1ldHJpY3MoKTsKICAgICBzdGF0cy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhv
b2QgPSBlZF9tZXRyaWNzLmVjaG9fbGlrZWxpaG9vZDsKICAgICBzdGF0cy5yZXNpZHVhbF9lY2hv
X2xpa2VsaWhvb2RfcmVjZW50X21heCA9CiAgICAgICAgIGVkX21ldHJpY3MuZWNob19saWtlbGlo
b29kX3JlY2VudF9tYXg7CiAgIH0KLSAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxh
dGlvbi0+R2V0RGVsYXlNZXRyaWNzKAotICAgICAgJnN0YXRzLmRlbGF5X21lZGlhbiwgJnN0YXRz
LmRlbGF5X3N0YW5kYXJkX2RldmlhdGlvbiwKLSAgICAgICZzdGF0cy5mcmFjdGlvbl9wb29yX2Rl
bGF5cyk7Ci0gIHJldHVybiBzdGF0czsKLX0KLQotQXVkaW9Qcm9jZXNzaW5nU3RhdHMgQXVkaW9Q
cm9jZXNzaW5nSW1wbDo6R2V0U3RhdGlzdGljcygKLSAgICBib29sIGhhc19yZW1vdGVfdHJhY2tz
KSBjb25zdCB7Ci0gIEF1ZGlvUHJvY2Vzc2luZ1N0YXRzIHN0YXRzOwotICBpZiAoaGFzX3JlbW90
ZV90cmFja3MpIHsKLSAgICBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6TWV0cmljcyBtZXRyaWNzOwot
ICAgIGlmIChwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xsZXIpIHsKLSAgICAgIHJ0
Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoJmNyaXRfY2FwdHVyZV8pOwotICAgICAgYXV0byBlY19t
ZXRyaWNzID0gcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sbGVyLT5HZXRNZXRyaWNz
KCk7Ci0gICAgICBzdGF0cy5lY2hvX3JldHVybl9sb3NzID0gZWNfbWV0cmljcy5lY2hvX3JldHVy
bl9sb3NzOwotICAgICAgc3RhdHMuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudCA9Ci0gICAg
ICAgICAgZWNfbWV0cmljcy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50OwotICAgICAgc3Rh
dHMuZGVsYXlfbXMgPSBlY19tZXRyaWNzLmRlbGF5X21zOwotICAgIH0gZWxzZSBpZiAocHVibGlj
X3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+R2V0TWV0cmljcygmbWV0cmljcykgPT0K
LSAgICAgICAgICAgICAgIEVycm9yOjprTm9FcnJvcikgewotICAgICAgaWYgKG1ldHJpY3MuZGl2
ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbiAhPSAtMS4wZikgewotICAgICAgICBzdGF0cy5kaXZlcmdl
bnRfZmlsdGVyX2ZyYWN0aW9uID0KLSAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGRvdWJsZT4o
bWV0cmljcy5kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uKTsKLSAgICAgIH0KLSAgICAgIGlmICht
ZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3MuaW5zdGFudCAhPSAtMTAwKSB7Ci0gICAgICAgIHN0YXRz
LmVjaG9fcmV0dXJuX2xvc3MgPQotICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPiht
ZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3MuaW5zdGFudCk7Ci0gICAgICB9Ci0gICAgICBpZiAobWV0
cmljcy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50Lmluc3RhbnQgIT0gLTEwMCkgewotICAg
ICAgICBzdGF0cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0gYWJzbDo6b3B0aW9uYWw8
ZG91YmxlPigKLSAgICAgICAgICAgIG1ldHJpY3MuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVu
dC5pbnN0YW50KTsKLSAgICAgIH0KKyAgaW50IGRlbGF5X21lZGlhbiwgZGVsYXlfc3RkOworICBm
bG9hdCBmcmFjdGlvbl9wb29yX2RlbGF5czsKKyAgaWYgKHByaXZhdGVfc3VibW9kdWxlc18tPmVj
aG9fY2FuY2VsbGF0aW9uLT5HZXREZWxheU1ldHJpY3MoCisgICAgICAgICAgJmRlbGF5X21lZGlh
biwgJmRlbGF5X3N0ZCwgJmZyYWN0aW9uX3Bvb3JfZGVsYXlzKSA9PQorICAgICAgRXJyb3I6OmtO
b0Vycm9yKSB7CisgICAgaWYgKGRlbGF5X21lZGlhbiA+PSAwKSB7CisgICAgICBzdGF0cy5kZWxh
eV9tZWRpYW5fbXMgPSBhYnNsOjpvcHRpb25hbDxpbnQzMl90PihkZWxheV9tZWRpYW4pOwogICAg
IH0KLSAgICBpZiAoY29uZmlnXy5yZXNpZHVhbF9lY2hvX2RldGVjdG9yLmVuYWJsZWQpIHsKLSAg
ICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoJmNyaXRfY2FwdHVyZV8pOwotICAgICAgUlRD
X0RDSEVDSyhwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2RldGVjdG9yKTsKLSAgICAgIGF1dG8g
ZWRfbWV0cmljcyA9IHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fZGV0ZWN0b3ItPkdldE1ldHJp
Y3MoKTsKLSAgICAgIHN0YXRzLnJlc2lkdWFsX2VjaG9fbGlrZWxpaG9vZCA9IGVkX21ldHJpY3Mu
ZWNob19saWtlbGlob29kOwotICAgICAgc3RhdHMucmVzaWR1YWxfZWNob19saWtlbGlob29kX3Jl
Y2VudF9tYXggPQotICAgICAgICAgIGVkX21ldHJpY3MuZWNob19saWtlbGlob29kX3JlY2VudF9t
YXg7Ci0gICAgfQotICAgIGludCBkZWxheV9tZWRpYW4sIGRlbGF5X3N0ZDsKLSAgICBmbG9hdCBm
cmFjdGlvbl9wb29yX2RlbGF5czsKLSAgICBpZiAocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2Nh
bmNlbGxhdGlvbi0+R2V0RGVsYXlNZXRyaWNzKAotICAgICAgICAgICAgJmRlbGF5X21lZGlhbiwg
JmRlbGF5X3N0ZCwgJmZyYWN0aW9uX3Bvb3JfZGVsYXlzKSA9PQotICAgICAgICBFcnJvcjo6a05v
RXJyb3IpIHsKLSAgICAgIGlmIChkZWxheV9tZWRpYW4gPj0gMCkgewotICAgICAgICBzdGF0cy5k
ZWxheV9tZWRpYW5fbXMgPSBhYnNsOjpvcHRpb25hbDxpbnQzMl90PihkZWxheV9tZWRpYW4pOwot
ICAgICAgfQotICAgICAgaWYgKGRlbGF5X3N0ZCA+PSAwKSB7Ci0gICAgICAgIHN0YXRzLmRlbGF5
X3N0YW5kYXJkX2RldmlhdGlvbl9tcyA9IGFic2w6Om9wdGlvbmFsPGludDMyX3Q+KGRlbGF5X3N0
ZCk7Ci0gICAgICB9CisgICAgaWYgKGRlbGF5X3N0ZCA+PSAwKSB7CisgICAgICBzdGF0cy5kZWxh
eV9zdGFuZGFyZF9kZXZpYXRpb25fbXMgPSBhYnNsOjpvcHRpb25hbDxpbnQzMl90PihkZWxheV9z
dGQpOwogICAgIH0KICAgfQogICByZXR1cm4gc3RhdHM7CkBAIC0xNzMxLDEwICsxNjU4LDYgQEAg
R2FpbkNvbnRyb2wqIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OmdhaW5fY29udHJvbCgpIGNvbnN0IHsK
ICAgcmV0dXJuIHB1YmxpY19zdWJtb2R1bGVzXy0+Z2Fpbl9jb250cm9sLmdldCgpOwogfQogCi1I
aWdoUGFzc0ZpbHRlciogQXVkaW9Qcm9jZXNzaW5nSW1wbDo6aGlnaF9wYXNzX2ZpbHRlcigpIGNv
bnN0IHsKLSAgcmV0dXJuIGhpZ2hfcGFzc19maWx0ZXJfaW1wbF8uZ2V0KCk7Ci19Ci0KIExldmVs
RXN0aW1hdG9yKiBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpsZXZlbF9lc3RpbWF0b3IoKSBjb25zdCB7
CiAgIHJldHVybiBwdWJsaWNfc3VibW9kdWxlc18tPmxldmVsX2VzdGltYXRvci5nZXQoKTsKIH0K
QEAgLTE3NjQsOCArMTY4Nyw4IEBAIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnIEF1ZGlvUHJvY2Vz
c2luZ0ltcGw6OkdldENvbmZpZygpIGNvbnN0IHsKIGJvb2wgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6
VXBkYXRlQWN0aXZlU3VibW9kdWxlU3RhdGVzKCkgewogICByZXR1cm4gc3VibW9kdWxlX3N0YXRl
c18uVXBkYXRlKAogICAgICAgY29uZmlnXy5oaWdoX3Bhc3NfZmlsdGVyLmVuYWJsZWQsCi0gICAg
ICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCksCi0g
ICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJsZWQo
KSwKKyAgICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFi
bGVkKCksCisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5p
c19lbmFibGVkKCksCiAgICAgICBjb25maWdfLnJlc2lkdWFsX2VjaG9fZGV0ZWN0b3IuZW5hYmxl
ZCwKICAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+bm9pc2Vfc3VwcHJlc3Npb24tPmlzX2VuYWJs
ZWQoKSwKICAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+Z2Fpbl9jb250cm9sLT5pc19lbmFibGVk
KCksCkBAIC0xODUyLDE1ICsxNzc1LDE1IEBAIHZvaWQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6SW5p
dGlhbGl6ZVByZVByb2Nlc3NvcigpIHsKIHZvaWQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6TWF5YmVV
cGRhdGVIaXN0b2dyYW1zKCkgewogICBzdGF0aWMgY29uc3QgaW50IGtNaW5EaWZmRGVsYXlNcyA9
IDYwOwogCi0gIGlmIChwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19l
bmFibGVkKCkpIHsKKyAgaWYgKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9u
LT5pc19lbmFibGVkKCkpIHsKICAgICAvLyBBY3RpdmF0ZSBkZWxheV9qdW1wc18gY291bnRlcnMg
aWYgd2Uga25vdyBlY2hvX2NhbmNlbGxhdGlvbiBpcyBydW5uaW5nLgogICAgIC8vIElmIGEgc3Ry
ZWFtIGhhcyBlY2hvIHdlIGtub3cgdGhhdCB0aGUgZWNob19jYW5jZWxsYXRpb24gaXMgaW4gcHJv
Y2Vzcy4KICAgICBpZiAoY2FwdHVyZV8uc3RyZWFtX2RlbGF5X2p1bXBzID09IC0xICYmCi0gICAg
ICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPnN0cmVhbV9oYXNfZWNo
bygpKSB7CisgICAgICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5z
dHJlYW1faGFzX2VjaG8oKSkgewogICAgICAgY2FwdHVyZV8uc3RyZWFtX2RlbGF5X2p1bXBzID0g
MDsKICAgICB9CiAgICAgaWYgKGNhcHR1cmVfLmFlY19zeXN0ZW1fZGVsYXlfanVtcHMgPT0gLTEg
JiYKLSAgICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+c3RyZWFt
X2hhc19lY2hvKCkpIHsKKyAgICAgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxs
YXRpb24tPnN0cmVhbV9oYXNfZWNobygpKSB7CiAgICAgICBjYXB0dXJlXy5hZWNfc3lzdGVtX2Rl
bGF5X2p1bXBzID0gMDsKICAgICB9CiAKQEAgLTE4ODMsNyArMTgwNiw3IEBAIHZvaWQgQXVkaW9Q
cm9jZXNzaW5nSW1wbDo6TWF5YmVVcGRhdGVIaXN0b2dyYW1zKCkgewogICAgICAgICBydGM6OkNo
ZWNrZWREaXZFeGFjdChjYXB0dXJlX25vbmxvY2tlZF8uc3BsaXRfcmF0ZSwgMTAwMCk7CiAgICAg
UlRDX0RDSEVDS19MVCgwLCBzYW1wbGVzX3Blcl9tcyk7CiAgICAgY29uc3QgaW50IGFlY19zeXN0
ZW1fZGVsYXlfbXMgPQotICAgICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0
aW9uLT5HZXRTeXN0ZW1EZWxheUluU2FtcGxlcygpIC8KKyAgICAgICAgcHJpdmF0ZV9zdWJtb2R1
bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPkdldFN5c3RlbURlbGF5SW5TYW1wbGVzKCkgLwogICAg
ICAgICBzYW1wbGVzX3Blcl9tczsKICAgICBjb25zdCBpbnQgZGlmZl9hZWNfc3lzdGVtX2RlbGF5
X21zID0KICAgICAgICAgYWVjX3N5c3RlbV9kZWxheV9tcyAtIGNhcHR1cmVfLmxhc3RfYWVjX3N5
c3RlbV9kZWxheV9tczsKQEAgLTE5MjcsNyArMTg1MCw3IEBAIHZvaWQgQXVkaW9Qcm9jZXNzaW5n
SW1wbDo6V3JpdGVBZWNEdW1wQ29uZmlnTWVzc2FnZShib29sIGZvcmNlZCkgewogICAgIHJldHVy
bjsKICAgfQogICBzdGQ6OnN0cmluZyBleHBlcmltZW50c19kZXNjcmlwdGlvbiA9Ci0gICAgICBw
dWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5HZXRFeHBlcmltZW50c0Rlc2Ny
aXB0aW9uKCk7CisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+
R2V0RXhwZXJpbWVudHNEZXNjcmlwdGlvbigpOwogICAvLyBUT0RPKHBlYWgpOiBBZGQgc2VtaWNv
bG9uLXNlcGFyYXRlZCBjb25jYXRlbmF0aW9ucyBvZiBleHBlcmltZW50CiAgIC8vIGRlc2NyaXB0
aW9ucyBmb3Igb3RoZXIgc3VibW9kdWxlcy4KICAgaWYgKGNvbnN0YW50c18uYWdjX2NsaXBwZWRf
bGV2ZWxfbWluICE9IGtDbGlwcGVkTGV2ZWxNaW4pIHsKQEAgLTE5NDIsMjIgKzE4NjUsMjIgQEAg
dm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpXcml0ZUFlY0R1bXBDb25maWdNZXNzYWdlKGJvb2wg
Zm9yY2VkKSB7CiAKICAgSW50ZXJuYWxBUE1Db25maWcgYXBtX2NvbmZpZzsKIAotICBhcG1fY29u
ZmlnLmFlY19lbmFibGVkID0gcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+
aXNfZW5hYmxlZCgpOworICBhcG1fY29uZmlnLmFlY19lbmFibGVkID0gcHJpdmF0ZV9zdWJtb2R1
bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2VuYWJsZWQoKTsKICAgYXBtX2NvbmZpZy5hZWNf
ZGVsYXlfYWdub3N0aWNfZW5hYmxlZCA9Ci0gICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9f
Y2FuY2VsbGF0aW9uLT5pc19kZWxheV9hZ25vc3RpY19lbmFibGVkKCk7CisgICAgICBwcml2YXRl
X3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+aXNfZGVsYXlfYWdub3N0aWNfZW5hYmxl
ZCgpOwogICBhcG1fY29uZmlnLmFlY19kcmlmdF9jb21wZW5zYXRpb25fZW5hYmxlZCA9Ci0gICAg
ICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19kcmlmdF9jb21wZW5z
YXRpb25fZW5hYmxlZCgpOworICAgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxs
YXRpb24tPmlzX2RyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkKCk7CiAgIGFwbV9jb25maWcuYWVj
X2V4dGVuZGVkX2ZpbHRlcl9lbmFibGVkID0KLSAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNo
b19jYW5jZWxsYXRpb24tPmlzX2V4dGVuZGVkX2ZpbHRlcl9lbmFibGVkKCk7CisgICAgICBwcml2
YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+aXNfZXh0ZW5kZWRfZmlsdGVyX2Vu
YWJsZWQoKTsKICAgYXBtX2NvbmZpZy5hZWNfc3VwcHJlc3Npb25fbGV2ZWwgPSBzdGF0aWNfY2Fz
dDxpbnQ+KAotICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+c3Vw
cHJlc3Npb25fbGV2ZWwoKSk7CisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNl
bGxhdGlvbi0+c3VwcHJlc3Npb25fbGV2ZWwoKSk7CiAKICAgYXBtX2NvbmZpZy5hZWNtX2VuYWJs
ZWQgPQotICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5pc19l
bmFibGVkKCk7CisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxl
LT5pc19lbmFibGVkKCk7CiAgIGFwbV9jb25maWcuYWVjbV9jb21mb3J0X25vaXNlX2VuYWJsZWQg
PQotICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5pc19jb21m
b3J0X25vaXNlX2VuYWJsZWQoKTsKLSAgYXBtX2NvbmZpZy5hZWNtX3JvdXRpbmdfbW9kZSA9Ci0g
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21v
YmlsZS0+cm91dGluZ19tb2RlKCkpOworICAgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19j
b250cm9sX21vYmlsZS0+aXNfY29tZm9ydF9ub2lzZV9lbmFibGVkKCk7CisgIGFwbV9jb25maWcu
YWVjbV9yb3V0aW5nX21vZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KAorICAgICAgcHJpdmF0ZV9zdWJt
b2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+cm91dGluZ19tb2RlKCkpOwogCiAgIGFwbV9j
b25maWcuYWdjX2VuYWJsZWQgPSBwdWJsaWNfc3VibW9kdWxlc18tPmdhaW5fY29udHJvbC0+aXNf
ZW5hYmxlZCgpOwogICBhcG1fY29uZmlnLmFnY19tb2RlID0KQEAgLTIwMzIsNyArMTk1NSw3IEBA
IHZvaWQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6UmVjb3JkQXVkaW9Qcm9jZXNzaW5nU3RhdGUoKSB7
CiAgIEFlY0R1bXA6OkF1ZGlvUHJvY2Vzc2luZ1N0YXRlIGF1ZGlvX3Byb2Nfc3RhdGU7CiAgIGF1
ZGlvX3Byb2Nfc3RhdGUuZGVsYXkgPSBjYXB0dXJlX25vbmxvY2tlZF8uc3RyZWFtX2RlbGF5X21z
OwogICBhdWRpb19wcm9jX3N0YXRlLmRyaWZ0ID0KLSAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+
ZWNob19jYW5jZWxsYXRpb24tPnN0cmVhbV9kcmlmdF9zYW1wbGVzKCk7CisgICAgICBwcml2YXRl
X3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+c3RyZWFtX2RyaWZ0X3NhbXBsZXMoKTsK
ICAgYXVkaW9fcHJvY19zdGF0ZS5sZXZlbCA9IGdhaW5fY29udHJvbCgpLT5zdHJlYW1fYW5hbG9n
X2xldmVsKCk7CiAgIGF1ZGlvX3Byb2Nfc3RhdGUua2V5cHJlc3MgPSBjYXB0dXJlXy5rZXlfcHJl
c3NlZDsKICAgYWVjX2R1bXBfLT5BZGRBdWRpb1Byb2Nlc3NpbmdTdGF0ZShhdWRpb19wcm9jX3N0
YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGwuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGwuaAppbmRleCA1MGNiODJiZjEzYWUxNzUyZGY1
MThlNDQxOTdhYzBlYjlmYjdhN2I4Li4yZjk0NmM1ZTEzZDg5MjA0ZGY3NDYyMWJlYjQyYzQ4MDQ4
ZDJiOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ19pbXBsLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3NpbmdfaW1wbC5oCkBAIC0xOCw2ICsxOCw3IEBACiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Np
bmdfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9yZW5k
ZXJfcXVldWVfaXRlbV92ZXJpZmllci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9ybXNfbGV2ZWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIK
QEAgLTEwOSw3ICsxMTAsNiBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NpbmdJbXBsIDogcHVibGljIEF1
ZGlvUHJvY2Vzc2luZyB7CiAgIGJvb2wgd2FzX3N0cmVhbV9kZWxheV9zZXQoKSBjb25zdCBvdmVy
cmlkZQogICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChjcml0X2NhcHR1cmVfKTsK
IAotICBBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzIEdldFN0YXRpc3RpY3MoKSBjb25zdCBvdmVy
cmlkZTsKICAgQXVkaW9Qcm9jZXNzaW5nU3RhdHMgR2V0U3RhdGlzdGljcyhib29sIGhhc19yZW1v
dGVfdHJhY2tzKSBjb25zdCBvdmVycmlkZTsKIAogICAvLyBNZXRob2RzIHJldHVybmluZyBwb2lu
dGVycyB0byBBUE0gc3VibW9kdWxlcy4KQEAgLTExOCw4ICsxMTgsNiBAQCBjbGFzcyBBdWRpb1By
b2Nlc3NpbmdJbXBsIDogcHVibGljIEF1ZGlvUHJvY2Vzc2luZyB7CiAgIC8vIGNyZWF0ZWQgb25s
eSBvbmNlIGluIGEgc2luZ2xlLXRyZWFkZWQgbWFubmVyCiAgIC8vIGR1cmluZyBBUE0gY3JlYXRp
b24pLgogICBHYWluQ29udHJvbCogZ2Fpbl9jb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIC8v
IFRPRE8ocGVhaCk6IERlcHJlY2F0ZSB0aGlzIEFQSSBjYWxsLgotICBIaWdoUGFzc0ZpbHRlciog
aGlnaF9wYXNzX2ZpbHRlcigpIGNvbnN0IG92ZXJyaWRlOwogICBMZXZlbEVzdGltYXRvciogbGV2
ZWxfZXN0aW1hdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIE5vaXNlU3VwcHJlc3Npb24qIG5vaXNl
X3N1cHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIFZvaWNlRGV0ZWN0aW9uKiB2b2ljZV9k
ZXRlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKQEAgLTE2NCw5ICsxNjIsNiBAQCBjbGFzcyBBdWRp
b1Byb2Nlc3NpbmdJbXBsIDogcHVibGljIEF1ZGlvUHJvY2Vzc2luZyB7CiAgIFJ1bnRpbWVTZXR0
aW5nRW5xdWV1ZXIgY2FwdHVyZV9ydW50aW1lX3NldHRpbmdzX2VucXVldWVyXzsKICAgUnVudGlt
ZVNldHRpbmdFbnF1ZXVlciByZW5kZXJfcnVudGltZV9zZXR0aW5nc19lbnF1ZXVlcl87CiAKLSAg
Ly8gU3VibW9kdWxlIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMuCi0gIHN0ZDo6dW5pcXVlX3B0
cjxIaWdoUGFzc0ZpbHRlcj4gaGlnaF9wYXNzX2ZpbHRlcl9pbXBsXzsKLQogICAvLyBFY2hvQ29u
dHJvbCBmYWN0b3J5LgogICBzdGQ6OnVuaXF1ZV9wdHI8RWNob0NvbnRyb2xGYWN0b3J5PiBlY2hv
X2NvbnRyb2xfZmFjdG9yeV87CiAKQEAgLTM5Niw2ICszOTEsNyBAQCBjbGFzcyBBdWRpb1Byb2Nl
c3NpbmdJbXBsIDogcHVibGljIEF1ZGlvUHJvY2Vzc2luZyB7CiAgICAgYm9vbCBlY2hvX3BhdGhf
Z2Fpbl9jaGFuZ2U7CiAgICAgaW50IHByZXZfYW5hbG9nX21pY19sZXZlbDsKICAgICBmbG9hdCBw
cmV2X3ByZV9hbXBfZ2FpbjsKKyAgICBBdWRpb1Byb2Nlc3NpbmdTdGF0cyBzdGF0czsKICAgfSBj
YXB0dXJlXyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKIAogICBzdHJ1Y3QgQXBtQ2Fw
dHVyZU5vbkxvY2tlZFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNz
aW5nX2ltcGxfbG9ja2luZ191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5n
X2ltcGxfbG9ja2luZ191bml0dGVzdC5jYwppbmRleCAwZTBhMzNmNTcwMDY5M2YxMzQyNzRkNzcz
N2FmYTNjNTQ0MDg5MWI3Li45Njg1ZWY5NWU5Y2Y1NzFhZDYwYzJjODAwMWY3M2U4MWY0MzU5MTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ19pbXBsX2xvY2tpbmdfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3NpbmdfaW1wbF9sb2NraW5nX3Vu
aXR0ZXN0LmNjCkBAIC00ODcsMTAgKzQ4Nyw3IEBAIHZvaWQgUG9wdWxhdGVBdWRpb0ZyYW1lKEF1
ZGlvRnJhbWUqIGZyYW1lLAogfQogCiBBdWRpb1Byb2Nlc3NpbmdJbXBsTG9ja1Rlc3Q6OkF1ZGlv
UHJvY2Vzc2luZ0ltcGxMb2NrVGVzdCgpCi0gICAgOiB0ZXN0X2NvbXBsZXRlXyhmYWxzZSwgZmFs
c2UpLAotICAgICAgcmVuZGVyX2NhbGxfZXZlbnRfKGZhbHNlLCBmYWxzZSksCi0gICAgICBjYXB0
dXJlX2NhbGxfZXZlbnRfKGZhbHNlLCBmYWxzZSksCi0gICAgICByZW5kZXJfdGhyZWFkXyhSZW5k
ZXJQcm9jZXNzb3JUaHJlYWRGdW5jLCB0aGlzLCAicmVuZGVyIiksCisgICAgOiByZW5kZXJfdGhy
ZWFkXyhSZW5kZXJQcm9jZXNzb3JUaHJlYWRGdW5jLCB0aGlzLCAicmVuZGVyIiksCiAgICAgICBj
YXB0dXJlX3RocmVhZF8oQ2FwdHVyZVByb2Nlc3NvclRocmVhZEZ1bmMsIHRoaXMsICJjYXB0dXJl
IiksCiAgICAgICBzdGF0c190aHJlYWRfKFN0YXRzUHJvY2Vzc29yVGhyZWFkRnVuYywgdGhpcywg
InN0YXRzIiksCiAgICAgICBhcG1fKEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKSks
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ19wZXJmb3JtYW5jZV91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX3BlcmZvcm1hbmNlX3VuaXR0ZXN0
LmNjCmluZGV4IDk1ZjczNmMyMmYxNjhiZmRiODcyNjc4MzlkN2IwNDJlYTNmZTk5MTYuLjg0Y2I1
NzQzMDcyNzA2YjAxZjg4Y2MyMTQxOGU2ZTNlMTdjYzlkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hdWRpb19wcm9jZXNzaW5nX3BlcmZvcm1hbmNlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hdWRpb19wcm9jZXNzaW5nX3BlcmZvcm1hbmNlX3VuaXR0ZXN0LmNjCkBAIC0xOCwxMSArMTgs
MTEgQEAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy90ZXN0L3Rlc3RfdXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hdG9t
aWNvcHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9y
bV90aHJlYWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yYW5kb20uaCIKICNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL2V2ZW50X3dyYXBwZXIuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVk
ZSAidGVzdC90ZXN0c3VwcG9ydC9wZXJmX3Rlc3QuaCIKIApAQCAtMzkxLDggKzM5MSw3IEBAIGNs
YXNzIFRpbWVkVGhyZWFkQXBpUHJvY2Vzc29yIHsKIGNsYXNzIENhbGxTaW11bGF0b3IgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFNpbXVsYXRpb25Db25maWc+IHsKICBwdWJsaWM6
CiAgIENhbGxTaW11bGF0b3IoKQotICAgICAgOiB0ZXN0X2NvbXBsZXRlXyhFdmVudFdyYXBwZXI6
OkNyZWF0ZSgpKSwKLSAgICAgICAgcmVuZGVyX3RocmVhZF8oCisgICAgICA6IHJlbmRlcl90aHJl
YWRfKAogICAgICAgICAgICAgbmV3IHJ0Yzo6UGxhdGZvcm1UaHJlYWQoUmVuZGVyUHJvY2Vzc29y
VGhyZWFkRnVuYywgdGhpcywgInJlbmRlciIpKSwKICAgICAgICAgY2FwdHVyZV90aHJlYWRfKG5l
dyBydGM6OlBsYXRmb3JtVGhyZWFkKENhcHR1cmVQcm9jZXNzb3JUaHJlYWRGdW5jLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKQEAgLTQwMSwx
MCArNDAwLDEwIEBAIGNsYXNzIENhbGxTaW11bGF0b3IgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPFNpbXVsYXRpb25Db25maWc+IHsKICAgICAgICAgc2ltdWxhdGlvbl9jb25maWdf
KHN0YXRpY19jYXN0PFNpbXVsYXRpb25Db25maWc+KEdldFBhcmFtKCkpKSB7fQogCiAgIC8vIFJ1
biB0aGUgY2FsbCBzaW11bGF0aW9uIHdpdGggYSB0aW1lb3V0LgotICBFdmVudFR5cGVXcmFwcGVy
IFJ1bigpIHsKKyAgYm9vbCBSdW4oKSB7CiAgICAgU3RhcnRUaHJlYWRzKCk7CiAKLSAgICBFdmVu
dFR5cGVXcmFwcGVyIHJlc3VsdCA9IHRlc3RfY29tcGxldGVfLT5XYWl0KGtUZXN0VGltZW91dCk7
CisgICAgYm9vbCByZXN1bHQgPSB0ZXN0X2NvbXBsZXRlXy5XYWl0KGtUZXN0VGltZW91dCk7CiAK
ICAgICBTdG9wVGhyZWFkcygpOwogCkBAIC00MjAsNyArNDE5LDcgQEAgY2xhc3MgQ2FsbFNpbXVs
YXRvciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08U2ltdWxhdGlvbkNvbmZpZz4g
ewogICAvLyBkb25lLgogICBib29sIE1heWJlRW5kVGVzdCgpIHsKICAgICBpZiAoZnJhbWVfY291
bnRlcnNfLkJvdGhDb3VudGVyc0V4Y2VlZGVUaHJlc2hvbGQoa01pbk51bUZyYW1lc1RvUHJvY2Vz
cykpIHsKLSAgICAgIHRlc3RfY29tcGxldGVfLT5TZXQoKTsKKyAgICAgIHRlc3RfY29tcGxldGVf
LlNldCgpOwogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAg
LTU3MCw3ICs1NjksNyBAQCBjbGFzcyBDYWxsU2ltdWxhdG9yIDogcHVibGljIDo6dGVzdGluZzo6
VGVzdFdpdGhQYXJhbTxTaW11bGF0aW9uQ29uZmlnPiB7CiAgIH0KIAogICAvLyBFdmVudCBoYW5k
bGVyIGZvciB0aGUgdGVzdC4KLSAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4g
dGVzdF9jb21wbGV0ZV87CisgIHJ0Yzo6RXZlbnQgdGVzdF9jb21wbGV0ZV87CiAKICAgLy8gVGhy
ZWFkIHJlbGF0ZWQgdmFyaWFibGVzLgogICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpQbGF0Zm9ybVRo
cmVhZD4gcmVuZGVyX3RocmVhZF87CkBAIC02MTksNyArNjE4LDcgQEAgY29uc3QgZmxvYXQgQ2Fs
bFNpbXVsYXRvcjo6a0NhcHR1cmVJbnB1dEZsb2F0TGV2ZWwgPSAwLjAzMTI1ZjsKIC8vIFRPRE8o
cGVhaCk6IFJlYWN0aXZhdGUgb25jZSBpc3N1ZSA3NzEyIGhhcyBiZWVuIHJlc29sdmVkLgogVEVT
VF9QKENhbGxTaW11bGF0b3IsIERJU0FCTEVEX0FwaUNhbGxEdXJhdGlvblRlc3QpIHsKICAgLy8g
UnVuIHRlc3QgYW5kIHZlcmlmeSB0aGF0IGl0IGRpZCBub3QgdGltZSBvdXQuCi0gIEVYUEVDVF9F
UShrRXZlbnRTaWduYWxlZCwgUnVuKCkpOworICBFWFBFQ1RfVFJVRShSdW4oKSk7CiB9CiAKIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nl
c3NpbmdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ191bml0dGVzdC5j
YwppbmRleCAzZjBkZWNjOTU3YTYzNDIxNGYzZDM5M2Y0MmM0NTE4ODE5Yjc5YjgxLi42ODA5YWI5
ZGNkOWUzMTQwZTAyOTA2ZTQ3YzQ4YTI0MTBhZDE0YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YXVkaW9fcHJvY2Vzc2luZ191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vz
c2luZ191bml0dGVzdC5jYwpAQCAtMTI3OCw3ICsxMjc4LDYgQEAgVEVTVF9GKEFwbVRlc3QsIEFs
bFByb2Nlc3NpbmdEaXNhYmxlZEJ5RGVmYXVsdCkgewogICBFWFBFQ1RfRkFMU0UoY29uZmlnLmVj
aG9fY2FuY2VsbGVyLmVuYWJsZWQpOwogICBFWFBFQ1RfRkFMU0UoY29uZmlnLmhpZ2hfcGFzc19m
aWx0ZXIuZW5hYmxlZCk7CiAgIEVYUEVDVF9GQUxTRShhcG1fLT5nYWluX2NvbnRyb2woKS0+aXNf
ZW5hYmxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKGFwbV8tPmhpZ2hfcGFzc19maWx0ZXIoKS0+aXNf
ZW5hYmxlZCgpKTsKICAgRVhQRUNUX0ZBTFNFKGFwbV8tPmxldmVsX2VzdGltYXRvcigpLT5pc19l
bmFibGVkKCkpOwogICBFWFBFQ1RfRkFMU0UoYXBtXy0+bm9pc2Vfc3VwcHJlc3Npb24oKS0+aXNf
ZW5hYmxlZCgpKTsKICAgRVhQRUNUX0ZBTFNFKGFwbV8tPnZvaWNlX2RldGVjdGlvbigpLT5pc19l
bmFibGVkKCkpOwpAQCAtMjgwMiw0ICsyODAxLDQyIEBAIFRFU1QoTUFZQkVfQXBtU3RhdGlzdGlj
cywgQUVDTUVuYWJsZWRUZXN0KSB7CiAgIEVYUEVDVF9GQUxTRShzdGF0cy5kZWxheV9tZWRpYW5f
bXMpOwogICBFWFBFQ1RfRkFMU0Uoc3RhdHMuZGVsYXlfc3RhbmRhcmRfZGV2aWF0aW9uX21zKTsK
IH0KKworVEVTVChBcG1TdGF0aXN0aWNzLCBSZXBvcnRPdXRwdXRSbXNEYmZzKSB7CisgIFByb2Nl
c3NpbmdDb25maWcgcHJvY2Vzc2luZ19jb25maWcgPSB7CisgICAgICB7ezMyMDAwLCAxfSwgezMy
MDAwLCAxfSwgezMyMDAwLCAxfSwgezMyMDAwLCAxfX19OworICBBdWRpb1Byb2Nlc3Npbmc6OkNv
bmZpZyBjb25maWc7CisKKyAgLy8gU2V0IHVwIGFuIGF1ZGlvZnJhbWUuCisgIEF1ZGlvRnJhbWUg
ZnJhbWU7CisgIGZyYW1lLm51bV9jaGFubmVsc18gPSAxOworICBTZXRGcmFtZVNhbXBsZVJhdGUo
JmZyYW1lLCBBdWRpb1Byb2Nlc3Npbmc6Ok5hdGl2ZVJhdGU6OmtTYW1wbGVSYXRlNDhrSHopOwor
CisgIC8vIEZpbGwgdGhlIGF1ZGlvIGZyYW1lIHdpdGggYSBzYXd0b290aCBwYXR0ZXJuLgorICBp
bnQxNl90KiBwdHIgPSBmcmFtZS5tdXRhYmxlX2RhdGEoKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmcmFtZS5rTWF4RGF0YVNpemVTYW1wbGVzOyBpKyspIHsKKyAgICBwdHJbaV0gPSAxMDAw
MCAqICgoaSAlIDMpIC0gMSk7CisgIH0KKworICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Qcm9jZXNz
aW5nPiBhcG0oQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpKTsKKyAgYXBtLT5Jbml0
aWFsaXplKHByb2Nlc3NpbmdfY29uZmlnKTsKKworICAvLyBJZiBub3QgZW5hYmxlZCwgbm8gbWV0
cmljIHNob3VsZCBiZSByZXBvcnRlZC4KKyAgRVhQRUNUX0VRKGFwbS0+UHJvY2Vzc1N0cmVhbSgm
ZnJhbWUpLCAwKTsKKyAgRVhQRUNUX0ZBTFNFKGFwbS0+R2V0U3RhdGlzdGljcyhmYWxzZSkub3V0
cHV0X3Jtc19kYmZzKTsKKworICAvLyBJZiBlbmFibGVkLCBtZXRyaWNzIHNob3VsZCBiZSByZXBv
cnRlZC4KKyAgY29uZmlnLmxldmVsX2VzdGltYXRpb24uZW5hYmxlZCA9IHRydWU7CisgIGFwbS0+
QXBwbHlDb25maWcoY29uZmlnKTsKKyAgRVhQRUNUX0VRKGFwbS0+UHJvY2Vzc1N0cmVhbSgmZnJh
bWUpLCAwKTsKKyAgYXV0byBzdGF0cyA9IGFwbS0+R2V0U3RhdGlzdGljcyhmYWxzZSk7CisgIEVY
UEVDVF9UUlVFKHN0YXRzLm91dHB1dF9ybXNfZGJmcyk7CisgIEVYUEVDVF9HRSgqc3RhdHMub3V0
cHV0X3Jtc19kYmZzLCAwKTsKKworICAvLyBJZiByZS1kaXNhYmxlZCwgdGhlIHZhbHVlIGlzIGFn
YWluIG5vdCByZXBvcnRlZC4KKyAgY29uZmlnLmxldmVsX2VzdGltYXRpb24uZW5hYmxlZCA9IGZh
bHNlOworICBhcG0tPkFwcGx5Q29uZmlnKGNvbmZpZyk7CisgIEVYUEVDVF9FUShhcG0tPlByb2Nl
c3NTdHJlYW0oJmZyYW1lKSwgMCk7CisgIEVYUEVDVF9GQUxTRShhcG0tPkdldFN0YXRpc3RpY3Mo
ZmFsc2UpLm91dHB1dF9ybXNfZGJmcyk7Cit9CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jYW5jZWxsYXRpb25fYml0X2V4YWN0X3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2JpdF9leGFjdF91bml0dGVzdC5jYwppbmRl
eCA3ZjYwYzRiNWQ4Mzg4MWQ0NmU3ZmEyYTYzZDE4Y2YwMWE2OGI0ZWNjLi5hZjA3NDFlZTE3ODQ5
NmExMzE5ZTljYTRiNTMxNzM1ZDViNzJiNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19j
YW5jZWxsYXRpb25fYml0X2V4YWN0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2Nh
bmNlbGxhdGlvbl9iaXRfZXhhY3RfdW5pdHRlc3QuY2MKQEAgLTc0LDkgKzc0LDcgQEAgdm9pZCBS
dW5CaXRleGFjdG5lc3NUZXN0KAogICAgIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpTdXBwcmVzc2lv
bkxldmVsIHN1cHByZXNzaW9uX2xldmVsLAogICAgIGJvb2wgc3RyZWFtX2hhc19lY2hvX3JlZmVy
ZW5jZSwKICAgICBjb25zdCBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4mIG91dHB1dF9yZWZl
cmVuY2UpIHsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9yZW5kZXI7Ci0gIHJ0Yzo6Q3Jp
dGljYWxTZWN0aW9uIGNyaXRfY2FwdHVyZTsKLSAgRWNob0NhbmNlbGxhdGlvbkltcGwgZWNob19j
YW5jZWxsZXIoJmNyaXRfcmVuZGVyLCAmY3JpdF9jYXB0dXJlKTsKKyAgRWNob0NhbmNlbGxhdGlv
bkltcGwgZWNob19jYW5jZWxsZXI7CiAgIFNldHVwQ29tcG9uZW50KHNhbXBsZV9yYXRlX2h6LCBz
dXBwcmVzc2lvbl9sZXZlbCwgZHJpZnRfY29tcGVuc2F0aW9uX2VuYWJsZWQsCiAgICAgICAgICAg
ICAgICAgICZlY2hvX2NhbmNlbGxlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2Nh
bmNlbGxhdGlvbl9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGwuY2MK
aW5kZXggZTZmZTc2OTFjNDkwM2Q5Mjc5YWIwMWJlNTM3OTZmZmM3MjQ2OTdlMi4uNzNmZTUxYjc1
MmY2NmQyYzBmOGEyNTFjMjllZTZhZjE0YWEzNDI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Vj
aG9fY2FuY2VsbGF0aW9uX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9u
X2ltcGwuY2MKQEAgLTEwLDExICsxMCwxMyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGwuaCIKIAorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPHN0cmluZy5oPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYy9hZWNfY29yZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMvZWNob19jYW5jZWxsYXRpb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYXVkaW9fYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2lu
Y2x1ZGUvY29uZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
c3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIApAQCAtMTAzLDExICsxMDUs
OCBAQCBjbGFzcyBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6Q2FuY2VsbGVyIHsKICAgdm9pZCogc3Rh
dGVfOwogfTsKIAotRWNob0NhbmNlbGxhdGlvbkltcGw6OkVjaG9DYW5jZWxsYXRpb25JbXBsKHJ0
Yzo6Q3JpdGljYWxTZWN0aW9uKiBjcml0X3JlbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBydGM6OkNyaXRpY2FsU2VjdGlvbiogY3JpdF9jYXB0dXJlKQot
ICAgIDogY3JpdF9yZW5kZXJfKGNyaXRfcmVuZGVyKSwKLSAgICAgIGNyaXRfY2FwdHVyZV8oY3Jp
dF9jYXB0dXJlKSwKLSAgICAgIGRyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkXyhmYWxzZSksCitF
Y2hvQ2FuY2VsbGF0aW9uSW1wbDo6RWNob0NhbmNlbGxhdGlvbkltcGwoKQorICAgIDogZHJpZnRf
Y29tcGVuc2F0aW9uX2VuYWJsZWRfKGZhbHNlKSwKICAgICAgIG1ldHJpY3NfZW5hYmxlZF8odHJ1
ZSksCiAgICAgICBzdXBwcmVzc2lvbl9sZXZlbF8oa0hpZ2hTdXBwcmVzc2lvbiksCiAgICAgICBz
dHJlYW1fZHJpZnRfc2FtcGxlc18oMCksCkBAIC0xMTYsMTYgKzExNSwxMiBAQCBFY2hvQ2FuY2Vs
bGF0aW9uSW1wbDo6RWNob0NhbmNlbGxhdGlvbkltcGwocnRjOjpDcml0aWNhbFNlY3Rpb24qIGNy
aXRfcmVuZGVyLAogICAgICAgZGVsYXlfbG9nZ2luZ19lbmFibGVkXyh0cnVlKSwKICAgICAgIGV4
dGVuZGVkX2ZpbHRlcl9lbmFibGVkXyhmYWxzZSksCiAgICAgICBkZWxheV9hZ25vc3RpY19lbmFi
bGVkXyhmYWxzZSksCi0gICAgICBlbmZvcmNlX3plcm9fc3RyZWFtX2RlbGF5XyhFbmZvcmNlWmVy
b1N0cmVhbURlbGF5KCkpIHsKLSAgUlRDX0RDSEVDSyhjcml0X3JlbmRlcik7Ci0gIFJUQ19EQ0hF
Q0soY3JpdF9jYXB0dXJlKTsKLX0KKyAgICAgIGVuZm9yY2VfemVyb19zdHJlYW1fZGVsYXlfKEVu
Zm9yY2VaZXJvU3RyZWFtRGVsYXkoKSkge30KIAogRWNob0NhbmNlbGxhdGlvbkltcGw6On5FY2hv
Q2FuY2VsbGF0aW9uSW1wbCgpID0gZGVmYXVsdDsKIAogdm9pZCBFY2hvQ2FuY2VsbGF0aW9uSW1w
bDo6UHJvY2Vzc1JlbmRlckF1ZGlvKAogICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBw
YWNrZWRfcmVuZGVyX2F1ZGlvKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9j
YXB0dXJlXyk7CiAgIGlmICghZW5hYmxlZF8pIHsKICAgICByZXR1cm47CiAgIH0KQEAgLTE0OSw3
ICsxNDQsNiBAQCB2b2lkIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpQcm9jZXNzUmVuZGVyQXVkaW8o
CiAKIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6UHJvY2Vzc0NhcHR1cmVBdWRpbyhBdWRpb0J1
ZmZlciogYXVkaW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHN0cmVhbV9kZWxheV9tcykgewotICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKGNy
aXRfY2FwdHVyZV8pOwogICBpZiAoIWVuYWJsZWRfKSB7CiAgICAgcmV0dXJuIEF1ZGlvUHJvY2Vz
c2luZzo6a05vRXJyb3I7CiAgIH0KQEAgLTIwNiwxMCArMjAwLDYgQEAgaW50IEVjaG9DYW5jZWxs
YXRpb25JbXBsOjpQcm9jZXNzQ2FwdHVyZUF1ZGlvKEF1ZGlvQnVmZmVyKiBhdWRpbywKIH0KIAog
aW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpFbmFibGUoYm9vbCBlbmFibGUpIHsKLSAgLy8gUnVu
IGluIGEgc2luZ2xlLXRocmVhZGVkIG1hbm5lci4KLSAgcnRjOjpDcml0U2NvcGUgY3NfcmVuZGVy
KGNyaXRfcmVuZGVyXyk7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9jYXB0dXJl
Xyk7Ci0KICAgaWYgKGVuYWJsZSAmJiAhZW5hYmxlZF8pIHsKICAgICBlbmFibGVkXyA9IGVuYWJs
ZTsgIC8vIE11c3QgYmUgc2V0IGJlZm9yZSBJbml0aWFsaXplKCkgaXMgY2FsbGVkLgogCkBAIC0y
MjcsNjggKzIxNyw1MiBAQCBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OkVuYWJsZShib29sIGVu
YWJsZSkgewogfQogCiBib29sIEVjaG9DYW5jZWxsYXRpb25JbXBsOjppc19lbmFibGVkKCkgY29u
c3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgcmV0dXJuIGVuYWJs
ZWRfOwogfQogCiBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OnNldF9zdXBwcmVzc2lvbl9sZXZl
bChTdXBwcmVzc2lvbkxldmVsIGxldmVsKSB7Ci0gIHsKLSAgICBpZiAoTWFwU2V0dGluZyhsZXZl
bCkgPT0gLTEpIHsKLSAgICAgIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtCYWRQYXJhbWV0ZXJF
cnJvcjsKLSAgICB9Ci0gICAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7Ci0gICAg
c3VwcHJlc3Npb25fbGV2ZWxfID0gbGV2ZWw7CisgIGlmIChNYXBTZXR0aW5nKGxldmVsKSA9PSAt
MSkgeworICAgIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtCYWRQYXJhbWV0ZXJFcnJvcjsKICAg
fQorICBzdXBwcmVzc2lvbl9sZXZlbF8gPSBsZXZlbDsKICAgcmV0dXJuIENvbmZpZ3VyZSgpOwog
fQogCiBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6U3VwcHJlc3Npb25MZXZlbCBFY2hvQ2FuY2VsbGF0
aW9uSW1wbDo6c3VwcHJlc3Npb25fbGV2ZWwoKQogICAgIGNvbnN0IHsKLSAgcnRjOjpDcml0U2Nv
cGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVybiBzdXBwcmVzc2lvbl9sZXZlbF87CiB9CiAK
IGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6ZW5hYmxlX2RyaWZ0X2NvbXBlbnNhdGlvbihib29s
IGVuYWJsZSkgewotICB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7Ci0g
ICAgZHJpZnRfY29tcGVuc2F0aW9uX2VuYWJsZWRfID0gZW5hYmxlOwotICB9CisgIGRyaWZ0X2Nv
bXBlbnNhdGlvbl9lbmFibGVkXyA9IGVuYWJsZTsKICAgcmV0dXJuIENvbmZpZ3VyZSgpOwogfQog
CiBib29sIEVjaG9DYW5jZWxsYXRpb25JbXBsOjppc19kcmlmdF9jb21wZW5zYXRpb25fZW5hYmxl
ZCgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVy
biBkcmlmdF9jb21wZW5zYXRpb25fZW5hYmxlZF87CiB9CiAKIHZvaWQgRWNob0NhbmNlbGxhdGlv
bkltcGw6OnNldF9zdHJlYW1fZHJpZnRfc2FtcGxlcyhpbnQgZHJpZnQpIHsKLSAgcnRjOjpDcml0
U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHdhc19zdHJlYW1fZHJpZnRfc2V0XyA9IHRydWU7
CiAgIHN0cmVhbV9kcmlmdF9zYW1wbGVzXyA9IGRyaWZ0OwogfQogCiBpbnQgRWNob0NhbmNlbGxh
dGlvbkltcGw6OnN0cmVhbV9kcmlmdF9zYW1wbGVzKCkgY29uc3QgewotICBydGM6OkNyaXRTY29w
ZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgcmV0dXJuIHN0cmVhbV9kcmlmdF9zYW1wbGVzXzsKIH0K
IAogaW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjplbmFibGVfbWV0cmljcyhib29sIGVuYWJsZSkg
ewotICB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7Ci0gICAgbWV0cmlj
c19lbmFibGVkXyA9IGVuYWJsZTsKLSAgfQorICBtZXRyaWNzX2VuYWJsZWRfID0gZW5hYmxlOwog
ICByZXR1cm4gQ29uZmlndXJlKCk7CiB9CiAKIGJvb2wgRWNob0NhbmNlbGxhdGlvbkltcGw6OmFy
ZV9tZXRyaWNzX2VuYWJsZWQoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2Fw
dHVyZV8pOwogICByZXR1cm4gZW5hYmxlZF8gJiYgbWV0cmljc19lbmFibGVkXzsKIH0KIAogLy8g
VE9ETyhham0pOiB3ZSBjdXJyZW50bHkganVzdCB1c2UgdGhlIG1ldHJpY3MgZnJvbSB0aGUgZmly
c3QgQUVDLiBUaGluayBtb3JlCiAvLyAgICAgICAgICAgIGFib3VlIHRoZSBiZXN0IHdheSB0byBl
eHRlbmQgdGhpcyB0byBtdWx0aS1jaGFubmVsLgogaW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpH
ZXRNZXRyaWNzKE1ldHJpY3MqIG1ldHJpY3MpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9j
YXB0dXJlXyk7CiAgIGlmIChtZXRyaWNzID09IE5VTEwpIHsKICAgICByZXR1cm4gQXVkaW9Qcm9j
ZXNzaW5nOjprTnVsbFBvaW50ZXJFcnJvcjsKICAgfQpAQCAtMzMxLDQ2ICszMDUsMzYgQEAgaW50
IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpHZXRNZXRyaWNzKE1ldHJpY3MqIG1ldHJpY3MpIHsKIH0K
IAogYm9vbCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6c3RyZWFtX2hhc19lY2hvKCkgY29uc3Qgewot
ICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgcmV0dXJuIHN0cmVhbV9oYXNf
ZWNob187CiB9CiAKIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6ZW5hYmxlX2RlbGF5X2xvZ2dp
bmcoYm9vbCBlbmFibGUpIHsKLSAgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVy
ZV8pOwotICAgIGRlbGF5X2xvZ2dpbmdfZW5hYmxlZF8gPSBlbmFibGU7Ci0gIH0KKyAgZGVsYXlf
bG9nZ2luZ19lbmFibGVkXyA9IGVuYWJsZTsKICAgcmV0dXJuIENvbmZpZ3VyZSgpOwogfQogCiBi
b29sIEVjaG9DYW5jZWxsYXRpb25JbXBsOjppc19kZWxheV9sb2dnaW5nX2VuYWJsZWQoKSBjb25z
dCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1cm4gZW5hYmxl
ZF8gJiYgZGVsYXlfbG9nZ2luZ19lbmFibGVkXzsKIH0KIAogYm9vbCBFY2hvQ2FuY2VsbGF0aW9u
SW1wbDo6aXNfZGVsYXlfYWdub3N0aWNfZW5hYmxlZCgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2Nv
cGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVybiBkZWxheV9hZ25vc3RpY19lbmFibGVkXzsK
IH0KIAogc3RkOjpzdHJpbmcgRWNob0NhbmNlbGxhdGlvbkltcGw6OkdldEV4cGVyaW1lbnRzRGVz
Y3JpcHRpb24oKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1
cm4gcmVmaW5lZF9hZGFwdGl2ZV9maWx0ZXJfZW5hYmxlZF8gPyAiUmVmaW5lZEFkYXB0aXZlRmls
dGVyOyIgOiAiIjsKIH0KIAogYm9vbCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6aXNfcmVmaW5lZF9h
ZGFwdGl2ZV9maWx0ZXJfZW5hYmxlZCgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3Jp
dF9jYXB0dXJlXyk7CiAgIHJldHVybiByZWZpbmVkX2FkYXB0aXZlX2ZpbHRlcl9lbmFibGVkXzsK
IH0KIAogYm9vbCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6aXNfZXh0ZW5kZWRfZmlsdGVyX2VuYWJs
ZWQoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1
cm4gZXh0ZW5kZWRfZmlsdGVyX2VuYWJsZWRfOwogfQogCiAvLyBUT0RPKGJqb3Judik6IEhvdyBz
aG91bGQgd2UgaGFuZGxlIHRoZSBtdWx0aS1jaGFubmVsIGNhc2U/CiBpbnQgRWNob0NhbmNlbGxh
dGlvbkltcGw6OkdldERlbGF5TWV0cmljcyhpbnQqIG1lZGlhbiwgaW50KiBzdGQpIHsKLSAgcnRj
OjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIGZsb2F0IGZyYWN0aW9uX3Bvb3JfZGVs
YXlzID0gMDsKICAgcmV0dXJuIEdldERlbGF5TWV0cmljcyhtZWRpYW4sIHN0ZCwgJmZyYWN0aW9u
X3Bvb3JfZGVsYXlzKTsKIH0KQEAgLTM3OCw3ICszNDIsNiBAQCBpbnQgRWNob0NhbmNlbGxhdGlv
bkltcGw6OkdldERlbGF5TWV0cmljcyhpbnQqIG1lZGlhbiwgaW50KiBzdGQpIHsKIGludCBFY2hv
Q2FuY2VsbGF0aW9uSW1wbDo6R2V0RGVsYXlNZXRyaWNzKGludCogbWVkaWFuLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBzdGQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCogZnJhY3Rpb25fcG9vcl9kZWxheXMp
IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIGlmIChtZWRpYW4gPT0g
TlVMTCkgewogICAgIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtOdWxsUG9pbnRlckVycm9yOwog
ICB9CkBAIC00MDAsNyArMzYzLDYgQEAgaW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpHZXREZWxh
eU1ldHJpY3MoaW50KiBtZWRpYW4sCiB9CiAKIHN0cnVjdCBBZWNDb3JlKiBFY2hvQ2FuY2VsbGF0
aW9uSW1wbDo6YWVjX2NvcmUoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2Fw
dHVyZV8pOwogICBpZiAoIWVuYWJsZWRfKSB7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KQEAgLTQx
MSw5ICszNzMsNiBAQCB2b2lkIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpJbml0aWFsaXplKGludCBz
YW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG51bV9yZXZlcnNlX2NoYW5uZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbnVtX291dHB1dF9jaGFubmVscywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9wcm9jX2NoYW5uZWxzKSB7Ci0gIHJ0Yzo6Q3Jp
dFNjb3BlIGNzX3JlbmRlcihjcml0X3JlbmRlcl8pOwotICBydGM6OkNyaXRTY29wZSBjc19jYXB0
dXJlKGNyaXRfY2FwdHVyZV8pOwotCiAgIHN0cmVhbV9wcm9wZXJ0aWVzXy5yZXNldCgKICAgICAg
IG5ldyBTdHJlYW1Qcm9wZXJ0aWVzKHNhbXBsZV9yYXRlX2h6LCBudW1fcmV2ZXJzZV9jaGFubmVs
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9vdXRwdXRfY2hhbm5lbHMsIG51bV9w
cm9jX2NoYW5uZWxzKSk7CkBAIC00NDIsNyArNDAxLDYgQEAgdm9pZCBFY2hvQ2FuY2VsbGF0aW9u
SW1wbDo6SW5pdGlhbGl6ZShpbnQgc2FtcGxlX3JhdGVfaHosCiB9CiAKIGludCBFY2hvQ2FuY2Vs
bGF0aW9uSW1wbDo6R2V0U3lzdGVtRGVsYXlJblNhbXBsZXMoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3Jp
dFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICBSVENfRENIRUNLKGVuYWJsZWRfKTsKICAgLy8g
UmVwb3J0IHRoZSBkZWxheSBmb3IgdGhlIGZpcnN0IEFFQyBjb21wb25lbnQuCiAgIHJldHVybiBX
ZWJSdGNBZWNfc3lzdGVtX2RlbGF5KFdlYlJ0Y0FlY19hZWNfY29yZShjYW5jZWxsZXJzX1swXS0+
c3RhdGUoKSkpOwpAQCAtNDcxLDcgKzQyOSw2IEBAIHZvaWQgRWNob0NhbmNlbGxhdGlvbkltcGw6
OlBhY2tSZW5kZXJBdWRpb0J1ZmZlcigKIAogdm9pZCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6U2V0
RXh0cmFPcHRpb25zKGNvbnN0IHdlYnJ0Yzo6Q29uZmlnJiBjb25maWcpIHsKICAgewotICAgIHJ0
Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICAgIGV4dGVuZGVkX2ZpbHRlcl9lbmFi
bGVkXyA9IGNvbmZpZy5HZXQ8RXh0ZW5kZWRGaWx0ZXI+KCkuZW5hYmxlZDsKICAgICBkZWxheV9h
Z25vc3RpY19lbmFibGVkXyA9IGNvbmZpZy5HZXQ8RGVsYXlBZ25vc3RpYz4oKS5lbmFibGVkOwog
ICAgIHJlZmluZWRfYWRhcHRpdmVfZmlsdGVyX2VuYWJsZWRfID0KQEAgLTQ4MSw4ICs0MzgsNiBA
QCB2b2lkIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpTZXRFeHRyYU9wdGlvbnMoY29uc3Qgd2VicnRj
OjpDb25maWcmIGNvbmZpZykgewogfQogCiBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OkNvbmZp
Z3VyZSgpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3NfcmVuZGVyKGNyaXRfcmVuZGVyXyk7Ci0gIHJ0
Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9jYXB0dXJlXyk7CiAgIEFlY0NvbmZpZyBjb25m
aWc7CiAgIGNvbmZpZy5tZXRyaWNzTW9kZSA9IG1ldHJpY3NfZW5hYmxlZF87CiAgIGNvbmZpZy5u
bHBNb2RlID0gTWFwU2V0dGluZyhzdXBwcmVzc2lvbl9sZXZlbF8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxh
dGlvbl9pbXBsLmgKaW5kZXggMDkxYTdiNTExNmEyYWQ3ZTYxOGE5Y2ZlMTg0NzQxM2U3ZjQ0MmJh
Mi4uYThiNDNhOGNkNjJiOGVjMTUxYjgwZGUwYjBhZTY0OTEzNjc3ZmZjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19j
YW5jZWxsYXRpb25faW1wbC5oCkBAIC0xMSwxMiArMTEsMTYgQEAKICNpZm5kZWYgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0VDSE9fQ0FOQ0VMTEFUSU9OX0lNUExfSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX0VDSE9fQ0FOQ0VMTEFUSU9OX0lNUExfSF8KIAorI2luY2x1ZGUg
PHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRp
Y2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMjgsOCArMzIsNyBAQCBjbGFzcyBBdWRpb0J1ZmZl
cjsKIC8vIGZvciBQQyBhbmQgSVAgcGhvbmUgYXBwbGljYXRpb25zLgogY2xhc3MgRWNob0NhbmNl
bGxhdGlvbkltcGwgewogIHB1YmxpYzoKLSAgRWNob0NhbmNlbGxhdGlvbkltcGwocnRjOjpDcml0
aWNhbFNlY3Rpb24qIGNyaXRfcmVuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNy
aXRpY2FsU2VjdGlvbiogY3JpdF9jYXB0dXJlKTsKKyAgZXhwbGljaXQgRWNob0NhbmNlbGxhdGlv
bkltcGwoKTsKICAgfkVjaG9DYW5jZWxsYXRpb25JbXBsKCk7CiAKICAgdm9pZCBQcm9jZXNzUmVu
ZGVyQXVkaW8ocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHBhY2tlZF9yZW5kZXJfYXVkaW8p
OwpAQCAtODAsMTcgKzgzLDIzIEBAIGNsYXNzIEVjaG9DYW5jZWxsYXRpb25JbXBsIHsKICAgLy8g
UF9hOiAgICBJbnRlcm5hbCBzaWduYWwgcG93ZXIgYXQgdGhlIHBvaW50IGJlZm9yZSB0aGUgQUVD
J3Mgbm9uLWxpbmVhcgogICAvLyAgICAgICAgIHByb2Nlc3Nvci4KICAgc3RydWN0IE1ldHJpY3Mg
eworICAgIHN0cnVjdCBTdGF0aXN0aWMgeworICAgICAgaW50IGluc3RhbnQgPSAwOyAgLy8gSW5z
dGFudGFuZW91cyB2YWx1ZS4KKyAgICAgIGludCBhdmVyYWdlID0gMDsgIC8vIExvbmctdGVybSBh
dmVyYWdlLgorICAgICAgaW50IG1heGltdW0gPSAwOyAgLy8gTG9uZy10ZXJtIG1heGltdW0uCisg
ICAgICBpbnQgbWluaW11bSA9IDA7ICAvLyBMb25nLXRlcm0gbWluaW11bS4KKyAgICB9OwogICAg
IC8vIFJFUkwgPSBFUkwgKyBFUkxFCi0gICAgQXVkaW9Qcm9jZXNzaW5nOjpTdGF0aXN0aWMgcmVz
aWR1YWxfZWNob19yZXR1cm5fbG9zczsKKyAgICBTdGF0aXN0aWMgcmVzaWR1YWxfZWNob19yZXR1
cm5fbG9zczsKIAogICAgIC8vIEVSTCA9IDEwbG9nXzEwKFBfZmFyIC8gUF9lY2hvKQotICAgIEF1
ZGlvUHJvY2Vzc2luZzo6U3RhdGlzdGljIGVjaG9fcmV0dXJuX2xvc3M7CisgICAgU3RhdGlzdGlj
IGVjaG9fcmV0dXJuX2xvc3M7CiAKICAgICAvLyBFUkxFID0gMTBsb2dfMTAoUF9lY2hvIC8gUF9v
dXQpCi0gICAgQXVkaW9Qcm9jZXNzaW5nOjpTdGF0aXN0aWMgZWNob19yZXR1cm5fbG9zc19lbmhh
bmNlbWVudDsKKyAgICBTdGF0aXN0aWMgZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudDsKIAog
ICAgIC8vIChQcmUgbm9uLWxpbmVhciBwcm9jZXNzaW5nIHN1cHByZXNzaW9uKSBBX05MUCA9IDEw
bG9nXzEwKFBfZWNobyAvIFBfYSkKLSAgICBBdWRpb1Byb2Nlc3Npbmc6OlN0YXRpc3RpYyBhX25s
cDsKKyAgICBTdGF0aXN0aWMgYV9ubHA7CiAKICAgICAvLyBGcmFjdGlvbiBvZiB0aW1lIHRoYXQg
dGhlIEFFQyBsaW5lYXIgZmlsdGVyIGlzIGRpdmVyZ2VudCwgaW4gYSAxLXNlY29uZAogICAgIC8v
IG5vbi1vdmVybGFwcGVkIGFnZ3JlZ2F0aW9uIHdpbmRvdy4KQEAgLTE1MCwyOCArMTU5LDIzIEBA
IGNsYXNzIEVjaG9DYW5jZWxsYXRpb25JbXBsIHsKICAgdm9pZCBBbGxvY2F0ZVJlbmRlclF1ZXVl
KCk7CiAgIGludCBDb25maWd1cmUoKTsKIAotICBydGM6OkNyaXRpY2FsU2VjdGlvbiogY29uc3Qg
Y3JpdF9yZW5kZXJfIFJUQ19BQ1FVSVJFRF9CRUZPUkUoY3JpdF9jYXB0dXJlXyk7Ci0gIHJ0Yzo6
Q3JpdGljYWxTZWN0aW9uKiBjb25zdCBjcml0X2NhcHR1cmVfOwotCiAgIGJvb2wgZW5hYmxlZF8g
PSBmYWxzZTsKLSAgYm9vbCBkcmlmdF9jb21wZW5zYXRpb25fZW5hYmxlZF8gUlRDX0dVQVJERURf
QlkoY3JpdF9jYXB0dXJlXyk7Ci0gIGJvb2wgbWV0cmljc19lbmFibGVkXyBSVENfR1VBUkRFRF9C
WShjcml0X2NhcHR1cmVfKTsKLSAgU3VwcHJlc3Npb25MZXZlbCBzdXBwcmVzc2lvbl9sZXZlbF8g
UlRDX0dVQVJERURfQlkoY3JpdF9jYXB0dXJlXyk7Ci0gIGludCBzdHJlYW1fZHJpZnRfc2FtcGxl
c18gUlRDX0dVQVJERURfQlkoY3JpdF9jYXB0dXJlXyk7Ci0gIGJvb2wgd2FzX3N0cmVhbV9kcmlm
dF9zZXRfIFJUQ19HVUFSREVEX0JZKGNyaXRfY2FwdHVyZV8pOwotICBib29sIHN0cmVhbV9oYXNf
ZWNob18gUlRDX0dVQVJERURfQlkoY3JpdF9jYXB0dXJlXyk7Ci0gIGJvb2wgZGVsYXlfbG9nZ2lu
Z19lbmFibGVkXyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAgYm9vbCBleHRlbmRl
ZF9maWx0ZXJfZW5hYmxlZF8gUlRDX0dVQVJERURfQlkoY3JpdF9jYXB0dXJlXyk7Ci0gIGJvb2wg
ZGVsYXlfYWdub3N0aWNfZW5hYmxlZF8gUlRDX0dVQVJERURfQlkoY3JpdF9jYXB0dXJlXyk7Ci0g
IGJvb2wgcmVmaW5lZF9hZGFwdGl2ZV9maWx0ZXJfZW5hYmxlZF8gUlRDX0dVQVJERURfQlkoY3Jp
dF9jYXB0dXJlXykgPSBmYWxzZTsKKyAgYm9vbCBkcmlmdF9jb21wZW5zYXRpb25fZW5hYmxlZF87
CisgIGJvb2wgbWV0cmljc19lbmFibGVkXzsKKyAgU3VwcHJlc3Npb25MZXZlbCBzdXBwcmVzc2lv
bl9sZXZlbF87CisgIGludCBzdHJlYW1fZHJpZnRfc2FtcGxlc187CisgIGJvb2wgd2FzX3N0cmVh
bV9kcmlmdF9zZXRfOworICBib29sIHN0cmVhbV9oYXNfZWNob187CisgIGJvb2wgZGVsYXlfbG9n
Z2luZ19lbmFibGVkXzsKKyAgYm9vbCBleHRlbmRlZF9maWx0ZXJfZW5hYmxlZF87CisgIGJvb2wg
ZGVsYXlfYWdub3N0aWNfZW5hYmxlZF87CisgIGJvb2wgcmVmaW5lZF9hZGFwdGl2ZV9maWx0ZXJf
ZW5hYmxlZF8gPSBmYWxzZTsKIAogICAvLyBPbmx5IGFjdGl2ZSBvbiBDaHJvbWUgT1MgZGV2aWNl
cy4KLSAgY29uc3QgYm9vbCBlbmZvcmNlX3plcm9fc3RyZWFtX2RlbGF5XyBSVENfR1VBUkRFRF9C
WShjcml0X2NhcHR1cmVfKTsKKyAgY29uc3QgYm9vbCBlbmZvcmNlX3plcm9fc3RyZWFtX2RlbGF5
XzsKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FuY2VsbGVyPj4gY2FuY2VsbGVy
c187CiAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJlYW1Qcm9wZXJ0aWVzPiBzdHJlYW1fcHJvcGVydGll
c187Ci0KLSAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhFY2hvQ2FuY2VsbGF0
aW9uSW1wbCk7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvZWNob19jYW5jZWxsYXRpb25faW1wbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hv
X2NhbmNlbGxhdGlvbl9pbXBsX3VuaXR0ZXN0LmNjCmluZGV4IGM1MGM1MmY4NTdiZjczNTFiNmI4
MTUxNWM3Yjk3YmQ1NzU4ZGRhNWUuLjlkODFjMWRmM2I3NmIyM2ExOWQwYWFhMTA2ZGNjNTJmMGM0
ZDBjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlvbl9pbXBsX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlvbl9pbXBsX3VuaXR0ZXN0LmNj
CkBAIC0xOCw5ICsxOCw3IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogVEVTVChFY2hvQ2FuY2Vs
bGF0aW9uSW50ZXJuYWxUZXN0LCBFeHRlbmRlZEZpbHRlcikgewotICBydGM6OkNyaXRpY2FsU2Vj
dGlvbiBjcml0X3JlbmRlcjsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9jYXB0dXJlOwot
ICBFY2hvQ2FuY2VsbGF0aW9uSW1wbCBlY2hvX2NhbmNlbGxlcigmY3JpdF9yZW5kZXIsICZjcml0
X2NhcHR1cmUpOworICBFY2hvQ2FuY2VsbGF0aW9uSW1wbCBlY2hvX2NhbmNlbGxlcjsKICAgZWNo
b19jYW5jZWxsZXIuSW5pdGlhbGl6ZShBdWRpb1Byb2Nlc3Npbmc6OmtTYW1wbGVSYXRlMzJrSHos
IDIsIDIsIDIpOwogCiAgIEVYUEVDVF9UUlVFKGVjaG9fY2FuY2VsbGVyLmFlY19jb3JlKCkgPT0g
bnVsbHB0cik7CkBAIC01MSw5ICs0OSw3IEBAIFRFU1QoRWNob0NhbmNlbGxhdGlvbkludGVybmFs
VGVzdCwgRXh0ZW5kZWRGaWx0ZXIpIHsKIH0KIAogVEVTVChFY2hvQ2FuY2VsbGF0aW9uSW50ZXJu
YWxUZXN0LCBEZWxheUFnbm9zdGljKSB7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfcmVu
ZGVyOwotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X2NhcHR1cmU7Ci0gIEVjaG9DYW5jZWxs
YXRpb25JbXBsIGVjaG9fY2FuY2VsbGVyKCZjcml0X3JlbmRlciwgJmNyaXRfY2FwdHVyZSk7Cisg
IEVjaG9DYW5jZWxsYXRpb25JbXBsIGVjaG9fY2FuY2VsbGVyOwogICBlY2hvX2NhbmNlbGxlci5J
bml0aWFsaXplKEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGUzMmtIeiwgMSwgMSwgMSk7CiAK
ICAgRVhQRUNUX1RSVUUoZWNob19jYW5jZWxsZXIuYWVjX2NvcmUoKSA9PSBOVUxMKTsKQEAgLTg1
LDkgKzgxLDcgQEAgVEVTVChFY2hvQ2FuY2VsbGF0aW9uSW50ZXJuYWxUZXN0LCBEZWxheUFnbm9z
dGljKSB7CiB9CiAKIFRFU1QoRWNob0NhbmNlbGxhdGlvbkludGVybmFsVGVzdCwgSW50ZXJmYWNl
Q29uZmlndXJhdGlvbikgewotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X3JlbmRlcjsKLSAg
cnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9jYXB0dXJlOwotICBFY2hvQ2FuY2VsbGF0aW9uSW1w
bCBlY2hvX2NhbmNlbGxlcigmY3JpdF9yZW5kZXIsICZjcml0X2NhcHR1cmUpOworICBFY2hvQ2Fu
Y2VsbGF0aW9uSW1wbCBlY2hvX2NhbmNlbGxlcjsKICAgZWNob19jYW5jZWxsZXIuSW5pdGlhbGl6
ZShBdWRpb1Byb2Nlc3Npbmc6OmtTYW1wbGVSYXRlMTZrSHosIDEsIDEsIDEpOwogCiAgIEVYUEVD
VF9FUSgwLCBlY2hvX2NhbmNlbGxlci5lbmFibGVfZHJpZnRfY29tcGVuc2F0aW9uKHRydWUpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NvbnRyb2xfbW9iaWxlX2JpdF9leGFjdF91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NvbnRyb2xfbW9iaWxlX2JpdF9leGFjdF91bml0dGVz
dC5jYwppbmRleCA4YjgzNjkyNjBhNTU2NTFkZWMyMGU4OTFkOTYzOWU5MmFmMTdiNTFlLi43ODQ0
ZGFmNTIyNTI2NmFjZmUwZGJjYzQ2MWQ5YzhlZjBjN2UwZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvZWNob19jb250cm9sX21vYmlsZV9iaXRfZXhhY3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2VjaG9fY29udHJvbF9tb2JpbGVfYml0X2V4YWN0X3VuaXR0ZXN0LmNjCkBAIC02NCw5ICs2
NCw3IEBAIHZvaWQgUnVuQml0ZXhhY3RuZXNzVGVzdChpbnQgc2FtcGxlX3JhdGVfaHosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpSb3V0aW5nTW9kZSBy
b3V0aW5nX21vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb21mb3J0X25vaXNl
X2VuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpBcnJheVZpZXc8
Y29uc3QgZmxvYXQ+JiBvdXRwdXRfcmVmZXJlbmNlKSB7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9u
IGNyaXRfcmVuZGVyOwotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X2NhcHR1cmU7Ci0gIEVj
aG9Db250cm9sTW9iaWxlSW1wbCBlY2hvX2NvbnRyb2xfbW9iaWxlKCZjcml0X3JlbmRlciwgJmNy
aXRfY2FwdHVyZSk7CisgIEVjaG9Db250cm9sTW9iaWxlSW1wbCBlY2hvX2NvbnRyb2xfbW9iaWxl
OwogICBTZXR1cENvbXBvbmVudChzYW1wbGVfcmF0ZV9oeiwgcm91dGluZ19tb2RlLCBjb21mb3J0
X25vaXNlX2VuYWJsZWQsCiAgICAgICAgICAgICAgICAgICZlY2hvX2NvbnRyb2xfbW9iaWxlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfaW1wbC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9lY2hvX2NvbnRyb2xfbW9iaWxlX2ltcGwuY2MKaW5kZXggYmQxMjVjNmUwZGUwOWE0
NTdlYjI1YmE5YWRhNTlkZDJlM2U1ZWE3MS4uYjlmYmY0MjA1Mjc5N2RmZmFhM2Q2MzllMTYyMDI2
OGIwODU2MDgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfaW1w
bC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV9pbXBsLmNjCkBAIC0xMSwx
MSArMTEsMTMgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250
cm9sX21vYmlsZV9pbXBsLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3Rk
aW50PgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY20vZWNob19jb250
cm9sX21vYmlsZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19i
dWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRp
b19wcm9jZXNzaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTU1LDEwICs1Nyw2IEBAIEF1ZGlvUHJvY2Vz
c2luZzo6RXJyb3IgTWFwRXJyb3IoaW50IGVycikgewogfQogfSAgLy8gbmFtZXNwYWNlCiAKLXNp
emVfdCBFY2hvQ29udHJvbE1vYmlsZUltcGw6OmVjaG9fcGF0aF9zaXplX2J5dGVzKCkgewotICBy
ZXR1cm4gV2ViUnRjQWVjbV9lY2hvX3BhdGhfc2l6ZV9ieXRlcygpOwotfQotCiBzdHJ1Y3QgRWNo
b0NvbnRyb2xNb2JpbGVJbXBsOjpTdHJlYW1Qcm9wZXJ0aWVzIHsKICAgU3RyZWFtUHJvcGVydGll
cygpID0gZGVsZXRlOwogICBTdHJlYW1Qcm9wZXJ0aWVzKGludCBzYW1wbGVfcmF0ZV9oeiwKQEAg
LTkwLDE3ICs4OCwxMCBAQCBjbGFzcyBFY2hvQ29udHJvbE1vYmlsZUltcGw6OkNhbmNlbGxlciB7
CiAgICAgcmV0dXJuIHN0YXRlXzsKICAgfQogCi0gIHZvaWQgSW5pdGlhbGl6ZShpbnQgc2FtcGxl
X3JhdGVfaHosCi0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBleHRlcm5hbF9lY2hv
X3BhdGgsCi0gICAgICAgICAgICAgICAgICBzaXplX3QgZWNob19wYXRoX3NpemVfYnl0ZXMpIHsK
KyAgdm9pZCBJbml0aWFsaXplKGludCBzYW1wbGVfcmF0ZV9oeikgewogICAgIFJUQ19EQ0hFQ0so
c3RhdGVfKTsKICAgICBpbnQgZXJyb3IgPSBXZWJSdGNBZWNtX0luaXQoc3RhdGVfLCBzYW1wbGVf
cmF0ZV9oeik7CiAgICAgUlRDX0RDSEVDS19FUShBdWRpb1Byb2Nlc3Npbmc6OmtOb0Vycm9yLCBl
cnJvcik7Ci0gICAgaWYgKGV4dGVybmFsX2VjaG9fcGF0aCAhPSBOVUxMKSB7Ci0gICAgICBlcnJv
ciA9IFdlYlJ0Y0FlY21fSW5pdEVjaG9QYXRoKHN0YXRlXywgZXh0ZXJuYWxfZWNob19wYXRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvX3BhdGhfc2l6ZV9ieXRl
cyk7Ci0gICAgICBSVENfRENIRUNLX0VRKEF1ZGlvUHJvY2Vzc2luZzo6a05vRXJyb3IsIGVycm9y
KTsKLSAgICB9CiAgIH0KIAogIHByaXZhdGU6CkBAIC0xMDgsMjcgKzk5LDEzIEBAIGNsYXNzIEVj
aG9Db250cm9sTW9iaWxlSW1wbDo6Q2FuY2VsbGVyIHsKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihDYW5jZWxsZXIpOwogfTsKIAotRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpFY2hvQ29u
dHJvbE1vYmlsZUltcGwocnRjOjpDcml0aWNhbFNlY3Rpb24qIGNyaXRfcmVuZGVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpDcml0aWNhbFNlY3Rp
b24qIGNyaXRfY2FwdHVyZSkKLSAgICA6IGNyaXRfcmVuZGVyXyhjcml0X3JlbmRlciksCi0gICAg
ICBjcml0X2NhcHR1cmVfKGNyaXRfY2FwdHVyZSksCi0gICAgICByb3V0aW5nX21vZGVfKGtTcGVh
a2VycGhvbmUpLAotICAgICAgY29tZm9ydF9ub2lzZV9lbmFibGVkXyhmYWxzZSksCi0gICAgICBl
eHRlcm5hbF9lY2hvX3BhdGhfKE5VTEwpIHsKLSAgUlRDX0RDSEVDSyhjcml0X3JlbmRlcik7Ci0g
IFJUQ19EQ0hFQ0soY3JpdF9jYXB0dXJlKTsKLX0KK0VjaG9Db250cm9sTW9iaWxlSW1wbDo6RWNo
b0NvbnRyb2xNb2JpbGVJbXBsKCkKKyAgICA6IHJvdXRpbmdfbW9kZV8oa1NwZWFrZXJwaG9uZSks
IGNvbWZvcnRfbm9pc2VfZW5hYmxlZF8oZmFsc2UpIHt9CiAKLUVjaG9Db250cm9sTW9iaWxlSW1w
bDo6fkVjaG9Db250cm9sTW9iaWxlSW1wbCgpIHsKLSAgaWYgKGV4dGVybmFsX2VjaG9fcGF0aF8g
IT0gTlVMTCkgewotICAgIGRlbGV0ZVtdIGV4dGVybmFsX2VjaG9fcGF0aF87Ci0gICAgZXh0ZXJu
YWxfZWNob19wYXRoXyA9IE5VTEw7Ci0gIH0KLX0KK0VjaG9Db250cm9sTW9iaWxlSW1wbDo6fkVj
aG9Db250cm9sTW9iaWxlSW1wbCgpIHt9CiAKIHZvaWQgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpQ
cm9jZXNzUmVuZGVyQXVkaW8oCiAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgaW50MTZfdD4gcGFj
a2VkX3JlbmRlcl9hdWRpbykgewotICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKGNyaXRfY2Fw
dHVyZV8pOwogICBpZiAoIWVuYWJsZWRfKSB7CiAgICAgcmV0dXJuOwogICB9CkBAIC0xODEsNyAr
MTU4LDYgQEAgc2l6ZV90IEVjaG9Db250cm9sTW9iaWxlSW1wbDo6TnVtQ2FuY2VsbGVyc1JlcXVp
cmVkKAogCiBpbnQgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpQcm9jZXNzQ2FwdHVyZUF1ZGlvKEF1
ZGlvQnVmZmVyKiBhdWRpbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHN0cmVhbV9kZWxheV9tcykgewotICBydGM6OkNyaXRTY29wZSBjc19jYXB0
dXJlKGNyaXRfY2FwdHVyZV8pOwogICBpZiAoIWVuYWJsZWRfKSB7CiAgICAgcmV0dXJuIEF1ZGlv
UHJvY2Vzc2luZzo6a05vRXJyb3I7CiAgIH0KQEAgLTIyOCw4ICsyMDQsNiBAQCBpbnQgRWNob0Nv
bnRyb2xNb2JpbGVJbXBsOjpQcm9jZXNzQ2FwdHVyZUF1ZGlvKEF1ZGlvQnVmZmVyKiBhdWRpbywK
IAogaW50IEVjaG9Db250cm9sTW9iaWxlSW1wbDo6RW5hYmxlKGJvb2wgZW5hYmxlKSB7CiAgIC8v
IEVuc3VyZSBBRUMgYW5kIEFFQ00gYXJlIG5vdCBib3RoIGVuYWJsZWQuCi0gIHJ0Yzo6Q3JpdFNj
b3BlIGNzX3JlbmRlcihjcml0X3JlbmRlcl8pOwotICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJl
KGNyaXRfY2FwdHVyZV8pOwogICBSVENfRENIRUNLKHN0cmVhbV9wcm9wZXJ0aWVzXyk7CiAKICAg
aWYgKGVuYWJsZSAmJgpAQCAtMjUyLDcgKzIyNiw2IEBAIGludCBFY2hvQ29udHJvbE1vYmlsZUlt
cGw6OkVuYWJsZShib29sIGVuYWJsZSkgewogfQogCiBib29sIEVjaG9Db250cm9sTW9iaWxlSW1w
bDo6aXNfZW5hYmxlZCgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJl
Xyk7CiAgIHJldHVybiBlbmFibGVkXzsKIH0KIApAQCAtMjYwLDkwICsyMzMsMjYgQEAgaW50IEVj
aG9Db250cm9sTW9iaWxlSW1wbDo6c2V0X3JvdXRpbmdfbW9kZShSb3V0aW5nTW9kZSBtb2RlKSB7
CiAgIGlmIChNYXBTZXR0aW5nKG1vZGUpID09IC0xKSB7CiAgICAgcmV0dXJuIEF1ZGlvUHJvY2Vz
c2luZzo6a0JhZFBhcmFtZXRlckVycm9yOwogICB9Ci0KLSAgewotICAgIHJ0Yzo6Q3JpdFNjb3Bl
IGNzKGNyaXRfY2FwdHVyZV8pOwogICAgIHJvdXRpbmdfbW9kZV8gPSBtb2RlOwotICB9CiAgIHJl
dHVybiBDb25maWd1cmUoKTsKIH0KIAogRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpSb3V0aW5nTW9k
ZSBFY2hvQ29udHJvbE1vYmlsZUltcGw6OnJvdXRpbmdfbW9kZSgpIGNvbnN0IHsKLSAgcnRjOjpD
cml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVybiByb3V0aW5nX21vZGVfOwogfQog
CiBpbnQgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjplbmFibGVfY29tZm9ydF9ub2lzZShib29sIGVu
YWJsZSkgewotICB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgICAg
Y29tZm9ydF9ub2lzZV9lbmFibGVkXyA9IGVuYWJsZTsKLSAgfQogICByZXR1cm4gQ29uZmlndXJl
KCk7CiB9CiAKIGJvb2wgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjppc19jb21mb3J0X25vaXNlX2Vu
YWJsZWQoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICBy
ZXR1cm4gY29tZm9ydF9ub2lzZV9lbmFibGVkXzsKIH0KIAotaW50IEVjaG9Db250cm9sTW9iaWxl
SW1wbDo6U2V0RWNob1BhdGgoY29uc3Qgdm9pZCogZWNob19wYXRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemVfYnl0ZXMpIHsKLSAgewotICAgIHJ0
Yzo6Q3JpdFNjb3BlIGNzX3JlbmRlcihjcml0X3JlbmRlcl8pOwotICAgIHJ0Yzo6Q3JpdFNjb3Bl
IGNzX2NhcHR1cmUoY3JpdF9jYXB0dXJlXyk7Ci0gICAgaWYgKGVjaG9fcGF0aCA9PSBOVUxMKSB7
Ci0gICAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprTnVsbFBvaW50ZXJFcnJvcjsKLSAgICB9
Ci0gICAgaWYgKHNpemVfYnl0ZXMgIT0gZWNob19wYXRoX3NpemVfYnl0ZXMoKSkgewotICAgICAg
Ly8gU2l6ZSBtaXNtYXRjaAotICAgICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFt
ZXRlckVycm9yOwotICAgIH0KLQotICAgIGlmIChleHRlcm5hbF9lY2hvX3BhdGhfID09IE5VTEwp
IHsKLSAgICAgIGV4dGVybmFsX2VjaG9fcGF0aF8gPSBuZXcgdW5zaWduZWQgY2hhcltzaXplX2J5
dGVzXTsKLSAgICB9Ci0gICAgbWVtY3B5KGV4dGVybmFsX2VjaG9fcGF0aF8sIGVjaG9fcGF0aCwg
c2l6ZV9ieXRlcyk7Ci0gIH0KLQotICAvLyBUT0RPKHBlYWgpOiBTaW1wbGlmeSBvbmNlIHRoZSBF
bmFibGUgZnVuY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZCBmcm9tCi0gIC8vIHRoZSBwdWJsaWMgQVBN
IEFQSS4KLSAgUlRDX0RDSEVDSyhzdHJlYW1fcHJvcGVydGllc18pOwotICBJbml0aWFsaXplKHN0
cmVhbV9wcm9wZXJ0aWVzXy0+c2FtcGxlX3JhdGVfaHosCi0gICAgICAgICAgICAgc3RyZWFtX3By
b3BlcnRpZXNfLT5udW1fcmV2ZXJzZV9jaGFubmVscywKLSAgICAgICAgICAgICBzdHJlYW1fcHJv
cGVydGllc18tPm51bV9vdXRwdXRfY2hhbm5lbHMpOwotICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5n
OjprTm9FcnJvcjsKLX0KLQotaW50IEVjaG9Db250cm9sTW9iaWxlSW1wbDo6R2V0RWNob1BhdGgo
dm9pZCogZWNob19wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHNpemVfYnl0ZXMpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0
dXJlXyk7Ci0gIGlmIChlY2hvX3BhdGggPT0gTlVMTCkgewotICAgIHJldHVybiBBdWRpb1Byb2Nl
c3Npbmc6OmtOdWxsUG9pbnRlckVycm9yOwotICB9Ci0gIGlmIChzaXplX2J5dGVzICE9IGVjaG9f
cGF0aF9zaXplX2J5dGVzKCkpIHsKLSAgICAvLyBTaXplIG1pc21hdGNoCi0gICAgcmV0dXJuIEF1
ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFtZXRlckVycm9yOwotICB9Ci0gIGlmICghZW5hYmxlZF8p
IHsKLSAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprTm90RW5hYmxlZEVycm9yOwotICB9Ci0K
LSAgLy8gR2V0IHRoZSBlY2hvIHBhdGggZnJvbSB0aGUgZmlyc3QgY2hhbm5lbAotICBpbnQzMl90
IGVyciA9Ci0gICAgICBXZWJSdGNBZWNtX0dldEVjaG9QYXRoKGNhbmNlbGxlcnNfWzBdLT5zdGF0
ZSgpLCBlY2hvX3BhdGgsIHNpemVfYnl0ZXMpOwotICBpZiAoZXJyICE9IDApIHsKLSAgICByZXR1
cm4gTWFwRXJyb3IoZXJyKTsKLSAgfQotCi0gIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtOb0Vy
cm9yOwotfQotCiB2b2lkIEVjaG9Db250cm9sTW9iaWxlSW1wbDo6SW5pdGlhbGl6ZShpbnQgc2Ft
cGxlX3JhdGVfaHosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbnVtX3JldmVyc2VfY2hhbm5lbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbnVtX291dHB1dF9jaGFubmVscykgewotICBydGM6OkNyaXRTY29wZSBj
c19yZW5kZXIoY3JpdF9yZW5kZXJfKTsKLSAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZShjcml0
X2NhcHR1cmVfKTsKLQogICBzdHJlYW1fcHJvcGVydGllc18ucmVzZXQobmV3IFN0cmVhbVByb3Bl
cnRpZXMoCiAgICAgICBzYW1wbGVfcmF0ZV9oeiwgbnVtX3JldmVyc2VfY2hhbm5lbHMsIG51bV9v
dXRwdXRfY2hhbm5lbHMpKTsKIApAQCAtMzYzLDE2ICsyNzIsMTIgQEAgdm9pZCBFY2hvQ29udHJv
bE1vYmlsZUltcGw6OkluaXRpYWxpemUoaW50IHNhbXBsZV9yYXRlX2h6LAogICAgIGlmICghY2Fu
Y2VsbGVyKSB7CiAgICAgICBjYW5jZWxsZXIucmVzZXQobmV3IENhbmNlbGxlcigpKTsKICAgICB9
Ci0gICAgY2FuY2VsbGVyLT5Jbml0aWFsaXplKHNhbXBsZV9yYXRlX2h6LCBleHRlcm5hbF9lY2hv
X3BhdGhfLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvX3BhdGhfc2l6ZV9ieXRlcygp
KTsKKyAgICBjYW5jZWxsZXItPkluaXRpYWxpemUoc2FtcGxlX3JhdGVfaHopOwogICB9Ci0KICAg
Q29uZmlndXJlKCk7CiB9CiAKIGludCBFY2hvQ29udHJvbE1vYmlsZUltcGw6OkNvbmZpZ3VyZSgp
IHsKLSAgcnRjOjpDcml0U2NvcGUgY3NfcmVuZGVyKGNyaXRfcmVuZGVyXyk7Ci0gIHJ0Yzo6Q3Jp
dFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9jYXB0dXJlXyk7CiAgIEFlY21Db25maWcgY29uZmlnOwog
ICBjb25maWcuY25nTW9kZSA9IGNvbWZvcnRfbm9pc2VfZW5hYmxlZF87CiAgIGNvbmZpZy5lY2hv
TW9kZSA9IE1hcFNldHRpbmcocm91dGluZ19tb2RlXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
ZWNob19jb250cm9sX21vYmlsZV9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmls
ZV9pbXBsLmgKaW5kZXggYTViNjZjODMxMWI4MDQ0N2E5MWQ1NTdhNzQ5ZmZlNzAyNzI3YWJiYi4u
ZDVhOGIwYjQ0NTE1NWU2NTVlNDJiMzcwMmYxZjM3NTIzZjdhMmYwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2Nv
bnRyb2xfbW9iaWxlX2ltcGwuaApAQCAtMTEsMTQgKzExLDEyIEBACiAjaWZuZGVmIE1PRFVMRVNf
QVVESU9fUFJPQ0VTU0lOR19FQ0hPX0NPTlRST0xfTU9CSUxFX0lNUExfSF8KICNkZWZpbmUgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0VDSE9fQ09OVFJPTF9NT0JJTEVfSU1QTF9IXwogCisjaW5j
bHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9p
bmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvcmVuZGVyX3F1ZXVlX2l0ZW1fdmVyaWZpZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9j
b25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvc3dhcF9xdWV1ZS5oIgorI2luY2x1ZGUgImFwaS9hcnJheV92
aWV3LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yOCw4ICsyNiw3IEBAIGNsYXNzIEF1
ZGlvQnVmZmVyOwogLy8gcm9idXN0IG9wdGlvbiBpbnRlbmRlZCBmb3IgdXNlIG9uIG1vYmlsZSBk
ZXZpY2VzLgogY2xhc3MgRWNob0NvbnRyb2xNb2JpbGVJbXBsIHsKICBwdWJsaWM6Ci0gIEVjaG9D
b250cm9sTW9iaWxlSW1wbChydGM6OkNyaXRpY2FsU2VjdGlvbiogY3JpdF9yZW5kZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBydGM6OkNyaXRpY2FsU2VjdGlvbiogY3JpdF9jYXB0dXJlKTsK
KyAgRWNob0NvbnRyb2xNb2JpbGVJbXBsKCk7CiAKICAgfkVjaG9Db250cm9sTW9iaWxlSW1wbCgp
OwogCkBAIC01NywyNiArNTQsNiBAQCBjbGFzcyBFY2hvQ29udHJvbE1vYmlsZUltcGwgewogICBp
bnQgZW5hYmxlX2NvbWZvcnRfbm9pc2UoYm9vbCBlbmFibGUpOwogICBib29sIGlzX2NvbWZvcnRf
bm9pc2VfZW5hYmxlZCgpIGNvbnN0OwogCi0gIC8vIEEgdHlwaWNhbCB1c2UgY2FzZSBpcyB0byBp
bml0aWFsaXplIHRoZSBjb21wb25lbnQgd2l0aCBhbiBlY2hvIHBhdGggZnJvbSBhCi0gIC8vIHBy
ZXZpb3VzIGNhbGwuIFRoZSBlY2hvIHBhdGggaXMgcmV0cmlldmVkIHVzaW5nIHxHZXRFY2hvUGF0
aCgpfCwgdHlwaWNhbGx5Ci0gIC8vIGF0IHRoZSBlbmQgb2YgYSBjYWxsLiBUaGUgZGF0YSBjYW4g
dGhlbiBiZSBzdG9yZWQgZm9yIGxhdGVyIHVzZSBhcyBhbgotICAvLyBpbml0aWFsaXplciBiZWZv
cmUgdGhlIG5leHQgY2FsbCwgdXNpbmcgfFNldEVjaG9QYXRoKCl8LgotICAvLwotICAvLyBDb250
cm9sbGluZyB0aGUgZWNobyBwYXRoIHRoaXMgd2F5IHJlcXVpcmVzIHRoZSBkYXRhIHxzaXplX2J5
dGVzfCB0byBtYXRjaAotICAvLyB0aGUgaW50ZXJuYWwgZWNobyBwYXRoIHNpemUuIFRoaXMgc2l6
ZSBjYW4gYmUgYWNxdWlyZWQgdXNpbmcKLSAgLy8gfGVjaG9fcGF0aF9zaXplX2J5dGVzKCl8LiB8
U2V0RWNob1BhdGgoKXwgY2F1c2VzIGFuIGVudGlyZSByZXNldCwgd29ydGgKLSAgLy8gbm90aW5n
IGlmIGl0IGlzIHRvIGJlIGNhbGxlZCBkdXJpbmcgYW4gb25nb2luZyBjYWxsLgotICAvLwotICAv
LyBJdCBpcyBwb3NzaWJsZSB0aGF0IHZlcnNpb24gaW5jb21wYXRpYmlsaXRpZXMgbWF5IHJlc3Vs
dCBpbiBhIHN0b3JlZCBlY2hvCi0gIC8vIHBhdGggb2YgdGhlIGluY29ycmVjdCBzaXplLiBJbiB0
aGlzIGNhc2UsIHRoZSBzdG9yZWQgcGF0aCBzaG91bGQgYmUKLSAgLy8gZGlzY2FyZGVkLgotICBp
bnQgU2V0RWNob1BhdGgoY29uc3Qgdm9pZCogZWNob19wYXRoLCBzaXplX3Qgc2l6ZV9ieXRlcyk7
Ci0gIGludCBHZXRFY2hvUGF0aCh2b2lkKiBlY2hvX3BhdGgsIHNpemVfdCBzaXplX2J5dGVzKSBj
b25zdDsKLQotICAvLyBUaGUgcmV0dXJuZWQgcGF0aCBzaXplIGlzIGd1YXJhbnRlZWQgbm90IHRv
IGNoYW5nZSBmb3IgdGhlIGxpZmV0aW1lIG9mCi0gIC8vIHRoZSBhcHBsaWNhdGlvbi4KLSAgc3Rh
dGljIHNpemVfdCBlY2hvX3BhdGhfc2l6ZV9ieXRlcygpOwotCiAgIHZvaWQgUHJvY2Vzc1JlbmRl
ckF1ZGlvKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGludDE2X3Q+IHBhY2tlZF9yZW5kZXJfYXVkaW8p
OwogICBpbnQgUHJvY2Vzc0NhcHR1cmVBdWRpbyhBdWRpb0J1ZmZlciogYXVkaW8sIGludCBzdHJl
YW1fZGVsYXlfbXMpOwogCkBAIC05OCwyMCArNzUsMTMgQEAgY2xhc3MgRWNob0NvbnRyb2xNb2Jp
bGVJbXBsIHsKIAogICBpbnQgQ29uZmlndXJlKCk7CiAKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24q
IGNvbnN0IGNyaXRfcmVuZGVyXyBSVENfQUNRVUlSRURfQkVGT1JFKGNyaXRfY2FwdHVyZV8pOwot
ICBydGM6OkNyaXRpY2FsU2VjdGlvbiogY29uc3QgY3JpdF9jYXB0dXJlXzsKLQogICBib29sIGVu
YWJsZWRfID0gZmFsc2U7CiAKLSAgUm91dGluZ01vZGUgcm91dGluZ19tb2RlXyBSVENfR1VBUkRF
RF9CWShjcml0X2NhcHR1cmVfKTsKLSAgYm9vbCBjb21mb3J0X25vaXNlX2VuYWJsZWRfIFJUQ19H
VUFSREVEX0JZKGNyaXRfY2FwdHVyZV8pOwotICB1bnNpZ25lZCBjaGFyKiBleHRlcm5hbF9lY2hv
X3BhdGhfIFJUQ19HVUFSREVEX0JZKGNyaXRfcmVuZGVyXykKLSAgICAgIFJUQ19HVUFSREVEX0JZ
KGNyaXRfY2FwdHVyZV8pOworICBSb3V0aW5nTW9kZSByb3V0aW5nX21vZGVfOworICBib29sIGNv
bWZvcnRfbm9pc2VfZW5hYmxlZF87CiAKICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENh
bmNlbGxlcj4+IGNhbmNlbGxlcnNfOwogICBzdGQ6OnVuaXF1ZV9wdHI8U3RyZWFtUHJvcGVydGll
cz4gc3RyZWFtX3Byb3BlcnRpZXNfOwotCi0gIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJV
Q1RPUlMoRWNob0NvbnRyb2xNb2JpbGVJbXBsKTsKIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NvbnRyb2xfbW9iaWxlX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfdW5pdHRlc3QuY2MKaW5kZXggZDdlNDcw
Y2ExMjBmOWNhZGRhN2ZlYjgxYTIxZmU0OTU3MDkwNTMxMi4uZjBlNjA0ODNkNDExYTNlNGU0M2I1
ZTViODhhYTc2MTZhYjQzOGNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9t
b2JpbGVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfdW5p
dHRlc3QuY2MKQEAgLTE4LDkgKzE4LDcgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBURVNUKEVj
aG9Db250cm9sTW9iaWxlVGVzdCwgSW50ZXJmYWNlQ29uZmlndXJhdGlvbikgewotICBydGM6OkNy
aXRpY2FsU2VjdGlvbiBjcml0X3JlbmRlcjsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9j
YXB0dXJlOwotICBFY2hvQ29udHJvbE1vYmlsZUltcGwgYWVjbSgmY3JpdF9yZW5kZXIsICZjcml0
X2NhcHR1cmUpOworICBFY2hvQ29udHJvbE1vYmlsZUltcGwgYWVjbTsKICAgYWVjbS5Jbml0aWFs
aXplKEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGUxNmtIeiwgMiwgMik7CiAKICAgLy8gVHVy
biBBRUNNIG9uCkBAIC00NiwyOCArNDQsNiBAQCBURVNUKEVjaG9Db250cm9sTW9iaWxlVGVzdCwg
SW50ZXJmYWNlQ29uZmlndXJhdGlvbikgewogICBFWFBFQ1RfRVEoMCwgYWVjbS5lbmFibGVfY29t
Zm9ydF9ub2lzZSh0cnVlKSk7CiAgIEVYUEVDVF9UUlVFKGFlY20uaXNfY29tZm9ydF9ub2lzZV9l
bmFibGVkKCkpOwogCi0gIC8vIFNldCBhbmQgZ2V0IGVjaG8gcGF0aAotICBjb25zdCBzaXplX3Qg
ZWNob19wYXRoX3NpemUgPSBhZWNtLmVjaG9fcGF0aF9zaXplX2J5dGVzKCk7Ci0gIHN0ZDo6dmVj
dG9yPHVpbnQ4X3Q+IGVjaG9fcGF0aF9pbihlY2hvX3BhdGhfc2l6ZSk7Ci0gIHN0ZDo6dmVjdG9y
PHVpbnQ4X3Q+IGVjaG9fcGF0aF9vdXQoZWNob19wYXRoX3NpemUpOwotICBFWFBFQ1RfRVEoQXVk
aW9Qcm9jZXNzaW5nOjprTnVsbFBvaW50ZXJFcnJvciwKLSAgICAgICAgICAgIGFlY20uU2V0RWNo
b1BhdGgobnVsbHB0ciwgZWNob19wYXRoX3NpemUpKTsKLSAgRVhQRUNUX0VRKEF1ZGlvUHJvY2Vz
c2luZzo6a051bGxQb2ludGVyRXJyb3IsCi0gICAgICAgICAgICBhZWNtLkdldEVjaG9QYXRoKG51
bGxwdHIsIGVjaG9fcGF0aF9zaXplKSk7Ci0gIEVYUEVDVF9FUShBdWRpb1Byb2Nlc3Npbmc6OmtC
YWRQYXJhbWV0ZXJFcnJvciwKLSAgICAgICAgICAgIGFlY20uR2V0RWNob1BhdGgoZWNob19wYXRo
X291dC5kYXRhKCksIDEpKTsKLSAgRVhQRUNUX0VRKDAsIGFlY20uR2V0RWNob1BhdGgoZWNob19w
YXRoX291dC5kYXRhKCksIGVjaG9fcGF0aF9zaXplKSk7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZWNob19wYXRoX3NpemU7IGkrKykgewotICAgIGVjaG9fcGF0aF9pbltpXSA9IGVjaG9fcGF0
aF9vdXRbaV0gKyAxOwotICB9Ci0gIEVYUEVDVF9FUShBdWRpb1Byb2Nlc3Npbmc6OmtCYWRQYXJh
bWV0ZXJFcnJvciwKLSAgICAgICAgICAgIGFlY20uU2V0RWNob1BhdGgoZWNob19wYXRoX2luLmRh
dGEoKSwgMSkpOwotICBFWFBFQ1RfRVEoMCwgYWVjbS5TZXRFY2hvUGF0aChlY2hvX3BhdGhfaW4u
ZGF0YSgpLCBlY2hvX3BhdGhfc2l6ZSkpOwotICBFWFBFQ1RfRVEoMCwgYWVjbS5HZXRFY2hvUGF0
aChlY2hvX3BhdGhfb3V0LmRhdGEoKSwgZWNob19wYXRoX3NpemUpKTsKLSAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBlY2hvX3BhdGhfc2l6ZTsgaSsrKSB7Ci0gICAgRVhQRUNUX0VRKGVjaG9fcGF0
aF9pbltpXSwgZWNob19wYXRoX291dFtpXSk7Ci0gIH0KLQogICAvLyBUdXJuIEFFQ00gb2ZmCiAg
IEVYUEVDVF9FUSgwLCBhZWNtLkVuYWJsZShmYWxzZSkpOwogICBFWFBFQ1RfRkFMU0UoYWVjbS5p
c19lbmFibGVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fZGV0ZWN0b3IvY2lyY3Vs
YXJfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19kZXRlY3Rvci9jaXJjdWxhcl9idWZmZXIuaApp
bmRleCA5ZjVjZGZhOTUzNjQzNTlkNmQzYWUzZDU2ZjY1OTBlMTQzNGI0NTQ4Li5jNTIzMTFmODYz
YjQ4YjYyNzhmZjMzMGYxODNhZGY1ZDJkYmJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNo
b19kZXRlY3Rvci9jaXJjdWxhcl9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19kZXRlY3Rv
ci9jaXJjdWxhcl9idWZmZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfRUNIT19ERVRFQ1RPUl9DSVJDVUxBUl9CVUZGRVJfSF8KICNkZWZpbmUg
TU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0VDSE9fREVURUNUT1JfQ0lSQ1VMQVJfQlVGRkVSX0hf
CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9s
X2Zvcl9leHBlcmltZW50YWxfYWdjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9mb3JfZXhw
ZXJpbWVudGFsX2FnYy5jYwppbmRleCA0YWI4NTZjMmMzM2U1NzA5NDBmYWViOThjMGY3ZjM4OGQz
NTk4NDBlLi4xNDc5ZDU4YjU0MzBjOThiYTcwN2RjMjYzYTJmMmNkOWI4YmQxMTZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2Zvcl9leHBlcmltZW50YWxfYWdjLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9nYWluX2NvbnRyb2xfZm9yX2V4cGVyaW1lbnRhbF9hZ2MuY2MKQEAgLTEzLDcg
KzEzLDYgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRp
b19wcm9jZXNzaW5nLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dp
bmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxz
ZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dh
aW5fY29udHJvbF9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9pbXBsLmNjCmluZGV4
IDY4NWEyN2ZmNjY4MTIwOWFiMmE0Yjg0MmJjNzEyZTJiNDk0ZGJiOTAuLmQ1MTE4YmEwNzNkOTk0
MGNmY2JhYjM1M2M4OGNlZmVjNzJhZDY4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2Nv
bnRyb2xfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2ltcGwuY2MKQEAgLTEw
LDEwICsxMCwxNCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5f
Y29udHJvbF9pbXBsLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgorCiAjaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2Mv
bGVnYWN5L2dhaW5fY29udHJvbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hdWRpb19idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5j
bHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xfaW1wbC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2dhaW5fY29udHJvbF9pbXBsLmgKaW5kZXggOTU5NDIyZmI0NGMyMGVhMTM5Mzc4MTU3
ZDZhMTIxYWMzMGE2N2I2ZS4uYzIxZDkxMTMyNjJkNDc1YjgzZDU3Y2IyOTZlMjI1ZTlhZmQ3NzQ3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9pbXBsLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2dhaW5fY29udHJvbF9pbXBsLmgKQEAgLTExLDE0ICsxMSwxNiBAQAogI2lmbmRlZiBNT0RV
TEVTX0FVRElPX1BST0NFU1NJTkdfR0FJTl9DT05UUk9MX0lNUExfSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX0dBSU5fQ09OVFJPTF9JTVBMX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVk
aW9fcHJvY2Vzc2luZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9yZW5k
ZXJfcXVldWVfaXRlbV92ZXJpZmllci5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9pbmNsdWRlL2dhaW5fY29udHJvbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Nv
bnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9zd2FwX3F1ZXVlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhy
ZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2dhaW5fY29udHJvbGxlcjIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5j
YwppbmRleCAyOWFmOTYyZTc0NWZiNTA2MzE3MjIyNDFiOWQ5NDkyOTljN2YxZTdkLi4yYTMyNzQ0
OWRmMmUxNjQyODJiZDA2YzI4ZDNjZTk4MTJkZjc2MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
Z2Fpbl9jb250cm9sbGVyMi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5jYwpA
QCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dh
aW5fY29udHJvbGxlcjIuaCIKIAorI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlv
X3V0aWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVy
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fZnJh
bWVfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2Fw
bV9kYXRhX2R1bXBlci5oIgpAQCAtMjQsOCArMjUsMTAgQEAgaW50IEdhaW5Db250cm9sbGVyMjo6
aW5zdGFuY2VfY291bnRfID0gMDsKIEdhaW5Db250cm9sbGVyMjo6R2FpbkNvbnRyb2xsZXIyKCkK
ICAgICA6IGRhdGFfZHVtcGVyXygKICAgICAgICAgICBuZXcgQXBtRGF0YUR1bXBlcihydGM6OkF0
b21pY09wczo6SW5jcmVtZW50KCZpbnN0YW5jZV9jb3VudF8pKSksCi0gICAgICBmaXhlZF9nYWlu
X2NvbnRyb2xsZXJfKGRhdGFfZHVtcGVyXy5nZXQoKSksCi0gICAgICBhZGFwdGl2ZV9hZ2NfKGRh
dGFfZHVtcGVyXy5nZXQoKSkge30KKyAgICAgIGdhaW5fYXBwbGllcl8oLypoYXJkX2NsaXBfc2Ft
cGxlcz0qL2ZhbHNlLAorICAgICAgICAgICAgICAgICAgICAvKmluaXRpYWxfZ2Fpbl9mYWN0b3I9
Ki8wLmYpLAorICAgICAgYWRhcHRpdmVfYWdjXyhuZXcgQWRhcHRpdmVBZ2MoZGF0YV9kdW1wZXJf
LmdldCgpKSksCisgICAgICBsaW1pdGVyXyhzdGF0aWNfY2FzdDxzaXplX3Q+KDQ4MDAwKSwgZGF0
YV9kdW1wZXJfLmdldCgpLCAiQWdjMiIpIHt9CiAKIEdhaW5Db250cm9sbGVyMjo6fkdhaW5Db250
cm9sbGVyMigpID0gZGVmYXVsdDsKIApAQCAtMzQsNyArMzcsNyBAQCB2b2lkIEdhaW5Db250cm9s
bGVyMjo6SW5pdGlhbGl6ZShpbnQgc2FtcGxlX3JhdGVfaHopIHsKICAgICAgICAgICAgICBzYW1w
bGVfcmF0ZV9oeiA9PSBBdWRpb1Byb2Nlc3Npbmc6OmtTYW1wbGVSYXRlMTZrSHogfHwKICAgICAg
ICAgICAgICBzYW1wbGVfcmF0ZV9oeiA9PSBBdWRpb1Byb2Nlc3Npbmc6OmtTYW1wbGVSYXRlMzJr
SHogfHwKICAgICAgICAgICAgICBzYW1wbGVfcmF0ZV9oeiA9PSBBdWRpb1Byb2Nlc3Npbmc6OmtT
YW1wbGVSYXRlNDhrSHopOwotICBmaXhlZF9nYWluX2NvbnRyb2xsZXJfLlNldFNhbXBsZVJhdGUo
c2FtcGxlX3JhdGVfaHopOworICBsaW1pdGVyXy5TZXRTYW1wbGVSYXRlKHNhbXBsZV9yYXRlX2h6
KTsKICAgZGF0YV9kdW1wZXJfLT5Jbml0aWF0ZU5ld1NldE9mUmVjb3JkaW5ncygpOwogICBkYXRh
X2R1bXBlcl8tPkR1bXBSYXcoInNhbXBsZV9yYXRlX2h6Iiwgc2FtcGxlX3JhdGVfaHopOwogfQpA
QCAtNDIsMzcgKzQ1LDcxIEBAIHZvaWQgR2FpbkNvbnRyb2xsZXIyOjpJbml0aWFsaXplKGludCBz
YW1wbGVfcmF0ZV9oeikgewogdm9pZCBHYWluQ29udHJvbGxlcjI6OlByb2Nlc3MoQXVkaW9CdWZm
ZXIqIGF1ZGlvKSB7CiAgIEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBmbG9hdF9mcmFtZShhdWRpby0+
Y2hhbm5lbHNfZigpLCBhdWRpby0+bnVtX2NoYW5uZWxzKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdWRpby0+bnVtX2ZyYW1lcygpKTsKLSAgaWYgKGFkYXB0aXZlX2Rp
Z2l0YWxfbW9kZV8pIHsKLSAgICBhZGFwdGl2ZV9hZ2NfLlByb2Nlc3MoZmxvYXRfZnJhbWUsIGZp
eGVkX2dhaW5fY29udHJvbGxlcl8uTGFzdEF1ZGlvTGV2ZWwoKSk7CisgIC8vIEFwcGx5IGZpeGVk
IGdhaW4gZmlyc3QsIHRoZW4gdGhlIGFkYXB0aXZlIG9uZS4KKyAgZ2Fpbl9hcHBsaWVyXy5BcHBs
eUdhaW4oZmxvYXRfZnJhbWUpOworICBpZiAoY29uZmlnXy5hZGFwdGl2ZV9kaWdpdGFsLmVuYWJs
ZWQpIHsKKyAgICBhZGFwdGl2ZV9hZ2NfLT5Qcm9jZXNzKGZsb2F0X2ZyYW1lLCBsaW1pdGVyXy5M
YXN0QXVkaW9MZXZlbCgpKTsKICAgfQotICBmaXhlZF9nYWluX2NvbnRyb2xsZXJfLlByb2Nlc3Mo
ZmxvYXRfZnJhbWUpOworICBsaW1pdGVyXy5Qcm9jZXNzKGZsb2F0X2ZyYW1lKTsKIH0KIAogdm9p
ZCBHYWluQ29udHJvbGxlcjI6Ok5vdGlmeUFuYWxvZ0xldmVsKGludCBsZXZlbCkgewotICBpZiAo
YW5hbG9nX2xldmVsXyAhPSBsZXZlbCAmJiBhZGFwdGl2ZV9kaWdpdGFsX21vZGVfKSB7Ci0gICAg
YWRhcHRpdmVfYWdjXy5SZXNldCgpOworICBpZiAoYW5hbG9nX2xldmVsXyAhPSBsZXZlbCAmJiBj
b25maWdfLmFkYXB0aXZlX2RpZ2l0YWwuZW5hYmxlZCkgeworICAgIGFkYXB0aXZlX2FnY18tPlJl
c2V0KCk7CiAgIH0KICAgYW5hbG9nX2xldmVsXyA9IGxldmVsOwogfQogCiB2b2lkIEdhaW5Db250
cm9sbGVyMjo6QXBwbHlDb25maWcoCiAgICAgY29uc3QgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6
OkdhaW5Db250cm9sbGVyMiYgY29uZmlnKSB7Ci0gIFJUQ19EQ0hFQ0soVmFsaWRhdGUoY29uZmln
KSk7CisgIFJUQ19EQ0hFQ0soVmFsaWRhdGUoY29uZmlnKSkKKyAgICAgIDw8ICIgdGhlIGludmFs
aWQgY29uZmlnIHdhcyAiIDw8IFRvU3RyaW5nKGNvbmZpZyk7CisKICAgY29uZmlnXyA9IGNvbmZp
ZzsKLSAgZml4ZWRfZ2Fpbl9jb250cm9sbGVyXy5TZXRHYWluKGNvbmZpZ18uZml4ZWRfZ2Fpbl9k
Yik7Ci0gIGFkYXB0aXZlX2RpZ2l0YWxfbW9kZV8gPSBjb25maWdfLmFkYXB0aXZlX2RpZ2l0YWxf
bW9kZTsKKyAgaWYgKGNvbmZpZy5maXhlZF9kaWdpdGFsLmdhaW5fZGIgIT0gY29uZmlnXy5maXhl
ZF9kaWdpdGFsLmdhaW5fZGIpIHsKKyAgICAvLyBSZXNldCB0aGUgbGltaXRlciB0byBxdWlja2x5
IHJlYWN0IG9uIGFicnVwdCBsZXZlbCBjaGFuZ2VzIGNhdXNlZCBieQorICAgIC8vIGxhcmdlIGNo
YW5nZXMgb2YgdGhlIGZpeGVkIGdhaW4uCisgICAgbGltaXRlcl8uUmVzZXQoKTsKKyAgfQorICBn
YWluX2FwcGxpZXJfLlNldEdhaW5GYWN0b3IoRGJUb1JhdGlvKGNvbmZpZ18uZml4ZWRfZGlnaXRh
bC5nYWluX2RiKSk7CisgIGFkYXB0aXZlX2FnY18ucmVzZXQobmV3IEFkYXB0aXZlQWdjKGRhdGFf
ZHVtcGVyXy5nZXQoKSwgY29uZmlnXykpOwogfQogCiBib29sIEdhaW5Db250cm9sbGVyMjo6VmFs
aWRhdGUoCiAgICAgY29uc3QgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVy
MiYgY29uZmlnKSB7Ci0gIHJldHVybiBjb25maWcuZml4ZWRfZ2Fpbl9kYiA+PSAwLmY7CisgIHJl
dHVybiBjb25maWcuZml4ZWRfZGlnaXRhbC5nYWluX2RiID49IDAuZiAmJgorICAgICAgICAgY29u
ZmlnLmZpeGVkX2RpZ2l0YWwuZ2Fpbl9kYiA8IDUwLmYgJiYKKyAgICAgICAgIGNvbmZpZy5hZGFw
dGl2ZV9kaWdpdGFsLmV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2RiID49IDAuZiAmJgorICAgICAg
ICAgY29uZmlnLmFkYXB0aXZlX2RpZ2l0YWwuZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGIgPD0g
MTAwLmY7CiB9CiAKIHN0ZDo6c3RyaW5nIEdhaW5Db250cm9sbGVyMjo6VG9TdHJpbmcoCiAgICAg
Y29uc3QgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMiYgY29uZmlnKSB7
CiAgIHJ0Yzo6U3RyaW5nQnVpbGRlciBzczsKLSAgc3MgPDwgIntlbmFibGVkOiAiIDw8IChjb25m
aWcuZW5hYmxlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8ICIsICIKLSAgICAgPDwgImZpeGVkX2dh
aW5fZEI6ICIgPDwgY29uZmlnLmZpeGVkX2dhaW5fZGIgPDwgIn0iOworICBzdGQ6OnN0cmluZyBh
ZGFwdGl2ZV9kaWdpdGFsX2xldmVsX2VzdGltYXRvcjsKKyAgdXNpbmcgTGV2ZWxFc3RpbWF0b3JU
eXBlID0KKyAgICAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjI6Okxl
dmVsRXN0aW1hdG9yOworICBzd2l0Y2ggKGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFsLmxldmVsX2Vz
dGltYXRvcikgeworICAgIGNhc2UgTGV2ZWxFc3RpbWF0b3JUeXBlOjprUm1zOgorICAgICAgYWRh
cHRpdmVfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IgPSAiUk1TIjsKKyAgICAgIGJyZWFrOworICAg
IGNhc2UgTGV2ZWxFc3RpbWF0b3JUeXBlOjprUGVhazoKKyAgICAgIGFkYXB0aXZlX2RpZ2l0YWxf
bGV2ZWxfZXN0aW1hdG9yID0gInBlYWsiOworICAgICAgYnJlYWs7CisgIH0KKyAgLy8gY2xhbmct
Zm9ybWF0IG9mZgorICAvLyBjbGFuZyBmb3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBjdXN0b20g
bmVzdGVkIHN0eWxlLgorICBzcyA8PCAieyIKKyAgICAgPDwgImVuYWJsZWQ6ICIgPDwgKGNvbmZp
Zy5lbmFibGVkID8gInRydWUiIDogImZhbHNlIikgPDwgIiwgIgorICAgICA8PCAiZml4ZWRfZGln
aXRhbDoge2dhaW5fZGI6ICIgPDwgY29uZmlnLmZpeGVkX2RpZ2l0YWwuZ2Fpbl9kYiA8PCAifSwg
IgorICAgICA8PCAiYWRhcHRpdmVfZGlnaXRhbDogeyIKKyAgICAgIDw8ICJlbmFibGVkOiAiCisg
ICAgICAgIDw8IChjb25maWcuYWRhcHRpdmVfZGlnaXRhbC5lbmFibGVkID8gInRydWUiIDogImZh
bHNlIikgPDwgIiwgIgorICAgICAgPDwgImxldmVsX2VzdGltYXRvcjogIiA8PCBhZGFwdGl2ZV9k
aWdpdGFsX2xldmVsX2VzdGltYXRvciA8PCAiLCAiCisgICAgICA8PCAiZXh0cmFfc2F0dXJhdGlv
bl9tYXJnaW5fZGI6IgorICAgICAgICA8PCBjb25maWcuYWRhcHRpdmVfZGlnaXRhbC5leHRyYV9z
YXR1cmF0aW9uX21hcmdpbl9kYiA8PCAifSIKKyAgICAgIDw8ICJ9IjsKKyAgLy8gY2xhbmctZm9y
bWF0IG9uCiAgIHJldHVybiBzcy5SZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9nYWluX2NvbnRyb2xsZXIyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5oCmluZGV4
IGI0NzI3ZDBlNzc3Njk1ZTcwZmQyNGQ0OWNlYjdhZDhmYTc5NzlhOWMuLjNhMTE4MTBiYjU5ZDk1
Mzk1NjZkOGM3NWUxMzAwMGUwOTgxMWM4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2Nv
bnRyb2xsZXIyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbGxlcjIuaApAQCAtMTUsNyAr
MTUsOCBAQAogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fYXBwbGllci5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY29uc3RydWN0b3JtYWdpYy5oIgogCkBAIC00MywxMSArNDQsMTEgQEAgY2xhc3MgR2FpbkNv
bnRyb2xsZXIyIHsKICBwcml2YXRlOgogICBzdGF0aWMgaW50IGluc3RhbmNlX2NvdW50XzsKICAg
c3RkOjp1bmlxdWVfcHRyPEFwbURhdGFEdW1wZXI+IGRhdGFfZHVtcGVyXzsKLSAgRml4ZWRHYWlu
Q29udHJvbGxlciBmaXhlZF9nYWluX2NvbnRyb2xsZXJfOwogICBBdWRpb1Byb2Nlc3Npbmc6OkNv
bmZpZzo6R2FpbkNvbnRyb2xsZXIyIGNvbmZpZ187Ci0gIEFkYXB0aXZlQWdjIGFkYXB0aXZlX2Fn
Y187CisgIEdhaW5BcHBsaWVyIGdhaW5fYXBwbGllcl87CisgIHN0ZDo6dW5pcXVlX3B0cjxBZGFw
dGl2ZUFnYz4gYWRhcHRpdmVfYWdjXzsKKyAgTGltaXRlciBsaW1pdGVyXzsKICAgaW50IGFuYWxv
Z19sZXZlbF8gPSAtMTsKLSAgYm9vbCBhZGFwdGl2ZV9kaWdpdGFsX21vZGVfID0gdHJ1ZTsKIAog
ICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEdhaW5Db250cm9sbGVyMik7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbGxlcjJfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvZ2Fpbl9jb250cm9sbGVyMl91bml0dGVzdC5jYwppbmRleCA1YmVkY2NkNjRhOGJlYTc2Y2Nh
NzlhMzY2M2FjNTA5ODBmZGFmNWM0Li4yN2Q1NDBhMTk4OGU5ZTg5NjlmY2RiMDhjNzVlYTAyYmZj
ZTRmZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMl91bml0dGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMl91bml0dGVzdC5jYwpAQCAtMTAsMjAg
KzEwLDIwIEBACiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9y
eS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfdGVzdGluZ19jb21tb24uaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbGxlcjIuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRpb19idWZmZXJfdG9vbHMuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9iaXRleGFjdG5lc3NfdG9vbHMuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewotCiBuYW1lc3BhY2UgewogCi1jb25z
dGV4cHIgc2l6ZV90IGtGcmFtZVNpemVNcyA9IDEwdTsKLWNvbnN0ZXhwciBzaXplX3Qga1N0ZXJl
byA9IDJ1OwotCiB2b2lkIFNldEF1ZGlvQnVmZmVyU2FtcGxlcyhmbG9hdCB2YWx1ZSwgQXVkaW9C
dWZmZXIqIGFiKSB7CiAgIC8vIFNldHMgYWxsIHRoZSBzYW1wbGVzIGluIHxhYnwgdG8gfHZhbHVl
fC4KICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBhYi0+bnVtX2NoYW5uZWxzKCk7ICsraykgewpA
QCAtMzIsNiArMzIsNzUgQEAgdm9pZCBTZXRBdWRpb0J1ZmZlclNhbXBsZXMoZmxvYXQgdmFsdWUs
IEF1ZGlvQnVmZmVyKiBhYikgewogICB9CiB9CiAKK2Zsb2F0IFJ1bkFnYzJXaXRoQ29uc3RhbnRJ
bnB1dChHYWluQ29udHJvbGxlcjIqIGFnYzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgaW5wdXRfbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG51bV9mcmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBs
ZV9yYXRlKSB7CisgIGNvbnN0IGludCBudW1fc2FtcGxlcyA9IHJ0Yzo6Q2hlY2tlZERpdkV4YWN0
KHNhbXBsZV9yYXRlLCAxMDApOworICBBdWRpb0J1ZmZlciBhYihudW1fc2FtcGxlcywgMSwgbnVt
X3NhbXBsZXMsIDEsIG51bV9zYW1wbGVzKTsKKworICAvLyBHaXZlIHRpbWUgdG8gdGhlIGxldmVs
IGVzdGltYXRvciB0byBjb252ZXJnZS4KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fZnJh
bWVzICsgMTsgKytpKSB7CisgICAgU2V0QXVkaW9CdWZmZXJTYW1wbGVzKGlucHV0X2xldmVsLCAm
YWIpOworICAgIGFnYzItPlByb2Nlc3MoJmFiKTsKKyAgfQorCisgIC8vIFJldHVybiB0aGUgbGFz
dCBzYW1wbGUgZnJvbSB0aGUgbGFzdCBwcm9jZXNzZWQgZnJhbWUuCisgIHJldHVybiBhYi5jaGFu
bmVsc19mKClbMF1bbnVtX3NhbXBsZXMgLSAxXTsKK30KKworQXVkaW9Qcm9jZXNzaW5nOjpDb25m
aWc6OkdhaW5Db250cm9sbGVyMiBDcmVhdGVBZ2MyRml4ZWREaWdpdGFsTW9kZUNvbmZpZygKKyAg
ICBmbG9hdCBmaXhlZF9nYWluX2RiKSB7CisgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWlu
Q29udHJvbGxlcjIgY29uZmlnOworICBjb25maWcuYWRhcHRpdmVfZGlnaXRhbC5lbmFibGVkID0g
ZmFsc2U7CisgIGNvbmZpZy5maXhlZF9kaWdpdGFsLmdhaW5fZGIgPSBmaXhlZF9nYWluX2RiOwor
ICAvLyBUT0RPKGFsZXNzaW9iKTogQ2hlY2sgd2h5IEFTU0VSVF9UUlVFKCkgYmVsb3cgZG9lcyBu
b3QgY29tcGlsZS4KKyAgRVhQRUNUX1RSVUUoR2FpbkNvbnRyb2xsZXIyOjpWYWxpZGF0ZShjb25m
aWcpKTsKKyAgcmV0dXJuIGNvbmZpZzsKK30KKworc3RkOjp1bmlxdWVfcHRyPEdhaW5Db250cm9s
bGVyMj4gQ3JlYXRlQWdjMkZpeGVkRGlnaXRhbE1vZGUoCisgICAgZmxvYXQgZml4ZWRfZ2Fpbl9k
YiwKKyAgICBzaXplX3Qgc2FtcGxlX3JhdGVfaHopIHsKKyAgYXV0byBhZ2MyID0gYWJzbDo6bWFr
ZV91bmlxdWU8R2FpbkNvbnRyb2xsZXIyPigpOworICBhZ2MyLT5BcHBseUNvbmZpZyhDcmVhdGVB
Z2MyRml4ZWREaWdpdGFsTW9kZUNvbmZpZyhmaXhlZF9nYWluX2RiKSk7CisgIGFnYzItPkluaXRp
YWxpemUoc2FtcGxlX3JhdGVfaHopOworICByZXR1cm4gYWdjMjsKK30KKworZmxvYXQgR2FpbkFm
dGVyUHJvY2Vzc2luZ0ZpbGUoR2FpbkNvbnRyb2xsZXIyKiBnYWluX2NvbnRyb2xsZXIpIHsKKyAg
Ly8gU2V0IHVwIGFuIEF1ZGlvQnVmZmVyIHRvIGJlIGZpbGxlZCBmcm9tIHRoZSBzcGVlY2ggZmls
ZS4KKyAgY29uc3RleHByIHNpemVfdCBrU3RlcmVvID0gMnU7CisgIGNvbnN0IFN0cmVhbUNvbmZp
ZyBjYXB0dXJlX2NvbmZpZyhBdWRpb1Byb2Nlc3Npbmc6OmtTYW1wbGVSYXRlNDhrSHosIGtTdGVy
ZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisgIEF1ZGlv
QnVmZmVyIGFiKGNhcHR1cmVfY29uZmlnLm51bV9mcmFtZXMoKSwgY2FwdHVyZV9jb25maWcubnVt
X2NoYW5uZWxzKCksCisgICAgICAgICAgICAgICAgIGNhcHR1cmVfY29uZmlnLm51bV9mcmFtZXMo
KSwgY2FwdHVyZV9jb25maWcubnVtX2NoYW5uZWxzKCksCisgICAgICAgICAgICAgICAgIGNhcHR1
cmVfY29uZmlnLm51bV9mcmFtZXMoKSk7CisgIHRlc3Q6OklucHV0QXVkaW9GaWxlIGNhcHR1cmVf
ZmlsZSgKKyAgICAgIHRlc3Q6OkdldEFwbUNhcHR1cmVUZXN0VmVjdG9yRmlsZU5hbWUoQXVkaW9Q
cm9jZXNzaW5nOjprU2FtcGxlUmF0ZTQ4a0h6KSk7CisgIHN0ZDo6dmVjdG9yPGZsb2F0PiBjYXB0
dXJlX2lucHV0KGNhcHR1cmVfY29uZmlnLm51bV9mcmFtZXMoKSAqCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfY29uZmlnLm51bV9jaGFubmVscygpKTsKKworICAv
LyBUaGUgZmlsZSBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0aGlzIG1hbnkgZnJhbWVzLiBFdmVy
eSBpdGVyYXRpb24sIHdlIHB1dAorICAvLyBhIGZyYW1lIHRocm91Z2ggdGhlIGdhaW4gY29udHJv
bGxlci4KKyAgY29uc3QgaW50IGtOdW1GcmFtZXNUb1Byb2Nlc3MgPSAxMDA7CisgIGZvciAoaW50
IGZyYW1lX25vID0gMDsgZnJhbWVfbm8gPCBrTnVtRnJhbWVzVG9Qcm9jZXNzOyArK2ZyYW1lX25v
KSB7CisgICAgUmVhZEZsb2F0U2FtcGxlc0Zyb21TdGVyZW9GaWxlKGNhcHR1cmVfY29uZmlnLm51
bV9mcmFtZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9j
b25maWcubnVtX2NoYW5uZWxzKCksICZjYXB0dXJlX2ZpbGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhcHR1cmVfaW5wdXQpOworCisgICAgdGVzdDo6Q29weVZlY3RvclRv
QXVkaW9CdWZmZXIoY2FwdHVyZV9jb25maWcsIGNhcHR1cmVfaW5wdXQsICZhYik7CisgICAgZ2Fp
bl9jb250cm9sbGVyLT5Qcm9jZXNzKCZhYik7CisgIH0KKworICAvLyBTZW5kIGluIGEgbGFzdCBm
cmFtZSB3aXRoIHZhbHVlcyBjb25zdGFudCAxIChJdCdzIGxvdyBlbm91Z2ggdG8gZGV0ZWN0IGhp
Z2gKKyAgLy8gZ2FpbiwgYW5kIGZvciBlYXNlIG9mIGNvbXB1dGF0aW9uKS4gVGhlIGFwcGxpZWQg
Z2FpbiBpcyB0aGUgcmVzdWx0LgorICBjb25zdGV4cHIgZmxvYXQgc2FtcGxlX3ZhbHVlID0gMS5m
OworICBTZXRBdWRpb0J1ZmZlclNhbXBsZXMoc2FtcGxlX3ZhbHVlLCAmYWIpOworICBnYWluX2Nv
bnRyb2xsZXItPlByb2Nlc3MoJmFiKTsKKyAgcmV0dXJuIGFiLmNoYW5uZWxzX2YoKVswXVswXTsK
K30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIFRFU1QoR2FpbkNvbnRyb2xsZXIyLCBDcmVhdGVBcHBs
eUNvbmZpZykgewpAQCAtNDQsNDcgKzExMywxNzMgQEAgVEVTVChHYWluQ29udHJvbGxlcjIsIENy
ZWF0ZUFwcGx5Q29uZmlnKSB7CiAgIGdhaW5fY29udHJvbGxlcjItPkFwcGx5Q29uZmlnKGNvbmZp
Zyk7CiAKICAgLy8gQ2hlY2sgdGhhdCBhdHRlbnVhdGlvbiBpcyBub3QgYWxsb3dlZC4KLSAgY29u
ZmlnLmZpeGVkX2dhaW5fZGIgPSAtNS5mOworICBjb25maWcuZml4ZWRfZGlnaXRhbC5nYWluX2Ri
ID0gLTUuZjsKICAgRVhQRUNUX0ZBTFNFKEdhaW5Db250cm9sbGVyMjo6VmFsaWRhdGUoY29uZmln
KSk7CiAKICAgLy8gQ2hlY2sgdGhhdCB2YWxpZCBjb25maWd1cmF0aW9ucyBhcmUgYXBwbGllZC4K
LSAgZm9yIChjb25zdCBmbG9hdCYgZml4ZWRfZ2Fpbl9kYiA6IHswLmYsIDUuZiwgMTAuZiwgNTAu
Zn0pIHsKLSAgICBjb25maWcuZml4ZWRfZ2Fpbl9kYiA9IGZpeGVkX2dhaW5fZGI7CisgIGZvciAo
Y29uc3QgZmxvYXQmIGZpeGVkX2dhaW5fZGIgOiB7MC5mLCA1LmYsIDEwLmYsIDQwLmZ9KSB7Cisg
ICAgY29uZmlnLmZpeGVkX2RpZ2l0YWwuZ2Fpbl9kYiA9IGZpeGVkX2dhaW5fZGI7CiAgICAgRVhQ
RUNUX1RSVUUoR2FpbkNvbnRyb2xsZXIyOjpWYWxpZGF0ZShjb25maWcpKTsKICAgICBnYWluX2Nv
bnRyb2xsZXIyLT5BcHBseUNvbmZpZyhjb25maWcpOwogICB9CiB9CiAKIFRFU1QoR2FpbkNvbnRy
b2xsZXIyLCBUb1N0cmluZykgewotICAvLyBUZXN0cyBHYWluQ29udHJvbGxlcjI6OlRvU3RyaW5n
KCkuCisgIC8vIFRlc3RzIEdhaW5Db250cm9sbGVyMjo6VG9TdHJpbmcoKS4gT25seSB0ZXN0IHRo
ZSBlbmFibGVkIHByb3BlcnR5LgogICBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRy
b2xsZXIyIGNvbmZpZzsKLSAgY29uZmlnLmZpeGVkX2dhaW5fZGIgPSA1LmY7CiAKICAgY29uZmln
LmVuYWJsZWQgPSBmYWxzZTsKLSAgRVhQRUNUX0VRKCJ7ZW5hYmxlZDogZmFsc2UsIGZpeGVkX2dh
aW5fZEI6IDV9IiwKLSAgICAgICAgICAgIEdhaW5Db250cm9sbGVyMjo6VG9TdHJpbmcoY29uZmln
KSk7CisgIEVYUEVDVF9FUSgie2VuYWJsZWQ6IGZhbHNlIiwgR2FpbkNvbnRyb2xsZXIyOjpUb1N0
cmluZyhjb25maWcpLnN1YnN0cigwLCAxNSkpOwogCiAgIGNvbmZpZy5lbmFibGVkID0gdHJ1ZTsK
LSAgRVhQRUNUX0VRKCJ7ZW5hYmxlZDogdHJ1ZSwgZml4ZWRfZ2Fpbl9kQjogNX0iLAotICAgICAg
ICAgICAgR2FpbkNvbnRyb2xsZXIyOjpUb1N0cmluZyhjb25maWcpKTsKKyAgRVhQRUNUX0VRKCJ7
ZW5hYmxlZDogdHJ1ZSIsIEdhaW5Db250cm9sbGVyMjo6VG9TdHJpbmcoY29uZmlnKS5zdWJzdHIo
MCwgMTQpKTsKIH0KIAotVEVTVChHYWluQ29udHJvbGxlcjIsIFVzYWdlKSB7Ci0gIC8vIFRlc3Rz
IEdhaW5Db250cm9sbGVyMjo6UHJvY2VzcygpIG9uIGFuIEF1ZGlvQnVmZmVyIGluc3RhbmNlLgot
ICBzdGQ6OnVuaXF1ZV9wdHI8R2FpbkNvbnRyb2xsZXIyPiBnYWluX2NvbnRyb2xsZXIyKG5ldyBH
YWluQ29udHJvbGxlcjIoKSk7Ci0gIGdhaW5fY29udHJvbGxlcjItPkluaXRpYWxpemUoQXVkaW9Q
cm9jZXNzaW5nOjprU2FtcGxlUmF0ZTQ4a0h6KTsKLSAgY29uc3Qgc2l6ZV90IG51bV9mcmFtZXMg
PSBydGM6OkNoZWNrZWREaXZFeGFjdDxzaXplX3Q+KAotICAgICAga0ZyYW1lU2l6ZU1zICogQXVk
aW9Qcm9jZXNzaW5nOjprU2FtcGxlUmF0ZTQ4a0h6LCAxMDAwKTsKLSAgQXVkaW9CdWZmZXIgYWIo
bnVtX2ZyYW1lcywga1N0ZXJlbywgbnVtX2ZyYW1lcywga1N0ZXJlbywgbnVtX2ZyYW1lcyk7Ci0g
IGNvbnN0ZXhwciBmbG9hdCBzYW1wbGVfdmFsdWUgPSAxMDAwLmY7Ci0gIFNldEF1ZGlvQnVmZmVy
U2FtcGxlcyhzYW1wbGVfdmFsdWUsICZhYik7CitURVNUKEdhaW5Db250cm9sbGVyMkZpeGVkRGln
aXRhbCwgR2FpblNob3VsZENoYW5nZU9uU2V0R2FpbikgeworICBjb25zdGV4cHIgZmxvYXQga0lu
cHV0TGV2ZWwgPSAxMDAwLmY7CisgIGNvbnN0ZXhwciBzaXplX3Qga051bUZyYW1lcyA9IDU7Cisg
IGNvbnN0ZXhwciBzaXplX3Qga1NhbXBsZVJhdGVIeiA9IDgwMDA7CisgIGNvbnN0ZXhwciBmbG9h
dCBrR2FpbjBEYiA9IDAuZjsKKyAgY29uc3RleHByIGZsb2F0IGtHYWluMjBEYiA9IDIwLmY7CisK
KyAgYXV0byBhZ2MyX2ZpeGVkID0gQ3JlYXRlQWdjMkZpeGVkRGlnaXRhbE1vZGUoa0dhaW4wRGIs
IGtTYW1wbGVSYXRlSHopOworCisgIC8vIFNpZ25hbCBsZXZlbCBpcyB1bmNoYW5nZWQgd2l0aCAw
IGRiIGdhaW4uCisgIEVYUEVDVF9GTE9BVF9FUShSdW5BZ2MyV2l0aENvbnN0YW50SW5wdXQoYWdj
Ml9maXhlZC5nZXQoKSwga0lucHV0TGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga051bUZyYW1lcywga1NhbXBsZVJhdGVIeiksCisgICAgICAgICAgICAg
ICAgICBrSW5wdXRMZXZlbCk7CisKKyAgLy8gKzIwIGRiIHNob3VsZCBpbmNyZWFzZSBzaWduYWwg
YnkgYSBmYWN0b3Igb2YgMTAuCisgIGFnYzJfZml4ZWQtPkFwcGx5Q29uZmlnKENyZWF0ZUFnYzJG
aXhlZERpZ2l0YWxNb2RlQ29uZmlnKGtHYWluMjBEYikpOworICBFWFBFQ1RfRkxPQVRfRVEoUnVu
QWdjMldpdGhDb25zdGFudElucHV0KGFnYzJfZml4ZWQuZ2V0KCksIGtJbnB1dExldmVsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtOdW1GcmFtZXMsIGtTYW1w
bGVSYXRlSHopLAorICAgICAgICAgICAgICAgICAga0lucHV0TGV2ZWwgKiAxMCk7Cit9CisKK1RF
U1QoR2FpbkNvbnRyb2xsZXIyRml4ZWREaWdpdGFsLCBDaGFuZ2VGaXhlZEdhaW5TaG91bGRCZUZh
c3RBbmRUaW1lSW52YXJpYW50KSB7CisgIC8vIE51bWJlciBvZiBmcmFtZXMgcmVxdWlyZWQgZm9y
IHRoZSBmaXhlZCBnYWluIGNvbnRyb2xsZXIgdG8gYWRhcHQgb24gdGhlCisgIC8vIGlucHV0IHNp
Z25hbCB3aGVuIHRoZSBnYWluIGNoYW5nZXMuCisgIGNvbnN0ZXhwciBzaXplX3Qga051bUZyYW1l
cyA9IDU7CisKKyAgY29uc3RleHByIGZsb2F0IGtJbnB1dExldmVsID0gMTAwMC5mOworICBjb25z
dGV4cHIgc2l6ZV90IGtTYW1wbGVSYXRlSHogPSA4MDAwOworICBjb25zdGV4cHIgZmxvYXQga0dh
aW5EYkxvdyA9IDAuZjsKKyAgY29uc3RleHByIGZsb2F0IGtHYWluRGJIaWdoID0gMjUuZjsKKyAg
c3RhdGljX2Fzc2VydChrR2FpbkRiTG93IDwga0dhaW5EYkhpZ2gsICIiKTsKKworICBhdXRvIGFn
YzJfZml4ZWQgPSBDcmVhdGVBZ2MyRml4ZWREaWdpdGFsTW9kZShrR2FpbkRiTG93LCBrU2FtcGxl
UmF0ZUh6KTsKKworICAvLyBTdGFydCB3aXRoIGEgbG93ZXIgZ2Fpbi4KKyAgY29uc3QgZmxvYXQg
b3V0cHV0X2xldmVsX3ByZSA9IFJ1bkFnYzJXaXRoQ29uc3RhbnRJbnB1dCgKKyAgICAgIGFnYzJf
Zml4ZWQuZ2V0KCksIGtJbnB1dExldmVsLCBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0ZUh6KTsKKwor
ICAvLyBJbmNyZWFzZSBnYWluLgorICBhZ2MyX2ZpeGVkLT5BcHBseUNvbmZpZyhDcmVhdGVBZ2My
Rml4ZWREaWdpdGFsTW9kZUNvbmZpZyhrR2FpbkRiSGlnaCkpOworICBzdGF0aWNfY2FzdDx2b2lk
PihSdW5BZ2MyV2l0aENvbnN0YW50SW5wdXQoYWdjMl9maXhlZC5nZXQoKSwga0lucHV0TGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTnVtRnJhbWVz
LCBrU2FtcGxlUmF0ZUh6KSk7CisKKyAgLy8gQmFjayB0byB0aGUgbG93ZXIgZ2Fpbi4KKyAgYWdj
Ml9maXhlZC0+QXBwbHlDb25maWcoQ3JlYXRlQWdjMkZpeGVkRGlnaXRhbE1vZGVDb25maWcoa0dh
aW5EYkxvdykpOworICBjb25zdCBmbG9hdCBvdXRwdXRfbGV2ZWxfcG9zdCA9IFJ1bkFnYzJXaXRo
Q29uc3RhbnRJbnB1dCgKKyAgICAgIGFnYzJfZml4ZWQuZ2V0KCksIGtJbnB1dExldmVsLCBrTnVt
RnJhbWVzLCBrU2FtcGxlUmF0ZUh6KTsKKworICBFWFBFQ1RfRVEob3V0cHV0X2xldmVsX3ByZSwg
b3V0cHV0X2xldmVsX3Bvc3QpOworfQorCitzdHJ1Y3QgRml4ZWREaWdpdGFsVGVzdFBhcmFtcyB7
CisgIEZpeGVkRGlnaXRhbFRlc3RQYXJhbXMoZmxvYXQgZ2Fpbl9kYl9taW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgZ2Fpbl9kYl9tYXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHNhbXBsZV9yYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F0
dXJhdGlvbl9leHBlY3RlZCkKKyAgICAgIDogZ2Fpbl9kYl9taW4oZ2Fpbl9kYl9taW4pLAorICAg
ICAgICBnYWluX2RiX21heChnYWluX2RiX21heCksCisgICAgICAgIHNhbXBsZV9yYXRlKHNhbXBs
ZV9yYXRlKSwKKyAgICAgICAgc2F0dXJhdGlvbl9leHBlY3RlZChzYXR1cmF0aW9uX2V4cGVjdGVk
KSB7fQorICBmbG9hdCBnYWluX2RiX21pbjsKKyAgZmxvYXQgZ2Fpbl9kYl9tYXg7CisgIHNpemVf
dCBzYW1wbGVfcmF0ZTsKKyAgYm9vbCBzYXR1cmF0aW9uX2V4cGVjdGVkOworfTsKKworY2xhc3Mg
Rml4ZWREaWdpdGFsVGVzdAorICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3QsCisgICAgICBwdWJs
aWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPEZpeGVkRGlnaXRhbFRlc3RQYXJhbXM+IHt9
OworCitURVNUX1AoRml4ZWREaWdpdGFsVGVzdCwgQ2hlY2tTYXR1cmF0aW9uQmVoYXZpb3JXaXRo
TGltaXRlcikgeworICBjb25zdCBmbG9hdCBrSW5wdXRMZXZlbCA9IDMyNzY3LmY7CisgIGNvbnN0
IHNpemVfdCBrTnVtRnJhbWVzID0gNTsKKworICBjb25zdCBhdXRvIHBhcmFtcyA9IEdldFBhcmFt
KCk7CisKKyAgY29uc3QgYXV0byBnYWluc19kYiA9CisgICAgICB0ZXN0OjpMaW5TcGFjZShwYXJh
bXMuZ2Fpbl9kYl9taW4sIHBhcmFtcy5nYWluX2RiX21heCwgMTApOworICBmb3IgKGNvbnN0IGF1
dG8gZ2Fpbl9kYiA6IGdhaW5zX2RiKSB7CisgICAgU0NPUEVEX1RSQUNFKHN0ZDo6dG9fc3RyaW5n
KGdhaW5fZGIpKTsKKyAgICBhdXRvIGFnYzJfZml4ZWQgPSBDcmVhdGVBZ2MyRml4ZWREaWdpdGFs
TW9kZShnYWluX2RiLCBwYXJhbXMuc2FtcGxlX3JhdGUpOworICAgIGNvbnN0IGZsb2F0IHByb2Nl
c3NlZF9zYW1wbGUgPSBSdW5BZ2MyV2l0aENvbnN0YW50SW5wdXQoCisgICAgICAgIGFnYzJfZml4
ZWQuZ2V0KCksIGtJbnB1dExldmVsLCBrTnVtRnJhbWVzLCBwYXJhbXMuc2FtcGxlX3JhdGUpOwor
ICAgIGlmIChwYXJhbXMuc2F0dXJhdGlvbl9leHBlY3RlZCkgeworICAgICAgRVhQRUNUX0ZMT0FU
X0VRKHByb2Nlc3NlZF9zYW1wbGUsIDMyNzY3LmYpOworICAgIH0gZWxzZSB7CisgICAgICBFWFBF
Q1RfTFQocHJvY2Vzc2VkX3NhbXBsZSwgMzI3NjcuZik7CisgICAgfQorICB9Cit9CisKK3N0YXRp
Y19hc3NlcnQodGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGcyA8IDEwLCAiIik7CitJTlNU
QU5USUFURV9URVNUX0NBU0VfUCgKKyAgICBHYWluQ29udHJvbGxlcjIsCisgICAgRml4ZWREaWdp
dGFsVGVzdCwKKyAgICA6OnRlc3Rpbmc6OlZhbHVlcygKKyAgICAgICAgLy8gV2hlbiBnYWluIDwg
fHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnN8LCB0aGUgbGltaXRlciB3aWxsIG5vdAor
ICAgICAgICAvLyBzYXR1cmF0ZSB0aGUgc2lnbmFsIChhdCBhbnkgc2FtcGxlIHJhdGUpLgorICAg
ICAgICBGaXhlZERpZ2l0YWxUZXN0UGFyYW1zKDAuMWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGcyAtIDAuMDFmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDgwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsc2UpLAorICAgICAgICBGaXhlZERpZ2l0YWxUZXN0UGFyYW1zKDAuMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZz
IC0gMC4wMWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDgwMDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpLAorICAgICAgICAvLyBXaGVuIGdhaW4gPiB8
dGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGc3wsIHRoZSBsaW1pdGVyIHdpbGwKKyAgICAg
ICAgLy8gc2F0dXJhdGUgdGhlIHNpZ25hbCAoYXQgYW55IHNhbXBsZSByYXRlKS4KKyAgICAgICAg
Rml4ZWREaWdpdGFsVGVzdFBhcmFtcyh0ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzICsg
MC4wMWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuZiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA4MDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRydWUpLAorICAgICAgICBGaXhlZERpZ2l0YWxUZXN0UGFyYW1zKHRlc3Q6OmtMaW1pdGVyTWF4
SW5wdXRMZXZlbERiRnMgKyAwLjAxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MC5mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ4MDAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRydWUpKSk7CisKK1RFU1QoR2FpbkNvbnRyb2xsZXIyLCBVc2Fn
ZVNhdHVyYXRpb25NYXJnaW4pIHsKKyAgR2FpbkNvbnRyb2xsZXIyIGdhaW5fY29udHJvbGxlcjI7
CisgIGdhaW5fY29udHJvbGxlcjIuSW5pdGlhbGl6ZShBdWRpb1Byb2Nlc3Npbmc6OmtTYW1wbGVS
YXRlNDhrSHopOworCiAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjIg
Y29uZmlnOworICAvLyBDaGVjayB0aGF0IHNhbXBsZXMgYXJlIG5vdCBhbXBsaWZpZWQgYXMgbXVj
aCB3aGVuIGV4dHJhIG1hcmdpbiBpcworICAvLyBoaWdoLiBUaGV5IHNob3VsZCBub3QgYmUgYW1w
bGlmaWVkIGF0IGFsbCwgYnV0IG9ubHkgYWZ0ZXIgY29udmVyZ2VuY2UuIEdDMgorICAvLyBzdGFy
dHMgd2l0aCBhIGdhaW4sIGFuZCBpdCB0YWtlcyB0aW1lIHVudGlsIGl0J3MgZG93biB0byAwIGRC
LgorICBjb25maWcuZml4ZWRfZGlnaXRhbC5nYWluX2RiID0gMC5mOworICBjb25maWcuYWRhcHRp
dmVfZGlnaXRhbC5lbmFibGVkID0gdHJ1ZTsKKyAgY29uZmlnLmFkYXB0aXZlX2RpZ2l0YWwuZXh0
cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGIgPSA1MC5mOworICBnYWluX2NvbnRyb2xsZXIyLkFwcGx5
Q29uZmlnKGNvbmZpZyk7CiAKLSAgLy8gQ2hlY2sgdGhhdCBzYW1wbGVzIGFyZSBhbXBsaWZpZWQg
d2hlbiB0aGUgZml4ZWQgZ2FpbiBpcyBncmVhdGVyIHRoYW4gMCBkQi4KLSAgY29uZmlnLmZpeGVk
X2dhaW5fZGIgPSA1LmY7Ci0gIGdhaW5fY29udHJvbGxlcjItPkFwcGx5Q29uZmlnKGNvbmZpZyk7
Ci0gIGdhaW5fY29udHJvbGxlcjItPlByb2Nlc3MoJmFiKTsKLSAgRVhQRUNUX0xUKHNhbXBsZV92
YWx1ZSwgYWIuY2hhbm5lbHNfZigpWzBdWzBdKTsKKyAgRVhQRUNUX0xUKEdhaW5BZnRlclByb2Nl
c3NpbmdGaWxlKCZnYWluX2NvbnRyb2xsZXIyKSwgMi5mKTsKK30KKworVEVTVChHYWluQ29udHJv
bGxlcjIsIFVzYWdlTm9TYXR1cmF0aW9uTWFyZ2luKSB7CisgIEdhaW5Db250cm9sbGVyMiBnYWlu
X2NvbnRyb2xsZXIyOworICBnYWluX2NvbnRyb2xsZXIyLkluaXRpYWxpemUoQXVkaW9Qcm9jZXNz
aW5nOjprU2FtcGxlUmF0ZTQ4a0h6KTsKKworICBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2Fp
bkNvbnRyb2xsZXIyIGNvbmZpZzsKKyAgLy8gQ2hlY2sgdGhhdCBzb21lIGdhaW4gaXMgYXBwbGll
ZCBpZiB0aGVyZSBpcyBubyBtYXJnaW4uCisgIGNvbmZpZy5maXhlZF9kaWdpdGFsLmdhaW5fZGIg
PSAwLmY7CisgIGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFsLmVuYWJsZWQgPSB0cnVlOworICBjb25m
aWcuYWRhcHRpdmVfZGlnaXRhbC5leHRyYV9zYXR1cmF0aW9uX21hcmdpbl9kYiA9IDAuZjsKKyAg
Z2Fpbl9jb250cm9sbGVyMi5BcHBseUNvbmZpZyhjb25maWcpOworCisgIEVYUEVDVF9HVChHYWlu
QWZ0ZXJQcm9jZXNzaW5nRmlsZSgmZ2Fpbl9jb250cm9sbGVyMiksIDIuZik7CiB9CiAKIH0gIC8v
IG5hbWVzcGFjZSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hZWNfZHVtcC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1bXAuaAppbmRleCAzMTNlOWQ3YjFkZTBiNjJlMWFi
YjZjYTI1NGRlZDA0MTRjZmE4YjcyLi5iNzM0YWRmYmJiYjM2YTc3N2UzZWM5YjZiYjk5ZjQ1MDVm
ZGNmMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hZWNfZHVtcC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmgKQEAgLTExLDE0ICsxMSwxMyBAQAogI2lmbmRlZiBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfSU5DTFVERV9BRUNfRFVNUF9IXwogI2RlZmluZSBNT0RV
TEVTX0FVRElPX1BST0NFU1NJTkdfSU5DTFVERV9BRUNfRFVNUF9IXwogCi0jaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2
ZWN0b3I+CiAKLSNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImFwaS9hdWRp
by9hdWRpb19mcmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNs
dWRlL2F1ZGlvX2ZyYW1lX3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZGVwcmVj
YXRpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9p
bmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9j
ZXNzaW5nLmNjCmluZGV4IDc1ZWVkYWZjMjkyMzg3ZjJlOTkxNWYzMThkMDAyZWMxNTIwYWZlOTcu
LjI3Y2Q4ODI0ZmVjMzA1YzViMzFmNWEzMzVlZjhkNjNlNmFmMzJlODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1
ZGUvYXVkaW9fcHJvY2Vzc2luZy5jYwpAQCAtMTAsOCArMTAsNiBAQAogCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgogCi0jaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0KIG5hbWVzcGFjZSB3ZWJydGMgewogCiB2b2lkIEN1
c3RvbVByb2Nlc3Npbmc6OlNldFJ1bnRpbWVTZXR0aW5nKApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJv
Y2Vzc2luZy5oCmluZGV4IDI2ODgwZTM3NzYwMjY0ZGRhYWM5NDA0ZWU4MGU3NDc5ZWMxMjYzNGQu
LmRmNTEzMTMyMjlkYTI4YzEzOTE4NzhhYzM5YThlOTQzNDNhYjE1NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVk
ZS9hdWRpb19wcm9jZXNzaW5nLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJydGNfYmFz
ZS9wbGF0Zm9ybV9maWxlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3Rl
bS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC00OCw3ICs0OSw2IEBA
IGNsYXNzIFByb2Nlc3NpbmdDb25maWc7CiAKIGNsYXNzIEVjaG9EZXRlY3RvcjsKIGNsYXNzIEdh
aW5Db250cm9sOwotY2xhc3MgSGlnaFBhc3NGaWx0ZXI7CiBjbGFzcyBMZXZlbEVzdGltYXRvcjsK
IGNsYXNzIE5vaXNlU3VwcHJlc3Npb247CiBjbGFzcyBDdXN0b21BdWRpb0FuYWx5emVyOwpAQCAt
MjQwLDcgKzI0MCw2IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc2luZyA6IHB1YmxpYyBydGM6OlJlZkNv
dW50SW50ZXJmYWNlIHsKICAgLy8gYnkgY2hhbmdpbmcgdGhlIGRlZmF1bHQgdmFsdWVzIGluIHRo
ZSBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZyBzdHJ1Y3QuCiAgIC8vIFRoZSBjb25maWcgaXMgYXBw
bGllZCBieSBwYXNzaW5nIHRoZSBzdHJ1Y3QgdG8gdGhlIEFwcGx5Q29uZmlnIG1ldGhvZC4KICAg
c3RydWN0IENvbmZpZyB7Ci0gICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTUzNSk6IEN1cnJl
bnRseSB1bnVzZWQuIFVzZSB0aGlzIHRvIGRldGVybWluZSBBRUMuCiAgICAgc3RydWN0IEVjaG9D
YW5jZWxsZXIgewogICAgICAgYm9vbCBlbmFibGVkID0gZmFsc2U7CiAgICAgICBib29sIG1vYmls
ZV9tb2RlID0gZmFsc2U7CkBAIC0yNzEsMTEgKzI3MCwyNCBAQCBjbGFzcyBBdWRpb1Byb2Nlc3Np
bmcgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgICAgLy8gZmlyc3QgYXBwbGll
cyBhIGZpeGVkIGdhaW4uIFRoZSBhZGFwdGl2ZSBkaWdpdGFsIEFHQyBjYW4gYmUgdHVybmVkIG9m
ZiBieQogICAgIC8vIHNldHRpbmcgfGFkYXB0aXZlX2RpZ2l0YWxfbW9kZT1mYWxzZXwuCiAgICAg
c3RydWN0IEdhaW5Db250cm9sbGVyMiB7CisgICAgICBlbnVtIExldmVsRXN0aW1hdG9yIHsga1Jt
cywga1BlYWsgfTsKICAgICAgIGJvb2wgZW5hYmxlZCA9IGZhbHNlOwotICAgICAgYm9vbCBhZGFw
dGl2ZV9kaWdpdGFsX21vZGUgPSB0cnVlOwotICAgICAgZmxvYXQgZml4ZWRfZ2Fpbl9kYiA9IDAu
ZjsKKyAgICAgIHN0cnVjdCB7CisgICAgICAgIGZsb2F0IGdhaW5fZGIgPSAwLmY7CisgICAgICB9
IGZpeGVkX2RpZ2l0YWw7CisgICAgICBzdHJ1Y3QgeworICAgICAgICBib29sIGVuYWJsZWQgPSBm
YWxzZTsKKyAgICAgICAgTGV2ZWxFc3RpbWF0b3IgbGV2ZWxfZXN0aW1hdG9yID0ga1JtczsKKyAg
ICAgICAgYm9vbCB1c2Vfc2F0dXJhdGlvbl9wcm90ZWN0b3IgPSB0cnVlOworICAgICAgICBmbG9h
dCBleHRyYV9zYXR1cmF0aW9uX21hcmdpbl9kYiA9IDIuZjsKKyAgICAgIH0gYWRhcHRpdmVfZGln
aXRhbDsKICAgICB9IGdhaW5fY29udHJvbGxlcjI7CiAKKyAgICAvLyBFbmFibGVzIHJlcG9ydGlu
ZyBvZiB8b3V0cHV0X3Jtc19kYmZzfCBpbiB3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZ1N0YXRzLgor
ICAgIHN0cnVjdCBMZXZlbEVzdGltYXRpb24geworICAgICAgYm9vbCBlbmFibGVkID0gZmFsc2U7
CisgICAgfSBsZXZlbF9lc3RpbWF0aW9uOworCiAgICAgLy8gRXhwbGljaXQgY29weSBhc3NpZ25t
ZW50IGltcGxlbWVudGF0aW9uIHRvIGF2b2lkIGlzc3VlcyB3aXRoIG1lbW9yeQogICAgIC8vIHNh
bml0aXplciBjb21wbGFpbnRzIGluIGNhc2Ugb2Ygc2VsZi1hc3NpZ25tZW50LgogICAgIC8vIFRP
RE8ocGVhaCk6IEFkZCBidWlsZGZsYWcgdG8gZW5zdXJlIHRoYXQgdGhpcyBpcyBvbmx5IGluY2x1
ZGVkIGZvciBtZW1vcnkKQEAgLTUyMCw4NSArNTMyLDE3IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc2lu
ZyA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICAgLy8gc3BlY2lmaWMgbWVtYmVy
IHZhcmlhYmxlcyBhcmUgcmVzZXQuCiAgIHZpcnR1YWwgdm9pZCBVcGRhdGVIaXN0b2dyYW1zT25D
YWxsRW5kKCkgPSAwOwogCi0gIC8vIFRPRE8oaXZvYyk6IFJlbW92ZSB3aGVuIHRoZSBjYWxsaW5n
IGNvZGUgbm8gbG9uZ2VyIHVzZXMgdGhlIG9sZCBTdGF0aXN0aWNzCi0gIC8vICAgICAgICAgICAg
IEFQSS4KLSAgc3RydWN0IFN0YXRpc3RpYyB7Ci0gICAgaW50IGluc3RhbnQgPSAwOyAgLy8gSW5z
dGFudGFuZW91cyB2YWx1ZS4KLSAgICBpbnQgYXZlcmFnZSA9IDA7ICAvLyBMb25nLXRlcm0gYXZl
cmFnZS4KLSAgICBpbnQgbWF4aW11bSA9IDA7ICAvLyBMb25nLXRlcm0gbWF4aW11bS4KLSAgICBp
bnQgbWluaW11bSA9IDA7ICAvLyBMb25nLXRlcm0gbWluaW11bS4KLSAgfTsKLQotICBzdHJ1Y3Qg
U3RhdCB7Ci0gICAgdm9pZCBTZXQoY29uc3QgU3RhdGlzdGljJiBvdGhlcikgewotICAgICAgU2V0
KG90aGVyLmluc3RhbnQsIG90aGVyLmF2ZXJhZ2UsIG90aGVyLm1heGltdW0sIG90aGVyLm1pbmlt
dW0pOwotICAgIH0KLSAgICB2b2lkIFNldChmbG9hdCBpbnN0YW50LCBmbG9hdCBhdmVyYWdlLCBm
bG9hdCBtYXhpbXVtLCBmbG9hdCBtaW5pbXVtKSB7Ci0gICAgICBpbnN0YW50XyA9IGluc3RhbnQ7
Ci0gICAgICBhdmVyYWdlXyA9IGF2ZXJhZ2U7Ci0gICAgICBtYXhpbXVtXyA9IG1heGltdW07Ci0g
ICAgICBtaW5pbXVtXyA9IG1pbmltdW07Ci0gICAgfQotICAgIGZsb2F0IGluc3RhbnQoKSBjb25z
dCB7IHJldHVybiBpbnN0YW50XzsgfQotICAgIGZsb2F0IGF2ZXJhZ2UoKSBjb25zdCB7IHJldHVy
biBhdmVyYWdlXzsgfQotICAgIGZsb2F0IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtYXhpbXVt
XzsgfQotICAgIGZsb2F0IG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtaW5pbXVtXzsgfQotCi0g
ICBwcml2YXRlOgotICAgIGZsb2F0IGluc3RhbnRfID0gMC4wZjsgIC8vIEluc3RhbnRhbmVvdXMg
dmFsdWUuCi0gICAgZmxvYXQgYXZlcmFnZV8gPSAwLjBmOyAgLy8gTG9uZy10ZXJtIGF2ZXJhZ2Uu
Ci0gICAgZmxvYXQgbWF4aW11bV8gPSAwLjBmOyAgLy8gTG9uZy10ZXJtIG1heGltdW0uCi0gICAg
ZmxvYXQgbWluaW11bV8gPSAwLjBmOyAgLy8gTG9uZy10ZXJtIG1pbmltdW0uCi0gIH07Ci0KLSAg
c3RydWN0IEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MgewotICAgIEF1ZGlvUHJvY2Vzc2luZ1N0
YXRpc3RpY3MoKTsKLSAgICBBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzKGNvbnN0IEF1ZGlvUHJv
Y2Vzc2luZ1N0YXRpc3RpY3MmIG90aGVyKTsKLSAgICB+QXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGlj
cygpOwotCi0gICAgLy8gQUVDIFN0YXRpc3RpY3MuCi0gICAgLy8gUkVSTCA9IEVSTCArIEVSTEUK
LSAgICBTdGF0IHJlc2lkdWFsX2VjaG9fcmV0dXJuX2xvc3M7Ci0gICAgLy8gRVJMID0gMTBsb2df
MTAoUF9mYXIgLyBQX2VjaG8pCi0gICAgU3RhdCBlY2hvX3JldHVybl9sb3NzOwotICAgIC8vIEVS
TEUgPSAxMGxvZ18xMChQX2VjaG8gLyBQX291dCkKLSAgICBTdGF0IGVjaG9fcmV0dXJuX2xvc3Nf
ZW5oYW5jZW1lbnQ7Ci0gICAgLy8gKFByZSBub24tbGluZWFyIHByb2Nlc3Npbmcgc3VwcHJlc3Np
b24pIEFfTkxQID0gMTBsb2dfMTAoUF9lY2hvIC8gUF9hKQotICAgIFN0YXQgYV9ubHA7Ci0gICAg
Ly8gRnJhY3Rpb24gb2YgdGltZSB0aGF0IHRoZSBBRUMgbGluZWFyIGZpbHRlciBpcyBkaXZlcmdl
bnQsIGluIGEgMS1zZWNvbmQKLSAgICAvLyBub24tb3ZlcmxhcHBlZCBhZ2dyZWdhdGlvbiB3aW5k
b3cuCi0gICAgZmxvYXQgZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbiA9IC0xLjBmOwotCi0gICAg
Ly8gVGhlIGRlbGF5IG1ldHJpY3MgY29uc2lzdHMgb2YgdGhlIGRlbGF5IG1lZGlhbiBhbmQgc3Rh
bmRhcmQgZGV2aWF0aW9uLiBJdAotICAgIC8vIGFsc28gY29uc2lzdHMgb2YgdGhlIGZyYWN0aW9u
IG9mIGRlbGF5IGVzdGltYXRlcyB0aGF0IGNhbiBtYWtlIHRoZSBlY2hvCi0gICAgLy8gY2FuY2Vs
bGF0aW9uIHBlcmZvcm0gcG9vcmx5LiBUaGUgdmFsdWVzIGFyZSBhZ2dyZWdhdGVkIHVudGlsIHRo
ZSBmaXJzdAotICAgIC8vIGNhbGwgdG8gfEdldFN0YXRpc3RpY3MoKXwgYW5kIGFmdGVyd2FyZHMg
YWdncmVnYXRlZCBhbmQgdXBkYXRlZCBldmVyeQotICAgIC8vIHNlY29uZC4gTm90ZSB0aGF0IGlm
IHRoZXJlIGFyZSBzZXZlcmFsIGNsaWVudHMgcHVsbGluZyBtZXRyaWNzIGZyb20KLSAgICAvLyB8
R2V0U3RhdGlzdGljcygpfCBkdXJpbmcgYSBzZXNzaW9uIHRoZSBmaXJzdCBjYWxsIGZyb20gYW55
IG9mIHRoZW0gd2lsbAotICAgIC8vIGNoYW5nZSB0byBvbmUgc2Vjb25kIGFnZ3JlZ2F0aW9uIHdp
bmRvdyBmb3IgYWxsLgotICAgIGludCBkZWxheV9tZWRpYW4gPSAtMTsKLSAgICBpbnQgZGVsYXlf
c3RhbmRhcmRfZGV2aWF0aW9uID0gLTE7Ci0gICAgZmxvYXQgZnJhY3Rpb25fcG9vcl9kZWxheXMg
PSAtMS4wZjsKLQotICAgIC8vIFJlc2lkdWFsIGVjaG8gZGV0ZWN0b3IgbGlrZWxpaG9vZC4KLSAg
ICBmbG9hdCByZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2QgPSAtMS4wZjsKLSAgICAvLyBNYXhpbXVt
IHJlc2lkdWFsIGVjaG8gbGlrZWxpaG9vZCBmcm9tIHRoZSBsYXN0IHRpbWUgcGVyaW9kLgotICAg
IGZsb2F0IHJlc2lkdWFsX2VjaG9fbGlrZWxpaG9vZF9yZWNlbnRfbWF4ID0gLTEuMGY7Ci0gIH07
Ci0KLSAgLy8gVE9ETyhpdm9jKTogTWFrZSB0aGlzIHB1cmUgdmlydHVhbCB3aGVuIGFsbCBzdWJj
bGFzc2VzIGhhdmUgYmVlbiB1cGRhdGVkLgotICB2aXJ0dWFsIEF1ZGlvUHJvY2Vzc2luZ1N0YXRp
c3RpY3MgR2V0U3RhdGlzdGljcygpIGNvbnN0OwotCi0gIC8vIFRoaXMgcmV0dXJucyB0aGUgc3Rh
dHMgYXMgb3B0aW9uYWxzIGFuZCBpdCB3aWxsIHJlcGxhY2UgdGhlIHJlZ3VsYXIKLSAgLy8gR2V0
U3RhdGlzdGljcy4KLSAgdmlydHVhbCBBdWRpb1Byb2Nlc3NpbmdTdGF0cyBHZXRTdGF0aXN0aWNz
KGJvb2wgaGFzX3JlbW90ZV90cmFja3MpIGNvbnN0OworICAvLyBHZXQgYXVkaW8gcHJvY2Vzc2lu
ZyBzdGF0aXN0aWNzLiBUaGUgfGhhc19yZW1vdGVfdHJhY2tzfCBhcmd1bWVudCBzaG91bGQgYmUK
KyAgLy8gc2V0IGlmIHRoZXJlIGFyZSBhY3RpdmUgcmVtb3RlIHRyYWNrcyAodGhpcyB3b3VsZCB1
c3VhbGx5IGJlIHRydWUgZHVyaW5nCisgIC8vIGEgY2FsbCkuIElmIHRoZXJlIGFyZSBubyByZW1v
dGUgdHJhY2tzIHNvbWUgb2YgdGhlIHN0YXRzIHdpbGwgbm90IGJlIHNldCBieQorICAvLyBBdWRp
b1Byb2Nlc3NpbmcsIGJlY2F1c2UgdGhleSBvbmx5IG1ha2Ugc2Vuc2UgaWYgdGhlcmUgaXMgYXQg
bGVhc3Qgb25lCisgIC8vIHJlbW90ZSB0cmFjay4KKyAgdmlydHVhbCBBdWRpb1Byb2Nlc3NpbmdT
dGF0cyBHZXRTdGF0aXN0aWNzKGJvb2wgaGFzX3JlbW90ZV90cmFja3MpIGNvbnN0ID0gMDsKIAog
ICAvLyBUaGVzZSBwcm92aWRlIGFjY2VzcyB0byB0aGUgY29tcG9uZW50IGludGVyZmFjZXMgYW5k
IHNob3VsZCBuZXZlciByZXR1cm4KICAgLy8gTlVMTC4gVGhlIHBvaW50ZXJzIHdpbGwgYmUgdmFs
aWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgQVBNIGluc3RhbmNlLgogICAvLyBUaGUgbWVtb3J5
IGZvciB0aGVzZSBvYmplY3RzIGlzIGVudGlyZWx5IG1hbmFnZWQgaW50ZXJuYWxseS4KICAgdmly
dHVhbCBHYWluQ29udHJvbCogZ2Fpbl9jb250cm9sKCkgY29uc3QgPSAwOwotICAvLyBUT0RPKHBl
YWgpOiBEZXByZWNhdGUgdGhpcyBBUEkgY2FsbC4KLSAgdmlydHVhbCBIaWdoUGFzc0ZpbHRlciog
aGlnaF9wYXNzX2ZpbHRlcigpIGNvbnN0ID0gMDsKICAgdmlydHVhbCBMZXZlbEVzdGltYXRvciog
bGV2ZWxfZXN0aW1hdG9yKCkgY29uc3QgPSAwOwogICB2aXJ0dWFsIE5vaXNlU3VwcHJlc3Npb24q
IG5vaXNlX3N1cHByZXNzaW9uKCkgY29uc3QgPSAwOwogICB2aXJ0dWFsIFZvaWNlRGV0ZWN0aW9u
KiB2b2ljZV9kZXRlY3Rpb24oKSBjb25zdCA9IDA7CkBAIC02NDgsNyArNTkyLDcgQEAgY2xhc3Mg
QXVkaW9Qcm9jZXNzaW5nIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICBzdGF0
aWMgY29uc3QgaW50IGtDaHVua1NpemVNcyA9IDEwOwogfTsKIAotY2xhc3MgQXVkaW9Qcm9jZXNz
aW5nQnVpbGRlciB7CitjbGFzcyBSVENfRVhQT1JUIEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIgewog
IHB1YmxpYzoKICAgQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpOwogICB+QXVkaW9Qcm9jZXNzaW5n
QnVpbGRlcigpOwpAQCAtNzg4LDE3ICs3MzIsNiBAQCBjbGFzcyBQcm9jZXNzaW5nQ29uZmlnIHsK
ICAgU3RyZWFtQ29uZmlnIHN0cmVhbXNbU3RyZWFtTmFtZTo6a051bVN0cmVhbU5hbWVzXTsKIH07
CiAKLS8vIFRPRE8ocGVhaCk6IFJlbW92ZSB0aGlzIGludGVyZmFjZS4KLS8vIEEgZmlsdGVyaW5n
IGNvbXBvbmVudCB3aGljaCByZW1vdmVzIERDIG9mZnNldCBhbmQgbG93LWZyZXF1ZW5jeSBub2lz
ZS4KLS8vIFJlY29tbWVuZGVkIHRvIGJlIGVuYWJsZWQgb24gdGhlIGNsaWVudC1zaWRlLgotY2xh
c3MgSGlnaFBhc3NGaWx0ZXIgewotIHB1YmxpYzoKLSAgdmlydHVhbCBpbnQgRW5hYmxlKGJvb2wg
ZW5hYmxlKSA9IDA7Ci0gIHZpcnR1YWwgYm9vbCBpc19lbmFibGVkKCkgY29uc3QgPSAwOwotCi0g
IHZpcnR1YWwgfkhpZ2hQYXNzRmlsdGVyKCkge30KLX07Ci0KIC8vIEFuIGVzdGltYXRpb24gY29t
cG9uZW50IHVzZWQgdG8gcmV0cmlldmUgbGV2ZWwgbWV0cmljcy4KIGNsYXNzIExldmVsRXN0aW1h
dG9yIHsKICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9j
ZXNzaW5nX3N0YXRpc3RpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmdf
c3RhdGlzdGljcy5oCmluZGV4IDIzN2QyM2M1YmNlOGIyYmRhZGQ3Y2JhN2Y0Mjk4ZDFkNmU5Mzcz
OWMuLjY4M2RiMDUyZTZjNmI3ZTY5ZTg3MDM1ODQwZTFjYzZmMjkyYzcxMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcy5oCkBAIC0xMSwxNiAr
MTEsMjcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0lOQ0xVREVfQVVESU9f
UFJPQ0VTU0lOR19TVEFUSVNUSUNTX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lO
R19JTkNMVURFX0FVRElPX1BST0NFU1NJTkdfU1RBVElTVElDU19IXwogCisjaW5jbHVkZSA8c3Rk
aW50Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyBUaGlz
IHZlcnNpb24gb2YgdGhlIHN0YXRzIHVzZXMgT3B0aW9uYWxzLCBpdCB3aWxsIHJlcGxhY2UgdGhl
IHJlZ3VsYXIKIC8vIEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3Mgc3RydWN0Lgotc3RydWN0IEF1
ZGlvUHJvY2Vzc2luZ1N0YXRzIHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvUHJvY2Vzc2luZ1N0
YXRzIHsKICAgQXVkaW9Qcm9jZXNzaW5nU3RhdHMoKTsKICAgQXVkaW9Qcm9jZXNzaW5nU3RhdHMo
Y29uc3QgQXVkaW9Qcm9jZXNzaW5nU3RhdHMmIG90aGVyKTsKICAgfkF1ZGlvUHJvY2Vzc2luZ1N0
YXRzKCk7CiAKKyAgLy8gVGhlIHJvb3QgbWVhbiBzcXVhcmUgKFJNUykgbGV2ZWwgaW4gZEJGUyAo
ZGVjaWJlbHMgZnJvbSBkaWdpdGFsCisgIC8vIGZ1bGwtc2NhbGUpIG9mIHRoZSBsYXN0IGNhcHR1
cmUgZnJhbWUsIGFmdGVyIHByb2Nlc3NpbmcuIEl0IGlzCisgIC8vIGNvbnN0cmFpbmVkIHRvIFst
MTI3LCAwXS4KKyAgLy8gVGhlIGNvbXB1dGF0aW9uIGZvbGxvd3M6IGh0dHBzOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9yZmM2NDY1CisgIC8vIHdpdGggdGhlIGludGVudCB0aGF0IGl0IGNhbiBwcm92
aWRlIHRoZSBSVFAgYXVkaW8gbGV2ZWwgaW5kaWNhdGlvbi4KKyAgLy8gT25seSByZXBvcnRlZCBp
ZiBsZXZlbCBlc3RpbWF0aW9uIGlzIGVuYWJsZWQgaW4gQXVkaW9Qcm9jZXNzaW5nOjpDb25maWcu
CisgIGFic2w6Om9wdGlvbmFsPGludD4gb3V0cHV0X3Jtc19kYmZzOworCiAgIC8vIEFFQyBTdGF0
aXN0aWNzLgogICAvLyBFUkwgPSAxMGxvZ18xMChQX2ZhciAvIFBfZWNobykKICAgYWJzbDo6b3B0
aW9uYWw8ZG91YmxlPiBlY2hvX3JldHVybl9sb3NzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2lu
Y2x1ZGUvY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9jb25maWcuaAppbmRleCAzOThhYWI2
MWNmZmU2M2RkNTJmMDU4MWQ5ODBhYzBmNjdmMTQ0ZGE5Li5lNzdkM2ZkMTZkN2I0MTk2M2RlMzdm
YTc5YmY2MTA4M2RjZTkyZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9jb25maWcu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9jb25maWcuaApAQCAtMTQsNiArMTQsNyBAQAogI2lu
Y2x1ZGUgPG1hcD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIApAQCAtNTcsNyArNTgsNyBAQCBlbnVtIGNsYXNzIENvbmZpZ09wdGlvbklEIHsKIC8vICAg
IGNvbmZpZy5TZXQ8QWxnbzFfQ29zdEZ1bmN0aW9uPihuZXcgU3FyQ29zdCgpKTsKIC8vCiAvLyBO
b3RlOiBUaGlzIGNsYXNzIGlzIHRocmVhZC1jb21wYXRpYmxlIChsaWtlIFNUTCBjb250YWluZXJz
KS4KLWNsYXNzIENvbmZpZyB7CitjbGFzcyBSVENfRVhQT1JUIENvbmZpZyB7CiAgcHVibGljOgog
ICAvLyBSZXR1cm5zIHRoZSBvcHRpb24gaWYgc2V0IG9yIGEgZGVmYXVsdCBjb25zdHJ1Y3RlZCBv
bmUuCiAgIC8vIENhbGxlcnMgdGhhdCBhY2Nlc3Mgb3B0aW9ucyB0b28gb2Z0ZW4gYXJlIGVuY291
cmFnZWQgdG8gY2FjaGUgdGhlIHJlc3VsdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRl
L21vY2tfYXVkaW9fcHJvY2Vzc2luZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvbW9ja19hdWRpb19w
cm9jZXNzaW5nLmgKaW5kZXggNGExZmU2MjZiZDVkNThiMGI4NWUxOWU4ZDFiMjQyZjAwMzQxZDA0
OC4uZjAwYTE2ZDVlMmQyNjEwYjE3MWI0MGM2MmExM2RmYjgyY2FjMzRhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2luY2x1ZGUvbW9ja19hdWRpb19wcm9jZXNzaW5nLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2luY2x1ZGUvbW9ja19hdWRpb19wcm9jZXNzaW5nLmgKQEAgLTQyLDEzICs0Miw2IEBAIGNsYXNz
IE1vY2tHYWluQ29udHJvbCA6IHB1YmxpYyBHYWluQ29udHJvbCB7CiAgIE1PQ0tfQ09OU1RfTUVU
SE9EMChzdHJlYW1faXNfc2F0dXJhdGVkLCBib29sKCkpOwogfTsKIAotY2xhc3MgTW9ja0hpZ2hQ
YXNzRmlsdGVyIDogcHVibGljIEhpZ2hQYXNzRmlsdGVyIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwg
fk1vY2tIaWdoUGFzc0ZpbHRlcigpIHt9Ci0gIE1PQ0tfTUVUSE9EMShFbmFibGUsIGludChib29s
IGVuYWJsZSkpOwotICBNT0NLX0NPTlNUX01FVEhPRDAoaXNfZW5hYmxlZCwgYm9vbCgpKTsKLX07
Ci0KIGNsYXNzIE1vY2tMZXZlbEVzdGltYXRvciA6IHB1YmxpYyBMZXZlbEVzdGltYXRvciB7CiAg
cHVibGljOgogICB2aXJ0dWFsIH5Nb2NrTGV2ZWxFc3RpbWF0b3IoKSB7fQpAQCAtMTE0LDcgKzEw
Nyw2IEBAIGNsYXNzIE1vY2tBdWRpb1Byb2Nlc3NpbmcgOiBwdWJsaWMgdGVzdGluZzo6TmljZU1v
Y2s8QXVkaW9Qcm9jZXNzaW5nPiB7CiAgcHVibGljOgogICBNb2NrQXVkaW9Qcm9jZXNzaW5nKCkK
ICAgICAgIDogZ2Fpbl9jb250cm9sXyhuZXcgdGVzdGluZzo6TmljZU1vY2s8TW9ja0dhaW5Db250
cm9sPigpKSwKLSAgICAgICAgaGlnaF9wYXNzX2ZpbHRlcl8obmV3IHRlc3Rpbmc6Ok5pY2VNb2Nr
PE1vY2tIaWdoUGFzc0ZpbHRlcj4oKSksCiAgICAgICAgIGxldmVsX2VzdGltYXRvcl8obmV3IHRl
c3Rpbmc6Ok5pY2VNb2NrPE1vY2tMZXZlbEVzdGltYXRvcj4oKSksCiAgICAgICAgIG5vaXNlX3N1
cHByZXNzaW9uXyhuZXcgdGVzdGluZzo6TmljZU1vY2s8TW9ja05vaXNlU3VwcHJlc3Npb24+KCkp
LAogICAgICAgICB2b2ljZV9kZXRlY3Rpb25fKG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrVm9p
Y2VEZXRlY3Rpb24+KCkpIHt9CkBAIC0xODAsMTIgKzE3Miw4IEBAIGNsYXNzIE1vY2tBdWRpb1By
b2Nlc3NpbmcgOiBwdWJsaWMgdGVzdGluZzo6TmljZU1vY2s8QXVkaW9Qcm9jZXNzaW5nPiB7CiAg
IE1PQ0tfTUVUSE9EMChEZXRhY2hQbGF5b3V0QXVkaW9HZW5lcmF0b3IsIHZvaWQoKSk7CiAKICAg
TU9DS19NRVRIT0QwKFVwZGF0ZUhpc3RvZ3JhbXNPbkNhbGxFbmQsIHZvaWQoKSk7Ci0gIE1PQ0tf
Q09OU1RfTUVUSE9EMChHZXRTdGF0aXN0aWNzLCBBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzKCkp
OwogICBNT0NLX0NPTlNUX01FVEhPRDEoR2V0U3RhdGlzdGljcywgQXVkaW9Qcm9jZXNzaW5nU3Rh
dHMoYm9vbCkpOwogICB2aXJ0dWFsIE1vY2tHYWluQ29udHJvbCogZ2Fpbl9jb250cm9sKCkgY29u
c3QgeyByZXR1cm4gZ2Fpbl9jb250cm9sXy5nZXQoKTsgfQotICB2aXJ0dWFsIE1vY2tIaWdoUGFz
c0ZpbHRlciogaGlnaF9wYXNzX2ZpbHRlcigpIGNvbnN0IHsKLSAgICByZXR1cm4gaGlnaF9wYXNz
X2ZpbHRlcl8uZ2V0KCk7Ci0gIH0KICAgdmlydHVhbCBNb2NrTGV2ZWxFc3RpbWF0b3IqIGxldmVs
X2VzdGltYXRvcigpIGNvbnN0IHsKICAgICByZXR1cm4gbGV2ZWxfZXN0aW1hdG9yXy5nZXQoKTsK
ICAgfQpAQCAtMjAwLDcgKzE4OCw2IEBAIGNsYXNzIE1vY2tBdWRpb1Byb2Nlc3NpbmcgOiBwdWJs
aWMgdGVzdGluZzo6TmljZU1vY2s8QXVkaW9Qcm9jZXNzaW5nPiB7CiAKICBwcml2YXRlOgogICBz
dGQ6OnVuaXF1ZV9wdHI8TW9ja0dhaW5Db250cm9sPiBnYWluX2NvbnRyb2xfOwotICBzdGQ6OnVu
aXF1ZV9wdHI8TW9ja0hpZ2hQYXNzRmlsdGVyPiBoaWdoX3Bhc3NfZmlsdGVyXzsKICAgc3RkOjp1
bmlxdWVfcHRyPE1vY2tMZXZlbEVzdGltYXRvcj4gbGV2ZWxfZXN0aW1hdG9yXzsKICAgc3RkOjp1
bmlxdWVfcHRyPE1vY2tOb2lzZVN1cHByZXNzaW9uPiBub2lzZV9zdXBwcmVzc2lvbl87CiAgIHN0
ZDo6dW5pcXVlX3B0cjxNb2NrVm9pY2VEZXRlY3Rpb24+IHZvaWNlX2RldGVjdGlvbl87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvbGV2ZWxfZXN0aW1hdG9yX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbGV2
ZWxfZXN0aW1hdG9yX2ltcGwuY2MKaW5kZXggYzkzN2Y4NDUyNTM0Y2VhNzMzYjBjMWY2MjI4NThl
N2VhNWViZTM3Mi4uNWI0OWIzNWZkY2M1NjUzODI0ZTA4NGFlNTQ0NDI1ZGRhMGYwNzIyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2xldmVsX2VzdGltYXRvcl9pbXBsLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9sZXZlbF9lc3RpbWF0b3JfaW1wbC5jYwpAQCAtMTAsOSArMTAsMTMgQEAKIAogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sZXZlbF9lc3RpbWF0b3JfaW1wbC5oIgogCisjaW5j
bHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhcGkvYXJy
YXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZm
ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvcm1zX2xldmVsLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
bG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuY2MKaW5kZXggZTJlODYwMmI5ODliMzY2YmMyYTYyZjY3
NjgxYjUwOGVlNTNmYWM1Zi4uY2M4NzljOGIwOGZkYzVkN2Q2Y2JmZjk5NDkxNjZlMmFkNjg5NDEy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5jYwpAQCAtMTEsNyArMTEsNiBAQAog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBl
ci5oIgogCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKIC8vIENoZWNrIHRvIHZlcmlmeSB0aGF0
IHRoZSBkZWZpbmUgaXMgcHJvcGVybHkgc2V0LgogI2lmICFkZWZpbmVkKFdFQlJUQ19BUE1fREVC
VUdfRFVNUCkgfHwgXApAQCAtMjAsMTYgKzE5LDMwIEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7Ci0KIG5hbWVzcGFjZSB7CiAKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQot
c3RkOjpzdHJpbmcgRm9ybUZpbGVOYW1lKGNvbnN0IGNoYXIqIG5hbWUsCisKKyNpZiBkZWZpbmVk
KFdFQlJUQ19XSU4pCitjb25zdGV4cHIgY2hhciBrUGF0aERlbGltaXRlciA9ICdcXCc7CisjZWxz
ZQorY29uc3RleHByIGNoYXIga1BhdGhEZWxpbWl0ZXIgPSAnLyc7CisjZW5kaWYKKworc3RkOjpz
dHJpbmcgRm9ybUZpbGVOYW1lKGNvbnN0IGNoYXIqIG91dHB1dF9kaXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaW5zdGFuY2VfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlaW5pdF9p
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3VmZml4
KSB7CiAgIGNoYXIgYnVmWzEwMjRdOwogICBydGM6OlNpbXBsZVN0cmluZ0J1aWxkZXIgc3MoYnVm
KTsKKyAgY29uc3Qgc2l6ZV90IG91dHB1dF9kaXJfc2l6ZSA9IHN0cmxlbihvdXRwdXRfZGlyKTsK
KyAgaWYgKG91dHB1dF9kaXJfc2l6ZSA+IDApIHsKKyAgICBzcyA8PCBvdXRwdXRfZGlyOworICAg
IGlmIChvdXRwdXRfZGlyW291dHB1dF9kaXJfc2l6ZSAtIDFdICE9IGtQYXRoRGVsaW1pdGVyKSB7
CisgICAgICBzcyA8PCBrUGF0aERlbGltaXRlcjsKKyAgICB9CisgIH0KICAgc3MgPDwgbmFtZSA8
PCAiXyIgPDwgaW5zdGFuY2VfaW5kZXggPDwgIi0iIDw8IHJlaW5pdF9pbmRleCA8PCBzdWZmaXg7
CiAgIHJldHVybiBzcy5zdHIoKTsKIH0KQEAgLTQxLDE4ICs1NCwyMiBAQCBzdGQ6OnN0cmluZyBG
b3JtRmlsZU5hbWUoY29uc3QgY2hhciogbmFtZSwKIEFwbURhdGFEdW1wZXI6OkFwbURhdGFEdW1w
ZXIoaW50IGluc3RhbmNlX2luZGV4KQogICAgIDogaW5zdGFuY2VfaW5kZXhfKGluc3RhbmNlX2lu
ZGV4KSB7fQogI2Vsc2UKLUFwbURhdGFEdW1wZXI6OkFwbURhdGFEdW1wZXIoaW50IGluc3RhbmNl
X2luZGV4KSB7fQorQXBtRGF0YUR1bXBlcjo6QXBtRGF0YUR1bXBlcihpbnQgaW5zdGFuY2VfaW5k
ZXgpe307CiAjZW5kaWYKIAotQXBtRGF0YUR1bXBlcjo6fkFwbURhdGFEdW1wZXIoKSB7fQorQXBt
RGF0YUR1bXBlcjo6fkFwbURhdGFEdW1wZXIoKSA9IGRlZmF1bHQ7CiAKICNpZiBXRUJSVENfQVBN
X0RFQlVHX0RVTVAgPT0gMQorYm9vbCBBcG1EYXRhRHVtcGVyOjpyZWNvcmRpbmdfYWN0aXZhdGVk
XyA9IGZhbHNlOworY2hhciBBcG1EYXRhRHVtcGVyOjpvdXRwdXRfZGlyX1tdID0gIiI7CisKIEZJ
TEUqIEFwbURhdGFEdW1wZXI6OkdldFJhd0ZpbGUoY29uc3QgY2hhciogbmFtZSkgewotICBzdGQ6
OnN0cmluZyBmaWxlbmFtZSA9Ci0gICAgICBGb3JtRmlsZU5hbWUobmFtZSwgaW5zdGFuY2VfaW5k
ZXhfLCByZWNvcmRpbmdfc2V0X2luZGV4XywgIi5kYXQiKTsKKyAgc3RkOjpzdHJpbmcgZmlsZW5h
bWUgPSBGb3JtRmlsZU5hbWUob3V0cHV0X2Rpcl8sIG5hbWUsIGluc3RhbmNlX2luZGV4XywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkaW5nX3NldF9pbmRleF8s
ICIuZGF0Iik7CiAgIGF1dG8mIGYgPSByYXdfZmlsZXNfW2ZpbGVuYW1lXTsKICAgaWYgKCFmKSB7
CiAgICAgZi5yZXNldChmb3BlbihmaWxlbmFtZS5jX3N0cigpLCAid2IiKSk7CisgICAgUlRDX0NI
RUNLKGYuZ2V0KCkpIDw8ICJDYW5ub3Qgd3JpdGUgdG8gIiA8PCBmaWxlbmFtZSA8PCAiLiI7CiAg
IH0KICAgcmV0dXJuIGYuZ2V0KCk7CiB9CkBAIC02MCwxNSArNzcsMTQgQEAgRklMRSogQXBtRGF0
YUR1bXBlcjo6R2V0UmF3RmlsZShjb25zdCBjaGFyKiBuYW1lKSB7CiBXYXZXcml0ZXIqIEFwbURh
dGFEdW1wZXI6OkdldFdhdkZpbGUoY29uc3QgY2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG51bV9jaGFubmVscykgewotICBzdGQ6OnN0cmluZyBm
aWxlbmFtZSA9Ci0gICAgICBGb3JtRmlsZU5hbWUobmFtZSwgaW5zdGFuY2VfaW5kZXhfLCByZWNv
cmRpbmdfc2V0X2luZGV4XywgIi53YXYiKTsKKyAgc3RkOjpzdHJpbmcgZmlsZW5hbWUgPSBGb3Jt
RmlsZU5hbWUob3V0cHV0X2Rpcl8sIG5hbWUsIGluc3RhbmNlX2luZGV4XywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkaW5nX3NldF9pbmRleF8sICIud2F2Iik7
CiAgIGF1dG8mIGYgPSB3YXZfZmlsZXNfW2ZpbGVuYW1lXTsKICAgaWYgKCFmKSB7CiAgICAgZi5y
ZXNldChuZXcgV2F2V3JpdGVyKGZpbGVuYW1lLmNfc3RyKCksIHNhbXBsZV9yYXRlX2h6LCBudW1f
Y2hhbm5lbHMpKTsKICAgfQogICByZXR1cm4gZi5nZXQoKTsKIH0KLQogI2VuZGlmCiAKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRh
X2R1bXBlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgKaW5kZXggZDA0
NTAyN2IzNTQxNjVhMDI0MTliYTlkNDRiNzY4ZjYzMTNlZmMyYS4uYjU0MWFlODRiOWI4NmE3NDk0
YWVmNzNkNzk3MDc5NDE5OTYzYmMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBt
X2RhdGFfZHVtcGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgK
QEAgLTExLDE0ICsxMSwyMCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfTE9H
R0lOR19BUE1fREFUQV9EVU1QRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5H
X0xPR0dJTkdfQVBNX0RBVEFfRFVNUEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogCi0jaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHN0cmluZz4KKyNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQogI2luY2x1
ZGUgPHVub3JkZXJlZF9tYXA+CisjZW5kaWYKIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CisjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKICNpbmNsdWRlICJjb21tb25fYXVkaW8v
d2F2X2ZpbGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNlbmRpZgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogLy8gQ2hlY2sgdG8gdmVyaWZ5IHRo
YXQgdGhlIGRlZmluZSBpcyBwcm9wZXJseSBzZXQuCkBAIC00Nyw2ICs1MywyMSBAQCBjbGFzcyBB
cG1EYXRhRHVtcGVyIHsKIAogICB+QXBtRGF0YUR1bXBlcigpOwogCisgIC8vIEFjdGl2YXRlcyBv
ciBkZWFjdGl2YXRlIHRoZSBkdW1waW5nIGZ1bmN0aW9uYWxpdHkuCisgIHN0YXRpYyB2b2lkIFNl
dEFjdGl2YXRlZChib29sIGFjdGl2YXRlZCkgeworI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9
PSAxCisgICAgcmVjb3JkaW5nX2FjdGl2YXRlZF8gPSBhY3RpdmF0ZWQ7CisjZW5kaWYKKyAgfQor
CisgIC8vIFNldCBhbiBvcHRpb25hbCBvdXRwdXQgZGlyZWN0b3J5LgorICBzdGF0aWMgdm9pZCBT
ZXRPdXRwdXREaXJlY3RvcnkoY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9kaXIpIHsKKyNpZiBX
RUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQorICAgIFJUQ19DSEVDS19MVChvdXRwdXRfZGlyLnNp
emUoKSwga091dHB1dERpck1heExlbmd0aCk7CisgICAgc3RybmNweShvdXRwdXRfZGlyXywgb3V0
cHV0X2Rpci5jX3N0cigpLCBvdXRwdXRfZGlyLnNpemUoKSk7CisjZW5kaWYKKyAgfQorCiAgIC8v
IFJlaW5pdGlhbGl6ZXMgdGhlIGRhdGEgZHVtcGluZyBzdWNoIHRoYXQgbmV3IHZlcnNpb25zCiAg
IC8vIG9mIGFsbCBmaWxlcyBiZWluZyBkdW1wZWQgdG8gYXJlIGNyZWF0ZWQuCiAgIHZvaWQgSW5p
dGlhdGVOZXdTZXRPZlJlY29yZGluZ3MoKSB7CkBAIC01OSwxMTUgKzgwLDE1NSBAQCBjbGFzcyBB
cG1EYXRhRHVtcGVyIHsKICAgLy8gdmFyaW91cyBmb3JtYXRzLgogICB2b2lkIER1bXBSYXcoY29u
c3QgY2hhciogbmFtZSwgZG91YmxlIHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0g
MQotICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOwotICAgIGZ3cml0ZSgmdiwgc2l6
ZW9mKHYpLCAxLCBmaWxlKTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAg
IEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOworICAgICAgZndyaXRlKCZ2LCBzaXplb2Yo
diksIDEsIGZpbGUpOworICAgIH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0
IGNoYXIqIG5hbWUsIHNpemVfdCB2X2xlbmd0aCwgY29uc3QgZG91YmxlKiB2KSB7CiAjaWYgV0VC
UlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1l
KTsKLSAgICBmd3JpdGUodiwgc2l6ZW9mKHZbMF0pLCB2X2xlbmd0aCwgZmlsZSk7CisgICAgaWYg
KHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShu
YW1lKTsKKyAgICAgIGZ3cml0ZSh2LCBzaXplb2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAg
ICB9CiAjZW5kaWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBydGM6
OkFycmF5Vmlldzxjb25zdCBkb3VibGU+IHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAg
PT0gMQotICAgIER1bXBSYXcobmFtZSwgdi5zaXplKCksIHYuZGF0YSgpKTsKKyAgICBpZiAocmVj
b3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIER1bXBSYXcobmFtZSwgdi5zaXplKCksIHYuZGF0
YSgpKTsKKyAgICB9CiAjZW5kaWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBu
YW1lLCBmbG9hdCB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBGSUxF
KiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKLSAgICBmd3JpdGUoJnYsIHNpemVvZih2KSwgMSwg
ZmlsZSk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxl
ID0gR2V0UmF3RmlsZShuYW1lKTsKKyAgICAgIGZ3cml0ZSgmdiwgc2l6ZW9mKHYpLCAxLCBmaWxl
KTsKKyAgICB9CiAjZW5kaWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1l
LCBzaXplX3Qgdl9sZW5ndGgsIGNvbnN0IGZsb2F0KiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJV
R19EVU1QID09IDEKLSAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKLSAgICBmd3Jp
dGUodiwgc2l6ZW9mKHZbMF0pLCB2X2xlbmd0aCwgZmlsZSk7CisgICAgaWYgKHJlY29yZGluZ19h
Y3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKKyAgICAg
IGZ3cml0ZSh2LCBzaXplb2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICB9CiAjZW5kaWYK
ICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBydGM6OkFycmF5Vmlldzxj
b25zdCBmbG9hdD4gdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRHVt
cFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZh
dGVkXykgeworICAgICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAgIH0K
ICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdikg
ewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRHVtcFJhdyhuYW1lLCBzdGF0
aWNfY2FzdDxpbnQxNl90Pih2KSk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7Cisg
ICAgICBEdW1wUmF3KG5hbWUsIHN0YXRpY19jYXN0PGludDE2X3Q+KHYpKTsKKyAgICB9CiAjZW5k
aWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBzaXplX3Qgdl9sZW5n
dGgsIGNvbnN0IGJvb2wqIHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAg
IEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOwotICAgIGZvciAoc2l6ZV90IGsgPSAwOyBr
IDwgdl9sZW5ndGg7ICsraykgewotICAgICAgaW50MTZfdCB2YWx1ZSA9IHN0YXRpY19jYXN0PGlu
dDE2X3Q+KHZba10pOwotICAgICAgZndyaXRlKCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgMSwgZmls
ZSk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxlID0g
R2V0UmF3RmlsZShuYW1lKTsKKyAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgdl9sZW5ndGg7
ICsraykgeworICAgICAgICBpbnQxNl90IHZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4odltr
XSk7CisgICAgICAgIGZ3cml0ZSgmdmFsdWUsIHNpemVvZih2YWx1ZSksIDEsIGZpbGUpOworICAg
ICAgfQogICAgIH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5h
bWUsIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGJvb2w+IHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVH
X0RVTVAgPT0gMQotICAgIER1bXBSYXcobmFtZSwgdi5zaXplKCksIHYuZGF0YSgpKTsKKyAgICBp
ZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIER1bXBSYXcobmFtZSwgdi5zaXplKCks
IHYuZGF0YSgpKTsKKyAgICB9CiAjZW5kaWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBj
aGFyKiBuYW1lLCBpbnQxNl90IHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQot
ICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOwotICAgIGZ3cml0ZSgmdiwgc2l6ZW9m
KHYpLCAxLCBmaWxlKTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIEZJ
TEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOworICAgICAgZndyaXRlKCZ2LCBzaXplb2Yodiks
IDEsIGZpbGUpOworICAgIH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNo
YXIqIG5hbWUsIHNpemVfdCB2X2xlbmd0aCwgY29uc3QgaW50MTZfdCogdikgewogI2lmIFdFQlJU
Q19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7
Ci0gICAgZndyaXRlKHYsIHNpemVvZih2WzBdKSwgdl9sZW5ndGgsIGZpbGUpOworICAgIGlmIChy
ZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFt
ZSk7CisgICAgICBmd3JpdGUodiwgc2l6ZW9mKHZbMF0pLCB2X2xlbmd0aCwgZmlsZSk7CisgICAg
fQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFtZSwgcnRjOjpB
cnJheVZpZXc8Y29uc3QgaW50MTZfdD4gdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9
PSAxCi0gICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAgIGlmIChyZWNv
cmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRh
KCkpOworICAgIH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5h
bWUsIGludDMyX3QgdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRklM
RSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7Ci0gICAgZndyaXRlKCZ2LCBzaXplb2YodiksIDEs
IGZpbGUpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRklMRSogZmls
ZSA9IEdldFJhd0ZpbGUobmFtZSk7CisgICAgICBmd3JpdGUoJnYsIHNpemVvZih2KSwgMSwgZmls
ZSk7CisgICAgfQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFt
ZSwgc2l6ZV90IHZfbGVuZ3RoLCBjb25zdCBpbnQzMl90KiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9E
RUJVR19EVU1QID09IDEKLSAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKLSAgICBm
d3JpdGUodiwgc2l6ZW9mKHZbMF0pLCB2X2xlbmd0aCwgZmlsZSk7CisgICAgaWYgKHJlY29yZGlu
Z19hY3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKKyAg
ICAgIGZ3cml0ZSh2LCBzaXplb2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICB9CiAjZW5k
aWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBzaXplX3Qgdikgewog
I2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRklMRSogZmlsZSA9IEdldFJhd0Zp
bGUobmFtZSk7Ci0gICAgZndyaXRlKCZ2LCBzaXplb2YodiksIDEsIGZpbGUpOworICAgIGlmIChy
ZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFt
ZSk7CisgICAgICBmd3JpdGUoJnYsIHNpemVvZih2KSwgMSwgZmlsZSk7CisgICAgfQogI2VuZGlm
CiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFtZSwgc2l6ZV90IHZfbGVuZ3Ro
LCBjb25zdCBzaXplX3QqIHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAg
IEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOwotICAgIGZ3cml0ZSh2LCBzaXplb2Yodlsw
XSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAg
ICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOworICAgICAgZndyaXRlKHYsIHNpemVv
Zih2WzBdKSwgdl9sZW5ndGgsIGZpbGUpOworICAgIH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBE
dW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGludDMyX3Q+IHYp
IHsKKyNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQorICAgIGlmIChyZWNvcmRpbmdfYWN0
aXZhdGVkXykgeworICAgICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAg
IH0KKyNlbmRpZgorICB9CisKKyAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IHNpemVfdD4gdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9
PSAxCiAgICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOwogI2VuZGlmCkBAIC0x
NzksOCArMjQwLDEwIEBAIGNsYXNzIEFwbURhdGFEdW1wZXIgewogICAgICAgICAgICAgICAgaW50
IHNhbXBsZV9yYXRlX2h6LAogICAgICAgICAgICAgICAgaW50IG51bV9jaGFubmVscykgewogI2lm
IFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgV2F2V3JpdGVyKiBmaWxlID0gR2V0V2F2
RmlsZShuYW1lLCBzYW1wbGVfcmF0ZV9oeiwgbnVtX2NoYW5uZWxzKTsKLSAgICBmaWxlLT5Xcml0
ZVNhbXBsZXModiwgdl9sZW5ndGgpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgewor
ICAgICAgV2F2V3JpdGVyKiBmaWxlID0gR2V0V2F2RmlsZShuYW1lLCBzYW1wbGVfcmF0ZV9oeiwg
bnVtX2NoYW5uZWxzKTsKKyAgICAgIGZpbGUtPldyaXRlU2FtcGxlcyh2LCB2X2xlbmd0aCk7Cisg
ICAgfQogI2VuZGlmCiAgIH0KIApAQCAtMTg5LDEyICsyNTIsMTcgQEAgY2xhc3MgQXBtRGF0YUR1
bXBlciB7CiAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHosCiAgICAgICAgICAgICAg
ICBpbnQgbnVtX2NoYW5uZWxzKSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAg
ICBEdW1wV2F2KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSwgc2FtcGxlX3JhdGVfaHosIG51bV9j
aGFubmVscyk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBEdW1wV2F2
KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSwgc2FtcGxlX3JhdGVfaHosIG51bV9jaGFubmVscyk7
CisgICAgfQogI2VuZGlmCiAgIH0KIAogIHByaXZhdGU6CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19E
VU1QID09IDEKKyAgc3RhdGljIGJvb2wgcmVjb3JkaW5nX2FjdGl2YXRlZF87CisgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IGtPdXRwdXREaXJNYXhMZW5ndGggPSAxMDI0OworICBzdGF0aWMgY2hh
ciBvdXRwdXRfZGlyX1trT3V0cHV0RGlyTWF4TGVuZ3RoXTsKICAgY29uc3QgaW50IGluc3RhbmNl
X2luZGV4XzsKICAgaW50IHJlY29yZGluZ19zZXRfaW5kZXhfID0gMDsKICAgc3RkOjp1bm9yZGVy
ZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RklMRSwgUmF3RmlsZUNsb3NlRnVu
Y3Rvcj4+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG93X2N1dF9maWx0ZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvbG93X2N1dF9maWx0ZXIuY2MKaW5kZXggNTI0NWM2OGQwMmE0MTllNmY2NTYwNTUwZTZlYmQw
OWRlMWZmZGJiNC4uNTgxZDZiYzQyYTg4MDMwZjZhZjIwMDcxMzE4ZGFkOWFkNzY4MDdhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2xvd19jdXRfZmlsdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb3df
Y3V0X2ZpbHRlci5jYwpAQCAtMTAsOCArMTAsMTMgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9sb3dfY3V0X2ZpbHRlci5oIgogCisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8Y3N0cmluZz4KKwogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJvY2Vz
c2luZy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNzaW5nX2xpYnJhcnkuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3Npbmcvbm9pc2Vfc3VwcHJlc3Npb25faW1wbC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9u
b2lzZV9zdXBwcmVzc2lvbl9pbXBsLmNjCmluZGV4IDE1ZDQwNDMyM2MzNmY4OGVmZjFmMTYxOGUw
NDIxYTBmNjVhYWMxY2YuLmQ4ZDllMzIzNDBiMWNjZjEyZWVhN2Y3Y2NiZDM1NzVmMTQyZGRkMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ub2lzZV9zdXBwcmVzc2lvbl9pbXBsLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9ub2lzZV9zdXBwcmVzc2lvbl9pbXBsLmNjCkBAIC0xMSw5ICsxMSwxMSBAQAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ub2lzZV9zdXBwcmVzc2lvbl9pbXBsLmgi
CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0
b3JtYWdpYy5oIgogI2lmIGRlZmluZWQoV0VCUlRDX05TX0ZMT0FUKQogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9ucy9ub2lzZV9zdXBwcmVzc2lvbi5oIgorCiAjZGVmaW5lIE5T
X0NSRUFURSBXZWJSdGNOc19DcmVhdGUKICNkZWZpbmUgTlNfRlJFRSBXZWJSdGNOc19GcmVlCiAj
ZGVmaW5lIE5TX0lOSVQgV2ViUnRjTnNfSW5pdApAQCAtMjEsNiArMjMsNyBAQAogdHlwZWRlZiBO
c0hhbmRsZSBOc1N0YXRlOwogI2VsaWYgZGVmaW5lZChXRUJSVENfTlNfRklYRUQpCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL25zL25vaXNlX3N1cHByZXNzaW9uX3guaCIKKwog
I2RlZmluZSBOU19DUkVBVEUgV2ViUnRjTnN4X0NyZWF0ZQogI2RlZmluZSBOU19GUkVFIFdlYlJ0
Y05zeF9GcmVlCiAjZGVmaW5lIE5TX0lOSVQgV2ViUnRjTnN4X0luaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9yZXNpZHVhbF9lY2hvX2RldGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Jlc2lkdWFsX2Vj
aG9fZGV0ZWN0b3IuY2MKaW5kZXggZTgwNTAxMzU4ZWFhYWZlMjQxMTE4YzdjYmZiYzgyNDhmOWQ0
NjZlMS4uMzQ1NDIxNGZkNzM5ZDZkZDM2ZjBhYWZjMGI4ZjI1MDNhZDViYTlhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3Jlc2lkdWFsX2VjaG9fZGV0ZWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Jl
c2lkdWFsX2VjaG9fZGV0ZWN0b3IuY2MKQEAgLTEzLDkgKzEzLDExIEBACiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgogI2luY2x1ZGUgPG51bWVyaWM+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlv
bmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1
bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJz
eXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9ybXNfbGV2ZWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ybXNfbGV2ZWwuaAppbmRleCA5YWE1NDlhNTdjMWUz
MzZhNGVjNmQ3OTM0MzdlM2JmYWYzZWI0ODcwLi5lNmI1ODQ5ZWFkOGJkZTg4ZGNjMmY3MTdjMzA2
YjZiMjBiMjY2ZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvcm1zX2xldmVsLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL3Jtc19sZXZlbC5oCkBAIC0xMSw2ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19STVNfTEVWRUxfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX1JNU19MRVZFTF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50
Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2Fy
cmF5X3ZpZXcuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvYXVkaW9fcHJvY2Vzc2lu
Z19zaW11bGF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRpb19wcm9jZXNzaW5nX3NpbXVsYXRv
ci5jYwppbmRleCA2NWYzYzg3NDk3Yzg1Y2RhNjM1YTRmMjZlODY4MDZjNTAwNGVjOGYzLi5kZjlm
NDk3NmJlMjdkMGFlMDNjODA1M2IwMDUyY2QwZGJlMzdlY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdGVzdC9hdWRpb19wcm9jZXNzaW5nX3NpbXVsYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVz
dC9hdWRpb19wcm9jZXNzaW5nX3NpbXVsYXRvci5jYwpAQCAtMTgsMTIgKzE4LDE0IEBACiAjaW5j
bHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVk
ZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbi5oIgogI2luY2x1ZGUgImFw
aS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRp
by9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjX2R1bXAvYWVjX2R1bXBfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlvbl9pbXBsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfaW1wbC5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9mYWtlX3JlY29yZGluZ19k
ZXZpY2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCkBAIC0zNCw2MDMgKzM2LDMyIEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5h
bWVzcGFjZSB0ZXN0IHsKIG5hbWVzcGFjZSB7Ci0KLS8vIFByaW50cyBvdXQgdGhlIGN1cnJlbnRs
eSB1c2VkIEFFQzMgcGFyYW1ldGVyIHZhbHVlcyBpbiBKU09OIGZvcm1hdC4KLXZvaWQgUHJpbnRB
ZWMzUGFyYW1ldGVyVmFsdWVzKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjZmcpIHsKLSAg
c3RkOjpjb3V0IDw8ICJ7IjsKLSAgc3RkOjpjb3V0IDw8ICJcImRlbGF5XCI6IHsiOwotICBzdGQ6
OmNvdXQgPDwgIlwiZGVmYXVsdF9kZWxheVwiOiAiIDw8IGNmZy5kZWxheS5kZWZhdWx0X2RlbGF5
IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImRvd25fc2FtcGxpbmdfZmFjdG9yXCI6ICIgPDwg
Y2ZnLmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9yCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJudW1fZmlsdGVyc1wiOiAiIDw8IGNmZy5kZWxheS5udW1fZmlsdGVycyA8
PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJhcGlfY2FsbF9qaXR0ZXJfYmxvY2tzXCI6ICIKLSAg
ICAgICAgICAgIDw8IGNmZy5kZWxheS5hcGlfY2FsbF9qaXR0ZXJfYmxvY2tzIDw8ICIsIjsKLSAg
c3RkOjpjb3V0IDw8ICJcIm1pbl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tzXCI6ICIKLSAgICAgICAg
ICAgIDw8IGNmZy5kZWxheS5taW5fZWNob19wYXRoX2RlbGF5X2Jsb2NrcyA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJkZWxheV9oZWFkcm9vbV9ibG9ja3NcIjogIiA8PCBjZmcuZGVsYXkuZGVs
YXlfaGVhZHJvb21fYmxvY2tzCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAi
XCJoeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5kZWxh
eS5oeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImh5
c3RlcmVzaXNfbGltaXRfMl9ibG9ja3NcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmRlbGF5Lmh5
c3RlcmVzaXNfbGltaXRfMl9ibG9ja3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwic2tld19o
eXN0ZXJlc2lzX2Jsb2Nrc1wiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZGVsYXkuc2tld19oeXN0
ZXJlc2lzX2Jsb2NrcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJmaXhlZF9jYXB0dXJlX2Rl
bGF5X3NhbXBsZXNcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmRlbGF5LmZpeGVkX2NhcHR1cmVf
ZGVsYXlfc2FtcGxlcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJkZWxheV9lc3RpbWF0ZV9z
bW9vdGhpbmdcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmRlbGF5LmRlbGF5X2VzdGltYXRlX3Nt
b290aGluZyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJkZWxheV9jYW5kaWRhdGVfZGV0ZWN0
aW9uX3RocmVzaG9sZFwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZGVsYXkuZGVsYXlfY2FuZGlk
YXRlX2RldGVjdGlvbl90aHJlc2hvbGQgPDwgIiwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJkZWxh
eV9zZWxlY3Rpb25fdGhyZXNob2xkc1wiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcImluaXRpYWxc
IjogIiA8PCBjZmcuZGVsYXkuZGVsYXlfc2VsZWN0aW9uX3RocmVzaG9sZHMuaW5pdGlhbAotICAg
ICAgICAgICAgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiY29udmVyZ2VkXCI6ICIKLSAgICAg
ICAgICAgIDw8IGNmZy5kZWxheS5kZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcy5jb252ZXJnZWQ7
Ci0gIHN0ZDo6Y291dCA8PCAifSI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0KLSAgc3RkOjpj
b3V0IDw8ICJcImZpbHRlclwiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1haW5cIjogWyI7Ci0g
IHN0ZDo6Y291dCA8PCBjZmcuZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2NrcyA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCBjZmcuZmlsdGVyLm1haW4ubGVha2FnZV9jb252ZXJnZWQgPDwgIiwiOwotICBz
dGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5tYWluLmxlYWthZ2VfZGl2ZXJnZWQgPDwgIiwiOwotICBz
dGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5tYWluLmVycm9yX2Zsb29yIDw8ICIsIjsKLSAgc3RkOjpj
b3V0IDw8IGNmZy5maWx0ZXIubWFpbi5ub2lzZV9nYXRlOwotICBzdGQ6OmNvdXQgPDwgIl0sIjsK
LQotICBzdGQ6OmNvdXQgPDwgIlwic2hhZG93XCI6IFsiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZp
bHRlci5zaGFkb3cubGVuZ3RoX2Jsb2NrcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuZmls
dGVyLnNoYWRvdy5yYXRlIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIuc2hhZG93
Lm5vaXNlX2dhdGU7Ci0gIHN0ZDo6Y291dCA8PCAiXSwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJt
YWluX2luaXRpYWxcIjogWyI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuZmlsdGVyLm1haW5faW5pdGlh
bC5sZW5ndGhfYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIubWFpbl9p
bml0aWFsLmxlYWthZ2VfY29udmVyZ2VkIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5maWx0
ZXIubWFpbl9pbml0aWFsLmxlYWthZ2VfZGl2ZXJnZWQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwg
Y2ZnLmZpbHRlci5tYWluX2luaXRpYWwuZXJyb3JfZmxvb3IgPDwgIiwiOwotICBzdGQ6OmNvdXQg
PDwgY2ZnLmZpbHRlci5tYWluX2luaXRpYWwubm9pc2VfZ2F0ZTsKLSAgc3RkOjpjb3V0IDw8ICJd
LCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcInNoYWRvd19pbml0aWFsXCI6IFsiOwotICBzdGQ6OmNv
dXQgPDwgY2ZnLmZpbHRlci5zaGFkb3dfaW5pdGlhbC5sZW5ndGhfYmxvY2tzIDw8ICIsIjsKLSAg
c3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIuc2hhZG93X2luaXRpYWwucmF0ZSA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCBjZmcuZmlsdGVyLnNoYWRvd19pbml0aWFsLm5vaXNlX2dhdGU7Ci0gIHN0ZDo6
Y291dCA8PCAiXSwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJjb25maWdfY2hhbmdlX2R1cmF0aW9u
X2Jsb2Nrc1wiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZmlsdGVyLmNvbmZpZ19jaGFuZ2VfZHVy
YXRpb25fYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImluaXRpYWxfc3RhdGVfc2Vj
b25kc1wiOiAiIDw8IGNmZy5maWx0ZXIuaW5pdGlhbF9zdGF0ZV9zZWNvbmRzCi0gICAgICAgICAg
ICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJjb25zZXJ2YXRpdmVfaW5pdGlhbF9waGFzZVwi
OiAiCi0gICAgICAgICAgICA8PCAoY2ZnLmZpbHRlci5jb25zZXJ2YXRpdmVfaW5pdGlhbF9waGFz
ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8
PCAiXCJlbmFibGVfc2hhZG93X2ZpbHRlcl9vdXRwdXRfdXNhZ2VcIjogIgotICAgICAgICAgICAg
PDwgKGNmZy5maWx0ZXIuZW5hYmxlX3NoYWRvd19maWx0ZXJfb3V0cHV0X3VzYWdlID8gInRydWUi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAiZmFsc2UiKTsKLQotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQg
PDwgIlwiZXJsZVwiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1pblwiOiAiIDw8IGNmZy5lcmxl
Lm1pbiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJtYXhfbFwiOiAiIDw8IGNmZy5lcmxlLm1h
eF9sIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1heF9oXCI6ICIgPDwgY2ZnLmVybGUubWF4
X2ggPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwib25zZXRfZGV0ZWN0aW9uXCI6ICIKLSAgICAg
ICAgICAgIDw8IChjZmcuZXJsZS5vbnNldF9kZXRlY3Rpb24gPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
LSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcImVwX3N0cmVuZ3RoXCI6
IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibGZcIjogIiA8PCBjZmcuZXBfc3RyZW5ndGgubGYgPDwg
IiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibWZcIjogIiA8PCBjZmcuZXBfc3RyZW5ndGgubWYgPDwg
IiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiaGZcIjogIiA8PCBjZmcuZXBfc3RyZW5ndGguaGYgPDwg
IiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZGVmYXVsdF9sZW5cIjogIiA8PCBjZmcuZXBfc3RyZW5n
dGguZGVmYXVsdF9sZW4gPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwicmV2ZXJiX2Jhc2VkX29u
X3JlbmRlclwiOiAiCi0gICAgICAgICAgICA8PCAoY2ZnLmVwX3N0cmVuZ3RoLnJldmVyYl9iYXNl
ZF9vbl9yZW5kZXIgPyAidHJ1ZSIgOiAiZmFsc2UiKQotICAgICAgICAgICAgPDwgIiwiOwotICBz
dGQ6OmNvdXQgPDwgIlwiZWNob19jYW5fc2F0dXJhdGVcIjogIgotICAgICAgICAgICAgPDwgKGNm
Zy5lcF9zdHJlbmd0aC5lY2hvX2Nhbl9zYXR1cmF0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8ICIs
IjsKLSAgc3RkOjpjb3V0IDw8ICJcImJvdW5kZWRfZXJsXCI6ICIKLSAgICAgICAgICAgIDw8IChj
ZmcuZXBfc3RyZW5ndGguYm91bmRlZF9lcmwgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLQotICBzdGQ6
OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwiZ2Fpbl9tYXNrXCI6IHsiOwotICBz
dGQ6OmNvdXQgPDwgIlwibTBcIjogIiA8PCBjZmcuZ2Fpbl9tYXNrLm0wIDw8ICIsIjsKLSAgc3Rk
Ojpjb3V0IDw8ICJcIm0xXCI6ICIgPDwgY2ZnLmdhaW5fbWFzay5tMSA8PCAiLCI7Ci0gIHN0ZDo6
Y291dCA8PCAiXCJtMlwiOiAiIDw8IGNmZy5nYWluX21hc2subTIgPDwgIiwiOwotICBzdGQ6OmNv
dXQgPDwgIlwibTNcIjogIiA8PCBjZmcuZ2Fpbl9tYXNrLm0zIDw8ICIsIjsKLSAgc3RkOjpjb3V0
IDw8ICJcIm01XCI6ICIgPDwgY2ZnLmdhaW5fbWFzay5tNSA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8
PCAiXCJtNlwiOiAiIDw8IGNmZy5nYWluX21hc2subTYgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwg
IlwibTdcIjogIiA8PCBjZmcuZ2Fpbl9tYXNrLm03IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJc
Im04XCI6ICIgPDwgY2ZnLmdhaW5fbWFzay5tOCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJt
OVwiOiAiIDw8IGNmZy5nYWluX21hc2subTkgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZ2Fp
bl9jdXJ2ZV9vZmZzZXRcIjogIiA8PCBjZmcuZ2Fpbl9tYXNrLmdhaW5fY3VydmVfb2Zmc2V0Ci0g
ICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJnYWluX2N1cnZlX3Nsb3BlXCI6
ICIgPDwgY2ZnLmdhaW5fbWFzay5nYWluX2N1cnZlX3Nsb3BlCi0gICAgICAgICAgICA8PCAiLCI7
Ci0gIHN0ZDo6Y291dCA8PCAiXCJ0ZW1wb3JhbF9tYXNraW5nX2xmXCI6ICIgPDwgY2ZnLmdhaW5f
bWFzay50ZW1wb3JhbF9tYXNraW5nX2xmCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291
dCA8PCAiXCJ0ZW1wb3JhbF9tYXNraW5nX2hmXCI6ICIgPDwgY2ZnLmdhaW5fbWFzay50ZW1wb3Jh
bF9tYXNraW5nX2hmCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJ0ZW1w
b3JhbF9tYXNraW5nX2xmX2JhbmRzXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5nYWluX21hc2su
dGVtcG9yYWxfbWFza2luZ19sZl9iYW5kczsKLSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0KLSAgc3Rk
Ojpjb3V0IDw8ICJcImVjaG9fYXVkaWJpbGl0eVwiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcImxv
d19yZW5kZXJfbGltaXRcIjogIiA8PCBjZmcuZWNob19hdWRpYmlsaXR5Lmxvd19yZW5kZXJfbGlt
aXQKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm5vcm1hbF9yZW5kZXJf
bGltaXRcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmVjaG9fYXVkaWJpbGl0eS5ub3JtYWxfcmVu
ZGVyX2xpbWl0IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImZsb29yX3Bvd2VyXCI6ICIgPDwg
Y2ZnLmVjaG9fYXVkaWJpbGl0eS5mbG9vcl9wb3dlciA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAi
XCJhdWRpYmlsaXR5X3RocmVzaG9sZF9sZlwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZWNob19h
dWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhyZXNob2xkX2xmIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8
ICJcImF1ZGliaWxpdHlfdGhyZXNob2xkX21mXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5lY2hv
X2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfbWYgPDwgIiwiOwotICBzdGQ6OmNvdXQg
PDwgIlwiYXVkaWJpbGl0eV90aHJlc2hvbGRfaGZcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmVj
aG9fYXVkaWJpbGl0eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9oZiA8PCAiLCI7Ci0gIHN0ZDo6Y291
dCA8PCAiXCJ1c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVzXCI6ICIKLSAgICAgICAgICAgIDw8IChj
ZmcuZWNob19hdWRpYmlsaXR5LnVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXMgPyAidHJ1ZSIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAiZmFsc2UiKQotICAgICAgICAgICAgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwidXNl
X3N0YXRpb25hcml0eV9wcm9wZXJ0aWVzX2F0X2luaXRcIjogIgotICAgICAgICAgICAgPDwgKGNm
Zy5lY2hvX2F1ZGliaWxpdHkudXNlX3N0YXRpb25hcml0eV9wcm9wZXJ0aWVzX2F0X2luaXQKLSAg
ICAgICAgICAgICAgICAgICAgPyAidHJ1ZSIKLSAgICAgICAgICAgICAgICAgICAgOiAiZmFsc2Ui
KTsKLSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcInJlbmRlcl9sZXZl
bHNcIjogeyI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJhY3RpdmVfcmVuZGVyX2xpbWl0XCI6ICIKLSAg
ICAgICAgICAgIDw8IGNmZy5yZW5kZXJfbGV2ZWxzLmFjdGl2ZV9yZW5kZXJfbGltaXQgPDwgIiwi
OwotICBzdGQ6OmNvdXQgPDwgIlwicG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdFwiOiAiCi0g
ICAgICAgICAgICA8PCBjZmcucmVuZGVyX2xldmVscy5wb29yX2V4Y2l0YXRpb25fcmVuZGVyX2xp
bWl0IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcInBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGlt
aXRfZHM4XCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5yZW5kZXJfbGV2ZWxzLnBvb3JfZXhjaXRh
dGlvbl9yZW5kZXJfbGltaXRfZHM4OwotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNv
dXQgPDwgIlwiZWNob19yZW1vdmFsX2NvbnRyb2xcIjogeyI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJn
YWluX3JhbXB1cFwiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcImluaXRpYWxfZ2FpblwiOiAiCi0g
ICAgICAgICAgICA8PCBjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuaW5pdGlh
bF9nYWluIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImZpcnN0X25vbl96ZXJvX2dhaW5cIjog
IgotICAgICAgICAgICAgPDwgY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmZp
cnN0X25vbl96ZXJvX2dhaW4gPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibm9uX3plcm9fZ2Fp
bl9ibG9ja3NcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdh
aW5fcmFtcHVwLm5vbl96ZXJvX2dhaW5fYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJc
ImZ1bGxfZ2Fpbl9ibG9ja3NcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmVjaG9fcmVtb3ZhbF9j
b250cm9sLmdhaW5fcmFtcHVwLmZ1bGxfZ2Fpbl9ibG9ja3M7Ci0gIHN0ZDo6Y291dCA8PCAifSwi
OwotICBzdGQ6OmNvdXQgPDwgIlwiaGFzX2Nsb2NrX2RyaWZ0XCI6ICIKLSAgICAgICAgICAgIDw8
IChjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuaGFzX2Nsb2NrX2RyaWZ0ID8gInRydWUiIDogImZh
bHNlIikKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImxpbmVhcl9hbmRf
c3RhYmxlX2VjaG9fcGF0aFwiOiAiCi0gICAgICAgICAgICA8PCAoY2ZnLmVjaG9fcmVtb3ZhbF9j
b250cm9sLmxpbmVhcl9hbmRfc3RhYmxlX2VjaG9fcGF0aCA/ICJ0cnVlIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAiZmFsc2UiKTsKLQotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwi
ZWNob19tb2RlbFwiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcIm5vaXNlX2Zsb29yX2hvbGRcIjog
IiA8PCBjZmcuZWNob19tb2RlbC5ub2lzZV9mbG9vcl9ob2xkCi0gICAgICAgICAgICA8PCAiLCI7
Ci0gIHN0ZDo6Y291dCA8PCAiXCJtaW5fbm9pc2VfZmxvb3JfcG93ZXJcIjogIgotICAgICAgICAg
ICAgPDwgY2ZnLmVjaG9fbW9kZWwubWluX25vaXNlX2Zsb29yX3Bvd2VyIDw8ICIsIjsKLSAgc3Rk
Ojpjb3V0IDw8ICJcInN0YXRpb25hcnlfZ2F0ZV9zbG9wZVwiOiAiCi0gICAgICAgICAgICA8PCBj
ZmcuZWNob19tb2RlbC5zdGF0aW9uYXJ5X2dhdGVfc2xvcGUgPDwgIiwiOwotICBzdGQ6OmNvdXQg
PDwgIlwibm9pc2VfZ2F0ZV9wb3dlclwiOiAiIDw8IGNmZy5lY2hvX21vZGVsLm5vaXNlX2dhdGVf
cG93ZXIKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm5vaXNlX2dhdGVf
c2xvcGVcIjogIiA8PCBjZmcuZWNob19tb2RlbC5ub2lzZV9nYXRlX3Nsb3BlCi0gICAgICAgICAg
ICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJyZW5kZXJfcHJlX3dpbmRvd19zaXplXCI6ICIK
LSAgICAgICAgICAgIDw8IGNmZy5lY2hvX21vZGVsLnJlbmRlcl9wcmVfd2luZG93X3NpemUgPDwg
IiwiOwotICBzdGQ6OmNvdXQgPDwgIlwicmVuZGVyX3Bvc3Rfd2luZG93X3NpemVcIjogIgotICAg
ICAgICAgICAgPDwgY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemUgPDwgIiwi
OwotICBzdGQ6OmNvdXQgPDwgIlwicmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0XCI6ICIKLSAg
ICAgICAgICAgIDw8IGNmZy5lY2hvX21vZGVsLnJlbmRlcl9wcmVfd2luZG93X3NpemVfaW5pdCA8
PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJyZW5kZXJfcG9zdF93aW5kb3dfc2l6ZV9pbml0XCI6
ICIKLSAgICAgICAgICAgIDw8IGNmZy5lY2hvX21vZGVsLnJlbmRlcl9wb3N0X3dpbmRvd19zaXpl
X2luaXQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibm9ubGluZWFyX2hvbGRcIjogIiA8PCBj
ZmcuZWNob19tb2RlbC5ub25saW5lYXJfaG9sZCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJu
b25saW5lYXJfcmVsZWFzZVwiOiAiIDw8IGNmZy5lY2hvX21vZGVsLm5vbmxpbmVhcl9yZWxlYXNl
OwotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwic3VwcHJlc3Nvclwi
OiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcIm5lYXJlbmRfYXZlcmFnZV9ibG9ja3NcIjogIgotICAg
ICAgICAgICAgPDwgY2ZnLnN1cHByZXNzb3IubmVhcmVuZF9hdmVyYWdlX2Jsb2NrcyA8PCAiLCI7
Ci0gIHN0ZDo6Y291dCA8PCAiXCJub3JtYWxfdHVuaW5nXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwg
IlwibWFza19sZlwiOiBbIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5zdXBwcmVzc29yLm5vcm1hbF90
dW5pbmcubWFza19sZi5lbnJfdHJhbnNwYXJlbnQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2Zn
LnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2xmLmVucl9zdXBwcmVzcyA8PCAiLCI7Ci0g
IHN0ZDo6Y291dCA8PCBjZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfbGYuZW1yX3Ry
YW5zcGFyZW50OwotICBzdGQ6OmNvdXQgPDwgIl0sIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1hc2tf
aGZcIjogWyI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1h
c2tfaGYuZW5yX3RyYW5zcGFyZW50IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5zdXBwcmVz
c29yLm5vcm1hbF90dW5pbmcubWFza19oZi5lbnJfc3VwcHJlc3MgPDwgIiwiOwotICBzdGQ6OmNv
dXQgPDwgY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2hmLmVtcl90cmFuc3BhcmVu
dDsKLSAgc3RkOjpjb3V0IDw8ICJdLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJtYXhfaW5jX2ZhY3Rv
clwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1heF9p
bmNfZmFjdG9yIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1heF9kZWNfZmFjdG9yX2xmXCI6
ICIKLSAgICAgICAgICAgIDw8IGNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWF4X2RlY19m
YWN0b3JfbGY7Ci0gIHN0ZDo6Y291dCA8PCAifSwiOwotICBzdGQ6OmNvdXQgPDwgIlwibmVhcmVu
ZF90dW5pbmdcIjogeyI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJtYXNrX2xmXCI6IFsiOwotICBzdGQ6
OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZi5lbnJfdHJhbnNw
YXJlbnQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5p
bmcubWFza19sZi5lbnJfc3VwcHJlc3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHBy
ZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZi5lbXJfdHJhbnNwYXJlbnQ7Ci0gIHN0ZDo6Y291
dCA8PCAiXSwiOwotICBzdGQ6OmNvdXQgPDwgIlwibWFza19oZlwiOiBbIjsKLSAgc3RkOjpjb3V0
IDw8IGNmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfaGYuZW5yX3RyYW5zcGFyZW50
IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1h
c2tfaGYuZW5yX3N1cHByZXNzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5zdXBwcmVzc29y
Lm5lYXJlbmRfdHVuaW5nLm1hc2tfaGYuZW1yX3RyYW5zcGFyZW50OwotICBzdGQ6OmNvdXQgPDwg
Il0sIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1heF9pbmNfZmFjdG9yXCI6ICIKLSAgICAgICAgICAg
IDw8IGNmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1heF9pbmNfZmFjdG9yIDw8ICIsIjsK
LSAgc3RkOjpjb3V0IDw8ICJcIm1heF9kZWNfZmFjdG9yX2xmXCI6ICIKLSAgICAgICAgICAgIDw8
IGNmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1heF9kZWNfZmFjdG9yX2xmOwotICBzdGQ6
OmNvdXQgPDwgIn0sIjsKLSAgc3RkOjpjb3V0IDw8ICJcImRvbWluYW50X25lYXJlbmRfZGV0ZWN0
aW9uXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwiZW5yX3RocmVzaG9sZFwiOiAiCi0gICAgICAg
ICAgICA8PCBjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5lbnJfdGhy
ZXNob2xkIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcInNucl90aHJlc2hvbGRcIjogIgotICAg
ICAgICAgICAgPDwgY2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uc25y
X3RocmVzaG9sZCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJob2xkX2R1cmF0aW9uXCI6ICIK
LSAgICAgICAgICAgIDw8IGNmZy5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9u
LmhvbGRfZHVyYXRpb24gPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwidHJpZ2dlcl90aHJlc2hv
bGRcIjogIgotICAgICAgICAgICAgPDwgY2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9k
ZXRlY3Rpb24udHJpZ2dlcl90aHJlc2hvbGQ7Ci0gIHN0ZDo6Y291dCA8PCAifSwiOwotICBzdGQ6
OmNvdXQgPDwgIlwiaGlnaF9iYW5kc19zdXBwcmVzc2lvblwiOiB7IjsKLSAgc3RkOjpjb3V0IDw8
ICJcImVucl90aHJlc2hvbGRcIjogIgotICAgICAgICAgICAgPDwgY2ZnLnN1cHByZXNzb3IuaGln
aF9iYW5kc19zdXBwcmVzc2lvbi5lbnJfdGhyZXNob2xkIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8
ICJcIm1heF9nYWluX2R1cmluZ19lY2hvXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5zdXBwcmVz
c29yLmhpZ2hfYmFuZHNfc3VwcHJlc3Npb24ubWF4X2dhaW5fZHVyaW5nX2VjaG87Ci0gIHN0ZDo6
Y291dCA8PCAifSwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZmxvb3JfZmlyc3RfaW5jcmVhc2VcIjog
IgotICAgICAgICAgICAgPDwgY2ZnLnN1cHByZXNzb3IuZmxvb3JfZmlyc3RfaW5jcmVhc2UgPDwg
IiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZW5mb3JjZV90cmFuc3BhcmVudFwiOiAiCi0gICAgICAg
ICAgICA8PCAoY2ZnLnN1cHByZXNzb3IuZW5mb3JjZV90cmFuc3BhcmVudCA/ICJ0cnVlIiA6ICJm
YWxzZSIpIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImVuZm9yY2VfZW1wdHlfaGlnaGVyX2Jh
bmRzXCI6ICIKLSAgICAgICAgICAgIDw8IChjZmcuc3VwcHJlc3Nvci5lbmZvcmNlX2VtcHR5X2hp
Z2hlcl9iYW5kcyA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotICBzdGQ6OmNvdXQgPDwgIn0iOwotICBz
dGQ6OmNvdXQgPDwgIn0iOwotICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOworLy8gSGVscGVyIGZv
ciByZWFkaW5nIEpTT04gZnJvbSBhIGZpbGUgYW5kIHBhcnNpbmcgaXQgdG8gYW4gQUVDMyBjb25m
aWd1cmF0aW9uLgorRWNob0NhbmNlbGxlcjNDb25maWcgUmVhZEFlYzNDb25maWdGcm9tSnNvbkZp
bGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKSB7CisgIHN0ZDo6c3RyaW5nIGpzb25fc3Ry
aW5nOworICBzdGQ6OnN0cmluZyBzOworICBzdGQ6Omlmc3RyZWFtIGYoZmlsZW5hbWUuY19zdHIo
KSk7CisgIGlmIChmLmZhaWwoKSkgeworICAgIHN0ZDo6Y291dCA8PCAiRmFpbGVkIHRvIG9wZW4g
dGhlIGZpbGUgIiA8PCBmaWxlbmFtZSA8PCBzdGQ6OmVuZGw7CisgICAgUlRDX0NIRUNLKGZhbHNl
KTsKKyAgfQorICB3aGlsZSAoc3RkOjpnZXRsaW5lKGYsIHMpKSB7CisgICAganNvbl9zdHJpbmcg
Kz0gczsKKyAgfQorCisgIGJvb2wgcGFyc2luZ19zdWNjZXNzZnVsOworICBFY2hvQ2FuY2VsbGVy
M0NvbmZpZyBjZmc7CisgIEFlYzNDb25maWdGcm9tSnNvblN0cmluZyhqc29uX3N0cmluZywgJmNm
ZywgJnBhcnNpbmdfc3VjY2Vzc2Z1bCk7CisgIGlmICghcGFyc2luZ19zdWNjZXNzZnVsKSB7Cisg
ICAgc3RkOjpjb3V0IDw8ICJQYXJzaW5nIG9mIGpzb24gc3RyaW5nIGZhaWxlZDogIiA8PCBzdGQ6
OmVuZGwKKyAgICAgICAgICAgICAgPDwganNvbl9zdHJpbmcgPDwgc3RkOjplbmRsOworICAgIFJU
Q19DSEVDSyhmYWxzZSk7CisgIH0KKyAgUlRDX0NIRUNLKEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpW
YWxpZGF0ZSgmY2ZnKSk7CisKKyAgcmV0dXJuIGNmZzsKIH0KIAotLy8gQ2xhc3MgZm9yIHBhcnNp
bmcgdGhlIEFFQzMgcGFyYW1ldGVycyBmcm9tIGEgSlNPTiBmaWxlIGFuZCBwcm9kdWNpbmcgYSBj
b25maWcKLS8vIHN0cnVjdC4KLWNsYXNzIEFlYzNQYXJhbWV0ZXJzUGFyc2VyIHsKLSBwdWJsaWM6
Ci0gIHN0YXRpYyBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBQYXJzZShjb25zdCBzdGQ6OnN0cmluZyYg
ZmlsZW5hbWUpIHsKLSAgICByZXR1cm4gQWVjM1BhcmFtZXRlcnNQYXJzZXIoKS5QYXJzZUZpbGUo
ZmlsZW5hbWUpOwotICB9Ci0KLSBwcml2YXRlOgotICBBZWMzUGFyYW1ldGVyc1BhcnNlcigpID0g
ZGVmYXVsdDsKLQotICB2b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpWYWx1ZSYgcm9vdCwKLSAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwKLSAgICAgICAgICAgICAgICAg
Ym9vbCogcGFyYW0pIGNvbnN0IHsKLSAgICBSVENfQ0hFQ0socGFyYW0pOwotICAgIGJvb2wgdjsK
LSAgICBpZiAocnRjOjpHZXRCb29sRnJvbUpzb25PYmplY3Qocm9vdCwgcGFyYW1fbmFtZSwgJnYp
KSB7Ci0gICAgICAqcGFyYW0gPSB2OwotICAgIH0KLSAgfQotCi0gIHZvaWQgUmVhZFBhcmFtKGNv
bnN0IEpzb246OlZhbHVlJiByb290LAotICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJh
bV9uYW1lLAotICAgICAgICAgICAgICAgICBzaXplX3QqIHBhcmFtKSBjb25zdCB7Ci0gICAgUlRD
X0NIRUNLKHBhcmFtKTsKLSAgICBpbnQgdjsKLSAgICBpZiAocnRjOjpHZXRJbnRGcm9tSnNvbk9i
amVjdChyb290LCBwYXJhbV9uYW1lLCAmdikpIHsKLSAgICAgICpwYXJhbSA9IHY7Ci0gICAgfQot
ICB9Ci0KLSAgdm9pZCBSZWFkUGFyYW0oY29uc3QgSnNvbjo6VmFsdWUmIHJvb3QsCi0gICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUsCi0gICAgICAgICAgICAgICAgIGludCog
cGFyYW0pIGNvbnN0IHsKLSAgICBSVENfQ0hFQ0socGFyYW0pOwotICAgIGludCB2OwotICAgIGlm
IChydGM6OkdldEludEZyb21Kc29uT2JqZWN0KHJvb3QsIHBhcmFtX25hbWUsICZ2KSkgewotICAg
ICAgKnBhcmFtID0gdjsKLSAgICB9Ci0gIH0KLQotICB2b2lkIFJlYWRQYXJhbShjb25zdCBKc29u
OjpWYWx1ZSYgcm9vdCwKLSAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwK
LSAgICAgICAgICAgICAgICAgZmxvYXQqIHBhcmFtKSBjb25zdCB7Ci0gICAgUlRDX0NIRUNLKHBh
cmFtKTsKLSAgICBkb3VibGUgdjsKLSAgICBpZiAocnRjOjpHZXREb3VibGVGcm9tSnNvbk9iamVj
dChyb290LCBwYXJhbV9uYW1lLCAmdikpIHsKLSAgICAgICpwYXJhbSA9IHN0YXRpY19jYXN0PGZs
b2F0Pih2KTsKLSAgICB9Ci0gIH0KLQotICB2b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpWYWx1
ZSYgcm9vdCwKLSAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwKLSAgICAg
ICAgICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWc6OkZpbHRlcjo6TWFpbkNvbmZpZ3VyYXRp
b24qIHBhcmFtKSBjb25zdCB7Ci0gICAgUlRDX0NIRUNLKHBhcmFtKTsKLSAgICBKc29uOjpWYWx1
ZSBqc29uX2FycmF5OwotICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qocm9vdCwg
cGFyYW1fbmFtZSwgJmpzb25fYXJyYXkpKSB7Ci0gICAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHY7
Ci0gICAgICBydGM6Okpzb25BcnJheVRvRG91YmxlVmVjdG9yKGpzb25fYXJyYXksICZ2KTsKLSAg
ICAgIGlmICh2LnNpemUoKSAhPSA1KSB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiSW5jb3JyZWN0
IGFycmF5IHNpemUgZm9yICIgPDwgcGFyYW1fbmFtZSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIFJU
Q19DSEVDSyhmYWxzZSk7Ci0gICAgICB9Ci0gICAgICBwYXJhbS0+bGVuZ3RoX2Jsb2NrcyA9IHN0
YXRpY19jYXN0PHNpemVfdD4odlswXSk7Ci0gICAgICBwYXJhbS0+bGVha2FnZV9jb252ZXJnZWQg
PSBzdGF0aWNfY2FzdDxmbG9hdD4odlsxXSk7Ci0gICAgICBwYXJhbS0+bGVha2FnZV9kaXZlcmdl
ZCA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzJdKTsKLSAgICAgIHBhcmFtLT5lcnJvcl9mbG9vciA9
IHN0YXRpY19jYXN0PGZsb2F0Pih2WzNdKTsKLSAgICAgIHBhcmFtLT5ub2lzZV9nYXRlID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHZbNF0pOwotICAgIH0KLSAgfQotCi0gIHZvaWQgUmVhZFBhcmFtKAot
ICAgICAgY29uc3QgSnNvbjo6VmFsdWUmIHJvb3QsCi0gICAgICBzdGQ6OnN0cmluZyBwYXJhbV9u
YW1lLAotICAgICAgRWNob0NhbmNlbGxlcjNDb25maWc6OkZpbHRlcjo6U2hhZG93Q29uZmlndXJh
dGlvbiogcGFyYW0pIGNvbnN0IHsKLSAgICBSVENfQ0hFQ0socGFyYW0pOwotICAgIEpzb246OlZh
bHVlIGpzb25fYXJyYXk7Ci0gICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290
LCBwYXJhbV9uYW1lLCAmanNvbl9hcnJheSkpIHsKLSAgICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4g
djsKLSAgICAgIHJ0Yzo6SnNvbkFycmF5VG9Eb3VibGVWZWN0b3IoanNvbl9hcnJheSwgJnYpOwot
ICAgICAgaWYgKHYuc2l6ZSgpICE9IDMpIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJJbmNvcnJl
Y3QgYXJyYXkgc2l6ZSBmb3IgIiA8PCBwYXJhbV9uYW1lIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
UlRDX0NIRUNLKGZhbHNlKTsKLSAgICAgIH0KLSAgICAgIHBhcmFtLT5sZW5ndGhfYmxvY2tzID0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pih2WzBdKTsKLSAgICAgIHBhcmFtLT5yYXRlID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHZbMV0pOwotICAgICAgcGFyYW0tPm5vaXNlX2dhdGUgPSBzdGF0aWNfY2FzdDxm
bG9hdD4odlsyXSk7Ci0gICAgfQotICB9Ci0KLSAgdm9pZCBSZWFkUGFyYW0oCi0gICAgICBjb25z
dCBKc29uOjpWYWx1ZSYgcm9vdCwKLSAgICAgIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUsCi0gICAg
ICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6U3VwcHJlc3Nvcjo6TWFza2luZ1RocmVzaG9sZHMqIHBh
cmFtKSBjb25zdCB7Ci0gICAgUlRDX0NIRUNLKHBhcmFtKTsKLSAgICBKc29uOjpWYWx1ZSBqc29u
X2FycmF5OwotICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qocm9vdCwgcGFyYW1f
bmFtZSwgJmpzb25fYXJyYXkpKSB7Ci0gICAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHY7Ci0gICAg
ICBydGM6Okpzb25BcnJheVRvRG91YmxlVmVjdG9yKGpzb25fYXJyYXksICZ2KTsKLSAgICAgIGlm
ICh2LnNpemUoKSAhPSAzKSB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiSW5jb3JyZWN0IGFycmF5
IHNpemUgZm9yICIgPDwgcGFyYW1fbmFtZSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIFJUQ19DSEVD
SyhmYWxzZSk7Ci0gICAgICB9Ci0gICAgICBwYXJhbS0+ZW5yX3RyYW5zcGFyZW50ID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHZbMF0pOwotICAgICAgcGFyYW0tPmVucl9zdXBwcmVzcyA9IHN0YXRpY19j
YXN0PGZsb2F0Pih2WzFdKTsKLSAgICAgIHBhcmFtLT5lbXJfdHJhbnNwYXJlbnQgPSBzdGF0aWNf
Y2FzdDxmbG9hdD4odlsyXSk7Ci0gICAgfQotICB9Ci0KLSAgRWNob0NhbmNlbGxlcjNDb25maWcg
UGFyc2VGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSkgY29uc3QgewotICAgIEVjaG9D
YW5jZWxsZXIzQ29uZmlnIGNmZzsKLSAgICBKc29uOjpWYWx1ZSByb290OwotICAgIHN0ZDo6c3Ry
aW5nIHM7Ci0gICAgc3RkOjpzdHJpbmcganNvbl9zdHJpbmc7Ci0gICAgc3RkOjppZnN0cmVhbSBm
KGZpbGVuYW1lLmNfc3RyKCkpOwotCi0gICAgaWYgKGYuZmFpbCgpKSB7Ci0gICAgICBzdGQ6OmNv
dXQgPDwgIkZhaWxlZCB0byBvcGVuIHRoZSBmaWxlICIgPDwgZmlsZW5hbWUgPDwgc3RkOjplbmRs
OwotICAgICAgUlRDX0NIRUNLKGZhbHNlKTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoc3RkOjpnZXRs
aW5lKGYsIHMpKSB7Ci0gICAgICBqc29uX3N0cmluZyArPSBzOwotICAgIH0KLSAgICBib29sIHN1
Y2Nlc3MgPSBKc29uOjpSZWFkZXIoKS5wYXJzZShqc29uX3N0cmluZywgcm9vdCk7Ci0gICAgaWYg
KCFzdWNjZXNzKSB7Ci0gICAgICBzdGQ6OmNvdXQgPDwgIkluY29ycmVjdCBKU09OIGZvcm1hdDoi
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgIHN0ZDo6Y291dCA8PCBqc29uX3N0cmluZyA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICBSVENfQ0hFQ0soZmFsc2UpOwotICAgIH0KLQotICAgIEpzb246OlZhbHVlIHNl
Y3Rpb247Ci0gICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCAiZGVsYXki
LCAmc2VjdGlvbikpIHsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZGVmYXVsdF9kZWxheSIs
ICZjZmcuZGVsYXkuZGVmYXVsdF9kZWxheSk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImRv
d25fc2FtcGxpbmdfZmFjdG9yIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmRlbGF5LmRvd25fc2Ft
cGxpbmdfZmFjdG9yKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibnVtX2ZpbHRlcnMiLCAm
Y2ZnLmRlbGF5Lm51bV9maWx0ZXJzKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiYXBpX2Nh
bGxfaml0dGVyX2Jsb2NrcyIsCi0gICAgICAgICAgICAgICAgJmNmZy5kZWxheS5hcGlfY2FsbF9q
aXR0ZXJfYmxvY2tzKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWluX2VjaG9fcGF0aF9k
ZWxheV9ibG9ja3MiLAotICAgICAgICAgICAgICAgICZjZmcuZGVsYXkubWluX2VjaG9fcGF0aF9k
ZWxheV9ibG9ja3MpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJkZWxheV9oZWFkcm9vbV9i
bG9ja3MiLAotICAgICAgICAgICAgICAgICZjZmcuZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tz
KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiaHlzdGVyZXNpc19saW1pdF8xX2Jsb2NrcyIs
Ci0gICAgICAgICAgICAgICAgJmNmZy5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzKTsK
LSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiaHlzdGVyZXNpc19saW1pdF8yX2Jsb2NrcyIsCi0g
ICAgICAgICAgICAgICAgJmNmZy5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzKTsKLSAg
ICAgIFJlYWRQYXJhbShzZWN0aW9uLCAic2tld19oeXN0ZXJlc2lzX2Jsb2NrcyIsCi0gICAgICAg
ICAgICAgICAgJmNmZy5kZWxheS5za2V3X2h5c3RlcmVzaXNfYmxvY2tzKTsKLSAgICAgIFJlYWRQ
YXJhbShzZWN0aW9uLCAiZml4ZWRfY2FwdHVyZV9kZWxheV9zYW1wbGVzIiwKLSAgICAgICAgICAg
ICAgICAmY2ZnLmRlbGF5LmZpeGVkX2NhcHR1cmVfZGVsYXlfc2FtcGxlcyk7Ci0gICAgICBSZWFk
UGFyYW0oc2VjdGlvbiwgImRlbGF5X2VzdGltYXRlX3Ntb290aGluZyIsCi0gICAgICAgICAgICAg
ICAgJmNmZy5kZWxheS5kZWxheV9lc3RpbWF0ZV9zbW9vdGhpbmcpOwotICAgICAgUmVhZFBhcmFt
KHNlY3Rpb24sICJkZWxheV9jYW5kaWRhdGVfZGV0ZWN0aW9uX3RocmVzaG9sZCIsCi0gICAgICAg
ICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9jYW5kaWRhdGVfZGV0ZWN0aW9uX3RocmVzaG9sZCk7
Ci0KLSAgICAgIEpzb246OlZhbHVlIHN1YnNlY3Rpb247Ci0gICAgICBpZiAocnRjOjpHZXRWYWx1
ZUZyb21Kc29uT2JqZWN0KHNlY3Rpb24sICJkZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcyIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJzZWN0aW9uKSkgewotICAg
ICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgImluaXRpYWwiLAotICAgICAgICAgICAgICAgICAg
JmNmZy5kZWxheS5kZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcy5pbml0aWFsKTsKLSAgICAgICAg
UmVhZFBhcmFtKHN1YnNlY3Rpb24sICJjb252ZXJnZWQiLAotICAgICAgICAgICAgICAgICAgJmNm
Zy5kZWxheS5kZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcy5jb252ZXJnZWQpOwotICAgICAgfQot
ICAgIH0KLQotICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qocm9vdCwgImZpbHRl
ciIsICZzZWN0aW9uKSkgewotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtYWluIiwgJmNmZy5m
aWx0ZXIubWFpbik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInNoYWRvdyIsICZjZmcuZmls
dGVyLnNoYWRvdyk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1haW5faW5pdGlhbCIsICZj
ZmcuZmlsdGVyLm1haW5faW5pdGlhbCk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInNoYWRv
d19pbml0aWFsIiwgJmNmZy5maWx0ZXIuc2hhZG93X2luaXRpYWwpOwotICAgICAgUmVhZFBhcmFt
KHNlY3Rpb24sICJjb25maWdfY2hhbmdlX2R1cmF0aW9uX2Jsb2NrcyIsCi0gICAgICAgICAgICAg
ICAgJmNmZy5maWx0ZXIuY29uZmlnX2NoYW5nZV9kdXJhdGlvbl9ibG9ja3MpOwotICAgICAgUmVh
ZFBhcmFtKHNlY3Rpb24sICJpbml0aWFsX3N0YXRlX3NlY29uZHMiLAotICAgICAgICAgICAgICAg
ICZjZmcuZmlsdGVyLmluaXRpYWxfc3RhdGVfc2Vjb25kcyk7Ci0gICAgICBSZWFkUGFyYW0oc2Vj
dGlvbiwgImNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlIiwKLSAgICAgICAgICAgICAgICAmY2Zn
LmZpbHRlci5jb25zZXJ2YXRpdmVfaW5pdGlhbF9waGFzZSk7Ci0gICAgICBSZWFkUGFyYW0oc2Vj
dGlvbiwgImVuYWJsZV9zaGFkb3dfZmlsdGVyX291dHB1dF91c2FnZSIsCi0gICAgICAgICAgICAg
ICAgJmNmZy5maWx0ZXIuZW5hYmxlX3NoYWRvd19maWx0ZXJfb3V0cHV0X3VzYWdlKTsKLSAgICB9
Ci0KLSAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsICJlcmxlIiwgJnNl
Y3Rpb24pKSB7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1pbiIsICZjZmcuZXJsZS5taW4p
OwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtYXhfbCIsICZjZmcuZXJsZS5tYXhfbCk7Ci0g
ICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1heF9oIiwgJmNmZy5lcmxlLm1heF9oKTsKLSAgICAg
IFJlYWRQYXJhbShzZWN0aW9uLCAib25zZXRfZGV0ZWN0aW9uIiwgJmNmZy5lcmxlLm9uc2V0X2Rl
dGVjdGlvbik7Ci0gICAgfQotCi0gICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChy
b290LCAiZXBfc3RyZW5ndGgiLCAmc2VjdGlvbikpIHsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9u
LCAibGYiLCAmY2ZnLmVwX3N0cmVuZ3RoLmxmKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAi
bWYiLCAmY2ZnLmVwX3N0cmVuZ3RoLm1mKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiaGYi
LCAmY2ZnLmVwX3N0cmVuZ3RoLmhmKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZGVmYXVs
dF9sZW4iLCAmY2ZnLmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVuKTsKLSAgICAgIFJlYWRQYXJhbShz
ZWN0aW9uLCAicmV2ZXJiX2Jhc2VkX29uX3JlbmRlciIsCi0gICAgICAgICAgICAgICAgJmNmZy5l
cF9zdHJlbmd0aC5yZXZlcmJfYmFzZWRfb25fcmVuZGVyKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAiZWNob19jYW5fc2F0dXJhdGUiLAotICAgICAgICAgICAgICAgICZjZmcuZXBfc3RyZW5n
dGguZWNob19jYW5fc2F0dXJhdGUpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJib3VuZGVk
X2VybCIsICZjZmcuZXBfc3RyZW5ndGguYm91bmRlZF9lcmwpOwotICAgIH0KLQotICAgIGlmIChy
dGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qocm9vdCwgImdhaW5fbWFzayIsICZzZWN0aW9uKSkg
ewotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtMSIsICZjZmcuZ2Fpbl9tYXNrLm0xKTsKLSAg
ICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibTIiLCAmY2ZnLmdhaW5fbWFzay5tMik7Ci0gICAgICBS
ZWFkUGFyYW0oc2VjdGlvbiwgIm0zIiwgJmNmZy5nYWluX21hc2subTMpOwotICAgICAgUmVhZFBh
cmFtKHNlY3Rpb24sICJtNSIsICZjZmcuZ2Fpbl9tYXNrLm01KTsKLSAgICAgIFJlYWRQYXJhbShz
ZWN0aW9uLCAibTYiLCAmY2ZnLmdhaW5fbWFzay5tNik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlv
biwgIm03IiwgJmNmZy5nYWluX21hc2subTcpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJt
OCIsICZjZmcuZ2Fpbl9tYXNrLm04KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibTkiLCAm
Y2ZnLmdhaW5fbWFzay5tOSk7Ci0KLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZ2Fpbl9jdXJ2
ZV9vZmZzZXQiLCAmY2ZnLmdhaW5fbWFzay5nYWluX2N1cnZlX29mZnNldCk7Ci0gICAgICBSZWFk
UGFyYW0oc2VjdGlvbiwgImdhaW5fY3VydmVfc2xvcGUiLCAmY2ZnLmdhaW5fbWFzay5nYWluX2N1
cnZlX3Nsb3BlKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAidGVtcG9yYWxfbWFza2luZ19s
ZiIsCi0gICAgICAgICAgICAgICAgJmNmZy5nYWluX21hc2sudGVtcG9yYWxfbWFza2luZ19sZik7
Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInRlbXBvcmFsX21hc2tpbmdfaGYiLAotICAgICAg
ICAgICAgICAgICZjZmcuZ2Fpbl9tYXNrLnRlbXBvcmFsX21hc2tpbmdfaGYpOwotICAgICAgUmVh
ZFBhcmFtKHNlY3Rpb24sICJ0ZW1wb3JhbF9tYXNraW5nX2xmX2JhbmRzIiwKLSAgICAgICAgICAg
ICAgICAmY2ZnLmdhaW5fbWFzay50ZW1wb3JhbF9tYXNraW5nX2xmX2JhbmRzKTsKLSAgICB9Ci0K
LSAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsICJlY2hvX2F1ZGliaWxp
dHkiLCAmc2VjdGlvbikpIHsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibG93X3JlbmRlcl9s
aW1pdCIsCi0gICAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHkubG93X3JlbmRlcl9s
aW1pdCk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5vcm1hbF9yZW5kZXJfbGltaXQiLAot
ICAgICAgICAgICAgICAgICZjZmcuZWNob19hdWRpYmlsaXR5Lm5vcm1hbF9yZW5kZXJfbGltaXQp
OwotCi0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImZsb29yX3Bvd2VyIiwgJmNmZy5lY2hvX2F1
ZGliaWxpdHkuZmxvb3JfcG93ZXIpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJhdWRpYmls
aXR5X3RocmVzaG9sZF9sZiIsCi0gICAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHku
YXVkaWJpbGl0eV90aHJlc2hvbGRfbGYpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJhdWRp
YmlsaXR5X3RocmVzaG9sZF9tZiIsCi0gICAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxp
dHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfbWYpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJh
dWRpYmlsaXR5X3RocmVzaG9sZF9oZiIsCi0gICAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGli
aWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfaGYpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJ1c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVzIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9f
YXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVzKTsKLSAgICAgIFJlYWRQYXJhbShz
ZWN0aW9uLCAidXNlX3N0YXRpb25hcnlfcHJvcGVydGllc19hdF9pbml0IiwKLSAgICAgICAgICAg
ICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRf
aW5pdCk7Ci0gICAgfQotCi0gICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290
LCAiZWNob19yZW1vdmFsX2NvbnRyb2wiLCAmc2VjdGlvbikpIHsKLSAgICAgIEpzb246OlZhbHVl
IHN1YnNlY3Rpb247Ci0gICAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rp
b24sICJnYWluX3JhbXB1cCIsICZzdWJzZWN0aW9uKSkgewotICAgICAgICBSZWFkUGFyYW0oc3Vi
c2VjdGlvbiwgImluaXRpYWxfZ2FpbiIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVt
b3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmluaXRpYWxfZ2Fpbik7Ci0gICAgICAgIFJlYWRQYXJh
bShzdWJzZWN0aW9uLCAiZmlyc3Rfbm9uX3plcm9fZ2FpbiIsCi0gICAgICAgICAgICAgICAgICAm
Y2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmZpcnN0X25vbl96ZXJvX2dhaW4p
OwotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm5vbl96ZXJvX2dhaW5fYmxvY2tzIiwK
LSAgICAgICAgICAgICAgICAgICZjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAu
bm9uX3plcm9fZ2Fpbl9ibG9ja3MpOwotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgImZ1
bGxfZ2Fpbl9ibG9ja3MiLAotICAgICAgICAgICAgICAgICAgJmNmZy5lY2hvX3JlbW92YWxfY29u
dHJvbC5nYWluX3JhbXB1cC5mdWxsX2dhaW5fYmxvY2tzKTsKLSAgICAgIH0KLSAgICAgIFJlYWRQ
YXJhbShzZWN0aW9uLCAiaGFzX2Nsb2NrX2RyaWZ0IiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVj
aG9fcmVtb3ZhbF9jb250cm9sLmhhc19jbG9ja19kcmlmdCk7Ci0gICAgICBSZWFkUGFyYW0oc2Vj
dGlvbiwgImxpbmVhcl9hbmRfc3RhYmxlX2VjaG9fcGF0aCIsCi0gICAgICAgICAgICAgICAgJmNm
Zy5lY2hvX3JlbW92YWxfY29udHJvbC5saW5lYXJfYW5kX3N0YWJsZV9lY2hvX3BhdGgpOwotICAg
IH0KLQotICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qocm9vdCwgImVjaG9fbW9k
ZWwiLCAmc2VjdGlvbikpIHsKLSAgICAgIEpzb246OlZhbHVlIHN1YnNlY3Rpb247Ci0gICAgICBS
ZWFkUGFyYW0oc2VjdGlvbiwgIm5vaXNlX2Zsb29yX2hvbGQiLCAmY2ZnLmVjaG9fbW9kZWwubm9p
c2VfZmxvb3JfaG9sZCk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1pbl9ub2lzZV9mbG9v
cl9wb3dlciIsCi0gICAgICAgICAgICAgICAgJmNmZy5lY2hvX21vZGVsLm1pbl9ub2lzZV9mbG9v
cl9wb3dlcik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInN0YXRpb25hcnlfZ2F0ZV9zbG9w
ZSIsCi0gICAgICAgICAgICAgICAgJmNmZy5lY2hvX21vZGVsLnN0YXRpb25hcnlfZ2F0ZV9zbG9w
ZSk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5vaXNlX2dhdGVfcG93ZXIiLCAmY2ZnLmVj
aG9fbW9kZWwubm9pc2VfZ2F0ZV9wb3dlcik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5v
aXNlX2dhdGVfc2xvcGUiLCAmY2ZnLmVjaG9fbW9kZWwubm9pc2VfZ2F0ZV9zbG9wZSk7Ci0gICAg
ICBSZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRlcl9wcmVfd2luZG93X3NpemUiLAotICAgICAgICAg
ICAgICAgICZjZmcuZWNob19tb2RlbC5yZW5kZXJfcHJlX3dpbmRvd19zaXplKTsKLSAgICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAicmVuZGVyX3Bvc3Rfd2luZG93X3NpemUiLAotICAgICAgICAgICAg
ICAgICZjZmcuZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6ZSk7Ci0gICAgICBSZWFk
UGFyYW0oc2VjdGlvbiwgInJlbmRlcl9wcmVfd2luZG93X3NpemVfaW5pdCIsCi0gICAgICAgICAg
ICAgICAgJmNmZy5lY2hvX21vZGVsLnJlbmRlcl9wcmVfd2luZG93X3NpemVfaW5pdCk7Ci0gICAg
ICBSZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRlcl9wb3N0X3dpbmRvd19zaXplX2luaXQiLAotICAg
ICAgICAgICAgICAgICZjZmcuZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6ZV9pbml0
KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibm9ubGluZWFyX2hvbGQiLCAmY2ZnLmVjaG9f
bW9kZWwubm9ubGluZWFyX2hvbGQpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJub25saW5l
YXJfcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgJmNmZy5lY2hvX21vZGVsLm5vbmxpbmVhcl9y
ZWxlYXNlKTsKLSAgICB9Ci0KLSAgICBKc29uOjpWYWx1ZSBzdWJzZWN0aW9uOwotICAgIGlmIChy
dGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qocm9vdCwgInN1cHByZXNzb3IiLCAmc2VjdGlvbikp
IHsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibmVhcmVuZF9hdmVyYWdlX2Jsb2NrcyIsCi0g
ICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLm5lYXJlbmRfYXZlcmFnZV9ibG9ja3MpOwot
Ci0gICAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rpb24sICJub3JtYWxf
dHVuaW5nIiwgJnN1YnNlY3Rpb24pKSB7Ci0gICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAi
bWFza19sZiIsICZjZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfbGYpOwotICAgICAg
ICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1hc2tfaGYiLCAmY2ZnLnN1cHByZXNzb3Iubm9ybWFs
X3R1bmluZy5tYXNrX2hmKTsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJtYXhfaW5j
X2ZhY3RvciIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmlu
Zy5tYXhfaW5jX2ZhY3Rvcik7Ci0gICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWF4X2Rl
Y19mYWN0b3JfbGYiLAotICAgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLm5vcm1hbF90
dW5pbmcubWF4X2RlY19mYWN0b3JfbGYpOwotICAgICAgfQotCi0gICAgICBpZiAocnRjOjpHZXRW
YWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rpb24sICJuZWFyZW5kX3R1bmluZyIsICZzdWJzZWN0aW9u
KSkgewotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1hc2tfbGYiLAotICAgICAgICAg
ICAgICAgICAgJmNmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfbGYpOwotICAgICAg
ICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1hc2tfaGYiLAotICAgICAgICAgICAgICAgICAgJmNm
Zy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfaGYpOwotICAgICAgICBSZWFkUGFyYW0o
c3Vic2VjdGlvbiwgIm1heF9pbmNfZmFjdG9yIiwKLSAgICAgICAgICAgICAgICAgICZjZmcuc3Vw
cHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXhfaW5jX2ZhY3Rvcik7Ci0gICAgICAgIFJlYWRQYXJh
bShzdWJzZWN0aW9uLCAibWF4X2RlY19mYWN0b3JfbGYiLAotICAgICAgICAgICAgICAgICAgJmNm
Zy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1heF9kZWNfZmFjdG9yX2xmKTsKLSAgICAgIH0K
LQotICAgICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChzZWN0aW9uLCAiZG9taW5h
bnRfbmVhcmVuZF9kZXRlY3Rpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmc3Vic2VjdGlvbikpIHsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJlbnJf
dGhyZXNob2xkIiwKLSAgICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9u
ZWFyZW5kX2RldGVjdGlvbi5lbnJfdGhyZXNob2xkKTsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNl
Y3Rpb24sICJzbnJfdGhyZXNob2xkIiwKLSAgICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nv
ci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5zbnJfdGhyZXNob2xkKTsKLSAgICAgICAgUmVh
ZFBhcmFtKHN1YnNlY3Rpb24sICJob2xkX2R1cmF0aW9uIiwKLSAgICAgICAgICAgICAgICAgICZj
Zmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5ob2xkX2R1cmF0aW9uKTsK
LSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJ0cmlnZ2VyX3RocmVzaG9sZCIsCi0gICAg
ICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24u
dHJpZ2dlcl90aHJlc2hvbGQpOwotICAgICAgfQotCi0gICAgICBpZiAocnRjOjpHZXRWYWx1ZUZy
b21Kc29uT2JqZWN0KHNlY3Rpb24sICJoaWdoX2JhbmRzX3N1cHByZXNzaW9uIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1YnNlY3Rpb24pKSB7Ci0gICAgICAgIFJl
YWRQYXJhbShzdWJzZWN0aW9uLCAiZW5yX3RocmVzaG9sZCIsCi0gICAgICAgICAgICAgICAgICAm
Y2ZnLnN1cHByZXNzb3IuaGlnaF9iYW5kc19zdXBwcmVzc2lvbi5lbnJfdGhyZXNob2xkKTsKLSAg
ICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJtYXhfZ2Fpbl9kdXJpbmdfZWNobyIsCi0gICAg
ICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IuaGlnaF9iYW5kc19zdXBwcmVzc2lvbi5tYXhf
Z2Fpbl9kdXJpbmdfZWNobyk7Ci0gICAgICB9Ci0KLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAi
Zmxvb3JfZmlyc3RfaW5jcmVhc2UiLAotICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5m
bG9vcl9maXJzdF9pbmNyZWFzZSk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImVuZm9yY2Vf
dHJhbnNwYXJlbnQiLAotICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5lbmZvcmNlX3Ry
YW5zcGFyZW50KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZW5mb3JjZV9lbXB0eV9oaWdo
ZXJfYmFuZHMiLAotICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5lbmZvcmNlX2VtcHR5
X2hpZ2hlcl9iYW5kcyk7Ci0gICAgfQotCi0gICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKLSAg
ICByZXR1cm4gY2ZnOwotICB9Ci19OwotCiB2b2lkIENvcHlGcm9tQXVkaW9GcmFtZShjb25zdCBB
dWRpb0ZyYW1lJiBzcmMsIENoYW5uZWxCdWZmZXI8ZmxvYXQ+KiBkZXN0KSB7CiAgIFJUQ19DSEVD
S19FUShzcmMubnVtX2NoYW5uZWxzXywgZGVzdC0+bnVtX2NoYW5uZWxzKCkpOwogICBSVENfQ0hF
Q0tfRVEoc3JjLnNhbXBsZXNfcGVyX2NoYW5uZWxfLCBkZXN0LT5udW1fZnJhbWVzKCkpOwpAQCAt
Njk1LDYgKzEyNiwxMyBAQCBBdWRpb1Byb2Nlc3NpbmdTaW11bGF0b3I6OkF1ZGlvUHJvY2Vzc2lu
Z1NpbXVsYXRvcigKICAgICAgICAgICBzZXR0aW5ncy5pbml0aWFsX21pY19sZXZlbCwKICAgICAg
ICAgICBzZXR0aW5nc18uc2ltdWxhdGVfbWljX2dhaW4gPyAqc2V0dGluZ3Muc2ltdWxhdGVkX21p
Y19raW5kIDogMCksCiAgICAgICB3b3JrZXJfcXVldWVfKCJmaWxlX3dyaXRlcl90YXNrX3F1ZXVl
IikgeworICBSVENfQ0hFQ0soIXNldHRpbmdzXy5kdW1wX2ludGVybmFsX2RhdGEgfHwgV0VCUlRD
X0FQTV9ERUJVR19EVU1QID09IDEpOworICBBcG1EYXRhRHVtcGVyOjpTZXRBY3RpdmF0ZWQoc2V0
dGluZ3NfLmR1bXBfaW50ZXJuYWxfZGF0YSk7CisgIGlmIChzZXR0aW5nc18uZHVtcF9pbnRlcm5h
bF9kYXRhX291dHB1dF9kaXIuaGFzX3ZhbHVlKCkpIHsKKyAgICBBcG1EYXRhRHVtcGVyOjpTZXRP
dXRwdXREaXJlY3RvcnkoCisgICAgICAgIHNldHRpbmdzXy5kdW1wX2ludGVybmFsX2RhdGFfb3V0
cHV0X2Rpci52YWx1ZSgpKTsKKyAgfQorCiAgIGlmIChzZXR0aW5nc18uZWRfZ3JhcGhfb3V0cHV0
X2ZpbGVuYW1lICYmCiAgICAgICAhc2V0dGluZ3NfLmVkX2dyYXBoX291dHB1dF9maWxlbmFtZS0+
ZW1wdHkoKSkgewogICAgIHJlc2lkdWFsX2VjaG9fbGlrZWxpaG9vZF9ncmFwaF93cml0ZXJfLm9w
ZW4oCkBAIC03NzYsOSArMjE0LDkgQEAgdm9pZCBBdWRpb1Byb2Nlc3NpbmdTaW11bGF0b3I6OlBy
b2Nlc3NTdHJlYW0oYm9vbCBmaXhlZF9pbnRlcmZhY2UpIHsKICAgfQogCiAgIGlmIChyZXNpZHVh
bF9lY2hvX2xpa2VsaWhvb2RfZ3JhcGhfd3JpdGVyXy5pc19vcGVuKCkpIHsKLSAgICBhdXRvIHN0
YXRzID0gYXBfLT5HZXRTdGF0aXN0aWNzKCk7Ci0gICAgcmVzaWR1YWxfZWNob19saWtlbGlob29k
X2dyYXBoX3dyaXRlcl8gPDwgc3RhdHMucmVzaWR1YWxfZWNob19saWtlbGlob29kCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgIjsKKyAgICBhdXRvIHN0
YXRzID0gYXBfLT5HZXRTdGF0aXN0aWNzKHRydWUgLypoYXNfcmVtb3RlX3RyYWNrcyovKTsKKyAg
ICByZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2RfZ3JhcGhfd3JpdGVyXworICAgICAgICA8PCBzdGF0
cy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2QudmFsdWVfb3IoLTEuZikgPDwgIiwgIjsKICAgfQog
CiAgICsrbnVtX3Byb2Nlc3Nfc3RyZWFtX2NhbGxzXzsKQEAgLTkxOCwxMCArMzU2LDEzIEBAIHZv
aWQgQXVkaW9Qcm9jZXNzaW5nU2ltdWxhdG9yOjpDcmVhdGVBdWRpb1Byb2Nlc3NvcigpIHsKICAg
fQogICBpZiAoc2V0dGluZ3NfLnVzZV9hZ2MyKSB7CiAgICAgYXBtX2NvbmZpZy5nYWluX2NvbnRy
b2xsZXIyLmVuYWJsZWQgPSAqc2V0dGluZ3NfLnVzZV9hZ2MyOwotICAgIGFwbV9jb25maWcuZ2Fp
bl9jb250cm9sbGVyMi5maXhlZF9nYWluX2RiID0gc2V0dGluZ3NfLmFnYzJfZml4ZWRfZ2Fpbl9k
YjsKKyAgICBhcG1fY29uZmlnLmdhaW5fY29udHJvbGxlcjIuZml4ZWRfZGlnaXRhbC5nYWluX2Ri
ID0KKyAgICAgICAgc2V0dGluZ3NfLmFnYzJfZml4ZWRfZ2Fpbl9kYjsKICAgICBpZiAoc2V0dGlu
Z3NfLmFnYzJfdXNlX2FkYXB0aXZlX2dhaW4pIHsKLSAgICAgIGFwbV9jb25maWcuZ2Fpbl9jb250
cm9sbGVyMi5hZGFwdGl2ZV9kaWdpdGFsX21vZGUgPQorICAgICAgYXBtX2NvbmZpZy5nYWluX2Nv
bnRyb2xsZXIyLmFkYXB0aXZlX2RpZ2l0YWwuZW5hYmxlZCA9CiAgICAgICAgICAgKnNldHRpbmdz
Xy5hZ2MyX3VzZV9hZGFwdGl2ZV9nYWluOworICAgICAgYXBtX2NvbmZpZy5nYWluX2NvbnRyb2xs
ZXIyLmFkYXB0aXZlX2RpZ2l0YWwubGV2ZWxfZXN0aW1hdG9yID0KKyAgICAgICAgICBzZXR0aW5n
c18uYWdjMl9hZGFwdGl2ZV9sZXZlbF9lc3RpbWF0b3I7CiAgICAgfQogICB9CiAgIGlmIChzZXR0
aW5nc18udXNlX3ByZV9hbXBsaWZpZXIpIHsKQEAgLTk0NCw3ICszODUsNyBAQCB2b2lkIEF1ZGlv
UHJvY2Vzc2luZ1NpbXVsYXRvcjo6Q3JlYXRlQXVkaW9Qcm9jZXNzb3IoKSB7CiAgICAgICBpZiAo
c2V0dGluZ3NfLnVzZV92ZXJib3NlX2xvZ2dpbmcpIHsKICAgICAgICAgc3RkOjpjb3V0IDw8ICJS
ZWFkaW5nIEFFQzMgUGFyYW1ldGVycyBmcm9tIEpTT04gaW5wdXQuIiA8PCBzdGQ6OmVuZGw7CiAg
ICAgICB9Ci0gICAgICBjZmcgPSBBZWMzUGFyYW1ldGVyc1BhcnNlcjo6UGFyc2UoKnNldHRpbmdz
Xy5hZWMzX3NldHRpbmdzX2ZpbGVuYW1lKTsKKyAgICAgIGNmZyA9IFJlYWRBZWMzQ29uZmlnRnJv
bUpzb25GaWxlKCpzZXR0aW5nc18uYWVjM19zZXR0aW5nc19maWxlbmFtZSk7CiAgICAgfQogICAg
IGVjaG9fY29udHJvbF9mYWN0b3J5LnJlc2V0KG5ldyBFY2hvQ2FuY2VsbGVyM0ZhY3RvcnkoY2Zn
KSk7CiAKQEAgLTk1Miw3ICszOTMsNyBAQCB2b2lkIEF1ZGlvUHJvY2Vzc2luZ1NpbXVsYXRvcjo6
Q3JlYXRlQXVkaW9Qcm9jZXNzb3IoKSB7CiAgICAgICBpZiAoIXNldHRpbmdzXy51c2VfcXVpZXRf
b3V0cHV0KSB7CiAgICAgICAgIHN0ZDo6Y291dCA8PCAiQUVDMyBzZXR0aW5nczoiIDw8IHN0ZDo6
ZW5kbDsKICAgICAgIH0KLSAgICAgIFByaW50QWVjM1BhcmFtZXRlclZhbHVlcyhjZmcpOworICAg
ICAgc3RkOjpjb3V0IDw8IEFlYzNDb25maWdUb0pzb25TdHJpbmcoY2ZnKSA8PCBzdGQ6OmVuZGw7
CiAgICAgfQogICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2F1ZGlvX3Byb2Nlc3Np
bmdfc2ltdWxhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRpb19wcm9jZXNzaW5nX3NpbXVsYXRv
ci5oCmluZGV4IDRlNTgwYjRmY2VkOTU0OGQ1OGFjMmQ1NTQ0M2Y0NDZmYmI1M2U3YzIuLjRiNjc1
MzdiNDlhNWIwMGI2YTU3ZDI2MTA5MjQ1MjJlMmZiODI2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy90ZXN0L2F1ZGlvX3Byb2Nlc3Npbmdfc2ltdWxhdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3Qv
YXVkaW9fcHJvY2Vzc2luZ19zaW11bGF0b3IuaApAQCAtNzUsNiArNzUsOCBAQCBzdHJ1Y3QgU2lt
dWxhdGlvblNldHRpbmdzIHsKICAgYWJzbDo6b3B0aW9uYWw8aW50PiBhZ2NfY29tcHJlc3Npb25f
Z2FpbjsKICAgYWJzbDo6b3B0aW9uYWw8Ym9vbD4gYWdjMl91c2VfYWRhcHRpdmVfZ2FpbjsKICAg
ZmxvYXQgYWdjMl9maXhlZF9nYWluX2RiOworICBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2Fp
bkNvbnRyb2xsZXIyOjpMZXZlbEVzdGltYXRvcgorICAgICAgYWdjMl9hZGFwdGl2ZV9sZXZlbF9l
c3RpbWF0b3I7CiAgIGZsb2F0IHByZV9hbXBsaWZpZXJfZ2Fpbl9mYWN0b3I7CiAgIGFic2w6Om9w
dGlvbmFsPGludD4gdmFkX2xpa2VsaWhvb2Q7CiAgIGFic2w6Om9wdGlvbmFsPGludD4gbnNfbGV2
ZWw7CkBAIC05Miw2ICs5NCw4IEBAIHN0cnVjdCBTaW11bGF0aW9uU2V0dGluZ3MgewogICBib29s
IGZpeGVkX2ludGVyZmFjZSA9IGZhbHNlOwogICBib29sIHN0b3JlX2ludGVybWVkaWF0ZV9vdXRw
dXQgPSBmYWxzZTsKICAgYm9vbCBwcmludF9hZWMzX3BhcmFtZXRlcl92YWx1ZXMgPSBmYWxzZTsK
KyAgYm9vbCBkdW1wX2ludGVybmFsX2RhdGEgPSBmYWxzZTsKKyAgYWJzbDo6b3B0aW9uYWw8c3Rk
OjpzdHJpbmc+IGR1bXBfaW50ZXJuYWxfZGF0YV9vdXRwdXRfZGlyOwogICBhYnNsOjpvcHRpb25h
bDxzdGQ6OnN0cmluZz4gY3VzdG9tX2NhbGxfb3JkZXJfZmlsZW5hbWU7CiAgIGFic2w6Om9wdGlv
bmFsPHN0ZDo6c3RyaW5nPiBhZWMzX3NldHRpbmdzX2ZpbGVuYW1lOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy90ZXN0L2F1ZGlvcHJvY19mbG9hdF9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3Qv
YXVkaW9wcm9jX2Zsb2F0X2ltcGwuY2MKaW5kZXggM2E0NDg4NzdkODE5YWQxMTYwMTE3M2IwOTU3
ZWNiM2RhZGIxMmM1MS4uMGZmMjgwNmU2ZDVkZWNiMDZkNjg3NzAwYjZkMjNjNDMyMGMxNTZlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvYXVkaW9wcm9jX2Zsb2F0X2ltcGwuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3Rlc3QvYXVkaW9wcm9jX2Zsb2F0X2ltcGwuY2MKQEAgLTE0LDEzICsxNCwxNyBA
QAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dXRpbGl0
eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3Zp
ZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19w
cm9jZXNzaW5nLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvYWVj
X2R1bXBfYmFzZWRfc2ltdWxhdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL3Rlc3QvYXVkaW9fcHJvY2Vzc2luZ19zaW11bGF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRpb3Byb2NfZmxvYXRfaW1wbC5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L3dhdl9iYXNlZF9zaW11bGF0b3IuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CkBAIC0zNywxNTUgKzQxLDE4NSBAQCBjb25zdCBj
aGFyIGtVc2FnZURlc2NyaXB0aW9uW10gPQogICAgICJwcm9jZXNzaW5nIG1vZHVsZSwgZWl0aGVy
IGJhc2VkIG9uIHdhdiBmaWxlcyBvciAiCiAgICAgInByb3RvYnVmIGRlYnVnIGR1bXAgcmVjb3Jk
aW5ncy5cbiI7CiAKLURFRklORV9zdHJpbmcoZHVtcF9pbnB1dCwgIiIsICJBZWMgZHVtcCBpbnB1
dCBmaWxlbmFtZSIpOwotREVGSU5FX3N0cmluZyhkdW1wX291dHB1dCwgIiIsICJBZWMgZHVtcCBv
dXRwdXQgZmlsZW5hbWUiKTsKLURFRklORV9zdHJpbmcoaSwgIiIsICJGb3J3YXJkIHN0cmVhbSBp
bnB1dCB3YXYgZmlsZW5hbWUiKTsKLURFRklORV9zdHJpbmcobywgIiIsICJGb3J3YXJkIHN0cmVh
bSBvdXRwdXQgd2F2IGZpbGVuYW1lIik7Ci1ERUZJTkVfc3RyaW5nKHJpLCAiIiwgIlJldmVyc2Ug
c3RyZWFtIGlucHV0IHdhdiBmaWxlbmFtZSIpOwotREVGSU5FX3N0cmluZyhybywgIiIsICJSZXZl
cnNlIHN0cmVhbSBvdXRwdXQgd2F2IGZpbGVuYW1lIik7Ci1ERUZJTkVfc3RyaW5nKGFydGlmaWNp
YWxfbmVhcmVuZCwgIiIsICJBcnRpZmljaWFsIG5lYXJlbmQgd2F2IGZpbGVuYW1lIik7Ci1ERUZJ
TkVfaW50KG91dHB1dF9udW1fY2hhbm5lbHMsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVj
aWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIk51bWJlciBvZiBmb3J3YXJkIHN0cmVhbSBvdXRwdXQg
Y2hhbm5lbHMiKTsKLURFRklORV9pbnQocmV2ZXJzZV9vdXRwdXRfbnVtX2NoYW5uZWxzLAotICAg
ICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJOdW1iZXIg
b2YgUmV2ZXJzZSBzdHJlYW0gb3V0cHV0IGNoYW5uZWxzIik7Ci1ERUZJTkVfaW50KG91dHB1dF9z
YW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAot
ICAgICAgICAgICAiRm9yd2FyZCBzdHJlYW0gb3V0cHV0IHNhbXBsZSByYXRlIGluIEh6Iik7Ci1E
RUZJTkVfaW50KHJldmVyc2Vfb3V0cHV0X3NhbXBsZV9yYXRlX2h6LAotICAgICAgICAgICBrUGFy
YW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJSZXZlcnNlIHN0cmVhbSBvdXRw
dXQgc2FtcGxlIHJhdGUgaW4gSHoiKTsKLURFRklORV9ib29sKGZpeGVkX2ludGVyZmFjZSwKLSAg
ICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlVzZSB0aGUgZml4ZWQgaW50ZXJmYWNlIHdo
ZW4gb3BlcmF0aW5nIG9uIHdhdiBmaWxlcyIpOwotREVGSU5FX2ludChhZWMsCi0gICAgICAgICAg
IGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBv
ciBkZWFjdGl2YXRlKDApIHRoZSBlY2hvIGNhbmNlbGxlciIpOwotREVGSU5FX2ludChhZWNtLAot
ICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3Rp
dmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgbW9iaWxlIGVjaG8gY29udHJvbGxlciIpOwot
REVGSU5FX2ludChlZCwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAot
ICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUgKDApIHRoZSByZXNpZHVhbCBl
Y2hvIGRldGVjdG9yIik7Ci1ERUZJTkVfc3RyaW5nKGVkX2dyYXBoLCAiIiwgIk91dHB1dCBmaWxl
bmFtZSBmb3IgZ3JhcGggb2YgZWNobyBsaWtlbGlob29kIik7Ci1ERUZJTkVfaW50KGFnYywKLSAg
ICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiQWN0aXZh
dGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIEFHQyIpOwotREVGSU5FX2ludChhZ2MyLAotICAg
ICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0
ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgQUdDMiIpOwotREVGSU5FX2ludChwcmVfYW1wbGlm
aWVyLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAg
ICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgcHJlIGFtcGxpZmllciIpOwotREVG
SU5FX2ludChocGYsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAg
ICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBoaWdoLXBhc3MgZmls
dGVyIik7Ci1ERUZJTkVfaW50KG5zLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVk
VmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgbm9p
c2Ugc3VwcHJlc3NvciIpOwotREVGSU5FX2ludCh0cywKLSAgICAgICAgICAga1BhcmFtZXRlck5v
dFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUo
MCkgdGhlIHRyYW5zaWVudCBzdXBwcmVzc29yIik7Ci1ERUZJTkVfaW50KHZhZCwKLSAgICAgICAg
ICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEp
IG9yIGRlYWN0aXZhdGUoMCkgdGhlIHZvaWNlIGFjdGl2aXR5IGRldGVjdG9yIik7Ci1ERUZJTkVf
aW50KGxlLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAg
ICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgbGV2ZWwgZXN0aW1hdG9yIik7
Ci1ERUZJTkVfYm9vbChhbGxfZGVmYXVsdCwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAg
ICAgIkFjdGl2YXRlIGFsbCBvZiB0aGUgZGVmYXVsdCBjb21wb25lbnRzICh3aWxsIGJlIG92ZXJy
aWRkZW4gYnkgYW55ICIKLSAgICAgICAgICAgICJvdGhlciBzZXR0aW5ncykiKTsKLURFRklORV9p
bnQoYWVjX3N1cHByZXNzaW9uX2xldmVsLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lm
aWVkVmFsdWUsCi0gICAgICAgICAgICJTZXQgdGhlIGFlYyBzdXBwcmVzc2lvbiBsZXZlbCAoMC0y
KSIpOwotREVGSU5FX2ludChkZWxheV9hZ25vc3RpYywKLSAgICAgICAgICAga1BhcmFtZXRlck5v
dFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUo
MCkgdGhlIEFFQyBkZWxheSBhZ25vc3RpYyBtb2RlIik7Ci1ERUZJTkVfaW50KGV4dGVuZGVkX2Zp
bHRlciwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAg
ICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIEFFQyBleHRlbmRlZCBmaWx0ZXIg
bW9kZSIpOwotREVGSU5FX2ludChhZWMzLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lm
aWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUg
ZXhwZXJpbWVudGFsIEFFQyBtb2RlIEFFQzMiKTsKLURFRklORV9pbnQoZXhwZXJpbWVudGFsX2Fn
YywKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAi
QWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIGV4cGVyaW1lbnRhbCBBR0MiKTsKLURF
RklORV9pbnQoZXhwZXJpbWVudGFsX2FnY19kaXNhYmxlX2RpZ2l0YWxfYWRhcHRpdmUsCi0gICAg
ICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIkZvcmNlLWRl
YWN0aXZhdGUgKDEpIGRpZ2l0YWwgYWRhcHRhdGlvbiBpbiAiCi0gICAgICAgICAgICJleHBlcmlt
ZW50YWwgQUdDLiBEaWdpdGFsIGFkYXB0YXRpb24gaXMgYWN0aXZlIGJ5IGRlZmF1bHQgKDApLiIp
OwotREVGSU5FX2ludChleHBlcmltZW50YWxfYWdjX2FuYWx5emVfYmVmb3JlX2FlYywKLSAgICAg
ICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiTWFrZSBsZXZl
bCBlc3RpbWF0aW9uIGhhcHBlbiBiZWZvcmUgQUVDIgotICAgICAgICAgICAiIGluIHRoZSBleHBl
cmltZW50YWwgQUdDLiBBZnRlciBBRUMgaXMgdGhlIGRlZmF1bHQgKDApIik7Ci1ERUZJTkVfaW50
KAorV0VCUlRDX0RFRklORV9zdHJpbmcoZHVtcF9pbnB1dCwgIiIsICJBZWMgZHVtcCBpbnB1dCBm
aWxlbmFtZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoZHVtcF9vdXRwdXQsICIiLCAiQWVjIGR1
bXAgb3V0cHV0IGZpbGVuYW1lIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhpLCAiIiwgIkZvcndh
cmQgc3RyZWFtIGlucHV0IHdhdiBmaWxlbmFtZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcobywg
IiIsICJGb3J3YXJkIHN0cmVhbSBvdXRwdXQgd2F2IGZpbGVuYW1lIik7CitXRUJSVENfREVGSU5F
X3N0cmluZyhyaSwgIiIsICJSZXZlcnNlIHN0cmVhbSBpbnB1dCB3YXYgZmlsZW5hbWUiKTsKK1dF
QlJUQ19ERUZJTkVfc3RyaW5nKHJvLCAiIiwgIlJldmVyc2Ugc3RyZWFtIG91dHB1dCB3YXYgZmls
ZW5hbWUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGFydGlmaWNpYWxfbmVhcmVuZCwgIiIsICJB
cnRpZmljaWFsIG5lYXJlbmQgd2F2IGZpbGVuYW1lIik7CitXRUJSVENfREVGSU5FX2ludChvdXRw
dXRfbnVtX2NoYW5uZWxzLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmll
ZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiBmb3J3YXJkIHN0cmVhbSBvdXRw
dXQgY2hhbm5lbHMiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHJldmVyc2Vfb3V0cHV0X251bV9jaGFu
bmVscywKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICJOdW1iZXIgb2YgUmV2ZXJzZSBzdHJlYW0gb3V0cHV0IGNoYW5uZWxz
Iik7CitXRUJSVENfREVGSU5FX2ludChvdXRwdXRfc2FtcGxlX3JhdGVfaHosCisgICAgICAgICAg
ICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAi
Rm9yd2FyZCBzdHJlYW0gb3V0cHV0IHNhbXBsZSByYXRlIGluIEh6Iik7CitXRUJSVENfREVGSU5F
X2ludChyZXZlcnNlX291dHB1dF9zYW1wbGVfcmF0ZV9oeiwKKyAgICAgICAgICAgICAgICAgIGtQ
YXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJSZXZlcnNlIHN0
cmVhbSBvdXRwdXQgc2FtcGxlIHJhdGUgaW4gSHoiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChmaXhl
ZF9pbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgIlVzZSB0aGUgZml4ZWQgaW50ZXJmYWNlIHdoZW4gb3BlcmF0aW5nIG9uIHdhdiBmaWxlcyIp
OworV0VCUlRDX0RFRklORV9pbnQoYWVjLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5v
dFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFj
dGl2YXRlKDApIHRoZSBlY2hvIGNhbmNlbGxlciIpOworV0VCUlRDX0RFRklORV9pbnQoYWVjbSwK
KyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgbW9iaWxlIGVjaG8g
Y29udHJvbGxlciIpOworV0VCUlRDX0RFRklORV9pbnQoZWQsCisgICAgICAgICAgICAgICAgICBr
UGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUg
KDEpIG9yIGRlYWN0aXZhdGUgKDApIHRoZSByZXNpZHVhbCBlY2hvIGRldGVjdG9yIik7CitXRUJS
VENfREVGSU5FX3N0cmluZyhlZF9ncmFwaCwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAg
ICAgICAgICAgICAgICAgICAgIk91dHB1dCBmaWxlbmFtZSBmb3IgZ3JhcGggb2YgZWNobyBsaWtl
bGlob29kIik7CitXRUJSVENfREVGSU5FX2ludChhZ2MsCisgICAgICAgICAgICAgICAgICBrUGFy
YW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEp
IG9yIGRlYWN0aXZhdGUoMCkgdGhlIEFHQyIpOworV0VCUlRDX0RFRklORV9pbnQoYWdjMiwKKyAg
ICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgQUdDMiIpOworV0VCUlRD
X0RFRklORV9pbnQocHJlX2FtcGxpZmllciwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJO
b3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVh
Y3RpdmF0ZSgwKSB0aGUgcHJlIGFtcGxpZmllciIpOworV0VCUlRDX0RFRklORV9pbnQoaHBmLAor
ICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAg
ICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBoaWdoLXBhc3MgZmls
dGVyIik7CitXRUJSVENfREVGSU5FX2ludChucywKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0
ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3Ig
ZGVhY3RpdmF0ZSgwKSB0aGUgbm9pc2Ugc3VwcHJlc3NvciIpOworV0VCUlRDX0RFRklORV9pbnQo
dHMsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAg
ICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIHRyYW5zaWVu
dCBzdXBwcmVzc29yIik7CitXRUJSVENfREVGSU5FX2ludCh2YWQsCisgICAgICAgICAgICAgICAg
ICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZh
dGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIHZvaWNlIGFjdGl2aXR5IGRldGVjdG9yIik7CitX
RUJSVENfREVGSU5FX2ludChsZSwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVj
aWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0
ZSgwKSB0aGUgbGV2ZWwgZXN0aW1hdG9yIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgYWxs
X2RlZmF1bHQsCisgICAgZmFsc2UsCisgICAgIkFjdGl2YXRlIGFsbCBvZiB0aGUgZGVmYXVsdCBj
b21wb25lbnRzICh3aWxsIGJlIG92ZXJyaWRkZW4gYnkgYW55ICIKKyAgICAib3RoZXIgc2V0dGlu
Z3MpIik7CitXRUJSVENfREVGSU5FX2ludChhZWNfc3VwcHJlc3Npb25fbGV2ZWwsCisgICAgICAg
ICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAg
ICAiU2V0IHRoZSBhZWMgc3VwcHJlc3Npb24gbGV2ZWwgKDAtMikiKTsKK1dFQlJUQ19ERUZJTkVf
aW50KGRlbGF5X2Fnbm9zdGljLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNp
ZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRl
KDApIHRoZSBBRUMgZGVsYXkgYWdub3N0aWMgbW9kZSIpOworV0VCUlRDX0RFRklORV9pbnQoZXh0
ZW5kZWRfZmlsdGVyLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZh
bHVlLAorICAgICAgICAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRo
ZSBBRUMgZXh0ZW5kZWQgZmlsdGVyIG1vZGUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KAorICAgIGFl
YzMsCisgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICJBY3RpdmF0ZSAoMSkg
b3IgZGVhY3RpdmF0ZSgwKSB0aGUgZXhwZXJpbWVudGFsIEFFQyBtb2RlIEFFQzMiKTsKK1dFQlJU
Q19ERUZJTkVfaW50KGV4cGVyaW1lbnRhbF9hZ2MsCisgICAgICAgICAgICAgICAgICBrUGFyYW1l
dGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9y
IGRlYWN0aXZhdGUoMCkgdGhlIGV4cGVyaW1lbnRhbCBBR0MiKTsKK1dFQlJUQ19ERUZJTkVfaW50
KAorICAgIGV4cGVyaW1lbnRhbF9hZ2NfZGlzYWJsZV9kaWdpdGFsX2FkYXB0aXZlLAorICAgIGtQ
YXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAiRm9yY2UtZGVhY3RpdmF0ZSAoMSkgZGln
aXRhbCBhZGFwdGF0aW9uIGluICIKKyAgICAiZXhwZXJpbWVudGFsIEFHQy4gRGlnaXRhbCBhZGFw
dGF0aW9uIGlzIGFjdGl2ZSBieSBkZWZhdWx0ICgwKS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGV4
cGVyaW1lbnRhbF9hZ2NfYW5hbHl6ZV9iZWZvcmVfYWVjLAorICAgICAgICAgICAgICAgICAga1Bh
cmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIk1ha2UgbGV2ZWwg
ZXN0aW1hdGlvbiBoYXBwZW4gYmVmb3JlIEFFQyIKKyAgICAgICAgICAgICAgICAgICIgaW4gdGhl
IGV4cGVyaW1lbnRhbCBBR0MuIEFmdGVyIEFFQyBpcyB0aGUgZGVmYXVsdCAoMCkiKTsKK1dFQlJU
Q19ERUZJTkVfaW50KAogICAgIGV4cGVyaW1lbnRhbF9hZ2NfYWdjMl9sZXZlbF9lc3RpbWF0b3Is
CiAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAogICAgICJBR0MyIGxldmVsIGVzdGlt
YXRpb24iCiAgICAgIiBpbiB0aGUgZXhwZXJpbWVudGFsIEFHQy4gQUdDMSBsZXZlbCBlc3RpbWF0
aW9uIGlzIHRoZSBkZWZhdWx0ICgwKSIpOwotREVGSU5FX2ludCgKK1dFQlJUQ19ERUZJTkVfaW50
KAogICAgIHJlZmluZWRfYWRhcHRpdmVfZmlsdGVyLAogICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZp
ZWRWYWx1ZSwKICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIHJlZmluZWQg
YWRhcHRpdmUgZmlsdGVyIGZ1bmN0aW9uYWxpdHkiKTsKLURFRklORV9pbnQoYWdjX21vZGUsIGtQ
YXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwgIlNwZWNpZnkgdGhlIEFHQyBtb2RlICgwLTIpIik7
Ci1ERUZJTkVfaW50KGFnY190YXJnZXRfbGV2ZWwsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RT
cGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIlNwZWNpZnkgdGhlIEFHQyB0YXJnZXQgbGV2ZWwg
KDAtMzEpIik7Ci1ERUZJTkVfaW50KGFnY19saW1pdGVyLAotICAgICAgICAgICBrUGFyYW1ldGVy
Tm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0
ZSgwKSB0aGUgbGV2ZWwgZXN0aW1hdG9yIik7Ci1ERUZJTkVfaW50KGFnY19jb21wcmVzc2lvbl9n
YWluLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAg
ICJTcGVjaWZ5IHRoZSBBR0MgY29tcHJlc3Npb24gZ2FpbiAoMC05MCkiKTsKLURFRklORV9mbG9h
dChhZ2MyX2VuYWJsZV9hZGFwdGl2ZV9nYWluLAotICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RT
cGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUo
MCkgdGhlIEFHQzIgYWRhcHRpdmUgZ2FpbiIpOwotREVGSU5FX2Zsb2F0KGFnYzJfZml4ZWRfZ2Fp
bl9kYiwgMC5mLCAiQUdDMiBmaXhlZCBnYWluIChkQikgdG8gYXBwbHkiKTsKLURFRklORV9mbG9h
dChwcmVfYW1wbGlmaWVyX2dhaW5fZmFjdG9yLAotICAgICAgICAgICAgIDEuZiwKLSAgICAgICAg
ICAgICAiUHJlLWFtcGxpZmllciBnYWluIGZhY3RvciAobGluZWFyKSB0byBhcHBseSIpOwotREVG
SU5FX2ludCh2YWRfbGlrZWxpaG9vZCwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmll
ZFZhbHVlLAotICAgICAgICAgICAiU3BlY2lmeSB0aGUgVkFEIGxpa2VsaWhvb2QgKDAtMykiKTsK
LURFRklORV9pbnQobnNfbGV2ZWwsIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwgIlNwZWNp
ZnkgdGhlIE5TIGxldmVsICgwLTMpIik7Ci1ERUZJTkVfaW50KHN0cmVhbV9kZWxheSwKLSAgICAg
ICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiU3BlY2lmeSB0
aGUgc3RyZWFtIGRlbGF5IGluIG1zIHRvIHVzZSIpOwotREVGSU5FX2ludCh1c2Vfc3RyZWFtX2Rl
bGF5LAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAg
ICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSByZXBvcnRpbmcgdGhlIHN0cmVhbSBkZWxh
eSIpOwotREVGSU5FX2ludChzdHJlYW1fZHJpZnRfc2FtcGxlcywKLSAgICAgICAgICAga1BhcmFt
ZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiU3BlY2lmeSB0aGUgbnVtYmVyIG9m
IHN0cmVhbSBkcmlmdCBzYW1wbGVzIHRvIHVzZSIpOwotREVGSU5FX2ludChpbml0aWFsX21pY19s
ZXZlbCwgMTAwLCAiSW5pdGlhbCBtaWMgbGV2ZWwgKDAtMjU1KSIpOwotREVGSU5FX2ludChzaW11
bGF0ZV9taWNfZ2FpbiwKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBv
ciBkZWFjdGl2YXRlKDApIHRoZSBhbmFsb2cgbWljIGdhaW4gc2ltdWxhdGlvbiIpOwotREVGSU5F
X2ludChzaW11bGF0ZWRfbWljX2tpbmQsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZp
ZWRWYWx1ZSwKLSAgICAgICAgICAgIlNwZWNpZnkgd2hpY2ggbWljcm9waG9uZSBraW5kIHRvIHVz
ZSBmb3IgbWljcm9waG9uZSBzaW11bGF0aW9uIik7Ci1ERUZJTkVfYm9vbChwZXJmb3JtYW5jZV9y
ZXBvcnQsIGZhbHNlLCAiUmVwb3J0IHRoZSBBUE0gcGVyZm9ybWFuY2UgIik7Ci1ERUZJTkVfYm9v
bCh2ZXJib3NlLCBmYWxzZSwgIlByb2R1Y2UgdmVyYm9zZSBvdXRwdXQiKTsKLURFRklORV9ib29s
KHF1aWV0LCBmYWxzZSwgIkF2b2lkIHByb2R1Y2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJv
Z3Jlc3MuIik7Ci1ERUZJTkVfYm9vbChiaXRleGFjdG5lc3NfcmVwb3J0LAotICAgICAgICAgICAg
ZmFsc2UsCi0gICAgICAgICAgICAiUmVwb3J0IGJpdGV4YWN0bmVzcyBmb3IgYWVjIGR1bXAgcmVz
dWx0IHJlcHJvZHVjdGlvbiIpOwotREVGSU5FX2Jvb2woZGlzY2FyZF9zZXR0aW5nc19pbl9hZWNk
dW1wLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiRGlzY2FyZCBhbnkgY29uZmln
IHNldHRpbmdzIHNwZWNpZmllZCBpbiB0aGUgYWVjIGR1bXAiKTsKLURFRklORV9ib29sKHN0b3Jl
X2ludGVybWVkaWF0ZV9vdXRwdXQsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJD
cmVhdGVzIG5ldyBvdXRwdXQgZmlsZXMgYWZ0ZXIgZWFjaCBpbml0Iik7Ci1ERUZJTkVfc3RyaW5n
KGN1c3RvbV9jYWxsX29yZGVyX2ZpbGUsICIiLCAiQ3VzdG9tIHByb2Nlc3MgQVBJIGNhbGwgb3Jk
ZXIgZmlsZSIpOwotREVGSU5FX2Jvb2wocHJpbnRfYWVjM19wYXJhbWV0ZXJfdmFsdWVzLAotICAg
ICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUHJpbnQgcGFyYW1ldGVyIHZhbHVlcyB1c2Vk
IGluIEFFQzMgaW4gSlNPTi1mb3JtYXQiKTsKLURFRklORV9zdHJpbmcoYWVjM19zZXR0aW5ncywK
LSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJGaWxlIGluIEpTT04tZm9ybWF0IHdp
dGggY3VzdG9tIEFFQzMgc2V0dGluZ3MiKTsKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJp
bnQgdGhpcyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2ludChhZ2NfbW9kZSwKKyAgICAgICAg
ICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICJTcGVjaWZ5IHRoZSBBR0MgbW9kZSAoMC0yKSIpOworV0VCUlRDX0RFRklORV9pbnQoYWdjX3Rh
cmdldF9sZXZlbCwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1
ZSwKKyAgICAgICAgICAgICAgICAgICJTcGVjaWZ5IHRoZSBBR0MgdGFyZ2V0IGxldmVsICgwLTMx
KSIpOworV0VCUlRDX0RFRklORV9pbnQoYWdjX2xpbWl0ZXIsCisgICAgICAgICAgICAgICAgICBr
UGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUg
KDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIGxldmVsIGVzdGltYXRvciIpOworV0VCUlRDX0RFRklO
RV9pbnQoYWdjX2NvbXByZXNzaW9uX2dhaW4sCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVy
Tm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiU3BlY2lmeSB0aGUgQUdDIGNv
bXByZXNzaW9uIGdhaW4gKDAtOTApIik7CitXRUJSVENfREVGSU5FX2Zsb2F0KGFnYzJfZW5hYmxl
X2FkYXB0aXZlX2dhaW4sCisgICAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZp
ZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRl
KDApIHRoZSBBR0MyIGFkYXB0aXZlIGdhaW4iKTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoYWdjMl9m
aXhlZF9nYWluX2RiLCAwLmYsICJBR0MyIGZpeGVkIGdhaW4gKGRCKSB0byBhcHBseSIpOworCitz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0QWdjMkFkYXB0aXZlTGV2ZWxFc3RpbWF0b3JOYW1l
cygpIHsKKyAgcmV0dXJuIHsiUk1TIiwgInBlYWsifTsKK30KK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KAorICAgIGFnYzJfYWRhcHRpdmVfbGV2ZWxfZXN0aW1hdG9yLAorICAgICJSTVMiLAorICAgICJB
R0MyIGFkYXB0aXZlIGRpZ2l0YWwgbGV2ZWwgZXN0aW1hdG9yIHRvIHVzZSBbUk1TLCBwZWFrXSIp
OworCitXRUJSVENfREVGSU5FX2Zsb2F0KHByZV9hbXBsaWZpZXJfZ2Fpbl9mYWN0b3IsCisgICAg
ICAgICAgICAgICAgICAgIDEuZiwKKyAgICAgICAgICAgICAgICAgICAgIlByZS1hbXBsaWZpZXIg
Z2FpbiBmYWN0b3IgKGxpbmVhcikgdG8gYXBwbHkiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZhZF9s
aWtlbGlob29kLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVl
LAorICAgICAgICAgICAgICAgICAgIlNwZWNpZnkgdGhlIFZBRCBsaWtlbGlob29kICgwLTMpIik7
CitXRUJSVENfREVGSU5FX2ludChuc19sZXZlbCwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0
ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJTcGVjaWZ5IHRoZSBOUyBs
ZXZlbCAoMC0zKSIpOworV0VCUlRDX0RFRklORV9pbnQoc3RyZWFtX2RlbGF5LAorICAgICAgICAg
ICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAg
IlNwZWNpZnkgdGhlIHN0cmVhbSBkZWxheSBpbiBtcyB0byB1c2UiKTsKK1dFQlJUQ19ERUZJTkVf
aW50KHVzZV9zdHJlYW1fZGVsYXksCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3Bl
Y2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZh
dGUoMCkgcmVwb3J0aW5nIHRoZSBzdHJlYW0gZGVsYXkiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHN0
cmVhbV9kcmlmdF9zYW1wbGVzLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNp
ZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIlNwZWNpZnkgdGhlIG51bWJlciBvZiBzdHJl
YW0gZHJpZnQgc2FtcGxlcyB0byB1c2UiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGluaXRpYWxfbWlj
X2xldmVsLCAxMDAsICJJbml0aWFsIG1pYyBsZXZlbCAoMC0yNTUpIik7CitXRUJSVENfREVGSU5F
X2ludCgKKyAgICBzaW11bGF0ZV9taWNfZ2FpbiwKKyAgICAwLAorICAgICJBY3RpdmF0ZSAoMSkg
b3IgZGVhY3RpdmF0ZSgwKSB0aGUgYW5hbG9nIG1pYyBnYWluIHNpbXVsYXRpb24iKTsKK1dFQlJU
Q19ERUZJTkVfaW50KAorICAgIHNpbXVsYXRlZF9taWNfa2luZCwKKyAgICBrUGFyYW1ldGVyTm90
U3BlY2lmaWVkVmFsdWUsCisgICAgIlNwZWNpZnkgd2hpY2ggbWljcm9waG9uZSBraW5kIHRvIHVz
ZSBmb3IgbWljcm9waG9uZSBzaW11bGF0aW9uIik7CitXRUJSVENfREVGSU5FX2Jvb2wocGVyZm9y
bWFuY2VfcmVwb3J0LCBmYWxzZSwgIlJlcG9ydCB0aGUgQVBNIHBlcmZvcm1hbmNlICIpOworV0VC
UlRDX0RFRklORV9ib29sKHZlcmJvc2UsIGZhbHNlLCAiUHJvZHVjZSB2ZXJib3NlIG91dHB1dCIp
OworV0VCUlRDX0RFRklORV9ib29sKHF1aWV0LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAor
ICAgICAgICAgICAgICAgICAgICJBdm9pZCBwcm9kdWNpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhl
IHByb2dyZXNzLiIpOworV0VCUlRDX0RFRklORV9ib29sKGJpdGV4YWN0bmVzc19yZXBvcnQsCisg
ICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlJlcG9ydCBiaXRl
eGFjdG5lc3MgZm9yIGFlYyBkdW1wIHJlc3VsdCByZXByb2R1Y3Rpb24iKTsKK1dFQlJUQ19ERUZJ
TkVfYm9vbChkaXNjYXJkX3NldHRpbmdzX2luX2FlY2R1bXAsCisgICAgICAgICAgICAgICAgICAg
ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIkRpc2NhcmQgYW55IGNvbmZpZyBzZXR0aW5ncyBz
cGVjaWZpZWQgaW4gdGhlIGFlYyBkdW1wIik7CitXRUJSVENfREVGSU5FX2Jvb2woc3RvcmVfaW50
ZXJtZWRpYXRlX291dHB1dCwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAg
ICAgICAgICAiQ3JlYXRlcyBuZXcgb3V0cHV0IGZpbGVzIGFmdGVyIGVhY2ggaW5pdCIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcoY3VzdG9tX2NhbGxfb3JkZXJfZmlsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIkN1c3RvbSBwcm9jZXNzIEFQSSBjYWxs
IG9yZGVyIGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwcmludF9hZWMzX3BhcmFtZXRlcl92
YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlBy
aW50IHBhcmFtZXRlciB2YWx1ZXMgdXNlZCBpbiBBRUMzIGluIEpTT04tZm9ybWF0Iik7CitXRUJS
VENfREVGSU5FX3N0cmluZyhhZWMzX3NldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgIiIs
CisgICAgICAgICAgICAgICAgICAgICAiRmlsZSBpbiBKU09OLWZvcm1hdCB3aXRoIGN1c3RvbSBB
RUMzIHNldHRpbmdzIik7CitXRUJSVENfREVGSU5FX2Jvb2woZHVtcF9kYXRhLAorICAgICAgICAg
ICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJEdW1wIGludGVybmFsIGRhdGEg
ZHVyaW5nIHRoZSBjYWxsIChyZXF1aXJlcyBidWlsZCBmbGFnKSIpOworV0VCUlRDX0RFRklORV9z
dHJpbmcoZHVtcF9kYXRhX291dHB1dF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAg
ICAgICAgICAgICAgICAgICAgICJJbnRlcm5hbCBkYXRhIGR1bXAgb3V0cHV0IGRpcmVjdG9yeSIp
OworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlIik7
CiAKIHZvaWQgU2V0U2V0dGluZ0lmU3BlY2lmaWVkKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiog
cGFyYW1ldGVyKSB7CkBAIC0yMDgsNiArMjQyLDI3IEBAIHZvaWQgU2V0U2V0dGluZ0lmRmxhZ1Nl
dChpbnQzMl90IGZsYWcsIGFic2w6Om9wdGlvbmFsPGJvb2w+KiBwYXJhbWV0ZXIpIHsKICAgfQog
fQogCitBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIyOjpMZXZlbEVzdGlt
YXRvcgorTWFwQWdjMkFkYXB0aXZlTGV2ZWxFc3RpbWF0b3IoYWJzbDo6c3RyaW5nX3ZpZXcgbmFt
ZSkgeworICBpZiAobmFtZS5jb21wYXJlKCJSTVMiKSA9PSAwKSB7CisgICAgcmV0dXJuIEF1ZGlv
UHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yOjprUm1z
OworICB9CisgIGlmIChuYW1lLmNvbXBhcmUoInBlYWsiKSA9PSAwKSB7CisgICAgcmV0dXJuIEF1
ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yOjpr
UGVhazsKKyAgfQorICBhdXRvIGNvbmNhdF9zdHJpbmdzID0KKyAgICAgIFtdKGNvbnN0IHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiYgc3RyaW5ncykgLT4gc3RkOjpzdHJpbmcgeworICAgIHJ0Yzo6
U3RyaW5nQnVpbGRlciBzczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHMgOiBzdHJpbmdzKSB7Cisg
ICAgICBzcyA8PCAiICIgPDwgczsKKyAgICB9CisgICAgcmV0dXJuIHNzLlJlbGVhc2UoKTsKKyAg
fTsKKyAgUlRDX0NIRUNLKGZhbHNlKQorICAgICAgPDwgIkludmFsaWQgdmFsdWUgZm9yIGFnYzJf
YWRhcHRpdmVfbGV2ZWxfZXN0aW1hdG9yLCB2YWxpZCBvcHRpb25zOiIKKyAgICAgIDw8IGNvbmNh
dF9zdHJpbmdzKEdldEFnYzJBZGFwdGl2ZUxldmVsRXN0aW1hdG9yTmFtZXMoKSkgPDwgIi4iOwor
fQorCiBTaW11bGF0aW9uU2V0dGluZ3MgQ3JlYXRlU2V0dGluZ3MoKSB7CiAgIFNpbXVsYXRpb25T
ZXR0aW5ncyBzZXR0aW5nczsKICAgaWYgKEZMQUdfYWxsX2RlZmF1bHQpIHsKQEAgLTI3NSw2ICsz
MzAsOCBAQCBTaW11bGF0aW9uU2V0dGluZ3MgQ3JlYXRlU2V0dGluZ3MoKSB7CiAgIFNldFNldHRp
bmdJZkZsYWdTZXQoRkxBR19hZ2MyX2VuYWJsZV9hZGFwdGl2ZV9nYWluLAogICAgICAgICAgICAg
ICAgICAgICAgICZzZXR0aW5ncy5hZ2MyX3VzZV9hZGFwdGl2ZV9nYWluKTsKICAgc2V0dGluZ3Mu
YWdjMl9maXhlZF9nYWluX2RiID0gRkxBR19hZ2MyX2ZpeGVkX2dhaW5fZGI7CisgIHNldHRpbmdz
LmFnYzJfYWRhcHRpdmVfbGV2ZWxfZXN0aW1hdG9yID0KKyAgICAgIE1hcEFnYzJBZGFwdGl2ZUxl
dmVsRXN0aW1hdG9yKEZMQUdfYWdjMl9hZGFwdGl2ZV9sZXZlbF9lc3RpbWF0b3IpOwogICBzZXR0
aW5ncy5wcmVfYW1wbGlmaWVyX2dhaW5fZmFjdG9yID0gRkxBR19wcmVfYW1wbGlmaWVyX2dhaW5f
ZmFjdG9yOwogICBTZXRTZXR0aW5nSWZTcGVjaWZpZWQoRkxBR192YWRfbGlrZWxpaG9vZCwgJnNl
dHRpbmdzLnZhZF9saWtlbGlob29kKTsKICAgU2V0U2V0dGluZ0lmU3BlY2lmaWVkKEZMQUdfbnNf
bGV2ZWwsICZzZXR0aW5ncy5uc19sZXZlbCk7CkBAIC0yOTYsNiArMzUzLDkgQEAgU2ltdWxhdGlv
blNldHRpbmdzIENyZWF0ZVNldHRpbmdzKCkgewogICBzZXR0aW5ncy5maXhlZF9pbnRlcmZhY2Ug
PSBGTEFHX2ZpeGVkX2ludGVyZmFjZTsKICAgc2V0dGluZ3Muc3RvcmVfaW50ZXJtZWRpYXRlX291
dHB1dCA9IEZMQUdfc3RvcmVfaW50ZXJtZWRpYXRlX291dHB1dDsKICAgc2V0dGluZ3MucHJpbnRf
YWVjM19wYXJhbWV0ZXJfdmFsdWVzID0gRkxBR19wcmludF9hZWMzX3BhcmFtZXRlcl92YWx1ZXM7
CisgIHNldHRpbmdzLmR1bXBfaW50ZXJuYWxfZGF0YSA9IEZMQUdfZHVtcF9kYXRhOworICBTZXRT
ZXR0aW5nSWZTcGVjaWZpZWQoRkxBR19kdW1wX2RhdGFfb3V0cHV0X2RpciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICZzZXR0aW5ncy5kdW1wX2ludGVybmFsX2RhdGFfb3V0cHV0X2Rpcik7CiAK
ICAgcmV0dXJuIHNldHRpbmdzOwogfQpAQCAtNDQ2LDYgKzUwNiwxNSBAQCB2b2lkIFBlcmZvcm1C
YXNpY1BhcmFtZXRlclNhbml0eUNoZWNrcyhjb25zdCBTaW11bGF0aW9uU2V0dGluZ3MmIHNldHRp
bmdzKSB7CiAgICAgICBzZXR0aW5ncy5hcnRpZmljaWFsX25lYXJlbmRfZmlsZW5hbWUgJiYKICAg
ICAgICAgICAhdmFsaWRfd2F2X25hbWUoKnNldHRpbmdzLmFydGlmaWNpYWxfbmVhcmVuZF9maWxl
bmFtZSksCiAgICAgICAiRXJyb3I6IC0tYXJ0aWZpY2FsX25lYXJlbmQgbXVzdCBiZSBhIHZhbGlk
IC53YXYgZmlsZSBuYW1lLlxuIik7CisKKyAgUmVwb3J0Q29uZGl0aW9uYWxFcnJvckFuZEV4aXQo
CisgICAgICBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMCAmJiBzZXR0aW5ncy5kdW1wX2ludGVy
bmFsX2RhdGEsCisgICAgICAiRXJyb3I6IC0tZHVtcF9kYXRhIGNhbm5vdCBiZSBzZXQgd2l0aG91
dCBwcm9wZXIgYnVpbGQgc3VwcG9ydC5cbiIpOworCisgIFJlcG9ydENvbmRpdGlvbmFsRXJyb3JB
bmRFeGl0KAorICAgICAgIXNldHRpbmdzLmR1bXBfaW50ZXJuYWxfZGF0YSAmJgorICAgICAgICAg
IHNldHRpbmdzLmR1bXBfaW50ZXJuYWxfZGF0YV9vdXRwdXRfZGlyLmhhc192YWx1ZSgpLAorICAg
ICAgIkVycm9yOiAtLWR1bXBfZGF0YV9vdXRwdXRfZGlyIGNhbm5vdCBiZSBzZXQgd2l0aG91dCAt
LWR1bXBfZGF0YS5cbiIpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0
L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9CVUlMRC5nbgppbmRleCA3MjFlYmM3ZWU1NjY5ZjU1MmEx
ZWVjOTZiNDIxMWE4MjJhNjU4ZDc0Li41NTE3ODFiOGJjOTBhNmJmYWQ1MzBhYTM4MTdlNThmOWE3
OTRiOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gv
QlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVyc2F0aW9uYWxfc3BlZWNoL0JVSUxE
LmduCkBAIC01MSw2ICs1MSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgibGliIikgewogICAgICIu
Li8uLi8uLi8uLi9jb21tb25fYXVkaW8iLAogICAgICIuLi8uLi8uLi8uLi9ydGNfYmFzZTpjaGVj
a3MiLAogICAgICIuLi8uLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAg
Ii4uLy4uLy4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5IiwKICAgXQogICB2aXNpYmlsaXR5ID0gWyAiOioiIF0gICMgT25seSB0
YXJnZXRzIGluIHRoaXMgZmlsZSBjYW4gZGVwZW5kIG9uIHRoaXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvZ2VuZXJhdG9yLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3Rlc3QvY29udmVyc2F0aW9uYWxfc3BlZWNoL2dlbmVyYXRvci5jYwppbmRleCA3NDFhMWNhODZi
YTIxMGJmNTgyOTBjODI4MDVhMTc1ZDJhYjkzMmU1Li5mYTU2MWNmOGUwNTUxNmE4YzBmYWNjYmVj
NTc3OGJhY2I0YjdhNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25h
bF9zcGVlY2gvZ2VuZXJhdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFs
X3NwZWVjaC9nZW5lcmF0b3IuY2MKQEAgLTMyLDEwICszMiwxMCBAQCBjb25zdCBjaGFyIGtVc2Fn
ZURlc2NyaXB0aW9uW10gPQogICAgICJDb21tYW5kLWxpbmUgdG9vbCB0byBnZW5lcmF0ZSBtdWx0
aXBsZS1lbmQgYXVkaW8gdHJhY2tzIHRvIHNpbXVsYXRlICIKICAgICAiY29udmVyc2F0aW9uYWwg
c3BlZWNoIHdpdGggdHdvIG9yIG1vcmUgcGFydGljaXBhbnRzLlxuIjsKIAotREVGSU5FX3N0cmlu
ZyhpLCAiIiwgIkRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBzcGVlY2ggdHVybiB3YXYgZmlsZXMi
KTsKLURFRklORV9zdHJpbmcodCwgIiIsICJQYXRoIHRvIHRoZSB0aW1pbmcgdGV4dCBmaWxlIik7
Ci1ERUZJTkVfc3RyaW5nKG8sICIiLCAiT3V0cHV0IHdhdiBmaWxlcyBkZXN0aW5hdGlvbiBwYXRo
Iik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dF
QlJUQ19ERUZJTkVfc3RyaW5nKGksICIiLCAiRGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHNwZWVj
aCB0dXJuIHdhdiBmaWxlcyIpOworV0VCUlRDX0RFRklORV9zdHJpbmcodCwgIiIsICJQYXRoIHRv
IHRoZSB0aW1pbmcgdGV4dCBmaWxlIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhvLCAiIiwgIk91
dHB1dCB3YXYgZmlsZXMgZGVzdGluYXRpb24gcGF0aCIpOworV0VCUlRDX0RFRklORV9ib29sKGhl
bHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZSIpOwogCiB9ICAvLyBuYW1lc3BhY2UKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVyc2F0aW9uYWxfc3BlZWNoL21vY2tfd2F2
cmVhZGVyX2ZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gv
bW9ja193YXZyZWFkZXJfZmFjdG9yeS5jYwppbmRleCBlYjhlM2JlZDNjNTEwMTgxY2NjNDY5Mzhh
ZDRiMzZjYWYxZjE3NGQ0Li5hNDVlM2JiZmE3MmZiZWU1YzhhNjU5YjA2NWE2YThmOGYzMGQyOTVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbW9ja193
YXZyZWFkZXJfZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9z
cGVlY2gvbW9ja193YXZyZWFkZXJfZmFjdG9yeS5jYwpAQCAtMTIsNyArMTIsNiBAQAogCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVyc2F0aW9uYWxfc3BlZWNo
L21vY2tfd2F2cmVhZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3BhdGh1dGlscy5oIgogI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CkBAIC0zOSw5ICszOCwxMCBAQCBNb2NrV2F2UmVhZGVyRmFjdG9yeTo6
fk1vY2tXYXZSZWFkZXJGYWN0b3J5KCkgPSBkZWZhdWx0Owogc3RkOjp1bmlxdWVfcHRyPFdhdlJl
YWRlckludGVyZmFjZT4gTW9ja1dhdlJlYWRlckZhY3Rvcnk6OkNyZWF0ZU1vY2soCiAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIGZpbGVwYXRoKSB7CiAgIC8vIFNlYXJjaCB0aGUgcGFyYW1ldGVycyBj
b3JyZXNwb25kaW5nIHRvIGZpbGVwYXRoLgotICBjb25zdCBydGM6OlBhdGhuYW1lIGF1ZGlvdHJh
Y2tfZmlsZV9wYXRoKGZpbGVwYXRoKTsKLSAgY29uc3QgYXV0byBpdCA9Ci0gICAgICBhdWRpb3Ry
YWNrX25hbWVzX3BhcmFtc18uZmluZChhdWRpb3RyYWNrX2ZpbGVfcGF0aC5maWxlbmFtZSgpKTsK
KyAgc2l6ZV90IGRlbGltaXRlciA9IGZpbGVwYXRoLmZpbmRfbGFzdF9vZigiL1xcIik7ICAvLyBF
aXRoZXIgd2luZG93cyBvciBwb3NpeAorICBzdGQ6OnN0cmluZyBmaWxlbmFtZSA9CisgICAgICBm
aWxlcGF0aC5zdWJzdHIoZGVsaW1pdGVyID09IHN0ZDo6c3RyaW5nOjpucG9zID8gMCA6IGRlbGlt
aXRlciArIDEpOworICBjb25zdCBhdXRvIGl0ID0gYXVkaW90cmFja19uYW1lc19wYXJhbXNfLmZp
bmQoZmlsZW5hbWUpOwogCiAgIC8vIElmIG5vdCBmb3VuZCwgdXNlIGRlZmF1bHQgcGFyYW1ldGVy
cy4KICAgaWYgKGl0ID09IGF1ZGlvdHJhY2tfbmFtZXNfcGFyYW1zXy5lbmQoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVyc2F0aW9uYWxfc3BlZWNoL211bHRpZW5kX2NhbGwu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbXVsdGllbmRfY2FsbC5j
YwppbmRleCBkNjMzZDkwZTljNDI2YTI3NjVmNmFhZTIxOWM1YmM5MjA2NDY0OWM4Li40ZTJmNTRk
MTUwOTU3OWQzZDUzZmExMTUyMmQ2YTRkYWMyNzcxN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbXVsdGllbmRfY2FsbC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbXVsdGllbmRfY2FsbC5jYwpAQCAtMTQsNyAr
MTQsNyBAQAogI2luY2x1ZGUgPGl0ZXJhdG9yPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2lu
Zy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3BhdGh1dGlscy5oIgorI2luY2x1ZGUgInRlc3QvdGVz
dHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRl
c3QgewpAQCAtNTAsMTMgKzUwLDEzIEBAIGJvb2wgTXVsdGlFbmRDYWxsOjpDcmVhdGVBdWRpb1Ry
YWNrUmVhZGVycygpIHsKICAgICBpZiAoaXQgIT0gYXVkaW90cmFja19yZWFkZXJzXy5lbmQoKSkK
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgLy8gSW5zdGFuY2UgUGF0aG5hbWUgdG8gcmV0cmlldmUg
dGhlIGZ1bGwgcGF0aCB0byB0aGUgYXVkaW90cmFjayBmaWxlLgotICAgIGNvbnN0IHJ0Yzo6UGF0
aG5hbWUgYXVkaW90cmFja19maWxlX3BhdGgoYXVkaW90cmFja3NfcGF0aF8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dXJuLmF1ZGlvdHJhY2tfZmlsZV9u
YW1lKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBhdWRpb3RyYWNrX2ZpbGVfcGF0aCA9CisgICAg
ICAgIHRlc3Q6OkpvaW5GaWxlbmFtZShhdWRpb3RyYWNrc19wYXRoXywgdHVybi5hdWRpb3RyYWNr
X2ZpbGVfbmFtZSk7CiAKICAgICAvLyBNYXAgdGhlIGF1ZGlvdHJhY2sgZmlsZSBuYW1lIHRvIGEg
bmV3IGluc3RhbmNlIG9mIFdhdlJlYWRlckludGVyZmFjZS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2F2UmVhZGVySW50ZXJmYWNlPiB3YXZyZWFkZXIgPQotICAgICAgICB3YXZyZWFkZXJfYWJzdHJh
Y3RfZmFjdG9yeV8tPkNyZWF0ZShhdWRpb3RyYWNrX2ZpbGVfcGF0aC5wYXRobmFtZSgpKTsKKyAg
ICAgICAgd2F2cmVhZGVyX2Fic3RyYWN0X2ZhY3RvcnlfLT5DcmVhdGUoCisgICAgICAgICAgICB0
ZXN0OjpKb2luRmlsZW5hbWUoYXVkaW90cmFja3NfcGF0aF8sIHR1cm4uYXVkaW90cmFja19maWxl
X25hbWUpKTsKIAogICAgIGlmIChzYW1wbGVfcmF0ZV9oel8gPT0gMCkgewogICAgICAgc2FtcGxl
X3JhdGVfaHpfID0gd2F2cmVhZGVyLT5TYW1wbGVSYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvc2ltdWxhdG9yLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rl
c3QvY29udmVyc2F0aW9uYWxfc3BlZWNoL3NpbXVsYXRvci5jYwppbmRleCBjMmZiNzgwOGUwOGU2
MTAyNTcxNTU4ZmJhNjFmNTU3MmJjZmU5YzQ4Li5jNDAwNDk5ZmQzNDEwMzAwNmM0ZDhhMjBlMDhh
YTczZWYwOTQwNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9z
cGVlY2gvc2ltdWxhdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3Nw
ZWVjaC9zaW11bGF0b3IuY2MKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9j
b25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9wYXRodXRpbHMuaCIKKyNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKQEAgLTQ2LDIxICs0Niwy
MCBAQCBJbml0U3BlYWtlck91dHB1dEZpbGVQYXRocyhjb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmlu
Zz4mIHNwZWFrZXJfbmFtZXMsCiAKICAgLy8gQWRkIG5lYXItZW5kIGFuZCBmYXItZW5kIG91dHB1
dCBwYXRocyBpbnRvIHRoZSBtYXAuCiAgIGZvciAoY29uc3QgYXV0byYgc3BlYWtlcl9uYW1lIDog
c3BlYWtlcl9uYW1lcykgewotICAgIGNvbnN0IHJ0Yzo6UGF0aG5hbWUgbmVhcl9lbmRfcGF0aChv
dXRwdXRfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNfIiAr
IHNwZWFrZXJfbmFtZSArICItbmVhcl9lbmQud2F2Iik7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
bmVhcl9lbmRfcGF0aCA9CisgICAgICAgIHRlc3Q6OkpvaW5GaWxlbmFtZShvdXRwdXRfcGF0aCwg
InNfIiArIHNwZWFrZXJfbmFtZSArICItbmVhcl9lbmQud2F2Iik7CiAgICAgUlRDX0xPRyhMU19W
RVJCT1NFKSA8PCAiVGhlIG5lYXItZW5kIGF1ZGlvIHRyYWNrIHdpbGwgYmUgY3JlYXRlZCBpbiAi
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8PCBuZWFyX2VuZF9wYXRoLnBhdGhuYW1lKCkgPDwg
Ii4iOworICAgICAgICAgICAgICAgICAgICAgICAgPDwgbmVhcl9lbmRfcGF0aCA8PCAiLiI7CiAK
LSAgICBjb25zdCBydGM6OlBhdGhuYW1lIGZhcl9lbmRfcGF0aChvdXRwdXRfcGF0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic18iICsgc3BlYWtlcl9uYW1lICsgIi1m
YXJfZW5kLndhdiIpOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZhcl9lbmRfcGF0aCA9CisgICAg
ICAgIHRlc3Q6OkpvaW5GaWxlbmFtZShvdXRwdXRfcGF0aCwgInNfIiArIHNwZWFrZXJfbmFtZSAr
ICItZmFyX2VuZC53YXYiKTsKICAgICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICJUaGUgZmFyLWVu
ZCBhdWRpbyB0cmFjayB3aWxsIGJlIGNyZWF0ZWQgaW4gIgotICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgZmFyX2VuZF9wYXRoLnBhdGhuYW1lKCkgPDwgIi4iOworICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgZmFyX2VuZF9wYXRoIDw8ICIuIjsKIAogICAgIC8vIEFkZCB0byBtYXAuCiAgICAg
c3BlYWtlcl9vdXRwdXRfZmlsZV9wYXRoc19tYXAtPmVtcGxhY2UoCiAgICAgICAgIHN0ZDo6cGll
Y2V3aXNlX2NvbnN0cnVjdCwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHNwZWFrZXJfbmFtZSksCi0g
ICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShuZWFyX2VuZF9wYXRoLnBhdGhuYW1lKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJfZW5kX3BhdGgucGF0aG5hbWUoKSkpOwor
ICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUobmVhcl9lbmRfcGF0aCwgZmFyX2VuZF9wYXRo
KSk7CiAgIH0KIAogICByZXR1cm4gc3BlYWtlcl9vdXRwdXRfZmlsZV9wYXRoc19tYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nl
c3NtZW50L2FwbV92YWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQv
cXVhbGl0eV9hc3Nlc3NtZW50L2FwbV92YWQuY2MKaW5kZXggYTYxODRiNWY5ZmRhMDExZmE3ZDY4
YWU0YzdhN2VmNTI2NzE2NTE3ZS4uNGI2YWRhMjdiNmE2ZjgyYzE3ZTg2ZjUwNzdmYzg4MTI4ZmY2
YTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvcHlfcXVhbGl0eV9hc3Nlc3NtZW50L3F1
YWxpdHlfYXNzZXNzbWVudC9hcG1fdmFkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxp
dHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vzc21lbnQvYXBtX3ZhZC5jYwpAQCAtMjQsOSArMjQs
OSBAQCBjb25zdGV4cHIgaW50IGtNYXhTYW1wbGVSYXRlID0gNDgwMDA7CiBjb25zdGV4cHIgc2l6
ZV90IGtNYXhGcmFtZUxlbiA9CiAgICAga0F1ZGlvRnJhbWVMZW5ndGhNaWxsaXNlY29uZHMgKiBr
TWF4U2FtcGxlUmF0ZSAvIDEwMDA7CiAKLURFRklORV9zdHJpbmcoaSwgIiIsICJJbnB1dCB3YXYg
ZmlsZSIpOwotREVGSU5FX3N0cmluZyhvX3Byb2JzLCAiIiwgIlZBRCBwcm9iYWJpbGl0aWVzIG91
dHB1dCBmaWxlIik7Ci1ERUZJTkVfc3RyaW5nKG9fcm1zLCAiIiwgIlZBRCBvdXRwdXQgZmlsZSIp
OworV0VCUlRDX0RFRklORV9zdHJpbmcoaSwgIiIsICJJbnB1dCB3YXYgZmlsZSIpOworV0VCUlRD
X0RFRklORV9zdHJpbmcob19wcm9icywgIiIsICJWQUQgcHJvYmFiaWxpdGllcyBvdXRwdXQgZmls
ZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob19ybXMsICIiLCAiVkFEIG91dHB1dCBmaWxlIik7
CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgaWYgKHJ0Yzo6RmxhZ0xp
c3Q6OlNldEZsYWdzRnJvbUNvbW1hbmRMaW5lKCZhcmdjLCBhcmd2LCB0cnVlKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vzc21l
bnQvc291bmRfbGV2ZWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQv
cXVhbGl0eV9hc3Nlc3NtZW50L3NvdW5kX2xldmVsLmNjCmluZGV4IDk4Y2Y4NGM4ODhmN2I1YzEz
Zjg0YzBlM2ZiZTRlYjI1OTJiYzA2YWMuLjM1YTJjMTFhZWIyMjc5Y2RmYjNlM2ZkMWNhZmMzMTU3
ZWI2Mjc4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVu
dC9xdWFsaXR5X2Fzc2Vzc21lbnQvc291bmRfbGV2ZWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3Qv
cHlfcXVhbGl0eV9hc3Nlc3NtZW50L3F1YWxpdHlfYXNzZXNzbWVudC9zb3VuZF9sZXZlbC5jYwpA
QCAtMjYsMTMgKzI2LDEzIEBAIGNvbnN0ZXhwciBzaXplX3Qga01heEZyYW1lTGVuID0ga01heEZy
YW1lTGVuTXMgKiBrTWF4U2FtcGxlUmF0ZSAvIDEwMDA7CiAKIGNvbnN0IGRvdWJsZSBrT25lRGJS
ZWR1Y3Rpb24gPSBEYlRvUmF0aW8oLTEuMCk7CiAKLURFRklORV9zdHJpbmcoaSwgIiIsICJJbnB1
dCB3YXYgZmlsZSIpOwotREVGSU5FX3N0cmluZyhvYywgIiIsICJDb25maWcgb3V0cHV0IGZpbGUi
KTsKLURFRklORV9zdHJpbmcob2wsICIiLCAiTGV2ZWxzIG91dHB1dCBmaWxlIik7Ci1ERUZJTkVf
ZmxvYXQoYSwgNS5mLCAiQXR0YWNrIChtcykiKTsKLURFRklORV9mbG9hdChkLCAyMC5mLCAiRGVj
YXkgKG1zKSIpOwotREVGSU5FX2ludChmLCAxMCwgIkZyYW1lIGxlbmd0aCAobXMpIik7Ci1ERUZJ
TkVfYm9vbChoZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJ
TkVfc3RyaW5nKGksICIiLCAiSW5wdXQgd2F2IGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KG9jLCAiIiwgIkNvbmZpZyBvdXRwdXQgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob2ws
ICIiLCAiTGV2ZWxzIG91dHB1dCBmaWxlIik7CitXRUJSVENfREVGSU5FX2Zsb2F0KGEsIDUuZiwg
IkF0dGFjayAobXMpIik7CitXRUJSVENfREVGSU5FX2Zsb2F0KGQsIDIwLmYsICJEZWNheSAobXMp
Iik7CitXRUJSVENfREVGSU5FX2ludChmLCAxMCwgIkZyYW1lIGxlbmd0aCAobXMpIik7CitXRUJS
VENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CiAKIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgaWYgKHJ0Yzo6RmxhZ0xpc3Q6OlNl
dEZsYWdzRnJvbUNvbW1hbmRMaW5lKCZhcmdjLCBhcmd2LCB0cnVlKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3Rlc3QvcHlfcXVhbGl0eV9hc3Nlc3NtZW50L3F1YWxpdHlfYXNzZXNzbWVudC92
YWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nl
c3NtZW50L3ZhZC5jYwppbmRleCAxOTFjYjFlOWZjZmQxNTJmOWUwOTQzNzY4ZjBmNWIzNmRmZTcy
NTk4Li44YTEzNGVkMTg1ZDljZTk2MDNhZDdkMWJjNTU5YzRhZmMzYmEzNTI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nlc3NtZW50
L3ZhZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0
eV9hc3Nlc3NtZW50L3ZhZC5jYwpAQCAtMjcsOCArMjcsOCBAQCBjb25zdGV4cHIgc2l6ZV90IGtN
YXhGcmFtZUxlbiA9CiAKIGNvbnN0ZXhwciB1aW50OF90IGtCaXRtYXNrQnVmZlNpemUgPSA4Owog
Ci1ERUZJTkVfc3RyaW5nKGksICIiLCAiSW5wdXQgd2F2IGZpbGUiKTsKLURFRklORV9zdHJpbmco
bywgIiIsICJWQUQgb3V0cHV0IGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGksICIiLCAi
SW5wdXQgd2F2IGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKG8sICIiLCAiVkFEIG91dHB1
dCBmaWxlIik7CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgaWYgKHJ0
Yzo6RmxhZ0xpc3Q6OlNldEZsYWdzRnJvbUNvbW1hbmRMaW5lKCZhcmdjLCBhcmd2LCB0cnVlKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvbW92aW5nX21vbWVudHMuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvdHJhbnNpZW50L21vdmluZ19tb21lbnRzLmNjCmluZGV4IGExOTliYjBjMWI5ZDNlMWMw
N2JjZWExMjg3NTM0ZDFhZGUwOTE3NTIuLjgzODEwYmZlM2MyNzZlYjAwMjJkMGI4MzQ4ZmUwNzA4
ODFmNmE0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvbW92aW5nX21vbWVudHMu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC9tb3ZpbmdfbW9tZW50cy5jYwpAQCAtMTAsNyAr
MTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC9t
b3ZpbmdfbW9tZW50cy5oIgogCi0jaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8YWxnb3JpdGht
PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy90cmFuc2llbnQvdHJhbnNpZW50X2RldGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90
cmFuc2llbnRfZGV0ZWN0b3IuY2MKaW5kZXggYzNiZjI4MmIwZTFmZjE3ZDFhZTdiNDg3ODliMTUx
MjBiNTdmMjExYy4uODk5N2Q0YzA5MjA2ZmFhZTNhNWM0Y2E0MWQ0MjBlOWVlZWY1OGFjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2llbnRfZGV0ZWN0b3IuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2llbnRfZGV0ZWN0b3IuY2MKQEAgLTEzLDEyICsxMywx
MiBAQAogI2luY2x1ZGUgPGZsb2F0Lmg+CiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0
cmluZy5oPgotCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3RyYW5zaWVudC9jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdHJhbnNpZW50L2RhdWJlY2hpZXNfOF93YXZlbGV0X2NvZWZmcy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvbW92aW5nX21vbWVudHMu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3dwZF9ub2Rl
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC93cGRfdHJl
ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdHJhbnNpZW50L3RyYW5zaWVudF9kZXRlY3Rvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90
cmFuc2llbnRfZGV0ZWN0b3IuaAppbmRleCAzMjY3YjNhNmNkYzRhNWE2NjZiN2I0ZWQxYjg3ODQ1
ZmVhY2E4MjlhLi4yM2I4OGY4MmIxMGNmMmU2ZWMzNzcyOGIxMTYzMWM3YTJlMTc1YWMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9kZXRlY3Rvci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy90cmFuc2llbnQvdHJhbnNpZW50X2RldGVjdG9yLmgKQEAgLTExLDYgKzExLDcgQEAK
ICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX1RSQU5TSUVOVF9UUkFOU0lFTlRfREVU
RUNUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX1RSQU5TSUVOVF9UUkFO
U0lFTlRfREVURUNUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGRlcXVl
PgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90
cmFuc2llbnRfc3VwcHJlc3Npb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvdHJhbnNp
ZW50X3N1cHByZXNzaW9uX3Rlc3QuY2MKaW5kZXggOWU3ZWNkNTc4NjUyZTQ2YjQ0NjJmOTc3Mzlj
NmE0Y2U2NTBhYjM0Mi4uZTE1ZjY5YzA0MjAxNTUwZWExNjIyZTg0M2Q4YjdhMjUyYjk1MTEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2llbnRfc3VwcHJlc3Npb25fdGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9zdXBwcmVzc2lvbl90ZXN0
LmNjCkBAIC0yMywyNiArMjMsMjggQEAKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVk
ZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKIAotREVGSU5FX3N0cmluZyhpbl9maWxl
X25hbWUsICIiLCAiUENNIGZpbGUgdGhhdCBjb250YWlucyB0aGUgc2lnbmFsLiIpOwotREVGSU5F
X3N0cmluZyhkZXRlY3Rpb25fZmlsZV9uYW1lLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAg
ICAgICAgIlBDTSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIGRldGVjdGlvbiBzaWduYWwuIik7Ci1E
RUZJTkVfc3RyaW5nKHJlZmVyZW5jZV9maWxlX25hbWUsCi0gICAgICAgICAgICAgICIiLAotICAg
ICAgICAgICAgICAiUENNIGZpbGUgdGhhdCBjb250YWlucyB0aGUgcmVmZXJlbmNlIHNpZ25hbC4i
KTsKLQotREVGSU5FX2ludChjaHVua19zaXplX21zLAotICAgICAgICAgICAxMCwKLSAgICAgICAg
ICAgIlRpbWUgYmV0d2VlbiBlYWNoIGNodW5rIG9mIHNhbXBsZXMgaW4gbWlsbGlzZWNvbmRzLiIp
OwotCi1ERUZJTkVfaW50KHNhbXBsZV9yYXRlX2h6LCAxNjAwMCwgIlNhbXBsaW5nIGZyZXF1ZW5j
eSBvZiB0aGUgc2lnbmFsIGluIEhlcnR6LiIpOwotREVGSU5FX2ludChkZXRlY3Rpb25fcmF0ZV9o
eiwKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIlNhbXBsaW5nIGZyZXF1ZW5jeSBvZiB0aGUg
ZGV0ZWN0aW9uIHNpZ25hbCBpbiBIZXJ0ei4iKTsKLQotREVGSU5FX2ludChudW1fY2hhbm5lbHMs
IDEsICJOdW1iZXIgb2YgY2hhbm5lbHMuIik7Ci0KLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAi
UHJpbnQgdGhpcyBtZXNzYWdlLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoaW5fZmlsZV9uYW1l
LCAiIiwgIlBDTSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHNpZ25hbC4iKTsKK1dFQlJUQ19ERUZJ
TkVfc3RyaW5nKGRldGVjdGlvbl9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiIiwK
KyAgICAgICAgICAgICAgICAgICAgICJQQ00gZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBkZXRlY3Rp
b24gc2lnbmFsLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcocmVmZXJlbmNlX2ZpbGVfbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIlBDTSBmaWxl
IHRoYXQgY29udGFpbnMgdGhlIHJlZmVyZW5jZSBzaWduYWwuIik7CisKK1dFQlJUQ19ERUZJTkVf
aW50KGNodW5rX3NpemVfbXMsCisgICAgICAgICAgICAgICAgICAxMCwKKyAgICAgICAgICAgICAg
ICAgICJUaW1lIGJldHdlZW4gZWFjaCBjaHVuayBvZiBzYW1wbGVzIGluIG1pbGxpc2Vjb25kcy4i
KTsKKworV0VCUlRDX0RFRklORV9pbnQoc2FtcGxlX3JhdGVfaHosCisgICAgICAgICAgICAgICAg
ICAxNjAwMCwKKyAgICAgICAgICAgICAgICAgICJTYW1wbGluZyBmcmVxdWVuY3kgb2YgdGhlIHNp
Z25hbCBpbiBIZXJ0ei4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGRldGVjdGlvbl9yYXRlX2h6LAor
ICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJTYW1wbGluZyBmcmVxdWVu
Y3kgb2YgdGhlIGRldGVjdGlvbiBzaWduYWwgaW4gSGVydHouIik7CisKK1dFQlJUQ19ERUZJTkVf
aW50KG51bV9jaGFubmVscywgMSwgIk51bWJlciBvZiBjaGFubmVscy4iKTsKKworV0VCUlRDX0RF
RklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlLiIpOwogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2llbnRf
c3VwcHJlc3Nvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2llbnRfc3VwcHJlc3Nvci5o
CmluZGV4IDlhZTNmYzY2MGE4ODFlMmRmYzUxZjVmNzliNzNhNDZhYmVmODE5YTAuLmFlNTE5NjZh
M2Q0ZWJiODUwYjYwY2Q0NjhjNTNlMmNmZjIwNDFkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90
cmFuc2llbnQvdHJhbnNpZW50X3N1cHByZXNzb3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50
L3RyYW5zaWVudF9zdXBwcmVzc29yLmgKQEAgLTExLDkgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX1RSQU5TSUVOVF9UUkFOU0lFTlRfU1VQUFJFU1NPUl9IXwogI2Rl
ZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfVFJBTlNJRU5UX1RSQU5TSUVOVF9TVVBQUkVT
U09SX0hfCiAKLSNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c2V0PgogCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvZ3Rlc3RfcHJvZF91dGlsLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90
cmFuc2llbnQvd3BkX3RyZWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3dwZF90cmVlLmNjCmlu
ZGV4IDcyZjRkNzY4OTFmMzg2ZGUzZGMxMjcwN2I3OWQxNjE0MWVkMDdkODUuLmM4YWE2MTU4ODE3
YWZlZWNlYjljMjQ5YjA3MzdlMDdhYjdkZTZjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFu
c2llbnQvd3BkX3RyZWUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC93cGRfdHJlZS5jYwpA
QCAtMTAsMTAgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90
cmFuc2llbnQvd3BkX3RyZWUuaCIKIAotI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdHJp
bmcuaD4KIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvZHlh
ZGljX2RlY2ltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFu
c2llbnQvd3BkX25vZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC93cGRfdHJlZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVu
dC93cGRfdHJlZS5oCmluZGV4IDcwN2E4OWQ0NGFjMTZmZGIyNGFiZGY5OWU5YzE1ODk3YWQ2NDYx
YTcuLmI2MjEzNWRhZmE4ZDdjZWQ4OTlhYzFhNjcwMjNkYzFjN2U0MjYxYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX3RyZWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50
L3dwZF90cmVlLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX1RSQU5TSUVOVF9XUERfVFJFRV9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NF
U1NJTkdfVFJBTlNJRU5UX1dQRF9UUkVFX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNp
ZW50L3dwZF9ub2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHlwaW5nX2RldGVjdGlvbi5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3R5cGluZ19kZXRlY3Rpb24uaAppbmRleCA3MGZkOTAzMzY2MTA5MjEzM2Fl
M2Y3MzZmOTMyMGM5ODE4OTlhMmI3Li5kOGZiMzU5MmM5NjQ0ZDRkMmFiNjhjN2M5ZTQxOGVmYTY4
NDM1N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHlwaW5nX2RldGVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy90eXBpbmdfZGV0ZWN0aW9uLmgKQEAgLTExLDkgKzExLDExIEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19UWVBJTkdfREVURUNUSU9OX0hfCiAjZGVmaW5lIE1PRFVM
RVNfQVVESU9fUFJPQ0VTU0lOR19UWVBJTkdfREVURUNUSU9OX0hfCiAKKyNpbmNsdWRlICJydGNf
YmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3Mg
VHlwaW5nRGV0ZWN0aW9uIHsKK2NsYXNzIFJUQ19FWFBPUlQgVHlwaW5nRGV0ZWN0aW9uIHsKICBw
dWJsaWM6CiAgIFR5cGluZ0RldGVjdGlvbigpOwogICB2aXJ0dWFsIH5UeXBpbmdEZXRlY3Rpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy91dGlsaXR5L29vdXJhX2ZmdC5jYwppbmRleCBjMzMzM2NlYTViZWIwMDBhOWY1MjI2M2M0ZjFm
NzhjOTkyYjQwN2Q4Li44NjI4YmQzOWYwYWVjYzIxOTFjM2Q0YTI1MjExMmQ0ZDM0MjJmNGE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnQuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3V0aWxpdHkvb291cmFfZmZ0LmNjCkBAIC0yMyw4ICsyMyw2IEBACiAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnQuaCIKIAotI2luY2x1ZGUgPG1h
dGguaD4KLQogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJh
X2ZmdF90YWJsZXNfY29tbW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCIK
ICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jcHVfZmVhdHVyZXNfd3JhcHBlci5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvb291cmFfZmZ0X3NzZTIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvdXRpbGl0eS9vb3VyYV9mZnRfc3NlMi5jYwppbmRleCA5YjVkMGYzN2E0NDk3Yzc0NzZh
ZGEzODdiZmQ3YmI4NmZjMmRjODZjLi4wZTRhNDRiZWNjZjQxZTYyMDNlNmYwNTgxMWFhZjNmOWFj
YTUyNjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnRfc3NlMi5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnRfc3NlMi5jYwpAQCAtOCwxMCArOCwxMCBA
QAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgogICovCiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRp
bGl0eS9vb3VyYV9mZnQuaCIKLQogI2luY2x1ZGUgPGVtbWludHJpbi5oPgorI2luY2x1ZGUgPHht
bWludHJpbi5oPgogCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkv
b291cmFfZmZ0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkv
b291cmFfZmZ0X3RhYmxlc19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvdXRpbGl0eS9vb3VyYV9mZnRfdGFibGVzX25lb25fc3NlMi5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3N5c3RlbS9hcmNoLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL2dtbS5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy92YWQvZ21tLmNjCmluZGV4IGNkOGExYThhMzc1YzdlZGI4OWE4NTMwMmNhMGI3
NTc3MWU2ODhhYjMuLjNiODc2NGM0ZDAyYTliYjMxNzMzYWFlMWFjMTEyMTE5ZDJjZTU2YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvZ21tLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvZ21tLmNj
CkBAIC0xMSw3ICsxMSw2IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Zh
ZC9nbW0uaCIKIAogI2luY2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvcGl0Y2hfYmFzZWRf
dmFkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNlZF92YWQuY2MKaW5kZXggMDI1ZWYyMDU5
ZDkxMmIzNmI4ZTg3ZjM2YjIxMDczNGVmNDdhNGM5My4uNjhlNjBkYzY2YWU1MTc2YjI5YWNkMDQ3
N2QxY2Q0MDU0NGUzZWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNlZF92
YWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNlZF92YWQuY2MKQEAgLTEwLDcgKzEw
LDYgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvcGl0Y2hfYmFz
ZWRfdmFkLmgiCiAKLSNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL2NvbW1vbi5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNlZF92YWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvcGl0Y2hf
YmFzZWRfdmFkLmgKaW5kZXggNGQzMjc2NTJjNjgwMTcyNzUyYjlmNjczMTAwMjRiMTU2ZTA1MDM1
NS4uMjJiYzBmMjI2MzkwMTAwN2UyYWZkYTc4YWFhMGM2NmJhNDRlNmNlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNlZF92YWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BpdGNo
X2Jhc2VkX3ZhZC5oCkBAIC0xOCw3ICsxOCw2IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1j
bGFzcyBBdWRpb0ZyYW1lOwogY2xhc3MgVmFkQ2lyY3VsYXJCdWZmZXI7CiAKIC8vIENvbXB1dGVz
IHRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgaW5wdXQgYXVkaW8gZnJhbWUgdG8gYmUgYWN0aXZlIGdp
dmVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BvbGVfemVyb19maWx0ZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvdmFkL3BvbGVfemVyb19maWx0ZXIuY2MKaW5kZXggYjk5NjdkN2FlYTViZjQzOTQ0NjYy
YzQzNjFjNWU1YzgyNWJlMDhmZC4uNDE1NmQ3ZTc5NTJhOWYxYWU0ZTAxMDc4YjQzY2NkNjBjOWM1
NWRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9wb2xlX3plcm9fZmlsdGVyLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy92YWQvcG9sZV96ZXJvX2ZpbHRlci5jYwpAQCAtMTAsNyArMTAsNiBAQAogCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9wb2xlX3plcm9fZmlsdGVyLmgi
CiAKLSNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvc3RhbmRhbG9uZV92YWQuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdmFkL3N0YW5kYWxvbmVfdmFkLmNjCmluZGV4IDE5YTUyODJjM2Y3MTU4NGI4
NDBmZDNjODVlMGJhOTU0ZmIwMWJkMjIuLjEzOTc2NjhlYjRiY2JkMjQzMmZkMDNjNzI4NTZhMjlk
NjQ4MTlkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvc3RhbmRhbG9uZV92YWQuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3ZhZC9zdGFuZGFsb25lX3ZhZC5jYwpAQCAtMTIsNyArMTIsNyBAQAogCiAj
aW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNsdWRlICJhdWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1l
X29wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJjb21tb25fYXVkaW8vdmFkL2luY2x1ZGUvd2VicnRj
X3ZhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvc3RhbmRhbG9uZV92YWQuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy92YWQvc3RhbmRhbG9uZV92YWQuaAppbmRleCA3OTY1MGZiZThjNmNhZTFjM2FkZWQ5M2FjYzEy
YWU5ZmZkMDMxNTlmLi4zZGZmNDE2M2MyMmU4MWQzMjVlYTJiZWM1YTBiOTBlYjUyMDI5ZjIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3N0YW5kYWxvbmVfdmFkLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3ZhZC9zdGFuZGFsb25lX3ZhZC5oCkBAIC0xMSwxMyArMTEsMTQgQEAKICNpZm5kZWYgTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX0FHQ19TVEFOREFMT05FX1ZBRF9IXwogI2RlZmluZSBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUdDX1NUQU5EQUxPTkVfVkFEX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImNvbW1vbl9hdWRpby92YWQv
aW5jbHVkZS93ZWJydGNfdmFkLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3ZhZC9jb21tb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIEF1ZGlvRnJhbWU7
Ci0KIGNsYXNzIFN0YW5kYWxvbmVWYWQgewogIHB1YmxpYzoKICAgc3RhdGljIFN0YW5kYWxvbmVW
YWQqIENyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92YWRfYXVkaW9fcHJvYy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3ZhZC92YWRfYXVkaW9fcHJvYy5oCmluZGV4IGUzNDA5MWJkYjZhYmQxZThh
M2IzMWMxNTlmMWYwMjRlMzcwZDNiMTYuLjliZTM0NjdlZjg1MjMwODY0NzNiYjIwNDY4MThlZDI0
MTEzZmM4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvdmFkX2F1ZGlvX3Byb2MuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdmFkL3ZhZF9hdWRpb19wcm9jLmgKQEAgLTExLDEzICsxMSwxNCBAQAogI2lm
bmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfVkFEX1ZBRF9BVURJT19QUk9DX0hfCiAjZGVm
aW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19WQURfVkFEX0FVRElPX1BST0NfSF8KIAorI2lu
Y2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4K
IAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvY29tbW9uLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9jb21tb24uaCIgIC8vIEF1ZGlvRmVh
dHVyZXMsIGtTYW1wbGVSLi4uCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBBdWRpb0Zy
YW1lOwogY2xhc3MgUG9sZVplcm9GaWx0ZXI7CiAKIGNsYXNzIFZhZEF1ZGlvUHJvYyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZvaWNlX2FjdGl2aXR5X2RldGVjdG9yLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdmFkL3ZvaWNlX2FjdGl2aXR5X2RldGVjdG9yLmgKaW5kZXggZTQyNGFjMWEyODI3OGU1NDUy
ZTAyNTNiYzVlNTk3N2FhMDc0OTNjZS4uZDE0MGZlMmFhM2E0MTQwMzYxY2RhMTA2NTUxZDc3YTk2
NzljNjk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92b2ljZV9hY3Rpdml0eV9kZXRlY3Rv
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvdm9pY2VfYWN0aXZpdHlfZGV0ZWN0b3IuaApAQCAtMTEs
NiArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfVkFEX1ZPSUNFX0FD
VElWSVRZX0RFVEVDVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19WQURf
Vk9JQ0VfQUNUSVZJVFlfREVURUNUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1
ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy92b2ljZV9kZXRlY3Rpb25faW1wbC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92
b2ljZV9kZXRlY3Rpb25faW1wbC5jYwppbmRleCA5MjgwYmUxZWY5ZDBjMjRmNWVlYThmMTg1MDBh
Yzg4MGUyZWFhMTJmLi5jNTVjYTRhZWU4NzcxYWIxMGI5OGJhODBiMWY1OGU0NGI1NWY5YTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2VfZGV0ZWN0aW9uX2ltcGwuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL3ZvaWNlX2RldGVjdGlvbl9pbXBsLmNjCkBAIC0xMCw4ICsxMCwxMCBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZvaWNlX2RldGVjdGlvbl9pbXBsLmgiCiAKKyNp
bmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8v
dmFkL2luY2x1ZGUvd2VicnRjX3ZhZC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hdWRpb19idWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZvaWNlX2RldGVjdGlvbl9pbXBsLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dm9pY2VfZGV0ZWN0aW9uX2ltcGwuaAppbmRleCA0YjcyNGJkZDI1NjQ3ZWMzZjFhZTUyNGNjNTdm
ZmVmMDQyNDhkYWI1Li5jNDM4NDczNjc5OWUwMTA4M2Q0MzU4ZGFjZTJlYzUxMTgxN2VkZjc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2VfZGV0ZWN0aW9uX2ltcGwuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdm9pY2VfZGV0ZWN0aW9uX2ltcGwuaApAQCAtMTEsMTEgKzExLDEzIEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19WT0lDRV9ERVRFQ1RJT05fSU1QTF9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfVk9JQ0VfREVURUNUSU9OX0lNUExfSF8KIAorI2luY2x1
ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0
aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCkBAIC00Miw2ICs0NCw3IEBAIGNsYXNzIFZvaWNlRGV0ZWN0aW9uSW1w
bCA6IHB1YmxpYyBWb2ljZURldGVjdGlvbiB7CiAKICBwcml2YXRlOgogICBjbGFzcyBWYWQ7CisK
ICAgcnRjOjpDcml0aWNhbFNlY3Rpb24qIGNvbnN0IGNyaXRfOwogICBib29sIGVuYWJsZWRfIFJU
Q19HVUFSREVEX0JZKGNyaXRfKSA9IGZhbHNlOwogICBib29sIHN0cmVhbV9oYXNfdm9pY2VfIFJU
Q19HVUFSREVEX0JZKGNyaXRfKSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2JpdHJhdGVfY29udHJvbGxlci9CVUlMRC5nbgppbmRleCA3MjA0NmYwYTAxNWUwMmE4MjcyZjk0
MzAyOTRiYWQwZTQ4ODdhZGRkLi5iNTAxY2I0NDU3ZjJmZTVmNDBkOTEwYmI1YzA2ZWFlM2ViZDYw
MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9C
VUlMRC5nbgpAQCAtMTUsNiArMTUsOCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImJpdHJhdGVfY29u
dHJvbGxlciIpIHsKICAgICAiYml0cmF0ZV9jb250cm9sbGVyX2ltcGwuY2MiLAogICAgICJiaXRy
YXRlX2NvbnRyb2xsZXJfaW1wbC5oIiwKICAgICAiaW5jbHVkZS9iaXRyYXRlX2NvbnRyb2xsZXIu
aCIsCisgICAgImxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uY2MiLAorICAgICJsb3Nz
X2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgiLAogICAgICJzZW5kX3NpZGVfYmFuZHdpZHRo
X2VzdGltYXRpb24uY2MiLAogICAgICJzZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24uaCIs
CiAgIF0KQEAgLTMxLDEwICszMywxNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoImJpdHJhdGVfY29u
dHJvbGxlciIpIHsKIAogICBkZXBzID0gWwogICAgICIuLjptb2R1bGVfYXBpIiwKKyAgICAiLi4v
Li4vYXBpL3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAorICAgICIuLi8uLi9hcGkvdW5pdHM6
ZGF0YV9yYXRlIiwKKyAgICAiLi4vLi4vYXBpL3VuaXRzOnRpbWVfZGVsdGEiLAorICAgICIuLi8u
Li9hcGkvdW5pdHM6dGltZXN0YW1wIiwKICAgICAiLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfYndl
IiwKICAgICAiLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCiAgICAgIi4uLy4uL3J0
Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmRlcHJlY2F0aW9uIiwKICAgICAi
Li4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZS9l
eHBlcmltZW50czpmaWVsZF90cmlhbF9wYXJzZXIiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBl
cnMiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIuLi8u
Li9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9iaXRy
YXRlX2NvbnRyb2xsZXJfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2JpdHJhdGVfY29udHJvbGxlcl9p
bXBsLmNjCmluZGV4IDkzMDQ1YjczYTM2YmIzNDRhMzY1ZDdiY2FlYmY4YjM4YWQyMjM3OTEuLjU3
Yzg1ZjZmNmZjNTdmZTEyMTdkNDhjNmMwZmY2Nzc2OTIwMWY2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250
cm9sbGVyL2JpdHJhdGVfY29udHJvbGxlcl9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2JpdHJh
dGVfY29udHJvbGxlcl9pbXBsLmNjCkBAIC0yMSwxMCArMjEsMTAgQEAKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiBuYW1lc3BhY2UgewotYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IFRvT3B0aW9uYWxE
YXRhUmF0ZShpbnQgc3RhcnRfYml0cmF0ZV9icHMpIHsKLSAgaWYgKHN0YXJ0X2JpdHJhdGVfYnBz
ID09IC0xKQotICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwotICByZXR1cm4gRGF0YVJhdGU6OmJw
cyhzdGFydF9iaXRyYXRlX2Jwcyk7CithYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gVG9PcHRpb25h
bERhdGFSYXRlKGludCBzZW5kX2JpdHJhdGVfYnBzKSB7CisgIGlmIChzZW5kX2JpdHJhdGVfYnBz
ID4gMCkKKyAgICByZXR1cm4gRGF0YVJhdGU6OmJwcyhzZW5kX2JpdHJhdGVfYnBzKTsKKyAgcmV0
dXJuIGFic2w6Om51bGxvcHQ7CiB9CiBEYXRhUmF0ZSBNYXhSYXRlKGludCBtYXhfYml0cmF0ZV9i
cHMpIHsKICAgaWYgKG1heF9iaXRyYXRlX2JwcyA9PSAtMSkKQEAgLTE1MywxNCArMTUzLDEyIEBA
IHZvaWQgQml0cmF0ZUNvbnRyb2xsZXJJbXBsOjpPbkRlbGF5QmFzZWRCd2VSZXN1bHQoCiAgICAg
cnRjOjpDcml0U2NvcGUgY3MoJmNyaXRzZWN0Xyk7CiAgICAgaWYgKHJlc3VsdC5wcm9iZSkgewog
ICAgICAgYmFuZHdpZHRoX2VzdGltYXRpb25fLlNldFNlbmRCaXRyYXRlKAotICAgICAgICAgIERh
dGFSYXRlOjpicHMocmVzdWx0LnRhcmdldF9iaXRyYXRlX2JwcyksCi0gICAgICAgICAgVGltZXN0
YW1wOjptcyhjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSk7CisgICAgICAgICAgcmVzdWx0
LnRhcmdldF9iaXRyYXRlLCBUaW1lc3RhbXA6Om1zKGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRz
KCkpKTsKICAgICB9CiAgICAgLy8gU2luY2UgU2V0U2VuZEJpdHJhdGUgbm93IHJlc2V0cyB0aGUg
ZGVsYXktYmFzZWQgZXN0aW1hdGUsIHdlIGhhdmUgdG8gY2FsbAogICAgIC8vIFVwZGF0ZURlbGF5
QmFzZWRFc3RpbWF0ZSBhZnRlciBTZXRTZW5kQml0cmF0ZS4KICAgICBiYW5kd2lkdGhfZXN0aW1h
dGlvbl8uVXBkYXRlRGVsYXlCYXNlZEVzdGltYXRlKAotICAgICAgICBUaW1lc3RhbXA6Om1zKGNs
b2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpLAotICAgICAgICBEYXRhUmF0ZTo6YnBzKHJlc3Vs
dC50YXJnZXRfYml0cmF0ZV9icHMpKTsKKyAgICAgICAgVGltZXN0YW1wOjptcyhjbG9ja18tPlRp
bWVJbk1pbGxpc2Vjb25kcygpKSwgcmVzdWx0LnRhcmdldF9iaXRyYXRlKTsKICAgfQogICBNYXli
ZVRyaWdnZXJPbk5ldHdvcmtDaGFuZ2VkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9i
aXRyYXRlX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9iaXRyYXRlX2NvbnRy
b2xsZXJfdW5pdHRlc3QuY2MKaW5kZXggOTZmOGExZWYyNjZlYjllNjJlY2YwZjgwMWNjYzMxZDA4
YzdlZGE4Yi4uY2YyODEyMTRhYTNjZmI0Njg1ZTRiZThmMzk2NTMyM2I5YzkwY2UwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9i
aXRyYXRlX2NvbnRyb2xsZXIvYml0cmF0ZV9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9j
b250cm9sbGVyL2JpdHJhdGVfY29udHJvbGxlcl91bml0dGVzdC5jYwpAQCAtMTY5LDcgKzE2OSw3
IEBAIFRFU1RfRihCaXRyYXRlQ29udHJvbGxlclRlc3QsIE9uZUJpdHJhdGVPYnNlcnZlck9uZVJ0
Y3BPYnNlcnZlcikgewogICBFWFBFQ1RfRVEoMzAwMDAwLCBiaXRyYXRlX29ic2VydmVyXy5sYXN0
X2JpdHJhdGVfKTsKIAogICAvLyBUZXN0IHRoYXQgYSBsb3cgZGVsYXktYmFzZWQgZXN0aW1hdGUg
bGltaXRzIHRoZSBjb21iaW5lZCBlc3RpbWF0ZS4KLSAgd2VicnRjOjpEZWxheUJhc2VkQndlOjpS
ZXN1bHQgcmVzdWx0KGZhbHNlLCAyODAwMDApOworICB3ZWJydGM6OkRlbGF5QmFzZWRCd2U6OlJl
c3VsdCByZXN1bHQoZmFsc2UsIHdlYnJ0Yzo6RGF0YVJhdGU6OmticHMoMjgwKSk7CiAgIGNvbnRy
b2xsZXJfLT5PbkRlbGF5QmFzZWRCd2VSZXN1bHQocmVzdWx0KTsKICAgRVhQRUNUX0VRKDI4MDAw
MCwgYml0cmF0ZV9vYnNlcnZlcl8ubGFzdF9iaXRyYXRlXyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250
cm9sbGVyL2luY2x1ZGUvYml0cmF0ZV9jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9pbmNsdWRl
L2JpdHJhdGVfY29udHJvbGxlci5oCmluZGV4IGY2NzYwMGQxOTA4Mzc4NGU0NjdkM2ZkMjJmNzI3
ZDNmMGUzMzIzMTEuLjNlMTFmYTc2YTMyNDFkZTYwODllOGUyYTM0MTBjMGM4NjVmMDlkNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYml0cmF0ZV9jb250cm9sbGVyL2luY2x1ZGUvYml0cmF0ZV9jb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRl
X2NvbnRyb2xsZXIvaW5jbHVkZS9iaXRyYXRlX2NvbnRyb2xsZXIuaApAQCAtMTUsMTUgKzE1LDE3
IEBACiAjaWZuZGVmIE1PRFVMRVNfQklUUkFURV9DT05UUk9MTEVSX0lOQ0xVREVfQklUUkFURV9D
T05UUk9MTEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQklUUkFURV9DT05UUk9MTEVSX0lOQ0xVREVf
QklUUkFURV9DT05UUk9MTEVSX0hfCiAKLSNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c3RkZGVm
Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
aW5jbHVkZS9tb2R1bGUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCitjbGFzcyBDbG9jazsKIGNsYXNzIFJ0Y0V2ZW50TG9nOwogCiAvLyBEZXByZWNhdGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2JpdHJhdGVfY29udHJvbGxlci9sb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRy
YXRlX2NvbnRyb2xsZXIvbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41ZDdmOGFhMmMzNmQ3ZmQ2NmQ1NjJhYWNiODZkZTZjZTc2NjZjZTQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9iaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5jYwpA
QCAtMCwwICsxLDIxNSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBw
cm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1
bGVzL2JpdHJhdGVfY29udHJvbGxlci9sb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgi
CisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZl
Y3Rvcj4KKworI2luY2x1ZGUgImFwaS91bml0cy9kYXRhX3JhdGUuaCIKKyNpbmNsdWRlICJhcGkv
dW5pdHMvdGltZV9kZWx0YS5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Zp
ZWxkX3RyaWFsLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHsKK2NvbnN0IGNo
YXIga0J3ZUxvc3NCYXNlZENvbnRyb2xbXSA9ICJXZWJSVEMtQndlLUxvc3NCYXNlZENvbnRyb2wi
OworCisvLyBJbmNyZWFzZSBzbG93ZXIgd2hlbiBSVFQgaXMgaGlnaC4KK2RvdWJsZSBHZXRJbmNy
ZWFzZUZhY3Rvcihjb25zdCBMb3NzQmFzZWRDb250cm9sQ29uZmlnJiBjb25maWcsIFRpbWVEZWx0
YSBydHQpIHsKKyAgLy8gQ2xhbXAgdGhlIFJUVAorICBpZiAocnR0IDwgY29uZmlnLmluY3JlYXNl
X2xvd19ydHQpIHsKKyAgICBydHQgPSBjb25maWcuaW5jcmVhc2VfbG93X3J0dDsKKyAgfSBlbHNl
IGlmIChydHQgPiBjb25maWcuaW5jcmVhc2VfaGlnaF9ydHQpIHsKKyAgICBydHQgPSBjb25maWcu
aW5jcmVhc2VfaGlnaF9ydHQ7CisgIH0KKyAgYXV0byBydHRfcmFuZ2UgPSBjb25maWcuaW5jcmVh
c2VfaGlnaF9ydHQuR2V0KCkgLSBjb25maWcuaW5jcmVhc2VfbG93X3J0dDsKKyAgaWYgKHJ0dF9y
YW5nZSA8PSBUaW1lRGVsdGE6Olplcm8oKSkgeworICAgIFJUQ19EQ0hFQ0soZmFsc2UpOyAgLy8g
T25seSBvbiBtaXNjb25maWd1cmF0aW9uLgorICAgIHJldHVybiBjb25maWcubWluX2luY3JlYXNl
X2ZhY3RvcjsKKyAgfQorICBhdXRvIHJ0dF9vZmZzZXQgPSBydHQgLSBjb25maWcuaW5jcmVhc2Vf
bG93X3J0dDsKKyAgYXV0byByZWxhdGl2ZV9vZmZzZXQgPSBzdGQ6Om1heCgwLjAsIHN0ZDo6bWlu
KHJ0dF9vZmZzZXQgLyBydHRfcmFuZ2UsIDEuMCkpOworICBhdXRvIGZhY3Rvcl9yYW5nZSA9IGNv
bmZpZy5tYXhfaW5jcmVhc2VfZmFjdG9yIC0gY29uZmlnLm1pbl9pbmNyZWFzZV9mYWN0b3I7Cisg
IHJldHVybiBjb25maWcubWluX2luY3JlYXNlX2ZhY3RvciArICgxIC0gcmVsYXRpdmVfb2Zmc2V0
KSAqIGZhY3Rvcl9yYW5nZTsKK30KKworZG91YmxlIExvc3NGcm9tQml0cmF0ZShEYXRhUmF0ZSBi
aXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSBsb3NzX2JhbmR3aWR0aF9i
YWxhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZXhwb25lbnQpIHsKKyAgaWYg
KGxvc3NfYmFuZHdpZHRoX2JhbGFuY2UgPj0gYml0cmF0ZSkKKyAgICByZXR1cm4gMS4wOworICBy
ZXR1cm4gcG93KGxvc3NfYmFuZHdpZHRoX2JhbGFuY2UgLyBiaXRyYXRlLCBleHBvbmVudCk7Cit9
CisKK0RhdGFSYXRlIEJpdHJhdGVGcm9tTG9zcyhkb3VibGUgbG9zcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBEYXRhUmF0ZSBsb3NzX2JhbmR3aWR0aF9iYWxhbmNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvdWJsZSBleHBvbmVudCkgeworICBpZiAoZXhwb25lbnQgPD0gMCkgewor
ICAgIFJUQ19EQ0hFQ0soZmFsc2UpOworICAgIHJldHVybiBEYXRhUmF0ZTo6SW5maW5pdHkoKTsK
KyAgfQorICBpZiAobG9zcyA8IDFlLTUpCisgICAgcmV0dXJuIERhdGFSYXRlOjpJbmZpbml0eSgp
OworICByZXR1cm4gbG9zc19iYW5kd2lkdGhfYmFsYW5jZSAqIHBvdyhsb3NzLCAtMS4wIC8gZXhw
b25lbnQpOworfQorCitkb3VibGUgRXhwb25lbnRpYWxVcGRhdGUoVGltZURlbHRhIHdpbmRvdywg
VGltZURlbHRhIGludGVydmFsKSB7CisgIC8vIFVzZSB0aGUgY29udmVudGlvbiB0aGF0IGV4cG9u
ZW50aWFsIHdpbmRvdyBsZW5ndGggKHdoaWNoIGlzIHJlYWxseQorICAvLyBpbmZpbml0ZSkgaXMg
dGhlIHRpbWUgaXQgdGFrZXMgdG8gZGFtcGVuIHRvIDEvZS4KKyAgaWYgKHdpbmRvdyA8PSBUaW1l
RGVsdGE6Olplcm8oKSkgeworICAgIFJUQ19EQ0hFQ0soZmFsc2UpOworICAgIHJldHVybiAxLjBm
OworICB9CisgIHJldHVybiAxLjBmIC0gZXhwKGludGVydmFsIC8gd2luZG93ICogLTEuMCk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZQorCitMb3NzQmFzZWRDb250cm9sQ29uZmlnOjpMb3NzQmFzZWRD
b250cm9sQ29uZmlnKCkKKyAgICA6IGVuYWJsZWQoZmllbGRfdHJpYWw6OklzRW5hYmxlZChrQndl
TG9zc0Jhc2VkQ29udHJvbCkpLAorICAgICAgbWluX2luY3JlYXNlX2ZhY3RvcigibWluX2luY3Ii
LCAxLjAyKSwKKyAgICAgIG1heF9pbmNyZWFzZV9mYWN0b3IoIm1heF9pbmNyIiwgMS4wOCksCisg
ICAgICBpbmNyZWFzZV9sb3dfcnR0KCJpbmNyX2xvd19ydHQiLCBUaW1lRGVsdGE6Om1zKDIwMCkp
LAorICAgICAgaW5jcmVhc2VfaGlnaF9ydHQoImluY3JfaGlnaF9ydHQiLCBUaW1lRGVsdGE6Om1z
KDgwMCkpLAorICAgICAgZGVjcmVhc2VfZmFjdG9yKCJkZWNyIiwgMC45OSksCisgICAgICBsb3Nz
X3dpbmRvdygibG9zc193aW4iLCBUaW1lRGVsdGE6Om1zKDgwMCkpLAorICAgICAgbG9zc19tYXhf
d2luZG93KCJsb3NzX21heF93aW4iLCBUaW1lRGVsdGE6Om1zKDgwMCkpLAorICAgICAgYWNrbm93
bGVkZ2VkX3JhdGVfbWF4X3dpbmRvdygiYWNrcmF0ZV9tYXhfd2luIiwgVGltZURlbHRhOjptcyg4
MDApKSwKKyAgICAgIGluY3JlYXNlX29mZnNldCgiaW5jcl9vZmZzZXQiLCBEYXRhUmF0ZTo6YnBz
KDEwMDApKSwKKyAgICAgIGxvc3NfYmFuZHdpZHRoX2JhbGFuY2VfaW5jcmVhc2UoImJhbGFuY2Vf
aW5jciIsIERhdGFSYXRlOjprYnBzKDAuNSkpLAorICAgICAgbG9zc19iYW5kd2lkdGhfYmFsYW5j
ZV9kZWNyZWFzZSgiYmFsYW5jZV9kZWNyIiwgRGF0YVJhdGU6OmticHMoNCkpLAorICAgICAgbG9z
c19iYW5kd2lkdGhfYmFsYW5jZV9leHBvbmVudCgiZXhwb25lbnQiLCAwLjUpLAorICAgICAgYWxs
b3dfcmVzZXRzKCJyZXNldHMiLCBmYWxzZSksCisgICAgICBkZWNyZWFzZV9pbnRlcnZhbCgiZGVj
cl9pbnR2bCIsIFRpbWVEZWx0YTo6bXMoMzAwKSksCisgICAgICBsb3NzX3JlcG9ydF90aW1lb3V0
KCJ0aW1lb3V0IiwgVGltZURlbHRhOjptcyg2MDAwKSkgeworICBzdGQ6OnN0cmluZyB0cmlhbF9z
dHJpbmcgPSBmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtCd2VMb3NzQmFzZWRDb250cm9sKTsK
KyAgUGFyc2VGaWVsZFRyaWFsKAorICAgICAgeyZtaW5faW5jcmVhc2VfZmFjdG9yLCAmbWF4X2lu
Y3JlYXNlX2ZhY3RvciwgJmluY3JlYXNlX2xvd19ydHQsCisgICAgICAgJmluY3JlYXNlX2hpZ2hf
cnR0LCAmZGVjcmVhc2VfZmFjdG9yLCAmbG9zc193aW5kb3csICZsb3NzX21heF93aW5kb3csCisg
ICAgICAgJmFja25vd2xlZGdlZF9yYXRlX21heF93aW5kb3csICZpbmNyZWFzZV9vZmZzZXQsCisg
ICAgICAgJmxvc3NfYmFuZHdpZHRoX2JhbGFuY2VfaW5jcmVhc2UsICZsb3NzX2JhbmR3aWR0aF9i
YWxhbmNlX2RlY3JlYXNlLAorICAgICAgICZsb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2V4cG9uZW50
LCAmYWxsb3dfcmVzZXRzLCAmZGVjcmVhc2VfaW50ZXJ2YWwsCisgICAgICAgJmxvc3NfcmVwb3J0
X3RpbWVvdXR9LAorICAgICAgdHJpYWxfc3RyaW5nKTsKK30KK0xvc3NCYXNlZENvbnRyb2xDb25m
aWc6Okxvc3NCYXNlZENvbnRyb2xDb25maWcoY29uc3QgTG9zc0Jhc2VkQ29udHJvbENvbmZpZyYp
ID0KKyAgICBkZWZhdWx0OworTG9zc0Jhc2VkQ29udHJvbENvbmZpZzo6fkxvc3NCYXNlZENvbnRy
b2xDb25maWcoKSA9IGRlZmF1bHQ7CisKK0xvc3NCYXNlZEJhbmR3aWR0aEVzdGltYXRpb246Okxv
c3NCYXNlZEJhbmR3aWR0aEVzdGltYXRpb24oKQorICAgIDogY29uZmlnXyhMb3NzQmFzZWRDb250
cm9sQ29uZmlnKCkpLAorICAgICAgYXZlcmFnZV9sb3NzXygwKSwKKyAgICAgIGF2ZXJhZ2VfbG9z
c19tYXhfKDApLAorICAgICAgbG9zc19iYXNlZF9iaXRyYXRlXyhEYXRhUmF0ZTo6WmVybygpKSwK
KyAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX21heF8oRGF0YVJhdGU6Olplcm8oKSksCisgICAg
ICBhY2tub3dsZWRnZWRfYml0cmF0ZV9sYXN0X3VwZGF0ZV8oVGltZXN0YW1wOjpNaW51c0luZmlu
aXR5KCkpLAorICAgICAgdGltZV9sYXN0X2RlY3JlYXNlXyhUaW1lc3RhbXA6Ok1pbnVzSW5maW5p
dHkoKSksCisgICAgICBoYXNfZGVjcmVhc2VkX3NpbmNlX2xhc3RfbG9zc19yZXBvcnRfKGZhbHNl
KSwKKyAgICAgIGxhc3RfbG9zc19wYWNrZXRfcmVwb3J0XyhUaW1lc3RhbXA6Ok1pbnVzSW5maW5p
dHkoKSksCisgICAgICBsYXN0X2xvc3NfcmF0aW9fKDApIHt9CisKK3ZvaWQgTG9zc0Jhc2VkQmFu
ZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRlTG9zc1N0YXRpc3RpY3MoCisgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8UGFja2V0UmVzdWx0PiYgcGFja2V0X3Jlc3VsdHMsCisgICAgVGltZXN0YW1wIGF0X3Rp
bWUpIHsKKyAgaWYgKHBhY2tldF9yZXN1bHRzLmVtcHR5KCkpIHsKKyAgICBSVENfRENIRUNLKGZh
bHNlKTsKKyAgICByZXR1cm47CisgIH0KKyAgaW50IGxvc3NfY291bnQgPSAwOworICBmb3IgKGF1
dG8gcGt0IDogcGFja2V0X3Jlc3VsdHMpIHsKKyAgICBsb3NzX2NvdW50ICs9IHBrdC5yZWNlaXZl
X3RpbWUuSXNJbmZpbml0ZSgpID8gMSA6IDA7CisgIH0KKyAgbGFzdF9sb3NzX3JhdGlvXyA9IHN0
YXRpY19jYXN0PGRvdWJsZT4obG9zc19jb3VudCkgLyBwYWNrZXRfcmVzdWx0cy5zaXplKCk7Cisg
IGNvbnN0IFRpbWVEZWx0YSB0aW1lX3Bhc3NlZCA9IGxhc3RfbG9zc19wYWNrZXRfcmVwb3J0Xy5J
c0Zpbml0ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGF0X3RpbWUg
LSBsYXN0X2xvc3NfcGFja2V0X3JlcG9ydF8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogVGltZURlbHRhOjpzZWNvbmRzKDEpOworICBsYXN0X2xvc3NfcGFja2V0X3JlcG9y
dF8gPSBhdF90aW1lOworICBoYXNfZGVjcmVhc2VkX3NpbmNlX2xhc3RfbG9zc19yZXBvcnRfID0g
ZmFsc2U7CisKKyAgYXZlcmFnZV9sb3NzXyArPSBFeHBvbmVudGlhbFVwZGF0ZShjb25maWdfLmxv
c3Nfd2luZG93LCB0aW1lX3Bhc3NlZCkgKgorICAgICAgICAgICAgICAgICAgIChsYXN0X2xvc3Nf
cmF0aW9fIC0gYXZlcmFnZV9sb3NzXyk7CisgIGlmIChhdmVyYWdlX2xvc3NfID4gYXZlcmFnZV9s
b3NzX21heF8pIHsKKyAgICBhdmVyYWdlX2xvc3NfbWF4XyA9IGF2ZXJhZ2VfbG9zc187CisgIH0g
ZWxzZSB7CisgICAgYXZlcmFnZV9sb3NzX21heF8gKz0KKyAgICAgICAgRXhwb25lbnRpYWxVcGRh
dGUoY29uZmlnXy5sb3NzX21heF93aW5kb3csIHRpbWVfcGFzc2VkKSAqCisgICAgICAgIChhdmVy
YWdlX2xvc3NfIC0gYXZlcmFnZV9sb3NzX21heF8pOworICB9Cit9CisKK3ZvaWQgTG9zc0Jhc2Vk
QmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRlQWNrbm93bGVkZ2VkQml0cmF0ZSgKKyAgICBEYXRh
UmF0ZSBhY2tub3dsZWRnZWRfYml0cmF0ZSwKKyAgICBUaW1lc3RhbXAgYXRfdGltZSkgeworICBj
b25zdCBUaW1lRGVsdGEgdGltZV9wYXNzZWQgPQorICAgICAgYWNrbm93bGVkZ2VkX2JpdHJhdGVf
bGFzdF91cGRhdGVfLklzRmluaXRlKCkKKyAgICAgICAgICA/IGF0X3RpbWUgLSBhY2tub3dsZWRn
ZWRfYml0cmF0ZV9sYXN0X3VwZGF0ZV8KKyAgICAgICAgICA6IFRpbWVEZWx0YTo6c2Vjb25kcygx
KTsKKyAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfbGFzdF91cGRhdGVfID0gYXRfdGltZTsKKyAgaWYg
KGFja25vd2xlZGdlZF9iaXRyYXRlID4gYWNrbm93bGVkZ2VkX2JpdHJhdGVfbWF4XykgeworICAg
IGFja25vd2xlZGdlZF9iaXRyYXRlX21heF8gPSBhY2tub3dsZWRnZWRfYml0cmF0ZTsKKyAgfSBl
bHNlIHsKKyAgICBhY2tub3dsZWRnZWRfYml0cmF0ZV9tYXhfICs9CisgICAgICAgIEV4cG9uZW50
aWFsVXBkYXRlKGNvbmZpZ18uYWNrbm93bGVkZ2VkX3JhdGVfbWF4X3dpbmRvdywgdGltZV9wYXNz
ZWQpICoKKyAgICAgICAgKGFja25vd2xlZGdlZF9iaXRyYXRlIC0gYWNrbm93bGVkZ2VkX2JpdHJh
dGVfbWF4Xyk7CisgIH0KK30KKwordm9pZCBMb3NzQmFzZWRCYW5kd2lkdGhFc3RpbWF0aW9uOjpV
cGRhdGUoVGltZXN0YW1wIGF0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEYXRhUmF0ZSBtaW5fYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRpbWVEZWx0YSBsYXN0X3JvdW5kX3RyaXBfdGltZSkgeworICAv
LyBPbmx5IGluY3JlYXNlIGlmIGxvc3MgaGFzIGJlZW4gbG93IGZvciBzb21lIHRpbWUuCisgIGNv
bnN0IGRvdWJsZSBsb3NzX2VzdGltYXRlX2Zvcl9pbmNyZWFzZSA9IGF2ZXJhZ2VfbG9zc19tYXhf
OworICAvLyBBdm9pZCBtdWx0aXBsZSBkZWNyZWFzZXMgZnJvbSBhdmVyYWdpbmcgb3ZlciBvbmUg
bG9zcyBzcGlrZS4KKyAgY29uc3QgZG91YmxlIGxvc3NfZXN0aW1hdGVfZm9yX2RlY3JlYXNlID0K
KyAgICAgIHN0ZDo6bWluKGF2ZXJhZ2VfbG9zc18sIGxhc3RfbG9zc19yYXRpb18pOworCisgIGNv
bnN0IGRvdWJsZSBsb3NzX2luY3JlYXNlX3RocmVzaG9sZCA9IExvc3NGcm9tQml0cmF0ZSgKKyAg
ICAgIGxvc3NfYmFzZWRfYml0cmF0ZV8sIGNvbmZpZ18ubG9zc19iYW5kd2lkdGhfYmFsYW5jZV9p
bmNyZWFzZSwKKyAgICAgIGNvbmZpZ18ubG9zc19iYW5kd2lkdGhfYmFsYW5jZV9leHBvbmVudCk7
CisgIGNvbnN0IGRvdWJsZSBsb3NzX2RlY3JlYXNlX3RocmVzaG9sZCA9IExvc3NGcm9tQml0cmF0
ZSgKKyAgICAgIGxvc3NfYmFzZWRfYml0cmF0ZV8sIGNvbmZpZ18ubG9zc19iYW5kd2lkdGhfYmFs
YW5jZV9kZWNyZWFzZSwKKyAgICAgIGNvbmZpZ18ubG9zc19iYW5kd2lkdGhfYmFsYW5jZV9leHBv
bmVudCk7CisgIGNvbnN0IGJvb2wgYWxsb3dfZGVjcmVhc2UgPQorICAgICAgIWhhc19kZWNyZWFz
ZWRfc2luY2VfbGFzdF9sb3NzX3JlcG9ydF8gJiYKKyAgICAgIChhdF90aW1lIC0gdGltZV9sYXN0
X2RlY3JlYXNlXyA+PQorICAgICAgIGxhc3Rfcm91bmRfdHJpcF90aW1lICsgY29uZmlnXy5kZWNy
ZWFzZV9pbnRlcnZhbCk7CisKKyAgaWYgKGxvc3NfZXN0aW1hdGVfZm9yX2luY3JlYXNlIDwgbG9z
c19pbmNyZWFzZV90aHJlc2hvbGQpIHsKKyAgICAvLyBJbmNyZWFzZSBiaXRyYXRlIGJ5IFJUVC1h
ZGFwdGl2ZSByYXRpby4KKyAgICBEYXRhUmF0ZSBuZXdfaW5jcmVhc2VkX2JpdHJhdGUgPQorICAg
ICAgICBtaW5fYml0cmF0ZSAqIEdldEluY3JlYXNlRmFjdG9yKGNvbmZpZ18sIGxhc3Rfcm91bmRf
dHJpcF90aW1lKSArCisgICAgICAgIGNvbmZpZ18uaW5jcmVhc2Vfb2Zmc2V0OworICAgIC8vIFRo
ZSBiaXRyYXRlIHRoYXQgd291bGQgbWFrZSB0aGUgbG9zcyAianVzdCBoaWdoIGVub3VnaCIuCisg
ICAgY29uc3QgRGF0YVJhdGUgbmV3X2luY3JlYXNlZF9iaXRyYXRlX2NhcCA9IEJpdHJhdGVGcm9t
TG9zcygKKyAgICAgICAgbG9zc19lc3RpbWF0ZV9mb3JfaW5jcmVhc2UsIGNvbmZpZ18ubG9zc19i
YW5kd2lkdGhfYmFsYW5jZV9pbmNyZWFzZSwKKyAgICAgICAgY29uZmlnXy5sb3NzX2JhbmR3aWR0
aF9iYWxhbmNlX2V4cG9uZW50KTsKKyAgICBuZXdfaW5jcmVhc2VkX2JpdHJhdGUgPQorICAgICAg
ICBzdGQ6Om1pbihuZXdfaW5jcmVhc2VkX2JpdHJhdGUsIG5ld19pbmNyZWFzZWRfYml0cmF0ZV9j
YXApOworICAgIGxvc3NfYmFzZWRfYml0cmF0ZV8gPSBzdGQ6Om1heChuZXdfaW5jcmVhc2VkX2Jp
dHJhdGUsIGxvc3NfYmFzZWRfYml0cmF0ZV8pOworICB9IGVsc2UgaWYgKGxvc3NfZXN0aW1hdGVf
Zm9yX2RlY3JlYXNlID4gbG9zc19kZWNyZWFzZV90aHJlc2hvbGQgJiYKKyAgICAgICAgICAgICBh
bGxvd19kZWNyZWFzZSkgeworICAgIERhdGFSYXRlIG5ld19kZWNyZWFzZWRfYml0cmF0ZSA9Cisg
ICAgICAgIGNvbmZpZ18uZGVjcmVhc2VfZmFjdG9yICogYWNrbm93bGVkZ2VkX2JpdHJhdGVfbWF4
XzsKKyAgICAvLyBUaGUgYml0cmF0ZSB0aGF0IHdvdWxkIG1ha2UgdGhlIGxvc3MgImp1c3QgYWNj
ZXB0YWJsZSIuCisgICAgY29uc3QgRGF0YVJhdGUgbmV3X2RlY3JlYXNlZF9iaXRyYXRlX2Zsb29y
ID0gQml0cmF0ZUZyb21Mb3NzKAorICAgICAgICBsb3NzX2VzdGltYXRlX2Zvcl9kZWNyZWFzZSwg
Y29uZmlnXy5sb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2RlY3JlYXNlLAorICAgICAgICBjb25maWdf
Lmxvc3NfYmFuZHdpZHRoX2JhbGFuY2VfZXhwb25lbnQpOworICAgIG5ld19kZWNyZWFzZWRfYml0
cmF0ZSA9CisgICAgICAgIHN0ZDo6bWF4KG5ld19kZWNyZWFzZWRfYml0cmF0ZSwgbmV3X2RlY3Jl
YXNlZF9iaXRyYXRlX2Zsb29yKTsKKyAgICBpZiAobmV3X2RlY3JlYXNlZF9iaXRyYXRlIDwgbG9z
c19iYXNlZF9iaXRyYXRlXykgeworICAgICAgdGltZV9sYXN0X2RlY3JlYXNlXyA9IGF0X3RpbWU7
CisgICAgICBoYXNfZGVjcmVhc2VkX3NpbmNlX2xhc3RfbG9zc19yZXBvcnRfID0gdHJ1ZTsKKyAg
ICAgIGxvc3NfYmFzZWRfYml0cmF0ZV8gPSBuZXdfZGVjcmVhc2VkX2JpdHJhdGU7CisgICAgfQor
ICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVy
L2xvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2xvc3NfYmFz
ZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjU2MDc2OWJhNDNjNWQ4MjNm
ZDU2ZmJiYzA4OWU2MjdjOTVlNmY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvbG9z
c19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfQklUUkFURV9DT05UUk9MTEVSX0xPU1Nf
QkFTRURfQkFORFdJRFRIX0VTVElNQVRJT05fSF8KKyNkZWZpbmUgTU9EVUxFU19CSVRSQVRFX0NP
TlRST0xMRVJfTE9TU19CQVNFRF9CQU5EV0lEVEhfRVNUSU1BVElPTl9IXworCisjaW5jbHVkZSA8
dmVjdG9yPgorCisjaW5jbHVkZSAiYXBpL3VuaXRzL2RhdGFfcmF0ZS5oIgorI2luY2x1ZGUgImFw
aS91bml0cy90aW1lX2RlbHRhLmgiCisjaW5jbHVkZSAiYXBpL3VuaXRzL3RpbWVzdGFtcC5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyLmgiCisKK25h
bWVzcGFjZSB3ZWJydGMgeworCitzdHJ1Y3QgTG9zc0Jhc2VkQ29udHJvbENvbmZpZyB7CisgIExv
c3NCYXNlZENvbnRyb2xDb25maWcoKTsKKyAgTG9zc0Jhc2VkQ29udHJvbENvbmZpZyhjb25zdCBM
b3NzQmFzZWRDb250cm9sQ29uZmlnJik7CisgIExvc3NCYXNlZENvbnRyb2xDb25maWcmIG9wZXJh
dG9yPShjb25zdCBMb3NzQmFzZWRDb250cm9sQ29uZmlnJikgPSBkZWZhdWx0OworICB+TG9zc0Jh
c2VkQ29udHJvbENvbmZpZygpOworICBib29sIGVuYWJsZWQ7CisgIEZpZWxkVHJpYWxQYXJhbWV0
ZXI8ZG91YmxlPiBtaW5faW5jcmVhc2VfZmFjdG9yOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPGRv
dWJsZT4gbWF4X2luY3JlYXNlX2ZhY3RvcjsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVs
dGE+IGluY3JlYXNlX2xvd19ydHQ7CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiBp
bmNyZWFzZV9oaWdoX3J0dDsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxkb3VibGU+IGRlY3JlYXNl
X2ZhY3RvcjsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IGxvc3Nfd2luZG93Owor
ICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4gbG9zc19tYXhfd2luZG93OworICBGaWVs
ZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4gYWNrbm93bGVkZ2VkX3JhdGVfbWF4X3dpbmRvdzsK
KyAgRmllbGRUcmlhbFBhcmFtZXRlcjxEYXRhUmF0ZT4gaW5jcmVhc2Vfb2Zmc2V0OworICBGaWVs
ZFRyaWFsUGFyYW1ldGVyPERhdGFSYXRlPiBsb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2luY3JlYXNl
OworICBGaWVsZFRyaWFsUGFyYW1ldGVyPERhdGFSYXRlPiBsb3NzX2JhbmR3aWR0aF9iYWxhbmNl
X2RlY3JlYXNlOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPGRvdWJsZT4gbG9zc19iYW5kd2lkdGhf
YmFsYW5jZV9leHBvbmVudDsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxib29sPiBhbGxvd19yZXNl
dHM7CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiBkZWNyZWFzZV9pbnRlcnZhbDsK
KyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IGxvc3NfcmVwb3J0X3RpbWVvdXQ7Cit9
OworCitjbGFzcyBMb3NzQmFzZWRCYW5kd2lkdGhFc3RpbWF0aW9uIHsKKyBwdWJsaWM6CisgIExv
c3NCYXNlZEJhbmR3aWR0aEVzdGltYXRpb24oKTsKKyAgdm9pZCBVcGRhdGUoVGltZXN0YW1wIGF0
X3RpbWUsCisgICAgICAgICAgICAgIERhdGFSYXRlIG1pbl9iaXRyYXRlLAorICAgICAgICAgICAg
ICBUaW1lRGVsdGEgbGFzdF9yb3VuZF90cmlwX3RpbWUpOworICB2b2lkIFVwZGF0ZUFja25vd2xl
ZGdlZEJpdHJhdGUoRGF0YVJhdGUgYWNrbm93bGVkZ2VkX2JpdHJhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSk7CisgIHZvaWQgTWF5YmVSZXNl
dChEYXRhUmF0ZSBiaXRyYXRlKSB7CisgICAgaWYgKGNvbmZpZ18uYWxsb3dfcmVzZXRzKQorICAg
ICAgbG9zc19iYXNlZF9iaXRyYXRlXyA9IGJpdHJhdGU7CisgIH0KKyAgdm9pZCBTZXRJbml0aWFs
Qml0cmF0ZShEYXRhUmF0ZSBiaXRyYXRlKSB7IGxvc3NfYmFzZWRfYml0cmF0ZV8gPSBiaXRyYXRl
OyB9CisgIGJvb2wgRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGNvbmZpZ18uZW5hYmxlZDsgfQor
ICB2b2lkIFVwZGF0ZUxvc3NTdGF0aXN0aWNzKGNvbnN0IHN0ZDo6dmVjdG9yPFBhY2tldFJlc3Vs
dD4mIHBhY2tldF9yZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFt
cCBhdF90aW1lKTsKKyAgRGF0YVJhdGUgR2V0RXN0aW1hdGUoKSBjb25zdCB7IHJldHVybiBsb3Nz
X2Jhc2VkX2JpdHJhdGVfOyB9CisKKyBwcml2YXRlOgorICBMb3NzQmFzZWRDb250cm9sQ29uZmln
IGNvbmZpZ187CisgIGRvdWJsZSBhdmVyYWdlX2xvc3NfOworICBkb3VibGUgYXZlcmFnZV9sb3Nz
X21heF87CisgIERhdGFSYXRlIGxvc3NfYmFzZWRfYml0cmF0ZV87CisgIERhdGFSYXRlIGFja25v
d2xlZGdlZF9iaXRyYXRlX21heF87CisgIFRpbWVzdGFtcCBhY2tub3dsZWRnZWRfYml0cmF0ZV9s
YXN0X3VwZGF0ZV87CisgIFRpbWVzdGFtcCB0aW1lX2xhc3RfZGVjcmVhc2VfOworICBib29sIGhh
c19kZWNyZWFzZWRfc2luY2VfbGFzdF9sb3NzX3JlcG9ydF87CisgIFRpbWVzdGFtcCBsYXN0X2xv
c3NfcGFja2V0X3JlcG9ydF87CisgIGRvdWJsZSBsYXN0X2xvc3NfcmF0aW9fOworfTsKKworfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfQklUUkFURV9DT05UUk9M
TEVSX0xPU1NfQkFTRURfQkFORFdJRFRIX0VTVElNQVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250
cm9sbGVyL3NlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3Nl
bmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbi5jYwppbmRleCBjYzEwOGE5NWIwOGZjYjlmNTkz
NzY0MjFlMDYyZjZlNDE1NWI4MmQxLi4zOTRjMTQ3NDdiN2FjYjJhZDAxNGE1NDAwNWQ0OGE1NTdm
MDNiNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGlt
YXRpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9u
LmNjCkBAIC0xMSwxMiArMTEsMTIgQEAKICNpbmNsdWRlICJtb2R1bGVzL2JpdHJhdGVfY29udHJv
bGxlci9zZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24uaCIKIAogI2luY2x1ZGUgPGFsZ29y
aXRobT4KLSNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8bGlt
aXRzPgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5o
IgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCiAj
aW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0
ZV9sb3NzX2Jhc2VkLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVu
dF9sb2cuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNs
dWRlL2J3ZV9kZWZpbmVzLmgiCkBAIC0xMDQsNiArMTA0LDgzIEBAIGJvb2wgUmVhZEJ3ZUxvc3NF
eHBlcmltZW50UGFyYW1ldGVycyhmbG9hdCogbG93X2xvc3NfdGhyZXNob2xkLAogfQogfSAgLy8g
bmFtZXNwYWNlCiAKK0xpbmtDYXBhY2l0eVRyYWNrZXI6OkxpbmtDYXBhY2l0eVRyYWNrZXIoKQor
ICAgIDogdHJhY2tpbmdfcmF0ZSgicmF0ZSIsIFRpbWVEZWx0YTo6c2Vjb25kcygxMCkpIHsKKyAg
UGFyc2VGaWVsZFRyaWFsKHsmdHJhY2tpbmdfcmF0ZX0sCisgICAgICAgICAgICAgICAgICBmaWVs
ZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJXZWJSVEMtQndlLUxpbmtDYXBhY2l0eSIpKTsKK30KKwor
TGlua0NhcGFjaXR5VHJhY2tlcjo6fkxpbmtDYXBhY2l0eVRyYWNrZXIoKSB7fQorCit2b2lkIExp
bmtDYXBhY2l0eVRyYWNrZXI6Ok9uT3ZlcnVzZShEYXRhUmF0ZSBhY2tub3dsZWRnZWRfcmF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7
CisgIGNhcGFjaXR5X2VzdGltYXRlX2Jwc18gPQorICAgICAgc3RkOjptaW4oY2FwYWNpdHlfZXN0
aW1hdGVfYnBzXywgYWNrbm93bGVkZ2VkX3JhdGUuYnBzPGRvdWJsZT4oKSk7CisgIGxhc3RfbGlu
a19jYXBhY2l0eV91cGRhdGVfID0gYXRfdGltZTsKK30KKwordm9pZCBMaW5rQ2FwYWNpdHlUcmFj
a2VyOjpPblN0YXJ0aW5nUmF0ZShEYXRhUmF0ZSBzdGFydF9yYXRlKSB7CisgIGlmIChsYXN0X2xp
bmtfY2FwYWNpdHlfdXBkYXRlXy5Jc0luZmluaXRlKCkpCisgICAgY2FwYWNpdHlfZXN0aW1hdGVf
YnBzXyA9IHN0YXJ0X3JhdGUuYnBzPGRvdWJsZT4oKTsKK30KKwordm9pZCBMaW5rQ2FwYWNpdHlU
cmFja2VyOjpPblJhdGVVcGRhdGUoRGF0YVJhdGUgYWNrbm93bGVkZ2VkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKKyAgaWYgKGFj
a25vd2xlZGdlZC5icHMoKSA+IGNhcGFjaXR5X2VzdGltYXRlX2Jwc18pIHsKKyAgICBUaW1lRGVs
dGEgZGVsdGEgPSBhdF90aW1lIC0gbGFzdF9saW5rX2NhcGFjaXR5X3VwZGF0ZV87CisgICAgZG91
YmxlIGFscGhhID0gZGVsdGEuSXNGaW5pdGUoKSA/IGV4cCgtKGRlbHRhIC8gdHJhY2tpbmdfcmF0
ZS5HZXQoKSkpIDogMDsKKyAgICBjYXBhY2l0eV9lc3RpbWF0ZV9icHNfID0gYWxwaGEgKiBjYXBh
Y2l0eV9lc3RpbWF0ZV9icHNfICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgLSBh
bHBoYSkgKiBhY2tub3dsZWRnZWQuYnBzPGRvdWJsZT4oKTsKKyAgfQorICBsYXN0X2xpbmtfY2Fw
YWNpdHlfdXBkYXRlXyA9IGF0X3RpbWU7Cit9CisKK3ZvaWQgTGlua0NhcGFjaXR5VHJhY2tlcjo6
T25SdHRCYWNrb2ZmKERhdGFSYXRlIGJhY2tvZmZfcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CisgIGNhcGFjaXR5X2VzdGlt
YXRlX2Jwc18gPQorICAgICAgc3RkOjptaW4oY2FwYWNpdHlfZXN0aW1hdGVfYnBzXywgYmFja29m
Zl9yYXRlLmJwczxkb3VibGU+KCkpOworICBsYXN0X2xpbmtfY2FwYWNpdHlfdXBkYXRlXyA9IGF0
X3RpbWU7Cit9CisKK0RhdGFSYXRlIExpbmtDYXBhY2l0eVRyYWNrZXI6OmVzdGltYXRlKCkgY29u
c3QgeworICByZXR1cm4gRGF0YVJhdGU6OmJwcyhjYXBhY2l0eV9lc3RpbWF0ZV9icHNfKTsKK30K
KworUnR0QmFzZWRCYWNrb2ZmOjpSdHRCYXNlZEJhY2tvZmYoKQorICAgIDogcnR0X2xpbWl0Xygi
bGltaXQiLCBUaW1lRGVsdGE6OlBsdXNJbmZpbml0eSgpKSwKKyAgICAgIGRyb3BfZnJhY3Rpb25f
KCJmcmFjdGlvbiIsIDAuNSksCisgICAgICBkcm9wX2ludGVydmFsXygiaW50ZXJ2YWwiLCBUaW1l
RGVsdGE6Om1zKDMwMCkpLAorICAgICAgcGVyc2lzdF9vbl9yb3V0ZV9jaGFuZ2VfKCJwZXJzaXN0
IiksCisgICAgICAvLyBCeSBpbml0aWFsaXppbmcgdGhpcyB0byBwbHVzIGluZmluaXR5LCB3ZSBt
YWtlIHN1cmUgdGhhdCB3ZSBuZXZlcgorICAgICAgLy8gdHJpZ2dlciBydHQgYmFja29mZiB1bmxl
c3MgcGFja2V0IGZlZWRiYWNrIGlzIGVuYWJsZWQuCisgICAgICBsYXN0X3Byb3BhZ2F0aW9uX3J0
dF91cGRhdGVfKFRpbWVzdGFtcDo6UGx1c0luZmluaXR5KCkpLAorICAgICAgbGFzdF9wcm9wYWdh
dGlvbl9ydHRfKFRpbWVEZWx0YTo6WmVybygpKSB7CisgIFBhcnNlRmllbGRUcmlhbCh7JnJ0dF9s
aW1pdF8sICZkcm9wX2ZyYWN0aW9uXywgJmRyb3BfaW50ZXJ2YWxfLAorICAgICAgICAgICAgICAg
ICAgICZwZXJzaXN0X29uX3JvdXRlX2NoYW5nZV99LAorICAgICAgICAgICAgICAgICAgZmllbGRf
dHJpYWw6OkZpbmRGdWxsTmFtZSgiV2ViUlRDLUJ3ZS1NYXhSdHRMaW1pdCIpKTsKK30KKwordm9p
ZCBSdHRCYXNlZEJhY2tvZmY6Ok9uUm91dGVDaGFuZ2UoKSB7CisgIGlmICghcGVyc2lzdF9vbl9y
b3V0ZV9jaGFuZ2VfKSB7CisgICAgbGFzdF9wcm9wYWdhdGlvbl9ydHRfdXBkYXRlXyA9IFRpbWVz
dGFtcDo6UGx1c0luZmluaXR5KCk7CisgICAgbGFzdF9wcm9wYWdhdGlvbl9ydHRfID0gVGltZURl
bHRhOjpaZXJvKCk7CisgIH0KK30KKwordm9pZCBSdHRCYXNlZEJhY2tvZmY6OlVwZGF0ZVByb3Bh
Z2F0aW9uUnR0KFRpbWVzdGFtcCBhdF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRpbWVEZWx0YSBwcm9wYWdhdGlvbl9ydHQpIHsKKyAgbGFzdF9wcm9w
YWdhdGlvbl9ydHRfdXBkYXRlXyA9IGF0X3RpbWU7CisgIGxhc3RfcHJvcGFnYXRpb25fcnR0XyA9
IHByb3BhZ2F0aW9uX3J0dDsKK30KKworVGltZURlbHRhIFJ0dEJhc2VkQmFja29mZjo6UnR0TG93
ZXJCb3VuZChUaW1lc3RhbXAgYXRfdGltZSkgY29uc3QgeworICAvLyBUT0RPKHNydGUpOiBVc2Ug
dGltZSBzaW5jZSBsYXN0IHVuYWNrbm93bGVkZ2VkIHBhY2tldCBmb3IgdGhpcy4KKyAgVGltZURl
bHRhIHRpbWVfc2luY2VfcnR0ID0gYXRfdGltZSAtIGxhc3RfcHJvcGFnYXRpb25fcnR0X3VwZGF0
ZV87CisgIHJldHVybiB0aW1lX3NpbmNlX3J0dCArIGxhc3RfcHJvcGFnYXRpb25fcnR0XzsKK30K
KworUnR0QmFzZWRCYWNrb2ZmOjp+UnR0QmFzZWRCYWNrb2ZmKCkgPSBkZWZhdWx0OworCiBTZW5k
U2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbihSdGNF
dmVudExvZyogZXZlbnRfbG9nKQogICAgIDogbG9zdF9wYWNrZXRzX3NpbmNlX2xhc3RfbG9zc191
cGRhdGVfKDApLAogICAgICAgZXhwZWN0ZWRfcGFja2V0c19zaW5jZV9sYXN0X2xvc3NfdXBkYXRl
XygwKSwKQEAgLTE1MSwxNCArMjI4LDQ0IEBAIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6
U2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uKFJ0Y0V2ZW50TG9nKiBldmVudF9sb2cpCiAKIFNl
bmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6flNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbigp
IHt9CiAKK3ZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpPblJvdXRlQ2hhbmdlKCkg
eworICBsb3N0X3BhY2tldHNfc2luY2VfbGFzdF9sb3NzX3VwZGF0ZV8gPSAwOworICBleHBlY3Rl
ZF9wYWNrZXRzX3NpbmNlX2xhc3RfbG9zc191cGRhdGVfID0gMDsKKyAgY3VycmVudF9iaXRyYXRl
XyA9IERhdGFSYXRlOjpaZXJvKCk7CisgIG1pbl9iaXRyYXRlX2NvbmZpZ3VyZWRfID0KKyAgICAg
IERhdGFSYXRlOjpicHMoY29uZ2VzdGlvbl9jb250cm9sbGVyOjpHZXRNaW5CaXRyYXRlQnBzKCkp
OworICBtYXhfYml0cmF0ZV9jb25maWd1cmVkXyA9IGtEZWZhdWx0TWF4Qml0cmF0ZTsKKyAgbGFz
dF9sb3dfYml0cmF0ZV9sb2dfID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7CisgIGhhc19k
ZWNyZWFzZWRfc2luY2VfbGFzdF9mcmFjdGlvbl9sb3NzXyA9IGZhbHNlOworICBsYXN0X2xvc3Nf
ZmVlZGJhY2tfID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7CisgIGxhc3RfbG9zc19wYWNr
ZXRfcmVwb3J0XyA9IFRpbWVzdGFtcDo6TWludXNJbmZpbml0eSgpOworICBsYXN0X3RpbWVvdXRf
ID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7CisgIGxhc3RfZnJhY3Rpb25fbG9zc18gPSAw
OworICBsYXN0X2xvZ2dlZF9mcmFjdGlvbl9sb3NzXyA9IDA7CisgIGxhc3Rfcm91bmRfdHJpcF90
aW1lXyA9IFRpbWVEZWx0YTo6WmVybygpOworICBid2VfaW5jb21pbmdfID0gRGF0YVJhdGU6Olpl
cm8oKTsKKyAgZGVsYXlfYmFzZWRfYml0cmF0ZV8gPSBEYXRhUmF0ZTo6WmVybygpOworICB0aW1l
X2xhc3RfZGVjcmVhc2VfID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7CisgIGZpcnN0X3Jl
cG9ydF90aW1lXyA9IFRpbWVzdGFtcDo6TWludXNJbmZpbml0eSgpOworICBpbml0aWFsbHlfbG9z
dF9wYWNrZXRzXyA9IDA7CisgIGJpdHJhdGVfYXRfMl9zZWNvbmRzXyA9IERhdGFSYXRlOjpaZXJv
KCk7CisgIHVtYV91cGRhdGVfc3RhdGVfID0ga05vVXBkYXRlOworICB1bWFfcnR0X3N0YXRlXyA9
IGtOb1VwZGF0ZTsKKyAgbGFzdF9ydGNfZXZlbnRfbG9nXyA9IFRpbWVzdGFtcDo6TWludXNJbmZp
bml0eSgpOworCisgIHJ0dF9iYWNrb2ZmXy5PblJvdXRlQ2hhbmdlKCk7Cit9CisKIHZvaWQgU2Vu
ZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpTZXRCaXRyYXRlcygKICAgICBhYnNsOjpvcHRpb25h
bDxEYXRhUmF0ZT4gc2VuZF9iaXRyYXRlLAogICAgIERhdGFSYXRlIG1pbl9iaXRyYXRlLAogICAg
IERhdGFSYXRlIG1heF9iaXRyYXRlLAogICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CiAgIFNldE1p
bk1heEJpdHJhdGUobWluX2JpdHJhdGUsIG1heF9iaXRyYXRlKTsKLSAgaWYgKHNlbmRfYml0cmF0
ZSkKKyAgaWYgKHNlbmRfYml0cmF0ZSkgeworICAgIGxpbmtfY2FwYWNpdHlfLk9uU3RhcnRpbmdS
YXRlKCpzZW5kX2JpdHJhdGUpOwogICAgIFNldFNlbmRCaXRyYXRlKCpzZW5kX2JpdHJhdGUsIGF0
X3RpbWUpOworICB9CiB9CiAKIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpTZXRT
ZW5kQml0cmF0ZShEYXRhUmF0ZSBiaXRyYXRlLApAQCAtMTY2LDYgKzI3Myw5IEBAIHZvaWQgU2Vu
ZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpTZXRTZW5kQml0cmF0ZShEYXRhUmF0ZSBiaXRyYXRl
LAogICBSVENfRENIRUNLKGJpdHJhdGUgPiBEYXRhUmF0ZTo6WmVybygpKTsKICAgLy8gUmVzZXQg
dG8gYXZvaWQgYmVpbmcgY2FwcGVkIGJ5IHRoZSBlc3RpbWF0ZS4KICAgZGVsYXlfYmFzZWRfYml0
cmF0ZV8gPSBEYXRhUmF0ZTo6WmVybygpOworICBpZiAobG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0
aW1hdGlvbl8uRW5hYmxlZCgpKSB7CisgICAgbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlv
bl8uTWF5YmVSZXNldChiaXRyYXRlKTsKKyAgfQogICBDYXBCaXRyYXRlVG9UaHJlc2hvbGRzKGF0
X3RpbWUsIGJpdHJhdGUpOwogICAvLyBDbGVhciBsYXN0IHNlbnQgYml0cmF0ZSBoaXN0b3J5IHNv
IHRoZSBuZXcgdmFsdWUgY2FuIGJlIHVzZWQgZGlyZWN0bHkKICAgLy8gYW5kIG5vdCBjYXBwZWQu
CkBAIC0xOTUsNiArMzA1LDEwIEBAIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpD
dXJyZW50RXN0aW1hdGUoaW50KiBiaXRyYXRlLAogICAqcnR0ID0gbGFzdF9yb3VuZF90cmlwX3Rp
bWVfLm1zPGludDY0X3Q+KCk7CiB9CiAKK0RhdGFSYXRlIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1h
dGlvbjo6R2V0RXN0aW1hdGVkTGlua0NhcGFjaXR5KCkgY29uc3QgeworICByZXR1cm4gbGlua19j
YXBhY2l0eV8uZXN0aW1hdGUoKTsKK30KKwogdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRp
b246OlVwZGF0ZVJlY2VpdmVyRXN0aW1hdGUoVGltZXN0YW1wIGF0X3RpbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSBi
YW5kd2lkdGgpIHsKICAgYndlX2luY29taW5nXyA9IGJhbmR3aWR0aDsKQEAgLTIwMywxMCArMzE3
LDMzIEBAIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpVcGRhdGVSZWNlaXZlckVz
dGltYXRlKFRpbWVzdGFtcCBhdF90aW1lLAogCiB2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1h
dGlvbjo6VXBkYXRlRGVsYXlCYXNlZEVzdGltYXRlKFRpbWVzdGFtcCBhdF90aW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRh
UmF0ZSBiaXRyYXRlKSB7CisgIGlmIChhY2tub3dsZWRnZWRfcmF0ZV8pIHsKKyAgICBpZiAoYml0
cmF0ZSA8IGRlbGF5X2Jhc2VkX2JpdHJhdGVfKSB7CisgICAgICBsaW5rX2NhcGFjaXR5Xy5Pbk92
ZXJ1c2UoKmFja25vd2xlZGdlZF9yYXRlXywgYXRfdGltZSk7CisgICAgfQorICB9CiAgIGRlbGF5
X2Jhc2VkX2JpdHJhdGVfID0gYml0cmF0ZTsKICAgQ2FwQml0cmF0ZVRvVGhyZXNob2xkcyhhdF90
aW1lLCBjdXJyZW50X2JpdHJhdGVfKTsKIH0KIAordm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGlt
YXRpb246OlNldEFja25vd2xlZGdlZFJhdGUoCisgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+
IGFja25vd2xlZGdlZF9yYXRlLAorICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CisgIGFja25vd2xl
ZGdlZF9yYXRlXyA9IGFja25vd2xlZGdlZF9yYXRlOworICBpZiAoYWNrbm93bGVkZ2VkX3JhdGUg
JiYgbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uRW5hYmxlZCgpKSB7CisgICAgbG9z
c19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uVXBkYXRlQWNrbm93bGVkZ2VkQml0cmF0ZSgK
KyAgICAgICAgKmFja25vd2xlZGdlZF9yYXRlLCBhdF90aW1lKTsKKyAgfQorfQorCit2b2lkIFNl
bmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigK
KyAgICBjb25zdCBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2smIHJlcG9ydCkgeworICBpZiAobG9z
c19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uRW5hYmxlZCgpKSB7CisgICAgbG9zc19iYXNl
ZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uVXBkYXRlTG9zc1N0YXRpc3RpY3MoCisgICAgICAgIHJl
cG9ydC5wYWNrZXRfZmVlZGJhY2tzLCByZXBvcnQuZmVlZGJhY2tfdGltZSk7CisgIH0KK30KKwog
dm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZVJlY2VpdmVyQmxvY2sodWlu
dDhfdCBmcmFjdGlvbl9sb3NzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGltZURlbHRhIHJ0dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1iZXJfb2ZfcGFja2V0cywKQEAg
LTI5NSwxMSArNDMyLDI0IEBAIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpVcGRh
dGVSdHQoVGltZURlbHRhIHJ0dCwgVGltZXN0YW1wIGF0X3RpbWUpIHsKIAogdm9pZCBTZW5kU2lk
ZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZUVzdGltYXRlKFRpbWVzdGFtcCBhdF90aW1lKSB7
CiAgIERhdGFSYXRlIG5ld19iaXRyYXRlID0gY3VycmVudF9iaXRyYXRlXzsKKyAgaWYgKHJ0dF9i
YWNrb2ZmXy5SdHRMb3dlckJvdW5kKGF0X3RpbWUpID4gcnR0X2JhY2tvZmZfLnJ0dF9saW1pdF8p
IHsKKyAgICBpZiAoYXRfdGltZSAtIHRpbWVfbGFzdF9kZWNyZWFzZV8gPj0gcnR0X2JhY2tvZmZf
LmRyb3BfaW50ZXJ2YWxfKSB7CisgICAgICB0aW1lX2xhc3RfZGVjcmVhc2VfID0gYXRfdGltZTsK
KyAgICAgIG5ld19iaXRyYXRlID0gY3VycmVudF9iaXRyYXRlXyAqIHJ0dF9iYWNrb2ZmXy5kcm9w
X2ZyYWN0aW9uXzsKKyAgICAgIGxpbmtfY2FwYWNpdHlfLk9uUnR0QmFja29mZihuZXdfYml0cmF0
ZSwgYXRfdGltZSk7CisgICAgfQorICAgIENhcEJpdHJhdGVUb1RocmVzaG9sZHMoYXRfdGltZSwg
bmV3X2JpdHJhdGUpOworICAgIHJldHVybjsKKyAgfQorCiAgIC8vIFdlIHRydXN0IHRoZSBSRU1C
IGFuZC9vciBkZWxheS1iYXNlZCBlc3RpbWF0ZSBkdXJpbmcgdGhlIGZpcnN0IDIgc2Vjb25kcyBp
ZgogICAvLyB3ZSBoYXZlbid0IGhhZCBhbnkgcGFja2V0IGxvc3MgcmVwb3J0ZWQsIHRvIGFsbG93
IHN0YXJ0dXAgYml0cmF0ZSBwcm9iaW5nLgogICBpZiAobGFzdF9mcmFjdGlvbl9sb3NzXyA9PSAw
ICYmIElzSW5TdGFydFBoYXNlKGF0X3RpbWUpKSB7CiAgICAgbmV3X2JpdHJhdGUgPSBzdGQ6Om1h
eChid2VfaW5jb21pbmdfLCBuZXdfYml0cmF0ZSk7CiAgICAgbmV3X2JpdHJhdGUgPSBzdGQ6Om1h
eChkZWxheV9iYXNlZF9iaXRyYXRlXywgbmV3X2JpdHJhdGUpOworICAgIGlmIChsb3NzX2Jhc2Vk
X2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5FbmFibGVkKCkpIHsKKyAgICAgIGxvc3NfYmFzZWRfYmFu
ZHdpZHRoX2VzdGltYXRpb25fLlNldEluaXRpYWxCaXRyYXRlKG5ld19iaXRyYXRlKTsKKyAgICB9
CiAKICAgICBpZiAobmV3X2JpdHJhdGUgIT0gY3VycmVudF9iaXRyYXRlXykgewogICAgICAgbWlu
X2JpdHJhdGVfaGlzdG9yeV8uY2xlYXIoKTsKQEAgLTMxNCw2ICs0NjQsMTUgQEAgdm9pZCBTZW5k
U2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZUVzdGltYXRlKFRpbWVzdGFtcCBhdF90aW1l
KSB7CiAgICAgQ2FwQml0cmF0ZVRvVGhyZXNob2xkcyhhdF90aW1lLCBjdXJyZW50X2JpdHJhdGVf
KTsKICAgICByZXR1cm47CiAgIH0KKworICBpZiAobG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1h
dGlvbl8uRW5hYmxlZCgpKSB7CisgICAgbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8u
VXBkYXRlKAorICAgICAgICBhdF90aW1lLCBtaW5fYml0cmF0ZV9oaXN0b3J5Xy5mcm9udCgpLnNl
Y29uZCwgbGFzdF9yb3VuZF90cmlwX3RpbWVfKTsKKyAgICBuZXdfYml0cmF0ZSA9IE1heWJlUmFt
cHVwT3JCYWNrb2ZmKG5ld19iaXRyYXRlLCBhdF90aW1lKTsKKyAgICBDYXBCaXRyYXRlVG9UaHJl
c2hvbGRzKGF0X3RpbWUsIG5ld19iaXRyYXRlKTsKKyAgICByZXR1cm47CisgIH0KKwogICBUaW1l
RGVsdGEgdGltZV9zaW5jZV9sb3NzX3BhY2tldF9yZXBvcnQgPSBhdF90aW1lIC0gbGFzdF9sb3Nz
X3BhY2tldF9yZXBvcnRfOwogICBUaW1lRGVsdGEgdGltZV9zaW5jZV9sb3NzX2ZlZWRiYWNrID0g
YXRfdGltZSAtIGxhc3RfbG9zc19mZWVkYmFja187CiAgIGlmICh0aW1lX3NpbmNlX2xvc3NfcGFj
a2V0X3JlcG9ydCA8IDEuMiAqIGtNYXhSdGNwRmVlZGJhY2tJbnRlcnZhbCkgewpAQCAtMzI4LDcg
KzQ4Nyw3IEBAIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpVcGRhdGVFc3RpbWF0
ZShUaW1lc3RhbXAgYXRfdGltZSkgewogICAgICAgLy8gTm90ZSB0aGF0IGJ5IHJlbWVtYmVyaW5n
IHRoZSBiaXRyYXRlIG92ZXIgdGhlIGxhc3Qgc2Vjb25kIG9uZSBjYW4KICAgICAgIC8vIHJhbXB1
cCB1cCBvbmUgc2Vjb25kIGZhc3RlciB0aGFuIGlmIG9ubHkgYWxsb3dlZCB0byBzdGFydCByYW1w
aW5nCiAgICAgICAvLyBhdCA4JSBwZXIgc2Vjb25kIHJhdGUgbm93LiBFLmcuOgotICAgICAgLy8g
ICBJZiBzZW5kaW5nIGEgY29uc3RhbnQgMTAwa2JwcyBpdCBjYW4gcmFtcHVwIGltbWVkaWF0bHkg
dG8gMTA4a2JwcworICAgICAgLy8gICBJZiBzZW5kaW5nIGEgY29uc3RhbnQgMTAwa2JwcyBpdCBj
YW4gcmFtcHVwIGltbWVkaWF0ZWx5IHRvIDEwOGticHMKICAgICAgIC8vICAgd2hlbmV2ZXIgYSBy
ZWNlaXZlciByZXBvcnQgaXMgcmVjZWl2ZWQgd2l0aCBsb3dlciBwYWNrZXQgbG9zcy4KICAgICAg
IC8vICAgSWYgaW5zdGVhZCBvbmUgd291bGQgZG86IGN1cnJlbnRfYml0cmF0ZV8gKj0gMS4wOF4o
ZGVsdGEgdGltZSksCiAgICAgICAvLyAgIGl0IHdvdWxkIHRha2Ugb3ZlciBvbmUgc2Vjb25kIHNp
bmNlIHRoZSBsb3dlciBwYWNrZXQgbG9zcyB0byBhY2hpZXZlCkBAIC0zODIsNiArNTQxLDEyIEBA
IHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpVcGRhdGVFc3RpbWF0ZShUaW1lc3Rh
bXAgYXRfdGltZSkgewogICBDYXBCaXRyYXRlVG9UaHJlc2hvbGRzKGF0X3RpbWUsIG5ld19iaXRy
YXRlKTsKIH0KIAordm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZVByb3Bh
Z2F0aW9uUnR0KAorICAgIFRpbWVzdGFtcCBhdF90aW1lLAorICAgIFRpbWVEZWx0YSBwcm9wYWdh
dGlvbl9ydHQpIHsKKyAgcnR0X2JhY2tvZmZfLlVwZGF0ZVByb3BhZ2F0aW9uUnR0KGF0X3RpbWUs
IHByb3BhZ2F0aW9uX3J0dCk7Cit9CisKIGJvb2wgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9u
OjpJc0luU3RhcnRQaGFzZShUaW1lc3RhbXAgYXRfdGltZSkgY29uc3QgewogICByZXR1cm4gZmly
c3RfcmVwb3J0X3RpbWVfLklzSW5maW5pdGUoKSB8fAogICAgICAgICAgYXRfdGltZSAtIGZpcnN0
X3JlcG9ydF90aW1lXyA8IGtTdGFydFBoYXNlOwpAQCAtNDA3LDYgKzU3MiwzNSBAQCB2b2lkIFNl
bmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRlTWluSGlzdG9yeShUaW1lc3RhbXAgYXRf
dGltZSkgewogICBtaW5fYml0cmF0ZV9oaXN0b3J5Xy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIo
YXRfdGltZSwgY3VycmVudF9iaXRyYXRlXykpOwogfQogCitEYXRhUmF0ZSBTZW5kU2lkZUJhbmR3
aWR0aEVzdGltYXRpb246Ok1heWJlUmFtcHVwT3JCYWNrb2ZmKERhdGFSYXRlIG5ld19iaXRyYXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUaW1lc3RhbXAgYXRfdGltZSkgeworICAvLyBUT0RPKGNyb2Ricm8pOiByZXVzZSB0aGlz
IGNvZGUgaW4gVXBkYXRlRXN0aW1hdGUgaW5zdGVhZCBvZiBjdXJyZW50CisgIC8vIGlubGluaW5n
IG9mIHZlcnkgc2ltaWxhciBmdW5jdGlvbmFsaXR5LgorICBjb25zdCBUaW1lRGVsdGEgdGltZV9z
aW5jZV9sb3NzX3BhY2tldF9yZXBvcnQgPQorICAgICAgYXRfdGltZSAtIGxhc3RfbG9zc19wYWNr
ZXRfcmVwb3J0XzsKKyAgY29uc3QgVGltZURlbHRhIHRpbWVfc2luY2VfbG9zc19mZWVkYmFjayA9
IGF0X3RpbWUgLSBsYXN0X2xvc3NfZmVlZGJhY2tfOworICBpZiAodGltZV9zaW5jZV9sb3NzX3Bh
Y2tldF9yZXBvcnQgPCAxLjIgKiBrTWF4UnRjcEZlZWRiYWNrSW50ZXJ2YWwpIHsKKyAgICBuZXdf
Yml0cmF0ZSA9IG1pbl9iaXRyYXRlX2hpc3RvcnlfLmZyb250KCkuc2Vjb25kICogMS4wODsKKyAg
ICBuZXdfYml0cmF0ZSArPSBEYXRhUmF0ZTo6YnBzKDEwMDApOworICB9IGVsc2UgaWYgKHRpbWVf
c2luY2VfbG9zc19mZWVkYmFjayA+CisgICAgICAgICAgICAgICAgIGtGZWVkYmFja1RpbWVvdXRJ
bnRlcnZhbHMgKiBrTWF4UnRjcEZlZWRiYWNrSW50ZXJ2YWwgJiYKKyAgICAgICAgICAgICAobGFz
dF90aW1lb3V0Xy5Jc0luZmluaXRlKCkgfHwKKyAgICAgICAgICAgICAgYXRfdGltZSAtIGxhc3Rf
dGltZW91dF8gPiBrVGltZW91dEludGVydmFsKSkgeworICAgIGlmIChpbl90aW1lb3V0X2V4cGVy
aW1lbnRfKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGZWVkYmFjayB0aW1lZCBv
dXQgKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgVG9TdHJpbmcodGltZV9zaW5jZV9s
b3NzX2ZlZWRiYWNrKQorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiKSwgcmVkdWNpbmcg
Yml0cmF0ZS4iOworICAgICAgbmV3X2JpdHJhdGUgPSBuZXdfYml0cmF0ZSAqIDAuODsKKyAgICAg
IC8vIFJlc2V0IGFjY3VtdWxhdG9ycyBzaW5jZSB3ZSd2ZSBhbHJlYWR5IGFjdGVkIG9uIG1pc3Np
bmcgZmVlZGJhY2sgYW5kCisgICAgICAvLyBzaG91bGRuJ3QgdG8gYWN0IGFnYWluIG9uIHRoZXNl
IG9sZCBsb3N0IHBhY2tldHMuCisgICAgICBsb3N0X3BhY2tldHNfc2luY2VfbGFzdF9sb3NzX3Vw
ZGF0ZV8gPSAwOworICAgICAgZXhwZWN0ZWRfcGFja2V0c19zaW5jZV9sYXN0X2xvc3NfdXBkYXRl
XyA9IDA7CisgICAgICBsYXN0X3RpbWVvdXRfID0gYXRfdGltZTsKKyAgICB9CisgIH0KKyAgcmV0
dXJuIG5ld19iaXRyYXRlOworfQorCiB2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6
Q2FwQml0cmF0ZVRvVGhyZXNob2xkcyhUaW1lc3RhbXAgYXRfdGltZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRlIGJpdHJh
dGUpIHsKICAgaWYgKGJ3ZV9pbmNvbWluZ18gPiBEYXRhUmF0ZTo6WmVybygpICYmIGJpdHJhdGUg
PiBid2VfaW5jb21pbmdfKSB7CkBAIC00MTYsNiArNjEwLDEwIEBAIHZvaWQgU2VuZFNpZGVCYW5k
d2lkdGhFc3RpbWF0aW9uOjpDYXBCaXRyYXRlVG9UaHJlc2hvbGRzKFRpbWVzdGFtcCBhdF90aW1l
LAogICAgICAgYml0cmF0ZSA+IGRlbGF5X2Jhc2VkX2JpdHJhdGVfKSB7CiAgICAgYml0cmF0ZSA9
IGRlbGF5X2Jhc2VkX2JpdHJhdGVfOwogICB9CisgIGlmIChsb3NzX2Jhc2VkX2JhbmR3aWR0aF9l
c3RpbWF0aW9uXy5FbmFibGVkKCkgJiYKKyAgICAgIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGlt
YXRpb25fLkdldEVzdGltYXRlKCkgPiBEYXRhUmF0ZTo6WmVybygpKSB7CisgICAgYml0cmF0ZSA9
IHN0ZDo6bWluKGJpdHJhdGUsIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb25fLkdldEVz
dGltYXRlKCkpOworICB9CiAgIGlmIChiaXRyYXRlID4gbWF4X2JpdHJhdGVfY29uZmlndXJlZF8p
IHsKICAgICBiaXRyYXRlID0gbWF4X2JpdHJhdGVfY29uZmlndXJlZF87CiAgIH0KQEAgLTQ0MSw1
ICs2MzksMTAgQEAgdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OkNhcEJpdHJhdGVU
b1RocmVzaG9sZHMoVGltZXN0YW1wIGF0X3RpbWUsCiAgICAgbGFzdF9ydGNfZXZlbnRfbG9nXyA9
IGF0X3RpbWU7CiAgIH0KICAgY3VycmVudF9iaXRyYXRlXyA9IGJpdHJhdGU7CisKKyAgaWYgKGFj
a25vd2xlZGdlZF9yYXRlXykgeworICAgIGxpbmtfY2FwYWNpdHlfLk9uUmF0ZVVwZGF0ZShzdGQ6
Om1pbihjdXJyZW50X2JpdHJhdGVfLCAqYWNrbm93bGVkZ2VkX3JhdGVfKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXRfdGltZSk7CisgIH0KIH0KIH0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1h
dGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgKaW5k
ZXggMmM4YjRlZTNkNWFiYTA0NjMzMjlkN2MyNGI4MjAwMzIzYjZlNDliNy4uYjAxNmZhYmEyZWUz
Zjk4Nzk1MTQ1MmZhYTFlYTc5MDQ4ZGUxNTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2Vu
ZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRl
X2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgKQEAgLTEzLDI3ICsxMyw3MSBAQAogI2lmbmRlZiBNT0RV
TEVTX0JJVFJBVEVfQ09OVFJPTExFUl9TRU5EX1NJREVfQkFORFdJRFRIX0VTVElNQVRJT05fSF8K
ICNkZWZpbmUgTU9EVUxFU19CSVRSQVRFX0NPTlRST0xMRVJfU0VORF9TSURFX0JBTkRXSURUSF9F
U1RJTUFUSU9OX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxkZXF1ZT4KICNp
bmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvdHlw
ZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuaCIK
KyNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9yYXRlLmgiCisjaW5jbHVkZSAiYXBpL3VuaXRzL3Rp
bWVfZGVsdGEuaCIKKyNpbmNsdWRlICJhcGkvdW5pdHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlv
bi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVz
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBjbGFzcyBSdGNFdmVudExvZzsKIAorY2xhc3MgTGlu
a0NhcGFjaXR5VHJhY2tlciB7CisgcHVibGljOgorICBMaW5rQ2FwYWNpdHlUcmFja2VyKCk7Cisg
IH5MaW5rQ2FwYWNpdHlUcmFja2VyKCk7CisgIHZvaWQgT25PdmVydXNlKERhdGFSYXRlIGFja25v
d2xlZGdlZF9yYXRlLCBUaW1lc3RhbXAgYXRfdGltZSk7CisgIHZvaWQgT25TdGFydGluZ1JhdGUo
RGF0YVJhdGUgc3RhcnRfcmF0ZSk7CisgIHZvaWQgT25SYXRlVXBkYXRlKERhdGFSYXRlIGFja25v
d2xlZGdlZCwgVGltZXN0YW1wIGF0X3RpbWUpOworICB2b2lkIE9uUnR0QmFja29mZihEYXRhUmF0
ZSBiYWNrb2ZmX3JhdGUsIFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgRGF0YVJhdGUgZXN0aW1hdGUo
KSBjb25zdDsKKworIHByaXZhdGU6CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiB0
cmFja2luZ19yYXRlOworICBkb3VibGUgY2FwYWNpdHlfZXN0aW1hdGVfYnBzXyA9IDA7CisgIFRp
bWVzdGFtcCBsYXN0X2xpbmtfY2FwYWNpdHlfdXBkYXRlXyA9IFRpbWVzdGFtcDo6TWludXNJbmZp
bml0eSgpOworfTsKKworY2xhc3MgUnR0QmFzZWRCYWNrb2ZmIHsKKyBwdWJsaWM6CisgIFJ0dEJh
c2VkQmFja29mZigpOworICB+UnR0QmFzZWRCYWNrb2ZmKCk7CisgIHZvaWQgT25Sb3V0ZUNoYW5n
ZSgpOworICB2b2lkIFVwZGF0ZVByb3BhZ2F0aW9uUnR0KFRpbWVzdGFtcCBhdF90aW1lLCBUaW1l
RGVsdGEgcHJvcGFnYXRpb25fcnR0KTsKKyAgVGltZURlbHRhIFJ0dExvd2VyQm91bmQoVGltZXN0
YW1wIGF0X3RpbWUpIGNvbnN0OworCisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiBy
dHRfbGltaXRfOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPGRvdWJsZT4gZHJvcF9mcmFjdGlvbl87
CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiBkcm9wX2ludGVydmFsXzsKKyAgRmll
bGRUcmlhbEZsYWcgcGVyc2lzdF9vbl9yb3V0ZV9jaGFuZ2VfOworCisgcHVibGljOgorICBUaW1l
c3RhbXAgbGFzdF9wcm9wYWdhdGlvbl9ydHRfdXBkYXRlXzsKKyAgVGltZURlbHRhIGxhc3RfcHJv
cGFnYXRpb25fcnR0XzsKK307CisKIGNsYXNzIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbiB7
CiAgcHVibGljOgogICBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb24oKSA9IGRlbGV0ZTsKICAg
ZXhwbGljaXQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uKFJ0Y0V2ZW50TG9nKiBldmVudF9s
b2cpOwotICB2aXJ0dWFsIH5TZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb24oKTsKKyAgflNlbmRT
aWRlQmFuZHdpZHRoRXN0aW1hdGlvbigpOwogCisgIHZvaWQgT25Sb3V0ZUNoYW5nZSgpOwogICB2
b2lkIEN1cnJlbnRFc3RpbWF0ZShpbnQqIGJpdHJhdGUsIHVpbnQ4X3QqIGxvc3MsIGludDY0X3Qq
IHJ0dCkgY29uc3Q7Ci0KKyAgRGF0YVJhdGUgR2V0RXN0aW1hdGVkTGlua0NhcGFjaXR5KCkgY29u
c3Q7CiAgIC8vIENhbGwgcGVyaW9kaWNhbGx5IHRvIHVwZGF0ZSBlc3RpbWF0ZS4KICAgdm9pZCBV
cGRhdGVFc3RpbWF0ZShUaW1lc3RhbXAgYXRfdGltZSk7CisgIHZvaWQgT25TZW50UGFja2V0KFNl
bnRQYWNrZXQgc2VudF9wYWNrZXQpOworICB2b2lkIFVwZGF0ZVByb3BhZ2F0aW9uUnR0KFRpbWVz
dGFtcCBhdF90aW1lLCBUaW1lRGVsdGEgcHJvcGFnYXRpb25fcnR0KTsKIAogICAvLyBDYWxsIHdo
ZW4gd2UgcmVjZWl2ZSBhIFJUQ1AgbWVzc2FnZSB3aXRoIFRNTUJSIG9yIFJFTUIuCiAgIHZvaWQg
VXBkYXRlUmVjZWl2ZXJFc3RpbWF0ZShUaW1lc3RhbXAgYXRfdGltZSwgRGF0YVJhdGUgYmFuZHdp
ZHRoKTsKQEAgLTYyLDYgKzEwNiw5IEBAIGNsYXNzIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlv
biB7CiAgIHZvaWQgU2V0U2VuZEJpdHJhdGUoRGF0YVJhdGUgYml0cmF0ZSwgVGltZXN0YW1wIGF0
X3RpbWUpOwogICB2b2lkIFNldE1pbk1heEJpdHJhdGUoRGF0YVJhdGUgbWluX2JpdHJhdGUsIERh
dGFSYXRlIG1heF9iaXRyYXRlKTsKICAgaW50IEdldE1pbkJpdHJhdGUoKSBjb25zdDsKKyAgdm9p
ZCBTZXRBY2tub3dsZWRnZWRSYXRlKGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBhY2tub3dsZWRn
ZWRfcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsK
KyAgdm9pZCBJbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKGNvbnN0IFRyYW5zcG9ydFBhY2tl
dHNGZWVkYmFjayYgcmVwb3J0KTsKIAogIHByaXZhdGU6CiAgIGVudW0gVW1hU3RhdGUgeyBrTm9V
cGRhdGUsIGtGaXJzdERvbmUsIGtEb25lIH07CkBAIC03NSwxNiArMTIyLDIyIEBAIGNsYXNzIFNl
bmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbiB7CiAgIC8vIG1pbiBiaXRyYXRlIHVzZWQgZHVyaW5n
IGxhc3Qga0J3ZUluY3JlYXNlSW50ZXJ2YWxNcy4KICAgdm9pZCBVcGRhdGVNaW5IaXN0b3J5KFRp
bWVzdGFtcCBhdF90aW1lKTsKIAorICBEYXRhUmF0ZSBNYXliZVJhbXB1cE9yQmFja29mZihEYXRh
UmF0ZSBuZXdfYml0cmF0ZSwgVGltZXN0YW1wIGF0X3RpbWUpOworCiAgIC8vIENhcCB8Yml0cmF0
ZXwgdG8gW21pbl9iaXRyYXRlX2NvbmZpZ3VyZWRfLCBtYXhfYml0cmF0ZV9jb25maWd1cmVkX10g
YW5kCiAgIC8vIHNldCB8Y3VycmVudF9iaXRyYXRlX3wgdG8gdGhlIGNhcHBlZCB2YWx1ZSBhbmQg
dXBkYXRlcyB0aGUgZXZlbnQgbG9nLgogICB2b2lkIENhcEJpdHJhdGVUb1RocmVzaG9sZHMoVGlt
ZXN0YW1wIGF0X3RpbWUsIERhdGFSYXRlIGJpdHJhdGUpOwogCisgIFJ0dEJhc2VkQmFja29mZiBy
dHRfYmFja29mZl87CisgIExpbmtDYXBhY2l0eVRyYWNrZXIgbGlua19jYXBhY2l0eV87CisKICAg
c3RkOjpkZXF1ZTxzdGQ6OnBhaXI8VGltZXN0YW1wLCBEYXRhUmF0ZT4gPiBtaW5fYml0cmF0ZV9o
aXN0b3J5XzsKIAogICAvLyBpbmNvbWluZyBmaWx0ZXJzCiAgIGludCBsb3N0X3BhY2tldHNfc2lu
Y2VfbGFzdF9sb3NzX3VwZGF0ZV87CiAgIGludCBleHBlY3RlZF9wYWNrZXRzX3NpbmNlX2xhc3Rf
bG9zc191cGRhdGVfOwogCisgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBhY2tub3dsZWRnZWRf
cmF0ZV87CiAgIERhdGFSYXRlIGN1cnJlbnRfYml0cmF0ZV87CiAgIERhdGFSYXRlIG1pbl9iaXRy
YXRlX2NvbmZpZ3VyZWRfOwogICBEYXRhUmF0ZSBtYXhfYml0cmF0ZV9jb25maWd1cmVkXzsKQEAg
LTExMyw2ICsxNjYsNyBAQCBjbGFzcyBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb24gewogICBm
bG9hdCBsb3dfbG9zc190aHJlc2hvbGRfOwogICBmbG9hdCBoaWdoX2xvc3NfdGhyZXNob2xkXzsK
ICAgRGF0YVJhdGUgYml0cmF0ZV90aHJlc2hvbGRfOworICBMb3NzQmFzZWRCYW5kd2lkdGhFc3Rp
bWF0aW9uIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb25fOwogfTsKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKICNlbmRpZiAgLy8gTU9EVUxFU19CSVRSQVRFX0NPTlRST0xMRVJfU0VORF9T
SURFX0JBTkRXSURUSF9FU1RJTUFUSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5k
X3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb25fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5k
X3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb25fdW5pdHRlc3QuY2MKaW5kZXggYmVjYzYxNmNmMzE1
NjFiM2I0ZTg2OTE1OGUzZTBkNDgyNDZiNzRhZi4uY2NmYmQ4NTUwMzI3ZTg2ZmExNzU3MjQ4Zjc0
MDliNWJlMWI0NmZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0
aF9lc3RpbWF0aW9uX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRfc2lkZV9iYW5k
d2lkdGhfZXN0aW1hdGlvbl91bml0dGVzdC5jYwpAQCAtMjMsNyArMjMsNyBAQCBNQVRDSEVSKExv
c3NCYXNlZEJ3ZVVwZGF0ZVdpdGhCaXRyYXRlT25seSwgIiIpIHsKICAgICByZXR1cm4gZmFsc2U7
CiAgIH0KICAgYXV0byBid2VfZXZlbnQgPSBzdGF0aWNfY2FzdDxSdGNFdmVudEJ3ZVVwZGF0ZUxv
c3NCYXNlZCo+KGFyZyk7Ci0gIHJldHVybiBid2VfZXZlbnQtPmJpdHJhdGVfYnBzXyA+IDAgJiYg
YndlX2V2ZW50LT5mcmFjdGlvbl9sb3NzXyA9PSAwOworICByZXR1cm4gYndlX2V2ZW50LT5iaXRy
YXRlX2JwcygpID4gMCAmJiBid2VfZXZlbnQtPmZyYWN0aW9uX2xvc3MoKSA9PSAwOwogfQogCiBN
QVRDSEVSKExvc3NCYXNlZEJ3ZVVwZGF0ZVdpdGhCaXRyYXRlQW5kTG9zc0ZyYWN0aW9uLCAiIikg
ewpAQCAtMzEsNyArMzEsNyBAQCBNQVRDSEVSKExvc3NCYXNlZEJ3ZVVwZGF0ZVdpdGhCaXRyYXRl
QW5kTG9zc0ZyYWN0aW9uLCAiIikgewogICAgIHJldHVybiBmYWxzZTsKICAgfQogICBhdXRvIGJ3
ZV9ldmVudCA9IHN0YXRpY19jYXN0PFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkKj4oYXJnKTsK
LSAgcmV0dXJuIGJ3ZV9ldmVudC0+Yml0cmF0ZV9icHNfID4gMCAmJiBid2VfZXZlbnQtPmZyYWN0
aW9uX2xvc3NfID4gMDsKKyAgcmV0dXJuIGJ3ZV9ldmVudC0+Yml0cmF0ZV9icHMoKSA+IDAgJiYg
YndlX2V2ZW50LT5mcmFjdGlvbl9sb3NzKCkgPiAwOwogfQogCiB2b2lkIFRlc3RQcm9iaW5nKGJv
b2wgdXNlX2RlbGF5X2Jhc2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9CVUlMRC5n
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL0JVSUxELmduCmluZGV4IDJmY2I3MTIxMmY1MjQ3Y2RhYjgwMGIy
MjU3MWYwMTg2YTA1ZTk4ZjcuLjczZDgxZjE2ZWMyN2NiMDIxYWI5ZjE2ZjczZDk4OThjNmQ5Nzcz
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL0JVSUxELmduCkBAIC0yMCw4ICsyMCw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY29uZ2Vz
dGlvbl9jb250cm9sbGVyIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBjb25maWdzICs9
IFsgIjpid2VfdGVzdF9sb2dnaW5nIiBdCiAgIHNvdXJjZXMgPSBbCi0gICAgImNvbmdlc3Rpb25f
d2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MiLAotICAgICJjb25nZXN0aW9uX3dpbmRvd19w
dXNoYmFja19jb250cm9sbGVyLmgiLAogICAgICJpbmNsdWRlL25ldHdvcmtfY2hhbmdlZF9vYnNl
cnZlci5oIiwKICAgICAiaW5jbHVkZS9yZWNlaXZlX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVy
LmgiLAogICAgICJpbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaCIsCkBA
IC00Myw2ICs0MSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY29uZ2VzdGlvbl9jb250cm9sbGVy
IikgewogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8uLi9ydGNfYmFzZTpw
dHJfdXRpbCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJhdGVfbGltaXRlciIsCisgICAgIi4uLy4u
L3J0Y19iYXNlL25ldHdvcms6c2VudF9wYWNrZXQiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBl
cnMiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIuLi9i
aXRyYXRlX2NvbnRyb2xsZXIiLApAQCAtNTIsNiArNTEsNyBAQCBydGNfc3RhdGljX2xpYnJhcnko
ImNvbmdlc3Rpb25fY29udHJvbGxlciIpIHsKICAgICAiZ29vZ19jYzpkZWxheV9iYXNlZF9id2Ui
LAogICAgICJnb29nX2NjOmVzdGltYXRvcnMiLAogICAgICJnb29nX2NjOnByb2JlX2NvbnRyb2xs
ZXIiLAorICAgICJnb29nX2NjOnB1c2hiYWNrX2NvbnRyb2xsZXIiLAogICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiAKQEAgLTk4LDcgKzk4LDYgQEAgaWYg
KHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAKICAgICBzb3VyY2Vz
ID0gWwotICAgICAgImNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfdW5pdHRl
c3QuY2MiLAogICAgICAgInJlY2VpdmVfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRl
c3QuY2MiLAogICAgICAgInNlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3Qu
Y2MiLAogICAgICAgInRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyX3VuaXR0ZXN0LmNjIiwKQEAg
LTExMSw3ICsxMTAsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi8uLi9y
dGNfYmFzZTpjaGVja3MiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAg
ICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgICAiLi4vLi4vcnRjX2Jh
c2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAorICAgICAgIi4uLy4uL3J0Y19iYXNlL25ldHdvcms6
c2VudF9wYWNrZXQiLAogICAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAgICAiLi4v
Li4vdGVzdDpmaWVsZF90cmlhbCIsCiAgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvYmJyL2Jicl9uZXR3b3JrX2NvbnRyb2xsZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9iYnIvYmJyX25ldHdvcmtfY29udHJvbGxlci5jYwppbmRleCBiODJk
ZWQ0MjIwMmNjNDc0MGVhZjk5M2MwNWFhN2U3NDNjYjhhYzBmLi44NjNjZTRiZjk4ZDk2OTIyOTJj
ZjhmZWE0OTBjMjdjNGI2MzA0NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9iYnIvYmJy
X25ldHdvcmtfY29udHJvbGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9iYnIvYmJyX25ldHdv
cmtfY29udHJvbGxlci5jYwpAQCAtNDAxLDE2ICs0MDEsMTUgQEAgYm9vbCBCYnJOZXR3b3JrQ29u
dHJvbGxlcjo6SXNQcm9iaW5nRm9yTW9yZUJhbmR3aWR0aCgpIGNvbnN0IHsKIAogTmV0d29ya0Nv
bnRyb2xVcGRhdGUgQmJyTmV0d29ya0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRi
YWNrKAogICAgIFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayBtc2cpIHsKKyAgaWYgKG1zZy5wYWNr
ZXRfZmVlZGJhY2tzLmVtcHR5KCkpCisgICAgcmV0dXJuIE5ldHdvcmtDb250cm9sVXBkYXRlKCk7
CisKICAgVGltZXN0YW1wIGZlZWRiYWNrX3JlY3ZfdGltZSA9IG1zZy5mZWVkYmFja190aW1lOwot
ICBhYnNsOjpvcHRpb25hbDxTZW50UGFja2V0PiBsYXN0X3NlbnRfcGFja2V0ID0KLSAgICAgIG1z
Zy5QYWNrZXRzV2l0aEZlZWRiYWNrKCkuYmFjaygpLnNlbnRfcGFja2V0OwotICBpZiAoIWxhc3Rf
c2VudF9wYWNrZXQuaGFzX3ZhbHVlKCkpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJM
YXN0IGFjayBwYWNrZXQgbm90IGluIGhpc3RvcnksIG5vIFJUVCB1cGRhdGUiOwotICB9IGVsc2Ug
ewotICAgIFRpbWVzdGFtcCBzZW5kX3RpbWUgPSBsYXN0X3NlbnRfcGFja2V0LT5zZW5kX3RpbWU7
Ci0gICAgVGltZURlbHRhIHNlbmRfZGVsdGEgPSBmZWVkYmFja19yZWN2X3RpbWUgLSBzZW5kX3Rp
bWU7Ci0gICAgcnR0X3N0YXRzXy5VcGRhdGVSdHQoc2VuZF9kZWx0YSwgVGltZURlbHRhOjpaZXJv
KCksIGZlZWRiYWNrX3JlY3ZfdGltZSk7Ci0gIH0KKyAgU2VudFBhY2tldCBsYXN0X3NlbnRfcGFj
a2V0ID0gbXNnLlBhY2tldHNXaXRoRmVlZGJhY2soKS5iYWNrKCkuc2VudF9wYWNrZXQ7CisKKyAg
VGltZXN0YW1wIHNlbmRfdGltZSA9IGxhc3Rfc2VudF9wYWNrZXQuc2VuZF90aW1lOworICBUaW1l
RGVsdGEgc2VuZF9kZWx0YSA9IGZlZWRiYWNrX3JlY3ZfdGltZSAtIHNlbmRfdGltZTsKKyAgcnR0
X3N0YXRzXy5VcGRhdGVSdHQoc2VuZF9kZWx0YSwgVGltZURlbHRhOjpaZXJvKCksIGZlZWRiYWNr
X3JlY3ZfdGltZSk7CiAKICAgY29uc3QgRGF0YVNpemUgdG90YWxfZGF0YV9hY2tlZF9iZWZvcmUg
PSBzYW1wbGVyXy0+dG90YWxfZGF0YV9hY2tlZCgpOwogCkBAIC00MzEsNyArNDMwLDcgQEAgTmV0
d29ya0NvbnRyb2xVcGRhdGUgQmJyTmV0d29ya0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0
c0ZlZWRiYWNrKAogICAvLyBJbnB1dCB0aGUgbmV3IGRhdGEgaW50byB0aGUgQkJSIG1vZGVsIG9m
IHRoZSBjb25uZWN0aW9uLgogICBpZiAoIWFja2VkX3BhY2tldHMuZW1wdHkoKSkgewogICAgIGlu
dDY0X3QgbGFzdF9hY2tlZF9wYWNrZXQgPQotICAgICAgICBhY2tlZF9wYWNrZXRzLnJiZWdpbigp
LT5zZW50X3BhY2tldC0+c2VxdWVuY2VfbnVtYmVyOworICAgICAgICBhY2tlZF9wYWNrZXRzLnJi
ZWdpbigpLT5zZW50X3BhY2tldC5zZXF1ZW5jZV9udW1iZXI7CiAKICAgICBpc19yb3VuZF9zdGFy
dCA9IFVwZGF0ZVJvdW5kVHJpcENvdW50ZXIobGFzdF9hY2tlZF9wYWNrZXQpOwogICAgIG1pbl9y
dHRfZXhwaXJlZCA9CkBAIC00NzIsNyArNDcxLDcgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgQmJy
TmV0d29ya0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKAogICBEYXRhU2l6
ZSBkYXRhX2Fja2VkID0gc2FtcGxlcl8tPnRvdGFsX2RhdGFfYWNrZWQoKSAtIHRvdGFsX2RhdGFf
YWNrZWRfYmVmb3JlOwogICBEYXRhU2l6ZSBkYXRhX2xvc3QgPSBEYXRhU2l6ZTo6WmVybygpOwog
ICBmb3IgKGNvbnN0IFBhY2tldFJlc3VsdCYgcGFja2V0IDogbG9zdF9wYWNrZXRzKSB7Ci0gICAg
ZGF0YV9sb3N0ICs9IHBhY2tldC5zZW50X3BhY2tldC0+c2l6ZTsKKyAgICBkYXRhX2xvc3QgKz0g
cGFja2V0LnNlbnRfcGFja2V0LnNpemU7CiAgIH0KIAogICAvLyBBZnRlciB0aGUgbW9kZWwgaXMg
dXBkYXRlZCwgcmVjYWxjdWxhdGUgdGhlIHBhY2luZyByYXRlIGFuZCBjb25nZXN0aW9uCkBAIC00
ODMsNyArNDgyLDcgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgQmJyTmV0d29ya0NvbnRyb2xsZXI6
Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKAogICAvLyBDbGVhbnVwIGludGVybmFsIHN0YXRl
LgogICBpZiAoIWFja2VkX3BhY2tldHMuZW1wdHkoKSkgewogICAgIHNhbXBsZXJfLT5SZW1vdmVP
YnNvbGV0ZVBhY2tldHMoCi0gICAgICAgIGFja2VkX3BhY2tldHMuYmFjaygpLnNlbnRfcGFja2V0
LT5zZXF1ZW5jZV9udW1iZXIpOworICAgICAgICBhY2tlZF9wYWNrZXRzLmJhY2soKS5zZW50X3Bh
Y2tldC5zZXF1ZW5jZV9udW1iZXIpOwogICB9CiAgIHJldHVybiBDcmVhdGVSYXRlVXBkYXRlKG1z
Zy5mZWVkYmFja190aW1lKTsKIH0KQEAgLTU1MCw3ICs1NDksNyBAQCB2b2lkIEJick5ldHdvcmtD
b250cm9sbGVyOjpFbnRlclByb2JlQmFuZHdpZHRoTW9kZShUaW1lc3RhbXAgbm93KSB7CiB2b2lk
IEJick5ldHdvcmtDb250cm9sbGVyOjpEaXNjYXJkTG9zdFBhY2tldHMoCiAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8UGFja2V0UmVzdWx0PiYgbG9zdF9wYWNrZXRzKSB7CiAgIGZvciAoY29uc3QgUGFj
a2V0UmVzdWx0JiBwYWNrZXQgOiBsb3N0X3BhY2tldHMpIHsKLSAgICBzYW1wbGVyXy0+T25QYWNr
ZXRMb3N0KHBhY2tldC5zZW50X3BhY2tldC0+c2VxdWVuY2VfbnVtYmVyKTsKKyAgICBzYW1wbGVy
Xy0+T25QYWNrZXRMb3N0KHBhY2tldC5zZW50X3BhY2tldC5zZXF1ZW5jZV9udW1iZXIpOwogICB9
CiB9CiAKQEAgLTU2OSw4ICs1NjgsOCBAQCBib29sIEJick5ldHdvcmtDb250cm9sbGVyOjpVcGRh
dGVCYW5kd2lkdGhBbmRNaW5SdHQoCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0
PiYgYWNrZWRfcGFja2V0cykgewogICBUaW1lRGVsdGEgc2FtcGxlX3J0dCA9IFRpbWVEZWx0YTo6
UGx1c0luZmluaXR5KCk7CiAgIGZvciAoY29uc3QgYXV0byYgcGFja2V0IDogYWNrZWRfcGFja2V0
cykgewotICAgIEJhbmR3aWR0aFNhbXBsZSBiYW5kd2lkdGhfc2FtcGxlID0gc2FtcGxlcl8tPk9u
UGFja2V0QWNrbm93bGVkZ2VkKAotICAgICAgICBub3csIHBhY2tldC5zZW50X3BhY2tldC0+c2Vx
dWVuY2VfbnVtYmVyKTsKKyAgICBCYW5kd2lkdGhTYW1wbGUgYmFuZHdpZHRoX3NhbXBsZSA9Cisg
ICAgICAgIHNhbXBsZXJfLT5PblBhY2tldEFja25vd2xlZGdlZChub3csIHBhY2tldC5zZW50X3Bh
Y2tldC5zZXF1ZW5jZV9udW1iZXIpOwogICAgIGxhc3Rfc2FtcGxlX2lzX2FwcF9saW1pdGVkXyA9
IGJhbmR3aWR0aF9zYW1wbGUuaXNfYXBwX2xpbWl0ZWQ7CiAgICAgaWYgKCFiYW5kd2lkdGhfc2Ft
cGxlLnJ0dC5Jc1plcm8oKSkgewogICAgICAgc2FtcGxlX3J0dCA9IHN0ZDo6bWluKHNhbXBsZV9y
dHQsIGJhbmR3aWR0aF9zYW1wbGUucnR0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Nv
bmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9j
b25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkYWE1MWJkZGQzMDk3Nzk5MmQ4YWQwZTlmODUyOTM3N2JlNmQzYWU0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSw5MyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPHN0
cmluZz4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmgiCi0j
aW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKLQotbmFtZXNw
YWNlIHdlYnJ0YyB7Ci0KLS8vIFdoZW4gQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrIGlzIGVuYWJs
ZWQsIHRoZSBwYWNlciBpcyBvYmxpdmlvdXMgdG8KLS8vIHRoZSBjb25nZXN0aW9uIHdpbmRvdy4g
VGhlIHJlbGF0aW9uIGJldHdlZW4gb3V0c3RhbmRpbmcgZGF0YSBhbmQKLS8vIHRoZSBjb25nZXN0
aW9uIHdpbmRvdyBhZmZlY3RzIGVuY29kZXIgYWxsb2NhdGlvbnMgZGlyZWN0bHkuCi0vLyBUaGlz
IGV4cGVyaW1lbnQgaXMgYnVpbGQgb24gdG9wIG9mIGNvbmdlc3Rpb24gd2luZG93IGV4cGVyaW1l
bnQuCi1jb25zdCBjaGFyIGtDb25nZXN0aW9uUHVzaGJhY2tFeHBlcmltZW50W10gPSAiV2ViUlRD
LUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFjayI7Ci1jb25zdCB1aW50MzJfdCBrRGVmYXVsdE1pblB1
c2hiYWNrVGFyZ2V0Qml0cmF0ZUJwcyA9IDMwMDAwOwotCi1ib29sIFJlYWRDb25nZXN0aW9uV2lu
ZG93UHVzaGJhY2tFeHBlcmltZW50UGFyYW1ldGVyKAotICAgIHVpbnQzMl90KiBtaW5fcHVzaGJh
Y2tfdGFyZ2V0X2JpdHJhdGVfYnBzKSB7Ci0gIFJUQ19EQ0hFQ0sobWluX3B1c2hiYWNrX3Rhcmdl
dF9iaXRyYXRlX2Jwcyk7Ci0gIHN0ZDo6c3RyaW5nIGV4cGVyaW1lbnRfc3RyaW5nID0KLSAgICAg
IHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZShrQ29uZ2VzdGlvblB1c2hiYWNrRXhw
ZXJpbWVudCk7Ci0gIGludCBwYXJzZWRfdmFsdWVzID0gc3NjYW5mKGV4cGVyaW1lbnRfc3RyaW5n
LmNfc3RyKCksICJFbmFibGVkLSUiIFBSSXUzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwcyk7Ci0gIGlmIChwYXJzZWRfdmFsdWVz
ID09IDEpIHsKLSAgICBSVENfQ0hFQ0tfR0UoKm1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9i
cHMsIDApCi0gICAgICAgIDw8ICJNaW4gcHVzaGJhY2sgdGFyZ2V0IGJpdHJhdGUgbXVzdCBiZSBn
cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4iOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIHJl
dHVybiBmYWxzZTsKLX0KLQotQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6Q29u
Z2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcigpIHsKLSAgaWYgKCFSZWFkQ29uZ2VzdGlv
bldpbmRvd1B1c2hiYWNrRXhwZXJpbWVudFBhcmFtZXRlcigKLSAgICAgICAgICAmbWluX3B1c2hi
YWNrX3RhcmdldF9iaXRyYXRlX2Jwc18pKSB7Ci0gICAgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRy
YXRlX2Jwc18gPSBrRGVmYXVsdE1pblB1c2hiYWNrVGFyZ2V0Qml0cmF0ZUJwczsKLSAgfQotfQot
Ci12b2lkIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI6OlVwZGF0ZU91dHN0YW5k
aW5nRGF0YSgKLSAgICBzaXplX3Qgb3V0c3RhbmRpbmdfYnl0ZXMpIHsKLSAgb3V0c3RhbmRpbmdf
Ynl0ZXNfID0gb3V0c3RhbmRpbmdfYnl0ZXM7Ci19Ci0KLXZvaWQgQ29uZ2VzdGlvbldpbmRvd1B1
c2hiYWNrQ29udHJvbGxlcjo6VXBkYXRlTWF4T3V0c3RhbmRpbmdEYXRhKAotICAgIHNpemVfdCBt
YXhfb3V0c3RhbmRpbmdfYnl0ZXMpIHsKLSAgRGF0YVNpemUgZGF0YV93aW5kb3cgPSBEYXRhU2l6
ZTo6Ynl0ZXMobWF4X291dHN0YW5kaW5nX2J5dGVzKTsKLSAgaWYgKGN1cnJlbnRfZGF0YV93aW5k
b3dfKSB7Ci0gICAgZGF0YV93aW5kb3cgPSAoZGF0YV93aW5kb3cgKyBjdXJyZW50X2RhdGFfd2lu
ZG93Xy52YWx1ZSgpKSAvIDI7Ci0gIH0KLSAgY3VycmVudF9kYXRhX3dpbmRvd18gPSBkYXRhX3dp
bmRvdzsKLX0KLQotdm9pZCBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyOjpTZXRE
YXRhV2luZG93KERhdGFTaXplIGRhdGFfd2luZG93KSB7Ci0gIGN1cnJlbnRfZGF0YV93aW5kb3df
ID0gZGF0YV93aW5kb3c7Ci19Ci0KLXVpbnQzMl90IENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0Nv
bnRyb2xsZXI6OlVwZGF0ZVRhcmdldEJpdHJhdGUoCi0gICAgdWludDMyX3QgYml0cmF0ZV9icHMp
IHsKLSAgaWYgKCFjdXJyZW50X2RhdGFfd2luZG93XyB8fCBjdXJyZW50X2RhdGFfd2luZG93Xy0+
SXNaZXJvKCkpCi0gICAgcmV0dXJuIGJpdHJhdGVfYnBzOwotICBkb3VibGUgZmlsbF9yYXRpbyA9
Ci0gICAgICBvdXRzdGFuZGluZ19ieXRlc18gLyBzdGF0aWNfY2FzdDxkb3VibGU+KGN1cnJlbnRf
ZGF0YV93aW5kb3dfLT5ieXRlcygpKTsKLSAgaWYgKGZpbGxfcmF0aW8gPiAxLjUpIHsKLSAgICBl
bmNvZGluZ19yYXRlX3JhdGlvXyAqPSAwLjk7Ci0gIH0gZWxzZSBpZiAoZmlsbF9yYXRpbyA+IDEp
IHsKLSAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyAqPSAwLjk1OwotICB9IGVsc2UgaWYgKGZpbGxf
cmF0aW8gPCAwLjEpIHsKLSAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyA9IDEuMDsKLSAgfSBlbHNl
IHsKLSAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyAqPSAxLjA1OwotICAgIGVuY29kaW5nX3JhdGVf
cmF0aW9fID0gc3RkOjptaW4oZW5jb2RpbmdfcmF0ZV9yYXRpb18sIDEuMCk7Ci0gIH0KLSAgdWlu
dDMyX3QgYWRqdXN0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzID0KLSAgICAgIHN0YXRpY19jYXN0PHVp
bnQzMl90PihiaXRyYXRlX2JwcyAqIGVuY29kaW5nX3JhdGVfcmF0aW9fKTsKLQotICAvLyBEbyBu
b3QgYWRqdXN0IGJlbG93IHRoZSBtaW5pbXVtIHB1c2hiYWNrIGJpdHJhdGUgYnV0IGRvIG9iZXkg
aWYgdGhlCi0gIC8vIG9yaWdpbmFsIGVzdGltYXRlIGlzIGJlbG93IGl0LgotICBiaXRyYXRlX2Jw
cyA9IGFkanVzdGVkX3RhcmdldF9iaXRyYXRlX2JwcyA8IG1pbl9wdXNoYmFja190YXJnZXRfYml0
cmF0ZV9icHNfCi0gICAgICAgICAgICAgICAgICAgID8gc3RkOjptaW4oYml0cmF0ZV9icHMsIG1p
bl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfKQotICAgICAgICAgICAgICAgICAgICA6IGFk
anVzdGVkX3RhcmdldF9iaXRyYXRlX2JwczsKLSAgcmV0dXJuIGJpdHJhdGVfYnBzOwotfQotCi19
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0
aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0
aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGY2MDg1OTA1ODNiZGI4MTFmODQ2YTQzY2E5ZTM1ODg3NDUzOTI0ODguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvY29u
Z2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19DT05H
RVNUSU9OX0NPTlRST0xMRVJfQ09OR0VTVElPTl9XSU5ET1dfUFVTSEJBQ0tfQ09OVFJPTExFUl9I
XwotI2RlZmluZSBNT0RVTEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9DT05HRVNUSU9OX1dJTkRP
V19QVVNIQkFDS19DT05UUk9MTEVSX0hfCi0KLSNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdv
cmtfdHlwZXMuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9p
bmNsdWRlKQotI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFRo
aXMgY2xhc3MgZW5hYmxlcyBwdXNoYmFjayBmcm9tIGNvbmdlc3Rpb24gd2luZG93IGRpcmVjdGx5
IHRvIHZpZGVvIGVuY29kZXIuCi0vLyBXaGVuIHRoZSBjb25nZXN0aW9uIHdpbmRvdyBpcyBmaWxs
aW5nIHVwLCB0aGUgdmlkZW8gZW5jb2RlciB0YXJnZXQgYml0cmF0ZQotLy8gd2lsbCBiZSByZWR1
Y2VkIGFjY29yZGluZ2x5IHRvIGFjY29tbW9kYXRlIHRoZSBuZXR3b3JrIGNoYW5nZXMuIFRvIGF2
b2lkCi0vLyBwYXVzaW5nIHZpZGVvIHRvbyBmcmVxdWVudGx5LCBhIG1pbmltdW0gZW5jb2RlciB0
YXJnZXQgYml0cmF0ZSB0aHJlc2hvbGQgaXMKLS8vIHVzZWQgdG8gcHJldmVudCB2aWRlbyBwYXVz
ZSBkdWUgdG8gYSBmdWxsIGNvbmdlc3Rpb24gd2luZG93LgotY2xhc3MgQ29uZ2VzdGlvbldpbmRv
d1B1c2hiYWNrQ29udHJvbGxlciB7Ci0gcHVibGljOgotICBDb25nZXN0aW9uV2luZG93UHVzaGJh
Y2tDb250cm9sbGVyKCk7Ci0gIHZvaWQgVXBkYXRlT3V0c3RhbmRpbmdEYXRhKHNpemVfdCBvdXRz
dGFuZGluZ19ieXRlcyk7Ci0gIHZvaWQgVXBkYXRlTWF4T3V0c3RhbmRpbmdEYXRhKHNpemVfdCBt
YXhfb3V0c3RhbmRpbmdfYnl0ZXMpOwotICB1aW50MzJfdCBVcGRhdGVUYXJnZXRCaXRyYXRlKHVp
bnQzMl90IGJpdHJhdGVfYnBzKTsKLSAgdm9pZCBTZXREYXRhV2luZG93KERhdGFTaXplIGRhdGFf
d2luZG93KTsKLQotIHByaXZhdGU6Ci0gIGFic2w6Om9wdGlvbmFsPERhdGFTaXplPiBjdXJyZW50
X2RhdGFfd2luZG93XzsKLSAgc2l6ZV90IG91dHN0YW5kaW5nX2J5dGVzXyA9IDA7Ci0gIHVpbnQz
Ml90IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfOwotICBkb3VibGUgZW5jb2Rpbmdf
cmF0ZV9yYXRpb18gPSAxLjA7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRp
ZiAgLy8gTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfQ09OR0VTVElPTl9XSU5ET1dfUFVT
SEJBQ0tfQ09OVFJPTExFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvY29uZ2VzdGlv
bl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5ZDZhNzlkNjJmZmJjNjBiZGQ4YTU1OGQ1ZTAxYjk1
MjRiNTRmMWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl91bml0
dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
LSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvY29uZ2VzdGlv
bl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oIgotI2luY2x1ZGUgInRlc3QvZ21vY2suaCIK
LSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCi0KLXVzaW5nIHRlc3Rpbmc6Ol87Ci0KLW5hbWVzcGFj
ZSB3ZWJydGMgewotbmFtZXNwYWNlIHRlc3QgewotCi1jbGFzcyBDb25nZXN0aW9uV2luZG93UHVz
aGJhY2tDb250cm9sbGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3Rl
ZDoKLSAgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlciBjd25kX2NvbnRyb2xsZXJf
OwotfTsKLQotVEVTVF9GKENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXJUZXN0LCBG
dWxsQ29uZ2VzdGlvbldpbmRvdykgewotICBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZU91dHN0YW5k
aW5nRGF0YSgxMDAwMDApOwotICBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZU1heE91dHN0YW5kaW5n
RGF0YSg1MDAwMCk7Ci0KLSAgdWludDMyX3QgYml0cmF0ZV9icHMgPSA4MDAwMDsKLSAgYml0cmF0
ZV9icHMgPSBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZVRhcmdldEJpdHJhdGUoYml0cmF0ZV9icHMp
OwotICBFWFBFQ1RfRVEoNzIwMDB1LCBiaXRyYXRlX2Jwcyk7Ci0KLSAgY3duZF9jb250cm9sbGVy
Xy5VcGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEoNTAwMDApOwotICBiaXRyYXRlX2JwcyA9IGN3bmRf
Y29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7Ci0gIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDx1aW50MzJfdD4oNzIwMDAgKiAwLjkgKiAwLjkpLCBiaXRyYXRlX2Jwcyk7
Ci19Ci0KLVRFU1RfRihDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyVGVzdCwgTm9y
bWFsQ29uZ2VzdGlvbldpbmRvdykgewotICBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZU91dHN0YW5k
aW5nRGF0YSgxMDAwMDApOwotICBjd25kX2NvbnRyb2xsZXJfLlNldERhdGFXaW5kb3coRGF0YVNp
emU6OmJ5dGVzKDIwMDAwMCkpOwotCi0gIHVpbnQzMl90IGJpdHJhdGVfYnBzID0gODAwMDA7Ci0g
IGJpdHJhdGVfYnBzID0gY3duZF9jb250cm9sbGVyXy5VcGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJh
dGVfYnBzKTsKLSAgRVhQRUNUX0VRKDgwMDAwdSwgYml0cmF0ZV9icHMpOwotCi0gIGN3bmRfY29u
dHJvbGxlcl8uVXBkYXRlTWF4T3V0c3RhbmRpbmdEYXRhKDIwMDAwKTsKLSAgYml0cmF0ZV9icHMg
PSBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZVRhcmdldEJpdHJhdGUoYml0cmF0ZV9icHMpOwotICBF
WFBFQ1RfRVEoODAwMDB1LCBiaXRyYXRlX2Jwcyk7Ci19Ci0KLVRFU1RfRihDb25nZXN0aW9uV2lu
ZG93UHVzaGJhY2tDb250cm9sbGVyVGVzdCwgTG93Qml0cmF0ZSkgewotICBjd25kX2NvbnRyb2xs
ZXJfLlVwZGF0ZU91dHN0YW5kaW5nRGF0YSgxMDAwMDApOwotICBjd25kX2NvbnRyb2xsZXJfLlNl
dERhdGFXaW5kb3coRGF0YVNpemU6OmJ5dGVzKDUwMDAwKSk7Ci0KLSAgdWludDMyX3QgYml0cmF0
ZV9icHMgPSAzNTAwMDsKLSAgYml0cmF0ZV9icHMgPSBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZVRh
cmdldEJpdHJhdGUoYml0cmF0ZV9icHMpOwotICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KDM1MDAwICogMC45KSwgYml0cmF0ZV9icHMpOwotCi0gIGN3bmRfY29udHJvbGxlcl8uVXBk
YXRlTWF4T3V0c3RhbmRpbmdEYXRhKDIwMDAwKTsKLSAgYml0cmF0ZV9icHMgPSBjd25kX2NvbnRy
b2xsZXJfLlVwZGF0ZVRhcmdldEJpdHJhdGUoYml0cmF0ZV9icHMpOwotICBFWFBFQ1RfRVEoMzAw
MDB1LCBiaXRyYXRlX2Jwcyk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0Ci19ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9CVUlMRC5nbgppbmRleCBiMTI2OTBiODE3ZTEzY2Nj
YjVlMDA2M2M5MzczMjNjYTc1YjBhZWMyLi4zODE2OWJiYjRkMDI5YTNlODU3MDZjYTZiOWM0ZDc5
YjdhNzQ1ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL0JVSUxELmduCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvQlVJTEQuZ24KQEAgLTE5LDEwICsxOSw4IEBAIGNv
bmZpZygiYndlX3Rlc3RfbG9nZ2luZyIpIHsKIHJ0Y19zdGF0aWNfbGlicmFyeSgiZ29vZ19jYyIp
IHsKICAgY29uZmlncyArPSBbICI6YndlX3Rlc3RfbG9nZ2luZyIgXQogICBzb3VyY2VzID0gWwot
ICAgICJnb29nX2NjX2ZhY3RvcnkuY2MiLAogICAgICJnb29nX2NjX25ldHdvcmtfY29udHJvbC5j
YyIsCiAgICAgImdvb2dfY2NfbmV0d29ya19jb250cm9sLmgiLAotICAgICJpbmNsdWRlL2dvb2df
Y2NfZmFjdG9yeS5oIiwKICAgXQogCiAgIGRlcHMgPSBbCkBAIC0zMCw2ICsyOCw3IEBAIHJ0Y19z
dGF0aWNfbGlicmFyeSgiZ29vZ19jYyIpIHsKICAgICAiOmRlbGF5X2Jhc2VkX2J3ZSIsCiAgICAg
Ijplc3RpbWF0b3JzIiwKICAgICAiOnByb2JlX2NvbnRyb2xsZXIiLAorICAgICI6cHVzaGJhY2tf
Y29udHJvbGxlciIsCiAgICAgIi4uLy4uOm1vZHVsZV9hcGkiLAogICAgICIuLi8uLi8uLjp3ZWJy
dGNfY29tbW9uIiwKICAgICAiLi4vLi4vLi4vYXBpL3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wi
LApAQCAtNDksNiArNDgsMjAgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJnb29nX2NjIikgewogICBd
CiB9CiAKK3J0Y19zb3VyY2Vfc2V0KCJwdXNoYmFja19jb250cm9sbGVyIikgeworICBzb3VyY2Vz
ID0gWworICAgICJjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjIiwKKyAg
ICAiY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oIiwKKyAgXQorICBkZXBz
ID0gWworICAgICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Om5ldHdvcmtfY29udHJvbCIsCisgICAg
Ii4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFs
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAor
ICBdCit9CisKIHJ0Y19zb3VyY2Vfc2V0KCJhbHJfZGV0ZWN0b3IiKSB7CiAgIHNvdXJjZXMgPSBb
CiAgICAgImFscl9kZXRlY3Rvci5jYyIsCkBAIC04NCw2ICs5Nyw3IEBAIHJ0Y19zb3VyY2Vfc2V0
KCJlc3RpbWF0b3JzIikgewogICBdCiAKICAgZGVwcyA9IFsKKyAgICAiLi4vLi4vLi4vYXBpL3Vu
aXRzOmRhdGFfcmF0ZSIsCiAgICAgIi4uLy4uLy4uL2xvZ2dpbmc6cnRjX2V2ZW50X2J3ZSIsCiAg
ICAgIi4uLy4uLy4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAogICAgICIuLi8uLi8uLi9y
dGNfYmFzZTpjaGVja3MiLApAQCAtMTA3LDYgKzEyMSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJkZWxh
eV9iYXNlZF9id2UiKSB7CiAKICAgZGVwcyA9IFsKICAgICAiOmVzdGltYXRvcnMiLAorICAgICIu
Li8uLi8uLi9hcGkvdHJhbnNwb3J0Om5ldHdvcmtfY29udHJvbCIsCiAgICAgIi4uLy4uLy4uL2xv
Z2dpbmc6cnRjX2V2ZW50X2J3ZSIsCiAgICAgIi4uLy4uLy4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xv
Z19hcGkiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpjaGVja3MiLApAQCAtMTE1LDcgKzEzMCw5
IEBAIHJ0Y19zb3VyY2Vfc2V0KCJkZWxheV9iYXNlZF9id2UiKSB7CiAgICAgIi4uLy4uLy4uL3N5
c3RlbV93cmFwcGVyczptZXRyaWNzIiwKICAgICAiLi4vLi4vcGFjaW5nIiwKICAgICAiLi4vLi4v
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yIiwKKyAgICAiLi4vLi4vcnRwX3J0Y3A6cnRwX3J0Y3Bf
Zm9ybWF0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9
CiAKQEAgLTE0OSw2ICsxNjYsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6
ZXN0aW1hdG9ycyIsCiAgICAgICAiOmdvb2dfY2MiLAogICAgICAgIi4uOnRlc3RfY29udHJvbGxl
cl9wcmludGVyIiwKKyAgICAgICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Omdvb2dfY2MiLAogICAg
IF0KICAgfQogICBydGNfc291cmNlX3NldCgiZ29vZ19jY191bml0dGVzdHMiKSB7CkBAIC0xNTcs
NiArMTc1LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgc291cmNlcyA9IFsKICAg
ICAgICJhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MiLAogICAgICAg
ImFscl9kZXRlY3Rvcl91bml0dGVzdC5jYyIsCisgICAgICAiY29uZ2VzdGlvbl93aW5kb3dfcHVz
aGJhY2tfY29udHJvbGxlcl91bml0dGVzdC5jYyIsCiAgICAgICAiZGVsYXlfYmFzZWRfYndlX3Vu
aXR0ZXN0LmNjIiwKICAgICAgICJkZWxheV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmNjIiwK
ICAgICAgICJkZWxheV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmgiLApAQCAtMTc1LDYgKzE5
NCw4IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjplc3RpbWF0b3JzIiwKICAg
ICAgICI6Z29vZ19jYyIsCiAgICAgICAiOnByb2JlX2NvbnRyb2xsZXIiLAorICAgICAgIjpwdXNo
YmFja19jb250cm9sbGVyIiwKKyAgICAgICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Omdvb2dfY2Mi
LAogICAgICAgIi4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKICAgICAg
ICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Om5ldHdvcmtfY29udHJvbF90ZXN0IiwKICAgICAgICIu
Li8uLi8uLi9sb2dnaW5nOm1vY2tzIiwKQEAgLTE5NCw0ICsyMTUsMzkgQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5
IiwKICAgICBdCiAgIH0KKyAgcnRjX3NvdXJjZV9zZXQoImdvb2dfY2Nfc2xvd190ZXN0cyIpIHsK
KyAgICB0ZXN0b25seSA9IHRydWUKKworICAgIHNvdXJjZXMgPSBbCisgICAgICAiZ29vZ19jY19u
ZXR3b3JrX2NvbnRyb2xfc2xvd3Rlc3QuY2MiLAorICAgIF0KKyAgICBpZiAoIWJ1aWxkX3dpdGhf
Y2hyb21pdW0gJiYgaXNfY2xhbmcpIHsKKyAgICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIv
L2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCisgICAgfQorICAgIGRl
cHMgPSBbCisgICAgICAiOmFscl9kZXRlY3RvciIsCisgICAgICAiOmRlbGF5X2Jhc2VkX2J3ZSIs
CisgICAgICAiOmVzdGltYXRvcnMiLAorICAgICAgIjpnb29nX2NjIiwKKyAgICAgICI6cHJvYmVf
Y29udHJvbGxlciIsCisgICAgICAiOnB1c2hiYWNrX2NvbnRyb2xsZXIiLAorICAgICAgIi4uLy4u
Ly4uL2FwaS90cmFuc3BvcnQ6Z29vZ19jYyIsCisgICAgICAiLi4vLi4vLi4vYXBpL3RyYW5zcG9y
dDpuZXR3b3JrX2NvbnRyb2wiLAorICAgICAgIi4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6bmV0d29y
a19jb250cm9sX3Rlc3QiLAorICAgICAgIi4uLy4uLy4uL2xvZ2dpbmc6bW9ja3MiLAorICAgICAg
Ii4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRj
X2Jhc2VfYXBwcm92ZWQiLAorICAgICAgIi4uLy4uLy4uL3J0Y19iYXNlL2V4cGVyaW1lbnRzOmFs
cl9leHBlcmltZW50IiwKKyAgICAgICIuLi8uLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAorICAgICAg
Ii4uLy4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCisgICAgICAiLi4vLi4vLi4v
dGVzdDpmaWVsZF90cmlhbCIsCisgICAgICAiLi4vLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAor
ICAgICAgIi4uLy4uLy4uL3Rlc3Qvc2NlbmFyaW8iLAorICAgICAgIi4uLy4uL3BhY2luZyIsCisg
ICAgICAiLi4vLi4vcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yIiwKKyAgICAgICIuLi8uLi9ydHBf
cnRjcDpydHBfcnRjcF9mb3JtYXQiLAorICAgICAgIi8vdGVzdGluZy9nbW9jayIsCisgICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICBdCisgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0
aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9l
c3RpbWF0b3IuY2MKaW5kZXggMDcyMmIyMjE4YmQ1OTdmNzg3M2Y4YTE3ODc2NmRlNjk3NTU3OTcz
NS4uOTM5ZGE0Y2MzM2NlYWZkMGI2YjYyZDQ0ZjdmYzZjZTY0MmFiN2M4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0
b3IuY2MKQEAgLTEwLDExICsxMCwxNSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCIKIAor
I2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx1dGls
aXR5PgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25z
LmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTMxLDcgKzM1LDkgQEAgQWNrbm93bGVkZ2VkQml0cmF0
ZUVzdGltYXRvcjo6fkFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3IoKSB7fQogCiBBY2tub3ds
ZWRnZWRCaXRyYXRlRXN0aW1hdG9yOjpBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yKAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxCaXRyYXRlRXN0aW1hdG9yPiBiaXRyYXRlX2VzdGltYXRvcikKLSAg
ICA6IGJpdHJhdGVfZXN0aW1hdG9yXyhzdGQ6Om1vdmUoYml0cmF0ZV9lc3RpbWF0b3IpKSB7fQor
ICAgIDogYWNjb3VudF9mb3JfdW5hY2tub3dsZWRnZWRfdHJhZmZpY18oCisgICAgICAgICAgZmll
bGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUJ3ZS1BY2NvdW50Rm9yVW5hY2tlZCIpKSwKKyAg
ICAgIGJpdHJhdGVfZXN0aW1hdG9yXyhzdGQ6Om1vdmUoYml0cmF0ZV9lc3RpbWF0b3IpKSB7fQog
CiB2b2lkIEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I6OkluY29taW5nUGFja2V0RmVlZGJh
Y2tWZWN0b3IoCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+JiBwYWNrZXRf
ZmVlZGJhY2tfdmVjdG9yKSB7CkBAIC00MSwxOCArNDcsNDEgQEAgdm9pZCBBY2tub3dsZWRnZWRC
aXRyYXRlRXN0aW1hdG9yOjpJbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAogICBmb3IgKGNv
bnN0IGF1dG8mIHBhY2tldCA6IHBhY2tldF9mZWVkYmFja192ZWN0b3IpIHsKICAgICBpZiAoSXNJ
blNlbmRUaW1lSGlzdG9yeShwYWNrZXQpKSB7CiAgICAgICBNYXliZUV4cGVjdEZhc3RSYXRlQ2hh
bmdlKHBhY2tldC5zZW5kX3RpbWVfbXMpOwotICAgICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5VcGRh
dGUocGFja2V0LmFycml2YWxfdGltZV9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ+KHBhY2tldC5wYXlsb2FkX3NpemUpKTsKKyAgICAg
IGludCBhY2tub3dsZWRnZWRfZXN0aW1hdGUgPSBydGM6OmRjaGVja2VkX2Nhc3Q8aW50PihwYWNr
ZXQucGF5bG9hZF9zaXplKTsKKyAgICAgIGlmIChhY2NvdW50X2Zvcl91bmFja25vd2xlZGdlZF90
cmFmZmljXykKKyAgICAgICAgYWNrbm93bGVkZ2VkX2VzdGltYXRlICs9IHBhY2tldC51bmFja25v
d2xlZGdlZF9kYXRhOworICAgICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5VcGRhdGUocGFja2V0LmFy
cml2YWxfdGltZV9tcywgYWNrbm93bGVkZ2VkX2VzdGltYXRlKTsKICAgICB9CiAgIH0KIH0KIAog
YWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I6OmJp
dHJhdGVfYnBzKCkgY29uc3QgewogICBhdXRvIGVzdGltYXRlZF9iaXRyYXRlID0gYml0cmF0ZV9l
c3RpbWF0b3JfLT5iaXRyYXRlX2JwcygpOwotICByZXR1cm4gZXN0aW1hdGVkX2JpdHJhdGUKLSAg
ICAgICAgICAgICA/ICplc3RpbWF0ZWRfYml0cmF0ZSArCi0gICAgICAgICAgICAgICAgICAgYWxs
b2NhdGVkX2JpdHJhdGVfd2l0aG91dF9mZWVkYmFja19icHNfLnZhbHVlX29yKDApCi0gICAgICAg
ICAgICAgOiBlc3RpbWF0ZWRfYml0cmF0ZTsKKyAgLy8gSWYgd2UgYWNjb3VudCBmb3IgdW5hY2tu
b3dsZWRnZWQgdHJhZmZpYywgd2Ugc2hvdWxkIG5vdCBhZGQgdGhlIGFsbG9jYXRlZAorICAvLyBi
aXRyYXRlIGZvciB1bmFsbG9jYXRlZCBzdHJlYW0gYXMgd2UgZXhwZWN0IGl0IHRvIGJlIGluY2x1
ZGVkIGFscmVhZHkuCisgIGlmIChhY2NvdW50X2Zvcl91bmFja25vd2xlZGdlZF90cmFmZmljXykg
eworICAgIHJldHVybiBlc3RpbWF0ZWRfYml0cmF0ZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4g
ZXN0aW1hdGVkX2JpdHJhdGUKKyAgICAgICAgICAgICAgID8gKmVzdGltYXRlZF9iaXRyYXRlICsg
YWxsb2NhdGVkX2JpdHJhdGVfd2l0aG91dF9mZWVkYmFja19icHNfCisgICAgICAgICAgICAgICA6
IGVzdGltYXRlZF9iaXRyYXRlOworICB9Cit9CisKK2Fic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBB
Y2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yOjpQZWVrQnBzKCkgY29uc3QgeworICByZXR1cm4g
Yml0cmF0ZV9lc3RpbWF0b3JfLT5QZWVrQnBzKCk7Cit9CisKK2Fic2w6Om9wdGlvbmFsPERhdGFS
YXRlPiBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yOjpiaXRyYXRlKCkgY29uc3QgeworICBp
ZiAoYml0cmF0ZV9icHMoKSkKKyAgICByZXR1cm4gRGF0YVJhdGU6OmJwcygqYml0cmF0ZV9icHMo
KSk7CisgIHJldHVybiBhYnNsOjpudWxsb3B0OworfQorCithYnNsOjpvcHRpb25hbDxEYXRhUmF0
ZT4gQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcjo6UGVla1JhdGUoKSBjb25zdCB7CisgIGlm
IChQZWVrQnBzKCkpCisgICAgcmV0dXJuIERhdGFSYXRlOjpicHMoKlBlZWtCcHMoKSk7CisgIHJl
dHVybiBhYnNsOjpudWxsb3B0OwogfQogCiB2b2lkIEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0
b3I6OlNldEFsckVuZGVkVGltZU1zKApAQCAtNjIsNyArOTEsNyBAQCB2b2lkIEFja25vd2xlZGdl
ZEJpdHJhdGVFc3RpbWF0b3I6OlNldEFsckVuZGVkVGltZU1zKAogCiB2b2lkIEFja25vd2xlZGdl
ZEJpdHJhdGVFc3RpbWF0b3I6OlNldEFsbG9jYXRlZEJpdHJhdGVXaXRob3V0RmVlZGJhY2soCiAg
ICAgdWludDMyX3QgYml0cmF0ZV9icHMpIHsKLSAgYWxsb2NhdGVkX2JpdHJhdGVfd2l0aG91dF9m
ZWVkYmFja19icHNfLmVtcGxhY2UoYml0cmF0ZV9icHMpOworICBhbGxvY2F0ZWRfYml0cmF0ZV93
aXRob3V0X2ZlZWRiYWNrX2Jwc18gPSBiaXRyYXRlX2JwczsKIH0KIAogdm9pZCBBY2tub3dsZWRn
ZWRCaXRyYXRlRXN0aW1hdG9yOjpNYXliZUV4cGVjdEZhc3RSYXRlQ2hhbmdlKApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3Iu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9y
LmgKaW5kZXggY2NiOTcxOGIyNTA5ZTZhYzc4M2ZlNjkzNTQ3Mzk2M2FmMjk0MmVhNy4uNjQ1YzBi
OTEzYTdlMDRlNmI3YTBkNTE2MDBiNzMzODhlOWQyYTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oCkBAIC0x
Nyw2ICsxNyw4IEBACiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3Iu
aCIKIAorI2luY2x1ZGUgImFwaS91bml0cy9kYXRhX3JhdGUuaCIKKwogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKIHN0cnVjdCBQYWNrZXRGZWVkYmFjazsKQEAgLTMyLDE0ICszNCwxOCBAQCBjbGFzcyBB
Y2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yIHsKICAgdm9pZCBJbmNvbWluZ1BhY2tldEZlZWRi
YWNrVmVjdG9yKAogICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+JiBwYWNr
ZXRfZmVlZGJhY2tfdmVjdG9yKTsKICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGJpdHJhdGVf
YnBzKCkgY29uc3Q7CisgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBQZWVrQnBzKCkgY29uc3Q7
CisgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBiaXRyYXRlKCkgY29uc3Q7CisgIGFic2w6Om9w
dGlvbmFsPERhdGFSYXRlPiBQZWVrUmF0ZSgpIGNvbnN0OwogICB2b2lkIFNldEFsckVuZGVkVGlt
ZU1zKGludDY0X3QgYWxyX2VuZGVkX3RpbWVfbXMpOwogICB2b2lkIFNldEFsbG9jYXRlZEJpdHJh
dGVXaXRob3V0RmVlZGJhY2sodWludDMyX3QgYml0cmF0ZV9icHMpOwogCiAgcHJpdmF0ZToKICAg
dm9pZCBNYXliZUV4cGVjdEZhc3RSYXRlQ2hhbmdlKGludDY0X3QgcGFja2V0X2Fycml2YWxfdGlt
ZV9tcyk7CisgIGNvbnN0IGJvb2wgYWNjb3VudF9mb3JfdW5hY2tub3dsZWRnZWRfdHJhZmZpY187
CiAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGFscl9lbmRlZF90aW1lX21zXzsKICAgc3RkOjp1
bmlxdWVfcHRyPEJpdHJhdGVFc3RpbWF0b3I+IGJpdHJhdGVfZXN0aW1hdG9yXzsKLSAgYWJzbDo6
b3B0aW9uYWw8dWludDMyX3Q+IGFsbG9jYXRlZF9iaXRyYXRlX3dpdGhvdXRfZmVlZGJhY2tfYnBz
XzsKKyAgdWludDMyX3QgYWxsb2NhdGVkX2JpdHJhdGVfd2l0aG91dF9mZWVkYmFja19icHNfID0g
MDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvYWxyX2RldGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJf
ZGV0ZWN0b3IuY2MKaW5kZXggZWQ4ZjNhNjZmNDEyOGM4YzRiZWY4MWE0ZWU3NTY0Mzg5YmNkYmY3
Zi4uZGI2Njk0MjhmMDIyMTIzYzU1MWY3NzA0ZjdmYTU0ZDY4YTZkNGU3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuY2MKQEAgLTEwLDIwICsxMCwxNyBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuaCIK
IAotI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGNz
dGRpbz4KLSNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnku
aCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgog
I2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2Fscl9zdGF0
ZS5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVu
dHMvYWxyX2V4cGVyaW1lbnQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVy
aWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIK
LSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIEFsckRldGVjdG9yOjpBbHJEZXRlY3RvcigpIDogQWxyRGV0ZWN0b3Io
bnVsbHB0cikge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWxyX2RldGVj
dG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5oCmluZGV4IDg3NDM1
NGJjNTgwZDlmMjBjZWQyOGMxZjFmODBiZmFiNmI5ODczNjYuLmMzMGJhMWQwOTMyZDE3YjUxY2Uz
ZWE4M2NmYjI0ZDg0M2Y4NGY0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2Mv
YWxyX2RldGVjdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3Iu
aApAQCAtMTEsMTAgKzExLDExIEBACiAjaWZuZGVmIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9M
TEVSX0dPT0dfQ0NfQUxSX0RFVEVDVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQ09OR0VTVElPTl9D
T05UUk9MTEVSX0dPT0dfQ0NfQUxSX0RFVEVDVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4K
KyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
LSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2lu
Y2x1ZGUgIm1vZHVsZXMvcGFjaW5nL2ludGVydmFsX2J1ZGdldC5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3JhdGVfc3RhdGlzdGljcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3JfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvcl91bml0dGVzdC5jYwppbmRleCAzYTNkMDAy
YzIzYmUwODFlNTExZDEyZDJkYmQ3ZWUwMjcxNzdmOGRmLi40MjUyNjg1MTRkOGIzYTM0NTEwYThj
N2ZjM2Y5NWQzNjA5NDU3MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fs
cl9kZXRlY3Rvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9k
ZXRlY3Rvcl91bml0dGVzdC5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuaCIKIAorI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2Fs
cl9leHBlcmltZW50LmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUg
InRlc3QvZ3Rlc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0
ZV9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2JpdHJhdGVfZXN0aW1hdG9y
LmNjCmluZGV4IGM3NzY4Mjc4MDJjOWVjMDU4NzAyYjY4ZGI4OTBjNTliNzAxNDE3YmYuLjBhNDAz
OTI3NDI5ZmM5YTIwN2IwM2ZlZjAyMTk0NzZkZTEyMTBkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
Z29vZ19jYy9iaXRyYXRlX2VzdGltYXRvci5jYwpAQCAtMTAsMTEgKzEwLDExIEBACiAKICNpbmNs
dWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2JpdHJhdGVfZXN0aW1h
dG9yLmgiCiAKKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUg
PHN0cmluZz4KIAogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rl
c3QvYndlX3Rlc3RfbG9nZ2luZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVk
ZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKQEAgLTEzMiw2
ICsxMzIsMTIgQEAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IEJpdHJhdGVFc3RpbWF0b3I6OmJp
dHJhdGVfYnBzKCkgY29uc3QgewogICByZXR1cm4gYml0cmF0ZV9lc3RpbWF0ZV8gKiAxMDAwOwog
fQogCithYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gQml0cmF0ZUVzdGltYXRvcjo6UGVla0Jwcygp
IGNvbnN0IHsKKyAgaWYgKGN1cnJlbnRfd2luZG93X21zXyA+IDApCisgICAgcmV0dXJuIHN1bV8g
KiA4MDAwIC8gY3VycmVudF93aW5kb3dfbXNfOworICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKK30K
Kwogdm9pZCBCaXRyYXRlRXN0aW1hdG9yOjpFeHBlY3RGYXN0UmF0ZUNoYW5nZSgpIHsKICAgLy8g
Qnkgc2V0dGluZyB0aGUgYml0cmF0ZS1lc3RpbWF0ZSB2YXJpYW5jZSB0byBhIGhpZ2hlciB2YWx1
ZSB3ZSBhbGxvdyB0aGUKICAgLy8gYml0cmF0ZSB0byBjaGFuZ2UgZmFzdCBmb3IgdGhlIG5leHQg
ZmV3IHNhbXBsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2JpdHJhdGVf
ZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2JpdHJhdGVfZXN0aW1hdG9yLmgK
aW5kZXggNjEwZmEyMTRlN2E5MDBjOTk5MmI4YzIyMTU4NTYzZDI5YzM5NzhjMi4uZDNkZjJiNTEw
NDcyZDBhODE1MTFhOGM3ODE5YzRkNmUwZWY5ZGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy9iaXRyYXRlX2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2df
Y2MvYml0cmF0ZV9lc3RpbWF0b3IuaApAQCAtMTEsNyArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVT
X0NPTkdFU1RJT05fQ09OVFJPTExFUl9HT09HX0NDX0JJVFJBVEVfRVNUSU1BVE9SX0hfCiAjZGVm
aW5lIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX0dPT0dfQ0NfQklUUkFURV9FU1RJTUFU
T1JfSF8KIAotI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKIApAQCAtMjksNiArMjksNyBAQCBjbGFzcyBCaXRy
YXRlRXN0aW1hdG9yIHsKICAgdmlydHVhbCB2b2lkIFVwZGF0ZShpbnQ2NF90IG5vd19tcywgaW50
IGJ5dGVzKTsKIAogICB2aXJ0dWFsIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBiaXRyYXRlX2Jw
cygpIGNvbnN0OworICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gUGVla0JwcygpIGNvbnN0Owog
CiAgIHZpcnR1YWwgdm9pZCBFeHBlY3RGYXN0UmF0ZUNoYW5nZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9nb29nX2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xs
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNr
X2NvbnRyb2xsZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU1OWNiNWI0ZGZlMTAyMTQ0ZTBlNmIzOThlNTFl
Y2Q2NmE2MjljMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29u
Z2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYwpAQCAtMCwwICsxLDk5IEBACisv
KgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxz
dHJpbmc+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2Nj
L2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCisjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKKworbmFtZXNwYWNl
IHdlYnJ0YyB7CisKKy8vIFdoZW4gQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrIGlzIGVuYWJsZWQs
IHRoZSBwYWNlciBpcyBvYmxpdmlvdXMgdG8KKy8vIHRoZSBjb25nZXN0aW9uIHdpbmRvdy4gVGhl
IHJlbGF0aW9uIGJldHdlZW4gb3V0c3RhbmRpbmcgZGF0YSBhbmQKKy8vIHRoZSBjb25nZXN0aW9u
IHdpbmRvdyBhZmZlY3RzIGVuY29kZXIgYWxsb2NhdGlvbnMgZGlyZWN0bHkuCisvLyBUaGlzIGV4
cGVyaW1lbnQgaXMgYnVpbGQgb24gdG9wIG9mIGNvbmdlc3Rpb24gd2luZG93IGV4cGVyaW1lbnQu
Citjb25zdCBjaGFyIGtDb25nZXN0aW9uUHVzaGJhY2tFeHBlcmltZW50W10gPSAiV2ViUlRDLUNv
bmdlc3Rpb25XaW5kb3dQdXNoYmFjayI7Citjb25zdCB1aW50MzJfdCBrRGVmYXVsdE1pblB1c2hi
YWNrVGFyZ2V0Qml0cmF0ZUJwcyA9IDMwMDAwOworCitib29sIFJlYWRDb25nZXN0aW9uV2luZG93
UHVzaGJhY2tFeHBlcmltZW50UGFyYW1ldGVyKAorICAgIHVpbnQzMl90KiBtaW5fcHVzaGJhY2tf
dGFyZ2V0X2JpdHJhdGVfYnBzKSB7CisgIFJUQ19EQ0hFQ0sobWluX3B1c2hiYWNrX3RhcmdldF9i
aXRyYXRlX2Jwcyk7CisgIHN0ZDo6c3RyaW5nIGV4cGVyaW1lbnRfc3RyaW5nID0KKyAgICAgIHdl
YnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZShrQ29uZ2VzdGlvblB1c2hiYWNrRXhwZXJp
bWVudCk7CisgIGludCBwYXJzZWRfdmFsdWVzID0gc3NjYW5mKGV4cGVyaW1lbnRfc3RyaW5nLmNf
c3RyKCksICJFbmFibGVkLSUiIFBSSXUzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwcyk7CisgIGlmIChwYXJzZWRfdmFsdWVzID09
IDEpIHsKKyAgICBSVENfQ0hFQ0tfR0UoKm1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHMs
IDApCisgICAgICAgIDw8ICJNaW4gcHVzaGJhY2sgdGFyZ2V0IGJpdHJhdGUgbXVzdCBiZSBncmVh
dGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4iOworICAgIHJldHVybiB0cnVlOworICB9CisgIHJldHVy
biBmYWxzZTsKK30KKworQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6Q29uZ2Vz
dGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcigpIHsKKyAgaWYgKCFSZWFkQ29uZ2VzdGlvbldp
bmRvd1B1c2hiYWNrRXhwZXJpbWVudFBhcmFtZXRlcigKKyAgICAgICAgICAmbWluX3B1c2hiYWNr
X3RhcmdldF9iaXRyYXRlX2Jwc18pKSB7CisgICAgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRl
X2Jwc18gPSBrRGVmYXVsdE1pblB1c2hiYWNrVGFyZ2V0Qml0cmF0ZUJwczsKKyAgfQorfQorCitD
b25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyOjpDb25nZXN0aW9uV2luZG93UHVzaGJh
Y2tDb250cm9sbGVyKAorICAgIHVpbnQzMl90IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9i
cHMpCisgICAgOiBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzXyhtaW5fcHVzaGJhY2tf
dGFyZ2V0X2JpdHJhdGVfYnBzKSB7fQorCit2b2lkIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0Nv
bnRyb2xsZXI6OlVwZGF0ZU91dHN0YW5kaW5nRGF0YSgKKyAgICBzaXplX3Qgb3V0c3RhbmRpbmdf
Ynl0ZXMpIHsKKyAgb3V0c3RhbmRpbmdfYnl0ZXNfID0gb3V0c3RhbmRpbmdfYnl0ZXM7Cit9CisK
K3ZvaWQgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6VXBkYXRlTWF4T3V0c3Rh
bmRpbmdEYXRhKAorICAgIHNpemVfdCBtYXhfb3V0c3RhbmRpbmdfYnl0ZXMpIHsKKyAgRGF0YVNp
emUgZGF0YV93aW5kb3cgPSBEYXRhU2l6ZTo6Ynl0ZXMobWF4X291dHN0YW5kaW5nX2J5dGVzKTsK
KyAgaWYgKGN1cnJlbnRfZGF0YV93aW5kb3dfKSB7CisgICAgZGF0YV93aW5kb3cgPSAoZGF0YV93
aW5kb3cgKyBjdXJyZW50X2RhdGFfd2luZG93Xy52YWx1ZSgpKSAvIDI7CisgIH0KKyAgY3VycmVu
dF9kYXRhX3dpbmRvd18gPSBkYXRhX3dpbmRvdzsKK30KKwordm9pZCBDb25nZXN0aW9uV2luZG93
UHVzaGJhY2tDb250cm9sbGVyOjpTZXREYXRhV2luZG93KERhdGFTaXplIGRhdGFfd2luZG93KSB7
CisgIGN1cnJlbnRfZGF0YV93aW5kb3dfID0gZGF0YV93aW5kb3c7Cit9CisKK3VpbnQzMl90IENv
bmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI6OlVwZGF0ZVRhcmdldEJpdHJhdGUoCisg
ICAgdWludDMyX3QgYml0cmF0ZV9icHMpIHsKKyAgaWYgKCFjdXJyZW50X2RhdGFfd2luZG93XyB8
fCBjdXJyZW50X2RhdGFfd2luZG93Xy0+SXNaZXJvKCkpCisgICAgcmV0dXJuIGJpdHJhdGVfYnBz
OworICBkb3VibGUgZmlsbF9yYXRpbyA9CisgICAgICBvdXRzdGFuZGluZ19ieXRlc18gLyBzdGF0
aWNfY2FzdDxkb3VibGU+KGN1cnJlbnRfZGF0YV93aW5kb3dfLT5ieXRlcygpKTsKKyAgaWYgKGZp
bGxfcmF0aW8gPiAxLjUpIHsKKyAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyAqPSAwLjk7CisgIH0g
ZWxzZSBpZiAoZmlsbF9yYXRpbyA+IDEpIHsKKyAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyAqPSAw
Ljk1OworICB9IGVsc2UgaWYgKGZpbGxfcmF0aW8gPCAwLjEpIHsKKyAgICBlbmNvZGluZ19yYXRl
X3JhdGlvXyA9IDEuMDsKKyAgfSBlbHNlIHsKKyAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyAqPSAx
LjA1OworICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gc3RkOjptaW4oZW5jb2RpbmdfcmF0ZV9y
YXRpb18sIDEuMCk7CisgIH0KKyAgdWludDMyX3QgYWRqdXN0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBz
ID0KKyAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihiaXRyYXRlX2JwcyAqIGVuY29kaW5nX3Jh
dGVfcmF0aW9fKTsKKworICAvLyBEbyBub3QgYWRqdXN0IGJlbG93IHRoZSBtaW5pbXVtIHB1c2hi
YWNrIGJpdHJhdGUgYnV0IGRvIG9iZXkgaWYgdGhlCisgIC8vIG9yaWdpbmFsIGVzdGltYXRlIGlz
IGJlbG93IGl0LgorICBiaXRyYXRlX2JwcyA9IGFkanVzdGVkX3RhcmdldF9iaXRyYXRlX2JwcyA8
IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfCisgICAgICAgICAgICAgICAgICAgID8g
c3RkOjptaW4oYml0cmF0ZV9icHMsIG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfKQor
ICAgICAgICAgICAgICAgICAgICA6IGFkanVzdGVkX3RhcmdldF9iaXRyYXRlX2JwczsKKyAgcmV0
dXJuIGJpdHJhdGVfYnBzOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJh
Y2tfY29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlZjA5NzRjY2UzNDU5NjExZDkwYTc0YjJhZDY5
NjljZmY3YWFmMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nv
bmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaApAQCAtMCwwICsxLDQyIEBACisv
KgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0NPTkdFU1RJT05fQ09OVFJP
TExFUl9HT09HX0NDX0NPTkdFU1RJT05fV0lORE9XX1BVU0hCQUNLX0NPTlRST0xMRVJfSF8KKyNk
ZWZpbmUgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfR09PR19DQ19DT05HRVNUSU9OX1dJ
TkRPV19QVVNIQkFDS19DT05UUk9MTEVSX0hfCisKKyNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25l
dHdvcmtfdHlwZXMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFRoaXMgY2xhc3MgZW5h
YmxlcyBwdXNoYmFjayBmcm9tIGNvbmdlc3Rpb24gd2luZG93IGRpcmVjdGx5IHRvIHZpZGVvIGVu
Y29kZXIuCisvLyBXaGVuIHRoZSBjb25nZXN0aW9uIHdpbmRvdyBpcyBmaWxsaW5nIHVwLCB0aGUg
dmlkZW8gZW5jb2RlciB0YXJnZXQgYml0cmF0ZQorLy8gd2lsbCBiZSByZWR1Y2VkIGFjY29yZGlu
Z2x5IHRvIGFjY29tbW9kYXRlIHRoZSBuZXR3b3JrIGNoYW5nZXMuIFRvIGF2b2lkCisvLyBwYXVz
aW5nIHZpZGVvIHRvbyBmcmVxdWVudGx5LCBhIG1pbmltdW0gZW5jb2RlciB0YXJnZXQgYml0cmF0
ZSB0aHJlc2hvbGQgaXMKKy8vIHVzZWQgdG8gcHJldmVudCB2aWRlbyBwYXVzZSBkdWUgdG8gYSBm
dWxsIGNvbmdlc3Rpb24gd2luZG93LgorY2xhc3MgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29u
dHJvbGxlciB7CisgcHVibGljOgorICBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVy
KCk7CisgIGV4cGxpY2l0IENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXIoCisgICAg
ICB1aW50MzJfdCBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzKTsKKyAgdm9pZCBVcGRh
dGVPdXRzdGFuZGluZ0RhdGEoc2l6ZV90IG91dHN0YW5kaW5nX2J5dGVzKTsKKyAgdm9pZCBVcGRh
dGVNYXhPdXRzdGFuZGluZ0RhdGEoc2l6ZV90IG1heF9vdXRzdGFuZGluZ19ieXRlcyk7CisgIHVp
bnQzMl90IFVwZGF0ZVRhcmdldEJpdHJhdGUodWludDMyX3QgYml0cmF0ZV9icHMpOworICB2b2lk
IFNldERhdGFXaW5kb3coRGF0YVNpemUgZGF0YV93aW5kb3cpOworCisgcHJpdmF0ZToKKyAgYWJz
bDo6b3B0aW9uYWw8RGF0YVNpemU+IGN1cnJlbnRfZGF0YV93aW5kb3dfOworICBzaXplX3Qgb3V0
c3RhbmRpbmdfYnl0ZXNfID0gMDsKKyAgdWludDMyX3QgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRy
YXRlX2Jwc187CisgIGRvdWJsZSBlbmNvZGluZ19yYXRlX3JhdGlvXyA9IDEuMDsKK307CisKK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0NPTkdFU1RJT05fQ09O
VFJPTExFUl9HT09HX0NDX0NPTkdFU1RJT05fV0lORE9XX1BVU0hCQUNLX0NPTlRST0xMRVJfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVz
aGJhY2tfY29udHJvbGxlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29u
Z2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl91bml0dGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMDYxN2VlYmI1MmNjZTk4M2IyMGI4ZWQ0Zjc5OGIyNWM4NjZjNmE5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19j
b250cm9sbGVyX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9j
b25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmgiCisjaW5jbHVkZSAidGVzdC9n
bW9jay5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKwordXNpbmcgdGVzdGluZzo6XzsKKwor
bmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKK2NsYXNzIENvbmdlc3Rpb25X
aW5kb3dQdXNoYmFja0NvbnRyb2xsZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Cisg
cHJvdGVjdGVkOgorICBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyIGN3bmRfY29u
dHJvbGxlcl87Cit9OworCitURVNUX0YoQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxl
clRlc3QsIEZ1bGxDb25nZXN0aW9uV2luZG93KSB7CisgIGN3bmRfY29udHJvbGxlcl8uVXBkYXRl
T3V0c3RhbmRpbmdEYXRhKDEwMDAwMCk7CisgIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlTWF4T3V0
c3RhbmRpbmdEYXRhKDUwMDAwKTsKKworICB1aW50MzJfdCBiaXRyYXRlX2JwcyA9IDgwMDAwOwor
ICBiaXRyYXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRy
YXRlX2Jwcyk7CisgIEVYUEVDVF9FUSg3MjAwMHUsIGJpdHJhdGVfYnBzKTsKKworICBjd25kX2Nv
bnRyb2xsZXJfLlVwZGF0ZU1heE91dHN0YW5kaW5nRGF0YSg1MDAwMCk7CisgIGJpdHJhdGVfYnBz
ID0gY3duZF9jb250cm9sbGVyXy5VcGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJhdGVfYnBzKTsKKyAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHVpbnQzMl90Pig3MjAwMCAqIDAuOSAqIDAuOSksIGJpdHJh
dGVfYnBzKTsKK30KKworVEVTVF9GKENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXJU
ZXN0LCBOb3JtYWxDb25nZXN0aW9uV2luZG93KSB7CisgIGN3bmRfY29udHJvbGxlcl8uVXBkYXRl
T3V0c3RhbmRpbmdEYXRhKDEwMDAwMCk7CisgIGN3bmRfY29udHJvbGxlcl8uU2V0RGF0YVdpbmRv
dyhEYXRhU2l6ZTo6Ynl0ZXMoMjAwMDAwKSk7CisKKyAgdWludDMyX3QgYml0cmF0ZV9icHMgPSA4
MDAwMDsKKyAgYml0cmF0ZV9icHMgPSBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZVRhcmdldEJpdHJh
dGUoYml0cmF0ZV9icHMpOworICBFWFBFQ1RfRVEoODAwMDB1LCBiaXRyYXRlX2Jwcyk7CisKKyAg
Y3duZF9jb250cm9sbGVyXy5VcGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEoMjAwMDApOworICBiaXRy
YXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jw
cyk7CisgIEVYUEVDVF9FUSg4MDAwMHUsIGJpdHJhdGVfYnBzKTsKK30KKworVEVTVF9GKENvbmdl
c3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXJUZXN0LCBMb3dCaXRyYXRlKSB7CisgIGN3bmRf
Y29udHJvbGxlcl8uVXBkYXRlT3V0c3RhbmRpbmdEYXRhKDEwMDAwMCk7CisgIGN3bmRfY29udHJv
bGxlcl8uU2V0RGF0YVdpbmRvdyhEYXRhU2l6ZTo6Ynl0ZXMoNTAwMDApKTsKKworICB1aW50MzJf
dCBiaXRyYXRlX2JwcyA9IDM1MDAwOworICBiaXRyYXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8u
VXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7CisgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oMzUwMDAgKiAwLjkpLCBiaXRyYXRlX2Jwcyk7CisKKyAgY3duZF9jb250cm9s
bGVyXy5VcGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEoMjAwMDApOworICBiaXRyYXRlX2JwcyA9IGN3
bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7CisgIEVYUEVD
VF9FUSgzMDAwMHUsIGJpdHJhdGVfYnBzKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2Mv
ZGVsYXlfYmFzZWRfYndlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9i
d2UuY2MKaW5kZXggYzIxOTY2Y2Y3ZjU0NDRkZTg3MTI2YTJkYzY4ZWFiYjM1MGEzNGYxMS4uNDg5
NGM5ODYzYjY4MzYxMTNjNWUxM2JiYWMzOWQ0ODkyY2U3MDllOSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
Z29vZ19jYy9kZWxheV9iYXNlZF9id2UuY2MKQEAgLTExLDI2ICsxMSwyNSBAQAogI2luY2x1ZGUg
Im1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlLmgi
CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8Y3N0
ZGludD4KICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5
cGVzLmgiICAvLyBGb3IgUGFjZWRQYWNrZXRJbmZvCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2RlbGF5X2Jhc2VkLmgiCiAjaW5jbHVkZSAi
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3RyZW5kbGluZV9lc3RpbWF0b3IuaCIKLSNp
bmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRv
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3QvYndl
X3Rlc3RfbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAi
c3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJzeXN0ZW1f
d3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCiAKK25hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNw
YWNlIHsKLXN0YXRpYyBjb25zdCBpbnQ2NF90IGtTdHJlYW1UaW1lT3V0TXMgPSAyMDAwOworY29u
c3RleHByIFRpbWVEZWx0YSBrU3RyZWFtVGltZU91dCA9IFRpbWVEZWx0YTo6U2Vjb25kczwyPigp
OwogY29uc3RleHByIGludCBrVGltZXN0YW1wR3JvdXBMZW5ndGhNcyA9IDU7CiBjb25zdGV4cHIg
aW50IGtBYnNTZW5kVGltZUZyYWN0aW9uID0gMTg7CiBjb25zdGV4cHIgaW50IGtBYnNTZW5kVGlt
ZUludGVyQXJyaXZhbFVwc2hpZnQgPSA4OwpAQCAtNjMsMjQgKzYyLDIyIEBAIHNpemVfdCBSZWFk
VHJlbmRsaW5lRmlsdGVyV2luZG93U2l6ZSgpIHsKICAgICAgIHJldHVybiB3aW5kb3dfc2l6ZTsK
ICAgICBSVENfTE9HKFdBUk5JTkcpIDw8ICJXaW5kb3cgc2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhh
biAxLiI7CiAgIH0KLSAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHBhcnNlIHBh
cmFtZXRlcnMgZm9yIEJ3ZVRyZW5kbGluZUZpbHRlciAiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgImV4cGVyaW1lbnQgZnJvbSBmaWVsZCB0cmlhbCBzdHJpbmcuIFVzaW5nIGRlZmF1bHQuIjsK
KyAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlcnMgZm9y
IEJ3ZVdpbmRvd1NpemVJblBhY2tldHMiCisgICAgICAgICAgICAgICAgICAgICAgICAgIiBleHBl
cmltZW50IGZyb20gZmllbGQgdHJpYWwgc3RyaW5nLiBVc2luZyBkZWZhdWx0LiI7CiAgIHJldHVy
biBrRGVmYXVsdFRyZW5kbGluZVdpbmRvd1NpemU7CiB9CiB9ICAvLyBuYW1lc3BhY2UKIAotbmFt
ZXNwYWNlIHdlYnJ0YyB7Ci0KIERlbGF5QmFzZWRCd2U6OlJlc3VsdDo6UmVzdWx0KCkKICAgICA6
IHVwZGF0ZWQoZmFsc2UpLAogICAgICAgcHJvYmUoZmFsc2UpLAotICAgICAgdGFyZ2V0X2JpdHJh
dGVfYnBzKDApLAorICAgICAgdGFyZ2V0X2JpdHJhdGUoRGF0YVJhdGU6Olplcm8oKSksCiAgICAg
ICByZWNvdmVyZWRfZnJvbV9vdmVydXNlKGZhbHNlKSB7fQogCi1EZWxheUJhc2VkQndlOjpSZXN1
bHQ6OlJlc3VsdChib29sIHByb2JlLCB1aW50MzJfdCB0YXJnZXRfYml0cmF0ZV9icHMpCitEZWxh
eUJhc2VkQndlOjpSZXN1bHQ6OlJlc3VsdChib29sIHByb2JlLCBEYXRhUmF0ZSB0YXJnZXRfYml0
cmF0ZSkKICAgICA6IHVwZGF0ZWQodHJ1ZSksCiAgICAgICBwcm9iZShwcm9iZSksCi0gICAgICB0
YXJnZXRfYml0cmF0ZV9icHModGFyZ2V0X2JpdHJhdGVfYnBzKSwKKyAgICAgIHRhcmdldF9iaXRy
YXRlKHRhcmdldF9iaXRyYXRlKSwKICAgICAgIHJlY292ZXJlZF9mcm9tX292ZXJ1c2UoZmFsc2Up
IHt9CiAKIERlbGF5QmFzZWRCd2U6OlJlc3VsdDo6flJlc3VsdCgpIHt9CkBAIC04OSw5ICs4Niw4
IEBAIERlbGF5QmFzZWRCd2U6OkRlbGF5QmFzZWRCd2UoUnRjRXZlbnRMb2cqIGV2ZW50X2xvZykK
ICAgICA6IGV2ZW50X2xvZ18oZXZlbnRfbG9nKSwKICAgICAgIGludGVyX2Fycml2YWxfKCksCiAg
ICAgICBkZWxheV9kZXRlY3Rvcl8oKSwKLSAgICAgIGxhc3Rfc2Vlbl9wYWNrZXRfbXNfKC0xKSwK
KyAgICAgIGxhc3Rfc2Vlbl9wYWNrZXRfKFRpbWVzdGFtcDo6TWludXNJbmZpbml0eSgpKSwKICAg
ICAgIHVtYV9yZWNvcmRlZF8oZmFsc2UpLAotICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3Jf
KGV2ZW50X2xvZyksCiAgICAgICB0cmVuZGxpbmVfd2luZG93X3NpemVfKAogICAgICAgICAgIHdl
YnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrQndlV2luZG93U2l6ZUluUGFja2V0c0V4cGVy
aW1lbnQpCiAgICAgICAgICAgICAgID8gUmVhZFRyZW5kbGluZUZpbHRlcldpbmRvd1NpemUoKQpA
QCAtOTksNyArOTUsNyBAQCBEZWxheUJhc2VkQndlOjpEZWxheUJhc2VkQndlKFJ0Y0V2ZW50TG9n
KiBldmVudF9sb2cpCiAgICAgICB0cmVuZGxpbmVfc21vb3RoaW5nX2NvZWZmXyhrRGVmYXVsdFRy
ZW5kbGluZVNtb290aGluZ0NvZWZmKSwKICAgICAgIHRyZW5kbGluZV90aHJlc2hvbGRfZ2Fpbl8o
a0RlZmF1bHRUcmVuZGxpbmVUaHJlc2hvbGRHYWluKSwKICAgICAgIGNvbnNlY3V0aXZlX2RlbGF5
ZWRfZmVlZGJhY2tzXygwKSwKLSAgICAgIHByZXZfYml0cmF0ZV8oMCksCisgICAgICBwcmV2X2Jp
dHJhdGVfKERhdGFSYXRlOjpaZXJvKCkpLAogICAgICAgcHJldl9zdGF0ZV8oQmFuZHdpZHRoVXNh
Z2U6OmtCd05vcm1hbCkgewogICBSVENfTE9HKExTX0lORk8pCiAgICAgICA8PCAiVXNpbmcgVHJl
bmRsaW5lIGZpbHRlciBmb3IgZGVsYXkgY2hhbmdlIGVzdGltYXRpb24gd2l0aCB3aW5kb3cgc2l6
ZSAiCkBAIC0xMTMsOCArMTA5LDkgQEAgRGVsYXlCYXNlZEJ3ZTo6fkRlbGF5QmFzZWRCd2UoKSB7
fQogCiBEZWxheUJhc2VkQndlOjpSZXN1bHQgRGVsYXlCYXNlZEJ3ZTo6SW5jb21pbmdQYWNrZXRG
ZWVkYmFja1ZlY3RvcigKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4mIHBh
Y2tldF9mZWVkYmFja192ZWN0b3IsCi0gICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGFja2Vk
X2JpdHJhdGVfYnBzLAotICAgIGludDY0X3QgYXRfdGltZV9tcykgeworICAgIGFic2w6Om9wdGlv
bmFsPERhdGFSYXRlPiBhY2tlZF9iaXRyYXRlLAorICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRl
PiBwcm9iZV9iaXRyYXRlLAorICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CiAgIFJUQ19EQ0hFQ0so
c3RkOjppc19zb3J0ZWQocGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5iZWdpbigpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF9mZWVkYmFja192ZWN0b3IuZW5kKCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGFja2V0RmVlZGJhY2tDb21wYXJhdG9yKCkpKTsKQEAgLTE0
MSw3ICsxMzgsNyBAQCBEZWxheUJhc2VkQndlOjpSZXN1bHQgRGVsYXlCYXNlZEJ3ZTo6SW5jb21p
bmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKICAgICBpZiAocGFja2V0X2ZlZWRiYWNrLnNlbmRfdGlt
ZV9tcyA8IDApCiAgICAgICBjb250aW51ZTsKICAgICBkZWxheWVkX2ZlZWRiYWNrID0gZmFsc2U7
Ci0gICAgSW5jb21pbmdQYWNrZXRGZWVkYmFjayhwYWNrZXRfZmVlZGJhY2ssIGF0X3RpbWVfbXMp
OworICAgIEluY29taW5nUGFja2V0RmVlZGJhY2socGFja2V0X2ZlZWRiYWNrLCBhdF90aW1lKTsK
ICAgICBpZiAocHJldl9kZXRlY3Rvcl9zdGF0ZSA9PSBCYW5kd2lkdGhVc2FnZTo6a0J3VW5kZXJ1
c2luZyAmJgogICAgICAgICBkZWxheV9kZXRlY3Rvcl8tPlN0YXRlKCkgPT0gQmFuZHdpZHRoVXNh
Z2U6OmtCd05vcm1hbCkgewogICAgICAgcmVjb3ZlcmVkX2Zyb21fb3ZlcnVzZSA9IHRydWU7CkBA
IC0xNTAsNDMgKzE0Nyw1MSBAQCBEZWxheUJhc2VkQndlOjpSZXN1bHQgRGVsYXlCYXNlZEJ3ZTo6
SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKICAgfQogCiAgIGlmIChkZWxheWVkX2ZlZWRi
YWNrKSB7Ci0gICAgKytjb25zZWN1dGl2ZV9kZWxheWVkX2ZlZWRiYWNrc187Ci0gICAgaWYgKGNv
bnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXyA+PSBrTWF4Q29uc2VjdXRpdmVGYWlsZWRMb29r
dXBzKSB7Ci0gICAgICBjb25zZWN1dGl2ZV9kZWxheWVkX2ZlZWRiYWNrc18gPSAwOwotICAgICAg
cmV0dXJuIE9uTG9uZ0ZlZWRiYWNrRGVsYXkocGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5iYWNrKCku
YXJyaXZhbF90aW1lX21zKTsKLSAgICB9CisgICAgVGltZXN0YW1wIGFycml2YWxfdGltZSA9IFRp
bWVzdGFtcDo6UGx1c0luZmluaXR5KCk7CisgICAgaWYgKHBhY2tldF9mZWVkYmFja192ZWN0b3Iu
YmFjaygpLmFycml2YWxfdGltZV9tcyA+IDApCisgICAgICBhcnJpdmFsX3RpbWUgPQorICAgICAg
ICAgIFRpbWVzdGFtcDo6bXMocGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5iYWNrKCkuYXJyaXZhbF90
aW1lX21zKTsKKyAgICByZXR1cm4gT25EZWxheWVkRmVlZGJhY2soYXJyaXZhbF90aW1lKTsKKwog
ICB9IGVsc2UgewogICAgIGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXyA9IDA7Ci0gICAg
cmV0dXJuIE1heWJlVXBkYXRlRXN0aW1hdGUoYWNrZWRfYml0cmF0ZV9icHMsIHJlY292ZXJlZF9m
cm9tX292ZXJ1c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRfdGltZV9tcyk7
CisgICAgcmV0dXJuIE1heWJlVXBkYXRlRXN0aW1hdGUoYWNrZWRfYml0cmF0ZSwgcHJvYmVfYml0
cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvdmVyZWRfZnJvbV9vdmVy
dXNlLCBhdF90aW1lKTsKKyAgfQorICByZXR1cm4gUmVzdWx0KCk7Cit9CisKK0RlbGF5QmFzZWRC
d2U6OlJlc3VsdCBEZWxheUJhc2VkQndlOjpPbkRlbGF5ZWRGZWVkYmFjayhUaW1lc3RhbXAgcmVj
ZWl2ZV90aW1lKSB7CisgICsrY29uc2VjdXRpdmVfZGVsYXllZF9mZWVkYmFja3NfOworICBpZiAo
Y29uc2VjdXRpdmVfZGVsYXllZF9mZWVkYmFja3NfID49IGtNYXhDb25zZWN1dGl2ZUZhaWxlZExv
b2t1cHMpIHsKKyAgICBjb25zZWN1dGl2ZV9kZWxheWVkX2ZlZWRiYWNrc18gPSAwOworICAgIHJl
dHVybiBPbkxvbmdGZWVkYmFja0RlbGF5KHJlY2VpdmVfdGltZSk7CiAgIH0KICAgcmV0dXJuIFJl
c3VsdCgpOwogfQogCiBEZWxheUJhc2VkQndlOjpSZXN1bHQgRGVsYXlCYXNlZEJ3ZTo6T25Mb25n
RmVlZGJhY2tEZWxheSgKLSAgICBpbnQ2NF90IGFycml2YWxfdGltZV9tcykgeworICAgIFRpbWVz
dGFtcCBhcnJpdmFsX3RpbWUpIHsKICAgLy8gRXN0aW1hdGUgc2hvdWxkIGFsd2F5cyBiZSB2YWxp
ZCBzaW5jZSBhIHN0YXJ0IGJpdHJhdGUgYWx3YXlzIGlzIHNldCBpbiB0aGUKICAgLy8gQ2FsbCBj
b25zdHJ1Y3Rvci4gQW4gYWx0ZXJuYXRpdmUgd291bGQgYmUgdG8gcmV0dXJuIGFuIGVtcHR5IFJl
c3VsdCBoZXJlLAogICAvLyBvciB0byBlc3RpbWF0ZSB0aGUgdGhyb3VnaHB1dCBiYXNlZCBvbiB0
aGUgZmVlZGJhY2sgd2UgcmVjZWl2ZWQuCiAgIFJUQ19EQ0hFQ0socmF0ZV9jb250cm9sXy5WYWxp
ZEVzdGltYXRlKCkpOwotICByYXRlX2NvbnRyb2xfLlNldEVzdGltYXRlKHJhdGVfY29udHJvbF8u
TGF0ZXN0RXN0aW1hdGUoKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyaXZh
bF90aW1lX21zKTsKKyAgcmF0ZV9jb250cm9sXy5TZXRFc3RpbWF0ZShyYXRlX2NvbnRyb2xfLkxh
dGVzdEVzdGltYXRlKCkgLyAyLCBhcnJpdmFsX3RpbWUpOwogICBSZXN1bHQgcmVzdWx0OwogICBy
ZXN1bHQudXBkYXRlZCA9IHRydWU7CiAgIHJlc3VsdC5wcm9iZSA9IGZhbHNlOwotICByZXN1bHQu
dGFyZ2V0X2JpdHJhdGVfYnBzID0gcmF0ZV9jb250cm9sXy5MYXRlc3RFc3RpbWF0ZSgpOworICBy
ZXN1bHQudGFyZ2V0X2JpdHJhdGUgPSByYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7CiAg
IFJUQ19MT0coTFNfV0FSTklORykgPDwgIkxvbmcgZmVlZGJhY2sgZGVsYXkgZGV0ZWN0ZWQsIHJl
ZHVjaW5nIEJXRSB0byAiCi0gICAgICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0LnRhcmdldF9i
aXRyYXRlX2JwczsKKyAgICAgICAgICAgICAgICAgICAgICA8PCBUb1N0cmluZyhyZXN1bHQudGFy
Z2V0X2JpdHJhdGUpOwogICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIERlbGF5QmFzZWRCd2U6
OkluY29taW5nUGFja2V0RmVlZGJhY2soCiAgICAgY29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tl
dF9mZWVkYmFjaywKLSAgICBpbnQ2NF90IGF0X3RpbWVfbXMpIHsKLSAgaW50NjRfdCBub3dfbXMg
PSBhdF90aW1lX21zOworICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CiAgIC8vIFJlc2V0IGlmIHRo
ZSBzdHJlYW0gaGFzIHRpbWVkIG91dC4KLSAgaWYgKGxhc3Rfc2Vlbl9wYWNrZXRfbXNfID09IC0x
IHx8Ci0gICAgICBub3dfbXMgLSBsYXN0X3NlZW5fcGFja2V0X21zXyA+IGtTdHJlYW1UaW1lT3V0
TXMpIHsKKyAgaWYgKGxhc3Rfc2Vlbl9wYWNrZXRfLklzSW5maW5pdGUoKSB8fAorICAgICAgYXRf
dGltZSAtIGxhc3Rfc2Vlbl9wYWNrZXRfID4ga1N0cmVhbVRpbWVPdXQpIHsKICAgICBpbnRlcl9h
cnJpdmFsXy5yZXNldCgKICAgICAgICAgbmV3IEludGVyQXJyaXZhbCgoa1RpbWVzdGFtcEdyb3Vw
TGVuZ3RoTXMgPDwga0ludGVyQXJyaXZhbFNoaWZ0KSAvIDEwMDAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAga1RpbWVzdGFtcFRvTXMsIHRydWUpKTsKQEAgLTE5NCw3ICsxOTksNyBAQCB2b2lk
IERlbGF5QmFzZWRCd2U6OkluY29taW5nUGFja2V0RmVlZGJhY2soCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlbmRsaW5lX3Ntb290aGluZ19jb2Vm
Zl8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJl
bmRsaW5lX3RocmVzaG9sZF9nYWluXykpOwogICB9Ci0gIGxhc3Rfc2Vlbl9wYWNrZXRfbXNfID0g
bm93X21zOworICBsYXN0X3NlZW5fcGFja2V0XyA9IGF0X3RpbWU7CiAKICAgdWludDMyX3Qgc2Vu
ZF90aW1lXzI0Yml0cyA9CiAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oCkBAIC0yMTEsMTE1
ICsyMTYsMTA5IEBAIHZvaWQgRGVsYXlCYXNlZEJ3ZTo6SW5jb21pbmdQYWNrZXRGZWVkYmFjaygK
ICAgaW50NjRfdCB0X2RlbHRhID0gMDsKICAgaW50IHNpemVfZGVsdGEgPSAwOwogICBpZiAoaW50
ZXJfYXJyaXZhbF8tPkNvbXB1dGVEZWx0YXModGltZXN0YW1wLCBwYWNrZXRfZmVlZGJhY2suYXJy
aXZhbF90aW1lX21zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm93X21z
LCBwYWNrZXRfZmVlZGJhY2sucGF5bG9hZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXRfdGltZS5tcygpLCBwYWNrZXRfZmVlZGJhY2sucGF5bG9hZF9zaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRzX2RlbHRhLCAmdF9kZWx0YSwg
JnNpemVfZGVsdGEpKSB7CiAgICAgZG91YmxlIHRzX2RlbHRhX21zID0gKDEwMDAuMCAqIHRzX2Rl
bHRhKSAvICgxIDw8IGtJbnRlckFycml2YWxTaGlmdCk7CiAgICAgZGVsYXlfZGV0ZWN0b3JfLT5V
cGRhdGUodF9kZWx0YSwgdHNfZGVsdGFfbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFja2V0X2ZlZWRiYWNrLmFycml2YWxfdGltZV9tcyk7CiAgIH0KLSAgaWYgKHBhY2tldF9mZWVk
YmFjay5wYWNpbmdfaW5mby5wcm9iZV9jbHVzdGVyX2lkICE9Ci0gICAgICBQYWNlZFBhY2tldElu
Zm86OmtOb3RBUHJvYmUpIHsKLSAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8uSGFuZGxlUHJv
YmVBbmRFc3RpbWF0ZUJpdHJhdGUocGFja2V0X2ZlZWRiYWNrKTsKLSAgfQogfQogCiBEZWxheUJh
c2VkQndlOjpSZXN1bHQgRGVsYXlCYXNlZEJ3ZTo6TWF5YmVVcGRhdGVFc3RpbWF0ZSgKLSAgICBh
YnNsOjpvcHRpb25hbDx1aW50MzJfdD4gYWNrZWRfYml0cmF0ZV9icHMsCisgICAgYWJzbDo6b3B0
aW9uYWw8RGF0YVJhdGU+IGFja2VkX2JpdHJhdGUsCisgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJh
dGU+IHByb2JlX2JpdHJhdGUsCiAgICAgYm9vbCByZWNvdmVyZWRfZnJvbV9vdmVydXNlLAotICAg
IGludDY0X3QgYXRfdGltZV9tcykgeworICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CiAgIFJlc3Vs
dCByZXN1bHQ7Ci0gIGludDY0X3Qgbm93X21zID0gYXRfdGltZV9tczsKIAotICBhYnNsOjpvcHRp
b25hbDxpbnQ+IHByb2JlX2JpdHJhdGVfYnBzID0KLSAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1h
dG9yXy5GZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGVCcHMoKTsKICAgLy8gQ3VycmVu
dGx5IG92ZXJ1c2luZyB0aGUgYmFuZHdpZHRoLgogICBpZiAoZGVsYXlfZGV0ZWN0b3JfLT5TdGF0
ZSgpID09IEJhbmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmcpIHsKLSAgICBpZiAoYWNrZWRfYml0
cmF0ZV9icHMgJiYKLSAgICAgICAgcmF0ZV9jb250cm9sXy5UaW1lVG9SZWR1Y2VGdXJ0aGVyKG5v
d19tcywgKmFja2VkX2JpdHJhdGVfYnBzKSkgeworICAgIGlmIChhY2tlZF9iaXRyYXRlICYmCisg
ICAgICAgIHJhdGVfY29udHJvbF8uVGltZVRvUmVkdWNlRnVydGhlcihhdF90aW1lLCAqYWNrZWRf
Yml0cmF0ZSkpIHsKICAgICAgIHJlc3VsdC51cGRhdGVkID0KLSAgICAgICAgICBVcGRhdGVFc3Rp
bWF0ZShub3dfbXMsIGFja2VkX2JpdHJhdGVfYnBzLCAmcmVzdWx0LnRhcmdldF9iaXRyYXRlX2Jw
cyk7Ci0gICAgfSBlbHNlIGlmICghYWNrZWRfYml0cmF0ZV9icHMgJiYgcmF0ZV9jb250cm9sXy5W
YWxpZEVzdGltYXRlKCkgJiYKLSAgICAgICAgICAgICAgIHJhdGVfY29udHJvbF8uSW5pdGlhbFRp
bWVUb1JlZHVjZUZ1cnRoZXIobm93X21zKSkgeworICAgICAgICAgIFVwZGF0ZUVzdGltYXRlKGF0
X3RpbWUsIGFja2VkX2JpdHJhdGUsICZyZXN1bHQudGFyZ2V0X2JpdHJhdGUpOworICAgIH0gZWxz
ZSBpZiAoIWFja2VkX2JpdHJhdGUgJiYgcmF0ZV9jb250cm9sXy5WYWxpZEVzdGltYXRlKCkgJiYK
KyAgICAgICAgICAgICAgIHJhdGVfY29udHJvbF8uSW5pdGlhbFRpbWVUb1JlZHVjZUZ1cnRoZXIo
YXRfdGltZSkpIHsKICAgICAgIC8vIE92ZXJ1c2luZyBiZWZvcmUgd2UgaGF2ZSBhIG1lYXN1cmVk
IGFja25vd2xlZGdlZCBiaXRyYXRlLiBSZWR1Y2Ugc2VuZAogICAgICAgLy8gcmF0ZSBieSA1MCUg
ZXZlcnkgMjAwIG1zLgogICAgICAgLy8gVE9ETyh0c2NodW1pbSk6IEltcHJvdmUgdGhpcyBhbmQv
b3IgdGhlIGFja25vd2xlZGdlZCBiaXRyYXRlIGVzdGltYXRvcgogICAgICAgLy8gc28gdGhhdCB3
ZSAoYWxtb3N0KSBhbHdheXMgaGF2ZSBhIGJpdHJhdGUgZXN0aW1hdGUuCi0gICAgICByYXRlX2Nv
bnRyb2xfLlNldEVzdGltYXRlKHJhdGVfY29udHJvbF8uTGF0ZXN0RXN0aW1hdGUoKSAvIDIsIG5v
d19tcyk7CisgICAgICByYXRlX2NvbnRyb2xfLlNldEVzdGltYXRlKHJhdGVfY29udHJvbF8uTGF0
ZXN0RXN0aW1hdGUoKSAvIDIsIGF0X3RpbWUpOwogICAgICAgcmVzdWx0LnVwZGF0ZWQgPSB0cnVl
OwogICAgICAgcmVzdWx0LnByb2JlID0gZmFsc2U7Ci0gICAgICByZXN1bHQudGFyZ2V0X2JpdHJh
dGVfYnBzID0gcmF0ZV9jb250cm9sXy5MYXRlc3RFc3RpbWF0ZSgpOworICAgICAgcmVzdWx0LnRh
cmdldF9iaXRyYXRlID0gcmF0ZV9jb250cm9sXy5MYXRlc3RFc3RpbWF0ZSgpOwogICAgIH0KICAg
fSBlbHNlIHsKLSAgICBpZiAocHJvYmVfYml0cmF0ZV9icHMpIHsKKyAgICBpZiAocHJvYmVfYml0
cmF0ZSkgewogICAgICAgcmVzdWx0LnByb2JlID0gdHJ1ZTsKICAgICAgIHJlc3VsdC51cGRhdGVk
ID0gdHJ1ZTsKLSAgICAgIHJlc3VsdC50YXJnZXRfYml0cmF0ZV9icHMgPSAqcHJvYmVfYml0cmF0
ZV9icHM7Ci0gICAgICByYXRlX2NvbnRyb2xfLlNldEVzdGltYXRlKCpwcm9iZV9iaXRyYXRlX2Jw
cywgbm93X21zKTsKKyAgICAgIHJlc3VsdC50YXJnZXRfYml0cmF0ZSA9ICpwcm9iZV9iaXRyYXRl
OworICAgICAgcmF0ZV9jb250cm9sXy5TZXRFc3RpbWF0ZSgqcHJvYmVfYml0cmF0ZSwgYXRfdGlt
ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgIHJlc3VsdC51cGRhdGVkID0KLSAgICAgICAgICBVcGRh
dGVFc3RpbWF0ZShub3dfbXMsIGFja2VkX2JpdHJhdGVfYnBzLCAmcmVzdWx0LnRhcmdldF9iaXRy
YXRlX2Jwcyk7CisgICAgICAgICAgVXBkYXRlRXN0aW1hdGUoYXRfdGltZSwgYWNrZWRfYml0cmF0
ZSwgJnJlc3VsdC50YXJnZXRfYml0cmF0ZSk7CiAgICAgICByZXN1bHQucmVjb3ZlcmVkX2Zyb21f
b3ZlcnVzZSA9IHJlY292ZXJlZF9mcm9tX292ZXJ1c2U7CiAgICAgfQogICB9CiAgIEJhbmR3aWR0
aFVzYWdlIGRldGVjdG9yX3N0YXRlID0gZGVsYXlfZGV0ZWN0b3JfLT5TdGF0ZSgpOwotICBpZiAo
KHJlc3VsdC51cGRhdGVkICYmIHByZXZfYml0cmF0ZV8gIT0gcmVzdWx0LnRhcmdldF9iaXRyYXRl
X2JwcykgfHwKKyAgaWYgKChyZXN1bHQudXBkYXRlZCAmJiBwcmV2X2JpdHJhdGVfICE9IHJlc3Vs
dC50YXJnZXRfYml0cmF0ZSkgfHwKICAgICAgIGRldGVjdG9yX3N0YXRlICE9IHByZXZfc3RhdGVf
KSB7Ci0gICAgdWludDMyX3QgYml0cmF0ZV9icHMgPQotICAgICAgICByZXN1bHQudXBkYXRlZCA/
IHJlc3VsdC50YXJnZXRfYml0cmF0ZV9icHMgOiBwcmV2X2JpdHJhdGVfOworICAgIERhdGFSYXRl
IGJpdHJhdGUgPSByZXN1bHQudXBkYXRlZCA/IHJlc3VsdC50YXJnZXRfYml0cmF0ZSA6IHByZXZf
Yml0cmF0ZV87CiAKLSAgICBCV0VfVEVTVF9MT0dHSU5HX1BMT1QoMSwgInRhcmdldF9iaXRyYXRl
X2JwcyIsIG5vd19tcywgYml0cmF0ZV9icHMpOworICAgIEJXRV9URVNUX0xPR0dJTkdfUExPVCgx
LCAidGFyZ2V0X2JpdHJhdGVfYnBzIiwgYXRfdGltZS5tcygpLCBiaXRyYXRlLmJwcygpKTsKIAog
ICAgIGlmIChldmVudF9sb2dfKSB7CiAgICAgICBldmVudF9sb2dfLT5Mb2coYWJzbDo6bWFrZV91
bmlxdWU8UnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkPigKLSAgICAgICAgICBiaXRyYXRlX2Jw
cywgZGV0ZWN0b3Jfc3RhdGUpKTsKKyAgICAgICAgICBiaXRyYXRlLmJwcygpLCBkZXRlY3Rvcl9z
dGF0ZSkpOwogICAgIH0KIAotICAgIHByZXZfYml0cmF0ZV8gPSBiaXRyYXRlX2JwczsKKyAgICBw
cmV2X2JpdHJhdGVfID0gYml0cmF0ZTsKICAgICBwcmV2X3N0YXRlXyA9IGRldGVjdG9yX3N0YXRl
OwogICB9CiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgRGVsYXlCYXNlZEJ3ZTo6VXBkYXRl
RXN0aW1hdGUoaW50NjRfdCBub3dfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBhY2tlZF9iaXRyYXRlX2JwcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QqIHRhcmdldF9iaXRyYXRlX2Jwcykg
ewotICBjb25zdCBSYXRlQ29udHJvbElucHV0IGlucHV0KGRlbGF5X2RldGVjdG9yXy0+U3RhdGUo
KSwgYWNrZWRfYml0cmF0ZV9icHMpOwotICAqdGFyZ2V0X2JpdHJhdGVfYnBzID0gcmF0ZV9jb250
cm9sXy5VcGRhdGUoJmlucHV0LCBub3dfbXMpOworYm9vbCBEZWxheUJhc2VkQndlOjpVcGRhdGVF
c3RpbWF0ZShUaW1lc3RhbXAgYXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGFja2VkX2JpdHJhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRlKiB0YXJnZXRfcmF0ZSkgeworICBjb25z
dCBSYXRlQ29udHJvbElucHV0IGlucHV0KGRlbGF5X2RldGVjdG9yXy0+U3RhdGUoKSwgYWNrZWRf
Yml0cmF0ZSk7CisgICp0YXJnZXRfcmF0ZSA9IHJhdGVfY29udHJvbF8uVXBkYXRlKCZpbnB1dCwg
YXRfdGltZSk7CiAgIHJldHVybiByYXRlX2NvbnRyb2xfLlZhbGlkRXN0aW1hdGUoKTsKIH0KIAot
dm9pZCBEZWxheUJhc2VkQndlOjpPblJ0dFVwZGF0ZShpbnQ2NF90IGF2Z19ydHRfbXMpIHsKLSAg
cmF0ZV9jb250cm9sXy5TZXRSdHQoYXZnX3J0dF9tcyk7Cit2b2lkIERlbGF5QmFzZWRCd2U6Ok9u
UnR0VXBkYXRlKFRpbWVEZWx0YSBhdmdfcnR0KSB7CisgIHJhdGVfY29udHJvbF8uU2V0UnR0KGF2
Z19ydHQpOwogfQogCiBib29sIERlbGF5QmFzZWRCd2U6OkxhdGVzdEVzdGltYXRlKHN0ZDo6dmVj
dG9yPHVpbnQzMl90Piogc3NyY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90KiBiaXRyYXRlX2JwcykgY29uc3QgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEYXRhUmF0ZSogYml0cmF0ZSkgY29uc3QgewogICAvLyBDdXJyZW50bHkgYWNj
ZXNzZWQgZnJvbSBib3RoIHRoZSBwcm9jZXNzIHRocmVhZCAoc2VlCiAgIC8vIE1vZHVsZVJ0cFJ0
Y3BJbXBsOjpQcm9jZXNzKCkpIGFuZCB0aGUgY29uZmlndXJhdGlvbiB0aHJlYWQgKHNlZQogICAv
LyBDYWxsOjpHZXRTdGF0cygpKS4gU2hvdWxkIGluIHRoZSBmdXR1cmUgb25seSBiZSBhY2Nlc3Nl
ZCBmcm9tIGEgc2luZ2xlCiAgIC8vIHRocmVhZC4KICAgUlRDX0RDSEVDSyhzc3Jjcyk7Ci0gIFJU
Q19EQ0hFQ0soYml0cmF0ZV9icHMpOworICBSVENfRENIRUNLKGJpdHJhdGUpOwogICBpZiAoIXJh
dGVfY29udHJvbF8uVmFsaWRFc3RpbWF0ZSgpKQogICAgIHJldHVybiBmYWxzZTsKIAogICAqc3Ny
Y3MgPSB7a0ZpeGVkU3NyY307Ci0gICpiaXRyYXRlX2JwcyA9IHJhdGVfY29udHJvbF8uTGF0ZXN0
RXN0aW1hdGUoKTsKKyAgKmJpdHJhdGUgPSByYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7
CiAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIERlbGF5QmFzZWRCd2U6OlNldFN0YXJ0Qml0cmF0
ZShpbnQgc3RhcnRfYml0cmF0ZV9icHMpIHsKLSAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQldFIFNl
dHRpbmcgc3RhcnQgYml0cmF0ZSB0bzogIiA8PCBzdGFydF9iaXRyYXRlX2JwczsKLSAgcmF0ZV9j
b250cm9sXy5TZXRTdGFydEJpdHJhdGUoc3RhcnRfYml0cmF0ZV9icHMpOwordm9pZCBEZWxheUJh
c2VkQndlOjpTZXRTdGFydEJpdHJhdGUoRGF0YVJhdGUgc3RhcnRfYml0cmF0ZSkgeworICBSVENf
TE9HKExTX0lORk8pIDw8ICJCV0UgU2V0dGluZyBzdGFydCBiaXRyYXRlIHRvOiAiCisgICAgICAg
ICAgICAgICAgICAgPDwgVG9TdHJpbmcoc3RhcnRfYml0cmF0ZSk7CisgIHJhdGVfY29udHJvbF8u
U2V0U3RhcnRCaXRyYXRlKHN0YXJ0X2JpdHJhdGUpOwogfQogCi12b2lkIERlbGF5QmFzZWRCd2U6
OlNldE1pbkJpdHJhdGUoaW50IG1pbl9iaXRyYXRlX2Jwcykgewordm9pZCBEZWxheUJhc2VkQndl
OjpTZXRNaW5CaXRyYXRlKERhdGFSYXRlIG1pbl9iaXRyYXRlKSB7CiAgIC8vIENhbGxlZCBmcm9t
IGJvdGggdGhlIGNvbmZpZ3VyYXRpb24gdGhyZWFkIGFuZCB0aGUgbmV0d29yayB0aHJlYWQuIFNo
b3VsZG4ndAogICAvLyBiZSBjYWxsZWQgZnJvbSB0aGUgbmV0d29yayB0aHJlYWQgaW4gdGhlIGZ1
dHVyZS4KLSAgcmF0ZV9jb250cm9sXy5TZXRNaW5CaXRyYXRlKG1pbl9iaXRyYXRlX2Jwcyk7Cisg
IHJhdGVfY29udHJvbF8uU2V0TWluQml0cmF0ZShtaW5fYml0cmF0ZSk7CiB9CiAKLWludDY0X3Qg
RGVsYXlCYXNlZEJ3ZTo6R2V0RXhwZWN0ZWRCd2VQZXJpb2RNcygpIGNvbnN0IHsKLSAgcmV0dXJu
IHJhdGVfY29udHJvbF8uR2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RNcygpOworVGltZURlbHRh
IERlbGF5QmFzZWRCd2U6OkdldEV4cGVjdGVkQndlUGVyaW9kKCkgY29uc3QgeworICByZXR1cm4g
cmF0ZV9jb250cm9sXy5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZCgpOwogfQogfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9i
YXNlZF9id2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlLmgKaW5k
ZXggNDIxNjRiYWFkNGFjNzFjMjBlOTc2ODQzMmMxYWRmZjZkNDRkZGI0Ny4uNjE2YzViMDg5NmJk
ZjJmZTAzNDkwYjc0OGVhMGNlMzQxOWU4ZGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
Z29vZ19jYy9kZWxheV9iYXNlZF9id2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Rl
bGF5X2Jhc2VkX2J3ZS5oCkBAIC0xMSwxNiArMTEsMTggQEAKICNpZm5kZWYgTU9EVUxFU19DT05H
RVNUSU9OX0NPTlRST0xMRVJfR09PR19DQ19ERUxBWV9CQVNFRF9CV0VfSF8KICNkZWZpbmUgTU9E
VUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfR09PR19DQ19ERUxBWV9CQVNFRF9CV0VfSF8KIAor
I2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KLSNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFi
c2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL2RlbGF5X2luY3JlYXNlX2RldGVjdG9yX2ludGVyZmFjZS5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVfYml0cmF0ZV9l
c3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9h
aW1kX3JhdGVfY29udHJvbC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0
aW1hdG9yL2luY2x1ZGUvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2ludGVyX2Fycml2YWwuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIiAgLy8gRm9yIFBhY2tldEZlZWRiYWNrCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Jh
Y2VfY2hlY2tlci5oIgogCkBAIC0zMSwxMSArMzMsMTEgQEAgY2xhc3MgRGVsYXlCYXNlZEJ3ZSB7
CiAgcHVibGljOgogICBzdHJ1Y3QgUmVzdWx0IHsKICAgICBSZXN1bHQoKTsKLSAgICBSZXN1bHQo
Ym9vbCBwcm9iZSwgdWludDMyX3QgdGFyZ2V0X2JpdHJhdGVfYnBzKTsKKyAgICBSZXN1bHQoYm9v
bCBwcm9iZSwgRGF0YVJhdGUgdGFyZ2V0X2JpdHJhdGUpOwogICAgIH5SZXN1bHQoKTsKICAgICBi
b29sIHVwZGF0ZWQ7CiAgICAgYm9vbCBwcm9iZTsKLSAgICB1aW50MzJfdCB0YXJnZXRfYml0cmF0
ZV9icHM7CisgICAgRGF0YVJhdGUgdGFyZ2V0X2JpdHJhdGUgPSBEYXRhUmF0ZTo6WmVybygpOwog
ICAgIGJvb2wgcmVjb3ZlcmVkX2Zyb21fb3ZlcnVzZTsKICAgfTsKIApAQCAtNDQsNDIgKzQ2LDQz
IEBAIGNsYXNzIERlbGF5QmFzZWRCd2UgewogCiAgIFJlc3VsdCBJbmNvbWluZ1BhY2tldEZlZWRi
YWNrVmVjdG9yKAogICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+JiBwYWNr
ZXRfZmVlZGJhY2tfdmVjdG9yLAotICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGFja2Vk
X2JpdHJhdGVfYnBzLAotICAgICAgaW50NjRfdCBhdF90aW1lX21zKTsKLSAgdm9pZCBPblJ0dFVw
ZGF0ZShpbnQ2NF90IGF2Z19ydHRfbXMpOwotICBib29sIExhdGVzdEVzdGltYXRlKHN0ZDo6dmVj
dG9yPHVpbnQzMl90Piogc3NyY3MsCi0gICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QqIGJp
dHJhdGVfYnBzKSBjb25zdDsKLSAgdm9pZCBTZXRTdGFydEJpdHJhdGUoaW50IHN0YXJ0X2JpdHJh
dGVfYnBzKTsKLSAgdm9pZCBTZXRNaW5CaXRyYXRlKGludCBtaW5fYml0cmF0ZV9icHMpOwotICBp
bnQ2NF90IEdldEV4cGVjdGVkQndlUGVyaW9kTXMoKSBjb25zdDsKKyAgICAgIGFic2w6Om9wdGlv
bmFsPERhdGFSYXRlPiBhY2tlZF9iaXRyYXRlLAorICAgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJh
dGU+IHByb2JlX2JpdHJhdGUsCisgICAgICBUaW1lc3RhbXAgYXRfdGltZSk7CisgIFJlc3VsdCBP
bkRlbGF5ZWRGZWVkYmFjayhUaW1lc3RhbXAgcmVjZWl2ZV90aW1lKTsKKyAgdm9pZCBPblJ0dFVw
ZGF0ZShUaW1lRGVsdGEgYXZnX3J0dCk7CisgIGJvb2wgTGF0ZXN0RXN0aW1hdGUoc3RkOjp2ZWN0
b3I8dWludDMyX3Q+KiBzc3JjcywgRGF0YVJhdGUqIGJpdHJhdGUpIGNvbnN0OworICB2b2lkIFNl
dFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZSBzdGFydF9iaXRyYXRlKTsKKyAgdm9pZCBTZXRNaW5CaXRy
YXRlKERhdGFSYXRlIG1pbl9iaXRyYXRlKTsKKyAgVGltZURlbHRhIEdldEV4cGVjdGVkQndlUGVy
aW9kKCkgY29uc3Q7CiAKICBwcml2YXRlOgogICBmcmllbmQgY2xhc3MgR29vZ0NjU3RhdGVQcmlu
dGVyOwogICB2b2lkIEluY29taW5nUGFja2V0RmVlZGJhY2soY29uc3QgUGFja2V0RmVlZGJhY2sm
IHBhY2tldF9mZWVkYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qg
YXRfdGltZV9tcyk7Ci0gIFJlc3VsdCBPbkxvbmdGZWVkYmFja0RlbGF5KGludDY0X3QgYXJyaXZh
bF90aW1lX21zKTsKLSAgUmVzdWx0IE1heWJlVXBkYXRlRXN0aW1hdGUoYWJzbDo6b3B0aW9uYWw8
dWludDMyX3Q+IGFja2VkX2JpdHJhdGVfYnBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGltZXN0YW1wIGF0X3RpbWUpOworICBSZXN1bHQgT25Mb25nRmVlZGJhY2tEZWxheShUaW1l
c3RhbXAgYXJyaXZhbF90aW1lKTsKKyAgUmVzdWx0IE1heWJlVXBkYXRlRXN0aW1hdGUoYWJzbDo6
b3B0aW9uYWw8RGF0YVJhdGU+IGFja2VkX2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBwcm9iZV9iaXRyYXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHJlcXVlc3RfcHJvYmUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3QgYXRfdGltZV9tcyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsKICAgLy8gVXBkYXRlcyB0aGUgY3VycmVudCByZW1v
dGUgcmF0ZSBlc3RpbWF0ZSBhbmQgcmV0dXJucyB0cnVlIGlmIGEgdmFsaWQKICAgLy8gZXN0aW1h
dGUgZXhpc3RzLgotICBib29sIFVwZGF0ZUVzdGltYXRlKGludDY0X3Qgbm93X21zLAotICAgICAg
ICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBhY2tlZF9iaXRyYXRlX2Jw
cywKLSAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCogdGFyZ2V0X2JpdHJhdGVfYnBzKTsK
KyAgYm9vbCBVcGRhdGVFc3RpbWF0ZShUaW1lc3RhbXAgbm93LAorICAgICAgICAgICAgICAgICAg
ICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBhY2tlZF9iaXRyYXRlLAorICAgICAgICAgICAg
ICAgICAgICAgIERhdGFSYXRlKiB0YXJnZXRfYml0cmF0ZSk7CiAKICAgcnRjOjpSYWNlQ2hlY2tl
ciBuZXR3b3JrX3JhY2VfOwogICBSdGNFdmVudExvZyogY29uc3QgZXZlbnRfbG9nXzsKICAgc3Rk
Ojp1bmlxdWVfcHRyPEludGVyQXJyaXZhbD4gaW50ZXJfYXJyaXZhbF87CiAgIHN0ZDo6dW5pcXVl
X3B0cjxEZWxheUluY3JlYXNlRGV0ZWN0b3JJbnRlcmZhY2U+IGRlbGF5X2RldGVjdG9yXzsKLSAg
aW50NjRfdCBsYXN0X3NlZW5fcGFja2V0X21zXzsKKyAgVGltZXN0YW1wIGxhc3Rfc2Vlbl9wYWNr
ZXRfOwogICBib29sIHVtYV9yZWNvcmRlZF87CiAgIEFpbWRSYXRlQ29udHJvbCByYXRlX2NvbnRy
b2xfOwotICBQcm9iZUJpdHJhdGVFc3RpbWF0b3IgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfOwog
ICBzaXplX3QgdHJlbmRsaW5lX3dpbmRvd19zaXplXzsKICAgZG91YmxlIHRyZW5kbGluZV9zbW9v
dGhpbmdfY29lZmZfOwogICBkb3VibGUgdHJlbmRsaW5lX3RocmVzaG9sZF9nYWluXzsKICAgaW50
IGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXzsKLSAgdWludDMyX3QgcHJldl9iaXRyYXRl
XzsKKyAgRGF0YVJhdGUgcHJldl9iaXRyYXRlXzsKICAgQmFuZHdpZHRoVXNhZ2UgcHJldl9zdGF0
ZV87CiAKICAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhEZWxheUJhc2VkQndl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2VfdW5pdHRl
c3QuY2MKaW5kZXggYjJhZGQzZTZlOTRhOGY1MDI3ODAwNzZiYzM3N2M5MjY3N2YxMjNjNi4uN2Rl
MTFiMTY4NDBmMDBhZmFkOGU3MGFmZDU5ZjczMmU0MDc5YjIzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2VfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2VfdW5pdHRlc3QuY2MKQEAgLTI1LDEzICsy
NSwxMyBAQCBjb25zdGV4cHIgaW50IGtOdW1Qcm9iZXNDbHVzdGVyMSA9IDg7CiBjb25zdCBQYWNl
ZFBhY2tldEluZm8ga1BhY2luZ0luZm8wKDAsIGtOdW1Qcm9iZXNDbHVzdGVyMCwgMjAwMCk7CiBj
b25zdCBQYWNlZFBhY2tldEluZm8ga1BhY2luZ0luZm8xKDEsIGtOdW1Qcm9iZXNDbHVzdGVyMSwg
NDAwMCk7CiBjb25zdGV4cHIgZmxvYXQga1RhcmdldFV0aWxpemF0aW9uRnJhY3Rpb24gPSAwLjk1
ZjsKLWNvbnN0ZXhwciBpbnQ2NF90IGtEdW1teVRpbWVzdGFtcCA9IDEwMDA7Citjb25zdGV4cHIg
VGltZXN0YW1wIGtEdW1teVRpbWVzdGFtcCA9IFRpbWVzdGFtcDo6U2Vjb25kczwxMDAwPigpOwog
fSAgLy8gbmFtZXNwYWNlCiAKIFRFU1RfRihEZWxheUJhc2VkQndlVGVzdCwgTm9DcmFzaEVtcHR5
RmVlZGJhY2spIHsKICAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IHBhY2tldF9mZWVkYmFj
a192ZWN0b3I7CiAgIGJpdHJhdGVfZXN0aW1hdG9yXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFja1Zl
Y3RvcigKLSAgICAgIHBhY2tldF9mZWVkYmFja192ZWN0b3IsIGFic2w6Om51bGxvcHQsIGtEdW1t
eVRpbWVzdGFtcCk7CisgICAgICBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLCBhYnNsOjpudWxsb3B0
LCBhYnNsOjpudWxsb3B0LCBrRHVtbXlUaW1lc3RhbXApOwogfQogCiBURVNUX0YoRGVsYXlCYXNl
ZEJ3ZVRlc3QsIE5vQ3Jhc2hPbmx5TG9zdEZlZWRiYWNrKSB7CkBAIC00Myw3ICs0Myw3IEBAIFRF
U1RfRihEZWxheUJhc2VkQndlVGVzdCwgTm9DcmFzaE9ubHlMb3N0RmVlZGJhY2spIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0RmVlZGJh
Y2s6OmtOb1NlbmRUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxLCAxNTAwLCBQYWNlZFBhY2tldEluZm8oKSkpOwogICBiaXRyYXRlX2VzdGlt
YXRvcl8tPkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoCi0gICAgICBwYWNrZXRfZmVlZGJh
Y2tfdmVjdG9yLCBhYnNsOjpudWxsb3B0LCBrRHVtbXlUaW1lc3RhbXApOworICAgICAgcGFja2V0
X2ZlZWRiYWNrX3ZlY3RvciwgYWJzbDo6bnVsbG9wdCwgYWJzbDo6bnVsbG9wdCwga0R1bW15VGlt
ZXN0YW1wKTsKIH0KIAogVEVTVF9GKERlbGF5QmFzZWRCd2VUZXN0LCBQcm9iZURldGVjdGlvbikg
ewpAQCAtMTQ0LDEyICsxNDQsMTIgQEAgVEVTVF9GKERlbGF5QmFzZWRCd2VUZXN0LCBQcm9iZURl
dGVjdGlvblNsb3dlckFycml2YWxIaWdoQml0cmF0ZSkgewogfQogCiBURVNUX0YoRGVsYXlCYXNl
ZEJ3ZVRlc3QsIEdldEV4cGVjdGVkQndlUGVyaW9kTXMpIHsKLSAgaW50NjRfdCBkZWZhdWx0X2lu
dGVydmFsX21zID0gYml0cmF0ZV9lc3RpbWF0b3JfLT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZE1zKCk7
Ci0gIEVYUEVDVF9HVChkZWZhdWx0X2ludGVydmFsX21zLCAwKTsKKyAgYXV0byBkZWZhdWx0X2lu
dGVydmFsID0gYml0cmF0ZV9lc3RpbWF0b3JfLT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZCgpOworICBF
WFBFQ1RfR1QoZGVmYXVsdF9pbnRlcnZhbC5tcygpLCAwKTsKICAgQ2FwYWNpdHlEcm9wVGVzdEhl
bHBlcigxLCB0cnVlLCAzMzMsIDApOwotICBpbnQ2NF90IGludGVydmFsX21zID0gYml0cmF0ZV9l
c3RpbWF0b3JfLT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZE1zKCk7Ci0gIEVYUEVDVF9HVChpbnRlcnZh
bF9tcywgMCk7Ci0gIEVYUEVDVF9ORShpbnRlcnZhbF9tcywgZGVmYXVsdF9pbnRlcnZhbF9tcyk7
CisgIGF1dG8gaW50ZXJ2YWwgPSBiaXRyYXRlX2VzdGltYXRvcl8tPkdldEV4cGVjdGVkQndlUGVy
aW9kKCk7CisgIEVYUEVDVF9HVChpbnRlcnZhbC5tcygpLCAwKTsKKyAgRVhQRUNUX05FKGludGVy
dmFsLm1zKCksIGRlZmF1bHRfaW50ZXJ2YWwubXMoKSk7CiB9CiAKIFRFU1RfRihEZWxheUJhc2Vk
QndlVGVzdCwgSW5pdGlhbEJlaGF2aW9yKSB7CkBAIC0xOTksMjAgKzE5OSwyMCBAQCBURVNUX0Yo
RGVsYXlCYXNlZEJ3ZVRlc3QsIFRlc3RMb25nVGltZW91dEFuZFdyYXApIHsKIH0KIAogVEVTVF9G
KERlbGF5QmFzZWRCd2VUZXN0LCBUZXN0SW5pdGlhbE92ZXJ1c2UpIHsKLSAgY29uc3QgdWludDMy
X3Qga1N0YXJ0Qml0cmF0ZSA9IDMwMGUzOwotICBjb25zdCB1aW50MzJfdCBrSW5pdGlhbENhcGFj
aXR5QnBzID0gMjAwZTM7CisgIGNvbnN0IERhdGFSYXRlIGtTdGFydEJpdHJhdGUgPSBEYXRhUmF0
ZTo6a2JwcygzMDApOworICBjb25zdCBEYXRhUmF0ZSBrSW5pdGlhbENhcGFjaXR5ID0gRGF0YVJh
dGU6OmticHMoMjAwKTsKICAgY29uc3QgdWludDMyX3Qga0R1bW15U3NyYyA9IDA7CiAgIC8vIEhp
Z2ggRlBTIHRvIGVuc3VyZSB0aGF0IHdlIHNlbmQgYSBsb3Qgb2YgcGFja2V0cyBpbiBhIHNob3J0
IHRpbWUuCiAgIGNvbnN0IGludCBrRnBzID0gOTA7CiAKLSAgc3RyZWFtX2dlbmVyYXRvcl8tPkFk
ZFN0cmVhbShuZXcgdGVzdDo6UnRwU3RyZWFtKGtGcHMsIGtTdGFydEJpdHJhdGUpKTsKLSAgc3Ry
ZWFtX2dlbmVyYXRvcl8tPnNldF9jYXBhY2l0eV9icHMoa0luaXRpYWxDYXBhY2l0eUJwcyk7Cisg
IHN0cmVhbV9nZW5lcmF0b3JfLT5BZGRTdHJlYW0obmV3IHRlc3Q6OlJ0cFN0cmVhbShrRnBzLCBr
U3RhcnRCaXRyYXRlLmJwcygpKSk7CisgIHN0cmVhbV9nZW5lcmF0b3JfLT5zZXRfY2FwYWNpdHlf
YnBzKGtJbml0aWFsQ2FwYWNpdHkuYnBzKCkpOwogCiAgIC8vIE5lZWRlZCB0byBpbml0aWFsaXpl
IHRoZSBBaW1kUmF0ZUNvbnRyb2wuCiAgIGJpdHJhdGVfZXN0aW1hdG9yXy0+U2V0U3RhcnRCaXRy
YXRlKGtTdGFydEJpdHJhdGUpOwogCiAgIC8vIFByb2R1Y2UgMzAgZnJhbWVzIChpbiAxLzMgc2Vj
b25kKSBhbmQgZ2l2ZSB0aGVtIHRvIHRoZSBlc3RpbWF0b3IuCi0gIHVpbnQzMl90IGJpdHJhdGVf
YnBzID0ga1N0YXJ0Qml0cmF0ZTsKKyAgaW50NjRfdCBiaXRyYXRlX2JwcyA9IGtTdGFydEJpdHJh
dGUuYnBzKCk7CiAgIGJvb2wgc2Vlbl9vdmVydXNlID0gZmFsc2U7CiAgIGZvciAoaW50IGkgPSAw
OyBpIDwgMzA7ICsraSkgewogICAgIGJvb2wgb3ZlcnVzZSA9IEdlbmVyYXRlQW5kUHJvY2Vzc0Zy
YW1lKGtEdW1teVNzcmMsIGJpdHJhdGVfYnBzKTsKQEAgLTIyMiw3ICsyMjIsOCBAQCBURVNUX0Yo
RGVsYXlCYXNlZEJ3ZVRlc3QsIFRlc3RJbml0aWFsT3ZlcnVzZSkgewogICAgIEVYUEVDVF9GQUxT
RShhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRyYXRlX2JwcygpLmhhc192YWx1
ZSgpKTsKICAgICBpZiAob3ZlcnVzZSkgewogICAgICAgRVhQRUNUX1RSVUUoYml0cmF0ZV9vYnNl
cnZlcl8udXBkYXRlZCgpKTsKLSAgICAgIEVYUEVDVF9ORUFSKGJpdHJhdGVfb2JzZXJ2ZXJfLmxh
dGVzdF9iaXRyYXRlKCksIGtTdGFydEJpdHJhdGUgLyAyLCAxNTAwMCk7CisgICAgICBFWFBFQ1Rf
TkVBUihiaXRyYXRlX29ic2VydmVyXy5sYXRlc3RfYml0cmF0ZSgpLCBrU3RhcnRCaXRyYXRlLmJw
cygpIC8gMiwKKyAgICAgICAgICAgICAgICAgIDE1MDAwKTsKICAgICAgIGJpdHJhdGVfYnBzID0g
Yml0cmF0ZV9vYnNlcnZlcl8ubGF0ZXN0X2JpdHJhdGUoKTsKICAgICAgIHNlZW5fb3ZlcnVzZSA9
IHRydWU7CiAgICAgICBicmVhazsKQEAgLTIzMiw3ICsyMzMsOCBAQCBURVNUX0YoRGVsYXlCYXNl
ZEJ3ZVRlc3QsIFRlc3RJbml0aWFsT3ZlcnVzZSkgewogICAgIH0KICAgfQogICBFWFBFQ1RfVFJV
RShzZWVuX292ZXJ1c2UpOwotICBFWFBFQ1RfTkVBUihiaXRyYXRlX29ic2VydmVyXy5sYXRlc3Rf
Yml0cmF0ZSgpLCBrU3RhcnRCaXRyYXRlIC8gMiwgMTUwMDApOworICBFWFBFQ1RfTkVBUihiaXRy
YXRlX29ic2VydmVyXy5sYXRlc3RfYml0cmF0ZSgpLCBrU3RhcnRCaXRyYXRlLmJwcygpIC8gMiwK
KyAgICAgICAgICAgICAgMTUwMDApOwogfQogCiBjbGFzcyBEZWxheUJhc2VkQndlVGVzdFdpdGhC
YWNrb2ZmVGltZW91dEV4cGVyaW1lbnQgOiBwdWJsaWMgRGVsYXlCYXNlZEJ3ZVRlc3QgewpAQCAt
MjQzLDIwICsyNDUsMjAgQEAgY2xhc3MgRGVsYXlCYXNlZEJ3ZVRlc3RXaXRoQmFja29mZlRpbWVv
dXRFeHBlcmltZW50IDogcHVibGljIERlbGF5QmFzZWRCd2VUZXN0IHsKIAogLy8gVGhpcyB0ZXN0
IHN1YnN1bWVzIGFuZCBpbXByb3ZlcyBEZWxheUJhc2VkQndlVGVzdC5UZXN0SW5pdGlhbE92ZXJ1
c2UgYWJvdmUuCiBURVNUX0YoRGVsYXlCYXNlZEJ3ZVRlc3RXaXRoQmFja29mZlRpbWVvdXRFeHBl
cmltZW50LCBUZXN0SW5pdGlhbE92ZXJ1c2UpIHsKLSAgY29uc3QgdWludDMyX3Qga1N0YXJ0Qml0
cmF0ZSA9IDMwMGUzOwotICBjb25zdCB1aW50MzJfdCBrSW5pdGlhbENhcGFjaXR5QnBzID0gMjAw
ZTM7CisgIGNvbnN0IERhdGFSYXRlIGtTdGFydEJpdHJhdGUgPSBEYXRhUmF0ZTo6a2JwcygzMDAp
OworICBjb25zdCBEYXRhUmF0ZSBrSW5pdGlhbENhcGFjaXR5ID0gRGF0YVJhdGU6OmticHMoMjAw
KTsKICAgY29uc3QgdWludDMyX3Qga0R1bW15U3NyYyA9IDA7CiAgIC8vIEhpZ2ggRlBTIHRvIGVu
c3VyZSB0aGF0IHdlIHNlbmQgYSBsb3Qgb2YgcGFja2V0cyBpbiBhIHNob3J0IHRpbWUuCiAgIGNv
bnN0IGludCBrRnBzID0gOTA7CiAKLSAgc3RyZWFtX2dlbmVyYXRvcl8tPkFkZFN0cmVhbShuZXcg
dGVzdDo6UnRwU3RyZWFtKGtGcHMsIGtTdGFydEJpdHJhdGUpKTsKLSAgc3RyZWFtX2dlbmVyYXRv
cl8tPnNldF9jYXBhY2l0eV9icHMoa0luaXRpYWxDYXBhY2l0eUJwcyk7CisgIHN0cmVhbV9nZW5l
cmF0b3JfLT5BZGRTdHJlYW0obmV3IHRlc3Q6OlJ0cFN0cmVhbShrRnBzLCBrU3RhcnRCaXRyYXRl
LmJwcygpKSk7CisgIHN0cmVhbV9nZW5lcmF0b3JfLT5zZXRfY2FwYWNpdHlfYnBzKGtJbml0aWFs
Q2FwYWNpdHkuYnBzKCkpOwogCiAgIC8vIE5lZWRlZCB0byBpbml0aWFsaXplIHRoZSBBaW1kUmF0
ZUNvbnRyb2wuCiAgIGJpdHJhdGVfZXN0aW1hdG9yXy0+U2V0U3RhcnRCaXRyYXRlKGtTdGFydEJp
dHJhdGUpOwogCiAgIC8vIFByb2R1Y2UgMzAgZnJhbWVzIChpbiAxLzMgc2Vjb25kKSBhbmQgZ2l2
ZSB0aGVtIHRvIHRoZSBlc3RpbWF0b3IuCi0gIHVpbnQzMl90IGJpdHJhdGVfYnBzID0ga1N0YXJ0
Qml0cmF0ZTsKKyAgaW50NjRfdCBiaXRyYXRlX2JwcyA9IGtTdGFydEJpdHJhdGUuYnBzKCk7CiAg
IGJvb2wgc2Vlbl9vdmVydXNlID0gZmFsc2U7CiAgIGZvciAoaW50IGZyYW1lcyA9IDA7IGZyYW1l
cyA8IDMwICYmICFzZWVuX292ZXJ1c2U7ICsrZnJhbWVzKSB7CiAgICAgYm9vbCBvdmVydXNlID0g
R2VuZXJhdGVBbmRQcm9jZXNzRnJhbWUoa0R1bW15U3NyYywgYml0cmF0ZV9icHMpOwpAQCAtMjY2
LDcgKzI2OCw4IEBAIFRFU1RfRihEZWxheUJhc2VkQndlVGVzdFdpdGhCYWNrb2ZmVGltZW91dEV4
cGVyaW1lbnQsIFRlc3RJbml0aWFsT3ZlcnVzZSkgewogICAgIEVYUEVDVF9GQUxTRShhY2tub3ds
ZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRyYXRlX2JwcygpLmhhc192YWx1ZSgpKTsKICAg
ICBpZiAob3ZlcnVzZSkgewogICAgICAgRVhQRUNUX1RSVUUoYml0cmF0ZV9vYnNlcnZlcl8udXBk
YXRlZCgpKTsKLSAgICAgIEVYUEVDVF9ORUFSKGJpdHJhdGVfb2JzZXJ2ZXJfLmxhdGVzdF9iaXRy
YXRlKCksIGtTdGFydEJpdHJhdGUgLyAyLCAxNTAwMCk7CisgICAgICBFWFBFQ1RfTkVBUihiaXRy
YXRlX29ic2VydmVyXy5sYXRlc3RfYml0cmF0ZSgpLCBrU3RhcnRCaXRyYXRlLmJwcygpIC8gMiwK
KyAgICAgICAgICAgICAgICAgIDE1MDAwKTsKICAgICAgIGJpdHJhdGVfYnBzID0gYml0cmF0ZV9v
YnNlcnZlcl8ubGF0ZXN0X2JpdHJhdGUoKTsKICAgICAgIHNlZW5fb3ZlcnVzZSA9IHRydWU7CiAg
ICAgfSBlbHNlIGlmIChiaXRyYXRlX29ic2VydmVyXy51cGRhdGVkKCkpIHsKQEAgLTI4Miw4ICsy
ODUsOCBAQCBURVNUX0YoRGVsYXlCYXNlZEJ3ZVRlc3RXaXRoQmFja29mZlRpbWVvdXRFeHBlcmlt
ZW50LCBUZXN0SW5pdGlhbE92ZXJ1c2UpIHsKICAgICBFWFBFQ1RfRkFMU0Uob3ZlcnVzZSk7CiAg
ICAgaWYgKGJpdHJhdGVfb2JzZXJ2ZXJfLnVwZGF0ZWQoKSkgewogICAgICAgYml0cmF0ZV9icHMg
PSBiaXRyYXRlX29ic2VydmVyXy5sYXRlc3RfYml0cmF0ZSgpOwotICAgICAgRVhQRUNUX0dFKGJp
dHJhdGVfYnBzLCBrU3RhcnRCaXRyYXRlIC8gMiAtIDE1MDAwKTsKLSAgICAgIEVYUEVDVF9MRShi
aXRyYXRlX2Jwcywga0luaXRpYWxDYXBhY2l0eUJwcyArIDE1MDAwKTsKKyAgICAgIEVYUEVDVF9H
RShiaXRyYXRlX2Jwcywga1N0YXJ0Qml0cmF0ZS5icHMoKSAvIDIgLSAxNTAwMCk7CisgICAgICBF
WFBFQ1RfTEUoYml0cmF0ZV9icHMsIGtJbml0aWFsQ2FwYWNpdHkuYnBzKCkgKyAxNTAwMCk7CiAg
ICAgICBiaXRyYXRlX29ic2VydmVyXy5SZXNldCgpOwogICAgIH0KICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVy
LmNjCmluZGV4IDJhMDA4MDFlYjFjNmNkNjg2NDMyNDc5YTcyOTg3YzRlYmEzNTE4MTIuLjQ3Mjg4
ZTVmYmM2NGZjYWQzYTkyNGEyMjc2OTk0Y2Y2MDQwMDUwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlX3VuaXR0ZXN0X2hlbHBlci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdF9oZWxwZXIuY2MK
QEAgLTE1NCw2ICsxNTQsNyBAQCBEZWxheUJhc2VkQndlVGVzdDo6RGVsYXlCYXNlZEJ3ZVRlc3Qo
KQogICAgICAgY2xvY2tfKDEwMDAwMDAwMCksCiAgICAgICBhY2tub3dsZWRnZWRfYml0cmF0ZV9l
c3RpbWF0b3JfKAogICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEFja25vd2xlZGdlZEJpdHJh
dGVFc3RpbWF0b3I+KCkpLAorICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfKG5ldyBQcm9i
ZUJpdHJhdGVFc3RpbWF0b3IobnVsbHB0cikpLAogICAgICAgYml0cmF0ZV9lc3RpbWF0b3JfKG5l
dyBEZWxheUJhc2VkQndlKG51bGxwdHIpKSwKICAgICAgIHN0cmVhbV9nZW5lcmF0b3JfKG5ldyB0
ZXN0OjpTdHJlYW1HZW5lcmF0b3IoMWU2LCAgLy8gQ2FwYWNpdHkuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrXy5UaW1lSW5NaWNyb3NlY29u
ZHMoKSkpLApAQCAtMTY2LDYgKzE2Nyw3IEBAIERlbGF5QmFzZWRCd2VUZXN0OjpEZWxheUJhc2Vk
QndlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgZmllbGRfdHJpYWxfc3RyaW5nKQogICAgICAgY2xv
Y2tfKDEwMDAwMDAwMCksCiAgICAgICBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfKAog
ICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I+
KCkpLAorICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfKG5ldyBQcm9iZUJpdHJhdGVFc3Rp
bWF0b3IobnVsbHB0cikpLAogICAgICAgYml0cmF0ZV9lc3RpbWF0b3JfKG5ldyBEZWxheUJhc2Vk
QndlKG51bGxwdHIpKSwKICAgICAgIHN0cmVhbV9nZW5lcmF0b3JfKG5ldyB0ZXN0OjpTdHJlYW1H
ZW5lcmF0b3IoMWU2LCAgLy8gQ2FwYWNpdHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsb2NrXy5UaW1lSW5NaWNyb3NlY29uZHMoKSkpLApAQCAt
MTk4LDE1ICsyMDAsMjAgQEAgdm9pZCBEZWxheUJhc2VkQndlVGVzdDo6SW5jb21pbmdGZWVkYmFj
ayhpbnQ2NF90IGFycml2YWxfdGltZV9tcywKICAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVl
bmNlX251bWJlciwgcGF5bG9hZF9zaXplLCBwYWNpbmdfaW5mbyk7CiAgIHN0ZDo6dmVjdG9yPFBh
Y2tldEZlZWRiYWNrPiBwYWNrZXRzOwogICBwYWNrZXRzLnB1c2hfYmFjayhwYWNrZXQpOworICBp
ZiAocGFja2V0LnNlbmRfdGltZV9tcyAhPSBQYWNrZXRGZWVkYmFjazo6a05vU2VuZFRpbWUgJiYK
KyAgICAgIHBhY2tldC5wYWNpbmdfaW5mby5wcm9iZV9jbHVzdGVyX2lkICE9IFBhY2VkUGFja2V0
SW5mbzo6a05vdEFQcm9iZSkKKyAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8tPkhhbmRsZVBy
b2JlQW5kRXN0aW1hdGVCaXRyYXRlKHBhY2tldCk7CisKICAgYWNrbm93bGVkZ2VkX2JpdHJhdGVf
ZXN0aW1hdG9yXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcihwYWNrZXRzKTsKICAgRGVs
YXlCYXNlZEJ3ZTo6UmVzdWx0IHJlc3VsdCA9CiAgICAgICBiaXRyYXRlX2VzdGltYXRvcl8tPklu
Y29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoCi0gICAgICAgICAgcGFja2V0cywgYWNrbm93bGVk
Z2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+Yml0cmF0ZV9icHMoKSwKLSAgICAgICAgICBjbG9ja18u
VGltZUluTWlsbGlzZWNvbmRzKCkpOworICAgICAgICAgIHBhY2tldHMsIGFja25vd2xlZGdlZF9i
aXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGUoKSwKKyAgICAgICAgICBwcm9iZV9iaXRyYXRlX2Vz
dGltYXRvcl8tPkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZSgpLAorICAgICAgICAg
IFRpbWVzdGFtcDo6bXMoY2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpKSk7CiAgIGNvbnN0IHVp
bnQzMl90IGtEdW1teVNzcmMgPSAwOwogICBpZiAocmVzdWx0LnVwZGF0ZWQpIHsKICAgICBiaXRy
YXRlX29ic2VydmVyXy5PblJlY2VpdmVCaXRyYXRlQ2hhbmdlZCh7a0R1bW15U3NyY30sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnRhcmdldF9i
aXRyYXRlX2Jwcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlLmJwcygpKTsKICAgfQogfQogCkBAIC0yMzIsMTggKzIz
OSwyMyBAQCBib29sIERlbGF5QmFzZWRCd2VUZXN0OjpHZW5lcmF0ZUFuZFByb2Nlc3NGcmFtZSh1
aW50MzJfdCBzc3JjLAogICBmb3IgKGF1dG8mIHBhY2tldCA6IHBhY2tldHMpIHsKICAgICBSVENf
Q0hFQ0tfR0UocGFja2V0LmFycml2YWxfdGltZV9tcyArIGFycml2YWxfdGltZV9vZmZzZXRfbXNf
LCAwKTsKICAgICBwYWNrZXQuYXJyaXZhbF90aW1lX21zICs9IGFycml2YWxfdGltZV9vZmZzZXRf
bXNfOworCisgICAgaWYgKHBhY2tldC5zZW5kX3RpbWVfbXMgIT0gUGFja2V0RmVlZGJhY2s6OmtO
b1NlbmRUaW1lICYmCisgICAgICAgIHBhY2tldC5wYWNpbmdfaW5mby5wcm9iZV9jbHVzdGVyX2lk
ICE9IFBhY2VkUGFja2V0SW5mbzo6a05vdEFQcm9iZSkKKyAgICAgIHByb2JlX2JpdHJhdGVfZXN0
aW1hdG9yXy0+SGFuZGxlUHJvYmVBbmRFc3RpbWF0ZUJpdHJhdGUocGFja2V0KTsKICAgfQogCiAg
IGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPkluY29taW5nUGFja2V0RmVlZGJhY2tW
ZWN0b3IocGFja2V0cyk7CiAgIERlbGF5QmFzZWRCd2U6OlJlc3VsdCByZXN1bHQgPQogICAgICAg
Yml0cmF0ZV9lc3RpbWF0b3JfLT5JbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAotICAgICAg
ICAgIHBhY2tldHMsIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGVfYnBz
KCksCi0gICAgICAgICAgY2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgICAgICAgICBw
YWNrZXRzLCBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRyYXRlKCksCisgICAg
ICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfLT5GZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRl
ZEJpdHJhdGUoKSwKKyAgICAgICAgICBUaW1lc3RhbXA6Om1zKGNsb2NrXy5UaW1lSW5NaWxsaXNl
Y29uZHMoKSkpOwogICBjb25zdCB1aW50MzJfdCBrRHVtbXlTc3JjID0gMDsKICAgaWYgKHJlc3Vs
dC51cGRhdGVkKSB7CiAgICAgYml0cmF0ZV9vYnNlcnZlcl8uT25SZWNlaXZlQml0cmF0ZUNoYW5n
ZWQoe2tEdW1teVNzcmN9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC50YXJnZXRfYml0cmF0ZV9icHMpOwotICAgIGlmICghZmlyc3RfdXBkYXRl
XyAmJiByZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBzIDwgYml0cmF0ZV9icHMpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRl
LmJwcygpKTsKKyAgICBpZiAoIWZpcnN0X3VwZGF0ZV8gJiYgcmVzdWx0LnRhcmdldF9iaXRyYXRl
LmJwcygpIDwgYml0cmF0ZV9icHMpCiAgICAgICBvdmVydXNlID0gdHJ1ZTsKICAgICBmaXJzdF91
cGRhdGVfID0gZmFsc2U7CiAgIH0KQEAgLTI4OSwxNCArMzAxLDE0IEBAIHZvaWQgRGVsYXlCYXNl
ZEJ3ZVRlc3Q6OkluaXRpYWxCZWhhdmlvclRlc3RIZWxwZXIoCiAgIGNvbnN0IGludCBrRnJhbWVy
YXRlID0gNTA7ICAvLyA1MCBmcHMgdG8gYXZvaWQgcm91bmRpbmcgZXJyb3JzLgogICBjb25zdCBp
bnQga0ZyYW1lSW50ZXJ2YWxNcyA9IDEwMDAgLyBrRnJhbWVyYXRlOwogICBjb25zdCBQYWNlZFBh
Y2tldEluZm8ga1BhY2luZ0luZm8oMCwgNSwgNTAwMCk7Ci0gIHVpbnQzMl90IGJpdHJhdGVfYnBz
ID0gMDsKKyAgRGF0YVJhdGUgYml0cmF0ZSA9IERhdGFSYXRlOjpaZXJvKCk7CiAgIGludDY0X3Qg
c2VuZF90aW1lX21zID0gMDsKICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyID0gMDsKICAgc3Rk
Ojp2ZWN0b3I8dWludDMyX3Q+IHNzcmNzOwotICBFWFBFQ1RfRkFMU0UoYml0cmF0ZV9lc3RpbWF0
b3JfLT5MYXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlX2JwcykpOworICBFWFBFQ1RfRkFM
U0UoYml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlKSk7
CiAgIEVYUEVDVF9FUSgwdSwgc3NyY3Muc2l6ZSgpKTsKICAgY2xvY2tfLkFkdmFuY2VUaW1lTWls
bGlzZWNvbmRzKDEwMDApOwotICBFWFBFQ1RfRkFMU0UoYml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRl
c3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlX2JwcykpOworICBFWFBFQ1RfRkFMU0UoYml0cmF0
ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlKSk7CiAgIEVYUEVD
VF9GQUxTRShiaXRyYXRlX29ic2VydmVyXy51cGRhdGVkKCkpOwogICBiaXRyYXRlX29ic2VydmVy
Xy5SZXNldCgpOwogICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwMCk7CkBAIC0z
MDgsNyArMzIwLDcgQEAgdm9pZCBEZWxheUJhc2VkQndlVGVzdDo6SW5pdGlhbEJlaGF2aW9yVGVz
dEhlbHBlcigKICAgICAgICAgaSA8IGtJbml0aWFsUHJvYmluZ1BhY2tldHMgPyBrUGFjaW5nSW5m
byA6IFBhY2VkUGFja2V0SW5mbygpOwogCiAgICAgaWYgKGkgPT0ga051bUluaXRpYWxQYWNrZXRz
KSB7Ci0gICAgICBFWFBFQ1RfRkFMU0UoYml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0
ZSgmc3NyY3MsICZiaXRyYXRlX2JwcykpOworICAgICAgRVhQRUNUX0ZBTFNFKGJpdHJhdGVfZXN0
aW1hdG9yXy0+TGF0ZXN0RXN0aW1hdGUoJnNzcmNzLCAmYml0cmF0ZSkpOwogICAgICAgRVhQRUNU
X0VRKDB1LCBzc3Jjcy5zaXplKCkpOwogICAgICAgRVhQRUNUX0ZBTFNFKGJpdHJhdGVfb2JzZXJ2
ZXJfLnVwZGF0ZWQoKSk7CiAgICAgICBiaXRyYXRlX29ic2VydmVyXy5SZXNldCgpOwpAQCAtMzE4
LDEzICszMzAsMTQgQEAgdm9pZCBEZWxheUJhc2VkQndlVGVzdDo6SW5pdGlhbEJlaGF2aW9yVGVz
dEhlbHBlcigKICAgICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwMCAvIGtGcmFt
ZXJhdGUpOwogICAgIHNlbmRfdGltZV9tcyArPSBrRnJhbWVJbnRlcnZhbE1zOwogICB9Ci0gIEVY
UEVDVF9UUlVFKGJpdHJhdGVfZXN0aW1hdG9yXy0+TGF0ZXN0RXN0aW1hdGUoJnNzcmNzLCAmYml0
cmF0ZV9icHMpKTsKKyAgRVhQRUNUX1RSVUUoYml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3Rp
bWF0ZSgmc3NyY3MsICZiaXRyYXRlKSk7CiAgIEFTU0VSVF9FUSgxdSwgc3NyY3Muc2l6ZSgpKTsK
ICAgRVhQRUNUX0VRKGtEZWZhdWx0U3NyYywgc3NyY3MuZnJvbnQoKSk7Ci0gIEVYUEVDVF9ORUFS
KGV4cGVjdGVkX2NvbnZlcmdlX2JpdHJhdGUsIGJpdHJhdGVfYnBzLCBrQWNjZXB0ZWRCaXRyYXRl
RXJyb3JCcHMpOworICBFWFBFQ1RfTkVBUihleHBlY3RlZF9jb252ZXJnZV9iaXRyYXRlLCBiaXRy
YXRlLmJwcygpLAorICAgICAgICAgICAgICBrQWNjZXB0ZWRCaXRyYXRlRXJyb3JCcHMpOwogICBF
WFBFQ1RfVFJVRShiaXRyYXRlX29ic2VydmVyXy51cGRhdGVkKCkpOwogICBiaXRyYXRlX29ic2Vy
dmVyXy5SZXNldCgpOwotICBFWFBFQ1RfRVEoYml0cmF0ZV9vYnNlcnZlcl8ubGF0ZXN0X2JpdHJh
dGUoKSwgYml0cmF0ZV9icHMpOworICBFWFBFQ1RfRVEoYml0cmF0ZV9vYnNlcnZlcl8ubGF0ZXN0
X2JpdHJhdGUoKSwgYml0cmF0ZS5icHMoKSk7CiB9CiAKIHZvaWQgRGVsYXlCYXNlZEJ3ZVRlc3Q6
OlJhdGVJbmNyZWFzZVJlb3JkZXJpbmdUZXN0SGVscGVyKApAQCAtNTA5LDcgKzUyMiw3IEBAIHZv
aWQgRGVsYXlCYXNlZEJ3ZVRlc3Q6OlRlc3RXcmFwcGluZ0hlbHBlcihpbnQgc2lsZW5jZV90aW1l
X3MpIHsKICAgICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa0ZyYW1lSW50ZXJ2YWxN
cyk7CiAgICAgc2VuZF90aW1lX21zICs9IGtGcmFtZUludGVydmFsTXM7CiAgIH0KLSAgdWludDMy
X3QgYml0cmF0ZV9iZWZvcmUgPSAwOworICBEYXRhUmF0ZSBiaXRyYXRlX2JlZm9yZSA9IERhdGFS
YXRlOjpaZXJvKCk7CiAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzc3JjczsKICAgYml0cmF0ZV9l
c3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlX2JlZm9yZSk7CiAKQEAg
LTUyMiw3ICs1MzUsNyBAQCB2b2lkIERlbGF5QmFzZWRCd2VUZXN0OjpUZXN0V3JhcHBpbmdIZWxw
ZXIoaW50IHNpbGVuY2VfdGltZV9zKSB7CiAgICAgY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNv
bmRzKDIgKiBrRnJhbWVJbnRlcnZhbE1zKTsKICAgICBzZW5kX3RpbWVfbXMgKz0ga0ZyYW1lSW50
ZXJ2YWxNczsKICAgfQotICB1aW50MzJfdCBiaXRyYXRlX2FmdGVyID0gMDsKKyAgRGF0YVJhdGUg
Yml0cmF0ZV9hZnRlciA9IERhdGFSYXRlOjpaZXJvKCk7CiAgIGJpdHJhdGVfZXN0aW1hdG9yXy0+
TGF0ZXN0RXN0aW1hdGUoJnNzcmNzLCAmYml0cmF0ZV9hZnRlcik7CiAgIEVYUEVDVF9MVChiaXRy
YXRlX2FmdGVyLCBiaXRyYXRlX2JlZm9yZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdF9oZWxwZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlX3VuaXR0ZXN0X2hlbHBlci5oCmluZGV4IDdiYTE4
YzM2NzUyN2JiNzI2MzU0ZTRjNzQxMjQ0M2U0ZWQ0MDY2YjEuLjQ0NGUwY2Q2N2RmNGZiNDY4NWUz
MzlmYzUzMjhhNTFmMjg1ODUxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2Mv
ZGVsYXlfYmFzZWRfYndlX3VuaXR0ZXN0X2hlbHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dv
b2dfY2MvZGVsYXlfYmFzZWRfYndlX3VuaXR0ZXN0X2hlbHBlci5oCkBAIC0xNzIsNiArMTcyLDcg
QEAgY2xhc3MgRGVsYXlCYXNlZEJ3ZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAg
U2ltdWxhdGVkQ2xvY2sgY2xvY2tfOyAgLy8gVGltZSBhdCB0aGUgcmVjZWl2ZXIuCiAgIHRlc3Q6
OlRlc3RCaXRyYXRlT2JzZXJ2ZXIgYml0cmF0ZV9vYnNlcnZlcl87CiAgIHN0ZDo6dW5pcXVlX3B0
cjxBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yPiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3Rp
bWF0b3JfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UHJvYmVCaXRyYXRlRXN0aW1hdG9yPiBw
cm9iZV9iaXRyYXRlX2VzdGltYXRvcl87CiAgIHN0ZDo6dW5pcXVlX3B0cjxEZWxheUJhc2VkQndl
PiBiaXRyYXRlX2VzdGltYXRvcl87CiAgIHN0ZDo6dW5pcXVlX3B0cjx0ZXN0OjpTdHJlYW1HZW5l
cmF0b3I+IHN0cmVhbV9nZW5lcmF0b3JfOwogICBpbnQ2NF90IGFycml2YWxfdGltZV9vZmZzZXRf
bXNfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX2ZhY3Rvcnku
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfZmFjdG9yeS5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMmUwY2NjMTdjYTRiM2EzYjgxODZiZmU2M2ExNmU5NmFkNTE5
YWQxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfZmFjdG9yeS5jYworKysgL2Rldi9udWxsCkBAIC0x
LDQzICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9pbmNsdWRlL2dvb2dfY2NfZmFjdG9yeS5oIgot
Ci0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5oIgotbmFt
ZXNwYWNlIHdlYnJ0YyB7Ci1Hb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3Rvcnk6Okdvb2dDY05l
dHdvcmtDb250cm9sbGVyRmFjdG9yeSgKLSAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nKQotICAg
IDogZXZlbnRfbG9nXyhldmVudF9sb2cpIHt9Ci0KLXN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29u
dHJvbGxlckludGVyZmFjZT4KLUdvb2dDY05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6Q3JlYXRl
KE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGNvbmZpZykgewotICByZXR1cm4gYWJzbDo6bWFrZV91
bmlxdWU8R29vZ0NjTmV0d29ya0NvbnRyb2xsZXI+KGV2ZW50X2xvZ18sIGNvbmZpZywgZmFsc2Up
OwotfQotCi1UaW1lRGVsdGEgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpHZXRQcm9j
ZXNzSW50ZXJ2YWwoKSBjb25zdCB7Ci0gIGNvbnN0IGludDY0X3Qga1VwZGF0ZUludGVydmFsTXMg
PSAyNTsKLSAgcmV0dXJuIFRpbWVEZWx0YTo6bXMoa1VwZGF0ZUludGVydmFsTXMpOwotfQotCi1H
b29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6R29vZ0NjRmVlZGJhY2tOZXR3
b3JrQ29udHJvbGxlckZhY3RvcnkoCi0gICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZykKLSAgICA6
IGV2ZW50X2xvZ18oZXZlbnRfbG9nKSB7fQotCi1zdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRy
b2xsZXJJbnRlcmZhY2U+Ci1Hb29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6
Q3JlYXRlKE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGNvbmZpZykgewotICByZXR1cm4gYWJzbDo6
bWFrZV91bmlxdWU8R29vZ0NjTmV0d29ya0NvbnRyb2xsZXI+KGV2ZW50X2xvZ18sIGNvbmZpZywg
dHJ1ZSk7Ci19Ci0KLVRpbWVEZWx0YSBHb29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9sbGVyRmFj
dG9yeTo6R2V0UHJvY2Vzc0ludGVydmFsKCkgY29uc3QgewotICBjb25zdCBpbnQ2NF90IGtVcGRh
dGVJbnRlcnZhbE1zID0gMjU7Ci0gIHJldHVybiBUaW1lRGVsdGE6Om1zKGtVcGRhdGVJbnRlcnZh
bE1zKTsKLX0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sLmNjCmluZGV4IDRhYjk2OTRmMzdiYzAzN2U0
Yzk1ZTI2YWM0MzliNWYyYzE1YTFmNmQuLjQzNzY5NTNiN2NjMWNmNDkzNWMyMmFiMmE4N2RlOTBl
ZmMwZTllMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3
b3JrX2NvbnRyb2wuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdv
cmtfY29udHJvbC5jYwpAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2Mv
YWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2luY2x1ZGUvZ29vZ19jY19mYWN0b3J5
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9i
ZV9jb250cm9sbGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJh
dGVfZXN0aW1hdG9yL3Rlc3QvYndlX3Rlc3RfbG9nZ2luZy5oIgpAQCAtMzYsNiArMzUsMTEgQEAg
bmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogCiBjb25zdCBjaGFyIGtDd25kRXhwZXJp
bWVudFtdID0gIldlYlJUQy1Dd25kRXhwZXJpbWVudCI7CisvLyBXaGVuIENvbmdlc3Rpb25XaW5k
b3dQdXNoYmFjayBpcyBlbmFibGVkLCB0aGUgcGFjZXIgaXMgb2JsaXZpb3VzIHRvCisvLyB0aGUg
Y29uZ2VzdGlvbiB3aW5kb3cuIFRoZSByZWxhdGlvbiBiZXR3ZWVuIG91dHN0YW5kaW5nIGRhdGEg
YW5kCisvLyB0aGUgY29uZ2VzdGlvbiB3aW5kb3cgYWZmZWN0cyBlbmNvZGVyIGFsbG9jYXRpb25z
IGRpcmVjdGx5LgorY29uc3QgY2hhciBrQ29uZ2VzdGlvblB1c2hiYWNrRXhwZXJpbWVudFtdID0g
IldlYlJUQy1Db25nZXN0aW9uV2luZG93UHVzaGJhY2siOworCiBjb25zdCBpbnQ2NF90IGtEZWZh
dWx0QWNjZXB0ZWRRdWV1ZU1zID0gMjUwOwogCiAvLyBGcm9tIFJUQ1BTZW5kZXIgdmlkZW8gcmVw
b3J0IGludGVydmFsLgpAQCAtNDgsNiArNTIsMTggQEAgY29uc3RleHByIFRpbWVEZWx0YSBrTG9z
c1VwZGF0ZUludGVydmFsID0gVGltZURlbHRhOjpNaWxsaXM8MTAwMD4oKTsKIC8vIG92ZXJzaG9v
dHMgZnJvbSB0aGUgZW5jb2Rlci4KIGNvbnN0IGZsb2F0IGtEZWZhdWx0UGFjZU11bHRpcGxpZXIg
PSAyLjVmOwogCitib29sIElzQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrRXhwZXJpbWVudEVuYWJs
ZWQoKSB7CisgIHJldHVybiB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa0Nvbmdlc3Rp
b25QdXNoYmFja0V4cGVyaW1lbnQpICYmCisgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJ
c0VuYWJsZWQoa0N3bmRFeHBlcmltZW50KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENvbmdlc3Rp
b25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI+CitNYXliZUluaXRhbGl6ZUNvbmdlc3Rpb25XaW5k
b3dQdXNoYmFja0NvbnRyb2xsZXIoKSB7CisgIHJldHVybiBJc0Nvbmdlc3Rpb25XaW5kb3dQdXNo
YmFja0V4cGVyaW1lbnRFbmFibGVkKCkKKyAgICAgICAgICAgICA/IGFic2w6Om1ha2VfdW5pcXVl
PENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI+KCkKKyAgICAgICAgICAgICA6IG51
bGxwdHI7Cit9CisKIGJvb2wgQ3duZEV4cGVyaW1lbnRFbmFibGVkKCkgewogICBzdGQ6OnN0cmlu
ZyBleHBlcmltZW50X3N0cmluZyA9CiAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpGaW5kRnVs
bE5hbWUoa0N3bmRFeHBlcmltZW50KTsKQEAgLTkwLDEzICsxMDYsMTAgQEAgc3RkOjp2ZWN0b3I8
UGFja2V0RmVlZGJhY2s+IFJlY2VpdmVkUGFja2V0c0ZlZWRiYWNrQXNSdHAoCiAgICAgaWYgKGZi
LnJlY2VpdmVfdGltZS5Jc0Zpbml0ZSgpKSB7CiAgICAgICBQYWNrZXRGZWVkYmFjayBwZihmYi5y
ZWNlaXZlX3RpbWUubXMoKSwgMCk7CiAgICAgICBwZi5jcmVhdGlvbl90aW1lX21zID0gcmVwb3J0
LmZlZWRiYWNrX3RpbWUubXMoKTsKLSAgICAgIGlmIChmYi5zZW50X3BhY2tldC5oYXNfdmFsdWUo
KSkgewotICAgICAgICBwZi5wYXlsb2FkX3NpemUgPSBmYi5zZW50X3BhY2tldC0+c2l6ZS5ieXRl
cygpOwotICAgICAgICBwZi5wYWNpbmdfaW5mbyA9IGZiLnNlbnRfcGFja2V0LT5wYWNpbmdfaW5m
bzsKLSAgICAgICAgcGYuc2VuZF90aW1lX21zID0gZmIuc2VudF9wYWNrZXQtPnNlbmRfdGltZS5t
cygpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcGYuc2VuZF90aW1lX21zID0gUGFja2V0RmVl
ZGJhY2s6OmtOb1NlbmRUaW1lOwotICAgICAgfQorICAgICAgcGYucGF5bG9hZF9zaXplID0gZmIu
c2VudF9wYWNrZXQuc2l6ZS5ieXRlcygpOworICAgICAgcGYucGFjaW5nX2luZm8gPSBmYi5zZW50
X3BhY2tldC5wYWNpbmdfaW5mbzsKKyAgICAgIHBmLnNlbmRfdGltZV9tcyA9IGZiLnNlbnRfcGFj
a2V0LnNlbmRfdGltZS5tcygpOworICAgICAgcGYudW5hY2tub3dsZWRnZWRfZGF0YSA9IGZiLnNl
bnRfcGFja2V0LnByaW9yX3VuYWNrZWRfZGF0YS5ieXRlcygpOwogICAgICAgcGFja2V0X2ZlZWRi
YWNrX3ZlY3Rvci5wdXNoX2JhY2socGYpOwogICAgIH0KICAgfQpAQCAtMTE0LDIxICsxMjcsMjcg
QEAgaW50NjRfdCBHZXRCcHNPckRlZmF1bHQoY29uc3QgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+
JiByYXRlLAogCiB9ICAvLyBuYW1lc3BhY2UKIAotCiBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6
R29vZ0NjTmV0d29ya0NvbnRyb2xsZXIoUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXR3b3JrQ29udHJvbGxl
ckNvbmZpZyBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBmZWVkYmFja19vbmx5KQogICAgIDogZXZlbnRfbG9nXyhldmVudF9sb2cp
LAogICAgICAgcGFja2V0X2ZlZWRiYWNrX29ubHlfKGZlZWRiYWNrX29ubHkpLAorICAgICAgc2Fm
ZV9yZXNldF9vbl9yb3V0ZV9jaGFuZ2VfKCJFbmFibGVkIiksCisgICAgICBzYWZlX3Jlc2V0X2Fj
a25vd2xlZGdlZF9yYXRlXygiYWNrIiksCisgICAgICB1c2Vfc3RhYmxlX2JhbmR3aWR0aF9lc3Rp
bWF0ZV8oCisgICAgICAgICAgZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUJ3ZS1TdGFi
bGVCYW5kd2lkdGhFc3RpbWF0ZSIpKSwKICAgICAgIHByb2JlX2NvbnRyb2xsZXJfKG5ldyBQcm9i
ZUNvbnRyb2xsZXIoKSksCisgICAgICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9s
bGVyXygKKyAgICAgICAgICBNYXliZUluaXRhbGl6ZUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0Nv
bnRyb2xsZXIoKSksCiAgICAgICBiYW5kd2lkdGhfZXN0aW1hdGlvbl8oCiAgICAgICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8U2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uPihldmVudF9sb2dfKSks
CiAgICAgICBhbHJfZGV0ZWN0b3JfKGFic2w6Om1ha2VfdW5pcXVlPEFsckRldGVjdG9yPigpKSwK
KyAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXyhuZXcgUHJvYmVCaXRyYXRlRXN0aW1hdG9y
KGV2ZW50X2xvZykpLAogICAgICAgZGVsYXlfYmFzZWRfYndlXyhuZXcgRGVsYXlCYXNlZEJ3ZShl
dmVudF9sb2dfKSksCiAgICAgICBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfKAogICAg
ICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I+KCkp
LAogICAgICAgaW5pdGlhbF9jb25maWdfKGNvbmZpZyksCi0gICAgICBsYXN0X2JhbmR3aWR0aF8o
KmNvbmZpZy5jb25zdHJhaW50cy5zdGFydGluZ19yYXRlKSwKKyAgICAgIGxhc3RfdGFyZ2V0X3Jh
dGVfKCpjb25maWcuY29uc3RyYWludHMuc3RhcnRpbmdfcmF0ZSksCiAgICAgICBwYWNpbmdfZmFj
dG9yXyhjb25maWcuc3RyZWFtX2Jhc2VkX2NvbmZpZy5wYWNpbmdfZmFjdG9yLnZhbHVlX29yKAog
ICAgICAgICAgIGtEZWZhdWx0UGFjZU11bHRpcGxpZXIpKSwKICAgICAgIG1pbl9wYWNpbmdfcmF0
ZV8oY29uZmlnLnN0cmVhbV9iYXNlZF9jb25maWcubWluX3BhY2luZ19yYXRlLnZhbHVlX29yKApA
QCAtMTM4LDcgKzE1NywxMiBAQCBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6R29vZ0NjTmV0d29y
a0NvbnRyb2xsZXIoUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKICAgICAgIG1heF90b3RhbF9hbGxv
Y2F0ZWRfYml0cmF0ZV8oRGF0YVJhdGU6Olplcm8oKSksCiAgICAgICBpbl9jd25kX2V4cGVyaW1l
bnRfKEN3bmRFeHBlcmltZW50RW5hYmxlZCgpKSwKICAgICAgIGFjY2VwdGVkX3F1ZXVlX21zXyhr
RGVmYXVsdEFjY2VwdGVkUXVldWVNcykgewotICBkZWxheV9iYXNlZF9id2VfLT5TZXRNaW5CaXRy
YXRlKGNvbmdlc3Rpb25fY29udHJvbGxlcjo6R2V0TWluQml0cmF0ZUJwcygpKTsKKyAgUlRDX0RD
SEVDSyhjb25maWcuY29uc3RyYWludHMuYXRfdGltZS5Jc0Zpbml0ZSgpKTsKKyAgUGFyc2VGaWVs
ZFRyaWFsKAorICAgICAgeyZzYWZlX3Jlc2V0X29uX3JvdXRlX2NoYW5nZV8sICZzYWZlX3Jlc2V0
X2Fja25vd2xlZGdlZF9yYXRlX30sCisgICAgICBmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJX
ZWJSVEMtQndlLVNhZmVSZXNldE9uUm91dGVDaGFuZ2UiKSk7CisKKyAgZGVsYXlfYmFzZWRfYndl
Xy0+U2V0TWluQml0cmF0ZShjb25nZXN0aW9uX2NvbnRyb2xsZXI6OkdldE1pbkJpdHJhdGUoKSk7
CiAgIGlmIChpbl9jd25kX2V4cGVyaW1lbnRfICYmCiAgICAgICAhUmVhZEN3bmRFeHBlcmltZW50
UGFyYW1ldGVyKCZhY2NlcHRlZF9xdWV1ZV9tc18pKSB7CiAgICAgUlRDX0xPRyhMU19XQVJOSU5H
KSA8PCAiRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlcnMgZm9yIEN3bmRFeHBlcmltZW50ICIKQEAg
LTE2NSwxNiArMTg5LDM5IEBAIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dDY05ldHdvcmtDb250
cm9sbGVyOjpPbk5ldHdvcmtSb3V0ZUNoYW5nZSgKIAogICBDbGFtcEJpdHJhdGVzKCZzdGFydF9i
aXRyYXRlX2JwcywgJm1pbl9iaXRyYXRlX2JwcywgJm1heF9iaXRyYXRlX2Jwcyk7CiAKLSAgYmFu
ZHdpZHRoX2VzdGltYXRpb25fID0KLSAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNlbmRTaWRlQmFu
ZHdpZHRoRXN0aW1hdGlvbj4oZXZlbnRfbG9nXyk7CisgIGlmIChzYWZlX3Jlc2V0X29uX3JvdXRl
X2NoYW5nZV8pIHsKKyAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gZXN0aW1hdGVkX2JpdHJh
dGVfYnBzOworICAgIGlmIChzYWZlX3Jlc2V0X2Fja25vd2xlZGdlZF9yYXRlXykgeworICAgICAg
ZXN0aW1hdGVkX2JpdHJhdGVfYnBzID0gYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+
Yml0cmF0ZV9icHMoKTsKKyAgICAgIGlmICghZXN0aW1hdGVkX2JpdHJhdGVfYnBzKQorICAgICAg
ICBlc3RpbWF0ZWRfYml0cmF0ZV9icHMgPSBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3Jf
LT5QZWVrQnBzKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGludDMyX3QgdGFyZ2V0X2JpdHJhdGVf
YnBzOworICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3NzOworICAgICAgaW50NjRfdCBydHRfbXM7
CisgICAgICBiYW5kd2lkdGhfZXN0aW1hdGlvbl8tPkN1cnJlbnRFc3RpbWF0ZSgmdGFyZ2V0X2Jp
dHJhdGVfYnBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmZyYWN0aW9uX2xvc3MsICZydHRfbXMpOworICAgICAgZXN0aW1hdGVkX2JpdHJhdGVfYnBzID0g
dGFyZ2V0X2JpdHJhdGVfYnBzOworICAgIH0KKyAgICBpZiAoZXN0aW1hdGVkX2JpdHJhdGVfYnBz
ICYmICghbXNnLmNvbnN0cmFpbnRzLnN0YXJ0aW5nX3JhdGUgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlc3RpbWF0ZWRfYml0cmF0ZV9icHMgPCBzdGFydF9iaXRyYXRlX2Jw
cykpIHsKKyAgICAgIHN0YXJ0X2JpdHJhdGVfYnBzID0gKmVzdGltYXRlZF9iaXRyYXRlX2JwczsK
KyAgICAgIG1zZy5jb25zdHJhaW50cy5zdGFydGluZ19yYXRlID0gRGF0YVJhdGU6OmJwcyhzdGFy
dF9iaXRyYXRlX2Jwcyk7CisgICAgfQorICB9CisKKyAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0
aW1hdG9yXy5yZXNldChuZXcgQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcigpKTsKKyAgcHJv
YmVfYml0cmF0ZV9lc3RpbWF0b3JfLnJlc2V0KG5ldyBQcm9iZUJpdHJhdGVFc3RpbWF0b3IoZXZl
bnRfbG9nXykpOworICBkZWxheV9iYXNlZF9id2VfLnJlc2V0KG5ldyBEZWxheUJhc2VkQndlKGV2
ZW50X2xvZ18pKTsKKyAgaWYgKG1zZy5jb25zdHJhaW50cy5zdGFydGluZ19yYXRlKQorICAgIGRl
bGF5X2Jhc2VkX2J3ZV8tPlNldFN0YXJ0Qml0cmF0ZSgqbXNnLmNvbnN0cmFpbnRzLnN0YXJ0aW5n
X3JhdGUpOworICAvLyBUT0RPKHNydGUpOiBVc2Ugb3JpZ2luYWwgdmFsdWVzIGluc3RlYWQgb2Yg
Y29udmVydGVkLgorICBkZWxheV9iYXNlZF9id2VfLT5TZXRNaW5CaXRyYXRlKERhdGFSYXRlOjpi
cHMobWluX2JpdHJhdGVfYnBzKSk7CisgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+T25Sb3V0ZUNo
YW5nZSgpOwogICBiYW5kd2lkdGhfZXN0aW1hdGlvbl8tPlNldEJpdHJhdGVzKAogICAgICAgbXNn
LmNvbnN0cmFpbnRzLnN0YXJ0aW5nX3JhdGUsIERhdGFSYXRlOjpicHMobWluX2JpdHJhdGVfYnBz
KSwKICAgICAgIG1zZy5jb25zdHJhaW50cy5tYXhfZGF0YV9yYXRlLnZhbHVlX29yKERhdGFSYXRl
OjpJbmZpbml0eSgpKSwKICAgICAgIG1zZy5hdF90aW1lKTsKLSAgZGVsYXlfYmFzZWRfYndlXy5y
ZXNldChuZXcgRGVsYXlCYXNlZEJ3ZShldmVudF9sb2dfKSk7Ci0gIGFja25vd2xlZGdlZF9iaXRy
YXRlX2VzdGltYXRvcl8ucmVzZXQobmV3IEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3IoKSk7
Ci0gIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldFN0YXJ0Qml0cmF0ZShzdGFydF9iaXRyYXRlX2Jwcyk7
Ci0gIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJhdGUobWluX2JpdHJhdGVfYnBzKTsKIAog
ICBwcm9iZV9jb250cm9sbGVyXy0+UmVzZXQobXNnLmF0X3RpbWUubXMoKSk7CiAgIE5ldHdvcmtD
b250cm9sVXBkYXRlIHVwZGF0ZTsKQEAgLTIzOSw3ICsyODYsNyBAQCBOZXR3b3JrQ29udHJvbFVw
ZGF0ZSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6T25Sb3VuZFRyaXBUaW1lVXBkYXRlKAogICBp
ZiAocGFja2V0X2ZlZWRiYWNrX29ubHlfKQogICAgIHJldHVybiBOZXR3b3JrQ29udHJvbFVwZGF0
ZSgpOwogICBpZiAobXNnLnNtb290aGVkKSB7Ci0gICAgZGVsYXlfYmFzZWRfYndlXy0+T25SdHRV
cGRhdGUobXNnLnJvdW5kX3RyaXBfdGltZS5tcygpKTsKKyAgICBkZWxheV9iYXNlZF9id2VfLT5P
blJ0dFVwZGF0ZShtc2cucm91bmRfdHJpcF90aW1lKTsKICAgfSBlbHNlIHsKICAgICBiYW5kd2lk
dGhfZXN0aW1hdGlvbl8tPlVwZGF0ZVJ0dChtc2cucm91bmRfdHJpcF90aW1lLCBtc2cucmVjZWl2
ZV90aW1lKTsKICAgfQpAQCAtMjUwLDcgKzI5NywyMiBAQCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBH
b29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6T25TZW50UGFja2V0KAogICAgIFNlbnRQYWNrZXQgc2Vu
dF9wYWNrZXQpIHsKICAgYWxyX2RldGVjdG9yXy0+T25CeXRlc1NlbnQoc2VudF9wYWNrZXQuc2l6
ZS5ieXRlcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50X3BhY2tldC5zZW5k
X3RpbWUubXMoKSk7Ci0gIHJldHVybiBOZXR3b3JrQ29udHJvbFVwZGF0ZSgpOworICBpZiAoIWZp
cnN0X3BhY2tldF9zZW50XykgeworICAgIGZpcnN0X3BhY2tldF9zZW50XyA9IHRydWU7CisgICAg
Ly8gSW5pdGlhbGl6ZSBmZWVkYmFjayB0aW1lIHRvIHNlbmQgdGltZSB0byBhbGxvdyBlc3RpbWF0
aW9uIG9mIFJUVCB1bnRpbAorICAgIC8vIGZpcnN0IGZlZWRiYWNrIGlzIHJlY2VpdmVkLgorICAg
IGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+VXBkYXRlUHJvcGFnYXRpb25SdHQoc2VudF9wYWNrZXQu
c2VuZF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGltZURlbHRhOjpaZXJvKCkpOworICB9CisgIGlmIChjb25nZXN0aW9uX3dpbmRvd19wdXNo
YmFja19jb250cm9sbGVyXykgeworICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRy
b2xsZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoCisgICAgICAgIHNlbnRfcGFja2V0LmRhdGFf
aW5fZmxpZ2h0LmJ5dGVzKCkpOworICAgIE5ldHdvcmtDb250cm9sVXBkYXRlIHVwZGF0ZTsKKyAg
ICBNYXliZVRyaWdnZXJPbk5ldHdvcmtDaGFuZ2VkKCZ1cGRhdGUsIHNlbnRfcGFja2V0LnNlbmRf
dGltZSk7CisgICAgcmV0dXJuIHVwZGF0ZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gTmV0d29y
a0NvbnRyb2xVcGRhdGUoKTsKKyAgfQogfQogCiBOZXR3b3JrQ29udHJvbFVwZGF0ZSBHb29nQ2NO
ZXR3b3JrQ29udHJvbGxlcjo6T25TdHJlYW1zQ29uZmlnKApAQCAtMzEyLDkgKzM3NCw5IEBAIEdv
b2dDY05ldHdvcmtDb250cm9sbGVyOjpVcGRhdGVCaXRyYXRlQ29uc3RyYWludHMoCiAgICAgICBz
dGFydGluZ19yYXRlLCBEYXRhUmF0ZTo6YnBzKG1pbl9iaXRyYXRlX2JwcyksCiAgICAgICBjb25z
dHJhaW50cy5tYXhfZGF0YV9yYXRlLnZhbHVlX29yKERhdGFSYXRlOjpJbmZpbml0eSgpKSwKICAg
ICAgIGNvbnN0cmFpbnRzLmF0X3RpbWUpOwotICBpZiAoc3RhcnRfYml0cmF0ZV9icHMgPiAwKQot
ICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldFN0YXJ0Qml0cmF0ZShzdGFydF9iaXRyYXRlX2Jwcyk7
Ci0gIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJhdGUobWluX2JpdHJhdGVfYnBzKTsKKyAg
aWYgKHN0YXJ0aW5nX3JhdGUpCisgICAgZGVsYXlfYmFzZWRfYndlXy0+U2V0U3RhcnRCaXRyYXRl
KCpzdGFydGluZ19yYXRlKTsKKyAgZGVsYXlfYmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShEYXRh
UmF0ZTo6YnBzKG1pbl9iaXRyYXRlX2JwcykpOwogICByZXR1cm4gcHJvYmVzOwogfQogCkBAIC0z
MzEsMzggKzM5Myw2MSBAQCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBHb29nQ2NOZXR3b3JrQ29udHJv
bGxlcjo6T25UcmFuc3BvcnRMb3NzUmVwb3J0KAogCiBOZXR3b3JrQ29udHJvbFVwZGF0ZSBHb29n
Q2NOZXR3b3JrQ29udHJvbGxlcjo6T25UcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2soCiAgICAgVHJh
bnNwb3J0UGFja2V0c0ZlZWRiYWNrIHJlcG9ydCkgewotICBUaW1lRGVsdGEgZmVlZGJhY2tfbWF4
X3J0dCA9IFRpbWVEZWx0YTo6TWludXNJbmZpbml0eSgpOworICBpZiAocmVwb3J0LnBhY2tldF9m
ZWVkYmFja3MuZW1wdHkoKSkgeworICAgIERlbGF5QmFzZWRCd2U6OlJlc3VsdCByZXN1bHQgPSBk
ZWxheV9iYXNlZF9id2VfLT5PbkRlbGF5ZWRGZWVkYmFjaygKKyAgICAgICAgcmVwb3J0LnNlbmRs
ZXNzX2Fycml2YWxfdGltZXMuYmFjaygpKTsKKyAgICBOZXR3b3JrQ29udHJvbFVwZGF0ZSB1cGRh
dGU7CisgICAgaWYgKHJlc3VsdC51cGRhdGVkKSB7CisgICAgICBiYW5kd2lkdGhfZXN0aW1hdGlv
bl8tPlVwZGF0ZURlbGF5QmFzZWRFc3RpbWF0ZShyZXBvcnQuZmVlZGJhY2tfdGltZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50
YXJnZXRfYml0cmF0ZSk7CisgICAgICBNYXliZVRyaWdnZXJPbk5ldHdvcmtDaGFuZ2VkKCZ1cGRh
dGUsIHJlcG9ydC5mZWVkYmFja190aW1lKTsKKyAgICB9CisgICAgcmV0dXJuIHVwZGF0ZTsKKyAg
fQorCisgIGlmIChjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXykgeworICAg
IGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfLT5VcGRhdGVPdXRzdGFuZGlu
Z0RhdGEoCisgICAgICAgIHJlcG9ydC5kYXRhX2luX2ZsaWdodC5ieXRlcygpKTsKKyAgfQorICBU
aW1lRGVsdGEgbWF4X2ZlZWRiYWNrX3J0dCA9IFRpbWVEZWx0YTo6TWludXNJbmZpbml0eSgpOwor
ICBUaW1lRGVsdGEgbWluX3Byb3BhZ2F0aW9uX3J0dCA9IFRpbWVEZWx0YTo6UGx1c0luZmluaXR5
KCk7CiAgIFRpbWVzdGFtcCBtYXhfcmVjdl90aW1lID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5
KCk7Ci0gIGZvciAoY29uc3QgYXV0byYgcGFja2V0X2ZlZWRiYWNrIDogcmVwb3J0LlJlY2VpdmVk
V2l0aFNlbmRJbmZvKCkpIHsKLSAgICBUaW1lRGVsdGEgcnR0ID0KLSAgICAgICAgcmVwb3J0LmZl
ZWRiYWNrX3RpbWUgLSBwYWNrZXRfZmVlZGJhY2suc2VudF9wYWNrZXQtPnNlbmRfdGltZTsKLSAg
ICAvLyBtYXgoKSBpcyB1c2VkIHRvIGFjY291bnQgZm9yIGZlZWRiYWNrIGJlaW5nIGRlbGF5ZWQg
YnkgdGhlCi0gICAgLy8gcmVjZWl2ZXIuCi0gICAgZmVlZGJhY2tfbWF4X3J0dCA9IHN0ZDo6bWF4
KGZlZWRiYWNrX21heF9ydHQsIHJ0dCk7Ci0gICAgbWF4X3JlY3ZfdGltZSA9IHN0ZDo6bWF4KG1h
eF9yZWN2X3RpbWUsIHBhY2tldF9mZWVkYmFjay5yZWNlaXZlX3RpbWUpOworCisgIHN0ZDo6dmVj
dG9yPFBhY2tldFJlc3VsdD4gZmVlZGJhY2tzID0gcmVwb3J0LlJlY2VpdmVkV2l0aFNlbmRJbmZv
KCk7CisgIGZvciAoY29uc3QgYXV0byYgZmVlZGJhY2sgOiBmZWVkYmFja3MpCisgICAgbWF4X3Jl
Y3ZfdGltZSA9IHN0ZDo6bWF4KG1heF9yZWN2X3RpbWUsIGZlZWRiYWNrLnJlY2VpdmVfdGltZSk7
CisKKyAgZm9yIChjb25zdCBhdXRvJiBmZWVkYmFjayA6IGZlZWRiYWNrcykgeworICAgIFRpbWVE
ZWx0YSBmZWVkYmFja19ydHQgPQorICAgICAgICByZXBvcnQuZmVlZGJhY2tfdGltZSAtIGZlZWRi
YWNrLnNlbnRfcGFja2V0LnNlbmRfdGltZTsKKyAgICBUaW1lRGVsdGEgbWluX3BlbmRpbmdfdGlt
ZSA9IGZlZWRiYWNrLnJlY2VpdmVfdGltZSAtIG1heF9yZWN2X3RpbWU7CisgICAgVGltZURlbHRh
IHByb3BhZ2F0aW9uX3J0dCA9IGZlZWRiYWNrX3J0dCAtIG1pbl9wZW5kaW5nX3RpbWU7CisgICAg
bWF4X2ZlZWRiYWNrX3J0dCA9IHN0ZDo6bWF4KG1heF9mZWVkYmFja19ydHQsIGZlZWRiYWNrX3J0
dCk7CisgICAgbWluX3Byb3BhZ2F0aW9uX3J0dCA9IHN0ZDo6bWluKG1pbl9wcm9wYWdhdGlvbl9y
dHQsIHByb3BhZ2F0aW9uX3J0dCk7CiAgIH0KLSAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbWlu
X2ZlZWRiYWNrX21heF9ydHRfbXM7Ci0gIGlmIChmZWVkYmFja19tYXhfcnR0LklzRmluaXRlKCkp
IHsKLSAgICBmZWVkYmFja19tYXhfcnR0c18ucHVzaF9iYWNrKGZlZWRiYWNrX21heF9ydHQubXMo
KSk7CisKKyAgaWYgKG1heF9mZWVkYmFja19ydHQuSXNGaW5pdGUoKSkgeworICAgIGZlZWRiYWNr
X21heF9ydHRzXy5wdXNoX2JhY2sobWF4X2ZlZWRiYWNrX3J0dC5tcygpKTsKICAgICBjb25zdCBz
aXplX3Qga01heEZlZWRiYWNrUnR0V2luZG93ID0gMzI7CiAgICAgaWYgKGZlZWRiYWNrX21heF9y
dHRzXy5zaXplKCkgPiBrTWF4RmVlZGJhY2tSdHRXaW5kb3cpCiAgICAgICBmZWVkYmFja19tYXhf
cnR0c18ucG9wX2Zyb250KCk7Ci0gICAgbWluX2ZlZWRiYWNrX21heF9ydHRfbXMuZW1wbGFjZSgq
c3RkOjptaW5fZWxlbWVudCgKLSAgICAgICAgZmVlZGJhY2tfbWF4X3J0dHNfLmJlZ2luKCksIGZl
ZWRiYWNrX21heF9ydHRzXy5lbmQoKSkpOworICAgIC8vIFRPRE8oc3J0ZSk6IFVzZSB0aW1lIHNp
bmNlIGxhc3QgdW5hY2tub3dsZWRnZWQgcGFja2V0LgorICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9u
Xy0+VXBkYXRlUHJvcGFnYXRpb25SdHQocmVwb3J0LmZlZWRiYWNrX3RpbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fcHJvcGFnYXRpb25fcnR0
KTsKICAgfQogICBpZiAocGFja2V0X2ZlZWRiYWNrX29ubHlfKSB7CiAgICAgaWYgKCFmZWVkYmFj
a19tYXhfcnR0c18uZW1wdHkoKSkgewogICAgICAgaW50NjRfdCBzdW1fcnR0X21zID0gc3RkOjph
Y2N1bXVsYXRlKGZlZWRiYWNrX21heF9ydHRzXy5iZWdpbigpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWRiYWNrX21heF9ydHRzXy5lbmQoKSwgMCk7CiAg
ICAgICBpbnQ2NF90IG1lYW5fcnR0X21zID0gc3VtX3J0dF9tcyAvIGZlZWRiYWNrX21heF9ydHRz
Xy5zaXplKCk7Ci0gICAgICBkZWxheV9iYXNlZF9id2VfLT5PblJ0dFVwZGF0ZShtZWFuX3J0dF9t
cyk7CisgICAgICBkZWxheV9iYXNlZF9id2VfLT5PblJ0dFVwZGF0ZShUaW1lRGVsdGE6Om1zKG1l
YW5fcnR0X21zKSk7CiAgICAgfQogCiAgICAgVGltZURlbHRhIGZlZWRiYWNrX21pbl9ydHQgPSBU
aW1lRGVsdGE6OlBsdXNJbmZpbml0eSgpOwotICAgIGZvciAoY29uc3QgYXV0byYgcGFja2V0X2Zl
ZWRiYWNrIDogcmVwb3J0LlJlY2VpdmVkV2l0aFNlbmRJbmZvKCkpIHsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHBhY2tldF9mZWVkYmFjayA6IGZlZWRiYWNrcykgewogICAgICAgVGltZURlbHRhIHBl
bmRpbmdfdGltZSA9IHBhY2tldF9mZWVkYmFjay5yZWNlaXZlX3RpbWUgLSBtYXhfcmVjdl90aW1l
OwogICAgICAgVGltZURlbHRhIHJ0dCA9IHJlcG9ydC5mZWVkYmFja190aW1lIC0KLSAgICAgICAg
ICAgICAgICAgICAgICBwYWNrZXRfZmVlZGJhY2suc2VudF9wYWNrZXQtPnNlbmRfdGltZSAtIHBl
bmRpbmdfdGltZTsKKyAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfZmVlZGJhY2suc2VudF9w
YWNrZXQuc2VuZF90aW1lIC0gcGVuZGluZ190aW1lOwogICAgICAgLy8gVmFsdWUgdXNlZCBmb3Ig
cHJlZGljdGluZyBOQUNLIHJvdW5kIHRyaXAgdGltZSBpbiBGRUMgY29udHJvbGxlci4KICAgICAg
IGZlZWRiYWNrX21pbl9ydHQgPSBzdGQ6Om1pbihydHQsIGZlZWRiYWNrX21pbl9ydHQpOwogICAg
IH0KQEAgLTQwMCwyMiArNDg1LDMzIEBAIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dDY05ldHdv
cmtDb250cm9sbGVyOjpPblRyYW5zcG9ydFBhY2tldHNGZWVkYmFjaygKICAgcHJldmlvdXNseV9p
bl9hbHIgPSBhbHJfc3RhcnRfdGltZS5oYXNfdmFsdWUoKTsKICAgYWNrbm93bGVkZ2VkX2JpdHJh
dGVfZXN0aW1hdG9yXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKICAgICAgIHJlY2Vp
dmVkX2ZlZWRiYWNrX3ZlY3Rvcik7Ci0gIGF1dG8gYWNrbm93bGVkZ2VkX2JpdHJhdGUgPSBhY2tu
b3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRyYXRlX2JwcygpOworICBhdXRvIGFja25v
d2xlZGdlZF9iaXRyYXRlID0gYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+Yml0cmF0
ZSgpOworICBiYW5kd2lkdGhfZXN0aW1hdGlvbl8tPlNldEFja25vd2xlZGdlZFJhdGUoYWNrbm93
bGVkZ2VkX2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXBvcnQuZmVlZGJhY2tfdGltZSk7CisgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+SW5j
b21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcihyZXBvcnQpOworICBmb3IgKGNvbnN0IGF1dG8mIGZl
ZWRiYWNrIDogcmVjZWl2ZWRfZmVlZGJhY2tfdmVjdG9yKSB7CisgICAgaWYgKGZlZWRiYWNrLnBh
Y2luZ19pbmZvLnByb2JlX2NsdXN0ZXJfaWQgIT0gUGFjZWRQYWNrZXRJbmZvOjprTm90QVByb2Jl
KSB7CisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8tPkhhbmRsZVByb2JlQW5kRXN0aW1h
dGVCaXRyYXRlKGZlZWRiYWNrKTsKKyAgICB9CisgIH0KKyAgYWJzbDo6b3B0aW9uYWw8RGF0YVJh
dGU+IHByb2JlX2JpdHJhdGUgPQorICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfLT5GZXRj
aEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGUoKTsKKwogICBEZWxheUJhc2VkQndlOjpSZXN1
bHQgcmVzdWx0OwogICByZXN1bHQgPSBkZWxheV9iYXNlZF9id2VfLT5JbmNvbWluZ1BhY2tldEZl
ZWRiYWNrVmVjdG9yKAotICAgICAgcmVjZWl2ZWRfZmVlZGJhY2tfdmVjdG9yLCBhY2tub3dsZWRn
ZWRfYml0cmF0ZSwKLSAgICAgIHJlcG9ydC5mZWVkYmFja190aW1lLm1zKCkpOworICAgICAgcmVj
ZWl2ZWRfZmVlZGJhY2tfdmVjdG9yLCBhY2tub3dsZWRnZWRfYml0cmF0ZSwgcHJvYmVfYml0cmF0
ZSwKKyAgICAgIHJlcG9ydC5mZWVkYmFja190aW1lKTsKIAogICBOZXR3b3JrQ29udHJvbFVwZGF0
ZSB1cGRhdGU7CiAgIGlmIChyZXN1bHQudXBkYXRlZCkgewogICAgIGlmIChyZXN1bHQucHJvYmUp
IHsKLSAgICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+U2V0U2VuZEJpdHJhdGUoCi0gICAgICAg
ICAgRGF0YVJhdGU6OmJwcyhyZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBzKSwgcmVwb3J0LmZlZWRi
YWNrX3RpbWUpOworICAgICAgYmFuZHdpZHRoX2VzdGltYXRpb25fLT5TZXRTZW5kQml0cmF0ZShy
ZXN1bHQudGFyZ2V0X2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcG9ydC5mZWVkYmFja190aW1lKTsKICAgICB9CiAgICAgLy8gU2luY2UgU2V0
U2VuZEJpdHJhdGUgbm93IHJlc2V0cyB0aGUgZGVsYXktYmFzZWQgZXN0aW1hdGUsIHdlIGhhdmUg
dG8gY2FsbAogICAgIC8vIFVwZGF0ZURlbGF5QmFzZWRFc3RpbWF0ZSBhZnRlciBTZXRTZW5kQml0
cmF0ZS4KLSAgICBiYW5kd2lkdGhfZXN0aW1hdGlvbl8tPlVwZGF0ZURlbGF5QmFzZWRFc3RpbWF0
ZSgKLSAgICAgICAgcmVwb3J0LmZlZWRiYWNrX3RpbWUsIERhdGFSYXRlOjpicHMocmVzdWx0LnRh
cmdldF9iaXRyYXRlX2JwcykpOworICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+VXBkYXRlRGVs
YXlCYXNlZEVzdGltYXRlKHJlcG9ydC5mZWVkYmFja190aW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50YXJnZXRfYml0cmF0ZSk7
CiAgICAgLy8gVXBkYXRlIHRoZSBlc3RpbWF0ZSBpbiB0aGUgUHJvYmVDb250cm9sbGVyLCBpbiBj
YXNlIHdlIHdhbnQgdG8gcHJvYmUuCiAgICAgTWF5YmVUcmlnZ2VyT25OZXR3b3JrQ2hhbmdlZCgm
dXBkYXRlLCByZXBvcnQuZmVlZGJhY2tfdGltZSk7CiAgIH0KQEAgLTQyOCwxMSArNTI0LDE0IEBA
IE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpPblRyYW5zcG9y
dFBhY2tldHNGZWVkYmFjaygKIAogICAvLyBObyB2YWxpZCBSVFQgY291bGQgYmUgYmVjYXVzZSBz
ZW5kLXNpZGUgQldFIGlzbid0IHVzZWQsIGluIHdoaWNoIGNhc2UKICAgLy8gd2UgZG9uJ3QgdHJ5
IHRvIGxpbWl0IHRoZSBvdXRzdGFuZGluZyBwYWNrZXRzLgotICBpZiAoaW5fY3duZF9leHBlcmlt
ZW50XyAmJiBtaW5fZmVlZGJhY2tfbWF4X3J0dF9tcykgeworICBpZiAoaW5fY3duZF9leHBlcmlt
ZW50XyAmJiBtYXhfZmVlZGJhY2tfcnR0LklzRmluaXRlKCkpIHsKKyAgICBpbnQ2NF90IG1pbl9m
ZWVkYmFja19tYXhfcnR0X21zID0KKyAgICAgICAgKnN0ZDo6bWluX2VsZW1lbnQoZmVlZGJhY2tf
bWF4X3J0dHNfLmJlZ2luKCksIGZlZWRiYWNrX21heF9ydHRzXy5lbmQoKSk7CisKICAgICBjb25z
dCBEYXRhU2l6ZSBrTWluQ3duZCA9IERhdGFTaXplOjpieXRlcygyICogMTUwMCk7CiAgICAgVGlt
ZURlbHRhIHRpbWVfd2luZG93ID0KLSAgICAgICAgVGltZURlbHRhOjptcygqbWluX2ZlZWRiYWNr
X21heF9ydHRfbXMgKyBhY2NlcHRlZF9xdWV1ZV9tc18pOwotICAgIERhdGFTaXplIGRhdGFfd2lu
ZG93ID0gbGFzdF9iYW5kd2lkdGhfICogdGltZV93aW5kb3c7CisgICAgICAgIFRpbWVEZWx0YTo6
bXMobWluX2ZlZWRiYWNrX21heF9ydHRfbXMgKyBhY2NlcHRlZF9xdWV1ZV9tc18pOworICAgIERh
dGFTaXplIGRhdGFfd2luZG93ID0gbGFzdF90YXJnZXRfcmF0ZV8gKiB0aW1lX3dpbmRvdzsKICAg
ICBpZiAoY3VycmVudF9kYXRhX3dpbmRvd18pIHsKICAgICAgIGRhdGFfd2luZG93ID0KICAgICAg
ICAgICBzdGQ6Om1heChrTWluQ3duZCwgKGRhdGFfd2luZG93ICsgY3VycmVudF9kYXRhX3dpbmRv
d18udmFsdWUoKSkgLyAyKTsKQEAgLTQ0MCwxMCArNTM5LDEzIEBAIE5ldHdvcmtDb250cm9sVXBk
YXRlIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpPblRyYW5zcG9ydFBhY2tldHNGZWVkYmFjaygK
ICAgICAgIGRhdGFfd2luZG93ID0gc3RkOjptYXgoa01pbkN3bmQsIGRhdGFfd2luZG93KTsKICAg
ICB9CiAgICAgY3VycmVudF9kYXRhX3dpbmRvd18gPSBkYXRhX3dpbmRvdzsKLSAgICBSVENfTE9H
KExTX0lORk8pIDw8ICJGZWVkYmFjayBydHQ6ICIgPDwgKm1pbl9mZWVkYmFja19tYXhfcnR0X21z
Ci0gICAgICAgICAgICAgICAgICAgICA8PCAiIEJpdHJhdGU6ICIgPDwgbGFzdF9iYW5kd2lkdGhf
LmJwcygpOwogICB9Ci0gIHVwZGF0ZS5jb25nZXN0aW9uX3dpbmRvdyA9IGN1cnJlbnRfZGF0YV93
aW5kb3dfOworICBpZiAoY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8gJiYg
Y3VycmVudF9kYXRhX3dpbmRvd18pIHsKKyAgICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19j
b250cm9sbGVyXy0+U2V0RGF0YVdpbmRvdygKKyAgICAgICAgKmN1cnJlbnRfZGF0YV93aW5kb3df
KTsKKyAgfSBlbHNlIHsKKyAgICB1cGRhdGUuY29uZ2VzdGlvbl93aW5kb3cgPSBjdXJyZW50X2Rh
dGFfd2luZG93XzsKKyAgfQogCiAgIHJldHVybiB1cGRhdGU7CiB9CkBAIC00NjAsNyArNTYyLDcg
QEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXI6OkdldE5ldHdv
cmtTdGF0ZSgKICAgICAgIGxhc3RfZXN0aW1hdGVkX2ZyYWN0aW9uX2xvc3NfIC8gMjU1LjA7CiAg
IHVwZGF0ZS50YXJnZXRfcmF0ZS0+bmV0d29ya19lc3RpbWF0ZS5yb3VuZF90cmlwX3RpbWUgPSBy
dHQ7CiAgIHVwZGF0ZS50YXJnZXRfcmF0ZS0+bmV0d29ya19lc3RpbWF0ZS5id2VfcGVyaW9kID0K
LSAgICAgIFRpbWVEZWx0YTo6bXMoZGVsYXlfYmFzZWRfYndlXy0+R2V0RXhwZWN0ZWRCd2VQZXJp
b2RNcygpKTsKKyAgICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPkdldEV4cGVjdGVkQndlUGVyaW9kKCk7
CiAgIHVwZGF0ZS50YXJnZXRfcmF0ZS0+YXRfdGltZSA9IGF0X3RpbWU7CiAgIHVwZGF0ZS50YXJn
ZXRfcmF0ZS0+dGFyZ2V0X3JhdGUgPSBiYW5kd2lkdGg7CiAgIHVwZGF0ZS5wYWNlcl9jb25maWcg
PSBHZXRQYWNpbmdSYXRlcyhhdF90aW1lKTsKQEAgLTQ5NiwyNyArNTk4LDM4IEBAIHZvaWQgR29v
Z0NjTmV0d29ya0NvbnRyb2xsZXI6Ok1heWJlVHJpZ2dlck9uTmV0d29ya0NoYW5nZWQoCiAKICAg
ICBhbHJfZGV0ZWN0b3JfLT5TZXRFc3RpbWF0ZWRCaXRyYXRlKGVzdGltYXRlZF9iaXRyYXRlX2Jw
cyk7CiAKLSAgICBEYXRhUmF0ZSBiYW5kd2lkdGggPSBEYXRhUmF0ZTo6YnBzKGVzdGltYXRlZF9i
aXRyYXRlX2Jwcyk7Ci0gICAgbGFzdF9iYW5kd2lkdGhfID0gYmFuZHdpZHRoOworICAgIGxhc3Rf
dGFyZ2V0X3JhdGVfID0gRGF0YVJhdGU6OmJwcyhlc3RpbWF0ZWRfYml0cmF0ZV9icHMpOworICAg
IERhdGFSYXRlIGJhbmR3aWR0aCA9IHVzZV9zdGFibGVfYmFuZHdpZHRoX2VzdGltYXRlXworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/IGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+R2V0RXN0
aW1hdGVkTGlua0NhcGFjaXR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYXN0
X3RhcmdldF9yYXRlXzsKIAotICAgIFRpbWVEZWx0YSBid2VfcGVyaW9kID0KLSAgICAgICAgVGlt
ZURlbHRhOjptcyhkZWxheV9iYXNlZF9id2VfLT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZE1zKCkpOwor
ICAgIFRpbWVEZWx0YSBid2VfcGVyaW9kID0gZGVsYXlfYmFzZWRfYndlXy0+R2V0RXhwZWN0ZWRC
d2VQZXJpb2QoKTsKIAotICAgIFRhcmdldFRyYW5zZmVyUmF0ZSB0YXJnZXRfcmF0ZTsKLSAgICB0
YXJnZXRfcmF0ZS5hdF90aW1lID0gYXRfdGltZTsKICAgICAvLyBTZXQgdGhlIHRhcmdldCByYXRl
IHRvIHRoZSBmdWxsIGVzdGltYXRlZCBiYW5kd2lkdGggc2luY2UgdGhlIGVzdGltYXRpb24KICAg
ICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMgaW5jbHVkZXMgdGFyZ2V0IHJhdGUgY29uc3RyYWludHMu
Ci0gICAgdGFyZ2V0X3JhdGUudGFyZ2V0X3JhdGUgPSBiYW5kd2lkdGg7CisgICAgRGF0YVJhdGUg
dGFyZ2V0X3JhdGUgPSBsYXN0X3RhcmdldF9yYXRlXzsKKyAgICBpZiAoY29uZ2VzdGlvbl93aW5k
b3dfcHVzaGJhY2tfY29udHJvbGxlcl8pIHsKKyAgICAgIGludDY0X3QgcHVzaGJhY2tfcmF0ZSA9
CisgICAgICAgICAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8tPlVwZGF0
ZVRhcmdldEJpdHJhdGUoCisgICAgICAgICAgICAgIHRhcmdldF9yYXRlLmJwcygpKTsKKyAgICAg
IHB1c2hiYWNrX3JhdGUgPSBzdGQ6Om1heDxpbnQ2NF90PihiYW5kd2lkdGhfZXN0aW1hdGlvbl8t
PkdldE1pbkJpdHJhdGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoYmFja19yYXRlKTsKKyAgICAgIHRhcmdldF9yYXRlID0gRGF0YVJhdGU6OmJwcyhwdXNo
YmFja19yYXRlKTsKKyAgICB9CisKKyAgICBUYXJnZXRUcmFuc2ZlclJhdGUgdGFyZ2V0X3JhdGVf
bXNnOworICAgIHRhcmdldF9yYXRlX21zZy5hdF90aW1lID0gYXRfdGltZTsKKyAgICB0YXJnZXRf
cmF0ZV9tc2cudGFyZ2V0X3JhdGUgPSB0YXJnZXRfcmF0ZTsKKyAgICB0YXJnZXRfcmF0ZV9tc2cu
bmV0d29ya19lc3RpbWF0ZS5hdF90aW1lID0gYXRfdGltZTsKKyAgICB0YXJnZXRfcmF0ZV9tc2cu
bmV0d29ya19lc3RpbWF0ZS5yb3VuZF90cmlwX3RpbWUgPSBUaW1lRGVsdGE6Om1zKHJ0dF9tcyk7
CisgICAgdGFyZ2V0X3JhdGVfbXNnLm5ldHdvcmtfZXN0aW1hdGUuYmFuZHdpZHRoID0gYmFuZHdp
ZHRoOworICAgIHRhcmdldF9yYXRlX21zZy5uZXR3b3JrX2VzdGltYXRlLmxvc3NfcmF0ZV9yYXRp
byA9IGZyYWN0aW9uX2xvc3MgLyAyNTUuMGY7CisgICAgdGFyZ2V0X3JhdGVfbXNnLm5ldHdvcmtf
ZXN0aW1hdGUuYndlX3BlcmlvZCA9IGJ3ZV9wZXJpb2Q7CiAKLSAgICB0YXJnZXRfcmF0ZS5uZXR3
b3JrX2VzdGltYXRlLmF0X3RpbWUgPSBhdF90aW1lOwotICAgIHRhcmdldF9yYXRlLm5ldHdvcmtf
ZXN0aW1hdGUucm91bmRfdHJpcF90aW1lID0gVGltZURlbHRhOjptcyhydHRfbXMpOwotICAgIHRh
cmdldF9yYXRlLm5ldHdvcmtfZXN0aW1hdGUuYmFuZHdpZHRoID0gYmFuZHdpZHRoOwotICAgIHRh
cmdldF9yYXRlLm5ldHdvcmtfZXN0aW1hdGUubG9zc19yYXRlX3JhdGlvID0gZnJhY3Rpb25fbG9z
cyAvIDI1NS4wZjsKLSAgICB0YXJnZXRfcmF0ZS5uZXR3b3JrX2VzdGltYXRlLmJ3ZV9wZXJpb2Qg
PSBid2VfcGVyaW9kOwotICAgIHVwZGF0ZS0+dGFyZ2V0X3JhdGUgPSB0YXJnZXRfcmF0ZTsKKyAg
ICB1cGRhdGUtPnRhcmdldF9yYXRlID0gdGFyZ2V0X3JhdGVfbXNnOwogCi0gICAgYXV0byBwcm9i
ZXMgPQotICAgICAgICBwcm9iZV9jb250cm9sbGVyXy0+U2V0RXN0aW1hdGVkQml0cmF0ZShiYW5k
d2lkdGguYnBzKCksIGF0X3RpbWUubXMoKSk7CisgICAgYXV0byBwcm9iZXMgPSBwcm9iZV9jb250
cm9sbGVyXy0+U2V0RXN0aW1hdGVkQml0cmF0ZSgKKyAgICAgICAgbGFzdF90YXJnZXRfcmF0ZV8u
YnBzKCksIGF0X3RpbWUubXMoKSk7CiAgICAgdXBkYXRlLT5wcm9iZV9jbHVzdGVyX2NvbmZpZ3Mu
aW5zZXJ0KHVwZGF0ZS0+cHJvYmVfY2x1c3Rlcl9jb25maWdzLmVuZCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9iZXMuYmVnaW4oKSwgcHJvYmVzLmVuZCgp
KTsKICAgICB1cGRhdGUtPnBhY2VyX2NvbmZpZyA9IEdldFBhY2luZ1JhdGVzKGF0X3RpbWUpOwpA
QCAtNTI1LDggKzYzOCw4IEBAIHZvaWQgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXI6Ok1heWJlVHJp
Z2dlck9uTmV0d29ya0NoYW5nZWQoCiAKIFBhY2VyQ29uZmlnIEdvb2dDY05ldHdvcmtDb250cm9s
bGVyOjpHZXRQYWNpbmdSYXRlcyhUaW1lc3RhbXAgYXRfdGltZSkgY29uc3QgewogICBEYXRhUmF0
ZSBwYWNpbmdfcmF0ZSA9Ci0gICAgICBzdGQ6Om1heChtaW5fcGFjaW5nX3JhdGVfLCBsYXN0X2Jh
bmR3aWR0aF8pICogcGFjaW5nX2ZhY3Rvcl87Ci0gIERhdGFSYXRlIHBhZGRpbmdfcmF0ZSA9IHN0
ZDo6bWluKG1heF9wYWRkaW5nX3JhdGVfLCBsYXN0X2JhbmR3aWR0aF8pOworICAgICAgc3RkOjpt
YXgobWluX3BhY2luZ19yYXRlXywgbGFzdF90YXJnZXRfcmF0ZV8pICogcGFjaW5nX2ZhY3Rvcl87
CisgIERhdGFSYXRlIHBhZGRpbmdfcmF0ZSA9IHN0ZDo6bWluKG1heF9wYWRkaW5nX3JhdGVfLCBs
YXN0X3RhcmdldF9yYXRlXyk7CiAgIFBhY2VyQ29uZmlnIG1zZzsKICAgbXNnLmF0X3RpbWUgPSBh
dF90aW1lOwogICBtc2cudGltZV93aW5kb3cgPSBUaW1lRGVsdGE6OnNlY29uZHMoMSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sLmgKaW5kZXgg
ZjdlZmRhMzk2Mjc3ZTRlNjMzYzNkYTFmODA1MDllY2FjOWJlOWY0Ny4uYTYyZjU5YmI0NGJjMGUw
ZTVjM2I4YTEyYWIyNDRlMDUwOThiNDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2df
Y2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUg
Im1vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlv
bi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWNr
bm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNr
X2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvcHJvYmVfY29udHJvbGxlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKQEAgLTYzLDI0ICs2NCwzMSBAQCBjbGFzcyBHb29nQ2NOZXR3
b3JrQ29udHJvbGxlciA6IHB1YmxpYyBOZXR3b3JrQ29udHJvbGxlckludGVyZmFjZSB7CiAKICAg
UnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187CiAgIGNvbnN0IGJvb2wgcGFja2V0X2ZlZWRi
YWNrX29ubHlfOworICBGaWVsZFRyaWFsRmxhZyBzYWZlX3Jlc2V0X29uX3JvdXRlX2NoYW5nZV87
CisgIEZpZWxkVHJpYWxGbGFnIHNhZmVfcmVzZXRfYWNrbm93bGVkZ2VkX3JhdGVfOworICBjb25z
dCBib29sIHVzZV9zdGFibGVfYmFuZHdpZHRoX2VzdGltYXRlXzsKIAogICBjb25zdCBzdGQ6OnVu
aXF1ZV9wdHI8UHJvYmVDb250cm9sbGVyPiBwcm9iZV9jb250cm9sbGVyXzsKKyAgY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI+CisgICAgICBj
b25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXzsKIAogICBzdGQ6OnVuaXF1ZV9w
dHI8U2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uPiBiYW5kd2lkdGhfZXN0aW1hdGlvbl87CiAg
IHN0ZDo6dW5pcXVlX3B0cjxBbHJEZXRlY3Rvcj4gYWxyX2RldGVjdG9yXzsKKyAgc3RkOjp1bmlx
dWVfcHRyPFByb2JlQml0cmF0ZUVzdGltYXRvcj4gcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfOwog
ICBzdGQ6OnVuaXF1ZV9wdHI8RGVsYXlCYXNlZEJ3ZT4gZGVsYXlfYmFzZWRfYndlXzsKICAgc3Rk
Ojp1bmlxdWVfcHRyPEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I+IGFja25vd2xlZGdlZF9i
aXRyYXRlX2VzdGltYXRvcl87CiAKICAgYWJzbDo6b3B0aW9uYWw8TmV0d29ya0NvbnRyb2xsZXJD
b25maWc+IGluaXRpYWxfY29uZmlnXzsKIAorICBib29sIGZpcnN0X3BhY2tldF9zZW50XyA9IGZh
bHNlOworCiAgIFRpbWVzdGFtcCBuZXh0X2xvc3NfdXBkYXRlXyA9IFRpbWVzdGFtcDo6TWludXNJ
bmZpbml0eSgpOwogICBpbnQgbG9zdF9wYWNrZXRzX3NpbmNlX2xhc3RfbG9zc191cGRhdGVfID0g
MDsKICAgaW50IGV4cGVjdGVkX3BhY2tldHNfc2luY2VfbGFzdF9sb3NzX3VwZGF0ZV8gPSAwOwog
CiAgIHN0ZDo6ZGVxdWU8aW50NjRfdD4gZmVlZGJhY2tfbWF4X3J0dHNfOwogCi0gIERhdGFSYXRl
IGxhc3RfYmFuZHdpZHRoXzsKLSAgYWJzbDo6b3B0aW9uYWw8VGFyZ2V0VHJhbnNmZXJSYXRlPiBs
YXN0X3RhcmdldF9yYXRlXzsKKyAgRGF0YVJhdGUgbGFzdF90YXJnZXRfcmF0ZV87CiAKICAgaW50
MzJfdCBsYXN0X2VzdGltYXRlZF9iaXRyYXRlX2Jwc18gPSAwOwogICB1aW50OF90IGxhc3RfZXN0
aW1hdGVkX2ZyYWN0aW9uX2xvc3NfID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dv
b2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfc2xvd3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sX3Nsb3d0ZXN0LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNmYTBkMWMwOTZkZGEzZjZhMzVhNmY4YzRhYTYwYjNlZDViY2VjZTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sX3Nsb3d0
ZXN0LmNjCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1
ZGUgImFwaS90cmFuc3BvcnQvZ29vZ19jY19mYWN0b3J5LmgiCisjaW5jbHVkZSAidGVzdC9maWVs
ZF90cmlhbC5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0L3NjZW5h
cmlvL3NjZW5hcmlvLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3Qgewor
CitURVNUKEdvb2dDY05ldHdvcmtDb250cm9sbGVyVGVzdCwgTWFpbnRhaW5zTG93UmF0ZUluU2Fm
ZVJlc2V0VHJpYWwpIHsKKyAgY29uc3QgRGF0YVJhdGUga0xpbmtDYXBhY2l0eSA9IERhdGFSYXRl
OjprYnBzKDIwMCk7CisgIGNvbnN0IERhdGFSYXRlIGtTdGFydFJhdGUgPSBEYXRhUmF0ZTo6a2Jw
cygzMDApOworCisgIFNjb3BlZEZpZWxkVHJpYWxzIHRyaWFsKCJXZWJSVEMtQndlLVNhZmVSZXNl
dE9uUm91dGVDaGFuZ2UvRW5hYmxlZC8iKTsKKyAgU2NlbmFyaW8gcygiZ29vZ2NjX3VuaXQvc2Fm
ZV9yZXNldF9sb3ciLCB0cnVlKTsKKyAgYXV0byogc2VuZF9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRp
b25Ob2RlKFsmXShOZXR3b3JrTm9kZUNvbmZpZyogYykgeworICAgIGMtPnNpbXVsYXRpb24uYmFu
ZHdpZHRoID0ga0xpbmtDYXBhY2l0eTsKKyAgICBjLT5zaW11bGF0aW9uLmRlbGF5ID0gVGltZURl
bHRhOjptcygxMCk7CisgIH0pOworICAvLyBUT0RPKHNydGUpOiByZXBsYWNlIHdpdGggU2ltdWxh
dGVkVGltZUNsaWVudCB3aGVuIGl0IHN1cHBvcnRzIHByb2JpbmcuCisgIGF1dG8qIGNsaWVudCA9
IHMuQ3JlYXRlQ2xpZW50KCJzZW5kIiwgWyZdKENhbGxDbGllbnRDb25maWcqIGMpIHsKKyAgICBj
LT50cmFuc3BvcnQuY2MgPSBUcmFuc3BvcnRDb250cm9sbGVyQ29uZmlnOjpDb25nZXN0aW9uQ29u
dHJvbGxlcjo6a0dvb2dDYzsKKyAgICBjLT50cmFuc3BvcnQucmF0ZXMuc3RhcnRfcmF0ZSA9IGtT
dGFydFJhdGU7CisgIH0pOworICBhdXRvKiByb3V0ZSA9IHMuQ3JlYXRlUm91dGVzKGNsaWVudCwg
e3NlbmRfbmV0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLkNyZWF0ZUNsaWVu
dCgicmV0dXJuIiwgQ2FsbENsaWVudENvbmZpZygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7cy5DcmVhdGVTaW11bGF0aW9uTm9kZShOZXR3b3JrTm9kZUNvbmZpZygpKX0pOwor
ICBzLkNyZWF0ZVZpZGVvU3RyZWFtKHJvdXRlLT5mb3J3YXJkKCksIFZpZGVvU3RyZWFtQ29uZmln
KCkpOworICAvLyBUcmlnZ2VyIHJlcm91dGUgbWVzc2FnZSwgYnV0IGtlZXAgdHJhbnNwb3J0IHVu
Y2hhbmdlZC4KKyAgcy5DaGFuZ2VSb3V0ZShyb3V0ZS0+Zm9yd2FyZCgpLCB7c2VuZF9uZXR9KTsK
KworICAvLyBBbGxvdyB0aGUgY29udHJvbGxlciB0byBzdGFiaWxpemUuCisgIHMuUnVuRm9yKFRp
bWVEZWx0YTo6bXMoNTAwKSk7CisgIEVYUEVDVF9ORUFSKGNsaWVudC0+c2VuZF9iYW5kd2lkdGgo
KS5rYnBzKCksIGtMaW5rQ2FwYWNpdHkua2JwcygpLCA1MCk7CisgIHMuQ2hhbmdlUm91dGUocm91
dGUtPmZvcndhcmQoKSwge3NlbmRfbmV0fSk7CisgIC8vIEFsbG93IG5ldyBzZXR0aW5ncyB0byBw
cm9wYWdhdGUuCisgIHMuUnVuRm9yKFRpbWVEZWx0YTo6bXMoMTAwKSk7CisgIC8vIFVuZGVyIHRo
ZSB0cmlhbCwgdGhlIHRhcmdldCBzaG91bGQgYmUgdW5jaGFuZ2VkIGZvciBsb3cgcmF0ZXMuCisg
IEVYUEVDVF9ORUFSKGNsaWVudC0+c2VuZF9iYW5kd2lkdGgoKS5rYnBzKCksIGtMaW5rQ2FwYWNp
dHkua2JwcygpLCA1MCk7Cit9CisKK1RFU1QoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBD
dXRzSGlnaFJhdGVJblNhZmVSZXNldFRyaWFsKSB7CisgIGNvbnN0IERhdGFSYXRlIGtMaW5rQ2Fw
YWNpdHkgPSBEYXRhUmF0ZTo6a2JwcygxMDAwKTsKKyAgY29uc3QgRGF0YVJhdGUga1N0YXJ0UmF0
ZSA9IERhdGFSYXRlOjprYnBzKDMwMCk7CisKKyAgU2NvcGVkRmllbGRUcmlhbHMgdHJpYWwoIldl
YlJUQy1Cd2UtU2FmZVJlc2V0T25Sb3V0ZUNoYW5nZS9FbmFibGVkLyIpOworICBTY2VuYXJpbyBz
KCJnb29nY2NfdW5pdC9zYWZlX3Jlc2V0X2hpZ2hfY3V0IiwgdHJ1ZSk7CisgIGF1dG8gc2VuZF9u
ZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKFsmXShOZXR3b3JrTm9kZUNvbmZpZyogYykgewor
ICAgIGMtPnNpbXVsYXRpb24uYmFuZHdpZHRoID0ga0xpbmtDYXBhY2l0eTsKKyAgICBjLT5zaW11
bGF0aW9uLmRlbGF5ID0gVGltZURlbHRhOjptcyg1MCk7CisgIH0pOworICAvLyBUT0RPKHNydGUp
OiByZXBsYWNlIHdpdGggU2ltdWxhdGVkVGltZUNsaWVudCB3aGVuIGl0IHN1cHBvcnRzIHByb2Jp
bmcuCisgIGF1dG8qIGNsaWVudCA9IHMuQ3JlYXRlQ2xpZW50KCJzZW5kIiwgWyZdKENhbGxDbGll
bnRDb25maWcqIGMpIHsKKyAgICBjLT50cmFuc3BvcnQuY2MgPSBUcmFuc3BvcnRDb250cm9sbGVy
Q29uZmlnOjpDb25nZXN0aW9uQ29udHJvbGxlcjo6a0dvb2dDYzsKKyAgICBjLT50cmFuc3BvcnQu
cmF0ZXMuc3RhcnRfcmF0ZSA9IGtTdGFydFJhdGU7CisgIH0pOworICBhdXRvKiByb3V0ZSA9IHMu
Q3JlYXRlUm91dGVzKGNsaWVudCwge3NlbmRfbmV0fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzLkNyZWF0ZUNsaWVudCgicmV0dXJuIiwgQ2FsbENsaWVudENvbmZpZygpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy5DcmVhdGVTaW11bGF0aW9uTm9kZShOZXR3
b3JrTm9kZUNvbmZpZygpKX0pOworICBzLkNyZWF0ZVZpZGVvU3RyZWFtKHJvdXRlLT5mb3J3YXJk
KCksIFZpZGVvU3RyZWFtQ29uZmlnKCkpOworCisgIHMuQ2hhbmdlUm91dGUocm91dGUtPmZvcndh
cmQoKSwge3NlbmRfbmV0fSk7CisgIC8vIEFsbG93IHRoZSBjb250cm9sbGVyIHRvIHN0YWJpbGl6
ZS4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjptcyg1MDApKTsKKyAgRVhQRUNUX05FQVIoY2xpZW50
LT5zZW5kX2JhbmR3aWR0aCgpLmticHMoKSwga0xpbmtDYXBhY2l0eS5rYnBzKCksIDMwMCk7Cisg
IHMuQ2hhbmdlUm91dGUocm91dGUtPmZvcndhcmQoKSwge3NlbmRfbmV0fSk7CisgIC8vIEFsbG93
IG5ldyBzZXR0aW5ncyB0byBwcm9wYWdhdGUuCisgIHMuUnVuRm9yKFRpbWVEZWx0YTo6bXMoNTAp
KTsKKyAgLy8gVW5kZXIgdGhlIHRyaWFsLCB0aGUgdGFyZ2V0IHNob3VsZCBiZSByZXNldCBmcm9t
IGhpZ2ggdmFsdWVzLgorICBFWFBFQ1RfTkVBUihjbGllbnQtPnNlbmRfYmFuZHdpZHRoKCkua2Jw
cygpLCBrU3RhcnRSYXRlLmticHMoKSwgMzApOworfQorCisjaWZkZWYgV0VCUlRDX0xJTlVYICAv
LyBidWdzLndlYnJ0Yy5vcmcvMTAwMzYKKyNkZWZpbmUgTUFZQkVfRGV0ZWN0c0hpZ2hSYXRlSW5T
YWZlUmVzZXRUcmlhbCBcCisgIERJU0FCTEVEX0RldGVjdHNIaWdoUmF0ZUluU2FmZVJlc2V0VHJp
YWwKKyNlbHNlCisjZGVmaW5lIE1BWUJFX0RldGVjdHNIaWdoUmF0ZUluU2FmZVJlc2V0VHJpYWwg
RGV0ZWN0c0hpZ2hSYXRlSW5TYWZlUmVzZXRUcmlhbAorI2VuZGlmCitURVNUKEdvb2dDY05ldHdv
cmtDb250cm9sbGVyVGVzdCwgTUFZQkVfRGV0ZWN0c0hpZ2hSYXRlSW5TYWZlUmVzZXRUcmlhbCkg
eworICBTY29wZWRGaWVsZFRyaWFscyB0cmlhbCgiV2ViUlRDLUJ3ZS1TYWZlUmVzZXRPblJvdXRl
Q2hhbmdlL0VuYWJsZWQvIik7CisgIGNvbnN0IERhdGFSYXRlIGtJbml0aWFsTGlua0NhcGFjaXR5
ID0gRGF0YVJhdGU6OmticHMoMjAwKTsKKyAgY29uc3QgRGF0YVJhdGUga05ld0xpbmtDYXBhY2l0
eSA9IERhdGFSYXRlOjprYnBzKDgwMCk7CisgIGNvbnN0IERhdGFSYXRlIGtTdGFydFJhdGUgPSBE
YXRhUmF0ZTo6a2JwcygzMDApOworCisgIFNjZW5hcmlvIHMoImdvb2djY191bml0L3NhZmVfcmVz
ZXRfaGlnaF9kZXRlY3QiLCB0cnVlKTsKKyAgYXV0byogaW5pdGlhbF9uZXQgPSBzLkNyZWF0ZVNp
bXVsYXRpb25Ob2RlKFsmXShOZXR3b3JrTm9kZUNvbmZpZyogYykgeworICAgIGMtPnNpbXVsYXRp
b24uYmFuZHdpZHRoID0ga0luaXRpYWxMaW5rQ2FwYWNpdHk7CisgICAgYy0+c2ltdWxhdGlvbi5k
ZWxheSA9IFRpbWVEZWx0YTo6bXMoNTApOworICB9KTsKKyAgYXV0byogbmV3X25ldCA9IHMuQ3Jl
YXRlU2ltdWxhdGlvbk5vZGUoWyZdKE5ldHdvcmtOb2RlQ29uZmlnKiBjKSB7CisgICAgYy0+c2lt
dWxhdGlvbi5iYW5kd2lkdGggPSBrTmV3TGlua0NhcGFjaXR5OworICAgIGMtPnNpbXVsYXRpb24u
ZGVsYXkgPSBUaW1lRGVsdGE6Om1zKDUwKTsKKyAgfSk7CisgIC8vIFRPRE8oc3J0ZSk6IHJlcGxh
Y2Ugd2l0aCBTaW11bGF0ZWRUaW1lQ2xpZW50IHdoZW4gaXQgc3VwcG9ydHMgcHJvYmluZy4KKyAg
YXV0byogY2xpZW50ID0gcy5DcmVhdGVDbGllbnQoInNlbmQiLCBbJl0oQ2FsbENsaWVudENvbmZp
ZyogYykgeworICAgIGMtPnRyYW5zcG9ydC5jYyA9IFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWc6
OkNvbmdlc3Rpb25Db250cm9sbGVyOjprR29vZ0NjOworICAgIGMtPnRyYW5zcG9ydC5yYXRlcy5z
dGFydF9yYXRlID0ga1N0YXJ0UmF0ZTsKKyAgfSk7CisgIGF1dG8qIHJvdXRlID0gcy5DcmVhdGVS
b3V0ZXMoY2xpZW50LCB7aW5pdGlhbF9uZXR9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMuQ3JlYXRlQ2xpZW50KCJyZXR1cm4iLCBDYWxsQ2xpZW50Q29uZmlnKCkpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHtzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKE5ldHdvcmtO
b2RlQ29uZmlnKCkpfSk7CisgIHMuQ3JlYXRlVmlkZW9TdHJlYW0ocm91dGUtPmZvcndhcmQoKSwg
VmlkZW9TdHJlYW1Db25maWcoKSk7CisgIHMuQ2hhbmdlUm91dGUocm91dGUtPmZvcndhcmQoKSwg
e2luaXRpYWxfbmV0fSk7CisKKyAgLy8gQWxsb3cgdGhlIGNvbnRyb2xsZXIgdG8gc3RhYmlsaXpl
LgorICBzLlJ1bkZvcihUaW1lRGVsdGE6Om1zKDEwMDApKTsKKyAgRVhQRUNUX05FQVIoY2xpZW50
LT5zZW5kX2JhbmR3aWR0aCgpLmticHMoKSwga0luaXRpYWxMaW5rQ2FwYWNpdHkua2JwcygpLCA1
MCk7CisgIHMuQ2hhbmdlUm91dGUocm91dGUtPmZvcndhcmQoKSwge25ld19uZXR9KTsKKyAgLy8g
QWxsb3cgbmV3IHNldHRpbmdzIHRvIHByb3BhZ2F0ZS4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjpt
cygxMDApKTsKKyAgLy8gVW5kZXIgdGhlIGZpZWxkIHRyaWFsLCB0aGUgdGFyZ2V0IHJhdGUgc2hv
dWxkIGJlIHVuY2hhbmdlZCBzaW5jZSBpdCdzIGxvd2VyCisgIC8vIHRoYW4gdGhlIHN0YXJ0aW5n
IHJhdGUuCisgIEVYUEVDVF9ORUFSKGNsaWVudC0+c2VuZF9iYW5kd2lkdGgoKS5rYnBzKCksIGtJ
bml0aWFsTGlua0NhcGFjaXR5LmticHMoKSwgNTApOworICAvLyBIb3dldmVyLCBwcm9iaW5nIHNo
b3VsZCBoYXZlIG1hZGUgdXMgZGV0ZWN0IHRoZSBoaWdoZXIgcmF0ZS4KKyAgcy5SdW5Gb3IoVGlt
ZURlbHRhOjptcygyMDAwKSk7CisgIEVYUEVDVF9ORUFSKGNsaWVudC0+c2VuZF9iYW5kd2lkdGgo
KS5rYnBzKCksIGtOZXdMaW5rQ2FwYWNpdHkua2JwcygpLCAyMDApOworfQorCit9ICAvLyBuYW1l
c3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbF91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfdW5pdHRlc3QuY2MKaW5k
ZXggZTNmM2FiZjJiMTFlYmUxMTY0ZmMzZmQ2Y2FlYzQ5ZjllZjhjNGMzNy4uZmVjZDFiMzJkNDY0
YmNhYjA0YWFmMzdhY2JmMGU0OWI0MGExM2FiYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
Z29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sX3VuaXR0ZXN0LmNjCkBAIC04
LDEyICs4LDEyIEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KIAorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvZ29v
Z19jY19mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC90ZXN0L25ldHdvcmtfY29u
dHJvbF90ZXN0ZXIuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvbW9jay9tb2Nr
X3J0Y19ldmVudF9sb2cuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2luY2x1ZGUvZ29vZ19jY19mYWN0b3J5LmgiCi0jaW5jbHVkZSAidGVzdC9zY2Vu
YXJpby9zY2VuYXJpby5oIgotCisjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1
ZGUgInRlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmgiCiAK
IHVzaW5nIHRlc3Rpbmc6OkZpZWxkOwogdXNpbmcgdGVzdGluZzo6TWF0Y2hlcjsKQEAgLTg0LDkg
Kzg0LDkgQEAgY2xhc3MgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFjZWRQYWNrZXRJbmZv
IHBhY2luZ19pbmZvKSB7CiAgICAgUGFja2V0UmVzdWx0IHBhY2tldF9yZXN1bHQ7CiAgICAgcGFj
a2V0X3Jlc3VsdC5zZW50X3BhY2tldCA9IFNlbnRQYWNrZXQoKTsKLSAgICBwYWNrZXRfcmVzdWx0
LnNlbnRfcGFja2V0LT5zZW5kX3RpbWUgPSBUaW1lc3RhbXA6Om1zKHNlbmRfdGltZV9tcyk7Ci0g
ICAgcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC0+c2l6ZSA9IERhdGFTaXplOjpieXRlcyhwYXls
b2FkX3NpemUpOwotICAgIHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQtPnBhY2luZ19pbmZvID0g
cGFjaW5nX2luZm87CisgICAgcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC5zZW5kX3RpbWUgPSBU
aW1lc3RhbXA6Om1zKHNlbmRfdGltZV9tcyk7CisgICAgcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tl
dC5zaXplID0gRGF0YVNpemU6OmJ5dGVzKHBheWxvYWRfc2l6ZSk7CisgICAgcGFja2V0X3Jlc3Vs
dC5zZW50X3BhY2tldC5wYWNpbmdfaW5mbyA9IHBhY2luZ19pbmZvOwogICAgIHBhY2tldF9yZXN1
bHQucmVjZWl2ZV90aW1lID0gVGltZXN0YW1wOjptcyhhcnJpdmFsX3RpbWVfbXMpOwogICAgIHJl
dHVybiBwYWNrZXRfcmVzdWx0OwogICB9CkBAIC0xMjIsNyArMTIyLDcgQEAgY2xhc3MgR29vZ0Nj
TmV0d29ya0NvbnRyb2xsZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAg
ICAgQ3JlYXRlUmVzdWx0KGN1cnJlbnRfdGltZV8ubXMoKSArIGRlbGF5X2J1aWxkdXAsIGN1cnJl
bnRfdGltZV8ubXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAga1BheWxvYWRTaXplLCBQYWNl
ZFBhY2tldEluZm8oKSk7CiAgICAgICBkZWxheV9idWlsZHVwICs9IGRlbGF5OwotICAgICAgY29u
dHJvbGxlcl8tPk9uU2VudFBhY2tldCgqcGFja2V0LnNlbnRfcGFja2V0KTsKKyAgICAgIGNvbnRy
b2xsZXJfLT5PblNlbnRQYWNrZXQocGFja2V0LnNlbnRfcGFja2V0KTsKICAgICAgIFRyYW5zcG9y
dFBhY2tldHNGZWVkYmFjayBmZWVkYmFjazsKICAgICAgIGZlZWRiYWNrLmZlZWRiYWNrX3RpbWUg
PSBwYWNrZXQucmVjZWl2ZV90aW1lOwogICAgICAgZmVlZGJhY2sucGFja2V0X2ZlZWRiYWNrcy5w
dXNoX2JhY2socGFja2V0KTsKQEAgLTIxMywxNiArMjEzLDEzIEBAIFRFU1RfRihHb29nQ2NOZXR3
b3JrQ29udHJvbGxlclRlc3QsIExvbmdGZWVkYmFja0RlbGF5cykgewogICAgIHBhY2tldHMucHVz
aF9iYWNrKAogICAgICAgICBDcmVhdGVSZXN1bHQoaSAqIDEwMCArIDQwLCAyICogaSAqIDEwMCAr
IDQwLCAxNTAwLCBrUGFjaW5nSW5mbzEpKTsKIAorICAgIFRyYW5zcG9ydFBhY2tldHNGZWVkYmFj
ayBmZWVkYmFjazsKICAgICBmb3IgKFBhY2tldFJlc3VsdCYgcGFja2V0IDogcGFja2V0cykgewot
ICAgICAgY29udHJvbGxlcl8tPk9uU2VudFBhY2tldCgqcGFja2V0LnNlbnRfcGFja2V0KTsKLSAg
ICAgIC8vIFNpbXVsYXRlIHBhY2tldCB0aW1lb3V0Ci0gICAgICBwYWNrZXQuc2VudF9wYWNrZXQg
PSBhYnNsOjpudWxsb3B0OworICAgICAgY29udHJvbGxlcl8tPk9uU2VudFBhY2tldChwYWNrZXQu
c2VudF9wYWNrZXQpOworICAgICAgZmVlZGJhY2suc2VuZGxlc3NfYXJyaXZhbF90aW1lcy5wdXNo
X2JhY2socGFja2V0LnJlY2VpdmVfdGltZSk7CiAgICAgfQogCi0gICAgVHJhbnNwb3J0UGFja2V0
c0ZlZWRiYWNrIGZlZWRiYWNrOwogICAgIGZlZWRiYWNrLmZlZWRiYWNrX3RpbWUgPSBwYWNrZXRz
WzBdLnJlY2VpdmVfdGltZTsKLSAgICBmZWVkYmFjay5wYWNrZXRfZmVlZGJhY2tzID0gcGFja2V0
czsKLQogICAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtGZWVkYmFja1RpbWVvdXRNcyk7CiAg
ICAgU2VudFBhY2tldCBsYXRlcl9wYWNrZXQ7CiAgICAgbGF0ZXJfcGFja2V0LnNlbmRfdGltZSA9
IFRpbWVzdGFtcDo6bXMoa0ZlZWRiYWNrVGltZW91dE1zICsgaSAqIDIwMCArIDQwKTsKQEAgLTI0
Niw3ICsyNDMsNyBAQCBURVNUX0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBMb25nRmVl
ZGJhY2tEZWxheXMpIHsKICAgICBwYWNrZXRzLnB1c2hfYmFjayhDcmVhdGVSZXN1bHQoMTQwLCAy
NDAsIDE1MDAsIGtQYWNpbmdJbmZvMSkpOwogCiAgICAgZm9yIChjb25zdCBQYWNrZXRSZXN1bHQm
IHBhY2tldCA6IHBhY2tldHMpCi0gICAgICBjb250cm9sbGVyXy0+T25TZW50UGFja2V0KCpwYWNr
ZXQuc2VudF9wYWNrZXQpOworICAgICAgY29udHJvbGxlcl8tPk9uU2VudFBhY2tldChwYWNrZXQu
c2VudF9wYWNrZXQpOwogCiAgICAgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrIGZlZWRiYWNrOwog
ICAgIGZlZWRiYWNrLmZlZWRiYWNrX3RpbWUgPSBwYWNrZXRzWzBdLnJlY2VpdmVfdGltZTsKQEAg
LTMwOCw4ICszMDUsNTEgQEAgVEVTVF9GKEdvb2dDY05ldHdvcmtDb250cm9sbGVyVGVzdCwKICAg
ICAgICAgICAgICAgMjApOwogfQogCi1URVNUX0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0
LCBTY2VuYXJpb1F1aWNrVGVzdCkgewotICBTY2VuYXJpbyBzKCJnb29nY2NfdW5pdC9zY2VuYXJp
b19xdWljayIsIGZhbHNlKTsKK1RFU1RfRihHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIExp
bWl0c1RvTWluUmF0ZUlmUnR0SXNIaWdoSW5UcmlhbCkgeworICAvLyBUaGUgZmllbGQgdHJpYWwg
bGltaXRzIG1heGltdW0gUlRUIHRvIDIgc2Vjb25kcywgaGlnaGVyIFJUVCBtZWFucyB0aGF0IHRo
ZQorICAvLyBjb250cm9sbGVyIGJhY2tzIG9mZiB1bnRpbCBpdCByZWFjaGVzIHRoZSBtaW5pbXVt
IGNvbmZpZ3VyZWQgYml0cmF0ZS4gVGhpcworICAvLyBhbGxvd3MgdGhlIFJUVCB0byByZWNvdmVy
IGZhc3RlciB0aGFuIHRoZSByZWd1bGFyIGNvbnRyb2wgbWVjaGFuaXNtIHdvdWxkCisgIC8vIGFj
aGlldmUuCisgIFNjb3BlZEZpZWxkVHJpYWxzIHRyaWFsKCJXZWJSVEMtQndlLU1heFJ0dExpbWl0
L2xpbWl0OjJzLyIpOworICAvLyBJbiB0aGUgdGVzdCBjYXNlLCB3ZSBsaW1pdCB0aGUgY2FwYWNp
dHkgYW5kIGFkZCBhIGNyb3NzIHRyYWZmaWMgcGFja2V0CisgIC8vIGJ1cnN0IHRoYXQgYmxvY2tz
IG1lZGlhIGZyb20gYmVpbmcgc2VudC4gVGhpcyBjYXVzZXMgdGhlIFJUVCB0byBxdWlja2x5Cisg
IC8vIGluY3JlYXNlIGFib3ZlIHRoZSB0aHJlc2hvbGQgaW4gdGhlIHRyaWFsLgorICBjb25zdCBE
YXRhUmF0ZSBrTGlua0NhcGFjaXR5ID0gRGF0YVJhdGU6OmticHMoMTAwKTsKKyAgY29uc3QgRGF0
YVJhdGUga01pblJhdGUgPSBEYXRhUmF0ZTo6a2JwcygyMCk7CisgIGNvbnN0IFRpbWVEZWx0YSBr
QnVmZmVyQmxvYXREdXJhdGlvbiA9IFRpbWVEZWx0YTo6c2Vjb25kcygxMCk7CisgIFNjZW5hcmlv
IHMoImdvb2djY191bml0L2xpbWl0X3RyaWFsIiwgZmFsc2UpOworICBOZXR3b3JrTm9kZUNvbmZp
ZyBuZXRfY29uZjsKKyAgYXV0byBzZW5kX25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUoWz1d
KE5ldHdvcmtOb2RlQ29uZmlnKiBjKSB7CisgICAgYy0+c2ltdWxhdGlvbi5iYW5kd2lkdGggPSBr
TGlua0NhcGFjaXR5OworICAgIGMtPnNpbXVsYXRpb24uZGVsYXkgPSBUaW1lRGVsdGE6Om1zKDEw
MCk7CisgICAgYy0+dXBkYXRlX2ZyZXF1ZW5jeSA9IFRpbWVEZWx0YTo6bXMoNSk7CisgIH0pOwor
ICBhdXRvIHJldF9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKFtdKE5ldHdvcmtOb2RlQ29u
ZmlnKiBjKSB7CisgICAgYy0+c2ltdWxhdGlvbi5kZWxheSA9IFRpbWVEZWx0YTo6bXMoMTAwKTsK
KyAgICBjLT51cGRhdGVfZnJlcXVlbmN5ID0gVGltZURlbHRhOjptcyg1KTsKKyAgfSk7CisgIFNp
bXVsYXRlZFRpbWVDbGllbnRDb25maWcgY29uZmlnOworICBjb25maWcudHJhbnNwb3J0LmNjID0K
KyAgICAgIFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWc6OkNvbmdlc3Rpb25Db250cm9sbGVyOjpr
R29vZ0NjOworICBjb25maWcudHJhbnNwb3J0LnJhdGVzLm1pbl9yYXRlID0ga01pblJhdGU7Cisg
IGNvbmZpZy50cmFuc3BvcnQucmF0ZXMuc3RhcnRfcmF0ZSA9IGtMaW5rQ2FwYWNpdHk7CisgIFNp
bXVsYXRlZFRpbWVDbGllbnQqIGNsaWVudCA9IHMuQ3JlYXRlU2ltdWxhdGVkVGltZUNsaWVudCgK
KyAgICAgICJzZW5kIiwgY29uZmlnLCB7UGFja2V0U3RyZWFtQ29uZmlnKCl9LCB7c2VuZF9uZXR9
LCB7cmV0X25ldH0pOworICAvLyBSdW4gZm9yIGEgZmV3IHNlY29uZHMgdG8gYWxsb3cgdGhlIGNv
bnRyb2xsZXIgdG8gc3RhYmlsaXplLgorICBzLlJ1bkZvcihUaW1lRGVsdGE6OnNlY29uZHMoMTAp
KTsKKyAgY29uc3QgRGF0YVNpemUga0Jsb2F0UGFja2V0U2l6ZSA9IERhdGFTaXplOjpieXRlcygx
MDAwKTsKKyAgY29uc3QgaW50IGtCbG9hdFBhY2tldENvdW50ID0KKyAgICAgIHN0YXRpY19jYXN0
PGludD4oa0J1ZmZlckJsb2F0RHVyYXRpb24gKiBrTGlua0NhcGFjaXR5IC8ga0Jsb2F0UGFja2V0
U2l6ZSk7CisgIC8vIFRoaXMgd2lsbCBjYXVzZSB0aGUgUlRUIHRvIGJlIGxhcmdlIGZvciBhIHdo
aWxlLgorICBzLlRyaWdnZXJQYWNrZXRCdXJzdCh7c2VuZF9uZXR9LCBrQmxvYXRQYWNrZXRDb3Vu
dCwga0Jsb2F0UGFja2V0U2l6ZS5ieXRlcygpKTsKKyAgLy8gV2FpdCB0byBhbGxvdyB0aGUgaGln
aCBSVFQgdG8gYmUgZGV0ZWN0ZWQgYW5kIGFjdGVkIHVwb24uCisgIHMuUnVuRm9yKFRpbWVEZWx0
YTo6c2Vjb25kcyg0KSk7CisgIC8vIEJ5IG5vdyB0aGUgdGFyZ2V0IHJhdGUgc2hvdWxkIGhhdmUg
ZHJvcHBlZCB0byB0aGUgbWluaW11bSBjb25maWd1cmVkIHJhdGUuCisgIEVYUEVDVF9ORUFSKGNs
aWVudC0+dGFyZ2V0X3JhdGVfa2JwcygpLCBrTWluUmF0ZS5rYnBzKCksIDEpOworfQorCitURVNU
X0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBVcGRhdGVzVGFyZ2V0UmF0ZUJhc2VkT25M
aW5rQ2FwYWNpdHkpIHsKKyAgU2NlbmFyaW8gcygiZ29vZ2NjX3VuaXQvdGFyZ2V0X2NhcGFjaXR5
IiwgZmFsc2UpOwogICBTaW11bGF0ZWRUaW1lQ2xpZW50Q29uZmlnIGNvbmZpZzsKICAgY29uZmln
LnRyYW5zcG9ydC5jYyA9CiAgICAgICBUcmFuc3BvcnRDb250cm9sbGVyQ29uZmlnOjpDb25nZXN0
aW9uQ29udHJvbGxlcjo6a0dvb2dDY0ZlZWRiYWNrOwpAQCAtMzU5LDUgKzM5OSw2MSBAQCBURVNU
X0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBTY2VuYXJpb1F1aWNrVGVzdCkgewogICBF
WFBFQ1RfTkVBUihjbGllbnQtPnRhcmdldF9yYXRlX2ticHMoKSwgOTAsIDIwKTsKIH0KIAorVEVT
VF9GKEdvb2dDY05ldHdvcmtDb250cm9sbGVyVGVzdCwgRGVmYXVsdEVzdGltYXRlVmFyaWVzSW5T
dGVhZHlTdGF0ZSkgeworICBTY29wZWRGaWVsZFRyaWFscyB0cmlhbCgiV2ViUlRDLUJ3ZS1TdGFi
bGVCYW5kd2lkdGhFc3RpbWF0ZS9EaXNhYmxlZC8iKTsKKyAgU2NlbmFyaW8gcygiZ29vZ2NjX3Vu
aXQvbm9fc3RhYmxlX3ZhcmllcyIsIGZhbHNlKTsKKyAgU2ltdWxhdGVkVGltZUNsaWVudENvbmZp
ZyBjb25maWc7CisgIGNvbmZpZy50cmFuc3BvcnQuY2MgPQorICAgICAgVHJhbnNwb3J0Q29udHJv
bGxlckNvbmZpZzo6Q29uZ2VzdGlvbkNvbnRyb2xsZXI6OmtHb29nQ2NGZWVkYmFjazsKKyAgTmV0
d29ya05vZGVDb25maWcgbmV0X2NvbmY7CisgIG5ldF9jb25mLnNpbXVsYXRpb24uYmFuZHdpZHRo
ID0gRGF0YVJhdGU6OmticHMoNTAwKTsKKyAgbmV0X2NvbmYuc2ltdWxhdGlvbi5kZWxheSA9IFRp
bWVEZWx0YTo6bXMoMTAwKTsKKyAgbmV0X2NvbmYudXBkYXRlX2ZyZXF1ZW5jeSA9IFRpbWVEZWx0
YTo6bXMoNSk7CisgIGF1dG8gc2VuZF9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKG5ldF9j
b25mKTsKKyAgYXV0byByZXRfbmV0ID0gcy5DcmVhdGVTaW11bGF0aW9uTm9kZShuZXRfY29uZik7
CisgIFNpbXVsYXRlZFRpbWVDbGllbnQqIGNsaWVudCA9IHMuQ3JlYXRlU2ltdWxhdGVkVGltZUNs
aWVudCgKKyAgICAgICJzZW5kIiwgY29uZmlnLCB7UGFja2V0U3RyZWFtQ29uZmlnKCl9LCB7c2Vu
ZF9uZXR9LCB7cmV0X25ldH0pOworICAvLyBSdW4gZm9yIGEgd2hpbGUgdG8gYWxsb3cgdGhlIGVz
dGltYXRlIHRvIHN0YWJpbGl6ZS4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjpzZWNvbmRzKDIwKSk7
CisgIERhdGFSYXRlIG1pbl9lc3RpbWF0ZSA9IERhdGFSYXRlOjpQbHVzSW5maW5pdHkoKTsKKyAg
RGF0YVJhdGUgbWF4X2VzdGltYXRlID0gRGF0YVJhdGU6Ok1pbnVzSW5maW5pdHkoKTsKKyAgLy8g
TWVhc3VyZSB2YXJpYXRpb24gaW4gc3RlYWR5IHN0YXRlLgorICBmb3IgKGludCBpID0gMDsgaSA8
IDIwOyArK2kpIHsKKyAgICBtaW5fZXN0aW1hdGUgPSBzdGQ6Om1pbihtaW5fZXN0aW1hdGUsIGNs
aWVudC0+bGlua19jYXBhY2l0eSgpKTsKKyAgICBtYXhfZXN0aW1hdGUgPSBzdGQ6Om1heChtYXhf
ZXN0aW1hdGUsIGNsaWVudC0+bGlua19jYXBhY2l0eSgpKTsKKyAgICBzLlJ1bkZvcihUaW1lRGVs
dGE6OnNlY29uZHMoMSkpOworICB9CisgIC8vIFdlIHNob3VsZCBleHBlY3QgZHJvcHMgYnkgYXQg
bGVhc3QgMTUlIChkZWZhdWx0IGJhY2tvZmYuKQorICBFWFBFQ1RfTFQobWluX2VzdGltYXRlIC8g
bWF4X2VzdGltYXRlLCAwLjg1KTsKK30KKworVEVTVF9GKEdvb2dDY05ldHdvcmtDb250cm9sbGVy
VGVzdCwgU3RhYmxlRXN0aW1hdGVEb2VzTm90VmFyeUluU3RlYWR5U3RhdGUpIHsKKyAgU2NvcGVk
RmllbGRUcmlhbHMgdHJpYWwoIldlYlJUQy1Cd2UtU3RhYmxlQmFuZHdpZHRoRXN0aW1hdGUvRW5h
YmxlZC8iKTsKKyAgU2NlbmFyaW8gcygiZ29vZ2NjX3VuaXQvc3RhYmxlX2lzX3N0YWJsZSIsIGZh
bHNlKTsKKyAgU2ltdWxhdGVkVGltZUNsaWVudENvbmZpZyBjb25maWc7CisgIGNvbmZpZy50cmFu
c3BvcnQuY2MgPQorICAgICAgVHJhbnNwb3J0Q29udHJvbGxlckNvbmZpZzo6Q29uZ2VzdGlvbkNv
bnRyb2xsZXI6OmtHb29nQ2NGZWVkYmFjazsKKyAgTmV0d29ya05vZGVDb25maWcgbmV0X2NvbmY7
CisgIG5ldF9jb25mLnNpbXVsYXRpb24uYmFuZHdpZHRoID0gRGF0YVJhdGU6OmticHMoNTAwKTsK
KyAgbmV0X2NvbmYuc2ltdWxhdGlvbi5kZWxheSA9IFRpbWVEZWx0YTo6bXMoMTAwKTsKKyAgbmV0
X2NvbmYudXBkYXRlX2ZyZXF1ZW5jeSA9IFRpbWVEZWx0YTo6bXMoNSk7CisgIGF1dG8gc2VuZF9u
ZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKG5ldF9jb25mKTsKKyAgYXV0byByZXRfbmV0ID0g
cy5DcmVhdGVTaW11bGF0aW9uTm9kZShuZXRfY29uZik7CisgIFNpbXVsYXRlZFRpbWVDbGllbnQq
IGNsaWVudCA9IHMuQ3JlYXRlU2ltdWxhdGVkVGltZUNsaWVudCgKKyAgICAgICJzZW5kIiwgY29u
ZmlnLCB7UGFja2V0U3RyZWFtQ29uZmlnKCl9LCB7c2VuZF9uZXR9LCB7cmV0X25ldH0pOworICAv
LyBSdW4gZm9yIGEgd2hpbGUgdG8gYWxsb3cgdGhlIGVzdGltYXRlIHRvIHN0YWJpbGl6ZS4KKyAg
cy5SdW5Gb3IoVGltZURlbHRhOjpzZWNvbmRzKDIwKSk7CisgIERhdGFSYXRlIG1pbl9lc3RpbWF0
ZSA9IERhdGFSYXRlOjpQbHVzSW5maW5pdHkoKTsKKyAgRGF0YVJhdGUgbWF4X2VzdGltYXRlID0g
RGF0YVJhdGU6Ok1pbnVzSW5maW5pdHkoKTsKKyAgLy8gTWVhc3VyZSB2YXJpYXRpb24gaW4gc3Rl
YWR5IHN0YXRlLgorICBmb3IgKGludCBpID0gMDsgaSA8IDIwOyArK2kpIHsKKyAgICBtaW5fZXN0
aW1hdGUgPSBzdGQ6Om1pbihtaW5fZXN0aW1hdGUsIGNsaWVudC0+bGlua19jYXBhY2l0eSgpKTsK
KyAgICBtYXhfZXN0aW1hdGUgPSBzdGQ6Om1heChtYXhfZXN0aW1hdGUsIGNsaWVudC0+bGlua19j
YXBhY2l0eSgpKTsKKyAgICBzLlJ1bkZvcihUaW1lRGVsdGE6OnNlY29uZHMoMSkpOworICB9Cisg
IC8vIFdlIGV4cGVjdCBubyB2YXJpYXRpb24gdW5kZXIgdGhlIHRyaWFsIGluIHN0ZWFkeSBzdGF0
ZS4KKyAgRVhQRUNUX0dUKG1pbl9lc3RpbWF0ZSAvIG1heF9lc3RpbWF0ZSwgMC45NSk7Cit9CisK
IH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2luY2x1ZGUvZ29vZ19jY19mYWN0b3J5LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2luY2x1ZGUvZ29vZ19jY19mYWN0b3J5LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDBkOTFmZmY2NWZhOTZkOGE1Y2FjMjUxZmFiZTgwMzI2NjA0NjRh
ZDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9pbmNsdWRlL2dvb2dfY2NfZmFjdG9yeS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBw
cm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxF
U19DT05HRVNUSU9OX0NPTlRST0xMRVJfR09PR19DQ19JTkNMVURFX0dPT0dfQ0NfRkFDVE9SWV9I
XwotI2RlZmluZSBNT0RVTEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9HT09HX0NDX0lOQ0xVREVf
R09PR19DQ19GQUNUT1JZX0hfCi0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaW5jbHVkZSAiYXBpL3Ry
YW5zcG9ydC9uZXR3b3JrX2NvbnRyb2wuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBD
bG9jazsKLWNsYXNzIFJ0Y0V2ZW50TG9nOwotCi1jbGFzcyBHb29nQ2NOZXR3b3JrQ29udHJvbGxl
ckZhY3RvcnkKLSAgICA6IHB1YmxpYyBOZXR3b3JrQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2Ug
ewotIHB1YmxpYzoKLSAgZXhwbGljaXQgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KFJ0
Y0V2ZW50TG9nKik7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckludGVyZmFj
ZT4gQ3JlYXRlKAotICAgICAgTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSBvdmVycmlk
ZTsKLSAgVGltZURlbHRhIEdldFByb2Nlc3NJbnRlcnZhbCgpIGNvbnN0IG92ZXJyaWRlOwotCi0g
cHJpdmF0ZToKLSAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187Ci19OwotCi0vLyBGYWN0
b3J5IHRvIGNyZWF0ZSBwYWNrZXQgZmVlZGJhY2sgb25seSBHb29nQ0MsIHRoaXMgY2FuIGJlIHVz
ZWQgZm9yCi0vLyBjb25uZWN0aW9ucyBwcm92aWRpbmcgcGFja2V0IHJlY2VpdmUgdGltZSBmZWVk
YmFjayBidXQgbm8gb3RoZXIgcmVwb3J0cy4KLWNsYXNzIEdvb2dDY0ZlZWRiYWNrTmV0d29ya0Nv
bnRyb2xsZXJGYWN0b3J5Ci0gICAgOiBwdWJsaWMgTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5SW50
ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRy
b2xsZXJGYWN0b3J5KFJ0Y0V2ZW50TG9nKik7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29u
dHJvbGxlckludGVyZmFjZT4gQ3JlYXRlKAotICAgICAgTmV0d29ya0NvbnRyb2xsZXJDb25maWcg
Y29uZmlnKSBvdmVycmlkZTsKLSAgVGltZURlbHRhIEdldFByb2Nlc3NJbnRlcnZhbCgpIGNvbnN0
IG92ZXJyaWRlOwotCi0gcHJpdmF0ZToKLSAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187
Ci19OwotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE1PRFVMRVNfQ09OR0VT
VElPTl9DT05UUk9MTEVSX0dPT0dfQ0NfSU5DTFVERV9HT09HX0NDX0ZBQ1RPUllfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvbWVkaWFuX3Nsb3BlX2VzdGltYXRvci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL2dvb2dfY2MvbWVkaWFuX3Nsb3BlX2VzdGltYXRvci5jYwppbmRleCAw
YWQ3NzI4MzAyZWMyMDg3OGY5YWE1MDRhNWJlY2Q4YzU5YmU2MTJmLi40NWQyZmUzMjExNGVkZWE1
OWZlNDFmZWRiNzhjMmQ5OWQ3YWVhZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL21lZGlhbl9zbG9wZV9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9tZWRpYW5fc2xvcGVfZXN0aW1hdG9yLmNjCkBAIC0xMCwxMiArMTAsMTAgQEAKIAogI2luY2x1
ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvbWVkaWFuX3Nsb3BlX2Vz
dGltYXRvci5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAot
I2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2Rl
ZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90ZXN0
L2J3ZV90ZXN0X2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1hdG9yLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9iaXRyYXRlX2VzdGltYXRvci5jYwppbmRleCAw
ZjBkMTdlYTQ4ZGIwNjIyMWU0Y2JkZjE3ZjUzYjc3ZWYzY2I1NzUzLi43YmEyZmI1YTEzYmM5NGQy
ODRlZTY1N2VjZTQ4MjgwMTg4NmRiN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2df
Y2MvcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuY2MKQEAgLTE3MCwxMSArMTcwLDEzIEBAIGludCBQ
cm9iZUJpdHJhdGVFc3RpbWF0b3I6OkhhbmRsZVByb2JlQW5kRXN0aW1hdGVCaXRyYXRlKAogICBy
ZXR1cm4gKmVzdGltYXRlZF9iaXRyYXRlX2Jwc187CiB9CiAKLWFic2w6Om9wdGlvbmFsPGludD4K
LVByb2JlQml0cmF0ZUVzdGltYXRvcjo6RmV0Y2hBbmRSZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRl
QnBzKCkgeworYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+CitQcm9iZUJpdHJhdGVFc3RpbWF0b3I6
OkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZSgpIHsKICAgYWJzbDo6b3B0aW9uYWw8
aW50PiBlc3RpbWF0ZWRfYml0cmF0ZV9icHMgPSBlc3RpbWF0ZWRfYml0cmF0ZV9icHNfOwogICBl
c3RpbWF0ZWRfYml0cmF0ZV9icHNfLnJlc2V0KCk7Ci0gIHJldHVybiBlc3RpbWF0ZWRfYml0cmF0
ZV9icHM7CisgIGlmIChlc3RpbWF0ZWRfYml0cmF0ZV9icHMpCisgICAgcmV0dXJuIERhdGFSYXRl
OjpicHMoKmVzdGltYXRlZF9iaXRyYXRlX2Jwcyk7CisgIHJldHVybiBhYnNsOjpudWxsb3B0Owog
fQogCiB2b2lkIFByb2JlQml0cmF0ZUVzdGltYXRvcjo6RXJhc2VPbGRDbHVzdGVycyhpbnQ2NF90
IHRpbWVzdGFtcF9tcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9i
ZV9iaXRyYXRlX2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9iaXRy
YXRlX2VzdGltYXRvci5oCmluZGV4IGVkOTI1MjEzN2ZlYTFhZmUzZmNmYjZhNzdjYTRhNDQxNTg4
YjZiZWEuLmFlODNlZDM4MGZlYjg3NWM2Yzk0ZWE0MjVhYjk2ZDhhZWNkOTk4YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1hdG9yLmgKQEAgLTI4
LDcgKzI4LDcgQEAgY2xhc3MgUHJvYmVCaXRyYXRlRXN0aW1hdG9yIHsKICAgLy8gUmV0dXJucyB0
aGUgZXN0aW1hdGVkIGJpdHJhdGUgaWYgdGhlIHByb2JlIGNvbXBsZXRlcyBhIHZhbGlkIGNsdXN0
ZXIuCiAgIGludCBIYW5kbGVQcm9iZUFuZEVzdGltYXRlQml0cmF0ZShjb25zdCBQYWNrZXRGZWVk
YmFjayYgcGFja2V0X2ZlZWRiYWNrKTsKIAotICBhYnNsOjpvcHRpb25hbDxpbnQ+IEZldGNoQW5k
UmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZUJwcygpOworICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0
ZT4gRmV0Y2hBbmRSZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRlKCk7CiAKICBwcml2YXRlOgogICBz
dHJ1Y3QgQWdncmVnYXRlZENsdXN0ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy9wcm9iZV9iaXRyYXRlX2VzdGltYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKaW5kZXggZjhhNDBm
ODM5ZjM4NWEzMDA1YjRhNjY1NzcyMjkyZDAyMGFiODU1NS4uZmNmNTU1OTI0NTM3YWI4NmFkOTNk
ZTM0ODMxZWJiNjZkODJjMDM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9w
cm9iZV9iaXRyYXRlX2VzdGltYXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCkBAIC0yMDIsNyArMjAy
LDcgQEAgVEVTVF9GKFRlc3RQcm9iZUJpdHJhdGVFc3RpbWF0b3IsIElnbm9yZVNpemVGaXJzdFJl
Y2VpdmVQYWNrZXQpIHsKIH0KIAogVEVTVF9GKFRlc3RQcm9iZUJpdHJhdGVFc3RpbWF0b3IsIE5v
TGFzdEVzdGltYXRlZEJpdHJhdGVCcHMpIHsKLSAgRVhQRUNUX0ZBTFNFKHByb2JlX2JpdHJhdGVf
ZXN0aW1hdG9yXy5GZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGVCcHMoKSk7CisgIEVY
UEVDVF9GQUxTRShwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8uRmV0Y2hBbmRSZXNldExhc3RFc3Rp
bWF0ZWRCaXRyYXRlKCkpOwogfQogCiBURVNUX0YoVGVzdFByb2JlQml0cmF0ZUVzdGltYXRvciwg
RmV0Y2hMYXN0RXN0aW1hdGVkQml0cmF0ZUJwcykgewpAQCAtMjExLDExICsyMTEsMTEgQEAgVEVT
VF9GKFRlc3RQcm9iZUJpdHJhdGVFc3RpbWF0b3IsIEZldGNoTGFzdEVzdGltYXRlZEJpdHJhdGVC
cHMpIHsKICAgQWRkUGFja2V0RmVlZGJhY2soMCwgMTAwMCwgMjAsIDMwKTsKICAgQWRkUGFja2V0
RmVlZGJhY2soMCwgMTAwMCwgMzAsIDQwKTsKIAotICBhdXRvIGVzdGltYXRlZF9iaXRyYXRlX2Jw
cyA9Ci0gICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8uRmV0Y2hBbmRSZXNldExhc3RFc3Rp
bWF0ZWRCaXRyYXRlQnBzKCk7Ci0gIEVYUEVDVF9UUlVFKGVzdGltYXRlZF9iaXRyYXRlX2Jwcyk7
Ci0gIEVYUEVDVF9ORUFSKCplc3RpbWF0ZWRfYml0cmF0ZV9icHMsIDgwMDAwMCwgMTApOwotICBF
WFBFQ1RfRkFMU0UocHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfLkZldGNoQW5kUmVzZXRMYXN0RXN0
aW1hdGVkQml0cmF0ZUJwcygpKTsKKyAgYXV0byBlc3RpbWF0ZWRfYml0cmF0ZSA9CisgICAgICBw
cm9iZV9iaXRyYXRlX2VzdGltYXRvcl8uRmV0Y2hBbmRSZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRl
KCk7CisgIEVYUEVDVF9UUlVFKGVzdGltYXRlZF9iaXRyYXRlKTsKKyAgRVhQRUNUX05FQVIoZXN0
aW1hdGVkX2JpdHJhdGUtPmJwcygpLCA4MDAwMDAsIDEwKTsKKyAgRVhQRUNUX0ZBTFNFKHByb2Jl
X2JpdHJhdGVfZXN0aW1hdG9yXy5GZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGUoKSk7
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvcHJvYmVfY29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJv
YmVfY29udHJvbGxlci5jYwppbmRleCBjMmE4ZTAyM2Q3ZDQwZWI3OGVlNTJjOTI0M2I1MWY2MDdj
ZTRiOTA0Li43YmJlOGU3MTM4YTRlNjI3Njc5ZjZjNDg1NmIyZTg0MWUzN2YyZDdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2NvbnRyb2xsZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9jb250cm9sbGVyLmNjCkBAIC0xNDYsNiArMTQ2LDcg
QEAgc3RkOjp2ZWN0b3I8UHJvYmVDbHVzdGVyQ29uZmlnPiBQcm9iZUNvbnRyb2xsZXI6Ok9uTWF4
VG90YWxBbGxvY2F0ZWRCaXRyYXRlKAogICAgIG1heF90b3RhbF9hbGxvY2F0ZWRfYml0cmF0ZV8g
PSBtYXhfdG90YWxfYWxsb2NhdGVkX2JpdHJhdGU7CiAgICAgcmV0dXJuIEluaXRpYXRlUHJvYmlu
ZyhhdF90aW1lX21zLCB7bWF4X3RvdGFsX2FsbG9jYXRlZF9iaXRyYXRlfSwgZmFsc2UpOwogICB9
CisgIG1heF90b3RhbF9hbGxvY2F0ZWRfYml0cmF0ZV8gPSBtYXhfdG90YWxfYWxsb2NhdGVkX2Jp
dHJhdGU7CiAgIHJldHVybiBzdGQ6OnZlY3RvcjxQcm9iZUNsdXN0ZXJDb25maWc+KCk7CiB9CiAK
QEAgLTI2MCw2ICsyNjEsMTYgQEAgc3RkOjp2ZWN0b3I8UHJvYmVDbHVzdGVyQ29uZmlnPiBQcm9i
ZUNvbnRyb2xsZXI6OlJlcXVlc3RQcm9iZSgKICAgcmV0dXJuIHN0ZDo6dmVjdG9yPFByb2JlQ2x1
c3RlckNvbmZpZz4oKTsKIH0KIAorc3RkOjp2ZWN0b3I8UHJvYmVDbHVzdGVyQ29uZmlnPiBQcm9i
ZUNvbnRyb2xsZXI6OkluaXRpYXRlQ2FwYWNpdHlQcm9iaW5nKAorICAgIGludDY0X3QgYml0cmF0
ZV9icHMsCisgICAgaW50NjRfdCBhdF90aW1lX21zKSB7CisgIGlmIChzdGF0ZV8gIT0gU3RhdGU6
OmtXYWl0aW5nRm9yUHJvYmluZ1Jlc3VsdCkgeworICAgIFJUQ19EQ0hFQ0sobmV0d29ya19hdmFp
bGFibGVfKTsKKyAgICByZXR1cm4gSW5pdGlhdGVQcm9iaW5nKGF0X3RpbWVfbXMsIHsyICogYml0
cmF0ZV9icHN9LCB0cnVlKTsKKyAgfQorICByZXR1cm4gc3RkOjp2ZWN0b3I8UHJvYmVDbHVzdGVy
Q29uZmlnPigpOworfQorCiB2b2lkIFByb2JlQ29udHJvbGxlcjo6UmVzZXQoaW50NjRfdCBhdF90
aW1lX21zKSB7CiAgIG5ldHdvcmtfYXZhaWxhYmxlXyA9IHRydWU7CiAgIHN0YXRlXyA9IFN0YXRl
OjprSW5pdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVfY29udHJv
bGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9jb250cm9sbGVyLmgKaW5kZXgg
NmI2ZDRhZThiNGI1MmE4MTVhYTdlOGU0ZWU5MjE2MWI3ZTVkNjZiMy4uNGRkZDc3Zjc1YzM3YjZk
YmQ5YjUzODkzZDNjMGI1ZTkzOTQ0YzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy9wcm9iZV9jb250cm9sbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9i
ZV9jb250cm9sbGVyLmgKQEAgLTYwLDYgKzYwLDkgQEAgY2xhc3MgUHJvYmVDb250cm9sbGVyIHsK
ICAgUlRDX1dBUk5fVU5VU0VEX1JFU1VMVCBzdGQ6OnZlY3RvcjxQcm9iZUNsdXN0ZXJDb25maWc+
IFJlcXVlc3RQcm9iZSgKICAgICAgIGludDY0X3QgYXRfdGltZV9tcyk7CiAKKyAgUlRDX1dBUk5f
VU5VU0VEX1JFU1VMVCBzdGQ6OnZlY3RvcjxQcm9iZUNsdXN0ZXJDb25maWc+CisgIEluaXRpYXRl
Q2FwYWNpdHlQcm9iaW5nKGludDY0X3QgYml0cmF0ZV9icHMsIGludDY0X3QgYXRfdGltZV9tcyk7
CisKICAgLy8gUmVzZXRzIHRoZSBQcm9iZUNvbnRyb2xsZXIgdG8gYSBzdGF0ZSBlcXVpdmFsZW50
IHRvIGFzIGlmIGl0IHdhcyBqdXN0CiAgIC8vIGNyZWF0ZWQgRVhDRVBUIGZvciB8ZW5hYmxlX3Bl
cmlvZGljX2Fscl9wcm9iaW5nX3wuCiAgIHZvaWQgUmVzZXQoaW50NjRfdCBhdF90aW1lX21zKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvdGVzdC9nb29nX2NjX3ByaW50ZXIu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Rlc3QvZ29vZ19jY19wcmludGVyLmNjCmluZGV4
IDMyNjRiMzdlNmRkYzBlNDYzOGI1NzgxOWIwZGU4N2VkMGNkODc2OGQuLjU5YWFkNTExYzAwOGIw
ODBjZGVmNWM1ZTJjM2IwNTQzYmZjYmNiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dv
b2dfY2MvdGVzdC9nb29nX2NjX3ByaW50ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy90ZXN0L2dvb2dfY2NfcHJpbnRlci5jYwpAQCAtOCw2ICs4LDkgQEAKICAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwog
I2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvdGVzdC9nb29n
X2NjX3ByaW50ZXIuaCIKKworI2luY2x1ZGUgPG1hdGguaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvdHJlbmRsaW5lX2VzdGltYXRvci5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKQEAgLTMzLDkgKzM2LDExIEBAIHZvaWQgR29vZ0NjU3RhdGVQcmlu
dGVyOjpQcmludFZhbHVlcyhGSUxFKiBvdXQpIHsKICAgUlRDX0NIRUNLKGNvbnRyb2xsZXJfKTsK
ICAgYXV0byogZGV0ZWN0b3IgPSBjb250cm9sbGVyXy0+ZGVsYXlfYmFzZWRfYndlXy0+ZGVsYXlf
ZGV0ZWN0b3JfLmdldCgpOwogICBhdXRvKiB0cmVuZGxpbmVfZXN0aW1hdG9yID0gcmVpbnRlcnBy
ZXRfY2FzdDxUcmVuZGxpbmVFc3RpbWF0b3IqPihkZXRlY3Rvcik7Ci0gIGZwcmludGYob3V0LCAi
JWkgJWkgJWkgJS42bGYgJS42bGYgJS42bGYiLAorICBmcHJpbnRmKG91dCwgIiVpICVmICVpICUu
NmxmICUuNmxmICUuNmxmIiwKICAgICAgICAgICBjb250cm9sbGVyXy0+ZGVsYXlfYmFzZWRfYndl
Xy0+cmF0ZV9jb250cm9sXy5yYXRlX2NvbnRyb2xfc3RhdGVfLAotICAgICAgICAgIGNvbnRyb2xs
ZXJfLT5kZWxheV9iYXNlZF9id2VfLT5yYXRlX2NvbnRyb2xfLnJhdGVfY29udHJvbF9yZWdpb25f
LAorICAgICAgICAgIGNvbnRyb2xsZXJfLT5kZWxheV9iYXNlZF9id2VfLT5yYXRlX2NvbnRyb2xf
CisgICAgICAgICAgICAgICAgICAubGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy52YWx1ZV9v
cihOQU4pICoKKyAgICAgICAgICAgICAgMTAwMCAvIDgsCiAgICAgICAgICAgY29udHJvbGxlcl8t
PmFscl9kZXRlY3Rvcl8tPmFscl9zdGFydGVkX3RpbWVfbXNfLmhhc192YWx1ZSgpLAogICAgICAg
ICAgIHRyZW5kbGluZV9lc3RpbWF0b3ItPnByZXZfdHJlbmRfLAogICAgICAgICAgIHRyZW5kbGlu
ZV9lc3RpbWF0b3ItPnByZXZfbW9kaWZpZWRfdHJlbmRfLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvZ29vZ19jYy90ZXN0L2dvb2dfY2NfcHJpbnRlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy90ZXN0L2dvb2dfY2NfcHJpbnRlci5oCmluZGV4IDRkZmMwNTliNDc5YTk0NzVhYmViOTYx
ZjUzOWI1OGNkZTA0MGQyYzQuLjVkNGYyYzE4NDBmNGM5N2E4MzA3NWYyOWNjOWRjYzZjNmU1NTdh
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvdGVzdC9nb29nX2NjX3ByaW50
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Rlc3QvZ29vZ19jY19wcmludGVyLmgK
QEAgLTEyLDggKzEyLDggQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgImFwaS90
cmFuc3BvcnQvZ29vZ19jY19mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvaW5jbHVkZS9nb29nX2NjX2Zh
Y3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci90ZXN0L2Nv
bnRyb2xsZXJfcHJpbnRlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvdHJlbmRsaW5lX2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy90cmVuZGxpbmVfZXN0aW1hdG9yLmgKaW5kZXggYTdkMjJhOTUwZWZhZDAyZGMz
ODc1NjlhN2ViMjQwMGFlODFiZmM5Ny4uMTgyNmQ4MTI0ODBlNDcyMDcwMWI4Njk2MWE1NmU1MTA0
MWExOTA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90cmVuZGxpbmVfZXN0
aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90cmVuZGxpbmVfZXN0aW1hdG9y
LmgKQEAgLTEyLDExICsxMiwxMSBAQAogCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8
c3RkaW50Lmg+Ci0KICNpbmNsdWRlIDxkZXF1ZT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5j
bHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9pbmNyZWFz
ZV9kZXRlY3Rvcl9pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29u
c3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2luY2x1ZGUvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvaW5jbHVkZS9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmgKaW5k
ZXggYmEyNjI3MmU2ZmI0N2I0YzIwZGY1M2E1MWY4ZjllODNhYzE2MTQ0Zi4uNzQ2ZTU5MGE1OWY0
MWU3YWJjNDQ1MmYzYzM1ZTEzYjljYjk5OTdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
aW5jbHVkZS9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvaW5jbHVkZS9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmgKQEAgLTExMyw2
ICsxMTMsOSBAQCBjbGFzcyBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyCiAKICAgdm9pZCBT
ZXRBbGxvY2F0ZWRCaXRyYXRlV2l0aG91dEZlZWRiYWNrKHVpbnQzMl90IGJpdHJhdGVfYnBzKSBv
dmVycmlkZTsKIAorICB2b2lkIEVuYWJsZUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFjayhpbnQ2NF90
IGFjY2VwdGVkX3F1ZXVlX21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzKTsKKwogIHByaXZhdGU6
CiAgIHZvaWQgTWF5YmVUcmlnZ2VyT25OZXR3b3JrQ2hhbmdlZCgpOwogCkBAIC0xMzYsNyArMTM5
LDcgQEAgY2xhc3MgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcgogICAgICAgUlRDX0dVQVJE
RURfQlkocHJvYmVfbG9ja18pOwogCiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxSYXRlTGltaXRl
cj4gcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXzsKLSAgVHJhbnNwb3J0RmVlZGJhY2tBZGFw
dGVyIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXzsKKyAgTGVnYWN5VHJhbnNwb3J0RmVlZGJh
Y2tBZGFwdGVyIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXzsKICAgcnRjOjpDcml0aWNhbFNl
Y3Rpb24gbmV0d29ya19zdGF0ZV9sb2NrXzsKICAgdWludDMyX3QgbGFzdF9yZXBvcnRlZF9iaXRy
YXRlX2Jwc18gUlRDX0dVQVJERURfQlkobmV0d29ya19zdGF0ZV9sb2NrXyk7CiAgIHVpbnQ4X3Qg
bGFzdF9yZXBvcnRlZF9mcmFjdGlvbl9sb3NzXyBSVENfR1VBUkRFRF9CWShuZXR3b3JrX3N0YXRl
X2xvY2tfKTsKQEAgLTE0OSw2ICsxNTIsOCBAQCBjbGFzcyBTZW5kU2lkZUNvbmdlc3Rpb25Db250
cm9sbGVyCiAgIGJvb2wgcGFjZXJfcGF1c2VkXzsKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gYndl
X2xvY2tfOwogICBpbnQgbWluX2JpdHJhdGVfYnBzXyBSVENfR1VBUkRFRF9CWShid2VfbG9ja18p
OworICBzdGQ6OnVuaXF1ZV9wdHI8UHJvYmVCaXRyYXRlRXN0aW1hdG9yPiBwcm9iZV9iaXRyYXRl
X2VzdGltYXRvcl8KKyAgICAgIFJUQ19HVUFSREVEX0JZKGJ3ZV9sb2NrXyk7CiAgIHN0ZDo6dW5p
cXVlX3B0cjxEZWxheUJhc2VkQndlPiBkZWxheV9iYXNlZF9id2VfIFJUQ19HVUFSREVEX0JZKGJ3
ZV9sb2NrXyk7CiAgIGJvb2wgaW5fY3duZF9leHBlcmltZW50XzsKICAgaW50NjRfdCBhY2NlcHRl
ZF9xdWV1ZV9tc187CkBAIC0xNjEsNyArMTY2LDcgQEAgY2xhc3MgU2VuZFNpZGVDb25nZXN0aW9u
Q29udHJvbGxlcgogICBib29sIHBhY2VyX3B1c2hiYWNrX2V4cGVyaW1lbnRfID0gZmFsc2U7CiAg
IGZsb2F0IGVuY29kaW5nX3JhdGVfID0gMS4wOwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxD
b25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyPgorICBzdGQ6OnVuaXF1ZV9wdHI8Q29u
Z2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcj4KICAgICAgIGNvbmdlc3Rpb25fd2luZG93
X3B1c2hiYWNrX2NvbnRyb2xsZXJfOwogCiAgIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJV
Q1RPUlMoU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9wY2MvbW9uaXRvcl9pbnRlcnZhbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9tb25p
dG9yX2ludGVydmFsLmNjCmluZGV4IGQ0MzBiN2YxNzkwYTdhMzhmZWJkNDBhZGM2MTUyYTU5ZjU0
NjU1NGQuLjI4MWI5MjI0ZjBjM2JlYjA1MDNmMzUzMzYxNTdmZjA1MTA0YzQ4ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL3BjYy9tb25pdG9yX2ludGVydmFsLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL3BjYy9tb25pdG9yX2ludGVydmFsLmNjCkBAIC0zMSwyNSArMzEsMjQgQEAgUGNjTW9u
aXRvckludGVydmFsOjpQY2NNb25pdG9ySW50ZXJ2YWwoY29uc3QgUGNjTW9uaXRvckludGVydmFs
JiBvdGhlcikgPQogdm9pZCBQY2NNb25pdG9ySW50ZXJ2YWw6Ok9uUGFja2V0c0ZlZWRiYWNrKAog
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFBhY2tldFJlc3VsdD4mIHBhY2tldHNfcmVzdWx0cykgewog
ICBmb3IgKGNvbnN0IFBhY2tldFJlc3VsdCYgcGFja2V0X3Jlc3VsdCA6IHBhY2tldHNfcmVzdWx0
cykgewotICAgIGlmICghcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC5oYXNfdmFsdWUoKSB8fAot
ICAgICAgICBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LT5zZW5kX3RpbWUgPD0gc3RhcnRfdGlt
ZV8pIHsKKyAgICBpZiAocGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC5zZW5kX3RpbWUgPD0gc3Rh
cnRfdGltZV8pIHsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KICAgICAvLyBIZXJlIHdlIGFzc3Vt
ZSB0aGF0IGlmIHNvbWUgcGFja2V0cyBhcmUgcmVvcmRlcmVkIHdpdGggcGFja2V0cyBzZW50CiAg
ICAgLy8gYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbW9uaXRvciBpbnRlcnZhbCwgdGhlbiB0aGV5IGFy
ZSBsb3N0LiAoT3RoZXJ3aXNlCiAgICAgLy8gaXQgaXMgbm90IGNsZWFyIGhvdyBsb25nIHNob3Vs
ZCB3ZSB3YWl0IGZvciBwYWNrZXRzIGZlZWRiYWNrIHRvIGFycml2ZSkuCi0gICAgaWYgKHBhY2tl
dF9yZXN1bHQuc2VudF9wYWNrZXQtPnNlbmRfdGltZSA+CisgICAgaWYgKHBhY2tldF9yZXN1bHQu
c2VudF9wYWNrZXQuc2VuZF90aW1lID4KICAgICAgICAgc3RhcnRfdGltZV8gKyBpbnRlcnZhbF9k
dXJhdGlvbl8pIHsKICAgICAgIGZlZWRiYWNrX2NvbGxlY3Rpb25fZG9uZV8gPSB0cnVlOwogICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAocGFja2V0X3Jlc3VsdC5yZWNlaXZlX3RpbWUuSXNJ
bmZpbml0ZSgpKSB7Ci0gICAgICBsb3N0X3BhY2tldHNfc2VudF90aW1lXy5wdXNoX2JhY2socGFj
a2V0X3Jlc3VsdC5zZW50X3BhY2tldC0+c2VuZF90aW1lKTsKKyAgICAgIGxvc3RfcGFja2V0c19z
ZW50X3RpbWVfLnB1c2hfYmFjayhwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LnNlbmRfdGltZSk7
CiAgICAgfSBlbHNlIHsKICAgICAgIHJlY2VpdmVkX3BhY2tldHNfLnB1c2hfYmFjaygKLSAgICAg
ICAgICB7cGFja2V0X3Jlc3VsdC5yZWNlaXZlX3RpbWUgLSBwYWNrZXRfcmVzdWx0LnNlbnRfcGFj
a2V0LT5zZW5kX3RpbWUsCi0gICAgICAgICAgIHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQtPnNl
bmRfdGltZX0pOwotICAgICAgcmVjZWl2ZWRfcGFja2V0c19zaXplXyArPSBwYWNrZXRfcmVzdWx0
LnNlbnRfcGFja2V0LT5zaXplOworICAgICAgICAgIHtwYWNrZXRfcmVzdWx0LnJlY2VpdmVfdGlt
ZSAtIHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQuc2VuZF90aW1lLAorICAgICAgICAgICBwYWNr
ZXRfcmVzdWx0LnNlbnRfcGFja2V0LnNlbmRfdGltZX0pOworICAgICAgcmVjZWl2ZWRfcGFja2V0
c19zaXplXyArPSBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LnNpemU7CiAgICAgfQogICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9wY2MvcGNjX25ldHdvcmtfY29udHJvbGxlci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL3BjYy9wY2NfbmV0d29ya19jb250cm9sbGVyLmNjCmluZGV4IDk4
Y2RhNzQwOWJkMWZiNDIyNzE0OTQxOWMwNTI3YThiOGIzNDQ5YjUuLjQ3YWQzM2VhYzIyN2JkMDUz
MjIxNTg5MTY2ZTczNjMzYTA2ZDY2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9w
Y2NfbmV0d29ya19jb250cm9sbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9wY2NfbmV0
d29ya19jb250cm9sbGVyLmNjCkBAIC0xNDgsNyArMTQ4LDcgQEAgTmV0d29ya0NvbnRyb2xVcGRh
dGUgUGNjTmV0d29ya0NvbnRyb2xsZXI6Ok9uU2VudFBhY2tldChTZW50UGFja2V0IG1zZykgewog
ICBpZiAoSXNUaW1lb3V0RXhwaXJlZChtc2cuc2VuZF90aW1lKSkgewogICAgIERhdGFTaXplIHJl
Y2VpdmVkX3NpemUgPSBEYXRhU2l6ZTo6WmVybygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAxOyBp
IDwgbGFzdF9yZWNlaXZlZF9wYWNrZXRzXy5zaXplKCk7ICsraSkgewotICAgICAgcmVjZWl2ZWRf
c2l6ZSArPSBsYXN0X3JlY2VpdmVkX3BhY2tldHNfW2ldLnNlbnRfcGFja2V0LT5zaXplOworICAg
ICAgcmVjZWl2ZWRfc2l6ZSArPSBsYXN0X3JlY2VpdmVkX3BhY2tldHNfW2ldLnNlbnRfcGFja2V0
LnNpemU7CiAgICAgfQogICAgIFRpbWVEZWx0YSBzZW5kaW5nX3RpbWUgPSBUaW1lRGVsdGE6Olpl
cm8oKTsKICAgICBpZiAobGFzdF9yZWNlaXZlZF9wYWNrZXRzXy5zaXplKCkgPiAwKQpAQCAtMTY2
LDcgKzE2Niw3IEBAIE5ldHdvcmtDb250cm9sVXBkYXRlIFBjY05ldHdvcmtDb250cm9sbGVyOjpP
blNlbnRQYWNrZXQoU2VudFBhY2tldCBtc2cpIHsKICAgICAgIG1zZy5zZW5kX3RpbWUgLSBzdGFy
dF90aW1lXyA+PSBrU3RhcnR1cER1cmF0aW9uKSB7CiAgICAgRGF0YVNpemUgcmVjZWl2ZWRfc2l6
ZSA9IERhdGFTaXplOjpaZXJvKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBsYXN0X3Jl
Y2VpdmVkX3BhY2tldHNfLnNpemUoKTsgKytpKSB7Ci0gICAgICByZWNlaXZlZF9zaXplICs9IGxh
c3RfcmVjZWl2ZWRfcGFja2V0c19baV0uc2VudF9wYWNrZXQtPnNpemU7CisgICAgICByZWNlaXZl
ZF9zaXplICs9IGxhc3RfcmVjZWl2ZWRfcGFja2V0c19baV0uc2VudF9wYWNrZXQuc2l6ZTsKICAg
ICB9CiAgICAgVGltZURlbHRhIHNlbmRpbmdfdGltZSA9IFRpbWVEZWx0YTo6WmVybygpOwogICAg
IGlmIChsYXN0X3JlY2VpdmVkX3BhY2tldHNfLnNpemUoKSA+IDApCkBAIC0yNjAsNiArMjYwLDgg
QEAgYm9vbCBQY2NOZXR3b3JrQ29udHJvbGxlcjo6SXNGZWVkYmFja0NvbGxlY3Rpb25Eb25lKCkg
Y29uc3QgewogCiBOZXR3b3JrQ29udHJvbFVwZGF0ZSBQY2NOZXR3b3JrQ29udHJvbGxlcjo6T25U
cmFuc3BvcnRQYWNrZXRzRmVlZGJhY2soCiAgICAgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrIG1z
ZykgeworICBpZiAobXNnLnBhY2tldF9mZWVkYmFja3MuZW1wdHkoKSkKKyAgICByZXR1cm4gTmV0
d29ya0NvbnRyb2xVcGRhdGUoKTsKICAgLy8gU2F2ZSBwYWNrZXRzIHRvIGxhc3RfcmVjZWl2ZWRf
cGFja2V0c18gYXJyYXkuCiAgIGZvciAoY29uc3QgUGFja2V0UmVzdWx0JiBwYWNrZXRfcmVzdWx0
IDogbXNnLlJlY2VpdmVkV2l0aFNlbmRJbmZvKCkpIHsKICAgICBsYXN0X3JlY2VpdmVkX3BhY2tl
dHNfLnB1c2hfYmFjayhwYWNrZXRfcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L3BjYy9ydHRfdHJhY2tlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9ydHRfdHJhY2tlci5jYwpp
bmRleCBhMDU0NTc1OWY5ZjEyMDhlZDkxNjFhYWRhNGQ2YTU2ZDRmZmU1NWIxLi41MzNhNTczYTdh
YzhkNGJiNDA3N2E2N2QzNzkxNjMzZDNhZTA0ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9wY2MvcnR0X3RyYWNrZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcGNjL3J0dF90cmFja2Vy
LmNjCkBAIC0yMywxMiArMjMsMTEgQEAgdm9pZCBSdHRUcmFja2VyOjpPblBhY2tldHNGZWVkYmFj
aygKICAgICBUaW1lc3RhbXAgZmVlZGJhY2tfcmVjZWl2ZWRfdGltZSkgewogICBUaW1lRGVsdGEg
cGFja2V0X3J0dCA9IFRpbWVEZWx0YTo6TWludXNJbmZpbml0eSgpOwogICBmb3IgKGNvbnN0IFBh
Y2tldFJlc3VsdCYgcGFja2V0X3Jlc3VsdCA6IHBhY2tldF9mZWVkYmFja3MpIHsKLSAgICBpZiAo
IXBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQuaGFzX3ZhbHVlKCkgfHwKLSAgICAgICAgcGFja2V0
X3Jlc3VsdC5yZWNlaXZlX3RpbWUuSXNJbmZpbml0ZSgpKQorICAgIGlmIChwYWNrZXRfcmVzdWx0
LnJlY2VpdmVfdGltZS5Jc0luZmluaXRlKCkpCiAgICAgICBjb250aW51ZTsKICAgICBwYWNrZXRf
cnR0ID0gc3RkOjptYXg8VGltZURlbHRhPigKICAgICAgICAgcGFja2V0X3J0dCwKLSAgICAgICAg
ZmVlZGJhY2tfcmVjZWl2ZWRfdGltZSAtIHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQtPnNlbmRf
dGltZSk7CisgICAgICAgIGZlZWRiYWNrX3JlY2VpdmVkX3RpbWUgLSBwYWNrZXRfcmVzdWx0LnNl
bnRfcGFja2V0LnNlbmRfdGltZSk7CiAgIH0KICAgaWYgKHBhY2tldF9ydHQuSXNGaW5pdGUoKSkK
ICAgICBydHRfZXN0aW1hdGVfID0gKDEgLSBhbHBoYV8pICogcnR0X2VzdGltYXRlXyArIGFscGhh
XyAqIHBhY2tldF9ydHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvQlVJTEQuZ24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9ydHAvQlVJTEQuZ24KaW5kZXggMTM0ZmI5NDBmZGQ2NTI4ZTY1YmEz
MzJkODI5NGIxNzVkMTA3NDU0Mi4uYmZmZTFmODkzZWI1NGJhNWJhY2RjOTgwNTQ1YmE1OGNjYThk
Njc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL0JVSUxELmduCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL3J0cC9CVUlMRC5nbgpAQCAtMjEsOCArMjEsNiBAQCBydGNfc3RhdGljX2xpYnJh
cnkoImNvbmdlc3Rpb25fY29udHJvbGxlciIpIHsKICAgY29uZmlncyArPSBbICI6YndlX3Rlc3Rf
bG9nZ2luZyIgXQogICBzb3VyY2VzID0gWwogICAgICJpbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0
aW9uX2NvbnRyb2xsZXIuaCIsCi0gICAgInBhY2VyX2NvbnRyb2xsZXIuY2MiLAotICAgICJwYWNl
cl9jb250cm9sbGVyLmgiLAogICAgICJzZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNj
IiwKICAgXQogCkBAIC0zMiwxMCArMzAsMTIgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb25nZXN0
aW9uX2NvbnRyb2xsZXIiKSB7CiAgIH0KIAogICBkZXBzID0gWworICAgICI6Y29udHJvbF9oYW5k
bGVyIiwKICAgICAiOnRyYW5zcG9ydF9mZWVkYmFjayIsCiAgICAgIi4uLzpjb25nZXN0aW9uX2Nv
bnRyb2xsZXIiLAogICAgICIuLi8uLjptb2R1bGVfYXBpIiwKICAgICAiLi4vLi4vLi46d2VicnRj
X2NvbW1vbiIsCisgICAgIi4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6Z29vZ19jYyIsCiAgICAgIi4u
Ly4uLy4uL2FwaS90cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKICAgICAiLi4vLi4vLi4vcnRj
X2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cmF0ZV9saW1pdGVyIiwKQEAg
LTQzLDEyICs0MywxMiBAQCBydGNfc3RhdGljX2xpYnJhcnkoImNvbmdlc3Rpb25fY29udHJvbGxl
ciIpIHsKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAogICAgICIuLi8uLi8u
Li9ydGNfYmFzZTpzZXF1ZW5jZWRfdGFza19jaGVja2VyIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jh
c2UvZXhwZXJpbWVudHM6Y29uZ2VzdGlvbl9jb250cm9sbGVyX2V4cGVyaW1lbnQiLAorICAgICIu
Li8uLi8uLi9ydGNfYmFzZS9uZXR3b3JrOnNlbnRfcGFja2V0IiwKICAgICAiLi4vLi4vLi4vc3lz
dGVtX3dyYXBwZXJzIiwKICAgICAiLi4vLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFs
IiwKICAgICAiLi4vLi4vcGFjaW5nIiwKICAgICAiLi4vLi4vcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yIiwKICAgICAiLi4vLi4vcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKLSAgICAiLi4vZ29v
Z19jYyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0K
IApAQCAtNTcsNiArNTcsMzggQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb25nZXN0aW9uX2NvbnRy
b2xsZXIiKSB7CiAgIH0KIH0KIAorcnRjX3NvdXJjZV9zZXQoImNvbnRyb2xfaGFuZGxlciIpIHsK
KyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgc291cmNlcyA9IFsKKyAgICAiY29udHJvbF9oYW5k
bGVyLmNjIiwKKyAgICAiY29udHJvbF9oYW5kbGVyLmgiLAorICBdCisKKyAgaWYgKCFidWlsZF93
aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CisgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9t
IHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgorICAgIHN1
cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25z
dHJ1Y3RzIiBdCisgIH0KKworICBkZXBzID0gWworICAgICIuLi86Y29uZ2VzdGlvbl9jb250cm9s
bGVyIiwKKyAgICAiLi4vLi4vLi4vYXBpL3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAorICAg
ICIuLi8uLi8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZTpyYXRl
X2xpbWl0ZXIiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZTpzYWZlX21pbm1heCIsCisgICAgIi4u
Ly4uLy4uL3J0Y19iYXNlOnNlcXVlbmNlZF90YXNrX2NoZWNrZXIiLAorICAgICIuLi8uLi8uLi9y
dGNfYmFzZS9leHBlcmltZW50czpjb25nZXN0aW9uX2NvbnRyb2xsZXJfZXhwZXJpbWVudCIsCisg
ICAgIi4uLy4uLy4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgIi4uLy4uLy4uL3N5c3RlbV93cmFw
cGVyczpmaWVsZF90cmlhbCIsCisgICAgIi4uLy4uL3BhY2luZyIsCisgICAgIi4uLy4uL3JlbW90
ZV9iaXRyYXRlX2VzdGltYXRvciIsCisgICAgIi4uLy4uL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1h
dCIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgIF0KKwor
ICBpZiAoIWJ1aWxkX3dpdGhfbW96aWxsYSkgeworICAgIGRlcHMgKz0gWyAiLi4vLi4vLi4vcnRj
X2Jhc2U6cnRjX2Jhc2UiIF0KKyAgfQorfQogcnRjX3N0YXRpY19saWJyYXJ5KCJ0cmFuc3BvcnRf
ZmVlZGJhY2siKSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIHNvdXJjZXMgPSBbCkBAIC02
OSw4ICsxMDEsMTAgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ0cmFuc3BvcnRfZmVlZGJhY2siKSB7
CiAgIGRlcHMgPSBbCiAgICAgIi4uLy4uOm1vZHVsZV9hcGkiLAogICAgICIuLi8uLi8uLi9hcGkv
dHJhbnNwb3J0Om5ldHdvcmtfY29udHJvbCIsCisgICAgIi4uLy4uLy4uL2FwaS91bml0czpkYXRh
X3NpemUiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8uLi8uLi9y
dGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL25ldHdv
cms6c2VudF9wYWNrZXQiLAogICAgICIuLi8uLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAogICAgICIu
Li8uLi9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAogICBdCkBAIC05Nyw3ICsxMzEsNyBAQCBp
ZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi8uLi8uLi9ydGNfYmFzZTpjaGVja3Mi
LAogICAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAgICIuLi8uLi8uLi9y
dGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRj
X2Jhc2VfdGVzdHNfdXRpbHMiLAorICAgICAgIi4uLy4uLy4uL3J0Y19iYXNlL25ldHdvcms6c2Vu
dF9wYWNrZXQiLAogICAgICAgIi4uLy4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAgICAiLi4v
Li4vLi4vdGVzdDpmaWVsZF90cmlhbCIsCiAgICAgICAiLi4vLi4vLi4vdGVzdDp0ZXN0X3N1cHBv
cnQiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL3J0cC9jb250cm9sX2hhbmRsZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZjYWRi
NzIwZTljMGIxY2NhNWEyNmY1ZTIyMzI1Zjk0N2U1ZDY5NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL3J0cC9jb250cm9sX2hhbmRsZXIuY2MKQEAgLTAsMCArMSwxNjkgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5oIgorCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfbWlubWF4LmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
ZmllbGRfdHJpYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworCisvLyBX
aGVuIFBhY2VyUHVzaGJhY2tFeHBlcmltZW50IGlzIGVuYWJsZWQsIGJ1aWxkLXVwIGluIHRoZSBw
YWNlciBkdWUgdG8KKy8vIHRoZSBjb25nZXN0aW9uIHdpbmRvdyBhbmQvb3IgZGF0YSBzcGlrZXMg
cmVkdWNlcyBlbmNvZGVyIGFsbG9jYXRpb25zLgorYm9vbCBJc1BhY2VyUHVzaGJhY2tFeHBlcmlt
ZW50RW5hYmxlZCgpIHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1Q
YWNlclB1c2hiYWNrRXhwZXJpbWVudCIpOworfQorCisvLyBCeSBkZWZhdWx0LCBwYWNlciBlbWVy
Z2VuY3kgc3RvcHMgZW5jb2RlciB3aGVuIGJ1ZmZlciByZWFjaGVzIGEgaGlnaCBsZXZlbC4KK2Jv
b2wgSXNQYWNlckVtZXJnZW5jeVN0b3BEaXNhYmxlZCgpIHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFs
OjpJc0VuYWJsZWQoIldlYlJUQy1EaXNhYmxlUGFjZXJFbWVyZ2VuY3lTdG9wIik7Cit9CisKK30g
IC8vIG5hbWVzcGFjZQorQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyOjpDb25nZXN0aW9uQ29udHJv
bEhhbmRsZXIoCisgICAgTmV0d29ya0NoYW5nZWRPYnNlcnZlciogb2JzZXJ2ZXIsCisgICAgUGFj
ZWRTZW5kZXIqIHBhY2VyKQorICAgIDogb2JzZXJ2ZXJfKG9ic2VydmVyKSwKKyAgICAgIHBhY2Vy
XyhwYWNlciksCisgICAgICBwYWNlcl9wdXNoYmFja19leHBlcmltZW50XyhJc1BhY2VyUHVzaGJh
Y2tFeHBlcmltZW50RW5hYmxlZCgpKSwKKyAgICAgIGRpc2FibGVfcGFjZXJfZW1lcmdlbmN5X3N0
b3BfKElzUGFjZXJFbWVyZ2VuY3lTdG9wRGlzYWJsZWQoKSkgeworICBzZXF1ZW5jZWRfY2hlY2tl
cl8uRGV0YWNoKCk7Cit9CisKK0Nvbmdlc3Rpb25Db250cm9sSGFuZGxlcjo6fkNvbmdlc3Rpb25D
b250cm9sSGFuZGxlcigpIHt9CisKK3ZvaWQgQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyOjpQb3N0
VXBkYXRlcyhOZXR3b3JrQ29udHJvbFVwZGF0ZSB1cGRhdGUpIHsKKyAgUlRDX0RDSEVDS19DQUxM
RURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOworICBpZiAodXBkYXRlLmNvbmdl
c3Rpb25fd2luZG93KSB7CisgICAgaWYgKHVwZGF0ZS5jb25nZXN0aW9uX3dpbmRvdy0+SXNGaW5p
dGUoKSkKKyAgICAgIHBhY2VyXy0+U2V0Q29uZ2VzdGlvbldpbmRvdyh1cGRhdGUuY29uZ2VzdGlv
bl93aW5kb3ctPmJ5dGVzKCkpOworICAgIGVsc2UKKyAgICAgIHBhY2VyXy0+U2V0Q29uZ2VzdGlv
bldpbmRvdyhQYWNlZFNlbmRlcjo6a05vQ29uZ2VzdGlvbldpbmRvdyk7CisgIH0KKyAgaWYgKHVw
ZGF0ZS5wYWNlcl9jb25maWcpIHsKKyAgICBwYWNlcl8tPlNldFBhY2luZ1JhdGVzKHVwZGF0ZS5w
YWNlcl9jb25maWctPmRhdGFfcmF0ZSgpLmJwcygpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdXBkYXRlLnBhY2VyX2NvbmZpZy0+cGFkX3JhdGUoKS5icHMoKSk7CisgIH0KKyAgZm9yIChj
b25zdCBhdXRvJiBwcm9iZSA6IHVwZGF0ZS5wcm9iZV9jbHVzdGVyX2NvbmZpZ3MpIHsKKyAgICBp
bnQ2NF90IGJpdHJhdGVfYnBzID0gcHJvYmUudGFyZ2V0X2RhdGFfcmF0ZS5icHMoKTsKKyAgICBw
YWNlcl8tPkNyZWF0ZVByb2JlQ2x1c3RlcihiaXRyYXRlX2Jwcyk7CisgIH0KKyAgaWYgKHVwZGF0
ZS50YXJnZXRfcmF0ZSkgeworICAgIGN1cnJlbnRfdGFyZ2V0X3JhdGVfbXNnXyA9ICp1cGRhdGUu
dGFyZ2V0X3JhdGU7CisgICAgT25OZXR3b3JrSW52YWxpZGF0aW9uKCk7CisgIH0KK30KKwordm9p
ZCBDb25nZXN0aW9uQ29udHJvbEhhbmRsZXI6Ok9uTmV0d29ya0F2YWlsYWJpbGl0eShOZXR3b3Jr
QXZhaWxhYmlsaXR5IG1zZykgeworICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNl
cXVlbmNlZF9jaGVja2VyXyk7CisgIGlmIChuZXR3b3JrX2F2YWlsYWJsZV8gIT0gbXNnLm5ldHdv
cmtfYXZhaWxhYmxlKSB7CisgICAgbmV0d29ya19hdmFpbGFibGVfID0gbXNnLm5ldHdvcmtfYXZh
aWxhYmxlOworICAgIHBhY2VyXy0+VXBkYXRlT3V0c3RhbmRpbmdEYXRhKDApOworICAgIFNldFBh
Y2VyU3RhdGUoIW1zZy5uZXR3b3JrX2F2YWlsYWJsZSk7CisgICAgT25OZXR3b3JrSW52YWxpZGF0
aW9uKCk7CisgIH0KK30KKwordm9pZCBDb25nZXN0aW9uQ29udHJvbEhhbmRsZXI6Ok9uT3V0c3Rh
bmRpbmdEYXRhKERhdGFTaXplIGluX2ZsaWdodF9kYXRhKSB7CisgIFJUQ19EQ0hFQ0tfQ0FMTEVE
X1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKKyAgcGFjZXJfLT5VcGRhdGVPdXRz
dGFuZGluZ0RhdGEoaW5fZmxpZ2h0X2RhdGEuYnl0ZXMoKSk7CisgIE9uTmV0d29ya0ludmFsaWRh
dGlvbigpOworfQorCit2b2lkIENvbmdlc3Rpb25Db250cm9sSGFuZGxlcjo6T25QYWNlclF1ZXVl
VXBkYXRlKAorICAgIFRpbWVEZWx0YSBleHBlY3RlZF9xdWV1ZV90aW1lKSB7CisgIFJUQ19EQ0hF
Q0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKKyAgcGFjZXJfZXhw
ZWN0ZWRfcXVldWVfbXNfID0gZXhwZWN0ZWRfcXVldWVfdGltZS5tcygpOworICBPbk5ldHdvcmtJ
bnZhbGlkYXRpb24oKTsKK30KKwordm9pZCBDb25nZXN0aW9uQ29udHJvbEhhbmRsZXI6OlNldFBh
Y2VyU3RhdGUoYm9vbCBwYXVzZWQpIHsKKyAgaWYgKHBhdXNlZCAmJiAhcGFjZXJfcGF1c2VkXykK
KyAgICBwYWNlcl8tPlBhdXNlKCk7CisgIGVsc2UgaWYgKCFwYXVzZWQgJiYgcGFjZXJfcGF1c2Vk
XykKKyAgICBwYWNlcl8tPlJlc3VtZSgpOworICBwYWNlcl9wYXVzZWRfID0gcGF1c2VkOworfQor
Cit2b2lkIENvbmdlc3Rpb25Db250cm9sSGFuZGxlcjo6T25OZXR3b3JrSW52YWxpZGF0aW9uKCkg
eworICBpZiAoIWN1cnJlbnRfdGFyZ2V0X3JhdGVfbXNnXy5oYXNfdmFsdWUoKSkKKyAgICByZXR1
cm47CisKKyAgdWludDMyX3QgdGFyZ2V0X2JpdHJhdGVfYnBzID0gY3VycmVudF90YXJnZXRfcmF0
ZV9tc2dfLT50YXJnZXRfcmF0ZS5icHMoKTsKKyAgaW50NjRfdCBydHRfbXMgPQorICAgICAgY3Vy
cmVudF90YXJnZXRfcmF0ZV9tc2dfLT5uZXR3b3JrX2VzdGltYXRlLnJvdW5kX3RyaXBfdGltZS5t
cygpOworICBmbG9hdCBsb3NzX3JhdGVfcmF0aW8gPQorICAgICAgY3VycmVudF90YXJnZXRfcmF0
ZV9tc2dfLT5uZXR3b3JrX2VzdGltYXRlLmxvc3NfcmF0ZV9yYXRpbzsKKworICBpbnQgbG9zc19y
YXRpb18yNTUgPSBsb3NzX3JhdGVfcmF0aW8gKiAyNTU7CisgIHVpbnQ4X3QgZnJhY3Rpb25fbG9z
cyA9CisgICAgICBydGM6OmRjaGVja2VkX2Nhc3Q8dWludDhfdD4ocnRjOjpTYWZlQ2xhbXAobG9z
c19yYXRpb18yNTUsIDAsIDI1NSkpOworCisgIGludDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcyA9
CisgICAgICBjdXJyZW50X3RhcmdldF9yYXRlX21zZ18tPm5ldHdvcmtfZXN0aW1hdGUuYndlX3Bl
cmlvZC5tcygpOworCisgIGlmICghbmV0d29ya19hdmFpbGFibGVfKSB7CisgICAgdGFyZ2V0X2Jp
dHJhdGVfYnBzID0gMDsKKyAgfSBlbHNlIGlmIChwYWNlcl9wdXNoYmFja19leHBlcmltZW50Xykg
eworICAgIGludDY0X3QgcXVldWVfbGVuZ3RoX21zID0gcGFjZXJfZXhwZWN0ZWRfcXVldWVfbXNf
OworCisgICAgaWYgKHF1ZXVlX2xlbmd0aF9tcyA9PSAwKSB7CisgICAgICBlbmNvZGluZ19yYXRl
X3JhdGlvXyA9IDEuMDsKKyAgICB9IGVsc2UgaWYgKHF1ZXVlX2xlbmd0aF9tcyA+IDUwKSB7Cisg
ICAgICBkb3VibGUgZW5jb2RpbmdfcmF0aW8gPSAxLjAgLSBxdWV1ZV9sZW5ndGhfbXMgLyAxMDAw
LjA7CisgICAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyA9IHN0ZDo6bWluKGVuY29kaW5nX3JhdGVf
cmF0aW9fLCBlbmNvZGluZ19yYXRpbyk7CisgICAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyA9IHN0
ZDo6bWF4KGVuY29kaW5nX3JhdGVfcmF0aW9fLCAwLjApOworICAgIH0KKworICAgIHRhcmdldF9i
aXRyYXRlX2JwcyAqPSBlbmNvZGluZ19yYXRlX3JhdGlvXzsKKyAgICB0YXJnZXRfYml0cmF0ZV9i
cHMgPSB0YXJnZXRfYml0cmF0ZV9icHMgPCA1MDAwMCA/IDAgOiB0YXJnZXRfYml0cmF0ZV9icHM7
CisgIH0gZWxzZSBpZiAoIWRpc2FibGVfcGFjZXJfZW1lcmdlbmN5X3N0b3BfKSB7CisgICAgdGFy
Z2V0X2JpdHJhdGVfYnBzID0gSXNTZW5kUXVldWVGdWxsKCkgPyAwIDogdGFyZ2V0X2JpdHJhdGVf
YnBzOworICB9CisKKyAgaWYgKEhhc05ldHdvcmtQYXJhbWV0ZXJzVG9SZXBvcnRDaGFuZ2VkKHRh
cmdldF9iaXRyYXRlX2JwcywgZnJhY3Rpb25fbG9zcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0dF9tcykpIHsKKyAgICBvYnNlcnZlcl8tPk9uTmV0d29ya0No
YW5nZWQodGFyZ2V0X2JpdHJhdGVfYnBzLCBmcmFjdGlvbl9sb3NzLCBydHRfbXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByb2JpbmdfaW50ZXJ2YWxfbXMpOworICB9Cit9Citi
b29sIENvbmdlc3Rpb25Db250cm9sSGFuZGxlcjo6SGFzTmV0d29ya1BhcmFtZXRlcnNUb1JlcG9y
dENoYW5nZWQoCisgICAgaW50NjRfdCB0YXJnZXRfYml0cmF0ZV9icHMsCisgICAgdWludDhfdCBm
cmFjdGlvbl9sb3NzLAorICAgIGludDY0X3QgcnR0X21zKSB7CisgIGJvb2wgY2hhbmdlZCA9IGxh
c3RfcmVwb3J0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzXyAhPSB0YXJnZXRfYml0cmF0ZV9icHMgfHwK
KyAgICAgICAgICAgICAgICAgKHRhcmdldF9iaXRyYXRlX2JwcyA+IDAgJiYKKyAgICAgICAgICAg
ICAgICAgIChsYXN0X3JlcG9ydGVkX2ZyYWN0aW9uX2xvc3NfICE9IGZyYWN0aW9uX2xvc3MgfHwK
KyAgICAgICAgICAgICAgICAgICBsYXN0X3JlcG9ydGVkX3J0dF9tc18gIT0gcnR0X21zKSk7Cisg
IGlmIChjaGFuZ2VkICYmCisgICAgICAobGFzdF9yZXBvcnRlZF90YXJnZXRfYml0cmF0ZV9icHNf
ID09IDAgfHwgdGFyZ2V0X2JpdHJhdGVfYnBzID09IDApKSB7CisgICAgUlRDX0xPRyhMU19JTkZP
KSA8PCAiQml0cmF0ZSBlc3RpbWF0ZSBzdGF0ZSBjaGFuZ2VkLCBCV0U6ICIKKyAgICAgICAgICAg
ICAgICAgICAgIDw8IHRhcmdldF9iaXRyYXRlX2JwcyA8PCAiIGJwcy4iOworICB9CisgIGxhc3Rf
cmVwb3J0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzXyA9IHRhcmdldF9iaXRyYXRlX2JwczsKKyAgbGFz
dF9yZXBvcnRlZF9mcmFjdGlvbl9sb3NzXyA9IGZyYWN0aW9uX2xvc3M7CisgIGxhc3RfcmVwb3J0
ZWRfcnR0X21zXyA9IHJ0dF9tczsKKyAgcmV0dXJuIGNoYW5nZWQ7Cit9CisKK2Jvb2wgQ29uZ2Vz
dGlvbkNvbnRyb2xIYW5kbGVyOjpJc1NlbmRRdWV1ZUZ1bGwoKSBjb25zdCB7CisgIHJldHVybiBw
YWNlcl9leHBlY3RlZF9xdWV1ZV9tc18gPiBQYWNlZFNlbmRlcjo6a01heFF1ZXVlTGVuZ3RoTXM7
Cit9CisKK2Fic2w6Om9wdGlvbmFsPFRhcmdldFRyYW5zZmVyUmF0ZT4KK0Nvbmdlc3Rpb25Db250
cm9sSGFuZGxlcjo6bGFzdF90cmFuc2Zlcl9yYXRlKCkgeworICBSVENfRENIRUNLX0NBTExFRF9T
RVFVRU5USUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7CisgIHJldHVybiBjdXJyZW50X3Rhcmdl
dF9yYXRlX21zZ187Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL3J0cC9jb250cm9sX2hhbmRsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9j
b250cm9sX2hhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTZjMmE5ZTI3MTI4NDA2ZjViYjgwNDBhNTZk
ZDQ0Y2Q4OTA1NjAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL2NvbnRy
b2xfaGFuZGxlci5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aWZuZGVmIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX1JUUF9DT05UUk9MX0hBTkRMRVJf
SF8KKyNkZWZpbmUgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfUlRQX0NPTlRST0xfSEFO
RExFUl9IXworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPG1lbW9yeT4KKworI2lu
Y2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya19jb250cm9sLmgiCisjaW5jbHVkZSAibW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvaW5jbHVkZS9uZXR3b3JrX2NoYW5nZWRfb2JzZXJ2ZXIu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
Ly8gVGhpcyBpcyB1c2VkIHRvIG9ic2VydmUgdGhlIG5ldHdvcmsgY29udHJvbGxlciBzdGF0ZSBh
bmQgcm91dGUgY2FsbHMgdG8KKy8vIHRoZSBwcm9wZXIgaGFuZGxlci4gSXQgYWxzbyBrZWVwcyBj
YWNoZWQgdmFsdWVzIGZvciBzYWZlIGFzeW5jaHJvbm91cyB1c2UuCisvLyBUaGlzIG1ha2VzIHN1
cmUgdGhhdCB0aGluZ3MgcnVubmluZyBvbiB0aGUgd29ya2VyIHF1ZXVlIGNhbid0IGFjY2VzcyBz
dGF0ZQorLy8gaW4gU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlciwgd2hpY2ggd291bGQgcmlz
ayBjYXVzaW5nIGRhdGEgcmFjZSBvbgorLy8gZGVzdHJ1Y3Rpb24gdW5sZXNzIG1lbWJlcnMgYXJl
IHByb3Blcmx5IG9yZGVyZWQuCitjbGFzcyBDb25nZXN0aW9uQ29udHJvbEhhbmRsZXIgeworIHB1
YmxpYzoKKyAgQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyKE5ldHdvcmtDaGFuZ2VkT2JzZXJ2ZXIq
IG9ic2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFjZWRTZW5kZXIqIHBhY2Vy
KTsKKyAgfkNvbmdlc3Rpb25Db250cm9sSGFuZGxlcigpOworCisgIHZvaWQgUG9zdFVwZGF0ZXMo
TmV0d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRlKTsKKworICB2b2lkIE9uTmV0d29ya0F2YWlsYWJp
bGl0eShOZXR3b3JrQXZhaWxhYmlsaXR5IG1zZyk7CisgIHZvaWQgT25PdXRzdGFuZGluZ0RhdGEo
RGF0YVNpemUgaW5fZmxpZ2h0X2RhdGEpOworICB2b2lkIE9uUGFjZXJRdWV1ZVVwZGF0ZShUaW1l
RGVsdGEgZXhwZWN0ZWRfcXVldWVfdGltZSk7CisKKyAgYWJzbDo6b3B0aW9uYWw8VGFyZ2V0VHJh
bnNmZXJSYXRlPiBsYXN0X3RyYW5zZmVyX3JhdGUoKTsKKworIHByaXZhdGU6CisgIHZvaWQgU2V0
UGFjZXJTdGF0ZShib29sIHBhdXNlZCk7CisgIHZvaWQgT25OZXR3b3JrSW52YWxpZGF0aW9uKCk7
CisgIGJvb2wgSXNTZW5kUXVldWVGdWxsKCkgY29uc3Q7CisgIGJvb2wgSGFzTmV0d29ya1BhcmFt
ZXRlcnNUb1JlcG9ydENoYW5nZWQoaW50NjRfdCBiaXRyYXRlX2JwcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBsb3NzX3JhdGVfcmF0aW8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZURlbHRhIHJ0dCk7CisK
KyAgYm9vbCBIYXNOZXR3b3JrUGFyYW1ldGVyc1RvUmVwb3J0Q2hhbmdlZChpbnQ2NF90IGJpdHJh
dGVfYnBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgZnJhY3Rpb25fbG9zcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQ2NF90IHJ0dCk7CisgIE5ldHdvcmtDaGFuZ2VkT2JzZXJ2ZXIqIG9ic2VydmVyXyA9
IG51bGxwdHI7CisgIFBhY2VkU2VuZGVyKiBjb25zdCBwYWNlcl87CisKKyAgYWJzbDo6b3B0aW9u
YWw8VGFyZ2V0VHJhbnNmZXJSYXRlPiBjdXJyZW50X3RhcmdldF9yYXRlX21zZ187CisgIGJvb2wg
bmV0d29ya19hdmFpbGFibGVfID0gdHJ1ZTsKKyAgYm9vbCBwYWNlcl9wYXVzZWRfID0gZmFsc2U7
CisgIGludDY0X3QgbGFzdF9yZXBvcnRlZF90YXJnZXRfYml0cmF0ZV9icHNfID0gMDsKKyAgdWlu
dDhfdCBsYXN0X3JlcG9ydGVkX2ZyYWN0aW9uX2xvc3NfID0gMDsKKyAgaW50NjRfdCBsYXN0X3Jl
cG9ydGVkX3J0dF9tc18gPSAwOworICBjb25zdCBib29sIHBhY2VyX3B1c2hiYWNrX2V4cGVyaW1l
bnRfOworICBjb25zdCBib29sIGRpc2FibGVfcGFjZXJfZW1lcmdlbmN5X3N0b3BfOworICB1aW50
MzJfdCBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzXzsKKyAgaW50NjRfdCBwYWNlcl9l
eHBlY3RlZF9xdWV1ZV9tc18gPSAwOworICBkb3VibGUgZW5jb2RpbmdfcmF0ZV9yYXRpb18gPSAx
LjA7CisKKyAgcnRjOjpTZXF1ZW5jZWRUYXNrQ2hlY2tlciBzZXF1ZW5jZWRfY2hlY2tlcl87Cisg
IFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoQ29uZ2VzdGlvbkNvbnRyb2xIYW5k
bGVyKTsKK307Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisjZW5kaWYgIC8vIE1PRFVMRVNfQ09O
R0VTVElPTl9DT05UUk9MTEVSX1JUUF9DT05UUk9MX0hBTkRMRVJfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL3J0cC9pbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL3J0cC9pbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRy
b2xsZXIuaAppbmRleCBlZmU0ZDJmZjQ3NzU2YjQ0MWY1MmQ2NGYxNDliZjhhMmVjYWMyODU0Li41
NTQ2NWNiNzVmODhmNjk1Y2VjOTg2Njk3ZGZlYmRkZWI5MTFmMzY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9ydHAvaW5jbHVkZS9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL2luY2x1ZGUvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29u
dHJvbGxlci5oCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9uZXR3
b3JrX3R5cGVzLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQv
aW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9pbmNsdWRl
L3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3BhY2VyX2NvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvY29udHJvbF9oYW5kbGVy
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3RyYW5zcG9y
dF9mZWVkYmFja19hZGFwdGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZS5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCkBAIC00
MCwxOCArNDAsMTEgQEAgc3RydWN0IFNlbnRQYWNrZXQ7CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAog
Y2xhc3MgQ2xvY2s7Ci1jbGFzcyBSYXRlTGltaXRlcjsKIGNsYXNzIFJ0Y0V2ZW50TG9nOwogCiBu
YW1lc3BhY2Ugd2VicnRjX2NjIHsKIAogbmFtZXNwYWNlIHNlbmRfc2lkZV9jY19pbnRlcm5hbCB7
Ci0vLyBUaGlzIGlzIHVzZWQgdG8gb2JzZXJ2ZSB0aGUgbmV0d29yayBjb250cm9sbGVyIHN0YXRl
IGFuZCByb3V0ZSBjYWxscyB0bwotLy8gdGhlIHByb3BlciBoYW5kbGVyLiBJdCBhbHNvIGtlZXBz
IGNhY2hlZCB2YWx1ZXMgZm9yIHNhZmUgYXN5bmNocm9ub3VzIHVzZS4KLS8vIFRoaXMgbWFrZXMg
c3VyZSB0aGF0IHRoaW5ncyBydW5uaW5nIG9uIHRoZSB3b3JrZXIgcXVldWUgY2FuJ3QgYWNjZXNz
IHN0YXRlCi0vLyBpbiBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyLCB3aGljaCB3b3VsZCBy
aXNrIGNhdXNpbmcgZGF0YSByYWNlIG9uCi0vLyBkZXN0cnVjdGlvbiB1bmxlc3MgbWVtYmVycyBh
cmUgcHJvcGVybHkgb3JkZXJlZC4KLWNsYXNzIENvbnRyb2xIYW5kbGVyOwogCiAvLyBUT0RPKHNy
dGUpOiBNYWtlIHN1cmUgdGhlIFBlcmlvZGljVGFzayBpbXBsZW1lbnRhdGlvbiBpcyByZXVzYWJs
ZSBhbmQgbW92ZSBpdAogLy8gdG8gdGFza19xdWV1ZS5oLgpAQCAtMTgyLDEwICsxNzUsNyBAQCBj
bGFzcyBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyCiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+CiAgICAgICBjb250cm9sbGVyX2Zh
Y3RvcnlfZmFsbGJhY2tfIFJUQ19HVUFSREVEX0JZKHRhc2tfcXVldWVfKTsKIAotICBjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8UGFjZXJDb250cm9sbGVyPiBwYWNlcl9jb250cm9sbGVyXwotICAgICAg
UlRDX0dVQVJERURfQlkodGFza19xdWV1ZV8pOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxzZW5kX3Np
ZGVfY2NfaW50ZXJuYWw6OkNvbnRyb2xIYW5kbGVyPiBjb250cm9sX2hhbmRsZXJfCisgIHN0ZDo6
dW5pcXVlX3B0cjxDb25nZXN0aW9uQ29udHJvbEhhbmRsZXI+IGNvbnRyb2xfaGFuZGxlcl8KICAg
ICAgIFJUQ19HVUFSREVEX0JZKHRhc2tfcXVldWVfKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya0NvbnRyb2xsZXJJbnRlcmZhY2U+IGNvbnRyb2xsZXJfCkBAIC0yMDEsNiArMTkxLDcgQEAg
Y2xhc3MgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcgogICBOZXR3b3JrQ29udHJvbGxlckNv
bmZpZyBpbml0aWFsX2NvbmZpZ18gUlRDX0dVQVJERURfQlkodGFza19xdWV1ZV8pOwogICBTdHJl
YW1zQ29uZmlnIHN0cmVhbXNfY29uZmlnXyBSVENfR1VBUkRFRF9CWSh0YXNrX3F1ZXVlXyk7CiAK
KyAgY29uc3QgYm9vbCByZXNldF9mZWVkYmFja19vbl9yb3V0ZV9jaGFuZ2VfOwogICBjb25zdCBi
b29sIHNlbmRfc2lkZV9id2Vfd2l0aF9vdmVyaGVhZF87CiAgIC8vIFRyYW5zcG9ydCBvdmVyaGVh
ZCBpcyB3cml0dGVuIGJ5IE9uTmV0d29ya1JvdXRlQ2hhbmdlZCBhbmQgcmVhZCBieQogICAvLyBB
ZGRQYWNrZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvcGFjZXJfY29udHJvbGxl
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9wYWNlcl9jb250cm9sbGVyLmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhZjA2MmU4ODFlZWVmMjA4MDBiZTAwNzdiY2M5Nzc0MzMzMzdj
ZDU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL3J0cC9wYWNlcl9jb250cm9sbGVyLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNzAg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9ydHAvcGFjZXJfY29udHJvbGxlci5oIgotCi0jaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotCi1uYW1lc3Bh
Y2Ugd2VicnRjIHsKLQotUGFjZXJDb250cm9sbGVyOjpQYWNlckNvbnRyb2xsZXIoUGFjZWRTZW5k
ZXIqIHBhY2VyKSA6IHBhY2VyXyhwYWNlcikgewotICBzZXF1ZW5jZWRfY2hlY2tlcl8uRGV0YWNo
KCk7Ci19Ci0KLVBhY2VyQ29udHJvbGxlcjo6flBhY2VyQ29udHJvbGxlcigpID0gZGVmYXVsdDsK
LQotdm9pZCBQYWNlckNvbnRyb2xsZXI6Ok9uQ29uZ2VzdGlvbldpbmRvdyhEYXRhU2l6ZSBjb25n
ZXN0aW9uX3dpbmRvdykgewotICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNlcXVl
bmNlZF9jaGVja2VyXyk7Ci0gIGlmIChjb25nZXN0aW9uX3dpbmRvdy5Jc0Zpbml0ZSgpKQotICAg
IHBhY2VyXy0+U2V0Q29uZ2VzdGlvbldpbmRvdyhjb25nZXN0aW9uX3dpbmRvdy5ieXRlcygpKTsK
LSAgZWxzZQotICAgIHBhY2VyXy0+U2V0Q29uZ2VzdGlvbldpbmRvdyhQYWNlZFNlbmRlcjo6a05v
Q29uZ2VzdGlvbldpbmRvdyk7Ci19Ci0KLXZvaWQgUGFjZXJDb250cm9sbGVyOjpPbk5ldHdvcmtB
dmFpbGFiaWxpdHkoTmV0d29ya0F2YWlsYWJpbGl0eSBtc2cpIHsKLSAgUlRDX0RDSEVDS19DQUxM
RURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICBuZXR3b3JrX2F2YWlsYWJs
ZV8gPSBtc2cubmV0d29ya19hdmFpbGFibGU7Ci0gIHBhY2VyXy0+VXBkYXRlT3V0c3RhbmRpbmdE
YXRhKDApOwotICBTZXRQYWNlclN0YXRlKCFtc2cubmV0d29ya19hdmFpbGFibGUpOwotfQotCi12
b2lkIFBhY2VyQ29udHJvbGxlcjo6T25OZXR3b3JrUm91dGVDaGFuZ2UoTmV0d29ya1JvdXRlQ2hh
bmdlKSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNr
ZXJfKTsKLSAgcGFjZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoMCk7Ci19Ci0KLXZvaWQgUGFj
ZXJDb250cm9sbGVyOjpPblBhY2VyQ29uZmlnKFBhY2VyQ29uZmlnIG1zZykgewotICBSVENfRENI
RUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0gIERhdGFSYXRl
IHBhY2luZ19yYXRlID0gbXNnLmRhdGFfd2luZG93IC8gbXNnLnRpbWVfd2luZG93OwotICBEYXRh
UmF0ZSBwYWRkaW5nX3JhdGUgPSBtc2cucGFkX3dpbmRvdyAvIG1zZy50aW1lX3dpbmRvdzsKLSAg
cGFjZXJfLT5TZXRQYWNpbmdSYXRlcyhwYWNpbmdfcmF0ZS5icHMoKSwgcGFkZGluZ19yYXRlLmJw
cygpKTsKLX0KLQotdm9pZCBQYWNlckNvbnRyb2xsZXI6Ok9uUHJvYmVDbHVzdGVyQ29uZmlnKFBy
b2JlQ2x1c3RlckNvbmZpZyBjb25maWcpIHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElB
TExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICBpbnQ2NF90IGJpdHJhdGVfYnBzID0gY29uZmln
LnRhcmdldF9kYXRhX3JhdGUuYnBzKCk7Ci0gIHBhY2VyXy0+Q3JlYXRlUHJvYmVDbHVzdGVyKGJp
dHJhdGVfYnBzKTsKLX0KLQotdm9pZCBQYWNlckNvbnRyb2xsZXI6Ok9uT3V0c3RhbmRpbmdEYXRh
KERhdGFTaXplIGluX2ZsaWdodF9kYXRhKSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJ
QUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKLSAgcGFjZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0Rh
dGEoaW5fZmxpZ2h0X2RhdGEuYnl0ZXMoKSk7Ci19Ci0KLXZvaWQgUGFjZXJDb250cm9sbGVyOjpT
ZXRQYWNlclN0YXRlKGJvb2wgcGF1c2VkKSB7Ci0gIGlmIChwYXVzZWQgJiYgIXBhY2VyX3BhdXNl
ZF8pCi0gICAgcGFjZXJfLT5QYXVzZSgpOwotICBlbHNlIGlmICghcGF1c2VkICYmIHBhY2VyX3Bh
dXNlZF8pCi0gICAgcGFjZXJfLT5SZXN1bWUoKTsKLSAgcGFjZXJfcGF1c2VkXyA9IHBhdXNlZDsK
LX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
cnRwL3BhY2VyX2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9wYWNlcl9jb250cm9s
bGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NzhiNzg0ODkwMzU1NDkxNDc0
YWVlZWU1NjMxMmJlMzc0OTgxMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3BhY2VyX2NvbnRyb2xsZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0g
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVm
IE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX1JUUF9QQUNFUl9DT05UUk9MTEVSX0hfCi0j
ZGVmaW5lIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX1JUUF9QQUNFUl9DT05UUk9MTEVS
X0hfCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdv
cmtfdHlwZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyLmgiCi0KLW5hbWVzcGFjZSB3
ZWJydGMgewotY2xhc3MgQ2xvY2s7Ci0KLS8vIFdyYXBwZXIgY2xhc3MgdG8gY29udHJvbCBwYWNl
ciB1c2luZyB0YXNrIHF1ZXVlcy4gTm90ZSB0aGF0IHRoaXMgY2xhc3MgaXMKLS8vIG9ubHkgZGVz
aWduZWQgdG8gYmUgdXNlZCBmcm9tIGEgc2luZ2xlIHRhc2sgcXVldWUgYW5kIGhhcyBubyBidWls
dCBpbgotLy8gY29uY3VycmVuY3kgc2FmZXR5LgotLy8gVE9ETyhzcnRlKTogSW50ZWdyYXRlIHRo
aXMgaW50ZXJmYWNlIGRpcmVjdGx5IGludG8gUGFjZWRTZW5kZXIuCi1jbGFzcyBQYWNlckNvbnRy
b2xsZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgUGFjZXJDb250cm9sbGVyKFBhY2VkU2VuZGVy
KiBwYWNlcik7Ci0gIH5QYWNlckNvbnRyb2xsZXIoKTsKLSAgdm9pZCBPbkNvbmdlc3Rpb25XaW5k
b3coRGF0YVNpemUgbXNnKTsKLSAgdm9pZCBPbk5ldHdvcmtBdmFpbGFiaWxpdHkoTmV0d29ya0F2
YWlsYWJpbGl0eSBtc2cpOwotICB2b2lkIE9uTmV0d29ya1JvdXRlQ2hhbmdlKE5ldHdvcmtSb3V0
ZUNoYW5nZSBtc2cpOwotICB2b2lkIE9uT3V0c3RhbmRpbmdEYXRhKERhdGFTaXplIGluX2ZsaWdo
dF9kYXRhKTsKLSAgdm9pZCBPblBhY2VyQ29uZmlnKFBhY2VyQ29uZmlnIG1zZyk7Ci0gIHZvaWQg
T25Qcm9iZUNsdXN0ZXJDb25maWcoUHJvYmVDbHVzdGVyQ29uZmlnIG1zZyk7Ci0KLSBwcml2YXRl
OgotICB2b2lkIFNldFBhY2VyU3RhdGUoYm9vbCBwYXVzZWQpOwotICBQYWNlZFNlbmRlciogY29u
c3QgcGFjZXJfOwotCi0gIGFic2w6Om9wdGlvbmFsPFBhY2VyQ29uZmlnPiBjdXJyZW50X3BhY2Vy
X2NvbmZpZ187Ci0gIGJvb2wgcGFjZXJfcGF1c2VkXyA9IGZhbHNlOwotICBib29sIG5ldHdvcmtf
YXZhaWxhYmxlXyA9IHRydWU7Ci0KLSAgcnRjOjpTZXF1ZW5jZWRUYXNrQ2hlY2tlciBzZXF1ZW5j
ZWRfY2hlY2tlcl87Ci0gIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoUGFjZXJD
b250cm9sbGVyKTsKLX07Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0jZW5kaWYgIC8vIE1PRFVM
RVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX1JUUF9QQUNFUl9DT05UUk9MTEVSX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9ydHAvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNj
CmluZGV4IDI2NmE1ZGM3NDAwY2JkMTEwNzkyOTRmNTk4MDljYWQ4N2JjNTE1ODQuLjk4MjM4MGY0
NTdhZWQzYzg0ZmUzZGQwOTdiMWY1NGRiYjc3NjE1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL3J0cC9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjCkBAIC0xNSwxOSAr
MTUsMTkgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogI2luY2x1ZGUg
ImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvZ29vZ19jY19m
YWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmgiCi0jaW5j
bHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvY29uZ2VzdGlvbl93aW5kb3dfcHVz
aGJhY2tfY29udHJvbGxlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvaW5jbHVkZS9nb29nX2NjX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvYmluZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXR3
b3JrL3NlbnRfcGFja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252
ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2Vx
dWVuY2VkX3Rhc2tfY2hlY2tlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKQEAgLTM3LDcwICszNyw4IEBAIG5hbWVzcGFjZSB3ZWJy
dGMgewogbmFtZXNwYWNlIHdlYnJ0Y19jYyB7CiBuYW1lc3BhY2UgewogdXNpbmcgc2VuZF9zaWRl
X2NjX2ludGVybmFsOjpQZXJpb2RpY1Rhc2s7Ci0KLWNvbnN0IGNoYXIga0N3bmRFeHBlcmltZW50
W10gPSAiV2ViUlRDLUN3bmRFeHBlcmltZW50IjsKLQotLy8gV2hlbiBDb25nZXN0aW9uV2luZG93
UHVzaGJhY2sgaXMgZW5hYmxlZCwgdGhlIHBhY2VyIGlzIG9ibGl2aW91cyB0bwotLy8gdGhlIGNv
bmdlc3Rpb24gd2luZG93LiBUaGUgcmVsYXRpb24gYmV0d2VlbiBvdXRzdGFuZGluZyBkYXRhIGFu
ZAotLy8gdGhlIGNvbmdlc3Rpb24gd2luZG93IGFmZmVjdHMgZW5jb2RlciBhbGxvY2F0aW9ucyBk
aXJlY3RseS4KLWNvbnN0IGNoYXIga0Nvbmdlc3Rpb25QdXNoYmFja0V4cGVyaW1lbnRbXSA9ICJX
ZWJSVEMtQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrIjsKLQotLy8gV2hlbiBQYWNlclB1c2hiYWNr
RXhwZXJpbWVudCBpcyBlbmFibGVkLCBidWlsZC11cCBpbiB0aGUgcGFjZXIgZHVlIHRvCi0vLyB0
aGUgY29uZ2VzdGlvbiB3aW5kb3cgYW5kL29yIGRhdGEgc3Bpa2VzIHJlZHVjZXMgZW5jb2RlciBh
bGxvY2F0aW9ucy4KLWNvbnN0IGNoYXIga1BhY2VyUHVzaGJhY2tFeHBlcmltZW50W10gPSAiV2Vi
UlRDLVBhY2VyUHVzaGJhY2tFeHBlcmltZW50IjsKIGNvbnN0IGludDY0X3QgUGFjZXJRdWV1ZVVw
ZGF0ZUludGVydmFsTXMgPSAyNTsKIAotYm9vbCBJc1BhY2VyUHVzaGJhY2tFeHBlcmltZW50RW5h
YmxlZCgpIHsKLSAgcmV0dXJuIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrUGFjZXJQ
dXNoYmFja0V4cGVyaW1lbnQpOwotfQotCi1ib29sIElzQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNr
RXhwZXJpbWVudEVuYWJsZWQoKSB7Ci0gIHJldHVybiB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0Vu
YWJsZWQoa0Nvbmdlc3Rpb25QdXNoYmFja0V4cGVyaW1lbnQpICYmCi0gICAgICAgICB3ZWJydGM6
OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa0N3bmRFeHBlcmltZW50KTsKLX0KLQotc3RkOjp1bmlx
dWVfcHRyPENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI+Ci1NYXliZUluaXRhbGl6
ZUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXIoKSB7Ci0gIHJldHVybiBJc0Nvbmdl
c3Rpb25XaW5kb3dQdXNoYmFja0V4cGVyaW1lbnRFbmFibGVkKCkKLSAgICAgICAgICAgICA/IGFi
c2w6Om1ha2VfdW5pcXVlPENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI+KCkKLSAg
ICAgICAgICAgICA6IG51bGxwdHI7Ci19Ci0KLXZvaWQgU29ydFBhY2tldEZlZWRiYWNrVmVjdG9y
KHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UGFja2V0RmVlZGJhY2s+KiBpbnB1dCkgewotICBzdGQ6OnNv
cnQoaW5wdXQtPmJlZ2luKCksIGlucHV0LT5lbmQoKSwgUGFja2V0RmVlZGJhY2tDb21wYXJhdG9y
KCkpOwotfQotCi1QYWNrZXRSZXN1bHQgTmV0d29ya1BhY2tldEZlZWRiYWNrRnJvbVJ0cFBhY2tl
dEZlZWRiYWNrKAotICAgIGNvbnN0IHdlYnJ0Yzo6UGFja2V0RmVlZGJhY2smIHBmKSB7Ci0gIFBh
Y2tldFJlc3VsdCBmZWVkYmFjazsKLSAgaWYgKHBmLmFycml2YWxfdGltZV9tcyA9PSB3ZWJydGM6
OlBhY2tldEZlZWRiYWNrOjprTm90UmVjZWl2ZWQpCi0gICAgZmVlZGJhY2sucmVjZWl2ZV90aW1l
ID0gVGltZXN0YW1wOjpQbHVzSW5maW5pdHkoKTsKLSAgZWxzZQotICAgIGZlZWRiYWNrLnJlY2Vp
dmVfdGltZSA9IFRpbWVzdGFtcDo6bXMocGYuYXJyaXZhbF90aW1lX21zKTsKLSAgaWYgKHBmLnNl
bmRfdGltZV9tcyAhPSB3ZWJydGM6OlBhY2tldEZlZWRiYWNrOjprTm9TZW5kVGltZSkgewotICAg
IGZlZWRiYWNrLnNlbnRfcGFja2V0ID0gU2VudFBhY2tldCgpOwotICAgIGZlZWRiYWNrLnNlbnRf
cGFja2V0LT5zZXF1ZW5jZV9udW1iZXIgPSBwZi5sb25nX3NlcXVlbmNlX251bWJlcjsKLSAgICBm
ZWVkYmFjay5zZW50X3BhY2tldC0+c2VuZF90aW1lID0gVGltZXN0YW1wOjptcyhwZi5zZW5kX3Rp
bWVfbXMpOwotICAgIGZlZWRiYWNrLnNlbnRfcGFja2V0LT5zaXplID0gRGF0YVNpemU6OmJ5dGVz
KHBmLnBheWxvYWRfc2l6ZSk7Ci0gICAgZmVlZGJhY2suc2VudF9wYWNrZXQtPnBhY2luZ19pbmZv
ID0gcGYucGFjaW5nX2luZm87Ci0gIH0KLSAgcmV0dXJuIGZlZWRiYWNrOwotfQotCi1zdGQ6OnZl
Y3RvcjxQYWNrZXRSZXN1bHQ+IFBhY2tldFJlc3VsdHNGcm9tUnRwRmVlZGJhY2tWZWN0b3IoCi0g
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+JiBmZWVkYmFja192ZWN0b3IpIHsK
LSAgUlRDX0RDSEVDSyhzdGQ6OmlzX3NvcnRlZChmZWVkYmFja192ZWN0b3IuYmVnaW4oKSwgZmVl
ZGJhY2tfdmVjdG9yLmVuZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tldEZl
ZWRiYWNrQ29tcGFyYXRvcigpKSk7Ci0KLSAgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiBwYWNr
ZXRfZmVlZGJhY2tzOwotICBwYWNrZXRfZmVlZGJhY2tzLnJlc2VydmUoZmVlZGJhY2tfdmVjdG9y
LnNpemUoKSk7Ci0gIGZvciAoY29uc3QgUGFja2V0RmVlZGJhY2smIHJ0cF9mZWVkYmFjayA6IGZl
ZWRiYWNrX3ZlY3RvcikgewotICAgIGF1dG8gZmVlZGJhY2sgPSBOZXR3b3JrUGFja2V0RmVlZGJh
Y2tGcm9tUnRwUGFja2V0RmVlZGJhY2socnRwX2ZlZWRiYWNrKTsKLSAgICBwYWNrZXRfZmVlZGJh
Y2tzLnB1c2hfYmFjayhmZWVkYmFjayk7Ci0gIH0KLSAgcmV0dXJuIHBhY2tldF9mZWVkYmFja3M7
Ci19Ci0KIFRhcmdldFJhdGVDb25zdHJhaW50cyBDb252ZXJ0Q29uc3RyYWludHMoaW50IG1pbl9i
aXRyYXRlX2JwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IG1heF9iaXRyYXRlX2JwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHN0YXJ0X2JpdHJhdGVfYnBzLApAQCAtMTY2LDE3NyArMTA0LDYgQEAgc3RhdGljIFBl
cmlvZGljVGFzayogU3RhcnRQZXJpb2RpY1Rhc2socnRjOjpUYXNrUXVldWUqIHRhc2tfcXVldWUs
CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1uYW1lc3BhY2Ugc2VuZF9zaWRlX2NjX2ludGVybmFsIHsK
LWNsYXNzIENvbnRyb2xIYW5kbGVyIHsKLSBwdWJsaWM6Ci0gIENvbnRyb2xIYW5kbGVyKE5ldHdv
cmtDaGFuZ2VkT2JzZXJ2ZXIqIG9ic2VydmVyLAotICAgICAgICAgICAgICAgICBQYWNlckNvbnRy
b2xsZXIqIHBhY2VyX2NvbnRyb2xsZXIsCi0gICAgICAgICAgICAgICAgIGNvbnN0IENsb2NrKiBj
bG9jayk7Ci0KLSAgdm9pZCBQb3N0VXBkYXRlcyhOZXR3b3JrQ29udHJvbFVwZGF0ZSB1cGRhdGUp
OwotCi0gIHZvaWQgT25OZXR3b3JrQXZhaWxhYmlsaXR5KE5ldHdvcmtBdmFpbGFiaWxpdHkgbXNn
KTsKLSAgdm9pZCBPbk91dHN0YW5kaW5nRGF0YShEYXRhU2l6ZSBpbl9mbGlnaHRfZGF0YSk7Ci0g
IHZvaWQgT25QYWNlclF1ZXVlVXBkYXRlKFRpbWVEZWx0YSBleHBlY3RlZF9xdWV1ZV90aW1lKTsK
LQotICBhYnNsOjpvcHRpb25hbDxUYXJnZXRUcmFuc2ZlclJhdGU+IGxhc3RfdHJhbnNmZXJfcmF0
ZSgpOwotCi0gcHJpdmF0ZToKLSAgdm9pZCBPbk5ldHdvcmtJbnZhbGlkYXRpb24oKTsKLSAgYm9v
bCBHZXROZXR3b3JrUGFyYW1ldGVycyhpbnQzMl90KiBlc3RpbWF0ZWRfYml0cmF0ZV9icHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogZnJhY3Rpb25fbG9zcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90KiBydHRfbXMpOwotICBib29sIElzU2VuZFF1
ZXVlRnVsbCgpIGNvbnN0OwotICBib29sIEhhc05ldHdvcmtQYXJhbWV0ZXJzVG9SZXBvcnRDaGFu
Z2VkKGludDY0X3QgYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3NzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0KTsKLSAgTmV0d29ya0NoYW5nZWRPYnNl
cnZlciogb2JzZXJ2ZXJfID0gbnVsbHB0cjsKLSAgUGFjZXJDb250cm9sbGVyKiBwYWNlcl9jb250
cm9sbGVyXzsKLQotICBhYnNsOjpvcHRpb25hbDxUYXJnZXRUcmFuc2ZlclJhdGU+IGN1cnJlbnRf
dGFyZ2V0X3JhdGVfbXNnXzsKLSAgYm9vbCBuZXR3b3JrX2F2YWlsYWJsZV8gPSB0cnVlOwotICBp
bnQ2NF90IGxhc3RfcmVwb3J0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzXyA9IDA7Ci0gIHVpbnQ4X3Qg
bGFzdF9yZXBvcnRlZF9mcmFjdGlvbl9sb3NzXyA9IDA7Ci0gIGludDY0X3QgbGFzdF9yZXBvcnRl
ZF9ydHRfbXNfID0gMDsKLSAgY29uc3QgYm9vbCBwYWNlcl9wdXNoYmFja19leHBlcmltZW50XyA9
IGZhbHNlOwotICB1aW50MzJfdCBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzXzsKLSAg
aW50NjRfdCBwYWNlcl9leHBlY3RlZF9xdWV1ZV9tc18gPSAwOwotICBkb3VibGUgZW5jb2Rpbmdf
cmF0ZV9yYXRpb18gPSAxLjA7Ci0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDb25nZXN0aW9uV2lu
ZG93UHVzaGJhY2tDb250cm9sbGVyPgotICAgICAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tf
Y29udHJvbGxlcl87Ci0KLSAgcnRjOjpTZXF1ZW5jZWRUYXNrQ2hlY2tlciBzZXF1ZW5jZWRfY2hl
Y2tlcl87Ci0gIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoQ29udHJvbEhhbmRs
ZXIpOwotfTsKLQotQ29udHJvbEhhbmRsZXI6OkNvbnRyb2xIYW5kbGVyKE5ldHdvcmtDaGFuZ2Vk
T2JzZXJ2ZXIqIG9ic2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2Vy
Q29udHJvbGxlciogcGFjZXJfY29udHJvbGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBDbG9jayogY2xvY2spCi0gICAgOiBvYnNlcnZlcl8ob2JzZXJ2ZXIpLAotICAg
ICAgcGFjZXJfY29udHJvbGxlcl8ocGFjZXJfY29udHJvbGxlciksCi0gICAgICBwYWNlcl9wdXNo
YmFja19leHBlcmltZW50XyhJc1BhY2VyUHVzaGJhY2tFeHBlcmltZW50RW5hYmxlZCgpKSwKLSAg
ICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfKAotICAgICAgICAgIE1h
eWJlSW5pdGFsaXplQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcigpKSB7Ci0gIHNl
cXVlbmNlZF9jaGVja2VyXy5EZXRhY2goKTsKLX0KLQotdm9pZCBDb250cm9sSGFuZGxlcjo6UG9z
dFVwZGF0ZXMoTmV0d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRlKSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FM
TEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKLSAgaWYgKHVwZGF0ZS5jb25n
ZXN0aW9uX3dpbmRvdykgewotICAgIGlmIChjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250
cm9sbGVyXykgewotICAgICAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8t
PlNldERhdGFXaW5kb3coCi0gICAgICAgICAgdXBkYXRlLmNvbmdlc3Rpb25fd2luZG93LnZhbHVl
KCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICBwYWNlcl9jb250cm9sbGVyXy0+T25Db25nZXN0aW9u
V2luZG93KCp1cGRhdGUuY29uZ2VzdGlvbl93aW5kb3cpOwotICAgIH0KLSAgfQotICBpZiAodXBk
YXRlLnBhY2VyX2NvbmZpZykgewotICAgIHBhY2VyX2NvbnRyb2xsZXJfLT5PblBhY2VyQ29uZmln
KCp1cGRhdGUucGFjZXJfY29uZmlnKTsKLSAgfQotICBmb3IgKGNvbnN0IGF1dG8mIHByb2JlIDog
dXBkYXRlLnByb2JlX2NsdXN0ZXJfY29uZmlncykgewotICAgIHBhY2VyX2NvbnRyb2xsZXJfLT5P
blByb2JlQ2x1c3RlckNvbmZpZyhwcm9iZSk7Ci0gIH0KLSAgaWYgKHVwZGF0ZS50YXJnZXRfcmF0
ZSkgewotICAgIGN1cnJlbnRfdGFyZ2V0X3JhdGVfbXNnXyA9ICp1cGRhdGUudGFyZ2V0X3JhdGU7
Ci0gICAgT25OZXR3b3JrSW52YWxpZGF0aW9uKCk7Ci0gIH0KLX0KLQotdm9pZCBDb250cm9sSGFu
ZGxlcjo6T25OZXR3b3JrQXZhaWxhYmlsaXR5KE5ldHdvcmtBdmFpbGFiaWxpdHkgbXNnKSB7Ci0g
IFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKLSAg
bmV0d29ya19hdmFpbGFibGVfID0gbXNnLm5ldHdvcmtfYXZhaWxhYmxlOwotICBPbk5ldHdvcmtJ
bnZhbGlkYXRpb24oKTsKLX0KLQotdm9pZCBDb250cm9sSGFuZGxlcjo6T25PdXRzdGFuZGluZ0Rh
dGEoRGF0YVNpemUgaW5fZmxpZ2h0X2RhdGEpIHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVO
VElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICBpZiAoY29uZ2VzdGlvbl93aW5kb3dfcHVz
aGJhY2tfY29udHJvbGxlcl8pIHsKLSAgICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250
cm9sbGVyXy0+VXBkYXRlT3V0c3RhbmRpbmdEYXRhKAotICAgICAgICBpbl9mbGlnaHRfZGF0YS5i
eXRlcygpKTsKLSAgfQotICBPbk5ldHdvcmtJbnZhbGlkYXRpb24oKTsKLX0KLQotdm9pZCBDb250
cm9sSGFuZGxlcjo6T25QYWNlclF1ZXVlVXBkYXRlKFRpbWVEZWx0YSBleHBlY3RlZF9xdWV1ZV90
aW1lKSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNr
ZXJfKTsKLSAgcGFjZXJfZXhwZWN0ZWRfcXVldWVfbXNfID0gZXhwZWN0ZWRfcXVldWVfdGltZS5t
cygpOwotICBPbk5ldHdvcmtJbnZhbGlkYXRpb24oKTsKLX0KLQotdm9pZCBDb250cm9sSGFuZGxl
cjo6T25OZXR3b3JrSW52YWxpZGF0aW9uKCkgewotICBpZiAoIWN1cnJlbnRfdGFyZ2V0X3JhdGVf
bXNnXy5oYXNfdmFsdWUoKSkKLSAgICByZXR1cm47Ci0KLSAgdWludDMyX3QgdGFyZ2V0X2JpdHJh
dGVfYnBzID0gY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfLT50YXJnZXRfcmF0ZS5icHMoKTsKLSAg
aW50NjRfdCBydHRfbXMgPQotICAgICAgY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfLT5uZXR3b3Jr
X2VzdGltYXRlLnJvdW5kX3RyaXBfdGltZS5tcygpOwotICBmbG9hdCBsb3NzX3JhdGVfcmF0aW8g
PQotICAgICAgY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfLT5uZXR3b3JrX2VzdGltYXRlLmxvc3Nf
cmF0ZV9yYXRpbzsKLQotICBpbnQgbG9zc19yYXRpb18yNTUgPSBsb3NzX3JhdGVfcmF0aW8gKiAy
NTU7Ci0gIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcyA9Ci0gICAgICBydGM6OmRjaGVja2VkX2Nhc3Q8
dWludDhfdD4ocnRjOjpTYWZlQ2xhbXAobG9zc19yYXRpb18yNTUsIDAsIDI1NSkpOwotCi0gIGlu
dDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcyA9Ci0gICAgICBjdXJyZW50X3RhcmdldF9yYXRlX21z
Z18tPm5ldHdvcmtfZXN0aW1hdGUuYndlX3BlcmlvZC5tcygpOwotCi0gIGlmICghbmV0d29ya19h
dmFpbGFibGVfKSB7Ci0gICAgdGFyZ2V0X2JpdHJhdGVfYnBzID0gMDsKLSAgfSBlbHNlIGlmIChj
b25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXykgewotICAgIHRhcmdldF9iaXRy
YXRlX2JwcyA9Ci0gICAgICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJf
LT5VcGRhdGVUYXJnZXRCaXRyYXRlKAotICAgICAgICAgICAgdGFyZ2V0X2JpdHJhdGVfYnBzKTsK
LSAgfSBlbHNlIGlmICghcGFjZXJfcHVzaGJhY2tfZXhwZXJpbWVudF8pIHsKLSAgICB0YXJnZXRf
Yml0cmF0ZV9icHMgPSBJc1NlbmRRdWV1ZUZ1bGwoKSA/IDAgOiB0YXJnZXRfYml0cmF0ZV9icHM7
Ci0gIH0gZWxzZSB7Ci0gICAgaW50NjRfdCBxdWV1ZV9sZW5ndGhfbXMgPSBwYWNlcl9leHBlY3Rl
ZF9xdWV1ZV9tc187Ci0KLSAgICBpZiAocXVldWVfbGVuZ3RoX21zID09IDApIHsKLSAgICAgIGVu
Y29kaW5nX3JhdGVfcmF0aW9fID0gMS4wOwotICAgIH0gZWxzZSBpZiAocXVldWVfbGVuZ3RoX21z
ID4gNTApIHsKLSAgICAgIGRvdWJsZSBlbmNvZGluZ19yYXRpbyA9IDEuMCAtIHF1ZXVlX2xlbmd0
aF9tcyAvIDEwMDAuMDsKLSAgICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gc3RkOjptaW4oZW5j
b2RpbmdfcmF0ZV9yYXRpb18sIGVuY29kaW5nX3JhdGlvKTsKLSAgICAgIGVuY29kaW5nX3JhdGVf
cmF0aW9fID0gc3RkOjptYXgoZW5jb2RpbmdfcmF0ZV9yYXRpb18sIDAuMCk7Ci0gICAgfQotCi0g
ICAgdGFyZ2V0X2JpdHJhdGVfYnBzICo9IGVuY29kaW5nX3JhdGVfcmF0aW9fOwotICAgIHRhcmdl
dF9iaXRyYXRlX2JwcyA9IHRhcmdldF9iaXRyYXRlX2JwcyA8IDUwMDAwID8gMCA6IHRhcmdldF9i
aXRyYXRlX2JwczsKLSAgfQotICBpZiAoSGFzTmV0d29ya1BhcmFtZXRlcnNUb1JlcG9ydENoYW5n
ZWQodGFyZ2V0X2JpdHJhdGVfYnBzLCBmcmFjdGlvbl9sb3NzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnR0X21zKSkgewotICAgIG9ic2VydmVyXy0+T25OZXR3
b3JrQ2hhbmdlZCh0YXJnZXRfYml0cmF0ZV9icHMsIGZyYWN0aW9uX2xvc3MsIHJ0dF9tcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmluZ19pbnRlcnZhbF9tcyk7Ci0gIH0K
LX0KLWJvb2wgQ29udHJvbEhhbmRsZXI6Okhhc05ldHdvcmtQYXJhbWV0ZXJzVG9SZXBvcnRDaGFu
Z2VkKAotICAgIGludDY0X3QgdGFyZ2V0X2JpdHJhdGVfYnBzLAotICAgIHVpbnQ4X3QgZnJhY3Rp
b25fbG9zcywKLSAgICBpbnQ2NF90IHJ0dF9tcykgewotICBib29sIGNoYW5nZWQgPSBsYXN0X3Jl
cG9ydGVkX3RhcmdldF9iaXRyYXRlX2Jwc18gIT0gdGFyZ2V0X2JpdHJhdGVfYnBzIHx8Ci0gICAg
ICAgICAgICAgICAgICh0YXJnZXRfYml0cmF0ZV9icHMgPiAwICYmCi0gICAgICAgICAgICAgICAg
ICAobGFzdF9yZXBvcnRlZF9mcmFjdGlvbl9sb3NzXyAhPSBmcmFjdGlvbl9sb3NzIHx8Ci0gICAg
ICAgICAgICAgICAgICAgbGFzdF9yZXBvcnRlZF9ydHRfbXNfICE9IHJ0dF9tcykpOwotICBpZiAo
Y2hhbmdlZCAmJgotICAgICAgKGxhc3RfcmVwb3J0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzXyA9PSAw
IHx8IHRhcmdldF9iaXRyYXRlX2JwcyA9PSAwKSkgewotICAgIFJUQ19MT0coTFNfSU5GTykgPDwg
IkJpdHJhdGUgZXN0aW1hdGUgc3RhdGUgY2hhbmdlZCwgQldFOiAiCi0gICAgICAgICAgICAgICAg
ICAgICA8PCB0YXJnZXRfYml0cmF0ZV9icHMgPDwgIiBicHMuIjsKLSAgfQotICBsYXN0X3JlcG9y
dGVkX3RhcmdldF9iaXRyYXRlX2Jwc18gPSB0YXJnZXRfYml0cmF0ZV9icHM7Ci0gIGxhc3RfcmVw
b3J0ZWRfZnJhY3Rpb25fbG9zc18gPSBmcmFjdGlvbl9sb3NzOwotICBsYXN0X3JlcG9ydGVkX3J0
dF9tc18gPSBydHRfbXM7Ci0gIHJldHVybiBjaGFuZ2VkOwotfQotCi1ib29sIENvbnRyb2xIYW5k
bGVyOjpJc1NlbmRRdWV1ZUZ1bGwoKSBjb25zdCB7Ci0gIHJldHVybiBwYWNlcl9leHBlY3RlZF9x
dWV1ZV9tc18gPiBQYWNlZFNlbmRlcjo6a01heFF1ZXVlTGVuZ3RoTXM7Ci19Ci0KLWFic2w6Om9w
dGlvbmFsPFRhcmdldFRyYW5zZmVyUmF0ZT4gQ29udHJvbEhhbmRsZXI6Omxhc3RfdHJhbnNmZXJf
cmF0ZSgpIHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hl
Y2tlcl8pOwotICByZXR1cm4gY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfOwotfQotfSAgLy8gbmFt
ZXNwYWNlIHNlbmRfc2lkZV9jY19pbnRlcm5hbAotCiBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9s
bGVyOjpTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyKAogICAgIGNvbnN0IENsb2NrKiBjbG9j
aywKICAgICBydGM6OlRhc2tRdWV1ZSogdGFza19xdWV1ZSwKQEAgLTM1MiwxMCArMTE5LDExIEBA
IFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6OlNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xs
ZXIoCiAgICAgICBjb250cm9sbGVyX2ZhY3Rvcnlfd2l0aF9mZWVkYmFja18oY29udHJvbGxlcl9m
YWN0b3J5KSwKICAgICAgIGNvbnRyb2xsZXJfZmFjdG9yeV9mYWxsYmFja18oCiAgICAgICAgICAg
YWJzbDo6bWFrZV91bmlxdWU8R29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5PihldmVudF9s
b2cpKSwKLSAgICAgIHBhY2VyX2NvbnRyb2xsZXJfKGFic2w6Om1ha2VfdW5pcXVlPFBhY2VyQ29u
dHJvbGxlcj4ocGFjZXJfKSksCiAgICAgICBwcm9jZXNzX2ludGVydmFsXyhjb250cm9sbGVyX2Zh
Y3RvcnlfZmFsbGJhY2tfLT5HZXRQcm9jZXNzSW50ZXJ2YWwoKSksCiAgICAgICBsYXN0X3JlcG9y
dF9ibG9ja190aW1lXyhUaW1lc3RhbXA6Om1zKGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkp
KSwKICAgICAgIG9ic2VydmVyXyhudWxscHRyKSwKKyAgICAgIHJlc2V0X2ZlZWRiYWNrX29uX3Jv
dXRlX2NoYW5nZV8oCisgICAgICAgICAgIWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1C
d2UtTm9GZWVkYmFja1Jlc2V0IikpLAogICAgICAgc2VuZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFk
XygKICAgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1TZW5k
U2lkZUJ3ZS1XaXRoT3ZlcmhlYWQiKSksCiAgICAgICB0cmFuc3BvcnRfb3ZlcmhlYWRfYnl0ZXNf
cGVyX3BhY2tldF8oMCksCkBAIC0zOTgsOCArMTY2LDggQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rp
b25Db250cm9sbGVyOjpNYXliZVJlY3JlYXRlQ29udHJvbGxlcnMoKSB7CiAgIGlmICghbmV0d29y
a19hdmFpbGFibGVfIHx8ICFvYnNlcnZlcl8pCiAgICAgcmV0dXJuOwogICBpZiAoIWNvbnRyb2xf
aGFuZGxlcl8pIHsKLSAgICBjb250cm9sX2hhbmRsZXJfID0gYWJzbDo6bWFrZV91bmlxdWU8c2Vu
ZF9zaWRlX2NjX2ludGVybmFsOjpDb250cm9sSGFuZGxlcj4oCi0gICAgICAgIG9ic2VydmVyXywg
cGFjZXJfY29udHJvbGxlcl8uZ2V0KCksIGNsb2NrXyk7CisgICAgY29udHJvbF9oYW5kbGVyXyA9
CisgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPENvbmdlc3Rpb25Db250cm9sSGFuZGxlcj4ob2Jz
ZXJ2ZXJfLCBwYWNlcl8pOwogICB9CiAKICAgaW5pdGlhbF9jb25maWdfLmNvbnN0cmFpbnRzLmF0
X3RpbWUgPQpAQCAtNDg5LDggKzI1Nyw5IEBAIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJv
bGxlcjo6T25OZXR3b3JrUm91dGVDaGFuZ2VkKAogICAgIGludCBzdGFydF9iaXRyYXRlX2JwcywK
ICAgICBpbnQgbWluX2JpdHJhdGVfYnBzLAogICAgIGludCBtYXhfYml0cmF0ZV9icHMpIHsKLSAg
dHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLlNldE5ldHdvcmtJZHMobmV0d29ya19yb3V0ZS5s
b2NhbF9uZXR3b3JrX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXR3b3JrX3JvdXRlLnJlbW90ZV9uZXR3b3JrX2lkKTsKKyAgaWYgKHJlc2V0X2ZlZWRi
YWNrX29uX3JvdXRlX2NoYW5nZV8pCisgICAgdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLlNl
dE5ldHdvcmtJZHMobmV0d29ya19yb3V0ZS5sb2NhbF9uZXR3b3JrX2lkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfcm91dGUucmVtb3RlX25l
dHdvcmtfaWQpOwogICB0cmFuc3BvcnRfb3ZlcmhlYWRfYnl0ZXNfcGVyX3BhY2tldF8gPSBuZXR3
b3JrX3JvdXRlLnBhY2tldF9vdmVyaGVhZDsKIAogICBOZXR3b3JrUm91dGVDaGFuZ2UgbXNnOwpA
QCAtNTA1LDcgKzI3NCw3IEBAIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6T25O
ZXR3b3JrUm91dGVDaGFuZ2VkKAogICAgIH0gZWxzZSB7CiAgICAgICBVcGRhdGVJbml0aWFsQ29u
c3RyYWludHMobXNnLmNvbnN0cmFpbnRzKTsKICAgICB9Ci0gICAgcGFjZXJfY29udHJvbGxlcl8t
Pk9uTmV0d29ya1JvdXRlQ2hhbmdlKG1zZyk7CisgICAgcGFjZXJfLT5VcGRhdGVPdXRzdGFuZGlu
Z0RhdGEoMCk7CiAgIH0pOwogfQogCkBAIC01NzIsNyArMzQxLDYgQEAgdm9pZCBTZW5kU2lkZUNv
bmdlc3Rpb25Db250cm9sbGVyOjpTaWduYWxOZXR3b3JrU3RhdGUoTmV0d29ya1N0YXRlIHN0YXRl
KSB7CiAgICAgbmV0d29ya19hdmFpbGFibGVfID0gbXNnLm5ldHdvcmtfYXZhaWxhYmxlOwogICAg
IGlmIChjb250cm9sbGVyXykgewogICAgICAgY29udHJvbF9oYW5kbGVyXy0+UG9zdFVwZGF0ZXMo
Y29udHJvbGxlcl8tPk9uTmV0d29ya0F2YWlsYWJpbGl0eShtc2cpKTsKLSAgICAgIHBhY2VyX2Nv
bnRyb2xsZXJfLT5Pbk5ldHdvcmtBdmFpbGFiaWxpdHkobXNnKTsKICAgICAgIGNvbnRyb2xfaGFu
ZGxlcl8tPk9uTmV0d29ya0F2YWlsYWJpbGl0eShtc2cpOwogICAgIH0gZWxzZSB7CiAgICAgICBN
YXliZUNyZWF0ZUNvbnRyb2xsZXJzKCk7CkBAIC01ODIsMjcgKzM1MCwxNiBAQCB2b2lkIFNlbmRT
aWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6OlNpZ25hbE5ldHdvcmtTdGF0ZShOZXR3b3JrU3RhdGUg
c3RhdGUpIHsKIAogdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpPblNlbnRQYWNr
ZXQoCiAgICAgY29uc3QgcnRjOjpTZW50UGFja2V0JiBzZW50X3BhY2tldCkgewotICAvLyBXZSdy
ZSBub3QgaW50ZXJlc3RlZCBpbiBwYWNrZXRzIHdpdGhvdXQgYW4gaWQsIHdoaWNoIG1heSBiZSBz
dHVuIHBhY2tldHMsCi0gIC8vIGV0Yywgc2VudCBvbiB0aGUgc2FtZSB0cmFuc3BvcnQuCi0gIGlm
IChzZW50X3BhY2tldC5wYWNrZXRfaWQgPT0gLTEpCi0gICAgcmV0dXJuOwotICB0cmFuc3BvcnRf
ZmVlZGJhY2tfYWRhcHRlcl8uT25TZW50UGFja2V0KHNlbnRfcGFja2V0LnBhY2tldF9pZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50X3BhY2tldC5zZW5k
X3RpbWVfbXMpOwotICBNYXliZVVwZGF0ZU91dHN0YW5kaW5nRGF0YSgpOwotICBhdXRvIHBhY2tl
dCA9IHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5HZXRQYWNrZXQoc2VudF9wYWNrZXQucGFj
a2V0X2lkKTsKLSAgaWYgKHBhY2tldC5oYXNfdmFsdWUoKSkgewotICAgIFNlbnRQYWNrZXQgbXNn
OwotICAgIG1zZy5zaXplID0gRGF0YVNpemU6OmJ5dGVzKHBhY2tldC0+cGF5bG9hZF9zaXplKTsK
LSAgICBtc2cuc2VuZF90aW1lID0gVGltZXN0YW1wOjptcyhwYWNrZXQtPnNlbmRfdGltZV9tcyk7
Ci0gICAgbXNnLnNlcXVlbmNlX251bWJlciA9IHBhY2tldC0+bG9uZ19zZXF1ZW5jZV9udW1iZXI7
Ci0gICAgbXNnLmRhdGFfaW5fZmxpZ2h0ID0KLSAgICAgICAgRGF0YVNpemU6OmJ5dGVzKHRyYW5z
cG9ydF9mZWVkYmFja19hZGFwdGVyXy5HZXRPdXRzdGFuZGluZ0J5dGVzKCkpOwotICAgIHRhc2tf
cXVldWVfLT5Qb3N0VGFzayhbdGhpcywgbXNnXSgpIHsKKyAgYWJzbDo6b3B0aW9uYWw8U2VudFBh
Y2tldD4gcGFja2V0X21zZyA9CisgICAgICB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl8uUHJv
Y2Vzc1NlbnRQYWNrZXQoc2VudF9wYWNrZXQpOworICBpZiAocGFja2V0X21zZykgeworICAgIHRh
c2tfcXVldWVfLT5Qb3N0VGFzayhbdGhpcywgcGFja2V0X21zZ10oKSB7CiAgICAgICBSVENfRENI
RUNLX1JVTl9PTih0YXNrX3F1ZXVlXyk7CiAgICAgICBpZiAoY29udHJvbGxlcl8pCi0gICAgICAg
IGNvbnRyb2xfaGFuZGxlcl8tPlBvc3RVcGRhdGVzKGNvbnRyb2xsZXJfLT5PblNlbnRQYWNrZXQo
bXNnKSk7CisgICAgICAgIGNvbnRyb2xfaGFuZGxlcl8tPlBvc3RVcGRhdGVzKGNvbnRyb2xsZXJf
LT5PblNlbnRQYWNrZXQoKnBhY2tldF9tc2cpKTsKICAgICB9KTsKICAgfQorICBNYXliZVVwZGF0
ZU91dHN0YW5kaW5nRGF0YSgpOwogfQogCiB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xs
ZXI6Ok9uUnR0VXBkYXRlKGludDY0X3QgYXZnX3J0dF9tcywKQEAgLTY4NywzOSArNDQ0LDI0IEBA
IHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6QWRkUGFja2V0KAogdm9pZCBTZW5k
U2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpPblRyYW5zcG9ydEZlZWRiYWNrKAogICAgIGNvbnN0
IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiBmZWVkYmFjaykgewogICBSVENfRENIRUNLX1JVTlNf
U0VSSUFMSVpFRCgmd29ya2VyX3JhY2VfKTsKLSAgaW50NjRfdCBmZWVkYmFja190aW1lX21zID0g
Y2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKTsKIAotICBEYXRhU2l6ZSBwcmlvcl9pbl9mbGln
aHQgPQotICAgICAgRGF0YVNpemU6OmJ5dGVzKHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5H
ZXRPdXRzdGFuZGluZ0J5dGVzKCkpOwotICB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl8uT25U
cmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7Ci0gIE1heWJlVXBkYXRlT3V0c3RhbmRpbmdEYXRh
KCk7Ci0KLSAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IGZlZWRiYWNrX3ZlY3RvciA9Ci0g
ICAgICB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl8uR2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0
b3IoKTsKLSAgU29ydFBhY2tldEZlZWRiYWNrVmVjdG9yKCZmZWVkYmFja192ZWN0b3IpOwotCi0g
IGlmICghZmVlZGJhY2tfdmVjdG9yLmVtcHR5KCkpIHsKLSAgICBUcmFuc3BvcnRQYWNrZXRzRmVl
ZGJhY2sgbXNnOwotICAgIG1zZy5wYWNrZXRfZmVlZGJhY2tzID0gUGFja2V0UmVzdWx0c0Zyb21S
dHBGZWVkYmFja1ZlY3RvcihmZWVkYmFja192ZWN0b3IpOwotICAgIG1zZy5mZWVkYmFja190aW1l
ID0gVGltZXN0YW1wOjptcyhmZWVkYmFja190aW1lX21zKTsKLSAgICBtc2cucHJpb3JfaW5fZmxp
Z2h0ID0gcHJpb3JfaW5fZmxpZ2h0OwotICAgIG1zZy5kYXRhX2luX2ZsaWdodCA9Ci0gICAgICAg
IERhdGFTaXplOjpieXRlcyh0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl8uR2V0T3V0c3RhbmRp
bmdCeXRlcygpKTsKLSAgICB0YXNrX3F1ZXVlXy0+UG9zdFRhc2soW3RoaXMsIG1zZ10oKSB7Cisg
IGFic2w6Om9wdGlvbmFsPFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjaz4gZmVlZGJhY2tfbXNnID0K
KyAgICAgIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5Qcm9jZXNzVHJhbnNwb3J0RmVlZGJh
Y2soZmVlZGJhY2spOworICBpZiAoZmVlZGJhY2tfbXNnKSB7CisgICAgdGFza19xdWV1ZV8tPlBv
c3RUYXNrKFt0aGlzLCBmZWVkYmFja19tc2ddKCkgewogICAgICAgUlRDX0RDSEVDS19SVU5fT04o
dGFza19xdWV1ZV8pOwogICAgICAgaWYgKGNvbnRyb2xsZXJfKQogICAgICAgICBjb250cm9sX2hh
bmRsZXJfLT5Qb3N0VXBkYXRlcygKLSAgICAgICAgICAgIGNvbnRyb2xsZXJfLT5PblRyYW5zcG9y
dFBhY2tldHNGZWVkYmFjayhtc2cpKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXJfLT5PblRyYW5z
cG9ydFBhY2tldHNGZWVkYmFjaygqZmVlZGJhY2tfbXNnKSk7CiAgICAgfSk7CiAgIH0KKyAgTWF5
YmVVcGRhdGVPdXRzdGFuZGluZ0RhdGEoKTsKIH0KIAogdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25D
b250cm9sbGVyOjpNYXliZVVwZGF0ZU91dHN0YW5kaW5nRGF0YSgpIHsKLSAgRGF0YVNpemUgaW5f
ZmxpZ2h0X2RhdGEgPQotICAgICAgRGF0YVNpemU6OmJ5dGVzKHRyYW5zcG9ydF9mZWVkYmFja19h
ZGFwdGVyXy5HZXRPdXRzdGFuZGluZ0J5dGVzKCkpOworICBEYXRhU2l6ZSBpbl9mbGlnaHRfZGF0
YSA9IHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5HZXRPdXRzdGFuZGluZ0RhdGEoKTsKICAg
dGFza19xdWV1ZV8tPlBvc3RUYXNrKFt0aGlzLCBpbl9mbGlnaHRfZGF0YV0oKSB7CiAgICAgUlRD
X0RDSEVDS19SVU5fT04odGFza19xdWV1ZV8pOwotICAgIHBhY2VyX2NvbnRyb2xsZXJfLT5Pbk91
dHN0YW5kaW5nRGF0YShpbl9mbGlnaHRfZGF0YSk7CiAgICAgaWYgKGNvbnRyb2xfaGFuZGxlcl8p
CiAgICAgICBjb250cm9sX2hhbmRsZXJfLT5Pbk91dHN0YW5kaW5nRGF0YShpbl9mbGlnaHRfZGF0
YSk7CiAgIH0pOwpAQCAtNzQwLDcgKzQ4Miw3IEBAIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29u
dHJvbGxlcjo6UG9zdFBlcmlvZGljVGFza3NGb3JUZXN0KCkgewogfQogCiB2b2lkIFNlbmRTaWRl
Q29uZ2VzdGlvbkNvbnRyb2xsZXI6OldhaXRPblRhc2tzRm9yVGVzdCgpIHsKLSAgcnRjOjpFdmVu
dCBldmVudChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGV2ZW50OwogICB0YXNrX3F1ZXVl
Xy0+UG9zdFRhc2soWyZldmVudF0oKSB7IGV2ZW50LlNldCgpOyB9KTsKICAgZXZlbnQuV2FpdChy
dGM6OkV2ZW50OjprRm9yZXZlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAv
c2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL3J0cC9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCmluZGV4
IGQ2MTBhZmUxM2QwZjNlMjE0NTE4NzA2Mjc4OGE2OTNmNmY0ZDdkZTYuLjZlZDdhNDk1NTNmMTky
NDM3OGFiMmU3ODAwMGQyMjVjMTk1MWY4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0
cC9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNj
CkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3Rp
bWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9wYWNrZXQvdHJhbnNwb3J0X2ZlZWRiYWNrLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2Uvc29ja2V0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5oIgog
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAjaW5jbHVkZSAidGVz
dC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKQEAgLTEwOCw4ICsxMDgs
MTEgQEAgY2xhc3MgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlclRlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsKICAgICBjb250cm9sbGVyXy0+QWRkUGFja2V0KHNzcmMsIHBhY2tldF9m
ZWVkYmFjay5zZXF1ZW5jZV9udW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNr
ZXRfZmVlZGJhY2sucGF5bG9hZF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFj
a2V0X2ZlZWRiYWNrLnBhY2luZ19pbmZvKTsKKyAgICBydGM6OlBhY2tldEluZm8gcGFja2V0X2lu
Zm87CisgICAgcGFja2V0X2luZm8uaW5jbHVkZWRfaW5fZmVlZGJhY2sgPSB0cnVlOwogICAgIGNv
bnRyb2xsZXJfLT5PblNlbnRQYWNrZXQocnRjOjpTZW50UGFja2V0KHBhY2tldF9mZWVkYmFjay5z
ZXF1ZW5jZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFja2V0X2ZlZWRiYWNrLnNlbmRfdGltZV9tcykpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9mZWVkYmFjay5zZW5kX3RpbWVfbXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X2lu
Zm8pKTsKICAgfQogCiAgIC8vIEFsbG93cyB1cyB0byB0cmFjayB0aGUgdGFyZ2V0IGJpdHJhdGUs
IHdpdGhvdXQgcHJlc2NyaWJpbmcgdGhlIGV4YWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9ydHAvc2VuZF90aW1lX2hpc3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvc2VuZF90aW1l
X2hpc3RvcnkuY2MKaW5kZXggNzM2ODJjZDViMjQyNjU0NWNhZWI1MTM0NjhiNGRlM2E5OTA4YzUy
NS4uMTEwZGFjMzk5MzIxMjQ4ODY5ZTFhOWY4MTUwMmE2ZmQ0MTMyZTI3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvcnRwL3NlbmRfdGltZV9oaXN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5jYwpAQCAtMTUsNiArMTUsNyBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CkBAIC00MSw4ICs0MiwxOSBAQCB2b2lkIFNlbmRUaW1lSGlzdG9yeTo6QWRkQW5kUmVtb3Zl
T2xkKGNvbnN0IFBhY2tldEZlZWRiYWNrJiBwYWNrZXQpIHsKICAgUGFja2V0RmVlZGJhY2sgcGFj
a2V0X2NvcHkgPSBwYWNrZXQ7CiAgIHBhY2tldF9jb3B5Lmxvbmdfc2VxdWVuY2VfbnVtYmVyID0g
dW53cmFwcGVkX3NlcV9udW07CiAgIGhpc3RvcnlfLmluc2VydChzdGQ6Om1ha2VfcGFpcih1bndy
YXBwZWRfc2VxX251bSwgcGFja2V0X2NvcHkpKTsKLSAgaWYgKHBhY2tldC5zZW5kX3RpbWVfbXMg
Pj0gMCkKKyAgaWYgKHBhY2tldC5zZW5kX3RpbWVfbXMgPj0gMCkgewogICAgIEFkZFBhY2tldEJ5
dGVzKHBhY2tldF9jb3B5KTsKKyAgICBsYXN0X3NlbmRfdGltZV9tc18gPSBzdGQ6Om1heChsYXN0
X3NlbmRfdGltZV9tc18sIHBhY2tldC5zZW5kX3RpbWVfbXMpOworICB9Cit9CisKK3ZvaWQgU2Vu
ZFRpbWVIaXN0b3J5OjpBZGRVbnRyYWNrZWQoc2l6ZV90IHBhY2tldF9zaXplLCBpbnQ2NF90IHNl
bmRfdGltZV9tcykgeworICBpZiAoc2VuZF90aW1lX21zIDwgbGFzdF9zZW5kX3RpbWVfbXNfKSB7
CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiaWdub3JpbmcgdW50cmFja2VkIGRhdGEgZm9y
IG91dCBvZiBvcmRlciBwYWNrZXQuIjsKKyAgfQorICBwZW5kaW5nX3VudHJhY2tlZF9zaXplXyAr
PSBwYWNrZXRfc2l6ZTsKKyAgbGFzdF91bnRyYWNrZWRfc2VuZF90aW1lX21zXyA9CisgICAgICBz
dGQ6Om1heChsYXN0X3VudHJhY2tlZF9zZW5kX3RpbWVfbXNfLCBzZW5kX3RpbWVfbXMpOwogfQog
CiBib29sIFNlbmRUaW1lSGlzdG9yeTo6T25TZW50UGFja2V0KHVpbnQxNl90IHNlcXVlbmNlX251
bWJlciwKQEAgLTUzLDggKzY1LDE3IEBAIGJvb2wgU2VuZFRpbWVIaXN0b3J5OjpPblNlbnRQYWNr
ZXQodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAogICAgIHJldHVybiBmYWxzZTsKICAgYm9vbCBw
YWNrZXRfcmV0cmFuc21pdCA9IGl0LT5zZWNvbmQuc2VuZF90aW1lX21zID49IDA7CiAgIGl0LT5z
ZWNvbmQuc2VuZF90aW1lX21zID0gc2VuZF90aW1lX21zOworICBsYXN0X3NlbmRfdGltZV9tc18g
PSBzdGQ6Om1heChsYXN0X3NlbmRfdGltZV9tc18sIHNlbmRfdGltZV9tcyk7CiAgIGlmICghcGFj
a2V0X3JldHJhbnNtaXQpCiAgICAgQWRkUGFja2V0Qnl0ZXMoaXQtPnNlY29uZCk7CisgIGlmIChw
ZW5kaW5nX3VudHJhY2tlZF9zaXplXyA+IDApIHsKKyAgICBpZiAoc2VuZF90aW1lX21zIDwgbGFz
dF91bnRyYWNrZWRfc2VuZF90aW1lX21zXykKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykKKyAg
ICAgICAgICA8PCAiYXBwZW5kaW5nIGFja25vd2xlZGdlZCBkYXRhIGZvciBvdXQgb2Ygb3JkZXIg
cGFja2V0LiAoRGlmZjogIgorICAgICAgICAgIDw8IGxhc3RfdW50cmFja2VkX3NlbmRfdGltZV9t
c18gLSBzZW5kX3RpbWVfbXMgPDwgIiBtcy4pIjsKKyAgICBpdC0+c2Vjb25kLnVuYWNrbm93bGVk
Z2VkX2RhdGEgKz0gcGVuZGluZ191bnRyYWNrZWRfc2l6ZV87CisgICAgcGVuZGluZ191bnRyYWNr
ZWRfc2l6ZV8gPSAwOworICB9CiAgIHJldHVybiB0cnVlOwogfQogCkBAIC05MCwxMyArMTExLDEz
IEBAIGJvb2wgU2VuZFRpbWVIaXN0b3J5OjpHZXRGZWVkYmFjayhQYWNrZXRGZWVkYmFjayogcGFj
a2V0X2ZlZWRiYWNrLAogICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNlbmRUaW1lSGlzdG9y
eTo6R2V0T3V0c3RhbmRpbmdCeXRlcyh1aW50MTZfdCBsb2NhbF9uZXRfaWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9uZXRfaWQp
IGNvbnN0IHsKK0RhdGFTaXplIFNlbmRUaW1lSGlzdG9yeTo6R2V0T3V0c3RhbmRpbmdEYXRhKHVp
bnQxNl90IGxvY2FsX25ldF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9uZXRfaWQpIGNvbnN0IHsKICAgYXV0byBpdCA9IGlu
X2ZsaWdodF9ieXRlc18uZmluZCh7bG9jYWxfbmV0X2lkLCByZW1vdGVfbmV0X2lkfSk7CiAgIGlm
IChpdCAhPSBpbl9mbGlnaHRfYnl0ZXNfLmVuZCgpKSB7Ci0gICAgcmV0dXJuIGl0LT5zZWNvbmQ7
CisgICAgcmV0dXJuIERhdGFTaXplOjpieXRlcyhpdC0+c2Vjb25kKTsKICAgfSBlbHNlIHsKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gRGF0YVNpemU6Olplcm8oKTsKICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvc2VuZF90aW1lX2hpc3RvcnkuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5oCmluZGV4IDdjYzZhZDc2NDE0ODgwNDkxMTc4
ZTU1ZDZiNjY0YjFmMWQ4MTc4OTQuLjY1NmI3ZTE2YTM0YjFkZmRhYjg3NzI4N2QyMTE3OWZmZDFm
YzJiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5oCkBAIC0xNCw2ICsx
NCw3IEBACiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJh
cGkvdW5pdHMvZGF0YV9zaXplLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9j
b21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAK
QEAgLTI5LDYgKzMwLDggQEAgY2xhc3MgU2VuZFRpbWVIaXN0b3J5IHsKICAgLy8gQ2xlYW51cCBv
bGQgZW50cmllcywgdGhlbiBhZGQgbmV3IHBhY2tldCBpbmZvIHdpdGggcHJvdmlkZWQgcGFyYW1l
dGVycy4KICAgdm9pZCBBZGRBbmRSZW1vdmVPbGQoY29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tl
dCk7CiAKKyAgdm9pZCBBZGRVbnRyYWNrZWQoc2l6ZV90IHBhY2tldF9zaXplLCBpbnQ2NF90IHNl
bmRfdGltZV9tcyk7CisKICAgLy8gVXBkYXRlcyBwYWNrZXQgaW5mbyBpZGVudGlmaWVkIGJ5IHxz
ZXF1ZW5jZV9udW1iZXJ8IHdpdGggfHNlbmRfdGltZV9tc3wuCiAgIC8vIFJldHVybiBmYWxzZSBp
ZiBub3QgZm91bmQuCiAgIGJvb2wgT25TZW50UGFja2V0KHVpbnQxNl90IHNlcXVlbmNlX251bWJl
ciwgaW50NjRfdCBzZW5kX3RpbWVfbXMpOwpAQCAtNDEsOCArNDQsOCBAQCBjbGFzcyBTZW5kVGlt
ZUhpc3RvcnkgewogICAvLyB0aHVzIGJlIG5vbi1udWxsIGFuZCBoYXZlIHRoZSBzZXF1ZW5jZV9u
dW1iZXIgZmllbGQgc2V0LgogICBib29sIEdldEZlZWRiYWNrKFBhY2tldEZlZWRiYWNrKiBwYWNr
ZXRfZmVlZGJhY2ssIGJvb2wgcmVtb3ZlKTsKIAotICBzaXplX3QgR2V0T3V0c3RhbmRpbmdCeXRl
cyh1aW50MTZfdCBsb2NhbF9uZXRfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQxNl90IHJlbW90ZV9uZXRfaWQpIGNvbnN0OworICBEYXRhU2l6ZSBHZXRPdXRzdGFuZGluZ0Rh
dGEodWludDE2X3QgbG9jYWxfbmV0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDE2X3QgcmVtb3RlX25ldF9pZCkgY29uc3Q7CiAKICBwcml2YXRlOgogICB1c2luZyBSZW1v
dGVBbmRMb2NhbE5ldHdvcmtJZCA9IHN0ZDo6cGFpcjx1aW50MTZfdCwgdWludDE2X3Q+OwpAQCAt
NTIsNiArNTUsOSBAQCBjbGFzcyBTZW5kVGltZUhpc3RvcnkgewogICB2b2lkIFVwZGF0ZUFja2Vk
U2VxTnVtKGludDY0X3QgYWNrZWRfc2VxX251bSk7CiAgIGNvbnN0IENsb2NrKiBjb25zdCBjbG9j
a187CiAgIGNvbnN0IGludDY0X3QgcGFja2V0X2FnZV9saW1pdF9tc187CisgIHNpemVfdCBwZW5k
aW5nX3VudHJhY2tlZF9zaXplXyA9IDA7CisgIGludDY0X3QgbGFzdF9zZW5kX3RpbWVfbXNfID0g
LTE7CisgIGludDY0X3QgbGFzdF91bnRyYWNrZWRfc2VuZF90aW1lX21zXyA9IC0xOwogICBTZXF1
ZW5jZU51bWJlclVud3JhcHBlciBzZXFfbnVtX3Vud3JhcHBlcl87CiAgIHN0ZDo6bWFwPGludDY0
X3QsIFBhY2tldEZlZWRiYWNrPiBoaXN0b3J5XzsKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4g
bGFzdF9hY2tfc2VxX251bV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNw
b3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2Zl
ZWRiYWNrX2FkYXB0ZXIuY2MKaW5kZXggZDFiNDg1NWUzNjlkNGQwMjZhM2M5ZDUzZjMzYWUzMjEw
NzQ1Yjc4NC4uNzNkOTUyMzE4NDNiNzRkYjRlNjUzNzllMjU1ZTBiYjZmMjQxNjk3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYwpAQCAt
MTksOCArMTksMjggQEAKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9tb2Rfb3BzLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIHdlYnJ0Y19jYyB7CituYW1lc3BhY2Ugewor
dm9pZCBTb3J0UGFja2V0RmVlZGJhY2tWZWN0b3Ioc3RkOjp2ZWN0b3I8d2VicnRjOjpQYWNrZXRG
ZWVkYmFjaz4qIGlucHV0KSB7CisgIHN0ZDo6c29ydChpbnB1dC0+YmVnaW4oKSwgaW5wdXQtPmVu
ZCgpLCBQYWNrZXRGZWVkYmFja0NvbXBhcmF0b3IoKSk7Cit9CiAKK1BhY2tldFJlc3VsdCBOZXR3
b3JrUGFja2V0RmVlZGJhY2tGcm9tUnRwUGFja2V0RmVlZGJhY2soCisgICAgY29uc3Qgd2VicnRj
OjpQYWNrZXRGZWVkYmFjayYgcGYpIHsKKyAgUGFja2V0UmVzdWx0IGZlZWRiYWNrOworICBpZiAo
cGYuYXJyaXZhbF90aW1lX21zID09IHdlYnJ0Yzo6UGFja2V0RmVlZGJhY2s6OmtOb3RSZWNlaXZl
ZCkgeworICAgIGZlZWRiYWNrLnJlY2VpdmVfdGltZSA9IFRpbWVzdGFtcDo6UGx1c0luZmluaXR5
KCk7CisgIH0gZWxzZSB7CisgICAgZmVlZGJhY2sucmVjZWl2ZV90aW1lID0gVGltZXN0YW1wOjpt
cyhwZi5hcnJpdmFsX3RpbWVfbXMpOworICB9CisgIGZlZWRiYWNrLnNlbnRfcGFja2V0LnNlcXVl
bmNlX251bWJlciA9IHBmLmxvbmdfc2VxdWVuY2VfbnVtYmVyOworICBmZWVkYmFjay5zZW50X3Bh
Y2tldC5zZW5kX3RpbWUgPSBUaW1lc3RhbXA6Om1zKHBmLnNlbmRfdGltZV9tcyk7CisgIGZlZWRi
YWNrLnNlbnRfcGFja2V0LnNpemUgPSBEYXRhU2l6ZTo6Ynl0ZXMocGYucGF5bG9hZF9zaXplKTsK
KyAgZmVlZGJhY2suc2VudF9wYWNrZXQucGFjaW5nX2luZm8gPSBwZi5wYWNpbmdfaW5mbzsKKyAg
ZmVlZGJhY2suc2VudF9wYWNrZXQucHJpb3JfdW5hY2tlZF9kYXRhID0KKyAgICAgIERhdGFTaXpl
OjpieXRlcyhwZi51bmFja25vd2xlZGdlZF9kYXRhKTsKKyAgcmV0dXJuIGZlZWRiYWNrOworfQor
fSAgLy8gbmFtZXNwYWNlCiBjb25zdCBpbnQ2NF90IGtOb1RpbWVzdGFtcCA9IC0xOwogY29uc3Qg
aW50NjRfdCBrU2VuZFRpbWVIaXN0b3J5V2luZG93TXMgPSA2MDAwMDsKIGNvbnN0IGludDY0X3Qg
a0Jhc2VUaW1lc3RhbXBTY2FsZUZhY3RvciA9CkBAIC03NywxNiArOTcsNTkgQEAgdm9pZCBUcmFu
c3BvcnRGZWVkYmFja0FkYXB0ZXI6OkFkZFBhY2tldCh1aW50MzJfdCBzc3JjLAogICB9CiB9CiAK
LXZvaWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpPblNlbnRQYWNrZXQodWludDE2X3Qgc2Vx
dWVuY2VfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IHNlbmRfdGltZV9tcykgeworYWJzbDo6b3B0aW9uYWw8U2VudFBhY2tldD4gVHJh
bnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpQcm9jZXNzU2VudFBhY2tldCgKKyAgICBjb25zdCBydGM6
OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7
Ci0gIHNlbmRfdGltZV9oaXN0b3J5Xy5PblNlbnRQYWNrZXQoc2VxdWVuY2VfbnVtYmVyLCBzZW5k
X3RpbWVfbXMpOworICAvLyBUT0RPKHNydGUpOiBPbmx5IHVzZSBvbmUgd2F5IHRvIGluZGljYXRl
IHRoYXQgcGFja2V0IGZlZWRiYWNrIGlzIHVzZWQuCisgIGlmIChzZW50X3BhY2tldC5pbmZvLmlu
Y2x1ZGVkX2luX2ZlZWRiYWNrIHx8IHNlbnRfcGFja2V0LnBhY2tldF9pZCAhPSAtMSkgeworICAg
IHNlbmRfdGltZV9oaXN0b3J5Xy5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQucGFja2V0X2lkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudF9wYWNrZXQuc2VuZF90aW1l
X21zKTsKKyAgICBhYnNsOjpvcHRpb25hbDxQYWNrZXRGZWVkYmFjaz4gcGFja2V0ID0KKyAgICAg
ICAgc2VuZF90aW1lX2hpc3RvcnlfLkdldFBhY2tldChzZW50X3BhY2tldC5wYWNrZXRfaWQpOwor
ICAgIGlmIChwYWNrZXQpIHsKKyAgICAgIFNlbnRQYWNrZXQgbXNnOworICAgICAgbXNnLnNpemUg
PSBEYXRhU2l6ZTo6Ynl0ZXMocGFja2V0LT5wYXlsb2FkX3NpemUpOworICAgICAgbXNnLnNlbmRf
dGltZSA9IFRpbWVzdGFtcDo6bXMocGFja2V0LT5zZW5kX3RpbWVfbXMpOworICAgICAgbXNnLnNl
cXVlbmNlX251bWJlciA9IHBhY2tldC0+bG9uZ19zZXF1ZW5jZV9udW1iZXI7CisgICAgICBtc2cu
cHJpb3JfdW5hY2tlZF9kYXRhID0gRGF0YVNpemU6OmJ5dGVzKHBhY2tldC0+dW5hY2tub3dsZWRn
ZWRfZGF0YSk7CisgICAgICBtc2cuZGF0YV9pbl9mbGlnaHQgPQorICAgICAgICAgIHNlbmRfdGlt
ZV9oaXN0b3J5Xy5HZXRPdXRzdGFuZGluZ0RhdGEobG9jYWxfbmV0X2lkXywgcmVtb3RlX25ldF9p
ZF8pOworICAgICAgcmV0dXJuIG1zZzsKKyAgICB9CisgIH0gZWxzZSBpZiAoc2VudF9wYWNrZXQu
aW5mby5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uKSB7CisgICAgc2VuZF90aW1lX2hpc3RvcnlfLkFk
ZFVudHJhY2tlZChzZW50X3BhY2tldC5pbmZvLnBhY2tldF9zaXplX2J5dGVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudF9wYWNrZXQuc2VuZF90aW1lX21zKTsKKyAg
fQorICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKIH0KIAotYWJzbDo6b3B0aW9uYWw8UGFja2V0RmVl
ZGJhY2s+IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0UGFja2V0KAotICAgIHVpbnQxNl90
IHNlcXVlbmNlX251bWJlcikgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwot
ICByZXR1cm4gc2VuZF90aW1lX2hpc3RvcnlfLkdldFBhY2tldChzZXF1ZW5jZV9udW1iZXIpOwor
YWJzbDo6b3B0aW9uYWw8VHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrPgorVHJhbnNwb3J0RmVlZGJh
Y2tBZGFwdGVyOjpQcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2soCisgICAgY29uc3QgcnRjcDo6VHJh
bnNwb3J0RmVlZGJhY2smIGZlZWRiYWNrKSB7CisgIGludDY0X3QgZmVlZGJhY2tfdGltZV9tcyA9
IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCk7CisgIERhdGFTaXplIHByaW9yX2luX2ZsaWdo
dCA9IEdldE91dHN0YW5kaW5nRGF0YSgpOworICBPblRyYW5zcG9ydEZlZWRiYWNrKGZlZWRiYWNr
KTsKKyAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IGZlZWRiYWNrX3ZlY3RvciA9IGxhc3Rf
cGFja2V0X2ZlZWRiYWNrX3ZlY3Rvcl87CisgIGlmIChmZWVkYmFja192ZWN0b3IuZW1wdHkoKSkK
KyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKworICBTb3J0UGFja2V0RmVlZGJhY2tWZWN0b3Io
JmZlZWRiYWNrX3ZlY3Rvcik7CisgIFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayBtc2c7CisgIGZv
ciAoY29uc3QgUGFja2V0RmVlZGJhY2smIHJ0cF9mZWVkYmFjayA6IGZlZWRiYWNrX3ZlY3Rvcikg
eworICAgIGlmIChydHBfZmVlZGJhY2suc2VuZF90aW1lX21zICE9IFBhY2tldEZlZWRiYWNrOjpr
Tm9TZW5kVGltZSkgeworICAgICAgYXV0byBmZWVkYmFjayA9IE5ldHdvcmtQYWNrZXRGZWVkYmFj
a0Zyb21SdHBQYWNrZXRGZWVkYmFjayhydHBfZmVlZGJhY2spOworICAgICAgbXNnLnBhY2tldF9m
ZWVkYmFja3MucHVzaF9iYWNrKGZlZWRiYWNrKTsKKyAgICB9IGVsc2UgaWYgKHJ0cF9mZWVkYmFj
ay5hcnJpdmFsX3RpbWVfbXMgPT0gUGFja2V0RmVlZGJhY2s6OmtOb3RSZWNlaXZlZCkgeworICAg
ICAgbXNnLnNlbmRsZXNzX2Fycml2YWxfdGltZXMucHVzaF9iYWNrKFRpbWVzdGFtcDo6UGx1c0lu
ZmluaXR5KCkpOworICAgIH0gZWxzZSB7CisgICAgICBtc2cuc2VuZGxlc3NfYXJyaXZhbF90aW1l
cy5wdXNoX2JhY2soCisgICAgICAgICAgVGltZXN0YW1wOjptcyhydHBfZmVlZGJhY2suYXJyaXZh
bF90aW1lX21zKSk7CisgICAgfQorICB9CisgIG1zZy5mZWVkYmFja190aW1lID0gVGltZXN0YW1w
OjptcyhmZWVkYmFja190aW1lX21zKTsKKyAgbXNnLnByaW9yX2luX2ZsaWdodCA9IHByaW9yX2lu
X2ZsaWdodDsKKyAgbXNnLmRhdGFfaW5fZmxpZ2h0ID0gR2V0T3V0c3RhbmRpbmdEYXRhKCk7Cisg
IHJldHVybiBtc2c7CiB9CiAKIHZvaWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpTZXROZXR3
b3JrSWRzKHVpbnQxNl90IGxvY2FsX2lkLApAQCAtOTYsNiArMTU5LDExIEBAIHZvaWQgVHJhbnNw
b3J0RmVlZGJhY2tBZGFwdGVyOjpTZXROZXR3b3JrSWRzKHVpbnQxNl90IGxvY2FsX2lkLAogICBy
ZW1vdGVfbmV0X2lkXyA9IHJlbW90ZV9pZDsKIH0KIAorRGF0YVNpemUgVHJhbnNwb3J0RmVlZGJh
Y2tBZGFwdGVyOjpHZXRPdXRzdGFuZGluZ0RhdGEoKSBjb25zdCB7CisgIHJ0Yzo6Q3JpdFNjb3Bl
IGNzKCZsb2NrXyk7CisgIHJldHVybiBzZW5kX3RpbWVfaGlzdG9yeV8uR2V0T3V0c3RhbmRpbmdE
YXRhKGxvY2FsX25ldF9pZF8sIHJlbW90ZV9uZXRfaWRfKTsKK30KKwogc3RkOjp2ZWN0b3I8UGFj
a2V0RmVlZGJhY2s+IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0UGFja2V0RmVlZGJhY2tW
ZWN0b3IoCiAgICAgY29uc3QgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2smIGZlZWRiYWNrKSB7CiAg
IGludDY0X3QgdGltZXN0YW1wX3VzID0gZmVlZGJhY2suR2V0QmFzZVRpbWVVcygpOwpAQCAtMTg0
LDEwICsyNTIsNCBAQCBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4KIFRyYW5zcG9ydEZlZWRi
YWNrQWRhcHRlcjo6R2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSBjb25zdCB7CiAgIHJldHVy
biBsYXN0X3BhY2tldF9mZWVkYmFja192ZWN0b3JfOwogfQotCi1zaXplX3QgVHJhbnNwb3J0RmVl
ZGJhY2tBZGFwdGVyOjpHZXRPdXRzdGFuZGluZ0J5dGVzKCkgY29uc3QgewotICBydGM6OkNyaXRT
Y29wZSBjcygmbG9ja18pOwotICByZXR1cm4gc2VuZF90aW1lX2hpc3RvcnlfLkdldE91dHN0YW5k
aW5nQnl0ZXMobG9jYWxfbmV0X2lkXywgcmVtb3RlX25ldF9pZF8pOwotfQotfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0Y19jYwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvcnRwL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaAppbmRleCBlMjQ3N2NhMzFmMzQ0M2Zh
YTFkMjM0MWIwMmIyOTBlMzFhMWIzMDhmLi4xNzQxZDZkNjZhMGM0MTNhZDA1NjA1YmZmOTVhMDE2
MmRhMDQxMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRi
YWNrX2FkYXB0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNr
X2FkYXB0ZXIuaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0
d29ya190eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0
cC9zZW5kX3RpbWVfaGlzdG9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlv
bi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdvcmsvc2VudF9wYWNrZXQuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWRfY2hlY2tlci5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgi
CkBAIC0yOSw3ICszMCw2IEBAIG5hbWVzcGFjZSBydGNwIHsKIGNsYXNzIFRyYW5zcG9ydEZlZWRi
YWNrOwogfSAgLy8gbmFtZXNwYWNlIHJ0Y3AKIAotbmFtZXNwYWNlIHdlYnJ0Y19jYyB7CiBjbGFz
cyBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIgewogIHB1YmxpYzoKICAgZXhwbGljaXQgVHJhbnNw
b3J0RmVlZGJhY2tBZGFwdGVyKGNvbnN0IENsb2NrKiBjbG9jayk7CkBAIC00MiwyMiArNDIsMjIg
QEAgY2xhc3MgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyIHsKICAgICAgICAgICAgICAgICAgdWlu
dDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAogICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAog
ICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKTsKLSAg
dm9pZCBPblNlbnRQYWNrZXQodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLCBpbnQ2NF90IHNlbmRf
dGltZV9tcyk7CiAKLSAgLy8gVE9ETyhob2xtZXIpOiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJu
IERlbGF5QmFzZWRCd2U6OlJlc3VsdCBzbyB0aGF0IHdlCi0gIC8vIGNhbiBnZXQgcmlkIG9mIHRo
ZSBkZXBlbmRlbmN5IG9uIEJpdHJhdGVDb250cm9sbGVyLiBSZXF1aXJlcyBjaGFuZ2VzCi0gIC8v
IHRvIHRoZSBDb25nZXN0aW9uQ29udHJvbGxlciBpbnRlcmZhY2UuCi0gIHZvaWQgT25UcmFuc3Bv
cnRGZWVkYmFjayhjb25zdCBydGNwOjpUcmFuc3BvcnRGZWVkYmFjayYgZmVlZGJhY2spOwotICBz
dGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gR2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSBj
b25zdDsKLSAgYWJzbDo6b3B0aW9uYWw8UGFja2V0RmVlZGJhY2s+IEdldFBhY2tldCh1aW50MTZf
dCBzZXF1ZW5jZV9udW1iZXIpIGNvbnN0OworICBhYnNsOjpvcHRpb25hbDxTZW50UGFja2V0PiBQ
cm9jZXNzU2VudFBhY2tldCgKKyAgICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgc2VudF9wYWNr
ZXQpOwogCi0gIHZvaWQgU2V0VHJhbnNwb3J0T3ZlcmhlYWQoaW50IHRyYW5zcG9ydF9vdmVyaGVh
ZF9ieXRlc19wZXJfcGFja2V0KTsKKyAgYWJzbDo6b3B0aW9uYWw8VHJhbnNwb3J0UGFja2V0c0Zl
ZWRiYWNrPiBQcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2soCisgICAgICBjb25zdCBydGNwOjpUcmFu
c3BvcnRGZWVkYmFjayYgZmVlZGJhY2spOworCisgIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNr
PiBHZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3RvcigpIGNvbnN0OwogCiAgIHZvaWQgU2V0TmV0d29y
a0lkcyh1aW50MTZfdCBsb2NhbF9pZCwgdWludDE2X3QgcmVtb3RlX2lkKTsKIAotICBzaXplX3Qg
R2V0T3V0c3RhbmRpbmdCeXRlcygpIGNvbnN0OworICBEYXRhU2l6ZSBHZXRPdXRzdGFuZGluZ0Rh
dGEoKSBjb25zdDsKIAogIHByaXZhdGU6CisgIHZvaWQgT25UcmFuc3BvcnRGZWVkYmFjayhjb25z
dCBydGNwOjpUcmFuc3BvcnRGZWVkYmFjayYgZmVlZGJhY2spOworCiAgIHN0ZDo6dmVjdG9yPFBh
Y2tldEZlZWRiYWNrPiBHZXRQYWNrZXRGZWVkYmFja1ZlY3RvcigKICAgICAgIGNvbnN0IHJ0Y3A6
OlRyYW5zcG9ydEZlZWRiYWNrJiBmZWVkYmFjayk7CiAKQEAgLTc1LDcgKzc1LDYgQEAgY2xhc3Mg
VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyIHsKICAgICAgIFJUQ19HVUFSREVEX0JZKCZvYnNlcnZl
cnNfbG9ja18pOwogfTsKIAotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Y19jYwogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwogCiAjZW5kaWYgIC8vIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX1JU
UF9UUkFOU1BPUlRfRkVFREJBQ0tfQURBUFRFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvcnRwL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvcnRwL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyX3VuaXR0ZXN0LmNjCmluZGV4IDcw
MDg3Njc4YTIzOWRhMzliMTcxNjgwMmYyZTkzNTNiZmM5MGZmNTAuLmQxNDA0ZGY2M2Y0MThkNzIx
MzdlYmQ0ZTZhNmNjNDExNzk1YTJmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90
cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MKQEAgLTY5LDggKzY5
LDkgQEAgY2xhc3MgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewogICAgIGFkYXB0ZXJfLT5BZGRQYWNrZXQoa1NzcmMsIHBhY2tldF9mZWVkYmFj
ay5zZXF1ZW5jZV9udW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfZmVlZGJh
Y2sucGF5bG9hZF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X2ZlZWRiYWNr
LnBhY2luZ19pbmZvKTsKLSAgICBhZGFwdGVyXy0+T25TZW50UGFja2V0KHBhY2tldF9mZWVkYmFj
ay5zZXF1ZW5jZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfZmVl
ZGJhY2suc2VuZF90aW1lX21zKTsKKyAgICBhZGFwdGVyXy0+UHJvY2Vzc1NlbnRQYWNrZXQocnRj
OjpTZW50UGFja2V0KHBhY2tldF9mZWVkYmFjay5zZXF1ZW5jZV9udW1iZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfZmVlZGJhY2suc2Vu
ZF90aW1lX21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnRjOjpQYWNrZXRJbmZvKCkpKTsKICAgfQogCiAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qga1NzcmMgPSA4NDkyOwpAQCAtMTAwLDcgKzEwMSw3IEBAIFRFU1RfRihUcmFuc3BvcnRGZWVk
YmFja0FkYXB0ZXJUZXN0LCBPYnNlcnZlclNhbml0eSkgewogICB9CiAKICAgRVhQRUNUX0NBTEwo
bW9jaywgT25QYWNrZXRGZWVkYmFja1ZlY3RvcihfKSkuVGltZXMoMSk7Ci0gIGFkYXB0ZXJfLT5P
blRyYW5zcG9ydEZlZWRiYWNrKGZlZWRiYWNrKTsKKyAgYWRhcHRlcl8tPlByb2Nlc3NUcmFuc3Bv
cnRGZWVkYmFjayhmZWVkYmFjayk7CiAKICAgYWRhcHRlcl8tPkRlUmVnaXN0ZXJQYWNrZXRGZWVk
YmFja09ic2VydmVyKCZtb2NrKTsKIApAQCAtMTE1LDcgKzExNiw3IEBAIFRFU1RfRihUcmFuc3Bv
cnRGZWVkYmFja0FkYXB0ZXJUZXN0LCBPYnNlcnZlclNhbml0eSkgewogICBFWFBFQ1RfVFJVRShm
ZWVkYmFjay5BZGRSZWNlaXZlZFBhY2tldChuZXdfcGFja2V0LnNlcXVlbmNlX251bWJlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3BhY2tldC5hcnJpdmFs
X3RpbWVfbXMgKiAxMDAwKSk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIE9uUGFja2V0RmVlZGJhY2tW
ZWN0b3IoXykpLlRpbWVzKDApOwotICBhZGFwdGVyXy0+T25UcmFuc3BvcnRGZWVkYmFjayhzZWNv
bmRfZmVlZGJhY2spOworICBhZGFwdGVyXy0+UHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNrKHNlY29u
ZF9mZWVkYmFjayk7CiB9CiAKICNpZiBSVENfRENIRUNLX0lTX09OICYmIEdURVNUX0hBU19ERUFU
SF9URVNUICYmICFkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQpAQCAtMTU2LDcgKzE1Nyw3IEBAIFRF
U1RfRihUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0LCBBZGFwdHNGZWVkYmFja0FuZFBvcHVs
YXRlc1NlbmRUaW1lcykgewogCiAgIGZlZWRiYWNrLkJ1aWxkKCk7CiAKLSAgYWRhcHRlcl8tPk9u
VHJhbnNwb3J0RmVlZGJhY2soZmVlZGJhY2spOworICBhZGFwdGVyXy0+UHJvY2Vzc1RyYW5zcG9y
dEZlZWRiYWNrKGZlZWRiYWNrKTsKICAgQ29tcGFyZVBhY2tldEZlZWRiYWNrVmVjdG9ycyhwYWNr
ZXRzLCBhZGFwdGVyXy0+R2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSk7CiB9CiAKQEAgLTE4
OSw3ICsxOTAsNyBAQCBURVNUX0YoVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyVGVzdCwgRmVlZGJh
Y2tWZWN0b3JSZXBvcnRzVW5yZWNlaXZlZCkgewogCiAgIGZlZWRiYWNrLkJ1aWxkKCk7CiAKLSAg
YWRhcHRlcl8tPk9uVHJhbnNwb3J0RmVlZGJhY2soZmVlZGJhY2spOworICBhZGFwdGVyXy0+UHJv
Y2Vzc1RyYW5zcG9ydEZlZWRiYWNrKGZlZWRiYWNrKTsKICAgQ29tcGFyZVBhY2tldEZlZWRiYWNr
VmVjdG9ycyhzZW50X3BhY2tldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRh
cHRlcl8tPkdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCkpOwogfQpAQCAtMjMzLDcgKzIzNCw3
IEBAIFRFU1RfRihUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0LCBIYW5kbGVzRHJvcHBlZFBh
Y2tldHMpIHsKICAgICBleHBlY3RlZF9wYWNrZXRzW2ldLnBhY2luZ19pbmZvID0gUGFjZWRQYWNr
ZXRJbmZvKCk7CiAgIH0KIAotICBhZGFwdGVyXy0+T25UcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFj
ayk7CisgIGFkYXB0ZXJfLT5Qcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2soZmVlZGJhY2spOwogICBD
b21wYXJlUGFja2V0RmVlZGJhY2tWZWN0b3JzKGV4cGVjdGVkX3BhY2tldHMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRhcHRlcl8tPkdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9y
KCkpOwogfQpAQCAtMjY5LDcgKzI3MCw3IEBAIFRFU1RfRihUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXJUZXN0LCBTZW5kVGltZVdyYXBzQm90aFdheXMpIHsKICAgICBzdGQ6OnZlY3RvcjxQYWNrZXRG
ZWVkYmFjaz4gZXhwZWN0ZWRfcGFja2V0czsKICAgICBleHBlY3RlZF9wYWNrZXRzLnB1c2hfYmFj
ayhwYWNrZXRzW2ldKTsKIAotICAgIGFkYXB0ZXJfLT5PblRyYW5zcG9ydEZlZWRiYWNrKCpmZWVk
YmFjay5nZXQoKSk7CisgICAgYWRhcHRlcl8tPlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjaygqZmVl
ZGJhY2suZ2V0KCkpOwogICAgIENvbXBhcmVQYWNrZXRGZWVkYmFja1ZlY3RvcnMoZXhwZWN0ZWRf
cGFja2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXB0ZXJfLT5HZXRU
cmFuc3BvcnRGZWVkYmFja1ZlY3RvcigpKTsKICAgfQpAQCAtMjk4LDcgKzI5OSw3IEBAIFRFU1Rf
RihUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0LCBIYW5kbGVzQXJyaXZhbFJlb3JkZXJpbmcp
IHsKICAgLy8gQWRhcHRlciBrZWVwcyB0aGUgcGFja2V0cyBvcmRlcmVkIGJ5IHNlcXVlbmNlIG51
bWJlciAod2hpY2ggaXMgaXRzZWxmCiAgIC8vIGFzc2lnbmVkIGJ5IHRoZSBvcmRlciBvZiB0cmFu
c21pc3Npb24pLiBSZW9yZGVyaW5nIGJ5IHNvbWUgb3RoZXIgY3JpdGVyaWEsCiAgIC8vIGVnLiBh
cnJpdmFsIHRpbWUsIGlzIHVwIHRvIHRoZSBvYnNlcnZlcnMuCi0gIGFkYXB0ZXJfLT5PblRyYW5z
cG9ydEZlZWRiYWNrKGZlZWRiYWNrKTsKKyAgYWRhcHRlcl8tPlByb2Nlc3NUcmFuc3BvcnRGZWVk
YmFjayhmZWVkYmFjayk7CiAgIENvbXBhcmVQYWNrZXRGZWVkYmFja1ZlY3RvcnMocGFja2V0cywg
YWRhcHRlcl8tPkdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCkpOwogfQogCkBAIC0zNjIsNyAr
MzYzLDcgQEAgVEVTVF9GKFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlclRlc3QsIFRpbWVzdGFtcERl
bHRhcykgewogICBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gcmVjZWl2ZWRfZmVlZGJhY2s7
CiAKICAgRVhQRUNUX1RSVUUoZmVlZGJhY2suZ2V0KCkgIT0gbnVsbHB0cik7Ci0gIGFkYXB0ZXJf
LT5PblRyYW5zcG9ydEZlZWRiYWNrKCpmZWVkYmFjay5nZXQoKSk7CisgIGFkYXB0ZXJfLT5Qcm9j
ZXNzVHJhbnNwb3J0RmVlZGJhY2soKmZlZWRiYWNrLmdldCgpKTsKICAgQ29tcGFyZVBhY2tldEZl
ZWRiYWNrVmVjdG9ycyhzZW50X3BhY2tldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWRhcHRlcl8tPkdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCkpOwogCkBAIC0zNzcsNyAr
Mzc4LDcgQEAgVEVTVF9GKFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlclRlc3QsIFRpbWVzdGFtcERl
bHRhcykgewogICAgICAgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2s6OlBhcnNlRnJvbShyYXdfcGFj
a2V0LmRhdGEoKSwgcmF3X3BhY2tldC5zaXplKCkpOwogCiAgIEVYUEVDVF9UUlVFKGZlZWRiYWNr
LmdldCgpICE9IG51bGxwdHIpOwotICBhZGFwdGVyXy0+T25UcmFuc3BvcnRGZWVkYmFjaygqZmVl
ZGJhY2suZ2V0KCkpOworICBhZGFwdGVyXy0+UHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNrKCpmZWVk
YmFjay5nZXQoKSk7CiAgIHsKICAgICBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gZXhwZWN0
ZWRfcGFja2V0czsKICAgICBleHBlY3RlZF9wYWNrZXRzLnB1c2hfYmFjayhwYWNrZXRfZmVlZGJh
Y2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29u
dHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIuY2MKaW5kZXggZjhiMzE1NWJmOWRjNjZkOTBkNDE1NzI5NmVkYmE3NWNmZmIyNTYzYy4uMTQ3
ZjEwM2U3ODY5NzcxZDI2ZTk5ZjNjNWYxYWY2N2ZkMTZjMTdkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjCkBAIC0xOCwxNiArMTgs
MTYgQEAKIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYml0cmF0ZV9jb250cm9sbGVyL2luY2x1ZGUvYml0cmF0ZV9jb250cm9sbGVyLmgiCi0jaW5j
bHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvY29uZ2VzdGlvbl93aW5kb3dfcHVz
aGJhY2tfY29udHJvbGxlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25nZXN0aW9uX3dpbmRvd19w
dXNoYmFja19jb250cm9sbGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvZ29vZ19jYy9wcm9iZV9jb250cm9sbGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29yay9z
ZW50X3BhY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lv
bnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yYXRlX2xpbWl0ZXIuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRl
ICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCkBAIC0xNDMsNiArMTQz
LDcgQEAgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6U2VuZFNpZGVDb25nZXN0aW9uQ29u
dHJvbGxlcigKICAgICAgIHBhdXNlX3BhY2VyXyhmYWxzZSksCiAgICAgICBwYWNlcl9wYXVzZWRf
KGZhbHNlKSwKICAgICAgIG1pbl9iaXRyYXRlX2Jwc18oY29uZ2VzdGlvbl9jb250cm9sbGVyOjpH
ZXRNaW5CaXRyYXRlQnBzKCkpLAorICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfKG5ldyBQ
cm9iZUJpdHJhdGVFc3RpbWF0b3IoZXZlbnRfbG9nXykpLAogICAgICAgZGVsYXlfYmFzZWRfYndl
XyhuZXcgRGVsYXlCYXNlZEJ3ZShldmVudF9sb2dfKSksCiAgICAgICBpbl9jd25kX2V4cGVyaW1l
bnRfKEN3bmRFeHBlcmltZW50RW5hYmxlZCgpKSwKICAgICAgIGFjY2VwdGVkX3F1ZXVlX21zXyhr
RGVmYXVsdEFjY2VwdGVkUXVldWVNcyksCkBAIC0xNTMsNyArMTU0LDcgQEAgU2VuZFNpZGVDb25n
ZXN0aW9uQ29udHJvbGxlcjo6U2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcigKICAgICAgIHBh
Y2VyX3B1c2hiYWNrX2V4cGVyaW1lbnRfKElzUGFjZXJQdXNoYmFja0V4cGVyaW1lbnRFbmFibGVk
KCkpLAogICAgICAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8oCiAgICAg
ICAgICAgTWF5YmVDcmVhdGVDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyKCkpIHsK
LSAgZGVsYXlfYmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShtaW5fYml0cmF0ZV9icHNfKTsKKyAg
ZGVsYXlfYmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShEYXRhUmF0ZTo6YnBzKG1pbl9iaXRyYXRl
X2Jwc18pKTsKICAgaWYgKGluX2N3bmRfZXhwZXJpbWVudF8gJiYKICAgICAgICFSZWFkQ3duZEV4
cGVyaW1lbnRQYXJhbWV0ZXIoJmFjY2VwdGVkX3F1ZXVlX21zXykpIHsKICAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcGFyc2UgcGFyYW1ldGVycyBmb3IgQ3duZEV4cGVyaW1l
bnQgIgpAQCAtMTY0LDYgKzE2NSwyMyBAQCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpT
ZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyKAogCiBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9s
bGVyOjp+U2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcigpIHt9CiAKK3ZvaWQgU2VuZFNpZGVD
b25nZXN0aW9uQ29udHJvbGxlcjo6RW5hYmxlQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrKAorICAg
IGludDY0X3QgYWNjZXB0ZWRfcXVldWVfbXMsCisgICAgdWludDMyX3QgbWluX3B1c2hiYWNrX3Rh
cmdldF9iaXRyYXRlX2JwcykgeworICBSVENfRENIRUNLKCFjb25nZXN0aW9uX3dpbmRvd19wdXNo
YmFja19jb250cm9sbGVyXykKKyAgICAgIDw8ICJUaGUgY29uZ2VzdGlvbiBwdXNoYmFjayBpcyBh
bHJlYWR5IGVuYWJsZWQuIjsKKyAgUlRDX0NIRUNLX0dFKGFjY2VwdGVkX3F1ZXVlX21zLCAwKQor
ICAgICAgPDwgIkFjY2VwdGVkIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuIjsK
KyAgUlRDX0NIRUNLX0dFKG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHMsIDApCisgICAg
ICA8PCAiTWluIHB1c2hiYWNrIHRhcmdldCBiaXRyYXRlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9y
IGVxdWFsIHRvIDAuIjsKKworICBpbl9jd25kX2V4cGVyaW1lbnRfID0gdHJ1ZTsKKyAgYWNjZXB0
ZWRfcXVldWVfbXNfID0gYWNjZXB0ZWRfcXVldWVfbXM7CisgIGNvbmdlc3Rpb25fd2luZG93X3B1
c2hiYWNrX2NvbnRyb2xsZXJfID0KKyAgICAgIGFic2w6Om1ha2VfdW5pcXVlPENvbmdlc3Rpb25X
aW5kb3dQdXNoYmFja0NvbnRyb2xsZXI+KAorICAgICAgICAgIG1pbl9wdXNoYmFja190YXJnZXRf
Yml0cmF0ZV9icHMpOworfQorCiB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6OlJl
Z2lzdGVyUGFja2V0RmVlZGJhY2tPYnNlcnZlcigKICAgICBQYWNrZXRGZWVkYmFja09ic2VydmVy
KiBvYnNlcnZlcikgewogICB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl8uUmVnaXN0ZXJQYWNr
ZXRGZWVkYmFja09ic2VydmVyKG9ic2VydmVyKTsKQEAgLTIwNCw5ICsyMjIsOSBAQCB2b2lkIFNl
bmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6OlNldEJ3ZUJpdHJhdGVzKGludCBtaW5fYml0cmF0
ZV9icHMsCiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBjcygmYndlX2xvY2tfKTsKICAgICBpZiAo
c3RhcnRfYml0cmF0ZV9icHMgPiAwKQotICAgICAgZGVsYXlfYmFzZWRfYndlXy0+U2V0U3RhcnRC
aXRyYXRlKHN0YXJ0X2JpdHJhdGVfYnBzKTsKKyAgICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldFN0
YXJ0Qml0cmF0ZShEYXRhUmF0ZTo6YnBzKHN0YXJ0X2JpdHJhdGVfYnBzKSk7CiAgICAgbWluX2Jp
dHJhdGVfYnBzXyA9IG1pbl9iaXRyYXRlX2JwczsKLSAgICBkZWxheV9iYXNlZF9id2VfLT5TZXRN
aW5CaXRyYXRlKG1pbl9iaXRyYXRlX2Jwc18pOworICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1p
bkJpdHJhdGUoRGF0YVJhdGU6OmJwcyhtaW5fYml0cmF0ZV9icHNfKSk7CiAgIH0KICAgTWF5YmVU
cmlnZ2VyT25OZXR3b3JrQ2hhbmdlZCgpOwogfQpAQCAtMjQxLDEwICsyNTksMTMgQEAgdm9pZCBT
ZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCiAgICAg
cnRjOjpDcml0U2NvcGUgY3MoJmJ3ZV9sb2NrXyk7CiAgICAgdHJhbnNwb3J0X292ZXJoZWFkX2J5
dGVzX3Blcl9wYWNrZXRfID0gbmV0d29ya19yb3V0ZS5wYWNrZXRfb3ZlcmhlYWQ7CiAgICAgbWlu
X2JpdHJhdGVfYnBzXyA9IG1pbl9iaXRyYXRlX2JwczsKKyAgICBwcm9iZV9iaXRyYXRlX2VzdGlt
YXRvcl8ucmVzZXQobmV3IFByb2JlQml0cmF0ZUVzdGltYXRvcihldmVudF9sb2dfKSk7CiAgICAg
ZGVsYXlfYmFzZWRfYndlXy5yZXNldChuZXcgRGVsYXlCYXNlZEJ3ZShldmVudF9sb2dfKSk7CiAg
ICAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy5yZXNldChuZXcgQWNrbm93bGVkZ2Vk
Qml0cmF0ZUVzdGltYXRvcigpKTsKLSAgICBkZWxheV9iYXNlZF9id2VfLT5TZXRTdGFydEJpdHJh
dGUoYml0cmF0ZV9icHMpOwotICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJhdGUobWlu
X2JpdHJhdGVfYnBzKTsKKyAgICBpZiAoYml0cmF0ZV9icHMgPiAwKSB7CisgICAgICBkZWxheV9i
YXNlZF9id2VfLT5TZXRTdGFydEJpdHJhdGUoRGF0YVJhdGU6OmJwcyhiaXRyYXRlX2JwcykpOwor
ICAgIH0KKyAgICBkZWxheV9iYXNlZF9id2VfLT5TZXRNaW5CaXRyYXRlKERhdGFSYXRlOjpicHMo
bWluX2JpdHJhdGVfYnBzKSk7CiAgIH0KICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZwcm9i
ZV9sb2NrXyk7CkBAIC0zMjEsNyArMzQyLDcgQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250
cm9sbGVyOjpPblNlbnRQYWNrZXQoCiB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6
Ok9uUnR0VXBkYXRlKGludDY0X3QgYXZnX3J0dF9tcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBtYXhfcnR0X21zKSB7CiAgIHJ0Yzo6Q3Jp
dFNjb3BlIGNzKCZid2VfbG9ja18pOwotICBkZWxheV9iYXNlZF9id2VfLT5PblJ0dFVwZGF0ZShh
dmdfcnR0X21zKTsKKyAgZGVsYXlfYmFzZWRfYndlXy0+T25SdHRVcGRhdGUoVGltZURlbHRhOjpt
cyhhdmdfcnR0X21zKSk7CiB9CiAKIGludDY0X3QgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxl
cjo6VGltZVVudGlsTmV4dFByb2Nlc3MoKSB7CkBAIC0zOTcsOSArNDE4LDE2IEBAIHZvaWQgU2Vu
ZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6T25UcmFuc3BvcnRGZWVkYmFjaygKICAgRGVsYXlC
YXNlZEJ3ZTo6UmVzdWx0IHJlc3VsdDsKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZid2Vf
bG9ja18pOworICAgIGZvciAoY29uc3QgYXV0byYgcGFja2V0IDogZmVlZGJhY2tfdmVjdG9yKSB7
CisgICAgICBpZiAocGFja2V0LnNlbmRfdGltZV9tcyAhPSBQYWNrZXRGZWVkYmFjazo6a05vU2Vu
ZFRpbWUgJiYKKyAgICAgICAgICBwYWNrZXQucGFjaW5nX2luZm8ucHJvYmVfY2x1c3Rlcl9pZCAh
PSBQYWNlZFBhY2tldEluZm86OmtOb3RBUHJvYmUpIHsKKyAgICAgICAgcHJvYmVfYml0cmF0ZV9l
c3RpbWF0b3JfLT5IYW5kbGVQcm9iZUFuZEVzdGltYXRlQml0cmF0ZShwYWNrZXQpOworICAgICAg
fQorICAgIH0KICAgICByZXN1bHQgPSBkZWxheV9iYXNlZF9id2VfLT5JbmNvbWluZ1BhY2tldEZl
ZWRiYWNrVmVjdG9yKAotICAgICAgICBmZWVkYmFja192ZWN0b3IsIGFja25vd2xlZGdlZF9iaXRy
YXRlX2VzdGltYXRvcl8tPmJpdHJhdGVfYnBzKCksCi0gICAgICAgIGNsb2NrXy0+VGltZUluTWls
bGlzZWNvbmRzKCkpOworICAgICAgICBmZWVkYmFja192ZWN0b3IsIGFja25vd2xlZGdlZF9iaXRy
YXRlX2VzdGltYXRvcl8tPmJpdHJhdGUoKSwKKyAgICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0
b3JfLT5GZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGUoKSwKKyAgICAgICAgVGltZXN0
YW1wOjptcyhjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSk7CiAgIH0KICAgaWYgKHJlc3Vs
dC51cGRhdGVkKSB7CiAgICAgYml0cmF0ZV9jb250cm9sbGVyXy0+T25EZWxheUJhc2VkQndlUmVz
dWx0KHJlc3VsdCk7CkBAIC01MDEsNyArNTI5LDcgQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25D
b250cm9sbGVyOjpNYXliZVRyaWdnZXJPbk5ldHdvcmtDaGFuZ2VkKCkgewogICAgIGludDY0X3Qg
cHJvYmluZ19pbnRlcnZhbF9tczsKICAgICB7CiAgICAgICBydGM6OkNyaXRTY29wZSBjcygmYndl
X2xvY2tfKTsKLSAgICAgIHByb2JpbmdfaW50ZXJ2YWxfbXMgPSBkZWxheV9iYXNlZF9id2VfLT5H
ZXRFeHBlY3RlZEJ3ZVBlcmlvZE1zKCk7CisgICAgICBwcm9iaW5nX2ludGVydmFsX21zID0gZGVs
YXlfYmFzZWRfYndlXy0+R2V0RXhwZWN0ZWRCd2VQZXJpb2QoKS5tcygpOwogICAgIH0KICAgICB7
CiAgICAgICBydGM6OkNyaXRTY29wZSBjcygmb2JzZXJ2ZXJfbG9ja18pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRl
c3QuY2MKaW5kZXggMzY1M2I4YzIyZjZjYzdhN2FjNTcyMDQ1YjcwMTNiYWE2MTkxZGMwYy4uNWY1
OGYyMWNkZjg5NDZjNGFjOGZhODg1NDU0NjA2YzRiNzU2M2VmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0
LmNjCkBAIC0xOCw3ICsxOCw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9l
c3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF9wYWNrZXQvdHJhbnNwb3J0X2ZlZWRiYWNrLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2Uvc29ja2V0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5o
IgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAjaW5jbHVkZSAi
dGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MKaW5kZXggM2JhYTNhZDVhNTNjOWFl
MmQ1ODk1NmNhMjRhODQyMjMxNzg0ZTg0Mi4uYjhiNjIwZDAwOGIzMDJmM2E1MTg3M2E0OWJmMWVm
ZGRhZTU3MmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNr
X2FkYXB0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0
ZXIuY2MKQEAgLTI2LDcgKzI2LDggQEAgY29uc3QgaW50NjRfdCBrQmFzZVRpbWVzdGFtcFNjYWxl
RmFjdG9yID0KICAgICBydGNwOjpUcmFuc3BvcnRGZWVkYmFjazo6a0RlbHRhU2NhbGVGYWN0b3Ig
KiAoMSA8PCA4KTsKIGNvbnN0IGludDY0X3Qga0Jhc2VUaW1lc3RhbXBSYW5nZVNpemVVcyA9IGtC
YXNlVGltZXN0YW1wU2NhbGVGYWN0b3IgKiAoMSA8PCAyNCk7CiAKLVRyYW5zcG9ydEZlZWRiYWNr
QWRhcHRlcjo6VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyKGNvbnN0IENsb2NrKiBjbG9jaykKK0xl
Z2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6TGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFw
dGVyKAorICAgIGNvbnN0IENsb2NrKiBjbG9jaykKICAgICA6IHNlbmRfdGltZV9oaXN0b3J5Xyhj
bG9jaywga1NlbmRUaW1lSGlzdG9yeVdpbmRvd01zKSwKICAgICAgIGNsb2NrXyhjbG9jayksCiAg
ICAgICBjdXJyZW50X29mZnNldF9tc18oa05vVGltZXN0YW1wKSwKQEAgLTM0LDExICszNSwxMSBA
QCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OlRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcihjb25z
dCBDbG9jayogY2xvY2spCiAgICAgICBsb2NhbF9uZXRfaWRfKDApLAogICAgICAgcmVtb3RlX25l
dF9pZF8oMCkge30KIAotVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjp+VHJhbnNwb3J0RmVlZGJh
Y2tBZGFwdGVyKCkgeworTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjp+TGVnYWN5VHJh
bnNwb3J0RmVlZGJhY2tBZGFwdGVyKCkgewogICBSVENfRENIRUNLKG9ic2VydmVyc18uZW1wdHko
KSk7CiB9CiAKLXZvaWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpSZWdpc3RlclBhY2tldEZl
ZWRiYWNrT2JzZXJ2ZXIoCit2b2lkIExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6UmVn
aXN0ZXJQYWNrZXRGZWVkYmFja09ic2VydmVyKAogICAgIFBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIq
IG9ic2VydmVyKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZvYnNlcnZlcnNfbG9ja18pOwogICBS
VENfRENIRUNLKG9ic2VydmVyKTsKQEAgLTQ3LDcgKzQ4LDcgQEAgdm9pZCBUcmFuc3BvcnRGZWVk
YmFja0FkYXB0ZXI6OlJlZ2lzdGVyUGFja2V0RmVlZGJhY2tPYnNlcnZlcigKICAgb2JzZXJ2ZXJz
Xy5wdXNoX2JhY2sob2JzZXJ2ZXIpOwogfQogCi12b2lkIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRl
cjo6RGVSZWdpc3RlclBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIoCit2b2lkIExlZ2FjeVRyYW5zcG9y
dEZlZWRiYWNrQWRhcHRlcjo6RGVSZWdpc3RlclBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIoCiAgICAg
UGFja2V0RmVlZGJhY2tPYnNlcnZlciogb2JzZXJ2ZXIpIHsKICAgcnRjOjpDcml0U2NvcGUgY3Mo
Jm9ic2VydmVyc19sb2NrXyk7CiAgIFJUQ19EQ0hFQ0sob2JzZXJ2ZXIpOwpAQCAtNTYsMTAgKzU3
LDExIEBAIHZvaWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpEZVJlZ2lzdGVyUGFja2V0RmVl
ZGJhY2tPYnNlcnZlcigKICAgb2JzZXJ2ZXJzXy5lcmFzZShpdCk7CiB9CiAKLXZvaWQgVHJhbnNw
b3J0RmVlZGJhY2tBZGFwdGVyOjpBZGRQYWNrZXQodWludDMyX3Qgc3NyYywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tl
dEluZm8mIHBhY2luZ19pbmZvKSB7Cit2b2lkIExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRl
cjo6QWRkUGFja2V0KAorICAgIHVpbnQzMl90IHNzcmMsCisgICAgdWludDE2X3Qgc2VxdWVuY2Vf
bnVtYmVyLAorICAgIHNpemVfdCBsZW5ndGgsCisgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBw
YWNpbmdfaW5mbykgewogICB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJmxvY2tfKTsKICAgICBj
b25zdCBpbnQ2NF90IGNyZWF0aW9uX3RpbWVfbXMgPSBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25k
cygpOwpAQCAtNzYsMjAgKzc4LDIxIEBAIHZvaWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpB
ZGRQYWNrZXQodWludDMyX3Qgc3NyYywKICAgfQogfQogCi12b2lkIFRyYW5zcG9ydEZlZWRiYWNr
QWRhcHRlcjo6T25TZW50UGFja2V0KHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBzZW5kX3RpbWVfbXMp
IHsKK3ZvaWQgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpPblNlbnRQYWNrZXQodWlu
dDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90IHNlbmRfdGltZV9tcykgewogICBydGM6OkNyaXRTY29w
ZSBjcygmbG9ja18pOwogICBzZW5kX3RpbWVfaGlzdG9yeV8uT25TZW50UGFja2V0KHNlcXVlbmNl
X251bWJlciwgc2VuZF90aW1lX21zKTsKIH0KIAotdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXI6OlNldE5ldHdvcmtJZHModWludDE2X3QgbG9jYWxfaWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCByZW1vdGVfaWQpIHsKK3ZvaWQgTGVn
YWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpTZXROZXR3b3JrSWRzKHVpbnQxNl90IGxvY2Fs
X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDE2X3QgcmVtb3RlX2lkKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7CiAgIGxv
Y2FsX25ldF9pZF8gPSBsb2NhbF9pZDsKICAgcmVtb3RlX25ldF9pZF8gPSByZW1vdGVfaWQ7CiB9
CiAKLXN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6
OkdldFBhY2tldEZlZWRiYWNrVmVjdG9yKAorc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+CitM
ZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkdldFBhY2tldEZlZWRiYWNrVmVjdG9yKAog
ICAgIGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiBmZWVkYmFjaykgewogICBpbnQ2NF90
IHRpbWVzdGFtcF91cyA9IGZlZWRiYWNrLkdldEJhc2VUaW1lVXMoKTsKICAgaW50NjRfdCBub3df
bXMgPSBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpOwpAQCAtMTc3LDcgKzE4MCw3IEBAIHN0
ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkdldFBh
Y2tldEZlZWRiYWNrVmVjdG9yKAogICByZXR1cm4gcGFja2V0X2ZlZWRiYWNrX3ZlY3RvcjsKIH0K
IAotdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6Ok9uVHJhbnNwb3J0RmVlZGJhY2soCit2
b2lkIExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6T25UcmFuc3BvcnRGZWVkYmFjaygK
ICAgICBjb25zdCBydGNwOjpUcmFuc3BvcnRGZWVkYmFjayYgZmVlZGJhY2spIHsKICAgbGFzdF9w
YWNrZXRfZmVlZGJhY2tfdmVjdG9yXyA9IEdldFBhY2tldEZlZWRiYWNrVmVjdG9yKGZlZWRiYWNr
KTsKICAgewpAQCAtMTg5LDE4ICsxOTIsMTkgQEAgdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXI6Ok9uVHJhbnNwb3J0RmVlZGJhY2soCiB9CiAKIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNr
PgotVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpHZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3Rvcigp
IGNvbnN0IHsKK0xlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0VHJhbnNwb3J0RmVl
ZGJhY2tWZWN0b3IoKSBjb25zdCB7CiAgIHJldHVybiBsYXN0X3BhY2tldF9mZWVkYmFja192ZWN0
b3JfOwogfQogCi1hYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXI6OkdldE1pbkZlZWRiYWNrTG9vcFJ0dCgpCithYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBMZWdh
Y3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkdldE1pbkZlZWRiYWNrTG9vcFJ0dCgpCiAgICAg
Y29uc3QgewogICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwogICByZXR1cm4gbWluX2ZlZWRi
YWNrX3J0dF87CiB9CiAKLXNpemVfdCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkdldE91dHN0
YW5kaW5nQnl0ZXMoKSBjb25zdCB7CitzaXplX3QgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFw
dGVyOjpHZXRPdXRzdGFuZGluZ0J5dGVzKCkgY29uc3QgewogICBydGM6OkNyaXRTY29wZSBjcygm
bG9ja18pOwotICByZXR1cm4gc2VuZF90aW1lX2hpc3RvcnlfLkdldE91dHN0YW5kaW5nQnl0ZXMo
bG9jYWxfbmV0X2lkXywgcmVtb3RlX25ldF9pZF8pOworICByZXR1cm4gc2VuZF90aW1lX2hpc3Rv
cnlfLkdldE91dHN0YW5kaW5nRGF0YShsb2NhbF9uZXRfaWRfLCByZW1vdGVfbmV0X2lkXykKKyAg
ICAgIC5ieXRlcygpOwogfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmgKaW5kZXggMjA2MjM2Y2U4YmE3ZDJkOTJkMTY5
NjBjN2M3NjFjZTQwNmE0ZDJhNy4uYzZhYzJhZDlhZDRiYWU5YjJkMjU0ODMyZTk2NTM1YTA3ZjYw
ZGZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oCkBA
IC0yOSwxMCArMjksMTIgQEAgbmFtZXNwYWNlIHJ0Y3AgewogY2xhc3MgVHJhbnNwb3J0RmVlZGJh
Y2s7CiB9ICAvLyBuYW1lc3BhY2UgcnRjcAogCi1jbGFzcyBUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXIgeworLy8gRGVwcmVjYXRlZCwgdXNlIHZlcnNpb24gaW4KKy8vIG1vZHVsZXMvY29uZ2Vlc3Rp
b25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaAorY2xhc3MgTGVn
YWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyIHsKICBwdWJsaWM6Ci0gIGV4cGxpY2l0IFRyYW5z
cG9ydEZlZWRiYWNrQWRhcHRlcihjb25zdCBDbG9jayogY2xvY2spOwotICB2aXJ0dWFsIH5UcmFu
c3BvcnRGZWVkYmFja0FkYXB0ZXIoKTsKKyAgZXhwbGljaXQgTGVnYWN5VHJhbnNwb3J0RmVlZGJh
Y2tBZGFwdGVyKGNvbnN0IENsb2NrKiBjbG9jayk7CisgIHZpcnR1YWwgfkxlZ2FjeVRyYW5zcG9y
dEZlZWRiYWNrQWRhcHRlcigpOwogCiAgIHZvaWQgUmVnaXN0ZXJQYWNrZXRGZWVkYmFja09ic2Vy
dmVyKFBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIqIG9ic2VydmVyKTsKICAgdm9pZCBEZVJlZ2lzdGVy
UGFja2V0RmVlZGJhY2tPYnNlcnZlcihQYWNrZXRGZWVkYmFja09ic2VydmVyKiBvYnNlcnZlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyX3Vu
aXR0ZXN0LmNjCmluZGV4IDM5YWE3MmU4MTY3ZTdhYjhjNzQ0YzQ3NTJlMmU0NzUzNWZlYTZjYjku
LmRjNGVhYjEzZDY1MTA4MGMyYzhiZDJkMjViMWM1OWUxODJlOGU2MGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyX3VuaXR0ZXN0LmNjCkBA
IC01Miw3ICs1Miw3IEBAIGNsYXNzIExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlclRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgdmlydHVhbCB+TGVnYWN5VHJhbnNwb3J0RmVl
ZGJhY2tBZGFwdGVyVGVzdCgpIHt9CiAKICAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIGFk
YXB0ZXJfLnJlc2V0KG5ldyBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIoJmNsb2NrXykpOworICAg
IGFkYXB0ZXJfLnJlc2V0KG5ldyBMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIoJmNsb2Nr
XykpOwogICB9CiAKICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyBhZGFwdGVyXy5yZXNldCgp
OyB9CkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRl
clRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MzJfdCBrU3NyYyA9IDg0OTI7CiAKICAgU2ltdWxhdGVkQ2xvY2sgY2xvY2tfOwotICBzdGQ6OnVu
aXF1ZV9wdHI8VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyPiBhZGFwdGVyXzsKKyAgc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcj4gYWRhcHRlcl87CiB9OwogCiBU
RVNUX0YoTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyVGVzdCwgT2JzZXJ2ZXJTYW5pdHkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvQlVJTEQuZ24KaW5k
ZXggNzRkZTE3NDdhZmQzYzA0Yjg3MTU5N2RjODNiMWJhMjBlZTMwMjg2Ni4uMzkwZmMwYTA1MWIy
NjQwNThjZDBjNmM2ZmViZDljNzIwN2EwMTU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvQlVJTEQu
Z24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvQlVJTEQuZ24KQEAgLTYsNiArNiw3IEBACiAjIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKICMgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAK
K2ltcG9ydCgiLy9idWlsZC9jb25maWcvbGludXgvcGtnX2NvbmZpZy5nbmkiKQogaW1wb3J0KCIv
L2J1aWxkL2NvbmZpZy91aS5nbmkiKQogaW1wb3J0KCIuLi8uLi93ZWJydGMuZ25pIikKIApAQCAt
MjgsOCArMjksOCBAQCBydGNfc3RhdGljX2xpYnJhcnkoInByaW1pdGl2ZXMiKSB7CiAgIF0KIAog
ICBkZXBzID0gWwotICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vcnRjX2Jh
c2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiAKQEAgLTk1LDcg
Kzk2LDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOmRlc2t0b3BfY2FwdHVy
ZSIsCiAgICAgICAiOmRlc2t0b3BfY2FwdHVyZV9tb2NrIiwKICAgICAgICI6cHJpbWl0aXZlcyIs
Ci0gICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hl
Y2tzIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAi
Li4vLi4vc3lzdGVtX3dyYXBwZXJzOmNwdV9mZWF0dXJlc19hcGkiLApAQCAtMTY0LDYgKzE2NCwy
MyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgfQogfQogCitpZiAoaXNfbGludXgpIHsK
KyAgaWYgKHJ0Y191c2VfcGlwZXdpcmUpIHsKKyAgICBwa2dfY29uZmlnKCJwaXBld2lyZSIpIHsK
KyAgICAgIHBhY2thZ2VzID0gWyAibGlicGlwZXdpcmUtMC4yIiBdCisKKyAgICAgIGRlZmluZXMg
PSBbICJXRUJSVENfVVNFX1BJUEVXSVJFIiBdCisgICAgfQorCisgICAgcGtnX2NvbmZpZygiZ2lv
IikgeworICAgICAgcGFja2FnZXMgPSBbCisgICAgICAgICJnaW8tMi4wIiwKKyAgICAgICAgImdp
by11bml4LTIuMCIsCisgICAgICBdCisgICAgfQorICB9Cit9CisKIHJ0Y19zb3VyY2Vfc2V0KCJk
ZXNrdG9wX2NhcHR1cmUiKSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIHB1YmxpY19kZXBz
ID0gWwpAQCAtMzIxLDM5ICszMzgsNjkgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJkZXNrdG9wX2Nh
cHR1cmVfZ2VuZXJpYyIpIHsKICAgICBdCiAgIH0KIAorICBpZiAocnRjX3VzZV94MTEgfHwgcnRj
X3VzZV9waXBld2lyZSkgeworICAgIHNvdXJjZXMgKz0gWworICAgICAgIm1vdXNlX2N1cnNvcl9t
b25pdG9yX2xpbnV4LmNjIiwKKyAgICAgICJzY3JlZW5fY2FwdHVyZXJfbGludXguY2MiLAorICAg
ICAgIndpbmRvd19jYXB0dXJlcl9saW51eC5jYyIsCisgICAgXQorCisgICAgaWYgKGJ1aWxkX3dp
dGhfbW96aWxsYSkgeworICAgICAgc291cmNlcyArPSBbICJhcHBfY2FwdHVyZXJfbGludXguY2Mi
IF0KKyAgICB9CisgIH0KKwogICBpZiAocnRjX3VzZV94MTEpIHsKICAgICBzb3VyY2VzICs9IFsK
LSAgICAgICJtb3VzZV9jdXJzb3JfbW9uaXRvcl94MTEuY2MiLAotICAgICAgInNjcmVlbl9jYXB0
dXJlcl94MTEuY2MiLAotICAgICAgIndpbmRvd19jYXB0dXJlcl94MTEuY2MiLAotICAgICAgIndp
bmRvd19maW5kZXJfeDExLmNjIiwKLSAgICAgICJ3aW5kb3dfZmluZGVyX3gxMS5oIiwKLSAgICAg
ICJ4MTEvc2hhcmVkX3hfZGlzcGxheS5jYyIsCi0gICAgICAieDExL3NoYXJlZF94X2Rpc3BsYXku
aCIsCi0gICAgICAieDExL3dpbmRvd19saXN0X3V0aWxzLmNjIiwKLSAgICAgICJ4MTEvd2luZG93
X2xpc3RfdXRpbHMuaCIsCi0gICAgICAieDExL3hfYXRvbV9jYWNoZS5jYyIsCi0gICAgICAieDEx
L3hfYXRvbV9jYWNoZS5oIiwKLSAgICAgICJ4MTEveF9lcnJvcl90cmFwLmNjIiwKLSAgICAgICJ4
MTEveF9lcnJvcl90cmFwLmgiLAotICAgICAgIngxMS94X3NlcnZlcl9waXhlbF9idWZmZXIuY2Mi
LAotICAgICAgIngxMS94X3NlcnZlcl9waXhlbF9idWZmZXIuaCIsCisgICAgICAibGludXgvbW91
c2VfY3Vyc29yX21vbml0b3JfeDExLmNjIiwKKyAgICAgICJsaW51eC9tb3VzZV9jdXJzb3JfbW9u
aXRvcl94MTEuaCIsCisgICAgICAibGludXgvc2NyZWVuX2NhcHR1cmVyX3gxMS5jYyIsCisgICAg
ICAibGludXgvc2NyZWVuX2NhcHR1cmVyX3gxMS5oIiwKKyAgICAgICJsaW51eC9zaGFyZWRfeF9k
aXNwbGF5LmNjIiwKKyAgICAgICJsaW51eC9zaGFyZWRfeF9kaXNwbGF5LmgiLAorICAgICAgImxp
bnV4L3dpbmRvd19jYXB0dXJlcl94MTEuY2MiLAorICAgICAgImxpbnV4L3dpbmRvd19jYXB0dXJl
cl94MTEuaCIsCisgICAgICAibGludXgvd2luZG93X2ZpbmRlcl94MTEuY2MiLAorICAgICAgImxp
bnV4L3dpbmRvd19maW5kZXJfeDExLmgiLAorICAgICAgImxpbnV4L3dpbmRvd19saXN0X3V0aWxz
LmNjIiwKKyAgICAgICJsaW51eC93aW5kb3dfbGlzdF91dGlscy5oIiwKKyAgICAgICJsaW51eC94
X2F0b21fY2FjaGUuY2MiLAorICAgICAgImxpbnV4L3hfYXRvbV9jYWNoZS5oIiwKKyAgICAgICJs
aW51eC94X2Vycm9yX3RyYXAuY2MiLAorICAgICAgImxpbnV4L3hfZXJyb3JfdHJhcC5oIiwKKyAg
ICAgICJsaW51eC94X3NlcnZlcl9waXhlbF9idWZmZXIuY2MiLAorICAgICAgImxpbnV4L3hfc2Vy
dmVyX3BpeGVsX2J1ZmZlci5oIiwKICAgICBdCiAgICAgY29uZmlncyArPSBbICIvL2J1aWxkL2Nv
bmZpZy9saW51eDp4MTEiIF0KIAogICAgIGlmIChidWlsZF93aXRoX21vemlsbGEpIHsKICAgICAg
IHNvdXJjZXMgKz0gWwotICAgICAgICAiYXBwX2NhcHR1cmVyX3gxMS5jYyIsCi0gICAgICAgICJh
cHBfY2FwdHVyZXJfeDExLmgiLAotICAgICAgICAieDExL2Rlc2t0b3BfZGV2aWNlX2luZm9feDEx
LmNjIiwKLSAgICAgICAgIngxMS9kZXNrdG9wX2RldmljZV9pbmZvX3gxMS5oIiwKLSAgICAgICAg
IngxMS9zaGFyZWRfeF91dGlsLmNjIiwKLSAgICAgICAgIngxMS9zaGFyZWRfeF91dGlsLmgiLAor
ICAgICAgICAibGludXgvYXBwX2NhcHR1cmVyX3gxMS5jYyIsCisgICAgICAgICJsaW51eC9kZXNr
dG9wX2RldmljZV9pbmZvX2xpbnV4LmNjIiwKKyAgICAgICAgImxpbnV4L2Rlc2t0b3BfZGV2aWNl
X2luZm9fbGludXguaCIsCisgICAgICAgICJsaW51eC9zaGFyZWRfeF91dGlsLmNjIiwKKyAgICAg
ICAgImxpbnV4L3NoYXJlZF94X3V0aWwuaCIsCiAgICAgICBdCiAgICAgfQogICB9CiAKLSAgaWYg
KCFpc193aW4gJiYgIWlzX21hYyAmJiAhcnRjX3VzZV94MTEpIHsKKyAgaWYgKHJ0Y191c2VfcGlw
ZXdpcmUpIHsKKyAgICBzb3VyY2VzICs9IFsKKyAgICAgICJsaW51eC9iYXNlX2NhcHR1cmVyX3Bp
cGV3aXJlLmNjIiwKKyAgICAgICJsaW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmgiLAorICAg
ICAgImxpbnV4L3NjcmVlbl9jYXB0dXJlcl9waXBld2lyZS5jYyIsCisgICAgICAibGludXgvc2Ny
ZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmgiLAorICAgICAgImxpbnV4L3dpbmRvd19jYXB0dXJlcl9w
aXBld2lyZS5jYyIsCisgICAgICAibGludXgvd2luZG93X2NhcHR1cmVyX3BpcGV3aXJlLmgiLAor
ICAgIF0KKworICAgIGNvbmZpZ3MgKz0gWworICAgICAgIjpnaW8iLAorICAgICAgIjpwaXBld2ly
ZSIsCisgICAgXQorICB9CisKKyAgaWYgKCFpc193aW4gJiYgIWlzX21hYyAmJiAhcnRjX3VzZV94
MTEgJiYgIXJ0Y191c2VfcGlwZXdpcmUpIHsKICAgICBzb3VyY2VzICs9IFsKICAgICAgICJtb3Vz
ZV9jdXJzb3JfbW9uaXRvcl9udWxsLmNjIiwKICAgICAgICJzY3JlZW5fY2FwdHVyZXJfbnVsbC5j
YyIsCkBAIC0zNzAsMTIgKzQxNywxMiBAQCBydGNfc3RhdGljX2xpYnJhcnkoImRlc2t0b3BfY2Fw
dHVyZV9nZW5lcmljIikgewogCiAgIGRlcHMgPSBbCiAgICAgIjpwcmltaXRpdmVzIiwKLSAgICAi
Li4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL2FwaTpyZWZjb3VudGVkYmFzZSIsCiAg
ICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNl
IiwgICMgVE9ETyhramVsbGFuZGVyKTogQ2xlYW51cCBpbiBidWdzLndlYnJ0Yy5vcmcvMzgwNi4K
ICAgICAiLi4vLi4vcnRjX2Jhc2Uvc3luY2hyb25pemF0aW9uOnJ3X2xvY2tfd3JhcHBlciIsCiAg
ICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTphcmNoIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lz
dGVtOnJ0Y19leHBvcnQiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAogICAgICIuLi8u
Li9zeXN0ZW1fd3JhcHBlcnM6Y3B1X2ZlYXR1cmVzX2FwaSIsCiAgICAgIi4uLy4uL3N5c3RlbV93
cmFwcGVyczptZXRyaWNzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Nyb3BwZWRfZGVza3RvcF9m
cmFtZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBlZF9kZXNrdG9wX2ZyYW1lLmgKaW5kZXggNTlkY2VkNDAx
NzliZGQ5M2Q4MWMzYjQ3YWU3M2E1ZjcxOTljNmEzYy4uNjc4MjM5OGE2YWIxZTIxZDM1ZTExNWJj
NDgwMWE2YWNmMzI4MTRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBlZF9kZXNrdG9wX2Zy
YW1lLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBlZF9kZXNrdG9wX2ZyYW1lLmgKQEAgLTEyLDYgKzEy
LDcgQEAKICNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfQ1JPUFBFRF9ERVNLVE9QX0ZS
QU1FX0hfCiAKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1l
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKQEAgLTIwLDkgKzIxLDkgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyB8ZnJh
bWV8IHNob3VsZCBub3QgYmUgbnVsbHB0ci4gfHJlY3R8IGlzIGluIHxmcmFtZXwgY29vcmRpbmF0
ZSwgaS5lLgogLy8gfGZyYW1lfC0+dG9wX2xlZnQoKSBkb2VzIG5vdCBpbXBhY3QgdGhlIGFyZWEg
b2YgfHJlY3R8LgogLy8gUmV0dXJucyBudWxscHRyIGZyYW1lIGlmIHxyZWN0fCBpcyBub3QgY29u
dGFpbmVkIGJ5IHRoZSBib3VuZHMgb2YgfGZyYW1lfC4KLXN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9w
RnJhbWU+IENyZWF0ZUNyb3BwZWREZXNrdG9wRnJhbWUoCi0gICAgc3RkOjp1bmlxdWVfcHRyPERl
c2t0b3BGcmFtZT4gZnJhbWUsCi0gICAgY29uc3QgRGVza3RvcFJlY3QmIHJlY3QpOworc3RkOjp1
bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gUlRDX0VYUE9SVAorQ3JlYXRlQ3JvcHBlZERlc2t0b3BG
cmFtZShzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBmcmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRGVza3RvcFJlY3QmIHJlY3QpOwogCiB9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Nyb3BwaW5nX3dpbmRvd19jYXB0dXJlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvY3JvcHBpbmdfd2luZG93X2NhcHR1cmVyLmgKaW5kZXggYzg4OTgwMWRhM2M1
YmJmZWI1Yzg0OWNiNzZlMGZjNWM4NmY0YjcwZi4uMjI0MTk4ZmE2MTUxMTBiMTQyMTZkYzUwZTNm
Y2MwMzE4MWFmN2ZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBpbmdfd2luZG93X2NhcHR1
cmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBpbmdfd2luZG93X2NhcHR1cmVyLmgKQEAgLTE1LDE0
ICsxNSwxNSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9j
YXB0dXJlX29wdGlvbnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNr
dG9wX2NhcHR1cmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIFdpbmRvd0NhcHR1cmVyIGltcGxlbWVudGF0aW9u
IHRoYXQgdXNlcyBhIHNjcmVlbiBjYXB0dXJlciB0byBjYXB0dXJlIHRoZQogLy8gd2hvbGUgc2Ny
ZWVuIGFuZCBjcm9wcyB0aGUgdmlkZW8gZnJhbWUgdG8gdGhlIHdpbmRvdyBhcmVhIHdoZW4gdGhl
IGNhcHR1cmVkCiAvLyB3aW5kb3cgaXMgb24gdG9wLgotY2xhc3MgQ3JvcHBpbmdXaW5kb3dDYXB0
dXJlciA6IHB1YmxpYyBEZXNrdG9wQ2FwdHVyZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIERlc2t0b3BDYXB0dXJlcjo6Q2FsbGJhY2sgeworY2xhc3MgUlRDX0VYUE9S
VCBDcm9wcGluZ1dpbmRvd0NhcHR1cmVyIDogcHVibGljIERlc2t0b3BDYXB0dXJlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBEZXNrdG9wQ2FwdHVy
ZXI6OkNhbGxiYWNrIHsKICBwdWJsaWM6CiAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVza3Rv
cENhcHR1cmVyPiBDcmVhdGVDYXB0dXJlcigKICAgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0
aW9ucyYgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2FuZF9jdXJzb3Jf
Y29tcG9zZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfYW5kX2N1cnNvcl9jb21wb3Nlci5oCmluZGV4
IDdkZmY3MTAxZjM1ZDgzM2M2OTMzMWY2NmI3YjdhNmZiM2MzMzAwODkuLmZhNWQxNWM5MmY2MDE4
ZjhmZmJhZjBjNDRlY2RmYzQzM2E5NGRmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3Bf
YW5kX2N1cnNvcl9jb21wb3Nlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfYW5kX2N1cnNvcl9j
b21wb3Nlci5oCkBAIC0xNywxNCArMTcsMTYgQEAKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbW91c2VfY3Vyc29yX21vbml0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1
Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEEgd3JhcHBlciBmb3IgRGVza3RvcENhcHR1cmVyIHRo
YXQgYWxzbyBjYXB0dXJlcyBtb3VzZSB1c2luZyBzcGVjaWZpZWQKIC8vIE1vdXNlQ3Vyc29yTW9u
aXRvciBhbmQgcmVuZGVycyBpdCBvbiB0aGUgZ2VuZXJhdGVkIHN0cmVhbXMuCi1jbGFzcyBEZXNr
dG9wQW5kQ3Vyc29yQ29tcG9zZXIgOiBwdWJsaWMgRGVza3RvcENhcHR1cmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIERlc2t0b3BDYXB0dXJlcjo6Q2FsbGJhY2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgTW91c2VDdXJzb3JNb25p
dG9yOjpDYWxsYmFjayB7CitjbGFzcyBSVENfRVhQT1JUIERlc2t0b3BBbmRDdXJzb3JDb21wb3Nl
cgorICAgIDogcHVibGljIERlc2t0b3BDYXB0dXJlciwKKyAgICAgIHB1YmxpYyBEZXNrdG9wQ2Fw
dHVyZXI6OkNhbGxiYWNrLAorICAgICAgcHVibGljIE1vdXNlQ3Vyc29yTW9uaXRvcjo6Q2FsbGJh
Y2sgewogIHB1YmxpYzoKICAgLy8gQ3JlYXRlcyBhIG5ldyBibGVuZGVyIHRoYXQgY2FwdHVyZXMg
bW91c2UgY3Vyc29yIHVzaW5nCiAgIC8vIE1vdXNlQ3Vyc29yTW9uaXRvcjo6Q3JlYXRlKG9wdGlv
bnMpIGFuZCByZW5kZXJzIGl0IGludG8gdGhlIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
ZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRp
b25zLmgKaW5kZXggNjBhYTA1YzNmZDMzMjlkMjc0NzgxMmYwZjQ4Mzg1MTRlNzlkM2Y4Mi4uZTk1
ODdhM2Y1MGMzMWIwODUzNWQ4ZDdhMDViZmQ0NjlmZjM3NzY3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1
cmVfb3B0aW9ucy5oCkBAIC0xMiw5ICsxMiwxMCBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29u
c3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogI2lmIGRlZmluZWQoVVNF
X1gxMSkKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hfZGlz
cGxheS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJlZF94
X2Rpc3BsYXkuaCIKICNlbmRpZgogCiAjaWYgZGVmaW5lZChXRUJSVENfTUFDKSAmJiAhZGVmaW5l
ZChXRUJSVENfSU9TKQpAQCAtMjYsNyArMjcsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8g
QW4gb2JqZWN0IHRoYXQgc3RvcmVzIGluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMgZm9yIHNjcmVl
biBhbmQgd2luZG93CiAvLyBjYXB0dXJlcnMuCi1jbGFzcyBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMg
eworY2xhc3MgUlRDX0VYUE9SVCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMgewogIHB1YmxpYzoKICAg
Ly8gUmV0dXJucyBpbnN0YW5jZSBvZiBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMgd2l0aCBkZWZhdWx0
IHBhcmFtZXRlcnMuIE9uIExpbnV4CiAgIC8vIGFsc28gaW5pdGlhbGl6ZXMgWCB3aW5kb3cgY29u
bmVjdGlvbi4geF9kaXNwbGF5KCkgd2lsbCBiZSBzZXQgdG8gbnVsbCBpZgpAQCAtMTE0LDYgKzEx
NSwxMSBAQCBjbGFzcyBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMgewogICB9CiAjZW5kaWYKIAorI2lm
IGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkKKyAgYm9vbCBhbGxvd19waXBld2lyZSgpIGNv
bnN0IHsgcmV0dXJuIGFsbG93X3BpcGV3aXJlXzsgfQorICB2b2lkIHNldF9hbGxvd19waXBld2ly
ZShib29sIGFsbG93KSB7IGFsbG93X3BpcGV3aXJlXyA9IGFsbG93OyB9CisjZW5kaWYKKwogIHBy
aXZhdGU6CiAjaWYgZGVmaW5lZChVU0VfWDExKQogICBydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVk
WERpc3BsYXk+IHhfZGlzcGxheV87CkBAIC0xMzcsNiArMTQzLDkgQEAgY2xhc3MgRGVza3RvcENh
cHR1cmVPcHRpb25zIHsKICNlbmRpZgogICBib29sIGRpc2FibGVfZWZmZWN0c18gPSB0cnVlOwog
ICBib29sIGRldGVjdF91cGRhdGVkX3JlZ2lvbl8gPSBmYWxzZTsKKyNpZiBkZWZpbmVkKFdFQlJU
Q19VU0VfUElQRVdJUkUpCisgIGJvb2wgYWxsb3dfcGlwZXdpcmVfID0gZmFsc2U7CisjZW5kaWYK
IH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0
b3BfY2FwdHVyZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmNjCmluZGV4IDE2NmQ5
N2NjNTJhZjY5OTc3ZTNkYTFlYjliMWI5NGM1NzBiODEwNWUuLjE5MGY2MWU4MTc1NWEzMjZmZmEw
NDZhZWVmM2EwM2JjMjc5MmM0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVy
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5jYwpAQCAtOCw2ICs4LDggQEAK
ICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KICAqLwogCisjaW5jbHVkZSA8Y3N0cmluZz4KKwogI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuaCIKIAogI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgiCkBAIC02MCw0ICs2Miwx
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBEZXNrdG9wQ2FwdHVyZXI6OkNy
ZWF0ZVNjcmVlbkNhcHR1cmVyKAogICByZXR1cm4gY2FwdHVyZXI7CiB9CiAKKyNpZiBkZWZpbmVk
KFdFQlJUQ19VU0VfUElQRVdJUkUpIHx8IGRlZmluZWQoVVNFX1gxMSkKK2Jvb2wgRGVza3RvcENh
cHR1cmVyOjpJc1J1bm5pbmdVbmRlcldheWxhbmQoKSB7CisgIGNvbnN0IGNoYXIqIHhkZ19zZXNz
aW9uX3R5cGUgPSBnZXRlbnYoIlhER19TRVNTSU9OX1RZUEUiKTsKKyAgaWYgKCF4ZGdfc2Vzc2lv
bl90eXBlIHx8IHN0cm5jbXAoeGRnX3Nlc3Npb25fdHlwZSwgIndheWxhbmQiLCA3KSAhPSAwKQor
ICAgIHJldHVybiBmYWxzZTsKKworICBpZiAoIShnZXRlbnYoIldBWUxBTkRfRElTUExBWSIpKSkK
KyAgICByZXR1cm4gZmFsc2U7CisKKyAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYgIC8vIGRlZmlu
ZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkgfHwgZGVmaW5lZChVU0VfWDExKQorCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgKaW5kZXggNDcxOTZjZmU0OTEwODNkNjY2OTMwZWI5
NTU2YjM5YTFjM2Q3MjkyZi4uZjlkYWNjMWY3YTM4NDc3ZjdlMzI4M2VlYjYyZDgzYTkxM2FiZjBh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2Rlc2t0b3BfY2FwdHVyZXIuaApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZnJhbWUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9zaGFyZWRfbWVtb3J5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVt
L3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTI5LDcgKzMwLDcgQEAg
Y2xhc3MgRGVza3RvcENhcHR1cmVPcHRpb25zOwogY2xhc3MgRGVza3RvcEZyYW1lOwogCiAvLyBB
YnN0cmFjdCBpbnRlcmZhY2UgZm9yIHNjcmVlbiBhbmQgd2luZG93IGNhcHR1cmVycy4KLWNsYXNz
IERlc2t0b3BDYXB0dXJlciB7CitjbGFzcyBSVENfRVhQT1JUIERlc2t0b3BDYXB0dXJlciB7CiAg
cHVibGljOgogICBlbnVtIGNsYXNzIFJlc3VsdCB7CiAgICAgLy8gVGhlIGZyYW1lIHdhcyBjYXB0
dXJlZCBzdWNjZXNzZnVsbHkuCkBAIC0xMzQsNiArMTM1LDEwIEBAIGNsYXNzIERlc2t0b3BDYXB0
dXJlciB7CiAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBDcmVhdGVT
Y3JlZW5DYXB0dXJlcigKICAgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9u
cyk7CiAKKyNpZiBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpIHx8IGRlZmluZWQoVVNFX1gx
MSkKKyAgc3RhdGljIGJvb2wgSXNSdW5uaW5nVW5kZXJXYXlsYW5kKCk7CisjZW5kaWYgIC8vIGRl
ZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkgfHwgZGVmaW5lZChVU0VfWDExKQorCiAgcHJvdGVj
dGVkOgogICAvLyBDcm9wcGluZ1dpbmRvd0NhcHR1cmVyIG5lZWRzIHRvIGNyZWF0ZSByYXcgY2Fw
dHVyZXJzIHdpdGhvdXQgd3JhcHBlcnMsIHNvCiAgIC8vIHRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0
aW9ucyBhcmUgcHJvdGVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oCmluZGV4IDZmN2VkZmNjNGY3MDk1ZTFlZjIzNjZl
ODA4OGU0Njk0YjUzODkyMTguLjI5Yjg0YjcxODM3MmNmMGQyMjc1NzI5NDg0YzU5NjE0MDg5MjY0
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZnJhbWUuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9k
ZXNrdG9wX2ZyYW1lLmgKQEAgLTE4LDEzICsxOCwxNCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL2Rlc2t0b3BfcmVnaW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvc2hhcmVkX21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIAogY29uc3QgaW50IGtTdGFuZGFyZERQSSA9IDk2OwogCiAvLyBEZXNr
dG9wRnJhbWUgcmVwcmVzZW50cyBhIHZpZGVvIGZyYW1lIGNhcHR1cmVkIGZyb20gdGhlIHNjcmVl
bi4KLWNsYXNzIERlc2t0b3BGcmFtZSB7CitjbGFzcyBSVENfRVhQT1JUIERlc2t0b3BGcmFtZSB7
CiAgcHVibGljOgogICAvLyBEZXNrdG9wRnJhbWUgb2JqZWN0cyBhbHdheXMgaG9sZCBSR0JBIGRh
dGEuCiAgIHN0YXRpYyBjb25zdCBpbnQga0J5dGVzUGVyUGl4ZWwgPSA0OwpAQCAtMTM1LDcgKzEz
Niw3IEBAIGNsYXNzIERlc2t0b3BGcmFtZSB7CiB9OwogCiAvLyBBIERlc2t0b3BGcmFtZSB0aGF0
IHN0b3JlcyBkYXRhIGluIHRoZSBoZWFwLgotY2xhc3MgQmFzaWNEZXNrdG9wRnJhbWUgOiBwdWJs
aWMgRGVza3RvcEZyYW1lIHsKK2NsYXNzIFJUQ19FWFBPUlQgQmFzaWNEZXNrdG9wRnJhbWUgOiBw
dWJsaWMgRGVza3RvcEZyYW1lIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IEJhc2ljRGVza3RvcEZy
YW1lKERlc2t0b3BTaXplIHNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2dl
b21ldHJ5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2dlb21ldHJ5LmgKaW5kZXggMDlhZDU1YmI0YmYx
NTZkM2NhOTlmODEzNmNiYzVmNjY4NmZhYzM5OC4uNjIzYTQ1NTVmOWY0OGQ2YzYxMDgzMWQyZDAz
MzVhMTc5YmQ2YTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9nZW9tZXRyeS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0cnkuaApAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1
ZGUgPHN0ZGludC5oPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogCkBAIC03NCw3ICs3NSw3IEBAIGNsYXNzIERlc2t0b3BTaXplIHsKIH07CiAKIC8vIFJl
cHJlc2VudHMgYSByZWN0YW5nbGUgb24gdGhlIHNjcmVlbi4KLWNsYXNzIERlc2t0b3BSZWN0IHsK
K2NsYXNzIFJUQ19FWFBPUlQgRGVza3RvcFJlY3QgewogIHB1YmxpYzoKICAgc3RhdGljIERlc2t0
b3BSZWN0IE1ha2VTaXplKGNvbnN0IERlc2t0b3BTaXplJiBzaXplKSB7CiAgICAgcmV0dXJuIERl
c2t0b3BSZWN0KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9kZXNrdG9wX3JlZ2lvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9yZWdpb24uaApp
bmRleCBmNGI5MjA5ZTJkY2FmZmM1ZDIxMjdmZWJmZjI3NmQzNDAzN2UzMzkwLi5jYmIyZDhjNDhi
NTMwM2RhNzMxYTViN2U0N2UxN2YwMGRhZTc3MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNr
dG9wX3JlZ2lvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfcmVnaW9uLmgKQEAgLTE2LDYgKzE2
LDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0
cnkuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAg
LTIzLDcgKzI0LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLwogLy8gSW50ZXJuYWxseSBlYWNo
IHJlZ2lvbiBpcyBzdG9yZWQgYXMgYSBzZXQgb2Ygcm93cyB3aGVyZSBlYWNoIHJvdyBjb250YWlu
cyBvbmUKIC8vIG9yIG1vcmUgcmVjdGFuZ2xlcyBhbGlnbmVkIHZlcnRpY2FsbHkuCi1jbGFzcyBE
ZXNrdG9wUmVnaW9uIHsKK2NsYXNzIFJUQ19FWFBPUlQgRGVza3RvcFJlZ2lvbiB7CiAgcHJpdmF0
ZToKICAgLy8gVGhlIGZvbGxvd2luZyBwcml2YXRlIHR5cGVzIG5lZWQgdG8gYmUgZGVjbGFyZWQg
Zmlyc3QgYmVjYXVzZSB0aGV5IGFyZSB1c2VkCiAgIC8vIGluIHRoZSBwdWJsaWMgSXRlcmF0b3Iu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9mYWtlX2Rlc2t0b3BfY2FwdHVyZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2Zha2VfZGVza3RvcF9jYXB0dXJlci5oCmluZGV4IDgyYzA1M2NiZTA5OGI5OTFiYmExMDk2M2Ji
YWIxM2Y1N2Y0ODUyNjEuLmZkODY3ZTMzNWRhMTkyM2EyMjZkZjYyYzUwYjEzZmMzZDUyNDk5MDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Zha2VfZGVza3RvcF9jYXB0dXJlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL2Zha2VfZGVza3RvcF9jYXB0dXJlci5oCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAi
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZnJhbWVfZ2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2hhcmVkX21lbW9yeS5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0z
MSw3ICszMiw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogLy8gRG91YmxlIGJ1ZmZlcmluZyBpcyBn
dWFyYW50ZWVkIGJ5IHRoZSBGcmFtZUdlbmVyYXRvci4gRnJhbWVHZW5lcmF0b3IKIC8vIGltcGxl
bWVudHMgaW4gZGVza3RvcF9mcmFtZV9nZW5lcmF0b3IuaCBndWFyYW50ZWUgZG91YmxlIGJ1ZmZl
cmluZywgdGhleQogLy8gY3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBEZXNrdG9wRnJhbWUgZWFj
aCB0aW1lLgotY2xhc3MgRmFrZURlc2t0b3BDYXB0dXJlciA6IHB1YmxpYyBEZXNrdG9wQ2FwdHVy
ZXIgeworY2xhc3MgUlRDX0VYUE9SVCBGYWtlRGVza3RvcENhcHR1cmVyIDogcHVibGljIERlc2t0
b3BDYXB0dXJlciB7CiAgcHVibGljOgogICBGYWtlRGVza3RvcENhcHR1cmVyKCk7CiAgIH5GYWtl
RGVza3RvcENhcHR1cmVyKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9i
YXNlX2NhcHR1cmVyX3BpcGV3aXJlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvYmFzZV9jYXB0dXJlcl9w
aXBld2lyZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmQ5OTk0ZDMyYTUyNWVlOWUwZmU1OWIyZWRlNmFlM2Nj
NDEzMTBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvYmFzZV9jYXB0dXJlcl9w
aXBld2lyZS5jYwpAQCAtMCwwICsxLDg0MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUu
aCIKKworI2luY2x1ZGUgPGdpby9ndW5peGZkbGlzdC5oPgorI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CisKKyNpbmNsdWRlIDxzcGEvcGFyYW0vZm9ybWF0LXV0aWxzLmg+CisjaW5jbHVkZSA8c3Bh
L3BhcmFtL3Byb3BzLmg+CisjaW5jbHVkZSA8c3BhL3BhcmFtL3ZpZGVvL3Jhdy11dGlscy5oPgor
I2luY2x1ZGUgPHNwYS9zdXBwb3J0L3R5cGUtbWFwLmg+CisKKyNpbmNsdWRlIDxtZW1vcnk+Cisj
aW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NvbnN0IGNoYXIga0Rlc2t0b3BCdXNOYW1lW10g
PSAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIjsKK2NvbnN0IGNoYXIga0Rlc2t0b3BP
YmplY3RQYXRoW10gPSAiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVza3RvcCI7Citjb25zdCBj
aGFyIGtEZXNrdG9wUmVxdWVzdE9iamVjdFBhdGhbXSA9CisgICAgIi9vcmcvZnJlZWRlc2t0b3Av
cG9ydGFsL2Rlc2t0b3AvcmVxdWVzdCI7Citjb25zdCBjaGFyIGtTZXNzaW9uSW50ZXJmYWNlTmFt
ZVtdID0gIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2Vzc2lvbiI7Citjb25zdCBjaGFyIGtSZXF1
ZXN0SW50ZXJmYWNlTmFtZVtdID0gIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuUmVxdWVzdCI7Citj
b25zdCBjaGFyIGtTY3JlZW5DYXN0SW50ZXJmYWNlTmFtZVtdID0gIm9yZy5mcmVlZGVza3RvcC5w
b3J0YWwuU2NyZWVuQ2FzdCI7CisKK2NvbnN0IGludCBrQnl0ZXNQZXJQaXhlbCA9IDQ7CisKKy8v
IHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25TdGF0ZUNoYW5nZWQodm9pZCog
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3X3JlbW90
ZV9zdGF0ZSBvbGRfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwd19yZW1vdGVfc3RhdGUgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJvcl9tZXNzYWdlKSB7CisgIEJhc2VDYXB0dXJl
clBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPihkYXRh
KTsKKyAgUlRDX0RDSEVDSyh0aGF0KTsKKworICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBQ
V19SRU1PVEVfU1RBVEVfRVJST1I6CisgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiUGlwZVdp
cmUgcmVtb3RlIHN0YXRlIGVycm9yOiAiIDw8IGVycm9yX21lc3NhZ2U7CisgICAgICBicmVhazsK
KyAgICBjYXNlIFBXX1JFTU9URV9TVEFURV9DT05ORUNURUQ6CisgICAgICBSVENfTE9HKExTX0lO
Rk8pIDw8ICJQaXBlV2lyZSByZW1vdGUgc3RhdGU6IGNvbm5lY3RlZC4iOworICAgICAgdGhhdC0+
Q3JlYXRlUmVjZWl2aW5nU3RyZWFtKCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBXX1JFTU9U
RV9TVEFURV9DT05ORUNUSU5HOgorICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUGlwZVdpcmUg
cmVtb3RlIHN0YXRlOiBjb25uZWN0aW5nLiI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBXX1JF
TU9URV9TVEFURV9VTkNPTk5FQ1RFRDoKKyAgICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlBpcGVX
aXJlIHJlbW90ZSBzdGF0ZTogdW5jb25uZWN0ZWQuIjsKKyAgICAgIGJyZWFrOworICB9Cit9CisK
Ky8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25TdHJlYW1TdGF0ZUNoYW5n
ZWQodm9pZCogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB3X3N0cmVhbV9zdGF0ZSBvbGRfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwd19zdHJlYW1fc3RhdGUgc3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJv
cl9tZXNzYWdlKSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8
QmFzZUNhcHR1cmVyUGlwZVdpcmUqPihkYXRhKTsKKyAgUlRDX0RDSEVDSyh0aGF0KTsKKworICBz
d2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBQV19TVFJFQU1fU1RBVEVfRVJST1I6CisgICAgICBS
VENfTE9HKExTX0VSUk9SKSA8PCAiUGlwZVdpcmUgc3RyZWFtIHN0YXRlIGVycm9yOiAiIDw8IGVy
cm9yX21lc3NhZ2U7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBXX1NUUkVBTV9TVEFURV9DT05G
SUdVUkU6CisgICAgICBwd19zdHJlYW1fc2V0X2FjdGl2ZSh0aGF0LT5wd19zdHJlYW1fLCB0cnVl
KTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFdfU1RSRUFNX1NUQVRFX1VOQ09OTkVDVEVEOgor
ICAgIGNhc2UgUFdfU1RSRUFNX1NUQVRFX0NPTk5FQ1RJTkc6CisgICAgY2FzZSBQV19TVFJFQU1f
U1RBVEVfUkVBRFk6CisgICAgY2FzZSBQV19TVFJFQU1fU1RBVEVfUEFVU0VEOgorICAgIGNhc2Ug
UFdfU1RSRUFNX1NUQVRFX1NUUkVBTUlORzoKKyAgICAgIGJyZWFrOworICB9Cit9CisKKy8vIHN0
YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25TdHJlYW1Gb3JtYXRDaGFuZ2VkKHZv
aWQqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RydWN0IHNwYV9wb2QqIGZvcm1hdCkgeworICBCYXNlQ2FwdHVyZXJQaXBlV2ly
ZSogdGhhdCA9IHN0YXRpY19jYXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4oZGF0YSk7CisgIFJU
Q19EQ0hFQ0sodGhhdCk7CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUGlwZVdpcmUgc3RyZWFt
IGZvcm1hdCBjaGFuZ2VkLiI7CisKKyAgaWYgKCFmb3JtYXQpIHsKKyAgICBwd19zdHJlYW1fZmlu
aXNoX2Zvcm1hdCh0aGF0LT5wd19zdHJlYW1fLCAvKnJlcz0qLzAsIC8qcGFyYW1zPSovbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm5fcGFyYW1zPSovMCk7CisgICAgcmV0
dXJuOworICB9CisKKyAgdGhhdC0+c3BhX3ZpZGVvX2Zvcm1hdF8gPSBuZXcgc3BhX3ZpZGVvX2lu
Zm9fcmF3KCk7CisgIHNwYV9mb3JtYXRfdmlkZW9fcmF3X3BhcnNlKGZvcm1hdCwgdGhhdC0+c3Bh
X3ZpZGVvX2Zvcm1hdF8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aGF0LT5wd190
eXBlXy0+Zm9ybWF0X3ZpZGVvKTsKKworICBhdXRvIHdpZHRoID0gdGhhdC0+c3BhX3ZpZGVvX2Zv
cm1hdF8tPnNpemUud2lkdGg7CisgIGF1dG8gaGVpZ2h0ID0gdGhhdC0+c3BhX3ZpZGVvX2Zvcm1h
dF8tPnNpemUuaGVpZ2h0OworICBhdXRvIHN0cmlkZSA9IFNQQV9ST1VORF9VUF9OKHdpZHRoICog
a0J5dGVzUGVyUGl4ZWwsIDQpOworICBhdXRvIHNpemUgPSBoZWlnaHQgKiBzdHJpZGU7CisKKyAg
dWludDhfdCBidWZmZXJbMTAyNF0gPSB7fTsKKyAgYXV0byBidWlsZGVyID0gc3BhX3BvZF9idWls
ZGVye2J1ZmZlciwgc2l6ZW9mKGJ1ZmZlcil9OworCisgIC8vIFNldHVwIGJ1ZmZlcnMgYW5kIG1l
dGEgaGVhZGVyIGZvciBuZXcgZm9ybWF0LgorICBjb25zdCBzdHJ1Y3Qgc3BhX3BvZCogcGFyYW1z
WzJdOworICBwYXJhbXNbMF0gPSByZWludGVycHJldF9jYXN0PHNwYV9wb2QqPihzcGFfcG9kX2J1
aWxkZXJfb2JqZWN0KAorICAgICAgJmJ1aWxkZXIsCisgICAgICAvLyBpZCB0byBlbnVtZXJhdGUg
YnVmZmVyIHJlcXVpcmVtZW50cworICAgICAgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW0uaWRC
dWZmZXJzLAorICAgICAgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW1fYnVmZmVycy5CdWZmZXJz
LAorICAgICAgLy8gU2l6ZTogc3BlY2lmaWVkIGFzIGludGVnZXIgKGkpIGFuZCBzZXQgdG8gc3Bl
Y2lmaWVkIHNpemUKKyAgICAgICI6IiwgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW1fYnVmZmVy
cy5zaXplLCAiaSIsIHNpemUsCisgICAgICAvLyBTdHJpZGU6IHNwZWNpZmllZCBhcyBpbnRlZ2Vy
IChpKSBhbmQgc2V0IHRvIHNwZWNpZmllZCBzdHJpZGUKKyAgICAgICI6IiwgdGhhdC0+cHdfY29y
ZV90eXBlXy0+cGFyYW1fYnVmZmVycy5zdHJpZGUsICJpIiwgc3RyaWRlLAorICAgICAgLy8gQnVm
ZmVyczogc3BlY2lmaWVzIGhvdyBtYW55IGJ1ZmZlcnMgd2Ugd2FudCB0byBkZWFsIHdpdGgsIHNl
dCBhcworICAgICAgLy8gaW50ZWdlciAoaSkgd2hlcmUgcHJlZmVycmVkIG51bWJlciBpcyA4LCB0
aGVuIGFsbG93ZWQgbnVtYmVyIGlzIGRlZmluZWQKKyAgICAgIC8vIGFzIHJhbmdlIChyKSBmcm9t
IG1pbiBhbmQgbWF4IHZhbHVlcyBhbmQgaXQgaXMgdW5kZWNpZGVkICh1KSB0byBhbGxvdworICAg
ICAgLy8gbmVnb3RpYXRpb24KKyAgICAgICI6IiwgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW1f
YnVmZmVycy5idWZmZXJzLCAiaXJ1IiwgOCwKKyAgICAgIFNQQV9QT0RfUFJPUF9NSU5fTUFYKDEs
IDMyKSwKKyAgICAgIC8vIEFsaWduOiBtZW1vcnkgYWxpZ25tZW50IG9mIHRoZSBidWZmZXIsIHNl
dCBhcyBpbnRlZ2VyIChpKSB0byBzcGVjaWZpZWQKKyAgICAgIC8vIHZhbHVlCisgICAgICAiOiIs
IHRoYXQtPnB3X2NvcmVfdHlwZV8tPnBhcmFtX2J1ZmZlcnMuYWxpZ24sICJpIiwgMTYpKTsKKyAg
cGFyYW1zWzFdID0gcmVpbnRlcnByZXRfY2FzdDxzcGFfcG9kKj4oc3BhX3BvZF9idWlsZGVyX29i
amVjdCgKKyAgICAgICZidWlsZGVyLAorICAgICAgLy8gaWQgdG8gZW51bWVyYXRlIHN1cHBvcnRl
ZCBtZXRhZGF0YQorICAgICAgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW0uaWRNZXRhLCB0aGF0
LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9tZXRhLk1ldGEsCisgICAgICAvLyBUeXBlOiBzcGVjaWZp
ZWQgYXMgaWQgb3IgZW51bSAoSSkKKyAgICAgICI6IiwgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFy
YW1fbWV0YS50eXBlLCAiSSIsCisgICAgICB0aGF0LT5wd19jb3JlX3R5cGVfLT5tZXRhLkhlYWRl
ciwKKyAgICAgIC8vIFNpemU6IHNpemUgb2YgdGhlIG1ldGFkYXRhLCBzcGVjaWZpZWQgYXMgaW50
ZWdlciAoaSkKKyAgICAgICI6IiwgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW1fbWV0YS5zaXpl
LCAiaSIsCisgICAgICBzaXplb2Yoc3RydWN0IHNwYV9tZXRhX2hlYWRlcikpKTsKKworICBwd19z
dHJlYW1fZmluaXNoX2Zvcm1hdCh0aGF0LT5wd19zdHJlYW1fLCAvKnJlcz0qLzAsIHBhcmFtcywg
LypuX3BhcmFtcz0qLzIpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdp
cmU6Ok9uU3RyZWFtUHJvY2Vzcyh2b2lkKiBkYXRhKSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJl
KiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPihkYXRhKTsKKyAgUlRD
X0RDSEVDSyh0aGF0KTsKKworICBwd19idWZmZXIqIGJ1ZiA9IG51bGxwdHI7CisKKyAgaWYgKCEo
YnVmID0gcHdfc3RyZWFtX2RlcXVldWVfYnVmZmVyKHRoYXQtPnB3X3N0cmVhbV8pKSkgeworICAg
IHJldHVybjsKKyAgfQorCisgIHRoYXQtPkhhbmRsZUJ1ZmZlcihidWYpOworCisgIHB3X3N0cmVh
bV9xdWV1ZV9idWZmZXIodGhhdC0+cHdfc3RyZWFtXywgYnVmKTsKK30KKworQmFzZUNhcHR1cmVy
UGlwZVdpcmU6OkJhc2VDYXB0dXJlclBpcGVXaXJlKENhcHR1cmVTb3VyY2VUeXBlIHNvdXJjZV90
eXBlKQorICAgIDogY2FwdHVyZV9zb3VyY2VfdHlwZV8oc291cmNlX3R5cGUpIHt9CisKK0Jhc2VD
YXB0dXJlclBpcGVXaXJlOjp+QmFzZUNhcHR1cmVyUGlwZVdpcmUoKSB7CisgIGlmIChwd19tYWlu
X2xvb3BfKSB7CisgICAgcHdfdGhyZWFkX2xvb3Bfc3RvcChwd19tYWluX2xvb3BfKTsKKyAgfQor
CisgIGlmIChwd190eXBlXykgeworICAgIGRlbGV0ZSBwd190eXBlXzsKKyAgfQorCisgIGlmIChz
cGFfdmlkZW9fZm9ybWF0XykgeworICAgIGRlbGV0ZSBzcGFfdmlkZW9fZm9ybWF0XzsKKyAgfQor
CisgIGlmIChwd19zdHJlYW1fKSB7CisgICAgcHdfc3RyZWFtX2Rlc3Ryb3kocHdfc3RyZWFtXyk7
CisgIH0KKworICBpZiAocHdfcmVtb3RlXykgeworICAgIHB3X3JlbW90ZV9kZXN0cm95KHB3X3Jl
bW90ZV8pOworICB9CisKKyAgaWYgKHB3X2NvcmVfKSB7CisgICAgcHdfY29yZV9kZXN0cm95KHB3
X2NvcmVfKTsKKyAgfQorCisgIGlmIChwd19tYWluX2xvb3BfKSB7CisgICAgcHdfdGhyZWFkX2xv
b3BfZGVzdHJveShwd19tYWluX2xvb3BfKTsKKyAgfQorCisgIGlmIChwd19sb29wXykgeworICAg
IHB3X2xvb3BfZGVzdHJveShwd19sb29wXyk7CisgIH0KKworICBpZiAoY3VycmVudF9mcmFtZV8p
IHsKKyAgICBmcmVlKGN1cnJlbnRfZnJhbWVfKTsKKyAgfQorCisgIGlmIChzdGFydF9yZXF1ZXN0
X3NpZ25hbF9pZF8pIHsKKyAgICBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfdW5zdWJzY3JpYmUo
Y29ubmVjdGlvbl8sIHN0YXJ0X3JlcXVlc3Rfc2lnbmFsX2lkXyk7CisgIH0KKyAgaWYgKHNvdXJj
ZXNfcmVxdWVzdF9zaWduYWxfaWRfKSB7CisgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3Vu
c3Vic2NyaWJlKGNvbm5lY3Rpb25fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb3VyY2VzX3JlcXVlc3Rfc2lnbmFsX2lkXyk7CisgIH0KKyAgaWYgKHNlc3Npb25f
cmVxdWVzdF9zaWduYWxfaWRfKSB7CisgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3Vuc3Vi
c2NyaWJlKGNvbm5lY3Rpb25fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXNzaW9uX3JlcXVlc3Rfc2lnbmFsX2lkXyk7CisgIH0KKworICBpZiAoc2Vzc2lvbl9o
YW5kbGVfKSB7CisgICAgR0RCdXNNZXNzYWdlKiBtZXNzYWdlID0gZ19kYnVzX21lc3NhZ2VfbmV3
X21ldGhvZF9jYWxsKAorICAgICAgICBrRGVza3RvcEJ1c05hbWUsIHNlc3Npb25faGFuZGxlXywg
a1Nlc3Npb25JbnRlcmZhY2VOYW1lLCAiQ2xvc2UiKTsKKyAgICBpZiAobWVzc2FnZSkgeworICAg
ICAgR0Vycm9yKiBlcnJvciA9IG51bGxwdHI7CisgICAgICBnX2RidXNfY29ubmVjdGlvbl9zZW5k
X21lc3NhZ2UoY29ubmVjdGlvbl8sIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR19EQlVTX1NFTkRfTUVTU0FHRV9GTEFHU19OT05FLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qb3V0X3NlcmlhbD0qL251bGxwdHIsICZlcnJvcik7
CisgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxl
ZCB0byBjbG9zZSB0aGUgc2Vzc2lvbjogIiA8PCBlcnJvci0+bWVzc2FnZTsKKyAgICAgICAgZ19l
cnJvcl9mcmVlKGVycm9yKTsKKyAgICAgIH0KKyAgICAgIGdfb2JqZWN0X3VucmVmKG1lc3NhZ2Up
OworICAgIH0KKyAgfQorCisgIGdfZnJlZShzdGFydF9oYW5kbGVfKTsKKyAgZ19mcmVlKHNvdXJj
ZXNfaGFuZGxlXyk7CisgIGdfZnJlZShzZXNzaW9uX2hhbmRsZV8pOworICBnX2ZyZWUocG9ydGFs
X2hhbmRsZV8pOworCisgIGlmIChwcm94eV8pIHsKKyAgICBnX2NsZWFyX29iamVjdCgmcHJveHlf
KTsKKyAgfQorfQorCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpJbml0UG9ydGFsKCkgewor
ICBnX2RidXNfcHJveHlfbmV3X2Zvcl9idXMoCisgICAgICBHX0JVU19UWVBFX1NFU1NJT04sIEdf
REJVU19QUk9YWV9GTEFHU19OT05FLCAvKmluZm89Ki9udWxscHRyLAorICAgICAga0Rlc2t0b3BC
dXNOYW1lLCBrRGVza3RvcE9iamVjdFBhdGgsIGtTY3JlZW5DYXN0SW50ZXJmYWNlTmFtZSwKKyAg
ICAgIC8qY2FuY2VsbGFibGU9Ki9udWxscHRyLAorICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5
bmNSZWFkeUNhbGxiYWNrPihPblByb3h5UmVxdWVzdGVkKSwgdGhpcyk7Cit9CisKK3ZvaWQgQmFz
ZUNhcHR1cmVyUGlwZVdpcmU6OkluaXRQaXBlV2lyZSgpIHsKKyAgcHdfaW5pdCgvKmFyZ2M9Ki9u
dWxscHRyLCAvKmFyZ2M9Ki9udWxscHRyKTsKKworICBwd19sb29wXyA9IHB3X2xvb3BfbmV3KC8q
cHJvcGVydGllcz0qL251bGxwdHIpOworICBwd19tYWluX2xvb3BfID0gcHdfdGhyZWFkX2xvb3Bf
bmV3KHB3X2xvb3BfLCAicGlwZXdpcmUtbWFpbi1sb29wIik7CisKKyAgcHdfY29yZV8gPSBwd19j
b3JlX25ldyhwd19sb29wXywgLypwcm9wZXJ0aWVzPSovbnVsbHB0cik7CisgIHB3X2NvcmVfdHlw
ZV8gPSBwd19jb3JlX2dldF90eXBlKHB3X2NvcmVfKTsKKyAgcHdfcmVtb3RlXyA9IHB3X3JlbW90
ZV9uZXcocHdfY29yZV8sIG51bGxwdHIsIC8qdXNlcl9kYXRhX3NpemU9Ki8wKTsKKworICBJbml0
UGlwZVdpcmVUeXBlcygpOworCisgIC8vIEluaXRpYWxpemUgZXZlbnQgaGFuZGxlcnMsIHJlbW90
ZSBlbmQgYW5kIHN0cmVhbS1yZWxhdGVkLgorICBwd19yZW1vdGVfZXZlbnRzXy52ZXJzaW9uID0g
UFdfVkVSU0lPTl9SRU1PVEVfRVZFTlRTOworICBwd19yZW1vdGVfZXZlbnRzXy5zdGF0ZV9jaGFu
Z2VkID0gJk9uU3RhdGVDaGFuZ2VkOworCisgIHB3X3N0cmVhbV9ldmVudHNfLnZlcnNpb24gPSBQ
V19WRVJTSU9OX1NUUkVBTV9FVkVOVFM7CisgIHB3X3N0cmVhbV9ldmVudHNfLnN0YXRlX2NoYW5n
ZWQgPSAmT25TdHJlYW1TdGF0ZUNoYW5nZWQ7CisgIHB3X3N0cmVhbV9ldmVudHNfLmZvcm1hdF9j
aGFuZ2VkID0gJk9uU3RyZWFtRm9ybWF0Q2hhbmdlZDsKKyAgcHdfc3RyZWFtX2V2ZW50c18ucHJv
Y2VzcyA9ICZPblN0cmVhbVByb2Nlc3M7CisKKyAgcHdfcmVtb3RlX2FkZF9saXN0ZW5lcihwd19y
ZW1vdGVfLCAmc3BhX3JlbW90ZV9saXN0ZW5lcl8sICZwd19yZW1vdGVfZXZlbnRzXywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzKTsKKyAgcHdfcmVtb3RlX2Nvbm5lY3RfZmQocHdfcmVt
b3RlXywgcHdfZmRfKTsKKworICBpZiAocHdfdGhyZWFkX2xvb3Bfc3RhcnQocHdfbWFpbl9sb29w
XykgPCAwKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBzdGFydCBtYWlu
IFBpcGVXaXJlIGxvb3AiOworICAgIHBvcnRhbF9pbml0X2ZhaWxlZF8gPSB0cnVlOworICB9Cit9
CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkluaXRQaXBlV2lyZVR5cGVzKCkgeworICBz
cGFfdHlwZV9tYXAqIG1hcCA9IHB3X2NvcmVfdHlwZV8tPm1hcDsKKyAgcHdfdHlwZV8gPSBuZXcg
UGlwZVdpcmVUeXBlKCk7CisKKyAgc3BhX3R5cGVfbWVkaWFfdHlwZV9tYXAobWFwLCAmcHdfdHlw
ZV8tPm1lZGlhX3R5cGUpOworICBzcGFfdHlwZV9tZWRpYV9zdWJ0eXBlX21hcChtYXAsICZwd190
eXBlXy0+bWVkaWFfc3VidHlwZSk7CisgIHNwYV90eXBlX2Zvcm1hdF92aWRlb19tYXAobWFwLCAm
cHdfdHlwZV8tPmZvcm1hdF92aWRlbyk7CisgIHNwYV90eXBlX3ZpZGVvX2Zvcm1hdF9tYXAobWFw
LCAmcHdfdHlwZV8tPnZpZGVvX2Zvcm1hdCk7Cit9CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdp
cmU6OkNyZWF0ZVJlY2VpdmluZ1N0cmVhbSgpIHsKKyAgc3BhX3JlY3RhbmdsZSBwd01pblNjcmVl
bkJvdW5kcyA9IHNwYV9yZWN0YW5nbGV7MSwgMX07CisgIHNwYV9yZWN0YW5nbGUgcHdTY3JlZW5C
b3VuZHMgPQorICAgICAgc3BhX3JlY3RhbmdsZXtzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGVza3Rv
cF9zaXplXy53aWR0aCgpKSwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGRlc2t0b3Bfc2l6ZV8uaGVpZ2h0KCkpfTsKKworICBzcGFfZnJhY3Rpb24gcHdGcmFtZVJh
dGVNaW4gPSBzcGFfZnJhY3Rpb257MCwgMX07CisgIHNwYV9mcmFjdGlvbiBwd0ZyYW1lUmF0ZU1h
eCA9IHNwYV9mcmFjdGlvbns2MCwgMX07CisKKyAgcHdfcHJvcGVydGllcyogcmV1c2VQcm9wcyA9
IHB3X3Byb3BlcnRpZXNfbmV3KCJwaXBld2lyZS5jbGllbnQucmV1c2UiLCAiMSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmVuZCBvZiB2YXJhcmdz
Ki8gbnVsbHB0cik7CisgIHB3X3N0cmVhbV8gPSBwd19zdHJlYW1fbmV3KHB3X3JlbW90ZV8sICJ3
ZWJydGMtY29uc3VtZS1zdHJlYW0iLCByZXVzZVByb3BzKTsKKworICB1aW50OF90IGJ1ZmZlclsx
MDI0XSA9IHt9OworICBjb25zdCBzcGFfcG9kKiBwYXJhbXNbMV07CisgIHNwYV9wb2RfYnVpbGRl
ciBidWlsZGVyID0gc3BhX3BvZF9idWlsZGVye2J1ZmZlciwgc2l6ZW9mKGJ1ZmZlcil9OworICBw
YXJhbXNbMF0gPSByZWludGVycHJldF9jYXN0PHNwYV9wb2QqPihzcGFfcG9kX2J1aWxkZXJfb2Jq
ZWN0KAorICAgICAgJmJ1aWxkZXIsCisgICAgICAvLyBpZCB0byBlbnVtZXJhdGUgZm9ybWF0cwor
ICAgICAgcHdfY29yZV90eXBlXy0+cGFyYW0uaWRFbnVtRm9ybWF0LCBwd19jb3JlX3R5cGVfLT5z
cGFfZm9ybWF0LCAiSSIsCisgICAgICBwd190eXBlXy0+bWVkaWFfdHlwZS52aWRlbywgIkkiLCBw
d190eXBlXy0+bWVkaWFfc3VidHlwZS5yYXcsCisgICAgICAvLyBWaWRlbyBmb3JtYXQ6IHNwZWNp
ZmllZCBhcyBpZCBvciBlbnVtIChJKSwgcHJlZmVycmVkIGZvcm1hdCBpcyBCR1J4LAorICAgICAg
Ly8gdGhlbiBhbGxvd2VkIGZvcm1hdHMgYXJlIGVudW1lcmF0ZWQgKGUpIGFuZCB0aGUgZm9ybWF0
IGlzIHVuZGVjaWRlZCAodSkKKyAgICAgIC8vIHRvIGFsbG93IG5lZ290aWF0aW9uCisgICAgICAi
OiIsIHB3X3R5cGVfLT5mb3JtYXRfdmlkZW8uZm9ybWF0LCAiSWV1IiwgcHdfdHlwZV8tPnZpZGVv
X2Zvcm1hdC5CR1J4LAorICAgICAgU1BBX1BPRF9QUk9QX0VOVU0oMiwgcHdfdHlwZV8tPnZpZGVv
X2Zvcm1hdC5SR0J4LAorICAgICAgICAgICAgICAgICAgICAgICAgcHdfdHlwZV8tPnZpZGVvX2Zv
cm1hdC5CR1J4KSwKKyAgICAgIC8vIFZpZGVvIHNpemU6IHNwZWNpZmllZCBhcyByZWN0YW5nbGUg
KFIpLCBwcmVmZXJyZWQgc2l6ZSBpcyBzcGVjaWZpZWQgYXMKKyAgICAgIC8vIGZpcnN0IHBhcmFt
ZXRlciwgdGhlbiBhbGxvd2VkIHNpemUgaXMgZGVmaW5lZCBhcyByYW5nZSAocikgZnJvbSBtaW4g
YW5kCisgICAgICAvLyBtYXggdmFsdWVzIGFuZCB0aGUgZm9ybWF0IGlzIHVuZGVjaWRlZCAodSkg
dG8gYWxsb3cgbmVnb3RpYXRpb24KKyAgICAgICI6IiwgcHdfdHlwZV8tPmZvcm1hdF92aWRlby5z
aXplLCAiUnJ1IiwgJnB3U2NyZWVuQm91bmRzLCAyLAorICAgICAgJnB3TWluU2NyZWVuQm91bmRz
LCAmcHdTY3JlZW5Cb3VuZHMsCisgICAgICAvLyBGcmFtZSByYXRlOiBzcGVjaWZpZWQgYXMgZnJh
Y3Rpb24gKEYpIGFuZCBzZXQgdG8gbWluaW11bSBmcmFtZSByYXRlCisgICAgICAvLyB2YWx1ZQor
ICAgICAgIjoiLCBwd190eXBlXy0+Zm9ybWF0X3ZpZGVvLmZyYW1lcmF0ZSwgIkYiLCAmcHdGcmFt
ZVJhdGVNaW4sCisgICAgICAvLyBNYXggZnJhbWUgcmF0ZTogc3BlY2lmaWVkIGFzIGZyYWN0aW9u
IChGKSwgcHJlZmVycmVkIGZyYW1lIHJhdGUgaXMgc2V0CisgICAgICAvLyB0byBtYXhpbXVtIHZh
bHVlLCB0aGVuIGFsbG93ZWQgZnJhbWUgcmF0ZSBpcyBkZWZpbmVkIGFzIHJhbmdlIChyKSBmcm9t
CisgICAgICAvLyBtaW4gYW5kIG1heCB2YWx1ZXMgYW5kIGl0IGlzIHVuZGVjaWRlZCAodSkgdG8g
YWxsb3cgbmVnb3RpYXRpb24KKyAgICAgICI6IiwgcHdfdHlwZV8tPmZvcm1hdF92aWRlby5tYXhf
ZnJhbWVyYXRlLCAiRnJ1IiwgJnB3RnJhbWVSYXRlTWF4LCAyLAorICAgICAgJnB3RnJhbWVSYXRl
TWluLCAmcHdGcmFtZVJhdGVNYXgpKTsKKworICBwd19zdHJlYW1fYWRkX2xpc3RlbmVyKHB3X3N0
cmVhbV8sICZzcGFfc3RyZWFtX2xpc3RlbmVyXywgJnB3X3N0cmVhbV9ldmVudHNfLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMpOworICBwd19zdHJlYW1fZmxhZ3MgZmxhZ3MgPSBzdGF0
aWNfY2FzdDxwd19zdHJlYW1fZmxhZ3M+KAorICAgICAgUFdfU1RSRUFNX0ZMQUdfQVVUT0NPTk5F
Q1QgfCBQV19TVFJFQU1fRkxBR19JTkFDVElWRSB8CisgICAgICBQV19TVFJFQU1fRkxBR19NQVBf
QlVGRkVSUyk7CisgIGlmIChwd19zdHJlYW1fY29ubmVjdChwd19zdHJlYW1fLCBQV19ESVJFQ1RJ
T05fSU5QVVQsIC8qcG9ydF9wYXRoPSovbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdzLCBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAvKm5fcGFyYW1zPSovMSkg
IT0gMCkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDb3VsZCBub3QgY29ubmVjdCByZWNl
aXZpbmcgc3RyZWFtLiI7CisgICAgcG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0
dXJuOworICB9Cit9CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkhhbmRsZUJ1ZmZlcihw
d19idWZmZXIqIGJ1ZmZlcikgeworICBzcGFfYnVmZmVyKiBzcGFCdWZmZXIgPSBidWZmZXItPmJ1
ZmZlcjsKKyAgdm9pZCogc3JjID0gbnVsbHB0cjsKKworICBpZiAoIShzcmMgPSBzcGFCdWZmZXIt
PmRhdGFzWzBdLmRhdGEpKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgdWludDMyX3QgbWF4U2l6
ZSA9IHNwYUJ1ZmZlci0+ZGF0YXNbMF0ubWF4c2l6ZTsKKyAgaW50MzJfdCBzcmNTdHJpZGUgPSBz
cGFCdWZmZXItPmRhdGFzWzBdLmNodW5rLT5zdHJpZGU7CisgIGlmIChzcmNTdHJpZGUgIT0gKGRl
c2t0b3Bfc2l6ZV8ud2lkdGgoKSAqIGtCeXRlc1BlclBpeGVsKSkgeworICAgIFJUQ19MT0coTFNf
RVJST1IpIDw8ICJHb3QgYnVmZmVyIHdpdGggc3RyaWRlIGRpZmZlcmVudCBmcm9tIHNjcmVlbiBz
dHJpZGU6ICIKKyAgICAgICAgICAgICAgICAgICAgICA8PCBzcmNTdHJpZGUKKyAgICAgICAgICAg
ICAgICAgICAgICA8PCAiICE9ICIgPDwgKGRlc2t0b3Bfc2l6ZV8ud2lkdGgoKSAqIGtCeXRlc1Bl
clBpeGVsKTsKKyAgICBwb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47Cisg
IH0KKworICBpZiAoIWN1cnJlbnRfZnJhbWVfKSB7CisgICAgY3VycmVudF9mcmFtZV8gPSBzdGF0
aWNfY2FzdDx1aW50OF90Kj4obWFsbG9jKG1heFNpemUpKTsKKyAgfQorICBSVENfRENIRUNLKGN1
cnJlbnRfZnJhbWVfICE9IG51bGxwdHIpOworCisgIC8vIElmIGJvdGggc2lkZXMgZGVjaWRlZCB0
byBnbyB3aXRoIHRoZSBSR0J4IGZvcm1hdCB3ZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8KKyAgLy8g
QkdSeCB0byBtYXRjaCBjb2xvciBmb3JtYXQgZXhwZWN0ZWQgYnkgV2ViUlRDLgorICBpZiAoc3Bh
X3ZpZGVvX2Zvcm1hdF8tPmZvcm1hdCA9PSBwd190eXBlXy0+dmlkZW9fZm9ybWF0LlJHQngpIHsK
KyAgICB1aW50OF90KiB0ZW1wRnJhbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWFsbG9jKG1h
eFNpemUpKTsKKyAgICBzdGQ6Om1lbWNweSh0ZW1wRnJhbWUsIHNyYywgbWF4U2l6ZSk7CisgICAg
Q29udmVydFJHQnhUb0JHUngodGVtcEZyYW1lLCBtYXhTaXplKTsKKyAgICBzdGQ6Om1lbWNweShj
dXJyZW50X2ZyYW1lXywgdGVtcEZyYW1lLCBtYXhTaXplKTsKKyAgICBmcmVlKHRlbXBGcmFtZSk7
CisgIH0gZWxzZSB7CisgICAgc3RkOjptZW1jcHkoY3VycmVudF9mcmFtZV8sIHNyYywgbWF4U2l6
ZSk7CisgIH0KK30KKwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6Q29udmVydFJHQnhUb0JH
UngodWludDhfdCogZnJhbWUsIHVpbnQzMl90IHNpemUpIHsKKyAgLy8gQ2hhbmdlIGNvbG9yIGZv
cm1hdCBmb3IgS0RFIEtXaW4gd2hpY2ggdXNlcyBSR0J4IGFuZCBub3QgQkdSeAorICBmb3IgKHVp
bnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgaSArPSA0KSB7CisgICAgdWludDhfdCB0ZW1wUiA9IGZy
YW1lW2ldOworICAgIHVpbnQ4X3QgdGVtcEIgPSBmcmFtZVtpICsgMl07CisgICAgZnJhbWVbaV0g
PSB0ZW1wQjsKKyAgICBmcmFtZVtpICsgMl0gPSB0ZW1wUjsKKyAgfQorfQorCitndWludCBCYXNl
Q2FwdHVyZXJQaXBlV2lyZTo6U2V0dXBSZXF1ZXN0UmVzcG9uc2VTaWduYWwoCisgICAgY29uc3Qg
Z2NoYXIqIG9iamVjdF9wYXRoLAorICAgIEdEQnVzU2lnbmFsQ2FsbGJhY2sgY2FsbGJhY2spIHsK
KyAgcmV0dXJuIGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF9zdWJzY3JpYmUoCisgICAgICBjb25u
ZWN0aW9uXywga0Rlc2t0b3BCdXNOYW1lLCBrUmVxdWVzdEludGVyZmFjZU5hbWUsICJSZXNwb25z
ZSIsCisgICAgICBvYmplY3RfcGF0aCwgLyphcmcwPSovbnVsbHB0ciwgR19EQlVTX1NJR05BTF9G
TEFHU19OT19NQVRDSF9SVUxFLAorICAgICAgY2FsbGJhY2ssIHRoaXMsIC8qdXNlcl9kYXRhX2Zy
ZWVfZnVuYz0qL251bGxwdHIpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFzZUNhcHR1cmVyUGlw
ZVdpcmU6Ok9uUHJveHlSZXF1ZXN0ZWQoR09iamVjdCogLypvYmplY3QqLywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJf
ZGF0YSkgeworICBCYXNlQ2FwdHVyZXJQaXBlV2lyZSogdGhhdCA9IHN0YXRpY19jYXN0PEJhc2VD
YXB0dXJlclBpcGVXaXJlKj4odXNlcl9kYXRhKTsKKyAgUlRDX0RDSEVDSyh0aGF0KTsKKworICBH
RXJyb3IqIGVycm9yID0gbnVsbHB0cjsKKyAgdGhhdC0+cHJveHlfID0gZ19kYnVzX3Byb3h5X25l
d19maW5pc2gocmVzdWx0LCAmZXJyb3IpOworICBpZiAoIXRoYXQtPnByb3h5XykgeworICAgIFJU
Q19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGEgcHJveHkgZm9yIHRoZSBzY3Jl
ZW4gY2FzdCBwb3J0YWw6ICIKKyAgICAgICAgICAgICAgICAgICAgICA8PCBlcnJvci0+bWVzc2Fn
ZTsKKyAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOworICAgIHRoYXQtPnBvcnRhbF9pbml0X2ZhaWxl
ZF8gPSB0cnVlOworICAgIHJldHVybjsKKyAgfQorICB0aGF0LT5jb25uZWN0aW9uXyA9IGdfZGJ1
c19wcm94eV9nZXRfY29ubmVjdGlvbih0aGF0LT5wcm94eV8pOworCisgIFJUQ19MT0coTFNfSU5G
TykgPDwgIkNyZWF0ZWQgcHJveHkgZm9yIHRoZSBzY3JlZW4gY2FzdCBwb3J0YWwuIjsKKyAgdGhh
dC0+U2Vzc2lvblJlcXVlc3QoKTsKK30KKworLy8gc3RhdGljCitnY2hhciogQmFzZUNhcHR1cmVy
UGlwZVdpcmU6OlByZXBhcmVTaWduYWxIYW5kbGUoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyKiB0b2tlbikgeworICBnY2hhciogc2VuZGVyID0gZ19zdHJkdXAoZ19kYnVzX2Nvbm5l
Y3Rpb25fZ2V0X3VuaXF1ZV9uYW1lKGNvbm5lY3Rpb24pICsgMSk7CisgIGZvciAoaW50IGkgPSAw
OyBzZW5kZXJbaV07IGkrKykgeworICAgIGlmIChzZW5kZXJbaV0gPT0gJy4nKSB7CisgICAgICBz
ZW5kZXJbaV0gPSAnXyc7CisgICAgfQorICB9CisKKyAgZ2NoYXIqIGhhbmRsZSA9IGdfc3RyY29u
Y2F0KGtEZXNrdG9wUmVxdWVzdE9iamVjdFBhdGgsICIvIiwgc2VuZGVyLCAiLyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiwgLyplbmQgb2YgdmFyYXJncyovIG51bGxwdHIp
OworICBnX2ZyZWUoc2VuZGVyKTsKKworICByZXR1cm4gaGFuZGxlOworfQorCit2b2lkIEJhc2VD
YXB0dXJlclBpcGVXaXJlOjpTZXNzaW9uUmVxdWVzdCgpIHsKKyAgR1ZhcmlhbnRCdWlsZGVyIGJ1
aWxkZXI7CisgIGdjaGFyKiB2YXJpYW50X3N0cmluZzsKKworICBnX3ZhcmlhbnRfYnVpbGRlcl9p
bml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgdmFyaWFudF9zdHJpbmcg
PQorICAgICAgZ19zdHJkdXBfcHJpbnRmKCJ3ZWJydGNfc2Vzc2lvbiVkIiwgZ19yYW5kb21faW50
X3JhbmdlKDAsIEdfTUFYSU5UKSk7CisgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwg
Intzdn0iLCAic2Vzc2lvbl9oYW5kbGVfdG9rZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
Z192YXJpYW50X25ld19zdHJpbmcodmFyaWFudF9zdHJpbmcpKTsKKyAgZ19mcmVlKHZhcmlhbnRf
c3RyaW5nKTsKKyAgdmFyaWFudF9zdHJpbmcgPSBnX3N0cmR1cF9wcmludGYoIndlYnJ0YyVkIiwg
Z19yYW5kb21faW50X3JhbmdlKDAsIEdfTUFYSU5UKSk7CisgIGdfdmFyaWFudF9idWlsZGVyX2Fk
ZCgmYnVpbGRlciwgIntzdn0iLCAiaGFuZGxlX3Rva2VuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdfdmFyaWFudF9uZXdfc3RyaW5nKHZhcmlhbnRfc3RyaW5nKSk7CisKKyAgcG9ydGFsX2hh
bmRsZV8gPSBQcmVwYXJlU2lnbmFsSGFuZGxlKGNvbm5lY3Rpb25fLCB2YXJpYW50X3N0cmluZyk7
CisgIHNlc3Npb25fcmVxdWVzdF9zaWduYWxfaWRfID0gU2V0dXBSZXF1ZXN0UmVzcG9uc2VTaWdu
YWwoCisgICAgICBwb3J0YWxfaGFuZGxlXywgT25TZXNzaW9uUmVxdWVzdFJlc3BvbnNlU2lnbmFs
KTsKKyAgZ19mcmVlKHZhcmlhbnRfc3RyaW5nKTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJT
Y3JlZW4gY2FzdCBzZXNzaW9uIHJlcXVlc3RlZC4iOworICBnX2RidXNfcHJveHlfY2FsbCgKKyAg
ICAgIHByb3h5XywgIkNyZWF0ZVNlc3Npb24iLCBnX3ZhcmlhbnRfbmV3KCIoYXtzdn0pIiwgJmJ1
aWxkZXIpLAorICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwgLyp0aW1lb3V0PSovLTEsIC8q
Y2FuY2VsbGFibGU9Ki9udWxscHRyLAorICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFk
eUNhbGxiYWNrPihPblNlc3Npb25SZXF1ZXN0ZWQpLCB0aGlzKTsKK30KKworLy8gc3RhdGljCit2
b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblNlc3Npb25SZXF1ZXN0ZWQoR0RCdXNDb25uZWN0
aW9uKiBjb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdBc3luY1Jlc3VsdCogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSkgeworICBCYXNlQ2FwdHVyZXJQ
aXBlV2lyZSogdGhhdCA9IHN0YXRpY19jYXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4odXNlcl9k
YXRhKTsKKyAgUlRDX0RDSEVDSyh0aGF0KTsKKworICBHRXJyb3IqIGVycm9yID0gbnVsbHB0cjsK
KyAgR1ZhcmlhbnQqIHZhcmlhbnQgPSBnX2RidXNfcHJveHlfY2FsbF9maW5pc2godGhhdC0+cHJv
eHlfLCByZXN1bHQsICZlcnJvcik7CisgIGlmICghdmFyaWFudCkgeworICAgIFJUQ19MT0coTFNf
RVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGEgc2NyZWVuIGNhc3Qgc2Vzc2lvbjogIgorICAg
ICAgICAgICAgICAgICAgICAgIDw8IGVycm9yLT5tZXNzYWdlOworICAgIGdfZXJyb3JfZnJlZShl
cnJvcik7CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJu
OworICB9CisgIFJUQ19MT0coTFNfSU5GTykgPDwgIkluaXRpYWxpemluZyB0aGUgc2NyZWVuIGNh
c3Qgc2Vzc2lvbi4iOworCisgIGdjaGFyKiBoYW5kbGUgPSBudWxscHRyOworICBnX3ZhcmlhbnRf
Z2V0X2NoaWxkKHZhcmlhbnQsIDAsICJvIiwgJmhhbmRsZSk7CisgIGdfdmFyaWFudF91bnJlZih2
YXJpYW50KTsKKyAgaWYgKCFoYW5kbGUpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFp
bGVkIHRvIGluaXRpYWxpemUgdGhlIHNjcmVlbiBjYXN0IHNlc3Npb24uIjsKKyAgICBpZiAodGhh
dC0+c2Vzc2lvbl9yZXF1ZXN0X3NpZ25hbF9pZF8pIHsKKyAgICAgIGdfZGJ1c19jb25uZWN0aW9u
X3NpZ25hbF91bnN1YnNjcmliZShjb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoYXQtPnNlc3Npb25fcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAg
ICAgIHRoYXQtPnNlc3Npb25fcmVxdWVzdF9zaWduYWxfaWRfID0gMDsKKyAgICB9CisgICAgdGhh
dC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9CisKKyAgZ19m
cmVlKGhhbmRsZSk7CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU3Vic2NyaWJpbmcgdG8gdGhl
IHNjcmVlbiBjYXN0IHNlc3Npb24uIjsKK30KKworLy8gc3RhdGljCit2b2lkIEJhc2VDYXB0dXJl
clBpcGVXaXJlOjpPblNlc3Npb25SZXF1ZXN0UmVzcG9uc2VTaWduYWwoCisgICAgR0RCdXNDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLAorICAgIGNvbnN0IGdjaGFyKiBzZW5kZXJfbmFtZSwKKyAgICBj
b25zdCBnY2hhciogb2JqZWN0X3BhdGgsCisgICAgY29uc3QgZ2NoYXIqIGludGVyZmFjZV9uYW1l
LAorICAgIGNvbnN0IGdjaGFyKiBzaWduYWxfbmFtZSwKKyAgICBHVmFyaWFudCogcGFyYW1ldGVy
cywKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpIHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUqIHRo
YXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KHVzZXJfZGF0YSk7CisgIFJU
Q19EQ0hFQ0sodGhhdCk7CisKKyAgUlRDX0xPRyhMU19JTkZPKQorICAgICAgPDwgIlJlY2VpdmVk
IHJlc3BvbnNlIGZvciB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbiBzdWJzY3JpcHRpb24uIjsKKwor
ICBndWludDMyIHBvcnRhbF9yZXNwb25zZTsKKyAgR1ZhcmlhbnQqIHJlc3BvbnNlX2RhdGE7Cisg
IGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIih1QGF7c3Z9KSIsICZwb3J0YWxfcmVzcG9uc2Us
ICZyZXNwb25zZV9kYXRhKTsKKyAgZ192YXJpYW50X2xvb2t1cChyZXNwb25zZV9kYXRhLCAic2Vz
c2lvbl9oYW5kbGUiLCAicyIsCisgICAgICAgICAgICAgICAgICAgJnRoYXQtPnNlc3Npb25faGFu
ZGxlXyk7CisgIGdfdmFyaWFudF91bnJlZihyZXNwb25zZV9kYXRhKTsKKworICBpZiAoIXRoYXQt
PnNlc3Npb25faGFuZGxlXyB8fCBwb3J0YWxfcmVzcG9uc2UpIHsKKyAgICBSVENfTE9HKExTX0VS
Uk9SKQorICAgICAgICA8PCAiRmFpbGVkIHRvIHJlcXVlc3QgdGhlIHNjcmVlbiBjYXN0IHNlc3Np
b24gc3Vic2NyaXB0aW9uLiI7CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7
CisgICAgcmV0dXJuOworICB9CisKKyAgdGhhdC0+U291cmNlc1JlcXVlc3QoKTsKK30KKwordm9p
ZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6U291cmNlc1JlcXVlc3QoKSB7CisgIEdWYXJpYW50QnVp
bGRlciBidWlsZGVyOworICBnY2hhciogdmFyaWFudF9zdHJpbmc7CisKKyAgZ192YXJpYW50X2J1
aWxkZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CisgIC8vIFdlIHdh
bnQgdG8gcmVjb3JkIG1vbml0b3IgY29udGVudC4KKyAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZi
dWlsZGVyLCAie3N2fSIsICJ0eXBlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBnX3Zhcmlh
bnRfbmV3X3VpbnQzMihjYXB0dXJlX3NvdXJjZV90eXBlXykpOworICAvLyBXZSBkb24ndCB3YW50
IHRvIGFsbG93IHNlbGVjdGlvbiBvZiBtdWx0aXBsZSBzb3VyY2VzLgorICBnX3ZhcmlhbnRfYnVp
bGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgIm11bHRpcGxlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdfdmFyaWFudF9uZXdfYm9vbGVhbihmYWxzZSkpOworICB2YXJpYW50X3N0cmluZyA9
IGdfc3RyZHVwX3ByaW50Zigid2VicnRjJWQiLCBnX3JhbmRvbV9pbnRfcmFuZ2UoMCwgR19NQVhJ
TlQpKTsKKyAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJoYW5kbGVf
dG9rZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ld19zdHJpbmcodmFy
aWFudF9zdHJpbmcpKTsKKworICBzb3VyY2VzX2hhbmRsZV8gPSBQcmVwYXJlU2lnbmFsSGFuZGxl
KGNvbm5lY3Rpb25fLCB2YXJpYW50X3N0cmluZyk7CisgIHNvdXJjZXNfcmVxdWVzdF9zaWduYWxf
aWRfID0gU2V0dXBSZXF1ZXN0UmVzcG9uc2VTaWduYWwoCisgICAgICBzb3VyY2VzX2hhbmRsZV8s
IE9uU291cmNlc1JlcXVlc3RSZXNwb25zZVNpZ25hbCk7CisgIGdfZnJlZSh2YXJpYW50X3N0cmlu
Zyk7CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUmVxdWVzdGluZyBzb3VyY2VzIGZyb20gdGhl
IHNjcmVlbiBjYXN0IHNlc3Npb24uIjsKKyAgZ19kYnVzX3Byb3h5X2NhbGwoCisgICAgICBwcm94
eV8sICJTZWxlY3RTb3VyY2VzIiwKKyAgICAgIGdfdmFyaWFudF9uZXcoIihvYXtzdn0pIiwgc2Vz
c2lvbl9oYW5kbGVfLCAmYnVpbGRlciksCisgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLCAv
KnRpbWVvdXQ9Ki8tMSwgLypjYW5jZWxsYWJsZT0qL251bGxwdHIsCisgICAgICByZWludGVycHJl
dF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KE9uU291cmNlc1JlcXVlc3RlZCksIHRoaXMpOwor
fQorCisvLyBzdGF0aWMKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU291cmNlc1JlcXVl
c3RlZChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKSB7
CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVy
UGlwZVdpcmUqPih1c2VyX2RhdGEpOworICBSVENfRENIRUNLKHRoYXQpOworCisgIEdFcnJvciog
ZXJyb3IgPSBudWxscHRyOworICBHVmFyaWFudCogdmFyaWFudCA9IGdfZGJ1c19wcm94eV9jYWxs
X2ZpbmlzaCh0aGF0LT5wcm94eV8sIHJlc3VsdCwgJmVycm9yKTsKKyAgaWYgKCF2YXJpYW50KSB7
CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byByZXF1ZXN0IHRoZSBzb3VyY2Vz
OiAiIDw8IGVycm9yLT5tZXNzYWdlOworICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAgdGhh
dC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9CisKKyAgUlRD
X0xPRyhMU19JTkZPKSA8PCAiU291cmNlcyByZXF1ZXN0ZWQgZnJvbSB0aGUgc2NyZWVuIGNhc3Qg
c2Vzc2lvbi4iOworCisgIGdjaGFyKiBoYW5kbGUgPSBudWxscHRyOworICBnX3ZhcmlhbnRfZ2V0
X2NoaWxkKHZhcmlhbnQsIDAsICJvIiwgJmhhbmRsZSk7CisgIGdfdmFyaWFudF91bnJlZih2YXJp
YW50KTsKKyAgaWYgKCFoYW5kbGUpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVk
IHRvIGluaXRpYWxpemUgdGhlIHNjcmVlbiBjYXN0IHNlc3Npb24uIjsKKyAgICBpZiAodGhhdC0+
c291cmNlc19yZXF1ZXN0X3NpZ25hbF9pZF8pIHsKKyAgICAgIGdfZGJ1c19jb25uZWN0aW9uX3Np
Z25hbF91bnN1YnNjcmliZShjb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoYXQtPnNvdXJjZXNfcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAgICAg
IHRoYXQtPnNvdXJjZXNfcmVxdWVzdF9zaWduYWxfaWRfID0gMDsKKyAgICB9CisgICAgdGhhdC0+
cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9CisKKyAgZ19mcmVl
KGhhbmRsZSk7CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU3Vic2NyaWJlZCB0byBzb3VyY2Vz
IHNpZ25hbC4iOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9u
U291cmNlc1JlcXVlc3RSZXNwb25zZVNpZ25hbCgKKyAgICBHREJ1c0Nvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sCisgICAgY29uc3QgZ2NoYXIqIHNlbmRlcl9uYW1lLAorICAgIGNvbnN0IGdjaGFyKiBv
YmplY3RfcGF0aCwKKyAgICBjb25zdCBnY2hhciogaW50ZXJmYWNlX25hbWUsCisgICAgY29uc3Qg
Z2NoYXIqIHNpZ25hbF9uYW1lLAorICAgIEdWYXJpYW50KiBwYXJhbWV0ZXJzLAorICAgIGdwb2lu
dGVyIHVzZXJfZGF0YSkgeworICBCYXNlQ2FwdHVyZXJQaXBlV2lyZSogdGhhdCA9IHN0YXRpY19j
YXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4odXNlcl9kYXRhKTsKKyAgUlRDX0RDSEVDSyh0aGF0
KTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJSZWNlaXZlZCBzb3VyY2VzIHNpZ25hbCBmcm9t
IHNlc3Npb24uIjsKKworICBndWludDMyIHBvcnRhbF9yZXNwb25zZTsKKyAgZ192YXJpYW50X2dl
dChwYXJhbWV0ZXJzLCAiKHVAYXtzdn0pIiwgJnBvcnRhbF9yZXNwb25zZSwgbnVsbHB0cik7Cisg
IGlmIChwb3J0YWxfcmVzcG9uc2UpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKQorICAgICAgICA8
PCAiRmFpbGVkIHRvIHNlbGVjdCBzb3VyY2VzIGZvciB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4i
OworICAgIHRoYXQtPnBvcnRhbF9pbml0X2ZhaWxlZF8gPSB0cnVlOworICAgIHJldHVybjsKKyAg
fQorCisgIHRoYXQtPlN0YXJ0UmVxdWVzdCgpOworfQorCit2b2lkIEJhc2VDYXB0dXJlclBpcGVX
aXJlOjpTdGFydFJlcXVlc3QoKSB7CisgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOworICBnY2hh
ciogdmFyaWFudF9zdHJpbmc7CisKKyAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmYnVpbGRlciwg
R19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CisgIHZhcmlhbnRfc3RyaW5nID0gZ19zdHJkdXBfcHJp
bnRmKCJ3ZWJydGMlZCIsIGdfcmFuZG9tX2ludF9yYW5nZSgwLCBHX01BWElOVCkpOworICBnX3Zh
cmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgImhhbmRsZV90b2tlbiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3X3N0cmluZyh2YXJpYW50X3N0cmluZykp
OworCisgIHN0YXJ0X2hhbmRsZV8gPSBQcmVwYXJlU2lnbmFsSGFuZGxlKGNvbm5lY3Rpb25fLCB2
YXJpYW50X3N0cmluZyk7CisgIHN0YXJ0X3JlcXVlc3Rfc2lnbmFsX2lkXyA9CisgICAgICBTZXR1
cFJlcXVlc3RSZXNwb25zZVNpZ25hbChzdGFydF9oYW5kbGVfLCBPblN0YXJ0UmVxdWVzdFJlc3Bv
bnNlU2lnbmFsKTsKKyAgZ19mcmVlKHZhcmlhbnRfc3RyaW5nKTsKKworICAvLyAiSWRlbnRpZmll
ciBmb3IgdGhlIGFwcGxpY2F0aW9uIHdpbmRvdyIsIHRoaXMgaXMgV2F5bGFuZCwgc28gbm90ICJ4
MTE6Li4uIi4KKyAgY29uc3QgZ2NoYXIgcGFyZW50X3dpbmRvd1tdID0gIiI7CisKKyAgUlRDX0xP
RyhMU19JTkZPKSA8PCAiU3RhcnRpbmcgdGhlIHNjcmVlbiBjYXN0IHNlc3Npb24uIjsKKyAgZ19k
YnVzX3Byb3h5X2NhbGwoCisgICAgICBwcm94eV8sICJTdGFydCIsCisgICAgICBnX3ZhcmlhbnRf
bmV3KCIob3Nhe3N2fSkiLCBzZXNzaW9uX2hhbmRsZV8sIHBhcmVudF93aW5kb3csICZidWlsZGVy
KSwKKyAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIC8qdGltZW91dD0qLy0xLCAvKmNhbmNl
bGxhYmxlPSovbnVsbHB0ciwKKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxs
YmFjaz4oT25TdGFydFJlcXVlc3RlZCksIHRoaXMpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFz
ZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU3RhcnRSZXF1ZXN0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5
bmNSZXN1bHQqIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0
ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPih1c2VyX2RhdGEpOworICBSVENf
RENIRUNLKHRoYXQpOworCisgIEdFcnJvciogZXJyb3IgPSBudWxscHRyOworICBHVmFyaWFudCog
dmFyaWFudCA9IGdfZGJ1c19wcm94eV9jYWxsX2ZpbmlzaCh0aGF0LT5wcm94eV8sIHJlc3VsdCwg
JmVycm9yKTsKKyAgaWYgKCF2YXJpYW50KSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZh
aWxlZCB0byBzdGFydCB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbjogIgorICAgICAgICAgICAgICAg
ICAgICAgIDw8IGVycm9yLT5tZXNzYWdlOworICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAg
dGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9CisKKyAg
UlRDX0xPRyhMU19JTkZPKSA8PCAiSW5pdGlhbGl6aW5nIHRoZSBzdGFydCBvZiB0aGUgc2NyZWVu
IGNhc3Qgc2Vzc2lvbi4iOworCisgIGdjaGFyKiBoYW5kbGUgPSBudWxscHRyOworICBnX3Zhcmlh
bnRfZ2V0X2NoaWxkKHZhcmlhbnQsIDAsICJvIiwgJmhhbmRsZSk7CisgIGdfdmFyaWFudF91bnJl
Zih2YXJpYW50KTsKKyAgaWYgKCFoYW5kbGUpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKQorICAg
ICAgICA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIHN0YXJ0IG9mIHRoZSBzY3JlZW4gY2Fz
dCBzZXNzaW9uLiI7CisgICAgaWYgKHRoYXQtPnN0YXJ0X3JlcXVlc3Rfc2lnbmFsX2lkXykgewor
ICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3Vuc3Vic2NyaWJlKGNvbm5lY3Rpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC0+c3RhcnRfcmVx
dWVzdF9zaWduYWxfaWRfKTsKKyAgICAgIHRoYXQtPnN0YXJ0X3JlcXVlc3Rfc2lnbmFsX2lkXyA9
IDA7CisgICAgfQorICAgIHRoYXQtPnBvcnRhbF9pbml0X2ZhaWxlZF8gPSB0cnVlOworICAgIHJl
dHVybjsKKyAgfQorCisgIGdfZnJlZShoYW5kbGUpOworCisgIFJUQ19MT0coTFNfSU5GTykgPDwg
IlN1YnNjcmliZWQgdG8gdGhlIHN0YXJ0IHNpZ25hbC4iOworfQorCisvLyBzdGF0aWMKK3ZvaWQg
QmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU3RhcnRSZXF1ZXN0UmVzcG9uc2VTaWduYWwoCisgICAg
R0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLAorICAgIGNvbnN0IGdjaGFyKiBzZW5kZXJfbmFt
ZSwKKyAgICBjb25zdCBnY2hhciogb2JqZWN0X3BhdGgsCisgICAgY29uc3QgZ2NoYXIqIGludGVy
ZmFjZV9uYW1lLAorICAgIGNvbnN0IGdjaGFyKiBzaWduYWxfbmFtZSwKKyAgICBHVmFyaWFudCog
cGFyYW1ldGVycywKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpIHsKKyAgQmFzZUNhcHR1cmVyUGlw
ZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KHVzZXJfZGF0
YSk7CisgIFJUQ19EQ0hFQ0sodGhhdCk7CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU3RhcnQg
c2lnbmFsIHJlY2VpdmVkLiI7CisgIGd1aW50MzIgcG9ydGFsX3Jlc3BvbnNlOworICBHVmFyaWFu
dCogcmVzcG9uc2VfZGF0YTsKKyAgR1ZhcmlhbnRJdGVyKiBpdGVyID0gbnVsbHB0cjsKKyAgZ192
YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHVAYXtzdn0pIiwgJnBvcnRhbF9yZXNwb25zZSwgJnJl
c3BvbnNlX2RhdGEpOworICBpZiAocG9ydGFsX3Jlc3BvbnNlIHx8ICFyZXNwb25zZV9kYXRhKSB7
CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBzdGFydCB0aGUgc2NyZWVuIGNh
c3Qgc2Vzc2lvbi4iOworICAgIHRoYXQtPnBvcnRhbF9pbml0X2ZhaWxlZF8gPSB0cnVlOworICAg
IHJldHVybjsKKyAgfQorCisgIC8vIEFycmF5IG9mIFBpcGVXaXJlIHN0cmVhbXMuIFNlZQorICAv
LyBodHRwczovL2dpdGh1Yi5jb20vZmxhdHBhay94ZGctZGVza3RvcC1wb3J0YWwvYmxvYi9tYXN0
ZXIvZGF0YS9vcmcuZnJlZWRlc2t0b3AucG9ydGFsLlNjcmVlbkNhc3QueG1sCisgIC8vIGRvY3Vt
ZW50YXRpb24gZm9yIDxtZXRob2QgbmFtZT0iU3RhcnQiPi4KKyAgaWYgKGdfdmFyaWFudF9sb29r
dXAocmVzcG9uc2VfZGF0YSwgInN0cmVhbXMiLCAiYSh1YXtzdn0pIiwgJml0ZXIpKSB7CisgICAg
R1ZhcmlhbnQqIHZhcmlhbnQ7CisKKyAgICB3aGlsZSAoZ192YXJpYW50X2l0ZXJfbmV4dChpdGVy
LCAiQCh1YXtzdn0pIiwgJnZhcmlhbnQpKSB7CisgICAgICBndWludDMyIHN0cmVhbV9pZDsKKyAg
ICAgIGdpbnQzMiB3aWR0aDsKKyAgICAgIGdpbnQzMiBoZWlnaHQ7CisgICAgICBHVmFyaWFudCog
b3B0aW9uczsKKworICAgICAgZ192YXJpYW50X2dldCh2YXJpYW50LCAiKHVAYXtzdn0pIiwgJnN0
cmVhbV9pZCwgJm9wdGlvbnMpOworICAgICAgUlRDX0RDSEVDSyhvcHRpb25zICE9IG51bGxwdHIp
OworCisgICAgICBnX3ZhcmlhbnRfbG9va3VwKG9wdGlvbnMsICJzaXplIiwgIihpaSkiLCAmd2lk
dGgsICZoZWlnaHQpOworCisgICAgICB0aGF0LT5kZXNrdG9wX3NpemVfLnNldCh3aWR0aCwgaGVp
Z2h0KTsKKworICAgICAgZ192YXJpYW50X3VucmVmKG9wdGlvbnMpOworICAgICAgZ192YXJpYW50
X3VucmVmKHZhcmlhbnQpOworICAgIH0KKyAgfQorICBnX3ZhcmlhbnRfaXRlcl9mcmVlKGl0ZXIp
OworICBnX3ZhcmlhbnRfdW5yZWYocmVzcG9uc2VfZGF0YSk7CisKKyAgdGhhdC0+T3BlblBpcGVX
aXJlUmVtb3RlKCk7Cit9CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9wZW5QaXBlV2ly
ZVJlbW90ZSgpIHsKKyAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7CisgIGdfdmFyaWFudF9idWls
ZGVyX2luaXQoJmJ1aWxkZXIsIEdfVkFSSUFOVF9UWVBFX1ZBUkRJQ1QpOworCisgIFJUQ19MT0co
TFNfSU5GTykgPDwgIk9wZW5pbmcgdGhlIFBpcGVXaXJlIHJlbW90ZS4iOworCisgIGdfZGJ1c19w
cm94eV9jYWxsX3dpdGhfdW5peF9mZF9saXN0KAorICAgICAgcHJveHlfLCAiT3BlblBpcGVXaXJl
UmVtb3RlIiwKKyAgICAgIGdfdmFyaWFudF9uZXcoIihvYXtzdn0pIiwgc2Vzc2lvbl9oYW5kbGVf
LCAmYnVpbGRlciksCisgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLCAvKnRpbWVvdXQ9Ki8t
MSwgLypmZF9saXN0PSovbnVsbHB0ciwKKyAgICAgIC8qY2FuY2VsbGFibGU9Ki9udWxscHRyLAor
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihPbk9wZW5QaXBlV2ly
ZVJlbW90ZVJlcXVlc3RlZCksCisgICAgICB0aGlzKTsKK30KKworLy8gc3RhdGljCit2b2lkIEJh
c2VDYXB0dXJlclBpcGVXaXJlOjpPbk9wZW5QaXBlV2lyZVJlbW90ZVJlcXVlc3RlZCgKKyAgICBH
REJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCisgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisg
ICAgZ3BvaW50ZXIgdXNlcl9kYXRhKSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0g
c3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPih1c2VyX2RhdGEpOworICBSVENfRENI
RUNLKHRoYXQpOworCisgIEdFcnJvciogZXJyb3IgPSBudWxscHRyOworICBHVW5peEZETGlzdCog
b3V0bGlzdCA9IG51bGxwdHI7CisgIEdWYXJpYW50KiB2YXJpYW50ID0gZ19kYnVzX3Byb3h5X2Nh
bGxfd2l0aF91bml4X2ZkX2xpc3RfZmluaXNoKAorICAgICAgdGhhdC0+cHJveHlfLCAmb3V0bGlz
dCwgcmVzdWx0LCAmZXJyb3IpOworICBpZiAoIXZhcmlhbnQpIHsKKyAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiRmFpbGVkIHRvIG9wZW4gdGhlIFBpcGVXaXJlIHJlbW90ZTogIgorICAgICAgICAg
ICAgICAgICAgICAgIDw8IGVycm9yLT5tZXNzYWdlOworICAgIGdfZXJyb3JfZnJlZShlcnJvcik7
CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9
CisKKyAgZ2ludDMyIGluZGV4OworICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQsICIoaCkiLCAmaW5k
ZXgpOworCisgIGlmICgodGhhdC0+cHdfZmRfID0gZ191bml4X2ZkX2xpc3RfZ2V0KG91dGxpc3Qs
IGluZGV4LCAmZXJyb3IpKSA9PSAtMSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWls
ZWQgdG8gZ2V0IGZpbGUgZGVzY3JpcHRvciBmcm9tIHRoZSBsaXN0OiAiCisgICAgICAgICAgICAg
ICAgICAgICAgPDwgZXJyb3ItPm1lc3NhZ2U7CisgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAg
ICBnX3ZhcmlhbnRfdW5yZWYodmFyaWFudCk7CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVk
XyA9IHRydWU7CisgICAgcmV0dXJuOworICB9CisKKyAgZ192YXJpYW50X3VucmVmKHZhcmlhbnQp
OworICBnX29iamVjdF91bnJlZihvdXRsaXN0KTsKKworICB0aGF0LT5Jbml0UGlwZVdpcmUoKTsK
KyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUGlwZVdpcmUgcmVtb3RlIG9wZW5lZC4iOworfQorCit2
b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpTdGFydChDYWxsYmFjayogY2FsbGJhY2spIHsKKyAg
UlRDX0RDSEVDSyghY2FsbGJhY2tfKTsKKyAgUlRDX0RDSEVDSyhjYWxsYmFjayk7CisKKyAgSW5p
dFBvcnRhbCgpOworCisgIGNhbGxiYWNrXyA9IGNhbGxiYWNrOworfQorCit2b2lkIEJhc2VDYXB0
dXJlclBpcGVXaXJlOjpDYXB0dXJlRnJhbWUoKSB7CisgIGlmIChwb3J0YWxfaW5pdF9mYWlsZWRf
KSB7CisgICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9QRVJNQU5F
TlQsIG51bGxwdHIpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmICghY3VycmVudF9mcmFtZV8p
IHsKKyAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1RFTVBPUkFS
WSwgbnVsbHB0cik7CisgICAgcmV0dXJuOworICB9CisKKyAgc3RkOjp1bmlxdWVfcHRyPERlc2t0
b3BGcmFtZT4gcmVzdWx0KG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShkZXNrdG9wX3NpemVfKSk7Cisg
IHJlc3VsdC0+Q29weVBpeGVsc0Zyb20oCisgICAgICBjdXJyZW50X2ZyYW1lXywgKGRlc2t0b3Bf
c2l6ZV8ud2lkdGgoKSAqIGtCeXRlc1BlclBpeGVsKSwKKyAgICAgIERlc2t0b3BSZWN0OjpNYWtl
V0goZGVza3RvcF9zaXplXy53aWR0aCgpLCBkZXNrdG9wX3NpemVfLmhlaWdodCgpKSk7CisgIGlm
ICghcmVzdWx0KSB7CisgICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJP
Ul9URU1QT1JBUlksIG51bGxwdHIpOworICAgIHJldHVybjsKKyAgfQorICBjYWxsYmFja18tPk9u
Q2FwdHVyZVJlc3VsdChSZXN1bHQ6OlNVQ0NFU1MsIHN0ZDo6bW92ZShyZXN1bHQpKTsKK30KKwor
Ym9vbCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6R2V0U291cmNlTGlzdChTb3VyY2VMaXN0KiBzb3Vy
Y2VzKSB7CisgIFJUQ19EQ0hFQ0soc291cmNlcy0+c2l6ZSgpID09IDApOworICAvLyBMaXN0IG9m
IGF2YWlsYWJsZSBzY3JlZW5zIGlzIGFscmVhZHkgcHJlc2VudGVkIGJ5IHRoZSB4ZGctZGVza3Rv
cC1wb3J0YWwuCisgIC8vIEJ1dCB3ZSBoYXZlIHRvIGFkZCBhbiBlbXB0eSBzb3VyY2UgYXMgdGhl
IGNvZGUgZXhwZWN0cyBpdC4KKyAgc291cmNlcy0+cHVzaF9iYWNrKHswfSk7CisgIHJldHVybiB0
cnVlOworfQorCitib29sIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpTZWxlY3RTb3VyY2UoU291cmNl
SWQgaWQpIHsKKyAgLy8gU2NyZWVuIHNlbGVjdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSB4ZGctZGVz
a3RvcC1wb3J0YWwuCisgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZiMTAx
YWNiYWE2MDFiODNmODFjN2I0ODg5MGM3OWYzY2I2Njc1NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUuaApAQCAtMCwwICsxLDE2NyBAQAor
LyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5V
WF9CQVNFX0NBUFRVUkVSX1BJUEVXSVJFX0hfCisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBU
VVJFX0xJTlVYX0JBU0VfQ0FQVFVSRVJfUElQRVdJUkVfSF8KKworI2luY2x1ZGUgPGdpby9naW8u
aD4KKyNkZWZpbmUgdHlwZW9mIF9fdHlwZW9mX18KKyNpbmNsdWRlIDxwaXBld2lyZS9waXBld2ly
ZS5oPgorI2luY2x1ZGUgPHNwYS9wYXJhbS92aWRlby9mb3JtYXQtdXRpbHMuaD4KKworI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CisKK2NsYXNzIFBpcGVXaXJlVHlwZSB7CisgcHVibGljOgorICBzcGFfdHlwZV9tZWRpYV90eXBl
IG1lZGlhX3R5cGU7CisgIHNwYV90eXBlX21lZGlhX3N1YnR5cGUgbWVkaWFfc3VidHlwZTsKKyAg
c3BhX3R5cGVfZm9ybWF0X3ZpZGVvIGZvcm1hdF92aWRlbzsKKyAgc3BhX3R5cGVfdmlkZW9fZm9y
bWF0IHZpZGVvX2Zvcm1hdDsKK307CisKK2NsYXNzIEJhc2VDYXB0dXJlclBpcGVXaXJlIDogcHVi
bGljIERlc2t0b3BDYXB0dXJlciB7CisgcHVibGljOgorICBlbnVtIENhcHR1cmVTb3VyY2VUeXBl
IHsgU2NyZWVuID0gMSwgV2luZG93IH07CisKKyAgZXhwbGljaXQgQmFzZUNhcHR1cmVyUGlwZVdp
cmUoQ2FwdHVyZVNvdXJjZVR5cGUgc291cmNlX3R5cGUpOworICB+QmFzZUNhcHR1cmVyUGlwZVdp
cmUoKSBvdmVycmlkZTsKKworICAvLyBEZXNrdG9wQ2FwdHVyZXIgaW50ZXJmYWNlLgorICB2b2lk
IFN0YXJ0KENhbGxiYWNrKiBkZWxlZ2F0ZSkgb3ZlcnJpZGU7CisgIHZvaWQgQ2FwdHVyZUZyYW1l
KCkgb3ZlcnJpZGU7CisgIGJvb2wgR2V0U291cmNlTGlzdChTb3VyY2VMaXN0KiBzb3VyY2VzKSBv
dmVycmlkZTsKKyAgYm9vbCBTZWxlY3RTb3VyY2UoU291cmNlSWQgaWQpIG92ZXJyaWRlOworCisg
cHJpdmF0ZToKKyAgLy8gUGlwZVdpcmUgdHlwZXMgLS0+CisgIHB3X2NvcmUqIHB3X2NvcmVfID0g
bnVsbHB0cjsKKyAgcHdfdHlwZSogcHdfY29yZV90eXBlXyA9IG51bGxwdHI7CisgIHB3X3N0cmVh
bSogcHdfc3RyZWFtXyA9IG51bGxwdHI7CisgIHB3X3JlbW90ZSogcHdfcmVtb3RlXyA9IG51bGxw
dHI7CisgIHB3X2xvb3AqIHB3X2xvb3BfID0gbnVsbHB0cjsKKyAgcHdfdGhyZWFkX2xvb3AqIHB3
X21haW5fbG9vcF8gPSBudWxscHRyOworICBQaXBlV2lyZVR5cGUqIHB3X3R5cGVfID0gbnVsbHB0
cjsKKworICBzcGFfaG9vayBzcGFfc3RyZWFtX2xpc3RlbmVyXyA9IHt9OworICBzcGFfaG9vayBz
cGFfcmVtb3RlX2xpc3RlbmVyXyA9IHt9OworCisgIHB3X3N0cmVhbV9ldmVudHMgcHdfc3RyZWFt
X2V2ZW50c18gPSB7fTsKKyAgcHdfcmVtb3RlX2V2ZW50cyBwd19yZW1vdGVfZXZlbnRzXyA9IHt9
OworCisgIHNwYV92aWRlb19pbmZvX3Jhdyogc3BhX3ZpZGVvX2Zvcm1hdF8gPSBudWxscHRyOwor
CisgIGdpbnQzMiBwd19mZF8gPSAtMTsKKworICBDYXB0dXJlU291cmNlVHlwZSBjYXB0dXJlX3Nv
dXJjZV90eXBlXyA9CisgICAgICBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6Q2FwdHVyZVNvdXJjZVR5
cGU6OlNjcmVlbjsKKworICAvLyA8LS0gZW5kIG9mIFBpcGVXaXJlIHR5cGVzCisKKyAgR0RCdXND
b25uZWN0aW9uKiBjb25uZWN0aW9uXyA9IG51bGxwdHI7CisgIEdEQnVzUHJveHkqIHByb3h5XyA9
IG51bGxwdHI7CisgIGdjaGFyKiBwb3J0YWxfaGFuZGxlXyA9IG51bGxwdHI7CisgIGdjaGFyKiBz
ZXNzaW9uX2hhbmRsZV8gPSBudWxscHRyOworICBnY2hhciogc291cmNlc19oYW5kbGVfID0gbnVs
bHB0cjsKKyAgZ2NoYXIqIHN0YXJ0X2hhbmRsZV8gPSBudWxscHRyOworICBndWludCBzZXNzaW9u
X3JlcXVlc3Rfc2lnbmFsX2lkXyA9IDA7CisgIGd1aW50IHNvdXJjZXNfcmVxdWVzdF9zaWduYWxf
aWRfID0gMDsKKyAgZ3VpbnQgc3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfID0gMDsKKworICBEZXNr
dG9wU2l6ZSBkZXNrdG9wX3NpemVfID0ge307CisgIERlc2t0b3BDYXB0dXJlT3B0aW9ucyBvcHRp
b25zXyA9IHt9OworCisgIHVpbnQ4X3QqIGN1cnJlbnRfZnJhbWVfID0gbnVsbHB0cjsKKyAgQ2Fs
bGJhY2sqIGNhbGxiYWNrXyA9IG51bGxwdHI7CisKKyAgYm9vbCBwb3J0YWxfaW5pdF9mYWlsZWRf
ID0gZmFsc2U7CisKKyAgdm9pZCBJbml0UG9ydGFsKCk7CisgIHZvaWQgSW5pdFBpcGVXaXJlKCk7
CisgIHZvaWQgSW5pdFBpcGVXaXJlVHlwZXMoKTsKKworICB2b2lkIENyZWF0ZVJlY2VpdmluZ1N0
cmVhbSgpOworICB2b2lkIEhhbmRsZUJ1ZmZlcihwd19idWZmZXIqIGJ1ZmZlcik7CisKKyAgdm9p
ZCBDb252ZXJ0UkdCeFRvQkdSeCh1aW50OF90KiBmcmFtZSwgdWludDMyX3Qgc2l6ZSk7CisKKyAg
c3RhdGljIHZvaWQgT25TdGF0ZUNoYW5nZWQodm9pZCogZGF0YSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHdfcmVtb3RlX3N0YXRlIG9sZF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHdfcmVtb3RlX3N0YXRlIHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBlcnJvcik7CisgIHN0YXRpYyB2b2lkIE9uU3RyZWFtU3RhdGVD
aGFuZ2VkKHZvaWQqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3
X3N0cmVhbV9zdGF0ZSBvbGRfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB3X3N0cmVhbV9zdGF0ZSBzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZXJyb3JfbWVzc2FnZSk7CisKKyAgc3RhdGljIHZvaWQgT25TdHJl
YW1Gb3JtYXRDaGFuZ2VkKHZvaWQqIGRhdGEsIGNvbnN0IHN0cnVjdCBzcGFfcG9kKiBmb3JtYXQp
OworICBzdGF0aWMgdm9pZCBPblN0cmVhbVByb2Nlc3Modm9pZCogZGF0YSk7CisgIHN0YXRpYyB2
b2lkIE9uTmV3QnVmZmVyKHZvaWQqIGRhdGEsIHVpbnQzMl90IGlkKTsKKworICBndWludCBTZXR1
cFJlcXVlc3RSZXNwb25zZVNpZ25hbChjb25zdCBnY2hhciogb2JqZWN0X3BhdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzU2lnbmFsQ2FsbGJhY2sgY2FsbGJhY2sp
OworCisgIHN0YXRpYyB2b2lkIE9uUHJveHlSZXF1ZXN0ZWQoR09iamVjdCogb2JqZWN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCogcmVzdWx0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKyAgc3RhdGlj
IGdjaGFyKiBQcmVwYXJlU2lnbmFsSGFuZGxlKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiB0b2tlbik7
CisKKyAgdm9pZCBTZXNzaW9uUmVxdWVzdCgpOworICBzdGF0aWMgdm9pZCBPblNlc3Npb25SZXF1
ZXN0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworICBzdGF0aWMgdm9pZCBPblNlc3Npb25S
ZXF1ZXN0UmVzcG9uc2VTaWduYWwoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIHNlbmRl
cl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIqIG9iamVjdF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGludGVyZmFjZV9uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIHNpZ25hbF9uYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQqIHBh
cmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
cG9pbnRlciB1c2VyX2RhdGEpOworCisgIHZvaWQgU291cmNlc1JlcXVlc3QoKTsKKyAgc3RhdGlj
IHZvaWQgT25Tb3VyY2VzUmVxdWVzdGVkKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCogcmVzdWx0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKyAgc3Rh
dGljIHZvaWQgT25Tb3VyY2VzUmVxdWVzdFJlc3BvbnNlU2lnbmFsKEdEQnVzQ29ubmVjdGlvbiog
Y29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyKiBzZW5kZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBvYmplY3RfcGF0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBpbnRlcmZhY2VfbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyKiBzaWduYWxfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdWYXJpYW50KiBwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworICB2b2lkIFN0YXJ0UmVx
dWVzdCgpOworICBzdGF0aWMgdm9pZCBPblN0YXJ0UmVxdWVzdGVkKEdEQnVzQ29ubmVjdGlvbiog
Y29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2Rh
dGEpOworICBzdGF0aWMgdm9pZCBPblN0YXJ0UmVxdWVzdFJlc3BvbnNlU2lnbmFsKEdEQnVzQ29u
bmVjdGlvbiogY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnY2hhciogc2VuZGVyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIG9iamVjdF9wYXRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBpbnRlcmZhY2Vf
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
Y2hhciogc2lnbmFsX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1ZhcmlhbnQqIHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworICB2b2lkIE9wZW5QaXBlV2ly
ZVJlbW90ZSgpOworICBzdGF0aWMgdm9pZCBPbk9wZW5QaXBlV2lyZVJlbW90ZVJlcXVlc3RlZChH
REJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCogcmVzdWx0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworCisgIFJUQ19E
SVNBTExPV19DT1BZX0FORF9BU1NJR04oQmFzZUNhcHR1cmVyUGlwZVdpcmUpOworfTsKKworfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJF
X0xJTlVYX0JBU0VfQ0FQVFVSRVJfUElQRVdJUkVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L21vdXNlX2N1cnNvcl9tb25pdG9yX3gxMS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L21vdXNlX2N1
cnNvcl9tb25pdG9yX3gxMS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzUwMzgyMmJjZWQ4YmJkYmU0N2YzY2Qx
MDVhYmQ4ZjEwMzJmMzUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2Vf
Y3Vyc29yX21vbml0b3JfeDExLmNjCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogIENvcHlyaWdo
dCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L21vdXNlX2N1
cnNvcl9tb25pdG9yX3gxMS5oIgorCisjaW5jbHVkZSA8WDExL1h1dGlsLmg+CisjaW5jbHVkZSA8
WDExL2V4dGVuc2lvbnMvWGZpeGVzLmg+CisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVk
ZSA8bWVtb3J5PgorCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9j
YXB0dXJlX29wdGlvbnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNr
dG9wX2NhcHR1cmVfdHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9k
ZXNrdG9wX2ZyYW1lLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgv
eF9lcnJvcl90cmFwLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2Vf
Y3Vyc29yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2VfY3Vyc29y
X21vbml0b3IuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisKK25hbWVzcGFjZSB7
CisKKy8vIFdpbmRvd0NhcHR1cmVyIHJldHVybnMgd2luZG93IElEcyBvZiBYMTEgd2luZG93cyB3
aXRoIFdNX1NUQVRFIGF0dHJpYnV0ZS4KKy8vIFRoZXNlIHdpbmRvd3MgbWF5IG5vdCBiZSBpbW1l
ZGlhdGUgY2hpbGRyZW4gb2YgdGhlIHJvb3Qgd2luZG93LCBiZWNhdXNlCisvLyB3aW5kb3cgbWFu
YWdlcnMgbWF5IHJlLXBhcmVudCB0aGVtIHRvIGFkZCBkZWNvcmF0aW9ucy4gSG93ZXZlciwKKy8v
IFhRdWVyeVBvaW50ZXIoKSBleHBlY3RzIHRvIGJlIHBhc3NlZCBjaGlsZHJlbiBvZiB0aGUgcm9v
dC4gVGhpcyBmdW5jdGlvbgorLy8gc2VhcmNoZXMgdXAgdGhlIGxpc3Qgb2YgdGhlIHdpbmRvd3Mg
dG8gZmluZCB0aGUgcm9vdCBjaGlsZCB0aGF0IGNvcnJlc3BvbmRzCisvLyB0byB8d2luZG93fC4K
K1dpbmRvdyBHZXRUb3BMZXZlbFdpbmRvdyhEaXNwbGF5KiBkaXNwbGF5LCBXaW5kb3cgd2luZG93
KSB7CisgIHdoaWxlICh0cnVlKSB7CisgICAgLy8gSWYgdGhlIHdpbmRvdyBpcyBpbiBXaXRoZHJh
d25TdGF0ZSB0aGVuIGxvb2sgYXQgYWxsIG9mIGl0cyBjaGlsZHJlbi4KKyAgICA6OldpbmRvdyBy
b290LCBwYXJlbnQ7CisgICAgOjpXaW5kb3cqIGNoaWxkcmVuOworICAgIHVuc2lnbmVkIGludCBu
dW1fY2hpbGRyZW47CisgICAgaWYgKCFYUXVlcnlUcmVlKGRpc3BsYXksIHdpbmRvdywgJnJvb3Qs
ICZwYXJlbnQsICZjaGlsZHJlbiwKKyAgICAgICAgICAgICAgICAgICAgJm51bV9jaGlsZHJlbikp
IHsKKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gcXVlcnkgZm9yIGNoaWxk
IHdpbmRvd3MgYWx0aG91Z2ggd2luZG93IgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgImRv
ZXMgbm90IGhhdmUgYSB2YWxpZCBXTV9TVEFURS4iOworICAgICAgcmV0dXJuIE5vbmU7CisgICAg
fQorICAgIGlmIChjaGlsZHJlbikKKyAgICAgIFhGcmVlKGNoaWxkcmVuKTsKKworICAgIGlmIChw
YXJlbnQgPT0gcm9vdCkKKyAgICAgIGJyZWFrOworCisgICAgd2luZG93ID0gcGFyZW50OworICB9
CisKKyAgcmV0dXJuIHdpbmRvdzsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSB3
ZWJydGMgeworCitNb3VzZUN1cnNvck1vbml0b3JYMTE6Ok1vdXNlQ3Vyc29yTW9uaXRvclgxMSgK
KyAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsCisgICAgV2luZG93IHdp
bmRvdykKKyAgICA6IHhfZGlzcGxheV8ob3B0aW9ucy54X2Rpc3BsYXkoKSksCisgICAgICBjYWxs
YmFja18oTlVMTCksCisgICAgICBtb2RlXyhTSEFQRV9BTkRfUE9TSVRJT04pLAorICAgICAgd2lu
ZG93Xyh3aW5kb3cpLAorICAgICAgaGF2ZV94Zml4ZXNfKGZhbHNlKSwKKyAgICAgIHhmaXhlc19l
dmVudF9iYXNlXygtMSksCisgICAgICB4Zml4ZXNfZXJyb3JfYmFzZV8oLTEpIHsKKyAgLy8gU2V0
IGEgZGVmYXVsdCBpbml0aWFsIGN1cnNvciBzaGFwZSBpbiBjYXNlIFhGaXhlcyBpcyBub3QgcHJl
c2VudC4KKyAgY29uc3QgaW50IGtTaXplID0gNTsKKyAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BG
cmFtZT4gZGVmYXVsdF9jdXJzb3IoCisgICAgICBuZXcgQmFzaWNEZXNrdG9wRnJhbWUoRGVza3Rv
cFNpemUoa1NpemUsIGtTaXplKSkpOworICBjb25zdCB1aW50OF90IHBpeGVsc1trU2l6ZSAqIGtT
aXplXSA9IHsKKyAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYs
IDB4ZmYsIDB4ZmYsCisgICAgICAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweGZmLCAweDAwLCAw
eDAwLCAweGZmLCAweGZmLAorICAgICAgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMH07CisgIHVpbnQ4X3QqIHB0ciA9IGRlZmF1bHRfY3Vyc29yLT5kYXRhKCk7CisgIGZv
ciAoaW50IHkgPSAwOyB5IDwga1NpemU7ICsreSkgeworICAgIGZvciAoaW50IHggPSAwOyB4IDwg
a1NpemU7ICsreCkgeworICAgICAgKnB0cisrID0gcGl4ZWxzW2tTaXplICogeSArIHhdOworICAg
ICAgKnB0cisrID0gcGl4ZWxzW2tTaXplICogeSArIHhdOworICAgICAgKnB0cisrID0gcGl4ZWxz
W2tTaXplICogeSArIHhdOworICAgICAgKnB0cisrID0gMHhmZjsKKyAgICB9CisgIH0KKyAgRGVz
a3RvcFZlY3RvciBob3RzcG90KDIsIDIpOworICBjdXJzb3Jfc2hhcGVfLnJlc2V0KG5ldyBNb3Vz
ZUN1cnNvcihkZWZhdWx0X2N1cnNvci5yZWxlYXNlKCksIGhvdHNwb3QpKTsKK30KKworTW91c2VD
dXJzb3JNb25pdG9yWDExOjp+TW91c2VDdXJzb3JNb25pdG9yWDExKCkgeworICBpZiAoaGF2ZV94
Zml4ZXNfKSB7CisgICAgeF9kaXNwbGF5Xy0+UmVtb3ZlRXZlbnRIYW5kbGVyKHhmaXhlc19ldmVu
dF9iYXNlXyArIFhGaXhlc0N1cnNvck5vdGlmeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcyk7CisgIH0KK30KKwordm9pZCBNb3VzZUN1cnNvck1vbml0b3JYMTE6Oklu
aXQoQ2FsbGJhY2sqIGNhbGxiYWNrLCBNb2RlIG1vZGUpIHsKKyAgLy8gSW5pdCBjYW4gYmUgY2Fs
bGVkIG9ubHkgb25jZSBwZXIgaW5zdGFuY2Ugb2YgTW91c2VDdXJzb3JNb25pdG9yLgorICBSVENf
RENIRUNLKCFjYWxsYmFja18pOworICBSVENfRENIRUNLKGNhbGxiYWNrKTsKKworICBjYWxsYmFj
a18gPSBjYWxsYmFjazsKKyAgbW9kZV8gPSBtb2RlOworCisgIGhhdmVfeGZpeGVzXyA9CisgICAg
ICBYRml4ZXNRdWVyeUV4dGVuc2lvbihkaXNwbGF5KCksICZ4Zml4ZXNfZXZlbnRfYmFzZV8sICZ4
Zml4ZXNfZXJyb3JfYmFzZV8pOworCisgIGlmIChoYXZlX3hmaXhlc18pIHsKKyAgICAvLyBSZWdp
c3RlciBmb3IgY2hhbmdlcyB0byB0aGUgY3Vyc29yIHNoYXBlLgorICAgIFhGaXhlc1NlbGVjdEN1
cnNvcklucHV0KGRpc3BsYXkoKSwgd2luZG93XywgWEZpeGVzRGlzcGxheUN1cnNvck5vdGlmeU1h
c2spOworICAgIHhfZGlzcGxheV8tPkFkZEV2ZW50SGFuZGxlcih4Zml4ZXNfZXZlbnRfYmFzZV8g
KyBYRml4ZXNDdXJzb3JOb3RpZnksIHRoaXMpOworCisgICAgQ2FwdHVyZUN1cnNvcigpOworICB9
IGVsc2UgeworICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlggc2VydmVyIGRvZXMgbm90IHN1cHBv
cnQgWEZpeGVzLiI7CisgIH0KK30KKwordm9pZCBNb3VzZUN1cnNvck1vbml0b3JYMTE6OkNhcHR1
cmUoKSB7CisgIFJUQ19EQ0hFQ0soY2FsbGJhY2tfKTsKKworICAvLyBQcm9jZXNzIFgxMSBldmVu
dHMgaW4gY2FzZSBYRml4ZXMgaGFzIHNlbnQgY3Vyc29yIG5vdGlmaWNhdGlvbi4KKyAgeF9kaXNw
bGF5Xy0+UHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCk7CisKKyAgLy8gY3Vyc29yX3NoYXBlX3wgaXMg
c2V0IG9ubHkgaWYgd2Ugd2VyZSBub3RpZmllZCBvZiBhIGN1cnNvciBzaGFwZSBjaGFuZ2UuCisg
IGlmIChjdXJzb3Jfc2hhcGVfLmdldCgpKQorICAgIGNhbGxiYWNrXy0+T25Nb3VzZUN1cnNvcihj
dXJzb3Jfc2hhcGVfLnJlbGVhc2UoKSk7CisKKyAgLy8gR2V0IGN1cnNvciBwb3NpdGlvbiBpZiBu
ZWNlc3NhcnkuCisgIGlmIChtb2RlXyA9PSBTSEFQRV9BTkRfUE9TSVRJT04pIHsKKyAgICBpbnQg
cm9vdF94OworICAgIGludCByb290X3k7CisgICAgaW50IHdpbl94OworICAgIGludCB3aW5feTsK
KyAgICBXaW5kb3cgcm9vdF93aW5kb3c7CisgICAgV2luZG93IGNoaWxkX3dpbmRvdzsKKyAgICB1
bnNpZ25lZCBpbnQgbWFzazsKKworICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KCkp
OworICAgIEJvb2wgcmVzdWx0ID0gWFF1ZXJ5UG9pbnRlcihkaXNwbGF5KCksIHdpbmRvd18sICZy
b290X3dpbmRvdywgJmNoaWxkX3dpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnJvb3RfeCwgJnJvb3RfeSwgJndpbl94LCAmd2luX3ksICZtYXNrKTsKKyAgICBDdXJzb3JT
dGF0ZSBzdGF0ZTsKKyAgICBpZiAoIXJlc3VsdCB8fCBlcnJvcl90cmFwLkdldExhc3RFcnJvckFu
ZERpc2FibGUoKSAhPSAwKSB7CisgICAgICBzdGF0ZSA9IE9VVFNJREU7CisgICAgfSBlbHNlIHsK
KyAgICAgIC8vIEluIHNjcmVlbiBtb2RlICh3aW5kb3dfID09IHJvb3Rfd2luZG93KSB0aGUgbW91
c2UgaXMgYWx3YXlzIGluc2lkZS4KKyAgICAgIC8vIFhRdWVyeVBvaW50ZXIoKSBzZXRzIHxjaGls
ZF93aW5kb3d8IHRvIE5vbmUgaWYgdGhlIGN1cnNvciBpcyBvdXRzaWRlCisgICAgICAvLyB8d2lu
ZG93X3wuCisgICAgICBzdGF0ZSA9CisgICAgICAgICAgKHdpbmRvd18gPT0gcm9vdF93aW5kb3cg
fHwgY2hpbGRfd2luZG93ICE9IE5vbmUpID8gSU5TSURFIDogT1VUU0lERTsKKyAgICB9CisKKyAg
ICAvLyBBcyB0aGUgY29tbWVudHMgdG8gR2V0VG9wTGV2ZWxXaW5kb3coKSBhYm92ZSBpbmRpY2F0
ZSwgaW4gd2luZG93IGNhcHR1cmUsCisgICAgLy8gdGhlIGN1cnNvciBwb3NpdGlvbiBjYXB0dXJl
IGhhcHBlbnMgaW4gfHdpbmRvd198LCB3aGlsZSB0aGUgZnJhbWUgY2F0cHVyZQorICAgIC8vIGhh
cHBlbnMgaW4gfGNoaWxkX3dpbmRvd3wuIFRoZXNlIHR3byB3aW5kb3dzIGFyZSBub3QgYWx3eWFz
IHNhbWUsIGFzCisgICAgLy8gd2luZG93IG1hbmFnZXIgbWF5IGFkZCBzb21lIGRlY29yYXRpb25z
IHRvIHRoZSB8d2luZG93X3wuIFNvIHRyYW5zbGF0ZQorICAgIC8vIHRoZSBjb29yZGluYXRlIGlu
IHx3aW5kb3dffCB0byB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB8Y2hpbGRfd2luZG93fC4KKyAg
ICBpZiAod2luZG93XyAhPSByb290X3dpbmRvdyAmJiBzdGF0ZSA9PSBJTlNJREUpIHsKKyAgICAg
IGludCB0cmFuc2xhdGVkX3gsIHRyYW5zbGF0ZWRfeTsKKyAgICAgIFdpbmRvdyB1bnVzZWQ7Cisg
ICAgICBpZiAoWFRyYW5zbGF0ZUNvb3JkaW5hdGVzKGRpc3BsYXkoKSwgd2luZG93XywgY2hpbGRf
d2luZG93LCB3aW5feCwgd2luX3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0
cmFuc2xhdGVkX3gsICZ0cmFuc2xhdGVkX3ksICZ1bnVzZWQpKSB7CisgICAgICAgIHdpbl94ID0g
dHJhbnNsYXRlZF94OworICAgICAgICB3aW5feSA9IHRyYW5zbGF0ZWRfeTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBYMTEgYWx3YXlzIHN0YXJ0cyB0aGUgY29vcmRpbmF0ZSBmcm9tICgwLCAw
KSwgc28gd2UgZG8gbm90IG5lZWQgdG8KKyAgICAvLyB0cmFuc2xhdGUgaGVyZS4KKyAgICBjYWxs
YmFja18tPk9uTW91c2VDdXJzb3JQb3NpdGlvbihEZXNrdG9wVmVjdG9yKHJvb3RfeCwgcm9vdF95
KSk7CisgIH0KK30KKworYm9vbCBNb3VzZUN1cnNvck1vbml0b3JYMTE6OkhhbmRsZVhFdmVudChj
b25zdCBYRXZlbnQmIGV2ZW50KSB7CisgIGlmIChoYXZlX3hmaXhlc18gJiYgZXZlbnQudHlwZSA9
PSB4Zml4ZXNfZXZlbnRfYmFzZV8gKyBYRml4ZXNDdXJzb3JOb3RpZnkpIHsKKyAgICBjb25zdCBY
Rml4ZXNDdXJzb3JOb3RpZnlFdmVudCogY3Vyc29yX2V2ZW50ID0KKyAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBYRml4ZXNDdXJzb3JOb3RpZnlFdmVudCo+KCZldmVudCk7CisgICAgaWYg
KGN1cnNvcl9ldmVudC0+c3VidHlwZSA9PSBYRml4ZXNEaXNwbGF5Q3Vyc29yTm90aWZ5KSB7Cisg
ICAgICBDYXB0dXJlQ3Vyc29yKCk7CisgICAgfQorICAgIC8vIFJldHVybiBmYWxzZSwgZXZlbiBp
ZiB0aGUgZXZlbnQgaGFzIGJlZW4gaGFuZGxlZCwgYmVjYXVzZSB0aGVyZSBtaWdodCBiZQorICAg
IC8vIG90aGVyIGxpc3RlbmVycyBmb3IgY3Vyc29yIG5vdGlmaWNhdGlvbnMuCisgIH0KKyAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6Q2FwdHVyZUN1cnNv
cigpIHsKKyAgUlRDX0RDSEVDSyhoYXZlX3hmaXhlc18pOworCisgIFhGaXhlc0N1cnNvckltYWdl
KiBpbWc7CisgIHsKKyAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheSgpKTsKKyAgICBp
bWcgPSBYRml4ZXNHZXRDdXJzb3JJbWFnZShkaXNwbGF5KCkpOworICAgIGlmICghaW1nIHx8IGVy
cm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApCisgICAgICByZXR1cm47Cisg
IH0KKworICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBpbWFnZSgKKyAgICAgIG5ldyBC
YXNpY0Rlc2t0b3BGcmFtZShEZXNrdG9wU2l6ZShpbWctPndpZHRoLCBpbWctPmhlaWdodCkpKTsK
KworICB1aW50NjRfdCogc3JjID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KGltZy0+cGl4
ZWxzKTsKKyAgdWludDMyX3QqIGRzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihpbWFn
ZS0+ZGF0YSgpKTsKKyAgdWludDMyX3QqIGRzdF9lbmQgPSBkc3QgKyAoaW1nLT53aWR0aCAqIGlt
Zy0+aGVpZ2h0KTsKKyAgd2hpbGUgKGRzdCA8IGRzdF9lbmQpIHsKKyAgICAqZHN0KysgPSAqc3Jj
Kys7CisgIH0KKworICBEZXNrdG9wVmVjdG9yIGhvdHNwb3Qoc3RkOjptaW4oaW1nLT53aWR0aCwg
aW1nLT54aG90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWluKGltZy0+aGVpZ2h0
LCBpbWctPnlob3QpKTsKKworICBYRnJlZShpbWcpOworCisgIGN1cnNvcl9zaGFwZV8ucmVzZXQo
bmV3IE1vdXNlQ3Vyc29yKGltYWdlLnJlbGVhc2UoKSwgaG90c3BvdCkpOworfQorCisvLyBzdGF0
aWMKK01vdXNlQ3Vyc29yTW9uaXRvciogTW91c2VDdXJzb3JNb25pdG9yWDExOjpDcmVhdGVGb3JX
aW5kb3coCisgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zLAorICAgIFdp
bmRvd0lkIHdpbmRvdykgeworICBpZiAoIW9wdGlvbnMueF9kaXNwbGF5KCkpCisgICAgcmV0dXJu
IE5VTEw7CisgIHdpbmRvdyA9IEdldFRvcExldmVsV2luZG93KG9wdGlvbnMueF9kaXNwbGF5KCkt
PmRpc3BsYXkoKSwgd2luZG93KTsKKyAgaWYgKHdpbmRvdyA9PSBOb25lKQorICAgIHJldHVybiBO
VUxMOworICByZXR1cm4gbmV3IE1vdXNlQ3Vyc29yTW9uaXRvclgxMShvcHRpb25zLCB3aW5kb3cp
OworfQorCitNb3VzZUN1cnNvck1vbml0b3IqIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6Q3JlYXRl
Rm9yU2NyZWVuKAorICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywKKyAg
ICBTY3JlZW5JZCBzY3JlZW4pIHsKKyAgaWYgKCFvcHRpb25zLnhfZGlzcGxheSgpKQorICAgIHJl
dHVybiBOVUxMOworICByZXR1cm4gbmV3IE1vdXNlQ3Vyc29yTW9uaXRvclgxMSgKKyAgICAgIG9w
dGlvbnMsIERlZmF1bHRSb290V2luZG93KG9wdGlvbnMueF9kaXNwbGF5KCktPmRpc3BsYXkoKSkp
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TW91c2VDdXJzb3JNb25pdG9yPiBNb3VzZUN1cnNvck1v
bml0b3JYMTE6OkNyZWF0ZSgKKyAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlv
bnMpIHsKKyAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNb3VzZUN1cnNvck1vbml0b3I+KAorICAg
ICAgQ3JlYXRlRm9yU2NyZWVuKG9wdGlvbnMsIGtGdWxsRGVza3RvcFNjcmVlbklkKSk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L21vdXNl
X2N1cnNvcl9tb25pdG9yX3gxMS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2VfY3Vyc29yX21vbml0
b3JfeDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U4ZTBjYTc4YzMyNGRlNDUxYjZlOTRhMTE0MTU2ZDVhMzQy
ZWFhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L21vdXNlX2N1cnNvcl9tb25p
dG9yX3gxMS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYg
TU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfTU9VU0VfQ1VSU09SX01PTklUT1JfWDExX0hf
CisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX01PVVNFX0NVUlNPUl9NT05J
VE9SX1gxMV9IXworCisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKworI2luY2x1ZGUgPG1lbW9yeT4K
KworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJlZF94X2Rpc3Bs
YXkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3JfbW9u
aXRvci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgTW91c2VDdXJzb3JNb25pdG9y
WDExIDogcHVibGljIE1vdXNlQ3Vyc29yTW9uaXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBTaGFyZWRYRGlzcGxheTo6WEV2ZW50SGFuZGxlciB7CisgcHVibGljOgor
ICBNb3VzZUN1cnNvck1vbml0b3JYMTEoY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRp
b25zLCBXaW5kb3cgd2luZG93KTsKKyAgfk1vdXNlQ3Vyc29yTW9uaXRvclgxMSgpIG92ZXJyaWRl
OworCisgIHN0YXRpYyBNb3VzZUN1cnNvck1vbml0b3IqIENyZWF0ZUZvcldpbmRvdygKKyAgICAg
IGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywKKyAgICAgIFdpbmRvd0lkIHdp
bmRvdyk7CisgIHN0YXRpYyBNb3VzZUN1cnNvck1vbml0b3IqIENyZWF0ZUZvclNjcmVlbigKKyAg
ICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywKKyAgICAgIFNjcmVlbklk
IHNjcmVlbik7CisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TW91c2VDdXJzb3JNb25pdG9yPiBD
cmVhdGUoCisgICAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpOworCisg
IHZvaWQgSW5pdChDYWxsYmFjayogY2FsbGJhY2ssIE1vZGUgbW9kZSkgb3ZlcnJpZGU7CisgIHZv
aWQgQ2FwdHVyZSgpIG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgLy8gU2hhcmVkWERpc3BsYXk6
OlhFdmVudEhhbmRsZXIgaW50ZXJmYWNlLgorICBib29sIEhhbmRsZVhFdmVudChjb25zdCBYRXZl
bnQmIGV2ZW50KSBvdmVycmlkZTsKKworICBEaXNwbGF5KiBkaXNwbGF5KCkgeyByZXR1cm4geF9k
aXNwbGF5Xy0+ZGlzcGxheSgpOyB9CisKKyAgLy8gQ2FwdHVyZXMgY3VycmVudCBjdXJzb3Igc2hh
cGUgYW5kIHN0b3JlcyBpdCBpbiB8Y3Vyc29yX3NoYXBlX3wuCisgIHZvaWQgQ2FwdHVyZUN1cnNv
cigpOworCisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRYRGlzcGxheT4geF9kaXNwbGF5XzsK
KyAgQ2FsbGJhY2sqIGNhbGxiYWNrXzsKKyAgTW9kZSBtb2RlXzsKKyAgV2luZG93IHdpbmRvd187
CisKKyAgYm9vbCBoYXZlX3hmaXhlc187CisgIGludCB4Zml4ZXNfZXZlbnRfYmFzZV87CisgIGlu
dCB4Zml4ZXNfZXJyb3JfYmFzZV87CisKKyAgc3RkOjp1bmlxdWVfcHRyPE1vdXNlQ3Vyc29yPiBj
dXJzb3Jfc2hhcGVfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8v
IE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX01PVVNFX0NVUlNPUl9NT05JVE9SX1gxMV9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjcyNGQ4NTM3ZDMxMTc4ZGY0MGFkMzI0MDc0YzMwZjVjY2VkMDA5MGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfcGlwZXdpcmUuY2MKQEAgLTAsMCAr
MSwzMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl9waXBld2lyZS5oIgorCisjaW5jbHVkZSA8bWVt
b3J5PgorCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisKK25hbWVzcGFjZSB3ZWJy
dGMgeworCitTY3JlZW5DYXB0dXJlclBpcGVXaXJlOjpTY3JlZW5DYXB0dXJlclBpcGVXaXJlKCkK
KyAgICA6IEJhc2VDYXB0dXJlclBpcGVXaXJlKEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDYXB0dXJl
U291cmNlVHlwZTo6U2NyZWVuKSB7fQorU2NyZWVuQ2FwdHVyZXJQaXBlV2lyZTo6flNjcmVlbkNh
cHR1cmVyUGlwZVdpcmUoKSB7fQorCisvLyBzdGF0aWMKK3N0ZDo6dW5pcXVlX3B0cjxEZXNrdG9w
Q2FwdHVyZXI+CitTY3JlZW5DYXB0dXJlclBpcGVXaXJlOjpDcmVhdGVSYXdTY3JlZW5DYXB0dXJl
cigKKyAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKKyAgcmV0dXJu
IGFic2w6Om1ha2VfdW5pcXVlPFNjcmVlbkNhcHR1cmVyUGlwZVdpcmU+KCk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0
dXJlcl9waXBld2lyZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjZkY2Q2ODBlMDZhMzIwZmEzN2FjZmJmMGJhZmI3MmI1NjcwZWVmYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl9waXBld2ly
ZS5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBw
cm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxF
U19ERVNLVE9QX0NBUFRVUkVfTElOVVhfU0NSRUVOX0NBUFRVUkVSX1BJUEVXSVJFX0hfCisjZGVm
aW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1NDUkVFTl9DQVBUVVJFUl9QSVBFV0lS
RV9IXworCisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbGludXgvYmFzZV9jYXB0dXJlcl9waXBld2lyZS5oIgorCituYW1lc3BhY2Ugd2VicnRj
IHsKKworY2xhc3MgU2NyZWVuQ2FwdHVyZXJQaXBlV2lyZSA6IHB1YmxpYyBCYXNlQ2FwdHVyZXJQ
aXBlV2lyZSB7CisgcHVibGljOgorICBTY3JlZW5DYXB0dXJlclBpcGVXaXJlKCk7CisgIH5TY3Jl
ZW5DYXB0dXJlclBpcGVXaXJlKCkgb3ZlcnJpZGU7CisKKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxEZXNrdG9wQ2FwdHVyZXI+IENyZWF0ZVJhd1NjcmVlbkNhcHR1cmVyKAorICAgICAgY29uc3Qg
RGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKTsKKworICBSVENfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOKFNjcmVlbkNhcHR1cmVyUGlwZVdpcmUpOworfTsKKworfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1NDUkVF
Tl9DQVBUVVJFUl9QSVBFV0lSRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVu
X2NhcHR1cmVyX3gxMS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl94MTEuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWQ2YTA4NWI2NWNjZmFhZjNmMGUyODUzZDc5NzM3N2M0NjhhOWE3OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl94MTEuY2MKQEAg
LTAsMCArMSwzMzcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3gxMS5oIgorCisjaW5jbHVk
ZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2luY2x1ZGUgPFgxMS9YdXRp
bC5oPgorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4KKyNpbmNsdWRlIDxYMTEv
ZXh0ZW5zaW9ucy9YZml4ZXMuaD4KKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzZXQ+
CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvZGVza3RvcF9jYXB0dXJlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL2Rlc2t0b3BfZnJhbWUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9s
aW51eC94X3NlcnZlcl9waXhlbF9idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9zY3JlZW5fY2FwdHVyZV9mcmFtZV9xdWV1ZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9jYXB0dXJlcl9oZWxwZXIuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9zaGFyZWRfZGVza3RvcF9mcmFtZS5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS90aW1ldXRpbHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5o
IgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworU2NyZWVuQ2FwdHVyZXJYMTE6OlNjcmVlbkNhcHR1
cmVyWDExKCkgeworICBoZWxwZXJfLlNldExvZ0dyaWRTaXplKDQpOworfQorCitTY3JlZW5DYXB0
dXJlclgxMTo6flNjcmVlbkNhcHR1cmVyWDExKCkgeworICBvcHRpb25zXy54X2Rpc3BsYXkoKS0+
UmVtb3ZlRXZlbnRIYW5kbGVyKENvbmZpZ3VyZU5vdGlmeSwgdGhpcyk7CisgIGlmICh1c2VfZGFt
YWdlXykgeworICAgIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5SZW1vdmVFdmVudEhhbmRsZXIoZGFt
YWdlX2V2ZW50X2Jhc2VfICsgWERhbWFnZU5vdGlmeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMpOworICB9CisgIERlaW5pdFhsaWIoKTsKK30KKwor
Ym9vbCBTY3JlZW5DYXB0dXJlclgxMTo6SW5pdChjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMm
IG9wdGlvbnMpIHsKKyAgVFJBQ0VfRVZFTlQwKCJ3ZWJydGMiLCAiU2NyZWVuQ2FwdHVyZXJYMTE6
OkluaXQiKTsKKyAgb3B0aW9uc18gPSBvcHRpb25zOworCisgIHJvb3Rfd2luZG93XyA9IFJvb3RX
aW5kb3coZGlzcGxheSgpLCBEZWZhdWx0U2NyZWVuKGRpc3BsYXkoKSkpOworICBpZiAocm9vdF93
aW5kb3dfID09IEJhZFZhbHVlKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVuYWJsZSB0
byBnZXQgdGhlIHJvb3Qgd2luZG93IjsKKyAgICBEZWluaXRYbGliKCk7CisgICAgcmV0dXJuIGZh
bHNlOworICB9CisKKyAgZ2NfID0gWENyZWF0ZUdDKGRpc3BsYXkoKSwgcm9vdF93aW5kb3dfLCAw
LCBOVUxMKTsKKyAgaWYgKGdjXyA9PSBOVUxMKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IlVuYWJsZSB0byBnZXQgZ3JhcGhpY3MgY29udGV4dCI7CisgICAgRGVpbml0WGxpYigpOworICAg
IHJldHVybiBmYWxzZTsKKyAgfQorCisgIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5BZGRFdmVudEhh
bmRsZXIoQ29uZmlndXJlTm90aWZ5LCB0aGlzKTsKKworICAvLyBDaGVjayBmb3IgWEZpeGVzIGV4
dGVuc2lvbi4gVGhpcyBpcyByZXF1aXJlZCBmb3IgY3Vyc29yIHNoYXBlCisgIC8vIG5vdGlmaWNh
dGlvbnMsIGFuZCBmb3Igb3VyIHVzZSBvZiBYRGFtYWdlLgorICBpZiAoWEZpeGVzUXVlcnlFeHRl
bnNpb24oZGlzcGxheSgpLCAmeGZpeGVzX2V2ZW50X2Jhc2VfLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnhmaXhlc19lcnJvcl9iYXNlXykpIHsKKyAgICBoYXNfeGZpeGVzXyA9IHRydWU7
CisgIH0gZWxzZSB7CisgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiWCBzZXJ2ZXIgZG9lcyBub3Qg
c3VwcG9ydCBYRml4ZXMuIjsKKyAgfQorCisgIC8vIFJlZ2lzdGVyIGZvciBjaGFuZ2VzIHRvIHRo
ZSBkaW1lbnNpb25zIG9mIHRoZSByb290IHdpbmRvdy4KKyAgWFNlbGVjdElucHV0KGRpc3BsYXko
KSwgcm9vdF93aW5kb3dfLCBTdHJ1Y3R1cmVOb3RpZnlNYXNrKTsKKworICBpZiAoIXhfc2VydmVy
X3BpeGVsX2J1ZmZlcl8uSW5pdChkaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KGRpc3BsYXko
KSkpKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBpbml0aWFsaXplIHBp
eGVsIGJ1ZmZlci4iOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGlmIChvcHRpb25zXy51
c2VfdXBkYXRlX25vdGlmaWNhdGlvbnMoKSkgeworICAgIEluaXRYRGFtYWdlKCk7CisgIH0KKwor
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTY3JlZW5DYXB0dXJlclgxMTo6SW5pdFhEYW1hZ2Uo
KSB7CisgIC8vIE91ciB1c2Ugb2YgWERhbWFnZSByZXF1aXJlcyBYRml4ZXMuCisgIGlmICghaGFz
X3hmaXhlc18pIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBDaGVjayBmb3IgWERhbWFnZSBl
eHRlbnNpb24uCisgIGlmICghWERhbWFnZVF1ZXJ5RXh0ZW5zaW9uKGRpc3BsYXkoKSwgJmRhbWFn
ZV9ldmVudF9iYXNlXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhbWFnZV9lcnJv
cl9iYXNlXykpIHsKKyAgICBSVENfTE9HKExTX0lORk8pIDw8ICJYIHNlcnZlciBkb2VzIG5vdCBz
dXBwb3J0IFhEYW1hZ2UuIjsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBUT0RPKGxhbWJyb3Ns
YW1icm91KTogRGlzYWJsZSBEQU1BR0UgaW4gc2l0dWF0aW9ucyB3aGVyZSBpdCBpcyBrbm93bgor
ICAvLyB0byBmYWlsLCBzdWNoIGFzIHdoZW4gRGVza3RvcCBFZmZlY3RzIGFyZSBlbmFibGVkLCB3
aXRoIGdyYXBoaWNzCisgIC8vIGRyaXZlcnMgKG5WaWRpYSwgQVRJKSB0aGF0IGZhaWwgdG8gcmVw
b3J0IERBTUFHRSBub3RpZmljYXRpb25zCisgIC8vIHByb3Blcmx5LgorCisgIC8vIFJlcXVlc3Qg
bm90aWZpY2F0aW9ucyBldmVyeSB0aW1lIHRoZSBzY3JlZW4gYmVjb21lcyBkYW1hZ2VkLgorICBk
YW1hZ2VfaGFuZGxlXyA9CisgICAgICBYRGFtYWdlQ3JlYXRlKGRpc3BsYXkoKSwgcm9vdF93aW5k
b3dfLCBYRGFtYWdlUmVwb3J0Tm9uRW1wdHkpOworICBpZiAoIWRhbWFnZV9oYW5kbGVfKSB7Cisg
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVuYWJsZSB0byBpbml0aWFsaXplIFhEYW1hZ2UuIjsK
KyAgICByZXR1cm47CisgIH0KKworICAvLyBDcmVhdGUgYW4gWEZpeGVzIHNlcnZlci1zaWRlIHJl
Z2lvbiB0byBjb2xsYXRlIGRhbWFnZSBpbnRvLgorICBkYW1hZ2VfcmVnaW9uXyA9IFhGaXhlc0Ny
ZWF0ZVJlZ2lvbihkaXNwbGF5KCksIDAsIDApOworICBpZiAoIWRhbWFnZV9yZWdpb25fKSB7Cisg
ICAgWERhbWFnZURlc3Ryb3koZGlzcGxheSgpLCBkYW1hZ2VfaGFuZGxlXyk7CisgICAgUlRDX0xP
RyhMU19FUlJPUikgPDwgIlVuYWJsZSB0byBjcmVhdGUgWEZpeGVzIHJlZ2lvbi4iOworICAgIHJl
dHVybjsKKyAgfQorCisgIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5BZGRFdmVudEhhbmRsZXIoZGFt
YWdlX2V2ZW50X2Jhc2VfICsgWERhbWFnZU5vdGlmeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzKTsKKworICB1c2VfZGFtYWdlXyA9IHRydWU7CisgIFJUQ19M
T0coTFNfSU5GTykgPDwgIlVzaW5nIFhEYW1hZ2UgZXh0ZW5zaW9uLiI7Cit9CisKK3ZvaWQgU2Ny
ZWVuQ2FwdHVyZXJYMTE6OlN0YXJ0KENhbGxiYWNrKiBjYWxsYmFjaykgeworICBSVENfRENIRUNL
KCFjYWxsYmFja18pOworICBSVENfRENIRUNLKGNhbGxiYWNrKTsKKworICBjYWxsYmFja18gPSBj
YWxsYmFjazsKK30KKwordm9pZCBTY3JlZW5DYXB0dXJlclgxMTo6Q2FwdHVyZUZyYW1lKCkgewor
ICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJTY3JlZW5DYXB0dXJlclgxMTo6Q2FwdHVyZUZyYW1l
Iik7CisgIGludDY0X3QgY2FwdHVyZV9zdGFydF90aW1lX25hbm9zID0gcnRjOjpUaW1lTmFub3Mo
KTsKKworICBxdWV1ZV8uTW92ZVRvTmV4dEZyYW1lKCk7CisgIFJUQ19EQ0hFQ0soIXF1ZXVlXy5j
dXJyZW50X2ZyYW1lKCkgfHwgIXF1ZXVlXy5jdXJyZW50X2ZyYW1lKCktPklzU2hhcmVkKCkpOwor
CisgIC8vIFByb2Nlc3MgWEV2ZW50cyBmb3IgWERhbWFnZSBhbmQgY3Vyc29yIHNoYXBlIHRyYWNr
aW5nLgorICBvcHRpb25zXy54X2Rpc3BsYXkoKS0+UHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCk7CisK
KyAgLy8gUHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCkgbWF5IGNhbGwgU2NyZWVuQ29uZmlndXJhdGlv
bkNoYW5nZWQoKSB3aGljaAorICAvLyByZWluaXRpYWxpemVzIHx4X3NlcnZlcl9waXhlbF9idWZm
ZXJffC4gQ2hlY2sgaWYgdGhlIHBpeGVsIGJ1ZmZlciBpcyBzdGlsbAorICAvLyBpbiBhIGdvb2Qg
c2hhcGUuCisgIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5pc19pbml0aWFsaXplZCgpKSB7
CisgICAgLy8gV2UgZmFpbGVkIHRvIGluaXRpYWxpemUgcGl4ZWwgYnVmZmVyLgorICAgIFJUQ19M
T0coTFNfRVJST1IpIDw8ICJQaXhlbCBidWZmZXIgaXMgbm90IGluaXRpYWxpemVkLiI7CisgICAg
Y2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9QRVJNQU5FTlQsIG51bGxw
dHIpOworICAgIHJldHVybjsKKyAgfQorCisgIC8vIElmIHRoZSBjdXJyZW50IGZyYW1lIGlzIGZy
b20gYW4gb2xkZXIgZ2VuZXJhdGlvbiB0aGVuIGFsbG9jYXRlIGEgbmV3IG9uZS4KKyAgLy8gTm90
ZSB0aGF0IHdlIGNhbid0IHJlYWxsb2NhdGUgb3RoZXIgYnVmZmVycyBhdCB0aGlzIHBvaW50LCBz
aW5jZSB0aGUgY2FsbGVyCisgIC8vIG1heSBzdGlsbCBiZSByZWFkaW5nIGZyb20gdGhlbS4KKyAg
aWYgKCFxdWV1ZV8uY3VycmVudF9mcmFtZSgpKSB7CisgICAgcXVldWVfLlJlcGxhY2VDdXJyZW50
RnJhbWUoCisgICAgICAgIFNoYXJlZERlc2t0b3BGcmFtZTo6V3JhcChzdGQ6OnVuaXF1ZV9wdHI8
RGVza3RvcEZyYW1lPigKKyAgICAgICAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZSh4X3NlcnZl
cl9waXhlbF9idWZmZXJfLndpbmRvd19zaXplKCkpKSkpOworICB9CisKKyAgc3RkOjp1bmlxdWVf
cHRyPERlc2t0b3BGcmFtZT4gcmVzdWx0ID0gQ2FwdHVyZVNjcmVlbigpOworICBpZiAoIXJlc3Vs
dCkgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlRlbXBvcmFyaWx5IGZhaWxlZCB0byBj
YXB0dXJlIHNjcmVlbi4iOworICAgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6
RVJST1JfVEVNUE9SQVJZLCBudWxscHRyKTsKKyAgICByZXR1cm47CisgIH0KKworICBsYXN0X2lu
dmFsaWRfcmVnaW9uXyA9IHJlc3VsdC0+dXBkYXRlZF9yZWdpb24oKTsKKyAgcmVzdWx0LT5zZXRf
Y2FwdHVyZV90aW1lX21zKChydGM6OlRpbWVOYW5vcygpIC0gY2FwdHVyZV9zdGFydF90aW1lX25h
bm9zKSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OmtOdW1OYW5vc2Vjc1Bl
ck1pbGxpc2VjKTsKKyAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpTVUNDRVNT
LCBzdGQ6Om1vdmUocmVzdWx0KSk7Cit9CisKK2Jvb2wgU2NyZWVuQ2FwdHVyZXJYMTE6OkdldFNv
dXJjZUxpc3QoU291cmNlTGlzdCogc291cmNlcykgeworICBSVENfRENIRUNLKHNvdXJjZXMtPnNp
emUoKSA9PSAwKTsKKyAgLy8gVE9ETyhqaWF5bCk6IGltcGxlbWVudCBzY3JlZW4gZW51bWVyYXRp
b24uCisgIHNvdXJjZXMtPnB1c2hfYmFjayh7MH0pOworICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBTY3JlZW5DYXB0dXJlclgxMTo6U2VsZWN0U291cmNlKFNvdXJjZUlkIGlkKSB7CisgIC8vIFRP
RE8oamlheWwpOiBpbXBsZW1lbnQgc2NyZWVuIHNlbGVjdGlvbi4KKyAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgU2NyZWVuQ2FwdHVyZXJYMTE6OkhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2
ZW50KSB7CisgIGlmICh1c2VfZGFtYWdlXyAmJiAoZXZlbnQudHlwZSA9PSBkYW1hZ2VfZXZlbnRf
YmFzZV8gKyBYRGFtYWdlTm90aWZ5KSkgeworICAgIGNvbnN0IFhEYW1hZ2VOb3RpZnlFdmVudCog
ZGFtYWdlX2V2ZW50ID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBYRGFtYWdlTm90
aWZ5RXZlbnQqPigmZXZlbnQpOworICAgIGlmIChkYW1hZ2VfZXZlbnQtPmRhbWFnZSAhPSBkYW1h
Z2VfaGFuZGxlXykKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICBSVENfRENIRUNLKGRhbWFnZV9l
dmVudC0+bGV2ZWwgPT0gWERhbWFnZVJlcG9ydE5vbkVtcHR5KTsKKyAgICByZXR1cm4gdHJ1ZTsK
KyAgfSBlbHNlIGlmIChldmVudC50eXBlID09IENvbmZpZ3VyZU5vdGlmeSkgeworICAgIFNjcmVl
bkNvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgcmV0dXJu
IGZhbHNlOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBTY3JlZW5DYXB0dXJl
clgxMTo6Q2FwdHVyZVNjcmVlbigpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZERlc2t0b3BG
cmFtZT4gZnJhbWUgPSBxdWV1ZV8uY3VycmVudF9mcmFtZSgpLT5TaGFyZSgpOworICBSVENfRENI
RUNLKHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8ud2luZG93X3NpemUoKS5lcXVhbHMoZnJhbWUtPnNp
emUoKSkpOworCisgIC8vIFBhc3MgdGhlIHNjcmVlbiBzaXplIHRvIHRoZSBoZWxwZXIsIHNvIGl0
IGNhbiBjbGlwIHRoZSBpbnZhbGlkIHJlZ2lvbiBpZiBpdAorICAvLyBleHBhbmRzIHRoYXQgcmVn
aW9uIHRvIGEgZ3JpZC4KKyAgaGVscGVyXy5zZXRfc2l6ZV9tb3N0X3JlY2VudChmcmFtZS0+c2l6
ZSgpKTsKKworICAvLyBJbiB0aGUgREFNQUdFIGNhc2UsIGVuc3VyZSB0aGUgZnJhbWUgaXMgdXAt
dG8tZGF0ZSB3aXRoIHRoZSBwcmV2aW91cyBmcmFtZQorICAvLyBpZiBhbnkuICBJZiB0aGVyZSBp
c24ndCBhIHByZXZpb3VzIGZyYW1lLCB0aGF0IG1lYW5zIGEgc2NyZWVuLXJlc29sdXRpb24KKyAg
Ly8gY2hhbmdlIG9jY3VycmVkLCBhbmQgfGludmFsaWRfcmVjdHN8IHdpbGwgYmUgdXBkYXRlZCB0
byBpbmNsdWRlIHRoZSB3aG9sZQorICAvLyBzY3JlZW4uCisgIGlmICh1c2VfZGFtYWdlXyAmJiBx
dWV1ZV8ucHJldmlvdXNfZnJhbWUoKSkKKyAgICBTeW5jaHJvbml6ZUZyYW1lKCk7CisKKyAgRGVz
a3RvcFJlZ2lvbiogdXBkYXRlZF9yZWdpb24gPSBmcmFtZS0+bXV0YWJsZV91cGRhdGVkX3JlZ2lv
bigpOworCisgIHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uU3luY2hyb25pemUoKTsKKyAgaWYgKHVz
ZV9kYW1hZ2VfICYmIHF1ZXVlXy5wcmV2aW91c19mcmFtZSgpKSB7CisgICAgLy8gQXRvbWljYWxs
eSBmZXRjaCBhbmQgY2xlYXIgdGhlIGRhbWFnZSByZWdpb24uCisgICAgWERhbWFnZVN1YnRyYWN0
KGRpc3BsYXkoKSwgZGFtYWdlX2hhbmRsZV8sIE5vbmUsIGRhbWFnZV9yZWdpb25fKTsKKyAgICBp
bnQgcmVjdHNfbnVtID0gMDsKKyAgICBYUmVjdGFuZ2xlIGJvdW5kczsKKyAgICBYUmVjdGFuZ2xl
KiByZWN0cyA9IFhGaXhlc0ZldGNoUmVnaW9uQW5kQm91bmRzKGRpc3BsYXkoKSwgZGFtYWdlX3Jl
Z2lvbl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmcmVjdHNfbnVtLCAmYm91bmRzKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3RzX251
bTsgKytpKSB7CisgICAgICB1cGRhdGVkX3JlZ2lvbi0+QWRkUmVjdChEZXNrdG9wUmVjdDo6TWFr
ZVhZV0goCisgICAgICAgICAgcmVjdHNbaV0ueCwgcmVjdHNbaV0ueSwgcmVjdHNbaV0ud2lkdGgs
IHJlY3RzW2ldLmhlaWdodCkpOworICAgIH0KKyAgICBYRnJlZShyZWN0cyk7CisgICAgaGVscGVy
Xy5JbnZhbGlkYXRlUmVnaW9uKCp1cGRhdGVkX3JlZ2lvbik7CisKKyAgICAvLyBDYXB0dXJlIHRo
ZSBkYW1hZ2VkIHBvcnRpb25zIG9mIHRoZSBkZXNrdG9wLgorICAgIGhlbHBlcl8uVGFrZUludmFs
aWRSZWdpb24odXBkYXRlZF9yZWdpb24pOworCisgICAgLy8gQ2xpcCB0aGUgZGFtYWdlZCBwb3J0
aW9ucyB0byB0aGUgY3VycmVudCBzY3JlZW4gc2l6ZSwganVzdCBpbiBjYXNlIHNvbWUKKyAgICAv
LyBzcHVyaW91cyBYRGFtYWdlIG5vdGlmaWNhdGlvbnMgd2VyZSByZWNlaXZlZCBmb3IgYSBwcmV2
aW91cyAobGFyZ2VyKQorICAgIC8vIHNjcmVlbiBzaXplLgorICAgIHVwZGF0ZWRfcmVnaW9uLT5J
bnRlcnNlY3RXaXRoKAorICAgICAgICBEZXNrdG9wUmVjdDo6TWFrZVNpemUoeF9zZXJ2ZXJfcGl4
ZWxfYnVmZmVyXy53aW5kb3dfc2l6ZSgpKSk7CisKKyAgICBmb3IgKERlc2t0b3BSZWdpb246Okl0
ZXJhdG9yIGl0KCp1cGRhdGVkX3JlZ2lvbik7ICFpdC5Jc0F0RW5kKCk7CisgICAgICAgICBpdC5B
ZHZhbmNlKCkpIHsKKyAgICAgIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5DYXB0dXJlUmVj
dChpdC5yZWN0KCksIGZyYW1lLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorICB9IGVsc2UgeworICAgIC8vIERvaW5nIGZ1bGwtc2NyZWVuIHBvbGxpbmcsIG9yIHRoaXMg
aXMgdGhlIGZpcnN0IGNhcHR1cmUgYWZ0ZXIgYQorICAgIC8vIHNjcmVlbi1yZXNvbHV0aW9uIGNo
YW5nZS4gIEluIGVpdGhlciBjYXNlLCBuZWVkIGEgZnVsbC1zY3JlZW4gY2FwdHVyZS4KKyAgICBE
ZXNrdG9wUmVjdCBzY3JlZW5fcmVjdCA9IERlc2t0b3BSZWN0OjpNYWtlU2l6ZShmcmFtZS0+c2l6
ZSgpKTsKKyAgICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uQ2FwdHVyZVJlY3Qoc2NyZWVu
X3JlY3QsIGZyYW1lLmdldCgpKSkKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIHVwZGF0ZWRf
cmVnaW9uLT5TZXRSZWN0KHNjcmVlbl9yZWN0KTsKKyAgfQorCisgIHJldHVybiBzdGQ6Om1vdmUo
ZnJhbWUpOworfQorCit2b2lkIFNjcmVlbkNhcHR1cmVyWDExOjpTY3JlZW5Db25maWd1cmF0aW9u
Q2hhbmdlZCgpIHsKKyAgVFJBQ0VfRVZFTlQwKCJ3ZWJydGMiLCAiU2NyZWVuQ2FwdHVyZXJYMTE6
OlNjcmVlbkNvbmZpZ3VyYXRpb25DaGFuZ2VkIik7CisgIC8vIE1ha2Ugc3VyZSB0aGUgZnJhbWUg
YnVmZmVycyB3aWxsIGJlIHJlYWxsb2NhdGVkLgorICBxdWV1ZV8uUmVzZXQoKTsKKworICBoZWxw
ZXJfLkNsZWFySW52YWxpZFJlZ2lvbigpOworICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8u
SW5pdChkaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KGRpc3BsYXkoKSkpKSB7CisgICAgUlRD
X0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBpbml0aWFsaXplIHBpeGVsIGJ1ZmZlciBhZnRl
ciBzY3JlZW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICJjb25maWd1cmF0aW9uIGNoYW5n
ZS4iOworICB9Cit9CisKK3ZvaWQgU2NyZWVuQ2FwdHVyZXJYMTE6OlN5bmNocm9uaXplRnJhbWUo
KSB7CisgIC8vIFN5bmNocm9uaXplIHRoZSBjdXJyZW50IGJ1ZmZlciB3aXRoIHRoZSBwcmV2aW91
cyBvbmUgc2luY2Ugd2UgZG8gbm90CisgIC8vIGNhcHR1cmUgdGhlIGVudGlyZSBkZXNrdG9wLiBO
b3RlIHRoYXQgZW5jb2RlciBtYXkgYmUgcmVhZGluZyBmcm9tIHRoZQorICAvLyBwcmV2aW91cyBi
dWZmZXIgYXQgdGhpcyB0aW1lIHNvIHRocmVhZCBhY2Nlc3MgY29tcGxhaW50cyBhcmUgZmFsc2UK
KyAgLy8gcG9zaXRpdmVzLgorCisgIC8vIFRPRE8oaGNsYW0pOiBXZSBjYW4gcmVkdWNlIHRoZSBh
bW91bnQgb2YgY29weWluZyBoZXJlIGJ5IHN1YnRyYWN0aW5nCisgIC8vIHxjYXB0dXJlcl9oZWxw
ZXJffHMgcmVnaW9uIGZyb20gfGxhc3RfaW52YWxpZF9yZWdpb25ffC4KKyAgLy8gaHR0cDovL2Ny
YnVnLmNvbS85MjM1NAorICBSVENfRENIRUNLKHF1ZXVlXy5wcmV2aW91c19mcmFtZSgpKTsKKwor
ICBEZXNrdG9wRnJhbWUqIGN1cnJlbnQgPSBxdWV1ZV8uY3VycmVudF9mcmFtZSgpOworICBEZXNr
dG9wRnJhbWUqIGxhc3QgPSBxdWV1ZV8ucHJldmlvdXNfZnJhbWUoKTsKKyAgUlRDX0RDSEVDSyhj
dXJyZW50ICE9IGxhc3QpOworICBmb3IgKERlc2t0b3BSZWdpb246Okl0ZXJhdG9yIGl0KGxhc3Rf
aW52YWxpZF9yZWdpb25fKTsgIWl0LklzQXRFbmQoKTsKKyAgICAgICBpdC5BZHZhbmNlKCkpIHsK
KyAgICBjdXJyZW50LT5Db3B5UGl4ZWxzRnJvbSgqbGFzdCwgaXQucmVjdCgpLnRvcF9sZWZ0KCks
IGl0LnJlY3QoKSk7CisgIH0KK30KKwordm9pZCBTY3JlZW5DYXB0dXJlclgxMTo6RGVpbml0WGxp
YigpIHsKKyAgaWYgKGdjXykgeworICAgIFhGcmVlR0MoZGlzcGxheSgpLCBnY18pOworICAgIGdj
XyA9IG51bGxwdHI7CisgIH0KKworICB4X3NlcnZlcl9waXhlbF9idWZmZXJfLlJlbGVhc2UoKTsK
KworICBpZiAoZGlzcGxheSgpKSB7CisgICAgaWYgKGRhbWFnZV9oYW5kbGVfKSB7CisgICAgICBY
RGFtYWdlRGVzdHJveShkaXNwbGF5KCksIGRhbWFnZV9oYW5kbGVfKTsKKyAgICAgIGRhbWFnZV9o
YW5kbGVfID0gMDsKKyAgICB9CisKKyAgICBpZiAoZGFtYWdlX3JlZ2lvbl8pIHsKKyAgICAgIFhG
aXhlc0Rlc3Ryb3lSZWdpb24oZGlzcGxheSgpLCBkYW1hZ2VfcmVnaW9uXyk7CisgICAgICBkYW1h
Z2VfcmVnaW9uXyA9IDA7CisgICAgfQorICB9Cit9CisKKy8vIHN0YXRpYworc3RkOjp1bmlxdWVf
cHRyPERlc2t0b3BDYXB0dXJlcj4gU2NyZWVuQ2FwdHVyZXJYMTE6OkNyZWF0ZVJhd1NjcmVlbkNh
cHR1cmVyKAorICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgeworICBp
ZiAoIW9wdGlvbnMueF9kaXNwbGF5KCkpCisgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgc3RkOjp1
bmlxdWVfcHRyPFNjcmVlbkNhcHR1cmVyWDExPiBjYXB0dXJlcihuZXcgU2NyZWVuQ2FwdHVyZXJY
MTEoKSk7CisgIGlmICghY2FwdHVyZXIuZ2V0KCktPkluaXQob3B0aW9ucykpIHsKKyAgICByZXR1
cm4gbnVsbHB0cjsKKyAgfQorCisgIHJldHVybiBzdGQ6Om1vdmUoY2FwdHVyZXIpOworfQorCit9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5f
Y2FwdHVyZXJfeDExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfeDExLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWYzYjYwYzNkODdlNWIxN2RkNTk0OTc3Nzg1MWZiOWNjNDliOThlMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl94MTEuaApAQCAtMCww
ICsxLDEyMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1Bf
Q0FQVFVSRV9MSU5VWF9TQ1JFRU5fQ0FQVFVSRVJfWDExX0hfCisjZGVmaW5lIE1PRFVMRVNfREVT
S1RPUF9DQVBUVVJFX0xJTlVYX1NDUkVFTl9DQVBUVVJFUl9YMTFfSF8KKworI2luY2x1ZGUgPFgx
MS9YbGliLmg+CisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgorCisjaW5jbHVk
ZSA8bWVtb3J5PgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVk
ZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9jYXB0dXJlX2ZyYW1lX3F1
ZXVlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVy
X2hlbHBlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NoYXJlZF9kZXNr
dG9wX2ZyYW1lLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorCitu
YW1lc3BhY2Ugd2VicnRjIHsKKworLy8gQSBjbGFzcyB0byBwZXJmb3JtIHZpZGVvIGZyYW1lIGNh
cHR1cmluZyBmb3IgTGludXggb24gWDExLgorLy8KKy8vIElmIFhEYW1hZ2UgaXMgdXNlZCwgdGhp
cyBjbGFzcyBzZXRzIERlc2t0b3BGcmFtZTo6dXBkYXRlZF9yZWdpb24oKSBhY2NvcmRpbmcKKy8v
IHRvIHRoZSBhcmVhcyByZXBvcnRlZCBieSBYRGFtYWdlLiBPdGhlcndpc2UgdGhpcyBjbGFzcyBk
b2VzIG5vdCBkZXRlY3QKKy8vIERlc2t0b3BGcmFtZTo6dXBkYXRlZF9yZWdpb24oKSwgdGhlIGZp
ZWxkIGlzIGFsd2F5cyBzZXQgdG8gdGhlIGVudGlyZSBmcmFtZQorLy8gcmVjdGFuZ2xlLiBTY3Jl
ZW5DYXB0dXJlckRpZmZlcldyYXBwZXIgc2hvdWxkIGJlIHVzZWQgaWYgdGhhdCBmdW5jdGlvbmFs
aXR5CisvLyBpcyBuZWNlc3NhcnkuCitjbGFzcyBTY3JlZW5DYXB0dXJlclgxMSA6IHB1YmxpYyBE
ZXNrdG9wQ2FwdHVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTaGFyZWRY
RGlzcGxheTo6WEV2ZW50SGFuZGxlciB7CisgcHVibGljOgorICBTY3JlZW5DYXB0dXJlclgxMSgp
OworICB+U2NyZWVuQ2FwdHVyZXJYMTEoKSBvdmVycmlkZTsKKworICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPERlc2t0b3BDYXB0dXJlcj4gQ3JlYXRlUmF3U2NyZWVuQ2FwdHVyZXIoCisgICAgICBj
b25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpOworCisgIC8vIFRPRE8oYWp3b25n
KTogRG8gd2UgcmVhbGx5IHdhbnQgdGhpcyB0byBiZSBzeW5jaHJvbm91cz8KKyAgYm9vbCBJbml0
KGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7CisKKyAgLy8gRGVza3RvcENh
cHR1cmVyIGludGVyZmFjZS4KKyAgdm9pZCBTdGFydChDYWxsYmFjayogZGVsZWdhdGUpIG92ZXJy
aWRlOworICB2b2lkIENhcHR1cmVGcmFtZSgpIG92ZXJyaWRlOworICBib29sIEdldFNvdXJjZUxp
c3QoU291cmNlTGlzdCogc291cmNlcykgb3ZlcnJpZGU7CisgIGJvb2wgU2VsZWN0U291cmNlKFNv
dXJjZUlkIGlkKSBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIERpc3BsYXkqIGRpc3BsYXkoKSB7
IHJldHVybiBvcHRpb25zXy54X2Rpc3BsYXkoKS0+ZGlzcGxheSgpOyB9CisKKyAgLy8gU2hhcmVk
WERpc3BsYXk6OlhFdmVudEhhbmRsZXIgaW50ZXJmYWNlLgorICBib29sIEhhbmRsZVhFdmVudChj
b25zdCBYRXZlbnQmIGV2ZW50KSBvdmVycmlkZTsKKworICB2b2lkIEluaXRYRGFtYWdlKCk7CisK
KyAgLy8gQ2FwdHVyZSBzY3JlZW4gcGl4ZWxzIHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBpbiB0aGUg
cXVldWUuIEluIHRoZSBEQU1BR0UKKyAgLy8gY2FzZSwgdGhlIFNjcmVlbkNhcHR1cmVySGVscGVy
IGFscmVhZHkgaG9sZHMgdGhlIGxpc3Qgb2YgaW52YWxpZCByZWN0YW5nbGVzCisgIC8vIGZyb20g
SGFuZGxlWEV2ZW50KCkuIEluIHRoZSBub24tREFNQUdFIGNhc2UsIHRoaXMgY2FwdHVyZXMgdGhl
CisgIC8vIHdob2xlIHNjcmVlbiwgdGhlbiBjYWxjdWxhdGVzIHNvbWUgaW52YWxpZCByZWN0YW5n
bGVzIHRoYXQgaW5jbHVkZSBhbnkKKyAgLy8gZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGFuZCB0
aGUgcHJldmlvdXMgY2FwdHVyZS4KKyAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gQ2Fw
dHVyZVNjcmVlbigpOworCisgIC8vIENhbGxlZCB3aGVuIHRoZSBzY3JlZW4gY29uZmlndXJhdGlv
biBpcyBjaGFuZ2VkLgorICB2b2lkIFNjcmVlbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7CisKKyAg
Ly8gU3luY2hyb25pemUgdGhlIGN1cnJlbnQgYnVmZmVyIHdpdGggfGxhc3RfYnVmZmVyX3wsIGJ5
IGNvcHlpbmcgcGl4ZWxzIGZyb20KKyAgLy8gdGhlIGFyZWEgb2YgfGxhc3RfaW52YWxpZF9yZWN0
c3wuCisgIC8vIE5vdGUgdGhpcyBvbmx5IHdvcmtzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQga051
bUJ1ZmZlcnMgPT0gMiwgYXMKKyAgLy8gfGxhc3RfaW52YWxpZF9yZWN0c3wgaG9sZHMgdGhlIGRp
ZmZlcmVuY2VzIGZyb20gdGhlIHByZXZpb3VzIGJ1ZmZlciBhbmQKKyAgLy8gdGhlIG9uZSBwcmlv
ciB0byB0aGF0ICh3aGljaCB3aWxsIHRoZW4gYmUgdGhlIGN1cnJlbnQgYnVmZmVyKS4KKyAgdm9p
ZCBTeW5jaHJvbml6ZUZyYW1lKCk7CisKKyAgdm9pZCBEZWluaXRYbGliKCk7CisKKyAgRGVza3Rv
cENhcHR1cmVPcHRpb25zIG9wdGlvbnNfOworCisgIENhbGxiYWNrKiBjYWxsYmFja18gPSBudWxs
cHRyOworCisgIC8vIFgxMSBncmFwaGljcyBjb250ZXh0LgorICBHQyBnY18gPSBudWxscHRyOwor
ICBXaW5kb3cgcm9vdF93aW5kb3dfID0gQmFkVmFsdWU7CisKKyAgLy8gWEZpeGVzLgorICBib29s
IGhhc194Zml4ZXNfID0gZmFsc2U7CisgIGludCB4Zml4ZXNfZXZlbnRfYmFzZV8gPSAtMTsKKyAg
aW50IHhmaXhlc19lcnJvcl9iYXNlXyA9IC0xOworCisgIC8vIFhEYW1hZ2UgaW5mb3JtYXRpb24u
CisgIGJvb2wgdXNlX2RhbWFnZV8gPSBmYWxzZTsKKyAgRGFtYWdlIGRhbWFnZV9oYW5kbGVfID0g
MDsKKyAgaW50IGRhbWFnZV9ldmVudF9iYXNlXyA9IC0xOworICBpbnQgZGFtYWdlX2Vycm9yX2Jh
c2VfID0gLTE7CisgIFhzZXJ2ZXJSZWdpb24gZGFtYWdlX3JlZ2lvbl8gPSAwOworCisgIC8vIEFj
Y2VzcyB0byB0aGUgWCBTZXJ2ZXIncyBwaXhlbCBidWZmZXIuCisgIFhTZXJ2ZXJQaXhlbEJ1ZmZl
ciB4X3NlcnZlcl9waXhlbF9idWZmZXJfOworCisgIC8vIEEgdGhyZWFkLXNhZmUgbGlzdCBvZiBp
bnZhbGlkIHJlY3RhbmdsZXMsIGFuZCB0aGUgc2l6ZSBvZiB0aGUgbW9zdAorICAvLyByZWNlbnRs
eSBjYXB0dXJlZCBzY3JlZW4uCisgIFNjcmVlbkNhcHR1cmVySGVscGVyIGhlbHBlcl87CisKKyAg
Ly8gUXVldWUgb2YgdGhlIGZyYW1lcyBidWZmZXJzLgorICBTY3JlZW5DYXB0dXJlRnJhbWVRdWV1
ZTxTaGFyZWREZXNrdG9wRnJhbWU+IHF1ZXVlXzsKKworICAvLyBJbnZhbGlkIHJlZ2lvbiBmcm9t
IHRoZSBwcmV2aW91cyBjYXB0dXJlLiBUaGlzIGlzIHVzZWQgdG8gc3luY2hyb25pemUgdGhlCisg
IC8vIGN1cnJlbnQgd2l0aCB0aGUgbGFzdCBidWZmZXIgdXNlZC4KKyAgRGVza3RvcFJlZ2lvbiBs
YXN0X2ludmFsaWRfcmVnaW9uXzsKKworICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNj
cmVlbkNhcHR1cmVyWDExKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlm
ICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9TQ1JFRU5fQ0FQVFVSRVJfWDExX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zaGFyZWRfeF9kaXNwbGF5LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvbGludXgvc2hhcmVkX3hfZGlzcGxheS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDc1ZGI2ZTc4NzU5YjUz
YWJiZWU5NzdmMDliNjBlNDA1NmFjMDU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgvc2hhcmVkX3hfZGlzcGxheS5jYwpAQCAtMCwwICsxLDg5IEBACisvKgorICogIENvcHlyaWdo
dCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJlZF94
X2Rpc3BsYXkuaCIKKworI2luY2x1ZGUgPFgxMS9YbGliLmg+CisKKyNpbmNsdWRlIDxhbGdvcml0
aG0+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitTaGFyZWRYRGlzcGxheTo6U2hhcmVk
WERpc3BsYXkoRGlzcGxheSogZGlzcGxheSkgOiBkaXNwbGF5XyhkaXNwbGF5KSB7CisgIFJUQ19E
Q0hFQ0soZGlzcGxheV8pOworfQorCitTaGFyZWRYRGlzcGxheTo6flNoYXJlZFhEaXNwbGF5KCkg
eworICBSVENfRENIRUNLKGV2ZW50X2hhbmRsZXJzXy5lbXB0eSgpKTsKKyAgWENsb3NlRGlzcGxh
eShkaXNwbGF5Xyk7Cit9CisKKy8vIHN0YXRpYworcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhE
aXNwbGF5PiBTaGFyZWRYRGlzcGxheTo6Q3JlYXRlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBk
aXNwbGF5X25hbWUpIHsKKyAgRGlzcGxheSogZGlzcGxheSA9CisgICAgICBYT3BlbkRpc3BsYXko
ZGlzcGxheV9uYW1lLmVtcHR5KCkgPyBOVUxMIDogZGlzcGxheV9uYW1lLmNfc3RyKCkpOworICBp
ZiAoIWRpc3BsYXkpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVW5hYmxlIHRvIG9wZW4g
ZGlzcGxheSI7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKyAgcmV0dXJuIG5ldyBTaGFyZWRYRGlz
cGxheShkaXNwbGF5KTsKK30KKworLy8gc3RhdGljCitydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVk
WERpc3BsYXk+IFNoYXJlZFhEaXNwbGF5OjpDcmVhdGVEZWZhdWx0KCkgeworICByZXR1cm4gQ3Jl
YXRlKHN0ZDo6c3RyaW5nKCkpOworfQorCit2b2lkIFNoYXJlZFhEaXNwbGF5OjpBZGRFdmVudEhh
bmRsZXIoaW50IHR5cGUsIFhFdmVudEhhbmRsZXIqIGhhbmRsZXIpIHsKKyAgZXZlbnRfaGFuZGxl
cnNfW3R5cGVdLnB1c2hfYmFjayhoYW5kbGVyKTsKK30KKwordm9pZCBTaGFyZWRYRGlzcGxheTo6
UmVtb3ZlRXZlbnRIYW5kbGVyKGludCB0eXBlLCBYRXZlbnRIYW5kbGVyKiBoYW5kbGVyKSB7Cisg
IEV2ZW50SGFuZGxlcnNNYXA6Oml0ZXJhdG9yIGhhbmRsZXJzID0gZXZlbnRfaGFuZGxlcnNfLmZp
bmQodHlwZSk7CisgIGlmIChoYW5kbGVycyA9PSBldmVudF9oYW5kbGVyc18uZW5kKCkpCisgICAg
cmV0dXJuOworCisgIHN0ZDo6dmVjdG9yPFhFdmVudEhhbmRsZXIqPjo6aXRlcmF0b3IgbmV3X2Vu
ZCA9CisgICAgICBzdGQ6OnJlbW92ZShoYW5kbGVycy0+c2Vjb25kLmJlZ2luKCksIGhhbmRsZXJz
LT5zZWNvbmQuZW5kKCksIGhhbmRsZXIpOworICBoYW5kbGVycy0+c2Vjb25kLmVyYXNlKG5ld19l
bmQsIGhhbmRsZXJzLT5zZWNvbmQuZW5kKCkpOworCisgIC8vIENoZWNrIGlmIG5vIGhhbmRsZXJz
IGxlZnQgZm9yIHRoaXMgZXZlbnQuCisgIGlmIChoYW5kbGVycy0+c2Vjb25kLmVtcHR5KCkpCisg
ICAgZXZlbnRfaGFuZGxlcnNfLmVyYXNlKGhhbmRsZXJzKTsKK30KKwordm9pZCBTaGFyZWRYRGlz
cGxheTo6UHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCkgeworICAvLyBIb2xkIHJlZmVyZW5jZSB0byB8
dGhpc3wgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nIGRlc3Ryb3llZCB3aGlsZQorICAvLyBwcm9j
ZXNzaW5nIGV2ZW50cy4KKyAgcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiBzZWxm
KHRoaXMpOworCisgIC8vIEZpbmQgdGhlIG51bWJlciBvZiBldmVudHMgdGhhdCBhcmUgb3V0c3Rh
bmRpbmcgIm5vdy4iICBXZSBkb24ndCBqdXN0IGxvb3AKKyAgLy8gb24gWFBlbmRpbmcgYmVjYXVz
ZSB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGlzIHRlcm1pbmF0ZXMuCisgIGludCBldmVudHNfdG9f
cHJvY2VzcyA9IFhQZW5kaW5nKGRpc3BsYXkoKSk7CisgIFhFdmVudCBlOworCisgIGZvciAoaW50
IGkgPSAwOyBpIDwgZXZlbnRzX3RvX3Byb2Nlc3M7IGkrKykgeworICAgIFhOZXh0RXZlbnQoZGlz
cGxheSgpLCAmZSk7CisgICAgRXZlbnRIYW5kbGVyc01hcDo6aXRlcmF0b3IgaGFuZGxlcnMgPSBl
dmVudF9oYW5kbGVyc18uZmluZChlLnR5cGUpOworICAgIGlmIChoYW5kbGVycyA9PSBldmVudF9o
YW5kbGVyc18uZW5kKCkpCisgICAgICBjb250aW51ZTsKKyAgICBmb3IgKHN0ZDo6dmVjdG9yPFhF
dmVudEhhbmRsZXIqPjo6aXRlcmF0b3IgaXQgPSBoYW5kbGVycy0+c2Vjb25kLmJlZ2luKCk7Cisg
ICAgICAgICBpdCAhPSBoYW5kbGVycy0+c2Vjb25kLmVuZCgpOyArK2l0KSB7CisgICAgICBpZiAo
KCppdCktPkhhbmRsZVhFdmVudChlKSkKKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9Cit9CisK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJl
ZF94X2Rpc3BsYXkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJlZF94X2Rpc3BsYXkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMTRmNDFmYWI4YTNiNzMyNDE3Nzc0MDViMWFjNDc2MTg4ZWExNzIyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxheS5oCkBAIC0wLDAgKzEsODEg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBU
VVJFX0xJTlVYX1NIQVJFRF9YX0RJU1BMQVlfSF8KKyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NB
UFRVUkVfTElOVVhfU0hBUkVEX1hfRElTUExBWV9IXworCisjaW5jbHVkZSA8bWFwPgorI2luY2x1
ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUgImFwaS9yZWZjb3Vu
dGVkYmFzZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgorCisvLyBJbmNsdWRpbmcgWGxpYi5oIHdp
bGwgaW52b2x2ZSBldmlsIGRlZmluZXMgKEJvb2wsIFN0YXR1cywgVHJ1ZSwgRmFsc2UpLCB3aGlj
aAorLy8gZWFzaWx5IGNvbmZsaWN0IHdpdGggb3RoZXIgaGVhZGVycy4KK3R5cGVkZWYgc3RydWN0
IF9YRGlzcGxheSBEaXNwbGF5OwordHlwZWRlZiB1bmlvbiBfWEV2ZW50IFhFdmVudDsKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEEgcmVmLWNvdW50ZWQgb2JqZWN0IHRvIHN0b3JlIFhEaXNw
bGF5IGNvbm5lY3Rpb24uCitjbGFzcyBTaGFyZWRYRGlzcGxheSA6IHB1YmxpYyBydGM6OlJlZkNv
dW50ZWRCYXNlIHsKKyBwdWJsaWM6CisgIGNsYXNzIFhFdmVudEhhbmRsZXIgeworICAgcHVibGlj
OgorICAgIHZpcnR1YWwgflhFdmVudEhhbmRsZXIoKSB7fQorCisgICAgLy8gUHJvY2Vzc2VzIFhF
dmVudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBldmVudCBoYXMgYmVlbiBoYW5kbGVkLgorICAgIHZp
cnR1YWwgYm9vbCBIYW5kbGVYRXZlbnQoY29uc3QgWEV2ZW50JiBldmVudCkgPSAwOworICB9Owor
CisgIC8vIFRha2VzIG93bmVyc2hpcCBvZiB8ZGlzcGxheXwuCisgIGV4cGxpY2l0IFNoYXJlZFhE
aXNwbGF5KERpc3BsYXkqIGRpc3BsYXkpOworCisgIC8vIENyZWF0ZXMgYSBuZXcgWDExIERpc3Bs
YXkgZm9yIHRoZSB8ZGlzcGxheV9uYW1lfC4gTlVMTCBpcyByZXR1cm5lZCBpZiBYMTEKKyAgLy8g
Y29ubmVjdGlvbiBmYWlsZWQuIEVxdWl2YWxlbnQgdG8gQ3JlYXRlRGVmYXVsdCgpIHdoZW4gfGRp
c3BsYXlfbmFtZXwgaXMKKyAgLy8gZW1wdHkuCisgIHN0YXRpYyBydGM6OnNjb3BlZF9yZWZwdHI8
U2hhcmVkWERpc3BsYXk+IENyZWF0ZSgKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXNwbGF5
X25hbWUpOworCisgIC8vIENyZWF0ZXMgWDExIERpc3BsYXkgY29ubmVjdGlvbiBmb3IgdGhlIGRl
ZmF1bHQgZGlzcGxheSAoZS5nLiBzcGVjaWZpZWQgaW4KKyAgLy8gRElTUExBWSkuIE5VTEwgaXMg
cmV0dXJuZWQgaWYgWDExIGNvbm5lY3Rpb24gZmFpbGVkLgorICBzdGF0aWMgcnRjOjpzY29wZWRf
cmVmcHRyPFNoYXJlZFhEaXNwbGF5PiBDcmVhdGVEZWZhdWx0KCk7CisKKyAgRGlzcGxheSogZGlz
cGxheSgpIHsgcmV0dXJuIGRpc3BsYXlfOyB9CisKKyAgLy8gQWRkcyBhIG5ldyBldmVudCB8aGFu
ZGxlcnwgZm9yIFhFdmVudCdzIG9mIHx0eXBlfC4KKyAgdm9pZCBBZGRFdmVudEhhbmRsZXIoaW50
IHR5cGUsIFhFdmVudEhhbmRsZXIqIGhhbmRsZXIpOworCisgIC8vIFJlbW92ZXMgZXZlbnQgfGhh
bmRsZXJ8IGFkZGVkIHVzaW5nIHxBZGRFdmVudEhhbmRsZXJ8LiBEb2Vzbid0IGRvIGFueXRoaW5n
CisgIC8vIGlmIHxoYW5kbGVyfCBpcyBub3QgcmVnaXN0ZXJlZC4KKyAgdm9pZCBSZW1vdmVFdmVu
dEhhbmRsZXIoaW50IHR5cGUsIFhFdmVudEhhbmRsZXIqIGhhbmRsZXIpOworCisgIC8vIFByb2Nl
c3NlcyBwZW5kaW5nIFhFdmVudHMsIGNhbGxpbmcgY29ycmVzcG9uZGluZyBldmVudCBoYW5kbGVy
cy4KKyAgdm9pZCBQcm9jZXNzUGVuZGluZ1hFdmVudHMoKTsKKworIHByb3RlY3RlZDoKKyAgflNo
YXJlZFhEaXNwbGF5KCkgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorICB0eXBlZGVmIHN0ZDo6bWFw
PGludCwgc3RkOjp2ZWN0b3I8WEV2ZW50SGFuZGxlcio+ID4gRXZlbnRIYW5kbGVyc01hcDsKKwor
ICBEaXNwbGF5KiBkaXNwbGF5XzsKKworICBFdmVudEhhbmRsZXJzTWFwIGV2ZW50X2hhbmRsZXJz
XzsKKworICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNoYXJlZFhEaXNwbGF5KTsKK307
CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1Bf
Q0FQVFVSRV9MSU5VWF9TSEFSRURfWF9ESVNQTEFZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9s
aW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3df
Y2FwdHVyZXJfcGlwZXdpcmUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMxOTVhYWY0YTAxNDIzNDA3YzcyN2Ni
NjAyYzU0ZWQ3NmU5ZDllYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRv
d19jYXB0dXJlcl9waXBld2lyZS5jYwpAQCAtMCwwICsxLDMwIEBACisvKgorICogIENvcHlyaWdo
dCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1
cmVyX3BpcGV3aXJlLmgiCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK1dpbmRvd0NhcHR1cmVyUGlw
ZVdpcmU6OldpbmRvd0NhcHR1cmVyUGlwZVdpcmUoKQorICAgIDogQmFzZUNhcHR1cmVyUGlwZVdp
cmUoQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNhcHR1cmVTb3VyY2VUeXBlOjpXaW5kb3cpIHt9CitX
aW5kb3dDYXB0dXJlclBpcGVXaXJlOjp+V2luZG93Q2FwdHVyZXJQaXBlV2lyZSgpIHt9CisKKy8v
IHN0YXRpYworc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0dXJlcj4KK1dpbmRvd0NhcHR1cmVy
UGlwZVdpcmU6OkNyZWF0ZVJhd1dpbmRvd0NhcHR1cmVyKAorICAgIGNvbnN0IERlc2t0b3BDYXB0
dXJlT3B0aW9ucyYgb3B0aW9ucykgeworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8V2luZG93
Q2FwdHVyZXJQaXBlV2lyZT4oKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3BpcGV3aXJlLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjE4NGVmMjk5
OTJkZmNiNzg4NGNlZmUzMmViYTU5MWQ3MTZmNDU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3BpcGV3aXJlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoK
KyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9X
SU5ET1dfQ0FQVFVSRVJfUElQRVdJUkVfSF8KKyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRV
UkVfTElOVVhfV0lORE9XX0NBUFRVUkVSX1BJUEVXSVJFX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+
CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVy
X3BpcGV3aXJlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBXaW5kb3dDYXB0dXJl
clBpcGVXaXJlIDogcHVibGljIEJhc2VDYXB0dXJlclBpcGVXaXJlIHsKKyBwdWJsaWM6CisgIFdp
bmRvd0NhcHR1cmVyUGlwZVdpcmUoKTsKKyAgfldpbmRvd0NhcHR1cmVyUGlwZVdpcmUoKSBvdmVy
cmlkZTsKKworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0dXJlcj4gQ3JlYXRl
UmF3V2luZG93Q2FwdHVyZXIoCisgICAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9w
dGlvbnMpOworCisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oV2luZG93Q2FwdHVyZXJQ
aXBlV2lyZSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9E
VUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfV0lORE9XX0NBUFRVUkVSX1BJUEVXSVJFX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfeDExLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3gxMS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZWY3YzVjYjM4ODJl
ZWJmNGEzMjViMDE2NjRmOTM1ZDU2YjM0MmIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
bGludXgvd2luZG93X2NhcHR1cmVyX3gxMS5jYwpAQCAtMCwwICsxLDI0NCBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93
aW5kb3dfY2FwdHVyZXJfeDExLmgiCisKKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KKyNpbmNsdWRl
IDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRlLmg+CisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMv
WHJlbmRlci5oPgorCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNs
dWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3Rv
cF9mcmFtZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJl
ZF94X2Rpc3BsYXkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93
aW5kb3dfZmluZGVyX3gxMS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L3dpbmRvd19saXN0X3V0aWxzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9y
ZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdHJhY2VfZXZlbnQuaCIKKworbmFtZXNwYWNl
IHdlYnJ0YyB7CisKK1dpbmRvd0NhcHR1cmVyWDExOjpXaW5kb3dDYXB0dXJlclgxMShjb25zdCBE
ZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpCisgICAgOiB4X2Rpc3BsYXlfKG9wdGlvbnMu
eF9kaXNwbGF5KCkpLAorICAgICAgYXRvbV9jYWNoZV8oZGlzcGxheSgpKSwKKyAgICAgIHdpbmRv
d19maW5kZXJfKCZhdG9tX2NhY2hlXykgeworICBpbnQgZXZlbnRfYmFzZSwgZXJyb3JfYmFzZSwg
bWFqb3JfdmVyc2lvbiwgbWlub3JfdmVyc2lvbjsKKyAgaWYgKFhDb21wb3NpdGVRdWVyeUV4dGVu
c2lvbihkaXNwbGF5KCksICZldmVudF9iYXNlLCAmZXJyb3JfYmFzZSkgJiYKKyAgICAgIFhDb21w
b3NpdGVRdWVyeVZlcnNpb24oZGlzcGxheSgpLCAmbWFqb3JfdmVyc2lvbiwgJm1pbm9yX3ZlcnNp
b24pICYmCisgICAgICAvLyBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcCgpIHJlcXVpcmVzIHZl
cnNpb24gMC4yCisgICAgICAobWFqb3JfdmVyc2lvbiA+IDAgfHwgbWlub3JfdmVyc2lvbiA+PSAy
KSkgeworICAgIGhhc19jb21wb3NpdGVfZXh0ZW5zaW9uXyA9IHRydWU7CisgIH0gZWxzZSB7Cisg
ICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiWGNvbXBvc2l0ZSBleHRlbnNpb24gbm90IGF2YWlsYWJs
ZSBvciB0b28gb2xkLiI7CisgIH0KKworICB4X2Rpc3BsYXlfLT5BZGRFdmVudEhhbmRsZXIoQ29u
ZmlndXJlTm90aWZ5LCB0aGlzKTsKK30KKworV2luZG93Q2FwdHVyZXJYMTE6On5XaW5kb3dDYXB0
dXJlclgxMSgpIHsKKyAgeF9kaXNwbGF5Xy0+UmVtb3ZlRXZlbnRIYW5kbGVyKENvbmZpZ3VyZU5v
dGlmeSwgdGhpcyk7Cit9CisKK2Jvb2wgV2luZG93Q2FwdHVyZXJYMTE6OkdldFNvdXJjZUxpc3Qo
U291cmNlTGlzdCogc291cmNlcykgeworICByZXR1cm4gR2V0V2luZG93TGlzdCgmYXRvbV9jYWNo
ZV8sIFt0aGlzLCBzb3VyY2VzXSg6OldpbmRvdyB3aW5kb3cpIHsKKyAgICBTb3VyY2UgdzsKKyAg
ICB3LmlkID0gd2luZG93OworICAgIGlmICh0aGlzLT5HZXRXaW5kb3dUaXRsZSh3aW5kb3csICZ3
LnRpdGxlKSkgeworICAgICAgc291cmNlcy0+cHVzaF9iYWNrKHcpOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKKyAgfSk7Cit9CisKK2Jvb2wgV2luZG93Q2FwdHVyZXJYMTE6OlNlbGVjdFNvdXJj
ZShTb3VyY2VJZCBpZCkgeworICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uSW5pdChkaXNw
bGF5KCksIGlkKSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgLy8gVGVsbCB0aGUgWCBzZXJ2ZXIg
dG8gc2VuZCB1cyB3aW5kb3cgcmVzaXppbmcgZXZlbnRzLgorICBYU2VsZWN0SW5wdXQoZGlzcGxh
eSgpLCBpZCwgU3RydWN0dXJlTm90aWZ5TWFzayk7CisKKyAgc2VsZWN0ZWRfd2luZG93XyA9IGlk
OworCisgIC8vIEluIGFkZGl0aW9uIHRvIG5lZWRpbmcgWDExIHNlcnZlci1zaWRlIHN1cHBvcnQg
Zm9yIFhjb21wb3NpdGUsIGl0IGFjdHVhbGx5CisgIC8vIG5lZWRzIHRvIGJlIHR1cm5lZCBvbiBm
b3IgdGhlIHdpbmRvdy4gSWYgdGhlIHVzZXIgaGFzIG1vZGVybgorICAvLyBoYXJkd2FyZS9kcml2
ZXJzIGJ1dCBpc24ndCB1c2luZyBhIGNvbXBvc2l0aW5nIHdpbmRvdyBtYW5hZ2VyLCB0aGF0IHdv
bid0CisgIC8vIGJlIHRoZSBjYXNlLiBIZXJlIHdlIGF1dG9tYXRpY2FsbHkgdHVybiBpdCBvbi4K
KworICAvLyBSZWRpcmVjdCBkcmF3aW5nIHRvIGFuIG9mZnNjcmVlbiBidWZmZXIgKGllLCB0dXJu
IG9uIGNvbXBvc2l0aW5nKS4gWDExCisgIC8vIHJlbWVtYmVycyB3aG8gaGFzIHJlcXVlc3RlZCB0
aGlzIGFuZCB3aWxsIHR1cm4gaXQgb2ZmIGZvciB1cyB3aGVuIHdlIGV4aXQuCisgIFhDb21wb3Np
dGVSZWRpcmVjdFdpbmRvdyhkaXNwbGF5KCksIGlkLCBDb21wb3NpdGVSZWRpcmVjdEF1dG9tYXRp
Yyk7CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2luZG93Q2FwdHVyZXJYMTE6OkZvY3Vz
T25TZWxlY3RlZFNvdXJjZSgpIHsKKyAgaWYgKCFzZWxlY3RlZF93aW5kb3dfKQorICAgIHJldHVy
biBmYWxzZTsKKworICB1bnNpZ25lZCBpbnQgbnVtX2NoaWxkcmVuOworICA6OldpbmRvdyogY2hp
bGRyZW47CisgIDo6V2luZG93IHBhcmVudDsKKyAgOjpXaW5kb3cgcm9vdDsKKyAgLy8gRmluZCB0
aGUgcm9vdCB3aW5kb3cgdG8gcGFzcyBldmVudCB0by4KKyAgaW50IHN0YXR1cyA9IFhRdWVyeVRy
ZWUoZGlzcGxheSgpLCBzZWxlY3RlZF93aW5kb3dfLCAmcm9vdCwgJnBhcmVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmNoaWxkcmVuLCAmbnVtX2NoaWxkcmVuKTsKKyAgaWYgKHN0YXR1
cyA9PSAwKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBxdWVyeSBmb3Ig
dGhlIHJvb3Qgd2luZG93LiI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgaWYgKGNoaWxk
cmVuKQorICAgIFhGcmVlKGNoaWxkcmVuKTsKKworICBYUmFpc2VXaW5kb3coZGlzcGxheSgpLCBz
ZWxlY3RlZF93aW5kb3dfKTsKKworICAvLyBTb21lIHdpbmRvdyBtYW5hZ2VycyAoZS5nLiwgbWV0
YWNpdHkgaW4gR05PTUUpIGNvbnNpZGVyIGl0IGlsbGVnYWwgdG8KKyAgLy8gcmFpc2UgYSB3aW5k
b3cgd2l0aG91dCBhbHNvIGdpdmluZyBpdCBpbnB1dCBmb2N1cyB3aXRoCisgIC8vIF9ORVRfQUNU
SVZFX1dJTkRPVywgc28gWFJhaXNlV2luZG93KCkgb24gaXRzIG93biBpc24ndCBlbm91Z2guCisg
IEF0b20gYXRvbSA9IFhJbnRlcm5BdG9tKGRpc3BsYXkoKSwgIl9ORVRfQUNUSVZFX1dJTkRPVyIs
IFRydWUpOworICBpZiAoYXRvbSAhPSBOb25lKSB7CisgICAgWEV2ZW50IHhldjsKKyAgICB4ZXYu
eGNsaWVudC50eXBlID0gQ2xpZW50TWVzc2FnZTsKKyAgICB4ZXYueGNsaWVudC5zZXJpYWwgPSAw
OworICAgIHhldi54Y2xpZW50LnNlbmRfZXZlbnQgPSBUcnVlOworICAgIHhldi54Y2xpZW50Lndp
bmRvdyA9IHNlbGVjdGVkX3dpbmRvd187CisgICAgeGV2LnhjbGllbnQubWVzc2FnZV90eXBlID0g
YXRvbTsKKworICAgIC8vIFRoZSBmb3JtYXQgbWVtYmVyIGlzIHNldCB0byA4LCAxNiwgb3IgMzIg
YW5kIHNwZWNpZmllcyB3aGV0aGVyIHRoZQorICAgIC8vIGRhdGEgc2hvdWxkIGJlIHZpZXdlZCBh
cyBhIGxpc3Qgb2YgYnl0ZXMsIHNob3J0cywgb3IgbG9uZ3MuCisgICAgeGV2LnhjbGllbnQuZm9y
bWF0ID0gMzI7CisKKyAgICBtZW1zZXQoeGV2LnhjbGllbnQuZGF0YS5sLCAwLCBzaXplb2YoeGV2
LnhjbGllbnQuZGF0YS5sKSk7CisKKyAgICBYU2VuZEV2ZW50KGRpc3BsYXkoKSwgcm9vdCwgRmFs
c2UsCisgICAgICAgICAgICAgICBTdWJzdHJ1Y3R1cmVSZWRpcmVjdE1hc2sgfCBTdWJzdHJ1Y3R1
cmVOb3RpZnlNYXNrLCAmeGV2KTsKKyAgfQorICBYRmx1c2goZGlzcGxheSgpKTsKKyAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgV2luZG93Q2FwdHVyZXJYMTE6OlN0YXJ0KENhbGxiYWNrKiBjYWxs
YmFjaykgeworICBSVENfRENIRUNLKCFjYWxsYmFja18pOworICBSVENfRENIRUNLKGNhbGxiYWNr
KTsKKworICBjYWxsYmFja18gPSBjYWxsYmFjazsKK30KKwordm9pZCBXaW5kb3dDYXB0dXJlclgx
MTo6Q2FwdHVyZUZyYW1lKCkgeworICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJXaW5kb3dDYXB0
dXJlclgxMTo6Q2FwdHVyZUZyYW1lIik7CisKKyAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJf
LklzV2luZG93VmFsaWQoKSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJUaGUgd2luZG93
IGlzIG5vIGxvbmdlciB2YWxpZC4iOworICAgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJl
c3VsdDo6RVJST1JfUEVSTUFORU5ULCBudWxscHRyKTsKKyAgICByZXR1cm47CisgIH0KKworICB4
X2Rpc3BsYXlfLT5Qcm9jZXNzUGVuZGluZ1hFdmVudHMoKTsKKworICBpZiAoIWhhc19jb21wb3Np
dGVfZXh0ZW5zaW9uXykgeworICAgIC8vIFdpdGhvdXQgdGhlIFhjb21wb3NpdGUgZXh0ZW5zaW9u
IHdlIGNhcHR1cmUgd2hlbiB0aGUgd2hvbGUgd2luZG93IGlzCisgICAgLy8gdmlzaWJsZSBvbiBz
Y3JlZW4gYW5kIG5vdCBjb3ZlcmVkIGJ5IGFueSBvdGhlciB3aW5kb3cuIFRoaXMgaXMgbm90Cisg
ICAgLy8gc29tZXRoaW5nIHdlIHdhbnQgc28gaW5zdGVhZCwganVzdCBiYWlsIG91dC4KKyAgICBS
VENfTE9HKExTX0VSUk9SKSA8PCAiTm8gWGNvbXBvc2l0ZSBleHRlbnNpb24gZGV0ZWN0ZWQuIjsK
KyAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVOVCwg
bnVsbHB0cik7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKEdldFdpbmRvd1N0YXRlKCZhdG9t
X2NhY2hlXywgc2VsZWN0ZWRfd2luZG93XykgPT0gSWNvbmljU3RhdGUpIHsKKyAgICAvLyBXaW5k
b3cgaXMgaW4gbWluaW1pemVkLiBSZXR1cm4gYSAxeDEgZnJhbWUgYXMgc2FtZSBhcyBPU1gvV2lu
IGRvZXMuCisgICAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gZnJhbWUoCisgICAgICAg
IG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShEZXNrdG9wU2l6ZSgxLCAxKSkpOworICAgIGNhbGxiYWNr
Xy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6U1VDQ0VTUywgc3RkOjptb3ZlKGZyYW1lKSk7Cisg
ICAgcmV0dXJuOworICB9CisKKyAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gZnJhbWUo
CisgICAgICBuZXcgQmFzaWNEZXNrdG9wRnJhbWUoeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy53aW5k
b3dfc2l6ZSgpKSk7CisKKyAgeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5TeW5jaHJvbml6ZSgpOwor
ICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uQ2FwdHVyZVJlY3QoRGVza3RvcFJlY3Q6Ok1h
a2VTaXplKGZyYW1lLT5zaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWUuZ2V0KCkpKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVGVt
cG9yYXJpbHkgZmFpbGVkIHRvIGNhcHR1cmUgd2lub2R3LiI7CisgICAgY2FsbGJhY2tfLT5PbkNh
cHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9URU1QT1JBUlksIG51bGxwdHIpOworICAgIHJldHVy
bjsKKyAgfQorCisgIGZyYW1lLT5tdXRhYmxlX3VwZGF0ZWRfcmVnaW9uKCktPlNldFJlY3QoCisg
ICAgICBEZXNrdG9wUmVjdDo6TWFrZVNpemUoZnJhbWUtPnNpemUoKSkpOworICBmcmFtZS0+c2V0
X3RvcF9sZWZ0KHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8ud2luZG93X3JlY3QoKS50b3BfbGVmdCgp
KTsKKworICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OlNVQ0NFU1MsIHN0ZDo6
bW92ZShmcmFtZSkpOworfQorCitib29sIFdpbmRvd0NhcHR1cmVyWDExOjpJc09jY2x1ZGVkKGNv
bnN0IERlc2t0b3BWZWN0b3ImIHBvcykgeworICByZXR1cm4gd2luZG93X2ZpbmRlcl8uR2V0V2lu
ZG93VW5kZXJQb2ludChwb3MpICE9CisgICAgICAgICBzdGF0aWNfY2FzdDxXaW5kb3dJZD4oc2Vs
ZWN0ZWRfd2luZG93Xyk7Cit9CisKK2Jvb2wgV2luZG93Q2FwdHVyZXJYMTE6OkhhbmRsZVhFdmVu
dChjb25zdCBYRXZlbnQmIGV2ZW50KSB7CisgIGlmIChldmVudC50eXBlID09IENvbmZpZ3VyZU5v
dGlmeSkgeworICAgIFhDb25maWd1cmVFdmVudCB4Y2UgPSBldmVudC54Y29uZmlndXJlOworICAg
IGlmICh4Y2Uud2luZG93ID09IHNlbGVjdGVkX3dpbmRvd18pIHsKKyAgICAgIGlmICghRGVza3Rv
cFJlY3RGcm9tWEF0dHJpYnV0ZXMoeGNlKS5lcXVhbHMoCisgICAgICAgICAgICAgIHhfc2VydmVy
X3BpeGVsX2J1ZmZlcl8ud2luZG93X3JlY3QoKSkpIHsKKyAgICAgICAgaWYgKCF4X3NlcnZlcl9w
aXhlbF9idWZmZXJfLkluaXQoZGlzcGxheSgpLCBzZWxlY3RlZF93aW5kb3dfKSkgeworICAgICAg
ICAgIFJUQ19MT0coTFNfRVJST1IpCisgICAgICAgICAgICAgIDw8ICJGYWlsZWQgdG8gaW5pdGlh
bGl6ZSBwaXhlbCBidWZmZXIgYWZ0ZXIgcmVzaXppbmcuIjsKKyAgICAgICAgfQorICAgICAgfQor
ICAgIH0KKyAgfQorCisgIC8vIEFsd2F5cyByZXR1cm5zIGZhbHNlLCBzbyBvdGhlciBvYnNlcnZl
cnMgY2FuIHN0aWxsIHJlY2VpdmUgdGhlIGV2ZW50cy4KKyAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIFdpbmRvd0NhcHR1cmVyWDExOjpHZXRXaW5kb3dUaXRsZSg6OldpbmRvdyB3aW5kb3csIHN0
ZDo6c3RyaW5nKiB0aXRsZSkgeworICBpbnQgc3RhdHVzOworICBib29sIHJlc3VsdCA9IGZhbHNl
OworICBYVGV4dFByb3BlcnR5IHdpbmRvd19uYW1lOworICB3aW5kb3dfbmFtZS52YWx1ZSA9IG51
bGxwdHI7CisgIGlmICh3aW5kb3cpIHsKKyAgICBzdGF0dXMgPSBYR2V0V01OYW1lKGRpc3BsYXko
KSwgd2luZG93LCAmd2luZG93X25hbWUpOworICAgIGlmIChzdGF0dXMgJiYgd2luZG93X25hbWUu
dmFsdWUgJiYgd2luZG93X25hbWUubml0ZW1zKSB7CisgICAgICBpbnQgY250OworICAgICAgY2hh
cioqIGxpc3QgPSBudWxscHRyOworICAgICAgc3RhdHVzID0KKyAgICAgICAgICBYdXRmOFRleHRQ
cm9wZXJ0eVRvVGV4dExpc3QoZGlzcGxheSgpLCAmd2luZG93X25hbWUsICZsaXN0LCAmY250KTsK
KyAgICAgIGlmIChzdGF0dXMgPj0gU3VjY2VzcyAmJiBjbnQgJiYgKmxpc3QpIHsKKyAgICAgICAg
aWYgKGNudCA+IDEpIHsKKyAgICAgICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJXaW5kb3cgaGFz
ICIgPDwgY250CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIHRleHQgcHJvcGVydGll
cywgb25seSB1c2luZyB0aGUgZmlyc3Qgb25lLiI7CisgICAgICAgIH0KKyAgICAgICAgKnRpdGxl
ID0gKmxpc3Q7CisgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICB9CisgICAgICBpZiAobGlz
dCkKKyAgICAgICAgWEZyZWVTdHJpbmdMaXN0KGxpc3QpOworICAgIH0KKyAgICBpZiAod2luZG93
X25hbWUudmFsdWUpCisgICAgICBYRnJlZSh3aW5kb3dfbmFtZS52YWx1ZSk7CisgIH0KKyAgcmV0
dXJuIHJlc3VsdDsKK30KKworLy8gc3RhdGljCitzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1
cmVyPiBXaW5kb3dDYXB0dXJlclgxMTo6Q3JlYXRlUmF3V2luZG93Q2FwdHVyZXIoCisgICAgY29u
c3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7CisgIGlmICghb3B0aW9ucy54X2Rp
c3BsYXkoKSkKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxE
ZXNrdG9wQ2FwdHVyZXI+KG5ldyBXaW5kb3dDYXB0dXJlclgxMShvcHRpb25zKSk7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19j
YXB0dXJlcl94MTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl94MTEuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40Y2QyYzk3Y2I5ZmRkZWE1YTc4NzVmZGUyMzY0OTVjMTdmNTU5MWI4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3gxMS5oCkBAIC0wLDAg
KzEsNjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NB
UFRVUkVfTElOVVhfV0lORE9XX0NBUFRVUkVSX1gxMV9IXworI2RlZmluZSBNT0RVTEVTX0RFU0tU
T1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfQ0FQVFVSRVJfWDExX0hfCisKKyNpbmNsdWRlIDxtZW1v
cnk+CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbGludXgvd2luZG93X2ZpbmRlcl94MTEuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9saW51eC94X2F0b21fY2FjaGUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9saW51eC94X3NlcnZlcl9waXhlbF9idWZmZXIuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBX
aW5kb3dDYXB0dXJlclgxMSA6IHB1YmxpYyBEZXNrdG9wQ2FwdHVyZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTaGFyZWRYRGlzcGxheTo6WEV2ZW50SGFuZGxlciB7CisgcHVi
bGljOgorICBleHBsaWNpdCBXaW5kb3dDYXB0dXJlclgxMShjb25zdCBEZXNrdG9wQ2FwdHVyZU9w
dGlvbnMmIG9wdGlvbnMpOworICB+V2luZG93Q2FwdHVyZXJYMTEoKSBvdmVycmlkZTsKKworICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0dXJlcj4gQ3JlYXRlUmF3V2luZG93Q2Fw
dHVyZXIoCisgICAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpOworCisg
IC8vIERlc2t0b3BDYXB0dXJlciBpbnRlcmZhY2UuCisgIHZvaWQgU3RhcnQoQ2FsbGJhY2sqIGNh
bGxiYWNrKSBvdmVycmlkZTsKKyAgdm9pZCBDYXB0dXJlRnJhbWUoKSBvdmVycmlkZTsKKyAgYm9v
bCBHZXRTb3VyY2VMaXN0KFNvdXJjZUxpc3QqIHNvdXJjZXMpIG92ZXJyaWRlOworICBib29sIFNl
bGVjdFNvdXJjZShTb3VyY2VJZCBpZCkgb3ZlcnJpZGU7CisgIGJvb2wgRm9jdXNPblNlbGVjdGVk
U291cmNlKCkgb3ZlcnJpZGU7CisgIGJvb2wgSXNPY2NsdWRlZChjb25zdCBEZXNrdG9wVmVjdG9y
JiBwb3MpIG92ZXJyaWRlOworCisgIC8vIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIGlu
dGVyZmFjZS4KKyAgYm9vbCBIYW5kbGVYRXZlbnQoY29uc3QgWEV2ZW50JiBldmVudCkgb3ZlcnJp
ZGU7CisKKyBwcml2YXRlOgorICBEaXNwbGF5KiBkaXNwbGF5KCkgeyByZXR1cm4geF9kaXNwbGF5
Xy0+ZGlzcGxheSgpOyB9CisKKyAgLy8gUmV0dXJucyB3aW5kb3cgdGl0bGUgZm9yIHRoZSBzcGVj
aWZpZWQgWCB8d2luZG93fC4KKyAgYm9vbCBHZXRXaW5kb3dUaXRsZSg6OldpbmRvdyB3aW5kb3cs
IHN0ZDo6c3RyaW5nKiB0aXRsZSk7CisKKyAgQ2FsbGJhY2sqIGNhbGxiYWNrXyA9IG51bGxwdHI7
CisKKyAgcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiB4X2Rpc3BsYXlfOworCisg
IGJvb2wgaGFzX2NvbXBvc2l0ZV9leHRlbnNpb25fID0gZmFsc2U7CisKKyAgOjpXaW5kb3cgc2Vs
ZWN0ZWRfd2luZG93XyA9IDA7CisgIFhTZXJ2ZXJQaXhlbEJ1ZmZlciB4X3NlcnZlcl9waXhlbF9i
dWZmZXJfOworICBYQXRvbUNhY2hlIGF0b21fY2FjaGVfOworICBXaW5kb3dGaW5kZXJYMTEgd2lu
ZG93X2ZpbmRlcl87CisKKyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihXaW5kb3dDYXB0
dXJlclgxMSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9E
VUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfV0lORE9XX0NBUFRVUkVSX1gxMV9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2ZpbmRlcl94MTEuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51
eC93aW5kb3dfZmluZGVyX3gxMS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmZhZGMyYzZmYjQzMjkyZGJhNjEz
NzA2YmRjMzAyZmU5YzgxOWUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2lu
ZG93X2ZpbmRlcl94MTEuY2MKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMp
IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfZmluZGVy
X3gxMS5oIgorCisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2xp
c3RfdXRpbHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CisKK1dpbmRvd0ZpbmRlclgxMTo6V2luZG93RmluZGVyWDExKFhBdG9tQ2FjaGUqIGNh
Y2hlKSA6IGNhY2hlXyhjYWNoZSkgeworICBSVENfRENIRUNLKGNhY2hlXyk7Cit9CisKK1dpbmRv
d0ZpbmRlclgxMTo6fldpbmRvd0ZpbmRlclgxMSgpID0gZGVmYXVsdDsKKworV2luZG93SWQgV2lu
ZG93RmluZGVyWDExOjpHZXRXaW5kb3dVbmRlclBvaW50KERlc2t0b3BWZWN0b3IgcG9pbnQpIHsK
KyAgV2luZG93SWQgaWQgPSBrTnVsbFdpbmRvd0lkOworICBHZXRXaW5kb3dMaXN0KGNhY2hlXywg
WyZpZCwgdGhpcywgcG9pbnRdKDo6V2luZG93IHdpbmRvdykgeworICAgIERlc2t0b3BSZWN0IHJl
Y3Q7CisgICAgaWYgKEdldFdpbmRvd1JlY3QodGhpcy0+Y2FjaGVfLT5kaXNwbGF5KCksIHdpbmRv
dywgJnJlY3QpICYmCisgICAgICAgIHJlY3QuQ29udGFpbnMocG9pbnQpKSB7CisgICAgICBpZCA9
IHdpbmRvdzsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cisg
IH0pOworICByZXR1cm4gaWQ7Cit9CisKKy8vIHN0YXRpYworc3RkOjp1bmlxdWVfcHRyPFdpbmRv
d0ZpbmRlcj4gV2luZG93RmluZGVyOjpDcmVhdGUoCisgICAgY29uc3QgV2luZG93RmluZGVyOjpP
cHRpb25zJiBvcHRpb25zKSB7CisgIGlmIChvcHRpb25zLmNhY2hlID09IG51bGxwdHIpIHsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxXaW5k
b3dGaW5kZXJYMTE+KG9wdGlvbnMuY2FjaGUpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfZmluZGVyX3gxMS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvbGludXgvd2luZG93X2ZpbmRlcl94MTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGJiYTg2OTdiNWY3NTQ0
ZDRkNmNjY2RlNmYxMmNlNTZhOWNlNDg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgvd2luZG93X2ZpbmRlcl94MTEuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogIENvcHlyaWdo
dCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfRklO
REVSX1gxMV9IXworI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1df
RklOREVSX1gxMV9IXworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93
X2ZpbmRlci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgWEF0b21DYWNoZTsKKwor
Ly8gVGhlIGltcGxlbWVudGF0aW9uIG9mIFdpbmRvd0ZpbmRlciBmb3IgWDExLgorY2xhc3MgV2lu
ZG93RmluZGVyWDExIGZpbmFsIDogcHVibGljIFdpbmRvd0ZpbmRlciB7CisgcHVibGljOgorICBl
eHBsaWNpdCBXaW5kb3dGaW5kZXJYMTEoWEF0b21DYWNoZSogY2FjaGUpOworICB+V2luZG93Rmlu
ZGVyWDExKCkgb3ZlcnJpZGU7CisKKyAgLy8gV2luZG93RmluZGVyIGltcGxlbWVudGF0aW9uLgor
ICBXaW5kb3dJZCBHZXRXaW5kb3dVbmRlclBvaW50KERlc2t0b3BWZWN0b3IgcG9pbnQpIG92ZXJy
aWRlOworCisgcHJpdmF0ZToKKyAgWEF0b21DYWNoZSogY29uc3QgY2FjaGVfOworfTsKKworfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJF
X0xJTlVYX1dJTkRPV19GSU5ERVJfWDExX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93
aW5kb3dfbGlzdF91dGlscy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZkOGY1ZjcyY2Q1ZTVlNWUwNTEyOTA5Zjc5N2EzMDIyOWRlMGRjOTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfbGlzdF91dGlscy5jYwpAQCAt
MCwwICsxLDI0NiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfbGlzdF91dGlscy5oIgorCisjaW5jbHVkZSA8
WDExL1hhdG9tLmg+CisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlIDxYMTEvWHV0aWwu
aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKworI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfZXJyb3JfdHJhcC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFn
aWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCituYW1lc3BhY2UgeworCitjbGFzcyBEZWZlclhGcmVlIHsKKyBwdWJsaWM6CisgIGV4cGxp
Y2l0IERlZmVyWEZyZWUodm9pZCogZGF0YSkgOiBkYXRhXyhkYXRhKSB7fQorICB+RGVmZXJYRnJl
ZSgpOworCisgcHJpdmF0ZToKKyAgdm9pZCogY29uc3QgZGF0YV87Cit9OworCitEZWZlclhGcmVl
Ojp+RGVmZXJYRnJlZSgpIHsKKyAgaWYgKGRhdGFfKQorICAgIFhGcmVlKGRhdGFfKTsKK30KKwor
Ly8gQ29udmVuaWVuY2Ugd3JhcHBlciBmb3IgWEdldFdpbmRvd1Byb3BlcnR5KCkgcmVzdWx0cy4K
K3RlbXBsYXRlIDxjbGFzcyBQcm9wZXJ0eVR5cGU+CitjbGFzcyBYV2luZG93UHJvcGVydHkgewor
IHB1YmxpYzoKKyAgWFdpbmRvd1Byb3BlcnR5KERpc3BsYXkqIGRpc3BsYXksIFdpbmRvdyB3aW5k
b3csIEF0b20gcHJvcGVydHkpIHsKKyAgICBjb25zdCBpbnQga0JpdHNQZXJCeXRlID0gODsKKyAg
ICBBdG9tIGFjdHVhbF90eXBlOworICAgIGludCBhY3R1YWxfZm9ybWF0OworICAgIHVuc2lnbmVk
IGxvbmcgYnl0ZXNfYWZ0ZXI7ICAvLyBOT0xJTlQ6IHR5cGUgcmVxdWlyZWQgYnkgWEdldFdpbmRv
d1Byb3BlcnR5CisgICAgaW50IHN0YXR1cyA9IFhHZXRXaW5kb3dQcm9wZXJ0eSgKKyAgICAgICAg
ZGlzcGxheSwgd2luZG93LCBwcm9wZXJ0eSwgMEwsIH4wTCwgRmFsc2UsIEFueVByb3BlcnR5VHlw
ZSwKKyAgICAgICAgJmFjdHVhbF90eXBlLCAmYWN0dWFsX2Zvcm1hdCwgJnNpemVfLCAmYnl0ZXNf
YWZ0ZXIsICZkYXRhXyk7CisgICAgaWYgKHN0YXR1cyAhPSBTdWNjZXNzKSB7CisgICAgICBkYXRh
XyA9IG51bGxwdHI7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChzaXplb2YoUHJvcGVy
dHlUeXBlKSAqIGtCaXRzUGVyQnl0ZSAhPSBhY3R1YWxfZm9ybWF0KSB7CisgICAgICBzaXplXyA9
IDA7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaXNfdmFsaWRfID0gdHJ1ZTsKKyAgfQor
CisgIH5YV2luZG93UHJvcGVydHkoKSB7CisgICAgaWYgKGRhdGFfKQorICAgICAgWEZyZWUoZGF0
YV8pOworICB9CisKKyAgLy8gVHJ1ZSBpZiB3ZSBnb3QgcHJvcGVybHkgdmFsdWUgc3VjY2Vzc2Z1
bGx5LgorICBib29sIGlzX3ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNfdmFsaWRfOyB9CisKKyAg
Ly8gU2l6ZSBhbmQgdmFsdWUgb2YgdGhlIHByb3BlcnR5LgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIHNpemVfOyB9CisgIGNvbnN0IFByb3BlcnR5VHlwZSogZGF0YSgpIGNvbnN0IHsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQcm9wZXJ0eVR5cGUqPihkYXRhXyk7CisgIH0K
KyAgUHJvcGVydHlUeXBlKiBkYXRhKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQcm9wZXJ0
eVR5cGUqPihkYXRhXyk7IH0KKworIHByaXZhdGU6CisgIGJvb2wgaXNfdmFsaWRfID0gZmFsc2U7
CisgIHVuc2lnbmVkIGxvbmcgc2l6ZV8gPSAwOyAgLy8gTk9MSU5UOiB0eXBlIHJlcXVpcmVkIGJ5
IFhHZXRXaW5kb3dQcm9wZXJ0eQorICB1bnNpZ25lZCBjaGFyKiBkYXRhXyA9IG51bGxwdHI7CisK
KyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihYV2luZG93UHJvcGVydHkpOworfTsKKwor
Ly8gSXRlcmF0ZXMgdGhyb3VnaCB8d2luZG93fCBoaWVyYXJjaHkgdG8gZmluZCBmaXJzdCB2aXNp
YmxlIHdpbmRvdywgaS5lLiBvbmUKKy8vIHRoYXQgaGFzIFdNX1NUQVRFIHByb3BlcnR5IHNldCB0
byBOb3JtYWxTdGF0ZS4KKy8vIFNlZSBodHRwOi8vdHJvbmNoZS5jb20vZ3VpL3gvaWNjY20vc2Vj
LTQuaHRtbCNzLTQuMS4zLjEgLgorOjpXaW5kb3cgR2V0QXBwbGljYXRpb25XaW5kb3coWEF0b21D
YWNoZSogY2FjaGUsIDo6V2luZG93IHdpbmRvdykgeworICBpbnQzMl90IHN0YXRlID0gR2V0V2lu
ZG93U3RhdGUoY2FjaGUsIHdpbmRvdyk7CisgIGlmIChzdGF0ZSA9PSBOb3JtYWxTdGF0ZSkgewor
ICAgIC8vIFdpbmRvdyBoYXMgV01fU1RBVEU9PU5vcm1hbFN0YXRlLiBSZXR1cm4gaXQuCisgICAg
cmV0dXJuIHdpbmRvdzsKKyAgfSBlbHNlIGlmIChzdGF0ZSA9PSBJY29uaWNTdGF0ZSkgeworICAg
IC8vIFdpbmRvdyBpcyBpbiBtaW5pbWl6ZWQuIFNraXAgaXQuCisgICAgcmV0dXJuIDA7CisgIH0K
KworICBSVENfRENIRUNLX0VRKHN0YXRlLCBXaXRoZHJhd25TdGF0ZSk7CisgIC8vIElmIHRoZSB3
aW5kb3cgaXMgaW4gV2l0aGRyYXduU3RhdGUgdGhlbiBsb29rIGF0IGFsbCBvZiBpdHMgY2hpbGRy
ZW4uCisgIDo6V2luZG93IHJvb3QsIHBhcmVudDsKKyAgOjpXaW5kb3cqIGNoaWxkcmVuOworICB1
bnNpZ25lZCBpbnQgbnVtX2NoaWxkcmVuOworICBpZiAoIVhRdWVyeVRyZWUoY2FjaGUtPmRpc3Bs
YXkoKSwgd2luZG93LCAmcm9vdCwgJnBhcmVudCwgJmNoaWxkcmVuLAorICAgICAgICAgICAgICAg
ICAgJm51bV9jaGlsZHJlbikpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRv
IHF1ZXJ5IGZvciBjaGlsZCB3aW5kb3dzIGFsdGhvdWdoIHdpbmRvdyIKKyAgICAgICAgICAgICAg
ICAgICAgICA8PCAiZG9lcyBub3QgaGF2ZSBhIHZhbGlkIFdNX1NUQVRFLiI7CisgICAgcmV0dXJu
IDA7CisgIH0KKyAgOjpXaW5kb3cgYXBwX3dpbmRvdyA9IDA7CisgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgbnVtX2NoaWxkcmVuOyArK2kpIHsKKyAgICBhcHBfd2luZG93ID0gR2V0QXBw
bGljYXRpb25XaW5kb3coY2FjaGUsIGNoaWxkcmVuW2ldKTsKKyAgICBpZiAoYXBwX3dpbmRvdykK
KyAgICAgIGJyZWFrOworICB9CisKKyAgaWYgKGNoaWxkcmVuKQorICAgIFhGcmVlKGNoaWxkcmVu
KTsKKyAgcmV0dXJuIGFwcF93aW5kb3c7Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgfHdp
bmRvd3wgaXMgYSBkZXNrdG9wIGVsZW1lbnQuCitib29sIElzRGVza3RvcEVsZW1lbnQoWEF0b21D
YWNoZSogY2FjaGUsIDo6V2luZG93IHdpbmRvdykgeworICBSVENfRENIRUNLKGNhY2hlKTsKKyAg
aWYgKHdpbmRvdyA9PSAwKQorICAgIHJldHVybiBmYWxzZTsKKworICAvLyBGaXJzdCBsb29rIGZv
ciBfTkVUX1dNX1dJTkRPV19UWVBFLiBUaGUgc3RhbmRhcmQKKyAgLy8gKGh0dHA6Ly9zdGFuZGFy
ZHMuZnJlZWRlc2t0b3Aub3JnL3dtLXNwZWMvbGF0ZXN0L2FyMDFzMDUuaHRtbCNpZDI3NjAzMDYp
CisgIC8vIHNheXMgdGhpcyBoaW50ICpzaG91bGQqIGJlIHByZXNlbnQgb24gYWxsIHdpbmRvd3Ms
IGFuZCB3ZSB1c2UgdGhlIGV4aXN0ZW5jZQorICAvLyBvZiBfTkVUX1dNX1dJTkRPV19UWVBFX05P
Uk1BTCBpbiB0aGUgcHJvcGVydHkgdG8gaW5kaWNhdGUgYSB3aW5kb3cgaXMgbm90CisgIC8vIGEg
ZGVza3RvcCBlbGVtZW50ICh0aGF0IGlzLCBvbmx5ICJub3JtYWwiIHdpbmRvd3Mgc2hvdWxkIGJl
IHNoYXJlYWJsZSkuCisgIFhXaW5kb3dQcm9wZXJ0eTx1aW50MzJfdD4gd2luZG93X3R5cGUoY2Fj
aGUtPmRpc3BsYXkoKSwgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhY2hlLT5XaW5kb3dUeXBlKCkpOworICBpZiAod2luZG93X3R5cGUuaXNfdmFsaWQo
KSAmJiB3aW5kb3dfdHlwZS5zaXplKCkgPiAwKSB7CisgICAgdWludDMyX3QqIGVuZCA9IHdpbmRv
d190eXBlLmRhdGEoKSArIHdpbmRvd190eXBlLnNpemUoKTsKKyAgICBib29sIGlzX25vcm1hbCA9
CisgICAgICAgIChlbmQgIT0gc3RkOjpmaW5kKHdpbmRvd190eXBlLmRhdGEoKSwgZW5kLCBjYWNo
ZS0+V2luZG93VHlwZU5vcm1hbCgpKSk7CisgICAgcmV0dXJuICFpc19ub3JtYWw7CisgIH0KKwor
ICAvLyBGYWxsIGJhY2sgb24gdXNpbmcgdGhlIGhpbnQuCisgIFhDbGFzc0hpbnQgY2xhc3NfaGlu
dDsKKyAgU3RhdHVzIHN0YXR1cyA9IFhHZXRDbGFzc0hpbnQoY2FjaGUtPmRpc3BsYXkoKSwgd2lu
ZG93LCAmY2xhc3NfaGludCk7CisgIGlmIChzdGF0dXMgPT0gMCkgeworICAgIC8vIE5vIGhpbnRz
LCBhc3N1bWUgdGhpcyBpcyBhIG5vcm1hbCBhcHBsaWNhdGlvbiB3aW5kb3cuCisgICAgcmV0dXJu
IGZhbHNlOworICB9CisKKyAgRGVmZXJYRnJlZSBmcmVlX3Jlc19uYW1lKGNsYXNzX2hpbnQucmVz
X25hbWUpOworICBEZWZlclhGcmVlIGZyZWVfcmVzX2NsYXNzKGNsYXNzX2hpbnQucmVzX2NsYXNz
KTsKKyAgcmV0dXJuIHN0cmNtcCgiZ25vbWUtcGFuZWwiLCBjbGFzc19oaW50LnJlc19uYW1lKSA9
PSAwIHx8CisgICAgICAgICBzdHJjbXAoImRlc2t0b3Bfd2luZG93IiwgY2xhc3NfaGludC5yZXNf
bmFtZSkgPT0gMDsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2ludDMyX3QgR2V0V2luZG93U3Rh
dGUoWEF0b21DYWNoZSogY2FjaGUsIDo6V2luZG93IHdpbmRvdykgeworICAvLyBHZXQgV01fU1RB
VEUgcHJvcGVydHkgb2YgdGhlIHdpbmRvdy4KKyAgWFdpbmRvd1Byb3BlcnR5PHVpbnQzMl90PiB3
aW5kb3dfc3RhdGUoY2FjaGUtPmRpc3BsYXkoKSwgd2luZG93LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS0+V21TdGF0ZSgpKTsKKworICAvLyBXTV9TVEFU
RSBpcyBjb25zaWRlcmVkIHRvIGJlIHNldCB0byBXaXRoZHJhd25TdGF0ZSB3aGVuIGl0IG1pc3Np
bmcuCisgIHJldHVybiB3aW5kb3dfc3RhdGUuaXNfdmFsaWQoKSA/ICp3aW5kb3dfc3RhdGUuZGF0
YSgpIDogV2l0aGRyYXduU3RhdGU7Cit9CisKK2Jvb2wgR2V0V2luZG93TGlzdChYQXRvbUNhY2hl
KiBjYWNoZSwKKyAgICAgICAgICAgICAgICAgICBydGM6OkZ1bmN0aW9uVmlldzxib29sKDo6V2lu
ZG93KT4gb25fd2luZG93KSB7CisgIFJUQ19EQ0hFQ0soY2FjaGUpOworICBSVENfRENIRUNLKG9u
X3dpbmRvdyk7CisgIDo6RGlzcGxheSogY29uc3QgZGlzcGxheSA9IGNhY2hlLT5kaXNwbGF5KCk7
CisKKyAgaW50IGZhaWxlZF9zY3JlZW5zID0gMDsKKyAgY29uc3QgaW50IG51bV9zY3JlZW5zID0g
WFNjcmVlbkNvdW50KGRpc3BsYXkpOworICBmb3IgKGludCBzY3JlZW4gPSAwOyBzY3JlZW4gPCBu
dW1fc2NyZWVuczsgc2NyZWVuKyspIHsKKyAgICA6OldpbmRvdyByb290X3dpbmRvdyA9IFhSb290
V2luZG93KGRpc3BsYXksIHNjcmVlbik7CisgICAgOjpXaW5kb3cgcGFyZW50OworICAgIDo6V2lu
ZG93KiBjaGlsZHJlbjsKKyAgICB1bnNpZ25lZCBpbnQgbnVtX2NoaWxkcmVuOworICAgIHsKKyAg
ICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KTsKKyAgICAgIGlmIChYUXVlcnlUcmVl
KGRpc3BsYXksIHJvb3Rfd2luZG93LCAmcm9vdF93aW5kb3csICZwYXJlbnQsICZjaGlsZHJlbiwK
KyAgICAgICAgICAgICAgICAgICAgICZudW1fY2hpbGRyZW4pID09IDAgfHwKKyAgICAgICAgICBl
cnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKSB7CisgICAgICAgIGZhaWxl
ZF9zY3JlZW5zKys7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gcXVl
cnkgZm9yIGNoaWxkIHdpbmRvd3MgZm9yIHNjcmVlbiAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IHNjcmVlbjsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgfQorCisgICAg
RGVmZXJYRnJlZSBmcmVlX2NoaWxkcmVuKGNoaWxkcmVuKTsKKworICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgbnVtX2NoaWxkcmVuOyBpKyspIHsKKyAgICAgIC8vIEl0ZXJhdGVzIGlu
IHJldmVyc2Ugb3JkZXIgdG8gcmV0dXJuIHdpbmRvd3MgZnJvbSBmcm9udCB0byBiYWNrLgorICAg
ICAgOjpXaW5kb3cgYXBwX3dpbmRvdyA9CisgICAgICAgICAgR2V0QXBwbGljYXRpb25XaW5kb3co
Y2FjaGUsIGNoaWxkcmVuW251bV9jaGlsZHJlbiAtIDEgLSBpXSk7CisgICAgICBpZiAoYXBwX3dp
bmRvdyAmJiAhSXNEZXNrdG9wRWxlbWVudChjYWNoZSwgYXBwX3dpbmRvdykpIHsKKyAgICAgICAg
aWYgKCFvbl93aW5kb3coYXBwX3dpbmRvdykpIHsKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiBmYWlsZWRfc2NyZWVucyA8
IG51bV9zY3JlZW5zOworfQorCitib29sIEdldFdpbmRvd1JlY3QoOjpEaXNwbGF5KiBkaXNwbGF5
LAorICAgICAgICAgICAgICAgICAgIDo6V2luZG93IHdpbmRvdywKKyAgICAgICAgICAgICAgICAg
ICBEZXNrdG9wUmVjdCogcmVjdCwKKyAgICAgICAgICAgICAgICAgICBYV2luZG93QXR0cmlidXRl
cyogYXR0cmlidXRlcyAvKiA9IG51bGxwdHIgKi8pIHsKKyAgWFdpbmRvd0F0dHJpYnV0ZXMgbG9j
YWxfYXR0cmlidXRlczsKKyAgaW50IG9mZnNldF94OworICBpbnQgb2Zmc2V0X3k7CisgIGlmIChh
dHRyaWJ1dGVzID09IG51bGxwdHIpIHsKKyAgICBhdHRyaWJ1dGVzID0gJmxvY2FsX2F0dHJpYnV0
ZXM7CisgIH0KKworICB7CisgICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXkpOworICAg
IGlmICghWEdldFdpbmRvd0F0dHJpYnV0ZXMoZGlzcGxheSwgd2luZG93LCBhdHRyaWJ1dGVzKSB8
fAorICAgICAgICBlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKSB7Cisg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgICpyZWN0ID0gRGVza3RvcFJlY3RGcm9t
WEF0dHJpYnV0ZXMoKmF0dHJpYnV0ZXMpOworCisgIHsKKyAgICBYRXJyb3JUcmFwIGVycm9yX3Ry
YXAoZGlzcGxheSk7CisgICAgOjpXaW5kb3cgY2hpbGQ7CisgICAgaWYgKCFYVHJhbnNsYXRlQ29v
cmRpbmF0ZXMoZGlzcGxheSwgd2luZG93LCBhdHRyaWJ1dGVzLT5yb290LCAtcmVjdC0+bGVmdCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1yZWN0LT50b3AoKSwgJm9mZnNldF94
LCAmb2Zmc2V0X3ksICZjaGlsZCkgfHwKKyAgICAgICAgZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JB
bmREaXNhYmxlKCkgIT0gMCkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorICBy
ZWN0LT5UcmFuc2xhdGUob2Zmc2V0X3gsIG9mZnNldF95KTsKKyAgcmV0dXJuIHRydWU7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRv
d19saXN0X3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfbGlzdF91dGlscy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIwNTdjOTliODRjMjNlNDc3MmZjNTZhY2MzNTRhZmI0ZWUxZWJhODEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfbGlzdF91dGlscy5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9D
QVBUVVJFX0xJTlVYX1dJTkRPV19MSVNUX1VUSUxTX0hfCisjZGVmaW5lIE1PRFVMRVNfREVTS1RP
UF9DQVBUVVJFX0xJTlVYX1dJTkRPV19MSVNUX1VUSUxTX0hfCisKKyNpbmNsdWRlIDxYMTEvWGxp
Yi5oPgorCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9nZW9tZXRy
eS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfYXRvbV9jYWNo
ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2Z1bmN0aW9uX3ZpZXcuaCIKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CisKKy8vIFN5bmNocm9ub3VzbHkgaXRlcmF0ZXMgYWxsIG9uLXNjcmVlbiB3aW5kb3dz
IGluIHxjYWNoZXwuZGlzcGxheSgpIGluCisvLyBkZWNyZWFzaW5nIHotb3JkZXIgYW5kIHNlbmRz
IHRoZW0gb25lLWJ5LW9uZSB0byB8b25fd2luZG93fCBmdW5jdGlvbiBiZWZvcmUKKy8vIEdldFdp
bmRvd0xpc3QoKSByZXR1cm5zLiBJZiB8b25fd2luZG93fCByZXR1cm5zIGZhbHNlLCB0aGlzIGZ1
bmN0aW9uIGlnbm9yZXMKKy8vIG90aGVyIHdpbmRvd3MgYW5kIHJldHVybnMgaW1tZWRpYXRlbHku
IEdldFdpbmRvd0xpc3QoKSByZXR1cm5zIGZhbHNlIGlmCisvLyBuYXRpdmUgQVBJcyBmYWlsZWQu
IElmIG11bHRpcGxlIHNjcmVlbnMgYXJlIGF0dGFjaGVkIHRvIHRoZSB8ZGlzcGxheXwsIHRoaXMK
Ky8vIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugb25seSB3aGVuIG5hdGl2ZSBBUElzIGZhaWxlZCBv
biBhbGwgc2NyZWVucy4gTWVudXMsCisvLyBwYW5lbHMgYW5kIG1pbmltaXplZCB3aW5kb3dzIHdp
bGwgYmUgaWdub3JlZC4KK2Jvb2wgR2V0V2luZG93TGlzdChYQXRvbUNhY2hlKiBjYWNoZSwKKyAg
ICAgICAgICAgICAgICAgICBydGM6OkZ1bmN0aW9uVmlldzxib29sKDo6V2luZG93KT4gb25fd2lu
ZG93KTsKKworLy8gUmV0dXJucyBXTV9TVEFURSBwcm9wZXJ0eSBvZiB0aGUgfHdpbmRvd3wuIFRo
aXMgZnVuY3Rpb24gcmV0dXJucworLy8gV2l0aGRyYXduU3RhdGUgaWYgdGhlIHx3aW5kb3d8IGlz
IG1pc3NpbmcuCitpbnQzMl90IEdldFdpbmRvd1N0YXRlKFhBdG9tQ2FjaGUqIGNhY2hlLCA6Oldp
bmRvdyB3aW5kb3cpOworCisvLyBSZXR1cm5zIHRoZSByZWN0YW5nbGUgb2YgdGhlIHx3aW5kb3d8
IGluIHRoZSBjb29yZGluYXRlcyBvZiB8ZGlzcGxheXwuIFRoaXMKKy8vIGZ1bmN0aW9uIHJldHVy
bnMgZmFsc2UgaWYgbmF0aXZlIEFQSXMgZmFpbGVkLiBJZiB8YXR0cmlidXRlc3wgaXMgcHJvdmlk
ZWQsIGl0CisvLyB3aWxsIGJlIGZpbGxlZCB3aXRoIHRoZSBhdHRyaWJ1dGVzIG9mIHx3aW5kb3d8
LiBUaGUgfHJlY3R8IGlzIGluIHN5c3RlbQorLy8gY29vcmRpbmF0ZSwgaS5lLiB0aGUgcHJpbWFy
eSBtb25pdG9yIGFsd2F5cyBzdGFydHMgZnJvbSAoMCwgMCkuCitib29sIEdldFdpbmRvd1JlY3Qo
OjpEaXNwbGF5KiBkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgIDo6V2luZG93IHdpbmRvdywK
KyAgICAgICAgICAgICAgICAgICBEZXNrdG9wUmVjdCogcmVjdCwKKyAgICAgICAgICAgICAgICAg
ICBYV2luZG93QXR0cmlidXRlcyogYXR0cmlidXRlcyA9IG51bGxwdHIpOworCisvLyBDcmVhdGVz
IGEgRGVza3RvcFJlY3QgZnJvbSB8YXR0cmlidXRlc3wuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K0Rlc2t0b3BSZWN0IERlc2t0b3BSZWN0RnJvbVhBdHRyaWJ1dGVzKGNvbnN0IFQmIGF0dHJpYnV0
ZXMpIHsKKyAgcmV0dXJuIERlc2t0b3BSZWN0OjpNYWtlWFlXSChhdHRyaWJ1dGVzLngsIGF0dHJp
YnV0ZXMueSwgYXR0cmlidXRlcy53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGVzLmhlaWdodCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2Vu
ZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfTElTVF9VVElMU19I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9hdG9tX2NhY2hlLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
bGludXgveF9hdG9tX2NhY2hlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMmU2MTY2Y2I0MzVjZGE4N2UzYTlk
MWI0NmY0ZWE0OWFhNmMwYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2F0
b21fY2FjaGUuY2MKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTcg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2F0b21fY2FjaGUuaCIKKwor
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworWEF0
b21DYWNoZTo6WEF0b21DYWNoZSg6OkRpc3BsYXkqIGRpc3BsYXkpIDogZGlzcGxheV8oZGlzcGxh
eSkgeworICBSVENfRENIRUNLKGRpc3BsYXlfKTsKK30KKworWEF0b21DYWNoZTo6flhBdG9tQ2Fj
aGUoKSA9IGRlZmF1bHQ7CisKKzo6RGlzcGxheSogWEF0b21DYWNoZTo6ZGlzcGxheSgpIGNvbnN0
IHsKKyAgcmV0dXJuIGRpc3BsYXlfOworfQorCitBdG9tIFhBdG9tQ2FjaGU6OldtU3RhdGUoKSB7
CisgIHJldHVybiBDcmVhdGVJZk5vdEV4aXN0KCZ3bV9zdGF0ZV8sICJXTV9TVEFURSIpOworfQor
CitBdG9tIFhBdG9tQ2FjaGU6OldpbmRvd1R5cGUoKSB7CisgIHJldHVybiBDcmVhdGVJZk5vdEV4
aXN0KCZ3aW5kb3dfdHlwZV8sICJfTkVUX1dNX1dJTkRPV19UWVBFIik7Cit9CisKK0F0b20gWEF0
b21DYWNoZTo6V2luZG93VHlwZU5vcm1hbCgpIHsKKyAgcmV0dXJuIENyZWF0ZUlmTm90RXhpc3Qo
JndpbmRvd190eXBlX25vcm1hbF8sICJfTkVUX1dNX1dJTkRPV19UWVBFX05PUk1BTCIpOworfQor
CitBdG9tIFhBdG9tQ2FjaGU6OkNyZWF0ZUlmTm90RXhpc3QoQXRvbSogYXRvbSwgY29uc3QgY2hh
ciogbmFtZSkgeworICBSVENfRENIRUNLKGF0b20pOworICBpZiAoKmF0b20gPT0gTm9uZSkgewor
ICAgICphdG9tID0gWEludGVybkF0b20oZGlzcGxheSgpLCBuYW1lLCBUcnVlKTsKKyAgfQorICBy
ZXR1cm4gKmF0b207Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2xpbnV4L3hfYXRvbV9jYWNoZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9hdG9tX2NhY2hl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzE3ODlmMDUxMjRlMTAxMDBiZmEwZDI5MDg4M2JhODJmMWMzNjJlZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfYXRvbV9jYWNoZS5oCkBAIC0wLDAg
KzEsNDMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RP
UF9DQVBUVVJFX0xJTlVYX1hfQVRPTV9DQUNIRV9IXworI2RlZmluZSBNT0RVTEVTX0RFU0tUT1Bf
Q0FQVFVSRV9MSU5VWF9YX0FUT01fQ0FDSEVfSF8KKworI2luY2x1ZGUgPFgxMS9YYXRvbS5oPgor
I2luY2x1ZGUgPFgxMS9YbGliLmg+CisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBBIGNhY2hl
IG9mIEF0b20uIEVhY2ggQXRvbSBvYmplY3QgaXMgY3JlYXRlZCBvbiBkZW1hbmQuCitjbGFzcyBY
QXRvbUNhY2hlIGZpbmFsIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFhBdG9tQ2FjaGUoOjpEaXNw
bGF5KiBkaXNwbGF5KTsKKyAgflhBdG9tQ2FjaGUoKTsKKworICA6OkRpc3BsYXkqIGRpc3BsYXko
KSBjb25zdDsKKworICBBdG9tIFdtU3RhdGUoKTsKKyAgQXRvbSBXaW5kb3dUeXBlKCk7CisgIEF0
b20gV2luZG93VHlwZU5vcm1hbCgpOworCisgcHJpdmF0ZToKKyAgLy8gSWYgfCphdG9tfCBpcyBO
b25lLCB0aGlzIGZ1bmN0aW9uIHVzZXMgWEludGVybkF0b20oKSB0byByZXRyaWV2ZSBhbiBBdG9t
LgorICBBdG9tIENyZWF0ZUlmTm90RXhpc3QoQXRvbSogYXRvbSwgY29uc3QgY2hhciogbmFtZSk7
CisKKyAgOjpEaXNwbGF5KiBjb25zdCBkaXNwbGF5XzsKKyAgQXRvbSB3bV9zdGF0ZV8gPSBOb25l
OworICBBdG9tIHdpbmRvd190eXBlXyA9IE5vbmU7CisgIEF0b20gd2luZG93X3R5cGVfbm9ybWFs
XyA9IE5vbmU7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9E
VUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfWF9BVE9NX0NBQ0hFX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9saW51eC94X2Vycm9yX3RyYXAuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2Vycm9yX3Ry
YXAuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmI1Y2E0NTEyZGM2MmEyODI1MzIyOGE3ZjYwMzExM2ZjYWExZDk5
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfZXJyb3JfdHJhcC5jYwpAQCAt
MCwwICsxLDY4IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfZXJyb3JfdHJhcC5oIgorCisjaW5jbHVkZSA8YXNzZXJ0
Lmg+CisKKyNpZiBkZWZpbmVkKFRPT0xLSVRfR1RLKQorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNl
bmRpZiAgLy8gIWRlZmluZWQoVE9PTEtJVF9HVEspCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitu
YW1lc3BhY2UgeworCisjaWYgIWRlZmluZWQoVE9PTEtJVF9HVEspCisKKy8vIFRPRE8oc2VyZ2V5
dSk6IFRoaXMgY29kZSBpcyBub3QgdGhyZWFkIHNhZmUuIEZpeCBpdC4gQnVnIDIyMDIuCitzdGF0
aWMgYm9vbCBnX3hzZXJ2ZXJfZXJyb3JfdHJhcF9lbmFibGVkID0gZmFsc2U7CitzdGF0aWMgaW50
IGdfbGFzdF94c2VydmVyX2Vycm9yX2NvZGUgPSAwOworCitpbnQgWFNlcnZlckVycm9ySGFuZGxl
cihEaXNwbGF5KiBkaXNwbGF5LCBYRXJyb3JFdmVudCogZXJyb3JfZXZlbnQpIHsKKyAgYXNzZXJ0
KGdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJsZWQpOworICBnX2xhc3RfeHNlcnZlcl9lcnJvcl9j
b2RlID0gZXJyb3JfZXZlbnQtPmVycm9yX2NvZGU7CisgIHJldHVybiAwOworfQorCisjZW5kaWYg
IC8vICFkZWZpbmVkKFRPT0xLSVRfR1RLKQorCit9ICAvLyBuYW1lc3BhY2UKKworWEVycm9yVHJh
cDo6WEVycm9yVHJhcChEaXNwbGF5KiBkaXNwbGF5KQorICAgIDogb3JpZ2luYWxfZXJyb3JfaGFu
ZGxlcl8oTlVMTCksIGVuYWJsZWRfKHRydWUpIHsKKyNpZiBkZWZpbmVkKFRPT0xLSVRfR1RLKQor
ICBnZGtfZXJyb3JfdHJhcF9wdXNoKCk7CisjZWxzZSAgIC8vICFkZWZpbmVkKFRPT0xLSVRfR1RL
KQorICBhc3NlcnQoIWdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJsZWQpOworICBvcmlnaW5hbF9l
cnJvcl9oYW5kbGVyXyA9IFhTZXRFcnJvckhhbmRsZXIoJlhTZXJ2ZXJFcnJvckhhbmRsZXIpOwor
ICBnX3hzZXJ2ZXJfZXJyb3JfdHJhcF9lbmFibGVkID0gdHJ1ZTsKKyAgZ19sYXN0X3hzZXJ2ZXJf
ZXJyb3JfY29kZSA9IDA7CisjZW5kaWYgIC8vICFkZWZpbmVkKFRPT0xLSVRfR1RLKQorfQorCitp
bnQgWEVycm9yVHJhcDo6R2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpIHsKKyAgZW5hYmxlZF8gPSBm
YWxzZTsKKyNpZiBkZWZpbmVkKFRPT0xLSVRfR1RLKQorICByZXR1cm4gZ2RrX2Vycm9yX3RyYXBf
cHVzaCgpOworI2Vsc2UgICAvLyAhZGVmaW5lZChUT09MS0lUX0dUSykKKyAgYXNzZXJ0KGdfeHNl
cnZlcl9lcnJvcl90cmFwX2VuYWJsZWQpOworICBYU2V0RXJyb3JIYW5kbGVyKG9yaWdpbmFsX2Vy
cm9yX2hhbmRsZXJfKTsKKyAgZ194c2VydmVyX2Vycm9yX3RyYXBfZW5hYmxlZCA9IGZhbHNlOwor
ICByZXR1cm4gZ19sYXN0X3hzZXJ2ZXJfZXJyb3JfY29kZTsKKyNlbmRpZiAgLy8gIWRlZmluZWQo
VE9PTEtJVF9HVEspCit9CisKK1hFcnJvclRyYXA6On5YRXJyb3JUcmFwKCkgeworICBpZiAoZW5h
YmxlZF8pCisgICAgR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2Vycm9yX3RyYXAuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2xpbnV4L3hfZXJyb3JfdHJhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5ZDA1OWEwYmMzNjA4ZTZk
MTVlNmU5Njc0ZWFlYjg5ZTM5NmJkM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51
eC94X2Vycm9yX3RyYXAuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogIENvcHlyaWdodCAoYykg
MjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8K
KworI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9YX0VSUk9SX1RSQVBfSF8K
KyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfWF9FUlJPUl9UUkFQX0hfCisK
KyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gSGVscGVyIGNsYXNzIHRoYXQgcmVn
aXN0ZXJzIFggV2luZG93IGVycm9yIGhhbmRsZXIuIENhbGxlciBjYW4gdXNlCisvLyBHZXRMYXN0
RXJyb3JBbmREaXNhYmxlKCkgdG8gZ2V0IHRoZSBsYXN0IGVycm9yIHRoYXQgd2FzIGNhdWdodCwg
aWYgYW55LgorY2xhc3MgWEVycm9yVHJhcCB7CisgcHVibGljOgorICBleHBsaWNpdCBYRXJyb3JU
cmFwKERpc3BsYXkqIGRpc3BsYXkpOworICB+WEVycm9yVHJhcCgpOworCisgIC8vIFJldHVybnMg
bGFzdCBlcnJvciBhbmQgcmVtb3ZlcyB1bnJlZ2lzdGVycyB0aGUgZXJyb3IgaGFuZGxlci4KKyAg
aW50IEdldExhc3RFcnJvckFuZERpc2FibGUoKTsKKworIHByaXZhdGU6CisgIFhFcnJvckhhbmRs
ZXIgb3JpZ2luYWxfZXJyb3JfaGFuZGxlcl87CisgIGJvb2wgZW5hYmxlZF87CisKKyAgUlRDX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihYRXJyb3JUcmFwKTsKK307CisKK30gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9YX0VS
Uk9SX1RSQVBfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfc2VydmVyX3BpeGVsX2J1
ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xOWRkMTM5OGM5Y2IwZjZjNjQwMDljNTc1ZWYwZmM1MTE1YzFkYjViCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmNjCkBAIC0wLDAg
KzEsMzUxIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL2xpbnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIgorCisjaW5jbHVkZSA8
c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3NobS5oPgorCisjaW5jbHVkZSAibW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvbGludXgveF9lcnJvcl90cmFwLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorCituYW1lc3BhY2Ugd2VicnRj
IHsKKworbmFtZXNwYWNlIHsKKworLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJpdHMgfG1hc2t8
IGhhcyB0byBiZSBzaGlmdGVkIGxlZnQgc28gaXRzIGxhc3QKKy8vIChtb3N0LXNpZ25pZmljYW50
KSBiaXQgc2V0IGJlY29tZXMgdGhlIG1vc3Qtc2lnbmlmaWNhbnQgYml0IG9mIHRoZSB3b3JkLgor
Ly8gV2hlbiB8bWFza3wgaXMgMCB0aGUgZnVuY3Rpb24gcmV0dXJucyAzMS4KK3VpbnQzMl90IE1h
c2tUb1NoaWZ0KHVpbnQzMl90IG1hc2spIHsKKyAgaW50IHNoaWZ0ID0gMDsKKyAgaWYgKChtYXNr
ICYgMHhmZmZmMDAwMHUpID09IDApIHsKKyAgICBtYXNrIDw8PSAxNjsKKyAgICBzaGlmdCArPSAx
NjsKKyAgfQorICBpZiAoKG1hc2sgJiAweGZmMDAwMDAwdSkgPT0gMCkgeworICAgIG1hc2sgPDw9
IDg7CisgICAgc2hpZnQgKz0gODsKKyAgfQorICBpZiAoKG1hc2sgJiAweGYwMDAwMDAwdSkgPT0g
MCkgeworICAgIG1hc2sgPDw9IDQ7CisgICAgc2hpZnQgKz0gNDsKKyAgfQorICBpZiAoKG1hc2sg
JiAweGMwMDAwMDAwdSkgPT0gMCkgeworICAgIG1hc2sgPDw9IDI7CisgICAgc2hpZnQgKz0gMjsK
KyAgfQorICBpZiAoKG1hc2sgJiAweDgwMDAwMDAwdSkgPT0gMCkKKyAgICBzaGlmdCArPSAxOwor
CisgIHJldHVybiBzaGlmdDsKK30KKworLy8gUmV0dXJucyB0cnVlIGlmIHxpbWFnZXwgaXMgaW4g
UkdCIGZvcm1hdC4KK2Jvb2wgSXNYSW1hZ2VSR0JGb3JtYXQoWEltYWdlKiBpbWFnZSkgeworICBy
ZXR1cm4gaW1hZ2UtPmJpdHNfcGVyX3BpeGVsID09IDMyICYmIGltYWdlLT5yZWRfbWFzayA9PSAw
eGZmMDAwMCAmJgorICAgICAgICAgaW1hZ2UtPmdyZWVuX21hc2sgPT0gMHhmZjAwICYmIGltYWdl
LT5ibHVlX21hc2sgPT0gMHhmZjsKK30KKworLy8gV2UgZXhwb3NlIHR3byBmb3JtcyBvZiBibGl0
dGluZyB0byBoYW5kbGUgdmFyaWF0aW9ucyBpbiB0aGUgcGl4ZWwgZm9ybWF0LgorLy8gSW4gRmFz
dEJsaXQoKSwgdGhlIG9wZXJhdGlvbiBpcyBlZmZlY3RpdmVseSBhIG1lbWNweS4KK3ZvaWQgRmFz
dEJsaXQoWEltYWdlKiB4X2ltYWdlLAorICAgICAgICAgICAgICB1aW50OF90KiBzcmNfcG9zLAor
ICAgICAgICAgICAgICBjb25zdCBEZXNrdG9wUmVjdCYgcmVjdCwKKyAgICAgICAgICAgICAgRGVz
a3RvcEZyYW1lKiBmcmFtZSkgeworICBpbnQgc3JjX3N0cmlkZSA9IHhfaW1hZ2UtPmJ5dGVzX3Bl
cl9saW5lOworICBpbnQgZHN0X3ggPSByZWN0LmxlZnQoKSwgZHN0X3kgPSByZWN0LnRvcCgpOwor
CisgIHVpbnQ4X3QqIGRzdF9wb3MgPSBmcmFtZS0+ZGF0YSgpICsgZnJhbWUtPnN0cmlkZSgpICog
ZHN0X3k7CisgIGRzdF9wb3MgKz0gZHN0X3ggKiBEZXNrdG9wRnJhbWU6OmtCeXRlc1BlclBpeGVs
OworCisgIGludCBoZWlnaHQgPSByZWN0LmhlaWdodCgpOworICBpbnQgcm93X2J5dGVzID0gcmVj
dC53aWR0aCgpICogRGVza3RvcEZyYW1lOjprQnl0ZXNQZXJQaXhlbDsKKyAgZm9yIChpbnQgeSA9
IDA7IHkgPCBoZWlnaHQ7ICsreSkgeworICAgIG1lbWNweShkc3RfcG9zLCBzcmNfcG9zLCByb3df
Ynl0ZXMpOworICAgIHNyY19wb3MgKz0gc3JjX3N0cmlkZTsKKyAgICBkc3RfcG9zICs9IGZyYW1l
LT5zdHJpZGUoKTsKKyAgfQorfQorCit2b2lkIFNsb3dCbGl0KFhJbWFnZSogeF9pbWFnZSwKKyAg
ICAgICAgICAgICAgdWludDhfdCogc3JjX3BvcywKKyAgICAgICAgICAgICAgY29uc3QgRGVza3Rv
cFJlY3QmIHJlY3QsCisgICAgICAgICAgICAgIERlc2t0b3BGcmFtZSogZnJhbWUpIHsKKyAgaW50
IHNyY19zdHJpZGUgPSB4X2ltYWdlLT5ieXRlc19wZXJfbGluZTsKKyAgaW50IGRzdF94ID0gcmVj
dC5sZWZ0KCksIGRzdF95ID0gcmVjdC50b3AoKTsKKyAgaW50IHdpZHRoID0gcmVjdC53aWR0aCgp
LCBoZWlnaHQgPSByZWN0LmhlaWdodCgpOworCisgIHVpbnQzMl90IHJlZF9tYXNrID0geF9pbWFn
ZS0+cmVkX21hc2s7CisgIHVpbnQzMl90IGdyZWVuX21hc2sgPSB4X2ltYWdlLT5yZWRfbWFzazsK
KyAgdWludDMyX3QgYmx1ZV9tYXNrID0geF9pbWFnZS0+Ymx1ZV9tYXNrOworCisgIHVpbnQzMl90
IHJlZF9zaGlmdCA9IE1hc2tUb1NoaWZ0KHJlZF9tYXNrKTsKKyAgdWludDMyX3QgZ3JlZW5fc2hp
ZnQgPSBNYXNrVG9TaGlmdChncmVlbl9tYXNrKTsKKyAgdWludDMyX3QgYmx1ZV9zaGlmdCA9IE1h
c2tUb1NoaWZ0KGJsdWVfbWFzayk7CisKKyAgaW50IGJpdHNfcGVyX3BpeGVsID0geF9pbWFnZS0+
Yml0c19wZXJfcGl4ZWw7CisKKyAgdWludDhfdCogZHN0X3BvcyA9IGZyYW1lLT5kYXRhKCkgKyBm
cmFtZS0+c3RyaWRlKCkgKiBkc3RfeTsKKyAgZHN0X3BvcyArPSBkc3RfeCAqIERlc2t0b3BGcmFt
ZTo6a0J5dGVzUGVyUGl4ZWw7CisgIC8vIFRPRE8oaGNsYW0pOiBPcHRpbWl6ZSwgcGVyaGFwcyB1
c2luZyBNTVggY29kZSBvciBieSBjb252ZXJ0aW5nIHRvCisgIC8vIFlVViBkaXJlY3RseS4KKyAg
Ly8gVE9ETyhzZXJnZXl1KTogVGhpcyBjb2RlIGRvZXNuJ3QgaGFuZGxlIFhJbWFnZSBieXRlIG9y
ZGVyIHByb3Blcmx5IGFuZAorICAvLyB3b24ndCB3b3JrIHdpdGggMjRicHAgaW1hZ2VzLiBGaXgg
aXQuCisgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKyAgICB1aW50MzJfdCog
ZHN0X3Bvc18zMiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkc3RfcG9zKTsKKyAgICB1
aW50MzJfdCogc3JjX3Bvc18zMiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihzcmNfcG9z
KTsKKyAgICB1aW50MTZfdCogc3JjX3Bvc18xNiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3Qq
PihzcmNfcG9zKTsKKyAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKyAgICAg
IC8vIERlcmVmZXJlbmNlIHRocm91Z2ggYW4gYXBwcm9wcmlhdGVseS1hbGlnbmVkIHBvaW50ZXIu
CisgICAgICB1aW50MzJfdCBwaXhlbDsKKyAgICAgIGlmIChiaXRzX3Blcl9waXhlbCA9PSAzMikg
eworICAgICAgICBwaXhlbCA9IHNyY19wb3NfMzJbeF07CisgICAgICB9IGVsc2UgaWYgKGJpdHNf
cGVyX3BpeGVsID09IDE2KSB7CisgICAgICAgIHBpeGVsID0gc3JjX3Bvc18xNlt4XTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHBpeGVsID0gc3JjX3Bvc1t4XTsKKyAgICAgIH0KKyAgICAgIHVp
bnQzMl90IHIgPSAocGl4ZWwgJiByZWRfbWFzaykgPDwgcmVkX3NoaWZ0OworICAgICAgdWludDMy
X3QgZyA9IChwaXhlbCAmIGdyZWVuX21hc2spIDw8IGdyZWVuX3NoaWZ0OworICAgICAgdWludDMy
X3QgYiA9IChwaXhlbCAmIGJsdWVfbWFzaykgPDwgYmx1ZV9zaGlmdDsKKyAgICAgIC8vIFdyaXRl
IGFzIDMyLWJpdCBSR0IuCisgICAgICBkc3RfcG9zXzMyW3hdID0KKyAgICAgICAgICAoKHIgPj4g
OCkgJiAweGZmMDAwMCkgfCAoKGcgPj4gMTYpICYgMHhmZjAwKSB8ICgoYiA+PiAyNCkgJiAweGZm
KTsKKyAgICB9CisgICAgZHN0X3BvcyArPSBmcmFtZS0+c3RyaWRlKCk7CisgICAgc3JjX3BvcyAr
PSBzcmNfc3RyaWRlOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitYU2VydmVyUGl4ZWxC
dWZmZXI6OlhTZXJ2ZXJQaXhlbEJ1ZmZlcigpIHt9CisKK1hTZXJ2ZXJQaXhlbEJ1ZmZlcjo6flhT
ZXJ2ZXJQaXhlbEJ1ZmZlcigpIHsKKyAgUmVsZWFzZSgpOworfQorCit2b2lkIFhTZXJ2ZXJQaXhl
bEJ1ZmZlcjo6UmVsZWFzZSgpIHsKKyAgaWYgKHhfaW1hZ2VfKSB7CisgICAgWERlc3Ryb3lJbWFn
ZSh4X2ltYWdlXyk7CisgICAgeF9pbWFnZV8gPSBudWxscHRyOworICB9CisgIGlmICh4X3NobV9p
bWFnZV8pIHsKKyAgICBYRGVzdHJveUltYWdlKHhfc2htX2ltYWdlXyk7CisgICAgeF9zaG1faW1h
Z2VfID0gbnVsbHB0cjsKKyAgfQorICBpZiAoc2htX3BpeG1hcF8pIHsKKyAgICBYRnJlZVBpeG1h
cChkaXNwbGF5Xywgc2htX3BpeG1hcF8pOworICAgIHNobV9waXhtYXBfID0gMDsKKyAgfQorICBp
ZiAoc2htX2djXykgeworICAgIFhGcmVlR0MoZGlzcGxheV8sIHNobV9nY18pOworICAgIHNobV9n
Y18gPSBudWxscHRyOworICB9CisKKyAgUmVsZWFzZVNoYXJlZE1lbW9yeVNlZ21lbnQoKTsKKwor
ICB3aW5kb3dfID0gMDsKK30KKwordm9pZCBYU2VydmVyUGl4ZWxCdWZmZXI6OlJlbGVhc2VTaGFy
ZWRNZW1vcnlTZWdtZW50KCkgeworICBpZiAoIXNobV9zZWdtZW50X2luZm9fKQorICAgIHJldHVy
bjsKKyAgaWYgKHNobV9zZWdtZW50X2luZm9fLT5zaG1hZGRyICE9IG51bGxwdHIpCisgICAgc2ht
ZHQoc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIpOworICBpZiAoc2htX3NlZ21lbnRfaW5mb18t
PnNobWlkICE9IC0xKQorICAgIHNobWN0bChzaG1fc2VnbWVudF9pbmZvXy0+c2htaWQsIElQQ19S
TUlELCAwKTsKKyAgZGVsZXRlIHNobV9zZWdtZW50X2luZm9fOworICBzaG1fc2VnbWVudF9pbmZv
XyA9IG51bGxwdHI7Cit9CisKK2Jvb2wgWFNlcnZlclBpeGVsQnVmZmVyOjpJbml0KERpc3BsYXkq
IGRpc3BsYXksIFdpbmRvdyB3aW5kb3cpIHsKKyAgUmVsZWFzZSgpOworICBkaXNwbGF5XyA9IGRp
c3BsYXk7CisKKyAgWFdpbmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgaWYgKCFHZXRXaW5k
b3dSZWN0KGRpc3BsYXlfLCB3aW5kb3csICZ3aW5kb3dfcmVjdF8sICZhdHRyaWJ1dGVzKSkgewor
ICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHdpbmRvd18gPSB3aW5kb3c7CisgIEluaXRTaG0o
YXR0cmlidXRlcyk7CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgWFNlcnZlclBpeGVsQnVm
ZmVyOjpJbml0U2htKGNvbnN0IFhXaW5kb3dBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSB7CisgIFZp
c3VhbCogZGVmYXVsdF92aXN1YWwgPSBhdHRyaWJ1dGVzLnZpc3VhbDsKKyAgaW50IGRlZmF1bHRf
ZGVwdGggPSBhdHRyaWJ1dGVzLmRlcHRoOworCisgIGludCBtYWpvciwgbWlub3I7CisgIEJvb2wg
aGF2ZV9waXhtYXBzOworICBpZiAoIVhTaG1RdWVyeVZlcnNpb24oZGlzcGxheV8sICZtYWpvciwg
Jm1pbm9yLCAmaGF2ZV9waXhtYXBzKSkgeworICAgIC8vIFNoYXJlZCBtZW1vcnkgbm90IHN1cHBv
cnRlZC4gQ2FwdHVyZVJlY3Qgd2lsbCB1c2UgdGhlIFhJbWFnZSBBUEkgaW5zdGVhZC4KKyAgICBy
ZXR1cm47CisgIH0KKworICBib29sIHVzaW5nX3NobSA9IGZhbHNlOworICBzaG1fc2VnbWVudF9p
bmZvXyA9IG5ldyBYU2htU2VnbWVudEluZm87CisgIHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCA9
IC0xOworICBzaG1fc2VnbWVudF9pbmZvXy0+c2htYWRkciA9IG51bGxwdHI7CisgIHNobV9zZWdt
ZW50X2luZm9fLT5yZWFkT25seSA9IEZhbHNlOworICB4X3NobV9pbWFnZV8gPSBYU2htQ3JlYXRl
SW1hZ2UoZGlzcGxheV8sIGRlZmF1bHRfdmlzdWFsLCBkZWZhdWx0X2RlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWlBpeG1hcCwgMCwgc2htX3NlZ21lbnRfaW5mb18sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dfcmVjdF8ud2lkdGgoKSwgd2lu
ZG93X3JlY3RfLmhlaWdodCgpKTsKKyAgaWYgKHhfc2htX2ltYWdlXykgeworICAgIHNobV9zZWdt
ZW50X2luZm9fLT5zaG1pZCA9CisgICAgICAgIHNobWdldChJUENfUFJJVkFURSwgeF9zaG1faW1h
Z2VfLT5ieXRlc19wZXJfbGluZSAqIHhfc2htX2ltYWdlXy0+aGVpZ2h0LAorICAgICAgICAgICAg
ICAgSVBDX0NSRUFUIHwgMDYwMCk7CisgICAgaWYgKHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCAh
PSAtMSkgeworICAgICAgdm9pZCogc2htYXRfcmVzdWx0ID0gc2htYXQoc2htX3NlZ21lbnRfaW5m
b18tPnNobWlkLCAwLCAwKTsKKyAgICAgIGlmIChzaG1hdF9yZXN1bHQgIT0gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oLTEpKSB7CisgICAgICAgIHNobV9zZWdtZW50X2luZm9fLT5zaG1hZGRyID0g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2htYXRfcmVzdWx0KTsKKyAgICAgICAgeF9zaG1faW1h
Z2VfLT5kYXRhID0gc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHI7CisKKyAgICAgICAgWEVycm9y
VHJhcCBlcnJvcl90cmFwKGRpc3BsYXlfKTsKKyAgICAgICAgdXNpbmdfc2htID0gWFNobUF0dGFj
aChkaXNwbGF5Xywgc2htX3NlZ21lbnRfaW5mb18pOworICAgICAgICBYU3luYyhkaXNwbGF5Xywg
RmFsc2UpOworICAgICAgICBpZiAoZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkg
IT0gMCkKKyAgICAgICAgICB1c2luZ19zaG0gPSBmYWxzZTsKKyAgICAgICAgaWYgKHVzaW5nX3No
bSkgeworICAgICAgICAgIFJUQ19MT0coTFNfVkVSQk9TRSkKKyAgICAgICAgICAgICAgPDwgIlVz
aW5nIFggc2hhcmVkIG1lbW9yeSBzZWdtZW50ICIgPDwgc2htX3NlZ21lbnRfaW5mb18tPnNobWlk
OworICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIFJUQ19MT0coTFNfV0FS
TklORykgPDwgIkZhaWxlZCB0byBnZXQgc2hhcmVkIG1lbW9yeSBzZWdtZW50LiAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJQZXJmb3JtYW5jZSBtYXkgYmUgZGVncmFkZWQuIjsKKyAg
ICB9CisgIH0KKworICBpZiAoIXVzaW5nX3NobSkgeworICAgIFJUQ19MT0coTFNfV0FSTklORykK
KyAgICAgICAgPDwgIk5vdCB1c2luZyBzaGFyZWQgbWVtb3J5LiBQZXJmb3JtYW5jZSBtYXkgYmUg
ZGVncmFkZWQuIjsKKyAgICBSZWxlYXNlU2hhcmVkTWVtb3J5U2VnbWVudCgpOworICAgIHJldHVy
bjsKKyAgfQorCisgIGlmIChoYXZlX3BpeG1hcHMpCisgICAgaGF2ZV9waXhtYXBzID0gSW5pdFBp
eG1hcHMoZGVmYXVsdF9kZXB0aCk7CisKKyAgc2htY3RsKHNobV9zZWdtZW50X2luZm9fLT5zaG1p
ZCwgSVBDX1JNSUQsIDApOworICBzaG1fc2VnbWVudF9pbmZvXy0+c2htaWQgPSAtMTsKKworICBS
VENfTE9HKExTX1ZFUkJPU0UpIDw8ICJVc2luZyBYIHNoYXJlZCBtZW1vcnkgZXh0ZW5zaW9uIHYi
IDw8IG1ham9yIDw8ICIuIgorICAgICAgICAgICAgICAgICAgICAgIDw8IG1pbm9yIDw8ICIgd2l0
aCIgPDwgKGhhdmVfcGl4bWFwcyA/ICIiIDogIm91dCIpCisgICAgICAgICAgICAgICAgICAgICAg
PDwgIiBwaXhtYXBzLiI7Cit9CisKK2Jvb2wgWFNlcnZlclBpeGVsQnVmZmVyOjpJbml0UGl4bWFw
cyhpbnQgZGVwdGgpIHsKKyAgaWYgKFhTaG1QaXhtYXBGb3JtYXQoZGlzcGxheV8pICE9IFpQaXht
YXApCisgICAgcmV0dXJuIGZhbHNlOworCisgIHsKKyAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAo
ZGlzcGxheV8pOworICAgIHNobV9waXhtYXBfID0gWFNobUNyZWF0ZVBpeG1hcCgKKyAgICAgICAg
ZGlzcGxheV8sIHdpbmRvd18sIHNobV9zZWdtZW50X2luZm9fLT5zaG1hZGRyLCBzaG1fc2VnbWVu
dF9pbmZvXywKKyAgICAgICAgd2luZG93X3JlY3RfLndpZHRoKCksIHdpbmRvd19yZWN0Xy5oZWln
aHQoKSwgZGVwdGgpOworICAgIFhTeW5jKGRpc3BsYXlfLCBGYWxzZSk7CisgICAgaWYgKGVycm9y
X3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApIHsKKyAgICAgIC8vIHxzaG1fcGl4
bWFwX3wgaXMgbm90IG5vdCB2YWxpZCBiZWNhdXNlIHRoZSByZXF1ZXN0IHdhcyBub3QgcHJvY2Vz
c2VkCisgICAgICAvLyBieSB0aGUgWCBTZXJ2ZXIsIHNvIHplcm8gaXQuCisgICAgICBzaG1fcGl4
bWFwXyA9IDA7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisKKyAgeworICAgIFhF
cnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5Xyk7CisgICAgWEdDVmFsdWVzIHNobV9nY192YWx1
ZXM7CisgICAgc2htX2djX3ZhbHVlcy5zdWJ3aW5kb3dfbW9kZSA9IEluY2x1ZGVJbmZlcmlvcnM7
CisgICAgc2htX2djX3ZhbHVlcy5ncmFwaGljc19leHBvc3VyZXMgPSBGYWxzZTsKKyAgICBzaG1f
Z2NfID0gWENyZWF0ZUdDKGRpc3BsYXlfLCB3aW5kb3dfLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR0NTdWJ3aW5kb3dNb2RlIHwgR0NHcmFwaGljc0V4cG9zdXJlcywgJnNobV9nY192YWx1ZXMp
OworICAgIFhTeW5jKGRpc3BsYXlfLCBGYWxzZSk7CisgICAgaWYgKGVycm9yX3RyYXAuR2V0TGFz
dEVycm9yQW5kRGlzYWJsZSgpICE9IDApIHsKKyAgICAgIFhGcmVlUGl4bWFwKGRpc3BsYXlfLCBz
aG1fcGl4bWFwXyk7CisgICAgICBzaG1fcGl4bWFwXyA9IDA7CisgICAgICBzaG1fZ2NfID0gMDsg
IC8vIFNlZSBzaG1fcGl4bWFwXyBjb21tZW50IGFib3ZlLgorICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitib29sIFhTZXJ2ZXJQaXhlbEJ1ZmZl
cjo6SXNXaW5kb3dWYWxpZCgpIGNvbnN0IHsKKyAgWFdpbmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRl
czsKKyAgeworICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5Xyk7CisgICAgaWYgKCFY
R2V0V2luZG93QXR0cmlidXRlcyhkaXNwbGF5Xywgd2luZG93XywgJmF0dHJpYnV0ZXMpIHx8Cisg
ICAgICAgIGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApIHsKKyAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgWFNl
cnZlclBpeGVsQnVmZmVyOjpTeW5jaHJvbml6ZSgpIHsKKyAgaWYgKHNobV9zZWdtZW50X2luZm9f
ICYmICFzaG1fcGl4bWFwXykgeworICAgIC8vIFhTaG1HZXRJbWFnZSBjYW4gZmFpbCBpZiB0aGUg
ZGlzcGxheSBpcyBiZWluZyByZWNvbmZpZ3VyZWQuCisgICAgWEVycm9yVHJhcCBlcnJvcl90cmFw
KGRpc3BsYXlfKTsKKyAgICAvLyBYU2htR2V0SW1hZ2UgZmFpbHMgaWYgdGhlIHdpbmRvdyBpcyBw
YXJ0aWFsbHkgb3V0IG9mIHNjcmVlbi4KKyAgICB4c2htX2dldF9pbWFnZV9zdWNjZWVkZWRfID0K
KyAgICAgICAgWFNobUdldEltYWdlKGRpc3BsYXlfLCB3aW5kb3dfLCB4X3NobV9pbWFnZV8sIDAs
IDAsIEFsbFBsYW5lcyk7CisgIH0KK30KKworYm9vbCBYU2VydmVyUGl4ZWxCdWZmZXI6OkNhcHR1
cmVSZWN0KGNvbnN0IERlc2t0b3BSZWN0JiByZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERlc2t0b3BGcmFtZSogZnJhbWUpIHsKKyAgUlRDX0RDSEVDS19MRShyZWN0
LnJpZ2h0KCksIHdpbmRvd19yZWN0Xy53aWR0aCgpKTsKKyAgUlRDX0RDSEVDS19MRShyZWN0LmJv
dHRvbSgpLCB3aW5kb3dfcmVjdF8uaGVpZ2h0KCkpOworCisgIFhJbWFnZSogaW1hZ2U7CisgIHVp
bnQ4X3QqIGRhdGE7CisKKyAgaWYgKHNobV9zZWdtZW50X2luZm9fICYmIChzaG1fcGl4bWFwXyB8
fCB4c2htX2dldF9pbWFnZV9zdWNjZWVkZWRfKSkgeworICAgIGlmIChzaG1fcGl4bWFwXykgewor
ICAgICAgWENvcHlBcmVhKGRpc3BsYXlfLCB3aW5kb3dfLCBzaG1fcGl4bWFwXywgc2htX2djXywg
cmVjdC5sZWZ0KCksCisgICAgICAgICAgICAgICAgcmVjdC50b3AoKSwgcmVjdC53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpLCByZWN0LmxlZnQoKSwKKyAgICAgICAgICAgICAgICByZWN0LnRvcCgpKTsK
KyAgICAgIFhTeW5jKGRpc3BsYXlfLCBGYWxzZSk7CisgICAgfQorCisgICAgaW1hZ2UgPSB4X3No
bV9pbWFnZV87CisgICAgZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGltYWdlLT5k
YXRhKSArCisgICAgICAgICAgIHJlY3QudG9wKCkgKiBpbWFnZS0+Ynl0ZXNfcGVyX2xpbmUgKwor
ICAgICAgICAgICByZWN0LmxlZnQoKSAqIGltYWdlLT5iaXRzX3Blcl9waXhlbCAvIDg7CisKKyAg
fSBlbHNlIHsKKyAgICBpZiAoeF9pbWFnZV8pCisgICAgICBYRGVzdHJveUltYWdlKHhfaW1hZ2Vf
KTsKKyAgICB4X2ltYWdlXyA9IFhHZXRJbWFnZShkaXNwbGF5Xywgd2luZG93XywgcmVjdC5sZWZ0
KCksIHJlY3QudG9wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpLCBBbGxQbGFuZXMsIFpQaXhtYXApOworICAgIGlmICgheF9pbWFnZV8pCisg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbWFnZSA9IHhfaW1hZ2VfOworICAgIGRhdGEgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbWFnZS0+ZGF0YSk7CisgIH0KKworICBpZiAoSXNY
SW1hZ2VSR0JGb3JtYXQoaW1hZ2UpKSB7CisgICAgRmFzdEJsaXQoaW1hZ2UsIGRhdGEsIHJlY3Qs
IGZyYW1lKTsKKyAgfSBlbHNlIHsKKyAgICBTbG93QmxpdChpbWFnZSwgZGF0YSwgcmVjdCwgZnJh
bWUpOworICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkzOThkYWM5
OTY4MDE2OTgxZjNlM2ZlYTU3YTNlODZlNWJkNDlmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL2xpbnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworCisvLyBEb24ndCBpbmNsdWRlIHRoaXMgZmlsZSBpbiBhbnkgLmgg
ZmlsZXMgYmVjYXVzZSBpdCBwdWxscyBpbiBzb21lIFggaGVhZGVycy4KKworI2lmbmRlZiBNT0RV
TEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9YX1NFUlZFUl9QSVhFTF9CVUZGRVJfSF8KKyNkZWZp
bmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfWF9TRVJWRVJfUElYRUxfQlVGRkVSX0hf
CisKKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YU2ht
Lmg+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2dlb21ldHJ5
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorCituYW1lc3BhY2Ug
d2VicnRjIHsKKworY2xhc3MgRGVza3RvcEZyYW1lOworCisvLyBBIGNsYXNzIHRvIGFsbG93IHRo
ZSBYIHNlcnZlcidzIHBpeGVsIGJ1ZmZlciB0byBiZSBhY2Nlc3NlZCBhcyBlZmZpY2llbnRseQor
Ly8gYXMgcG9zc2libGUuCitjbGFzcyBYU2VydmVyUGl4ZWxCdWZmZXIgeworIHB1YmxpYzoKKyAg
WFNlcnZlclBpeGVsQnVmZmVyKCk7CisgIH5YU2VydmVyUGl4ZWxCdWZmZXIoKTsKKworICB2b2lk
IFJlbGVhc2UoKTsKKworICAvLyBBbGxvY2F0ZSAob3IgcmVhbGxvY2F0ZSkgdGhlIHBpeGVsIGJ1
ZmZlciBmb3IgfHdpbmRvd3wuIFJldHVybnMgZmFsc2UgaW4KKyAgLy8gY2FzZSBvZiBhbiBlcnJv
ciAoZS5nLiB3aW5kb3cgZG9lc24ndCBleGlzdCkuCisgIGJvb2wgSW5pdChEaXNwbGF5KiBkaXNw
bGF5LCBXaW5kb3cgd2luZG93KTsKKworICBib29sIGlzX2luaXRpYWxpemVkKCkgeyByZXR1cm4g
d2luZG93XyAhPSAwOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgd2luZG93IHRo
ZSBidWZmZXIgd2FzIGluaXRpYWxpemVkIGZvci4KKyAgRGVza3RvcFNpemUgd2luZG93X3NpemUo
KSB7IHJldHVybiB3aW5kb3dfcmVjdF8uc2l6ZSgpOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgcmVj
dGFuZ2xlIG9mIHRoZSB3aW5kb3cgdGhlIGJ1ZmZlciB3YXMgaW5pdGlhbGl6ZWQgZm9yLgorICBj
b25zdCBEZXNrdG9wUmVjdCYgd2luZG93X3JlY3QoKSB7IHJldHVybiB3aW5kb3dfcmVjdF87IH0K
KworICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdpbmRvdyBjYW4gYmUgZm91bmQuCisgIGJvb2wg
SXNXaW5kb3dWYWxpZCgpIGNvbnN0OworCisgIC8vIElmIHNoYXJlZCBtZW1vcnkgaXMgYmVpbmcg
dXNlZCB3aXRob3V0IHBpeG1hcHMsIHN5bmNocm9uaXplIHRoaXMgcGl4ZWwKKyAgLy8gYnVmZmVy
IHdpdGggdGhlIHJvb3Qgd2luZG93IGNvbnRlbnRzIChvdGhlcndpc2UsIHRoaXMgaXMgYSBuby1v
cCkuCisgIC8vIFRoaXMgaXMgdG8gYXZvaWQgZG9pbmcgYSBmdWxsLXNjcmVlbiBjYXB0dXJlIGZv
ciBlYWNoIGluZGl2aWR1YWwKKyAgLy8gcmVjdGFuZ2xlIGluIHRoZSBjYXB0dXJlIGxpc3QsIHdo
ZW4gaXQgb25seSBuZWVkcyB0byBiZSBkb25lIG9uY2UgYXQgdGhlCisgIC8vIGJlZ2lubmluZy4K
KyAgdm9pZCBTeW5jaHJvbml6ZSgpOworCisgIC8vIENhcHR1cmUgdGhlIHNwZWNpZmllZCByZWN0
YW5nbGUgYW5kIHN0b3JlcyBpdCBpbiB0aGUgfGZyYW1lfC4gSW4gdGhlIGNhc2UKKyAgLy8gd2hl
cmUgdGhlIGZ1bGwtc2NyZWVuIGRhdGEgaXMgY2FwdHVyZWQgYnkgU3luY2hyb25pemUoKSwgdGhp
cyBzaW1wbHkKKyAgLy8gcmV0dXJucyB0aGUgcG9pbnRlciB3aXRob3V0IGRvaW5nIGFueSBtb3Jl
IHdvcmsuIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUKKyAgLy8gdGhhdCB8cmVjdHwgaXMgbm90IGxh
cmdlciB0aGFuIHdpbmRvd19zaXplKCkuCisgIGJvb2wgQ2FwdHVyZVJlY3QoY29uc3QgRGVza3Rv
cFJlY3QmIHJlY3QsIERlc2t0b3BGcmFtZSogZnJhbWUpOworCisgcHJpdmF0ZToKKyAgdm9pZCBS
ZWxlYXNlU2hhcmVkTWVtb3J5U2VnbWVudCgpOworCisgIHZvaWQgSW5pdFNobShjb25zdCBYV2lu
ZG93QXR0cmlidXRlcyYgYXR0cmlidXRlcyk7CisgIGJvb2wgSW5pdFBpeG1hcHMoaW50IGRlcHRo
KTsKKworICBEaXNwbGF5KiBkaXNwbGF5XyA9IG51bGxwdHI7CisgIFdpbmRvdyB3aW5kb3dfID0g
MDsKKyAgRGVza3RvcFJlY3Qgd2luZG93X3JlY3RfOworICBYSW1hZ2UqIHhfaW1hZ2VfID0gbnVs
bHB0cjsKKyAgWFNobVNlZ21lbnRJbmZvKiBzaG1fc2VnbWVudF9pbmZvXyA9IG51bGxwdHI7Cisg
IFhJbWFnZSogeF9zaG1faW1hZ2VfID0gbnVsbHB0cjsKKyAgUGl4bWFwIHNobV9waXhtYXBfID0g
MDsKKyAgR0Mgc2htX2djXyA9IG51bGxwdHI7CisgIGJvb2wgeHNobV9nZXRfaW1hZ2Vfc3VjY2Vl
ZGVkXyA9IGZhbHNlOworCisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oWFNlcnZlclBp
eGVsQnVmZmVyKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBN
T0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9YX1NFUlZFUl9QSVhFTF9CVUZGRVJfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL21hYy9kZXNrdG9wX2NvbmZpZ3VyYXRpb25fbW9uaXRvci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL21hYy9kZXNrdG9wX2NvbmZpZ3VyYXRpb25fbW9uaXRvci5jYwppbmRleCBkNDM2
NGJlZGMyYmU1ZTNkNmZkY2I1NWRiM2ZhNzNlMWIyNDk3MWFhLi45YTMyZjYzOGQ4ZmRiOWYzYWJj
MWVjNDM0NDI5MjgwMjE0MTZiNjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tYWMvZGVza3RvcF9j
b25maWd1cmF0aW9uX21vbml0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbWFjL2Rlc2t0b3BfY29uZmln
dXJhdGlvbl9tb25pdG9yLmNjCkBAIC0xNywxOSArMTcsMTIgQEAKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKLS8vIFRoZSBhbW91bnQgb2YgdGltZSBhbGxvd2VkIGZvciBkaXNwbGF5cyB0byByZWNv
bmZpZ3VyZS4KLXN0YXRpYyBjb25zdCBpbnQ2NF90IGtEaXNwbGF5Q29uZmlndXJhdGlvbkV2ZW50
VGltZW91dE1zID0gMTAgKiAxMDAwOwotCi1EZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3I6OkRl
c2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcigpCi0gICAgOiBkaXNwbGF5X2NvbmZpZ3VyYXRpb25f
Y2FwdHVyZV9ldmVudF8oRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSkgeworRGVza3RvcENvbmZpZ3Vy
YXRpb25Nb25pdG9yOjpEZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3IoKSB7CiAgIENHRXJyb3Ig
ZXJyID0gQ0dEaXNwbGF5UmVnaXN0ZXJSZWNvbmZpZ3VyYXRpb25DYWxsYmFjaygKICAgICAgIERl
c2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcjo6RGlzcGxheXNSZWNvbmZpZ3VyZWRDYWxsYmFjaywg
dGhpcyk7Ci0gIGlmIChlcnIgIT0ga0NHRXJyb3JTdWNjZXNzKSB7CisgIGlmIChlcnIgIT0ga0NH
RXJyb3JTdWNjZXNzKQogICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDR0Rpc3BsYXlSZWdpc3Rl
clJlY29uZmlndXJhdGlvbkNhbGxiYWNrICIgPDwgZXJyOwotICAgIGFib3J0KCk7Ci0gIH0KLSAg
ZGlzcGxheV9jb25maWd1cmF0aW9uX2NhcHR1cmVfZXZlbnRfLT5TZXQoKTsKLQorICBydGM6OkNy
aXRTY29wZSBjcygmZGVza3RvcF9jb25maWd1cmF0aW9uX2xvY2tfKTsKICAgZGVza3RvcF9jb25m
aWd1cmF0aW9uXyA9IE1hY0Rlc2t0b3BDb25maWd1cmF0aW9uOjpHZXRDdXJyZW50KAogICAgICAg
TWFjRGVza3RvcENvbmZpZ3VyYXRpb246OlRvcExlZnRPcmlnaW4pOwogfQpAQCAtNDEsMTkgKzM0
LDEzIEBAIERlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcjo6fkRlc2t0b3BDb25maWd1cmF0aW9u
TW9uaXRvcigpIHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ0dEaXNwbGF5UmVtb3ZlUmVj
b25maWd1cmF0aW9uQ2FsbGJhY2sgIiA8PCBlcnI7CiB9CiAKLXZvaWQgRGVza3RvcENvbmZpZ3Vy
YXRpb25Nb25pdG9yOjpMb2NrKCkgewotICBpZiAoIWRpc3BsYXlfY29uZmlndXJhdGlvbl9jYXB0
dXJlX2V2ZW50Xy0+V2FpdCgKLSAgICAgICAgICBrRGlzcGxheUNvbmZpZ3VyYXRpb25FdmVudFRp
bWVvdXRNcykpIHsKLSAgICBSVENfTE9HX0YoTFNfRVJST1IpIDw8ICJFdmVudCB3YWl0IHRpbWVk
IG91dC4iOwotICAgIGFib3J0KCk7Ci0gIH0KLX0KLQotdm9pZCBEZXNrdG9wQ29uZmlndXJhdGlv
bk1vbml0b3I6OlVubG9jaygpIHsKLSAgZGlzcGxheV9jb25maWd1cmF0aW9uX2NhcHR1cmVfZXZl
bnRfLT5TZXQoKTsKK01hY0Rlc2t0b3BDb25maWd1cmF0aW9uIERlc2t0b3BDb25maWd1cmF0aW9u
TW9uaXRvcjo6ZGVza3RvcF9jb25maWd1cmF0aW9uKCkgeworICBydGM6OkNyaXRTY29wZSBjcml0
KCZkZXNrdG9wX2NvbmZpZ3VyYXRpb25fbG9ja18pOworICByZXR1cm4gZGVza3RvcF9jb25maWd1
cmF0aW9uXzsKIH0KIAogLy8gc3RhdGljCisvLyBUaGlzIG1ldGhvZCBtYXkgYmUgY2FsbGVkIG9u
IGFueSBzeXN0ZW0gdGhyZWFkLgogdm9pZCBEZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3I6OkRp
c3BsYXlzUmVjb25maWd1cmVkQ2FsbGJhY2soCiAgICAgQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxh
eSwKICAgICBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MgZmxhZ3MsCkBAIC03MiwyNCArNTks
MTUgQEAgdm9pZCBEZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3I6OkRpc3BsYXlzUmVjb25maWd1
cmVkKAogICAgICAgICAgICAgICAgICAgIDw8IGZsYWdzOwogCiAgIGlmIChmbGFncyAmIGtDR0Rp
c3BsYXlCZWdpbkNvbmZpZ3VyYXRpb25GbGFnKSB7Ci0gICAgaWYgKHJlY29uZmlndXJpbmdfZGlz
cGxheXNfLmVtcHR5KCkpIHsKLSAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IGRpc3BsYXkg
dG8gc3RhcnQgcmVjb25maWd1cmluZyB0aGVuIHdhaXQgb24KLSAgICAgIC8vIHxkaXNwbGF5X2Nv
bmZpZ3VyYXRpb25fY2FwdHVyZV9ldmVudF98IHRvIGJsb2NrIHRoZSBjYXB0dXJlIHRocmVhZAot
ICAgICAgLy8gZnJvbSBhY2Nlc3NpbmcgZGlzcGxheSBtZW1vcnkgdW50aWwgdGhlIHJlY29uZmln
dXJhdGlvbiBjb21wbGV0ZXMuCi0gICAgICBpZiAoIWRpc3BsYXlfY29uZmlndXJhdGlvbl9jYXB0
dXJlX2V2ZW50Xy0+V2FpdCgKLSAgICAgICAgICAgICAga0Rpc3BsYXlDb25maWd1cmF0aW9uRXZl
bnRUaW1lb3V0TXMpKSB7Ci0gICAgICAgIFJUQ19MT0dfRihMU19FUlJPUikgPDwgIkV2ZW50IHdh
aXQgdGltZWQgb3V0LiI7Ci0gICAgICAgIGFib3J0KCk7Ci0gICAgICB9Ci0gICAgfQogICAgIHJl
Y29uZmlndXJpbmdfZGlzcGxheXNfLmluc2VydChkaXNwbGF5KTsKLSAgfSBlbHNlIHsKLSAgICBy
ZWNvbmZpZ3VyaW5nX2Rpc3BsYXlzXy5lcmFzZShkaXNwbGF5KTsKLSAgICBpZiAocmVjb25maWd1
cmluZ19kaXNwbGF5c18uZW1wdHkoKSkgewotICAgICAgZGVza3RvcF9jb25maWd1cmF0aW9uXyA9
IE1hY0Rlc2t0b3BDb25maWd1cmF0aW9uOjpHZXRDdXJyZW50KAotICAgICAgICAgIE1hY0Rlc2t0
b3BDb25maWd1cmF0aW9uOjpUb3BMZWZ0T3JpZ2luKTsKLSAgICAgIGRpc3BsYXlfY29uZmlndXJh
dGlvbl9jYXB0dXJlX2V2ZW50Xy0+U2V0KCk7Ci0gICAgfQorICAgIHJldHVybjsKKyAgfQorCisg
IHJlY29uZmlndXJpbmdfZGlzcGxheXNfLmVyYXNlKGRpc3BsYXkpOworICBpZiAocmVjb25maWd1
cmluZ19kaXNwbGF5c18uZW1wdHkoKSkgeworICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZkZXNrdG9w
X2NvbmZpZ3VyYXRpb25fbG9ja18pOworICAgIGRlc2t0b3BfY29uZmlndXJhdGlvbl8gPSBNYWNE
ZXNrdG9wQ29uZmlndXJhdGlvbjo6R2V0Q3VycmVudCgKKyAgICAgICAgTWFjRGVza3RvcENvbmZp
Z3VyYXRpb246OlRvcExlZnRPcmlnaW4pOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L21hYy9kZXNrdG9wX2NvbmZpZ3VyYXRpb25fbW9uaXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbWFjL2Rlc2t0
b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmgKaW5kZXggNTIxNWU1NDk2YWRlOGQyYjAxMmNiMGM1
ODJmOTU1YmI0ZDAyYjYzNC4uY2JmNTgwYjIzNTMwMWY2YTM3ZmQzODllZmFkOWQ3NWExZGI3OTU0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbWFjL2Rlc2t0b3BfY29uZmlndXJhdGlvbl9tb25pdG9y
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbWFjL2Rlc2t0b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmgKQEAg
LTE5LDI1ICsxOSwxNyBAQAogI2luY2x1ZGUgImFwaS9yZWZjb3VudGVkYmFzZS5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21hYy9kZXNrdG9wX2NvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvY3JpdGljYWxzZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBFdmVu
dFdyYXBwZXI7Ci0KIC8vIFRoZSBjbGFzcyBwcm92aWRlcyBmdW5jdGlvbnMgdG8gc3luY2hyb25p
emUgY2FwdHVyaW5nIGFuZCBkaXNwbGF5CiAvLyByZWNvbmZpZ3VyaW5nIGFjcm9zcyB0aHJlYWRz
LCBhbmQgdGhlIHVwLXRvLWRhdGUgTWFjRGVza3RvcENvbmZpZ3VyYXRpb24uCiBjbGFzcyBEZXNr
dG9wQ29uZmlndXJhdGlvbk1vbml0b3IgOiBwdWJsaWMgcnRjOjpSZWZDb3VudGVkQmFzZSB7CiAg
cHVibGljOgogICBEZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3IoKTsKLSAgLy8gQWNxdWlyZXMg
YSBsb2NrIG9uIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0gIHZvaWQgTG9jaygpOwotICAv
LyBSZWxlYXNlcyB0aGUgbG9jayBwcmV2aW91c2x5IGFjcXVpcmVkLgotICB2b2lkIFVubG9jaygp
OwotICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IGRlc2t0b3AgY29uZmlndXJhdGlvbi4gU2hvdWxk
IG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlCi0gIC8vIGxvY2sgaGFzIGJlZW4gYWNxdWlyZWQuCi0g
IGNvbnN0IE1hY0Rlc2t0b3BDb25maWd1cmF0aW9uJiBkZXNrdG9wX2NvbmZpZ3VyYXRpb24oKSB7
Ci0gICAgcmV0dXJuIGRlc2t0b3BfY29uZmlndXJhdGlvbl87Ci0gIH0KKyAgLy8gUmV0dXJucyB0
aGUgY3VycmVudCBkZXNrdG9wIGNvbmZpZ3VyYXRpb24uCisgIE1hY0Rlc2t0b3BDb25maWd1cmF0
aW9uIGRlc2t0b3BfY29uZmlndXJhdGlvbigpOwogCiAgcHJvdGVjdGVkOgogICB+RGVza3RvcENv
bmZpZ3VyYXRpb25Nb25pdG9yKCkgb3ZlcnJpZGU7CkBAIC00OSw5ICs0MSwxMCBAQCBjbGFzcyBE
ZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3IgOiBwdWJsaWMgcnRjOjpSZWZDb3VudGVkQmFzZSB7
CiAgIHZvaWQgRGlzcGxheXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3Mg
ZmxhZ3MpOwogCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGRlc2t0b3BfY29uZmlndXJhdGlvbl9s
b2NrXzsKKyAgTWFjRGVza3RvcENvbmZpZ3VyYXRpb24gZGVza3RvcF9jb25maWd1cmF0aW9uXwor
ICAgICAgUlRDX0dVQVJERURfQlkoJmRlc2t0b3BfY29uZmlndXJhdGlvbl9sb2NrXyk7CiAgIHN0
ZDo6c2V0PENHRGlyZWN0RGlzcGxheUlEPiByZWNvbmZpZ3VyaW5nX2Rpc3BsYXlzXzsKLSAgTWFj
RGVza3RvcENvbmZpZ3VyYXRpb24gZGVza3RvcF9jb25maWd1cmF0aW9uXzsKLSAgc3RkOjp1bmlx
dWVfcHRyPEV2ZW50V3JhcHBlcj4gZGlzcGxheV9jb25maWd1cmF0aW9uX2NhcHR1cmVfZXZlbnRf
OwogCiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oRGVza3RvcENvbmZpZ3VyYXRpb25N
b25pdG9yKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tYWMvc2NyZWVuX2NhcHR1cmVyX21h
Yy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL21hYy9zY3JlZW5fY2FwdHVyZXJfbWFjLm1tCmluZGV4IDBkNGZhMDcy
YjVmNjQzM2FmMDA4MjJlMmEzNzYzNzhmNTFmNDNmMjguLjU0MmQxYzVmNDNmZTc0ZmE4MGQ1ZmE1
MmYzOWU3MDRkOWE0Mzg3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21hYy9zY3JlZW5fY2FwdHVy
ZXJfbWFjLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21hYy9zY3JlZW5fY2FwdHVyZXJfbWFjLm1tCkBAIC0x
NjcsMTEgKzE2Nyw3IEBAIFNjcmVlbkNhcHR1cmVyTWFjOjp+U2NyZWVuQ2FwdHVyZXJNYWMoKSB7
CiAKIGJvb2wgU2NyZWVuQ2FwdHVyZXJNYWM6OkluaXQoKSB7CiAgIFRSQUNFX0VWRU5UMCgid2Vi
cnRjIiwgIlNjcmVlbkNhcHR1cmVyTWFjOjpJbml0Iik7Ci0KLSAgZGVza3RvcF9jb25maWdfbW9u
aXRvcl8tPkxvY2soKTsKICAgZGVza3RvcF9jb25maWdfID0gZGVza3RvcF9jb25maWdfbW9uaXRv
cl8tPmRlc2t0b3BfY29uZmlndXJhdGlvbigpOwotICBkZXNrdG9wX2NvbmZpZ19tb25pdG9yXy0+
VW5sb2NrKCk7Ci0KICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTIwNyw3ICsyMDMsNiBAQCB2b2lk
IFNjcmVlbkNhcHR1cmVyTWFjOjpDYXB0dXJlRnJhbWUoKSB7CiAgIHF1ZXVlXy5Nb3ZlVG9OZXh0
RnJhbWUoKTsKICAgUlRDX0RDSEVDSyghcXVldWVfLmN1cnJlbnRfZnJhbWUoKSB8fCAhcXVldWVf
LmN1cnJlbnRfZnJhbWUoKS0+SXNTaGFyZWQoKSk7CiAKLSAgZGVza3RvcF9jb25maWdfbW9uaXRv
cl8tPkxvY2soKTsKICAgTWFjRGVza3RvcENvbmZpZ3VyYXRpb24gbmV3X2NvbmZpZyA9IGRlc2t0
b3BfY29uZmlnX21vbml0b3JfLT5kZXNrdG9wX2NvbmZpZ3VyYXRpb24oKTsKICAgaWYgKCFkZXNr
dG9wX2NvbmZpZ18uRXF1YWxzKG5ld19jb25maWcpKSB7CiAgICAgZGVza3RvcF9jb25maWdfID0g
bmV3X2NvbmZpZzsKQEAgLTIzNCw3ICsyMjksNiBAQCB2b2lkIFNjcmVlbkNhcHR1cmVyTWFjOjpD
YXB0dXJlRnJhbWUoKSB7CiAgIERlc2t0b3BGcmFtZSogY3VycmVudF9mcmFtZSA9IHF1ZXVlXy5j
dXJyZW50X2ZyYW1lKCk7CiAKICAgaWYgKCFDZ0JsaXQoKmN1cnJlbnRfZnJhbWUsIHJlZ2lvbikp
IHsKLSAgICBkZXNrdG9wX2NvbmZpZ19tb25pdG9yXy0+VW5sb2NrKCk7CiAgICAgY2FsbGJhY2tf
LT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9QRVJNQU5FTlQsIG51bGxwdHIpOwogICAg
IHJldHVybjsKICAgfQpAQCAtMjU2LDEwICsyNTAsNiBAQCB2b2lkIFNjcmVlbkNhcHR1cmVyTWFj
OjpDYXB0dXJlRnJhbWUoKSB7CiAKICAgaGVscGVyXy5zZXRfc2l6ZV9tb3N0X3JlY2VudChuZXdf
ZnJhbWUtPnNpemUoKSk7CiAKLSAgLy8gU2lnbmFsIHRoYXQgd2UgYXJlIGRvbmUgY2FwdHVyaW5n
IGRhdGEgZnJvbSB0aGUgZGlzcGxheSBmcmFtZWJ1ZmZlciwKLSAgLy8gYW5kIGFjY2Vzc2luZyBk
aXNwbGF5IHN0cnVjdHVyZXMuCi0gIGRlc2t0b3BfY29uZmlnX21vbml0b3JfLT5VbmxvY2soKTsK
LQogICBuZXdfZnJhbWUtPnNldF9jYXB0dXJlX3RpbWVfbXMoKHJ0Yzo6VGltZU5hbm9zKCkgLSBj
YXB0dXJlX3N0YXJ0X3RpbWVfbmFub3MpIC8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ0Yzo6a051bU5hbm9zZWNzUGVyTWlsbGlzZWMpOwogICBjYWxsYmFja18tPk9uQ2FwdHVy
ZVJlc3VsdChSZXN1bHQ6OlNVQ0NFU1MsIHN0ZDo6bW92ZShuZXdfZnJhbWUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25pdG9yX2xpbnV4LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91
c2VfY3Vyc29yX21vbml0b3JfbGludXguY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVmMzQ0ZWY0MDhhNjk2Mjcw
NmMxZTk0MDg0ZDIwN2RhYTY4N2NiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNl
X2N1cnNvcl9tb25pdG9yX2xpbnV4LmNjCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3JfbW9u
aXRvci5oIgorCisjaWYgZGVmaW5lZChVU0VfWDExKQorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL2xpbnV4L21vdXNlX2N1cnNvcl9tb25pdG9yX3gxMS5oIgorI2VuZGlmICAvLyBk
ZWZpbmVkKFVTRV9YMTEpCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBzdGF0aWMKK01vdXNl
Q3Vyc29yTW9uaXRvciogTW91c2VDdXJzb3JNb25pdG9yOjpDcmVhdGVGb3JXaW5kb3coCisgICAg
Y29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zLAorICAgIFdpbmRvd0lkIHdpbmRv
dykgeworI2lmIGRlZmluZWQoVVNFX1gxMSkKKyAgcmV0dXJuIE1vdXNlQ3Vyc29yTW9uaXRvclgx
MTo6Q3JlYXRlRm9yV2luZG93KG9wdGlvbnMsIHdpbmRvdyk7CisjZWxzZQorICByZXR1cm4gbnVs
bHB0cjsKKyNlbmRpZiAgLy8gZGVmaW5lZChVU0VfWDExKQorfQorCisvLyBzdGF0aWMKK01vdXNl
Q3Vyc29yTW9uaXRvciogTW91c2VDdXJzb3JNb25pdG9yOjpDcmVhdGVGb3JTY3JlZW4oCisgICAg
Y29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zLAorICAgIFNjcmVlbklkIHNjcmVl
bikgeworI2lmIGRlZmluZWQoVVNFX1gxMSkKKyAgcmV0dXJuIE1vdXNlQ3Vyc29yTW9uaXRvclgx
MTo6Q3JlYXRlRm9yU2NyZWVuKG9wdGlvbnMsIHNjcmVlbik7CisjZWxzZQorICByZXR1cm4gbnVs
bHB0cjsKKyNlbmRpZiAgLy8gZGVmaW5lZChVU0VfWDExKQorfQorCisvLyBzdGF0aWMKK3N0ZDo6
dW5pcXVlX3B0cjxNb3VzZUN1cnNvck1vbml0b3I+IE1vdXNlQ3Vyc29yTW9uaXRvcjo6Q3JlYXRl
KAorICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgeworI2lmIGRlZmlu
ZWQoVVNFX1gxMSkKKyAgcmV0dXJuIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6Q3JlYXRlKG9wdGlv
bnMpOworI2Vsc2UKKyAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYgIC8vIGRlZmluZWQoVVNFX1gx
MSkKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91
c2VfY3Vyc29yX21vbml0b3JfbWFjLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2VfY3Vyc29yX21vbml0b3Jf
bWFjLm1tCmluZGV4IGRlODg3NjQzOGY4YTk4NjBlOWI1NDBjZTllOGZkZDE2NWM3ODVmYjcuLjM0
MDJhNWZmYmJjYmUwNDBkZDE1M2JhZjRmNGNkZGNiZmM2ZTM5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL21vdXNlX2N1cnNvcl9tb25pdG9yX21hYy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJz
b3JfbW9uaXRvcl9tYWMubW0KQEAgLTExNywxMCArMTE3LDggQEAgdm9pZCBNb3VzZUN1cnNvck1v
bml0b3JNYWM6OkNhcHR1cmUoKSB7CiAKICAgRGVza3RvcFZlY3RvciBwb3NpdGlvbihnY19wb3Np
dGlvbi54LCBnY19wb3NpdGlvbi55KTsKIAotICBjb25maWd1cmF0aW9uX21vbml0b3JfLT5Mb2Nr
KCk7CiAgIE1hY0Rlc2t0b3BDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPQogICAgICAgY29u
ZmlndXJhdGlvbl9tb25pdG9yXy0+ZGVza3RvcF9jb25maWd1cmF0aW9uKCk7Ci0gIGNvbmZpZ3Vy
YXRpb25fbW9uaXRvcl8tPlVubG9jaygpOwogICBmbG9hdCBzY2FsZSA9IEdldFNjYWxlRmFjdG9y
QXRQb3NpdGlvbihjb25maWd1cmF0aW9uLCBwb3NpdGlvbik7CiAKICAgQ2FwdHVyZUltYWdlKHNj
YWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25pdG9yX3gxMS5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25pdG9yX3gxMS5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDE3NDliZDI4NDFiYjVmNmFhZGIyNzZiYjQyOWU1MGE0ODRiNmE0ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3Vz
ZV9jdXJzb3JfbW9uaXRvcl94MTEuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAot
LyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
Ci0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJt
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3JfbW9uaXRvci5oIgotCi0jaW5jbHVk
ZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KLSNpbmNsdWRlIDxYMTEvZXh0
ZW5zaW9ucy9YZml4ZXMuaD4KLQotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rl
c2t0b3BfY2FwdHVyZV9vcHRpb25zLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvZGVza3RvcF9jYXB0dXJlX3R5cGVzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvZGVza3RvcF9mcmFtZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L21vdXNlX2N1cnNvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94
X2Vycm9yX3RyYXAuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0KLW5hbWVzcGFj
ZSB7Ci0KLS8vIFdpbmRvd0NhcHR1cmVyIHJldHVybnMgd2luZG93IElEcyBvZiBYMTEgd2luZG93
cyB3aXRoIFdNX1NUQVRFIGF0dHJpYnV0ZS4KLS8vIFRoZXNlIHdpbmRvd3MgbWF5IG5vdCBiZSBp
bW1lZGlhdGUgY2hpbGRyZW4gb2YgdGhlIHJvb3Qgd2luZG93LCBiZWNhdXNlCi0vLyB3aW5kb3cg
bWFuYWdlcnMgbWF5IHJlLXBhcmVudCB0aGVtIHRvIGFkZCBkZWNvcmF0aW9ucy4gSG93ZXZlciwK
LS8vIFhRdWVyeVBvaW50ZXIoKSBleHBlY3RzIHRvIGJlIHBhc3NlZCBjaGlsZHJlbiBvZiB0aGUg
cm9vdC4gVGhpcyBmdW5jdGlvbgotLy8gc2VhcmNoZXMgdXAgdGhlIGxpc3Qgb2YgdGhlIHdpbmRv
d3MgdG8gZmluZCB0aGUgcm9vdCBjaGlsZCB0aGF0IGNvcnJlc3BvbmRzCi0vLyB0byB8d2luZG93
fC4KLVdpbmRvdyBHZXRUb3BMZXZlbFdpbmRvdyhEaXNwbGF5KiBkaXNwbGF5LCBXaW5kb3cgd2lu
ZG93KSB7Ci0gIHdoaWxlICh0cnVlKSB7Ci0gICAgLy8gSWYgdGhlIHdpbmRvdyBpcyBpbiBXaXRo
ZHJhd25TdGF0ZSB0aGVuIGxvb2sgYXQgYWxsIG9mIGl0cyBjaGlsZHJlbi4KLSAgICA6OldpbmRv
dyByb290LCBwYXJlbnQ7Ci0gICAgOjpXaW5kb3cqIGNoaWxkcmVuOwotICAgIHVuc2lnbmVkIGlu
dCBudW1fY2hpbGRyZW47Ci0gICAgaWYgKCFYUXVlcnlUcmVlKGRpc3BsYXksIHdpbmRvdywgJnJv
b3QsICZwYXJlbnQsICZjaGlsZHJlbiwKLSAgICAgICAgICAgICAgICAgICAgJm51bV9jaGlsZHJl
bikpIHsKLSAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gcXVlcnkgZm9yIGNo
aWxkIHdpbmRvd3MgYWx0aG91Z2ggd2luZG93IgotICAgICAgICAgICAgICAgICAgICAgICAgPDwg
ImRvZXMgbm90IGhhdmUgYSB2YWxpZCBXTV9TVEFURS4iOwotICAgICAgcmV0dXJuIE5vbmU7Ci0g
ICAgfQotICAgIGlmIChjaGlsZHJlbikKLSAgICAgIFhGcmVlKGNoaWxkcmVuKTsKLQotICAgIGlm
IChwYXJlbnQgPT0gcm9vdCkKLSAgICAgIGJyZWFrOwotCi0gICAgd2luZG93ID0gcGFyZW50Owot
ICB9Ci0KLSAgcmV0dXJuIHdpbmRvdzsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLW5hbWVzcGFj
ZSB3ZWJydGMgewotCi1jbGFzcyBNb3VzZUN1cnNvck1vbml0b3JYMTEgOiBwdWJsaWMgTW91c2VD
dXJzb3JNb25pdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNoYXJl
ZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIHsKLSBwdWJsaWM6Ci0gIE1vdXNlQ3Vyc29yTW9uaXRv
clgxMShjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsIFdpbmRvdyB3aW5kb3cp
OwotICB+TW91c2VDdXJzb3JNb25pdG9yWDExKCkgb3ZlcnJpZGU7Ci0KLSAgdm9pZCBJbml0KENh
bGxiYWNrKiBjYWxsYmFjaywgTW9kZSBtb2RlKSBvdmVycmlkZTsKLSAgdm9pZCBDYXB0dXJlKCkg
b3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICAvLyBTaGFyZWRYRGlzcGxheTo6WEV2ZW50SGFuZGxl
ciBpbnRlcmZhY2UuCi0gIGJvb2wgSGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVudCYgZXZlbnQpIG92
ZXJyaWRlOwotCi0gIERpc3BsYXkqIGRpc3BsYXkoKSB7IHJldHVybiB4X2Rpc3BsYXlfLT5kaXNw
bGF5KCk7IH0KLQotICAvLyBDYXB0dXJlcyBjdXJyZW50IGN1cnNvciBzaGFwZSBhbmQgc3RvcmVz
IGl0IGluIHxjdXJzb3Jfc2hhcGVffC4KLSAgdm9pZCBDYXB0dXJlQ3Vyc29yKCk7Ci0KLSAgcnRj
OjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiB4X2Rpc3BsYXlfOwotICBDYWxsYmFjayog
Y2FsbGJhY2tfOwotICBNb2RlIG1vZGVfOwotICBXaW5kb3cgd2luZG93XzsKLQotICBib29sIGhh
dmVfeGZpeGVzXzsKLSAgaW50IHhmaXhlc19ldmVudF9iYXNlXzsKLSAgaW50IHhmaXhlc19lcnJv
cl9iYXNlXzsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8TW91c2VDdXJzb3I+IGN1cnNvcl9zaGFwZV87
Ci19OwotCi1Nb3VzZUN1cnNvck1vbml0b3JYMTE6Ok1vdXNlQ3Vyc29yTW9uaXRvclgxMSgKLSAg
ICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsCi0gICAgV2luZG93IHdpbmRv
dykKLSAgICA6IHhfZGlzcGxheV8ob3B0aW9ucy54X2Rpc3BsYXkoKSksCi0gICAgICBjYWxsYmFj
a18oTlVMTCksCi0gICAgICBtb2RlXyhTSEFQRV9BTkRfUE9TSVRJT04pLAotICAgICAgd2luZG93
Xyh3aW5kb3cpLAotICAgICAgaGF2ZV94Zml4ZXNfKGZhbHNlKSwKLSAgICAgIHhmaXhlc19ldmVu
dF9iYXNlXygtMSksCi0gICAgICB4Zml4ZXNfZXJyb3JfYmFzZV8oLTEpIHsKLSAgLy8gU2V0IGEg
ZGVmYXVsdCBpbml0aWFsIGN1cnNvciBzaGFwZSBpbiBjYXNlIFhGaXhlcyBpcyBub3QgcHJlc2Vu
dC4KLSAgY29uc3QgaW50IGtTaXplID0gNTsKLSAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFt
ZT4gZGVmYXVsdF9jdXJzb3IoCi0gICAgICBuZXcgQmFzaWNEZXNrdG9wRnJhbWUoRGVza3RvcFNp
emUoa1NpemUsIGtTaXplKSkpOwotICBjb25zdCB1aW50OF90IHBpeGVsc1trU2l6ZSAqIGtTaXpl
XSA9IHsKLSAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4
ZmYsIDB4ZmYsCi0gICAgICAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweGZmLCAweDAwLCAweDAw
LCAweGZmLCAweGZmLAotICAgICAgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMH07Ci0gIHVpbnQ4X3QqIHB0ciA9IGRlZmF1bHRfY3Vyc29yLT5kYXRhKCk7Ci0gIGZvciAo
aW50IHkgPSAwOyB5IDwga1NpemU7ICsreSkgewotICAgIGZvciAoaW50IHggPSAwOyB4IDwga1Np
emU7ICsreCkgewotICAgICAgKnB0cisrID0gcGl4ZWxzW2tTaXplICogeSArIHhdOwotICAgICAg
KnB0cisrID0gcGl4ZWxzW2tTaXplICogeSArIHhdOwotICAgICAgKnB0cisrID0gcGl4ZWxzW2tT
aXplICogeSArIHhdOwotICAgICAgKnB0cisrID0gMHhmZjsKLSAgICB9Ci0gIH0KLSAgRGVza3Rv
cFZlY3RvciBob3RzcG90KDIsIDIpOwotICBjdXJzb3Jfc2hhcGVfLnJlc2V0KG5ldyBNb3VzZUN1
cnNvcihkZWZhdWx0X2N1cnNvci5yZWxlYXNlKCksIGhvdHNwb3QpKTsKLX0KLQotTW91c2VDdXJz
b3JNb25pdG9yWDExOjp+TW91c2VDdXJzb3JNb25pdG9yWDExKCkgewotICBpZiAoaGF2ZV94Zml4
ZXNfKSB7Ci0gICAgeF9kaXNwbGF5Xy0+UmVtb3ZlRXZlbnRIYW5kbGVyKHhmaXhlc19ldmVudF9i
YXNlXyArIFhGaXhlc0N1cnNvck5vdGlmeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcyk7Ci0gIH0KLX0KLQotdm9pZCBNb3VzZUN1cnNvck1vbml0b3JYMTE6OkluaXQo
Q2FsbGJhY2sqIGNhbGxiYWNrLCBNb2RlIG1vZGUpIHsKLSAgLy8gSW5pdCBjYW4gYmUgY2FsbGVk
IG9ubHkgb25jZSBwZXIgaW5zdGFuY2Ugb2YgTW91c2VDdXJzb3JNb25pdG9yLgotICBSVENfRENI
RUNLKCFjYWxsYmFja18pOwotICBSVENfRENIRUNLKGNhbGxiYWNrKTsKLQotICBjYWxsYmFja18g
PSBjYWxsYmFjazsKLSAgbW9kZV8gPSBtb2RlOwotCi0gIGhhdmVfeGZpeGVzXyA9Ci0gICAgICBY
Rml4ZXNRdWVyeUV4dGVuc2lvbihkaXNwbGF5KCksICZ4Zml4ZXNfZXZlbnRfYmFzZV8sICZ4Zml4
ZXNfZXJyb3JfYmFzZV8pOwotCi0gIGlmIChoYXZlX3hmaXhlc18pIHsKLSAgICAvLyBSZWdpc3Rl
ciBmb3IgY2hhbmdlcyB0byB0aGUgY3Vyc29yIHNoYXBlLgotICAgIFhGaXhlc1NlbGVjdEN1cnNv
cklucHV0KGRpc3BsYXkoKSwgd2luZG93XywgWEZpeGVzRGlzcGxheUN1cnNvck5vdGlmeU1hc2sp
OwotICAgIHhfZGlzcGxheV8tPkFkZEV2ZW50SGFuZGxlcih4Zml4ZXNfZXZlbnRfYmFzZV8gKyBY
Rml4ZXNDdXJzb3JOb3RpZnksIHRoaXMpOwotCi0gICAgQ2FwdHVyZUN1cnNvcigpOwotICB9IGVs
c2UgewotICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlggc2VydmVyIGRvZXMgbm90IHN1cHBvcnQg
WEZpeGVzLiI7Ci0gIH0KLX0KLQotdm9pZCBNb3VzZUN1cnNvck1vbml0b3JYMTE6OkNhcHR1cmUo
KSB7Ci0gIFJUQ19EQ0hFQ0soY2FsbGJhY2tfKTsKLQotICAvLyBQcm9jZXNzIFgxMSBldmVudHMg
aW4gY2FzZSBYRml4ZXMgaGFzIHNlbnQgY3Vyc29yIG5vdGlmaWNhdGlvbi4KLSAgeF9kaXNwbGF5
Xy0+UHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCk7Ci0KLSAgLy8gY3Vyc29yX3NoYXBlX3wgaXMgc2V0
IG9ubHkgaWYgd2Ugd2VyZSBub3RpZmllZCBvZiBhIGN1cnNvciBzaGFwZSBjaGFuZ2UuCi0gIGlm
IChjdXJzb3Jfc2hhcGVfLmdldCgpKQotICAgIGNhbGxiYWNrXy0+T25Nb3VzZUN1cnNvcihjdXJz
b3Jfc2hhcGVfLnJlbGVhc2UoKSk7Ci0KLSAgLy8gR2V0IGN1cnNvciBwb3NpdGlvbiBpZiBuZWNl
c3NhcnkuCi0gIGlmIChtb2RlXyA9PSBTSEFQRV9BTkRfUE9TSVRJT04pIHsKLSAgICBpbnQgcm9v
dF94OwotICAgIGludCByb290X3k7Ci0gICAgaW50IHdpbl94OwotICAgIGludCB3aW5feTsKLSAg
ICBXaW5kb3cgcm9vdF93aW5kb3c7Ci0gICAgV2luZG93IGNoaWxkX3dpbmRvdzsKLSAgICB1bnNp
Z25lZCBpbnQgbWFzazsKLQotICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KCkpOwot
ICAgIEJvb2wgcmVzdWx0ID0gWFF1ZXJ5UG9pbnRlcihkaXNwbGF5KCksIHdpbmRvd18sICZyb290
X3dpbmRvdywgJmNoaWxkX3dpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JnJvb3RfeCwgJnJvb3RfeSwgJndpbl94LCAmd2luX3ksICZtYXNrKTsKLSAgICBDdXJzb3JTdGF0
ZSBzdGF0ZTsKLSAgICBpZiAoIXJlc3VsdCB8fCBlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERp
c2FibGUoKSAhPSAwKSB7Ci0gICAgICBzdGF0ZSA9IE9VVFNJREU7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgIC8vIEluIHNjcmVlbiBtb2RlICh3aW5kb3dfID09IHJvb3Rfd2luZG93KSB0aGUgbW91c2Ug
aXMgYWx3YXlzIGluc2lkZS4KLSAgICAgIC8vIFhRdWVyeVBvaW50ZXIoKSBzZXRzIHxjaGlsZF93
aW5kb3d8IHRvIE5vbmUgaWYgdGhlIGN1cnNvciBpcyBvdXRzaWRlCi0gICAgICAvLyB8d2luZG93
X3wuCi0gICAgICBzdGF0ZSA9Ci0gICAgICAgICAgKHdpbmRvd18gPT0gcm9vdF93aW5kb3cgfHwg
Y2hpbGRfd2luZG93ICE9IE5vbmUpID8gSU5TSURFIDogT1VUU0lERTsKLSAgICB9Ci0KLSAgICAv
LyBBcyB0aGUgY29tbWVudHMgdG8gR2V0VG9wTGV2ZWxXaW5kb3coKSBhYm92ZSBpbmRpY2F0ZSwg
aW4gd2luZG93IGNhcHR1cmUsCi0gICAgLy8gdGhlIGN1cnNvciBwb3NpdGlvbiBjYXB0dXJlIGhh
cHBlbnMgaW4gfHdpbmRvd198LCB3aGlsZSB0aGUgZnJhbWUgY2F0cHVyZQotICAgIC8vIGhhcHBl
bnMgaW4gfGNoaWxkX3dpbmRvd3wuIFRoZXNlIHR3byB3aW5kb3dzIGFyZSBub3QgYWx3eWFzIHNh
bWUsIGFzCi0gICAgLy8gd2luZG93IG1hbmFnZXIgbWF5IGFkZCBzb21lIGRlY29yYXRpb25zIHRv
IHRoZSB8d2luZG93X3wuIFNvIHRyYW5zbGF0ZQotICAgIC8vIHRoZSBjb29yZGluYXRlIGluIHx3
aW5kb3dffCB0byB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB8Y2hpbGRfd2luZG93fC4KLSAgICBp
ZiAod2luZG93XyAhPSByb290X3dpbmRvdyAmJiBzdGF0ZSA9PSBJTlNJREUpIHsKLSAgICAgIGlu
dCB0cmFuc2xhdGVkX3gsIHRyYW5zbGF0ZWRfeTsKLSAgICAgIFdpbmRvdyB1bnVzZWQ7Ci0gICAg
ICBpZiAoWFRyYW5zbGF0ZUNvb3JkaW5hdGVzKGRpc3BsYXkoKSwgd2luZG93XywgY2hpbGRfd2lu
ZG93LCB3aW5feCwgd2luX3ksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFu
c2xhdGVkX3gsICZ0cmFuc2xhdGVkX3ksICZ1bnVzZWQpKSB7Ci0gICAgICAgIHdpbl94ID0gdHJh
bnNsYXRlZF94OwotICAgICAgICB3aW5feSA9IHRyYW5zbGF0ZWRfeTsKLSAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBYMTEgYWx3YXlzIHN0YXJ0cyB0aGUgY29vcmRpbmF0ZSBmcm9tICgwLCAwKSwg
c28gd2UgZG8gbm90IG5lZWQgdG8KLSAgICAvLyB0cmFuc2xhdGUgaGVyZS4KLSAgICBjYWxsYmFj
a18tPk9uTW91c2VDdXJzb3JQb3NpdGlvbihEZXNrdG9wVmVjdG9yKHJvb3RfeCwgcm9vdF95KSk7
Ci0gIH0KLX0KLQotYm9vbCBNb3VzZUN1cnNvck1vbml0b3JYMTE6OkhhbmRsZVhFdmVudChjb25z
dCBYRXZlbnQmIGV2ZW50KSB7Ci0gIGlmIChoYXZlX3hmaXhlc18gJiYgZXZlbnQudHlwZSA9PSB4
Zml4ZXNfZXZlbnRfYmFzZV8gKyBYRml4ZXNDdXJzb3JOb3RpZnkpIHsKLSAgICBjb25zdCBYRml4
ZXNDdXJzb3JOb3RpZnlFdmVudCogY3Vyc29yX2V2ZW50ID0KLSAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBYRml4ZXNDdXJzb3JOb3RpZnlFdmVudCo+KCZldmVudCk7Ci0gICAgaWYgKGN1
cnNvcl9ldmVudC0+c3VidHlwZSA9PSBYRml4ZXNEaXNwbGF5Q3Vyc29yTm90aWZ5KSB7Ci0gICAg
ICBDYXB0dXJlQ3Vyc29yKCk7Ci0gICAgfQotICAgIC8vIFJldHVybiBmYWxzZSwgZXZlbiBpZiB0
aGUgZXZlbnQgaGFzIGJlZW4gaGFuZGxlZCwgYmVjYXVzZSB0aGVyZSBtaWdodCBiZQotICAgIC8v
IG90aGVyIGxpc3RlbmVycyBmb3IgY3Vyc29yIG5vdGlmaWNhdGlvbnMuCi0gIH0KLSAgcmV0dXJu
IGZhbHNlOwotfQotCi12b2lkIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6Q2FwdHVyZUN1cnNvcigp
IHsKLSAgUlRDX0RDSEVDSyhoYXZlX3hmaXhlc18pOwotCi0gIFhGaXhlc0N1cnNvckltYWdlKiBp
bWc7Ci0gIHsKLSAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheSgpKTsKLSAgICBpbWcg
PSBYRml4ZXNHZXRDdXJzb3JJbWFnZShkaXNwbGF5KCkpOwotICAgIGlmICghaW1nIHx8IGVycm9y
X3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApCi0gICAgICByZXR1cm47Ci0gIH0K
LQotICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBpbWFnZSgKLSAgICAgIG5ldyBCYXNp
Y0Rlc2t0b3BGcmFtZShEZXNrdG9wU2l6ZShpbWctPndpZHRoLCBpbWctPmhlaWdodCkpKTsKLQot
ICAvLyBYbGliIHN0b3JlcyAzMi1iaXQgZGF0YSBpbiBsb25ncywgZXZlbiBpZiBsb25ncyBhcmUg
NjQtYml0cyBsb25nLgotICB1bnNpZ25lZCBsb25nKiBzcmMgPSBpbWctPnBpeGVsczsKLSAgdWlu
dDMyX3QqIGRzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihpbWFnZS0+ZGF0YSgpKTsK
LSAgdWludDMyX3QqIGRzdF9lbmQgPSBkc3QgKyAoaW1nLT53aWR0aCAqIGltZy0+aGVpZ2h0KTsK
LSAgd2hpbGUgKGRzdCA8IGRzdF9lbmQpIHsKLSAgICAqZHN0KysgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oKnNyYysrKTsKLSAgfQotCi0gIERlc2t0b3BWZWN0b3IgaG90c3BvdChzdGQ6Om1pbihp
bWctPndpZHRoLCBpbWctPnhob3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptaW4o
aW1nLT5oZWlnaHQsIGltZy0+eWhvdCkpOwotCi0gIFhGcmVlKGltZyk7Ci0KLSAgY3Vyc29yX3No
YXBlXy5yZXNldChuZXcgTW91c2VDdXJzb3IoaW1hZ2UucmVsZWFzZSgpLCBob3RzcG90KSk7Ci19
Ci0KLS8vIHN0YXRpYwotTW91c2VDdXJzb3JNb25pdG9yKiBNb3VzZUN1cnNvck1vbml0b3I6OkNy
ZWF0ZUZvcldpbmRvdygKLSAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMs
Ci0gICAgV2luZG93SWQgd2luZG93KSB7Ci0gIGlmICghb3B0aW9ucy54X2Rpc3BsYXkoKSkKLSAg
ICByZXR1cm4gTlVMTDsKLSAgd2luZG93ID0gR2V0VG9wTGV2ZWxXaW5kb3cob3B0aW9ucy54X2Rp
c3BsYXkoKS0+ZGlzcGxheSgpLCB3aW5kb3cpOwotICBpZiAod2luZG93ID09IE5vbmUpCi0gICAg
cmV0dXJuIE5VTEw7Ci0gIHJldHVybiBuZXcgTW91c2VDdXJzb3JNb25pdG9yWDExKG9wdGlvbnMs
IHdpbmRvdyk7Ci19Ci0KLU1vdXNlQ3Vyc29yTW9uaXRvciogTW91c2VDdXJzb3JNb25pdG9yOjpD
cmVhdGVGb3JTY3JlZW4oCi0gICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25z
LAotICAgIFNjcmVlbklkIHNjcmVlbikgewotICBpZiAoIW9wdGlvbnMueF9kaXNwbGF5KCkpCi0g
ICAgcmV0dXJuIE5VTEw7Ci0gIHJldHVybiBuZXcgTW91c2VDdXJzb3JNb25pdG9yWDExKAotICAg
ICAgb3B0aW9ucywgRGVmYXVsdFJvb3RXaW5kb3cob3B0aW9ucy54X2Rpc3BsYXkoKS0+ZGlzcGxh
eSgpKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxNb3VzZUN1cnNvck1vbml0b3I+IE1vdXNlQ3Vy
c29yTW9uaXRvcjo6Q3JlYXRlKAotICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0
aW9ucykgewotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1vdXNlQ3Vyc29yTW9uaXRvcj4oCi0g
ICAgICBDcmVhdGVGb3JTY3JlZW4ob3B0aW9ucywga0Z1bGxEZXNrdG9wU2NyZWVuSWQpKTsKLX0K
LQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2Nh
cHR1cmVyX2xpbnV4LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVyX2xpbnV4LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNmOGE5ZGQwZTBkYjQwMDhlMTdmNDNhYTI1MDdlNzQ5MTA2NzJiNDYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fY2FwdHVyZXJfbGludXguY2MKQEAgLTAsMCArMSw0
MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5oIgorCisjaWYgZGVmaW5lZChXRUJSVENfVVNFX1BJ
UEVXSVJFKQorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9j
YXB0dXJlcl9waXBld2lyZS5oIgorI2VuZGlmICAvLyBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJ
UkUpCisKKyNpZiBkZWZpbmVkKFVTRV9YMTEpCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3gxMS5oIgorI2VuZGlmICAvLyBkZWZpbmVkKFVT
RV9YMTEpCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBzdGF0aWMKK3N0ZDo6dW5pcXVlX3B0
cjxEZXNrdG9wQ2FwdHVyZXI+IERlc2t0b3BDYXB0dXJlcjo6Q3JlYXRlUmF3U2NyZWVuQ2FwdHVy
ZXIoCisgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7CisjaWYgZGVm
aW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQorICBpZiAob3B0aW9ucy5hbGxvd19waXBld2lyZSgp
ICYmIERlc2t0b3BDYXB0dXJlcjo6SXNSdW5uaW5nVW5kZXJXYXlsYW5kKCkpIHsKKyAgICByZXR1
cm4gU2NyZWVuQ2FwdHVyZXJQaXBlV2lyZTo6Q3JlYXRlUmF3U2NyZWVuQ2FwdHVyZXIob3B0aW9u
cyk7CisgIH0KKyNlbmRpZiAgLy8gZGVmaW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQorCisjaWYg
ZGVmaW5lZChVU0VfWDExKQorICByZXR1cm4gU2NyZWVuQ2FwdHVyZXJYMTE6OkNyZWF0ZVJhd1Nj
cmVlbkNhcHR1cmVyKG9wdGlvbnMpOworI2VuZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCisKKyAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL3NjcmVlbl9jYXB0dXJlcl94MTEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fY2FwdHVy
ZXJfeDExLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTVmY2NjMjA4MmE5NzA0
MmFhZmZiOGRkZDZjMjQzNGRmNDk3ZTcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9jYXB0dXJlcl94MTEuY2MKKysrIC9kZXYv
bnVsbApAQCAtMSw0MjUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRl
IDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzZXQ+Ci0jaW5jbHVk
ZSA8dXRpbGl0eT4KLQotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0jaW5jbHVkZSA8WDExL1h1dGls
Lmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgotI2luY2x1ZGUgPFgxMS9l
eHRlbnNpb25zL1hmaXhlcy5oPgotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
ZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvZGVza3RvcF9mcmFtZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3Nj
cmVlbl9jYXB0dXJlX2ZyYW1lX3F1ZXVlLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvc2NyZWVuX2NhcHR1cmVyX2hlbHBlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL3NoYXJlZF9kZXNrdG9wX2ZyYW1lLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUveDExL3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxz
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdHJhY2VfZXZlbnQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0
YyB7Ci1uYW1lc3BhY2UgewotCi0vLyBBIGNsYXNzIHRvIHBlcmZvcm0gdmlkZW8gZnJhbWUgY2Fw
dHVyaW5nIGZvciBMaW51eC4KLS8vCi0vLyBJZiBYRGFtYWdlIGlzIHVzZWQsIHRoaXMgY2xhc3Mg
c2V0cyBEZXNrdG9wRnJhbWU6OnVwZGF0ZWRfcmVnaW9uKCkgYWNjb3JkaW5nCi0vLyB0byB0aGUg
YXJlYXMgcmVwb3J0ZWQgYnkgWERhbWFnZS4gT3RoZXJ3aXNlIHRoaXMgY2xhc3MgZG9lcyBub3Qg
ZGV0ZWN0Ci0vLyBEZXNrdG9wRnJhbWU6OnVwZGF0ZWRfcmVnaW9uKCksIHRoZSBmaWVsZCBpcyBh
bHdheXMgc2V0IHRvIHRoZSBlbnRpcmUgZnJhbWUKLS8vIHJlY3RhbmdsZS4gU2NyZWVuQ2FwdHVy
ZXJEaWZmZXJXcmFwcGVyIHNob3VsZCBiZSB1c2VkIGlmIHRoYXQgZnVuY3Rpb25hbGl0eQotLy8g
aXMgbmVjZXNzYXJ5LgotY2xhc3MgU2NyZWVuQ2FwdHVyZXJMaW51eCA6IHB1YmxpYyBEZXNrdG9w
Q2FwdHVyZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNoYXJlZFhEaXNw
bGF5OjpYRXZlbnRIYW5kbGVyIHsKLSBwdWJsaWM6Ci0gIFNjcmVlbkNhcHR1cmVyTGludXgoKTsK
LSAgflNjcmVlbkNhcHR1cmVyTGludXgoKSBvdmVycmlkZTsKLQotICAvLyBUT0RPKGFqd29uZyk6
IERvIHdlIHJlYWxseSB3YW50IHRoaXMgdG8gYmUgc3luY2hyb25vdXM/Ci0gIGJvb2wgSW5pdChj
b25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpOwotCi0gIC8vIERlc2t0b3BDYXB0
dXJlciBpbnRlcmZhY2UuCi0gIHZvaWQgU3RhcnQoQ2FsbGJhY2sqIGRlbGVnYXRlKSBvdmVycmlk
ZTsKLSAgdm9pZCBDYXB0dXJlRnJhbWUoKSBvdmVycmlkZTsKLSAgYm9vbCBHZXRTb3VyY2VMaXN0
KFNvdXJjZUxpc3QqIHNvdXJjZXMpIG92ZXJyaWRlOwotICBib29sIFNlbGVjdFNvdXJjZShTb3Vy
Y2VJZCBpZCkgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICBEaXNwbGF5KiBkaXNwbGF5KCkgeyBy
ZXR1cm4gb3B0aW9uc18ueF9kaXNwbGF5KCktPmRpc3BsYXkoKTsgfQotCi0gIC8vIFNoYXJlZFhE
aXNwbGF5OjpYRXZlbnRIYW5kbGVyIGludGVyZmFjZS4KLSAgYm9vbCBIYW5kbGVYRXZlbnQoY29u
c3QgWEV2ZW50JiBldmVudCkgb3ZlcnJpZGU7Ci0KLSAgdm9pZCBJbml0WERhbWFnZSgpOwotCi0g
IC8vIENhcHR1cmUgc2NyZWVuIHBpeGVscyB0byB0aGUgY3VycmVudCBidWZmZXIgaW4gdGhlIHF1
ZXVlLiBJbiB0aGUgREFNQUdFCi0gIC8vIGNhc2UsIHRoZSBTY3JlZW5DYXB0dXJlckhlbHBlciBh
bHJlYWR5IGhvbGRzIHRoZSBsaXN0IG9mIGludmFsaWQgcmVjdGFuZ2xlcwotICAvLyBmcm9tIEhh
bmRsZVhFdmVudCgpLiBJbiB0aGUgbm9uLURBTUFHRSBjYXNlLCB0aGlzIGNhcHR1cmVzIHRoZQot
ICAvLyB3aG9sZSBzY3JlZW4sIHRoZW4gY2FsY3VsYXRlcyBzb21lIGludmFsaWQgcmVjdGFuZ2xl
cyB0aGF0IGluY2x1ZGUgYW55Ci0gIC8vIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhpcyBhbmQgdGhl
IHByZXZpb3VzIGNhcHR1cmUuCi0gIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IENhcHR1
cmVTY3JlZW4oKTsKLQotICAvLyBDYWxsZWQgd2hlbiB0aGUgc2NyZWVuIGNvbmZpZ3VyYXRpb24g
aXMgY2hhbmdlZC4KLSAgdm9pZCBTY3JlZW5Db25maWd1cmF0aW9uQ2hhbmdlZCgpOwotCi0gIC8v
IFN5bmNocm9uaXplIHRoZSBjdXJyZW50IGJ1ZmZlciB3aXRoIHxsYXN0X2J1ZmZlcl98LCBieSBj
b3B5aW5nIHBpeGVscyBmcm9tCi0gIC8vIHRoZSBhcmVhIG9mIHxsYXN0X2ludmFsaWRfcmVjdHN8
LgotICAvLyBOb3RlIHRoaXMgb25seSB3b3JrcyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGtOdW1C
dWZmZXJzID09IDIsIGFzCi0gIC8vIHxsYXN0X2ludmFsaWRfcmVjdHN8IGhvbGRzIHRoZSBkaWZm
ZXJlbmNlcyBmcm9tIHRoZSBwcmV2aW91cyBidWZmZXIgYW5kCi0gIC8vIHRoZSBvbmUgcHJpb3Ig
dG8gdGhhdCAod2hpY2ggd2lsbCB0aGVuIGJlIHRoZSBjdXJyZW50IGJ1ZmZlcikuCi0gIHZvaWQg
U3luY2hyb25pemVGcmFtZSgpOwotCi0gIHZvaWQgRGVpbml0WGxpYigpOwotCi0gIERlc2t0b3BD
YXB0dXJlT3B0aW9ucyBvcHRpb25zXzsKLQotICBDYWxsYmFjayogY2FsbGJhY2tfID0gbnVsbHB0
cjsKLQotICAvLyBYMTEgZ3JhcGhpY3MgY29udGV4dC4KLSAgR0MgZ2NfID0gbnVsbHB0cjsKLSAg
V2luZG93IHJvb3Rfd2luZG93XyA9IEJhZFZhbHVlOwotCi0gIC8vIFhGaXhlcy4KLSAgYm9vbCBo
YXNfeGZpeGVzXyA9IGZhbHNlOwotICBpbnQgeGZpeGVzX2V2ZW50X2Jhc2VfID0gLTE7Ci0gIGlu
dCB4Zml4ZXNfZXJyb3JfYmFzZV8gPSAtMTsKLQotICAvLyBYRGFtYWdlIGluZm9ybWF0aW9uLgot
ICBib29sIHVzZV9kYW1hZ2VfID0gZmFsc2U7Ci0gIERhbWFnZSBkYW1hZ2VfaGFuZGxlXyA9IDA7
Ci0gIGludCBkYW1hZ2VfZXZlbnRfYmFzZV8gPSAtMTsKLSAgaW50IGRhbWFnZV9lcnJvcl9iYXNl
XyA9IC0xOwotICBYc2VydmVyUmVnaW9uIGRhbWFnZV9yZWdpb25fID0gMDsKLQotICAvLyBBY2Nl
c3MgdG8gdGhlIFggU2VydmVyJ3MgcGl4ZWwgYnVmZmVyLgotICBYU2VydmVyUGl4ZWxCdWZmZXIg
eF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXzsKLQotICAvLyBBIHRocmVhZC1zYWZlIGxpc3Qgb2YgaW52
YWxpZCByZWN0YW5nbGVzLCBhbmQgdGhlIHNpemUgb2YgdGhlIG1vc3QKLSAgLy8gcmVjZW50bHkg
Y2FwdHVyZWQgc2NyZWVuLgotICBTY3JlZW5DYXB0dXJlckhlbHBlciBoZWxwZXJfOwotCi0gIC8v
IFF1ZXVlIG9mIHRoZSBmcmFtZXMgYnVmZmVycy4KLSAgU2NyZWVuQ2FwdHVyZUZyYW1lUXVldWU8
U2hhcmVkRGVza3RvcEZyYW1lPiBxdWV1ZV87Ci0KLSAgLy8gSW52YWxpZCByZWdpb24gZnJvbSB0
aGUgcHJldmlvdXMgY2FwdHVyZS4gVGhpcyBpcyB1c2VkIHRvIHN5bmNocm9uaXplIHRoZQotICAv
LyBjdXJyZW50IHdpdGggdGhlIGxhc3QgYnVmZmVyIHVzZWQuCi0gIERlc2t0b3BSZWdpb24gbGFz
dF9pbnZhbGlkX3JlZ2lvbl87Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTY3Jl
ZW5DYXB0dXJlckxpbnV4KTsKLX07Ci0KLVNjcmVlbkNhcHR1cmVyTGludXg6OlNjcmVlbkNhcHR1
cmVyTGludXgoKSB7Ci0gIGhlbHBlcl8uU2V0TG9nR3JpZFNpemUoNCk7Ci19Ci0KLVNjcmVlbkNh
cHR1cmVyTGludXg6On5TY3JlZW5DYXB0dXJlckxpbnV4KCkgewotICBvcHRpb25zXy54X2Rpc3Bs
YXkoKS0+UmVtb3ZlRXZlbnRIYW5kbGVyKENvbmZpZ3VyZU5vdGlmeSwgdGhpcyk7Ci0gIGlmICh1
c2VfZGFtYWdlXykgewotICAgIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5SZW1vdmVFdmVudEhhbmRs
ZXIoZGFtYWdlX2V2ZW50X2Jhc2VfICsgWERhbWFnZU5vdGlmeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMpOwotICB9Ci0gIERlaW5pdFhsaWIoKTsK
LX0KLQotYm9vbCBTY3JlZW5DYXB0dXJlckxpbnV4OjpJbml0KGNvbnN0IERlc2t0b3BDYXB0dXJl
T3B0aW9ucyYgb3B0aW9ucykgewotICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJTY3JlZW5DYXB0
dXJlckxpbnV4OjpJbml0Iik7Ci0gIG9wdGlvbnNfID0gb3B0aW9uczsKLQotICByb290X3dpbmRv
d18gPSBSb290V2luZG93KGRpc3BsYXkoKSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KCkpKTsKLSAg
aWYgKHJvb3Rfd2luZG93XyA9PSBCYWRWYWx1ZSkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8
ICJVbmFibGUgdG8gZ2V0IHRoZSByb290IHdpbmRvdyI7Ci0gICAgRGVpbml0WGxpYigpOwotICAg
IHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGdjXyA9IFhDcmVhdGVHQyhkaXNwbGF5KCksIHJvb3Rf
d2luZG93XywgMCwgTlVMTCk7Ci0gIGlmIChnY18gPT0gTlVMTCkgewotICAgIFJUQ19MT0coTFNf
RVJST1IpIDw8ICJVbmFibGUgdG8gZ2V0IGdyYXBoaWNzIGNvbnRleHQiOwotICAgIERlaW5pdFhs
aWIoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBvcHRpb25zXy54X2Rpc3BsYXkoKS0+
QWRkRXZlbnRIYW5kbGVyKENvbmZpZ3VyZU5vdGlmeSwgdGhpcyk7Ci0KLSAgLy8gQ2hlY2sgZm9y
IFhGaXhlcyBleHRlbnNpb24uIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGN1cnNvciBzaGFwZQotICAv
LyBub3RpZmljYXRpb25zLCBhbmQgZm9yIG91ciB1c2Ugb2YgWERhbWFnZS4KLSAgaWYgKFhGaXhl
c1F1ZXJ5RXh0ZW5zaW9uKGRpc3BsYXkoKSwgJnhmaXhlc19ldmVudF9iYXNlXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ4Zml4ZXNfZXJyb3JfYmFzZV8pKSB7Ci0gICAgaGFzX3hmaXhl
c18gPSB0cnVlOwotICB9IGVsc2UgewotICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlggc2VydmVy
IGRvZXMgbm90IHN1cHBvcnQgWEZpeGVzLiI7Ci0gIH0KLQotICAvLyBSZWdpc3RlciBmb3IgY2hh
bmdlcyB0byB0aGUgZGltZW5zaW9ucyBvZiB0aGUgcm9vdCB3aW5kb3cuCi0gIFhTZWxlY3RJbnB1
dChkaXNwbGF5KCksIHJvb3Rfd2luZG93XywgU3RydWN0dXJlTm90aWZ5TWFzayk7Ci0KLSAgaWYg
KCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLkluaXQoZGlzcGxheSgpLCBEZWZhdWx0Um9vdFdpbmRv
dyhkaXNwbGF5KCkpKSkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gaW5p
dGlhbGl6ZSBwaXhlbCBidWZmZXIuIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBpZiAo
b3B0aW9uc18udXNlX3VwZGF0ZV9ub3RpZmljYXRpb25zKCkpIHsKLSAgICBJbml0WERhbWFnZSgp
OwotICB9Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZXJMaW51eDo6
SW5pdFhEYW1hZ2UoKSB7Ci0gIC8vIE91ciB1c2Ugb2YgWERhbWFnZSByZXF1aXJlcyBYRml4ZXMu
Ci0gIGlmICghaGFzX3hmaXhlc18pIHsKLSAgICByZXR1cm47Ci0gIH0KLQotICAvLyBDaGVjayBm
b3IgWERhbWFnZSBleHRlbnNpb24uCi0gIGlmICghWERhbWFnZVF1ZXJ5RXh0ZW5zaW9uKGRpc3Bs
YXkoKSwgJmRhbWFnZV9ldmVudF9iYXNlXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmRhbWFnZV9lcnJvcl9iYXNlXykpIHsKLSAgICBSVENfTE9HKExTX0lORk8pIDw8ICJYIHNlcnZl
ciBkb2VzIG5vdCBzdXBwb3J0IFhEYW1hZ2UuIjsKLSAgICByZXR1cm47Ci0gIH0KLQotICAvLyBU
T0RPKGxhbWJyb3NsYW1icm91KTogRGlzYWJsZSBEQU1BR0UgaW4gc2l0dWF0aW9ucyB3aGVyZSBp
dCBpcyBrbm93bgotICAvLyB0byBmYWlsLCBzdWNoIGFzIHdoZW4gRGVza3RvcCBFZmZlY3RzIGFy
ZSBlbmFibGVkLCB3aXRoIGdyYXBoaWNzCi0gIC8vIGRyaXZlcnMgKG5WaWRpYSwgQVRJKSB0aGF0
IGZhaWwgdG8gcmVwb3J0IERBTUFHRSBub3RpZmljYXRpb25zCi0gIC8vIHByb3Blcmx5LgotCi0g
IC8vIFJlcXVlc3Qgbm90aWZpY2F0aW9ucyBldmVyeSB0aW1lIHRoZSBzY3JlZW4gYmVjb21lcyBk
YW1hZ2VkLgotICBkYW1hZ2VfaGFuZGxlXyA9Ci0gICAgICBYRGFtYWdlQ3JlYXRlKGRpc3BsYXko
KSwgcm9vdF93aW5kb3dfLCBYRGFtYWdlUmVwb3J0Tm9uRW1wdHkpOwotICBpZiAoIWRhbWFnZV9o
YW5kbGVfKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVuYWJsZSB0byBpbml0aWFsaXpl
IFhEYW1hZ2UuIjsKLSAgICByZXR1cm47Ci0gIH0KLQotICAvLyBDcmVhdGUgYW4gWEZpeGVzIHNl
cnZlci1zaWRlIHJlZ2lvbiB0byBjb2xsYXRlIGRhbWFnZSBpbnRvLgotICBkYW1hZ2VfcmVnaW9u
XyA9IFhGaXhlc0NyZWF0ZVJlZ2lvbihkaXNwbGF5KCksIDAsIDApOwotICBpZiAoIWRhbWFnZV9y
ZWdpb25fKSB7Ci0gICAgWERhbWFnZURlc3Ryb3koZGlzcGxheSgpLCBkYW1hZ2VfaGFuZGxlXyk7
Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVuYWJsZSB0byBjcmVhdGUgWEZpeGVzIHJlZ2lv
bi4iOwotICAgIHJldHVybjsKLSAgfQotCi0gIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5BZGRFdmVu
dEhhbmRsZXIoZGFtYWdlX2V2ZW50X2Jhc2VfICsgWERhbWFnZU5vdGlmeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKTsKLQotICB1c2VfZGFtYWdlXyA9IHRy
dWU7Ci0gIFJUQ19MT0coTFNfSU5GTykgPDwgIlVzaW5nIFhEYW1hZ2UgZXh0ZW5zaW9uLiI7Ci19
Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZXJMaW51eDo6U3RhcnQoQ2FsbGJhY2sqIGNhbGxiYWNrKSB7
Ci0gIFJUQ19EQ0hFQ0soIWNhbGxiYWNrXyk7Ci0gIFJUQ19EQ0hFQ0soY2FsbGJhY2spOwotCi0g
IGNhbGxiYWNrXyA9IGNhbGxiYWNrOwotfQotCi12b2lkIFNjcmVlbkNhcHR1cmVyTGludXg6OkNh
cHR1cmVGcmFtZSgpIHsKLSAgVFJBQ0VfRVZFTlQwKCJ3ZWJydGMiLCAiU2NyZWVuQ2FwdHVyZXJM
aW51eDo6Q2FwdHVyZUZyYW1lIik7Ci0gIGludDY0X3QgY2FwdHVyZV9zdGFydF90aW1lX25hbm9z
ID0gcnRjOjpUaW1lTmFub3MoKTsKLQotICBxdWV1ZV8uTW92ZVRvTmV4dEZyYW1lKCk7Ci0gIFJU
Q19EQ0hFQ0soIXF1ZXVlXy5jdXJyZW50X2ZyYW1lKCkgfHwgIXF1ZXVlXy5jdXJyZW50X2ZyYW1l
KCktPklzU2hhcmVkKCkpOwotCi0gIC8vIFByb2Nlc3MgWEV2ZW50cyBmb3IgWERhbWFnZSBhbmQg
Y3Vyc29yIHNoYXBlIHRyYWNraW5nLgotICBvcHRpb25zXy54X2Rpc3BsYXkoKS0+UHJvY2Vzc1Bl
bmRpbmdYRXZlbnRzKCk7Ci0KLSAgLy8gUHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCkgbWF5IGNhbGwg
U2NyZWVuQ29uZmlndXJhdGlvbkNoYW5nZWQoKSB3aGljaAotICAvLyByZWluaXRpYWxpemVzIHx4
X3NlcnZlcl9waXhlbF9idWZmZXJffC4gQ2hlY2sgaWYgdGhlIHBpeGVsIGJ1ZmZlciBpcyBzdGls
bAotICAvLyBpbiBhIGdvb2Qgc2hhcGUuCi0gIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5p
c19pbml0aWFsaXplZCgpKSB7Ci0gICAgLy8gV2UgZmFpbGVkIHRvIGluaXRpYWxpemUgcGl4ZWwg
YnVmZmVyLgotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJQaXhlbCBidWZmZXIgaXMgbm90IGlu
aXRpYWxpemVkLiI7Ci0gICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJP
Ul9QRVJNQU5FTlQsIG51bGxwdHIpOwotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIElmIHRoZSBj
dXJyZW50IGZyYW1lIGlzIGZyb20gYW4gb2xkZXIgZ2VuZXJhdGlvbiB0aGVuIGFsbG9jYXRlIGEg
bmV3IG9uZS4KLSAgLy8gTm90ZSB0aGF0IHdlIGNhbid0IHJlYWxsb2NhdGUgb3RoZXIgYnVmZmVy
cyBhdCB0aGlzIHBvaW50LCBzaW5jZSB0aGUgY2FsbGVyCi0gIC8vIG1heSBzdGlsbCBiZSByZWFk
aW5nIGZyb20gdGhlbS4KLSAgaWYgKCFxdWV1ZV8uY3VycmVudF9mcmFtZSgpKSB7Ci0gICAgcXVl
dWVfLlJlcGxhY2VDdXJyZW50RnJhbWUoCi0gICAgICAgIFNoYXJlZERlc2t0b3BGcmFtZTo6V3Jh
cChzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPigKLSAgICAgICAgICAgIG5ldyBCYXNpY0Rl
c2t0b3BGcmFtZSh4X3NlcnZlcl9waXhlbF9idWZmZXJfLndpbmRvd19zaXplKCkpKSkpOwotICB9
Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gcmVzdWx0ID0gQ2FwdHVyZVNjcmVl
bigpOwotICBpZiAoIXJlc3VsdCkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlRlbXBv
cmFyaWx5IGZhaWxlZCB0byBjYXB0dXJlIHNjcmVlbi4iOwotICAgIGNhbGxiYWNrXy0+T25DYXB0
dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfVEVNUE9SQVJZLCBudWxscHRyKTsKLSAgICByZXR1cm47
Ci0gIH0KLQotICBsYXN0X2ludmFsaWRfcmVnaW9uXyA9IHJlc3VsdC0+dXBkYXRlZF9yZWdpb24o
KTsKLSAgcmVzdWx0LT5zZXRfY2FwdHVyZV90aW1lX21zKChydGM6OlRpbWVOYW5vcygpIC0gY2Fw
dHVyZV9zdGFydF90aW1lX25hbm9zKSAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dGM6OmtOdW1OYW5vc2Vjc1Blck1pbGxpc2VjKTsKLSAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1
bHQoUmVzdWx0OjpTVUNDRVNTLCBzdGQ6Om1vdmUocmVzdWx0KSk7Ci19Ci0KLWJvb2wgU2NyZWVu
Q2FwdHVyZXJMaW51eDo6R2V0U291cmNlTGlzdChTb3VyY2VMaXN0KiBzb3VyY2VzKSB7Ci0gIFJU
Q19EQ0hFQ0soc291cmNlcy0+c2l6ZSgpID09IDApOwotICAvLyBUT0RPKGppYXlsKTogaW1wbGVt
ZW50IHNjcmVlbiBlbnVtZXJhdGlvbi4KLSAgc291cmNlcy0+cHVzaF9iYWNrKHswfSk7Ci0gIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIFNjcmVlbkNhcHR1cmVyTGludXg6OlNlbGVjdFNvdXJjZShT
b3VyY2VJZCBpZCkgewotICAvLyBUT0RPKGppYXlsKTogaW1wbGVtZW50IHNjcmVlbiBzZWxlY3Rp
b24uCi0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIFNjcmVlbkNhcHR1cmVyTGludXg6OkhhbmRs
ZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSB7Ci0gIGlmICh1c2VfZGFtYWdlXyAmJiAoZXZl
bnQudHlwZSA9PSBkYW1hZ2VfZXZlbnRfYmFzZV8gKyBYRGFtYWdlTm90aWZ5KSkgewotICAgIGNv
bnN0IFhEYW1hZ2VOb3RpZnlFdmVudCogZGFtYWdlX2V2ZW50ID0KLSAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBYRGFtYWdlTm90aWZ5RXZlbnQqPigmZXZlbnQpOwotICAgIGlmIChkYW1h
Z2VfZXZlbnQtPmRhbWFnZSAhPSBkYW1hZ2VfaGFuZGxlXykKLSAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBSVENfRENIRUNLKGRhbWFnZV9ldmVudC0+bGV2ZWwgPT0gWERhbWFnZVJlcG9ydE5vbkVt
cHR5KTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfSBlbHNlIGlmIChldmVudC50eXBlID09IENvbmZp
Z3VyZU5vdGlmeSkgewotICAgIFNjcmVlbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7Ci0gICAgcmV0
dXJuIHRydWU7Ci0gIH0KLSAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8RGVz
a3RvcEZyYW1lPiBTY3JlZW5DYXB0dXJlckxpbnV4OjpDYXB0dXJlU2NyZWVuKCkgewotICBzdGQ6
OnVuaXF1ZV9wdHI8U2hhcmVkRGVza3RvcEZyYW1lPiBmcmFtZSA9IHF1ZXVlXy5jdXJyZW50X2Zy
YW1lKCktPlNoYXJlKCk7Ci0gIFJUQ19EQ0hFQ0soeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy53aW5k
b3dfc2l6ZSgpLmVxdWFscyhmcmFtZS0+c2l6ZSgpKSk7Ci0KLSAgLy8gUGFzcyB0aGUgc2NyZWVu
IHNpemUgdG8gdGhlIGhlbHBlciwgc28gaXQgY2FuIGNsaXAgdGhlIGludmFsaWQgcmVnaW9uIGlm
IGl0Ci0gIC8vIGV4cGFuZHMgdGhhdCByZWdpb24gdG8gYSBncmlkLgotICBoZWxwZXJfLnNldF9z
aXplX21vc3RfcmVjZW50KGZyYW1lLT5zaXplKCkpOwotCi0gIC8vIEluIHRoZSBEQU1BR0UgY2Fz
ZSwgZW5zdXJlIHRoZSBmcmFtZSBpcyB1cC10by1kYXRlIHdpdGggdGhlIHByZXZpb3VzIGZyYW1l
Ci0gIC8vIGlmIGFueS4gIElmIHRoZXJlIGlzbid0IGEgcHJldmlvdXMgZnJhbWUsIHRoYXQgbWVh
bnMgYSBzY3JlZW4tcmVzb2x1dGlvbgotICAvLyBjaGFuZ2Ugb2NjdXJyZWQsIGFuZCB8aW52YWxp
ZF9yZWN0c3wgd2lsbCBiZSB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHdob2xlCi0gIC8vIHNjcmVl
bi4KLSAgaWYgKHVzZV9kYW1hZ2VfICYmIHF1ZXVlXy5wcmV2aW91c19mcmFtZSgpKQotICAgIFN5
bmNocm9uaXplRnJhbWUoKTsKLQotICBEZXNrdG9wUmVnaW9uKiB1cGRhdGVkX3JlZ2lvbiA9IGZy
YW1lLT5tdXRhYmxlX3VwZGF0ZWRfcmVnaW9uKCk7Ci0KLSAgeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVy
Xy5TeW5jaHJvbml6ZSgpOwotICBpZiAodXNlX2RhbWFnZV8gJiYgcXVldWVfLnByZXZpb3VzX2Zy
YW1lKCkpIHsKLSAgICAvLyBBdG9taWNhbGx5IGZldGNoIGFuZCBjbGVhciB0aGUgZGFtYWdlIHJl
Z2lvbi4KLSAgICBYRGFtYWdlU3VidHJhY3QoZGlzcGxheSgpLCBkYW1hZ2VfaGFuZGxlXywgTm9u
ZSwgZGFtYWdlX3JlZ2lvbl8pOwotICAgIGludCByZWN0c19udW0gPSAwOwotICAgIFhSZWN0YW5n
bGUgYm91bmRzOwotICAgIFhSZWN0YW5nbGUqIHJlY3RzID0gWEZpeGVzRmV0Y2hSZWdpb25BbmRC
b3VuZHMoZGlzcGxheSgpLCBkYW1hZ2VfcmVnaW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZWN0c19udW0sICZib3VuZHMpOwotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgcmVjdHNfbnVtOyArK2kpIHsKLSAgICAgIHVwZGF0ZWRfcmVnaW9u
LT5BZGRSZWN0KERlc2t0b3BSZWN0OjpNYWtlWFlXSCgKLSAgICAgICAgICByZWN0c1tpXS54LCBy
ZWN0c1tpXS55LCByZWN0c1tpXS53aWR0aCwgcmVjdHNbaV0uaGVpZ2h0KSk7Ci0gICAgfQotICAg
IFhGcmVlKHJlY3RzKTsKLSAgICBoZWxwZXJfLkludmFsaWRhdGVSZWdpb24oKnVwZGF0ZWRfcmVn
aW9uKTsKLQotICAgIC8vIENhcHR1cmUgdGhlIGRhbWFnZWQgcG9ydGlvbnMgb2YgdGhlIGRlc2t0
b3AuCi0gICAgaGVscGVyXy5UYWtlSW52YWxpZFJlZ2lvbih1cGRhdGVkX3JlZ2lvbik7Ci0KLSAg
ICAvLyBDbGlwIHRoZSBkYW1hZ2VkIHBvcnRpb25zIHRvIHRoZSBjdXJyZW50IHNjcmVlbiBzaXpl
LCBqdXN0IGluIGNhc2Ugc29tZQotICAgIC8vIHNwdXJpb3VzIFhEYW1hZ2Ugbm90aWZpY2F0aW9u
cyB3ZXJlIHJlY2VpdmVkIGZvciBhIHByZXZpb3VzIChsYXJnZXIpCi0gICAgLy8gc2NyZWVuIHNp
emUuCi0gICAgdXBkYXRlZF9yZWdpb24tPkludGVyc2VjdFdpdGgoCi0gICAgICAgIERlc2t0b3BS
ZWN0OjpNYWtlU2l6ZSh4X3NlcnZlcl9waXhlbF9idWZmZXJfLndpbmRvd19zaXplKCkpKTsKLQot
ICAgIGZvciAoRGVza3RvcFJlZ2lvbjo6SXRlcmF0b3IgaXQoKnVwZGF0ZWRfcmVnaW9uKTsgIWl0
LklzQXRFbmQoKTsKLSAgICAgICAgIGl0LkFkdmFuY2UoKSkgewotICAgICAgaWYgKCF4X3NlcnZl
cl9waXhlbF9idWZmZXJfLkNhcHR1cmVSZWN0KGl0LnJlY3QoKSwgZnJhbWUuZ2V0KCkpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgLy8gRG9pbmcgZnVs
bC1zY3JlZW4gcG9sbGluZywgb3IgdGhpcyBpcyB0aGUgZmlyc3QgY2FwdHVyZSBhZnRlciBhCi0g
ICAgLy8gc2NyZWVuLXJlc29sdXRpb24gY2hhbmdlLiAgSW4gZWl0aGVyIGNhc2UsIG5lZWQgYSBm
dWxsLXNjcmVlbiBjYXB0dXJlLgotICAgIERlc2t0b3BSZWN0IHNjcmVlbl9yZWN0ID0gRGVza3Rv
cFJlY3Q6Ok1ha2VTaXplKGZyYW1lLT5zaXplKCkpOwotICAgIGlmICgheF9zZXJ2ZXJfcGl4ZWxf
YnVmZmVyXy5DYXB0dXJlUmVjdChzY3JlZW5fcmVjdCwgZnJhbWUuZ2V0KCkpKQotICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgdXBkYXRlZF9yZWdpb24tPlNldFJlY3Qoc2NyZWVuX3JlY3QpOwot
ICB9Ci0KLSAgcmV0dXJuIHN0ZDo6bW92ZShmcmFtZSk7Ci19Ci0KLXZvaWQgU2NyZWVuQ2FwdHVy
ZXJMaW51eDo6U2NyZWVuQ29uZmlndXJhdGlvbkNoYW5nZWQoKSB7Ci0gIFRSQUNFX0VWRU5UMCgi
d2VicnRjIiwgIlNjcmVlbkNhcHR1cmVyTGludXg6OlNjcmVlbkNvbmZpZ3VyYXRpb25DaGFuZ2Vk
Iik7Ci0gIC8vIE1ha2Ugc3VyZSB0aGUgZnJhbWUgYnVmZmVycyB3aWxsIGJlIHJlYWxsb2NhdGVk
LgotICBxdWV1ZV8uUmVzZXQoKTsKLQotICBoZWxwZXJfLkNsZWFySW52YWxpZFJlZ2lvbigpOwot
ICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uSW5pdChkaXNwbGF5KCksIERlZmF1bHRSb290
V2luZG93KGRpc3BsYXkoKSkpKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0
byBpbml0aWFsaXplIHBpeGVsIGJ1ZmZlciBhZnRlciBzY3JlZW4gIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICJjb25maWd1cmF0aW9uIGNoYW5nZS4iOwotICB9Ci19Ci0KLXZvaWQgU2NyZWVu
Q2FwdHVyZXJMaW51eDo6U3luY2hyb25pemVGcmFtZSgpIHsKLSAgLy8gU3luY2hyb25pemUgdGhl
IGN1cnJlbnQgYnVmZmVyIHdpdGggdGhlIHByZXZpb3VzIG9uZSBzaW5jZSB3ZSBkbyBub3QKLSAg
Ly8gY2FwdHVyZSB0aGUgZW50aXJlIGRlc2t0b3AuIE5vdGUgdGhhdCBlbmNvZGVyIG1heSBiZSBy
ZWFkaW5nIGZyb20gdGhlCi0gIC8vIHByZXZpb3VzIGJ1ZmZlciBhdCB0aGlzIHRpbWUgc28gdGhy
ZWFkIGFjY2VzcyBjb21wbGFpbnRzIGFyZSBmYWxzZQotICAvLyBwb3NpdGl2ZXMuCi0KLSAgLy8g
VE9ETyhoY2xhbSk6IFdlIGNhbiByZWR1Y2UgdGhlIGFtb3VudCBvZiBjb3B5aW5nIGhlcmUgYnkg
c3VidHJhY3RpbmcKLSAgLy8gfGNhcHR1cmVyX2hlbHBlcl98cyByZWdpb24gZnJvbSB8bGFzdF9p
bnZhbGlkX3JlZ2lvbl98LgotICAvLyBodHRwOi8vY3JidWcuY29tLzkyMzU0Ci0gIFJUQ19EQ0hF
Q0socXVldWVfLnByZXZpb3VzX2ZyYW1lKCkpOwotCi0gIERlc2t0b3BGcmFtZSogY3VycmVudCA9
IHF1ZXVlXy5jdXJyZW50X2ZyYW1lKCk7Ci0gIERlc2t0b3BGcmFtZSogbGFzdCA9IHF1ZXVlXy5w
cmV2aW91c19mcmFtZSgpOwotICBSVENfRENIRUNLKGN1cnJlbnQgIT0gbGFzdCk7Ci0gIGZvciAo
RGVza3RvcFJlZ2lvbjo6SXRlcmF0b3IgaXQobGFzdF9pbnZhbGlkX3JlZ2lvbl8pOyAhaXQuSXNB
dEVuZCgpOwotICAgICAgIGl0LkFkdmFuY2UoKSkgewotICAgIGN1cnJlbnQtPkNvcHlQaXhlbHNG
cm9tKCpsYXN0LCBpdC5yZWN0KCkudG9wX2xlZnQoKSwgaXQucmVjdCgpKTsKLSAgfQotfQotCi12
b2lkIFNjcmVlbkNhcHR1cmVyTGludXg6OkRlaW5pdFhsaWIoKSB7Ci0gIGlmIChnY18pIHsKLSAg
ICBYRnJlZUdDKGRpc3BsYXkoKSwgZ2NfKTsKLSAgICBnY18gPSBudWxscHRyOwotICB9Ci0KLSAg
eF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5SZWxlYXNlKCk7Ci0KLSAgaWYgKGRpc3BsYXkoKSkgewot
ICAgIGlmIChkYW1hZ2VfaGFuZGxlXykgewotICAgICAgWERhbWFnZURlc3Ryb3koZGlzcGxheSgp
LCBkYW1hZ2VfaGFuZGxlXyk7Ci0gICAgICBkYW1hZ2VfaGFuZGxlXyA9IDA7Ci0gICAgfQotCi0g
ICAgaWYgKGRhbWFnZV9yZWdpb25fKSB7Ci0gICAgICBYRml4ZXNEZXN0cm95UmVnaW9uKGRpc3Bs
YXkoKSwgZGFtYWdlX3JlZ2lvbl8pOwotICAgICAgZGFtYWdlX3JlZ2lvbl8gPSAwOwotICAgIH0K
LSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotLy8gc3RhdGljCi1zdGQ6OnVuaXF1ZV9wdHI8
RGVza3RvcENhcHR1cmVyPiBEZXNrdG9wQ2FwdHVyZXI6OkNyZWF0ZVJhd1NjcmVlbkNhcHR1cmVy
KAotICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgewotICBpZiAoIW9w
dGlvbnMueF9kaXNwbGF5KCkpCi0gICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgc3RkOjp1bmlxdWVf
cHRyPFNjcmVlbkNhcHR1cmVyTGludXg+IGNhcHR1cmVyKG5ldyBTY3JlZW5DYXB0dXJlckxpbnV4
KCkpOwotICBpZiAoIWNhcHR1cmVyLmdldCgpLT5Jbml0KG9wdGlvbnMpKSB7Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci0gIH0KLQotICByZXR1cm4gc3RkOjptb3ZlKGNhcHR1cmVyKTsKLX0KLQotfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2RyYXdlcl9s
aW51eC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9kcmF3ZXJfbGludXguY2MKaW5kZXggMzljZWNhN2Rj
NjE3OTljNDZiNzMyMjUxOGU2NjUxYTM1NmQ1MTAxNy4uMmFiNWU3NDg5MWM2MmFmOTA3NGU2ZWRh
NDg2Mzk3ZDY3ZjgyZTcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2RyYXdlcl9saW51
eC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fZHJhd2VyX2xpbnV4LmNjCkBAIC0xNCw5ICsxNCw5
IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5Lmgi
CisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxh
eS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9kcmF3ZXIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fZHJhd2VyX2xvY2tfcG9z
aXguaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hfZGlz
cGxheS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInN5c3RlbV93
cmFwcGVycy9pbmNsdWRlL3NsZWVwLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9k
cmF3ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fZHJhd2VyX3VuaXR0ZXN0LmNjCmlu
ZGV4IDVmMGYzY2M1NzMzNTE4ZDU3YWJjOWE4NmVkMGQ3Y2I0ZWIyZmJkM2EuLmQ0OGZhODljMGI1
YmMwYTYyMWVlZjY5OTJhNTg4N2UyZjFjNGY5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVl
bl9kcmF3ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2RyYXdlcl91bml0dGVz
dC5jYwpAQCAtMTQwLDcgKzE0MCwxMiBAQCBURVNUKFNjcmVlbkRyYXdlclRlc3QsIERJU0FCTEVE
X0RyYXdSZWN0YW5nbGVzKSB7CiAgIFNsZWVwTXMoMTAwMDApOwogfQogCi1URVNUKFNjcmVlbkRy
YXdlclRlc3QsIFR3b1NjcmVlbkRyYXdlckxvY2tzKSB7CisjaWYgZGVmaW5lZChUSFJFQURfU0FO
SVRJWkVSKSAgLy8gYnVncy53ZWJydGMub3JnLzEwMDE5CisjZGVmaW5lIE1BWUJFX1R3b1NjcmVl
bkRyYXdlckxvY2tzIERJU0FCTEVEX1R3b1NjcmVlbkRyYXdlckxvY2tzCisjZWxzZQorI2RlZmlu
ZSBNQVlCRV9Ud29TY3JlZW5EcmF3ZXJMb2NrcyBUd29TY3JlZW5EcmF3ZXJMb2NrcworI2VuZGlm
CitURVNUKFNjcmVlbkRyYXdlclRlc3QsIE1BWUJFX1R3b1NjcmVlbkRyYXdlckxvY2tzKSB7CiAj
aWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCiAgIC8vIFNjcmVlbkRyYXdlckxvY2tQb3NpeCB3b24n
dCBiZSBhYmxlIHRvIHVubGluayB0aGUgbmFtZWQgc2VtYXBob3JlLiBTbyB1c2UgYQogICAvLyBk
aWZmZXJlbnQgc2VtYXBob3JlIG5hbWUgaGVyZSB0byBhdm9pZCBkZWFkbG9jay4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL3NoYXJlZF9kZXNrdG9wX2ZyYW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zaGFyZWRfZGVz
a3RvcF9mcmFtZS5oCmluZGV4IGY3MDUwOGNlZTE1YjY5MDZjMjRlNmQxMzY2MzJlM2IzYTUyNGMw
ZmQuLmVhMTJjMDAwZjJhNjQ1MjhmNWMwOGZjNzNjMjdkMTJlMTk4YmI5MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL3NoYXJlZF9kZXNrdG9wX2ZyYW1lLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2hhcmVkX2Rl
c2t0b3BfZnJhbWUuaApAQCAtMTYsMTIgKzE2LDEzIEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVm
Y291bnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0v
cnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gU2hhcmVkRGVza3RvcEZy
YW1lIGlzIGEgRGVza3RvcEZyYW1lIHRoYXQgbWF5IGhhdmUgbXVsdGlwbGUgaW5zdGFuY2VzIGFs
bAogLy8gc2hhcmluZyB0aGUgc2FtZSBidWZmZXIuCi1jbGFzcyBTaGFyZWREZXNrdG9wRnJhbWUg
OiBwdWJsaWMgRGVza3RvcEZyYW1lIHsKK2NsYXNzIFJUQ19FWFBPUlQgU2hhcmVkRGVza3RvcEZy
YW1lIDogcHVibGljIERlc2t0b3BGcmFtZSB7CiAgcHVibGljOgogICB+U2hhcmVkRGVza3RvcEZy
YW1lKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19jYXB0dXJlcl9s
aW51eC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19jYXB0dXJlcl9saW51eC5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MjM1OWU1MGMyZGIxOWM3NDhlNDE3YmNlZWM2YjU4OGU0ZWQxMDM4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX2xpbnV4LmNjCkBAIC0wLDAgKzEsNDAgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNr
dG9wX2NhcHR1cmVfb3B0aW9ucy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2Rlc2t0b3BfY2FwdHVyZXIuaCIKKworI2lmIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkK
KyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJf
cGlwZXdpcmUuaCIKKyNlbmRpZiAgLy8gZGVmaW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQorCisj
aWYgZGVmaW5lZChVU0VfWDExKQorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L3dpbmRvd19jYXB0dXJlcl94MTEuaCIKKyNlbmRpZiAgLy8gZGVmaW5lZChVU0VfWDExKQor
CituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gc3RhdGljCitzdGQ6OnVuaXF1ZV9wdHI8RGVza3Rv
cENhcHR1cmVyPiBEZXNrdG9wQ2FwdHVyZXI6OkNyZWF0ZVJhd1dpbmRvd0NhcHR1cmVyKAorICAg
IGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgeworI2lmIGRlZmluZWQoV0VC
UlRDX1VTRV9QSVBFV0lSRSkKKyAgaWYgKG9wdGlvbnMuYWxsb3dfcGlwZXdpcmUoKSAmJiBEZXNr
dG9wQ2FwdHVyZXI6OklzUnVubmluZ1VuZGVyV2F5bGFuZCgpKSB7CisgICAgcmV0dXJuIFdpbmRv
d0NhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJhd1dpbmRvd0NhcHR1cmVyKG9wdGlvbnMpOworICB9
CisjZW5kaWYgIC8vIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkKKworI2lmIGRlZmluZWQo
VVNFX1gxMSkKKyAgcmV0dXJuIFdpbmRvd0NhcHR1cmVyWDExOjpDcmVhdGVSYXdXaW5kb3dDYXB0
dXJlcihvcHRpb25zKTsKKyNlbmRpZiAgLy8gZGVmaW5lZChVU0VfWDExKQorCisgIHJldHVybiBu
dWxscHRyOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS93aW5kb3dfY2FwdHVyZXJfbWFjLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX21hYy5t
bQppbmRleCA5NWU2MjJhNzdhMWMzY2JjMWI5MGIyNjcyMmI3ZDc3MTA4NjZjM2VlLi5iMDY0N2Yw
NDFiNmQ4NjA4NTE3NWRlMGU3NWI4MjQyMGExZmI0YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93
aW5kb3dfY2FwdHVyZXJfbWFjLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19jYXB0dXJlcl9tYWMu
bW0KQEAgLTE0MCw5ICsxNDAsNyBAQCBib29sIFdpbmRvd0NhcHR1cmVyTWFjOjpGb2N1c09uU2Vs
ZWN0ZWRTb3VyY2UoKSB7CiBib29sIFdpbmRvd0NhcHR1cmVyTWFjOjpJc09jY2x1ZGVkKGNvbnN0
IERlc2t0b3BWZWN0b3ImIHBvcykgewogICBEZXNrdG9wVmVjdG9yIHN5c19wb3MgPSBwb3M7CiAg
IGlmIChjb25maWd1cmF0aW9uX21vbml0b3JfKSB7Ci0gICAgY29uZmlndXJhdGlvbl9tb25pdG9y
Xy0+TG9jaygpOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25fbW9uaXRv
cl8tPmRlc2t0b3BfY29uZmlndXJhdGlvbigpOwotICAgIGNvbmZpZ3VyYXRpb25fbW9uaXRvcl8t
PlVubG9jaygpOwogICAgIHN5c19wb3MgPSBwb3MuYWRkKGNvbmZpZ3VyYXRpb24uYm91bmRzLnRv
cF9sZWZ0KCkpOwogICB9CiAgIHJldHVybiB3aW5kb3dfZmluZGVyXy5HZXRXaW5kb3dVbmRlclBv
aW50KHN5c19wb3MpICE9IHdpbmRvd19pZF87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3df
Y2FwdHVyZXJfeDExLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX3gxMS5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRjYTNhZTVlOGM0MDA5NmE5NDVlOWYxMjBmZmM5YmJi
YTU4NDY1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfeDExLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICsw
LDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNp
bmNsdWRlIDxYMTEvWHV0aWwuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRl
Lmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWHJlbmRlci5oPgotCi0jaW5jbHVkZSA8dXRp
bGl0eT4KLQotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVy
ZV9vcHRpb25zLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9j
YXB0dXJlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZnJh
bWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyX3gx
MS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS9zaGFyZWRfeF9kaXNw
bGF5LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3dpbmRvd19saXN0
X3V0aWxzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfYXRvbV9j
YWNoZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X3NlcnZlcl9w
aXhlbF9idWZmZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2UvdHJhY2VfZXZlbnQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLW5hbWVzcGFjZSB7Ci0K
LWNsYXNzIFdpbmRvd0NhcHR1cmVyTGludXggOiBwdWJsaWMgRGVza3RvcENhcHR1cmVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTaGFyZWRYRGlzcGxheTo6WEV2ZW50SGFu
ZGxlciB7Ci0gcHVibGljOgotICBXaW5kb3dDYXB0dXJlckxpbnV4KGNvbnN0IERlc2t0b3BDYXB0
dXJlT3B0aW9ucyYgb3B0aW9ucyk7Ci0gIH5XaW5kb3dDYXB0dXJlckxpbnV4KCkgb3ZlcnJpZGU7
Ci0KLSAgLy8gRGVza3RvcENhcHR1cmVyIGludGVyZmFjZS4KLSAgdm9pZCBTdGFydChDYWxsYmFj
ayogY2FsbGJhY2spIG92ZXJyaWRlOwotICB2b2lkIENhcHR1cmVGcmFtZSgpIG92ZXJyaWRlOwot
ICBib29sIEdldFNvdXJjZUxpc3QoU291cmNlTGlzdCogc291cmNlcykgb3ZlcnJpZGU7Ci0gIGJv
b2wgU2VsZWN0U291cmNlKFNvdXJjZUlkIGlkKSBvdmVycmlkZTsKLSAgYm9vbCBGb2N1c09uU2Vs
ZWN0ZWRTb3VyY2UoKSBvdmVycmlkZTsKLSAgYm9vbCBJc09jY2x1ZGVkKGNvbnN0IERlc2t0b3BW
ZWN0b3ImIHBvcykgb3ZlcnJpZGU7Ci0KLSAgLy8gU2hhcmVkWERpc3BsYXk6OlhFdmVudEhhbmRs
ZXIgaW50ZXJmYWNlLgotICBib29sIEhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSBv
dmVycmlkZTsKLQotIHByaXZhdGU6Ci0gIERpc3BsYXkqIGRpc3BsYXkoKSB7IHJldHVybiB4X2Rp
c3BsYXlfLT5kaXNwbGF5KCk7IH0KLQotICAvLyBSZXR1cm5zIHdpbmRvdyB0aXRsZSBmb3IgdGhl
IHNwZWNpZmllZCBYIHx3aW5kb3d8LgotICBib29sIEdldFdpbmRvd1RpdGxlKDo6V2luZG93IHdp
bmRvdywgc3RkOjpzdHJpbmcqIHRpdGxlKTsKLQotICBDYWxsYmFjayogY2FsbGJhY2tfID0gbnVs
bHB0cjsKLQotICBydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVkWERpc3BsYXk+IHhfZGlzcGxheV87
Ci0KLSAgYm9vbCBoYXNfY29tcG9zaXRlX2V4dGVuc2lvbl8gPSBmYWxzZTsKLQotICA6OldpbmRv
dyBzZWxlY3RlZF93aW5kb3dfID0gMDsKLSAgWFNlcnZlclBpeGVsQnVmZmVyIHhfc2VydmVyX3Bp
eGVsX2J1ZmZlcl87Ci0gIFhBdG9tQ2FjaGUgYXRvbV9jYWNoZV87Ci0gIFdpbmRvd0ZpbmRlclgx
MSB3aW5kb3dfZmluZGVyXzsKLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFdpbmRv
d0NhcHR1cmVyTGludXgpOwotfTsKLQotV2luZG93Q2FwdHVyZXJMaW51eDo6V2luZG93Q2FwdHVy
ZXJMaW51eChjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpCi0gICAgOiB4X2Rp
c3BsYXlfKG9wdGlvbnMueF9kaXNwbGF5KCkpLAotICAgICAgYXRvbV9jYWNoZV8oZGlzcGxheSgp
KSwKLSAgICAgIHdpbmRvd19maW5kZXJfKCZhdG9tX2NhY2hlXykgewotICBpbnQgZXZlbnRfYmFz
ZSwgZXJyb3JfYmFzZSwgbWFqb3JfdmVyc2lvbiwgbWlub3JfdmVyc2lvbjsKLSAgaWYgKFhDb21w
b3NpdGVRdWVyeUV4dGVuc2lvbihkaXNwbGF5KCksICZldmVudF9iYXNlLCAmZXJyb3JfYmFzZSkg
JiYKLSAgICAgIFhDb21wb3NpdGVRdWVyeVZlcnNpb24oZGlzcGxheSgpLCAmbWFqb3JfdmVyc2lv
biwgJm1pbm9yX3ZlcnNpb24pICYmCi0gICAgICAvLyBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1h
cCgpIHJlcXVpcmVzIHZlcnNpb24gMC4yCi0gICAgICAobWFqb3JfdmVyc2lvbiA+IDAgfHwgbWlu
b3JfdmVyc2lvbiA+PSAyKSkgewotICAgIGhhc19jb21wb3NpdGVfZXh0ZW5zaW9uXyA9IHRydWU7
Ci0gIH0gZWxzZSB7Ci0gICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiWGNvbXBvc2l0ZSBleHRlbnNp
b24gbm90IGF2YWlsYWJsZSBvciB0b28gb2xkLiI7Ci0gIH0KLQotICB4X2Rpc3BsYXlfLT5BZGRF
dmVudEhhbmRsZXIoQ29uZmlndXJlTm90aWZ5LCB0aGlzKTsKLX0KLQotV2luZG93Q2FwdHVyZXJM
aW51eDo6fldpbmRvd0NhcHR1cmVyTGludXgoKSB7Ci0gIHhfZGlzcGxheV8tPlJlbW92ZUV2ZW50
SGFuZGxlcihDb25maWd1cmVOb3RpZnksIHRoaXMpOwotfQotCi1ib29sIFdpbmRvd0NhcHR1cmVy
TGludXg6OkdldFNvdXJjZUxpc3QoU291cmNlTGlzdCogc291cmNlcykgewotICByZXR1cm4gR2V0
V2luZG93TGlzdCgmYXRvbV9jYWNoZV8sIFt0aGlzLCBzb3VyY2VzXSg6OldpbmRvdyB3aW5kb3cp
IHsKLSAgICBTb3VyY2UgdzsKLSAgICB3LmlkID0gd2luZG93OwotICAgIGlmICh0aGlzLT5HZXRX
aW5kb3dUaXRsZSh3aW5kb3csICZ3LnRpdGxlKSkgewotICAgICAgc291cmNlcy0+cHVzaF9iYWNr
KHcpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfSk7Ci19Ci0KLWJvb2wgV2luZG93Q2Fw
dHVyZXJMaW51eDo6U2VsZWN0U291cmNlKFNvdXJjZUlkIGlkKSB7Ci0gIGlmICgheF9zZXJ2ZXJf
cGl4ZWxfYnVmZmVyXy5Jbml0KGRpc3BsYXkoKSwgaWQpKQotICAgIHJldHVybiBmYWxzZTsKLQot
ICAvLyBUZWxsIHRoZSBYIHNlcnZlciB0byBzZW5kIHVzIHdpbmRvdyByZXNpemluZyBldmVudHMu
Ci0gIFhTZWxlY3RJbnB1dChkaXNwbGF5KCksIGlkLCBTdHJ1Y3R1cmVOb3RpZnlNYXNrKTsKLQot
ICBzZWxlY3RlZF93aW5kb3dfID0gaWQ7Ci0KLSAgLy8gSW4gYWRkaXRpb24gdG8gbmVlZGluZyBY
MTEgc2VydmVyLXNpZGUgc3VwcG9ydCBmb3IgWGNvbXBvc2l0ZSwgaXQgYWN0dWFsbHkKLSAgLy8g
bmVlZHMgdG8gYmUgdHVybmVkIG9uIGZvciB0aGUgd2luZG93LiBJZiB0aGUgdXNlciBoYXMgbW9k
ZXJuCi0gIC8vIGhhcmR3YXJlL2RyaXZlcnMgYnV0IGlzbid0IHVzaW5nIGEgY29tcG9zaXRpbmcg
d2luZG93IG1hbmFnZXIsIHRoYXQgd29uJ3QKLSAgLy8gYmUgdGhlIGNhc2UuIEhlcmUgd2UgYXV0
b21hdGljYWxseSB0dXJuIGl0IG9uLgotCi0gIC8vIFJlZGlyZWN0IGRyYXdpbmcgdG8gYW4gb2Zm
c2NyZWVuIGJ1ZmZlciAoaWUsIHR1cm4gb24gY29tcG9zaXRpbmcpLiBYMTEKLSAgLy8gcmVtZW1i
ZXJzIHdobyBoYXMgcmVxdWVzdGVkIHRoaXMgYW5kIHdpbGwgdHVybiBpdCBvZmYgZm9yIHVzIHdo
ZW4gd2UgZXhpdC4KLSAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KGRpc3BsYXkoKSwgaWQsIENv
bXBvc2l0ZVJlZGlyZWN0QXV0b21hdGljKTsKLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBX
aW5kb3dDYXB0dXJlckxpbnV4OjpGb2N1c09uU2VsZWN0ZWRTb3VyY2UoKSB7Ci0gIGlmICghc2Vs
ZWN0ZWRfd2luZG93XykKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgdW5zaWduZWQgaW50IG51bV9j
aGlsZHJlbjsKLSAgOjpXaW5kb3cqIGNoaWxkcmVuOwotICA6OldpbmRvdyBwYXJlbnQ7Ci0gIDo6
V2luZG93IHJvb3Q7Ci0gIC8vIEZpbmQgdGhlIHJvb3Qgd2luZG93IHRvIHBhc3MgZXZlbnQgdG8u
Ci0gIGludCBzdGF0dXMgPSBYUXVlcnlUcmVlKGRpc3BsYXkoKSwgc2VsZWN0ZWRfd2luZG93Xywg
JnJvb3QsICZwYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZjaGlsZHJlbiwgJm51
bV9jaGlsZHJlbik7Ci0gIGlmIChzdGF0dXMgPT0gMCkgewotICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJGYWlsZWQgdG8gcXVlcnkgZm9yIHRoZSByb290IHdpbmRvdy4iOwotICAgIHJldHVybiBm
YWxzZTsKLSAgfQotCi0gIGlmIChjaGlsZHJlbikKLSAgICBYRnJlZShjaGlsZHJlbik7Ci0KLSAg
WFJhaXNlV2luZG93KGRpc3BsYXkoKSwgc2VsZWN0ZWRfd2luZG93Xyk7Ci0KLSAgLy8gU29tZSB3
aW5kb3cgbWFuYWdlcnMgKGUuZy4sIG1ldGFjaXR5IGluIEdOT01FKSBjb25zaWRlciBpdCBpbGxl
Z2FsIHRvCi0gIC8vIHJhaXNlIGEgd2luZG93IHdpdGhvdXQgYWxzbyBnaXZpbmcgaXQgaW5wdXQg
Zm9jdXMgd2l0aAotICAvLyBfTkVUX0FDVElWRV9XSU5ET1csIHNvIFhSYWlzZVdpbmRvdygpIG9u
IGl0cyBvd24gaXNuJ3QgZW5vdWdoLgotICBBdG9tIGF0b20gPSBYSW50ZXJuQXRvbShkaXNwbGF5
KCksICJfTkVUX0FDVElWRV9XSU5ET1ciLCBUcnVlKTsKLSAgaWYgKGF0b20gIT0gTm9uZSkgewot
ICAgIFhFdmVudCB4ZXY7Ci0gICAgeGV2LnhjbGllbnQudHlwZSA9IENsaWVudE1lc3NhZ2U7Ci0g
ICAgeGV2LnhjbGllbnQuc2VyaWFsID0gMDsKLSAgICB4ZXYueGNsaWVudC5zZW5kX2V2ZW50ID0g
VHJ1ZTsKLSAgICB4ZXYueGNsaWVudC53aW5kb3cgPSBzZWxlY3RlZF93aW5kb3dfOwotICAgIHhl
di54Y2xpZW50Lm1lc3NhZ2VfdHlwZSA9IGF0b207Ci0KLSAgICAvLyBUaGUgZm9ybWF0IG1lbWJl
ciBpcyBzZXQgdG8gOCwgMTYsIG9yIDMyIGFuZCBzcGVjaWZpZXMgd2hldGhlciB0aGUKLSAgICAv
LyBkYXRhIHNob3VsZCBiZSB2aWV3ZWQgYXMgYSBsaXN0IG9mIGJ5dGVzLCBzaG9ydHMsIG9yIGxv
bmdzLgotICAgIHhldi54Y2xpZW50LmZvcm1hdCA9IDMyOwotCi0gICAgbWVtc2V0KHhldi54Y2xp
ZW50LmRhdGEubCwgMCwgc2l6ZW9mKHhldi54Y2xpZW50LmRhdGEubCkpOwotCi0gICAgWFNlbmRF
dmVudChkaXNwbGF5KCksIHJvb3QsIEZhbHNlLAotICAgICAgICAgICAgICAgU3Vic3RydWN0dXJl
UmVkaXJlY3RNYXNrIHwgU3Vic3RydWN0dXJlTm90aWZ5TWFzaywgJnhldik7Ci0gIH0KLSAgWEZs
dXNoKGRpc3BsYXkoKSk7Ci0gIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdpbmRvd0NhcHR1cmVy
TGludXg6OlN0YXJ0KENhbGxiYWNrKiBjYWxsYmFjaykgewotICBSVENfRENIRUNLKCFjYWxsYmFj
a18pOwotICBSVENfRENIRUNLKGNhbGxiYWNrKTsKLQotICBjYWxsYmFja18gPSBjYWxsYmFjazsK
LX0KLQotdm9pZCBXaW5kb3dDYXB0dXJlckxpbnV4OjpDYXB0dXJlRnJhbWUoKSB7Ci0gIFRSQUNF
X0VWRU5UMCgid2VicnRjIiwgIldpbmRvd0NhcHR1cmVyTGludXg6OkNhcHR1cmVGcmFtZSIpOwot
Ci0gIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5Jc1dpbmRvd1ZhbGlkKCkpIHsKLSAgICBS
VENfTE9HKExTX0VSUk9SKSA8PCAiVGhlIHdpbmRvdyBpcyBubyBsb25nZXIgdmFsaWQuIjsKLSAg
ICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVOVCwgbnVs
bHB0cik7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgeF9kaXNwbGF5Xy0+UHJvY2Vzc1BlbmRpbmdY
RXZlbnRzKCk7Ci0KLSAgaWYgKCFoYXNfY29tcG9zaXRlX2V4dGVuc2lvbl8pIHsKLSAgICAvLyBX
aXRob3V0IHRoZSBYY29tcG9zaXRlIGV4dGVuc2lvbiB3ZSBjYXB0dXJlIHdoZW4gdGhlIHdob2xl
IHdpbmRvdyBpcwotICAgIC8vIHZpc2libGUgb24gc2NyZWVuIGFuZCBub3QgY292ZXJlZCBieSBh
bnkgb3RoZXIgd2luZG93LiBUaGlzIGlzIG5vdAotICAgIC8vIHNvbWV0aGluZyB3ZSB3YW50IHNv
IGluc3RlYWQsIGp1c3QgYmFpbCBvdXQuCi0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIk5vIFhj
b21wb3NpdGUgZXh0ZW5zaW9uIGRldGVjdGVkLiI7Ci0gICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVS
ZXN1bHQoUmVzdWx0OjpFUlJPUl9QRVJNQU5FTlQsIG51bGxwdHIpOwotICAgIHJldHVybjsKLSAg
fQotCi0gIGlmIChHZXRXaW5kb3dTdGF0ZSgmYXRvbV9jYWNoZV8sIHNlbGVjdGVkX3dpbmRvd18p
ID09IEljb25pY1N0YXRlKSB7Ci0gICAgLy8gV2luZG93IGlzIGluIG1pbmltaXplZC4gUmV0dXJu
IGEgMXgxIGZyYW1lIGFzIHNhbWUgYXMgT1NYL1dpbiBkb2VzLgotICAgIHN0ZDo6dW5pcXVlX3B0
cjxEZXNrdG9wRnJhbWU+IGZyYW1lKAotICAgICAgICBuZXcgQmFzaWNEZXNrdG9wRnJhbWUoRGVz
a3RvcFNpemUoMSwgMSkpKTsKLSAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6
OlNVQ0NFU1MsIHN0ZDo6bW92ZShmcmFtZSkpOwotICAgIHJldHVybjsKLSAgfQotCi0gIHN0ZDo6
dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IGZyYW1lKAotICAgICAgbmV3IEJhc2ljRGVza3RvcEZy
YW1lKHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8ud2luZG93X3NpemUoKSkpOwotCi0gIHhfc2VydmVy
X3BpeGVsX2J1ZmZlcl8uU3luY2hyb25pemUoKTsKLSAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZm
ZXJfLkNhcHR1cmVSZWN0KERlc2t0b3BSZWN0OjpNYWtlU2l6ZShmcmFtZS0+c2l6ZSgpKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLmdldCgpKSkgewot
ICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlRlbXBvcmFyaWx5IGZhaWxlZCB0byBjYXB0dXJl
IHdpbm9kdy4iOwotICAgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1Jf
VEVNUE9SQVJZLCBudWxscHRyKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBmcmFtZS0+bXV0YWJs
ZV91cGRhdGVkX3JlZ2lvbigpLT5TZXRSZWN0KAotICAgICAgRGVza3RvcFJlY3Q6Ok1ha2VTaXpl
KGZyYW1lLT5zaXplKCkpKTsKLSAgZnJhbWUtPnNldF90b3BfbGVmdCh4X3NlcnZlcl9waXhlbF9i
dWZmZXJfLndpbmRvd19yZWN0KCkudG9wX2xlZnQoKSk7Ci0KLSAgY2FsbGJhY2tfLT5PbkNhcHR1
cmVSZXN1bHQoUmVzdWx0OjpTVUNDRVNTLCBzdGQ6Om1vdmUoZnJhbWUpKTsKLX0KLQotYm9vbCBX
aW5kb3dDYXB0dXJlckxpbnV4OjpJc09jY2x1ZGVkKGNvbnN0IERlc2t0b3BWZWN0b3ImIHBvcykg
ewotICByZXR1cm4gd2luZG93X2ZpbmRlcl8uR2V0V2luZG93VW5kZXJQb2ludChwb3MpICE9Ci0g
ICAgICAgICBzdGF0aWNfY2FzdDxXaW5kb3dJZD4oc2VsZWN0ZWRfd2luZG93Xyk7Ci19Ci0KLWJv
b2wgV2luZG93Q2FwdHVyZXJMaW51eDo6SGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVudCYgZXZlbnQp
IHsKLSAgaWYgKGV2ZW50LnR5cGUgPT0gQ29uZmlndXJlTm90aWZ5KSB7Ci0gICAgWENvbmZpZ3Vy
ZUV2ZW50IHhjZSA9IGV2ZW50Lnhjb25maWd1cmU7Ci0gICAgaWYgKHhjZS53aW5kb3cgPT0gc2Vs
ZWN0ZWRfd2luZG93XykgewotICAgICAgaWYgKCFEZXNrdG9wUmVjdEZyb21YQXR0cmlidXRlcyh4
Y2UpLmVxdWFscygKLSAgICAgICAgICAgICAgeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy53aW5kb3df
cmVjdCgpKSkgewotICAgICAgICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uSW5pdChkaXNw
bGF5KCksIHNlbGVjdGVkX3dpbmRvd18pKSB7Ci0gICAgICAgICAgUlRDX0xPRyhMU19FUlJPUikK
LSAgICAgICAgICAgICAgPDwgIkZhaWxlZCB0byBpbml0aWFsaXplIHBpeGVsIGJ1ZmZlciBhZnRl
ciByZXNpemluZy4iOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLy8gQWx3
YXlzIHJldHVybnMgZmFsc2UsIHNvIG90aGVyIG9ic2VydmVycyBjYW4gc3RpbGwgcmVjZWl2ZSB0
aGUgZXZlbnRzLgotICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2luZG93Q2FwdHVyZXJMaW51
eDo6R2V0V2luZG93VGl0bGUoOjpXaW5kb3cgd2luZG93LCBzdGQ6OnN0cmluZyogdGl0bGUpIHsK
LSAgaW50IHN0YXR1czsKLSAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgWFRleHRQcm9wZXJ0eSB3
aW5kb3dfbmFtZTsKLSAgd2luZG93X25hbWUudmFsdWUgPSBudWxscHRyOwotICBpZiAod2luZG93
KSB7Ci0gICAgc3RhdHVzID0gWEdldFdNTmFtZShkaXNwbGF5KCksIHdpbmRvdywgJndpbmRvd19u
YW1lKTsKLSAgICBpZiAoc3RhdHVzICYmIHdpbmRvd19uYW1lLnZhbHVlICYmIHdpbmRvd19uYW1l
Lm5pdGVtcykgewotICAgICAgaW50IGNudDsKLSAgICAgIGNoYXIqKiBsaXN0ID0gbnVsbHB0cjsK
LSAgICAgIHN0YXR1cyA9Ci0gICAgICAgICAgWHV0ZjhUZXh0UHJvcGVydHlUb1RleHRMaXN0KGRp
c3BsYXkoKSwgJndpbmRvd19uYW1lLCAmbGlzdCwgJmNudCk7Ci0gICAgICBpZiAoc3RhdHVzID49
IFN1Y2Nlc3MgJiYgY250ICYmICpsaXN0KSB7Ci0gICAgICAgIGlmIChjbnQgPiAxKSB7Ci0gICAg
ICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiV2luZG93IGhhcyAiIDw8IGNudAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIiB0ZXh0IHByb3BlcnRpZXMsIG9ubHkgdXNpbmcgdGhlIGZp
cnN0IG9uZS4iOwotICAgICAgICB9Ci0gICAgICAgICp0aXRsZSA9ICpsaXN0OwotICAgICAgICBy
ZXN1bHQgPSB0cnVlOwotICAgICAgfQotICAgICAgaWYgKGxpc3QpCi0gICAgICAgIFhGcmVlU3Ry
aW5nTGlzdChsaXN0KTsKLSAgICB9Ci0gICAgaWYgKHdpbmRvd19uYW1lLnZhbHVlKQotICAgICAg
WEZyZWUod2luZG93X25hbWUudmFsdWUpOwotICB9Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0g
IC8vIG5hbWVzcGFjZQotCi0vLyBzdGF0aWMKLXN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVy
ZXI+IERlc2t0b3BDYXB0dXJlcjo6Q3JlYXRlUmF3V2luZG93Q2FwdHVyZXIoCi0gICAgY29uc3Qg
RGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7Ci0gIGlmICghb3B0aW9ucy54X2Rpc3Bs
YXkoKSkKLSAgICByZXR1cm4gbnVsbHB0cjsKLSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxEZXNr
dG9wQ2FwdHVyZXI+KG5ldyBXaW5kb3dDYXB0dXJlckxpbnV4KG9wdGlvbnMpKTsKLX0KLQotfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXJfdW5pdHRlc3QuY2MKaW5kZXggODgz
MjdhYWFjNTQ4M2FkOTUxOTk4MTAxNzdlODc1ZTJmNjgzODEyMC4uZGY5MDY3ZWYyY2I1OTczMzU3
MzJhZWZlNDkxY2VhMjRhNGUzOGI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRl
cl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyX3VuaXR0ZXN0LmNjCkBA
IC0yMSw4ICsyMSw4IEBACiAKICNpZiBkZWZpbmVkKFVTRV9YMTEpCiAjaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3No
YXJlZF94X2Rpc3BsYXkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEv
eF9hdG9tX2NhY2hlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgv
c2hhcmVkX3hfZGlzcGxheS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L3hfYXRvbV9jYWNoZS5oIgogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyX3gxMS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRv
d19maW5kZXJfeDExLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzY5NDMyNmQy
ZmQ4NDBmYjRlOTMyYTI5MGU4ZGFkYTE3YWVkNTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXJfeDExLmNjCisrKyAv
ZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
LSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNs
dWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyX3gxMS5oIgotCi0jaW5j
bHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUveDExL3dpbmRvd19saXN0X3V0aWxzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1XaW5kb3dGaW5kZXJYMTE6OldpbmRvd0ZpbmRl
clgxMShYQXRvbUNhY2hlKiBjYWNoZSkgOiBjYWNoZV8oY2FjaGUpIHsKLSAgUlRDX0RDSEVDSyhj
YWNoZV8pOwotfQotCi1XaW5kb3dGaW5kZXJYMTE6On5XaW5kb3dGaW5kZXJYMTEoKSA9IGRlZmF1
bHQ7Ci0KLVdpbmRvd0lkIFdpbmRvd0ZpbmRlclgxMTo6R2V0V2luZG93VW5kZXJQb2ludChEZXNr
dG9wVmVjdG9yIHBvaW50KSB7Ci0gIFdpbmRvd0lkIGlkID0ga051bGxXaW5kb3dJZDsKLSAgR2V0
V2luZG93TGlzdChjYWNoZV8sIFsmaWQsIHRoaXMsIHBvaW50XSg6OldpbmRvdyB3aW5kb3cpIHsK
LSAgICBEZXNrdG9wUmVjdCByZWN0OwotICAgIGlmIChHZXRXaW5kb3dSZWN0KHRoaXMtPmNhY2hl
Xy0+ZGlzcGxheSgpLCB3aW5kb3csICZyZWN0KSAmJgotICAgICAgICByZWN0LkNvbnRhaW5zKHBv
aW50KSkgewotICAgICAgaWQgPSB3aW5kb3c7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotICB9KTsKLSAgcmV0dXJuIGlkOwotfQotCi0vLyBzdGF0aWMKLXN0
ZDo6dW5pcXVlX3B0cjxXaW5kb3dGaW5kZXI+IFdpbmRvd0ZpbmRlcjo6Q3JlYXRlKAotICAgIGNv
bnN0IFdpbmRvd0ZpbmRlcjo6T3B0aW9ucyYgb3B0aW9ucykgewotICBpZiAob3B0aW9ucy5jYWNo
ZSA9PSBudWxscHRyKSB7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0gIH0KLQotICByZXR1cm4gYWJz
bDo6bWFrZV91bmlxdWU8V2luZG93RmluZGVyWDExPihvcHRpb25zLmNhY2hlKTsKLX0KLQotfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl94
MTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXJfeDExLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM4YzMwYzQ2NzBiYWM4MmUzOTk1YzllMTE3N2NhMTRjYmE2ZDdlZDIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93
X2ZpbmRlcl94MTEuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KLSAqLwotCi0jaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1dJTkRPV19GSU5E
RVJfWDExX0hfCi0jZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1dJTkRPV19GSU5ERVJf
WDExX0hfCi0KLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVy
LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1jbGFzcyBYQXRvbUNhY2hlOwotCi0vLyBUaGUg
aW1wbGVtZW50YXRpb24gb2YgV2luZG93RmluZGVyIGZvciBYMTEuCi1jbGFzcyBXaW5kb3dGaW5k
ZXJYMTEgZmluYWwgOiBwdWJsaWMgV2luZG93RmluZGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0
IFdpbmRvd0ZpbmRlclgxMShYQXRvbUNhY2hlKiBjYWNoZSk7Ci0gIH5XaW5kb3dGaW5kZXJYMTEo
KSBvdmVycmlkZTsKLQotICAvLyBXaW5kb3dGaW5kZXIgaW1wbGVtZW50YXRpb24uCi0gIFdpbmRv
d0lkIEdldFdpbmRvd1VuZGVyUG9pbnQoRGVza3RvcFZlY3RvciBwb2ludCkgb3ZlcnJpZGU7Ci0K
LSBwcml2YXRlOgotICBYQXRvbUNhY2hlKiBjb25zdCBjYWNoZV87Ci19OwotCi19ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfV0lORE9X
X0ZJTkRFUl9YMTFfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS9zaGFyZWRfeF9kaXNwbGF5
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUveDExL3NoYXJlZF94X2Rpc3BsYXkuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGRiNmE2NGI4MWQ5Yjc1MWJhOTVhM2NhZjJiZTliMmU4NzE5YWExZDEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDEx
L3NoYXJlZF94X2Rpc3BsYXkuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgot
ICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gx
MS9zaGFyZWRfeF9kaXNwbGF5LmgiCi0KLSNpbmNsdWRlIDxYMTEvWGxpYi5oPgotCi0jaW5jbHVk
ZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotU2hhcmVkWERpc3Bs
YXk6OlNoYXJlZFhEaXNwbGF5KERpc3BsYXkqIGRpc3BsYXkpIDogZGlzcGxheV8oZGlzcGxheSkg
ewotICBSVENfRENIRUNLKGRpc3BsYXlfKTsKLX0KLQotU2hhcmVkWERpc3BsYXk6On5TaGFyZWRY
RGlzcGxheSgpIHsKLSAgUlRDX0RDSEVDSyhldmVudF9oYW5kbGVyc18uZW1wdHkoKSk7Ci0gIFhD
bG9zZURpc3BsYXkoZGlzcGxheV8pOwotfQotCi0vLyBzdGF0aWMKLXJ0Yzo6c2NvcGVkX3JlZnB0
cjxTaGFyZWRYRGlzcGxheT4gU2hhcmVkWERpc3BsYXk6OkNyZWF0ZSgKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyYgZGlzcGxheV9uYW1lKSB7Ci0gIERpc3BsYXkqIGRpc3BsYXkgPQotICAgICAgWE9w
ZW5EaXNwbGF5KGRpc3BsYXlfbmFtZS5lbXB0eSgpID8gTlVMTCA6IGRpc3BsYXlfbmFtZS5jX3N0
cigpKTsKLSAgaWYgKCFkaXNwbGF5KSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVuYWJs
ZSB0byBvcGVuIGRpc3BsYXkiOwotICAgIHJldHVybiBOVUxMOwotICB9Ci0gIHJldHVybiBuZXcg
U2hhcmVkWERpc3BsYXkoZGlzcGxheSk7Ci19Ci0KLS8vIHN0YXRpYwotcnRjOjpzY29wZWRfcmVm
cHRyPFNoYXJlZFhEaXNwbGF5PiBTaGFyZWRYRGlzcGxheTo6Q3JlYXRlRGVmYXVsdCgpIHsKLSAg
cmV0dXJuIENyZWF0ZShzdGQ6OnN0cmluZygpKTsKLX0KLQotdm9pZCBTaGFyZWRYRGlzcGxheTo6
QWRkRXZlbnRIYW5kbGVyKGludCB0eXBlLCBYRXZlbnRIYW5kbGVyKiBoYW5kbGVyKSB7Ci0gIGV2
ZW50X2hhbmRsZXJzX1t0eXBlXS5wdXNoX2JhY2soaGFuZGxlcik7Ci19Ci0KLXZvaWQgU2hhcmVk
WERpc3BsYXk6OlJlbW92ZUV2ZW50SGFuZGxlcihpbnQgdHlwZSwgWEV2ZW50SGFuZGxlciogaGFu
ZGxlcikgewotICBFdmVudEhhbmRsZXJzTWFwOjppdGVyYXRvciBoYW5kbGVycyA9IGV2ZW50X2hh
bmRsZXJzXy5maW5kKHR5cGUpOwotICBpZiAoaGFuZGxlcnMgPT0gZXZlbnRfaGFuZGxlcnNfLmVu
ZCgpKQotICAgIHJldHVybjsKLQotICBzdGQ6OnZlY3RvcjxYRXZlbnRIYW5kbGVyKj46Oml0ZXJh
dG9yIG5ld19lbmQgPQotICAgICAgc3RkOjpyZW1vdmUoaGFuZGxlcnMtPnNlY29uZC5iZWdpbigp
LCBoYW5kbGVycy0+c2Vjb25kLmVuZCgpLCBoYW5kbGVyKTsKLSAgaGFuZGxlcnMtPnNlY29uZC5l
cmFzZShuZXdfZW5kLCBoYW5kbGVycy0+c2Vjb25kLmVuZCgpKTsKLQotICAvLyBDaGVjayBpZiBu
byBoYW5kbGVycyBsZWZ0IGZvciB0aGlzIGV2ZW50LgotICBpZiAoaGFuZGxlcnMtPnNlY29uZC5l
bXB0eSgpKQotICAgIGV2ZW50X2hhbmRsZXJzXy5lcmFzZShoYW5kbGVycyk7Ci19Ci0KLXZvaWQg
U2hhcmVkWERpc3BsYXk6OlByb2Nlc3NQZW5kaW5nWEV2ZW50cygpIHsKLSAgLy8gSG9sZCByZWZl
cmVuY2UgdG8gfHRoaXN8IHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZyBkZXN0cm95ZWQgd2hpbGUK
LSAgLy8gcHJvY2Vzc2luZyBldmVudHMuCi0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRYRGlz
cGxheT4gc2VsZih0aGlzKTsKLQotICAvLyBGaW5kIHRoZSBudW1iZXIgb2YgZXZlbnRzIHRoYXQg
YXJlIG91dHN0YW5kaW5nICJub3cuIiAgV2UgZG9uJ3QganVzdCBsb29wCi0gIC8vIG9uIFhQZW5k
aW5nIGJlY2F1c2Ugd2Ugd2FudCB0byBndWFyYW50ZWUgdGhpcyB0ZXJtaW5hdGVzLgotICBpbnQg
ZXZlbnRzX3RvX3Byb2Nlc3MgPSBYUGVuZGluZyhkaXNwbGF5KCkpOwotICBYRXZlbnQgZTsKLQot
ICBmb3IgKGludCBpID0gMDsgaSA8IGV2ZW50c190b19wcm9jZXNzOyBpKyspIHsKLSAgICBYTmV4
dEV2ZW50KGRpc3BsYXkoKSwgJmUpOwotICAgIEV2ZW50SGFuZGxlcnNNYXA6Oml0ZXJhdG9yIGhh
bmRsZXJzID0gZXZlbnRfaGFuZGxlcnNfLmZpbmQoZS50eXBlKTsKLSAgICBpZiAoaGFuZGxlcnMg
PT0gZXZlbnRfaGFuZGxlcnNfLmVuZCgpKQotICAgICAgY29udGludWU7Ci0gICAgZm9yIChzdGQ6
OnZlY3RvcjxYRXZlbnRIYW5kbGVyKj46Oml0ZXJhdG9yIGl0ID0gaGFuZGxlcnMtPnNlY29uZC5i
ZWdpbigpOwotICAgICAgICAgaXQgIT0gaGFuZGxlcnMtPnNlY29uZC5lbmQoKTsgKytpdCkgewot
ICAgICAgaWYgKCgqaXQpLT5IYW5kbGVYRXZlbnQoZSkpCi0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94
MTEvc2hhcmVkX3hfZGlzcGxheS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3NoYXJlZF94X2Rpc3BsYXkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ5M2IzYjE3NTE0NGQxNGM3ZDM2M2I0YzFi
M2M2Mjc4N2M0OGNlZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hfZGlzcGxheS5oCisrKyAvZGV2L251bGwKQEAgLTEs
ODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19ERVNL
VE9QX0NBUFRVUkVfWDExX1NIQVJFRF9YX0RJU1BMQVlfSF8KLSNkZWZpbmUgTU9EVUxFU19ERVNL
VE9QX0NBUFRVUkVfWDExX1NIQVJFRF9YX0RJU1BMQVlfSF8KLQotI2luY2x1ZGUgPG1hcD4KLSNp
bmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLSNpbmNsdWRlICJhcGkvcmVm
Y291bnRlZGJhc2UuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKLQotLy8gSW5jbHVkaW5nIFhsaWIu
aCB3aWxsIGludm9sdmUgZXZpbCBkZWZpbmVzIChCb29sLCBTdGF0dXMsIFRydWUsIEZhbHNlKSwg
d2hpY2gKLS8vIGVhc2lseSBjb25mbGljdCB3aXRoIG90aGVyIGhlYWRlcnMuCi10eXBlZGVmIHN0
cnVjdCBfWERpc3BsYXkgRGlzcGxheTsKLXR5cGVkZWYgdW5pb24gX1hFdmVudCBYRXZlbnQ7Ci0K
LW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBBIHJlZi1jb3VudGVkIG9iamVjdCB0byBzdG9yZSBY
RGlzcGxheSBjb25uZWN0aW9uLgotY2xhc3MgU2hhcmVkWERpc3BsYXkgOiBwdWJsaWMgcnRjOjpS
ZWZDb3VudGVkQmFzZSB7Ci0gcHVibGljOgotICBjbGFzcyBYRXZlbnRIYW5kbGVyIHsKLSAgIHB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5YRXZlbnRIYW5kbGVyKCkge30KLQotICAgIC8vIFByb2Nlc3Nl
cyBYRXZlbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgaGFzIGJlZW4gaGFuZGxlZC4KLSAg
ICB2aXJ0dWFsIGJvb2wgSGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVudCYgZXZlbnQpID0gMDsKLSAg
fTsKLQotICAvLyBUYWtlcyBvd25lcnNoaXAgb2YgfGRpc3BsYXl8LgotICBleHBsaWNpdCBTaGFy
ZWRYRGlzcGxheShEaXNwbGF5KiBkaXNwbGF5KTsKLQotICAvLyBDcmVhdGVzIGEgbmV3IFgxMSBE
aXNwbGF5IGZvciB0aGUgfGRpc3BsYXlfbmFtZXwuIE5VTEwgaXMgcmV0dXJuZWQgaWYgWDExCi0g
IC8vIGNvbm5lY3Rpb24gZmFpbGVkLiBFcXVpdmFsZW50IHRvIENyZWF0ZURlZmF1bHQoKSB3aGVu
IHxkaXNwbGF5X25hbWV8IGlzCi0gIC8vIGVtcHR5LgotICBzdGF0aWMgcnRjOjpzY29wZWRfcmVm
cHRyPFNoYXJlZFhEaXNwbGF5PiBDcmVhdGUoCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGlz
cGxheV9uYW1lKTsKLQotICAvLyBDcmVhdGVzIFgxMSBEaXNwbGF5IGNvbm5lY3Rpb24gZm9yIHRo
ZSBkZWZhdWx0IGRpc3BsYXkgKGUuZy4gc3BlY2lmaWVkIGluCi0gIC8vIERJU1BMQVkpLiBOVUxM
IGlzIHJldHVybmVkIGlmIFgxMSBjb25uZWN0aW9uIGZhaWxlZC4KLSAgc3RhdGljIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxTaGFyZWRYRGlzcGxheT4gQ3JlYXRlRGVmYXVsdCgpOwotCi0gIERpc3BsYXkq
IGRpc3BsYXkoKSB7IHJldHVybiBkaXNwbGF5XzsgfQotCi0gIC8vIEFkZHMgYSBuZXcgZXZlbnQg
fGhhbmRsZXJ8IGZvciBYRXZlbnQncyBvZiB8dHlwZXwuCi0gIHZvaWQgQWRkRXZlbnRIYW5kbGVy
KGludCB0eXBlLCBYRXZlbnRIYW5kbGVyKiBoYW5kbGVyKTsKLQotICAvLyBSZW1vdmVzIGV2ZW50
IHxoYW5kbGVyfCBhZGRlZCB1c2luZyB8QWRkRXZlbnRIYW5kbGVyfC4gRG9lc24ndCBkbyBhbnl0
aGluZwotICAvLyBpZiB8aGFuZGxlcnwgaXMgbm90IHJlZ2lzdGVyZWQuCi0gIHZvaWQgUmVtb3Zl
RXZlbnRIYW5kbGVyKGludCB0eXBlLCBYRXZlbnRIYW5kbGVyKiBoYW5kbGVyKTsKLQotICAvLyBQ
cm9jZXNzZXMgcGVuZGluZyBYRXZlbnRzLCBjYWxsaW5nIGNvcnJlc3BvbmRpbmcgZXZlbnQgaGFu
ZGxlcnMuCi0gIHZvaWQgUHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCk7Ci0KLSBwcm90ZWN0ZWQ6Ci0g
IH5TaGFyZWRYRGlzcGxheSgpIG92ZXJyaWRlOwotCi0gcHJpdmF0ZToKLSAgdHlwZWRlZiBzdGQ6
Om1hcDxpbnQsIHN0ZDo6dmVjdG9yPFhFdmVudEhhbmRsZXIqPiA+IEV2ZW50SGFuZGxlcnNNYXA7
Ci0KLSAgRGlzcGxheSogZGlzcGxheV87Ci0KLSAgRXZlbnRIYW5kbGVyc01hcCBldmVudF9oYW5k
bGVyc187Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTaGFyZWRYRGlzcGxheSk7
Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxFU19ERVNL
VE9QX0NBUFRVUkVfWDExX1NIQVJFRF9YX0RJU1BMQVlfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L3gxMS93aW5kb3dfbGlzdF91dGlscy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS93aW5kb3dfbGlzdF91dGls
cy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUwNzBkODg3ODI0YzBhZjY1YTlm
NjU3OTE3ZWU5Mjg2Y2JhY2E1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvd2luZG93X2xpc3RfdXRpbHMuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSwyNDYgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJt
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvd2luZG93X2xpc3RfdXRpbHMuaCIKLQotI2luY2x1
ZGUgPFgxMS9YYXRvbS5oPgotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0jaW5jbHVkZSA8WDExL1h1
dGlsLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLSNp
bmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9lcnJvcl90cmFwLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIHdlYnJ0
YyB7Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIERlZmVyWEZyZWUgewotIHB1YmxpYzoKLSAgZXhw
bGljaXQgRGVmZXJYRnJlZSh2b2lkKiBkYXRhKSA6IGRhdGFfKGRhdGEpIHt9Ci0gIH5EZWZlclhG
cmVlKCk7Ci0KLSBwcml2YXRlOgotICB2b2lkKiBjb25zdCBkYXRhXzsKLX07Ci0KLURlZmVyWEZy
ZWU6On5EZWZlclhGcmVlKCkgewotICBpZiAoZGF0YV8pCi0gICAgWEZyZWUoZGF0YV8pOwotfQot
Ci0vLyBDb252ZW5pZW5jZSB3cmFwcGVyIGZvciBYR2V0V2luZG93UHJvcGVydHkoKSByZXN1bHRz
LgotdGVtcGxhdGUgPGNsYXNzIFByb3BlcnR5VHlwZT4KLWNsYXNzIFhXaW5kb3dQcm9wZXJ0eSB7
Ci0gcHVibGljOgotICBYV2luZG93UHJvcGVydHkoRGlzcGxheSogZGlzcGxheSwgV2luZG93IHdp
bmRvdywgQXRvbSBwcm9wZXJ0eSkgewotICAgIGNvbnN0IGludCBrQml0c1BlckJ5dGUgPSA4Owot
ICAgIEF0b20gYWN0dWFsX3R5cGU7Ci0gICAgaW50IGFjdHVhbF9mb3JtYXQ7Ci0gICAgdW5zaWdu
ZWQgbG9uZyBieXRlc19hZnRlcjsgIC8vIE5PTElOVDogdHlwZSByZXF1aXJlZCBieSBYR2V0V2lu
ZG93UHJvcGVydHkKLSAgICBpbnQgc3RhdHVzID0gWEdldFdpbmRvd1Byb3BlcnR5KAotICAgICAg
ICBkaXNwbGF5LCB3aW5kb3csIHByb3BlcnR5LCAwTCwgfjBMLCBGYWxzZSwgQW55UHJvcGVydHlU
eXBlLAotICAgICAgICAmYWN0dWFsX3R5cGUsICZhY3R1YWxfZm9ybWF0LCAmc2l6ZV8sICZieXRl
c19hZnRlciwgJmRhdGFfKTsKLSAgICBpZiAoc3RhdHVzICE9IFN1Y2Nlc3MpIHsKLSAgICAgIGRh
dGFfID0gbnVsbHB0cjsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHNpemVvZihQcm9w
ZXJ0eVR5cGUpICoga0JpdHNQZXJCeXRlICE9IGFjdHVhbF9mb3JtYXQpIHsKLSAgICAgIHNpemVf
ID0gMDsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpc192YWxpZF8gPSB0cnVlOwotICB9
Ci0KLSAgflhXaW5kb3dQcm9wZXJ0eSgpIHsKLSAgICBpZiAoZGF0YV8pCi0gICAgICBYRnJlZShk
YXRhXyk7Ci0gIH0KLQotICAvLyBUcnVlIGlmIHdlIGdvdCBwcm9wZXJseSB2YWx1ZSBzdWNjZXNz
ZnVsbHkuCi0gIGJvb2wgaXNfdmFsaWQoKSBjb25zdCB7IHJldHVybiBpc192YWxpZF87IH0KLQot
ICAvLyBTaXplIGFuZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuCi0gIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gc2l6ZV87IH0KLSAgY29uc3QgUHJvcGVydHlUeXBlKiBkYXRhKCkgY29uc3Qg
ewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFByb3BlcnR5VHlwZSo+KGRhdGFfKTsKLSAg
fQotICBQcm9wZXJ0eVR5cGUqIGRhdGEoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFByb3Bl
cnR5VHlwZSo+KGRhdGFfKTsgfQotCi0gcHJpdmF0ZToKLSAgYm9vbCBpc192YWxpZF8gPSBmYWxz
ZTsKLSAgdW5zaWduZWQgbG9uZyBzaXplXyA9IDA7ICAvLyBOT0xJTlQ6IHR5cGUgcmVxdWlyZWQg
YnkgWEdldFdpbmRvd1Byb3BlcnR5Ci0gIHVuc2lnbmVkIGNoYXIqIGRhdGFfID0gbnVsbHB0cjsK
LQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFhXaW5kb3dQcm9wZXJ0eSk7Ci19Owot
Ci0vLyBJdGVyYXRlcyB0aHJvdWdoIHx3aW5kb3d8IGhpZXJhcmNoeSB0byBmaW5kIGZpcnN0IHZp
c2libGUgd2luZG93LCBpLmUuIG9uZQotLy8gdGhhdCBoYXMgV01fU1RBVEUgcHJvcGVydHkgc2V0
IHRvIE5vcm1hbFN0YXRlLgotLy8gU2VlIGh0dHA6Ly90cm9uY2hlLmNvbS9ndWkveC9pY2NjbS9z
ZWMtNC5odG1sI3MtNC4xLjMuMSAuCi06OldpbmRvdyBHZXRBcHBsaWNhdGlvbldpbmRvdyhYQXRv
bUNhY2hlKiBjYWNoZSwgOjpXaW5kb3cgd2luZG93KSB7Ci0gIGludDMyX3Qgc3RhdGUgPSBHZXRX
aW5kb3dTdGF0ZShjYWNoZSwgd2luZG93KTsKLSAgaWYgKHN0YXRlID09IE5vcm1hbFN0YXRlKSB7
Ci0gICAgLy8gV2luZG93IGhhcyBXTV9TVEFURT09Tm9ybWFsU3RhdGUuIFJldHVybiBpdC4KLSAg
ICByZXR1cm4gd2luZG93OwotICB9IGVsc2UgaWYgKHN0YXRlID09IEljb25pY1N0YXRlKSB7Ci0g
ICAgLy8gV2luZG93IGlzIGluIG1pbmltaXplZC4gU2tpcCBpdC4KLSAgICByZXR1cm4gMDsKLSAg
fQotCi0gIFJUQ19EQ0hFQ0tfRVEoc3RhdGUsIFdpdGhkcmF3blN0YXRlKTsKLSAgLy8gSWYgdGhl
IHdpbmRvdyBpcyBpbiBXaXRoZHJhd25TdGF0ZSB0aGVuIGxvb2sgYXQgYWxsIG9mIGl0cyBjaGls
ZHJlbi4KLSAgOjpXaW5kb3cgcm9vdCwgcGFyZW50OwotICA6OldpbmRvdyogY2hpbGRyZW47Ci0g
IHVuc2lnbmVkIGludCBudW1fY2hpbGRyZW47Ci0gIGlmICghWFF1ZXJ5VHJlZShjYWNoZS0+ZGlz
cGxheSgpLCB3aW5kb3csICZyb290LCAmcGFyZW50LCAmY2hpbGRyZW4sCi0gICAgICAgICAgICAg
ICAgICAmbnVtX2NoaWxkcmVuKSkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQg
dG8gcXVlcnkgZm9yIGNoaWxkIHdpbmRvd3MgYWx0aG91Z2ggd2luZG93IgotICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJkb2VzIG5vdCBoYXZlIGEgdmFsaWQgV01fU1RBVEUuIjsKLSAgICByZXR1
cm4gMDsKLSAgfQotICA6OldpbmRvdyBhcHBfd2luZG93ID0gMDsKLSAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBudW1fY2hpbGRyZW47ICsraSkgewotICAgIGFwcF93aW5kb3cgPSBHZXRB
cHBsaWNhdGlvbldpbmRvdyhjYWNoZSwgY2hpbGRyZW5baV0pOwotICAgIGlmIChhcHBfd2luZG93
KQotICAgICAgYnJlYWs7Ci0gIH0KLQotICBpZiAoY2hpbGRyZW4pCi0gICAgWEZyZWUoY2hpbGRy
ZW4pOwotICByZXR1cm4gYXBwX3dpbmRvdzsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB8
d2luZG93fCBpcyBhIGRlc2t0b3AgZWxlbWVudC4KLWJvb2wgSXNEZXNrdG9wRWxlbWVudChYQXRv
bUNhY2hlKiBjYWNoZSwgOjpXaW5kb3cgd2luZG93KSB7Ci0gIFJUQ19EQ0hFQ0soY2FjaGUpOwot
ICBpZiAod2luZG93ID09IDApCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIC8vIEZpcnN0IGxvb2sg
Zm9yIF9ORVRfV01fV0lORE9XX1RZUEUuIFRoZSBzdGFuZGFyZAotICAvLyAoaHR0cDovL3N0YW5k
YXJkcy5mcmVlZGVza3RvcC5vcmcvd20tc3BlYy9sYXRlc3QvYXIwMXMwNS5odG1sI2lkMjc2MDMw
NikKLSAgLy8gc2F5cyB0aGlzIGhpbnQgKnNob3VsZCogYmUgcHJlc2VudCBvbiBhbGwgd2luZG93
cywgYW5kIHdlIHVzZSB0aGUgZXhpc3RlbmNlCi0gIC8vIG9mIF9ORVRfV01fV0lORE9XX1RZUEVf
Tk9STUFMIGluIHRoZSBwcm9wZXJ0eSB0byBpbmRpY2F0ZSBhIHdpbmRvdyBpcyBub3QKLSAgLy8g
YSBkZXNrdG9wIGVsZW1lbnQgKHRoYXQgaXMsIG9ubHkgIm5vcm1hbCIgd2luZG93cyBzaG91bGQg
YmUgc2hhcmVhYmxlKS4KLSAgWFdpbmRvd1Byb3BlcnR5PHVpbnQzMl90PiB3aW5kb3dfdHlwZShj
YWNoZS0+ZGlzcGxheSgpLCB3aW5kb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FjaGUtPldpbmRvd1R5cGUoKSk7Ci0gIGlmICh3aW5kb3dfdHlwZS5pc192YWxp
ZCgpICYmIHdpbmRvd190eXBlLnNpemUoKSA+IDApIHsKLSAgICB1aW50MzJfdCogZW5kID0gd2lu
ZG93X3R5cGUuZGF0YSgpICsgd2luZG93X3R5cGUuc2l6ZSgpOwotICAgIGJvb2wgaXNfbm9ybWFs
ID0KLSAgICAgICAgKGVuZCAhPSBzdGQ6OmZpbmQod2luZG93X3R5cGUuZGF0YSgpLCBlbmQsIGNh
Y2hlLT5XaW5kb3dUeXBlTm9ybWFsKCkpKTsKLSAgICByZXR1cm4gIWlzX25vcm1hbDsKLSAgfQot
Ci0gIC8vIEZhbGwgYmFjayBvbiB1c2luZyB0aGUgaGludC4KLSAgWENsYXNzSGludCBjbGFzc19o
aW50OwotICBTdGF0dXMgc3RhdHVzID0gWEdldENsYXNzSGludChjYWNoZS0+ZGlzcGxheSgpLCB3
aW5kb3csICZjbGFzc19oaW50KTsKLSAgaWYgKHN0YXR1cyA9PSAwKSB7Ci0gICAgLy8gTm8gaGlu
dHMsIGFzc3VtZSB0aGlzIGlzIGEgbm9ybWFsIGFwcGxpY2F0aW9uIHdpbmRvdy4KLSAgICByZXR1
cm4gZmFsc2U7Ci0gIH0KLQotICBEZWZlclhGcmVlIGZyZWVfcmVzX25hbWUoY2xhc3NfaGludC5y
ZXNfbmFtZSk7Ci0gIERlZmVyWEZyZWUgZnJlZV9yZXNfY2xhc3MoY2xhc3NfaGludC5yZXNfY2xh
c3MpOwotICByZXR1cm4gc3RyY21wKCJnbm9tZS1wYW5lbCIsIGNsYXNzX2hpbnQucmVzX25hbWUp
ID09IDAgfHwKLSAgICAgICAgIHN0cmNtcCgiZGVza3RvcF93aW5kb3ciLCBjbGFzc19oaW50LnJl
c19uYW1lKSA9PSAwOwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotaW50MzJfdCBHZXRXaW5kb3dT
dGF0ZShYQXRvbUNhY2hlKiBjYWNoZSwgOjpXaW5kb3cgd2luZG93KSB7Ci0gIC8vIEdldCBXTV9T
VEFURSBwcm9wZXJ0eSBvZiB0aGUgd2luZG93LgotICBYV2luZG93UHJvcGVydHk8dWludDMyX3Q+
IHdpbmRvd19zdGF0ZShjYWNoZS0+ZGlzcGxheSgpLCB3aW5kb3csCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLT5XbVN0YXRlKCkpOwotCi0gIC8vIFdNX1NU
QVRFIGlzIGNvbnNpZGVyZWQgdG8gYmUgc2V0IHRvIFdpdGhkcmF3blN0YXRlIHdoZW4gaXQgbWlz
c2luZy4KLSAgcmV0dXJuIHdpbmRvd19zdGF0ZS5pc192YWxpZCgpID8gKndpbmRvd19zdGF0ZS5k
YXRhKCkgOiBXaXRoZHJhd25TdGF0ZTsKLX0KLQotYm9vbCBHZXRXaW5kb3dMaXN0KFhBdG9tQ2Fj
aGUqIGNhY2hlLAotICAgICAgICAgICAgICAgICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PGJvb2woOjpX
aW5kb3cpPiBvbl93aW5kb3cpIHsKLSAgUlRDX0RDSEVDSyhjYWNoZSk7Ci0gIFJUQ19EQ0hFQ0so
b25fd2luZG93KTsKLSAgOjpEaXNwbGF5KiBjb25zdCBkaXNwbGF5ID0gY2FjaGUtPmRpc3BsYXko
KTsKLQotICBpbnQgZmFpbGVkX3NjcmVlbnMgPSAwOwotICBjb25zdCBpbnQgbnVtX3NjcmVlbnMg
PSBYU2NyZWVuQ291bnQoZGlzcGxheSk7Ci0gIGZvciAoaW50IHNjcmVlbiA9IDA7IHNjcmVlbiA8
IG51bV9zY3JlZW5zOyBzY3JlZW4rKykgewotICAgIDo6V2luZG93IHJvb3Rfd2luZG93ID0gWFJv
b3RXaW5kb3coZGlzcGxheSwgc2NyZWVuKTsKLSAgICA6OldpbmRvdyBwYXJlbnQ7Ci0gICAgOjpX
aW5kb3cqIGNoaWxkcmVuOwotICAgIHVuc2lnbmVkIGludCBudW1fY2hpbGRyZW47Ci0gICAgewot
ICAgICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXkpOwotICAgICAgaWYgKFhRdWVyeVRy
ZWUoZGlzcGxheSwgcm9vdF93aW5kb3csICZyb290X3dpbmRvdywgJnBhcmVudCwgJmNoaWxkcmVu
LAotICAgICAgICAgICAgICAgICAgICAgJm51bV9jaGlsZHJlbikgPT0gMCB8fAotICAgICAgICAg
IGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApIHsKLSAgICAgICAgZmFp
bGVkX3NjcmVlbnMrKzsKLSAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBx
dWVyeSBmb3IgY2hpbGQgd2luZG93cyBmb3Igc2NyZWVuICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgc2NyZWVuOwotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICB9Ci0KLSAg
ICBEZWZlclhGcmVlIGZyZWVfY2hpbGRyZW4oY2hpbGRyZW4pOwotCi0gICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBudW1fY2hpbGRyZW47IGkrKykgewotICAgICAgLy8gSXRlcmF0ZXMg
aW4gcmV2ZXJzZSBvcmRlciB0byByZXR1cm4gd2luZG93cyBmcm9tIGZyb250IHRvIGJhY2suCi0g
ICAgICA6OldpbmRvdyBhcHBfd2luZG93ID0KLSAgICAgICAgICBHZXRBcHBsaWNhdGlvbldpbmRv
dyhjYWNoZSwgY2hpbGRyZW5bbnVtX2NoaWxkcmVuIC0gMSAtIGldKTsKLSAgICAgIGlmIChhcHBf
d2luZG93ICYmICFJc0Rlc2t0b3BFbGVtZW50KGNhY2hlLCBhcHBfd2luZG93KSkgewotICAgICAg
ICBpZiAoIW9uX3dpbmRvdyhhcHBfd2luZG93KSkgewotICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIGZhaWxlZF9zY3JlZW5z
IDwgbnVtX3NjcmVlbnM7Ci19Ci0KLWJvb2wgR2V0V2luZG93UmVjdCg6OkRpc3BsYXkqIGRpc3Bs
YXksCi0gICAgICAgICAgICAgICAgICAgOjpXaW5kb3cgd2luZG93LAotICAgICAgICAgICAgICAg
ICAgIERlc2t0b3BSZWN0KiByZWN0LAotICAgICAgICAgICAgICAgICAgIFhXaW5kb3dBdHRyaWJ1
dGVzKiBhdHRyaWJ1dGVzIC8qID0gbnVsbHB0ciAqLykgewotICBYV2luZG93QXR0cmlidXRlcyBs
b2NhbF9hdHRyaWJ1dGVzOwotICBpbnQgb2Zmc2V0X3g7Ci0gIGludCBvZmZzZXRfeTsKLSAgaWYg
KGF0dHJpYnV0ZXMgPT0gbnVsbHB0cikgewotICAgIGF0dHJpYnV0ZXMgPSAmbG9jYWxfYXR0cmli
dXRlczsKLSAgfQotCi0gIHsKLSAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheSk7Ci0g
ICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyhkaXNwbGF5LCB3aW5kb3csIGF0dHJpYnV0ZXMp
IHx8Ci0gICAgICAgIGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApIHsK
LSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgKnJlY3QgPSBEZXNrdG9wUmVjdEZy
b21YQXR0cmlidXRlcygqYXR0cmlidXRlcyk7Ci0KLSAgewotICAgIFhFcnJvclRyYXAgZXJyb3Jf
dHJhcChkaXNwbGF5KTsKLSAgICA6OldpbmRvdyBjaGlsZDsKLSAgICBpZiAoIVhUcmFuc2xhdGVD
b29yZGluYXRlcyhkaXNwbGF5LCB3aW5kb3csIGF0dHJpYnV0ZXMtPnJvb3QsIC1yZWN0LT5sZWZ0
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXJlY3QtPnRvcCgpLCAmb2Zmc2V0
X3gsICZvZmZzZXRfeSwgJmNoaWxkKSB8fAotICAgICAgICBlcnJvcl90cmFwLkdldExhc3RFcnJv
ckFuZERpc2FibGUoKSAhPSAwKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0g
IHJlY3QtPlRyYW5zbGF0ZShvZmZzZXRfeCwgb2Zmc2V0X3kpOwotICByZXR1cm4gdHJ1ZTsKLX0K
LQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3dpbmRv
d19saXN0X3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvd2luZG93X2xpc3RfdXRpbHMuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJkMmE3MGQyMTA3ZGRkYTkxOWRiNzhkOTExMzBkZTJk
NDgxM2UyZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS94MTEvd2luZG93X2xpc3RfdXRpbHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICsw
LDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9D
QVBUVVJFX1gxMV9XSU5ET1dfTElTVF9VVElMU19IXwotI2RlZmluZSBNT0RVTEVTX0RFU0tUT1Bf
Q0FQVFVSRV9YMTFfV0lORE9XX0xJU1RfVVRJTFNfSF8KLQotI2luY2x1ZGUgPFgxMS9YbGliLmg+
Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2dlb21ldHJ5Lmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfYXRvbV9jYWNoZS5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL2Z1bmN0aW9uX3ZpZXcuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7
Ci0KLS8vIFN5bmNocm9ub3VzbHkgaXRlcmF0ZXMgYWxsIG9uLXNjcmVlbiB3aW5kb3dzIGluIHxj
YWNoZXwuZGlzcGxheSgpIGluCi0vLyBkZWNyZWFzaW5nIHotb3JkZXIgYW5kIHNlbmRzIHRoZW0g
b25lLWJ5LW9uZSB0byB8b25fd2luZG93fCBmdW5jdGlvbiBiZWZvcmUKLS8vIEdldFdpbmRvd0xp
c3QoKSByZXR1cm5zLiBJZiB8b25fd2luZG93fCByZXR1cm5zIGZhbHNlLCB0aGlzIGZ1bmN0aW9u
IGlnbm9yZXMKLS8vIG90aGVyIHdpbmRvd3MgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkuIEdldFdp
bmRvd0xpc3QoKSByZXR1cm5zIGZhbHNlIGlmCi0vLyBuYXRpdmUgQVBJcyBmYWlsZWQuIElmIG11
bHRpcGxlIHNjcmVlbnMgYXJlIGF0dGFjaGVkIHRvIHRoZSB8ZGlzcGxheXwsIHRoaXMKLS8vIGZ1
bmN0aW9uIHJldHVybnMgZmFsc2Ugb25seSB3aGVuIG5hdGl2ZSBBUElzIGZhaWxlZCBvbiBhbGwg
c2NyZWVucy4gTWVudXMsCi0vLyBwYW5lbHMgYW5kIG1pbmltaXplZCB3aW5kb3dzIHdpbGwgYmUg
aWdub3JlZC4KLWJvb2wgR2V0V2luZG93TGlzdChYQXRvbUNhY2hlKiBjYWNoZSwKLSAgICAgICAg
ICAgICAgICAgICBydGM6OkZ1bmN0aW9uVmlldzxib29sKDo6V2luZG93KT4gb25fd2luZG93KTsK
LQotLy8gUmV0dXJucyBXTV9TVEFURSBwcm9wZXJ0eSBvZiB0aGUgfHdpbmRvd3wuIFRoaXMgZnVu
Y3Rpb24gcmV0dXJucwotLy8gV2l0aGRyYXduU3RhdGUgaWYgdGhlIHx3aW5kb3d8IGlzIG1pc3Np
bmcuCi1pbnQzMl90IEdldFdpbmRvd1N0YXRlKFhBdG9tQ2FjaGUqIGNhY2hlLCA6OldpbmRvdyB3
aW5kb3cpOwotCi0vLyBSZXR1cm5zIHRoZSByZWN0YW5nbGUgb2YgdGhlIHx3aW5kb3d8IGluIHRo
ZSBjb29yZGluYXRlcyBvZiB8ZGlzcGxheXwuIFRoaXMKLS8vIGZ1bmN0aW9uIHJldHVybnMgZmFs
c2UgaWYgbmF0aXZlIEFQSXMgZmFpbGVkLiBJZiB8YXR0cmlidXRlc3wgaXMgcHJvdmlkZWQsIGl0
Ci0vLyB3aWxsIGJlIGZpbGxlZCB3aXRoIHRoZSBhdHRyaWJ1dGVzIG9mIHx3aW5kb3d8LiBUaGUg
fHJlY3R8IGlzIGluIHN5c3RlbQotLy8gY29vcmRpbmF0ZSwgaS5lLiB0aGUgcHJpbWFyeSBtb25p
dG9yIGFsd2F5cyBzdGFydHMgZnJvbSAoMCwgMCkuCi1ib29sIEdldFdpbmRvd1JlY3QoOjpEaXNw
bGF5KiBkaXNwbGF5LAotICAgICAgICAgICAgICAgICAgIDo6V2luZG93IHdpbmRvdywKLSAgICAg
ICAgICAgICAgICAgICBEZXNrdG9wUmVjdCogcmVjdCwKLSAgICAgICAgICAgICAgICAgICBYV2lu
ZG93QXR0cmlidXRlcyogYXR0cmlidXRlcyA9IG51bGxwdHIpOwotCi0vLyBDcmVhdGVzIGEgRGVz
a3RvcFJlY3QgZnJvbSB8YXR0cmlidXRlc3wuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLURlc2t0
b3BSZWN0IERlc2t0b3BSZWN0RnJvbVhBdHRyaWJ1dGVzKGNvbnN0IFQmIGF0dHJpYnV0ZXMpIHsK
LSAgcmV0dXJuIERlc2t0b3BSZWN0OjpNYWtlWFlXSChhdHRyaWJ1dGVzLngsIGF0dHJpYnV0ZXMu
eSwgYXR0cmlidXRlcy53aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGVzLmhlaWdodCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAv
LyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9YMTFfV0lORE9XX0xJU1RfVVRJTFNfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL3gxMS94X2F0b21fY2FjaGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9hdG9t
X2NhY2hlLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTNhMWZkZWJkZGQ1ZDkx
YmI5OWE4N2E4ZDBkYzZiMTZjM2Q1OGE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2F0b21fY2FjaGUuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSw0NyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2F0b21fY2FjaGUuaCIKLQotI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotWEF0b21DYWNoZTo6WEF0
b21DYWNoZSg6OkRpc3BsYXkqIGRpc3BsYXkpIDogZGlzcGxheV8oZGlzcGxheSkgewotICBSVENf
RENIRUNLKGRpc3BsYXlfKTsKLX0KLQotWEF0b21DYWNoZTo6flhBdG9tQ2FjaGUoKSA9IGRlZmF1
bHQ7Ci0KLTo6RGlzcGxheSogWEF0b21DYWNoZTo6ZGlzcGxheSgpIGNvbnN0IHsKLSAgcmV0dXJu
IGRpc3BsYXlfOwotfQotCi1BdG9tIFhBdG9tQ2FjaGU6OldtU3RhdGUoKSB7Ci0gIHJldHVybiBD
cmVhdGVJZk5vdEV4aXN0KCZ3bV9zdGF0ZV8sICJXTV9TVEFURSIpOwotfQotCi1BdG9tIFhBdG9t
Q2FjaGU6OldpbmRvd1R5cGUoKSB7Ci0gIHJldHVybiBDcmVhdGVJZk5vdEV4aXN0KCZ3aW5kb3df
dHlwZV8sICJfTkVUX1dNX1dJTkRPV19UWVBFIik7Ci19Ci0KLUF0b20gWEF0b21DYWNoZTo6V2lu
ZG93VHlwZU5vcm1hbCgpIHsKLSAgcmV0dXJuIENyZWF0ZUlmTm90RXhpc3QoJndpbmRvd190eXBl
X25vcm1hbF8sICJfTkVUX1dNX1dJTkRPV19UWVBFX05PUk1BTCIpOwotfQotCi1BdG9tIFhBdG9t
Q2FjaGU6OkNyZWF0ZUlmTm90RXhpc3QoQXRvbSogYXRvbSwgY29uc3QgY2hhciogbmFtZSkgewot
ICBSVENfRENIRUNLKGF0b20pOwotICBpZiAoKmF0b20gPT0gTm9uZSkgewotICAgICphdG9tID0g
WEludGVybkF0b20oZGlzcGxheSgpLCBuYW1lLCBUcnVlKTsKLSAgfQotICByZXR1cm4gKmF0b207
Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94
X2F0b21fY2FjaGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2F0b21fY2FjaGUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNTI0NmMyYmI1YzlhODZiOGIwZGIxYzY2ZTk1YjZlMjQxNWQ3ZTY4
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS94MTEveF9hdG9tX2NhY2hlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgot
ICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9YMTFf
WF9BVE9NX0NBQ0hFX0hfCi0jZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1gxMV9YX0FU
T01fQ0FDSEVfSF8KLQotI2luY2x1ZGUgPFgxMS9YYXRvbS5oPgotI2luY2x1ZGUgPFgxMS9YbGli
Lmg+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBBIGNhY2hlIG9mIEF0b20uIEVhY2ggQXRv
bSBvYmplY3QgaXMgY3JlYXRlZCBvbiBkZW1hbmQuCi1jbGFzcyBYQXRvbUNhY2hlIGZpbmFsIHsK
LSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFhBdG9tQ2FjaGUoOjpEaXNwbGF5KiBkaXNwbGF5KTsKLSAg
flhBdG9tQ2FjaGUoKTsKLQotICA6OkRpc3BsYXkqIGRpc3BsYXkoKSBjb25zdDsKLQotICBBdG9t
IFdtU3RhdGUoKTsKLSAgQXRvbSBXaW5kb3dUeXBlKCk7Ci0gIEF0b20gV2luZG93VHlwZU5vcm1h
bCgpOwotCi0gcHJpdmF0ZToKLSAgLy8gSWYgfCphdG9tfCBpcyBOb25lLCB0aGlzIGZ1bmN0aW9u
IHVzZXMgWEludGVybkF0b20oKSB0byByZXRyaWV2ZSBhbiBBdG9tLgotICBBdG9tIENyZWF0ZUlm
Tm90RXhpc3QoQXRvbSogYXRvbSwgY29uc3QgY2hhciogbmFtZSk7Ci0KLSAgOjpEaXNwbGF5KiBj
b25zdCBkaXNwbGF5XzsKLSAgQXRvbSB3bV9zdGF0ZV8gPSBOb25lOwotICBBdG9tIHdpbmRvd190
eXBlXyA9IE5vbmU7Ci0gIEF0b20gd2luZG93X3R5cGVfbm9ybWFsXyA9IE5vbmU7Ci19OwotCi19
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRV
UkVfWDExX1hfQVRPTV9DQUNIRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfZXJyb3Jf
dHJhcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2Vycm9yX3RyYXAuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDY1NTljM2RiZTlmNTE2NjU2NGFlOGFiYjYwOGJjMmVlMjc3YjM5ZDcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDEx
L3hfZXJyb3JfdHJhcC5jYworKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiAg
Q29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
LSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hf
ZXJyb3JfdHJhcC5oIgotCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0KLSNpZiBkZWZpbmVkKFRPT0xL
SVRfR1RLKQotI2luY2x1ZGUgPGdkay9nZGsuaD4KLSNlbmRpZiAgLy8gIWRlZmluZWQoVE9PTEtJ
VF9HVEspCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1uYW1lc3BhY2UgewotCi0jaWYgIWRlZmlu
ZWQoVE9PTEtJVF9HVEspCi0KLS8vIFRPRE8oc2VyZ2V5dSk6IFRoaXMgY29kZSBpcyBub3QgdGhy
ZWFkIHNhZmUuIEZpeCBpdC4gQnVnIDIyMDIuCi1zdGF0aWMgYm9vbCBnX3hzZXJ2ZXJfZXJyb3Jf
dHJhcF9lbmFibGVkID0gZmFsc2U7Ci1zdGF0aWMgaW50IGdfbGFzdF94c2VydmVyX2Vycm9yX2Nv
ZGUgPSAwOwotCi1pbnQgWFNlcnZlckVycm9ySGFuZGxlcihEaXNwbGF5KiBkaXNwbGF5LCBYRXJy
b3JFdmVudCogZXJyb3JfZXZlbnQpIHsKLSAgYXNzZXJ0KGdfeHNlcnZlcl9lcnJvcl90cmFwX2Vu
YWJsZWQpOwotICBnX2xhc3RfeHNlcnZlcl9lcnJvcl9jb2RlID0gZXJyb3JfZXZlbnQtPmVycm9y
X2NvZGU7Ci0gIHJldHVybiAwOwotfQotCi0jZW5kaWYgIC8vICFkZWZpbmVkKFRPT0xLSVRfR1RL
KQotCi19ICAvLyBuYW1lc3BhY2UKLQotWEVycm9yVHJhcDo6WEVycm9yVHJhcChEaXNwbGF5KiBk
aXNwbGF5KQotICAgIDogb3JpZ2luYWxfZXJyb3JfaGFuZGxlcl8oTlVMTCksIGVuYWJsZWRfKHRy
dWUpIHsKLSNpZiBkZWZpbmVkKFRPT0xLSVRfR1RLKQotICBnZGtfZXJyb3JfdHJhcF9wdXNoKCk7
Ci0jZWxzZSAgIC8vICFkZWZpbmVkKFRPT0xLSVRfR1RLKQotICBhc3NlcnQoIWdfeHNlcnZlcl9l
cnJvcl90cmFwX2VuYWJsZWQpOwotICBvcmlnaW5hbF9lcnJvcl9oYW5kbGVyXyA9IFhTZXRFcnJv
ckhhbmRsZXIoJlhTZXJ2ZXJFcnJvckhhbmRsZXIpOwotICBnX3hzZXJ2ZXJfZXJyb3JfdHJhcF9l
bmFibGVkID0gdHJ1ZTsKLSAgZ19sYXN0X3hzZXJ2ZXJfZXJyb3JfY29kZSA9IDA7Ci0jZW5kaWYg
IC8vICFkZWZpbmVkKFRPT0xLSVRfR1RLKQotfQotCi1pbnQgWEVycm9yVHJhcDo6R2V0TGFzdEVy
cm9yQW5kRGlzYWJsZSgpIHsKLSAgZW5hYmxlZF8gPSBmYWxzZTsKLSNpZiBkZWZpbmVkKFRPT0xL
SVRfR1RLKQotICByZXR1cm4gZ2RrX2Vycm9yX3RyYXBfcHVzaCgpOwotI2Vsc2UgICAvLyAhZGVm
aW5lZChUT09MS0lUX0dUSykKLSAgYXNzZXJ0KGdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJsZWQp
OwotICBYU2V0RXJyb3JIYW5kbGVyKG9yaWdpbmFsX2Vycm9yX2hhbmRsZXJfKTsKLSAgZ194c2Vy
dmVyX2Vycm9yX3RyYXBfZW5hYmxlZCA9IGZhbHNlOwotICByZXR1cm4gZ19sYXN0X3hzZXJ2ZXJf
ZXJyb3JfY29kZTsKLSNlbmRpZiAgLy8gIWRlZmluZWQoVE9PTEtJVF9HVEspCi19Ci0KLVhFcnJv
clRyYXA6On5YRXJyb3JUcmFwKCkgewotICBpZiAoZW5hYmxlZF8pCi0gICAgR2V0TGFzdEVycm9y
QW5kRGlzYWJsZSgpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS94MTEveF9lcnJvcl90cmFwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9lcnJvcl90cmFwLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhOWViZjY3MGI3ZWExMGZlNzUyOGE2MjA3
YTE0ZjE5YTZmZWM5MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUveDExL3hfZXJyb3JfdHJhcC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19ERVNLVE9Q
X0NBUFRVUkVfWDExX1hfRVJST1JfVFJBUF9IXwotI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQ
VFVSRV9YMTFfWF9FUlJPUl9UUkFQX0hfCi0KLSNpbmNsdWRlIDxYMTEvWGxpYi5oPgotCi0jaW5j
bHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsK
LQotLy8gSGVscGVyIGNsYXNzIHRoYXQgcmVnaXN0ZXJzIFggV2luZG93IGVycm9yIGhhbmRsZXIu
IENhbGxlciBjYW4gdXNlCi0vLyBHZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgdG8gZ2V0IHRoZSBs
YXN0IGVycm9yIHRoYXQgd2FzIGNhdWdodCwgaWYgYW55LgotY2xhc3MgWEVycm9yVHJhcCB7Ci0g
cHVibGljOgotICBleHBsaWNpdCBYRXJyb3JUcmFwKERpc3BsYXkqIGRpc3BsYXkpOwotICB+WEVy
cm9yVHJhcCgpOwotCi0gIC8vIFJldHVybnMgbGFzdCBlcnJvciBhbmQgcmVtb3ZlcyB1bnJlZ2lz
dGVycyB0aGUgZXJyb3IgaGFuZGxlci4KLSAgaW50IEdldExhc3RFcnJvckFuZERpc2FibGUoKTsK
LQotIHByaXZhdGU6Ci0gIFhFcnJvckhhbmRsZXIgb3JpZ2luYWxfZXJyb3JfaGFuZGxlcl87Ci0g
IGJvb2wgZW5hYmxlZF87Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihYRXJyb3JU
cmFwKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBNT0RVTEVT
X0RFU0tUT1BfQ0FQVFVSRV9YMTFfWF9FUlJPUl9UUkFQX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfc2VydmVyX3Bp
eGVsX2J1ZmZlci5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMyN2QzZmM3ZGRl
MmEyMTI4Mzk4N2VhNDg4MjIxM2RkNTE0ZDBjZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmNj
CisrKyAvZGV2L251bGwKQEAgLTEsMzUxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAy
MDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwot
Ci0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfc2VydmVyX3BpeGVsX2J1
ZmZlci5oIgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3lzL3NobS5oPgotCi0j
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oIgotI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS93aW5kb3dfbGlzdF91dGlscy5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2Vycm9yX3RyYXAuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0K
LW5hbWVzcGFjZSB3ZWJydGMgewotCi1uYW1lc3BhY2UgewotCi0vLyBSZXR1cm5zIHRoZSBudW1i
ZXIgb2YgYml0cyB8bWFza3wgaGFzIHRvIGJlIHNoaWZ0ZWQgbGVmdCBzbyBpdHMgbGFzdAotLy8g
KG1vc3Qtc2lnbmlmaWNhbnQpIGJpdCBzZXQgYmVjb21lcyB0aGUgbW9zdC1zaWduaWZpY2FudCBi
aXQgb2YgdGhlIHdvcmQuCi0vLyBXaGVuIHxtYXNrfCBpcyAwIHRoZSBmdW5jdGlvbiByZXR1cm5z
IDMxLgotdWludDMyX3QgTWFza1RvU2hpZnQodWludDMyX3QgbWFzaykgewotICBpbnQgc2hpZnQg
PSAwOwotICBpZiAoKG1hc2sgJiAweGZmZmYwMDAwdSkgPT0gMCkgewotICAgIG1hc2sgPDw9IDE2
OwotICAgIHNoaWZ0ICs9IDE2OwotICB9Ci0gIGlmICgobWFzayAmIDB4ZmYwMDAwMDB1KSA9PSAw
KSB7Ci0gICAgbWFzayA8PD0gODsKLSAgICBzaGlmdCArPSA4OwotICB9Ci0gIGlmICgobWFzayAm
IDB4ZjAwMDAwMDB1KSA9PSAwKSB7Ci0gICAgbWFzayA8PD0gNDsKLSAgICBzaGlmdCArPSA0Owot
ICB9Ci0gIGlmICgobWFzayAmIDB4YzAwMDAwMDB1KSA9PSAwKSB7Ci0gICAgbWFzayA8PD0gMjsK
LSAgICBzaGlmdCArPSAyOwotICB9Ci0gIGlmICgobWFzayAmIDB4ODAwMDAwMDB1KSA9PSAwKQot
ICAgIHNoaWZ0ICs9IDE7Ci0KLSAgcmV0dXJuIHNoaWZ0OwotfQotCi0vLyBSZXR1cm5zIHRydWUg
aWYgfGltYWdlfCBpcyBpbiBSR0IgZm9ybWF0LgotYm9vbCBJc1hJbWFnZVJHQkZvcm1hdChYSW1h
Z2UqIGltYWdlKSB7Ci0gIHJldHVybiBpbWFnZS0+Yml0c19wZXJfcGl4ZWwgPT0gMzIgJiYgaW1h
Z2UtPnJlZF9tYXNrID09IDB4ZmYwMDAwICYmCi0gICAgICAgICBpbWFnZS0+Z3JlZW5fbWFzayA9
PSAweGZmMDAgJiYgaW1hZ2UtPmJsdWVfbWFzayA9PSAweGZmOwotfQotCi0vLyBXZSBleHBvc2Ug
dHdvIGZvcm1zIG9mIGJsaXR0aW5nIHRvIGhhbmRsZSB2YXJpYXRpb25zIGluIHRoZSBwaXhlbCBm
b3JtYXQuCi0vLyBJbiBGYXN0QmxpdCgpLCB0aGUgb3BlcmF0aW9uIGlzIGVmZmVjdGl2ZWx5IGEg
bWVtY3B5Lgotdm9pZCBGYXN0QmxpdChYSW1hZ2UqIHhfaW1hZ2UsCi0gICAgICAgICAgICAgIHVp
bnQ4X3QqIHNyY19wb3MsCi0gICAgICAgICAgICAgIGNvbnN0IERlc2t0b3BSZWN0JiByZWN0LAot
ICAgICAgICAgICAgICBEZXNrdG9wRnJhbWUqIGZyYW1lKSB7Ci0gIGludCBzcmNfc3RyaWRlID0g
eF9pbWFnZS0+Ynl0ZXNfcGVyX2xpbmU7Ci0gIGludCBkc3RfeCA9IHJlY3QubGVmdCgpLCBkc3Rf
eSA9IHJlY3QudG9wKCk7Ci0KLSAgdWludDhfdCogZHN0X3BvcyA9IGZyYW1lLT5kYXRhKCkgKyBm
cmFtZS0+c3RyaWRlKCkgKiBkc3RfeTsKLSAgZHN0X3BvcyArPSBkc3RfeCAqIERlc2t0b3BGcmFt
ZTo6a0J5dGVzUGVyUGl4ZWw7Ci0KLSAgaW50IGhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7Ci0gIGlu
dCByb3dfYnl0ZXMgPSByZWN0LndpZHRoKCkgKiBEZXNrdG9wRnJhbWU6OmtCeXRlc1BlclBpeGVs
OwotICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7Ci0gICAgbWVtY3B5KGRzdF9w
b3MsIHNyY19wb3MsIHJvd19ieXRlcyk7Ci0gICAgc3JjX3BvcyArPSBzcmNfc3RyaWRlOwotICAg
IGRzdF9wb3MgKz0gZnJhbWUtPnN0cmlkZSgpOwotICB9Ci19Ci0KLXZvaWQgU2xvd0JsaXQoWElt
YWdlKiB4X2ltYWdlLAotICAgICAgICAgICAgICB1aW50OF90KiBzcmNfcG9zLAotICAgICAgICAg
ICAgICBjb25zdCBEZXNrdG9wUmVjdCYgcmVjdCwKLSAgICAgICAgICAgICAgRGVza3RvcEZyYW1l
KiBmcmFtZSkgewotICBpbnQgc3JjX3N0cmlkZSA9IHhfaW1hZ2UtPmJ5dGVzX3Blcl9saW5lOwot
ICBpbnQgZHN0X3ggPSByZWN0LmxlZnQoKSwgZHN0X3kgPSByZWN0LnRvcCgpOwotICBpbnQgd2lk
dGggPSByZWN0LndpZHRoKCksIGhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7Ci0KLSAgdWludDMyX3Qg
cmVkX21hc2sgPSB4X2ltYWdlLT5yZWRfbWFzazsKLSAgdWludDMyX3QgZ3JlZW5fbWFzayA9IHhf
aW1hZ2UtPnJlZF9tYXNrOwotICB1aW50MzJfdCBibHVlX21hc2sgPSB4X2ltYWdlLT5ibHVlX21h
c2s7Ci0KLSAgdWludDMyX3QgcmVkX3NoaWZ0ID0gTWFza1RvU2hpZnQocmVkX21hc2spOwotICB1
aW50MzJfdCBncmVlbl9zaGlmdCA9IE1hc2tUb1NoaWZ0KGdyZWVuX21hc2spOwotICB1aW50MzJf
dCBibHVlX3NoaWZ0ID0gTWFza1RvU2hpZnQoYmx1ZV9tYXNrKTsKLQotICBpbnQgYml0c19wZXJf
cGl4ZWwgPSB4X2ltYWdlLT5iaXRzX3Blcl9waXhlbDsKLQotICB1aW50OF90KiBkc3RfcG9zID0g
ZnJhbWUtPmRhdGEoKSArIGZyYW1lLT5zdHJpZGUoKSAqIGRzdF95OwotICBkc3RfcG9zICs9IGRz
dF94ICogRGVza3RvcEZyYW1lOjprQnl0ZXNQZXJQaXhlbDsKLSAgLy8gVE9ETyhoY2xhbSk6IE9w
dGltaXplLCBwZXJoYXBzIHVzaW5nIE1NWCBjb2RlIG9yIGJ5IGNvbnZlcnRpbmcgdG8KLSAgLy8g
WVVWIGRpcmVjdGx5LgotICAvLyBUT0RPKHNlcmdleXUpOiBUaGlzIGNvZGUgZG9lc24ndCBoYW5k
bGUgWEltYWdlIGJ5dGUgb3JkZXIgcHJvcGVybHkgYW5kCi0gIC8vIHdvbid0IHdvcmsgd2l0aCAy
NGJwcCBpbWFnZXMuIEZpeCBpdC4KLSAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykg
ewotICAgIHVpbnQzMl90KiBkc3RfcG9zXzMyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+
KGRzdF9wb3MpOwotICAgIHVpbnQzMl90KiBzcmNfcG9zXzMyID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHNyY19wb3MpOwotICAgIHVpbnQxNl90KiBzcmNfcG9zXzE2ID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MTZfdCo+KHNyY19wb3MpOwotICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lk
dGg7IHgrKykgewotICAgICAgLy8gRGVyZWZlcmVuY2UgdGhyb3VnaCBhbiBhcHByb3ByaWF0ZWx5
LWFsaWduZWQgcG9pbnRlci4KLSAgICAgIHVpbnQzMl90IHBpeGVsOwotICAgICAgaWYgKGJpdHNf
cGVyX3BpeGVsID09IDMyKSB7Ci0gICAgICAgIHBpeGVsID0gc3JjX3Bvc18zMlt4XTsKLSAgICAg
IH0gZWxzZSBpZiAoYml0c19wZXJfcGl4ZWwgPT0gMTYpIHsKLSAgICAgICAgcGl4ZWwgPSBzcmNf
cG9zXzE2W3hdOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcGl4ZWwgPSBzcmNfcG9zW3hdOwot
ICAgICAgfQotICAgICAgdWludDMyX3QgciA9IChwaXhlbCAmIHJlZF9tYXNrKSA8PCByZWRfc2hp
ZnQ7Ci0gICAgICB1aW50MzJfdCBnID0gKHBpeGVsICYgZ3JlZW5fbWFzaykgPDwgZ3JlZW5fc2hp
ZnQ7Ci0gICAgICB1aW50MzJfdCBiID0gKHBpeGVsICYgYmx1ZV9tYXNrKSA8PCBibHVlX3NoaWZ0
OwotICAgICAgLy8gV3JpdGUgYXMgMzItYml0IFJHQi4KLSAgICAgIGRzdF9wb3NfMzJbeF0gPQot
ICAgICAgICAgICgociA+PiA4KSAmIDB4ZmYwMDAwKSB8ICgoZyA+PiAxNikgJiAweGZmMDApIHwg
KChiID4+IDI0KSAmIDB4ZmYpOwotICAgIH0KLSAgICBkc3RfcG9zICs9IGZyYW1lLT5zdHJpZGUo
KTsKLSAgICBzcmNfcG9zICs9IHNyY19zdHJpZGU7Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNl
Ci0KLVhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6WFNlcnZlclBpeGVsQnVmZmVyKCkge30KLQotWFNlcnZl
clBpeGVsQnVmZmVyOjp+WFNlcnZlclBpeGVsQnVmZmVyKCkgewotICBSZWxlYXNlKCk7Ci19Ci0K
LXZvaWQgWFNlcnZlclBpeGVsQnVmZmVyOjpSZWxlYXNlKCkgewotICBpZiAoeF9pbWFnZV8pIHsK
LSAgICBYRGVzdHJveUltYWdlKHhfaW1hZ2VfKTsKLSAgICB4X2ltYWdlXyA9IG51bGxwdHI7Ci0g
IH0KLSAgaWYgKHhfc2htX2ltYWdlXykgewotICAgIFhEZXN0cm95SW1hZ2UoeF9zaG1faW1hZ2Vf
KTsKLSAgICB4X3NobV9pbWFnZV8gPSBudWxscHRyOwotICB9Ci0gIGlmIChzaG1fcGl4bWFwXykg
ewotICAgIFhGcmVlUGl4bWFwKGRpc3BsYXlfLCBzaG1fcGl4bWFwXyk7Ci0gICAgc2htX3BpeG1h
cF8gPSAwOwotICB9Ci0gIGlmIChzaG1fZ2NfKSB7Ci0gICAgWEZyZWVHQyhkaXNwbGF5Xywgc2ht
X2djXyk7Ci0gICAgc2htX2djXyA9IG51bGxwdHI7Ci0gIH0KLQotICBSZWxlYXNlU2hhcmVkTWVt
b3J5U2VnbWVudCgpOwotCi0gIHdpbmRvd18gPSAwOwotfQotCi12b2lkIFhTZXJ2ZXJQaXhlbEJ1
ZmZlcjo6UmVsZWFzZVNoYXJlZE1lbW9yeVNlZ21lbnQoKSB7Ci0gIGlmICghc2htX3NlZ21lbnRf
aW5mb18pCi0gICAgcmV0dXJuOwotICBpZiAoc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIgIT0g
bnVsbHB0cikKLSAgICBzaG1kdChzaG1fc2VnbWVudF9pbmZvXy0+c2htYWRkcik7Ci0gIGlmIChz
aG1fc2VnbWVudF9pbmZvXy0+c2htaWQgIT0gLTEpCi0gICAgc2htY3RsKHNobV9zZWdtZW50X2lu
Zm9fLT5zaG1pZCwgSVBDX1JNSUQsIDApOwotICBkZWxldGUgc2htX3NlZ21lbnRfaW5mb187Ci0g
IHNobV9zZWdtZW50X2luZm9fID0gbnVsbHB0cjsKLX0KLQotYm9vbCBYU2VydmVyUGl4ZWxCdWZm
ZXI6OkluaXQoRGlzcGxheSogZGlzcGxheSwgV2luZG93IHdpbmRvdykgewotICBSZWxlYXNlKCk7
Ci0gIGRpc3BsYXlfID0gZGlzcGxheTsKLQotICBYV2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVz
OwotICBpZiAoIUdldFdpbmRvd1JlY3QoZGlzcGxheV8sIHdpbmRvdywgJndpbmRvd19yZWN0Xywg
JmF0dHJpYnV0ZXMpKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgd2luZG93XyA9IHdp
bmRvdzsKLSAgSW5pdFNobShhdHRyaWJ1dGVzKTsKLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBYU2VydmVyUGl4ZWxCdWZmZXI6OkluaXRTaG0oY29uc3QgWFdpbmRvd0F0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMpIHsKLSAgVmlzdWFsKiBkZWZhdWx0X3Zpc3VhbCA9IGF0dHJpYnV0ZXMudmlzdWFs
OwotICBpbnQgZGVmYXVsdF9kZXB0aCA9IGF0dHJpYnV0ZXMuZGVwdGg7Ci0KLSAgaW50IG1ham9y
LCBtaW5vcjsKLSAgQm9vbCBoYXZlX3BpeG1hcHM7Ci0gIGlmICghWFNobVF1ZXJ5VmVyc2lvbihk
aXNwbGF5XywgJm1ham9yLCAmbWlub3IsICZoYXZlX3BpeG1hcHMpKSB7Ci0gICAgLy8gU2hhcmVk
IG1lbW9yeSBub3Qgc3VwcG9ydGVkLiBDYXB0dXJlUmVjdCB3aWxsIHVzZSB0aGUgWEltYWdlIEFQ
SSBpbnN0ZWFkLgotICAgIHJldHVybjsKLSAgfQotCi0gIGJvb2wgdXNpbmdfc2htID0gZmFsc2U7
Ci0gIHNobV9zZWdtZW50X2luZm9fID0gbmV3IFhTaG1TZWdtZW50SW5mbzsKLSAgc2htX3NlZ21l
bnRfaW5mb18tPnNobWlkID0gLTE7Ci0gIHNobV9zZWdtZW50X2luZm9fLT5zaG1hZGRyID0gbnVs
bHB0cjsKLSAgc2htX3NlZ21lbnRfaW5mb18tPnJlYWRPbmx5ID0gRmFsc2U7Ci0gIHhfc2htX2lt
YWdlXyA9IFhTaG1DcmVhdGVJbWFnZShkaXNwbGF5XywgZGVmYXVsdF92aXN1YWwsIGRlZmF1bHRf
ZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaUGl4bWFwLCAwLCBzaG1f
c2VnbWVudF9pbmZvXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd19y
ZWN0Xy53aWR0aCgpLCB3aW5kb3dfcmVjdF8uaGVpZ2h0KCkpOwotICBpZiAoeF9zaG1faW1hZ2Vf
KSB7Ci0gICAgc2htX3NlZ21lbnRfaW5mb18tPnNobWlkID0KLSAgICAgICAgc2htZ2V0KElQQ19Q
UklWQVRFLCB4X3NobV9pbWFnZV8tPmJ5dGVzX3Blcl9saW5lICogeF9zaG1faW1hZ2VfLT5oZWln
aHQsCi0gICAgICAgICAgICAgICBJUENfQ1JFQVQgfCAwNjAwKTsKLSAgICBpZiAoc2htX3NlZ21l
bnRfaW5mb18tPnNobWlkICE9IC0xKSB7Ci0gICAgICB2b2lkKiBzaG1hdF9yZXN1bHQgPSBzaG1h
dChzaG1fc2VnbWVudF9pbmZvXy0+c2htaWQsIDAsIDApOwotICAgICAgaWYgKHNobWF0X3Jlc3Vs
dCAhPSByZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpIHsKLSAgICAgICAgc2htX3NlZ21lbnRf
aW5mb18tPnNobWFkZHIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihzaG1hdF9yZXN1bHQpOwot
ICAgICAgICB4X3NobV9pbWFnZV8tPmRhdGEgPSBzaG1fc2VnbWVudF9pbmZvXy0+c2htYWRkcjsK
LQotICAgICAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheV8pOwotICAgICAgICB1c2lu
Z19zaG0gPSBYU2htQXR0YWNoKGRpc3BsYXlfLCBzaG1fc2VnbWVudF9pbmZvXyk7Ci0gICAgICAg
IFhTeW5jKGRpc3BsYXlfLCBGYWxzZSk7Ci0gICAgICAgIGlmIChlcnJvcl90cmFwLkdldExhc3RF
cnJvckFuZERpc2FibGUoKSAhPSAwKQotICAgICAgICAgIHVzaW5nX3NobSA9IGZhbHNlOwotICAg
ICAgICBpZiAodXNpbmdfc2htKSB7Ci0gICAgICAgICAgUlRDX0xPRyhMU19WRVJCT1NFKQotICAg
ICAgICAgICAgICA8PCAiVXNpbmcgWCBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgIiA8PCBzaG1fc2Vn
bWVudF9pbmZvXy0+c2htaWQ7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIGdldCBzaGFyZWQgbWVtb3J5IHNl
Z21lbnQuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmZvcm1hbmNlIG1heSBi
ZSBkZWdyYWRlZC4iOwotICAgIH0KLSAgfQotCi0gIGlmICghdXNpbmdfc2htKSB7Ci0gICAgUlRD
X0xPRyhMU19XQVJOSU5HKQotICAgICAgICA8PCAiTm90IHVzaW5nIHNoYXJlZCBtZW1vcnkuIFBl
cmZvcm1hbmNlIG1heSBiZSBkZWdyYWRlZC4iOwotICAgIFJlbGVhc2VTaGFyZWRNZW1vcnlTZWdt
ZW50KCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKGhhdmVfcGl4bWFwcykKLSAgICBoYXZl
X3BpeG1hcHMgPSBJbml0UGl4bWFwcyhkZWZhdWx0X2RlcHRoKTsKLQotICBzaG1jdGwoc2htX3Nl
Z21lbnRfaW5mb18tPnNobWlkLCBJUENfUk1JRCwgMCk7Ci0gIHNobV9zZWdtZW50X2luZm9fLT5z
aG1pZCA9IC0xOwotCi0gIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIlVzaW5nIFggc2hhcmVkIG1l
bW9yeSBleHRlbnNpb24gdiIgPDwgbWFqb3IgPDwgIi4iCi0gICAgICAgICAgICAgICAgICAgICAg
PDwgbWlub3IgPDwgIiB3aXRoIiA8PCAoaGF2ZV9waXhtYXBzID8gIiIgOiAib3V0IikKLSAgICAg
ICAgICAgICAgICAgICAgICA8PCAiIHBpeG1hcHMuIjsKLX0KLQotYm9vbCBYU2VydmVyUGl4ZWxC
dWZmZXI6OkluaXRQaXhtYXBzKGludCBkZXB0aCkgewotICBpZiAoWFNobVBpeG1hcEZvcm1hdChk
aXNwbGF5XykgIT0gWlBpeG1hcCkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgewotICAgIFhFcnJv
clRyYXAgZXJyb3JfdHJhcChkaXNwbGF5Xyk7Ci0gICAgc2htX3BpeG1hcF8gPSBYU2htQ3JlYXRl
UGl4bWFwKAotICAgICAgICBkaXNwbGF5Xywgd2luZG93Xywgc2htX3NlZ21lbnRfaW5mb18tPnNo
bWFkZHIsIHNobV9zZWdtZW50X2luZm9fLAotICAgICAgICB3aW5kb3dfcmVjdF8ud2lkdGgoKSwg
d2luZG93X3JlY3RfLmhlaWdodCgpLCBkZXB0aCk7Ci0gICAgWFN5bmMoZGlzcGxheV8sIEZhbHNl
KTsKLSAgICBpZiAoZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgewot
ICAgICAgLy8gfHNobV9waXhtYXBffCBpcyBub3Qgbm90IHZhbGlkIGJlY2F1c2UgdGhlIHJlcXVl
c3Qgd2FzIG5vdCBwcm9jZXNzZWQKLSAgICAgIC8vIGJ5IHRoZSBYIFNlcnZlciwgc28gemVybyBp
dC4KLSAgICAgIHNobV9waXhtYXBfID0gMDsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
IH0KLQotICB7Ci0gICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXlfKTsKLSAgICBYR0NW
YWx1ZXMgc2htX2djX3ZhbHVlczsKLSAgICBzaG1fZ2NfdmFsdWVzLnN1YndpbmRvd19tb2RlID0g
SW5jbHVkZUluZmVyaW9yczsKLSAgICBzaG1fZ2NfdmFsdWVzLmdyYXBoaWNzX2V4cG9zdXJlcyA9
IEZhbHNlOwotICAgIHNobV9nY18gPSBYQ3JlYXRlR0MoZGlzcGxheV8sIHdpbmRvd18sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBHQ1N1YndpbmRvd01vZGUgfCBHQ0dyYXBoaWNzRXhwb3N1cmVz
LCAmc2htX2djX3ZhbHVlcyk7Ci0gICAgWFN5bmMoZGlzcGxheV8sIEZhbHNlKTsKLSAgICBpZiAo
ZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgewotICAgICAgWEZyZWVQ
aXhtYXAoZGlzcGxheV8sIHNobV9waXhtYXBfKTsKLSAgICAgIHNobV9waXhtYXBfID0gMDsKLSAg
ICAgIHNobV9nY18gPSAwOyAgLy8gU2VlIHNobV9waXhtYXBfIGNvbW1lbnQgYWJvdmUuCi0gICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
WFNlcnZlclBpeGVsQnVmZmVyOjpJc1dpbmRvd1ZhbGlkKCkgY29uc3QgewotICBYV2luZG93QXR0
cmlidXRlcyBhdHRyaWJ1dGVzOwotICB7Ci0gICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3Bs
YXlfKTsKLSAgICBpZiAoIVhHZXRXaW5kb3dBdHRyaWJ1dGVzKGRpc3BsYXlfLCB3aW5kb3dfLCAm
YXR0cmlidXRlcykgfHwKLSAgICAgICAgZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxl
KCkgIT0gMCkgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotICByZXR1cm4gdHJ1
ZTsKLX0KLQotdm9pZCBYU2VydmVyUGl4ZWxCdWZmZXI6OlN5bmNocm9uaXplKCkgewotICBpZiAo
c2htX3NlZ21lbnRfaW5mb18gJiYgIXNobV9waXhtYXBfKSB7Ci0gICAgLy8gWFNobUdldEltYWdl
IGNhbiBmYWlsIGlmIHRoZSBkaXNwbGF5IGlzIGJlaW5nIHJlY29uZmlndXJlZC4KLSAgICBYRXJy
b3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheV8pOwotICAgIC8vIFhTaG1HZXRJbWFnZSBmYWlscyBp
ZiB0aGUgd2luZG93IGlzIHBhcnRpYWxseSBvdXQgb2Ygc2NyZWVuLgotICAgIHhzaG1fZ2V0X2lt
YWdlX3N1Y2NlZWRlZF8gPQotICAgICAgICBYU2htR2V0SW1hZ2UoZGlzcGxheV8sIHdpbmRvd18s
IHhfc2htX2ltYWdlXywgMCwgMCwgQWxsUGxhbmVzKTsKLSAgfQotfQotCi1ib29sIFhTZXJ2ZXJQ
aXhlbEJ1ZmZlcjo6Q2FwdHVyZVJlY3QoY29uc3QgRGVza3RvcFJlY3QmIHJlY3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVza3RvcEZyYW1lKiBmcmFtZSkgewotICBS
VENfRENIRUNLX0xFKHJlY3QucmlnaHQoKSwgd2luZG93X3JlY3RfLndpZHRoKCkpOwotICBSVENf
RENIRUNLX0xFKHJlY3QuYm90dG9tKCksIHdpbmRvd19yZWN0Xy5oZWlnaHQoKSk7Ci0KLSAgWElt
YWdlKiBpbWFnZTsKLSAgdWludDhfdCogZGF0YTsKLQotICBpZiAoc2htX3NlZ21lbnRfaW5mb18g
JiYgKHNobV9waXhtYXBfIHx8IHhzaG1fZ2V0X2ltYWdlX3N1Y2NlZWRlZF8pKSB7Ci0gICAgaWYg
KHNobV9waXhtYXBfKSB7Ci0gICAgICBYQ29weUFyZWEoZGlzcGxheV8sIHdpbmRvd18sIHNobV9w
aXhtYXBfLCBzaG1fZ2NfLCByZWN0LmxlZnQoKSwKLSAgICAgICAgICAgICAgICByZWN0LnRvcCgp
LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIHJlY3QubGVmdCgpLAotICAgICAgICAgICAg
ICAgIHJlY3QudG9wKCkpOwotICAgICAgWFN5bmMoZGlzcGxheV8sIEZhbHNlKTsKLSAgICB9Ci0K
LSAgICBpbWFnZSA9IHhfc2htX2ltYWdlXzsKLSAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oaW1hZ2UtPmRhdGEpICsKLSAgICAgICAgICAgcmVjdC50b3AoKSAqIGltYWdlLT5i
eXRlc19wZXJfbGluZSArCi0gICAgICAgICAgIHJlY3QubGVmdCgpICogaW1hZ2UtPmJpdHNfcGVy
X3BpeGVsIC8gODsKLQotICB9IGVsc2UgewotICAgIGlmICh4X2ltYWdlXykKLSAgICAgIFhEZXN0
cm95SW1hZ2UoeF9pbWFnZV8pOwotICAgIHhfaW1hZ2VfID0gWEdldEltYWdlKGRpc3BsYXlfLCB3
aW5kb3dfLCByZWN0LmxlZnQoKSwgcmVjdC50b3AoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIEFsbFBsYW5lcywgWlBpeG1hcCk7Ci0gICAg
aWYgKCF4X2ltYWdlXykKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGltYWdlID0geF9pbWFn
ZV87Ci0gICAgZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGltYWdlLT5kYXRhKTsK
LSAgfQotCi0gIGlmIChJc1hJbWFnZVJHQkZvcm1hdChpbWFnZSkpIHsKLSAgICBGYXN0QmxpdChp
bWFnZSwgZGF0YSwgcmVjdCwgZnJhbWUpOwotICB9IGVsc2UgewotICAgIFNsb3dCbGl0KGltYWdl
LCBkYXRhLCByZWN0LCBmcmFtZSk7Ci0gIH0KLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfc2VydmVyX3BpeGVs
X2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTIwOTQ1ZjNkNTI5Y2FmZWUwYmUzNjU2MDRhNGZmMzVl
Yjk5ZTQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL3gxMS94X3NlcnZlcl9waXhlbF9idWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDg0
ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0vLyBEb24ndCBpbmNsdWRlIHRoaXMg
ZmlsZSBpbiBhbnkgLmggZmlsZXMgYmVjYXVzZSBpdCBwdWxscyBpbiBzb21lIFggaGVhZGVycy4K
LQotI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9YMTFfWF9TRVJWRVJfUElYRUxfQlVG
RkVSX0hfCi0jZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1gxMV9YX1NFUlZFUl9QSVhF
TF9CVUZGRVJfSF8KLQotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3Bf
Z2VvbWV0cnkuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0KLSNp
bmNsdWRlIDxYMTEvWHV0aWwuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YU2htLmg+Ci0K
LW5hbWVzcGFjZSB3ZWJydGMgewotCi1jbGFzcyBEZXNrdG9wRnJhbWU7Ci0KLS8vIEEgY2xhc3Mg
dG8gYWxsb3cgdGhlIFggc2VydmVyJ3MgcGl4ZWwgYnVmZmVyIHRvIGJlIGFjY2Vzc2VkIGFzIGVm
ZmljaWVudGx5Ci0vLyBhcyBwb3NzaWJsZS4KLWNsYXNzIFhTZXJ2ZXJQaXhlbEJ1ZmZlciB7Ci0g
cHVibGljOgotICBYU2VydmVyUGl4ZWxCdWZmZXIoKTsKLSAgflhTZXJ2ZXJQaXhlbEJ1ZmZlcigp
OwotCi0gIHZvaWQgUmVsZWFzZSgpOwotCi0gIC8vIEFsbG9jYXRlIChvciByZWFsbG9jYXRlKSB0
aGUgcGl4ZWwgYnVmZmVyIGZvciB8d2luZG93fC4gUmV0dXJucyBmYWxzZSBpbgotICAvLyBjYXNl
IG9mIGFuIGVycm9yIChlLmcuIHdpbmRvdyBkb2Vzbid0IGV4aXN0KS4KLSAgYm9vbCBJbml0KERp
c3BsYXkqIGRpc3BsYXksIFdpbmRvdyB3aW5kb3cpOwotCi0gIGJvb2wgaXNfaW5pdGlhbGl6ZWQo
KSB7IHJldHVybiB3aW5kb3dfICE9IDA7IH0KLQotICAvLyBSZXR1cm5zIHRoZSBzaXplIG9mIHRo
ZSB3aW5kb3cgdGhlIGJ1ZmZlciB3YXMgaW5pdGlhbGl6ZWQgZm9yLgotICBEZXNrdG9wU2l6ZSB3
aW5kb3dfc2l6ZSgpIHsgcmV0dXJuIHdpbmRvd19yZWN0Xy5zaXplKCk7IH0KLQotICAvLyBSZXR1
cm5zIHRoZSByZWN0YW5nbGUgb2YgdGhlIHdpbmRvdyB0aGUgYnVmZmVyIHdhcyBpbml0aWFsaXpl
ZCBmb3IuCi0gIGNvbnN0IERlc2t0b3BSZWN0JiB3aW5kb3dfcmVjdCgpIHsgcmV0dXJuIHdpbmRv
d19yZWN0XzsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGNhbiBiZSBmb3Vu
ZC4KLSAgYm9vbCBJc1dpbmRvd1ZhbGlkKCkgY29uc3Q7Ci0KLSAgLy8gSWYgc2hhcmVkIG1lbW9y
eSBpcyBiZWluZyB1c2VkIHdpdGhvdXQgcGl4bWFwcywgc3luY2hyb25pemUgdGhpcyBwaXhlbAot
ICAvLyBidWZmZXIgd2l0aCB0aGUgcm9vdCB3aW5kb3cgY29udGVudHMgKG90aGVyd2lzZSwgdGhp
cyBpcyBhIG5vLW9wKS4KLSAgLy8gVGhpcyBpcyB0byBhdm9pZCBkb2luZyBhIGZ1bGwtc2NyZWVu
IGNhcHR1cmUgZm9yIGVhY2ggaW5kaXZpZHVhbAotICAvLyByZWN0YW5nbGUgaW4gdGhlIGNhcHR1
cmUgbGlzdCwgd2hlbiBpdCBvbmx5IG5lZWRzIHRvIGJlIGRvbmUgb25jZSBhdCB0aGUKLSAgLy8g
YmVnaW5uaW5nLgotICB2b2lkIFN5bmNocm9uaXplKCk7Ci0KLSAgLy8gQ2FwdHVyZSB0aGUgc3Bl
Y2lmaWVkIHJlY3RhbmdsZSBhbmQgc3RvcmVzIGl0IGluIHRoZSB8ZnJhbWV8LiBJbiB0aGUgY2Fz
ZQotICAvLyB3aGVyZSB0aGUgZnVsbC1zY3JlZW4gZGF0YSBpcyBjYXB0dXJlZCBieSBTeW5jaHJv
bml6ZSgpLCB0aGlzIHNpbXBseQotICAvLyByZXR1cm5zIHRoZSBwb2ludGVyIHdpdGhvdXQgZG9p
bmcgYW55IG1vcmUgd29yay4gVGhlIGNhbGxlciBtdXN0IGVuc3VyZQotICAvLyB0aGF0IHxyZWN0
fCBpcyBub3QgbGFyZ2VyIHRoYW4gd2luZG93X3NpemUoKS4KLSAgYm9vbCBDYXB0dXJlUmVjdChj
b25zdCBEZXNrdG9wUmVjdCYgcmVjdCwgRGVza3RvcEZyYW1lKiBmcmFtZSk7Ci0KLSBwcml2YXRl
OgotICB2b2lkIFJlbGVhc2VTaGFyZWRNZW1vcnlTZWdtZW50KCk7Ci0KLSAgdm9pZCBJbml0U2ht
KGNvbnN0IFhXaW5kb3dBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKTsKLSAgYm9vbCBJbml0UGl4bWFw
cyhpbnQgZGVwdGgpOwotCi0gIERpc3BsYXkqIGRpc3BsYXlfID0gbnVsbHB0cjsKLSAgV2luZG93
IHdpbmRvd18gPSAwOwotICBEZXNrdG9wUmVjdCB3aW5kb3dfcmVjdF87Ci0gIFhJbWFnZSogeF9p
bWFnZV8gPSBudWxscHRyOwotICBYU2htU2VnbWVudEluZm8qIHNobV9zZWdtZW50X2luZm9fID0g
bnVsbHB0cjsKLSAgWEltYWdlKiB4X3NobV9pbWFnZV8gPSBudWxscHRyOwotICBQaXhtYXAgc2ht
X3BpeG1hcF8gPSAwOwotICBHQyBzaG1fZ2NfID0gbnVsbHB0cjsKLSAgYm9vbCB4c2htX2dldF9p
bWFnZV9zdWNjZWVkZWRfID0gZmFsc2U7Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihYU2VydmVyUGl4ZWxCdWZmZXIpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0j
ZW5kaWYgIC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1gxMV9YX1NFUlZFUl9QSVhFTF9CVUZG
RVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21t
b25fdHlwZXMuY2MKaW5kZXggNGFkNWQxNDQ0ZTljNTdhNzEyMTViNTk2OTAzN2FmMzcyZDVlMjVh
Ny4uODBlYmEyZTMwNTFjZDJkMWZkZjBhYTUxZjYyZjUwNDhkYTA1ZWEwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9pbmNsdWRl
L21vZHVsZV9jb21tb25fdHlwZXMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuY2MKQEAg
LTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90
eXBlcy5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNs
dWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJz
aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29t
bW9uX3R5cGVzLmgKaW5kZXggOThmZjc2NzMxMTBjZDAzOWVjNmNkMzI1NDdhZTcxOGQ5Y2JkZGE3
Yy4uZTA1OGNjODRlNjZmZjc5NTQ1YWZlMGUwODNiMzExMjQ2YTg5ZjNmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9pbmNsdWRl
L21vZHVsZV9jb21tb25fdHlwZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oCkBAIC0x
OSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlw
ZXNfcHVibGljLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9mZWNfdHlwZXMu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdmlkZW9faGVhZGVyLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKQEAgLTMzLDcgKzM0LDcgQEAgc3RydWN0IFdlYlJ0Y1JUUEhlYWRlciB7CiAgIGlu
dDY0X3QgbnRwX3RpbWVfbXM7CiB9OwogCi1jbGFzcyBSVFBGcmFnbWVudGF0aW9uSGVhZGVyIHsK
K2NsYXNzIFJUQ19FWFBPUlQgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciB7CiAgcHVibGljOgogICBS
VFBGcmFnbWVudGF0aW9uSGVhZGVyKCk7CiAgIFJUUEZyYWdtZW50YXRpb25IZWFkZXIoY29uc3Qg
UlRQRnJhZ21lbnRhdGlvbkhlYWRlciYpID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvQlVJTEQuZ24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2lu
Zy9CVUlMRC5nbgppbmRleCBhMDYyMzNhZDkwMTMxYjQwN2IwMTk2ODRlYWQ4MWZkNzMzMGQwYWE0
Li45YmM2MTkzNmYxNjgyMmI3ZDhlYWIzN2E1MGZhNTViZjhmYTM2NWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9C
VUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3BhY2luZy9CVUlMRC5nbgpAQCAtMjksNyArMjksNiBAQCBydGNfc3RhdGljX2xpYnJh
cnkoInBhY2luZyIpIHsKICAgZGVwcyA9IFsKICAgICAiOmludGVydmFsX2J1ZGdldCIsCiAgICAg
Ii4uOm1vZHVsZV9hcGkiLAotICAgICIuLi8uLi86d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4u
L2FwaS90cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKICAgICAiLi4vLi4vbG9nZ2luZzpydGNf
ZXZlbnRfYndlIiwKICAgICAiLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCkBAIC01
Niw3ICs1NSw2IEBAIHJ0Y19zb3VyY2Vfc2V0KCJpbnRlcnZhbF9idWRnZXQiKSB7CiAgIF0KIAog
ICBkZXBzID0gWwotICAgICIuLi8uLi86d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL3J0Y19i
YXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAg
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9wYWNpbmcvYml0cmF0ZV9wcm9iZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5jYwppbmRl
eCBjYmYxZDJiOTdlZmI5MjcyZWIyNTljYWViMGRjM2NkZTkzMjA1ZmEwLi40ZmY3YzBkNTgzZGQx
ZDcwOGRkOTAwMzRmMTAwOGUwMTNlZDFhYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3BhY2luZy9iaXRyYXRlX3Byb2Jlci5jYwpAQCAtMTMsOSArMTMsOSBAQAogI2luY2x1ZGUgPGFs
Z29yaXRobT4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImxv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCiAjaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkLmgi
CiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKLSNpbmNs
dWRlICJtb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKQEAgLTk2LDggKzk2LDkg
QEAgdm9pZCBCaXRyYXRlUHJvYmVyOjpDcmVhdGVQcm9iZUNsdXN0ZXIoaW50IGJpdHJhdGVfYnBz
LCBpbnQ2NF90IG5vd19tcykgewogICBQcm9iZUNsdXN0ZXIgY2x1c3RlcjsKICAgY2x1c3Rlci50
aW1lX2NyZWF0ZWRfbXMgPSBub3dfbXM7CiAgIGNsdXN0ZXIucGFjZV9pbmZvLnByb2JlX2NsdXN0
ZXJfbWluX3Byb2JlcyA9IGtNaW5Qcm9iZVBhY2tldHNTZW50OwotICBjbHVzdGVyLnBhY2VfaW5m
by5wcm9iZV9jbHVzdGVyX21pbl9ieXRlcyA9Ci0gICAgICBiaXRyYXRlX2JwcyAqIGtNaW5Qcm9i
ZUR1cmF0aW9uTXMgLyA4MDAwOworICBjbHVzdGVyLnBhY2VfaW5mby5wcm9iZV9jbHVzdGVyX21p
bl9ieXRlcyA9IHN0YXRpY19jYXN0PGludDMyX3Q+KAorICAgICAgc3RhdGljX2Nhc3Q8aW50NjRf
dD4oYml0cmF0ZV9icHMpICoga01pblByb2JlRHVyYXRpb25NcyAvIDgwMDApOworICBSVENfRENI
RUNLX0dFKGNsdXN0ZXIucGFjZV9pbmZvLnByb2JlX2NsdXN0ZXJfbWluX2J5dGVzLCAwKTsKICAg
Y2x1c3Rlci5wYWNlX2luZm8uc2VuZF9iaXRyYXRlX2JwcyA9IGJpdHJhdGVfYnBzOwogICBjbHVz
dGVyLnBhY2VfaW5mby5wcm9iZV9jbHVzdGVyX2lkID0gbmV4dF9jbHVzdGVyX2lkXysrOwogICBj
bHVzdGVyc18ucHVzaChjbHVzdGVyKTsKQEAgLTEyNiw5ICsxMjcsOSBAQCBpbnQgQml0cmF0ZVBy
b2Jlcjo6VGltZVVudGlsTmV4dFByb2JlKGludDY0X3Qgbm93X21zKSB7CiAgIGlmIChuZXh0X3By
b2JlX3RpbWVfbXNfID49IDApIHsKICAgICB0aW1lX3VudGlsX3Byb2JlX21zID0gbmV4dF9wcm9i
ZV90aW1lX21zXyAtIG5vd19tczsKICAgICBpZiAodGltZV91bnRpbF9wcm9iZV9tcyA8IC1rTWF4
UHJvYmVEZWxheU1zKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJQcm9iZSBkZWxh
eSB0b28gaGlnaCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAobmV4dF9tczoiIDw8
IG5leHRfcHJvYmVfdGltZV9tc18KLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgbm93
X21zOiAiIDw8IG5vd19tcyA8PCAiKSI7CisgICAgICBSVENfRExPRyhMU19XQVJOSU5HKSA8PCAi
UHJvYmUgZGVsYXkgdG9vIGhpZ2giCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIChu
ZXh0X21zOiIgPDwgbmV4dF9wcm9iZV90aW1lX21zXworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiwgbm93X21zOiAiIDw8IG5vd19tcyA8PCAiKSI7CiAgICAgICByZXR1cm4gLTE7CiAg
ICAgfQogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvYml0cmF0ZV9wcm9iZXIu
aAppbmRleCBiMjU0OGMwMDZkZTgzZjVlNTk3ZDM2NTJkZjQ4ZmViMjBjMjVjNjdjLi5iYjk4MTAw
ZGZhYzVjNmM3NDk2NmNlYzYwNThjNzIzNDc5YWQ1NjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3By
b2Jlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmgKQEAgLTExLDEwICsxMSwxMSBAQAogI2lmbmRl
ZiBNT0RVTEVTX1BBQ0lOR19CSVRSQVRFX1BST0JFUl9IXwogI2RlZmluZSBNT0RVTEVTX1BBQ0lO
R19CSVRSQVRFX1BST0JFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3Rk
aW50Lmg+CiAjaW5jbHVkZSA8cXVldWU+CiAKICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdv
cmtfdHlwZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBl
cy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIFJ0Y0V2ZW50TG9nOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNp
bmcvYml0cmF0ZV9wcm9iZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlcl91bml0dGVzdC5j
YwppbmRleCBkYzU5Njk4MmRiMDIyYjNhOTMzNGExZWNiYjlhMDM4NWJjZjEwMjQ3Li45NWQyNjU5
M2NiZGRiOTFmYzYzMjVmNTJmNDAyNDc5YThmOTAzODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3By
b2Jlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlcl91bml0dGVzdC5jYwpAQCAtMTQ3
LDYgKzE0NywyNCBAQCBURVNUKEJpdHJhdGVQcm9iZXJUZXN0LCBTY2FsZUJ5dGVzVXNlZEZvclBy
b2JpbmcpIHsKICAgRVhQRUNUX0ZBTFNFKHByb2Jlci5Jc1Byb2JpbmcoKSk7CiB9CiAKK1RFU1Qo
Qml0cmF0ZVByb2JlclRlc3QsIEhpZ2hCaXRyYXRlUHJvYmluZykgeworICBCaXRyYXRlUHJvYmVy
IHByb2JlcjsKKyAgY29uc3RleHByIGludCBrQml0cmF0ZUJwcyA9IDEwMDAwMDAwMDA7ICAvLyAx
IEdicHMuCisgIGNvbnN0ZXhwciBpbnQga1BhY2tldFNpemVCeXRlcyA9IDEwMDA7CisgIGNvbnN0
ZXhwciBpbnQga0V4cGVjdGVkQnl0ZXNTZW50ID0gKGtCaXRyYXRlQnBzIC8gODAwMCkgKiAxNTsK
KworICBwcm9iZXIuQ3JlYXRlUHJvYmVDbHVzdGVyKGtCaXRyYXRlQnBzLCAwKTsKKyAgcHJvYmVy
Lk9uSW5jb21pbmdQYWNrZXQoa1BhY2tldFNpemVCeXRlcyk7CisgIGludCBieXRlc19zZW50ID0g
MDsKKyAgd2hpbGUgKGJ5dGVzX3NlbnQgPCBrRXhwZWN0ZWRCeXRlc1NlbnQpIHsKKyAgICBBU1NF
UlRfVFJVRShwcm9iZXIuSXNQcm9iaW5nKCkpOworICAgIHByb2Jlci5Qcm9iZVNlbnQoMCwga1Bh
Y2tldFNpemVCeXRlcyk7CisgICAgYnl0ZXNfc2VudCArPSBrUGFja2V0U2l6ZUJ5dGVzOworICB9
CisKKyAgRVhQRUNUX0ZBTFNFKHByb2Jlci5Jc1Byb2JpbmcoKSk7Cit9CisKIFRFU1QoQml0cmF0
ZVByb2JlclRlc3QsIFByb2JlQ2x1c3RlclRpbWVvdXQpIHsKICAgQml0cmF0ZVByb2JlciBwcm9i
ZXI7CiAgIGNvbnN0ZXhwciBpbnQga0JpdHJhdGVCcHMgPSAzMDAwMDA7ICAvLyAzMDAga2Jwcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9wYWNpbmcvaW50ZXJ2YWxfYnVkZ2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9pbnRlcnZhbF9idWRnZXQuaAppbmRleCA4
ODBmZTc4NGJhNzRmMDdlZTgxMmU5NGRmZWE5Y2FkNWVmM2Q1Y2UzLi5kMDliMDZlMzQwMzRhZTI0
M2Y2YmYxYTEwYzJmZGRjNjQ1Y2ZjMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9pbnRlcnZhbF9idWRnZXQuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Bh
Y2luZy9pbnRlcnZhbF9idWRnZXQuaApAQCAtMTEsNyArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVT
X1BBQ0lOR19JTlRFUlZBTF9CVURHRVRfSF8KICNkZWZpbmUgTU9EVUxFU19QQUNJTkdfSU5URVJW
QUxfQlVER0VUX0hfCiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWls
ZC9pbmNsdWRlKQorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcGFjZWRfc2VuZGVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcGFjZWRf
c2VuZGVyLmNjCmluZGV4IDhjYzQ0MmMyMjhlODQ5ZmRmYmYyZGQ2YjhlYmZiMzNlZmQxNzMwN2Uu
LjdlMGFjNzgxZTJiNzg0Y2I3ZTlhNjhhMTU5OTI2MDk3MWNkYTM1NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3Bh
Y2VkX3NlbmRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuY2MKQEAgLTExLDE1ICsxMSwxMSBAQAog
I2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oIgogCiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxxdWV1ZT4KLSNpbmNsdWRlIDxzZXQ+
CiAjaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2
ZW50X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2df
Y2MvYWxyX2RldGVjdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21t
b25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL2ludGVydmFsX2J1ZGdldC5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3NfdGhyZWFkLmgiCkBAIC01OCw5ICs1NCw5IEBA
IFBhY2VkU2VuZGVyOjpQYWNlZFNlbmRlcihjb25zdCBDbG9jayogY2xvY2ssCiAgICAgICB2aWRl
b19ibG9ja3NfYXVkaW9fKCFmaWVsZF90cmlhbDo6SXNEaXNhYmxlZCgiV2ViUlRDLVBhY2VyLUJs
b2NrQXVkaW8iKSksCiAgICAgICBsYXN0X3RpbWVzdGFtcF9tc18oY2xvY2tfLT5UaW1lSW5NaWxs
aXNlY29uZHMoKSksCiAgICAgICBwYXVzZWRfKGZhbHNlKSwKLSAgICAgIG1lZGlhX2J1ZGdldF8o
YWJzbDo6bWFrZV91bmlxdWU8SW50ZXJ2YWxCdWRnZXQ+KDApKSwKLSAgICAgIHBhZGRpbmdfYnVk
Z2V0XyhhYnNsOjptYWtlX3VuaXF1ZTxJbnRlcnZhbEJ1ZGdldD4oMCkpLAotICAgICAgcHJvYmVy
XyhhYnNsOjptYWtlX3VuaXF1ZTxCaXRyYXRlUHJvYmVyPihldmVudF9sb2cpKSwKKyAgICAgIG1l
ZGlhX2J1ZGdldF8oMCksCisgICAgICBwYWRkaW5nX2J1ZGdldF8oMCksCisgICAgICBwcm9iZXJf
KGV2ZW50X2xvZyksCiAgICAgICBwcm9iaW5nX3NlbmRfZmFpbHVyZV8oZmFsc2UpLAogICAgICAg
ZXN0aW1hdGVkX2JpdHJhdGVfYnBzXygwKSwKICAgICAgIG1pbl9zZW5kX2JpdHJhdGVfa2Jwc18o
MHUpLApAQCAtNjksNyArNjUsNyBAQCBQYWNlZFNlbmRlcjo6UGFjZWRTZW5kZXIoY29uc3QgQ2xv
Y2sqIGNsb2NrLAogICAgICAgdGltZV9sYXN0X3Byb2Nlc3NfdXNfKGNsb2NrLT5UaW1lSW5NaWNy
b3NlY29uZHMoKSksCiAgICAgICBsYXN0X3NlbmRfdGltZV91c18oY2xvY2stPlRpbWVJbk1pY3Jv
c2Vjb25kcygpKSwKICAgICAgIGZpcnN0X3NlbnRfcGFja2V0X21zXygtMSksCi0gICAgICBwYWNr
ZXRzXyhjbG9jayksCisgICAgICBwYWNrZXRzXyhjbG9jay0+VGltZUluTWljcm9zZWNvbmRzKCkp
LAogICAgICAgcGFja2V0X2NvdW50ZXJfKDApLAogICAgICAgcGFjaW5nX2ZhY3Rvcl8oa0RlZmF1
bHRQYWNlTXVsdGlwbGllciksCiAgICAgICBxdWV1ZV90aW1lX2xpbWl0KGtNYXhRdWV1ZUxlbmd0
aE1zKSwKQEAgLTg0LDcgKzgwLDcgQEAgUGFjZWRTZW5kZXI6On5QYWNlZFNlbmRlcigpIHt9CiAK
IHZvaWQgUGFjZWRTZW5kZXI6OkNyZWF0ZVByb2JlQ2x1c3RlcihpbnQgYml0cmF0ZV9icHMpIHsK
ICAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRzZWN0Xyk7Ci0gIHByb2Jlcl8tPkNyZWF0ZVByb2Jl
Q2x1c3RlcihiaXRyYXRlX2JwcywgVGltZU1pbGxpc2Vjb25kcygpKTsKKyAgcHJvYmVyXy5DcmVh
dGVQcm9iZUNsdXN0ZXIoYml0cmF0ZV9icHMsIFRpbWVNaWxsaXNlY29uZHMoKSk7CiB9CiAKIHZv
aWQgUGFjZWRTZW5kZXI6OlBhdXNlKCkgewpAQCAtMTQ5LDcgKzE0NSw3IEBAIGludDY0X3QgUGFj
ZWRTZW5kZXI6OlRpbWVNaWxsaXNlY29uZHMoKSBjb25zdCB7CiB2b2lkIFBhY2VkU2VuZGVyOjpT
ZXRQcm9iaW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJmNy
aXRzZWN0Xyk7CiAgIFJUQ19DSEVDS19FUSgwLCBwYWNrZXRfY291bnRlcl8pOwotICBwcm9iZXJf
LT5TZXRFbmFibGVkKGVuYWJsZWQpOworICBwcm9iZXJfLlNldEVuYWJsZWQoZW5hYmxlZCk7CiB9
CiAKIHZvaWQgUGFjZWRTZW5kZXI6OlNldEVzdGltYXRlZEJpdHJhdGUodWludDMyX3QgYml0cmF0
ZV9icHMpIHsKQEAgLTE1Nyw3ICsxNTMsNyBAQCB2b2lkIFBhY2VkU2VuZGVyOjpTZXRFc3RpbWF0
ZWRCaXRyYXRlKHVpbnQzMl90IGJpdHJhdGVfYnBzKSB7CiAgICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIlBhY2VkU2VuZGVyIGlzIG5vdCBkZXNpZ25lZCB0byBoYW5kbGUgMCBiaXRyYXRlLiI7CiAg
IHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0c2VjdF8pOwogICBlc3RpbWF0ZWRfYml0cmF0ZV9icHNf
ID0gYml0cmF0ZV9icHM7Ci0gIHBhZGRpbmdfYnVkZ2V0Xy0+c2V0X3RhcmdldF9yYXRlX2ticHMo
CisgIHBhZGRpbmdfYnVkZ2V0Xy5zZXRfdGFyZ2V0X3JhdGVfa2JwcygKICAgICAgIHN0ZDo6bWlu
KGVzdGltYXRlZF9iaXRyYXRlX2Jwc18gLyAxMDAwLCBtYXhfcGFkZGluZ19iaXRyYXRlX2ticHNf
KSk7CiAgIHBhY2luZ19iaXRyYXRlX2ticHNfID0KICAgICAgIHN0ZDo6bWF4KG1pbl9zZW5kX2Jp
dHJhdGVfa2Jwc18sIGVzdGltYXRlZF9iaXRyYXRlX2Jwc18gLyAxMDAwKSAqCkBAIC0xNzMsNyAr
MTY5LDcgQEAgdm9pZCBQYWNlZFNlbmRlcjo6U2V0U2VuZEJpdHJhdGVMaW1pdHMoaW50IG1pbl9z
ZW5kX2JpdHJhdGVfYnBzLAogICAgICAgc3RkOjptYXgobWluX3NlbmRfYml0cmF0ZV9rYnBzXywg
ZXN0aW1hdGVkX2JpdHJhdGVfYnBzXyAvIDEwMDApICoKICAgICAgIHBhY2luZ19mYWN0b3JfOwog
ICBtYXhfcGFkZGluZ19iaXRyYXRlX2ticHNfID0gcGFkZGluZ19iaXRyYXRlIC8gMTAwMDsKLSAg
cGFkZGluZ19idWRnZXRfLT5zZXRfdGFyZ2V0X3JhdGVfa2JwcygKKyAgcGFkZGluZ19idWRnZXRf
LnNldF90YXJnZXRfcmF0ZV9rYnBzKAogICAgICAgc3RkOjptaW4oZXN0aW1hdGVkX2JpdHJhdGVf
YnBzXyAvIDEwMDAsIG1heF9wYWRkaW5nX2JpdHJhdGVfa2Jwc18pKTsKIH0KIApAQCAtMTgyLDcg
KzE3OCw3IEBAIHZvaWQgUGFjZWRTZW5kZXI6OlNldFBhY2luZ1JhdGVzKHVpbnQzMl90IHBhY2lu
Z19yYXRlX2JwcywKICAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRzZWN0Xyk7CiAgIFJUQ19EQ0hF
Q0socGFjaW5nX3JhdGVfYnBzID4gMCk7CiAgIHBhY2luZ19iaXRyYXRlX2ticHNfID0gcGFjaW5n
X3JhdGVfYnBzIC8gMTAwMDsKLSAgcGFkZGluZ19idWRnZXRfLT5zZXRfdGFyZ2V0X3JhdGVfa2Jw
cyhwYWRkaW5nX3JhdGVfYnBzIC8gMTAwMCk7CisgIHBhZGRpbmdfYnVkZ2V0Xy5zZXRfdGFyZ2V0
X3JhdGVfa2JwcyhwYWRkaW5nX3JhdGVfYnBzIC8gMTAwMCk7CiB9CiAKIHZvaWQgUGFjZWRTZW5k
ZXI6Okluc2VydFBhY2tldChSdHBQYWNrZXRTZW5kZXI6OlByaW9yaXR5IHByaW9yaXR5LApAQCAt
MTk2LDcgKzE5Miw3IEBAIHZvaWQgUGFjZWRTZW5kZXI6Okluc2VydFBhY2tldChSdHBQYWNrZXRT
ZW5kZXI6OlByaW9yaXR5IHByaW9yaXR5LAogICAgICAgPDwgIlNldFBhY2luZ1JhdGUgbXVzdCBi
ZSBjYWxsZWQgYmVmb3JlIEluc2VydFBhY2tldC4iOwogCiAgIGludDY0X3Qgbm93X21zID0gVGlt
ZU1pbGxpc2Vjb25kcygpOwotICBwcm9iZXJfLT5PbkluY29taW5nUGFja2V0KGJ5dGVzKTsKKyAg
cHJvYmVyXy5PbkluY29taW5nUGFja2V0KGJ5dGVzKTsKIAogICBpZiAoY2FwdHVyZV90aW1lX21z
IDwgMCkKICAgICBjYXB0dXJlX3RpbWVfbXMgPSBub3dfbXM7CkBAIC0yNTQsMTcgKzI1MCwxNSBA
QCBpbnQ2NF90IFBhY2VkU2VuZGVyOjpUaW1lVW50aWxOZXh0UHJvY2VzcygpIHsKICAgaWYgKHBh
dXNlZF8pCiAgICAgcmV0dXJuIHN0ZDo6bWF4PGludDY0X3Q+KGtQYXVzZWRQcm9jZXNzSW50ZXJ2
YWxNcyAtIGVsYXBzZWRfdGltZV9tcywgMCk7CiAKLSAgaWYgKHByb2Jlcl8tPklzUHJvYmluZygp
KSB7Ci0gICAgaW50NjRfdCByZXQgPSBwcm9iZXJfLT5UaW1lVW50aWxOZXh0UHJvYmUoVGltZU1p
bGxpc2Vjb25kcygpKTsKKyAgaWYgKHByb2Jlcl8uSXNQcm9iaW5nKCkpIHsKKyAgICBpbnQ2NF90
IHJldCA9IHByb2Jlcl8uVGltZVVudGlsTmV4dFByb2JlKFRpbWVNaWxsaXNlY29uZHMoKSk7CiAg
ICAgaWYgKHJldCA+IDAgfHwgKHJldCA9PSAwICYmICFwcm9iaW5nX3NlbmRfZmFpbHVyZV8pKQog
ICAgICAgcmV0dXJuIHJldDsKICAgfQogICByZXR1cm4gc3RkOjptYXg8aW50NjRfdD4oa01pblBh
Y2tldExpbWl0TXMgLSBlbGFwc2VkX3RpbWVfbXMsIDApOwogfQogCi12b2lkIFBhY2VkU2VuZGVy
OjpQcm9jZXNzKCkgewotICBpbnQ2NF90IG5vd191cyA9IGNsb2NrXy0+VGltZUluTWljcm9zZWNv
bmRzKCk7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0c2VjdF8pOworaW50NjRfdCBQYWNlZFNl
bmRlcjo6VXBkYXRlVGltZUFuZEdldEVsYXBzZWRNcyhpbnQ2NF90IG5vd191cykgewogICBpbnQ2
NF90IGVsYXBzZWRfdGltZV9tcyA9IChub3dfdXMgLSB0aW1lX2xhc3RfcHJvY2Vzc191c18gKyA1
MDApIC8gMTAwMDsKICAgdGltZV9sYXN0X3Byb2Nlc3NfdXNfID0gbm93X3VzOwogICBpZiAoZWxh
cHNlZF90aW1lX21zID4ga01heEVsYXBzZWRUaW1lTXMpIHsKQEAgLTI3Myw2ICsyNjcsMTAgQEAg
dm9pZCBQYWNlZFNlbmRlcjo6UHJvY2VzcygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIDw8
IGtNYXhFbGFwc2VkVGltZU1zIDw8ICIgbXMiOwogICAgIGVsYXBzZWRfdGltZV9tcyA9IGtNYXhF
bGFwc2VkVGltZU1zOwogICB9CisgIHJldHVybiBlbGFwc2VkX3RpbWVfbXM7Cit9CisKK2Jvb2wg
UGFjZWRTZW5kZXI6OlNob3VsZFNlbmRLZWVwYWxpdmUoaW50NjRfdCBub3dfdXMpIGNvbnN0IHsK
ICAgaWYgKHNlbmRfcGFkZGluZ19pZl9zaWxlbnRfIHx8IHBhdXNlZF8gfHwgQ29uZ2VzdGVkKCkp
IHsKICAgICAvLyBXZSBzZW5kIGEgcGFkZGluZyBwYWNrZXQgZXZlcnkgNTAwIG1zIHRvIGVuc3Vy
ZSB3ZSB3b24ndCBnZXQgc3R1Y2sgaW4KICAgICAvLyBjb25nZXN0ZWQgc3RhdGUgZHVlIHRvIG5v
IGZlZWRiYWNrIGJlaW5nIHJlY2VpdmVkLgpAQCAtMjgxLDEyICsyNzksMjUgQEAgdm9pZCBQYWNl
ZFNlbmRlcjo6UHJvY2VzcygpIHsKICAgICAgIC8vIFdlIGNhbiBub3Qgc2VuZCBwYWRkaW5nIHVu
bGVzcyBhIG5vcm1hbCBwYWNrZXQgaGFzIGZpcnN0IGJlZW4gc2VudC4gSWYKICAgICAgIC8vIHdl
IGRvLCB0aW1lc3RhbXBzIGdldCBtZXNzZWQgdXAuCiAgICAgICBpZiAocGFja2V0X2NvdW50ZXJf
ID4gMCkgewotICAgICAgICBQYWNlZFBhY2tldEluZm8gcGFjaW5nX2luZm87Ci0gICAgICAgIHNp
emVfdCBieXRlc19zZW50ID0gU2VuZFBhZGRpbmcoMSwgcGFjaW5nX2luZm8pOwotICAgICAgICBh
bHJfZGV0ZWN0b3JfLT5PbkJ5dGVzU2VudChieXRlc19zZW50LCBub3dfdXMgLyAxMDAwKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICB9CiAgICAgfQogICB9CisgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBQYWNlZFNlbmRlcjo6UHJvY2VzcygpIHsKKyAgcnRjOjpDcml0U2NvcGUgY3Mo
JmNyaXRzZWN0Xyk7CisgIGludDY0X3Qgbm93X3VzID0gY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29u
ZHMoKTsKKyAgaW50NjRfdCBlbGFwc2VkX3RpbWVfbXMgPSBVcGRhdGVUaW1lQW5kR2V0RWxhcHNl
ZE1zKG5vd191cyk7CisgIGlmIChTaG91bGRTZW5kS2VlcGFsaXZlKG5vd191cykpIHsKKyAgICBj
cml0c2VjdF8uTGVhdmUoKTsKKyAgICBzaXplX3QgYnl0ZXNfc2VudCA9IHBhY2tldF9zZW5kZXJf
LT5UaW1lVG9TZW5kUGFkZGluZygxLCBQYWNlZFBhY2tldEluZm8oKSk7CisgICAgY3JpdHNlY3Rf
LkVudGVyKCk7CisgICAgT25QYWRkaW5nU2VudChieXRlc19zZW50KTsKKyAgICBhbHJfZGV0ZWN0
b3JfLT5PbkJ5dGVzU2VudChieXRlc19zZW50LCBub3dfdXMgLyAxMDAwKTsKKyAgfQorCiAgIGlm
IChwYXVzZWRfKQogICAgIHJldHVybjsKIApAQCAtMzA4LDM1ICszMTksMzkgQEAgdm9pZCBQYWNl
ZFNlbmRlcjo6UHJvY2VzcygpIHsKICAgICAgIH0KICAgICB9CiAKLSAgICBtZWRpYV9idWRnZXRf
LT5zZXRfdGFyZ2V0X3JhdGVfa2Jwcyh0YXJnZXRfYml0cmF0ZV9rYnBzKTsKKyAgICBtZWRpYV9i
dWRnZXRfLnNldF90YXJnZXRfcmF0ZV9rYnBzKHRhcmdldF9iaXRyYXRlX2ticHMpOwogICAgIFVw
ZGF0ZUJ1ZGdldFdpdGhFbGFwc2VkVGltZShlbGFwc2VkX3RpbWVfbXMpOwogICB9CiAKLSAgYm9v
bCBpc19wcm9iaW5nID0gcHJvYmVyXy0+SXNQcm9iaW5nKCk7CisgIGJvb2wgaXNfcHJvYmluZyA9
IHByb2Jlcl8uSXNQcm9iaW5nKCk7CiAgIFBhY2VkUGFja2V0SW5mbyBwYWNpbmdfaW5mbzsKICAg
c2l6ZV90IGJ5dGVzX3NlbnQgPSAwOwogICBzaXplX3QgcmVjb21tZW5kZWRfcHJvYmVfc2l6ZSA9
IDA7CiAgIGlmIChpc19wcm9iaW5nKSB7Ci0gICAgcGFjaW5nX2luZm8gPSBwcm9iZXJfLT5DdXJy
ZW50Q2x1c3RlcigpOwotICAgIHJlY29tbWVuZGVkX3Byb2JlX3NpemUgPSBwcm9iZXJfLT5SZWNv
bW1lbmRlZE1pblByb2JlU2l6ZSgpOworICAgIHBhY2luZ19pbmZvID0gcHJvYmVyXy5DdXJyZW50
Q2x1c3RlcigpOworICAgIHJlY29tbWVuZGVkX3Byb2JlX3NpemUgPSBwcm9iZXJfLlJlY29tbWVu
ZGVkTWluUHJvYmVTaXplKCk7CiAgIH0KLSAgLy8gVGhlIHBhdXNlZCBzdGF0ZSBpcyBjaGVja2Vk
IGluIHRoZSBsb29wIHNpbmNlIFNlbmRQYWNrZXQgbGVhdmVzIHRoZQotICAvLyBjcml0aWNhbCBz
ZWN0aW9uIGFsbG93aW5nIHRoZSBwYXVzZWQgc3RhdGUgdG8gYmUgY2hhbmdlZCBmcm9tIG90aGVy
IGNvZGUuCisgIC8vIFRoZSBwYXVzZWQgc3RhdGUgaXMgY2hlY2tlZCBpbiB0aGUgbG9vcCBzaW5j
ZSBpdCBsZWF2ZXMgdGhlIGNyaXRpY2FsCisgIC8vIHNlY3Rpb24gYWxsb3dpbmcgdGhlIHBhdXNl
ZCBzdGF0ZSB0byBiZSBjaGFuZ2VkIGZyb20gb3RoZXIgY29kZS4KICAgd2hpbGUgKCFwYWNrZXRz
Xy5FbXB0eSgpICYmICFwYXVzZWRfKSB7Ci0gICAgLy8gU2luY2Ugd2UgbmVlZCB0byByZWxlYXNl
IHRoZSBsb2NrIGluIG9yZGVyIHRvIHNlbmQsIHdlIGZpcnN0IHBvcCB0aGUKLSAgICAvLyBlbGVt
ZW50IGZyb20gdGhlIHByaW9yaXR5IHF1ZXVlIGJ1dCBrZWVwIGl0IGluIHN0b3JhZ2UsIHNvIHRo
YXQgd2UgY2FuCi0gICAgLy8gcmVpbnNlcnQgaXQgaWYgc2VuZCBmYWlscy4KLSAgICBjb25zdCBS
b3VuZFJvYmluUGFja2V0UXVldWU6OlBhY2tldCYgcGFja2V0ID0gcGFja2V0c18uQmVnaW5Qb3Ao
KTsKKyAgICBjb25zdCBhdXRvKiBwYWNrZXQgPSBHZXRQZW5kaW5nUGFja2V0KHBhY2luZ19pbmZv
KTsKKyAgICBpZiAocGFja2V0ID09IG51bGxwdHIpCisgICAgICBicmVhazsKIAotICAgIGlmIChT
ZW5kUGFja2V0KHBhY2tldCwgcGFjaW5nX2luZm8pKSB7Ci0gICAgICBieXRlc19zZW50ICs9IHBh
Y2tldC5ieXRlczsKKyAgICBjcml0c2VjdF8uTGVhdmUoKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBw
YWNrZXRfc2VuZGVyXy0+VGltZVRvU2VuZFBhY2tldCgKKyAgICAgICAgcGFja2V0LT5zc3JjLCBw
YWNrZXQtPnNlcXVlbmNlX251bWJlciwgcGFja2V0LT5jYXB0dXJlX3RpbWVfbXMsCisgICAgICAg
IHBhY2tldC0+cmV0cmFuc21pc3Npb24sIHBhY2luZ19pbmZvKTsKKyAgICBjcml0c2VjdF8uRW50
ZXIoKTsKKyAgICBpZiAoc3VjY2VzcykgeworICAgICAgYnl0ZXNfc2VudCArPSBwYWNrZXQtPmJ5
dGVzOwogICAgICAgLy8gU2VuZCBzdWNjZWVkZWQsIHJlbW92ZSBpdCBmcm9tIHRoZSBxdWV1ZS4K
LSAgICAgIHBhY2tldHNfLkZpbmFsaXplUG9wKHBhY2tldCk7CisgICAgICBPblBhY2tldFNlbnQo
c3RkOjptb3ZlKHBhY2tldCkpOwogICAgICAgaWYgKGlzX3Byb2JpbmcgJiYgYnl0ZXNfc2VudCA+
IHJlY29tbWVuZGVkX3Byb2JlX3NpemUpCiAgICAgICAgIGJyZWFrOwogICAgIH0gZWxzZSB7CiAg
ICAgICAvLyBTZW5kIGZhaWxlZCwgcHV0IGl0IGJhY2sgaW50byB0aGUgcXVldWUuCi0gICAgICBw
YWNrZXRzXy5DYW5jZWxQb3AocGFja2V0KTsKKyAgICAgIHBhY2tldHNfLkNhbmNlbFBvcCgqcGFj
a2V0KTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQpAQCAtMzQ3LDE2ICszNjIsMjEgQEAgdm9p
ZCBQYWNlZFNlbmRlcjo6UHJvY2VzcygpIHsKICAgICBpZiAocGFja2V0X2NvdW50ZXJfID4gMCkg
ewogICAgICAgaW50IHBhZGRpbmdfbmVlZGVkID0KICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+
KGlzX3Byb2JpbmcgPyAocmVjb21tZW5kZWRfcHJvYmVfc2l6ZSAtIGJ5dGVzX3NlbnQpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcGFkZGluZ19idWRnZXRfLT5ieXRl
c19yZW1haW5pbmcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
cGFkZGluZ19idWRnZXRfLmJ5dGVzX3JlbWFpbmluZygpKTsKICAgICAgIGlmIChwYWRkaW5nX25l
ZWRlZCA+IDApIHsKLSAgICAgICAgYnl0ZXNfc2VudCArPSBTZW5kUGFkZGluZyhwYWRkaW5nX25l
ZWRlZCwgcGFjaW5nX2luZm8pOworICAgICAgICBjcml0c2VjdF8uTGVhdmUoKTsKKyAgICAgICAg
c2l6ZV90IHBhZGRpbmdfc2VudCA9CisgICAgICAgICAgICBwYWNrZXRfc2VuZGVyXy0+VGltZVRv
U2VuZFBhZGRpbmcocGFkZGluZ19uZWVkZWQsIHBhY2luZ19pbmZvKTsKKyAgICAgICAgY3JpdHNl
Y3RfLkVudGVyKCk7CisgICAgICAgIGJ5dGVzX3NlbnQgKz0gcGFkZGluZ19zZW50OworICAgICAg
ICBPblBhZGRpbmdTZW50KHBhZGRpbmdfc2VudCk7CiAgICAgICB9CiAgICAgfQogICB9CiAgIGlm
IChpc19wcm9iaW5nKSB7CiAgICAgcHJvYmluZ19zZW5kX2ZhaWx1cmVfID0gYnl0ZXNfc2VudCA9
PSAwOwogICAgIGlmICghcHJvYmluZ19zZW5kX2ZhaWx1cmVfKQotICAgICAgcHJvYmVyXy0+UHJv
YmVTZW50KFRpbWVNaWxsaXNlY29uZHMoKSwgYnl0ZXNfc2VudCk7CisgICAgICBwcm9iZXJfLlBy
b2JlU2VudChUaW1lTWlsbGlzZWNvbmRzKCksIGJ5dGVzX3NlbnQpOwogICB9CiAgIGFscl9kZXRl
Y3Rvcl8tPk9uQnl0ZXNTZW50KGJ5dGVzX3NlbnQsIG5vd191cyAvIDEwMDApOwogfQpAQCAtMzY3
LDY2ICszODcsNTggQEAgdm9pZCBQYWNlZFNlbmRlcjo6UHJvY2Vzc1RocmVhZEF0dGFjaGVkKFBy
b2Nlc3NUaHJlYWQqIHByb2Nlc3NfdGhyZWFkKSB7CiAgIHByb2Nlc3NfdGhyZWFkXyA9IHByb2Nl
c3NfdGhyZWFkOwogfQogCi1ib29sIFBhY2VkU2VuZGVyOjpTZW5kUGFja2V0KGNvbnN0IFJvdW5k
Um9iaW5QYWNrZXRRdWV1ZTo6UGFja2V0JiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2luZm8pIHsKLSAgUlRDX0RDSEVD
SyghcGF1c2VkXyk7Ci0gIGJvb2wgYXVkaW9fcGFja2V0ID0gcGFja2V0LnByaW9yaXR5ID09IGtI
aWdoUHJpb3JpdHk7Citjb25zdCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlBhY2tldCogUGFjZWRT
ZW5kZXI6OkdldFBlbmRpbmdQYWNrZXQoCisgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNp
bmdfaW5mbykgeworICAvLyBTaW5jZSB3ZSBuZWVkIHRvIHJlbGVhc2UgdGhlIGxvY2sgaW4gb3Jk
ZXIgdG8gc2VuZCwgd2UgZmlyc3QgcG9wIHRoZQorICAvLyBlbGVtZW50IGZyb20gdGhlIHByaW9y
aXR5IHF1ZXVlIGJ1dCBrZWVwIGl0IGluIHN0b3JhZ2UsIHNvIHRoYXQgd2UgY2FuCisgIC8vIHJl
aW5zZXJ0IGl0IGlmIHNlbmQgZmFpbHMuCisgIGNvbnN0IFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6
UGFja2V0KiBwYWNrZXQgPSAmcGFja2V0c18uQmVnaW5Qb3AoKTsKKyAgYm9vbCBhdWRpb19wYWNr
ZXQgPSBwYWNrZXQtPnByaW9yaXR5ID09IGtIaWdoUHJpb3JpdHk7CiAgIGJvb2wgYXBwbHlfcGFj
aW5nID0KICAgICAgICFhdWRpb19wYWNrZXQgfHwgYWNjb3VudF9mb3JfYXVkaW9fIHx8IHZpZGVv
X2Jsb2Nrc19hdWRpb187Ci0gIGlmIChhcHBseV9wYWNpbmcgJiYgKENvbmdlc3RlZCgpIHx8ICht
ZWRpYV9idWRnZXRfLT5ieXRlc19yZW1haW5pbmcoKSA9PSAwICYmCisgIGlmIChhcHBseV9wYWNp
bmcgJiYgKENvbmdlc3RlZCgpIHx8IChtZWRpYV9idWRnZXRfLmJ5dGVzX3JlbWFpbmluZygpID09
IDAgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2luZ19pbmZv
LnByb2JlX2NsdXN0ZXJfaWQgPT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYWNlZFBhY2tldEluZm86OmtOb3RBUHJvYmUpKSkgewotICAgIHJldHVybiBmYWxz
ZTsKKyAgICBwYWNrZXRzXy5DYW5jZWxQb3AoKnBhY2tldCk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiAgIH0KKyAgcmV0dXJuIHBhY2tldDsKK30KIAotICBjcml0c2VjdF8uTGVhdmUoKTsKLSAgY29u
c3QgYm9vbCBzdWNjZXNzID0gcGFja2V0X3NlbmRlcl8tPlRpbWVUb1NlbmRQYWNrZXQoCi0gICAg
ICBwYWNrZXQuc3NyYywgcGFja2V0LnNlcXVlbmNlX251bWJlciwgcGFja2V0LmNhcHR1cmVfdGlt
ZV9tcywKLSAgICAgIHBhY2tldC5yZXRyYW5zbWlzc2lvbiwgcGFjaW5nX2luZm8pOwotICBjcml0
c2VjdF8uRW50ZXIoKTsKLQotICBpZiAoc3VjY2VzcykgewotICAgIGlmIChmaXJzdF9zZW50X3Bh
Y2tldF9tc18gPT0gLTEpCi0gICAgICBmaXJzdF9zZW50X3BhY2tldF9tc18gPSBUaW1lTWlsbGlz
ZWNvbmRzKCk7Ci0gICAgaWYgKCFhdWRpb19wYWNrZXQgfHwgYWNjb3VudF9mb3JfYXVkaW9fKSB7
Ci0gICAgICAvLyBVcGRhdGUgbWVkaWEgYnl0ZXMgc2VudC4KLSAgICAgIC8vIFRPRE8oZWxhZGFs
b24pOiBUaW1lVG9TZW5kUGFja2V0KCkgY2FuIGFsc28gcmV0dXJuIHx0cnVlfCBpbiBzb21lCi0g
ICAgICAvLyBzaXR1YXRpb25zIHdoZXJlIG5vdGhpbmcgYWN0dWFsbHkgZW5kZWQgdXAgYmVpbmcg
c2VudCB0byB0aGUgbmV0d29yaywKLSAgICAgIC8vIGFuZCB3ZSBwcm9iYWJseSBkb24ndCB3YW50
IHRvIHVwZGF0ZSB0aGUgYnVkZ2V0IGluIHN1Y2ggY2FzZXMuCi0gICAgICAvLyBodHRwczovL2J1
Z3MuY2hyb21pdW0ub3JnL3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9ODA1MgotICAgICAgVXBk
YXRlQnVkZ2V0V2l0aEJ5dGVzU2VudChwYWNrZXQuYnl0ZXMpOwotICAgICAgbGFzdF9zZW5kX3Rp
bWVfdXNfID0gY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsKLSAgICB9Cit2b2lkIFBhY2Vk
U2VuZGVyOjpPblBhY2tldFNlbnQoY29uc3QgUm91bmRSb2JpblBhY2tldFF1ZXVlOjpQYWNrZXQq
IHBhY2tldCkgeworICBpZiAoZmlyc3Rfc2VudF9wYWNrZXRfbXNfID09IC0xKQorICAgIGZpcnN0
X3NlbnRfcGFja2V0X21zXyA9IFRpbWVNaWxsaXNlY29uZHMoKTsKKyAgYm9vbCBhdWRpb19wYWNr
ZXQgPSBwYWNrZXQtPnByaW9yaXR5ID09IGtIaWdoUHJpb3JpdHk7CisgIGlmICghYXVkaW9fcGFj
a2V0IHx8IGFjY291bnRfZm9yX2F1ZGlvXykgeworICAgIC8vIFVwZGF0ZSBtZWRpYSBieXRlcyBz
ZW50LgorICAgIC8vIFRPRE8oZWxhZGFsb24pOiBUaW1lVG9TZW5kUGFja2V0KCkgY2FuIGFsc28g
cmV0dXJuIHx0cnVlfCBpbiBzb21lCisgICAgLy8gc2l0dWF0aW9ucyB3aGVyZSBub3RoaW5nIGFj
dHVhbGx5IGVuZGVkIHVwIGJlaW5nIHNlbnQgdG8gdGhlIG5ldHdvcmssCisgICAgLy8gYW5kIHdl
IHByb2JhYmx5IGRvbid0IHdhbnQgdG8gdXBkYXRlIHRoZSBidWRnZXQgaW4gc3VjaCBjYXNlcy4K
KyAgICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/
aWQ9ODA1MgorICAgIFVwZGF0ZUJ1ZGdldFdpdGhCeXRlc1NlbnQocGFja2V0LT5ieXRlcyk7Cisg
ICAgbGFzdF9zZW5kX3RpbWVfdXNfID0gY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsKICAg
fQotCi0gIHJldHVybiBzdWNjZXNzOworICAvLyBTZW5kIHN1Y2NlZWRlZCwgcmVtb3ZlIGl0IGZy
b20gdGhlIHF1ZXVlLgorICBwYWNrZXRzXy5GaW5hbGl6ZVBvcCgqcGFja2V0KTsKIH0KIAotc2l6
ZV90IFBhY2VkU2VuZGVyOjpTZW5kUGFkZGluZyhzaXplX3QgcGFkZGluZ19uZWVkZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5n
X2luZm8pIHsKLSAgUlRDX0RDSEVDS19HVChwYWNrZXRfY291bnRlcl8sIDApOwotICBjcml0c2Vj
dF8uTGVhdmUoKTsKLSAgc2l6ZV90IGJ5dGVzX3NlbnQgPQotICAgICAgcGFja2V0X3NlbmRlcl8t
PlRpbWVUb1NlbmRQYWRkaW5nKHBhZGRpbmdfbmVlZGVkLCBwYWNpbmdfaW5mbyk7Ci0gIGNyaXRz
ZWN0Xy5FbnRlcigpOwotCit2b2lkIFBhY2VkU2VuZGVyOjpPblBhZGRpbmdTZW50KHNpemVfdCBi
eXRlc19zZW50KSB7CiAgIGlmIChieXRlc19zZW50ID4gMCkgewogICAgIFVwZGF0ZUJ1ZGdldFdp
dGhCeXRlc1NlbnQoYnl0ZXNfc2VudCk7CiAgIH0KICAgbGFzdF9zZW5kX3RpbWVfdXNfID0gY2xv
Y2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsKLSAgcmV0dXJuIGJ5dGVzX3NlbnQ7CiB9CiAKIHZv
aWQgUGFjZWRTZW5kZXI6OlVwZGF0ZUJ1ZGdldFdpdGhFbGFwc2VkVGltZShpbnQ2NF90IGRlbHRh
X3RpbWVfbXMpIHsKICAgZGVsdGFfdGltZV9tcyA9IHN0ZDo6bWluKGtNYXhJbnRlcnZhbFRpbWVN
cywgZGVsdGFfdGltZV9tcyk7Ci0gIG1lZGlhX2J1ZGdldF8tPkluY3JlYXNlQnVkZ2V0KGRlbHRh
X3RpbWVfbXMpOwotICBwYWRkaW5nX2J1ZGdldF8tPkluY3JlYXNlQnVkZ2V0KGRlbHRhX3RpbWVf
bXMpOworICBtZWRpYV9idWRnZXRfLkluY3JlYXNlQnVkZ2V0KGRlbHRhX3RpbWVfbXMpOworICBw
YWRkaW5nX2J1ZGdldF8uSW5jcmVhc2VCdWRnZXQoZGVsdGFfdGltZV9tcyk7CiB9CiAKIHZvaWQg
UGFjZWRTZW5kZXI6OlVwZGF0ZUJ1ZGdldFdpdGhCeXRlc1NlbnQoc2l6ZV90IGJ5dGVzX3NlbnQp
IHsKICAgb3V0c3RhbmRpbmdfYnl0ZXNfICs9IGJ5dGVzX3NlbnQ7Ci0gIG1lZGlhX2J1ZGdldF8t
PlVzZUJ1ZGdldChieXRlc19zZW50KTsKLSAgcGFkZGluZ19idWRnZXRfLT5Vc2VCdWRnZXQoYnl0
ZXNfc2VudCk7CisgIG1lZGlhX2J1ZGdldF8uVXNlQnVkZ2V0KGJ5dGVzX3NlbnQpOworICBwYWRk
aW5nX2J1ZGdldF8uVXNlQnVkZ2V0KGJ5dGVzX3NlbnQpOwogfQogCiB2b2lkIFBhY2VkU2VuZGVy
OjpTZXRQYWNpbmdGYWN0b3IoZmxvYXQgcGFjaW5nX2ZhY3RvcikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcGFj
ZWRfc2VuZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuaAppbmRleCBmMTI5MTc0MDhhNmI0MTY4NDIyOGZi
MDQwOTgzZDI5YjNmODM4MTIwLi40NTg2ZDI5Y2NhOTdlNzZlMDViNzYxNWVkZjA3ZjJiMmRhNzYz
NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuaApAQCAt
MTEsMjAgKzExLDI1IEBACiAjaWZuZGVmIE1PRFVMRVNfUEFDSU5HX1BBQ0VEX1NFTkRFUl9IXwog
I2RlZmluZSBNT0RVTEVTX1BBQ0lOR19QQUNFRF9TRU5ERVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtf
dHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvcGFjaW5nL2ludGVydmFsX2J1ZGdldC5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcGFjaW5nL3BhY2VyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5f
cGFja2V0X3F1ZXVlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9y
dGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3V0aWxpdHkvaW5jbHVkZS9wcm9jZXNz
X3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IGNsYXNzIEFsckRldGVjdG9yOwotY2xhc3MgQml0cmF0ZVByb2JlcjsKIGNsYXNzIENsb2NrOwog
Y2xhc3MgUnRjRXZlbnRMb2c7Ci1jbGFzcyBJbnRlcnZhbEJ1ZGdldDsKIAogY2xhc3MgUGFjZWRT
ZW5kZXIgOiBwdWJsaWMgUGFjZXIgewogIHB1YmxpYzoKQEAgLTEzOCwxOSArMTQzLDI1IEBAIGNs
YXNzIFBhY2VkU2VuZGVyIDogcHVibGljIFBhY2VyIHsKICAgdm9pZCBTZXRRdWV1ZVRpbWVMaW1p
dChpbnQgbGltaXRfbXMpOwogCiAgcHJpdmF0ZToKKyAgaW50NjRfdCBVcGRhdGVUaW1lQW5kR2V0
RWxhcHNlZE1zKGludDY0X3Qgbm93X3VzKQorICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFV
SVJFRChjcml0c2VjdF8pOworICBib29sIFNob3VsZFNlbmRLZWVwYWxpdmUoaW50NjRfdCBhdF90
aW1lX3VzKSBjb25zdAorICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChjcml0c2Vj
dF8pOworCiAgIC8vIFVwZGF0ZXMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSBzZW50
IGZvciB0aGUgbmV4dCB0aW1lIGludGVydmFsLgogICB2b2lkIFVwZGF0ZUJ1ZGdldFdpdGhFbGFw
c2VkVGltZShpbnQ2NF90IGRlbHRhX3RpbWVfaW5fbXMpCiAgICAgICBSVENfRVhDTFVTSVZFX0xP
Q0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7CiAgIHZvaWQgVXBkYXRlQnVkZ2V0V2l0aEJ5dGVzU2Vu
dChzaXplX3QgYnl0ZXMpCiAgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRz
ZWN0Xyk7CiAKLSAgYm9vbCBTZW5kUGFja2V0KGNvbnN0IFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6
UGFja2V0JiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8m
IGNsdXN0ZXJfaW5mbykKKyAgY29uc3QgUm91bmRSb2JpblBhY2tldFF1ZXVlOjpQYWNrZXQqIEdl
dFBlbmRpbmdQYWNrZXQoCisgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZv
KQorICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChjcml0c2VjdF8pOworICB2b2lk
IE9uUGFja2V0U2VudChjb25zdCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlBhY2tldCogcGFja2V0
KQogICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChjcml0c2VjdF8pOwotICBzaXpl
X3QgU2VuZFBhZGRpbmcoc2l6ZV90IHBhZGRpbmdfbmVlZGVkLCBjb25zdCBQYWNlZFBhY2tldElu
Zm8mIGNsdXN0ZXJfaW5mbykKKyAgdm9pZCBPblBhZGRpbmdTZW50KHNpemVfdCBwYWRkaW5nX3Nl
bnQpCiAgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7CiAKLSAg
dm9pZCBPbkJ5dGVzU2VudChzaXplX3QgYnl0ZXNfc2VudCkgUlRDX0VYQ0xVU0lWRV9MT0NLU19S
RVFVSVJFRChjcml0c2VjdF8pOwogICBib29sIENvbmdlc3RlZCgpIGNvbnN0IFJUQ19FWENMVVNJ
VkVfTE9DS1NfUkVRVUlSRUQoY3JpdHNlY3RfKTsKICAgaW50NjRfdCBUaW1lTWlsbGlzZWNvbmRz
KCkgY29uc3QgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChjcml0c2VjdF8pOwogCkBAIC0x
NjksMTUgKzE4MCwxMyBAQCBjbGFzcyBQYWNlZFNlbmRlciA6IHB1YmxpYyBQYWNlciB7CiAgIGJv
b2wgcGF1c2VkXyBSVENfR1VBUkRFRF9CWShjcml0c2VjdF8pOwogICAvLyBUaGlzIGlzIHRoZSBt
ZWRpYSBidWRnZXQsIGtlZXBpbmcgdHJhY2sgb2YgaG93IG1hbnkgYml0cyBvZiBtZWRpYQogICAv
LyB3ZSBjYW4gcGFjZSBvdXQgZHVyaW5nIHRoZSBjdXJyZW50IGludGVydmFsLgotICBjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8SW50ZXJ2YWxCdWRnZXQ+IG1lZGlhX2J1ZGdldF8KLSAgICAgIFJUQ19Q
VF9HVUFSREVEX0JZKGNyaXRzZWN0Xyk7CisgIEludGVydmFsQnVkZ2V0IG1lZGlhX2J1ZGdldF8g
UlRDX0dVQVJERURfQlkoY3JpdHNlY3RfKTsKICAgLy8gVGhpcyBpcyB0aGUgcGFkZGluZyBidWRn
ZXQsIGtlZXBpbmcgdHJhY2sgb2YgaG93IG1hbnkgYml0cyBvZiBwYWRkaW5nIHdlJ3JlCiAgIC8v
IGFsbG93ZWQgdG8gc2VuZCBvdXQgZHVyaW5nIHRoZSBjdXJyZW50IGludGVydmFsLiBUaGlzIGJ1
ZGdldCB3aWxsIGJlCiAgIC8vIHV0aWxpemVkIHdoZW4gdGhlcmUncyBubyBtZWRpYSB0byBzZW5k
LgotICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJ2YWxCdWRnZXQ+IHBhZGRpbmdfYnVkZ2V0
XwotICAgICAgUlRDX1BUX0dVQVJERURfQlkoY3JpdHNlY3RfKTsKKyAgSW50ZXJ2YWxCdWRnZXQg
cGFkZGluZ19idWRnZXRfIFJUQ19HVUFSREVEX0JZKGNyaXRzZWN0Xyk7CiAKLSAgY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPEJpdHJhdGVQcm9iZXI+IHByb2Jlcl8gUlRDX1BUX0dVQVJERURfQlkoY3Jp
dHNlY3RfKTsKKyAgQml0cmF0ZVByb2JlciBwcm9iZXJfIFJUQ19HVUFSREVEX0JZKGNyaXRzZWN0
Xyk7CiAgIGJvb2wgcHJvYmluZ19zZW5kX2ZhaWx1cmVfIFJUQ19HVUFSREVEX0JZKGNyaXRzZWN0
Xyk7CiAgIC8vIEFjdHVhbCBjb25maWd1cmVkIGJpdHJhdGVzIChtZWRpYV9idWRnZXRfIG1heSB0
ZW1wb3JhcmlseSBiZSBoaWdoZXIgaW4KICAgLy8gb3JkZXIgdG8gbWVldCBwYWNlIHRpbWUgY29u
c3RyYWludCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcGFja2V0X3JvdXRlci5j
YwppbmRleCBiMjdjNzNjMmYwYzdlN2U3NmJhODZmYmViODAzZDM2NTk2YzhjN2E4Li4yNGJlN2Vl
YmYyYTllMzJkYjc3Mjg2YzY4N2FmNDFhZGY5ZjRhNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91
dGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuY2MKQEAgLTExLDggKzExLDEwIEBACiAjaW5jbHVk
ZSAibW9kdWxlcy9wYWNpbmcvcGFja2V0X3JvdXRlci5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8bGltaXRzPgogCisjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9y
dHBfcnRjcC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9k
ZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
dHJhbnNwb3J0X2ZlZWRiYWNrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNr
ZXRfcm91dGVyLmgKaW5kZXggZjAxZTllZjQ5MzM5NjU0MWE2Zjg4M2YyZDg0YzhlNjhhZTM3Yjlh
Ny4uYjdjYzVmZjE5NjY4N2RhMmJjOGE0OTBiZjhmMjgzNmIxMzIzZDE2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcv
cGFja2V0X3JvdXRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuaApAQCAtMTEsMTYgKzExLDE3IEBA
CiAjaWZuZGVmIE1PRFVMRVNfUEFDSU5HX1BBQ0tFVF9ST1VURVJfSF8KICNkZWZpbmUgTU9EVUxF
U19QQUNJTkdfUEFDS0VUX1JPVVRFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNs
dWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUg
ImFwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5n
L3BhY2VkX3NlbmRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yL2luY2x1ZGUvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9u
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNp
bmcvcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVl
LmNjCmluZGV4IGU4OTJkZGI0ZWEyYjUwODY0ODFiZDkwMjEzZTU2MGJkYmFhYjVkZDEuLmU2MWQ2
ODIxNWFjYThhNzQ3NmJhYmUzNDg3OGI2ZGU2MDQ2YWIzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3JvdW5kX3Jv
YmluX3BhY2tldF9xdWV1ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9yb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuY2MKQEAg
LTExLDkgKzExLDEwIEBACiAjaW5jbHVkZSAibW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5fcGFj
a2V0X3F1ZXVlLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4K
KyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKQEAgLTUzLDggKzU0LDggQEAgUm91bmRSb2JpblBhY2tldFF1ZXVlOjpTdHJlYW06OlN0
cmVhbSgpIDogYnl0ZXMoMCksIHNzcmMoMCkge30KIFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6U3Ry
ZWFtOjpTdHJlYW0oY29uc3QgU3RyZWFtJiBzdHJlYW0pID0gZGVmYXVsdDsKIFJvdW5kUm9iaW5Q
YWNrZXRRdWV1ZTo6U3RyZWFtOjp+U3RyZWFtKCkge30KIAotUm91bmRSb2JpblBhY2tldFF1ZXVl
OjpSb3VuZFJvYmluUGFja2V0UXVldWUoY29uc3QgQ2xvY2sqIGNsb2NrKQotICAgIDogdGltZV9s
YXN0X3VwZGF0ZWRfKGNsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSkge30KK1JvdW5kUm9iaW5Q
YWNrZXRRdWV1ZTo6Um91bmRSb2JpblBhY2tldFF1ZXVlKGludDY0X3Qgc3RhcnRfdGltZV91cykK
KyAgICA6IHRpbWVfbGFzdF91cGRhdGVkX21zXyhzdGFydF90aW1lX3VzIC8gMTAwMCkge30KIAog
Um91bmRSb2JpblBhY2tldFF1ZXVlOjp+Um91bmRSb2JpblBhY2tldFF1ZXVlKCkge30KIApAQCAt
MTMyLDcgKzEzMyw3IEBAIHZvaWQgUm91bmRSb2JpblBhY2tldFF1ZXVlOjpGaW5hbGl6ZVBvcChj
b25zdCBQYWNrZXQmIHBhY2tldCkgewogICAgIC8vIGJ5IHN1YnRyYWN0aW5nIGl0IG5vdyB3ZSBl
ZmZlY3RpdmVseSByZW1vdmUgdGhlIHRpbWUgc3BlbnQgaW4gaW4gdGhlCiAgICAgLy8gcXVldWUg
d2hpbGUgaW4gYSBwYXVzZWQgc3RhdGUuCiAgICAgaW50NjRfdCB0aW1lX2luX25vbl9wYXVzZWRf
c3RhdGVfbXMgPQotICAgICAgICB0aW1lX2xhc3RfdXBkYXRlZF8gLSBwYWNrZXQuZW5xdWV1ZV90
aW1lX21zIC0gcGF1c2VfdGltZV9zdW1fbXNfOworICAgICAgICB0aW1lX2xhc3RfdXBkYXRlZF9t
c18gLSBwYWNrZXQuZW5xdWV1ZV90aW1lX21zIC0gcGF1c2VfdGltZV9zdW1fbXNfOwogICAgIHF1
ZXVlX3RpbWVfc3VtX21zXyAtPSB0aW1lX2luX25vbl9wYXVzZWRfc3RhdGVfbXM7CiAKICAgICBS
VENfQ0hFQ0socGFja2V0LmVucXVldWVfdGltZV9pdCAhPSBlbnF1ZXVlX3RpbWVzXy5lbmQoKSk7
CkBAIC0xODksMTEgKzE5MCwxMSBAQCBpbnQ2NF90IFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6T2xk
ZXN0RW5xdWV1ZVRpbWVNcygpIGNvbnN0IHsKIH0KIAogdm9pZCBSb3VuZFJvYmluUGFja2V0UXVl
dWU6OlVwZGF0ZVF1ZXVlVGltZShpbnQ2NF90IHRpbWVzdGFtcF9tcykgewotICBSVENfQ0hFQ0tf
R0UodGltZXN0YW1wX21zLCB0aW1lX2xhc3RfdXBkYXRlZF8pOwotICBpZiAodGltZXN0YW1wX21z
ID09IHRpbWVfbGFzdF91cGRhdGVkXykKKyAgUlRDX0NIRUNLX0dFKHRpbWVzdGFtcF9tcywgdGlt
ZV9sYXN0X3VwZGF0ZWRfbXNfKTsKKyAgaWYgKHRpbWVzdGFtcF9tcyA9PSB0aW1lX2xhc3RfdXBk
YXRlZF9tc18pCiAgICAgcmV0dXJuOwogCi0gIGludDY0X3QgZGVsdGFfbXMgPSB0aW1lc3RhbXBf
bXMgLSB0aW1lX2xhc3RfdXBkYXRlZF87CisgIGludDY0X3QgZGVsdGFfbXMgPSB0aW1lc3RhbXBf
bXMgLSB0aW1lX2xhc3RfdXBkYXRlZF9tc187CiAKICAgaWYgKHBhdXNlZF8pIHsKICAgICBwYXVz
ZV90aW1lX3N1bV9tc18gKz0gZGVsdGFfbXM7CkBAIC0yMDEsNyArMjAyLDcgQEAgdm9pZCBSb3Vu
ZFJvYmluUGFja2V0UXVldWU6OlVwZGF0ZVF1ZXVlVGltZShpbnQ2NF90IHRpbWVzdGFtcF9tcykg
ewogICAgIHF1ZXVlX3RpbWVfc3VtX21zXyArPSBkZWx0YV9tcyAqIHNpemVfcGFja2V0c187CiAg
IH0KIAotICB0aW1lX2xhc3RfdXBkYXRlZF8gPSB0aW1lc3RhbXBfbXM7CisgIHRpbWVfbGFzdF91
cGRhdGVkX21zXyA9IHRpbWVzdGFtcF9tczsKIH0KIAogdm9pZCBSb3VuZFJvYmluUGFja2V0UXVl
dWU6OlNldFBhdXNlU3RhdGUoYm9vbCBwYXVzZWQsIGludDY0X3QgdGltZXN0YW1wX21zKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3BhY2luZy9yb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3JvdW5kX3JvYmluX3BhY2tl
dF9xdWV1ZS5oCmluZGV4IGVlOTFlMmVmYzBjOTM0NDRmYjY5NTk1NTFmOWZjYjEwZDA3Y2NmMzgu
Ljc0Yjg1NWE0ODNkNTVlMTU3YmEwYTA5ZjY2MjA0YjJhYzc5OThiZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3Jv
dW5kX3JvYmluX3BhY2tldF9xdWV1ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3JvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5o
CkBAIC0xMSwxOCArMTEsMjIgQEAKICNpZm5kZWYgTU9EVUxFU19QQUNJTkdfUk9VTkRfUk9CSU5f
UEFDS0VUX1FVRVVFX0hfCiAjZGVmaW5lIE1PRFVMRVNfUEFDSU5HX1JPVU5EX1JPQklOX1BBQ0tF
VF9RVUVVRV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAj
aW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8cXVldWU+CiAjaW5jbHVk
ZSA8c2V0PgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCisjaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNs
YXNzIFJvdW5kUm9iaW5QYWNrZXRRdWV1ZSB7CiAgcHVibGljOgotICBleHBsaWNpdCBSb3VuZFJv
YmluUGFja2V0UXVldWUoY29uc3QgQ2xvY2sqIGNsb2NrKTsKKyAgZXhwbGljaXQgUm91bmRSb2Jp
blBhY2tldFF1ZXVlKGludDY0X3Qgc3RhcnRfdGltZV91cyk7CiAgIH5Sb3VuZFJvYmluUGFja2V0
UXVldWUoKTsKIAogICBzdHJ1Y3QgUGFja2V0IHsKQEAgLTEwNSw3ICsxMDksNyBAQCBjbGFzcyBS
b3VuZFJvYmluUGFja2V0UXVldWUgewogICAvLyBKdXN0IHVzZWQgdG8gdmVyaWZ5IGNvcnJlY3Ru
ZXNzLgogICBib29sIElzU3NyY1NjaGVkdWxlZCh1aW50MzJfdCBzc3JjKSBjb25zdDsKIAotICBp
bnQ2NF90IHRpbWVfbGFzdF91cGRhdGVkXzsKKyAgaW50NjRfdCB0aW1lX2xhc3RfdXBkYXRlZF9t
c187CiAgIGFic2w6Om9wdGlvbmFsPFBhY2tldD4gcG9wX3BhY2tldF87CiAgIGFic2w6Om9wdGlv
bmFsPFN0cmVhbSo+IHBvcF9zdHJlYW1fOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRv
ci9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL0JVSUxELmduCmluZGV4IGE4ZDY4NTA3NDlj
YzkwODFmOTNjY2Q5M2I1ZTkyMzExNmZlNmFkMTQuLmY2OTkxZWE2OWQ0MDNjZmQ3ZDUwZDFiY2E5
ZTYxNjNiODM3YTcwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL0JVSUxELmduCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yL0JVSUxELmduCkBAIC00Miw3ICs0Miw5IEBAIHJ0Y19zdGF0
aWNfbGlicmFyeSgicmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yIikgewogICBkZXBzID0gWwogICAg
ICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBpL3VuaXRzOmRhdGFfcmF0ZSIs
CisgICAgIi4uLy4uL2FwaS91bml0czp0aW1lc3RhbXAiLAogICAgICIuLi8uLi9tb2R1bGVzOm1v
ZHVsZV9hcGkiLAorICAgICIuLi8uLi9tb2R1bGVzOm1vZHVsZV9hcGlfcHVibGljIiwKICAgICAi
Li4vLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAogICAgICIuLi8uLi9ydGNf
YmFzZTpjaGVja3MiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCkBA
IC0yMjcsNiArMjI5LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vLi4v
cnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0aWxz
IiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3RfbWFpbiIsCisgICAgICAiLi4vLi4vdGVzdDp0ZXN0
X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCiAgICAgXQogICAgIGRhdGEgPSBb
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2Jp
dHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sLmNjCmluZGV4IGE2ZTY0MzY4OTc3ZjVh
YjA2YjAwNGJhOGE2ZTlkMjE2ZTg4ZjE5OTcuLmIyY2E4MDEyODg5YzZkOTUzZTM1OTllZmJkMjdj
YmViYTVmNzQzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250
cm9sLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sLmNjCkBAIC0x
MSw3ICsxMSw2IEBACiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Iv
YWltZF9yYXRlX2NvbnRyb2wuaCIKIAogI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0KICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y2Fzc2VydD4KICNpbmNsdWRlIDxjbWF0aD4KQEAgLTE5
LDkgKzE4LDcgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90
ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCi0jaW5jbHVkZSAibW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9yZW1vdGVfYml0cmF0ZV9lc3Rp
bWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVy
dXNlX2RldGVjdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3IvdGVzdC9id2VfdGVzdF9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVy
aWNzL3NhZmVfbWlubWF4LmgiCkBAIC0yOSwyNSArMjYsMjQgQEAKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKLXN0YXRpYyBjb25zdCBpbnQ2NF90IGtEZWZhdWx0UnR0TXMgPSAyMDA7Ci1zdGF0aWMg
Y29uc3QgaW50NjRfdCBrTWF4RmVlZGJhY2tJbnRlcnZhbE1zID0gMTAwMDsKLXN0YXRpYyBjb25z
dCBmbG9hdCBrRGVmYXVsdEJhY2tvZmZGYWN0b3IgPSAwLjg1ZjsKLXN0YXRpYyBjb25zdCBpbnQ2
NF90IGtEZWZhdWx0SW5pdGlhbEJhY2tPZmZJbnRlcnZhbE1zID0gMjAwOworY29uc3RleHByIFRp
bWVEZWx0YSBrRGVmYXVsdFJ0dCA9IFRpbWVEZWx0YTo6TWlsbGlzPDIwMD4oKTsKK2NvbnN0ZXhw
ciBkb3VibGUga0RlZmF1bHRCYWNrb2ZmRmFjdG9yID0gMC44NTsKK2NvbnN0ZXhwciBUaW1lRGVs
dGEga0RlZmF1bHRJbml0aWFsQmFja09mZkludGVydmFsID0gVGltZURlbHRhOjpNaWxsaXM8MjAw
PigpOwogCiBjb25zdCBjaGFyIGtCd2VCYWNrT2ZmRmFjdG9yRXhwZXJpbWVudFtdID0gIldlYlJU
Qy1Cd2VCYWNrT2ZmRmFjdG9yIjsKIGNvbnN0IGNoYXIga0J3ZUluaXRpYWxCYWNrT2ZmSW50ZXJ2
YWxFeHBlcmltZW50W10gPQogICAgICJXZWJSVEMtQndlSW5pdGlhbEJhY2tPZmZJbnRlcnZhbCI7
CiAKLWZsb2F0IFJlYWRCYWNrb2ZmRmFjdG9yKCkgeworZG91YmxlIFJlYWRCYWNrb2ZmRmFjdG9y
KCkgewogICBzdGQ6OnN0cmluZyBleHBlcmltZW50X3N0cmluZyA9CiAgICAgICB3ZWJydGM6OmZp
ZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoa0J3ZUJhY2tPZmZGYWN0b3JFeHBlcmltZW50KTsKLSAg
ZmxvYXQgYmFja29mZl9mYWN0b3I7CisgIGRvdWJsZSBiYWNrb2ZmX2ZhY3RvcjsKICAgaW50IHBh
cnNlZF92YWx1ZXMgPQotICAgICAgc3NjYW5mKGV4cGVyaW1lbnRfc3RyaW5nLmNfc3RyKCksICJF
bmFibGVkLSVmIiwgJmJhY2tvZmZfZmFjdG9yKTsKKyAgICAgIHNzY2FuZihleHBlcmltZW50X3N0
cmluZy5jX3N0cigpLCAiRW5hYmxlZC0lbGYiLCAmYmFja29mZl9mYWN0b3IpOwogICBpZiAocGFy
c2VkX3ZhbHVlcyA9PSAxKSB7Ci0gICAgaWYgKGJhY2tvZmZfZmFjdG9yID49IDEuMGYpIHsKKyAg
ICBpZiAoYmFja29mZl9mYWN0b3IgPj0gMS4wKSB7CiAgICAgICBSVENfTE9HKFdBUk5JTkcpIDw8
ICJCYWNrLW9mZiBmYWN0b3IgbXVzdCBiZSBsZXNzIHRoYW4gMS4iOwotICAgIH0gZWxzZSBpZiAo
YmFja29mZl9mYWN0b3IgPD0gMC4wZikgeworICAgIH0gZWxzZSBpZiAoYmFja29mZl9mYWN0b3Ig
PD0gMC4wKSB7CiAgICAgICBSVENfTE9HKFdBUk5JTkcpIDw8ICJCYWNrLW9mZiBmYWN0b3IgbXVz
dCBiZSBncmVhdGVyIHRoYW4gMC4iOwogICAgIH0gZWxzZSB7CiAgICAgICByZXR1cm4gYmFja29m
Zl9mYWN0b3I7CkBAIC01OCw3ICs1NCw3IEBAIGZsb2F0IFJlYWRCYWNrb2ZmRmFjdG9yKCkgewog
ICByZXR1cm4ga0RlZmF1bHRCYWNrb2ZmRmFjdG9yOwogfQogCi1pbnQ2NF90IFJlYWRJbml0aWFs
QmFja29mZkludGVydmFsTXMoKSB7CitUaW1lRGVsdGEgUmVhZEluaXRpYWxCYWNrb2ZmSW50ZXJ2
YWwoKSB7CiAgIHN0ZDo6c3RyaW5nIGV4cGVyaW1lbnRfc3RyaW5nID0KICAgICAgIHdlYnJ0Yzo6
ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZShrQndlSW5pdGlhbEJhY2tPZmZJbnRlcnZhbEV4cGVy
aW1lbnQpOwogICBpbnQ2NF90IGJhY2tvZmZfaW50ZXJ2YWw7CkBAIC02Niw3ICs2Miw3IEBAIGlu
dDY0X3QgUmVhZEluaXRpYWxCYWNrb2ZmSW50ZXJ2YWxNcygpIHsKICAgICAgIHNzY2FuZihleHBl
cmltZW50X3N0cmluZy5jX3N0cigpLCAiRW5hYmxlZC0lIiBTQ05kNjQsICZiYWNrb2ZmX2ludGVy
dmFsKTsKICAgaWYgKHBhcnNlZF92YWx1ZXMgPT0gMSkgewogICAgIGlmICgxMCA8PSBiYWNrb2Zm
X2ludGVydmFsICYmIGJhY2tvZmZfaW50ZXJ2YWwgPD0gMjAwKSB7Ci0gICAgICByZXR1cm4gYmFj
a29mZl9pbnRlcnZhbDsKKyAgICAgIHJldHVybiBUaW1lRGVsdGE6Om1zKGJhY2tvZmZfaW50ZXJ2
YWwpOwogICAgIH0KICAgICBSVENfTE9HKFdBUk5JTkcpCiAgICAgICAgIDw8ICJJbml0aWFsIGJh
Y2stb2ZmIGludGVydmFsIG11c3QgYmUgYmV0d2VlbiAxMCBhbmQgMjAwIG1zLiI7CkBAIC03NCwz
MzQgKzcwLDM0NyBAQCBpbnQ2NF90IFJlYWRJbml0aWFsQmFja29mZkludGVydmFsTXMoKSB7CiAg
IFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byBwYXJzZSBwYXJhbWV0ZXJzIGZvciAi
CiAgICAgICAgICAgICAgICAgICAgICAgPDwga0J3ZUluaXRpYWxCYWNrT2ZmSW50ZXJ2YWxFeHBl
cmltZW50CiAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBleHBlcmltZW50LiBVc2luZyBkZWZh
dWx0LiI7Ci0gIHJldHVybiBrRGVmYXVsdEluaXRpYWxCYWNrT2ZmSW50ZXJ2YWxNczsKKyAgcmV0
dXJuIGtEZWZhdWx0SW5pdGlhbEJhY2tPZmZJbnRlcnZhbDsKIH0KIAogQWltZFJhdGVDb250cm9s
OjpBaW1kUmF0ZUNvbnRyb2woKQotICAgIDogbWluX2NvbmZpZ3VyZWRfYml0cmF0ZV9icHNfKGNv
bmdlc3Rpb25fY29udHJvbGxlcjo6R2V0TWluQml0cmF0ZUJwcygpKSwKLSAgICAgIG1heF9jb25m
aWd1cmVkX2JpdHJhdGVfYnBzXygzMDAwMDAwMCksCi0gICAgICBjdXJyZW50X2JpdHJhdGVfYnBz
XyhtYXhfY29uZmlndXJlZF9iaXRyYXRlX2Jwc18pLAotICAgICAgbGF0ZXN0X2VzdGltYXRlZF90
aHJvdWdocHV0X2Jwc18oY3VycmVudF9iaXRyYXRlX2Jwc18pLAotICAgICAgYXZnX21heF9iaXRy
YXRlX2ticHNfKC0xLjBmKSwKLSAgICAgIHZhcl9tYXhfYml0cmF0ZV9rYnBzXygwLjRmKSwKKyAg
ICA6IG1pbl9jb25maWd1cmVkX2JpdHJhdGVfKGNvbmdlc3Rpb25fY29udHJvbGxlcjo6R2V0TWlu
Qml0cmF0ZSgpKSwKKyAgICAgIG1heF9jb25maWd1cmVkX2JpdHJhdGVfKERhdGFSYXRlOjprYnBz
KDMwMDAwKSksCisgICAgICBjdXJyZW50X2JpdHJhdGVfKG1heF9jb25maWd1cmVkX2JpdHJhdGVf
KSwKKyAgICAgIGxhdGVzdF9lc3RpbWF0ZWRfdGhyb3VnaHB1dF8oY3VycmVudF9iaXRyYXRlXyks
CisgICAgICBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfKCksCisgICAgICB2YXJfbGlua19j
YXBhY2l0eV9lc3RpbWF0ZV9rYnBzXygwLjQpLAogICAgICAgcmF0ZV9jb250cm9sX3N0YXRlXyhr
UmNIb2xkKSwKLSAgICAgIHJhdGVfY29udHJvbF9yZWdpb25fKGtSY01heFVua25vd24pLAotICAg
ICAgdGltZV9sYXN0X2JpdHJhdGVfY2hhbmdlXygtMSksCi0gICAgICB0aW1lX2xhc3RfYml0cmF0
ZV9kZWNyZWFzZV8oLTEpLAotICAgICAgdGltZV9maXJzdF90aHJvdWdocHV0X2VzdGltYXRlXygt
MSksCisgICAgICB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfKFRpbWVzdGFtcDo6TWludXNJbmZp
bml0eSgpKSwKKyAgICAgIHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNlXyhUaW1lc3RhbXA6Ok1p
bnVzSW5maW5pdHkoKSksCisgICAgICB0aW1lX2ZpcnN0X3Rocm91Z2hwdXRfZXN0aW1hdGVfKFRp
bWVzdGFtcDo6TWludXNJbmZpbml0eSgpKSwKICAgICAgIGJpdHJhdGVfaXNfaW5pdGlhbGl6ZWRf
KGZhbHNlKSwKICAgICAgIGJldGFfKHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrQndl
QmFja09mZkZhY3RvckV4cGVyaW1lbnQpCiAgICAgICAgICAgICAgICAgPyBSZWFkQmFja29mZkZh
Y3RvcigpCiAgICAgICAgICAgICAgICAgOiBrRGVmYXVsdEJhY2tvZmZGYWN0b3IpLAotICAgICAg
cnR0XyhrRGVmYXVsdFJ0dE1zKSwKKyAgICAgIHJ0dF8oa0RlZmF1bHRSdHQpLAogICAgICAgaW5f
ZXhwZXJpbWVudF8oIUFkYXB0aXZlVGhyZXNob2xkRXhwZXJpbWVudElzRGlzYWJsZWQoKSksCiAg
ICAgICBzbW9vdGhpbmdfZXhwZXJpbWVudF8oCiAgICAgICAgICAgd2VicnRjOjpmaWVsZF90cmlh
bDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tQmFuZHdpZHRoU21vb3RoaW5nIikpLAogICAgICAg
aW5faW5pdGlhbF9iYWNrb2ZmX2ludGVydmFsX2V4cGVyaW1lbnRfKAogICAgICAgICAgIHdlYnJ0
Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrQndlSW5pdGlhbEJhY2tPZmZJbnRlcnZhbEV4cGVy
aW1lbnQpKSwKLSAgICAgIGluaXRpYWxfYmFja29mZl9pbnRlcnZhbF9tc18oa0RlZmF1bHRJbml0
aWFsQmFja09mZkludGVydmFsTXMpIHsKKyAgICAgIGluaXRpYWxfYmFja29mZl9pbnRlcnZhbF8o
a0RlZmF1bHRJbml0aWFsQmFja09mZkludGVydmFsKSB7CiAgIGlmIChpbl9pbml0aWFsX2JhY2tv
ZmZfaW50ZXJ2YWxfZXhwZXJpbWVudF8pIHsKLSAgICBpbml0aWFsX2JhY2tvZmZfaW50ZXJ2YWxf
bXNfID0gUmVhZEluaXRpYWxCYWNrb2ZmSW50ZXJ2YWxNcygpOworICAgIGluaXRpYWxfYmFja29m
Zl9pbnRlcnZhbF8gPSBSZWFkSW5pdGlhbEJhY2tvZmZJbnRlcnZhbCgpOwogICAgIFJUQ19MT0co
TFNfSU5GTykgPDwgIlVzaW5nIGFpbWQgcmF0ZSBjb250cm9sIHdpdGggaW5pdGlhbCBiYWNrLW9m
ZiBpbnRlcnZhbCIKLSAgICAgICAgICAgICAgICAgICAgIDw8ICIgIiA8PCBpbml0aWFsX2JhY2tv
ZmZfaW50ZXJ2YWxfbXNfIDw8ICIgbXMuIjsKKyAgICAgICAgICAgICAgICAgICAgIDw8ICIgIiA8
PCBUb1N0cmluZyhpbml0aWFsX2JhY2tvZmZfaW50ZXJ2YWxfKSA8PCAiLiI7CiAgIH0KICAgUlRD
X0xPRyhMU19JTkZPKSA8PCAiVXNpbmcgYWltZCByYXRlIGNvbnRyb2wgd2l0aCBiYWNrIG9mZiBm
YWN0b3IgIiA8PCBiZXRhXzsKIH0KIAogQWltZFJhdGVDb250cm9sOjp+QWltZFJhdGVDb250cm9s
KCkge30KIAotdm9pZCBBaW1kUmF0ZUNvbnRyb2w6OlNldFN0YXJ0Qml0cmF0ZShpbnQgc3RhcnRf
Yml0cmF0ZV9icHMpIHsKLSAgY3VycmVudF9iaXRyYXRlX2Jwc18gPSBzdGFydF9iaXRyYXRlX2Jw
czsKLSAgbGF0ZXN0X2VzdGltYXRlZF90aHJvdWdocHV0X2Jwc18gPSBjdXJyZW50X2JpdHJhdGVf
YnBzXzsKK3ZvaWQgQWltZFJhdGVDb250cm9sOjpTZXRTdGFydEJpdHJhdGUoRGF0YVJhdGUgc3Rh
cnRfYml0cmF0ZSkgeworICBjdXJyZW50X2JpdHJhdGVfID0gc3RhcnRfYml0cmF0ZTsKKyAgbGF0
ZXN0X2VzdGltYXRlZF90aHJvdWdocHV0XyA9IGN1cnJlbnRfYml0cmF0ZV87CiAgIGJpdHJhdGVf
aXNfaW5pdGlhbGl6ZWRfID0gdHJ1ZTsKIH0KIAotdm9pZCBBaW1kUmF0ZUNvbnRyb2w6OlNldE1p
bkJpdHJhdGUoaW50IG1pbl9iaXRyYXRlX2JwcykgewotICBtaW5fY29uZmlndXJlZF9iaXRyYXRl
X2Jwc18gPSBtaW5fYml0cmF0ZV9icHM7Ci0gIGN1cnJlbnRfYml0cmF0ZV9icHNfID0gc3RkOjpt
YXg8aW50PihtaW5fYml0cmF0ZV9icHMsIGN1cnJlbnRfYml0cmF0ZV9icHNfKTsKK3ZvaWQgQWlt
ZFJhdGVDb250cm9sOjpTZXRNaW5CaXRyYXRlKERhdGFSYXRlIG1pbl9iaXRyYXRlKSB7CisgIG1p
bl9jb25maWd1cmVkX2JpdHJhdGVfID0gbWluX2JpdHJhdGU7CisgIGN1cnJlbnRfYml0cmF0ZV8g
PSBzdGQ6Om1heChtaW5fYml0cmF0ZSwgY3VycmVudF9iaXRyYXRlXyk7CiB9CiAKIGJvb2wgQWlt
ZFJhdGVDb250cm9sOjpWYWxpZEVzdGltYXRlKCkgY29uc3QgewogICByZXR1cm4gYml0cmF0ZV9p
c19pbml0aWFsaXplZF87CiB9CiAKLWludDY0X3QgQWltZFJhdGVDb250cm9sOjpHZXRGZWVkYmFj
a0ludGVydmFsKCkgY29uc3QgeworVGltZURlbHRhIEFpbWRSYXRlQ29udHJvbDo6R2V0RmVlZGJh
Y2tJbnRlcnZhbCgpIGNvbnN0IHsKICAgLy8gRXN0aW1hdGUgaG93IG9mdGVuIHdlIGNhbiBzZW5k
IFJUQ1AgaWYgd2UgYWxsb2NhdGUgdXAgdG8gNSUgb2YgYmFuZHdpZHRoCiAgIC8vIHRvIGZlZWRi
YWNrLgotICBzdGF0aWMgY29uc3QgaW50IGtSdGNwU2l6ZSA9IDgwOwotICBjb25zdCBpbnQ2NF90
IGludGVydmFsID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oCi0gICAgICBrUnRjcFNpemUgKiA4LjAg
KiAxMDAwLjAgLyAoMC4wNSAqIGN1cnJlbnRfYml0cmF0ZV9icHNfKSArIDAuNSk7Ci0gIGNvbnN0
IGludDY0X3Qga01pbkZlZWRiYWNrSW50ZXJ2YWxNcyA9IDIwMDsKLSAgcmV0dXJuIHJ0Yzo6U2Fm
ZUNsYW1wKGludGVydmFsLCBrTWluRmVlZGJhY2tJbnRlcnZhbE1zLAotICAgICAgICAgICAgICAg
ICAgICAgICAga01heEZlZWRiYWNrSW50ZXJ2YWxNcyk7CisgIGNvbnN0IERhdGFTaXplIGtSdGNw
U2l6ZSA9IERhdGFTaXplOjpieXRlcyg4MCk7CisgIGNvbnN0IERhdGFSYXRlIHJ0Y3BfYml0cmF0
ZSA9IGN1cnJlbnRfYml0cmF0ZV8gKiAwLjA1OworICBjb25zdCBUaW1lRGVsdGEgaW50ZXJ2YWwg
PSBrUnRjcFNpemUgLyBydGNwX2JpdHJhdGU7CisgIGNvbnN0IFRpbWVEZWx0YSBrTWluRmVlZGJh
Y2tJbnRlcnZhbCA9IFRpbWVEZWx0YTo6bXMoMjAwKTsKKyAgY29uc3QgVGltZURlbHRhIGtNYXhG
ZWVkYmFja0ludGVydmFsID0gVGltZURlbHRhOjptcygxMDAwKTsKKyAgcmV0dXJuIGludGVydmFs
LkNsYW1wZWQoa01pbkZlZWRiYWNrSW50ZXJ2YWwsIGtNYXhGZWVkYmFja0ludGVydmFsKTsKIH0K
IAotYm9vbCBBaW1kUmF0ZUNvbnRyb2w6OlRpbWVUb1JlZHVjZUZ1cnRoZXIoCi0gICAgaW50NjRf
dCBub3dfbXMsCi0gICAgdWludDMyX3QgZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzKSBjb25zdCB7
Ci0gIGNvbnN0IGludDY0X3QgYml0cmF0ZV9yZWR1Y3Rpb25faW50ZXJ2YWwgPQotICAgICAgc3Rk
OjptYXg8aW50NjRfdD4oc3RkOjptaW48aW50NjRfdD4ocnR0XywgMjAwKSwgMTApOwotICBpZiAo
bm93X21zIC0gdGltZV9sYXN0X2JpdHJhdGVfY2hhbmdlXyA+PSBiaXRyYXRlX3JlZHVjdGlvbl9p
bnRlcnZhbCkgeworYm9vbCBBaW1kUmF0ZUNvbnRyb2w6OlRpbWVUb1JlZHVjZUZ1cnRoZXIoVGlt
ZXN0YW1wIGF0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEYXRhUmF0ZSBlc3RpbWF0ZWRfdGhyb3VnaHB1dCkgY29uc3QgeworICBjb25zdCBUaW1lRGVs
dGEgYml0cmF0ZV9yZWR1Y3Rpb25faW50ZXJ2YWwgPQorICAgICAgcnR0Xy5DbGFtcGVkKFRpbWVE
ZWx0YTo6bXMoMTApLCBUaW1lRGVsdGE6Om1zKDIwMCkpOworICBpZiAoYXRfdGltZSAtIHRpbWVf
bGFzdF9iaXRyYXRlX2NoYW5nZV8gPj0gYml0cmF0ZV9yZWR1Y3Rpb25faW50ZXJ2YWwpIHsKICAg
ICByZXR1cm4gdHJ1ZTsKICAgfQogICBpZiAoVmFsaWRFc3RpbWF0ZSgpKSB7CiAgICAgLy8gVE9E
Tyh0ZXJlbGl1cy9ob2xtZXIpOiBJbnZlc3RpZ2F0ZSBjb25zZXF1ZW5jZXMgb2YgaW5jcmVhc2lu
ZwogICAgIC8vIHRoZSB0aHJlc2hvbGQgdG8gMC45NSAqIExhdGVzdEVzdGltYXRlKCkuCi0gICAg
Y29uc3QgdWludDMyX3QgdGhyZXNob2xkID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDAuNSAqIExh
dGVzdEVzdGltYXRlKCkpOwotICAgIHJldHVybiBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMgPCB0
aHJlc2hvbGQ7CisgICAgY29uc3QgRGF0YVJhdGUgdGhyZXNob2xkID0gMC41ICogTGF0ZXN0RXN0
aW1hdGUoKTsKKyAgICByZXR1cm4gZXN0aW1hdGVkX3Rocm91Z2hwdXQgPCB0aHJlc2hvbGQ7CiAg
IH0KICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEFpbWRSYXRlQ29udHJvbDo6SW5pdGlhbFRp
bWVUb1JlZHVjZUZ1cnRoZXIoaW50NjRfdCBub3dfbXMpIGNvbnN0IHsKK2Jvb2wgQWltZFJhdGVD
b250cm9sOjpJbml0aWFsVGltZVRvUmVkdWNlRnVydGhlcihUaW1lc3RhbXAgYXRfdGltZSkgY29u
c3QgewogICBpZiAoIWluX2luaXRpYWxfYmFja29mZl9pbnRlcnZhbF9leHBlcmltZW50Xykgewog
ICAgIHJldHVybiBWYWxpZEVzdGltYXRlKCkgJiYKLSAgICAgICAgICAgVGltZVRvUmVkdWNlRnVy
dGhlcihub3dfbXMsIExhdGVzdEVzdGltYXRlKCkgLyAyIC0gMSk7CisgICAgICAgICAgIFRpbWVU
b1JlZHVjZUZ1cnRoZXIoYXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
YXRlc3RFc3RpbWF0ZSgpIC8gMiAtIERhdGFSYXRlOjpicHMoMSkpOwogICB9CiAgIC8vIFRPRE8o
dGVyZWxpdXMpOiBXZSBjb3VsZCB1c2UgdGhlIFJUVCAoY2xhbXBlZCB0byBzdWl0YWJsZSBsaW1p
dHMpIGluc3RlYWQKICAgLy8gb2YgYSBmaXhlZCBiaXRyYXRlX3JlZHVjdGlvbl9pbnRlcnZhbC4K
LSAgaWYgKHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNlXyA9PSAtMSB8fAotICAgICAgbm93X21z
IC0gdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfID49IGluaXRpYWxfYmFja29mZl9pbnRlcnZh
bF9tc18pIHsKKyAgaWYgKHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNlXy5Jc0luZmluaXRlKCkg
fHwKKyAgICAgIGF0X3RpbWUgLSB0aW1lX2xhc3RfYml0cmF0ZV9kZWNyZWFzZV8gPj0gaW5pdGlh
bF9iYWNrb2ZmX2ludGVydmFsXykgewogICAgIHJldHVybiB0cnVlOwogICB9CiAgIHJldHVybiBm
YWxzZTsKIH0KIAotdWludDMyX3QgQWltZFJhdGVDb250cm9sOjpMYXRlc3RFc3RpbWF0ZSgpIGNv
bnN0IHsKLSAgcmV0dXJuIGN1cnJlbnRfYml0cmF0ZV9icHNfOworRGF0YVJhdGUgQWltZFJhdGVD
b250cm9sOjpMYXRlc3RFc3RpbWF0ZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGN1cnJlbnRfYml0cmF0
ZV87CiB9CiAKLXZvaWQgQWltZFJhdGVDb250cm9sOjpTZXRSdHQoaW50NjRfdCBydHQpIHsKK3Zv
aWQgQWltZFJhdGVDb250cm9sOjpTZXRSdHQoVGltZURlbHRhIHJ0dCkgewogICBydHRfID0gcnR0
OwogfQogCi11aW50MzJfdCBBaW1kUmF0ZUNvbnRyb2w6OlVwZGF0ZShjb25zdCBSYXRlQ29udHJv
bElucHV0KiBpbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qg
bm93X21zKSB7CitEYXRhUmF0ZSBBaW1kUmF0ZUNvbnRyb2w6OlVwZGF0ZShjb25zdCBSYXRlQ29u
dHJvbElucHV0KiBpbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVz
dGFtcCBhdF90aW1lKSB7CiAgIFJUQ19DSEVDSyhpbnB1dCk7CiAKICAgLy8gU2V0IHRoZSBpbml0
aWFsIGJpdCByYXRlIHZhbHVlIHRvIHdoYXQgd2UncmUgcmVjZWl2aW5nIHRoZSBmaXJzdCBoYWxm
CiAgIC8vIHNlY29uZC4KICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTM3OSk6IFRoZSBjb21t
ZW50IGFib3ZlIGRvZXNuJ3QgbWF0Y2ggdG8gdGhlIGNvZGUuCiAgIGlmICghYml0cmF0ZV9pc19p
bml0aWFsaXplZF8pIHsKLSAgICBjb25zdCBpbnQ2NF90IGtJbml0aWFsaXphdGlvblRpbWVNcyA9
IDUwMDA7Ci0gICAgUlRDX0RDSEVDS19MRShrQml0cmF0ZVdpbmRvd01zLCBrSW5pdGlhbGl6YXRp
b25UaW1lTXMpOwotICAgIGlmICh0aW1lX2ZpcnN0X3Rocm91Z2hwdXRfZXN0aW1hdGVfIDwgMCkg
ewotICAgICAgaWYgKGlucHV0LT5lc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpCi0gICAgICAgIHRp
bWVfZmlyc3RfdGhyb3VnaHB1dF9lc3RpbWF0ZV8gPSBub3dfbXM7Ci0gICAgfSBlbHNlIGlmIChu
b3dfbXMgLSB0aW1lX2ZpcnN0X3Rocm91Z2hwdXRfZXN0aW1hdGVfID4KLSAgICAgICAgICAgICAg
ICAgICBrSW5pdGlhbGl6YXRpb25UaW1lTXMgJiYKLSAgICAgICAgICAgICAgIGlucHV0LT5lc3Rp
bWF0ZWRfdGhyb3VnaHB1dF9icHMpIHsKLSAgICAgIGN1cnJlbnRfYml0cmF0ZV9icHNfID0gKmlu
cHV0LT5lc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHM7CisgICAgY29uc3QgVGltZURlbHRhIGtJbml0
aWFsaXphdGlvblRpbWUgPSBUaW1lRGVsdGE6OnNlY29uZHMoNSk7CisgICAgUlRDX0RDSEVDS19M
RShrQml0cmF0ZVdpbmRvd01zLCBrSW5pdGlhbGl6YXRpb25UaW1lLm1zKCkpOworICAgIGlmICh0
aW1lX2ZpcnN0X3Rocm91Z2hwdXRfZXN0aW1hdGVfLklzSW5maW5pdGUoKSkgeworICAgICAgaWYg
KGlucHV0LT5lc3RpbWF0ZWRfdGhyb3VnaHB1dCkKKyAgICAgICAgdGltZV9maXJzdF90aHJvdWdo
cHV0X2VzdGltYXRlXyA9IGF0X3RpbWU7CisgICAgfSBlbHNlIGlmIChhdF90aW1lIC0gdGltZV9m
aXJzdF90aHJvdWdocHV0X2VzdGltYXRlXyA+CisgICAgICAgICAgICAgICAgICAga0luaXRpYWxp
emF0aW9uVGltZSAmJgorICAgICAgICAgICAgICAgaW5wdXQtPmVzdGltYXRlZF90aHJvdWdocHV0
KSB7CisgICAgICBjdXJyZW50X2JpdHJhdGVfID0gKmlucHV0LT5lc3RpbWF0ZWRfdGhyb3VnaHB1
dDsKICAgICAgIGJpdHJhdGVfaXNfaW5pdGlhbGl6ZWRfID0gdHJ1ZTsKICAgICB9CiAgIH0KIAot
ICBjdXJyZW50X2JpdHJhdGVfYnBzXyA9IENoYW5nZUJpdHJhdGUoY3VycmVudF9iaXRyYXRlX2Jw
c18sICppbnB1dCwgbm93X21zKTsKLSAgcmV0dXJuIGN1cnJlbnRfYml0cmF0ZV9icHNfOworICBj
dXJyZW50X2JpdHJhdGVfID0gQ2hhbmdlQml0cmF0ZShjdXJyZW50X2JpdHJhdGVfLCAqaW5wdXQs
IGF0X3RpbWUpOworICByZXR1cm4gY3VycmVudF9iaXRyYXRlXzsKIH0KIAotdm9pZCBBaW1kUmF0
ZUNvbnRyb2w6OlNldEVzdGltYXRlKGludCBiaXRyYXRlX2JwcywgaW50NjRfdCBub3dfbXMpIHsK
K3ZvaWQgQWltZFJhdGVDb250cm9sOjpTZXRFc3RpbWF0ZShEYXRhUmF0ZSBiaXRyYXRlLCBUaW1l
c3RhbXAgYXRfdGltZSkgewogICBiaXRyYXRlX2lzX2luaXRpYWxpemVkXyA9IHRydWU7Ci0gIHVp
bnQzMl90IHByZXZfYml0cmF0ZV9icHMgPSBjdXJyZW50X2JpdHJhdGVfYnBzXzsKLSAgY3VycmVu
dF9iaXRyYXRlX2Jwc18gPSBDbGFtcEJpdHJhdGUoYml0cmF0ZV9icHMsIGJpdHJhdGVfYnBzKTsK
LSAgdGltZV9sYXN0X2JpdHJhdGVfY2hhbmdlXyA9IG5vd19tczsKLSAgaWYgKGN1cnJlbnRfYml0
cmF0ZV9icHNfIDwgcHJldl9iaXRyYXRlX2JwcykgewotICAgIHRpbWVfbGFzdF9iaXRyYXRlX2Rl
Y3JlYXNlXyA9IG5vd19tczsKKyAgRGF0YVJhdGUgcHJldl9iaXRyYXRlID0gY3VycmVudF9iaXRy
YXRlXzsKKyAgY3VycmVudF9iaXRyYXRlXyA9IENsYW1wQml0cmF0ZShiaXRyYXRlLCBiaXRyYXRl
KTsKKyAgdGltZV9sYXN0X2JpdHJhdGVfY2hhbmdlXyA9IGF0X3RpbWU7CisgIGlmIChjdXJyZW50
X2JpdHJhdGVfIDwgcHJldl9iaXRyYXRlKSB7CisgICAgdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVh
c2VfID0gYXRfdGltZTsKICAgfQogfQogCi1pbnQgQWltZFJhdGVDb250cm9sOjpHZXROZWFyTWF4
SW5jcmVhc2VSYXRlQnBzKCkgY29uc3QgewotICBSVENfRENIRUNLX0dUKGN1cnJlbnRfYml0cmF0
ZV9icHNfLCAwKTsKLSAgZG91YmxlIGJpdHNfcGVyX2ZyYW1lID0gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihjdXJyZW50X2JpdHJhdGVfYnBzXykgLyAzMC4wOwotICBkb3VibGUgcGFja2V0c19wZXJfZnJh
bWUgPSBzdGQ6OmNlaWwoYml0c19wZXJfZnJhbWUgLyAoOC4wICogMTIwMC4wKSk7Ci0gIGRvdWJs
ZSBhdmdfcGFja2V0X3NpemVfYml0cyA9IGJpdHNfcGVyX2ZyYW1lIC8gcGFja2V0c19wZXJfZnJh
bWU7Citkb3VibGUgQWltZFJhdGVDb250cm9sOjpHZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzUGVy
U2Vjb25kKCkgY29uc3QgeworICBSVENfRENIRUNLKCFjdXJyZW50X2JpdHJhdGVfLklzWmVybygp
KTsKKyAgY29uc3QgVGltZURlbHRhIGtGcmFtZUludGVydmFsID0gVGltZURlbHRhOjpzZWNvbmRz
KDEpIC8gMzA7CisgIERhdGFTaXplIGZyYW1lX3NpemUgPSBjdXJyZW50X2JpdHJhdGVfICoga0Zy
YW1lSW50ZXJ2YWw7CisgIGNvbnN0IERhdGFTaXplIGtQYWNrZXRTaXplID0gRGF0YVNpemU6OmJ5
dGVzKDEyMDApOworICBkb3VibGUgcGFja2V0c19wZXJfZnJhbWUgPSBzdGQ6OmNlaWwoZnJhbWVf
c2l6ZSAvIGtQYWNrZXRTaXplKTsKKyAgRGF0YVNpemUgYXZnX3BhY2tldF9zaXplID0gZnJhbWVf
c2l6ZSAvIHBhY2tldHNfcGVyX2ZyYW1lOwogCiAgIC8vIEFwcHJveGltYXRlIHRoZSBvdmVyLXVz
ZSBlc3RpbWF0b3IgZGVsYXkgdG8gMTAwIG1zLgotICBjb25zdCBpbnQ2NF90IHJlc3BvbnNlX3Rp
bWUgPSBpbl9leHBlcmltZW50XyA/IChydHRfICsgMTAwKSAqIDIgOiBydHRfICsgMTAwOwotICBj
b25zdGV4cHIgZG91YmxlIGtNaW5JbmNyZWFzZVJhdGVCcHMgPSA0MDAwOwotICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihzdGQ6Om1heCgKLSAgICAgIGtNaW5JbmNyZWFzZVJhdGVCcHMsIChhdmdf
cGFja2V0X3NpemVfYml0cyAqIDEwMDApIC8gcmVzcG9uc2VfdGltZSkpOworICBUaW1lRGVsdGEg
cmVzcG9uc2VfdGltZSA9IHJ0dF8gKyBUaW1lRGVsdGE6Om1zKDEwMCk7CisgIGlmIChpbl9leHBl
cmltZW50XykKKyAgICByZXNwb25zZV90aW1lID0gcmVzcG9uc2VfdGltZSAqIDI7CisgIGRvdWJs
ZSBpbmNyZWFzZV9yYXRlX2Jwc19wZXJfc2Vjb25kID0KKyAgICAgIChhdmdfcGFja2V0X3NpemUg
LyByZXNwb25zZV90aW1lKS5icHM8ZG91YmxlPigpOworICBkb3VibGUga01pbkluY3JlYXNlUmF0
ZUJwc1BlclNlY29uZCA9IDQwMDA7CisgIHJldHVybiBzdGQ6Om1heChrTWluSW5jcmVhc2VSYXRl
QnBzUGVyU2Vjb25kLCBpbmNyZWFzZV9yYXRlX2Jwc19wZXJfc2Vjb25kKTsKIH0KIAotaW50IEFp
bWRSYXRlQ29udHJvbDo6R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RNcygpIGNvbnN0IHsKLSAg
Y29uc3QgaW50IGtNaW5QZXJpb2RNcyA9IHNtb290aGluZ19leHBlcmltZW50XyA/IDUwMCA6IDIw
MDA7Ci0gIGNvbnN0ZXhwciBpbnQga0RlZmF1bHRQZXJpb2RNcyA9IDMwMDA7Ci0gIGNvbnN0ZXhw
ciBpbnQga01heFBlcmlvZE1zID0gNTAwMDA7CitUaW1lRGVsdGEgQWltZFJhdGVDb250cm9sOjpH
ZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZCgpIGNvbnN0IHsKKyAgY29uc3QgVGltZURlbHRhIGtN
aW5QZXJpb2QgPQorICAgICAgc21vb3RoaW5nX2V4cGVyaW1lbnRfID8gVGltZURlbHRhOjptcyg1
MDApIDogVGltZURlbHRhOjpzZWNvbmRzKDIpOworICBjb25zdCBUaW1lRGVsdGEga0RlZmF1bHRQ
ZXJpb2QgPSBUaW1lRGVsdGE6OnNlY29uZHMoMyk7CisgIGNvbnN0IFRpbWVEZWx0YSBrTWF4UGVy
aW9kID0gVGltZURlbHRhOjpzZWNvbmRzKDUwKTsKIAotICBpbnQgaW5jcmVhc2VfcmF0ZSA9IEdl
dE5lYXJNYXhJbmNyZWFzZVJhdGVCcHMoKTsKKyAgZG91YmxlIGluY3JlYXNlX3JhdGVfYnBzX3Bl
cl9zZWNvbmQgPSBHZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzUGVyU2Vjb25kKCk7CiAgIGlmICgh
bGFzdF9kZWNyZWFzZV8pCi0gICAgcmV0dXJuIHNtb290aGluZ19leHBlcmltZW50XyA/IGtNaW5Q
ZXJpb2RNcyA6IGtEZWZhdWx0UGVyaW9kTXM7Ci0KLSAgcmV0dXJuIHN0ZDo6bWluKGtNYXhQZXJp
b2RNcywKLSAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4PGludD4oMTAwMCAqIHN0YXRpY19jYXN0
PGludDY0X3Q+KCpsYXN0X2RlY3JlYXNlXykgLwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5jcmVhc2VfcmF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a01pblBlcmlvZE1zKSk7CisgICAgcmV0dXJuIHNtb290aGluZ19leHBlcmltZW50XyA/IGtNaW5Q
ZXJpb2QgOiBrRGVmYXVsdFBlcmlvZDsKKyAgZG91YmxlIHRpbWVfdG9fcmVjb3Zlcl9kZWNyZWFz
ZV9zZWNvbmRzID0KKyAgICAgIGxhc3RfZGVjcmVhc2VfLT5icHMoKSAvIGluY3JlYXNlX3JhdGVf
YnBzX3Blcl9zZWNvbmQ7CisgIFRpbWVEZWx0YSBwZXJpb2QgPSBUaW1lRGVsdGE6OnNlY29uZHMo
dGltZV90b19yZWNvdmVyX2RlY3JlYXNlX3NlY29uZHMpOworICByZXR1cm4gcGVyaW9kLkNsYW1w
ZWQoa01pblBlcmlvZCwga01heFBlcmlvZCk7CiB9CiAKLXVpbnQzMl90IEFpbWRSYXRlQ29udHJv
bDo6Q2hhbmdlQml0cmF0ZSh1aW50MzJfdCBuZXdfYml0cmF0ZV9icHMsCitEYXRhUmF0ZSBBaW1k
UmF0ZUNvbnRyb2w6OkNoYW5nZUJpdHJhdGUoRGF0YVJhdGUgbmV3X2JpdHJhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmF0ZUNvbnRyb2xJbnB1dCYg
aW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBu
b3dfbXMpIHsKLSAgdWludDMyX3QgZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzID0KLSAgICAgIGlu
cHV0LmVzdGltYXRlZF90aHJvdWdocHV0X2Jwcy52YWx1ZV9vcihsYXRlc3RfZXN0aW1hdGVkX3Ro
cm91Z2hwdXRfYnBzXyk7Ci0gIGlmIChpbnB1dC5lc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpCi0g
ICAgbGF0ZXN0X2VzdGltYXRlZF90aHJvdWdocHV0X2Jwc18gPSAqaW5wdXQuZXN0aW1hdGVkX3Ro
cm91Z2hwdXRfYnBzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRp
bWVzdGFtcCBhdF90aW1lKSB7CisgIERhdGFSYXRlIGVzdGltYXRlZF90aHJvdWdocHV0ID0KKyAg
ICAgIGlucHV0LmVzdGltYXRlZF90aHJvdWdocHV0LnZhbHVlX29yKGxhdGVzdF9lc3RpbWF0ZWRf
dGhyb3VnaHB1dF8pOworICBpZiAoaW5wdXQuZXN0aW1hdGVkX3Rocm91Z2hwdXQpCisgICAgbGF0
ZXN0X2VzdGltYXRlZF90aHJvdWdocHV0XyA9ICppbnB1dC5lc3RpbWF0ZWRfdGhyb3VnaHB1dDsK
IAogICAvLyBBbiBvdmVyLXVzZSBzaG91bGQgYWx3YXlzIHRyaWdnZXIgdXMgdG8gcmVkdWNlIHRo
ZSBiaXRyYXRlLCBldmVuIHRob3VnaAogICAvLyB3ZSBoYXZlIG5vdCB5ZXQgZXN0YWJsaXNoZWQg
b3VyIGZpcnN0IGVzdGltYXRlLiBCeSBhY3Rpbmcgb24gdGhlIG92ZXItdXNlLAogICAvLyB3ZSB3
aWxsIGVuZCB1cCB3aXRoIGEgdmFsaWQgZXN0aW1hdGUuCiAgIGlmICghYml0cmF0ZV9pc19pbml0
aWFsaXplZF8gJiYKICAgICAgIGlucHV0LmJ3X3N0YXRlICE9IEJhbmR3aWR0aFVzYWdlOjprQndP
dmVydXNpbmcpCi0gICAgcmV0dXJuIGN1cnJlbnRfYml0cmF0ZV9icHNfOworICAgIHJldHVybiBj
dXJyZW50X2JpdHJhdGVfOwogCi0gIENoYW5nZVN0YXRlKGlucHV0LCBub3dfbXMpOworICBDaGFu
Z2VTdGF0ZShpbnB1dCwgYXRfdGltZSk7CiAgIC8vIENhbGN1bGF0ZWQgaGVyZSBiZWNhdXNlIGl0
J3MgdXNlZCBpbiBtdWx0aXBsZSBwbGFjZXMuCi0gIGNvbnN0IGZsb2F0IGVzdGltYXRlZF90aHJv
dWdocHV0X2ticHMgPSBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMgLyAxMDAwLjBmOworICBjb25z
dCBkb3VibGUgZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwcyA9IGVzdGltYXRlZF90aHJvdWdocHV0
LmticHM8ZG91YmxlPigpOworCiAgIC8vIENhbGN1bGF0ZSB0aGUgbWF4IGJpdCByYXRlIHN0ZCBk
ZXYgZ2l2ZW4gdGhlIG5vcm1hbGl6ZWQKLSAgLy8gdmFyaWFuY2UgYW5kIHRoZSBjdXJyZW50IHRo
cm91Z2hwdXQgYml0cmF0ZS4KLSAgY29uc3QgZmxvYXQgc3RkX21heF9iaXRfcmF0ZSA9Ci0gICAg
ICBzcXJ0KHZhcl9tYXhfYml0cmF0ZV9rYnBzXyAqIGF2Z19tYXhfYml0cmF0ZV9rYnBzXyk7Cisg
IC8vIHZhcmlhbmNlIGFuZCB0aGUgY3VycmVudCB0aHJvdWdocHV0IGJpdHJhdGUuIFRoZSBzdGFu
ZGFyZCBkZXZpYXRpb24gd2lsbAorICAvLyBvbmx5IGJlIHVzZWQgaWYgbGlua19jYXBhY2l0eV9l
c3RpbWF0ZV9rYnBzXyBoYXMgYSB2YWx1ZS4KKyAgY29uc3QgZG91YmxlIHN0ZF9saW5rX2NhcGFj
aXR5X2ticHMgPQorICAgICAgc3FydCh2YXJfbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXyAq
CisgICAgICAgICAgIGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18udmFsdWVfb3IoMCkpOwog
ICBzd2l0Y2ggKHJhdGVfY29udHJvbF9zdGF0ZV8pIHsKICAgICBjYXNlIGtSY0hvbGQ6CiAgICAg
ICBicmVhazsKIAogICAgIGNhc2Uga1JjSW5jcmVhc2U6Ci0gICAgICBpZiAoYXZnX21heF9iaXRy
YXRlX2ticHNfID49IDAgJiYKLSAgICAgICAgICBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzID4K
LSAgICAgICAgICAgICAgYXZnX21heF9iaXRyYXRlX2ticHNfICsgMyAqIHN0ZF9tYXhfYml0X3Jh
dGUpIHsKLSAgICAgICAgcmF0ZV9jb250cm9sX3JlZ2lvbl8gPSBrUmNNYXhVbmtub3duOwotCi0g
ICAgICAgIGF2Z19tYXhfYml0cmF0ZV9rYnBzXyA9IC0xLjA7CisgICAgICBpZiAobGlua19jYXBh
Y2l0eV9lc3RpbWF0ZV9rYnBzXy5oYXNfdmFsdWUoKSAmJgorICAgICAgICAgIGVzdGltYXRlZF90
aHJvdWdocHV0X2ticHMgPiBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlKCkgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyAqIHN0ZF9saW5rX2Nh
cGFjaXR5X2ticHMpIHsKKyAgICAgICAgLy8gVGhlIGxpbmsgY2FwYWNpdHkgYXBwZWFycyB0byBo
YXZlIGNoYW5nZWQuIEZvcmdldCB0aGUgcHJldmlvdXMKKyAgICAgICAgLy8gZXN0aW1hdGUgYW5k
IHVzZSBtdWx0aXBsaWNhdGl2ZSBpbmNyZWFzZSB0byBxdWlja2x5IGRpc2NvdmVyIG5ldworICAg
ICAgICAvLyBjYXBhY2l0eS4KKyAgICAgICAgbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy5y
ZXNldCgpOwogICAgICAgfQotICAgICAgaWYgKHJhdGVfY29udHJvbF9yZWdpb25fID09IGtSY05l
YXJNYXgpIHsKLSAgICAgICAgdWludDMyX3QgYWRkaXRpdmVfaW5jcmVhc2VfYnBzID0KLSAgICAg
ICAgICAgIEFkZGl0aXZlUmF0ZUluY3JlYXNlKG5vd19tcywgdGltZV9sYXN0X2JpdHJhdGVfY2hh
bmdlXyk7Ci0gICAgICAgIG5ld19iaXRyYXRlX2JwcyArPSBhZGRpdGl2ZV9pbmNyZWFzZV9icHM7
CisgICAgICBpZiAobGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy5oYXNfdmFsdWUoKSkgewor
ICAgICAgICAvLyBUaGUgbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXyBpcyByZXNldCBpZiB0
aGUgbWVhc3VyZWQgdGhyb3VnaHB1dAorICAgICAgICAvLyBpcyB0b28gZmFyIGZyb20gdGhlIGVz
dGltYXRlLiBXZSBjYW4gdGhlcmVmb3JlIGFzc3VtZSB0aGF0IG91ciB0YXJnZXQKKyAgICAgICAg
Ly8gcmF0ZSBpcyByZWFzb25hYmx5IGNsb3NlIHRvIGxpbmsgY2FwYWNpdHkgYW5kIHVzZSBhZGRp
dGl2ZSBpbmNyZWFzZS4KKyAgICAgICAgRGF0YVJhdGUgYWRkaXRpdmVfaW5jcmVhc2UgPQorICAg
ICAgICAgICAgQWRkaXRpdmVSYXRlSW5jcmVhc2UoYXRfdGltZSwgdGltZV9sYXN0X2JpdHJhdGVf
Y2hhbmdlXyk7CisgICAgICAgIG5ld19iaXRyYXRlICs9IGFkZGl0aXZlX2luY3JlYXNlOwogICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgdWludDMyX3QgbXVsdGlwbGljYXRpdmVfaW5jcmVhc2VfYnBz
ID0gTXVsdGlwbGljYXRpdmVSYXRlSW5jcmVhc2UoCi0gICAgICAgICAgICBub3dfbXMsIHRpbWVf
bGFzdF9iaXRyYXRlX2NoYW5nZV8sIG5ld19iaXRyYXRlX2Jwcyk7Ci0gICAgICAgIG5ld19iaXRy
YXRlX2JwcyArPSBtdWx0aXBsaWNhdGl2ZV9pbmNyZWFzZV9icHM7CisgICAgICAgIC8vIElmIHdl
IGRvbid0IGhhdmUgYW4gZXN0aW1hdGUgb2YgdGhlIGxpbmsgY2FwYWNpdHksIHVzZSBmYXN0ZXIg
cmFtcCB1cAorICAgICAgICAvLyB0byBkaXNjb3ZlciB0aGUgY2FwYWNpdHkuCisgICAgICAgIERh
dGFSYXRlIG11bHRpcGxpY2F0aXZlX2luY3JlYXNlID0gTXVsdGlwbGljYXRpdmVSYXRlSW5jcmVh
c2UoCisgICAgICAgICAgICBhdF90aW1lLCB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfLCBuZXdf
Yml0cmF0ZSk7CisgICAgICAgIG5ld19iaXRyYXRlICs9IG11bHRpcGxpY2F0aXZlX2luY3JlYXNl
OwogICAgICAgfQogCi0gICAgICB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfID0gbm93X21zOwor
ICAgICAgdGltZV9sYXN0X2JpdHJhdGVfY2hhbmdlXyA9IGF0X3RpbWU7CiAgICAgICBicmVhazsK
IAogICAgIGNhc2Uga1JjRGVjcmVhc2U6Ci0gICAgICAvLyBTZXQgYml0IHJhdGUgdG8gc29tZXRo
aW5nIHNsaWdodGx5IGxvd2VyIHRoYW4gbWF4CisgICAgICAvLyBTZXQgYml0IHJhdGUgdG8gc29t
ZXRoaW5nIHNsaWdodGx5IGxvd2VyIHRoYW4gdGhlIG1lYXN1cmVkIHRocm91Z2hwdXQKICAgICAg
IC8vIHRvIGdldCByaWQgb2YgYW55IHNlbGYtaW5kdWNlZCBkZWxheS4KLSAgICAgIG5ld19iaXRy
YXRlX2JwcyA9Ci0gICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJldGFfICogZXN0aW1h
dGVkX3Rocm91Z2hwdXRfYnBzICsgMC41KTsKLSAgICAgIGlmIChuZXdfYml0cmF0ZV9icHMgPiBj
dXJyZW50X2JpdHJhdGVfYnBzXykgeworICAgICAgbmV3X2JpdHJhdGUgPSBlc3RpbWF0ZWRfdGhy
b3VnaHB1dCAqIGJldGFfOworICAgICAgaWYgKG5ld19iaXRyYXRlID4gY3VycmVudF9iaXRyYXRl
XykgewogICAgICAgICAvLyBBdm9pZCBpbmNyZWFzaW5nIHRoZSByYXRlIHdoZW4gb3Zlci11c2lu
Zy4KLSAgICAgICAgaWYgKHJhdGVfY29udHJvbF9yZWdpb25fICE9IGtSY01heFVua25vd24pIHsK
LSAgICAgICAgICBuZXdfYml0cmF0ZV9icHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oCi0gICAg
ICAgICAgICAgIGJldGFfICogYXZnX21heF9iaXRyYXRlX2ticHNfICogMTAwMCArIDAuNWYpOwor
ICAgICAgICBpZiAobGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy5oYXNfdmFsdWUoKSkgewor
ICAgICAgICAgIG5ld19iaXRyYXRlID0KKyAgICAgICAgICAgICAgRGF0YVJhdGU6OmticHMoYmV0
YV8gKiBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlKCkpOwogICAgICAgICB9Ci0g
ICAgICAgIG5ld19iaXRyYXRlX2JwcyA9IHN0ZDo6bWluKG5ld19iaXRyYXRlX2JwcywgY3VycmVu
dF9iaXRyYXRlX2Jwc18pOworICAgICAgICBuZXdfYml0cmF0ZSA9IHN0ZDo6bWluKG5ld19iaXRy
YXRlLCBjdXJyZW50X2JpdHJhdGVfKTsKICAgICAgIH0KLSAgICAgIHJhdGVfY29udHJvbF9yZWdp
b25fID0ga1JjTmVhck1heDsKIAotICAgICAgaWYgKGJpdHJhdGVfaXNfaW5pdGlhbGl6ZWRfICYm
Ci0gICAgICAgICAgZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzIDwgY3VycmVudF9iaXRyYXRlX2Jw
c18pIHsKLSAgICAgICAgY29uc3RleHByIGZsb2F0IGtEZWdyYWRhdGlvbkZhY3RvciA9IDAuOWY7
CisgICAgICBpZiAoYml0cmF0ZV9pc19pbml0aWFsaXplZF8gJiYgZXN0aW1hdGVkX3Rocm91Z2hw
dXQgPCBjdXJyZW50X2JpdHJhdGVfKSB7CisgICAgICAgIGNvbnN0ZXhwciBkb3VibGUga0RlZ3Jh
ZGF0aW9uRmFjdG9yID0gMC45OwogICAgICAgICBpZiAoc21vb3RoaW5nX2V4cGVyaW1lbnRfICYm
Ci0gICAgICAgICAgICBuZXdfYml0cmF0ZV9icHMgPAotICAgICAgICAgICAgICAgIGtEZWdyYWRh
dGlvbkZhY3RvciAqIGJldGFfICogY3VycmVudF9iaXRyYXRlX2Jwc18pIHsKKyAgICAgICAgICAg
IG5ld19iaXRyYXRlIDwga0RlZ3JhZGF0aW9uRmFjdG9yICogYmV0YV8gKiBjdXJyZW50X2JpdHJh
dGVfKSB7CiAgICAgICAgICAgLy8gSWYgYml0cmF0ZSBkZWNyZWFzZXMgbW9yZSB0aGFuIGEgbm9y
bWFsIGJhY2sgb2ZmIGFmdGVyIG92ZXJ1c2UsIGl0CiAgICAgICAgICAgLy8gaW5kaWNhdGVzIGEg
cmVhbCBuZXR3b3JrIGRlZ3JhZGF0aW9uLiBXZSBkbyBub3QgbGV0IHN1Y2ggYSBkZWNyZWFzZQog
ICAgICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgYmFuZHdpZHRoIGVzdGltYXRpb24gcGVyaW9k
LgogICAgICAgICAgIGxhc3RfZGVjcmVhc2VfID0gYWJzbDo6bnVsbG9wdDsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICBsYXN0X2RlY3JlYXNlXyA9IGN1cnJlbnRfYml0cmF0ZV9icHNfIC0g
bmV3X2JpdHJhdGVfYnBzOworICAgICAgICAgIGxhc3RfZGVjcmVhc2VfID0gY3VycmVudF9iaXRy
YXRlXyAtIG5ld19iaXRyYXRlOwogICAgICAgICB9CiAgICAgICB9Ci0gICAgICBpZiAoZXN0aW1h
dGVkX3Rocm91Z2hwdXRfa2JwcyA8Ci0gICAgICAgICAgYXZnX21heF9iaXRyYXRlX2ticHNfIC0g
MyAqIHN0ZF9tYXhfYml0X3JhdGUpIHsKLSAgICAgICAgYXZnX21heF9iaXRyYXRlX2ticHNfID0g
LTEuMGY7CisgICAgICBpZiAobGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy5oYXNfdmFsdWUo
KSAmJgorICAgICAgICAgIGVzdGltYXRlZF90aHJvdWdocHV0X2ticHMgPCBsaW5rX2NhcGFjaXR5
X2VzdGltYXRlX2ticHNfLnZhbHVlKCkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMyAqIHN0ZF9saW5rX2NhcGFjaXR5X2ticHMpIHsKKyAgICAgICAgLy8gVGhl
IGN1cnJlbnQgdGhyb3VnaHB1dCBpcyBmYXIgZnJvbSB0aGUgZXN0aW1hdGVkIGxpbmsgY2FwYWNp
dHkuIENsZWFyCisgICAgICAgIC8vIHRoZSBlc3RpbWF0ZSB0byBhbGxvdyBhbiBmYXN0IHVwZGF0
ZSBpbiBVcGRhdGVMaW5rQ2FwYWNpdHlFc3RpbWF0ZS4KKyAgICAgICAgbGlua19jYXBhY2l0eV9l
c3RpbWF0ZV9rYnBzXy5yZXNldCgpOwogICAgICAgfQogCiAgICAgICBiaXRyYXRlX2lzX2luaXRp
YWxpemVkXyA9IHRydWU7Ci0gICAgICBVcGRhdGVNYXhUaHJvdWdocHV0RXN0aW1hdGUoZXN0aW1h
dGVkX3Rocm91Z2hwdXRfa2Jwcyk7CisgICAgICBVcGRhdGVMaW5rQ2FwYWNpdHlFc3RpbWF0ZShl
c3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzKTsKICAgICAgIC8vIFN0YXkgb24gaG9sZCB1bnRpbCB0
aGUgcGlwZXMgYXJlIGNsZWFyZWQuCiAgICAgICByYXRlX2NvbnRyb2xfc3RhdGVfID0ga1JjSG9s
ZDsKLSAgICAgIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8gPSBub3dfbXM7Ci0gICAgICB0aW1l
X2xhc3RfYml0cmF0ZV9kZWNyZWFzZV8gPSBub3dfbXM7CisgICAgICB0aW1lX2xhc3RfYml0cmF0
ZV9jaGFuZ2VfID0gYXRfdGltZTsKKyAgICAgIHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNlXyA9
IGF0X3RpbWU7CiAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CiAgICAgICBhc3NlcnQoZmFs
c2UpOwogICB9Ci0gIHJldHVybiBDbGFtcEJpdHJhdGUobmV3X2JpdHJhdGVfYnBzLCBlc3RpbWF0
ZWRfdGhyb3VnaHB1dF9icHMpOworICByZXR1cm4gQ2xhbXBCaXRyYXRlKG5ld19iaXRyYXRlLCBl
c3RpbWF0ZWRfdGhyb3VnaHB1dCk7CiB9CiAKLXVpbnQzMl90IEFpbWRSYXRlQ29udHJvbDo6Q2xh
bXBCaXRyYXRlKAotICAgIHVpbnQzMl90IG5ld19iaXRyYXRlX2JwcywKLSAgICB1aW50MzJfdCBl
c3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpIGNvbnN0IHsKK0RhdGFSYXRlIEFpbWRSYXRlQ29udHJv
bDo6Q2xhbXBCaXRyYXRlKERhdGFSYXRlIG5ld19iaXRyYXRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGF0YVJhdGUgZXN0aW1hdGVkX3Rocm91Z2hwdXQpIGNvbnN0
IHsKICAgLy8gRG9uJ3QgY2hhbmdlIHRoZSBiaXQgcmF0ZSBpZiB0aGUgc2VuZCBzaWRlIGlzIHRv
byBmYXIgb2ZmLgogICAvLyBXZSBhbGxvdyBhIGJpdCBtb3JlIGxhZyBhdCB2ZXJ5IGxvdyByYXRl
cyB0byBub3QgdG9vIGVhc2lseSBnZXQgc3R1Y2sgaWYKICAgLy8gdGhlIGVuY29kZXIgcHJvZHVj
ZXMgdW5ldmVuIG91dHB1dHMuCi0gIGNvbnN0IHVpbnQzMl90IG1heF9iaXRyYXRlX2JwcyA9Ci0g
ICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oMS41ZiAqIGVzdGltYXRlZF90aHJvdWdocHV0X2Jw
cykgKyAxMDAwMDsKLSAgaWYgKG5ld19iaXRyYXRlX2JwcyA+IGN1cnJlbnRfYml0cmF0ZV9icHNf
ICYmCi0gICAgICBuZXdfYml0cmF0ZV9icHMgPiBtYXhfYml0cmF0ZV9icHMpIHsKLSAgICBuZXdf
Yml0cmF0ZV9icHMgPSBzdGQ6Om1heChjdXJyZW50X2JpdHJhdGVfYnBzXywgbWF4X2JpdHJhdGVf
YnBzKTsKKyAgY29uc3QgRGF0YVJhdGUgbWF4X2JpdHJhdGUgPSAxLjUgKiBlc3RpbWF0ZWRfdGhy
b3VnaHB1dCArIERhdGFSYXRlOjprYnBzKDEwKTsKKyAgaWYgKG5ld19iaXRyYXRlID4gY3VycmVu
dF9iaXRyYXRlXyAmJiBuZXdfYml0cmF0ZSA+IG1heF9iaXRyYXRlKSB7CisgICAgbmV3X2JpdHJh
dGUgPSBzdGQ6Om1heChjdXJyZW50X2JpdHJhdGVfLCBtYXhfYml0cmF0ZSk7CiAgIH0KLSAgbmV3
X2JpdHJhdGVfYnBzID0gc3RkOjptYXgobmV3X2JpdHJhdGVfYnBzLCBtaW5fY29uZmlndXJlZF9i
aXRyYXRlX2Jwc18pOwotICByZXR1cm4gbmV3X2JpdHJhdGVfYnBzOworICBuZXdfYml0cmF0ZSA9
IHN0ZDo6bWF4KG5ld19iaXRyYXRlLCBtaW5fY29uZmlndXJlZF9iaXRyYXRlXyk7CisgIHJldHVy
biBuZXdfYml0cmF0ZTsKIH0KIAotdWludDMyX3QgQWltZFJhdGVDb250cm9sOjpNdWx0aXBsaWNh
dGl2ZVJhdGVJbmNyZWFzZSgKLSAgICBpbnQ2NF90IG5vd19tcywKLSAgICBpbnQ2NF90IGxhc3Rf
bXMsCi0gICAgdWludDMyX3QgY3VycmVudF9iaXRyYXRlX2JwcykgY29uc3QgeworRGF0YVJhdGUg
QWltZFJhdGVDb250cm9sOjpNdWx0aXBsaWNhdGl2ZVJhdGVJbmNyZWFzZSgKKyAgICBUaW1lc3Rh
bXAgYXRfdGltZSwKKyAgICBUaW1lc3RhbXAgbGFzdF90aW1lLAorICAgIERhdGFSYXRlIGN1cnJl
bnRfYml0cmF0ZSkgY29uc3QgewogICBkb3VibGUgYWxwaGEgPSAxLjA4OwotICBpZiAobGFzdF9t
cyA+IC0xKSB7Ci0gICAgYXV0byB0aW1lX3NpbmNlX2xhc3RfdXBkYXRlX21zID0KLSAgICAgICAg
cnRjOjpTYWZlTWluPGludDY0X3Q+KG5vd19tcyAtIGxhc3RfbXMsIDEwMDApOwotICAgIGFscGhh
ID0gcG93KGFscGhhLCB0aW1lX3NpbmNlX2xhc3RfdXBkYXRlX21zIC8gMTAwMC4wKTsKKyAgaWYg
KGxhc3RfdGltZS5Jc0Zpbml0ZSgpKSB7CisgICAgYXV0byB0aW1lX3NpbmNlX2xhc3RfdXBkYXRl
ID0gYXRfdGltZSAtIGxhc3RfdGltZTsKKyAgICBhbHBoYSA9IHBvdyhhbHBoYSwgc3RkOjptaW4o
dGltZV9zaW5jZV9sYXN0X3VwZGF0ZS5zZWNvbmRzPGRvdWJsZT4oKSwgMS4wKSk7CiAgIH0KLSAg
dWludDMyX3QgbXVsdGlwbGljYXRpdmVfaW5jcmVhc2VfYnBzID0KLSAgICAgIHN0ZDo6bWF4KGN1
cnJlbnRfYml0cmF0ZV9icHMgKiAoYWxwaGEgLSAxLjApLCAxMDAwLjApOwotICByZXR1cm4gbXVs
dGlwbGljYXRpdmVfaW5jcmVhc2VfYnBzOworICBEYXRhUmF0ZSBtdWx0aXBsaWNhdGl2ZV9pbmNy
ZWFzZSA9CisgICAgICBzdGQ6Om1heChjdXJyZW50X2JpdHJhdGUgKiAoYWxwaGEgLSAxLjApLCBE
YXRhUmF0ZTo6YnBzKDEwMDApKTsKKyAgcmV0dXJuIG11bHRpcGxpY2F0aXZlX2luY3JlYXNlOwog
fQogCi11aW50MzJfdCBBaW1kUmF0ZUNvbnRyb2w6OkFkZGl0aXZlUmF0ZUluY3JlYXNlKGludDY0
X3Qgbm93X21zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IGxhc3RfbXMpIGNvbnN0IHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90
Pigobm93X21zIC0gbGFzdF9tcykgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
dE5lYXJNYXhJbmNyZWFzZVJhdGVCcHMoKSAvIDEwMDApOworRGF0YVJhdGUgQWltZFJhdGVDb250
cm9sOjpBZGRpdGl2ZVJhdGVJbmNyZWFzZShUaW1lc3RhbXAgYXRfdGltZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGxhc3RfdGltZSkg
Y29uc3QgeworICBkb3VibGUgdGltZV9wZXJpb2Rfc2Vjb25kcyA9IChhdF90aW1lIC0gbGFzdF90
aW1lKS5zZWNvbmRzPGRvdWJsZT4oKTsKKyAgZG91YmxlIGRhdGFfcmF0ZV9pbmNyZWFzZV9icHMg
PQorICAgICAgR2V0TmVhck1heEluY3JlYXNlUmF0ZUJwc1BlclNlY29uZCgpICogdGltZV9wZXJp
b2Rfc2Vjb25kczsKKyAgcmV0dXJuIERhdGFSYXRlOjpicHMoZGF0YV9yYXRlX2luY3JlYXNlX2Jw
cyk7CiB9CiAKLXZvaWQgQWltZFJhdGVDb250cm9sOjpVcGRhdGVNYXhUaHJvdWdocHV0RXN0aW1h
dGUoCi0gICAgZmxvYXQgZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwcykgewotICBjb25zdCBmbG9h
dCBhbHBoYSA9IDAuMDVmOwotICBpZiAoYXZnX21heF9iaXRyYXRlX2ticHNfID09IC0xLjBmKSB7
Ci0gICAgYXZnX21heF9iaXRyYXRlX2ticHNfID0gZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwczsK
K3ZvaWQgQWltZFJhdGVDb250cm9sOjpVcGRhdGVMaW5rQ2FwYWNpdHlFc3RpbWF0ZSgKKyAgICBk
b3VibGUgZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwcykgeworICBjb25zdCBkb3VibGUgYWxwaGEg
PSAwLjA1OworICBpZiAoIWxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18uaGFzX3ZhbHVlKCkp
IHsKKyAgICBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfID0gZXN0aW1hdGVkX3Rocm91Z2hw
dXRfa2JwczsKICAgfSBlbHNlIHsKLSAgICBhdmdfbWF4X2JpdHJhdGVfa2Jwc18gPQotICAgICAg
ICAoMSAtIGFscGhhKSAqIGF2Z19tYXhfYml0cmF0ZV9rYnBzXyArIGFscGhhICogZXN0aW1hdGVk
X3Rocm91Z2hwdXRfa2JwczsKKyAgICBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfID0KKyAg
ICAgICAgKDEgLSBhbHBoYSkgKiBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlKCkg
KworICAgICAgICBhbHBoYSAqIGVzdGltYXRlZF90aHJvdWdocHV0X2ticHM7CiAgIH0KLSAgLy8g
RXN0aW1hdGUgdGhlIG1heCBiaXQgcmF0ZSB2YXJpYW5jZSBhbmQgbm9ybWFsaXplIHRoZSB2YXJp
YW5jZQotICAvLyB3aXRoIHRoZSBhdmVyYWdlIG1heCBiaXQgcmF0ZS4KLSAgY29uc3QgZmxvYXQg
bm9ybSA9IHN0ZDo6bWF4KGF2Z19tYXhfYml0cmF0ZV9rYnBzXywgMS4wZik7Ci0gIHZhcl9tYXhf
Yml0cmF0ZV9rYnBzXyA9Ci0gICAgICAoMSAtIGFscGhhKSAqIHZhcl9tYXhfYml0cmF0ZV9rYnBz
XyArCi0gICAgICBhbHBoYSAqIChhdmdfbWF4X2JpdHJhdGVfa2Jwc18gLSBlc3RpbWF0ZWRfdGhy
b3VnaHB1dF9rYnBzKSAqCi0gICAgICAgICAgKGF2Z19tYXhfYml0cmF0ZV9rYnBzXyAtIGVzdGlt
YXRlZF90aHJvdWdocHV0X2ticHMpIC8gbm9ybTsKKyAgLy8gRXN0aW1hdGUgdGhlIHZhcmlhbmNl
IG9mIHRoZSBsaW5rIGNhcGFjaXR5IGVzdGltYXRlIGFuZCBub3JtYWxpemUgdGhlCisgIC8vIHZh
cmlhbmNlIHdpdGggdGhlIGxpbmsgY2FwYWNpdHkgZXN0aW1hdGUuCisgIGNvbnN0IGRvdWJsZSBu
b3JtID0gc3RkOjptYXgobGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy52YWx1ZSgpLCAxLjAp
OworICB2YXJfbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXyA9CisgICAgICAoMSAtIGFscGhh
KSAqIHZhcl9saW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfICsKKyAgICAgIGFscGhhICoKKyAg
ICAgICAgICAobGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy52YWx1ZSgpIC0gZXN0aW1hdGVk
X3Rocm91Z2hwdXRfa2JwcykgKgorICAgICAgICAgIChsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ti
cHNfLnZhbHVlKCkgLSBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzKSAvCisgICAgICAgICAgbm9y
bTsKICAgLy8gMC40IH49IDE0IGtiaXQvcyBhdCA1MDAga2JpdC9zCi0gIGlmICh2YXJfbWF4X2Jp
dHJhdGVfa2Jwc18gPCAwLjRmKSB7Ci0gICAgdmFyX21heF9iaXRyYXRlX2ticHNfID0gMC40ZjsK
KyAgaWYgKHZhcl9saW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfIDwgMC40KSB7CisgICAgdmFy
X2xpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18gPSAwLjQ7CiAgIH0KLSAgLy8gMi41ZiB+PSAz
NSBrYml0L3MgYXQgNTAwIGtiaXQvcwotICBpZiAodmFyX21heF9iaXRyYXRlX2ticHNfID4gMi41
ZikgewotICAgIHZhcl9tYXhfYml0cmF0ZV9rYnBzXyA9IDIuNWY7CisgIC8vIDIuNSB+PSAzNSBr
Yml0L3MgYXQgNTAwIGtiaXQvcworICBpZiAodmFyX2xpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jw
c18gPiAyLjUpIHsKKyAgICB2YXJfbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXyA9IDIuNTsK
ICAgfQogfQogCiB2b2lkIEFpbWRSYXRlQ29udHJvbDo6Q2hhbmdlU3RhdGUoY29uc3QgUmF0ZUNv
bnRyb2xJbnB1dCYgaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCBub3dfbXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3Rh
bXAgYXRfdGltZSkgewogICBzd2l0Y2ggKGlucHV0LmJ3X3N0YXRlKSB7CiAgICAgY2FzZSBCYW5k
d2lkdGhVc2FnZTo6a0J3Tm9ybWFsOgogICAgICAgaWYgKHJhdGVfY29udHJvbF9zdGF0ZV8gPT0g
a1JjSG9sZCkgewotICAgICAgICB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfID0gbm93X21zOwor
ICAgICAgICB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfID0gYXRfdGltZTsKICAgICAgICAgcmF0
ZV9jb250cm9sX3N0YXRlXyA9IGtSY0luY3JlYXNlOwogICAgICAgfQogICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0
ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRyb2wuaAppbmRleCAyYTNmNzFkOThhZThhNzU1OGEx
NTJmZDc1NGViODE3YjQxOTYwOTQ2Li5hZGI5NTlhMTRiOWMzOGIwNThlNWUwNjFhZmI5ZWRhY2U1
ZmZiZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sLmgKQEAgLTExLDggKzEx
LDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX0FJTURfUkFU
RV9DT05UUk9MX0hfCiAjZGVmaW5lIE1PRFVMRVNfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX0FJ
TURfUkFURV9DT05UUk9MX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgImFi
c2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3Ry
dWN0b3JtYWdpYy5oIgorCisjaW5jbHVkZSAiYXBpL3VuaXRzL2RhdGFfcmF0ZS5oIgorI2luY2x1
ZGUgImFwaS91bml0cy90aW1lc3RhbXAuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTMw
LDI4ICszNSwyOCBAQCBjbGFzcyBBaW1kUmF0ZUNvbnRyb2wgewogICAvLyBlaXRoZXIgaWYgaXQg
aGFzIGJlZW4gZXhwbGljaXRseSBzZXQgdmlhIFNldFN0YXJ0Qml0cmF0ZS9TZXRFc3RpbWF0ZSwg
b3IgaWYKICAgLy8gd2UgaGF2ZSBtZWFzdXJlZCBhIHRocm91Z2hwdXQuCiAgIGJvb2wgVmFsaWRF
c3RpbWF0ZSgpIGNvbnN0OwotICB2b2lkIFNldFN0YXJ0Qml0cmF0ZShpbnQgc3RhcnRfYml0cmF0
ZV9icHMpOwotICB2b2lkIFNldE1pbkJpdHJhdGUoaW50IG1pbl9iaXRyYXRlX2Jwcyk7Ci0gIGlu
dDY0X3QgR2V0RmVlZGJhY2tJbnRlcnZhbCgpIGNvbnN0OworICB2b2lkIFNldFN0YXJ0Qml0cmF0
ZShEYXRhUmF0ZSBzdGFydF9iaXRyYXRlKTsKKyAgdm9pZCBTZXRNaW5CaXRyYXRlKERhdGFSYXRl
IG1pbl9iaXRyYXRlKTsKKyAgVGltZURlbHRhIEdldEZlZWRiYWNrSW50ZXJ2YWwoKSBjb25zdDsK
IAogICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGJpdHJhdGUgZXN0aW1hdGUgaGFzbid0IGJlZW4g
Y2hhbmdlZCBmb3IgbW9yZSB0aGFuCiAgIC8vIGFuIFJUVCwgb3IgaWYgdGhlIGVzdGltYXRlZF90
aHJvdWdocHV0IGlzIGxlc3MgdGhhbiBoYWxmIG9mIHRoZSBjdXJyZW50CiAgIC8vIGVzdGltYXRl
LiBTaG91bGQgYmUgdXNlZCB0byBkZWNpZGUgaWYgd2Ugc2hvdWxkIHJlZHVjZSB0aGUgcmF0ZSBm
dXJ0aGVyCiAgIC8vIHdoZW4gb3Zlci11c2luZy4KLSAgYm9vbCBUaW1lVG9SZWR1Y2VGdXJ0aGVy
KGludDY0X3Qgbm93X21zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZXN0
aW1hdGVkX3Rocm91Z2hwdXRfYnBzKSBjb25zdDsKKyAgYm9vbCBUaW1lVG9SZWR1Y2VGdXJ0aGVy
KFRpbWVzdGFtcCBhdF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVJhdGUg
ZXN0aW1hdGVkX3Rocm91Z2hwdXQpIGNvbnN0OwogICAvLyBBcyBhYm92ZS4gVG8gYmUgdXNlZCBp
ZiBvdmVydXNpbmcgYmVmb3JlIHdlIGhhdmUgbWVhc3VyZWQgYSB0aHJvdWdocHV0LgotICBib29s
IEluaXRpYWxUaW1lVG9SZWR1Y2VGdXJ0aGVyKGludDY0X3Qgbm93X21zKSBjb25zdDsKKyAgYm9v
bCBJbml0aWFsVGltZVRvUmVkdWNlRnVydGhlcihUaW1lc3RhbXAgYXRfdGltZSkgY29uc3Q7CiAK
LSAgdWludDMyX3QgTGF0ZXN0RXN0aW1hdGUoKSBjb25zdDsKLSAgdm9pZCBTZXRSdHQoaW50NjRf
dCBydHQpOwotICB1aW50MzJfdCBVcGRhdGUoY29uc3QgUmF0ZUNvbnRyb2xJbnB1dCogaW5wdXQs
IGludDY0X3Qgbm93X21zKTsKLSAgdm9pZCBTZXRFc3RpbWF0ZShpbnQgYml0cmF0ZV9icHMsIGlu
dDY0X3Qgbm93X21zKTsKKyAgRGF0YVJhdGUgTGF0ZXN0RXN0aW1hdGUoKSBjb25zdDsKKyAgdm9p
ZCBTZXRSdHQoVGltZURlbHRhIHJ0dCk7CisgIERhdGFSYXRlIFVwZGF0ZShjb25zdCBSYXRlQ29u
dHJvbElucHV0KiBpbnB1dCwgVGltZXN0YW1wIGF0X3RpbWUpOworICB2b2lkIFNldEVzdGltYXRl
KERhdGFSYXRlIGJpdHJhdGUsIFRpbWVzdGFtcCBhdF90aW1lKTsKIAogICAvLyBSZXR1cm5zIHRo
ZSBpbmNyZWFzZSByYXRlIHdoZW4gdXNlZCBiYW5kd2lkdGggaXMgbmVhciB0aGUgbGluayBjYXBh
Y2l0eS4KLSAgaW50IEdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHMoKSBjb25zdDsKKyAgZG91Ymxl
IEdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJTZWNvbmQoKSBjb25zdDsKICAgLy8gUmV0dXJu
cyB0aGUgZXhwZWN0ZWQgdGltZSBiZXR3ZWVuIG92ZXJ1c2Ugc2lnbmFscyAoYXNzdW1pbmcgc3Rl
YWR5IHN0YXRlKS4KLSAgaW50IEdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMoKSBjb25zdDsK
KyAgVGltZURlbHRhIEdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkgY29uc3Q7CiAKICBwcml2
YXRlOgogICBmcmllbmQgY2xhc3MgR29vZ0NjU3RhdGVQcmludGVyOwpAQCAtNjIsNDEgKzY3LDQw
IEBAIGNsYXNzIEFpbWRSYXRlQ29udHJvbCB7CiAgIC8vIGluIHRoZSAiZGVjcmVhc2UiIHN0YXRl
IHRoZSBiaXRyYXRlIHdpbGwgYmUgZGVjcmVhc2VkIHRvIHNsaWdodGx5IGJlbG93IHRoZQogICAv
LyBjdXJyZW50IHRocm91Z2hwdXQuIFdoZW4gaW4gdGhlICJob2xkIiBzdGF0ZSB0aGUgYml0cmF0
ZSB3aWxsIGJlIGtlcHQKICAgLy8gY29uc3RhbnQgdG8gYWxsb3cgYnVpbHQgdXAgcXVldWVzIHRv
IGRyYWluLgotICB1aW50MzJfdCBDaGFuZ2VCaXRyYXRlKHVpbnQzMl90IGN1cnJlbnRfYml0cmF0
ZSwKKyAgRGF0YVJhdGUgQ2hhbmdlQml0cmF0ZShEYXRhUmF0ZSBjdXJyZW50X2JpdHJhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmF0ZUNvbnRyb2xJbnB1dCYgaW5wdXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBub3dfbXMpOwotICAvLyBDbGFtcHMgbmV3
X2JpdHJhdGVfYnBzIHRvIHdpdGhpbiB0aGUgY29uZmlndXJlZCBtaW4gYml0cmF0ZSBhbmQgYSBs
aW5lYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSk7CisgIC8v
IENsYW1wcyBuZXdfYml0cmF0ZSB0byB3aXRoaW4gdGhlIGNvbmZpZ3VyZWQgbWluIGJpdHJhdGUg
YW5kIGEgbGluZWFyCiAgIC8vIGZ1bmN0aW9uIG9mIHRoZSB0aHJvdWdocHV0LCBzbyB0aGF0IHRo
ZSBuZXcgYml0cmF0ZSBjYW4ndCBncm93IHRvbwogICAvLyBsYXJnZSBjb21wYXJlZCB0byB0aGUg
Yml0cmF0ZSBhY3R1YWxseSBiZWluZyByZWNlaXZlZCBieSB0aGUgb3RoZXIgZW5kLgotICB1aW50
MzJfdCBDbGFtcEJpdHJhdGUodWludDMyX3QgbmV3X2JpdHJhdGVfYnBzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzKSBjb25zdDsKLSAg
dWludDMyX3QgTXVsdGlwbGljYXRpdmVSYXRlSW5jcmVhc2UoaW50NjRfdCBub3dfbXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgbGFzdF9tcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY3VycmVudF9iaXRyYXRl
X2JwcykgY29uc3Q7Ci0gIHVpbnQzMl90IEFkZGl0aXZlUmF0ZUluY3JlYXNlKGludDY0X3Qgbm93
X21zLCBpbnQ2NF90IGxhc3RfbXMpIGNvbnN0OwotICB2b2lkIFVwZGF0ZUNoYW5nZVBlcmlvZChp
bnQ2NF90IG5vd19tcyk7Ci0gIHZvaWQgVXBkYXRlTWF4VGhyb3VnaHB1dEVzdGltYXRlKGZsb2F0
IGVzdGltYXRlZF90aHJvdWdocHV0X2ticHMpOwotICB2b2lkIENoYW5nZVN0YXRlKGNvbnN0IFJh
dGVDb250cm9sSW5wdXQmIGlucHV0LCBpbnQ2NF90IG5vd19tcyk7CisgIERhdGFSYXRlIENsYW1w
Qml0cmF0ZShEYXRhUmF0ZSBuZXdfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERh
dGFSYXRlIGVzdGltYXRlZF90aHJvdWdocHV0KSBjb25zdDsKKyAgRGF0YVJhdGUgTXVsdGlwbGlj
YXRpdmVSYXRlSW5jcmVhc2UoVGltZXN0YW1wIGF0X3RpbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBsYXN0X21zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSBjdXJyZW50X2JpdHJhdGUpIGNvbnN0OworICBE
YXRhUmF0ZSBBZGRpdGl2ZVJhdGVJbmNyZWFzZShUaW1lc3RhbXAgYXRfdGltZSwgVGltZXN0YW1w
IGxhc3RfdGltZSkgY29uc3Q7CisgIHZvaWQgVXBkYXRlQ2hhbmdlUGVyaW9kKFRpbWVzdGFtcCBh
dF90aW1lKTsKKyAgdm9pZCBVcGRhdGVMaW5rQ2FwYWNpdHlFc3RpbWF0ZShkb3VibGUgZXN0aW1h
dGVkX3Rocm91Z2hwdXRfa2Jwcyk7CisgIHZvaWQgQ2hhbmdlU3RhdGUoY29uc3QgUmF0ZUNvbnRy
b2xJbnB1dCYgaW5wdXQsIFRpbWVzdGFtcCBhdF90aW1lKTsKIAotICB1aW50MzJfdCBtaW5fY29u
ZmlndXJlZF9iaXRyYXRlX2Jwc187Ci0gIHVpbnQzMl90IG1heF9jb25maWd1cmVkX2JpdHJhdGVf
YnBzXzsKLSAgdWludDMyX3QgY3VycmVudF9iaXRyYXRlX2Jwc187Ci0gIHVpbnQzMl90IGxhdGVz
dF9lc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHNfOwotICBmbG9hdCBhdmdfbWF4X2JpdHJhdGVfa2Jw
c187Ci0gIGZsb2F0IHZhcl9tYXhfYml0cmF0ZV9rYnBzXzsKKyAgRGF0YVJhdGUgbWluX2NvbmZp
Z3VyZWRfYml0cmF0ZV87CisgIERhdGFSYXRlIG1heF9jb25maWd1cmVkX2JpdHJhdGVfOworICBE
YXRhUmF0ZSBjdXJyZW50X2JpdHJhdGVfOworICBEYXRhUmF0ZSBsYXRlc3RfZXN0aW1hdGVkX3Ro
cm91Z2hwdXRfOworICBhYnNsOjpvcHRpb25hbDxkb3VibGU+IGxpbmtfY2FwYWNpdHlfZXN0aW1h
dGVfa2Jwc187CisgIGRvdWJsZSB2YXJfbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXzsKICAg
UmF0ZUNvbnRyb2xTdGF0ZSByYXRlX2NvbnRyb2xfc3RhdGVfOwotICBSYXRlQ29udHJvbFJlZ2lv
biByYXRlX2NvbnRyb2xfcmVnaW9uXzsKLSAgaW50NjRfdCB0aW1lX2xhc3RfYml0cmF0ZV9jaGFu
Z2VfOwotICBpbnQ2NF90IHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNlXzsKLSAgaW50NjRfdCB0
aW1lX2ZpcnN0X3Rocm91Z2hwdXRfZXN0aW1hdGVfOworICBUaW1lc3RhbXAgdGltZV9sYXN0X2Jp
dHJhdGVfY2hhbmdlXzsKKyAgVGltZXN0YW1wIHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNlXzsK
KyAgVGltZXN0YW1wIHRpbWVfZmlyc3RfdGhyb3VnaHB1dF9lc3RpbWF0ZV87CiAgIGJvb2wgYml0
cmF0ZV9pc19pbml0aWFsaXplZF87Ci0gIGZsb2F0IGJldGFfOwotICBpbnQ2NF90IHJ0dF87Cisg
IGRvdWJsZSBiZXRhXzsKKyAgVGltZURlbHRhIHJ0dF87CiAgIGNvbnN0IGJvb2wgaW5fZXhwZXJp
bWVudF87CiAgIGNvbnN0IGJvb2wgc21vb3RoaW5nX2V4cGVyaW1lbnRfOwogICBjb25zdCBib29s
IGluX2luaXRpYWxfYmFja29mZl9pbnRlcnZhbF9leHBlcmltZW50XzsKLSAgaW50NjRfdCBpbml0
aWFsX2JhY2tvZmZfaW50ZXJ2YWxfbXNfOwotICBhYnNsOjpvcHRpb25hbDxpbnQ+IGxhc3RfZGVj
cmVhc2VfOworICBUaW1lRGVsdGEgaW5pdGlhbF9iYWNrb2ZmX2ludGVydmFsXzsKKyAgYWJzbDo6
b3B0aW9uYWw8RGF0YVJhdGU+IGxhc3RfZGVjcmVhc2VfOwogfTsKIH0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRyb2xf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbF91bml0dGVz
dC5jYwppbmRleCA1Y2RlN2NlZGFmNDkyZGJkYTVhM2YzYmIwZjMwZDdlMTFlNWUwMDcyLi40YmVj
OWU4ZmY1MDA3ODFkMjUzZjVjZDM0NzVhNjI3YjIwMmQ0YjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvci9haW1kX3JhdGVfY29udHJvbF91bml0dGVzdC5jYwpAQCAtNDAsMTMgKzQwLDI2IEBA
IEFpbWRSYXRlQ29udHJvbFN0YXRlcyBDcmVhdGVBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKSB7CiAg
IHN0YXRlcy5zaW11bGF0ZWRfY2xvY2sucmVzZXQobmV3IFNpbXVsYXRlZENsb2NrKGtDbG9ja0lu
aXRpYWxUaW1lKSk7CiAgIHJldHVybiBzdGF0ZXM7CiB9Ci0KK2Fic2w6Om9wdGlvbmFsPERhdGFS
YXRlPiBPcHRpb25hbFJhdGVGcm9tT3B0aW9uYWxCcHMoCisgICAgYWJzbDo6b3B0aW9uYWw8aW50
PiBiaXRyYXRlX2JwcykgeworICBpZiAoYml0cmF0ZV9icHMpIHsKKyAgICByZXR1cm4gRGF0YVJh
dGU6OmJwcygqYml0cmF0ZV9icHMpOworICB9IGVsc2UgeworICAgIHJldHVybiBhYnNsOjpudWxs
b3B0OworICB9Cit9CiB2b2lkIFVwZGF0ZVJhdGVDb250cm9sKGNvbnN0IEFpbWRSYXRlQ29udHJv
bFN0YXRlcyYgc3RhdGVzLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYW5kd2lkdGhV
c2FnZSYgYmFuZHdpZHRoX3VzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRp
b25hbDx1aW50MzJfdD4gdGhyb3VnaHB1dF9lc3RpbWF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBub3dfbXMpIHsKLSAgUmF0ZUNvbnRyb2xJbnB1dCBpbnB1dChiYW5kd2lkdGhf
dXNhZ2UsIHRocm91Z2hwdXRfZXN0aW1hdGUpOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wt
PlVwZGF0ZSgmaW5wdXQsIG5vd19tcyk7CisgIFJhdGVDb250cm9sSW5wdXQgaW5wdXQoYmFuZHdp
ZHRoX3VzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsUmF0ZUZyb21PcHRp
b25hbEJwcyh0aHJvdWdocHV0X2VzdGltYXRlKSk7CisgIHN0YXRlcy5haW1kX3JhdGVfY29udHJv
bC0+VXBkYXRlKCZpbnB1dCwgVGltZXN0YW1wOjptcyhub3dfbXMpKTsKK30KK3ZvaWQgU2V0RXN0
aW1hdGUoY29uc3QgQWltZFJhdGVDb250cm9sU3RhdGVzJiBzdGF0ZXMsIGludCBiaXRyYXRlX2Jw
cykgeworICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAorICAgICAgRGF0
YVJhdGU6OmJwcyhiaXRyYXRlX2JwcyksCisgICAgICBUaW1lc3RhbXA6Om1zKHN0YXRlcy5zaW11
bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFj
ZQpAQCAtNTQsNDAgKzY3LDQwIEBAIHZvaWQgVXBkYXRlUmF0ZUNvbnRyb2woY29uc3QgQWltZFJh
dGVDb250cm9sU3RhdGVzJiBzdGF0ZXMsCiBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIE1pbk5l
YXJNYXhJbmNyZWFzZVJhdGVPbkxvd0JhbmR3aXRoKSB7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRl
QWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0JpdHJhdGUgPSAzMDAw
MDsKLSAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRFc3RpbWF0ZSgKLSAgICAgIGtCaXRy
YXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Ci0gIEVY
UEVDVF9FUSg0MDAwLCBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldE5lYXJNYXhJbmNyZWFz
ZVJhdGVCcHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRlcywga0JpdHJhdGUpOworICBFWFBFQ1Rf
RVEoNDAwMCwKKyAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0TmVhck1h
eEluY3JlYXNlUmF0ZUJwc1BlclNlY29uZCgpKTsKIH0KIAogVEVTVChBaW1kUmF0ZUNvbnRyb2xU
ZXN0LCBOZWFyTWF4SW5jcmVhc2VSYXRlSXM1a2Jwc09uOTBrYnBzQW5kMjAwbXNSdHQpIHsKICAg
YXV0byBzdGF0ZXMgPSBDcmVhdGVBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKTsKICAgY29uc3RleHBy
IGludCBrQml0cmF0ZSA9IDkwMDAwOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVz
dGltYXRlKAotICAgICAga0JpdHJhdGUsIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1p
bGxpc2Vjb25kcygpKTsKLSAgRVhQRUNUX0VRKDUwMDAsIHN0YXRlcy5haW1kX3JhdGVfY29udHJv
bC0+R2V0TmVhck1heEluY3JlYXNlUmF0ZUJwcygpKTsKKyAgU2V0RXN0aW1hdGUoc3RhdGVzLCBr
Qml0cmF0ZSk7CisgIEVYUEVDVF9FUSg1MDAwLAorICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0
ZV9jb250cm9sLT5HZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzUGVyU2Vjb25kKCkpOwogfQogCiBU
RVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIE5lYXJNYXhJbmNyZWFzZVJhdGVJczVrYnBzT242MGti
cHNBbmQxMDBtc1J0dCkgewogICBhdXRvIHN0YXRlcyA9IENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0
YXRlcygpOwogICBjb25zdGV4cHIgaW50IGtCaXRyYXRlID0gNjAwMDA7Ci0gIHN0YXRlcy5haW1k
X3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCi0gICAgICBrQml0cmF0ZSwgc3RhdGVzLnNpbXVs
YXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwotICBzdGF0ZXMuYWltZF9yYXRlX2Nv
bnRyb2wtPlNldFJ0dCgxMDApOwotICBFWFBFQ1RfRVEoNTAwMCwgc3RhdGVzLmFpbWRfcmF0ZV9j
b250cm9sLT5HZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0
ZXMsIGtCaXRyYXRlKTsKKyAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRSdHQoVGltZURl
bHRhOjptcygxMDApKTsKKyAgRVhQRUNUX0VRKDUwMDAsCisgICAgICAgICAgICBzdGF0ZXMuYWlt
ZF9yYXRlX2NvbnRyb2wtPkdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJTZWNvbmQoKSk7CiB9
CiAKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgR2V0SW5jcmVhc2VSYXRlQW5kQmFuZHdpZHRo
UGVyaW9kKSB7CiAgIC8vIFNtb290aGluZyBleHBlcmltZW50IGRpc2FibGVkCiAgIGF1dG8gc3Rh
dGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0Jp
dHJhdGUgPSAzMDAwMDA7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUo
Ci0gICAgICBrQml0cmF0ZSwgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNv
bmRzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0ZXMsIGtCaXRyYXRlKTsKICAgVXBkYXRlUmF0ZUNv
bnRyb2woc3RhdGVzLCBCYW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5nLCBrQml0cmF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNv
bmRzKCkpOwotICBFWFBFQ1RfTkVBUigxNDAwMCwgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5H
ZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzKCksCisgIEVYUEVDVF9ORUFSKDE0MDAwLAorICAgICAg
ICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldE5lYXJNYXhJbmNyZWFzZVJhdGVC
cHNQZXJTZWNvbmQoKSwKICAgICAgICAgICAgICAgMTAwMCk7CiAgIEVYUEVDVF9FUShrRGVmYXVs
dFBlcmlvZE1zTm9TbW9vdGhpbmdFeHAsCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2Nv
bnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0
ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7
CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgR2V0SW5jcmVhc2VSYXRlQW5kQmFuZHdp
ZHRoUGVyaW9kU21vb3RoaW5nRXhwKSB7CkBAIC05NSwyMSArMTA4LDIwIEBAIFRFU1QoQWltZFJh
dGVDb250cm9sVGVzdCwgR2V0SW5jcmVhc2VSYXRlQW5kQmFuZHdpZHRoUGVyaW9kU21vb3RoaW5n
RXhwKSB7CiAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscyhr
U21vb3RoaW5nRXhwRmllbGRUcmlhbCk7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVD
b250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0JpdHJhdGUgPSAzMDAwMDA7Ci0gIHN0
YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCi0gICAgICBrQml0cmF0ZSwgc3Rh
dGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOworICBTZXRFc3RpbWF0
ZShzdGF0ZXMsIGtCaXRyYXRlKTsKICAgVXBkYXRlUmF0ZUNvbnRyb2woc3RhdGVzLCBCYW5kd2lk
dGhVc2FnZTo6a0J3T3ZlcnVzaW5nLCBrQml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgc3Rh
dGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwotICBFWFBFQ1RfTkVB
UigxNDAwMCwgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXROZWFyTWF4SW5jcmVhc2VSYXRl
QnBzKCksCisgIEVYUEVDVF9ORUFSKDE0MDAwLAorICAgICAgICAgICAgICBzdGF0ZXMuYWltZF9y
YXRlX2NvbnRyb2wtPkdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJTZWNvbmQoKSwKICAgICAg
ICAgICAgICAgMTAwMCk7CiAgIEVYUEVDVF9FUShrTWluQndlUGVyaW9kTXNTbW9vdGhpbmdFeHAs
Ci0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdp
ZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdl
dEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250
cm9sVGVzdCwgQndlTGltaXRlZEJ5QWNrZWRCaXRyYXRlKSB7CiAgIGF1dG8gc3RhdGVzID0gQ3Jl
YXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0Fja2VkQml0cmF0
ZSA9IDEwMDAwOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAg
ICAga0Fja2VkQml0cmF0ZSwgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNv
bmRzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0ZXMsIGtBY2tlZEJpdHJhdGUpOwogICB3aGlsZSAo
c3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkgLSBrQ2xvY2tJbml0
aWFsVGltZSA8CiAgICAgICAgICAyMDAwMCkgewogICAgIFVwZGF0ZVJhdGVDb250cm9sKHN0YXRl
cywgQmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1hbCwga0Fja2VkQml0cmF0ZSwKQEAgLTExOCwxNCAr
MTMwLDEzIEBAIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgQndlTGltaXRlZEJ5QWNrZWRCaXRy
YXRlKSB7CiAgIH0KICAgQVNTRVJUX1RSVUUoc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5WYWxp
ZEVzdGltYXRlKCkpOwogICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEuNSAqIGtB
Y2tlZEJpdHJhdGUgKyAxMDAwMCksCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRy
b2wtPkxhdGVzdEVzdGltYXRlKCkpOworICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250
cm9sLT5MYXRlc3RFc3RpbWF0ZSgpLmJwcygpKTsKIH0KIAogVEVTVChBaW1kUmF0ZUNvbnRyb2xU
ZXN0LCBCd2VOb3RMaW1pdGVkQnlEZWNyZWFzaW5nQWNrZWRCaXRyYXRlKSB7CiAgIGF1dG8gc3Rh
dGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0Fj
a2VkQml0cmF0ZSA9IDEwMDAwMDsKLSAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRFc3Rp
bWF0ZSgKLSAgICAgIGtBY2tlZEJpdHJhdGUsIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJ
bk1pbGxpc2Vjb25kcygpKTsKKyAgU2V0RXN0aW1hdGUoc3RhdGVzLCBrQWNrZWRCaXRyYXRlKTsK
ICAgd2hpbGUgKHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpIC0g
a0Nsb2NrSW5pdGlhbFRpbWUgPAogICAgICAgICAgMjAwMDApIHsKICAgICBVcGRhdGVSYXRlQ29u
dHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdlOjprQndOb3JtYWwsIGtBY2tlZEJpdHJhdGUsCkBA
IC0xMzUsMTAgKzE0NiwxMCBAQCBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIEJ3ZU5vdExpbWl0
ZWRCeURlY3JlYXNpbmdBY2tlZEJpdHJhdGUpIHsKICAgQVNTRVJUX1RSVUUoc3RhdGVzLmFpbWRf
cmF0ZV9jb250cm9sLT5WYWxpZEVzdGltYXRlKCkpOwogICAvLyBJZiB0aGUgYWNrZWQgYml0cmF0
ZSBkZWNyZWFzZXMgdGhlIEJXRSBzaG91bGRuJ3QgYmUgcmVkdWNlZCB0byAxLjV4CiAgIC8vIHdo
YXQncyBiZWluZyBhY2tlZCwgYnV0IGFsc28gc2hvdWxkbid0IGdldCB0byBpbmNyZWFzZSBtb3Jl
LgotICB1aW50MzJfdCBwcmV2X2VzdGltYXRlID0gc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5M
YXRlc3RFc3RpbWF0ZSgpOworICB1aW50MzJfdCBwcmV2X2VzdGltYXRlID0gc3RhdGVzLmFpbWRf
cmF0ZV9jb250cm9sLT5MYXRlc3RFc3RpbWF0ZSgpLmJwcygpOwogICBVcGRhdGVSYXRlQ29udHJv
bChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdlOjprQndOb3JtYWwsIGtBY2tlZEJpdHJhdGUgLyAyLAog
ICAgICAgICAgICAgICAgICAgICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNl
Y29uZHMoKSk7Ci0gIHVpbnQzMl90IG5ld19lc3RpbWF0ZSA9IHN0YXRlcy5haW1kX3JhdGVfY29u
dHJvbC0+TGF0ZXN0RXN0aW1hdGUoKTsKKyAgdWludDMyX3QgbmV3X2VzdGltYXRlID0gc3RhdGVz
LmFpbWRfcmF0ZV9jb250cm9sLT5MYXRlc3RFc3RpbWF0ZSgpLmJwcygpOwogICBFWFBFQ1RfTkVB
UihuZXdfZXN0aW1hdGUsIHN0YXRpY19jYXN0PHVpbnQzMl90PigxLjUgKiBrQWNrZWRCaXRyYXRl
ICsgMTAwMDApLAogICAgICAgICAgICAgICAyMDAwKTsKICAgRVhQRUNUX0VRKG5ld19lc3RpbWF0
ZSwgcHJldl9lc3RpbWF0ZSk7CkBAIC0xNDcsMzUgKzE1OCwzNCBAQCBURVNUKEFpbWRSYXRlQ29u
dHJvbFRlc3QsIEJ3ZU5vdExpbWl0ZWRCeURlY3JlYXNpbmdBY2tlZEJpdHJhdGUpIHsKIFRFU1Qo
QWltZFJhdGVDb250cm9sVGVzdCwgRGVmYXVsdFBlcmlvZFVudGlsRmlyc3RPdmVydXNlKSB7CiAg
IC8vIFNtb290aGluZyBleHBlcmltZW50IGRpc2FibGVkCiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRl
QWltZFJhdGVDb250cm9sU3RhdGVzKCk7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0
U3RhcnRCaXRyYXRlKDMwMDAwMCk7CisgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0U3Rh
cnRCaXRyYXRlKERhdGFSYXRlOjprYnBzKDMwMCkpOwogICBFWFBFQ1RfRVEoa0RlZmF1bHRQZXJp
b2RNc05vU21vb3RoaW5nRXhwLAotICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9s
LT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZE1zKCkpOworICAgICAgICAgICAgc3RhdGVzLmFp
bWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZCgpLm1zKCkpOwogICBz
dGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDApOwogICBV
cGRhdGVSYXRlQ29udHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmcsIDI4
MDAwMCwKICAgICAgICAgICAgICAgICAgICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUlu
TWlsbGlzZWNvbmRzKCkpOwogICBFWFBFQ1RfTkUoa0RlZmF1bHRQZXJpb2RNc05vU21vb3RoaW5n
RXhwLAotICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJh
bmR3aWR0aFBlcmlvZE1zKCkpOworICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9s
LT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZCgpLm1zKCkpOwogfQogCiBURVNUKEFpbWRSYXRl
Q29udHJvbFRlc3QsIE1pblBlcmlvZFVudGlsRmlyc3RPdmVydXNlU21vb3RoaW5nRXhwKSB7CiAg
IC8vIFNtb290aGluZyBleHBlcmltZW50IGVuYWJsZWQKICAgdGVzdDo6U2NvcGVkRmllbGRUcmlh
bHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKGtTbW9vdGhpbmdFeHBGaWVsZFRyaWFsKTsKICAgYXV0
byBzdGF0ZXMgPSBDcmVhdGVBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKTsKLSAgc3RhdGVzLmFpbWRf
cmF0ZV9jb250cm9sLT5TZXRTdGFydEJpdHJhdGUoMzAwMDAwKTsKKyAgc3RhdGVzLmFpbWRfcmF0
ZV9jb250cm9sLT5TZXRTdGFydEJpdHJhdGUoRGF0YVJhdGU6OmticHMoMzAwKSk7CiAgIEVYUEVD
VF9FUShrTWluQndlUGVyaW9kTXNTbW9vdGhpbmdFeHAsCi0gICAgICAgICAgICBzdGF0ZXMuYWlt
ZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAg
ICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9k
KCkubXMoKSk7CiAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPkFkdmFuY2VUaW1lTWlsbGlzZWNv
bmRzKDEwMCk7CiAgIFVwZGF0ZVJhdGVDb250cm9sKHN0YXRlcywgQmFuZHdpZHRoVXNhZ2U6OmtC
d092ZXJ1c2luZywgMjgwMDAwLAogICAgICAgICAgICAgICAgICAgICBzdGF0ZXMuc2ltdWxhdGVk
X2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgIEVYUEVDVF9ORShrTWluQndlUGVyaW9k
TXNTbW9vdGhpbmdFeHAsCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdl
dEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9y
YXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAKIFRF
U1QoQWltZFJhdGVDb250cm9sVGVzdCwgRXhwZWN0ZWRQZXJpb2RBZnRlcjIwa2Jwc0Ryb3BBbmQ1
a2Jwc0luY3JlYXNlKSB7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3Rh
dGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0luaXRpYWxCaXRyYXRlID0gMTEwMDAwOwotICBzdGF0
ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAgICAga0luaXRpYWxCaXRyYXRl
LCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CisgIFNldEVz
dGltYXRlKHN0YXRlcywga0luaXRpYWxCaXRyYXRlKTsKICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9j
ay0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwKTsKICAgLy8gTWFrZSB0aGUgYml0cmF0ZSBk
cm9wIGJ5IDIwIGticHMgdG8gZ2V0IHRvIDkwIGticHMuCiAgIC8vIFRoZSByYXRlIGluY3JlYXNl
IGF0IDkwIGticHMgc2hvdWxkIGJlIDUga2Jwcywgc28gdGhlIHBlcmlvZCBzaG91bGQgYmUgNCBz
LgpAQCAtMTgzLDggKzE5Myw5IEBAIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgRXhwZWN0ZWRQ
ZXJpb2RBZnRlcjIwa2Jwc0Ryb3BBbmQ1a2Jwc0luY3JlYXNlKSB7CiAgICAgICAoa0luaXRpYWxC
aXRyYXRlIC0gMjAwMDApIC8ga0ZyYWN0aW9uQWZ0ZXJPdmVydXNlOwogICBVcGRhdGVSYXRlQ29u
dHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmcsIGtBY2tlZEJpdHJhdGUs
CiAgICAgICAgICAgICAgICAgICAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxp
c2Vjb25kcygpKTsKLSAgRVhQRUNUX0VRKDUwMDAsIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+
R2V0TmVhck1heEluY3JlYXNlUmF0ZUJwcygpKTsKLSAgRVhQRUNUX0VRKDQwMDAsIHN0YXRlcy5h
aW1kX3JhdGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RNcygpKTsKKyAgRVhQ
RUNUX0VRKDUwMDAsCisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldE5l
YXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJTZWNvbmQoKSk7CisgIEVYUEVDVF9FUSg0MDAwLCBzdGF0
ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7
CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgTWluUGVyaW9kQWZ0ZXJMYXJnZUJpdHJh
dGVEZWNyZWFzZVNtb290aGluZ0V4cCkgewpAQCAtMTkyLDggKzIwMyw3IEBAIFRFU1QoQWltZFJh
dGVDb250cm9sVGVzdCwgTWluUGVyaW9kQWZ0ZXJMYXJnZUJpdHJhdGVEZWNyZWFzZVNtb290aGlu
Z0V4cCkgewogICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlhbHMo
a1Ntb290aGluZ0V4cEZpZWxkVHJpYWwpOwogICBhdXRvIHN0YXRlcyA9IENyZWF0ZUFpbWRSYXRl
Q29udHJvbFN0YXRlcygpOwogICBjb25zdGV4cHIgaW50IGtJbml0aWFsQml0cmF0ZSA9IDExMDAw
MDsKLSAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRFc3RpbWF0ZSgKLSAgICAgIGtJbml0
aWFsQml0cmF0ZSwgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkp
OworICBTZXRFc3RpbWF0ZShzdGF0ZXMsIGtJbml0aWFsQml0cmF0ZSk7CiAgIHN0YXRlcy5zaW11
bGF0ZWRfY2xvY2stPkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMCk7CiAgIC8vIE1ha2Ugc3Vj
aCBhIGxhcmdlIGRyb3AgaW4gYml0cmF0ZSB0aGF0IHNob3VsZCBiZSB0cmVhdGVkIGFzIG5ldHdv
cmsKICAgLy8gZGVncmFkYXRpb24uCkBAIC0yMDEsMjAgKzIxMSwxOSBAQCBURVNUKEFpbWRSYXRl
Q29udHJvbFRlc3QsIE1pblBlcmlvZEFmdGVyTGFyZ2VCaXRyYXRlRGVjcmVhc2VTbW9vdGhpbmdF
eHApIHsKICAgVXBkYXRlUmF0ZUNvbnRyb2woc3RhdGVzLCBCYW5kd2lkdGhVc2FnZTo6a0J3T3Zl
cnVzaW5nLCBrQWNrZWRCaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICBzdGF0ZXMuc2ltdWxh
dGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgIEVYUEVDVF9FUShrTWluQndlUGVy
aW9kTXNTbW9vdGhpbmdFeHAsCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wt
PkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWlt
ZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAK
IFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgQmFuZHdpZHRoUGVyaW9kSXNOb3RCZWxvd01pbikg
ewogICBhdXRvIHN0YXRlcyA9IENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0YXRlcygpOwogICBjb25z
dGV4cHIgaW50IGtJbml0aWFsQml0cmF0ZSA9IDEwMDAwOwotICBzdGF0ZXMuYWltZF9yYXRlX2Nv
bnRyb2wtPlNldEVzdGltYXRlKAotICAgICAga0luaXRpYWxCaXRyYXRlLCBzdGF0ZXMuc2ltdWxh
dGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRlcywg
a0luaXRpYWxCaXRyYXRlKTsKICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+QWR2YW5jZVRpbWVN
aWxsaXNlY29uZHMoMTAwKTsKICAgLy8gTWFrZSBhIHNtYWxsICgxLjUga2JwcykgYml0cmF0ZSBk
cm9wIHRvIDguNSBrYnBzLgogICBVcGRhdGVSYXRlQ29udHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVz
YWdlOjprQndPdmVydXNpbmcsIGtJbml0aWFsQml0cmF0ZSAtIDEsCiAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKICAgRVhQ
RUNUX0VRKGtNaW5Cd2VQZXJpb2RNc05vU21vb3RoaW5nRXhwLAotICAgICAgICAgICAgc3RhdGVz
LmFpbWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZE1zKCkpOworICAg
ICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBl
cmlvZCgpLm1zKCkpOwogfQogCiBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIEJhbmR3aWR0aFBl
cmlvZElzTm90QWJvdmVNYXhTbW9vdGhpbmdFeHApIHsKQEAgLTIyMiwyOSArMjMxLDI3IEBAIFRF
U1QoQWltZFJhdGVDb250cm9sVGVzdCwgQmFuZHdpZHRoUGVyaW9kSXNOb3RBYm92ZU1heFNtb290
aGluZ0V4cCkgewogICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlh
bHMoa1Ntb290aGluZ0V4cEZpZWxkVHJpYWwpOwogICBhdXRvIHN0YXRlcyA9IENyZWF0ZUFpbWRS
YXRlQ29udHJvbFN0YXRlcygpOwogICBjb25zdGV4cHIgaW50IGtJbml0aWFsQml0cmF0ZSA9IDUw
MDAwMDAwOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAgICAg
a0luaXRpYWxCaXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29u
ZHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRlcywga0luaXRpYWxCaXRyYXRlKTsKICAgc3RhdGVz
LnNpbXVsYXRlZF9jbG9jay0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwKTsKICAgLy8gTWFr
ZSBhIGxhcmdlICgxMCBNYnBzKSBiaXRyYXRlIGRyb3AgdG8gMTAga2Jwcy4KICAgY29uc3RleHBy
IGludCBrQWNrZWRCaXRyYXRlID0gNDAwMDAwMDAgLyBrRnJhY3Rpb25BZnRlck92ZXJ1c2U7CiAg
IFVwZGF0ZVJhdGVDb250cm9sKHN0YXRlcywgQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZywg
a0Fja2VkQml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9j
ay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwogICBFWFBFQ1RfRVEoa01heEJ3ZVBlcmlvZE1zLAot
ICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0
aFBlcmlvZE1zKCkpOworICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXRF
eHBlY3RlZEJhbmR3aWR0aFBlcmlvZCgpLm1zKCkpOwogfQogCiBURVNUKEFpbWRSYXRlQ29udHJv
bFRlc3QsIEJhbmR3aWR0aFBlcmlvZElzTm90QWJvdmVNYXhOb1Ntb290aGluZ0V4cCkgewogICBh
dXRvIHN0YXRlcyA9IENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0YXRlcygpOwogICBjb25zdGV4cHIg
aW50IGtJbml0aWFsQml0cmF0ZSA9IDEwMDEwMDAwOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRy
b2wtPlNldEVzdGltYXRlKAotICAgICAga0luaXRpYWxCaXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVk
X2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRlcywga0lu
aXRpYWxCaXRyYXRlKTsKICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+QWR2YW5jZVRpbWVNaWxs
aXNlY29uZHMoMTAwKTsKICAgLy8gTWFrZSBhIGxhcmdlICgxMCBNYnBzKSBiaXRyYXRlIGRyb3Ag
dG8gMTAga2Jwcy4KICAgY29uc3RleHByIGludCBrQWNrZWRCaXRyYXRlID0gMTAwMDAgLyBrRnJh
Y3Rpb25BZnRlck92ZXJ1c2U7CiAgIFVwZGF0ZVJhdGVDb250cm9sKHN0YXRlcywgQmFuZHdpZHRo
VXNhZ2U6OmtCd092ZXJ1c2luZywga0Fja2VkQml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAg
c3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwogICBFWFBFQ1Rf
RVEoa01heEJ3ZVBlcmlvZE1zLAotICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9s
LT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZE1zKCkpOworICAgICAgICAgICAgc3RhdGVzLmFp
bWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZCgpLm1zKCkpOwogfQog
CiBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIFNlbmRpbmdSYXRlQm91bmRlZFdoZW5UaHJvdWdo
cHV0Tm90RXN0aW1hdGVkKSB7CkBAIC0yNjUsNyArMjcyLDcgQEAgVEVTVChBaW1kUmF0ZUNvbnRy
b2xUZXN0LCBTZW5kaW5nUmF0ZUJvdW5kZWRXaGVuVGhyb3VnaHB1dE5vdEVzdGltYXRlZCkgewog
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxp
c2Vjb25kcygpKTsKICAgICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5BZHZhbmNlVGltZU1pbGxp
c2Vjb25kcygxMDApOwogICB9Ci0gIEVYUEVDVF9MRShzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wt
PkxhdGVzdEVzdGltYXRlKCksCisgIEVYUEVDVF9MRShzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wt
PkxhdGVzdEVzdGltYXRlKCkuYnBzKCksCiAgICAgICAgICAgICBrSW5pdGlhbEJpdHJhdGVCcHMg
KiAxLjUgKyAxMDAwMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2J3ZV9k
ZWZpbmVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYndlX2RlZmluZXMuY2MKaW5kZXggNmNiZTQ2
ODM0ODk2NzcxODYzYTM4YTA3M2Q1ZDE5MGM1NDViM2IzYy4uOTFmM2NkNDA1MGI3OGYwZmY3MmQy
NDZmMDVmYjM4MzE3Zjc0YTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYndlX2Rl
ZmluZXMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYndlX2RlZmluZXMuY2MKQEAgLTM0LDgg
KzM0LDggQEAgRGF0YVJhdGUgR2V0TWluQml0cmF0ZSgpIHsKIAogUmF0ZUNvbnRyb2xJbnB1dDo6
UmF0ZUNvbnRyb2xJbnB1dCgKICAgICBCYW5kd2lkdGhVc2FnZSBid19zdGF0ZSwKLSAgICBjb25z
dCBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4mIGVzdGltYXRlZF90aHJvdWdocHV0X2JwcykKLSAg
ICA6IGJ3X3N0YXRlKGJ3X3N0YXRlKSwgZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzKGVzdGltYXRl
ZF90aHJvdWdocHV0X2Jwcykge30KKyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4m
IGVzdGltYXRlZF90aHJvdWdocHV0KQorICAgIDogYndfc3RhdGUoYndfc3RhdGUpLCBlc3RpbWF0
ZWRfdGhyb3VnaHB1dChlc3RpbWF0ZWRfdGhyb3VnaHB1dCkge30KIAogUmF0ZUNvbnRyb2xJbnB1
dDo6flJhdGVDb250cm9sSW5wdXQoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1
ZGUvYndlX2RlZmluZXMuaAppbmRleCBkOTE4NWRlOTljYWRiMGYwYzQ0MzQ1ODZjZTY0NzY4YjNm
OGJmZDFjLi41MjIzYTZiNDI0YjFhMDA1N2VlYWVjZDJhY2M1NWExYTQxZjQ3OGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0
ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZu
ZGVmIE1PRFVMRVNfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX0lOQ0xVREVfQldFX0RFRklORVNf
SF8KICNkZWZpbmUgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1JfSU5DTFVERV9CV0Vf
REVGSU5FU19IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL3VuaXRzL2RhdGFfcmF0ZS5oIgogCkBAIC00NSwx
NSArNDcsMTMgQEAgZW51bSBjbGFzcyBCYW5kd2lkdGhVc2FnZSB7CiAKIGVudW0gUmF0ZUNvbnRy
b2xTdGF0ZSB7IGtSY0hvbGQsIGtSY0luY3JlYXNlLCBrUmNEZWNyZWFzZSB9OwogCi1lbnVtIFJh
dGVDb250cm9sUmVnaW9uIHsga1JjTmVhck1heCwga1JjQWJvdmVNYXgsIGtSY01heFVua25vd24g
fTsKLQogc3RydWN0IFJhdGVDb250cm9sSW5wdXQgewogICBSYXRlQ29udHJvbElucHV0KEJhbmR3
aWR0aFVzYWdlIGJ3X3N0YXRlLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGFic2w6Om9wdGlv
bmFsPHVpbnQzMl90PiYgZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzKTsKKyAgICAgICAgICAgICAg
ICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4mIGVzdGltYXRlZF90aHJvdWdocHV0
KTsKICAgflJhdGVDb250cm9sSW5wdXQoKTsKIAogICBCYW5kd2lkdGhVc2FnZSBid19zdGF0ZTsK
LSAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGVzdGltYXRlZF90aHJvdWdocHV0X2JwczsKKyAg
YWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGVzdGltYXRlZF90aHJvdWdocHV0OwogfTsKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW50ZXJf
YXJyaXZhbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2ludGVyX2Fycml2YWwuY2MKaW5kZXggM2Ew
ZjU3OTA1MmY5MGY0ZDkwNDk5YzUxNjk0MTcxOGZhNzQwZGJjZC4uYjhlNjgzYjg5YTZmMmVmYzJm
Mzk1ODAzOTRjMTM2MzA5ZGQ2NzVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW50
ZXJfYXJyaXZhbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbnRlcl9hcnJpdmFsLmNjCkBA
IC0xMCwxMCArMTAsOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3Rp
bWF0b3IvaW50ZXJfYXJyaXZhbC5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUg
PGNhc3NlcnQ+CiAKLSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBl
cy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1Ymxp
Yy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2RldGVjdG9yLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0
cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9kZXRlY3Rvci5jYwppbmRleCA3NzZjYTQyYTU2ZmYyMjAz
MjYyYjAxNDlhNjI5NThlMmI3NDFjMWU2Li5mM2RiZTFlOTk4ODI5NTgwMDQ3ZDk1MTUxM2NkZDY3
M2Q5YjkzYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2RldGVjdG9y
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0b3IuY2MKQEAgLTEyLDE1
ICsxMiwxMiBAQAogCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5j
bHVkZSA8c3RkbGliLmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RyaW5n
PgogCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9i
d2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L3Rlc3QvYndlX3Rlc3RfbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmlj
cy9zYWZlX21pbm1heC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxk
X3RyaWFsLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0
b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0b3IuaAppbmRleCBmMzIyYzMw
NDk2MDk3ZmMxNWI2MzAyODM1MWFkZTZlMGVmZDdmMjgzLi42MWQxYzNmNzA3ZTMyMDZhMTM5ZGZm
MzNlMDc0MjE2MDEzNjljNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNl
X2RldGVjdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9kZXRlY3Rvci5oCkBA
IC0xMCw5ICsxMCw4IEBACiAjaWZuZGVmIE1PRFVMRVNfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9S
X09WRVJVU0VfREVURUNUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJ
TUFUT1JfT1ZFUlVTRV9ERVRFQ1RPUl9IXwogCi0jaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxz
dGRpbnQuaD4KIAotI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVz
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9i
d2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9lc3RpbWF0b3IuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGltYXRvci5jYwppbmRleCAwOWRlNWM2ZTdjMWM2Mjc5
Y2ViZDEzNWRiMWM0MWNlNDc1YzhkZDY2Li4yMDZjZWJhODRjMjQ2OGU2ZjgzNTliNmI5MDA0ZTk2
MmYwYWI1YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGltYXRv
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGltYXRvci5jYwpAQCAtMTIs
OSArMTIsNyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8bWF0aC5oPgotI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgogCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVk
ZS9id2VfZGVmaW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9l
c3RpbWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZXN0aW1hdG9yLmgKaW5kZXgg
NGM5MjQ5MzhhYTBiODY0YzA4MTg4YzY0NjRhZmY1MjhkMjZmNWE0ZC4uM2Q3YmQxNmJlNDdlNzM3
OTkyMzA0MGRjNWE4Njg1OTJmZjc2MTQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Iv
b3ZlcnVzZV9lc3RpbWF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGlt
YXRvci5oCkBAIC0xMCw2ICsxMCw3IEBACiAjaWZuZGVmIE1PRFVMRVNfUkVNT1RFX0JJVFJBVEVf
RVNUSU1BVE9SX09WRVJVU0VfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfUkVNT1RFX0JJ
VFJBVEVfRVNUSU1BVE9SX09WRVJVU0VfRVNUSU1BVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQu
aD4KICNpbmNsdWRlIDxkZXF1ZT4KIAogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9M
SU5UKGJ1aWxkL2luY2x1ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVf
Yml0cmF0ZV9lc3RpbWF0b3JfYWJzX3NlbmRfdGltZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvcl9hYnNfc2VuZF90aW1lLmNjCmluZGV4IGE3Y2ZlNGM5MGFj
YzZiYjBmMDBiMGE3YTI0MmM5M2U4OTZiZDJmNzUuLjFhZDM1YzdiZjBkYjc0MWJkNmE3MjUzZjY4
NThhN2ZhMjhkYWJiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvcl9hYnNfc2VuZF90aW1lLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvcl9hYnNfc2VuZF90aW1lLmNjCkBAIC0yMiw2ICsyMiwxNiBA
QAogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IE9wdGlv
bmFsUmF0ZUZyb21PcHRpb25hbEJwcygKKyAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IGJpdHJhdGVf
YnBzKSB7CisgIGlmIChiaXRyYXRlX2JwcykgeworICAgIHJldHVybiBEYXRhUmF0ZTo6YnBzKCpi
aXRyYXRlX2Jwcyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0K
K30KK30gIC8vIG5hbWVzcGFjZQogCiBlbnVtIHsKICAga1RpbWVzdGFtcEdyb3VwTGVuZ3RoTXMg
PSA1LApAQCAtMTg4LDcgKzE5OCw4IEBAIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGlt
ZTo6UHJvY2Vzc0NsdXN0ZXJzKGludDY0X3Qgbm93X21zKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICIgYnBzLiBNZWFuIHNlbmQgZGVsdGE6ICIgPDwgYmVzdF9pdC0+c2VuZF9tZWFuX21z
CiAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgbXMsIG1lYW4gcmVjdiBkZWx0YTogIiA8PCBi
ZXN0X2l0LT5yZWN2X21lYW5fbXMKICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBtcywgbnVt
IHByb2JlczogIiA8PCBiZXN0X2l0LT5jb3VudDsKLSAgICAgIHJlbW90ZV9yYXRlXy5TZXRFc3Rp
bWF0ZShwcm9iZV9iaXRyYXRlX2Jwcywgbm93X21zKTsKKyAgICAgIHJlbW90ZV9yYXRlXy5TZXRF
c3RpbWF0ZShEYXRhUmF0ZTo6YnBzKHByb2JlX2JpdHJhdGVfYnBzKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUaW1lc3RhbXA6Om1zKG5vd19tcykpOwogICAgICAgcmV0dXJuIFBy
b2JlUmVzdWx0OjprQml0cmF0ZVVwZGF0ZWQ7CiAgICAgfQogICB9CkBAIC0yMDUsNyArMjE2LDcg
QEAgYm9vbCBSZW1vdGVCaXRyYXRlRXN0aW1hdG9yQWJzU2VuZFRpbWU6OklzQml0cmF0ZUltcHJv
dmluZygKICAgYm9vbCBpbml0aWFsX3Byb2JlID0gIXJlbW90ZV9yYXRlXy5WYWxpZEVzdGltYXRl
KCkgJiYgbmV3X2JpdHJhdGVfYnBzID4gMDsKICAgYm9vbCBiaXRyYXRlX2Fib3ZlX2VzdGltYXRl
ID0KICAgICAgIHJlbW90ZV9yYXRlXy5WYWxpZEVzdGltYXRlKCkgJiYKLSAgICAgIG5ld19iaXRy
YXRlX2JwcyA+IHN0YXRpY19jYXN0PGludD4ocmVtb3RlX3JhdGVfLkxhdGVzdEVzdGltYXRlKCkp
OworICAgICAgbmV3X2JpdHJhdGVfYnBzID4gcmVtb3RlX3JhdGVfLkxhdGVzdEVzdGltYXRlKCku
YnBzPGludD4oKTsKICAgcmV0dXJuIGluaXRpYWxfcHJvYmUgfHwgYml0cmF0ZV9hYm92ZV9lc3Rp
bWF0ZTsKIH0KIApAQCAtMzE2LDEzICszMjcsMTQgQEAgdm9pZCBSZW1vdGVCaXRyYXRlRXN0aW1h
dG9yQWJzU2VuZFRpbWU6OkluY29taW5nUGFja2V0SW5mbygKICAgICAgIC8vIENoZWNrIGlmIGl0
J3MgdGltZSBmb3IgYSBwZXJpb2RpYyB1cGRhdGUgb3IgaWYgd2Ugc2hvdWxkIHVwZGF0ZSBiZWNh
dXNlCiAgICAgICAvLyBvZiBhbiBvdmVyLXVzZS4KICAgICAgIGlmIChsYXN0X3VwZGF0ZV9tc18g
PT0gLTEgfHwKLSAgICAgICAgICBub3dfbXMgLSBsYXN0X3VwZGF0ZV9tc18gPiByZW1vdGVfcmF0
ZV8uR2V0RmVlZGJhY2tJbnRlcnZhbCgpKSB7CisgICAgICAgICAgbm93X21zIC0gbGFzdF91cGRh
dGVfbXNfID4gcmVtb3RlX3JhdGVfLkdldEZlZWRiYWNrSW50ZXJ2YWwoKS5tcygpKSB7CiAgICAg
ICAgIHVwZGF0ZV9lc3RpbWF0ZSA9IHRydWU7CiAgICAgICB9IGVsc2UgaWYgKGRldGVjdG9yXy5T
dGF0ZSgpID09IEJhbmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmcpIHsKICAgICAgICAgYWJzbDo6
b3B0aW9uYWw8dWludDMyX3Q+IGluY29taW5nX3JhdGUgPQogICAgICAgICAgICAgaW5jb21pbmdf
Yml0cmF0ZV8uUmF0ZShhcnJpdmFsX3RpbWVfbXMpOwogICAgICAgICBpZiAoaW5jb21pbmdfcmF0
ZSAmJgotICAgICAgICAgICAgcmVtb3RlX3JhdGVfLlRpbWVUb1JlZHVjZUZ1cnRoZXIobm93X21z
LCAqaW5jb21pbmdfcmF0ZSkpIHsKKyAgICAgICAgICAgIHJlbW90ZV9yYXRlXy5UaW1lVG9SZWR1
Y2VGdXJ0aGVyKFRpbWVzdGFtcDo6bXMobm93X21zKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRlOjpicHMoKmluY29taW5nX3JhdGUpKSkgewog
ICAgICAgICAgIHVwZGF0ZV9lc3RpbWF0ZSA9IHRydWU7CiAgICAgICAgIH0KICAgICAgIH0KQEAg
LTMzMiw5ICszNDQsMTEgQEAgdm9pZCBSZW1vdGVCaXRyYXRlRXN0aW1hdG9yQWJzU2VuZFRpbWU6
OkluY29taW5nUGFja2V0SW5mbygKICAgICAgIC8vIFRoZSBmaXJzdCBvdmVydXNlIHNob3VsZCBp
bW1lZGlhdGVseSB0cmlnZ2VyIGEgbmV3IGVzdGltYXRlLgogICAgICAgLy8gV2UgYWxzbyBoYXZl
IHRvIHVwZGF0ZSB0aGUgZXN0aW1hdGUgaW1tZWRpYXRlbHkgaWYgd2UgYXJlIG92ZXJ1c2luZwog
ICAgICAgLy8gYW5kIHRoZSB0YXJnZXQgYml0cmF0ZSBpcyB0b28gaGlnaCBjb21wYXJlZCB0byB3
aGF0IHdlIGFyZSByZWNlaXZpbmcuCi0gICAgICBjb25zdCBSYXRlQ29udHJvbElucHV0IGlucHV0
KGRldGVjdG9yXy5TdGF0ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmNvbWluZ19iaXRyYXRlXy5SYXRlKGFycml2YWxfdGltZV9tcykpOwotICAgICAgdGFyZ2V0X2Jp
dHJhdGVfYnBzID0gcmVtb3RlX3JhdGVfLlVwZGF0ZSgmaW5wdXQsIG5vd19tcyk7CisgICAgICBj
b25zdCBSYXRlQ29udHJvbElucHV0IGlucHV0KAorICAgICAgICAgIGRldGVjdG9yXy5TdGF0ZSgp
LAorICAgICAgICAgIE9wdGlvbmFsUmF0ZUZyb21PcHRpb25hbEJwcyhpbmNvbWluZ19iaXRyYXRl
Xy5SYXRlKGFycml2YWxfdGltZV9tcykpKTsKKyAgICAgIHRhcmdldF9iaXRyYXRlX2JwcyA9Cisg
ICAgICAgICAgcmVtb3RlX3JhdGVfLlVwZGF0ZSgmaW5wdXQsIFRpbWVzdGFtcDo6bXMobm93X21z
KSkuYnBzPHVpbnQzMl90PigpOwogICAgICAgdXBkYXRlX2VzdGltYXRlID0gcmVtb3RlX3JhdGVf
LlZhbGlkRXN0aW1hdGUoKTsKICAgICAgIHNzcmNzID0gS2V5cyhzc3Jjc18pOwogICAgIH0KQEAg
LTM3NCw3ICszODgsNyBAQCB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGltZTo6
VGltZW91dFN0cmVhbXMoaW50NjRfdCBub3dfbXMpIHsKIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGlt
YXRvckFic1NlbmRUaW1lOjpPblJ0dFVwZGF0ZShpbnQ2NF90IGF2Z19ydHRfbXMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBtYXhf
cnR0X21zKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfKTsKLSAgcmVtb3RlX3JhdGVf
LlNldFJ0dChhdmdfcnR0X21zKTsKKyAgcmVtb3RlX3JhdGVfLlNldFJ0dChUaW1lRGVsdGE6Om1z
KGF2Z19ydHRfbXMpKTsKIH0KIAogdm9pZCBSZW1vdGVCaXRyYXRlRXN0aW1hdG9yQWJzU2VuZFRp
bWU6OlJlbW92ZVN0cmVhbSh1aW50MzJfdCBzc3JjKSB7CkBAIC0zOTksNyArNDEzLDcgQEAgYm9v
bCBSZW1vdGVCaXRyYXRlRXN0aW1hdG9yQWJzU2VuZFRpbWU6OkxhdGVzdEVzdGltYXRlKAogICBp
ZiAoc3NyY3NfLmVtcHR5KCkpIHsKICAgICAqYml0cmF0ZV9icHMgPSAwOwogICB9IGVsc2Ugewot
ICAgICpiaXRyYXRlX2JwcyA9IHJlbW90ZV9yYXRlXy5MYXRlc3RFc3RpbWF0ZSgpOworICAgICpi
aXRyYXRlX2JwcyA9IHJlbW90ZV9yYXRlXy5MYXRlc3RFc3RpbWF0ZSgpLmJwczx1aW50MzJfdD4o
KTsKICAgfQogICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQwOCw2ICs0MjIsNiBAQCB2b2lkIFJlbW90
ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGltZTo6U2V0TWluQml0cmF0ZShpbnQgbWluX2JpdHJh
dGVfYnBzKSB7CiAgIC8vIENhbGxlZCBmcm9tIGJvdGggdGhlIGNvbmZpZ3VyYXRpb24gdGhyZWFk
IGFuZCB0aGUgbmV0d29yayB0aHJlYWQuIFNob3VsZG4ndAogICAvLyBiZSBjYWxsZWQgZnJvbSB0
aGUgbmV0d29yayB0aHJlYWQgaW4gdGhlIGZ1dHVyZS4KICAgcnRjOjpDcml0U2NvcGUgbG9jaygm
Y3JpdF8pOwotICByZW1vdGVfcmF0ZV8uU2V0TWluQml0cmF0ZShtaW5fYml0cmF0ZV9icHMpOwor
ICByZW1vdGVfcmF0ZV8uU2V0TWluQml0cmF0ZShEYXRhUmF0ZTo6YnBzKG1pbl9iaXRyYXRlX2Jw
cykpOwogfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3Rp
bWF0b3IvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yX3NpbmdsZV9zdHJlYW0uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5jYwppbmRl
eCAzZDc5MWY3ODQ4N2Q5YjRkYTg3N2IwZGNlYTAxZDVlOTFmNWE2OTY0Li5hMjY3MDUxOTQ0YjEw
ZjE5YjhhMTBkZWRkNTIyZWI3YjcyM2U5ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRv
ci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5jYwpAQCAt
MTAsMTcgKzEwLDMzIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5oIgogCisjaW5jbHVk
ZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisj
aW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0
cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRyb2wuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW50ZXJfYXJyaXZhbC5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0b3IuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGlt
YXRvci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgog
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CituYW1lc3BhY2UgeworYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IE9wdGlvbmFs
UmF0ZUZyb21PcHRpb25hbEJwcygKKyAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IGJpdHJhdGVfYnBz
KSB7CisgIGlmIChiaXRyYXRlX2JwcykgeworICAgIHJldHVybiBEYXRhUmF0ZTo6YnBzKCpiaXRy
YXRlX2Jwcyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KK30K
K30gIC8vIG5hbWVzcGFjZQogCiBlbnVtIHsga1RpbWVzdGFtcEdyb3VwTGVuZ3RoTXMgPSA1IH07
CiBzdGF0aWMgY29uc3QgZG91YmxlIGtUaW1lc3RhbXBUb01zID0gMS4wIC8gOTAuMDsKQEAgLTEy
Nyw3ICsxNDMsOCBAQCB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJlYW06Oklu
Y29taW5nUGFja2V0KAogICAgICAgICBpbmNvbWluZ19iaXRyYXRlXy5SYXRlKG5vd19tcyk7CiAg
ICAgaWYgKGluY29taW5nX2JpdHJhdGVfYnBzICYmCiAgICAgICAgIChwcmlvcl9zdGF0ZSAhPSBC
YW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5nIHx8Ci0gICAgICAgICBHZXRSZW1vdGVSYXRlKCkt
PlRpbWVUb1JlZHVjZUZ1cnRoZXIobm93X21zLCAqaW5jb21pbmdfYml0cmF0ZV9icHMpKSkgewor
ICAgICAgICAgR2V0UmVtb3RlUmF0ZSgpLT5UaW1lVG9SZWR1Y2VGdXJ0aGVyKAorICAgICAgICAg
ICAgIFRpbWVzdGFtcDo6bXMobm93X21zKSwgRGF0YVJhdGU6OmJwcygqaW5jb21pbmdfYml0cmF0
ZV9icHMpKSkpIHsKICAgICAgIC8vIFRoZSBmaXJzdCBvdmVydXNlIHNob3VsZCBpbW1lZGlhdGVs
eSB0cmlnZ2VyIGEgbmV3IGVzdGltYXRlLgogICAgICAgLy8gV2UgYWxzbyBoYXZlIHRvIHVwZGF0
ZSB0aGUgZXN0aW1hdGUgaW1tZWRpYXRlbHkgaWYgd2UgYXJlIG92ZXJ1c2luZwogICAgICAgLy8g
YW5kIHRoZSB0YXJnZXQgYml0cmF0ZSBpcyB0b28gaGlnaCBjb21wYXJlZCB0byB3aGF0IHdlIGFy
ZSByZWNlaXZpbmcuCkBAIC0xODEsMTAgKzE5OCwxMiBAQCB2b2lkIFJlbW90ZUJpdHJhdGVFc3Rp
bWF0b3JTaW5nbGVTdHJlYW06OlVwZGF0ZUVzdGltYXRlKGludDY0X3Qgbm93X21zKSB7CiAgIH0K
ICAgQWltZFJhdGVDb250cm9sKiByZW1vdGVfcmF0ZSA9IEdldFJlbW90ZVJhdGUoKTsKIAotICBj
b25zdCBSYXRlQ29udHJvbElucHV0IGlucHV0KGJ3X3N0YXRlLCBpbmNvbWluZ19iaXRyYXRlXy5S
YXRlKG5vd19tcykpOwotICB1aW50MzJfdCB0YXJnZXRfYml0cmF0ZSA9IHJlbW90ZV9yYXRlLT5V
cGRhdGUoJmlucHV0LCBub3dfbXMpOworICBjb25zdCBSYXRlQ29udHJvbElucHV0IGlucHV0KAor
ICAgICAgYndfc3RhdGUsIE9wdGlvbmFsUmF0ZUZyb21PcHRpb25hbEJwcyhpbmNvbWluZ19iaXRy
YXRlXy5SYXRlKG5vd19tcykpKTsKKyAgdWludDMyX3QgdGFyZ2V0X2JpdHJhdGUgPQorICAgICAg
cmVtb3RlX3JhdGUtPlVwZGF0ZSgmaW5wdXQsIFRpbWVzdGFtcDo6bXMobm93X21zKSkuYnBzPHVp
bnQzMl90PigpOwogICBpZiAocmVtb3RlX3JhdGUtPlZhbGlkRXN0aW1hdGUoKSkgewotICAgIHBy
b2Nlc3NfaW50ZXJ2YWxfbXNfID0gcmVtb3RlX3JhdGUtPkdldEZlZWRiYWNrSW50ZXJ2YWwoKTsK
KyAgICBwcm9jZXNzX2ludGVydmFsX21zXyA9IHJlbW90ZV9yYXRlLT5HZXRGZWVkYmFja0ludGVy
dmFsKCkubXMoKTsKICAgICBSVENfRENIRUNLX0dUKHByb2Nlc3NfaW50ZXJ2YWxfbXNfLCAwKTsK
ICAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gc3NyY3M7CiAgICAgR2V0U3NyY3MoJnNzcmNzKTsK
QEAgLTE5Niw3ICsyMTUsNyBAQCB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJl
YW06OlVwZGF0ZUVzdGltYXRlKGludDY0X3Qgbm93X21zKSB7CiB2b2lkIFJlbW90ZUJpdHJhdGVF
c3RpbWF0b3JTaW5nbGVTdHJlYW06Ok9uUnR0VXBkYXRlKGludDY0X3QgYXZnX3J0dF9tcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBtYXhfcnR0X21zKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0X3NlY3RfKTsKLSAgR2V0
UmVtb3RlUmF0ZSgpLT5TZXRSdHQoYXZnX3J0dF9tcyk7CisgIEdldFJlbW90ZVJhdGUoKS0+U2V0
UnR0KFRpbWVEZWx0YTo6bXMoYXZnX3J0dF9tcykpOwogfQogCiB2b2lkIFJlbW90ZUJpdHJhdGVF
c3RpbWF0b3JTaW5nbGVTdHJlYW06OlJlbW92ZVN0cmVhbSh1bnNpZ25lZCBpbnQgc3NyYykgewpA
QCAtMjIwLDcgKzIzOSw3IEBAIGJvb2wgUmVtb3RlQml0cmF0ZUVzdGltYXRvclNpbmdsZVN0cmVh
bTo6TGF0ZXN0RXN0aW1hdGUoCiAgIGlmIChzc3Jjcy0+ZW1wdHkoKSkKICAgICAqYml0cmF0ZV9i
cHMgPSAwOwogICBlbHNlCi0gICAgKmJpdHJhdGVfYnBzID0gcmVtb3RlX3JhdGVfLT5MYXRlc3RF
c3RpbWF0ZSgpOworICAgICpiaXRyYXRlX2JwcyA9IHJlbW90ZV9yYXRlXy0+TGF0ZXN0RXN0aW1h
dGUoKS5icHM8dWludDMyX3Q+KCk7CiAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDMsNyArMjYy
LDcgQEAgQWltZFJhdGVDb250cm9sKiBSZW1vdGVCaXRyYXRlRXN0aW1hdG9yU2luZ2xlU3RyZWFt
OjpHZXRSZW1vdGVSYXRlKCkgewogCiB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVT
dHJlYW06OlNldE1pbkJpdHJhdGUoaW50IG1pbl9iaXRyYXRlX2JwcykgewogICBydGM6OkNyaXRT
Y29wZSBjcygmY3JpdF9zZWN0Xyk7Ci0gIHJlbW90ZV9yYXRlXy0+U2V0TWluQml0cmF0ZShtaW5f
Yml0cmF0ZV9icHMpOworICByZW1vdGVfcmF0ZV8tPlNldE1pbkJpdHJhdGUoRGF0YVJhdGU6OmJw
cyhtaW5fYml0cmF0ZV9icHMpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
ZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yX3NpbmdsZV9z
dHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5n
bGVfc3RyZWFtLmgKaW5kZXggMThiNDM1YWZmZGQwOTQ5MzFhMzMxZjJmNGZjZjFmMzJkZWM2ZjYx
ZS4uNjM4ZjBkNjgwMjdhYmM1NTA4YzFjOGEwMWE2OWQ2ZGZjMDBmZjA0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVf
Yml0cmF0ZV9lc3RpbWF0b3IvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yX3NpbmdsZV9zdHJlYW0u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xl
X3N0cmVhbS5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfUkVNT1RFX0JJVFJB
VEVfRVNUSU1BVE9SX1JFTU9URV9CSVRSQVRFX0VTVElNQVRPUl9TSU5HTEVfU1RSRUFNX0hfCiAj
ZGVmaW5lIE1PRFVMRVNfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX1JFTU9URV9CSVRSQVRFX0VT
VElNQVRPUl9TSU5HTEVfU1RSRUFNX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KQEAgLTIwLDkgKzIyLDEzIEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0
b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3JhdGVfc3RhdGlzdGljcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVh
ZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAorY2xhc3MgQ2xvY2s7Citz
dHJ1Y3QgUlRQSGVhZGVyOworCiBjbGFzcyBSZW1vdGVCaXRyYXRlRXN0aW1hdG9yU2luZ2xlU3Ry
ZWFtIDogcHVibGljIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3IgewogIHB1YmxpYzoKICAgUmVtb3Rl
Qml0cmF0ZUVzdGltYXRvclNpbmdsZVN0cmVhbShSZW1vdGVCaXRyYXRlT2JzZXJ2ZXIqIG9ic2Vy
dmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yX3NpbmdsZV9zdHJlYW1fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVf
Yml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbV91bml0dGVzdC5jYwppbmRleCAxMjBkYjEz
YzdmMjg1NGQ3NjMxMzQyNGVmOWFiYjRjN2I1NzBkZjU3Li4yYTRlZjA2NDczNzNiNjY1MTg2ZGI1
Zjc4MzFjMzU0ZDBkY2E3NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVf
Yml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbV91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbV91bml0dGVz
dC5jYwpAQCAtNTUsNyArNTUsNyBAQCBURVNUX0YoUmVtb3RlQml0cmF0ZUVzdGltYXRvclNpbmds
ZVRlc3QsIENhcGFjaXR5RHJvcFRocmVlU3RyZWFtc1dyYXApIHsKIH0KIAogVEVTVF9GKFJlbW90
ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVUZXN0LCBDYXBhY2l0eURyb3BUaGlydGVlblN0cmVhbXNX
cmFwKSB7Ci0gIENhcGFjaXR5RHJvcFRlc3RIZWxwZXIoMTMsIHRydWUsIDczMywgMCk7CisgIENh
cGFjaXR5RHJvcFRlc3RIZWxwZXIoMTMsIHRydWUsIDU2NywgMCk7CiB9CiAKIFRFU1RfRihSZW1v
dGVCaXRyYXRlRXN0aW1hdG9yU2luZ2xlVGVzdCwgQ2FwYWNpdHlEcm9wTmluZXRlZW5TdHJlYW1z
V3JhcCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9lc3RpbWF0b3JzL3Nl
bmRfc2lkZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3QvZXN0aW1hdG9ycy9zZW5kX3NpZGUu
Y2MKaW5kZXggYTQ0NDQzNzU4MDViNGJlNmU1MjY4OGQ0ZGJiZTdkYzBlYWEyNDZjNC4uMjg5ZmY3
MGVlMjE1N2VjZTMxNWUwYTIzMTFjMDk0YjU3ZTcwNDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9l
c3RpbWF0b3IvdGVzdC9lc3RpbWF0b3JzL3NlbmRfc2lkZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci90ZXN0L2VzdGltYXRvcnMvc2VuZF9zaWRlLmNjCkBAIC0zMiw2ICszMiw3IEBAIFNlbmRT
aWRlQndlU2VuZGVyOjpTZW5kU2lkZUJ3ZVNlbmRlcihpbnQga2JwcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV2ZW50X2xvZ18pKSwKICAg
ICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8oCiAgICAgICAgICAgYWJzbDo6bWFr
ZV91bmlxdWU8QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcj4oKSksCisgICAgICBwcm9iZV9i
aXRyYXRlX2VzdGltYXRvcl8obmV3IFByb2JlQml0cmF0ZUVzdGltYXRvcihudWxscHRyKSksCiAg
ICAgICBid2VfKG5ldyBEZWxheUJhc2VkQndlKG51bGxwdHIpKSwKICAgICAgIGZlZWRiYWNrX29i
c2VydmVyXyhiaXRyYXRlX2NvbnRyb2xsZXJfLmdldCgpKSwKICAgICAgIGNsb2NrXyhjbG9jayks
CkBAIC00NCw3ICs0NSw3IEBAIFNlbmRTaWRlQndlU2VuZGVyOjpTZW5kU2lkZUJ3ZVNlbmRlcihp
bnQga2JwcywKICAgYml0cmF0ZV9jb250cm9sbGVyXy0+U2V0U3RhcnRCaXRyYXRlKDEwMDAgKiBr
YnBzKTsKICAgYml0cmF0ZV9jb250cm9sbGVyXy0+U2V0TWluTWF4Qml0cmF0ZSgxMDAwICoga01p
bkJpdHJhdGVLYnBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEw
MDAgKiBrTWF4Qml0cmF0ZUticHMpOwotICBid2VfLT5TZXRNaW5CaXRyYXRlKDEwMDAgKiBrTWlu
Qml0cmF0ZUticHMpOworICBid2VfLT5TZXRNaW5CaXRyYXRlKERhdGFSYXRlOjprYnBzKGtNaW5C
aXRyYXRlS2JwcykpOwogfQogCiBTZW5kU2lkZUJ3ZVNlbmRlcjo6flNlbmRTaWRlQndlU2VuZGVy
KCkge30KQEAgLTcyLDE2ICs3MywyMiBAQCB2b2lkIFNlbmRTaWRlQndlU2VuZGVyOjpHaXZlRmVl
ZGJhY2soY29uc3QgRmVlZGJhY2tQYWNrZXQmIGZlZWRiYWNrKSB7CiAKICAgaW50NjRfdCBydHRf
bXMgPQogICAgICAgY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSAtIGZlZWRiYWNrLmxhdGVz
dF9zZW5kX3RpbWVfbXMoKTsKLSAgYndlXy0+T25SdHRVcGRhdGUocnR0X21zKTsKKyAgYndlXy0+
T25SdHRVcGRhdGUoVGltZURlbHRhOjptcyhydHRfbXMpKTsKICAgQldFX1RFU1RfTE9HR0lOR19Q
TE9UKDEsICJSVFQiLCBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpLCBydHRfbXMpOwogCiAg
IHN0ZDo6c29ydChwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLmJlZ2luKCksIHBhY2tldF9mZWVkYmFj
a192ZWN0b3IuZW5kKCksCiAgICAgICAgICAgICBQYWNrZXRGZWVkYmFja0NvbXBhcmF0b3IoKSk7
CiAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPkluY29taW5nUGFja2V0RmVlZGJh
Y2tWZWN0b3IoCiAgICAgICBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yKTsKKyAgZm9yIChQYWNrZXRG
ZWVkYmFjayYgcGFja2V0IDogcGFja2V0X2ZlZWRiYWNrX3ZlY3RvcikgeworICAgIGlmIChwYWNr
ZXQuc2VuZF90aW1lX21zICE9IFBhY2tldEZlZWRiYWNrOjprTm9TZW5kVGltZSAmJgorICAgICAg
ICBwYWNrZXQucGFjaW5nX2luZm8ucHJvYmVfY2x1c3Rlcl9pZCAhPSBQYWNlZFBhY2tldEluZm86
OmtOb3RBUHJvYmUpCisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8tPkhhbmRsZVByb2Jl
QW5kRXN0aW1hdGVCaXRyYXRlKHBhY2tldCk7CisgIH0KICAgRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0
IHJlc3VsdCA9IGJ3ZV8tPkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoCi0gICAgICBwYWNr
ZXRfZmVlZGJhY2tfdmVjdG9yLCBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRy
YXRlX2JwcygpLAotICAgICAgY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CisgICAgICBw
YWNrZXRfZmVlZGJhY2tfdmVjdG9yLCBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5i
aXRyYXRlKCksCisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8tPkZldGNoQW5kUmVzZXRM
YXN0RXN0aW1hdGVkQml0cmF0ZSgpLAorICAgICAgVGltZXN0YW1wOjptcyhjbG9ja18tPlRpbWVJ
bk1pbGxpc2Vjb25kcygpKSk7CiAgIGlmIChyZXN1bHQudXBkYXRlZCkKICAgICBiaXRyYXRlX2Nv
bnRyb2xsZXJfLT5PbkRlbGF5QmFzZWRCd2VSZXN1bHQocmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVf
Yml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9lc3RpbWF0b3JzL3NlbmRfc2lkZS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9l
c3RpbWF0b3IvdGVzdC9lc3RpbWF0b3JzL3NlbmRfc2lkZS5oCmluZGV4IDZlOTM5YzFmMDM1NzA2
YWRkY2QzNWYyMDYzNzE4MWViNzc5NGU1MGIuLjViNDVlNjZmYmNhNzU0Yjg5Mzg0N2Q0ODUxYzY0
ODMzMGU0N2RmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3QvZXN0aW1hdG9y
cy9zZW5kX3NpZGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90ZXN0L2VzdGltYXRvcnMvc2Vu
ZF9zaWRlLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgU2VuZFNpZGVCd2VTZW5kZXIgOiBwdWJs
aWMgQndlU2VuZGVyLCBwdWJsaWMgUmVtb3RlQml0cmF0ZU9ic2VydmVyIHsKICBwcm90ZWN0ZWQ6
CiAgIHN0ZDo6dW5pcXVlX3B0cjxCaXRyYXRlQ29udHJvbGxlcj4gYml0cmF0ZV9jb250cm9sbGVy
XzsKICAgc3RkOjp1bmlxdWVfcHRyPEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I+IGFja25v
d2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl87CisgIHN0ZDo6dW5pcXVlX3B0cjxQcm9iZUJpdHJh
dGVFc3RpbWF0b3I+IHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXzsKICAgc3RkOjp1bmlxdWVfcHRy
PERlbGF5QmFzZWRCd2U+IGJ3ZV87CiAgIFJ0Y3BCYW5kd2lkdGhPYnNlcnZlciogZmVlZGJhY2tf
b2JzZXJ2ZXJfOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90b29scy9id2VfcnRw
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
ZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdG9vbHMvYndlX3J0cC5jYwppbmRleCAwMjMwZGIxN2Rj
MDFjMmRkYzE1OTI4N2UyMzIwNTE5YTJhN2I5NTBjLi5kN2NkYjU0ZDkyODc5YTQyYzg3YWE3YmQ2
ZjVmMjA3MmNlOGZhZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90b29scy9id2Vf
cnRwLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rvb2xzL2J3ZV9ydHAuY2MKQEAgLTI0LDI4
ICsyNCwzMCBAQAogCiBuYW1lc3BhY2UgZmxhZ3MgewogCi1ERUZJTkVfc3RyaW5nKGV4dGVuc2lv
bl90eXBlLAotICAgICAgICAgICAgICAiYWJzIiwKLSAgICAgICAgICAgICAgIkV4dGVuc2lvbiB0
eXBlLCBlaXRoZXIgYWJzIGZvciBhYnNvbHV0ZSBzZW5kIHRpbWUgb3IgdHNvZmZzZXQgIgotICAg
ICAgICAgICAgICAiZm9yIHRpbWVzdGFtcCBvZmZzZXQuIik7CitXRUJSVENfREVGSU5FX3N0cmlu
ZygKKyAgICBleHRlbnNpb25fdHlwZSwKKyAgICAiYWJzIiwKKyAgICAiRXh0ZW5zaW9uIHR5cGUs
IGVpdGhlciBhYnMgZm9yIGFic29sdXRlIHNlbmQgdGltZSBvciB0c29mZnNldCAiCisgICAgImZv
ciB0aW1lc3RhbXAgb2Zmc2V0LiIpOwogc3RkOjpzdHJpbmcgRXh0ZW5zaW9uVHlwZSgpIHsKICAg
cmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2V4dGVuc2lvbl90eXBlKTsKIH0K
IAotREVGSU5FX2ludChleHRlbnNpb25faWQsIDMsICJFeHRlbnNpb24gaWQuIik7CitXRUJSVENf
REVGSU5FX2ludChleHRlbnNpb25faWQsIDMsICJFeHRlbnNpb24gaWQuIik7CiBpbnQgRXh0ZW5z
aW9uSWQoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfZXh0ZW5zaW9uX2lkKTsK
IH0KIAotREVGSU5FX3N0cmluZyhpbnB1dF9maWxlLCAiIiwgIklucHV0IGZpbGUuIik7CitXRUJS
VENfREVGSU5FX3N0cmluZyhpbnB1dF9maWxlLCAiIiwgIklucHV0IGZpbGUuIik7CiBzdGQ6OnN0
cmluZyBJbnB1dEZpbGUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxB
R19pbnB1dF9maWxlKTsKIH0KIAotREVGSU5FX3N0cmluZyhzc3JjX2ZpbHRlciwKLSAgICAgICAg
ICAgICAgIiIsCi0gICAgICAgICAgICAgICJDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBTU1JDcyBp
biBoZXhhZGVjaW1hbCB3aGljaCBhcmUgdG8gYmUgIgotICAgICAgICAgICAgICAidXNlZCBhcyBp
bnB1dCB0byB0aGUgQldFIChvbmx5IGFwcGxpY2FibGUgdG8gcGNhcCBmaWxlcykuIik7CitXRUJS
VENfREVGSU5FX3N0cmluZygKKyAgICBzc3JjX2ZpbHRlciwKKyAgICAiIiwKKyAgICAiQ29tbWEt
c2VwYXJhdGVkIGxpc3Qgb2YgU1NSQ3MgaW4gaGV4YWRlY2ltYWwgd2hpY2ggYXJlIHRvIGJlICIK
KyAgICAidXNlZCBhcyBpbnB1dCB0byB0aGUgQldFIChvbmx5IGFwcGxpY2FibGUgdG8gcGNhcCBm
aWxlcykuIik7CiBzdGQ6OnNldDx1aW50MzJfdD4gU3NyY0ZpbHRlcigpIHsKICAgc3RkOjpzdHJp
bmcgc3NyY19maWx0ZXJfc3RyaW5nID0gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc3Ny
Y19maWx0ZXIpOwogICBpZiAoc3NyY19maWx0ZXJfc3RyaW5nLmVtcHR5KCkpCkBAIC02NCw3ICs2
Niw3IEBAIHN0ZDo6c2V0PHVpbnQzMl90PiBTc3JjRmlsdGVyKCkgewogICByZXR1cm4gc3NyY3M7
CiB9CiAKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlLiIpOwor
V0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlLiIpOwog
fSAgLy8gbmFtZXNwYWNlIGZsYWdzCiAKIGJvb2wgUGFyc2VBcmdzQW5kU2V0dXBFc3RpbWF0b3Io
aW50IGFyZ2MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9CVUlMRC5nbgppbmRleCA0YjM3
MjkwNzY1MjczZWZjNjkzYzFhMTRhYTdhMTA1NjkyMzM3MWZmLi5lZGI5ODFiYzY3ZWRjMTcyZDFh
ZDg1OGI1OTQzNWE0MGEwYjY1ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL0JVSUxELmduCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvQlVJ
TEQuZ24KQEAgLTExLDYgKzExLDcgQEAgaW1wb3J0KCIuLi8uLi93ZWJydGMuZ25pIikKIHJ0Y19z
b3VyY2Vfc2V0KCJydHBfcnRjcF9mb3JtYXQiKSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAg
IHB1YmxpYyA9IFsKKyAgICAiaW5jbHVkZS9ydGNwX3N0YXRpc3RpY3MuaCIsCiAgICAgImluY2x1
ZGUvcnRwX2N2by5oIiwKICAgICAiaW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIs
CiAgICAgImluY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIiwKQEAgLTg1LDYgKzg2LDcgQEAgcnRj
X3NvdXJjZV9zZXQoInJ0cF9ydGNwX2Zvcm1hdCIpIHsKIAogICBkZXBzID0gWwogICAgICIuLjpt
b2R1bGVfYXBpIiwKKyAgICAiLi46bW9kdWxlX2FwaV9wdWJsaWMiLAogICAgICIuLi8uLjp3ZWJy
dGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGk6
bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCkBAIC05Niw2ICs5OCw3IEBAIHJ0Y19zb3Vy
Y2Vfc2V0KCJydHBfcnRjcF9mb3JtYXQiKSB7CiAgICAgIi4uLy4uL3J0Y19iYXNlOmRlcHJlY2F0
aW9uIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8u
Li9zeXN0ZW1fd3JhcHBlcnMiLAorICAgICIuLi92aWRlb19jb2Rpbmc6Y29kZWNfZ2xvYmFsc19o
ZWFkZXJzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9u
YWwiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczp2YXJpYW50IiwK
ICAgXQpAQCAtMTg2LDcgKzE4OSwxMCBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0cF9ydGNwIikg
ewogCiAgIGRlcHMgPSBbCiAgICAgIjpydHBfcnRjcF9mb3JtYXQiLAorICAgICI6cnRwX3ZpZGVv
X2hlYWRlciIsCiAgICAgIi4uOm1vZHVsZV9hcGkiLAorICAgICIuLjptb2R1bGVfYXBpX3B1Ymxp
YyIsCisgICAgIi4uOm1vZHVsZV9mZWNfYXBpIiwKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIs
CiAgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vYXBpOmxpYmppbmdsZV9w
ZWVyY29ubmVjdGlvbl9hcGkiLApAQCAtMjE3LDkgKzIyMywxMiBAQCBydGNfc3RhdGljX2xpYnJh
cnkoInJ0cF9ydGNwIikgewogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAg
ICAgIi4uL2F1ZGlvX2NvZGluZzphdWRpb19mb3JtYXRfY29udmVyc2lvbiIsCiAgICAgIi4uL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvciIsCisgICAgIi4uL3ZpZGVvX2NvZGluZzpjb2RlY19nbG9i
YWxzX2hlYWRlcnMiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXI6aW5saW5lZF92ZWN0b3IiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9t
ZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczp2YXJpYW50IiwKICAgXQogfQogCkBA
IC0yNjQsNiArMjczLDcgQEAgcnRjX3NvdXJjZV9zZXQoInJ0cF92aWRlb19oZWFkZXIiKSB7CiAg
ICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgIi4uLy4uL21vZHVsZXMvdmlk
ZW9fY29kaW5nOmNvZGVjX2dsb2JhbHNfaGVhZGVycyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lcjppbmxpbmVkX3ZlY3RvciIsCisgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXM6dmFyaWFudCIsCiAgIF0KIH0KQEAgLTMyMiw2ICszMzIsNyBA
QCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6cnRwX3J0Y3AiLAogICAgICAgIi4u
Ly4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3RfbWFpbiIsCisgICAg
ICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCiAg
ICAgXQogICB9ICAjIHRlc3RfcGFja2V0X21hc2tzX21ldHJpY3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9mbGV4ZmVjX3JlY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZlY19yZWNlaXZlci5oCmlu
ZGV4IGYwMDYxMTFlMTE3YjYyZmIzZGU5OTRhZTBjMjA4OWEyYWU4NjkyNTguLmYwZWQ1NzZjODc1
NjA3OTNjMzliMzc5MzMzOGNiMDRiODhlZDE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4
ZmVjX3JlY2VpdmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL2ZsZXhmZWNfcmVjZWl2ZXIuaApAQCAtMTEs
MTYgKzExLDIwIEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9GTEVYRkVDX1JF
Q0VJVkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9GTEVYRkVDX1JFQ0VJ
VkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS91bHBmZWNfcmVjZWl2ZXIuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaCIKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tlci5oIgotI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFk
X2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBDbG9jazsKKwog
Y2xhc3MgRmxleGZlY1JlY2VpdmVyIHsKICBwdWJsaWM6CiAgIEZsZXhmZWNSZWNlaXZlcih1aW50
MzJfdCBzc3JjLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL2ZsZXhmZWNfc2VuZGVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2lu
Y2x1ZGUvZmxleGZlY19zZW5kZXIuaAppbmRleCAxMjI3N2UxMjhmNTU1NDkxOWZmMjk3NjNkMmYz
YWRmODM2NzdkODUwLi5hY2VlMTE3NjRjMGFhZjE1YWI2NzIzNGJiMDI4ODM1M2ZlYzRmNTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZlY19zZW5kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxl
eGZlY19zZW5kZXIuaApAQCAtMTgsMTcgKzE4LDE1IEBACiAjaW5jbHVkZSAiYXBpL2FycmF5X3Zp
ZXcuaCIKICNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
aW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9pbmNsdWRlL2ZsZXhmZWNfc2VuZGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25fc2l6ZS5oIgotI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19nZW5lcmF0b3IuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9yYW5kb20uaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAorY2xhc3MgQ2xvY2s7CiBjbGFzcyBSdHBQYWNrZXRUb1Nl
bmQ7CiAKIC8vIE5vdGUgdGhhdCB0aGlzIGNsYXNzIGlzIG5vdCB0aHJlYWQgc2FmZSwgYW5kIHRo
dXMgcmVxdWlyZXMgZXh0ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZWNlaXZlX3N0YXRp
c3RpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZWNlaXZlX3N0YXRpc3RpY3MuaAppbmRleCAyNGQ2ZjgxMjM3
YTViNmVlZmJkMjY0ODA2NjUwZjAxNDNjYjk5NGI0Li5jMjk5ZWE2OWQ2NmVjMDNiZDQ4MWRjNzll
ODZjNTM5NzM0NTQxZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcmVjZWl2ZV9zdGF0aXN0aWNz
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9pbmNsdWRlL3JlY2VpdmVfc3RhdGlzdGljcy5oCkBAIC0xMiwxMSArMTIsMTMg
QEAKICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JFQ0VJVkVfU1RBVElTVElDU19I
XwogCiAjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+
CiAKICNpbmNsdWRlICJjYWxsL3J0cF9wYWNrZXRfc2lua19pbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21v
ZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUv
cnRjcF9zdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0
cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC9yZXBvcnRfYmxvY2suaCIKICNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5o
IgpAQCAtNTQsMTQgKzU2LDE0IEBAIGNsYXNzIFJlY2VpdmVTdGF0aXN0aWNzIDogcHVibGljIFJl
Y2VpdmVTdGF0aXN0aWNzUHJvdmlkZXIsCiAgcHVibGljOgogICB+UmVjZWl2ZVN0YXRpc3RpY3Mo
KSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAKLSAgc3RhdGljIFJlY2VpdmVTdGF0aXN0aWNzKiBDcmVh
dGUoQ2xvY2sqIGNsb2NrKTsKKyAgc3RhdGljIFJlY2VpdmVTdGF0aXN0aWNzKiBDcmVhdGUoQ2xv
Y2sqIGNsb2NrKSB7CisgICAgcmV0dXJuIENyZWF0ZShjbG9jaywgbnVsbHB0ciwgbnVsbHB0ciku
cmVsZWFzZSgpOworICB9CiAKLSAgLy8gVXBkYXRlcyB0aGUgcmVjZWl2ZSBzdGF0aXN0aWNzIHdp
dGggdGhpcyBwYWNrZXQuCi0gIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzgwMTYpOiBEZXByZWNh
dGVkLiBEZWxldGUgYXMgc29vbiBhcwotICAvLyBkb3duc3RyZWFtIGNvZGUgaXMgdXBkYXRlZCB0
byB1c2UgT25SdHBQYWNrZXQuCi0gIFJUQ19ERVBSRUNBVEVECi0gIHZpcnR1YWwgdm9pZCBJbmNv
bWluZ1BhY2tldChjb25zdCBSVFBIZWFkZXImIHJ0cF9oZWFkZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgcGFja2V0X2xlbmd0aCkgPSAwOworICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlY2VpdmVTdGF0aXN0aWNzPiBDcmVhdGUoCisgICAgICBDbG9jayogY2xvY2ss
CisgICAgICBSdGNwU3RhdGlzdGljc0NhbGxiYWNrKiBydGNwX2NhbGxiYWNrLAorICAgICAgU3Ry
ZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIHJ0cF9jYWxsYmFjayk7CiAKICAgLy8gSW5jcmVtZW50
IGNvdW50ZXIgZm9yIG51bWJlciBvZiBGRUMgcGFja2V0cyByZWNlaXZlZC4KICAgdmlydHVhbCB2
b2lkIEZlY1BhY2tldFJlY2VpdmVkKGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpID0g
MDsKQEAgLTc0LDE0ICs3Niw2IEBAIGNsYXNzIFJlY2VpdmVTdGF0aXN0aWNzIDogcHVibGljIFJl
Y2VpdmVTdGF0aXN0aWNzUHJvdmlkZXIsCiAgIC8vIERldGVjdCByZXRyYW5zbWlzc2lvbnMsIGVu
YWJsaW5nIHVwZGF0ZXMgb2YgdGhlIHJldHJhbnNtaXR0ZWQgY291bnRlcnMuIFRoZQogICAvLyBk
ZWZhdWx0IGlzIGZhbHNlLgogICB2aXJ0dWFsIHZvaWQgRW5hYmxlUmV0cmFuc21pdERldGVjdGlv
bih1aW50MzJfdCBzc3JjLCBib29sIGVuYWJsZSkgPSAwOwotCi0gIC8vIENhbGxlZCBvbiBuZXcg
UlRDUCBzdGF0cyBjcmVhdGlvbi4KLSAgdmlydHVhbCB2b2lkIFJlZ2lzdGVyUnRjcFN0YXRpc3Rp
Y3NDYWxsYmFjaygKLSAgICAgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIGNhbGxiYWNrKSA9IDA7
Ci0KLSAgLy8gQ2FsbGVkIG9uIG5ldyBSVFAgc3RhdHMgY3JlYXRpb24uCi0gIHZpcnR1YWwgdm9p
ZCBSZWdpc3RlclJ0cFN0YXRpc3RpY3NDYWxsYmFjaygKLSAgICAgIFN0cmVhbURhdGFDb3VudGVy
c0NhbGxiYWNrKiBjYWxsYmFjaykgPSAwOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3IuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yLmgKaW5kZXggNTE5NWU4YWI3ZTMxNmM5ZWRl
Zjc0MTBjZGFhNjViMWRmMWIwNGIxYS4uZTZkMjY5YzRkZGFiYjFiOWI1M2JhODhlMzVlZjc2NzU0
MmQ1MzgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3Iu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcmVtb3RlX250cF90aW1lX2VzdGltYXRvci5oCkBAIC0xMSw3ICsx
MSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9SRU1PVEVfTlRQX1RJTUVf
RVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9SRU1PVEVfTlRQ
X1RJTUVfRVNUSU1BVE9SX0hfCiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RkaW50
Lmg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX21lZGlhbl9maWx0ZXIuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS9ydGNwX3N0YXRpc3RpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydGNwX3N0YXRpc3RpY3MuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMWQ1NzZkZTJkODZmYThlODUyMjZiYmZiNTlmNWE2YjM4NzRiZjYyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfSU5D
TFVERV9SVENQX1NUQVRJU1RJQ1NfSF8KKyNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURF
X1JUQ1BfU1RBVElTVElDU19IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSB3
ZWJydGMgeworCisvLyBTdGF0aXN0aWNzIGZvciBhbiBSVENQIGNoYW5uZWwKK3N0cnVjdCBSdGNw
U3RhdGlzdGljcyB7CisgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zdCA9IDA7CisgIGludDMyX3QgcGFj
a2V0c19sb3N0ID0gMDsgIC8vIERlZmluZWQgYXMgYSAyNCBiaXQgc2lnbmVkIGludGVnZXIgaW4g
UlRDUAorICB1aW50MzJfdCBleHRlbmRlZF9oaWdoZXN0X3NlcXVlbmNlX251bWJlciA9IDA7Cisg
IHVpbnQzMl90IGppdHRlciA9IDA7Cit9OworCitjbGFzcyBSdGNwU3RhdGlzdGljc0NhbGxiYWNr
IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgflJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2soKSB7fQorCisg
IHZpcnR1YWwgdm9pZCBTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBSdGNwU3RhdGlzdGljcyYgc3Rh
dGlzdGljcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNzcmMp
ID0gMDsKKyAgdmlydHVhbCB2b2lkIENOYW1lQ2hhbmdlZChjb25zdCBjaGFyKiBjbmFtZSwgdWlu
dDMyX3Qgc3NyYykgPSAwOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworI2VuZGlmICAv
LyBNT0RVTEVTX1JUUF9SVENQX0lOQ0xVREVfUlRDUF9TVEFUSVNUSUNTX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hl
YWRlcl9leHRlbnNpb25fbWFwLmgKaW5kZXggYjhmMjdhMTMxMjQ1MzJlNWI0MmVlYzYyNjA2M2U5
YjMxYzk4YzgyZC4uMzkxYzViZWFhNWE2MmJjYjA3OWQxOTEyMzFhNjI1YmEyYTgzMmFiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRl
ZiBNT0RVTEVTX1JUUF9SVENQX0lOQ0xVREVfUlRQX0hFQURFUl9FWFRFTlNJT05fTUFQX0hfCiAj
ZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9SVFBfSEVBREVSX0VYVEVOU0lPTl9NQVBf
SF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUg
ImFwaS9hcnJheV92aWV3LmgiCkBAIC0yNiw2ICsyNyw3IEBAIGNsYXNzIFJ0cEhlYWRlckV4dGVu
c2lvbk1hcCB7CiAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtJbnZhbGlkSWQgPSAwOwogCiAgIFJ0
cEhlYWRlckV4dGVuc2lvbk1hcCgpOworICBleHBsaWNpdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAo
Ym9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpOwogICBleHBsaWNpdCBSdHBIZWFkZXJFeHRlbnNpb25N
YXAocnRjOjpBcnJheVZpZXc8Y29uc3QgUnRwRXh0ZW5zaW9uPiBleHRlbnNpb25zKTsKIAogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRXh0ZW5zaW9uPgpAQCAtNTMsMTggKzU1LDE5IEBAIGNsYXNzIFJ0
cEhlYWRlckV4dGVuc2lvbk1hcCB7CiAgIH0KICAgaW50MzJfdCBEZXJlZ2lzdGVyKFJUUEV4dGVu
c2lvblR5cGUgdHlwZSk7CiAKLSAgYm9vbCBJc01peGVkT25lVHdvQnl0ZUhlYWRlclN1cHBvcnRl
ZCgpIGNvbnN0IHsKLSAgICByZXR1cm4gbWl4ZWRfb25lX3R3b19ieXRlX2hlYWRlcl9zdXBwb3J0
ZWRfOwotICB9Ci0gIHZvaWQgU2V0TWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKGJvb2wg
c3VwcG9ydGVkKSB7Ci0gICAgbWl4ZWRfb25lX3R3b19ieXRlX2hlYWRlcl9zdXBwb3J0ZWRfID0g
c3VwcG9ydGVkOworICAvLyBDb3JyZXNwb25kcyB0byB0aGUgU0RQIGF0dHJpYnV0ZSBleHRtYXAt
YWxsb3ctbWl4ZWQsIHNlZSBSRkM4Mjg1LgorICAvLyBTZXQgdG8gdHJ1ZSBpZiBpdCdzIGFsbG93
ZWQgdG8gbWl4IG9uZS0gYW5kIHR3by1ieXRlIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucworICAvLyBp
biB0aGUgc2FtZSBzdHJlYW0uCisgIGJvb2wgRXh0bWFwQWxsb3dNaXhlZCgpIGNvbnN0IHsgcmV0
dXJuIGV4dG1hcF9hbGxvd19taXhlZF87IH0KKyAgdm9pZCBTZXRFeHRtYXBBbGxvd01peGVkKGJv
b2wgZXh0bWFwX2FsbG93X21peGVkKSB7CisgICAgZXh0bWFwX2FsbG93X21peGVkXyA9IGV4dG1h
cF9hbGxvd19taXhlZDsKICAgfQogCiAgcHJpdmF0ZToKICAgYm9vbCBSZWdpc3RlcihpbnQgaWQs
IFJUUEV4dGVuc2lvblR5cGUgdHlwZSwgY29uc3QgY2hhciogdXJpKTsKIAogICB1aW50OF90IGlk
c19ba1J0cEV4dGVuc2lvbk51bWJlck9mRXh0ZW5zaW9uc107Ci0gIGJvb2wgbWl4ZWRfb25lX3R3
b19ieXRlX2hlYWRlcl9zdXBwb3J0ZWRfOworICBib29sIGV4dG1hcF9hbGxvd19taXhlZF87CiB9
OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hl
YWRlcl9wYXJzZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX3BhcnNlci5oCmluZGV4IDJkODRm
YzFlNjkwMzkyMGY5OTdkZjQ0YjZkZjA4ODYzZGJmMDU3ZDguLjg1ZWFiOTBhNzNhY2Q1MjE0N2Ex
N2NiZTU5NDQ0NWMzMjYzNTIzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX3Bh
cnNlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX3BhcnNlci5oCkBAIC0xMCw2ICsxMCw3
IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9SVFBfSEVBREVSX1BBUlNFUl9I
XwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX0lOQ0xVREVfUlRQX0hFQURFUl9QQVJTRVJfSF8K
IAorI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBA
IC0zNiw4ICszNywxNCBAQCBjbGFzcyBSdHBIZWFkZXJQYXJzZXIgewogICB2aXJ0dWFsIGJvb2wg
UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBpZCkgPSAwOwogCisg
IC8vIFJlZ2lzdGVycyBhbiBSVFAgaGVhZGVyIGV4dGVuc2lvbi4KKyAgdmlydHVhbCBib29sIFJl
Z2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJ0cEV4dGVuc2lvbiBleHRlbnNpb24pID0gMDsKKwog
ICAvLyBEZS1yZWdpc3RlcnMgYW4gUlRQIGhlYWRlciBleHRlbnNpb24uCiAgIHZpcnR1YWwgYm9v
bCBEZXJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUgdHlwZSkgPSAw
OworCisgIC8vIERlLXJlZ2lzdGVycyBhbiBSVFAgaGVhZGVyIGV4dGVuc2lvbi4KKyAgdmlydHVh
bCBib29sIERlcmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUnRwRXh0ZW5zaW9uIGV4dGVuc2lv
bikgPSAwOwogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKICNlbmRpZiAgLy8gTU9EVUxFU19S
VFBfUlRDUF9JTkNMVURFX1JUUF9IRUFERVJfUEFSU0VSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1
ZGUvcnRwX3J0Y3AuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oCmluZGV4IDliMjlmNzYyMmUyZmYx
MzQyMzBjYTA1NmIxZDhhNjU1NTNkNmUyYzUuLmQxMzZhNWU2ZTlhM2JhNzYyM2NjYjNjNGM3MzIx
MzEyMTI3MTRkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9ydHBfcnRjcC5oCkBAIC0xOCw5ICsxOCw5IEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlv
bi5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
CiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3NlbmRlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9yZWNlaXZlX3N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Nv
bnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgpAQCAt
MjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEZvcndhcmQgZGVjbGFyYXRp
b25zLgorY2xhc3MgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U7CiBjbGFzcyBPdmVyaGVhZE9ic2Vy
dmVyOwogY2xhc3MgUmF0ZUxpbWl0ZXI7CiBjbGFzcyBSZWNlaXZlU3RhdGlzdGljc1Byb3ZpZGVy
OwpAQCAtOTIsMTEgKzkzLDIwIEBAIGNsYXNzIFJ0cFJ0Y3AgOiBwdWJsaWMgTW9kdWxlLCBwdWJs
aWMgUnRjcEZlZWRiYWNrU2VuZGVySW50ZXJmYWNlIHsKICAgICBSYXRlTGltaXRlciogcmV0cmFu
c21pc3Npb25fcmF0ZV9saW1pdGVyID0gbnVsbHB0cjsKICAgICBPdmVyaGVhZE9ic2VydmVyKiBv
dmVyaGVhZF9vYnNlcnZlciA9IG51bGxwdHI7CiAgICAgUnRwS2VlcEFsaXZlQ29uZmlnIGtlZXBh
bGl2ZV9jb25maWc7Ci0gICAgUnRjcEludGVydmFsQ29uZmlnIHJ0Y3BfaW50ZXJ2YWxfY29uZmln
OworCisgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0gMDsKIAogICAgIC8vIFVwZGF0
ZSBuZXR3b3JrMiBpbnN0ZWFkIG9mIHBhY2VyX2V4aXQgZmllbGQgb2YgdmlkZW8gdGltaW5nIGV4
dGVuc2lvbi4KICAgICBib29sIHBvcHVsYXRlX25ldHdvcmsyX3RpbWVzdGFtcCA9IGZhbHNlOwog
CisgICAgLy8gRTJFRSBDdXN0b20gVmlkZW8gRnJhbWUgRW5jcnlwdGlvbgorICAgIEZyYW1lRW5j
cnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IgPSBudWxscHRyOworICAgIC8vIFJlcXVp
cmUgYWxsIG91dGdvaW5nIGZyYW1lcyB0byBiZSBlbmNyeXB0ZWQgd2l0aCBhIEZyYW1lRW5jcnlw
dG9yLgorICAgIGJvb2wgcmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uID0gZmFsc2U7CisKKyAgICAv
LyBDb3JyZXNwb25kcyB0byBleHRtYXAtYWxsb3ctbWl4ZWQgaW4gU0RQIG5lZ290aWF0aW9uLgor
ICAgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkID0gZmFsc2U7CisKICAgIHByaXZhdGU6CiAgICAg
UlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihDb25maWd1cmF0aW9uKTsKICAgfTsKQEAgLTEz
Niw2ICsxNDYsOCBAQCBjbGFzcyBSdHBSdGNwIDogcHVibGljIE1vZHVsZSwgcHVibGljIFJ0Y3BG
ZWVkYmFja1NlbmRlckludGVyZmFjZSB7CiAgIC8vIFJldHVybnMgLTEgb24gZmFpbHVyZSBlbHNl
IDAuCiAgIHZpcnR1YWwgaW50MzJfdCBEZVJlZ2lzdGVyU2VuZFBheWxvYWQoaW50OF90IHBheWxv
YWRfdHlwZSkgPSAwOwogCisgIHZpcnR1YWwgdm9pZCBTZXRFeHRtYXBBbGxvd01peGVkKGJvb2wg
ZXh0bWFwX2FsbG93X21peGVkKSA9IDA7CisKICAgLy8gKERlKXJlZ2lzdGVycyBSVFAgaGVhZGVy
IGV4dGVuc2lvbiB0eXBlIGFuZCBpZC4KICAgLy8gUmV0dXJucyAtMSBvbiBmYWlsdXJlIGVsc2Ug
MC4KICAgdmlydHVhbCBpbnQzMl90IFJlZ2lzdGVyU2VuZFJ0cEhlYWRlckV4dGVuc2lvbihSVFBF
eHRlbnNpb25UeXBlIHR5cGUsCkBAIC0yMTMsNiArMjI1LDEwIEBAIGNsYXNzIFJ0cFJ0Y3AgOiBw
dWJsaWMgTW9kdWxlLCBwdWJsaWMgUnRjcEZlZWRiYWNrU2VuZGVySW50ZXJmYWNlIHsKICAgLy8g
UmV0dXJucyBjdXJyZW50IG1lZGlhIHNlbmRpbmcgc3RhdHVzLgogICB2aXJ0dWFsIGJvb2wgU2Vu
ZGluZ01lZGlhKCkgY29uc3QgPSAwOwogCisgIC8vIEluZGljYXRlIHRoYXQgdGhlIHBhY2tldHMg
c2VudCBieSB0aGlzIG1vZHVsZSBzaG91bGQgYmUgY291bnRlZCB0b3dhcmRzIHRoZQorICAvLyBi
aXRyYXRlIGVzdGltYXRlIHNpbmNlIHRoZSBzdHJlYW0gcGFydGljaXBhdGVzIGluIHRoZSBiaXRy
YXRlIGFsbG9jYXRpb24uCisgIHZpcnR1YWwgdm9pZCBTZXRBc1BhcnRPZkFsbG9jYXRpb24oYm9v
bCBwYXJ0X29mX2FsbG9jYXRpb24pID0gMDsKKwogICAvLyBSZXR1cm5zIGN1cnJlbnQgYml0cmF0
ZSBpbiBLYml0L3MuCiAgIHZpcnR1YWwgdm9pZCBCaXRyYXRlU2VudCh1aW50MzJfdCogdG90YWxf
cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiB2aWRlb19yYXRlLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRw
X3J0Y3BfZGVmaW5lcy5jYwppbmRleCBmODZiMjM4YjdkYWViZTYzMmYxZmU0ZGFkMjNhNDQ4MzQ0
NGE4YzljLi5kNzQzZjUyZjdlNmRmM2VhMjY4MzIxMjAwYzMzNzU4NTE2ZjI5ZWViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0
Y3BfZGVmaW5lcy5jYwpAQCAtOSw2ICs5LDE0IEBACiAgKi8KIAogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldC5oIgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IApAQCAtNTQsNCArNjIsODAgQEAgUGF5bG9hZFVuaW9uOjp+UGF5bG9hZFVuaW9uKCkgPSBkZWZh
dWx0OwogUGF5bG9hZFVuaW9uJiBQYXlsb2FkVW5pb246Om9wZXJhdG9yPShjb25zdCBQYXlsb2Fk
VW5pb24mKSA9IGRlZmF1bHQ7CiBQYXlsb2FkVW5pb24mIFBheWxvYWRVbmlvbjo6b3BlcmF0b3I9
KFBheWxvYWRVbmlvbiYmKSA9IGRlZmF1bHQ7CiAKK1BhY2tldEZlZWRiYWNrOjpQYWNrZXRGZWVk
YmFjayhpbnQ2NF90IGFycml2YWxfdGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIpCisgICAgOiBQYWNrZXRGZWVkYmFjaygtMSwK
KyAgICAgICAgICAgICAgICAgICAgIGFycml2YWxfdGltZV9tcywKKyAgICAgICAgICAgICAgICAg
ICAgIGtOb1NlbmRUaW1lLAorICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVyLAor
ICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAg
ICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgUGFjZWRQYWNrZXRJbmZvKCkp
IHt9CisKK1BhY2tldEZlZWRiYWNrOjpQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGFycml2YWxfdGlt
ZV9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNlbmRfdGltZV9t
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1i
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBh
Y2luZ19pbmZvKQorICAgIDogUGFja2V0RmVlZGJhY2soLTEsCisgICAgICAgICAgICAgICAgICAg
ICBhcnJpdmFsX3RpbWVfbXMsCisgICAgICAgICAgICAgICAgICAgICBzZW5kX3RpbWVfbXMsCisg
ICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAg
ICBwYXlsb2FkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAg
ICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgIHBhY2luZ19pbmZvKSB7fQorCitQYWNrZXRG
ZWVkYmFjazo6UGFja2V0RmVlZGJhY2soaW50NjRfdCBjcmVhdGlvbl90aW1lX21zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZF9zaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGxvY2FsX25ldF9pZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCByZW1vdGVfbmV0X2lkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2luZm8pCisg
ICAgOiBQYWNrZXRGZWVkYmFjayhjcmVhdGlvbl90aW1lX21zLAorICAgICAgICAgICAgICAgICAg
ICAga05vdFJlY2VpdmVkLAorICAgICAgICAgICAgICAgICAgICAga05vU2VuZFRpbWUsCisgICAg
ICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICBw
YXlsb2FkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICBsb2NhbF9uZXRfaWQsCisgICAgICAg
ICAgICAgICAgICAgICByZW1vdGVfbmV0X2lkLAorICAgICAgICAgICAgICAgICAgICAgcGFjaW5n
X2luZm8pIHt9CisKK1BhY2tldEZlZWRiYWNrOjpQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGNyZWF0
aW9uX3RpbWVfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBhcnJp
dmFsX3RpbWVfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBzZW5k
X3RpbWVfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3Qgc2VxdWVu
Y2VfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXlsb2Fk
X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbG9jYWxfbmV0
X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9uZXRf
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZv
JiBwYWNpbmdfaW5mbykKKyAgICA6IGNyZWF0aW9uX3RpbWVfbXMoY3JlYXRpb25fdGltZV9tcyks
CisgICAgICBhcnJpdmFsX3RpbWVfbXMoYXJyaXZhbF90aW1lX21zKSwKKyAgICAgIHNlbmRfdGlt
ZV9tcyhzZW5kX3RpbWVfbXMpLAorICAgICAgc2VxdWVuY2VfbnVtYmVyKHNlcXVlbmNlX251bWJl
ciksCisgICAgICBwYXlsb2FkX3NpemUocGF5bG9hZF9zaXplKSwKKyAgICAgIHVuYWNrbm93bGVk
Z2VkX2RhdGEoMCksCisgICAgICBsb2NhbF9uZXRfaWQobG9jYWxfbmV0X2lkKSwKKyAgICAgIHJl
bW90ZV9uZXRfaWQocmVtb3RlX25ldF9pZCksCisgICAgICBwYWNpbmdfaW5mbyhwYWNpbmdfaW5m
bykge30KKworUGFja2V0RmVlZGJhY2s6OlBhY2tldEZlZWRiYWNrKGNvbnN0IFBhY2tldEZlZWRi
YWNrJikgPSBkZWZhdWx0OworUGFja2V0RmVlZGJhY2smIFBhY2tldEZlZWRiYWNrOjpvcGVyYXRv
cj0oY29uc3QgUGFja2V0RmVlZGJhY2smKSA9IGRlZmF1bHQ7CitQYWNrZXRGZWVkYmFjazo6flBh
Y2tldEZlZWRiYWNrKCkgPSBkZWZhdWx0OworCitib29sIFBhY2tldEZlZWRiYWNrOjpvcGVyYXRv
cj09KGNvbnN0IFBhY2tldEZlZWRiYWNrJiByaHMpIGNvbnN0IHsKKyAgcmV0dXJuIGFycml2YWxf
dGltZV9tcyA9PSByaHMuYXJyaXZhbF90aW1lX21zICYmCisgICAgICAgICBzZW5kX3RpbWVfbXMg
PT0gcmhzLnNlbmRfdGltZV9tcyAmJgorICAgICAgICAgc2VxdWVuY2VfbnVtYmVyID09IHJocy5z
ZXF1ZW5jZV9udW1iZXIgJiYKKyAgICAgICAgIHBheWxvYWRfc2l6ZSA9PSByaHMucGF5bG9hZF9z
aXplICYmIHBhY2luZ19pbmZvID09IHJocy5wYWNpbmdfaW5mbzsKK30KKwordm9pZCBSdHBQYWNr
ZXRDb3VudGVyOjpBZGRQYWNrZXQoY29uc3QgUnRwUGFja2V0JiBwYWNrZXQpIHsKKyAgKytwYWNr
ZXRzOworICBoZWFkZXJfYnl0ZXMgKz0gcGFja2V0LmhlYWRlcnNfc2l6ZSgpOworICBwYWRkaW5n
X2J5dGVzICs9IHBhY2tldC5wYWRkaW5nX3NpemUoKTsKKyAgcGF5bG9hZF9ieXRlcyArPSBwYWNr
ZXQucGF5bG9hZF9zaXplKCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVm
aW5lcy5oCmluZGV4IDY1MDNiNGVkY2MzYTNiODhkN2ZlMGNlNjU3YjAzZWY3Yjc4MGFkNmMuLmFi
NGZjYWVjYzc5YTQ4MTA3MWJjMTY2ZGM3OWE1MmZlYjBhNjI1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMu
aApAQCAtMjcsMjggKzI3LDIwIEBACiAjZGVmaW5lIElQX1BBQ0tFVF9TSVpFIDE1MDAgIC8vIHdl
IGFzc3VtZSBldGhlcm5ldAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIFJ0cFBhY2tldDsK
IG5hbWVzcGFjZSBydGNwIHsKIGNsYXNzIFRyYW5zcG9ydEZlZWRiYWNrOwogfQogCiBjb25zdCBp
bnQga1ZpZGVvUGF5bG9hZFR5cGVGcmVxdWVuY3kgPSA5MDAwMDsKLS8vIFRPRE8oc29sZW5iZXJn
KTogUlRQIHRpbWUgc3RhbXAgcmF0ZSBmb3IgUlRDUCBpcyBmaXhlZCBhdCA4aywgdGhpcyBpcyBs
ZWdhY3kKLS8vIGFuZCBzaG91bGQgYmUgZml4ZWQuCi0vLyBTZWU6IGh0dHBzOi8vYnVncy5jaHJv
bWl1bS5vcmcvcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD02NDU4CisKKy8vIFRPRE8oYnVncy53
ZWJydGMub3JnLzY0NTgpOiBSZW1vdmUgdGhpcyB3aGVuIGFsbCB0aGUgZGVwZW5kaW5nIHByb2pl
Y3RzIGFyZQorLy8gdXBkYXRlZCB0byBjb3JyZWN0bHkgc2V0IHJ0cCByYXRlIGZvciBSdGNwU2Vu
ZGVyLgogY29uc3QgaW50IGtCb2d1c1J0cFJhdGVGb3JBdWRpb1J0Y3AgPSA4MDAwOwogCiAvLyBN
aW5pbXVtIFJUUCBoZWFkZXIgc2l6ZSBpbiBieXRlcy4KIGNvbnN0IHVpbnQ4X3Qga1J0cEhlYWRl
clNpemUgPSAxMjsKIAotc3RydWN0IFJ0Y3BJbnRlcnZhbENvbmZpZyBmaW5hbCB7Ci0gIFJ0Y3BJ
bnRlcnZhbENvbmZpZygpID0gZGVmYXVsdDsKLSAgUnRjcEludGVydmFsQ29uZmlnKGludDY0X3Qg
dmlkZW9faW50ZXJ2YWxfbXMsIGludDY0X3QgYXVkaW9faW50ZXJ2YWxfbXMpCi0gICAgICA6IHZp
ZGVvX2ludGVydmFsX21zKHZpZGVvX2ludGVydmFsX21zKSwKLSAgICAgICAgYXVkaW9faW50ZXJ2
YWxfbXMoYXVkaW9faW50ZXJ2YWxfbXMpIHt9Ci0gIGludDY0X3QgdmlkZW9faW50ZXJ2YWxfbXMg
PSAxMDAwOwotICBpbnQ2NF90IGF1ZGlvX2ludGVydmFsX21zID0gNTAwMDsKLX07Ci0KIHN0cnVj
dCBBdWRpb1BheWxvYWQgewogICBTZHBBdWRpb0Zvcm1hdCBmb3JtYXQ7CiAgIHVpbnQzMl90IHJh
dGU7CkBAIC0xMTIsNiArMTA0LDcgQEAgZW51bSBSVFBFeHRlbnNpb25UeXBlIDogaW50IHsKICAg
a1J0cEV4dGVuc2lvblJlcGFpcmVkUnRwU3RyZWFtSWQsCiAgIGtSdHBFeHRlbnNpb25NaWQsCiAg
IGtSdHBFeHRlbnNpb25HZW5lcmljRnJhbWVEZXNjcmlwdG9yLAorICBrUnRwRXh0ZW5zaW9uQ29s
b3JTcGFjZSwKICAga1J0cEV4dGVuc2lvbk51bWJlck9mRXh0ZW5zaW9ucyAgLy8gTXVzdCBiZSB0
aGUgbGFzdCBlbnRpdHkgaW4gdGhlIGVudW0uCiB9OwogCkBAIC0yMjIsMTUgKzIxNSw2IEBAIHN0
cnVjdCBSdHBTdGF0ZSB7CiAgIGJvb2wgbWVkaWFfaGFzX2JlZW5fc2VudDsKIH07CiAKLWNsYXNz
IFJ0cERhdGEgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+UnRwRGF0YSgpIHt9Ci0KLSAgdmlydHVh
bCBpbnQzMl90IE9uUmVjZWl2ZWRQYXlsb2FkRGF0YShjb25zdCB1aW50OF90KiBwYXlsb2FkX2Rh
dGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBheWxv
YWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJSdGNSVFBIZWFkZXIqIHJ0cF9oZWFkZXIpID0gMDsKLX07Ci0KIC8vIENhbGxiYWNrIGludGVy
ZmFjZSBmb3IgcGFja2V0cyByZWNvdmVyZWQgYnkgRmxleEZFQyBvciBVTFBGRUMuIEluCiAvLyB0
aGUgRmxleEZFQyBjYXNlLCB0aGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGFibGUgdG8gZGVt
dWx0aXBsZXgKIC8vIHRoZSByZWNvdmVyZWQgUlRQIHBhY2tldHMgYmFzZWQgb24gU1NSQy4KQEAg
LTI2Myw0NCArMjQ3LDIwIEBAIGNsYXNzIFJ0Y3BCYW5kd2lkdGhPYnNlcnZlciB7CiB9OwogCiBz
dHJ1Y3QgUGFja2V0RmVlZGJhY2sgewotICBQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGFycml2YWxf
dGltZV9tcywgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyKQotICAgICAgOiBQYWNrZXRGZWVkYmFj
aygtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgYXJyaXZhbF90aW1lX21zLAotICAgICAgICAg
ICAgICAgICAgICAgICBrTm9TZW5kVGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVu
Y2VfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAg
ICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAg
ICBQYWNlZFBhY2tldEluZm8oKSkge30KKyAgUGFja2V0RmVlZGJhY2soaW50NjRfdCBhcnJpdmFs
X3RpbWVfbXMsIHVpbnQxNl90IHNlcXVlbmNlX251bWJlcik7CiAKICAgUGFja2V0RmVlZGJhY2so
aW50NjRfdCBhcnJpdmFsX3RpbWVfbXMsCiAgICAgICAgICAgICAgICAgIGludDY0X3Qgc2VuZF90
aW1lX21zLAogICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsCiAgICAg
ICAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgIGNvbnN0
IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2luZm8pCi0gICAgICA6IFBhY2tldEZlZWRiYWNrKC0x
LAotICAgICAgICAgICAgICAgICAgICAgICBhcnJpdmFsX3RpbWVfbXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgIHNlbmRfdGltZV9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2Vf
bnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkX3NpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAg
ICAgICAgICAgIHBhY2luZ19pbmZvKSB7fQorICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBh
Y2tldEluZm8mIHBhY2luZ19pbmZvKTsKIAogICBQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGNyZWF0
aW9uX3RpbWVfbXMsCiAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwK
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwKICAgICAgICAgICAgICAgICAg
dWludDE2X3QgbG9jYWxfbmV0X2lkLAogICAgICAgICAgICAgICAgICB1aW50MTZfdCByZW1vdGVf
bmV0X2lkLAotICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19p
bmZvKQotICAgICAgOiBQYWNrZXRGZWVkYmFjayhjcmVhdGlvbl90aW1lX21zLAotICAgICAgICAg
ICAgICAgICAgICAgICBrTm90UmVjZWl2ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGtOb1Nl
bmRUaW1lLAotICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgIHBheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbG9j
YWxfbmV0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfbmV0X2lkLAotICAgICAg
ICAgICAgICAgICAgICAgICBwYWNpbmdfaW5mbykge30KKyAgICAgICAgICAgICAgICAgY29uc3Qg
UGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbyk7CiAKICAgUGFja2V0RmVlZGJhY2soaW50NjRf
dCBjcmVhdGlvbl90aW1lX21zLAogICAgICAgICAgICAgICAgICBpbnQ2NF90IGFycml2YWxfdGlt
ZV9tcywKQEAgLTMwOSwxNSArMjY5LDEwIEBAIHN0cnVjdCBQYWNrZXRGZWVkYmFjayB7CiAgICAg
ICAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkX3NpemUsCiAgICAgICAgICAgICAgICAgIHVpbnQx
Nl90IGxvY2FsX25ldF9pZCwKICAgICAgICAgICAgICAgICAgdWludDE2X3QgcmVtb3RlX25ldF9p
ZCwKLSAgICAgICAgICAgICAgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbykK
LSAgICAgIDogY3JlYXRpb25fdGltZV9tcyhjcmVhdGlvbl90aW1lX21zKSwKLSAgICAgICAgYXJy
aXZhbF90aW1lX21zKGFycml2YWxfdGltZV9tcyksCi0gICAgICAgIHNlbmRfdGltZV9tcyhzZW5k
X3RpbWVfbXMpLAotICAgICAgICBzZXF1ZW5jZV9udW1iZXIoc2VxdWVuY2VfbnVtYmVyKSwKLSAg
ICAgICAgcGF5bG9hZF9zaXplKHBheWxvYWRfc2l6ZSksCi0gICAgICAgIGxvY2FsX25ldF9pZChs
b2NhbF9uZXRfaWQpLAotICAgICAgICByZW1vdGVfbmV0X2lkKHJlbW90ZV9uZXRfaWQpLAotICAg
ICAgICBwYWNpbmdfaW5mbyhwYWNpbmdfaW5mbykge30KKyAgICAgICAgICAgICAgICAgY29uc3Qg
UGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbyk7CisgIFBhY2tldEZlZWRiYWNrKGNvbnN0IFBh
Y2tldEZlZWRiYWNrJik7CisgIFBhY2tldEZlZWRiYWNrJiBvcGVyYXRvcj0oY29uc3QgUGFja2V0
RmVlZGJhY2smKTsKKyAgflBhY2tldEZlZWRiYWNrKCk7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQga05vdEFQcm9iZSA9IC0xOwogICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qga05vdFJlY2Vp
dmVkID0gLTE7CkBAIC0zMjgsMTIgKzI4Myw3IEBAIHN0cnVjdCBQYWNrZXRGZWVkYmFjayB7CiAg
IC8vICAgICAgIGZvciBib29rLWtlZXBpbmcsIGFuZCBpcyBvZiBubyBpbnRlcmVzdCBvdXRzaWRl
IHRoYXQgY2xhc3MuCiAgIC8vIFRPRE8ocGhpbGlwZWwpOiBSZW1vdmUgfGNyZWF0aW9uX3RpbWVf
bXN8IGZyb20gUGFja2V0RmVlZGJhY2sgd2hlbiBjbGVhbmluZwogICAvLyAgICAgICAgICAgICAg
ICAgdXAgU2VuZFRpbWVIaXN0b3J5LgotICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFja2V0RmVl
ZGJhY2smIHJocykgY29uc3QgewotICAgIHJldHVybiBhcnJpdmFsX3RpbWVfbXMgPT0gcmhzLmFy
cml2YWxfdGltZV9tcyAmJgotICAgICAgICAgICBzZW5kX3RpbWVfbXMgPT0gcmhzLnNlbmRfdGlt
ZV9tcyAmJgotICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIgPT0gcmhzLnNlcXVlbmNlX251bWJl
ciAmJgotICAgICAgICAgICBwYXlsb2FkX3NpemUgPT0gcmhzLnBheWxvYWRfc2l6ZSAmJiBwYWNp
bmdfaW5mbyA9PSByaHMucGFjaW5nX2luZm87Ci0gIH0KKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFBhY2tldEZlZWRiYWNrJiByaHMpIGNvbnN0OwogCiAgIC8vIFRpbWUgY29ycmVzcG9uZGluZyB0
byB3aGVuIHRoaXMgb2JqZWN0IHdhcyBjcmVhdGVkLgogICBpbnQ2NF90IGNyZWF0aW9uX3RpbWVf
bXM7CkBAIC0zNTIsNiArMzAyLDggQEAgc3RydWN0IFBhY2tldEZlZWRiYWNrIHsKICAgaW50NjRf
dCBsb25nX3NlcXVlbmNlX251bWJlcjsKICAgLy8gU2l6ZSBvZiB0aGUgcGFja2V0IGV4Y2x1ZGlu
ZyBSVFAgaGVhZGVycy4KICAgc2l6ZV90IHBheWxvYWRfc2l6ZTsKKyAgLy8gU2l6ZSBvZiBwcmVj
ZWVkaW5nIHBhY2tldHMgdGhhdCBhcmUgbm90IHBhcnQgb2YgZmVlZGJhY2suCisgIHNpemVfdCB1
bmFja25vd2xlZGdlZF9kYXRhOwogICAvLyBUaGUgbmV0d29yayByb3V0ZSBpZHMgdGhhdCB0aGlz
IHBhY2tldCBpcyBhc3NvY2lhdGVkIHdpdGguCiAgIHVpbnQxNl90IGxvY2FsX25ldF9pZDsKICAg
dWludDE2X3QgcmVtb3RlX25ldF9pZDsKQEAgLTQ4OSwxMyArNDQxLDggQEAgc3RydWN0IFJ0cFBh
Y2tldENvdW50ZXIgewogICAgIHBhY2tldHMgLT0gb3RoZXIucGFja2V0czsKICAgfQogCi0gIHZv
aWQgQWRkUGFja2V0KHNpemVfdCBwYWNrZXRfbGVuZ3RoLCBjb25zdCBSVFBIZWFkZXImIGhlYWRl
cikgewotICAgICsrcGFja2V0czsKLSAgICBoZWFkZXJfYnl0ZXMgKz0gaGVhZGVyLmhlYWRlckxl
bmd0aDsKLSAgICBwYWRkaW5nX2J5dGVzICs9IGhlYWRlci5wYWRkaW5nTGVuZ3RoOwotICAgIHBh
eWxvYWRfYnl0ZXMgKz0KLSAgICAgICAgcGFja2V0X2xlbmd0aCAtIChoZWFkZXIuaGVhZGVyTGVu
Z3RoICsgaGVhZGVyLnBhZGRpbmdMZW5ndGgpOwotICB9CisgIC8vIE5vdCBpbmxpbmVkLCBzaW5j
ZSB1c2Ugb2YgUnRwUGFja2V0IHdvdWxkIHJlc3VsdCBpbiBjaXJjdWxhciBpbmNsdWRlcy4KKyAg
dm9pZCBBZGRQYWNrZXQoY29uc3QgUnRwUGFja2V0JiBwYWNrZXQpOwogCiAgIHNpemVfdCBUb3Rh
bEJ5dGVzKCkgY29uc3QgewogICAgIHJldHVybiBoZWFkZXJfYnl0ZXMgKyBwYXlsb2FkX2J5dGVz
ICsgcGFkZGluZ19ieXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5jYwppbmRleCBkMjRjMWIwOTRjNTFmOTk4ZWRhYjY1ZDZk
ZWY5ZTM3OTM3YThiZmUzLi4wNjFmODI3NjVjYzc1YmFhM2NhMDRjZGQ0M2M2NGYxOTkyZGQ1ZWI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL21vY2tzL21vY2tfcnRwX3J0Y3AuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9tb2Nrcy9tb2Nr
X3J0cF9ydGNwLmNjCkBAIC0xMiw5ICsxMiw2IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1N
b2NrUnRwRGF0YTo6TW9ja1J0cERhdGEoKSA9IGRlZmF1bHQ7Ci1Nb2NrUnRwRGF0YTo6fk1vY2tS
dHBEYXRhKCkgPSBkZWZhdWx0OwotCiBNb2NrUnRwUnRjcDo6TW9ja1J0cFJ0Y3AoKSA9IGRlZmF1
bHQ7CiBNb2NrUnRwUnRjcDo6fk1vY2tSdHBSdGNwKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL21vY2tzL21vY2tfcnRwX3J0Y3AuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5oCmluZGV4
IDZkNWJkZTQ3ODhmNGE2YWU0OGZmNmE4ZGRjMDg0Zjc2NjM0NGZhZGUuLjNiOWI5NDNjNDUzOTUw
NDEzMGQyNmQ1NWJjNGVjZjM0YTljY2I1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydHBf
cnRjcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5oCkBAIC0yNywxNyArMjcsNiBAQAog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3MgTW9ja1J0cERhdGEgOiBwdWJsaWMgUnRwRGF0
YSB7Ci0gcHVibGljOgotICBNb2NrUnRwRGF0YSgpOwotICB+TW9ja1J0cERhdGEoKTsKLQotICBN
T0NLX01FVEhPRDMoT25SZWNlaXZlZFBheWxvYWREYXRhLAotICAgICAgICAgICAgICAgaW50MzJf
dChjb25zdCB1aW50OF90KiBwYXlsb2FkX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBwYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJ0Y1JU
UEhlYWRlciogcnRwX2hlYWRlcikpOwotfTsKLQogY2xhc3MgTW9ja1J0cFJ0Y3AgOiBwdWJsaWMg
UnRwUnRjcCB7CiAgcHVibGljOgogICBNb2NrUnRwUnRjcCgpOwpAQCAtNTIsNiArNDEsNyBAQCBj
bGFzcyBNb2NrUnRwUnRjcCA6IHB1YmxpYyBSdHBSdGNwIHsKICAgTU9DS19NRVRIT0QyKFJlZ2lz
dGVyVmlkZW9TZW5kUGF5bG9hZCwKICAgICAgICAgICAgICAgIHZvaWQoaW50IHBheWxvYWRfdHlw
ZSwgY29uc3QgY2hhciogcGF5bG9hZF9uYW1lKSk7CiAgIE1PQ0tfTUVUSE9EMShEZVJlZ2lzdGVy
U2VuZFBheWxvYWQsIGludDMyX3QoaW50OF90IHBheWxvYWRfdHlwZSkpOworICBNT0NLX01FVEhP
RDEoU2V0RXh0bWFwQWxsb3dNaXhlZCwgdm9pZChib29sIGV4dG1hcF9hbGxvd19taXhlZCkpOwog
ICBNT0NLX01FVEhPRDIoUmVnaXN0ZXJTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uLAogICAgICAgICAg
ICAgICAgaW50MzJfdChSVFBFeHRlbnNpb25UeXBlIHR5cGUsIHVpbnQ4X3QgaWQpKTsKICAgTU9D
S19NRVRIT0QyKFJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uLApAQCAtODMsNiArNzMsNyBAQCBj
bGFzcyBNb2NrUnRwUnRjcCA6IHB1YmxpYyBSdHBSdGNwIHsKICAgTU9DS19DT05TVF9NRVRIT0Qw
KFNlbmRpbmcsIGJvb2woKSk7CiAgIE1PQ0tfTUVUSE9EMShTZXRTZW5kaW5nTWVkaWFTdGF0dXMs
IHZvaWQoYm9vbCBzZW5kaW5nKSk7CiAgIE1PQ0tfQ09OU1RfTUVUSE9EMChTZW5kaW5nTWVkaWEs
IGJvb2woKSk7CisgIE1PQ0tfTUVUSE9EMShTZXRBc1BhcnRPZkFsbG9jYXRpb24sIHZvaWQoYm9v
bCkpOwogICBNT0NLX0NPTlNUX01FVEhPRDQoQml0cmF0ZVNlbnQsCiAgICAgICAgICAgICAgICAg
ICAgICB2b2lkKHVpbnQzMl90KiB0b3RhbF9yYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCogdmlkZW9fcmF0ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1dGlu
Z19zb3VyY2VzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXMuY2MKaW5kZXggODUz
NzA2YzRmNWRjMTQwOTA5ZWUyMmM5ZTI2YzAyZDQ3ZmFjMWI5NC4uNjRkYzQ0M2UyOTVmNWM0NmQ4
YTcwYTBkNzFkZjNmZmNmNWM4MzczNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5n
X3NvdXJjZXMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXMuY2MKQEAgLTI1
LDkgKzI1LDExIEBAIENvbnRyaWJ1dGluZ1NvdXJjZXM6OkNvbnRyaWJ1dGluZ1NvdXJjZXMoKSA9
IGRlZmF1bHQ7CiBDb250cmlidXRpbmdTb3VyY2VzOjp+Q29udHJpYnV0aW5nU291cmNlcygpID0g
ZGVmYXVsdDsKIAogdm9pZCBDb250cmlidXRpbmdTb3VyY2VzOjpVcGRhdGUoaW50NjRfdCBub3df
bXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25z
dCB1aW50MzJfdD4gY3NyY3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQzMl90PiBjc3JjcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+IGF1ZGlvX2xldmVsKSB7CisgIEVu
dHJ5IGVudHJ5ID0geyBub3dfbXMsIGF1ZGlvX2xldmVsIH07CiAgIGZvciAodWludDMyX3QgY3Ny
YyA6IGNzcmNzKSB7Ci0gICAgbGFzdF9zZWVuX21zX1tjc3JjXSA9IG5vd19tczsKKyAgICBhY3Rp
dmVfY3NyY3NfW2NzcmNdID0gZW50cnk7CiAgIH0KICAgaWYgKCFuZXh0X3BydW5pbmdfbXNfKSB7
CiAgICAgbmV4dF9wcnVuaW5nX21zXyA9IG5vd19tcyArIGtQcnVuaW5nSW50ZXJ2YWxNczsKQEAg
LTQzLDkgKzQ1LDE2IEBAIHZvaWQgQ29udHJpYnV0aW5nU291cmNlczo6VXBkYXRlKGludDY0X3Qg
bm93X21zLAogLy8gbm9uLWNvbnN0Lgogc3RkOjp2ZWN0b3I8UnRwU291cmNlPiBDb250cmlidXRp
bmdTb3VyY2VzOjpHZXRTb3VyY2VzKGludDY0X3Qgbm93X21zKSBjb25zdCB7CiAgIHN0ZDo6dmVj
dG9yPFJ0cFNvdXJjZT4gc291cmNlczsKLSAgZm9yIChhdXRvJiByZWNvcmQgOiBsYXN0X3NlZW5f
bXNfKSB7Ci0gICAgaWYgKHJlY29yZC5zZWNvbmQgPj0gbm93X21zIC0ga0hpc3RvcnlNcykgewot
ICAgICAgc291cmNlcy5lbXBsYWNlX2JhY2socmVjb3JkLnNlY29uZCwgcmVjb3JkLmZpcnN0LCBS
dHBTb3VyY2VUeXBlOjpDU1JDKTsKKyAgZm9yIChhdXRvJiByZWNvcmQgOiBhY3RpdmVfY3NyY3Nf
KSB7CisgICAgaWYgKHJlY29yZC5zZWNvbmQubGFzdF9zZWVuX21zID49IG5vd19tcyAtIGtIaXN0
b3J5TXMpIHsKKyAgICAgIGlmIChyZWNvcmQuc2Vjb25kLmF1ZGlvX2xldmVsLmhhc192YWx1ZSgp
KSB7CisgICAgICAgIHNvdXJjZXMuZW1wbGFjZV9iYWNrKHJlY29yZC5zZWNvbmQubGFzdF9zZWVu
X21zLCByZWNvcmQuZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFNvdXJj
ZVR5cGU6OkNTUkMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWNvcmQuc2Vjb25k
LmF1ZGlvX2xldmVsKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNvdXJjZXMuZW1wbGFjZV9i
YWNrKHJlY29yZC5zZWNvbmQubGFzdF9zZWVuX21zLCByZWNvcmQuZmlyc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJ0cFNvdXJjZVR5cGU6OkNTUkMpOworICAgICAgfQogICAgIH0K
ICAgfQogCkBAIC01NCwxNSArNjMsMjAgQEAgc3RkOjp2ZWN0b3I8UnRwU291cmNlPiBDb250cmli
dXRpbmdTb3VyY2VzOjpHZXRTb3VyY2VzKGludDY0X3Qgbm93X21zKSBjb25zdCB7CiAKIC8vIERl
bGV0ZSBzdGFsZSBlbnRyaWVzLgogdm9pZCBDb250cmlidXRpbmdTb3VyY2VzOjpEZWxldGVPbGRF
bnRyaWVzKGludDY0X3Qgbm93X21zKSB7Ci0gIGZvciAoYXV0byBpdCA9IGxhc3Rfc2Vlbl9tc18u
YmVnaW4oKTsgaXQgIT0gbGFzdF9zZWVuX21zXy5lbmQoKTspIHsKLSAgICBpZiAoaXQtPnNlY29u
ZCA+PSBub3dfbXMgLSBrSGlzdG9yeU1zKSB7CisgIGZvciAoYXV0byBpdCA9IGFjdGl2ZV9jc3Jj
c18uYmVnaW4oKTsgaXQgIT0gYWN0aXZlX2NzcmNzXy5lbmQoKTspIHsKKyAgICBpZiAoaXQtPnNl
Y29uZC5sYXN0X3NlZW5fbXMgPj0gbm93X21zIC0ga0hpc3RvcnlNcykgewogICAgICAgLy8gU3Rp
bGwgcmVsZXZhbnQuCiAgICAgICArK2l0OwogICAgIH0gZWxzZSB7Ci0gICAgICBpdCA9IGxhc3Rf
c2Vlbl9tc18uZXJhc2UoaXQpOworICAgICAgaXQgPSBhY3RpdmVfY3NyY3NfLmVyYXNlKGl0KTsK
ICAgICB9CiAgIH0KICAgbmV4dF9wcnVuaW5nX21zXyA9IG5vd19tcyArIGtQcnVuaW5nSW50ZXJ2
YWxNczsKIH0KIAorQ29udHJpYnV0aW5nU291cmNlczo6RW50cnk6OkVudHJ5KCkgPSBkZWZhdWx0
OworQ29udHJpYnV0aW5nU291cmNlczo6RW50cnk6OkVudHJ5KGludDY0X3QgdGltZXN0YW1wX21z
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ4
X3Q+IGF1ZGlvX2xldmVsX2FyZykKKyAgICA6IGxhc3Rfc2Vlbl9tcyh0aW1lc3RhbXBfbXMpLCBh
dWRpb19sZXZlbChhdWRpb19sZXZlbF9hcmcpIHt9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1dGluZ19zb3VyY2VzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9j
b250cmlidXRpbmdfc291cmNlcy5oCmluZGV4IDFhNGE1NzJkOGY1NDQzMWJhNmE1MjNlNDBmNWQz
M2FmMDFmOGZiMjIuLjVlMzQ1MzljZTQ3N2UwYjdiZWRhZjgwZDA5OWE3NDQ3MzUxMTRlNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1dGluZ19zb3VyY2VzLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
Y29udHJpYnV0aW5nX3NvdXJjZXMuaApAQCAtMTgsNyArMTgsOCBAQAogCiAjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5jbHVk
ZSAiYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiYXBpL3J0cHJlY2VpdmVy
aW50ZXJmYWNlLmgiICAvLyBGb3IgUnRwU291cmNlCisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0
aWxzLmgiICAgICAgICAvLyBGb3Iga051bU1pbGxpc2Vjc1BlclNlYwogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIApAQCAtMzEsMTggKzMyLDI1IEBAIGNsYXNzIENvbnRyaWJ1dGluZ1NvdXJjZXMgewog
ICBDb250cmlidXRpbmdTb3VyY2VzKCk7CiAgIH5Db250cmlidXRpbmdTb3VyY2VzKCk7CiAKLSAg
Ly8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvMzMzMyk6IE5lZWRzIHRvIGJlIGV4dGVuZGVkIHdpdGgg
YXVkaW8tbGV2ZWwsIHRvCi0gIC8vIHN1cHBvcnQgUkZDNjQ2NS4KLSAgdm9pZCBVcGRhdGUoaW50
NjRfdCBub3dfbXMsIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQzMl90PiBjc3Jjcyk7CisgIHZv
aWQgVXBkYXRlKGludDY0X3Qgbm93X21zLCBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50MzJfdD4g
Y3NyY3MsCisgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+IGF1ZGlvX2xldmVs
KTsKIAogICAvLyBSZXR1cm5zIGNvbnRyaWJ1dGluZyBzb3VyY2VzIHNlZW4gdGhlIGxhc3QgMTAg
cy4KICAgc3RkOjp2ZWN0b3I8UnRwU291cmNlPiBHZXRTb3VyY2VzKGludDY0X3Qgbm93X21zKSBj
b25zdDsKIAogIHByaXZhdGU6CisgIHN0cnVjdCBFbnRyeSB7CisgICAgRW50cnkoKTsKKyAgICBF
bnRyeShpbnQ2NF90IHRpbWVzdGFtcF9tcywgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gYXVkaW9f
bGV2ZWwpOworCisgICAgaW50NjRfdCBsYXN0X3NlZW5fbXM7CisgICAgYWJzbDo6b3B0aW9uYWw8
dWludDhfdD4gYXVkaW9fbGV2ZWw7CisgIH07CisKICAgdm9pZCBEZWxldGVPbGRFbnRyaWVzKGlu
dDY0X3Qgbm93X21zKTsKIAogICAvLyBJbmRleGVkIGJ5IGNzcmMuCi0gIHN0ZDo6bWFwPHVpbnQz
Ml90LCBpbnQ2NF90PiBsYXN0X3NlZW5fbXNfOworICBzdGQ6Om1hcDx1aW50MzJfdCwgRW50cnk+
IGFjdGl2ZV9jc3Jjc187CiAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IG5leHRfcHJ1bmluZ19t
c187CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9jb250cmlidXRpbmdfc291cmNlc191bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1dGluZ19zb3VyY2VzX3VuaXR0ZXN0LmNjCmluZGV4
IDhiMjJkMjZjOTQ4MDRjZjQ0MjJjMGRiNjFkNjU4NzNjMThlNGJjZDIuLjVmMWQ4ZDNkMTEyMDQy
Yzg5NDI0MTU2NzliZDdkYmI5MmU2ZmMxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1
dGluZ19zb3VyY2VzX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1dGluZ19zb3Vy
Y2VzX3VuaXR0ZXN0LmNjCkBAIC0zMCw3ICszMCw3IEBAIFRFU1QoQ29udHJpYnV0aW5nU291cmNl
c1Rlc3QsIFJlY29yZFNvdXJjZXMpIHsKICAgQ29udHJpYnV0aW5nU291cmNlcyBjc3JjczsKICAg
Y29uc3RleHByIHVpbnQzMl90IGtDc3Jjc1tdID0ge2tDc3JjMSwga0NzcmMyfTsKICAgY29uc3Rl
eHByIGludDY0X3Qga1RpbWUxID0gMTA7Ci0gIGNzcmNzLlVwZGF0ZShrVGltZTEsIGtDc3Jjcyk7
CisgIGNzcmNzLlVwZGF0ZShrVGltZTEsIGtDc3JjcywgYWJzbDo6bnVsbG9wdCk7CiAgIEVYUEVD
VF9USEFUKAogICAgICAgY3NyY3MuR2V0U291cmNlcyhrVGltZTEpLAogICAgICAgVW5vcmRlcmVk
RWxlbWVudHNBcmUoUnRwU291cmNlKGtUaW1lMSwga0NzcmMxLCBSdHBTb3VyY2VUeXBlOjpDU1JD
KSwKQEAgLTQ1LDEyICs0NSwxMiBAQCBURVNUKENvbnRyaWJ1dGluZ1NvdXJjZXNUZXN0LCBVcGRh
dGVTb3VyY2VzKSB7CiAgIGNvbnN0ZXhwciB1aW50MzJfdCBrQ3NyY3MyW10gPSB7a0NzcmMyLCBr
Q3NyYzN9OwogICBjb25zdGV4cHIgaW50NjRfdCBrVGltZTEgPSAxMDsKICAgY29uc3RleHByIGlu
dDY0X3Qga1RpbWUyID0ga1RpbWUxICsgNSAqIHJ0Yzo6a051bU1pbGxpc2Vjc1BlclNlYzsKLSAg
Y3NyY3MuVXBkYXRlKGtUaW1lMSwga0NzcmNzMSk7CisgIGNzcmNzLlVwZGF0ZShrVGltZTEsIGtD
c3JjczEsIGFic2w6Om51bGxvcHQpOwogICBFWFBFQ1RfVEhBVCgKICAgICAgIGNzcmNzLkdldFNv
dXJjZXMoa1RpbWUxKSwKICAgICAgIFVub3JkZXJlZEVsZW1lbnRzQXJlKFJ0cFNvdXJjZShrVGlt
ZTEsIGtDc3JjMSwgUnRwU291cmNlVHlwZTo6Q1NSQyksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSdHBTb3VyY2Uoa1RpbWUxLCBrQ3NyYzIsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpKSk7Ci0g
IGNzcmNzLlVwZGF0ZShrVGltZTIsIGtDc3JjczIpOworICBjc3Jjcy5VcGRhdGUoa1RpbWUyLCBr
Q3NyY3MyLCBhYnNsOjpudWxsb3B0KTsKICAgRVhQRUNUX1RIQVQoCiAgICAgICBjc3Jjcy5HZXRT
b3VyY2VzKGtUaW1lMiksCiAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShSdHBTb3VyY2Uoa1Rp
bWUxLCBrQ3NyYzEsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpLApAQCAtNjUsMTIgKzY1LDEyIEBAIFRF
U1QoQ29udHJpYnV0aW5nU291cmNlc1Rlc3QsIFJldHVyblJlY2VudE9ubHkpIHsKICAgY29uc3Rl
eHByIGludDY0X3Qga1RpbWUxID0gMTA7CiAgIGNvbnN0ZXhwciBpbnQ2NF90IGtUaW1lMiA9IGtU
aW1lMSArIDUgKiBydGM6OmtOdW1NaWxsaXNlY3NQZXJTZWM7CiAgIGNvbnN0ZXhwciBpbnQ2NF90
IGtUaW1lMyA9IGtUaW1lMSArIDEyICogcnRjOjprTnVtTWlsbGlzZWNzUGVyU2VjOwotICBjc3Jj
cy5VcGRhdGUoa1RpbWUxLCBrQ3NyY3MxKTsKKyAgY3NyY3MuVXBkYXRlKGtUaW1lMSwga0NzcmNz
MSwgYWJzbDo6bnVsbG9wdCk7CiAgIEVYUEVDVF9USEFUKAogICAgICAgY3NyY3MuR2V0U291cmNl
cyhrVGltZTEpLAogICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoUnRwU291cmNlKGtUaW1lMSwg
a0NzcmMxLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJ0cFNvdXJjZShrVGltZTEsIGtDc3JjMiwgUnRwU291cmNlVHlwZTo6Q1NSQykpKTsKLSAgY3Ny
Y3MuVXBkYXRlKGtUaW1lMiwga0NzcmNzMik7CisgIGNzcmNzLlVwZGF0ZShrVGltZTIsIGtDc3Jj
czIsIGFic2w6Om51bGxvcHQpOwogICBFWFBFQ1RfVEhBVCgKICAgICAgIGNzcmNzLkdldFNvdXJj
ZXMoa1RpbWUzKSwKICAgICAgIFVub3JkZXJlZEVsZW1lbnRzQXJlKFJ0cFNvdXJjZShrVGltZTIs
IGtDc3JjMiwgUnRwU291cmNlVHlwZTo6Q1NSQyksCkBAIC04NCwxOCArODQsMTggQEAgVEVTVChD
b250cmlidXRpbmdTb3VyY2VzVGVzdCwgUHVyZ2VPbGRTb3VyY2VzKSB7CiAgIGNvbnN0ZXhwciBp
bnQ2NF90IGtUaW1lMSA9IDEwOwogICBjb25zdGV4cHIgaW50NjRfdCBrVGltZTIgPSBrVGltZTEg
KyAxMCAqIHJ0Yzo6a051bU1pbGxpc2Vjc1BlclNlYzsKICAgY29uc3RleHByIGludDY0X3Qga1Rp
bWUzID0ga1RpbWUxICsgMjAgKiBydGM6OmtOdW1NaWxsaXNlY3NQZXJTZWM7Ci0gIGNzcmNzLlVw
ZGF0ZShrVGltZTEsIGtDc3JjczEpOworICBjc3Jjcy5VcGRhdGUoa1RpbWUxLCBrQ3NyY3MxLCBh
YnNsOjpudWxsb3B0KTsKICAgRVhQRUNUX1RIQVQoCiAgICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtU
aW1lMiksCiAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShSdHBTb3VyY2Uoa1RpbWUxLCBrQ3Ny
YzEsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRw
U291cmNlKGtUaW1lMSwga0NzcmMyLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSkpOwotICBjc3Jjcy5V
cGRhdGUoa1RpbWUyLCBrQ3NyY3MyKTsKKyAgY3NyY3MuVXBkYXRlKGtUaW1lMiwga0NzcmNzMiwg
YWJzbDo6bnVsbG9wdCk7CiAgIEVYUEVDVF9USEFUKAogICAgICAgY3NyY3MuR2V0U291cmNlcyhr
VGltZTIpLAogICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoUnRwU291cmNlKGtUaW1lMSwga0Nz
cmMxLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0
cFNvdXJjZShrVGltZTIsIGtDc3JjMiwgUnRwU291cmNlVHlwZTo6Q1NSQyksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSdHBTb3VyY2Uoa1RpbWUyLCBrQ3NyYzMsIFJ0cFNvdXJjZVR5cGU6
OkNTUkMpKSk7Ci0gIGNzcmNzLlVwZGF0ZShrVGltZTMsIGtDc3JjczIpOworICBjc3Jjcy5VcGRh
dGUoa1RpbWUzLCBrQ3NyY3MyLCBhYnNsOjpudWxsb3B0KTsKICAgRVhQRUNUX1RIQVQoCiAgICAg
ICBjc3Jjcy5HZXRTb3VyY2VzKGtUaW1lMyksCiAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShS
dHBTb3VyY2Uoa1RpbWUzLCBrQ3NyYzIsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpLApAQCAtMTA4LDQg
KzEwOCwyMiBAQCBURVNUKENvbnRyaWJ1dGluZ1NvdXJjZXNUZXN0LCBQdXJnZU9sZFNvdXJjZXMp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFNvdXJjZShrVGltZTMsIGtDc3JjMywg
UnRwU291cmNlVHlwZTo6Q1NSQykpKTsKIH0KIAorVEVTVChDb250cmlidXRpbmdTb3VyY2VzVGVz
dCwgQXVkaW9MZXZlbCkgeworICBDb250cmlidXRpbmdTb3VyY2VzIGNzcmNzOworICBjb25zdGV4
cHIgdWludDMyX3Qga0NzcmNzW10gPSB7a0NzcmMxLCBrQ3NyYzJ9OworICBjb25zdGV4cHIgaW50
NjRfdCBrVGltZTEgPSAxMDsKKyAgY3NyY3MuVXBkYXRlKGtUaW1lMSwga0NzcmNzLCA0Nyk7Cisg
IEVYUEVDVF9USEFUKAorICAgICAgY3NyY3MuR2V0U291cmNlcyhrVGltZTEpLAorICAgICAgVW5v
cmRlcmVkRWxlbWVudHNBcmUoUnRwU291cmNlKGtUaW1lMSwga0NzcmMxLCBSdHBTb3VyY2VUeXBl
OjpDU1JDLCA0NyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBTb3VyY2Uoa1RpbWUx
LCBrQ3NyYzIsIFJ0cFNvdXJjZVR5cGU6OkNTUkMsIDQ3KSkpOworCisgIGNvbnN0ZXhwciB1aW50
MzJfdCBrQ3NyY3NTdWJzZXRbXSA9IHtrQ3NyYzF9OworICBjc3Jjcy5VcGRhdGUoa1RpbWUxICsg
MSwga0NzcmNzU3Vic2V0LCBhYnNsOjpudWxsb3B0KTsKKyAgRVhQRUNUX1RIQVQoCisgICAgICBj
c3Jjcy5HZXRTb3VyY2VzKGtUaW1lMSArIDEpLAorICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUo
UnRwU291cmNlKGtUaW1lMSArIDEsIGtDc3JjMSwgUnRwU291cmNlVHlwZTo6Q1NSQyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSdHBTb3VyY2Uoa1RpbWUxLCBrQ3NyYzIsIFJ0cFNvdXJj
ZVR5cGU6OkNTUkMsIDQ3KSkpOworfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9kdG1mX3F1ZXVlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZHRtZl9xdWV1ZS5jYwppbmRl
eCA4NmRkYjEwNWY5MjRlOTk4ZjE5ZGVlMjk2YjBlMTljMGM1YTE4NGUxLi4xMGU2NzQ3ODlhNGJh
MGZjZjY3NjFiN2ZjMzNiYjVhOWQ5NWE4ZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9kdG1mX3F1
ZXVlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZfcXVldWUuY2MKQEAgLTEwLDYgKzEwLDEwIEBACiAK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9kdG1mX3F1ZXVlLmgiCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KKworI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCiBuYW1lc3Bh
Y2UgewogY29uc3RleHByIHNpemVfdCBrRHRtZk91dGJhbmRNYXggPSAyMDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL2R0bWZfcXVldWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZfcXVldWUuaAppbmRleCBk
YjcwYzk3NTA4MDAyODZmYTdlMzgxZjIyOWQyZTUxOTNlNDA2OTYxLi5lNTk1NWExMjk3YzQ0Mzgz
ZGExOWM1NWQ0MTM4ODVhZDNmZDIxZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9kdG1mX3F1ZXVl
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvZHRtZl9xdWV1ZS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVm
IE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX0RUTUZfUVVFVUVfSF8KICNkZWZpbmUgTU9EVUxFU19S
VFBfUlRDUF9TT1VSQ0VfRFRNRl9RVUVVRV9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8bGlzdD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL2ZsZXhmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuY2MKaW5kZXggZDc2NjZlMTE5MmEzMzlj
YWZiMTkyNTE2NzM1MzA5ZmFjNjNiOGFkZC4uYjgxMzM0MGVhNjhkODU1NWU0NTM5Njg3YWVjODVm
NWZiZjU5OTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19oZWFkZXJfcmVhZGVyX3dy
aXRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mbGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmNjCkBA
IC0xMiwxMiArMTIsMTEgQEAKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogCi0jaW5jbHVkZSA8dXRp
bGl0eT4KLQogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25f
aW50ZXJuYWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfaGVhZGVy
X3JlYWRlcl93cml0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIu
aAppbmRleCAxZDZkZGRhNGI0MDk4NWY0YjYxMjE2NmE0NTExMjlkYjM3OTZjOTMwLi5kMzA1YzRj
Mjg4ZGUxNGZkYjg0MGI3YWNjYTJlYWQ4M2NmMWMyMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9m
bGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19oZWFk
ZXJfcmVhZGVyX3dyaXRlci5oCkBAIC0xMSw2ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQ
X1JUQ1BfU09VUkNFX0ZMRVhGRUNfSEVBREVSX1JFQURFUl9XUklURVJfSF8KICNkZWZpbmUgTU9E
VUxFU19SVFBfUlRDUF9TT1VSQ0VfRkxFWEZFQ19IRUFERVJfUkVBREVSX1dSSVRFUl9IXwogCisj
aW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mbGV4ZmVjX3JlY2VpdmVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvZmxleGZlY19yZWNlaXZlci5jYwppbmRleCBjM2VkNGQ1M2IyYTQzZmY5ZTZkZWM5
MDljZmRlNGIxNjU5NTFkM2E5Li4xYTYyYmNlZDY4YTRkMmYyMmZiMWE2ZTIzMGY3MjhjNTEyYjRm
MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mbGV4ZmVjX3JlY2VpdmVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL2ZsZXhmZWNfcmVjZWl2ZXIuY2MKQEAgLTEwLDYgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3JlY2VpdmVyLmgiCiAKKyNpbmNsdWRlIDxz
dHJpbmcuaD4KKworI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mbGV4ZmVjX3Nl
bmRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfc2VuZGVyLmNjCmluZGV4IDI4NmY0N2M1ZmU4MDhk
MjY3NDlmNWFiZjBmYWZhZTU0MmVhMWUxYmYuLjEyMDRiMmQ5NzhjNDRjZmYxZGJiNzA5ZjUxYmMy
YWQ4ODAwNmRlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfc2VuZGVyLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL2ZsZXhmZWNfc2VuZGVyLmNjCkBAIC0xMCwxMSArMTAsMTUgQEAKIAogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3NlbmRlci5oIgogCisjaW5jbHVk
ZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2Fy
ZF9lcnJvcl9jb3JyZWN0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9u
LmNjCmluZGV4IGI3NDMxMTBiMmQ2MDI0ZWYwMTUwYWE3OTM0ODdmY2Q1ZWExZWRjYmIuLmE1MmZl
Y2FkMThlNzBmM2MzNzJjOGNlOWQwODhkMTY4ZjYwNDk2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9y
X2NvcnJlY3Rpb24uY2MKQEAgLTExLDExICsxMSwxMCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5oIgogCiAjaW5jbHVkZSA8c3Ry
aW5nLmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+CiAjaW5j
bHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9u
X3R5cGVzX3B1YmxpYy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBf
cnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9p
by5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfaGVhZGVyX3Jl
YWRlcl93cml0ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVj
dGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmgKaW5kZXggODE5ZjZi
Y2VjNTZhMTZlYTcwNzhiNDVmY2JhZGQzMDNmMDFmYTM2NC4uYWRiNzU3MmFlNjcwYTk2NGVlZjVj
MGZiMTEwOWFmY2RiZDMxMGQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9j
b3JyZWN0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmgKQEAg
LTExLDE2ICsxMSwxNSBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9GT1JXQVJE
X0VSUk9SX0NPUlJFQ1RJT05fSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfRk9S
V0FSRF9FUlJPUl9DT1JSRUNUSU9OX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRl
IDxzdGRpbnQuaD4KLQogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfZmVjX3R5cGVz
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJl
Y3Rpb25faW50ZXJuYWwuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29w
ZWRfcmVmX3B0ci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRlcm5hbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRf
ZXJyb3JfY29ycmVjdGlvbl9pbnRlcm5hbC5jYwppbmRleCA3ZTVmZDkxZTAzNTY0NGUwMWI2ZDE5
M2UyNDExOWJhMzhhNjgwMzg3Li45YjAyMDI2YTc3YzUwNWYzOGY4Njc3YzU1ZTU4NmJiY2VmOGM4
YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJu
YWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmNj
CkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9m
b3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5o
PgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL2ZlY19wcml2YXRlX3RhYmxlc19idXJzdHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2Zv
cndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJv
cl9jb3JyZWN0aW9uX2ludGVybmFsLmgKaW5kZXggMmU4YTIwMjExM2FmOTQ4NjdiMWIxYTU4Njhk
NjBiZTVmMGFlYzMwYy4uZWQ5M2Y1MjBlNTI2ZmM3ODhiYzYyZWVlM2NkN2UyZTA0YzE0NGJiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmgKQEAgLTEx
LDkgKzExLDExIEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX0ZPUldBUkRfRVJS
T1JfQ09SUkVDVElPTl9JTlRFUk5BTF9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJD
RV9GT1JXQVJEX0VSUk9SX0NPUlJFQ1RJT05fSU5URVJOQUxfSF8KIAotI2luY2x1ZGUgIm1vZHVs
ZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+Cisj
aW5jbHVkZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfZmVjX3R5cGVzLmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9wYWNrZXRfbG9zc19zdGF0cy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3BhY2tldF9sb3NzX3N0YXRzLmNjCmluZGV4IDA3NjM0OGQyZGEzZTA4OTNlMWIwNTQ5MGNm
NjBkYTgyNzlkNzg0ZDYuLjM2ZjBhNjNkNTk2NjU3YmU2NDMzOTFmZGQ0YmRlMGRjOGMwZWZkZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3BhY2tldF9sb3NzX3N0YXRzLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3BhY2tldF9sb3NzX3N0YXRzLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9wYWNrZXRfbG9zc19zdGF0cy5oIgogCisjaW5jbHVkZSA8Y3N0
ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3BsYXlvdXRfZGVsYXlf
b3JhY2xlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcGxheW91dF9kZWxheV9vcmFjbGUuY2MKaW5kZXggZDNhNzVk
ZDEzYWEzNGE5OWYxZGZjOTAwYzA3ZjQ0MjMyMzM4MDZmNS4uZGMzM2ZhZDUzNmRlZDNkMDY3Zjc1
MjUwMDIwOWQxMjliM2QyODQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGxheW91dF9kZWxheV9v
cmFjbGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGxheW91dF9kZWxheV9vcmFjbGUuY2MKQEAgLTEzLDcg
KzEzLDYgQEAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVm
aW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0
ZW5zaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3BsYXlvdXRfZGVsYXlfb3JhY2xlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9wbGF5b3V0X2RlbGF5X29yYWNs
ZS5oCmluZGV4IDZlNmUyNTNjOGM3NmU1NmQ5MmQ4YWI1YWUxYzI2M2YyNWZmODM2ODEuLjBlM2Jk
MzlhN2VmNWVlMWFlODVkZmYyNTZhYmJiNzk0MzI2OGVlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3BsYXlvdXRfZGVsYXlfb3JhY2xlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGxheW91dF9kZWxheV9vcmFj
bGUuaApAQCAtMTMsOCArMTMsMTAgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogCi0jaW5jbHVk
ZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRlICJjb21t
b25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgIm1vZHVsZXMv
aW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9yZWNlaXZlX3N0YXRpc3RpY3NfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlY2VpdmVf
c3RhdGlzdGljc19pbXBsLmNjCmluZGV4IGFiZTAyOGQ2NzAyMzdhODkyMWE2M2QwM2UyM2UwMGJm
N2RhNzA5ZjkuLmJjNzQyZDFlYTYzZmY3YmQ0Nzk0Y2NlYWMzZGRiZDgzM2QxMmM0OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmNjCkBAIC0xMSwxMCArMTEsMTEgQEAKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZWNlaXZlX3N0YXRpc3RpY3NfaW1wbC5oIgogCiAj
aW5jbHVkZSA8bWF0aC5oPgotCiAjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9id2VfdGVzdF9s
b2dnaW5nLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9y
ZWNlaXZlZC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2Nv
bmZpZy5oIgpAQCAtMzMsMTMgKzM0LDE0IEBAIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OlN0cmVh
bVN0YXRpc3RpY2lhbkltcGwoCiAgICAgdWludDMyX3Qgc3NyYywKICAgICBDbG9jayogY2xvY2ss
CiAgICAgYm9vbCBlbmFibGVfcmV0cmFuc21pdF9kZXRlY3Rpb24sCisgICAgaW50IG1heF9yZW9y
ZGVyaW5nX3RocmVzaG9sZCwKICAgICBSdGNwU3RhdGlzdGljc0NhbGxiYWNrKiBydGNwX2NhbGxi
YWNrLAogICAgIFN0cmVhbURhdGFDb3VudGVyc0NhbGxiYWNrKiBydHBfY2FsbGJhY2spCiAgICAg
OiBzc3JjXyhzc3JjKSwKICAgICAgIGNsb2NrXyhjbG9jayksCiAgICAgICBpbmNvbWluZ19iaXRy
YXRlXyhrU3RhdGlzdGljc1Byb2Nlc3NJbnRlcnZhbE1zLAogICAgICAgICAgICAgICAgICAgICAg
ICAgUmF0ZVN0YXRpc3RpY3M6OmtCcHNTY2FsZSksCi0gICAgICBtYXhfcmVvcmRlcmluZ190aHJl
c2hvbGRfKGtEZWZhdWx0TWF4UmVvcmRlcmluZ1RocmVzaG9sZCksCisgICAgICBtYXhfcmVvcmRl
cmluZ190aHJlc2hvbGRfKG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZCksCiAgICAgICBlbmFibGVf
cmV0cmFuc21pdF9kZXRlY3Rpb25fKGVuYWJsZV9yZXRyYW5zbWl0X2RldGVjdGlvbiksCiAgICAg
ICBqaXR0ZXJfcTRfKDApLAogICAgICAgY3VtdWxhdGl2ZV9sb3NzXygwKSwKQEAgLTQ4LDcgKzUw
LDYgQEAgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6U3RyZWFtU3RhdGlzdGljaWFuSW1wbCgKICAg
ICAgIHJlY2VpdmVkX3NlcV9maXJzdF8oMCksCiAgICAgICByZWNlaXZlZF9zZXFfbWF4XygwKSwK
ICAgICAgIHJlY2VpdmVkX3NlcV93cmFwc18oMCksCi0gICAgICByZWNlaXZlZF9wYWNrZXRfb3Zl
cmhlYWRfKDEyKSwKICAgICAgIGxhc3RfcmVwb3J0X2lub3JkZXJfcGFja2V0c18oMCksCiAgICAg
ICBsYXN0X3JlcG9ydF9vbGRfcGFja2V0c18oMCksCiAgICAgICBsYXN0X3JlcG9ydF9zZXFfbWF4
XygwKSwKQEAgLTU3LDc5ICs1OCw3MSBAQCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpTdHJlYW1T
dGF0aXN0aWNpYW5JbXBsKAogCiBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjp+U3RyZWFtU3RhdGlz
dGljaWFuSW1wbCgpID0gZGVmYXVsdDsKIAotdm9pZCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpJ
bmNvbWluZ1BhY2tldChjb25zdCBSVFBIZWFkZXImIGhlYWRlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhY2tldF9sZW5ndGgpIHsKLSAgU3Ry
ZWFtRGF0YUNvdW50ZXJzIGNvdW50ZXJzOwotICB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3MoJnN0
cmVhbV9sb2NrXyk7Ci0KLSAgICBib29sIHJldHJhbnNtaXR0ZWQgPQotICAgICAgICBlbmFibGVf
cmV0cmFuc21pdF9kZXRlY3Rpb25fICYmIElzUmV0cmFuc21pdE9mT2xkUGFja2V0KGhlYWRlcik7
Ci0gICAgY291bnRlcnMgPSBVcGRhdGVDb3VudGVycyhoZWFkZXIsIHBhY2tldF9sZW5ndGgsIHJl
dHJhbnNtaXR0ZWQpOwotICB9Ci0gIHJ0cF9jYWxsYmFja18tPkRhdGFDb3VudGVyc1VwZGF0ZWQo
Y291bnRlcnMsIHNzcmNfKTsKK3ZvaWQgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6T25SdHBQYWNr
ZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgeworICBTdHJlYW1EYXRhQ291bnRl
cnMgY291bnRlcnMgPSBVcGRhdGVDb3VudGVycyhwYWNrZXQpOworICBpZiAocnRwX2NhbGxiYWNr
XykKKyAgICBydHBfY2FsbGJhY2tfLT5EYXRhQ291bnRlcnNVcGRhdGVkKGNvdW50ZXJzLCBzc3Jj
Xyk7CiB9CiAKIFN0cmVhbURhdGFDb3VudGVycyBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpVcGRh
dGVDb3VudGVycygKLSAgICBjb25zdCBSVFBIZWFkZXImIGhlYWRlciwKLSAgICBzaXplX3QgcGFj
a2V0X2xlbmd0aCwKLSAgICBib29sIHJldHJhbnNtaXR0ZWQpIHsKLSAgYm9vbCBpbl9vcmRlciA9
IEluT3JkZXJQYWNrZXRJbnRlcm5hbChoZWFkZXIuc2VxdWVuY2VOdW1iZXIpOwotICBSVENfRENI
RUNLX0VRKHNzcmNfLCBoZWFkZXIuc3NyYyk7Ci0gIGluY29taW5nX2JpdHJhdGVfLlVwZGF0ZShw
YWNrZXRfbGVuZ3RoLCBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKLSAgcmVjZWl2ZV9j
b3VudGVyc18udHJhbnNtaXR0ZWQuQWRkUGFja2V0KHBhY2tldF9sZW5ndGgsIGhlYWRlcik7Ci0g
IGlmICghaW5fb3JkZXIgJiYgcmV0cmFuc21pdHRlZCkgewotICAgIHJlY2VpdmVfY291bnRlcnNf
LnJldHJhbnNtaXR0ZWQuQWRkUGFja2V0KHBhY2tldF9sZW5ndGgsIGhlYWRlcik7CisgICAgY29u
c3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgeworICBydGM6OkNyaXRTY29wZSBjcygmc3Ry
ZWFtX2xvY2tfKTsKKyAgUlRDX0RDSEVDS19FUShzc3JjXywgcGFja2V0LlNzcmMoKSk7CisgIHVp
bnQxNl90IHNlcXVlbmNlX251bWJlciA9IHBhY2tldC5TZXF1ZW5jZU51bWJlcigpOworICBib29s
IGluX29yZGVyID0KKyAgICAgIC8vIEZpcnN0IHBhY2tldCBpcyBhbHdheXMgaW4gb3JkZXIuCisg
ICAgICBsYXN0X3JlY2VpdmVfdGltZV9tc18gPT0gMCB8fAorICAgICAgSXNOZXdlclNlcXVlbmNl
TnVtYmVyKHNlcXVlbmNlX251bWJlciwgcmVjZWl2ZWRfc2VxX21heF8pIHx8CisgICAgICAvLyBJ
ZiB3ZSBoYXZlIGEgcmVzdGFydCBvZiB0aGUgcmVtb3RlIHNpZGUgdGhpcyBwYWNrZXQgaXMgc3Rp
bGwgaW4gb3JkZXIuCisgICAgICAhSXNOZXdlclNlcXVlbmNlTnVtYmVyKHNlcXVlbmNlX251bWJl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRfc2VxX21heF8gLSBtYXhf
cmVvcmRlcmluZ190aHJlc2hvbGRfKTsKKyAgaW50NjRfdCBub3dfbXMgPSBjbG9ja18tPlRpbWVJ
bk1pbGxpc2Vjb25kcygpOworCisgIGluY29taW5nX2JpdHJhdGVfLlVwZGF0ZShwYWNrZXQuc2l6
ZSgpLCBub3dfbXMpOworICByZWNlaXZlX2NvdW50ZXJzXy50cmFuc21pdHRlZC5BZGRQYWNrZXQo
cGFja2V0KTsKKyAgaWYgKCFpbl9vcmRlciAmJiBlbmFibGVfcmV0cmFuc21pdF9kZXRlY3Rpb25f
ICYmCisgICAgICBJc1JldHJhbnNtaXRPZk9sZFBhY2tldChwYWNrZXQsIG5vd19tcykpIHsKKyAg
ICByZWNlaXZlX2NvdW50ZXJzXy5yZXRyYW5zbWl0dGVkLkFkZFBhY2tldChwYWNrZXQpOwogICB9
CiAKICAgaWYgKHJlY2VpdmVfY291bnRlcnNfLnRyYW5zbWl0dGVkLnBhY2tldHMgPT0gMSkgewot
ICAgIHJlY2VpdmVkX3NlcV9maXJzdF8gPSBoZWFkZXIuc2VxdWVuY2VOdW1iZXI7Ci0gICAgcmVj
ZWl2ZV9jb3VudGVyc18uZmlyc3RfcGFja2V0X3RpbWVfbXMgPSBjbG9ja18tPlRpbWVJbk1pbGxp
c2Vjb25kcygpOworICAgIHJlY2VpdmVkX3NlcV9maXJzdF8gPSBwYWNrZXQuU2VxdWVuY2VOdW1i
ZXIoKTsKKyAgICByZWNlaXZlX2NvdW50ZXJzXy5maXJzdF9wYWNrZXRfdGltZV9tcyA9IG5vd19t
czsKICAgfQogCiAgIC8vIENvdW50IG9ubHkgdGhlIG5ldyBwYWNrZXRzIHJlY2VpdmVkLiBUaGF0
IGlzLCBpZiBwYWNrZXRzIDEsIDIsIDMsIDUsIDQsIDYKICAgLy8gYXJlIHJlY2VpdmVkLCA0IHdp
bGwgYmUgaWdub3JlZC4KICAgaWYgKGluX29yZGVyKSB7Ci0gICAgLy8gQ3VycmVudCB0aW1lIGlu
IHNhbXBsZXMuCi0gICAgTnRwVGltZSByZWNlaXZlX3RpbWUgPSBjbG9ja18tPkN1cnJlbnROdHBU
aW1lKCk7Ci0KICAgICAvLyBXcm9uZyBpZiB3ZSB1c2UgUmV0cmFuc21pdE9mT2xkUGFja2V0Lgog
ICAgIGlmIChyZWNlaXZlX2NvdW50ZXJzXy50cmFuc21pdHRlZC5wYWNrZXRzID4gMSAmJgotICAg
ICAgICByZWNlaXZlZF9zZXFfbWF4XyA+IGhlYWRlci5zZXF1ZW5jZU51bWJlcikgeworICAgICAg
ICByZWNlaXZlZF9zZXFfbWF4XyA+IHBhY2tldC5TZXF1ZW5jZU51bWJlcigpKSB7CiAgICAgICAv
LyBXcmFwIGFyb3VuZCBkZXRlY3RlZC4KICAgICAgIHJlY2VpdmVkX3NlcV93cmFwc18rKzsKICAg
ICB9CiAgICAgLy8gTmV3IG1heC4KLSAgICByZWNlaXZlZF9zZXFfbWF4XyA9IGhlYWRlci5zZXF1
ZW5jZU51bWJlcjsKKyAgICByZWNlaXZlZF9zZXFfbWF4XyA9IHBhY2tldC5TZXF1ZW5jZU51bWJl
cigpOwogCiAgICAgLy8gSWYgbmV3IHRpbWUgc3RhbXAgYW5kIG1vcmUgdGhhbiBvbmUgaW4tb3Jk
ZXIgcGFja2V0IHJlY2VpdmVkLCBjYWxjdWxhdGUKICAgICAvLyBuZXcgaml0dGVyIHN0YXRpc3Rp
Y3MuCi0gICAgaWYgKGhlYWRlci50aW1lc3RhbXAgIT0gbGFzdF9yZWNlaXZlZF90aW1lc3RhbXBf
ICYmCisgICAgaWYgKHBhY2tldC5UaW1lc3RhbXAoKSAhPSBsYXN0X3JlY2VpdmVkX3RpbWVzdGFt
cF8gJiYKICAgICAgICAgKHJlY2VpdmVfY291bnRlcnNfLnRyYW5zbWl0dGVkLnBhY2tldHMgLQog
ICAgICAgICAgcmVjZWl2ZV9jb3VudGVyc18ucmV0cmFuc21pdHRlZC5wYWNrZXRzKSA+IDEpIHsK
LSAgICAgIFVwZGF0ZUppdHRlcihoZWFkZXIsIHJlY2VpdmVfdGltZSk7CisgICAgICBVcGRhdGVK
aXR0ZXIocGFja2V0LCBub3dfbXMpOwogICAgIH0KLSAgICBsYXN0X3JlY2VpdmVkX3RpbWVzdGFt
cF8gPSBoZWFkZXIudGltZXN0YW1wOwotICAgIGxhc3RfcmVjZWl2ZV90aW1lX250cF8gPSByZWNl
aXZlX3RpbWU7Ci0gICAgbGFzdF9yZWNlaXZlX3RpbWVfbXNfID0gY2xvY2tfLT5UaW1lSW5NaWxs
aXNlY29uZHMoKTsKKyAgICBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF8gPSBwYWNrZXQuVGltZXN0
YW1wKCk7CisgICAgbGFzdF9yZWNlaXZlX3RpbWVfbXNfID0gbm93X21zOwogICB9Ci0KLSAgc2l6
ZV90IHBhY2tldF9vaCA9IGhlYWRlci5oZWFkZXJMZW5ndGggKyBoZWFkZXIucGFkZGluZ0xlbmd0
aDsKLQotICAvLyBPdXIgbWVhc3VyZWQgb3ZlcmhlYWQuIEZpbHRlciBmcm9tIFJGQyA1MTA0IDQu
Mi4xLjI6Ci0gIC8vIGF2Z19PSCAobmV3KSA9IDE1LzE2KmF2Z19PSCAob2xkKSArIDEvMTYqcGNr
dF9PSCwKLSAgcmVjZWl2ZWRfcGFja2V0X292ZXJoZWFkXyA9ICgxNSAqIHJlY2VpdmVkX3BhY2tl
dF9vdmVyaGVhZF8gKyBwYWNrZXRfb2gpID4+IDQ7CiAgIHJldHVybiByZWNlaXZlX2NvdW50ZXJz
XzsKIH0KIAotdm9pZCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpVcGRhdGVKaXR0ZXIoY29uc3Qg
UlRQSGVhZGVyJiBoZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOdHBUaW1lIHJlY2VpdmVfdGltZSkgewotICB1aW50MzJfdCByZWNlaXZlX3RpbWVfcnRw
ID0KLSAgICAgIE50cFRvUnRwKHJlY2VpdmVfdGltZSwgaGVhZGVyLnBheWxvYWRfdHlwZV9mcmVx
dWVuY3kpOwotICB1aW50MzJfdCBsYXN0X3JlY2VpdmVfdGltZV9ydHAgPQotICAgICAgTnRwVG9S
dHAobGFzdF9yZWNlaXZlX3RpbWVfbnRwXywgaGVhZGVyLnBheWxvYWRfdHlwZV9mcmVxdWVuY3kp
OwotICBpbnQzMl90IHRpbWVfZGlmZl9zYW1wbGVzID0gKHJlY2VpdmVfdGltZV9ydHAgLSBsYXN0
X3JlY2VpdmVfdGltZV9ydHApIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoZWFk
ZXIudGltZXN0YW1wIC0gbGFzdF9yZWNlaXZlZF90aW1lc3RhbXBfKTsKK3ZvaWQgU3RyZWFtU3Rh
dGlzdGljaWFuSW1wbDo6VXBkYXRlSml0dGVyKGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNr
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJl
Y2VpdmVfdGltZV9tcykgeworICBpbnQ2NF90IHJlY2VpdmVfZGlmZl9tcyA9IHJlY2VpdmVfdGlt
ZV9tcyAtIGxhc3RfcmVjZWl2ZV90aW1lX21zXzsKKyAgUlRDX0RDSEVDS19HRShyZWNlaXZlX2Rp
ZmZfbXMsIDApOworICB1aW50MzJfdCByZWNlaXZlX2RpZmZfcnRwID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KAorICAgICAgKHJlY2VpdmVfZGlmZl9tcyAqIHBhY2tldC5wYXlsb2FkX3R5cGVfZnJl
cXVlbmN5KCkpIC8gMTAwMCk7CisgIGludDMyX3QgdGltZV9kaWZmX3NhbXBsZXMgPQorICAgICAg
cmVjZWl2ZV9kaWZmX3J0cCAtIChwYWNrZXQuVGltZXN0YW1wKCkgLSBsYXN0X3JlY2VpdmVkX3Rp
bWVzdGFtcF8pOwogCiAgIHRpbWVfZGlmZl9zYW1wbGVzID0gc3RkOjphYnModGltZV9kaWZmX3Nh
bXBsZXMpOwogCkBAIC0xNDMsMTUgKzEzNiwxNiBAQCB2b2lkIFN0cmVhbVN0YXRpc3RpY2lhbklt
cGw6OlVwZGF0ZUppdHRlcihjb25zdCBSVFBIZWFkZXImIGhlYWRlciwKICAgfQogfQogCi12b2lk
IFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OkZlY1BhY2tldFJlY2VpdmVkKGNvbnN0IFJUUEhlYWRl
ciYgaGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgcGFja2V0X2xlbmd0aCkgewordm9pZCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpG
ZWNQYWNrZXRSZWNlaXZlZCgKKyAgICBjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7
CiAgIFN0cmVhbURhdGFDb3VudGVycyBjb3VudGVyczsKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3Bl
IGNzKCZzdHJlYW1fbG9ja18pOwotICAgIHJlY2VpdmVfY291bnRlcnNfLmZlYy5BZGRQYWNrZXQo
cGFja2V0X2xlbmd0aCwgaGVhZGVyKTsKKyAgICByZWNlaXZlX2NvdW50ZXJzXy5mZWMuQWRkUGFj
a2V0KHBhY2tldCk7CiAgICAgY291bnRlcnMgPSByZWNlaXZlX2NvdW50ZXJzXzsKICAgfQotICBy
dHBfY2FsbGJhY2tfLT5EYXRhQ291bnRlcnNVcGRhdGVkKGNvdW50ZXJzLCBzc3JjXyk7CisgIGlm
IChydHBfY2FsbGJhY2tfKQorICAgIHJ0cF9jYWxsYmFja18tPkRhdGFDb3VudGVyc1VwZGF0ZWQo
Y291bnRlcnMsIHNzcmNfKTsKIH0KIAogdm9pZCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpTZXRN
YXhSZW9yZGVyaW5nVGhyZXNob2xkKApAQCAtMTg4LDcgKzE4Miw4IEBAIGJvb2wgU3RyZWFtU3Rh
dGlzdGljaWFuSW1wbDo6R2V0U3RhdGlzdGljcyhSdGNwU3RhdGlzdGljcyogc3RhdGlzdGljcywK
ICAgICAqc3RhdGlzdGljcyA9IENhbGN1bGF0ZVJ0Y3BTdGF0aXN0aWNzKCk7CiAgIH0KIAotICBy
dGNwX2NhbGxiYWNrXy0+U3RhdGlzdGljc1VwZGF0ZWQoKnN0YXRpc3RpY3MsIHNzcmNfKTsKKyAg
aWYgKHJ0Y3BfY2FsbGJhY2tfKQorICAgIHJ0Y3BfY2FsbGJhY2tfLT5TdGF0aXN0aWNzVXBkYXRl
ZCgqc3RhdGlzdGljcywgc3NyY18pOwogICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTk2LDcgKzE5
MSw3IEBAIGJvb2wgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6R2V0QWN0aXZlU3RhdGlzdGljc0Fu
ZFJlc2V0KAogICAgIFJ0Y3BTdGF0aXN0aWNzKiBzdGF0aXN0aWNzKSB7CiAgIHsKICAgICBydGM6
OkNyaXRTY29wZSBjcygmc3RyZWFtX2xvY2tfKTsKLSAgICBpZiAoY2xvY2tfLT5DdXJyZW50TnRw
SW5NaWxsaXNlY29uZHMoKSAtIGxhc3RfcmVjZWl2ZV90aW1lX250cF8uVG9NcygpID49CisgICAg
aWYgKGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkgLSBsYXN0X3JlY2VpdmVfdGltZV9tc18g
Pj0KICAgICAgICAga1N0YXRpc3RpY3NUaW1lb3V0TXMpIHsKICAgICAgIC8vIE5vdCBhY3RpdmUu
CiAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTAsNyArMjA1LDggQEAgYm9vbCBTdHJlYW1TdGF0
aXN0aWNpYW5JbXBsOjpHZXRBY3RpdmVTdGF0aXN0aWNzQW5kUmVzZXQoCiAgICAgKnN0YXRpc3Rp
Y3MgPSBDYWxjdWxhdGVSdGNwU3RhdGlzdGljcygpOwogICB9CiAKLSAgcnRjcF9jYWxsYmFja18t
PlN0YXRpc3RpY3NVcGRhdGVkKCpzdGF0aXN0aWNzLCBzc3JjXyk7CisgIGlmIChydGNwX2NhbGxi
YWNrXykKKyAgICBydGNwX2NhbGxiYWNrXy0+U3RhdGlzdGljc1VwZGF0ZWQoKnN0YXRpc3RpY3Ms
IHNzcmNfKTsKICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxMiwxNyArMzA4LDE1IEBAIHVpbnQz
Ml90IFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OkJpdHJhdGVSZWNlaXZlZCgpIGNvbnN0IHsKIH0K
IAogYm9vbCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpJc1JldHJhbnNtaXRPZk9sZFBhY2tldCgK
LSAgICBjb25zdCBSVFBIZWFkZXImIGhlYWRlcikgY29uc3QgewotICBpZiAoSW5PcmRlclBhY2tl
dEludGVybmFsKGhlYWRlci5zZXF1ZW5jZU51bWJlcikpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0g
IH0KLSAgdWludDMyX3QgZnJlcXVlbmN5X2toeiA9IGhlYWRlci5wYXlsb2FkX3R5cGVfZnJlcXVl
bmN5IC8gMTAwMDsKLSAgYXNzZXJ0KGZyZXF1ZW5jeV9raHogPiAwKTsKKyAgICBjb25zdCBSdHBQ
YWNrZXRSZWNlaXZlZCYgcGFja2V0LAorICAgIGludDY0X3Qgbm93X21zKSBjb25zdCB7CisgIHVp
bnQzMl90IGZyZXF1ZW5jeV9raHogPSBwYWNrZXQucGF5bG9hZF90eXBlX2ZyZXF1ZW5jeSgpIC8g
MTAwMDsKKyAgUlRDX0RDSEVDS19HVChmcmVxdWVuY3lfa2h6LCAwKTsKIAotICBpbnQ2NF90IHRp
bWVfZGlmZl9tcyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkgLSBsYXN0X3JlY2VpdmVf
dGltZV9tc187CisgIGludDY0X3QgdGltZV9kaWZmX21zID0gbm93X21zIC0gbGFzdF9yZWNlaXZl
X3RpbWVfbXNfOwogCiAgIC8vIERpZmYgaW4gdGltZSBzdGFtcCBzaW5jZSBsYXN0IHJlY2VpdmVk
IGluIG9yZGVyLgotICB1aW50MzJfdCB0aW1lc3RhbXBfZGlmZiA9IGhlYWRlci50aW1lc3RhbXAg
LSBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF87CisgIHVpbnQzMl90IHRpbWVzdGFtcF9kaWZmID0g
cGFja2V0LlRpbWVzdGFtcCgpIC0gbGFzdF9yZWNlaXZlZF90aW1lc3RhbXBfOwogICB1aW50MzJf
dCBydHBfdGltZV9zdGFtcF9kaWZmX21zID0gdGltZXN0YW1wX2RpZmYgLyBmcmVxdWVuY3lfa2h6
OwogCiAgIGludDY0X3QgbWF4X2RlbGF5X21zID0gMDsKQEAgLTM0MSwzMCArMzM1LDIzIEBAIGJv
b2wgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6SXNSZXRyYW5zbWl0T2ZPbGRQYWNrZXQoCiAgIHJl
dHVybiB0aW1lX2RpZmZfbXMgPiBydHBfdGltZV9zdGFtcF9kaWZmX21zICsgbWF4X2RlbGF5X21z
OwogfQogCi1ib29sIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OkluT3JkZXJQYWNrZXRJbnRlcm5h
bCgKLSAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIpIGNvbnN0IHsKLSAgLy8gRmlyc3QgcGFj
a2V0IGlzIGFsd2F5cyBpbiBvcmRlci4KLSAgaWYgKGxhc3RfcmVjZWl2ZV90aW1lX21zXyA9PSAw
KQotICAgIHJldHVybiB0cnVlOwotCi0gIGlmIChJc05ld2VyU2VxdWVuY2VOdW1iZXIoc2VxdWVu
Y2VfbnVtYmVyLCByZWNlaXZlZF9zZXFfbWF4XykpIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfSBl
bHNlIHsKLSAgICAvLyBJZiB3ZSBoYXZlIGEgcmVzdGFydCBvZiB0aGUgcmVtb3RlIHNpZGUgdGhp
cyBwYWNrZXQgaXMgc3RpbGwgaW4gb3JkZXIuCi0gICAgcmV0dXJuICFJc05ld2VyU2VxdWVuY2VO
dW1iZXIoCi0gICAgICAgIHNlcXVlbmNlX251bWJlciwgcmVjZWl2ZWRfc2VxX21heF8gLSBtYXhf
cmVvcmRlcmluZ190aHJlc2hvbGRfKTsKLSAgfQotfQotCi1SZWNlaXZlU3RhdGlzdGljcyogUmVj
ZWl2ZVN0YXRpc3RpY3M6OkNyZWF0ZShDbG9jayogY2xvY2spIHsKLSAgcmV0dXJuIG5ldyBSZWNl
aXZlU3RhdGlzdGljc0ltcGwoY2xvY2spOworc3RkOjp1bmlxdWVfcHRyPFJlY2VpdmVTdGF0aXN0
aWNzPiBSZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRlKAorICAgIENsb2NrKiBjbG9jaywKKyAgICBS
dGNwU3RhdGlzdGljc0NhbGxiYWNrKiBydGNwX2NhbGxiYWNrLAorICAgIFN0cmVhbURhdGFDb3Vu
dGVyc0NhbGxiYWNrKiBydHBfY2FsbGJhY2spIHsKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVl
PFJlY2VpdmVTdGF0aXN0aWNzSW1wbD4oY2xvY2ssIHJ0Y3BfY2FsbGJhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF9jYWxsYmFjayk7CiB9
CiAKLVJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6UmVjZWl2ZVN0YXRpc3RpY3NJbXBsKENsb2NrKiBj
bG9jaykKK1JlY2VpdmVTdGF0aXN0aWNzSW1wbDo6UmVjZWl2ZVN0YXRpc3RpY3NJbXBsKAorICAg
IENsb2NrKiBjbG9jaywKKyAgICBSdGNwU3RhdGlzdGljc0NhbGxiYWNrKiBydGNwX2NhbGxiYWNr
LAorICAgIFN0cmVhbURhdGFDb3VudGVyc0NhbGxiYWNrKiBydHBfY2FsbGJhY2spCiAgICAgOiBj
bG9ja18oY2xvY2spLAogICAgICAgbGFzdF9yZXR1cm5lZF9zc3JjXygwKSwKLSAgICAgIHJ0Y3Bf
c3RhdHNfY2FsbGJhY2tfKE5VTEwpLAotICAgICAgcnRwX3N0YXRzX2NhbGxiYWNrXyhOVUxMKSB7
fQorICAgICAgbWF4X3Jlb3JkZXJpbmdfdGhyZXNob2xkXyhrRGVmYXVsdE1heFJlb3JkZXJpbmdU
aHJlc2hvbGQpLAorICAgICAgcnRjcF9zdGF0c19jYWxsYmFja18ocnRjcF9jYWxsYmFjayksCisg
ICAgICBydHBfc3RhdHNfY2FsbGJhY2tfKHJ0cF9jYWxsYmFjaykge30KIAogUmVjZWl2ZVN0YXRp
c3RpY3NJbXBsOjp+UmVjZWl2ZVN0YXRpc3RpY3NJbXBsKCkgewogICB3aGlsZSAoIXN0YXRpc3Rp
Y2lhbnNfLmVtcHR5KCkpIHsKQEAgLTM3NCwzMSArMzYxLDI0IEBAIFJlY2VpdmVTdGF0aXN0aWNz
SW1wbDo6flJlY2VpdmVTdGF0aXN0aWNzSW1wbCgpIHsKIH0KIAogdm9pZCBSZWNlaXZlU3RhdGlz
dGljc0ltcGw6Ok9uUnRwUGFja2V0KGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIHsK
LSAgUlRQSGVhZGVyIGhlYWRlcjsKLSAgcGFja2V0LkdldEhlYWRlcigmaGVhZGVyKTsKLSAgSW5j
b21pbmdQYWNrZXQoaGVhZGVyLCBwYWNrZXQuc2l6ZSgpKTsKLX0KLQotdm9pZCBSZWNlaXZlU3Rh
dGlzdGljc0ltcGw6OkluY29taW5nUGFja2V0KGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYWNrZXRfbGVu
Z3RoKSB7CiAgIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwqIGltcGw7CiAgIHsKICAgICBydGM6OkNy
aXRTY29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKLSAgICBhdXRvIGl0ID0gc3Rh
dGlzdGljaWFuc18uZmluZChoZWFkZXIuc3NyYyk7CisgICAgYXV0byBpdCA9IHN0YXRpc3RpY2lh
bnNfLmZpbmQocGFja2V0LlNzcmMoKSk7CiAgICAgaWYgKGl0ICE9IHN0YXRpc3RpY2lhbnNfLmVu
ZCgpKSB7CiAgICAgICBpbXBsID0gaXQtPnNlY29uZDsKICAgICB9IGVsc2UgewogICAgICAgaW1w
bCA9IG5ldyBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsKAotICAgICAgICAgIGhlYWRlci5zc3JjLCBj
bG9ja18sIC8qIGVuYWJsZV9yZXRyYW5zbWl0X2RldGVjdGlvbiA9ICovIGZhbHNlLCB0aGlzLAot
ICAgICAgICAgIHRoaXMpOwotICAgICAgc3RhdGlzdGljaWFuc19baGVhZGVyLnNzcmNdID0gaW1w
bDsKKyAgICAgICAgICBwYWNrZXQuU3NyYygpLCBjbG9ja18sIC8qIGVuYWJsZV9yZXRyYW5zbWl0
X2RldGVjdGlvbiA9ICovIGZhbHNlLAorICAgICAgICAgIG1heF9yZW9yZGVyaW5nX3RocmVzaG9s
ZF8sIHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfLCBydHBfc3RhdHNfY2FsbGJhY2tfKTsKKyAgICAgIHN0
YXRpc3RpY2lhbnNfW3BhY2tldC5Tc3JjKCldID0gaW1wbDsKICAgICB9CiAgIH0KICAgLy8gU3Ry
ZWFtU3RhdGlzdGljaWFuSW1wbCBpbnN0YW5jZSBpcyBjcmVhdGVkIG9uY2UgYW5kIG9ubHkgZGVz
dHJveWVkIHdoZW4KICAgLy8gdGhpcyB3aG9sZSBSZWNlaXZlU3RhdGlzdGljc0ltcGwgaXMgZGVz
dHJveWVkLiBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsIGhhcwogICAvLyBpdCdzIG93biBsb2NraW5n
IHNvIGRvbid0IGhvbGQgcmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfIChwb3RlbnRpYWwKICAgLy8g
ZGVhZGxvY2spLgotICBpbXBsLT5JbmNvbWluZ1BhY2tldChoZWFkZXIsIHBhY2tldF9sZW5ndGgp
OworICBpbXBsLT5PblJ0cFBhY2tldChwYWNrZXQpOwogfQogCiB2b2lkIFJlY2VpdmVTdGF0aXN0
aWNzSW1wbDo6RmVjUGFja2V0UmVjZWl2ZWQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tl
dCkgewpAQCAtNDExLDkgKzM5MSw3IEBAIHZvaWQgUmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjpGZWNQ
YWNrZXRSZWNlaXZlZChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgICAgICBy
ZXR1cm47CiAgICAgaW1wbCA9IGl0LT5zZWNvbmQ7CiAgIH0KLSAgUlRQSGVhZGVyIGhlYWRlcjsK
LSAgcGFja2V0LkdldEhlYWRlcigmaGVhZGVyKTsKLSAgaW1wbC0+RmVjUGFja2V0UmVjZWl2ZWQo
aGVhZGVyLCBwYWNrZXQuc2l6ZSgpKTsKKyAgaW1wbC0+RmVjUGFja2V0UmVjZWl2ZWQocGFja2V0
KTsKIH0KIAogU3RyZWFtU3RhdGlzdGljaWFuKiBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OkdldFN0
YXRpc3RpY2lhbigKQEAgLTQyNyw4ICs0MDUsMTMgQEAgU3RyZWFtU3RhdGlzdGljaWFuKiBSZWNl
aXZlU3RhdGlzdGljc0ltcGw6OkdldFN0YXRpc3RpY2lhbigKIAogdm9pZCBSZWNlaXZlU3RhdGlz
dGljc0ltcGw6OlNldE1heFJlb3JkZXJpbmdUaHJlc2hvbGQoCiAgICAgaW50IG1heF9yZW9yZGVy
aW5nX3RocmVzaG9sZCkgewotICBydGM6OkNyaXRTY29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNz
X2xvY2tfKTsKLSAgZm9yIChhdXRvJiBzdGF0aXN0aWNpYW4gOiBzdGF0aXN0aWNpYW5zXykgewor
ICBzdGQ6Om1hcDx1aW50MzJfdCwgU3RyZWFtU3RhdGlzdGljaWFuSW1wbCo+IHN0YXRpc3RpY2lh
bnM7CisgIHsKKyAgICBydGM6OkNyaXRTY29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tf
KTsKKyAgICBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGRfID0gbWF4X3Jlb3JkZXJpbmdfdGhyZXNo
b2xkOworICAgIHN0YXRpc3RpY2lhbnMgPSBzdGF0aXN0aWNpYW5zXzsKKyAgfQorICBmb3IgKGF1
dG8mIHN0YXRpc3RpY2lhbiA6IHN0YXRpc3RpY2lhbnMpIHsKICAgICBzdGF0aXN0aWNpYW4uc2Vj
b25kLT5TZXRNYXhSZW9yZGVyaW5nVGhyZXNob2xkKG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZCk7
CiAgIH0KIH0KQEAgLTQ0MCw3ICs0MjMsOSBAQCB2b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6
RW5hYmxlUmV0cmFuc21pdERldGVjdGlvbih1aW50MzJfdCBzc3JjLAogICAgIHJ0Yzo6Q3JpdFNj
b3BlIGNzKCZyZWNlaXZlX3N0YXRpc3RpY3NfbG9ja18pOwogICAgIFN0cmVhbVN0YXRpc3RpY2lh
bkltcGwqJiBpbXBsX3JlZiA9IHN0YXRpc3RpY2lhbnNfW3NzcmNdOwogICAgIGlmIChpbXBsX3Jl
ZiA9PSBudWxscHRyKSB7ICAvLyBuZXcgZWxlbWVudAotICAgICAgaW1wbF9yZWYgPSBuZXcgU3Ry
ZWFtU3RhdGlzdGljaWFuSW1wbChzc3JjLCBjbG9ja18sIGVuYWJsZSwgdGhpcywgdGhpcyk7Cisg
ICAgICBpbXBsX3JlZiA9IG5ldyBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsKAorICAgICAgICAgIHNz
cmMsIGNsb2NrXywgZW5hYmxlLCBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGRfLCBydGNwX3N0YXRz
X2NhbGxiYWNrXywKKyAgICAgICAgICBydHBfc3RhdHNfY2FsbGJhY2tfKTsKICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgaW1wbCA9IGltcGxfcmVmOwpAQCAtNDQ4LDQzICs0MzMsNiBAQCB2b2lk
IFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6RW5hYmxlUmV0cmFuc21pdERldGVjdGlvbih1aW50MzJf
dCBzc3JjLAogICBpbXBsLT5FbmFibGVSZXRyYW5zbWl0RGV0ZWN0aW9uKGVuYWJsZSk7CiB9CiAK
LXZvaWQgUmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjpSZWdpc3RlclJ0Y3BTdGF0aXN0aWNzQ2FsbGJh
Y2soCi0gICAgUnRjcFN0YXRpc3RpY3NDYWxsYmFjayogY2FsbGJhY2spIHsKLSAgcnRjOjpDcml0
U2NvcGUgY3MoJnJlY2VpdmVfc3RhdGlzdGljc19sb2NrXyk7Ci0gIGlmIChjYWxsYmFjayAhPSBO
VUxMKQotICAgIGFzc2VydChydGNwX3N0YXRzX2NhbGxiYWNrXyA9PSBOVUxMKTsKLSAgcnRjcF9z
dGF0c19jYWxsYmFja18gPSBjYWxsYmFjazsKLX0KLQotdm9pZCBSZWNlaXZlU3RhdGlzdGljc0lt
cGw6OlN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFJ0Y3BTdGF0aXN0aWNzJiBzdGF0aXN0aWNzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNz
cmMpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoJnJlY2VpdmVfc3RhdGlzdGljc19sb2NrXyk7Ci0g
IGlmIChydGNwX3N0YXRzX2NhbGxiYWNrXykKLSAgICBydGNwX3N0YXRzX2NhbGxiYWNrXy0+U3Rh
dGlzdGljc1VwZGF0ZWQoc3RhdGlzdGljcywgc3NyYyk7Ci19Ci0KLXZvaWQgUmVjZWl2ZVN0YXRp
c3RpY3NJbXBsOjpDTmFtZUNoYW5nZWQoY29uc3QgY2hhciogY25hbWUsIHVpbnQzMl90IHNzcmMp
IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoJnJlY2VpdmVfc3RhdGlzdGljc19sb2NrXyk7Ci0gIGlm
IChydGNwX3N0YXRzX2NhbGxiYWNrXykKLSAgICBydGNwX3N0YXRzX2NhbGxiYWNrXy0+Q05hbWVD
aGFuZ2VkKGNuYW1lLCBzc3JjKTsKLX0KLQotdm9pZCBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OlJl
Z2lzdGVyUnRwU3RhdGlzdGljc0NhbGxiYWNrKAotICAgIFN0cmVhbURhdGFDb3VudGVyc0NhbGxi
YWNrKiBjYWxsYmFjaykgewotICBydGM6OkNyaXRTY29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNz
X2xvY2tfKTsKLSAgaWYgKGNhbGxiYWNrICE9IE5VTEwpCi0gICAgYXNzZXJ0KHJ0cF9zdGF0c19j
YWxsYmFja18gPT0gTlVMTCk7Ci0gIHJ0cF9zdGF0c19jYWxsYmFja18gPSBjYWxsYmFjazsKLX0K
LQotdm9pZCBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OkRhdGFDb3VudGVyc1VwZGF0ZWQoY29uc3Qg
U3RyZWFtRGF0YUNvdW50ZXJzJiBzdGF0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNzcmMpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3Mo
JnJlY2VpdmVfc3RhdGlzdGljc19sb2NrXyk7Ci0gIGlmIChydHBfc3RhdHNfY2FsbGJhY2tfKSB7
Ci0gICAgcnRwX3N0YXRzX2NhbGxiYWNrXy0+RGF0YUNvdW50ZXJzVXBkYXRlZChzdGF0cywgc3Ny
Yyk7Ci0gIH0KLX0KLQogc3RkOjp2ZWN0b3I8cnRjcDo6UmVwb3J0QmxvY2s+IFJlY2VpdmVTdGF0
aXN0aWNzSW1wbDo6UnRjcFJlcG9ydEJsb2NrcygKICAgICBzaXplX3QgbWF4X2Jsb2Nrcykgewog
ICBzdGQ6Om1hcDx1aW50MzJfdCwgU3RyZWFtU3RhdGlzdGljaWFuSW1wbCo+IHN0YXRpc3RpY2lh
bnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZWNlaXZlX3N0YXRpc3RpY3NfaW1wbC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcmVjZWl2ZV9zdGF0aXN0aWNzX2ltcGwuaAppbmRleCA1NmJmZDJiNGE0MDVjZTZkMTc4
NjU2NmJkZDY5YTFiOWMwMzUwMTBkLi44MTUzYzQ0MDBkNDBiY2Y1OTVmZGI4MjBkYjgyOWE1YWFk
NzJmZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZWNlaXZlX3N0YXRpc3RpY3NfaW1wbC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmgKQEAgLTE5LDE1ICsxOSwxNyBA
QAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvcmF0ZV9zdGF0aXN0aWNzLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1
ZGUvbnRwX3RpbWUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwgOiBw
dWJsaWMgU3RyZWFtU3RhdGlzdGljaWFuIHsKK2NsYXNzIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwg
OiBwdWJsaWMgU3RyZWFtU3RhdGlzdGljaWFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBSdHBQYWNrZXRTaW5rSW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIFN0cmVhbVN0
YXRpc3RpY2lhbkltcGwodWludDMyX3Qgc3NyYywKICAgICAgICAgICAgICAgICAgICAgICAgICBD
bG9jayogY2xvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGVfcmV0cmFu
c21pdF9kZXRlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heF9yZW9yZGVy
aW5nX3RocmVzaG9sZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNwU3RhdGlzdGljc0Nh
bGxiYWNrKiBydGNwX2NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbURh
dGFDb3VudGVyc0NhbGxiYWNrKiBydHBfY2FsbGJhY2spOwogICB+U3RyZWFtU3RhdGlzdGljaWFu
SW1wbCgpIG92ZXJyaWRlOwpAQCAtNDEsMjQgKzQzLDIyIEBAIGNsYXNzIFN0cmVhbVN0YXRpc3Rp
Y2lhbkltcGwgOiBwdWJsaWMgU3RyZWFtU3RhdGlzdGljaWFuIHsKICAgICAgIFN0cmVhbURhdGFD
b3VudGVycyogZGF0YV9jb3VudGVycykgY29uc3Qgb3ZlcnJpZGU7CiAgIHVpbnQzMl90IEJpdHJh
dGVSZWNlaXZlZCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHZvaWQgSW5jb21pbmdQYWNrZXQoY29u
c3QgUlRQSGVhZGVyJiBydHBfaGVhZGVyLCBzaXplX3QgcGFja2V0X2xlbmd0aCk7Ci0gIHZvaWQg
RmVjUGFja2V0UmVjZWl2ZWQoY29uc3QgUlRQSGVhZGVyJiBoZWFkZXIsIHNpemVfdCBwYWNrZXRf
bGVuZ3RoKTsKKyAgLy8gSW1wbGVtZW50cyBSdHBQYWNrZXRTaW5rSW50ZXJmYWNlCisgIHZvaWQg
T25SdHBQYWNrZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgb3ZlcnJpZGU7CisK
KyAgdm9pZCBGZWNQYWNrZXRSZWNlaXZlZChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0
KTsKICAgdm9pZCBTZXRNYXhSZW9yZGVyaW5nVGhyZXNob2xkKGludCBtYXhfcmVvcmRlcmluZ190
aHJlc2hvbGQpOwogICB2b2lkIEVuYWJsZVJldHJhbnNtaXREZXRlY3Rpb24oYm9vbCBlbmFibGUp
OwogCiAgcHJpdmF0ZToKLSAgYm9vbCBJc1JldHJhbnNtaXRPZk9sZFBhY2tldChjb25zdCBSVFBI
ZWFkZXImIGhlYWRlcikgY29uc3QKLSAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQo
c3RyZWFtX2xvY2tfKTsKLSAgYm9vbCBJbk9yZGVyUGFja2V0SW50ZXJuYWwodWludDE2X3Qgc2Vx
dWVuY2VfbnVtYmVyKSBjb25zdAorICBib29sIElzUmV0cmFuc21pdE9mT2xkUGFja2V0KGNvbnN0
IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBub3dfbXMpIGNvbnN0CiAgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJ
UkVEKHN0cmVhbV9sb2NrXyk7CiAgIFJ0Y3BTdGF0aXN0aWNzIENhbGN1bGF0ZVJ0Y3BTdGF0aXN0
aWNzKCkKICAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoc3RyZWFtX2xvY2tfKTsK
LSAgdm9pZCBVcGRhdGVKaXR0ZXIoY29uc3QgUlRQSGVhZGVyJiBoZWFkZXIsIE50cFRpbWUgcmVj
ZWl2ZV90aW1lKQotICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChzdHJlYW1fbG9j
a18pOwotICBTdHJlYW1EYXRhQ291bnRlcnMgVXBkYXRlQ291bnRlcnMoY29uc3QgUlRQSGVhZGVy
JiBydHBfaGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHBhY2tldF9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHJldHJhbnNtaXR0ZWQpCisgIHZvaWQgVXBkYXRlSml0dGVyKGNvbnN0IFJ0cFBhY2tldFJlY2Vp
dmVkJiBwYWNrZXQsIGludDY0X3QgcmVjZWl2ZV90aW1lX21zKQogICAgICAgUlRDX0VYQ0xVU0lW
RV9MT0NLU19SRVFVSVJFRChzdHJlYW1fbG9ja18pOworICBTdHJlYW1EYXRhQ291bnRlcnMgVXBk
YXRlQ291bnRlcnMoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCk7CiAKICAgY29uc3Qg
dWludDMyX3Qgc3NyY187CiAgIENsb2NrKiBjb25zdCBjbG9ja187CkBAIC03MywxNCArNzMsMTIg
QEAgY2xhc3MgU3RyZWFtU3RhdGlzdGljaWFuSW1wbCA6IHB1YmxpYyBTdHJlYW1TdGF0aXN0aWNp
YW4gewogICB1aW50MzJfdCBjdW11bGF0aXZlX2xvc3NfIFJUQ19HVUFSREVEX0JZKCZzdHJlYW1f
bG9ja18pOwogCiAgIGludDY0X3QgbGFzdF9yZWNlaXZlX3RpbWVfbXNfIFJUQ19HVUFSREVEX0JZ
KCZzdHJlYW1fbG9ja18pOwotICBOdHBUaW1lIGxhc3RfcmVjZWl2ZV90aW1lX250cF8gUlRDX0dV
QVJERURfQlkoJnN0cmVhbV9sb2NrXyk7CiAgIHVpbnQzMl90IGxhc3RfcmVjZWl2ZWRfdGltZXN0
YW1wXyBSVENfR1VBUkRFRF9CWSgmc3RyZWFtX2xvY2tfKTsKICAgdWludDE2X3QgcmVjZWl2ZWRf
c2VxX2ZpcnN0XyBSVENfR1VBUkRFRF9CWSgmc3RyZWFtX2xvY2tfKTsKICAgdWludDE2X3QgcmVj
ZWl2ZWRfc2VxX21heF8gUlRDX0dVQVJERURfQlkoJnN0cmVhbV9sb2NrXyk7CiAgIHVpbnQxNl90
IHJlY2VpdmVkX3NlcV93cmFwc18gUlRDX0dVQVJERURfQlkoJnN0cmVhbV9sb2NrXyk7CiAKICAg
Ly8gQ3VycmVudCBjb3VudGVyIHZhbHVlcy4KLSAgc2l6ZV90IHJlY2VpdmVkX3BhY2tldF9vdmVy
aGVhZF8gUlRDX0dVQVJERURfQlkoJnN0cmVhbV9sb2NrXyk7CiAgIFN0cmVhbURhdGFDb3VudGVy
cyByZWNlaXZlX2NvdW50ZXJzXyBSVENfR1VBUkRFRF9CWSgmc3RyZWFtX2xvY2tfKTsKIAogICAv
LyBDb3VudGVyIHZhbHVlcyB3aGVuIHdlIHNlbnQgdGhlIGxhc3QgcmVwb3J0LgpAQCAtOTQsNDcg
KzkyLDM2IEBAIGNsYXNzIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwgOiBwdWJsaWMgU3RyZWFtU3Rh
dGlzdGljaWFuIHsKICAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIGNvbnN0IHJ0cF9jYWxs
YmFja187CiB9OwogCi1jbGFzcyBSZWNlaXZlU3RhdGlzdGljc0ltcGwgOiBwdWJsaWMgUmVjZWl2
ZVN0YXRpc3RpY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgUnRjcFN0
YXRpc3RpY3NDYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
dHJlYW1EYXRhQ291bnRlcnNDYWxsYmFjayB7CitjbGFzcyBSZWNlaXZlU3RhdGlzdGljc0ltcGwg
OiBwdWJsaWMgUmVjZWl2ZVN0YXRpc3RpY3MgewogIHB1YmxpYzoKLSAgZXhwbGljaXQgUmVjZWl2
ZVN0YXRpc3RpY3NJbXBsKENsb2NrKiBjbG9jayk7CisgIFJlY2VpdmVTdGF0aXN0aWNzSW1wbChD
bG9jayogY2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBSdGNwU3RhdGlzdGljc0NhbGxi
YWNrKiBydGNwX2NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtRGF0YUNv
dW50ZXJzQ2FsbGJhY2sqIHJ0cF9jYWxsYmFjayk7CiAKICAgflJlY2VpdmVTdGF0aXN0aWNzSW1w
bCgpIG92ZXJyaWRlOwogCi0gIC8vIEltcGxlbWVudCBSZWNlaXZlU3RhdGlzdGljc1Byb3ZpZGVy
LgorICAvLyBJbXBsZW1lbnRzIFJlY2VpdmVTdGF0aXN0aWNzUHJvdmlkZXIuCiAgIHN0ZDo6dmVj
dG9yPHJ0Y3A6OlJlcG9ydEJsb2NrPiBSdGNwUmVwb3J0QmxvY2tzKHNpemVfdCBtYXhfYmxvY2tz
KSBvdmVycmlkZTsKIAotICAvLyBJbXBsZW1lbnQgUnRwUGFja2V0U2lua0ludGVyZmFjZQorICAv
LyBJbXBsZW1lbnRzIFJ0cFBhY2tldFNpbmtJbnRlcmZhY2UKICAgdm9pZCBPblJ0cFBhY2tldChj
b25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSBvdmVycmlkZTsKIAotICAvLyBJbXBsZW1l
bnQgUmVjZWl2ZVN0YXRpc3RpY3MuCi0gIHZvaWQgSW5jb21pbmdQYWNrZXQoY29uc3QgUlRQSGVh
ZGVyJiBoZWFkZXIsIHNpemVfdCBwYWNrZXRfbGVuZ3RoKSBvdmVycmlkZTsKKyAgLy8gSW1wbGVt
ZW50cyBSZWNlaXZlU3RhdGlzdGljcy4KICAgdm9pZCBGZWNQYWNrZXRSZWNlaXZlZChjb25zdCBS
dHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSBvdmVycmlkZTsKICAgU3RyZWFtU3RhdGlzdGljaWFu
KiBHZXRTdGF0aXN0aWNpYW4odWludDMyX3Qgc3NyYykgY29uc3Qgb3ZlcnJpZGU7CiAgIHZvaWQg
U2V0TWF4UmVvcmRlcmluZ1RocmVzaG9sZChpbnQgbWF4X3Jlb3JkZXJpbmdfdGhyZXNob2xkKSBv
dmVycmlkZTsKICAgdm9pZCBFbmFibGVSZXRyYW5zbWl0RGV0ZWN0aW9uKHVpbnQzMl90IHNzcmMs
IGJvb2wgZW5hYmxlKSBvdmVycmlkZTsKIAotICB2b2lkIFJlZ2lzdGVyUnRjcFN0YXRpc3RpY3ND
YWxsYmFjaygKLSAgICAgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlk
ZTsKLQotICB2b2lkIFJlZ2lzdGVyUnRwU3RhdGlzdGljc0NhbGxiYWNrKAotICAgICAgU3RyZWFt
RGF0YUNvdW50ZXJzQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKLQogIHByaXZhdGU6Ci0g
IHZvaWQgU3RhdGlzdGljc1VwZGF0ZWQoY29uc3QgUnRjcFN0YXRpc3RpY3MmIHN0YXRpc3RpY3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYykgb3ZlcnJpZGU7Ci0gIHZv
aWQgQ05hbWVDaGFuZ2VkKGNvbnN0IGNoYXIqIGNuYW1lLCB1aW50MzJfdCBzc3JjKSBvdmVycmlk
ZTsKLSAgdm9pZCBEYXRhQ291bnRlcnNVcGRhdGVkKGNvbnN0IFN0cmVhbURhdGFDb3VudGVycyYg
Y291bnRlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzc3JjKSBvdmVy
cmlkZTsKLQogICBDbG9jayogY29uc3QgY2xvY2tfOwogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBy
ZWNlaXZlX3N0YXRpc3RpY3NfbG9ja187CiAgIHVpbnQzMl90IGxhc3RfcmV0dXJuZWRfc3NyY187
Ci0gIHN0ZDo6bWFwPHVpbnQzMl90LCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsKj4gc3RhdGlzdGlj
aWFuc187CisgIGludCBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGRfIFJUQ19HVUFSREVEX0JZKHJl
Y2VpdmVfc3RhdGlzdGljc19sb2NrXyk7CisgIHN0ZDo6bWFwPHVpbnQzMl90LCBTdHJlYW1TdGF0
aXN0aWNpYW5JbXBsKj4gc3RhdGlzdGljaWFuc18KKyAgICAgIFJUQ19HVUFSREVEX0JZKHJlY2Vp
dmVfc3RhdGlzdGljc19sb2NrXyk7CiAKLSAgUnRjcFN0YXRpc3RpY3NDYWxsYmFjayogcnRjcF9z
dGF0c19jYWxsYmFja187Ci0gIFN0cmVhbURhdGFDb3VudGVyc0NhbGxiYWNrKiBydHBfc3RhdHNf
Y2FsbGJhY2tfOworICBSdGNwU3RhdGlzdGljc0NhbGxiYWNrKiBjb25zdCBydGNwX3N0YXRzX2Nh
bGxiYWNrXzsKKyAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIGNvbnN0IHJ0cF9zdGF0c19j
YWxsYmFja187CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogI2VuZGlmICAvLyBNT0RVTEVT
X1JUUF9SVENQX1NPVVJDRV9SRUNFSVZFX1NUQVRJU1RJQ1NfSU1QTF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcmVjZWl2ZV9zdGF0aXN0aWNzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVjZWl2
ZV9zdGF0aXN0aWNzX3VuaXR0ZXN0LmNjCmluZGV4IDE4NDQ4Y2I3N2VjNmU1NTUxYjkyZDgxZDlk
ZWEyZDU1YWFiZmY4ZTcuLjI1MzkzNjMxZGY5Yjg5YmNlMWQ3MTk3OTFiM2RiMDZkODQ4MjY1ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc191bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9yZWNlaXZlX3N0YXRpc3RpY3NfdW5pdHRlc3QuY2MKQEAgLTQ4LDEwICs0OCw3
IEBAIFJ0cFBhY2tldFJlY2VpdmVkIENyZWF0ZVJ0cFBhY2tldCh1aW50MzJfdCBzc3JjLAogICAg
IHBhY2tldC5TZXRDc3Jjcyhjc3Jjcyk7CiAgIH0KICAgcGFja2V0LlNldFBheWxvYWRTaXplKHBh
eWxvYWRfc2l6ZSk7Ci0gIGlmIChwYWRkaW5nX3NpemUgPiAwKSB7Ci0gICAgUmFuZG9tIHJhbmRv
bSgxNyk7Ci0gICAgcGFja2V0LlNldFBhZGRpbmcocGFkZGluZ19zaXplLCAmcmFuZG9tKTsKLSAg
fQorICBwYWNrZXQuU2V0UGFkZGluZyhwYWRkaW5nX3NpemUpOwogICByZXR1cm4gcGFja2V0Owog
fQogCkBAIC03NCw3ICs3MSw5IEBAIHZvaWQgSW5jcmVtZW50VGltZXN0YW1wKFJ0cFBhY2tldFJl
Y2VpdmVkKiBwYWNrZXQsIHVpbnQzMl90IGluY3IpIHsKIGNsYXNzIFJlY2VpdmVTdGF0aXN0aWNz
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogIHB1YmxpYzoKICAgUmVjZWl2ZVN0YXRp
c3RpY3NUZXN0KCkKLSAgICAgIDogY2xvY2tfKDApLCByZWNlaXZlX3N0YXRpc3RpY3NfKFJlY2Vp
dmVTdGF0aXN0aWNzOjpDcmVhdGUoJmNsb2NrXykpIHsKKyAgICAgIDogY2xvY2tfKDApLAorICAg
ICAgICByZWNlaXZlX3N0YXRpc3RpY3NfKAorICAgICAgICAgICAgUmVjZWl2ZVN0YXRpc3RpY3M6
OkNyZWF0ZSgmY2xvY2tfLCBudWxscHRyLCBudWxscHRyKSkgewogICAgIHBhY2tldDFfID0gQ3Jl
YXRlUnRwUGFja2V0KGtTc3JjMSwga1BhY2tldFNpemUxKTsKICAgICBwYWNrZXQyXyA9IENyZWF0
ZVJ0cFBhY2tldChrU3NyYzIsIGtQYWNrZXRTaXplMik7CiAgIH0KQEAgLTI1NCw3ICsyNTMsNyBA
QCBURVNUX0YoUmVjZWl2ZVN0YXRpc3RpY3NUZXN0LCBSdGNwQ2FsbGJhY2tzKSB7CiAgICAgUnRj
cFN0YXRpc3RpY3Mgc3RhdHNfOwogICB9IGNhbGxiYWNrOwogCi0gIHJlY2VpdmVfc3RhdGlzdGlj
c18tPlJlZ2lzdGVyUnRjcFN0YXRpc3RpY3NDYWxsYmFjaygmY2FsbGJhY2spOworICByZWNlaXZl
X3N0YXRpc3RpY3NfID0gUmVjZWl2ZVN0YXRpc3RpY3M6OkNyZWF0ZSgmY2xvY2tfLCAmY2FsbGJh
Y2ssIG51bGxwdHIpOwogICByZWNlaXZlX3N0YXRpc3RpY3NfLT5FbmFibGVSZXRyYW5zbWl0RGV0
ZWN0aW9uKGtTc3JjMSwgdHJ1ZSk7CiAKICAgLy8gQWRkIHNvbWUgYXJiaXRyYXJ5IGRhdGEsIHdp
dGggbG9zcyBhbmQgaml0dGVyLgpAQCAtMjk0LDMzICsyOTMsNiBAQCBURVNUX0YoUmVjZWl2ZVN0
YXRpc3RpY3NUZXN0LCBSdGNwQ2FsbGJhY2tzKSB7CiAgIEVYUEVDVF9FUSgxLCBzdGF0aXN0aWNz
LnBhY2tldHNfbG9zdCk7CiAgIEVYUEVDVF9FUSg1dSwgc3RhdGlzdGljcy5leHRlbmRlZF9oaWdo
ZXN0X3NlcXVlbmNlX251bWJlcik7CiAgIEVYUEVDVF9FUSgxNzd1LCBzdGF0aXN0aWNzLmppdHRl
cik7Ci0KLSAgcmVjZWl2ZV9zdGF0aXN0aWNzXy0+UmVnaXN0ZXJSdGNwU3RhdGlzdGljc0NhbGxi
YWNrKE5VTEwpOwotCi0gIC8vIEFkZCBzb21lIG1vcmUgZGF0YS4KLSAgcGFja2V0MV8uU2V0U2Vx
dWVuY2VOdW1iZXIoMSk7Ci0gIGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyg3KTsKLSAg
SW5jcmVtZW50VGltZXN0YW1wKCZwYWNrZXQxXywgMyk7Ci0gIHJlY2VpdmVfc3RhdGlzdGljc18t
Pk9uUnRwUGFja2V0KHBhY2tldDFfKTsKLSAgSW5jcmVtZW50U2VxdWVuY2VOdW1iZXIoJnBhY2tl
dDFfLCAyKTsKLSAgY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDkpOwotICBJbmNyZW1l
bnRUaW1lc3RhbXAoJnBhY2tldDFfLCA5KTsKLSAgcmVjZWl2ZV9zdGF0aXN0aWNzXy0+T25SdHBQ
YWNrZXQocGFja2V0MV8pOwotICBJbmNyZW1lbnRTZXF1ZW5jZU51bWJlcigmcGFja2V0MV8sIC0x
KTsKLSAgY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEzKTsKLSAgSW5jcmVtZW50VGlt
ZXN0YW1wKCZwYWNrZXQxXywgNDcpOwotICByZWNlaXZlX3N0YXRpc3RpY3NfLT5PblJ0cFBhY2tl
dChwYWNrZXQxXyk7Ci0gIEluY3JlbWVudFNlcXVlbmNlTnVtYmVyKCZwYWNrZXQxXywgMyk7Ci0g
IGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMSk7Ci0gIEluY3JlbWVudFRpbWVzdGFt
cCgmcGFja2V0MV8sIDE3KTsKLSAgcmVjZWl2ZV9zdGF0aXN0aWNzXy0+T25SdHBQYWNrZXQocGFj
a2V0MV8pOwotICBJbmNyZW1lbnRTZXF1ZW5jZU51bWJlcigmcGFja2V0MV8pOwotCi0gIHJlY2Vp
dmVfc3RhdGlzdGljc18tPkdldFN0YXRpc3RpY2lhbihrU3NyYzEpLT5HZXRTdGF0aXN0aWNzKCZz
dGF0aXN0aWNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cnVlKTsKLQotICAvLyBTaG91bGQgbm90IGhhdmUgYmVlbiBjYWxs
ZWQgYWZ0ZXIgZGVyZWdpc3Rlci4KLSAgRVhQRUNUX0VRKDF1LCBjYWxsYmFjay5udW1fY2FsbHNf
KTsKIH0KIAogY2xhc3MgUnRwVGVzdENhbGxiYWNrIDogcHVibGljIFN0cmVhbURhdGFDb3VudGVy
c0NhbGxiYWNrIHsKQEAgLTM2MSw3ICszMzMsNyBAQCBjbGFzcyBSdHBUZXN0Q2FsbGJhY2sgOiBw
dWJsaWMgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sgewogCiBURVNUX0YoUmVjZWl2ZVN0YXRp
c3RpY3NUZXN0LCBSdHBDYWxsYmFja3MpIHsKICAgUnRwVGVzdENhbGxiYWNrIGNhbGxiYWNrOwot
ICByZWNlaXZlX3N0YXRpc3RpY3NfLT5SZWdpc3RlclJ0cFN0YXRpc3RpY3NDYWxsYmFjaygmY2Fs
bGJhY2spOworICByZWNlaXZlX3N0YXRpc3RpY3NfID0gUmVjZWl2ZVN0YXRpc3RpY3M6OkNyZWF0
ZSgmY2xvY2tfLCBudWxscHRyLCAmY2FsbGJhY2spOwogICByZWNlaXZlX3N0YXRpc3RpY3NfLT5F
bmFibGVSZXRyYW5zbWl0RGV0ZWN0aW9uKGtTc3JjMSwgdHJ1ZSk7CiAKICAgY29uc3Qgc2l6ZV90
IGtIZWFkZXJMZW5ndGggPSAyMDsKQEAgLTQyMCwxOSArMzkyLDExIEBAIFRFU1RfRihSZWNlaXZl
U3RhdGlzdGljc1Rlc3QsIFJ0cENhbGxiYWNrcykgewogICBleHBlY3RlZC5mZWMuaGVhZGVyX2J5
dGVzID0ga0hlYWRlckxlbmd0aDsKICAgZXhwZWN0ZWQuZmVjLnBhY2tldHMgPSAxOwogICBjYWxs
YmFjay5NYXRjaGVzKDUsIGtTc3JjMSwgZXhwZWN0ZWQpOwotCi0gIHJlY2VpdmVfc3RhdGlzdGlj
c18tPlJlZ2lzdGVyUnRwU3RhdGlzdGljc0NhbGxiYWNrKE5VTEwpOwotCi0gIC8vIE5ldyBzdGF0
cywgYnV0IGNhbGxiYWNrIHNob3VsZCBub3QgYmUgY2FsbGVkLgotICBJbmNyZW1lbnRTZXF1ZW5j
ZU51bWJlcigmcGFja2V0MSk7Ci0gIGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyg1KTsK
LSAgcmVjZWl2ZV9zdGF0aXN0aWNzXy0+T25SdHBQYWNrZXQocGFja2V0MSk7Ci0gIGNhbGxiYWNr
Lk1hdGNoZXMoNSwga1NzcmMxLCBleHBlY3RlZCk7CiB9CiAKIFRFU1RfRihSZWNlaXZlU3RhdGlz
dGljc1Rlc3QsIFJ0cENhbGxiYWNrc0ZlY0ZpcnN0KSB7CiAgIFJ0cFRlc3RDYWxsYmFjayBjYWxs
YmFjazsKLSAgcmVjZWl2ZV9zdGF0aXN0aWNzXy0+UmVnaXN0ZXJSdHBTdGF0aXN0aWNzQ2FsbGJh
Y2soJmNhbGxiYWNrKTsKKyAgcmVjZWl2ZV9zdGF0aXN0aWNzXyA9IFJlY2VpdmVTdGF0aXN0aWNz
OjpDcmVhdGUoJmNsb2NrXywgbnVsbHB0ciwgJmNhbGxiYWNrKTsKIAogICBjb25zdCB1aW50MzJf
dCBrSGVhZGVyTGVuZ3RoID0gMjA7CiAgIFJ0cFBhY2tldFJlY2VpdmVkIHBhY2tldCA9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cmVtb3RlX250cF90aW1lX2VzdGltYXRvci5jYwppbmRleCBmYzg2N2E0OTFhMzc0OTg5NjYyMGZj
Zjg3NjMwYmVhZjFmMTgyMDhlLi5mZDE5YjEzODNhNDRlM2M4ZTlmYWViNjgzN2IzZGJkM2YyMDhl
MjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3IuY2MKQEAgLTEwLDggKzEwLDkg
QEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZW1vdGVfbnRwX3RpbWVf
ZXN0aW1hdG9yLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgorCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
bG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWUvdGltZXN0YW1wX2V4dHJhcG9sYXRv
ci5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVtb3RlX250cF90aW1lX2VzdGlt
YXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3JfdW5p
dHRlc3QuY2MKaW5kZXggNTI1NGNkNTdiYjkzM2I0MTA4OTRkMTJmYWM3NzE1ZWFmOTFkMmYwZi4u
YjMwMTQ2MTQyN2I2OTdjOTUwNDk2MTliMGJhNWI3ZGE4YzNlODg4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcmVtb3RlX250cF90aW1lX2VzdGltYXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCkBAIC01Niw3ICs1Niw4IEBA
IGNsYXNzIFJlbW90ZU50cFRpbWVFc3RpbWF0b3JUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG5ldHdvcmtpbmdfZGVs
YXlfbXMpIHsKICAgICB1aW50MzJfdCBydGNwX3RpbWVzdGFtcCA9IEdldFJlbW90ZVRpbWVzdGFt
cCgpOwogICAgIGludDY0X3QgbnRwX2Vycm9yX2ZyYWN0aW9ucyA9Ci0gICAgICAgIG50cF9lcnJv
cl9tcyAqIE50cFRpbWU6OmtGcmFjdGlvbnNQZXJTZWNvbmQgLyAxMDAwOworICAgICAgICBudHBf
ZXJyb3JfbXMgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihOdHBUaW1lOjprRnJhY3Rpb25zUGVyU2Vj
b25kKSAvCisgICAgICAgIDEwMDA7CiAgICAgTnRwVGltZSBudHAoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlbW90ZV9jbG9ja18uQ3VycmVudE50cFRpbWUoKSkgKwogICAgICAgICAgICAgICAgIG50
cF9lcnJvcl9mcmFjdGlvbnMpOwogICAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtUZXN0UnR0
IC8gMiArIG5ldHdvcmtpbmdfZGVsYXlfbXMpOwpAQCAtMTEwLDcgKzExMSwxNyBAQCBURVNUX0Yo
UmVtb3RlTnRwVGltZUVzdGltYXRvclRlc3QsIEVzdGltYXRlKSB7CiB9CiAKIFRFU1RfRihSZW1v
dGVOdHBUaW1lRXN0aW1hdG9yVGVzdCwgQXZlcmFnZXNFcnJvcnNPdXQpIHsKLSAgLy8gUmVtb3Rl
IHBlZXIgc2VuZHMgZmlyc3QgNSBSVENQIFNSIHdpdGhvdXQgZXJyb3JzLgorICAvLyBSZW1vdGUg
cGVlciBzZW5kcyBmaXJzdCAxMCBSVENQIFNSIHdpdGhvdXQgZXJyb3JzLgorICBBZHZhbmNlVGlt
ZU1pbGxpc2Vjb25kcygxMDAwKTsKKyAgU2VuZFJ0Y3BTcigpOworICBBZHZhbmNlVGltZU1pbGxp
c2Vjb25kcygxMDAwKTsKKyAgU2VuZFJ0Y3BTcigpOworICBBZHZhbmNlVGltZU1pbGxpc2Vjb25k
cygxMDAwKTsKKyAgU2VuZFJ0Y3BTcigpOworICBBZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAw
KTsKKyAgU2VuZFJ0Y3BTcigpOworICBBZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKKyAg
U2VuZFJ0Y3BTcigpOwogICBBZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKICAgU2VuZFJ0
Y3BTcigpOwogICBBZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKQEAgLTEyMiwxOCArMTMz
LDE3IEBAIFRFU1RfRihSZW1vdGVOdHBUaW1lRXN0aW1hdG9yVGVzdCwgQXZlcmFnZXNFcnJvcnNP
dXQpIHsKICAgQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwMCk7CiAgIFNlbmRSdGNwU3IoKTsK
IAotICBBZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxNSk7CisgIEFkdmFuY2VUaW1lTWlsbGlzZWNv
bmRzKDE1MCk7CiAgIHVpbnQzMl90IHJ0cF90aW1lc3RhbXAgPSBHZXRSZW1vdGVUaW1lc3RhbXAo
KTsKICAgaW50NjRfdCBjYXB0dXJlX250cF90aW1lX21zID0gbG9jYWxfY2xvY2tfLkN1cnJlbnRO
dHBJbk1pbGxpc2Vjb25kcygpOwotCiAgIC8vIExvY2FsIHBlZXIgZ2V0cyBlbm91Z2ggUlRDUCBT
UiB0byBjYWxjdWxhdGUgdGhlIGNhcHR1cmUgdGltZS4KICAgRVhQRUNUX0VRKGNhcHR1cmVfbnRw
X3RpbWVfbXMsIGVzdGltYXRvcl8tPkVzdGltYXRlKHJ0cF90aW1lc3RhbXApKTsKIAogICAvLyBS
ZW1vdGUgc2VuZHMgY29ycnVwdGVkIFJUQ1AgU1JzCiAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRz
KDEwMDApOwotICBTZW5kUnRjcFNySW5hY2N1cmF0ZWx5KDEwLCAxMCk7CisgIFNlbmRSdGNwU3JJ
bmFjY3VyYXRlbHkoLypudHBfZXJyb3JfbXM9Ki8yLCAvKm5ldHdvcmtpbmdfZGVsYXlfbXM9Ki8t
MSk7CiAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDApOwotICBTZW5kUnRjcFNySW5hY2N1
cmF0ZWx5KC0yMCwgNSk7CisgIFNlbmRSdGNwU3JJbmFjY3VyYXRlbHkoLypudHBfZXJyb3JfbXM9
Ki8tMiwgLypuZXR3b3JraW5nX2RlbGF5X21zPSovMSk7CiAKICAgLy8gTmV3IFJUUCBwYWNrZXQg
dG8gZXN0aW1hdGUgdGltZXN0YW1wLgogICBBZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxNTApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9uYWNrX3N0YXRzLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9u
YWNrX3N0YXRzLmNjCmluZGV4IDI0YjcwODUwMmVlNmMyNzUxYWVlYjBjMWI0MWQ0M2RjMDMxNjY0
NGQuLjFkNjUyZDBiNWJhN2JjNzU4MWJlMGJmOTIwYWE1MTRhNjhlMmJlOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0Y3BfbmFja19zdGF0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX25hY2tfc3Rh
dHMuY2MKQEAgLTEwLDcgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfbmFja19zdGF0cy5oIgogCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVs
ZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1v
bl90eXBlc19wdWJsaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0Y3BfcGFja2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC5oCmluZGV4IDExMDM3
Y2JkODJkNjI3Mzc2YmNkYWFiNDk3OTI0ZGQ1M2RiYTU2ZDUuLjQwZTUxZTg3YWQzM2Q2ZjBhMDA0
MTdhY2U4MGIyZDBiMGUxZWJkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQuaApAQCAtMTEsNiArMTEsMTAgQEAKICNpZm5kZWYg
TU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRfSF8KICNkZWZpbmUgTU9EVUxFU19S
VFBfUlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2lu
Y2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9mdW5jdGlvbl92aWV3Lmgi
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2FwcC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcGFja2V0L2FwcC5jYwppbmRleCA0ZTIxYmM5M2U0ODc5OTAwYTc5ODkzNDQ3NjQ2N2M0MjEz
ZWU5OWUwLi5lYWRkNGQ5YzM1MmY4ZmZmNDczZmEzNmQxNDU1OGIzMzVkYTg4MmJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9hcHAuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNr
ZXQvYXBwLmNjCkBAIC0xMCw2ICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3BhY2tldC9hcHAuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1
ZGUgPGNzdGRpbnQ+CisKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lv
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvY29tbW9u
X2hlYWRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9wYWNrZXQvYXBwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9hcHAuaAppbmRl
eCAxOWE5N2UwZWQ5MjBhMzFhNTRhZTI1ZDM3YjY0MzVkZTFiOTA2NWZmLi5hOTYwMmE4MGNmYjVh
ODc4YjhiNWJjZDM2OWYwNDViODA5ODQ2MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3Bh
Y2tldC9hcHAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9hcHAuaApAQCAtMTEsNiArMTEs
OSBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVENQX1BBQ0tFVF9BUFBfSF8K
ICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRfQVBQX0hfCiAKKyNp
bmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVm
ZmVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2J5ZS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfcGFja2V0L2J5ZS5jYwppbmRleCAwZTJlYjllNDFhM2UxZDJjMjc2NTJjNWUxMDU4
MGY2MTk5OTk3M2E0Li4yM2FjMzVmODU2YjUzODkxMzNkZDBmYjU0ZDhmN2U1OTcxM2UzZmIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ieWUuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQvYnllLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ieWUuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgor
I2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
cGFja2V0L2V4dGVuZGVkX2ppdHRlcl9yZXBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9l
eHRlbmRlZF9qaXR0ZXJfcmVwb3J0LmNjCmluZGV4IDI3ZWQ0Y2NlZjRmNjMyMWFhMjNlODYxZmQz
ZGYyYzNjYzRkOTI2NTQuLjVlN2RhZGQxZjQ4MmExMWQzOGRlYTBiYTdmMTRiMWU0YWQ2YzU5NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2V4dGVuZGVkX2ppdHRlcl9yZXBvcnQu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvZXh0ZW5kZWRfaml0dGVyX3JlcG9ydC5jYwpA
QCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQvZXh0ZW5kZWRfaml0dGVyX3JlcG9ydC5oIgogCisjaW5jbHVkZSA8Y3N0ZGludD4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
Ynl0ZV9pby5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvZXh0ZW5kZWRfcmVw
b3J0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2V4dGVuZGVkX3JlcG9ydHMuY2MKaW5kZXgg
NTUxM2YzN2RiYTBiMWYzNzRiN2MxM2EyM2Y5YWEyYzc2YWY3NDBhYy4uMmI1ZjljYWNkNzI4MjEz
OTJiYjg4YjJlMzkxOTE3YzliMzJmOGMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNr
ZXQvZXh0ZW5kZWRfcmVwb3J0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRl
ZF9yZXBvcnRzLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRlZF9yZXBvcnRzLmgiCiAKKyNpbmNsdWRlIDx2
ZWN0b3I+CisKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvY29tbW9uX2hlYWRl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRjcF9wYWNrZXQvbmFjay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L25hY2suY2MKaW5kZXgg
NmE0YTBiZGMwZTQzYmE3YzM0OGVmZjc1YzA5ZmEzOWY5ODIxZDU2YS4uNmZlN2VhZGU2MmI2NDc4
MDk2YjJkYmJhZGUyM2NiMzI4MzVkOTFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNr
ZXQvbmFjay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9uYWNrLmNjCkBAIC0xMSw2ICsx
MSw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvbmFj
ay5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVk
ZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3BzZmIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcGFja2V0L3BzZmIuaAppbmRleCBhZTY2YTE3MjM4N2VjYzg2ZTE3N2YxMzU3YzE2NmUxMjMz
OWRhZWM2Li40NmVlMjkxMjg1MDQ2MDg1YmY0MzM2M2NmZTVmOTY1YmMxNjI4N2FiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9wc2ZiLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNr
ZXQvcHNmYi5oCkBAIC0xMiw2ICsxMiw5IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09V
UkNFX1JUQ1BfUEFDS0VUX1BTRkJfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0Vf
UlRDUF9QQUNLRVRfUFNGQl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3Rk
aW50Lmg+CisKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0
L3JlY2VpdmVyX3JlcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVjZWl2ZXJfcmVwb3J0
LmgKaW5kZXggOGYxNDNkYTcyYzA5MDFlZjYzYzBhYWRhMmMyODlkZWM5NDA1N2E4Mi4uNzQ3MGQx
ZDJlMTBhYmI3MmNkYjdkYWY1MzA0YmYzNDQxMmE4MjkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRjcF9wYWNrZXQvcmVjZWl2ZXJfcmVwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
cmVjZWl2ZXJfcmVwb3J0LmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19SVFBf
UlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRfUkVDRUlWRVJfUkVQT1JUX0hfCiAjZGVmaW5lIE1PRFVM
RVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfUEFDS0VUX1JFQ0VJVkVSX1JFUE9SVF9IXwogCisjaW5j
bHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dmVjdG9yPgog
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3JlbWIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tl
dC9yZW1iLmNjCmluZGV4IDAyNDA2MTE2ZjZlNzkzZTZiMDJiNjQ2NmZhODkzOTAyMjE2NWI5Yzku
LjNlZDFmYmRiODAzZTY0MzRhMWYyNTU4NWJhYmJlNGE1OWU2YWVjZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0Y3BfcGFja2V0L3JlbWIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVt
Yi5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9wYWNrZXQvcmVtYi5oIgogCisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx1
dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcnJ0ci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9w
YWNrZXQvcnJ0ci5oCmluZGV4IGE0NzBiMWEyMTdjNTU2YjUzMDQ4NmU4YTgwNWY0YjJiZWJkODFj
MzMuLjhlYjRjZTYyYWRlZjhiODZhOGFkNmQ5ZmQ1ZDdjZDc1NjY4MTFiOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0Y3BfcGFja2V0L3JydHIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9y
cnRyLmgKQEAgLTEyLDYgKzEyLDkgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0Vf
UlRDUF9QQUNLRVRfUlJUUl9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVENQ
X1BBQ0tFVF9SUlRSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQu
aD4KKwogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL250cF90aW1lLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcnRwZmIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3J0cGZiLmgKaW5kZXggYTA0MDc0MTFhYjM4ODAwYzA5
NmJiYjE2YTE4MmZhNjg1OTRkMTRkZi4uMjE5Nzc3MzZiNjE5ZTQ4N2JlOGQ5ZTljMGRhZmMyOWVk
NjU3NjZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcnRwZmIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3BhY2tldC9ydHBmYi5oCkBAIC0xMiw2ICsxMiw5IEBACiAjaWZuZGVmIE1P
RFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfUEFDS0VUX1JUUEZCX0hfCiAjZGVmaW5lIE1PRFVM
RVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfUEFDS0VUX1JUUEZCX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0Y3BfcGFja2V0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF9wYWNrZXQvc2Rlcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3NkZXMu
Y2MKaW5kZXggMzM3YzhiMDRhODQ4NzA5MmU0NmNlMGEzNjgyOGU0M2Y0NDJjZWQ3Yi4uMGVmNDMy
OTAzZGI1NWVmZjQ3MjE2MzI0NTViMDgzYzk0MTdlYTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRjcF9wYWNrZXQvc2Rlcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9zZGVzLmNjCkBA
IC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC9zZGVzLmgiCiAKKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx1dGlsaXR5
PgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdG1tYm4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tl
dC90bW1ibi5jYwppbmRleCA0ZDM4YjNiNmRiYjMwOTFkNWQyOWY4Y2YwMWVhNWQ1YzNkM2I2ZTI4
Li5mNTdlNTc0OWMyZGVkMDVhOWNhMWJjMmY4NjIwYzdhZTIzMWZjY2QxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3BhY2tldC90bW1ibi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90
bW1ibi5jYwpAQCAtMTAsNyArMTAsNiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9wYWNrZXQvdG1tYm4uaCIKIAotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL2J5dGVfaW8uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC9jb21tb25faGVhZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9w
YWNrZXQvdG1tYnIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1ici5jYwppbmRleCBkOGYw
NzNiODdmMzA5ZGY0NjQ5YjU2OWQzOTU4Yjk3ZDk3NTU0YTk3Li45ZGM3NDVlNTA5YzQ4YTA5MGU4
MWY5MmU5ODMwODMzOWExZjM1YTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90
bW1ici5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1ici5jYwpAQCAtMTAsNyArMTAs
NiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdG1t
YnIuaCIKIAotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9jb21tb25faGVhZGVy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdHJhbnNwb3J0X2ZlZWRi
YWNrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdHJhbnNwb3J0X2ZlZWRiYWNrLmNjCmluZGV4
IDQ3MDNkMzEzMmVlODcyYjNiODkxN2RhZDYwODUxYzNiNDg5M2EzNTQuLjI4MTY1NTk0YmVjNGM5
OTVlMDkwYWFiZWNkY2JhYmI2NjQ3Nzg2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFj
a2V0L3RyYW5zcG9ydF9mZWVkYmFjay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90cmFu
c3BvcnRfZmVlZGJhY2suY2MKQEAgLTExLDkgKzExLDEwIEBACiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdHJhbnNwb3J0X2ZlZWRiYWNrLmgiCiAKICNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx1dGlsaXR5Pgog
Ci0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlc19wdWJsaWMuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvY29tbW9uX2hlYWRlci5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZlci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3BfcmVjZWl2ZXIuY2MKaW5kZXggNDk2Njc1NDk3YWQyM2UzYjVjZWNj
NDQxMThmOWJjNDdjNjgyMjY4Yy4uMzgzZjc4NWRmZWE4MjA2MjI1MWQwYTRmY2E3MWU2ZmFiOWEy
NzhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydGNwX3JlY2VpdmVyLmNjCkBAIC0xMzEsNiArMTMxLDcgQEAgUlRDUFJlY2VpdmVyOjpSVENQ
UmVjZWl2ZXIoCiAgICAgUnRjcEludHJhRnJhbWVPYnNlcnZlciogcnRjcF9pbnRyYV9mcmFtZV9v
YnNlcnZlciwKICAgICBUcmFuc3BvcnRGZWVkYmFja09ic2VydmVyKiB0cmFuc3BvcnRfZmVlZGJh
Y2tfb2JzZXJ2ZXIsCiAgICAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbk9ic2VydmVyKiBiaXRyYXRl
X2FsbG9jYXRpb25fb2JzZXJ2ZXIsCisgICAgaW50IHJlcG9ydF9pbnRlcnZhbF9tcywKICAgICBN
b2R1bGVSdHBSdGNwKiBvd25lcikKICAgICA6IGNsb2NrXyhjbG9jayksCiAgICAgICByZWNlaXZl
cl9vbmx5XyhyZWNlaXZlcl9vbmx5KSwKQEAgLTEzOSw2ICsxNDAsNyBAQCBSVENQUmVjZWl2ZXI6
OlJUQ1BSZWNlaXZlcigKICAgICAgIHJ0Y3BfaW50cmFfZnJhbWVfb2JzZXJ2ZXJfKHJ0Y3BfaW50
cmFfZnJhbWVfb2JzZXJ2ZXIpLAogICAgICAgdHJhbnNwb3J0X2ZlZWRiYWNrX29ic2VydmVyXyh0
cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2ZXIpLAogICAgICAgYml0cmF0ZV9hbGxvY2F0aW9uX29i
c2VydmVyXyhiaXRyYXRlX2FsbG9jYXRpb25fb2JzZXJ2ZXIpLAorICAgICAgcmVwb3J0X2ludGVy
dmFsX21zXyhyZXBvcnRfaW50ZXJ2YWxfbXMpLAogICAgICAgbWFpbl9zc3JjXygwKSwKICAgICAg
IHJlbW90ZV9zc3JjXygwKSwKICAgICAgIHJlbW90ZV9zZW5kZXJfcnRwX3RpbWVfKDApLApAQCAt
MjgwLDcgKzI4Miw4IEBAIFJUQ1BSZWNlaXZlcjo6Q29uc3VtZVJlY2VpdmVkWHJSZWZlcmVuY2VU
aW1lSW5mbygpIHsKICAgc3RkOjp2ZWN0b3I8cnRjcDo6UmVjZWl2ZVRpbWVJbmZvPiBsYXN0X3hy
X3J0aXM7CiAgIGxhc3RfeHJfcnRpcy5yZXNlcnZlKGxhc3RfeHJfcnRpc19zaXplKTsKIAotICBj
b25zdCB1aW50MzJfdCBub3dfbnRwID0gQ29tcGFjdE50cChjbG9ja18tPkN1cnJlbnROdHBUaW1l
KCkpOworICBjb25zdCB1aW50MzJfdCBub3dfbnRwID0KKyAgICAgIENvbXBhY3ROdHAoVGltZU1p
Y3Jvc1RvTnRwKGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkpKTsKIAogICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxhc3RfeHJfcnRpc19zaXplOyArK2kpIHsKICAgICBScnRySW5mb3JtYXRp
b24mIHJydHIgPSByZWNlaXZlZF9ycnRyc18uZnJvbnQoKTsKQEAgLTQyNyw3ICs0MzAsNyBAQCB2
b2lkIFJUQ1BSZWNlaXZlcjo6SGFuZGxlU2VuZGVyUmVwb3J0KGNvbnN0IENvbW1vbkhlYWRlciYg
cnRjcF9ibG9jaywKIAogICAgIHJlbW90ZV9zZW5kZXJfbnRwX3RpbWVfID0gc2VuZGVyX3JlcG9y
dC5udHAoKTsKICAgICByZW1vdGVfc2VuZGVyX3J0cF90aW1lXyA9IHNlbmRlcl9yZXBvcnQucnRw
X3RpbWVzdGFtcCgpOwotICAgIGxhc3RfcmVjZWl2ZWRfc3JfbnRwXyA9IGNsb2NrXy0+Q3VycmVu
dE50cFRpbWUoKTsKKyAgICBsYXN0X3JlY2VpdmVkX3NyX250cF8gPSBUaW1lTWljcm9zVG9OdHAo
Y2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSk7CiAgIH0gZWxzZSB7CiAgICAgLy8gV2Ugd2ls
bCBvbmx5IHN0b3JlIHRoZSBzZW5kIHJlcG9ydCBmcm9tIG9uZSBzb3VyY2UsIGJ1dAogICAgIC8v
IHdlIHdpbGwgc3RvcmUgYWxsIHRoZSByZWNlaXZlIGJsb2Nrcy4KQEAgLTUwMywxMCArNTA2LDE4
IEBAIHZvaWQgUlRDUFJlY2VpdmVyOjpIYW5kbGVSZXBvcnRCbG9jayhjb25zdCBSZXBvcnRCbG9j
ayYgcmVwb3J0X2Jsb2NrLAogICAvLyBJZiBubyBTUiBoYXMgYmVlbiByZWNlaXZlZCB5ZXQsIHRo
ZSBmaWVsZCBpcyBzZXQgdG8gemVyby4KICAgLy8gUmVjZWl2ZXIgcnRwX3J0Y3AgbW9kdWxlIGlz
IG5vdCBleHBlY3RlZCB0byBjYWxjdWxhdGUgcnR0IHVzaW5nCiAgIC8vIFNlbmRlciBSZXBvcnRz
IGV2ZW4gaWYgaXQgYWNjaWRlbnRhbGx5IGNhbi4KLSAgaWYgKCFyZWNlaXZlcl9vbmx5XyAmJiBz
ZW5kX3RpbWVfbnRwICE9IDApIHsKKworICAvLyBUT0RPKG5pc3NlKTogVXNlIHRoaXMgd2F5IHRv
IGRldGVybWluZSB0aGUgUlRUIG9ubHkgd2hlbiB8cmVjZWl2ZXJfb25seV98CisgIC8vIGlzIGZh
bHNlLiBIb3dldmVyLCB0aGF0IGN1cnJlbnRseSBicmVha3MgdGhlIHRlc3RzIG9mIHRoZQorICAv
LyBnb29nQ2FwdHVyZVN0YXJ0TnRwVGltZU1zIHN0YXQgZm9yIGF1ZGlvIHJlY2VpdmUgc3RyZWFt
cy4gVG8gZml4LCBlaXRoZXIKKyAgLy8gZGVsZXRlIGFsbCBkZXBlbmRlbmNpZXMgb24gUlRUIG1l
YXN1cmVtZW50cyBmb3IgYXVkaW8gcmVjZWl2ZSBzdHJlYW1zLCBvcgorICAvLyBlbnN1cmUgdGhh
dCBhdWRpbyByZWNlaXZlIHN0cmVhbXMgdGhhdCBuZWVkIFJUVCBhbmQgc3RhdHMgdGhhdCBkZXBl
bmQgb24gaXQKKyAgLy8gYXJlIGNvbmZpZ3VyZWQgd2l0aCBhbiBhc3NvY2lhdGVkIGF1ZGlvIHNl
bmQgc3RyZWFtLgorICBpZiAoc2VuZF90aW1lX250cCAhPSAwKSB7CiAgICAgdWludDMyX3QgZGVs
YXlfbnRwID0gcmVwb3J0X2Jsb2NrLmRlbGF5X3NpbmNlX2xhc3Rfc3IoKTsKICAgICAvLyBMb2Nh
bCBOVFAgdGltZS4KLSAgICB1aW50MzJfdCByZWNlaXZlX3RpbWVfbnRwID0gQ29tcGFjdE50cChj
bG9ja18tPkN1cnJlbnROdHBUaW1lKCkpOworICAgIHVpbnQzMl90IHJlY2VpdmVfdGltZV9udHAg
PQorICAgICAgICBDb21wYWN0TnRwKFRpbWVNaWNyb3NUb050cChjbG9ja18tPlRpbWVJbk1pY3Jv
c2Vjb25kcygpKSk7CiAKICAgICAvLyBSVFQgaW4gMS8oMl4xNikgc2Vjb25kcy4KICAgICB1aW50
MzJfdCBydHRfbnRwID0gcmVjZWl2ZV90aW1lX250cCAtIGRlbGF5X250cCAtIHNlbmRfdGltZV9u
dHA7CkBAIC01NTIsMTIgKzU2MywxMiBAQCBSVENQUmVjZWl2ZXI6OlRtbWJySW5mb3JtYXRpb24q
IFJUQ1BSZWNlaXZlcjo6R2V0VG1tYnJJbmZvcm1hdGlvbigKICAgcmV0dXJuICZpdC0+c2Vjb25k
OwogfQogCi1ib29sIFJUQ1BSZWNlaXZlcjo6UnRjcFJyVGltZW91dChpbnQ2NF90IHJ0Y3BfaW50
ZXJ2YWxfbXMpIHsKK2Jvb2wgUlRDUFJlY2VpdmVyOjpSdGNwUnJUaW1lb3V0KCkgewogICBydGM6
OkNyaXRTY29wZSBsb2NrKCZydGNwX3JlY2VpdmVyX2xvY2tfKTsKICAgaWYgKGxhc3RfcmVjZWl2
ZWRfcmJfbXNfID09IDApCiAgICAgcmV0dXJuIGZhbHNlOwogCi0gIGludDY0X3QgdGltZV9vdXRf
bXMgPSBrUnJUaW1lb3V0SW50ZXJ2YWxzICogcnRjcF9pbnRlcnZhbF9tczsKKyAgaW50NjRfdCB0
aW1lX291dF9tcyA9IGtSclRpbWVvdXRJbnRlcnZhbHMgKiByZXBvcnRfaW50ZXJ2YWxfbXNfOwog
ICBpZiAoY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSA+IGxhc3RfcmVjZWl2ZWRfcmJfbXNf
ICsgdGltZV9vdXRfbXMpIHsKICAgICAvLyBSZXNldCB0aGUgdGltZXIgdG8gb25seSB0cmlnZ2Vy
IG9uZSBsb2cuCiAgICAgbGFzdF9yZWNlaXZlZF9yYl9tc18gPSAwOwpAQCAtNTY2LDEyICs1Nzcs
MTIgQEAgYm9vbCBSVENQUmVjZWl2ZXI6OlJ0Y3BSclRpbWVvdXQoaW50NjRfdCBydGNwX2ludGVy
dmFsX21zKSB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSVENQUmVjZWl2ZXI6OlJ0Y3BS
clNlcXVlbmNlTnVtYmVyVGltZW91dChpbnQ2NF90IHJ0Y3BfaW50ZXJ2YWxfbXMpIHsKK2Jvb2wg
UlRDUFJlY2VpdmVyOjpSdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoKSB7CiAgIHJ0Yzo6Q3Jp
dFNjb3BlIGxvY2soJnJ0Y3BfcmVjZWl2ZXJfbG9ja18pOwogICBpZiAobGFzdF9pbmNyZWFzZWRf
c2VxdWVuY2VfbnVtYmVyX21zXyA9PSAwKQogICAgIHJldHVybiBmYWxzZTsKIAotICBpbnQ2NF90
IHRpbWVfb3V0X21zID0ga1JyVGltZW91dEludGVydmFscyAqIHJ0Y3BfaW50ZXJ2YWxfbXM7Cisg
IGludDY0X3QgdGltZV9vdXRfbXMgPSBrUnJUaW1lb3V0SW50ZXJ2YWxzICogcmVwb3J0X2ludGVy
dmFsX21zXzsKICAgaWYgKGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkgPgogICAgICAgbGFz
dF9pbmNyZWFzZWRfc2VxdWVuY2VfbnVtYmVyX21zXyArIHRpbWVfb3V0X21zKSB7CiAgICAgLy8g
UmVzZXQgdGhlIHRpbWVyIHRvIG9ubHkgdHJpZ2dlciBvbmUgbG9nLgpAQCAtNzIwLDcgKzczMSw4
IEBAIHZvaWQgUlRDUFJlY2VpdmVyOjpIYW5kbGVYcihjb25zdCBDb21tb25IZWFkZXImIHJ0Y3Bf
YmxvY2ssCiB2b2lkIFJUQ1BSZWNlaXZlcjo6SGFuZGxlWHJSZWNlaXZlUmVmZXJlbmNlVGltZSh1
aW50MzJfdCBzZW5kZXJfc3NyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Y3A6OlJydHImIHJydHIpIHsKICAgdWludDMyX3QgcmVjZWl2
ZWRfcmVtb3RlX21pZF9udHBfdGltZSA9IENvbXBhY3ROdHAocnJ0ci5udHAoKSk7Ci0gIHVpbnQz
Ml90IGxvY2FsX3JlY2VpdmVfbWlkX250cF90aW1lID0gQ29tcGFjdE50cChjbG9ja18tPkN1cnJl
bnROdHBUaW1lKCkpOworICB1aW50MzJfdCBsb2NhbF9yZWNlaXZlX21pZF9udHBfdGltZSA9Cisg
ICAgICBDb21wYWN0TnRwKFRpbWVNaWNyb3NUb050cChjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25k
cygpKSk7CiAKICAgYXV0byBpdCA9IHJlY2VpdmVkX3JydHJzX3NzcmNfaXRfLmZpbmQoc2VuZGVy
X3NzcmMpOwogICBpZiAoaXQgIT0gcmVjZWl2ZWRfcnJ0cnNfc3NyY19pdF8uZW5kKCkpIHsKQEAg
LTc1NCw3ICs3NjYsNyBAQCB2b2lkIFJUQ1BSZWNlaXZlcjo6SGFuZGxlWHJEbHJyUmVwb3J0Qmxv
Y2soY29uc3QgcnRjcDo6UmVjZWl2ZVRpbWVJbmZvJiBydGkpIHsKICAgICByZXR1cm47CiAKICAg
dWludDMyX3QgZGVsYXlfbnRwID0gcnRpLmRlbGF5X3NpbmNlX2xhc3RfcnI7Ci0gIHVpbnQzMl90
IG5vd19udHAgPSBDb21wYWN0TnRwKGNsb2NrXy0+Q3VycmVudE50cFRpbWUoKSk7CisgIHVpbnQz
Ml90IG5vd19udHAgPSBDb21wYWN0TnRwKFRpbWVNaWNyb3NUb050cChjbG9ja18tPlRpbWVJbk1p
Y3Jvc2Vjb25kcygpKSk7CiAKICAgdWludDMyX3QgcnR0X250cCA9IG5vd19udHAgLSBkZWxheV9u
dHAgLSBzZW5kX3RpbWVfbnRwOwogICB4cl9ycl9ydHRfbXNfID0gQ29tcGFjdE50cFJ0dFRvTXMo
cnR0X250cCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydGNwX3JlY2VpdmVyLmgKaW5kZXggYTg2M2NhZWZmN2I2OWU2Yzk3YjAzNGViNzMwNjAxM2Ux
ODcxM2IzMS4uYmU0YzcwZTNjZWE0OTE4NmUwMDliZDE3ZjZkMGNkNGUxYjQ0ODY0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVjZWl2
ZXIuaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRjcF9zdGF0aXN0aWNz
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX25hY2tfc3RhdHMuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9kbHJyLmgiCkBA
IC01Niw2ICs1Nyw3IEBAIGNsYXNzIFJUQ1BSZWNlaXZlciB7CiAgICAgICAgICAgICAgICBSdGNw
SW50cmFGcmFtZU9ic2VydmVyKiBydGNwX2ludHJhX2ZyYW1lX29ic2VydmVyLAogICAgICAgICAg
ICAgICAgVHJhbnNwb3J0RmVlZGJhY2tPYnNlcnZlciogdHJhbnNwb3J0X2ZlZWRiYWNrX29ic2Vy
dmVyLAogICAgICAgICAgICAgICAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbk9ic2VydmVyKiBiaXRy
YXRlX2FsbG9jYXRpb25fb2JzZXJ2ZXIsCisgICAgICAgICAgICAgICBpbnQgcmVwb3J0X2ludGVy
dmFsX21zLAogICAgICAgICAgICAgICAgTW9kdWxlUnRwUnRjcCogb3duZXIpOwogICB2aXJ0dWFs
IH5SVENQUmVjZWl2ZXIoKTsKIApAQCAtOTQsMTMgKzk2LDEzIEBAIGNsYXNzIFJUQ1BSZWNlaXZl
ciB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW4gUlRDUCBS
UiBmb3Igc2V2ZXJhbCBSVENQCiAgIC8vIGludGVydmFscywgYnV0IG9ubHkgdHJpZ2dlcnMgdHJ1
ZSBvbmNlLgotICBib29sIFJ0Y3BSclRpbWVvdXQoaW50NjRfdCBydGNwX2ludGVydmFsX21zKTsK
KyAgYm9vbCBSdGNwUnJUaW1lb3V0KCk7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGhhdmVu
J3QgcmVjZWl2ZWQgYW4gUlRDUCBSUiB0ZWxsaW5nIHRoZSByZWNlaXZlIHNpZGUKICAgLy8gaGFz
IG5vdCByZWNlaXZlZCBSVFAgcGFja2V0cyBmb3IgdG9vIGxvbmcsIGkuZS4gZXh0ZW5kZWQgaGln
aGVzdCBzZXF1ZW5jZQogICAvLyBudW1iZXIgaGFzbid0IGluY3JlYXNlZCBmb3Igc2V2ZXJhbCBS
VENQIGludGVydmFscy4gVGhlIGZ1bmN0aW9uIG9ubHkKICAgLy8gcmV0dXJucyB0cnVlIG9uY2Ug
dW50aWwgYSBuZXcgUlIgaXMgcmVjZWl2ZWQuCi0gIGJvb2wgUnRjcFJyU2VxdWVuY2VOdW1iZXJU
aW1lb3V0KGludDY0X3QgcnRjcF9pbnRlcnZhbF9tcyk7CisgIGJvb2wgUnRjcFJyU2VxdWVuY2VO
dW1iZXJUaW1lb3V0KCk7CiAKICAgc3RkOjp2ZWN0b3I8cnRjcDo6VG1tYkl0ZW0+IFRtbWJyUmVj
ZWl2ZWQoKTsKICAgLy8gUmV0dXJuIHRydWUgaWYgbmV3IGJhbmR3aWR0aCBzaG91bGQgYmUgc2V0
LgpAQCAtMjE1LDYgKzIxNyw3IEBAIGNsYXNzIFJUQ1BSZWNlaXZlciB7CiAgIFJ0Y3BJbnRyYUZy
YW1lT2JzZXJ2ZXIqIGNvbnN0IHJ0Y3BfaW50cmFfZnJhbWVfb2JzZXJ2ZXJfOwogICBUcmFuc3Bv
cnRGZWVkYmFja09ic2VydmVyKiBjb25zdCB0cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2ZXJfOwog
ICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2JzZXJ2ZXIqIGNvbnN0IGJpdHJhdGVfYWxsb2NhdGlv
bl9vYnNlcnZlcl87CisgIGNvbnN0IGludCByZXBvcnRfaW50ZXJ2YWxfbXNfOwogCiAgIHJ0Yzo6
Q3JpdGljYWxTZWN0aW9uIHJ0Y3BfcmVjZWl2ZXJfbG9ja187CiAgIHVpbnQzMl90IG1haW5fc3Ny
Y18gUlRDX0dVQVJERURfQlkocnRjcF9yZWNlaXZlcl9sb2NrXyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3JlY2VpdmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZlcl91
bml0dGVzdC5jYwppbmRleCBjNzcwOGYwYmRkZDk3Y2FhNGJiZDY0ZGY0ODM2MGY2ODY2MmZmMDRh
Li5hNTc2ZmRjNWU5YTU3NjM5MTk4NWZlODQzNzlkOGMxNDMyMDRkYjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3JlY2VpdmVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVj
ZWl2ZXJfdW5pdHRlc3QuY2MKQEAgLTEwNyw2ICsxMDcsOCBAQCBjb25zdGV4cHIgdWludDMyX3Qg
a1JlY2VpdmVyRXh0cmFTc3JjID0gMHgxMjM0NTY3OwogY29uc3RleHByIHVpbnQzMl90IGtOb3RU
b1VzU3NyYyA9IDB4NjU0MzIxOwogY29uc3RleHByIHVpbnQzMl90IGtVbmtub3duU2VuZGVyU3Ny
YyA9IDB4NTQzMjE7CiAKK2NvbnN0ZXhwciBpbnQ2NF90IGtSdGNwSW50ZXJ2YWxNcyA9IDEwMDA7
CisKIH0gIC8vIG5hbWVzcGFjZQogCiBjbGFzcyBSdGNwUmVjZWl2ZXJUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CkBAIC0xMjAsNiArMTIyLDcgQEAgY2xhc3MgUnRjcFJlY2VpdmVyVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICAgICAgICAgICAgICAgICAmaW50
cmFfZnJhbWVfb2JzZXJ2ZXJfLAogICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNwb3J0X2Zl
ZWRiYWNrX29ic2VydmVyXywKICAgICAgICAgICAgICAgICAgICAgICAgJmJpdHJhdGVfYWxsb2Nh
dGlvbl9vYnNlcnZlcl8sCisgICAgICAgICAgICAgICAgICAgICAgIGtSdGNwSW50ZXJ2YWxNcywK
ICAgICAgICAgICAgICAgICAgICAgICAgJnJ0cF9ydGNwX2ltcGxfKSB7fQogICB2b2lkIFNldFVw
KCkgewogICAgIHN0ZDo6c2V0PHVpbnQzMl90PiBzc3JjcyA9IHtrUmVjZWl2ZXJNYWluU3NyYywg
a1JlY2VpdmVyRXh0cmFTc3JjfTsKQEAgLTIwOCw3ICsyMTEsOCBAQCBURVNUX0YoUnRjcFJlY2Vp
dmVyVGVzdCwgSW5qZWN0U3JQYWNrZXRDYWxjdWxhdGVzUlRUKSB7CiAgIEVYUEVDVF9FUSgKICAg
ICAgIC0xLCBydGNwX3JlY2VpdmVyXy5SVFQoa1NlbmRlclNzcmMsICZydHRfbXMsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIpKTsKIAotICB1aW50MzJfdCBzZW50X250cCA9IENvbXBhY3ROdHAo
c3lzdGVtX2Nsb2NrXy5DdXJyZW50TnRwVGltZSgpKTsKKyAgdWludDMyX3Qgc2VudF9udHAgPQor
ICAgICAgQ29tcGFjdE50cChUaW1lTWljcm9zVG9OdHAoc3lzdGVtX2Nsb2NrXy5UaW1lSW5NaWNy
b3NlY29uZHMoKSkpOwogICBzeXN0ZW1fY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtS
dHRNcyArIGtEZWxheU1zKTsKIAogICBydGNwOjpTZW5kZXJSZXBvcnQgc3I7CkBAIC0yMzgsNyAr
MjQyLDggQEAgVEVTVF9GKFJ0Y3BSZWNlaXZlclRlc3QsIEluamVjdFNyUGFja2V0Q2FsY3VsYXRl
c05lZ2F0aXZlUlRUQXNPbmUpIHsKICAgRVhQRUNUX0VRKAogICAgICAgLTEsIHJ0Y3BfcmVjZWl2
ZXJfLlJUVChrU2VuZGVyU3NyYywgJnJ0dF9tcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikp
OwogCi0gIHVpbnQzMl90IHNlbnRfbnRwID0gQ29tcGFjdE50cChzeXN0ZW1fY2xvY2tfLkN1cnJl
bnROdHBUaW1lKCkpOworICB1aW50MzJfdCBzZW50X250cCA9CisgICAgICBDb21wYWN0TnRwKFRp
bWVNaWNyb3NUb050cChzeXN0ZW1fY2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25kcygpKSk7CiAgIHN5
c3RlbV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa1J0dE1zICsga0RlbGF5TXMpOwog
CiAgIHJ0Y3A6OlNlbmRlclJlcG9ydCBzcjsKQEAgLTI2Niw3ICsyNzEsOCBAQCBURVNUX0YoCiAg
IGNvbnN0IHVpbnQzMl90IGtEZWxheU50cCA9IDEyMzAwMDsKICAgY29uc3QgaW50NjRfdCBrRGVs
YXlNcyA9IENvbXBhY3ROdHBSdHRUb01zKGtEZWxheU50cCk7CiAKLSAgdWludDMyX3Qgc2VudF9u
dHAgPSBDb21wYWN0TnRwKHN5c3RlbV9jbG9ja18uQ3VycmVudE50cFRpbWUoKSk7CisgIHVpbnQz
Ml90IHNlbnRfbnRwID0KKyAgICAgIENvbXBhY3ROdHAoVGltZU1pY3Jvc1RvTnRwKHN5c3RlbV9j
bG9ja18uVGltZUluTWljcm9zZWNvbmRzKCkpKTsKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGlt
ZU1pbGxpc2Vjb25kcyhrUnR0TXMgKyBrRGVsYXlNcyk7CiAKICAgcnRjcDo6U2VuZGVyUmVwb3J0
IHNyOwpAQCAtNzM3LDcgKzc0Myw4IEBAIFRFU1RfRihSdGNwUmVjZWl2ZXJUZXN0LCBJbmplY3RF
eHRlbmRlZFJlcG9ydHNEbHJyUGFja2V0V2l0aFN1YkJsb2NrKSB7CiAKICAgSW5qZWN0UnRjcFBh
Y2tldCh4cik7CiAKLSAgdWludDMyX3QgY29tcGFjdF9udHBfbm93ID0gQ29tcGFjdE50cChzeXN0
ZW1fY2xvY2tfLkN1cnJlbnROdHBUaW1lKCkpOworICB1aW50MzJfdCBjb21wYWN0X250cF9ub3cg
PQorICAgICAgQ29tcGFjdE50cChUaW1lTWljcm9zVG9OdHAoc3lzdGVtX2Nsb2NrXy5UaW1lSW5N
aWNyb3NlY29uZHMoKSkpOwogICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5HZXRBbmRSZXNl
dFhyUnJSdHQoJnJ0dF9tcykpOwogICB1aW50MzJfdCBydHRfbnRwID0gY29tcGFjdF9udHBfbm93
IC0ga0RlbGF5IC0ga0xhc3RSUjsKICAgRVhQRUNUX05FQVIoQ29tcGFjdE50cFJ0dFRvTXMocnR0
X250cCksIHJ0dF9tcywgMSk7CkBAIC03NTYsNyArNzYzLDggQEAgVEVTVF9GKFJ0Y3BSZWNlaXZl
clRlc3QsIEluamVjdEV4dGVuZGVkUmVwb3J0c0RscnJQYWNrZXRXaXRoTXVsdGlwbGVTdWJCbG9j
a3MpIHsKIAogICBJbmplY3RSdGNwUGFja2V0KHhyKTsKIAotICB1aW50MzJfdCBjb21wYWN0X250
cF9ub3cgPSBDb21wYWN0TnRwKHN5c3RlbV9jbG9ja18uQ3VycmVudE50cFRpbWUoKSk7CisgIHVp
bnQzMl90IGNvbXBhY3RfbnRwX25vdyA9CisgICAgICBDb21wYWN0TnRwKFRpbWVNaWNyb3NUb050
cChzeXN0ZW1fY2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25kcygpKSk7CiAgIGludDY0X3QgcnR0X21z
ID0gMDsKICAgRVhQRUNUX1RSVUUocnRjcF9yZWNlaXZlcl8uR2V0QW5kUmVzZXRYclJyUnR0KCZy
dHRfbXMpKTsKICAgdWludDMyX3QgcnR0X250cCA9IGNvbXBhY3RfbnRwX25vdyAtIGtEZWxheSAt
IGtMYXN0UlI7CkBAIC04MTgsNyArODI2LDcgQEAgVEVTVF9GKFJ0Y3BSZWNlaXZlclRlc3QsIFJ0
dENhbGN1bGF0ZWRBZnRlckV4dGVuZGVkUmVwb3J0c0RscnIpIHsKICAgY29uc3QgdWludDMyX3Qg
a0RlbGF5TnRwID0gcmFuZC5SYW5kKDAsIDB4N2ZmZmZmZmYpOwogICBjb25zdCBpbnQ2NF90IGtE
ZWxheU1zID0gQ29tcGFjdE50cFJ0dFRvTXMoa0RlbGF5TnRwKTsKICAgcnRjcF9yZWNlaXZlcl8u
U2V0UnRjcFhyUnJ0clN0YXR1cyh0cnVlKTsKLSAgTnRwVGltZSBub3cgPSBzeXN0ZW1fY2xvY2tf
LkN1cnJlbnROdHBUaW1lKCk7CisgIE50cFRpbWUgbm93ID0gVGltZU1pY3Jvc1RvTnRwKHN5c3Rl
bV9jbG9ja18uVGltZUluTWljcm9zZWNvbmRzKCkpOwogICB1aW50MzJfdCBzZW50X250cCA9IENv
bXBhY3ROdHAobm93KTsKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhr
UnR0TXMgKyBrRGVsYXlNcyk7CiAKQEAgLTgzOCw3ICs4NDYsNyBAQCBURVNUX0YoUnRjcFJlY2Vp
dmVyVGVzdCwgWHJEbHJyQ2FsY3VsYXRlc05lZ2F0aXZlUnR0QXNPbmUpIHsKICAgY29uc3QgaW50
NjRfdCBrUnR0TXMgPSByYW5kLlJhbmQoLTM2MDAgKiAxMDAwLCAtMSk7CiAgIGNvbnN0IHVpbnQz
Ml90IGtEZWxheU50cCA9IHJhbmQuUmFuZCgwLCAweDdmZmZmZmZmKTsKICAgY29uc3QgaW50NjRf
dCBrRGVsYXlNcyA9IENvbXBhY3ROdHBSdHRUb01zKGtEZWxheU50cCk7Ci0gIE50cFRpbWUgbm93
ID0gc3lzdGVtX2Nsb2NrXy5DdXJyZW50TnRwVGltZSgpOworICBOdHBUaW1lIG5vdyA9IFRpbWVN
aWNyb3NUb050cChzeXN0ZW1fY2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKICAgdWludDMy
X3Qgc2VudF9udHAgPSBDb21wYWN0TnRwKG5vdyk7CiAgIHN5c3RlbV9jbG9ja18uQWR2YW5jZVRp
bWVNaWxsaXNlY29uZHMoa1J0dE1zICsga0RlbGF5TXMpOwogICBydGNwX3JlY2VpdmVyXy5TZXRS
dGNwWHJScnRyU3RhdHVzKHRydWUpOwpAQCAtOTM2LDEzICs5NDQsMTIgQEAgVEVTVF9GKFJ0Y3BS
ZWNlaXZlclRlc3QsIFN0b3Jlc0xhc3RSZWNlaXZlZFJydHJQZXJTc3JjKSB7CiB9CiAKIFRFU1Rf
RihSdGNwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlUmVwb3J0VGltZW91dCkgewotICBjb25zdCBpbnQ2
NF90IGtSdGNwSW50ZXJ2YWxNcyA9IDEwMDA7CiAgIGNvbnN0IHVpbnQxNl90IGtTZXF1ZW5jZU51
bWJlciA9IDEyMzQ7CiAgIHN5c3RlbV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMyAq
IGtSdGNwSW50ZXJ2YWxNcyk7CiAKICAgLy8gTm8gUlIgcmVjZWl2ZWQsIHNob3VsZG4ndCB0cmln
Z2VyIGEgdGltZW91dC4KLSAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVv
dXQoa1J0Y3BJbnRlcnZhbE1zKSk7Ci0gIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNw
UnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoa1J0Y3BJbnRlcnZhbE1zKSk7CisgIEVYUEVDVF9GQUxT
RShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KCkpOworICBFWFBFQ1RfRkFMU0UocnRjcF9y
ZWNlaXZlcl8uUnRjcFJyU2VxdWVuY2VOdW1iZXJUaW1lb3V0KCkpOwogCiAgIC8vIEFkZCBhIFJS
IGFuZCBhZHZhbmNlIHRoZSBjbG9jayBqdXN0IGVub3VnaCB0byBub3QgdHJpZ2dlciBhIHRpbWVv
dXQuCiAgIHJ0Y3A6OlJlcG9ydEJsb2NrIHJiMTsKQEAgLTk1Nyw4ICs5NjQsOCBAQCBURVNUX0Yo
UnRjcFJlY2VpdmVyVGVzdCwgUmVjZWl2ZVJlcG9ydFRpbWVvdXQpIHsKICAgSW5qZWN0UnRjcFBh
Y2tldChycjEpOwogCiAgIHN5c3RlbV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMyAq
IGtSdGNwSW50ZXJ2YWxNcyAtIDEpOwotICBFWFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRj
cFJyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKLSAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2
ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKKyAgRVhQ
RUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoKSk7CisgIEVYUEVDVF9GQUxT
RShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoKSk7CiAKICAgLy8g
QWRkIGEgUlIgd2l0aCB0aGUgc2FtZSBleHRlbmRlZCBtYXggYXMgdGhlIHByZXZpb3VzIFJSIHRv
IHRyaWdnZXIgYQogICAvLyBzZXF1ZW5jZSBudW1iZXIgdGltZW91dCwgYnV0IG5vdCBhIFJSIHRp
bWVvdXQuCkBAIC05NjcsMTcgKzk3NCwxNyBAQCBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgUmVj
ZWl2ZVJlcG9ydFRpbWVvdXQpIHsKICAgSW5qZWN0UnRjcFBhY2tldChycjEpOwogCiAgIHN5c3Rl
bV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMik7Ci0gIEVYUEVDVF9GQUxTRShydGNw
X3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KGtSdGNwSW50ZXJ2YWxNcykpOwotICBFWFBFQ1RfVFJV
RShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoa1J0Y3BJbnRlcnZh
bE1zKSk7CisgIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KCkpOwor
ICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQo
KSk7CiAKICAgLy8gQWR2YW5jZSBjbG9jayBlbm91Z2ggdG8gdHJpZ2dlciBhbiBSUiB0aW1lb3V0
IHRvby4KICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygzICoga1J0Y3BJ
bnRlcnZhbE1zKTsKLSAgRVhQRUNUX1RSVUUocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dChr
UnRjcEludGVydmFsTXMpKTsKKyAgRVhQRUNUX1RSVUUocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGlt
ZW91dCgpKTsKIAogICAvLyBXZSBzaG91bGQgb25seSBnZXQgb25lIHRpbWVvdXQgZXZlbiB0aG91
Z2ggd2Ugc3RpbGwgaGF2ZW4ndCByZWNlaXZlZCBhIG5ldwogICAvLyBSUi4KLSAgRVhQRUNUX0ZB
TFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoa1J0Y3BJbnRlcnZhbE1zKSk7Ci0gIEVY
UEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoa1J0
Y3BJbnRlcnZhbE1zKSk7CisgIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1l
b3V0KCkpOworICBFWFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRjcFJyU2VxdWVuY2VOdW1i
ZXJUaW1lb3V0KCkpOwogCiAgIC8vIEFkZCBhIG5ldyBSUiB3aXRoIGluY3JlYXNlIHNlcXVlbmNl
IG51bWJlciB0byByZXNldCB0aW1lcnMuCiAgIHJ0Y3A6OlJlcG9ydEJsb2NrIHJiMjsKQEAgLTk5
MSw4ICs5OTgsOCBAQCBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgUmVjZWl2ZVJlcG9ydFRpbWVv
dXQpIHsKICAgRVhQRUNUX0NBTEwoYmFuZHdpZHRoX29ic2VydmVyXywgT25SZWNlaXZlZFJ0Y3BS
ZWNlaXZlclJlcG9ydChfLCBfLCBfKSk7CiAgIEluamVjdFJ0Y3BQYWNrZXQocnIyKTsKIAotICBF
WFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dChrUnRjcEludGVydmFsTXMp
KTsKLSAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGlt
ZW91dChrUnRjcEludGVydmFsTXMpKTsKKyAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0
Y3BSclRpbWVvdXQoKSk7CisgIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1
ZW5jZU51bWJlclRpbWVvdXQoKSk7CiAKICAgLy8gVmVyaWZ5IHdlIGNhbiBnZXQgYSB0aW1lb3V0
IGFnYWluIG9uY2Ugd2UndmUgcmVjZWl2ZWQgbmV3IFJSLgogICBzeXN0ZW1fY2xvY2tfLkFkdmFu
Y2VUaW1lTWlsbGlzZWNvbmRzKDIgKiBrUnRjcEludGVydmFsTXMpOwpAQCAtMTAwMSwxMSArMTAw
OCwxMSBAQCBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgUmVjZWl2ZVJlcG9ydFRpbWVvdXQpIHsK
ICAgSW5qZWN0UnRjcFBhY2tldChycjIpOwogCiAgIHN5c3RlbV9jbG9ja18uQWR2YW5jZVRpbWVN
aWxsaXNlY29uZHMoa1J0Y3BJbnRlcnZhbE1zICsgMSk7Ci0gIEVYUEVDVF9GQUxTRShydGNwX3Jl
Y2VpdmVyXy5SdGNwUnJUaW1lb3V0KGtSdGNwSW50ZXJ2YWxNcykpOwotICBFWFBFQ1RfVFJVRShy
dGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoa1J0Y3BJbnRlcnZhbE1z
KSk7CisgIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KCkpOworICBF
WFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoKSk7
CiAKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygyICoga1J0Y3BJbnRl
cnZhbE1zKTsKLSAgRVhQRUNUX1RSVUUocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dChrUnRj
cEludGVydmFsTXMpKTsKKyAgRVhQRUNUX1RSVUUocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91
dCgpKTsKIH0KIAogVEVTVF9GKFJ0Y3BSZWNlaXZlclRlc3QsIFRtbWJyUmVjZWl2ZWRXaXRoTm9J
bmNvbWluZ1BhY2tldCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9zZW5kZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3NlbmRlci5jYwppbmRleCBiZmRkYzQyMmYwMTI4YmUyN2ZjY2QxODg2OTBh
MThiMmMwZmQ0MjVjLi4yNTgxNDg3OTI3YmY4NDA5NGViZmNmMGRlNmRlYjU5NDMyOTJmYTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3Nl
bmRlci5jYwpAQCAtMTAsNyArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9zZW5kZXIuaCIKIAotI2luY2x1ZGUgPHN0cmluZy5oPiAgLy8gbWVtY3B5Cisj
aW5jbHVkZSA8c3RyaW5nLmg+ICAgLy8gbWVtY3B5CisjaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8g
c3RkOjptaW4KIAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKQEAgLTk5LDE2ICsxMDAsMTYgQEAgY2xh
c3MgUlRDUFNlbmRlcjo6UnRjcENvbnRleHQgewogICBSdGNwQ29udGV4dChjb25zdCBGZWVkYmFj
a1N0YXRlJiBmZWVkYmFja19zdGF0ZSwKICAgICAgICAgICAgICAgaW50MzJfdCBuYWNrX3NpemUs
CiAgICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90KiBuYWNrX2xpc3QsCi0gICAgICAgICAgICAg
IE50cFRpbWUgbm93KQorICAgICAgICAgICAgICBpbnQ2NF90IG5vd191cykKICAgICAgIDogZmVl
ZGJhY2tfc3RhdGVfKGZlZWRiYWNrX3N0YXRlKSwKICAgICAgICAgbmFja19zaXplXyhuYWNrX3Np
emUpLAogICAgICAgICBuYWNrX2xpc3RfKG5hY2tfbGlzdCksCi0gICAgICAgIG5vd18obm93KSB7
fQorICAgICAgICBub3dfdXNfKG5vd191cykge30KIAogICBjb25zdCBGZWVkYmFja1N0YXRlJiBm
ZWVkYmFja19zdGF0ZV87CiAgIGNvbnN0IGludDMyX3QgbmFja19zaXplXzsKICAgY29uc3QgdWlu
dDE2X3QqIG5hY2tfbGlzdF87Ci0gIGNvbnN0IE50cFRpbWUgbm93XzsKKyAgY29uc3QgaW50NjRf
dCBub3dfdXNfOwogfTsKIAogUlRDUFNlbmRlcjo6UlRDUFNlbmRlcigKQEAgLTExOCwxNSArMTE5
LDE0IEBAIFJUQ1BTZW5kZXI6OlJUQ1BTZW5kZXIoCiAgICAgUnRjcFBhY2tldFR5cGVDb3VudGVy
T2JzZXJ2ZXIqIHBhY2tldF90eXBlX2NvdW50ZXJfb2JzZXJ2ZXIsCiAgICAgUnRjRXZlbnRMb2cq
IGV2ZW50X2xvZywKICAgICBUcmFuc3BvcnQqIG91dGdvaW5nX3RyYW5zcG9ydCwKLSAgICBSdGNw
SW50ZXJ2YWxDb25maWcgaW50ZXJ2YWxfY29uZmlnKQorICAgIGludCByZXBvcnRfaW50ZXJ2YWxf
bXMpCiAgICAgOiBhdWRpb18oYXVkaW8pLAogICAgICAgY2xvY2tfKGNsb2NrKSwKICAgICAgIHJh
bmRvbV8oY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSksCiAgICAgICBtZXRob2RfKFJ0Y3BN
b2RlOjprT2ZmKSwKICAgICAgIGV2ZW50X2xvZ18oZXZlbnRfbG9nKSwKICAgICAgIHRyYW5zcG9y
dF8ob3V0Z29pbmdfdHJhbnNwb3J0KSwKLSAgICAgIGludGVydmFsX2NvbmZpZ18oaW50ZXJ2YWxf
Y29uZmlnKSwKLSAgICAgIHVzaW5nX25hY2tfKGZhbHNlKSwKKyAgICAgIHJlcG9ydF9pbnRlcnZh
bF9tc18ocmVwb3J0X2ludGVydmFsX21zKSwKICAgICAgIHNlbmRpbmdfKGZhbHNlKSwKICAgICAg
IG5leHRfdGltZV90b19zZW5kX3J0Y3BfKDApLAogICAgICAgdGltZXN0YW1wX29mZnNldF8oMCks
CkBAIC0xNTEsNyArMTUxLDggQEAgUlRDUFNlbmRlcjo6UlRDUFNlbmRlcigKIAogICAgICAgeHJf
c2VuZF9yZWNlaXZlcl9yZWZlcmVuY2VfdGltZV9lbmFibGVkXyhmYWxzZSksCiAgICAgICBwYWNr
ZXRfdHlwZV9jb3VudGVyX29ic2VydmVyXyhwYWNrZXRfdHlwZV9jb3VudGVyX29ic2VydmVyKSwK
LSAgICAgIHNlbmRfdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uXyhmYWxzZSkgeworICAgICAgc2Vu
ZF92aWRlb19iaXRyYXRlX2FsbG9jYXRpb25fKGZhbHNlKSwKKyAgICAgIGxhc3RfcGF5bG9hZF90
eXBlXygtMSkgewogICBSVENfRENIRUNLKHRyYW5zcG9ydF8gIT0gbnVsbHB0cik7CiAKICAgYnVp
bGRlcnNfW2tSdGNwU3JdID0gJlJUQ1BTZW5kZXI6OkJ1aWxkU1I7CkBAIC0xODAsOSArMTgxLDgg
QEAgdm9pZCBSVENQU2VuZGVyOjpTZXRSVENQU3RhdHVzKFJ0Y3BNb2RlIG5ld19tZXRob2QpIHsK
IAogICBpZiAobWV0aG9kXyA9PSBSdGNwTW9kZTo6a09mZiAmJiBuZXdfbWV0aG9kICE9IFJ0Y3BN
b2RlOjprT2ZmKSB7CiAgICAgLy8gV2hlbiBzd2l0Y2hpbmcgb24sIHJlc2NoZWR1bGUgdGhlIG5l
eHQgcGFja2V0Ci0gICAgaW50NjRfdCBpbnRlcnZhbF9tcyA9IGF1ZGlvXyA/IGludGVydmFsX2Nv
bmZpZ18uYXVkaW9faW50ZXJ2YWxfbXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogaW50ZXJ2YWxfY29uZmlnXy52aWRlb19pbnRlcnZhbF9tczsKLSAgICBuZXh0X3RpbWVfdG9f
c2VuZF9ydGNwXyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkgKyAoaW50ZXJ2YWxfbXMg
LyAyKTsKKyAgICBuZXh0X3RpbWVfdG9fc2VuZF9ydGNwXyA9CisgICAgICAgIGNsb2NrXy0+VGlt
ZUluTWlsbGlzZWNvbmRzKCkgKyAocmVwb3J0X2ludGVydmFsX21zXyAvIDIpOwogICB9CiAgIG1l
dGhvZF8gPSBuZXdfbWV0aG9kOwogfQpAQCAtMjU0LDggKzI1NCwxNCBAQCB2b2lkIFJUQ1BTZW5k
ZXI6OlNldFRpbWVzdGFtcE9mZnNldCh1aW50MzJfdCB0aW1lc3RhbXBfb2Zmc2V0KSB7CiB9CiAK
IHZvaWQgUlRDUFNlbmRlcjo6U2V0TGFzdFJ0cFRpbWUodWludDMyX3QgcnRwX3RpbWVzdGFtcCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBjYXB0dXJlX3RpbWVfbXMp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBjYXB0dXJlX3RpbWVf
bXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDhfdCBwYXlsb2FkX3R5cGUp
IHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdGljYWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8p
OworICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIGNsaWVudHMgd2hvIGRvbid0IHNldCBwYXls
b2FkIHR5cGUgY29ycmVjdGx5IG9uIGFsbAorICAvLyBjYWxscy4KKyAgaWYgKHBheWxvYWRfdHlw
ZSAhPSAtMSkgeworICAgIGxhc3RfcGF5bG9hZF90eXBlXyA9IHBheWxvYWRfdHlwZTsKKyAgfQog
ICBsYXN0X3J0cF90aW1lc3RhbXBfID0gcnRwX3RpbWVzdGFtcDsKICAgaWYgKGNhcHR1cmVfdGlt
ZV9tcyA8IDApIHsKICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgZ2V0IGEgY2FwdHVyZSB0aW1l
IGZyb20gVm9pY2VFbmdpbmUuCkBAIC0yNjUsNiArMjcxLDExIEBAIHZvaWQgUlRDUFNlbmRlcjo6
U2V0TGFzdFJ0cFRpbWUodWludDMyX3QgcnRwX3RpbWVzdGFtcCwKICAgfQogfQogCit2b2lkIFJU
Q1BTZW5kZXI6OlNldFJ0cENsb2NrUmF0ZShpbnQ4X3QgcGF5bG9hZF90eXBlLCBpbnQgcnRwX2Ns
b2NrX3JhdGVfaHopIHsKKyAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdGljYWxfc2VjdGlvbl9y
dGNwX3NlbmRlcl8pOworICBydHBfY2xvY2tfcmF0ZXNfa2h6X1twYXlsb2FkX3R5cGVdID0gcnRw
X2Nsb2NrX3JhdGVfaHogLyAxMDAwOworfQorCiB1aW50MzJfdCBSVENQU2VuZGVyOjpTU1JDKCkg
Y29uc3QgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2Vu
ZGVyXyk7CiAgIHJldHVybiBzc3JjXzsKQEAgLTQxMSwxNSArNDIyLDIxIEBAIHN0ZDo6dW5pcXVl
X3B0cjxydGNwOjpSdGNwUGFja2V0PiBSVENQU2VuZGVyOjpCdWlsZFNSKGNvbnN0IFJ0Y3BDb250
ZXh0JiBjdHgpIHsKICAgLy8gdGhlIGZyYW1lIGJlaW5nIGNhcHR1cmVkIGF0IHRoaXMgbW9tZW50
LiBXZSBhcmUgY2FsY3VsYXRpbmcgdGhhdAogICAvLyB0aW1lc3RhbXAgYXMgdGhlIGxhc3QgZnJh
bWUncyB0aW1lc3RhbXAgKyB0aGUgdGltZSBzaW5jZSB0aGUgbGFzdCBmcmFtZQogICAvLyB3YXMg
Y2FwdHVyZWQuCi0gIHVpbnQzMl90IHJ0cF9yYXRlID0KLSAgICAgIChhdWRpb18gPyBrQm9ndXNS
dHBSYXRlRm9yQXVkaW9SdGNwIDoga1ZpZGVvUGF5bG9hZFR5cGVGcmVxdWVuY3kpIC8gMTAwMDsK
KyAgaW50IHJ0cF9yYXRlID0gcnRwX2Nsb2NrX3JhdGVzX2toel9bbGFzdF9wYXlsb2FkX3R5cGVf
XTsKKyAgaWYgKHJ0cF9yYXRlIDw9IDApIHsKKyAgICBydHBfcmF0ZSA9CisgICAgICAgIChhdWRp
b18gPyBrQm9ndXNSdHBSYXRlRm9yQXVkaW9SdGNwIDoga1ZpZGVvUGF5bG9hZFR5cGVGcmVxdWVu
Y3kpIC8KKyAgICAgICAgMTAwMDsKKyAgfQorICAvLyBSb3VuZCBub3dfdXNfIHRvIHRoZSBjbG9z
ZXN0IG1pbGxpc2Vjb25kLCBiZWNhdXNlIE50cCB0aW1lIGlzIHJvdW5kZWQKKyAgLy8gd2hlbiBj
b252ZXJ0ZWQgdG8gbWlsbGlzZWNvbmRzLAogICB1aW50MzJfdCBydHBfdGltZXN0YW1wID0KICAg
ICAgIHRpbWVzdGFtcF9vZmZzZXRfICsgbGFzdF9ydHBfdGltZXN0YW1wXyArCi0gICAgICAoY2xv
Y2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSAtIGxhc3RfZnJhbWVfY2FwdHVyZV90aW1lX21zXykg
KiBydHBfcmF0ZTsKKyAgICAgICgoY3R4Lm5vd191c18gKyA1MDApIC8gMTAwMCAtIGxhc3RfZnJh
bWVfY2FwdHVyZV90aW1lX21zXykgKiBydHBfcmF0ZTsKIAogICBydGNwOjpTZW5kZXJSZXBvcnQq
IHJlcG9ydCA9IG5ldyBydGNwOjpTZW5kZXJSZXBvcnQoKTsKICAgcmVwb3J0LT5TZXRTZW5kZXJT
c3JjKHNzcmNfKTsKLSAgcmVwb3J0LT5TZXROdHAoY3R4Lm5vd18pOworICByZXBvcnQtPlNldE50
cChUaW1lTWljcm9zVG9OdHAoY3R4Lm5vd191c18pKTsKICAgcmVwb3J0LT5TZXRSdHBUaW1lc3Rh
bXAocnRwX3RpbWVzdGFtcCk7CiAgIHJlcG9ydC0+U2V0UGFja2V0Q291bnQoY3R4LmZlZWRiYWNr
X3N0YXRlXy5wYWNrZXRzX3NlbnQpOwogICByZXBvcnQtPlNldE9jdGV0Q291bnQoY3R4LmZlZWRi
YWNrX3N0YXRlXy5tZWRpYV9ieXRlc19zZW50KTsKQEAgLTYwMCw3ICs2MTcsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8cnRjcDo6UnRjcFBhY2tldD4gUlRDUFNlbmRlcjo6QnVpbGRFeHRlbmRlZFJlcG9y
dHMoCiAKICAgaWYgKCFzZW5kaW5nXyAmJiB4cl9zZW5kX3JlY2VpdmVyX3JlZmVyZW5jZV90aW1l
X2VuYWJsZWRfKSB7CiAgICAgcnRjcDo6UnJ0ciBycnRyOwotICAgIHJydHIuU2V0TnRwKGN0eC5u
b3dfKTsKKyAgICBycnRyLlNldE50cChUaW1lTWljcm9zVG9OdHAoY3R4Lm5vd191c18pKTsKICAg
ICB4ci0+U2V0UnJ0cihycnRyKTsKICAgfQogCkBAIC02NzUsNyArNjkyLDcgQEAgaW50MzJfdCBS
VENQU2VuZGVyOjpTZW5kQ29tcG91bmRSVENQKAogCiAgICAgLy8gV2UgbmVlZCB0byBzZW5kIG91
ciBOVFAgZXZlbiBpZiB3ZSBoYXZlbid0IHJlY2VpdmVkIGFueSByZXBvcnRzLgogICAgIFJ0Y3BD
b250ZXh0IGNvbnRleHQoZmVlZGJhY2tfc3RhdGUsIG5hY2tfc2l6ZSwgbmFja19saXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgY2xvY2tfLT5DdXJyZW50TnRwVGltZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkpOwogCiAgICAgUHJl
cGFyZVJlcG9ydChmZWVkYmFja19zdGF0ZSk7CiAKQEAgLTc0OCwyOCArNzY1LDI0IEBAIHZvaWQg
UlRDUFNlbmRlcjo6UHJlcGFyZVJlcG9ydChjb25zdCBGZWVkYmFja1N0YXRlJiBmZWVkYmFja19z
dGF0ZSkgewogICAgIH0KIAogICAgIC8vIGdlbmVyYXRlIG5leHQgdGltZSB0byBzZW5kIGFuIFJU
Q1AgcmVwb3J0Ci0gICAgdWludDMyX3QgbWluSW50ZXJ2YWxNcyA9Ci0gICAgICAgIHJ0Yzo6ZGNo
ZWNrZWRfY2FzdDx1aW50MzJfdD4oaW50ZXJ2YWxfY29uZmlnXy5hdWRpb19pbnRlcnZhbF9tcyk7
Ci0KLSAgICBpZiAoIWF1ZGlvXykgewotICAgICAgaWYgKHNlbmRpbmdfKSB7Ci0gICAgICAgIC8v
IENhbGN1bGF0ZSBiYW5kd2lkdGggZm9yIHZpZGVvOyAzNjAgLyBzZW5kIGJhbmR3aWR0aCBpbiBr
Yml0L3MuCi0gICAgICAgIHVpbnQzMl90IHNlbmRfYml0cmF0ZV9rYml0ID0gZmVlZGJhY2tfc3Rh
dGUuc2VuZF9iaXRyYXRlIC8gMTAwMDsKLSAgICAgICAgaWYgKHNlbmRfYml0cmF0ZV9rYml0ICE9
IDApCi0gICAgICAgICAgbWluSW50ZXJ2YWxNcyA9IDM2MDAwMCAvIHNlbmRfYml0cmF0ZV9rYml0
OwotICAgICAgfQotICAgICAgaWYgKG1pbkludGVydmFsTXMgPgotICAgICAgICAgIHJ0Yzo6ZGNo
ZWNrZWRfY2FzdDx1aW50MzJfdD4oaW50ZXJ2YWxfY29uZmlnXy52aWRlb19pbnRlcnZhbF9tcykp
IHsKLSAgICAgICAgbWluSW50ZXJ2YWxNcyA9Ci0gICAgICAgICAgICBydGM6OmRjaGVja2VkX2Nh
c3Q8dWludDMyX3Q+KGludGVydmFsX2NvbmZpZ18udmlkZW9faW50ZXJ2YWxfbXMpOworICAgIGlu
dCBtaW5faW50ZXJ2YWxfbXMgPSByZXBvcnRfaW50ZXJ2YWxfbXNfOworCisgICAgaWYgKCFhdWRp
b18gJiYgc2VuZGluZ18pIHsKKyAgICAgIC8vIENhbGN1bGF0ZSBiYW5kd2lkdGggZm9yIHZpZGVv
OyAzNjAgLyBzZW5kIGJhbmR3aWR0aCBpbiBrYml0L3MuCisgICAgICBpbnQgc2VuZF9iaXRyYXRl
X2tiaXQgPSBmZWVkYmFja19zdGF0ZS5zZW5kX2JpdHJhdGUgLyAxMDAwOworICAgICAgaWYgKHNl
bmRfYml0cmF0ZV9rYml0ICE9IDApIHsKKyAgICAgICAgbWluX2ludGVydmFsX21zID0gMzYwMDAw
IC8gc2VuZF9iaXRyYXRlX2tiaXQ7CisgICAgICAgIG1pbl9pbnRlcnZhbF9tcyA9IHN0ZDo6bWlu
KG1pbl9pbnRlcnZhbF9tcywgcmVwb3J0X2ludGVydmFsX21zXyk7CiAgICAgICB9CiAgICAgfQog
CiAgICAgLy8gVGhlIGludGVydmFsIGJldHdlZW4gUlRDUCBwYWNrZXRzIGlzIHZhcmllZCByYW5k
b21seSBvdmVyIHRoZQogICAgIC8vIHJhbmdlIFsxLzIsMy8yXSB0aW1lcyB0aGUgY2FsY3VsYXRl
ZCBpbnRlcnZhbC4KLSAgICB1aW50MzJfdCB0aW1lVG9OZXh0ID0KLSAgICAgICAgcmFuZG9tXy5S
YW5kKG1pbkludGVydmFsTXMgKiAxIC8gMiwgbWluSW50ZXJ2YWxNcyAqIDMgLyAyKTsKLSAgICBu
ZXh0X3RpbWVfdG9fc2VuZF9ydGNwXyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkgKyB0
aW1lVG9OZXh0OworICAgIGludCB0aW1lX3RvX25leHQgPQorICAgICAgICByYW5kb21fLlJhbmQo
bWluX2ludGVydmFsX21zICogMSAvIDIsIG1pbl9pbnRlcnZhbF9tcyAqIDMgLyAyKTsKKworICAg
IFJUQ19EQ0hFQ0tfR1QodGltZV90b19uZXh0LCAwKTsKKyAgICBuZXh0X3RpbWVfdG9fc2VuZF9y
dGNwXyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkgKyB0aW1lX3RvX25leHQ7CiAKICAg
ICAvLyBSdGNwU2VuZGVyIGV4cGVjdGVkIHRvIGJlIHVzZWQgZm9yIHNlbmRpbmcgZWl0aGVyIGp1
c3Qgc2VuZGVyIHJlcG9ydHMKICAgICAvLyBvciBqdXN0IHJlY2VpdmVyIHJlcG9ydHMuCkBAIC03
OTEsNyArODA0LDcgQEAgc3RkOjp2ZWN0b3I8cnRjcDo6UmVwb3J0QmxvY2s+IFJUQ1BTZW5kZXI6
OkNyZWF0ZVJlcG9ydEJsb2NrcygKICAgaWYgKCFyZXN1bHQuZW1wdHkoKSAmJiAoKGZlZWRiYWNr
X3N0YXRlLmxhc3RfcnJfbnRwX3NlY3MgIT0gMCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGZlZWRiYWNrX3N0YXRlLmxhc3RfcnJfbnRwX2ZyYWMgIT0gMCkpKSB7CiAgICAgLy8gR2V0
IG91ciBOVFAgYXMgbGF0ZSBhcyBwb3NzaWJsZSB0byBhdm9pZCBhIHJhY2UuCi0gICAgdWludDMy
X3Qgbm93ID0gQ29tcGFjdE50cChjbG9ja18tPkN1cnJlbnROdHBUaW1lKCkpOworICAgIHVpbnQz
Ml90IG5vdyA9IENvbXBhY3ROdHAoVGltZU1pY3Jvc1RvTnRwKGNsb2NrXy0+VGltZUluTWljcm9z
ZWNvbmRzKCkpKTsKIAogICAgIHVpbnQzMl90IHJlY2VpdmVfdGltZSA9IGZlZWRiYWNrX3N0YXRl
Lmxhc3RfcnJfbnRwX3NlY3MgJiAweDAwMDBGRkZGOwogICAgIHJlY2VpdmVfdGltZSA8PD0gMTY7
CkBAIC05NDksMTIgKzk2Miw0IEBAIGJvb2wgUlRDUFNlbmRlcjo6U2VuZEZlZWRiYWNrUGFja2V0
KGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiBwYWNrZXQpIHsKICAgcmV0dXJuIHBhY2tl
dC5CdWlsZChtYXhfcGFja2V0X3NpemUsIGNhbGxiYWNrKSAmJiAhc2VuZF9mYWlsdXJlOwogfQog
Ci1pbnQ2NF90IFJUQ1BTZW5kZXI6OlJ0Y3BBdWRpb1JlcG9ydEludmVydmFsKCkgY29uc3Qgewot
ICByZXR1cm4gaW50ZXJ2YWxfY29uZmlnXy5hdWRpb19pbnRlcnZhbF9tczsKLX0KLQotaW50NjRf
dCBSVENQU2VuZGVyOjpSdGNwVmlkZW9SZXBvcnRJbnZlcnZhbCgpIGNvbnN0IHsKLSAgcmV0dXJu
IGludGVydmFsX2NvbmZpZ18udmlkZW9faW50ZXJ2YWxfbXM7Ci19Ci0KIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bfc2VuZGVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3NlbmRlci5oCmluZGV4IGM5MjIwZGQzNWM3YTlkZmEwMGFkMmFjNWQwOTcxYjVkMzM1NzM3
ZjkuLjA4NDUzOTdkYTNiZjZkMjI0NTc4ZjUxYjA1N2FjY2M4MTNhYzI0OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0Y3Bfc2VuZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9zZW5kZXIuaApAQCAt
NjgsNyArNjgsNyBAQCBjbGFzcyBSVENQU2VuZGVyIHsKICAgICAgICAgICAgICBSdGNwUGFja2V0
VHlwZUNvdW50ZXJPYnNlcnZlciogcGFja2V0X3R5cGVfY291bnRlcl9vYnNlcnZlciwKICAgICAg
ICAgICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgICAgICAgICAgIFRyYW5zcG9ydCog
b3V0Z29pbmdfdHJhbnNwb3J0LAotICAgICAgICAgICAgIFJ0Y3BJbnRlcnZhbENvbmZpZyBpbnRl
cnZhbF9jb25maWcpOworICAgICAgICAgICAgIGludCByZXBvcnRfaW50ZXJ2YWxfbXMpOwogICB2
aXJ0dWFsIH5SVENQU2VuZGVyKCk7CiAKICAgUnRjcE1vZGUgU3RhdHVzKCkgY29uc3Q7CkBAIC04
Miw3ICs4MiwxMyBAQCBjbGFzcyBSVENQU2VuZGVyIHsKIAogICB2b2lkIFNldFRpbWVzdGFtcE9m
ZnNldCh1aW50MzJfdCB0aW1lc3RhbXBfb2Zmc2V0KTsKIAotICB2b2lkIFNldExhc3RSdHBUaW1l
KHVpbnQzMl90IHJ0cF90aW1lc3RhbXAsIGludDY0X3QgY2FwdHVyZV90aW1lX21zKTsKKyAgLy8g
VE9ETyhidWdzLndlYnJ0Yy5vcmcvNjQ1OCk6IFJlbW92ZSBkZWZhdWx0IHBhcmFtZXRlciB2YWx1
ZSB3aGVuIGFsbCB0aGUKKyAgLy8gZGVwZW5kaW5nIHByb2plY3RzIGFyZSB1cGRhdGVkIHRvIGNv
cnJlY3RseSBzZXQgcGF5bG9hZCB0eXBlLgorICB2b2lkIFNldExhc3RSdHBUaW1lKHVpbnQzMl90
IHJ0cF90aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBjYXB0dXJlX3Rp
bWVfbXMsCisgICAgICAgICAgICAgICAgICAgICAgaW50OF90IHBheWxvYWRfdHlwZSA9IC0xKTsK
KworICB2b2lkIFNldFJ0cENsb2NrUmF0ZShpbnQ4X3QgcGF5bG9hZF90eXBlLCBpbnQgcnRwX2Ns
b2NrX3JhdGVfaHopOwogCiAgIHVpbnQzMl90IFNTUkMoKSBjb25zdDsKIApAQCAtMTM1LDkgKzE0
MSw2IEBAIGNsYXNzIFJUQ1BTZW5kZXIgewogICB2b2lkIFNldFZpZGVvQml0cmF0ZUFsbG9jYXRp
b24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSk7CiAgIGJvb2wgU2VuZEZl
ZWRiYWNrUGFja2V0KGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiBwYWNrZXQpOwogCi0g
IGludDY0X3QgUnRjcEF1ZGlvUmVwb3J0SW52ZXJ2YWwoKSBjb25zdDsKLSAgaW50NjRfdCBSdGNw
VmlkZW9SZXBvcnRJbnZlcnZhbCgpIGNvbnN0OwotCiAgcHJpdmF0ZToKICAgY2xhc3MgUnRjcENv
bnRleHQ7CiAKQEAgLTE4NCwxMCArMTg3LDkgQEAgY2xhc3MgUlRDUFNlbmRlciB7CiAgIFJ0Y0V2
ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOwogICBUcmFuc3BvcnQqIGNvbnN0IHRyYW5zcG9ydF87
CiAKLSAgY29uc3QgUnRjcEludGVydmFsQ29uZmlnIGludGVydmFsX2NvbmZpZ187CisgIGNvbnN0
IGludCByZXBvcnRfaW50ZXJ2YWxfbXNfOwogCiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRp
Y2FsX3NlY3Rpb25fcnRjcF9zZW5kZXJfOwotICBib29sIHVzaW5nX25hY2tfIFJUQ19HVUFSREVE
X0JZKGNyaXRpY2FsX3NlY3Rpb25fcnRjcF9zZW5kZXJfKTsKICAgYm9vbCBzZW5kaW5nXyBSVENf
R1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2VuZGVyXyk7CiAKICAgaW50NjRfdCBu
ZXh0X3RpbWVfdG9fc2VuZF9ydGNwXyBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9uX3J0
Y3Bfc2VuZGVyXyk7CkBAIC0yNDQsNiArMjQ2LDExIEBAIGNsYXNzIFJUQ1BTZW5kZXIgewogICAg
ICAgUlRDX0dVQVJERURfQlkoY3JpdGljYWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8pOwogICBib29s
IHNlbmRfdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uXwogICAgICAgUlRDX0dVQVJERURfQlkoY3Jp
dGljYWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8pOworCisgIHN0ZDo6bWFwPGludDhfdCwgaW50PiBy
dHBfY2xvY2tfcmF0ZXNfa2h6XworICAgICAgUlRDX0dVQVJERURfQlkoY3JpdGljYWxfc2VjdGlv
bl9ydGNwX3NlbmRlcl8pOworICBpbnQ4X3QgbGFzdF9wYXlsb2FkX3R5cGVfIFJUQ19HVUFSREVE
X0JZKGNyaXRpY2FsX3NlY3Rpb25fcnRjcF9zZW5kZXJfKTsKKwogICBhYnNsOjpvcHRpb25hbDxW
aWRlb0JpdHJhdGVBbGxvY2F0aW9uPiBDaGVja0FuZFVwZGF0ZUxheWVyU3RydWN0dXJlKAogICAg
ICAgY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSkgY29uc3QKICAgICAgIFJU
Q19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoY3JpdGljYWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9zZW5kZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydGNwX3NlbmRlcl91bml0dGVzdC5jYwppbmRleCBiY2ZmYzgxMjEzZDlmMTI0OWM4MzM0MzM4
ODNlNjU1ZjM1OTIyM2JlLi5lMWE0MzZiODQ1MmZmNzI5MWM5NGI4ZmY3MTgwZWRiNWYxYzNiODVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlcl91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3NlbmRlcl91bml0dGVzdC5jYwpAQCAtMTEsMTEgKzExLDEzIEBACiAjaW5jbHVk
ZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQv
aW5jbHVkZSkKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVm
aW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2J5
ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2NvbW1v
bl9oZWFkZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRl
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2
ZWQuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdGltZV91dGlsLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgogI2lu
Y2x1ZGUgInRlc3QvZ3Rlc3QuaCIKQEAgLTQzLDcgKzQ1LDcgQEAgY2xhc3MgUnRjcFBhY2tldFR5
cGVDb3VudGVyT2JzZXJ2ZXJJbXBsIDogcHVibGljIFJ0Y3BQYWNrZXRUeXBlQ291bnRlck9ic2Vy
dmVyIHsKICAgUnRjcFBhY2tldFR5cGVDb3VudGVyIGNvdW50ZXJfOwogfTsKIAotY2xhc3MgVGVz
dFRyYW5zcG9ydCA6IHB1YmxpYyBUcmFuc3BvcnQsIHB1YmxpYyBSdHBEYXRhIHsKK2NsYXNzIFRl
c3RUcmFuc3BvcnQgOiBwdWJsaWMgVHJhbnNwb3J0IHsKICBwdWJsaWM6CiAgIFRlc3RUcmFuc3Bv
cnQoKSB7fQogCkBAIC01NiwxMSArNTgsNiBAQCBjbGFzcyBUZXN0VHJhbnNwb3J0IDogcHVibGlj
IFRyYW5zcG9ydCwgcHVibGljIFJ0cERhdGEgewogICAgIHBhcnNlcl8uUGFyc2UoZGF0YSwgbGVu
KTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQotICBpbnQgT25SZWNlaXZlZFBheWxvYWREYXRhKGNv
bnN0IHVpbnQ4X3QqIHBheWxvYWRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgcGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YlJ0Y1JUUEhlYWRlciogcnRwX2hlYWRlcikgb3ZlcnJpZGUgewotICAgIHJldHVybiAwOwotICB9
CiAgIHRlc3Q6OlJ0Y3BQYWNrZXRQYXJzZXIgcGFyc2VyXzsKIH07CiAKQEAgLTgyLDE1ICs3OSwx
NyBAQCBjbGFzcyBSdGNwU2VuZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAg
IGNvbmZpZ3VyYXRpb24uY2xvY2sgPSAmY2xvY2tfOwogICAgIGNvbmZpZ3VyYXRpb24ub3V0Z29p
bmdfdHJhbnNwb3J0ID0gJnRlc3RfdHJhbnNwb3J0XzsKICAgICBjb25maWd1cmF0aW9uLnJldHJh
bnNtaXNzaW9uX3JhdGVfbGltaXRlciA9ICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfOwor
ICAgIGNvbmZpZ3VyYXRpb24ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPSAxMDAwOwogCiAgICAg
cnRwX3J0Y3BfaW1wbF8ucmVzZXQobmV3IE1vZHVsZVJ0cFJ0Y3BJbXBsKGNvbmZpZ3VyYXRpb24p
KTsKICAgICBydGNwX3NlbmRlcl8ucmVzZXQobmV3IFJUQ1BTZW5kZXIoZmFsc2UsICZjbG9ja18s
IHJlY2VpdmVfc3RhdGlzdGljc18uZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsICZ0ZXN0X3RyYW5zcG9ydF8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucnRjcF9pbnRlcnZhbF9j
b25maWcpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJh
dGlvbi5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcykpOwogICAgIHJ0Y3Bfc2VuZGVyXy0+U2V0U1NS
QyhrU2VuZGVyU3NyYyk7CiAgICAgcnRjcF9zZW5kZXJfLT5TZXRSZW1vdGVTU1JDKGtSZW1vdGVT
c3JjKTsKICAgICBydGNwX3NlbmRlcl8tPlNldFRpbWVzdGFtcE9mZnNldChrU3RhcnRSdHBUaW1l
c3RhbXApOwotICAgIHJ0Y3Bfc2VuZGVyXy0+U2V0TGFzdFJ0cFRpbWUoa1J0cFRpbWVzdGFtcCwg
Y2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgICBydGNwX3NlbmRlcl8tPlNldExhc3RS
dHBUaW1lKGtSdHBUaW1lc3RhbXAsIGNsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qcGF5bHBhZF90eXBlPSovMCk7CiAgIH0KIAog
ICB2b2lkIEluc2VydEluY29taW5nUGFja2V0KHVpbnQzMl90IHJlbW90ZV9zc3JjLCB1aW50MTZf
dCBzZXFfbnVtKSB7CkBAIC0xNDEsNyArMTQwLDcgQEAgVEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBT
ZW5kU3IpIHsKICAgcnRjcF9zZW5kZXJfLT5TZXRTZW5kaW5nU3RhdHVzKGZlZWRiYWNrX3N0YXRl
LCB0cnVlKTsKICAgZmVlZGJhY2tfc3RhdGUucGFja2V0c19zZW50ID0ga1BhY2tldENvdW50Owog
ICBmZWVkYmFja19zdGF0ZS5tZWRpYV9ieXRlc19zZW50ID0ga09jdGV0Q291bnQ7Ci0gIE50cFRp
bWUgbnRwID0gY2xvY2tfLkN1cnJlbnROdHBUaW1lKCk7CisgIE50cFRpbWUgbnRwID0gVGltZU1p
Y3Jvc1RvTnRwKGNsb2NrXy5UaW1lSW5NaWNyb3NlY29uZHMoKSk7CiAgIEVYUEVDVF9FUSgwLCBy
dGNwX3NlbmRlcl8tPlNlbmRSVENQKGZlZWRiYWNrX3N0YXRlLCBrUnRjcFNyKSk7CiAgIEVYUEVD
VF9FUSgxLCBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5udW1fcGFja2V0cygpKTsKICAgRVhQ
RUNUX0VRKGtTZW5kZXJTc3JjLCBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5zZW5kZXJfc3Ny
YygpKTsKQEAgLTE1MywxMCArMTUyLDQyIEBAIFRFU1RfRihSdGNwU2VuZGVyVGVzdCwgU2VuZFNy
KSB7CiAgIEVYUEVDVF9FUSgwVSwgcGFyc2VyKCktPnNlbmRlcl9yZXBvcnQoKS0+cmVwb3J0X2Js
b2NrcygpLnNpemUoKSk7CiB9CiAKK1RFU1RfRihSdGNwU2VuZGVyVGVzdCwgU2VuZENvbnNlY3V0
aXZlU3JXaXRoRXhhY3RTbG9wZSkgeworICBjb25zdCB1aW50MzJfdCBrUGFja2V0Q291bnQgPSAw
eDEyMzQ1OworICBjb25zdCB1aW50MzJfdCBrT2N0ZXRDb3VudCA9IDB4MjM0NTY7CisgIGNvbnN0
IGludCBrVGltZUJldHdlZW5TUnNVcyA9IDEwMDQzOyAgLy8gTm90IGV4YWN0IHZhbHVlIGluIG1p
bGxpc2Vjb25kcy4KKyAgY29uc3QgaW50IGtFeHRyYVBhY2tldHMgPSAzMDsKKyAgLy8gTWFrZSBz
dXJlIGNsb2NrIGlzIG5vdCBleGFjdGx5IGF0IHNvbWUgbWlsbGlzZWNvbmRzIHBvaW50LgorICBj
bG9ja18uQWR2YW5jZVRpbWVNaWNyb3NlY29uZHMoa1RpbWVCZXR3ZWVuU1JzVXMpOworICBydGNw
X3NlbmRlcl8tPlNldFJUQ1BTdGF0dXMoUnRjcE1vZGU6OmtSZWR1Y2VkU2l6ZSk7CisgIFJUQ1BT
ZW5kZXI6OkZlZWRiYWNrU3RhdGUgZmVlZGJhY2tfc3RhdGUgPSBydHBfcnRjcF9pbXBsXy0+R2V0
RmVlZGJhY2tTdGF0ZSgpOworICBydGNwX3NlbmRlcl8tPlNldFNlbmRpbmdTdGF0dXMoZmVlZGJh
Y2tfc3RhdGUsIHRydWUpOworICBmZWVkYmFja19zdGF0ZS5wYWNrZXRzX3NlbnQgPSBrUGFja2V0
Q291bnQ7CisgIGZlZWRiYWNrX3N0YXRlLm1lZGlhX2J5dGVzX3NlbnQgPSBrT2N0ZXRDb3VudDsK
KworICBFWFBFQ1RfRVEoMCwgcnRjcF9zZW5kZXJfLT5TZW5kUlRDUChmZWVkYmFja19zdGF0ZSwg
a1J0Y3BTcikpOworICBFWFBFQ1RfRVEoMSwgcGFyc2VyKCktPnNlbmRlcl9yZXBvcnQoKS0+bnVt
X3BhY2tldHMoKSk7CisgIE50cFRpbWUgbnRwMSA9IHBhcnNlcigpLT5zZW5kZXJfcmVwb3J0KCkt
Pm50cCgpOworICB1aW50MzJfdCBydHAxID0gcGFyc2VyKCktPnNlbmRlcl9yZXBvcnQoKS0+cnRw
X3RpbWVzdGFtcCgpOworCisgIC8vIFNlbmQgbW9yZSBTUnMgdG8gZW5zdXJlIHNsb3BlIGlzIGFs
d2F5cyBleGFjdCBmb3IgZGlmZmVyZW50IG9mZnNldHMKKyAgZm9yIChpbnQgcGFja2V0cyA9IDE7
IHBhY2tldHMgPD0ga0V4dHJhUGFja2V0czsgKytwYWNrZXRzKSB7CisgICAgY2xvY2tfLkFkdmFu
Y2VUaW1lTWljcm9zZWNvbmRzKGtUaW1lQmV0d2VlblNSc1VzKTsKKyAgICBFWFBFQ1RfRVEoMCwg
cnRjcF9zZW5kZXJfLT5TZW5kUlRDUChmZWVkYmFja19zdGF0ZSwga1J0Y3BTcikpOworICAgIEVY
UEVDVF9FUShwYWNrZXRzICsgMSwgcGFyc2VyKCktPnNlbmRlcl9yZXBvcnQoKS0+bnVtX3BhY2tl
dHMoKSk7CisKKyAgICBOdHBUaW1lIG50cDIgPSBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5u
dHAoKTsKKyAgICB1aW50MzJfdCBydHAyID0gcGFyc2VyKCktPnNlbmRlcl9yZXBvcnQoKS0+cnRw
X3RpbWVzdGFtcCgpOworCisgICAgdWludDMyX3QgbnRwX2RpZmZfaW5fcnRwX3VuaXRzID0KKyAg
ICAgICAgKG50cDIuVG9NcygpIC0gbnRwMS5Ub01zKCkpICogKGtWaWRlb1BheWxvYWRUeXBlRnJl
cXVlbmN5IC8gMTAwMCk7CisgICAgRVhQRUNUX0VRKHJ0cDIgLSBydHAxLCBudHBfZGlmZl9pbl9y
dHBfdW5pdHMpOworICB9Cit9CisKIFRFU1RfRihSdGNwU2VuZGVyVGVzdCwgRG9Ob3RTZW5kU3JC
ZWZvcmVSdHApIHsKICAgcnRjcF9zZW5kZXJfLnJlc2V0KG5ldyBSVENQU2VuZGVyKGZhbHNlLCAm
Y2xvY2tfLCByZWNlaXZlX3N0YXRpc3RpY3NfLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgJnRlc3RfdHJhbnNwb3J0XywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BJbnRlcnZhbENvbmZpZ3t9KSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCAmdGVz
dF90cmFuc3BvcnRfLCAxMDAwKSk7CiAgIHJ0Y3Bfc2VuZGVyXy0+U2V0U1NSQyhrU2VuZGVyU3Ny
Yyk7CiAgIHJ0Y3Bfc2VuZGVyXy0+U2V0UmVtb3RlU1NSQyhrUmVtb3RlU3NyYyk7CiAgIHJ0Y3Bf
c2VuZGVyXy0+U2V0UlRDUFN0YXR1cyhSdGNwTW9kZTo6a1JlZHVjZWRTaXplKTsKQEAgLTE3NCw4
ICsyMDUsNyBAQCBURVNUX0YoUnRjcFNlbmRlclRlc3QsIERvTm90U2VuZFNyQmVmb3JlUnRwKSB7
CiAKIFRFU1RfRihSdGNwU2VuZGVyVGVzdCwgRG9Ob3RTZW5kQ29tcHVuZEJlZm9yZVJ0cCkgewog
ICBydGNwX3NlbmRlcl8ucmVzZXQobmV3IFJUQ1BTZW5kZXIoZmFsc2UsICZjbG9ja18sIHJlY2Vp
dmVfc3RhdGlzdGljc18uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLCBudWxscHRyLCAmdGVzdF90cmFuc3BvcnRfLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUnRjcEludGVydmFsQ29uZmlne30pKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsICZ0ZXN0X3RyYW5zcG9ydF8s
IDEwMDApKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRTU1JDKGtTZW5kZXJTc3JjKTsKICAgcnRjcF9z
ZW5kZXJfLT5TZXRSZW1vdGVTU1JDKGtSZW1vdGVTc3JjKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRS
VENQU3RhdHVzKFJ0Y3BNb2RlOjprQ29tcG91bmQpOwpAQCAtNDQ3LDcgKzQ3Nyw3IEBAIFRFU1Rf
RihSdGNwU2VuZGVyVGVzdCwgU2VuZFhyV2l0aFJydHIpIHsKICAgcnRjcF9zZW5kZXJfLT5TZXRS
VENQU3RhdHVzKFJ0Y3BNb2RlOjprQ29tcG91bmQpOwogICBFWFBFQ1RfRVEoMCwgcnRjcF9zZW5k
ZXJfLT5TZXRTZW5kaW5nU3RhdHVzKGZlZWRiYWNrX3N0YXRlKCksIGZhbHNlKSk7CiAgIHJ0Y3Bf
c2VuZGVyXy0+U2VuZFJ0Y3BYclJlY2VpdmVyUmVmZXJlbmNlVGltZSh0cnVlKTsKLSAgTnRwVGlt
ZSBudHAgPSBjbG9ja18uQ3VycmVudE50cFRpbWUoKTsKKyAgTnRwVGltZSBudHAgPSBUaW1lTWlj
cm9zVG9OdHAoY2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKICAgRVhQRUNUX0VRKDAsIHJ0
Y3Bfc2VuZGVyXy0+U2VuZFJUQ1AoZmVlZGJhY2tfc3RhdGUoKSwga1J0Y3BSZXBvcnQpKTsKICAg
RVhQRUNUX0VRKDEsIHBhcnNlcigpLT54cigpLT5udW1fcGFja2V0cygpKTsKICAgRVhQRUNUX0VR
KGtTZW5kZXJTc3JjLCBwYXJzZXIoKS0+eHIoKS0+c2VuZGVyX3NzcmMoKSk7CkBAIC00NzYsNyAr
NTA2LDcgQEAgVEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBUZXN0UmVnaXN0ZXJSdGNwUGFja2V0VHlw
ZU9ic2VydmVyKSB7CiAgIFJ0Y3BQYWNrZXRUeXBlQ291bnRlck9ic2VydmVySW1wbCBvYnNlcnZl
cjsKICAgcnRjcF9zZW5kZXJfLnJlc2V0KG5ldyBSVENQU2VuZGVyKGZhbHNlLCAmY2xvY2tfLCBy
ZWNlaXZlX3N0YXRpc3RpY3NfLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJm9ic2VydmVyLCBudWxscHRyLCAmdGVzdF90cmFuc3BvcnRfLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEludGVydmFsQ29uZmlne30pKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDApKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRS
ZW1vdGVTU1JDKGtSZW1vdGVTc3JjKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRSVENQU3RhdHVzKFJ0
Y3BNb2RlOjprUmVkdWNlZFNpemUpOwogICBFWFBFQ1RfRVEoMCwgcnRjcF9zZW5kZXJfLT5TZW5k
UlRDUChmZWVkYmFja19zdGF0ZSgpLCBrUnRjcFBsaSkpOwpAQCAtNTk4LDEyICs2MjgsMTIgQEAg
VEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBCeWVNdXN0QmVMYXN0KSB7CiAKICAgLy8gUmUtY29uZmln
dXJlIHJ0Y3Bfc2VuZGVyXyB3aXRoIG1vY2tfdHJhbnNwb3J0XwogICBydGNwX3NlbmRlcl8ucmVz
ZXQobmV3IFJUQ1BTZW5kZXIoZmFsc2UsICZjbG9ja18sIHJlY2VpdmVfc3RhdGlzdGljc18uZ2V0
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRy
LCAmbW9ja190cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
dGNwSW50ZXJ2YWxDb25maWd7fSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwgbnVsbHB0ciwgJm1vY2tfdHJhbnNwb3J0LCAxMDAwKSk7CiAgIHJ0Y3Bfc2Vu
ZGVyXy0+U2V0U1NSQyhrU2VuZGVyU3NyYyk7CiAgIHJ0Y3Bfc2VuZGVyXy0+U2V0UmVtb3RlU1NS
QyhrUmVtb3RlU3NyYyk7CiAgIHJ0Y3Bfc2VuZGVyXy0+U2V0VGltZXN0YW1wT2Zmc2V0KGtTdGFy
dFJ0cFRpbWVzdGFtcCk7Ci0gIHJ0Y3Bfc2VuZGVyXy0+U2V0TGFzdFJ0cFRpbWUoa1J0cFRpbWVz
dGFtcCwgY2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgcnRjcF9zZW5kZXJfLT5TZXRM
YXN0UnRwVGltZShrUnRwVGltZXN0YW1wLCBjbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypwYXlscGFkX3R5cGU9Ki8wKTsKIAogICAv
LyBTZXQgdXAgUkVNQiBpbmZvIHRvIGJlIGluY2x1ZGVkIHdpdGggQllFLgogICBydGNwX3NlbmRl
cl8tPlNldFJUQ1BTdGF0dXMoUnRjcE1vZGU6OmtDb21wb3VuZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3RyYW5zY2VpdmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlci5jYwpp
bmRleCA3N2IxMGNhMDUyZDk4NjQ5OTNmZGExYmVhZTRhZGUwYzcxYjIyMzQ2Li41N2QyMTQyZmZh
ZDRmZmYxZTE3Mjk1NWZjNmYzMWQ2Y2U4OWRlOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3RyYW5zY2VpdmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXIuY2MKQEAgLTM5
LDEwICszOSwxMCBAQCBSdGNwVHJhbnNjZWl2ZXI6On5SdGNwVHJhbnNjZWl2ZXIoKSB7CiAgIFJU
Q19EQ0hFQ0soIXJ0Y3BfdHJhbnNjZWl2ZXJfKTsKIH0KIAotdm9pZCBSdGNwVHJhbnNjZWl2ZXI6
OlN0b3Aoc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6UXVldWVkVGFzaz4gb25fZGVzdHJveWVkKSB7Cit2
b2lkIFJ0Y3BUcmFuc2NlaXZlcjo6U3RvcChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gb25fZGVzdHJv
eWVkKSB7CiAgIFJUQ19EQ0hFQ0socnRjcF90cmFuc2NlaXZlcl8pOwotICB0YXNrX3F1ZXVlXy0+
UG9zdFRhc2tBbmRSZXBseShEZXN0cnVjdG9ye3N0ZDo6bW92ZShydGNwX3RyYW5zY2VpdmVyXyl9
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUob25fZGVzdHJveWVk
KSk7CisgIHRhc2tfcXVldWVfLT5Qb3N0VGFzayhydGM6Ok5ld0Nsb3N1cmUoCisgICAgICBEZXN0
cnVjdG9ye3N0ZDo6bW92ZShydGNwX3RyYW5zY2VpdmVyXyl9LCBzdGQ6Om1vdmUob25fZGVzdHJv
eWVkKSkpOwogICBSVENfRENIRUNLKCFydGNwX3RyYW5zY2VpdmVyXyk7CiB9CiAKQEAgLTU5LDEz
ICs1OSwxNCBAQCB2b2lkIFJ0Y3BUcmFuc2NlaXZlcjo6QWRkTWVkaWFSZWNlaXZlclJ0Y3BPYnNl
cnZlcigKIHZvaWQgUnRjcFRyYW5zY2VpdmVyOjpSZW1vdmVNZWRpYVJlY2VpdmVyUnRjcE9ic2Vy
dmVyKAogICAgIHVpbnQzMl90IHJlbW90ZV9zc3JjLAogICAgIE1lZGlhUmVjZWl2ZXJSdGNwT2Jz
ZXJ2ZXIqIG9ic2VydmVyLAotICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlF1ZXVlZFRhc2s+IG9u
X3JlbW92ZWQpIHsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gb25fcmVtb3ZlZCkgewogICBS
VENfQ0hFQ0socnRjcF90cmFuc2NlaXZlcl8pOwogICBSdGNwVHJhbnNjZWl2ZXJJbXBsKiBwdHIg
PSBydGNwX3RyYW5zY2VpdmVyXy5nZXQoKTsKICAgYXV0byByZW1vdmUgPSBbcHRyLCByZW1vdGVf
c3NyYywgb2JzZXJ2ZXJdIHsKICAgICBwdHItPlJlbW92ZU1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2
ZXIocmVtb3RlX3NzcmMsIG9ic2VydmVyKTsKICAgfTsKLSAgdGFza19xdWV1ZV8tPlBvc3RUYXNr
QW5kUmVwbHkoc3RkOjptb3ZlKHJlbW92ZSksIHN0ZDo6bW92ZShvbl9yZW1vdmVkKSk7CisgIHRh
c2tfcXVldWVfLT5Qb3N0VGFzaygKKyAgICAgIHJ0Yzo6TmV3Q2xvc3VyZShzdGQ6Om1vdmUocmVt
b3ZlKSwgc3RkOjptb3ZlKG9uX3JlbW92ZWQpKSk7CiB9CiAKIHZvaWQgUnRjcFRyYW5zY2VpdmVy
OjpTZXRSZWFkeVRvU2VuZChib29sIHJlYWR5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3RyYW5zY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyLmgKaW5kZXggZmM5NDg4
YzRhYmQ2NDBjNTA3ZjVmY2U0MzlmMzdiOGIzZTU1YmJlYS4uOWM5Njc1MTEwZmE2MGUzOTVmNTEy
NTAzNDFmMWIwZTBjOTBjOThiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZl
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXIuaApAQCAtMTEsNiArMTEsNyBAQAog
I2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVENQX1RSQU5TQ0VJVkVSX0hfCiAjZGVm
aW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfVFJBTlNDRUlWRVJfSF8KIAorI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KICNp
bmNsdWRlIDx2ZWN0b3I+CkBAIC00MiwxOCArNDMsMTcgQEAgY2xhc3MgUnRjcFRyYW5zY2VpdmVy
IDogcHVibGljIFJ0Y3BGZWVkYmFja1NlbmRlckludGVyZmFjZSB7CiAgIC8vIE5vdGUgdGhhdCBp
bnRlcmZhY2VzIHByb3ZpZGVkIGluIGNvbnN0cnVjdG9yIG9yIHJlZ2lzdGVyZWQgd2l0aCBBZGRP
YnNlcnZlcgogICAvLyBzdGlsbCBtaWdodCBiZSB1c2VkIGJ5IHRoZSB0cmFuc2NlaXZlciBvbiB0
aGUgdGFzayBxdWV1ZQogICAvLyB1bnRpbCB8b25fZGVzdHJveWVkfCBydW5zLgotICB2b2lkIFN0
b3Aoc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6UXVldWVkVGFzaz4gb25fZGVzdHJveWVkKTsKKyAgdm9p
ZCBTdG9wKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBvbl9kZXN0cm95ZWQpOwogCiAgIC8vIFJlZ2lz
dGVycyBvYnNlcnZlciB0byBiZSBub3RpZmllZCBhYm91dCBpbmNvbWluZyBydGNwIHBhY2tldHMu
CiAgIC8vIENhbGxzIHRvIG9ic2VydmVyIHdpbGwgYmUgZG9uZSBvbiB0aGUgfGNvbmZpZy50YXNr
X3F1ZXVlfC4KICAgdm9pZCBBZGRNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKHVpbnQzMl90IHJl
bW90ZV9zc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFSZWNl
aXZlclJ0Y3BPYnNlcnZlciogb2JzZXJ2ZXIpOwogICAvLyBEZXJlZ2lzdGVycyB0aGUgb2JzZXJ2
ZXIuIE1pZ2h0IHJldHVybiBiZWZvcmUgb2JzZXJ2ZXIgaXMgZGVyZWdpc3RlcmVkLgotICAvLyBQ
b3N0cyB8b25fcmVtb3ZlZHwgdGFzayB3aGVuIG9ic2VydmVyIGlzIGRlcmVnaXN0ZXJlZC4KLSAg
dm9pZCBSZW1vdmVNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKAotICAgICAgdWludDMyX3QgcmVt
b3RlX3NzcmMsCi0gICAgICBNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKiBvYnNlcnZlciwKLSAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlF1ZXVlZFRhc2s+IG9uX3JlbW92ZWQpOworICAvLyBS
dW5zIHxvbl9yZW1vdmVkfCB3aGVuIG9ic2VydmVyIGlzIGRlcmVnaXN0ZXJlZC4KKyAgdm9pZCBS
ZW1vdmVNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKHVpbnQzMl90IHJlbW90ZV9zc3JjLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFSZWNlaXZlclJ0Y3BPYnNl
cnZlciogb2JzZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gb25fcmVtb3ZlZCk7CiAKICAgLy8gRW5hYmxlcy9kaXNhYmxl
cyBzZW5kaW5nIHJ0Y3AgcGFja2V0cyBldmVudHVhbGx5LgogICAvLyBQYWNrZXRzIG1heSBiZSBz
ZW50IGFmdGVyIHRoZSBTZXRSZWFkeVRvU2VuZChmYWxzZSkgcmV0dXJucywgYnV0IG5vIG5ldwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlcl9jb25maWcuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0Y3BfdHJhbnNjZWl2ZXJfY29uZmlnLmgKaW5kZXggMGRhMThlMmNjMWIxMjhhM2ZkM2JmMjcw
MzI1NWE4YmZmMGM4ZmZkZi4uMDEzMzBkMGJjN2RmYjBhZmYxNjQ5NzYwZmFmYjVlN2YxZjZmZjJk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlcl9jb25maWcuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2NvbmZpZy5oCkBAIC05NywxMSArOTcsNiBAQCBzdHJ1
Y3QgUnRjcFRyYW5zY2VpdmVyQ29uZmlnIHsKICAgLy8gRXN0aW1hdGUgUlRUIGFzIG5vbi1zZW5k
ZXIgYXMgZGVzY3JpYmVkIGluCiAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMz
NjExI3NlY3Rpb24tNC40IGFuZCAjc2VjdGlvbi00LjUKICAgYm9vbCBub25fc2VuZGVyX3J0dF9t
ZWFzdXJlbWVudCA9IGZhbHNlOwotICAvLyBDb3BpZXMgTGFzdFNSL0RlbGF5U2luY2VMYXN0U1Ig
Zm9yIHByZXZpb3VzIHJlcG9ydCBibG9jayB0byBhdm9pZAotICAvLyB0cmlnZ2VyaW5nIGJ1ZyBp
biBvbGRlciB2ZXJzaW9uIG9mIFJ0Y3BSZWNlaXZlci4KLSAgLy8gVE9ETyhidWdzLndlYnJ0Yy5v
cmcvODgwNSk6IENoYW5nZSB0byBmYWxzZSBieSBkZWZhdWx0IHRoZW4gcmVtb3ZlIHdoZW4KLSAg
Ly8gYWxsIG1ham9yIHdlYnJ0YyBjbGllbnRzIHVwZGF0ZWQgd2l0aCB0aGUgZml4IGluIFJ0Y3BS
ZWNlaXZlci4KLSAgYm9vbCBhdm9pZF96ZXJvX2xhc3Rfc3JfaW5fbGFzdF9yZXBvcnRfYmxvY2sg
PSB0cnVlOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF90cmFuc2NlaXZlcl9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlcl9p
bXBsLmNjCmluZGV4IDJjNmMzYWNjMzkxMzY1Y2E1OGY2NmUzZGM3ZTc1Njk2MzAyNzRjYzkuLjk3
YzJhYzAxOGIzMWQwYTU2ZjIyMmEwZDA4NDQyZTVmM2NiN2FkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfdHJhbnNjZWl2ZXJfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2Vp
dmVyX2ltcGwuY2MKQEAgLTQyMSwxMiArNDIxLDYgQEAgc3RkOjp2ZWN0b3I8cnRjcDo6UmVwb3J0
QmxvY2s+IFJ0Y3BUcmFuc2NlaXZlckltcGw6OkNyZWF0ZVJlcG9ydEJsb2NrcygKICAgICBhdXRv
IGl0ID0gcmVtb3RlX3NlbmRlcnNfLmZpbmQocmVwb3J0X2Jsb2NrLnNvdXJjZV9zc3JjKCkpOwog
ICAgIGlmIChpdCA9PSByZW1vdGVfc2VuZGVyc18uZW5kKCkgfHwKICAgICAgICAgIWl0LT5zZWNv
bmQubGFzdF9yZWNlaXZlZF9zZW5kZXJfcmVwb3J0KSB7Ci0gICAgICBpZiAoY29uZmlnXy5hdm9p
ZF96ZXJvX2xhc3Rfc3JfaW5fbGFzdF9yZXBvcnRfYmxvY2sgJiYgbGFzdF9zciAhPSAwKSB7Ci0g
ICAgICAgIC8vIFNpbXVsYXRlIGJlaGF2aW91ciBvZiB0aGUgUnRjcFNlbmRlciB0byBhdm9pZCBo
aXR0aW5nIGJ1ZyBpbgotICAgICAgICAvLyBSdGNwUmVjZWl2ZXIuCi0gICAgICAgIHJlcG9ydF9i
bG9jay5TZXRMYXN0U3IobGFzdF9zcik7Ci0gICAgICAgIHJlcG9ydF9ibG9jay5TZXREZWxheUxh
c3RTcihsYXN0X2RlbGF5KTsKLSAgICAgIH0KICAgICAgIGNvbnRpbnVlOwogICAgIH0KICAgICBj
b25zdCBTZW5kZXJSZXBvcnRUaW1lcyYgbGFzdF9zZW5kZXJfcmVwb3J0ID0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXJfaW1wbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfdHJhbnNjZWl2ZXJfaW1wbF91bml0dGVzdC5jYwppbmRleCBlNWRiMDg2MmNjNDc2MTA5YmNj
OTNiMmFiYjRiMWRmNmVlZTc2NWRjLi5lODZkNjdmNTc5MGM3ZjJjY2VhMmRiMjcxZmZkZTc5YzE1
ZWY5Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2ltcGxfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlcl9pbXBsX3VuaXR0ZXN0LmNjCkBA
IC03Nyw3ICs3Nyw2IEBAIGNvbnN0ZXhwciBpbnQga0FsbW9zdEZvcmV2ZXJNcyA9IDEwMDA7CiAv
LyBIZWxwZXIgdG8gd2FpdCBmb3IgYW4gcnRjcCBwYWNrZXQgcHJvZHVjZWQgb24gYSBkaWZmZXJl
bnQgdGhyZWFkL3Rhc2sgcXVldWUuCiBjbGFzcyBGYWtlUnRjcFRyYW5zcG9ydCA6IHB1YmxpYyB3
ZWJydGM6OlRyYW5zcG9ydCB7CiAgcHVibGljOgotICBGYWtlUnRjcFRyYW5zcG9ydCgpIDogc2Vu
dF9ydGNwXyhmYWxzZSwgZmFsc2UpIHt9CiAgIGJvb2wgU2VuZFJ0Y3AoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpIG92ZXJyaWRlIHsKICAgICBzZW50X3J0Y3BfLlNldCgpOwogICAg
IHJldHVybiB0cnVlOwpAQCAtMTQ4LDcgKzE0Nyw3IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVySW1w
bFRlc3QsIENhbkRlc3Ryb3lPblRhc2tRdWV1ZSkgewogICAvLyBXYWl0IGZvciBhIHBlcmlvZGlj
IHBhY2tldC4KICAgRVhQRUNUX1RSVUUodHJhbnNwb3J0LldhaXRQYWNrZXQoKSk7CiAKLSAgcnRj
OjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgcXVldWUu
UG9zdFRhc2soW3J0Y3BfdHJhbnNjZWl2ZXIsICZkb25lXSB7CiAgICAgZGVsZXRlIHJ0Y3BfdHJh
bnNjZWl2ZXI7CiAgICAgZG9uZS5TZXQoKTsKQEAgLTE4Nyw3ICsxODYsNyBAQCBURVNUKFJ0Y3BU
cmFuc2NlaXZlckltcGxUZXN0LCBEZWxheXNTZW5kaW5nRmlyc3RDb21wb25kUGFja2V0KSB7CiAg
IEVYUEVDVF9HRShydGM6OlRpbWVNaWxsaXMoKSAtIHN0YXJ0ZWRfbXMsIGNvbmZpZy5pbml0aWFs
X3JlcG9ydF9kZWxheV9tcyk7CiAKICAgLy8gQ2xlYW51cC4KLSAgcnRjOjpFdmVudCBkb25lKGZh
bHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgcXVldWUuUG9zdFRhc2soWyZdIHsK
ICAgICBydGNwX3RyYW5zY2VpdmVyLnJlc2V0KCk7CiAgICAgZG9uZS5TZXQoKTsKQEAgLTIyMCw3
ICsyMTksNyBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlckltcGxUZXN0LCBQZXJpb2RpY2FsbHlTZW5k
c1BhY2tldHMpIHsKICAgICAgICAgICAgIGNvbmZpZy5yZXBvcnRfcGVyaW9kX21zIC0gMSk7CiAK
ICAgLy8gQ2xlYW51cC4KLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6
RXZlbnQgZG9uZTsKICAgcXVldWUuUG9zdFRhc2soWyZdIHsKICAgICBydGNwX3RyYW5zY2VpdmVy
LnJlc2V0KCk7CiAgICAgZG9uZS5TZXQoKTsKQEAgLTI0Miw3ICsyNDEsNyBAQCBURVNUKFJ0Y3BU
cmFuc2NlaXZlckltcGxUZXN0LCBTZW5kQ29tcG91bmRQYWNrZXREZWxheXNQZXJpb2RpY1NlbmRQ
YWNrZXRzKSB7CiAgIC8vIFdhaXQgZm9yIGZpcnN0IHBhY2tldC4KICAgRVhQRUNUX1RSVUUodHJh
bnNwb3J0LldhaXRQYWNrZXQoKSk7CiAgIC8vIFNlbmQgbm9uIHBlcmlvZGljIG9uZSBhZnRlciBo
YWxmIHBlcmlvZC4KLSAgcnRjOjpFdmVudCBub25fcGVyaW9kaWMoZmFsc2UsIGZhbHNlKTsKKyAg
cnRjOjpFdmVudCBub25fcGVyaW9kaWM7CiAgIGludDY0X3QgdGltZV9vZl9ub25fcGVyaW9kaWNf
cGFja2V0X21zID0gMDsKICAgcXVldWUuUG9zdERlbGF5ZWRUYXNrKAogICAgICAgWyZdIHsKQEAg
LTI2NSw3ICsyNjQsNyBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlckltcGxUZXN0LCBTZW5kQ29tcG91
bmRQYWNrZXREZWxheXNQZXJpb2RpY1NlbmRQYWNrZXRzKSB7CiAgICAgICAgICAgICBjb25maWcu
cmVwb3J0X3BlcmlvZF9tcyAtIDEpOwogCiAgIC8vIENsZWFudXAuCi0gIHJ0Yzo6RXZlbnQgZG9u
ZShmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIHF1ZXVlLlBvc3RUYXNrKFsm
XSB7CiAgICAgcnRjcF90cmFuc2NlaXZlci5yZXNldCgpOwogICAgIGRvbmUuU2V0KCk7CkBAIC0z
MjksNyArMzI4LDcgQEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJJbXBsVGVzdCwgU2VuZHNQZXJpb2Rp
Y1J0Y3BXaGVuTmV0d29ya1N0YXRlSXNVcCkgewogICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnQuV2Fp
dFBhY2tldCgpKTsKIAogICAvLyBDbGVhbnVwLgotICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZh
bHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICBxdWV1ZS5Qb3N0VGFzayhbJl0gewogICAgIHJ0
Y3BfdHJhbnNjZWl2ZXIucmVzZXQoKTsKICAgICBkb25lLlNldCgpOwpAQCAtNjcxLDcgKzY3MCw2
IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVySW1wbFRlc3QsCiAKICAgUnRjcFRyYW5zY2VpdmVyQ29u
ZmlnIGNvbmZpZzsKICAgY29uZmlnLnNjaGVkdWxlX3BlcmlvZGljX2NvbXBvdW5kX3BhY2tldHMg
PSBmYWxzZTsKLSAgY29uZmlnLmF2b2lkX3plcm9fbGFzdF9zcl9pbl9sYXN0X3JlcG9ydF9ibG9j
ayA9IGZhbHNlOwogICBSdGNwUGFja2V0UGFyc2VyIHJ0Y3BfcGFyc2VyOwogICBSdGNwUGFyc2Vy
VHJhbnNwb3J0IHRyYW5zcG9ydCgmcnRjcF9wYXJzZXIpOwogICBjb25maWcub3V0Z29pbmdfdHJh
bnNwb3J0ID0gJnRyYW5zcG9ydDsKQEAgLTcwMyw1MiArNzAxLDYgQEAgVEVTVChSdGNwVHJhbnNj
ZWl2ZXJJbXBsVGVzdCwKICAgRVhQRUNUX0VRKHJlcG9ydF9ibG9ja3NbMV0ubGFzdF9zcigpLCAw
dSk7CiB9CiAKLVRFU1QoUnRjcFRyYW5zY2VpdmVySW1wbFRlc3QsIEF2b2lkTGFzdFJlcG9ydEJs
b2NrVG9IYXZlWmVyb0xhc3RTckZpZWxkKSB7Ci0gIGNvbnN0IHVpbnQzMl90IGtSZW1vdGVTc3Jj
MSA9IDU0MzIxOwotICBjb25zdCB1aW50MzJfdCBrUmVtb3RlU3NyYzIgPSA1NDMyMzsKLSAgTW9j
a1JlY2VpdmVTdGF0aXN0aWNzUHJvdmlkZXIgcmVjZWl2ZV9zdGF0aXN0aWNzOwotICBzdGQ6OnZl
Y3RvcjxSZXBvcnRCbG9jaz4gc3RhdGlzdGljc19yZXBvcnRfYmxvY2tzKDIpOwotICBzdGF0aXN0
aWNzX3JlcG9ydF9ibG9ja3NbMF0uU2V0TWVkaWFTc3JjKGtSZW1vdGVTc3JjMSk7Ci0gIHN0YXRp
c3RpY3NfcmVwb3J0X2Jsb2Nrc1sxXS5TZXRNZWRpYVNzcmMoa1JlbW90ZVNzcmMyKTsKLSAgT05f
Q0FMTChyZWNlaXZlX3N0YXRpc3RpY3MsIFJ0Y3BSZXBvcnRCbG9ja3MoXykpCi0gICAgICAuV2ls
bEJ5RGVmYXVsdChSZXR1cm4oc3RhdGlzdGljc19yZXBvcnRfYmxvY2tzKSk7Ci0KLSAgUnRjcFRy
YW5zY2VpdmVyQ29uZmlnIGNvbmZpZzsKLSAgY29uZmlnLnNjaGVkdWxlX3BlcmlvZGljX2NvbXBv
dW5kX3BhY2tldHMgPSBmYWxzZTsKLSAgY29uZmlnLmF2b2lkX3plcm9fbGFzdF9zcl9pbl9sYXN0
X3JlcG9ydF9ibG9jayA9IHRydWU7Ci0gIFJ0Y3BQYWNrZXRQYXJzZXIgcnRjcF9wYXJzZXI7Ci0g
IFJ0Y3BQYXJzZXJUcmFuc3BvcnQgdHJhbnNwb3J0KCZydGNwX3BhcnNlcik7Ci0gIGNvbmZpZy5v
dXRnb2luZ190cmFuc3BvcnQgPSAmdHJhbnNwb3J0OwotICBjb25maWcucmVjZWl2ZV9zdGF0aXN0
aWNzID0gJnJlY2VpdmVfc3RhdGlzdGljczsKLSAgUnRjcFRyYW5zY2VpdmVySW1wbCBydGNwX3Ry
YW5zY2VpdmVyKGNvbmZpZyk7Ci0KLSAgY29uc3QgTnRwVGltZSBrUmVtb3RlTnRwKDB4OTg3NjU0
MzIxMSk7Ci0gIC8vIFJlY2VpdmUgU2VuZGVyUmVwb3J0IGZvciBSZW1vdGVTc3JjMSwgYnV0IG5v
IHJlcG9ydCBmb3IgUmVtb3RlU3NyYzIuCi0gIFNlbmRlclJlcG9ydCBzcjsKLSAgc3IuU2V0U2Vu
ZGVyU3NyYyhrUmVtb3RlU3NyYzEpOwotICBzci5TZXROdHAoa1JlbW90ZU50cCk7Ci0gIGF1dG8g
cmF3X3BhY2tldCA9IHNyLkJ1aWxkKCk7Ci0gIHJ0Y3BfdHJhbnNjZWl2ZXIuUmVjZWl2ZVBhY2tl
dChyYXdfcGFja2V0LCAvKm5vd191cz0qLzApOwotCi0gIC8vIFRyaWdnZXIgc2VuZGluZyBSZWNl
aXZlclJlcG9ydC4KLSAgcnRjcF90cmFuc2NlaXZlci5TZW5kQ29tcG91bmRQYWNrZXQoKTsKLQot
ICBFWFBFQ1RfR1QocnRjcF9wYXJzZXIucmVjZWl2ZXJfcmVwb3J0KCktPm51bV9wYWNrZXRzKCks
IDApOwotICBjb25zdCBhdXRvJiByZXBvcnRfYmxvY2tzID0gcnRjcF9wYXJzZXIucmVjZWl2ZXJf
cmVwb3J0KCktPnJlcG9ydF9ibG9ja3MoKTsKLSAgQVNTRVJUX0VRKHJlcG9ydF9ibG9ja3Muc2l6
ZSgpLCAydSk7Ci0gIC8vIFJ0Y3BUcmFuc2NlaXZlckltcGwgZG9lc24ndCBndWFyYW50ZWUgb3Jk
ZXIgb2YgdGhlIHJlcG9ydCBibG9ja3MKLSAgLy8gbWF0Y2ggcmVzdWx0IG9mIFJlY2VpdmVTdGF0
aXN0aWNzUHJvdmlkZXI6OlJ0Y3BSZXBvcnRCbG9ja3MgY2FsbGJhY2ssCi0gIC8vIGJ1dCBmb3Ig
c2ltcGxpY2l0eSBvZiB0aGUgdGVzdCBhc3VtZSBpdCBpcyB0aGUgc2FtZS4KLSAgQVNTRVJUX0VR
KHJlcG9ydF9ibG9ja3NbMF0uc291cmNlX3NzcmMoKSwga1JlbW90ZVNzcmMxKTsKLSAgRVhQRUNU
X05FKHJlcG9ydF9ibG9ja3NbMF0ubGFzdF9zcigpLCAwdSk7Ci0KLSAgQVNTRVJUX0VRKHJlcG9y
dF9ibG9ja3NbMV0uc291cmNlX3NzcmMoKSwga1JlbW90ZVNzcmMyKTsKLSAgLy8gTm8gU2VuZGVy
IFJlcG9ydCBmb3Iga1JlbW90ZVNzcmMyLCB1c2Ugc2FtZSBMYXN0U1IgYXMgZm9yIGtSZW1vdGVT
c3JjMQotICBFWFBFQ1RfRVEocmVwb3J0X2Jsb2Nrc1sxXS5sYXN0X3NyKCksIHJlcG9ydF9ibG9j
a3NbMF0ubGFzdF9zcigpKTsKLSAgRVhQRUNUX0VRKHJlcG9ydF9ibG9ja3NbMV0uZGVsYXlfc2lu
Y2VfbGFzdF9zcigpLAotICAgICAgICAgICAgcmVwb3J0X2Jsb2Nrc1swXS5kZWxheV9zaW5jZV9s
YXN0X3NyKCkpOwotfQotCiBURVNUKFJ0Y3BUcmFuc2NlaXZlckltcGxUZXN0LAogICAgICBXaGVu
U2VuZHNSZWNlaXZlclJlcG9ydENhbGN1bGF0ZXNEZWxheVNpbmNlTGFzdFNlbmRlclJlcG9ydCkg
ewogICBjb25zdCB1aW50MzJfdCBrUmVtb3RlU3NyYzEgPSA0MzIxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF90cmFuc2NlaXZlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNj
ZWl2ZXJfdW5pdHRlc3QuY2MKaW5kZXggMmVhNWJjOWI1Mzc3ZDIxMmM4N2UzMTkwYmE1MDczNDI5
NTM2ZDcwYi4uZDcxOTE4ZGIwM2I0ZjdhNTZjMzM4Yzc2YjVkNDhhYzBlMTJhYWJmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydGNwX3RyYW5zY2VpdmVyX3VuaXR0ZXN0LmNjCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIE1v
Y2tNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyIDogcHVibGljIHdlYnJ0Yzo6TWVkaWFSZWNlaXZl
clJ0Y3BPYnNlcnZlciB7CiBjb25zdGV4cHIgaW50IGtUaW1lb3V0TXMgPSAxMDAwOwogCiB2b2lk
IFdhaXRQb3N0ZWRUYXNrcyhydGM6OlRhc2tRdWV1ZSogcXVldWUpIHsKLSAgcnRjOjpFdmVudCBk
b25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgcXVldWUtPlBvc3RUYXNr
KFsmZG9uZV0geyBkb25lLlNldCgpOyB9KTsKICAgQVNTRVJUX1RSVUUoZG9uZS5XYWl0KGtUaW1l
b3V0TXMpKTsKIH0KQEAgLTEwOCw4ICsxMDgsOCBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlclRlc3Qs
IENhbkJlRGVzdHJveWVkV2l0aG91dEJsb2NraW5nKSB7CiAgIGF1dG8qIHJ0Y3BfdHJhbnNjZWl2
ZXIgPSBuZXcgUnRjcFRyYW5zY2VpdmVyKGNvbmZpZyk7CiAgIHJ0Y3BfdHJhbnNjZWl2ZXItPlNl
bmRDb21wb3VuZFBhY2tldCgpOwogCi0gIHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFsc2UpOwot
ICBydGM6OkV2ZW50IGhlYXZ5X3Rhc2soZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25l
OworICBydGM6OkV2ZW50IGhlYXZ5X3Rhc2s7CiAgIHF1ZXVlLlBvc3RUYXNrKFsmXSB7CiAgICAg
RVhQRUNUX1RSVUUoaGVhdnlfdGFzay5XYWl0KGtUaW1lb3V0TXMpKTsKICAgICBkb25lLlNldCgp
OwpAQCAtMTI4LDcgKzEyOCw3IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVyVGVzdCwgTWF5U2VuZFBh
Y2tldHNBZnRlckRlc3RydWN0b3IpIHsgIC8vIGkuZS4gQmUgY2FyZWZ1bCEKICAgY29uZmlnLnRh
c2tfcXVldWUgPSAmcXVldWU7CiAgIGF1dG8qIHJ0Y3BfdHJhbnNjZWl2ZXIgPSBuZXcgUnRjcFRy
YW5zY2VpdmVyKGNvbmZpZyk7CiAKLSAgcnRjOjpFdmVudCBoZWF2eV90YXNrKGZhbHNlLCBmYWxz
ZSk7CisgIHJ0Yzo6RXZlbnQgaGVhdnlfdGFzazsKICAgcXVldWUuUG9zdFRhc2soWyZdIHsgRVhQ
RUNUX1RSVUUoaGVhdnlfdGFzay5XYWl0KGtUaW1lb3V0TXMpKTsgfSk7CiAgIHJ0Y3BfdHJhbnNj
ZWl2ZXItPlNlbmRDb21wb3VuZFBhY2tldCgpOwogICBkZWxldGUgcnRjcF90cmFuc2NlaXZlcjsK
QEAgLTE1OCw3ICsxNTgsNyBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlclRlc3QsIERvZXNudFBvc3RU
b1J0Y3BPYnNlcnZlckFmdGVyQ2FsbFRvUmVtb3ZlKSB7CiAgIGNvbmZpZy5vdXRnb2luZ190cmFu
c3BvcnQgPSAmbnVsbF90cmFuc3BvcnQ7CiAgIGNvbmZpZy50YXNrX3F1ZXVlID0gJnF1ZXVlOwog
ICBSdGNwVHJhbnNjZWl2ZXIgcnRjcF90cmFuc2NlaXZlcihjb25maWcpOwotICBydGM6OkV2ZW50
IG9ic2VydmVyX2RlbGV0ZWQoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBvYnNlcnZlcl9k
ZWxldGVkOwogCiAgIGF1dG8gb2JzZXJ2ZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxNb2NrTWVkaWFS
ZWNlaXZlclJ0Y3BPYnNlcnZlcj4oKTsKICAgRVhQRUNUX0NBTEwoKm9ic2VydmVyLCBPblNlbmRl
clJlcG9ydChrUmVtb3RlU3NyYywgXywgMSkpOwpAQCAtMTY2LDEyICsxNjYsMTEgQEAgVEVTVChS
dGNwVHJhbnNjZWl2ZXJUZXN0LCBEb2VzbnRQb3N0VG9SdGNwT2JzZXJ2ZXJBZnRlckNhbGxUb1Jl
bW92ZSkgewogCiAgIHJ0Y3BfdHJhbnNjZWl2ZXIuQWRkTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZl
cihrUmVtb3RlU3NyYywgb2JzZXJ2ZXIuZ2V0KCkpOwogICBydGNwX3RyYW5zY2VpdmVyLlJlY2Vp
dmVQYWNrZXQoQ3JlYXRlU2VuZGVyUmVwb3J0KGtSZW1vdGVTc3JjLCAxKSk7Ci0gIHJ0Y3BfdHJh
bnNjZWl2ZXIuUmVtb3ZlTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlcigKLSAgICAgIGtSZW1vdGVT
c3JjLCBvYnNlcnZlci5nZXQoKSwKLSAgICAgIC8qb25fcmVtb3ZlZD0qL3J0Yzo6TmV3Q2xvc3Vy
ZShbJl0gewotICAgICAgICBvYnNlcnZlci5yZXNldCgpOwotICAgICAgICBvYnNlcnZlcl9kZWxl
dGVkLlNldCgpOwotICAgICAgfSkpOworICBydGNwX3RyYW5zY2VpdmVyLlJlbW92ZU1lZGlhUmVj
ZWl2ZXJSdGNwT2JzZXJ2ZXIoa1JlbW90ZVNzcmMsIG9ic2VydmVyLmdldCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypvbl9yZW1vdmVkPSov
WyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb2JzZXJ2ZXIucmVzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJfZGVsZXRlZC5TZXQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICBydGNwX3RyYW5zY2Vp
dmVyLlJlY2VpdmVQYWNrZXQoQ3JlYXRlU2VuZGVyUmVwb3J0KGtSZW1vdGVTc3JjLCAyKSk7CiAK
ICAgRVhQRUNUX1RSVUUob2JzZXJ2ZXJfZGVsZXRlZC5XYWl0KGtUaW1lb3V0TXMpKTsKQEAgLTE4
OSwxNSArMTg4LDE0IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVyVGVzdCwgUmVtb3ZlTWVkaWFSZWNl
aXZlclJ0Y3BPYnNlcnZlcklzTm9uQmxvY2tpbmcpIHsKICAgYXV0byBvYnNlcnZlciA9IGFic2w6
Om1ha2VfdW5pcXVlPE1vY2tNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyPigpOwogICBydGNwX3Ry
YW5zY2VpdmVyLkFkZE1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIoa1JlbW90ZVNzcmMsIG9ic2Vy
dmVyLmdldCgpKTsKIAotICBydGM6OkV2ZW50IHF1ZXVlX2Jsb2NrZXIoZmFsc2UsIGZhbHNlKTsK
LSAgcnRjOjpFdmVudCBvYnNlcnZlcl9kZWxldGVkKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZl
bnQgcXVldWVfYmxvY2tlcjsKKyAgcnRjOjpFdmVudCBvYnNlcnZlcl9kZWxldGVkOwogICBxdWV1
ZS5Qb3N0VGFzayhbJl0geyBFWFBFQ1RfVFJVRShxdWV1ZV9ibG9ja2VyLldhaXQoa1RpbWVvdXRN
cykpOyB9KTsKLSAgcnRjcF90cmFuc2NlaXZlci5SZW1vdmVNZWRpYVJlY2VpdmVyUnRjcE9ic2Vy
dmVyKAotICAgICAga1JlbW90ZVNzcmMsIG9ic2VydmVyLmdldCgpLAotICAgICAgLypvbl9yZW1v
dmVkPSovcnRjOjpOZXdDbG9zdXJlKFsmXSB7Ci0gICAgICAgIG9ic2VydmVyLnJlc2V0KCk7Ci0g
ICAgICAgIG9ic2VydmVyX2RlbGV0ZWQuU2V0KCk7Ci0gICAgICB9KSk7CisgIHJ0Y3BfdHJhbnNj
ZWl2ZXIuUmVtb3ZlTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlcihrUmVtb3RlU3NyYywgb2JzZXJ2
ZXIuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKm9uX3JlbW92ZWQ9Ki9bJl0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5yZXNldCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcl9kZWxldGVkLlNl
dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CiAKICAgRVhQRUNUX1RIQVQob2JzZXJ2ZXIsIE5vdChJc051bGwoKSkpOwogICBxdWV1ZV9i
bG9ja2VyLlNldCgpOwpAQCAtMjQyLDEyICsyNDAsMTIgQEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJU
ZXN0LCBEb2VzbnRTZW5kUGFja2V0c0FmdGVyU3RvcENhbGxiYWNrKSB7CiAgIGNvbmZpZy5zY2hl
ZHVsZV9wZXJpb2RpY19jb21wb3VuZF9wYWNrZXRzID0gdHJ1ZTsKIAogICBhdXRvIHJ0Y3BfdHJh
bnNjZWl2ZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxSdGNwVHJhbnNjZWl2ZXI+KGNvbmZpZyk7Ci0g
IHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIHJ0
Y3BfdHJhbnNjZWl2ZXItPlNlbmRDb21wb3VuZFBhY2tldCgpOwotICBydGNwX3RyYW5zY2VpdmVy
LT5TdG9wKHJ0Yzo6TmV3Q2xvc3VyZShbJl0geworICBydGNwX3RyYW5zY2VpdmVyLT5TdG9wKFsm
XSB7CiAgICAgRVhQRUNUX0NBTEwob3V0Z29pbmdfdHJhbnNwb3J0LCBTZW5kUnRjcCkuVGltZXMo
MCk7CiAgICAgZG9uZS5TZXQoKTsKLSAgfSkpOworICB9KTsKICAgcnRjcF90cmFuc2NlaXZlciA9
IG51bGxwdHI7CiAgIEVYUEVDVF9UUlVFKGRvbmUuV2FpdChrVGltZW91dE1zKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5jYwpp
bmRleCAxM2VjMGFmZTlmN2JkNjc1YWM5ODQxYmU0MWNiOTk4YjllZjE1MWIwLi4wMDEwZDkwNzUw
ZjI5ZWZkMDAxYThhNWQyYjgxMTM2YmVmZTljMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
Zm9ybWF0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXQuY2MKQEAgLTEwLDEzICsxMCwxNSBA
QAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5oIgogCi0j
aW5jbHVkZSA8dXRpbGl0eT4KLQogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2lu
Y2x1ZGUgImFic2wvdHlwZXMvdmFyaWFudC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF9mb3JtYXRfaDI2NC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9mb3JtYXRfdmlkZW9fZ2VuZXJpYy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA4LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX2Zvcm1hdF92cDkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvaDI2NC9pbmNsdWRlL2gyNjRfZ2xvYmFscy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfZ2xvYmFscy5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvaW5jbHVkZS92cDlfZ2xvYmFscy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTYzLDYg
KzY1LDExIEBAIHN0ZDo6dmVjdG9yPGludD4gUnRwUGFja2V0aXplcjo6U3BsaXRBYm91dEVxdWFs
bHkoCiAgIFJUQ19EQ0hFQ0tfR0UobGltaXRzLmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4sIDAp
OwogCiAgIHN0ZDo6dmVjdG9yPGludD4gcmVzdWx0OworICBpZiAobGltaXRzLm1heF9wYXlsb2Fk
X2xlbiA+PQorICAgICAgbGltaXRzLnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbiArIHBheWxv
YWRfbGVuKSB7CisgICAgcmVzdWx0LnB1c2hfYmFjayhwYXlsb2FkX2xlbik7CisgICAgcmV0dXJu
IHJlc3VsdDsKKyAgfQogICBpZiAobGltaXRzLm1heF9wYXlsb2FkX2xlbiAtIGxpbWl0cy5maXJz
dF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA8IDEgfHwKICAgICAgIGxpbWl0cy5tYXhfcGF5bG9hZF9s
ZW4gLSBsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA8IDEpIHsKICAgICAvLyBDYXBh
Y2l0eSBpcyBub3QgZW5vdWdoIHRvIHB1dCBhIHNpbmdsZSBieXRlIGludG8gb25lIG9mIHRoZSBw
YWNrZXRzLgpAQCAtNzcsNiArODQsMTAgQEAgc3RkOjp2ZWN0b3I8aW50PiBSdHBQYWNrZXRpemVy
OjpTcGxpdEFib3V0RXF1YWxseSgKICAgLy8gSW50ZWdlciBkaXZpc2lvbnMgd2l0aCByb3VuZGlu
ZyB1cC4KICAgaW50IG51bV9wYWNrZXRzX2xlZnQgPQogICAgICAgKHRvdGFsX2J5dGVzICsgbGlt
aXRzLm1heF9wYXlsb2FkX2xlbiAtIDEpIC8gbGltaXRzLm1heF9wYXlsb2FkX2xlbjsKKyAgaWYg
KG51bV9wYWNrZXRzX2xlZnQgPT0gMSkgeworICAgIC8vIFNpbmdsZSBwYWNrZXQgaXMgYSBzcGVj
aWFsIGNhc2UgaGFuZGxlZCBhYm92ZS4KKyAgICBudW1fcGFja2V0c19sZWZ0ID0gMjsKKyAgfQog
CiAgIGlmIChwYXlsb2FkX2xlbiA8IG51bV9wYWNrZXRzX2xlZnQpIHsKICAgICAvLyBFZGdlIGNh
c2Ugd2hlcmUgbGltaXRzIGZvcmNlIHRvIGhhdmUgbW9yZSBwYWNrZXRzIHRoYW4gdGhlcmUgYXJl
IHBheWxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9mb3JtYXQuaAppbmRleCA5ZmFkNGNmOGY5NzYxY2FjYmYzYzg3Y2E0MDUxZDViNGJlNjIxZTRk
Li43MWM3ZGM1ZTBlY2Q4ZDRmYTgwYTA3OWIxOTFhNzhmNDIzY2ZiNDIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfZm9ybWF0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5oCkBAIC0xMSwx
NyArMTEsMTcgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX0ZPUk1BVF9I
XwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfRk9STUFUX0hfCiAKKyNpbmNs
dWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RyaW5nPgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAi
Y29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1
bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29u
c3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92
aWRlb19oZWFkZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CisKIGNsYXNzIFJ0cFBhY2tldFRv
U2VuZDsKIAogY2xhc3MgUnRwUGFja2V0aXplciB7CkBAIC0zMCw2ICszMCw4IEBAIGNsYXNzIFJ0
cFBhY2tldGl6ZXIgewogICAgIGludCBtYXhfcGF5bG9hZF9sZW4gPSAxMjAwOwogICAgIGludCBm
aXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDA7CiAgICAgaW50IGxhc3RfcGFja2V0X3JlZHVj
dGlvbl9sZW4gPSAwOworICAgIC8vIFJlZHVjdGlvbiBsZW4gZm9yIHBhY2tldCB0aGF0IGlzIGZp
cnN0ICYgbGFzdCBhdCB0aGUgc2FtZSB0aW1lLgorICAgIGludCBzaW5nbGVfcGFja2V0X3JlZHVj
dGlvbl9sZW4gPSAwOwogICB9OwogICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldGl6
ZXI+IENyZWF0ZSgKICAgICAgIFZpZGVvQ29kZWNUeXBlIHR5cGUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfZm9ybWF0X2gyNjQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gyNjQuY2MKaW5k
ZXggOTc5M2ViYWUyNTkxMzFkZGZlYzgxZTMxNzZlMjc4OGZhMjQ4ZTA3ZC4uN2E3YmNkZmJiODlj
ODc0ODkxZmEyY2UyMjAyMmVjNWM5ZTcxYWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zv
cm1hdF9oMjY0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfaDI2NC5jYwpAQCAtMTEsMTAg
KzExLDE2IEBACiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9o
MjY0LmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1
ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8aXRlcmF0b3I+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC90eXBl
cy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvdmFyaWFudC5oIgorI2luY2x1ZGUg
ImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAiY29t
bW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2
NC9wcHNfcGFyc2VyLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3BhcnNlci5o
IgpAQCAtMTg2LDkgKzE5MiwxMSBAQCBib29sIFJ0cFBhY2tldGl6ZXJIMjY0OjpHZW5lcmF0ZVBh
Y2tldHMoCiAgICAgICBjYXNlIEgyNjRQYWNrZXRpemF0aW9uTW9kZTo6Tm9uSW50ZXJsZWF2ZWQ6
CiAgICAgICAgIGludCBmcmFnbWVudF9sZW4gPSBpbnB1dF9mcmFnbWVudHNfW2ldLmxlbmd0aDsK
ICAgICAgICAgaW50IHNpbmdsZV9wYWNrZXRfY2FwYWNpdHkgPSBsaW1pdHNfLm1heF9wYXlsb2Fk
X2xlbjsKLSAgICAgICAgaWYgKGkgPT0gMCkKKyAgICAgICAgaWYgKGlucHV0X2ZyYWdtZW50c18u
c2l6ZSgpID09IDEpCisgICAgICAgICAgc2luZ2xlX3BhY2tldF9jYXBhY2l0eSAtPSBsaW1pdHNf
LnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbjsKKyAgICAgICAgZWxzZSBpZiAoaSA9PSAwKQog
ICAgICAgICAgIHNpbmdsZV9wYWNrZXRfY2FwYWNpdHkgLT0gbGltaXRzXy5maXJzdF9wYWNrZXRf
cmVkdWN0aW9uX2xlbjsKLSAgICAgICAgaWYgKGkgKyAxID09IGlucHV0X2ZyYWdtZW50c18uc2l6
ZSgpKQorICAgICAgICBlbHNlIGlmIChpICsgMSA9PSBpbnB1dF9mcmFnbWVudHNfLnNpemUoKSkK
ICAgICAgICAgICBzaW5nbGVfcGFja2V0X2NhcGFjaXR5IC09IGxpbWl0c18ubGFzdF9wYWNrZXRf
cmVkdWN0aW9uX2xlbjsKIAogICAgICAgICBpZiAoZnJhZ21lbnRfbGVuID4gc2luZ2xlX3BhY2tl
dF9jYXBhY2l0eSkgewpAQCAtMjExLDcgKzIxOSwxMCBAQCBib29sIFJ0cFBhY2tldGl6ZXJIMjY0
OjpQYWNrZXRpemVGdUEoc2l6ZV90IGZyYWdtZW50X2luZGV4KSB7CiAgIFBheWxvYWRTaXplTGlt
aXRzIGxpbWl0cyA9IGxpbWl0c187CiAgIC8vIExlYXZlIHJvb20gZm9yIHRoZSBGVS1BIGhlYWRl
ci4KICAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiAtPSBrRnVBSGVhZGVyU2l6ZTsKLSAgLy8gSWdu
b3JlIGZpcnN0L2xhc3QgcGFja2V0IHJlZHVjdGlvbnMgdW5sZXNzIGl0IGlzIGZpcnN0L2xhc3Qg
ZnJhZ21lbnQuCisgIC8vIElnbm9yZSBzaW5nbGUvZmlyc3QvbGFzdCBwYWNrZXQgcmVkdWN0aW9u
cyB1bmxlc3MgaXQgaXMgc2luZ2xlL2ZpcnN0L2xhc3QKKyAgLy8gZnJhZ21lbnQuCisgIGlmIChp
bnB1dF9mcmFnbWVudHNfLnNpemUoKSAhPSAxKQorICAgIGxpbWl0cy5zaW5nbGVfcGFja2V0X3Jl
ZHVjdGlvbl9sZW4gPSAwOwogICBpZiAoZnJhZ21lbnRfaW5kZXggIT0gMCkKICAgICBsaW1pdHMu
Zmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSAwOwogICBpZiAoZnJhZ21lbnRfaW5kZXggIT0g
aW5wdXRfZnJhZ21lbnRzXy5zaXplKCkgLSAxKQpAQCAtMjQzLDE3ICsyNTQsMzEgQEAgYm9vbCBS
dHBQYWNrZXRpemVySDI2NDo6UGFja2V0aXplRnVBKHNpemVfdCBmcmFnbWVudF9pbmRleCkgewog
c2l6ZV90IFJ0cFBhY2tldGl6ZXJIMjY0OjpQYWNrZXRpemVTdGFwQShzaXplX3QgZnJhZ21lbnRf
aW5kZXgpIHsKICAgLy8gQWdncmVnYXRlIGZyYWdtZW50cyBpbnRvIG9uZSBwYWNrZXQgKFNUQVAt
QSkuCiAgIHNpemVfdCBwYXlsb2FkX3NpemVfbGVmdCA9IGxpbWl0c18ubWF4X3BheWxvYWRfbGVu
OwotICBpZiAoZnJhZ21lbnRfaW5kZXggPT0gMCkKKyAgaWYgKGlucHV0X2ZyYWdtZW50c18uc2l6
ZSgpID09IDEpCisgICAgcGF5bG9hZF9zaXplX2xlZnQgLT0gbGltaXRzXy5zaW5nbGVfcGFja2V0
X3JlZHVjdGlvbl9sZW47CisgIGVsc2UgaWYgKGZyYWdtZW50X2luZGV4ID09IDApCiAgICAgcGF5
bG9hZF9zaXplX2xlZnQgLT0gbGltaXRzXy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbjsKICAg
aW50IGFnZ3JlZ2F0ZWRfZnJhZ21lbnRzID0gMDsKICAgc2l6ZV90IGZyYWdtZW50X2hlYWRlcnNf
bGVuZ3RoID0gMDsKICAgY29uc3QgRnJhZ21lbnQqIGZyYWdtZW50ID0gJmlucHV0X2ZyYWdtZW50
c19bZnJhZ21lbnRfaW5kZXhdOwogICBSVENfQ0hFQ0tfR0UocGF5bG9hZF9zaXplX2xlZnQsIGZy
YWdtZW50LT5sZW5ndGgpOwogICArK251bV9wYWNrZXRzX2xlZnRfOwotICB3aGlsZSAocGF5bG9h
ZF9zaXplX2xlZnQgPj0gZnJhZ21lbnQtPmxlbmd0aCArIGZyYWdtZW50X2hlYWRlcnNfbGVuZ3Ro
ICYmCi0gICAgICAgICAoZnJhZ21lbnRfaW5kZXggKyAxIDwgaW5wdXRfZnJhZ21lbnRzXy5zaXpl
KCkgfHwKLSAgICAgICAgICBwYXlsb2FkX3NpemVfbGVmdCA+PSBmcmFnbWVudC0+bGVuZ3RoICsg
ZnJhZ21lbnRfaGVhZGVyc19sZW5ndGggKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW1pdHNfLmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4pKSB7CisKKyAgYXV0byBwYXls
b2FkX3NpemVfbmVlZGVkID0gWyZdIHsKKyAgICBzaXplX3QgZnJhZ21lbnRfc2l6ZSA9IGZyYWdt
ZW50LT5sZW5ndGggKyBmcmFnbWVudF9oZWFkZXJzX2xlbmd0aDsKKyAgICBpZiAoaW5wdXRfZnJh
Z21lbnRzXy5zaXplKCkgPT0gMSkgeworICAgICAgLy8gU2luZ2xlIGZyYWdtZW50LCBzaW5nbGUg
cGFja2V0LCBwYXlsb2FkX3NpemVfbGVmdCBhbHJlYWR5IGFkanVzdGVkCisgICAgICAvLyB3aXRo
IGxpbWl0c18uc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuLgorICAgICAgcmV0dXJuIGZyYWdt
ZW50X3NpemU7CisgICAgfQorICAgIGlmIChmcmFnbWVudF9pbmRleCA9PSBpbnB1dF9mcmFnbWVu
dHNfLnNpemUoKSAtIDEpIHsKKyAgICAgIC8vIExhc3QgZnJhZ21lbnQsIHNvIFN0cmFwQSBtaWdo
dCBiZSB0aGUgbGFzdCBwYWNrZXQuCisgICAgICByZXR1cm4gZnJhZ21lbnRfc2l6ZSArIGxpbWl0
c18ubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbjsKKyAgICB9CisgICAgcmV0dXJuIGZyYWdtZW50
X3NpemU7CisgIH07CisKKyAgd2hpbGUgKHBheWxvYWRfc2l6ZV9sZWZ0ID49IHBheWxvYWRfc2l6
ZV9uZWVkZWQoKSkgewogICAgIFJUQ19DSEVDS19HVChmcmFnbWVudC0+bGVuZ3RoLCAwKTsKICAg
ICBwYWNrZXRzXy5wdXNoKFBhY2tldFVuaXQoKmZyYWdtZW50LCBhZ2dyZWdhdGVkX2ZyYWdtZW50
cyA9PSAwLCBmYWxzZSwgdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21l
bnQtPmJ1ZmZlclswXSkpOwpAQCAtMjgyLDkgKzMwNywxMSBAQCBzaXplX3QgUnRwUGFja2V0aXpl
ckgyNjQ6OlBhY2tldGl6ZVN0YXBBKHNpemVfdCBmcmFnbWVudF9pbmRleCkgewogYm9vbCBSdHBQ
YWNrZXRpemVySDI2NDo6UGFja2V0aXplU2luZ2xlTmFsdShzaXplX3QgZnJhZ21lbnRfaW5kZXgp
IHsKICAgLy8gQWRkIGEgc2luZ2xlIE5BTFUgdG8gdGhlIHF1ZXVlLCBubyBhZ2dyZWdhdGlvbi4K
ICAgc2l6ZV90IHBheWxvYWRfc2l6ZV9sZWZ0ID0gbGltaXRzXy5tYXhfcGF5bG9hZF9sZW47Ci0g
IGlmIChmcmFnbWVudF9pbmRleCA9PSAwKQorICBpZiAoaW5wdXRfZnJhZ21lbnRzXy5zaXplKCkg
PT0gMSkKKyAgICBwYXlsb2FkX3NpemVfbGVmdCAtPSBsaW1pdHNfLnNpbmdsZV9wYWNrZXRfcmVk
dWN0aW9uX2xlbjsKKyAgZWxzZSBpZiAoZnJhZ21lbnRfaW5kZXggPT0gMCkKICAgICBwYXlsb2Fk
X3NpemVfbGVmdCAtPSBsaW1pdHNfLmZpcnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuOwotICBpZiAo
ZnJhZ21lbnRfaW5kZXggKyAxID09IGlucHV0X2ZyYWdtZW50c18uc2l6ZSgpKQorICBlbHNlIGlm
IChmcmFnbWVudF9pbmRleCArIDEgPT0gaW5wdXRfZnJhZ21lbnRzXy5zaXplKCkpCiAgICAgcGF5
bG9hZF9zaXplX2xlZnQgLT0gbGltaXRzXy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuOwogICBj
b25zdCBGcmFnbWVudCogZnJhZ21lbnQgPSAmaW5wdXRfZnJhZ21lbnRzX1tmcmFnbWVudF9pbmRl
eF07CiAgIGlmIChwYXlsb2FkX3NpemVfbGVmdCA8IGZyYWdtZW50LT5sZW5ndGgpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfaDI2NC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9o
MjY0LmgKaW5kZXggNzNlNDA4NzhhMThiZDllZGQxZDUwMTZmMGJmNmI5MzAzYjBjZWFhMS4uZmJk
NGZkOTUwOTA3NWQ4ZmI4NTJlMzNkNDUyNmJiMzJlMzM4ZDM5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX2Zvcm1hdF9oMjY0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0LmgKQEAg
LTExLDEyICsxMSwxNyBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfRk9S
TUFUX0gyNjRfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX0ZPUk1BVF9I
MjY0X0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxkZXF1ZT4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cXVldWU+Ci0jaW5jbHVk
ZSA8c3RyaW5nPgogCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9mb3JtYXQuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvaDI2NC9pbmNsdWRlL2gyNjRfZ2xvYmFscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX2Zvcm1hdF9oMjY0X3VuaXR0ZXN0LmNjCmluZGV4IGVkZjkwN2FhYzg1OWNmNDdlZjEwZjA2
YTliZTBhZjg2Y2M5ZDlmZjguLmFlYWI4MTNiNTNlMjY1MWM0ZGViMDIwOTQ0NzQ2NTRhY2ZiNTRi
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfaDI2NF91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gyNjRfdW5pdHRlc3QuY2MKQEAgLTM5MCw3ICszOTAsNyBA
QCBzdGQ6OnZlY3RvcjxpbnQ+IFRlc3RGdWEoc2l6ZV90IGZyYW1lX3BheWxvYWRfc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb0ZyYWdtZW50YXRpb24oZnJhbWUpKTsKICAg
c3RkOjp2ZWN0b3I8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXRzID0gRmV0Y2hBbGxQYWNrZXRzKCZw
YWNrZXRpemVyKTsKIAotICBSVENfQ0hFQ0tfR0UocGFja2V0cy5zaXplKCksIDIpOyAgLy8gU2lu
Z2xlIHBhY2tldCBpbmRpY2F0ZXMgaXQgaXMgbm90IEZ1QS4KKyAgRVhQRUNUX0dFKHBhY2tldHMu
c2l6ZSgpLCAydSk7ICAvLyBTaW5nbGUgcGFja2V0IGluZGljYXRlcyBpdCBpcyBub3QgRnVBLgog
ICBzdGQ6OnZlY3Rvcjx1aW50MTZfdD4gZnVhX2hlYWRlcjsKICAgc3RkOjp2ZWN0b3I8aW50PiBw
YXlsb2FkX3NpemVzOwogCkBAIC00MjIsNiArNDIyLDcgQEAgVEVTVChSdHBQYWNrZXRpemVySDI2
NFRlc3QsIEZVQVdpdGhGaXJzdFBhY2tldFJlZHVjdGlvbikgewogICBSdHBQYWNrZXRpemVyOjpQ
YXlsb2FkU2l6ZUxpbWl0cyBsaW1pdHM7CiAgIGxpbWl0cy5tYXhfcGF5bG9hZF9sZW4gPSAxMjAw
OwogICBsaW1pdHMuZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA0OworICBsaW1pdHMuc2lu
Z2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNDsKICAgRVhQRUNUX1RIQVQoVGVzdEZ1YSgxMTk4
LCBsaW1pdHMpLCBFbGVtZW50c0FyZSg1OTcsIDYwMSkpOwogfQogCkBAIC00MjksMTQgKzQzMCwx
NCBAQCBURVNUKFJ0cFBhY2tldGl6ZXJIMjY0VGVzdCwgRlVBV2l0aExhc3RQYWNrZXRSZWR1Y3Rp
b24pIHsKICAgUnRwUGFja2V0aXplcjo6UGF5bG9hZFNpemVMaW1pdHMgbGltaXRzOwogICBsaW1p
dHMubWF4X3BheWxvYWRfbGVuID0gMTIwMDsKICAgbGltaXRzLmxhc3RfcGFja2V0X3JlZHVjdGlv
bl9sZW4gPSA0OworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNDsKICAg
RVhQRUNUX1RIQVQoVGVzdEZ1YSgxMTk4LCBsaW1pdHMpLCBFbGVtZW50c0FyZSg2MDEsIDU5Nykp
OwogfQogCi1URVNUKFJ0cFBhY2tldGl6ZXJIMjY0VGVzdCwgRlVBV2l0aEZpcnN0QW5kTGFzdFBh
Y2tldFJlZHVjdGlvbikgeworVEVTVChSdHBQYWNrZXRpemVySDI2NFRlc3QsIEZVQVdpdGhTaW5n
bGVQYWNrZXRSZWR1Y3Rpb24pIHsKICAgUnRwUGFja2V0aXplcjo6UGF5bG9hZFNpemVMaW1pdHMg
bGltaXRzOwogICBsaW1pdHMubWF4X3BheWxvYWRfbGVuID0gMTE5OTsKLSAgbGltaXRzLmZpcnN0
X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMTAwOwotICBsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0
aW9uX2xlbiA9IDEwMDsKKyAgbGltaXRzLnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDIw
MDsKICAgRVhQRUNUX1RIQVQoVGVzdEZ1YSgxMDAwLCBsaW1pdHMpLCBFbGVtZW50c0FyZSg1MDAs
IDUwMCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF91bml0dGVzdC5jYwppbmRleCBhNzljNDM0YjYyOWYzMjVi
MWVmNjQyNGEyNjViZTM2MzBjNzkxODNjLi5hZTFiNWIwNTRhZGZhM2U0ZTIxNTBlYWI0MTg3MWVi
NTAxOThmM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdW5pdHRlc3QuY2MKQEAgLTE5OSwyMSArMTk5LDMyIEBA
IFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5LCBHaXZlc05vblplcm9QYXlsb2Fk
TGVuZ3RoRWFjaFBhY2tldCkgewogfQogCiBURVNUKFJ0cFBhY2tldGl6ZXJTcGxpdEFib3V0RXF1
YWxseSwKLSAgICAgT25lUGFja2V0V2hlbkV4dHJhU3BhY2VJc0Vub3VnaEZvclN1bU9mRmlyc3RB
bmRMYXN0UGFja2V0UmVkdWN0aW9ucykgeworICAgICBJZ25vcmVzRmlyc3RBbmRMYXN0UGFja2V0
UmVkdWN0aW9uV2hlblBheWxvYWRGaXRzSW50b1NpbmdsZVBhY2tldCkgewogICBSdHBQYWNrZXRp
emVyOjpQYXlsb2FkU2l6ZUxpbWl0cyBsaW1pdHM7CiAgIGxpbWl0cy5tYXhfcGF5bG9hZF9sZW4g
PSAzMDsKLSAgbGltaXRzLmZpcnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNjsKLSAgbGltaXRz
Lmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA0OworICBsaW1pdHMuZmlyc3RfcGFja2V0X3Jl
ZHVjdGlvbl9sZW4gPSAyOTsKKyAgbGltaXRzLmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSAy
OTsKKyAgbGltaXRzLnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDEwOwogCiAgIEVYUEVD
VF9USEFUKFJ0cFBhY2tldGl6ZXI6OlNwbGl0QWJvdXRFcXVhbGx5KDIwLCBsaW1pdHMpLCBFbGVt
ZW50c0FyZSgyMCkpOwogfQogCiBURVNUKFJ0cFBhY2tldGl6ZXJTcGxpdEFib3V0RXF1YWxseSwK
LSAgICAgVHdvUGFja2V0c1doZW5FeHRyYVNwYWNlSXNUb29TbWFsbEZvclN1bU9mRmlyc3RBbmRM
YXN0UGFja2V0UmVkdWN0aW9ucykgeworICAgICBPbmVQYWNrZXRXaGVuRXh0cmFTcGFjZUlzRW5v
dWdoRm9yU2luZ2xlUGFja2V0UmVkdWN0aW9uKSB7CisgIFJ0cFBhY2tldGl6ZXI6OlBheWxvYWRT
aXplTGltaXRzIGxpbWl0czsKKyAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiA9IDMwOworICBsaW1p
dHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMTA7CisKKyAgRVhQRUNUX1RIQVQoUnRw
UGFja2V0aXplcjo6U3BsaXRBYm91dEVxdWFsbHkoMjAsIGxpbWl0cyksIEVsZW1lbnRzQXJlKDIw
KSk7Cit9CisKK1RFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5LAorICAgICBUd29Q
YWNrZXRzV2hlbkV4dHJhU3BhY2VJc1Rvb1NtYWxsRm9yU2luZ2xlUGFja2V0UmVkdWN0aW9uKSB7
CiAgIFJ0cFBhY2tldGl6ZXI6OlBheWxvYWRTaXplTGltaXRzIGxpbWl0czsKICAgbGltaXRzLm1h
eF9wYXlsb2FkX2xlbiA9IDI5OwotICBsaW1pdHMuZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4g
PSA2OwotICBsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDQ7CisgIGxpbWl0cy5m
aXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDM7CisgIGxpbWl0cy5sYXN0X3BhY2tldF9yZWR1
Y3Rpb25fbGVuID0gMTsKKyAgbGltaXRzLnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDEw
OwogCiAgIC8vIEZpcnN0IHBhY2tldCBuZWVkcyB0d28gbW9yZSBleHRyYSBieXRlcyBjb21wYXJl
ZCB0byBsYXN0IG9uZSwKICAgLy8gc28gc2hvdWxkIGhhdmUgdHdvIGxlc3MgcGF5bG9hZCBieXRl
cy4KQEAgLTI0Niw4ICsyNTcsNyBAQCBURVNUKFJ0cFBhY2tldGl6ZXJTcGxpdEFib3V0RXF1YWxs
eSwgUmVqZWN0c1plcm9MYXN0UGFja2V0TGVuKSB7CiBURVNUKFJ0cFBhY2tldGl6ZXJTcGxpdEFi
b3V0RXF1YWxseSwgQ2FudFB1dFNpbmdsZVBheWxvYWRCeXRlSW5Ud29QYWNrZXRzKSB7CiAgIFJ0
cFBhY2tldGl6ZXI6OlBheWxvYWRTaXplTGltaXRzIGxpbWl0czsKICAgbGltaXRzLm1heF9wYXls
b2FkX2xlbiA9IDEwOwotICBsaW1pdHMuZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA2Owot
ICBsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDQ7CisgIGxpbWl0cy5zaW5nbGVf
cGFja2V0X3JlZHVjdGlvbl9sZW4gPSAxMDsKIAogICBFWFBFQ1RfVEhBVChSdHBQYWNrZXRpemVy
OjpTcGxpdEFib3V0RXF1YWxseSgxLCBsaW1pdHMpLCBJc0VtcHR5KCkpOwogfQpAQCAtMjU1LDgg
KzI2NSw3IEBAIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5LCBDYW50UHV0U2lu
Z2xlUGF5bG9hZEJ5dGVJblR3b1BhY2tldHMpIHsKIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJv
dXRFcXVhbGx5LCBDYW5QdXRUd29QYXlsb2FkQnl0ZXNJblR3b1BhY2tldHMpIHsKICAgUnRwUGFj
a2V0aXplcjo6UGF5bG9hZFNpemVMaW1pdHMgbGltaXRzOwogICBsaW1pdHMubWF4X3BheWxvYWRf
bGVuID0gMTA7Ci0gIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDY7Ci0gIGxp
bWl0cy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNDsKKyAgbGltaXRzLnNpbmdsZV9wYWNr
ZXRfcmVkdWN0aW9uX2xlbiA9IDEwOwogCiAgIEVYUEVDVF9USEFUKFJ0cFBhY2tldGl6ZXI6OlNw
bGl0QWJvdXRFcXVhbGx5KDIsIGxpbWl0cyksIEVsZW1lbnRzQXJlKDEsIDEpKTsKIH0KQEAgLTI2
NCw4ICsyNzMsNyBAQCBURVNUKFJ0cFBhY2tldGl6ZXJTcGxpdEFib3V0RXF1YWxseSwgQ2FuUHV0
VHdvUGF5bG9hZEJ5dGVzSW5Ud29QYWNrZXRzKSB7CiBURVNUKFJ0cFBhY2tldGl6ZXJTcGxpdEFi
b3V0RXF1YWxseSwgQ2FuUHV0U2luZ2xlUGF5bG9hZEJ5dGVJbk9uZVBhY2tldCkgewogICBSdHBQ
YWNrZXRpemVyOjpQYXlsb2FkU2l6ZUxpbWl0cyBsaW1pdHM7CiAgIGxpbWl0cy5tYXhfcGF5bG9h
ZF9sZW4gPSAxMTsKLSAgbGltaXRzLmZpcnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNjsKLSAg
bGltaXRzLmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA0OworICBsaW1pdHMuc2luZ2xlX3Bh
Y2tldF9yZWR1Y3Rpb25fbGVuID0gMTA7CiAKICAgRVhQRUNUX1RIQVQoUnRwUGFja2V0aXplcjo6
U3BsaXRBYm91dEVxdWFsbHkoMSwgbGltaXRzKSwgRWxlbWVudHNBcmUoMSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2Zvcm1hdF92aWRlb19nZW5lcmljLmNjCmluZGV4IGVkZDFlM2M1MzA1MTYzNTQzNWI4YzBlMTFh
ODUxMTNjYWNiMzg0MjUuLjkyYWFkYTQ2ODhhODVmYTVjYmNjNzU4NzIwYTc4NTY5MWQ1MDk4Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdmlkZW9fZ2VuZXJpYy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuY2MKQEAgLTgsMTEgKzgsMTMgQEAKICAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KICAqLwogCi0jaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgogCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21t
b25fdHlwZXMuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdmlk
ZW9fZ2VuZXJpYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmgKaW5kZXgg
MDM1MDlmNTA0MWRmNmY3Y2Y2ZDQ4YWU3ODhiODg5NTY1ZTMyZGNiMC4uMzQ1OGQ0OTQyMzI5YTE1
YzEyMGRjZmY1OWUzMGZmN2NiMTI2ZGIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1h
dF92aWRlb19nZW5lcmljLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmlj
LmgKQEAgLTEwLDYgKzEwLDcgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQ
X0ZPUk1BVF9WSURFT19HRU5FUklDX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNF
X1JUUF9GT1JNQVRfVklERU9fR0VORVJJQ19IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKQEAgLTE4LDYgKzE5
LDEwIEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKKworY2xhc3MgUnRwUGFja2V0VG9TZW5kOworc3RydWN0IFJUUFZpZGVvSGVh
ZGVyOworCiBuYW1lc3BhY2UgUnRwRm9ybWF0VmlkZW9HZW5lcmljIHsKIHN0YXRpYyBjb25zdCB1
aW50OF90IGtLZXlGcmFtZUJpdCA9IDB4MDE7CiBzdGF0aWMgY29uc3QgdWludDhfdCBrRmlyc3RQ
YWNrZXRCaXQgPSAweDAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDguY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOC5jYwppbmRleCBmNDA0MzRlN2UwMzFmNzI5ZjBkNDMx
MjI4NTVjOTViYzkyM2RjMjAwLi5hMTI0OGNmMDQwYjE3M2M1YzA3YWQ0Yjc0ZmRkZGMxNzk0MjU4
ZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfZm9ybWF0X3ZwOC5jYwpAQCAtMTAsMTMgKzEwLDEzIEBACiAKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOC5oIgogCisjaW5jbHVkZSA8c3RkaW50
Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBtZW1jcHkKLQotI2luY2x1ZGUgPGxpbWl0cz4K
LSNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgiCisjaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL2ludGVyZmFjZS9jb21tb25fY29uc3RhbnRzLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1h
dF92cDguaAppbmRleCBlNGJjMzZlM2YzZjRlZTI1ZjYzNmM5YzFlZTc4NWNhN2I4NDdiNjM2Li40
NDQyOThmYmJmODA5ZDU1NWJiY2Q0MDhmNjJkNWM4ZTY3NGI1NmM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfZm9ybWF0X3ZwOC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA4LmgKQEAg
LTI1LDEzICsyNSwxNSBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfRk9S
TUFUX1ZQOF9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfRk9STUFUX1ZQ
OF9IXwogCi0jaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUg
PGNzdGRpbnQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW5saW5lZF92ZWN0b3IuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfZ2xvYmFscy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA5LmNj
CmluZGV4IDQ0MTlkMWEzMGMwYjVmOTgzYjU0MjQyOGFiNDk4ZTNjNmFkODBlMTcuLjljZDc1MTQz
YjhjMjk3MWFmMzJhYWI1NDBhNDhmYzY0M2Q1NGVlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9mb3JtYXRfdnA5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA5LmNjCkBAIC0xMiw5
ICsxMiw5IEBACiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KIAotI2luY2x1ZGUgPGNtYXRoPgotCisj
aW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaW50ZXJmYWNlL2NvbW1vbl9jb25zdGFu
dHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9iaXRidWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCkBAIC00NTEsNiArNDUx
LDcgQEAgUnRwUGFja2V0aXplclZwOTo6UnRwUGFja2V0aXplclZwOShydGM6OkFycmF5Vmlldzxj
b25zdCB1aW50OF90PiBwYXlsb2FkLAogICAgICAgcmVtYWluaW5nX3BheWxvYWRfKHBheWxvYWQp
IHsKICAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiAtPSBoZWFkZXJfc2l6ZV87CiAgIGxpbWl0cy5m
aXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiArPSBmaXJzdF9wYWNrZXRfZXh0cmFfaGVhZGVyX3Np
emVfOworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuICs9IGZpcnN0X3BhY2tl
dF9leHRyYV9oZWFkZXJfc2l6ZV87CiAKICAgcGF5bG9hZF9zaXplc18gPSBTcGxpdEFib3V0RXF1
YWxseShwYXlsb2FkLnNpemUoKSwgbGltaXRzKTsKICAgY3VycmVudF9wYWNrZXRfID0gcGF5bG9h
ZF9zaXplc18uYmVnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA5Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOS5oCmluZGV4IDhhMmEyYTYwNGM4MTRkMzIyNTU1ODkz
NDM0MTllZmRiOTI2ZTllYTkuLmMzYjhmMTdhNGIwOTgxYmFjMTQ4MWM5NjRlNTMzODQ3NGU0YWU2
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA5LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX2Zvcm1hdF92cDkuaApAQCAtMjEsMTIgKzIxLDE0IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQ
X1JUQ1BfU09VUkNFX1JUUF9GT1JNQVRfVlA5X0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1Bf
U09VUkNFX1JUUF9GT1JNQVRfVlA5X0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmll
dy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvaW5jbHVkZS92cDlfZ2xvYmFscy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5jYwppbmRleCAxYjkzMTMy
N2JhZDFmOGE3OTEyOTc0MjBiNjM1NzYzODM2Y2UxZDk0Li5jMjdmYjZlM2Y2Zjg1ZmI5MWRhOTQw
OWU4NjMyNmVkOGM4MzMzZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFt
ZV9kZXNjcmlwdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0
b3IuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuaCIKIAorI2luY2x1ZGUgPGNzdGRpbnQ+
CisKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBA
IC01Niw2ICs1OCwxNiBAQCB2b2lkIFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I6OlNldFNwYXRp
YWxMYXllcnNCaXRtYXNrKAogICBzcGF0aWFsX2xheWVyc18gPSBzcGF0aWFsX2xheWVyczsKIH0K
IAordm9pZCBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yOjpTZXRSZXNvbHV0aW9uKGludCB3aWR0
aCwgaW50IGhlaWdodCkgeworICBSVENfRENIRUNLKEZpcnN0UGFja2V0SW5TdWJGcmFtZSgpKTsK
KyAgUlRDX0RDSEVDS19HRSh3aWR0aCwgMCk7CisgIFJUQ19EQ0hFQ0tfTEUod2lkdGgsIDB4RkZG
Rik7CisgIFJUQ19EQ0hFQ0tfR0UoaGVpZ2h0LCAwKTsKKyAgUlRDX0RDSEVDS19MRShoZWlnaHQs
IDB4RkZGRik7CisgIHdpZHRoXyA9IHdpZHRoOworICBoZWlnaHRfID0gaGVpZ2h0OworfQorCiB1
aW50MTZfdCBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yOjpGcmFtZUlkKCkgY29uc3QgewogICBS
VENfRENIRUNLKEZpcnN0UGFja2V0SW5TdWJGcmFtZSgpKTsKICAgcmV0dXJuIGZyYW1lX2lkXzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuaAppbmRleCAxYmRlNGZhNTZkY2M3
ODlmOGY2Y2MzYjZjN2ViYTFmODYxZTQyOWUzLi4zYTZjMzRkNTlmZjI2MzBmYTE0MzZkZTU3ZjRm
Y2U2OTY4YTEwNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5oCkBA
IC01MCw2ICs1MCwxMCBAQCBjbGFzcyBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yIHsKICAgdWlu
dDhfdCBTcGF0aWFsTGF5ZXJzQml0bWFzaygpIGNvbnN0OwogICB2b2lkIFNldFNwYXRpYWxMYXll
cnNCaXRtYXNrKHVpbnQ4X3Qgc3BhdGlhbF9sYXllcnMpOwogCisgIGludCBXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIHdpZHRoXzsgfQorICBpbnQgSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaGVpZ2h0
XzsgfQorICB2b2lkIFNldFJlc29sdXRpb24oaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKwogICB1
aW50MTZfdCBGcmFtZUlkKCkgY29uc3Q7CiAgIHZvaWQgU2V0RnJhbWVJZCh1aW50MTZfdCBmcmFt
ZV9pZCk7CiAKQEAgLTcyLDYgKzc2LDkgQEAgY2xhc3MgUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRv
ciB7CiAgIHVpbnQ4X3QgdGVtcG9yYWxfbGF5ZXJfID0gMDsKICAgc2l6ZV90IG51bV9mcmFtZV9k
ZXBzXyA9IDA7CiAgIHVpbnQxNl90IGZyYW1lX2RlcHNfaWRfZGlmZnNfW2tNYXhOdW1GcmFtZURl
cGVuZGVuY2llc107CisgIGludCB3aWR0aF8gPSAwOworICBpbnQgaGVpZ2h0XyA9IDA7CisKICAg
c3RkOjp2ZWN0b3I8dWludDhfdD4gYnl0ZV9yZXByZXNlbnRhdGlvbl87CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLmNjCmluZGV4
IGM3YjUyZDViYTY4MGQxNGZkODY1NjJmYTRhODViYjEwZjA5MDI3OGMuLjdjZDEyMGQ5ZjQ1YzM5
NTcwNmU3NTE5MzUwZDk1OTFmODJjMzIyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5l
cmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5l
cmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLmNjCkBAIC0zNiw2ICszNiwxNCBAQCBjb25z
dGV4cHIgdWludDhfdCBrRmxhZ2VYdGVuZGVkT2Zmc2V0ID0gMHgwMjsKIC8vIEI6ICAgKyAgICAg
IEZJRCAgICAgICsKIC8vICAgICAgfCAgICAgICAgICAgICAgIHwKIC8vICAgICAgKy0rLSstKy0r
LSstKy0rLSsKKy8vICAgICAgfCAgICAgICAgICAgICAgIHwKKy8vICAgICAgKyAgICAgV2lkdGgg
ICAgICsKKy8vIEI9MSAgfCAgICAgICAgICAgICAgIHwKKy8vIGFuZCAgKy0rLSstKy0rLSstKy0r
LSsKKy8vIEQ9MCAgfCAgICAgICAgICAgICAgIHwKKy8vICAgICAgKyAgICAgSGVpZ2h0ICAgICsK
Ky8vICAgICAgfCAgICAgICAgICAgICAgIHwKKy8vICAgICAgKy0rLSstKy0rLSstKy0rLSsKIC8v
IEQ6ICAgfCAgICBGRElGRiAgfFh8TXwKIC8vICAgICAgKy0tLS0tLS0tLS0tLS0tLSsKIC8vIFg6
ICAgfCAgICAgIC4uLiAgICAgIHwKQEAgLTc1LDYgKzgzLDEyIEBAIGJvb2wgUnRwR2VuZXJpY0Zy
YW1lRGVzY3JpcHRvckV4dGVuc2lvbjo6UGFyc2UoCiAgIGRlc2NyaXB0b3ItPkNsZWFyRnJhbWVE
ZXBlbmRlbmNpZXMoKTsKICAgc2l6ZV90IG9mZnNldCA9IDQ7CiAgIGJvb2wgaGFzX21vcmVfZGVw
ZW5kZW5jaWVzID0gKGRhdGFbMF0gJiBrRmxhZ0RlcGVuZGVuY2llcykgIT0gMDsKKyAgaWYgKCFo
YXNfbW9yZV9kZXBlbmRlbmNpZXMgJiYgZGF0YS5zaXplKCkgPj0gb2Zmc2V0ICsgNCkgeworICAg
IHVpbnQxNl90IHdpZHRoID0gKGRhdGFbb2Zmc2V0XSA8PCA4KSB8IGRhdGFbb2Zmc2V0ICsgMV07
CisgICAgdWludDE2X3QgaGVpZ2h0ID0gKGRhdGFbb2Zmc2V0ICsgMl0gPDwgOCkgfCBkYXRhW29m
ZnNldCArIDNdOworICAgIGRlc2NyaXB0b3ItPlNldFJlc29sdXRpb24od2lkdGgsIGhlaWdodCk7
CisgICAgb2Zmc2V0ICs9IDQ7CisgIH0KICAgd2hpbGUgKGhhc19tb3JlX2RlcGVuZGVuY2llcykg
ewogICAgIGlmIChkYXRhLnNpemUoKSA9PSBvZmZzZXQpCiAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC05MSw3ICsxMDUsNyBAQCBib29sIFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3JFeHRlbnNpb246
OlBhcnNlKAogICAgIGlmICghZGVzY3JpcHRvci0+QWRkRnJhbWVEZXBlbmRlbmN5RGlmZihmZGlm
ZikpCiAgICAgICByZXR1cm4gZmFsc2U7CiAgIH0KLSAgcmV0dXJuIGRhdGEuc2l6ZSgpID09IG9m
ZnNldDsKKyAgcmV0dXJuIHRydWU7CiB9CiAKIHNpemVfdCBSdHBHZW5lcmljRnJhbWVEZXNjcmlw
dG9yRXh0ZW5zaW9uOjpWYWx1ZVNpemUoCkBAIC0xMDMsNiArMTE3LDExIEBAIHNpemVfdCBSdHBH
ZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uOjpWYWx1ZVNpemUoCiAgIGZvciAodWludDE2
X3QgZmRpZmYgOiBkZXNjcmlwdG9yLkZyYW1lRGVwZW5kZW5jaWVzRGlmZnMoKSkgewogICAgIHNp
emUgKz0gKGZkaWZmID49ICgxIDw8IDYpKSA/IDIgOiAxOwogICB9CisgIGlmIChkZXNjcmlwdG9y
LkZpcnN0UGFja2V0SW5TdWJGcmFtZSgpICYmCisgICAgICBkZXNjcmlwdG9yLkZyYW1lRGVwZW5k
ZW5jaWVzRGlmZnMoKS5lbXB0eSgpICYmIGRlc2NyaXB0b3IuV2lkdGgoKSA+IDAgJiYKKyAgICAg
IGRlc2NyaXB0b3IuSGVpZ2h0KCkgPiAwKSB7CisgICAgc2l6ZSArPSA0OworICB9CiAgIHJldHVy
biBzaXplOwogfQogCkBAIC0xMjksNiArMTQ4LDEzIEBAIGJvb2wgUnRwR2VuZXJpY0ZyYW1lRGVz
Y3JpcHRvckV4dGVuc2lvbjo6V3JpdGUoCiAgIGRhdGFbM10gPSBmcmFtZV9pZCA+PiA4OwogICBy
dGM6OkFycmF5Vmlldzxjb25zdCB1aW50MTZfdD4gZmRpZmZzID0gZGVzY3JpcHRvci5GcmFtZURl
cGVuZGVuY2llc0RpZmZzKCk7CiAgIHNpemVfdCBvZmZzZXQgPSA0OworICBpZiAoZGVzY3JpcHRv
ci5GaXJzdFBhY2tldEluU3ViRnJhbWUoKSAmJiBmZGlmZnMuZW1wdHkoKSAmJgorICAgICAgZGVz
Y3JpcHRvci5XaWR0aCgpID4gMCAmJiBkZXNjcmlwdG9yLkhlaWdodCgpID4gMCkgeworICAgIGRh
dGFbb2Zmc2V0KytdID0gKGRlc2NyaXB0b3IuV2lkdGgoKSA+PiA4KTsKKyAgICBkYXRhW29mZnNl
dCsrXSA9IChkZXNjcmlwdG9yLldpZHRoKCkgJiAweEZGKTsKKyAgICBkYXRhW29mZnNldCsrXSA9
IChkZXNjcmlwdG9yLkhlaWdodCgpID4+IDgpOworICAgIGRhdGFbb2Zmc2V0KytdID0gKGRlc2Ny
aXB0b3IuSGVpZ2h0KCkgJiAweEZGKTsKKyAgfQogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZk
aWZmcy5zaXplKCk7IGkrKykgewogICAgIGJvb2wgZXh0ZW5kZWQgPSBmZGlmZnNbaV0gPj0gKDEg
PDwgNik7CiAgICAgYm9vbCBtb3JlID0gaSA8IGZkaWZmcy5zaXplKCkgLSAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb24uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLmgKaW5kZXggMmRk
OWRkNDllYmUxMmUwMmE5YzA1ZmUyNmMzYmRiNDMxZTE4MmVlMC4uMGQ2NzNlMDYwMTk4ZDgxZGMw
ZmFmMzc4Y2ZlOGU4NTNiYjI4MGEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNf
ZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19m
cmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5oCkBAIC0yMSw2ICsyMSw3IEBAIG5hbWVzcGFjZSB3
ZWJydGMgewogCiBjbGFzcyBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uIHsKICBw
dWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUgPSBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yOwog
ICBzdGF0aWMgY29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUga0lkID0ga1J0cEV4dGVuc2lvbkdl
bmVyaWNGcmFtZURlc2NyaXB0b3I7CiAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrVXJpW10gPQog
ICAgICAgImh0dHA6Ly93d3cud2VicnRjLm9yZy9leHBlcmltZW50cy9ydHAtaGRyZXh0LyIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9u
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRl
bnNpb25fdW5pdHRlc3QuY2MKaW5kZXggYmI2OWUxNDU1ZGQ5NDBjYWY1N2JiMTUyODBiYzMxOTVm
NWNlNzQ3My4uN2Y4ZmEyZjVhNDFlNDQ3ZmNkOTM1YzU5YzRlNTUwNDZmOGU3MjRmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb25fdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRl
bnNpb25fdW5pdHRlc3QuY2MKQEAgLTI3OSw1ICsyNzksMzIgQEAgVEVTVChSdHBHZW5lcmljRnJh
bWVEZXNjcmlwdG9yRXh0ZW5zaW9uVGVzdCwgV3JpdGVUd29GcmFtZURlcGVuZGVuY2llcykgewog
ICBFWFBFQ1RfVEhBVChidWZmZXIsIEVsZW1lbnRzQXJlQXJyYXkoa1JhdykpOwogfQogCitURVNU
KFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3JFeHRlbnNpb25UZXN0LAorICAgICBQYXJzZVJlc29s
dXRpb25PbkluZGVwZW5kZW50RnJhbWUpIHsKKyAgY29uc3RleHByIGludCBrV2lkdGggPSAweDI0
Njg7CisgIGNvbnN0ZXhwciBpbnQga0hlaWdodCA9IDB4NjU0MzsKKyAgY29uc3RleHByIHVpbnQ4
X3Qga1Jhd1tdID0gezB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MjQsIDB4NjgsIDB4NjUsIDB4
NDN9OworICBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisKKyAgQVNTRVJU
X1RSVUUoUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbjo6UGFyc2Uoa1JhdywgJmRl
c2NyaXB0b3IpKTsKKyAgRVhQRUNUX0VRKGRlc2NyaXB0b3IuV2lkdGgoKSwga1dpZHRoKTsKKyAg
RVhQRUNUX0VRKGRlc2NyaXB0b3IuSGVpZ2h0KCksIGtIZWlnaHQpOworfQorCitURVNUKFJ0cEdl
bmVyaWNGcmFtZURlc2NyaXB0b3JFeHRlbnNpb25UZXN0LAorICAgICBXcml0ZVJlc29sdXRpb25P
bkluZGVwZW5kZW50RnJhbWUpIHsKKyAgY29uc3RleHByIGludCBrV2lkdGggPSAweDI0Njg7Cisg
IGNvbnN0ZXhwciBpbnQga0hlaWdodCA9IDB4NjU0MzsKKyAgY29uc3RleHByIHVpbnQ4X3Qga1Jh
d1tdID0gezB4ODAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MjQsIDB4NjgsIDB4NjUsIDB4NDN9Owor
ICBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgIGRlc2NyaXB0b3IuU2V0
Rmlyc3RQYWNrZXRJblN1YkZyYW1lKHRydWUpOworICBkZXNjcmlwdG9yLlNldFJlc29sdXRpb24o
a1dpZHRoLCBrSGVpZ2h0KTsKKworICBBU1NFUlRfRVEoUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRv
ckV4dGVuc2lvbjo6VmFsdWVTaXplKGRlc2NyaXB0b3IpLAorICAgICAgICAgICAgc2l6ZW9mKGtS
YXcpKTsKKyAgdWludDhfdCBidWZmZXJbc2l6ZW9mKGtSYXcpXTsKKyAgRVhQRUNUX1RSVUUoUnRw
R2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbjo6V3JpdGUoYnVmZmVyLCBkZXNjcmlwdG9y
KSk7CisgIEVYUEVDVF9USEFUKGJ1ZmZlciwgRWxlbWVudHNBcmVBcnJheShrUmF3KSk7Cit9CiB9
ICAvLyBuYW1lc3BhY2UKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0
ZW5zaW9uX21hcC5jYwppbmRleCAxNjg2NjVhZmM0NTMyZGViNGQ5ZTg2MzVhMmQ3ZTBhYjMyMDg0
MmFiLi44ZTBhNDg0ZDk3NzRlNjA2ZWFkODQ1Y2RhNDZlNDA4NzI2NmNjNzJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2hlYWRlcl9leHRlbnNpb25fbWFwLmNjCkBAIC00Myw2ICs0Myw3IEBAIGNvbnN0ZXhwciBFeHRl
bnNpb25JbmZvIGtFeHRlbnNpb25zW10gPSB7CiAgICAgQ3JlYXRlRXh0ZW5zaW9uSW5mbzxSZXBh
aXJlZFJ0cFN0cmVhbUlkPigpLAogICAgIENyZWF0ZUV4dGVuc2lvbkluZm88UnRwTWlkPigpLAog
ICAgIENyZWF0ZUV4dGVuc2lvbkluZm88UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lv
bj4oKSwKKyAgICBDcmVhdGVFeHRlbnNpb25JbmZvPENvbG9yU3BhY2VFeHRlbnNpb24+KCksCiB9
OwogCiAvLyBCZWNhdXNlIG9mIGtSdHBFeHRlbnNpb25Ob25lLCBOdW1iZXJPZkV4dGVuc2lvbiBp
cyAxIGJpZ2dlciB0aGFuIHRoZSBhY3R1YWwKQEAgLTU2LDE1ICs1NywxNyBAQCBzdGF0aWNfYXNz
ZXJ0KGFycmF5c2l6ZShrRXh0ZW5zaW9ucykgPT0KIGNvbnN0ZXhwciBSVFBFeHRlbnNpb25UeXBl
IFJ0cEhlYWRlckV4dGVuc2lvbk1hcDo6a0ludmFsaWRUeXBlOwogY29uc3RleHByIGludCBSdHBI
ZWFkZXJFeHRlbnNpb25NYXA6OmtJbnZhbGlkSWQ7CiAKLVJ0cEhlYWRlckV4dGVuc2lvbk1hcDo6
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKCkKLSAgICA6IG1peGVkX29uZV90d29fYnl0ZV9oZWFkZXJf
c3VwcG9ydGVkXyhmYWxzZSkgeworUnRwSGVhZGVyRXh0ZW5zaW9uTWFwOjpSdHBIZWFkZXJFeHRl
bnNpb25NYXAoKSA6IFJ0cEhlYWRlckV4dGVuc2lvbk1hcChmYWxzZSkge30KKworUnRwSGVhZGVy
RXh0ZW5zaW9uTWFwOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAoYm9vbCBleHRtYXBfYWxsb3dfbWl4
ZWQpCisgICAgOiBleHRtYXBfYWxsb3dfbWl4ZWRfKGV4dG1hcF9hbGxvd19taXhlZCkgewogICBm
b3IgKGF1dG8mIGlkIDogaWRzXykKICAgICBpZCA9IGtJbnZhbGlkSWQ7CiB9CiAKIFJ0cEhlYWRl
ckV4dGVuc2lvbk1hcDo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKAogICAgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IFJ0cEV4dGVuc2lvbj4gZXh0ZW5zaW9ucykKLSAgICA6IFJ0cEhlYWRlckV4dGVuc2lv
bk1hcCgpIHsKKyAgICA6IFJ0cEhlYWRlckV4dGVuc2lvbk1hcChmYWxzZSkgewogICBmb3IgKGNv
bnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9ucykKICAgICBSZWdpc3RlckJ5
VXJpKGV4dGVuc2lvbi5pZCwgZXh0ZW5zaW9uLnVyaSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lv
bnMuY2MKaW5kZXggZmM0YjdjZWI5MjgxYWY1YzEyMmU1YjQ5YmRhNTBkNTRjY2FmZTc1OS4uOTI2
OTRjZDVhM2E0NjZhMzI4ZDgxYzQzNzdmMDQ1NjFiMjhiMjA4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0
ZW5zaW9ucy5jYwpAQCAtMTAsMTAgKzEwLDE0IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5o
PgorI2luY2x1ZGUgPGNtYXRoPgorCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRl
L3J0cF9jdm8uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgi
CisvLyBUT0RPKGJ1Zzo5ODU1KSBNb3ZlIGtOb1NwYXRpYWxJZHggZnJvbSB2cDlfZ2xvYmFscy5o
IHRvIGNvbW1vbl9jb25zdGFudHMKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvaW50ZXJmYWNlL2NvbW1vbl9jb25zdGFudHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogLy8gQWJzb2x1dGUgc2VuZCB0aW1lIGluIFJUUCBzdHJlYW1zLgpAQCAtNDMwLDYgKzQzNCwx
NzIgQEAgYm9vbCBGcmFtZU1hcmtpbmdFeHRlbnNpb246OldyaXRlKHJ0Yzo6QXJyYXlWaWV3PHVp
bnQ4X3Q+IGRhdGEsCiAgIHJldHVybiB0cnVlOwogfQogCisvLyBDb2xvciBzcGFjZSBpbmNsdWRp
bmcgSERSIG1ldGFkYXRhIGFzIGFuIG9wdGlvbmFsIGZpZWxkLgorLy8KKy8vIFJUUCBoZWFkZXIg
ZXh0ZW5zaW9uIHRvIGNhcnJ5IEhEUiBtZXRhZGF0YS4KKy8vIEZsb2F0IHZhbHVlcyBhcmUgdXBz
Y2FsZWQgYnkgYSBzdGF0aWMgZmFjdG9yIGFuZCB0cmFuc21pdHRlZCBhcyBpbnRlZ2Vycy4KKy8v
CisvLyBEYXRhIGxheW91dCB3aXRoIEhEUiBtZXRhZGF0YQorLy8gICAgMCAgICAgICAgICAgICAg
ICAgICAxICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgICAgMworLy8gICAgMCAx
IDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYgNyA4IDkg
MCAxIDIKKy8vICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKworLy8gICB8ICAgICAgIElEICAgICAgfCAgIGxlbmd0aD0z
MCAgICB8ICAgUHJpbWFyaWVzICAgfCAgICBUcmFuc2ZlciAgICB8CisvLyAgICstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsK
Ky8vICAgfCAgICAgTWF0cml4ICAgIHwgICAgICBSYW5nZSAgICAgfCAgICAgICAgICAgICAgICAg
bHVtaW5hbmNlX21heCAgfAorLy8gICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCisvLyAgIHwgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgbHVtaW5hbmNlX21pbiAgICAgICAgICAgICAgICAgIHwKKy8vICAg
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKworLy8gICB8ICAgICAgICAgICAgICBtYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFy
eV9yLnggYW5kIC55ICAgICAgICAgICAgICB8CisvLyAgICstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKKy8vICAgfCAgICAg
ICAgICAgICAgbWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfZy54IGFuZCAueSAgICAgICAgICAg
ICAgfAorLy8gICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rCisvLyAgIHwgICAgICAgICAgICAgIG1hc3RlcmluZ19tZXRh
ZGF0YS5wcmltYXJ5X2IueCBhbmQgLnkgICAgICAgICAgICAgIHwKKy8vICAgKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKwor
Ly8gICB8ICAgICAgICAgICAgICAgIG1hc3RlcmluZ19tZXRhZGF0YS53aGl0ZS54IGFuZCAueSAg
ICAgICAgICAgICAgICB8CisvLyAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKKy8vICAgfCAgICAgbWF4X2NvbnRlbnRf
bGlnaHRfbGV2ZWwgICAgfCBtYXhfZnJhbWVfYXZlcmFnZV9saWdodF9sZXZlbCAgfAorLy8gICAr
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rCisvLworLy8gRGF0YSBsYXlvdXQgd2l0aG91dCBIRFIgbWV0YWRhdGEKKy8vICAg
IDAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAg
ICAgIDMKKy8vICAgIDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEg
MiAzIDQgNSA2IDcgOCA5IDAgMSAyCisvLyAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKKy8vICAgfCAgICAgICBJRCAg
ICAgIHwgICAgbGVuZ3RoPTQgICAgfCAgIFByaW1hcmllcyAgIHwgICAgVHJhbnNmZXIgICAgfAor
Ly8gICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rCisvLyAgIHwgICAgIE1hdHJpeCAgICB8ICAgICAgUmFuZ2UgICAgIHwK
Ky8vICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLQorCitjb25zdGV4cHIgUlRQ
RXh0ZW5zaW9uVHlwZSBDb2xvclNwYWNlRXh0ZW5zaW9uOjprSWQ7Citjb25zdGV4cHIgdWludDhf
dCBDb2xvclNwYWNlRXh0ZW5zaW9uOjprVmFsdWVTaXplQnl0ZXM7Citjb25zdGV4cHIgY29uc3Qg
Y2hhciBDb2xvclNwYWNlRXh0ZW5zaW9uOjprVXJpW107CisKK2Jvb2wgQ29sb3JTcGFjZUV4dGVu
c2lvbjo6UGFyc2UocnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZSogY29sb3Jfc3BhY2UpIHsKKyAgUlRD
X0RDSEVDSyhjb2xvcl9zcGFjZSk7CisgIGlmIChkYXRhLnNpemUoKSAhPSBrVmFsdWVTaXplQnl0
ZXMgJiYKKyAgICAgIGRhdGEuc2l6ZSgpICE9IGtWYWx1ZVNpemVCeXRlc1dpdGhvdXRIZHJNZXRh
ZGF0YSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgc2l6ZV90IG9mZnNldCA9IDA7CisgIC8vIFJl
YWQgY29sb3Igc3BhY2UgaW5mb3JtYXRpb24uCisgIGlmICghY29sb3Jfc3BhY2UtPnNldF9wcmlt
YXJpZXNfZnJvbV91aW50OChkYXRhLmRhdGEoKVtvZmZzZXQrK10pKQorICAgIHJldHVybiBmYWxz
ZTsKKyAgaWYgKCFjb2xvcl9zcGFjZS0+c2V0X3RyYW5zZmVyX2Zyb21fdWludDgoZGF0YS5kYXRh
KClbb2Zmc2V0KytdKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmICghY29sb3Jfc3BhY2UtPnNl
dF9tYXRyaXhfZnJvbV91aW50OChkYXRhLmRhdGEoKVtvZmZzZXQrK10pKQorICAgIHJldHVybiBm
YWxzZTsKKyAgaWYgKCFjb2xvcl9zcGFjZS0+c2V0X3JhbmdlX2Zyb21fdWludDgoZGF0YS5kYXRh
KClbb2Zmc2V0KytdKSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgLy8gUmVhZCBIRFIgbWV0YWRh
dGEgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgY2xlYXIgaXQuCisgIGlmIChkYXRhLnNpemUoKSA9
PSBrVmFsdWVTaXplQnl0ZXNXaXRob3V0SGRyTWV0YWRhdGEpIHsKKyAgICBjb2xvcl9zcGFjZS0+
c2V0X2hkcl9tZXRhZGF0YShudWxscHRyKTsKKyAgfSBlbHNlIHsKKyAgICBIZHJNZXRhZGF0YSBo
ZHJfbWV0YWRhdGE7CisgICAgb2Zmc2V0ICs9IFBhcnNlTHVtaW5hbmNlKGRhdGEuZGF0YSgpICsg
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGRyX21ldGFkYXRhLm1hc3Rl
cmluZ19tZXRhZGF0YS5sdW1pbmFuY2VfbWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrTHVtaW5hbmNlTWF4RGVub21pbmF0b3IpOworICAgIG9mZnNldCArPSBQYXJzZUx1bWluYW5j
ZShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhk
cl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEubHVtaW5hbmNlX21pbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0x1bWluYW5jZU1pbkRlbm9taW5hdG9yKTsKKyAgICBvZmZzZXQg
Kz0gUGFyc2VDaHJvbWF0aWNpdHkoZGF0YS5kYXRhKCkgKyBvZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1h
cnlfcik7CisgICAgb2Zmc2V0ICs9IFBhcnNlQ2hyb21hdGljaXR5KGRhdGEuZGF0YSgpICsgb2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGRyX21ldGFkYXRhLm1hc3Rl
cmluZ19tZXRhZGF0YS5wcmltYXJ5X2cpOworICAgIG9mZnNldCArPSBQYXJzZUNocm9tYXRpY2l0
eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jmhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9iKTsKKyAgICBvZmZzZXQg
Kz0gUGFyc2VDaHJvbWF0aWNpdHkoZGF0YS5kYXRhKCkgKyBvZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLndoaXRl
X3BvaW50KTsKKyAgICBoZHJfbWV0YWRhdGEubWF4X2NvbnRlbnRfbGlnaHRfbGV2ZWwgPQorICAg
ICAgICBCeXRlUmVhZGVyPHVpbnQxNl90Pjo6UmVhZEJpZ0VuZGlhbihkYXRhLmRhdGEoKSArIG9m
ZnNldCk7CisgICAgb2Zmc2V0ICs9IDI7CisgICAgaGRyX21ldGFkYXRhLm1heF9mcmFtZV9hdmVy
YWdlX2xpZ2h0X2xldmVsID0KKyAgICAgICAgQnl0ZVJlYWRlcjx1aW50MTZfdD46OlJlYWRCaWdF
bmRpYW4oZGF0YS5kYXRhKCkgKyBvZmZzZXQpOworICAgIG9mZnNldCArPSAyOworICAgIGNvbG9y
X3NwYWNlLT5zZXRfaGRyX21ldGFkYXRhKCZoZHJfbWV0YWRhdGEpOworICB9CisgIFJUQ19EQ0hF
Q0tfRVEoVmFsdWVTaXplKCpjb2xvcl9zcGFjZSksIG9mZnNldCk7CisgIHJldHVybiB0cnVlOwor
fQorCitib29sIENvbG9yU3BhY2VFeHRlbnNpb246OldyaXRlKHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4
X3Q+IGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbG9yU3Bh
Y2UmIGNvbG9yX3NwYWNlKSB7CisgIFJUQ19EQ0hFQ0soZGF0YS5zaXplKCkgPj0gVmFsdWVTaXpl
KGNvbG9yX3NwYWNlKSk7CisgIHNpemVfdCBvZmZzZXQgPSAwOworICAvLyBXcml0ZSBjb2xvciBz
cGFjZSBpbmZvcm1hdGlvbi4KKyAgZGF0YS5kYXRhKClbb2Zmc2V0KytdID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oY29sb3Jfc3BhY2UucHJpbWFyaWVzKCkpOworICBkYXRhLmRhdGEoKVtvZmZzZXQr
K10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvcl9zcGFjZS50cmFuc2ZlcigpKTsKKyAgZGF0
YS5kYXRhKClbb2Zmc2V0KytdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oY29sb3Jfc3BhY2UubWF0
cml4KCkpOworICBkYXRhLmRhdGEoKVtvZmZzZXQrK10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihj
b2xvcl9zcGFjZS5yYW5nZSgpKTsKKworICAvLyBXcml0ZSBIRFIgbWV0YWRhdGEgaWYgaXQgZXhp
c3RzLgorICBpZiAoY29sb3Jfc3BhY2UuaGRyX21ldGFkYXRhKCkpIHsKKyAgICBjb25zdCBIZHJN
ZXRhZGF0YSYgaGRyX21ldGFkYXRhID0gKmNvbG9yX3NwYWNlLmhkcl9tZXRhZGF0YSgpOworICAg
IG9mZnNldCArPSBXcml0ZUx1bWluYW5jZShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5sdW1p
bmFuY2VfbWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTHVtaW5hbmNlTWF4RGVu
b21pbmF0b3IpOworICAgIG9mZnNldCArPSBXcml0ZUx1bWluYW5jZShkYXRhLmRhdGEoKSArIG9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyX21ldGFkYXRhLm1hc3Rlcmlu
Z19tZXRhZGF0YS5sdW1pbmFuY2VfbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
THVtaW5hbmNlTWluRGVub21pbmF0b3IpOworICAgIG9mZnNldCArPSBXcml0ZUNocm9tYXRpY2l0
eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X3IpOworICAgIG9mZnNldCAr
PSBXcml0ZUNocm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5
X2cpOworICAgIG9mZnNldCArPSBXcml0ZUNocm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyX21ldGFkYXRhLm1hc3Rlcmlu
Z19tZXRhZGF0YS5wcmltYXJ5X2IpOworICAgIG9mZnNldCArPSBXcml0ZUNocm9tYXRpY2l0eShk
YXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRy
X21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS53aGl0ZV9wb2ludCk7CisKKyAgICBCeXRlV3Jp
dGVyPHVpbnQxNl90Pjo6V3JpdGVCaWdFbmRpYW4oZGF0YS5kYXRhKCkgKyBvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhkcl9tZXRhZGF0YS5tYXhfY29u
dGVudF9saWdodF9sZXZlbCk7CisgICAgb2Zmc2V0ICs9IDI7CisgICAgQnl0ZVdyaXRlcjx1aW50
MTZfdD46OldyaXRlQmlnRW5kaWFuKAorICAgICAgICBkYXRhLmRhdGEoKSArIG9mZnNldCwgaGRy
X21ldGFkYXRhLm1heF9mcmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVsKTsKKyAgICBvZmZzZXQgKz0g
MjsKKyAgfQorICBSVENfRENIRUNLX0VRKFZhbHVlU2l6ZShjb2xvcl9zcGFjZSksIG9mZnNldCk7
CisgIHJldHVybiB0cnVlOworfQorCitzaXplX3QgQ29sb3JTcGFjZUV4dGVuc2lvbjo6UGFyc2VD
aHJvbWF0aWNpdHkoCisgICAgY29uc3QgdWludDhfdCogZGF0YSwKKyAgICBIZHJNYXN0ZXJpbmdN
ZXRhZGF0YTo6Q2hyb21hdGljaXR5KiBwKSB7CisgIHVpbnQxNl90IGNocm9tYXRpY2l0eV94X3Nj
YWxlZCA9IEJ5dGVSZWFkZXI8dWludDE2X3Q+OjpSZWFkQmlnRW5kaWFuKGRhdGEpOworICB1aW50
MTZfdCBjaHJvbWF0aWNpdHlfeV9zY2FsZWQgPQorICAgICAgQnl0ZVJlYWRlcjx1aW50MTZfdD46
OlJlYWRCaWdFbmRpYW4oZGF0YSArIDIpOworICBwLT54ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNo
cm9tYXRpY2l0eV94X3NjYWxlZCkgLyBrQ2hyb21hdGljaXR5RGVub21pbmF0b3I7CisgIHAtPnkg
PSBzdGF0aWNfY2FzdDxmbG9hdD4oY2hyb21hdGljaXR5X3lfc2NhbGVkKSAvIGtDaHJvbWF0aWNp
dHlEZW5vbWluYXRvcjsKKyAgcmV0dXJuIDQ7ICAvLyBSZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHJl
YWQuCit9CisKK3NpemVfdCBDb2xvclNwYWNlRXh0ZW5zaW9uOjpQYXJzZUx1bWluYW5jZShjb25z
dCB1aW50OF90KiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0KiBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBkZW5vbWluYXRvcikgeworICB1aW50MzJfdCBsdW1pbmFuY2Vfc2NhbGVkID0gQnl0ZVJl
YWRlcjx1aW50MzJfdCwgMz46OlJlYWRCaWdFbmRpYW4oZGF0YSk7CisgICpmID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGx1bWluYW5jZV9zY2FsZWQpIC8gZGVub21pbmF0b3I7CisgIHJldHVybiAzOyAg
Ly8gUmV0dXJuIG51bWJlciBvZiBieXRlcyByZWFkLgorfQorCitzaXplX3QgQ29sb3JTcGFjZUV4
dGVuc2lvbjo6V3JpdGVDaHJvbWF0aWNpdHkoCisgICAgdWludDhfdCogZGF0YSwKKyAgICBjb25z
dCBIZHJNYXN0ZXJpbmdNZXRhZGF0YTo6Q2hyb21hdGljaXR5JiBwKSB7CisgIFJUQ19EQ0hFQ0tf
R0UocC54LCAwLjBmKTsKKyAgUlRDX0RDSEVDS19HRShwLnksIDAuMGYpOworICBCeXRlV3JpdGVy
PHVpbnQxNl90Pjo6V3JpdGVCaWdFbmRpYW4oCisgICAgICBkYXRhLCBzdGQ6OnJvdW5kKHAueCAq
IGtDaHJvbWF0aWNpdHlEZW5vbWluYXRvcikpOworICBCeXRlV3JpdGVyPHVpbnQxNl90Pjo6V3Jp
dGVCaWdFbmRpYW4oCisgICAgICBkYXRhICsgMiwgc3RkOjpyb3VuZChwLnkgKiBrQ2hyb21hdGlj
aXR5RGVub21pbmF0b3IpKTsKKyAgcmV0dXJuIDQ7ICAvLyBSZXR1cm4gbnVtYmVyIG9mIGJ5dGVz
IHdyaXR0ZW4uCit9CisKK3NpemVfdCBDb2xvclNwYWNlRXh0ZW5zaW9uOjpXcml0ZUx1bWluYW5j
ZSh1aW50OF90KiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGRlbm9taW5hdG9yKSB7CisgIFJUQ19EQ0hFQ0tfR0UoZiwgMC4wZik7CisgIEJ5dGVXcml0
ZXI8dWludDMyX3QsIDM+OjpXcml0ZUJpZ0VuZGlhbihkYXRhLCBzdGQ6OnJvdW5kKGYgKiBkZW5v
bWluYXRvcikpOworICByZXR1cm4gMzsgIC8vIFJldHVybiBudW1iZXIgb2YgYnl0ZXMgd3JpdHRl
bi4KK30KKwogYm9vbCBCYXNlUnRwU3RyaW5nRXh0ZW5zaW9uOjpQYXJzZShydGM6OkFycmF5Vmll
dzxjb25zdCB1aW50OF90PiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTdHJpbmdSdHBIZWFkZXJFeHRlbnNpb24qIHN0cikgewogICBpZiAoZGF0YS5lbXB0eSgpIHx8
IGRhdGFbMF0gPT0gMCkgIC8vIFZhbGlkIHN0cmluZyBleHRlbnNpb24gY2FuJ3QgYmUgZW1wdHku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oCmluZGV4IDg0ZTk4MzE0NzlkYjNlOTRlOTk1YjZmYjY1
ZmE0MDNhM2ZjY2UxYjAuLjQyYTYyMTZjN2I1Mjk4OTJmNWJkNThkMjdjZDk0MGM4OTUwMTJkZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oCkBAIC0xMCwxOSArMTAsMjUgQEAKICNpZm5kZWYg
TU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX0hFQURFUl9FWFRFTlNJT05TX0hfCiAjZGVmaW5l
IE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9IRUFERVJfRVhURU5TSU9OU19IXwogCisjaW5j
bHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgog
CiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMu
aCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vY29sb3Jfc3BhY2UuaCIKICNpbmNsdWRlICJhcGkvdmlk
ZW8vdmlkZW9fY29udGVudF90eXBlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1l
X21hcmtpbmcuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fcm90YXRpb24uaCIKICNpbmNs
dWRlICJhcGkvdmlkZW8vdmlkZW9fdGltaW5nLmgiCisjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgi
ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2lu
Y2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3Mg
QWJzb2x1dGVTZW5kVGltZSB7CiAgcHVibGljOgorICB1c2luZyB2YWx1ZV90eXBlID0gdWludDMy
X3Q7CiAgIHN0YXRpYyBjb25zdGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0ZW5z
aW9uQWJzb2x1dGVTZW5kVGltZTsKICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNp
emVCeXRlcyA9IDM7CiAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciBrVXJpW10gPQpAQCAt
NTcsNiArNjMsNyBAQCBjbGFzcyBBdWRpb0xldmVsIHsKIAogY2xhc3MgVHJhbnNtaXNzaW9uT2Zm
c2V0IHsKICBwdWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUgPSBpbnQzMl90OwogICBzdGF0aWMg
Y29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUga0lkID0ga1J0cEV4dGVuc2lvblRyYW5zbWlzc2lv
blRpbWVPZmZzZXQ7CiAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrVmFsdWVTaXplQnl0ZXMg
PSAzOwogICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIga1VyaVtdID0gInVybjppZXRmOnBh
cmFtczpydHAtaGRyZXh0OnRvZmZzZXQiOwpAQCAtNjgsNiArNzUsNyBAQCBjbGFzcyBUcmFuc21p
c3Npb25PZmZzZXQgewogCiBjbGFzcyBUcmFuc3BvcnRTZXF1ZW5jZU51bWJlciB7CiAgcHVibGlj
OgorICB1c2luZyB2YWx1ZV90eXBlID0gdWludDE2X3Q7CiAgIHN0YXRpYyBjb25zdGV4cHIgUlRQ
RXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0ZW5zaW9uVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI7
CiAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrVmFsdWVTaXplQnl0ZXMgPSAyOwogICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIga1VyaVtdID0KQEAgLTgwLDYgKzg4LDcgQEAgY2xhc3Mg
VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIgewogCiBjbGFzcyBWaWRlb09yaWVudGF0aW9uIHsKICBw
dWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUgPSBWaWRlb1JvdGF0aW9uOwogICBzdGF0aWMgY29u
c3RleHByIFJUUEV4dGVuc2lvblR5cGUga0lkID0ga1J0cEV4dGVuc2lvblZpZGVvUm90YXRpb247
CiAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrVmFsdWVTaXplQnl0ZXMgPSAxOwogICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIga1VyaVtdID0gInVybjozZ3BwOnZpZGVvLW9yaWVudGF0
aW9uIjsKQEAgLTk0LDYgKzEwMyw3IEBAIGNsYXNzIFZpZGVvT3JpZW50YXRpb24gewogCiBjbGFz
cyBQbGF5b3V0RGVsYXlMaW1pdHMgewogIHB1YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IFBs
YXlvdXREZWxheTsKICAgc3RhdGljIGNvbnN0ZXhwciBSVFBFeHRlbnNpb25UeXBlIGtJZCA9IGtS
dHBFeHRlbnNpb25QbGF5b3V0RGVsYXk7CiAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrVmFs
dWVTaXplQnl0ZXMgPSAzOwogICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIga1VyaVtdID0K
QEAgLTExNyw2ICsxMjcsNyBAQCBjbGFzcyBQbGF5b3V0RGVsYXlMaW1pdHMgewogCiBjbGFzcyBW
aWRlb0NvbnRlbnRUeXBlRXh0ZW5zaW9uIHsKICBwdWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUg
PSBWaWRlb0NvbnRlbnRUeXBlOwogICBzdGF0aWMgY29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUg
a0lkID0ga1J0cEV4dGVuc2lvblZpZGVvQ29udGVudFR5cGU7CiAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDhfdCBrVmFsdWVTaXplQnl0ZXMgPSAxOwogICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNo
YXIga1VyaVtdID0KQEAgLTEzMyw2ICsxNDQsNyBAQCBjbGFzcyBWaWRlb0NvbnRlbnRUeXBlRXh0
ZW5zaW9uIHsKIAogY2xhc3MgVmlkZW9UaW1pbmdFeHRlbnNpb24gewogIHB1YmxpYzoKKyAgdXNp
bmcgdmFsdWVfdHlwZSA9IFZpZGVvU2VuZFRpbWluZzsKICAgc3RhdGljIGNvbnN0ZXhwciBSVFBF
eHRlbnNpb25UeXBlIGtJZCA9IGtSdHBFeHRlbnNpb25WaWRlb1RpbWluZzsKICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRlcyA9IDEzOwogICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IGNoYXIga1VyaVtdID0KQEAgLTE1NSw2ICsxNjcsNyBAQCBjbGFzcyBWaWRlb1RpbWlu
Z0V4dGVuc2lvbiB7CiAKIGNsYXNzIEZyYW1lTWFya2luZ0V4dGVuc2lvbiB7CiAgcHVibGljOgor
ICB1c2luZyB2YWx1ZV90eXBlID0gRnJhbWVNYXJraW5nOwogICBzdGF0aWMgY29uc3RleHByIFJU
UEV4dGVuc2lvblR5cGUga0lkID0ga1J0cEV4dGVuc2lvbkZyYW1lTWFya2luZzsKICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyIGtVcmlbXSA9CiAgICAgICAiaHR0cDovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvZHJhZnQtaWV0Zi1hdnRleHQtZnJhbWVtYXJraW5nLTA3IjsKQEAgLTE2OSwxMCAr
MTgyLDQxIEBAIGNsYXNzIEZyYW1lTWFya2luZ0V4dGVuc2lvbiB7CiAgIHN0YXRpYyBib29sIElz
U2NhbGFibGUodWludDhfdCB0ZW1wb3JhbF9pZCwgdWludDhfdCBsYXllcl9pZCk7CiB9OwogCitj
bGFzcyBDb2xvclNwYWNlRXh0ZW5zaW9uIHsKKyBwdWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUg
PSBDb2xvclNwYWNlOworICBzdGF0aWMgY29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUga0lkID0g
a1J0cEV4dGVuc2lvbkNvbG9yU3BhY2U7CisgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrVmFs
dWVTaXplQnl0ZXMgPSAzMDsKKyAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVC
eXRlc1dpdGhvdXRIZHJNZXRhZGF0YSA9IDQ7CisgIC8vIFRPRE8od2VicnRjOjg2NTEpOiBDaGFu
Z2UgdG8gYSB2YWxpZCB1cmkuCisgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciBrVXJpW10g
PSAicnRwLWNvbG9yc3BhY2UtdXJpLXBsYWNlaG9sZGVyIjsKKworICBzdGF0aWMgYm9vbCBQYXJz
ZShydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBkYXRhLAorICAgICAgICAgICAgICAgICAg
ICBDb2xvclNwYWNlKiBjb2xvcl9zcGFjZSk7CisgIHN0YXRpYyBzaXplX3QgVmFsdWVTaXplKGNv
bnN0IENvbG9yU3BhY2UmIGNvbG9yX3NwYWNlKSB7CisgICAgcmV0dXJuIGNvbG9yX3NwYWNlLmhk
cl9tZXRhZGF0YSgpID8ga1ZhbHVlU2l6ZUJ5dGVzCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDoga1ZhbHVlU2l6ZUJ5dGVzV2l0aG91dEhkck1ldGFkYXRhOworICB9Cisg
IHN0YXRpYyBib29sIFdyaXRlKHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4X3Q+IGRhdGEsCisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvbG9yU3BhY2UmIGNvbG9yX3NwYWNlKTsKKworIHByaXZhdGU6
CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtDaHJvbWF0aWNpdHlEZW5vbWluYXRvciA9IDEwMDAw
OyAgLy8gMC4wMDAxIHJlc29sdXRpb24uCisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtMdW1pbmFu
Y2VNYXhEZW5vbWluYXRvciA9IDEwMDsgICAgLy8gMC4wMSByZXNvbHV0aW9uLgorICBzdGF0aWMg
Y29uc3RleHByIGludCBrTHVtaW5hbmNlTWluRGVub21pbmF0b3IgPSAxMDAwMDsgIC8vIDAuMDAw
MSByZXNvbHV0aW9uLgorICBzdGF0aWMgc2l6ZV90IFBhcnNlQ2hyb21hdGljaXR5KGNvbnN0IHVp
bnQ4X3QqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGRyTWFzdGVy
aW5nTWV0YWRhdGE6OkNocm9tYXRpY2l0eSogcCk7CisgIHN0YXRpYyBzaXplX3QgUGFyc2VMdW1p
bmFuY2UoY29uc3QgdWludDhfdCogZGF0YSwgZmxvYXQqIGYsIGludCBkZW5vbWluYXRvcik7Cisg
IHN0YXRpYyBzaXplX3QgV3JpdGVDaHJvbWF0aWNpdHkodWludDhfdCogZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIZHJNYXN0ZXJpbmdNZXRhZGF0YTo6Q2hy
b21hdGljaXR5JiBwKTsKKyAgc3RhdGljIHNpemVfdCBXcml0ZUx1bWluYW5jZSh1aW50OF90KiBk
YXRhLCBmbG9hdCBmLCBpbnQgZGVub21pbmF0b3IpOworfTsKKwogLy8gQmFzZSBleHRlbnNpb24g
Y2xhc3MgZm9yIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyB3aGljaCBhcmUgc3RyaW5ncy4KIC8vIFN1
YmNsYXNzZXMgbXVzdCBkZWZpbmVkIGtJZCBhbmQga1VyaSBzdGF0aWMgY29uc3RleHByIG1lbWJl
cnMuCiBjbGFzcyBCYXNlUnRwU3RyaW5nRXh0ZW5zaW9uIHsKICBwdWJsaWM6CisgIHVzaW5nIHZh
bHVlX3R5cGUgPSBzdGQ6OnN0cmluZzsKICAgLy8gU3RyaW5nIFJUUCBoZWFkZXIgZXh0ZW5zaW9u
cyBhcmUgbGltaXRlZCB0byAxNiBieXRlcyBiZWNhdXNlIGl0IGlzIHRoZQogICAvLyBtYXhpbXVt
IGxlbmd0aCB0aGF0IGNhbiBiZSBlbmNvZGVkIHdpdGggb25lLWJ5dGUgaGVhZGVyIGV4dGVuc2lv
bnMuCiAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrTWF4VmFsdWVTaXplQnl0ZXMgPSAxNjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfcGFyc2VyLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2hlYWRlcl9wYXJzZXIuY2MKaW5kZXggZGY2OGY3NGRkOTM3NzIyMjMxOWQ2ZmUwYTMwZmMxYWE4
MzI3Y2NiZi4uNjQ4MWE0MDNhMDQzNmEzZDNlNDZmNDVjYzc3YjJlMmNiMTRhMTJiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9wYXJzZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hl
YWRlcl9wYXJzZXIuY2MKQEAgLTksOSArOSwxMiBAQAogICovCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfcGFyc2VyLmgiCiAKKyNpbmNsdWRlIDxzdHJpbmcu
aD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVu
c2lvbl9tYXAuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0
eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAt
MjUsOCArMjgsMTAgQEAgY2xhc3MgUnRwSGVhZGVyUGFyc2VySW1wbCA6IHB1YmxpYyBSdHBIZWFk
ZXJQYXJzZXIgewogICAgICAgICAgICAgIFJUUEhlYWRlciogaGVhZGVyKSBjb25zdCBvdmVycmlk
ZTsKIAogICBib29sIFJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUg
dHlwZSwgdWludDhfdCBpZCkgb3ZlcnJpZGU7CisgIGJvb2wgUmVnaXN0ZXJSdHBIZWFkZXJFeHRl
bnNpb24oUnRwRXh0ZW5zaW9uIGV4dGVuc2lvbikgb3ZlcnJpZGU7CiAKICAgYm9vbCBEZXJlZ2lz
dGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUgdHlwZSkgb3ZlcnJpZGU7Cisg
IGJvb2wgRGVyZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihSdHBFeHRlbnNpb24gZXh0ZW5zaW9u
KSBvdmVycmlkZTsKIAogIHByaXZhdGU6CiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRpY2Fs
X3NlY3Rpb25fOwpAQCAtNjMsNiArNjgsMTAgQEAgYm9vbCBSdHBIZWFkZXJQYXJzZXJJbXBsOjpQ
YXJzZShjb25zdCB1aW50OF90KiBwYWNrZXQsCiAgIH0KICAgcmV0dXJuIHRydWU7CiB9Citib29s
IFJ0cEhlYWRlclBhcnNlckltcGw6OlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJ0cEV4dGVu
c2lvbiBleHRlbnNpb24pIHsKKyAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRpY2FsX3NlY3Rpb25f
KTsKKyAgcmV0dXJuIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcF8uUmVnaXN0ZXJCeVVyaShleHRl
bnNpb24uaWQsIGV4dGVuc2lvbi51cmkpOworfQogCiBib29sIFJ0cEhlYWRlclBhcnNlckltcGw6
OlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUgdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBp
ZCkgewpAQCAtNzAsNiArNzksMTIgQEAgYm9vbCBSdHBIZWFkZXJQYXJzZXJJbXBsOjpSZWdpc3Rl
clJ0cEhlYWRlckV4dGVuc2lvbihSVFBFeHRlbnNpb25UeXBlIHR5cGUsCiAgIHJldHVybiBydHBf
aGVhZGVyX2V4dGVuc2lvbl9tYXBfLlJlZ2lzdGVyQnlUeXBlKGlkLCB0eXBlKTsKIH0KIAorYm9v
bCBSdHBIZWFkZXJQYXJzZXJJbXBsOjpEZXJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJ0cEV4
dGVuc2lvbiBleHRlbnNpb24pIHsKKyAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRpY2FsX3NlY3Rp
b25fKTsKKyAgcmV0dXJuIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcF8uRGVyZWdpc3RlcigKKyAg
ICAgIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcF8uR2V0VHlwZShleHRlbnNpb24uaWQpKTsKK30K
KwogYm9vbCBSdHBIZWFkZXJQYXJzZXJJbXBsOjpEZXJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9u
KFJUUEV4dGVuc2lvblR5cGUgdHlwZSkgewogICBydGM6OkNyaXRTY29wZSBjcygmY3JpdGljYWxf
c2VjdGlvbl8pOwogICByZXR1cm4gcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXy5EZXJlZ2lzdGVy
KHR5cGUpID09IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX3BhY2tldC5jYwppbmRleCAwYjllZDgwYWY1NmVkODY3YTU0Yzk1ODBmY2JjYzYzNDRi
M2VjZGM4Li45ZDRkY2U0ZGVhMjdlNGRiMDQ5NTFmZmM0ZjE0ZDdmNWIwMDRmYjQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXQuY2MK
QEAgLTEwLDE2ICsxMCwxNSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX3BhY2tldC5oIgogCisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxjc3RyaW5nPgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgotI2lu
Y2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcmFu
ZG9tLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKQEAgLTIxMiw4ICsyMTEs
NyBAQCBydGM6OkFycmF5Vmlldzx1aW50OF90PiBSdHBQYWNrZXQ6OkFsbG9jYXRlUmF3RXh0ZW5z
aW9uKGludCBpZCwgc2l6ZV90IGxlbmd0aCkgewogICBjb25zdCBib29sIHR3b19ieXRlX2hlYWRl
cl9yZXF1aXJlZCA9CiAgICAgICBpZCA+IFJ0cEV4dGVuc2lvbjo6a09uZUJ5dGVIZWFkZXJFeHRl
bnNpb25NYXhJZCB8fAogICAgICAgbGVuZ3RoID4gUnRwRXh0ZW5zaW9uOjprT25lQnl0ZUhlYWRl
ckV4dGVuc2lvbk1heFZhbHVlU2l6ZSB8fCBsZW5ndGggPT0gMDsKLSAgUlRDX0NIRUNLKCF0d29f
Ynl0ZV9oZWFkZXJfcmVxdWlyZWQgfHwKLSAgICAgICAgICAgIGV4dGVuc2lvbnNfLklzTWl4ZWRP
bmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKCkpOworICBSVENfQ0hFQ0soIXR3b19ieXRlX2hlYWRl
cl9yZXF1aXJlZCB8fCBleHRlbnNpb25zXy5FeHRtYXBBbGxvd01peGVkKCkpOwogCiAgIHVpbnQx
Nl90IHByb2ZpbGVfaWQ7CiAgIGlmIChleHRlbnNpb25zX3NpemVfID4gMCkgewpAQCAtMzU5LDIy
ICszNTcsMjAgQEAgdWludDhfdCogUnRwUGFja2V0OjpTZXRQYXlsb2FkU2l6ZShzaXplX3Qgc2l6
ZV9ieXRlcykgewogICByZXR1cm4gV3JpdGVBdChwYXlsb2FkX29mZnNldF8pOwogfQogCi1ib29s
IFJ0cFBhY2tldDo6U2V0UGFkZGluZyh1aW50OF90IHNpemVfYnl0ZXMsIFJhbmRvbSogcmFuZG9t
KSB7Ci0gIFJUQ19EQ0hFQ0socmFuZG9tKTsKLSAgaWYgKHBheWxvYWRfb2Zmc2V0XyArIHBheWxv
YWRfc2l6ZV8gKyBzaXplX2J5dGVzID4gY2FwYWNpdHkoKSkgewotICAgIFJUQ19MT0coTFNfV0FS
TklORykgPDwgIkNhbm5vdCBzZXQgcGFkZGluZyBzaXplICIgPDwgc2l6ZV9ieXRlcyA8PCAiLCBv
bmx5ICIKK2Jvb2wgUnRwUGFja2V0OjpTZXRQYWRkaW5nKHNpemVfdCBwYWRkaW5nX2J5dGVzKSB7
CisgIGlmIChwYXlsb2FkX29mZnNldF8gKyBwYXlsb2FkX3NpemVfICsgcGFkZGluZ19ieXRlcyA+
IGNhcGFjaXR5KCkpIHsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJDYW5ub3Qgc2V0IHBh
ZGRpbmcgc2l6ZSAiIDw8IHBhZGRpbmdfYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICIsIG9ubHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgPDwgKGNhcGFjaXR5KCkgLSBwYXls
b2FkX29mZnNldF8gLSBwYXlsb2FkX3NpemVfKQogICAgICAgICAgICAgICAgICAgICAgICAgPDwg
IiBieXRlcyBsZWZ0IGluIGJ1ZmZlci4iOwogICAgIHJldHVybiBmYWxzZTsKICAgfQotICBwYWRk
aW5nX3NpemVfID0gc2l6ZV9ieXRlczsKKyAgcGFkZGluZ19zaXplXyA9IHJ0Yzo6ZGNoZWNrZWRf
Y2FzdDx1aW50OF90PihwYWRkaW5nX2J5dGVzKTsKICAgYnVmZmVyXy5TZXRTaXplKHBheWxvYWRf
b2Zmc2V0XyArIHBheWxvYWRfc2l6ZV8gKyBwYWRkaW5nX3NpemVfKTsKICAgaWYgKHBhZGRpbmdf
c2l6ZV8gPiAwKSB7CiAgICAgc2l6ZV90IHBhZGRpbmdfb2Zmc2V0ID0gcGF5bG9hZF9vZmZzZXRf
ICsgcGF5bG9hZF9zaXplXzsKICAgICBzaXplX3QgcGFkZGluZ19lbmQgPSBwYWRkaW5nX29mZnNl
dCArIHBhZGRpbmdfc2l6ZV87Ci0gICAgZm9yIChzaXplX3Qgb2Zmc2V0ID0gcGFkZGluZ19vZmZz
ZXQ7IG9mZnNldCA8IHBhZGRpbmdfZW5kIC0gMTsgKytvZmZzZXQpIHsKLSAgICAgIFdyaXRlQXQo
b2Zmc2V0LCByYW5kb20tPlJhbmQ8dWludDhfdD4oKSk7Ci0gICAgfQorICAgIG1lbXNldChXcml0
ZUF0KHBhZGRpbmdfb2Zmc2V0KSwgMCwgcGFkZGluZ19zaXplXyAtIDEpOwogICAgIFdyaXRlQXQo
cGFkZGluZ19lbmQgLSAxLCBwYWRkaW5nX3NpemVfKTsKICAgICBXcml0ZUF0KDAsIGRhdGEoKVsw
XSB8IDB4MjApOyAgLy8gU2V0IHBhZGRpbmcgYml0LgogICB9IGVsc2UgewpAQCAtNTU2LDcgKzU1
Miw3IEBAIHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4X3Q+IFJ0cFBhY2tldDo6QWxsb2NhdGVFeHRlbnNp
b24oRXh0ZW5zaW9uVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoKSB7CiAgIC8vIFRPRE8od2VicnRjOjc5
OTApOiBBZGQgc3VwcG9ydCBmb3IgZW1wdHkgZXh0ZW5zaW9ucyAobGVuZ3RoPT0wKS4KICAgaWYg
KGxlbmd0aCA9PSAwIHx8IGxlbmd0aCA+IFJ0cEV4dGVuc2lvbjo6a01heFZhbHVlU2l6ZSB8fAot
ICAgICAgKCFleHRlbnNpb25zXy5Jc01peGVkT25lVHdvQnl0ZUhlYWRlclN1cHBvcnRlZCgpICYm
CisgICAgICAoIWV4dGVuc2lvbnNfLkV4dG1hcEFsbG93TWl4ZWQoKSAmJgogICAgICAgIGxlbmd0
aCA+IFJ0cEV4dGVuc2lvbjo6a09uZUJ5dGVIZWFkZXJFeHRlbnNpb25NYXhWYWx1ZVNpemUpKSB7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KQEAgLTU2Niw3ICs1NjIsNyBAQCBydGM6OkFycmF5
Vmlldzx1aW50OF90PiBSdHBQYWNrZXQ6OkFsbG9jYXRlRXh0ZW5zaW9uKEV4dGVuc2lvblR5cGUg
dHlwZSwKICAgICAvLyBFeHRlbnNpb24gbm90IHJlZ2lzdGVyZWQuCiAgICAgcmV0dXJuIG51bGxw
dHI7CiAgIH0KLSAgaWYgKCFleHRlbnNpb25zXy5Jc01peGVkT25lVHdvQnl0ZUhlYWRlclN1cHBv
cnRlZCgpICYmCisgIGlmICghZXh0ZW5zaW9uc18uRXh0bWFwQWxsb3dNaXhlZCgpICYmCiAgICAg
ICBpZCA+IFJ0cEV4dGVuc2lvbjo6a09uZUJ5dGVIZWFkZXJFeHRlbnNpb25NYXhJZCkgewogICAg
IHJldHVybiBudWxscHRyOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfcGFja2V0LmgKaW5kZXggMTVjMzg2NWIzNTk0ZGM4NzZlNDE4MDZhNDc4
M2YxNzQ2MjUzZGQ3NC4uNzY2NjZiN2YxMmQ3NjM3NTE5ZjA1MjMzOTMwOTEyM2NlMjE1ZTdiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNr
ZXQuaApAQCAtMTIsMTAgKzEyLDEyIEBACiAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRl
ICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFw
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2RlcHJlY2F0aW9uLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgUmFuZG9t
OwpAQCAtOTQsOCArOTYsMTEgQEAgY2xhc3MgUnRwUGFja2V0IHsKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEV4dGVuc2lvbj4KICAgYm9vbCBIYXNFeHRlbnNpb24oKSBjb25zdDsKIAotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRXh0ZW5zaW9uLCB0eXBlbmFtZS4uLiBWYWx1ZXM+Ci0gIGJvb2wgR2V0RXh0
ZW5zaW9uKFZhbHVlcy4uLikgY29uc3Q7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBFeHRlbnNpb24s
IHR5cGVuYW1lIEZpcnN0VmFsdWUsIHR5cGVuYW1lLi4uIFZhbHVlcz4KKyAgYm9vbCBHZXRFeHRl
bnNpb24oRmlyc3RWYWx1ZSwgVmFsdWVzLi4uKSBjb25zdDsKKworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRXh0ZW5zaW9uPgorICBhYnNsOjpvcHRpb25hbDx0eXBlbmFtZSBFeHRlbnNpb246OnZhbHVl
X3R5cGU+IEdldEV4dGVuc2lvbigpIGNvbnN0OwogCiAgIC8vIFJldHVybnMgdmlldyBvZiB0aGUg
cmF3IGV4dGVuc2lvbiBvciBlbXB0eSB2aWV3IG9uIGZhaWx1cmUuCiAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBFeHRlbnNpb24+CkBAIC0xMTEsNyArMTE2LDEyIEBAIGNsYXNzIFJ0cFBhY2tldCB7CiAg
IHVpbnQ4X3QqIFNldFBheWxvYWRTaXplKHNpemVfdCBzaXplX2J5dGVzKTsKICAgLy8gU2FtZSBh
cyBTZXRQYXlsb2FkU2l6ZSBidXQgZG9lc24ndCBndWFyYW50ZWUgdG8ga2VlcCBjdXJyZW50IHBh
eWxvYWQuCiAgIHVpbnQ4X3QqIEFsbG9jYXRlUGF5bG9hZChzaXplX3Qgc2l6ZV9ieXRlcyk7Ci0g
IGJvb2wgU2V0UGFkZGluZyh1aW50OF90IHNpemVfYnl0ZXMsIFJhbmRvbSogcmFuZG9tKTsKKyAg
UlRDX0RFUFJFQ0FURUQKKyAgYm9vbCBTZXRQYWRkaW5nKHVpbnQ4X3Qgc2l6ZV9ieXRlcywgUmFu
ZG9tKiByYW5kb20pIHsKKyAgICByZXR1cm4gU2V0UGFkZGluZyhzaXplX2J5dGVzKTsKKyAgfQor
CisgIGJvb2wgU2V0UGFkZGluZyhzaXplX3QgcGFkZGluZ19zaXplKTsKIAogIHByaXZhdGU6CiAg
IHN0cnVjdCBFeHRlbnNpb25JbmZvIHsKQEAgLTE3NywxMiArMTg3LDIxIEBAIGJvb2wgUnRwUGFj
a2V0OjpIYXNFeHRlbnNpb24oKSBjb25zdCB7CiAgIHJldHVybiAhRmluZEV4dGVuc2lvbihFeHRl
bnNpb246OmtJZCkuZW1wdHkoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEV4dGVuc2lvbiwg
dHlwZW5hbWUuLi4gVmFsdWVzPgotYm9vbCBSdHBQYWNrZXQ6OkdldEV4dGVuc2lvbihWYWx1ZXMu
Li4gdmFsdWVzKSBjb25zdCB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXh0ZW5zaW9uLCB0eXBlbmFt
ZSBGaXJzdFZhbHVlLCB0eXBlbmFtZS4uLiBWYWx1ZXM+Citib29sIFJ0cFBhY2tldDo6R2V0RXh0
ZW5zaW9uKEZpcnN0VmFsdWUgZmlyc3QsIFZhbHVlcy4uLiB2YWx1ZXMpIGNvbnN0IHsKICAgYXV0
byByYXcgPSBGaW5kRXh0ZW5zaW9uKEV4dGVuc2lvbjo6a0lkKTsKICAgaWYgKHJhdy5lbXB0eSgp
KQogICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIEV4dGVuc2lvbjo6UGFyc2UocmF3LCB2YWx1
ZXMuLi4pOworICByZXR1cm4gRXh0ZW5zaW9uOjpQYXJzZShyYXcsIGZpcnN0LCB2YWx1ZXMuLi4p
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXh0ZW5zaW9uPgorYWJzbDo6b3B0aW9uYWw8dHlw
ZW5hbWUgRXh0ZW5zaW9uOjp2YWx1ZV90eXBlPiBSdHBQYWNrZXQ6OkdldEV4dGVuc2lvbigpIGNv
bnN0IHsKKyAgYWJzbDo6b3B0aW9uYWw8dHlwZW5hbWUgRXh0ZW5zaW9uOjp2YWx1ZV90eXBlPiBy
ZXN1bHQ7CisgIGF1dG8gcmF3ID0gRmluZEV4dGVuc2lvbihFeHRlbnNpb246OmtJZCk7CisgIGlm
IChyYXcuZW1wdHkoKSB8fCAhRXh0ZW5zaW9uOjpQYXJzZShyYXcsICZyZXN1bHQuZW1wbGFjZSgp
KSkKKyAgICByZXN1bHQgPSBhYnNsOjpudWxsb3B0OworICByZXR1cm4gcmVzdWx0OwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRXh0ZW5zaW9uPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3Bh
Y2tldF9oaXN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5LmNjCmluZGV4IGUx
Mzc0ZmViNTdmY2Q5OTYxMjE1MTI4ZTExMWYyMzM3ZWM2OGZhZTAuLjhjMWM4ZWJiYmZhZTkxY2Fi
NmVhMDRjNTI4YTM2ZDljOTk3NGI5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRf
aGlzdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnkuY2MKQEAgLTk3LDYg
Kzk3LDE1IEBAIHZvaWQgUnRwUGFja2V0SGlzdG9yeTo6UHV0UnRwUGFja2V0KHN0ZDo6dW5pcXVl
X3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tldCwKICAgY29uc3QgdWludDE2X3QgcnRwX3NlcV9u
byA9IHBhY2tldC0+U2VxdWVuY2VOdW1iZXIoKTsKICAgU3RvcmVkUGFja2V0JiBzdG9yZWRfcGFj
a2V0ID0gcGFja2V0X2hpc3RvcnlfW3J0cF9zZXFfbm9dOwogICBSVENfRENIRUNLKHN0b3JlZF9w
YWNrZXQucGFja2V0ID09IG51bGxwdHIpOworICBpZiAoc3RvcmVkX3BhY2tldC5wYWNrZXQpIHsK
KyAgICAvLyBJdCBpcyBhbiBlcnJvciBpZiB0aGlzIGhhcHBlbi4gQnV0IGl0IGNhbiBoYXBwZW4g
aWYgdGhlIHNlcXVlbmNlIG51bWJlcnMKKyAgICAvLyBmb3Igc29tZSByZWFzb24gcmVzdGFydCB3
aXRob3V0IHRoYXQgdGhlIGhpc3RvcnkgaGFzIGJlZW4gcmVzZXQuCisgICAgYXV0byBzaXplX2l0
ZXJhdG9yID0gcGFja2V0X3NpemVfLmZpbmQoc3RvcmVkX3BhY2tldC5wYWNrZXQtPnNpemUoKSk7
CisgICAgaWYgKHNpemVfaXRlcmF0b3IgIT0gcGFja2V0X3NpemVfLmVuZCgpICYmCisgICAgICAg
IHNpemVfaXRlcmF0b3ItPnNlY29uZCA9PSBzdG9yZWRfcGFja2V0LnBhY2tldC0+U2VxdWVuY2VO
dW1iZXIoKSkgeworICAgICAgcGFja2V0X3NpemVfLmVyYXNlKHNpemVfaXRlcmF0b3IpOworICAg
IH0KKyAgfQogICBzdG9yZWRfcGFja2V0LnBhY2tldCA9IHN0ZDo6bW92ZShwYWNrZXQpOwogCiAg
IGlmIChzdG9yZWRfcGFja2V0LnBhY2tldC0+Y2FwdHVyZV90aW1lX21zKCkgPD0gMCkgewpAQCAt
MTE2LDggKzEyNSw3IEBAIHZvaWQgUnRwUGFja2V0SGlzdG9yeTo6UHV0UnRwUGFja2V0KHN0ZDo6
dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tldCwKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PFJ0cFBhY2tldFRvU2VuZD4gUnRwUGFja2V0SGlzdG9yeTo6R2V0UGFja2V0QW5kU2V0U2VuZFRp
bWUoCi0gICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAotICAgIGJvb2wgdmVyaWZ5X3J0dCkg
eworICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlcikgewogICBydGM6OkNyaXRTY29wZSBjcygm
bG9ja18pOwogICBpZiAobW9kZV8gPT0gU3RvcmFnZU1vZGU6OmtEaXNhYmxlZCkgewogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTMwLDcgKzEzOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNr
ZXRUb1NlbmQ+IFJ0cFBhY2tldEhpc3Rvcnk6OkdldFBhY2tldEFuZFNldFNlbmRUaW1lKAogICB9
CiAKICAgU3RvcmVkUGFja2V0JiBwYWNrZXQgPSBydHBfaXQtPnNlY29uZDsKLSAgaWYgKHZlcmlm
eV9ydHQgJiYgIVZlcmlmeVJ0dChydHBfaXQtPnNlY29uZCwgbm93X21zKSkgeworICBpZiAoIVZl
cmlmeVJ0dChydHBfaXQtPnNlY29uZCwgbm93X21zKSkgewogICAgIHJldHVybiBudWxscHRyOwog
ICB9CiAKQEAgLTE1MCw4ICsxNTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5k
PiBSdHBQYWNrZXRIaXN0b3J5OjpHZXRQYWNrZXRBbmRTZXRTZW5kVGltZSgKIH0KIAogYWJzbDo6
b3B0aW9uYWw8UnRwUGFja2V0SGlzdG9yeTo6UGFja2V0U3RhdGU+IFJ0cFBhY2tldEhpc3Rvcnk6
OkdldFBhY2tldFN0YXRlKAotICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwKLSAgICBib29s
IHZlcmlmeV9ydHQpIGNvbnN0IHsKKyAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIpIGNvbnN0
IHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJmxvY2tfKTsKICAgaWYgKG1vZGVfID09IFN0b3JhZ2VN
b2RlOjprRGlzYWJsZWQpIHsKICAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKQEAgLTE2Miw3ICsx
NjksNyBAQCBhYnNsOjpvcHRpb25hbDxSdHBQYWNrZXRIaXN0b3J5OjpQYWNrZXRTdGF0ZT4gUnRw
UGFja2V0SGlzdG9yeTo6R2V0UGFja2V0U3RhdGUoCiAgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7
CiAgIH0KIAotICBpZiAodmVyaWZ5X3J0dCAmJiAhVmVyaWZ5UnR0KHJ0cF9pdC0+c2Vjb25kLCBj
bG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSkgeworICBpZiAoIVZlcmlmeVJ0dChydHBfaXQt
PnNlY29uZCwgY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSkpIHsKICAgICByZXR1cm4gYWJz
bDo6bnVsbG9wdDsKICAgfQogCkBAIC0yMDksOCArMjE2LDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxS
dHBQYWNrZXRUb1NlbmQ+IFJ0cFBhY2tldEhpc3Rvcnk6OkdldEJlc3RGaXR0aW5nUGFja2V0KAog
ICBjb25zdCB1aW50MTZfdCBzZXFfbm8gPSB1cHBlcl9ib3VuZF9kaWZmIDwgbG93ZXJfYm91bmRf
ZGlmZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzaXplX2l0ZXJfdXBwZXItPnNl
Y29uZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzaXplX2l0ZXJfbG93ZXItPnNl
Y29uZDsKLSAgUnRwUGFja2V0VG9TZW5kKiBiZXN0X3BhY2tldCA9Ci0gICAgICBwYWNrZXRfaGlz
dG9yeV8uZmluZChzZXFfbm8pLT5zZWNvbmQucGFja2V0LmdldCgpOworICBhdXRvIGhpc3Rvcnlf
aXQgPSBwYWNrZXRfaGlzdG9yeV8uZmluZChzZXFfbm8pOworICBpZiAoaGlzdG9yeV9pdCA9PSBw
YWNrZXRfaGlzdG9yeV8uZW5kKCkpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ2FuJ3Qg
ZmluZCBwYWNrZXQgaW4gaGlzdG9yeSB3aXRoIHNlcV9ubyIgPDwgc2VxX25vOworICAgIFJUQ19E
Q0hFQ0soZmFsc2UpOworICAgIHJldHVybiBudWxscHRyOworICB9CisgIGlmICghaGlzdG9yeV9p
dC0+c2Vjb25kLnBhY2tldCkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJQYWNrZXQgcG9p
bnRlciBpcyBudWxsIGluIGhpc3RvcnkgZm9yIHNlcV9ubyIKKyAgICAgICAgICAgICAgICAgICAg
ICA8PCBzZXFfbm87CisgICAgUlRDX0RDSEVDSyhmYWxzZSk7CisgICAgcmV0dXJuIG51bGxwdHI7
CisgIH0KKyAgUnRwUGFja2V0VG9TZW5kKiBiZXN0X3BhY2tldCA9IGhpc3RvcnlfaXQtPnNlY29u
ZC5wYWNrZXQuZ2V0KCk7CiAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxSdHBQYWNrZXRUb1Nl
bmQ+KCpiZXN0X3BhY2tldCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRf
aGlzdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5LmgKaW5kZXggMTY0NmJhN2M3
NmYzYWZhNWU5MjY1ZTI2MzA5MjlhNzZmZjNkYTA3Mi4uMDk1NDI0ZTNkNzEzMTIzYzljM2JiM2I3
MDk2ZGJjZGQ1ZWE1MDc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5LmgKQEAgLTc2LDE2ICs3NiwxMyBA
QCBjbGFzcyBSdHBQYWNrZXRIaXN0b3J5IHsKICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0
aW9uYWw8aW50NjRfdD4gc2VuZF90aW1lX21zKTsKIAogICAvLyBHZXRzIHN0b3JlZCBSVFAgcGFj
a2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGlucHV0IHxzZXF1ZW5jZSBudW1iZXJ8LgotICAvLyBS
ZXR1cm5zIG51bGxwdHIgaWYgcGFja2V0IGlzIG5vdCBmb3VuZC4gSWYgfHZlcmlmeV9ydHR8IGlz
IHRydWUsIGRvZXNuJ3QKLSAgLy8gcmV0dXJuIHBhY2tldCB0aGF0IHdhcyAocmUpc2VudCB0b28g
cmVjZW50bHkuCisgIC8vIFJldHVybnMgbnVsbHB0ciBpZiBwYWNrZXQgaXMgbm90IGZvdW5kIG9y
IHdhcyAocmUpc2VudCB0b28gcmVjZW50bHkuCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRU
b1NlbmQ+IEdldFBhY2tldEFuZFNldFNlbmRUaW1lKAotICAgICAgdWludDE2X3Qgc2VxdWVuY2Vf
bnVtYmVyLAotICAgICAgYm9vbCB2ZXJpZnlfcnR0KTsKKyAgICAgIHVpbnQxNl90IHNlcXVlbmNl
X251bWJlcik7CiAKICAgLy8gU2ltaWxhciB0byBHZXRQYWNrZXRBbmRTZXRTZW5kVGltZSgpLCBi
dXQgb25seSByZXR1cm5zIGEgc25hcHNob3Qgb2YgdGhlCiAgIC8vIGN1cnJlbnQgc3RhdGUgZm9y
IHBhY2tldCwgYW5kIG5ldmVyIHVwZGF0ZXMgaW50ZXJuYWwgc3RhdGUuCi0gIGFic2w6Om9wdGlv
bmFsPFBhY2tldFN0YXRlPiBHZXRQYWNrZXRTdGF0ZSh1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHZlcmlm
eV9ydHQpIGNvbnN0OworICBhYnNsOjpvcHRpb25hbDxQYWNrZXRTdGF0ZT4gR2V0UGFja2V0U3Rh
dGUodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyKSBjb25zdDsKIAogICAvLyBHZXQgdGhlIHBhY2tl
dCAoaWYgYW55KSBmcm9tIHRoZSBoaXN0b3J5LCB3aXRoIHNpemUgY2xvc2VzdCB0bwogICAvLyB8
cGFja2V0X3NpemV8LiBUaGUgZXhhY3Qgc2l6ZSBvZiB0aGUgcGFja2V0IGlzIG5vdCBndWFyYW50
ZWVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5X3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5X3VuaXR0ZXN0LmNjCmluZGV4IDg1ZTllYjI4
Y2Q3NDUzYTQ2MmQyODdhNjEwZDNkNDZlNDI2YzkwMjAuLjE0MDQzNGNiYmRlNzlhNmQxYTI1OTQy
ZmY4MDFlYWYxZjZkOTkzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfaGlzdG9y
eV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnlfdW5pdHRlc3Qu
Y2MKQEAgLTYzLDExICs2MywxMSBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIENsZWFy
c0hpc3RvcnlBZnRlclNldFN0b3JlU3RhdHVzKSB7CiAgIC8vIFN0b3JlIGEgcGFja2V0LCBidXQg
d2l0aCBzZW5kLXRpbWUuIEl0IHNob3VsZCB0aGVuIG5vdCBiZSByZW1vdmVkLgogICBoaXN0Xy5Q
dXRSdHBQYWNrZXQoQ3JlYXRlUnRwUGFja2V0KGtTdGFydFNlcU51bSksIGtBbGxvd1JldHJhbnNt
aXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bnVsbG9wdCk7Ci0gIEVYUEVDVF9U
UlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNU
X1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQ2hhbmdp
bmcgc3RvcmUgc3RhdHVzLCBldmVuIHRvIHRoZSBjdXJyZW50IG9uZSwgd2lsbCBjbGVhciB0aGUg
aGlzdG9yeS4KICAgaGlzdF8uU2V0U3RvcmVQYWNrZXRzU3RhdHVzKFN0b3JhZ2VNb2RlOjprU3Rv
cmUsIDEwKTsKLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51
bSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNl
cU51bSkpOwogfQogCiBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFN0YXJ0U2VxUmVzZXRB
ZnRlclJlc2V0KSB7CkBAIC03NSwxNiArNzUsMTYgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlU
ZXN0LCBTdGFydFNlcVJlc2V0QWZ0ZXJSZXNldCkgewogICAvLyBTdG9yZSBhIHBhY2tldCwgYnV0
IHdpdGggc2VuZC10aW1lLiBJdCBzaG91bGQgdGhlbiBub3QgYmUgcmVtb3ZlZC4KICAgaGlzdF8u
UHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChrU3RhcnRTZXFOdW0pLCBrQWxsb3dSZXRyYW5z
bWlzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om51bGxvcHQpOwotICBFWFBFQ1Rf
VFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVD
VF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOwogCiAgIC8vIENoYW5n
aW5nIHN0b3JlIHN0YXR1cywgdG8gY2xlYXIgdGhlIGhpc3RvcnkuCiAgIGhpc3RfLlNldFN0b3Jl
UGFja2V0c1N0YXR1cyhTdG9yYWdlTW9kZTo6a1N0b3JlQW5kQ3VsbCwgMTApOwotICBFWFBFQ1Rf
RkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBF
Q1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQWRk
IGEgbmV3IHBhY2tldC4KICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChrU3Rh
cnRTZXFOdW0gKyAxKSwga0FsbG93UmV0cmFuc21pc3Npb24sCiAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjpudWxsb3B0KTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0
YXJ0U2VxTnVtICsgMSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3Rh
dGUoa1N0YXJ0U2VxTnVtICsgMSkpOwogCiAgIC8vIEFkdmFuY2UgdGltZSBwYXN0IHdoZXJlIHBh
Y2tldCBleHBpcmVzLgogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygKQEAg
LTk0LDkgKzk0LDkgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBTdGFydFNlcVJlc2V0
QWZ0ZXJSZXNldCkgewogICAvLyBBZGQgb25lIG1vcmUgcGFja2V0IGFuZCB2ZXJpZnkgbm8gc3Rh
dGUgbGVmdCBmcm9tIHBhY2tldCBiZWZvcmUgcmVzZXQuCiAgIGhpc3RfLlB1dFJ0cFBhY2tldChD
cmVhdGVSdHBQYWNrZXQoVG8xNnUoa1N0YXJ0U2VxTnVtICsgMikpLAogICAgICAgICAgICAgICAg
ICAgICAga0FsbG93UmV0cmFuc21pc3Npb24sIGFic2w6Om51bGxvcHQpOwotICBFWFBFQ1RfRkFM
U0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOwotICBFWFBFQ1Rf
VFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAxLCBmYWxzZSkpOwotICBF
WFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShUbzE2dShrU3RhcnRTZXFOdW0gKyAyKSwg
ZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51
bSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAx
KSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKFRvMTZ1KGtTdGFydFNlcU51
bSArIDIpKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgTm9TdG9yZVN0YXR1
cykgewpAQCAtMTA0LDIxICsxMDQsMjEgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBO
b1N0b3JlU3RhdHVzKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tl
dCA9IENyZWF0ZVJ0cFBhY2tldChrU3RhcnRTZXFOdW0pOwogICBoaXN0Xy5QdXRSdHBQYWNrZXQo
c3RkOjptb3ZlKHBhY2tldCksIGtBbGxvd1JldHJhbnNtaXNzaW9uLCBhYnNsOjpudWxsb3B0KTsK
ICAgLy8gUGFja2V0IHNob3VsZCBub3QgYmUgc3RvcmVkLgotICBFWFBFQ1RfRkFMU0UoaGlzdF8u
R2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlz
dF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRI
aXN0b3J5VGVzdCwgR2V0UnRwUGFja2V0X05vdFN0b3JlZCkgewogICBoaXN0Xy5TZXRTdG9yZVBh
Y2tldHNTdGF0dXMoU3RvcmFnZU1vZGU6OmtTdG9yZSwgMTApOwotICBFWFBFQ1RfRkFMU0UoaGlz
dF8uR2V0UGFja2V0U3RhdGUoMCwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBh
Y2tldFN0YXRlKDApKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBQdXRSdHBQ
YWNrZXQpIHsKICAgaGlzdF8uU2V0U3RvcmVQYWNrZXRzU3RhdHVzKFN0b3JhZ2VNb2RlOjprU3Rv
cmUsIDEwKTsKICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0ID0gQ3Jl
YXRlUnRwUGFja2V0KGtTdGFydFNlcU51bSk7CiAKLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBh
Y2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdl
dFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOwogICBoaXN0Xy5QdXRSdHBQYWNrZXQoc3RkOjpt
b3ZlKHBhY2tldCksIGtBbGxvd1JldHJhbnNtaXNzaW9uLCBhYnNsOjpudWxsb3B0KTsKLSAgRVhQ
RUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBF
WFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIH0KIAogVEVT
VF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBHZXRSdHBQYWNrZXQpIHsKQEAgLTEzMCw3ICsxMzAs
NyBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIEdldFJ0cFBhY2tldCkgewogICBoaXN0
Xy5QdXRSdHBQYWNrZXQoc3RkOjptb3ZlKHBhY2tldCksIGtBbGxvd1JldHJhbnNtaXNzaW9uLCBh
YnNsOjpudWxsb3B0KTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNr
ZXRfb3V0ID0KLSAgICAgIGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51
bSwgZmFsc2UpOworICAgICAgaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2Vx
TnVtKTsKICAgRVhQRUNUX1RSVUUocGFja2V0X291dCk7CiAgIEVYUEVDVF9FUShidWZmZXIsIHBh
Y2tldF9vdXQtPkJ1ZmZlcigpKTsKICAgRVhQRUNUX0VRKGNhcHR1cmVfdGltZV9tcywgcGFja2V0
X291dC0+Y2FwdHVyZV90aW1lX21zKCkpOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIFRFU1RfRihSdHBQ
YWNrZXRIaXN0b3J5VGVzdCwgTm9DYXB0dXJlVGltZSkgewogICBoaXN0Xy5QdXRSdHBQYWNrZXQo
c3RkOjptb3ZlKHBhY2tldCksIGtBbGxvd1JldHJhbnNtaXNzaW9uLCBhYnNsOjpudWxsb3B0KTsK
IAogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXRfb3V0ID0KLSAgICAg
IGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSwgZmFsc2UpOworICAg
ICAgaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKTsKICAgRVhQRUNU
X1RSVUUocGFja2V0X291dCk7CiAgIEVYUEVDVF9FUShidWZmZXIsIHBhY2tldF9vdXQtPkJ1ZmZl
cigpKTsKICAgRVhQRUNUX0VRKGNhcHR1cmVfdGltZV9tcywgcGFja2V0X291dC0+Y2FwdHVyZV90
aW1lX21zKCkpOwpAQCAtMTYxLDE5ICsxNjEsMjEgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlU
ZXN0LCBEb250UmV0cmFuc21pdCkgewogCiAgIC8vIEdldCB0aGUgcGFja2V0IGFuZCB2ZXJpZnkg
ZGF0YS4KICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0X291dDsKLSAg
cGFja2V0X291dCA9IGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSwg
ZmFsc2UpOworICBwYWNrZXRfb3V0ID0gaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0
YXJ0U2VxTnVtKTsKICAgQVNTRVJUX1RSVUUocGFja2V0X291dCk7CiAgIEVYUEVDVF9FUShidWZm
ZXIuc2l6ZSgpLCBwYWNrZXRfb3V0LT5zaXplKCkpOwogICBFWFBFQ1RfRVEoY2FwdHVyZV90aW1l
X21zLCBwYWNrZXRfb3V0LT5jYXB0dXJlX3RpbWVfbXMoKSk7CiAKICAgLy8gTm9uLXJldHJhbnNt
aXR0YWJsZSBwYWNrZXRzIGFyZSBpbW1lZGlhdGVseSByZW1vdmVkLCBzbyBnZXR0aW5nIGluIGFn
YWluCiAgIC8vIHNob3VsZCBmYWlsLgotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0QW5k
U2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8u
R2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKSk7CiB9CiAKIFRFU1RfRihSdHBQ
YWNrZXRIaXN0b3J5VGVzdCwgUGFja2V0U3RhdGVJc0NvcnJlY3QpIHsKICAgY29uc3QgdWludDMy
X3Qga1NzcmMgPSA5MjM4NDc2MjsKKyAgY29uc3QgaW50NjRfdCBrUnR0TXMgPSAxMDA7CiAgIGhp
c3RfLlNldFN0b3JlUGFja2V0c1N0YXR1cyhTdG9yYWdlTW9kZTo6a1N0b3JlQW5kQ3VsbCwgMTAp
OworICBoaXN0Xy5TZXRSdHQoa1J0dE1zKTsKICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRv
U2VuZD4gcGFja2V0ID0gQ3JlYXRlUnRwUGFja2V0KGtTdGFydFNlcU51bSk7CiAgIHBhY2tldC0+
U2V0U3NyYyhrU3NyYyk7CiAgIHBhY2tldC0+U2V0UGF5bG9hZFNpemUoMTIzNCk7CkBAIC0xODMs
NyArMTg1LDcgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBQYWNrZXRTdGF0ZUlzQ29y
cmVjdCkgewogICAgICAgICAgICAgICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNv
bmRzKCkpOwogCiAgIGFic2w6Om9wdGlvbmFsPFJ0cFBhY2tldEhpc3Rvcnk6OlBhY2tldFN0YXRl
PiBzdGF0ZSA9Ci0gICAgICBoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNl
KTsKKyAgICAgIGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSk7CiAgIEFTU0VSVF9U
UlVFKHN0YXRlKTsKICAgRVhQRUNUX0VRKHN0YXRlLT5ydHBfc2VxdWVuY2VfbnVtYmVyLCBrU3Rh
cnRTZXFOdW0pOwogICBFWFBFQ1RfRVEoc3RhdGUtPnNlbmRfdGltZV9tcywgZmFrZV9jbG9ja18u
VGltZUluTWlsbGlzZWNvbmRzKCkpOwpAQCAtMTkzLDkgKzE5NSwxMCBAQCBURVNUX0YoUnRwUGFj
a2V0SGlzdG9yeVRlc3QsIFBhY2tldFN0YXRlSXNDb3JyZWN0KSB7CiAgIEVYUEVDVF9FUShzdGF0
ZS0+dGltZXNfcmV0cmFuc21pdHRlZCwgMHUpOwogCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1l
TWlsbGlzZWNvbmRzKDEpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5k
VGltZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tl
dEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSkpOworICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGlt
ZU1pbGxpc2Vjb25kcyhrUnR0TXMgKyAxKTsKIAotICBzdGF0ZSA9IGhpc3RfLkdldFBhY2tldFN0
YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpOworICBzdGF0ZSA9IGhpc3RfLkdldFBhY2tldFN0YXRl
KGtTdGFydFNlcU51bSk7CiAgIEFTU0VSVF9UUlVFKHN0YXRlKTsKICAgRVhQRUNUX0VRKHN0YXRl
LT50aW1lc19yZXRyYW5zbWl0dGVkLCAxdSk7CiB9CkBAIC0yMTEsNyArMjE0LDcgQEAgVEVTVF9G
KFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBNaW5SZXNlbmRUaW1lV2l0aFBhY2VyKSB7CiAgIGhpc3Rf
LlB1dFJ0cFBhY2tldChzdGQ6Om1vdmUocGFja2V0KSwga0FsbG93UmV0cmFuc21pc3Npb24sIGFi
c2w6Om51bGxvcHQpOwogCiAgIC8vIEZpcnN0IHRyYW5zbWlzc2lvbjogVGltZVRvU2VuZFBhY2tl
dCgpIGNhbGwgZnJvbSBwYWNlci4KLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0QW5kU2V0
U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQ
YWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBGaXJzdCByZXRyYW5z
bWlzc2lvbiAtIGFsbG93IGVhcmx5IHJldHJhbnNtaXNzaW9uLgogICBmYWtlX2Nsb2NrXy5BZHZh
bmNlVGltZU1pbGxpc2Vjb25kcygxKTsKQEAgLTIyMSwyNiArMjI0LDI0IEBAIFRFU1RfRihSdHBQ
YWNrZXRIaXN0b3J5VGVzdCwgTWluUmVzZW5kVGltZVdpdGhQYWNlcikgewogICAvLyAgICBwYWNr
ZXQgaXMgdGhlcmUgYW5kIHZlcmlmeSBSVFQgY29uc3RyYWludHMuIFRoZW4gd2UgdXNlIHRoZSBz
c3JjCiAgIC8vICAgIGFuZCBzZXF1ZW5jZSBudW1iZXIgdG8gZW5xdWV1ZSB0aGUgcmV0cmFuc21p
c3Npb24gaW4gdGhlIHBhY2VyCiAgIC8vIDIpIFdoZW4gdGhlIHBhY2VyIGRldGVybWluZXMgdGhh
dCBpdCBpcyB0aW1lIHRvIHNlbmQgdGhlIHBhY2tldCwgaXQgY2FsbHMKLSAgLy8gICAgR2V0UGFj
a2V0QW5kU2V0U2VuZFRpbWUoKS4gVGhpcyB0aW1lIHdlIGRvIG5vdCBuZWVkIHRvIHZlcmlmeSBS
VFQgYXMKLSAgLy8gICAgaGFzIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkb25lLgorICAvLyAgICBH
ZXRQYWNrZXRBbmRTZXRTZW5kVGltZSgpLgogICBhYnNsOjpvcHRpb25hbDxSdHBQYWNrZXRIaXN0
b3J5OjpQYWNrZXRTdGF0ZT4gcGFja2V0X3N0YXRlID0KLSAgICAgIGhpc3RfLkdldFBhY2tldFN0
YXRlKGtTdGFydFNlcU51bSwgLyp2ZXJpZnlfcnR0PSovdHJ1ZSk7CisgICAgICBoaXN0Xy5HZXRQ
YWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pOwogICBFWFBFQ1RfVFJVRShwYWNrZXRfc3RhdGUpOwog
ICBFWFBFQ1RfRVEobGVuLCBwYWNrZXRfc3RhdGUtPnBheWxvYWRfc2l6ZSk7CiAgIEVYUEVDVF9F
UShjYXB0dXJlX3RpbWVfbXMsIHBhY2tldF9zdGF0ZS0+Y2FwdHVyZV90aW1lX21zKTsKIAogICAv
LyBSZXRyYW5zbWlzc2lvbiB3YXMgYWxsb3dlZCwgbmV4dCBzZW5kIGl0IGZyb20gcGFjZXIuCi0g
IEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp2ZXJpZnlfcnR0
PSovZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUo
a1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gU2Vjb25kIHJldHJhbnNtaXNzaW9uIC0gYWR2YW5jZSB0
aW1lIHRvIGp1c3QgYmVmb3JlIHJldHJhbnNtaXNzaW9uIE9LLgogICBmYWtlX2Nsb2NrXy5BZHZh
bmNlVGltZU1pbGxpc2Vjb25kcyhrTWluUmV0cmFuc21pdEludGVydmFsTXMgLSAxKTsKLSAgRVhQ
RUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgLyp2ZXJpZnlfcnR0
PSovdHJ1ZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2Vx
TnVtKSk7CiAKICAgLy8gQWR2YW5jZSB0aW1lIHRvIGp1c3QgYWZ0ZXIgcmV0cmFuc21pc3Npb24g
T0suCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEpOwotICBFWFBFQ1Rf
VFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIC8qdmVyaWZ5X3J0dD0qL3Ry
dWUpKTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0
U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3Rh
cnRTZXFOdW0pKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUo
a1N0YXJ0U2VxTnVtKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgTWluUmVz
ZW5kVGltZVdpdGhvdXRQYWNlcikgewpAQCAtMjU2LDE4ICsyNTcsMTggQEAgVEVTVF9GKFJ0cFBh
Y2tldEhpc3RvcnlUZXN0LCBNaW5SZXNlbmRUaW1lV2l0aG91dFBhY2VyKSB7CiAKICAgLy8gRmly
c3QgcmV0cmFuc21pc3Npb24gLSBhbGxvdyBlYXJseSByZXRyYW5zbWlzc2lvbi4KICAgZmFrZV9j
bG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMSk7Ci0gIHBhY2tldCA9IGhpc3RfLkdldFBh
Y2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSwgdHJ1ZSk7CisgIHBhY2tldCA9IGhpc3Rf
LkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSk7CiAgIEVYUEVDVF9UUlVFKHBh
Y2tldCk7CiAgIEVYUEVDVF9FUShsZW4sIHBhY2tldC0+c2l6ZSgpKTsKICAgRVhQRUNUX0VRKGNh
cHR1cmVfdGltZV9tcywgcGFja2V0LT5jYXB0dXJlX3RpbWVfbXMoKSk7CiAKICAgLy8gU2Vjb25k
IHJldHJhbnNtaXNzaW9uIC0gYWR2YW5jZSB0aW1lIHRvIGp1c3QgYmVmb3JlIHJldHJhbnNtaXNz
aW9uIE9LLgogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrTWluUmV0cmFu
c21pdEludGVydmFsTXMgLSAxKTsKLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldEFuZFNl
dFNlbmRUaW1lKGtTdGFydFNlcU51bSwgdHJ1ZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0
UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQWR2YW5jZSB0aW1l
IHRvIGp1c3QgYWZ0ZXIgcmV0cmFuc21pc3Npb24gT0suCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VU
aW1lTWlsbGlzZWNvbmRzKDEpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRT
ZW5kVGltZShrU3RhcnRTZXFOdW0sIHRydWUpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFj
a2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRI
aXN0b3J5VGVzdCwgUmVtb3Zlc09sZGVzdFNlbnRQYWNrZXRXaGVuQXRNYXhTaXplKSB7CkBAIC0y
ODksNyArMjkwLDcgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBSZW1vdmVzT2xkZXN0
U2VudFBhY2tldFdoZW5BdE1heFNpemUpIHsKICAgfQogCiAgIC8vIEZpcnN0IHBhY2tldCBzaG91
bGQgc3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtT
dGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUo
a1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gSGlzdG9yeSBpcyBmdWxsLCBvbGRlc3Qgb25lIHNob3Vs
ZCBiZSBvdmVyd3JpdHRlbi4KICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFj
a2V0ID0KQEAgLTI5OCw4ICsyOTksOCBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFJl
bW92ZXNPbGRlc3RTZW50UGFja2V0V2hlbkF0TWF4U2l6ZSkgewogICAgICAgICAgICAgICAgICAg
ICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwogCiAgIC8vIE9sZGVzdCBwYWNr
ZXQgc2hvdWxkIGJlIGdvbmUsIGJ1dCBwYWNrZXQgYWZ0ZXIgdGhhbiBvbmUgc3RpbGwgcHJlc2Vu
dC4KLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFs
c2UpKTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtICsg
MSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNl
cU51bSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0g
KyAxKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgUmVtb3Zlc09sZGVzdFBh
Y2tldFdoZW5BdE1heENhcGFjaXR5KSB7CkBAIC0zMTcsNyArMzE4LDcgQEAgVEVTVF9GKFJ0cFBh
Y2tldEhpc3RvcnlUZXN0LCBSZW1vdmVzT2xkZXN0UGFja2V0V2hlbkF0TWF4Q2FwYWNpdHkpIHsK
ICAgfQogCiAgIC8vIEZpcnN0IHBhY2tldCBzaG91bGQgc3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVD
VF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQ
RUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gSGlz
dG9yeSBpcyBmdWxsLCBvbGRlc3Qgb25lIHNob3VsZCBiZSBvdmVyd3JpdHRlbi4KICAgc3RkOjp1
bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0ID0KQEAgLTMyNiw4ICszMjcsOCBAQCBU
RVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFJlbW92ZXNPbGRlc3RQYWNrZXRXaGVuQXRNYXhD
YXBhY2l0eSkgewogICAgICAgICAgICAgICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlz
ZWNvbmRzKCkpOwogCiAgIC8vIE9sZGVzdCBwYWNrZXQgc2hvdWxkIGJlIGdvbmUsIGJ1dCBwYWNr
ZXQgYWZ0ZXIgdGhhbiBvbmUgc3RpbGwgcHJlc2VudC4KLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdl
dFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8u
R2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtICsgMSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNF
KGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOworICBFWFBFQ1RfVFJVRShoaXN0
Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAxKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNr
ZXRIaXN0b3J5VGVzdCwgRG9udFJlbW92ZVVuc2VudFBhY2tldHMpIHsKQEAgLTM0MywyNSArMzQ0
LDI1IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgRG9udFJlbW92ZVVuc2VudFBhY2tl
dHMpIHsKICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoUnRwUGFja2V0SGlz
dG9yeTo6a01pblBhY2tldER1cmF0aW9uTXMpOwogCiAgIC8vIEZpcnN0IHBhY2tldCBzaG91bGQg
c3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFy
dFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0
YXJ0U2VxTnVtKSk7CiAKICAgLy8gSGlzdG9yeSBpcyBmdWxsLCBidXQgb2xkIHBhY2tldHMgbm90
IHNlbnQsIHNvIGFsbG93IGV4cGFuc2lvbi4KICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0
cFBhY2tldChUbzE2dShrU3RhcnRTZXFOdW0gKyBrTWF4TnVtUGFja2V0cykpLAogICAgICAgICAg
ICAgICAgICAgICAga0FsbG93UmV0cmFuc21pc3Npb24sIGZha2VfY2xvY2tfLlRpbWVJbk1pbGxp
c2Vjb25kcygpKTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2Vx
TnVtLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRT
ZXFOdW0pKTsKIAogICAvLyBTZXQgYWxsIHBhY2tldCBhcyBzZW50IGFuZCBhZHZhbmNlIHRpbWUg
cGFzdCBtaW4gcGFja2V0IGR1cmF0aW9uIHRpbWUsCiAgIC8vIG90aGVyd2lzZSBwYWNrZXRzIHRp
bGwgc3RpbGwgYmUgcHJldmVudGVkIGZyb20gYmVpbmcgcmVtb3ZlZC4KICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPD0ga01heE51bVBhY2tldHM7ICsraSkgewotICAgIEVYUEVDVF9UUlVFKGhpc3Rf
LkdldFBhY2tldEFuZFNldFNlbmRUaW1lKFRvMTZ1KGtTdGFydFNlcU51bSArIGkpLCBmYWxzZSkp
OworICAgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKFRvMTZ1KGtT
dGFydFNlcU51bSArIGkpKSk7CiAgIH0KICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNl
Y29uZHMoUnRwUGFja2V0SGlzdG9yeTo6a01pblBhY2tldER1cmF0aW9uTXMpOwogICAvLyBBZGQg
YSBuZXcgcGFja2V0LCB0aGlzIG1lYW5zIHRoZSB0d28gb2xkZXN0IG9uZXMgd2lsbCBiZSBjdWxs
ZWQuCiAgIGhpc3RfLlB1dFJ0cFBhY2tldChDcmVhdGVSdHBQYWNrZXQoVG8xNnUoa1N0YXJ0U2Vx
TnVtICsga01heE51bVBhY2tldHMgKyAxKSksCiAgICAgICAgICAgICAgICAgICAgICBrQWxsb3dS
ZXRyYW5zbWlzc2lvbiwgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwotICBFWFBF
Q1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOwotICBF
WFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtICsgMSwgZmFsc2Up
KTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoVG8xNnUoa1N0YXJ0U2VxTnVt
ICsgMiksIGZhbHNlKSk7CisgIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3Rh
cnRTZXFOdW0pKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNl
cU51bSArIDEpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoVG8xNnUoa1N0
YXJ0U2VxTnVtICsgMikpKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBEb250
UmVtb3ZlVG9vUmVjZW50bHlUcmFuc21pdHRlZFBhY2tldHMpIHsKQEAgLTM3OCwxNSArMzc5LDE1
IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgRG9udFJlbW92ZVRvb1JlY2VudGx5VHJh
bnNtaXR0ZWRQYWNrZXRzKSB7CiAgIGhpc3RfLlB1dFJ0cFBhY2tldChDcmVhdGVSdHBQYWNrZXQo
a1N0YXJ0U2VxTnVtICsgMSksIGtBbGxvd1JldHJhbnNtaXNzaW9uLAogICAgICAgICAgICAgICAg
ICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwogICAvLyBGaXJzdCBwYWNr
ZXQgc2hvdWxkIHN0aWxsIGJlIHRoZXJlLgotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRT
dGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tl
dFN0YXRlKGtTdGFydFNlcU51bSkpOwogCiAgIC8vIEFkdmFuY2UgdGltZSB0byB3aGVyZSBwYWNr
ZXQgd2lsbCBiZSBlbGlnaWJsZSBmb3IgcmVtb3ZhbCBhbmQgdHJ5IGFnYWluLgogICBmYWtlX2Ns
b2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxKTsKICAgaGlzdF8uUHV0UnRwUGFja2V0KENy
ZWF0ZVJ0cFBhY2tldChUbzE2dShrU3RhcnRTZXFOdW0gKyAyKSksCiAgICAgICAgICAgICAgICAg
ICAgICBrQWxsb3dSZXRyYW5zbWlzc2lvbiwgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRz
KCkpOwogICAvLyBGaXJzdCBwYWNrZXQgc2hvdWxkIG5vIGJlIGdvbmUsIGJ1dCBuZXh0IG9uZSBz
dGlsbCB0aGVyZS4KLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNl
cU51bSwgZmFsc2UpKTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0
U2VxTnVtICsgMSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRl
KGtTdGFydFNlcU51bSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3Rh
cnRTZXFOdW0gKyAxKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgRG9udFJl
bW92ZVRvb1JlY2VudGx5VHJhbnNtaXR0ZWRQYWNrZXRzSGlnaFJ0dCkgewpAQCAtNDA3LDE1ICs0
MDgsMTUgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBEb250UmVtb3ZlVG9vUmVjZW50
bHlUcmFuc21pdHRlZFBhY2tldHNIaWdoUnR0KSB7CiAgIGhpc3RfLlB1dFJ0cFBhY2tldChDcmVh
dGVSdHBQYWNrZXQoa1N0YXJ0U2VxTnVtICsgMSksIGtBbGxvd1JldHJhbnNtaXNzaW9uLAogICAg
ICAgICAgICAgICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwogICAv
LyBGaXJzdCBwYWNrZXQgc2hvdWxkIHN0aWxsIGJlIHRoZXJlLgotICBFWFBFQ1RfVFJVRShoaXN0
Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9UUlVFKGhp
c3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOwogCiAgIC8vIEFkdmFuY2UgdGltZSB0
byB3aGVyZSBwYWNrZXQgd2lsbCBiZSBlbGlnaWJsZSBmb3IgcmVtb3ZhbCBhbmQgdHJ5IGFnYWlu
LgogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxKTsKICAgaGlzdF8uUHV0
UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChUbzE2dShrU3RhcnRTZXFOdW0gKyAyKSksCiAgICAg
ICAgICAgICAgICAgICAgICBrQWxsb3dSZXRyYW5zbWlzc2lvbiwgZmFrZV9jbG9ja18uVGltZUlu
TWlsbGlzZWNvbmRzKCkpOwogICAvLyBGaXJzdCBwYWNrZXQgc2hvdWxkIG5vIGJlIGdvbmUsIGJ1
dCBuZXh0IG9uZSBzdGlsbCB0aGVyZS4KLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0
YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0
U3RhdGUoa1N0YXJ0U2VxTnVtICsgMSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdl
dFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNr
ZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAxKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5
VGVzdCwgUmVtb3Zlc09sZFdpdGhDdWxsaW5nKSB7CkBAIC00MzEsMTQgKzQzMiwxNCBAQCBURVNU
X0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFJlbW92ZXNPbGRXaXRoQ3VsbGluZykgewogICBmYWtl
X2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrTWF4UGFja2V0RHVyYXRpb25NcyAtIDEp
OwogCiAgIC8vIEZpcnN0IHBhY2tldCBzaG91bGQgc3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVDVF9U
UlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNU
X1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQWR2YW5j
ZSB0byB3aGVyZSBwYWNrZXQgY2FuIGJlIGN1bGxlZCwgZXZlbiBpZiBidWZmZXIgaXMgbm90IGZ1
bGwuCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEpOwogICBoaXN0Xy5Q
dXRSdHBQYWNrZXQoQ3JlYXRlUnRwUGFja2V0KGtTdGFydFNlcU51bSArIDEpLCBrQWxsb3dSZXRy
YW5zbWlzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgIGZha2VfY2xvY2tfLlRpbWVJbk1pbGxp
c2Vjb25kcygpKTsKIAotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0
U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0
YXJ0U2VxTnVtKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgUmVtb3Zlc09s
ZFdpdGhDdWxsaW5nSGlnaFJ0dCkgewpAQCAtNDU3LDE0ICs0NTgsMTQgQEAgVEVTVF9GKFJ0cFBh
Y2tldEhpc3RvcnlUZXN0LCBSZW1vdmVzT2xkV2l0aEN1bGxpbmdIaWdoUnR0KSB7CiAgIGZha2Vf
Y2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtNYXhQYWNrZXREdXJhdGlvbk1zIC0gMSk7
CiAKICAgLy8gRmlyc3QgcGFja2V0IHNob3VsZCBzdGlsbCBiZSB0aGVyZS4KLSAgRVhQRUNUX1RS
VUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1Rf
VFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBBZHZhbmNl
IHRvIHdoZXJlIHBhY2tldCBjYW4gYmUgY3VsbGVkLCBldmVuIGlmIGJ1ZmZlciBpcyBub3QgZnVs
bC4KICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMSk7CiAgIGhpc3RfLlB1
dFJ0cFBhY2tldChDcmVhdGVSdHBQYWNrZXQoa1N0YXJ0U2VxTnVtICsgMSksIGtBbGxvd1JldHJh
bnNtaXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlz
ZWNvbmRzKCkpOwogCi0gIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRT
ZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3Rh
cnRTZXFOdW0pKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBHZXRCZXN0Rml0
dGluZ1BhY2tldCkgewpAQCAtNTAzLDcgKzUwNCw3IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5
VGVzdCwKICAgQVNTRVJUX1RIQVQocGFja2V0LCA6OnRlc3Rpbmc6Ok5vdE51bGwoKSk7CiAKICAg
Ly8gU2VuZCB0aGUgcGFja2V0IGFuZCBhZHZhbmNlIHRpbWUgcGFzdCB3aGVyZSBwYWNrZXQgZXhw
aXJlcy4KLSAgQVNTRVJUX1RIQVQoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0
U2VxTnVtLCBmYWxzZSksCisgIEFTU0VSVF9USEFUKGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRU
aW1lKGtTdGFydFNlcU51bSksCiAgICAgICAgICAgICAgIDo6dGVzdGluZzo6Tm90TnVsbCgpKTsK
ICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoCiAgICAgICBSdHBQYWNrZXRI
aXN0b3J5OjprUGFja2V0Q3VsbGluZ0RlbGF5RmFjdG9yICoKQEAgLTUxMyw3ICs1MTQsNyBAQCBU
RVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsCiAgIHBhY2tldC0+U2V0UGF5bG9hZFNpemUoMTAw
KTsKICAgaGlzdF8uUHV0UnRwUGFja2V0KHN0ZDo6bW92ZShwYWNrZXQpLCBrQWxsb3dSZXRyYW5z
bWlzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgIGZha2VfY2xvY2tfLlRpbWVJbk1pbGxpc2Vj
b25kcygpKTsKLSAgQVNTRVJUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51
bSwgZmFsc2UpKTsKKyAgQVNTRVJUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNl
cU51bSkpOwogCiAgIGF1dG8gYmVzdF9wYWNrZXQgPSBoaXN0Xy5HZXRCZXN0Rml0dGluZ1BhY2tl
dCh0YXJnZXRfcGFja2V0X3NpemUgKyAyKTsKICAgQVNTRVJUX1RIQVQoYmVzdF9wYWNrZXQsIDo6
dGVzdGluZzo6Tm90TnVsbCgpKTsKQEAgLTU3Myw3ICs1NzQsNyBAQCBURVNUX0YoUnRwUGFja2V0
SGlzdG9yeVRlc3QsCiAgIGhpc3RfLlB1dFJ0cFBhY2tldChzdGQ6Om1vdmUocGFja2V0KSwga0Rv
bnRSZXRyYW5zbWl0LAogICAgICAgICAgICAgICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWls
bGlzZWNvbmRzKCkpOwogICBFWFBFQ1RfVEhBVChoaXN0Xy5HZXRCZXN0Rml0dGluZ1BhY2tldCg1
MCksIDo6dGVzdGluZzo6SXNOdWxsKCkpOwotICBFWFBFQ1RfVEhBVChoaXN0Xy5HZXRQYWNrZXRB
bmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0sIGZhbHNlKSwKKyAgRVhQRUNUX1RIQVQoaGlzdF8u
R2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKSwKICAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjpOb3ROdWxsKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0
X3JlY2VpdmVkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5jYwppbmRleCBjOGRl
Yjk5ZDkwZTU1ODZmYTRjNDE1MjVkZjRhZGY3Zjk1NTI0ZGQzLi5mODBmYWQ2OGUwZDMyNmQ2ZWZm
ZWI1NTk1YTI0MGYyNDE3M2E5ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3Jl
Y2VpdmVkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuY2MKQEAgLTEwLDYg
KzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRf
cmVjZWl2ZWQuaCIKIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAj
aW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2hlYWRlcl9leHRlbnNpb25zLmgiCkBAIC02Nyw2ICs2OSw3IEBAIHZvaWQgUnRwUGFja2V0UmVj
ZWl2ZWQ6OkdldEhlYWRlcihSVFBIZWFkZXIqIGhlYWRlcikgY29uc3QgewogICBHZXRFeHRlbnNp
b248UmVwYWlyZWRSdHBTdHJlYW1JZD4oJmhlYWRlci0+ZXh0ZW5zaW9uLnJlcGFpcmVkX3N0cmVh
bV9pZCk7CiAgIEdldEV4dGVuc2lvbjxSdHBNaWQ+KCZoZWFkZXItPmV4dGVuc2lvbi5taWQpOwog
ICBHZXRFeHRlbnNpb248UGxheW91dERlbGF5TGltaXRzPigmaGVhZGVyLT5leHRlbnNpb24ucGxh
eW91dF9kZWxheSk7CisgIGhlYWRlci0+ZXh0ZW5zaW9uLmNvbG9yX3NwYWNlID0gR2V0RXh0ZW5z
aW9uPENvbG9yU3BhY2VFeHRlbnNpb24+KCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9wYWNrZXRfcmVjZWl2ZWQuaAppbmRleCA4NjkwMDMxMGU0OWUzMTk4ZTllNDkxMjVkMzViMzhh
NjcwODU4ODUxLi41NjZiMTE2YTEwYTYxM2MyNDYwOTNmMzc5MjliZGZkM2Q2MTU5ZjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X3BhY2tldF9yZWNlaXZlZC5oCkBAIC0xMCw5ICsxMCwxMSBAQAogI2lmbmRlZiBNT0RVTEVTX1JU
UF9SVENQX1NPVVJDRV9SVFBfUEFDS0VUX1JFQ0VJVkVEX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQ
X1JUQ1BfU09VUkNFX1JUUF9QQUNLRVRfUkVDRUlWRURfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9M
SU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRl
ICJhcGkvcnRwX2hlYWRlcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfcGFja2V0LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbnRwX3RpbWUu
aCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX3BhY2tldF90b19zZW5kLmNjCmluZGV4IDAxNTNiYmU3M2FjMjI5ZWQzNDAwNzI4ZjVj
MGJlMDYyYjJkMDFkOTMuLmI1NWU3NGFhZjAxZjgwN2RkMjk3NTg1MjFhMjNlOGRlOWUzMGZkOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfcGFja2V0X3RvX3NlbmQuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIgogCisjaW5jbHVkZSA8
Y3N0ZGludD4KKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIFJ0cFBhY2tldFRvU2VuZDo6UnRwUGFj
a2V0VG9TZW5kKGNvbnN0IEV4dGVuc2lvbk1hbmFnZXIqIGV4dGVuc2lvbnMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9f
c2VuZC5oCmluZGV4IDFlZDdkZGE0NzgyNjk3NzIwNDdlYjY3MGYzYTg3YjQzZDI5ZWY3ZWEuLjU2
YjEwMjRhMDU5ZDdhYzViZGFhZTFkM2QwYjIyMzAzZjRjY2RmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2Vu
ZC5oCkBAIC0xMCw5ICsxMCwxMiBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9S
VFBfUEFDS0VUX1RPX1NFTkRfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQ
X1BBQ0tFVF9UT19TRU5EX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRp
bnQuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgor
I2luY2x1ZGUgImFwaS92aWRlby92aWRlb190aW1pbmcuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9wYWNrZXRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3VuaXR0ZXN0LmNjCmlu
ZGV4IDEyNTAwMGQyZGM5NGVkNGJlMTc4NjJlMDRiMjQ0MDZiZjNkMjc0N2MuLmIxYzBlNDI1MjVl
YWU1MjY3N2MwZjgwYTBjY2Y2NDE3MTQ1OWU0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9w
YWNrZXRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF91bml0dGVzdC5jYwpA
QCAtMTksNiArMTksNyBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogCit1c2lu
ZyA6OnRlc3Rpbmc6OkVhY2g7CiB1c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlOwogdXNpbmcg
Ojp0ZXN0aW5nOjpFbGVtZW50c0FyZUFycmF5OwogdXNpbmcgOjp0ZXN0aW5nOjpJc0VtcHR5OwpA
QCAtMTg0LDYgKzE4NSw1MiBAQCBjb25zdGV4cHIgdWludDhfdCBrUGFja2V0V2l0aExlZ2FjeVRp
bWluZ0V4dGVuc2lvbltdID0gewogICAgIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsCiAgICAgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMH07CiAvLyBjbGFuZy1mb3JtYXQgb24KKworSGRyTWV0YWRhdGEg
Q3JlYXRlVGVzdEhkck1ldGFkYXRhKCkgeworICAvLyBSYW5kb20gYnV0IHJlYXNvbmFibGUgSERS
IG1ldGFkYXRhLgorICBIZHJNZXRhZGF0YSBoZHJfbWV0YWRhdGE7CisgIGhkcl9tZXRhZGF0YS5t
YXN0ZXJpbmdfbWV0YWRhdGEubHVtaW5hbmNlX21heCA9IDIwMDAuMDsKKyAgaGRyX21ldGFkYXRh
Lm1hc3RlcmluZ19tZXRhZGF0YS5sdW1pbmFuY2VfbWluID0gMi4wMDAxOworICBoZHJfbWV0YWRh
dGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfci54ID0gMC4zMDAzOworICBoZHJfbWV0YWRh
dGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfci55ID0gMC40MDA0OworICBoZHJfbWV0YWRh
dGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfZy54ID0gMC4zMjAxOworICBoZHJfbWV0YWRh
dGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfZy55ID0gMC40NjA0OworICBoZHJfbWV0YWRh
dGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfYi54ID0gMC4zNDA5OworICBoZHJfbWV0YWRh
dGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfYi55ID0gMC40OTA3OworICBoZHJfbWV0YWRh
dGEubWFzdGVyaW5nX21ldGFkYXRhLndoaXRlX3BvaW50LnggPSAwLjQxMDM7CisgIGhkcl9tZXRh
ZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEud2hpdGVfcG9pbnQueSA9IDAuNDgwNjsKKyAgaGRyX21l
dGFkYXRhLm1heF9jb250ZW50X2xpZ2h0X2xldmVsID0gMjM0NTsKKyAgaGRyX21ldGFkYXRhLm1h
eF9mcmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVsID0gMTc4OTsKKyAgcmV0dXJuIGhkcl9tZXRhZGF0
YTsKK30KKworQ29sb3JTcGFjZSBDcmVhdGVUZXN0Q29sb3JTcGFjZShib29sIHdpdGhfaGRyX21l
dGFkYXRhKSB7CisgIENvbG9yU3BhY2UgY29sb3Jfc3BhY2UoCisgICAgICBDb2xvclNwYWNlOjpQ
cmltYXJ5SUQ6OmtCVDcwOSwgQ29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6a0dBTU1BMjIsCisgICAg
ICBDb2xvclNwYWNlOjpNYXRyaXhJRDo6a1NNUFRFMjA4NSwgQ29sb3JTcGFjZTo6UmFuZ2VJRDo6
a0Z1bGwpOworICBpZiAod2l0aF9oZHJfbWV0YWRhdGEpIHsKKyAgICBIZHJNZXRhZGF0YSBoZHJf
bWV0YWRhdGEgPSBDcmVhdGVUZXN0SGRyTWV0YWRhdGEoKTsKKyAgICBjb2xvcl9zcGFjZS5zZXRf
aGRyX21ldGFkYXRhKCZoZHJfbWV0YWRhdGEpOworICB9CisgIHJldHVybiBjb2xvcl9zcGFjZTsK
K30KKwordm9pZCBUZXN0Q3JlYXRlQW5kUGFyc2VDb2xvclNwYWNlRXh0ZW5zaW9uKGJvb2wgd2l0
aF9oZHJfbWV0YWRhdGEpIHsKKyAgLy8gQ3JlYXRlIHBhY2tldCB3aXRoIGV4dGVuc2lvbi4KKyAg
UnRwUGFja2V0OjpFeHRlbnNpb25NYW5hZ2VyIGV4dGVuc2lvbnMoLypleHRtYXAtYWxsb3ctbWl4
ZWQ9Ki90cnVlKTsKKyAgZXh0ZW5zaW9ucy5SZWdpc3RlcjxDb2xvclNwYWNlRXh0ZW5zaW9uPigx
KTsKKyAgUnRwUGFja2V0IHBhY2tldCgmZXh0ZW5zaW9ucyk7CisgIGNvbnN0IENvbG9yU3BhY2Ug
a0NvbG9yU3BhY2UgPSBDcmVhdGVUZXN0Q29sb3JTcGFjZSh3aXRoX2hkcl9tZXRhZGF0YSk7Cisg
IEVYUEVDVF9UUlVFKHBhY2tldC5TZXRFeHRlbnNpb248Q29sb3JTcGFjZUV4dGVuc2lvbj4oa0Nv
bG9yU3BhY2UpKTsKKyAgcGFja2V0LlNldFBheWxvYWRTaXplKDQyKTsKKworICAvLyBSZWFkIHBh
Y2tldCB3aXRoIHRoZSBleHRlbnNpb24uCisgIFJ0cFBhY2tldFJlY2VpdmVkIHBhcnNlZCgmZXh0
ZW5zaW9ucyk7CisgIEVYUEVDVF9UUlVFKHBhcnNlZC5QYXJzZShwYWNrZXQuQnVmZmVyKCkpKTsK
KyAgQ29sb3JTcGFjZSBwYXJzZWRfY29sb3Jfc3BhY2U7CisgIEVYUEVDVF9UUlVFKHBhcnNlZC5H
ZXRFeHRlbnNpb248Q29sb3JTcGFjZUV4dGVuc2lvbj4oJnBhcnNlZF9jb2xvcl9zcGFjZSkpOwor
ICBFWFBFQ1RfRVEoa0NvbG9yU3BhY2UsIHBhcnNlZF9jb2xvcl9zcGFjZSk7Cit9CiB9ICAvLyBu
YW1lc3BhY2UKIAogVEVTVChSdHBQYWNrZXRUZXN0LCBDcmVhdGVNaW5pbXVtKSB7CkBAIC0yMjUs
OCArMjcyLDcgQEAgVEVTVChSdHBQYWNrZXRUZXN0LCBDcmVhdGVXaXRoMkV4dGVuc2lvbnMpIHsK
IH0KIAogVEVTVChSdHBQYWNrZXRUZXN0LCBDcmVhdGVXaXRoVHdvQnl0ZUhlYWRlckV4dGVuc2lv
bkZpcnN0KSB7Ci0gIFJ0cFBhY2tldFRvU2VuZDo6RXh0ZW5zaW9uTWFuYWdlciBleHRlbnNpb25z
OwotICBleHRlbnNpb25zLlNldE1peGVkT25lVHdvQnl0ZUhlYWRlclN1cHBvcnRlZCh0cnVlKTsK
KyAgUnRwUGFja2V0VG9TZW5kOjpFeHRlbnNpb25NYW5hZ2VyIGV4dGVuc2lvbnModHJ1ZSk7CiAg
IGV4dGVuc2lvbnMuUmVnaXN0ZXIoa1J0cEV4dGVuc2lvblRyYW5zbWlzc2lvblRpbWVPZmZzZXQs
CiAgICAgICAgICAgICAgICAgICAgICAga1RyYW5zbWlzc2lvbk9mZnNldEV4dGVuc2lvbklkKTsK
ICAgZXh0ZW5zaW9ucy5SZWdpc3RlcihrUnRwRXh0ZW5zaW9uQXVkaW9MZXZlbCwga0F1ZGlvTGV2
ZWxFeHRlbnNpb25JZCk7CkBAIC0yNDcsOCArMjkzLDcgQEAgVEVTVChSdHBQYWNrZXRUZXN0LCBD
cmVhdGVXaXRoVHdvQnl0ZUhlYWRlckV4dGVuc2lvbkZpcnN0KSB7CiAKIFRFU1QoUnRwUGFja2V0
VGVzdCwgQ3JlYXRlV2l0aFR3b0J5dGVIZWFkZXJFeHRlbnNpb25MYXN0KSB7CiAgIC8vIFRoaXMg
dGVzdCB3aWxsIHRyaWdnZXIgUnRwUGFja2V0OjpQcm9tb3RlVG9Ud29CeXRlSGVhZGVyRXh0ZW5z
aW9uKCkuCi0gIFJ0cFBhY2tldFRvU2VuZDo6RXh0ZW5zaW9uTWFuYWdlciBleHRlbnNpb25zOwot
ICBleHRlbnNpb25zLlNldE1peGVkT25lVHdvQnl0ZUhlYWRlclN1cHBvcnRlZCh0cnVlKTsKKyAg
UnRwUGFja2V0VG9TZW5kOjpFeHRlbnNpb25NYW5hZ2VyIGV4dGVuc2lvbnModHJ1ZSk7CiAgIGV4
dGVuc2lvbnMuUmVnaXN0ZXIoa1J0cEV4dGVuc2lvblRyYW5zbWlzc2lvblRpbWVPZmZzZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAga1RyYW5zbWlzc2lvbk9mZnNldEV4dGVuc2lvbklkKTsKICAg
ZXh0ZW5zaW9ucy5SZWdpc3RlcihrUnRwRXh0ZW5zaW9uQXVkaW9MZXZlbCwga0F1ZGlvTGV2ZWxF
eHRlbnNpb25JZCk7CkBAIC0zNjcsMTEgKzQxMiwxMCBAQCBURVNUKFJ0cFBhY2tldFRlc3QsIENy
ZWF0ZVB1cmVQYWRkaW5nKSB7CiAgIHBhY2tldC5TZXRTZXF1ZW5jZU51bWJlcihrU2VxTnVtKTsK
ICAgcGFja2V0LlNldFRpbWVzdGFtcChrVGltZXN0YW1wKTsKICAgcGFja2V0LlNldFNzcmMoa1Nz
cmMpOwotICBSYW5kb20gcmFuZG9tKDB4MTIzNDU2Nzg5KTsKIAogICBFWFBFQ1RfTFQocGFja2V0
LnNpemUoKSwgcGFja2V0LmNhcGFjaXR5KCkpOwotICBFWFBFQ1RfRkFMU0UocGFja2V0LlNldFBh
ZGRpbmcoa1BhZGRpbmdTaXplICsgMSwgJnJhbmRvbSkpOwotICBFWFBFQ1RfVFJVRShwYWNrZXQu
U2V0UGFkZGluZyhrUGFkZGluZ1NpemUsICZyYW5kb20pKTsKKyAgRVhQRUNUX0ZBTFNFKHBhY2tl
dC5TZXRQYWRkaW5nKGtQYWRkaW5nU2l6ZSArIDEpKTsKKyAgRVhQRUNUX1RSVUUocGFja2V0LlNl
dFBhZGRpbmcoa1BhZGRpbmdTaXplKSk7CiAgIEVYUEVDVF9FUShwYWNrZXQuc2l6ZSgpLCBwYWNr
ZXQuY2FwYWNpdHkoKSk7CiB9CiAKQEAgLTM4MywxMyArNDI3LDQ4IEBAIFRFU1QoUnRwUGFja2V0
VGVzdCwgQ3JlYXRlVW5hbGlnbmVkUGFkZGluZykgewogICBwYWNrZXQuU2V0VGltZXN0YW1wKGtU
aW1lc3RhbXApOwogICBwYWNrZXQuU2V0U3NyYyhrU3NyYyk7CiAgIHBhY2tldC5TZXRQYXlsb2Fk
U2l6ZShrUGF5bG9hZFNpemUpOwotICBSYW5kb20gcigweDEyMzQ1Njc4OSk7CiAKICAgRVhQRUNU
X0xUKHBhY2tldC5zaXplKCksIHBhY2tldC5jYXBhY2l0eSgpKTsKLSAgRVhQRUNUX1RSVUUocGFj
a2V0LlNldFBhZGRpbmcoa01heFBhZGRpbmdTaXplLCAmcikpOworICBFWFBFQ1RfVFJVRShwYWNr
ZXQuU2V0UGFkZGluZyhrTWF4UGFkZGluZ1NpemUpKTsKICAgRVhQRUNUX0VRKHBhY2tldC5zaXpl
KCksIHBhY2tldC5jYXBhY2l0eSgpKTsKIH0KIAorVEVTVChSdHBQYWNrZXRUZXN0LCBXcml0ZXNQ
YWRkaW5nU2l6ZVRvTGFzdEJ5dGUpIHsKKyAgY29uc3Qgc2l6ZV90IGtQYWRkaW5nU2l6ZSA9IDU7
CisgIFJ0cFBhY2tldCBwYWNrZXQ7CisKKyAgRVhQRUNUX1RSVUUocGFja2V0LlNldFBhZGRpbmco
a1BhZGRpbmdTaXplKSk7CisgIEVYUEVDVF9FUShwYWNrZXQuZGF0YSgpW3BhY2tldC5zaXplKCkg
LSAxXSwga1BhZGRpbmdTaXplKTsKK30KKworVEVTVChSdHBQYWNrZXRUZXN0LCBVc2VzWmVyb3NG
b3JQYWRkaW5nKSB7CisgIGNvbnN0IHNpemVfdCBrUGFkZGluZ1NpemUgPSA1OworICBSdHBQYWNr
ZXQgcGFja2V0OworCisgIEVYUEVDVF9UUlVFKHBhY2tldC5TZXRQYWRkaW5nKGtQYWRkaW5nU2l6
ZSkpOworICBFWFBFQ1RfVEhBVChydGM6Ok1ha2VBcnJheVZpZXcocGFja2V0LmRhdGEoKSArIDEy
LCBrUGFkZGluZ1NpemUgLSAxKSwKKyAgICAgICAgICAgICAgRWFjaCgwKSk7Cit9CisKK1RFU1Qo
UnRwUGFja2V0VGVzdCwgQ3JlYXRlT25lQnl0ZVBhZGRpbmcpIHsKKyAgc2l6ZV90IGtQYXlsb2Fk
U2l6ZSA9IDEyMzsKKyAgUnRwUGFja2V0IHBhY2tldChudWxscHRyLCAxMiArIGtQYXlsb2FkU2l6
ZSArIDEpOworICBwYWNrZXQuU2V0UGF5bG9hZFNpemUoa1BheWxvYWRTaXplKTsKKworICBFWFBF
Q1RfVFJVRShwYWNrZXQuU2V0UGFkZGluZygxKSk7CisKKyAgRVhQRUNUX0VRKHBhY2tldC5zaXpl
KCksIDEyICsga1BheWxvYWRTaXplICsgMSk7CisgIEVYUEVDVF9FUShwYWNrZXQucGFkZGluZ19z
aXplKCksIDF1KTsKK30KKworVEVTVChSdHBQYWNrZXRUZXN0LCBGYWlsc1RvQWRkUGFkZGluZ1dp
dGhvdXRDYXBhY2l0eSkgeworICBzaXplX3Qga1BheWxvYWRTaXplID0gMTIzOworICBSdHBQYWNr
ZXQgcGFja2V0KG51bGxwdHIsIDEyICsga1BheWxvYWRTaXplKTsKKyAgcGFja2V0LlNldFBheWxv
YWRTaXplKGtQYXlsb2FkU2l6ZSk7CisKKyAgRVhQRUNUX0ZBTFNFKHBhY2tldC5TZXRQYWRkaW5n
KDEpKTsKK30KKwogVEVTVChSdHBQYWNrZXRUZXN0LCBQYXJzZU1pbmltdW0pIHsKICAgUnRwUGFj
a2V0UmVjZWl2ZWQgcGFja2V0OwogICBFWFBFQ1RfVFJVRShwYWNrZXQuUGFyc2Uoa01pbmltdW1Q
YWNrZXQsIHNpemVvZihrTWluaW11bVBhY2tldCkpKTsKQEAgLTQzMyw2ICs1MTIsMjMgQEAgVEVT
VChSdHBQYWNrZXRUZXN0LCBQYXJzZVdpdGhFeHRlbnNpb24pIHsKICAgRVhQRUNUX0VRKDB1LCBw
YWNrZXQucGFkZGluZ19zaXplKCkpOwogfQogCitURVNUKFJ0cFBhY2tldFRlc3QsIEdldEV4dGVu
c2lvbldpdGhvdXRQYXJhbWV0ZXJzUmV0dXJuc09wdGlvbmFsVmFsdWUpIHsKKyAgUnRwUGFja2V0
OjpFeHRlbnNpb25NYW5hZ2VyIGV4dGVuc2lvbnM7CisgIGV4dGVuc2lvbnMuUmVnaXN0ZXI8VHJh
bnNtaXNzaW9uT2Zmc2V0PihrVHJhbnNtaXNzaW9uT2Zmc2V0RXh0ZW5zaW9uSWQpOworICBleHRl
bnNpb25zLlJlZ2lzdGVyPFJ0cFN0cmVhbUlkPihrUnRwU3RyZWFtSWRFeHRlbnNpb25JZCk7CisK
KyAgUnRwUGFja2V0UmVjZWl2ZWQgcGFja2V0KCZleHRlbnNpb25zKTsKKyAgRVhQRUNUX1RSVUUo
cGFja2V0LlBhcnNlKGtQYWNrZXRXaXRoVE8sIHNpemVvZihrUGFja2V0V2l0aFRPKSkpOworCisg
IGF1dG8gdGltZV9vZmZzZXQgPSBwYWNrZXQuR2V0RXh0ZW5zaW9uPFRyYW5zbWlzc2lvbk9mZnNl
dD4oKTsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIHN0ZDo6aXNfc2FtZTxkZWNsdHlwZSh0aW1l
X29mZnNldCksCisgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8VHJhbnNtaXNzaW9u
T2Zmc2V0Ojp2YWx1ZV90eXBlPj46OnZhbHVlLAorICAgICAgIiIpOworICBFWFBFQ1RfRVEodGlt
ZV9vZmZzZXQsIGtUaW1lT2Zmc2V0KTsKKyAgRVhQRUNUX0ZBTFNFKHBhY2tldC5HZXRFeHRlbnNp
b248UnRwU3RyZWFtSWQ+KCkuaGFzX3ZhbHVlKCkpOworfQorCiBURVNUKFJ0cFBhY2tldFRlc3Qs
IEdldFJhd0V4dGVuc2lvbldoZW5QcmVzZW50KSB7CiAgIGNvbnN0ZXhwciB1aW50OF90IGtSYXdQ
YWNrZXRbXSA9IHsKICAgICAgIC8vIGNvbW1lbnQgZm9yIGNsYW5nLWZvcm1hdCB0byBhbGlnbiBr
UmF3UGFja2V0IG5pY2VyLgpAQCAtNzUxLDQgKzg0NywxMiBAQCBURVNUKFJ0cFBhY2tldFRlc3Qs
IFBhcnNlTGVnYWN5VGltaW5nRnJhbWVFeHRlbnNpb24pIHsKICAgRVhQRUNUX0VRKHJlY2Vpdmll
ZF90aW1pbmcuZmxhZ3MsIDApOwogfQogCitURVNUKFJ0cFBhY2tldFRlc3QsIENyZWF0ZUFuZFBh
cnNlQ29sb3JTcGFjZUV4dGVuc2lvbikgeworICBUZXN0Q3JlYXRlQW5kUGFyc2VDb2xvclNwYWNl
RXh0ZW5zaW9uKC8qd2l0aF9oZHJfbWV0YWRhdGE9Ki90cnVlKTsKK30KKworVEVTVChSdHBQYWNr
ZXRUZXN0LCBDcmVhdGVBbmRQYXJzZUNvbG9yU3BhY2VFeHRlbnNpb25XaXRob3V0SGRyTWV0YWRh
dGEpIHsKKyAgVGVzdENyZWF0ZUFuZFBhcnNlQ29sb3JTcGFjZUV4dGVuc2lvbigvKndpdGhfaGRy
X21ldGFkYXRhPSovZmFsc2UpOworfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbC5j
YwppbmRleCAxNzVhOTRiZTgwMjE2MWVmMDc3OTk2MGM1OGFkZjMwZjBlNDZjYmQxLi4wZDBjYTk2
MTg4ODAzNzNiZDRlZjEwNjg3NDM5ZGJlYTI3YjY1OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfcnRjcF9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2ltcGwuY2MKQEAgLTExLDEy
ICsxMSwxNCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2lt
cGwuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgotCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2lu
Y2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNs
dWRlIDx1dGlsaXR5PgogCi0jaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9kbHJyLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfY29uZmlnLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCkBAIC0zMSw2
ICszMyw4IEBAIGNvbnN0IGludDY0X3Qga1J0cFJ0Y3BNYXhJZGxlVGltZVByb2Nlc3NNcyA9IDU7
CiBjb25zdCBpbnQ2NF90IGtSdHBSdGNwUnR0UHJvY2Vzc1RpbWVNcyA9IDEwMDA7CiBjb25zdCBp
bnQ2NF90IGtSdHBSdGNwQml0cmF0ZVByb2Nlc3NUaW1lTXMgPSAxMDsKIGNvbnN0IGludDY0X3Qg
a0RlZmF1bHRFeHBlY3RlZFJldHJhbnNtaXNzaW9uVGltZU1zID0gMTI1OworY29uc3RleHByIGlu
dDMyX3Qga0RlZmF1bHRWaWRlb1JlcG9ydEludGVydmFsID0gMTAwMDsKK2NvbnN0ZXhwciBpbnQz
Ml90IGtEZWZhdWx0QXVkaW9SZXBvcnRJbnRlcnZhbCA9IDUwMDA7CiB9ICAvLyBuYW1lc3BhY2UK
IAogUnRwUnRjcDo6Q29uZmlndXJhdGlvbjo6Q29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKQEAg
LTYyLDcgKzY2LDEwIEBAIE1vZHVsZVJ0cFJ0Y3BJbXBsOjpNb2R1bGVSdHBSdGNwSW1wbChjb25z
dCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICAgICAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb24ucnRjcF9wYWNrZXRfdHlwZV9jb3VudGVyX29ic2VydmVyLAogICAgICAgICAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb24uZXZlbnRfbG9nLAogICAgICAgICAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb24ub3V0Z29pbmdfdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb24ucnRjcF9pbnRlcnZhbF9jb25maWcpLAorICAgICAgICAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb24ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPiAwCisgICAgICAgICAgICAgICAgICAgICAg
ID8gY29uZmlndXJhdGlvbi5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcworICAgICAgICAgICAgICAg
ICAgICAgICA6IChjb25maWd1cmF0aW9uLmF1ZGlvID8ga0RlZmF1bHRBdWRpb1JlcG9ydEludGVy
dmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrRGVm
YXVsdFZpZGVvUmVwb3J0SW50ZXJ2YWwpKSwKICAgICAgIHJ0Y3BfcmVjZWl2ZXJfKGNvbmZpZ3Vy
YXRpb24uY2xvY2ssCiAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnJlY2VpdmVy
X29ubHksCiAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnJ0Y3BfcGFja2V0X3R5
cGVfY291bnRlcl9vYnNlcnZlciwKQEAgLTcwLDYgKzc3LDEwIEBAIE1vZHVsZVJ0cFJ0Y3BJbXBs
OjpNb2R1bGVSdHBSdGNwSW1wbChjb25zdCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQog
ICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5pbnRyYV9mcmFtZV9jYWxsYmFjaywK
ICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24udHJhbnNwb3J0X2ZlZWRiYWNrX2Nh
bGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5iaXRyYXRlX2FsbG9j
YXRpb25fb2JzZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnJ0Y3Bf
cmVwb3J0X2ludGVydmFsX21zID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgID8gY29uZmln
dXJhdGlvbi5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcworICAgICAgICAgICAgICAgICAgICAgICAg
IDogKGNvbmZpZ3VyYXRpb24uYXVkaW8gPyBrRGVmYXVsdEF1ZGlvUmVwb3J0SW50ZXJ2YWwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoga0RlZmF1bHRW
aWRlb1JlcG9ydEludGVydmFsKSwKICAgICAgICAgICAgICAgICAgICAgIHRoaXMpLAogICAgICAg
Y2xvY2tfKGNvbmZpZ3VyYXRpb24uY2xvY2spLAogICAgICAgYXVkaW9fKGNvbmZpZ3VyYXRpb24u
YXVkaW8pLApAQCAtOTksNyArMTEwLDkgQEAgTW9kdWxlUnRwUnRjcEltcGw6Ok1vZHVsZVJ0cFJ0
Y3BJbXBsKGNvbnN0IENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgICAgIGNvbmZp
Z3VyYXRpb24uc2VuZF9wYWNrZXRfb2JzZXJ2ZXIsCiAgICAgICAgIGNvbmZpZ3VyYXRpb24ucmV0
cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyLAogICAgICAgICBjb25maWd1cmF0aW9uLm92ZXJoZWFk
X29ic2VydmVyLAotICAgICAgICBjb25maWd1cmF0aW9uLnBvcHVsYXRlX25ldHdvcmsyX3RpbWVz
dGFtcCkpOworICAgICAgICBjb25maWd1cmF0aW9uLnBvcHVsYXRlX25ldHdvcmsyX3RpbWVzdGFt
cCwKKyAgICAgICAgY29uZmlndXJhdGlvbi5mcmFtZV9lbmNyeXB0b3IsIGNvbmZpZ3VyYXRpb24u
cmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uLAorICAgICAgICBjb25maWd1cmF0aW9uLmV4dG1hcF9h
bGxvd19taXhlZCkpOwogICAgIC8vIE1ha2Ugc3VyZSBydGNwIHNlbmRlciB1c2Ugc2FtZSB0aW1l
c3RhbXAgb2Zmc2V0IGFzIHJ0cCBzZW5kZXIuCiAgICAgcnRjcF9zZW5kZXJfLlNldFRpbWVzdGFt
cE9mZnNldChydHBfc2VuZGVyXy0+VGltZXN0YW1wT2Zmc2V0KCkpOwogCkBAIC0xNzUsMTAgKzE4
OCw5IEBAIHZvaWQgTW9kdWxlUnRwUnRjcEltcGw6OlByb2Nlc3MoKSB7CiAKICAgICAvLyBWZXJp
ZnkgcmVjZWl2ZXIgcmVwb3J0cyBhcmUgZGVsaXZlcmVkIGFuZCB0aGUgcmVwb3J0ZWQgc2VxdWVu
Y2UgbnVtYmVyCiAgICAgLy8gaXMgaW5jcmVhc2luZy4KLSAgICBpbnQ2NF90IHJ0Y3BfaW50ZXJ2
YWwgPSBSdGNwUmVwb3J0SW50ZXJ2YWwoKTsKLSAgICBpZiAocnRjcF9yZWNlaXZlcl8uUnRjcFJy
VGltZW91dChydGNwX2ludGVydmFsKSkgeworICAgIGlmIChydGNwX3JlY2VpdmVyXy5SdGNwUnJU
aW1lb3V0KCkpIHsKICAgICAgIFJUQ19MT0dfRihMU19XQVJOSU5HKSA8PCAiVGltZW91dDogTm8g
UlRDUCBSUiByZWNlaXZlZC4iOwotICAgIH0gZWxzZSBpZiAocnRjcF9yZWNlaXZlcl8uUnRjcFJy
U2VxdWVuY2VOdW1iZXJUaW1lb3V0KHJ0Y3BfaW50ZXJ2YWwpKSB7CisgICAgfSBlbHNlIGlmIChy
dGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoKSkgewogICAgICAgUlRD
X0xPR19GKExTX1dBUk5JTkcpIDw8ICJUaW1lb3V0OiBObyBpbmNyZWFzZSBpbiBSVENQIFJSIGV4
dGVuZGVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGlnaGVzdCBzZXF1ZW5j
ZSBudW1iZXIuIjsKICAgICB9CkBAIC0yNTMsNiArMjY1LDcgQEAgdm9pZCBNb2R1bGVSdHBSdGNw
SW1wbDo6SW5jb21pbmdSdGNwUGFja2V0KGNvbnN0IHVpbnQ4X3QqIHJ0Y3BfcGFja2V0LAogfQog
CiBpbnQzMl90IE1vZHVsZVJ0cFJ0Y3BJbXBsOjpSZWdpc3RlclNlbmRQYXlsb2FkKGNvbnN0IENv
ZGVjSW5zdCYgdm9pY2VfY29kZWMpIHsKKyAgcnRjcF9zZW5kZXJfLlNldFJ0cENsb2NrUmF0ZSh2
b2ljZV9jb2RlYy5wbHR5cGUsIHZvaWNlX2NvZGVjLnBsZnJlcSk7CiAgIHJldHVybiBydHBfc2Vu
ZGVyXy0+UmVnaXN0ZXJQYXlsb2FkKAogICAgICAgdm9pY2VfY29kZWMucGxuYW1lLCB2b2ljZV9j
b2RlYy5wbHR5cGUsIHZvaWNlX2NvZGVjLnBsZnJlcSwKICAgICAgIHZvaWNlX2NvZGVjLmNoYW5u
ZWxzLCAodm9pY2VfY29kZWMucmF0ZSA8IDApID8gMCA6IHZvaWNlX2NvZGVjLnJhdGUpOwpAQCAt
MjYwLDggKzI3MywxMCBAQCBpbnQzMl90IE1vZHVsZVJ0cFJ0Y3BJbXBsOjpSZWdpc3RlclNlbmRQ
YXlsb2FkKGNvbnN0IENvZGVjSW5zdCYgdm9pY2VfY29kZWMpIHsKIAogdm9pZCBNb2R1bGVSdHBS
dGNwSW1wbDo6UmVnaXN0ZXJWaWRlb1NlbmRQYXlsb2FkKGludCBwYXlsb2FkX3R5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
cGF5bG9hZF9uYW1lKSB7Ci0gIFJUQ19DSEVDS19FUSgKLSAgICAgIDAsIHJ0cF9zZW5kZXJfLT5S
ZWdpc3RlclBheWxvYWQocGF5bG9hZF9uYW1lLCBwYXlsb2FkX3R5cGUsIDkwMDAwLCAwLCAwKSk7
CisgIHJ0Y3Bfc2VuZGVyXy5TZXRSdHBDbG9ja1JhdGUocGF5bG9hZF90eXBlLCBrVmlkZW9QYXls
b2FkVHlwZUZyZXF1ZW5jeSk7CisgIFJUQ19DSEVDS19FUSgwLAorICAgICAgICAgICAgICAgcnRw
X3NlbmRlcl8tPlJlZ2lzdGVyUGF5bG9hZChwYXlsb2FkX25hbWUsIHBheWxvYWRfdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1ZpZGVvUGF5bG9hZFR5
cGVGcmVxdWVuY3ksIDAsIDApKTsKIH0KIAogaW50MzJfdCBNb2R1bGVSdHBSdGNwSW1wbDo6RGVS
ZWdpc3RlclNlbmRQYXlsb2FkKGNvbnN0IGludDhfdCBwYXlsb2FkX3R5cGUpIHsKQEAgLTM5Miw2
ICs0MDcsMTEgQEAgYm9vbCBNb2R1bGVSdHBSdGNwSW1wbDo6U2VuZGluZ01lZGlhKCkgY29uc3Qg
ewogICByZXR1cm4gcnRwX3NlbmRlcl8gPyBydHBfc2VuZGVyXy0+U2VuZGluZ01lZGlhKCkgOiBm
YWxzZTsKIH0KIAordm9pZCBNb2R1bGVSdHBSdGNwSW1wbDo6U2V0QXNQYXJ0T2ZBbGxvY2F0aW9u
KGJvb2wgcGFydF9vZl9hbGxvY2F0aW9uKSB7CisgIFJUQ19DSEVDSyhydHBfc2VuZGVyXyk7Cisg
IHJ0cF9zZW5kZXJfLT5TZXRBc1BhcnRPZkFsbG9jYXRpb24ocGFydF9vZl9hbGxvY2F0aW9uKTsK
K30KKwogYm9vbCBNb2R1bGVSdHBSdGNwSW1wbDo6U2VuZE91dGdvaW5nRGF0YSgKICAgICBGcmFt
ZVR5cGUgZnJhbWVfdHlwZSwKICAgICBpbnQ4X3QgcGF5bG9hZF90eXBlLApAQCAtNDAyLDcgKzQy
Miw3IEBAIGJvb2wgTW9kdWxlUnRwUnRjcEltcGw6OlNlbmRPdXRnb2luZ0RhdGEoCiAgICAgY29u
c3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRhdGlvbiwKICAgICBjb25zdCBSVFBW
aWRlb0hlYWRlciogcnRwX3ZpZGVvX2hlYWRlciwKICAgICB1aW50MzJfdCogdHJhbnNwb3J0X2Zy
YW1lX2lkX291dCkgewotICBydGNwX3NlbmRlcl8uU2V0TGFzdFJ0cFRpbWUodGltZV9zdGFtcCwg
Y2FwdHVyZV90aW1lX21zKTsKKyAgcnRjcF9zZW5kZXJfLlNldExhc3RSdHBUaW1lKHRpbWVfc3Rh
bXAsIGNhcHR1cmVfdGltZV9tcywgcGF5bG9hZF90eXBlKTsKICAgLy8gTWFrZSBzdXJlIGFuIFJU
Q1AgcmVwb3J0IGlzbid0IHF1ZXVlZCBiZWhpbmQgYSBrZXkgZnJhbWUuCiAgIGlmIChydGNwX3Nl
bmRlcl8uVGltZVRvU2VuZFJUQ1BSZXBvcnQoa1ZpZGVvRnJhbWVLZXkgPT0gZnJhbWVfdHlwZSkp
IHsKICAgICBydGNwX3NlbmRlcl8uU2VuZFJUQ1AoR2V0RmVlZGJhY2tTdGF0ZSgpLCBrUnRjcFJl
cG9ydCk7CkBAIC02MDQsNiArNjI0LDEwIEBAIHZvaWQgTW9kdWxlUnRwUnRjcEltcGw6OlVuc2V0
UmVtYigpIHsKICAgcnRjcF9zZW5kZXJfLlVuc2V0UmVtYigpOwogfQogCit2b2lkIE1vZHVsZVJ0
cFJ0Y3BJbXBsOjpTZXRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSB7
CisgIHJ0cF9zZW5kZXJfLT5TZXRFeHRtYXBBbGxvd01peGVkKGV4dG1hcF9hbGxvd19taXhlZCk7
Cit9CisKIGludDMyX3QgTW9kdWxlUnRwUnRjcEltcGw6OlJlZ2lzdGVyU2VuZFJ0cEhlYWRlckV4
dGVuc2lvbigKICAgICBjb25zdCBSVFBFeHRlbnNpb25UeXBlIHR5cGUsCiAgICAgY29uc3QgdWlu
dDhfdCBpZCkgewpAQCAtODQzLDEzICs4NjcsNiBAQCBzdGQ6OnZlY3RvcjxydGNwOjpUbW1iSXRl
bT4gTW9kdWxlUnRwUnRjcEltcGw6OkJvdW5kaW5nU2V0KGJvb2wqIHRtbWJyX293bmVyKSB7CiAg
IHJldHVybiBydGNwX3JlY2VpdmVyXy5Cb3VuZGluZ1NldCh0bW1icl9vd25lcik7CiB9CiAKLWlu
dDY0X3QgTW9kdWxlUnRwUnRjcEltcGw6OlJ0Y3BSZXBvcnRJbnRlcnZhbCgpIHsKLSAgaWYgKGF1
ZGlvXykKLSAgICByZXR1cm4gcnRjcF9zZW5kZXJfLlJ0Y3BBdWRpb1JlcG9ydEludmVydmFsKCk7
Ci0gIGVsc2UKLSAgICByZXR1cm4gcnRjcF9zZW5kZXJfLlJ0Y3BWaWRlb1JlcG9ydEludmVydmFs
KCk7Ci19Ci0KIHZvaWQgTW9kdWxlUnRwUnRjcEltcGw6OlNldFJ0Y3BSZWNlaXZlclNzcmNzKHVp
bnQzMl90IG1haW5fc3NyYykgewogICBzdGQ6OnNldDx1aW50MzJfdD4gc3NyY3M7CiAgIHNzcmNz
Lmluc2VydChtYWluX3NzcmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbC5oCmluZGV4IDYwNDQxNGFkZjJmZjQ1NDExODUyOThh
MTU1MGUzNDJhZGVjZWVkODQuLjhlOTc1MWRjYzFmMGIyMzc5NjBlNGZkNTQ5NmNhNzM5MjEwMzAy
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfcnRjcF9pbXBsLmgKQEAgLTExLDE3ICsxMSwyNCBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9S
VENQX1NPVVJDRV9SVFBfUlRDUF9JTVBMX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09V
UkNFX1JUUF9SVENQX0lNUExfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3Ry
aW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAi
YWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS9ydHBfaGVhZGVycy5oIgogI2lu
Y2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uaCIKKyNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgIm1vZHVs
ZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9pbmNs
dWRlL21vZHVsZV9mZWNfdHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9pbmNsdWRlL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oIgotI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIgIC8vIFJUQ1BQYWNrZXRUeXBlCiAj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGFja2V0X2xvc3Nfc3RhdHMuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1iX2l0ZW0uaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9zZW5kZXIuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyLmgiCkBAIC0zMCw2ICszNywxMCBAQAog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAorY2xhc3MgQ2xvY2s7CitzdHJ1Y3QgUGFjZWRQYWNrZXRJ
bmZvOworc3RydWN0IFJUUFZpZGVvSGVhZGVyOworCiBjbGFzcyBNb2R1bGVSdHBSdGNwSW1wbCA6
IHB1YmxpYyBSdHBSdGNwLCBwdWJsaWMgUlRDUFJlY2VpdmVyOjpNb2R1bGVSdHBSdGNwIHsKICBw
dWJsaWM6CiAgIGV4cGxpY2l0IE1vZHVsZVJ0cFJ0Y3BJbXBsKGNvbnN0IFJ0cFJ0Y3A6OkNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pOwpAQCAtNTksNiArNzAsOCBAQCBjbGFzcyBNb2R1bGVS
dHBSdGNwSW1wbCA6IHB1YmxpYyBSdHBSdGNwLCBwdWJsaWMgUlRDUFJlY2VpdmVyOjpNb2R1bGVS
dHBSdGNwIHsKIAogICBpbnQzMl90IERlUmVnaXN0ZXJTZW5kUGF5bG9hZChpbnQ4X3QgcGF5bG9h
ZF90eXBlKSBvdmVycmlkZTsKIAorICB2b2lkIFNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRt
YXBfYWxsb3dfbWl4ZWQpIG92ZXJyaWRlOworCiAgIC8vIFJlZ2lzdGVyIFJUUCBoZWFkZXIgZXh0
ZW5zaW9uLgogICBpbnQzMl90IFJlZ2lzdGVyU2VuZFJ0cEhlYWRlckV4dGVuc2lvbihSVFBFeHRl
bnNpb25UeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgaWQpIG92ZXJyaWRlOwpAQCAtMTE1LDYgKzEyOCw4IEBAIGNsYXNzIE1vZHVsZVJ0
cFJ0Y3BJbXBsIDogcHVibGljIFJ0cFJ0Y3AsIHB1YmxpYyBSVENQUmVjZWl2ZXI6Ok1vZHVsZVJ0
cFJ0Y3AgewogCiAgIGJvb2wgU2VuZGluZ01lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgdm9p
ZCBTZXRBc1BhcnRPZkFsbG9jYXRpb24oYm9vbCBwYXJ0X29mX2FsbG9jYXRpb24pIG92ZXJyaWRl
OworCiAgIC8vIFVzZWQgYnkgdGhlIGNvZGVjIG1vZHVsZSB0byBkZWxpdmVyIGEgdmlkZW8gb3Ig
YXVkaW8gZnJhbWUgZm9yCiAgIC8vIHBhY2tldGl6YXRpb24uCiAgIGJvb2wgU2VuZE91dGdvaW5n
RGF0YShGcmFtZVR5cGUgZnJhbWVfdHlwZSwKQEAgLTMxMSw3ICszMjYsNiBAQCBjbGFzcyBNb2R1
bGVSdHBSdGNwSW1wbCA6IHB1YmxpYyBSdHBSdGNwLCBwdWJsaWMgUlRDUFJlY2VpdmVyOjpNb2R1
bGVSdHBSdGNwIHsKICBwcml2YXRlOgogICBGUklFTkRfVEVTVF9BTExfUFJFRklYRVMoUnRwUnRj
cEltcGxUZXN0LCBSdHQpOwogICBGUklFTkRfVEVTVF9BTExfUFJFRklYRVMoUnRwUnRjcEltcGxU
ZXN0LCBSdHRGb3JSZWNlaXZlck9ubHkpOwotICBpbnQ2NF90IFJ0Y3BSZXBvcnRJbnRlcnZhbCgp
OwogICB2b2lkIFNldFJ0Y3BSZWNlaXZlclNzcmNzKHVpbnQzMl90IG1haW5fc3NyYyk7CiAKICAg
dm9pZCBzZXRfcnR0X21zKGludDY0X3QgcnR0X21zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9ydGNwX2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsX3VuaXR0ZXN0
LmNjCmluZGV4IDUxNjBhNjRiZTczZDg5MjI3MGVjM2NlODExZWFkODAzZWFiNjdkMjQuLjYzMmE1
MzdlODAyOTEwMWI1MDY5ZmQyNjkxM2RjNzQ0NWY5MGE0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9ydGNwX2ltcGxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbF91
bml0dGVzdC5jYwpAQCAtNDksNyArNDksNyBAQCBjbGFzcyBSdGNwUnR0U3RhdHNUZXN0SW1wbCA6
IHB1YmxpYyBSdGNwUnR0U3RhdHMgewogICBpbnQ2NF90IHJ0dF9tc187CiB9OwogCi1jbGFzcyBT
ZW5kVHJhbnNwb3J0IDogcHVibGljIFRyYW5zcG9ydCwgcHVibGljIFJ0cERhdGEgeworY2xhc3Mg
U2VuZFRyYW5zcG9ydCA6IHB1YmxpYyBUcmFuc3BvcnQgewogIHB1YmxpYzoKICAgU2VuZFRyYW5z
cG9ydCgpCiAgICAgICA6IHJlY2VpdmVyXyhudWxscHRyKSwKQEAgLTkwLDExICs5MCw2IEBAIGNs
YXNzIFNlbmRUcmFuc3BvcnQgOiBwdWJsaWMgVHJhbnNwb3J0LCBwdWJsaWMgUnRwRGF0YSB7CiAg
ICAgKytydGNwX3BhY2tldHNfc2VudF87CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KLSAgaW50MzJf
dCBPblJlY2VpdmVkUGF5bG9hZERhdGEoY29uc3QgdWludDhfdCogcGF5bG9hZF9kYXRhLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZF9zaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSdGNSVFBIZWFkZXIqIHJ0cF9oZWFk
ZXIpIG92ZXJyaWRlIHsKLSAgICByZXR1cm4gMDsKLSAgfQogICB2b2lkIFNldEtlZXBhbGl2ZVBh
eWxvYWRUeXBlKHVpbnQ4X3QgcGF5bG9hZF90eXBlKSB7CiAgICAga2VlcGFsaXZlX3BheWxvYWRf
dHlwZV8gPSBwYXlsb2FkX3R5cGU7CiAgIH0KQEAgLTEyOSw3ICsxMjQsNyBAQCBjbGFzcyBSdHBS
dGNwTW9kdWxlIDogcHVibGljIFJ0Y3BQYWNrZXRUeXBlQ291bnRlck9ic2VydmVyIHsKICAgc3Rk
Ojp1bmlxdWVfcHRyPE1vZHVsZVJ0cFJ0Y3BJbXBsPiBpbXBsXzsKICAgdWludDMyX3QgcmVtb3Rl
X3NzcmNfOwogICBSdHBLZWVwQWxpdmVDb25maWcga2VlcGFsaXZlX2NvbmZpZ187Ci0gIFJ0Y3BJ
bnRlcnZhbENvbmZpZyBydGNwX2ludGVydmFsX2NvbmZpZ187CisgIGludCBydGNwX3JlcG9ydF9p
bnRlcnZhbF9tc18gPSAwOwogCiAgIHZvaWQgU2V0UmVtb3RlU3NyYyh1aW50MzJfdCBzc3JjKSB7
CiAgICAgcmVtb3RlX3NzcmNfID0gc3NyYzsKQEAgLTE2NCw4ICsxNTksOCBAQCBjbGFzcyBSdHBS
dGNwTW9kdWxlIDogcHVibGljIFJ0Y3BQYWNrZXRUeXBlQ291bnRlck9ic2VydmVyIHsKICAgICBD
cmVhdGVNb2R1bGVJbXBsKCk7CiAgICAgdHJhbnNwb3J0Xy5TZXRLZWVwYWxpdmVQYXlsb2FkVHlw
ZShjb25maWcucGF5bG9hZF90eXBlKTsKICAgfQotICB2b2lkIFNldFJ0Y3BJbnRlcnZhbENvbmZp
Z0FuZFJlc2V0KGNvbnN0IFJ0Y3BJbnRlcnZhbENvbmZpZyYgY29uZmlnKSB7Ci0gICAgcnRjcF9p
bnRlcnZhbF9jb25maWdfID0gY29uZmlnOworICB2b2lkIFNldFJ0Y3BSZXBvcnRJbnRlcnZhbEFu
ZFJlc2V0KGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcykgeworICAgIHJ0Y3BfcmVwb3J0X2lu
dGVydmFsX21zXyA9IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zOwogICAgIENyZWF0ZU1vZHVsZUlt
cGwoKTsKICAgfQogCkBAIC0xNzksNyArMTc0LDcgQEAgY2xhc3MgUnRwUnRjcE1vZHVsZSA6IHB1
YmxpYyBSdGNwUGFja2V0VHlwZUNvdW50ZXJPYnNlcnZlciB7CiAgICAgY29uZmlnLnJ0Y3BfcGFj
a2V0X3R5cGVfY291bnRlcl9vYnNlcnZlciA9IHRoaXM7CiAgICAgY29uZmlnLnJ0dF9zdGF0cyA9
ICZydHRfc3RhdHNfOwogICAgIGNvbmZpZy5rZWVwYWxpdmVfY29uZmlnID0ga2VlcGFsaXZlX2Nv
bmZpZ187Ci0gICAgY29uZmlnLnJ0Y3BfaW50ZXJ2YWxfY29uZmlnID0gcnRjcF9pbnRlcnZhbF9j
b25maWdfOworICAgIGNvbmZpZy5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IHJ0Y3BfcmVwb3J0
X2ludGVydmFsX21zXzsKIAogICAgIGltcGxfLnJlc2V0KG5ldyBNb2R1bGVSdHBSdGNwSW1wbChj
b25maWcpKTsKICAgICBpbXBsXy0+U2V0UlRDUFN0YXR1cyhSdGNwTW9kZTo6a0NvbXBvdW5kKTsK
QEAgLTY0OCwxMSArNjQzLDggQEAgVEVTVF9GKFJ0cFJ0Y3BJbXBsVGVzdCwgU2VuZHNLZWVwYWxp
dmVBZnRlclRpbW91dCkgewogVEVTVF9GKFJ0cFJ0Y3BJbXBsVGVzdCwgQ29uZmlndXJhYmxlUnRj
cFJlcG9ydEludGVydmFsKSB7CiAgIGNvbnN0IGludCBrVmlkZW9SZXBvcnRJbnRlcnZhbCA9IDMw
MDA7CiAKLSAgUnRjcEludGVydmFsQ29uZmlnIGNvbmZpZzsKLSAgY29uZmlnLnZpZGVvX2ludGVy
dmFsX21zID0ga1ZpZGVvUmVwb3J0SW50ZXJ2YWw7Ci0KICAgLy8gUmVjcmVhdGUgc2VuZGVyIGlt
cGwgd2l0aCBuZXcgY29uZmlndXJhdGlvbiwgYW5kIHJlZG8gc2V0dXAuCi0gIHNlbmRlcl8uU2V0
UnRjcEludGVydmFsQ29uZmlnQW5kUmVzZXQoY29uZmlnKTsKKyAgc2VuZGVyXy5TZXRSdGNwUmVw
b3J0SW50ZXJ2YWxBbmRSZXNldChrVmlkZW9SZXBvcnRJbnRlcnZhbCk7CiAgIFNldFVwKCk7CiAK
ICAgU2VuZEZyYW1lKCZzZW5kZXJfLCBrQmFzZUxheWVyVGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9zZW5kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyLmNjCmluZGV4IDlmMTBjNDBl
NTc1NDAyNjk1NTIzNDg1MjAwNzE5N2UxNzViZDczNjkuLmRkZjkxZjVmNWEyZDU4MGQ1Zjk5ZmY3
ZjkyZTc3N2Y0MDQzNmUwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3NlbmRlci5jYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPHV0
aWxpdHk+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9ydHBfcGFja2V0X291dGdvaW5nLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvci90ZXN0L2J3ZV90ZXN0X2xvZ2dpbmcuaCIKQEAgLTk0LDE0ICs5NSw2IEBA
IGNvbnN0IGNoYXIqIEZyYW1lVHlwZVRvU3RyaW5nKEZyYW1lVHlwZSBmcmFtZV90eXBlKSB7CiAg
IH0KICAgcmV0dXJuICIiOwogfQotCi12b2lkIENvdW50UGFja2V0KFJ0cFBhY2tldENvdW50ZXIq
IGNvdW50ZXIsIGNvbnN0IFJ0cFBhY2tldFRvU2VuZCYgcGFja2V0KSB7Ci0gICsrY291bnRlci0+
cGFja2V0czsKLSAgY291bnRlci0+aGVhZGVyX2J5dGVzICs9IHBhY2tldC5oZWFkZXJzX3NpemUo
KTsKLSAgY291bnRlci0+cGFkZGluZ19ieXRlcyArPSBwYWNrZXQucGFkZGluZ19zaXplKCk7Ci0g
IGNvdW50ZXItPnBheWxvYWRfYnl0ZXMgKz0gcGFja2V0LnBheWxvYWRfc2l6ZSgpOwotfQotCiB9
ICAvLyBuYW1lc3BhY2UKIAogUlRQU2VuZGVyOjpSVFBTZW5kZXIoCkBAIC0xMTksMjQgKzExMiwz
MyBAQCBSVFBTZW5kZXI6OlJUUFNlbmRlcigKICAgICBTZW5kUGFja2V0T2JzZXJ2ZXIqIHNlbmRf
cGFja2V0X29ic2VydmVyLAogICAgIFJhdGVMaW1pdGVyKiByZXRyYW5zbWlzc2lvbl9yYXRlX2xp
bWl0ZXIsCiAgICAgT3ZlcmhlYWRPYnNlcnZlciogb3ZlcmhlYWRfb2JzZXJ2ZXIsCi0gICAgYm9v
bCBwb3B1bGF0ZV9uZXR3b3JrMl90aW1lc3RhbXApCisgICAgYm9vbCBwb3B1bGF0ZV9uZXR3b3Jr
Ml90aW1lc3RhbXAsCisgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRv
ciwKKyAgICBib29sIHJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbiwKKyAgICBib29sIGV4dG1hcF9h
bGxvd19taXhlZCkKICAgICA6IGNsb2NrXyhjbG9jayksCiAgICAgICAvLyBUT0RPKGhvbG1lcik6
IFJlbW92ZSB0aGlzIGNvbnZlcnNpb24/CiAgICAgICBjbG9ja19kZWx0YV9tc18oY2xvY2tfLT5U
aW1lSW5NaWxsaXNlY29uZHMoKSAtIHJ0Yzo6VGltZU1pbGxpcygpKSwKICAgICAgIHJhbmRvbV8o
Y2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSksCiAgICAgICBhdWRpb19jb25maWd1cmVkXyhh
dWRpbyksCiAgICAgICBhdWRpb18oYXVkaW8gPyBuZXcgUlRQU2VuZGVyQXVkaW8oY2xvY2ssIHRo
aXMpIDogbnVsbHB0ciksCi0gICAgICB2aWRlb18oYXVkaW8gPyBudWxscHRyIDogbmV3IFJUUFNl
bmRlclZpZGVvKGNsb2NrLCB0aGlzLCBmbGV4ZmVjX3NlbmRlcikpLAorICAgICAgdmlkZW9fKGF1
ZGlvID8gbnVsbHB0cgorICAgICAgICAgICAgICAgICAgIDogbmV3IFJUUFNlbmRlclZpZGVvKGNs
b2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleGZlY19zZW5kZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZW5jcnlwdG9yLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVfZnJhbWVfZW5jcnlw
dGlvbikpLAogICAgICAgcGFjZWRfc2VuZGVyXyhwYWNlZF9zZW5kZXIpLAogICAgICAgdHJhbnNw
b3J0X3NlcXVlbmNlX251bWJlcl9hbGxvY2F0b3JfKHNlcXVlbmNlX251bWJlcl9hbGxvY2F0b3Ip
LAogICAgICAgdHJhbnNwb3J0X2ZlZWRiYWNrX29ic2VydmVyXyh0cmFuc3BvcnRfZmVlZGJhY2tf
b2JzZXJ2ZXIpLAogICAgICAgbGFzdF9jYXB0dXJlX3RpbWVfbXNfc2VudF8oMCksCiAgICAgICB0
cmFuc3BvcnRfKHRyYW5zcG9ydCksCi0gICAgICBzZW5kaW5nX21lZGlhXyh0cnVlKSwgICAgICAg
ICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBzZW5kaW5nIG1lZGlhLgorICAgICAgc2VuZGluZ19t
ZWRpYV8odHJ1ZSksICAvLyBEZWZhdWx0IHRvIHNlbmRpbmcgbWVkaWEuCisgICAgICBmb3JjZV9w
YXJ0X29mX2FsbG9jYXRpb25fKGZhbHNlKSwKICAgICAgIG1heF9wYWNrZXRfc2l6ZV8oSVBfUEFD
S0VUX1NJWkUgLSAyOCksICAvLyBEZWZhdWx0IGlzIElQLXY0L1VEUC4KICAgICAgIGxhc3RfcGF5
bG9hZF90eXBlXygtMSksCiAgICAgICBwYXlsb2FkX3R5cGVfbWFwXygpLAotICAgICAgcnRwX2hl
YWRlcl9leHRlbnNpb25fbWFwXygpLAorICAgICAgcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXyhl
eHRtYXBfYWxsb3dfbWl4ZWQpLAogICAgICAgcGFja2V0X2hpc3RvcnlfKGNsb2NrKSwKICAgICAg
IGZsZXhmZWNfcGFja2V0X2hpc3RvcnlfKGNsb2NrKSwKICAgICAgIC8vIFN0YXRpc3RpY3MKQEAg
LTE2Nyw5ICsxNjksNyBAQCBSVFBTZW5kZXI6OlJUUFNlbmRlcigKICAgICAgIG92ZXJoZWFkX29i
c2VydmVyXyhvdmVyaGVhZF9vYnNlcnZlciksCiAgICAgICBwb3B1bGF0ZV9uZXR3b3JrMl90aW1l
c3RhbXBfKHBvcHVsYXRlX25ldHdvcmsyX3RpbWVzdGFtcCksCiAgICAgICBzZW5kX3NpZGVfYndl
X3dpdGhfb3ZlcmhlYWRfKAotICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxl
ZCgiV2ViUlRDLVNlbmRTaWRlQndlLVdpdGhPdmVyaGVhZCIpKSwKLSAgICAgIHVubGltaXRlZF9y
ZXRyYW5zbWlzc2lvbl9leHBlcmltZW50XygKLSAgICAgICAgICBmaWVsZF90cmlhbDo6SXNFbmFi
bGVkKCJXZWJSVEMtVW5saW1pdGVkU2NyZWVuc2hhcmVSZXRyYW5zbWlzc2lvbiIpKSB7CisgICAg
ICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtU2VuZFNpZGVCd2Ut
V2l0aE92ZXJoZWFkIikpIHsKICAgLy8gVGhpcyByYW5kb20gaW5pdGlhbGl6YXRpb24gaXMgbm90
IGludGVuZGVkIHRvIGJlIGNyeXB0b2dyYXBoaWMgc3Ryb25nLgogICB0aW1lc3RhbXBfb2Zmc2V0
XyA9IHJhbmRvbV8uUmFuZDx1aW50MzJfdD4oKTsKICAgLy8gUmFuZG9tIHN0YXJ0LCAxNiBiaXRz
LiBDYW4ndCBiZSAwLgpAQCAtMjM5LDYgKzIzOSwxMSBAQCB1aW50MzJfdCBSVFBTZW5kZXI6Ok5h
Y2tPdmVyaGVhZFJhdGUoKSBjb25zdCB7CiAgIHJldHVybiBuYWNrX2JpdHJhdGVfc2VudF8uUmF0
ZShjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKS52YWx1ZV9vcigwKTsKIH0KIAordm9pZCBS
VFBTZW5kZXI6OlNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsK
KyAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2VuZF9jcml0c2VjdF8pOworICBydHBfaGVhZGVyX2V4
dGVuc2lvbl9tYXBfLlNldEV4dG1hcEFsbG93TWl4ZWQoZXh0bWFwX2FsbG93X21peGVkKTsKK30K
KwogaW50MzJfdCBSVFBTZW5kZXI6OlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVu
c2lvblR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90IGlkKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3Rf
KTsKQEAgLTI2MCwxMyArMjY1LDEyIEBAIGludDMyX3QgUlRQU2VuZGVyOjpEZXJlZ2lzdGVyUnRw
SGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUgdHlwZSkgewogICByZXR1cm4gcnRwX2hl
YWRlcl9leHRlbnNpb25fbWFwXy5EZXJlZ2lzdGVyKHR5cGUpOwogfQogCi1pbnQzMl90IFJUUFNl
bmRlcjo6UmVnaXN0ZXJQYXlsb2FkKAotICAgIGNvbnN0IGNoYXIgcGF5bG9hZF9uYW1lW1JUUF9Q
QVlMT0FEX05BTUVfU0laRV0sCi0gICAgaW50OF90IHBheWxvYWRfbnVtYmVyLAotICAgIHVpbnQz
Ml90IGZyZXF1ZW5jeSwKLSAgICBzaXplX3QgY2hhbm5lbHMsCi0gICAgdWludDMyX3QgcmF0ZSkg
ewotICBSVENfRENIRUNLX0xUKHN0cmxlbihwYXlsb2FkX25hbWUpLCBSVFBfUEFZTE9BRF9OQU1F
X1NJWkUpOworaW50MzJfdCBSVFBTZW5kZXI6OlJlZ2lzdGVyUGF5bG9hZChhYnNsOjpzdHJpbmdf
dmlldyBwYXlsb2FkX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDhfdCBwYXlsb2FkX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgZnJlcXVlbmN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IHJhdGUpIHsKKyAgUlRDX0RDSEVDS19MVChwYXlsb2FkX25hbWUuc2l6ZSgpLCBSVFBfUEFZ
TE9BRF9OQU1FX1NJWkUpOwogICBydGM6OkNyaXRTY29wZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7
CiAKICAgc3RkOjptYXA8aW50OF90LCBSdHBVdGlsaXR5OjpQYXlsb2FkKj46Oml0ZXJhdG9yIGl0
ID0KQEAgLTI3OCw4ICsyODIsNyBAQCBpbnQzMl90IFJUUFNlbmRlcjo6UmVnaXN0ZXJQYXlsb2Fk
KAogICAgIFJUQ19EQ0hFQ0socGF5bG9hZCk7CiAKICAgICAvLyBDaGVjayBpZiBpdCdzIHRoZSBz
YW1lIGFzIHdlIGFscmVhZHkgaGF2ZS4KLSAgICBpZiAoUnRwVXRpbGl0eTo6U3RyaW5nQ29tcGFy
ZShwYXlsb2FkLT5uYW1lLCBwYXlsb2FkX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUlRQX1BBWUxPQURfTkFNRV9TSVpFIC0gMSkpIHsKKyAgICBpZiAoYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShwYXlsb2FkLT5uYW1lLCBwYXlsb2FkX25hbWUpKSB7CiAgICAgICBpZiAo
YXVkaW9fY29uZmlndXJlZF8gJiYgcGF5bG9hZC0+dHlwZVNwZWNpZmljLmlzX2F1ZGlvKCkpIHsK
ICAgICAgICAgYXV0byYgcCA9IHBheWxvYWQtPnR5cGVTcGVjaWZpYy5hdWRpb19wYXlsb2FkKCk7
CiAgICAgICAgIGlmIChydGM6OlNhZmVFcShwLmZvcm1hdC5jbG9ja3JhdGVfaHosIGZyZXF1ZW5j
eSkgJiYKQEAgLTQyNiwxMSArNDI5LDYgQEAgYm9vbCBSVFBTZW5kZXI6OlNlbmRPdXRnb2luZ0Rh
dGEoRnJhbWVUeXBlIGZyYW1lX3R5cGUsCiAgICAgICAqdHJhbnNwb3J0X2ZyYW1lX2lkX291dCA9
IHJ0cF90aW1lc3RhbXA7CiAgICAgaWYgKCFzZW5kaW5nX21lZGlhXykKICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgLy8gQ2FjaGUgdmlkZW8gY29udGVudCB0eXBlLgotICAgIGlmICghYXVkaW9f
Y29uZmlndXJlZF8gJiYgcnRwX2hlYWRlcikgewotICAgICAgdmlkZW9fY29udGVudF90eXBlXyA9
IHJ0cF9oZWFkZXItPmNvbnRlbnRfdHlwZTsKLSAgICB9CiAgIH0KICAgVmlkZW9Db2RlY1R5cGUg
dmlkZW9fdHlwZSA9IGtWaWRlb0NvZGVjR2VuZXJpYzsKICAgaWYgKENoZWNrUGF5bG9hZFR5cGUo
cGF5bG9hZF90eXBlLCAmdmlkZW9fdHlwZSkgIT0gMCkgewpAQCAtNjE5LDEwICs2MTcsMTYgQEAg
c2l6ZV90IFJUUFNlbmRlcjo6U2VuZFBhZERhdGEoc2l6ZV90IGJ5dGVzLAogICAgIFBhY2tldE9w
dGlvbnMgb3B0aW9uczsKICAgICAvLyBQYWRkaW5nIHBhY2tldHMgYXJlIG5ldmVyIHJldHJhbnNt
aXNzaW9ucy4KICAgICBvcHRpb25zLmlzX3JldHJhbnNtaXQgPSBmYWxzZTsKLSAgICBib29sIGhh
c190cmFuc3BvcnRfc2VxX251bSA9Ci0gICAgICAgIFVwZGF0ZVRyYW5zcG9ydFNlcXVlbmNlTnVt
YmVyKCZwYWRkaW5nX3BhY2tldCwgJm9wdGlvbnMucGFja2V0X2lkKTsKLSAgICBwYWRkaW5nX3Bh
Y2tldC5TZXRQYWRkaW5nKHBhZGRpbmdfYnl0ZXNfaW5fcGFja2V0LCAmcmFuZG9tXyk7Ci0KKyAg
ICBib29sIGhhc190cmFuc3BvcnRfc2VxX251bTsKKyAgICB7CisgICAgICBydGM6OkNyaXRTY29w
ZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7CisgICAgICBoYXNfdHJhbnNwb3J0X3NlcV9udW0gPQor
ICAgICAgICAgIFVwZGF0ZVRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKCZwYWRkaW5nX3BhY2tldCwg
Jm9wdGlvbnMucGFja2V0X2lkKTsKKyAgICAgIG9wdGlvbnMuaW5jbHVkZWRfaW5fYWxsb2NhdGlv
biA9CisgICAgICAgICAgaGFzX3RyYW5zcG9ydF9zZXFfbnVtIHx8IGZvcmNlX3BhcnRfb2ZfYWxs
b2NhdGlvbl87CisgICAgICBvcHRpb25zLmluY2x1ZGVkX2luX2ZlZWRiYWNrID0gaGFzX3RyYW5z
cG9ydF9zZXFfbnVtOworICAgIH0KKyAgICBwYWRkaW5nX3BhY2tldC5TZXRQYWRkaW5nKHBhZGRp
bmdfYnl0ZXNfaW5fcGFja2V0KTsKICAgICBpZiAoaGFzX3RyYW5zcG9ydF9zZXFfbnVtKSB7CiAg
ICAgICBBZGRQYWNrZXRUb1RyYW5zcG9ydEZlZWRiYWNrKG9wdGlvbnMucGFja2V0X2lkLCBwYWRk
aW5nX3BhY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFjaW5nX2lu
Zm8pOwpAQCAtNjU0LDcgKzY1OCw3IEBAIGludDMyX3QgUlRQU2VuZGVyOjpSZVNlbmRQYWNrZXQo
dWludDE2X3QgcGFja2V0X2lkKSB7CiAgIC8vIFRyeSB0byBmaW5kIHBhY2tldCBpbiBSVFAgcGFj
a2V0IGhpc3RvcnkuIEFsc28gdmVyaWZ5IFJUVCBoZXJlLCBzbyB0aGF0IHdlCiAgIC8vIGRvbid0
IHJldHJhbnNtaXQgdG9vIG9mdGVuLgogICBhYnNsOjpvcHRpb25hbDxSdHBQYWNrZXRIaXN0b3J5
OjpQYWNrZXRTdGF0ZT4gc3RvcmVkX3BhY2tldCA9Ci0gICAgICBwYWNrZXRfaGlzdG9yeV8uR2V0
UGFja2V0U3RhdGUocGFja2V0X2lkLCB0cnVlKTsKKyAgICAgIHBhY2tldF9oaXN0b3J5Xy5HZXRQ
YWNrZXRTdGF0ZShwYWNrZXRfaWQpOwogICBpZiAoIXN0b3JlZF9wYWNrZXQpIHsKICAgICAvLyBQ
YWNrZXQgbm90IGZvdW5kLgogICAgIHJldHVybiAwOwpAQCAtNjY0LDIwICs2NjgsOSBAQCBpbnQz
Ml90IFJUUFNlbmRlcjo6UmVTZW5kUGFja2V0KHVpbnQxNl90IHBhY2tldF9pZCkgewogCiAgIC8v
IFNraXAgcmV0cmFuc21pc3Npb24gcmF0ZSBjaGVjayBpZiBub3QgY29uZmlndXJlZC4KICAgaWYg
KHJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8pIHsKLSAgICAvLyBTa2lwIHJldHJhbnNtaXNz
aW9uIHJhdGUgY2hlY2sgaWYgc2VuZGluZyBzY3JlZW5zaGFyZSBhbmQgdGhlIGV4cGVyaW1lbnQK
LSAgICAvLyBpcyBvbi4KLSAgICBib29sIHNraXBfcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdCA9
IGZhbHNlOwotICAgIGlmICh1bmxpbWl0ZWRfcmV0cmFuc21pc3Npb25fZXhwZXJpbWVudF8pIHsK
LSAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsKLSAgICAgIHNraXBf
cmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdCA9Ci0gICAgICAgICAgdmlkZW9fY29udGVudF90eXBl
XyAmJgotICAgICAgICAgIHZpZGVvY29udGVudHR5cGVoZWxwZXJzOjpJc1NjcmVlbnNoYXJlKCp2
aWRlb19jb250ZW50X3R5cGVfKTsKLSAgICB9Ci0KICAgICAvLyBDaGVjayBpZiB3ZSdyZSBvdmVy
dXNpbmcgcmV0cmFuc21pc3Npb24gYml0cmF0ZS4KICAgICAvLyBUT0RPKHNwcmFuZyk6IEFkZCBo
aXN0b2dyYW1zIGZvciBuYWNrIHN1Y2Nlc3Mgb3IgZmFpbHVyZSByZWFzb25zLgotICAgIGlmICgh
c2tpcF9yZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ICYmCi0gICAgICAgICFyZXRyYW5zbWlzc2lv
bl9yYXRlX2xpbWl0ZXJfLT5UcnlVc2VSYXRlKHBhY2tldF9zaXplKSkgeworICAgIGlmICghcmV0
cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXy0+VHJ5VXNlUmF0ZShwYWNrZXRfc2l6ZSkpIHsKICAg
ICAgIHJldHVybiAtMTsKICAgICB9CiAgIH0KQEAgLTY5Niw3ICs2ODksNyBAQCBpbnQzMl90IFJU
UFNlbmRlcjo6UmVTZW5kUGFja2V0KHVpbnQxNl90IHBhY2tldF9pZCkgewogICB9CiAKICAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0ID0KLSAgICAgIHBhY2tldF9oaXN0
b3J5Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShwYWNrZXRfaWQsIHRydWUpOworICAgICAgcGFj
a2V0X2hpc3RvcnlfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKHBhY2tldF9pZCk7CiAgIGlmICgh
cGFja2V0KSB7CiAgICAgLy8gUGFja2V0IGNvdWxkIHRoZW9yZXRpY2FsbHkgdGltZSBvdXQgYmV0
d2VlbiB0aGUgZmlyc3QgY2hlY2sgYW5kIHRoaXMgb25lLgogICAgIHJldHVybiAwOwpAQCAtNzc0
LDE3ICs3NjcsMTQgQEAgYm9vbCBSVFBTZW5kZXI6OlRpbWVUb1NlbmRQYWNrZXQodWludDMyX3Qg
c3NyYywKICAgICByZXR1cm4gdHJ1ZTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9T
ZW5kPiBwYWNrZXQ7Ci0gIC8vIE5vIG5lZWQgdG8gdmVyaWZ5IFJUVCBoZXJlLCBpdCBoYXMgYWxy
ZWFkeSBiZWVuIGNoZWNrZWQgYmVmb3JlIHB1dHRpbmcgdGhlCi0gIC8vIHBhY2tldCBpbnRvIHRo
ZSBwYWNlci4gQnV0IF9kb18gdXBkYXRlIHRoZSBzZW5kIHRpbWUuCiAgIGlmIChzc3JjID09IFNT
UkMoKSkgewotICAgIHBhY2tldCA9IHBhY2tldF9oaXN0b3J5Xy5HZXRQYWNrZXRBbmRTZXRTZW5k
VGltZShzZXF1ZW5jZV9udW1iZXIsIGZhbHNlKTsKKyAgICBwYWNrZXQgPSBwYWNrZXRfaGlzdG9y
eV8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoc2VxdWVuY2VfbnVtYmVyKTsKICAgfSBlbHNlIGlm
IChzc3JjID09IEZsZXhmZWNTc3JjKCkpIHsKLSAgICBwYWNrZXQgPQotICAgICAgICBmbGV4ZmVj
X3BhY2tldF9oaXN0b3J5Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShzZXF1ZW5jZV9udW1iZXIs
IGZhbHNlKTsKKyAgICBwYWNrZXQgPSBmbGV4ZmVjX3BhY2tldF9oaXN0b3J5Xy5HZXRQYWNrZXRB
bmRTZXRTZW5kVGltZShzZXF1ZW5jZV9udW1iZXIpOwogICB9CiAKICAgaWYgKCFwYWNrZXQpIHsK
LSAgICAvLyBQYWNrZXQgY2Fubm90IGJlIGZvdW5kLgorICAgIC8vIFBhY2tldCBjYW5ub3QgYmUg
Zm91bmQgb3Igd2FzIHJlc2VuZCB0b28gcmVjZW50bHkuCiAgICAgcmV0dXJuIHRydWU7CiAgIH0K
IApAQCAtODM4LDcgKzgyOCwxNiBAQCBib29sIFJUUFNlbmRlcjo6UHJlcGFyZUFuZFNlbmRQYWNr
ZXQoc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0LAogICAvLyBFLmcuIFJU
UFNlbmRlcjo6VHJ5U2VuZFJlZHVuZGFudFBheWxvYWRzIGNhbGxzIFByZXBhcmVBbmRTZW5kUGFj
a2V0IHdpdGgKICAgLy8gc2VuZF9vdmVyX3J0eCA9IHRydWUgYnV0IGlzX3JldHJhbnNtaXQgPSBm
YWxzZS4KICAgb3B0aW9ucy5pc19yZXRyYW5zbWl0ID0gaXNfcmV0cmFuc21pdCB8fCBzZW5kX292
ZXJfcnR4OwotICBpZiAoVXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIocGFja2V0X3RvX3Nl
bmQsICZvcHRpb25zLnBhY2tldF9pZCkpIHsKKyAgYm9vbCBoYXNfdHJhbnNwb3J0X3NlcV9udW07
CisgIHsKKyAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7CisgICAgaGFz
X3RyYW5zcG9ydF9zZXFfbnVtID0KKyAgICAgICAgVXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1i
ZXIocGFja2V0X3RvX3NlbmQsICZvcHRpb25zLnBhY2tldF9pZCk7CisgICAgb3B0aW9ucy5pbmNs
dWRlZF9pbl9hbGxvY2F0aW9uID0KKyAgICAgICAgaGFzX3RyYW5zcG9ydF9zZXFfbnVtIHx8IGZv
cmNlX3BhcnRfb2ZfYWxsb2NhdGlvbl87CisgICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9mZWVkYmFj
ayA9IGhhc190cmFuc3BvcnRfc2VxX251bTsKKyAgfQorICBpZiAoaGFzX3RyYW5zcG9ydF9zZXFf
bnVtKSB7CiAgICAgQWRkUGFja2V0VG9UcmFuc3BvcnRGZWVkYmFjayhvcHRpb25zLnBhY2tldF9p
ZCwgKnBhY2tldF90b19zZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFj
aW5nX2luZm8pOwogICB9CkBAIC04NzYsMTMgKzg3NSwxMyBAQCB2b2lkIFJUUFNlbmRlcjo6VXBk
YXRlUnRwU3RhdHMoY29uc3QgUnRwUGFja2V0VG9TZW5kJiBwYWNrZXQsCiAgICAgY291bnRlcnMt
PmZpcnN0X3BhY2tldF90aW1lX21zID0gbm93X21zOwogCiAgIGlmIChJc0ZlY1BhY2tldChwYWNr
ZXQpKQotICAgIENvdW50UGFja2V0KCZjb3VudGVycy0+ZmVjLCBwYWNrZXQpOworICAgIGNvdW50
ZXJzLT5mZWMuQWRkUGFja2V0KHBhY2tldCk7CiAKICAgaWYgKGlzX3JldHJhbnNtaXQpIHsKLSAg
ICBDb3VudFBhY2tldCgmY291bnRlcnMtPnJldHJhbnNtaXR0ZWQsIHBhY2tldCk7CisgICAgY291
bnRlcnMtPnJldHJhbnNtaXR0ZWQuQWRkUGFja2V0KHBhY2tldCk7CiAgICAgbmFja19iaXRyYXRl
X3NlbnRfLlVwZGF0ZShwYWNrZXQuc2l6ZSgpLCBub3dfbXMpOwogICB9Ci0gIENvdW50UGFja2V0
KCZjb3VudGVycy0+dHJhbnNtaXR0ZWQsIHBhY2tldCk7CisgIGNvdW50ZXJzLT50cmFuc21pdHRl
ZC5BZGRQYWNrZXQocGFja2V0KTsKIAogICBpZiAocnRwX3N0YXRzX2NhbGxiYWNrXykKICAgICBy
dHBfc3RhdHNfY2FsbGJhY2tfLT5EYXRhQ291bnRlcnNVcGRhdGVkKCpjb3VudGVycywgcGFja2V0
LlNzcmMoKSk7CkBAIC05MjAsMTUgKzkxOSw2IEBAIGJvb2wgUlRQU2VuZGVyOjpTZW5kVG9OZXR3
b3JrKHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tldCwKICAgUlRDX0RDSEVD
SyhwYWNrZXQpOwogICBpbnQ2NF90IG5vd19tcyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRz
KCk7CiAKLSAgLy8gfGNhcHR1cmVfdGltZV9tc3wgPD0gMCBpcyBjb25zaWRlcmVkIGludmFsaWQu
Ci0gIC8vIFRPRE8oaG9sbWVyKTogVGhpcyBzaG91bGQgYmUgY2hhbmdlZCBhbGwgb3ZlciBWaWRl
byBFbmdpbmUgc28gdGhhdCBuZWdhdGl2ZQotICAvLyB0aW1lIGlzIGNvbnNpZGVyIGludmFsaWQs
IHdoaWxlIDAgaXMgY29uc2lkZXJlZCBhIHZhbGlkIHRpbWUuCi0gIGlmIChwYWNrZXQtPmNhcHR1
cmVfdGltZV9tcygpID4gMCkgewotICAgIHBhY2tldC0+U2V0RXh0ZW5zaW9uPFRyYW5zbWlzc2lv
bk9mZnNldD4oCi0gICAgICAgIGtUaW1lc3RhbXBUaWNrc1Blck1zICogKG5vd19tcyAtIHBhY2tl
dC0+Y2FwdHVyZV90aW1lX21zKCkpKTsKLSAgfQotICBwYWNrZXQtPlNldEV4dGVuc2lvbjxBYnNv
bHV0ZVNlbmRUaW1lPihBYnNvbHV0ZVNlbmRUaW1lOjpNc1RvMjRCaXRzKG5vd19tcykpOwotCiAg
IGlmICh2aWRlb18pIHsKICAgICBCV0VfVEVTVF9MT0dHSU5HX1BMT1RfV0lUSF9TU1JDKDEsICJW
aWRlb1RvdEJpdHJhdGVfa2JwcyIsIG5vd19tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFjdHVhbFNlbmRCaXRyYXRlS2JpdCgpLCBwYWNrZXQtPlNzcmMoKSk7CkBAIC05
NzEsNyArOTYxLDMxIEBAIGJvb2wgUlRQU2VuZGVyOjpTZW5kVG9OZXR3b3JrKHN0ZDo6dW5pcXVl
X3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tldCwKIAogICBQYWNrZXRPcHRpb25zIG9wdGlvbnM7
CiAgIG9wdGlvbnMuaXNfcmV0cmFuc21pdCA9IGZhbHNlOwotICBpZiAoVXBkYXRlVHJhbnNwb3J0
U2VxdWVuY2VOdW1iZXIocGFja2V0LmdldCgpLCAmb3B0aW9ucy5wYWNrZXRfaWQpKSB7CisKKyAg
Ly8gfGNhcHR1cmVfdGltZV9tc3wgPD0gMCBpcyBjb25zaWRlcmVkIGludmFsaWQuCisgIC8vIFRP
RE8oaG9sbWVyKTogVGhpcyBzaG91bGQgYmUgY2hhbmdlZCBhbGwgb3ZlciBWaWRlbyBFbmdpbmUg
c28gdGhhdCBuZWdhdGl2ZQorICAvLyB0aW1lIGlzIGNvbnNpZGVyIGludmFsaWQsIHdoaWxlIDAg
aXMgY29uc2lkZXJlZCBhIHZhbGlkIHRpbWUuCisgIGlmIChwYWNrZXQtPmNhcHR1cmVfdGltZV9t
cygpID4gMCkgeworICAgIHBhY2tldC0+U2V0RXh0ZW5zaW9uPFRyYW5zbWlzc2lvbk9mZnNldD4o
CisgICAgICAgIGtUaW1lc3RhbXBUaWNrc1Blck1zICogKG5vd19tcyAtIHBhY2tldC0+Y2FwdHVy
ZV90aW1lX21zKCkpKTsKKworICAgIGlmIChwb3B1bGF0ZV9uZXR3b3JrMl90aW1lc3RhbXBfICYm
CisgICAgICAgIHBhY2tldC0+SGFzRXh0ZW5zaW9uPFZpZGVvVGltaW5nRXh0ZW5zaW9uPigpKSB7
CisgICAgICBwYWNrZXQtPnNldF9uZXR3b3JrMl90aW1lX21zKG5vd19tcyk7CisgICAgfQorICB9
CisgIHBhY2tldC0+U2V0RXh0ZW5zaW9uPEFic29sdXRlU2VuZFRpbWU+KEFic29sdXRlU2VuZFRp
bWU6Ok1zVG8yNEJpdHMobm93X21zKSk7CisKKyAgYm9vbCBoYXNfdHJhbnNwb3J0X3NlcV9udW07
CisgIHsKKyAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7CisgICAgaGFz
X3RyYW5zcG9ydF9zZXFfbnVtID0KKyAgICAgICAgVXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1i
ZXIocGFja2V0LmdldCgpLCAmb3B0aW9ucy5wYWNrZXRfaWQpOworICAgIG9wdGlvbnMuaW5jbHVk
ZWRfaW5fYWxsb2NhdGlvbiA9CisgICAgICAgIGhhc190cmFuc3BvcnRfc2VxX251bSB8fCBmb3Jj
ZV9wYXJ0X29mX2FsbG9jYXRpb25fOworICAgIG9wdGlvbnMuaW5jbHVkZWRfaW5fZmVlZGJhY2sg
PSBoYXNfdHJhbnNwb3J0X3NlcV9udW07CisgIH0KKyAgaWYgKGhhc190cmFuc3BvcnRfc2VxX251
bSkgewogICAgIEFkZFBhY2tldFRvVHJhbnNwb3J0RmVlZGJhY2sob3B0aW9ucy5wYWNrZXRfaWQs
ICpwYWNrZXQuZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNlZFBh
Y2tldEluZm8oKSk7CiAgIH0KQEAgLTExNDEsOCArMTE1NSwxNSBAQCB2b2lkIFJUUFNlbmRlcjo6
R2V0RGF0YUNvdW50ZXJzKFN0cmVhbURhdGFDb3VudGVycyogcnRwX3N0YXRzLAogCiBzdGQ6OnVu
aXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBSVFBTZW5kZXI6OkFsbG9jYXRlUGFja2V0KCkgY29u
c3QgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7Ci0gIHN0ZDo6dW5p
cXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tldCgKLSAgICAgIG5ldyBSdHBQYWNrZXRUb1Nl
bmQoJnJ0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcF8sIG1heF9wYWNrZXRfc2l6ZV8pKTsKKyAgLy8g
VE9ETyhkYW5pbGNoYXApOiBGaW5kIGJldHRlciBtb3RpdmF0b3IgYW5kIHZhbHVlIGZvciBleHRy
YSBjYXBhY2l0eS4KKyAgLy8gUnRwUGFja2V0aXplciBtaWdodCBzbGlnaHRseSBtaXNjYWx1bGF0
ZSBuZWVkZWQgc2l6ZSwKKyAgLy8gU1JUUCBtYXkgYmVuZWZpdCBmcm9tIGV4dHJhIHNwYWNlIGlu
IHRoZSBidWZmZXIgYW5kIGRvIGVuY3J5cHRpb24gaW4gcGxhY2UKKyAgLy8gc2F2aW5nIHJlYWxs
b2NhdGlvbi4KKyAgLy8gV2hpbGUgc2VuZGluZyBzbGlnaHRseSBvdmVyc2l6ZWQgcGFja2V0IGlu
Y3JlYXNlIGNoYW5jZSBvZiBkcm9wcGVkIHBhY2tldCwKKyAgLy8gaXQgaXMgYmV0dGVyIHRoYW4g
Y3Jhc2ggb24gZHJvcCBwYWNrZXQgd2l0aG91dCB0cnlpbmcgdG8gc2VuZCBpdC4KKyAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQga0V4dHJhQ2FwYWNpdHkgPSAxNjsKKyAgYXV0byBwYWNrZXQgPSBhYnNs
OjptYWtlX3VuaXF1ZTxSdHBQYWNrZXRUb1NlbmQ+KAorICAgICAgJnJ0cF9oZWFkZXJfZXh0ZW5z
aW9uX21hcF8sIG1heF9wYWNrZXRfc2l6ZV8gKyBrRXh0cmFDYXBhY2l0eSk7CiAgIFJUQ19EQ0hF
Q0soc3NyY18pOwogICBwYWNrZXQtPlNldFNzcmMoKnNzcmNfKTsKICAgcGFja2V0LT5TZXRDc3Jj
cyhjc3Jjc18pOwpAQCAtMTE4MSwxMCArMTIwMiw5IEBAIGJvb2wgUlRQU2VuZGVyOjpBc3NpZ25T
ZXF1ZW5jZU51bWJlcihSdHBQYWNrZXRUb1NlbmQqIHBhY2tldCkgewogfQogCiBib29sIFJUUFNl
bmRlcjo6VXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoUnRwUGFja2V0VG9TZW5kKiBwYWNr
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBw
YWNrZXRfaWQpIGNvbnN0IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQqIHBhY2tldF9pZCkgewogICBSVENfRENIRUNLKHBhY2tldCk7CiAgIFJUQ19E
Q0hFQ0socGFja2V0X2lkKTsKLSAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2VuZF9jcml0c2VjdF8p
OwogICBpZiAoIXJ0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcF8uSXNSZWdpc3RlcmVkKFRyYW5zcG9y
dFNlcXVlbmNlTnVtYmVyOjprSWQpKQogICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTIwOSw2ICsx
MjI5LDExIEBAIGJvb2wgUlRQU2VuZGVyOjpTZW5kaW5nTWVkaWEoKSBjb25zdCB7CiAgIHJldHVy
biBzZW5kaW5nX21lZGlhXzsKIH0KIAordm9pZCBSVFBTZW5kZXI6OlNldEFzUGFydE9mQWxsb2Nh
dGlvbihib29sIHBhcnRfb2ZfYWxsb2NhdGlvbikgeworICBydGM6OkNyaXRTY29wZSBsb2NrKCZz
ZW5kX2NyaXRzZWN0Xyk7CisgIGZvcmNlX3BhcnRfb2ZfYWxsb2NhdGlvbl8gPSBwYXJ0X29mX2Fs
bG9jYXRpb247Cit9CisKIHZvaWQgUlRQU2VuZGVyOjpTZXRUaW1lc3RhbXBPZmZzZXQodWludDMy
X3QgdGltZXN0YW1wKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsK
ICAgdGltZXN0YW1wX29mZnNldF8gPSB0aW1lc3RhbXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfc2VuZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyLmgKaW5kZXggNWE5M2Q3YTUyMDIxZTE0
YzUwOGQ3NTRkMzA2ZTBhMmQ4ODRlYmYxYi4uZjliYmJkZDllMjJhMjNkZjAxZDIyYzE5ZDg3Y2M3
MmI2OWM2ZGNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9zZW5kZXIuaApAQCAtMTcsMTAgKzE3LDEwIEBACiAjaW5jbHVkZSA8dXRpbGl0eT4K
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcu
aCIKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5
X3ZpZXcuaCIKICNpbmNsdWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJhcGkv
dmlkZW8vdmlkZW9fY29udGVudF90eXBlLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAv
LyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1
ZGUvZmxleGZlY19zZW5kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUv
cnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmgiCkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCitjbGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsKIGNsYXNzIE92ZXJo
ZWFkT2JzZXJ2ZXI7CiBjbGFzcyBSYXRlTGltaXRlcjsKIGNsYXNzIFJ0Y0V2ZW50TG9nOwpAQCAt
NjMsNyArNjQsMTAgQEAgY2xhc3MgUlRQU2VuZGVyIHsKICAgICAgICAgICAgIFNlbmRQYWNrZXRP
YnNlcnZlciogc2VuZF9wYWNrZXRfb2JzZXJ2ZXIsCiAgICAgICAgICAgICBSYXRlTGltaXRlciog
bmFja19yYXRlX2xpbWl0ZXIsCiAgICAgICAgICAgICBPdmVyaGVhZE9ic2VydmVyKiBvdmVyaGVh
ZF9vYnNlcnZlciwKLSAgICAgICAgICAgIGJvb2wgcG9wdWxhdGVfbmV0d29yazJfdGltZXN0YW1w
KTsKKyAgICAgICAgICAgIGJvb2wgcG9wdWxhdGVfbmV0d29yazJfdGltZXN0YW1wLAorICAgICAg
ICAgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvciwKKyAgICAgICAg
ICAgIGJvb2wgcmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uLAorICAgICAgICAgICAgYm9vbCBleHRt
YXBfYWxsb3dfbWl4ZWQpOwogCiAgIH5SVFBTZW5kZXIoKTsKIApAQCAtNzUsNyArNzksNyBAQCBj
bGFzcyBSVFBTZW5kZXIgewogICB1aW50MzJfdCBGZWNPdmVyaGVhZFJhdGUoKSBjb25zdDsKICAg
dWludDMyX3QgTmFja092ZXJoZWFkUmF0ZSgpIGNvbnN0OwogCi0gIGludDMyX3QgUmVnaXN0ZXJQ
YXlsb2FkKGNvbnN0IGNoYXIqIHBheWxvYWRfbmFtZSwKKyAgaW50MzJfdCBSZWdpc3RlclBheWxv
YWQoYWJzbDo6c3RyaW5nX3ZpZXcgcGF5bG9hZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbnQ4X3QgcGF5bG9hZF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50MzJfdCBmcmVxdWVuY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHNpemVfdCBjaGFubmVscywKQEAgLTg2LDYgKzkwLDggQEAgY2xhc3MgUlRQU2VuZGVyIHsK
ICAgdm9pZCBTZXRTZW5kaW5nTWVkaWFTdGF0dXMoYm9vbCBlbmFibGVkKTsKICAgYm9vbCBTZW5k
aW5nTWVkaWEoKSBjb25zdDsKIAorICB2b2lkIFNldEFzUGFydE9mQWxsb2NhdGlvbihib29sIHBh
cnRfb2ZfYWxsb2NhdGlvbik7CisKICAgdm9pZCBHZXREYXRhQ291bnRlcnMoU3RyZWFtRGF0YUNv
dW50ZXJzKiBydHBfc3RhdHMsCiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbURhdGFDb3Vu
dGVycyogcnR4X3N0YXRzKSBjb25zdDsKIApAQCAtMTE0LDYgKzEyMCw4IEBAIGNsYXNzIFJUUFNl
bmRlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCogdHJhbnNwb3J0X2ZyYW1l
X2lkX291dCwKICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgZXhwZWN0ZWRfcmV0cmFu
c21pc3Npb25fdGltZV9tcyk7CiAKKyAgdm9pZCBTZXRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0
bWFwX2FsbG93X21peGVkKTsKKwogICAvLyBSVFAgaGVhZGVyIGV4dGVuc2lvbgogICBpbnQzMl90
IFJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUgdHlwZSwgdWludDhf
dCBpZCk7CiAgIGJvb2wgUmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oY29uc3Qgc3RkOjpzdHJp
bmcmIHVyaSwgaW50IGlkKTsKQEAgLTI0Nyw4ICsyNTUsOCBAQCBjbGFzcyBSVFBTZW5kZXIgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGNhcHR1cmVfdGltZV9tcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYyk7CiAKLSAgYm9vbCBVcGRhdGVUcmFu
c3BvcnRTZXF1ZW5jZU51bWJlcihSdHBQYWNrZXRUb1NlbmQqIHBhY2tldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHBhY2tldF9pZCkgY29uc3Q7CisgIGJvb2wg
VXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoUnRwUGFja2V0VG9TZW5kKiBwYWNrZXQsIGlu
dCogcGFja2V0X2lkKQorICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChzZW5kX2Ny
aXRzZWN0Xyk7CiAKICAgdm9pZCBVcGRhdGVSdHBTdGF0cyhjb25zdCBSdHBQYWNrZXRUb1NlbmQm
IHBhY2tldCwKICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3J0eCwKQEAgLTI3Nyw3ICsy
ODUsNyBAQCBjbGFzcyBSVFBTZW5kZXIgewogCiAgIFRyYW5zcG9ydCogdHJhbnNwb3J0XzsKICAg
Ym9vbCBzZW5kaW5nX21lZGlhXyBSVENfR1VBUkRFRF9CWShzZW5kX2NyaXRzZWN0Xyk7Ci0KKyAg
Ym9vbCBmb3JjZV9wYXJ0X29mX2FsbG9jYXRpb25fIFJUQ19HVUFSREVEX0JZKHNlbmRfY3JpdHNl
Y3RfKTsKICAgc2l6ZV90IG1heF9wYWNrZXRfc2l6ZV87CiAKICAgaW50OF90IGxhc3RfcGF5bG9h
ZF90eXBlXyBSVENfR1VBUkRFRF9CWShzZW5kX2NyaXRzZWN0Xyk7CkBAIC0zNDMsMTEgKzM1MSw2
IEBAIGNsYXNzIFJUUFNlbmRlciB7CiAKICAgY29uc3QgYm9vbCBzZW5kX3NpZGVfYndlX3dpdGhf
b3ZlcmhlYWRfOwogCi0gIGNvbnN0IGJvb2wgdW5saW1pdGVkX3JldHJhbnNtaXNzaW9uX2V4cGVy
aW1lbnRfOwotCi0gIGFic2w6Om9wdGlvbmFsPFZpZGVvQ29udGVudFR5cGU+IHZpZGVvX2NvbnRl
bnRfdHlwZV8KLSAgICAgIFJUQ19HVUFSREVEX0JZKHNlbmRfY3JpdHNlY3RfKTsKLQogICBSVENf
RElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKFJUUFNlbmRlcik7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX2F1ZGlvLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl9h
dWRpby5jYwppbmRleCBiZjg2YTM5MzM5YmU3M2Y5MDc4MzU5Yzc3NTViZGVkODc3NDFlYzQ2Li42
MzZjY2NjZjBkOWI3ZmY5MGEwZGFkNGQzZDUyOWFhYjZmZGIwZmE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfc2VuZGVyX2F1ZGlvLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfYXVkaW8u
Y2MKQEAgLTExLDE2ICsxMSwxOCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9zZW5kZXJfYXVkaW8uaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgotCiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0
Y2guaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
dGltZXV0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdHJhY2VfZXZlbnQuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CkBAIC0zMCwxNCArMzIsMTMgQEAgUlRQU2VuZGVyQXVkaW86OlJUUFNlbmRl
ckF1ZGlvKENsb2NrKiBjbG9jaywgUlRQU2VuZGVyKiBydHBfc2VuZGVyKQogCiBSVFBTZW5kZXJB
dWRpbzo6flJUUFNlbmRlckF1ZGlvKCkge30KIAotaW50MzJfdCBSVFBTZW5kZXJBdWRpbzo6UmVn
aXN0ZXJBdWRpb1BheWxvYWQoCi0gICAgY29uc3QgY2hhciBwYXlsb2FkTmFtZVtSVFBfUEFZTE9B
RF9OQU1FX1NJWkVdLAotICAgIGNvbnN0IGludDhfdCBwYXlsb2FkX3R5cGUsCi0gICAgY29uc3Qg
dWludDMyX3QgZnJlcXVlbmN5LAotICAgIGNvbnN0IHNpemVfdCBjaGFubmVscywKLSAgICBjb25z
dCB1aW50MzJfdCByYXRlLAotICAgIFJ0cFV0aWxpdHk6OlBheWxvYWQqKiBwYXlsb2FkKSB7Ci0g
IGlmIChSdHBVdGlsaXR5OjpTdHJpbmdDb21wYXJlKHBheWxvYWROYW1lLCAiY24iLCAyKSkgewor
aW50MzJfdCBSVFBTZW5kZXJBdWRpbzo6UmVnaXN0ZXJBdWRpb1BheWxvYWQoYWJzbDo6c3RyaW5n
X3ZpZXcgcGF5bG9hZF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgaW50OF90IHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGZyZXF1ZW5jeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBjaGFu
bmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQzMl90IHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSdHBVdGlsaXR5OjpQYXlsb2FkKiogcGF5bG9hZCkgeworICBpZiAoYWJzbDo6RXF1YWxz
SWdub3JlQ2FzZShwYXlsb2FkX25hbWUsICJjbiIpKSB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3Mo
JnNlbmRfYXVkaW9fY3JpdHNlY3RfKTsKICAgICAvLyAgd2UgY2FuIGhhdmUgbXVsdGlwbGUgQ05H
IHBheWxvYWQgdHlwZXMKICAgICBzd2l0Y2ggKGZyZXF1ZW5jeSkgewpAQCAtNTYsNyArNTcsNyBA
QCBpbnQzMl90IFJUUFNlbmRlckF1ZGlvOjpSZWdpc3RlckF1ZGlvUGF5bG9hZCgKICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gIH0gZWxzZSBpZiAoUnRwVXRpbGl0
eTo6U3RyaW5nQ29tcGFyZShwYXlsb2FkTmFtZSwgInRlbGVwaG9uZS1ldmVudCIsIDE1KSkgewor
ICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGF5bG9hZF9uYW1lLCAidGVsZXBo
b25lLWV2ZW50IikpIHsKICAgICBydGM6OkNyaXRTY29wZSBjcygmc2VuZF9hdWRpb19jcml0c2Vj
dF8pOwogICAgIC8vIERvbid0IGFkZCBpdCB0byB0aGUgbGlzdAogICAgIC8vIHdlIGRvbnQgd2Fu
dCB0byBhbGxvdyBzZW5kIHdpdGggYSBEVE1GIHBheWxvYWR0eXBlCkBAIC02NSw5ICs2Niw5IEBA
IGludDMyX3QgUlRQU2VuZGVyQXVkaW86OlJlZ2lzdGVyQXVkaW9QYXlsb2FkKAogICAgIHJldHVy
biAwOwogICB9CiAgICpwYXlsb2FkID0gbmV3IFJ0cFV0aWxpdHk6OlBheWxvYWQoCi0gICAgICBw
YXlsb2FkTmFtZSwKKyAgICAgIHBheWxvYWRfbmFtZSwKICAgICAgIFBheWxvYWRVbmlvbihBdWRp
b1BheWxvYWR7Ci0gICAgICAgICAgU2RwQXVkaW9Gb3JtYXQocGF5bG9hZE5hbWUsIGZyZXF1ZW5j
eSwgY2hhbm5lbHMpLCByYXRlfSkpOworICAgICAgICAgIFNkcEF1ZGlvRm9ybWF0KHBheWxvYWRf
bmFtZSwgZnJlcXVlbmN5LCBjaGFubmVscyksIHJhdGV9KSk7CiAgIHJldHVybiAwOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX2F1ZGlvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2Vu
ZGVyX2F1ZGlvLmgKaW5kZXggNjNkZmMyYjk5YzM5Mzg1Mjc4M2Q2YzgwZjc5N2E0YTUwZDNjYTJj
ZC4uMWRiZTViNTgxN2NjM2QxNjc0NjI5NzExYjEwNjM0MzQ0NWIxMDBhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX3NlbmRlcl9hdWRpby5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfYXVk
aW8uaApAQCAtMTEsMTQgKzExLDE5IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNF
X1JUUF9TRU5ERVJfQVVESU9fSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQ
X1NFTkRFUl9BVURJT19IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50
Lmg+CisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKICNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZfcXVldWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfcnRjcF9jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfc2VuZGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX3V0aWxpdHkuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
b25ldGltZWV2ZW50LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgi
CisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKQEAgLTI3LDcgKzMyLDcgQEAgY2xhc3MgUlRQU2VuZGVyQXVkaW8gewogICBS
VFBTZW5kZXJBdWRpbyhDbG9jayogY2xvY2ssIFJUUFNlbmRlciogcnRwX3NlbmRlcik7CiAgIH5S
VFBTZW5kZXJBdWRpbygpOwogCi0gIGludDMyX3QgUmVnaXN0ZXJBdWRpb1BheWxvYWQoY29uc3Qg
Y2hhciBwYXlsb2FkTmFtZVtSVFBfUEFZTE9BRF9OQU1FX1NJWkVdLAorICBpbnQzMl90IFJlZ2lz
dGVyQXVkaW9QYXlsb2FkKGFic2w6OnN0cmluZ192aWV3IHBheWxvYWRfbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ4X3QgcGF5bG9hZF90eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyZXF1ZW5jeSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgY2hhbm5lbHMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
c2VuZGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl91bml0dGVzdC5jYwppbmRl
eCA4NmI5MmRhMmUwMGI5Y2QxNGNiZDM2MDZjMzU1NWI4YmI0MWY3ODE2Li5hNjg3YmNiYjM1YjI3
YWRjNzNiNjdlY2ZhMDgyMDQ0YjgyMjkxNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2Vu
ZGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdW5pdHRlc3QuY2MKQEAg
LTE4NCw3ICsxODQsOCBAQCBjbGFzcyBSdHBTZW5kZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdFdpdGhQYXJhbTxib29sPiB7CiAgICAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFu
c3BvcnRfLCBwYWNlciA/ICZtb2NrX3BhY2VkX3NlbmRlcl8gOiBudWxscHRyLAogICAgICAgICBu
dWxscHRyLCAmc2VxX251bV9hbGxvY2F0b3JfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLAogICAgICAgICAmbW9ja19ydGNfZXZlbnRfbG9nXywgJnNlbmRfcGFja2V0X29ic2Vy
dmVyXywKLSAgICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIHBv
cHVsYXRlX25ldHdvcmsyKSk7CisgICAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJf
LCBudWxscHRyLCBwb3B1bGF0ZV9uZXR3b3JrMiwgbnVsbHB0ciwKKyAgICAgICAgZmFsc2UsIGZh
bHNlKSk7CiAgICAgcnRwX3NlbmRlcl8tPlNldFNlcXVlbmNlTnVtYmVyKGtTZXFOdW0pOwogICAg
IHJ0cF9zZW5kZXJfLT5TZXRUaW1lc3RhbXBPZmZzZXQoMCk7CiAgICAgcnRwX3NlbmRlcl8tPlNl
dFNTUkMoa1NzcmMpOwpAQCAtMjc2LDcgKzI3Nyw3IEBAIGNsYXNzIFRlc3RSdHBTZW5kZXJWaWRl
byA6IHB1YmxpYyBSVFBTZW5kZXJWaWRlbyB7CiAgIFRlc3RSdHBTZW5kZXJWaWRlbyhDbG9jayog
Y2xvY2ssCiAgICAgICAgICAgICAgICAgICAgICBSVFBTZW5kZXIqIHJ0cF9zZW5kZXIsCiAgICAg
ICAgICAgICAgICAgICAgICBGbGV4ZmVjU2VuZGVyKiBmbGV4ZmVjX3NlbmRlcikKLSAgICAgIDog
UlRQU2VuZGVyVmlkZW8oY2xvY2ssIHJ0cF9zZW5kZXIsIGZsZXhmZWNfc2VuZGVyKSB7fQorICAg
ICAgOiBSVFBTZW5kZXJWaWRlbyhjbG9jaywgcnRwX3NlbmRlciwgZmxleGZlY19zZW5kZXIsIG51
bGxwdHIsIGZhbHNlKSB7fQogICB+VGVzdFJ0cFNlbmRlclZpZGVvKCkgb3ZlcnJpZGUge30KIAog
ICBTdG9yYWdlVHlwZSBHZXRTdG9yYWdlVHlwZShjb25zdCBSVFBWaWRlb0hlYWRlciYgaGVhZGVy
LApAQCAtMzgyLDcgKzM4Myw4IEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBBc3NpZ25TZXF1ZW5j
ZU51bWJlckFsbG93c1BhZGRpbmdPbkF1ZGlvKSB7CiAgIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBS
VFBTZW5kZXIoCiAgICAgICBrRW5hYmxlQXVkaW8sICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydCwg
Jm1vY2tfcGFjZWRfc2VuZGVyXywgbnVsbHB0ciwKICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsICZtb2NrX3J0Y19ldmVudF9sb2dfLAotICAgICAgbnVs
bHB0ciwgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7Cisg
ICAgICBudWxscHRyLCAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFs
c2UsIG51bGxwdHIsIGZhbHNlLAorICAgICAgZmFsc2UpKTsKICAgcnRwX3NlbmRlcl8tPlNldFRp
bWVzdGFtcE9mZnNldCgwKTsKICAgcnRwX3NlbmRlcl8tPlNldFNTUkMoa1NzcmMpOwogCkBAIC00
MjgsNyArNDMwLDggQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3RXaXRob3V0UGFjZXIsCiAgIHJ0cF9z
ZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCiAgICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAm
dHJhbnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0ciwgJnNlcV9udW1fYWxsb2NhdG9yXywKICAgICAg
ICZmZWVkYmFja19vYnNlcnZlcl8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsICZtb2NrX3J0
Y19ldmVudF9sb2dfLAotICAgICAgbnVsbHB0ciwgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRl
cl8sICZtb2NrX292ZXJoZWFkX29ic2VydmVyLCBmYWxzZSkpOworICAgICAgbnVsbHB0ciwgJnJl
dHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sICZtb2NrX292ZXJoZWFkX29ic2VydmVyLCBmYWxz
ZSwKKyAgICAgIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NS
QyhrU3NyYyk7CiAgIEVYUEVDVF9FUSgwLCBydHBfc2VuZGVyXy0+UmVnaXN0ZXJSdHBIZWFkZXJF
eHRlbnNpb24oCiAgICAgICAgICAgICAgICAgICAga1J0cEV4dGVuc2lvblRyYW5zcG9ydFNlcXVl
bmNlTnVtYmVyLApAQCAtNDU1LDcgKzQ1OCw4IEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91
dFBhY2VyLCBTZW5kc1BhY2tldHNXaXRoVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKICAgcnRw
X3NlbmRlcl8ucmVzZXQobmV3IFJUUFNlbmRlcigKICAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18s
ICZ0cmFuc3BvcnRfLCBudWxscHRyLCBudWxscHRyLCAmc2VxX251bV9hbGxvY2F0b3JfLAogICAg
ICAgJmZlZWRiYWNrX29ic2VydmVyXywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJm1vY2tf
cnRjX2V2ZW50X2xvZ18sCi0gICAgICAmc2VuZF9wYWNrZXRfb2JzZXJ2ZXJfLCAmcmV0cmFuc21p
c3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgICAgICZzZW5kX3BhY2tl
dF9vYnNlcnZlcl8sICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxz
ZSwKKyAgICAgIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NS
QyhrU3NyYyk7CiAgIEVYUEVDVF9FUSgwLCBydHBfc2VuZGVyXy0+UmVnaXN0ZXJSdHBIZWFkZXJF
eHRlbnNpb24oCiAgICAgICAgICAgICAgICAgICAga1J0cEV4dGVuc2lvblRyYW5zcG9ydFNlcXVl
bmNlTnVtYmVyLApAQCAtNDc5LDEzICs0ODMsMTUgQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3RXaXRo
b3V0UGFjZXIsIFNlbmRzUGFja2V0c1dpdGhUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcikgewogICBB
U1NFUlRfVFJVRShwYWNrZXQuR2V0RXh0ZW5zaW9uPFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyPigm
dHJhbnNwb3J0X3NlcV9ubykpOwogICBFWFBFQ1RfRVEoa1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVy
LCB0cmFuc3BvcnRfc2VxX25vKTsKICAgRVhQRUNUX0VRKHRyYW5zcG9ydF8ubGFzdF9vcHRpb25z
Xy5wYWNrZXRfaWQsIHRyYW5zcG9ydF9zZXFfbm8pOworICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnRf
Lmxhc3Rfb3B0aW9uc18uaW5jbHVkZWRfaW5fYWxsb2NhdGlvbik7CiB9CiAKIFRFU1RfUChSdHBT
ZW5kZXJUZXN0V2l0aG91dFBhY2VyLCBQYWNrZXRPcHRpb25zTm9SZXRyYW5zbWlzc2lvbikgewog
ICBydHBfc2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAogICAgICAgZmFsc2UsICZmYWtlX2Ns
b2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIsICZzZXFfbnVtX2FsbG9jYXRvcl8s
CiAgICAgICAmZmVlZGJhY2tfb2JzZXJ2ZXJfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAm
bW9ja19ydGNfZXZlbnRfbG9nXywKLSAgICAgICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sICZyZXRy
YW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSkpOworICAgICAgJnNlbmRf
cGFja2V0X29ic2VydmVyXywgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIs
IGZhbHNlLAorICAgICAgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5T
ZXRTU1JDKGtTc3JjKTsKIAogICBTZW5kR2VuZXJpY1BheWxvYWQoKTsKQEAgLTQ5MywxNiArNDk5
LDUzIEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLCBQYWNrZXRPcHRpb25zTm9S
ZXRyYW5zbWlzc2lvbikgewogICBFWFBFQ1RfRkFMU0UodHJhbnNwb3J0Xy5sYXN0X29wdGlvbnNf
LmlzX3JldHJhbnNtaXQpOwogfQogCi1URVNUX1AoUnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwg
Tm9BbGxvY2F0aW9uSWZOb3RSZWdpc3RlcmVkKSB7CitURVNUX1AoUnRwU2VuZGVyVGVzdFdpdGhv
dXRQYWNlciwKKyAgICAgICBTZXRzSW5jbHVkZWRJbkZlZWRiYWNrV2hlblRyYW5zcG9ydFNlcXVl
bmNlTnVtYmVyRXh0ZW5zaW9uSXNSZWdpc3RlcmVkKSB7CisgIFNldFVwUnRwU2VuZGVyKGZhbHNl
LCBmYWxzZSk7CisgIHJ0cF9zZW5kZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihrUnRw
RXh0ZW5zaW9uVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJFeHRlbnNpb25JZCk7
CisgIEVYUEVDVF9DQUxMKHNlcV9udW1fYWxsb2NhdG9yXywgQWxsb2NhdGVTZXF1ZW5jZU51bWJl
cigpKQorICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihrVHJhbnNwb3J0U2VxdWVuY2VO
dW1iZXIpKTsKKyAgRVhQRUNUX0NBTEwoc2VuZF9wYWNrZXRfb2JzZXJ2ZXJfLCBPblNlbmRQYWNr
ZXQpLlRpbWVzKDEpOworICBTZW5kR2VuZXJpY1BheWxvYWQoKTsKKyAgRVhQRUNUX1RSVUUodHJh
bnNwb3J0Xy5sYXN0X29wdGlvbnNfLmluY2x1ZGVkX2luX2ZlZWRiYWNrKTsKK30KKworVEVTVF9Q
KAorICAgIFJ0cFNlbmRlclRlc3RXaXRob3V0UGFjZXIsCisgICAgU2V0c0luY2x1ZGVkSW5BbGxv
Y2F0aW9uV2hlblRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyRXh0ZW5zaW9uSXNSZWdpc3RlcmVkKSB7
CisgIFNldFVwUnRwU2VuZGVyKGZhbHNlLCBmYWxzZSk7CisgIHJ0cF9zZW5kZXJfLT5SZWdpc3Rl
clJ0cEhlYWRlckV4dGVuc2lvbihrUnRwRXh0ZW5zaW9uVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVHJhbnNwb3J0U2Vx
dWVuY2VOdW1iZXJFeHRlbnNpb25JZCk7CisgIEVYUEVDVF9DQUxMKHNlcV9udW1fYWxsb2NhdG9y
XywgQWxsb2NhdGVTZXF1ZW5jZU51bWJlcigpKQorICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJl
dHVybihrVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpKTsKKyAgRVhQRUNUX0NBTEwoc2VuZF9wYWNr
ZXRfb2JzZXJ2ZXJfLCBPblNlbmRQYWNrZXQpLlRpbWVzKDEpOwogICBTZW5kR2VuZXJpY1BheWxv
YWQoKTsKKyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0Xy5sYXN0X29wdGlvbnNfLmluY2x1ZGVkX2lu
X2FsbG9jYXRpb24pOworfQorCitURVNUX1AoUnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwKKyAg
ICAgICBTZXRzSW5jbHVkZWRJbkFsbG9jYXRpb25XaGVuRm9yY2VkQXNQYXJ0T2ZBbGxvY2F0aW9u
KSB7CisgIFNldFVwUnRwU2VuZGVyKGZhbHNlLCBmYWxzZSk7CisgIHJ0cF9zZW5kZXJfLT5TZXRB
c1BhcnRPZkFsbG9jYXRpb24odHJ1ZSk7CisgIFNlbmRHZW5lcmljUGF5bG9hZCgpOworICBFWFBF
Q1RfRkFMU0UodHJhbnNwb3J0Xy5sYXN0X29wdGlvbnNfLmluY2x1ZGVkX2luX2ZlZWRiYWNrKTsK
KyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0Xy5sYXN0X29wdGlvbnNfLmluY2x1ZGVkX2luX2FsbG9j
YXRpb24pOworfQorCitURVNUX1AoUnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwgRG9lc25TZXRJ
bmNsdWRlZEluQWxsb2NhdGlvbkJ5RGVmYXVsdCkgeworICBTZXRVcFJ0cFNlbmRlcihmYWxzZSwg
ZmFsc2UpOworICBTZW5kR2VuZXJpY1BheWxvYWQoKTsKKyAgRVhQRUNUX0ZBTFNFKHRyYW5zcG9y
dF8ubGFzdF9vcHRpb25zXy5pbmNsdWRlZF9pbl9mZWVkYmFjayk7CisgIEVYUEVDVF9GQUxTRSh0
cmFuc3BvcnRfLmxhc3Rfb3B0aW9uc18uaW5jbHVkZWRfaW5fYWxsb2NhdGlvbik7CiB9CiAKIFRF
U1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLCBPblNlbmRTaWRlRGVsYXlVcGRhdGVkKSB7
CiAgIHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja1NlbmRTaWRlRGVsYXlPYnNlcnZlcj4gc2VuZF9z
aWRlX2RlbGF5X29ic2VydmVyXzsKLSAgcnRwX3NlbmRlcl8ucmVzZXQoCi0gICAgICBuZXcgUlRQ
U2VuZGVyKGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRfLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCAmc2VuZF9zaWRlX2RlbGF5X29ic2VydmVyXywKLSAgICAgICAgICAgICAgICAgICAgJm1vY2tf
cnRjX2V2ZW50X2xvZ18sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIGZhbHNlKSk7CisgIHJ0
cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCisgICAgICBmYWxzZSwgJmZha2VfY2xvY2tf
LCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAg
IG51bGxwdHIsIG51bGxwdHIsICZzZW5kX3NpZGVfZGVsYXlfb2JzZXJ2ZXJfLCAmbW9ja19ydGNf
ZXZlbnRfbG9nXywKKyAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIGZhbHNlLCBudWxs
cHRyLCBmYWxzZSwgZmFsc2UpKTsKICAgcnRwX3NlbmRlcl8tPlNldFNTUkMoa1NzcmMpOwogCiAg
IGNvbnN0IHVpbnQ4X3Qga1BheWxvYWRUeXBlID0gMTI3OwpAQCAtNTgwLDcgKzYyMyw3IEBAIFRF
U1RfUChSdHBTZW5kZXJUZXN0LCBTZW5kc1BhY2tldHNXaXRoVHJhbnNwb3J0U2VxdWVuY2VOdW1i
ZXIpIHsKICAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRfLCAmbW9ja19wYWNl
ZF9zZW5kZXJfLCBudWxscHRyLAogICAgICAgJnNlcV9udW1fYWxsb2NhdG9yXywgJmZlZWRiYWNr
X29ic2VydmVyXywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKICAgICAgICZtb2NrX3J0Y19l
dmVudF9sb2dfLCAmc2VuZF9wYWNrZXRfb2JzZXJ2ZXJfLAotICAgICAgJnJldHJhbnNtaXNzaW9u
X3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgICAgICAmcmV0cmFuc21pc3Npb25f
cmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwog
ICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAgIHJ0cF9zZW5kZXJf
LT5TZXRTU1JDKGtTc3JjKTsKICAgcnRwX3NlbmRlcl8tPlNldFN0b3JlUGFja2V0c1N0YXR1cyh0
cnVlLCAxMCk7CkBAIC02NDcsOCArNjkwLDggQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIFdyaXRl
c1BhY2VyRXhpdFRvVGltaW5nRXh0ZW5zaW9uKSB7CiAgIEVYUEVDVF9FUShrU3RvcmVkVGltZUlu
TXMsIHZpZGVvX3RpbWluZy5wYWNlcl9leGl0X2RlbHRhX21zKTsKIH0KIAotVEVTVF9QKFJ0cFNl
bmRlclRlc3QsIFdyaXRlc05ldHdvcmsyVG9UaW1pbmdFeHRlbnNpb24pIHsKLSAgU2V0VXBSdHBT
ZW5kZXIodHJ1ZSwgdHJ1ZSk7CitURVNUX1AoUnRwU2VuZGVyVGVzdCwgV3JpdGVzTmV0d29yazJU
b1RpbWluZ0V4dGVuc2lvbldpdGhQYWNlcikgeworICBTZXRVcFJ0cFNlbmRlcigvKnBhY2VyPSov
dHJ1ZSwgLypwb3B1bGF0ZV9uZXR3b3JrMj0qL3RydWUpOwogICBydHBfc2VuZGVyXy0+U2V0U3Rv
cmVQYWNrZXRzU3RhdHVzKHRydWUsIDEwKTsKICAgRVhQRUNUX0VRKDAsIHJ0cF9zZW5kZXJfLT5S
ZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbigKICAgICAgICAgICAgICAgICAgICBrUnRwRXh0ZW5z
aW9uVmlkZW9UaW1pbmcsIGtWaWRlb1RpbWluZ0V4dGVuc2lvbklkKSk7CkBAIC02ODYsNiArNzI5
LDMxIEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBXcml0ZXNOZXR3b3JrMlRvVGltaW5nRXh0ZW5z
aW9uKSB7CiAgIEVYUEVDVF9FUShrUGFjZXJFeGl0TXMsIHZpZGVvX3RpbWluZy5wYWNlcl9leGl0
X2RlbHRhX21zKTsKIH0KIAorVEVTVF9QKFJ0cFNlbmRlclRlc3QsIFdyaXRlc05ldHdvcmsyVG9U
aW1pbmdFeHRlbnNpb25XaXRob3V0UGFjZXIpIHsKKyAgU2V0VXBSdHBTZW5kZXIoLypwYWNlcj0q
L2ZhbHNlLCAvKnBvcHVsYXRlX25ldHdvcmsyPSovdHJ1ZSk7CisgIEVYUEVDVF9FUSgwLCBydHBf
c2VuZGVyXy0+UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oCisgICAgICAgICAgICAgICAgICAg
a1J0cEV4dGVuc2lvblZpZGVvVGltaW5nLCBrVmlkZW9UaW1pbmdFeHRlbnNpb25JZCkpOworICBh
dXRvIHBhY2tldCA9IHJ0cF9zZW5kZXJfLT5BbGxvY2F0ZVBhY2tldCgpOworICBwYWNrZXQtPlNl
dE1hcmtlcih0cnVlKTsKKyAgcGFja2V0LT5zZXRfY2FwdHVyZV90aW1lX21zKGZha2VfY2xvY2tf
LlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgY29uc3QgVmlkZW9TZW5kVGltaW5nIGtWaWRlb1Rp
bWluZyA9IHswdSwgMHUsIDB1LCAwdSwgMHUsIDB1LCB0cnVlfTsKKyAgcGFja2V0LT5TZXRFeHRl
bnNpb248VmlkZW9UaW1pbmdFeHRlbnNpb24+KGtWaWRlb1RpbWluZyk7CisgIEVYUEVDVF9UUlVF
KHJ0cF9zZW5kZXJfLT5Bc3NpZ25TZXF1ZW5jZU51bWJlcihwYWNrZXQuZ2V0KCkpKTsKKworICBj
b25zdCBpbnQga1Byb3BhZ2F0ZVRpbWVNcyA9IDEwOworICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGlt
ZU1pbGxpc2Vjb25kcyhrUHJvcGFnYXRlVGltZU1zKTsKKworICBFWFBFQ1RfVFJVRShydHBfc2Vu
ZGVyXy0+U2VuZFRvTmV0d29yayhzdGQ6Om1vdmUocGFja2V0KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga0FsbG93UmV0cmFuc21pc3Npb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFBhY2tldFNlbmRlcjo6a05vcm1hbFBy
aW9yaXR5KSk7CisKKyAgRVhQRUNUX0VRKDEsIHRyYW5zcG9ydF8ucGFja2V0c19zZW50KCkpOwor
ICBhYnNsOjpvcHRpb25hbDxWaWRlb1NlbmRUaW1pbmc+IHZpZGVvX3RpbWluZyA9CisgICAgICB0
cmFuc3BvcnRfLmxhc3Rfc2VudF9wYWNrZXQoKS5HZXRFeHRlbnNpb248VmlkZW9UaW1pbmdFeHRl
bnNpb24+KCk7CisgIEFTU0VSVF9UUlVFKHZpZGVvX3RpbWluZyk7CisgIEVYUEVDVF9FUShrUHJv
cGFnYXRlVGltZU1zLCB2aWRlb190aW1pbmctPm5ldHdvcmsyX3RpbWVzdGFtcF9kZWx0YV9tcyk7
Cit9CisKIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBUcmFmZmljU21vb3RoaW5nV2l0aEV4dGVuc2lv
bnMpIHsKICAgRVhQRUNUX0NBTEwobW9ja19wYWNlZF9zZW5kZXJfLCBJbnNlcnRQYWNrZXQoUnRw
UGFja2V0U2VuZGVyOjprTm9ybWFsUHJpb3JpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtTc3JjLCBrU2VxTnVtLCBfLCBfLCBfKSk7CkBAIC05NDAs
NyArMTAwOCw3IEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBPblNlbmRQYWNrZXROb3RVcGRhdGVk
V2l0aG91dFNlcU51bUFsbG9jYXRvcikgewogICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRy
YW5zcG9ydF8sICZtb2NrX3BhY2VkX3NlbmRlcl8sIG51bGxwdHIsCiAgICAgICBudWxscHRyIC8q
IFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyQWxsb2NhdG9yICovLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLAogICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgJnNlbmRfcGFja2V0X29ic2VydmVyXywg
JnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sCi0gICAgICBudWxscHRyLCBmYWxzZSkpOwor
ICAgICAgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2Vu
ZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JD
KGtTc3JjKTsKICAgRVhQRUNUX0VRKDAsIHJ0cF9zZW5kZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4
dGVuc2lvbigKQEAgLTk2Niw3ICsxMDM0LDcgQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIFNlbmRS
ZWR1bmRhbnRQYXlsb2FkcykgewogICBydHBfc2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAog
ICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydCwgJm1vY2tfcGFjZWRfc2VuZGVy
XywgbnVsbHB0ciwgbnVsbHB0ciwKICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsICZtb2NrX3J0Y19ldmVudF9sb2dfLCBudWxscHRyLAotICAgICAgJnJldHJhbnNtaXNz
aW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgICAgICAmcmV0cmFuc21pc3Np
b25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkp
OwogICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAgIHJ0cF9zZW5k
ZXJfLT5TZXRTU1JDKGtTc3JjKTsKICAgcnRwX3NlbmRlcl8tPlNldFJ0eFBheWxvYWRUeXBlKGtS
dHhQYXlsb2FkLCBrUGF5bG9hZCk7CkBAIC0xMDkwLDcgKzExNTgsNyBAQCBURVNUX1AoUnRwU2Vu
ZGVyVGVzdCwgU2VuZEZsZXhmZWNQYWNrZXRzKSB7CiAgICAgICBmYWxzZSwgJmZha2VfY2xvY2tf
LCAmdHJhbnNwb3J0XywgJm1vY2tfcGFjZWRfc2VuZGVyXywgJmZsZXhmZWNfc2VuZGVyLAogICAg
ICAgJnNlcV9udW1fYWxsb2NhdG9yXywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwKICAgICAgICZtb2NrX3J0Y19ldmVudF9sb2dfLCAmc2VuZF9wYWNrZXRfb2JzZXJ2ZXJfLAot
ICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7Cisg
ICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51bGxw
dHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrTWVkaWFTc3JjKTsK
ICAgcnRwX3NlbmRlcl8tPlNldFNlcXVlbmNlTnVtYmVyKGtTZXFOdW0pOwogICBydHBfc2VuZGVy
Xy0+U2V0U3RvcmVQYWNrZXRzU3RhdHVzKHRydWUsIDEwKTsKQEAgLTExNTAsNyArMTIxOCw3IEBA
IFRFU1RfUChSdHBTZW5kZXJUZXN0LCBOb0ZsZXhmZWNGb3JUaW1pbmdGcmFtZXMpIHsKICAgICAg
IGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRfLCAmbW9ja19wYWNlZF9zZW5kZXJfLCAm
ZmxleGZlY19zZW5kZXIsCiAgICAgICAmc2VxX251bV9hbGxvY2F0b3JfLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLAogICAgICAgJm1vY2tfcnRjX2V2ZW50X2xvZ18sICZzZW5k
X3BhY2tldF9vYnNlcnZlcl8sCi0gICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywg
bnVsbHB0ciwgZmFsc2UpKTsKKyAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBu
dWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5T
ZXRTU1JDKGtNZWRpYVNzcmMpOwogICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1Nl
cU51bSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTdG9yZVBhY2tldHNTdGF0dXModHJ1ZSwgMTApOwpA
QCAtMTI0NSwxMSArMTMxMywxMSBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwg
U2VuZEZsZXhmZWNQYWNrZXRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciAvKiBydHBfc3RhdGUgKi8sICZmYWtlX2Nsb2NrXyk7CiAKICAgLy8gUmVzZXQgfHJ0cF9z
ZW5kZXJffCB0byB1c2UgRmxleEZFQy4KLSAgcnRwX3NlbmRlcl8ucmVzZXQoCi0gICAgICBuZXcg
UlRQU2VuZGVyKGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRfLCBudWxscHRyLCAmZmxl
eGZlY19zZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICZzZXFfbnVtX2FsbG9jYXRvcl8sIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICZt
b2NrX3J0Y19ldmVudF9sb2dfLCAmc2VuZF9wYWNrZXRfb2JzZXJ2ZXJfLAotICAgICAgICAgICAg
ICAgICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsK
KyAgcnRwX3NlbmRlcl8ucmVzZXQobmV3IFJUUFNlbmRlcigKKyAgICAgIGZhbHNlLCAmZmFrZV9j
bG9ja18sICZ0cmFuc3BvcnRfLCBudWxscHRyLCAmZmxleGZlY19zZW5kZXIsCisgICAgICAmc2Vx
X251bV9hbGxvY2F0b3JfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAorICAg
ICAgJm1vY2tfcnRjX2V2ZW50X2xvZ18sICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sCisgICAgICAm
cmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZh
bHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrTWVkaWFTc3JjKTsKICAgcnRw
X3NlbmRlcl8tPlNldFNlcXVlbmNlTnVtYmVyKGtTZXFOdW0pOwogCkBAIC0xMzEzLDcgKzEzODEs
NyBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdCwgRmVjT3ZlcmhlYWRSYXRlKSB7CiAgICAgICBmYWxz
ZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgJm1vY2tfcGFjZWRfc2VuZGVyXywgJmZsZXhm
ZWNfc2VuZGVyLAogICAgICAgJnNlcV9udW1fYWxsb2NhdG9yXywgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwKICAgICAgICZtb2NrX3J0Y19ldmVudF9sb2dfLCAmc2VuZF9wYWNr
ZXRfb2JzZXJ2ZXJfLAotICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxw
dHIsIGZhbHNlKSk7CisgICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0
ciwgZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NS
QyhrTWVkaWFTc3JjKTsKICAgcnRwX3NlbmRlcl8tPlNldFNlcXVlbmNlTnVtYmVyKGtTZXFOdW0p
OwogCkBAIC0xMzY1LDcgKzE0MzMsNyBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdCwgRnJhbWVDb3Vu
dENhbGxiYWNrcykgewogICBydHBfc2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAogICAgICAg
ZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sICZtb2NrX3BhY2VkX3NlbmRlcl8sIG51
bGxwdHIsIG51bGxwdHIsCiAgICAgICBudWxscHRyLCBudWxscHRyLCAmY2FsbGJhY2ssIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVy
XywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJf
LCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJf
LT5TZXRTU1JDKGtTc3JjKTsKICAgY2hhciBwYXlsb2FkX25hbWVbUlRQX1BBWUxPQURfTkFNRV9T
SVpFXSA9ICJHRU5FUklDIjsKICAgY29uc3QgdWludDhfdCBwYXlsb2FkX3R5cGUgPSAxMjc7CkBA
IC0xNDI1LDEwICsxNDkzLDEwIEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBCaXRyYXRlQ2FsbGJh
Y2tzKSB7CiAgICAgdWludDMyX3QgdG90YWxfYml0cmF0ZV87CiAgICAgdWludDMyX3QgcmV0cmFu
c21pdF9iaXRyYXRlXzsKICAgfSBjYWxsYmFjazsKLSAgcnRwX3NlbmRlcl8ucmVzZXQoCi0gICAg
ICBuZXcgUlRQU2VuZGVyKGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRfLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICBudWxscHRyLCAmY2FsbGJh
Y2ssIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAg
ICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSkpOworICBy
dHBfc2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAorICAgICAgZmFsc2UsICZmYWtlX2Nsb2Nr
XywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAg
ICAmY2FsbGJhY2ssIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAm
cmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZh
bHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7CiAKICAgLy8gU2lt
dWxhdGUga051bVBhY2tldHMgc2VudCB3aXRoIGtQYWNrZXRJbnRlcnZhbCBtcyBpbnRlcnZhbHMs
IHdpdGggdGhlCkBAIC0xNDg1LDEwICsxNTUzLDEwIEBAIGNsYXNzIFJ0cFNlbmRlckF1ZGlvVGVz
dCA6IHB1YmxpYyBSdHBTZW5kZXJUZXN0IHsKIAogICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgewog
ICAgIHBheWxvYWRfID0ga0F1ZGlvUGF5bG9hZDsKLSAgICBydHBfc2VuZGVyXy5yZXNldCgKLSAg
ICAgICAgbmV3IFJUUFNlbmRlcih0cnVlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRfLCBudWxs
cHRyLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7
CisgICAgcnRwX3NlbmRlcl8ucmVzZXQobmV3IFJUUFNlbmRlcigKKyAgICAgICAgdHJ1ZSwgJmZh
a2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwKKyAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwK
KyAgICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlLCBu
dWxscHRyLCBmYWxzZSwgZmFsc2UpKTsKICAgICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7
CiAgICAgcnRwX3NlbmRlcl8tPlNldFNlcXVlbmNlTnVtYmVyKGtTZXFOdW0pOwogICB9CkBAIC0y
MTUxLDEwICsyMjE5LDExIEBAIFRFU1RfUChSdHBTZW5kZXJWaWRlb1Rlc3QsCiAKIFRFU1RfUChS
dHBTZW5kZXJUZXN0LCBPbk92ZXJoZWFkQ2hhbmdlZCkgewogICBNb2NrT3ZlcmhlYWRPYnNlcnZl
ciBtb2NrX292ZXJoZWFkX29ic2VydmVyOwotICBydHBfc2VuZGVyXy5yZXNldChuZXcgUlRQU2Vu
ZGVyKAotICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLAotICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8s
ICZtb2NrX292ZXJoZWFkX29ic2VydmVyLCBmYWxzZSkpOworICBydHBfc2VuZGVyXy5yZXNldCgK
KyAgICAgIG5ldyBSVFBTZW5kZXIoZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCAmbW9ja19vdmVyaGVhZF9vYnNl
cnZlciwKKyAgICAgICAgICAgICAgICAgICAgZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkp
OwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7CiAKICAgLy8gUlRQIG92ZXJoZWFkIGlz
IDEyQi4KQEAgLTIxNzIsMTAgKzIyNDEsMTEgQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIE9uT3Zl
cmhlYWRDaGFuZ2VkKSB7CiAKIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBEb2VzTm90VXBkYXRlT3Zl
cmhlYWRPbkVxdWFsU2l6ZSkgewogICBNb2NrT3ZlcmhlYWRPYnNlcnZlciBtb2NrX292ZXJoZWFk
X29ic2VydmVyOwotICBydHBfc2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAotICAgICAgZmFs
c2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsCi0gICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLAotICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sICZtb2NrX292ZXJoZWFk
X29ic2VydmVyLCBmYWxzZSkpOworICBydHBfc2VuZGVyXy5yZXNldCgKKyAgICAgIG5ldyBSVFBT
ZW5kZXIoZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICZyZXRyYW5z
bWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCAmbW9ja19vdmVyaGVhZF9vYnNlcnZlciwKKyAgICAgICAg
ICAgICAgICAgICAgZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVy
Xy0+U2V0U1NSQyhrU3NyYyk7CiAKICAgRVhQRUNUX0NBTEwobW9ja19vdmVyaGVhZF9vYnNlcnZl
ciwgT25PdmVyaGVhZENoYW5nZWQoXykpLlRpbWVzKDEpOwpAQCAtMjE4NSwxMCArMjI1NSwxMCBA
QCBURVNUX1AoUnRwU2VuZGVyVGVzdCwgRG9lc05vdFVwZGF0ZU92ZXJoZWFkT25FcXVhbFNpemUp
IHsKIAogVEVTVF9QKFJ0cFNlbmRlclRlc3QsIFNlbmRzS2VlcEFsaXZlKSB7CiAgIE1vY2tUcmFu
c3BvcnQgdHJhbnNwb3J0OwotICBydHBfc2VuZGVyXy5yZXNldCgKLSAgICAgIG5ldyBSVFBTZW5k
ZXIoZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwKLSAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgJm1vY2tfcnRjX2V2ZW50X2xvZ18sCi0gICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
ICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSkpOworICBydHBf
c2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAorICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywg
JnRyYW5zcG9ydCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsICZtb2NrX3J0Y19ldmVudF9sb2dfLCBudWxscHRyLAor
ICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlLCBudWxs
cHRyLCBmYWxzZSwgZmFsc2UpKTsKICAgcnRwX3NlbmRlcl8tPlNldFNlcXVlbmNlTnVtYmVyKGtT
ZXFOdW0pOwogICBydHBfc2VuZGVyXy0+U2V0VGltZXN0YW1wT2Zmc2V0KDApOwogICBydHBfc2Vu
ZGVyXy0+U2V0U1NSQyhrU3NyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3Zp
ZGVvLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl92aWRlby5jYwppbmRleCBlOGYwZWE1YzhkZTA3
MTgwYWNiZjE5MzBjNjUyYTI4YWExZGI4NjM1Li5jYjBiNjY1NjA4NDU1NzQ1Y2NkMDVjYjdhNWNh
OWU5YjUwYjcxMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3ZpZGVvLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdmlkZW8uY2MKQEAgLTE5LDYgKzE5LDggQEAKICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRl
ICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZW5jcnlw
dG9yaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9y
dGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lv
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRlb19n
ZW5lcmljLmgiCkBAIC05MSw2ICs5MywxMSBAQCB2b2lkIEFkZFJ0cEhlYWRlckV4dGVuc2lvbnMo
Y29uc3QgUlRQVmlkZW9IZWFkZXImIHZpZGVvX2hlYWRlciwKICAgICAgIGdlbmVyaWNfZGVzY3Jp
cHRvci5TZXRTcGF0aWFsTGF5ZXJzQml0bWFzayhzcGF0aWFsX2JpbWFzayk7CiAKICAgICAgIGdl
bmVyaWNfZGVzY3JpcHRvci5TZXRUZW1wb3JhbExheWVyKHZpZGVvX2hlYWRlci5nZW5lcmljLT50
ZW1wb3JhbF9pbmRleCk7CisKKyAgICAgIGlmIChmcmFtZV90eXBlID09IGtWaWRlb0ZyYW1lS2V5
KSB7CisgICAgICAgIGdlbmVyaWNfZGVzY3JpcHRvci5TZXRSZXNvbHV0aW9uKHZpZGVvX2hlYWRl
ci53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9f
aGVhZGVyLmhlaWdodCk7CisgICAgICB9CiAgICAgfQogICAgIHBhY2tldC0+U2V0RXh0ZW5zaW9u
PFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3JFeHRlbnNpb24+KAogICAgICAgICBnZW5lcmljX2Rl
c2NyaXB0b3IpOwpAQCAtMTE1LDcgKzEyMiw5IEBAIGJvb2wgTWluaW1pemVEZXNjcmlwdG9yKGNv
bnN0IFJUUFZpZGVvSGVhZGVyJiBmdWxsLCBSVFBWaWRlb0hlYWRlciogbWluaW1pemVkKSB7CiAK
IFJUUFNlbmRlclZpZGVvOjpSVFBTZW5kZXJWaWRlbyhDbG9jayogY2xvY2ssCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUlRQU2VuZGVyKiBydHBfc2VuZGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZsZXhmZWNTZW5kZXIqIGZsZXhmZWNfc2VuZGVyKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZsZXhmZWNTZW5kZXIqIGZsZXhmZWNfc2VuZGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBm
cmFtZV9lbmNyeXB0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXF1
aXJlX2ZyYW1lX2VuY3J5cHRpb24pCiAgICAgOiBydHBfc2VuZGVyXyhydHBfc2VuZGVyKSwKICAg
ICAgIGNsb2NrXyhjbG9jayksCiAgICAgICB2aWRlb190eXBlXyhrVmlkZW9Db2RlY0dlbmVyaWMp
LApAQCAtMTI4LDcgKzEzNyw5IEBAIFJUUFNlbmRlclZpZGVvOjpSVFBTZW5kZXJWaWRlbyhDbG9j
ayogY2xvY2ssCiAgICAgICBkZWx0YV9mZWNfcGFyYW1zX3swLCAxLCBrRmVjTWFza1JhbmRvbX0s
CiAgICAgICBrZXlfZmVjX3BhcmFtc197MCwgMSwga0ZlY01hc2tSYW5kb219LAogICAgICAgZmVj
X2JpdHJhdGVfKDEwMDAsIFJhdGVTdGF0aXN0aWNzOjprQnBzU2NhbGUpLAotICAgICAgdmlkZW9f
Yml0cmF0ZV8oMTAwMCwgUmF0ZVN0YXRpc3RpY3M6OmtCcHNTY2FsZSkge30KKyAgICAgIHZpZGVv
X2JpdHJhdGVfKDEwMDAsIFJhdGVTdGF0aXN0aWNzOjprQnBzU2NhbGUpLAorICAgICAgZnJhbWVf
ZW5jcnlwdG9yXyhmcmFtZV9lbmNyeXB0b3IpLAorICAgICAgcmVxdWlyZV9mcmFtZV9lbmNyeXB0
aW9uXyhyZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24pIHt9CiAKIFJUUFNlbmRlclZpZGVvOjp+UlRQ
U2VuZGVyVmlkZW8oKSB7fQogCkBAIC0xNDIsMTggKzE1MywxOCBAQCBWaWRlb0NvZGVjVHlwZSBS
VFBTZW5kZXJWaWRlbzo6VmlkZW9Db2RlY1R5cGUoKSBjb25zdCB7CiAKIC8vIFN0YXRpYy4KIFJ0
cFV0aWxpdHk6OlBheWxvYWQqIFJUUFNlbmRlclZpZGVvOjpDcmVhdGVWaWRlb1BheWxvYWQoCi0g
ICAgY29uc3QgY2hhciBwYXlsb2FkX25hbWVbUlRQX1BBWUxPQURfTkFNRV9TSVpFXSwKKyAgICBh
YnNsOjpzdHJpbmdfdmlldyBwYXlsb2FkX25hbWUsCiAgICAgaW50OF90IHBheWxvYWRfdHlwZSkg
ewogICBlbnVtIFZpZGVvQ29kZWNUeXBlIHZpZGVvX3R5cGUgPSBrVmlkZW9Db2RlY0dlbmVyaWM7
Ci0gIGlmIChSdHBVdGlsaXR5OjpTdHJpbmdDb21wYXJlKHBheWxvYWRfbmFtZSwgIlZQOCIsIDMp
KSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBheWxvYWRfbmFtZSwgIlZQOCIpKSB7
CiAgICAgdmlkZW9fdHlwZSA9IGtWaWRlb0NvZGVjVlA4OwotICB9IGVsc2UgaWYgKFJ0cFV0aWxp
dHk6OlN0cmluZ0NvbXBhcmUocGF5bG9hZF9uYW1lLCAiVlA5IiwgMykpIHsKKyAgfSBlbHNlIGlm
IChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBheWxvYWRfbmFtZSwgIlZQOSIpKSB7CiAgICAgdmlk
ZW9fdHlwZSA9IGtWaWRlb0NvZGVjVlA5OwotICB9IGVsc2UgaWYgKFJ0cFV0aWxpdHk6OlN0cmlu
Z0NvbXBhcmUocGF5bG9hZF9uYW1lLCAiSDI2NCIsIDQpKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25hbWUsICJIMjY0IikpIHsKICAgICB2aWRlb190eXBl
ID0ga1ZpZGVvQ29kZWNIMjY0OwotICB9IGVsc2UgaWYgKFJ0cFV0aWxpdHk6OlN0cmluZ0NvbXBh
cmUocGF5bG9hZF9uYW1lLCAiSTQyMCIsIDQpKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxz
SWdub3JlQ2FzZShwYXlsb2FkX25hbWUsICJJNDIwIikpIHsKICAgICB2aWRlb190eXBlID0ga1Zp
ZGVvQ29kZWNHZW5lcmljOwotICB9IGVsc2UgaWYgKFJ0cFV0aWxpdHk6OlN0cmluZ0NvbXBhcmUo
cGF5bG9hZF9uYW1lLCAic3RlcmVvIiwgNikpIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKHBheWxvYWRfbmFtZSwgInN0ZXJlbyIpKSB7CiAgICAgdmlkZW9fdHlwZSA9IGtW
aWRlb0NvZGVjR2VuZXJpYzsKICAgfSBlbHNlIHsKICAgICB2aWRlb190eXBlID0ga1ZpZGVvQ29k
ZWNHZW5lcmljOwpAQCAtMzg3LDIwICszOTgsMTkgQEAgYm9vbCBSVFBTZW5kZXJWaWRlbzo6U2Vu
ZFZpZGVvKGVudW0gVmlkZW9Db2RlY1R5cGUgdmlkZW9fdHlwZSwKICAgaW50IHBhY2tldF9jYXBh
Y2l0eSA9IHJ0cF9zZW5kZXJfLT5NYXhSdHBQYWNrZXRTaXplKCkgLSBmZWNfcGFja2V0X292ZXJo
ZWFkIC0KICAgICAgICAgICAgICAgICAgICAgICAgIChydHBfc2VuZGVyXy0+UnR4U3RhdHVzKCkg
PyBrUnR4SGVhZGVyU2l6ZSA6IDApOwogCi0gIGF1dG8gY3JlYXRlX3BhY2tldCA9IFsmXSB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcnRwX3BhY2tldCA9IHJ0cF9zZW5k
ZXJfLT5BbGxvY2F0ZVBhY2tldCgpOwotICAgIFJUQ19EQ0hFQ0tfTEUocGFja2V0X2NhcGFjaXR5
LCBydHBfcGFja2V0LT5jYXBhY2l0eSgpKTsKLQotICAgIHJ0cF9wYWNrZXQtPlNldFBheWxvYWRU
eXBlKHBheWxvYWRfdHlwZSk7Ci0gICAgcnRwX3BhY2tldC0+U2V0VGltZXN0YW1wKHJ0cF90aW1l
c3RhbXApOwotICAgIHJ0cF9wYWNrZXQtPnNldF9jYXB0dXJlX3RpbWVfbXMoY2FwdHVyZV90aW1l
X21zKTsKLSAgICByZXR1cm4gcnRwX3BhY2tldDsKLSAgfTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0
cFBhY2tldFRvU2VuZD4gc2luZ2xlX3BhY2tldCA9CisgICAgICBydHBfc2VuZGVyXy0+QWxsb2Nh
dGVQYWNrZXQoKTsKKyAgUlRDX0RDSEVDS19MRShwYWNrZXRfY2FwYWNpdHksIHNpbmdsZV9wYWNr
ZXQtPmNhcGFjaXR5KCkpOworICBzaW5nbGVfcGFja2V0LT5TZXRQYXlsb2FkVHlwZShwYXlsb2Fk
X3R5cGUpOworICBzaW5nbGVfcGFja2V0LT5TZXRUaW1lc3RhbXAocnRwX3RpbWVzdGFtcCk7Cisg
IHNpbmdsZV9wYWNrZXQtPnNldF9jYXB0dXJlX3RpbWVfbXMoY2FwdHVyZV90aW1lX21zKTsKIAot
ICBhdXRvIGZpcnN0X3BhY2tldCA9IGNyZWF0ZV9wYWNrZXQoKTsKLSAgYXV0byBtaWRkbGVfcGFj
a2V0ID0gYWJzbDo6bWFrZV91bmlxdWU8UnRwUGFja2V0VG9TZW5kPigqZmlyc3RfcGFja2V0KTsK
LSAgYXV0byBsYXN0X3BhY2tldCA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0cFBhY2tldFRvU2VuZD4o
KmZpcnN0X3BhY2tldCk7CisgIGF1dG8gZmlyc3RfcGFja2V0ID0gYWJzbDo6bWFrZV91bmlxdWU8
UnRwUGFja2V0VG9TZW5kPigqc2luZ2xlX3BhY2tldCk7CisgIGF1dG8gbWlkZGxlX3BhY2tldCA9
IGFic2w6Om1ha2VfdW5pcXVlPFJ0cFBhY2tldFRvU2VuZD4oKnNpbmdsZV9wYWNrZXQpOworICBh
dXRvIGxhc3RfcGFja2V0ID0gYWJzbDo6bWFrZV91bmlxdWU8UnRwUGFja2V0VG9TZW5kPigqc2lu
Z2xlX3BhY2tldCk7CiAgIC8vIFNpbXBsZXN0IHdheSB0byBlc3RpbWF0ZSBob3cgbXVjaCBleHRl
bnNpb25zIHdvdWxkIG9jY3VweSBpcyB0byBzZXQgdGhlbS4KKyAgQWRkUnRwSGVhZGVyRXh0ZW5z
aW9ucygqdmlkZW9faGVhZGVyLCBmcmFtZV90eXBlLCBzZXRfdmlkZW9fcm90YXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgLypmaXJzdD0qL3RydWUsIC8qbGFzdD0qL3RydWUsIHNpbmds
ZV9wYWNrZXQuZ2V0KCkpOwogICBBZGRSdHBIZWFkZXJFeHRlbnNpb25zKCp2aWRlb19oZWFkZXIs
IGZyYW1lX3R5cGUsIHNldF92aWRlb19yb3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKmZpcnN0PSovdHJ1ZSwgLypsYXN0PSovZmFsc2UsIGZpcnN0X3BhY2tldC5nZXQoKSk7CiAg
IEFkZFJ0cEhlYWRlckV4dGVuc2lvbnMoKnZpZGVvX2hlYWRlciwgZnJhbWVfdHlwZSwgc2V0X3Zp
ZGVvX3JvdGF0aW9uLApAQCAtNDA4LDEyICs0MTgsMTcgQEAgYm9vbCBSVFBTZW5kZXJWaWRlbzo6
U2VuZFZpZGVvKGVudW0gVmlkZW9Db2RlY1R5cGUgdmlkZW9fdHlwZSwKICAgQWRkUnRwSGVhZGVy
RXh0ZW5zaW9ucygqdmlkZW9faGVhZGVyLCBmcmFtZV90eXBlLCBzZXRfdmlkZW9fcm90YXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgLypmaXJzdD0qL2ZhbHNlLCAvKmxhc3Q9Ki90cnVl
LCBsYXN0X3BhY2tldC5nZXQoKSk7CiAKKyAgUlRDX0RDSEVDS19HVChwYWNrZXRfY2FwYWNpdHks
IHNpbmdsZV9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpKTsKICAgUlRDX0RDSEVDS19HVChwYWNrZXRf
Y2FwYWNpdHksIGZpcnN0X3BhY2tldC0+aGVhZGVyc19zaXplKCkpOwogICBSVENfRENIRUNLX0dU
KHBhY2tldF9jYXBhY2l0eSwgbWlkZGxlX3BhY2tldC0+aGVhZGVyc19zaXplKCkpOwogICBSVENf
RENIRUNLX0dUKHBhY2tldF9jYXBhY2l0eSwgbGFzdF9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpKTsK
ICAgUnRwUGFja2V0aXplcjo6UGF5bG9hZFNpemVMaW1pdHMgbGltaXRzOwogICBsaW1pdHMubWF4
X3BheWxvYWRfbGVuID0gcGFja2V0X2NhcGFjaXR5IC0gbWlkZGxlX3BhY2tldC0+aGVhZGVyc19z
aXplKCk7CiAKKyAgUlRDX0RDSEVDS19HRShzaW5nbGVfcGFja2V0LT5oZWFkZXJzX3NpemUoKSwg
bWlkZGxlX3BhY2tldC0+aGVhZGVyc19zaXplKCkpOworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9y
ZWR1Y3Rpb25fbGVuID0KKyAgICAgIHNpbmdsZV9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpIC0gbWlk
ZGxlX3BhY2tldC0+aGVhZGVyc19zaXplKCk7CisKICAgUlRDX0RDSEVDS19HRShmaXJzdF9wYWNr
ZXQtPmhlYWRlcnNfc2l6ZSgpLCBtaWRkbGVfcGFja2V0LT5oZWFkZXJzX3NpemUoKSk7CiAgIGxp
bWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9CiAgICAgICBmaXJzdF9wYWNrZXQtPmhl
YWRlcnNfc2l6ZSgpIC0gbWlkZGxlX3BhY2tldC0+aGVhZGVyc19zaXplKCk7CkBAIC00MjQsOSAr
NDM5LDQyIEBAIGJvb2wgUlRQU2VuZGVyVmlkZW86OlNlbmRWaWRlbyhlbnVtIFZpZGVvQ29kZWNU
eXBlIHZpZGVvX3R5cGUsCiAKICAgUlRQVmlkZW9IZWFkZXIgbWluaW1pemVkX3ZpZGVvX2hlYWRl
cjsKICAgY29uc3QgUlRQVmlkZW9IZWFkZXIqIHBhY2tldGl6ZV92aWRlb19oZWFkZXIgPSB2aWRl
b19oZWFkZXI7Ci0gIGlmIChmaXJzdF9wYWNrZXQtPkhhc0V4dGVuc2lvbjxSdHBHZW5lcmljRnJh
bWVEZXNjcmlwdG9yRXh0ZW5zaW9uPigpICYmCi0gICAgICBNaW5pbWl6ZURlc2NyaXB0b3IoKnZp
ZGVvX2hlYWRlciwgJm1pbmltaXplZF92aWRlb19oZWFkZXIpKSB7Ci0gICAgcGFja2V0aXplX3Zp
ZGVvX2hlYWRlciA9ICZtaW5pbWl6ZWRfdmlkZW9faGVhZGVyOworICBydGM6OkFycmF5Vmlldzxj
b25zdCB1aW50OF90PiBnZW5lcmljX2Rlc2NyaXB0b3JfcmF3ID0KKyAgICAgIGZpcnN0X3BhY2tl
dC0+R2V0UmF3RXh0ZW5zaW9uPFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3JFeHRlbnNpb24+KCk7
CisgIGlmICghZ2VuZXJpY19kZXNjcmlwdG9yX3Jhdy5lbXB0eSgpKSB7CisgICAgaWYgKE1pbmlt
aXplRGVzY3JpcHRvcigqdmlkZW9faGVhZGVyLCAmbWluaW1pemVkX3ZpZGVvX2hlYWRlcikpIHsK
KyAgICAgIHBhY2tldGl6ZV92aWRlb19oZWFkZXIgPSAmbWluaW1pemVkX3ZpZGVvX2hlYWRlcjsK
KyAgICB9CisgIH0KKworICAvLyBUT0RPKGJlbndyaWdodEB3ZWJydGMub3JnKSAtIEFsbG9jYXRl
IGVub3VnaCB0byBhbHdheXMgZW5jcnlwdCBpbmxpbmUuCisgIHJ0Yzo6QnVmZmVyIGVuY3J5cHRl
ZF92aWRlb19wYXlsb2FkOworICBpZiAoZnJhbWVfZW5jcnlwdG9yXyAhPSBudWxscHRyKSB7Cisg
ICAgaWYgKGdlbmVyaWNfZGVzY3JpcHRvcl9yYXcuZW1wdHkoKSkgeworICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGNvbnN0IHNpemVfdCBtYXhfY2lwaGVydGV4dF9zaXplID0KKyAg
ICAgICAgZnJhbWVfZW5jcnlwdG9yXy0+R2V0TWF4Q2lwaGVydGV4dEJ5dGVTaXplKGNyaWNrZXQ6
Ok1FRElBX1RZUEVfVklERU8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXlsb2FkX3NpemUpOworICAgIGVuY3J5cHRlZF92aWRlb19wYXlsb2Fk
LlNldFNpemUobWF4X2NpcGhlcnRleHRfc2l6ZSk7CisKKyAgICBzaXplX3QgYnl0ZXNfd3JpdHRl
biA9IDA7CisgICAgaWYgKGZyYW1lX2VuY3J5cHRvcl8tPkVuY3J5cHQoCisgICAgICAgICAgICBj
cmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBmaXJzdF9wYWNrZXQtPlNzcmMoKSwKKyAgICAgICAg
ICAgIC8qYWRkaXRpb25hbF9kYXRhPSovbnVsbHB0ciwKKyAgICAgICAgICAgIHJ0Yzo6TWFrZUFy
cmF5VmlldyhwYXlsb2FkX2RhdGEsIHBheWxvYWRfc2l6ZSksCisgICAgICAgICAgICBlbmNyeXB0
ZWRfdmlkZW9fcGF5bG9hZCwgJmJ5dGVzX3dyaXR0ZW4pICE9IDApIHsKKyAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBlbmNyeXB0ZWRfdmlkZW9fcGF5bG9hZC5TZXRTaXplKGJ5dGVz
X3dyaXR0ZW4pOworICAgIHBheWxvYWRfZGF0YSA9IGVuY3J5cHRlZF92aWRlb19wYXlsb2FkLmRh
dGEoKTsKKyAgICBwYXlsb2FkX3NpemUgPSBlbmNyeXB0ZWRfdmlkZW9fcGF5bG9hZC5zaXplKCk7
CisgIH0gZWxzZSBpZiAocmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uXykgeworICAgIFJUQ19MT0co
TFNfV0FSTklORykKKyAgICAgICAgPDwgIk5vIEZyYW1lRW5jcnlwdG9yIGlzIGF0dGFjaGVkIHRv
IHRoaXMgdmlkZW8gc2VuZGluZyBzdHJlYW0gYnV0ICIKKyAgICAgICAgPDwgIm9uZSBpcyByZXF1
aXJlZCBzaW5jZSByZXF1aXJlX2ZyYW1lX2VuY3J5cHRvciBpcyBzZXQiOwogICB9CiAKICAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0cFBhY2tldGl6ZXI+IHBhY2tldGl6ZXIgPSBSdHBQYWNrZXRpemVyOjpD
cmVhdGUoCkBAIC00NDcsMTYgKzQ5NSw5IEBAIGJvb2wgUlRQU2VuZGVyVmlkZW86OlNlbmRWaWRl
byhlbnVtIFZpZGVvQ29kZWNUeXBlIHZpZGVvX3R5cGUsCiAgICAgaW50IGV4cGVjdGVkX3BheWxv
YWRfY2FwYWNpdHk7CiAgICAgLy8gQ2hvb3NlIHJpZ2h0IHBhY2tldCB0ZW1wbGF0ZToKICAgICBp
ZiAobnVtX3BhY2tldHMgPT0gMSkgewotICAgICAgLy8gTm8gcHJlcGFyZWQgdGVtcGxhdGUsIGNy
ZWF0ZSBhIG5ldyBwYWNrZXQuCi0gICAgICBwYWNrZXQgPSBjcmVhdGVfcGFja2V0KCk7Ci0gICAg
ICBBZGRSdHBIZWFkZXJFeHRlbnNpb25zKCp2aWRlb19oZWFkZXIsIGZyYW1lX3R5cGUsIHNldF92
aWRlb19yb3RhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmaXJzdD0qL3Ry
dWUsIC8qbGFzdD0qL3RydWUsIHBhY2tldC5nZXQoKSk7Ci0gICAgICAvLyBUT0RPKGJ1Z3Mud2Vi
cnRjLm9yZy83OTkwKTogUmV2aXNpdCB0aGlzIGNhc2Ugd2hlbiB0d28gYnl0ZSBoZWFkZXIKLSAg
ICAgIC8vIGV4dGVuc2lvbiBhcmUgaW1wbGVtZW50ZWQgYmVjYXVzZSB0aGVuIHNpbmdsZSBwYWNr
ZXQgbWlnaHQgbmVlZCBtb3JlCi0gICAgICAvLyBzcGFjZSBmb3IgZXh0ZW5zaW9ucyB0aGFuIHN1
bSBvZiBmaXJzdCBhbmQgbGFzdCBwYWNrZXQgcmVkdWN0aW9ucy4KLSAgICAgIGV4cGVjdGVkX3Bh
eWxvYWRfY2FwYWNpdHkgPSBsaW1pdHMubWF4X3BheWxvYWRfbGVuIC0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsaW1pdHMuZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gLQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cy5sYXN0X3BhY2tldF9yZWR1
Y3Rpb25fbGVuOworICAgICAgcGFja2V0ID0gc3RkOjptb3ZlKHNpbmdsZV9wYWNrZXQpOworICAg
ICAgZXhwZWN0ZWRfcGF5bG9hZF9jYXBhY2l0eSA9CisgICAgICAgICAgbGltaXRzLm1heF9wYXls
b2FkX2xlbiAtIGxpbWl0cy5zaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW47CiAgICAgfSBlbHNl
IGlmIChpID09IDApIHsKICAgICAgIHBhY2tldCA9IHN0ZDo6bW92ZShmaXJzdF9wYWNrZXQpOwog
ICAgICAgZXhwZWN0ZWRfcGF5bG9hZF9jYXBhY2l0eSA9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfc2VuZGVyX3ZpZGVvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3ZpZGVvLmgKaW5kZXggY2U3
YmUxNjE0OWMzYjM3YTQ0ZDc0NjkzMTE3ZDRkYzRlYTYzOWM5YS4uZDNhODk4YjQwYTMwNmE3ZGJj
NDEwNjAyOWM5OWRlNjFmZWE1MzllOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl92
aWRlby5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdmlkZW8uaApAQCAtMTQsNiArMTQsNyBA
QAogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNpbmNsdWRlICJhYnNsL3N0
cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAj
aW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZlY19zZW5kZXIuaCIKQEAgLTI5LDYg
KzMwLDggQEAKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlOwogY2xhc3Mg
UnRwUGFja2V0aXplcjsKIGNsYXNzIFJ0cFBhY2tldFRvU2VuZDsKIApAQCAtMzgsMTQgKzQxLDE1
IEBAIGNsYXNzIFJUUFNlbmRlclZpZGVvIHsKIAogICBSVFBTZW5kZXJWaWRlbyhDbG9jayogY2xv
Y2ssCiAgICAgICAgICAgICAgICAgIFJUUFNlbmRlciogcnRwU2VuZGVyLAotICAgICAgICAgICAg
ICAgICBGbGV4ZmVjU2VuZGVyKiBmbGV4ZmVjX3NlbmRlcik7CisgICAgICAgICAgICAgICAgIEZs
ZXhmZWNTZW5kZXIqIGZsZXhmZWNfc2VuZGVyLAorICAgICAgICAgICAgICAgICBGcmFtZUVuY3J5
cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAgICAgICAgICAgICAgICBib29sIHJl
cXVpcmVfZnJhbWVfZW5jcnlwdGlvbik7CiAgIHZpcnR1YWwgflJUUFNlbmRlclZpZGVvKCk7CiAK
ICAgdmlydHVhbCBlbnVtIFZpZGVvQ29kZWNUeXBlIFZpZGVvQ29kZWNUeXBlKCkgY29uc3Q7CiAK
LSAgc3RhdGljIFJ0cFV0aWxpdHk6OlBheWxvYWQqIENyZWF0ZVZpZGVvUGF5bG9hZCgKLSAgICAg
IGNvbnN0IGNoYXIgcGF5bG9hZF9uYW1lW1JUUF9QQVlMT0FEX05BTUVfU0laRV0sCi0gICAgICBp
bnQ4X3QgcGF5bG9hZF90eXBlKTsKKyAgc3RhdGljIFJ0cFV0aWxpdHk6OlBheWxvYWQqIENyZWF0
ZVZpZGVvUGF5bG9hZChhYnNsOjpzdHJpbmdfdmlldyBwYXlsb2FkX25hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50OF90IHBheWxvYWRfdHlw
ZSk7CiAKICAgYm9vbCBTZW5kVmlkZW8oZW51bSBWaWRlb0NvZGVjVHlwZSB2aWRlb190eXBlLAog
ICAgICAgICAgICAgICAgICBGcmFtZVR5cGUgZnJhbWVfdHlwZSwKQEAgLTE1OCw2ICsxNjIsMTMg
QEAgY2xhc3MgUlRQU2VuZGVyVmlkZW8gewogICAgICAgUlRDX0dVQVJERURfQlkoc3RhdHNfY3Jp
dF8pOwogCiAgIE9uZVRpbWVFdmVudCBmaXJzdF9mcmFtZV9zZW50XzsKKworICAvLyBFMkVFIEN1
c3RvbSBWaWRlbyBGcmFtZSBFbmNyeXB0b3IgKG9wdGlvbmFsKQorICBGcmFtZUVuY3J5cHRvcklu
dGVyZmFjZSogY29uc3QgZnJhbWVfZW5jcnlwdG9yXyA9IG51bGxwdHI7CisgIC8vIElmIHNldCB0
byB0cnVlIHdpbGwgcmVxdWlyZSBhbGwgb3V0Z29pbmcgZnJhbWVzIHRvIHBhc3MgdGhyb3VnaCBh
bgorICAvLyBpbml0aWFsaXplZCBmcmFtZV9lbmNyeXB0b3JfIGJlZm9yZSBiZWluZyBzZW50IG91
dCBvZiB0aGUgbmV0d29yay4KKyAgLy8gT3RoZXJ3aXNlIHRoZXNlIHBheWxvYWRzIHdpbGwgYmUg
ZHJvcHBlZC4KKyAgYm9vbCByZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb25fOwogfTsKIAogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3V0aWxpdHkuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfdXRpbGl0eS5jYwppbmRleCAyMjg1NzJmOGQxNjljMjFjYjBiNzZkNmJhMDQ1
MzljZWU0NjQ3Y2YzLi40NGM2NzFmNTA2N2VhZjM3YmZhZGY4Zjk2MGFmYjhmYzhjNTNjZjgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRp
bGl0eS5jYwpAQCAtMTAsOSArMTAsMTkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF91dGlsaXR5LmgiCiAKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxz
dGRkZWYuaD4KKworI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYXBpL3Zp
ZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFt
ZV9tYXJraW5nLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3JvdGF0aW9uLmgiCisjaW5j
bHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3RpbWluZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3AvaW5jbHVkZS9ydHBfY3ZvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
Ynl0ZV9pby5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJf
ZXh0ZW5zaW9ucy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9pbnRl
cmZhY2UvY29tbW9uX2NvbnN0YW50cy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1
dGlscy5oIgogCkBAIC0zMywxMCArNDMsNiBAQCBlbnVtIHsKICAqIE1pc2MgdXRpbGl0eSByb3V0
aW5lcwogICovCiAKLWJvb2wgU3RyaW5nQ29tcGFyZShjb25zdCBjaGFyKiBzdHIxLCBjb25zdCBj
aGFyKiBzdHIyLCBjb25zdCB1aW50MzJfdCBsZW5ndGgpIHsKLSAgcmV0dXJuIF9zdHJuaWNtcChz
dHIxLCBzdHIyLCBsZW5ndGgpID09IDA7Ci19Ci0KIHNpemVfdCBXb3JkMzJBbGlnbihzaXplX3Qg
c2l6ZSkgewogICB1aW50MzJfdCByZW1haW5kZXIgPSBzaXplICUgNDsKICAgaWYgKHJlbWFpbmRl
ciAhPSAwKQpAQCAtNTAxLDYgKzUwNywxMCBAQCB2b2lkIFJ0cEhlYWRlclBhcnNlcjo6UGFyc2VP
bmVCeXRlRXh0ZW5zaW9uSGVhZGVyKAogICAgICAgICAgIFJUQ19MT0coV0FSTklORykKICAgICAg
ICAgICAgICAgPDwgIlJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3IgdW5zdXBwb3J0ZWQgYnkgcnRw
IGhlYWRlciBwYXJzZXIuIjsKICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrUnRwRXh0
ZW5zaW9uQ29sb3JTcGFjZToKKyAgICAgICAgICBSVENfTE9HKFdBUk5JTkcpCisgICAgICAgICAg
ICAgIDw8ICJSdHBFeHRlbnNpb25Db2xvclNwYWNlIHVuc3VwcG9ydGVkIGJ5IHJ0cCBoZWFkZXIg
cGFyc2VyLiI7CisgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Uga1J0cEV4dGVuc2lvbk5v
bmU6CiAgICAgICAgIGNhc2Uga1J0cEV4dGVuc2lvbk51bWJlck9mRXh0ZW5zaW9uczogewogICAg
ICAgICAgIFJUQ19OT1RSRUFDSEVEKCkgPDwgIkludmFsaWQgZXh0ZW5zaW9uIHR5cGU6ICIgPDwg
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91dGlsaXR5LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
dXRpbGl0eS5oCmluZGV4IDc2MmY5NjRhMmUyZjMxZWFhY2UxNTQ4NTk2MGYzODkxZTNkYjk2YmYu
LjQwODUxNzQ4MWJiNDk1ZTU0MjRlYjY2Y2YwZDA3OGU1ZDI0Y2I4MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF91dGlsaXR5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3V0aWxpdHkuaApAQCAtMTEs
MTQgKzExLDE0IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9VVElMSVRZ
X0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9VVElMSVRZX0hfCiAKLSNp
bmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNp
bmNsdWRlIDxhbGdvcml0aG0+CiAKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUv
cmVjZWl2ZV9zdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3
LmgiCisjaW5jbHVkZSAiYXBpL3J0cF9oZWFkZXJzLmgiCisjaW5jbHVkZSAiY29tbW9uX3R5cGVz
LmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9jb25maWcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9kZXBy
ZWNhdGlvbi5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMjcsMTYgKzI3LDE1IEBAIGNv
bnN0IHVpbnQ4X3Qga1J0cE1hcmtlckJpdE1hc2sgPSAweDgwOwogbmFtZXNwYWNlIFJ0cFV0aWxp
dHkgewogCiBzdHJ1Y3QgUGF5bG9hZCB7Ci0gIFBheWxvYWQoY29uc3QgY2hhciogbmFtZSwgY29u
c3QgUGF5bG9hZFVuaW9uJiBwdSkgOiB0eXBlU3BlY2lmaWMocHUpIHsKLSAgICBzdGQ6OnN0cm5j
cHkodGhpcy0+bmFtZSwgbmFtZSwgc2l6ZW9mKHRoaXMtPm5hbWUpIC0gMSk7Ci0gICAgdGhpcy0+
bmFtZVtzaXplb2YodGhpcy0+bmFtZSkgLSAxXSA9ICdcMCc7CisgIFBheWxvYWQoYWJzbDo6c3Ry
aW5nX3ZpZXcgcGF5bG9hZF9uYW1lLCBjb25zdCBQYXlsb2FkVW5pb24mIHB1KQorICAgICAgOiB0
eXBlU3BlY2lmaWMocHUpIHsKKyAgICBzaXplX3QgY2xpcHBlZF9zaXplID0gcGF5bG9hZF9uYW1l
LmNvcHkobmFtZSwgc2l6ZW9mKG5hbWUpIC0gMSk7CisgICAgbmFtZVtjbGlwcGVkX3NpemVdID0g
J1wwJzsKICAgfQogICBjaGFyIG5hbWVbUlRQX1BBWUxPQURfTkFNRV9TSVpFXTsKICAgUGF5bG9h
ZFVuaW9uIHR5cGVTcGVjaWZpYzsKIH07CiAKLWJvb2wgU3RyaW5nQ29tcGFyZShjb25zdCBjaGFy
KiBzdHIxLCBjb25zdCBjaGFyKiBzdHIyLCBjb25zdCB1aW50MzJfdCBsZW5ndGgpOwotCiAvLyBS
b3VuZCB1cCB0byB0aGUgbmVhcmVzdCBzaXplIHRoYXQgaXMgYSBtdWx0aXBsZSBvZiA0Lgogc2l6
ZV90IFdvcmQzMkFsaWduKHNpemVfdCBzaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X3ZpZGVvX2hlYWRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIuY2MKaW5kZXggYTNl
ZThiYWE4M2UxM2FmYmQ1NWY1Mjg5MDFjMjkwM2JmY2Y4ZmFmNy4uYmI5NDEzZGRkNWUyOGE4OWYz
OWQ3N2MzNDUyYWIxYmUzYmE2MTY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3ZpZGVvX2hl
YWRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdmlkZW9faGVhZGVyLmNjCkBAIC0xMiw3ICsxMiw3
IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1SVFBWaWRlb0hlYWRlcjo6UlRQVmlkZW9IZWFk
ZXIoKSA6IHBsYXlvdXRfZGVsYXkoKSwgdmlkZW9fdGltaW5nKCkge30KK1JUUFZpZGVvSGVhZGVy
OjpSVFBWaWRlb0hlYWRlcigpIDogdmlkZW9fdGltaW5nKCkge30KIFJUUFZpZGVvSGVhZGVyOjpS
VFBWaWRlb0hlYWRlcihjb25zdCBSVFBWaWRlb0hlYWRlciYgb3RoZXIpID0gZGVmYXVsdDsKIFJU
UFZpZGVvSGVhZGVyOjp+UlRQVmlkZW9IZWFkZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIu
aAppbmRleCAyODhiN2QwM2EwMjYwZTUyZjNkZTBlMTI1OTdjNDQ2NWVjNjZkMGNlLi4xYzc1ZjUz
OWExZTg2YmI2M2ZmMWE3MTdlMGUxYWIyNTZkYTQ3M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfdmlkZW9faGVhZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3ZpZGVvX2hlYWRlci5oCkBAIC0x
MCw4ICsxMCwxMiBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfVklERU9f
SEVBREVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9WSURFT19IRUFE
RVJfSF8KIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bmxpbmVkX3ZlY3Rvci5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNs
dWRlICJhYnNsL3R5cGVzL3ZhcmlhbnQuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29k
ZWNfdHlwZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19jb250ZW50X3R5cGUuaCIKICNp
bmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfbWFya2luZy5oIgogI2luY2x1ZGUgImFwaS92
aWRlby92aWRlb19yb3RhdGlvbi5oIgpAQCAtNTYsNyArNjAsNyBAQCBzdHJ1Y3QgUlRQVmlkZW9I
ZWFkZXIgewogICB1aW50OF90IHNpbXVsY2FzdElkeCA9IDA7CiAgIFZpZGVvQ29kZWNUeXBlIGNv
ZGVjID0gVmlkZW9Db2RlY1R5cGU6OmtWaWRlb0NvZGVjR2VuZXJpYzsKIAotICBQbGF5b3V0RGVs
YXkgcGxheW91dF9kZWxheTsKKyAgUGxheW91dERlbGF5IHBsYXlvdXRfZGVsYXkgPSB7LTEsIC0x
fTsKICAgVmlkZW9TZW5kVGltaW5nIHZpZGVvX3RpbWluZzsKICAgRnJhbWVNYXJraW5nIGZyYW1l
X21hcmtpbmc7CiAgIFJUUFZpZGVvVHlwZUhlYWRlciB2aWRlb190eXBlX2hlYWRlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3RpbWVfdXRpbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RpbWVfdXRpbC5jYwppbmRl
eCA2YWMyODBhNjFkYjdlOTNlNzU3YThjZjdhNWQyY2U4MDBjYTg1OGQ1Li5lNjUzMjlkMDZiNzgw
NTJiMjA0MDUzYjJmZDlkYTQ1NzE2MGRlMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90aW1lX3V0
aWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvdGltZV91dGlsLmNjCkBAIC0xMiw2ICsxMiw3IEBACiAKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0yMiwy
MCArMjMsMjcgQEAgaW5saW5lIGludDY0X3QgRGl2aWRlUm91bmRUb05lYXJlc3QoaW50NjRfdCB4
LCB1aW50MzJfdCB5KSB7CiAgIHJldHVybiAoeCArIHkgLyAyKSAvIHk7CiB9CiAKLWludDY0X3Qg
TnRwT2Zmc2V0VXMoKSB7CitpbnQ2NF90IE50cE9mZnNldE1zQ2FsbGVkT25jZSgpIHsKICAgY29u
c3RleHByIGludDY0X3Qga050cEphbjE5NzBTZWMgPSAyMjA4OTg4ODAwOwotICBpbnQ2NF90IGNs
b2NrX3RpbWUgPSBydGM6OlRpbWVNaWNyb3MoKTsKLSAgaW50NjRfdCB1dGNfdGltZSA9IHJ0Yzo6
VGltZVVUQ01pY3JvcygpOwotICByZXR1cm4gdXRjX3RpbWUgLSBjbG9ja190aW1lICsga050cEph
bjE5NzBTZWMgKiBydGM6OmtOdW1NaWNyb3NlY3NQZXJTZWM7CisgIGludDY0X3QgY2xvY2tfdGlt
ZSA9IHJ0Yzo6VGltZU1pbGxpcygpOworICBpbnQ2NF90IHV0Y190aW1lID0gcnRjOjpUaW1lVVRD
TWlsbGlzKCk7CisgIHJldHVybiB1dGNfdGltZSAtIGNsb2NrX3RpbWUgKyBrTnRwSmFuMTk3MFNl
YyAqIHJ0Yzo6a051bU1pbGxpc2Vjc1BlclNlYzsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCiAKLU50
cFRpbWUgVGltZU1pY3Jvc1RvTnRwKGludDY0X3QgdGltZV91cykgeworaW50NjRfdCBOdHBPZmZz
ZXRNcygpIHsKICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb25jZS4KLSAgc3RhdGljIGludDY0
X3QgbnRwX29mZnNldF91cyA9IE50cE9mZnNldFVzKCk7CisgIHN0YXRpYyBpbnQ2NF90IG50cF9v
ZmZzZXRfbXMgPSBOdHBPZmZzZXRNc0NhbGxlZE9uY2UoKTsKKyAgcmV0dXJuIG50cF9vZmZzZXRf
bXM7Cit9CiAKLSAgaW50NjRfdCB0aW1lX250cF91cyA9IHRpbWVfdXMgKyBudHBfb2Zmc2V0X3Vz
OworTnRwVGltZSBUaW1lTWljcm9zVG9OdHAoaW50NjRfdCB0aW1lX3VzKSB7CisgIC8vIFNpbmNl
IHRoaXMgZG9lc24ndCByZXR1cm4gYSB3YWxsY2xvY2sgdGltZSwgYnV0IG9ubHkgTlRQIHJlcHJl
c2VudGF0aW9uCisgIC8vIG9mIHJ0Yzo6VGltZU1pbGxpcygpIGNsb2NrLCB0aGUgZXhhY3Qgb2Zm
c2V0IGRvZXNuJ3QgbWF0dGVyLgorICAvLyBUbyBzaW1wbGlmeSBjb252ZXJzaW9ucyBiZXR3ZWVu
IE5UUCBhbmQgUlRQIHRpbWUsIHRoaXMgb2Zmc2V0IGlzCisgIC8vIGxpbWl0ZWQgdG8gbWlsbGlz
ZWNvbmRzIGluIHJlc29sdXRpb24uCisgIGludDY0X3QgdGltZV9udHBfdXMgPSB0aW1lX3VzICsg
TnRwT2Zmc2V0TXMoKSAqIDEwMDA7CiAgIFJUQ19EQ0hFQ0tfR0UodGltZV9udHBfdXMsIDApOyAg
Ly8gVGltZSBiZWZvcmUgeWVhciAxOTAwIGlzIHVuc3VwcG9ydGVkLgogCiAgIC8vIFRPRE8oZGFu
aWxjaGFwKTogQ29udmVydCBib3RoIHNlY29uZHMgYW5kIGZyYWN0aW9uIHRvZ2V0aGVyIHVzaW5n
IGludDEyOApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdGltZV91dGlsLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90aW1l
X3V0aWwuaAppbmRleCA2NzI3MjJjMDdmOTlhYzBmYjcyNzczMTc3NjAwZTI3YTUwOWUwMTk0Li45
NGI5MTQzMTBjY2YyMGRjYWI2Y2E2MDQ0OGIyOWE5YWUxZjM5MjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS90aW1lX3V0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90aW1lX3V0aWwuaApAQCAtMjIsMTMgKzIy
LDE0IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogLy8gZGlmZmVyZW5jZSBvZiB0aGUgcGFzc2VkIHZh
bHVlcy4KIC8vIEFzIGEgcmVzdWx0IFRpbWVNaWNyb3NUb050cChydGM6OlRpbWVNaWNyb3MoKSkg
ZG9lc24ndCBndWFyYW50ZWUgdG8gbWF0Y2gKIC8vIHN5c3RlbSB0aW1lLgorLy8gSG93ZXZlciwg
VGltZU1pY3Jvc1RvTnRwIEd1YXJhbnRlZXMgdGhhdCByZXR1cm5lZCBOdHBUaW1lIHdpbGwgYmUg
b2Zmc2V0dGVkCisvLyBmcm9tIHJ0Yzo6VGltZU1pY3JvcygpIGJ5IGludGVncmFsIG51bWJlciBv
ZiBtaWxsaXNlY29uZHMuCisvLyBVc2UgTnRwT2Zmc2V0TXMoKSB0byBnZXQgdGhhdCBvZmZzZXQg
dmFsdWUuCiBOdHBUaW1lIFRpbWVNaWNyb3NUb050cChpbnQ2NF90IHRpbWVfdXMpOwogCi0vLyBD
b252ZXJ0cyBOVFAgdGltZXN0YW1wIHRvIFJUUCB0aW1lc3RhbXAuCi1pbmxpbmUgdWludDMyX3Qg
TnRwVG9SdHAoTnRwVGltZSBudHAsIHVpbnQzMl90IGZyZXEpIHsKLSAgdWludDMyX3QgdG1wID0g
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihudHAuZnJhY3Rpb25zKCkpICogZnJlcSkgPj4gMzI7Ci0g
IHJldHVybiBudHAuc2Vjb25kcygpICogZnJlcSArIHRtcDsKLX0KKy8vIERpZmZlcmVuY2UgYmV0
d2VlbiBOdHAgdGltZSBhbmQgbG9jYWwgcmVsYXRpdmUgdGltZSByZXR1cm5lZCBieQorLy8gcnRj
OjpUaW1lTWljcm9zKCkKK2ludDY0X3QgTnRwT2Zmc2V0TXMoKTsKIAogLy8gSGVscGVyIGZ1bmN0
aW9uIGZvciBjb21wYWN0IG50cCByZXByZXNlbnRhdGlvbjoKIC8vIFJGQyAzNTUwLCBTZWN0aW9u
IDQuIFRpbWUgRm9ybWF0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdG1tYnJfaGVscC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3RtbWJyX2hlbHAuY2MKaW5kZXggOGFhNDUzMDIxMTM1M2M1YWQ1ODRiNGE5YzJmZjc5
NWE0OWNhYjBhNi4uMzE1YTRjMjEyMDllYWRiZTJiYWY4MjM2M2QzOGY0OWExNDMxOGVhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvdG1tYnJfaGVscC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90bW1icl9oZWxw
LmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS90bW1icl9oZWxwLmgiCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8bGltaXRzPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90bW1icl9oZWxw
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS90bW1icl9oZWxwLmgKaW5kZXggOTFhZWFmNDY0MTAxYzJjZmMwYjM2YTgz
MmU5MDkxOGQwNzRhN2UwNi4uYmY4NmY2NTIyMmM3ZTA5MmNjODQ4YjQ2ZTQyYzBjYjQ2NjVkMTdj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdG1tYnJfaGVscC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RtbWJy
X2hlbHAuaApAQCAtMTEsNyArMTEsOSBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJD
RV9UTU1CUl9IRUxQX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1RNTUJSX0hF
TFBfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KKwogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJfaXRlbS5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19nZW5lcmF0b3Iu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS91bHBmZWNfZ2VuZXJhdG9yLmNjCmluZGV4IGU1Nzc3ZWRhYjg1MDRiMTc0
MGIxNjRhNmIxOWRmZjlhYjg0ZDYwYzUuLjU2ZGFlMjk0NTBlOTUwZWRkNTZhNzVmMzMwZTNiMDU5
ODU5Y2EzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19nZW5lcmF0b3IuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvdWxwZmVjX2dlbmVyYXRvci5jYwpAQCAtMTAsMTIgKzEwLDE1IEBACiAKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfZ2VuZXJhdG9yLmgiCiAKKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0
cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRl
X2lvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9j
b3JyZWN0aW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9l
cnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX3V0aWxpdHkuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2dlbmVyYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2dl
bmVyYXRvci5oCmluZGV4IGVmYzc1M2Y0Yzc0MTMyMzMxYWU2YzUzNTdjY2NjYzJiOWVjZTk2MzQu
Ljc0YTFkODAyNTZlYTljOWMzYjk2NTY0Y2IzMGQ3YWJhYWYxOTc4OTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3VscGZlY19nZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfZ2VuZXJhdG9y
LmgKQEAgLTExLDEwICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9V
TFBGRUNfR0VORVJBVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1VMUEZF
Q19HRU5FUkFUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4K
IAorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfZmVjX3R5cGVzLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2hlYWRlcl9y
ZWFkZXJfd3JpdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmNj
CmluZGV4IGM1NGQzY2RkOGY5MGIxZjM0MTI0YzlmZDQ4OWU0YjE4M2EwYWIxODEuLjIyYWY3ZTc3
MzY5MDRiYjI0ZDliODM3NjdjYmI0NWJiYzk3M2M5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3Vs
cGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfaGVhZGVy
X3JlYWRlcl93cml0ZXIuY2MKQEAgLTEwLDExICsxMCwxMiBAQAogCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmgiCiAKLSNpbmNs
dWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHN0cmluZy5oPgogCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfaGVhZGVyX3Jl
YWRlcl93cml0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5oCmlu
ZGV4IGZjODNhZmRmMGNjMDI1YTkyOTY2YmEzNTVmNmRlNmE2Y2I3NDRiYzEuLmE4YmI3MzdkYmI1
OGRhMDVlYjJkZWE2OGUxZTVmMjY4NTdjMjBmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZl
Y19oZWFkZXJfcmVhZGVyX3dyaXRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19oZWFkZXJfcmVh
ZGVyX3dyaXRlci5oCkBAIC0xMSw2ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1Bf
U09VUkNFX1VMUEZFQ19IRUFERVJfUkVBREVSX1dSSVRFUl9IXwogI2RlZmluZSBNT0RVTEVTX1JU
UF9SVENQX1NPVVJDRV9VTFBGRUNfSEVBREVSX1JFQURFUl9XUklURVJfSF8KIAorI2luY2x1ZGUg
PHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX3JlY2VpdmVyX2ltcGwuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1wbC5jYwppbmRleCBlYjA5Yzk1ODEzNDEzZDU3NTk1ZWJk
OTRhYjg5OTY4NGFiODM4ZGQ0Li43ZGE2Yjg4YTAwN2NmNWRkZWZkY2E4YzIxOGViYjE5NzVmODZm
NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1wbC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1wbC5jYwpAQCAtMTAsMTIgKzEwLDEzIEBACiAKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1wbC5oIgog
CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxp
dHk+CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dy
YXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX3JlY2Vp
dmVyX2ltcGwuaAppbmRleCA5NjM2N2RjN2FhODIxZWRjYzg1NmU3ZWRhNjFlZTNjMzU0MzlmYWY4
Li4wOTQzMjY2MTYxODAyYzc4NDJkZDI0NjA4NGE2ZjljNTA3ODg3MjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19yZWNl
aXZlcl9pbXBsLmgKQEAgLTExLDkgKzExLDEyIEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1Bf
U09VUkNFX1VMUEZFQ19SRUNFSVZFUl9JTVBMX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1Bf
U09VUkNFX1VMUEZFQ19SRUNFSVZFUl9JTVBMX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNp
bmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgog
CisjaW5jbHVkZSAiYXBpL3J0cF9oZWFkZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvdWxwZmVjX3JlY2VpdmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvQlVJTEQuZ24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxp
dHkvQlVJTEQuZ24KaW5kZXggMzJkYTEwOTUwZjI5M2U2MjZhOTJmOTdmNjhmMGFmNTVmN2FkYzAy
OC4uMWQ3ODBiMGU0YTc3MGZkMWVmZjM1NjVlZjExZTY0NDk1NzJmNjhkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy91dGlsaXR5
L0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdXRpbGl0eS9CVUlMRC5nbgpAQCAtMjYsNyArMjYsNiBAQCBydGNfc3RhdGljX2xp
YnJhcnkoInV0aWxpdHkiKSB7CiAKICAgZGVwcyA9IFsKICAgICAiLi46bW9kdWxlX2FwaSIsCi0g
ICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9jb21tb25fYXVkaW8iLAogICAg
ICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9h
cHByb3ZlZCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkv
c291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuY2MKaW5kZXggOTcyNzJkYTJiZjEwYTc2ZTMyYmFm
MTA1ZTM0YWI3Y2UzZjUxOGU5MC4uMjBmMjZkOTI3YTM5NDYzODk4NTcyYmE5ZjVmODc3MTI2YTU0
ZDc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy91dGlsaXR5L3NvdXJjZS9wcm9jZXNzX3RocmVhZF9pbXBsLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9z
b3VyY2UvcHJvY2Vzc190aHJlYWRfaW1wbC5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy91dGlsaXR5L3NvdXJjZS9wcm9jZXNzX3RocmVhZF9pbXBsLmgiCiAKKyNpbmNs
dWRlIDxzdHJpbmc+CisKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5o
IgpAQCAtNDIsOSArNDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1RocmVhZD4gUHJvY2Vz
c1RocmVhZDo6Q3JlYXRlKGNvbnN0IGNoYXIqIHRocmVhZF9uYW1lKSB7CiB9CiAKIFByb2Nlc3NU
aHJlYWRJbXBsOjpQcm9jZXNzVGhyZWFkSW1wbChjb25zdCBjaGFyKiB0aHJlYWRfbmFtZSkKLSAg
ICA6IHdha2VfdXBfKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAotICAgICAgc3RvcF8oZmFsc2Up
LAotICAgICAgdGhyZWFkX25hbWVfKHRocmVhZF9uYW1lKSB7fQorICAgIDogc3RvcF8oZmFsc2Up
LCB0aHJlYWRfbmFtZV8odGhyZWFkX25hbWUpIHt9CiAKIFByb2Nlc3NUaHJlYWRJbXBsOjp+UHJv
Y2Vzc1RocmVhZEltcGwoKSB7CiAgIFJUQ19EQ0hFQ0sodGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9u
VmFsaWRUaHJlYWQoKSk7CkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgUHJvY2Vzc1RocmVhZEltcGw6
OlN0b3AoKSB7CiAgICAgc3RvcF8gPSB0cnVlOwogICB9CiAKLSAgd2FrZV91cF8tPlNldCgpOwor
ICB3YWtlX3VwXy5TZXQoKTsKIAogICB0aHJlYWRfLT5TdG9wKCk7CiAgIHN0b3BfID0gZmFsc2U7
CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBQcm9jZXNzVGhyZWFkSW1wbDo6V2FrZVVwKE1vZHVs
ZSogbW9kdWxlKSB7CiAgICAgICAgIG0ubmV4dF9jYWxsYmFjayA9IGtDYWxsUHJvY2Vzc0ltbWVk
aWF0ZWx5OwogICAgIH0KICAgfQotICB3YWtlX3VwXy0+U2V0KCk7CisgIHdha2VfdXBfLlNldCgp
OwogfQogCiB2b2lkIFByb2Nlc3NUaHJlYWRJbXBsOjpQb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8
cnRjOjpRdWV1ZWRUYXNrPiB0YXNrKSB7CkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQcm9jZXNz
VGhyZWFkSW1wbDo6UG9zdFRhc2soc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6UXVldWVkVGFzaz4gdGFz
aykgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmxvY2tfKTsKICAgICBxdWV1ZV8ucHVzaCh0
YXNrLnJlbGVhc2UoKSk7CiAgIH0KLSAgd2FrZV91cF8tPlNldCgpOworICB3YWtlX3VwXy5TZXQo
KTsKIH0KIAogdm9pZCBQcm9jZXNzVGhyZWFkSW1wbDo6UmVnaXN0ZXJNb2R1bGUoTW9kdWxlKiBt
b2R1bGUsCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBQcm9jZXNzVGhyZWFkSW1wbDo6UmVnaXN0
ZXJNb2R1bGUoTW9kdWxlKiBtb2R1bGUsCiAgIC8vIFdha2UgdGhlIHRocmVhZCBjYWxsaW5nIFBy
b2Nlc3NUaHJlYWRJbXBsOjpQcm9jZXNzKCkgdG8gdXBkYXRlIHRoZQogICAvLyB3YWl0aW5nIHRp
bWUuIFRoZSB3YWl0aW5nIHRpbWUgZm9yIHRoZSBqdXN0IHJlZ2lzdGVyZWQgbW9kdWxlIG1heSBi
ZQogICAvLyBzaG9ydGVyIHRoYW4gYWxsIG90aGVyIHJlZ2lzdGVyZWQgbW9kdWxlcy4KLSAgd2Fr
ZV91cF8tPlNldCgpOworICB3YWtlX3VwXy5TZXQoKTsKIH0KIAogdm9pZCBQcm9jZXNzVGhyZWFk
SW1wbDo6RGVSZWdpc3Rlck1vZHVsZShNb2R1bGUqIG1vZHVsZSkgewpAQCAtMjE1LDcgKzIxNSw3
IEBAIGJvb2wgUHJvY2Vzc1RocmVhZEltcGw6OlByb2Nlc3MoKSB7CiAKICAgaW50NjRfdCB0aW1l
X3RvX3dhaXQgPSBuZXh0X2NoZWNrcG9pbnQgLSBydGM6OlRpbWVNaWxsaXMoKTsKICAgaWYgKHRp
bWVfdG9fd2FpdCA+IDApCi0gICAgd2FrZV91cF8tPldhaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZz4odGltZV90b193YWl0KSk7CisgICAgd2FrZV91cF8uV2FpdChzdGF0aWNfY2FzdDxpbnQ+
KHRpbWVfdG9fd2FpdCkpOwogCiAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy91dGlsaXR5L3NvdXJj
ZS9wcm9jZXNzX3RocmVhZF9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuaApp
bmRleCBjMWY2ZWQ0NDQ3NWQ2ZDc0ODU3MDQyNDdlYjZiZDBkYmEyNTgxZmYxLi5mZmYyMWQwNDYx
OWMwMjk2NDFhNjkwY2NiNDdkZDYzZjI3ZjdlZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nl
c3NfdGhyZWFkX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuaApAQCAt
MTEsMTYgKzExLDE5IEBACiAjaWZuZGVmIE1PRFVMRVNfVVRJTElUWV9TT1VSQ0VfUFJPQ0VTU19U
SFJFQURfSU1QTF9IXwogI2RlZmluZSBNT0RVTEVTX1VUSUxJVFlfU09VUkNFX1BST0NFU1NfVEhS
RUFEX0lNUExfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPGxpc3Q+CiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHF1ZXVlPgogCisjaW5jbHVkZSAibW9kdWxlcy9pbmNs
dWRlL21vZHVsZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3Nf
dGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Rh
c2tfcXVldWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgotI2luY2x1
ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKQEAgLTcyLDcgKzc1LDcgQEAgY2xhc3MgUHJvY2Vzc1RocmVhZEltcGwgOiBw
dWJsaWMgUHJvY2Vzc1RocmVhZCB7CiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGxvY2tfOyAgLy8g
VXNlZCB0byBndWFyZCBtb2R1bGVzXywgdGFza3NfIGFuZCBzdG9wXy4KIAogICBydGM6OlRocmVh
ZENoZWNrZXIgdGhyZWFkX2NoZWNrZXJfOwotICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRX
cmFwcGVyPiB3YWtlX3VwXzsKKyAgcnRjOjpFdmVudCB3YWtlX3VwXzsKICAgLy8gVE9ETyhwYm9z
KTogUmVtb3ZlIHVuaXF1ZV9wdHIgYW5kIHN0b3AgcmVjcmVhdGluZyB0aGUgdGhyZWFkLgogICBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpQbGF0Zm9ybVRocmVhZD4gdGhyZWFkXzsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy91dGls
aXR5L3NvdXJjZS9wcm9jZXNzX3RocmVhZF9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy91dGlsaXR5L3NvdXJjZS9wcm9j
ZXNzX3RocmVhZF9pbXBsX3VuaXR0ZXN0LmNjCmluZGV4IGQ1OTI2YjI2YzNlMmNhNGIwNzcyMjY2
M2NhYzZiYjBjNDZlMTVjNzAuLjE5MTU3OTYzYTNiYmJmOWY5M2Q3OGRjMzNiYTA1NWI0Mjk5ZDhl
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJvY2Vzc190aHJlYWRfaW1wbF91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0
aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGxfdW5pdHRlc3QuY2MKQEAgLTQyLDE0ICs0
MiwxNCBAQCBjbGFzcyBNb2NrTW9kdWxlIDogcHVibGljIE1vZHVsZSB7CiAKIGNsYXNzIFJhaXNl
RXZlbnRUYXNrIDogcHVibGljIHJ0Yzo6UXVldWVkVGFzayB7CiAgcHVibGljOgotICBSYWlzZUV2
ZW50VGFzayhFdmVudFdyYXBwZXIqIGV2ZW50KSA6IGV2ZW50XyhldmVudCkge30KKyAgUmFpc2VF
dmVudFRhc2socnRjOjpFdmVudCogZXZlbnQpIDogZXZlbnRfKGV2ZW50KSB7fQogICBib29sIFJ1
bigpIG92ZXJyaWRlIHsKICAgICBldmVudF8tPlNldCgpOwogICAgIHJldHVybiB0cnVlOwogICB9
CiAKICBwcml2YXRlOgotICBFdmVudFdyYXBwZXIqIGV2ZW50XzsKKyAgcnRjOjpFdmVudCogZXZl
bnRfOwogfTsKIAogQUNUSU9OX1AoU2V0RXZlbnQsIGV2ZW50KSB7CkBAIC04MywxOSArODMsMTkg
QEAgVEVTVChQcm9jZXNzVGhyZWFkSW1wbCwgUHJvY2Vzc0NhbGwpIHsKICAgUHJvY2Vzc1RocmVh
ZEltcGwgdGhyZWFkKCJQcm9jZXNzVGhyZWFkIik7CiAgIHRocmVhZC5TdGFydCgpOwogCi0gIHN0
ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+IGV2ZW50KEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkp
OworICBydGM6OkV2ZW50IGV2ZW50OwogCiAgIE1vY2tNb2R1bGUgbW9kdWxlOwogICBFWFBFQ1Rf
Q0FMTChtb2R1bGUsIFRpbWVVbnRpbE5leHRQcm9jZXNzKCkpCiAgICAgICAuV2lsbE9uY2UoUmV0
dXJuKDApKQogICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigxKSk7CiAgIEVYUEVDVF9DQUxM
KG1vZHVsZSwgUHJvY2VzcygpKQotICAgICAgLldpbGxPbmNlKERvQWxsKFNldEV2ZW50KGV2ZW50
LmdldCgpKSwgUmV0dXJuKCkpKQorICAgICAgLldpbGxPbmNlKERvQWxsKFNldEV2ZW50KCZldmVu
dCksIFJldHVybigpKSkKICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSk7CiAgIEVYUEVD
VF9DQUxMKG1vZHVsZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKCZ0aHJlYWQpKS5UaW1lcygxKTsK
IAogICB0aHJlYWQuUmVnaXN0ZXJNb2R1bGUoJm1vZHVsZSwgUlRDX0ZST01fSEVSRSk7Ci0gIEVY
UEVDVF9FUShrRXZlbnRTaWduYWxlZCwgZXZlbnQtPldhaXQoa0V2ZW50V2FpdFRpbWVvdXQpKTsK
KyAgRVhQRUNUX1RSVUUoZXZlbnQuV2FpdChrRXZlbnRXYWl0VGltZW91dCkpOwogCiAgIEVYUEVD
VF9DQUxMKG1vZHVsZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKG51bGxwdHIpKS5UaW1lcygxKTsK
ICAgdGhyZWFkLlN0b3AoKTsKQEAgLTEwNSwyMSArMTA1LDIxIEBAIFRFU1QoUHJvY2Vzc1RocmVh
ZEltcGwsIFByb2Nlc3NDYWxsKSB7CiAvLyBjYWxsIHRvIFN0YXJ0KCkuCiBURVNUKFByb2Nlc3NU
aHJlYWRJbXBsLCBQcm9jZXNzQ2FsbDIpIHsKICAgUHJvY2Vzc1RocmVhZEltcGwgdGhyZWFkKCJQ
cm9jZXNzVGhyZWFkIik7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+IGV2ZW50KEV2
ZW50V3JhcHBlcjo6Q3JlYXRlKCkpOworICBydGM6OkV2ZW50IGV2ZW50OwogCiAgIE1vY2tNb2R1
bGUgbW9kdWxlOwogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFRpbWVVbnRpbE5leHRQcm9jZXNzKCkp
CiAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDApKQogICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVy
bigxKSk7CiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2VzcygpKQotICAgICAgLldpbGxPbmNl
KERvQWxsKFNldEV2ZW50KGV2ZW50LmdldCgpKSwgUmV0dXJuKCkpKQorICAgICAgLldpbGxPbmNl
KERvQWxsKFNldEV2ZW50KCZldmVudCksIFJldHVybigpKSkKICAgICAgIC5XaWxsUmVwZWF0ZWRs
eShSZXR1cm4oKSk7CiAKICAgdGhyZWFkLlJlZ2lzdGVyTW9kdWxlKCZtb2R1bGUsIFJUQ19GUk9N
X0hFUkUpOwogCiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKCZ0
aHJlYWQpKS5UaW1lcygxKTsKICAgdGhyZWFkLlN0YXJ0KCk7Ci0gIEVYUEVDVF9FUShrRXZlbnRT
aWduYWxlZCwgZXZlbnQtPldhaXQoa0V2ZW50V2FpdFRpbWVvdXQpKTsKKyAgRVhQRUNUX1RSVUUo
ZXZlbnQuV2FpdChrRXZlbnRXYWl0VGltZW91dCkpOwogCiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwg
UHJvY2Vzc1RocmVhZEF0dGFjaGVkKG51bGxwdHIpKS5UaW1lcygxKTsKICAgdGhyZWFkLlN0b3Ao
KTsKQEAgLTEyOSw3ICsxMjksNyBAQCBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBQcm9jZXNzQ2Fs
bDIpIHsKIC8vIEFmdGVyIHVucmVnaXN0cmF0aW9uLCB3ZSBzaG91bGQgbm90IHJlY2VpdmUgYW55
IGZ1cnRoZXIgY2FsbGJhY2tzLgogVEVTVChQcm9jZXNzVGhyZWFkSW1wbCwgRGVyZWdpc3Rlcikg
ewogICBQcm9jZXNzVGhyZWFkSW1wbCB0aHJlYWQoIlByb2Nlc3NUaHJlYWQiKTsKLSAgc3RkOjp1
bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gZXZlbnQoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSk7Cisg
IHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgaW50IHByb2Nlc3NfY291bnQgPSAwOwogICBNb2NrTW9k
dWxlIG1vZHVsZTsKQEAgLTEzNyw4ICsxMzcsNyBAQCBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBE
ZXJlZ2lzdGVyKSB7CiAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDApKQogICAgICAgLldpbGxSZXBl
YXRlZGx5KFJldHVybigxKSk7CiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2VzcygpKQotICAg
ICAgLldpbGxPbmNlKAotICAgICAgICAgIERvQWxsKFNldEV2ZW50KGV2ZW50LmdldCgpKSwgSW5j
cmVtZW50KCZwcm9jZXNzX2NvdW50KSwgUmV0dXJuKCkpKQorICAgICAgLldpbGxPbmNlKERvQWxs
KFNldEV2ZW50KCZldmVudCksIEluY3JlbWVudCgmcHJvY2Vzc19jb3VudCksIFJldHVybigpKSkK
ICAgICAgIC5XaWxsUmVwZWF0ZWRseShEb0FsbChJbmNyZW1lbnQoJnByb2Nlc3NfY291bnQpLCBS
ZXR1cm4oKSkpOwogCiAgIHRocmVhZC5SZWdpc3Rlck1vZHVsZSgmbW9kdWxlLCBSVENfRlJPTV9I
RVJFKTsKQEAgLTE0Niw3ICsxNDUsNyBAQCBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBEZXJlZ2lz
dGVyKSB7CiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKCZ0aHJl
YWQpKS5UaW1lcygxKTsKICAgdGhyZWFkLlN0YXJ0KCk7CiAKLSAgRVhQRUNUX0VRKGtFdmVudFNp
Z25hbGVkLCBldmVudC0+V2FpdChrRXZlbnRXYWl0VGltZW91dCkpOworICBFWFBFQ1RfVFJVRShl
dmVudC5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CiAKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQ
cm9jZXNzVGhyZWFkQXR0YWNoZWQobnVsbHB0cikpLlRpbWVzKDEpOwogICB0aHJlYWQuRGVSZWdp
c3Rlck1vZHVsZSgmbW9kdWxlKTsKQEAgLTE1NSw3ICsxNTQsNyBAQCBURVNUKFByb2Nlc3NUaHJl
YWRJbXBsLCBEZXJlZ2lzdGVyKSB7CiAgIGludCBjb3VudF9hZnRlcl9kZXJlZ2lzdGVyID0gcHJv
Y2Vzc19jb3VudDsKIAogICAvLyBXZSBzaG91bGRuJ3QgZ2V0IGFueSBtb3JlIGNhbGxiYWNrcy4K
LSAgRVhQRUNUX0VRKGtFdmVudFRpbWVvdXQsIGV2ZW50LT5XYWl0KDIwKSk7CisgIEVYUEVDVF9G
QUxTRShldmVudC5XYWl0KDIwKSk7CiAgIEVYUEVDVF9FUShjb3VudF9hZnRlcl9kZXJlZ2lzdGVy
LCBwcm9jZXNzX2NvdW50KTsKICAgdGhyZWFkLlN0b3AoKTsKIH0KQEAgLTE2Nyw3ICsxNjYsNyBA
QCB2b2lkIFByb2Nlc3NDYWxsQWZ0ZXJBRmV3TXMoaW50NjRfdCBtaWxsaXNlY29uZHMpIHsKICAg
UHJvY2Vzc1RocmVhZEltcGwgdGhyZWFkKCJQcm9jZXNzVGhyZWFkIik7CiAgIHRocmVhZC5TdGFy
dCgpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+IGV2ZW50KEV2ZW50V3JhcHBl
cjo6Q3JlYXRlKCkpOworICBydGM6OkV2ZW50IGV2ZW50OwogCiAgIE1vY2tNb2R1bGUgbW9kdWxl
OwogICBpbnQ2NF90IHN0YXJ0X3RpbWUgPSAwOwpAQCAtMTc2LDggKzE3NSw3IEBAIHZvaWQgUHJv
Y2Vzc0NhbGxBZnRlckFGZXdNcyhpbnQ2NF90IG1pbGxpc2Vjb25kcykgewogICAgICAgLldpbGxP
bmNlKERvQWxsKFNldFRpbWVzdGFtcCgmc3RhcnRfdGltZSksIFJldHVybihtaWxsaXNlY29uZHMp
KSkKICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4obWlsbGlzZWNvbmRzKSk7CiAgIEVYUEVD
VF9DQUxMKG1vZHVsZSwgUHJvY2VzcygpKQotICAgICAgLldpbGxPbmNlKAotICAgICAgICAgIERv
QWxsKFNldFRpbWVzdGFtcCgmY2FsbGVkX3RpbWUpLCBTZXRFdmVudChldmVudC5nZXQoKSksIFJl
dHVybigpKSkKKyAgICAgIC5XaWxsT25jZShEb0FsbChTZXRUaW1lc3RhbXAoJmNhbGxlZF90aW1l
KSwgU2V0RXZlbnQoJmV2ZW50KSwgUmV0dXJuKCkpKQogICAgICAgLldpbGxSZXBlYXRlZGx5KFJl
dHVybigpKTsKIAogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFByb2Nlc3NUaHJlYWRBdHRhY2hlZCgm
dGhyZWFkKSkuVGltZXMoMSk7CkBAIC0xODUsNyArMTgzLDcgQEAgdm9pZCBQcm9jZXNzQ2FsbEFm
dGVyQUZld01zKGludDY0X3QgbWlsbGlzZWNvbmRzKSB7CiAKICAgLy8gQWRkIGEgYnVmZmVyIG9m
IDUwbXMgZHVlIHRvIHNsb3duZXNzIG9mIHNvbWUgdHJ5Ym90cwogICAvLyAoZS5nLiB3aW5fZHJt
ZW1vcnlfbGlnaHQpCi0gIEVYUEVDVF9FUShrRXZlbnRTaWduYWxlZCwgZXZlbnQtPldhaXQobWls
bGlzZWNvbmRzICsgNTApKTsKKyAgRVhQRUNUX1RSVUUoZXZlbnQuV2FpdChtaWxsaXNlY29uZHMg
KyA1MCkpOwogCiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKG51
bGxwdHIpKS5UaW1lcygxKTsKICAgdGhyZWFkLlN0b3AoKTsKQEAgLTIzMCw3ICsyMjgsNyBAQCBU
RVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBESVNBQkxFRF9Qcm9jZXNzNTBUaW1lcykgewogICBQcm9j
ZXNzVGhyZWFkSW1wbCB0aHJlYWQoIlByb2Nlc3NUaHJlYWQiKTsKICAgdGhyZWFkLlN0YXJ0KCk7
CiAKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gZXZlbnQoRXZlbnRXcmFwcGVyOjpD
cmVhdGUoKSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgTW9ja01vZHVsZSBtb2R1bGU7CiAg
IGludCBjYWxsYmFja19jb3VudCA9IDA7CkBAIC0yNDIsNyArMjQwLDcgQEAgVEVTVChQcm9jZXNz
VGhyZWFkSW1wbCwgRElTQUJMRURfUHJvY2VzczUwVGltZXMpIHsKICAgRVhQRUNUX0NBTEwobW9k
dWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQoJnRocmVhZCkpLlRpbWVzKDEpOwogICB0aHJlYWQu
UmVnaXN0ZXJNb2R1bGUoJm1vZHVsZSwgUlRDX0ZST01fSEVSRSk7CiAKLSAgRVhQRUNUX0VRKGtF
dmVudFRpbWVvdXQsIGV2ZW50LT5XYWl0KDEwMDApKTsKKyAgRVhQRUNUX1RSVUUoZXZlbnQuV2Fp
dCgxMDAwKSk7CiAKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQo
bnVsbHB0cikpLlRpbWVzKDEpOwogICB0aHJlYWQuU3RvcCgpOwpAQCAtMjYxLDggKzI1OSw4IEBA
IFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIFdha2VVcCkgewogICBQcm9jZXNzVGhyZWFkSW1wbCB0
aHJlYWQoIlByb2Nlc3NUaHJlYWQiKTsKICAgdGhyZWFkLlN0YXJ0KCk7CiAKLSAgc3RkOjp1bmlx
dWVfcHRyPEV2ZW50V3JhcHBlcj4gc3RhcnRlZChFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKTsKLSAg
c3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gY2FsbGVkKEV2ZW50V3JhcHBlcjo6Q3JlYXRl
KCkpOworICBydGM6OkV2ZW50IHN0YXJ0ZWQ7CisgIHJ0Yzo6RXZlbnQgY2FsbGVkOwogCiAgIE1v
Y2tNb2R1bGUgbW9kdWxlOwogICBpbnQ2NF90IHN0YXJ0X3RpbWU7CkBAIC0yNzYsMjAgKzI3NCwx
OSBAQCBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBXYWtlVXApIHsKICAgLy8gVGhlIHNlY29uZCB0
aW1lIFRpbWVVbnRpbE5leHRQcm9jZXNzIGlzIHRoZW4gY2FsbGVkLCBpcyBhZnRlciBQcm9jZXNz
CiAgIC8vIGhhcyBiZWVuIGNhbGxlZCBhbmQgd2UgZG9uJ3QgZXhwZWN0IGFueSBtb3JlIGNhbGxz
LgogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFRpbWVVbnRpbE5leHRQcm9jZXNzKCkpCi0gICAgICAu
V2lsbE9uY2UoRG9BbGwoU2V0VGltZXN0YW1wKCZzdGFydF90aW1lKSwgU2V0RXZlbnQoc3RhcnRl
ZC5nZXQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKDEwMDApKSkKKyAgICAgIC5X
aWxsT25jZSgKKyAgICAgICAgICBEb0FsbChTZXRUaW1lc3RhbXAoJnN0YXJ0X3RpbWUpLCBTZXRF
dmVudCgmc3RhcnRlZCksIFJldHVybigxMDAwKSkpCiAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEw
MDApKTsKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzKCkpCi0gICAgICAuV2lsbE9uY2Uo
Ci0gICAgICAgICAgRG9BbGwoU2V0VGltZXN0YW1wKCZjYWxsZWRfdGltZSksIFNldEV2ZW50KGNh
bGxlZC5nZXQoKSksIFJldHVybigpKSkKKyAgICAgIC5XaWxsT25jZShEb0FsbChTZXRUaW1lc3Rh
bXAoJmNhbGxlZF90aW1lKSwgU2V0RXZlbnQoJmNhbGxlZCksIFJldHVybigpKSkKICAgICAgIC5X
aWxsUmVwZWF0ZWRseShSZXR1cm4oKSk7CiAKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNz
VGhyZWFkQXR0YWNoZWQoJnRocmVhZCkpLlRpbWVzKDEpOwogICB0aHJlYWQuUmVnaXN0ZXJNb2R1
bGUoJm1vZHVsZSwgUlRDX0ZST01fSEVSRSk7CiAKLSAgRVhQRUNUX0VRKGtFdmVudFNpZ25hbGVk
LCBzdGFydGVkLT5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CisgIEVYUEVDVF9UUlVFKHN0YXJ0
ZWQuV2FpdChrRXZlbnRXYWl0VGltZW91dCkpOwogICB0aHJlYWQuV2FrZVVwKCZtb2R1bGUpOwot
ICBFWFBFQ1RfRVEoa0V2ZW50U2lnbmFsZWQsIGNhbGxlZC0+V2FpdChrRXZlbnRXYWl0VGltZW91
dCkpOworICBFWFBFQ1RfVFJVRShjYWxsZWQuV2FpdChrRXZlbnRXYWl0VGltZW91dCkpOwogCiAg
IEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKG51bGxwdHIpKS5UaW1l
cygxKTsKICAgdGhyZWFkLlN0b3AoKTsKQEAgLTMwNCwxMSArMzAxLDExIEBAIFRFU1QoUHJvY2Vz
c1RocmVhZEltcGwsIFdha2VVcCkgewogLy8gdGhyZWFkLgogVEVTVChQcm9jZXNzVGhyZWFkSW1w
bCwgUG9zdFRhc2spIHsKICAgUHJvY2Vzc1RocmVhZEltcGwgdGhyZWFkKCJQcm9jZXNzVGhyZWFk
Iik7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+IHRhc2tfcmFuKEV2ZW50V3JhcHBl
cjo6Q3JlYXRlKCkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8UmFpc2VFdmVudFRhc2s+IHRhc2sobmV3
IFJhaXNlRXZlbnRUYXNrKHRhc2tfcmFuLmdldCgpKSk7CisgIHJ0Yzo6RXZlbnQgdGFza19yYW47
CisgIHN0ZDo6dW5pcXVlX3B0cjxSYWlzZUV2ZW50VGFzaz4gdGFzayhuZXcgUmFpc2VFdmVudFRh
c2soJnRhc2tfcmFuKSk7CiAgIHRocmVhZC5TdGFydCgpOwogICB0aHJlYWQuUG9zdFRhc2soc3Rk
Ojptb3ZlKHRhc2spKTsKLSAgRVhQRUNUX0VRKGtFdmVudFNpZ25hbGVkLCB0YXNrX3Jhbi0+V2Fp
dChrRXZlbnRXYWl0VGltZW91dCkpOworICBFWFBFQ1RfVFJVRSh0YXNrX3Jhbi5XYWl0KGtFdmVu
dFdhaXRUaW1lb3V0KSk7CiAgIHRocmVhZC5TdG9wKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVy
ZS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY2FwdHVyZS9CVUlMRC5nbgppbmRleCBlZjZmMzM1ZTQ5MzlkNTc2Y2U2MTgx
ZTg5MDk0YWViZmZjMTBjNGFiLi40NGRiMmViNDc3YWEyOGE1M2ZjNmIxMDkxYmFlZTBjZjc2NGJj
Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL0JVSUxELmduCkBA
IC0zOCw2ICszOCw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgidmlkZW9fY2FwdHVyZV9tb2R1bGUi
KSB7CiAgICAgIi4uLy4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKICAgICAiLi4vLi4vcnRjX2Jh
c2Uvc3luY2hyb25pemF0aW9uOnJ3X2xvY2tfd3JhcHBlciIsCiAgICAgIi4uLy4uL3N5c3RlbV93
cmFwcGVycyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAog
ICAgICIvL3RoaXJkX3BhcnR5L2xpYnl1diIsCiAgIF0KIH0KQEAgLTE5MCw2ICsxOTEsNyBAQCBp
ZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgICAgICAgIi4uLy4uL2NvbW1vbl92aWRlbzpj
b21tb25fdmlkZW8iLAogICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAogICAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOnN5c3RlbV93cmFwcGVycyIsCisgICAg
ICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAgICIuLi8uLi90ZXN0OnZpZGVv
X3Rlc3RfY29tbW9uIiwKICAgICAgICAgIi4uL3V0aWxpdHkiLAogICAgICAgICAiLy90ZXN0aW5n
L2d0ZXN0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS9kZXZpY2VfaW5mb19pbXBsLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJl
L2RldmljZV9pbmZvX2ltcGwuY2MKaW5kZXggMmYwYTM5ZjI5NjRmYjM3YzcwM2Y5ODY0ZjE0YWQ3
N2EwZWIzNjFmYS4uY2RjYjVkZGM0YTgyNzQ0Y2MyOThkZTUxMmQ4MjA0ZTI3YTgwMjZiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jYXB0dXJlL2RldmljZV9pbmZvX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL2RldmljZV9p
bmZvX2ltcGwuY2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNs
dWRlIDxzdGRsaWIuaD4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY2FwdHVyZS9kZXZpY2VfaW5mb19pbXBsLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jYXB0dXJlL3ZpZGVvX2NhcHR1cmVfY29uZmlnLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgpAQCAtNDIsMTQgKzQzLDEyIEBAIGludDMyX3QgRGV2aWNlSW5m
b0ltcGw6Ok51bWJlck9mQ2FwYWJpbGl0aWVzKGNvbnN0IGNoYXIqIGRldmljZVVuaXF1ZUlkVVRG
OCkgewogCiAgIF9hcGlMb2NrLkFjcXVpcmVMb2NrU2hhcmVkKCk7CiAKLSAgaWYgKF9sYXN0VXNl
ZERldmljZU5hbWVMZW5ndGggPT0gc3RybGVuKChjaGFyKilkZXZpY2VVbmlxdWVJZFVURjgpKSB7
Ci0gICAgLy8gSXMgaXQgdGhlIHNhbWUgZGV2aWNlIHRoYXQgaXMgYXNrZWQgZm9yIGFnYWluLgot
ICAgIGlmIChfc3RybmljbXAoKGNoYXIqKV9sYXN0VXNlZERldmljZU5hbWUsIChjaGFyKilkZXZp
Y2VVbmlxdWVJZFVURjgsCi0gICAgICAgICAgICAgICAgICBfbGFzdFVzZWREZXZpY2VOYW1lTGVu
Z3RoKSA9PSAwKSB7Ci0gICAgICAvLyB5ZXMKLSAgICAgIF9hcGlMb2NrLlJlbGVhc2VMb2NrU2hh
cmVkKCk7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oX2NhcHR1cmVDYXBhYmls
aXRpZXMuc2l6ZSgpKTsKLSAgICB9CisgIC8vIElzIGl0IHRoZSBzYW1lIGRldmljZSB0aGF0IGlz
IGFza2VkIGZvciBhZ2Fpbi4KKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoCisgICAgICAg
ICAgZGV2aWNlVW5pcXVlSWRVVEY4LAorICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3KF9sYXN0
VXNlZERldmljZU5hbWUsIF9sYXN0VXNlZERldmljZU5hbWVMZW5ndGgpKSkgeworICAgIF9hcGlM
b2NrLlJlbGVhc2VMb2NrU2hhcmVkKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+
KF9jYXB0dXJlQ2FwYWJpbGl0aWVzLnNpemUoKSk7CiAgIH0KICAgLy8gTmVlZCB0byBnZXQgZXhj
bHVzaXZlIHJpZ2h0cyB0byBjcmVhdGUgdGhlIG5ldyBjYXBhYmlsaXR5IG1hcC4KICAgX2FwaUxv
Y2suUmVsZWFzZUxvY2tTaGFyZWQoKTsKQEAgLTY2LDkgKzY1LDkgQEAgaW50MzJfdCBEZXZpY2VJ
bmZvSW1wbDo6R2V0Q2FwYWJpbGl0eShjb25zdCBjaGFyKiBkZXZpY2VVbmlxdWVJZFVURjgsCiAK
ICAgUmVhZExvY2tTY29wZWQgY3MoX2FwaUxvY2spOwogCi0gIGlmICgoX2xhc3RVc2VkRGV2aWNl
TmFtZUxlbmd0aCAhPSBzdHJsZW4oKGNoYXIqKWRldmljZVVuaXF1ZUlkVVRGOCkpIHx8Ci0gICAg
ICAoX3N0cm5pY21wKChjaGFyKilfbGFzdFVzZWREZXZpY2VOYW1lLCAoY2hhciopZGV2aWNlVW5p
cXVlSWRVVEY4LAotICAgICAgICAgICAgICAgICBfbGFzdFVzZWREZXZpY2VOYW1lTGVuZ3RoKSAh
PSAwKSkgeworICBpZiAoIWFic2w6OkVxdWFsc0lnbm9yZUNhc2UoCisgICAgICAgICAgZGV2aWNl
VW5pcXVlSWRVVEY4LAorICAgICAgICAgIGFic2w6OnN0cmluZ192aWV3KF9sYXN0VXNlZERldmlj
ZU5hbWUsIF9sYXN0VXNlZERldmljZU5hbWVMZW5ndGgpKSkgewogICAgIF9hcGlMb2NrLlJlbGVh
c2VMb2NrU2hhcmVkKCk7CiAgICAgX2FwaUxvY2suQWNxdWlyZUxvY2tFeGNsdXNpdmUoKTsKICAg
ICBpZiAoLTEgPT0gQ3JlYXRlQ2FwYWJpbGl0eU1hcChkZXZpY2VVbmlxdWVJZFVURjgpKSB7CkBA
IC0xMDAsOSArOTksOSBAQCBpbnQzMl90IERldmljZUluZm9JbXBsOjpHZXRCZXN0TWF0Y2hlZENh
cGFiaWxpdHkoCiAgICAgcmV0dXJuIC0xOwogCiAgIFJlYWRMb2NrU2NvcGVkIGNzKF9hcGlMb2Nr
KTsKLSAgaWYgKChfbGFzdFVzZWREZXZpY2VOYW1lTGVuZ3RoICE9IHN0cmxlbigoY2hhciopZGV2
aWNlVW5pcXVlSWRVVEY4KSkgfHwKLSAgICAgIChfc3RybmljbXAoKGNoYXIqKV9sYXN0VXNlZERl
dmljZU5hbWUsIChjaGFyKilkZXZpY2VVbmlxdWVJZFVURjgsCi0gICAgICAgICAgICAgICAgIF9s
YXN0VXNlZERldmljZU5hbWVMZW5ndGgpICE9IDApKSB7CisgIGlmICghYWJzbDo6RXF1YWxzSWdu
b3JlQ2FzZSgKKyAgICAgICAgICBkZXZpY2VVbmlxdWVJZFVURjgsCisgICAgICAgICAgYWJzbDo6
c3RyaW5nX3ZpZXcoX2xhc3RVc2VkRGV2aWNlTmFtZSwgX2xhc3RVc2VkRGV2aWNlTmFtZUxlbmd0
aCkpKSB7CiAgICAgX2FwaUxvY2suUmVsZWFzZUxvY2tTaGFyZWQoKTsKICAgICBfYXBpTG9jay5B
Y3F1aXJlTG9ja0V4Y2x1c2l2ZSgpOwogICAgIGlmICgtMSA9PSBDcmVhdGVDYXBhYmlsaXR5TWFw
KGRldmljZVVuaXF1ZUlkVVRGOCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS92aWRlb19jYXB0dXJl
X2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NhcHR1cmUvdmlkZW9fY2FwdHVyZV9pbXBsLmNjCmluZGV4IDUzYWZlZDAwYjY0
NGU4OTVmZDJkYTVlMDgzYjMyODc3MDcxMzA0NGEuLjIzNWZkMzQzOGEyMTY0NjllNzgyOTdhY2Fk
ZTU2ODEzMjU3NGFhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS92aWRlb19jYXB0dXJlX2ltcGwuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jYXB0dXJlL3ZpZGVvX2NhcHR1cmVfaW1wbC5jYwpAQCAtMTQzLDcgKzE0Myw3IEBAIGlu
dDMyX3QgVmlkZW9DYXB0dXJlSW1wbDo6SW5jb21pbmdGcmFtZSh1aW50OF90KiB2aWRlb0ZyYW1l
LAogICBpbnQgc3RyaWRlX3kgPSB3aWR0aDsKICAgaW50IHN0cmlkZV91diA9ICh3aWR0aCArIDEp
IC8gMjsKICAgaW50IHRhcmdldF93aWR0aCA9IHdpZHRoOwotICBpbnQgdGFyZ2V0X2hlaWdodCA9
IGhlaWdodDsKKyAgaW50IHRhcmdldF9oZWlnaHQgPSBhYnMoaGVpZ2h0KTsKIAogICAvLyBTZXRB
cHBseVJvdGF0aW9uIGRvZXNuJ3QgdGFrZSBhbnkgbG9jay4gTWFrZSBhIGxvY2FsIGNvcHkgaGVy
ZS4KICAgYm9vbCBhcHBseV9yb3RhdGlvbiA9IGFwcGx5X3JvdGF0aW9uXzsKQEAgLTE2Myw3ICsx
NjMsNyBAQCBpbnQzMl90IFZpZGVvQ2FwdHVyZUltcGw6OkluY29taW5nRnJhbWUodWludDhfdCog
dmlkZW9GcmFtZSwKIAogICAvLyBUT0RPKG5pc3NlKTogVXNlIGEgcG9vbD8KICAgcnRjOjpzY29w
ZWRfcmVmcHRyPEk0MjBCdWZmZXI+IGJ1ZmZlciA9IEk0MjBCdWZmZXI6OkNyZWF0ZSgKLSAgICAg
IHRhcmdldF93aWR0aCwgYWJzKHRhcmdldF9oZWlnaHQpLCBzdHJpZGVfeSwgc3RyaWRlX3V2LCBz
dHJpZGVfdXYpOworICAgICAgdGFyZ2V0X3dpZHRoLCB0YXJnZXRfaGVpZ2h0LCBzdHJpZGVfeSwg
c3RyaWRlX3V2LCBzdHJpZGVfdXYpOwogCiAgIGxpYnl1djo6Um90YXRpb25Nb2RlIHJvdGF0aW9u
X21vZGUgPSBsaWJ5dXY6OmtSb3RhdGUwOwogICBpZiAoYXBwbHlfcm90YXRpb24pIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY2FwdHVyZS93aW5kb3dzL3ZpZGVvX2NhcHR1cmVfZHMuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvd2luZG93
cy92aWRlb19jYXB0dXJlX2RzLmNjCmluZGV4IDc3OGZkODc2MWFjMTliMzk2MWFjMjU3NDdhNWM3
NDNhYzU4MTE1N2MuLmVhMzc3YTNiMDVjYjZkNWQ1YTQ1NGZiZWY2MzA3ZTViY2IzMWI3ODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY2FwdHVyZS93aW5kb3dzL3ZpZGVvX2NhcHR1cmVfZHMuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJl
L3dpbmRvd3MvdmlkZW9fY2FwdHVyZV9kcy5jYwpAQCAtOTUsNiArOTUsMTAgQEAgaW50MzJfdCBW
aWRlb0NhcHR1cmVEUzo6SW5pdChjb25zdCBjaGFyKiBkZXZpY2VVbmlxdWVJZFVURjgpIHsKICAg
fQogCiAgIF9vdXRwdXRDYXB0dXJlUGluID0gR2V0T3V0cHV0UGluKF9jYXB0dXJlRmlsdGVyLCBQ
SU5fQ0FURUdPUllfQ0FQVFVSRSk7CisgIGlmICghX291dHB1dENhcHR1cmVQaW4pIHsKKyAgICBS
VENfTE9HKExTX0lORk8pIDw8ICJGYWlsZWQgdG8gZ2V0IG91dHB1dCBjYXB0dXJlIHBpbiI7Cisg
ICAgcmV0dXJuIC0xOworICB9CiAKICAgLy8gQ3JlYXRlIHRoZSBzaW5rIGZpbHRlIHVzZWQgZm9y
IHJlY2VpdmluZyBDYXB0dXJlZCBmcmFtZXMuCiAgIF9zaW5rRmlsdGVyID0gbmV3IENhcHR1cmVT
aW5rRmlsdGVyKFNJTktfRklMVEVSX05BTUUsIE5VTEwsICZociwgKnRoaXMpOwpAQCAtMTA5LDcg
KzExMywxMiBAQCBpbnQzMl90IFZpZGVvQ2FwdHVyZURTOjpJbml0KGNvbnN0IGNoYXIqIGRldmlj
ZVVuaXF1ZUlkVVRGOCkgewogICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkZhaWxlZCB0byBhZGQg
dGhlIHNlbmQgZmlsdGVyIHRvIHRoZSBncmFwaC4iOwogICAgIHJldHVybiAtMTsKICAgfQorCiAg
IF9pbnB1dFNlbmRQaW4gPSBHZXRJbnB1dFBpbihfc2lua0ZpbHRlcik7CisgIGlmICghX2lucHV0
U2VuZFBpbikgeworICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkZhaWxlZCB0byBnZXQgaW5wdXQg
c2VuZCBwaW4iOworICAgIHJldHVybiAtMTsKKyAgfQogCiAgIC8vIFRlbXBvcmFyeSBjb25uZWN0
IGhlcmUuCiAgIC8vIFRoaXMgaXMgZG9uZSBzbyB0aGF0IG5vIG9uZSBlbHNlIGNhbiB1c2UgdGhl
IGNhcHR1cmUgZGV2aWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvQlVJTEQuZ24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9CVUlM
RC5nbgppbmRleCBlNzU5YTRhN2U4ZGQ1ZTYzNWRkN2YyY2VmNDBlNTU4NDhkNmJhY2I4Li5hYzM1
OWJjNjRmODI3NzEyZWYyNTQwNmQ3ZDJjYjA2ZjVhOWRhNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9C
VUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9CVUlMRC5nbgpAQCAtMTcsOCArMTcsOCBAQCBydGNfc3RhdGlj
X2xpYnJhcnkoImVuY29kZWRfZnJhbWUiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjp2aWRlb19jb2Rl
Y19pbnRlcmZhY2UiLAogICAgICIuLi8uLi86d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2Fw
aS92aWRlbzplbmNvZGVkX2ltYWdlIiwKICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1l
X2k0MjAiLAotICAgICIuLi8uLi9jb21tb25fdmlkZW86Y29tbW9uX3ZpZGVvIiwKICAgICAiLi4v
Li4vbW9kdWxlczptb2R1bGVfYXBpIiwKICAgICAiLi4vLi4vbW9kdWxlczptb2R1bGVfYXBpX3B1
YmxpYyIsCiAgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGls
aXR5IiwKQEAgLTU3LDYgKzU3LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJuYWNrX21vZHVsZSIp
IHsKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi9y
dGNfYmFzZTpydGNfbnVtZXJpY3MiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAorICAg
ICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIuLi91dGlsaXR5OnV0
aWxpdHkiLAogICBdCiB9CkBAIC0xNTgsNiArMTU5LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ2
aWRlb19jb2RpbmciKSB7CiAgICAgIi4uOm1vZHVsZV9hcGlfcHVibGljIiwKICAgICAiLi4vLi46
d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL2FwaTpmZWNfY29udHJvbGxlcl9hcGkiLAorICAg
ICIuLi8uLi9hcGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5
IiwKICAgICAiLi4vLi4vYXBpL3ZpZGVvOmVuY29kZWRfZnJhbWUiLAogICAgICIuLi8uLi9hcGkv
dmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IiLAogICAgICIuLi8uLi9hcGkvdmlkZW86dmlk
ZW9fZnJhbWUiLApAQCAtMTY1LDEyICsxNjcsMTQgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRl
b19jb2RpbmciKSB7CiAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2Fw
aSIsCiAgICAgIi4uLy4uL2NvbW1vbl92aWRlbyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNr
cyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmRlcHJlY2F0aW9uIiwKICAgICAiLi4vLi4vcnRjX2Jh
c2U6cnRjX2Jhc2UiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAg
ICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19udW1lcmljcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0
Y190YXNrX3F1ZXVlIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6c2VxdWVuY2VkX3Rhc2tfY2hlY2tl
ciIsCiAgICAgIi4uLy4uL3J0Y19iYXNlL2V4cGVyaW1lbnRzOmFscl9leHBlcmltZW50IiwKKyAg
ICAiLi4vLi4vcnRjX2Jhc2UvZXhwZXJpbWVudHM6aml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1l
bnQiLAogICAgICIuLi8uLi9ydGNfYmFzZS9leHBlcmltZW50czpydHRfbXVsdF9leHBlcmltZW50
IiwKICAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOmZhbGx0aHJvdWdoIiwKICAgICAiLi4vLi4v
cnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0IiwKQEAgLTIzOCw4ICsyNDIsNiBAQCBydGNfc291
cmNlX3NldCgidmlkZW9fY29kaW5nX3V0aWxpdHkiKSB7CiAgICAgInV0aWxpdHkvZnJhbWVyYXRl
X2NvbnRyb2xsZXIuaCIsCiAgICAgInV0aWxpdHkvaXZmX2ZpbGVfd3JpdGVyLmNjIiwKICAgICAi
dXRpbGl0eS9pdmZfZmlsZV93cml0ZXIuaCIsCi0gICAgInV0aWxpdHkvbW92aW5nX2F2ZXJhZ2Uu
Y2MiLAotICAgICJ1dGlsaXR5L21vdmluZ19hdmVyYWdlLmgiLAogICAgICJ1dGlsaXR5L3F1YWxp
dHlfc2NhbGVyLmNjIiwKICAgICAidXRpbGl0eS9xdWFsaXR5X3NjYWxlci5oIiwKICAgICAidXRp
bGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3IuY2MiLApAQCAtMjYxLDYgKzI2Myw3IEBAIHJ0
Y19zb3VyY2Vfc2V0KCJ2aWRlb19jb2RpbmdfdXRpbGl0eSIpIHsKICAgICAiOnZpZGVvX2NvZGVj
X2ludGVyZmFjZSIsCiAgICAgIi4uOm1vZHVsZV9hcGkiLAogICAgICIuLi8uLjp3ZWJydGNfY29t
bW9uIiwKKyAgICAiLi4vLi4vYXBpL3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICIuLi8uLi9h
cGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IiLAogICAgICIuLi8uLi9hcGkvdmlkZW9f
Y29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9jb21tb25fdmlkZW8iLApAQCAt
MzAyLDggKzMwNSwxMCBAQCBydGNfc3RhdGljX2xpYnJhcnkoIndlYnJ0Y19oMjY0IikgewogICAg
ICIuLi8uLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNr
cyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uv
c3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIs
CiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2xp
Ynl1diIsCiAgIF0KIApAQCAtMzc2LDYgKzM4MSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgid2Vi
cnRjX211bHRpcGxleCIpIHsKICAgICAiOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKICAgICAiLi46
bW9kdWxlX2FwaSIsCiAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAorICAgICIuLi8uLi9hcGkv
dmlkZW86ZW5jb2RlZF9pbWFnZSIsCiAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIs
CiAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKICAgICAiLi4vLi4vYXBp
L3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKQEAgLTM5MSwyMiArMzk3LDEzIEBAIHJ0
Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX3ZwOCIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0K
ICAgcG9pc29ub3VzID0gWyAic29mdHdhcmVfdmlkZW9fY29kZWNzIiBdCiAgIHNvdXJjZXMgPSBb
Ci0gICAgImNvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuY2MiLAotICAgICJjb2Rl
Y3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmgiLAotICAgICJjb2RlY3MvdnA4L2luY2x1
ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuaCIsCiAgICAgImNvZGVjcy92cDgvaW5jbHVkZS92
cDguaCIsCi0gICAgImNvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiLAog
ICAgICJjb2RlY3MvdnA4L2xpYnZweF9pbnRlcmZhY2UuY2MiLAogICAgICJjb2RlY3MvdnA4L2xp
YnZweF9pbnRlcmZhY2UuaCIsCiAgICAgImNvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmNj
IiwKICAgICAiY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIuaCIsCiAgICAgImNvZGVjcy92
cDgvbGlidnB4X3ZwOF9lbmNvZGVyLmNjIiwKICAgICAiY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2Vu
Y29kZXIuaCIsCi0gICAgImNvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmNjIiwKLSAgICAi
Y29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuaCIsCi0gICAgImNvZGVjcy92cDgvdGVtcG9y
YWxfbGF5ZXJzLmgiLAotICAgICJjb2RlY3MvdnA4L3RlbXBvcmFsX2xheWVyc19jaGVja2VyLmNj
IiwKLSAgICAiY29kZWNzL3ZwOC92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjIiwKICAgXQogCiAgIGlm
ICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewpAQCAtNDE4LDE0ICs0MTUsMTgg
QEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNfdnA4IikgewogICAgICI6Y29kZWNfZ2xvYmFs
c19oZWFkZXJzIiwKICAgICAiOnZpZGVvX2NvZGVjX2ludGVyZmFjZSIsCiAgICAgIjp2aWRlb19j
b2RpbmdfdXRpbGl0eSIsCisgICAgIjp3ZWJydGNfdnA4X3RlbXBvcmFsX2xheWVycyIsCiAgICAg
Ii4uOm1vZHVsZV9hcGkiLAogICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4v
YXBpL3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJh
bWUiLAorICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOmNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5
ZXJzIiwKICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKICAg
ICAiLi4vLi4vY29tbW9uX3ZpZGVvIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAg
ICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi9ydGNfYmFz
ZTpydGNfbnVtZXJpY3MiLAorICAgICIuLi8uLi9ydGNfYmFzZS9leHBlcmltZW50czpjcHVfc3Bl
ZWRfZXhwZXJpbWVudCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAgIi4uLy4u
L3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVy
czptZXRyaWNzIiwKQEAgLTQzOCw2ICs0MzksNDEgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJy
dGNfdnA4IikgewogICB9CiB9CiAKK3J0Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX3ZwOF90ZW1w
b3JhbF9sYXllcnMiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisg
ICAgImNvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuY2MiLAorICAgICJjb2RlY3Mv
dnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmgiLAorICAgICJjb2RlY3MvdnA4L2luY2x1ZGUv
dGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuaCIsCisgICAgImNvZGVjcy92cDgvc2NyZWVuc2hhcmVf
bGF5ZXJzLmNjIiwKKyAgICAiY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuaCIsCisgICAg
ImNvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzLmgiLAorICAgICJjb2RlY3MvdnA4L3RlbXBvcmFs
X2xheWVyc19jaGVja2VyLmNjIiwKKyAgXQorCisgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAm
JiBpc19jbGFuZykgeworICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0g
Q2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KKyAgICBzdXBwcmVzc2VkX2NvbmZp
Z3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRfY29uc3RydWN0cyIgXQorICB9
CisKKyAgZGVwcyA9IFsKKyAgICAiOmNvZGVjX2dsb2JhbHNfaGVhZGVycyIsCisgICAgIjp2aWRl
b19jb2RlY19pbnRlcmZhY2UiLAorICAgICI6dmlkZW9fY29kaW5nX3V0aWxpdHkiLAorICAgICIu
Ljptb2R1bGVfYXBpIiwKKyAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2Fw
aS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmNo
ZWNrcyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4v
Li4vcnRjX2Jhc2U6cnRjX251bWVyaWNzIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwK
KyAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAiLi4vLi4vc3lz
dGVtX3dyYXBwZXJzOm1ldHJpY3MiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRp
b25hbCIsCisgIF0KK30KKwogIyBUaGlzIHRhcmdldCBpbmNsdWRlcyBWUDkgZmlsZXMgdGhhdCBt
YXkgYmUgdXNlZCBmb3IgYW55IFZQOSBjb2RlYywgaW50ZXJuYWwgU1cgb3IgZXh0ZXJuYWwgSFcu
CiBydGNfc3RhdGljX2xpYnJhcnkoIndlYnJ0Y192cDlfaGVscGVycyIpIHsKICAgc291cmNlcyA9
IFsKQEAgLTQ2NSwxOSArNTAxLDE0IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX3ZwOV9o
ZWxwZXJzIikgewogcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNfdnA5IikgewogICB2aXNpYmls
aXR5ID0gWyAiKiIgXQogICBwb2lzb25vdXMgPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0K
LSAgaWYgKHJ0Y19saWJ2cHhfYnVpbGRfdnA5KSB7Ci0gICAgc291cmNlcyA9IFsKLSAgICAgICJj
b2RlY3MvdnA5L2luY2x1ZGUvdnA5LmgiLAotICAgICAgImNvZGVjcy92cDkvdnA5X2ZyYW1lX2J1
ZmZlcl9wb29sLmNjIiwKLSAgICAgICJjb2RlY3MvdnA5L3ZwOV9mcmFtZV9idWZmZXJfcG9vbC5o
IiwKLSAgICAgICJjb2RlY3MvdnA5L3ZwOV9pbXBsLmNjIiwKLSAgICAgICJjb2RlY3MvdnA5L3Zw
OV9pbXBsLmgiLAotICAgIF0KLSAgfSBlbHNlIHsKLSAgICBzb3VyY2VzID0gWwotICAgICAgImNv
ZGVjcy92cDkvdnA5X25vb3AuY2MiLAotICAgIF0KLSAgfQorICBzb3VyY2VzID0gWworICAgICJj
b2RlY3MvdnA5L2luY2x1ZGUvdnA5LmgiLAorICAgICJjb2RlY3MvdnA5L3ZwOS5jYyIsCisgICAg
ImNvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmNjIiwKKyAgICAiY29kZWNzL3ZwOS92
cDlfZnJhbWVfYnVmZmVyX3Bvb2wuaCIsCisgICAgImNvZGVjcy92cDkvdnA5X2ltcGwuY2MiLAor
ICAgICJjb2RlY3MvdnA5L3ZwOV9pbXBsLmgiLAorICBdCiAKICAgaWYgKCFidWlsZF93aXRoX2No
cm9taXVtICYmIGlzX2NsYW5nKSB7CiAgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBD
aHJvbWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgpAQCAtNTc0LDcgKzYw
NSwxMCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6dmlkZW9fY29kaW5nIiwK
ICAgICAgICI6dmlkZW9fY29kaW5nX3V0aWxpdHkiLAogICAgICAgIi4uLy4uLzp3ZWJydGNfY29t
bW9uIiwKKyAgICAgICIuLi8uLi9hcGk6bW9ja192aWRlb19kZWNvZGVyIiwKKyAgICAgICIuLi8u
Li9hcGk6bW9ja192aWRlb19lbmNvZGVyIiwKICAgICAgICIuLi8uLi9hcGk6c2ltdWxjYXN0X3Rl
c3RfZml4dHVyZV9hcGkiLAorICAgICAgIi4uLy4uL2FwaS92aWRlbzplbmNvZGVkX2ltYWdlIiwK
ICAgICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAogICAgICAgIi4uLy4uL2FwaS92
aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZp
ZGVvX2NvZGVjc19hcGkiLApAQCAtNjA2LDYgKzY0MCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0
cykgewogICAgICAgIjp3ZWJydGNfdnA5X2hlbHBlcnMiLAogICAgICAgIi4uLy4uOndlYnJ0Y19j
b21tb24iLAogICAgICAgIi4uLy4uL2FwaTp2aWRlb2NvZGVjX3Rlc3RfZml4dHVyZV9hcGkiLAor
ICAgICAgIi4uLy4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2Zh
Y3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRvciIs
CiAgICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAgICIuLi8uLi9hcGkv
dmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCkBAIC02NzQsNiArNzA5LDcgQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgICAiOndlYnJ0Y192cDlfaGVscGVycyIsCiAgICAgICAiLi4vLi46
d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4vLi4vYXBpOnZpZGVvY29kZWNfdGVzdF9maXh0dXJl
X2FwaSIsCisgICAgICAiLi4vLi4vYXBpL3Rlc3QvdmlkZW86ZnVuY3Rpb25fdmlkZW9fZmFjdG9y
eSIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKICAg
ICAgICIuLi8uLi9jYWxsOnZpZGVvX3N0cmVhbV9hcGkiLAogICAgICAgIi4uLy4uL2NvbW1vbl92
aWRlbyIsCkBAIC03MTksNiArNzU1LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAg
fQogCiAgICAgZGVwcyA9IFsKKyAgICAgICI6bW9ja19oZWFkZXJzIiwKICAgICAgICI6dmlkZW9f
Y29kZWNzX3Rlc3RfZnJhbWV3b3JrIiwKICAgICAgICI6dmlkZW9fY29kaW5nX3V0aWxpdHkiLAog
ICAgICAgIjp2aWRlb2NvZGVjX3Rlc3RfaW1wbCIsCkBAIC03MzAsNyArNzY3LDEwIEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICAg
Ii4uLy4uL2FwaTpjcmVhdGVfdmlkZW9jb2RlY190ZXN0X2ZpeHR1cmVfYXBpIiwKICAgICAgICIu
Li8uLi9hcGk6bW9ja192aWRlb19jb2RlY19mYWN0b3J5IiwKKyAgICAgICIuLi8uLi9hcGk6bW9j
a192aWRlb19kZWNvZGVyIiwKKyAgICAgICIuLi8uLi9hcGk6bW9ja192aWRlb19lbmNvZGVyIiwK
ICAgICAgICIuLi8uLi9hcGk6dmlkZW9jb2RlY190ZXN0X2ZpeHR1cmVfYXBpIiwKKyAgICAgICIu
Li8uLi9hcGkvdGVzdC92aWRlbzpmdW5jdGlvbl92aWRlb19mYWN0b3J5IiwKICAgICAgICIuLi8u
Li9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19m
cmFtZV9pNDIwIiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnJ0Y19zb2Z0d2FyZV9m
YWxsYmFja193cmFwcGVycyIsCkBAIC03MzksMTEgKzc3OSwxMSBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICAgICIuLi8uLi9tZWRpYTpydGNfaDI2NF9wcm9maWxlX2lkIiwKICAgICAg
ICIuLi8uLi9tZWRpYTpydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIiwKICAgICAgICIuLi8uLi9t
ZWRpYTpydGNfbWVkaWFfYmFzZSIsCisgICAgICAiLi4vLi4vbWVkaWE6cnRjX3NpbXVsY2FzdF9l
bmNvZGVyX2FkYXB0ZXIiLAogICAgICAgIi4uLy4uL21lZGlhOnJ0Y192cDlfcHJvZmlsZSIsCiAg
ICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uLy4uL3Rlc3Q6ZmllbGRf
dHJpYWwiLAogICAgICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwKLSAgICAgICIuLi8uLi90ZXN0
OnRlc3RfY29tbW9uIiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAi
Li4vLi4vdGVzdDp2aWRlb190ZXN0X2NvbW1vbiIsCiAgICAgICAiLi4vcnRwX3J0Y3A6cnRwX3J0
Y3BfZm9ybWF0IiwKQEAgLTc3NCw2ICs4MTQsMTAgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7
CiAgICAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIENocm9taXVtIENsYW5nIHBsdWdp
biAoYnVncy53ZWJydGMub3JnLzE2MykuCiAgICAgICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAi
Ly9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRfY29uc3RydWN0cyIgXQogICAgIH0KKworICAg
IGlmIChydGNfYnVpbGRfbGlidnB4KSB7CisgICAgICBkZXBzICs9IFsgcnRjX2xpYnZweF9kaXIg
XQorICAgIH0KICAgfQogCiAgIHJ0Y19zb3VyY2Vfc2V0KCJ2aWRlb19jb2RpbmdfdW5pdHRlc3Rz
IikgewpAQCAtODA0LDEzICs4NDgsMTEgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAg
ICAic2Vzc2lvbl9pbmZvX3VuaXR0ZXN0LmNjIiwKICAgICAgICJ0ZXN0L3N0cmVhbV9nZW5lcmF0
b3IuY2MiLAogICAgICAgInRlc3Qvc3RyZWFtX2dlbmVyYXRvci5oIiwKLSAgICAgICJ0ZXN0L3Rl
c3RfdXRpbC5oIiwKICAgICAgICJ0aW1pbmdfdW5pdHRlc3QuY2MiLAogICAgICAgInV0aWxpdHkv
ZGVmYXVsdF92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAidXRp
bGl0eS9mcmFtZV9kcm9wcGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJ1dGlsaXR5L2ZyYW1lcmF0
ZV9jb250cm9sbGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJ1dGlsaXR5L2l2Zl9maWxlX3dyaXRl
cl91bml0dGVzdC5jYyIsCi0gICAgICAidXRpbGl0eS9tb3ZpbmdfYXZlcmFnZV91bml0dGVzdC5j
YyIsCiAgICAgICAidXRpbGl0eS9xdWFsaXR5X3NjYWxlcl91bml0dGVzdC5jYyIsCiAgICAgICAi
dXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MiLAogICAgICAgInZp
ZGVvX2NvZGVjX2luaXRpYWxpemVyX3VuaXR0ZXN0LmNjIiwKQEAgLTgzOSwxNiArODgxLDIzIEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjp2aWRlb2NvZGVjX3Rlc3RfaW1wbCIs
CiAgICAgICAiOndlYnJ0Y19oMjY0IiwKICAgICAgICI6d2VicnRjX3ZwOCIsCisgICAgICAiOndl
YnJ0Y192cDhfdGVtcG9yYWxfbGF5ZXJzIiwKICAgICAgICI6d2VicnRjX3ZwOSIsCiAgICAgICAi
OndlYnJ0Y192cDlfaGVscGVycyIsCiAgICAgICAiLi46bW9kdWxlX2FwaSIsCiAgICAgICAiLi4v
Li46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4vLi4vYXBpOmNyZWF0ZV9zaW11bGNhc3RfdGVz
dF9maXh0dXJlX2FwaSIsCisgICAgICAiLi4vLi4vYXBpOm1vY2tfdmlkZW9fZGVjb2RlciIsCisg
ICAgICAiLi4vLi4vYXBpOm1vY2tfdmlkZW9fZW5jb2RlciIsCiAgICAgICAiLi4vLi4vYXBpOnNp
bXVsY2FzdF90ZXN0X2ZpeHR1cmVfYXBpIiwKICAgICAgICIuLi8uLi9hcGk6dmlkZW9jb2RlY190
ZXN0X2ZpeHR1cmVfYXBpIiwKKyAgICAgICIuLi8uLi9hcGkvdGVzdC92aWRlbzpmdW5jdGlvbl92
aWRlb19mYWN0b3J5IiwKKyAgICAgICIuLi8uLi9hcGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fYml0
cmF0ZV9hbGxvY2F0b3IiLAorICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2Fs
bG9jYXRvcl9mYWN0b3J5IiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAog
ICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKKyAgICAgICIuLi8uLi9h
cGkvdmlkZW9fY29kZWNzOmNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzIiwKICAgICAgICIuLi8u
Li9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAogICAgICAgIi4uLy4uL2NvbW1v
bl92aWRlbzpjb21tb25fdmlkZW8iLAogICAgICAgIi4uLy4uL21lZGlhOnJ0Y19tZWRpYV9iYXNl
IiwKQEAgLTg1OSw2ICs5MDgsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIu
Li8uLi9ydGNfYmFzZTpydGNfbnVtZXJpY3MiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y190
YXNrX3F1ZXVlIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZV9mb3JfdGVz
dCIsCisgICAgICAiLi4vLi4vcnRjX2Jhc2UvZXhwZXJpbWVudHM6aml0dGVyX3VwcGVyX2JvdW5k
X2V4cGVyaW1lbnQiLAogICAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAgICAiLi4v
Li4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAgICIuLi8uLi9zeXN0ZW1fd3Jh
cHBlcnM6bWV0cmljcyIsCkBAIC04NzAsNiArOTIwLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3Rz
KSB7CiAgICAgICAiLi4vLi4vdGVzdDp2aWRlb190ZXN0X3N1cHBvcnQiLAogICAgICAgIi4uL3J0
cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvbWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
czpvcHRpb25hbCIsCiAgICAgXQogICAgIGlmIChydGNfYnVpbGRfbGlidnB4KSB7CiAgICAgICBk
ZXBzICs9IFsgcnRjX2xpYnZweF9kaXIgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQv
aDI2NF9kZWNvZGVyX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1w
bC5jYwppbmRleCA3M2Q0NTgzN2FmNzdkNjk5ZjZhNzk2YzFkY2Y1MWRmMzIxNmVhZGViLi5lMjEz
MjIzY2E0ZjgxMWQ3MWU5OWI1ZmM4YmYxMzk4Yzg5Y2M3NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9o
MjY0X2RlY29kZXJfaW1wbC5jYwpAQCAtMzIzLDEzICszMjMsMTEgQEAgaW50MzJfdCBIMjY0RGVj
b2RlckltcGw6OkRlY29kZShjb25zdCBFbmNvZGVkSW1hZ2UmIGlucHV0X2ltYWdlLAogICAvLyB3
aXRob3V0IGNvcHlpbmcgdGhlIHVuZGVybHlpbmcgYnVmZmVyLgogICBpZiAoYXZfZnJhbWVfLT53
aWR0aCAhPSBpNDIwX2J1ZmZlci0+d2lkdGgoKSB8fAogICAgICAgYXZfZnJhbWVfLT5oZWlnaHQg
IT0gaTQyMF9idWZmZXItPmhlaWdodCgpKSB7Ci0gICAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVv
RnJhbWVCdWZmZXI+IGNyb3BwZWRfYnVmKAotICAgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2Jq
ZWN0PFdyYXBwZWRJNDIwQnVmZmVyPigKLSAgICAgICAgICAgIGF2X2ZyYW1lXy0+d2lkdGgsIGF2
X2ZyYW1lXy0+aGVpZ2h0LAotICAgICAgICAgICAgaTQyMF9idWZmZXItPkRhdGFZKCksIGk0MjBf
YnVmZmVyLT5TdHJpZGVZKCksCi0gICAgICAgICAgICBpNDIwX2J1ZmZlci0+RGF0YVUoKSwgaTQy
MF9idWZmZXItPlN0cmlkZVUoKSwKLSAgICAgICAgICAgIGk0MjBfYnVmZmVyLT5EYXRhVigpLCBp
NDIwX2J1ZmZlci0+U3RyaWRlVigpLAotICAgICAgICAgICAgcnRjOjpLZWVwUmVmVW50aWxEb25l
KGk0MjBfYnVmZmVyKSkpOworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlb0ZyYW1lQnVmZmVy
PiBjcm9wcGVkX2J1ZiA9IFdyYXBJNDIwQnVmZmVyKAorICAgICAgICBhdl9mcmFtZV8tPndpZHRo
LCBhdl9mcmFtZV8tPmhlaWdodCwgaTQyMF9idWZmZXItPkRhdGFZKCksCisgICAgICAgIGk0MjBf
YnVmZmVyLT5TdHJpZGVZKCksIGk0MjBfYnVmZmVyLT5EYXRhVSgpLCBpNDIwX2J1ZmZlci0+U3Ry
aWRlVSgpLAorICAgICAgICBpNDIwX2J1ZmZlci0+RGF0YVYoKSwgaTQyMF9idWZmZXItPlN0cmlk
ZVYoKSwKKyAgICAgICAgcnRjOjpLZWVwUmVmVW50aWxEb25lKGk0MjBfYnVmZmVyKSk7CiAgICAg
VmlkZW9GcmFtZSBjcm9wcGVkX2ZyYW1lID0KICAgICAgICAgVmlkZW9GcmFtZTo6QnVpbGRlcigp
CiAgICAgICAgICAgICAuc2V0X3ZpZGVvX2ZyYW1lX2J1ZmZlcihjcm9wcGVkX2J1ZikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZW5jb2Rlcl9pbXBsLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL2gyNjQvaDI2NF9lbmNvZGVyX2ltcGwuY2MKaW5kZXggNGVmZmNkYmM1MjRmZWE5OTc3Mjdm
MmJlNGVmNjg2ZWZkOTQyMWU0MS4uZjE5MWYyYzY0MDMyYWE5NzQ1M2MwYzgxOTlkZjQyNDVmYjZk
YjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9lbmNvZGVyX2ltcGwuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9lbmNvZGVyX2ltcGwuY2MKQEAgLTE5LDYgKzE5
LDcgQEAKICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9vcGVuaDI2NC9zcmMvY29kZWMvYXBpL3N2Yy9j
b2RlY19kZWYuaCIKICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9vcGVuaDI2NC9zcmMvY29kZWMvYXBp
L3N2Yy9jb2RlY192ZXIuaCIKIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2lu
Y2x1ZGUgImNvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCiAjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0
b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF91
dGlsaXR5LmgiCkBAIC0xNjcsNyArMTY4LDcgQEAgSDI2NEVuY29kZXJJbXBsOjpIMjY0RW5jb2Rl
ckltcGwoY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyYgY29kZWMpCiAgICAgICBlbmNvZGVkX2lt
YWdlX2NhbGxiYWNrXyhudWxscHRyKSwKICAgICAgIGhhc19yZXBvcnRlZF9pbml0XyhmYWxzZSks
CiAgICAgICBoYXNfcmVwb3J0ZWRfZXJyb3JfKGZhbHNlKSB7Ci0gIFJUQ19DSEVDSyhjcmlja2V0
OjpDb2RlY05hbWVzRXEoY29kZWMubmFtZSwgY3JpY2tldDo6a0gyNjRDb2RlY05hbWUpKTsKKyAg
UlRDX0NIRUNLKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwgY3JpY2tldDo6a0gy
NjRDb2RlY05hbWUpKTsKICAgc3RkOjpzdHJpbmcgcGFja2V0aXphdGlvbl9tb2RlX3N0cmluZzsK
ICAgaWYgKGNvZGVjLkdldFBhcmFtKGNyaWNrZXQ6OmtIMjY0Rm10cFBhY2tldGl6YXRpb25Nb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgJnBhY2tldGl6YXRpb25fbW9kZV9zdHJpbmcpICYmCkBA
IC0zMTAsNyArMzExLDcgQEAgaW50MzJfdCBIMjY0RW5jb2RlckltcGw6OkluaXRFbmNvZGUoY29u
c3QgVmlkZW9Db2RlYyogaW5zdCwKICAgfQogCiAgIFNpbXVsY2FzdFJhdGVBbGxvY2F0b3IgaW5p
dF9hbGxvY2F0b3IoY29kZWNfKTsKLSAgQml0cmF0ZUFsbG9jYXRpb24gYWxsb2NhdGlvbiA9IGlu
aXRfYWxsb2NhdG9yLkdldEFsbG9jYXRpb24oCisgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYWxs
b2NhdGlvbiA9IGluaXRfYWxsb2NhdG9yLkdldEFsbG9jYXRpb24oCiAgICAgICBjb2RlY18uc3Rh
cnRCaXRyYXRlICogMTAwMCwgY29kZWNfLm1heEZyYW1lcmF0ZSk7CiAgIHJldHVybiBTZXRSYXRl
QWxsb2NhdGlvbihhbGxvY2F0aW9uLCBjb2RlY18ubWF4RnJhbWVyYXRlKTsKIH0KQEAgLTMzOSw3
ICszNDAsNyBAQCBpbnQzMl90IEgyNjRFbmNvZGVySW1wbDo6UmVnaXN0ZXJFbmNvZGVDb21wbGV0
ZUNhbGxiYWNrKAogfQogCiBpbnQzMl90IEgyNjRFbmNvZGVySW1wbDo6U2V0UmF0ZUFsbG9jYXRp
b24oCi0gICAgY29uc3QgQml0cmF0ZUFsbG9jYXRpb24mIGJpdHJhdGUsCisgICAgY29uc3QgVmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSwKICAgICB1aW50MzJfdCBuZXdfZnJhbWVyYXRl
KSB7CiAgIGlmIChlbmNvZGVyc18uZW1wdHkoKSkKICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NP
REVDX1VOSU5JVElBTElaRUQ7CkBAIC01MzQsMTAgKzUzNSw2IEBAIGludDMyX3QgSDI2NEVuY29k
ZXJJbXBsOjpFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRfZnJhbWUsCiAgIHJldHVybiBX
RUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKLWNvbnN0IGNoYXIqIEgyNjRFbmNvZGVySW1wbDo6
SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3QgewotICByZXR1cm4gIk9wZW5IMjY0IjsKLX0KLQog
Ly8gSW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycy4KIC8vIFRoZXJlIGFyZSB0d28gd2F5cyB0byBp
bml0aWFsaXplLiBUaGVyZSBpcyBTRW5jUGFyYW1CYXNlIChjbGVhcmVkIHdpdGgKIC8vIG1lbXNl
dCgmcCwgMCwgc2l6ZW9mKFNFbmNQYXJhbUJhc2UpKSB1c2VkIGluIEluaXRpYWxpemUsIGFuZCBT
RW5jUGFyYW1FeHQKQEAgLTYyNCwxNCArNjIxLDEzIEBAIHZvaWQgSDI2NEVuY29kZXJJbXBsOjpS
ZXBvcnRFcnJvcigpIHsKICAgaGFzX3JlcG9ydGVkX2Vycm9yXyA9IHRydWU7CiB9CiAKLWludDMy
X3QgSDI2NEVuY29kZXJJbXBsOjpTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRf
bG9zcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2
NF90IHJ0dCkgewotICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwotfQotCi1WaWRlb0Vu
Y29kZXI6OlNjYWxpbmdTZXR0aW5ncyBIMjY0RW5jb2RlckltcGw6OkdldFNjYWxpbmdTZXR0aW5n
cygpIGNvbnN0IHsKLSAgcmV0dXJuIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzKGtMb3dI
MjY0UXBUaHJlc2hvbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
SGlnaEgyNjRRcFRocmVzaG9sZCk7CitWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIEgyNjRFbmNv
ZGVySW1wbDo6R2V0RW5jb2RlckluZm8oKSBjb25zdCB7CisgIEVuY29kZXJJbmZvIGluZm87Cisg
IGluZm8uc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSA9IGZhbHNlOworICBpbmZvLmltcGxlbWVudGF0
aW9uX25hbWUgPSAiT3BlbkgyNjQiOworICBpbmZvLnNjYWxpbmdfc2V0dGluZ3MgPQorICAgICAg
VmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3Moa0xvd0gyNjRRcFRocmVzaG9sZCwga0hpZ2hI
MjY0UXBUaHJlc2hvbGQpOworICByZXR1cm4gaW5mbzsKIH0KIAogdm9pZCBIMjY0RW5jb2Rlcklt
cGw6OkxheWVyQ29uZmlnOjpTZXRTdHJlYW1TdGF0ZShib29sIHNlbmRfc3RyZWFtKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2VuY29kZXJfaW1wbC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL2gyNjQvaDI2NF9lbmNvZGVyX2ltcGwuaAppbmRleCAwZDI1OTY2MGY2OTliNmI1NWFiM2I1
NjMxYmM3NjI3NGQ2ZDNhMTM4Li5kYTMyNTYzYzliMmRlMmY3ZWYyZjA5NDg0ZDBmODhkMTE0MWZj
ZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2VuY29kZXJfaW1wbC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZW5jb2Rlcl9pbXBsLmgKQEAgLTcwLDEyICs3MCw3
IEBAIGNsYXNzIEgyNjRFbmNvZGVySW1wbCA6IHB1YmxpYyBIMjY0RW5jb2RlciB7CiAgICAgICAg
ICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZvLAog
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+KiBmcmFtZV90eXBl
cykgb3ZlcnJpZGU7CiAKLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1Nl
dHRpbmdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgLy8gVW5zdXBwb3J0ZWQgLyBEbyBub3RoaW5n
LgotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBp
bnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgLy8gRXhwb3NlZCBmb3IgdGVzdGluZy4KICAgSDI2NFBhY2tldGl6
YXRpb25Nb2RlIFBhY2tldGl6YXRpb25Nb2RlRm9yVGVzdGluZygpIGNvbnN0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfc2ltdWxjYXN0X3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL2gyNjQvaDI2NF9zaW11bGNhc3RfdW5pdHRlc3QuY2MKaW5kZXggNmM2ZmFlOGMxYTBk
MTQzYWFhMTJhMjczMWU0MWE3ZWM4ODEyNDlmMC4uM2I3MjBiMzg0MzBiNDcwOTczZWU0NDU0ZmJk
YzI5Y2Y3YjdlN2U2MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9zaW11bGNh
c3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9zaW11bGNhc3RfdW5p
dHRlc3QuY2MKQEAgLTEzLDkgKzEzLDkgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnku
aCIKICNpbmNsdWRlICJhcGkvdGVzdC9jcmVhdGVfc2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oIgog
I2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUuaCIKKyNpbmNsdWRlICJh
cGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRl
ICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9pbmNsdWRlL2gyNjQuaCIKLSNp
bmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUg
InRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVzdC9n
dGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9o
MjY0L2luY2x1ZGUvaDI2NC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0LmgKaW5k
ZXggZTIzODE4Yjc1NmI4NmYzMDMzZWI2Yjk1M2EzNjg4YmEzYzgwNmEzMi4uZjVjZWJjZmU2MjEy
MmM1ZWY3MjdmMzc3MDUwM2I2M2Y3ZmQ0ZjFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gy
NjQvaW5jbHVkZS9oMjY0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0LmgK
QEAgLTE3LDYgKzE3LDcgQEAKIAogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29kZWMuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCkBAIC0yNiwxMyArMjcsMTMgQEAgc3RydWN0IFNkcFZpZGVvRm9ybWF0OwogLy8g
fHJ0Y191c2VfaDI2NHwgYnVpbGQgZmxhZyBpcyB0cnVlIChpZiBmYWxzZSwgdGhpcyBmdW5jdGlv
biBkb2VzIG5vdGhpbmcpLgogLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQg
YmVmb3JlIG9yIGR1cmluZyBXZWJSVEMgaW5pdGlhbGl6YXRpb24KIC8vIGFuZCBpcyBub3QgdGhy
ZWFkLXNhZmUuCi12b2lkIERpc2FibGVSdGNVc2VIMjY0KCk7CitSVENfRVhQT1JUIHZvaWQgRGlz
YWJsZVJ0Y1VzZUgyNjQoKTsKIAogLy8gUmV0dXJucyBhIHZlY3RvciB3aXRoIGFsbCBzdXBwb3J0
ZWQgaW50ZXJuYWwgSDI2NCBwcm9maWxlcyB0aGF0IHdlIGNhbgogLy8gbmVnb3RpYXRlIGluIFNE
UCwgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZS4KIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBT
dXBwb3J0ZWRIMjY0Q29kZWNzKCk7CiAKLWNsYXNzIEgyNjRFbmNvZGVyIDogcHVibGljIFZpZGVv
RW5jb2RlciB7CitjbGFzcyBSVENfRVhQT1JUIEgyNjRFbmNvZGVyIDogcHVibGljIFZpZGVvRW5j
b2RlciB7CiAgcHVibGljOgogICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEgyNjRFbmNvZGVyPiBD
cmVhdGUoY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyYgY29kZWMpOwogICAvLyBJZiBILjI2NCBp
cyBzdXBwb3J0ZWQgKGFueSBpbXBsZW1lbnRhdGlvbikuCkBAIC00MSw3ICs0Miw3IEBAIGNsYXNz
IEgyNjRFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgIH5IMjY0RW5jb2RlcigpIG92
ZXJyaWRlIHt9CiB9OwogCi1jbGFzcyBIMjY0RGVjb2RlciA6IHB1YmxpYyBWaWRlb0RlY29kZXIg
eworY2xhc3MgUlRDX0VYUE9SVCBIMjY0RGVjb2RlciA6IHB1YmxpYyBWaWRlb0RlY29kZXIgewog
IHB1YmxpYzoKICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxIMjY0RGVjb2Rlcj4gQ3JlYXRlKCk7
CiAgIHN0YXRpYyBib29sIElzU3VwcG9ydGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
aDI2NC90ZXN0L2gyNjRfaW1wbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L3Rlc3Qv
aDI2NF9pbXBsX3VuaXR0ZXN0LmNjCmluZGV4IDE0YmI2YmNjNDdlNjNmMTUyZjhkMWEzYWY5MDM1
YWU1ZTM4Zjc1YTQuLjgyYzE0YjdmZDUyOWMwNmU0NmFjYTAxMGFhZjlmNmYyYzk1NGFhNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L3Rlc3QvaDI2NF9pbXBsX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy9oMjY0L3Rlc3QvaDI2NF9pbXBsX3VuaXR0ZXN0LmNjCkBAIC01Niw3
ICs1Niw3IEBAIFRFU1RfRihUZXN0SDI2NEltcGwsIE1BWUJFX0VuY29kZURlY29kZSkgewogICBB
U1NFUlRfVFJVRShkZWNvZGVkX2ZyYW1lKTsKICAgRVhQRUNUX0dUKEk0MjBQU05SKGlucHV0X2Zy
YW1lLCBkZWNvZGVkX2ZyYW1lLmdldCgpKSwgMzYpOwogCi0gIGNvbnN0IENvbG9yU3BhY2UgY29s
b3Jfc3BhY2UgPSBkZWNvZGVkX2ZyYW1lLT5jb2xvcl9zcGFjZSgpLnZhbHVlKCk7CisgIGNvbnN0
IENvbG9yU3BhY2UgY29sb3Jfc3BhY2UgPSAqZGVjb2RlZF9mcmFtZS0+Y29sb3Jfc3BhY2UoKTsK
ICAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlByaW1hcnlJRDo6a0ludmFsaWQsIGNvbG9yX3NwYWNl
LnByaW1hcmllcygpKTsKICAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OmtJbnZh
bGlkLCBjb2xvcl9zcGFjZS50cmFuc2ZlcigpKTsKICAgRVhQRUNUX0VRKENvbG9yU3BhY2U6Ok1h
dHJpeElEOjprSW52YWxpZCwgY29sb3Jfc3BhY2UubWF0cml4KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL2k0MjAvaW5jbHVkZS9pNDIwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaTQyMC9pbmNsdWRl
L2k0MjAuaAppbmRleCA1ODBiYzE2YzJmOGE5YzAzNDVlNzdmOTUzMGM5NjRmZjA1ZTQxMjVhLi45
NjcyODZmNDJjYjQzZTBmYzM2Yjc4YWFiMmE2ZWRjMDY4MmVlMWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvaTQyMC9pbmNsdWRlL2k0MjAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaTQyMC9pbmNs
dWRlL2k0MjAuaApAQCAtNjUsMTAgKzY1LDYgQEAgY2xhc3MgSTQyMEVuY29kZXIgOiBwdWJsaWMg
VmlkZW9FbmNvZGVyIHsKICAgLy8gUmV0dXJuIHZhbHVlICAgICAgICAgICAgICAgIDogV0VCUlRD
X1ZJREVPX0NPREVDX09LIGlmIE9LLCA8IDAgb3RoZXJ3aXNlLgogICBpbnQgUmVsZWFzZSgpIG92
ZXJyaWRlOwogCi0gIGludCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCAvKnBhY2tldExv
c3MqLywgaW50NjRfdCAvKnJ0dCovKSBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19PSzsKLSAgfQotCiAgcHJpdmF0ZToKICAgc3RhdGljIHVpbnQ4X3QqIEluc2VydEhl
YWRlcih1aW50OF90KiBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDE2X3Qgd2lkdGgsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L2luY2x1ZGUv
bXVsdGlwbGV4X2VuY29kZXJfYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9pbmNs
dWRlL211bHRpcGxleF9lbmNvZGVyX2FkYXB0ZXIuaAppbmRleCA1MzFkMDc4NzBlNzZkZTFlYTQ3
ZGU3MGE5ZWZiYzlkZWU5YzE0NjYzLi4yMzVhMzYwMzBiMDc4Y2ZhZWEyYmYzMTA4ZDQyOTViNWVi
MzYwMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L2luY2x1ZGUvbXVsdGlw
bGV4X2VuY29kZXJfYWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvaW5jbHVk
ZS9tdWx0aXBsZXhfZW5jb2Rlcl9hZGFwdGVyLmgKQEAgLTQ2LDExICs0NiwxMCBAQCBjbGFzcyBN
dWx0aXBsZXhFbmNvZGVyQWRhcHRlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICAgICAgICAg
ICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZvLAogICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1lVHlwZT4qIGZyYW1lX3R5cGVzKSBvdmVycmlk
ZTsKICAgaW50IFJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhFbmNvZGVkSW1hZ2VDYWxs
YmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwotICBpbnQgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWlu
dDMyX3QgcGFja2V0X2xvc3MsIGludDY0X3QgcnR0KSBvdmVycmlkZTsKICAgaW50IFNldFJhdGVB
bGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGJpdHJhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBuZXdfZnJhbWVyYXRlKSBvdmVycmlkZTsKICAgaW50
IFJlbGVhc2UoKSBvdmVycmlkZTsKLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgRW5jb2RlZEltYWdlQ2FsbGJhY2s6OlJlc3VsdCBPbkVuY29kZWRJbWFnZSgK
ICAgICAgIEFscGhhQ29kZWNTdHJlYW0gc3RyZWFtX2lkeCwKQEAgLTgxLDYgKzgwLDggQEAgY2xh
c3MgTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKIAogICBj
b25zdCBib29sIHN1cHBvcnRzX2F1Z21lbnRlZF9kYXRhXzsKICAgaW50IGF1Z21lbnRpbmdfZGF0
YV9zaXplXyA9IDA7CisKKyAgRW5jb2RlckluZm8gZW5jb2Rlcl9pbmZvXzsKIH07CiAKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVs
dGlwbGV4X2RlY29kZXJfYWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlw
bGV4X2RlY29kZXJfYWRhcHRlci5jYwppbmRleCBjYzU4OGQwMzQ3YTU4NTUyNzAyMTM1YjM2ODUy
NmI0YTFkZjczYTk2Li5hMjdiYzhkMjU4ODM0NWY1MDQ4YTJjNGQ3OTM1NGI0MWYxNzhmYjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211bHRpcGxleF9kZWNvZGVyX2FkYXB0
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9tdWx0aXBsZXhfZGVjb2Rlcl9hZGFw
dGVyLmNjCkBAIC0xMCw5ICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvbXVsdGlwbGV4L2luY2x1ZGUvbXVsdGlwbGV4X2RlY29kZXJfYWRhcHRlci5oIgog
CisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJhcGkvdmlk
ZW8vaTQyMF9idWZmZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVy
LmgiCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKICNpbmNs
dWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZV9idWZmZXIuaCIKICNpbmNsdWRl
ICJjb21tb25fdmlkZW8vbGlieXV2L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvaW5jbHVkZS9hdWdtZW50ZWRf
dmlkZW9fZnJhbWVfYnVmZmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4
L211bHRpcGxleF9lbmNvZGVkX2ltYWdlX3BhY2tlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxl
eC9tdWx0aXBsZXhfZW5jb2RlZF9pbWFnZV9wYWNrZXIuaAppbmRleCBlYTM3ZjBjNGQ5ZmY0NjUx
NjBjZThmYTUzNTdhZWRmNzU1OTNkNjU0Li4wZDJmOWZhMjZlYTM1ZDVhOGM0YjE1NDM1NDc5NmVl
MDU3YzMwMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211bHRpcGxleF9l
bmNvZGVkX2ltYWdlX3BhY2tlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlw
bGV4X2VuY29kZWRfaW1hZ2VfcGFja2VyLmgKQEAgLTE0LDggKzE0LDggQEAKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRf
aW1hZ2UuaCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlKQotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211
bHRpcGxleF9lbmNvZGVyX2FkYXB0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211bHRp
cGxleF9lbmNvZGVyX2FkYXB0ZXIuY2MKaW5kZXggYzNhNzUwNjJiNTRlYmU1ODkxNDkzOWFkMjcx
NGM4YjJkNmQxMmRiMS4uNGRhYmNhNzdmZDAwNTlhNTFiMzgzMjMxNjAxZDAzNTkzNTAwZTFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9tdWx0aXBsZXhfZW5jb2Rlcl9hZGFw
dGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlwbGV4X2VuY29kZXJfYWRh
cHRlci5jYwpAQCAtMTIsNyArMTIsNyBAQAogCiAjaW5jbHVkZSA8Y3N0cmluZz4KIAotI2luY2x1
ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCisjaW5jbHVkZSAiYXBpL3Zp
ZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRl
b19mcmFtZV9idWZmZXIuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vbGlieXV2L2luY2x1ZGUv
d2VicnRjX2xpYnl1di5oIgogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9u
X3R5cGVzLmgiCkBAIC01Myw2ICs1Myw3IEBAIE11bHRpcGxleEVuY29kZXJBZGFwdGVyOjpNdWx0
aXBsZXhFbmNvZGVyQWRhcHRlcigKICAgICA6IGZhY3RvcnlfKGZhY3RvcnkpLAogICAgICAgYXNz
b2NpYXRlZF9mb3JtYXRfKGFzc29jaWF0ZWRfZm9ybWF0KSwKICAgICAgIGVuY29kZWRfY29tcGxl
dGVfY2FsbGJhY2tfKG51bGxwdHIpLAorICAgICAga2V5X2ZyYW1lX2ludGVydmFsXygwKSwKICAg
ICAgIHN1cHBvcnRzX2F1Z21lbnRlZF9kYXRhXyhzdXBwb3J0c19hdWdtZW50ZWRfZGF0YSkge30K
IAogTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXI6On5NdWx0aXBsZXhFbmNvZGVyQWRhcHRlcigpIHsK
QEAgLTkyLDYgKzkzLDExIEBAIGludCBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlcjo6SW5pdEVuY29k
ZShjb25zdCBWaWRlb0NvZGVjKiBpbnN0LAogICAgICAgYnJlYWs7CiAgIH0KIAorICBlbmNvZGVy
X2luZm9fID0gRW5jb2RlckluZm8oKTsKKyAgZW5jb2Rlcl9pbmZvXy5pbXBsZW1lbnRhdGlvbl9u
YW1lID0gIk11bHRpcGxleEVuY29kZXJBZGFwdGVyICgiOworICAvLyBUaGlzIG5lZWRzIHRvIGJl
IGZhbHNlIHNvIHRoYXQgd2UgY2FuIGRvIHRoZSBzcGxpdCBpbiBFbmNvZGUoKS4KKyAgZW5jb2Rl
cl9pbmZvXy5zdXBwb3J0c19uYXRpdmVfaGFuZGxlID0gZmFsc2U7CisKICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBrQWxwaGFDb2RlY1N0cmVhbXM7ICsraSkgewogICAgIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb0VuY29kZXI+IGVuY29kZXIgPQogICAgICAgICBmYWN0b3J5Xy0+Q3JlYXRlVmlkZW9F
bmNvZGVyKGFzc29jaWF0ZWRfZm9ybWF0Xyk7CkBAIC0xMDQsOCArMTEwLDE3IEBAIGludCBNdWx0
aXBsZXhFbmNvZGVyQWRhcHRlcjo6SW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBpbnN0LAog
ICAgIGFkYXB0ZXJfY2FsbGJhY2tzXy5lbXBsYWNlX2JhY2sobmV3IEFkYXB0ZXJFbmNvZGVkSW1h
Z2VDYWxsYmFjaygKICAgICAgICAgdGhpcywgc3RhdGljX2Nhc3Q8QWxwaGFDb2RlY1N0cmVhbT4o
aSkpKTsKICAgICBlbmNvZGVyLT5SZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soYWRhcHRl
cl9jYWxsYmFja3NfLmJhY2soKS5nZXQoKSk7CisKKyAgICBjb25zdCBFbmNvZGVySW5mbyYgZW5j
b2Rlcl9pbXBsX2luZm8gPSBlbmNvZGVyLT5HZXRFbmNvZGVySW5mbygpOworICAgIGVuY29kZXJf
aW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSArPSBlbmNvZGVyX2ltcGxfaW5mby5pbXBsZW1lbnRh
dGlvbl9uYW1lOworICAgIGlmIChpICE9IGtBbHBoYUNvZGVjU3RyZWFtcyAtIDEpIHsKKyAgICAg
IGVuY29kZXJfaW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSArPSAiLCAiOworICAgIH0KKwogICAg
IGVuY29kZXJzXy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKGVuY29kZXIpKTsKICAgfQorICBlbmNv
ZGVyX2luZm9fLmltcGxlbWVudGF0aW9uX25hbWUgKz0gIikiOworCiAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfT0s7CiB9CiAKQEAgLTE4NywxNiArMjAyLDYgQEAgaW50IE11bHRpcGxleEVu
Y29kZXJBZGFwdGVyOjpSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgIHJldHVybiBX
RUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKLWludCBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlcjo6
U2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0KSB7Ci0gIGZv
ciAoYXV0byYgZW5jb2RlciA6IGVuY29kZXJzXykgewotICAgIGNvbnN0IGludCBydiA9IGVuY29k
ZXItPlNldENoYW5uZWxQYXJhbWV0ZXJzKHBhY2tldF9sb3NzLCBydHQpOwotICAgIGlmIChydikK
LSAgICAgIHJldHVybiBydjsKLSAgfQotICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwot
fQotCiBpbnQgTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXI6OlNldFJhdGVBbGxvY2F0aW9uKAogICAg
IGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGJpdHJhdGUsCiAgICAgdWludDMyX3QgZnJh
bWVyYXRlKSB7CkBAIC0yMzgsOCArMjQzLDggQEAgaW50IE11bHRpcGxleEVuY29kZXJBZGFwdGVy
OjpSZWxlYXNlKCkgewogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQogCi1jb25z
dCBjaGFyKiBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlcjo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29u
c3QgewotICByZXR1cm4gIk11bHRpcGxleEVuY29kZXJBZGFwdGVyIjsKK1ZpZGVvRW5jb2Rlcjo6
RW5jb2RlckluZm8gTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXI6OkdldEVuY29kZXJJbmZvKCkgY29u
c3QgeworICByZXR1cm4gZW5jb2Rlcl9pbmZvXzsKIH0KIAogRW5jb2RlZEltYWdlQ2FsbGJhY2s6
OlJlc3VsdCBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlcjo6T25FbmNvZGVkSW1hZ2UoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb19jb2RlY191bml0dGVzdC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3Rlc3QvdmlkZW9fY29kZWNfdW5pdHRlc3QuaAppbmRleCA0ODg2MGMzNWE2ZjM0OTcxNTky
ZTNkM2VjOWI0YzcwN2VkZGI3ZTUxLi45YTRkNjBjZWMyNjc4NzI2NjEzYTFhNzJjMTg2YTcwNWU3
MTVjNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb19jb2RlY191bml0dGVz
dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvX2NvZGVjX3VuaXR0ZXN0LmgKQEAgLTMy
LDExICszMiw3IEBAIGNsYXNzIFZpZGVvQ29kZWNVbml0VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgewogICBWaWRlb0NvZGVjVW5pdFRlc3QoKQogICAgICAgOiBlbmNvZGVfY29tcGxldGVf
Y2FsbGJhY2tfKHRoaXMpLAogICAgICAgICBkZWNvZGVfY29tcGxldGVfY2FsbGJhY2tfKHRoaXMp
LAotICAgICAgICBlbmNvZGVkX2ZyYW1lX2V2ZW50XyhmYWxzZSAvKiBtYW51YWwgcmVzZXQgKi8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIGluaXRpYWxseSBzaWduYWxl
ZCAqLyksCiAgICAgICAgIHdhaXRfZm9yX2VuY29kZWRfZnJhbWVzX3RocmVzaG9sZF8oMSksCi0g
ICAgICAgIGRlY29kZWRfZnJhbWVfZXZlbnRfKGZhbHNlIC8qIG1hbnVhbCByZXNldCAqLywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaW5pdGlhbGx5IHNpZ25hbGVkICov
KSwKICAgICAgICAgbGFzdF9pbnB1dF9mcmFtZV90aW1lc3RhbXBfKDApIHt9CiAKICBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfZml4dHVy
ZV9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X2ZpeHR1cmVfaW1w
bC5jYwppbmRleCA0ZGMyNjhhMDQzMWYwOTVlZmQ5NDQzYzczYWNjZDg4OTY5OTg2ZTUyLi44NDdl
ODQ3ODViY2I0MzI2ZDQ3MzM2MTMxZmU2YjRmY2MwNzY3NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfZml4dHVyZV9pbXBsLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9maXh0dXJlX2ltcGwuY2MKQEAgLTEzMCw5ICsxMzAs
NyBAQCBib29sIFJ1bkVuY29kZUluUmVhbFRpbWUoY29uc3QgVmlkZW9Db2RlY1Rlc3RGaXh0dXJl
SW1wbDo6Q29uZmlnJiBjb25maWcpIHsKIAogc3RkOjpzdHJpbmcgRmlsZW5hbWVXaXRoUGFyYW1z
KAogICAgIGNvbnN0IFZpZGVvQ29kZWNUZXN0Rml4dHVyZUltcGw6OkNvbmZpZyYgY29uZmlnKSB7
Ci0gIHN0ZDo6c3RyaW5nIGltcGxlbWVudGF0aW9uX3R5cGUgPSBjb25maWcuaHdfZW5jb2RlciA/
ICJodyIgOiAic3ciOwogICByZXR1cm4gY29uZmlnLmZpbGVuYW1lICsgIl8iICsgY29uZmlnLkNv
ZGVjTmFtZSgpICsgIl8iICsKLSAgICAgICAgIGltcGxlbWVudGF0aW9uX3R5cGUgKyAiXyIgKwog
ICAgICAgICAgc3RkOjp0b19zdHJpbmcoY29uZmlnLmNvZGVjX3NldHRpbmdzLnN0YXJ0Qml0cmF0
ZSk7CiB9CiAKQEAgLTQ0Niw3ICs0NDQsNyBAQCB2b2lkIFZpZGVvQ29kZWNUZXN0Rml4dHVyZUlt
cGw6OlByb2Nlc3NBbGxGcmFtZXMoCiAgIH0KIAogICAvLyBXYWl0IHVudGlsIHdlIGtub3cgdGhh
dCB0aGUgbGFzdCBmcmFtZSBoYXMgYmVlbiBzZW50IGZvciBlbmNvZGUuCi0gIHJ0Yzo6RXZlbnQg
c3luY19ldmVudChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IHN5bmNfZXZlbnQ7CiAgIHRh
c2tfcXVldWUtPlBvc3RUYXNrKFsmc3luY19ldmVudF0geyBzeW5jX2V2ZW50LlNldCgpOyB9KTsK
ICAgc3luY19ldmVudC5XYWl0KHJ0Yzo6RXZlbnQ6OmtGb3JldmVyKTsKIApAQCAtNjczLDcgKzY3
MSw3IEBAIHZvaWQgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlSW1wbDo6UHJpbnRTZXR0aW5ncygKICAg
c3RkOjpzdHJpbmcgZW5jb2Rlcl9uYW1lOwogICBzdGQ6OnN0cmluZyBkZWNvZGVyX25hbWU7CiAg
IHRhc2tfcXVldWUtPlNlbmRUYXNrKFt0aGlzLCAmZW5jb2Rlcl9uYW1lLCAmZGVjb2Rlcl9uYW1l
XSB7Ci0gICAgZW5jb2Rlcl9uYW1lID0gZW5jb2Rlcl8tPkltcGxlbWVudGF0aW9uTmFtZSgpOwor
ICAgIGVuY29kZXJfbmFtZSA9IGVuY29kZXJfLT5HZXRFbmNvZGVySW5mbygpLmltcGxlbWVudGF0
aW9uX25hbWU7CiAgICAgZGVjb2Rlcl9uYW1lID0gZGVjb2RlcnNfLmF0KDApLT5JbXBsZW1lbnRh
dGlvbk5hbWUoKTsKICAgfSk7CiAgIHByaW50ZigiZW5jX2ltcGxfbmFtZTogJXNcbiIsIGVuY29k
ZXJfbmFtZS5jX3N0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29k
ZWNfdGVzdF9saWJ2cHguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfbGli
dnB4LmNjCmluZGV4IDk1ODZjZTljNzkyMzgyMTMzNDIxYWVkODE2Y2JhZjVlZGVlOGQwNDguLmY2
OWZkZTY4ODQwMTBmYzM1ZmMzOTY3MDJlMjQzYmIyNzZhYjQzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9saWJ2cHguY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3Rlc3QvdmlkZW9jb2RlY190ZXN0X2xpYnZweC5jYwpAQCAtMTIsNiArMTIsNyBAQAogCiAjaW5j
bHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL3Rlc3QvY3JlYXRlX3Zp
ZGVvY29kZWNfdGVzdF9maXh0dXJlLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rp
b25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9z
ZHBfdmlkZW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5o
IgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGRlY29kZXJmYWN0b3J5LmgiCkBAIC0x
OSw3ICsyMCw2IEBACiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVyX2Fk
YXB0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3ZwOF9oZWFk
ZXJfcGFyc2VyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS92cDlf
dW5jb21wcmVzc2VkX2hlYWRlcl9wYXJzZXIuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRl
ICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgogCkBAIC02Myw4ICs2Myw2IEBAIFZpZGVv
Q29kZWNUZXN0Rml4dHVyZTo6Q29uZmlnIENyZWF0ZUNvbmZpZygpIHsKICAgY29uZmlnLmZpbGVw
YXRoID0gUmVzb3VyY2VQYXRoKGNvbmZpZy5maWxlbmFtZSwgInl1diIpOwogICBjb25maWcubnVt
X2ZyYW1lcyA9IGtOdW1GcmFtZXNMb25nOwogICBjb25maWcudXNlX3NpbmdsZV9jb3JlID0gdHJ1
ZTsKLSAgY29uZmlnLmh3X2VuY29kZXIgPSBmYWxzZTsKLSAgY29uZmlnLmh3X2RlY29kZXIgPSBm
YWxzZTsKICAgcmV0dXJuIGNvbmZpZzsKIH0KIApAQCAtOTIsNyArOTAsNyBAQCB2b2lkIFByaW50
UmRQZXJmKHN0ZDo6bWFwPHNpemVfdCwgc3RkOjp2ZWN0b3I8VmlkZW9TdGF0aXN0aWNzPj4gcmRf
c3RhdHMpIHsKIH0KIH0gIC8vIG5hbWVzcGFjZQogCi0jaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVf
VlA5KQorI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiBURVNUKFZpZGVvQ29kZWNUZXN0TGli
dnB4LCBIaWdoQml0cmF0ZVZQOSkgewogICBhdXRvIGNvbmZpZyA9IENyZWF0ZUNvbmZpZygpOwog
ICBjb25maWcuU2V0Q29kZWNTZXR0aW5ncyhjcmlja2V0OjprVnA5Q29kZWNOYW1lLCAxLCAxLCAx
LCBmYWxzZSwgdHJ1ZSwgZmFsc2UsCkBAIC0xMDUsNyArMTAzLDcgQEAgVEVTVChWaWRlb0NvZGVj
VGVzdExpYnZweCwgSGlnaEJpdHJhdGVWUDkpIHsKICAgc3RkOjp2ZWN0b3I8UmF0ZVByb2ZpbGU+
IHJhdGVfcHJvZmlsZXMgPSB7ezUwMCwgMzAsIGtOdW1GcmFtZXNTaG9ydH19OwogCiAgIHN0ZDo6
dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4gcmNfdGhyZXNob2xkcyA9IHsKLSAgICAgIHs1
LCAxLCAwLCAwLjExLCAwLjMsIDAuMSwgMCwgMX19OworICAgICAgezUsIDEsIDAsIDEsIDAuMywg
MC4xLCAwLCAxfX07CiAKICAgc3RkOjp2ZWN0b3I8UXVhbGl0eVRocmVzaG9sZHM+IHF1YWxpdHlf
dGhyZXNob2xkcyA9IHt7MzcsIDM2LCAwLjk0LCAwLjkyfX07CiAKQEAgLTEyNiw5ICsxMjQsOSBA
QCBURVNUKFZpZGVvQ29kZWNUZXN0TGlidnB4LCBDaGFuZ2VCaXRyYXRlVlA5KSB7CiAgICAgICB7
NTAwLCAzMCwga051bUZyYW1lc0xvbmd9fTsKIAogICBzdGQ6OnZlY3RvcjxSYXRlQ29udHJvbFRo
cmVzaG9sZHM+IHJjX3RocmVzaG9sZHMgPSB7Ci0gICAgICB7NSwgMSwgMCwgMC4xNSwgMC41LCAw
LjEsIDAsIDF9LAotICAgICAgezE1LCAyLCAwLCAwLjIsIDAuNSwgMC4xLCAwLCAwfSwKLSAgICAg
IHsxMCwgMSwgMCwgMC4zLCAwLjUsIDAuMSwgMCwgMH19OworICAgICAgezUsIDEsIDAsIDEsIDAu
NSwgMC4xLCAwLCAxfSwKKyAgICAgIHsxNSwgMiwgMCwgMSwgMC41LCAwLjEsIDAsIDB9LAorICAg
ICAgezEwLCAxLCAwLCAxLCAwLjUsIDAuMSwgMCwgMH19OwogCiAgIHN0ZDo6dmVjdG9yPFF1YWxp
dHlUaHJlc2hvbGRzPiBxdWFsaXR5X3RocmVzaG9sZHMgPSB7CiAgICAgICB7MzQsIDMzLCAwLjkw
LCAwLjg4fSwgezM4LCAzNSwgMC45NSwgMC45MX0sIHszNSwgMzQsIDAuOTMsIDAuOTB9fTsKQEAg
LTE1MSw5ICsxNDksOSBAQCBURVNUKFZpZGVvQ29kZWNUZXN0TGlidnB4LCBDaGFuZ2VGcmFtZXJh
dGVWUDkpIHsKIAogICAvLyBGcmFtZXJhdGUgbWlzbWF0Y2ggc2hvdWxkIGJlIGxvd2VyIGZvciBs
b3dlciBmcmFtZXJhdGUuCiAgIHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4gcmNf
dGhyZXNob2xkcyA9IHsKLSAgICAgIHsxMCwgMiwgNDAsIDAuNCwgMC41LCAwLjIsIDAsIDF9LAot
ICAgICAgezgsIDIsIDUsIDAuMiwgMC41LCAwLjIsIDAsIDB9LAotICAgICAgezUsIDIsIDAsIDAu
MjEsIDAuNSwgMC4zLCAwLCAwfX07CisgICAgICB7MTAsIDIsIDQwLCAxLCAwLjUsIDAuMiwgMCwg
MX0sCisgICAgICB7OCwgMiwgNSwgMSwgMC41LCAwLjIsIDAsIDB9LAorICAgICAgezUsIDIsIDAs
IDEsIDAuNSwgMC4zLCAwLCAwfX07CiAKICAgLy8gUXVhbGl0eSBzaG91bGQgYmUgaGlnaGVyIGZv
ciBsb3dlciBmcmFtZXJhdGVzIGZvciB0aGUgc2FtZSBjb250ZW50LgogICBzdGQ6OnZlY3RvcjxR
dWFsaXR5VGhyZXNob2xkcz4gcXVhbGl0eV90aHJlc2hvbGRzID0gewpAQCAtMTc0LDcgKzE3Miw3
IEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIERlbm9pc2VyT25WUDkpIHsKICAgc3RkOjp2
ZWN0b3I8UmF0ZVByb2ZpbGU+IHJhdGVfcHJvZmlsZXMgPSB7ezUwMCwgMzAsIGtOdW1GcmFtZXNT
aG9ydH19OwogCiAgIHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4gcmNfdGhyZXNo
b2xkcyA9IHsKLSAgICAgIHs1LCAxLCAwLCAwLjExLCAwLjMsIDAuMSwgMCwgMX19OworICAgICAg
ezUsIDEsIDAsIDEsIDAuMywgMC4xLCAwLCAxfX07CiAKICAgc3RkOjp2ZWN0b3I8UXVhbGl0eVRo
cmVzaG9sZHM+IHF1YWxpdHlfdGhyZXNob2xkcyA9IHt7MzcuNSwgMzYsIDAuOTQsIDAuOTN9fTsK
IApAQCAtMTkyLDcgKzE5MCw3IEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIFZlcnlMb3dC
aXRyYXRlVlA5KSB7CiAgIHN0ZDo6dmVjdG9yPFJhdGVQcm9maWxlPiByYXRlX3Byb2ZpbGVzID0g
e3s1MCwgMzAsIGtOdW1GcmFtZXNMb25nfX07CiAKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xU
aHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAgICAgezE1LCAzLCA3NSwgMS4wLCAwLjUs
IDAuNCwgMSwgMX19OworICAgICAgezE1LCAzLCA3NSwgMSwgMC41LCAwLjQsIDEsIDF9fTsKIAog
ICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNob2xkcz4gcXVhbGl0eV90aHJlc2hvbGRzID0ge3sy
OCwgMjUsIDAuODAsIDAuNjV9fTsKIApAQCAtMjAyLDcgKzIwMCw3IEBAIFRFU1QoVmlkZW9Db2Rl
Y1Rlc3RMaWJ2cHgsIFZlcnlMb3dCaXRyYXRlVlA5KSB7CiAvLyBUT0RPKG1hcnBhbik6IEFkZCB0
ZW1wb3JhbCBsYXllciB0ZXN0IGZvciBWUDksIG9uY2UgY2hhbmdlcyBhcmUgaW4KIC8vIHZwOSB3
cmFwcGVyIGZvciB0aGlzLgogCi0jZW5kaWYgIC8vICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkK
KyNlbmRpZiAgLy8gZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIAogVEVTVChWaWRlb0NvZGVjVGVz
dExpYnZweCwgSGlnaEJpdHJhdGVWUDgpIHsKICAgYXV0byBjb25maWcgPSBDcmVhdGVDb25maWco
KTsKQEAgLTIxNiw3ICsyMTQsNyBAQCBURVNUKFZpZGVvQ29kZWNUZXN0TGlidnB4LCBIaWdoQml0
cmF0ZVZQOCkgewogICBzdGQ6OnZlY3RvcjxSYXRlUHJvZmlsZT4gcmF0ZV9wcm9maWxlcyA9IHt7
NTAwLCAzMCwga051bUZyYW1lc1Nob3J0fX07CiAKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xU
aHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAgICAgezUsIDEsIDAsIDAuMSwgMC4yLCAw
LjEsIDAsIDF9fTsKKyAgICAgIHs1LCAxLCAwLCAxLCAwLjIsIDAuMSwgMCwgMX19OwogCiAjaWYg
ZGVmaW5lZChXRUJSVENfQVJDSF9BUk0pIHx8IGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNNjQpCiAg
IHN0ZDo6dmVjdG9yPFF1YWxpdHlUaHJlc2hvbGRzPiBxdWFsaXR5X3RocmVzaG9sZHMgPSB7ezM1
LCAzMywgMC45MSwgMC44OX19OwpAQCAtMjU1LDkgKzI1Myw5IEBAIFRFU1QoVmlkZW9Db2RlY1Rl
c3RMaWJ2cHgsIE1BWUJFX0NoYW5nZUJpdHJhdGVWUDgpIHsKICAgICAgIHs1MDAsIDMwLCBrTnVt
RnJhbWVzTG9uZ319OwogCiAgIHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4gcmNf
dGhyZXNob2xkcyA9IHsKLSAgICAgIHs1LCAxLCAwLCAwLjEsIDAuMiwgMC4xLCAwLCAxfSwKLSAg
ICAgIHsxNS41LCAxLCAwLCAwLjEsIDAuMiwgMC4xLCAwLCAwfSwKLSAgICAgIHsxNSwgMSwgMCwg
MC4zLCAwLjIsIDAuMSwgMCwgMH19OworICAgICAgezUsIDEsIDAsIDEsIDAuMiwgMC4xLCAwLCAx
fSwKKyAgICAgIHsxNS41LCAxLCAwLCAxLCAwLjIsIDAuMSwgMCwgMH0sCisgICAgICB7MTUsIDEs
IDAsIDEsIDAuMiwgMC4xLCAwLCAwfX07CiAKICNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX0FSTSkg
fHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02NCkKICAgc3RkOjp2ZWN0b3I8UXVhbGl0eVRocmVz
aG9sZHM+IHF1YWxpdHlfdGhyZXNob2xkcyA9IHsKQEAgLTI5MCwxNCArMjg4LDE0IEBAIFRFU1Qo
VmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIE1BWUJFX0NoYW5nZUZyYW1lcmF0ZVZQOCkgewogCiAjaWYg
ZGVmaW5lZChXRUJSVENfQVJDSF9BUk0pIHx8IGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNNjQpCiAg
IHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4gcmNfdGhyZXNob2xkcyA9IHsKLSAg
ICAgIHsxMCwgMiwgNjAsIDAuNSwgMC4zLCAwLjMsIDAsIDF9LAotICAgICAgezEwLCAyLCAzMCwg
MC4zLCAwLjMsIDAuMywgMCwgMH0sCi0gICAgICB7MTAsIDIsIDEwLCAwLjIsIDAuMywgMC4yLCAw
LCAwfX07CisgICAgICB7MTAsIDIsIDYwLCAxLCAwLjMsIDAuMywgMCwgMX0sCisgICAgICB7MTAs
IDIsIDMwLCAxLCAwLjMsIDAuMywgMCwgMH0sCisgICAgICB7MTAsIDIsIDEwLCAxLCAwLjMsIDAu
MiwgMCwgMH19OwogI2Vsc2UKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiBy
Y190aHJlc2hvbGRzID0gewotICAgICAgezEwLCAyLCAyMCwgMC40LCAwLjMsIDAuMSwgMCwgMX0s
Ci0gICAgICB7NSwgMiwgNSwgMC4zLCAwLjMsIDAuMSwgMCwgMH0sCi0gICAgICB7NCwgMiwgMSwg
MC4yLCAwLjMsIDAuMiwgMCwgMH19OworICAgICAgezEwLCAyLCAyMCwgMSwgMC4zLCAwLjEsIDAs
IDF9LAorICAgICAgezUsIDIsIDUsIDEsIDAuMywgMC4xLCAwLCAwfSwKKyAgICAgIHs0LCAyLCAx
LCAxLCAwLjMsIDAuMiwgMCwgMH19OwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19BUkNI
X0FSTSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02NCkKQEAgLTMyOCwxMCArMzI2LDEwIEBA
IFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIE1BWUJFX1RlbXBvcmFsTGF5ZXJzVlA4KSB7CiAK
ICNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX0FSTSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02
NCkKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0g
ewotICAgICAgezEwLCAxLCAyLCAwLjMsIDAuMiwgMC4xLCAwLCAxfSwgezEyLCAyLCAzLCAwLjEs
IDAuMiwgMC4xLCAwLCAxfX07CisgICAgICB7MTAsIDEsIDIsIDEsIDAuMiwgMC4xLCAwLCAxfSwg
ezEyLCAyLCAzLCAxLCAwLjIsIDAuMSwgMCwgMX19OwogI2Vsc2UKICAgc3RkOjp2ZWN0b3I8UmF0
ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAgICAgezUsIDEsIDAsIDAu
MSwgMC4yLCAwLjEsIDAsIDF9LCB7MTAsIDIsIDAsIDAuMSwgMC4yLCAwLjEsIDAsIDF9fTsKKyAg
ICAgIHs1LCAxLCAwLCAxLCAwLjIsIDAuMSwgMCwgMX0sIHsxMCwgMiwgMCwgMSwgMC4yLCAwLjEs
IDAsIDF9fTsKICNlbmRpZgogLy8gTWluIFNTSU0gZHJvcHMgYmVjYXVzZSBvZiBoaWdoIG1vdGlv
biBzY2VuZSB3aXRoIGNvbXBsZXggYmFja2dvdW5kICh0cmVlcykuCiAjaWYgZGVmaW5lZChXRUJS
VENfQVJDSF9BUk0pIHx8IGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNNjQpCkBAIC0zNjQsNyArMzYy
LDcgQEAgVEVTVChWaWRlb0NvZGVjVGVzdExpYnZweCwgTUFZQkVfTXVsdGlyZXNWUDgpIHsKICAg
c3RkOjp2ZWN0b3I8UmF0ZVByb2ZpbGU+IHJhdGVfcHJvZmlsZXMgPSB7ezE1MDAsIDMwLCBjb25m
aWcubnVtX2ZyYW1lc319OwogCiAgIHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4g
cmNfdGhyZXNob2xkcyA9IHsKLSAgICAgIHs1LCAxLCA1LCAwLjIsIDAuMywgMC4xLCAwLCAxfX07
CisgICAgICB7NSwgMSwgNSwgMSwgMC4zLCAwLjEsIDAsIDF9fTsKICAgc3RkOjp2ZWN0b3I8UXVh
bGl0eVRocmVzaG9sZHM+IHF1YWxpdHlfdGhyZXNob2xkcyA9IHt7MzQsIDMyLCAwLjkwLCAwLjg4
fX07CiAKICAgZml4dHVyZS0+UnVuVGVzdChyYXRlX3Byb2ZpbGVzLCAmcmNfdGhyZXNob2xkcywg
JnF1YWxpdHlfdGhyZXNob2xkcywgbnVsbHB0cik7CkBAIC00MDEsNyArMzk5LDcgQEAgVEVTVChW
aWRlb0NvZGVjVGVzdExpYnZweCwgTUFZQkVfU2ltdWxjYXN0VlA4KSB7CiAgIHN0ZDo6dmVjdG9y
PFJhdGVQcm9maWxlPiByYXRlX3Byb2ZpbGVzID0ge3sxNTAwLCAzMCwgY29uZmlnLm51bV9mcmFt
ZXN9fTsKIAogICBzdGQ6OnZlY3RvcjxSYXRlQ29udHJvbFRocmVzaG9sZHM+IHJjX3RocmVzaG9s
ZHMgPSB7Ci0gICAgICB7MjAsIDUsIDkwLCAwLjgsIDAuNSwgMC4zLCAwLCAxfX07CisgICAgICB7
MjAsIDUsIDkwLCAxLCAwLjUsIDAuMywgMCwgMX19OwogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhy
ZXNob2xkcz4gcXVhbGl0eV90aHJlc2hvbGRzID0ge3szNCwgMzIsIDAuOTAsIDAuODh9fTsKIAog
ICBmaXh0dXJlLT5SdW5UZXN0KHJhdGVfcHJvZmlsZXMsICZyY190aHJlc2hvbGRzLCAmcXVhbGl0
eV90aHJlc2hvbGRzLCBudWxscHRyKTsKQEAgLTQyNiw3ICs0MjQsNyBAQCBURVNUKFZpZGVvQ29k
ZWNUZXN0TGlidnB4LCBNQVlCRV9TdmNWUDkpIHsKICAgc3RkOjp2ZWN0b3I8UmF0ZVByb2ZpbGU+
IHJhdGVfcHJvZmlsZXMgPSB7ezE1MDAsIDMwLCBjb25maWcubnVtX2ZyYW1lc319OwogCiAgIHN0
ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4gcmNfdGhyZXNob2xkcyA9IHsKLSAgICAg
IHs1LCAxLCA1LCAwLjIsIDAuMywgMC4xLCAwLCAxfX07CisgICAgICB7NSwgMSwgNSwgMSwgMC4z
LCAwLjEsIDAsIDF9fTsKICAgc3RkOjp2ZWN0b3I8UXVhbGl0eVRocmVzaG9sZHM+IHF1YWxpdHlf
dGhyZXNob2xkcyA9IHt7MzYsIDM0LCAwLjkzLCAwLjkwfX07CiAKICAgZml4dHVyZS0+UnVuVGVz
dChyYXRlX3Byb2ZpbGVzLCAmcmNfdGhyZXNob2xkcywgJnF1YWxpdHlfdGhyZXNob2xkcywgbnVs
bHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfbWVk
aWFjb2RlYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9tZWRpYWNvZGVj
LmNjCmluZGV4IDk5YjFhZWQ4YzBhNTgwNTM2Nzk4MDI1YThjNjU4ZjU3YjM2YjcyNDUuLmVkZmMy
MTFjMjI2ZDU0OWNjMGM1OTM0ZjcyM2YzNWNlMDc5MjZlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9tZWRpYWNvZGVjLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9tZWRpYWNvZGVjLmNjCkBAIC0zMyw4ICszMyw2IEBAIFZp
ZGVvQ29kZWNUZXN0Rml4dHVyZTo6Q29uZmlnIENyZWF0ZUNvbmZpZygpIHsKICAgY29uZmlnLmZp
bGVuYW1lID0gImZvcmVtYW5fY2lmIjsKICAgY29uZmlnLmZpbGVwYXRoID0gUmVzb3VyY2VQYXRo
KGNvbmZpZy5maWxlbmFtZSwgInl1diIpOwogICBjb25maWcubnVtX2ZyYW1lcyA9IGtGb3JlbWFu
TnVtRnJhbWVzOwotICBjb25maWcuaHdfZW5jb2RlciA9IHRydWU7Ci0gIGNvbmZpZy5od19kZWNv
ZGVyID0gdHJ1ZTsKICAgLy8gSW4gb3JkZXIgdG8gbm90IG92ZXJ3aGVsbSB0aGUgT3Blbk1BWCBi
dWZmZXJzIGluIHRoZSBBbmRyb2lkIE1lZGlhQ29kZWMuCiAgIGNvbmZpZy5lbmNvZGVfaW5fcmVh
bF90aW1lID0gdHJ1ZTsKICAgcmV0dXJuIGNvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9vcGVuaDI2NC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3Zp
ZGVvY29kZWNfdGVzdF9vcGVuaDI2NC5jYwppbmRleCBlNWNmNzFiYTkwZjkwNDJlZTY5M2MxMTZk
OTNiYWJhMTNlZGRlMGYzLi5iZDRiYjUyYjg1MTkxZGM1NjBhZjNhOGQwOWM0ZTM5ZjgyYzM3MzRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3Rfb3BlbmgyNjQu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X29wZW5oMjY0LmNjCkBA
IC0zMiw4ICszMiw2IEBAIFZpZGVvQ29kZWNUZXN0Rml4dHVyZTo6Q29uZmlnIENyZWF0ZUNvbmZp
ZygpIHsKICAgY29uZmlnLm51bV9mcmFtZXMgPSBrTnVtRnJhbWVzOwogICAvLyBPbmx5IGFsbG93
IGVuY29kZXIvZGVjb2RlciB0byB1c2Ugc2luZ2xlIGNvcmUsIGZvciBwcmVkaWN0YWJpbGl0eS4K
ICAgY29uZmlnLnVzZV9zaW5nbGVfY29yZSA9IHRydWU7Ci0gIGNvbmZpZy5od19lbmNvZGVyID0g
ZmFsc2U7Ci0gIGNvbmZpZy5od19kZWNvZGVyID0gZmFsc2U7CiAgIHJldHVybiBjb25maWc7CiB9
CiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29k
ZWNfdGVzdF9wYXJhbWV0ZXJpemVkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190
ZXN0X3BhcmFtZXRlcml6ZWQuY2MKaW5kZXggMGQ0OWI4MGQ5NWFmMzBjNWIyOTE0MDEzYzRhNGQ1
NmM1NDlmZDkxMy4uZWZjODBhZGQyZGE1YzFkMjM5MjM5MTcxNjlmMzAxMjQyNjYyZTJmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X3BhcmFtZXRlcml6ZWQu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X3BhcmFtZXRlcml6ZWQu
Y2MKQEAgLTIwLDcgKzIwLDYgQEAgbmFtZXNwYWNlIHsKIC8vIExvb3AgdmFyaWFibGVzLgogY29u
c3Qgc2l6ZV90IGtCaXRyYXRlc1tdID0gezUwMH07CiBjb25zdCBWaWRlb0NvZGVjVHlwZSBrVmlk
ZW9Db2RlY1R5cGVbXSA9IHtrVmlkZW9Db2RlY1ZQOH07Ci1jb25zdCBib29sIGtId0NvZGVjW10g
PSB7ZmFsc2V9OwogCiAvLyBDb2RlYyBzZXR0aW5ncy4KIGNvbnN0IGludCBrTnVtU3BhdGlhbExh
eWVycyA9IDE7CkBAIC0zOSwxMiArMzgsMTEgQEAgY29uc3QgaW50IGtOdW1GcmFtZXMgPSAzMDsK
IGNsYXNzIFZpZGVvQ29kZWNUZXN0UGFyYW1ldGVyaXplZAogICAgIDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCwKICAgICAgIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTwKLSAg
ICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHNpemVfdCwgVmlkZW9Db2RlY1R5cGUsIGJvb2w+PiB7
CisgICAgICAgICAgOjp0ZXN0aW5nOjp0dXBsZTxzaXplX3QsIFZpZGVvQ29kZWNUeXBlPj4gewog
IHByb3RlY3RlZDoKICAgVmlkZW9Db2RlY1Rlc3RQYXJhbWV0ZXJpemVkKCkKICAgICAgIDogYml0
cmF0ZV8oOjp0ZXN0aW5nOjpnZXQ8MD4oR2V0UGFyYW0oKSkpLAotICAgICAgICBjb2RlY190eXBl
Xyg6OnRlc3Rpbmc6OmdldDwxPihHZXRQYXJhbSgpKSksCi0gICAgICAgIGh3X2NvZGVjXyg6OnRl
c3Rpbmc6OmdldDwyPihHZXRQYXJhbSgpKSkge30KKyAgICAgICAgY29kZWNfdHlwZV8oOjp0ZXN0
aW5nOjpnZXQ8MT4oR2V0UGFyYW0oKSkpIHt9CiAgIH5WaWRlb0NvZGVjVGVzdFBhcmFtZXRlcml6
ZWQoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAKICAgdm9pZCBSdW5UZXN0KHNpemVfdCB3aWR0aCwK
QEAgLTU2LDggKzU0LDYgQEAgY2xhc3MgVmlkZW9Db2RlY1Rlc3RQYXJhbWV0ZXJpemVkCiAgICAg
Y29uZmlnLmZpbGVwYXRoID0gUmVzb3VyY2VQYXRoKGZpbGVuYW1lLCAieXV2Iik7CiAgICAgY29u
ZmlnLnVzZV9zaW5nbGVfY29yZSA9IGtVc2VTaW5nbGVDb3JlOwogICAgIGNvbmZpZy5tZWFzdXJl
X2NwdSA9IGtNZWFzdXJlQ3B1OwotICAgIGNvbmZpZy5od19lbmNvZGVyID0gaHdfY29kZWNfOwot
ICAgIGNvbmZpZy5od19kZWNvZGVyID0gaHdfY29kZWNfOwogICAgIGNvbmZpZy5udW1fZnJhbWVz
ID0ga051bUZyYW1lczsKIAogICAgIGNvbnN0IHNpemVfdCBudW1fc2ltdWxjYXN0X3N0cmVhbXMg
PQpAQCAtODAsMTQgKzc2LDEzIEBAIGNsYXNzIFZpZGVvQ29kZWNUZXN0UGFyYW1ldGVyaXplZAog
ICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9Db2RlY1Rlc3RGaXh0dXJlPiBmaXh0dXJlXzsKICAgY29u
c3Qgc2l6ZV90IGJpdHJhdGVfOwogICBjb25zdCBWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlXzsK
LSAgY29uc3QgYm9vbCBod19jb2RlY187CiB9OwogCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChD
b2RlY1NldHRpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9Db2RlY1Rlc3RQYXJh
bWV0ZXJpemVkLAotICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpDb21iaW5lKDo6
dGVzdGluZzo6VmFsdWVzSW4oa0JpdHJhdGVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKGtWaWRlb0NvZGVjVHlwZSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1
ZXNJbihrSHdDb2RlYykpKTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIENvZGVjU2V0
dGluZ3MsCisgICAgVmlkZW9Db2RlY1Rlc3RQYXJhbWV0ZXJpemVkLAorICAgIDo6dGVzdGluZzo6
Q29tYmluZSg6OnRlc3Rpbmc6OlZhbHVlc0luKGtCaXRyYXRlcyksCisgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4oa1ZpZGVvQ29kZWNUeXBlKSkpOwogCiBURVNUX1Ao
VmlkZW9Db2RlY1Rlc3RQYXJhbWV0ZXJpemVkLCBGb3JlbWFuXzM1MngyODhfMzApIHsKICAgUnVu
VGVzdCgzNTIsIDI4OCwgMzAsICJmb3JlbWFuX2NpZiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X3ZpZGVvdG9vbGJveC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90
ZXN0L3ZpZGVvY29kZWNfdGVzdF92aWRlb3Rvb2xib3guY2MKaW5kZXggZjMxZmY1NDhhODEyNTVi
ZWM0NDU5NzNlYzc1MGMzNjcwMzI4ZjA1Ny4uNmRmYjk5M2NlODgxYzdlZWVkNDZjODE2NGVmMWRi
ODg2NWI0ZDZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0
X3ZpZGVvdG9vbGJveC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3Rf
dmlkZW90b29sYm94LmNjCkBAIC0yOCw4ICsyOCw2IEBAIFZpZGVvQ29kZWNUZXN0Rml4dHVyZTo6
Q29uZmlnIENyZWF0ZUNvbmZpZygpIHsKICAgY29uZmlnLmZpbGVuYW1lID0gImZvcmVtYW5fY2lm
IjsKICAgY29uZmlnLmZpbGVwYXRoID0gUmVzb3VyY2VQYXRoKGNvbmZpZy5maWxlbmFtZSwgInl1
diIpOwogICBjb25maWcubnVtX2ZyYW1lcyA9IGtGb3JlbWFuTnVtRnJhbWVzOwotICBjb25maWcu
aHdfZW5jb2RlciA9IHRydWU7Ci0gIGNvbmZpZy5od19kZWNvZGVyID0gdHJ1ZTsKICAgcmV0dXJu
IGNvbmZpZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9wcm9jZXNz
b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb3Byb2Nlc3Nvci5jYwppbmRleCA1ZTk4MGNk
Y2YxYWNjODE1NWY4NDFlNGY3ZTA0Nzc5M2JhMjA2ZDc0Li42OTU4MjY2MGY5MTE4OGJhYjgwOWRh
ZTM0NDE0OWYxYTZmYzlmNWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb3By
b2Nlc3Nvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb3Byb2Nlc3Nvci5jYwpAQCAt
MTQsNiArMTQsNyBAQAogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisj
aW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9y
eS5oIgogI2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZlci5oIgogI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9uX3Zp
ZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKQEAgLTE3Myw4ICsxNzQsOSBAQCBWaWRlb1Byb2Nlc3Nv
cjo6VmlkZW9Qcm9jZXNzb3Iod2VicnRjOjpWaWRlb0VuY29kZXIqIGVuY29kZXIsCiAgICAgICBz
dGF0c18oc3RhdHMpLAogICAgICAgZW5jb2Rlcl8oZW5jb2RlciksCiAgICAgICBkZWNvZGVyc18o
ZGVjb2RlcnMpLAotICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfKFZpZGVvQ29kZWNJbml0aWFsaXpl
cjo6Q3JlYXRlQml0cmF0ZUFsbG9jYXRvcigKLSAgICAgICAgICBjb25maWdfLmNvZGVjX3NldHRp
bmdzKSksCisgICAgICBiaXRyYXRlX2FsbG9jYXRvcl8oCisgICAgICAgICAgQ3JlYXRlQnVpbHRp
blZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKQorICAgICAgICAgICAgICAtPkNyZWF0ZVZp
ZGVvQml0cmF0ZUFsbG9jYXRvcihjb25maWdfLmNvZGVjX3NldHRpbmdzKSksCiAgICAgICBmcmFt
ZXJhdGVfZnBzXygwKSwKICAgICAgIGVuY29kZV9jYWxsYmFja18odGhpcyksCiAgICAgICBpbnB1
dF9mcmFtZV9yZWFkZXJfKGlucHV0X2ZyYW1lX3JlYWRlciksCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdGVzdC92aWRlb3Byb2Nlc3Nvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0
L3ZpZGVvcHJvY2Vzc29yX3VuaXR0ZXN0LmNjCmluZGV4IDU4OWEzZDg5OGE4ZWU0ODhhNDAxNmVi
NjIzYzllYWQ0Mzg1NGE1NzguLjNkNDFhZDk5OGZlYmZjNjIwNjM3ODdjYTBiZDM1ZmRlMThmN2Yz
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvcHJvY2Vzc29yX3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvcHJvY2Vzc29yX3VuaXR0ZXN0LmNjCkBA
IC0xMSwxMyArMTEsMTQgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuaCIK
KyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIuaCIKICNpbmNsdWRlICJhcGkv
dGVzdC92aWRlb2NvZGVjX3Rlc3RfZml4dHVyZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby9pNDIw
X2J1ZmZlci5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2lu
Y2x1ZGUpCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9zdGF0c19p
bXBsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9w
cm9jZXNzb3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL21vY2sv
bW9ja192aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZV9mb3JfdGVzdC5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuY2MKaW5kZXggZDUzZjQ2OTk0ZDM2MDhlZjM5
ZTNlMDZlNjFlZGFmYWFjM2E5Yjg3NS4uYzVlMTYzZmNmNzIwYjhiMjhlYzk4Mjc1MzIxNzc0NzM1
YTkwNzczNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xh
eWVycy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmNj
CkBAIC03LDggKzcsNiBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmgiCi0KICNpbmNsdWRl
IDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIApAQCAtMjAsNiArMTgsNyBAQAogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9u
X3R5cGVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZh
dWx0X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2lu
Y2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgpAQCAtMjcsMjcgKzI2LDMwIEBACiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCi1UZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc6OkZyYW1l
Q29uZmlnKCkKK1ZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZzo6RnJhbWVDb25maWcoKQog
ICAgIDogRnJhbWVDb25maWcoa05vbmUsIGtOb25lLCBrTm9uZSwgZmFsc2UpIHt9CiAKLVRlbXBv
cmFsTGF5ZXJzOjpGcmFtZUNvbmZpZzo6RnJhbWVDb25maWcoVGVtcG9yYWxMYXllcnM6OkJ1ZmZl
ckZsYWdzIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
bXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBnb2xkZW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBhcmYpCitWcDhU
ZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc6OkZyYW1lQ29uZmlnKAorICAgIFZwOFRlbXBvcmFs
TGF5ZXJzOjpCdWZmZXJGbGFncyBsYXN0LAorICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJG
bGFncyBnb2xkZW4sCisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGFyZikKICAg
ICA6IEZyYW1lQ29uZmlnKGxhc3QsIGdvbGRlbiwgYXJmLCBmYWxzZSkge30KIAotVGVtcG9yYWxM
YXllcnM6OkZyYW1lQ29uZmlnOjpGcmFtZUNvbmZpZyhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxh
Z3MgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcG9y
YWxMYXllcnM6OkJ1ZmZlckZsYWdzIGdvbGRlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGFyZiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZXplRW50cm9weSkKK1ZwOFRlbXBv
cmFsTGF5ZXJzOjpGcmFtZUNvbmZpZzo6RnJhbWVDb25maWcoCisgICAgVnA4VGVtcG9yYWxMYXll
cnM6OkJ1ZmZlckZsYWdzIGxhc3QsCisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdz
IGdvbGRlbiwKKyAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgYXJmLAorICAgIEZy
ZWV6ZUVudHJvcHkpCiAgICAgOiBGcmFtZUNvbmZpZyhsYXN0LCBnb2xkZW4sIGFyZiwgdHJ1ZSkg
e30KIAotVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnOjpGcmFtZUNvbmZpZyhUZW1wb3JhbExh
eWVyczo6QnVmZmVyRmxhZ3MgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGdvbGRlbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdz
IGFyZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcmVl
emVfZW50cm9weSkKLSAgICA6IGRyb3BfZnJhbWUobGFzdCA9PSBUZW1wb3JhbExheWVyczo6a05v
bmUgJiYKLSAgICAgICAgICAgICAgICAgZ29sZGVuID09IFRlbXBvcmFsTGF5ZXJzOjprTm9uZSAm
JgotICAgICAgICAgICAgICAgICBhcmYgPT0gVGVtcG9yYWxMYXllcnM6OmtOb25lKSwKK1ZwOFRl
bXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZzo6RnJhbWVDb25maWcoCisgICAgVnA4VGVtcG9yYWxM
YXllcnM6OkJ1ZmZlckZsYWdzIGxhc3QsCisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZs
YWdzIGdvbGRlbiwKKyAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgYXJmLAorICAg
IGJvb2wgZnJlZXplX2VudHJvcHkpCisgICAgOiBkcm9wX2ZyYW1lKGxhc3QgPT0gVnA4VGVtcG9y
YWxMYXllcnM6OmtOb25lICYmCisgICAgICAgICAgICAgICAgIGdvbGRlbiA9PSBWcDhUZW1wb3Jh
bExheWVyczo6a05vbmUgJiYKKyAgICAgICAgICAgICAgICAgYXJmID09IFZwOFRlbXBvcmFsTGF5
ZXJzOjprTm9uZSksCiAgICAgICBsYXN0X2J1ZmZlcl9mbGFncyhsYXN0KSwKICAgICAgIGdvbGRl
bl9idWZmZXJfZmxhZ3MoZ29sZGVuKSwKICAgICAgIGFyZl9idWZmZXJfZmxhZ3MoYXJmKSwKQEAg
LTEwNiwxNSArMTA4LDE1IEBAIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGludD4gR2V0VGVtcG9yYWxJ
ZHMoc2l6ZV90IG51bV9sYXllcnMpIHsKICAgcmV0dXJuIHswfTsKIH0KIAotdWludDhfdCBHZXRV
cGRhdGVkQnVmZmVycyhjb25zdCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcmIGNvbmZpZykg
ewordWludDhfdCBHZXRVcGRhdGVkQnVmZmVycyhjb25zdCBWcDhUZW1wb3JhbExheWVyczo6RnJh
bWVDb25maWcmIGNvbmZpZykgewogICB1aW50OF90IGZsYWdzID0gMDsKLSAgaWYgKGNvbmZpZy5s
YXN0X2J1ZmZlcl9mbGFncyAmIFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkg
eworICBpZiAoY29uZmlnLmxhc3RfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OkJ1
ZmZlckZsYWdzOjprVXBkYXRlKSB7CiAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
VnA4QnVmZmVyUmVmZXJlbmNlOjprTGFzdCk7CiAgIH0KLSAgaWYgKGNvbmZpZy5nb2xkZW5fYnVm
ZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7CisgIGlm
IChjb25maWcuZ29sZGVuX2J1ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJG
bGFnczo6a1VwZGF0ZSkgewogICAgIGZsYWdzIHw9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFZwOEJ1
ZmZlclJlZmVyZW5jZTo6a0dvbGRlbik7CiAgIH0KLSAgaWYgKGNvbmZpZy5hcmZfYnVmZmVyX2Zs
YWdzICYgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7CisgIGlmIChjb25m
aWcuYXJmX2J1ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1Vw
ZGF0ZSkgewogICAgIGZsYWdzIHw9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFZwOEJ1ZmZlclJlZmVy
ZW5jZTo6a0FsdHJlZik7CiAgIH0KICAgcmV0dXJuIGZsYWdzOwpAQCAtMTIyLDEwICsxMjQsMTAg
QEAgdWludDhfdCBHZXRVcGRhdGVkQnVmZmVycyhjb25zdCBUZW1wb3JhbExheWVyczo6RnJhbWVD
b25maWcmIGNvbmZpZykgewogCiAvLyBGaW5kIHRoZSBzZXQgb2YgYnVmZmVycyB0aGF0IGFyZSBu
ZXZlciB1cGRhdGVkIGJ5IHRoZSBnaXZlbiBwYXR0ZXJuLgogc3RkOjpzZXQ8VnA4QnVmZmVyUmVm
ZXJlbmNlPiBGaW5kS2ZCdWZmZXJzKAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlbXBvcmFsTGF5
ZXJzOjpGcmFtZUNvbmZpZz4mIGZyYW1lX2NvbmZpZ3MpIHsKKyAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc+JiBmcmFtZV9jb25maWdzKSB7CiAgIHN0
ZDo6c2V0PFZwOEJ1ZmZlclJlZmVyZW5jZT4ga2ZfYnVmZmVycyhrQWxsQnVmZmVycy5iZWdpbigp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0FsbEJ1ZmZlcnMu
ZW5kKCkpOwotICBmb3IgKFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyBjb25maWcgOiBmcmFt
ZV9jb25maWdzKSB7CisgIGZvciAoVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIGNvbmZp
ZyA6IGZyYW1lX2NvbmZpZ3MpIHsKICAgICAvLyBHZXQgYml0LW1hc2tlZCBzZXQgb2YgdXBkYXRl
IGJ1ZmZlcnMgZm9yIHRoaXMgZnJhbWUgY29uZmlnLgogICAgIHVpbnQ4X3QgdXBkYXRlZF9idWZm
ZXJzID0gR2V0VXBkYXRlZEJ1ZmZlcnMoY29uZmlnKTsKICAgICBmb3IgKFZwOEJ1ZmZlclJlZmVy
ZW5jZSBidWZmZXIgOiBrQWxsQnVmZmVycykgewpAQCAtMTM4LDcgKzE0MCw3IEBAIHN0ZDo6c2V0
PFZwOEJ1ZmZlclJlZmVyZW5jZT4gRmluZEtmQnVmZmVycygKIH0KIH0gIC8vIG5hbWVzcGFjZQog
Ci1zdGQ6OnZlY3RvcjxUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc+CitzdGQ6OnZlY3RvcjxW
cDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc+CiBEZWZhdWx0VGVtcG9yYWxMYXllcnM6Okdl
dFRlbXBvcmFsUGF0dGVybihzaXplX3QgbnVtX2xheWVycykgewogICAvLyBGb3IgaW5kZXhpbmcg
aW4gdGhlIHBhdHRlcm5zIGRlc2NyaWJlZCBiZWxvdyAod2hpY2ggdGVtcG9yYWwgbGF5ZXJzIHRo
ZXkKICAgLy8gYmVsb25nIHRvKSwgc2VlIHRoZSBkaWFncmFtIGFib3ZlLgpAQCAtMjYyLDcgKzI2
NCw3IEBAIERlZmF1bHRUZW1wb3JhbExheWVyczo6RGVmYXVsdFRlbXBvcmFsTGF5ZXJzKGludCBu
dW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzKQogICAgICAga2ZfYnVmZmVyc18oRmluZEtmQnVmZmVy
cyh0ZW1wb3JhbF9wYXR0ZXJuXykpLAogICAgICAgcGF0dGVybl9pZHhfKGtVbmluaXRpYWxpemVk
UGF0dGVybkluZGV4KSwKICAgICAgIGNoZWNrZXJfKFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q3Jl
YXRlVGVtcG9yYWxMYXllcnNDaGVja2VyKAotICAgICAgICAgIFRlbXBvcmFsTGF5ZXJzVHlwZTo6
a0ZpeGVkUGF0dGVybiwKKyAgICAgICAgICBWcDhUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBh
dHRlcm4sCiAgICAgICAgICAgbnVtYmVyX29mX3RlbXBvcmFsX2xheWVycykpIHsKICAgUlRDX0NI
RUNLX0dFKGtNYXhUZW1wb3JhbFN0cmVhbXMsIG51bWJlcl9vZl90ZW1wb3JhbF9sYXllcnMpOwog
ICBSVENfQ0hFQ0tfR0UobnVtYmVyX29mX3RlbXBvcmFsX2xheWVycywgMCk7CkBAIC0yNzgsNiAr
MjgwLDggQEAgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzOjpEZWZhdWx0VGVtcG9yYWxMYXllcnMoaW50
IG51bWJlcl9vZl90ZW1wb3JhbF9sYXllcnMpCiAgIH0KIH0KIAorRGVmYXVsdFRlbXBvcmFsTGF5
ZXJzOjp+RGVmYXVsdFRlbXBvcmFsTGF5ZXJzKCkgPSBkZWZhdWx0OworCiBib29sIERlZmF1bHRU
ZW1wb3JhbExheWVyczo6U3VwcG9ydHNFbmNvZGVyRnJhbWVEcm9wcGluZygpIGNvbnN0IHsKICAg
Ly8gVGhpcyBjbGFzcyBhbGxvd3MgdGhlIGVuY29kZXIgZHJvcCBmcmFtZXMgYXMgaXQgc2VlcyBm
aXQuCiAgIHJldHVybiB0cnVlOwpAQCAtMzQ2LDEzICszNTAsMTMgQEAgYm9vbCBEZWZhdWx0VGVt
cG9yYWxMYXllcnM6OklzU3luY0ZyYW1lKGNvbnN0IEZyYW1lQ29uZmlnJiBjb25maWcpIGNvbnN0
IHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLVRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyBEZWZh
dWx0VGVtcG9yYWxMYXllcnM6OlVwZGF0ZUxheWVyQ29uZmlnKAorVnA4VGVtcG9yYWxMYXllcnM6
OkZyYW1lQ29uZmlnIERlZmF1bHRUZW1wb3JhbExheWVyczo6VXBkYXRlTGF5ZXJDb25maWcoCiAg
ICAgdWludDMyX3QgdGltZXN0YW1wKSB7CiAgIFJUQ19EQ0hFQ0tfR1QobnVtX2xheWVyc18sIDAp
OwogICBSVENfRENIRUNLX0xUKDAsIHRlbXBvcmFsX3BhdHRlcm5fLnNpemUoKSk7CiAKICAgcGF0
dGVybl9pZHhfID0gKHBhdHRlcm5faWR4XyArIDEpICUgdGVtcG9yYWxfcGF0dGVybl8uc2l6ZSgp
OwotICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGVtcG9yYWxfcGF0
dGVybl9bcGF0dGVybl9pZHhfXTsKKyAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRs
X2NvbmZpZyA9IHRlbXBvcmFsX3BhdHRlcm5fW3BhdHRlcm5faWR4X107CiAgIHRsX2NvbmZpZy5l
bmNvZGVyX2xheWVyX2lkID0gdGxfY29uZmlnLnBhY2tldGl6ZXJfdGVtcG9yYWxfaWR4ID0KICAg
ICAgIHRlbXBvcmFsX2lkc19bcGF0dGVybl9pZHhfICUgdGVtcG9yYWxfaWRzXy5zaXplKCldOwog
CkBAIC01NjAsOSArNTY0LDExIEBAIERlZmF1bHRUZW1wb3JhbExheWVyc0NoZWNrZXI6OkRlZmF1
bHRUZW1wb3JhbExheWVyc0NoZWNrZXIoCiAgIH0KIH0KIAorRGVmYXVsdFRlbXBvcmFsTGF5ZXJz
Q2hlY2tlcjo6fkRlZmF1bHRUZW1wb3JhbExheWVyc0NoZWNrZXIoKSA9IGRlZmF1bHQ7CisKIGJv
b2wgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q2hlY2tUZW1wb3JhbENvbmZpZygKICAg
ICBib29sIGZyYW1lX2lzX2tleWZyYW1lLAotICAgIGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFt
ZUNvbmZpZyYgZnJhbWVfY29uZmlnKSB7CisgICAgY29uc3QgVnA4VGVtcG9yYWxMYXllcnM6OkZy
YW1lQ29uZmlnJiBmcmFtZV9jb25maWcpIHsKICAgaWYgKCFUZW1wb3JhbExheWVyc0NoZWNrZXI6
OkNoZWNrVGVtcG9yYWxDb25maWcoZnJhbWVfaXNfa2V5ZnJhbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2NvbmZpZykpIHsKICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02MTMsNyArNjE5LDcgQEAgYm9vbCBEZWZhdWx0VGVtcG9yYWxMYXll
cnNDaGVja2VyOjpDaGVja1RlbXBvcmFsQ29uZmlnKAogICBzdGQ6OnZlY3RvcjxpbnQ+IGRlcGVu
ZGVuY2llczsKIAogICBpZiAoZnJhbWVfY29uZmlnLmxhc3RfYnVmZmVyX2ZsYWdzICYKLSAgICAg
IFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1JlZmVyZW5jZSkgeworICAgICAgVnA4VGVt
cG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprUmVmZXJlbmNlKSB7CiAgICAgdWludDhfdCByZWZl
cmVuY2VkX2xheWVyID0gdGVtcG9yYWxfaWRzX1tsYXN0Xy5wYXR0ZXJuX2lkeF07CiAgICAgaWYg
KHJlZmVyZW5jZWRfbGF5ZXIgPiAwKSB7CiAgICAgICBuZWVkX3N5bmMgPSBmYWxzZTsKQEAgLTYy
OCw3ICs2MzQsOCBAQCBib29sIERlZmF1bHRUZW1wb3JhbExheWVyc0NoZWNrZXI6OkNoZWNrVGVt
cG9yYWxDb25maWcoCiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKLSAgaWYgKGZyYW1lX2NvbmZp
Zy5hcmZfYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprUmVmZXJl
bmNlKSB7CisgIGlmIChmcmFtZV9jb25maWcuYXJmX2J1ZmZlcl9mbGFncyAmCisgICAgICBWcDhU
ZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtSZWZlcmVuY2UpIHsKICAgICB1aW50OF90IHJl
ZmVyZW5jZWRfbGF5ZXIgPSB0ZW1wb3JhbF9pZHNfW2FyZl8ucGF0dGVybl9pZHhdOwogICAgIGlm
IChyZWZlcmVuY2VkX2xheWVyID4gMCkgewogICAgICAgbmVlZF9zeW5jID0gZmFsc2U7CkBAIC02
NDQsNyArNjUxLDcgQEAgYm9vbCBEZWZhdWx0VGVtcG9yYWxMYXllcnNDaGVja2VyOjpDaGVja1Rl
bXBvcmFsQ29uZmlnKAogICB9CiAKICAgaWYgKGZyYW1lX2NvbmZpZy5nb2xkZW5fYnVmZmVyX2Zs
YWdzICYKLSAgICAgIFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1JlZmVyZW5jZSkgewor
ICAgICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprUmVmZXJlbmNlKSB7CiAgICAg
dWludDhfdCByZWZlcmVuY2VkX2xheWVyID0gdGVtcG9yYWxfaWRzX1tnb2xkZW5fLnBhdHRlcm5f
aWR4XTsKICAgICBpZiAocmVmZXJlbmNlZF9sYXllciA+IDApIHsKICAgICAgIG5lZWRfc3luYyA9
IGZhbHNlOwpAQCAtNjgwLDE3ICs2ODcsMTkgQEAgYm9vbCBEZWZhdWx0VGVtcG9yYWxMYXllcnND
aGVja2VyOjpDaGVja1RlbXBvcmFsQ29uZmlnKAogICAgIH0KICAgfQogCi0gIGlmIChmcmFtZV9j
b25maWcubGFzdF9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtV
cGRhdGUpIHsKKyAgaWYgKGZyYW1lX2NvbmZpZy5sYXN0X2J1ZmZlcl9mbGFncyAmCisgICAgICBW
cDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtVcGRhdGUpIHsKICAgICBsYXN0Xy5pc191
cGRhdGVkX3RoaXNfY3ljbGUgPSB0cnVlOwogICAgIGxhc3RfLnBhdHRlcm5faWR4ID0gcGF0dGVy
bl9pZHhfOwogICAgIGxhc3RfLmlzX2tleWZyYW1lID0gZmFsc2U7CiAgIH0KLSAgaWYgKGZyYW1l
X2NvbmZpZy5hcmZfYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjpr
VXBkYXRlKSB7CisgIGlmIChmcmFtZV9jb25maWcuYXJmX2J1ZmZlcl9mbGFncyAmIFZwOFRlbXBv
cmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkgewogICAgIGFyZl8uaXNfdXBkYXRlZF90
aGlzX2N5Y2xlID0gdHJ1ZTsKICAgICBhcmZfLnBhdHRlcm5faWR4ID0gcGF0dGVybl9pZHhfOwog
ICAgIGFyZl8uaXNfa2V5ZnJhbWUgPSBmYWxzZTsKICAgfQotICBpZiAoZnJhbWVfY29uZmlnLmdv
bGRlbl9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtVcGRhdGUp
IHsKKyAgaWYgKGZyYW1lX2NvbmZpZy5nb2xkZW5fYnVmZmVyX2ZsYWdzICYKKyAgICAgIFZwOFRl
bXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkgewogICAgIGdvbGRlbl8uaXNfdXBk
YXRlZF90aGlzX2N5Y2xlID0gdHJ1ZTsKICAgICBnb2xkZW5fLnBhdHRlcm5faWR4ID0gcGF0dGVy
bl9pZHhfOwogICAgIGdvbGRlbl8uaXNfa2V5ZnJhbWUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuaAppbmRleCBiZGE0M2NkNmQ5M2I0MTRiYmU3YTRi
YWFhNWJkMjY2MWZjNzQ5ZDZiLi5mZmY2MmE1NTdkMzZlMGRlOWZmZGFiZmIwY2NkMDA4MTUzMjAy
Mzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJz
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5oCkBAIC0x
OCwyMyArMTgsMjMgQEAKICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3RlbXBvcmFsX2xh
eWVyc19jaGVja2VyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Zw
OC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKLQogI2luY2x1ZGUgImFic2wvdHlwZXMv
b3B0aW9uYWwuaCIKIAorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xh
eWVycy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVk
ZS90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xh
c3MgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzIDogcHVibGljIFRlbXBvcmFsTGF5ZXJzIHsKK2NsYXNz
IERlZmF1bHRUZW1wb3JhbExheWVycyA6IHB1YmxpYyBWcDhUZW1wb3JhbExheWVycyB7CiAgcHVi
bGljOgogICBleHBsaWNpdCBEZWZhdWx0VGVtcG9yYWxMYXllcnMoaW50IG51bWJlcl9vZl90ZW1w
b3JhbF9sYXllcnMpOwotICB2aXJ0dWFsIH5EZWZhdWx0VGVtcG9yYWxMYXllcnMoKSB7fQorICB+
RGVmYXVsdFRlbXBvcmFsTGF5ZXJzKCkgb3ZlcnJpZGU7CiAKICAgYm9vbCBTdXBwb3J0c0VuY29k
ZXJGcmFtZURyb3BwaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgLy8gUmV0dXJucyB0aGUgcmVj
b21tZW5kZWQgVlA4IGVuY29kZSBmbGFncyBuZWVkZWQuIE1heSByZWZyZXNoIHRoZSBkZWNvZGVy
CiAgIC8vIGFuZC9vciB1cGRhdGUgdGhlIHJlZmVyZW5jZSBidWZmZXJzLgotICBUZW1wb3JhbExh
eWVyczo6RnJhbWVDb25maWcgVXBkYXRlTGF5ZXJDb25maWcodWludDMyX3QgdGltZXN0YW1wKSBv
dmVycmlkZTsKKyAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFVwZGF0ZUxheWVyQ29u
ZmlnKHVpbnQzMl90IHRpbWVzdGFtcCkgb3ZlcnJpZGU7CiAKICAgLy8gTmV3IHRhcmdldCBiaXRy
YXRlLCBwZXIgdGVtcG9yYWwgbGF5ZXIuCiAgIHZvaWQgT25SYXRlc1VwZGF0ZWQoY29uc3Qgc3Rk
Ojp2ZWN0b3I8dWludDMyX3Q+JiBiaXRyYXRlc19icHMsCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNz
IERlZmF1bHRUZW1wb3JhbExheWVycyA6IHB1YmxpYyBUZW1wb3JhbExheWVycyB7CiAKICBwcml2
YXRlOgogICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrS2V5ZnJhbWVCdWZmZXIgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOwotICBzdGF0aWMgc3RkOjp2ZWN0b3I8VGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnPiBHZXRUZW1wb3JhbFBhdHRlcm4oCisgIHN0YXRpYyBzdGQ6
OnZlY3RvcjxWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc+IEdldFRlbXBvcmFsUGF0dGVy
bigKICAgICAgIHNpemVfdCBudW1fbGF5ZXJzKTsKICAgYm9vbCBJc1N5bmNGcmFtZShjb25zdCBG
cmFtZUNvbmZpZyYgY29uZmlnKSBjb25zdDsKICAgdm9pZCBWYWxpZGF0ZVJlZmVyZW5jZXMoQnVm
ZmVyRmxhZ3MqIGZsYWdzLCBWcDhCdWZmZXJSZWZlcmVuY2UgcmVmKSBjb25zdDsKQEAgLTU4LDcg
KzU4LDcgQEAgY2xhc3MgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzIDogcHVibGljIFRlbXBvcmFsTGF5
ZXJzIHsKIAogICBjb25zdCBzaXplX3QgbnVtX2xheWVyc187CiAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHVuc2lnbmVkIGludD4gdGVtcG9yYWxfaWRzXzsKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnPiB0ZW1wb3JhbF9wYXR0ZXJuXzsKKyAgY29uc3Qgc3RkOjp2
ZWN0b3I8VnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnPiB0ZW1wb3JhbF9wYXR0ZXJuXzsK
ICAgLy8gU2V0IG9mIGJ1ZmZlcnMgdGhhdCBhcmUgbmV2ZXIgdXBkYXRlZCBleGNlcHQgYnkga2V5
ZnJhbWVzLgogICBjb25zdCBzdGQ6OnNldDxWcDhCdWZmZXJSZWZlcmVuY2U+IGtmX2J1ZmZlcnNf
OwogCkBAIC05NSw5ICs5NSwxMSBAQCBjbGFzcyBEZWZhdWx0VGVtcG9yYWxMYXllcnMgOiBwdWJs
aWMgVGVtcG9yYWxMYXllcnMgewogY2xhc3MgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlciA6
IHB1YmxpYyBUZW1wb3JhbExheWVyc0NoZWNrZXIgewogIHB1YmxpYzoKICAgZXhwbGljaXQgRGVm
YXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcihpbnQgbnVtYmVyX29mX3RlbXBvcmFsX2xheWVycyk7
CisgIH5EZWZhdWx0VGVtcG9yYWxMYXllcnNDaGVja2VyKCkgb3ZlcnJpZGU7CisKICAgYm9vbCBD
aGVja1RlbXBvcmFsQ29uZmlnKAogICAgICAgYm9vbCBmcmFtZV9pc19rZXlmcmFtZSwKLSAgICAg
IGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgZnJhbWVfY29uZmlnKSBvdmVycmlk
ZTsKKyAgICAgIGNvbnN0IFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgZnJhbWVfY29u
ZmlnKSBvdmVycmlkZTsKIAogIHByaXZhdGU6CiAgIHN0cnVjdCBCdWZmZXJTdGF0ZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVyc191bml0dGVzdC5j
YwppbmRleCBhZDMxYTZlZjRhMGFlY2JiMzMyYjEwMTU2ZmU5ZDc5OTg4ZmQwZjFjLi41ZWU2NTIw
NTVjZWE1MTc3ODJiM2NjZWRjZjA5OTQzZGFmNzFjN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnNfdW5pdHRlc3QuY2MKQEAgLTc0LDcgKzc0
LDcgQEAgY29uc3RleHByIGludCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUgPQogY29uc3RleHByIGlu
dCBrRGVmYXVsdFFwID0gMjsKIH0gIC8vIG5hbWVzcGFjZQogCi11c2luZyBCdWZmZXJGbGFncyA9
IFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczsKK3VzaW5nIEJ1ZmZlckZsYWdzID0gVnA4VGVt
cG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOwogCiBURVNUKFRlbXBvcmFsTGF5ZXJzVGVzdCwgMkxh
eWVycykgewogICBjb25zdGV4cHIgaW50IGtOdW1MYXllcnMgPSAyOwpAQCAtMTE0LDcgKzExNCw3
IEBAIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCAyTGF5ZXJzKSB7CiAKICAgdWludDMyX3QgdGlt
ZXN0YW1wID0gMDsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytpKSB7Ci0gICAgVGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRp
bWVzdGFtcCk7CisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9
IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
X2ZsYWdzW2ldLCBMaWJ2cHhWcDhFbmNvZGVyOjpFbmNvZGVGbGFncyh0bF9jb25maWcpKSA8PCBp
OwogICAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwg
aSA9PSAwLCBrRGVmYXVsdFFwLAogICAgICAgICAgICAgICAgICAgICAmdnA4X2luZm8pOwpAQCAt
MTY2LDcgKzE2Niw3IEBAIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCAzTGF5ZXJzKSB7CiAKICAg
dW5zaWduZWQgaW50IHRpbWVzdGFtcCA9IDA7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7ICsr
aSkgewotICAgIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5VcGRh
dGVMYXllckNvbmZpZyh0aW1lc3RhbXApOworICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNv
bmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXApOwogICAgIEVY
UEVDVF9FUShleHBlY3RlZF9mbGFnc1tpXSwgTGlidnB4VnA4RW5jb2Rlcjo6RW5jb2RlRmxhZ3Mo
dGxfY29uZmlnKSkgPDwgaTsKICAgICB0bC5PbkVuY29kZURvbmUodGltZXN0YW1wLCBrRGVmYXVs
dEJ5dGVzUGVyRnJhbWUsIGkgPT0gMCwga0RlZmF1bHRRcCwKICAgICAgICAgICAgICAgICAgICAg
JnZwOF9pbmZvKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBURVNUKFRlbXBvcmFsTGF5ZXJzVGVzdCwg
QWx0ZXJuYXRpdmUzTGF5ZXJzKSB7CiAKICAgdW5zaWduZWQgaW50IHRpbWVzdGFtcCA9IDA7CiAg
IGZvciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7Ci0gICAgVGVtcG9yYWxMYXllcnM6OkZyYW1l
Q29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgICAg
VnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVy
Q29uZmlnKHRpbWVzdGFtcCk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2ZsYWdzW2ldLCBMaWJ2
cHhWcDhFbmNvZGVyOjpFbmNvZGVGbGFncyh0bF9jb25maWcpKSA8PCBpOwogICAgIHRsLk9uRW5j
b2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwgaSA9PSAwLCBrRGVmYXVs
dFFwLAogICAgICAgICAgICAgICAgICAgICAmdnA4X2luZm8pOwpAQCAtMjM4LDcgKzIzOCw3IEBA
IFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCBTZWFyY2hPcmRlcikgewogCiAgIC8vIFN0YXJ0IHdp
dGggYSBrZXktZnJhbWUuIHRsX2NvbmZpZyBmbGFncyBjYW4gYmUgaWdub3JlZC4KICAgdWludDMy
X3QgdGltZXN0YW1wID0gMDsKLSAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZp
ZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgIFZwOFRlbXBvcmFsTGF5ZXJz
OjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXAp
OwogICB0bC5PbkVuY29kZURvbmUodGltZXN0YW1wLCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUsIHRy
dWUsIGtEZWZhdWx0UXAsCiAgICAgICAgICAgICAgICAgICAmdnA4X2luZm8pOwogCkBAIC0yODIs
NyArMjgyLDcgQEAgVEVTVChUZW1wb3JhbExheWVyc1Rlc3QsIFNlYXJjaE9yZGVyV2l0aERyb3Ap
IHsKIAogICAvLyBTdGFydCB3aXRoIGEga2V5LWZyYW1lLiB0bF9jb25maWcgZmxhZ3MgY2FuIGJl
IGlnbm9yZWQuCiAgIHVpbnQzMl90IHRpbWVzdGFtcCA9IDA7Ci0gIFRlbXBvcmFsTGF5ZXJzOjpG
cmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXApOwor
ICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5
ZXJDb25maWcodGltZXN0YW1wKTsKICAgdGwuT25FbmNvZGVEb25lKHRpbWVzdGFtcCwga0RlZmF1
bHRCeXRlc1BlckZyYW1lLCB0cnVlLCBrRGVmYXVsdFFwLAogICAgICAgICAgICAgICAgICAgJnZw
OF9pbmZvKTsKIApAQCAtMzQzLDcgKzM0Myw3IEBAIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCA0
TGF5ZXJzKSB7CiAKICAgdWludDMyX3QgdGltZXN0YW1wID0gMDsKICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAxNjsgKytpKSB7Ci0gICAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZp
ZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgICAgVnA4VGVtcG9yYWxMYXll
cnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFt
cCk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2ZsYWdzW2ldLCBMaWJ2cHhWcDhFbmNvZGVyOjpF
bmNvZGVGbGFncyh0bF9jb25maWcpKSA8PCBpOwogICAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3Rh
bXAsIGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwgaSA9PSAwLCBrRGVmYXVsdFFwLAogICAgICAgICAg
ICAgICAgICAgICAmdnA4X2luZm8pOwpAQCAtMzczLDcgKzM3Myw3IEBAIFRFU1QoVGVtcG9yYWxM
YXllcnNUZXN0LCBEb2VzTm90UmVmZXJlbmNlRHJvcHBlZEZyYW1lcykgewogCiAgIC8vIFN0YXJ0
IHdpdGggYSBrZXlmcmFtZS4KICAgdWludDMyX3QgdGltZXN0YW1wID0gMDsKLSAgVGVtcG9yYWxM
YXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVz
dGFtcCk7CisgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5V
cGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXApOwogICB0bC5PbkVuY29kZURvbmUodGltZXN0YW1w
LCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUsIHRydWUsIGtEZWZhdWx0UXAsCiAgICAgICAgICAgICAg
ICAgICAmdnA4X2luZm8pOwogCkBAIC00NjAsNyArNDYwLDcgQEAgVEVTVChUZW1wb3JhbExheWVy
c1Rlc3QsIERvZXNOb3RSZWZlcmVuY2VVbmxlc3NHdWFyYW50ZWVkVG9FeGlzdCkgewogCiAgIC8v
IFN0YXJ0IHdpdGggYSBrZXlmcmFtZS4KICAgdWludDMyX3QgdGltZXN0YW1wID0gMDsKLSAgVGVt
cG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmln
KHRpbWVzdGFtcCk7CisgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcg
PSB0bC5VcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXApOwogICB0bC5PbkVuY29kZURvbmUodGlt
ZXN0YW1wLCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUsIHRydWUsIGtEZWZhdWx0UXAsCiAgICAgICAg
ICAgICAgICAgICAmdnA4X2luZm8pOwogCkBAIC01MzAsNyArNTMwLDcgQEAgVEVTVChUZW1wb3Jh
bExheWVyc1Rlc3QsIERvZXNOb3RSZWZlcmVuY2VVbmxlc3NHdWFyYW50ZWVkVG9FeGlzdExvbmdE
ZWxheSkgewogCiAgIC8vIFN0YXJ0IHdpdGggYSBrZXlmcmFtZS4KICAgdWludDMyX3QgdGltZXN0
YW1wID0gMDsKLSAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVw
ZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNv
bmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXApOwogICB0bC5P
bkVuY29kZURvbmUodGltZXN0YW1wLCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUsIHRydWUsIGtEZWZh
dWx0UXAsCiAgICAgICAgICAgICAgICAgICAmdnA4X2luZm8pOwogCkBAIC02MTAsNyArNjEwLDgg
QEAgVEVTVChUZW1wb3JhbExheWVyc1Rlc3QsIEtleUZyYW1lKSB7CiAgICAgZm9yIChpbnQgaiA9
IDE7IGogPD0gaTsgKytqKSB7CiAgICAgICAvLyBTaW5jZSBsYXN0IGZyYW1lIHdhcyBhbHdheXMg
YSBrZXlmcmFtZSBhbmQgdGh1cyBpbmRleCAwIGluIHRoZSBwYXR0ZXJuLAogICAgICAgLy8gdGhp
cyBsb29wIHN0YXJ0cyBhdCBpbmRleCAxLgotICAgICAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29u
ZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgICAgICBW
cDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0KKyAgICAgICAgICB0bC5V
cGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXApOwogICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2Zs
YWdzW2pdLCBMaWJ2cHhWcDhFbmNvZGVyOjpFbmNvZGVGbGFncyh0bF9jb25maWcpKQogICAgICAg
ICAgIDw8IGo7CiAgICAgICB0bC5PbkVuY29kZURvbmUodGltZXN0YW1wLCBrRGVmYXVsdEJ5dGVz
UGVyRnJhbWUsIGZhbHNlLCBrRGVmYXVsdFFwLApAQCAtNjIyLDcgKzYyMyw3IEBAIFRFU1QoVGVt
cG9yYWxMYXllcnNUZXN0LCBLZXlGcmFtZSkgewogICAgICAgdGltZXN0YW1wICs9IDMwMDA7CiAg
ICAgfQogCi0gICAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVw
ZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1l
Q29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgICAg
dGwuT25FbmNvZGVEb25lKHRpbWVzdGFtcCwga0RlZmF1bHRCeXRlc1BlckZyYW1lLCB0cnVlLCBr
RGVmYXVsdFFwLAogICAgICAgICAgICAgICAgICAgICAmdnA4X2luZm8pOwogICAgIEVYUEVDVF9U
UlVFKHZwOF9pbmZvLmxheWVyU3luYykgPDwgIktleSBmcmFtZSBzaG91bGQgYmUgbWFya2VkIGxh
eWVyIHN5bmMuIjsKQEAgLTY1Miw5ICs2NTMsOSBAQCBjbGFzcyBUZW1wb3JhbExheWVyc1JlZmVy
ZW5jZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4gewogICAgIGJv
b2wgc3luYzsKICAgfTsKIAotICBib29sIFVwZGF0ZVN5bmNSZWZTdGF0ZShjb25zdCBUZW1wb3Jh
bExheWVyczo6QnVmZmVyRmxhZ3MmIGZsYWdzLAorICBib29sIFVwZGF0ZVN5bmNSZWZTdGF0ZShj
b25zdCBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MmIGZsYWdzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBCdWZmZXJTdGF0ZSogYnVmZmVyX3N0YXRlKSB7Ci0gICAgaWYgKGZsYWdz
ICYgVGVtcG9yYWxMYXllcnM6OmtSZWZlcmVuY2UpIHsKKyAgICBpZiAoZmxhZ3MgJiBWcDhUZW1w
b3JhbExheWVyczo6a1JlZmVyZW5jZSkgewogICAgICAgaWYgKGJ1ZmZlcl9zdGF0ZS0+dGVtcG9y
YWxfaWR4ID09IC0xKQogICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIFJlZmVyZW5jZXMga2V5LWZy
YW1lLgogICAgICAgaWYgKGJ1ZmZlcl9zdGF0ZS0+dGVtcG9yYWxfaWR4ID09IDApIHsKQEAgLTY2
OCwxMCArNjY5LDEwIEBAIGNsYXNzIFRlbXBvcmFsTGF5ZXJzUmVmZXJlbmNlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7CiAgICAgcmV0dXJuIHRydWU7ICAvLyBO
byByZWZlcmVuY2UsIGRvZXMgbm90IGFmZmVjdCBzeW5jIGZyYW1lIHN0YXR1cy4KICAgfQogCi0g
IHZvaWQgVmFsaWRhdGVSZWZlcmVuY2UoY29uc3QgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdz
JiBmbGFncywKKyAgdm9pZCBWYWxpZGF0ZVJlZmVyZW5jZShjb25zdCBWcDhUZW1wb3JhbExheWVy
czo6QnVmZmVyRmxhZ3MmIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1
ZmZlclN0YXRlJiBidWZmZXJfc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRl
bXBvcmFsX2xheWVyKSB7Ci0gICAgaWYgKGZsYWdzICYgVGVtcG9yYWxMYXllcnM6OmtSZWZlcmVu
Y2UpIHsKKyAgICBpZiAoZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgewog
ICAgICAgaWYgKHRlbXBvcmFsX2xheWVyID4gMCAmJiBidWZmZXJfc3RhdGUudGltZXN0YW1wID4g
MCkgewogICAgICAgICAvLyBDaGVjayB0aGF0IGhpZ2ggbGF5ZXIgcmVmZXJlbmNlIGRvZXMgbm90
IGdvIHBhc3QgbGFzdCBzeW5jIGZyYW1lLgogICAgICAgICBFWFBFQ1RfR0UoYnVmZmVyX3N0YXRl
LnRpbWVzdGFtcCwgbGFzdF9zeW5jX3RpbWVzdGFtcF8pOwpAQCAtNzA5LDkgKzcxMCw5IEBAIFRF
U1RfUChUZW1wb3JhbExheWVyc1JlZmVyZW5jZVRlc3QsIFZhbGlkRnJhbWVDb25maWdzKSB7CiAg
IC8vIChhbnkpLiBJZiBhIGdpdmVuIGJ1ZmZlciBpcyBuZXZlciB1cGRhdGVkLCBpdCBpcyBsZWdh
bCB0byByZWZlcmVuY2UgaXQKICAgLy8gZXZlbiBmb3Igc3luYyBmcmFtZXMuIEluIG9yZGVyIHRv
IGJlIGdlbmVyYWwsIGRvbid0IGFzc3VtZSBUTDAgYWx3YXlzCiAgIC8vIHVwZGF0ZXMgfGxhc3R8
LgotICBzdGQ6OnZlY3RvcjxUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc+IHRsX2NvbmZpZ3Mo
a01heFBhdHRlcm5MZW5ndGgpOworICBzdGQ6OnZlY3RvcjxWcDhUZW1wb3JhbExheWVyczo6RnJh
bWVDb25maWc+IHRsX2NvbmZpZ3Moa01heFBhdHRlcm5MZW5ndGgpOwogICBmb3IgKGludCBpID0g
MDsgaSA8IGtNYXhQYXR0ZXJuTGVuZ3RoOyArK2kpIHsKLSAgICBUZW1wb3JhbExheWVyczo6RnJh
bWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wXyk7Cisg
ICAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxh
eWVyQ29uZmlnKHRpbWVzdGFtcF8pOwogICAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXBfLCBr
RGVmYXVsdEJ5dGVzUGVyRnJhbWUsIGkgPT0gMCwga0RlZmF1bHRRcCwKICAgICAgICAgICAgICAg
ICAgICAgJnZwOF9zcGVjaWZpY3MpOwogICAgICsrdGltZXN0YW1wXzsKQEAgLTc1MiwxMSArNzUz
LDExIEBAIFRFU1RfUChUZW1wb3JhbExheWVyc1JlZmVyZW5jZVRlc3QsIFZhbGlkRnJhbWVDb25m
aWdzKSB7CiAKICAgICAvLyBVcGRhdGUgdGhlIGN1cnJlbnQgbGF5ZXIgc3RhdGUuCiAgICAgQnVm
ZmVyU3RhdGUgc3RhdGUgPSB7dGVtcG9yYWxfaWR4LCB0aW1lc3RhbXBfLCBpc19zeW5jX2ZyYW1l
fTsKLSAgICBpZiAodGxfY29uZmlnLmxhc3RfYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6
OmtVcGRhdGUpCisgICAgaWYgKHRsX2NvbmZpZy5sYXN0X2J1ZmZlcl9mbGFncyAmIFZwOFRlbXBv
cmFsTGF5ZXJzOjprVXBkYXRlKQogICAgICAgbGFzdF9zdGF0ZSA9IHN0YXRlOwotICAgIGlmICh0
bF9jb25maWcuZ29sZGVuX2J1ZmZlcl9mbGFncyAmIFRlbXBvcmFsTGF5ZXJzOjprVXBkYXRlKQor
ICAgIGlmICh0bF9jb25maWcuZ29sZGVuX2J1ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJz
OjprVXBkYXRlKQogICAgICAgZ29sZGVuX3N0YXRlID0gc3RhdGU7Ci0gICAgaWYgKHRsX2NvbmZp
Zy5hcmZfYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpCisgICAgaWYgKHRs
X2NvbmZpZy5hcmZfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpCiAg
ICAgICBhbHRyZWZfc3RhdGUgPSBzdGF0ZTsKICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC9pbmNsdWRlL3RlbXBvcmFsX2xheWVyc19jaGVja2VyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuaAppbmRleCA5ODc4YWM5ZjNhMWM2
YmRjZDE1YmNmZTc5Zjk0YjE0ZjAyODEwMDkwLi5hZTE0ZjY4MjM2MWMzZjQ1NDlmYmJiNzY2MWVh
NjBmYTA5ODI2ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdGVtcG9y
YWxfbGF5ZXJzX2NoZWNrZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdGVtcG9y
YWxfbGF5ZXJzX2NoZWNrZXIuaApAQCAtMTUsNyArMTUsNyBAQAogCiAjaW5jbHVkZSA8bWVtb3J5
PgogCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3Zw
OF90ZW1wb3JhbF9sYXllcnMuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1w
b3JhbF9sYXllcnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTI5LDEwICsyOSwxMCBA
QCBjbGFzcyBUZW1wb3JhbExheWVyc0NoZWNrZXIgewogCiAgIHZpcnR1YWwgYm9vbCBDaGVja1Rl
bXBvcmFsQ29uZmlnKAogICAgICAgYm9vbCBmcmFtZV9pc19rZXlmcmFtZSwKLSAgICAgIGNvbnN0
IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgZnJhbWVfY29uZmlnKTsKKyAgICAgIGNvbnN0
IFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgZnJhbWVfY29uZmlnKTsKIAogICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcj4gQ3JlYXRlVGVtcG9yYWxM
YXllcnNDaGVja2VyKAotICAgICAgVGVtcG9yYWxMYXllcnNUeXBlIHR5cGUsCisgICAgICBWcDhU
ZW1wb3JhbExheWVyc1R5cGUgdHlwZSwKICAgICAgIGludCBudW1fdGVtcG9yYWxfbGF5ZXJzKTsK
IAogIHByaXZhdGU6CkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFRlbXBvcmFsTGF5ZXJzQ2hlY2tl
ciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sKiBuZWVkX3N5bmMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyYW1lX2lzX2tleWZyYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCB0ZW1wb3JhbF9sYXllciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6VGVtcG9yYWxMYXllcnM6
OkJ1ZmZlckZsYWdzIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vi
cnRjOjpWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgZmxhZ3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzZXF1ZW5jZV9udW1iZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCogbG93ZXN0X3NlcXVlbmNlX3JlZmVyZW5j
ZWQpOwogICBCdWZmZXJTdGF0ZSBsYXN0XzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgv
aW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUv
dnA4X3RlbXBvcmFsX2xheWVycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWRi
YzRlYzJiZmMyYjYwMTNiYTRhYTIyMmEwN2RlMGU0ZmMzOGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhf
dGVtcG9yYWxfbGF5ZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotLyoKLSAq
ICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQ
OF9JTkNMVURFX1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8KLSNkZWZpbmUgTU9EVUxFU19WSURFT19D
T0RJTkdfQ09ERUNTX1ZQOF9JTkNMVURFX1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8KLQotI2luY2x1
ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0v
LyBTb21lIG5vdGVzIG9uIHRoZSBwcmVyZXF1aXNpdGVzIG9mIHRoZSBUZW1wb3JhbExheWVycyBp
bnRlcmZhY2UuCi0vLyAqIEltcGxlbWVudGF0aW9ucyBvZiBUZW1wb3JhbExheWVycyBtYXkgbm90
IGNvbnRhaW4gaW50ZXJuYWwgc3luY2hyb25pemF0aW9uCi0vLyAgIHNvIGNhbGxlciBtdXN0IG1h
a2Ugc3VyZSBkb2luZyBzbyB0aHJlYWQgc2FmZS4KLS8vICogVGhlIGVuY29kZXIgaXMgYXNzdW1l
ZCB0byBlbmNvZGUgYWxsIGZyYW1lcyBpbiBvcmRlciwgYW5kIGNhbGxiYWNrcyB0bwotLy8gICBQ
b3B1bGF0ZUNvZGVjU3BlY2lmaWMoKSAvIEZyYW1lRW5jb2RlZCgpIG11c3QgaGFwcGVuIGluIHRo
ZSBzYW1lIG9yZGVyLgotLy8KLS8vIFRoaXMgbWVhbnMgdGhhdCBpbiB0aGUgY2FzZSBvZiBwaXBl
bGluaW5nIGVuY29kZXJzLCBpdCBpcyBPSyB0byBoYXZlIGEgY2hhaW4KLS8vIG9mIGNhbGxzIHN1
Y2ggYXMgdGhpczoKLS8vIC0gVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wQSkKLS8vIC0gVXBk
YXRlTGF5ZXJDb25maWcodGltZXN0YW1wQikKLS8vIC0gUG9wdWxhdGVDb2RlY1NwZWNpZmljKHRp
bWVzdGFtcEEsIC4uLikKLS8vIC0gVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wQykKLS8vIC0g
T25FbmNvZGVEb25lKHRpbWVzdGFtcEEsIDEyMzQsIC4uLikKLS8vIC0gVXBkYXRlTGF5ZXJDb25m
aWcodGltZXN0YW1wQykKLS8vIC0gT25FbmNvZGVEb25lKHRpbWVzdGFtcEIsIDAsIC4uLikKLS8v
IC0gT25FbmNvZGVEb25lKHRpbWVzdGFtcEMsIDEyMzQsIC4uLikKLS8vIE5vdGUgdGhhdCBVcGRh
dGVMYXllckNvbmZpZygpIGZvciBhIG5ldyBmcmFtZSBjYW4gaGFwcGVuIGJlZm9yZQotLy8gRnJh
bWVFbmNvZGVkKCkgZm9yIGEgcHJldmlvdXMgb25lLCBidXQgY2FsbHMgdGhlbXNlbHZlcyBtdXN0
IGJlIGJvdGgKLS8vIHN5bmNocm9uaXplZCAoZS5nLiBydW4gb24gYSB0YXNrIHF1ZXVlKSBhbmQg
aW4gb3JkZXIgKHBlciB0eXBlKS4KLQotZW51bSBjbGFzcyBUZW1wb3JhbExheWVyc1R5cGUgeyBr
Rml4ZWRQYXR0ZXJuLCBrQml0cmF0ZUR5bmFtaWMgfTsKLQotc3RydWN0IENvZGVjU3BlY2lmaWNJ
bmZvVlA4OwotZW51bSBjbGFzcyBWcDhCdWZmZXJSZWZlcmVuY2UgOiB1aW50OF90IHsKLSAga05v
bmUgPSAwLAotICBrTGFzdCA9IDEsCi0gIGtHb2xkZW4gPSAyLAotICBrQWx0cmVmID0gNAotfTsK
LQotc3RydWN0IFZwOEVuY29kZXJDb25maWcgewotICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBr
TWF4UGVyaW9kaWNpdHkgPSAxNjsKLSAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga01heExheWVy
cyA9IDU7Ci0KLSAgLy8gTnVtYmVyIG9mIGFjdGl2ZSB0ZW1wb3JhbCBsYXllcnMuIFNldCB0byAw
IGlmIG5vdCB1c2VkLgotICB1aW50MzJfdCB0c19udW1iZXJfbGF5ZXJzOwotICAvLyBBcnJheXMg
b2YgbGVuZ3RoIHx0c19udW1iZXJfbGF5ZXJzfCwgaW5kaWNhdGluZyAoY3VtdWxhdGl2ZSkgdGFy
Z2V0IGJpdHJhdGUKLSAgLy8gYW5kIHJhdGUgZGVjaW1hdG9yIChlLmcuIDQgaWYgZXZlcnkgNHRo
IGZyYW1lIGlzIGluIHRoZSBnaXZlbiBsYXllcikgZm9yCi0gIC8vIGVhY2ggYWN0aXZlIHRlbXBv
cmFsIGxheWVyLCBzdGFydGluZyB3aXRoIHRlbXBvcmFsIGlkIDAuCi0gIHVpbnQzMl90IHRzX3Rh
cmdldF9iaXRyYXRlW2tNYXhMYXllcnNdOwotICB1aW50MzJfdCB0c19yYXRlX2RlY2ltYXRvcltr
TWF4TGF5ZXJzXTsKLQotICAvLyBUaGUgcGVyaW9kaWNpdHkgb2YgdGhlIHRlbXBvcmFsIHBhdHRl
cm4uIFNldCB0byAwIGlmIG5vdCB1c2VkLgotICB1aW50MzJfdCB0c19wZXJpb2RpY2l0eTsKLSAg
Ly8gQXJyYXkgb2YgbGVuZ3RoIHx0c19wZXJpb2RpY2l0eXwgaW5kaWNhdGluZyB0aGUgc2VxdWVu
Y2Ugb2YgdGVtcG9yYWwgaWQncwotICAvLyB0byBhc3NpZ24gdG8gaW5jb21pbmcgZnJhbWVzLgot
ICB1aW50MzJfdCB0c19sYXllcl9pZFtrTWF4UGVyaW9kaWNpdHldOwotCi0gIC8vIFRhcmdldCBi
aXRyYXRlLCBpbiBicHMuCi0gIHVpbnQzMl90IHJjX3RhcmdldF9iaXRyYXRlOwotCi0gIC8vIENs
YW1wIFFQIHRvIG1pbi9tYXguIFVzZSAwIHRvIGRpc2FibGUgY2xhbXBpbmcuCi0gIHVpbnQzMl90
IHJjX21pbl9xdWFudGl6ZXI7Ci0gIHVpbnQzMl90IHJjX21heF9xdWFudGl6ZXI7Ci19OwotCi0v
LyBUaGlzIGludGVyZmFjZSBkZWZpbmVzIGEgd2F5IG9mIGdldHRpbmcgdGhlIGVuY29kZXIgc2V0
dGluZ3MgbmVlZGVkIHRvCi0vLyByZWFsaXplIGEgdGVtcG9yYWwgbGF5ZXIgc3RydWN0dXJlIG9m
IHByZWRlZmluZWQgc2l6ZS4KLWNsYXNzIFRlbXBvcmFsTGF5ZXJzIHsKLSBwdWJsaWM6Ci0gIGVu
dW0gQnVmZmVyRmxhZ3MgOiBpbnQgewotICAgIGtOb25lID0gMCwKLSAgICBrUmVmZXJlbmNlID0g
MSwKLSAgICBrVXBkYXRlID0gMiwKLSAgICBrUmVmZXJlbmNlQW5kVXBkYXRlID0ga1JlZmVyZW5j
ZSB8IGtVcGRhdGUsCi0gIH07Ci0gIGVudW0gRnJlZXplRW50cm9weSB7IGtGcmVlemVFbnRyb3B5
IH07Ci0KLSAgc3RydWN0IEZyYW1lQ29uZmlnIHsKLSAgICBGcmFtZUNvbmZpZygpOwotCi0gICAg
RnJhbWVDb25maWcoQnVmZmVyRmxhZ3MgbGFzdCwgQnVmZmVyRmxhZ3MgZ29sZGVuLCBCdWZmZXJG
bGFncyBhcmYpOwotICAgIEZyYW1lQ29uZmlnKEJ1ZmZlckZsYWdzIGxhc3QsCi0gICAgICAgICAg
ICAgICAgQnVmZmVyRmxhZ3MgZ29sZGVuLAotICAgICAgICAgICAgICAgIEJ1ZmZlckZsYWdzIGFy
ZiwKLSAgICAgICAgICAgICAgICBGcmVlemVFbnRyb3B5KTsKLQotICAgIGJvb2wgZHJvcF9mcmFt
ZTsKLSAgICBCdWZmZXJGbGFncyBsYXN0X2J1ZmZlcl9mbGFnczsKLSAgICBCdWZmZXJGbGFncyBn
b2xkZW5fYnVmZmVyX2ZsYWdzOwotICAgIEJ1ZmZlckZsYWdzIGFyZl9idWZmZXJfZmxhZ3M7Ci0K
LSAgICAvLyBUaGUgZW5jb2RlciBsYXllciBJRCBpcyB1c2VkIHRvIHV0aWxpemUgdGhlIGNvcnJl
Y3QgYml0cmF0ZSBhbGxvY2F0b3IKLSAgICAvLyBpbnNpZGUgdGhlIGVuY29kZXIuIEl0IGRvZXMg
bm90IGNvbnRyb2wgcmVmZXJlbmNlcyBub3IgZGV0ZXJtaW5lIHdoaWNoCi0gICAgLy8gImFjdHVh
bCIgdGVtcG9yYWwgbGF5ZXIgdGhpcyBpcy4gVGhlIHBhY2tldGl6ZXIgdGVtcG9yYWwgaW5kZXgg
ZGV0ZXJtaW5lcwotICAgIC8vIHdoaWNoIGxheWVyIHRoZSBlbmNvZGVkIGZyYW1lIHNob3VsZCBi
ZSBwYWNrZXRpemVkIGludG8uCi0gICAgLy8gTm9ybWFsbHkgdGhlc2UgYXJlIHRoZSBzYW1lLCBi
dXQgY3VycmVudCB0ZW1wb3JhbC1sYXllciBzdHJhdGVnaWVzIGZvcgotICAgIC8vIHNjcmVlbnNo
YXJlIHVzZSBvbmUgYml0cmF0ZSBhbGxvY2F0b3IgZm9yIGFsbCBsYXllcnMsIGJ1dCBhdHRlbXB0
IHRvCi0gICAgLy8gcGFja2V0aXplIC8gdXRpbGl6ZSByZWZlcmVuY2VzIHRvIHNwbGl0IGEgc3Ry
ZWFtIGludG8gbXVsdGlwbGUgbGF5ZXJzLAotICAgIC8vIHdpdGggZGlmZmVyZW50IHF1YW50aXpl
ciBzZXR0aW5ncywgdG8gaGl0IHRhcmdldCBiaXRyYXRlLgotICAgIC8vIFRPRE8ocGJvcyk6IFNj
cmVlbnNoYXJlIGxheWVycyBhcmUgYmVpbmcgcmVjb25zaWRlcmVkIGF0IHRoZSB0aW1lIG9mCi0g
ICAgLy8gd3JpdGluZywgd2UgbWlnaHQgYmUgYWJsZSB0byByZW1vdmUgdGhpcyBkaXN0aW5jdGlv
biwgYW5kIGhhdmUgYSB0ZW1wb3JhbAotICAgIC8vIGxheWVyIGltcGx5IGJvdGggKHRoZSBub3Jt
YWwgY2FzZSkuCi0gICAgaW50IGVuY29kZXJfbGF5ZXJfaWQ7Ci0gICAgaW50IHBhY2tldGl6ZXJf
dGVtcG9yYWxfaWR4OwotCi0gICAgYm9vbCBsYXllcl9zeW5jOwotCi0gICAgYm9vbCBmcmVlemVf
ZW50cm9weTsKLQotICAgIC8vIEluZGljYXRlcyBpbiB3aGljaCBvcmRlciB0aGUgZW5jb2RlciBz
aG91bGQgc2VhcmNoIHRoZSByZWZlcmVuY2UgYnVmZmVycwotICAgIC8vIHdoZW4gZG9pbmcgbW90
aW9uIHByZWRpY3Rpb24uIFNldCB0byBrTm9uZSB0byB1c2UgdW5zcGVjaWZpZWQgb3JkZXIuIEFu
eQotICAgIC8vIGJ1ZmZlciBpbmRpY2F0ZWQgaGVyZSBtdXN0IG5vdCBoYXZlIHRoZSBjb3JyZXNw
b25kaW5nIG5vX3JlZiBiaXQgc2V0LgotICAgIC8vIElmIGFsbCB0aHJlZSBidWZmZXJzIGNhbiBi
ZSByZWZlcmVuY2UsIHRoZSBvbmUgbm90IGxpc3RlZCBoZXJlIHNob3VsZCBiZQotICAgIC8vIHNl
YXJjaGVkIGxhc3QuCi0gICAgVnA4QnVmZmVyUmVmZXJlbmNlIGZpcnN0X3JlZmVyZW5jZTsKLSAg
ICBWcDhCdWZmZXJSZWZlcmVuY2Ugc2Vjb25kX3JlZmVyZW5jZTsKLQotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGcmFtZUNvbmZpZyYgbykgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZyYW1lQ29uZmlnJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9Ci0KLSAg
IHByaXZhdGU6Ci0gICAgRnJhbWVDb25maWcoQnVmZmVyRmxhZ3MgbGFzdCwKLSAgICAgICAgICAg
ICAgICBCdWZmZXJGbGFncyBnb2xkZW4sCi0gICAgICAgICAgICAgICAgQnVmZmVyRmxhZ3MgYXJm
LAotICAgICAgICAgICAgICAgIGJvb2wgZnJlZXplX2VudHJvcHkpOwotICB9OwotCi0gIC8vIEZh
Y3RvcnkgZm9yIFRlbXBvcmFsTGF5ZXIgc3RyYXRlZ3kuIERlZmF1bHQgYmVoYXZpb3IgaXMgYSBm
aXhlZCBwYXR0ZXJuCi0gIC8vIG9mIHRlbXBvcmFsIGxheWVycy4gU2VlIGRlZmF1bHRfdGVtcG9y
YWxfbGF5ZXJzLmNjCi0gIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGVtcG9yYWxMYXllcnM+IENy
ZWF0ZVRlbXBvcmFsTGF5ZXJzKAotICAgICAgVGVtcG9yYWxMYXllcnNUeXBlIHR5cGUsCi0gICAg
ICBpbnQgbnVtX3RlbXBvcmFsX2xheWVycyk7Ci0KLSAgdmlydHVhbCB+VGVtcG9yYWxMYXllcnMo
KSA9IGRlZmF1bHQ7Ci0KLSAgLy8gSWYgdGhpcyBtZXRob2QgcmV0dXJucyB0cnVlLCB0aGUgZW5j
b2RlciBpcyBmcmVlIHRvIGRyb3AgZnJhbWVzIGZvcgotICAvLyBpbnN0YW5jZSBpbiBhbiBlZmZv
cnQgdG8gdXBob2xkIGVuY29kaW5nIGJpdHJhdGUuCi0gIC8vIElmIHRoaXMgcmV0dXJuIGZhbHNl
LCB0aGUgZW5jb2RlciBtdXN0IG5vdCBkcm9wIGFueSBmcmFtZXMgdW5sZXNzOgotICAvLyAgMS4g
UmVxdWVzdGVkIHRvIGRvIHNvIHZpYSBGcmFtZUNvbmZpZy5kcm9wX2ZyYW1lCi0gIC8vICAyLiBU
aGUgZnJhbWUgdG8gYmUgZW5jb2RlZCBpcyByZXF1ZXN0ZWQgdG8gYmUgYSBrZXlmcmFtZQotICAv
LyAgMy4gVGhlIGVuY29kZWQgZGV0ZWN0ZWQgYSBsYXJnZSBvdmVyc2hvb3QgYW5kIGRlY2lkZWQg
dG8gZHJvcCBhbmQgdGhlbgotICAvLyAgICAgcmUtZW5jb2RlIHRoZSBpbWFnZSBhdCBhIGxvdyBi
aXRyYXRlLiBJbiB0aGlzIGNhc2UgdGhlIGVuY29kZXIgc2hvdWxkCi0gIC8vICAgICBjYWxsIE9u
RW5jb2RlRG9uZSgpIG9uY2Ugd2l0aCBzaXplID0gMCB0byBpbmRpY2F0ZSBkcm9wLCBhbmQgdGhl
biBjYWxsCi0gIC8vICAgICBPbkVuY29kZURvbmUoKSBhZ2FpbiB3aGVuIHRoZSBmcmFtZSBoYXMg
YWN0dWFsbHkgYmVlbiBlbmNvZGVkLgotICB2aXJ0dWFsIGJvb2wgU3VwcG9ydHNFbmNvZGVyRnJh
bWVEcm9wcGluZygpIGNvbnN0ID0gMDsKLQotICAvLyBOZXcgdGFyZ2V0IGJpdHJhdGUsIHBlciB0
ZW1wb3JhbCBsYXllci4KLSAgdmlydHVhbCB2b2lkIE9uUmF0ZXNVcGRhdGVkKGNvbnN0IHN0ZDo6
dmVjdG9yPHVpbnQzMl90PiYgYml0cmF0ZXNfYnBzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGZyYW1lcmF0ZV9mcHMpID0gMDsKLQotICAvLyBDYWxsZWQgYnkgdGhlIGVuY29k
ZXIgYmVmb3JlIGVuY29kaW5nIGEgZnJhbWUuIHxjZmd8IGNvbnRhaW5zIHRoZSBjdXJyZW50Ci0g
IC8vIGNvbmZpZ3VyYXRpb24uIElmIHRoZSBUZW1wb3JhbExheWVycyBpbnN0YW5jZSB3aXNoZXMg
YW55IHBhcnQgb2YgdGhhdAotICAvLyB0byBiZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZW5jb2RlIHN0
ZXAsIHxjZmd8IHNob3VsZCBiZSBjaGFuZ2VkIGFuZCB0aGVuCi0gIC8vIHJldHVybiB0cnVlLiBJ
ZiBmYWxzZSBpcyByZXR1cm5lZCwgdGhlIGVuY29kZXIgd2lsbCBwcm9jZWVkIHdpdGhvdXQKLSAg
Ly8gdXBkYXRpbmcgdGhlIGNvbmZpZ3VyYXRpb24uCi0gIHZpcnR1YWwgYm9vbCBVcGRhdGVDb25m
aWd1cmF0aW9uKFZwOEVuY29kZXJDb25maWcqIGNmZykgPSAwOwotCi0gIC8vIFJldHVybnMgdGhl
IHJlY29tbWVuZGVkIFZQOCBlbmNvZGUgZmxhZ3MgbmVlZGVkLCBhbmQgbW92ZXMgdGhlIHRlbXBv
cmFsCi0gIC8vIHBhdHRlcm4gdG8gdGhlIG5leHQgZnJhbWUuCi0gIC8vIFRoZSB0aW1lc3RhbXAg
bWF5IGJlIHVzZWQgYXMgYm90aCBhIHRpbWUgYW5kIGEgdW5pcXVlIGlkZW50aWZpZXIsIGFuZCBz
bwotICAvLyB0aGUgY2FsbGVyIG11c3QgbWFrZSBzdXJlIG5vIHR3byBmcmFtZXMgdXNlIHRoZSBz
YW1lIHRpbWVzdGFtcC4KLSAgLy8gVGhlIHRpbWVzdGFtcCB1c2VzIGEgOTBrSHogUlRQIGNsb2Nr
LgotICAvLyBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLCBmaXJzdCBjYWxsIHRoZSBhY3R1YWwg
ZW5jb2RlciB3aXRoIHRoZSBwcm92aWRlZAotICAvLyBmcmFtZSBjb25maWd1cmF0aW9uLCBhbmQg
dGhlbiBPbkVuY29kZURvbmUoKSBiZWxvdy4KLSAgdmlydHVhbCBGcmFtZUNvbmZpZyBVcGRhdGVM
YXllckNvbmZpZyh1aW50MzJfdCBydHBfdGltZXN0YW1wKSA9IDA7Ci0KLSAgLy8gQ2FsbGVkIGFm
dGVyIHRoZSBlbmNvZGUgc3RlcCBpcyBkb25lLiB8cnRwX3RpbWVzdGFtcHwgbXVzdCBtYXRjaCB0
aGUKLSAgLy8gcGFyYW1ldGVyIHVzZSBpbiB0aGUgVXBkYXRlTGF5ZXJDb25maWcoKSBjYWxsLgot
ICAvLyB8aXNfa2V5ZnJhbWV8IG11c3QgYmUgdHJ1ZSBpZmYgdGhlIGVuY29kZXIgZGVjaWRlZCB0
byBlbmNvZGUgdGhpcyBmcmFtZSBhcwotICAvLyBhIGtleWZyYW1lLgotICAvLyBJZiB0aGUgZW5j
b2RlciBkZWNpZGVkIHRvIGRyb3AgdGhpcyBmcmFtZSwgfHNpemVfYnl0ZXN8IG11c3QgYmUgc2V0
IHRvIDAsCi0gIC8vIG90aGVyd2lzZSBpdCBzaG91bGQgaW5kaWNhdGUgdGhlIHNpemUgaW4gYnl0
ZXMgb2YgdGhlIGVuY29kZWQgZnJhbWUuCi0gIC8vIElmIHxzaXplX2J5dGVzfCA+IDAsIGFuZCB8
dnA4X2luZm98IGlzIG5vdCBudWxsLCB0aGUgVGVtcG9yYWxMYXllcnMKLSAgLy8gaW5zdGFuY2Ug
bXkgdXBkYXRlIHx2cDhfaW5mb3wgd2l0aCBjb2RlYyBzcGVjaWZpYyBkYXRhIHN1Y2ggYXMgdGVt
cG9yYWwgaWQuCi0gIC8vIFNvbWUgZmllbGRzIG9mIHRoaXMgc3RydWN0IG1heSBoYXZlIGFscmVh
ZHkgYmVlbiBwb3B1bGF0ZWQgYnkgdGhlIGVuY29kZXIsCi0gIC8vIGNoZWNrIGJlZm9yZSBvdmVy
d3JpdGluZy4KLSAgLy8gSWYgfHNpemVfYnl0ZXN8ID4gMCwgfHFwfCBzaG91bGQgaW5kaWNhdGUg
dGhlIGZyYW1lLWxldmVsIFFQIHRoaXMgZnJhbWUgd2FzCi0gIC8vIGVuY29kZWQgYXQuIElmIHRo
ZSBlbmNvZGVyIGRvZXMgbm90IHN1cHBvcnQgZXh0cmFjdGluZyB0aGlzLCB8cXB8IHNob3VsZCBi
ZQotICAvLyBzZXQgdG8gMC4KLSAgdmlydHVhbCB2b2lkIE9uRW5jb2RlRG9uZSh1aW50MzJfdCBy
dHBfdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplX2J5
dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfa2V5ZnJhbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHFwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENvZGVjU3BlY2lmaWNJbmZvVlA4KiB2cDhfaW5mbykgPSAwOwotfTsKLQotfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE1PRFVMRVNfVklERU9fQ09ESU5HX0NPREVDU19W
UDhfSU5DTFVERV9WUDhfVEVNUE9SQUxfTEFZRVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L2xpYnZweF92cDhfZGVjb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3Zw
OF9kZWNvZGVyLmNjCmluZGV4IDIwNjg0ZDFkMzkxODVlNjJlMTBmYzcxM2UzZDk5NTM1ODg2ODI5
MTMuLjQ4ODM4ZTkzZTdmMzY5YjZjYTBkYzY3MmY1NTQ1ODA5YmNjMjU3ZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmNjCkBAIC0xMiw3ICsxMiw2IEBACiAjaW5jbHVkZSA8
c3RyaW5nPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29t
bW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZGVjb2Rlci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL2V4cF9m
aWx0ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZGVjb2Rlci5oCmluZGV4IDNhNmNmOTI0
MDVjYzdlZGM4YjVhMzA0YTQ1NGQwY2Q2MzIwNWNiNDguLmNmZjllODk5ODg0MWI5YzM4NDg0Njk0
NTVkZmYzNmJiZjg4Zjc4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3Zw
OF9kZWNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIuaApA
QCAtMTMsMTAgKzEzLDEwIEBACiAKICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNpbmNsdWRlICJhcGkv
dmlkZW8vZW5jb2RlZF9pbWFnZS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9f
ZGVjb2Rlci5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2lu
Y2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvaTQyMF9idWZmZXJfcG9vbC5o
IgotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4LmgiCiAjaW5jbHVkZSAibW9k
dWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9lbmNvZGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC9saWJ2cHhfdnA4X2VuY29kZXIuY2MKaW5kZXggNDFkYWQ0MGQ5ZTQwYmYzZjljNmZh
MGVhM2JkNjQ2M2RlOTYwYTE3Yi4uYmU1MjQyYzFiOTE2OGIwNmY5YWRiMWQ2NjA0ZTRhOWMwMTZm
OGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2VuY29kZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2VuY29kZXIuY2MKQEAgLTE0LDYgKzE0
LDggQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnku
aCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJz
LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAj
aW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZW5jb2Rl
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Jh
dGVfYWxsb2NhdG9yLmgiCkBAIC0yNyw3ICsyOSw4IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
bmFtZXNwYWNlIHsKLWNvbnN0IGNoYXIga1ZwOEdmQm9vc3RGaWVsZFRyaWFsW10gPSAiV2ViUlRD
LVZQOC1HZkJvb3N0IjsKK2NvbnN0IGNoYXIga1ZwOFRydXN0ZWRSYXRlQ29udHJvbGxlckZpZWxk
VHJpYWxbXSA9CisgICAgIldlYlJUQy1MaWJ2cHhWcDhUcnVzdGVkUmF0ZUNvbnRyb2xsZXIiOwog
CiAvLyBRUCBpcyBvYnRhaW5lZCBmcm9tIFZQOC1iaXRzdHJlYW0gZm9yIEhXLCBzbyB0aGUgUVAg
Y29ycmVzcG9uZHMgdG8gdGhlCiAvLyBiaXRzdHJlYW0gcmFuZ2Ugb2YgWzAsIDEyN10gYW5kIG5v
dCB0aGUgdXNlci1sZXZlbCByYW5nZSBvZiBbMCw2M10uCkBAIC01OSwyMCArNjIsNiBAQCBzdGF0
aWMgaW50IEdDRChpbnQgYSwgaW50IGIpIHsKICAgcmV0dXJuIGI7CiB9CiAKLWJvb2wgR2V0R2ZC
b29zdFBlcmNlbnRhZ2VGcm9tRmllbGRUcmlhbEdyb3VwKGludCogYm9vc3RfcGVyY2VudGFnZSkg
ewotICBzdGQ6OnN0cmluZyBncm91cCA9IHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFt
ZShrVnA4R2ZCb29zdEZpZWxkVHJpYWwpOwotICBpZiAoZ3JvdXAuZW1wdHkoKSkKLSAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgaWYgKHNzY2FuZihncm91cC5jX3N0cigpLCAiRW5hYmxlZC0lZCIsIGJv
b3N0X3BlcmNlbnRhZ2UpICE9IDEpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmICgqYm9vc3Rf
cGVyY2VudGFnZSA8IDAgfHwgKmJvb3N0X3BlcmNlbnRhZ2UgPiAxMDApCi0gICAgcmV0dXJuIGZh
bHNlOwotCi0gIHJldHVybiB0cnVlOwotfQotCiBzdGF0aWNfYXNzZXJ0KFZwOEVuY29kZXJDb25m
aWc6OmtNYXhQZXJpb2RpY2l0eSA9PSBWUFhfVFNfTUFYX1BFUklPRElDSVRZLAogICAgICAgICAg
ICAgICAiVnA4RW5jb2RlckNvbmZpZzo6a01heFBlcmlvZGljaXR5IG11c3QgYmUga2VwdCBpbiBz
eW5jIHdpdGggdGhlICIKICAgICAgICAgICAgICAgImNvbnN0YW50IGluIGxpYnZweC4iKTsKQEAg
LTExMyw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCBGaWxsSW5FbmNvZGVyQ29uZmlnKHZweF9jb2Rl
Y19lbmNfY2ZnKiB2cHhfY29uZmlnLAogICB2cHhfY29uZmlnLT5yY19tYXhfcXVhbnRpemVyID0g
Y29uZmlnLnJjX21heF9xdWFudGl6ZXI7CiB9CiAKLWJvb2wgVXBkYXRlVnB4Q29uZmlndXJhdGlv
bihUZW1wb3JhbExheWVycyogdGVtcG9yYWxfbGF5ZXJzLAorYm9vbCBVcGRhdGVWcHhDb25maWd1
cmF0aW9uKFZwOFRlbXBvcmFsTGF5ZXJzKiB0ZW1wb3JhbF9sYXllcnMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdnB4X2NvZGVjX2VuY19jZmdfdCogY2ZnKSB7CiAgIFZwOEVuY29kZXJD
b25maWcgY29uZmlnID0gR2V0RW5jb2RlckNvbmZpZyhjZmcpOwogICBjb25zdCBib29sIHJlcyA9
IHRlbXBvcmFsX2xheWVycy0+VXBkYXRlQ29uZmlndXJhdGlvbigmY29uZmlnKTsKQEAgLTEyOSwy
MiArMTE4LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IFZQOEVuY29kZXI6OkNy
ZWF0ZSgpIHsKIH0KIAogdnB4X2VuY19mcmFtZV9mbGFnc190IExpYnZweFZwOEVuY29kZXI6OkVu
Y29kZUZsYWdzKAotICAgIGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgcmVmZXJl
bmNlcykgeworICAgIGNvbnN0IFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgcmVmZXJl
bmNlcykgewogICBSVENfRENIRUNLKCFyZWZlcmVuY2VzLmRyb3BfZnJhbWUpOwogCiAgIHZweF9l
bmNfZnJhbWVfZmxhZ3NfdCBmbGFncyA9IDA7CiAKLSAgaWYgKChyZWZlcmVuY2VzLmxhc3RfYnVm
ZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OmtSZWZlcmVuY2UpID09IDApCisgIGlmICgocmVm
ZXJlbmNlcy5sYXN0X2J1ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjprUmVmZXJlbmNl
KSA9PSAwKQogICAgIGZsYWdzIHw9IFZQOF9FRkxBR19OT19SRUZfTEFTVDsKLSAgaWYgKChyZWZl
cmVuY2VzLmxhc3RfYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpID09IDAp
CisgIGlmICgocmVmZXJlbmNlcy5sYXN0X2J1ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJz
OjprVXBkYXRlKSA9PSAwKQogICAgIGZsYWdzIHw9IFZQOF9FRkxBR19OT19VUERfTEFTVDsKLSAg
aWYgKChyZWZlcmVuY2VzLmdvbGRlbl9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1Jl
ZmVyZW5jZSkgPT0gMCkKKyAgaWYgKChyZWZlcmVuY2VzLmdvbGRlbl9idWZmZXJfZmxhZ3MgJiBW
cDhUZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgPT0gMCkKICAgICBmbGFncyB8PSBWUDhfRUZM
QUdfTk9fUkVGX0dGOwotICBpZiAoKHJlZmVyZW5jZXMuZ29sZGVuX2J1ZmZlcl9mbGFncyAmIFRl
bXBvcmFsTGF5ZXJzOjprVXBkYXRlKSA9PSAwKQorICBpZiAoKHJlZmVyZW5jZXMuZ29sZGVuX2J1
ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjprVXBkYXRlKSA9PSAwKQogICAgIGZsYWdz
IHw9IFZQOF9FRkxBR19OT19VUERfR0Y7Ci0gIGlmICgocmVmZXJlbmNlcy5hcmZfYnVmZmVyX2Zs
YWdzICYgVGVtcG9yYWxMYXllcnM6OmtSZWZlcmVuY2UpID09IDApCisgIGlmICgocmVmZXJlbmNl
cy5hcmZfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OmtSZWZlcmVuY2UpID09IDAp
CiAgICAgZmxhZ3MgfD0gVlA4X0VGTEFHX05PX1JFRl9BUkY7Ci0gIGlmICgocmVmZXJlbmNlcy5h
cmZfYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpID09IDApCisgIGlmICgo
cmVmZXJlbmNlcy5hcmZfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OmtVcGRhdGUp
ID09IDApCiAgICAgZmxhZ3MgfD0gVlA4X0VGTEFHX05PX1VQRF9BUkY7CiAgIGlmIChyZWZlcmVu
Y2VzLmZyZWV6ZV9lbnRyb3B5KQogICAgIGZsYWdzIHw9IFZQOF9FRkxBR19OT19VUERfRU5UUk9Q
WTsKQEAgLTE1Nyw3ICsxNDYsOSBAQCBMaWJ2cHhWcDhFbmNvZGVyOjpMaWJ2cHhWcDhFbmNvZGVy
KCkKIAogTGlidnB4VnA4RW5jb2Rlcjo6TGlidnB4VnA4RW5jb2RlcihzdGQ6OnVuaXF1ZV9wdHI8
TGlidnB4SW50ZXJmYWNlPiBpbnRlcmZhY2UpCiAgICAgOiBsaWJ2cHhfKHN0ZDo6bW92ZShpbnRl
cmZhY2UpKSwKLSAgICAgIHVzZV9nZl9ib29zdF8od2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFi
bGVkKGtWcDhHZkJvb3N0RmllbGRUcmlhbCkpLAorICAgICAgZXhwZXJpbWVudGFsX2NwdV9zcGVl
ZF9jb25maWdfYXJtXyhDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENvbmZpZ3MoKSksCisgICAgICB0
cnVzdGVkX3JhdGVfY29udHJvbGxlcl8oCisgICAgICAgICAgZmllbGRfdHJpYWw6OklzRW5hYmxl
ZChrVnA4VHJ1c3RlZFJhdGVDb250cm9sbGVyRmllbGRUcmlhbCkpLAogICAgICAgZW5jb2RlZF9j
b21wbGV0ZV9jYWxsYmFja18obnVsbHB0ciksCiAgICAgICBpbml0ZWRfKGZhbHNlKSwKICAgICAg
IHRpbWVzdGFtcF8oMCksCkBAIC0xNjcsNyArMTU4LDYgQEAgTGlidnB4VnA4RW5jb2Rlcjo6TGli
dnB4VnA4RW5jb2RlcihzdGQ6OnVuaXF1ZV9wdHI8TGlidnB4SW50ZXJmYWNlPiBpbnRlcmZhY2Up
CiAgICAgICByY19tYXhfaW50cmFfdGFyZ2V0XygwKSwKICAgICAgIGtleV9mcmFtZV9yZXF1ZXN0
XyhrTWF4U2ltdWxjYXN0U3RyZWFtcywgZmFsc2UpIHsKICAgdGVtcG9yYWxfbGF5ZXJzXy5yZXNl
cnZlKGtNYXhTaW11bGNhc3RTdHJlYW1zKTsKLSAgdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXJzXy5y
ZXNlcnZlKGtNYXhTaW11bGNhc3RTdHJlYW1zKTsKICAgcmF3X2ltYWdlc18ucmVzZXJ2ZShrTWF4
U2ltdWxjYXN0U3RyZWFtcyk7CiAgIGVuY29kZWRfaW1hZ2VzXy5yZXNlcnZlKGtNYXhTaW11bGNh
c3RTdHJlYW1zKTsKICAgc2VuZF9zdHJlYW1fLnJlc2VydmUoa01heFNpbXVsY2FzdFN0cmVhbXMp
OwpAQCAtMjA2LDcgKzE5Niw2IEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpSZWxlYXNlKCkgewog
ICAgIHJhd19pbWFnZXNfLnBvcF9iYWNrKCk7CiAgIH0KICAgdGVtcG9yYWxfbGF5ZXJzXy5jbGVh
cigpOwotICB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlcnNfLmNsZWFyKCk7CiAgIGluaXRlZF8gPSBm
YWxzZTsKICAgcmV0dXJuIHJldF92YWw7CiB9CkBAIC0yNzgsMTAgKzI2Nyw2IEBAIGludCBMaWJ2
cHhWcDhFbmNvZGVyOjpTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0
aW9uJiBiaXRyYXRlLAogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQogCi1jb25z
dCBjaGFyKiBMaWJ2cHhWcDhFbmNvZGVyOjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7Ci0g
IHJldHVybiAibGlidnB4IjsKLX0KLQogdm9pZCBMaWJ2cHhWcDhFbmNvZGVyOjpTZXRTdHJlYW1T
dGF0ZShib29sIHNlbmRfc3RyZWFtLCBpbnQgc3RyZWFtX2lkeCkgewogICBpZiAoc2VuZF9zdHJl
YW0gJiYgIXNlbmRfc3RyZWFtX1tzdHJlYW1faWR4XSkgewogICAgIC8vIE5lZWQgYSBrZXkgZnJh
bWUgaWYgd2UgaGF2ZSBub3Qgc2VudCB0aGlzIHN0cmVhbSBiZWZvcmUuCkBAIC0yOTQsMjEgKzI3
OSwxOCBAQCB2b2lkIExpYnZweFZwOEVuY29kZXI6OlNldHVwVGVtcG9yYWxMYXllcnMoY29uc3Qg
VmlkZW9Db2RlYyYgY29kZWMpIHsKICAgUlRDX0RDSEVDSyh0ZW1wb3JhbF9sYXllcnNfLmVtcHR5
KCkpOwogICBpbnQgbnVtX3N0cmVhbXMgPSBTaW11bGNhc3RVdGlsaXR5OjpOdW1iZXJPZlNpbXVs
Y2FzdFN0cmVhbXMoY29kZWMpOwogICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9zdHJlYW1zOyAr
K2kpIHsKLSAgICBUZW1wb3JhbExheWVyc1R5cGUgdHlwZTsKKyAgICBWcDhUZW1wb3JhbExheWVy
c1R5cGUgdHlwZTsKICAgICBpbnQgbnVtX3RlbXBvcmFsX2xheWVycyA9CiAgICAgICAgIFNpbXVs
Y2FzdFV0aWxpdHk6Ok51bWJlck9mVGVtcG9yYWxMYXllcnMoY29kZWMsIGkpOwogICAgIGlmIChT
aW11bGNhc3RVdGlsaXR5OjpJc0NvbmZlcmVuY2VNb2RlU2NyZWVuc2hhcmUoY29kZWMpICYmIGkg
PT0gMCkgewotICAgICAgdHlwZSA9IFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0JpdHJhdGVEeW5hbWlj
OworICAgICAgdHlwZSA9IFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0JpdHJhdGVEeW5hbWljOwog
ICAgICAgLy8gTGVnYWN5IHNjcmVlbnNoYXJlIGxheWVycyBzdXBwb3J0cyBtYXggMiBsYXllcnMu
CiAgICAgICBudW1fdGVtcG9yYWxfbGF5ZXJzID0gc3RkOjptYXg8aW50PigyLCBudW1fdGVtcG9y
YWxfbGF5ZXJzKTsKICAgICB9IGVsc2UgewotICAgICAgdHlwZSA9IFRlbXBvcmFsTGF5ZXJzVHlw
ZTo6a0ZpeGVkUGF0dGVybjsKKyAgICAgIHR5cGUgPSBWcDhUZW1wb3JhbExheWVyc1R5cGU6OmtG
aXhlZFBhdHRlcm47CiAgICAgfQogICAgIHRlbXBvcmFsX2xheWVyc18uZW1wbGFjZV9iYWNrKAot
ICAgICAgICBUZW1wb3JhbExheWVyczo6Q3JlYXRlVGVtcG9yYWxMYXllcnModHlwZSwgbnVtX3Rl
bXBvcmFsX2xheWVycykpOwotICAgIHRlbXBvcmFsX2xheWVyc19jaGVja2Vyc18uZW1wbGFjZV9i
YWNrKAotICAgICAgICBUZW1wb3JhbExheWVyc0NoZWNrZXI6OkNyZWF0ZVRlbXBvcmFsTGF5ZXJz
Q2hlY2tlcigKLSAgICAgICAgICAgIHR5cGUsIG51bV90ZW1wb3JhbF9sYXllcnMpKTsKKyAgICAg
ICAgQ3JlYXRlVnA4VGVtcG9yYWxMYXllcnModHlwZSwgbnVtX3RlbXBvcmFsX2xheWVycykpOwog
ICB9CiB9CiAKQEAgLTQ1MywxMCArNDM1LDEwIEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpJbml0
RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsCiAgIH0KICAgY3B1X3NwZWVkX2RlZmF1bHRf
ID0gY3B1X3NwZWVkX1swXTsKICAgLy8gU2V0IGVuY29kaW5nIGNvbXBsZXhpdHkgKGNwdV9zcGVl
ZCkgYmFzZWQgb24gcmVzb2x1dGlvbiBhbmQvb3IgcGxhdGZvcm0uCi0gIGNwdV9zcGVlZF9bMF0g
PSBTZXRDcHVTcGVlZChpbnN0LT53aWR0aCwgaW5zdC0+aGVpZ2h0KTsKKyAgY3B1X3NwZWVkX1sw
XSA9IEdldENwdVNwZWVkKGluc3QtPndpZHRoLCBpbnN0LT5oZWlnaHQpOwogICBmb3IgKGludCBp
ID0gMTsgaSA8IG51bWJlcl9vZl9zdHJlYW1zOyArK2kpIHsKICAgICBjcHVfc3BlZWRfW2ldID0K
LSAgICAgICAgU2V0Q3B1U3BlZWQoaW5zdC0+c2ltdWxjYXN0U3RyZWFtW251bWJlcl9vZl9zdHJl
YW1zIC0gMSAtIGldLndpZHRoLAorICAgICAgICBHZXRDcHVTcGVlZChpbnN0LT5zaW11bGNhc3RT
dHJlYW1bbnVtYmVyX29mX3N0cmVhbXMgLSAxIC0gaV0ud2lkdGgsCiAgICAgICAgICAgICAgICAg
ICAgIGluc3QtPnNpbXVsY2FzdFN0cmVhbVtudW1iZXJfb2Zfc3RyZWFtcyAtIDEgLSBpXS5oZWln
aHQpOwogICB9CiAgIGNvbmZpZ3VyYXRpb25zX1swXS5nX3cgPSBpbnN0LT53aWR0aDsKQEAgLTUy
OCw3ICs1MTAsNyBAQCBpbnQgTGlidnB4VnA4RW5jb2Rlcjo6SW5pdEVuY29kZShjb25zdCBWaWRl
b0NvZGVjKiBpbnN0LAogICByZXR1cm4gSW5pdEFuZFNldENvbnRyb2xTZXR0aW5ncygpOwogfQog
Ci1pbnQgTGlidnB4VnA4RW5jb2Rlcjo6U2V0Q3B1U3BlZWQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KSB7CitpbnQgTGlidnB4VnA4RW5jb2Rlcjo6R2V0Q3B1U3BlZWQoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KSB7CiAjaWYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk0pIHx8IGRlZmluZWQoV0VCUlRDX0FS
Q0hfQVJNNjQpIHx8IFwKICAgICBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQogICAvLyBPbiBtb2Jp
bGUgcGxhdGZvcm0sIHVzZSBhIGxvd2VyIHNwZWVkIHNldHRpbmcgZm9yIGxvd2VyIHJlc29sdXRp
b25zIGZvcgpAQCAtNTM3LDYgKzUxOSwxMSBAQCBpbnQgTGlidnB4VnA4RW5jb2Rlcjo6U2V0Q3B1
U3BlZWQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CiAgIGlmIChudW1iZXJfb2ZfY29yZXNfIDw9
IDMpCiAgICAgcmV0dXJuIC0xMjsKIAorICBpZiAoZXhwZXJpbWVudGFsX2NwdV9zcGVlZF9jb25m
aWdfYXJtXykgeworICAgIHJldHVybiBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKHdpZHRo
ICogaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleHBl
cmltZW50YWxfY3B1X3NwZWVkX2NvbmZpZ19hcm1fKTsKKyAgfQorCiAgIGlmICh3aWR0aCAqIGhl
aWdodCA8PSAzNTIgKiAyODgpCiAgICAgcmV0dXJuIC04OwogICBlbHNlIGlmICh3aWR0aCAqIGhl
aWdodCA8PSA2NDAgKiA0ODApCkBAIC02NDQsMTQgKzYzMSw2IEBAIGludCBMaWJ2cHhWcDhFbmNv
ZGVyOjpJbml0QW5kU2V0Q29udHJvbFNldHRpbmdzKCkgewogICAgIGxpYnZweF8tPmNvZGVjX2Nv
bnRyb2woCiAgICAgICAgICYoZW5jb2RlcnNfW2ldKSwgVlA4RV9TRVRfU0NSRUVOX0NPTlRFTlRf
TU9ERSwKICAgICAgICAgY29kZWNfLm1vZGUgPT0gVmlkZW9Db2RlY01vZGU6OmtTY3JlZW5zaGFy
aW5nID8gMnUgOiAwdSk7Ci0gICAgLy8gQXBwbHkgYm9vc3Qgb24gZ29sZGVuIGZyYW1lcyAoaGFz
IG9ubHkgZWZmZWN0IHdoZW4gcmVzaWxpZW5jZSBpcyBvZmYpLgotICAgIGlmICh1c2VfZ2ZfYm9v
c3RfICYmIGNvbmZpZ3VyYXRpb25zX1swXS5nX2Vycm9yX3Jlc2lsaWVudCA9PSAwKSB7Ci0gICAg
ICBpbnQgZ2ZfYm9vc3RfcGVyY2VudDsKLSAgICAgIGlmIChHZXRHZkJvb3N0UGVyY2VudGFnZUZy
b21GaWVsZFRyaWFsR3JvdXAoJmdmX2Jvb3N0X3BlcmNlbnQpKSB7Ci0gICAgICAgIGxpYnZweF8t
PmNvZGVjX2NvbnRyb2woJihlbmNvZGVyc19baV0pLCBWUDhFX1NFVF9HRl9DQlJfQk9PU1RfUENU
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmX2Jvb3N0X3BlcmNlbnQpOwotICAg
ICAgfQotICAgIH0KICAgfQogICBpbml0ZWRfID0gdHJ1ZTsKICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19PSzsKQEAgLTc1MCw3ICs3MjksNyBAQCBpbnQgTGlidnB4VnA4RW5jb2Rlcjo6RW5j
b2RlKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLAogICAgIH0KICAgfQogICB2cHhfZW5jX2ZyYW1l
X2ZsYWdzX3QgZmxhZ3Nba01heFNpbXVsY2FzdFN0cmVhbXNdOwotICBUZW1wb3JhbExheWVyczo6
RnJhbWVDb25maWcgdGxfY29uZmlnc1trTWF4U2ltdWxjYXN0U3RyZWFtc107CisgIFZwOFRlbXBv
cmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWdzW2tNYXhTaW11bGNhc3RTdHJlYW1zXTsK
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbmNvZGVyc18uc2l6ZSgpOyArK2kpIHsKICAgICB0
bF9jb25maWdzW2ldID0gdGVtcG9yYWxfbGF5ZXJzX1tpXS0+VXBkYXRlTGF5ZXJDb25maWcoZnJh
bWUudGltZXN0YW1wKCkpOwogICAgIGlmICh0bF9jb25maWdzW2ldLmRyb3BfZnJhbWUpIHsKQEAg
LTgzMSwxMCArODEwLDExIEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpFbmNvZGUoY29uc3QgVmlk
ZW9GcmFtZSYgZnJhbWUsCiAgICAgfQogICAgIGlmIChlcnJvcikKICAgICAgIHJldHVybiBXRUJS
VENfVklERU9fQ09ERUNfRVJST1I7Ci0gICAgdGltZXN0YW1wXyArPSBkdXJhdGlvbjsKICAgICAv
LyBFeGFtaW5lcyBmcmFtZSB0aW1lc3RhbXBzIG9ubHkuCiAgICAgZXJyb3IgPSBHZXRFbmNvZGVk
UGFydGl0aW9ucyhmcmFtZSk7CiAgIH0KKyAgLy8gVE9ETyhzcHJhbmcpOiBTaG91bGRuJ3Qgd2Ug
dXNlIHRoZSBmcmFtZSB0aW1lc3RhbXAgaW5zdGVhZD8KKyAgdGltZXN0YW1wXyArPSBkdXJhdGlv
bjsKICAgcmV0dXJuIGVycm9yOwogfQogCkBAIC04NDUsNyArODI1LDYgQEAgdm9pZCBMaWJ2cHhW
cDhFbmNvZGVyOjpQb3B1bGF0ZUNvZGVjU3BlY2lmaWMoQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVj
X3NwZWNpZmljLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgdGltZXN0YW1wKSB7CiAgIGFzc2VydChjb2RlY19zcGVjaWZpYyAhPSBOVUxMKTsK
ICAgY29kZWNfc3BlY2lmaWMtPmNvZGVjVHlwZSA9IGtWaWRlb0NvZGVjVlA4OwotICBjb2RlY19z
cGVjaWZpYy0+Y29kZWNfbmFtZSA9IEltcGxlbWVudGF0aW9uTmFtZSgpOwogICBDb2RlY1NwZWNp
ZmljSW5mb1ZQOCogdnA4SW5mbyA9ICYoY29kZWNfc3BlY2lmaWMtPmNvZGVjU3BlY2lmaWMuVlA4
KTsKICAgdnA4SW5mby0+a2V5SWR4ID0ga05vS2V5SWR4OyAgLy8gVE9ETyhobHVuZGluKSBwb3B1
bGF0ZSB0aGlzCiAgIHZwOEluZm8tPm5vblJlZmVyZW5jZSA9IChwa3QuZGF0YS5mcmFtZS5mbGFn
cyAmIFZQWF9GUkFNRV9JU19EUk9QUEFCTEUpICE9IDA7CkBAIC04NjMsMTQgKzg0Miw5IEBAIGlu
dCBMaWJ2cHhWcDhFbmNvZGVyOjpHZXRFbmNvZGVkUGFydGl0aW9ucyhjb25zdCBWaWRlb0ZyYW1l
JiBpbnB1dF9pbWFnZSkgewogICBmb3IgKHNpemVfdCBlbmNvZGVyX2lkeCA9IDA7IGVuY29kZXJf
aWR4IDwgZW5jb2RlcnNfLnNpemUoKTsKICAgICAgICArK2VuY29kZXJfaWR4LCAtLXN0cmVhbV9p
ZHgpIHsKICAgICB2cHhfY29kZWNfaXRlcl90IGl0ZXIgPSBOVUxMOwotICAgIGludCBwYXJ0X2lk
eCA9IDA7CiAgICAgZW5jb2RlZF9pbWFnZXNfW2VuY29kZXJfaWR4XS5fbGVuZ3RoID0gMDsKICAg
ICBlbmNvZGVkX2ltYWdlc19bZW5jb2Rlcl9pZHhdLl9mcmFtZVR5cGUgPSBrVmlkZW9GcmFtZURl
bHRhOwotICAgIFJUUEZyYWdtZW50YXRpb25IZWFkZXIgZnJhZ19pbmZvOwotICAgIC8vIGtUb2tl
blBhcnRpdGlvbnMgaXMgbnVtYmVyIG9mIGJpdHMgdXNlZC4KLSAgICBmcmFnX2luZm8uVmVyaWZ5
QW5kQWxsb2NhdGVGcmFnbWVudGF0aW9uSGVhZGVyKCgxIDw8IGtUb2tlblBhcnRpdGlvbnMpICsg
MSk7CiAgICAgQ29kZWNTcGVjaWZpY0luZm8gY29kZWNfc3BlY2lmaWM7Ci0gICAgYm9vbCBpc19r
ZXlmcmFtZSA9IGZhbHNlOwogICAgIGNvbnN0IHZweF9jb2RlY19jeF9wa3RfdCogcGt0ID0gTlVM
TDsKICAgICB3aGlsZSAoKHBrdCA9IGxpYnZweF8tPmNvZGVjX2dldF9jeF9kYXRhKCZlbmNvZGVy
c19bZW5jb2Rlcl9pZHhdLCAmaXRlcikpICE9CiAgICAgICAgICAgIE5VTEwpIHsKQEAgLTg4Nywx
MyArODYxLDggQEAgaW50IExpYnZweFZwOEVuY29kZXI6OkdldEVuY29kZWRQYXJ0aXRpb25zKGNv
bnN0IFZpZGVvRnJhbWUmIGlucHV0X2ltYWdlKSB7CiAgICAgICAgICAgfQogICAgICAgICAgIG1l
bWNweSgmZW5jb2RlZF9pbWFnZXNfW2VuY29kZXJfaWR4XS5fYnVmZmVyW2xlbmd0aF0sCiAgICAg
ICAgICAgICAgICAgIHBrdC0+ZGF0YS5mcmFtZS5idWYsIHBrdC0+ZGF0YS5mcmFtZS5zeik7Ci0g
ICAgICAgICAgZnJhZ19pbmZvLmZyYWdtZW50YXRpb25PZmZzZXRbcGFydF9pZHhdID0gbGVuZ3Ro
OwotICAgICAgICAgIGZyYWdfaW5mby5mcmFnbWVudGF0aW9uTGVuZ3RoW3BhcnRfaWR4XSA9IHBr
dC0+ZGF0YS5mcmFtZS5zejsKLSAgICAgICAgICBmcmFnX2luZm8uZnJhZ21lbnRhdGlvblBsVHlw
ZVtwYXJ0X2lkeF0gPSAwOyAgLy8gbm90IGtub3duIGhlcmUKLSAgICAgICAgICBmcmFnX2luZm8u
ZnJhZ21lbnRhdGlvblRpbWVEaWZmW3BhcnRfaWR4XSA9IDA7CiAgICAgICAgICAgZW5jb2RlZF9p
bWFnZXNfW2VuY29kZXJfaWR4XS5fbGVuZ3RoICs9IHBrdC0+ZGF0YS5mcmFtZS5zejsKICAgICAg
ICAgICBhc3NlcnQobGVuZ3RoIDw9IGVuY29kZWRfaW1hZ2VzX1tlbmNvZGVyX2lkeF0uX3NpemUp
OwotICAgICAgICAgICsrcGFydF9pZHg7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgZGVmYXVsdDoKQEAgLTkwNCw3ICs4NzMsNiBAQCBpbnQgTGlidnB4VnA4RW5jb2Rlcjo6
R2V0RW5jb2RlZFBhcnRpdGlvbnMoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRfaW1hZ2UpIHsKICAg
ICAgICAgLy8gY2hlY2sgaWYgZW5jb2RlZCBmcmFtZSBpcyBhIGtleSBmcmFtZQogICAgICAgICBp
ZiAocGt0LT5kYXRhLmZyYW1lLmZsYWdzICYgVlBYX0ZSQU1FX0lTX0tFWSkgewogICAgICAgICAg
IGVuY29kZWRfaW1hZ2VzX1tlbmNvZGVyX2lkeF0uX2ZyYW1lVHlwZSA9IGtWaWRlb0ZyYW1lS2V5
OwotICAgICAgICAgIGlzX2tleWZyYW1lID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBlbmNv
ZGVkX2ltYWdlc19bZW5jb2Rlcl9pZHhdLlNldFNwYXRpYWxJbmRleChzdHJlYW1faWR4KTsKICAg
ICAgICAgUG9wdWxhdGVDb2RlY1NwZWNpZmljKCZjb2RlY19zcGVjaWZpYywgKnBrdCwgc3RyZWFt
X2lkeCwgZW5jb2Rlcl9pZHgsCkBAIC05MzUsNyArOTAzLDcgQEAgaW50IExpYnZweFZwOEVuY29k
ZXI6OkdldEVuY29kZWRQYXJ0aXRpb25zKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2ltYWdlKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnFwXzEyOCk7CiAgICAgICAgIGVuY29k
ZWRfaW1hZ2VzX1tlbmNvZGVyX2lkeF0ucXBfID0gcXBfMTI4OwogICAgICAgICBlbmNvZGVkX2Nv
bXBsZXRlX2NhbGxiYWNrXy0+T25FbmNvZGVkSW1hZ2UoZW5jb2RlZF9pbWFnZXNfW2VuY29kZXJf
aWR4XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZjb2RlY19zcGVjaWZpYywgJmZyYWdfaW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmY29kZWNfc3BlY2lmaWMsIG51bGxwdHIpOwogICAg
ICAgfSBlbHNlIGlmICghdGVtcG9yYWxfbGF5ZXJzX1tzdHJlYW1faWR4XQogICAgICAgICAgICAg
ICAgICAgICAgIC0+U3VwcG9ydHNFbmNvZGVyRnJhbWVEcm9wcGluZygpKSB7CiAgICAgICAgIHJl
c3VsdCA9IFdFQlJUQ19WSURFT19DT0RFQ19UQVJHRVRfQklUUkFURV9PVkVSU0hPT1Q7CkBAIC05
NTAsMTcgKzkxOCwyMSBAQCBpbnQgTGlidnB4VnA4RW5jb2Rlcjo6R2V0RW5jb2RlZFBhcnRpdGlv
bnMoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRfaW1hZ2UpIHsKICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgTGlidnB4VnA4RW5jb2Rlcjo6R2V0U2Nh
bGluZ1NldHRpbmdzKCkgY29uc3QgeworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBMaWJ2cHhW
cDhFbmNvZGVyOjpHZXRFbmNvZGVySW5mbygpIGNvbnN0IHsKKyAgRW5jb2RlckluZm8gaW5mbzsK
KyAgaW5mby5zdXBwb3J0c19uYXRpdmVfaGFuZGxlID0gZmFsc2U7CisgIGluZm8uaW1wbGVtZW50
YXRpb25fbmFtZSA9ICJsaWJ2cHgiOworICBpbmZvLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxl
ciA9IHRydXN0ZWRfcmF0ZV9jb250cm9sbGVyXzsKKwogICBjb25zdCBib29sIGVuYWJsZV9zY2Fs
aW5nID0gZW5jb2RlcnNfLnNpemUoKSA9PSAxICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25maWd1cmF0aW9uc19bMF0ucmNfZHJvcGZyYW1lX3RocmVzaCA+IDAgJiYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjXy5WUDgoKS5hdXRvbWF0aWNSZXNpemVPbjsK
LSAgcmV0dXJuIGVuYWJsZV9zY2FsaW5nID8gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3Mo
a0xvd1ZwOFFwVGhyZXNob2xkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrSGlnaFZwOFFwVGhyZXNob2xkKQotICAgICAgICAgICAgICAg
ICAgICAgICAgOiBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5nczo6a09mZjsKLX0KKyAgaW5m
by5zY2FsaW5nX3NldHRpbmdzID0gZW5hYmxlX3NjYWxpbmcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID8gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrTG93VnA4UXBUaHJlc2hvbGQsIGtIaWdoVnA4UXBUaHJl
c2hvbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFZpZGVvRW5jb2Rlcjo6U2Nh
bGluZ1NldHRpbmdzOjprT2ZmOwogCi1pbnQgTGlidnB4VnA4RW5jb2Rlcjo6U2V0Q2hhbm5lbFBh
cmFtZXRlcnModWludDMyX3QgcGFja2V0TG9zcywgaW50NjRfdCBydHQpIHsKLSAgcmV0dXJuIFdF
QlJUQ19WSURFT19DT0RFQ19PSzsKKyAgcmV0dXJuIGluZm87CiB9CiAKIGludCBMaWJ2cHhWcDhF
bmNvZGVyOjpSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZW5jb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2
cHhfdnA4X2VuY29kZXIuaAppbmRleCAzYzIwNjcyZGYyY2Q0ZTYwNDFhMGZiNTM4OWE4NDI1ZTQy
NWI2YTMxLi5kZjJkYmNlZTU5ZTY2M2FjMjdkM2E3YjExZTJkMTFhZDRmNDk5ZTkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZW5jb2Rlci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy92cDgvbGlidnB4X3ZwOF9lbmNvZGVyLmgKQEAgLTE0LDE1ICsxNCwxNSBAQAogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vZW5j
b2RlZF9pbWFnZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgogI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgorI2luY2x1ZGUgImFwaS92aWRl
b19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1
ZGUvdmlkZW9fZnJhbWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4LmgiCi0jaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF9pbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVj
X2ludGVyZmFjZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9l
eHBlcmltZW50LmgiCiAKICNpbmNsdWRlICJ2cHgvdnA4Y3guaCIKICNpbmNsdWRlICJ2cHgvdnB4
X2VuY29kZXIuaCIKQEAgLTQ3LDIzICs0NywxOSBAQCBjbGFzcyBMaWJ2cHhWcDhFbmNvZGVyIDog
cHVibGljIFZpZGVvRW5jb2RlciB7CiAKICAgaW50IFJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxs
YmFjayhFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwogCi0gIGludCBT
ZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpIG92
ZXJyaWRlOwotCiAgIGludCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxv
Y2F0aW9uJiBiaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbmV3X2Zy
YW1lcmF0ZSkgb3ZlcnJpZGU7CiAKLSAgU2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5n
cygpIGNvbnN0IG92ZXJyaWRlOwotCi0gIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgp
IGNvbnN0IG92ZXJyaWRlOworICBFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0IG92
ZXJyaWRlOwogCiAgIHN0YXRpYyB2cHhfZW5jX2ZyYW1lX2ZsYWdzX3QgRW5jb2RlRmxhZ3MoCi0g
ICAgICBjb25zdCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcmIHJlZmVyZW5jZXMpOworICAg
ICAgY29uc3QgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiByZWZlcmVuY2VzKTsKIAog
IHByaXZhdGU6CiAgIHZvaWQgU2V0dXBUZW1wb3JhbExheWVycyhjb25zdCBWaWRlb0NvZGVjJiBj
b2RlYyk7CiAKLSAgLy8gU2V0IHRoZSBjcHVfc3BlZWQgc2V0dGluZyBmb3IgZW5jb2RlciBiYXNl
ZCBvbiByZXNvbHV0aW9uIGFuZC9vciBwbGF0Zm9ybS4KLSAgaW50IFNldENwdVNwZWVkKGludCB3
aWR0aCwgaW50IGhlaWdodCk7CisgIC8vIEdldCB0aGUgY3B1X3NwZWVkIHNldHRpbmcgZm9yIGVu
Y29kZXIgYmFzZWQgb24gcmVzb2x1dGlvbiBhbmQvb3IgcGxhdGZvcm0uCisgIGludCBHZXRDcHVT
cGVlZChpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogCiAgIC8vIERldGVybWluZSBudW1iZXIgb2Yg
ZW5jb2RlciB0aHJlYWRzIHRvIHVzZS4KICAgaW50IE51bWJlck9mVGhyZWFkcyhpbnQgd2lkdGgs
IGludCBoZWlnaHQsIGludCBudW1iZXJfb2ZfY29yZXMpOwpAQCAtODcsNyArODMsMTAgQEAgY2xh
c3MgTGlidnB4VnA4RW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICB1aW50MzJfdCBG
cmFtZURyb3BUaHJlc2hvbGQoc2l6ZV90IHNwYXRpYWxfaWR4KSBjb25zdDsKIAogICBjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8TGlidnB4SW50ZXJmYWNlPiBsaWJ2cHhfOwotICBjb25zdCBib29sIHVz
ZV9nZl9ib29zdF87CisKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8c3RkOjp2ZWN0b3I8Q3B1U3Bl
ZWRFeHBlcmltZW50OjpDb25maWc+PgorICAgICAgZXhwZXJpbWVudGFsX2NwdV9zcGVlZF9jb25m
aWdfYXJtXzsKKyAgY29uc3QgYm9vbCB0cnVzdGVkX3JhdGVfY29udHJvbGxlcl87CiAKICAgRW5j
b2RlZEltYWdlQ2FsbGJhY2sqIGVuY29kZWRfY29tcGxldGVfY2FsbGJhY2tfOwogICBWaWRlb0Nv
ZGVjIGNvZGVjXzsKQEAgLTk3LDggKzk2LDcgQEAgY2xhc3MgTGlidnB4VnA4RW5jb2RlciA6IHB1
YmxpYyBWaWRlb0VuY29kZXIgewogICBpbnQgY3B1X3NwZWVkX2RlZmF1bHRfOwogICBpbnQgbnVt
YmVyX29mX2NvcmVzXzsKICAgdWludDMyX3QgcmNfbWF4X2ludHJhX3RhcmdldF87Ci0gIHN0ZDo6
dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUZW1wb3JhbExheWVycz4+IHRlbXBvcmFsX2xheWVyc187
Ci0gIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUZW1wb3JhbExheWVyc0NoZWNrZXI+PiB0
ZW1wb3JhbF9sYXllcnNfY2hlY2tlcnNfOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
VnA4VGVtcG9yYWxMYXllcnM+PiB0ZW1wb3JhbF9sYXllcnNfOwogICBzdGQ6OnZlY3Rvcjxib29s
PiBrZXlfZnJhbWVfcmVxdWVzdF87CiAgIHN0ZDo6dmVjdG9yPGJvb2w+IHNlbmRfc3RyZWFtXzsK
ICAgc3RkOjp2ZWN0b3I8aW50PiBjcHVfc3BlZWRfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3ZwOC9saWJ2cHhfdnA4X3NpbXVsY2FzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2
cHhfdnA4X3NpbXVsY2FzdF90ZXN0LmNjCmluZGV4IDVmOTc0ZDY0M2JiMGVlMzJjZDZmNzZkYmUw
MGFlM2IxOWYxNTVkMWUuLmQ0OTNlMmFjZWI2NDg3NzFmYTk1ZWQ1ZTIzY2MyMDhlMzBhYjJjMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9zaW11bGNhc3RfdGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfc2ltdWxjYXN0X3Rlc3QuY2MKQEAg
LTEzLDkgKzEzLDkgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRl
ICJhcGkvdGVzdC9jcmVhdGVfc2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oIgogI2luY2x1ZGUgImFw
aS90ZXN0L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRl
by9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92
aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4LmgiCi0jaW5jbHVkZSAidGVzdC9m
dW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9u
X3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3NjcmVlbnNoYXJl
X2xheWVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmNjCmluZGV4
IDc2YzQzODJhMjFmOGRmZWVjZTdlZTI2Y2MwZmY3OGQzMWUyZmVkNDYuLmVkZTIxZTU1NGQ3MjY0
OGE5OTAwNWU4YTc3ZDljYmRhOWY2YTcyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgv
c2NyZWVuc2hhcmVfbGF5ZXJzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVf
bGF5ZXJzLmNjCkBAIC01Myw3ICs1Myw3IEBAIFNjcmVlbnNoYXJlTGF5ZXJzOjpTY3JlZW5zaGFy
ZUxheWVycyhpbnQgbnVtX3RlbXBvcmFsX2xheWVycywgQ2xvY2sqIGNsb2NrKQogICAgICAgZW5j
b2RlX2ZyYW1lcmF0ZV8oMTAwMC4wZiwgMTAwMC4wZiksICAvLyAxIHNlY29uZCB3aW5kb3csIHNl
Y29uZCBzY2FsZS4KICAgICAgIGJpdHJhdGVfdXBkYXRlZF8oZmFsc2UpLAogICAgICAgY2hlY2tl
cl8oVGVtcG9yYWxMYXllcnNDaGVja2VyOjpDcmVhdGVUZW1wb3JhbExheWVyc0NoZWNrZXIoCi0g
ICAgICAgICAgVGVtcG9yYWxMYXllcnNUeXBlOjprQml0cmF0ZUR5bmFtaWMsCisgICAgICAgICAg
VnA4VGVtcG9yYWxMYXllcnNUeXBlOjprQml0cmF0ZUR5bmFtaWMsCiAgICAgICAgICAgbnVtX3Rl
bXBvcmFsX2xheWVycykpIHsKICAgUlRDX0NIRUNLX0dUKG51bWJlcl9vZl90ZW1wb3JhbF9sYXll
cnNfLCAwKTsKICAgUlRDX0NIRUNLX0xFKG51bWJlcl9vZl90ZW1wb3JhbF9sYXllcnNfLCBrTWF4
TnVtVGVtcG9yYWxMYXllcnMpOwpAQCAtNjgsNyArNjgsNyBAQCBib29sIFNjcmVlbnNoYXJlTGF5
ZXJzOjpTdXBwb3J0c0VuY29kZXJGcmFtZURyb3BwaW5nKCkgY29uc3QgewogICByZXR1cm4gZmFs
c2U7CiB9CiAKLVRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyBTY3JlZW5zaGFyZUxheWVyczo6
VXBkYXRlTGF5ZXJDb25maWcoCitWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgU2NyZWVu
c2hhcmVMYXllcnM6OlVwZGF0ZUxheWVyQ29uZmlnKAogICAgIHVpbnQzMl90IHRpbWVzdGFtcCkg
ewogICBhdXRvIGl0ID0gcGVuZGluZ19mcmFtZV9jb25maWdzXy5maW5kKHRpbWVzdGFtcCk7CiAg
IGlmIChpdCAhPSBwZW5kaW5nX2ZyYW1lX2NvbmZpZ3NfLmVuZCgpKSB7CkBAIC03OSw3ICs3OSw3
IEBAIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyBTY3JlZW5zaGFyZUxheWVyczo6VXBkYXRl
TGF5ZXJDb25maWcoCiAgIGlmIChudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzXyA8PSAxKSB7CiAg
ICAgLy8gTm8gZmxhZ3MgbmVlZGVkIGZvciAxIGxheWVyIHNjcmVlbnNoYXJlLgogICAgIC8vIFRP
RE8ocGJvcyk6IENvbnNpZGVyIHVwZGF0aW5nIG9ubHkgbGFzdCwgYW5kIG5vdCBhbGwgYnVmZmVy
cy4KLSAgICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnKAorICAgIFZwOFRl
bXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcoCiAgICAgICAgIGtSZWZlcmVuY2VB
bmRVcGRhdGUsIGtSZWZlcmVuY2VBbmRVcGRhdGUsIGtSZWZlcmVuY2VBbmRVcGRhdGUpOwogICAg
IHBlbmRpbmdfZnJhbWVfY29uZmlnc19bdGltZXN0YW1wXSA9IHRsX2NvbmZpZzsKICAgICByZXR1
cm4gdGxfY29uZmlnOwpAQCAtMTAwLDcgKzEwMCw3IEBAIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNv
bmZpZyBTY3JlZW5zaGFyZUxheWVyczo6VXBkYXRlTGF5ZXJDb25maWcoCiAgICAgLy8gYXZlcmFn
aW5nIHdpbmRvdywgb3IgaWYgZnJhbWUgaW50ZXJ2YWwgaXMgYmVsb3cgOTAlIG9mIGRlc2lyZWQg
dmFsdWUsCiAgICAgLy8gZHJvcCBmcmFtZS4KICAgICBpZiAoZW5jb2RlX2ZyYW1lcmF0ZV8uUmF0
ZShub3dfbXMpLnZhbHVlX29yKDApID4gKnRhcmdldF9mcmFtZXJhdGVfKQotICAgICAgcmV0dXJu
IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrTm9uZSwga05vbmUsIGtOb25lKTsKKyAgICAg
IHJldHVybiBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa05vbmUsIGtOb25lLCBrTm9u
ZSk7CiAKICAgICAvLyBQcmltYXJpbHkgY2hlY2sgaWYgZnJhbWUgaW50ZXJ2YWwgaXMgdG9vIHNo
b3J0IHVzaW5nIGZyYW1lIHRpbWVzdGFtcHMsCiAgICAgLy8gYXMgaWYgdGhleSBhcmUgY29ycmVj
dCB0aGV5IHdvbid0IGJlIGFmZmVjdGVkIGJ5IHF1ZXVpbmcgaW4gd2VicnRjLgpAQCAtMTA4LDcg
KzEwOCw3IEBAIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyBTY3JlZW5zaGFyZUxheWVyczo6
VXBkYXRlTGF5ZXJDb25maWcoCiAgICAgICAgIGtPbmVTZWNvbmQ5MEtoeiAvICp0YXJnZXRfZnJh
bWVyYXRlXzsKICAgICBpZiAobGFzdF90aW1lc3RhbXBfICE9IC0xICYmIHRzX2RpZmYgPiAwKSB7
CiAgICAgICBpZiAodHNfZGlmZiA8IDg1ICogZXhwZWN0ZWRfZnJhbWVfaW50ZXJ2YWxfOTBraHog
LyAxMDApIHsKLSAgICAgICAgcmV0dXJuIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrTm9u
ZSwga05vbmUsIGtOb25lKTsKKyAgICAgICAgcmV0dXJuIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFt
ZUNvbmZpZyhrTm9uZSwga05vbmUsIGtOb25lKTsKICAgICAgIH0KICAgICB9IGVsc2UgewogICAg
ICAgLy8gVGltZXN0YW1wcyBsb29rcyBvZmYsIHVzZSByZWFsdGltZSBjbG9jayBoZXJlIGluc3Rl
YWQuCkBAIC0xMTYsNyArMTE2LDcgQEAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFNjcmVl
bnNoYXJlTGF5ZXJzOjpVcGRhdGVMYXllckNvbmZpZygKICAgICAgIGlmIChsYXN0X2ZyYW1lX3Rp
bWVfbXNfICE9IC0xICYmCiAgICAgICAgICAgbm93X21zIC0gbGFzdF9mcmFtZV90aW1lX21zXyA8
CiAgICAgICAgICAgICAgICg4NSAqIGV4cGVjdGVkX2ZyYW1lX2ludGVydmFsX21zKSAvIDEwMCkg
ewotICAgICAgICByZXR1cm4gVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnKGtOb25lLCBrTm9u
ZSwga05vbmUpOworICAgICAgICByZXR1cm4gVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmln
KGtOb25lLCBrTm9uZSwga05vbmUpOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMTgyLDMwICsx
ODIsMzAgQEAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFNjcmVlbnNoYXJlTGF5ZXJzOjpV
cGRhdGVMYXllckNvbmZpZygKICAgICAgIFJUQ19OT1RSRUFDSEVEKCk7CiAgIH0KIAotICBUZW1w
b3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnOworICBWcDhUZW1wb3JhbExheWVyczo6
RnJhbWVDb25maWcgdGxfY29uZmlnOwogICAvLyBUT0RPKHBib3MpOiBDb25zaWRlciByZWZlcmVu
Y2luZyBidXQgbm90IHVwZGF0aW5nIHRoZSAnYWx0JyBidWZmZXIgZm9yIGFsbAogICAvLyBsYXll
cnMuCiAgIHN3aXRjaCAobGF5ZXJfc3RhdGUpIHsKICAgICBjYXNlIFRlbXBvcmFsTGF5ZXJTdGF0
ZTo6a0Ryb3A6Ci0gICAgICB0bF9jb25maWcgPSBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWco
a05vbmUsIGtOb25lLCBrTm9uZSk7CisgICAgICB0bF9jb25maWcgPSBWcDhUZW1wb3JhbExheWVy
czo6RnJhbWVDb25maWcoa05vbmUsIGtOb25lLCBrTm9uZSk7CiAgICAgICBicmVhazsKICAgICBj
YXNlIFRlbXBvcmFsTGF5ZXJTdGF0ZTo6a1RsMDoKICAgICAgIC8vIFRMMCBvbmx5IHJlZmVyZW5j
ZXMgYW5kIHVwZGF0ZXMgJ2xhc3QnLgogICAgICAgdGxfY29uZmlnID0KLSAgICAgICAgICBUZW1w
b3JhbExheWVyczo6RnJhbWVDb25maWcoa1JlZmVyZW5jZUFuZFVwZGF0ZSwga05vbmUsIGtOb25l
KTsKKyAgICAgICAgICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa1JlZmVyZW5jZUFu
ZFVwZGF0ZSwga05vbmUsIGtOb25lKTsKICAgICAgIHRsX2NvbmZpZy5wYWNrZXRpemVyX3RlbXBv
cmFsX2lkeCA9IDA7CiAgICAgICBicmVhazsKICAgICBjYXNlIFRlbXBvcmFsTGF5ZXJTdGF0ZTo6
a1RsMToKICAgICAgIC8vIFRMMSByZWZlcmVuY2VzIGJvdGggJ2xhc3QnIGFuZCAnZ29sZGVuJyBi
dXQgb25seSB1cGRhdGVzICdnb2xkZW4nLgotICAgICAgdGxfY29uZmlnID0KLSAgICAgICAgICBU
ZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa1JlZmVyZW5jZSwga1JlZmVyZW5jZUFuZFVwZGF0
ZSwga05vbmUpOworICAgICAgdGxfY29uZmlnID0gVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29u
ZmlnKGtSZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga1JlZmVyZW5jZUFuZFVwZGF0ZSwga05vbmUpOwogICAgICAgdGxfY29uZmlnLnBh
Y2tldGl6ZXJfdGVtcG9yYWxfaWR4ID0gMTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGVtcG9y
YWxMYXllclN0YXRlOjprVGwxU3luYzoKICAgICAgIC8vIFByZWRpY3QgZnJvbSBvbmx5IFRMMCB0
byBhbGxvdyBwYXJ0aWNpcGFudHMgdG8gc3dpdGNoIHRvIHRoZSBoaWdoCiAgICAgICAvLyBiaXRy
YXRlIHN0cmVhbS4gVXBkYXRlcyAnZ29sZGVuJyBzbyB0aGF0IFRMMSBjYW4gY29udGludWUgdG8g
cmVmZXIgdG8KICAgICAgIC8vIGFuZCB1cGRhdGUgJ2dvbGRlbicgZnJvbSB0aGlzIHBvaW50IG9u
LgotICAgICAgdGxfY29uZmlnID0gVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnKGtSZWZlcmVu
Y2UsIGtVcGRhdGUsIGtOb25lKTsKKyAgICAgIHRsX2NvbmZpZyA9IFZwOFRlbXBvcmFsTGF5ZXJz
OjpGcmFtZUNvbmZpZyhrUmVmZXJlbmNlLCBrVXBkYXRlLCBrTm9uZSk7CiAgICAgICB0bF9jb25m
aWcucGFja2V0aXplcl90ZW1wb3JhbF9pZHggPSAxOwogICAgICAgYnJlYWs7CiAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L3NjcmVlbnNoYXJlX2xheWVycy5oCmluZGV4IDYxOTNiZTM2MDAxMGRmNjZiN2I0ZjI4
MWYyYTRjNmI0OTA4YWEyMzguLjAzNTliMmMzM2ZjNTkwY2MwZmNjMWNlY2E0NDI1ZTU1NzZiNTdk
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuaApAQCAtMTMsOCArMTMsOCBA
QAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkv
dmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3Rl
bXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkv
ZnJhbWVfZHJvcHBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhdGVfc3RhdGlzdGljcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgpAQCAtMjQsNyArMjQsNyBAQCBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIHN0cnVjdCBDb2RlY1NwZWNpZmljSW5mb1ZQODsKIGNsYXNzIENsb2NrOwog
Ci1jbGFzcyBTY3JlZW5zaGFyZUxheWVycyA6IHB1YmxpYyBUZW1wb3JhbExheWVycyB7CitjbGFz
cyBTY3JlZW5zaGFyZUxheWVycyA6IHB1YmxpYyBWcDhUZW1wb3JhbExheWVycyB7CiAgcHVibGlj
OgogICBzdGF0aWMgY29uc3QgZG91YmxlIGtNYXhUTDBGcHNSZWR1Y3Rpb247CiAgIHN0YXRpYyBj
b25zdCBkb3VibGUga0FjY2VwdGFibGVUYXJnZXRPdmVyc2hvb3Q7CkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIFNjcmVlbnNoYXJlTGF5ZXJzIDogcHVibGljIFRlbXBvcmFsTGF5ZXJzIHsKIAogICAv
LyBSZXR1cm5zIHRoZSByZWNvbW1lbmRlZCBWUDggZW5jb2RlIGZsYWdzIG5lZWRlZC4gTWF5IHJl
ZnJlc2ggdGhlIGRlY29kZXIKICAgLy8gYW5kL29yIHVwZGF0ZSB0aGUgcmVmZXJlbmNlIGJ1ZmZl
cnMuCi0gIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyBVcGRhdGVMYXllckNvbmZpZygKKyAg
VnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFVwZGF0ZUxheWVyQ29uZmlnKAogICAgICAg
dWludDMyX3QgcnRwX3RpbWVzdGFtcCkgb3ZlcnJpZGU7CiAKICAgLy8gTmV3IHRhcmdldCBiaXRy
YXRlLCBwZXIgdGVtcG9yYWwgbGF5ZXIuCkBAIC03NCw3ICs3NCw3IEBAIGNsYXNzIFNjcmVlbnNo
YXJlTGF5ZXJzIDogcHVibGljIFRlbXBvcmFsTGF5ZXJzIHsKICAgaW50IG1heF9xcF87CiAgIHVp
bnQzMl90IG1heF9kZWJ0X2J5dGVzXzsKIAotICBzdGQ6Om1hcDx1aW50MzJfdCwgVGVtcG9yYWxM
YXllcnM6OkZyYW1lQ29uZmlnPiBwZW5kaW5nX2ZyYW1lX2NvbmZpZ3NfOworICBzdGQ6Om1hcDx1
aW50MzJfdCwgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnPiBwZW5kaW5nX2ZyYW1lX2Nv
bmZpZ3NfOwogCiAgIC8vIENvbmZpZ3VyZWQgbWF4IGZyYW1lcmF0ZS4KICAgYWJzbDo6b3B0aW9u
YWw8dWludDMyX3Q+IHRhcmdldF9mcmFtZXJhdGVfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3ZwOC9zY3JlZW5zaGFyZV9sYXllcnNfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3Nj
cmVlbnNoYXJlX2xheWVyc191bml0dGVzdC5jYwppbmRleCA0YWU3ZWQ1ZTdlNDI1YjZhZTVjNzA4
ZGI0MDRkYmNjMGM1M2Y0Y2Y0Li40NzRlNGY4MjViNTk3ZWUxMGU0ZDk2NDQxNWZhN2JjNWY2Nzlj
OWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVyc191bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVyc191bml0dGVz
dC5jYwpAQCAtODcsNyArODcsNyBAQCBjbGFzcyBTY3JlZW5zaGFyZUxheWVyVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIHJldHVybiBmbGFnczsKICAgfQogCi0gIFRlbXBvcmFs
TGF5ZXJzOjpGcmFtZUNvbmZpZyBVcGRhdGVMYXllckNvbmZpZyh1aW50MzJfdCB0aW1lc3RhbXAp
IHsKKyAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFVwZGF0ZUxheWVyQ29uZmlnKHVp
bnQzMl90IHRpbWVzdGFtcCkgewogICAgIGludDY0X3QgdGltZXN0YW1wX21zID0gdGltZXN0YW1w
IC8gOTA7CiAgICAgY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKHRpbWVzdGFtcF9tcyAt
IGNsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgICAgcmV0dXJuIGxheWVyc18tPlVwZGF0
ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgY2xhc3MgU2NyZWVu
c2hhcmVMYXllclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgc3RkOjp1bmlxdWVf
cHRyPFNjcmVlbnNoYXJlTGF5ZXJzPiBsYXllcnNfOwogCiAgIHVpbnQzMl90IHRpbWVzdGFtcF87
Ci0gIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWdfOworICBWcDhUZW1wb3Jh
bExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnXzsKICAgVnA4RW5jb2RlckNvbmZpZyBjZmdf
OwogICBib29sIGNvbmZpZ191cGRhdGVkXzsKICAgQ29kZWNTcGVjaWZpY0luZm9WUDggdnA4X2lu
Zm9fOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzLmgKaW5kZXggNzg4ZDY5YTI3YmIzMTc0ZTYy
MmFmMDQ1MDgwOWNlMzg1MWM3NTg4MC4uOTU3NmZiMjdiZWFhNjMxN2MxMTk0NWUxM2RhMDhiNDM3
MDcwNzhlMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdnA4L3RlbXBvcmFsX2xheWVycy5oCkBAIC0xMiw2ICsxMiw2IEBA
CiAjZGVmaW5lIE1PRFVMRVNfVklERU9fQ09ESU5HX0NPREVDU19WUDhfVEVNUE9SQUxfTEFZRVJT
X0hfCiAKIC8vIFRPRE8od2VicnRjOjkwMTIpIFJlbW92ZSB0aGlzIGZpbGUgd2hlbiBkb3duc3Ry
ZWFtIHByb2plY3RzIGhhdmUgdXBkYXRlZC4KLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogCiAjZW5kaWYgIC8vIE1PRFVM
RVNfVklERU9fQ09ESU5HX0NPREVDU19WUDhfVEVNUE9SQUxfTEFZRVJTX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA4L3RlbXBvcmFsX2xheWVyc19jaGVja2VyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYwppbmRleCBjMGE3MzZhNGVkZGE5ZmQ5
NGMwMWMwN2EyZjU2NGFmZTE5ZTA3MGFkLi40ZGJhN2EzNjZhOWQ5MjhmYmU0MDhjMGM0MmZhYTc4
NTRlM2U1MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3RlbXBvcmFsX2xheWVyc19j
aGVja2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIu
Y2MKQEAgLTE3LDEzICsxNywxMyBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxUZW1wb3JhbExheWVyc0NoZWNrZXI+Ci1UZW1wb3JhbExheWVyc0NoZWNrZXI6OkNyZWF0
ZVRlbXBvcmFsTGF5ZXJzQ2hlY2tlcihUZW1wb3JhbExheWVyc1R5cGUgdHlwZSwKK1RlbXBvcmFs
TGF5ZXJzQ2hlY2tlcjo6Q3JlYXRlVGVtcG9yYWxMYXllcnNDaGVja2VyKFZwOFRlbXBvcmFsTGF5
ZXJzVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IG51bV90ZW1wb3JhbF9sYXllcnMpIHsKICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBhdHRlcm46CisgICAgY2FzZSBWcDhU
ZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBhdHRlcm46CiAgICAgICByZXR1cm4gYWJzbDo6bWFr
ZV91bmlxdWU8RGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcj4oCiAgICAgICAgICAgbnVtX3Rl
bXBvcmFsX2xheWVycyk7Ci0gICAgY2FzZSBUZW1wb3JhbExheWVyc1R5cGU6OmtCaXRyYXRlRHlu
YW1pYzoKKyAgICBjYXNlIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0JpdHJhdGVEeW5hbWljOgog
ICAgICAgLy8gQ29uZmVyZW5jZSBtb2RlIHRlbXBvcmFsIGxheWVyaW5nIGZvciBzY3JlZW4gY29u
dGVudCBpbiBiYXNlIHN0cmVhbS4KICAgICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxUZW1w
b3JhbExheWVyc0NoZWNrZXI+KG51bV90ZW1wb3JhbF9sYXllcnMpOwogICB9CkBAIC00MCwxMCAr
NDAsMTAgQEAgYm9vbCBUZW1wb3JhbExheWVyc0NoZWNrZXI6OkNoZWNrQW5kVXBkYXRlQnVmZmVy
U3RhdGUoCiAgICAgYm9vbCogbmVlZF9zeW5jLAogICAgIGJvb2wgZnJhbWVfaXNfa2V5ZnJhbWUs
CiAgICAgdWludDhfdCB0ZW1wb3JhbF9sYXllciwKLSAgICB3ZWJydGM6OlRlbXBvcmFsTGF5ZXJz
OjpCdWZmZXJGbGFncyBmbGFncywKKyAgICB3ZWJydGM6OlZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZm
ZXJGbGFncyBmbGFncywKICAgICB1aW50MzJfdCBzZXF1ZW5jZV9udW1iZXIsCiAgICAgdWludDMy
X3QqIGxvd2VzdF9zZXF1ZW5jZV9yZWZlcmVuY2VkKSB7Ci0gIGlmIChmbGFncyAmIFRlbXBvcmFs
TGF5ZXJzOjpCdWZmZXJGbGFnczo6a1JlZmVyZW5jZSkgeworICBpZiAoZmxhZ3MgJiBWcDhUZW1w
b3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtSZWZlcmVuY2UpIHsKICAgICBpZiAoc3RhdGUtPnRl
bXBvcmFsX2xheWVyID4gMCAmJiAhc3RhdGUtPmlzX2tleWZyYW1lKSB7CiAgICAgICAqbmVlZF9z
eW5jID0gZmFsc2U7CiAgICAgfQpAQCAtNTcsNyArNTcsNyBAQCBib29sIFRlbXBvcmFsTGF5ZXJz
Q2hlY2tlcjo6Q2hlY2tBbmRVcGRhdGVCdWZmZXJTdGF0ZSgKICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgIH0KLSAgaWYgKChmbGFncyAmIFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6
a1VwZGF0ZSkpIHsKKyAgaWYgKChmbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFn
czo6a1VwZGF0ZSkpIHsKICAgICBzdGF0ZS0+dGVtcG9yYWxfbGF5ZXIgPSB0ZW1wb3JhbF9sYXll
cjsKICAgICBzdGF0ZS0+c2VxdWVuY2VfbnVtYmVyID0gc2VxdWVuY2VfbnVtYmVyOwogICAgIHN0
YXRlLT5pc19rZXlmcmFtZSA9IGZyYW1lX2lzX2tleWZyYW1lOwpAQCAtNjksNyArNjksNyBAQCBi
b29sIFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q2hlY2tBbmRVcGRhdGVCdWZmZXJTdGF0ZSgKIAog
Ym9vbCBUZW1wb3JhbExheWVyc0NoZWNrZXI6OkNoZWNrVGVtcG9yYWxDb25maWcoCiAgICAgYm9v
bCBmcmFtZV9pc19rZXlmcmFtZSwKLSAgICBjb25zdCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25m
aWcmIGZyYW1lX2NvbmZpZykgeworICAgIGNvbnN0IFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNv
bmZpZyYgZnJhbWVfY29uZmlnKSB7CiAgIGlmIChmcmFtZV9jb25maWcuZHJvcF9mcmFtZSB8fAog
ICAgICAgZnJhbWVfY29uZmlnLnBhY2tldGl6ZXJfdGVtcG9yYWxfaWR4ID09IGtOb1RlbXBvcmFs
SWR4KSB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3Rl
c3QvbW9ja19saWJ2cHhfaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3Rlc3QvbW9ja19s
aWJ2cHhfaW50ZXJmYWNlLmgKaW5kZXggNTgwNGU4MTRlYzkxNDg4NThkZGM4M2RjN2U3NzZiNTI3
YzU3ZWVmMi4uZGNmZjFlNmExODg0NmFkYmUzZGU0MTkwMjZlMTc3M2U3OThjNmFjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZXN0L21vY2tfbGlidnB4X2ludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvdGVzdC9tb2NrX2xpYnZweF9pbnRlcmZhY2UuaApAQCAtMzIsNyAr
MzIsNyBAQCBjbGFzcyBNb2NrTGlidnB4VnA4SW50ZXJmYWNlIDogcHVibGljIExpYnZweEludGVy
ZmFjZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKikpOwotICBNT0NLX0NPTlNU
X01FVEhPRDEoaW1nX2ZyZWUsIHZweF9jb2RlY19lcnJfdChjb25zdCB2cHhfY29kZWNfZW5jX2Nm
Z190KikpOworICBNT0NLX0NPTlNUX01FVEhPRDEoaW1nX2ZyZWUsIHZvaWQodnB4X2ltYWdlX3Qq
IGltZykpOwogICBNT0NLX0NPTlNUX01FVEhPRDIoY29kZWNfZW5jX2NvbmZpZ19zZXQsCiAgICAg
ICAgICAgICAgICAgICAgICB2cHhfY29kZWNfZXJyX3QodnB4X2NvZGVjX2N0eF90KiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2cHhfY29kZWNfZW5jX2NmZ190
KikpOwpAQCAtODQsNyArODQsNyBAQCBjbGFzcyBNb2NrTGlidnB4VnA4SW50ZXJmYWNlIDogcHVi
bGljIExpYnZweEludGVyZmFjZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDY0X3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnB4X2Vu
Y19mcmFtZV9mbGFnc190LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ2NF90KSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMyhjb2RlY19nZXRfY3hfZGF0YSwKKyAgTU9D
S19DT05TVF9NRVRIT0QyKGNvZGVjX2dldF9jeF9kYXRhLAogICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdnB4X2NvZGVjX2N4X3BrdF90Kih2cHhfY29kZWNfY3R4X3QqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cHhfY29kZWNfaXRlcl90KikpOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVzdC92cDhfaW1wbF91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvdGVzdC92cDhfaW1wbF91bml0dGVzdC5jYwppbmRleCA0NWEw
OTBkZjM3MzZkZTkxMDY2MzQ0NWNhYmQ3NjlhOTJiMTljMTA5Li41ZWVkNWQzODBjZjZhNmYwMTJj
ZTFmODBkMmQ5MGQ3NTUwYTQ5YTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3Rlc3Qv
dnA4X2ltcGxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZXN0L3ZwOF9pbXBs
X3VuaXR0ZXN0LmNjCkBAIC0xMiwxNiArMTIsMjUgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KIAor
I2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgImFwaS90
ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4
X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVk
ZS93ZWJydGNfbGlieXV2LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3Rlc3QvdmlkZW9fY29kZWNfdW5pdHRlc3QuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4LmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZW5jb2Rlci5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVzdC9tb2NrX2xpYnZw
eF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3Zw
OF9oZWFkZXJfcGFyc2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5j
bHVkZSAidGVzdC92aWRlb19jb2RlY19zZXR0aW5ncy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IAordXNpbmcgdGVzdGluZzo6SW52b2tlOwordXNpbmcgdGVzdGluZzo6TmljZU1vY2s7Cit1c2lu
ZyB0ZXN0aW5nOjpSZXR1cm47Cit1c2luZyB0ZXN0aW5nOjpfOworCiBuYW1lc3BhY2UgewogY29u
c3RleHByIHVpbnQzMl90IGtJbml0aWFsVGltZXN0YW1wUnRwID0gMTIzOwogY29uc3RleHByIGlu
dDY0X3Qga1Rlc3ROdHBUaW1lTXMgPSA0NTY7CkBAIC02OCw3ICs3Nyw3IEBAIGNsYXNzIFRlc3RW
cDhJbXBsIDogcHVibGljIFZpZGVvQ29kZWNVbml0VGVzdCB7CiAgICAgICAgICAgICAgIGVuY29k
ZXJfLT5FbmNvZGUoaW5wdXRfZnJhbWUsIG51bGxwdHIsICZmcmFtZV90eXBlcykpOwogICAgIEFT
U0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWUoZW5jb2RlZF9mcmFtZSwgY29kZWNfc3BlY2lm
aWNfaW5mbykpOwogICAgIFZlcmlmeVFwUGFyc2VyKCplbmNvZGVkX2ZyYW1lKTsKLSAgICBFWFBF
Q1RfU1RSRVEoImxpYnZweCIsIGNvZGVjX3NwZWNpZmljX2luZm8tPmNvZGVjX25hbWUpOworICAg
IEVYUEVDVF9FUSgibGlidnB4IiwgZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkuaW1wbGVtZW50
YXRpb25fbmFtZSk7CiAgICAgRVhQRUNUX0VRKGtWaWRlb0NvZGVjVlA4LCBjb2RlY19zcGVjaWZp
Y19pbmZvLT5jb2RlY1R5cGUpOwogICAgIEVYUEVDVF9FUSgwLCBlbmNvZGVkX2ZyYW1lLT5TcGF0
aWFsSW5kZXgoKSk7CiAgIH0KQEAgLTMyNSw3ICszMzQsOCBAQCBURVNUX0YoVGVzdFZwOEltcGws
IFNjYWxpbmdEaXNhYmxlZElmQXV0b21hdGljUmVzaXplT2ZmKSB7CiAgIEVYUEVDVF9FUShXRUJS
VENfVklERU9fQ09ERUNfT0ssCiAgICAgICAgICAgICBlbmNvZGVyXy0+SW5pdEVuY29kZSgmY29k
ZWNfc2V0dGluZ3NfLCBrTnVtQ29yZXMsIGtNYXhQYXlsb2FkU2l6ZSkpOwogCi0gIFZpZGVvRW5j
b2Rlcjo6U2NhbGluZ1NldHRpbmdzIHNldHRpbmdzID0gZW5jb2Rlcl8tPkdldFNjYWxpbmdTZXR0
aW5ncygpOworICBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBzZXR0aW5ncyA9CisgICAg
ICBlbmNvZGVyXy0+R2V0RW5jb2RlckluZm8oKS5zY2FsaW5nX3NldHRpbmdzOwogICBFWFBFQ1Rf
RkFMU0Uoc2V0dGluZ3MudGhyZXNob2xkcy5oYXNfdmFsdWUoKSk7CiB9CiAKQEAgLTMzNSw3ICsz
NDUsOCBAQCBURVNUX0YoVGVzdFZwOEltcGwsIFNjYWxpbmdFbmFibGVkSWZBdXRvbWF0aWNSZXNp
emVPbikgewogICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLAogICAgICAgICAgICAg
ZW5jb2Rlcl8tPkluaXRFbmNvZGUoJmNvZGVjX3NldHRpbmdzXywga051bUNvcmVzLCBrTWF4UGF5
bG9hZFNpemUpKTsKIAotICBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBzZXR0aW5ncyA9
IGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKKyAgVmlkZW9FbmNvZGVyOjpTY2FsaW5n
U2V0dGluZ3Mgc2V0dGluZ3MgPQorICAgICAgZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkuc2Nh
bGluZ19zZXR0aW5nczsKICAgRVhQRUNUX1RSVUUoc2V0dGluZ3MudGhyZXNob2xkcy5oYXNfdmFs
dWUoKSk7CiAgIEVYUEVDVF9FUShrRGVmYXVsdE1pblBpeGVsc1BlckZyYW1lLCBzZXR0aW5ncy5t
aW5fcGl4ZWxzX3Blcl9mcmFtZSk7CiB9CkBAIC0zODAsNCArMzkxLDQxIEBAIFRFU1RfRihUZXN0
VnA4SW1wbCwgRG9udERyb3BLZXlmcmFtZXMpIHsKICAgRW5jb2RlQW5kRXhwZWN0RnJhbWVXaXRo
KCpOZXh0SW5wdXRGcmFtZSgpLCAwLCB0cnVlKTsKIH0KIAorVEVTVF9GKFRlc3RWcDhJbXBsLCBL
ZWVwc1RpbWVzdGFtcE9uUmVlbmNvZGUpIHsKKyAgYXV0byogY29uc3QgdnB4ID0gbmV3IE5pY2VN
b2NrPE1vY2tMaWJ2cHhWcDhJbnRlcmZhY2U+KCk7CisgIExpYnZweFZwOEVuY29kZXIgZW5jb2Rl
cigoc3RkOjp1bmlxdWVfcHRyPExpYnZweEludGVyZmFjZT4odnB4KSkpOworCisgIC8vIFNldHRp
bmdzIG5lZWRlZCB0byB0cmlnZ2VyIFNjcmVlbnNoYXJlTGF5ZXJzIHVzYWdlLCB3aGljaCBpcyBy
ZXF1aXJlZCBmb3IKKyAgLy8gb3ZlcnNob290LWRyb3AtcmVlbmNvZGUgbG9naWMuCisgIGNvZGVj
X3NldHRpbmdzXy50YXJnZXRCaXRyYXRlID0gMjAwOworICBjb2RlY19zZXR0aW5nc18ubWF4Qml0
cmF0ZSA9IDEwMDA7CisgIGNvZGVjX3NldHRpbmdzXy5tb2RlID0gVmlkZW9Db2RlY01vZGU6OmtT
Y3JlZW5zaGFyaW5nOworICBjb2RlY19zZXR0aW5nc18uVlA4KCktPm51bWJlck9mVGVtcG9yYWxM
YXllcnMgPSAyOworCisgIEVYUEVDVF9DQUxMKCp2cHgsIGltZ193cmFwKF8sIF8sIF8sIF8sIF8s
IF8pKQorICAgICAgLldpbGxPbmNlKEludm9rZShbXSh2cHhfaW1hZ2VfdCogaW1nLCB2cHhfaW1n
X2ZtdF90IGZtdCwgdW5zaWduZWQgaW50IGRfdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGRfaCwgdW5zaWduZWQgaW50IHN0cmlkZV9hbGlnbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogaW1nX2RhdGEpIHsKKyAgICAgICAgaW1nLT5m
bXQgPSBmbXQ7CisgICAgICAgIGltZy0+ZF93ID0gZF93OworICAgICAgICBpbWctPmRfaCA9IGRf
aDsKKyAgICAgICAgaW1nLT5pbWdfZGF0YSA9IGltZ19kYXRhOworICAgICAgICByZXR1cm4gaW1n
OworICAgICAgfSkpOworICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLAorICAgICAg
ICAgICAgZW5jb2Rlci5Jbml0RW5jb2RlKCZjb2RlY19zZXR0aW5nc18sIDEsIDEwMDApKTsKKyAg
TW9ja0VuY29kZWRJbWFnZUNhbGxiYWNrIGNhbGxiYWNrOworICBlbmNvZGVyLlJlZ2lzdGVyRW5j
b2RlQ29tcGxldGVDYWxsYmFjaygmY2FsbGJhY2spOworCisgIC8vIFNpbXVsYXRlIG92ZXJzaG9v
dCBkcm9wLCByZS1lbmNvZGU6IGVuY29kZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0d2ljZQor
ICAvLyB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuIGNvZGVjX2dldF9jeF9kYXRhKCkgd2lsbCBi
eSBkZWZhdWx0IHJldHVybiBubworICAvLyBpbWFnZSBkYXRhIGFuZCBiZSBpbnRlcnByZXRlZCBh
cyBkcm9wLgorICBFWFBFQ1RfQ0FMTCgqdnB4LCBjb2RlY19lbmNvZGUoXywgXywgLyogcHRzID0g
Ki8gMCwgXywgXywgXykpCisgICAgICAuVGltZXMoMikKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShS
ZXR1cm4odnB4X2NvZGVjX2Vycl90OjpWUFhfQ09ERUNfT0spKTsKKworICBhdXRvIGRlbHRhX2Zy
YW1lID0gc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPntrVmlkZW9GcmFtZURlbHRhfTsKKyAgZW5jb2Rl
ci5FbmNvZGUoKk5leHRJbnB1dEZyYW1lKCksIG51bGxwdHIsICZkZWx0YV9mcmFtZSk7Cit9CisK
IH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdnA4
X3RlbXBvcmFsX2xheWVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdnA4X3RlbXBvcmFsX2xheWVy
cy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1ODQ0MTRhOTExMzcwZDc0OTY4
NmI0MzBjYTFlNTA5OGVmY2Q2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVy
cy5oIgotCi0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJz
LmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKLQotbmFtZXNw
YWNlIHdlYnJ0YyB7Ci0KLWJvb2wgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnOjpvcGVyYXRv
cj09KGNvbnN0IEZyYW1lQ29uZmlnJiBvKSBjb25zdCB7Ci0gIHJldHVybiBkcm9wX2ZyYW1lID09
IG8uZHJvcF9mcmFtZSAmJgotICAgICAgICAgbGFzdF9idWZmZXJfZmxhZ3MgPT0gby5sYXN0X2J1
ZmZlcl9mbGFncyAmJgotICAgICAgICAgZ29sZGVuX2J1ZmZlcl9mbGFncyA9PSBvLmdvbGRlbl9i
dWZmZXJfZmxhZ3MgJiYKLSAgICAgICAgIGFyZl9idWZmZXJfZmxhZ3MgPT0gby5hcmZfYnVmZmVy
X2ZsYWdzICYmIGxheWVyX3N5bmMgPT0gby5sYXllcl9zeW5jICYmCi0gICAgICAgICBmcmVlemVf
ZW50cm9weSA9PSBvLmZyZWV6ZV9lbnRyb3B5ICYmCi0gICAgICAgICBlbmNvZGVyX2xheWVyX2lk
ID09IG8uZW5jb2Rlcl9sYXllcl9pZCAmJgotICAgICAgICAgcGFja2V0aXplcl90ZW1wb3JhbF9p
ZHggPT0gby5wYWNrZXRpemVyX3RlbXBvcmFsX2lkeDsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFRl
bXBvcmFsTGF5ZXJzPiBUZW1wb3JhbExheWVyczo6Q3JlYXRlVGVtcG9yYWxMYXllcnMoCi0gICAg
VGVtcG9yYWxMYXllcnNUeXBlIHR5cGUsCi0gICAgaW50IG51bV90ZW1wb3JhbF9sYXllcnMpIHsK
LSAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBh
dHRlcm46Ci0gICAgICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8RGVmYXVsdFRlbXBvcmFsTGF5
ZXJzPihudW1fdGVtcG9yYWxfbGF5ZXJzKTsKLSAgICBjYXNlIFRlbXBvcmFsTGF5ZXJzVHlwZTo6
a0JpdHJhdGVEeW5hbWljOgotICAgICAgLy8gQ29uZmVyZW5jZSBtb2RlIHRlbXBvcmFsIGxheWVy
aW5nIGZvciBzY3JlZW4gY29udGVudCBpbiBiYXNlIHN0cmVhbS4KLSAgICAgIHJldHVybiBhYnNs
OjptYWtlX3VuaXF1ZTxTY3JlZW5zaGFyZUxheWVycz4obnVtX3RlbXBvcmFsX2xheWVycywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvY2s6Okdl
dFJlYWxUaW1lQ2xvY2soKSk7Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfY29uZmlnLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Zw
OS9zdmNfY29uZmlnLmNjCmluZGV4IDY4MDc2OTgyNDZlOGZmMzM1NWU5YWMyYWMwNDUyZmI5MWFl
YTZhYjAuLjNlOTIyODAxNDgzOTI4Y2MxM2VhMzFjN2RlYTEzYTU0YmRlZWYzYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX2NvbmZpZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5
L3N2Y19jb25maWcuY2MKQEAgLTIyLDkgKzIyLDkgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1l
c3BhY2UgewogY29uc3Qgc2l6ZV90IGtNaW5WcDlTdmNCaXRyYXRlS2JwcyA9IDMwOwogCi1jb25z
dCBzaXplX3Qga01heE51bUxheWVyc0ZvclNjcmVlblNoYXJpbmcgPSAyOwotY29uc3QgZmxvYXQg
a01heFNjcmVlblNoYXJpbmdMYXllckZyYW1lcmF0ZUZwc1tdID0gezUuMCwgNS4wfTsKLWNvbnN0
IHNpemVfdCBrTWF4U2NyZWVuU2hhcmluZ0xheWVyQml0cmF0ZUticHNbXSA9IHsyMDAsIDUwMH07
Citjb25zdCBzaXplX3Qga01heE51bUxheWVyc0ZvclNjcmVlblNoYXJpbmcgPSAzOworY29uc3Qg
ZmxvYXQga01heFNjcmVlblNoYXJpbmdMYXllckZyYW1lcmF0ZUZwc1tdID0gezUuMCwgNS4wLCAz
MC4wfTsKK2NvbnN0IHNpemVfdCBrTWF4U2NyZWVuU2hhcmluZ0xheWVyQml0cmF0ZUticHNbXSA9
IHsyMDAsIDUwMCwgMTI1MH07CiB9ICAvLyBuYW1lc3BhY2UKIAogc3RkOjp2ZWN0b3I8U3BhdGlh
bExheWVyPiBDb25maWd1cmVTdmNTY3JlZW5TaGFyaW5nKHNpemVfdCBpbnB1dF93aWR0aCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX2NvbmZpZ191bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDkvc3ZjX2NvbmZpZ191bml0dGVzdC5jYwppbmRleCAyNTdjNWRmMmYwMzdiYTBm
NTAyZGNmNWE0ZjdlZjBjMmU3ODFkYzVlLi5iOTk3NzY3NDY1NjYxZThiMTg0NGI0NTc1MGZkMTc2
ZWM4ZDdlMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19jb25maWdfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfY29uZmlnX3VuaXR0ZXN0LmNjCkBAIC00
OSwxMiArNDksMTMgQEAgVEVTVChTdmNDb25maWcsIFNjcmVlblNoYXJpbmcpIHsKICAgc3RkOjp2
ZWN0b3I8U3BhdGlhbExheWVyPiBzcGF0aWFsX2xheWVycyA9CiAgICAgICBHZXRTdmNDb25maWco
MTkyMCwgMTA4MCwgMzAsIDMsIDMsIHRydWUpOwogCi0gIEVYUEVDVF9FUShzcGF0aWFsX2xheWVy
cy5zaXplKCksIDJVTCk7CisgIEVYUEVDVF9FUShzcGF0aWFsX2xheWVycy5zaXplKCksIDNVTCk7
CiAKLSAgZm9yIChjb25zdCBTcGF0aWFsTGF5ZXImIGxheWVyIDogc3BhdGlhbF9sYXllcnMpIHsK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICBjb25zdCBTcGF0aWFsTGF5
ZXImIGxheWVyID0gc3BhdGlhbF9sYXllcnNbaV07CiAgICAgRVhQRUNUX0VRKGxheWVyLndpZHRo
LCAxOTIwKTsKICAgICBFWFBFQ1RfRVEobGF5ZXIuaGVpZ2h0LCAxMDgwKTsKLSAgICBFWFBFQ1Rf
RVEobGF5ZXIubWF4RnJhbWVyYXRlLCA1KTsKKyAgICBFWFBFQ1RfRVEobGF5ZXIubWF4RnJhbWVy
YXRlLCAoaSA8IDIpID8gNSA6IDMwKTsKICAgICBFWFBFQ1RfRVEobGF5ZXIubnVtYmVyT2ZUZW1w
b3JhbExheWVycywgMSk7CiAgICAgRVhQRUNUX0xFKGxheWVyLm1pbkJpdHJhdGUsIGxheWVyLm1h
eEJpdHJhdGUpOwogICAgIEVYUEVDVF9MRShsYXllci5taW5CaXRyYXRlLCBsYXllci50YXJnZXRC
aXRyYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX3JhdGVfYWxsb2NhdG9y
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3JfdW5pdHRl
c3QuY2MKaW5kZXggMDQ4YmY3ZDY5NDcxMTExZTc3NDYxYWExY2I4NTkyODE3NDUyY2I2OS4uZWVj
MmI5ZDQxOTllYTlmNzdlM2M5OWI2Y2IyZDQ3ODQ5YmQ5ZjU3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKQEAgLTE0OSw3ICsxNDksNyBA
QCBURVNUKFN2Y1JhdGVBbGxvY2F0b3JUZXN0LCBNaW5CaXRyYXRlVG9HZXRRdWFsaXR5TGF5ZXIp
IHsKIAogICBjb25zdCBTcGF0aWFsTGF5ZXIqIGxheWVycyA9IGNvZGVjLnNwYXRpYWxMYXllcnM7
CiAKLSAgRVhQRUNUX0xFKGNvZGVjLlZQOSgpLT5udW1iZXJPZlNwYXRpYWxMYXllcnMsIDJVKTsK
KyAgRVhQRUNUX0xFKGNvZGVjLlZQOSgpLT5udW1iZXJPZlNwYXRpYWxMYXllcnMsIDNVKTsKIAog
ICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGFsbG9jYXRpb24gPQogICAgICAgYWxsb2NhdG9yLkdl
dEFsbG9jYXRpb24obGF5ZXJzWzBdLm1pbkJpdHJhdGUgKiAxMDAwLCAzMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA5L3Rlc3QvdnA5X2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA5L3Rlc3QvdnA5X2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggNDczM2FkOTc5YTQ5OTVhMWFj
YjNiNmZkMDBiYjljY2RmYTRhMjJjYS4uODVmYTI3OGEwZDM3NmVhZjU1MTJlYzA3NThiOGNiN2Rk
NzIxZWFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS90ZXN0L3ZwOV9pbXBsX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdGVzdC92cDlfaW1wbF91bml0dGVzdC5jYwpA
QCAtMTA0LDYgKzEwNCwzMyBAQCBjbGFzcyBUZXN0VnA5SW1wbCA6IHB1YmxpYyBWaWRlb0NvZGVj
VW5pdFRlc3QgewogICAgICAgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNbaV0gPSBsYXll
cnNbaV07CiAgICAgfQogICB9CisKKyAgSGRyTWV0YWRhdGEgQ3JlYXRlVGVzdEhkck1ldGFkYXRh
KCkgY29uc3QgeworICAgIC8vIFJhbmRvbSBidXQgcmVhc29uYWJsZSBIRFIgbWV0YWRhdGEuCisg
ICAgSGRyTWV0YWRhdGEgaGRyX21ldGFkYXRhOworICAgIGhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdf
bWV0YWRhdGEubHVtaW5hbmNlX21heCA9IDIwMDAuMDsKKyAgICBoZHJfbWV0YWRhdGEubWFzdGVy
aW5nX21ldGFkYXRhLmx1bWluYW5jZV9taW4gPSAyLjAwMDE7CisgICAgaGRyX21ldGFkYXRhLm1h
c3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X3IueCA9IDAuMzA7CisgICAgaGRyX21ldGFkYXRhLm1h
c3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X3IueSA9IDAuNDA7CisgICAgaGRyX21ldGFkYXRhLm1h
c3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2cueCA9IDAuMzI7CisgICAgaGRyX21ldGFkYXRhLm1h
c3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2cueSA9IDAuNDY7CisgICAgaGRyX21ldGFkYXRhLm1h
c3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2IueCA9IDAuMzQ7CisgICAgaGRyX21ldGFkYXRhLm1h
c3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2IueSA9IDAuNDk7CisgICAgaGRyX21ldGFkYXRhLm1h
c3RlcmluZ19tZXRhZGF0YS53aGl0ZV9wb2ludC54ID0gMC40MTsKKyAgICBoZHJfbWV0YWRhdGEu
bWFzdGVyaW5nX21ldGFkYXRhLndoaXRlX3BvaW50LnkgPSAwLjQ4OworICAgIGhkcl9tZXRhZGF0
YS5tYXhfY29udGVudF9saWdodF9sZXZlbCA9IDIzNDU7CisgICAgaGRyX21ldGFkYXRhLm1heF9m
cmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVsID0gMTc4OTsKKyAgICByZXR1cm4gaGRyX21ldGFkYXRh
OworICB9CisKKyAgQ29sb3JTcGFjZSBDcmVhdGVUZXN0Q29sb3JTcGFjZSgpIGNvbnN0IHsKKyAg
ICBIZHJNZXRhZGF0YSBoZHJfbWV0YWRhdGEgPSBDcmVhdGVUZXN0SGRyTWV0YWRhdGEoKTsKKyAg
ICBDb2xvclNwYWNlIGNvbG9yX3NwYWNlKENvbG9yU3BhY2U6OlByaW1hcnlJRDo6a0JUNzA5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6a0dBTU1B
MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlOjpNYXRyaXhJRDo6a1NN
UFRFMjA4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yU3BhY2U6OlJhbmdlSUQ6
OmtGdWxsLCAmaGRyX21ldGFkYXRhKTsKKyAgICByZXR1cm4gY29sb3Jfc3BhY2U7CisgIH0KIH07
CiAKIC8vIERpc2FibGVkIG9uIGlvcyBhcyBmbGFrZSwgc2VlIGh0dHBzOi8vY3JidWcuY29tL3dl
YnJ0Yy83MDU3CkBAIC0xMjgsNyArMTU1LDcgQEAgVEVTVF9GKFRlc3RWcDlJbXBsLCBFbmNvZGVE
ZWNvZGUpIHsKICAgQVNTRVJUX1RSVUUoZGVjb2RlZF9mcmFtZSk7CiAgIEVYUEVDVF9HVChJNDIw
UFNOUihpbnB1dF9mcmFtZSwgZGVjb2RlZF9mcmFtZS5nZXQoKSksIDM2KTsKIAotICBjb25zdCBD
b2xvclNwYWNlIGNvbG9yX3NwYWNlID0gZGVjb2RlZF9mcmFtZS0+Y29sb3Jfc3BhY2UoKS52YWx1
ZSgpOworICBjb25zdCBDb2xvclNwYWNlIGNvbG9yX3NwYWNlID0gKmRlY29kZWRfZnJhbWUtPmNv
bG9yX3NwYWNlKCk7CiAgIEVYUEVDVF9FUShDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OmtJbnZhbGlk
LCBjb2xvcl9zcGFjZS5wcmltYXJpZXMoKSk7CiAgIEVYUEVDVF9FUShDb2xvclNwYWNlOjpUcmFu
c2ZlcklEOjprSW52YWxpZCwgY29sb3Jfc3BhY2UudHJhbnNmZXIoKSk7CiAgIEVYUEVDVF9FUShD
b2xvclNwYWNlOjpNYXRyaXhJRDo6a0ludmFsaWQsIGNvbG9yX3NwYWNlLm1hdHJpeCgpKTsKQEAg
LTE1Nyw2ICsxODQsNjAgQEAgVEVTVF9GKFRlc3RWcDlJbXBsLCBFbmNvZGVkUm90YXRpb25FcXVh
bHNJbnB1dFJvdGF0aW9uKSB7CiAgIEVYUEVDVF9FUShrVmlkZW9Sb3RhdGlvbl85MCwgZW5jb2Rl
ZF9mcmFtZS5yb3RhdGlvbl8pOwogfQogCitURVNUX0YoVGVzdFZwOUltcGwsIEVuY29kZWRDb2xv
clNwYWNlRXF1YWxzSW5wdXRDb2xvclNwYWNlKSB7CisgIC8vIFZpZGVvIGZyYW1lIHdpdGhvdXQg
ZXhwbGljaXQgY29sb3Igc3BhY2UgaW5mb3JtYXRpb24uCisgIFZpZGVvRnJhbWUqIGlucHV0X2Zy
YW1lID0gTmV4dElucHV0RnJhbWUoKTsKKyAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19P
SywKKyAgICAgICAgICAgIGVuY29kZXJfLT5FbmNvZGUoKmlucHV0X2ZyYW1lLCBudWxscHRyLCBu
dWxscHRyKSk7CisgIEVuY29kZWRJbWFnZSBlbmNvZGVkX2ZyYW1lOworICBDb2RlY1NwZWNpZmlj
SW5mbyBjb2RlY19zcGVjaWZpY19pbmZvOworICBBU1NFUlRfVFJVRShXYWl0Rm9yRW5jb2RlZEZy
YW1lKCZlbmNvZGVkX2ZyYW1lLCAmY29kZWNfc3BlY2lmaWNfaW5mbykpOworICBFWFBFQ1RfRkFM
U0UoZW5jb2RlZF9mcmFtZS5Db2xvclNwYWNlKCkpOworCisgIC8vIFZpZGVvIGZyYW1lIHdpdGgg
ZXhwbGljaXQgY29sb3Igc3BhY2UgaW5mb3JtYXRpb24uCisgIENvbG9yU3BhY2UgY29sb3Jfc3Bh
Y2UgPSBDcmVhdGVUZXN0Q29sb3JTcGFjZSgpOworICBWaWRlb0ZyYW1lIGlucHV0X2ZyYW1lX3df
aGRyID0KKyAgICAgIFZpZGVvRnJhbWU6OkJ1aWxkZXIoKQorICAgICAgICAgIC5zZXRfdmlkZW9f
ZnJhbWVfYnVmZmVyKGlucHV0X2ZyYW1lLT52aWRlb19mcmFtZV9idWZmZXIoKSkKKyAgICAgICAg
ICAuc2V0X2NvbG9yX3NwYWNlKCZjb2xvcl9zcGFjZSkKKyAgICAgICAgICAuYnVpbGQoKTsKKyAg
RVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAgICAgICAgICAgIGVuY29kZXJfLT5F
bmNvZGUoaW5wdXRfZnJhbWVfd19oZHIsIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgQVNTRVJUX1RS
VUUoV2FpdEZvckVuY29kZWRGcmFtZSgmZW5jb2RlZF9mcmFtZSwgJmNvZGVjX3NwZWNpZmljX2lu
Zm8pKTsKKyAgQVNTRVJUX1RSVUUoZW5jb2RlZF9mcmFtZS5Db2xvclNwYWNlKCkpOworICBFWFBF
Q1RfRVEoKmVuY29kZWRfZnJhbWUuQ29sb3JTcGFjZSgpLCBjb2xvcl9zcGFjZSk7Cit9CisKK1RF
U1RfRihUZXN0VnA5SW1wbCwgRGVjb2RlZEhkck1ldGFkYXRhRXF1YWxzRW5jb2RlZEhkck1ldGFk
YXRhKSB7CisgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCisgICAgICAgICAgICBl
bmNvZGVyXy0+RW5jb2RlKCpOZXh0SW5wdXRGcmFtZSgpLCBudWxscHRyLCBudWxscHRyKSk7Cisg
IEVuY29kZWRJbWFnZSBlbmNvZGVkX2ZyYW1lOworICBDb2RlY1NwZWNpZmljSW5mbyBjb2RlY19z
cGVjaWZpY19pbmZvOworICBBU1NFUlRfVFJVRShXYWl0Rm9yRW5jb2RlZEZyYW1lKCZlbmNvZGVk
X2ZyYW1lLCAmY29kZWNfc3BlY2lmaWNfaW5mbykpOworCisgIC8vIEVuY29kZWQgZnJhbWUgd2l0
aG91dCBleHBsaWNpdCBjb2xvciBzcGFjZSBpbmZvcm1hdGlvbi4KKyAgRVhQRUNUX0VRKFdFQlJU
Q19WSURFT19DT0RFQ19PSywKKyAgICAgICAgICAgIGRlY29kZXJfLT5EZWNvZGUoZW5jb2RlZF9m
cmFtZSwgZmFsc2UsIG51bGxwdHIsIDApKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRnJhbWU+
IGRlY29kZWRfZnJhbWU7CisgIGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+IGRlY29kZWRfcXA7Cisg
IEFTU0VSVF9UUlVFKFdhaXRGb3JEZWNvZGVkRnJhbWUoJmRlY29kZWRfZnJhbWUsICZkZWNvZGVk
X3FwKSk7CisgIEFTU0VSVF9UUlVFKGRlY29kZWRfZnJhbWUpOworICAvLyBDb2xvciBzcGFjZSBw
cmVzZW50IGZyb20gZW5jb2RlZCBiaXRzdHJlYW0uCisgIEFTU0VSVF9UUlVFKGRlY29kZWRfZnJh
bWUtPmNvbG9yX3NwYWNlKCkpOworICAvLyBObyBIRFIgbWV0YWRhdGEgcHJlc2VudC4KKyAgRVhQ
RUNUX0ZBTFNFKGRlY29kZWRfZnJhbWUtPmNvbG9yX3NwYWNlKCktPmhkcl9tZXRhZGF0YSgpKTsK
KworICAvLyBFbmNvZGVkIGZyYW1lIHdpdGggZXhwbGljaXQgY29sb3Igc3BhY2UgaW5mb3JtYXRp
b24uCisgIENvbG9yU3BhY2UgY29sb3Jfc3BhY2UgPSBDcmVhdGVUZXN0Q29sb3JTcGFjZSgpOwor
ICBlbmNvZGVkX2ZyYW1lLlNldENvbG9yU3BhY2UoJmNvbG9yX3NwYWNlKTsKKyAgRVhQRUNUX0VR
KFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAgICAgICAgICAgIGRlY29kZXJfLT5EZWNvZGUoZW5j
b2RlZF9mcmFtZSwgZmFsc2UsIG51bGxwdHIsIDApKTsKKyAgQVNTRVJUX1RSVUUoV2FpdEZvckRl
Y29kZWRGcmFtZSgmZGVjb2RlZF9mcmFtZSwgJmRlY29kZWRfcXApKTsKKyAgQVNTRVJUX1RSVUUo
ZGVjb2RlZF9mcmFtZSk7CisgIEFTU0VSVF9UUlVFKGRlY29kZWRfZnJhbWUtPmNvbG9yX3NwYWNl
KCkpOworICBFWFBFQ1RfRVEoY29sb3Jfc3BhY2UsICpkZWNvZGVkX2ZyYW1lLT5jb2xvcl9zcGFj
ZSgpKTsKK30KKwogVEVTVF9GKFRlc3RWcDlJbXBsLCBEZWNvZGVkUXBFcXVhbHNFbmNvZGVkUXAp
IHsKICAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKICAgICAgICAgICAgIGVuY29k
ZXJfLT5FbmNvZGUoKk5leHRJbnB1dEZyYW1lKCksIG51bGxwdHIsIG51bGxwdHIpKTsKQEAgLTM5
Myw3ICs0NzQsNyBAQCBURVNUX0YoVGVzdFZwOUltcGwsIEludGVyTGF5ZXJQcmVkKSB7CiAgIENv
bmZpZ3VyZVN2YyhudW1fc3BhdGlhbF9sYXllcnMpOwogICBjb2RlY19zZXR0aW5nc18uVlA5KCkt
PmZyYW1lRHJvcHBpbmdPbiA9IGZhbHNlOwogCi0gIEJpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVf
YWxsb2NhdGlvbjsKKyAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRyYXRlX2FsbG9jYXRpb247
CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX3NwYXRpYWxfbGF5ZXJzOyArK2kpIHsKICAg
ICBiaXRyYXRlX2FsbG9jYXRpb24uU2V0Qml0cmF0ZSgKICAgICAgICAgaSwgMCwgY29kZWNfc2V0
dGluZ3NfLnNwYXRpYWxMYXllcnNbaV0udGFyZ2V0Qml0cmF0ZSAqIDEwMDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOS92cDkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOS5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMmEwODg4MTIwOGExMjllYjUyZTM1YTYwZDY5Zjk2YjQzMmYzMmJkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDkuY2MKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA5L2luY2x1ZGUvdnA5LmgiCisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
KyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9pbXBsLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAidnB4L3ZwOGN4LmgiCisjaW5jbHVkZSAidnB4
L3ZwOGR4LmgiCisjaW5jbHVkZSAidnB4L3ZweF9jb2RlYy5oIgorCituYW1lc3BhY2Ugd2VicnRj
IHsKKworc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IFN1cHBvcnRlZFZQOUNvZGVjcygpIHsK
KyNpZmRlZiBSVENfRU5BQkxFX1ZQOQorICAvLyBQcm9maWxlIDIgbWlnaHQgbm90IGJlIGF2YWls
YWJsZSBvbiBzb21lIHBsYXRmb3JtcyB1bnRpbAorICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0u
b3JnL3Avd2VibS9pc3N1ZXMvZGV0YWlsP2lkPTE1NDQgaXMgc29sdmVkLgorICBzdGF0aWMgYm9v
bCB2cHhfc3VwcG9ydHNfaGlnaF9iaXRfZGVwdGggPQorICAgICAgKHZweF9jb2RlY19nZXRfY2Fw
cyh2cHhfY29kZWNfdnA5X2N4KCkpICYgVlBYX0NPREVDX0NBUF9ISUdIQklUREVQVEgpICE9Cisg
ICAgICAgICAgMCAmJgorICAgICAgKHZweF9jb2RlY19nZXRfY2Fwcyh2cHhfY29kZWNfdnA5X2R4
KCkpICYgVlBYX0NPREVDX0NBUF9ISUdIQklUREVQVEgpICE9CisgICAgICAgICAgMDsKKworICBz
dGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gc3VwcG9ydGVkX2Zvcm1hdHN7U2RwVmlkZW9Gb3Jt
YXQoCisgICAgICBjcmlja2V0OjprVnA5Q29kZWNOYW1lLAorICAgICAge3trVlA5Rm10cFByb2Zp
bGVJZCwgVlA5UHJvZmlsZVRvU3RyaW5nKFZQOVByb2ZpbGU6OmtQcm9maWxlMCl9fSl9OworICBp
ZiAodnB4X3N1cHBvcnRzX2hpZ2hfYml0X2RlcHRoKSB7CisgICAgc3VwcG9ydGVkX2Zvcm1hdHMu
cHVzaF9iYWNrKFNkcFZpZGVvRm9ybWF0KAorICAgICAgICBjcmlja2V0OjprVnA5Q29kZWNOYW1l
LAorICAgICAgICB7e2tWUDlGbXRwUHJvZmlsZUlkLCBWUDlQcm9maWxlVG9TdHJpbmcoVlA5UHJv
ZmlsZTo6a1Byb2ZpbGUyKX19KSk7CisgIH0KKyAgcmV0dXJuIHN1cHBvcnRlZF9mb3JtYXRzOwor
I2Vsc2UKKyAgcmV0dXJuIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PigpOworI2VuZGlmCit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxWUDlFbmNvZGVyPiBWUDlFbmNvZGVyOjpDcmVhdGUoKSB7Cisj
aWZkZWYgUlRDX0VOQUJMRV9WUDkKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFZQOUVuY29k
ZXJJbXBsPihjcmlja2V0OjpWaWRlb0NvZGVjKCkpOworI2Vsc2UKKyAgUlRDX05PVFJFQUNIRUQo
KTsKKyAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKworc3RkOjp1bmlxdWVfcHRyPFZQOUVu
Y29kZXI+IFZQOUVuY29kZXI6OkNyZWF0ZSgKKyAgICBjb25zdCBjcmlja2V0OjpWaWRlb0NvZGVj
JiBjb2RlYykgeworI2lmZGVmIFJUQ19FTkFCTEVfVlA5CisgIHJldHVybiBhYnNsOjptYWtlX3Vu
aXF1ZTxWUDlFbmNvZGVySW1wbD4oY29kZWMpOworI2Vsc2UKKyAgUlRDX05PVFJFQUNIRUQoKTsK
KyAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKworc3RkOjp1bmlxdWVfcHRyPFZQOURlY29k
ZXI+IFZQOURlY29kZXI6OkNyZWF0ZSgpIHsKKyNpZmRlZiBSVENfRU5BQkxFX1ZQOQorICByZXR1
cm4gYWJzbDo6bWFrZV91bmlxdWU8VlA5RGVjb2RlckltcGw+KCk7CisjZWxzZQorICBSVENfTk9U
UkVBQ0hFRCgpOworICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9mcmFtZV9idWZmZXJf
cG9vbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmNjCmluZGV4
IDY5MTAxY2I1MDZmMzUwNDMxOTkwMDgxZjNjYmY2NmY1MDA4NWViZjcuLmVjYmRhNGNiM2JkMGYy
NGQzNjk2OTc0NmQ4ZDU4OTY4MTU0YTBiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkv
dnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ZyYW1l
X2J1ZmZlcl9wb29sLmNjCkBAIC05LDYgKzksOCBAQAogICoKICAqLwogCisjaWZkZWYgUlRDX0VO
QUJMRV9WUDkKKwogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5
X2ZyYW1lX2J1ZmZlcl9wb29sLmgiCiAKICNpbmNsdWRlICJ2cHgvdnB4X2NvZGVjLmgiCkBAIC0x
MzgsMyArMTQwLDUgQEAgaW50MzJfdCBWcDlGcmFtZUJ1ZmZlclBvb2w6OlZweFJlbGVhc2VGcmFt
ZUJ1ZmZlcih2b2lkKiB1c2VyX3ByaXYsCiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKwor
I2VuZGlmICAvLyBSVENfRU5BQkxFX1ZQOQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92
cDlfZnJhbWVfYnVmZmVyX3Bvb2wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZl
cl9wb29sLmgKaW5kZXggOWIwMzVlYjk0YWRlNzM3ZGVkM2IzNWJiNjdhMjdkY2Y5ODg5M2Y2Yy4u
MDJlZGUyNDMyOTU1ZmRlYTU3MmIxYzU5ZWNjYThmNTEzZjljM2E0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVmZmVyX3Bvb2wuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA5L3ZwOV9mcmFtZV9idWZmZXJfcG9vbC5oCkBAIC0xMiw2ICsxMiw4IEBACiAjaWZuZGVmIE1P
RFVMRVNfVklERU9fQ09ESU5HX0NPREVDU19WUDlfVlA5X0ZSQU1FX0JVRkZFUl9QT09MX0hfCiAj
ZGVmaW5lIE1PRFVMRVNfVklERU9fQ09ESU5HX0NPREVDU19WUDlfVlA5X0ZSQU1FX0JVRkZFUl9Q
T09MX0hfCiAKKyNpZmRlZiBSVENfRU5BQkxFX1ZQOQorCiAjaW5jbHVkZSA8dmVjdG9yPgogCiAj
aW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCkBAIC0xMjAsNCArMTIyLDYgQEAgY2xhc3MgVnA5
RnJhbWVCdWZmZXJQb29sIHsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCisjZW5kaWYgIC8v
IFJUQ19FTkFCTEVfVlA5CisKICNlbmRpZiAgLy8gTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNT
X1ZQOV9WUDlfRlJBTUVfQlVGRkVSX1BPT0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDkvdnA5X2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9pbXBsLmNjCmluZGV4IDZiOTgy
YThhMTMyMzg5ZDJhZWE1MWRmZWFhYzkyYmVkZjljMmFmN2YuLjYxNTQyYzUwODIxMTQ5NjI5N2Iz
NmNlY2RlNDc5NGI0NjI4NGU2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2lt
cGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfaW1wbC5jYwpAQCAtOSw2ICs5LDggQEAK
ICAqCiAgKi8KIAorI2lmZGVmIFJUQ19FTkFCTEVfVlA5CisKICNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9pbXBsLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+
CkBAIC0zNywxMSArMzksMTYgQEAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBuYW1lc3BhY2Ugewor
Y29uc3QgY2hhciBrVnA5VHJ1c3RlZFJhdGVDb250cm9sbGVyRmllbGRUcmlhbFtdID0KKyAgICAi
V2ViUlRDLUxpYnZweFZwOVRydXN0ZWRSYXRlQ29udHJvbGxlciI7CisKIC8vIE1hcHMgZnJvbSBn
b2ZfaWR4IHRvIGVuY29kZXIgaW50ZXJuYWwgcmVmZXJlbmNlIGZyYW1lIGJ1ZmZlciBpbmRleC4g
VGhlc2UKIC8vIG1hcHMgd29yayBmb3IgMSwyIGFuZCAzIHRlbXBvcmFsIGxheWVycyB3aXRoIEdP
RiBsZW5ndGggb2YgMSwyIGFuZCA0IGZyYW1lcy4KIHVpbnQ4X3Qga1JlZkJ1ZklkeFs0XSA9IHsw
LCAwLCAwLCAxfTsKIHVpbnQ4X3Qga1VwZEJ1ZklkeFs0XSA9IHswLCAwLCAxLCAwfTsKIAoraW50
IGtNYXhOdW1UaWxlczRrVmlkZW8gPSA4OworCiAvLyBPbmx5IHBvc2l0aXZlIHNwZWVkcywgcmFu
Z2UgZm9yIHJlYWwtdGltZSBjb2RpbmcgY3VycmVudGx5IGlzOiA1IC0gOC4KIC8vIExvd2VyIG1l
YW5zIHNsb3dlci9iZXR0ZXIgcXVhbGl0eSwgaGlnaGVyIG1lYW5zIGZhc3Rlc3QvbG93ZXIgcXVh
bGl0eS4KIGludCBHZXRDcHVTcGVlZChpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKQEAgLTExOSwy
MyArMTI2LDYgQEAgQ29sb3JTcGFjZSBFeHRyYWN0VlA5Q29sb3JTcGFjZSh2cHhfY29sb3Jfc3Bh
Y2VfdCBzcGFjZV90LAogfQogfSAgLy8gbmFtZXNwYWNlCiAKLXN0ZDo6dmVjdG9yPFNkcFZpZGVv
Rm9ybWF0PiBTdXBwb3J0ZWRWUDlDb2RlY3MoKSB7Ci0gIC8vIFRPRE8oZW1pcmNhbik6IEFkZCBQ
cm9maWxlIDIgc3VwcG9ydCBhZnRlciBmaXhpbmcgYnJvd3Nlcl90ZXN0cy4KLSAgc3RkOjp2ZWN0
b3I8U2RwVmlkZW9Gb3JtYXQ+IHN1cHBvcnRlZF9mb3JtYXRze1NkcFZpZGVvRm9ybWF0KAotICAg
ICAgY3JpY2tldDo6a1ZwOUNvZGVjTmFtZSwKLSAgICAgIHt7a1ZQOUZtdHBQcm9maWxlSWQsIFZQ
OVByb2ZpbGVUb1N0cmluZyhWUDlQcm9maWxlOjprUHJvZmlsZTApfX0pfTsKLSAgcmV0dXJuIHN1
cHBvcnRlZF9mb3JtYXRzOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8VlA5RW5jb2Rlcj4gVlA5RW5j
b2Rlcjo6Q3JlYXRlKCkgewotICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8VlA5RW5jb2Rlcklt
cGw+KGNyaWNrZXQ6OlZpZGVvQ29kZWMoKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxWUDlFbmNv
ZGVyPiBWUDlFbmNvZGVyOjpDcmVhdGUoCi0gICAgY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyYg
Y29kZWMpIHsKLSAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFZQOUVuY29kZXJJbXBsPihjb2Rl
Yyk7Ci19Ci0KIHZvaWQgVlA5RW5jb2RlckltcGw6OkVuY29kZXJPdXRwdXRDb2RlZFBhY2tldENh
bGxiYWNrKHZweF9jb2RlY19jeF9wa3QqIHBrdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHVzZXJfZGF0YSkgewogICBWUDlFbmNv
ZGVySW1wbCogZW5jID0gc3RhdGljX2Nhc3Q8VlA5RW5jb2RlckltcGwqPih1c2VyX2RhdGEpOwpA
QCAtMTYwLDEyICsxNTAsMTYgQEAgVlA5RW5jb2RlckltcGw6OlZQOUVuY29kZXJJbXBsKGNvbnN0
IGNyaWNrZXQ6OlZpZGVvQ29kZWMmIGNvZGVjKQogICAgICAgbnVtX3RlbXBvcmFsX2xheWVyc18o
MCksCiAgICAgICBudW1fc3BhdGlhbF9sYXllcnNfKDApLAogICAgICAgbnVtX2FjdGl2ZV9zcGF0
aWFsX2xheWVyc18oMCksCi0gICAgICBsYXllcl9kZWFjdGl2YXRpb25fcmVxdWlyZXNfa2V5X2Zy
YW1lXyh3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoCi0gICAgICAgICAgIldlYlJUQy1W
cDlJc3N1ZUtleUZyYW1lT25MYXllckRlYWN0aXZhdGlvbiIpKSwKKyAgICAgIGxheWVyX2RlYWN0
aXZhdGlvbl9yZXF1aXJlc19rZXlfZnJhbWVfKAorICAgICAgICAgIGZpZWxkX3RyaWFsOjpJc0Vu
YWJsZWQoIldlYlJUQy1WcDlJc3N1ZUtleUZyYW1lT25MYXllckRlYWN0aXZhdGlvbiIpKSwKICAg
ICAgIGlzX3N2Y18oZmFsc2UpLAogICAgICAgaW50ZXJfbGF5ZXJfcHJlZF8oSW50ZXJMYXllclBy
ZWRNb2RlOjprT24pLAogICAgICAgZXh0ZXJuYWxfcmVmX2NvbnRyb2xfKAotICAgICAgICAgIHdl
YnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVZwOUV4dGVybmFsUmVmQ3RybCIp
KSwKKyAgICAgICAgICBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtVnA5RXh0ZXJuYWxS
ZWZDdHJsIikpLAorICAgICAgdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXJfKAorICAgICAgICAgIGZp
ZWxkX3RyaWFsOjpJc0VuYWJsZWQoa1ZwOVRydXN0ZWRSYXRlQ29udHJvbGxlckZpZWxkVHJpYWwp
KSwKKyAgICAgIGZ1bGxfc3VwZXJmcmFtZV9kcm9wXyh0cnVlKSwKKyAgICAgIGZpcnN0X2ZyYW1l
X2luX3BpY3R1cmVfKHRydWUpLAogICAgICAgaXNfZmxleGlibGVfbW9kZV8oZmFsc2UpIHsKICAg
bWVtc2V0KCZjb2RlY18sIDAsIHNpemVvZihjb2RlY18pKTsKICAgbWVtc2V0KCZzdmNfcGFyYW1z
XywgMCwgc2l6ZW9mKHZweF9zdmNfZXh0cmFfY2ZnX3QpKTsKQEAgLTYyNyw3ICs2MjEsOCBAQCBp
bnQgVlA5RW5jb2RlckltcGw6OkluaXRBbmRTZXRDb250cm9sU2V0dGluZ3MoY29uc3QgVmlkZW9D
b2RlYyogaW5zdCkgewogICAgIC8vIHF1YWxpdHkgZmxpY2tlcmluZyBhbmQgaXMgbm90IGNvbXBh
dGlibGUgd2l0aCBSVFAgbm9uLWZsZXhpYmxlIG1vZGUuCiAgICAgdnB4X3N2Y19mcmFtZV9kcm9w
X3Qgc3ZjX2Ryb3BfZnJhbWU7CiAgICAgbWVtc2V0KCZzdmNfZHJvcF9mcmFtZSwgMCwgc2l6ZW9m
KHN2Y19kcm9wX2ZyYW1lKSk7Ci0gICAgc3ZjX2Ryb3BfZnJhbWUuZnJhbWVkcm9wX21vZGUgPSBG
VUxMX1NVUEVSRlJBTUVfRFJPUDsKKyAgICBzdmNfZHJvcF9mcmFtZS5mcmFtZWRyb3BfbW9kZSA9
CisgICAgICAgIGZ1bGxfc3VwZXJmcmFtZV9kcm9wXyA/IEZVTExfU1VQRVJGUkFNRV9EUk9QIDog
Q09OU1RSQUlORURfTEFZRVJfRFJPUDsKICAgICBzdmNfZHJvcF9mcmFtZS5tYXhfY29uc2VjX2Ry
b3AgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtX3NwYXRpYWxfbGF5ZXJzXzsgKytpKSB7CiAgICAgICBzdmNfZHJvcF9mcmFt
ZS5mcmFtZWRyb3BfdGhyZXNoW2ldID0gY29uZmlnXy0+cmNfZHJvcGZyYW1lX3RocmVzaDsKQEAg
LTcwMSwzMCArNjk2LDMzIEBAIGludCBWUDlFbmNvZGVySW1wbDo6RW5jb2RlKGNvbnN0IFZpZGVv
RnJhbWUmIGlucHV0X2ltYWdlLAogICAgIH0KICAgfQogCi0gIGlmIChWaWRlb0NvZGVjTW9kZTo6
a1NjcmVlbnNoYXJpbmcgPT0gY29kZWNfLm1vZGUgJiYgIWZvcmNlX2tleV9mcmFtZV8pIHsKLSAg
ICAvLyBTa2lwIGVuY29kaW5nIHNwYXRpYWwgbGF5ZXIgZnJhbWVzIGlmIHRoZWlyIHRhcmdldCBm
cmFtZSByYXRlIGlzIGxvd2VyCi0gICAgLy8gdGhhbiBhY3R1YWwgaW5wdXQgZnJhbWUgcmF0ZS4K
KyAgc2l6ZV90IGZpcnN0X2FjdGl2ZV9zcGF0aWFsX2xheWVyX2lkID0gMDsKKyAgaWYgKFZpZGVv
Q29kZWNNb2RlOjprU2NyZWVuc2hhcmluZyA9PSBjb2RlY18ubW9kZSkgewogICAgIHZweF9zdmNf
bGF5ZXJfaWRfdCBsYXllcl9pZCA9IHswfTsKLSAgICBjb25zdCBzaXplX3QgZ29mX2lkeCA9IChw
aWNzX3NpbmNlX2tleV8gKyAxKSAlIGdvZl8ubnVtX2ZyYW1lc19pbl9nb2Y7Ci0gICAgbGF5ZXJf
aWQudGVtcG9yYWxfbGF5ZXJfaWQgPSBnb2ZfLnRlbXBvcmFsX2lkeFtnb2ZfaWR4XTsKKyAgICBp
ZiAoIWZvcmNlX2tleV9mcmFtZV8pIHsKKyAgICAgIC8vIFNraXAgZW5jb2Rpbmcgc3BhdGlhbCBs
YXllciBmcmFtZXMgaWYgdGhlaXIgdGFyZ2V0IGZyYW1lIHJhdGUgaXMgbG93ZXIKKyAgICAgIC8v
IHRoYW4gYWN0dWFsIGlucHV0IGZyYW1lIHJhdGUuCisgICAgICBjb25zdCBzaXplX3QgZ29mX2lk
eCA9IChwaWNzX3NpbmNlX2tleV8gKyAxKSAlIGdvZl8ubnVtX2ZyYW1lc19pbl9nb2Y7CisgICAg
ICBsYXllcl9pZC50ZW1wb3JhbF9sYXllcl9pZCA9IGdvZl8udGVtcG9yYWxfaWR4W2dvZl9pZHhd
OwogCi0gICAgY29uc3QgdWludDMyX3QgZnJhbWVfdGltZXN0YW1wX21zID0KLSAgICAgICAgMTAw
MCAqIGlucHV0X2ltYWdlLnRpbWVzdGFtcCgpIC8ga1ZpZGVvUGF5bG9hZFR5cGVGcmVxdWVuY3k7
CisgICAgICBjb25zdCB1aW50MzJfdCBmcmFtZV90aW1lc3RhbXBfbXMgPQorICAgICAgICAgIDEw
MDAgKiBpbnB1dF9pbWFnZS50aW1lc3RhbXAoKSAvIGtWaWRlb1BheWxvYWRUeXBlRnJlcXVlbmN5
OwogCi0gICAgZm9yICh1aW50OF90IHNsX2lkeCA9IDA7IHNsX2lkeCA8IG51bV9hY3RpdmVfc3Bh
dGlhbF9sYXllcnNfOyArK3NsX2lkeCkgewotICAgICAgaWYgKGZyYW1lcmF0ZV9jb250cm9sbGVy
X1tzbF9pZHhdLkRyb3BGcmFtZShmcmFtZV90aW1lc3RhbXBfbXMpKSB7Ci0gICAgICAgICsrbGF5
ZXJfaWQuc3BhdGlhbF9sYXllcl9pZDsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgZm9yICh1aW50OF90IHNsX2lkeCA9IDA7IHNsX2lkeCA8IG51bV9hY3RpdmVfc3BhdGlh
bF9sYXllcnNfOyArK3NsX2lkeCkgeworICAgICAgICBpZiAoZnJhbWVyYXRlX2NvbnRyb2xsZXJf
W3NsX2lkeF0uRHJvcEZyYW1lKGZyYW1lX3RpbWVzdGFtcF9tcykpIHsKKyAgICAgICAgICArK2xh
eWVyX2lkLnNwYXRpYWxfbGF5ZXJfaWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgIH0KLSAgICB9CiAKLSAgICBSVENfRENIRUNLX0xFKGxheWVy
X2lkLnNwYXRpYWxfbGF5ZXJfaWQsIG51bV9hY3RpdmVfc3BhdGlhbF9sYXllcnNfKTsKLSAgICBp
ZiAobGF5ZXJfaWQuc3BhdGlhbF9sYXllcl9pZCA+PSBudW1fYWN0aXZlX3NwYXRpYWxfbGF5ZXJz
XykgewotICAgICAgLy8gRHJvcCBlbnRpcmUgcGljdHVyZS4KLSAgICAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfT0s7CisgICAgICBSVENfRENIRUNLX0xFKGxheWVyX2lkLnNwYXRpYWxfbGF5
ZXJfaWQsIG51bV9hY3RpdmVfc3BhdGlhbF9sYXllcnNfKTsKKyAgICAgIGlmIChsYXllcl9pZC5z
cGF0aWFsX2xheWVyX2lkID49IG51bV9hY3RpdmVfc3BhdGlhbF9sYXllcnNfKSB7CisgICAgICAg
IC8vIERyb3AgZW50aXJlIHBpY3R1cmUuCisgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09E
RUNfT0s7CisgICAgICB9CiAgICAgfQotCisgICAgZmlyc3RfYWN0aXZlX3NwYXRpYWxfbGF5ZXJf
aWQgPSBsYXllcl9pZC5zcGF0aWFsX2xheWVyX2lkOwogICAgIHZweF9jb2RlY19jb250cm9sKGVu
Y29kZXJfLCBWUDlFX1NFVF9TVkNfTEFZRVJfSUQsICZsYXllcl9pZCk7CiAgIH0KIApAQCAtNzg1
LDEwICs3ODMsMjEgQEAgaW50IFZQOUVuY29kZXJJbXBsOjpFbmNvZGUoY29uc3QgVmlkZW9GcmFt
ZSYgaW5wdXRfaW1hZ2UsCiAgIH0KIAogICBpZiAoZXh0ZXJuYWxfcmVmX2NvbnRyb2xfKSB7Ci0g
ICAgdnB4X3N2Y19yZWZfZnJhbWVfY29uZmlnX3QgcmVmX2NvbmZpZyA9IFNldFJlZmVyZW5jZXMo
Zm9yY2Vfa2V5X2ZyYW1lXyk7CisgICAgdnB4X3N2Y19yZWZfZnJhbWVfY29uZmlnX3QgcmVmX2Nv
bmZpZyA9CisgICAgICAgIFNldFJlZmVyZW5jZXMoZm9yY2Vfa2V5X2ZyYW1lXywgZmlyc3RfYWN0
aXZlX3NwYXRpYWxfbGF5ZXJfaWQpOworCisgICAgaWYgKFZpZGVvQ29kZWNNb2RlOjprU2NyZWVu
c2hhcmluZyA9PSBjb2RlY18ubW9kZSkgeworICAgICAgZm9yICh1aW50OF90IHNsX2lkeCA9IDA7
IHNsX2lkeCA8IG51bV9hY3RpdmVfc3BhdGlhbF9sYXllcnNfOyArK3NsX2lkeCkgeworICAgICAg
ICByZWZfY29uZmlnLmR1cmF0aW9uW3NsX2lkeF0gPSBzdGF0aWNfY2FzdDxpbnQ2NF90PigKKyAg
ICAgICAgICAgIDkwMDAwIC8gZnJhbWVyYXRlX2NvbnRyb2xsZXJfW3NsX2lkeF0uR2V0VGFyZ2V0
UmF0ZSgpKTsKKyAgICAgIH0KKyAgICB9CisKICAgICB2cHhfY29kZWNfY29udHJvbChlbmNvZGVy
XywgVlA5RV9TRVRfU1ZDX1JFRl9GUkFNRV9DT05GSUcsICZyZWZfY29uZmlnKTsKICAgfQogCisg
IGZpcnN0X2ZyYW1lX2luX3BpY3R1cmVfID0gdHJ1ZTsKKwogICAvLyBUT0RPKHNzaWxraW4pOiBG
cmFtZSBkdXJhdGlvbiBzaG91bGQgYmUgc3BlY2lmaWVkIHBlciBzcGF0aWFsIGxheWVyCiAgIC8v
IHNpbmNlIHRoZWlyIGZyYW1lIHJhdGUgY2FuIGJlIGRpZmZlcmVudC4gRm9yIG5vdyBjYWxjdWxh
dGUgZnJhbWUgZHVyYXRpb24KICAgLy8gYmFzZWQgb24gdGFyZ2V0IGZyYW1lIHJhdGUgb2YgdGhl
IGhpZ2hlc3Qgc3BhdGlhbCBsYXllciwgd2hpY2ggZnJhbWUgcmF0ZQpAQCAtODE0LDggKzgyMywx
MCBAQCBpbnQgVlA5RW5jb2RlckltcGw6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9p
bWFnZSwKICAgfQogICB0aW1lc3RhbXBfICs9IGR1cmF0aW9uOwogCi0gIGNvbnN0IGJvb2wgZW5k
X29mX3BpY3R1cmUgPSB0cnVlOwotICBEZWxpdmVyQnVmZmVyZWRGcmFtZShlbmRfb2ZfcGljdHVy
ZSk7CisgIGlmICghZnVsbF9zdXBlcmZyYW1lX2Ryb3BfKSB7CisgICAgY29uc3QgYm9vbCBlbmRf
b2ZfcGljdHVyZSA9IHRydWU7CisgICAgRGVsaXZlckJ1ZmZlcmVkRnJhbWUoZW5kX29mX3BpY3R1
cmUpOworICB9CiAKICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKIH0KQEAgLTgyMywx
NCArODM0LDEyIEBAIGludCBWUDlFbmNvZGVySW1wbDo6RW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUm
IGlucHV0X2ltYWdlLAogdm9pZCBWUDlFbmNvZGVySW1wbDo6UG9wdWxhdGVDb2RlY1NwZWNpZmlj
KENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpYywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+KiBzcGF0aWFsX2lkeCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2cHhfY29k
ZWNfY3hfcGt0JiBwa3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZmlyc3RfZnJhbWVfaW5fcGljdHVyZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVzdGFtcCkgewogICBSVENf
Q0hFQ0soY29kZWNfc3BlY2lmaWMgIT0gbnVsbHB0cik7CiAgIGNvZGVjX3NwZWNpZmljLT5jb2Rl
Y1R5cGUgPSBrVmlkZW9Db2RlY1ZQOTsKLSAgY29kZWNfc3BlY2lmaWMtPmNvZGVjX25hbWUgPSBJ
bXBsZW1lbnRhdGlvbk5hbWUoKTsKICAgQ29kZWNTcGVjaWZpY0luZm9WUDkqIHZwOV9pbmZvID0g
Jihjb2RlY19zcGVjaWZpYy0+Y29kZWNTcGVjaWZpYy5WUDkpOwogCi0gIHZwOV9pbmZvLT5maXJz
dF9mcmFtZV9pbl9waWN0dXJlID0gZmlyc3RfZnJhbWVfaW5fcGljdHVyZTsKKyAgdnA5X2luZm8t
PmZpcnN0X2ZyYW1lX2luX3BpY3R1cmUgPSBmaXJzdF9mcmFtZV9pbl9waWN0dXJlXzsKICAgdnA5
X2luZm8tPmZsZXhpYmxlX21vZGUgPSBpc19mbGV4aWJsZV9tb2RlXzsKICAgdnA5X2luZm8tPnNz
X2RhdGFfYXZhaWxhYmxlID0KICAgICAgIChwa3QuZGF0YS5mcmFtZS5mbGFncyAmIFZQWF9GUkFN
RV9JU19LRVkpID8gdHJ1ZSA6IGZhbHNlOwpAQCAtODYxLDcgKzg3MCw3IEBAIHZvaWQgVlA5RW5j
b2RlckltcGw6OlBvcHVsYXRlQ29kZWNTcGVjaWZpYyhDb2RlY1NwZWNpZmljSW5mbyogY29kZWNf
c3BlY2lmaWMsCiAKICAgaWYgKHBrdC5kYXRhLmZyYW1lLmZsYWdzICYgVlBYX0ZSQU1FX0lTX0tF
WSkgewogICAgIHBpY3Nfc2luY2Vfa2V5XyA9IDA7Ci0gIH0gZWxzZSBpZiAoZmlyc3RfZnJhbWVf
aW5fcGljdHVyZSkgeworICB9IGVsc2UgaWYgKGZpcnN0X2ZyYW1lX2luX3BpY3R1cmVfKSB7CiAg
ICAgKytwaWNzX3NpbmNlX2tleV87CiAgIH0KIApAQCAtODc3LDcgKzg4Niw3IEBAIHZvaWQgVlA5
RW5jb2RlckltcGw6OlBvcHVsYXRlQ29kZWNTcGVjaWZpYyhDb2RlY1NwZWNpZmljSW5mbyogY29k
ZWNfc3BlY2lmaWMsCiAgIC8vIGlmIGxvdyBsYXllciBmcmFtZSBpcyBsb3N0KSB0aGVuIHJlY2Vp
dmVyIHdvbid0IGJlIGFibGUgdG8gZGVjb2RlIG5leHQgaGlnaAogICAvLyBsYXllciBmcmFtZSB3
aGljaCB1c2VzIElMUC4KICAgdnA5X2luZm8tPmludGVyX2xheWVyX3ByZWRpY3RlZCA9Ci0gICAg
ICBmaXJzdF9mcmFtZV9pbl9waWN0dXJlID8gZmFsc2UgOiBpc19pbnRlcl9sYXllcl9wcmVkX2Fs
bG93ZWQ7CisgICAgICBmaXJzdF9mcmFtZV9pbl9waWN0dXJlXyA/IGZhbHNlIDogaXNfaW50ZXJf
bGF5ZXJfcHJlZF9hbGxvd2VkOwogCiAgIC8vIE1hcmsgYWxsIGxvdyBzcGF0aWFsIGxheWVyIGZy
YW1lcyBhcyByZWZlcmVuY2VzIChub3QganVzdCBmcmFtZXMgb2YKICAgLy8gYWN0aXZlIGxvdyBz
cGF0aWFsIGxheWVycykgaWYgaW50ZXItbGF5ZXIgcHJlZGljdGlvbiBpcyBlbmFibGVkIHNpbmNl
CkBAIC05MjEsNiArOTMwLDggQEAgdm9pZCBWUDlFbmNvZGVySW1wbDo6UG9wdWxhdGVDb2RlY1Nw
ZWNpZmljKENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpYywKICAgICAgIHZwOV9pbmZv
LT5nb2YuQ29weUdvZkluZm9WUDkoZ29mXyk7CiAgICAgfQogICB9CisKKyAgZmlyc3RfZnJhbWVf
aW5fcGljdHVyZV8gPSBmYWxzZTsKIH0KIAogdm9pZCBWUDlFbmNvZGVySW1wbDo6RmlsbFJlZmVy
ZW5jZUluZGljZXMoY29uc3QgdnB4X2NvZGVjX2N4X3BrdCYgcGt0LApAQCAtOTc4LDYgKzk4OSw4
IEBAIHZvaWQgVlA5RW5jb2RlckltcGw6OkZpbGxSZWZlcmVuY2VJbmRpY2VzKGNvbnN0IHZweF9j
b2RlY19jeF9wa3QmIHBrdCwKIAogICBzaXplX3QgbWF4X3JlZl90ZW1wb3JhbF9sYXllcl9pZCA9
IDA7CiAKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiByZWZfcGlkX2xpc3Q7CisKICAgdnA5X2luZm8t
Pm51bV9yZWZfcGljcyA9IDA7CiAgIGZvciAoY29uc3QgUmVmRnJhbWVCdWZmZXImIHJlZl9idWYg
OiByZWZfYnVmX2xpc3QpIHsKICAgICBSVENfRENIRUNLX0xFKHJlZl9idWYucGljX251bSwgcGlj
X251bSk7CkBAIC05OTAsNiArMTAwMywxNiBAQCB2b2lkIFZQOUVuY29kZXJJbXBsOjpGaWxsUmVm
ZXJlbmNlSW5kaWNlcyhjb25zdCB2cHhfY29kZWNfY3hfcGt0JiBwa3QsCiAgICAgICB9CiAgICAg
ICBSVENfRENIRUNLX0xFKHJlZl9idWYudGVtcG9yYWxfbGF5ZXJfaWQsIGxheWVyX2lkLnRlbXBv
cmFsX2xheWVyX2lkKTsKIAorICAgICAgLy8gRW5jb2RlciBtYXkgcmVmZXJlbmNlIHNldmVyYWwg
c3BhdGlhbCBsYXllcnMgb24gdGhlIHNhbWUgcHJldmlvdXMKKyAgICAgIC8vIGZyYW1lIGluIGNh
c2UgaWYgc29tZSBzcGF0aWFsIGxheWVycyBhcmUgc2tpcHBlZCBvbiB0aGUgY3VycmVudCBmcmFt
ZS4KKyAgICAgIC8vIFdlIHNob3VsZG4ndCBwdXQgZHVwbGljYXRlIHJlZmVyZW5jZXMgYXMgaXQg
bWF5IGJyZWFrIHNvbWUgb2xkCisgICAgICAvLyBjbGllbnRzIGFuZCBpc24ndCBSVFAgY29tcGF0
aWJsZS4KKyAgICAgIGlmIChzdGQ6OmZpbmQocmVmX3BpZF9saXN0LmJlZ2luKCksIHJlZl9waWRf
bGlzdC5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgcmVmX2J1Zi5waWNfbnVtKSAhPSByZWZf
cGlkX2xpc3QuZW5kKCkpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICByZWZf
cGlkX2xpc3QucHVzaF9iYWNrKHJlZl9idWYucGljX251bSk7CisKICAgICAgIGNvbnN0IHNpemVf
dCBwX2RpZmYgPSBwaWNfbnVtIC0gcmVmX2J1Zi5waWNfbnVtOwogICAgICAgUlRDX0RDSEVDS19M
RShwX2RpZmYsIDEyN1VMKTsKIApAQCAtMTA1NCw3ICsxMDc3LDkgQEAgdm9pZCBWUDlFbmNvZGVy
SW1wbDo6VXBkYXRlUmVmZXJlbmNlQnVmZmVycyhjb25zdCB2cHhfY29kZWNfY3hfcGt0JiBwa3Qs
CiAgIH0KIH0KIAotdnB4X3N2Y19yZWZfZnJhbWVfY29uZmlnX3QgVlA5RW5jb2RlckltcGw6OlNl
dFJlZmVyZW5jZXMoYm9vbCBpc19rZXlfcGljKSB7Cit2cHhfc3ZjX3JlZl9mcmFtZV9jb25maWdf
dCBWUDlFbmNvZGVySW1wbDo6U2V0UmVmZXJlbmNlcygKKyAgICBib29sIGlzX2tleV9waWMsCisg
ICAgc2l6ZV90IGZpcnN0X2FjdGl2ZV9zcGF0aWFsX2xheWVyX2lkKSB7CiAgIC8vIGtSZWZCdWZJ
ZHgsIGtVcGRCdWZJZHggbmVlZCB0byBiZSB1cGRhdGVkIHRvIHN1cHBvcnQgbG9uZ2VyIEdPRnMu
CiAgIFJUQ19EQ0hFQ0tfTEUoZ29mXy5udW1fZnJhbWVzX2luX2dvZiwgNCk7CiAKQEAgLTExMDYs
MTMgKzExMzEsMTQgQEAgdnB4X3N2Y19yZWZfZnJhbWVfY29uZmlnX3QgVlA5RW5jb2RlckltcGw6
OlNldFJlZmVyZW5jZXMoYm9vbCBpc19rZXlfcGljKSB7CiAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKGlzX2ludGVyX2xheWVyX3ByZWRfYWxsb3dlZCAmJiBzbF9pZHggPiAwKSB7CisgICAgaWYg
KGlzX2ludGVyX2xheWVyX3ByZWRfYWxsb3dlZCAmJiBzbF9pZHggPiBmaXJzdF9hY3RpdmVfc3Bh
dGlhbF9sYXllcl9pZCkgewogICAgICAgLy8gU2V0IHVwIHNwYXRpYWwgcmVmZXJlbmNlLgogICAg
ICAgUlRDX0RDSEVDSyhsYXN0X3VwZGF0ZWRfYnVmX2lkeCk7CiAgICAgICByZWZfY29uZmlnLmds
ZF9mYl9pZHhbc2xfaWR4XSA9ICpsYXN0X3VwZGF0ZWRfYnVmX2lkeDsKICAgICAgIHJlZl9jb25m
aWcucmVmZXJlbmNlX2dvbGRlbltzbF9pZHhdID0gMTsKICAgICB9IGVsc2UgewotICAgICAgUlRD
X0RDSEVDSyhyZWZfY29uZmlnLnJlZmVyZW5jZV9sYXN0W3NsX2lkeF0gIT0gMCB8fCBzbF9pZHgg
PT0gMCB8fAorICAgICAgUlRDX0RDSEVDSyhyZWZfY29uZmlnLnJlZmVyZW5jZV9sYXN0W3NsX2lk
eF0gIT0gMCB8fAorICAgICAgICAgICAgICAgICBzbF9pZHggPT0gZmlyc3RfYWN0aXZlX3NwYXRp
YWxfbGF5ZXJfaWQgfHwKICAgICAgICAgICAgICAgICAgaW50ZXJfbGF5ZXJfcHJlZF8gPT0gSW50
ZXJMYXllclByZWRNb2RlOjprT2ZmKTsKICAgICB9CiAKQEAgLTExNDcsMTIgKzExNzMsMTEgQEAg
aW50IFZQOUVuY29kZXJJbXBsOjpHZXRFbmNvZGVkTGF5ZXJGcmFtZShjb25zdCB2cHhfY29kZWNf
Y3hfcGt0KiBwa3QpIHsKICAgdnB4X3N2Y19sYXllcl9pZF90IGxheWVyX2lkID0gezB9OwogICB2
cHhfY29kZWNfY29udHJvbChlbmNvZGVyXywgVlA5RV9HRVRfU1ZDX0xBWUVSX0lELCAmbGF5ZXJf
aWQpOwogCi0gIGNvbnN0IGJvb2wgZmlyc3RfZnJhbWVfaW5fcGljdHVyZSA9IGVuY29kZWRfaW1h
Z2VfLl9sZW5ndGggPT0gMDsKLSAgLy8gRW5zdXJlIHdlIGRvbid0IGJ1ZmZlciBsYXllcnMgb2Yg
cHJldmlvdXMgcGljdHVyZSAoc3VwZXJmcmFtZSkuCi0gIFJUQ19EQ0hFQ0soZmlyc3RfZnJhbWVf
aW5fcGljdHVyZSB8fCBsYXllcl9pZC5zcGF0aWFsX2xheWVyX2lkID4gMCk7Ci0KLSAgY29uc3Qg
Ym9vbCBlbmRfb2ZfcGljdHVyZSA9IGZhbHNlOwotICBEZWxpdmVyQnVmZmVyZWRGcmFtZShlbmRf
b2ZfcGljdHVyZSk7CisgIGlmICghZnVsbF9zdXBlcmZyYW1lX2Ryb3BfKSB7CisgICAgLy8gRGVs
aXZlciBidWZmZXJlZCBsb3cgc3BhdGlhbCBsYXllciBmcmFtZS4KKyAgICBjb25zdCBib29sIGVu
ZF9vZl9waWN0dXJlID0gZmFsc2U7CisgICAgRGVsaXZlckJ1ZmZlcmVkRnJhbWUoZW5kX29mX3Bp
Y3R1cmUpOworICB9CiAKICAgaWYgKHBrdC0+ZGF0YS5mcmFtZS5zeiA+IGVuY29kZWRfaW1hZ2Vf
Ll9zaXplKSB7CiAgICAgZGVsZXRlW10gZW5jb2RlZF9pbWFnZV8uX2J1ZmZlcjsKQEAgLTExNzgs
NyArMTIwMyw3IEBAIGludCBWUDlFbmNvZGVySW1wbDo6R2V0RW5jb2RlZExheWVyRnJhbWUoY29u
c3QgdnB4X2NvZGVjX2N4X3BrdCogcGt0KSB7CiAgIG1lbXNldCgmY29kZWNfc3BlY2lmaWNfLCAw
LCBzaXplb2YoY29kZWNfc3BlY2lmaWNfKSk7CiAgIGFic2w6Om9wdGlvbmFsPGludD4gc3BhdGlh
bF9pbmRleDsKICAgUG9wdWxhdGVDb2RlY1NwZWNpZmljKCZjb2RlY19zcGVjaWZpY18sICZzcGF0
aWFsX2luZGV4LCAqcGt0LAotICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaW1hZ2VfLT50
aW1lc3RhbXAoKSwgZmlyc3RfZnJhbWVfaW5fcGljdHVyZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpbnB1dF9pbWFnZV8tPnRpbWVzdGFtcCgpKTsKICAgZW5jb2RlZF9pbWFnZV8uU2V0U3Bh
dGlhbEluZGV4KHNwYXRpYWxfaW5kZXgpOwogCiAgIGlmIChpc19mbGV4aWJsZV9tb2RlXykgewpA
QCAtMTIwMCw2ICsxMjI1LDEzIEBAIGludCBWUDlFbmNvZGVySW1wbDo6R2V0RW5jb2RlZExheWVy
RnJhbWUoY29uc3QgdnB4X2NvZGVjX2N4X3BrdCogcGt0KSB7CiAgIGludCBxcCA9IC0xOwogICB2
cHhfY29kZWNfY29udHJvbChlbmNvZGVyXywgVlA4RV9HRVRfTEFTVF9RVUFOVElaRVIsICZxcCk7
CiAgIGVuY29kZWRfaW1hZ2VfLnFwXyA9IHFwOworICBlbmNvZGVkX2ltYWdlXy5TZXRDb2xvclNw
YWNlKGlucHV0X2ltYWdlXy0+Y29sb3Jfc3BhY2UoKSk7CisKKyAgaWYgKGZ1bGxfc3VwZXJmcmFt
ZV9kcm9wXykgeworICAgIGNvbnN0IGJvb2wgZW5kX29mX3BpY3R1cmUgPSBlbmNvZGVkX2ltYWdl
Xy5TcGF0aWFsSW5kZXgoKS52YWx1ZV9vcigwKSArIDEgPT0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVtX2FjdGl2ZV9zcGF0aWFsX2xheWVyc187CisgICAgRGVsaXZlckJ1ZmZl
cmVkRnJhbWUoZW5kX29mX3BpY3R1cmUpOworICB9CiAKICAgcmV0dXJuIFdFQlJUQ19WSURFT19D
T0RFQ19PSzsKIH0KQEAgLTEyMzAsMjIgKzEyNjIsMTkgQEAgdm9pZCBWUDlFbmNvZGVySW1wbDo6
RGVsaXZlckJ1ZmZlcmVkRnJhbWUoYm9vbCBlbmRfb2ZfcGljdHVyZSkgewogICB9CiB9CiAKLWlu
dCBWUDlFbmNvZGVySW1wbDo6U2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xv
c3MsIGludDY0X3QgcnR0KSB7Ci0gIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Ci19Ci0K
IGludCBWUDlFbmNvZGVySW1wbDo6UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKAogICAg
IEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgewogICBlbmNvZGVkX2NvbXBsZXRlX2Nh
bGxiYWNrXyA9IGNhbGxiYWNrOwogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQog
Ci1jb25zdCBjaGFyKiBWUDlFbmNvZGVySW1wbDo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qg
ewotICByZXR1cm4gImxpYnZweCI7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxWUDlEZWNvZGVyPiBW
UDlEZWNvZGVyOjpDcmVhdGUoKSB7Ci0gIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxWUDlEZWNv
ZGVySW1wbD4oKTsKK1ZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gVlA5RW5jb2RlckltcGw6Okdl
dEVuY29kZXJJbmZvKCkgY29uc3QgeworICBFbmNvZGVySW5mbyBpbmZvOworICBpbmZvLnN1cHBv
cnRzX25hdGl2ZV9oYW5kbGUgPSBmYWxzZTsKKyAgaW5mby5pbXBsZW1lbnRhdGlvbl9uYW1lID0g
ImxpYnZweCI7CisgIGluZm8uc2NhbGluZ19zZXR0aW5ncyA9IFZpZGVvRW5jb2Rlcjo6U2NhbGlu
Z1NldHRpbmdzOjprT2ZmOworICBpbmZvLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlciA9IHRy
dXN0ZWRfcmF0ZV9jb250cm9sbGVyXzsKKyAgcmV0dXJuIGluZm87CiB9CiAKIFZQOURlY29kZXJJ
bXBsOjpWUDlEZWNvZGVySW1wbCgpCkBAIC0xMjcyLDEzICsxMzAxLDE4IEBAIGludCBWUDlEZWNv
ZGVySW1wbDo6SW5pdERlY29kZShjb25zdCBWaWRlb0NvZGVjKiBpbnN0LCBpbnQgbnVtYmVyX29m
X2NvcmVzKSB7CiAgIGlmIChyZXRfdmFsIDwgMCkgewogICAgIHJldHVybiByZXRfdmFsOwogICB9
CisKICAgaWYgKGRlY29kZXJfID09IG51bGxwdHIpIHsKICAgICBkZWNvZGVyXyA9IG5ldyB2cHhf
Y29kZWNfY3R4X3Q7CiAgIH0KICAgdnB4X2NvZGVjX2RlY19jZmdfdCBjZmc7Ci0gIC8vIFNldHRp
bmcgbnVtYmVyIG9mIHRocmVhZHMgdG8gYSBjb25zdGFudCB2YWx1ZSAoMSkKLSAgY2ZnLnRocmVh
ZHMgPSAxOwotICBjZmcuaCA9IGNmZy53ID0gMDsgIC8vIHNldCBhZnRlciBkZWNvZGUKKyAgbWVt
c2V0KCZjZmcsIDAsIHNpemVvZihjZmcpKTsKKworICAvLyBXZSB3YW50IHRvIHVzZSBtdWx0aXRo
cmVhZGluZyB3aGVuIGRlY29kaW5nIGhpZ2ggcmVzb2x1dGlvbiB2aWRlb3MuIEJ1dCwKKyAgLy8g
c2luY2Ugd2UgZG9uJ3Qga25vdyByZXNvbHV0aW9uIG9mIGlucHV0IHN0cmVhbSBhdCB0aGlzIHN0
YWdlLCB3ZSBhbHdheXMKKyAgLy8gZW5hYmxlIGl0LgorICBjZmcudGhyZWFkcyA9IHN0ZDo6bWlu
KG51bWJlcl9vZl9jb3Jlcywga01heE51bVRpbGVzNGtWaWRlbyk7CisKICAgdnB4X2NvZGVjX2Zs
YWdzX3QgZmxhZ3MgPSAwOwogICBpZiAodnB4X2NvZGVjX2RlY19pbml0KGRlY29kZXJfLCB2cHhf
Y29kZWNfdnA5X2R4KCksICZjZmcsIGZsYWdzKSkgewogICAgIHJldHVybiBXRUJSVENfVklERU9f
Q09ERUNfTUVNT1JZOwpAQCAtMTMzNiw4ICsxMzcwLDggQEAgaW50IFZQOURlY29kZXJJbXBsOjpE
ZWNvZGUoY29uc3QgRW5jb2RlZEltYWdlJiBpbnB1dF9pbWFnZSwKICAgdnB4X2NvZGVjX2Vycl90
IHZweF9yZXQgPQogICAgICAgdnB4X2NvZGVjX2NvbnRyb2woZGVjb2Rlcl8sIFZQWERfR0VUX0xB
U1RfUVVBTlRJWkVSLCAmcXApOwogICBSVENfRENIRUNLX0VRKHZweF9yZXQsIFZQWF9DT0RFQ19P
Syk7Ci0gIGludCByZXQgPQotICAgICAgUmV0dXJuRnJhbWUoaW1nLCBpbnB1dF9pbWFnZS5UaW1l
c3RhbXAoKSwgaW5wdXRfaW1hZ2UubnRwX3RpbWVfbXNfLCBxcCk7CisgIGludCByZXQgPSBSZXR1
cm5GcmFtZShpbWcsIGlucHV0X2ltYWdlLlRpbWVzdGFtcCgpLCBpbnB1dF9pbWFnZS5udHBfdGlt
ZV9tc18sCisgICAgICAgICAgICAgICAgICAgICAgICBxcCwgaW5wdXRfaW1hZ2UuQ29sb3JTcGFj
ZSgpKTsKICAgaWYgKHJldCAhPSAwKSB7CiAgICAgcmV0dXJuIHJldDsKICAgfQpAQCAtMTM0Nyw3
ICsxMzgxLDggQEAgaW50IFZQOURlY29kZXJJbXBsOjpEZWNvZGUoY29uc3QgRW5jb2RlZEltYWdl
JiBpbnB1dF9pbWFnZSwKIGludCBWUDlEZWNvZGVySW1wbDo6UmV0dXJuRnJhbWUoY29uc3QgdnB4
X2ltYWdlX3QqIGltZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
dGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG50cF90
aW1lX21zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcXApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHFwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDb2xvclNwYWNlKiBleHBsaWNpdF9jb2xvcl9zcGFjZSkgewogICBp
ZiAoaW1nID09IG51bGxwdHIpIHsKICAgICAvLyBEZWNvZGVyIE9LIGFuZCBudWxscHRyIGltYWdl
ID0+IE5vIHNob3cgZnJhbWUuCiAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19OT19PVVRQ
VVQ7CkBAIC0xMzg5LDE1ICsxNDI0LDIxIEBAIGludCBWUDlEZWNvZGVySW1wbDo6UmV0dXJuRnJh
bWUoY29uc3QgdnB4X2ltYWdlX3QqIGltZywKICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09E
RUNfTk9fT1VUUFVUOwogICB9CiAKLSAgVmlkZW9GcmFtZSBkZWNvZGVkX2ltYWdlID0gVmlkZW9G
cmFtZTo6QnVpbGRlcigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0X3Zp
ZGVvX2ZyYW1lX2J1ZmZlcihpbWdfd3JhcHBlZF9idWZmZXIpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAuc2V0X3RpbWVzdGFtcF9tcygwKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLnNldF90aW1lc3RhbXBfcnRwKHRpbWVzdGFtcCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC5zZXRfbnRwX3RpbWVfbXMobnRwX3RpbWVfbXMpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0X3JvdGF0aW9uKHdlYnJ0Yzo6a1ZpZGVvUm90
YXRpb25fMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRfY29sb3Jfc3Bh
Y2UoRXh0cmFjdFZQOUNvbG9yU3BhY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW1nLT5jcywgaW1nLT5yYW5nZSwgaW1nLT5iaXRfZGVwdGgpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLmJ1aWxkKCk7CisgIGF1dG8gYnVpbGRlciA9IFZpZGVvRnJh
bWU6OkJ1aWxkZXIoKQorICAgICAgICAgICAgICAgICAgICAgLnNldF92aWRlb19mcmFtZV9idWZm
ZXIoaW1nX3dyYXBwZWRfYnVmZmVyKQorICAgICAgICAgICAgICAgICAgICAgLnNldF90aW1lc3Rh
bXBfbXMoMCkKKyAgICAgICAgICAgICAgICAgICAgIC5zZXRfdGltZXN0YW1wX3J0cCh0aW1lc3Rh
bXApCisgICAgICAgICAgICAgICAgICAgICAuc2V0X250cF90aW1lX21zKG50cF90aW1lX21zKQor
ICAgICAgICAgICAgICAgICAgICAgLnNldF9yb3RhdGlvbih3ZWJydGM6OmtWaWRlb1JvdGF0aW9u
XzApOworICBpZiAoZXhwbGljaXRfY29sb3Jfc3BhY2UpIHsKKyAgICBidWlsZGVyLnNldF9jb2xv
cl9zcGFjZShleHBsaWNpdF9jb2xvcl9zcGFjZSk7CisgIH0gZWxzZSB7CisgICAgYnVpbGRlci5z
ZXRfY29sb3Jfc3BhY2UoCisgICAgICAgIEV4dHJhY3RWUDlDb2xvclNwYWNlKGltZy0+Y3MsIGlt
Zy0+cmFuZ2UsIGltZy0+Yml0X2RlcHRoKSk7CisgIH0KKworICBWaWRlb0ZyYW1lIGRlY29kZWRf
aW1hZ2UgPSBidWlsZGVyLmJ1aWxkKCk7CisKICAgZGVjb2RlX2NvbXBsZXRlX2NhbGxiYWNrXy0+
RGVjb2RlZChkZWNvZGVkX2ltYWdlLCBhYnNsOjpudWxsb3B0LCBxcCk7CiAgIHJldHVybiBXRUJS
VENfVklERU9fQ09ERUNfT0s7CiB9CkBAIC0xNDM1LDMgKzE0NzYsNSBAQCBjb25zdCBjaGFyKiBW
UDlEZWNvZGVySW1wbDo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3QgewogfQogCiB9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gUlRDX0VOQUJMRV9WUDkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwu
aAppbmRleCBkOGNlMWZmMmFiNWVmYjIzNzczY2Y3ZjIwMjgwOGJmMzE0ZmI5ZTcyLi4zYmZhYjlh
ZDVmZDU4OWJhZGQ1MjNiNDE5ZjgxOGQxZjJlODIwN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA5L3ZwOV9pbXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfaW1wbC5oCkBAIC0x
Miw2ICsxMiw4IEBACiAjaWZuZGVmIE1PRFVMRVNfVklERU9fQ09ESU5HX0NPREVDU19WUDlfVlA5
X0lNUExfSF8KICNkZWZpbmUgTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOV9WUDlfSU1Q
TF9IXwogCisjaWZkZWYgUlRDX0VOQUJMRV9WUDkKKwogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgpAQCAtNDYsMTIgKzQ4LDEwIEBAIGNsYXNzIFZQ
OUVuY29kZXJJbXBsIDogcHVibGljIFZQOUVuY29kZXIgewogCiAgIGludCBSZWdpc3RlckVuY29k
ZUNvbXBsZXRlQ2FsbGJhY2soRW5jb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlk
ZTsKIAotICBpbnQgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsIGlu
dDY0X3QgcnR0KSBvdmVycmlkZTsKLQogICBpbnQgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZV9hbGxvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgZnJhbWVfcmF0ZSkgb3ZlcnJpZGU7CiAKLSAgY29uc3QgY2hhciog
SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgIEVuY29kZXJJbmZvIEdldEVu
Y29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgogICAvLyBEZXRlcm1pbmUg
bnVtYmVyIG9mIGVuY29kZXIgdGhyZWFkcyB0byB1c2UuCkBAIC02MywxNSArNjMsMTYgQEAgY2xh
c3MgVlA5RW5jb2RlckltcGwgOiBwdWJsaWMgVlA5RW5jb2RlciB7CiAgIHZvaWQgUG9wdWxhdGVD
b2RlY1NwZWNpZmljKENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpYywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8aW50Piogc3BhdGlhbF9pZHgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZweF9jb2RlY19jeF9wa3QmIHBrdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZXN0YW1wLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGZpcnN0X2ZyYW1lX2luX3BpY3R1cmUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0aW1lc3RhbXApOwogICB2b2lkIEZp
bGxSZWZlcmVuY2VJbmRpY2VzKGNvbnN0IHZweF9jb2RlY19jeF9wa3QmIHBrdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgcGljX251bSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBib29sIGludGVyX2xheWVyX3ByZWRpY3RlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb2RlY1NwZWNpZmljSW5mb1ZQOSogdnA5X2luZm8pOwogICB2
b2lkIFVwZGF0ZVJlZmVyZW5jZUJ1ZmZlcnMoY29uc3QgdnB4X2NvZGVjX2N4X3BrdCYgcGt0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHBpY19udW0pOwotICB2
cHhfc3ZjX3JlZl9mcmFtZV9jb25maWdfdCBTZXRSZWZlcmVuY2VzKGJvb2wgaXNfa2V5X3BpYyk7
CisgIHZweF9zdmNfcmVmX2ZyYW1lX2NvbmZpZ190IFNldFJlZmVyZW5jZXMoCisgICAgICBib29s
IGlzX2tleV9waWMsCisgICAgICBzaXplX3QgZmlyc3RfYWN0aXZlX3NwYXRpYWxfbGF5ZXJfaWQp
OwogCiAgIGJvb2wgRXhwbGljaXRseUNvbmZpZ3VyZWRTcGF0aWFsTGF5ZXJzKCkgY29uc3Q7CiAg
IGJvb2wgU2V0U3ZjUmF0ZXMoY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZV9h
bGxvY2F0aW9uKTsKQEAgLTExOSw2ICsxMjAsOSBAQCBjbGFzcyBWUDlFbmNvZGVySW1wbCA6IHB1
YmxpYyBWUDlFbmNvZGVyIHsKICAgYm9vbCBpc19zdmNfOwogICBJbnRlckxheWVyUHJlZE1vZGUg
aW50ZXJfbGF5ZXJfcHJlZF87CiAgIGJvb2wgZXh0ZXJuYWxfcmVmX2NvbnRyb2xfOworICBjb25z
dCBib29sIHRydXN0ZWRfcmF0ZV9jb250cm9sbGVyXzsKKyAgY29uc3QgYm9vbCBmdWxsX3N1cGVy
ZnJhbWVfZHJvcF87CisgIGJvb2wgZmlyc3RfZnJhbWVfaW5fcGljdHVyZV87CiAKICAgc3RkOjp2
ZWN0b3I8RnJhbWVyYXRlQ29udHJvbGxlcj4gZnJhbWVyYXRlX2NvbnRyb2xsZXJfOwogCkBAIC0x
NjgsNyArMTcyLDggQEAgY2xhc3MgVlA5RGVjb2RlckltcGwgOiBwdWJsaWMgVlA5RGVjb2RlciB7
CiAgIGludCBSZXR1cm5GcmFtZShjb25zdCB2cHhfaW1hZ2VfdCogaW1nLAogICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgaW50NjRfdCBudHBf
dGltZV9tcywKLSAgICAgICAgICAgICAgICAgIGludCBxcCk7CisgICAgICAgICAgICAgICAgICBp
bnQgcXAsCisgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvclNwYWNlKiBleHBsaWNpdF9jb2xv
cl9zcGFjZSk7CiAKICAgLy8gTWVtb3J5IHBvb2wgdXNlZCB0byBzaGFyZSBidWZmZXJzIGJldHdl
ZW4gbGlidnB4IGFuZCB3ZWJydGMuCiAgIFZwOUZyYW1lQnVmZmVyUG9vbCBmcmFtZV9idWZmZXJf
cG9vbF87CkBAIC0xNzksNCArMTg0LDYgQEAgY2xhc3MgVlA5RGVjb2RlckltcGwgOiBwdWJsaWMg
VlA5RGVjb2RlciB7CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCisjZW5kaWYgIC8vIFJU
Q19FTkFCTEVfVlA5CisKICNlbmRpZiAgLy8gTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQ
OV9WUDlfSU1QTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZW5jb2RlZF9mcmFtZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
ZW5jb2RlZF9mcmFtZS5oCmluZGV4IGEwOGViMDc2OWM3N2Y5ZjRhZWIzM2ZjOWUxZjE1YzJkYWVj
MTQ4YTUuLmM3ZWZkNDAwNzI3Yjg2NGFmZGVlNDkwZDYyOWIxZWExNzQ3ZTk5YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2VuY29kZWRfZnJhbWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9lbmNvZGVkX2ZyYW1lLmgKQEAg
LTEzLDggKzEzLDggQEAKIAogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS92aWRl
by9lbmNvZGVkX2ltYWdlLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQo
YnVpbGQvaW5jbHVkZSkKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFt
ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGlu
Z19kZWZpbmVzLmgiCkBAIC02MCwxMSArNjAsMjEgQEAgY2xhc3MgVkNNRW5jb2RlZEZyYW1lIDog
cHJvdGVjdGVkIEVuY29kZWRJbWFnZSB7CiAgICAqICAgR2V0IHBvaW50ZXIgdG8gZnJhbWUgYnVm
ZmVyCiAgICAqLwogICBjb25zdCB1aW50OF90KiBCdWZmZXIoKSBjb25zdCB7IHJldHVybiBfYnVm
ZmVyOyB9CisgIC8qKgorICAgKiAgIEdldCBwb2ludGVyIHRvIGZyYW1lIGJ1ZmZlciB0aGF0IGNh
biBiZSBtdXRhdGVkLgorICAgKi8KKyAgdWludDhfdCogTXV0YWJsZUJ1ZmZlcigpIHsgcmV0dXJu
IF9idWZmZXI7IH0KICAgLyoqCiAgICAqICAgR2V0IGZyYW1lIGxlbmd0aAogICAgKi8KICAgc2l6
ZV90IExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIF9sZW5ndGg7IH0KLQorICAvKioKKyAgICogICBT
ZXQgZnJhbWUgbGVuZ3RoCisgICAqLworICB2b2lkIFNldExlbmd0aChzaXplX3QgbGVuZ3RoKSB7
CisgICAgUlRDX0RDSEVDSyhsZW5ndGggPD0gX3NpemUpOworICAgIF9sZW5ndGggPSBsZW5ndGg7
CisgIH0KICAgLyoqCiAgICAqICAgRnJhbWUgUlRQIHRpbWVzdGFtcCAoOTBrSHopCiAgICAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvZmVjX2NvbnRyb2xsZXJfZGVmYXVsdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZlY19j
b250cm9sbGVyX2RlZmF1bHQuY2MKaW5kZXggNWZlMzhlNjI5N2RkMTM3OWIwZTM0ODNiY2ZkYTgy
ZTQ1Y2NiYWYwMy4uODQxZWQ3NDJkYWM1MDllNTc3MmEwMjY3NDA0NGMzZmJlZjQ3NGE4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvZmVjX2NvbnRyb2xsZXJfZGVmYXVsdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mZWNf
Y29udHJvbGxlcl9kZWZhdWx0LmNjCkBAIC04LDEwICs4LDE3IEBACiAgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KIAot
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2ZlY19jb250cm9sbGVyX2RlZmF1bHQuaCIK
KyNpbmNsdWRlIDxhbGdvcml0aG0+CisKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9m
ZWNfY29udHJvbGxlcl9kZWZhdWx0LmgiICAvLyBOT0xJTlQKKyNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiB1c2luZyBydGM6OkNyaXRTY29wZTsKKworY29uc3Qg
ZmxvYXQga1Byb3RlY3Rpb25PdmVyaGVhZFJhdGVUaHJlc2hvbGQgPSAwLjU7CisKIEZlY0NvbnRy
b2xsZXJEZWZhdWx0OjpGZWNDb250cm9sbGVyRGVmYXVsdCgKICAgICBDbG9jayogY2xvY2ssCiAg
ICAgVkNNUHJvdGVjdGlvbkNhbGxiYWNrKiBwcm90ZWN0aW9uX2NhbGxiYWNrKQpAQCAtMTksMTMg
KzI2LDE1IEBAIEZlY0NvbnRyb2xsZXJEZWZhdWx0OjpGZWNDb250cm9sbGVyRGVmYXVsdCgKICAg
ICAgIHByb3RlY3Rpb25fY2FsbGJhY2tfKHByb3RlY3Rpb25fY2FsbGJhY2spLAogICAgICAgbG9z
c19wcm90X2xvZ2ljXyhuZXcgbWVkaWFfb3B0aW1pemF0aW9uOjpWQ01Mb3NzUHJvdGVjdGlvbkxv
Z2ljKAogICAgICAgICAgIGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpKSwKLSAgICAgIG1h
eF9wYXlsb2FkX3NpemVfKDE0NjApIHt9CisgICAgICBtYXhfcGF5bG9hZF9zaXplXygxNDYwKSwK
KyAgICAgIG92ZXJoZWFkX3RocmVzaG9sZF8oR2V0UHJvdGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVz
aG9sZCgpKSB7fQogCiBGZWNDb250cm9sbGVyRGVmYXVsdDo6RmVjQ29udHJvbGxlckRlZmF1bHQo
Q2xvY2sqIGNsb2NrKQogICAgIDogY2xvY2tfKGNsb2NrKSwKICAgICAgIGxvc3NfcHJvdF9sb2dp
Y18obmV3IG1lZGlhX29wdGltaXphdGlvbjo6VkNNTG9zc1Byb3RlY3Rpb25Mb2dpYygKICAgICAg
ICAgICBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSksCi0gICAgICBtYXhfcGF5bG9hZF9z
aXplXygxNDYwKSB7fQorICAgICAgbWF4X3BheWxvYWRfc2l6ZV8oMTQ2MCksCisgICAgICBvdmVy
aGVhZF90aHJlc2hvbGRfKEdldFByb3RlY3Rpb25PdmVyaGVhZFJhdGVUaHJlc2hvbGQoKSkge30K
IAogRmVjQ29udHJvbGxlckRlZmF1bHQ6On5GZWNDb250cm9sbGVyRGVmYXVsdCh2b2lkKSB7CiAg
IGxvc3NfcHJvdF9sb2dpY18tPlJlbGVhc2UoKTsKQEAgLTQ2LDYgKzU1LDI1IEBAIHZvaWQgRmVj
Q29udHJvbGxlckRlZmF1bHQ6OlNldEVuY29kaW5nRGF0YShzaXplX3Qgd2lkdGgsCiAgIG1heF9w
YXlsb2FkX3NpemVfID0gbWF4X3BheWxvYWRfc2l6ZTsKIH0KIAorZmxvYXQgRmVjQ29udHJvbGxl
ckRlZmF1bHQ6OkdldFByb3RlY3Rpb25PdmVyaGVhZFJhdGVUaHJlc2hvbGQoKSB7CisgIGZsb2F0
IG92ZXJoZWFkX3RocmVzaG9sZCA9CisgICAgICBzdHJ0b2Yod2VicnRjOjpmaWVsZF90cmlhbDo6
RmluZEZ1bGxOYW1lKAorICAgICAgICAgICAgICAgICAiV2ViUlRDLVByb3RlY3Rpb25PdmVyaGVh
ZFJhdGVUaHJlc2hvbGQiKQorICAgICAgICAgICAgICAgICAuY19zdHIoKSwKKyAgICAgICAgICAg
ICBudWxscHRyKTsKKyAgaWYgKG92ZXJoZWFkX3RocmVzaG9sZCA+IDAgJiYgb3ZlcmhlYWRfdGhy
ZXNob2xkIDw9IDEpIHsKKyAgICBSVENfTE9HKExTX0lORk8pIDw8ICJQcm90ZWN0aW9uT3Zlcmhl
YWRSYXRlVGhyZXNob2xkIGlzIHNldCB0byAiCisgICAgICAgICAgICAgICAgICAgICA8PCBvdmVy
aGVhZF90aHJlc2hvbGQ7CisgICAgcmV0dXJuIG92ZXJoZWFkX3RocmVzaG9sZDsKKyAgfSBlbHNl
IGlmIChvdmVyaGVhZF90aHJlc2hvbGQgPCAwIHx8IG92ZXJoZWFkX3RocmVzaG9sZCA+IDEpIHsK
KyAgICBSVENfTE9HKFdBUk5JTkcpIDw8ICJQcm90ZWN0aW9uT3ZlcmhlYWRSYXRlVGhyZXNob2xk
IGZpZWxkIHRyaWFsIGlzIHNldCB0byAiCisgICAgICAgICAgICAgICAgICAgICAgICAiYW4gaW52
YWxpZCB2YWx1ZSwgZXhwZWN0aW5nIGEgdmFsdWUgYmV0d2VlbiAoMCwgMV0uIjsKKyAgfQorICAv
LyBXZWJSVEMtUHJvdGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVzaG9sZCBmaWVsZCB0cmlhbCBzdHJp
bmcgaXMgbm90IGZvdW5kLCB1c2UKKyAgLy8gdGhlIGRlZmF1bHQgdmFsdWUuCisgIHJldHVybiBr
UHJvdGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVzaG9sZDsKK30KKwogdWludDMyX3QgRmVjQ29udHJv
bGxlckRlZmF1bHQ6OlVwZGF0ZUZlY1JhdGVzKAogICAgIHVpbnQzMl90IGVzdGltYXRlZF9iaXRy
YXRlX2JwcywKICAgICBpbnQgYWN0dWFsX2ZyYW1lcmF0ZV9mcHMsCkBAIC0xMjUsOSArMTUzLDkg
QEAgdWludDMyX3QgRmVjQ29udHJvbGxlckRlZmF1bHQ6OlVwZGF0ZUZlY1JhdGVzKAogICAgICAg
ICBzdGF0aWNfY2FzdDxmbG9hdD4oc2VudF9uYWNrX3JhdGVfYnBzICsgc2VudF9mZWNfcmF0ZV9i
cHMpIC8KICAgICAgICAgc2VudF90b3RhbF9yYXRlX2JwczsKICAgfQotICAvLyBDYXAgdGhlIG92
ZXJoZWFkIGVzdGltYXRlIHRvIDUwJS4KLSAgaWYgKHByb3RlY3Rpb25fb3ZlcmhlYWRfcmF0ZSA+
IDAuNSkKLSAgICBwcm90ZWN0aW9uX292ZXJoZWFkX3JhdGUgPSAwLjU7CisgIC8vIENhcCB0aGUg
b3ZlcmhlYWQgZXN0aW1hdGUgdG8gYSB0aHJlc2hvbGQsIGRlZmF1bHQgaXMgNTAlLgorICBwcm90
ZWN0aW9uX292ZXJoZWFkX3JhdGUgPQorICAgICAgc3RkOjptaW4ocHJvdGVjdGlvbl9vdmVyaGVh
ZF9yYXRlLCBvdmVyaGVhZF90aHJlc2hvbGRfKTsKICAgLy8gU291cmNlIGNvZGluZyByYXRlOiB0
b3RhbCByYXRlIC0gcHJvdGVjdGlvbiBvdmVyaGVhZC4KICAgcmV0dXJuIGVzdGltYXRlZF9iaXRy
YXRlX2JwcyAqICgxLjAgLSBwcm90ZWN0aW9uX292ZXJoZWFkX3JhdGUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvZmVjX2NvbnRyb2xsZXJfZGVmYXVsdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZmVjX2NvbnRyb2xsZXJf
ZGVmYXVsdC5oCmluZGV4IGE5NWVjZWQyNDVhMjIwOGEwMjQyMGQxMmJhY2Q1Njg5MWY2MTc5MDAu
LjlkNzlhNjFkMjhlYmJhZWVkN2YwZjMxYTUxYzdmNzY4MGFlNDRhZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2ZlY19jb250cm9sbGVyX2RlZmF1bHQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mZWNfY29udHJvbGxlcl9k
ZWZhdWx0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgRmVjQ29udHJvbGxlckRlZmF1bHQgOiBw
dWJsaWMgRmVjQ29udHJvbGxlciB7CiAgIHZvaWQgVXBkYXRlV2l0aEVuY29kZWREYXRhKGNvbnN0
IHNpemVfdCBlbmNvZGVkX2ltYWdlX2xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRnJhbWVUeXBlIGVuY29kZWRfaW1hZ2VfZnJhbWV0eXBlKSBvdmVycmlkZTsKICAg
Ym9vbCBVc2VMb3NzVmVjdG9yTWFzaygpIG92ZXJyaWRlOworICBmbG9hdCBHZXRQcm90ZWN0aW9u
T3ZlcmhlYWRSYXRlVGhyZXNob2xkKCk7CiAKICBwcml2YXRlOgogICBlbnVtIHsga0JpdHJhdGVB
dmVyYWdlV2luTXMgPSAxMDAwIH07CkBAIC01Miw2ICs1Myw3IEBAIGNsYXNzIEZlY0NvbnRyb2xs
ZXJEZWZhdWx0IDogcHVibGljIEZlY0NvbnRyb2xsZXIgewogICAgICAgUlRDX0dVQVJERURfQlko
Y3JpdF9zZWN0Xyk7CiAgIHNpemVfdCBtYXhfcGF5bG9hZF9zaXplXyBSVENfR1VBUkRFRF9CWShj
cml0X3NlY3RfKTsKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihGZWNDb250cm9sbGVy
RGVmYXVsdCk7CisgIGNvbnN0IGZsb2F0IG92ZXJoZWFkX3RocmVzaG9sZF87CiB9OwogCiB9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvZnJhbWVfYnVmZmVyMi5jYwppbmRleCAzNzc2MTFlNWUyNzE0Mzc1MDZhZDk4NDdlYTY4
NDBjOWUxZDZkNjA2Li4wNGZiYTg0Y2FmNTViNDQ3YzA1N2RhOTNkMDZlNjU0MDE2ZWMxZWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZl
cjIuY2MKQEAgLTQ2LDExICs0Niw5IEBAIEZyYW1lQnVmZmVyOjpGcmFtZUJ1ZmZlcihDbG9jayog
Y2xvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgVkNNVGltaW5nKiB0aW1pbmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgVkNNUmVjZWl2ZVN0YXRpc3RpY3NDYWxsYmFjayogc3RhdHNf
Y2FsbGJhY2spCiAgICAgOiBjbG9ja18oY2xvY2spLAotICAgICAgbmV3X2NvbnRpbnVvdXNfZnJh
bWVfZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAgICAgICBqaXR0ZXJfZXN0aW1hdG9yXyhqaXR0ZXJf
ZXN0aW1hdG9yKSwKICAgICAgIHRpbWluZ18odGltaW5nKSwKICAgICAgIGludGVyX2ZyYW1lX2Rl
bGF5XyhjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSwKLSAgICAgIGxhc3RfZGVjb2RlZF9m
cmFtZV90aW1lc3RhbXBfKDApLAogICAgICAgbGFzdF9kZWNvZGVkX2ZyYW1lX2l0XyhmcmFtZXNf
LmVuZCgpKSwKICAgICAgIGxhc3RfY29udGludW91c19mcmFtZV9pdF8oZnJhbWVzXy5lbmQoKSks
CiAgICAgICBudW1fZnJhbWVzX2hpc3RvcnlfKDApLApAQCAtMTE1LDEwICsxMTMsMTkgQEAgRnJh
bWVCdWZmZXI6OlJldHVyblJlYXNvbiBGcmFtZUJ1ZmZlcjo6TmV4dEZyYW1lKAogICAgICAgICBp
ZiAoa2V5ZnJhbWVfcmVxdWlyZWQgJiYgIWZyYW1lLT5pc19rZXlmcmFtZSgpKQogICAgICAgICAg
IGNvbnRpbnVlOwogCisgICAgICAgIC8vIFRPRE8oaHR0cHM6Ly9idWdzLndlYnJ0Yy5vcmcvOTk3
NCk6IGNvbnNpZGVyIHJlbW92aW5nIHRoaXMgY2hlY2sKKyAgICAgICAgLy8gYXMgaXQgbWF5IG1h
a2UgYSBzdHJlYW0gdW5kZWNvZGFibGUgYWZ0ZXIgYSB2ZXJ5IGxvbmcgZGVsYXkgYmV0d2Vlbgor
ICAgICAgICAvLyBmcmFtZXMuCisgICAgICAgIGlmIChsYXN0X2RlY29kZWRfZnJhbWVfdGltZXN0
YW1wXyAmJgorICAgICAgICAgICAgQWhlYWRPZigqbGFzdF9kZWNvZGVkX2ZyYW1lX3RpbWVzdGFt
cF8sIGZyYW1lLT5UaW1lc3RhbXAoKSkpIHsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCiAgICAgICAgIG5leHRfZnJhbWVfaXRfID0gZnJhbWVfaXQ7Ci0gICAgICAgIGlmIChmcmFt
ZS0+UmVuZGVyVGltZSgpID09IC0xKQorICAgICAgICBpZiAoZnJhbWUtPlJlbmRlclRpbWUoKSA9
PSAtMSkgewogICAgICAgICAgIGZyYW1lLT5TZXRSZW5kZXJUaW1lKAogICAgICAgICAgICAgICB0
aW1pbmdfLT5SZW5kZXJUaW1lTXMoZnJhbWUtPlRpbWVzdGFtcCgpLCBub3dfbXMpKTsKKyAgICAg
ICAgfQogICAgICAgICB3YWl0X21zID0gdGltaW5nXy0+TWF4V2FpdGluZ1RpbWUoZnJhbWUtPlJl
bmRlclRpbWUoKSwgbm93X21zKTsKIAogICAgICAgICAvLyBUaGlzIHdpbGwgY2F1c2UgdGhlIGZy
YW1lIGJ1ZmZlciB0byBwcmVmZXIgaGlnaCBmcmFtZXJhdGUgcmF0aGVyCkBAIC0xNzUsMzMgKzE4
Miw2IEBAIEZyYW1lQnVmZmVyOjpSZXR1cm5SZWFzb24gRnJhbWVCdWZmZXI6Ok5leHRGcmFtZSgK
ICAgICAgIFVwZGF0ZVRpbWluZ0ZyYW1lSW5mbygpOwogICAgICAgUHJvcGFnYXRlRGVjb2RhYmls
aXR5KG5leHRfZnJhbWVfaXRfLT5zZWNvbmQpOwogCi0gICAgICAvLyBTYW5pdHkgY2hlY2sgZm9y
IFJUUCB0aW1lc3RhbXAgbW9ub3RvbmljaXR5LgotICAgICAgaWYgKGxhc3RfZGVjb2RlZF9mcmFt
ZV9pdF8gIT0gZnJhbWVzXy5lbmQoKSkgewotICAgICAgICBjb25zdCBWaWRlb0xheWVyRnJhbWVJ
ZCYgbGFzdF9kZWNvZGVkX2ZyYW1lX2tleSA9Ci0gICAgICAgICAgICBsYXN0X2RlY29kZWRfZnJh
bWVfaXRfLT5maXJzdDsKLSAgICAgICAgY29uc3QgVmlkZW9MYXllckZyYW1lSWQmIGZyYW1lX2tl
eSA9IG5leHRfZnJhbWVfaXRfLT5maXJzdDsKLQotICAgICAgICBjb25zdCBib29sIGZyYW1lX2lz
X2hpZ2hlcl9zcGF0aWFsX2xheWVyX29mX2xhc3RfZGVjb2RlZF9mcmFtZSA9Ci0gICAgICAgICAg
ICBsYXN0X2RlY29kZWRfZnJhbWVfdGltZXN0YW1wXyA9PSBmcmFtZS0+VGltZXN0YW1wKCkgJiYK
LSAgICAgICAgICAgIGxhc3RfZGVjb2RlZF9mcmFtZV9rZXkucGljdHVyZV9pZCA9PSBmcmFtZV9r
ZXkucGljdHVyZV9pZCAmJgotICAgICAgICAgICAgbGFzdF9kZWNvZGVkX2ZyYW1lX2tleS5zcGF0
aWFsX2xheWVyIDwgZnJhbWVfa2V5LnNwYXRpYWxfbGF5ZXI7Ci0KLSAgICAgICAgaWYgKEFoZWFk
T3JBdChsYXN0X2RlY29kZWRfZnJhbWVfdGltZXN0YW1wXywgZnJhbWUtPlRpbWVzdGFtcCgpKSAm
JgotICAgICAgICAgICAgIWZyYW1lX2lzX2hpZ2hlcl9zcGF0aWFsX2xheWVyX29mX2xhc3RfZGVj
b2RlZF9mcmFtZSkgewotICAgICAgICAgIC8vIFRPRE8oYnJhbmR0cik6IENvbnNpZGVyIGNsZWFy
aW5nIHRoZSBlbnRpcmUgYnVmZmVyIHdoZW4gd2UgaGl0Ci0gICAgICAgICAgLy8gdGhlc2UgY29u
ZGl0aW9ucy4KLSAgICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAgICAgICAgIDw8
ICJGcmFtZSB3aXRoICh0aW1lc3RhbXA6cGljdHVyZV9pZDpzcGF0aWFsX2lkKSAoIgotICAgICAg
ICAgICAgICA8PCBmcmFtZS0+VGltZXN0YW1wKCkgPDwgIjoiIDw8IGZyYW1lLT5pZC5waWN0dXJl
X2lkIDw8ICI6IgotICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lLT5pZC5z
cGF0aWFsX2xheWVyKSA8PCAiKSIKLSAgICAgICAgICAgICAgPDwgIiBzZW50IHRvIGRlY29kZXIg
YWZ0ZXIgZnJhbWUgd2l0aCIKLSAgICAgICAgICAgICAgPDwgIiAodGltZXN0YW1wOnBpY3R1cmVf
aWQ6c3BhdGlhbF9pZCkgKCIKLSAgICAgICAgICAgICAgPDwgbGFzdF9kZWNvZGVkX2ZyYW1lX3Rp
bWVzdGFtcF8gPDwgIjoiCi0gICAgICAgICAgICAgIDw8IGxhc3RfZGVjb2RlZF9mcmFtZV9rZXku
cGljdHVyZV9pZCA8PCAiOiIKLSAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PihsYXN0
X2RlY29kZWRfZnJhbWVfa2V5LnNwYXRpYWxfbGF5ZXIpIDw8ICIpLiI7Ci0gICAgICAgIH0KLSAg
ICAgIH0KLQogICAgICAgQWR2YW5jZUxhc3REZWNvZGVkRnJhbWUobmV4dF9mcmFtZV9pdF8pOwog
ICAgICAgbGFzdF9kZWNvZGVkX2ZyYW1lX3RpbWVzdGFtcF8gPSBmcmFtZS0+VGltZXN0YW1wKCk7
CiAgICAgICAqZnJhbWVfb3V0ID0gc3RkOjptb3ZlKGZyYW1lKTsKQEAgLTI2Nyw2ICsyNDcsMTEg
QEAgdm9pZCBGcmFtZUJ1ZmZlcjo6U3RvcCgpIHsKICAgbmV3X2NvbnRpbnVvdXNfZnJhbWVfZXZl
bnRfLlNldCgpOwogfQogCit2b2lkIEZyYW1lQnVmZmVyOjpDbGVhcigpIHsKKyAgcnRjOjpDcml0
U2NvcGUgbG9jaygmY3JpdF8pOworICBDbGVhckZyYW1lc0FuZEhpc3RvcnkoKTsKK30KKwogdm9p
ZCBGcmFtZUJ1ZmZlcjo6VXBkYXRlUnR0KGludDY0X3QgcnR0X21zKSB7CiAgIHJ0Yzo6Q3JpdFNj
b3BlIGxvY2soJmNyaXRfKTsKICAgaml0dGVyX2VzdGltYXRvcl8tPlVwZGF0ZVJ0dChydHRfbXMp
OwpAQCAtMzQ4LDcgKzMzMyw3IEBAIGludDY0X3QgRnJhbWVCdWZmZXI6Okluc2VydEZyYW1lKHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVkRnJhbWU+IGZyYW1lKSB7CiAKICAgaWYgKGxhc3RfZGVjb2Rl
ZF9mcmFtZV9pdF8gIT0gZnJhbWVzXy5lbmQoKSAmJgogICAgICAgaWQgPD0gbGFzdF9kZWNvZGVk
X2ZyYW1lX2l0Xy0+Zmlyc3QpIHsKLSAgICBpZiAoQWhlYWRPZihmcmFtZS0+VGltZXN0YW1wKCks
IGxhc3RfZGVjb2RlZF9mcmFtZV90aW1lc3RhbXBfKSAmJgorICAgIGlmIChBaGVhZE9mKGZyYW1l
LT5UaW1lc3RhbXAoKSwgKmxhc3RfZGVjb2RlZF9mcmFtZV90aW1lc3RhbXBfKSAmJgogICAgICAg
ICBmcmFtZS0+aXNfa2V5ZnJhbWUoKSkgewogICAgICAgLy8gSWYgdGhpcyBmcmFtZSBoYXMgYSBu
ZXdlciB0aW1lc3RhbXAgYnV0IGFuIGVhcmxpZXIgcGljdHVyZSBpZCB0aGVuIHdlCiAgICAgICAv
LyBhc3N1bWUgdGhlcmUgaGFzIGJlZW4gYSBqdW1wIGluIHRoZSBwaWN0dXJlIGlkIGR1ZSB0byBz
b21lIGVuY29kZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Zy
YW1lX2J1ZmZlcjIuaAppbmRleCBhZTg0ZmNmOWU2YzI5MzgxMGQ0NDQzMmVmM2EwMDlkYjQxZWVm
NzRlLi5kYzVlNWEyZTM3MmZkYzEwYWM4MGFjNmVlNzFmNzY5YzhkODZjOTgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9mcmFtZV9idWZmZXIyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVyMi5oCkBAIC03
OSw2ICs3OSw5IEBAIGNsYXNzIEZyYW1lQnVmZmVyIHsKICAgLy8gVXBkYXRlcyB0aGUgUlRUIGZv
ciBqaXR0ZXIgYnVmZmVyIGVzdGltYXRpb24uCiAgIHZvaWQgVXBkYXRlUnR0KGludDY0X3QgcnR0
X21zKTsKIAorICAvLyBDbGVhcnMgdGhlIEZyYW1lQnVmZmVyLCByZW1vdmluZyBhbGwgdGhlIGJ1
ZmZlcmVkIGZyYW1lcy4KKyAgdm9pZCBDbGVhcigpOworCiAgcHJpdmF0ZToKICAgc3RydWN0IEZy
YW1lSW5mbyB7CiAgICAgRnJhbWVJbmZvKCk7CkBAIC0xNjEsNyArMTY0LDcgQEAgY2xhc3MgRnJh
bWVCdWZmZXIgewogICBWQ01KaXR0ZXJFc3RpbWF0b3IqIGNvbnN0IGppdHRlcl9lc3RpbWF0b3Jf
IFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKICAgVkNNVGltaW5nKiBjb25zdCB0aW1pbmdfIFJUQ19H
VUFSREVEX0JZKGNyaXRfKTsKICAgVkNNSW50ZXJGcmFtZURlbGF5IGludGVyX2ZyYW1lX2RlbGF5
XyBSVENfR1VBUkRFRF9CWShjcml0Xyk7Ci0gIHVpbnQzMl90IGxhc3RfZGVjb2RlZF9mcmFtZV90
aW1lc3RhbXBfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKKyAgYWJzbDo6b3B0aW9uYWw8dWludDMy
X3Q+IGxhc3RfZGVjb2RlZF9mcmFtZV90aW1lc3RhbXBfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsK
ICAgRnJhbWVNYXA6Oml0ZXJhdG9yIGxhc3RfZGVjb2RlZF9mcmFtZV9pdF8gUlRDX0dVQVJERURf
QlkoY3JpdF8pOwogICBGcmFtZU1hcDo6aXRlcmF0b3IgbGFzdF9jb250aW51b3VzX2ZyYW1lX2l0
XyBSVENfR1VBUkRFRF9CWShjcml0Xyk7CiAgIEZyYW1lTWFwOjppdGVyYXRvciBuZXh0X2ZyYW1l
X2l0XyBSVENfR1VBUkRFRF9CWShjcml0Xyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZm
ZXIyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVyMl91bml0dGVzdC5jYwppbmRleCAz
NTdiYTg2NTQwNTUxZjk5MmFlZDU2MWM1ZmY5MTM4NTMyZGUwMmQzLi5lMTBmNzg1Mjc5NTdlNzdj
MDc1YTBmMDgyN2IzN2Q2ZDdiZjRjYWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIy
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjJfdW5pdHRlc3QuY2MKQEAgLTEz
Nyw5ICsxMzcsNyBAQCBjbGFzcyBUZXN0RnJhbWVCdWZmZXIyIDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0c19jYWxsYmFja18p
KSwKICAgICAgICAgcmFuZF8oMHgzNDY3ODIxMyksCiAgICAgICAgIHRlYXJfZG93bl8oZmFsc2Up
LAotICAgICAgICBleHRyYWN0X3RocmVhZF8oJkV4dHJhY3RMb29wLCB0aGlzLCAiRXh0cmFjdCBU
aHJlYWQiKSwKLSAgICAgICAgdHJpZ2dlcl9leHRyYWN0X2V2ZW50XyhmYWxzZSwgZmFsc2UpLAot
ICAgICAgICBjcml0X2FjcXVpcmVkX2V2ZW50XyhmYWxzZSwgZmFsc2UpIHt9CisgICAgICAgIGV4
dHJhY3RfdGhyZWFkXygmRXh0cmFjdExvb3AsIHRoaXMsICJFeHRyYWN0IFRocmVhZCIpIHt9CiAK
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsgZXh0cmFjdF90aHJlYWRfLlN0YXJ0KCk7IH0KIApA
QCAtNjAwLDUgKzU5OCwyMSBAQCBURVNUX0YoVGVzdEZyYW1lQnVmZmVyMiwgRG9udFVwZGF0ZU9u
VW5kZWNvZGFibGVGcmFtZSkgewogICBFeHRyYWN0RnJhbWUoMCwgdHJ1ZSk7CiB9CiAKK1RFU1Rf
RihUZXN0RnJhbWVCdWZmZXIyLCBEb250RGVjb2RlT2xkZXJUaW1lc3RhbXApIHsKKyAgSW5zZXJ0
RnJhbWUoMiwgMCwgMSwgZmFsc2UpOworICBJbnNlcnRGcmFtZSgxLCAwLCAyLCBmYWxzZSk7ICAv
LyBPbGRlciBwaWN0dXJlIGlkIGJ1dCBuZXdlciB0aW1lc3RhbXAuCisgIEV4dHJhY3RGcmFtZSgw
KTsKKyAgRXh0cmFjdEZyYW1lKDApOworICBDaGVja0ZyYW1lKDAsIDEsIDApOworICBDaGVja05v
RnJhbWUoMSk7CisKKyAgSW5zZXJ0RnJhbWUoMywgMCwgNCwgZmFsc2UpOworICBJbnNlcnRGcmFt
ZSg0LCAwLCAzLCBmYWxzZSk7ICAvLyBOZXdlciBwaWN0dXJlIGlkIGJ1dCBvbGRlciB0aW1lc3Rh
bXAuCisgIEV4dHJhY3RGcmFtZSgwKTsKKyAgRXh0cmFjdEZyYW1lKDApOworICBDaGVja0ZyYW1l
KDIsIDMsIDApOworICBDaGVja05vRnJhbWUoMyk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB2aWRl
b19jb2RpbmcKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2dlbmVy
aWNfZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2dlbmVyaWNfZW5jb2Rlci5jYwppbmRleCBiMWQ3YzI4YWJk
MjQ3MzM3MzhmNjA4N2Y4YzkzOTNhYTA1ZmVlMGIzLi5kNWNjMGE4YmEwNjhkY2ZkZmVmNWVhZjI0
ZDc4OTExMTU2ZWJiOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9nZW5lcmljX2VuY29kZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvZ2VuZXJpY19lbmNvZGVyLmNjCkBAIC0xMDEsMjYgKzEwMSwxNCBAQCBpbnQzMl90
IFZDTUdlbmVyaWNFbmNvZGVyOjpFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUsCiAKIHZv
aWQgVkNNR2VuZXJpY0VuY29kZXI6OlNldEVuY29kZXJQYXJhbWV0ZXJzKGNvbnN0IEVuY29kZXJQ
YXJhbWV0ZXJzJiBwYXJhbXMpIHsKICAgUlRDX0RDSEVDS19SVU5TX1NFUklBTElaRUQoJnJhY2Vf
Y2hlY2tlcl8pOwotICBib29sIGNoYW5uZWxfcGFyYW1ldGVyc19oYXZlX2NoYW5nZWQ7CiAgIGJv
b2wgcmF0ZXNfaGF2ZV9jaGFuZ2VkOwogICB7CiAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmcGFy
YW1zX2xvY2tfKTsKLSAgICBjaGFubmVsX3BhcmFtZXRlcnNfaGF2ZV9jaGFuZ2VkID0KLSAgICAg
ICAgcGFyYW1zLmxvc3NfcmF0ZSAhPSBlbmNvZGVyX3BhcmFtc18ubG9zc19yYXRlIHx8Ci0gICAg
ICAgIHBhcmFtcy5ydHQgIT0gZW5jb2Rlcl9wYXJhbXNfLnJ0dDsKICAgICByYXRlc19oYXZlX2No
YW5nZWQgPQogICAgICAgICBwYXJhbXMudGFyZ2V0X2JpdHJhdGUgIT0gZW5jb2Rlcl9wYXJhbXNf
LnRhcmdldF9iaXRyYXRlIHx8CiAgICAgICAgIHBhcmFtcy5pbnB1dF9mcmFtZV9yYXRlICE9IGVu
Y29kZXJfcGFyYW1zXy5pbnB1dF9mcmFtZV9yYXRlOwogICAgIGVuY29kZXJfcGFyYW1zXyA9IHBh
cmFtczsKICAgfQotICBpZiAoY2hhbm5lbF9wYXJhbWV0ZXJzX2hhdmVfY2hhbmdlZCkgewotICAg
IGludCByZXMgPSBlbmNvZGVyXy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFyYW1zLmxvc3NfcmF0
ZSwgcGFyYW1zLnJ0dCk7Ci0gICAgaWYgKHJlcyAhPSAwKSB7Ci0gICAgICBSVENfTE9HKExTX1dB
Uk5JTkcpIDw8ICJFcnJvciBzZXQgZW5jb2RlciBwYXJhbWV0ZXJzIChsb3NzID0gIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBwYXJhbXMubG9zc19yYXRlIDw8ICIsIHJ0dCA9ICIgPDwg
cGFyYW1zLnJ0dAotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiKTogIiA8PCByZXM7Ci0g
ICAgfQotICB9CiAgIGlmIChyYXRlc19oYXZlX2NoYW5nZWQpIHsKICAgICBpbnQgcmVzID0gZW5j
b2Rlcl8tPlNldFJhdGVBbGxvY2F0aW9uKHBhcmFtcy50YXJnZXRfYml0cmF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5pbnB1dF9mcmFtZV9yYXRl
KTsKQEAgLTE2NCw5ICsxNTIsOSBAQCBib29sIFZDTUdlbmVyaWNFbmNvZGVyOjpJbnRlcm5hbFNv
dXJjZSgpIGNvbnN0IHsKICAgcmV0dXJuIGludGVybmFsX3NvdXJjZV87CiB9CiAKLWJvb2wgVkNN
R2VuZXJpY0VuY29kZXI6OlN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3QgeworVmlkZW9FbmNv
ZGVyOjpFbmNvZGVySW5mbyBWQ01HZW5lcmljRW5jb2Rlcjo6R2V0RW5jb2RlckluZm8oKSBjb25z
dCB7CiAgIFJUQ19EQ0hFQ0tfUlVOU19TRVJJQUxJWkVEKCZyYWNlX2NoZWNrZXJfKTsKLSAgcmV0
dXJuIGVuY29kZXJfLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgpOworICByZXR1cm4gZW5jb2Rlcl8t
PkdldEVuY29kZXJJbmZvKCk7CiB9CiAKIFZDTUVuY29kZWRGcmFtZUNhbGxiYWNrOjpWQ01FbmNv
ZGVkRnJhbWVDYWxsYmFjaygKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2dlbmVyaWNfZW5jb2Rlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvZ2VuZXJpY19lbmNvZGVyLmgKaW5kZXggMTUxZTkzZTQ5NzU5Nzk2MDk1YWVkZmVlZjlh
NDBkMTNiNDEwYWQ5Yy4uMmY4NDFiMzRkZDgxNWQyOTk1ZTQ4YjRhYzk2ODEzYjBmMDg3NGRkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvZ2VuZXJpY19lbmNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZ2VuZXJpY19l
bmNvZGVyLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBWQ01HZW5lcmljRW5jb2RlciB7CiAK
ICAgaW50MzJfdCBSZXF1ZXN0RnJhbWUoY29uc3Qgc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiYgZnJh
bWVfdHlwZXMpOwogICBib29sIEludGVybmFsU291cmNlKCkgY29uc3Q7Ci0gIGJvb2wgU3VwcG9y
dHNOYXRpdmVIYW5kbGUoKSBjb25zdDsKKyAgVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBHZXRF
bmNvZGVySW5mbygpIGNvbnN0OwogCiAgcHJpdmF0ZToKICAgcnRjOjpSYWNlQ2hlY2tlciByYWNl
X2NoZWNrZXJfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS9tb2NrL21vY2tfdmlkZW9fY29k
ZWNfaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL21vY2svbW9ja192aWRlb19jb2RlY19pbnRl
cmZhY2UuaAppbmRleCBjMjllZmVlYWQ2OGQ0NjMwYzM5MTdiNjEwYmEzNTE4MmFiMTQ0OTNjLi43
ZDAwMzU5MWVhM2Q5NWNjN2VhNzQ0MTAzZGEzOWQ0MjY3YjcxMGQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9pbmNsdWRlL21vY2svbW9ja192aWRlb19jb2RlY19pbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9p
bmNsdWRlL21vY2svbW9ja192aWRlb19jb2RlY19pbnRlcmZhY2UuaApAQCAtMTksNiArMTksOCBA
QAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAorLy8gTk9URTogRGVwcmVjYXRlZCBmaWxlLCBpbmNs
dWRlIGFwaS9tb2NrX3ZpZGVvXyhlbmNvZGVyfGRlY29kZXIpLmggaW5zdGVhZC4KKwogY2xhc3Mg
TW9ja0VuY29kZWRJbWFnZUNhbGxiYWNrIDogcHVibGljIEVuY29kZWRJbWFnZUNhbGxiYWNrIHsK
ICBwdWJsaWM6CiAgIE1PQ0tfTUVUSE9EMyhPbkVuY29kZWRJbWFnZSwKQEAgLTQyLDcgKzQ0LDYg
QEAgY2xhc3MgTW9ja1ZpZGVvRW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICAgICAg
ICAgICAgICAgaW50MzJfdChFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2spKTsKICAgTU9D
S19NRVRIT0QwKFJlbGVhc2UsIGludDMyX3QoKSk7CiAgIE1PQ0tfTUVUSE9EMChSZXNldCwgaW50
MzJfdCgpKTsKLSAgTU9DS19NRVRIT0QyKFNldENoYW5uZWxQYXJhbWV0ZXJzLCBpbnQzMl90KHVp
bnQzMl90IHBhY2tldExvc3MsIGludDY0X3QgcnR0KSk7CiAgIE1PQ0tfTUVUSE9EMihTZXRSYXRl
cywgaW50MzJfdCh1aW50MzJfdCBuZXdCaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpKTsKICAg
TU9DS19NRVRIT0QyKFNldFJhdGVBbGxvY2F0aW9uLAogICAgICAgICAgICAgICAgaW50MzJfdChj
b25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBuZXdCaXRSYXRlLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvaW5jbHVkZS92aWRlb19jb2RlY19pbml0aWFsaXplci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRl
b19jb2RlY19pbml0aWFsaXplci5oCmluZGV4IGVlNzA4MTBmNjJlZDczZDM1ODQ5MWIxNzIxNmNh
MzIxMDcxM2I3YjkuLmU5NzlmOWM4Njc3NmUyYjllZGJlNzQ2YmQ2ZDk1ODIzZGJjOTIzZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2luaXRpYWxpemVyLmgKQEAgLTMwLDE1ICszMCw5IEBA
IGNsYXNzIFZpZGVvQ29kZWNJbml0aWFsaXplciB7CiAgIC8vIHR5cGUgdXNlZC4gRm9yIGluc3Rh
bmNlLCBWUDggd2lsbCBjcmVhdGUgYW4gYWxsb2NhdG9yIHRoYW4gY2FuIGhhbmRsZQogICAvLyBz
aW11bGNhc3QgYW5kIHRlbXBvcmFsIGxheWVyaW5nLgogICAvLyBHZXRCaXRyYXRlQWxsb2NhdG9y
IGlzIGNhbGxlZCBpbXBsaWNpdGx5IGZyb20gaGVyZSwgbm8gbmVlZCB0byBjYWxsIGFnYWluLgot
ICBzdGF0aWMgYm9vbCBTZXR1cENvZGVjKAotICAgICAgY29uc3QgVmlkZW9FbmNvZGVyQ29uZmln
JiBjb25maWcsCi0gICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4mIHN0cmVhbXMs
Ci0gICAgICBWaWRlb0NvZGVjKiBjb2RlYywKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Jp
dHJhdGVBbGxvY2F0b3I+KiBiaXRyYXRlX2FsbG9jYXRvcik7Ci0KLSAgLy8gQ3JlYXRlIGEgYml0
cmF0ZSBhbGxvY2F0b3IgZm9yIHRoZSBzcGVjaWZpZWQgY29kZWMuCi0gIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiBDcmVhdGVCaXRyYXRlQWxsb2NhdG9yKAot
ICAgICAgY29uc3QgVmlkZW9Db2RlYyYgY29kZWMpOworICBzdGF0aWMgYm9vbCBTZXR1cENvZGVj
KGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiYgc3RyZWFtcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBWaWRlb0NvZGVjKiBjb2RlYyk7CiAKICBwcml2YXRlOgogICBzdGF0aWMg
VmlkZW9Db2RlYyBWaWRlb0VuY29kZXJDb25maWdUb1ZpZGVvQ29kZWMoCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRl
b19jb2RlY19pbnRlcmZhY2UuaAppbmRleCBkMmJhZGY5MjAxYjIxZWU0YWEzMjYzODZkMjAxYzQ5
NTQxYTE5YjRlLi4zODU4M2JmYTNiNDEwYzYyODViMzJjZjJiOTY1NGI3ZTA3NmYyZjhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgKQEAgLTc5LDYgKzc5LDcgQEAgc3RydWN0
IENvZGVjU3BlY2lmaWNJbmZvIHsKICAgICBtZW1zZXQoJmNvZGVjU3BlY2lmaWMsIDAsIHNpemVv
Zihjb2RlY1NwZWNpZmljKSk7CiAgIH0KICAgVmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlOworICAv
LyB8Y29kZWNfbmFtZXwgaXMgZGVwcmVjYXRlZCwgdXNlIG5hbWUgcHJvdmlkZWQgYnkgVmlkZW9F
bmNvZGVyIGluc3RlYWQuCiAgIGNvbnN0IGNoYXIqIGNvZGVjX25hbWU7CiAgIENvZGVjU3BlY2lm
aWNJbmZvVW5pb24gY29kZWNTcGVjaWZpYzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRl
L3ZpZGVvX2NvZGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RpbmcuaAppbmRleCA4ZWYw
NDZhYTIzMTkzZjdmMzBmMmIxZWNkZWQxMWZmNzNjODM0ZDY1Li4wODg5YjIzMWRlYTM0N2NjZTA0
N2MwNTQ3ZGJlYTdjZTgwNTM0MTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Nv
ZGluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nLmgKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVv
X2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZ19kZWZpbmVzLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvZGVwcmVjYXRpb24uaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVu
dF93cmFwcGVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMzcsMjAgKzM4LDYgQEAgY2xh
c3MgVmlkZW9EZWNvZGVyOwogY2xhc3MgVmlkZW9FbmNvZGVyOwogc3RydWN0IENvZGVjU3BlY2lm
aWNJbmZvOwogCi1jbGFzcyBFdmVudEZhY3RvcnkgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+RXZl
bnRGYWN0b3J5KCkge30KLQotICB2aXJ0dWFsIEV2ZW50V3JhcHBlciogQ3JlYXRlRXZlbnQoKSA9
IDA7Ci19OwotCi1jbGFzcyBFdmVudEZhY3RvcnlJbXBsIDogcHVibGljIEV2ZW50RmFjdG9yeSB7
Ci0gcHVibGljOgotICB+RXZlbnRGYWN0b3J5SW1wbCgpIG92ZXJyaWRlIHt9Ci0KLSAgRXZlbnRX
cmFwcGVyKiBDcmVhdGVFdmVudCgpIG92ZXJyaWRlOwotfTsKLQogLy8gVXNlZCB0byBpbmRpY2F0
ZSB3aGljaCBkZWNvZGUgd2l0aCBlcnJvcnMgbW9kZSBzaG91bGQgYmUgdXNlZC4KIGVudW0gVkNN
RGVjb2RlRXJyb3JNb2RlIHsKICAga05vRXJyb3JzLCAgICAgICAgIC8vIE5ldmVyIGRlY29kZSB3
aXRoIGVycm9ycy4gVmlkZW8gd2lsbCBmcmVlemUKQEAgLTY5LDcgKzU2LDcgQEAgY2xhc3MgVmlk
ZW9Db2RpbmdNb2R1bGUgOiBwdWJsaWMgTW9kdWxlIHsKICAgZW51bSBTZW5kZXJOYWNrTW9kZSB7
IGtOYWNrTm9uZSwga05hY2tBbGwsIGtOYWNrU2VsZWN0aXZlIH07CiAKICAgLy8gREVQUkVDQVRF
RC4KLSAgc3RhdGljIFZpZGVvQ29kaW5nTW9kdWxlKiBDcmVhdGUoQ2xvY2sqIGNsb2NrLCBFdmVu
dEZhY3RvcnkqIGV2ZW50X2ZhY3RvcnkpOworICBzdGF0aWMgVmlkZW9Db2RpbmdNb2R1bGUqIENy
ZWF0ZShDbG9jayogY2xvY2spOwogCiAgIC8qCiAgICAqICAgU2VuZGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZ19kZWZpbmVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVv
X2NvZGluZ19kZWZpbmVzLmgKaW5kZXggN2ZiNmY1ODM2NDc3M2Y4ZmE4MTgzOTZlMWNiN2Y2ODRm
OGVkYjA2Zi4uN2JiYzk4ZmQ0ODMxYThlMjhhNDQwY2VlOWFkMjdmNjgyNjk2MGMxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RpbmdfZGVmaW5lcy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2lu
Y2x1ZGUvdmlkZW9fY29kaW5nX2RlZmluZXMuaApAQCAtMTUsOCArMTUsNiBAQAogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgotLy8gRm9yIEVu
Y29kZWRJbWFnZQotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CkBAIC00Myw3ICs0MSw3IEBAIGVudW0gewogICAvLyB8a0RlZmF1bHRU
aW1pbmdGcmFtZXNEZWxheU1zfCwgb3IgaWYgdGhlIGZyYW1lIGlzIGF0IGxlYXN0CiAgIC8vIHxr
RGVmYXVsdE91dGxpc2VyRnJhbWVTaXplUGVyY2VudHwgaW4gc2l6ZSBvZiBhdmVyYWdlIGZyYW1l
LgogICBrRGVmYXVsdFRpbWluZ0ZyYW1lc0RlbGF5TXMgPSAyMDAsCi0gIGtEZWZhdWx0T3V0bGll
ckZyYW1lU2l6ZVBlcmNlbnQgPSAyNTAsCisgIGtEZWZhdWx0T3V0bGllckZyYW1lU2l6ZVBlcmNl
bnQgPSA1MDAsCiAgIC8vIE1heGltdW0gbnVtYmVyIG9mIGZyYW1lcyBmb3Igd2hhdCB3ZSBzdG9y
ZSBlbmNvZGUgc3RhcnQgdGltaW5nIGluZm9ybWF0aW9uLgogICBrTWF4RW5jb2RlU3RhcnRUaW1l
TGlzdFNpemUgPSA1MCwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfYnVmZmVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9qaXR0ZXJfYnVmZmVyLmgKaW5kZXggZjY0OWFkYzhiM2FiMzU5MzA0YWQxYzVjY2JjZTNi
MjQ2Zjg4NDgwMC4uNDgyNjI3NjA0NTUzY2QzMjEyMjJmMmJkYTg0ZDZjZTVkOTc1OTA0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2Rpbmcvaml0dGVyX2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9idWZmZXIu
aApAQCAtMzUsNyArMzUsNiBAQCBlbnVtIFZDTU5hY2tNb2RlIHsga05hY2ssIGtOb05hY2sgfTsK
IAogLy8gZm9yd2FyZCBkZWNsYXJhdGlvbnMKIGNsYXNzIENsb2NrOwotY2xhc3MgRXZlbnRGYWN0
b3J5OwogY2xhc3MgRXZlbnRXcmFwcGVyOwogY2xhc3MgVkNNRnJhbWVCdWZmZXI7CiBjbGFzcyBW
Q01QYWNrZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfYnVmZmVyX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2Rpbmcvaml0dGVyX2J1ZmZlcl91bml0dGVzdC5jYwppbmRleCA2YWU2NWQ2MmU5ODZjNzI4Y2Fk
OThkNDdkNGVhY2JiYjFlY2I2ZDBjLi4zZWQxOGE5Mzg2NTBiN2JlMGRjZGM2NTM5ZWNlYmQyNjFh
MGJlZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfYnVmZmVyX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2ppdHRlcl9idWZmZXJfdW5pdHRlc3QuY2MKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9tZWRpYV9vcHRfdXRpbC5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL3BhY2tldC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL3Rlc3Qvc3RyZWFtX2dlbmVyYXRvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL3Rlc3QvdGVzdF91dGlsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIKICNp
bmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCkBAIC0yMjAsOSArMjE5LDcgQEAgY2xh
c3MgVGVzdEJhc2ljSml0dGVyQnVmZmVyIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxzdGQ6OnN0cmluZz4sCiAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7CiAgICAgY2xvY2tfLnJl
c2V0KG5ldyBTaW11bGF0ZWRDbG9jaygwKSk7CiAgICAgaml0dGVyX2J1ZmZlcl8ucmVzZXQobmV3
IFZDTUppdHRlckJ1ZmZlcigKLSAgICAgICAgY2xvY2tfLmdldCgpLAotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RXZlbnRXcmFwcGVyPihldmVudF9mYWN0b3J5Xy5DcmVhdGVFdmVudCgpKSwgdGhp
cywKLSAgICAgICAgdGhpcykpOworICAgICAgICBjbG9ja18uZ2V0KCksIGFic2w6OldyYXBVbmlx
dWUoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksIHRoaXMsIHRoaXMpKTsKICAgICBqaXR0ZXJfYnVm
ZmVyXy0+U3RhcnQoKTsKICAgICBzZXFfbnVtXyA9IDEyMzQ7CiAgICAgdGltZXN0YW1wXyA9IDA7
CkBAIC0zMTMsNyArMzEwLDYgQEAgY2xhc3MgVGVzdEJhc2ljSml0dGVyQnVmZmVyIDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4sCiAgIHVpbnQ4X3QgZGF0YV9b
MTUwMF07CiAgIHN0ZDo6dW5pcXVlX3B0cjxWQ01QYWNrZXQ+IHBhY2tldF87CiAgIHN0ZDo6dW5p
cXVlX3B0cjxTaW11bGF0ZWRDbG9jaz4gY2xvY2tfOwotICBOdWxsRXZlbnRGYWN0b3J5IGV2ZW50
X2ZhY3RvcnlfOwogICBzdGQ6OnVuaXF1ZV9wdHI8VkNNSml0dGVyQnVmZmVyPiBqaXR0ZXJfYnVm
ZmVyXzsKIH07CiAKQEAgLTMzOSw5ICszMzUsNyBAQCBjbGFzcyBUZXN0UnVubmluZ0ppdHRlckJ1
ZmZlciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08c3RkOjpzdHJpbmc+LAogICAg
IG1heF9uYWNrX2xpc3Rfc2l6ZV8gPSAxNTA7CiAgICAgb2xkZXN0X3BhY2tldF90b19uYWNrXyA9
IDI1MDsKICAgICBqaXR0ZXJfYnVmZmVyXyA9IG5ldyBWQ01KaXR0ZXJCdWZmZXIoCi0gICAgICAg
IGNsb2NrXy5nZXQoKSwKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4oZXZl
bnRfZmFjdG9yeV8uQ3JlYXRlRXZlbnQoKSksIHRoaXMsCi0gICAgICAgIHRoaXMpOworICAgICAg
ICBjbG9ja18uZ2V0KCksIGFic2w6OldyYXBVbmlxdWUoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSks
IHRoaXMsIHRoaXMpOwogICAgIHN0cmVhbV9nZW5lcmF0b3JfID0gbmV3IFN0cmVhbUdlbmVyYXRv
cigwLCBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKICAgICBqaXR0ZXJfYnVmZmVyXy0+
U3RhcnQoKTsKICAgICBqaXR0ZXJfYnVmZmVyXy0+U2V0TmFja1NldHRpbmdzKG1heF9uYWNrX2xp
c3Rfc2l6ZV8sIG9sZGVzdF9wYWNrZXRfdG9fbmFja18sCkBAIC00MzMsNyArNDI3LDYgQEAgY2xh
c3MgVGVzdFJ1bm5pbmdKaXR0ZXJCdWZmZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPHN0ZDo6c3RyaW5nPiwKICAgVkNNSml0dGVyQnVmZmVyKiBqaXR0ZXJfYnVmZmVyXzsKICAg
U3RyZWFtR2VuZXJhdG9yKiBzdHJlYW1fZ2VuZXJhdG9yXzsKICAgc3RkOjp1bmlxdWVfcHRyPFNp
bXVsYXRlZENsb2NrPiBjbG9ja187Ci0gIE51bGxFdmVudEZhY3RvcnkgZXZlbnRfZmFjdG9yeV87
CiAgIHNpemVfdCBtYXhfbmFja19saXN0X3NpemVfOwogICBpbnQgb2xkZXN0X3BhY2tldF90b19u
YWNrXzsKICAgdWludDhfdCBkYXRhX2J1ZmZlcl9ba0RhdGFCdWZmZXJTaXplXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmNj
CmluZGV4IDVlNzU0ZjEwODg1ZWRjNjY1NWUyZTcxNTJhNDQ3YmVkNDAzODU5N2IuLjBkMGZhYzcy
OTFlOGZkZGQ0MWRjNmIzNTVhOTM1ZjY0OTZkMTY0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRl
cl9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2VzdGltYXRvci5jYwpAQCAtMTQsMTgg
KzE0LDI0IEBACiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1
ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdHJpbmc+CiAK
KyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvaW50ZXJuYWxfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL3J0dF9maWx0ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9qaXR0ZXJf
dXBwZXJfYm91bmRfZXhwZXJpbWVudC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNs
dWRlL2Nsb2NrLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJp
YWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWVudW0geyBrU3RhcnR1cERlbGF5U2FtcGxl
cyA9IDMwIH07Ci1lbnVtIHsga0ZzQWNjdVN0YXJ0dXBTYW1wbGVzID0gNSB9OwotZW51bSB7IGtN
YXhGcmFtZXJhdGVFc3RpbWF0ZSA9IDIwMCB9OworbmFtZXNwYWNlIHsKK3N0YXRpYyBjb25zdGV4
cHIgdWludDMyX3Qga1N0YXJ0dXBEZWxheVNhbXBsZXMgPSAzMDsKK3N0YXRpYyBjb25zdGV4cHIg
aW50NjRfdCBrRnNBY2N1U3RhcnR1cFNhbXBsZXMgPSA1Oworc3RhdGljIGNvbnN0ZXhwciBkb3Vi
bGUga01heEZyYW1lcmF0ZUVzdGltYXRlID0gMjAwLjA7CitzdGF0aWMgY29uc3RleHByIGludDY0
X3Qga05hY2tDb3VudFRpbWVvdXRNcyA9IDYwMDAwOworc3RhdGljIGNvbnN0ZXhwciBkb3VibGUg
a0RlZmF1bHRNYXhUaW1lc3RhbXBEZXZpYXRpb25JblNpZ21hcyA9IDMuNTsKK30gIC8vIG5hbWVz
cGFjZQogCiBWQ01KaXR0ZXJFc3RpbWF0b3I6OlZDTUppdHRlckVzdGltYXRvcihjb25zdCBDbG9j
ayogY2xvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90
IHZjbUlkLApAQCAtNDUsNyArNTEsOSBAQCBWQ01KaXR0ZXJFc3RpbWF0b3I6OlZDTUppdHRlckVz
dGltYXRvcihjb25zdCBDbG9jayogY2xvY2ssCiAgICAgICBfcnR0RmlsdGVyKCksCiAgICAgICBm
cHNfY291bnRlcl8oMzApLCAgLy8gVE9ETyhzcHJhbmcpOiBVc2UgYW4gZXN0aW1hdG9yIHdpdGgg
bGltaXQgYmFzZWQgb24KICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aW1lLCByYXRoZXIg
dGhhbiBudW1iZXIgb2Ygc2FtcGxlcy4KLSAgICAgIGxvd19yYXRlX2V4cGVyaW1lbnRfKGtJbml0
KSwKKyAgICAgIHRpbWVfZGV2aWF0aW9uX3VwcGVyX2JvdW5kXygKKyAgICAgICAgICBKaXR0ZXJV
cHBlckJvdW5kRXhwZXJpbWVudDo6R2V0VXBwZXJCb3VuZFNpZ21hcygpLnZhbHVlX29yKAorICAg
ICAgICAgICAgICBrRGVmYXVsdE1heFRpbWVzdGFtcERldmlhdGlvbkluU2lnbWFzKSksCiAgICAg
ICBjbG9ja18oY2xvY2spIHsKICAgUmVzZXQoKTsKIH0KQEAgLTc1LDYgKzgzLDcgQEAgVkNNSml0
dGVyRXN0aW1hdG9yJiBWQ01KaXR0ZXJFc3RpbWF0b3I6Om9wZXJhdG9yPSgKICAgICBfbGF0ZXN0
TmFja1RpbWVzdGFtcCA9IHJocy5fbGF0ZXN0TmFja1RpbWVzdGFtcDsKICAgICBfbmFja0NvdW50
ID0gcmhzLl9uYWNrQ291bnQ7CiAgICAgX3J0dEZpbHRlciA9IHJocy5fcnR0RmlsdGVyOworICAg
IGNsb2NrXyA9IHJocy5jbG9ja187CiAgIH0KICAgcmV0dXJuICp0aGlzOwogfQpAQCAtMTAyLDYg
KzExMSw3IEBAIHZvaWQgVkNNSml0dGVyRXN0aW1hdG9yOjpSZXNldCgpIHsKICAgX2ZpbHRlckpp
dHRlckVzdGltYXRlID0gMC4wOwogICBfbGF0ZXN0TmFja1RpbWVzdGFtcCA9IDA7CiAgIF9uYWNr
Q291bnQgPSAwOworICBfbGF0ZXN0TmFja1RpbWVzdGFtcCA9IDA7CiAgIF9mc1N1bSA9IDA7CiAg
IF9mc0NvdW50ID0gMDsKICAgX3N0YXJ0dXBDb3VudCA9IDA7CkBAIC0xNTUsNiArMTY1LDEyIEBA
IHZvaWQgVkNNSml0dGVyRXN0aW1hdG9yOjpVcGRhdGVFc3RpbWF0ZShpbnQ2NF90IGZyYW1lRGVs
YXlNUywKICAgfQogICBfcHJldkZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUJ5dGVzOwogCisgIC8vIENh
cCBmcmFtZURlbGF5TVMgYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZSBkZXZpYXRpb24gbm9pc2Uu
CisgIGludDY0X3QgbWF4X3RpbWVfZGV2aWF0aW9uX21zID0KKyAgICAgIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHRpbWVfZGV2aWF0aW9uX3VwcGVyX2JvdW5kXyAqIHNxcnQoX3Zhck5vaXNlKSArIDAu
NSk7CisgIGZyYW1lRGVsYXlNUyA9IHN0ZDo6bWF4KHN0ZDo6bWluKGZyYW1lRGVsYXlNUywgbWF4
X3RpbWVfZGV2aWF0aW9uX21zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLW1heF90aW1l
X2RldmlhdGlvbl9tcyk7CisKICAgLy8gT25seSB1cGRhdGUgdGhlIEthbG1hbiBmaWx0ZXIgaWYg
dGhlIHNhbXBsZSBpcyBub3QgY29uc2lkZXJlZAogICAvLyBhbiBleHRyZW1lIG91dGxpZXIuIEV2
ZW4gaWYgaXQgaXMgYW4gZXh0cmVtZSBvdXRsaWVyIGZyb20gYQogICAvLyBkZWxheSBwb2ludCBv
ZiB2aWV3LCBpZiB0aGUgZnJhbWUgc2l6ZSBhbHNvIGlzIGxhcmdlIHRoZQpAQCAtMTkzLDE1ICsy
MDksMTAgQEAgdm9pZCBWQ01KaXR0ZXJFc3RpbWF0b3I6OlVwZGF0ZUVzdGltYXRlKGludDY0X3Qg
ZnJhbWVEZWxheU1TLAogCiAvLyBVcGRhdGVzIHRoZSBuYWNrL3BhY2tldCByYXRpbwogdm9pZCBW
Q01KaXR0ZXJFc3RpbWF0b3I6OkZyYW1lTmFja2VkKCkgewotICAvLyBXYWl0IHVudGlsIF9uYWNr
TGltaXQgcmV0cmFuc21pc3Npb25zIGhhcyBiZWVuIHJlY2VpdmVkLAotICAvLyB0aGVuIGFsd2F5
cyBhZGQgfjEgUlRUIGRlbGF5LgotICAvLyBUT0RPKGhvbG1lcik6IFNob3VsZCB3ZSBldmVyIHJl
bW92ZSB0aGUgYWRkaXRpb25hbCBkZWxheSBpZiB0aGUKLSAgLy8gdGhlIHBhY2tldCBsb3NzZXMg
c2VlbSB0byBoYXZlIHN0b3BwZWQ/IFdlIGNvdWxkIGZvciBpbnN0YW5jZSBzY2FsZQotICAvLyB0
aGUgbnVtYmVyIG9mIFJUVHMgdG8gYWRkIHdpdGggdGhlIGFtb3VudCBvZiByZXRyYW5zbWlzc2lv
bnMgaW4gYSBnaXZlbgotICAvLyB0aW1lIGludGVydmFsLCBvciBzaW1pbGFyLgogICBpZiAoX25h
Y2tDb3VudCA8IF9uYWNrTGltaXQpIHsKICAgICBfbmFja0NvdW50Kys7CiAgIH0KKyAgX2xhdGVz
dE5hY2tUaW1lc3RhbXAgPSBjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOwogfQogCiAvLyBV
cGRhdGVzIEthbG1hbiBlc3RpbWF0ZSBvZiB0aGUgY2hhbm5lbApAQCAtMzA5LDIyICszMjAsMjAg
QEAgdm9pZCBWQ01KaXR0ZXJFc3RpbWF0b3I6OkVzdGltYXRlUmFuZG9tSml0dGVyKGRvdWJsZSBk
X2RULAogICBpZiAoX2FscGhhQ291bnQgPiBfYWxwaGFDb3VudE1heCkKICAgICBfYWxwaGFDb3Vu
dCA9IF9hbHBoYUNvdW50TWF4OwogCi0gIGlmIChMb3dSYXRlRXhwZXJpbWVudEVuYWJsZWQoKSkg
ewotICAgIC8vIEluIG9yZGVyIHRvIGF2b2lkIGEgbG93IGZyYW1lIHJhdGUgc3RyZWFtIHRvIHJl
YWN0IHNsb3dlciB0byBjaGFuZ2VzLAotICAgIC8vIHNjYWxlIHRoZSBhbHBoYSB3ZWlnaHQgcmVs
YXRpdmUgYSAzMCBmcHMgc3RyZWFtLgotICAgIGRvdWJsZSBmcHMgPSBHZXRGcmFtZVJhdGUoKTsK
LSAgICBpZiAoZnBzID4gMC4wKSB7Ci0gICAgICBkb3VibGUgcmF0ZV9zY2FsZSA9IDMwLjAgLyBm
cHM7Ci0gICAgICAvLyBBdCBzdGFydHVwLCB0aGVyZSBjYW4gYmUgYSBsb3Qgb2Ygbm9pc2UgaW4g
dGhlIGZwcyBlc3RpbWF0ZS4KLSAgICAgIC8vIEludGVycG9sYXRlIHJhdGVfc2NhbGUgbGluZWFy
bHksIGZyb20gMS4wIGF0IHNhbXBsZSAjMSwgdG8gMzAuMCAvIGZwcwotICAgICAgLy8gYXQgc2Ft
cGxlICNrU3RhcnR1cERlbGF5U2FtcGxlcy4KLSAgICAgIGlmIChfYWxwaGFDb3VudCA8IGtTdGFy
dHVwRGVsYXlTYW1wbGVzKSB7Ci0gICAgICAgIHJhdGVfc2NhbGUgPQotICAgICAgICAgICAgKF9h
bHBoYUNvdW50ICogcmF0ZV9zY2FsZSArIChrU3RhcnR1cERlbGF5U2FtcGxlcyAtIF9hbHBoYUNv
dW50KSkgLwotICAgICAgICAgICAga1N0YXJ0dXBEZWxheVNhbXBsZXM7Ci0gICAgICB9Ci0gICAg
ICBhbHBoYSA9IHBvdyhhbHBoYSwgcmF0ZV9zY2FsZSk7CisgIC8vIEluIG9yZGVyIHRvIGF2b2lk
IGEgbG93IGZyYW1lIHJhdGUgc3RyZWFtIHRvIHJlYWN0IHNsb3dlciB0byBjaGFuZ2VzLAorICAv
LyBzY2FsZSB0aGUgYWxwaGEgd2VpZ2h0IHJlbGF0aXZlIGEgMzAgZnBzIHN0cmVhbS4KKyAgZG91
YmxlIGZwcyA9IEdldEZyYW1lUmF0ZSgpOworICBpZiAoZnBzID4gMC4wKSB7CisgICAgZG91Ymxl
IHJhdGVfc2NhbGUgPSAzMC4wIC8gZnBzOworICAgIC8vIEF0IHN0YXJ0dXAsIHRoZXJlIGNhbiBi
ZSBhIGxvdCBvZiBub2lzZSBpbiB0aGUgZnBzIGVzdGltYXRlLgorICAgIC8vIEludGVycG9sYXRl
IHJhdGVfc2NhbGUgbGluZWFybHksIGZyb20gMS4wIGF0IHNhbXBsZSAjMSwgdG8gMzAuMCAvIGZw
cworICAgIC8vIGF0IHNhbXBsZSAja1N0YXJ0dXBEZWxheVNhbXBsZXMuCisgICAgaWYgKF9hbHBo
YUNvdW50IDwga1N0YXJ0dXBEZWxheVNhbXBsZXMpIHsKKyAgICAgIHJhdGVfc2NhbGUgPQorICAg
ICAgICAgIChfYWxwaGFDb3VudCAqIHJhdGVfc2NhbGUgKyAoa1N0YXJ0dXBEZWxheVNhbXBsZXMg
LSBfYWxwaGFDb3VudCkpIC8KKyAgICAgICAgICBrU3RhcnR1cERlbGF5U2FtcGxlczsKICAgICB9
CisgICAgYWxwaGEgPSBwb3coYWxwaGEsIHJhdGVfc2NhbGUpOwogICB9CiAKICAgZG91YmxlIGF2
Z05vaXNlID0gYWxwaGEgKiBfYXZnTm9pc2UgKyAoMSAtIGFscGhhKSAqIGRfZFQ7CkBAIC0zODYs
NDYgKzM5NSwzNSBAQCB2b2lkIFZDTUppdHRlckVzdGltYXRvcjo6VXBkYXRlTWF4RnJhbWVTaXpl
KHVpbnQzMl90IGZyYW1lU2l6ZUJ5dGVzKSB7CiAvLyBvdGhlcndpc2UgdHJpZXMgdG8gY2FsY3Vs
YXRlIGFuIGVzdGltYXRlLgogaW50IFZDTUppdHRlckVzdGltYXRvcjo6R2V0Sml0dGVyRXN0aW1h
dGUoZG91YmxlIHJ0dE11bHRpcGxpZXIpIHsKICAgZG91YmxlIGppdHRlck1TID0gQ2FsY3VsYXRl
RXN0aW1hdGUoKSArIE9QRVJBVElOR19TWVNURU1fSklUVEVSOworICB1aW50NjRfdCBub3cgPSBj
bG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOworCisgIGlmIChub3cgLSBfbGF0ZXN0TmFja1Rp
bWVzdGFtcCA+IGtOYWNrQ291bnRUaW1lb3V0TXMgKiAxMDAwKQorICAgIF9uYWNrQ291bnQgPSAw
OworCiAgIGlmIChfZmlsdGVySml0dGVyRXN0aW1hdGUgPiBqaXR0ZXJNUykKICAgICBqaXR0ZXJN
UyA9IF9maWx0ZXJKaXR0ZXJFc3RpbWF0ZTsKICAgaWYgKF9uYWNrQ291bnQgPj0gX25hY2tMaW1p
dCkKICAgICBqaXR0ZXJNUyArPSBfcnR0RmlsdGVyLlJ0dE1zKCkgKiBydHRNdWx0aXBsaWVyOwog
Ci0gIGlmIChMb3dSYXRlRXhwZXJpbWVudEVuYWJsZWQoKSkgewotICAgIHN0YXRpYyBjb25zdCBk
b3VibGUga0ppdHRlclNjYWxlTG93VGhyZXNob2xkID0gNS4wOwotICAgIHN0YXRpYyBjb25zdCBk
b3VibGUga0ppdHRlclNjYWxlSGlnaFRocmVzaG9sZCA9IDEwLjA7Ci0gICAgZG91YmxlIGZwcyA9
IEdldEZyYW1lUmF0ZSgpOwotICAgIC8vIElnbm9yZSBqaXR0ZXIgZm9yIHZlcnkgbG93IGZwcyBz
dHJlYW1zLgotICAgIGlmIChmcHMgPCBrSml0dGVyU2NhbGVMb3dUaHJlc2hvbGQpIHsKLSAgICAg
IGlmIChmcHMgPT0gMC4wKSB7Ci0gICAgICAgIHJldHVybiBqaXR0ZXJNUzsKLSAgICAgIH0KLSAg
ICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8vIFNlbWktbG93IGZyYW1lIHJhdGU7IHNjYWxl
IGJ5IGZhY3RvciBsaW5lYXJseSBpbnRlcnBvbGF0ZWQgZnJvbSAwLjAgYXQKLSAgICAvLyBrSml0
dGVyU2NhbGVMb3dUaHJlc2hvbGQgdG8gMS4wIGF0IGtKaXR0ZXJTY2FsZUhpZ2hUaHJlc2hvbGQu
Ci0gICAgaWYgKGZwcyA8IGtKaXR0ZXJTY2FsZUhpZ2hUaHJlc2hvbGQpIHsKLSAgICAgIGppdHRl
ck1TID0KLSAgICAgICAgICAoMS4wIC8gKGtKaXR0ZXJTY2FsZUhpZ2hUaHJlc2hvbGQgLSBrSml0
dGVyU2NhbGVMb3dUaHJlc2hvbGQpKSAqCi0gICAgICAgICAgKGZwcyAtIGtKaXR0ZXJTY2FsZUxv
d1RocmVzaG9sZCkgKiBqaXR0ZXJNUzsKKyAgc3RhdGljIGNvbnN0IGRvdWJsZSBrSml0dGVyU2Nh
bGVMb3dUaHJlc2hvbGQgPSA1LjA7CisgIHN0YXRpYyBjb25zdCBkb3VibGUga0ppdHRlclNjYWxl
SGlnaFRocmVzaG9sZCA9IDEwLjA7CisgIGRvdWJsZSBmcHMgPSBHZXRGcmFtZVJhdGUoKTsKKyAg
Ly8gSWdub3JlIGppdHRlciBmb3IgdmVyeSBsb3cgZnBzIHN0cmVhbXMuCisgIGlmIChmcHMgPCBr
Sml0dGVyU2NhbGVMb3dUaHJlc2hvbGQpIHsKKyAgICBpZiAoZnBzID09IDAuMCkgeworICAgICAg
cmV0dXJuIHJ0Yzo6Y2hlY2tlZF9jYXN0PGludD4oc3RkOjptYXgoMC4wLCBqaXR0ZXJNUykgKyAw
LjUpOwogICAgIH0KKyAgICByZXR1cm4gMDsKICAgfQogCi0gIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oaml0dGVyTVMgKyAwLjUpOwotfQotCi1ib29sIFZDTUppdHRlckVzdGltYXRvcjo6
TG93UmF0ZUV4cGVyaW1lbnRFbmFibGVkKCkgewotICBpZiAobG93X3JhdGVfZXhwZXJpbWVudF8g
PT0ga0luaXQpIHsKLSAgICBzdGQ6OnN0cmluZyBncm91cCA9Ci0gICAgICAgIHdlYnJ0Yzo6Zmll
bGRfdHJpYWw6OkZpbmRGdWxsTmFtZSgiV2ViUlRDLVJlZHVjZWRKaXR0ZXJEZWxheSIpOwotICAg
IGlmIChncm91cCA9PSAiRGlzYWJsZWQiKSB7Ci0gICAgICBsb3dfcmF0ZV9leHBlcmltZW50XyA9
IGtEaXNhYmxlZDsKLSAgICB9IGVsc2UgewotICAgICAgbG93X3JhdGVfZXhwZXJpbWVudF8gPSBr
RW5hYmxlZDsKLSAgICB9CisgIC8vIFNlbWktbG93IGZyYW1lIHJhdGU7IHNjYWxlIGJ5IGZhY3Rv
ciBsaW5lYXJseSBpbnRlcnBvbGF0ZWQgZnJvbSAwLjAgYXQKKyAgLy8ga0ppdHRlclNjYWxlTG93
VGhyZXNob2xkIHRvIDEuMCBhdCBrSml0dGVyU2NhbGVIaWdoVGhyZXNob2xkLgorICBpZiAoZnBz
IDwga0ppdHRlclNjYWxlSGlnaFRocmVzaG9sZCkgeworICAgIGppdHRlck1TID0gKDEuMCAvIChr
Sml0dGVyU2NhbGVIaWdoVGhyZXNob2xkIC0ga0ppdHRlclNjYWxlTG93VGhyZXNob2xkKSkgKgor
ICAgICAgICAgICAgICAgKGZwcyAtIGtKaXR0ZXJTY2FsZUxvd1RocmVzaG9sZCkgKiBqaXR0ZXJN
UzsKICAgfQotICByZXR1cm4gbG93X3JhdGVfZXhwZXJpbWVudF8gPT0ga0VuYWJsZWQgPyB0cnVl
IDogZmFsc2U7CisKKyAgcmV0dXJuIHJ0Yzo6Y2hlY2tlZF9jYXN0PGludD4oc3RkOjptYXgoMC4w
LCBqaXR0ZXJNUykgKyAwLjUpOwogfQogCiBkb3VibGUgVkNNSml0dGVyRXN0aW1hdG9yOjpHZXRG
cmFtZVJhdGUoKSBjb25zdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmgKaW5kZXggYWViYTNlZGVkMzNjZDE1N2M1NGNlNzVj
YTMxZDFmY2Y0MzM4NmMwZC4uNTZiNTMyODUxZDkzOWNlODkzNjYwNmRjNjJjZmNjY2U0YjcxODcx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRl
cl9lc3RpbWF0b3IuaApAQCAtNzIsOCArNzIsNiBAQCBjbGFzcyBWQ01KaXR0ZXJFc3RpbWF0b3Ig
ewogICBkb3VibGUgX3RoZXRhWzJdOyAgLy8gRXN0aW1hdGVkIGxpbmUgcGFyYW1ldGVycyAoc2xv
cGUsIG9mZnNldCkKICAgZG91YmxlIF92YXJOb2lzZTsgIC8vIFZhcmlhbmNlIG9mIHRoZSB0aW1l
LWRldmlhdGlvbiBmcm9tIHRoZSBsaW5lCiAKLSAgdmlydHVhbCBib29sIExvd1JhdGVFeHBlcmlt
ZW50RW5hYmxlZCgpOwotCiAgcHJpdmF0ZToKICAgLy8gVXBkYXRlcyB0aGUgS2FsbWFuIGZpbHRl
ciBmb3IgdGhlIGxpbmUgZGVzY3JpYmluZwogICAvLyB0aGUgZnJhbWUgc2l6ZSBkZXBlbmRlbnQg
aml0dGVyLgpAQCAtMTU5LDggKzE1Nyw3IEBAIGNsYXNzIFZDTUppdHRlckVzdGltYXRvciB7CiAg
IFZDTVJ0dEZpbHRlciBfcnR0RmlsdGVyOwogCiAgIHJ0Yzo6Um9sbGluZ0FjY3VtdWxhdG9yPHVp
bnQ2NF90PiBmcHNfY291bnRlcl87Ci0gIGVudW0gRXhwZXJpbWVudEZsYWcgeyBrSW5pdCwga0Vu
YWJsZWQsIGtEaXNhYmxlZCB9OwotICBFeHBlcmltZW50RmxhZyBsb3dfcmF0ZV9leHBlcmltZW50
XzsKKyAgY29uc3QgZG91YmxlIHRpbWVfZGV2aWF0aW9uX3VwcGVyX2JvdW5kXzsKICAgY29uc3Qg
Q2xvY2sqIGNsb2NrXzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3Jf
dGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yX3Rlc3RzLmNjCmluZGV4IGYwMGUxZWY2
ZGE4YjY0NTY1OTcyYzhjZGFjZDc0OTNlZDI0MjJmYjcuLjQ1MjYyZWY4MzYwMmU3YzE1ZTJhOWNm
M2I5ZTgwNjZmMzVhOTI3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3JfdGVz
dHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2VzdGltYXRvcl90ZXN0cy5jYwpAQCAtOSwzOCArOSwz
MCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2VzdGltYXRvci5o
IgogCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvaml0dGVyX3VwcGVyX2JvdW5kX2V4
cGVyaW1lbnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvbnVtZXJpY3MvaGlzdG9ncmFtX3BlcmNlbnRpbGVfY291bnRlci5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRl
L2Nsb2NrLmgiCisjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3Qv
Z3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIFRlc3RFc3RpbWF0b3IgOiBw
dWJsaWMgVkNNSml0dGVyRXN0aW1hdG9yIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFRlc3RFc3Rp
bWF0b3IoYm9vbCBleHBfZW5hYmxlZCkKLSAgICAgIDogVkNNSml0dGVyRXN0aW1hdG9yKCZmYWtl
X2Nsb2NrXywgMCwgMCksCi0gICAgICAgIGZha2VfY2xvY2tfKDApLAotICAgICAgICBleHBfZW5h
YmxlZF8oZXhwX2VuYWJsZWQpIHt9CitjbGFzcyBUZXN0VkNNSml0dGVyRXN0aW1hdG9yIDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBUZXN0VkNNSml0dGVyRXN0aW1h
dG9yKCkgOiBmYWtlX2Nsb2NrXygwKSB7fQogCi0gIHZpcnR1YWwgYm9vbCBMb3dSYXRlRXhwZXJp
bWVudEVuYWJsZWQoKSB7IHJldHVybiBleHBfZW5hYmxlZF87IH0KKyAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgeworICAgIGVzdGltYXRvcl8gPSBhYnNsOjptYWtlX3VuaXF1ZTxWQ01KaXR0ZXJFc3Rp
bWF0b3I+KCZmYWtlX2Nsb2NrXywgMCwgMCk7CisgIH0KIAogICB2b2lkIEFkdmFuY2VDbG9jayhp
bnQ2NF90IG1pY3Jvc2Vjb25kcykgewogICAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWljcm9z
ZWNvbmRzKG1pY3Jvc2Vjb25kcyk7CiAgIH0KIAotIHByaXZhdGU6CiAgIFNpbXVsYXRlZENsb2Nr
IGZha2VfY2xvY2tfOwotICBjb25zdCBib29sIGV4cF9lbmFibGVkXzsKLX07Ci0KLWNsYXNzIFRl
c3RWQ01KaXR0ZXJFc3RpbWF0b3IgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0
ZWQ6Ci0gIFRlc3RWQ01KaXR0ZXJFc3RpbWF0b3IoKQotICAgICAgOiByZWd1bGFyX2VzdGltYXRv
cl8oZmFsc2UpLCBsb3dfcmF0ZV9lc3RpbWF0b3JfKHRydWUpIHt9Ci0KLSAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeyByZWd1bGFyX2VzdGltYXRvcl8uUmVzZXQoKTsgfQotCi0gIFRlc3RFc3RpbWF0
b3IgcmVndWxhcl9lc3RpbWF0b3JfOwotICBUZXN0RXN0aW1hdG9yIGxvd19yYXRlX2VzdGltYXRv
cl87CisgIHN0ZDo6dW5pcXVlX3B0cjxWQ01KaXR0ZXJFc3RpbWF0b3I+IGVzdGltYXRvcl87CiB9
OwogCiAvLyBHZW5lcmF0ZXMgc29tZSBzaW1wbGUgdGVzdCBkYXRhIGluIHRoZSBmb3JtIG9mIGEg
c2F3dG9vdGggd2F2ZS4KQEAgLTY0LDk4ICs1Niw1NiBAQCBjbGFzcyBWYWx1ZUdlbmVyYXRvciB7
CiAvLyA1IGZwcywgZGlzYWJsZSBqaXR0ZXIgZGVsYXkgYWx0b2dldGhlci4KIFRFU1RfRihUZXN0
VkNNSml0dGVyRXN0aW1hdG9yLCBUZXN0TG93UmF0ZSkgewogICBWYWx1ZUdlbmVyYXRvciBnZW4o
MTApOwotICB1aW50NjRfdCB0aW1lX2RlbHRhID0gMTAwMDAwMCAvIDU7CisgIHVpbnQ2NF90IHRp
bWVfZGVsdGFfdXMgPSBydGM6OmtOdW1NaWNyb3NlY3NQZXJTZWMgLyA1OwogICBmb3IgKGludCBp
ID0gMDsgaSA8IDYwOyArK2kpIHsKLSAgICByZWd1bGFyX2VzdGltYXRvcl8uVXBkYXRlRXN0aW1h
dGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7Ci0gICAgcmVndWxhcl9lc3RpbWF0b3Jf
LkFkdmFuY2VDbG9jayh0aW1lX2RlbHRhKTsKLSAgICBsb3dfcmF0ZV9lc3RpbWF0b3JfLlVwZGF0
ZUVzdGltYXRlKGdlbi5EZWxheSgpLCBnZW4uRnJhbWVTaXplKCkpOwotICAgIGxvd19yYXRlX2Vz
dGltYXRvcl8uQWR2YW5jZUNsb2NrKHRpbWVfZGVsdGEpOwotICAgIEVYUEVDVF9HVChyZWd1bGFy
X2VzdGltYXRvcl8uR2V0Sml0dGVyRXN0aW1hdGUoMCksIDApOworICAgIGVzdGltYXRvcl8tPlVw
ZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgpLCBnZW4uRnJhbWVTaXplKCkpOworICAgIEFkdmFuY2VD
bG9jayh0aW1lX2RlbHRhX3VzKTsKICAgICBpZiAoaSA+IDIpCi0gICAgICBFWFBFQ1RfRVEobG93
X3JhdGVfZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSwgMCk7Ci0gICAgZ2VuLkFkdmFu
Y2UoKTsKLSAgfQotfQotCi0vLyA4IGZwcywgc3RlYWR5IHN0YXRlIGVzdGltYXRlIHNob3VsZCBi
ZSBpbiBpbnRlcnBvbGF0ZWQgaW50ZXJ2YWwgYmV0d2VlbiAwCi0vLyBhbmQgdmFsdWUgb2YgcHJl
dmlvdXMgbWV0aG9kLgotVEVTVF9GKFRlc3RWQ01KaXR0ZXJFc3RpbWF0b3IsIFRlc3RNaWRSYXRl
KSB7Ci0gIFZhbHVlR2VuZXJhdG9yIGdlbigxMCk7Ci0gIHVpbnQ2NF90IHRpbWVfZGVsdGEgPSAx
MDAwMDAwIC8gODsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCA2MDsgKytpKSB7Ci0gICAgcmVndWxh
cl9lc3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgpLCBnZW4uRnJhbWVTaXplKCkp
OwotICAgIHJlZ3VsYXJfZXN0aW1hdG9yXy5BZHZhbmNlQ2xvY2sodGltZV9kZWx0YSk7Ci0gICAg
bG93X3JhdGVfZXN0aW1hdG9yXy5VcGRhdGVFc3RpbWF0ZShnZW4uRGVsYXkoKSwgZ2VuLkZyYW1l
U2l6ZSgpKTsKLSAgICBsb3dfcmF0ZV9lc3RpbWF0b3JfLkFkdmFuY2VDbG9jayh0aW1lX2RlbHRh
KTsKLSAgICBFWFBFQ1RfR1QocmVndWxhcl9lc3RpbWF0b3JfLkdldEppdHRlckVzdGltYXRlKDAp
LCAwKTsKLSAgICBFWFBFQ1RfR1QobG93X3JhdGVfZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0
ZSgwKSwgMCk7Ci0gICAgRVhQRUNUX0dFKHJlZ3VsYXJfZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3Rp
bWF0ZSgwKSwKLSAgICAgICAgICAgICAgbG93X3JhdGVfZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3Rp
bWF0ZSgwKSk7CisgICAgICBFWFBFQ1RfRVEoZXN0aW1hdG9yXy0+R2V0Sml0dGVyRXN0aW1hdGUo
MCksIDApOwogICAgIGdlbi5BZHZhbmNlKCk7CiAgIH0KIH0KIAotLy8gMzAgZnBzLCBzdGVhZHkg
c3RhdGUgZXN0aW1hdGUgc2hvdWxkIGJlIHNhbWUgYXMgcHJldmlvdXMgbWV0aG9kLgotVEVTVF9G
KFRlc3RWQ01KaXR0ZXJFc3RpbWF0b3IsIFRlc3RIaWdoUmF0ZSkgewotICBWYWx1ZUdlbmVyYXRv
ciBnZW4oMTApOwotICB1aW50NjRfdCB0aW1lX2RlbHRhID0gMTAwMDAwMCAvIDMwOwotICBmb3Ig
KGludCBpID0gMDsgaSA8IDYwOyArK2kpIHsKLSAgICByZWd1bGFyX2VzdGltYXRvcl8uVXBkYXRl
RXN0aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7Ci0gICAgcmVndWxhcl9lc3Rp
bWF0b3JfLkFkdmFuY2VDbG9jayh0aW1lX2RlbHRhKTsKLSAgICBsb3dfcmF0ZV9lc3RpbWF0b3Jf
LlVwZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgpLCBnZW4uRnJhbWVTaXplKCkpOwotICAgIGxvd19y
YXRlX2VzdGltYXRvcl8uQWR2YW5jZUNsb2NrKHRpbWVfZGVsdGEpOwotICAgIEVYUEVDVF9FUShy
ZWd1bGFyX2VzdGltYXRvcl8uR2V0Sml0dGVyRXN0aW1hdGUoMCksCi0gICAgICAgICAgICAgIGxv
d19yYXRlX2VzdGltYXRvcl8uR2V0Sml0dGVyRXN0aW1hdGUoMCkpOwotICAgIGdlbi5BZHZhbmNl
KCk7Ci0gIH0KLX0KLQotLy8gMTAgZnBzLCBoaWdoIGppdHRlciB0aGVuIGxvdyBqaXR0ZXIuIExv
dyByYXRlIGVzdGltYXRvciBzaG91bGQgY29udmVyZ2UKLS8vIGZhc3RlciB0byBsb3cgbm9pc2Ug
ZXN0aW1hdGUuCi1URVNUX0YoVGVzdFZDTUppdHRlckVzdGltYXRvciwgVGVzdENvbnZlcmdlbmNl
KSB7Ci0gIC8vIFJlYWNoIGEgc3RlYWR5IHN0YXRlIHdpdGggaGlnaCBub2lzZS4KLSAgVmFsdWVH
ZW5lcmF0b3IgZ2VuKDUwKTsKLSAgdWludDY0X3QgdGltZV9kZWx0YSA9IDEwMDAwMDAgLyAxMDsK
LSAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSkgewotICAgIHJlZ3VsYXJfZXN0aW1hdG9y
Xy5VcGRhdGVFc3RpbWF0ZShnZW4uRGVsYXkoKSwgZ2VuLkZyYW1lU2l6ZSgpKTsKLSAgICByZWd1
bGFyX2VzdGltYXRvcl8uQWR2YW5jZUNsb2NrKHRpbWVfZGVsdGEgKiAyKTsKLSAgICBsb3dfcmF0
ZV9lc3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgpLCBnZW4uRnJhbWVTaXplKCkp
OwotICAgIGxvd19yYXRlX2VzdGltYXRvcl8uQWR2YW5jZUNsb2NrKHRpbWVfZGVsdGEgKiAyKTsK
LSAgICBnZW4uQWR2YW5jZSgpOwotICB9Ci0KLSAgaW50IHRocmVzaG9sZCA9IHJlZ3VsYXJfZXN0
aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSAvIDI7Ci0KLSAgLy8gTmV3IGdlbmVyYXRvciB3
aXRoIHplcm8gbm9pc2UuCi0gIFZhbHVlR2VuZXJhdG9yIGxvd19nZW4oMCk7Ci0gIGludCByZWd1
bGFyX2l0ZXJhdGlvbnMgPSAwOwotICBpbnQgbG93X3JhdGVfaXRlcmF0aW9ucyA9IDA7Ci0gIGZv
ciAoaW50IGkgPSAwOyBpIDwgNTAwOyArK2kpIHsKLSAgICBpZiAocmVndWxhcl9pdGVyYXRpb25z
ID09IDApIHsKLSAgICAgIHJlZ3VsYXJfZXN0aW1hdG9yXy5VcGRhdGVFc3RpbWF0ZShsb3dfZ2Vu
LkRlbGF5KCksIGxvd19nZW4uRnJhbWVTaXplKCkpOwotICAgICAgcmVndWxhcl9lc3RpbWF0b3Jf
LkFkdmFuY2VDbG9jayh0aW1lX2RlbHRhKTsKLSAgICAgIGlmIChyZWd1bGFyX2VzdGltYXRvcl8u
R2V0Sml0dGVyRXN0aW1hdGUoMCkgPCB0aHJlc2hvbGQpIHsKLSAgICAgICAgcmVndWxhcl9pdGVy
YXRpb25zID0gaTsKLSAgICAgIH0KK1RFU1RfRihUZXN0VkNNSml0dGVyRXN0aW1hdG9yLCBUZXN0
VXBwZXJCb3VuZCkgeworICBzdHJ1Y3QgVGVzdENvbnRleHQgeworICAgIFRlc3RDb250ZXh0KCkg
OiB1cHBlcl9ib3VuZCgwLjApLCBwZXJjZW50aWxlcygxMDAwKSB7fQorICAgIGRvdWJsZSB1cHBl
cl9ib3VuZDsKKyAgICBydGM6Okhpc3RvZ3JhbVBlcmNlbnRpbGVDb3VudGVyIHBlcmNlbnRpbGVz
OworICB9OworICBzdGQ6OnZlY3RvcjxUZXN0Q29udGV4dD4gdGVzdF9jYXNlcygyKTsKKworICB0
ZXN0X2Nhc2VzWzBdLnVwcGVyX2JvdW5kID0gMTAwLjA7ICAvLyBGaXJzdCB1c2UgZXNzZW50aWFs
bHkgbm8gY2FwLgorICB0ZXN0X2Nhc2VzWzFdLnVwcGVyX2JvdW5kID0gMy41OyAgICAvLyBTZWNv
bmQsIHJlYXNvbmFibHkgc21hbGwgY2FwLgorCisgIGZvciAoVGVzdENvbnRleHQmIGNvbnRleHQg
OiB0ZXN0X2Nhc2VzKSB7CisgICAgLy8gU2V0IHVwIGZpZWxkIHRyaWFsIGFuZCByZXNldCBqaXR0
ZXIgZXN0aW1hdG9yLgorICAgIGNoYXIgc3RyaW5nX2J1Zls2NF07CisgICAgcnRjOjpTaW1wbGVT
dHJpbmdCdWlsZGVyIHNzYihzdHJpbmdfYnVmKTsKKyAgICBzc2IgPDwgSml0dGVyVXBwZXJCb3Vu
ZEV4cGVyaW1lbnQ6OmtKaXR0ZXJVcHBlckJvdW5kRXhwZXJpbWVudE5hbWUKKyAgICAgICAgPDwg
Ii9FbmFibGVkLSIgPDwgY29udGV4dC51cHBlcl9ib3VuZCA8PCAiLyI7CisgICAgdGVzdDo6U2Nv
cGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKHNzYi5zdHIoKSk7CisgICAgU2V0VXAoKTsKKwor
ICAgIFZhbHVlR2VuZXJhdG9yIGdlbig1MCk7CisgICAgdWludDY0X3QgdGltZV9kZWx0YV91cyA9
IHJ0Yzo6a051bU1pY3Jvc2Vjc1BlclNlYyAvIDMwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
MTAwOyArK2kpIHsKKyAgICAgIGVzdGltYXRvcl8tPlVwZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgp
LCBnZW4uRnJhbWVTaXplKCkpOworICAgICAgQWR2YW5jZUNsb2NrKHRpbWVfZGVsdGFfdXMpOwor
ICAgICAgY29udGV4dC5wZXJjZW50aWxlcy5BZGQoCisgICAgICAgICAgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGVzdGltYXRvcl8tPkdldEppdHRlckVzdGltYXRlKDApKSk7CisgICAgICBnZW4uQWR2
YW5jZSgpOwogICAgIH0KLQotICAgIGlmIChsb3dfcmF0ZV9pdGVyYXRpb25zID09IDApIHsKLSAg
ICAgIGxvd19yYXRlX2VzdGltYXRvcl8uVXBkYXRlRXN0aW1hdGUobG93X2dlbi5EZWxheSgpLCBs
b3dfZ2VuLkZyYW1lU2l6ZSgpKTsKLSAgICAgIGxvd19yYXRlX2VzdGltYXRvcl8uQWR2YW5jZUNs
b2NrKHRpbWVfZGVsdGEpOwotICAgICAgaWYgKGxvd19yYXRlX2VzdGltYXRvcl8uR2V0Sml0dGVy
RXN0aW1hdGUoMCkgPCB0aHJlc2hvbGQpIHsKLSAgICAgICAgbG93X3JhdGVfaXRlcmF0aW9ucyA9
IGk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHJlZ3VsYXJfaXRlcmF0aW9ucyAhPSAwICYm
IGxvd19yYXRlX2l0ZXJhdGlvbnMgIT0gMCkgewotICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
Z2VuLkFkdmFuY2UoKTsKICAgfQogCi0gIEVYUEVDVF9ORShyZWd1bGFyX2l0ZXJhdGlvbnMsIDAp
OwotICBFWFBFQ1RfTkUobG93X3JhdGVfaXRlcmF0aW9ucywgMCk7Ci0gIEVYUEVDVF9MRShsb3df
cmF0ZV9pdGVyYXRpb25zLCByZWd1bGFyX2l0ZXJhdGlvbnMpOworICAvLyBNZWRpYW4gc2hvdWxk
IGJlIHNpbWlsYXIgYWZ0ZXIgdGhyZWUgc2Vjb25kcy4gQWxsb3cgNSUgZXJyb3IgbWFyZ2luLgor
ICB1aW50MzJfdCBtZWRpYW5fdW5ib3VuZCA9ICp0ZXN0X2Nhc2VzWzBdLnBlcmNlbnRpbGVzLkdl
dFBlcmNlbnRpbGUoMC41KTsKKyAgdWludDMyX3QgbWVkaWFuX2JvdW5kZWQgPSAqdGVzdF9jYXNl
c1sxXS5wZXJjZW50aWxlcy5HZXRQZXJjZW50aWxlKDAuNSk7CisgIEVYUEVDVF9ORUFSKG1lZGlh
bl91bmJvdW5kLCBtZWRpYW5fYm91bmRlZCwgKG1lZGlhbl91bmJvdW5kICogNSkgLyAxMDApOwor
CisgIC8vIE1heCBzaG91bGQgYmUgbG93ZXIgZm9yIHRoZSBib3VuZGVkIGNhc2UuCisgIHVpbnQz
Ml90IG1heF91bmJvdW5kID0gKnRlc3RfY2FzZXNbMF0ucGVyY2VudGlsZXMuR2V0UGVyY2VudGls
ZSgxLjApOworICB1aW50MzJfdCBtYXhfYm91bmRlZCA9ICp0ZXN0X2Nhc2VzWzFdLnBlcmNlbnRp
bGVzLkdldFBlcmNlbnRpbGUoMS4wKTsKKyAgRVhQRUNUX0dUKG1heF91bmJvdW5kLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4obWF4X2JvdW5kZWQgKiAxLjI1KSk7CiB9CisKIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL25hY2tfbW9kdWxlLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19t
b2R1bGUuY2MKaW5kZXggN2ZiY2YzNGI0MWE5MTM3M2JkNzg2MWFlMGY1ZGZlM2U4ZTFmN2ZkMS4u
MGM2OWI1Nzc0OTM0OWZmYWZjZTFkMDg3N2U1ZmQ1MDcwNGE3MTA3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvbmFja19tb2R1bGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1bGUuY2MKQEAgLTE2LDYgKzE2
LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL3V0aWxpdHkvaW5jbHVkZS9wcm9jZXNzX3RocmVhZC5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dp
bmcuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMjgsMTQgKzI5LDI5IEBAIGNvbnN0IGludCBrUHJv
Y2Vzc0ZyZXF1ZW5jeSA9IDUwOwogY29uc3QgaW50IGtQcm9jZXNzSW50ZXJ2YWxNcyA9IDEwMDAg
LyBrUHJvY2Vzc0ZyZXF1ZW5jeTsKIGNvbnN0IGludCBrTWF4UmVvcmRlcmVkUGFja2V0cyA9IDEy
ODsKIGNvbnN0IGludCBrTnVtUmVvcmRlcmluZ0J1Y2tldHMgPSAxMDsKK2NvbnN0IGludCBrRGVm
YXVsdFNlbmROYWNrRGVsYXlNcyA9IDA7CisKK2ludDY0X3QgR2V0U2VuZE5hY2tEZWxheSgpIHsK
KyAgaW50NjRfdCBkZWxheV9tcyA9IHN0cnRvbCgKKyAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6
OkZpbmRGdWxsTmFtZSgiV2ViUlRDLVNlbmROYWNrRGVsYXlNcyIpLmNfc3RyKCksCisgICAgICBu
dWxscHRyLCAxMCk7CisgIGlmIChkZWxheV9tcyA+IDAgJiYgZGVsYXlfbXMgPD0gMjApIHsKKyAg
ICBSVENfTE9HKExTX0lORk8pIDw8ICJTZW5kTmFja0RlbGF5IGlzIHNldCB0byAiIDw8IGRlbGF5
X21zOworICAgIHJldHVybiBkZWxheV9tczsKKyAgfQorICByZXR1cm4ga0RlZmF1bHRTZW5kTmFj
a0RlbGF5TXM7Cit9CiB9ICAvLyBuYW1lc3BhY2UKIAogTmFja01vZHVsZTo6TmFja0luZm86Ok5h
Y2tJbmZvKCkKICAgICA6IHNlcV9udW0oMCksIHNlbmRfYXRfc2VxX251bSgwKSwgc2VudF9hdF90
aW1lKC0xKSwgcmV0cmllcygwKSB7fQogCi1OYWNrTW9kdWxlOjpOYWNrSW5mbzo6TmFja0luZm8o
dWludDE2X3Qgc2VxX251bSwgdWludDE2X3Qgc2VuZF9hdF9zZXFfbnVtKQorTmFja01vZHVsZTo6
TmFja0luZm86Ok5hY2tJbmZvKHVpbnQxNl90IHNlcV9udW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDE2X3Qgc2VuZF9hdF9zZXFfbnVtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3QgY3JlYXRlZF9hdF90aW1lKQogICAgIDogc2VxX251bShzZXFf
bnVtKSwKICAgICAgIHNlbmRfYXRfc2VxX251bShzZW5kX2F0X3NlcV9udW0pLAorICAgICAgY3Jl
YXRlZF9hdF90aW1lKGNyZWF0ZWRfYXRfdGltZSksCiAgICAgICBzZW50X2F0X3RpbWUoLTEpLAog
ICAgICAgcmV0cmllcygwKSB7fQogCkBAIC00OSwxMyArNjUsMjAgQEAgTmFja01vZHVsZTo6TmFj
a01vZHVsZShDbG9jayogY2xvY2ssCiAgICAgICBpbml0aWFsaXplZF8oZmFsc2UpLAogICAgICAg
cnR0X21zXyhrRGVmYXVsdFJ0dE1zKSwKICAgICAgIG5ld2VzdF9zZXFfbnVtXygwKSwKLSAgICAg
IG5leHRfcHJvY2Vzc190aW1lX21zXygtMSkgeworICAgICAgbmV4dF9wcm9jZXNzX3RpbWVfbXNf
KC0xKSwKKyAgICAgIHNlbmRfbmFja19kZWxheV9tc18oR2V0U2VuZE5hY2tEZWxheSgpKSB7CiAg
IFJUQ19EQ0hFQ0soY2xvY2tfKTsKICAgUlRDX0RDSEVDSyhuYWNrX3NlbmRlcl8pOwogICBSVENf
RENIRUNLKGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyXyk7CiB9CiAKIGludCBOYWNrTW9kdWxlOjpP
blJlY2VpdmVkUGFja2V0KHVpbnQxNl90IHNlcV9udW0sIGJvb2wgaXNfa2V5ZnJhbWUpIHsKKyAg
cmV0dXJuIE9uUmVjZWl2ZWRQYWNrZXQoc2VxX251bSwgaXNfa2V5ZnJhbWUsIGZhbHNlKTsKK30K
KworaW50IE5hY2tNb2R1bGU6Ok9uUmVjZWl2ZWRQYWNrZXQodWludDE2X3Qgc2VxX251bSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfa2V5ZnJhbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3JlY292ZXJlZCkgewogICBydGM6OkNy
aXRTY29wZSBsb2NrKCZjcml0Xyk7CiAgIC8vIFRPRE8ocGhpbGlwZWwpOiBXaGVuIHRoZSBwYWNr
ZXQgaW5jbHVkZXMgaW5mb3JtYXRpb24gd2hldGhlciBpdCBpcwogICAvLyAgICAgICAgICAgICAg
ICAgcmV0cmFuc21pdHRlZCBvciBub3QsIHVzZSB0aGF0IHZhbHVlIGluc3RlYWQuIEZvcgpAQCAt
ODgsOCArMTExLDYgQEAgaW50IE5hY2tNb2R1bGU6Ok9uUmVjZWl2ZWRQYWNrZXQodWludDE2X3Qg
c2VxX251bSwgYm9vbCBpc19rZXlmcmFtZSkgewogICAgICAgVXBkYXRlUmVvcmRlcmluZ1N0YXRp
c3RpY3Moc2VxX251bSk7CiAgICAgcmV0dXJuIG5hY2tzX3NlbnRfZm9yX3BhY2tldDsKICAgfQot
ICBBZGRQYWNrZXRzVG9OYWNrKG5ld2VzdF9zZXFfbnVtXyArIDEsIHNlcV9udW0pOwotICBuZXdl
c3Rfc2VxX251bV8gPSBzZXFfbnVtOwogCiAgIC8vIEtlZXAgdHJhY2sgb2YgbmV3IGtleWZyYW1l
cy4KICAgaWYgKGlzX2tleWZyYW1lKQpAQCAtMTAwLDYgKzEyMSwyMSBAQCBpbnQgTmFja01vZHVs
ZTo6T25SZWNlaXZlZFBhY2tldCh1aW50MTZfdCBzZXFfbnVtLCBib29sIGlzX2tleWZyYW1lKSB7
CiAgIGlmIChpdCAhPSBrZXlmcmFtZV9saXN0Xy5iZWdpbigpKQogICAgIGtleWZyYW1lX2xpc3Rf
LmVyYXNlKGtleWZyYW1lX2xpc3RfLmJlZ2luKCksIGl0KTsKIAorICBpZiAoaXNfcmVjb3ZlcmVk
KSB7CisgICAgcmVjb3ZlcmVkX2xpc3RfLmluc2VydChzZXFfbnVtKTsKKworICAgIC8vIFJlbW92
ZSBvbGQgb25lcyBzbyB3ZSBkb24ndCBhY2N1bXVsYXRlIHJlY292ZXJlZCBwYWNrZXRzLgorICAg
IGF1dG8gaXQgPSByZWNvdmVyZWRfbGlzdF8ubG93ZXJfYm91bmQoc2VxX251bSAtIGtNYXhQYWNr
ZXRBZ2UpOworICAgIGlmIChpdCAhPSByZWNvdmVyZWRfbGlzdF8uYmVnaW4oKSkKKyAgICAgIHJl
Y292ZXJlZF9saXN0Xy5lcmFzZShyZWNvdmVyZWRfbGlzdF8uYmVnaW4oKSwgaXQpOworCisgICAg
Ly8gRG8gbm90IHNlbmQgbmFjayBmb3IgcGFja2V0cyByZWNvdmVyZWQgYnkgRkVDIG9yIFJUWC4K
KyAgICByZXR1cm4gMDsKKyAgfQorCisgIEFkZFBhY2tldHNUb05hY2sobmV3ZXN0X3NlcV9udW1f
ICsgMSwgc2VxX251bSk7CisgIG5ld2VzdF9zZXFfbnVtXyA9IHNlcV9udW07CisKICAgLy8gQXJl
IHRoZXJlIGFueSBuYWNrcyB0aGF0IGFyZSB3YWl0aW5nIGZvciB0aGlzIHNlcV9udW0uCiAgIHN0
ZDo6dmVjdG9yPHVpbnQxNl90PiBuYWNrX2JhdGNoID0gR2V0TmFja0JhdGNoKGtTZXFOdW1Pbmx5
KTsKICAgaWYgKCFuYWNrX2JhdGNoLmVtcHR5KCkpCkBAIC0xMTMsNiArMTQ5LDggQEAgdm9pZCBO
YWNrTW9kdWxlOjpDbGVhclVwVG8odWludDE2X3Qgc2VxX251bSkgewogICBuYWNrX2xpc3RfLmVy
YXNlKG5hY2tfbGlzdF8uYmVnaW4oKSwgbmFja19saXN0Xy5sb3dlcl9ib3VuZChzZXFfbnVtKSk7
CiAgIGtleWZyYW1lX2xpc3RfLmVyYXNlKGtleWZyYW1lX2xpc3RfLmJlZ2luKCksCiAgICAgICAg
ICAgICAgICAgICAgICAgIGtleWZyYW1lX2xpc3RfLmxvd2VyX2JvdW5kKHNlcV9udW0pKTsKKyAg
cmVjb3ZlcmVkX2xpc3RfLmVyYXNlKHJlY292ZXJlZF9saXN0Xy5iZWdpbigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmVjb3ZlcmVkX2xpc3RfLmxvd2VyX2JvdW5kKHNlcV9udW0pKTsKIH0K
IAogdm9pZCBOYWNrTW9kdWxlOjpVcGRhdGVSdHQoaW50NjRfdCBydHRfbXMpIHsKQEAgLTEyNCw2
ICsxNjIsNyBAQCB2b2lkIE5hY2tNb2R1bGU6OkNsZWFyKCkgewogICBydGM6OkNyaXRTY29wZSBs
b2NrKCZjcml0Xyk7CiAgIG5hY2tfbGlzdF8uY2xlYXIoKTsKICAga2V5ZnJhbWVfbGlzdF8uY2xl
YXIoKTsKKyAgcmVjb3ZlcmVkX2xpc3RfLmNsZWFyKCk7CiB9CiAKIGludDY0X3QgTmFja01vZHVs
ZTo6VGltZVVudGlsTmV4dFByb2Nlc3MoKSB7CkBAIC0yMDAsNyArMjM5LDExIEBAIHZvaWQgTmFj
a01vZHVsZTo6QWRkUGFja2V0c1RvTmFjayh1aW50MTZfdCBzZXFfbnVtX3N0YXJ0LAogICB9CiAK
ICAgZm9yICh1aW50MTZfdCBzZXFfbnVtID0gc2VxX251bV9zdGFydDsgc2VxX251bSAhPSBzZXFf
bnVtX2VuZDsgKytzZXFfbnVtKSB7Ci0gICAgTmFja0luZm8gbmFja19pbmZvKHNlcV9udW0sIHNl
cV9udW0gKyBXYWl0TnVtYmVyT2ZQYWNrZXRzKDAuNSkpOworICAgIC8vIERvIG5vdCBzZW5kIG5h
Y2sgZm9yIHBhY2tldHMgdGhhdCBhcmUgYWxyZWFkeSByZWNvdmVyZWQgYnkgRkVDIG9yIFJUWAor
ICAgIGlmIChyZWNvdmVyZWRfbGlzdF8uZmluZChzZXFfbnVtKSAhPSByZWNvdmVyZWRfbGlzdF8u
ZW5kKCkpCisgICAgICBjb250aW51ZTsKKyAgICBOYWNrSW5mbyBuYWNrX2luZm8oc2VxX251bSwg
c2VxX251bSArIFdhaXROdW1iZXJPZlBhY2tldHMoMC41KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgICAgUlRDX0RDSEVDSyhuYWNrX2xp
c3RfLmZpbmQoc2VxX251bSkgPT0gbmFja19saXN0Xy5lbmQoKSk7CiAgICAgbmFja19saXN0X1tz
ZXFfbnVtXSA9IG5hY2tfaW5mbzsKICAgfQpAQCAtMjEzLDIyICsyNTYsMTQgQEAgc3RkOjp2ZWN0
b3I8dWludDE2X3Q+IE5hY2tNb2R1bGU6OkdldE5hY2tCYXRjaChOYWNrRmlsdGVyT3B0aW9ucyBv
cHRpb25zKSB7CiAgIHN0ZDo6dmVjdG9yPHVpbnQxNl90PiBuYWNrX2JhdGNoOwogICBhdXRvIGl0
ID0gbmFja19saXN0Xy5iZWdpbigpOwogICB3aGlsZSAoaXQgIT0gbmFja19saXN0Xy5lbmQoKSkg
ewotICAgIGlmIChjb25zaWRlcl9zZXFfbnVtICYmIGl0LT5zZWNvbmQuc2VudF9hdF90aW1lID09
IC0xICYmCi0gICAgICAgIEFoZWFkT3JBdChuZXdlc3Rfc2VxX251bV8sIGl0LT5zZWNvbmQuc2Vu
ZF9hdF9zZXFfbnVtKSkgewotICAgICAgbmFja19iYXRjaC5lbXBsYWNlX2JhY2soaXQtPnNlY29u
ZC5zZXFfbnVtKTsKLSAgICAgICsraXQtPnNlY29uZC5yZXRyaWVzOwotICAgICAgaXQtPnNlY29u
ZC5zZW50X2F0X3RpbWUgPSBub3dfbXM7Ci0gICAgICBpZiAoaXQtPnNlY29uZC5yZXRyaWVzID49
IGtNYXhOYWNrUmV0cmllcykgewotICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJTZXF1
ZW5jZSBudW1iZXIgIiA8PCBpdC0+c2Vjb25kLnNlcV9udW0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiIHJlbW92ZWQgZnJvbSBOQUNLIGxpc3QgZHVlIHRvIG1heCByZXRyaWVzLiI7
Ci0gICAgICAgIGl0ID0gbmFja19saXN0Xy5lcmFzZShpdCk7Ci0gICAgICB9IGVsc2UgewotICAg
ICAgICArK2l0OwotICAgICAgfQotICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAgaWYgKGNv
bnNpZGVyX3RpbWVzdGFtcCAmJiBpdC0+c2Vjb25kLnNlbnRfYXRfdGltZSArIHJ0dF9tc18gPD0g
bm93X21zKSB7CisgICAgYm9vbCBkZWxheV90aW1lZF9vdXQgPQorICAgICAgICBub3dfbXMgLSBp
dC0+c2Vjb25kLmNyZWF0ZWRfYXRfdGltZSA+PSBzZW5kX25hY2tfZGVsYXlfbXNfOworICAgIGJv
b2wgbmFja19vbl9ydHRfcGFzc2VkID0gbm93X21zIC0gaXQtPnNlY29uZC5zZW50X2F0X3RpbWUg
Pj0gcnR0X21zXzsKKyAgICBib29sIG5hY2tfb25fc2VxX251bV9wYXNzZWQgPQorICAgICAgICBp
dC0+c2Vjb25kLnNlbnRfYXRfdGltZSA9PSAtMSAmJgorICAgICAgICBBaGVhZE9yQXQobmV3ZXN0
X3NlcV9udW1fLCBpdC0+c2Vjb25kLnNlbmRfYXRfc2VxX251bSk7CisgICAgaWYgKGRlbGF5X3Rp
bWVkX291dCAmJiAoKGNvbnNpZGVyX3NlcV9udW0gJiYgbmFja19vbl9zZXFfbnVtX3Bhc3NlZCkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc2lkZXJfdGltZXN0YW1wICYmIG5h
Y2tfb25fcnR0X3Bhc3NlZCkpKSB7CiAgICAgICBuYWNrX2JhdGNoLmVtcGxhY2VfYmFjayhpdC0+
c2Vjb25kLnNlcV9udW0pOwogICAgICAgKytpdC0+c2Vjb25kLnJldHJpZXM7CiAgICAgICBpdC0+
c2Vjb25kLnNlbnRfYXRfdGltZSA9IG5vd19tczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL25hY2tfbW9k
dWxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9uYWNrX21vZHVsZS5oCmluZGV4IDQ0MzQwZTlkNGNhNDc2NDU0Y2E3ZDBi
M2I1YTY4N2Y1N2RkNzQzZTkuLmY4NmRkMTZkYjI4YWMzMGUwZjRhMTM2YzA0YzViNTNhOWE5NTMy
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL25hY2tfbW9kdWxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1
bGUuaApAQCAtMzIsNiArMzIsOCBAQCBjbGFzcyBOYWNrTW9kdWxlIDogcHVibGljIE1vZHVsZSB7
CiAgICAgICAgICAgICAgS2V5RnJhbWVSZXF1ZXN0U2VuZGVyKiBrZXlmcmFtZV9yZXF1ZXN0X3Nl
bmRlcik7CiAKICAgaW50IE9uUmVjZWl2ZWRQYWNrZXQodWludDE2X3Qgc2VxX251bSwgYm9vbCBp
c19rZXlmcmFtZSk7CisgIGludCBPblJlY2VpdmVkUGFja2V0KHVpbnQxNl90IHNlcV9udW0sIGJv
b2wgaXNfa2V5ZnJhbWUsIGJvb2wgaXNfcmVjb3ZlcmVkKTsKKwogICB2b2lkIENsZWFyVXBUbyh1
aW50MTZfdCBzZXFfbnVtKTsKICAgdm9pZCBVcGRhdGVSdHQoaW50NjRfdCBydHRfbXMpOwogICB2
b2lkIENsZWFyKCk7CkBAIC01MCwxMCArNTIsMTMgQEAgY2xhc3MgTmFja01vZHVsZSA6IHB1Ymxp
YyBNb2R1bGUgewogICAvLyB3ZSBoYXZlIHRyaWVkIHRvIG5hY2sgdGhpcyBwYWNrZXQuCiAgIHN0
cnVjdCBOYWNrSW5mbyB7CiAgICAgTmFja0luZm8oKTsKLSAgICBOYWNrSW5mbyh1aW50MTZfdCBz
ZXFfbnVtLCB1aW50MTZfdCBzZW5kX2F0X3NlcV9udW0pOworICAgIE5hY2tJbmZvKHVpbnQxNl90
IHNlcV9udW0sCisgICAgICAgICAgICAgdWludDE2X3Qgc2VuZF9hdF9zZXFfbnVtLAorICAgICAg
ICAgICAgIGludDY0X3QgY3JlYXRlZF9hdF90aW1lKTsKIAogICAgIHVpbnQxNl90IHNlcV9udW07
CiAgICAgdWludDE2X3Qgc2VuZF9hdF9zZXFfbnVtOworICAgIGludDY0X3QgY3JlYXRlZF9hdF90
aW1lOwogICAgIGludDY0X3Qgc2VudF9hdF90aW1lOwogICAgIGludCByZXRyaWVzOwogICB9OwpA
QCAtODcsNiArOTIsOCBAQCBjbGFzcyBOYWNrTW9kdWxlIDogcHVibGljIE1vZHVsZSB7CiAgICAg
ICBSVENfR1VBUkRFRF9CWShjcml0Xyk7CiAgIHN0ZDo6c2V0PHVpbnQxNl90LCBEZXNjZW5kaW5n
U2VxTnVtQ29tcDx1aW50MTZfdD4+IGtleWZyYW1lX2xpc3RfCiAgICAgICBSVENfR1VBUkRFRF9C
WShjcml0Xyk7CisgIHN0ZDo6c2V0PHVpbnQxNl90LCBEZXNjZW5kaW5nU2VxTnVtQ29tcDx1aW50
MTZfdD4+IHJlY292ZXJlZF9saXN0XworICAgICAgUlRDX0dVQVJERURfQlkoY3JpdF8pOwogICB2
aWRlb19jb2Rpbmc6Okhpc3RvZ3JhbSByZW9yZGVyaW5nX2hpc3RvZ3JhbV8gUlRDX0dVQVJERURf
QlkoY3JpdF8pOwogICBib29sIGluaXRpYWxpemVkXyBSVENfR1VBUkRFRF9CWShjcml0Xyk7CiAg
IGludDY0X3QgcnR0X21zXyBSVENfR1VBUkRFRF9CWShjcml0Xyk7CkBAIC05NCw2ICsxMDEsOSBA
QCBjbGFzcyBOYWNrTW9kdWxlIDogcHVibGljIE1vZHVsZSB7CiAKICAgLy8gT25seSB0b3VjaGVk
IG9uIHRoZSBwcm9jZXNzIHRocmVhZC4KICAgaW50NjRfdCBuZXh0X3Byb2Nlc3NfdGltZV9tc187
CisKKyAgLy8gQWRkcyBhIGRlbGF5IGJlZm9yZSBzZW5kIG5hY2sgb24gcGFja2V0IHJlY2VpdmVk
LgorICBjb25zdCBpbnQ2NF90IHNlbmRfbmFja19kZWxheV9tc187CiB9OwogCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9uYWNrX21vZHVsZV91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL25hY2tfbW9kdWxlX3VuaXR0ZXN0LmNjCmluZGV4IDhhNWY0NmJmN2ZiYTU2ODcyZjI1
OTM2MzI4N2MwM2Q5ZDM4NzE2MDguLjhlZmI4YWMxNTQ5ZjlkNGI0Y2I3OThlNDVhOWJhMzY2NTk3
ZWQxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL25hY2tfbW9kdWxlX3VuaXR0ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL25hY2tfbW9kdWxlX3VuaXR0ZXN0LmNjCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RpbmdfZGVmaW5lcy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL25hY2tfbW9kdWxlLmgiCiAjaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFs
LmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTQw
LDM4ICs0MSwzOCBAQCBjbGFzcyBUZXN0TmFja01vZHVsZSA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QsCiB9OwogCiBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIE5hY2tPbmVQYWNrZXQpIHsKLSAgbmFj
a19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMSwgZmFsc2UpOwotICBuYWNrX21vZHVsZV8uT25S
ZWNlaXZlZFBhY2tldCgzLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0
KDEsIGZhbHNlLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDMsIGZh
bHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSgxdSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQ
RUNUX0VRKDIsIHNlbnRfbmFja3NfWzBdKTsKIH0KIAogVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBX
cmFwcGluZ1NlcU51bSkgewotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgweGZmZmUs
IGZhbHNlKTsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMSwgZmFsc2UpOworICBu
YWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgweGZmZmUsIGZhbHNlLCBmYWxzZSk7CisgIG5h
Y2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9F
USgydSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQRUNUX0VRKDB4ZmZmZiwgc2VudF9uYWNr
c19bMF0pOwogICBFWFBFQ1RfRVEoMCwgc2VudF9uYWNrc19bMV0pOwogfQogCiBURVNUX0YoVGVz
dE5hY2tNb2R1bGUsIFdyYXBwaW5nU2VxTnVtQ2xlYXJUb0tleWZyYW1lKSB7Ci0gIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDB4ZmZmZSwgZmFsc2UpOwotICBuYWNrX21vZHVsZV8uT25S
ZWNlaXZlZFBhY2tldCgxLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0
KDB4ZmZmZSwgZmFsc2UsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQo
MSwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDJ1LCBzZW50X25hY2tzXy5zaXplKCkpOwog
ICBFWFBFQ1RfRVEoMHhmZmZmLCBzZW50X25hY2tzX1swXSk7CiAgIEVYUEVDVF9FUSgwLCBzZW50
X25hY2tzX1sxXSk7CiAKICAgc2VudF9uYWNrc18uY2xlYXIoKTsKLSAgbmFja19tb2R1bGVfLk9u
UmVjZWl2ZWRQYWNrZXQoMiwgdHJ1ZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0
KDIsIHRydWUsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDB1LCBzZW50X25hY2tzXy5zaXplKCkpOwog
Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDUwMSwgdHJ1ZSk7CisgIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDUwMSwgdHJ1ZSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoNDk4
dSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgZm9yIChpbnQgc2VxX251bSA9IDM7IHNlcV9udW0g
PCA1MDE7ICsrc2VxX251bSkKICAgICBFWFBFQ1RfRVEoc2VxX251bSwgc2VudF9uYWNrc19bc2Vx
X251bSAtIDNdKTsKIAogICBzZW50X25hY2tzXy5jbGVhcigpOwotICBuYWNrX21vZHVsZV8uT25S
ZWNlaXZlZFBhY2tldCgxMDAxLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFj
a2V0KDEwMDEsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSg0OTl1LCBzZW50X25hY2tzXy5z
aXplKCkpOwogICBmb3IgKGludCBzZXFfbnVtID0gNTAyOyBzZXFfbnVtIDwgMTAwMTsgKytzZXFf
bnVtKQogICAgIEVYUEVDVF9FUShzZXFfbnVtLCBzZW50X25hY2tzX1tzZXFfbnVtIC0gNTAyXSk7
CkBAIC05MSw3ICs5Miw3IEBAIFRFU1RfRihUZXN0TmFja01vZHVsZSwgV3JhcHBpbmdTZXFOdW1D
bGVhclRvS2V5ZnJhbWUpIHsKICAgLy8gSXQgd2lsbCB0aGVuIGNsZWFyIGFsbCBuYWNrcyB1cCB0
byB0aGUgbmV4dCBrZXlmcmFtZSAoc2VxIG51bSAyKSwKICAgLy8gdGh1cyByZW1vdmluZyAweGZm
ZmYgYW5kIDAgZnJvbSB0aGUgbmFjayBsaXN0LgogICBzZW50X25hY2tzXy5jbGVhcigpOwotICBu
YWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDA0LCBmYWxzZSk7CisgIG5hY2tfbW9kdWxl
Xy5PblJlY2VpdmVkUGFja2V0KDEwMDQsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSgydSwg
c2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQRUNUX0VRKDEwMDIsIHNlbnRfbmFja3NfWzBdKTsK
ICAgRVhQRUNUX0VRKDEwMDMsIHNlbnRfbmFja3NfWzFdKTsKQEAgLTEwNyw3ICsxMDgsNyBAQCBU
RVNUX0YoVGVzdE5hY2tNb2R1bGUsIFdyYXBwaW5nU2VxTnVtQ2xlYXJUb0tleWZyYW1lKSB7CiAK
ICAgLy8gQWRkaW5nIHBhY2tldCAxMDA3IHdpbGwgY2F1c2UgdGhlIG5hY2sgbW9kdWxlIHRvIG92
ZXJmbG93IGFnYWluLCB0aHVzCiAgIC8vIGNsZWFyaW5nIGV2ZXJ5dGhpbmcgdXAgdG8gNTAxIHdo
aWNoIGlzIHRoZSBuZXh0IGtleWZyYW1lLgotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tl
dCgxMDA3LCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMDcsIGZh
bHNlLCBmYWxzZSk7CiAgIHNlbnRfbmFja3NfLmNsZWFyKCk7CiAgIGNsb2NrXy0+QWR2YW5jZVRp
bWVNaWxsaXNlY29uZHMoMTAwKTsKICAgbmFja19tb2R1bGVfLlByb2Nlc3MoKTsKQEAgLTE0Niw4
ICsxNDcsOCBAQCBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIERvbnRCdXJzdE9uVGltZVNraXApIHsK
IH0KIAogVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBSZXNlbmROYWNrKSB7Ci0gIG5hY2tfbW9kdWxl
Xy5PblJlY2VpdmVkUGFja2V0KDEsIGZhbHNlKTsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQ
YWNrZXQoMywgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBmYWxz
ZSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgzLCBmYWxzZSwgZmFs
c2UpOwogICBFWFBFQ1RfRVEoMXUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAgIEVYUEVDVF9FUSgy
LCBzZW50X25hY2tzX1swXSk7CiAKQEAgLTE2OSwxNSArMTcwLDE1IEBAIFRFU1RfRihUZXN0TmFj
a01vZHVsZSwgUmVzZW5kTmFjaykgewogICBuYWNrX21vZHVsZV8uUHJvY2VzcygpOwogICBFWFBF
Q1RfRVEoNHUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2
ZWRQYWNrZXQoMiwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgyLCBm
YWxzZSwgZmFsc2UpOwogICBjbG9ja18tPkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDUwKTsKICAg
bmFja19tb2R1bGVfLlByb2Nlc3MoKTsKICAgRVhQRUNUX0VRKDR1LCBzZW50X25hY2tzXy5zaXpl
KCkpOwogfQogCiBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIFJlc2VuZFBhY2tldE1heFJldHJpZXMp
IHsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMSwgZmFsc2UpOwotICBuYWNrX21v
ZHVsZV8uT25SZWNlaXZlZFBhY2tldCgzLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2Vp
dmVkUGFja2V0KDEsIGZhbHNlLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFj
a2V0KDMsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSgxdSwgc2VudF9uYWNrc18uc2l6ZSgp
KTsKICAgRVhQRUNUX0VRKDIsIHNlbnRfbmFja3NfWzBdKTsKIApAQCAtMTkzLDM1ICsxOTQsMzUg
QEAgVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBSZXNlbmRQYWNrZXRNYXhSZXRyaWVzKSB7CiB9CiAK
IFRFU1RfRihUZXN0TmFja01vZHVsZSwgVG9vTGFyZ2VOYWNrTGlzdCkgewotICBuYWNrX21vZHVs
ZV8uT25SZWNlaXZlZFBhY2tldCgwLCBmYWxzZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVk
UGFja2V0KDEwMDEsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwg
ZmFsc2UsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwMSwgZmFs
c2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDEwMDB1LCBzZW50X25hY2tzXy5zaXplKCkpOwogICBF
WFBFQ1RfRVEoMCwga2V5ZnJhbWVzX3JlcXVlc3RlZF8pOwotICBuYWNrX21vZHVsZV8uT25SZWNl
aXZlZFBhY2tldCgxMDAzLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0
KDEwMDMsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSgxMDAwdSwgc2VudF9uYWNrc18uc2l6
ZSgpKTsKICAgRVhQRUNUX0VRKDEsIGtleWZyYW1lc19yZXF1ZXN0ZWRfKTsKLSAgbmFja19tb2R1
bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwNCwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNl
aXZlZFBhY2tldCgxMDA0LCBmYWxzZSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoMTAwMHUsIHNlbnRf
bmFja3NfLnNpemUoKSk7CiAgIEVYUEVDVF9FUSgxLCBrZXlmcmFtZXNfcmVxdWVzdGVkXyk7CiB9
CiAKIFRFU1RfRihUZXN0TmFja01vZHVsZSwgVG9vTGFyZ2VOYWNrTGlzdFdpdGhLZXlGcmFtZSkg
ewotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgwLCBmYWxzZSk7Ci0gIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIHRydWUpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZl
ZFBhY2tldCgxMDAxLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDAs
IGZhbHNlLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIHRydWUs
IGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwMSwgZmFsc2UsIGZh
bHNlKTsKICAgRVhQRUNUX0VRKDk5OXUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAgIEVYUEVDVF9F
USgwLCBrZXlmcmFtZXNfcmVxdWVzdGVkXyk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFj
a2V0KDEwMDMsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwMywg
ZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDEwMDB1LCBzZW50X25hY2tzXy5zaXplKCkpOwog
ICBFWFBFQ1RfRVEoMCwga2V5ZnJhbWVzX3JlcXVlc3RlZF8pOwotICBuYWNrX21vZHVsZV8uT25S
ZWNlaXZlZFBhY2tldCgxMDA1LCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFj
a2V0KDEwMDUsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSgxMDAwdSwgc2VudF9uYWNrc18u
c2l6ZSgpKTsKICAgRVhQRUNUX0VRKDEsIGtleWZyYW1lc19yZXF1ZXN0ZWRfKTsKIH0KIAogVEVT
VF9GKFRlc3ROYWNrTW9kdWxlLCBDbGVhclVwVG8pIHsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2
ZWRQYWNrZXQoMCwgZmFsc2UpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAs
IGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwgZmFsc2UsIGZhbHNl
KTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwLCBmYWxzZSwgZmFsc2UpOwog
ICBFWFBFQ1RfRVEoOTl1LCBzZW50X25hY2tzXy5zaXplKCkpOwogCiAgIHNlbnRfbmFja3NfLmNs
ZWFyKCk7CkBAIC0yMzMsOCArMjM0LDggQEAgVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBDbGVhclVw
VG8pIHsKIH0KIAogVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBDbGVhclVwVG9XcmFwKSB7Ci0gIG5h
Y2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDB4ZmZmMCwgZmFsc2UpOwotICBuYWNrX21vZHVs
ZV8uT25SZWNlaXZlZFBhY2tldCgweGYsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2
ZWRQYWNrZXQoMHhmZmYwLCBmYWxzZSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZl
ZFBhY2tldCgweGYsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSgzMHUsIHNlbnRfbmFja3Nf
LnNpemUoKSk7CiAKICAgc2VudF9uYWNrc18uY2xlYXIoKTsKQEAgLTI0NiwyMCArMjQ3LDIwIEBA
IFRFU1RfRihUZXN0TmFja01vZHVsZSwgQ2xlYXJVcFRvV3JhcCkgewogfQogCiBURVNUX0YoVGVz
dE5hY2tNb2R1bGUsIFBhY2tldE5hY2tDb3VudCkgewotICBFWFBFQ1RfRVEoMCwgbmFja19tb2R1
bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwgZmFsc2UpKTsKLSAgRVhQRUNUX0VRKDAsIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDIsIGZhbHNlKSk7Ci0gIEVYUEVDVF9FUSgxLCBuYWNrX21v
ZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBmYWxzZSkpOworICBFWFBFQ1RfRVEoMCwgbmFja19t
b2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwgZmFsc2UsIGZhbHNlKSk7CisgIEVYUEVDVF9FUSgw
LCBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgyLCBmYWxzZSwgZmFsc2UpKTsKKyAgRVhQ
RUNUX0VRKDEsIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIGZhbHNlLCBmYWxzZSkp
OwogCiAgIHNlbnRfbmFja3NfLmNsZWFyKCk7CiAgIG5hY2tfbW9kdWxlXy5VcGRhdGVSdHQoMTAw
KTsKLSAgRVhQRUNUX0VRKDAsIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDUsIGZhbHNl
KSk7CisgIEVYUEVDVF9FUSgwLCBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCg1LCBmYWxz
ZSwgZmFsc2UpKTsKICAgY2xvY2tfLT5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDApOwogICBu
YWNrX21vZHVsZV8uUHJvY2VzcygpOwogICBjbG9ja18tPkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRz
KDEwMCk7CiAgIG5hY2tfbW9kdWxlXy5Qcm9jZXNzKCk7Ci0gIEVYUEVDVF9FUSgzLCBuYWNrX21v
ZHVsZV8uT25SZWNlaXZlZFBhY2tldCgzLCBmYWxzZSkpOwotICBFWFBFQ1RfRVEoMywgbmFja19t
b2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNCwgZmFsc2UpKTsKLSAgRVhQRUNUX0VRKDAsIG5hY2tf
bW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDQsIGZhbHNlKSk7CisgIEVYUEVDVF9FUSgzLCBuYWNr
X21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgzLCBmYWxzZSwgZmFsc2UpKTsKKyAgRVhQRUNUX0VR
KDMsIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDQsIGZhbHNlLCBmYWxzZSkpOworICBF
WFBFQ1RfRVEoMCwgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNCwgZmFsc2UsIGZhbHNl
KSk7CiB9CiAKIFRFU1RfRihUZXN0TmFja01vZHVsZSwgTmFja0xpc3RGdWxsQW5kTm9PdmVybGFw
V2l0aEtleWZyYW1lcykgewpAQCAtMjY3LDE0ICsyNjgsNjMgQEAgVEVTVF9GKFRlc3ROYWNrTW9k
dWxlLCBOYWNrTGlzdEZ1bGxBbmROb092ZXJsYXBXaXRoS2V5ZnJhbWVzKSB7CiAgIGNvbnN0IHVu
c2lnbmVkIGludCBrRmlyc3RHYXAgPSBrTWF4TmFja1BhY2tldHMgLSAyMDsKICAgY29uc3QgdW5z
aWduZWQgaW50IGtTZWNvbmRHYXAgPSAyMDA7CiAgIHVpbnQxNl90IHNlcV9udW0gPSAwOwotICBu
YWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldChzZXFfbnVtKyssIHRydWUpOworICBuYWNrX21v
ZHVsZV8uT25SZWNlaXZlZFBhY2tldChzZXFfbnVtKyssIHRydWUsIGZhbHNlKTsKICAgc2VxX251
bSArPSBrRmlyc3RHYXA7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KHNlcV9udW0r
KywgdHJ1ZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KHNlcV9udW0rKywgdHJ1
ZSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoa0ZpcnN0R2FwLCBzZW50X25hY2tzXy5zaXplKCkpOwog
ICBzZW50X25hY2tzXy5jbGVhcigpOwogICBzZXFfbnVtICs9IGtTZWNvbmRHYXA7Ci0gIG5hY2tf
bW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KHNlcV9udW0sIHRydWUpOworICBuYWNrX21vZHVsZV8u
T25SZWNlaXZlZFBhY2tldChzZXFfbnVtLCB0cnVlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUShrU2Vj
b25kR2FwLCBzZW50X25hY2tzXy5zaXplKCkpOwogfQogCitURVNUX0YoVGVzdE5hY2tNb2R1bGUs
IEhhbmRsZUZlY1JlY292ZXJlZFBhY2tldCkgeworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBh
Y2tldCgxLCBmYWxzZSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCg0
LCBmYWxzZSwgdHJ1ZSk7CisgIEVYUEVDVF9FUSgwdSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKKyAg
bmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNSwgZmFsc2UsIGZhbHNlKTsKKyAgRVhQRUNU
X0VRKDJ1LCBzZW50X25hY2tzXy5zaXplKCkpOworfQorCitURVNUX0YoVGVzdE5hY2tNb2R1bGUs
IFNlbmROYWNrV2l0aG91dERlbGF5KSB7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0
KDAsIGZhbHNlLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMCwg
ZmFsc2UsIGZhbHNlKTsKKyAgRVhQRUNUX0VRKDk5dSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKK30K
KworY2xhc3MgVGVzdE5hY2tNb2R1bGVXaXRoRmllbGRUcmlhbCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIE5hY2tT
ZW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEtleUZy
YW1lUmVxdWVzdFNlbmRlciB7CisgcHJvdGVjdGVkOgorICBUZXN0TmFja01vZHVsZVdpdGhGaWVs
ZFRyaWFsKCkKKyAgICAgIDogbmFja19kZWxheV9maWVsZF90cmlhbF8oIldlYlJUQy1TZW5kTmFj
a0RlbGF5TXMvMTAvIiksCisgICAgICAgIGNsb2NrXyhuZXcgU2ltdWxhdGVkQ2xvY2soMCkpLAor
ICAgICAgICBuYWNrX21vZHVsZV8oY2xvY2tfLmdldCgpLCB0aGlzLCB0aGlzKSwKKyAgICAgICAg
a2V5ZnJhbWVzX3JlcXVlc3RlZF8oMCkge30KKworICB2b2lkIFNlbmROYWNrKGNvbnN0IHN0ZDo6
dmVjdG9yPHVpbnQxNl90PiYgc2VxdWVuY2VfbnVtYmVycykgb3ZlcnJpZGUgeworICAgIHNlbnRf
bmFja3NfLmluc2VydChzZW50X25hY2tzXy5lbmQoKSwgc2VxdWVuY2VfbnVtYmVycy5iZWdpbigp
LAorICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzLmVuZCgpKTsKKyAgfQor
CisgIHZvaWQgUmVxdWVzdEtleUZyYW1lKCkgb3ZlcnJpZGUgeyArK2tleWZyYW1lc19yZXF1ZXN0
ZWRfOyB9CisKKyAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgbmFja19kZWxheV9maWVsZF90cmlh
bF87CisgIHN0ZDo6dW5pcXVlX3B0cjxTaW11bGF0ZWRDbG9jaz4gY2xvY2tfOworICBOYWNrTW9k
dWxlIG5hY2tfbW9kdWxlXzsKKyAgc3RkOjp2ZWN0b3I8dWludDE2X3Q+IHNlbnRfbmFja3NfOwor
ICBpbnQga2V5ZnJhbWVzX3JlcXVlc3RlZF87Cit9OworCitURVNUX0YoVGVzdE5hY2tNb2R1bGVX
aXRoRmllbGRUcmlhbCwgU2VuZE5hY2tXaXRoRGVsYXkpIHsKKyAgbmFja19tb2R1bGVfLk9uUmVj
ZWl2ZWRQYWNrZXQoMCwgZmFsc2UsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQ
YWNrZXQoMTAwLCBmYWxzZSwgZmFsc2UpOworICBFWFBFQ1RfRVEoMHUsIHNlbnRfbmFja3NfLnNp
emUoKSk7CisgIGNsb2NrXy0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTApOworICBuYWNrX21v
ZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDYsIGZhbHNlLCBmYWxzZSk7CisgIEVYUEVDVF9FUSg5
OXUsIHNlbnRfbmFja3NfLnNpemUoKSk7CisgIGNsb2NrXy0+QWR2YW5jZVRpbWVNaWxsaXNlY29u
ZHMoMTApOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDksIGZhbHNlLCBmYWxz
ZSk7CisgIEVYUEVDVF9FUSgxMDR1LCBzZW50X25hY2tzXy5zaXplKCkpOworfQogfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcmVjZWl2ZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNl
aXZlci5jYwppbmRleCA3ZjIyYjczYTVhNjIxYTI4OWU4NjBhMGJkNGY5ZDkyNjM1NDM2MGE1Li41
YmYyNzI1N2IwN2EzMWE2YjlkMGFmYzdjNWNlYzQyMjAyN2FkYTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9yZWNlaXZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlci5jYwpAQCAtMjgsMzIgKzI4LDI1IEBA
IG5hbWVzcGFjZSB3ZWJydGMgewogCiBlbnVtIHsga01heFJlY2VpdmVyRGVsYXlNcyA9IDEwMDAw
IH07CiAKLVZDTVJlY2VpdmVyOjpWQ01SZWNlaXZlcihWQ01UaW1pbmcqIHRpbWluZywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBDbG9jayogY2xvY2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgRXZlbnRGYWN0b3J5KiBldmVudF9mYWN0b3J5KQorVkNNUmVjZWl2ZXI6OlZDTVJlY2VpdmVy
KFZDTVRpbWluZyogdGltaW5nLCBDbG9jayogY2xvY2spCiAgICAgOiBWQ01SZWNlaXZlcjo6VkNN
UmVjZWl2ZXIodGltaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2ZhY3RvcnksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWJzbDo6V3JhcFVuaXF1ZShFdmVudFdyYXBwZXI6OkNyZWF0
ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpXcmFwVW5pcXVlKEV2
ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsICAvLyBOYWNrU2VuZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cikgIC8vIEtleWZyYW1lUmVxdWVzdFNlbmRlcgoge30KIAogVkNNUmVjZWl2ZXI6OlZDTVJl
Y2VpdmVyKFZDTVRpbWluZyogdGltaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgIENsb2Nr
KiBjbG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudEZhY3RvcnkqIGV2ZW50X2Zh
Y3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgTmFja1NlbmRlciogbmFja19zZW5kZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5RnJhbWVSZXF1ZXN0U2VuZGVyKiBrZXlmcmFt
ZV9yZXF1ZXN0X3NlbmRlcikKLSAgICA6IFZDTVJlY2VpdmVyKAotICAgICAgICAgIHRpbWluZywK
LSAgICAgICAgICBjbG9jaywKLSAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVy
PihldmVudF9mYWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID8gZXZlbnRfZmFjdG9yeS0+Q3JlYXRlRXZlbnQoKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAotICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+KGV2ZW50X2ZhY3RvcnkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBldmVudF9mYWN0b3J5LT5DcmVh
dGVFdmVudCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
RXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCi0gICAgICAgICAgbmFja19zZW5kZXIsCi0gICAgICAg
ICAga2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIpIHt9CisgICAgOiBWQ01SZWNlaXZlcih0aW1pbmcs
CisgICAgICAgICAgICAgICAgICBjbG9jaywKKyAgICAgICAgICAgICAgICAgIGFic2w6OldyYXBV
bmlxdWUoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCisgICAgICAgICAgICAgICAgICBhYnNsOjpX
cmFwVW5pcXVlKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAorICAgICAgICAgICAgICAgICAgbmFj
a19zZW5kZXIsCisgICAgICAgICAgICAgICAgICBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcikge30K
IAogVkNNUmVjZWl2ZXI6OlZDTVJlY2VpdmVyKFZDTVRpbWluZyogdGltaW5nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIENsb2NrKiBjbG9jaywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3JlY2VpdmVy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9yZWNlaXZlci5oCmluZGV4IDRmNjU5MGQyNzQ4MjJmMzkyZGMyYWRlYWFjYTEw
NjNmZDM2YjljNDEuLjUwM2NhZTdjOGRlZWRkNjdlOWM0ZGRiMGMyMWE1OTY2MGFkZTI2ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL3JlY2VpdmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcmVjZWl2ZXIuaApAQCAtMzAs
MTcgKzMwLDE2IEBAIGNsYXNzIFZDTVJlY2VpdmVyIHsKICBwdWJsaWM6CiAgIC8vIENvbnN0cnVj
dG9yIGZvciBjdXJyZW50IGludGVyZmFjZSwgd2lsbCBiZSByZW1vdmVkIHdoZW4gdGhlCiAgIC8v
IG5ldyBqaXR0ZXIgYnVmZmVyIGlzIGluIHBsYWNlLgotICBWQ01SZWNlaXZlcihWQ01UaW1pbmcq
IHRpbWluZywgQ2xvY2sqIGNsb2NrLCBFdmVudEZhY3RvcnkqIGV2ZW50X2ZhY3RvcnkpOworICBW
Q01SZWNlaXZlcihWQ01UaW1pbmcqIHRpbWluZywgQ2xvY2sqIGNsb2NrKTsKIAogICAvLyBDcmVh
dGUgbWV0aG9kIGZvciB0aGUgbmV3IGppdHRlciBidWZmZXIuCiAgIFZDTVJlY2VpdmVyKFZDTVRp
bWluZyogdGltaW5nLAogICAgICAgICAgICAgICBDbG9jayogY2xvY2ssCi0gICAgICAgICAgICAg
IEV2ZW50RmFjdG9yeSogZXZlbnRfZmFjdG9yeSwKICAgICAgICAgICAgICAgTmFja1NlbmRlciog
bmFja19zZW5kZXIsCiAgICAgICAgICAgICAgIEtleUZyYW1lUmVxdWVzdFNlbmRlcioga2V5ZnJh
bWVfcmVxdWVzdF9zZW5kZXIpOwogCi0gIC8vIFVzaW5nIHRoaXMgY29uc3RydWN0b3IsIHlvdSBj
YW4gc3BlY2lmeSBhIGRpZmZlcmVudCBldmVudCBmYWN0b3J5IGZvciB0aGUKLSAgLy8gaml0dGVy
IGJ1ZmZlci4gVXNlZnVsIGZvciB1bml0IHRlc3RzIHdoZW4geW91IHdhbnQgdG8gc2ltdWxhdGUg
aW5jb21pbmcKKyAgLy8gVXNpbmcgdGhpcyBjb25zdHJ1Y3RvciwgeW91IGNhbiBzcGVjaWZ5IGEg
ZGlmZmVyZW50IGV2ZW50IGltcGxlbWV0YXRpb24gZm9yCisgIC8vIHRoZSBqaXR0ZXIgYnVmZmVy
LiBVc2VmdWwgZm9yIHVuaXQgdGVzdHMgd2hlbiB5b3Ugd2FudCB0byBzaW11bGF0ZSBpbmNvbWlu
ZwogICAvLyBwYWNrZXRzLCBpbiB3aGljaCBjYXNlIHRoZSBqaXR0ZXIgYnVmZmVyJ3Mgd2FpdCBl
dmVudCBpcyBkaWZmZXJlbnQgZnJvbQogICAvLyB0aGF0IG9mIFZDTVJlY2VpdmVyIGl0c2VsZi4K
ICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3JlY2VpdmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcmVj
ZWl2ZXJfdW5pdHRlc3QuY2MKaW5kZXggMWZmODY2Mjk4ZTJjY2RmNDYxNjYzMWZiOTExZGQ4YWM4
MDQ5ZmVmZC4uYmEzNWY2OTM1ODJkNDgxYzNjYmIxMjA0Y2QzZmQ0MDc5MTNhNGViYSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvcmVjZWl2ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcmVjZWl2ZXJfdW5p
dHRlc3QuY2MKQEAgLTE4LDcgKzE4LDYgQEAKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9wYWNrZXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3Rlc3Qvc3RyZWFtX2dlbmVyYXRvci5oIgot
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3Rlc3QvdGVzdF91dGlsLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdGltaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKQEAgLTMx
LDcgKzMwLDcgQEAgY2xhc3MgVGVzdFZDTVJlY2VpdmVyIDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7CiAgIFRlc3RWQ01SZWNlaXZlcigpCiAgICAgICA6IGNsb2NrXyhuZXcgU2ltdWxhdGVkQ2xv
Y2soMCkpLAogICAgICAgICB0aW1pbmdfKGNsb2NrXy5nZXQoKSksCi0gICAgICAgIHJlY2VpdmVy
XygmdGltaW5nXywgY2xvY2tfLmdldCgpLCAmZXZlbnRfZmFjdG9yeV8pIHsKKyAgICAgICAgcmVj
ZWl2ZXJfKCZ0aW1pbmdfLCBjbG9ja18uZ2V0KCkpIHsKICAgICBzdHJlYW1fZ2VuZXJhdG9yXy5y
ZXNldCgKICAgICAgICAgbmV3IFN0cmVhbUdlbmVyYXRvcigwLCBjbG9ja18tPlRpbWVJbk1pbGxp
c2Vjb25kcygpKSk7CiAgIH0KQEAgLTgxLDcgKzgwLDYgQEAgY2xhc3MgVGVzdFZDTVJlY2VpdmVy
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAKICAgc3RkOjp1bmlxdWVfcHRyPFNpbXVsYXRl
ZENsb2NrPiBjbG9ja187CiAgIFZDTVRpbWluZyB0aW1pbmdfOwotICBOdWxsRXZlbnRGYWN0b3J5
IGV2ZW50X2ZhY3RvcnlfOwogICBWQ01SZWNlaXZlciByZWNlaXZlcl87CiAgIHN0ZDo6dW5pcXVl
X3B0cjxTdHJlYW1HZW5lcmF0b3I+IHN0cmVhbV9nZW5lcmF0b3JfOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL3Rlc3QvdGVzdF91dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy90ZXN0L3Rlc3RfdXRpbC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzhmYzU4YjEyODRiYzc4MWIxYzZmNWNkNjQyZjdmNjZk
YzNhZTQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL3Rlc3QvdGVzdF91dGlsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgot
ICogIENvcHlyaWdodCAoYykgMjAxMiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX1ZJREVPX0NPRElOR19URVNUX1RF
U1RfVVRJTF9IXwotI2RlZmluZSBNT0RVTEVTX1ZJREVPX0NPRElOR19URVNUX1RFU1RfVVRJTF9I
XwotCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oIgot
Ci1jbGFzcyBOdWxsRXZlbnRGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6RXZlbnRGYWN0b3J5IHsK
LSBwdWJsaWM6Ci0gIHZpcnR1YWwgfk51bGxFdmVudEZhY3RvcnkoKSB7fQotCi0gIHdlYnJ0Yzo6
RXZlbnRXcmFwcGVyKiBDcmVhdGVFdmVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBOdWxsRXZl
bnQ7IH0KLQotIHByaXZhdGU6Ci0gIC8vIFByaXZhdGUgY2xhc3MgdG8gYXZvaWQgbW9yZSBkZXBl
bmRlbmNpZXMgb24gaXQgaW4gdGVzdHMuCi0gIGNsYXNzIE51bGxFdmVudCA6IHB1YmxpYyB3ZWJy
dGM6OkV2ZW50V3JhcHBlciB7Ci0gICBwdWJsaWM6Ci0gICAgfk51bGxFdmVudCgpIG92ZXJyaWRl
IHt9Ci0gICAgYm9vbCBTZXQoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgd2VicnRj
OjpFdmVudFR5cGVXcmFwcGVyIFdhaXQodW5zaWduZWQgbG9uZyBtYXhfdGltZSkgb3ZlcnJpZGUg
eyAgLy8gTk9MSU5UCi0gICAgICByZXR1cm4gd2VicnRjOjprRXZlbnRUaW1lb3V0OwotICAgIH0K
LSAgfTsKLX07Ci0KLSNlbmRpZiAgLy8gTU9EVUxFU19WSURFT19DT0RJTkdfVEVTVF9URVNUX1VU
SUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvaXZmX2ZpbGVfd3JpdGVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy91dGlsaXR5L2l2Zl9maWxlX3dyaXRlci5oCmluZGV4IDdkOTE3ZWQzNWVlOWIxMGY5ODdlY2Zj
OTRhMWNlYTg4MDNhYWZkMzIuLjQ3NzViZWRkYWM4NWE1MWI2OTI5OGM1YjEzNTUyZTc0YTUzOTVk
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvaXZmX2ZpbGVfd3JpdGVyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvdXRpbGl0eS9pdmZfZmlsZV93cml0ZXIuaApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5j
bHVkZS92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZmls
ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L3V0aWxpdHkvbW92aW5nX2F2ZXJhZ2UuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGViMjNlM2Q5MmYzZTYwNjNlYWNkZWRmZDg4MDJhOWZmYTgzZDFjNzIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZl
cmFnZS5jYworKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IChjKSAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
LSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZl
cmFnZS5oIgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQot
TW92aW5nQXZlcmFnZTo6TW92aW5nQXZlcmFnZShzaXplX3QgcykgOiBzdW1faGlzdG9yeV8ocyAr
IDEsIDApIHt9Ci1Nb3ZpbmdBdmVyYWdlOjp+TW92aW5nQXZlcmFnZSgpID0gZGVmYXVsdDsKLQot
dm9pZCBNb3ZpbmdBdmVyYWdlOjpBZGRTYW1wbGUoaW50IHNhbXBsZSkgewotICBjb3VudF8rKzsK
LSAgc3VtXyArPSBzYW1wbGU7Ci0gIHN1bV9oaXN0b3J5X1tjb3VudF8gJSBzdW1faGlzdG9yeV8u
c2l6ZSgpXSA9IHN1bV87Ci19Ci0KLWFic2w6Om9wdGlvbmFsPGludD4gTW92aW5nQXZlcmFnZTo6
R2V0QXZlcmFnZSgpIGNvbnN0IHsKLSAgcmV0dXJuIEdldEF2ZXJhZ2Uoc2l6ZSgpKTsKLX0KLQot
YWJzbDo6b3B0aW9uYWw8aW50PiBNb3ZpbmdBdmVyYWdlOjpHZXRBdmVyYWdlKHNpemVfdCBudW1f
c2FtcGxlcykgY29uc3QgewotICBpZiAobnVtX3NhbXBsZXMgPiBzaXplKCkgfHwgbnVtX3NhbXBs
ZXMgPT0gMCkKLSAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKLSAgaW50IHN1bSA9IHN1bV8gLSBz
dW1faGlzdG9yeV9bKGNvdW50XyAtIG51bV9zYW1wbGVzKSAlIHN1bV9oaXN0b3J5Xy5zaXplKCld
OwotICByZXR1cm4gc3VtIC8gc3RhdGljX2Nhc3Q8aW50PihudW1fc2FtcGxlcyk7Ci19Ci0KLXZv
aWQgTW92aW5nQXZlcmFnZTo6UmVzZXQoKSB7Ci0gIGNvdW50XyA9IDA7Ci0gIHN1bV8gPSAwOwot
ICBzdGQ6OmZpbGwoc3VtX2hpc3RvcnlfLmJlZ2luKCksIHN1bV9oaXN0b3J5Xy5lbmQoKSwgMCk7
Ci19Ci0KLXNpemVfdCBNb3ZpbmdBdmVyYWdlOjpzaXplKCkgY29uc3QgewotICByZXR1cm4gc3Rk
OjptaW4oY291bnRfLCBzdW1faGlzdG9yeV8uc2l6ZSgpIC0gMSk7Ci19Ci0KLX0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvbW92aW5nX2F2ZXJhZ2UuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL3V0aWxpdHkvbW92aW5nX2F2ZXJhZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzdjZTYzM2IxOGZjYzE2ZjZmMDAxZDcxN2QwMWQxNmRkNWFkYjc5Ni4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmlu
Z19hdmVyYWdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogIENvcHly
aWdodCAoYykgMjAxNSBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX1ZJREVPX0NPRElOR19VVElMSVRZX01PVklOR19B
VkVSQUdFX0hfCi0jZGVmaW5lIE1PRFVMRVNfVklERU9fQ09ESU5HX1VUSUxJVFlfTU9WSU5HX0FW
RVJBR0VfSF8KLQotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBNb3ZpbmdBdmVyYWdlIHsKLSBw
dWJsaWM6Ci0gIGV4cGxpY2l0IE1vdmluZ0F2ZXJhZ2Uoc2l6ZV90IHMpOwotICB+TW92aW5nQXZl
cmFnZSgpOwotICB2b2lkIEFkZFNhbXBsZShpbnQgc2FtcGxlKTsKLSAgYWJzbDo6b3B0aW9uYWw8
aW50PiBHZXRBdmVyYWdlKCkgY29uc3Q7Ci0gIGFic2w6Om9wdGlvbmFsPGludD4gR2V0QXZlcmFn
ZShzaXplX3QgbnVtX3NhbXBsZXMpIGNvbnN0OwotICB2b2lkIFJlc2V0KCk7Ci0gIHNpemVfdCBz
aXplKCkgY29uc3Q7Ci0KLSBwcml2YXRlOgotICBzaXplX3QgY291bnRfID0gMDsKLSAgaW50IHN1
bV8gPSAwOwotICBzdGQ6OnZlY3RvcjxpbnQ+IHN1bV9oaXN0b3J5XzsKLX07Ci19ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxFU19WSURFT19DT0RJTkdfVVRJTElUWV9N
T1ZJTkdfQVZFUkFHRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFn
ZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvbW92aW5nX2F2ZXJhZ2VfdW5pdHRlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyZmM3NzVhODI3MzJkY2QxNzViZTc2MWVi
NjIwZDg1ZGQ2MGQ2YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZV91bml0dGVzdC5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5oIgotCi0jaW5jbHVk
ZSAidGVzdC9ndGVzdC5oIgotCi1URVNUKE1vdmluZ0F2ZXJhZ2VUZXN0LCBFbXB0eUF2ZXJhZ2Up
IHsKLSAgd2VicnRjOjpNb3ZpbmdBdmVyYWdlIG1vdmluZ19hdmVyYWdlKDEpOwotICBFWFBFQ1Rf
RVEoMHUsIG1vdmluZ19hdmVyYWdlLnNpemUoKSk7Ci0gIEVYUEVDVF9GQUxTRShtb3ZpbmdfYXZl
cmFnZS5HZXRBdmVyYWdlKDApKTsKLX0KLQotLy8gVGVzdCBzaW5nbGUgdmFsdWUuCi1URVNUKE1v
dmluZ0F2ZXJhZ2VUZXN0LCBPbmVFbGVtZW50KSB7Ci0gIHdlYnJ0Yzo6TW92aW5nQXZlcmFnZSBt
b3ZpbmdfYXZlcmFnZSgxKTsKLSAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDMpOwotICBFWFBF
Q1RfRVEoMXUsIG1vdmluZ19hdmVyYWdlLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgzLCAqbW92aW5n
X2F2ZXJhZ2UuR2V0QXZlcmFnZSgpKTsKLSAgRVhQRUNUX0VRKDMsICptb3ZpbmdfYXZlcmFnZS5H
ZXRBdmVyYWdlKDEpKTsKLSAgRVhQRUNUX0ZBTFNFKG1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2Uo
MikpOwotfQotCi1URVNUKE1vdmluZ0F2ZXJhZ2VUZXN0LCBHZXRBdmVyYWdlKSB7Ci0gIHdlYnJ0
Yzo6TW92aW5nQXZlcmFnZSBtb3ZpbmdfYXZlcmFnZSgxMDI0KTsKLSAgbW92aW5nX2F2ZXJhZ2Uu
QWRkU2FtcGxlKDEpOwotICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoMSk7Ci0gIG1vdmluZ19h
dmVyYWdlLkFkZFNhbXBsZSgzKTsKLSAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDMpOwotICBF
WFBFQ1RfRVEoKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2UoNCksIDIpOwotICBFWFBFQ1RfRVEo
Km1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2UoMiksIDMpOwotICBFWFBFQ1RfRkFMU0UobW92aW5n
X2F2ZXJhZ2UuR2V0QXZlcmFnZSgwKSk7Ci19Ci0KLVRFU1QoTW92aW5nQXZlcmFnZVRlc3QsIFJl
c2V0KSB7Ci0gIHdlYnJ0Yzo6TW92aW5nQXZlcmFnZSBtb3ZpbmdfYXZlcmFnZSg1KTsKLSAgbW92
aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDEpOwotICBFWFBFQ1RfRVEoMSwgKm1vdmluZ19hdmVyYWdl
LkdldEF2ZXJhZ2UoMSkpOwotICBtb3ZpbmdfYXZlcmFnZS5SZXNldCgpOwotICBFWFBFQ1RfRkFM
U0UobW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZSgxKSk7Ci0gIEVYUEVDVF9GQUxTRShtb3Zpbmdf
YXZlcmFnZS5HZXRBdmVyYWdlKDYpKTsKLX0KLQotVEVTVChNb3ZpbmdBdmVyYWdlVGVzdCwgTWFu
eVNhbXBsZXMpIHsKLSAgd2VicnRjOjpNb3ZpbmdBdmVyYWdlIG1vdmluZ19hdmVyYWdlKDEwKTsK
LSAgZm9yIChpbnQgaSA9IDE7IGkgPCAxMTsgaSsrKSB7Ci0gICAgbW92aW5nX2F2ZXJhZ2UuQWRk
U2FtcGxlKGkpOwotICB9Ci0gIEVYUEVDVF9FUSgqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZSgp
LCA1KTsKLSAgbW92aW5nX2F2ZXJhZ2UuUmVzZXQoKTsKLSAgZm9yIChpbnQgaSA9IDE7IGkgPCAy
MDAxOyBpKyspIHsKLSAgICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoaSk7Ci0gIH0KLSAgRVhQ
RUNUX0VRKCptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlKCksIDE5OTUpOwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0
eV9zY2FsZXIuY2MKaW5kZXggZWExOWU0MThjOWQ0ZTkyMWZjZTBjOTdkNmQ2YTkzNDMxZjZjZTcy
NS4uMzJhZTE2NmE5YzY3N2EyMWNjMzk0NmYyYTI2NTcyZjUyZDVkYjM1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3F1YWxp
dHlfc2NhbGVyLmNjCkBAIC0xNzMsOCArMTczLDggQEAgdm9pZCBRdWFsaXR5U2NhbGVyOjpDaGVj
a1FwKCkgewogICAvLyBJZiB3ZSBoYXZlIG5vdCBvYnNlcnZlZCBhdCBsZWFzdCB0aGlzIG1hbnkg
ZnJhbWVzIHdlIGNhbid0IG1ha2UgYSBnb29kCiAgIC8vIHNjYWxpbmcgZGVjaXNpb24uCiAgIGNv
bnN0IHNpemVfdCBmcmFtZXMgPSBjb25maWdfLnVzZV9hbGxfZHJvcF9yZWFzb25zCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPyBmcmFtZWRyb3BfcGVyY2VudF9hbGxfLnNpemUoKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogZnJhbWVkcm9wX3BlcmNlbnRfbWVkaWFfb3B0Xy5z
aXplKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmcmFtZWRyb3BfcGVyY2VudF9h
bGxfLlNpemUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZnJhbWVkcm9wX3BlcmNl
bnRfbWVkaWFfb3B0Xy5TaXplKCk7CiAgIGlmIChmcmFtZXMgPCBrTWluRnJhbWVzTmVlZGVkVG9T
Y2FsZSkgewogICAgIG9ic2VydmVkX2Vub3VnaF9mcmFtZXNfID0gZmFsc2U7CiAgICAgcmV0dXJu
OwpAQCAtMTgzLDggKzE4Myw5IEBAIHZvaWQgUXVhbGl0eVNjYWxlcjo6Q2hlY2tRcCgpIHsKIAog
ICAvLyBDaGVjayBpZiB3ZSBzaG91bGQgc2NhbGUgZG93biBkdWUgdG8gaGlnaCBmcmFtZSBkcm9w
LgogICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+IGRyb3BfcmF0ZSA9Ci0gICAgICBjb25maWdf
LnVzZV9hbGxfZHJvcF9yZWFzb25zID8gZnJhbWVkcm9wX3BlcmNlbnRfYWxsXy5HZXRBdmVyYWdl
KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmcmFtZWRyb3BfcGVyY2Vu
dF9tZWRpYV9vcHRfLkdldEF2ZXJhZ2UoKTsKKyAgICAgIGNvbmZpZ18udXNlX2FsbF9kcm9wX3Jl
YXNvbnMKKyAgICAgICAgICA/IGZyYW1lZHJvcF9wZXJjZW50X2FsbF8uR2V0QXZlcmFnZVJvdW5k
ZWREb3duKCkKKyAgICAgICAgICA6IGZyYW1lZHJvcF9wZXJjZW50X21lZGlhX29wdF8uR2V0QXZl
cmFnZVJvdW5kZWREb3duKCk7CiAgIGlmIChkcm9wX3JhdGUgJiYgKmRyb3BfcmF0ZSA+PSBrRnJh
bWVkcm9wUGVyY2VudFRocmVzaG9sZCkgewogICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlJlcG9y
dGluZyBoaWdoIFFQLCBmcmFtZWRyb3AgcGVyY2VudCAiIDw8ICpkcm9wX3JhdGU7CiAgICAgUmVw
b3J0UXBIaWdoKCk7CkBAIC0xOTIsMTEgKzE5MywxMiBAQCB2b2lkIFF1YWxpdHlTY2FsZXI6OkNo
ZWNrUXAoKSB7CiAgIH0KIAogICAvLyBDaGVjayBpZiB3ZSBzaG91bGQgc2NhbGUgdXAgb3IgZG93
biBiYXNlZCBvbiBRUC4KLSAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiBhdmdfcXBfaGlnaCA9
IHFwX3Ntb290aGVyX2hpZ2hfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBxcF9zbW9vdGhlcl9oaWdoXy0+R2V0QXZnKCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGF2ZXJhZ2VfcXBfLkdldEF2ZXJhZ2UoKTsK
KyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiBhdmdfcXBfaGlnaCA9CisgICAgICBxcF9zbW9v
dGhlcl9oaWdoXyA/IHFwX3Ntb290aGVyX2hpZ2hfLT5HZXRBdmcoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgOiBhdmVyYWdlX3FwXy5HZXRBdmVyYWdlUm91bmRlZERvd24oKTsKICAgY29uc3Qg
YWJzbDo6b3B0aW9uYWw8aW50PiBhdmdfcXBfbG93ID0KLSAgICAgIHFwX3Ntb290aGVyX2xvd18g
PyBxcF9zbW9vdGhlcl9sb3dfLT5HZXRBdmcoKSA6IGF2ZXJhZ2VfcXBfLkdldEF2ZXJhZ2UoKTsK
KyAgICAgIHFwX3Ntb290aGVyX2xvd18gPyBxcF9zbW9vdGhlcl9sb3dfLT5HZXRBdmcoKQorICAg
ICAgICAgICAgICAgICAgICAgICA6IGF2ZXJhZ2VfcXBfLkdldEF2ZXJhZ2VSb3VuZGVkRG93bigp
OwogICBpZiAoYXZnX3FwX2hpZ2ggJiYgYXZnX3FwX2xvdykgewogICAgIFJUQ19MT0coTFNfSU5G
TykgPDwgIkNoZWNraW5nIGF2ZXJhZ2UgUVAgIiA8PCAqYXZnX3FwX2hpZ2ggPDwgIiAoIgogICAg
ICAgICAgICAgICAgICAgICAgPDwgKmF2Z19xcF9sb3cgPDwgIikuIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL3V0aWxpdHkvcXVhbGl0eV9zY2FsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0eV9zY2Fs
ZXIuaAppbmRleCAzMDkxZWJmMzZjNDJlOWQ5NjcyOGUwMDdlNzE2NjQyYjdhNzcyMzllLi4yNzJj
MDJlNTNhODAzODE1MTM0OTNkMTI3Mzk1NDY5MzJmYjcxNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91
dGlsaXR5L3F1YWxpdHlfc2NhbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxl
ci5oCkBAIC0xNyw4ICsxNyw4IEBACiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgog
I2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgImNv
bW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2V4cGVyaW1lbnRzL3F1YWxpdHlfc2NhbGluZ19leHBlcmltZW50LmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
ZXF1ZW5jZWRfdGFza19jaGVja2VyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNzksOSAr
NzksMTAgQEAgY2xhc3MgUXVhbGl0eVNjYWxlciB7CiAgIGNvbnN0IFZpZGVvRW5jb2Rlcjo6UXBU
aHJlc2hvbGRzIHRocmVzaG9sZHNfOwogICBjb25zdCBpbnQ2NF90IHNhbXBsaW5nX3BlcmlvZF9t
c187CiAgIGJvb2wgZmFzdF9yYW1wdXBfIFJUQ19HVUFSREVEX0JZKCZ0YXNrX2NoZWNrZXJfKTsK
LSAgTW92aW5nQXZlcmFnZSBhdmVyYWdlX3FwXyBSVENfR1VBUkRFRF9CWSgmdGFza19jaGVja2Vy
Xyk7Ci0gIE1vdmluZ0F2ZXJhZ2UgZnJhbWVkcm9wX3BlcmNlbnRfbWVkaWFfb3B0XyBSVENfR1VB
UkRFRF9CWSgmdGFza19jaGVja2VyXyk7Ci0gIE1vdmluZ0F2ZXJhZ2UgZnJhbWVkcm9wX3BlcmNl
bnRfYWxsXyBSVENfR1VBUkRFRF9CWSgmdGFza19jaGVja2VyXyk7CisgIHJ0Yzo6TW92aW5nQXZl
cmFnZSBhdmVyYWdlX3FwXyBSVENfR1VBUkRFRF9CWSgmdGFza19jaGVja2VyXyk7CisgIHJ0Yzo6
TW92aW5nQXZlcmFnZSBmcmFtZWRyb3BfcGVyY2VudF9tZWRpYV9vcHRfCisgICAgICBSVENfR1VB
UkRFRF9CWSgmdGFza19jaGVja2VyXyk7CisgIHJ0Yzo6TW92aW5nQXZlcmFnZSBmcmFtZWRyb3Bf
cGVyY2VudF9hbGxfIFJUQ19HVUFSREVEX0JZKCZ0YXNrX2NoZWNrZXJfKTsKIAogICAvLyBVc2Vk
IGJ5IFF1YWxpdHlTY2FsaW5nRXhwZXJpbWVudC4KICAgY29uc3QgYm9vbCBleHBlcmltZW50X2Vu
YWJsZWRfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxlcl91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0eV9zY2FsZXJfdW5pdHRlc3QuY2MKaW5kZXggYjE3
MDYyZGY1YzE1OGNhNWFmZGJiYTIyYTJhNzlkY2VlMzY2YTE3YS4uZWQ3OTM3OTkyOTc5YjMwYjVi
ZmI2ODQ2NmYyNDAyN2YyMzAwY2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5
X3NjYWxlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3F1YWxpdHlfc2NhbGVyX3Vu
aXR0ZXN0LmNjCkBAIC0yOCwxOSArMjgsMTggQEAgc3RhdGljIGNvbnN0IGludCBrTWluRnJhbWVz
TmVlZGVkVG9TY2FsZSA9IDYwOyAgLy8gRnJvbSBxdWFsaXR5X3NjYWxlci5jYy4KIHN0YXRpYyBj
b25zdCBzaXplX3Qga0RlZmF1bHRUaW1lb3V0TXMgPSAxNTA7CiB9ICAvLyBuYW1lc3BhY2UKIAot
I2RlZmluZSBET19TWU5DKHEsIGJsb2NrKSAgICAgICAgICAgXAotICBkbyB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIHJ0Yzo6RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsg
XAotICAgIHEtPlBvc3RUYXNrKFt0aGlzLCAmZXZlbnRdIHsgICAgXAotICAgICAgYmxvY2s7ICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgZXZlbnQuU2V0KCk7ICAgICAgICAgICAgICAg
ICAgXAotICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFJUQ19DSEVD
SyhldmVudC5XYWl0KDEwMDApKTsgICAgXAorI2RlZmluZSBET19TWU5DKHEsIGJsb2NrKSAgICAg
ICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJ0Yzo6RXZlbnQg
ZXZlbnQ7ICAgICAgICAgICAgXAorICAgIHEtPlBvc3RUYXNrKFt0aGlzLCAmZXZlbnRdIHsgXAor
ICAgICAgYmxvY2s7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZXZlbnQuU2V0KCk7ICAg
ICAgICAgICAgICAgXAorICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJU
Q19DSEVDSyhldmVudC5XYWl0KDEwMDApKTsgXAogICB9IHdoaWxlICgwKQogCiBjbGFzcyBNb2Nr
QWRhcHRhdGlvbk9ic2VydmVyIDogcHVibGljIEFkYXB0YXRpb25PYnNlcnZlckludGVyZmFjZSB7
CiAgcHVibGljOgotICBNb2NrQWRhcHRhdGlvbk9ic2VydmVyKCkgOiBldmVudChmYWxzZSwgZmFs
c2UpIHt9CiAgIHZpcnR1YWwgfk1vY2tBZGFwdGF0aW9uT2JzZXJ2ZXIoKSB7fQogCiAgIHZvaWQg
QWRhcHRVcChBZGFwdFJlYXNvbiByKSBvdmVycmlkZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGls
aXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkv
c2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjCmluZGV4IDdmNTQ5MzJhODEzZGRi
NTE0MWM4ZDNiMTRmOGQxMzYyNzZhZDMwZTYuLmJiZTNmMTlmYjczMjBkOWU2NDFlNTI4NmZlMzU4
MTcyNDlmOWY1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxs
b2NhdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxs
b2NhdG9yX3VuaXR0ZXN0LmNjCkBAIC0xNSw4ICsxNSw3IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4K
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgotCisjaW5jbHVkZSAiYXBpL3Zp
ZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90
cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0Lmgi
CkBAIC0zNCw5ICszMyw5IEBAIGNvbnN0ZXhwciB1aW50MzJfdCBrTGVnYWN5U2NyZWVuc2hhcmVN
YXhCaXRyYXRlS2JwcyA9IDEwMDA7CiBjb25zdGV4cHIgdWludDMyX3Qga1NpbXVsY2FzdFNjcmVl
bnNoYXJlTWluQml0cmF0ZUticHMgPSA2MDA7CiBjb25zdGV4cHIgdWludDMyX3Qga1NpbXVsY2Fz
dFNjcmVlbnNoYXJlTWF4Qml0cmF0ZUticHMgPSAxMjUwOwogCi1jbGFzcyBNb2NrVGVtcG9yYWxM
YXllcnMgOiBwdWJsaWMgVGVtcG9yYWxMYXllcnMgeworY2xhc3MgTW9ja1RlbXBvcmFsTGF5ZXJz
IDogcHVibGljIFZwOFRlbXBvcmFsTGF5ZXJzIHsKICBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShV
cGRhdGVMYXllckNvbmZpZywgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnKHVpbnQzMl90KSk7
CisgIE1PQ0tfTUVUSE9EMShVcGRhdGVMYXllckNvbmZpZywgVnA4VGVtcG9yYWxMYXllcnM6OkZy
YW1lQ29uZmlnKHVpbnQzMl90KSk7CiAgIE1PQ0tfTUVUSE9EMihPblJhdGVzVXBkYXRlZCwgdm9p
ZChjb25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4mLCBpbnQpKTsKICAgTU9DS19NRVRIT0QxKFVw
ZGF0ZUNvbmZpZ3VyYXRpb24sIGJvb2woVnA4RW5jb2RlckNvbmZpZyopKTsKICAgTU9DS19NRVRI
T0Q1KE9uRW5jb2RlRG9uZSwKQEAgLTQ0LDcgKzQzLDcgQEAgY2xhc3MgTW9ja1RlbXBvcmFsTGF5
ZXJzIDogcHVibGljIFRlbXBvcmFsTGF5ZXJzIHsKICAgTU9DS19NRVRIT0QzKEZyYW1lRW5jb2Rl
ZCwgdm9pZCh1aW50MzJfdCwgc2l6ZV90LCBpbnQpKTsKICAgTU9DS19DT05TVF9NRVRIT0QwKFRs
MFBpY0lkeCwgdWludDhfdCgpKTsKICAgTU9DS19DT05TVF9NRVRIT0QxKEdldFRlbXBvcmFsTGF5
ZXJJZCwKLSAgICAgICAgICAgICAgICAgICAgIGludChjb25zdCBUZW1wb3JhbExheWVyczo6RnJh
bWVDb25maWcmKSk7CisgICAgICAgICAgICAgICAgICAgICBpbnQoY29uc3QgVnA4VGVtcG9yYWxM
YXllcnM6OkZyYW1lQ29uZmlnJikpOwogfTsKIH0gIC8vIG5hbWVzcGFjZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmVfaW1wbC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0
aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9pbXBsLmNjCmluZGV4IDRhZjUyNmM2NjMxOWNk
NzcyZGNlODFjNWEwYzk5YmYwNzUzYTQ0MGMuLjk5Mjc3M2VjYzYwOWVlZmQ4OTg2MTA3ODZmMjUy
MmQwNmRiYzJmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4
dHVyZV9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9p
bXBsLmNjCkBAIC0xNSw5ICsxNSwxMCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2
ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oIgogI2luY2x1ZGUg
ImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgotI2luY2x1ZGUgImNvbW1vbl92
aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1
di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlk
ZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCkBAIC04MTksNSArODIwLDY3
IEBAIHZvaWQgU2ltdWxjYXN0VGVzdEZpeHR1cmVJbXBsOjpUZXN0U3RyaWRlRW5jb2RlRGVjb2Rl
KCkgewogICBFWFBFQ1RfRVEoMiwgZGVjb2Rlcl9jYWxsYmFjay5EZWNvZGVkRnJhbWVzKCkpOwog
fQogCit2b2lkIFNpbXVsY2FzdFRlc3RGaXh0dXJlSW1wbDo6VGVzdERlY29kZVdpZHRoSGVpZ2h0
U2V0KCkgeworICBNb2NrRW5jb2RlZEltYWdlQ2FsbGJhY2sgZW5jb2Rlcl9jYWxsYmFjazsKKyAg
TW9ja0RlY29kZWRJbWFnZUNhbGxiYWNrIGRlY29kZXJfY2FsbGJhY2s7CisKKyAgRW5jb2RlZElt
YWdlIGVuY29kZWRfZnJhbWVbM107CisgIFNldFJhdGVzKGtNYXhCaXRyYXRlc1syXSwgMzApOyAg
Ly8gVG8gZ2V0IGFsbCB0aHJlZSBzdHJlYW1zLgorICBlbmNvZGVyXy0+UmVnaXN0ZXJFbmNvZGVD
b21wbGV0ZUNhbGxiYWNrKCZlbmNvZGVyX2NhbGxiYWNrKTsKKyAgZGVjb2Rlcl8tPlJlZ2lzdGVy
RGVjb2RlQ29tcGxldGVDYWxsYmFjaygmZGVjb2Rlcl9jYWxsYmFjayk7CisKKyAgRVhQRUNUX0NB
TEwoZW5jb2Rlcl9jYWxsYmFjaywgT25FbmNvZGVkSW1hZ2UoXywgXywgXykpCisgICAgICAuVGlt
ZXMoMykKKyAgICAgIC5XaWxsUmVwZWF0ZWRseSgKKyAgICAgICAgICB0ZXN0aW5nOjpJbnZva2Uo
WyZdKGNvbnN0IEVuY29kZWRJbWFnZSYgZW5jb2RlZF9pbWFnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZv
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhl
YWRlciogZnJhZ21lbnRhdGlvbikgeworICAgICAgICAgICAgRVhQRUNUX0VRKGVuY29kZWRfaW1h
Z2UuX2ZyYW1lVHlwZSwga1ZpZGVvRnJhbWVLZXkpOworCisgICAgICAgICAgICBzaXplX3QgaW5k
ZXggPSBlbmNvZGVkX2ltYWdlLlNwYXRpYWxJbmRleCgpLnZhbHVlX29yKDApOworICAgICAgICAg
ICAgZW5jb2RlZF9mcmFtZVtpbmRleF0uX2J1ZmZlciA9IG5ldyB1aW50OF90W2VuY29kZWRfaW1h
Z2UuX3NpemVdOworICAgICAgICAgICAgZW5jb2RlZF9mcmFtZVtpbmRleF0uX3NpemUgPSBlbmNv
ZGVkX2ltYWdlLl9zaXplOworICAgICAgICAgICAgZW5jb2RlZF9mcmFtZVtpbmRleF0uX2xlbmd0
aCA9IGVuY29kZWRfaW1hZ2UuX2xlbmd0aDsKKyAgICAgICAgICAgIGVuY29kZWRfZnJhbWVbaW5k
ZXhdLl9mcmFtZVR5cGUgPSBlbmNvZGVkX2ltYWdlLl9mcmFtZVR5cGU7CisgICAgICAgICAgICBl
bmNvZGVkX2ZyYW1lW2luZGV4XS5fY29tcGxldGVGcmFtZSA9IGVuY29kZWRfaW1hZ2UuX2NvbXBs
ZXRlRnJhbWU7CisgICAgICAgICAgICBtZW1jcHkoZW5jb2RlZF9mcmFtZVtpbmRleF0uX2J1ZmZl
ciwgZW5jb2RlZF9pbWFnZS5fYnVmZmVyLAorICAgICAgICAgICAgICAgICAgIGVuY29kZWRfaW1h
Z2UuX2xlbmd0aCk7CisgICAgICAgICAgICByZXR1cm4gRW5jb2RlZEltYWdlQ2FsbGJhY2s6OlJl
c3VsdCgKKyAgICAgICAgICAgICAgICBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6UmVzdWx0OjpPSywg
MCk7CisgICAgICAgICAgfSkpOworICBFWFBFQ1RfRVEoMCwgZW5jb2Rlcl8tPkVuY29kZSgqaW5w
dXRfZnJhbWVfLCBOVUxMLCBOVUxMKSk7CisKKyAgRVhQRUNUX0NBTEwoZGVjb2Rlcl9jYWxsYmFj
aywgRGVjb2RlZChfLCBfLCBfKSkKKyAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpJbnZva2UoW10o
VmlkZW9GcmFtZSYgZGVjb2RlZEltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiBkZWNvZGVfdGltZV9tcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gcXApIHsKKyAg
ICAgICAgRVhQRUNUX0VRKGRlY29kZWRJbWFnZS53aWR0aCgpLCBrRGVmYXVsdFdpZHRoIC8gNCk7
CisgICAgICAgIEVYUEVDVF9FUShkZWNvZGVkSW1hZ2UuaGVpZ2h0KCksIGtEZWZhdWx0SGVpZ2h0
IC8gNCk7CisgICAgICB9KSk7CisgIEVYUEVDVF9FUSgwLCBkZWNvZGVyXy0+RGVjb2RlKGVuY29k
ZWRfZnJhbWVbMF0sIGZhbHNlLCBOVUxMLCAwKSk7CisKKyAgRVhQRUNUX0NBTEwoZGVjb2Rlcl9j
YWxsYmFjaywgRGVjb2RlZChfLCBfLCBfKSkKKyAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpJbnZv
a2UoW10oVmlkZW9GcmFtZSYgZGVjb2RlZEltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiBkZWNvZGVfdGltZV9tcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gcXAp
IHsKKyAgICAgICAgRVhQRUNUX0VRKGRlY29kZWRJbWFnZS53aWR0aCgpLCBrRGVmYXVsdFdpZHRo
IC8gMik7CisgICAgICAgIEVYUEVDVF9FUShkZWNvZGVkSW1hZ2UuaGVpZ2h0KCksIGtEZWZhdWx0
SGVpZ2h0IC8gMik7CisgICAgICB9KSk7CisgIEVYUEVDVF9FUSgwLCBkZWNvZGVyXy0+RGVjb2Rl
KGVuY29kZWRfZnJhbWVbMV0sIGZhbHNlLCBOVUxMLCAwKSk7CisKKyAgRVhQRUNUX0NBTEwoZGVj
b2Rlcl9jYWxsYmFjaywgRGVjb2RlZChfLCBfLCBfKSkKKyAgICAgIC5XaWxsT25jZSh0ZXN0aW5n
OjpJbnZva2UoW10oVmlkZW9GcmFtZSYgZGVjb2RlZEltYWdlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiBkZWNvZGVfdGltZV9tcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDhf
dD4gcXApIHsKKyAgICAgICAgRVhQRUNUX0VRKGRlY29kZWRJbWFnZS53aWR0aCgpLCBrRGVmYXVs
dFdpZHRoKTsKKyAgICAgICAgRVhQRUNUX0VRKGRlY29kZWRJbWFnZS5oZWlnaHQoKSwga0RlZmF1
bHRIZWlnaHQpOworICAgICAgfSkpOworICBFWFBFQ1RfRVEoMCwgZGVjb2Rlcl8tPkRlY29kZShl
bmNvZGVkX2ZyYW1lWzJdLCBmYWxzZSwgTlVMTCwgMCkpOworCisgIGZvciAoaW50IGkgPSAwOyBp
IDwgMzsgKytpKSB7CisgICAgZGVsZXRlIFtdIGVuY29kZWRfZnJhbWVbaV0uX2J1ZmZlcjsKKyAg
fQorfQorCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2ltcGwuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9pbXBsLmgKaW5kZXggNjYzNGE2OWFk
MWNhNTQzNDAyZjdlM2ZlZjA5NDExYjdjZTI2ZTgwMC4uMmY4MzRiZGZiNTVmYzI0MzliMjg4OGZh
MjlhMjFlMjZkOTg5OGE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdGVz
dF9maXh0dXJlX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF90ZXN0X2ZpeHR1
cmVfaW1wbC5oCkBAIC0xNCw2ICsxNCw4IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5oIgorI2lu
Y2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgImFwaS90ZXN0
L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZm
ZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCIKQEAgLTIxLDcgKzIzLDYg
QEAKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgog
I2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0
b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL21vY2svbW9ja192
aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2Ug
dGVzdCB7CkBAIC01MCw2ICs1MSw3IEBAIGNsYXNzIFNpbXVsY2FzdFRlc3RGaXh0dXJlSW1wbCBm
aW5hbCA6IHB1YmxpYyBTaW11bGNhc3RUZXN0Rml4dHVyZSB7CiAgIHZvaWQgVGVzdFNwYXRpb1Rl
bXBvcmFsTGF5ZXJzMzMzUGF0dGVybkVuY29kZXIoKSBvdmVycmlkZTsKICAgdm9pZCBUZXN0U3Bh
dGlvVGVtcG9yYWxMYXllcnMzMjFQYXR0ZXJuRW5jb2RlcigpIG92ZXJyaWRlOwogICB2b2lkIFRl
c3RTdHJpZGVFbmNvZGVEZWNvZGUoKSBvdmVycmlkZTsKKyAgdm9pZCBUZXN0RGVjb2RlV2lkdGhI
ZWlnaHRTZXQoKSBvdmVycmlkZTsKIAogICBzdGF0aWMgdm9pZCBEZWZhdWx0U2V0dGluZ3MoVmlk
ZW9Db2RlYyogc2V0dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQqIHRlbXBvcmFsX2xheWVyX3Byb2ZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2Rl
Y19pbml0aWFsaXplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVjX2luaXRpYWxpemVyLmNjCmluZGV4
IGU3MTI1Y2UyNzgyMzEzZjhmYmMyNjA2Yjk2ZGJlNDZhYjNlYzRlNWMuLjg2YTVhYjJhNDgyMDk5
NGZkNzQwMjg3NGU5ZjM0ZjJiYmUyZWYzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVj
X2luaXRpYWxpemVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVjX2luaXRpYWxpemVyLmNjCkBA
IC0yNCwxNSArMjQsMTMgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWJvb2wgVmlkZW9Db2Rl
Y0luaXRpYWxpemVyOjpTZXR1cENvZGVjKAotICAgIGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZyYg
Y29uZmlnLAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiYgc3RyZWFtcywKLSAg
ICBWaWRlb0NvZGVjKiBjb2RlYywKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxs
b2NhdG9yPiogYml0cmF0ZV9hbGxvY2F0b3IpIHsKK2Jvb2wgVmlkZW9Db2RlY0luaXRpYWxpemVy
OjpTZXR1cENvZGVjKGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZyYgY29uZmlnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9TdHJl
YW0+JiBzdHJlYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlk
ZW9Db2RlYyogY29kZWMpIHsKICAgaWYgKGNvbmZpZy5jb2RlY190eXBlID09IGtWaWRlb0NvZGVj
TXVsdGlwbGV4KSB7CiAgICAgVmlkZW9FbmNvZGVyQ29uZmlnIGFzc29jaWF0ZWRfY29uZmlnID0g
Y29uZmlnLkNvcHkoKTsKICAgICBhc3NvY2lhdGVkX2NvbmZpZy5jb2RlY190eXBlID0ga1ZpZGVv
Q29kZWNWUDk7Ci0gICAgaWYgKCFTZXR1cENvZGVjKGFzc29jaWF0ZWRfY29uZmlnLCBzdHJlYW1z
LCBjb2RlYywgYml0cmF0ZV9hbGxvY2F0b3IpKSB7CisgICAgaWYgKCFTZXR1cENvZGVjKGFzc29j
aWF0ZWRfY29uZmlnLCBzdHJlYW1zLCBjb2RlYykpIHsKICAgICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJGYWlsZWQgdG8gY3JlYXRlIHN0ZXJlbyBlbmNvZGVyIGNvbmZpZ3VyYXRpb24uIjsKICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00MSwzMSArMzksOSBAQCBib29sIFZpZGVvQ29k
ZWNJbml0aWFsaXplcjo6U2V0dXBDb2RlYygKICAgfQogCiAgICpjb2RlYyA9IFZpZGVvRW5jb2Rl
ckNvbmZpZ1RvVmlkZW9Db2RlYyhjb25maWcsIHN0cmVhbXMpOwotICAqYml0cmF0ZV9hbGxvY2F0
b3IgPSBDcmVhdGVCaXRyYXRlQWxsb2NhdG9yKCpjb2RlYyk7Ci0KICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+Ci1WaWRlb0NvZGVjSW5p
dGlhbGl6ZXI6OkNyZWF0ZUJpdHJhdGVBbGxvY2F0b3IoY29uc3QgVmlkZW9Db2RlYyYgY29kZWMp
IHsKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvcj4gcmF0ZV9hbGxvY2F0
b3I7Ci0KLSAgc3dpdGNoIChjb2RlYy5jb2RlY1R5cGUpIHsKLSAgICBjYXNlIGtWaWRlb0NvZGVj
VlA4OgotICAgICAgUlRDX0ZBTExUSFJPVUdIKCk7Ci0gICAgY2FzZSBrVmlkZW9Db2RlY0gyNjQ6
Ci0gICAgICByYXRlX2FsbG9jYXRvci5yZXNldChuZXcgU2ltdWxjYXN0UmF0ZUFsbG9jYXRvcihj
b2RlYykpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBrVmlkZW9Db2RlY1ZQOToKLSAgICAgIHJh
dGVfYWxsb2NhdG9yLnJlc2V0KG5ldyBTdmNSYXRlQWxsb2NhdG9yKGNvZGVjKSk7Ci0gICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgcmF0ZV9hbGxvY2F0b3IucmVzZXQobmV3IERlZmF1
bHRWaWRlb0JpdHJhdGVBbGxvY2F0b3IoY29kZWMpKTsKLSAgfQotCi0gIHJldHVybiByYXRlX2Fs
bG9jYXRvcjsKLX0KLQogLy8gVE9ETyhzcHJhbmcpOiBTcGxpdCB0aGlzIHVwIGFuZCBzZXBhcmF0
ZSB0aGUgY29kZWMgc3BlY2lmaWMgcGFydHMuCiBWaWRlb0NvZGVjIFZpZGVvQ29kZWNJbml0aWFs
aXplcjo6VmlkZW9FbmNvZGVyQ29uZmlnVG9WaWRlb0NvZGVjKAogICAgIGNvbnN0IFZpZGVvRW5j
b2RlckNvbmZpZyYgY29uZmlnLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kZWNfaW5pdGlh
bGl6ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19pbml0aWFsaXplcl91bml0dGVz
dC5jYwppbmRleCBmYjYwMWYwZDQyOTllYzk1MmMyZjQ2NTc2MDZiYmQ2MThmNWJkZTIzLi5jZWZm
MWViYWY3NDI3YmY5MjhmZTdlNmFkYmUwM2M1MzBhMTg3Y2UzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92
aWRlb19jb2RlY19pbml0aWFsaXplcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2Rl
Y19pbml0aWFsaXplcl91bml0dGVzdC5jYwpAQCAtOSwxMSArOSwxMyBAQAogICovCiAKICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2luaXRpYWxpemVy
LmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yLmgiCisjaW5j
bHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5o
IgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMu
aCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXIuaCIKKyNpbmNsdWRl
ICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJjb21t
b25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgIm1vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9pbmNsdWRlL3ZwOV9nbG9i
YWxzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
cmVmY291bnRlZG9iamVjdC5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIApAQCAtNzQsMjEg
Kzc2LDIyIEBAIGNsYXNzIFZpZGVvQ29kZWNJbml0aWFsaXplclRlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKIAogICBib29sIEluaXRpYWxpemVDb2RlYygpIHsKICAgICBjb2RlY19vdXRf
ID0gVmlkZW9Db2RlYygpOwotICAgIGJpdHJhdGVfYWxsb2NhdG9yX291dF8ucmVzZXQoKTsKICAg
ICB0ZW1wb3JhbF9sYXllcnNfLmNsZWFyKCk7Ci0gICAgaWYgKCFWaWRlb0NvZGVjSW5pdGlhbGl6
ZXI6OlNldHVwQ29kZWMoY29uZmlnXywgc3RyZWFtc18sICZjb2RlY19vdXRfLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZiaXRyYXRlX2FsbG9jYXRvcl9vdXRf
KSkgeworICAgIGlmICghVmlkZW9Db2RlY0luaXRpYWxpemVyOjpTZXR1cENvZGVjKGNvbmZpZ18s
IHN0cmVhbXNfLCAmY29kZWNfb3V0XykpIHsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Cisg
ICAgYml0cmF0ZV9hbGxvY2F0b3JfID0gQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRv
ckZhY3RvcnkoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPkNyZWF0ZVZpZGVvQml0
cmF0ZUFsbG9jYXRvcihjb2RlY19vdXRfKTsKKyAgICBSVENfQ0hFQ0soYml0cmF0ZV9hbGxvY2F0
b3JfKTsKICAgICBpZiAoY29kZWNfb3V0Xy5jb2RlY1R5cGUgPT0gVmlkZW9Db2RlY1R5cGU6OmtW
aWRlb0NvZGVjTXVsdGlwbGV4KQogICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBNYWtlIHN1
cmUgdGVtcG9yYWwgbGF5ZXJzIGluc3RhbmNlcyBoYXZlIGJlZW4gY3JlYXRlZC4KICAgICBpZiAo
Y29kZWNfb3V0Xy5jb2RlY1R5cGUgPT0gVmlkZW9Db2RlY1R5cGU6OmtWaWRlb0NvZGVjVlA4KSB7
CiAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvZGVjX291dF8ubnVtYmVyT2ZTaW11bGNhc3RT
dHJlYW1zOyArK2kpIHsKLSAgICAgICAgdGVtcG9yYWxfbGF5ZXJzXy5lbXBsYWNlX2JhY2soVGVt
cG9yYWxMYXllcnM6OkNyZWF0ZVRlbXBvcmFsTGF5ZXJzKAotICAgICAgICAgICAgVGVtcG9yYWxM
YXllcnNUeXBlOjprRml4ZWRQYXR0ZXJuLAotICAgICAgICAgICAgY29kZWNfb3V0Xy5WUDgoKS0+
bnVtYmVyT2ZUZW1wb3JhbExheWVycykpOworICAgICAgICB0ZW1wb3JhbF9sYXllcnNfLmVtcGxh
Y2VfYmFjaygKKyAgICAgICAgICAgIENyZWF0ZVZwOFRlbXBvcmFsTGF5ZXJzKFZwOFRlbXBvcmFs
TGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvZGVjX291dF8uVlA4KCktPm51bWJlck9mVGVtcG9yYWxMYXllcnMpKTsKICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjUsOCArMTI4LDggQEAgY2xhc3MgVmlk
ZW9Db2RlY0luaXRpYWxpemVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogCiAgIC8v
IE91dHB1dC4KICAgVmlkZW9Db2RlYyBjb2RlY19vdXRfOwotICBzdGQ6OnVuaXF1ZV9wdHI8Vmlk
ZW9CaXRyYXRlQWxsb2NhdG9yPiBiaXRyYXRlX2FsbG9jYXRvcl9vdXRfOwotICBzdGQ6OnZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8VGVtcG9yYWxMYXllcnM+PiB0ZW1wb3JhbF9sYXllcnNfOworICBz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiBiaXRyYXRlX2FsbG9jYXRvcl87
CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxWcDhUZW1wb3JhbExheWVycz4+IHRlbXBv
cmFsX2xheWVyc187CiB9OwogCiBURVNUX0YoVmlkZW9Db2RlY0luaXRpYWxpemVyVGVzdCwgU2lu
Z2xlU3RyZWFtVnA4U2NyZWVuc2hhcmUpIHsKQEAgLTEzNCw5ICsxMzcsOCBAQCBURVNUX0YoVmlk
ZW9Db2RlY0luaXRpYWxpemVyVGVzdCwgU2luZ2xlU3RyZWFtVnA4U2NyZWVuc2hhcmUpIHsKICAg
c3RyZWFtc18ucHVzaF9iYWNrKERlZmF1bHRTdHJlYW0oKSk7CiAgIEVYUEVDVF9UUlVFKEluaXRp
YWxpemVDb2RlYygpKTsKIAotICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2Nh
dGlvbiA9Ci0gICAgICBiaXRyYXRlX2FsbG9jYXRvcl9vdXRfLT5HZXRBbGxvY2F0aW9uKGtEZWZh
dWx0VGFyZ2V0Qml0cmF0ZUJwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga0RlZmF1bHRGcmFtZVJhdGUpOworICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJp
dHJhdGVfYWxsb2NhdGlvbiA9IGJpdHJhdGVfYWxsb2NhdG9yXy0+R2V0QWxsb2NhdGlvbigKKyAg
ICAgIGtEZWZhdWx0VGFyZ2V0Qml0cmF0ZUJwcywga0RlZmF1bHRGcmFtZVJhdGUpOwogICBFWFBF
Q1RfRVEoMXUsIGNvZGVjX291dF8ubnVtYmVyT2ZTaW11bGNhc3RTdHJlYW1zKTsKICAgRVhQRUNU
X0VRKDF1LCBjb2RlY19vdXRfLlZQOCgpLT5udW1iZXJPZlRlbXBvcmFsTGF5ZXJzKTsKICAgRVhQ
RUNUX0VRKGtEZWZhdWx0VGFyZ2V0Qml0cmF0ZUJwcywgYml0cmF0ZV9hbGxvY2F0aW9uLmdldF9z
dW1fYnBzKCkpOwpAQCAtMTQ5LDkgKzE1MSw4IEBAIFRFU1RfRihWaWRlb0NvZGVjSW5pdGlhbGl6
ZXJUZXN0LCBTaW5nbGVTdHJlYW1WcDhTY3JlZW5zaGFyZUluYWN0aXZlKSB7CiAgIHN0cmVhbXNf
LnB1c2hfYmFjayhpbmFjdGl2ZV9zdHJlYW0pOwogICBFWFBFQ1RfVFJVRShJbml0aWFsaXplQ29k
ZWMoKSk7CiAKLSAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRyYXRlX2FsbG9jYXRpb24gPQot
ICAgICAgYml0cmF0ZV9hbGxvY2F0b3Jfb3V0Xy0+R2V0QWxsb2NhdGlvbihrRGVmYXVsdFRhcmdl
dEJpdHJhdGVCcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtEZWZhdWx0RnJhbWVSYXRlKTsKKyAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRyYXRlX2Fs
bG9jYXRpb24gPSBiaXRyYXRlX2FsbG9jYXRvcl8tPkdldEFsbG9jYXRpb24oCisgICAgICBrRGVm
YXVsdFRhcmdldEJpdHJhdGVCcHMsIGtEZWZhdWx0RnJhbWVSYXRlKTsKICAgRVhQRUNUX0VRKDF1
LCBjb2RlY19vdXRfLm51bWJlck9mU2ltdWxjYXN0U3RyZWFtcyk7CiAgIEVYUEVDVF9FUSgxdSwg
Y29kZWNfb3V0Xy5WUDgoKS0+bnVtYmVyT2ZUZW1wb3JhbExheWVycyk7CiAgIEVYUEVDVF9FUSgw
VSwgYml0cmF0ZV9hbGxvY2F0aW9uLmdldF9zdW1fYnBzKCkpOwpAQCAtMTY0LDkgKzE2NSw4IEBA
IFRFU1RfRihWaWRlb0NvZGVjSW5pdGlhbGl6ZXJUZXN0LCBUZW1wb3JhbExheWVyZWRWcDhTY3Jl
ZW5zaGFyZSkgewogCiAgIEVYUEVDVF9FUSgxdSwgY29kZWNfb3V0Xy5udW1iZXJPZlNpbXVsY2Fz
dFN0cmVhbXMpOwogICBFWFBFQ1RfRVEoMnUsIGNvZGVjX291dF8uVlA4KCktPm51bWJlck9mVGVt
cG9yYWxMYXllcnMpOwotICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlv
biA9Ci0gICAgICBiaXRyYXRlX2FsbG9jYXRvcl9vdXRfLT5HZXRBbGxvY2F0aW9uKGtTY3JlZW5z
aGFyZUNvZGVjVGFyZ2V0Qml0cmF0ZUJwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga1NjcmVlbnNoYXJlRGVmYXVsdEZyYW1lcmF0ZSk7CisgIFZpZGVvQml0
cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxvY2F0aW9uID0gYml0cmF0ZV9hbGxvY2F0b3JfLT5H
ZXRBbGxvY2F0aW9uKAorICAgICAga1NjcmVlbnNoYXJlQ29kZWNUYXJnZXRCaXRyYXRlQnBzLCBr
U2NyZWVuc2hhcmVEZWZhdWx0RnJhbWVyYXRlKTsKICAgRVhQRUNUX0VRKGtTY3JlZW5zaGFyZUNv
ZGVjVGFyZ2V0Qml0cmF0ZUJwcywKICAgICAgICAgICAgIGJpdHJhdGVfYWxsb2NhdGlvbi5nZXRf
c3VtX2JwcygpKTsKICAgRVhQRUNUX0VRKGtTY3JlZW5zaGFyZVRsMEJpdHJhdGVCcHMsIGJpdHJh
dGVfYWxsb2NhdGlvbi5HZXRCaXRyYXRlKDAsIDApKTsKQEAgLTE4NCw5ICsxODQsOCBAQCBURVNU
X0YoVmlkZW9Db2RlY0luaXRpYWxpemVyVGVzdCwgU2ltdWxjYXN0VnA4U2NyZWVuc2hhcmUpIHsK
ICAgRVhQRUNUX0VRKDF1LCBjb2RlY19vdXRfLlZQOCgpLT5udW1iZXJPZlRlbXBvcmFsTGF5ZXJz
KTsKICAgY29uc3QgdWludDMyX3QgbWF4X2JpdHJhdGVfYnBzID0KICAgICAgIHN0cmVhbXNfWzBd
LnRhcmdldF9iaXRyYXRlX2JwcyArIHN0cmVhbXNfWzFdLm1heF9iaXRyYXRlX2JwczsKLSAgVmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRyYXRlX2FsbG9jYXRpb24gPQotICAgICAgYml0cmF0ZV9h
bGxvY2F0b3Jfb3V0Xy0+R2V0QWxsb2NhdGlvbihtYXhfYml0cmF0ZV9icHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtTY3JlZW5zaGFyZURlZmF1bHRGcmFt
ZXJhdGUpOworICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbiA9IGJp
dHJhdGVfYWxsb2NhdG9yXy0+R2V0QWxsb2NhdGlvbigKKyAgICAgIG1heF9iaXRyYXRlX2Jwcywg
a1NjcmVlbnNoYXJlRGVmYXVsdEZyYW1lcmF0ZSk7CiAgIEVYUEVDVF9FUShtYXhfYml0cmF0ZV9i
cHMsIGJpdHJhdGVfYWxsb2NhdGlvbi5nZXRfc3VtX2JwcygpKTsKICAgRVhQRUNUX0VRKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihzdHJlYW1zX1swXS50YXJnZXRfYml0cmF0ZV9icHMpLAogICAgICAg
ICAgICAgYml0cmF0ZV9hbGxvY2F0aW9uLkdldFNwYXRpYWxMYXllclN1bSgwKSk7CkBAIC0yMDks
OSArMjA4LDggQEAgVEVTVF9GKFZpZGVvQ29kZWNJbml0aWFsaXplclRlc3QsIFNpbXVsY2FzdFZw
OFNjcmVlbnNoYXJlSW5hY3RpdmUpIHsKICAgRVhQRUNUX0VRKDF1LCBjb2RlY19vdXRfLlZQOCgp
LT5udW1iZXJPZlRlbXBvcmFsTGF5ZXJzKTsKICAgY29uc3QgdWludDMyX3QgdGFyZ2V0X2JpdHJh
dGUgPQogICAgICAgc3RyZWFtc19bMF0udGFyZ2V0X2JpdHJhdGVfYnBzICsgc3RyZWFtc19bMV0u
dGFyZ2V0X2JpdHJhdGVfYnBzOwotICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxs
b2NhdGlvbiA9Ci0gICAgICBiaXRyYXRlX2FsbG9jYXRvcl9vdXRfLT5HZXRBbGxvY2F0aW9uKHRh
cmdldF9iaXRyYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrU2NyZWVuc2hhcmVEZWZhdWx0RnJhbWVyYXRlKTsKKyAgVmlkZW9CaXRyYXRlQWxsb2NhdGlv
biBiaXRyYXRlX2FsbG9jYXRpb24gPSBiaXRyYXRlX2FsbG9jYXRvcl8tPkdldEFsbG9jYXRpb24o
CisgICAgICB0YXJnZXRfYml0cmF0ZSwga1NjcmVlbnNoYXJlRGVmYXVsdEZyYW1lcmF0ZSk7CiAg
IEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RyZWFtc19bMF0ubWF4X2JpdHJhdGVf
YnBzKSwKICAgICAgICAgICAgIGJpdHJhdGVfYWxsb2NhdGlvbi5nZXRfc3VtX2JwcygpKTsKICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdHJlYW1zX1swXS5tYXhfYml0cmF0ZV9i
cHMpLApAQCAtMjM0LDcgKzIzMiw3IEBAIFRFU1RfRihWaWRlb0NvZGVjSW5pdGlhbGl6ZXJUZXN0
LCBIaWdoRnBzU2ltdWxjYXN0VnA4U2NyZWVuc2hhcmUpIHsKICAgY29uc3QgdWludDMyX3QgbWF4
X2JpdHJhdGVfYnBzID0KICAgICAgIHN0cmVhbXNfWzBdLnRhcmdldF9iaXRyYXRlX2JwcyArIHN0
cmVhbXNfWzFdLm1heF9iaXRyYXRlX2JwczsKICAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRy
YXRlX2FsbG9jYXRpb24gPQotICAgICAgYml0cmF0ZV9hbGxvY2F0b3Jfb3V0Xy0+R2V0QWxsb2Nh
dGlvbihtYXhfYml0cmF0ZV9icHMsIGtEZWZhdWx0RnJhbWVSYXRlKTsKKyAgICAgIGJpdHJhdGVf
YWxsb2NhdG9yXy0+R2V0QWxsb2NhdGlvbihtYXhfYml0cmF0ZV9icHMsIGtEZWZhdWx0RnJhbWVS
YXRlKTsKICAgRVhQRUNUX0VRKG1heF9iaXRyYXRlX2JwcywgYml0cmF0ZV9hbGxvY2F0aW9uLmdl
dF9zdW1fYnBzKCkpOwogICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0cmVhbXNf
WzBdLnRhcmdldF9iaXRyYXRlX2JwcyksCiAgICAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRpb24u
R2V0U3BhdGlhbExheWVyU3VtKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGluZ19p
bXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvdmlkZW9fY29kaW5nX2ltcGwuY2MKaW5kZXggYTA2MWMxOGZkNzBlMjIy
ZWNjY2I3NDJmYTA3NWRmMzE1MTZjMjUwOS4uNTgzOTdhZDM4NmQzMjIxZTAzZmI3MmI2ZGJmZTA3
MTY1NzhjODNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kaW5nX2ltcGwuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvdmlkZW9fY29kaW5nX2ltcGwuY2MKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFwaS92aWRlby9idWls
dGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlk
ZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIg
IC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgImNvbW1vbl92aWRlby9saWJ5dXYv
aW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCkBAIC0yNywxMCArMjgsNiBAQAogI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotRXZl
bnRXcmFwcGVyKiBFdmVudEZhY3RvcnlJbXBsOjpDcmVhdGVFdmVudCgpIHsKLSAgcmV0dXJuIEV2
ZW50V3JhcHBlcjo6Q3JlYXRlKCk7Ci19Ci0KIG5hbWVzcGFjZSB2Y20gewogCiBpbnQ2NF90IFZD
TVByb2Nlc3NUaW1lcjo6UGVyaW9kKCkgY29uc3QgewpAQCAtODEsMTcgKzc4LDEzIEBAIGNsYXNz
IEVuY29kZWRJbWFnZUNhbGxiYWNrV3JhcHBlciA6IHB1YmxpYyBFbmNvZGVkSW1hZ2VDYWxsYmFj
ayB7CiBjbGFzcyBWaWRlb0NvZGluZ01vZHVsZUltcGwgOiBwdWJsaWMgVmlkZW9Db2RpbmdNb2R1
bGUgewogIHB1YmxpYzoKICAgVmlkZW9Db2RpbmdNb2R1bGVJbXBsKENsb2NrKiBjbG9jaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEV2ZW50RmFjdG9yeSogZXZlbnRfZmFjdG9yeSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIE5hY2tTZW5kZXIqIG5hY2tfc2VuZGVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgS2V5RnJhbWVSZXF1ZXN0U2VuZGVyKiBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRl
cikKICAgICAgIDogVmlkZW9Db2RpbmdNb2R1bGUoKSwKICAgICAgICAgc2VuZGVyXyhjbG9jaywg
JnBvc3RfZW5jb2RlX2NhbGxiYWNrXyksCisgICAgICAgIHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnlf
KENyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkpLAogICAgICAgICB0
aW1pbmdfKG5ldyBWQ01UaW1pbmcoY2xvY2spKSwKLSAgICAgICAgcmVjZWl2ZXJfKGNsb2NrLAot
ICAgICAgICAgICAgICAgICAgZXZlbnRfZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgIHRpbWlu
Z18uZ2V0KCksCi0gICAgICAgICAgICAgICAgICBuYWNrX3NlbmRlciwKLSAgICAgICAgICAgICAg
ICAgIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKSB7fQorICAgICAgICByZWNlaXZlcl8oY2xvY2ss
IHRpbWluZ18uZ2V0KCksIG5hY2tfc2VuZGVyLCBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcikge30K
IAogICB2aXJ0dWFsIH5WaWRlb0NvZGluZ01vZHVsZUltcGwoKSB7fQogCkBAIC0xMTQsNyArMTA3
LDggQEAgY2xhc3MgVmlkZW9Db2RpbmdNb2R1bGVJbXBsIDogcHVibGljIFZpZGVvQ29kaW5nTW9k
dWxlIHsKICAgICAgIC8vIGFzeW5jaHJvbm91c2x5IGtlZXAgdGhlIGluc3RhbmNlIGFsaXZlIHVu
dGlsIGRlc3RydWN0aW9uIG9yIHVudGlsIGEKICAgICAgIC8vIG5ldyBzZW5kIGNvZGVjIGlzIHJl
Z2lzdGVyZWQuCiAgICAgICBWaWRlb0NvZGVjIGNvZGVjID0gKnNlbmRDb2RlYzsKLSAgICAgIHJh
dGVfYWxsb2NhdG9yXyA9IFZpZGVvQ29kZWNJbml0aWFsaXplcjo6Q3JlYXRlQml0cmF0ZUFsbG9j
YXRvcihjb2RlYyk7CisgICAgICByYXRlX2FsbG9jYXRvcl8gPQorICAgICAgICAgIHJhdGVfYWxs
b2NhdG9yX2ZhY3RvcnlfLT5DcmVhdGVWaWRlb0JpdHJhdGVBbGxvY2F0b3IoY29kZWMpOwogICAg
ICAgcmV0dXJuIHNlbmRlcl8uUmVnaXN0ZXJTZW5kQ29kZWMoJmNvZGVjLCBudW1iZXJPZkNvcmVz
LCBtYXhQYXlsb2FkU2l6ZSk7CiAgICAgfQogICAgIHJldHVybiBzZW5kZXJfLlJlZ2lzdGVyU2Vu
ZENvZGVjKHNlbmRDb2RlYywgbnVtYmVyT2ZDb3JlcywgbWF4UGF5bG9hZFNpemUpOwpAQCAtMTQy
LDcgKzEzNiw3IEBAIGNsYXNzIFZpZGVvQ29kaW5nTW9kdWxlSW1wbCA6IHB1YmxpYyBWaWRlb0Nv
ZGluZ01vZHVsZSB7CiAKICAgaW50MzJfdCBBZGRWaWRlb0ZyYW1lKGNvbnN0IFZpZGVvRnJhbWUm
IHZpZGVvRnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmlj
SW5mbyogY29kZWNTcGVjaWZpY0luZm8pIG92ZXJyaWRlIHsKLSAgICByZXR1cm4gc2VuZGVyXy5B
ZGRWaWRlb0ZyYW1lKHZpZGVvRnJhbWUsIGNvZGVjU3BlY2lmaWNJbmZvKTsKKyAgICByZXR1cm4g
c2VuZGVyXy5BZGRWaWRlb0ZyYW1lKHZpZGVvRnJhbWUsIGNvZGVjU3BlY2lmaWNJbmZvLCBhYnNs
OjpudWxsb3B0KTsKICAgfQogCiAgIGludDMyX3QgSW50cmFGcmFtZVJlcXVlc3Qoc2l6ZV90IHN0
cmVhbV9pbmRleCkgb3ZlcnJpZGUgewpAQCAtMjEzLDE5ICsyMDcsMTggQEAgY2xhc3MgVmlkZW9D
b2RpbmdNb2R1bGVJbXBsIDogcHVibGljIFZpZGVvQ29kaW5nTW9kdWxlIHsKICAgcnRjOjpUaHJl
YWRDaGVja2VyIGNvbnN0cnVjdGlvbl90aHJlYWRfOwogICBFbmNvZGVkSW1hZ2VDYWxsYmFja1dy
YXBwZXIgcG9zdF9lbmNvZGVfY2FsbGJhY2tfOwogICB2Y206OlZpZGVvU2VuZGVyIHNlbmRlcl87
CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PiBy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5XzsKICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFs
bG9jYXRvcj4gcmF0ZV9hbGxvY2F0b3JfOwotICBzdGQ6OnVuaXF1ZV9wdHI8VkNNVGltaW5nPiB0
aW1pbmdfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VkNNVGltaW5nPiB0aW1pbmdfOwogICB2
Y206OlZpZGVvUmVjZWl2ZXIgcmVjZWl2ZXJfOwogfTsKIH0gIC8vIG5hbWVzcGFjZQogCiAvLyBE
RVBSRUNBVEVELiAgQ3JlYXRlIG1ldGhvZCBmb3IgY3VycmVudCBpbnRlcmZhY2UsIHdpbGwgYmUg
cmVtb3ZlZCB3aGVuIHRoZQogLy8gbmV3IGppdHRlciBidWZmZXIgaXMgaW4gcGxhY2UuCi1WaWRl
b0NvZGluZ01vZHVsZSogVmlkZW9Db2RpbmdNb2R1bGU6OkNyZWF0ZShDbG9jayogY2xvY2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudEZhY3Rvcnkq
IGV2ZW50X2ZhY3RvcnkpIHsKK1ZpZGVvQ29kaW5nTW9kdWxlKiBWaWRlb0NvZGluZ01vZHVsZTo6
Q3JlYXRlKENsb2NrKiBjbG9jaykgewogICBSVENfRENIRUNLKGNsb2NrKTsKLSAgUlRDX0RDSEVD
SyhldmVudF9mYWN0b3J5KTsKLSAgcmV0dXJuIG5ldyBWaWRlb0NvZGluZ01vZHVsZUltcGwoY2xv
Y2ssIGV2ZW50X2ZhY3RvcnksIG51bGxwdHIsIG51bGxwdHIpOworICByZXR1cm4gbmV3IFZpZGVv
Q29kaW5nTW9kdWxlSW1wbChjbG9jaywgbnVsbHB0ciwgbnVsbHB0cik7CiB9CiAKIH0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGluZ19pbXBsLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy92aWRlb19jb2RpbmdfaW1wbC5oCmluZGV4IDNjMDlmOTZlMjY5ZjlmYzBhYTNlNGQwYzE0
OGZjMmQyMmZmMzA2NjUuLmUyN2EyZmU3NjAxMWVlNWQyZmE2NGQzNTJiZWM4N2E1NWNlMjhmYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGluZ19pbXBsLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9f
Y29kaW5nX2ltcGwuaApAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS9mcmFtZV9jYWxs
YmFjay5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy9kZWNvZGVyX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvZW5jb2Rlcl9kYXRhYmFzZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2ZyYW1lX2J1ZmZlci5oIgpAQCAtOTQsNyArOTQsOCBAQCBjbGFzcyBWaWRlb1NlbmRl
ciB7CiAgICAgICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2JzZXJ2ZXIqIGJpdHJhdGVfdXBkYXRl
ZF9jYWxsYmFjayk7CiAKICAgaW50MzJfdCBBZGRWaWRlb0ZyYW1lKGNvbnN0IFZpZGVvRnJhbWUm
IHZpZGVvRnJhbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmlj
SW5mbyogY29kZWNTcGVjaWZpY0luZm8pOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q29kZWNTcGVjaWZpY0luZm8qIGNvZGVjU3BlY2lmaWNJbmZvLAorICAgICAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6b3B0aW9uYWw8VmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbz4gZW5jb2Rlcl9p
bmZvKTsKIAogICBpbnQzMl90IEludHJhRnJhbWVSZXF1ZXN0KHNpemVfdCBzdHJlYW1faW5kZXgp
OwogICBpbnQzMl90IEVuYWJsZUZyYW1lRHJvcHBlcihib29sIGVuYWJsZSk7CkBAIC0xMTMsNyAr
MTE0LDE4IEBAIGNsYXNzIFZpZGVvU2VuZGVyIHsKICAgVkNNRW5jb2RlZEZyYW1lQ2FsbGJhY2sg
X2VuY29kZWRGcmFtZUNhbGxiYWNrIFJUQ19HVUFSREVEX0JZKGVuY29kZXJfY3JpdF8pOwogICBF
bmNvZGVkSW1hZ2VDYWxsYmFjayogY29uc3QgcG9zdF9lbmNvZGVfY2FsbGJhY2tfOwogICBWQ01F
bmNvZGVyRGF0YUJhc2UgX2NvZGVjRGF0YUJhc2UgUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9jcml0
Xyk7Ci0gIGJvb2wgZnJhbWVfZHJvcHBlcl9lbmFibGVkXyBSVENfR1VBUkRFRF9CWShlbmNvZGVy
X2NyaXRfKTsKKworICAvLyB8ZnJhbWVfZHJvcHBlcl9yZXF1ZXN0ZWRffCBzcGVjaWZpZXMgaWYg
dGhlIHVzZXIgb2YgdGhpcyBjbGFzcyBoYXMKKyAgLy8gcmVxdWVzdGVkIGZyYW1lIGRyb3BwaW5n
IHRvIGJlIGVuYWJsZWQsIHZpYSBFbmFibGVGcmFtZURyb3BwZXIoKS4KKyAgLy8gRGVwZW5kaW5n
IG9uIHZpZGVvIGVuY29kZXIgY29uZmlndXJhdGlvbiwgdGhpcyBzZXR0aW5nIG1heSBiZSBvdmVy
cmlkZGVuCisgIC8vIGFuZCB0aGUgZnJhbWUgZHJvcHBlciBiZSBmb3JjZSBkaXNhYmxlZC4gSWYg
c28sCisgIC8vIHxmb3JjZV9kaXNhYmxlX2ZyYW1lX2Ryb3BwZXJffCB3aWxsIGJlIHNldCB0byB0
cnVlLgorICAvLyBJZiBmcmFtZSBkcm9wcGVyIGlzIHJlcXVlc3RlZCwgYW5kIGlzIG5vdCBmb3Jj
ZSBkaXNhYmxlZCwgZnJhbWUgZHJvcHBpbmcKKyAgLy8gbWlnaHQgc3RpbGwgYmUgZGlzYWJsZWQg
aWYgVmlkZW9FbmNvZGVyOjpHZXRFbmNvZGVySW5mbygpIGluZGljYXRlcyB0aGF0CisgIC8vIHRo
ZSBlbmNvZGVyIGhhcyBhIHRydXN0ZWQgcmF0ZSBjb250cm9sbGVyLiBUaGlzIGlzIGRldGVybWlu
ZWQgb24gYQorICAvLyBwZXItZnJhbWUgYmFzaXMsIGFzIHRoZSBlbmNvZGVyIGJlaGF2aW9yIG1p
Z2h0IGR5bmFtaWNhbGx5IGNoYW5nZS4KKyAgYm9vbCBmcmFtZV9kcm9wcGVyX3JlcXVlc3RlZF8g
UlRDX0dVQVJERURfQlkoZW5jb2Rlcl9jcml0Xyk7CisgIGJvb2wgZm9yY2VfZGlzYWJsZV9mcmFt
ZV9kcm9wcGVyXyBSVENfR1VBUkRFRF9CWShlbmNvZGVyX2NyaXRfKTsKIAogICAvLyBNdXN0IGJl
IGFjY2Vzc2VkIG9uIHRoZSBjb25zdHJ1Y3Rpb24gdGhyZWFkIG9mIFZpZGVvU2VuZGVyLgogICBW
aWRlb0NvZGVjIGN1cnJlbnRfY29kZWNfOwpAQCAtMTI4LDcgKzE0MCw2IEBAIGNsYXNzIFZpZGVv
U2VuZGVyIHsKIGNsYXNzIFZpZGVvUmVjZWl2ZXIgOiBwdWJsaWMgTW9kdWxlIHsKICBwdWJsaWM6
CiAgIFZpZGVvUmVjZWl2ZXIoQ2xvY2sqIGNsb2NrLAotICAgICAgICAgICAgICAgIEV2ZW50RmFj
dG9yeSogZXZlbnRfZmFjdG9yeSwKICAgICAgICAgICAgICAgICBWQ01UaW1pbmcqIHRpbWluZywK
ICAgICAgICAgICAgICAgICBOYWNrU2VuZGVyKiBuYWNrX3NlbmRlciA9IG51bGxwdHIsCiAgICAg
ICAgICAgICAgICAgS2V5RnJhbWVSZXF1ZXN0U2VuZGVyKiBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRl
ciA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fcGFja2V0X2J1ZmZlcl91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3BhY2tldF9idWZmZXJfdW5pdHRlc3QuY2MKaW5kZXggNDI1
NTQyYzk0OWMwMzY1MjIyZTRhY2EwNGI1ZjFjNjcxM2I4YTY4ZC4uMTNlNjRlZWJhYjQxZjA5ZDcz
YThjNTFhOGI0MzlhMjQ3ZjRmOGE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fcGFja2V0X2J1
ZmZlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19wYWNrZXRfYnVmZmVyX3VuaXR0ZXN0
LmNjCkBAIC0xMjAsMTQgKzEyMCw3IEBAIFRFU1RfRihUZXN0UGFja2V0QnVmZmVyLCBJbnNlcnRE
dXBsaWNhdGVQYWNrZXQpIHsKICAgRVhQRUNUX1RSVUUoSW5zZXJ0KHNlcV9udW0sIGtLZXlGcmFt
ZSwga0ZpcnN0LCBrTGFzdCkpOwogfQogCi0jaWYgZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKLS8v
IEZhaWxzIG9uIGFuZHJvaWQgYWZ0ZXIgY2xhbmcgdXBkYXRlCi0vLyBUT0RPKGNyYnVnLmNvbS84
ODc0NjQpOiBSZWVuYWJsZSB0aGlzCi0jZGVmaW5lIE1BWUJFX1NlcU51bVdyYXBPbmVGcmFtZSBE
SVNBQkxFRF9TZXFOdW1XcmFwT25lRnJhbWUKLSNlbHNlCi0jZGVmaW5lIE1BWUJFX1NlcU51bVdy
YXBPbmVGcmFtZSBTZXFOdW1XcmFwT25lRnJhbWUKLSNlbmRpZgotVEVTVF9GKFRlc3RQYWNrZXRC
dWZmZXIsIE1BWUJFX1NlcU51bVdyYXBPbmVGcmFtZSkgeworVEVTVF9GKFRlc3RQYWNrZXRCdWZm
ZXIsIFNlcU51bVdyYXBPbmVGcmFtZSkgewogICBFWFBFQ1RfVFJVRShJbnNlcnQoMHhGRkZGLCBr
S2V5RnJhbWUsIGtGaXJzdCwga05vdExhc3QpKTsKICAgRVhQRUNUX1RSVUUoSW5zZXJ0KDB4MCwg
a0tleUZyYW1lLCBrTm90Rmlyc3QsIGtMYXN0KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVv
X3JlY2VpdmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fcmVjZWl2ZXIuY2MKaW5kZXggZDk0YmE1ZTY5Zjll
ZjcwYzA0NThkY2IyYTJlNTI2ZThhZTMzODhiMS4uOGI0ZWU3ODVlZWY3OTg3YzI0OWUwNDI1MWIz
MmY0OTA2MzMyOTcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fcmVjZWl2ZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvdmlkZW9fcmVjZWl2ZXIuY2MKQEAgLTI2LDcgKzI2LDYgQEAgbmFtZXNwYWNlIHdlYnJ0
YyB7CiBuYW1lc3BhY2UgdmNtIHsKIAogVmlkZW9SZWNlaXZlcjo6VmlkZW9SZWNlaXZlcihDbG9j
ayogY2xvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50RmFjdG9yeSogZXZl
bnRfZmFjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkNNVGltaW5nKiB0aW1p
bmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hY2tTZW5kZXIqIG5hY2tfc2VuZGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtl
eWZyYW1lX3JlcXVlc3Rfc2VuZGVyKQpAQCAtMzQsNyArMzMsNiBAQCBWaWRlb1JlY2VpdmVyOjpW
aWRlb1JlY2VpdmVyKENsb2NrKiBjbG9jaywKICAgICAgIF90aW1pbmcodGltaW5nKSwKICAgICAg
IF9yZWNlaXZlcihfdGltaW5nLAogICAgICAgICAgICAgICAgIGNsb2NrXywKLSAgICAgICAgICAg
ICAgICBldmVudF9mYWN0b3J5LAogICAgICAgICAgICAgICAgIG5hY2tfc2VuZGVyLAogICAgICAg
ICAgICAgICAgIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKSwKICAgICAgIF9kZWNvZGVkRnJhbWVD
YWxsYmFjayhfdGltaW5nLCBjbG9ja18pLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fcmVjZWl2
ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19yZWNlaXZlcl91bml0dGVzdC5jYwppbmRleCBi
N2E0NmY5MmVhODhlN2VlMmQ1YmQxNTE0ZTM1ZDAxYjE0OTIyYmYzLi5mOTlkYWM0OTIwMGEzYmM5
NTVhODg3NWJlYzdiNmRhZmRmNmRhMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19yZWNlaXZl
cl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19yZWNlaXZlcl91bml0dGVzdC5jYwpAQCAt
MTEsMTAgKzExLDkgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisj
aW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192aWRlb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jb2RpbmcvaW5jbHVkZS9tb2NrL21vY2tfdmNtX2NhbGxiYWNrcy5oIgotI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvbW9jay9tb2NrX3ZpZGVvX2NvZGVjX2lu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9f
Y29kaW5nLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdGVzdC90ZXN0X3V0aWwu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy90aW1pbmcuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RpbmdfaW1wbC5oIgogI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCkBAIC0zNyw3ICszNiw3IEBAIGNsYXNzIFRlc3RW
aWRlb1JlY2VpdmVyIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAKICAgdmlydHVhbCB2b2lk
IFNldFVwKCkgewogICAgIHRpbWluZ18ucmVzZXQobmV3IFZDTVRpbWluZygmY2xvY2tfKSk7Ci0g
ICAgcmVjZWl2ZXJfLnJlc2V0KG5ldyBWaWRlb1JlY2VpdmVyKCZjbG9ja18sICZldmVudF9mYWN0
b3J5XywgdGltaW5nXy5nZXQoKSkpOworICAgIHJlY2VpdmVyXy5yZXNldChuZXcgVmlkZW9SZWNl
aXZlcigmY2xvY2tfLCB0aW1pbmdfLmdldCgpKSk7CiAgICAgcmVjZWl2ZXJfLT5SZWdpc3RlckV4
dGVybmFsRGVjb2RlcigmZGVjb2Rlcl8sIGtVbnVzZWRQYXlsb2FkVHlwZSk7CiAgICAgY29uc3Qg
c2l6ZV90IGtNYXhOYWNrTGlzdFNpemUgPSAyNTA7CiAgICAgY29uc3QgaW50IGtNYXhQYWNrZXRB
Z2VUb05hY2sgPSA0NTA7CkBAIC04MSw3ICs4MCw2IEBAIGNsYXNzIFRlc3RWaWRlb1JlY2VpdmVy
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgIH0KIAogICBTaW11bGF0ZWRDbG9jayBjbG9j
a187Ci0gIE51bGxFdmVudEZhY3RvcnkgZXZlbnRfZmFjdG9yeV87CiAgIFZpZGVvQ29kZWMgc2V0
dGluZ3NfOwogICBOaWNlTW9jazxNb2NrVmlkZW9EZWNvZGVyPiBkZWNvZGVyXzsKICAgTmljZU1v
Y2s8TW9ja1BhY2tldFJlcXVlc3RDYWxsYmFjaz4gcGFja2V0X3JlcXVlc3RfY2FsbGJhY2tfOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvdmlkZW9fc2VuZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fc2VuZGVyLmNj
CmluZGV4IDRjMWUyNDM2MTIwNGRjMDU5YjhlMzdhZGFmZmE0MDFiNmU1MzYzZWYuLjRiZDUyNTMw
YzlmNTAyMGE3ZmJjMjc4NmM4Y2Y0NTlhMGFiMzJhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVv
X3NlbmRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19zZW5kZXIuY2MKQEAgLTQwLDcgKzQwLDggQEAg
VmlkZW9TZW5kZXI6OlZpZGVvU2VuZGVyKENsb2NrKiBjbG9jaywKICAgICAgIF9lbmNvZGVkRnJh
bWVDYWxsYmFjayhwb3N0X2VuY29kZV9jYWxsYmFjaywgJl9tZWRpYU9wdCksCiAgICAgICBwb3N0
X2VuY29kZV9jYWxsYmFja18ocG9zdF9lbmNvZGVfY2FsbGJhY2spLAogICAgICAgX2NvZGVjRGF0
YUJhc2UoJl9lbmNvZGVkRnJhbWVDYWxsYmFjayksCi0gICAgICBmcmFtZV9kcm9wcGVyX2VuYWJs
ZWRfKHRydWUpLAorICAgICAgZnJhbWVfZHJvcHBlcl9yZXF1ZXN0ZWRfKHRydWUpLAorICAgICAg
Zm9yY2VfZGlzYWJsZV9mcmFtZV9kcm9wcGVyXyhmYWxzZSksCiAgICAgICBjdXJyZW50X2NvZGVj
XygpLAogICAgICAgZW5jb2Rlcl9wYXJhbXNfKHtWaWRlb0JpdHJhdGVBbGxvY2F0aW9uKCksIDAs
IDAsIDB9KSwKICAgICAgIGVuY29kZXJfaGFzX2ludGVybmFsX3NvdXJjZV8oZmFsc2UpLApAQCAt
OTYsMTUgKzk3LDEyIEBAIGludDMyX3QgVmlkZW9TZW5kZXI6OlJlZ2lzdGVyU2VuZENvZGVjKGNv
bnN0IFZpZGVvQ29kZWMqIHNlbmRDb2RlYywKICAgICBudW1MYXllcnMgPSAxOwogICB9CiAKLSAg
Ly8gSWYgd2UgaGF2ZSBzY3JlZW5zaGFyaW5nIGFuZCB3ZSBoYXZlIGxheWVycywgd2UgZGlzYWJs
ZSBmcmFtZSBkcm9wcGVyLgotICBjb25zdCBib29sIGRpc2FibGVfZnJhbWVfZHJvcHBlciA9Cisg
IC8vIEZvcmNlLWRpc2FibGUgZnJhbWUgZHJvcHBlciBpZiBlaXRoZXI6CisgIC8vICAqIFdlIGhh
dmUgc2NyZWVuc2hhcmluZyB3aXRoIGxheWVycy4KKyAgLy8gICogIldlYlJUQy1GcmFtZURyb3Bw
ZXIiIGZpZWxkIHRyaWFsIGlzICJEaXNhYmxlZCIuCisgIGZvcmNlX2Rpc2FibGVfZnJhbWVfZHJv
cHBlcl8gPQogICAgICAgZmllbGRfdHJpYWw6OklzRGlzYWJsZWQoa0ZyYW1lRHJvcHBlckZpZWxk
VHJpYWwpIHx8CiAgICAgICAobnVtTGF5ZXJzID4gMSAmJiBzZW5kQ29kZWMtPm1vZGUgPT0gVmlk
ZW9Db2RlY01vZGU6OmtTY3JlZW5zaGFyaW5nKTsKLSAgaWYgKGRpc2FibGVfZnJhbWVfZHJvcHBl
cikgewotICAgIF9tZWRpYU9wdC5FbmFibGVGcmFtZURyb3BwZXIoZmFsc2UpOwotICB9IGVsc2Ug
aWYgKGZyYW1lX2Ryb3BwZXJfZW5hYmxlZF8pIHsKLSAgICBfbWVkaWFPcHQuRW5hYmxlRnJhbWVE
cm9wcGVyKHRydWUpOwotICB9CiAKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZwYXJhbXNf
Y3JpdF8pOwpAQCAtMjQ3LDggKzI0NSwxMCBAQCB2b2lkIFZpZGVvU2VuZGVyOjpTZXRFbmNvZGVy
UGFyYW1ldGVycyhFbmNvZGVyUGFyYW1ldGVycyBwYXJhbXMsCiB9CiAKIC8vIEFkZCBvbmUgcmF3
IHZpZGVvIGZyYW1lIHRvIHRoZSBlbmNvZGVyLCBibG9ja2luZy4KLWludDMyX3QgVmlkZW9TZW5k
ZXI6OkFkZFZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVj
U3BlY2lmaWNJbmZvKSB7CitpbnQzMl90IFZpZGVvU2VuZGVyOjpBZGRWaWRlb0ZyYW1lKAorICAg
IGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsCisgICAgY29uc3QgQ29kZWNTcGVjaWZpY0lu
Zm8qIGNvZGVjU3BlY2lmaWNJbmZvLAorICAgIGFic2w6Om9wdGlvbmFsPFZpZGVvRW5jb2Rlcjo6
RW5jb2RlckluZm8+IGVuY29kZXJfaW5mbykgewogICBFbmNvZGVyUGFyYW1ldGVycyBlbmNvZGVy
X3BhcmFtczsKICAgc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiBuZXh0X2ZyYW1lX3R5cGVzOwogICBi
b29sIGVuY29kZXJfaGFzX2ludGVybmFsX3NvdXJjZSA9IGZhbHNlOwpAQCAtMjYyLDYgKzI2Miwx
NyBAQCBpbnQzMl90IFZpZGVvU2VuZGVyOjpBZGRWaWRlb0ZyYW1lKGNvbnN0IFZpZGVvRnJhbWUm
IHZpZGVvRnJhbWUsCiAgIGlmIChfZW5jb2RlciA9PSBudWxscHRyKQogICAgIHJldHVybiBWQ01f
VU5JTklUSUFMSVpFRDsKICAgU2V0RW5jb2RlclBhcmFtZXRlcnMoZW5jb2Rlcl9wYXJhbXMsIGVu
Y29kZXJfaGFzX2ludGVybmFsX3NvdXJjZSk7CisgIGlmICghZW5jb2Rlcl9pbmZvKSB7CisgICAg
ZW5jb2Rlcl9pbmZvID0gX2VuY29kZXItPkdldEVuY29kZXJJbmZvKCk7CisgIH0KKworICAvLyBG
cmFtZSBkcm9wcGluZyBpcyBlbmFibGVkIGlmZiBmcmFtZSBkcm9wcGluZyBoYXMgYmVlbiByZXF1
ZXN0ZWQsIGFuZAorICAvLyBmcmFtZSBkcm9wcGluZyBpcyBub3QgZm9yY2UtZGlzYWJsZWQsIGFu
ZCByYXRlIGNvbnRyb2xsZXIgaXMgbm90IHRydXN0ZWQuCisgIGNvbnN0IGJvb2wgZnJhbWVfZHJv
cHBpbmdfZW5hYmxlZCA9CisgICAgICBmcmFtZV9kcm9wcGVyX3JlcXVlc3RlZF8gJiYgIWZvcmNl
X2Rpc2FibGVfZnJhbWVfZHJvcHBlcl8gJiYKKyAgICAgICFlbmNvZGVyX2luZm8tPmhhc190cnVz
dGVkX3JhdGVfY29udHJvbGxlcjsKKyAgX21lZGlhT3B0LkVuYWJsZUZyYW1lRHJvcHBlcihmcmFt
ZV9kcm9wcGluZ19lbmFibGVkKTsKKwogICBpZiAoX21lZGlhT3B0LkRyb3BGcmFtZSgpKSB7CiAg
ICAgUlRDX0xPRyhMU19WRVJCT1NFKSA8PCAiRHJvcCBGcmFtZSAiCiAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAidGFyZ2V0IGJpdHJhdGUgIgpAQCAtMjg3LDcgKzI5OCw3IEBAIGludDMyX3Qg
VmlkZW9TZW5kZXI6OkFkZFZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwK
ICAgY29uc3QgYm9vbCBpc19idWZmZXJfdHlwZV9zdXBwb3J0ZWQgPQogICAgICAgYnVmZmVyX3R5
cGUgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgfHwKICAgICAgIChidWZmZXJfdHlw
ZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlICYmCi0gICAgICAgX2VuY29kZXIt
PlN1cHBvcnRzTmF0aXZlSGFuZGxlKCkpOworICAgICAgIGVuY29kZXJfaW5mby0+c3VwcG9ydHNf
bmF0aXZlX2hhbmRsZSk7CiAgIGlmICghaXNfYnVmZmVyX3R5cGVfc3VwcG9ydGVkKSB7CiAgICAg
Ly8gVGhpcyBtb2R1bGUgb25seSBzdXBwb3J0cyBzb2Z0d2FyZSBlbmNvZGluZy4KICAgICAvLyBU
T0RPKHBib3MpOiBPZmZsb2FkIGNvbnZlcnNpb24gZnJvbSB0aGUgZW5jb2RlciB0aHJlYWQuCkBA
IC0zNTUsNyArMzY2LDcgQEAgaW50MzJfdCBWaWRlb1NlbmRlcjo6SW50cmFGcmFtZVJlcXVlc3Qo
c2l6ZV90IHN0cmVhbV9pbmRleCkgewogCiBpbnQzMl90IFZpZGVvU2VuZGVyOjpFbmFibGVGcmFt
ZURyb3BwZXIoYm9vbCBlbmFibGUpIHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmZW5jb2Rlcl9j
cml0Xyk7Ci0gIGZyYW1lX2Ryb3BwZXJfZW5hYmxlZF8gPSBlbmFibGU7CisgIGZyYW1lX2Ryb3Bw
ZXJfcmVxdWVzdGVkXyA9IGVuYWJsZTsKICAgX21lZGlhT3B0LkVuYWJsZUZyYW1lRHJvcHBlcihl
bmFibGUpOwogICByZXR1cm4gVkNNX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fc2Vu
ZGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fc2VuZGVyX3VuaXR0ZXN0LmNjCmluZGV4IDNj
ZDljYWY2NWMzMDY3OThmODg4ZjlkYzVjYTdjNzAxYWQzMmQ5YjguLmMyZmYwZjYyMDdjMTI5YTlk
YzgzOGJiN2U4NTVmYjFmZjNhYWE4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3NlbmRlcl91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19zZW5kZXJfdW5pdHRlc3QuY2MKQEAgLTExLDEx
ICsxMSwxMSBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNs
dWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8v
aTQyMF9idWZmZXIuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9s
YXllcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1
ZGUvdnA4LmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNs
dWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9pbmNsdWRlL21vY2svbW9ja192Y21fY2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvaW5jbHVkZS9tb2NrL21vY2tfdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RpbmcuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L2RlZmF1bHRfdmlkZW9fYml0cmF0
ZV9hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3Np
bXVsY2FzdF9yYXRlX2FsbG9jYXRvci5oIgpAQCAtMTg2LDcgKzE4NiwxMCBAQCBjbGFzcyBUZXN0
VmlkZW9TZW5kZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIAogICB2b2lkIEFkZEZyYW1l
KCkgewogICAgIGFzc2VydChnZW5lcmF0b3JfLmdldCgpKTsKLSAgICBzZW5kZXJfLT5BZGRWaWRl
b0ZyYW1lKCpnZW5lcmF0b3JfLT5OZXh0RnJhbWUoKSwgTlVMTCk7CisgICAgc2VuZGVyXy0+QWRk
VmlkZW9GcmFtZSgqZ2VuZXJhdG9yXy0+TmV4dEZyYW1lKCksIG51bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbmNvZGVyXyA/IGFic2w6Om9wdGlvbmFsPFZpZGVvRW5jb2Rlcjo6
RW5jb2RlckluZm8+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IGFic2w6Om51bGxvcHQpOwogICB9CiAKICAgU2ltdWxhdGVkQ2xvY2sgY2xvY2tf
OwpAQCAtMzY5LDkgKzM3Miw2IEBAIFRFU1RfRihUZXN0VmlkZW9TZW5kZXJXaXRoTW9ja0VuY29k
ZXIsCiAgIC8vIEV4cGVjdCBpbml0aWFsIGNhbGwgdG8gU2V0Q2hhbm5lbFBhcmFtZXRlcnMuIFJh
dGVzIGFyZSBpbml0aWFsaXplZCB0aHJvdWdoCiAgIC8vIEluaXRFbmNvZGUgYW5kIGV4cGVjdHMg
bm8gYWRkaXRpb25hbCBjYWxsIGJlZm9yZSB0aGUgZnJhbWVyYXRlIChvciBiaXRyYXRlKQogICAv
LyB1cGRhdGVzLgotICBFWFBFQ1RfQ0FMTChlbmNvZGVyXywgU2V0Q2hhbm5lbFBhcmFtZXRlcnMo
a0xvc3NSYXRlLCBrUnR0KSkKLSAgICAgIC5UaW1lcygxKQotICAgICAgLldpbGxPbmNlKFJldHVy
bigwKSk7CiAgIHNlbmRlcl8tPlNldENoYW5uZWxQYXJhbWV0ZXJzKHNldHRpbmdzXy5zdGFydEJp
dHJhdGUgKiAxMDAwLCBrTG9zc1JhdGUsIGtSdHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJhdGVfYWxsb2NhdG9yXy5nZXQoKSwgbnVsbHB0cik7CiAgIHdoaWxlIChjbG9ja18u
VGltZUluTWlsbGlzZWNvbmRzKCkgPCBzdGFydF90aW1lICsga1JhdGVTdGF0c1dpbmRvd01zKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9v
cnRjL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
b3J0Yy9CVUlMRC5nbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY1MTY1YTAzN2Jl
NWZjZWRmYjExZWMwZjhkYmY1MGFjNjI4NWQ1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9vcnRjL0JVSUxELmduCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotIwotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCi0jIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotIyB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0jIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSMgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0KLWlt
cG9ydCgiLi4vd2VicnRjLmduaSIpCi1pZiAoaXNfYW5kcm9pZCkgewotICBpbXBvcnQoIi8vYnVp
bGQvY29uZmlnL2FuZHJvaWQvY29uZmlnLmduaSIpCi0gIGltcG9ydCgiLy9idWlsZC9jb25maWcv
YW5kcm9pZC9ydWxlcy5nbmkiKQotfQotCi1ydGNfc3RhdGljX2xpYnJhcnkoIm9ydGMiKSB7Ci0g
IGRlZmluZXMgPSBbXQotICBzb3VyY2VzID0gWwotICAgICJvcnRjZmFjdG9yeS5jYyIsCi0gICAg
Im9ydGNmYWN0b3J5LmgiLAotICAgICJvcnRjcnRwcmVjZWl2ZXJhZGFwdGVyLmNjIiwKLSAgICAi
b3J0Y3J0cHJlY2VpdmVyYWRhcHRlci5oIiwKLSAgICAib3J0Y3J0cHNlbmRlcmFkYXB0ZXIuY2Mi
LAotICAgICJvcnRjcnRwc2VuZGVyYWRhcHRlci5oIiwKLSAgICAicnRwdHJhbnNwb3J0YWRhcHRl
ci5jYyIsCi0gICAgInJ0cHRyYW5zcG9ydGFkYXB0ZXIuaCIsCi0gICAgInJ0cHRyYW5zcG9ydGNv
bnRyb2xsZXJhZGFwdGVyLmNjIiwKLSAgICAicnRwdHJhbnNwb3J0Y29udHJvbGxlcmFkYXB0ZXIu
aCIsCi0gIF0KLQotICAjIFRPRE8oZGVhZGJlZWYpOiBDcmVhdGUgYSBzZXBhcmF0ZSB0YXJnZXQg
Zm9yIHRoZSBjb21tb24gdGhpbmdzIE9SVEMgYW5kCi0gICMgUGVlckNvbm5lY3Rpb24gY29kZSBz
aGFyZXMsIHNvIHRoYXQgb3J0YyBjYW4gZGVwZW5kIG9uIHRoYXQgaW5zdGVhZCBvZgotICAjIGxp
YmppbmdsZV9wZWVyY29ubmVjdGlvbi4KLSAgZGVwcyA9IFsKLSAgICAiLi4vYXBpOmxpYmppbmds
ZV9wZWVyY29ubmVjdGlvbl9hcGkiLAotICAgICIuLi9hcGk6b3J0Y19hcGkiLAotICAgICIuLi9h
cGkvdmlkZW9fY29kZWNzOmJ1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5IiwKLSAgICAiLi4v
YXBpL3ZpZGVvX2NvZGVjczpidWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeSIsCi0gICAgIi4u
L2NhbGw6Y2FsbF9pbnRlcmZhY2VzIiwKLSAgICAiLi4vY2FsbDpydHBfc2VuZGVyIiwKLSAgICAi
Li4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCi0gICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50
X2xvZ19pbXBsX2Jhc2UiLAotICAgICIuLi9tZWRpYTpydGNfYXVkaW9fdmlkZW8iLAotICAgICIu
Li9tZWRpYTpydGNfbWVkaWEiLAotICAgICIuLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCi0gICAg
Ii4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKLSAgICAiLi4v
cDJwOnJ0Y19wMnAiLAotICAgICIuLi9wYzpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24iLAotICAg
ICIuLi9wYzpwZWVyY29ubmVjdGlvbiIsCi0gICAgIi4uL3BjOnJ0Y19wYyIsCi0gICAgIi4uL3Bj
OnJ0Y19wY19iYXNlIiwKLSAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKLSAgICAiLi4vcnRjX2Jh
c2U6cnRjX2Jhc2UiLAotICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAg
Ii4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3QiLAotICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZW1vcnkiLAotICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlczpvcHRpb25hbCIsCi0gIF0KLQotICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYg
aXNfY2xhbmcpIHsKLSAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIENocm9taXVtIENs
YW5nIHBsdWdpbiAoYnVncy53ZWJydGMub3JnLzE2MykuCi0gICAgc3VwcHJlc3NlZF9jb25maWdz
ICs9IFsgIi8vYnVpbGQvY29uZmlnL2NsYW5nOmZpbmRfYmFkX2NvbnN0cnVjdHMiIF0KLSAgfQot
fQotCi1pZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKLSAgcnRjX3Rlc3QoIm9ydGNfdW5pdHRlc3Rz
IikgewotICAgIHRlc3Rvbmx5ID0gdHJ1ZQotCi0gICAgc291cmNlcyA9IFsKLSAgICAgICJvcnRj
ZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MiLAotICAgICAgIm9ydGNmYWN0b3J5X3VuaXR0ZXN0
LmNjIiwKLSAgICAgICJvcnRjcnRwcmVjZWl2ZXJfdW5pdHRlc3QuY2MiLAotICAgICAgIm9ydGNy
dHBzZW5kZXJfdW5pdHRlc3QuY2MiLAotICAgICAgInJ0cHRyYW5zcG9ydF91bml0dGVzdC5jYyIs
Ci0gICAgICAicnRwdHJhbnNwb3J0Y29udHJvbGxlcl91bml0dGVzdC5jYyIsCi0gICAgICAic3J0
cHRyYW5zcG9ydF91bml0dGVzdC5jYyIsCi0gICAgICAidGVzdHJ0cHBhcmFtZXRlcnMuY2MiLAot
ICAgICAgInRlc3RydHBwYXJhbWV0ZXJzLmgiLAotICAgIF0KLQotICAgIGRlcHMgPSBbCi0gICAg
ICAiOm9ydGMiLAotICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwK
LSAgICAgICIuLi9hcGk6b3J0Y19hcGkiLAotICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVp
bHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkiLAotICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6
YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLAotICAgICAgIi4uL21lZGlhOnJ0Y19tZWRp
YV90ZXN0c191dGlscyIsCi0gICAgICAiLi4vcDJwOnAycF90ZXN0X3V0aWxzIiwKLSAgICAgICIu
Li9wMnA6cnRjX3AycCIsCi0gICAgICAiLi4vcGM6cGNfdGVzdF91dGlscyIsCi0gICAgICAiLi4v
cGM6cGVlcmNvbm5lY3Rpb24iLAotICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKLSAgICAg
ICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgICAiLi4vcnRjX2Jhc2U6cnRj
X2Jhc2VfdGVzdHNfbWFpbiIsCi0gICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRp
bHMiLAotICAgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTphcmNoIiwKLSAgICBdCi0KLSAgICBpZiAo
IWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYgaXNfY2xhbmcpIHsKLSAgICAgICMgU3VwcHJlc3Mgd2Fy
bmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYz
KS4KLSAgICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jbGFuZzpm
aW5kX2JhZF9jb25zdHJ1Y3RzIiBdCi0gICAgfQotCi0gICAgaWYgKGlzX2FuZHJvaWQpIHsKLSAg
ICAgIGRlcHMgKz0gWyAiLy90ZXN0aW5nL2FuZHJvaWQvbmF0aXZlX3Rlc3Q6bmF0aXZlX3Rlc3Rf
c3VwcG9ydCIgXQotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ERVBTIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ERVBTCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiZWJmMDMwYjgyOTBlNjI5MGM5MzI2OTk5ZDFlNWVhZGMxN2ZlNmZkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvREVQUworKysgL2Rldi9udWxsCkBAIC0xLDE3ICsw
LDAgQEAKLWluY2x1ZGVfcnVsZXMgPSBbCi0gICIrYXBpIiwKLSAgIitjYWxsIiwKLSAgIitsb2dn
aW5nL3J0Y19ldmVudF9sb2ciLAotICAiK21lZGlhIiwKLSAgIittb2R1bGVzL2F1ZGlvX2NvZGlu
ZyIsCi0gICIrbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nIiwKLSAgIitwMnAiLAotICAiK3BjIiwK
LQotICAiK21vZHVsZXMvcnRwX3J0Y3AiLAotICAiK3N5c3RlbV93cmFwcGVycyIsCi0KLSAgIitt
b2R1bGVzL2F1ZGlvX2RldmljZSIsCi0gICIrbW9kdWxlcy92aWRlb19jb2RpbmciLAotICAiK21v
ZHVsZXMvdmlkZW9fcmVuZGVyIiwKLV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9PV05FUlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRjMDhmZmY1MGI4ZjJlYTczOTNkOWFiOWQzZTc1ZDdlNGI2Y2QzMDEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9PV05FUlMKKysrIC9kZXYvbnVsbApAQCAtMSw3
ICswLDAgQEAKLXB0aGF0Y2hlckB3ZWJydGMub3JnCi1zdGV2ZWFudG9uQHdlYnJ0Yy5vcmcKLQot
IyBUaGVzZSBhcmUgZm9yIHRoZSBjb21tb24gY2FzZSBvZiBhZGRpbmcgb3IgcmVuYW1pbmcgZmls
ZXMuIElmIHlvdSdyZSBkb2luZwotIyBzdHJ1Y3R1cmFsIGNoYW5nZXMsIHBsZWFzZSBnZXQgYSBy
ZXZpZXcgZnJvbSBhIHJldmlld2VyIGluIHRoaXMgZmlsZS4KLXBlci1maWxlICouZ249KgotcGVy
LWZpbGUgKi5nbmk9KgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y2ZhY3RvcnkuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNiNjNkMjYxNzRiYTY3ODY0MDk1NDRmYzE1NGUyYjEzNTVlZjJmNTkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeS5jYworKysgL2Rl
di9udWxsCkBAIC0xLDU2MyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAi
b3J0Yy9vcnRjZmFjdG9yeS5oIgotCi0jaW5jbHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6Om1v
dmUuCi0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5Lmgi
Ci0jaW5jbHVkZSAiYXBpL21lZGlhc3RyZWFtdHJhY2twcm94eS5oIgotI2luY2x1ZGUgImFwaS9w
cm94eS5oIgotI2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgotI2luY2x1ZGUgImFwaS92aWRlb19j
b2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJhcGkvdmlk
ZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiYXBp
L3ZpZGVvc291cmNlcHJveHkuaCIKLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRj
X2V2ZW50X2xvZy5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKLSNp
bmNsdWRlICJtZWRpYS9iYXNlL3J0cGRhdGFlbmdpbmUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCi0jaW5jbHVkZSAib3J0
Yy9vcnRjcnRwcmVjZWl2ZXJhZGFwdGVyLmgiCi0jaW5jbHVkZSAib3J0Yy9vcnRjcnRwc2VuZGVy
YWRhcHRlci5oIgotI2luY2x1ZGUgIm9ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5oIgotI2luY2x1
ZGUgIm9ydGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcmFkYXB0ZXIuaCIKLSNpbmNsdWRlICJwMnAv
YmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3RvcnkuaCIKLSNpbmNsdWRlICJwMnAvYmFzZS91ZHB0
cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJwYy9hdWRpb3RyYWNrLmgiCi0jaW5jbHVkZSAicGMvY2hh
bm5lbG1hbmFnZXIuaCIKLSNpbmNsdWRlICJwYy9sb2NhbGF1ZGlvc291cmNlLmgiCi0jaW5jbHVk
ZSAicGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJwYy92aWRlb3RyYWNr
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9iaW5kLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvaGVscGVycy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCi0KLW5hbWVzcGFjZSB7Ci0K
LWNvbnN0IGludCBrRGVmYXVsdFJ0Y3BDbmFtZUxlbmd0aCA9IDE2OwotCi0vLyBBc3NlcnRzIHRo
YXQgYWxsIG9mIHRoZSBidWlsdC1pbiBjYXBhYmlsaXRpZXMgY2FuIGJlIGNvbnZlcnRlZCB0bwot
Ly8gUnRwQ2FwYWJpbGl0aWVzLiBJZiB0aGV5IGNhbid0LCBzb21ldGhpbmcncyB3cm9uZyAoZm9y
IGV4YW1wbGUsIG1heWJlIGEgbmV3Ci0vLyBmZWVkYmFjayBtZWNoYW5pc20gaXMgc3VwcG9ydGVk
LCBidXQgYW4gZW51bSB2YWx1ZSB3YXNuJ3QgYWRkZWQgdG8KLS8vIHJ0cHBhcmFtZXRlcnMuaCku
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KLXdlYnJ0Yzo6UnRwQ2FwYWJpbGl0aWVzIFRvUnRwQ2Fw
YWJpbGl0aWVzV2l0aEFzc2VydHMoCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8Qz4mIGNyaWNrZXRf
Y29kZWNzLAotICAgIGNvbnN0IGNyaWNrZXQ6OlJ0cEhlYWRlckV4dGVuc2lvbnMmIGNyaWNrZXRf
ZXh0ZW5zaW9ucykgewotICB3ZWJydGM6OlJ0cENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMgPQot
ICAgICAgd2VicnRjOjpUb1J0cENhcGFiaWxpdGllcyhjcmlja2V0X2NvZGVjcywgY3JpY2tldF9l
eHRlbnNpb25zKTsKLSAgUlRDX0RDSEVDS19FUShjYXBhYmlsaXRpZXMuY29kZWNzLnNpemUoKSwg
Y3JpY2tldF9jb2RlY3Muc2l6ZSgpKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYXBhYmls
aXRpZXMuY29kZWNzLnNpemUoKTsgKytpKSB7Ci0gICAgUlRDX0RDSEVDS19FUShjYXBhYmlsaXRp
ZXMuY29kZWNzW2ldLnJ0Y3BfZmVlZGJhY2suc2l6ZSgpLAotICAgICAgICAgICAgICAgICAgY3Jp
Y2tldF9jb2RlY3NbaV0uZmVlZGJhY2tfcGFyYW1zLnBhcmFtcygpLnNpemUoKSk7Ci0gIH0KLSAg
UlRDX0RDSEVDS19FUShjYXBhYmlsaXRpZXMuaGVhZGVyX2V4dGVuc2lvbnMuc2l6ZSgpLAotICAg
ICAgICAgICAgICAgIGNyaWNrZXRfZXh0ZW5zaW9ucy5zaXplKCkpOwotICByZXR1cm4gY2FwYWJp
bGl0aWVzOwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8v
IE5vdGUgdGhhdCB0aGlzIHByb3h5IGNsYXNzIHVzZXMgdGhlIG5ldHdvcmsgdGhyZWFkIGFzIHRo
ZSAid29ya2VyIiB0aHJlYWQuCi1CRUdJTl9PV05FRF9QUk9YWV9NQVAoT3J0Y0ZhY3RvcnkpCi1Q
Uk9YWV9TSUdOQUxJTkdfVEhSRUFEX0RFU1RSVUNUT1IoKQotUFJPWFlfTUVUSE9EMChSVENFcnJv
ck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlPj4sCi0g
ICAgICAgICAgICAgIENyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIpCi1QUk9YWV9NRVRIT0Q0
KFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVyZmFjZT4+LAotICAg
ICAgICAgICAgICBDcmVhdGVSdHBUcmFuc3BvcnQsCi0gICAgICAgICAgICAgIGNvbnN0IFJ0cFRy
YW5zcG9ydFBhcmFtZXRlcnMmLAotICAgICAgICAgICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZh
Y2UqLAotICAgICAgICAgICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqLAotICAgICAgICAg
ICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlKikKLQotUFJPWFlfTUVUSE9ENChS
VENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4sCi0gICAg
ICAgICAgICAgIENyZWF0ZVNydHBUcmFuc3BvcnQsCi0gICAgICAgICAgICAgIGNvbnN0IFJ0cFRy
YW5zcG9ydFBhcmFtZXRlcnMmLAotICAgICAgICAgICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZh
Y2UqLAotICAgICAgICAgICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqLAotICAgICAgICAg
ICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlKikKLQotUFJPWFlfQ09OU1RNRVRI
T0QxKFJ0cENhcGFiaWxpdGllcywKLSAgICAgICAgICAgICAgICAgICBHZXRSdHBTZW5kZXJDYXBh
YmlsaXRpZXMsCi0gICAgICAgICAgICAgICAgICAgY3JpY2tldDo6TWVkaWFUeXBlKQotUFJPWFlf
TUVUSE9EMihSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwU2VuZGVySW50ZXJmYWNl
Pj4sCi0gICAgICAgICAgICAgIENyZWF0ZVJ0cFNlbmRlciwKLSAgICAgICAgICAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+LAotICAgICAgICAgICAgICBS
dHBUcmFuc3BvcnRJbnRlcmZhY2UqKQotUFJPWFlfTUVUSE9EMihSVENFcnJvck9yPHN0ZDo6dW5p
cXVlX3B0cjxPcnRjUnRwU2VuZGVySW50ZXJmYWNlPj4sCi0gICAgICAgICAgICAgIENyZWF0ZVJ0
cFNlbmRlciwKLSAgICAgICAgICAgICAgY3JpY2tldDo6TWVkaWFUeXBlLAotICAgICAgICAgICAg
ICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqKQotUFJPWFlfQ09OU1RNRVRIT0QxKFJ0cENhcGFiaWxp
dGllcywKLSAgICAgICAgICAgICAgICAgICBHZXRSdHBSZWNlaXZlckNhcGFiaWxpdGllcywKLSAg
ICAgICAgICAgICAgICAgICBjcmlja2V0OjpNZWRpYVR5cGUpCi1QUk9YWV9NRVRIT0QyKFJUQ0Vy
cm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckludGVyZmFjZT4+LAotICAgICAg
ICAgICAgICBDcmVhdGVSdHBSZWNlaXZlciwKLSAgICAgICAgICAgICAgY3JpY2tldDo6TWVkaWFU
eXBlLAotICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqKQotUFJPWFlfV09SS0VS
X01FVEhPRDMoUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8VWRwVHJhbnNwb3J0SW50ZXJmYWNl
Pj4sCi0gICAgICAgICAgICAgICAgICAgICBDcmVhdGVVZHBUcmFuc3BvcnQsCi0gICAgICAgICAg
ICAgICAgICAgICBpbnQsCi0gICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCwKLSAgICAgICAg
ICAgICAgICAgICAgIHVpbnQxNl90KQotUFJPWFlfTUVUSE9EMShydGM6OnNjb3BlZF9yZWZwdHI8
QXVkaW9Tb3VyY2VJbnRlcmZhY2U+LAotICAgICAgICAgICAgICBDcmVhdGVBdWRpb1NvdXJjZSwK
LSAgICAgICAgICAgICAgY29uc3QgY3JpY2tldDo6QXVkaW9PcHRpb25zJikKLVBST1hZX01FVEhP
RDIocnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvVHJhY2tJbnRlcmZhY2U+LAotICAgICAgICAgICAg
ICBDcmVhdGVWaWRlb1RyYWNrLAotICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYsCi0g
ICAgICAgICAgICAgIFZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2UqKQotUFJPWFlfTUVUSE9EMihy
dGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9UcmFja0ludGVyZmFjZT4sCi0gICAgICAgICAgICAgIENy
ZWF0ZUF1ZGlvVHJhY2ssCi0gICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiwKLSAgICAg
ICAgICAgICAgQXVkaW9Tb3VyY2VJbnRlcmZhY2UqKQotRU5EX1BST1hZX01BUCgpCi0KLS8vIHN0
YXRpYwotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+PiBP
cnRjRmFjdG9yeTo6Q3JlYXRlKAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAg
ICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBydGM6Ok5ldHdvcmtNYW5hZ2Vy
KiBuZXR3b3JrX21hbmFnZXIsCi0gICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRf
ZmFjdG9yeSwKLSAgICBBdWRpb0RldmljZU1vZHVsZSogYWRtLAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5naW5lLAotICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3Rvcnks
Ci0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29k
ZXJfZmFjdG9yeSkgewotICAvLyBIb3AgdG8gc2lnbmFsaW5nIHRocmVhZCBpZiBuZWVkZWQuCi0g
IGlmIChzaWduYWxpbmdfdGhyZWFkICYmICFzaWduYWxpbmdfdGhyZWFkLT5Jc0N1cnJlbnQoKSkg
ewotICAgIHJldHVybiBzaWduYWxpbmdfdGhyZWFkCi0gICAgICAgIC0+SW52b2tlPFJUQ0Vycm9y
T3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNGYWN0b3J5SW50ZXJmYWNlPj4+KAotICAgICAgICAgICAg
UlRDX0ZST01fSEVSRSwKLSAgICAgICAgICAgIHJ0Yzo6QmluZCgmT3J0Y0ZhY3Rvcnk6OkNyZWF0
ZV9zLCBuZXR3b3JrX3RocmVhZCwgc2lnbmFsaW5nX3RocmVhZCwKLSAgICAgICAgICAgICAgICAg
ICAgICBuZXR3b3JrX21hbmFnZXIsIHNvY2tldF9mYWN0b3J5LCBhZG0sCi0gICAgICAgICAgICAg
ICAgICAgICAgbWVkaWFfZW5naW5lLnJlbGVhc2UoKSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAot
ICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSkpOwotICB9Ci0gIHJl
dHVybiBDcmVhdGVfcyhuZXR3b3JrX3RocmVhZCwgc2lnbmFsaW5nX3RocmVhZCwgbmV0d29ya19t
YW5hZ2VyLAotICAgICAgICAgICAgICAgICAgc29ja2V0X2ZhY3RvcnksIGFkbSwgbWVkaWFfZW5n
aW5lLnJlbGVhc2UoKSwKLSAgICAgICAgICAgICAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwg
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5KTsKLX0KLQotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8
T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+PiBPcnRjRmFjdG9yeUludGVyZmFjZTo6Q3JlYXRlKAotICAg
IHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5n
X3RocmVhZCwKLSAgICBydGM6Ok5ldHdvcmtNYW5hZ2VyKiBuZXR3b3JrX21hbmFnZXIsCi0gICAg
cnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFjdG9yeSwKLSAgICBBdWRpb0Rldmlj
ZU1vZHVsZSogYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5
PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVj
b2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSkgewotICByZXR1cm4gT3J0Y0ZhY3Rv
cnk6OkNyZWF0ZShuZXR3b3JrX3RocmVhZCwgc2lnbmFsaW5nX3RocmVhZCwgbmV0d29ya19tYW5h
Z2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRfZmFjdG9yeSwgYWRtLCBu
dWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19lbmNvZGVyX2ZhY3Rv
cnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSk7Ci19Ci0KLU9ydGNGYWN0b3J5OjpPcnRjRmFjdG9y
eSgKLSAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHNp
Z25hbGluZ190aHJlYWQsCi0gICAgcnRjOjpOZXR3b3JrTWFuYWdlciogbmV0d29ya19tYW5hZ2Vy
LAotICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnksCi0gICAgQXVk
aW9EZXZpY2VNb2R1bGUqIGFkbSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVy
RmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxB
dWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnkpCi0gICAgOiBuZXR3b3Jr
X3RocmVhZF8obmV0d29ya190aHJlYWQpLAotICAgICAgc2lnbmFsaW5nX3RocmVhZF8oc2lnbmFs
aW5nX3RocmVhZCksCi0gICAgICBuZXR3b3JrX21hbmFnZXJfKG5ldHdvcmtfbWFuYWdlciksCi0g
ICAgICBzb2NrZXRfZmFjdG9yeV8oc29ja2V0X2ZhY3RvcnkpLAotICAgICAgYWRtXyhhZG0pLAot
ICAgICAgbnVsbF9ldmVudF9sb2dfKFJ0Y0V2ZW50TG9nOjpDcmVhdGVOdWxsKCkpLAotICAgICAg
YXVkaW9fZW5jb2Rlcl9mYWN0b3J5XyhhdWRpb19lbmNvZGVyX2ZhY3RvcnkpLAotICAgICAgYXVk
aW9fZGVjb2Rlcl9mYWN0b3J5XyhhdWRpb19kZWNvZGVyX2ZhY3RvcnkpIHsKLSAgaWYgKCFydGM6
OkNyZWF0ZVJhbmRvbVN0cmluZyhrRGVmYXVsdFJ0Y3BDbmFtZUxlbmd0aCwgJmRlZmF1bHRfY25h
bWVfKSkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gZ2VuZXJhdGUgQ05B
TUU/IjsKLSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICB9Ci0gIGlmICghbmV0d29ya190aHJlYWRf
KSB7Ci0gICAgb3duZWRfbmV0d29ya190aHJlYWRfID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZVdpdGhT
b2NrZXRTZXJ2ZXIoKTsKLSAgICBvd25lZF9uZXR3b3JrX3RocmVhZF8tPlN0YXJ0KCk7Ci0gICAg
bmV0d29ya190aHJlYWRfID0gb3duZWRfbmV0d29ya190aHJlYWRfLmdldCgpOwotICB9Ci0KLSAg
Ly8gVGhlIHdvcmtlciB0aHJlYWQgaXMgY3JlYXRlZCBpbnRlcm5hbGx5IGJlY2F1c2UgaXQncyBh
biBpbXBsZW1lbnRhdGlvbgotICAvLyBkZXRhaWwsIGFuZCBjb25zdW1lcnMgb2YgdGhlIEFQSSBk
b24ndCBuZWVkIHRvIHJlYWxseSBrbm93IGFib3V0IGl0LgotICB3b3JrZXJfdGhyZWFkXyA9IHJ0
Yzo6VGhyZWFkOjpDcmVhdGUoKTsKLSAgd29ya2VyX3RocmVhZF8tPlNldE5hbWUoIk9SVEMtd29y
a2VyIiwgdGhpcyk7Ci0gIHdvcmtlcl90aHJlYWRfLT5TdGFydCgpOwotCi0gIGlmIChzaWduYWxp
bmdfdGhyZWFkXykgewotICAgIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWRfKTsK
LSAgfSBlbHNlIHsKLSAgICBzaWduYWxpbmdfdGhyZWFkXyA9IHJ0Yzo6VGhyZWFkOjpDdXJyZW50
KCk7Ci0gICAgaWYgKCFzaWduYWxpbmdfdGhyZWFkXykgewotICAgICAgLy8gSWYgdGhpcyB0aHJl
YWQgaXNuJ3QgYWxyZWFkeSB3cmFwcGVkIGJ5IGFuIHJ0Yzo6VGhyZWFkLCBjcmVhdGUgYQotICAg
ICAgLy8gd3JhcHBlciBhbmQgb3duIGl0IGluIHRoaXMgY2xhc3MuCi0gICAgICBzaWduYWxpbmdf
dGhyZWFkXyA9IHJ0Yzo6VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+V3JhcEN1cnJlbnRUaHJl
YWQoKTsKLSAgICAgIHdyYXBzX3NpZ25hbGluZ190aHJlYWRfID0gdHJ1ZTsKLSAgICB9Ci0gIH0K
LQotICBpZiAoc2lnbmFsaW5nX3RocmVhZF8tPm5hbWUoKS5lbXB0eSgpKSB7Ci0gICAgc2lnbmFs
aW5nX3RocmVhZF8tPlNldE5hbWUoIk9SVEMtc2lnbmFsaW5nIiwgdGhpcyk7Ci0gIH0KLQotICBp
ZiAoIW5ldHdvcmtfbWFuYWdlcl8pIHsKLSAgICBvd25lZF9uZXR3b3JrX21hbmFnZXJfLnJlc2V0
KG5ldyBydGM6OkJhc2ljTmV0d29ya01hbmFnZXIoKSk7Ci0gICAgbmV0d29ya19tYW5hZ2VyXyA9
IG93bmVkX25ldHdvcmtfbWFuYWdlcl8uZ2V0KCk7Ci0gIH0KLSAgaWYgKCFzb2NrZXRfZmFjdG9y
eV8pIHsKLSAgICBvd25lZF9zb2NrZXRfZmFjdG9yeV8ucmVzZXQoCi0gICAgICAgIG5ldyBydGM6
OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeShuZXR3b3JrX3RocmVhZF8pKTsKLSAgICBzb2NrZXRf
ZmFjdG9yeV8gPSBvd25lZF9zb2NrZXRfZmFjdG9yeV8uZ2V0KCk7Ci0gIH0KLX0KLQotT3J0Y0Zh
Y3Rvcnk6On5PcnRjRmFjdG9yeSgpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3Ro
cmVhZF8pOwotICBpZiAod3JhcHNfc2lnbmFsaW5nX3RocmVhZF8pIHsKLSAgICBydGM6OlRocmVh
ZE1hbmFnZXI6Okluc3RhbmNlKCktPlVud3JhcEN1cnJlbnRUaHJlYWQoKTsKLSAgfQotfQotCi1S
VENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNl
Pj4KLU9ydGNGYWN0b3J5OjpDcmVhdGVSdHBUcmFuc3BvcnRDb250cm9sbGVyKCkgewotICBSVENf
RENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIHJldHVybiBSdHBUcmFuc3BvcnRD
b250cm9sbGVyQWRhcHRlcjo6Q3JlYXRlUHJveGllZCgKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhQ29u
ZmlnKCksIGNoYW5uZWxfbWFuYWdlcl8uZ2V0KCksIG51bGxfZXZlbnRfbG9nXy5nZXQoKSwKLSAg
ICAgIHNpZ25hbGluZ190aHJlYWRfLCB3b3JrZXJfdGhyZWFkXy5nZXQoKSwgbmV0d29ya190aHJl
YWRfKTsKLX0KLQotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJm
YWNlPj4KLU9ydGNGYWN0b3J5OjpDcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgY29uc3QgUnRwVHJh
bnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZh
Y2UqIHJ0cCwKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0Y3AsCi0gICAgUnRwVHJh
bnNwb3J0Q29udHJvbGxlckludGVyZmFjZSogdHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgUlRD
X0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBSdHBUcmFuc3BvcnRQYXJhbWV0
ZXJzIGNvcGllZF9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKLSAgaWYgKGNvcGllZF9wYXJhbWV0
ZXJzLnJ0Y3AuY25hbWUuZW1wdHkoKSkgewotICAgIGNvcGllZF9wYXJhbWV0ZXJzLnJ0Y3AuY25h
bWUgPSBkZWZhdWx0X2NuYW1lXzsKLSAgfQotICBpZiAodHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsK
LSAgICByZXR1cm4gdHJhbnNwb3J0X2NvbnRyb2xsZXItPkdldEludGVybmFsKCktPkNyZWF0ZVBy
b3hpZWRSdHBUcmFuc3BvcnQoCi0gICAgICAgIGNvcGllZF9wYXJhbWV0ZXJzLCBydHAsIHJ0Y3Ap
OwotICB9IGVsc2UgewotICAgIC8vIElmIHx0cmFuc3BvcnRfY29udHJvbGxlcnwgaXMgbnVsbCwg
Y3JlYXRlIG9uZSBhdXRvbWF0aWNhbGx5LCB3aGljaCB0aGUKLSAgICAvLyByZXR1cm5lZCBSdHBU
cmFuc3BvcnQgd2lsbCBvd24uCi0gICAgYXV0byBjb250cm9sbGVyX3Jlc3VsdCA9IENyZWF0ZVJ0
cFRyYW5zcG9ydENvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWNvbnRyb2xsZXJfcmVzdWx0Lm9rKCkp
IHsKLSAgICAgIHJldHVybiBjb250cm9sbGVyX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgICB9Ci0g
ICAgYXV0byBjb250cm9sbGVyID0gY29udHJvbGxlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gICAg
YXV0byB0cmFuc3BvcnRfcmVzdWx0ID0KLSAgICAgICAgY29udHJvbGxlci0+R2V0SW50ZXJuYWwo
KS0+Q3JlYXRlUHJveGllZFJ0cFRyYW5zcG9ydChjb3BpZWRfcGFyYW1ldGVycywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHAs
IHJ0Y3ApOwotICAgIC8vIElmIFJ0cFRyYW5zcG9ydCB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQs
IHRyYW5zZmVyIG93bmVyc2hpcCBvZgotICAgIC8vIHxydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJ8
LiBPdGhlcndpc2UgaXQgd2lsbCBnbyBvdXQgb2Ygc2NvcGUgYW5kIGJlCi0gICAgLy8gZGVsZXRl
ZCBhdXRvbWF0aWNhbGx5LgotICAgIGlmICh0cmFuc3BvcnRfcmVzdWx0Lm9rKCkpIHsKLSAgICAg
IHRyYW5zcG9ydF9yZXN1bHQudmFsdWUoKQotICAgICAgICAgIC0+R2V0SW50ZXJuYWwoKQotICAg
ICAgICAgIC0+VGFrZU93bmVyc2hpcE9mUnRwVHJhbnNwb3J0Q29udHJvbGxlcihzdGQ6Om1vdmUo
Y29udHJvbGxlcikpOwotICAgIH0KLSAgICByZXR1cm4gdHJhbnNwb3J0X3Jlc3VsdDsKLSAgfQot
fQotCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4K
LU9ydGNGYWN0b3J5OjpDcmVhdGVTcnRwVHJhbnNwb3J0KAotICAgIGNvbnN0IFJ0cFRyYW5zcG9y
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBy
dHAsCi0gICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydGNwLAotICAgIFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJJbnRlcmZhY2UqIHRyYW5zcG9ydF9jb250cm9sbGVyKSB7Ci0gIFJUQ19EQ0hF
Q0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBj
b3BpZWRfcGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7Ci0gIGlmIChjb3BpZWRfcGFyYW1ldGVycy5y
dGNwLmNuYW1lLmVtcHR5KCkpIHsKLSAgICBjb3BpZWRfcGFyYW1ldGVycy5ydGNwLmNuYW1lID0g
ZGVmYXVsdF9jbmFtZV87Ci0gIH0KLSAgaWYgKHRyYW5zcG9ydF9jb250cm9sbGVyKSB7Ci0gICAg
cmV0dXJuIHRyYW5zcG9ydF9jb250cm9sbGVyLT5HZXRJbnRlcm5hbCgpLT5DcmVhdGVQcm94aWVk
U3J0cFRyYW5zcG9ydCgKLSAgICAgICAgY29waWVkX3BhcmFtZXRlcnMsIHJ0cCwgcnRjcCk7Ci0g
IH0gZWxzZSB7Ci0gICAgLy8gSWYgfHRyYW5zcG9ydF9jb250cm9sbGVyfCBpcyBudWxsLCBjcmVh
dGUgb25lIGF1dG9tYXRpY2FsbHksIHdoaWNoIHRoZQotICAgIC8vIHJldHVybmVkIFNydHBUcmFu
c3BvcnQgd2lsbCBvd24uCi0gICAgYXV0byBjb250cm9sbGVyX3Jlc3VsdCA9IENyZWF0ZVJ0cFRy
YW5zcG9ydENvbnRyb2xsZXIoKTsKLSAgICBpZiAoIWNvbnRyb2xsZXJfcmVzdWx0Lm9rKCkpIHsK
LSAgICAgIHJldHVybiBjb250cm9sbGVyX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgICB9Ci0gICAg
YXV0byBjb250cm9sbGVyID0gY29udHJvbGxlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gICAgYXV0
byB0cmFuc3BvcnRfcmVzdWx0ID0KLSAgICAgICAgY29udHJvbGxlci0+R2V0SW50ZXJuYWwoKS0+
Q3JlYXRlUHJveGllZFNydHBUcmFuc3BvcnQoY29waWVkX3BhcmFtZXRlcnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cCwg
cnRjcCk7Ci0gICAgLy8gSWYgU3J0cFRyYW5zcG9ydCB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQs
IHRyYW5zZmVyIG93bmVyc2hpcCBvZgotICAgIC8vIHxydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJ8
LiBPdGhlcndpc2UgaXQgd2lsbCBnbyBvdXQgb2Ygc2NvcGUgYW5kIGJlCi0gICAgLy8gZGVsZXRl
ZCBhdXRvbWF0aWNhbGx5LgotICAgIGlmICh0cmFuc3BvcnRfcmVzdWx0Lm9rKCkpIHsKLSAgICAg
IHRyYW5zcG9ydF9yZXN1bHQudmFsdWUoKQotICAgICAgICAgIC0+R2V0SW50ZXJuYWwoKQotICAg
ICAgICAgIC0+VGFrZU93bmVyc2hpcE9mUnRwVHJhbnNwb3J0Q29udHJvbGxlcihzdGQ6Om1vdmUo
Y29udHJvbGxlcikpOwotICAgIH0KLSAgICByZXR1cm4gdHJhbnNwb3J0X3Jlc3VsdDsKLSAgfQot
fQotCi1SdHBDYXBhYmlsaXRpZXMgT3J0Y0ZhY3Rvcnk6OkdldFJ0cFNlbmRlckNhcGFiaWxpdGll
cygKLSAgICBjcmlja2V0OjpNZWRpYVR5cGUga2luZCkgY29uc3QgewotICBSVENfRENIRUNLX1JV
Tl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgY3Jp
Y2tldDo6TUVESUFfVFlQRV9BVURJTzogewotICAgICAgY3JpY2tldDo6QXVkaW9Db2RlY3MgY3Jp
Y2tldF9jb2RlY3M7Ci0gICAgICBjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb25zIGNyaWNrZXRf
ZXh0ZW5zaW9uczsKLSAgICAgIGNoYW5uZWxfbWFuYWdlcl8tPkdldFN1cHBvcnRlZEF1ZGlvU2Vu
ZENvZGVjcygmY3JpY2tldF9jb2RlY3MpOwotICAgICAgY2hhbm5lbF9tYW5hZ2VyXy0+R2V0U3Vw
cG9ydGVkQXVkaW9SdHBIZWFkZXJFeHRlbnNpb25zKAotICAgICAgICAgICZjcmlja2V0X2V4dGVu
c2lvbnMpOwotICAgICAgcmV0dXJuIFRvUnRwQ2FwYWJpbGl0aWVzV2l0aEFzc2VydHMoY3JpY2tl
dF9jb2RlY3MsIGNyaWNrZXRfZXh0ZW5zaW9ucyk7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tldDo6
TUVESUFfVFlQRV9WSURFTzogewotICAgICAgY3JpY2tldDo6VmlkZW9Db2RlY3MgY3JpY2tldF9j
b2RlY3M7Ci0gICAgICBjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb25zIGNyaWNrZXRfZXh0ZW5z
aW9uczsKLSAgICAgIGNoYW5uZWxfbWFuYWdlcl8tPkdldFN1cHBvcnRlZFZpZGVvQ29kZWNzKCZj
cmlja2V0X2NvZGVjcyk7Ci0gICAgICBjaGFubmVsX21hbmFnZXJfLT5HZXRTdXBwb3J0ZWRWaWRl
b1J0cEhlYWRlckV4dGVuc2lvbnMoCi0gICAgICAgICAgJmNyaWNrZXRfZXh0ZW5zaW9ucyk7Ci0g
ICAgICByZXR1cm4gVG9SdHBDYXBhYmlsaXRpZXNXaXRoQXNzZXJ0cyhjcmlja2V0X2NvZGVjcywg
Y3JpY2tldF9leHRlbnNpb25zKTsKLSAgICB9Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBF
X0RBVEE6Ci0gICAgICByZXR1cm4gUnRwQ2FwYWJpbGl0aWVzKCk7Ci0gIH0KLSAgLy8gTm90IHJl
YWNoZWQ7IGF2b2lkcyBjb21waWxlIHdhcm5pbmcuCi0gIEZBVEFMKCk7Ci19Ci0KLVJUQ0Vycm9y
T3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PgotT3J0Y0ZhY3Rvcnk6
OkNyZWF0ZVJ0cFNlbmRlcigKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFj
a0ludGVyZmFjZT4gdHJhY2ssCi0gICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQp
IHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBpZiAoIXRyYWNr
KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFN
RVRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3MgbnVsbCB0cmFjayBp
bnRvIENyZWF0ZVJ0cFNlbmRlci4iKTsKLSAgfQotICBhdXRvIHJlc3VsdCA9Ci0gICAgICBDcmVh
dGVSdHBTZW5kZXIoY3JpY2tldDo6TWVkaWFUeXBlRnJvbVN0cmluZyh0cmFjay0+a2luZCgpKSwg
dHJhbnNwb3J0KTsKLSAgaWYgKCFyZXN1bHQub2soKSkgewotICAgIHJldHVybiByZXN1bHQ7Ci0g
IH0KLSAgYXV0byBlcnIgPSByZXN1bHQudmFsdWUoKS0+U2V0VHJhY2sodHJhY2spOwotICBpZiAo
IWVyci5vaygpKSB7Ci0gICAgcmV0dXJuIHN0ZDo6bW92ZShlcnIpOwotICB9Ci0gIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLVJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRl
cmZhY2U+PgotT3J0Y0ZhY3Rvcnk6OkNyZWF0ZVJ0cFNlbmRlcihjcmlja2V0OjpNZWRpYVR5cGUg
a2luZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNl
KiB0cmFuc3BvcnQpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwot
ICBpZiAoa2luZCA9PSBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEEpIHsKLSAgICBMT0dfQU5EX1JF
VFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICJDYW5ub3QgY3JlYXRlIGRhdGEgUnRwU2VuZGVyLiIpOwotICB9Ci0gIGlm
ICghdHJhbnNwb3J0KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJ
TlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3Mg
bnVsbCB0cmFuc3BvcnQgaW50byBDcmVhdGVSdHBTZW5kZXIuIik7Ci0gIH0KLSAgcmV0dXJuIHRy
YW5zcG9ydC0+R2V0SW50ZXJuYWwoKQotICAgICAgLT5ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIo
KQotICAgICAgLT5DcmVhdGVQcm94aWVkUnRwU2VuZGVyKGtpbmQsIHRyYW5zcG9ydCk7Ci19Ci0K
LVJ0cENhcGFiaWxpdGllcyBPcnRjRmFjdG9yeTo6R2V0UnRwUmVjZWl2ZXJDYXBhYmlsaXRpZXMo
Ci0gICAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQpIGNvbnN0IHsKLSAgUlRDX0RDSEVDS19SVU5f
T04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIGNyaWNr
ZXQ6Ok1FRElBX1RZUEVfQVVESU86IHsKLSAgICAgIGNyaWNrZXQ6OkF1ZGlvQ29kZWNzIGNyaWNr
ZXRfY29kZWNzOwotICAgICAgY3JpY2tldDo6UnRwSGVhZGVyRXh0ZW5zaW9ucyBjcmlja2V0X2V4
dGVuc2lvbnM7Ci0gICAgICBjaGFubmVsX21hbmFnZXJfLT5HZXRTdXBwb3J0ZWRBdWRpb1JlY2Vp
dmVDb2RlY3MoJmNyaWNrZXRfY29kZWNzKTsKLSAgICAgIGNoYW5uZWxfbWFuYWdlcl8tPkdldFN1
cHBvcnRlZEF1ZGlvUnRwSGVhZGVyRXh0ZW5zaW9ucygKLSAgICAgICAgICAmY3JpY2tldF9leHRl
bnNpb25zKTsKLSAgICAgIHJldHVybiBUb1J0cENhcGFiaWxpdGllc1dpdGhBc3NlcnRzKGNyaWNr
ZXRfY29kZWNzLCBjcmlja2V0X2V4dGVuc2lvbnMpOwotICAgIH0KLSAgICBjYXNlIGNyaWNrZXQ6
Ok1FRElBX1RZUEVfVklERU86IHsKLSAgICAgIGNyaWNrZXQ6OlZpZGVvQ29kZWNzIGNyaWNrZXRf
Y29kZWNzOwotICAgICAgY3JpY2tldDo6UnRwSGVhZGVyRXh0ZW5zaW9ucyBjcmlja2V0X2V4dGVu
c2lvbnM7Ci0gICAgICBjaGFubmVsX21hbmFnZXJfLT5HZXRTdXBwb3J0ZWRWaWRlb0NvZGVjcygm
Y3JpY2tldF9jb2RlY3MpOwotICAgICAgY2hhbm5lbF9tYW5hZ2VyXy0+R2V0U3VwcG9ydGVkVmlk
ZW9SdHBIZWFkZXJFeHRlbnNpb25zKAotICAgICAgICAgICZjcmlja2V0X2V4dGVuc2lvbnMpOwot
ICAgICAgcmV0dXJuIFRvUnRwQ2FwYWJpbGl0aWVzV2l0aEFzc2VydHMoY3JpY2tldF9jb2RlY3Ms
IGNyaWNrZXRfZXh0ZW5zaW9ucyk7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQ
RV9EQVRBOgotICAgICAgcmV0dXJuIFJ0cENhcGFiaWxpdGllcygpOwotICB9Ci0gIC8vIE5vdCBy
ZWFjaGVkOyBhdm9pZHMgY29tcGlsZSB3YXJuaW5nLgotICBGQVRBTCgpOwotfQotCi1SVENFcnJv
ck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwUmVjZWl2ZXJJbnRlcmZhY2U+PgotT3J0Y0ZhY3Rv
cnk6OkNyZWF0ZVJ0cFJlY2VpdmVyKGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0KSB7
Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgaWYgKGtpbmQgPT0g
Y3JpY2tldDo6TUVESUFfVFlQRV9EQVRBKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRD
RXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAi
Q2Fubm90IGNyZWF0ZSBkYXRhIFJ0cFJlY2VpdmVyLiIpOwotICB9Ci0gIGlmICghdHJhbnNwb3J0
KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFN
RVRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3MgbnVsbCB0cmFuc3Bv
cnQgaW50byBDcmVhdGVSdHBSZWNlaXZlci4iKTsKLSAgfQotICByZXR1cm4gdHJhbnNwb3J0LT5H
ZXRJbnRlcm5hbCgpCi0gICAgICAtPnJ0cF90cmFuc3BvcnRfY29udHJvbGxlcigpCi0gICAgICAt
PkNyZWF0ZVByb3hpZWRSdHBSZWNlaXZlcihraW5kLCB0cmFuc3BvcnQpOwotfQotCi0vLyBVZHBU
cmFuc3BvcnQgZXhwZWN0cyBhbGwgbWV0aG9kcyB0byBiZSBjYWxsZWQgb24gb25lIHRocmVhZCwg
d2hpY2ggbmVlZHMgdG8KLS8vIGJlIHRoZSBuZXR3b3JrIHRocmVhZCwgc2luY2UgdGhhdCdzIHdo
ZXJlIGl0cyBzb2NrZXQgY2FuIHNhZmVseSBiZSB1c2VkLiBTbwotLy8gcmV0dXJuIGEgcHJveHkg
dG8gdGhlIGNyZWF0ZWQgVWRwVHJhbnNwb3J0LgotQkVHSU5fT1dORURfUFJPWFlfTUFQKFVkcFRy
YW5zcG9ydCkKLVBST1hZX1dPUktFUl9USFJFQURfREVTVFJVQ1RPUigpCi1QUk9YWV9XT1JLRVJf
Q09OU1RNRVRIT0QwKHJ0Yzo6U29ja2V0QWRkcmVzcywgR2V0TG9jYWxBZGRyZXNzKQotUFJPWFlf
V09SS0VSX01FVEhPRDEoYm9vbCwgU2V0UmVtb3RlQWRkcmVzcywgY29uc3QgcnRjOjpTb2NrZXRB
ZGRyZXNzJikKLVBST1hZX1dPUktFUl9DT05TVE1FVEhPRDAocnRjOjpTb2NrZXRBZGRyZXNzLCBH
ZXRSZW1vdGVBZGRyZXNzKQotcHJvdGVjdGVkOgotcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5h
bCogR2V0SW50ZXJuYWwoKSBvdmVycmlkZSB7Ci0gIHJldHVybiBpbnRlcm5hbCgpOwotfQotRU5E
X1BST1hZX01BUCgpCi0KLVJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFVkcFRyYW5zcG9ydElu
dGVyZmFjZT4+Ci1PcnRjRmFjdG9yeTo6Q3JlYXRlVWRwVHJhbnNwb3J0KGludCBmYW1pbHksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1pbl9wb3J0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtYXhfcG9ydCkgewotICBSVENfRENI
RUNLX1JVTl9PTihuZXR3b3JrX3RocmVhZF8pOwotICBpZiAoZmFtaWx5ICE9IEFGX0lORVQgJiYg
ZmFtaWx5ICE9IEFGX0lORVQ2KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JU
eXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiQWRkcmVz
cyBmYW1pbHkgbXVzdCBiZSBBRl9JTkVUIG9yIEFGX0lORVQ2LiIpOwotICB9Ci0gIGlmIChtaW5f
cG9ydCA+IG1heF9wb3J0KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBl
OjpJTlZBTElEX1JBTkdFLAotICAgICAgICAgICAgICAgICAgICAgICAgICJQb3J0IHJhbmdlIGlu
dmFsaWQ7IG1pbmltdW0gcG9ydCBtdXN0IGJlIGxlc3MgdGhhbiAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIm9yIGVxdWFsIHRvIG1heCBwb3J0LiIpOwotICB9Ci0gIHN0ZDo6dW5pcXVlX3B0
cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQoCi0gICAgICBzb2NrZXRfZmFjdG9yeV8t
PkNyZWF0ZVVkcFNvY2tldCgKLSAgICAgICAgICBydGM6OlNvY2tldEFkZHJlc3MocnRjOjpHZXRB
bnlJUChmYW1pbHkpLCAwKSwgbWluX3BvcnQsIG1heF9wb3J0KSk7Ci0gIGlmICghc29ja2V0KSB7
Ci0gICAgLy8gT25seSBsb2cgYXQgd2FybmluZyBsZXZlbCwgYmVjYXVzZSB0aGlzIG1ldGhvZCBt
YXkgYmUgY2FsbGVkIHdpdGgKLSAgICAvLyBzcGVjaWZpYyBwb3J0IHJhbmdlcyB0byBkZXRlcm1p
bmUgaWYgYSBwb3J0IGlzIGF2YWlsYWJsZSwgZXhwZWN0aW5nIHRoZQotICAgIC8vIHBvc3NpYmls
aXR5IG9mIGFuIGVycm9yLgotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SX0VYKFJUQ0Vycm9yVHlw
ZTo6UkVTT1VSQ0VfRVhIQVVTVEVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMb2Nh
bCBzb2NrZXQgYWxsb2NhdGlvbiBmYWlsdXJlLiIsIExTX1dBUk5JTkcpOwotICB9Ci0gIFJUQ19M
T0coTFNfSU5GTykgPDwgIkNyZWF0ZWQgVURQIHNvY2tldCB3aXRoIGFkZHJlc3MgIgotICAgICAg
ICAgICAgICAgICAgIDw8IHNvY2tldC0+R2V0TG9jYWxBZGRyZXNzKCkuVG9TZW5zaXRpdmVTdHJp
bmcoKSA8PCAiLiI7Ci0gIC8vIE1ha2UgYSB1bmlxdWUgZGVidWcgbmFtZSAoZm9yIGxvZ2dpbmcv
ZGlhZ25vc3RpY3Mgb25seSkuCi0gIHJ0Yzo6U3RyaW5nQnVpbGRlciBvc3M7Ci0gIHN0YXRpYyBp
bnQgdWRwX2lkID0gMDsKLSAgb3NzIDw8ICJ1ZHAiIDw8IHVkcF9pZCsrOwotICByZXR1cm4gVWRw
VHJhbnNwb3J0UHJveHlXaXRoSW50ZXJuYWw8Y3JpY2tldDo6VWRwVHJhbnNwb3J0Pjo6Q3JlYXRl
KAotICAgICAgc2lnbmFsaW5nX3RocmVhZF8sIG5ldHdvcmtfdGhyZWFkXywKLSAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxjcmlja2V0OjpVZHBUcmFuc3BvcnQ+KAotICAgICAgICAgIG5ldyBjcmlja2V0
OjpVZHBUcmFuc3BvcnQob3NzLnN0cigpLCBzdGQ6Om1vdmUoc29ja2V0KSkpKTsKLX0KLQotcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvU291cmNlSW50ZXJmYWNlPiBPcnRjRmFjdG9yeTo6Q3JlYXRl
QXVkaW9Tb3VyY2UoCi0gICAgY29uc3QgY3JpY2tldDo6QXVkaW9PcHRpb25zJiBvcHRpb25zKSB7
Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgcmV0dXJuIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxMb2NhbEF1ZGlvU291cmNlPigKLSAgICAgIExvY2FsQXVkaW9Tb3VyY2U6
OkNyZWF0ZSgmb3B0aW9ucykpOwotfQotCi1ydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9UcmFja0lu
dGVyZmFjZT4gT3J0Y0ZhY3Rvcnk6OkNyZWF0ZVZpZGVvVHJhY2soCi0gICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGlkLAotICAgIFZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2UqIHNvdXJjZSkgewotICBS
VENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxWaWRlb1RyYWNrSW50ZXJmYWNlPiB0cmFjaygKLSAgICAgIFZpZGVvVHJhY2s6OkNyZWF0ZShp
ZCwgc291cmNlLCB3b3JrZXJfdGhyZWFkXy5nZXQoKSkpOwotICByZXR1cm4gVmlkZW9UcmFja1By
b3h5OjpDcmVhdGUoc2lnbmFsaW5nX3RocmVhZF8sIHdvcmtlcl90aHJlYWRfLmdldCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2spOwotfQotCi1ydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9UcmFja0ludGVyZmFjZT4gT3J0Y0ZhY3Rvcnk6OkNyZWF0ZUF1ZGlvVHJhY2so
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlkLAotICAgIEF1ZGlvU291cmNlSW50ZXJmYWNlKiBz
b3VyY2UpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9UcmFja0ludGVyZmFjZT4gdHJhY2soQXVkaW9UcmFjazo6Q3Jl
YXRlKGlkLCBzb3VyY2UpKTsKLSAgcmV0dXJuIEF1ZGlvVHJhY2tQcm94eTo6Q3JlYXRlKHNpZ25h
bGluZ190aHJlYWRfLCB0cmFjayk7Ci19Ci0KLS8vIHN0YXRpYwotUlRDRXJyb3JPcjxzdGQ6OnVu
aXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+PiBPcnRjRmFjdG9yeTo6Q3JlYXRlX3MoCi0g
ICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxp
bmdfdGhyZWFkLAotICAgIHJ0Yzo6TmV0d29ya01hbmFnZXIqIG5ldHdvcmtfbWFuYWdlciwKLSAg
ICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAotICAgIEF1ZGlvRGV2
aWNlTW9kdWxlKiBhZG0sCi0gICAgY3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2UqIG1lZGlh
X2VuZ2luZSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVk
aW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJG
YWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnkpIHsKLSAgLy8gQWRkIHRoZSB1bmlxdWVfcHRy
IHdyYXBwZXIgYmFjay4KLSAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50
ZXJmYWNlPiBvd25lZF9tZWRpYV9lbmdpbmUoCi0gICAgICBtZWRpYV9lbmdpbmUpOwotICBzdGQ6
OnVuaXF1ZV9wdHI8T3J0Y0ZhY3Rvcnk+IG5ld19mYWN0b3J5KG5ldyBPcnRjRmFjdG9yeSgKLSAg
ICAgIG5ldHdvcmtfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBuZXR3b3JrX21hbmFnZXIsIHNv
Y2tldF9mYWN0b3J5LCBhZG0sCi0gICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2Rl
Y29kZXJfZmFjdG9yeSkpOwotICBSVENFcnJvciBlcnIgPSBuZXdfZmFjdG9yeS0+SW5pdGlhbGl6
ZShzdGQ6Om1vdmUob3duZWRfbWVkaWFfZW5naW5lKSk7Ci0gIGlmICghZXJyLm9rKCkpIHsKLSAg
ICByZXR1cm4gc3RkOjptb3ZlKGVycik7Ci0gIH0KLSAgLy8gUmV0dXJuIGEgcHJveHkgc28gdGhh
dCBhbnkgY2FsbHMgb24gdGhlIHJldHVybmVkIG9iamVjdCAoaW5jbHVkaW5nCi0gIC8vIGRlc3Ry
dWN0b3IpIGhhcHBlbiBvbiB0aGUgc2lnbmFsaW5nIHRocmVhZC4KLSAgcnRjOjpUaHJlYWQqIHNp
Z25hbGluZyA9IG5ld19mYWN0b3J5LT5zaWduYWxpbmdfdGhyZWFkKCk7Ci0gIHJ0Yzo6VGhyZWFk
KiBuZXR3b3JrID0gbmV3X2ZhY3RvcnktPm5ldHdvcmtfdGhyZWFkKCk7Ci0gIHJldHVybiBPcnRj
RmFjdG9yeVByb3h5OjpDcmVhdGUoc2lnbmFsaW5nLCBuZXR3b3JrLCBzdGQ6Om1vdmUobmV3X2Zh
Y3RvcnkpKTsKLX0KLQotUlRDRXJyb3IgT3J0Y0ZhY3Rvcnk6OkluaXRpYWxpemUoCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUp
IHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICAvLyBUT0RPKGRl
YWRiZWVmKTogR2V0IHJpZCBvZiByZXF1aXJlbWVudCB0byBob3AgdG8gd29ya2VyIHRocmVhZCBo
ZXJlLgotICBpZiAoIW1lZGlhX2VuZ2luZSkgewotICAgIG1lZGlhX2VuZ2luZSA9Ci0gICAgICAg
IHdvcmtlcl90aHJlYWRfLT5JbnZva2U8c3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5n
aW5lSW50ZXJmYWNlPj4oCi0gICAgICAgICAgICBSVENfRlJPTV9IRVJFLCBydGM6OkJpbmQoJk9y
dGNGYWN0b3J5OjpDcmVhdGVNZWRpYUVuZ2luZV93LCB0aGlzKSk7Ci0gIH0KLQotICBjaGFubmVs
X21hbmFnZXJfLnJlc2V0KG5ldyBjcmlja2V0OjpDaGFubmVsTWFuYWdlcigKLSAgICAgIHN0ZDo6
bW92ZShtZWRpYV9lbmdpbmUpLCBhYnNsOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpSdHBEYXRhRW5n
aW5lPigpLAotICAgICAgd29ya2VyX3RocmVhZF8uZ2V0KCksIG5ldHdvcmtfdGhyZWFkXykpOwot
ICBjaGFubmVsX21hbmFnZXJfLT5TZXRWaWRlb1J0eEVuYWJsZWQodHJ1ZSk7Ci0gIGlmICghY2hh
bm5lbF9tYW5hZ2VyXy0+SW5pdCgpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJy
b3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVk
IHRvIGluaXRpYWxpemUgQ2hhbm5lbE1hbmFnZXIuIik7Ci0gIH0KLSAgcmV0dXJuIFJUQ0Vycm9y
OjpPSygpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZh
Y2U+Ci1PcnRjRmFjdG9yeTo6Q3JlYXRlTWVkaWFFbmdpbmVfdygpIHsKLSAgUlRDX0RDSEVDS19S
VU5fT04od29ya2VyX3RocmVhZF8uZ2V0KCkpOwotICAvLyBUaGUgbnVsbCBhcmd1bWVudHMgYXJl
IG9wdGlvbmFsIGZhY3RvcmllcyB0aGF0IGNvdWxkIGJlIHBhc3NlZCBpbnRvIHRoZQotICAvLyBP
cnRjRmFjdG9yeSwgYnV0IGFyZW4ndCB5ZXQuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCB8YWRtX3wg
bWF5IGJlIG51bGwsIGluIHdoaWNoIGNhc2UgdGhlIHBsYXRmb3JtLXNwZWNpZmljIGRlZmF1bHQK
LSAgLy8gQXVkaW9EZXZpY2VNb2R1bGUgd2lsbCBiZSB1c2VkLgotICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPigKLSAgICAgIGNyaWNrZXQ6Oldl
YlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAotICAgICAgICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlPihhZG1fKSwKLSAgICAgICAgICBhdWRpb19l
bmNvZGVyX2ZhY3RvcnlfLCBhdWRpb19kZWNvZGVyX2ZhY3RvcnlfLAotICAgICAgICAgIHdlYnJ0
Yzo6Q3JlYXRlQnVpbHRpblZpZGVvRW5jb2RlckZhY3RvcnkoKSwKLSAgICAgICAgICB3ZWJydGM6
OkNyZWF0ZUJ1aWx0aW5WaWRlb0RlY29kZXJGYWN0b3J5KCksIG51bGxwdHIsCi0gICAgICAgICAg
d2VicnRjOjpBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpKTsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkNzJmNjEyMWRiYmQ5MmEzOGU2OWFmNWNhNzAzYzgxYTQzNTgyMzJlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y2ZhY3RvcnkuaAorKysgL2Rl
di9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE9S
VENfT1JUQ0ZBQ1RPUllfSF8KLSNkZWZpbmUgT1JUQ19PUlRDRkFDVE9SWV9IXwotCi0jaW5jbHVk
ZSA8bWVtb3J5PgotI2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgImFwaS9vcnRjL29ydGNm
YWN0b3J5aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5oIgot
I2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZS5oIgotI2luY2x1ZGUgInBj
L2NoYW5uZWxtYW5hZ2VyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCi0KLW5hbWVzcGFjZSB3ZWJy
dGMgewotCi0vLyBJbXBsZW1lbnRhdGlvbiBvZiBPcnRjRmFjdG9yeUludGVyZmFjZS4KLS8vCi0v
LyBTZWUgb3J0Y2ZhY3RvcnlpbnRlcmZhY2UuaCBmb3IgZG9jdW1lbnRhdGlvbi4KLWNsYXNzIE9y
dGNGYWN0b3J5IDogcHVibGljIE9ydGNGYWN0b3J5SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIH5P
cnRjRmFjdG9yeSgpIG92ZXJyaWRlOwotCi0gIC8vIEludGVybmFsLW9ubHkgQ3JlYXRlIG1ldGhv
ZCB0aGF0IGFsbG93cyBwYXNzaW5nIGluIGEgZmFrZSBtZWRpYSBlbmdpbmUsCi0gIC8vIGZvciB0
ZXN0aW5nLgotICBzdGF0aWMgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJ
bnRlcmZhY2U+PiBDcmVhdGUoCi0gICAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0g
ICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICAgIHJ0Yzo6TmV0d29ya01h
bmFnZXIqIG5ldHdvcmtfbWFuYWdlciwKLSAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSog
c29ja2V0X2ZhY3RvcnksCi0gICAgICBBdWRpb0RldmljZU1vZHVsZSogYWRtLAotICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUs
Ci0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5j
b2Rlcl9mYWN0b3J5LAotICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rv
cnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSk7Ci0KLSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9w
dHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4+Ci0gIENyZWF0ZVJ0cFRyYW5zcG9y
dENvbnRyb2xsZXIoKSBvdmVycmlkZTsKLQotICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxS
dHBUcmFuc3BvcnRJbnRlcmZhY2U+PiBDcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBjb25zdCBS
dHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgICAgUGFja2V0VHJhbnNwb3J0
SW50ZXJmYWNlKiBydHAsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0Y3AsCi0g
ICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlKiB0cmFuc3BvcnRfY29udHJvbGxl
cikgb3ZlcnJpZGU7Ci0KLSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8U3J0cFRyYW5zcG9y
dEludGVyZmFjZT4+IENyZWF0ZVNydHBUcmFuc3BvcnQoCi0gICAgICBjb25zdCBSdHBUcmFuc3Bv
cnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNl
KiBydHAsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0Y3AsCi0gICAgICBSdHBU
cmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlKiB0cmFuc3BvcnRfY29udHJvbGxlcikgb3ZlcnJp
ZGU7Ci0KLSAgUnRwQ2FwYWJpbGl0aWVzIEdldFJ0cFNlbmRlckNhcGFiaWxpdGllcygKLSAgICAg
IGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kKSBjb25zdCBvdmVycmlkZTsKLQotICBSVENFcnJvck9y
PHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwU2VuZGVySW50ZXJmYWNlPj4gQ3JlYXRlUnRwU2VuZGVy
KAotICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+IHRy
YWNrLAotICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQpIG92ZXJyaWRlOwot
Ci0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PiBD
cmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICAgIFJ0
cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0KSBvdmVycmlkZTsKLQotICBSdHBDYXBhYmls
aXRpZXMgR2V0UnRwUmVjZWl2ZXJDYXBhYmlsaXRpZXMoCi0gICAgICBjcmlja2V0OjpNZWRpYVR5
cGUga2luZCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8
T3J0Y1J0cFJlY2VpdmVySW50ZXJmYWNlPj4gQ3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlj
a2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNw
b3J0KSBvdmVycmlkZTsKLQotICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxVZHBUcmFuc3Bv
cnRJbnRlcmZhY2U+PgotICBDcmVhdGVVZHBUcmFuc3BvcnQoaW50IGZhbWlseSwgdWludDE2X3Qg
bWluX3BvcnQsIHVpbnQxNl90IG1heF9wb3J0KSBvdmVycmlkZTsKLQotICBydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9Tb3VyY2VJbnRlcmZhY2U+IENyZWF0ZUF1ZGlvU291cmNlKAotICAgICAgY29u
c3QgY3JpY2tldDo6QXVkaW9PcHRpb25zJiBvcHRpb25zKSBvdmVycmlkZTsKLQotICBydGM6OnNj
b3BlZF9yZWZwdHI8VmlkZW9UcmFja0ludGVyZmFjZT4gQ3JlYXRlVmlkZW9UcmFjaygKLSAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwKLSAgICAgIFZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2Uq
IHNvdXJjZSkgb3ZlcnJpZGU7Ci0KLSAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvVHJhY2tJbnRl
cmZhY2U+IENyZWF0ZUF1ZGlvVHJhY2soCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaWQsCi0g
ICAgICBBdWRpb1NvdXJjZUludGVyZmFjZSogc291cmNlKSBvdmVycmlkZTsKLQotICBydGM6OlRo
cmVhZCogbmV0d29ya190aHJlYWQoKSB7IHJldHVybiBuZXR3b3JrX3RocmVhZF87IH0KLSAgcnRj
OjpUaHJlYWQqIHdvcmtlcl90aHJlYWQoKSB7IHJldHVybiB3b3JrZXJfdGhyZWFkXy5nZXQoKTsg
fQotICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCgpIHsgcmV0dXJuIHNpZ25hbGluZ190
aHJlYWRfOyB9Ci0KLSBwcml2YXRlOgotICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgYnkgT3J0
Y0ZhY3RvcnlJbnRlcmZhY2U6OkNyZWF0ZS4KLSAgT3J0Y0ZhY3RvcnkocnRjOjpUaHJlYWQqIG5l
dHdvcmtfdGhyZWFkLAotICAgICAgICAgICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVh
ZCwKLSAgICAgICAgICAgICAgcnRjOjpOZXR3b3JrTWFuYWdlciogbmV0d29ya19tYW5hZ2VyLAot
ICAgICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAot
ICAgICAgICAgICAgICBBdWRpb0RldmljZU1vZHVsZSogYWRtLAotICAgICAgICAgICAgICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LAotICAgICAgICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4g
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5KTsKLQotICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxS
dHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlPj4KLSAgQ3JlYXRlUnRwVHJhbnNwb3J0Q29u
dHJvbGxlcihjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKLQotICAv
LyBUaHJlYWQ6Okludm9rZSBkb2Vzbid0IHN1cHBvcnQgbW92ZS1vbmx5IGFyZ3VtZW50cywgc28g
d2UgbmVlZCB0byByZW1vdmUKLSAgLy8gdGhlIHVuaXF1ZV9wdHIgd3JhcHBlciBmcm9tIG1lZGlh
X2VuZ2luZS4gVE9ETyhkZWFkYmVlZik6IEZpeCB0aGlzLgotICBzdGF0aWMgUlRDRXJyb3JPcjxz
dGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+PiBDcmVhdGVfcygKLSAgICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdf
dGhyZWFkLAotICAgICAgcnRjOjpOZXR3b3JrTWFuYWdlciogbmV0d29ya19tYW5hZ2VyLAotICAg
ICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFjdG9yeSwKLSAgICAgIEF1ZGlv
RGV2aWNlTW9kdWxlKiBhZG0sCi0gICAgICBjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZSog
bWVkaWFfZW5naW5lLAotICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rv
cnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnkpOwotCi0gIC8vIFBlcmZvcm1z
IGluaXRpYWxpemF0aW9uIHRoYXQgY2FuIGZhaWwuIENhbGxlZCBieSBmYWN0b3J5IG1ldGhvZCBh
ZnRlcgotICAvLyBjb25zdHJ1Y3Rpb24sIGFuZCBpZiBpdCBmYWlscywgbm8gb2JqZWN0IGlzIHJl
dHVybmVkLgotICBSVENFcnJvciBJbml0aWFsaXplKAotICAgICAgc3RkOjp1bmlxdWVfcHRyPGNy
aWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUpOwotICBzdGQ6OnVuaXF1
ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IENyZWF0ZU1lZGlhRW5naW5lX3co
KTsKLQotICAvLyBUaHJlYWRzIGFuZCBuZXR3b3JraW5nIG9iamVjdHMuCi0gIHJ0Yzo6VGhyZWFk
KiBuZXR3b3JrX3RocmVhZF87Ci0gIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkXzsKLSAg
cnRjOjpOZXR3b3JrTWFuYWdlciogbmV0d29ya19tYW5hZ2VyXzsKLSAgcnRjOjpQYWNrZXRTb2Nr
ZXRGYWN0b3J5KiBzb2NrZXRfZmFjdG9yeV87Ci0gIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG1fOwot
ICAvLyBJZiB3ZSBjcmVhdGVkL293biB0aGUgb2JqZWN0cyBhYm92ZSwgdGhlc2Ugd2lsbCBiZSBu
b24tbnVsbCBhbmQgdGh1cyB3aWxsCi0gIC8vIGJlIHJlbGVhc2VkIGF1dG9tYXRpY2FsbHkgdXBv
biBkZXN0cnVjdGlvbi4KLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBvd25lZF9uZXR3
b3JrX3RocmVhZF87Ci0gIGJvb2wgd3JhcHNfc2lnbmFsaW5nX3RocmVhZF8gPSBmYWxzZTsKLSAg
c3RkOjp1bmlxdWVfcHRyPHJ0Yzo6TmV0d29ya01hbmFnZXI+IG93bmVkX25ldHdvcmtfbWFuYWdl
cl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlBhY2tldFNvY2tldEZhY3Rvcnk+IG93bmVkX3Nv
Y2tldF9mYWN0b3J5XzsKLSAgLy8gV2UgYWx3YXlzIG93biB0aGUgd29ya2VyIHRocmVhZC4KLSAg
c3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiB3b3JrZXJfdGhyZWFkXzsKLSAgLy8gTWVkaWEt
cmVsZWF0ZWQgb2JqZWN0cy4KLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBudWxsX2V2
ZW50X2xvZ187Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRp
b19lbmNvZGVyX2ZhY3RvcnlfOwotICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFj
dG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5XzsKLSAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6
OkNoYW5uZWxNYW5hZ2VyPiBjaGFubmVsX21hbmFnZXJfOwotICAvLyBEZWZhdWx0IENOQU1FIHRv
IHVzZSBmb3IgUnRwVHJhbnNwb3J0cyBpZiBub25lIGlzIHBhc3NlZCBpbi4KLSAgc3RkOjpzdHJp
bmcgZGVmYXVsdF9jbmFtZV87Ci0KLSAgZnJpZW5kIGNsYXNzIE9ydGNGYWN0b3J5SW50ZXJmYWNl
OwotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oT3J0Y0ZhY3RvcnkpOwotfTsKLQot
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE9SVENfT1JUQ0ZBQ1RPUllfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29y
dGMvb3J0Y2ZhY3RvcnlfaW50ZWdyYXRpb250ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZjI5NTIwZWQ4ZDc2ODg4YTcxODkwYTc3
MTU5NjdhMTkxMThmMTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRj
ZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw3MjQgKzAsMCBA
QAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
LSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx1dGls
aXR5PiAgLy8gRm9yIHN0ZDo6cGFpciwgc3RkOjptb3ZlLgotCi0jaW5jbHVkZSAiYXBpL2F1ZGlv
X2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImFwaS9h
dWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJh
cGkvb3J0Yy9vcnRjZmFjdG9yeWludGVyZmFjZS5oIgotI2luY2x1ZGUgIm9ydGMvdGVzdHJ0cHBh
cmFtZXRlcnMuaCIKLSNpbmNsdWRlICJwMnAvYmFzZS91ZHB0cmFuc3BvcnQuaCIKLSNpbmNsdWRl
ICJwYy90ZXN0L2Zha2VhdWRpb2NhcHR1cmVtb2R1bGUuaCIKLSNpbmNsdWRlICJwYy90ZXN0L2Zh
a2VwZXJpb2RpY3ZpZGVvdHJhY2tzb3VyY2UuaCIKLSNpbmNsdWRlICJwYy90ZXN0L2Zha2V2aWRl
b3RyYWNrcmVuZGVyZXIuaCIKLSNpbmNsdWRlICJwYy92aWRlb3RyYWNrc291cmNlLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZmFr
ZW5ldHdvcmsuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3N5c3RlbS9hcmNoLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5oIgotCi1uYW1lc3BhY2UgewotCi1j
b25zdCBpbnQga0RlZmF1bHRUaW1lb3V0ID0gMTAwMDA7ICAgIC8vIDEwIHNlY29uZHMuCi1jb25z
dCBpbnQga1JlY2VpdmluZ0R1cmF0aW9uID0gMTAwMDsgIC8vIDEgc2Vjb25kLgotCi0vLyBEZWZh
dWx0IG51bWJlciBvZiBhdWRpby92aWRlbyBmcmFtZXMgdG8gd2FpdCBmb3IgYmVmb3JlIGNvbnNp
ZGVyaW5nIGEgdGVzdCBhCi0vLyBzdWNjZXNzLgotY29uc3QgaW50IGtEZWZhdWx0TnVtRnJhbWVz
ID0gMzsKLWNvbnN0IHJ0Yzo6SVBBZGRyZXNzIGtJUHY0TG9jYWxIb3N0QWRkcmVzcyA9Ci0gICAg
cnRjOjpJUEFkZHJlc3MoMHg3RjAwMDAwMSk7ICAvLyAxMjcuMC4wLjEKLQotc3RhdGljIGNvbnN0
IGNoYXIga1Rlc3RLZXlQYXJhbXMxW10gPQotICAgICJpbmxpbmU6V1ZOZlgxOXpaVzFqZEd3Z0tz
a2dld2t5TWpBN2ZRcDlDblZ1YkdWeiI7Ci1zdGF0aWMgY29uc3QgY2hhciBrVGVzdEtleVBhcmFt
czJbXSA9Ci0gICAgImlubGluZTpQUzF1UUNWZWVDRkNhblZtY2prcGF5d2pOV2hjWUQwbVhYdHhh
VkJSIjsKLXN0YXRpYyBjb25zdCBjaGFyIGtUZXN0S2V5UGFyYW1zM1tdID0KLSAgICAiaW5saW5l
OldWTmZYMTl6WlcxamRHd2dLc2tnZXdreU1qQTdmUXA5Q25WdWJHVmEiOwotc3RhdGljIGNvbnN0
IGNoYXIga1Rlc3RLZXlQYXJhbXM0W10gPQotICAgICJpbmxpbmU6V1ZOZlgxOXpaVzFqZEd3Z0tz
a2dld2t5TWpBN2ZRcDlDblZ1YkdWYiI7Ci1zdGF0aWMgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFy
YW1zIGtUZXN0Q3J5cHRvUGFyYW1zMSgxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkFFU19DTV8xMjhfSE1BQ19TSEExXzgwIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtUZXN0S2V5
UGFyYW1zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIiKTsKLXN0YXRpYyBjb25zdCBjcmlja2V0OjpDcnlwdG9QYXJhbXMga1Rlc3RDcnlw
dG9QYXJhbXMyKDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1Rlc3RLZXlQYXJhbXMyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIpOwot
c3RhdGljIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1BhcmFtcyBrVGVzdENyeXB0b1BhcmFtczMoMSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJB
RVNfQ01fMTI4X0hNQUNfU0hBMV84MCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrVGVzdEtleVBhcmFtczMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIik7Ci1zdGF0aWMgY29uc3Qg
Y3JpY2tldDo6Q3J5cHRvUGFyYW1zIGtUZXN0Q3J5cHRvUGFyYW1zNCgxLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFFU19DTV8xMjhfSE1B
Q19TSEExXzgwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtUZXN0S2V5UGFyYW1zNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIiKTsKLX0gIC8vIG5hbWVzcGFjZQotCi1uYW1lc3Bh
Y2Ugd2VicnRjIHsKLQotLy8gVXNlZCB0byB0ZXN0IHRoYXQgdGhpbmdzIHdvcmsgZW5kLXRvLWVu
ZCB3aGVuIHVzaW5nIHRoZSBkZWZhdWx0Ci0vLyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhyZWFkcy9l
dGMuIHByb3ZpZGVkIGJ5IE9ydGNGYWN0b3J5LCB3aXRoIHRoZSBleGNlcHRpb24KLS8vIG9mIHVz
aW5nIGEgdmlydHVhbCBuZXR3b3JrLgotLy8KLS8vIEJ5IGRlZmF1bHQsIHRoZSB2aXJ0dWFsIG5l
dHdvcmsgbWFuYWdlciBkb2Vzbid0IGVudW1lcmF0ZSBhbnkgbmV0d29ya3MsIGJ1dAotLy8gc29j
a2V0cyBjYW4gc3RpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIHN0YXRlLgotY2xhc3MgT3J0Y0ZhY3Rv
cnlJbnRlZ3JhdGlvblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOgotICBP
cnRjRmFjdG9yeUludGVncmF0aW9uVGVzdCgpCi0gICAgICA6IG5ldHdvcmtfdGhyZWFkXygmdmly
dHVhbF9zb2NrZXRfc2VydmVyXyksCi0gICAgICAgIGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUx
XyhGYWtlQXVkaW9DYXB0dXJlTW9kdWxlOjpDcmVhdGUoKSksCi0gICAgICAgIGZha2VfYXVkaW9f
Y2FwdHVyZV9tb2R1bGUyXyhGYWtlQXVkaW9DYXB0dXJlTW9kdWxlOjpDcmVhdGUoKSkgewotICAg
IC8vIFNvY2tldHMgYXJlIGJvdW5kIHRvIHRoZSBBTlkgYWRkcmVzcywgc28gdGhpcyBpcyBuZWVk
ZWQgdG8gdGVsbCB0aGUKLSAgICAvLyB2aXJ0dWFsIG5ldHdvcmsgd2hpY2ggYWRkcmVzcyB0byB1
c2UgaW4gdGhpcyBjYXNlLgotICAgIHZpcnR1YWxfc29ja2V0X3NlcnZlcl8uU2V0RGVmYXVsdFJv
dXRlKGtJUHY0TG9jYWxIb3N0QWRkcmVzcyk7Ci0gICAgbmV0d29ya190aHJlYWRfLlNldE5hbWUo
IlRlc3ROZXR3b3JrVGhyZWFkIiwgdGhpcyk7Ci0gICAgbmV0d29ya190aHJlYWRfLlN0YXJ0KCk7
Ci0gICAgLy8gTmVlZCB0byBjcmVhdGUgYWZ0ZXIgbmV0d29yayB0aHJlYWQgaXMgc3RhcnRlZC4K
LSAgICBvcnRjX2ZhY3RvcnkxXyA9Ci0gICAgICAgIE9ydGNGYWN0b3J5SW50ZXJmYWNlOjpDcmVh
dGUoCi0gICAgICAgICAgICAmbmV0d29ya190aHJlYWRfLCBudWxscHRyLCAmZmFrZV9uZXR3b3Jr
X21hbmFnZXJfLCBudWxscHRyLAotICAgICAgICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVs
ZTFfLCBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLAotICAgICAgICAgICAgQ3Jl
YXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSkKLSAgICAgICAgICAgIC5Nb3ZlVmFsdWUo
KTsKLSAgICBvcnRjX2ZhY3RvcnkyXyA9Ci0gICAgICAgIE9ydGNGYWN0b3J5SW50ZXJmYWNlOjpD
cmVhdGUoCi0gICAgICAgICAgICAmbmV0d29ya190aHJlYWRfLCBudWxscHRyLCAmZmFrZV9uZXR3
b3JrX21hbmFnZXJfLCBudWxscHRyLAotICAgICAgICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21v
ZHVsZTJfLCBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLAotICAgICAgICAgICAg
Q3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSkKLSAgICAgICAgICAgIC5Nb3ZlVmFs
dWUoKTsKLSAgfQotCi0gcHJvdGVjdGVkOgotICB0eXBlZGVmIHN0ZDo6cGFpcjxzdGQ6OnVuaXF1
ZV9wdHI8VWRwVHJhbnNwb3J0SW50ZXJmYWNlPiwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFVkcFRyYW5zcG9ydEludGVyZmFjZT4+Ci0gICAgICBVZHBUcmFuc3BvcnRQYWly
OwotICB0eXBlZGVmIHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJm
YWNlPiwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydElu
dGVyZmFjZT4+Ci0gICAgICBSdHBUcmFuc3BvcnRQYWlyOwotICB0eXBlZGVmIHN0ZDo6cGFpcjxz
dGQ6OnVuaXF1ZV9wdHI8U3J0cFRyYW5zcG9ydEludGVyZmFjZT4sCi0gICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4KLSAgICAgIFNydHBU
cmFuc3BvcnRQYWlyOwotICB0eXBlZGVmIHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJh
bnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4sCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlPj4KLSAgICAgIFJ0cFRyYW5z
cG9ydENvbnRyb2xsZXJQYWlyOwotCi0gIC8vIEhlbHBlciBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMg
b25lIFVEUCB0cmFuc3BvcnQgZWFjaCBmb3IgfG9ydGNfZmFjdG9yeTFffAotICAvLyBhbmQgfG9y
dGNfZmFjdG9yeTJffCwgYW5kIGNvbm5lY3RzIHRoZW0uCi0gIFVkcFRyYW5zcG9ydFBhaXIgQ3Jl
YXRlQW5kQ29ubmVjdFVkcFRyYW5zcG9ydFBhaXIoKSB7Ci0gICAgYXV0byB0cmFuc3BvcnQxID0g
b3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVVkcFRyYW5zcG9ydChBRl9JTkVUKS5Nb3ZlVmFsdWUoKTsK
LSAgICBhdXRvIHRyYW5zcG9ydDIgPSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlVWRwVHJhbnNwb3J0
KEFGX0lORVQpLk1vdmVWYWx1ZSgpOwotICAgIHRyYW5zcG9ydDEtPlNldFJlbW90ZUFkZHJlc3Mo
Ci0gICAgICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyh2aXJ0dWFsX3NvY2tldF9zZXJ2ZXJfLkdldERl
ZmF1bHRSb3V0ZShBRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9y
dDItPkdldExvY2FsQWRkcmVzcygpLnBvcnQoKSkpOwotICAgIHRyYW5zcG9ydDItPlNldFJlbW90
ZUFkZHJlc3MoCi0gICAgICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyh2aXJ0dWFsX3NvY2tldF9zZXJ2
ZXJfLkdldERlZmF1bHRSb3V0ZShBRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zcG9ydDEtPkdldExvY2FsQWRkcmVzcygpLnBvcnQoKSkpOwotICAgIHJldHVybiB7c3Rk
Ojptb3ZlKHRyYW5zcG9ydDEpLCBzdGQ6Om1vdmUodHJhbnNwb3J0Mil9OwotICB9Ci0KLSAgLy8g
Q3JlYXRlcyBvbmUgdHJhbnNwb3J0IGNvbnRyb2xsZXIgZWFjaCBmb3IgfG9ydGNfZmFjdG9yeTFf
fCBhbmQKLSAgLy8gfG9ydGNfZmFjdG9yeTJffC4KLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclBh
aXIgQ3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlclBhaXIoKSB7Ci0gICAgcmV0dXJuIHtvcnRj
X2ZhY3RvcnkxXy0+Q3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcigpLk1vdmVWYWx1ZSgpLAot
ICAgICAgICAgICAgb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIo
KS5Nb3ZlVmFsdWUoKX07Ci0gIH0KLQotICAvLyBIZWxwZXIgZnVuY3Rpb24gdGhhdCBjcmVhdGVz
IGEgcGFpciBvZiBSdHBUcmFuc3BvcnRzIGJldHdlZW4KLSAgLy8gfG9ydGNfZmFjdG9yeTFffCBh
bmQgfG9ydGNfZmFjdG9yeTJffC4gRXhwZWN0ZWQgdG8gYmUgY2FsbGVkIHdpdGggdGhlCi0gIC8v
IHJlc3VsdCBvZiBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpci4gfHJ0Y3BfdWRwX3Ry
YW5zcG9ydHN8IGNhbiBiZQotICAvLyBlbXB0eSBpZiBSVENQIG11eGluZyBpcyB1c2VkLiB8dHJh
bnNwb3J0X2NvbnRyb2xsZXJzfCBjYW4gYmUgZW1wdHkgaWYKLSAgLy8gdGhlc2UgdHJhbnNwb3J0
cyBhcmUgYmVpbmcgY3JlYXRlZCB1c2luZyBhIGRlZmF1bHQgdHJhbnNwb3J0IGNvbnRyb2xsZXIu
Ci0gIFJ0cFRyYW5zcG9ydFBhaXIgQ3JlYXRlUnRwVHJhbnNwb3J0UGFpcigKLSAgICAgIGNvbnN0
IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICBjb25zdCBVZHBUcmFu
c3BvcnRQYWlyJiBydHBfdWRwX3RyYW5zcG9ydHMsCi0gICAgICBjb25zdCBVZHBUcmFuc3BvcnRQ
YWlyJiBydGNwX3VkcF90cmFuc3BvcnRzLAotICAgICAgY29uc3QgUnRwVHJhbnNwb3J0Q29udHJv
bGxlclBhaXImIHRyYW5zcG9ydF9jb250cm9sbGVycykgewotICAgIGF1dG8gdHJhbnNwb3J0X3Jl
c3VsdDEgPSBvcnRjX2ZhY3RvcnkxXy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgICBwYXJh
bWV0ZXJzLCBydHBfdWRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCksCi0gICAgICAgIHJ0Y3BfdWRw
X3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCksIHRyYW5zcG9ydF9jb250cm9sbGVycy5maXJzdC5nZXQo
KSk7Ci0gICAgYXV0byB0cmFuc3BvcnRfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVS
dHBUcmFuc3BvcnQoCi0gICAgICAgIHBhcmFtZXRlcnMsIHJ0cF91ZHBfdHJhbnNwb3J0cy5zZWNv
bmQuZ2V0KCksCi0gICAgICAgIHJ0Y3BfdWRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpLCB0cmFu
c3BvcnRfY29udHJvbGxlcnMuc2Vjb25kLmdldCgpKTsKLSAgICByZXR1cm4ge3RyYW5zcG9ydF9y
ZXN1bHQxLk1vdmVWYWx1ZSgpLCB0cmFuc3BvcnRfcmVzdWx0Mi5Nb3ZlVmFsdWUoKX07Ci0gIH0K
LQotICBTcnRwVHJhbnNwb3J0UGFpciBDcmVhdGVTcnRwVHJhbnNwb3J0UGFpcigKLSAgICAgIGNv
bnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICBjb25zdCBVZHBU
cmFuc3BvcnRQYWlyJiBydHBfdWRwX3RyYW5zcG9ydHMsCi0gICAgICBjb25zdCBVZHBUcmFuc3Bv
cnRQYWlyJiBydGNwX3VkcF90cmFuc3BvcnRzLAotICAgICAgY29uc3QgUnRwVHJhbnNwb3J0Q29u
dHJvbGxlclBhaXImIHRyYW5zcG9ydF9jb250cm9sbGVycykgewotICAgIGF1dG8gdHJhbnNwb3J0
X3Jlc3VsdDEgPSBvcnRjX2ZhY3RvcnkxXy0+Q3JlYXRlU3J0cFRyYW5zcG9ydCgKLSAgICAgICAg
cGFyYW1ldGVycywgcnRwX3VkcF90cmFuc3BvcnRzLmZpcnN0LmdldCgpLAotICAgICAgICBydGNw
X3VkcF90cmFuc3BvcnRzLmZpcnN0LmdldCgpLCB0cmFuc3BvcnRfY29udHJvbGxlcnMuZmlyc3Qu
Z2V0KCkpOwotICAgIGF1dG8gdHJhbnNwb3J0X3Jlc3VsdDIgPSBvcnRjX2ZhY3RvcnkyXy0+Q3Jl
YXRlU3J0cFRyYW5zcG9ydCgKLSAgICAgICAgcGFyYW1ldGVycywgcnRwX3VkcF90cmFuc3BvcnRz
LnNlY29uZC5nZXQoKSwKLSAgICAgICAgcnRjcF91ZHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCks
IHRyYW5zcG9ydF9jb250cm9sbGVycy5zZWNvbmQuZ2V0KCkpOwotICAgIHJldHVybiB7dHJhbnNw
b3J0X3Jlc3VsdDEuTW92ZVZhbHVlKCksIHRyYW5zcG9ydF9yZXN1bHQyLk1vdmVWYWx1ZSgpfTsK
LSAgfQotCi0gIC8vIEZvciBjb252ZW5pZW5jZSB3aGVuIHxydGNwX3VkcF90cmFuc3BvcnRzfCBh
bmQgfHRyYW5zcG9ydF9jb250cm9sbGVyc3wKLSAgLy8gYXJlbid0IG5lZWRlZC4KLSAgUnRwVHJh
bnNwb3J0UGFpciBDcmVhdGVSdHBUcmFuc3BvcnRQYWlyKAotICAgICAgY29uc3QgUnRwVHJhbnNw
b3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywKLSAgICAgIGNvbnN0IFVkcFRyYW5zcG9ydFBhaXIm
IHJ0cF91ZHBfdHJhbnNwb3J0cykgewotICAgIHJldHVybiBDcmVhdGVSdHBUcmFuc3BvcnRQYWly
KHBhcmFtZXRlcnMsIHJ0cF91ZHBfdHJhbnNwb3J0cywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVZHBUcmFuc3BvcnRQYWlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclBhaXIoKSk7Ci0gIH0KLQotICBTcnRwVHJh
bnNwb3J0UGFpciBDcmVhdGVTcnRwVHJhbnNwb3J0UGFpckFuZFNldEtleXMoCi0gICAgICBjb25z
dCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgICAgY29uc3QgVWRwVHJh
bnNwb3J0UGFpciYgcnRwX3VkcF90cmFuc3BvcnRzKSB7Ci0gICAgU3J0cFRyYW5zcG9ydFBhaXIg
c3J0cF90cmFuc3BvcnRzID0gQ3JlYXRlU3J0cFRyYW5zcG9ydFBhaXIoCi0gICAgICAgIHBhcmFt
ZXRlcnMsIHJ0cF91ZHBfdHJhbnNwb3J0cywgVWRwVHJhbnNwb3J0UGFpcigpLAotICAgICAgICBS
dHBUcmFuc3BvcnRDb250cm9sbGVyUGFpcigpKTsKLSAgICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5z
cG9ydHMuZmlyc3QtPlNldFNydHBTZW5kS2V5KGtUZXN0Q3J5cHRvUGFyYW1zMSkub2soKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoCi0gICAgICAgIHNydHBfdHJhbnNwb3J0cy5maXJzdC0+U2V0U3J0cFJl
Y2VpdmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMyKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRSgKLSAg
ICAgICAgc3J0cF90cmFuc3BvcnRzLnNlY29uZC0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9Q
YXJhbXMyKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRSgKLSAgICAgICAgc3J0cF90cmFuc3BvcnRz
LnNlY29uZC0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMxKS5vaygpKTsKLSAg
ICByZXR1cm4gc3J0cF90cmFuc3BvcnRzOwotICB9Ci0KLSAgU3J0cFRyYW5zcG9ydFBhaXIgQ3Jl
YXRlU3J0cFRyYW5zcG9ydFBhaXJBbmRTZXRNaXNtYXRjaGluZ0tleXMoCi0gICAgICBjb25zdCBS
dHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgICAgY29uc3QgVWRwVHJhbnNw
b3J0UGFpciYgcnRwX3VkcF90cmFuc3BvcnRzKSB7Ci0gICAgU3J0cFRyYW5zcG9ydFBhaXIgc3J0
cF90cmFuc3BvcnRzID0gQ3JlYXRlU3J0cFRyYW5zcG9ydFBhaXIoCi0gICAgICAgIHBhcmFtZXRl
cnMsIHJ0cF91ZHBfdHJhbnNwb3J0cywgVWRwVHJhbnNwb3J0UGFpcigpLAotICAgICAgICBSdHBU
cmFuc3BvcnRDb250cm9sbGVyUGFpcigpKTsKLSAgICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9y
dHMuZmlyc3QtPlNldFNydHBTZW5kS2V5KGtUZXN0Q3J5cHRvUGFyYW1zMSkub2soKSk7Ci0gICAg
RVhQRUNUX1RSVUUoCi0gICAgICAgIHNydHBfdHJhbnNwb3J0cy5maXJzdC0+U2V0U3J0cFJlY2Vp
dmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMyKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRSgKLSAgICAg
ICAgc3J0cF90cmFuc3BvcnRzLnNlY29uZC0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJh
bXMxKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRSgKLSAgICAgICAgc3J0cF90cmFuc3BvcnRzLnNl
Y29uZC0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMyKS5vaygpKTsKLSAgICBy
ZXR1cm4gc3J0cF90cmFuc3BvcnRzOwotICB9Ci0KLSAgLy8gRW5kcyB1cCB1c2luZyBmYWtlIGF1
ZGlvIGNhcHR1cmUgbW9kdWxlLCB3aGljaCB3YXMgcGFzc2VkIGludG8gT3J0Y0ZhY3RvcnkKLSAg
Ly8gb24gY3JlYXRpb24uCi0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJ
bnRlcmZhY2U+IENyZWF0ZUxvY2FsQXVkaW9UcmFjaygKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBpZCwKLSAgICAgIE9ydGNGYWN0b3J5SW50ZXJmYWNlKiBvcnRjX2ZhY3RvcnkpIHsKLSAgICAv
LyBEaXNhYmxlIGVjaG8gY2FuY2VsbGF0aW9uIHRvIG1ha2UgdGVzdCBtb3JlIGVmZmljaWVudC4K
LSAgICBjcmlja2V0OjpBdWRpb09wdGlvbnMgb3B0aW9uczsKLSAgICBvcHRpb25zLmVjaG9fY2Fu
Y2VsbGF0aW9uLmVtcGxhY2UodHJ1ZSk7Ci0gICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
QXVkaW9Tb3VyY2VJbnRlcmZhY2U+IHNvdXJjZSA9Ci0gICAgICAgIG9ydGNfZmFjdG9yeS0+Q3Jl
YXRlQXVkaW9Tb3VyY2Uob3B0aW9ucyk7Ci0gICAgcmV0dXJuIG9ydGNfZmFjdG9yeS0+Q3JlYXRl
QXVkaW9UcmFjayhpZCwgc291cmNlKTsKLSAgfQotCi0gIC8vIFN0b3JlcyBjcmVhdGVkIHZpZGVv
IHNvdXJjZSBpbiB8ZmFrZV92aWRlb190cmFja19zb3VyY2VzX3wuCi0gIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+Ci0gIENyZWF0ZUxvY2FsVmlkZW9UcmFj
a0FuZEZha2VTb3VyY2UoY29uc3Qgc3RkOjpzdHJpbmcmIGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE9ydGNGYWN0b3J5SW50ZXJmYWNlKiBvcnRjX2ZhY3RvcnkpIHsK
LSAgICBGYWtlUGVyaW9kaWNWaWRlb1NvdXJjZTo6Q29uZmlnIGNvbmZpZzsKLSAgICBjb25maWcu
dGltZXN0YW1wX29mZnNldF9tcyA9IHJ0Yzo6VGltZU1pbGxpcygpOwotICAgIGZha2VfdmlkZW9f
dHJhY2tfc291cmNlc18uZW1wbGFjZV9iYWNrKAotICAgICAgICBuZXcgcnRjOjpSZWZDb3VudGVk
T2JqZWN0PEZha2VQZXJpb2RpY1ZpZGVvVHJhY2tTb3VyY2U+KAotICAgICAgICAgICAgY29uZmln
LCBmYWxzZSAvKiByZW1vdGUgKi8pKTsKLSAgICByZXR1cm4gcnRjOjpzY29wZWRfcmVmcHRyPFZp
ZGVvVHJhY2tJbnRlcmZhY2U+KAotICAgICAgICBvcnRjX2ZhY3RvcnktPkNyZWF0ZVZpZGVvVHJh
Y2soaWQsIGZha2VfdmlkZW9fdHJhY2tfc291cmNlc18uYmFjaygpKSk7Ci0gIH0KLQotICAvLyBI
ZWxwZXIgZnVuY3Rpb24gdXNlZCB0byB0ZXN0IHR3byB3YXkgUlRQIHNlbmRlcnMgYW5kIHJlY2Vp
dmVycyB3aXRoIGJhc2ljCi0gIC8vIGNvbmZpZ3VyYXRpb25zLgotICAvLyBJZiB8ZXhwZWN0X3N1
Y2Nlc3N8IGlzIHRydWUsIHdhaXRzIGZvciBrRGVmYXVsdFRpbWVvdXQgZm9yCi0gIC8vIGtEZWZh
dWx0TnVtRnJhbWVzIGZyYW1lcyB0byBiZSByZWNlaXZlZCBieSBhbGwgUnRwUmVjZWl2ZXJzLgot
ICAvLyBJZiB8ZXhwZWN0X3N1Y2Nlc3N8IGlzIGZhbHNlLCBzaW1wbHkgd2FpdHMgZm9yIHxrUmVj
ZWl2aW5nRHVyYXRpb258LCBhbmQKLSAgLy8gc3RvcmVzIHRoZSBudW1iZXIgb2YgcmVjZWl2ZWQg
ZnJhbWVzIGluIHxyZWNlaXZlZF9hdWRpb19mcmFtZTFffCBldGMuCi0gIHZvaWQgQmFzaWNUd29X
YXlSdHBTZW5kZXJzQW5kUmVjZWl2ZXJzVGVzdChSdHBUcmFuc3BvcnRQYWlyIHNydHBfdHJhbnNw
b3J0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZXhwZWN0X3N1Y2Nlc3MpIHsKLSAgICByZWNlaXZlZF9hdWRpb19mcmFtZXMxXyA9IDA7Ci0gICAg
cmVjZWl2ZWRfYXVkaW9fZnJhbWVzMl8gPSAwOwotICAgIHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczFf
ID0gMDsKLSAgICByZW5kZXJlZF92aWRlb19mcmFtZXMyXyA9IDA7Ci0gICAgLy8gQ3JlYXRlIGFs
bCB0aGUgc2VuZGVycyBhbmQgcmVjZWl2ZXJzIChmb3VyIHBlciBlbmRwb2ludCkuCi0gICAgYXV0
byBhdWRpb19zZW5kZXJfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBTZW5kZXIo
Ci0gICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHNydHBfdHJhbnNwb3J0cy5maXJz
dC5nZXQoKSk7Ci0gICAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeTFf
LT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHNy
dHBfdHJhbnNwb3J0cy5maXJzdC5nZXQoKSk7Ci0gICAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1
bHQxID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgICBjcmlja2V0
OjpNRURJQV9UWVBFX0FVRElPLCBzcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICAgIGF1
dG8gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBSZWNl
aXZlcigKLSAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgc3J0cF90cmFuc3BvcnRz
LmZpcnN0LmdldCgpKTsKLSAgICBBU1NFUlRfVFJVRShhdWRpb19zZW5kZXJfcmVzdWx0MS5vaygp
KTsKLSAgICBBU1NFUlRfVFJVRSh2aWRlb19zZW5kZXJfcmVzdWx0MS5vaygpKTsKLSAgICBBU1NF
UlRfVFJVRShhdWRpb19yZWNlaXZlcl9yZXN1bHQxLm9rKCkpOwotICAgIEFTU0VSVF9UUlVFKHZp
ZGVvX3JlY2VpdmVyX3Jlc3VsdDEub2soKSk7Ci0gICAgYXV0byBhdWRpb19zZW5kZXIxID0gYXVk
aW9fc2VuZGVyX3Jlc3VsdDEuTW92ZVZhbHVlKCk7Ci0gICAgYXV0byB2aWRlb19zZW5kZXIxID0g
dmlkZW9fc2VuZGVyX3Jlc3VsdDEuTW92ZVZhbHVlKCk7Ci0gICAgYXV0byBhdWRpb19yZWNlaXZl
cjEgPSBhdWRpb19yZWNlaXZlcl9yZXN1bHQxLk1vdmVWYWx1ZSgpOwotICAgIGF1dG8gdmlkZW9f
cmVjZWl2ZXIxID0gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0MS5Nb3ZlVmFsdWUoKTsKLQotICAgIGF1
dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdDIgPSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRwU2VuZGVy
KAotICAgICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBzcnRwX3RyYW5zcG9ydHMuc2Vj
b25kLmdldCgpKTsKLSAgICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQyID0gb3J0Y19mYWN0b3J5
Ml8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywg
c3J0cF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSk7Ci0gICAgYXV0byBhdWRpb19yZWNlaXZlcl9y
ZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgICBjcmlj
a2V0OjpNRURJQV9UWVBFX0FVRElPLCBzcnRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpKTsKLSAg
ICBhdXRvIHZpZGVvX3JlY2VpdmVyX3Jlc3VsdDIgPSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRw
UmVjZWl2ZXIoCi0gICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHNydHBfdHJhbnNw
b3J0cy5zZWNvbmQuZ2V0KCkpOwotICAgIEFTU0VSVF9UUlVFKGF1ZGlvX3NlbmRlcl9yZXN1bHQy
Lm9rKCkpOwotICAgIEFTU0VSVF9UUlVFKHZpZGVvX3NlbmRlcl9yZXN1bHQyLm9rKCkpOwotICAg
IEFTU0VSVF9UUlVFKGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDIub2soKSk7Ci0gICAgQVNTRVJUX1RS
VUUodmlkZW9fcmVjZWl2ZXJfcmVzdWx0Mi5vaygpKTsKLSAgICBhdXRvIGF1ZGlvX3NlbmRlcjIg
PSBhdWRpb19zZW5kZXJfcmVzdWx0Mi5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRvIHZpZGVvX3NlbmRl
cjIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Mi5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRvIGF1ZGlvX3Jl
Y2VpdmVyMiA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDIuTW92ZVZhbHVlKCk7Ci0gICAgYXV0byB2
aWRlb19yZWNlaXZlcjIgPSB2aWRlb19yZWNlaXZlcl9yZXN1bHQyLk1vdmVWYWx1ZSgpOwotCi0g
ICAgLy8gQWRkIGZha2UgdHJhY2tzLgotICAgIFJUQ0Vycm9yIGVycm9yID0gYXVkaW9fc2VuZGVy
MS0+U2V0VHJhY2soCi0gICAgICAgIENyZWF0ZUxvY2FsQXVkaW9UcmFjaygiYXVkaW8iLCBvcnRj
X2ZhY3RvcnkxXy5nZXQoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwotICAgIGVy
cm9yID0gdmlkZW9fc2VuZGVyMS0+U2V0VHJhY2soCi0gICAgICAgIENyZWF0ZUxvY2FsVmlkZW9U
cmFja0FuZEZha2VTb3VyY2UoInZpZGVvIiwgb3J0Y19mYWN0b3J5MV8uZ2V0KCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShlcnJvci5vaygpKTsKLSAgICBlcnJvciA9IGF1ZGlvX3NlbmRlcjItPlNldFRy
YWNrKAotICAgICAgICBDcmVhdGVMb2NhbEF1ZGlvVHJhY2soImF1ZGlvIiwgb3J0Y19mYWN0b3J5
Ml8uZ2V0KCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcnJvci5vaygpKTsKLSAgICBlcnJvciA9IHZp
ZGVvX3NlbmRlcjItPlNldFRyYWNrKAotICAgICAgICBDcmVhdGVMb2NhbFZpZGVvVHJhY2tBbmRG
YWtlU291cmNlKCJ2aWRlbyIsIG9ydGNfZmFjdG9yeTJfLmdldCgpKSk7Ci0gICAgRVhQRUNUX1RS
VUUoZXJyb3Iub2soKSk7Ci0KLSAgICAvLyAic2VudF9YX3BhcmFtZXRlcnMxIiBhcmUgdGhlIHBh
cmFtZXRlcnMgdGhhdCBlbmRwb2ludCAxIHNlbmRzIHdpdGggYW5kCi0gICAgLy8gZW5kcG9pbnQg
MiByZWNlaXZlcyB3aXRoLgotICAgIFJ0cFBhcmFtZXRlcnMgc2VudF9vcHVzX3BhcmFtZXRlcnMx
ID0KLSAgICAgICAgTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVyc1dpdGhTc3JjKDB4ZGVhZGJlZWYp
OwotICAgIFJ0cFBhcmFtZXRlcnMgc2VudF92cDhfcGFyYW1ldGVyczEgPQotICAgICAgICBNYWtl
TWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoU3NyYygweGJhYWRmZWVkKTsKLSAgICBSdHBQYXJhbWV0
ZXJzIHNlbnRfb3B1c19wYXJhbWV0ZXJzMiA9Ci0gICAgICAgIE1ha2VNaW5pbWFsT3B1c1BhcmFt
ZXRlcnNXaXRoU3NyYygweDEzMzMzMzM3KTsKLSAgICBSdHBQYXJhbWV0ZXJzIHNlbnRfdnA4X3Bh
cmFtZXRlcnMyID0KLSAgICAgICAgTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzV2l0aFNzcmMoMHgx
MjM0NTY3OCk7Ci0KLSAgICAvLyBDb25maWd1cmUgdGhlIHNlbmRlcnMnIGFuZCByZWNlaXZlcnMn
IHBhcmFtZXRlcnMuCi0gICAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXIxLT5SZWNlaXZlKHNl
bnRfb3B1c19wYXJhbWV0ZXJzMikub2soKSk7Ci0gICAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2
ZXIxLT5SZWNlaXZlKHNlbnRfdnA4X3BhcmFtZXRlcnMyKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJV
RShhdWRpb19yZWNlaXZlcjItPlJlY2VpdmUoc2VudF9vcHVzX3BhcmFtZXRlcnMxKS5vaygpKTsK
LSAgICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZlcjItPlJlY2VpdmUoc2VudF92cDhfcGFyYW1l
dGVyczEpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlcjEtPlNlbmQoc2VudF9v
cHVzX3BhcmFtZXRlcnMxKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXIxLT5T
ZW5kKHNlbnRfdnA4X3BhcmFtZXRlcnMxKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRShhdWRpb19z
ZW5kZXIyLT5TZW5kKHNlbnRfb3B1c19wYXJhbWV0ZXJzMikub2soKSk7Ci0gICAgRVhQRUNUX1RS
VUUodmlkZW9fc2VuZGVyMi0+U2VuZChzZW50X3ZwOF9wYXJhbWV0ZXJzMikub2soKSk7Ci0KLSAg
ICBGYWtlVmlkZW9UcmFja1JlbmRlcmVyIGZha2VfdmlkZW9fcmVuZGVyZXIxKAotICAgICAgICBz
dGF0aWNfY2FzdDxWaWRlb1RyYWNrSW50ZXJmYWNlKj4odmlkZW9fcmVjZWl2ZXIxLT5HZXRUcmFj
aygpLmdldCgpKSk7Ci0gICAgRmFrZVZpZGVvVHJhY2tSZW5kZXJlciBmYWtlX3ZpZGVvX3JlbmRl
cmVyMigKLSAgICAgICAgc3RhdGljX2Nhc3Q8VmlkZW9UcmFja0ludGVyZmFjZSo+KHZpZGVvX3Jl
Y2VpdmVyMi0+R2V0VHJhY2soKS5nZXQoKSkpOwotCi0gICAgaWYgKGV4cGVjdF9zdWNjZXNzKSB7
Ci0gICAgICBFWFBFQ1RfVFJVRV9XQUlUKAotICAgICAgICAgIGZha2VfYXVkaW9fY2FwdHVyZV9t
b2R1bGUxXy0+ZnJhbWVzX3JlY2VpdmVkKCkgPiBrRGVmYXVsdE51bUZyYW1lcyAmJgotICAgICAg
ICAgICAgICBmYWtlX3ZpZGVvX3JlbmRlcmVyMS5udW1fcmVuZGVyZWRfZnJhbWVzKCkgPiBrRGVm
YXVsdE51bUZyYW1lcyAmJgotICAgICAgICAgICAgICBmYWtlX2F1ZGlvX2NhcHR1cmVfbW9kdWxl
Ml8tPmZyYW1lc19yZWNlaXZlZCgpID4KLSAgICAgICAgICAgICAgICAgIGtEZWZhdWx0TnVtRnJh
bWVzICYmCi0gICAgICAgICAgICAgIGZha2VfdmlkZW9fcmVuZGVyZXIyLm51bV9yZW5kZXJlZF9m
cmFtZXMoKSA+IGtEZWZhdWx0TnVtRnJhbWVzLAotICAgICAgICAgIGtEZWZhdWx0VGltZW91dCkK
LSAgICAgICAgICA8PCAiQXVkaW8gY2FwdHVyZSBtb2R1bGUgMSByZWNlaXZlZCAiCi0gICAgICAg
ICAgPDwgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTFfLT5mcmFtZXNfcmVjZWl2ZWQoKQotICAg
ICAgICAgIDw8ICIgZnJhbWVzLCBWaWRlbyByZW5kZXJlciAxIHJlbmRlcmVkICIKLSAgICAgICAg
ICA8PCBmYWtlX3ZpZGVvX3JlbmRlcmVyMS5udW1fcmVuZGVyZWRfZnJhbWVzKCkKLSAgICAgICAg
ICA8PCAiIGZyYW1lcywgQXVkaW8gY2FwdHVyZSBtb2R1bGUgMiByZWNlaXZlZCAiCi0gICAgICAg
ICAgPDwgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTJfLT5mcmFtZXNfcmVjZWl2ZWQoKQotICAg
ICAgICAgIDw8ICIgZnJhbWVzLCBWaWRlbyByZW5kZXJlciAyIHJlbmRlcmVkICIKLSAgICAgICAg
ICA8PCBmYWtlX3ZpZGVvX3JlbmRlcmVyMi5udW1fcmVuZGVyZWRfZnJhbWVzKCkgPDwgIiBmcmFt
ZXMuIjsKLSAgICB9IGVsc2UgewotICAgICAgV0FJVChmYWxzZSwga1JlY2VpdmluZ0R1cmF0aW9u
KTsKLSAgICAgIHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczFfID0gZmFrZV92aWRlb19yZW5kZXJlcjEu
bnVtX3JlbmRlcmVkX2ZyYW1lcygpOwotICAgICAgcmVuZGVyZWRfdmlkZW9fZnJhbWVzMl8gPSBm
YWtlX3ZpZGVvX3JlbmRlcmVyMi5udW1fcmVuZGVyZWRfZnJhbWVzKCk7Ci0gICAgICByZWNlaXZl
ZF9hdWRpb19mcmFtZXMxXyA9IGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUxXy0+ZnJhbWVzX3Jl
Y2VpdmVkKCk7Ci0gICAgICByZWNlaXZlZF9hdWRpb19mcmFtZXMyXyA9IGZha2VfYXVkaW9fY2Fw
dHVyZV9tb2R1bGUyXy0+ZnJhbWVzX3JlY2VpdmVkKCk7Ci0gICAgfQotICB9Ci0KLSAgcnRjOjpW
aXJ0dWFsU29ja2V0U2VydmVyIHZpcnR1YWxfc29ja2V0X3NlcnZlcl87Ci0gIHJ0Yzo6VGhyZWFk
IG5ldHdvcmtfdGhyZWFkXzsKLSAgcnRjOjpGYWtlTmV0d29ya01hbmFnZXIgZmFrZV9uZXR3b3Jr
X21hbmFnZXJfOwotICBydGM6OnNjb3BlZF9yZWZwdHI8RmFrZUF1ZGlvQ2FwdHVyZU1vZHVsZT4g
ZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTFfOwotICBydGM6OnNjb3BlZF9yZWZwdHI8RmFrZUF1
ZGlvQ2FwdHVyZU1vZHVsZT4gZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTJfOwotICBzdGQ6OnVu
aXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+IG9ydGNfZmFjdG9yeTFfOwotICBzdGQ6OnVu
aXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+IG9ydGNfZmFjdG9yeTJfOwotICBzdGQ6OnZl
Y3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9UcmFja1NvdXJjZT4+IGZha2VfdmlkZW9fdHJh
Y2tfc291cmNlc187Ci0gIGludCByZWNlaXZlZF9hdWRpb19mcmFtZXMxXyA9IDA7Ci0gIGludCBy
ZWNlaXZlZF9hdWRpb19mcmFtZXMyXyA9IDA7Ci0gIGludCByZW5kZXJlZF92aWRlb19mcmFtZXMx
XyA9IDA7Ci0gIGludCByZW5kZXJlZF92aWRlb19mcmFtZXMyXyA9IDA7Ci19OwotCi0vLyBEaXNh
YmxlIGZvciBUU2FuIHYyLCBzZWUKLS8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC93ZWJy
dGMvaXNzdWVzL2RldGFpbD9pZD03MzY2IGZvciBkZXRhaWxzLgotI2lmICFkZWZpbmVkKFRIUkVB
RF9TQU5JVElaRVIpCi0KLS8vIFZlcnkgYmFzaWMgZW5kLXRvLWVuZCB0ZXN0IHdpdGggYSBzaW5n
bGUgcGFpciBvZiBhdWRpbyBSVFAgc2VuZGVyIGFuZAotLy8gcmVjZWl2ZXIuCi0vLwotLy8gVXNl
cyBtdXhlZCBSVENQLCBhbmQgbWluaW1hbCBwYXJhbWV0ZXJzIHdpdGggYSBoYXJkLWNvZGVkIGNv
bmZpZyB0aGF0J3MKLS8vIGtub3duIHRvIHdvcmsuCi1URVNUX0YoT3J0Y0ZhY3RvcnlJbnRlZ3Jh
dGlvblRlc3QsIEJhc2ljT25lV2F5QXVkaW9SdHBTZW5kZXJBbmRSZWNlaXZlcikgewotICBhdXRv
IHVkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5zcG9ydFBhaXIoKTsKLSAg
YXV0byBydHBfdHJhbnNwb3J0cyA9Ci0gICAgICBDcmVhdGVSdHBUcmFuc3BvcnRQYWlyKE1ha2VS
dGNwTXV4UGFyYW1ldGVycygpLCB1ZHBfdHJhbnNwb3J0cyk7Ci0KLSAgYXV0byBzZW5kZXJfcmVz
dWx0ID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRzLmZpcnN0LmdldCgpKTsKLSAgYXV0byByZWNl
aXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBj
cmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCkpOwot
ICBBU1NFUlRfVFJVRShzZW5kZXJfcmVzdWx0Lm9rKCkpOwotICBBU1NFUlRfVFJVRShyZWNlaXZl
cl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gc2VuZGVyID0gc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUo
KTsKLSAgYXV0byByZWNlaXZlciA9IHJlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICBS
VENFcnJvciBlcnJvciA9Ci0gICAgICBzZW5kZXItPlNldFRyYWNrKENyZWF0ZUxvY2FsQXVkaW9U
cmFjaygiYXVkaW8iLCBvcnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwotICBFWFBFQ1RfVFJVRShlcnJv
ci5vaygpKTsKLQotICBSdHBQYXJhbWV0ZXJzIG9wdXNfcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFs
T3B1c1BhcmFtZXRlcnMoKTsKLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXItPlJlY2VpdmUob3B1c19w
YXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUoc2VuZGVyLT5TZW5kKG9wdXNfcGFyYW1l
dGVycykub2soKSk7Ci0gIC8vIFNlbmRlciBhbmQgcmVjZWl2ZXIgYXJlIGNvbm5lY3RlZCBhbmQg
Y29uZmlndXJlZDsgYXVkaW8gZnJhbWVzIHNob3VsZCBiZQotICAvLyBhYmxlIHRvIGZsb3cgYXQg
dGhpcyBwb2ludC4KLSAgRVhQRUNUX1RSVUVfV0FJVCgKLSAgICAgIGZha2VfYXVkaW9fY2FwdHVy
ZV9tb2R1bGUyXy0+ZnJhbWVzX3JlY2VpdmVkKCkgPiBrRGVmYXVsdE51bUZyYW1lcywKLSAgICAg
IGtEZWZhdWx0VGltZW91dCk7Ci19Ci0KLS8vIFZlcnkgYmFzaWMgZW5kLXRvLWVuZCB0ZXN0IHdp
dGggYSBzaW5nbGUgcGFpciBvZiB2aWRlbyBSVFAgc2VuZGVyIGFuZAotLy8gcmVjZWl2ZXIuCi0v
LwotLy8gVXNlcyBtdXhlZCBSVENQLCBhbmQgbWluaW1hbCBwYXJhbWV0ZXJzIHdpdGggYSBoYXJk
LWNvZGVkIGNvbmZpZyB0aGF0J3MKLS8vIGtub3duIHRvIHdvcmsuCi1URVNUX0YoT3J0Y0ZhY3Rv
cnlJbnRlZ3JhdGlvblRlc3QsIEJhc2ljT25lV2F5VmlkZW9SdHBTZW5kZXJBbmRSZWNlaXZlcikg
ewotICBhdXRvIHVkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5zcG9ydFBh
aXIoKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0cyA9Ci0gICAgICBDcmVhdGVSdHBUcmFuc3BvcnRQ
YWlyKE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCB1ZHBfdHJhbnNwb3J0cyk7Ci0KLSAgYXV0byBz
ZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNy
aWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRzLmZpcnN0LmdldCgpKTsKLSAg
YXV0byByZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRwUmVjZWl2ZXIo
Ci0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0cy5zZWNvbmQu
Z2V0KCkpOwotICBBU1NFUlRfVFJVRShzZW5kZXJfcmVzdWx0Lm9rKCkpOwotICBBU1NFUlRfVFJV
RShyZWNlaXZlcl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gc2VuZGVyID0gc2VuZGVyX3Jlc3VsdC5N
b3ZlVmFsdWUoKTsKLSAgYXV0byByZWNlaXZlciA9IHJlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUo
KTsKLQotICBSVENFcnJvciBlcnJvciA9IHNlbmRlci0+U2V0VHJhY2soCi0gICAgICBDcmVhdGVM
b2NhbFZpZGVvVHJhY2tBbmRGYWtlU291cmNlKCJ2aWRlbyIsIG9ydGNfZmFjdG9yeTFfLmdldCgp
KSk7Ci0gIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwotCi0gIFJ0cFBhcmFtZXRlcnMgdnA4X3Bh
cmFtZXRlcnMgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgRVhQRUNUX1RSVUUocmVj
ZWl2ZXItPlJlY2VpdmUodnA4X3BhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShzZW5k
ZXItPlNlbmQodnA4X3BhcmFtZXRlcnMpLm9rKCkpOwotICBGYWtlVmlkZW9UcmFja1JlbmRlcmVy
IGZha2VfcmVuZGVyZXIoCi0gICAgICBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrSW50ZXJmYWNlKj4o
cmVjZWl2ZXItPkdldFRyYWNrKCkuZ2V0KCkpKTsKLSAgLy8gU2VuZGVyIGFuZCByZWNlaXZlciBh
cmUgY29ubmVjdGVkIGFuZCBjb25maWd1cmVkOyB2aWRlbyBmcmFtZXMgc2hvdWxkIGJlCi0gIC8v
IGFibGUgdG8gZmxvdyBhdCB0aGlzIHBvaW50LgotICBFWFBFQ1RfVFJVRV9XQUlUKGZha2VfcmVu
ZGVyZXIubnVtX3JlbmRlcmVkX2ZyYW1lcygpID4ga0RlZmF1bHROdW1GcmFtZXMsCi0gICAgICAg
ICAgICAgICAgICAga0RlZmF1bHRUaW1lb3V0KTsKLX0KLQotLy8gVGVzdCB0aGF0IGlmIHRoZSB0
cmFjayBpcyBjaGFuZ2VkIHdoaWxlIHNlbmRpbmcsIHRoZSBzZW5kZXIgc2VhbWxlc3NseQotLy8g
dHJhbnNpdGlvbnMgdG8gc2VuZGluZyBpdCBhbmQgZnJhbWVzIGFyZSByZWNlaXZlZCBlbmQtdG8t
ZW5kLgotLy8KLS8vIE9ubHkgZG9pbmcgdGhpcyBmb3IgdmlkZW8sIHNpbmNlIGdpdmVuIHRoYXQg
YXVkaW8gaXMgc291cmNlZCBmcm9tIGEgc2luZ2xlCi0vLyBmYWtlIGF1ZGlvIGNhcHR1cmUgbW9k
dWxlLCB0aGUgYXVkaW8gdHJhY2sgaXMganVzdCBhIGR1bW15IG9iamVjdC4KLS8vIFRPRE8oZGVh
ZGJlZWYpOiBDaGFuZ2UgdGhpcyB3aGVuIHBvc3NpYmxlLgotVEVTVF9GKE9ydGNGYWN0b3J5SW50
ZWdyYXRpb25UZXN0LCBTZXRUcmFja1doaWxlU2VuZGluZykgewotICBhdXRvIHVkcF90cmFuc3Bv
cnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5zcG9ydFBhaXIoKTsKLSAgYXV0byBydHBfdHJh
bnNwb3J0cyA9Ci0gICAgICBDcmVhdGVSdHBUcmFuc3BvcnRQYWlyKE1ha2VSdGNwTXV4UGFyYW1l
dGVycygpLCB1ZHBfdHJhbnNwb3J0cyk7Ci0KLSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0Y19m
YWN0b3J5MV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklE
RU8sIHJ0cF90cmFuc3BvcnRzLmZpcnN0LmdldCgpKTsKLSAgYXV0byByZWNlaXZlcl9yZXN1bHQg
PSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJ
QV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCkpOwotICBBU1NFUlRfVFJV
RShzZW5kZXJfcmVzdWx0Lm9rKCkpOwotICBBU1NFUlRfVFJVRShyZWNlaXZlcl9yZXN1bHQub2so
KSk7Ci0gIGF1dG8gc2VuZGVyID0gc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgYXV0byBy
ZWNlaXZlciA9IHJlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICBSVENFcnJvciBlcnJv
ciA9IHNlbmRlci0+U2V0VHJhY2soCi0gICAgICBDcmVhdGVMb2NhbFZpZGVvVHJhY2tBbmRGYWtl
U291cmNlKCJ2aWRlb18xIiwgb3J0Y19mYWN0b3J5MV8uZ2V0KCkpKTsKLSAgRVhQRUNUX1RSVUUo
ZXJyb3Iub2soKSk7Ci0gIFJ0cFBhcmFtZXRlcnMgdnA4X3BhcmFtZXRlcnMgPSBNYWtlTWluaW1h
bFZwOFBhcmFtZXRlcnMoKTsKLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXItPlJlY2VpdmUodnA4X3Bh
cmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShzZW5kZXItPlNlbmQodnA4X3BhcmFtZXRl
cnMpLm9rKCkpOwotICBGYWtlVmlkZW9UcmFja1JlbmRlcmVyIGZha2VfcmVuZGVyZXIoCi0gICAg
ICBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrSW50ZXJmYWNlKj4ocmVjZWl2ZXItPkdldFRyYWNrKCku
Z2V0KCkpKTsKLSAgLy8gRXhwZWN0IGZvciBzb21lIGluaXRpYWwgbnVtYmVyIG9mIGZyYW1lcyB0
byBiZSByZWNlaXZlZC4KLSAgRVhQRUNUX1RSVUVfV0FJVChmYWtlX3JlbmRlcmVyLm51bV9yZW5k
ZXJlZF9mcmFtZXMoKSA+IGtEZWZhdWx0TnVtRnJhbWVzLAotICAgICAgICAgICAgICAgICAgIGtE
ZWZhdWx0VGltZW91dCk7Ci0gIC8vIERlc3Ryb3kgb2xkIHNvdXJjZSwgc2V0IGEgbmV3IHRyYWNr
LCBhbmQgdmVyaWZ5IG5ldyBmcmFtZXMgYXJlIHJlY2VpdmVkCi0gIC8vIGZyb20gdGhlIG5ldyB0
cmFjay4gVGhlIFZpZGVvVHJhY2tTb3VyY2UgaXMgcmVmZXJlbmNlIGNvdW50ZWQgYW5kIG1heSBs
aXZlCi0gIC8vIGEgbGl0dGxlIGxvbmdlciwgc28gdGVsbCBpdCB0aGF0IGl0cyBzb3VyY2UgaXMg
Z29pbmcgYXdheSBub3cuCi0gIGZha2VfdmlkZW9fdHJhY2tfc291cmNlc19bMF0gPSBudWxscHRy
OwotICBpbnQgcHJldl9udW1fZnJhbWVzID0gZmFrZV9yZW5kZXJlci5udW1fcmVuZGVyZWRfZnJh
bWVzKCk7Ci0gIGVycm9yID0gc2VuZGVyLT5TZXRUcmFjaygKLSAgICAgIENyZWF0ZUxvY2FsVmlk
ZW9UcmFja0FuZEZha2VTb3VyY2UoInZpZGVvXzIiLCBvcnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwot
ICBFWFBFQ1RfVFJVRShlcnJvci5vaygpKTsKLSAgRVhQRUNUX1RSVUVfV0FJVCgKLSAgICAgIGZh
a2VfcmVuZGVyZXIubnVtX3JlbmRlcmVkX2ZyYW1lcygpID4ga0RlZmF1bHROdW1GcmFtZXMgKyBw
cmV2X251bV9mcmFtZXMsCi0gICAgICBrRGVmYXVsdFRpbWVvdXQpOwotfQotCi0vLyBUT0RPKHdl
YnJ0Yzo3OTE1LCB3ZWJydGM6OTE4NCk6IFRlc3RzIGJlbG93IGFyZSBkaXNhYmxlZCBmb3IgaU9T
IDY0IG9uIGRlYnVnCi0vLyBidWlsZHMgYmVjYXVzZSBvZiBmbGFraW5lc3MuCi0jaWYgIShkZWZp
bmVkKFdFQlJUQ19JT1MpICYmIGRlZmluZWQoV0VCUlRDX0FSQ0hfNjRfQklUUykgJiYgIWRlZmlu
ZWQoTkRFQlVHKSkKLSNkZWZpbmUgTUFZQkVfQmFzaWNUd29XYXlBdWRpb1ZpZGVvUnRwU2VuZGVy
c0FuZFJlY2VpdmVycyBcCi0gIEJhc2ljVHdvV2F5QXVkaW9WaWRlb1J0cFNlbmRlcnNBbmRSZWNl
aXZlcnMKLSNkZWZpbmUgTUFZQkVfQmFzaWNUd29XYXlBdWRpb1ZpZGVvU3J0cFNlbmRlcnNBbmRS
ZWNlaXZlcnMgXAotICBCYXNpY1R3b1dheUF1ZGlvVmlkZW9TcnRwU2VuZGVyc0FuZFJlY2VpdmVy
cwotI2RlZmluZSBNQVlCRV9TcnRwU2VuZGVyc0FuZFJlY2VpdmVyc1dpdGhNaXNtYXRjaGluZ0tl
eXMgXAotICBTcnRwU2VuZGVyc0FuZFJlY2VpdmVyc1dpdGhNaXNtYXRjaGluZ0tleXMKLSNkZWZp
bmUgTUFZQkVfT25lU2lkZVNydHBTZW5kZXJBbmRSZWNlaXZlciBPbmVTaWRlU3J0cFNlbmRlckFu
ZFJlY2VpdmVyCi0jZGVmaW5lIE1BWUJFX0Z1bGxUd29XYXlBdWRpb1ZpZGVvU3J0cFNlbmRlcnNB
bmRSZWNlaXZlcnMgXAotICBGdWxsVHdvV2F5QXVkaW9WaWRlb1NydHBTZW5kZXJzQW5kUmVjZWl2
ZXJzCi0jZWxzZQotI2RlZmluZSBNQVlCRV9CYXNpY1R3b1dheUF1ZGlvVmlkZW9SdHBTZW5kZXJz
QW5kUmVjZWl2ZXJzIFwKLSAgRElTQUJMRURfQmFzaWNUd29XYXlBdWRpb1ZpZGVvUnRwU2VuZGVy
c0FuZFJlY2VpdmVycwotI2RlZmluZSBNQVlCRV9CYXNpY1R3b1dheUF1ZGlvVmlkZW9TcnRwU2Vu
ZGVyc0FuZFJlY2VpdmVycyBcCi0gIERJU0FCTEVEX0Jhc2ljVHdvV2F5QXVkaW9WaWRlb1NydHBT
ZW5kZXJzQW5kUmVjZWl2ZXJzCi0jZGVmaW5lIE1BWUJFX1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJz
V2l0aE1pc21hdGNoaW5nS2V5cyBcCi0gIERJU0FCTEVEX1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJz
V2l0aE1pc21hdGNoaW5nS2V5cwotI2RlZmluZSBNQVlCRV9PbmVTaWRlU3J0cFNlbmRlckFuZFJl
Y2VpdmVyIERJU0FCTEVEX09uZVNpZGVTcnRwU2VuZGVyQW5kUmVjZWl2ZXIKLSNkZWZpbmUgTUFZ
QkVfRnVsbFR3b1dheUF1ZGlvVmlkZW9TcnRwU2VuZGVyc0FuZFJlY2VpdmVycyBcCi0gIERJU0FC
TEVEX0Z1bGxUd29XYXlBdWRpb1ZpZGVvU3J0cFNlbmRlcnNBbmRSZWNlaXZlcnMKLSNlbmRpZgot
Ci0vLyBFbmQtdG8tZW5kIHRlc3Qgd2l0aCB0d28gcGFpcnMgb2YgUlRQIHNlbmRlcnMgYW5kIHJl
Y2VpdmVycywgZm9yIGF1ZGlvIGFuZAotLy8gdmlkZW8uCi0vLwotLy8gVXNlcyBtdXhlZCBSVENQ
LCBhbmQgbWluaW1hbCBwYXJhbWV0ZXJzIHdpdGggaGFyZC1jb2RlZCBjb25maWdzIHRoYXQgYXJl
Ci0vLyBrbm93biB0byB3b3JrLgotVEVTVF9GKE9ydGNGYWN0b3J5SW50ZWdyYXRpb25UZXN0LAot
ICAgICAgIE1BWUJFX0Jhc2ljVHdvV2F5QXVkaW9WaWRlb1J0cFNlbmRlcnNBbmRSZWNlaXZlcnMp
IHsKLSAgYXV0byB1ZHBfdHJhbnNwb3J0cyA9IENyZWF0ZUFuZENvbm5lY3RVZHBUcmFuc3BvcnRQ
YWlyKCk7Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydHMgPQotICAgICAgQ3JlYXRlUnRwVHJhbnNwb3J0
UGFpcihNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSwgdWRwX3RyYW5zcG9ydHMpOwotICBib29sIGV4
cGVjdF9zdWNjZXNzID0gdHJ1ZTsKLSAgQmFzaWNUd29XYXlSdHBTZW5kZXJzQW5kUmVjZWl2ZXJz
VGVzdChzdGQ6Om1vdmUocnRwX3RyYW5zcG9ydHMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdF9zdWNjZXNzKTsKLX0KLQotVEVTVF9GKE9ydGNGYWN0b3J5
SW50ZWdyYXRpb25UZXN0LAotICAgICAgIE1BWUJFX0Jhc2ljVHdvV2F5QXVkaW9WaWRlb1NydHBT
ZW5kZXJzQW5kUmVjZWl2ZXJzKSB7Ci0gIGF1dG8gdWRwX3RyYW5zcG9ydHMgPSBDcmVhdGVBbmRD
b25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwotICBhdXRvIHNydHBfdHJhbnNwb3J0cyA9IENyZWF0
ZVNydHBUcmFuc3BvcnRQYWlyQW5kU2V0S2V5cygKLSAgICAgIE1ha2VSdGNwTXV4UGFyYW1ldGVy
cygpLCB1ZHBfdHJhbnNwb3J0cyk7Ci0gIGJvb2wgZXhwZWN0X3N1Y2Nlc3MgPSB0cnVlOwotICBC
YXNpY1R3b1dheVJ0cFNlbmRlcnNBbmRSZWNlaXZlcnNUZXN0KHN0ZDo6bW92ZShzcnRwX3RyYW5z
cG9ydHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9z
dWNjZXNzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgcGFja2V0cyBjYW5ub3QgYmUgZGVjb2Rl
ZCBpZiB0aGUga2V5cyBhcmUgbWlzbWF0Y2hlZC4KLS8vIFRPRE8od2VicnRjOjkxODQpOiBEaXNh
YmxlZCBiZWNhdXNlIHRoaXMgdGVzdCBpcyBmbGFreS4KLVRFU1RfRihPcnRjRmFjdG9yeUludGVn
cmF0aW9uVGVzdCwKLSAgICAgICBNQVlCRV9TcnRwU2VuZGVyc0FuZFJlY2VpdmVyc1dpdGhNaXNt
YXRjaGluZ0tleXMpIHsKLSAgYXV0byB1ZHBfdHJhbnNwb3J0cyA9IENyZWF0ZUFuZENvbm5lY3RV
ZHBUcmFuc3BvcnRQYWlyKCk7Ci0gIGF1dG8gc3J0cF90cmFuc3BvcnRzID0gQ3JlYXRlU3J0cFRy
YW5zcG9ydFBhaXJBbmRTZXRNaXNtYXRjaGluZ0tleXMoCi0gICAgICBNYWtlUnRjcE11eFBhcmFt
ZXRlcnMoKSwgdWRwX3RyYW5zcG9ydHMpOwotICBib29sIGV4cGVjdF9zdWNjZXNzID0gZmFsc2U7
Ci0gIEJhc2ljVHdvV2F5UnRwU2VuZGVyc0FuZFJlY2VpdmVyc1Rlc3Qoc3RkOjptb3ZlKHNydHBf
dHJhbnNwb3J0cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0X3N1Y2Nlc3MpOwotICAvLyBObyBmcmFtZXMgYXJlIGV4cGVjdGVkIHRvIGJlIGRlY29kZWQu
Ci0gIEVYUEVDVF9UUlVFKHJlY2VpdmVkX2F1ZGlvX2ZyYW1lczFfID09IDAgJiYgcmVjZWl2ZWRf
YXVkaW9fZnJhbWVzMl8gPT0gMCAmJgotICAgICAgICAgICAgICByZW5kZXJlZF92aWRlb19mcmFt
ZXMxXyA9PSAwICYmIHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczJfID09IDApOwotfQotCi0vLyBUZXN0
cyB0aGF0IHRoZSBmcmFtZXMgY2Fubm90IGJlIGRlY29kZWQgaWYgb25seSBvbmUgc2lkZSB1c2Vz
IFNSVFAuCi1URVNUX0YoT3J0Y0ZhY3RvcnlJbnRlZ3JhdGlvblRlc3QsIE1BWUJFX09uZVNpZGVT
cnRwU2VuZGVyQW5kUmVjZWl2ZXIpIHsKLSAgYXV0byBydGNwX3BhcmFtZXRlcnMgPSBNYWtlUnRj
cE11eFBhcmFtZXRlcnMoKTsKLSAgYXV0byB1ZHBfdHJhbnNwb3J0cyA9IENyZWF0ZUFuZENvbm5l
Y3RVZHBUcmFuc3BvcnRQYWlyKCk7Ci0gIGF1dG8gcnRjcF91ZHBfdHJhbnNwb3J0cyA9IFVkcFRy
YW5zcG9ydFBhaXIoKTsKLSAgYXV0byB0cmFuc3BvcnRfY29udHJvbGxlcnMgPSBSdHBUcmFuc3Bv
cnRDb250cm9sbGVyUGFpcigpOwotICBhdXRvIHRyYW5zcG9ydF9yZXN1bHQxID0gb3J0Y19mYWN0
b3J5MV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIHJ0Y3BfcGFyYW1ldGVycywgdWRwX3Ry
YW5zcG9ydHMuZmlyc3QuZ2V0KCksCi0gICAgICBydGNwX3VkcF90cmFuc3BvcnRzLmZpcnN0Lmdl
dCgpLCB0cmFuc3BvcnRfY29udHJvbGxlcnMuZmlyc3QuZ2V0KCkpOwotICBhdXRvIHRyYW5zcG9y
dF9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVNydHBUcmFuc3BvcnQoCi0gICAgICBy
dGNwX3BhcmFtZXRlcnMsIHVkcF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSwKLSAgICAgIHJ0Y3Bf
dWRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpLCB0cmFuc3BvcnRfY29udHJvbGxlcnMuc2Vjb25k
LmdldCgpKTsKLQotICBhdXRvIHJ0cF90cmFuc3BvcnQgPSB0cmFuc3BvcnRfcmVzdWx0MS5Nb3Zl
VmFsdWUoKTsKLSAgYXV0byBzcnRwX3RyYW5zcG9ydCA9IHRyYW5zcG9ydF9yZXN1bHQyLk1vdmVW
YWx1ZSgpOwotICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydC0+U2V0U3J0cFNlbmRLZXkoa1Rl
c3RDcnlwdG9QYXJhbXMxKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUoc3J0cF90cmFuc3BvcnQtPlNl
dFNydHBSZWNlaXZlS2V5KGtUZXN0Q3J5cHRvUGFyYW1zMikub2soKSk7Ci0gIGJvb2wgZXhwZWN0
X3N1Y2Nlc3MgPSBmYWxzZTsKLSAgQmFzaWNUd29XYXlSdHBTZW5kZXJzQW5kUmVjZWl2ZXJzVGVz
dCgKLSAgICAgIHtzdGQ6Om1vdmUocnRwX3RyYW5zcG9ydCksIHN0ZDo6bW92ZShzcnRwX3RyYW5z
cG9ydCl9LCBleHBlY3Rfc3VjY2Vzcyk7Ci0KLSAgLy8gVGhlIFNSVFAgc2lkZSBpcyBub3QgZXhw
ZWN0ZWQgdG8gZGVjb2RlIGFueSBhdWRpbyBvciB2aWRlbyBmcmFtZXMuCi0gIC8vIFRoZSBSVFAg
c2lkZSBpcyBub3QgZXhwZWN0ZWQgdG8gZGVjb2RlIGFueSB2aWRlbyBmcmFtZXMgd2hpbGUgaXQg
aXMKLSAgLy8gcG9zc2libGUgdGhhdCB0aGUgZW5jcnlwdGVkIGF1ZGlvIGZyYW1lcyBjYW4gYmUg
YWNjaWRlbnRhbGx5IGRlY29kZWQgd2hpY2gKLSAgLy8gaXMgd2h5IHJlY2VpdmVkX2F1ZGlvX2Zy
YW1lczFfIGlzIG5vdCB2YWxpZGF0ZWQuCi0gIEVYUEVDVF9UUlVFKHJlY2VpdmVkX2F1ZGlvX2Zy
YW1lczJfID09IDAgJiYgcmVuZGVyZWRfdmlkZW9fZnJhbWVzMV8gPT0gMCAmJgotICAgICAgICAg
ICAgICByZW5kZXJlZF92aWRlb19mcmFtZXMyXyA9PSAwKTsKLX0KLQotLy8gRW5kLXRvLWVuZCB0
ZXN0IHdpdGggdHdvIHBhaXJzIG9mIFJUUCBzZW5kZXJzIGFuZCByZWNlaXZlcnMsIGZvciBhdWRp
byBhbmQKLS8vIHZpZGVvLiBVbmxpa2UgdGhlIHRlc3QgYWJvdmUsIHRoaXMgYXR0ZW1wdHMgdG8g
bWFrZSB0aGUgcGFyYW1ldGVycyBhcwotLy8gY29tcGxleCBhcyBwb3NzaWJsZS4gVGhlIHNlbmRl
cnMgYW5kIHJlY2VpdmVycyB1c2UgdGhlIFNSVFAgdHJhbnNwb3J0IHdpdGgKLS8vIGRpZmZlcmVu
dCBrZXlzLgotLy8KLS8vIFVzZXMgbm9uLW11eGVkIFJUQ1AsIHdpdGggc2VwYXJhdGUgYXVkaW8v
dmlkZW8gdHJhbnNwb3J0cywgYW5kIGEgZnVsbCBzZXQgb2YKLS8vIHBhcmFtZXRlcnMsIGFzIHdv
dWxkIG5vcm1hbGx5IGJlIHVzZWQgaW4gYSBQZWVyQ29ubmVjdGlvbi4KLS8vCi0vLyBUT0RPKGRl
YWRiZWVmKTogVXBkYXRlIHRoaXMgdGVzdCBhcyBtb3JlIGF1ZGlvL3ZpZGVvIGZlYXR1cmVzIGJl
Y29tZQotLy8gc3VwcG9ydGVkLgotVEVTVF9GKE9ydGNGYWN0b3J5SW50ZWdyYXRpb25UZXN0LAot
ICAgICAgIE1BWUJFX0Z1bGxUd29XYXlBdWRpb1ZpZGVvU3J0cFNlbmRlcnNBbmRSZWNlaXZlcnMp
IHsKLSAgLy8gV2Ugd2FudCBmb3VyIHBhaXJzIG9mIFVEUCB0cmFuc3BvcnRzIGZvciB0aGlzIHRl
c3QsIGZvciBhdWRpby92aWRlbyBhbmQKLSAgLy8gUlRQL1JUQ1AuCi0gIGF1dG8gYXVkaW9fcnRw
X3VkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5zcG9ydFBhaXIoKTsKLSAg
YXV0byBhdWRpb19ydGNwX3VkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5z
cG9ydFBhaXIoKTsKLSAgYXV0byB2aWRlb19ydHBfdWRwX3RyYW5zcG9ydHMgPSBDcmVhdGVBbmRD
b25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwotICBhdXRvIHZpZGVvX3J0Y3BfdWRwX3RyYW5zcG9y
dHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwotCi0gIC8vIFNpbmNlIHdl
IGhhdmUgbXVsdGlwbGUgUlRQIHRyYW5zcG9ydHMgb24gZWFjaCBzaWRlLCB3ZSBuZWVkIGFuIFJU
UAotICAvLyB0cmFuc3BvcnQgY29udHJvbGxlci4KLSAgYXV0byB0cmFuc3BvcnRfY29udHJvbGxl
cnMgPSBDcmVhdGVSdHBUcmFuc3BvcnRDb250cm9sbGVyUGFpcigpOwotCi0gIFJ0cFRyYW5zcG9y
dFBhcmFtZXRlcnMgYXVkaW9fcnRwX3RyYW5zcG9ydF9wYXJhbWV0ZXJzOwotICBhdWRpb19ydHBf
dHJhbnNwb3J0X3BhcmFtZXRlcnMucnRjcC5tdXggPSBmYWxzZTsKLSAgYXV0byBhdWRpb19zcnRw
X3RyYW5zcG9ydHMgPSBDcmVhdGVTcnRwVHJhbnNwb3J0UGFpcigKLSAgICAgIGF1ZGlvX3J0cF90
cmFuc3BvcnRfcGFyYW1ldGVycywgYXVkaW9fcnRwX3VkcF90cmFuc3BvcnRzLAotICAgICAgYXVk
aW9fcnRjcF91ZHBfdHJhbnNwb3J0cywgdHJhbnNwb3J0X2NvbnRyb2xsZXJzKTsKLQotICBSdHBU
cmFuc3BvcnRQYXJhbWV0ZXJzIHZpZGVvX3J0cF90cmFuc3BvcnRfcGFyYW1ldGVyczsKLSAgdmlk
ZW9fcnRwX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLnJ0Y3AubXV4ID0gZmFsc2U7Ci0gIHZpZGVvX3J0
cF90cmFuc3BvcnRfcGFyYW1ldGVycy5ydGNwLnJlZHVjZWRfc2l6ZSA9IHRydWU7Ci0gIGF1dG8g
dmlkZW9fc3J0cF90cmFuc3BvcnRzID0gQ3JlYXRlU3J0cFRyYW5zcG9ydFBhaXIoCi0gICAgICB2
aWRlb19ydHBfdHJhbnNwb3J0X3BhcmFtZXRlcnMsIHZpZGVvX3J0cF91ZHBfdHJhbnNwb3J0cywK
LSAgICAgIHZpZGVvX3J0Y3BfdWRwX3RyYW5zcG9ydHMsIHRyYW5zcG9ydF9jb250cm9sbGVycyk7
Ci0KLSAgLy8gU2V0IGtleXMgZm9yIFNSVFAgdHJhbnNwb3J0cy4KLSAgYXVkaW9fc3J0cF90cmFu
c3BvcnRzLmZpcnN0LT5TZXRTcnRwU2VuZEtleShrVGVzdENyeXB0b1BhcmFtczEpOwotICBhdWRp
b19zcnRwX3RyYW5zcG9ydHMuZmlyc3QtPlNldFNydHBSZWNlaXZlS2V5KGtUZXN0Q3J5cHRvUGFy
YW1zMik7Ci0gIHZpZGVvX3NydHBfdHJhbnNwb3J0cy5maXJzdC0+U2V0U3J0cFNlbmRLZXkoa1Rl
c3RDcnlwdG9QYXJhbXMzKTsKLSAgdmlkZW9fc3J0cF90cmFuc3BvcnRzLmZpcnN0LT5TZXRTcnRw
UmVjZWl2ZUtleShrVGVzdENyeXB0b1BhcmFtczQpOwotCi0gIGF1ZGlvX3NydHBfdHJhbnNwb3J0
cy5zZWNvbmQtPlNldFNydHBTZW5kS2V5KGtUZXN0Q3J5cHRvUGFyYW1zMik7Ci0gIGF1ZGlvX3Ny
dHBfdHJhbnNwb3J0cy5zZWNvbmQtPlNldFNydHBSZWNlaXZlS2V5KGtUZXN0Q3J5cHRvUGFyYW1z
MSk7Ci0gIHZpZGVvX3NydHBfdHJhbnNwb3J0cy5zZWNvbmQtPlNldFNydHBTZW5kS2V5KGtUZXN0
Q3J5cHRvUGFyYW1zNCk7Ci0gIHZpZGVvX3NydHBfdHJhbnNwb3J0cy5zZWNvbmQtPlNldFNydHBS
ZWNlaXZlS2V5KGtUZXN0Q3J5cHRvUGFyYW1zMyk7Ci0KLSAgLy8gQ3JlYXRlIGFsbCB0aGUgc2Vu
ZGVycyBhbmQgcmVjZWl2ZXJzIChmb3VyIHBlciBlbmRwb2ludCkuCi0gIGF1dG8gYXVkaW9fc2Vu
ZGVyX3Jlc3VsdDEgPSBvcnRjX2ZhY3RvcnkxXy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3Jp
Y2tldDo6TUVESUFfVFlQRV9BVURJTywgYXVkaW9fc3J0cF90cmFuc3BvcnRzLmZpcnN0LmdldCgp
KTsKLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVS
dHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb19zcnRwX3Ry
YW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDEgPSBv
cnRjX2ZhY3RvcnkxXy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPLCBhdWRpb19zcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICBhdXRvIHZp
ZGVvX3JlY2VpdmVyX3Jlc3VsdDEgPSBvcnRjX2ZhY3RvcnkxXy0+Q3JlYXRlUnRwUmVjZWl2ZXIo
Ci0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb19zcnRwX3RyYW5zcG9ydHMu
Zmlyc3QuZ2V0KCkpOwotICBBU1NFUlRfVFJVRShhdWRpb19zZW5kZXJfcmVzdWx0MS5vaygpKTsK
LSAgQVNTRVJUX1RSVUUodmlkZW9fc2VuZGVyX3Jlc3VsdDEub2soKSk7Ci0gIEFTU0VSVF9UUlVF
KGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDEub2soKSk7Ci0gIEFTU0VSVF9UUlVFKHZpZGVvX3JlY2Vp
dmVyX3Jlc3VsdDEub2soKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyMSA9IGF1ZGlvX3NlbmRlcl9y
ZXN1bHQxLk1vdmVWYWx1ZSgpOwotICBhdXRvIHZpZGVvX3NlbmRlcjEgPSB2aWRlb19zZW5kZXJf
cmVzdWx0MS5Nb3ZlVmFsdWUoKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlcjEgPSBhdWRpb19yZWNl
aXZlcl9yZXN1bHQxLk1vdmVWYWx1ZSgpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyMSA9IHZpZGVv
X3JlY2VpdmVyX3Jlc3VsdDEuTW92ZVZhbHVlKCk7Ci0KLSAgYXV0byBhdWRpb19zZW5kZXJfcmVz
dWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpN
RURJQV9UWVBFX0FVRElPLCBhdWRpb19zcnRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpKTsKLSAg
YXV0byB2aWRlb19zZW5kZXJfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBTZW5k
ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb19zcnRwX3RyYW5zcG9y
dHMuc2Vjb25kLmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQyID0gb3J0Y19m
YWN0b3J5Ml8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9B
VURJTywgYXVkaW9fc3J0cF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9f
cmVjZWl2ZXJfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAg
ICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3NydHBfdHJhbnNwb3J0cy5zZWNv
bmQuZ2V0KCkpOwotICBBU1NFUlRfVFJVRShhdWRpb19zZW5kZXJfcmVzdWx0Mi5vaygpKTsKLSAg
QVNTRVJUX1RSVUUodmlkZW9fc2VuZGVyX3Jlc3VsdDIub2soKSk7Ci0gIEFTU0VSVF9UUlVFKGF1
ZGlvX3JlY2VpdmVyX3Jlc3VsdDIub2soKSk7Ci0gIEFTU0VSVF9UUlVFKHZpZGVvX3JlY2VpdmVy
X3Jlc3VsdDIub2soKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyMiA9IGF1ZGlvX3NlbmRlcl9yZXN1
bHQyLk1vdmVWYWx1ZSgpOwotICBhdXRvIHZpZGVvX3NlbmRlcjIgPSB2aWRlb19zZW5kZXJfcmVz
dWx0Mi5Nb3ZlVmFsdWUoKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlcjIgPSBhdWRpb19yZWNlaXZl
cl9yZXN1bHQyLk1vdmVWYWx1ZSgpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyMiA9IHZpZGVvX3Jl
Y2VpdmVyX3Jlc3VsdDIuTW92ZVZhbHVlKCk7Ci0KLSAgUlRDRXJyb3IgZXJyb3IgPSBhdWRpb19z
ZW5kZXIxLT5TZXRUcmFjaygKLSAgICAgIENyZWF0ZUxvY2FsQXVkaW9UcmFjaygiYXVkaW8iLCBv
cnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwotICBFWFBFQ1RfVFJVRShlcnJvci5vaygpKTsKLSAgZXJy
b3IgPSB2aWRlb19zZW5kZXIxLT5TZXRUcmFjaygKLSAgICAgIENyZWF0ZUxvY2FsVmlkZW9UcmFj
a0FuZEZha2VTb3VyY2UoInZpZGVvIiwgb3J0Y19mYWN0b3J5MV8uZ2V0KCkpKTsKLSAgRVhQRUNU
X1RSVUUoZXJyb3Iub2soKSk7Ci0gIGVycm9yID0gYXVkaW9fc2VuZGVyMi0+U2V0VHJhY2soCi0g
ICAgICBDcmVhdGVMb2NhbEF1ZGlvVHJhY2soImF1ZGlvIiwgb3J0Y19mYWN0b3J5Ml8uZ2V0KCkp
KTsKLSAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0gIGVycm9yID0gdmlkZW9fc2VuZGVyMi0+
U2V0VHJhY2soCi0gICAgICBDcmVhdGVMb2NhbFZpZGVvVHJhY2tBbmRGYWtlU291cmNlKCJ2aWRl
byIsIG9ydGNfZmFjdG9yeTJfLmdldCgpKSk7Ci0gIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwot
Ci0gIC8vIFVzZSBkaWZmZXJlbnQgY29kZWNzIGluIGRpZmZlcmVudCBkaXJlY3Rpb25zIGZvciBl
eHRyYSBjaGFsbGVuZ2UuCi0gIFJ0cFBhcmFtZXRlcnMgb3B1c19zZW5kX3BhcmFtZXRlcnMgPSBN
YWtlRnVsbE9wdXNQYXJhbWV0ZXJzKCk7Ci0gIFJ0cFBhcmFtZXRlcnMgaXNhY19zZW5kX3BhcmFt
ZXRlcnMgPSBNYWtlRnVsbElzYWNQYXJhbWV0ZXJzKCk7Ci0gIFJ0cFBhcmFtZXRlcnMgdnA4X3Nl
bmRfcGFyYW1ldGVycyA9IE1ha2VGdWxsVnA4UGFyYW1ldGVycygpOwotICBSdHBQYXJhbWV0ZXJz
IHZwOV9zZW5kX3BhcmFtZXRlcnMgPSBNYWtlRnVsbFZwOVBhcmFtZXRlcnMoKTsKLQotICAvLyBS
ZW1vdmUgInBheWxvYWRfdHlwZSIgZnJvbSByZWNlaXZlIHBhcmFtZXRlcnMuIFJlY2VpdmVyIHdp
bGwgbmVlZCB0bwotICAvLyBkaXNjZXJuIHRoZSBwYXlsb2FkIHR5cGUgZnJvbSBwYWNrZXRzIHJl
Y2VpdmVkLgotICBSdHBQYXJhbWV0ZXJzIG9wdXNfcmVjZWl2ZV9wYXJhbWV0ZXJzID0gb3B1c19z
ZW5kX3BhcmFtZXRlcnM7Ci0gIFJ0cFBhcmFtZXRlcnMgaXNhY19yZWNlaXZlX3BhcmFtZXRlcnMg
PSBpc2FjX3NlbmRfcGFyYW1ldGVyczsKLSAgUnRwUGFyYW1ldGVycyB2cDhfcmVjZWl2ZV9wYXJh
bWV0ZXJzID0gdnA4X3NlbmRfcGFyYW1ldGVyczsKLSAgUnRwUGFyYW1ldGVycyB2cDlfcmVjZWl2
ZV9wYXJhbWV0ZXJzID0gdnA5X3NlbmRfcGFyYW1ldGVyczsKLSAgb3B1c19yZWNlaXZlX3BhcmFt
ZXRlcnMuZW5jb2RpbmdzWzBdLmNvZGVjX3BheWxvYWRfdHlwZS5yZXNldCgpOwotICBpc2FjX3Jl
Y2VpdmVfcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uY29kZWNfcGF5bG9hZF90eXBlLnJlc2V0KCk7
Ci0gIHZwOF9yZWNlaXZlX3BhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLmNvZGVjX3BheWxvYWRfdHlw
ZS5yZXNldCgpOwotICB2cDlfcmVjZWl2ZV9wYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5jb2RlY19w
YXlsb2FkX3R5cGUucmVzZXQoKTsKLQotICAvLyBDb25maWd1cmUgdGhlIHNlbmRlcnMnIGFuZCBy
ZWNlaXZlcnMnIHBhcmFtZXRlcnMuCi0gIC8vCi0gIC8vIE5vdGU6IEludGVudGlvbmFsbHksIHRo
ZSB0b3AgY29kZWMgaW4gdGhlIHJlY2VpdmUgcGFyYW1ldGVycyBkb2VzIG5vdAotICAvLyBtYXRj
aCB0aGUgY29kZWMgc2VudCBieSB0aGUgb3RoZXIgc2lkZS4gSWYgIlJlY2VpdmUiIGlzIGNhbGxl
ZCB3aXRoIGEgbGlzdAotICAvLyBvZiBjb2RlY3MsIHRoZSByZWNlaXZlciBzaG91bGQgYmUgcHJl
cGFyZWQgdG8gcmVjZWl2ZSBhbnkgb2YgdGhlbSwgbm90Ci0gIC8vIGp1c3QgdGhlIG9uZSBvbiB0
b3AuCi0gIEVYUEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVyMS0+UmVjZWl2ZShvcHVzX3JlY2VpdmVf
cGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3JlY2VpdmVyMS0+UmVjZWl2
ZSh2cDhfcmVjZWl2ZV9wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVj
ZWl2ZXIyLT5SZWNlaXZlKGlzYWNfcmVjZWl2ZV9wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNU
X1RSVUUodmlkZW9fcmVjZWl2ZXIyLT5SZWNlaXZlKHZwOV9yZWNlaXZlX3BhcmFtZXRlcnMpLm9r
KCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXIxLT5TZW5kKG9wdXNfc2VuZF9wYXJhbWV0
ZXJzKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyMS0+U2VuZCh2cDhfc2VuZF9w
YXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyMi0+U2VuZChpc2Fj
X3NlbmRfcGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlcjItPlNl
bmQodnA5X3NlbmRfcGFyYW1ldGVycykub2soKSk7Ci0KLSAgRmFrZVZpZGVvVHJhY2tSZW5kZXJl
ciBmYWtlX3ZpZGVvX3JlbmRlcmVyMSgKLSAgICAgIHN0YXRpY19jYXN0PFZpZGVvVHJhY2tJbnRl
cmZhY2UqPih2aWRlb19yZWNlaXZlcjEtPkdldFRyYWNrKCkuZ2V0KCkpKTsKLSAgRmFrZVZpZGVv
VHJhY2tSZW5kZXJlciBmYWtlX3ZpZGVvX3JlbmRlcmVyMigKLSAgICAgIHN0YXRpY19jYXN0PFZp
ZGVvVHJhY2tJbnRlcmZhY2UqPih2aWRlb19yZWNlaXZlcjItPkdldFRyYWNrKCkuZ2V0KCkpKTsK
LQotICAvLyBTZW5kZXJzIGFuZCByZWNlaXZlcnMgYXJlIGNvbm5lY3RlZCBhbmQgY29uZmlndXJl
ZDsgYXVkaW8gYW5kIHZpZGVvIGZyYW1lcwotICAvLyBzaG91bGQgYmUgYWJsZSB0byBmbG93IGF0
IHRoaXMgcG9pbnQuCi0gIEVYUEVDVF9UUlVFX1dBSVQoCi0gICAgICBmYWtlX2F1ZGlvX2NhcHR1
cmVfbW9kdWxlMV8tPmZyYW1lc19yZWNlaXZlZCgpID4ga0RlZmF1bHROdW1GcmFtZXMgJiYKLSAg
ICAgICAgICBmYWtlX3ZpZGVvX3JlbmRlcmVyMS5udW1fcmVuZGVyZWRfZnJhbWVzKCkgPiBrRGVm
YXVsdE51bUZyYW1lcyAmJgotICAgICAgICAgIGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUyXy0+
ZnJhbWVzX3JlY2VpdmVkKCkgPiBrRGVmYXVsdE51bUZyYW1lcyAmJgotICAgICAgICAgIGZha2Vf
dmlkZW9fcmVuZGVyZXIyLm51bV9yZW5kZXJlZF9mcmFtZXMoKSA+IGtEZWZhdWx0TnVtRnJhbWVz
LAotICAgICAga0RlZmF1bHRUaW1lb3V0KTsKLX0KLQotLy8gVE9ETyhkZWFkYmVlZik6IEVuZC10
by1lbmQgdGVzdCBmb3IgbXVsdGlwbGUgc2VuZGVycy9yZWNlaXZlcnMgb2YgdGhlIHNhbWUKLS8v
IG1lZGlhIHR5cGUsIG9uY2UgdGhhdCdzIHN1cHBvcnRlZC4gQ3VycmVudGx5LCBpdCBpcyBub3Qg
YmVjYXVzZSB0aGUKLS8vIEJhc2VDaGFubmVsIG1vZGVsIHJlbGllcyBvbiB0aGVyZSBiZWluZyBh
IHNpbmdsZSBWb2ljZUNoYW5uZWwgYW5kCi0vLyBWaWRlb0NoYW5uZWwsIGFuZCB0aGVzZSBvbmx5
IHN1cHBvcnQgYSBzaW5nbGUgc2V0IG9mIGNvZGVjcy9ldGMuIHBlcgotLy8gc2VuZC9yZWNlaXZl
IGRpcmVjdGlvbi4KLQotLy8gVE9ETyhkZWFkYmVlZik6IEVuZC10by1lbmQgdGVzdCBmb3Igc2lt
dWxjYXN0LCBvbmNlIHRoYXQncyBzdXBwb3J0ZWQgYnkgdGhpcwotLy8gQVBJLgotCi0jZW5kaWYg
IC8vIGlmICFkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpCi0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L29ydGMvb3J0Y2ZhY3RvcnlfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNmYWN0b3J5X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0MGFmYmQzMjhiNmRmZTE3NmE2OGUxMWIyMzIzYzg0ZTMzNTkz
ODU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y2ZhY3RvcnlfdW5p
dHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0g
Ki8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVp
bHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9m
YWtlbWVkaWFlbmdpbmUuaCIKLSNpbmNsdWRlICJvcnRjL29ydGNmYWN0b3J5LmgiCi0jaW5jbHVk
ZSAib3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5oIgotI2luY2x1ZGUgInAycC9iYXNlL2Zha2VwYWNr
ZXR0cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9mYWtlbmV0d29yay5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdmlydHVhbHNvY2tldHNl
cnZlci5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVGhpcyB0ZXN0IHVzZXMgYSB2aXJ0
dWFsIG5ldHdvcmsgYW5kIGZha2UgbWVkaWEgZW5naW5lLCBpbiBvcmRlciB0byB0ZXN0IHRoZQot
Ly8gT3J0Y0ZhY3RvcnkgYXQgb25seSBhbiBBUEkgbGV2ZWwuIEFueSBlbmQtdG8tZW5kIHRlc3Qg
c2hvdWxkIGdvIGluCi0vLyBvcnRjZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MgaW5zdGVhZC4K
LWNsYXNzIE9ydGNGYWN0b3J5VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6
Ci0gIE9ydGNGYWN0b3J5VGVzdCgpCi0gICAgICA6IHRocmVhZF8oJnZpcnR1YWxfc29ja2V0X3Nl
cnZlcl8pLAotICAgICAgICBmYWtlX3BhY2tldF90cmFuc3BvcnRfKCJmYWtlIHRyYW5zcG9ydCIp
IHsKLSAgICBvcnRjX2ZhY3RvcnlfID0KLSAgICAgICAgT3J0Y0ZhY3Rvcnk6OkNyZWF0ZSgmdGhy
ZWFkXywgbnVsbHB0ciwgJmZha2VfbmV0d29ya19tYW5hZ2VyXywgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBjcmlja2V0OjpGYWtlTWVkaWFFbmdpbmUoKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZh
Y3RvcnkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVCdWlsdGluQXVkaW9E
ZWNvZGVyRmFjdG9yeSgpKQotICAgICAgICAgICAgLk1vdmVWYWx1ZSgpOwotICB9Ci0KLSBwcm90
ZWN0ZWQ6Ci0gIC8vIFVzZXMgYSBzaW5nbGUgcHJlLW1hZGUgRmFrZVBhY2tldFRyYW5zcG9ydCwg
c28gc2hvdWxkbid0IGJlIGNhbGxlZCB0d2ljZSBpbgotICAvLyB0aGUgc2FtZSB0ZXN0LgotICBz
dGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPgotICBDcmVhdGVSdHBUcmFuc3Bv
cnRXaXRoRmFrZVBhY2tldFRyYW5zcG9ydCgpIHsKLSAgICByZXR1cm4gb3J0Y19mYWN0b3J5Xwot
ICAgICAgICAtPkNyZWF0ZVJ0cFRyYW5zcG9ydChNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSwgJmZh
a2VfcGFja2V0X3RyYW5zcG9ydF8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsIG51bGxwdHIpCi0gICAgICAgIC5Nb3ZlVmFsdWUoKTsKLSAgfQotCi0gIHJ0Yzo6VmlydHVh
bFNvY2tldFNlcnZlciB2aXJ0dWFsX3NvY2tldF9zZXJ2ZXJfOwotICBydGM6OkF1dG9Tb2NrZXRT
ZXJ2ZXJUaHJlYWQgdGhyZWFkXzsKLSAgcnRjOjpGYWtlTmV0d29ya01hbmFnZXIgZmFrZV9uZXR3
b3JrX21hbmFnZXJfOwotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRfdHJh
bnNwb3J0XzsKLSAgc3RkOjp1bmlxdWVfcHRyPE9ydGNGYWN0b3J5SW50ZXJmYWNlPiBvcnRjX2Zh
Y3RvcnlfOwotfTsKLQotVEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgQ2FuQ3JlYXRlTXVsdGlwbGVS
dHBUcmFuc3BvcnRDb250cm9sbGVycykgewotICBhdXRvIGNvbnRyb2xsZXJfcmVzdWx0MSA9IG9y
dGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIoKTsKLSAgRVhQRUNUX1RS
VUUoY29udHJvbGxlcl9yZXN1bHQxLm9rKCkpOwotICBhdXRvIGNvbnRyb2xsZXJfcmVzdWx0MiA9
IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIoKTsKLSAgRVhQRUNU
X1RSVUUoY29udHJvbGxlcl9yZXN1bHQxLm9rKCkpOwotfQotCi0vLyBTaW1wbGUgdGVzdCBmb3Ig
dGhlIHN1Y2Nlc3NmdWwgY2FzZXMgb2YgQ3JlYXRlUnRwVHJhbnNwb3J0LgotVEVTVF9GKE9ydGNG
YWN0b3J5VGVzdCwgQ3JlYXRlUnRwVHJhbnNwb3J0V2l0aEFuZFdpdGhvdXRNdXgpIHsKLSAgcnRj
OjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0cCgicnRwIik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5z
cG9ydCBydGNwKCJydGNwIik7Ci0gIC8vIFdpdGggbXV4ZWQgUlRDUC4KLSAgUnRwVHJhbnNwb3J0
UGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCk7Ci0gIGF1dG8g
cmVzdWx0ID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydChwYXJhbWV0
ZXJzLCAmcnRwLCBudWxscHRyLCBudWxscHRyKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0Lm9rKCkp
OwotICByZXN1bHQuTW92ZVZhbHVlKCkucmVzZXQoKTsKLSAgLy8gV2l0aCBub24tbXV4ZWQgUlRD
UC4KLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IGZhbHNlOwotICByZXN1bHQgPSBvcnRjX2ZhY3Rv
cnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQocGFyYW1ldGVycywgJnJ0cCwgJnJ0Y3AsIG51bGxwdHIp
OwotICBFWFBFQ1RfVFJVRShyZXN1bHQub2soKSk7Ci19Ci0KLS8vIFNpbXBsZSB0ZXN0IGZvciB0
aGUgc3VjY2Vzc2Z1bCBjYXNlcyBvZiBDcmVhdGVTcnRwVHJhbnNwb3J0LgotVEVTVF9GKE9ydGNG
YWN0b3J5VGVzdCwgQ3JlYXRlU3J0cFRyYW5zcG9ydCkgewotICBydGM6OkZha2VQYWNrZXRUcmFu
c3BvcnQgcnRwKCJydHAiKTsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0Y3AoInJ0Y3Ai
KTsKLSAgLy8gV2l0aCBtdXhlZCBSVENQLgotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnMgPSBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKTsKLSAgYXV0byByZXN1bHQgPQotICAgICAg
b3J0Y19mYWN0b3J5Xy0+Q3JlYXRlU3J0cFRyYW5zcG9ydChwYXJhbWV0ZXJzLCAmcnRwLCBudWxs
cHRyLCBudWxscHRyKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0Lm9rKCkpOwotICByZXN1bHQuTW92
ZVZhbHVlKCkucmVzZXQoKTsKLSAgLy8gV2l0aCBub24tbXV4ZWQgUlRDUC4KLSAgcGFyYW1ldGVy
cy5ydGNwLm11eCA9IGZhbHNlOwotICByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVTcnRw
VHJhbnNwb3J0KHBhcmFtZXRlcnMsICZydHAsICZydGNwLCBudWxscHRyKTsKLSAgRVhQRUNUX1RS
VUUocmVzdWx0Lm9rKCkpOwotfQotCi0vLyBJZiBubyBDTkFNRSBpcyBwcm92aWRlZCwgb25lIHNo
b3VsZCBiZSBnZW5lcmF0ZWQgYW5kIHJldHVybmVkIGJ5Ci0vLyBHZXRSdHBQYXJhbWV0ZXJzLgot
VEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgQ3JlYXRlUnRwVHJhbnNwb3J0R2VuZXJhdGVzQ25hbWUp
IHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0cCgicnRwIik7Ci0gIGF1dG8gcmVzdWx0
ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KE1ha2VSdGNwTXV4UGFyYW1ldGVy
cygpLCAmcnRwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLCBudWxscHRyKTsKLSAgQVNTRVJUX1RSVUUocmVzdWx0Lm9rKCkpOwotICBF
WFBFQ1RfRkFMU0UocmVzdWx0LnZhbHVlKCktPkdldFBhcmFtZXRlcnMoKS5ydGNwLmNuYW1lLmVt
cHR5KCkpOwotfQotCi0vLyBFeHRlbnNpb24gb2YgdGhlIGFib3ZlIHRlc3Q7IG11bHRpcGxlIHRy
YW5zcG9ydHMgY3JlYXRlZCBieSB0aGUgc2FtZSBmYWN0b3J5Ci0vLyBzaG91bGQgdXNlIHRoZSBz
YW1lIGdlbmVyYXRlZCBDTkFNRS4KLVRFU1RfRihPcnRjRmFjdG9yeVRlc3QsIE11bHRpcGxlUnRw
VHJhbnNwb3J0c1VzZVNhbWVHZW5lcmF0ZWRDbmFtZSkgewotICBydGM6OkZha2VQYWNrZXRUcmFu
c3BvcnQgcGFja2V0X3RyYW5zcG9ydDEoIjEiKTsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0
IHBhY2tldF90cmFuc3BvcnQyKCIyIik7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1l
dGVycyA9IE1ha2VSdGNwTXV4UGFyYW1ldGVycygpOwotICAvLyBTYW5pdHkgY2hlY2suCi0gIEFT
U0VSVF9UUlVFKHBhcmFtZXRlcnMucnRjcC5jbmFtZS5lbXB0eSgpKTsKLSAgYXV0byByZXN1bHQg
PSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBwYXJhbWV0ZXJzLCAm
cGFja2V0X3RyYW5zcG9ydDEsIG51bGxwdHIsIG51bGxwdHIpOwotICBBU1NFUlRfVFJVRShyZXN1
bHQub2soKSk7Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydDEgPSByZXN1bHQuTW92ZVZhbHVlKCk7Ci0g
IHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydChwYXJhbWV0ZXJzLCAm
cGFja2V0X3RyYW5zcG9ydDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLCBudWxscHRyKTsKLSAgQVNTRVJUX1RSVUUocmVzdWx0Lm9rKCkpOwot
ICBhdXRvIHJ0cF90cmFuc3BvcnQyID0gcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBSdGNwUGFyYW1l
dGVycyBwYXJhbXMxID0gcnRwX3RyYW5zcG9ydDEtPkdldFBhcmFtZXRlcnMoKS5ydGNwOwotICBS
dGNwUGFyYW1ldGVycyBwYXJhbXMyID0gcnRwX3RyYW5zcG9ydDItPkdldFBhcmFtZXRlcnMoKS5y
dGNwOwotICBFWFBFQ1RfRkFMU0UocGFyYW1zMS5jbmFtZS5lbXB0eSgpKTsKLSAgRVhQRUNUX0VR
KHBhcmFtczEuY25hbWUsIHBhcmFtczIuY25hbWUpOwotfQotCi1URVNUX0YoT3J0Y0ZhY3RvcnlU
ZXN0LCBDcmVhdGVSdHBUcmFuc3BvcnRXaXRoTm9QYWNrZXRUcmFuc3BvcnQpIHsKLSAgYXV0byBy
ZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoTWFrZVJ0Y3BNdXhQYXJh
bWV0ZXJzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBl
OjpJTlZBTElEX1BBUkFNRVRFUiwgcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLX0KLQotLy8gSWYg
dGhlIHxtdXh8IG1lbWJlciBvZiB0aGUgUnRjcFBhcmFtZXRlcnMgaXMgZmFsc2UsIGJvdGggYW4g
UlRQIGFuZCBSVENQCi0vLyBwYWNrZXQgdHJhbnNwb3J0IGFyZSBuZWVkZWQuCi1URVNUX0YoT3J0
Y0ZhY3RvcnlUZXN0LCBDcmVhdGVSdHBUcmFuc3BvcnRXaXRoTWlzc2luZ1J0Y3BUcmFuc3BvcnQp
IHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0cCgicnRwIik7Ci0gIFJ0cFRyYW5zcG9y
dFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IGZhbHNlOwot
ICBhdXRvIHJlc3VsdCA9Ci0gICAgICBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQo
cGFyYW1ldGVycywgJnJ0cCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIEVYUEVDVF9FUShSVENFcnJv
clR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCByZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotfQotCi0v
LyBJZiB0aGUgfG11eHwgbWVtYmVyIG9mIHRoZSBSdGNwUGFyYW1ldGVycyBpcyB0cnVlLCBvbmx5
IGFuIFJUUCBwYWNrZXQKLS8vIHRyYW5zcG9ydCBpcyBuZWNlc3NhcnkuIFNvLCBwYXNzaW5nIGlu
IGFuIFJUQ1AgdHJhbnNwb3J0IGlzIG1vc3QgbGlrZWx5Ci0vLyBhbiBhY2NpZGVudCwgYW5kIHRo
dXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0
LCBDcmVhdGVSdHBUcmFuc3BvcnRXaXRoRXh0cmFuZW91c1J0Y3BUcmFuc3BvcnQpIHsKLSAgcnRj
OjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0cCgicnRwIik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5z
cG9ydCBydGNwKCJydGNwIik7Ci0gIGF1dG8gcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwVHJhbnNwb3J0KE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCAmcnRwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnRjcCwgbnVsbHB0cik7Ci0g
IEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCByZXN1bHQuZXJyb3Io
KS50eXBlKCkpOwotfQotCi0vLyBCYXNpYyB0ZXN0IHRoYXQgQ3JlYXRlVWRwVHJhbnNwb3J0IHdv
cmtzIHdpdGggQUZfSU5FVCBhbmQgQUZfSU5FVDYuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBD
cmVhdGVVZHBUcmFuc3BvcnQpIHsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVVZHBUcmFuc3BvcnQoQUZfSU5FVCk7Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdC5vaygpKTsKLSAg
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlVWRwVHJhbnNwb3J0KEFGX0lORVQ2KTsKLSAg
RVhQRUNUX1RSVUUocmVzdWx0Lm9rKCkpOwotfQotCi0vLyBUZXN0IENyZWF0ZVVkcFBvcnQgd2l0
aCB0aGUgfG1pbl9wb3J0fCBhbmQgfG1heF9wb3J0fCBhcmd1bWVudHMuCi1URVNUX0YoT3J0Y0Zh
Y3RvcnlUZXN0LCBDcmVhdGVVZHBUcmFuc3BvcnRXaXRoUG9ydFJhbmdlKSB7Ci0gIGF1dG8gc29j
a2V0X3Jlc3VsdDEgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVVZHBUcmFuc3BvcnQoQUZfSU5FVCwg
MjAwMCwgMjAwMik7Ci0gIEFTU0VSVF9UUlVFKHNvY2tldF9yZXN1bHQxLm9rKCkpOwotICBFWFBF
Q1RfRVEoMjAwMCwgc29ja2V0X3Jlc3VsdDEudmFsdWUoKS0+R2V0TG9jYWxBZGRyZXNzKCkucG9y
dCgpKTsKLSAgYXV0byBzb2NrZXRfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVVkcFRy
YW5zcG9ydChBRl9JTkVULCAyMDAwLCAyMDAyKTsKLSAgQVNTRVJUX1RSVUUoc29ja2V0X3Jlc3Vs
dDIub2soKSk7Ci0gIEVYUEVDVF9FUSgyMDAxLCBzb2NrZXRfcmVzdWx0Mi52YWx1ZSgpLT5HZXRM
b2NhbEFkZHJlc3MoKS5wb3J0KCkpOwotICBhdXRvIHNvY2tldF9yZXN1bHQzID0gb3J0Y19mYWN0
b3J5Xy0+Q3JlYXRlVWRwVHJhbnNwb3J0KEFGX0lORVQsIDIwMDAsIDIwMDIpOwotICBBU1NFUlRf
VFJVRShzb2NrZXRfcmVzdWx0My5vaygpKTsKLSAgRVhQRUNUX0VRKDIwMDIsIHNvY2tldF9yZXN1
bHQzLnZhbHVlKCktPkdldExvY2FsQWRkcmVzcygpLnBvcnQoKSk7Ci0KLSAgLy8gQWxsIHNvY2tl
dHMgaW4gdGhlIHJhbmdlIGhhdmUgYmVlbiBleGhhdXN0ZWQsIHNvIHRoZSBuZXh0IGNhbGwgc2hv
dWxkCi0gIC8vIGZhaWwuCi0gIGF1dG8gZmFpbGVkX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNy
ZWF0ZVVkcFRyYW5zcG9ydChBRl9JTkVULCAyMDAwLCAyMDAyKTsKLSAgRVhQRUNUX0VRKFJUQ0Vy
cm9yVHlwZTo6UkVTT1VSQ0VfRVhIQVVTVEVELCBmYWlsZWRfcmVzdWx0LmVycm9yKCkudHlwZSgp
KTsKLQotICAvLyBJZiBvbmUgc29ja2V0IGlzIGRlc3Ryb3llZCwgdGhhdCBwb3J0IHNob3VsZCBi
ZSBmcmVlZCB1cCBhZ2Fpbi4KLSAgc29ja2V0X3Jlc3VsdDIuTW92ZVZhbHVlKCkucmVzZXQoKTsK
LSAgYXV0byBzb2NrZXRfcmVzdWx0NCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVVkcFRyYW5zcG9y
dChBRl9JTkVULCAyMDAwLCAyMDAyKTsKLSAgQVNTRVJUX1RSVUUoc29ja2V0X3Jlc3VsdDQub2so
KSk7Ci0gIEVYUEVDVF9FUSgyMDAxLCBzb2NrZXRfcmVzdWx0NC52YWx1ZSgpLT5HZXRMb2NhbEFk
ZHJlc3MoKS5wb3J0KCkpOwotfQotCi0vLyBCYXNpYyB0ZXN0IHRoYXQgQ3JlYXRlVWRwVHJhbnNw
b3J0IHdvcmtzIHdpdGggQUZfSU5FVCBhbmQgQUZfSU5FVDYuCi1URVNUX0YoT3J0Y0ZhY3RvcnlU
ZXN0LCBDcmVhdGVVZHBUcmFuc3BvcnRXaXRoSW52YWxpZEFkZHJlc3NGYW1pbHkpIHsKLSAgYXV0
byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVVZHBUcmFuc3BvcnQoMTIzNDUpOwotICBF
WFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwgcmVzdWx0LmVycm9yKCku
dHlwZSgpKTsKLX0KLQotVEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgQ3JlYXRlVWRwVHJhbnNwb3J0
V2l0aEludmFsaWRQb3J0UmFuZ2UpIHsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5D
cmVhdGVVZHBUcmFuc3BvcnQoQUZfSU5FVCwgMzAwMCwgMjAwMCk7Ci0gIEVYUEVDVF9FUShSVENF
cnJvclR5cGU6OklOVkFMSURfUkFOR0UsIHJlc3VsdC5lcnJvcigpLnR5cGUoKSk7Ci19Ci0KLS8v
IEp1c3Qgc2FuaXR5IGNoZWNrIHRoYXQgZWFjaCAiR2V0Q2FwYWJpbGl0aWVzIiBtZXRob2QgcmV0
dXJucyBzb21lIGNvZGVjcy4KLVRFU1RfRihPcnRjRmFjdG9yeVRlc3QsIEdldFNlbmRlckFuZFJl
Y2VpdmVyQ2FwYWJpbGl0aWVzKSB7Ci0gIFJ0cENhcGFiaWxpdGllcyBhdWRpb19zZW5kX2NhcHMg
PQotICAgICAgb3J0Y19mYWN0b3J5Xy0+R2V0UnRwU2VuZGVyQ2FwYWJpbGl0aWVzKGNyaWNrZXQ6
Ok1FRElBX1RZUEVfQVVESU8pOwotICBFWFBFQ1RfR1QoYXVkaW9fc2VuZF9jYXBzLmNvZGVjcy5z
aXplKCksIDB1KTsKLSAgUnRwQ2FwYWJpbGl0aWVzIHZpZGVvX3NlbmRfY2FwcyA9Ci0gICAgICBv
cnRjX2ZhY3RvcnlfLT5HZXRSdHBTZW5kZXJDYXBhYmlsaXRpZXMoY3JpY2tldDo6TUVESUFfVFlQ
RV9WSURFTyk7Ci0gIEVYUEVDVF9HVCh2aWRlb19zZW5kX2NhcHMuY29kZWNzLnNpemUoKSwgMHUp
OwotICBSdHBDYXBhYmlsaXRpZXMgYXVkaW9fcmVjZWl2ZV9jYXBzID0KLSAgICAgIG9ydGNfZmFj
dG9yeV8tPkdldFJ0cFJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVE
SU8pOwotICBFWFBFQ1RfR1QoYXVkaW9fcmVjZWl2ZV9jYXBzLmNvZGVjcy5zaXplKCksIDB1KTsK
LSAgUnRwQ2FwYWJpbGl0aWVzIHZpZGVvX3JlY2VpdmVfY2FwcyA9Ci0gICAgICBvcnRjX2ZhY3Rv
cnlfLT5HZXRSdHBSZWNlaXZlckNhcGFiaWxpdGllcyhjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVP
KTsKLSAgRVhQRUNUX0dUKHZpZGVvX3JlY2VpdmVfY2Fwcy5jb2RlY3Muc2l6ZSgpLCAwdSk7Ci19
Ci0KLS8vIENhbGxpbmcgQ3JlYXRlUnRwU2VuZGVyIHdpdGggYSBudWxsIHRyYWNrIHNob3VsZCBm
YWlsLCBzaW5jZSB0aGF0IG1ha2VzIGl0Ci0vLyBpbXBvc3NpYmxlIHRvIGtub3cgd2hldGhlciB0
byBjcmVhdGUgYW4gYXVkaW8gb3IgdmlkZW8gc2VuZGVyLiBUaGUKLS8vIGFwcGxpY2F0aW9uIHNo
b3VsZCBiZSB1c2luZyB0aGUgbWV0aG9kIHRoYXQgdGFrZXMgYSBjcmlja2V0OjpNZWRpYVR5cGUK
LS8vIGluc3RlYWQuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVTZW5kZXJXaXRoTnVs
bFRyYWNrKSB7Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydCA9IENyZWF0ZVJ0cFRyYW5zcG9ydFdpdGhG
YWtlUGFja2V0VHJhbnNwb3J0KCk7Ci0gIGF1dG8gcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3Jl
YXRlUnRwU2VuZGVyKG51bGxwdHIsIHJ0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEo
UlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwgcmVzdWx0LmVycm9yKCkudHlwZSgpKTsK
LX0KLQotLy8gQ2FsbGluZyBDcmVhdGVSdHBTZW5kZXIgb3IgQ3JlYXRlUnRwUmVjZWl2ZXIgd2l0
aCBNRURJQV9UWVBFX0RBVEEgc2hvdWxkCi0vLyBmYWlsLgotVEVTVF9GKE9ydGNGYWN0b3J5VGVz
dCwgQ3JlYXRlU2VuZGVyT3JSZWNlaWV2ZXJXaXRoSW52YWxpZEtpbmQpIHsKLSAgYXV0byBydHBf
dHJhbnNwb3J0ID0gQ3JlYXRlUnRwVHJhbnNwb3J0V2l0aEZha2VQYWNrZXRUcmFuc3BvcnQoKTsK
LSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNy
aWNrZXQ6Ok1FRElBX1RZUEVfREFUQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEo
UlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwgc2VuZGVyX3Jlc3VsdC5lcnJvcigpLnR5
cGUoKSk7Ci0gIGF1dG8gcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRw
UmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEEsIHJ0cF90cmFuc3BvcnQu
Z2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwgcmVj
ZWl2ZXJfcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLX0KLQotVEVTVF9GKE9ydGNGYWN0b3J5VGVz
dCwgQ3JlYXRlU2VuZGVyc09yUmVjZWlldmVyc1dpdGhOdWxsVHJhbnNwb3J0KSB7Ci0gIGF1dG8g
c2VuZGVyX3Jlc3VsdCA9Ci0gICAgICBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoY3Jp
Y2tldDo6TUVESUFfVFlQRV9BVURJTywgbnVsbHB0cik7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5
cGU6OklOVkFMSURfUEFSQU1FVEVSLCBzZW5kZXJfcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLSAg
YXV0byByZWNlaXZlcl9yZXN1bHQgPQotICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVj
ZWl2ZXIoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgbnVsbHB0cik7Ci0gIEVYUEVDVF9FUShS
VENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCByZWNlaXZlcl9yZXN1bHQuZXJyb3IoKS50
eXBlKCkpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHByZWNlaXZlcl91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29y
dGMvb3J0Y3J0cHJlY2VpdmVyX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmMGU5MjM4NzE0NWVhYzY0YTlmNmQ4MDhmMjRlZmFmYTlmZWEzNWRmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyX3VuaXR0ZXN0LmNjCisr
KyAvZGV2L251bGwKQEAgLTEsNTUwICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
LSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNs
dWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1
ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZW1lZGlhZW5n
aW5lLmgiCi0jaW5jbHVkZSAib3J0Yy9vcnRjZmFjdG9yeS5oIgotI2luY2x1ZGUgIm9ydGMvdGVz
dHJ0cHBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJwMnAvYmFzZS9mYWtlcGFja2V0dHJhbnNwb3J0
LmgiCi0jaW5jbHVkZSAicGMvdGVzdC9mYWtldmlkZW90cmFja3NvdXJjZS5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2d1bml0LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBUaGlzIHRlc3Qg
dXNlcyBhbiBpbmRpdmlkdWFsIFJ0cFJlY2VpdmVyIHVzaW5nIG9ubHkgdGhlIHB1YmxpYyBpbnRl
cmZhY2UsCi0vLyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBiZWhhdmVzIGFzIGRlc2lnbmVkIGF0IGFu
IEFQSSBsZXZlbC4gQWxzbyB0ZXN0cyB0aGF0Ci0vLyBwYXJhbWV0ZXJzIGFyZSBhcHBsaWVkIHRv
IHRoZSBhdWRpby92aWRlbyBlbmdpbmVzIGFzIGV4cGVjdGVkLiBOZXR3b3JrIGFuZAotLy8gbWVk
aWEgaW50ZXJmYWNlcyBhcmUgZmFrZWQgdG8gaXNvbGF0ZSB3aGF0J3MgYmVpbmcgdGVzdGVkLgot
Ly8KLS8vIFRoaXMgdGVzdCBzaG91bGRuJ3QgcmVzdWx0IGFueSBhbnkgYWN0dWFsIG1lZGlhIGJl
aW5nIHNlbnQuIFRoYXQgc29ydCBvZgotLy8gdGVzdCBzaG91bGQgZ28gaW4gb3J0Y2ZhY3Rvcnlf
aW50ZWdyYXRpb250ZXN0LmNjLgotY2xhc3MgT3J0Y1J0cFJlY2VpdmVyVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6Ci0gIE9ydGNSdHBSZWNlaXZlclRlc3QoKSA6IGZha2Vf
cGFja2V0X3RyYW5zcG9ydF8oImZha2UiKSB7Ci0gICAgZmFrZV9tZWRpYV9lbmdpbmVfID0gbmV3
IGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZSgpOwotICAgIC8vIE5vdGU6IFRoaXMgZG9lc24ndCBu
ZWVkIHRvIHVzZSBmYWtlIG5ldHdvcmsgY2xhc3Nlcywgc2luY2Ugd2UgYWxyZWFkeQotICAgIC8v
IHVzZSBGYWtlUGFja2V0VHJhbnNwb3J0LgotICAgIGF1dG8gb3J0Y19mYWN0b3J5X3Jlc3VsdCA9
IE9ydGNGYWN0b3J5OjpDcmVhdGUoCi0gICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRp
YUVuZ2luZUludGVyZmFjZT4oZmFrZV9tZWRpYV9lbmdpbmVfKSwKLSAgICAgICAgQ3JlYXRlQnVp
bHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwgQ3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3Rv
cnkoKSk7Ci0gICAgb3J0Y19mYWN0b3J5XyA9IG9ydGNfZmFjdG9yeV9yZXN1bHQuTW92ZVZhbHVl
KCk7Ci0gICAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRl
cnMucnRjcC5tdXggPSB0cnVlOwotICAgIGF1dG8gcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRj
X2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICAgIHBhcmFtZXRlcnMsICZmYWtl
X3BhY2tldF90cmFuc3BvcnRfLCBudWxscHRyLCBudWxscHRyKTsKLSAgICBydHBfdHJhbnNwb3J0
XyA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6
Ci0gIC8vIE93bmVkIGJ5IHxvcnRjX2ZhY3RvcnlffC4KLSAgY3JpY2tldDo6RmFrZU1lZGlhRW5n
aW5lKiBmYWtlX21lZGlhX2VuZ2luZV87Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBmYWtl
X3BhY2tldF90cmFuc3BvcnRfOwotICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZh
Y2U+IG9ydGNfZmFjdG9yeV87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZh
Y2U+IHJ0cF90cmFuc3BvcnRfOwotfTsKLQotLy8gU2VlIG9ydGNydHByZWNlaXZlcmludGVyZmFj
ZS5oIGZvciB0aGUgY3VycmVudCBleHBlY3RhdGlvbnMgb2Ygd2hhdCBHZXRUcmFjawotLy8gd2ls
bCByZXR1cm4gYWZ0ZXIgY2FsbHMgdG8gUmVjZWl2ZS4KLS8vIFRPRE8oZGVhZGJlZWYpOiBSZXBs
YWNlIHRoaXMgdGVzdCB3aGVuIHRoZSBub24tc3RhbmRhcmQgYmVoYXZpb3IgaXMgZml4ZWQKLS8v
IGFuZCBHZXRUcmFjayBzdGFydHMgcmV0dXJuaW5nIHRoZSBzYW1lIHRyYWNrIGZvciB0aGUgbGlm
ZXRpbWUgb2YgdGhlCi0vLyByZWNlaXZlci4KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBH
ZXRUcmFjaykgewotICBhdXRvIHJlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5z
cG9ydF8uZ2V0KCkpOwotICBBU1NFUlRfVFJVRShyZWNlaXZlcl9yZXN1bHQub2soKSk7Ci0gIGF1
dG8gcmVjZWl2ZXIgPSByZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gVHJhY2sg
aW5pdGlhbGx5IGV4cGVjdGVkIHRvIGJlIG51bGwuCi0gIEVYUEVDVF9FUShudWxscHRyLCByZWNl
aXZlcl9yZXN1bHQudmFsdWUoKS5nZXQoKSk7Ci0KLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXItPlJl
Y2VpdmUoTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzV2l0aE5vU3NyYygpKS5vaygpKTsKLSAgYXV0
byBpbml0aWFsX3RyYWNrID0gcmVjZWl2ZXItPkdldFRyYWNrKCk7Ci0gIEVYUEVDVF9ORShudWxs
cHRyLCBpbml0aWFsX3RyYWNrKTsKLQotICAvLyBDb2RlYyBjaGFuZ2luZyBidXQgU1NSQyAob3Ig
bGFjayB0aGVyZW9mKSBpc24ndDsgc2hvdWxkbid0IGNyZWF0ZSBuZXcgdHJhY2sKLSAgRVhQRUNU
X1RSVUUocmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0aE5vU3Ny
YygpKS5vaygpKTsKLSAgRVhQRUNUX0VRKGluaXRpYWxfdHJhY2ssIHJlY2VpdmVyLT5HZXRUcmFj
aygpKTsKLQotICAvLyBFeHBsaWNpdGx5IHNldCBTU1JDIGFuZCBleHBlY3QgYSBkaWZmZXJlbnQg
dHJhY2suCi0gIEVYUEVDVF9UUlVFKAotICAgICAgcmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmlt
YWxWcDlQYXJhbWV0ZXJzV2l0aFNzcmMoMHhkZWFkYmVlZikpLm9rKCkpOwotICBhdXRvIG5leHRf
dHJhY2sgPSByZWNlaXZlci0+R2V0VHJhY2soKTsKLSAgRVhQRUNUX05FKG5leHRfdHJhY2ssIGlu
aXRpYWxfdHJhY2spOwotCi0gIC8vIERlYWN0aXZhdGluZyB0aGUgZW5jb2Rpbmcgc2hvdWxkbid0
IGNoYW5nZSB0aGUgdHJhY2suCi0gIFJ0cFBhcmFtZXRlcnMgaW5hY3RpdmVfZW5jb2RpbmcgPQot
ICAgICAgTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0aFNzcmMoMHhkZWFkYmVlZik7Ci0gIGlu
YWN0aXZlX2VuY29kaW5nLmVuY29kaW5nc1swXS5hY3RpdmUgPSBmYWxzZTsKLSAgRVhQRUNUX1RS
VUUocmVjZWl2ZXItPlJlY2VpdmUoaW5hY3RpdmVfZW5jb2RpbmcpLm9rKCkpOwotICBFWFBFQ1Rf
RVEobmV4dF90cmFjaywgcmVjZWl2ZXItPkdldFRyYWNrKCkpOwotCi0gIC8vIFJlbW92aW5nIGFs
bCBlbmNvZGluZ3MgKmlzKiBleHBlY3RlZCB0byBjbGVhciB0aGUgdHJhY2suCi0gIFJ0cFBhcmFt
ZXRlcnMgbm9fZW5jb2RpbmdzID0gTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0aFNzcmMoMHhk
ZWFkYmVlZik7Ci0gIG5vX2VuY29kaW5ncy5lbmNvZGluZ3MuY2xlYXIoKTsKLSAgRVhQRUNUX1RS
VUUocmVjZWl2ZXItPlJlY2VpdmUobm9fZW5jb2RpbmdzKS5vaygpKTsKLSAgRVhQRUNUX0VRKG51
bGxwdHIsIHJlY2VpdmVyLT5HZXRUcmFjaygpKTsKLX0KLQotLy8gQ3VycmVudGx5IFNldFRyYW5z
cG9ydCBpc24ndCBzdXBwb3J0ZWQuIFdoZW4gaXQgaXMsIHJlcGxhY2UgdGhpcyB0ZXN0IHdpdGgg
YQotLy8gdGVzdC90ZXN0cyBmb3IgaXQuCi1URVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVzdCwgU2V0
VHJhbnNwb3J0RmFpbHMpIHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IGZha2VfcGFja2V0
X3RyYW5zcG9ydCgiYW5vdGhlcl90cmFuc3BvcnQiKTsKLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwotICBwYXJhbWV0ZXJzLnJ0Y3AubXV4ID0gdHJ1ZTsKLSAgYXV0byBydHBf
dHJhbnNwb3J0X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAg
ICAgIHBhcmFtZXRlcnMsICZmYWtlX3BhY2tldF90cmFuc3BvcnQsIG51bGxwdHIsIG51bGxwdHIp
OwotICBhdXRvIHJ0cF90cmFuc3BvcnQgPSBydHBfdHJhbnNwb3J0X3Jlc3VsdC5Nb3ZlVmFsdWUo
KTsKLQotICBhdXRvIHJlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJl
Y2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8u
Z2V0KCkpOwotICBhdXRvIHJlY2VpdmVyID0gcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwot
ICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAg
ICAgICByZWNlaXZlci0+U2V0VHJhbnNwb3J0KHJ0cF90cmFuc3BvcnQuZ2V0KCkpLnR5cGUoKSk7
Ci19Ci0KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBHZXRUcmFuc3BvcnQpIHsKLSAgYXV0
byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcihjcmlja2V0OjpNRURJ
QV9UWVBFX0FVRElPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgRVhQRUNUX0VRKHJ0cF90cmFuc3BvcnRf
LmdldCgpLCByZXN1bHQudmFsdWUoKS0+R2V0VHJhbnNwb3J0KCkpOwotfQotCi0vLyBUZXN0IHRo
YXQgIlJlY2VpdmUiIGNhdXNlcyB0aGUgZXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVk
IHRvIHRoZSBtZWRpYQotLy8gZW5naW5lIGxldmVsLCBmb3IgYW4gYXVkaW8gcmVjZWl2ZXIuCi1U
RVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVzdCwgUmVjZWl2ZUFwcGxpZXNBdWRpb1BhcmFtZXRlcnNU
b01lZGlhRW5naW5lKSB7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0
b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElP
LCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXIgPSBhdWRpb19y
ZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gRmlyc3QsIGNyZWF0ZSBwYXJhbWV0
ZXJzIHdpdGggYWxsIHRoZSBiZWxscyBhbmQgd2hpc3RsZXMuCi0gIFJ0cFBhcmFtZXRlcnMgcGFy
YW1ldGVyczsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgb3B1c19jb2RlYzsKLSAgb3B1c19jb2Rl
Yy5uYW1lID0gIm9wdXMiOwotICBvcHVzX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBF
X0FVRElPOwotICBvcHVzX2NvZGVjLnBheWxvYWRfdHlwZSA9IDEyMDsKLSAgb3B1c19jb2RlYy5j
bG9ja19yYXRlLmVtcGxhY2UoNDgwMDApOwotICBvcHVzX2NvZGVjLm51bV9jaGFubmVscy5lbXBs
YWNlKDIpOwotICBvcHVzX2NvZGVjLnBhcmFtZXRlcnNbIm1pbnB0aW1lIl0gPSAiMTAiOwotICBv
cHVzX2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6OlRS
QU5TUE9SVF9DQyk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUob3B1
c19jb2RlYykpOwotCi0gIC8vIEFkZCB0d28gY29kZWNzLCBleHBlY3RpbmcgdGhlIGZpcnN0IHRv
IGJlIHVzZWQuCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBPbmNlICJjb2RlY19wYXlsb2FkX3R5cGUi
IGlzIHN1cHBvcnRlZCwgdXNlIGl0IHRvIHNlbGVjdCBhCi0gIC8vIGNvZGVjIHRoYXQncyBub3Qg
YXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIGlzYWNfY29kZWM7
Ci0gIGlzYWNfY29kZWMubmFtZSA9ICJJU0FDIjsKLSAgaXNhY19jb2RlYy5raW5kID0gY3JpY2tl
dDo6TUVESUFfVFlQRV9BVURJTzsKLSAgaXNhY19jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMTA7Ci0g
IGlzYWNfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDE2MDAwKTsKLSAgcGFyYW1ldGVycy5jb2Rl
Y3MucHVzaF9iYWNrKHN0ZDo6bW92ZShpc2FjX2NvZGVjKSk7Ci0KLSAgUnRwRW5jb2RpbmdQYXJh
bWV0ZXJzIGVuY29kaW5nOwotICBlbmNvZGluZy5zc3JjLmVtcGxhY2UoMHhkZWFkYmVlZik7Ci0g
IHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1c2hfYmFjayhzdGQ6Om1vdmUoZW5jb2RpbmcpKTsKLQot
ICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygKLSAgICAgICJ1cm46
aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDpzc3JjLWF1ZGlvLWxldmVsIiwgMyk7Ci0KLSAgRVhQRUNU
X1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUocGFyYW1ldGVycykub2soKSk7Ci0KLSAgLy8g
Tm93IHZlcmlmeSB0aGF0IHRoZSBwYXJhbWV0ZXJzIHdlcmUgYXBwbGllZCB0byB0aGUgZmFrZSBt
ZWRpYSBlbmdpbmUgbGF5ZXIKLSAgLy8gdGhhdCBleGlzdHMgYmVsb3cgQmFzZUNoYW5uZWwuCi0g
IGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0KLSAg
ICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRfTkUo
bnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92b2ljZV9j
aGFubmVsLT5wbGF5b3V0KCkpOwotCi0gIC8vIFZlcmlmeSBjb2RlYyBwYXJhbWV0ZXJzLgotICBB
U1NFUlRfR1QoZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2X2NvZGVjcygpLnNpemUoKSwgMHUpOwot
ICBjb25zdCBjcmlja2V0OjpBdWRpb0NvZGVjJiB0b3BfY29kZWMgPSBmYWtlX3ZvaWNlX2NoYW5u
ZWwtPnJlY3ZfY29kZWNzKClbMF07Ci0gIEVYUEVDVF9FUSgib3B1cyIsIHRvcF9jb2RlYy5uYW1l
KTsKLSAgRVhQRUNUX0VRKDEyMCwgdG9wX2NvZGVjLmlkKTsKLSAgRVhQRUNUX0VRKDQ4MDAwLCB0
b3BfY29kZWMuY2xvY2tyYXRlKTsKLSAgRVhQRUNUX0VRKDJ1LCB0b3BfY29kZWMuY2hhbm5lbHMp
OwotICBBU1NFUlRfTkUodG9wX2NvZGVjLnBhcmFtcy5lbmQoKSwgdG9wX2NvZGVjLnBhcmFtcy5m
aW5kKCJtaW5wdGltZSIpKTsKLSAgRVhQRUNUX0VRKCIxMCIsIHRvcF9jb2RlYy5wYXJhbXMuYXQo
Im1pbnB0aW1lIikpOwotCi0gIC8vIFZlcmlmeSBlbmNvZGluZyBwYXJhbWV0ZXJzLgotICBBU1NF
UlRfRVEoMXUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+cmVjdl9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAg
Y29uc3QgY3JpY2tldDo6U3RyZWFtUGFyYW1zJiByZWN2X3N0cmVhbSA9Ci0gICAgICBmYWtlX3Zv
aWNlX2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpWzBdOwotICBFWFBFQ1RfRVEoMXUsIHJlY3Zfc3Ry
ZWFtLnNzcmNzLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgweGRlYWRiZWVmLCByZWN2X3N0cmVhbS5m
aXJzdF9zc3JjKCkpOwotCi0gIC8vIFZlcmlmeSBoZWFkZXIgZXh0ZW5zaW9ucy4KLSAgQVNTRVJU
X0VRKDF1LCBmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3ZfZXh0ZW5zaW9ucygpLnNpemUoKSk7Ci0g
IGNvbnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uID0gZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2
X2V4dGVuc2lvbnMoKVswXTsKLSAgRVhQRUNUX0VRKCJ1cm46aWV0ZjpwYXJhbXM6cnRwLWhkcmV4
dDpzc3JjLWF1ZGlvLWxldmVsIiwgZXh0ZW5zaW9uLnVyaSk7Ci0gIEVYUEVDVF9FUSgzLCBleHRl
bnNpb24uaWQpOwotfQotCi0vLyBUZXN0IHRoYXQgIlJlY2VpdmUiIGNhdXNlcyB0aGUgZXhwZWN0
ZWQgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVkIHRvIHRoZSBtZWRpYQotLy8gZW5naW5lIGxldmVs
LCBmb3IgYSB2aWRlbyByZWNlaXZlci4KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBSZWNl
aXZlQXBwbGllc1ZpZGVvUGFyYW1ldGVyc1RvTWVkaWFFbmdpbmUpIHsKLSAgYXV0byB2aWRlb19y
ZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAg
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0
byB2aWRlb19yZWNlaXZlciA9IHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQot
ICAvLyBGaXJzdCwgY3JlYXRlIHBhcmFtZXRlcnMgd2l0aCBhbGwgdGhlIGJlbGxzIGFuZCB3aGlz
dGxlcy4KLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVy
cyB2cDhfY29kZWM7Ci0gIHZwOF9jb2RlYy5uYW1lID0gIlZQOCI7Ci0gIHZwOF9jb2RlYy5raW5k
ID0gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgdnA4X2NvZGVjLnBheWxvYWRfdHlwZSA9
IDk5OwotICAvLyBUcnkgYSBjb3VwbGUgdHlwZXMgb2YgZmVlZGJhY2sgcGFyYW1zLiAiR2VuZXJp
YyBOQUNLIiBpcyBhIGJpdCBvZiBhCi0gIC8vIHNwZWNpYWwgY2FzZSwgc28gdGVzdCBpdCBoZXJl
LgotICB2cDhfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlw
ZTo6Q0NNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEZlZWRi
YWNrTWVzc2FnZVR5cGU6OkZJUik7Ci0gIHZwOF9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2Vf
YmFjayhSdGNwRmVlZGJhY2tUeXBlOjpOQUNLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5cGU6OkdFTkVSSUNfTkFDSyk7Ci0gIHBh
cmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUodnA4X2NvZGVjKSk7Ci0KLSAgUnRw
Q29kZWNQYXJhbWV0ZXJzIHZwOF9ydHhfY29kZWM7Ci0gIHZwOF9ydHhfY29kZWMubmFtZSA9ICJy
dHgiOwotICB2cDhfcnR4X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwot
ICB2cDhfcnR4X2NvZGVjLnBheWxvYWRfdHlwZSA9IDEwMDsKLSAgdnA4X3J0eF9jb2RlYy5wYXJh
bWV0ZXJzWyJhcHQiXSA9ICI5OSI7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6
Om1vdmUodnA4X3J0eF9jb2RlYykpOwotCi0gIC8vIEFkZCB0d28gY29kZWNzLCBleHBlY3Rpbmcg
dGhlIGZpcnN0IHRvIGJlIHVzZWQuCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBPbmNlICJjb2RlY19w
YXlsb2FkX3R5cGUiIGlzIHN1cHBvcnRlZCwgdXNlIGl0IHRvIHNlbGVjdCBhCi0gIC8vIGNvZGVj
IHRoYXQncyBub3QgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4KLSAgUnRwQ29kZWNQYXJhbWV0ZXJz
IHZwOV9jb2RlYzsKLSAgdnA5X2NvZGVjLm5hbWUgPSAiVlA5IjsKLSAgdnA5X2NvZGVjLmtpbmQg
PSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB2cDlfY29kZWMucGF5bG9hZF90eXBlID0g
MTAyOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHZwOV9jb2RlYykp
OwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyB2cDlfcnR4X2NvZGVjOwotICB2cDlfcnR4X2NvZGVj
Lm5hbWUgPSAicnR4IjsKLSAgdnA5X3J0eF9jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQ
RV9WSURFTzsKLSAgdnA5X3J0eF9jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMDM7Ci0gIHZwOV9ydHhf
Y29kZWMucGFyYW1ldGVyc1siYXB0Il0gPSAiMTAyIjsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVz
aF9iYWNrKHN0ZDo6bW92ZSh2cDlfcnR4X2NvZGVjKSk7Ci0KLSAgUnRwRW5jb2RpbmdQYXJhbWV0
ZXJzIGVuY29kaW5nOwotICBlbmNvZGluZy5zc3JjLmVtcGxhY2UoMHhkZWFkYmVlZik7Ci0gIGVu
Y29kaW5nLnJ0eC5lbXBsYWNlKDB4YmFhZGZlZWQpOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5w
dXNoX2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0KLSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0
ZW5zaW9ucy5lbXBsYWNlX2JhY2soInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiwgNCk7Ci0g
IHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAotICAgICAgImh0dHA6
Ly93d3cud2VicnRjLm9yZy9leHBlcmltZW50cy9ydHAtaGRyZXh0L3BsYXlvdXQtZGVsYXkiLCA2
KTsKLQotICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZlci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5v
aygpKTsKLQotICAvLyBOb3cgdmVyaWZ5IHRoYXQgdGhlIHBhcmFtZXRlcnMgd2VyZSBhcHBsaWVk
IHRvIHRoZSBmYWtlIG1lZGlhIGVuZ2luZSBsYXllcgotICAvLyB0aGF0IGV4aXN0cyBiZWxvdyBC
YXNlQ2hhbm5lbC4KLSAgY3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVv
X2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7
Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotCi0gIC8vIFZlcmlm
eSBjb2RlYyBwYXJhbWV0ZXJzLgotICBBU1NFUlRfR0UoZmFrZV92aWRlb19jaGFubmVsLT5yZWN2
X2NvZGVjcygpLnNpemUoKSwgMnUpOwotICBjb25zdCBjcmlja2V0OjpWaWRlb0NvZGVjJiB0b3Bf
Y29kZWMgPSBmYWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3ZfY29kZWNzKClbMF07Ci0gIEVYUEVDVF9F
USgiVlA4IiwgdG9wX2NvZGVjLm5hbWUpOwotICBFWFBFQ1RfRVEoOTksIHRvcF9jb2RlYy5pZCk7
Ci0gIEVYUEVDVF9UUlVFKHRvcF9jb2RlYy5mZWVkYmFja19wYXJhbXMuSGFzKHsiY2NtIiwgImZp
ciJ9KSk7Ci0gIEVYUEVDVF9UUlVFKHRvcF9jb2RlYy5mZWVkYmFja19wYXJhbXMuSGFzKGNyaWNr
ZXQ6OkZlZWRiYWNrUGFyYW0oIm5hY2siKSkpOwotCi0gIGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29k
ZWMmIHJ0eF9jb2RlYyA9IGZha2VfdmlkZW9fY2hhbm5lbC0+cmVjdl9jb2RlY3MoKVsxXTsKLSAg
RVhQRUNUX0VRKCJydHgiLCBydHhfY29kZWMubmFtZSk7Ci0gIEVYUEVDVF9FUSgxMDAsIHJ0eF9j
b2RlYy5pZCk7Ci0gIEFTU0VSVF9ORShydHhfY29kZWMucGFyYW1zLmVuZCgpLCBydHhfY29kZWMu
cGFyYW1zLmZpbmQoImFwdCIpKTsKLSAgRVhQRUNUX0VRKCI5OSIsIHJ0eF9jb2RlYy5wYXJhbXMu
YXQoImFwdCIpKTsKLQotICAvLyBWZXJpZnkgZW5jb2RpbmcgcGFyYW1ldGVycy4KLSAgQVNTRVJU
X0VRKDF1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpLnNpemUoKSk7Ci0gIGNv
bnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYgcmVjdl9zdHJlYW0gPQotICAgICAgZmFrZV92aWRl
b19jaGFubmVsLT5yZWN2X3N0cmVhbXMoKVswXTsKLSAgRVhQRUNUX0VRKDJ1LCByZWN2X3N0cmVh
bS5zc3Jjcy5zaXplKCkpOwotICBFWFBFQ1RfRVEoMHhkZWFkYmVlZiwgcmVjdl9zdHJlYW0uZmly
c3Rfc3NyYygpKTsKLSAgdWludDMyX3QgcnR4X3NzcmMgPSAwdTsKLSAgRVhQRUNUX1RSVUUocmVj
dl9zdHJlYW0uR2V0RmlkU3NyYyhyZWN2X3N0cmVhbS5maXJzdF9zc3JjKCksICZydHhfc3NyYykp
OwotICBFWFBFQ1RfRVEoMHhiYWFkZmVlZCwgcnR4X3NzcmMpOwotCi0gIC8vIFZlcmlmeSBoZWFk
ZXIgZXh0ZW5zaW9ucy4KLSAgQVNTRVJUX0VRKDJ1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3Zf
ZXh0ZW5zaW9ucygpLnNpemUoKSk7Ci0gIGNvbnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uMSA9
IGZha2VfdmlkZW9fY2hhbm5lbC0+cmVjdl9leHRlbnNpb25zKClbMF07Ci0gIEVYUEVDVF9FUSgi
dXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iLCBleHRlbnNpb24xLnVyaSk7Ci0gIEVYUEVDVF9F
USg0LCBleHRlbnNpb24xLmlkKTsKLSAgY29uc3QgUnRwRXh0ZW5zaW9uJiBleHRlbnNpb24yID0g
ZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X2V4dGVuc2lvbnMoKVsxXTsKLSAgRVhQRUNUX0VRKCJo
dHRwOi8vd3d3LndlYnJ0Yy5vcmcvZXhwZXJpbWVudHMvcnRwLWhkcmV4dC9wbGF5b3V0LWRlbGF5
IiwKLSAgICAgICAgICAgIGV4dGVuc2lvbjIudXJpKTsKLSAgRVhQRUNUX0VRKDYsIGV4dGVuc2lv
bjIuaWQpOwotfQotCi0vLyBUZXN0IGNoYW5naW5nIGJvdGggdGhlIHJlY2VpdmUgY29kZWMgYW5k
IFNTUkMgYXQgdGhlIHNhbWUgdGltZSwgYW5kIHZlcmlmeQotLy8gdGhhdCB0aGUgbmV3IHBhcmFt
ZXRlcnMgYXJlIGFwcGxpZWQgdG8gdGhlIG1lZGlhIGVuZ2luZSBsZXZlbC4KLVRFU1RfRihPcnRj
UnRwUmVjZWl2ZXJUZXN0LCBDYWxsaW5nUmVjZWl2ZVR3aWNlQ2hhbmdlc1BhcmFtZXRlcnMpIHsK
LSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBS
ZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRf
LmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5N
b3ZlVmFsdWUoKTsKLSAgUlRDRXJyb3IgZXJyb3IgPQotICAgICAgYXVkaW9fcmVjZWl2ZXItPlJl
Y2VpdmUoTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVyc1dpdGhTc3JjKDB4MTExMTExMTEpKTsKLSAg
RVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0gIGVycm9yID0KLSAgICAgIGF1ZGlvX3JlY2VpdmVy
LT5SZWNlaXZlKE1ha2VNaW5pbWFsSXNhY1BhcmFtZXRlcnNXaXRoU3NyYygweDIyMjIyMjIyKSk7
Ci0gIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwotCi0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlh
Q2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+
R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFu
bmVsKTsKLSAgQVNTRVJUX0dUKGZha2Vfdm9pY2VfY2hhbm5lbC0+cmVjdl9jb2RlY3MoKS5zaXpl
KCksIDB1KTsKLSAgRVhQRUNUX0VRKCJJU0FDIiwgZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2X2Nv
ZGVjcygpWzBdLm5hbWUpOwotICBBU1NFUlRfRVEoMXUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+cmVj
dl9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDB4MjIyMjIyMjJ1LCBmYWtlX3ZvaWNl
X2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpWzBdLmZpcnN0X3NzcmMoKSk7Ci0KLSAgYXV0byB2aWRl
b19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAg
ICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAg
YXV0byB2aWRlb19yZWNlaXZlciA9IHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsK
LSAgZXJyb3IgPSB2aWRlb19yZWNlaXZlci0+UmVjZWl2ZShNYWtlTWluaW1hbFZwOFBhcmFtZXRl
cnNXaXRoU3NyYygweDMzMzMzMzMzKSk7Ci0gIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwotICBl
cnJvciA9IHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKE1ha2VNaW5pbWFsVnA5UGFyYW1ldGVyc1dp
dGhTc3JjKDB4NDQ0NDQ0NDQpKTsKLSAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0KLSAgY3Jp
Y2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAgICAg
ZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxs
cHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBBU1NFUlRfR1QoZmFrZV92aWRlb19jaGFubmVs
LT5yZWN2X2NvZGVjcygpLnNpemUoKSwgMHUpOwotICBFWFBFQ1RfRVEoIlZQOSIsIGZha2Vfdmlk
ZW9fY2hhbm5lbC0+cmVjdl9jb2RlY3MoKVswXS5uYW1lKTsKLSAgQVNTRVJUX0VRKDF1LCBmYWtl
X3ZpZGVvX2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgweDQ0
NDQ0NDQ0dSwgZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X3N0cmVhbXMoKVswXS5maXJzdF9zc3Jj
KCkpOwotfQotCi0vLyBFbnN1cmUgdGhhdCBpZiB0aGUgfGFjdGl2ZXwgZmxhZyBvZiBSdHBFbmNv
ZGluZ1BhcmFtZXRlcnMgaXMgc2V0IHRvIGZhbHNlLAotLy8gcGxheW91dCBzdG9wcyBhdCB0aGUg
bWVkaWEgZW5naW5lIGxldmVsLiBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IGFwcGxpY2FibGUKLS8v
IHRvIGF1ZGlvIChhdCBsZWFzdCBjdXJyZW50bHkpLgotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRl
c3QsIERlYWN0aXZhdGluZ0VuY29kaW5nU3RvcHNQbGF5b3V0KSB7Ci0gIGF1dG8gYXVkaW9fcmVj
ZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBj
cmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8g
YXVkaW9fcmVjZWl2ZXIgPSBhdWRpb19yZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIFJ0
cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAg
RVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUocGFyYW1ldGVycykub2soKSk7Ci0K
LSAgLy8gRXhwZWN0ICJwbGF5b3V0IiBmbGFnIHRvIGluaXRpYWxseSBiZSB0cnVlLgotICBjcmlj
a2V0OjpGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2VfY2hhbm5lbCA9Ci0gICAgICBm
YWtlX21lZGlhX2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxw
dHIsIGZha2Vfdm9pY2VfY2hhbm5lbCk7Ci0gIEVYUEVDVF9UUlVFKGZha2Vfdm9pY2VfY2hhbm5l
bC0+cGxheW91dCgpKTsKLQotICAvLyBEZWFjdGl2YXRlIGVuY29kaW5nIGFuZCBleHBlY3QgaXQg
dG8gY2hhbmdlIHRvIGZhbHNlLgotICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5hY3RpdmUgPSBm
YWxzZTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUocGFyYW1ldGVycyku
b2soKSk7Ci0gIEVYUEVDVF9GQUxTRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnBsYXlvdXQoKSk7Ci19
Ci0KLS8vIEVuc3VyZSB0aGF0IGNhbGxpbmcgUmVjZWl2ZSB3aXRoIGFuIGVtcHR5IGxpc3Qgb2Yg
ZW5jb2RpbmdzIGNhdXNlcyByZWNlaXZlCi0vLyBzdHJlYW1zIGF0IHRoZSBtZWRpYSBlbmdpbmUg
bGV2ZWwgdG8gYmUgY2xlYXJlZC4KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LAotICAgICAg
IENhbGxpbmdSZWNlaXZlV2l0aEVtcHR5RW5jb2RpbmdzQ2xlYXJzUmVjZWl2ZVN0cmVhbXMpIHsK
LSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBS
ZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRf
LmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5N
b3ZlVmFsdWUoKTsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxPcHVz
UGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShwYXJh
bWV0ZXJzKS5vaygpKTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3MuY2xlYXIoKTsKLSAgRVhQRUNU
X1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUocGFyYW1ldGVycykub2soKSk7Ci0KLSAgY3Jp
Y2tldDo6RmFrZVZvaWNlTWVkaWFDaGFubmVsKiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAg
ZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWb2ljZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxs
cHRyLCBmYWtlX3ZvaWNlX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZvaWNlX2NoYW5u
ZWwtPnJlY3Zfc3RyZWFtcygpLmVtcHR5KCkpOwotCi0gIGF1dG8gdmlkZW9fcmVjZWl2ZXJfcmVz
dWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpN
RURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fcmVj
ZWl2ZXIgPSB2aWRlb19yZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIHBhcmFtZXRlcnMg
PSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2
ZXItPlJlY2VpdmUocGFyYW1ldGVycykub2soKSk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLmNs
ZWFyKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKHBhcmFtZXRlcnMp
Lm9rKCkpOwotCi0gIGNyaWNrZXQ6OkZha2VWaWRlb01lZGlhQ2hhbm5lbCogZmFrZV92aWRlb19j
aGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0VmlkZW9DaGFubmVsKDApOwot
ICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92aWRlb19jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUo
ZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X3N0cmVhbXMoKS5lbXB0eSgpKTsKLX0KLQotLy8gVGhl
c2UgZXJyb3JzIHNob3VsZCBiZSBjb3ZlcmVkIGJ5IHJ0cHBhcmFtZXRlcnNjb252ZXJzaW9uX3Vu
aXR0ZXN0LmNjLCBidXQKLS8vIHdlIHNob3VsZCBhdCBsZWFzdCB0ZXN0IHRoYXQgdGhvc2UgZXJy
b3JzIGFyZSBwcm9wb2dhdGVkIGZyb20gY2FsbHMgdG8KLS8vIFJlY2VpdmUsIHdpdGggYSBmZXcg
ZXhhbXBsZXMuCi1URVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVzdCwgUmVjZWl2ZVJldHVybnNFcnJv
ck9uSW52YWxpZFBhcmFtZXRlcnMpIHsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5D
cmVhdGVSdHBSZWNlaXZlcihjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnRfLmdldCgp
KTsKLSAgYXV0byByZWNlaXZlciA9IHJlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgLy8gQ0NNIGZlZWRi
YWNrIG1pc3NpbmcgbWVzc2FnZSB0eXBlLgotICBSdHBQYXJhbWV0ZXJzIGludmFsaWRfZmVlZGJh
Y2sgPSBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCk7Ci0gIGludmFsaWRfZmVlZGJhY2suY29k
ZWNzWzBdLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6OkNDTSk7
Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAg
ICAgcmVjZWl2ZXItPlJlY2VpdmUoaW52YWxpZF9mZWVkYmFjaykudHlwZSgpKTsKLSAgLy8gUGF5
bG9hZCB0eXBlIGdyZWF0ZXIgdGhhbiAxMjcuCi0gIFJ0cFBhcmFtZXRlcnMgaW52YWxpZF9wdCA9
IE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgaW52YWxpZF9wdC5jb2RlY3NbMF0ucGF5
bG9hZF90eXBlID0gMTI4OwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1JBTkdF
LCByZWNlaXZlci0+UmVjZWl2ZShpbnZhbGlkX3B0KS50eXBlKCkpOwotICAvLyBEdXBsaWNhdGUg
aGVhZGVyIGV4dGVuc2lvbiBJRHMuCi0gIFJ0cFBhcmFtZXRlcnMgZHVwbGljYXRlX2lkcyA9IE1h
a2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgZHVwbGljYXRlX2lkcy5oZWFkZXJfZXh0ZW5z
aW9ucy5lbXBsYWNlX2JhY2soImZvbyIsIDUpOwotICBkdXBsaWNhdGVfaWRzLmhlYWRlcl9leHRl
bnNpb25zLmVtcGxhY2VfYmFjaygiYmFyIiwgNSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6
OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgcmVjZWl2ZXItPlJlY2VpdmUoZHVwbGlj
YXRlX2lkcykudHlwZSgpKTsKLX0KLQotLy8gVHdvIHJlY2VpdmVycyB1c2luZyB0aGUgc2FtZSB0
cmFuc3BvcnQgc2hvdWxkbid0IGJlIGFibGUgdG8gdXNlIHRoZSBzYW1lCi0vLyBwYXlsb2FkIHR5
cGUgdG8gcmVmZXIgdG8gZGlmZmVyZW50IGNvZGVjcywgc2FtZSBoZWFkZXIgZXh0ZW5zaW9uIElE
cyB0bwotLy8gcmVmZXIgdG8gZGlmZmVyZW50IGV4dGVuc2lvbnMsIG9yIHNhbWUgU1NSQy4KLVRF
U1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlUmV0dXJuc0Vycm9yT25JZENvbmZsaWN0
cykgewotICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5z
cG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywg
cnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyID0gYXVkaW9fcmVj
ZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyID0gdmlkZW9f
cmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIC8vIEZpcnN0IHRlc3QgcGF5bG9hZCB0
eXBlIGNvbmZsaWN0LgotICBSdHBQYXJhbWV0ZXJzIGF1ZGlvX3BhcmFtZXRlcnMgPSBNYWtlTWlu
aW1hbE9wdXNQYXJhbWV0ZXJzKCk7Ci0gIFJ0cFBhcmFtZXRlcnMgdmlkZW9fcGFyYW1ldGVycyA9
IE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpOwotICBhdWRpb19wYXJhbWV0ZXJzLmNvZGVjc1sw
XS5wYXlsb2FkX3R5cGUgPSAxMDA7Ci0gIHZpZGVvX3BhcmFtZXRlcnMuY29kZWNzWzBdLnBheWxv
YWRfdHlwZSA9IDEwMDsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUoYXVk
aW9fcGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURf
UEFSQU1FVEVSLAotICAgICAgICAgICAgdmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUodmlkZW9fcGFy
YW1ldGVycykudHlwZSgpKTsKLQotICAvLyBUZXN0IGhlYWRlciBleHRlbnNpb24gSUQgY29uZmxp
Y3QuCi0gIHZpZGVvX3BhcmFtZXRlcnMuY29kZWNzWzBdLnBheWxvYWRfdHlwZSA9IDExMDsKLSAg
YXVkaW9fcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soImZvbyIsIDQp
OwotICB2aWRlb19wYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygiYmFy
IiwgNCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVyLT5SZWNlaXZlKGF1ZGlvX3BhcmFt
ZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRF
UiwKLSAgICAgICAgICAgIHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKHZpZGVvX3BhcmFtZXRlcnMp
LnR5cGUoKSk7Ci0KLSAgLy8gVGVzdCBTU1JDIGNvbmZsaWN0LiBIYXZlIGFuIFJUWCBTU1JDIHRo
YXQgY29uZmxpY3RzIHdpdGggYSBwcmltYXJ5IFNTUkMKLSAgLy8gZm9yIGV4dHJhIGNoYWxsZW5n
ZS4KLSAgdmlkZW9fcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9uc1swXS51cmkgPSAiZm9vIjsK
LSAgYXVkaW9fcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYy5lbXBsYWNlKDB4YWJiYWFiYmEp
OwotICBhdWRpb19wYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5ydHguZW1wbGFjZSgweGRlYWRiZWVm
KTsKLSAgdmlkZW9fcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYy5lbXBsYWNlKDB4ZGVhZGJl
ZWYpOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShhdWRpb19wYXJhbWV0
ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIs
Ci0gICAgICAgICAgICB2aWRlb19yZWNlaXZlci0+UmVjZWl2ZSh2aWRlb19wYXJhbWV0ZXJzKS50
eXBlKCkpOwotCi0gIC8vIFNhbml0eSBjaGVjayB0aGF0IHBhcmFtZXRlcnMgY2FuIGJlIHNldCBp
ZiB0aGUgY29uZmxpY3RzIGFyZSBhbGwgcmVzb2x2ZWQuCi0gIHZpZGVvX3BhcmFtZXRlcnMuZW5j
b2RpbmdzWzBdLnNzcmMuZW1wbGFjZSgweGJhYWRmMDBkKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9f
cmVjZWl2ZXItPlJlY2VpdmUodmlkZW9fcGFyYW1ldGVycykub2soKSk7Ci19Ci0KLS8vIEVuc3Vy
ZSB0aGF0IGRlbGV0aW5nIGEgcmVjZWl2ZXIgY2F1c2VzIHJlY2VpdmUgc3RyZWFtcyBhdCB0aGUg
bWVkaWEgZW5naW5lCi0vLyBsZXZlbCB0byBiZSBjbGVhcmVkLgotVEVTVF9GKE9ydGNSdHBSZWNl
aXZlclRlc3QsIERlbGV0aW5nUmVjZWl2ZXJDbGVhcnNSZWNlaXZlU3RyZWFtcykgewotICBhdXRv
IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVy
KAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkp
OwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyID0gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1
ZSgpOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShNYWtlTWluaW1hbE9w
dXNQYXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0gIC8vIEFsc28gY3JlYXRlIGFuIGF1ZGlvIHNlbmRl
ciwgdG8gcHJldmVudCB0aGUgdm9pY2UgY2hhbm5lbCBmcm9tIGJlaW5nCi0gIC8vIGNvbXBsZXRl
bHkgZGVsZXRlZC4KLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+
Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3Ry
YW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9yZXN1
bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChNYWtlTWlu
aW1hbE9wdXNQYXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0gIGF1ZGlvX3JlY2VpdmVyLnJlc2V0KG51
bGxwdHIpOwotICBjcmlja2V0OjpGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2VfY2hh
bm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKLSAg
QVNTRVJUX05FKG51bGxwdHIsIGZha2Vfdm9pY2VfY2hhbm5lbCk7Ci0gIEVYUEVDVF9UUlVFKGZh
a2Vfdm9pY2VfY2hhbm5lbC0+cmVjdl9zdHJlYW1zKCkuZW1wdHkoKSk7Ci0KLSAgYXV0byB2aWRl
b19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAg
ICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAg
YXV0byB2aWRlb19yZWNlaXZlciA9IHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsK
LSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmltYWxWcDhQYXJh
bWV0ZXJzKCkpLm9rKCkpOwotCi0gIC8vIEFsc28gY3JlYXRlIGFuIHZpZGVvIHNlbmRlciwgdG8g
cHJldmVudCB0aGUgdmlkZW8gY2hhbm5lbCBmcm9tIGJlaW5nCi0gIC8vIGNvbXBsZXRlbHkgZGVs
ZXRlZC4KLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9y
dF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92
ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbFZw
OFBhcmFtZXRlcnMoKSkub2soKSk7Ci0KLSAgdmlkZW9fcmVjZWl2ZXIucmVzZXQobnVsbHB0cik7
Ci0gIGNyaWNrZXQ6OkZha2VWaWRlb01lZGlhQ2hhbm5lbCogZmFrZV92aWRlb19jaGFubmVsID0K
LSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0VmlkZW9DaGFubmVsKDApOwotICBBU1NFUlRf
TkUobnVsbHB0ciwgZmFrZV92aWRlb19jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92aWRl
b19jaGFubmVsLT5yZWN2X3N0cmVhbXMoKS5lbXB0eSgpKTsKLX0KLQotLy8gSWYgUmVjZWl2ZSBo
YXNuJ3QgYmVlbiBjYWxsZWQsIEdldFBhcmFtZXRlcnMgc2hvdWxkIHJldHVybiBlbXB0eSBwYXJh
bWV0ZXJzLgotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIEdldERlZmF1bHRQYXJhbWV0ZXJz
KSB7Ci0gIGF1dG8gcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoY3Jp
Y2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSdHBQ
YXJhbWV0ZXJzKCksIHJlc3VsdC52YWx1ZSgpLT5HZXRQYXJhbWV0ZXJzKCkpOwotICByZXN1bHQg
PSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcihjcmlja2V0OjpNRURJQV9UWVBFX1ZJ
REVPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBfdHJh
bnNwb3J0Xy5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSdHBQYXJhbWV0ZXJzKCksIHJlc3VsdC52YWx1
ZSgpLT5HZXRQYXJhbWV0ZXJzKCkpOwotfQotCi0vLyBUZXN0IHRoYXQgR2V0UGFyYW1ldGVycyBy
ZXR1cm5zIHRoZSBsYXN0IHBhcmFtZXRlcnMgcGFzc2VkIGludG8gUmVjZWl2ZSwKLS8vIGFsb25n
IHdpdGggdGhlIGltcGxlbWVudGF0aW9uLWRlZmF1bHQgdmFsdWVzIGZpbGxlZCBpbiB3aGVyZSB0
aGV5IHdlcmUgbGVmdAotLy8gdW5zZXQuCi1URVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVzdCwKLSAg
ICAgICBHZXRQYXJhbWV0ZXJzUmV0dXJuc0xhc3RTZXRQYXJhbWV0ZXJzV2l0aERlZmF1bHRzRmls
bGVkKSB7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3Jl
YXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJh
bnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXIgPSBhdWRpb19yZWNlaXZlcl9y
ZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgUnRwUGFyYW1ldGVycyBvcHVzX3BhcmFtZXRlcnMgPSBN
YWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVy
LT5SZWNlaXZlKG9wdXNfcGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9FUShvcHVzX3BhcmFt
ZXRlcnMsIGF1ZGlvX3JlY2VpdmVyLT5HZXRQYXJhbWV0ZXJzKCkpOwotCi0gIFJ0cFBhcmFtZXRl
cnMgaXNhY19wYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVycygpOwotICAvLyBT
YW5pdHkgY2hlY2sgdGhhdCBudW1fY2hhbm5lbHMgYWN0dWFsbHkgaXMgbGVmdCB1bnNldC4KLSAg
QVNTRVJUX0ZBTFNFKGlzYWNfcGFyYW1ldGVycy5jb2RlY3NbMF0ubnVtX2NoYW5uZWxzKTsKLSAg
RVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUoaXNhY19wYXJhbWV0ZXJzKS5vaygp
KTsKLSAgLy8gU2hvdWxkIGJlIGZpbGxlZCB3aXRoIGEgZGVmYXVsdCAibnVtIGNoYW5uZWxzIiBv
ZiAxLgotICAvLyBUT0RPKGRlYWRiZWVmKTogVGhpcyBzaG91bGQgYWN0dWFsbHkgZGVmYXVsdCB0
byAyIGZvciBzb21lIGNvZGVjcy4gVXBkYXRlCi0gIC8vIHRoaXMgdGVzdCBvbmNlIHRoYXQncyBp
bXBsZW1lbnRlZC4KLSAgaXNhY19wYXJhbWV0ZXJzLmNvZGVjc1swXS5udW1fY2hhbm5lbHMuZW1w
bGFjZSgxKTsKLSAgRVhQRUNUX0VRKGlzYWNfcGFyYW1ldGVycywgYXVkaW9fcmVjZWl2ZXItPkdl
dFBhcmFtZXRlcnMoKSk7Ci0KLSAgYXV0byB2aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2Zh
Y3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklE
RU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19yZWNlaXZlciA9IHZpZGVv
X3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICBSdHBQYXJhbWV0ZXJzIHZwOF9wYXJh
bWV0ZXJzID0gTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCk7Ci0gIC8vIFNhbml0eSBjaGVjayB0
aGF0IGNsb2NrX3JhdGUgYWN0dWFsbHkgaXMgbGVmdCB1bnNldC4KLSAgRVhQRUNUX1RSVUUodmlk
ZW9fcmVjZWl2ZXItPlJlY2VpdmUodnA4X3BhcmFtZXRlcnMpLm9rKCkpOwotICAvLyBTaG91bGQg
YmUgZmlsbGVkIHdpdGggYSBkZWZhdWx0IGNsb2NrIHJhdGUgb2YgOTAwMDAuCi0gIHZwOF9wYXJh
bWV0ZXJzLmNvZGVjc1swXS5jbG9ja19yYXRlLmVtcGxhY2UoOTAwMDApOwotICBFWFBFQ1RfRVEo
dnA4X3BhcmFtZXRlcnMsIHZpZGVvX3JlY2VpdmVyLT5HZXRQYXJhbWV0ZXJzKCkpOwotCi0gIFJ0
cFBhcmFtZXRlcnMgdnA5X3BhcmFtZXRlcnMgPSBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnMoKTsK
LSAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgY2xvY2tfcmF0ZSBhY3R1YWxseSBpcyBsZWZ0IHVuc2V0
LgotICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZlci0+UmVjZWl2ZSh2cDlfcGFyYW1ldGVycyku
b2soKSk7Ci0gIC8vIFNob3VsZCBiZSBmaWxsZWQgd2l0aCBhIGRlZmF1bHQgY2xvY2sgcmF0ZSBv
ZiA5MDAwMC4KLSAgdnA5X3BhcmFtZXRlcnMuY29kZWNzWzBdLmNsb2NrX3JhdGUuZW1wbGFjZSg5
MDAwMCk7Ci0gIEVYUEVDVF9FUSh2cDlfcGFyYW1ldGVycywgdmlkZW9fcmVjZWl2ZXItPkdldFBh
cmFtZXRlcnMoKSk7Ci19Ci0KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBHZXRLaW5kKSB7
Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRw
UmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0
Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+
Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBf
dHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXIgPSBhdWRpb19yZWNlaXZl
cl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXIgPSB2aWRlb19yZWNl
aXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9FUShjcmlja2V0OjpNRURJQV9UWVBF
X0FVRElPLCBhdWRpb19yZWNlaXZlci0+R2V0S2luZCgpKTsKLSAgRVhQRUNUX0VRKGNyaWNrZXQ6
Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3JlY2VpdmVyLT5HZXRLaW5kKCkpOwotfQotCi19ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHByZWNlaXZlcmFkYXB0ZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHByZWNlaXZlcmFk
YXB0ZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4OTQxMjIxN2FjYzhiNWQw
ZmM4NGVhNjliMzQ0Y2E3M2IyZmFkMDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
b3J0Yy9vcnRjcnRwcmVjZWl2ZXJhZGFwdGVyLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICsw
LDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJvcnRjL29ydGNydHByZWNlaXZl
cmFkYXB0ZXIuaCIKLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2lu
Y2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIK
LSNpbmNsdWRlICJvcnRjL3J0cHRyYW5zcG9ydGFkYXB0ZXIuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9oZWxwZXJzLmgiICAvLyBGb3IgIkNyZWF0
ZVJhbmRvbVgiLgotCi1uYW1lc3BhY2UgewotCi12b2lkIEZpbGxBdWRpb1JlY2VpdmVyUGFyYW1l
dGVycyh3ZWJydGM6OlJ0cFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMpIHsKLSAgZm9yICh3ZWJydGM6
OlJ0cENvZGVjUGFyYW1ldGVycyYgY29kZWMgOiBwYXJhbWV0ZXJzLT5jb2RlY3MpIHsKLSAgICBp
ZiAoIWNvZGVjLm51bV9jaGFubmVscykgewotICAgICAgY29kZWMubnVtX2NoYW5uZWxzID0gMTsK
LSAgICB9Ci0gIH0KLX0KLQotdm9pZCBGaWxsVmlkZW9SZWNlaXZlclBhcmFtZXRlcnMod2VicnRj
OjpSdHBQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKSB7Ci0gIGZvciAod2VicnRjOjpSdHBDb2RlY1Bh
cmFtZXRlcnMmIGNvZGVjIDogcGFyYW1ldGVycy0+Y29kZWNzKSB7Ci0gICAgaWYgKCFjb2RlYy5j
bG9ja19yYXRlKSB7Ci0gICAgICBjb2RlYy5jbG9ja19yYXRlID0gY3JpY2tldDo6a1ZpZGVvQ29k
ZWNDbG9ja3JhdGU7Ci0gICAgfQotICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1uYW1lc3Bh
Y2Ugd2VicnRjIHsKLQotQkVHSU5fT1dORURfUFJPWFlfTUFQKE9ydGNSdHBSZWNlaXZlcikKLVBS
T1hZX1NJR05BTElOR19USFJFQURfREVTVFJVQ1RPUigpCi1QUk9YWV9DT05TVE1FVEhPRDAocnRj
OjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+LCBHZXRUcmFjaykKLVBS
T1hZX01FVEhPRDEoUlRDRXJyb3IsIFNldFRyYW5zcG9ydCwgUnRwVHJhbnNwb3J0SW50ZXJmYWNl
KikKLVBST1hZX0NPTlNUTUVUSE9EMChSdHBUcmFuc3BvcnRJbnRlcmZhY2UqLCBHZXRUcmFuc3Bv
cnQpCi1QUk9YWV9NRVRIT0QxKFJUQ0Vycm9yLCBSZWNlaXZlLCBjb25zdCBSdHBQYXJhbWV0ZXJz
JikKLVBST1hZX0NPTlNUTUVUSE9EMChSdHBQYXJhbWV0ZXJzLCBHZXRQYXJhbWV0ZXJzKQotUFJP
WFlfQ09OU1RNRVRIT0QwKGNyaWNrZXQ6Ok1lZGlhVHlwZSwgR2V0S2luZCkKLUVORF9QUk9YWV9N
QVAoKQotCi0vLyBzdGF0aWMKLXN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwUmVjZWl2ZXJJbnRlcmZh
Y2U+IE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI6OkNyZWF0ZVByb3h5KAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyPiB3cmFwcGVkX3JlY2VpdmVyKSB7Ci0gIFJUQ19E
Q0hFQ0sod3JhcHBlZF9yZWNlaXZlcik7Ci0gIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmcgPQotICAg
ICAgd3JhcHBlZF9yZWNlaXZlci0+cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+c2lnbmFsaW5n
X3RocmVhZCgpOwotICBydGM6OlRocmVhZCogd29ya2VyID0KLSAgICAgIHdyYXBwZWRfcmVjZWl2
ZXItPnJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPndvcmtlcl90aHJlYWQoKTsKLSAgcmV0dXJu
IE9ydGNSdHBSZWNlaXZlclByb3h5OjpDcmVhdGUoc2lnbmFsaW5nLCB3b3JrZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh3cmFwcGVkX3JlY2VpdmVy
KSk7Ci19Ci0KLU9ydGNSdHBSZWNlaXZlckFkYXB0ZXI6On5PcnRjUnRwUmVjZWl2ZXJBZGFwdGVy
KCkgewotICBpbnRlcm5hbF9yZWNlaXZlcl8gPSBudWxscHRyOwotICBTaWduYWxEZXN0cm95ZWQo
KTsKLX0KLQotcnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+IE9y
dGNSdHBSZWNlaXZlckFkYXB0ZXI6OkdldFRyYWNrKCkKLSAgICBjb25zdCB7Ci0gIHJldHVybiBp
bnRlcm5hbF9yZWNlaXZlcl8gPyBpbnRlcm5hbF9yZWNlaXZlcl8tPnRyYWNrKCkgOiBudWxscHRy
OwotfQotCi1SVENFcnJvciBPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyOjpTZXRUcmFuc3BvcnQoCi0g
ICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQpIHsKLSAgTE9HX0FORF9SRVRVUk5f
RVJST1IoCi0gICAgICBSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAg
ICJDaGFuZ2luZyB0aGUgdHJhbnNwb3J0IG9mIGFuIFJ0cFJlY2VpdmVyIGlzIG5vdCB5ZXQgc3Vw
cG9ydGVkLiIpOwotfQotCi1SdHBUcmFuc3BvcnRJbnRlcmZhY2UqIE9ydGNSdHBSZWNlaXZlckFk
YXB0ZXI6OkdldFRyYW5zcG9ydCgpIGNvbnN0IHsKLSAgcmV0dXJuIHRyYW5zcG9ydF87Ci19Ci0K
LVJUQ0Vycm9yIE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI6OlJlY2VpdmUoY29uc3QgUnRwUGFyYW1l
dGVycyYgcGFyYW1ldGVycykgewotICBSdHBQYXJhbWV0ZXJzIGZpbGxlZF9wYXJhbWV0ZXJzID0g
cGFyYW1ldGVyczsKLSAgUlRDRXJyb3IgZXJyOwotICBzd2l0Y2ggKGtpbmRfKSB7Ci0gICAgY2Fz
ZSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOgotICAgICAgRmlsbEF1ZGlvUmVjZWl2ZXJQYXJh
bWV0ZXJzKCZmaWxsZWRfcGFyYW1ldGVycyk7Ci0gICAgICBlcnIgPSBydHBfdHJhbnNwb3J0X2Nv
bnRyb2xsZXJfLT5WYWxpZGF0ZUFuZEFwcGx5QXVkaW9SZWNlaXZlclBhcmFtZXRlcnMoCi0gICAg
ICAgICAgZmlsbGVkX3BhcmFtZXRlcnMpOwotICAgICAgaWYgKCFlcnIub2soKSkgewotICAgICAg
ICByZXR1cm4gZXJyOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBjcmlja2V0OjpN
RURJQV9UWVBFX1ZJREVPOgotICAgICAgRmlsbFZpZGVvUmVjZWl2ZXJQYXJhbWV0ZXJzKCZmaWxs
ZWRfcGFyYW1ldGVycyk7Ci0gICAgICBlcnIgPSBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5W
YWxpZGF0ZUFuZEFwcGx5VmlkZW9SZWNlaXZlclBhcmFtZXRlcnMoCi0gICAgICAgICAgZmlsbGVk
X3BhcmFtZXRlcnMpOwotICAgICAgaWYgKCFlcnIub2soKSkgewotICAgICAgICByZXR1cm4gZXJy
OwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0RB
VEE6Ci0gICAgICBSVENfTk9UUkVBQ0hFRCgpOwotICAgICAgcmV0dXJuIHdlYnJ0Yzo6UlRDRXJy
b3Iod2VicnRjOjpSVENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SKTsKLSAgfQotICBsYXN0X2Fw
cGxpZWRfcGFyYW1ldGVyc18gPSBmaWxsZWRfcGFyYW1ldGVyczsKLQotICAvLyBOb3cgdGhhdCBw
YXJhbWV0ZXJzIHdlcmUgYXBwbGllZCwgY2FuIGNyZWF0ZSAob3IgcmVjcmVhdGUpIHRoZSBpbnRl
cm5hbAotICAvLyByZWNlaXZlci4KLSAgLy8KLSAgLy8gVGhpcyBpcyBhbmFsb2dvdXMgdG8gYSBQ
ZWVyQ29ubmVjdGlvbiBjcmVhdGluZyBhIHJlY2VpdmVyIGFmdGVyCi0gIC8vIFNldFJlbW90ZURl
c2NyaXB0aW9uIGlzIHN1Y2Nlc3NmdWwuCi0gIE1heWJlUmVjcmVhdGVJbnRlcm5hbFJlY2VpdmVy
KCk7Ci0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQotUnRwUGFyYW1ldGVycyBPcnRjUnRw
UmVjZWl2ZXJBZGFwdGVyOjpHZXRQYXJhbWV0ZXJzKCkgY29uc3QgewotICByZXR1cm4gbGFzdF9h
cHBsaWVkX3BhcmFtZXRlcnNfOwotfQotCi1jcmlja2V0OjpNZWRpYVR5cGUgT3J0Y1J0cFJlY2Vp
dmVyQWRhcHRlcjo6R2V0S2luZCgpIGNvbnN0IHsKLSAgcmV0dXJuIGtpbmRfOwotfQotCi1PcnRj
UnRwUmVjZWl2ZXJBZGFwdGVyOjpPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyKAotICAgIGNyaWNrZXQ6
Ok1lZGlhVHlwZSBraW5kLAotICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0LAot
ICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKiBydHBfdHJhbnNwb3J0X2NvbnRyb2xs
ZXIpCi0gICAgOiBraW5kXyhraW5kKSwKLSAgICAgIHRyYW5zcG9ydF8odHJhbnNwb3J0KSwKLSAg
ICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8ocnRwX3RyYW5zcG9ydF9jb250cm9sbGVyKSB7
fQotCi12b2lkIE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI6Ok1heWJlUmVjcmVhdGVJbnRlcm5hbFJl
Y2VpdmVyKCkgewotICBpZiAobGFzdF9hcHBsaWVkX3BhcmFtZXRlcnNfLmVuY29kaW5ncy5lbXB0
eSgpKSB7Ci0gICAgaW50ZXJuYWxfcmVjZWl2ZXJfID0gbnVsbHB0cjsKLSAgICByZXR1cm47Ci0g
IH0KLSAgLy8gQW4gU1NSQyBvZiAwIGlzIHZhbGlkOyB0aGlzIGlzIHVzZWQgdG8gaWRlbnRpZnkg
InRoZSBkZWZhdWx0IFNTUkMiICh3aGljaAotICAvLyBpcyB0aGUgZmlyc3Qgb25lIHNlZW4gYnkg
dGhlIHVuZGVybHlpbmcgbWVkaWEgZW5naW5lKS4KLSAgdWludDMyX3Qgc3NyYyA9IDA7Ci0gIGlm
IChsYXN0X2FwcGxpZWRfcGFyYW1ldGVyc18uZW5jb2RpbmdzWzBdLnNzcmMpIHsKLSAgICBzc3Jj
ID0gKmxhc3RfYXBwbGllZF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3NbMF0uc3NyYzsKLSAgfQotICBp
ZiAoaW50ZXJuYWxfcmVjZWl2ZXJfICYmIHNzcmMgPT0gaW50ZXJuYWxfcmVjZWl2ZXJfLT5zc3Jj
KCkpIHsKLSAgICAvLyBTU1JDIG5vdCBjaGFuZ2luZzsgbm90aGluZyB0byBkby4KLSAgICByZXR1
cm47Ci0gIH0KLSAgaW50ZXJuYWxfcmVjZWl2ZXJfID0gbnVsbHB0cjsKLSAgc3dpdGNoIChraW5k
XykgewotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzogewotICAgICAgYXV0byog
YXVkaW9fcmVjZWl2ZXIgPSBuZXcgQXVkaW9SdHBSZWNlaXZlcigKLSAgICAgICAgICBydHBfdHJh
bnNwb3J0X2NvbnRyb2xsZXJfLT53b3JrZXJfdGhyZWFkKCksIHJ0Yzo6Q3JlYXRlUmFuZG9tVXVp
ZCgpLAotICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPih7fSkpOwotICAgICAgYXV0
byogdm9pY2VfY2hhbm5lbCA9IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPnZvaWNlX2NoYW5u
ZWwoKTsKLSAgICAgIFJUQ19EQ0hFQ0sodm9pY2VfY2hhbm5lbCk7Ci0gICAgICBhdWRpb19yZWNl
aXZlci0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwodm9pY2VfY2hhbm5lbC0+bWVkaWFfY2hhbm5lbCgp
KTsKLSAgICAgIGludGVybmFsX3JlY2VpdmVyXyA9IGF1ZGlvX3JlY2VpdmVyOwotICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzogewotICAgICAg
YXV0byogdmlkZW9fcmVjZWl2ZXIgPSBuZXcgVmlkZW9SdHBSZWNlaXZlcigKLSAgICAgICAgICBy
dHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT53b3JrZXJfdGhyZWFkKCksIHJ0Yzo6Q3JlYXRlUmFu
ZG9tVXVpZCgpLAotICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPih7fSkpOwotICAg
ICAgYXV0byogdmlkZW9fY2hhbm5lbCA9IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPnZpZGVv
X2NoYW5uZWwoKTsKLSAgICAgIFJUQ19EQ0hFQ0sodmlkZW9fY2hhbm5lbCk7Ci0gICAgICB2aWRl
b19yZWNlaXZlci0+U2V0VmlkZW9NZWRpYUNoYW5uZWwodmlkZW9fY2hhbm5lbC0+bWVkaWFfY2hh
bm5lbCgpKTsKLSAgICAgIGludGVybmFsX3JlY2VpdmVyXyA9IHZpZGVvX3JlY2VpdmVyOwotICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9EQVRBOgotICAg
ICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgfQotICBpbnRlcm5hbF9yZWNlaXZlcl8tPlNldHVwTWVk
aWFDaGFubmVsKHNzcmMpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHBy
ZWNlaXZlcmFkYXB0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyYWRhcHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0NjQ3YjA0MzE0NWFkYWU0YjAyZjg3Mjc1MTMzYzdlYmVhNTlkM2NlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyYWRhcHRlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQot
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRl
ZiBPUlRDX09SVENSVFBSRUNFSVZFUkFEQVBURVJfSF8KLSNkZWZpbmUgT1JUQ19PUlRDUlRQUkVD
RUlWRVJBREFQVEVSX0hfCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvb3J0
Yy9vcnRjcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvcnRjZXJyb3IuaCIK
LSNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgotI2luY2x1ZGUgIm9ydGMvcnRwdHJhbnNw
b3J0Y29udHJvbGxlcmFkYXB0ZXIuaCIKLSNpbmNsdWRlICJwYy9ydHByZWNlaXZlci5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90
aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQu
aCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIEltcGxlbWVudGF0aW9uIG9mIE9ydGNSdHBS
ZWNlaXZlckludGVyZmFjZSB0aGF0IHdvcmtzIHdpdGgKLS8vIFJ0cFRyYW5zcG9ydEFkYXB0ZXIs
IGFuZCB3cmFwcyBhIFZpZGVvUnRwUmVjZWl2ZXIvQXVkaW9SdHBSZWNlaXZlciB0aGF0J3MKLS8v
IG5vcm1hbGx5IHVzZWQgd2l0aCB0aGUgUGVlckNvbm5lY3Rpb24uCi0vLwotLy8gVE9ETyhkZWFk
YmVlZik6IFdoZW4gQmFzZUNoYW5uZWwgaXMgc3BsaXQgYXBhcnQgaW50byBzZXBhcmF0ZQotLy8g
IlJ0cFJlY2VpdmVyIi8iUnRwVHJhbnNjZWl2ZXIiLyJSdHBSZWNlaXZlciIvIlJ0cFJlY2VpdmVy
IiBvYmplY3RzLCB0aGlzCi0vLyBhZGFwdGVyIG9iamVjdCBjYW4gYmUgcmVtb3ZlZC4KLWNsYXNz
IE9ydGNSdHBSZWNlaXZlckFkYXB0ZXIgOiBwdWJsaWMgT3J0Y1J0cFJlY2VpdmVySW50ZXJmYWNl
IHsKLSBwdWJsaWM6Ci0gIC8vIFdyYXBzIHx3cmFwcGVkX3JlY2VpdmVyfCBpbiBhIHByb3h5IHRo
YXQgd2lsbCBzYWZlbHkgY2FsbCBtZXRob2RzIG9uIHRoZQotICAvLyBjb3JyZWN0IHRocmVhZC4K
LSAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwUmVjZWl2ZXJJbnRlcmZhY2U+IENyZWF0
ZVByb3h5KAotICAgICAgc3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI+IHdy
YXBwZWRfcmVjZWl2ZXIpOwotCi0gIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSBSdHBUcmFu
c3BvcnRDb250cm9sbGVyQWRhcHRlci4KLSAgT3J0Y1J0cFJlY2VpdmVyQWRhcHRlcigKLSAgICAg
IGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0
cmFuc3BvcnQsCi0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogcnRwX3RyYW5z
cG9ydF9jb250cm9sbGVyKTsKLSAgfk9ydGNSdHBSZWNlaXZlckFkYXB0ZXIoKSBvdmVycmlkZTsK
LQotICAvLyBPcnRjUnRwUmVjZWl2ZXJJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uCi0gIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlPiBHZXRUcmFjaygpIGNvbnN0
IG92ZXJyaWRlOwotCi0gIFJUQ0Vycm9yIFNldFRyYW5zcG9ydChSdHBUcmFuc3BvcnRJbnRlcmZh
Y2UqIHRyYW5zcG9ydCkgb3ZlcnJpZGU7Ci0gIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogR2V0VHJh
bnNwb3J0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgUlRDRXJyb3IgUmVjZWl2ZShjb25zdCBSdHBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBvdmVycmlkZTsKLSAgUnRwUGFyYW1ldGVycyBHZXRQYXJh
bWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgY3JpY2tldDo6TWVkaWFUeXBlIEdldEtpbmQo
KSBjb25zdCBvdmVycmlkZTsKLQotICAvLyBVc2VkIHNvIHRoYXQgdGhlIFJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJBZGFwdGVyIGtub3dzIHdoZW4gaXQgY2FuCi0gIC8vIGRlYWxsb2NhdGUgcmVzb3Vy
Y2VzIGFsbG9jYXRlZCBmb3IgdGhpcyBvYmplY3QuCi0gIHNpZ3Nsb3Q6OnNpZ25hbDA8PiBTaWdu
YWxEZXN0cm95ZWQ7Ci0KLSBwcml2YXRlOgotICB2b2lkIE1heWJlUmVjcmVhdGVJbnRlcm5hbFJl
Y2VpdmVyKCk7Ci0KLSAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmRfOwotICBSdHBUcmFuc3BvcnRJ
bnRlcmZhY2UqIHRyYW5zcG9ydF87Ci0gIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKiBy
dHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfOwotICAvLyBTY29wZWQgcmVmcHRyIGR1ZSB0byByZWYt
Y291bnRlZCBpbnRlcmZhY2UsIGJ1dCB3ZSBzaG91bGQgYmUgdGhlIG9ubHkKLSAgLy8gcmVmZXJl
bmNlIGhvbGRlci4KLSAgcnRjOjpzY29wZWRfcmVmcHRyPFJ0cFJlY2VpdmVySW50ZXJuYWw+IGlu
dGVybmFsX3JlY2VpdmVyXzsKLSAgUnRwUGFyYW1ldGVycyBsYXN0X2FwcGxpZWRfcGFyYW1ldGVy
c187Ci0KLSAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhPcnRjUnRwUmVjZWl2
ZXJBZGFwdGVyKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBP
UlRDX09SVENSVFBSRUNFSVZFUkFEQVBURVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHNlbmRlcl91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0
cHNlbmRlcl91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhiZDhm
OTM5MzQ1MzhiNTFhYzhmMDYyZmUwOTA3ZTQwMDMxMDUyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHBzZW5kZXJfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApA
QCAtMSw2NzAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQot
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4K
LQotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3Rv
cnkuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5LmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKLSNpbmNs
dWRlICJvcnRjL29ydGNmYWN0b3J5LmgiCi0jaW5jbHVkZSAib3J0Yy90ZXN0cnRwcGFyYW1ldGVy
cy5oIgotI2luY2x1ZGUgInAycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaCIKLSNpbmNsdWRl
ICJwYy90ZXN0L2Zha2V2aWRlb3RyYWNrc291cmNlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3Vu
aXQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFRoaXMgdGVzdCB1c2VzIGFuIGluZGl2
aWR1YWwgUnRwU2VuZGVyIHVzaW5nIG9ubHkgdGhlIHB1YmxpYyBpbnRlcmZhY2UsIGFuZAotLy8g
dmVyaWZpZXMgdGhhdCBpdHMgYmVoYXZlcyBhcyBkZXNpZ25lZCBhdCBhbiBBUEkgbGV2ZWwuIEFs
c28gdGVzdHMgdGhhdAotLy8gcGFyYW1ldGVycyBhcmUgYXBwbGllZCB0byB0aGUgYXVkaW8vdmlk
ZW8gZW5naW5lcyBhcyBleHBlY3RlZC4gTmV0d29yayBhbmQKLS8vIG1lZGlhIGludGVyZmFjZXMg
YXJlIGZha2VkIHRvIGlzb2xhdGUgd2hhdCdzIGJlaW5nIHRlc3RlZC4KLS8vCi0vLyBUaGlzIHRl
c3Qgc2hvdWxkbid0IHJlc3VsdCBhbnkgYW55IGFjdHVhbCBtZWRpYSBiZWluZyBzZW50LiBUaGF0
IHNvcnQgb2YKLS8vIHRlc3Qgc2hvdWxkIGdvIGluIG9ydGNmYWN0b3J5X2ludGVncmF0aW9udGVz
dC5jYy4KLWNsYXNzIE9ydGNSdHBTZW5kZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
IHB1YmxpYzoKLSAgT3J0Y1J0cFNlbmRlclRlc3QoKSA6IGZha2VfcGFja2V0X3RyYW5zcG9ydF8o
ImZha2UiKSB7Ci0gICAgLy8gTmVlZCB0byBzZXQgdGhlIGZha2UgcGFja2V0IHRyYW5zcG9ydCB0
byB3cml0YWJsZSwgaW4gb3JkZXIgdG8gdGVzdCB0aGF0Ci0gICAgLy8gdGhlICJzZW5kIiBmbGFn
IGlzIGFwcGxpZWQgdG8gdGhlIG1lZGlhIGVuZ2luZSBiYXNlZCBvbiB0aGUgZW5jb2RpbmcKLSAg
ICAvLyB8YWN0aXZlfCBmbGFnLgotICAgIGZha2VfcGFja2V0X3RyYW5zcG9ydF8uU2V0V3JpdGFi
bGUodHJ1ZSk7Ci0gICAgZmFrZV9tZWRpYV9lbmdpbmVfID0gbmV3IGNyaWNrZXQ6OkZha2VNZWRp
YUVuZ2luZSgpOwotICAgIC8vIE5vdGU6IFRoaXMgZG9lc24ndCBuZWVkIHRvIHVzZSBmYWtlIG5l
dHdvcmsgY2xhc3Nlcywgc2luY2Ugd2UgYWxyZWFkeQotICAgIC8vIHVzZSBGYWtlUGFja2V0VHJh
bnNwb3J0LgotICAgIGF1dG8gb3J0Y19mYWN0b3J5X3Jlc3VsdCA9IE9ydGNGYWN0b3J5OjpDcmVh
dGUoCi0gICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4o
ZmFrZV9tZWRpYV9lbmdpbmVfKSwKLSAgICAgICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZh
Y3RvcnkoKSwgQ3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSk7Ci0gICAgb3J0Y19m
YWN0b3J5XyA9IG9ydGNfZmFjdG9yeV9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gICAgUnRwVHJhbnNw
b3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMucnRjcC5tdXggPSB0cnVl
OwotICAgIGF1dG8gcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBUcmFuc3BvcnQoCi0gICAgICAgIHBhcmFtZXRlcnMsICZmYWtlX3BhY2tldF90cmFuc3BvcnRf
LCBudWxscHRyLCBudWxscHRyKTsKLSAgICBydHBfdHJhbnNwb3J0XyA9IHJ0cF90cmFuc3BvcnRf
cmVzdWx0Lk1vdmVWYWx1ZSgpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb1RyYWNrSW50ZXJmYWNlPiBDcmVhdGVBdWRpb1RyYWNrKAotICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIGlkKSB7Ci0gICAgcmV0dXJuIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZUF1ZGlv
VHJhY2soaWQsIG51bGxwdHIpOwotICB9Ci0KLSAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvVHJh
Y2tJbnRlcmZhY2U+IENyZWF0ZVZpZGVvVHJhY2soCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
aWQpIHsKLSAgICByZXR1cm4gcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0lu
dGVyZmFjZT4oCi0gICAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVZpZGVvVHJhY2soaWQsIEZh
a2VWaWRlb1RyYWNrU291cmNlOjpDcmVhdGUoKSkpOwotICB9Ci0KLSAgLy8gT3duZWQgYnkgfG9y
dGNfZmFjdG9yeV98LgotICBjcmlja2V0OjpGYWtlTWVkaWFFbmdpbmUqIGZha2VfbWVkaWFfZW5n
aW5lXzsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IGZha2VfcGFja2V0X3RyYW5zcG9ydF87
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4gb3J0Y19mYWN0b3J5XzsK
LSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVyZmFjZT4gcnRwX3RyYW5zcG9ydF87
Ci19OwotCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIEdldEFuZFNldFRyYWNrKSB7Ci0gIC8v
IFRlc3QgR2V0VHJhY2sgd2l0aCBhIHNlbmRlciBjb25zdHJ1Y3RlZCB3aXRoIGEgdHJhY2suCi0g
IGF1dG8gYXVkaW9fdHJhY2sgPSBDcmVhdGVBdWRpb1RyYWNrKCJhdWRpbyIpOwotICBhdXRvIGF1
ZGlvX3NlbmRlcl9yZXN1bHQgPQotICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVy
KGF1ZGlvX3RyYWNrLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVy
ID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX0VRKGF1ZGlvX3Ry
YWNrLCBhdWRpb19zZW5kZXItPkdldFRyYWNrKCkpOwotCi0gIC8vIFRlc3QgR2V0VHJhY2sgYWZ0
ZXIgU2V0VHJhY2suCi0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8t
PkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90
cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVz
dWx0Lk1vdmVWYWx1ZSgpOwotICBhdXRvIHZpZGVvX3RyYWNrID0gQ3JlYXRlVmlkZW9UcmFjaygi
dmlkZW8xIik7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2V0VHJhY2sodmlkZW9fdHJh
Y2spLm9rKCkpOwotICBFWFBFQ1RfRVEodmlkZW9fdHJhY2ssIHZpZGVvX3NlbmRlci0+R2V0VHJh
Y2soKSk7Ci0gIHZpZGVvX3RyYWNrID0gQ3JlYXRlVmlkZW9UcmFjaygidmlkZW8yIik7Ci0gIEVY
UEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2V0VHJhY2sodmlkZW9fdHJhY2spLm9rKCkpOwotICBF
WFBFQ1RfRVEodmlkZW9fdHJhY2ssIHZpZGVvX3NlbmRlci0+R2V0VHJhY2soKSk7Ci19Ci0KLS8v
IFRlc3QgdGhhdCB0cmFjayBjYW4gYmUgc2V0IHdoZW4gcHJldmlvdXNseSB1bnNldCwgZXZlbiBh
ZnRlciBTZW5kIGhhcyBiZWVuCi0vLyBjYWxsZWQuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3Qs
IFNldFRyYWNrV2hpbGVTZW5kaW5nKSB7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9y
dGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVf
QVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRp
b19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXIt
PlNlbmQoTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUo
YXVkaW9fc2VuZGVyLT5TZXRUcmFjayhDcmVhdGVBdWRpb1RyYWNrKCJhdWRpbyIpKS5vaygpKTsK
LQotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBT
ZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5n
ZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFs
dWUoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsVnA4UGFy
YW1ldGVycygpKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZXRUcmFjayhD
cmVhdGVWaWRlb1RyYWNrKCJ2aWRlbyIpKS5vaygpKTsKLX0KLQotLy8gVGVzdCB0aGF0IHRyYWNr
IGNhbiBiZSBjaGFuZ2VkIG1pZC1zZW5kaW5nLiBEaWZmZXJzIGZyb20gdGhlIGFib3ZlIHRlc3Qg
aW4KLS8vIHRoYXQgdGhlIHRyYWNrIGlzIHNldCBhbmQgYmVpbmcgY2hhbmdlZCwgcmF0aGVyIHRo
YW4gdW5zZXQgYW5kIGJlaW5nIHNldCBmb3IKLS8vIHRoZSBmaXJzdCB0aW1lLgotVEVTVF9GKE9y
dGNSdHBTZW5kZXJUZXN0LCBDaGFuZ2VUcmFja1doaWxlU2VuZGluZykgewotICBhdXRvIGF1ZGlv
X3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBD
cmVhdGVBdWRpb1RyYWNrKCJhdWRpbzEiKSwgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRv
IGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVD
VF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkpLm9r
KCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNldFRyYWNrKENyZWF0ZUF1ZGlvVHJh
Y2soImF1ZGlvMiIpKS5vaygpKTsKLQotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRj
X2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBDcmVhdGVWaWRlb1RyYWNrKCJ2aWRl
bzEiKSwgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVv
X3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+
U2VuZChNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKSkub2soKSk7Ci0gIEVYUEVDVF9UUlVFKHZp
ZGVvX3NlbmRlci0+U2V0VHJhY2soQ3JlYXRlVmlkZW9UcmFjaygidmlkZW8yIikpLm9rKCkpOwot
fQotCi0vLyBUZXN0IHRoYXQgdHJhY2sgY2FuIGJlIHNldCB0byBudWxsIHdoaWxlIHNlbmRpbmcu
Ci1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIFVuc2V0VHJhY2tXaGlsZVNlbmRpbmcpIHsKLSAg
YXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVy
KAotICAgICAgQ3JlYXRlQXVkaW9UcmFjaygiYXVkaW8iKSwgcnRwX3RyYW5zcG9ydF8uZ2V0KCkp
OwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7
Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbE9wdXNQYXJhbWV0
ZXJzKCkpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNldFRyYWNrKG51bGxw
dHIpLm9rKCkpOwotCi0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8t
PkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIENyZWF0ZVZpZGVvVHJhY2soInZpZGVvIiksIHJ0cF90
cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVz
dWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNlbmQoTWFrZU1p
bmltYWxWcDhQYXJhbWV0ZXJzKCkpLm9rKCkpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXIt
PlNldFRyYWNrKG51bGxwdHIpLm9rKCkpOwotfQotCi0vLyBTaG91bGRuJ3QgYmUgYWJsZSB0byBz
ZXQgYW4gYXVkaW8gdHJhY2sgb24gYSB2aWRlbyBzZW5kZXIgb3IgdmljZSB2ZXJzYS4KLVRFU1Rf
RihPcnRjUnRwU2VuZGVyVGVzdCwgU2V0VHJhY2tPZldyb25nS2luZEZhaWxzKSB7Ci0gIGF1dG8g
YXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAg
ICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAg
YXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBF
WFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgIGF1
ZGlvX3NlbmRlci0+U2V0VHJhY2soQ3JlYXRlVmlkZW9UcmFjaygidmlkZW8iKSkudHlwZSgpKTsK
LQotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBT
ZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5n
ZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFs
dWUoKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAg
ICAgICAgICB2aWRlb19zZW5kZXItPlNldFRyYWNrKENyZWF0ZUF1ZGlvVHJhY2soImF1ZGlvIikp
LnR5cGUoKSk7Ci19Ci0KLS8vIEN1cnJlbnRseSBTZXRUcmFuc3BvcnQgaXNuJ3Qgc3VwcG9ydGVk
LiBXaGVuIGl0IGlzLCByZXBsYWNlIHRoaXMgdGVzdCB3aXRoIGEKLS8vIHRlc3QvdGVzdHMgZm9y
IGl0LgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBTZXRUcmFuc3BvcnRGYWlscykgewotICBy
dGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRfdHJhbnNwb3J0KCJhbm90aGVyX3Ry
YW5zcG9ydCIpOwotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFt
ZXRlcnMucnRjcC5tdXggPSB0cnVlOwotICBhdXRvIHJ0cF90cmFuc3BvcnRfcmVzdWx0ID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgcGFyYW1ldGVycywgJmZha2Vf
cGFja2V0X3RyYW5zcG9ydCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIGF1dG8gcnRwX3RyYW5zcG9y
dCA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIGF1dG8gc2VuZGVyX3Jl
c3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcihjcmlja2V0OjpNRURJQV9UWVBF
X0FVRElPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHNlbmRlciA9IHNlbmRlcl9yZXN1
bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09Q
RVJBVElPTiwKLSAgICAgICAgICAgIHNlbmRlci0+U2V0VHJhbnNwb3J0KHJ0cF90cmFuc3BvcnQu
Z2V0KCkpLnR5cGUoKSk7Ci19Ci0KLVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwgR2V0VHJhbnNw
b3J0KSB7Ci0gIGF1dG8gcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNy
aWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgRVhQRUNUX0VRKHJ0cF90
cmFuc3BvcnRfLmdldCgpLCByZXN1bHQudmFsdWUoKS0+R2V0VHJhbnNwb3J0KCkpOwotfQotCi0v
LyBUZXN0IHRoYXQgIlNlbmQiIGNhdXNlcyB0aGUgZXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBh
cHBsaWVkIHRvIHRoZSBtZWRpYQotLy8gZW5naW5lIGxldmVsLCBmb3IgYW4gYXVkaW8gc2VuZGVy
LgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBTZW5kQXBwbGllc0F1ZGlvUGFyYW1ldGVyc1Rv
TWVkaWFFbmdpbmUpIHsKLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5
Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRw
X3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9y
ZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gRmlyc3QsIGNyZWF0ZSBwYXJhbWV0ZXJzIHdpdGgg
YWxsIHRoZSBiZWxscyBhbmQgd2hpc3RsZXMuCi0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVyczsK
LQotICBSdHBDb2RlY1BhcmFtZXRlcnMgb3B1c19jb2RlYzsKLSAgb3B1c19jb2RlYy5uYW1lID0g
Im9wdXMiOwotICBvcHVzX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOwot
ICBvcHVzX2NvZGVjLnBheWxvYWRfdHlwZSA9IDEyMDsKLSAgb3B1c19jb2RlYy5jbG9ja19yYXRl
LmVtcGxhY2UoNDgwMDApOwotICBvcHVzX2NvZGVjLm51bV9jaGFubmVscy5lbXBsYWNlKDIpOwot
ICBvcHVzX2NvZGVjLnBhcmFtZXRlcnNbIm1pbnB0aW1lIl0gPSAiMTAiOwotICBvcHVzX2NvZGVj
LnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6OlRSQU5TUE9SVF9D
Qyk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUob3B1c19jb2RlYykp
OwotCi0gIC8vIEFkZCB0d28gY29kZWNzLCBleHBlY3RpbmcgdGhlIGZpcnN0IHRvIGJlIHVzZWQu
Ci0gIC8vIFRPRE8oZGVhZGJlZWYpOiBPbmNlICJjb2RlY19wYXlsb2FkX3R5cGUiIGlzIHN1cHBv
cnRlZCwgdXNlIGl0IHRvIHNlbGVjdCBhCi0gIC8vIGNvZGVjIHRoYXQncyBub3QgYXQgdGhlIHRv
cCBvZiB0aGUgbGlzdC4KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIGlzYWNfY29kZWM7Ci0gIGlzYWNf
Y29kZWMubmFtZSA9ICJJU0FDIjsKLSAgaXNhY19jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFf
VFlQRV9BVURJTzsKLSAgaXNhY19jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMTA7Ci0gIGlzYWNfY29k
ZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDE2MDAwKTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9i
YWNrKHN0ZDo6bW92ZShpc2FjX2NvZGVjKSk7Ci0KLSAgUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIGVu
Y29kaW5nOwotICBlbmNvZGluZy5zc3JjLmVtcGxhY2UoMHhkZWFkYmVlZik7Ci0gIGVuY29kaW5n
Lm1heF9iaXRyYXRlX2Jwcy5lbXBsYWNlKDIwMDAwKTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3Mu
cHVzaF9iYWNrKHN0ZDo6bW92ZShlbmNvZGluZykpOwotCi0gIHBhcmFtZXRlcnMuaGVhZGVyX2V4
dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAotICAgICAgInVybjppZXRmOnBhcmFtczpydHAtaGRyZXh0
OnNzcmMtYXVkaW8tbGV2ZWwiLCAzKTsKLQotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNl
bmQocGFyYW1ldGVycykub2soKSk7Ci0KLSAgLy8gTm93IHZlcmlmeSB0aGF0IHRoZSBwYXJhbWV0
ZXJzIHdlcmUgYXBwbGllZCB0byB0aGUgZmFrZSBtZWRpYSBlbmdpbmUgbGF5ZXIKLSAgLy8gdGhh
dCBleGlzdHMgYmVsb3cgQmFzZUNoYW5uZWwuCi0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hh
bm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0
Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVs
KTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kaW5nKCkpOwotCi0gIC8v
IFZlcmlmeSBjb2RlYyBwYXJhbWV0ZXJzLgotICBBU1NFUlRfR1QoZmFrZV92b2ljZV9jaGFubmVs
LT5zZW5kX2NvZGVjcygpLnNpemUoKSwgMHUpOwotICBjb25zdCBjcmlja2V0OjpBdWRpb0NvZGVj
JiB0b3BfY29kZWMgPSBmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfY29kZWNzKClbMF07Ci0gIEVY
UEVDVF9FUSgib3B1cyIsIHRvcF9jb2RlYy5uYW1lKTsKLSAgRVhQRUNUX0VRKDEyMCwgdG9wX2Nv
ZGVjLmlkKTsKLSAgRVhQRUNUX0VRKDQ4MDAwLCB0b3BfY29kZWMuY2xvY2tyYXRlKTsKLSAgRVhQ
RUNUX0VRKDJ1LCB0b3BfY29kZWMuY2hhbm5lbHMpOwotICBBU1NFUlRfTkUodG9wX2NvZGVjLnBh
cmFtcy5lbmQoKSwgdG9wX2NvZGVjLnBhcmFtcy5maW5kKCJtaW5wdGltZSIpKTsKLSAgRVhQRUNU
X0VRKCIxMCIsIHRvcF9jb2RlYy5wYXJhbXMuYXQoIm1pbnB0aW1lIikpOwotCi0gIC8vIFZlcmlm
eSBlbmNvZGluZyBwYXJhbWV0ZXJzLgotICBFWFBFQ1RfRVEoMjAwMDAsIGZha2Vfdm9pY2VfY2hh
bm5lbC0+bWF4X2JwcygpKTsKLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZvaWNlX2NoYW5uZWwtPnNl
bmRfc3RyZWFtcygpLnNpemUoKSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYgc2Vu
ZF9zdHJlYW0gPQotICAgICAgZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVswXTsK
LSAgRVhQRUNUX0VRKDF1LCBzZW5kX3N0cmVhbS5zc3Jjcy5zaXplKCkpOwotICBFWFBFQ1RfRVEo
MHhkZWFkYmVlZiwgc2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpKTsKLQotICAvLyBWZXJpZnkgaGVh
ZGVyIGV4dGVuc2lvbnMuCi0gIEFTU0VSVF9FUSgxdSwgZmFrZV92b2ljZV9jaGFubmVsLT5zZW5k
X2V4dGVuc2lvbnMoKS5zaXplKCkpOwotICBjb25zdCBSdHBFeHRlbnNpb24mIGV4dGVuc2lvbiA9
IGZha2Vfdm9pY2VfY2hhbm5lbC0+c2VuZF9leHRlbnNpb25zKClbMF07Ci0gIEVYUEVDVF9FUSgi
dXJuOmlldGY6cGFyYW1zOnJ0cC1oZHJleHQ6c3NyYy1hdWRpby1sZXZlbCIsIGV4dGVuc2lvbi51
cmkpOwotICBFWFBFQ1RfRVEoMywgZXh0ZW5zaW9uLmlkKTsKLX0KLQotLy8gVGVzdCB0aGF0ICJT
ZW5kIiBjYXVzZXMgdGhlIGV4cGVjdGVkIHBhcmFtZXRlcnMgdG8gYmUgYXBwbGllZCB0byB0aGUg
bWVkaWEKLS8vIGVuZ2luZSBsZXZlbCwgZm9yIGEgdmlkZW8gc2VuZGVyLgotVEVTVF9GKE9ydGNS
dHBTZW5kZXJUZXN0LCBTZW5kQXBwbGllc1ZpZGVvUGFyYW1ldGVyc1RvTWVkaWFFbmdpbmUpIHsK
LSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2Vu
ZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0
KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVl
KCk7Ci0KLSAgLy8gRmlyc3QsIGNyZWF0ZSBwYXJhbWV0ZXJzIHdpdGggYWxsIHRoZSBiZWxscyBh
bmQgd2hpc3RsZXMuCi0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICBSdHBDb2RlY1Bh
cmFtZXRlcnMgdnA4X2NvZGVjOwotICB2cDhfY29kZWMubmFtZSA9ICJWUDgiOwotICB2cDhfY29k
ZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0gIHZwOF9jb2RlYy5wYXlsb2Fk
X3R5cGUgPSA5OTsKLSAgLy8gVHJ5IGEgY291cGxlIHR5cGVzIG9mIGZlZWRiYWNrIHBhcmFtcy4g
IkdlbmVyaWMgTkFDSyIgaXMgYSBiaXQgb2YgYQotICAvLyBzcGVjaWFsIGNhc2UsIHNvIHRlc3Qg
aXQgaGVyZS4KLSAgdnA4X2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVk
YmFja1R5cGU6OkNDTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0
Y3BGZWVkYmFja01lc3NhZ2VUeXBlOjpGSVIpOwotICB2cDhfY29kZWMucnRjcF9mZWVkYmFjay5l
bXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6TkFDSywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJ0Y3BGZWVkYmFja01lc3NhZ2VUeXBlOjpHRU5FUklDX05BQ0sp
OwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHZwOF9jb2RlYykpOwot
Ci0gIFJ0cENvZGVjUGFyYW1ldGVycyB2cDhfcnR4X2NvZGVjOwotICB2cDhfcnR4X2NvZGVjLm5h
bWUgPSAicnR4IjsKLSAgdnA4X3J0eF9jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9W
SURFTzsKLSAgdnA4X3J0eF9jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMDA7Ci0gIHZwOF9ydHhfY29k
ZWMucGFyYW1ldGVyc1siYXB0Il0gPSAiOTkiOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2Jh
Y2soc3RkOjptb3ZlKHZwOF9ydHhfY29kZWMpKTsKLQotICAvLyBBZGQgdHdvIGNvZGVjcywgZXhw
ZWN0aW5nIHRoZSBmaXJzdCB0byBiZSB1c2VkLgotICAvLyBUT0RPKGRlYWRiZWVmKTogT25jZSAi
Y29kZWNfcGF5bG9hZF90eXBlIiBpcyBzdXBwb3J0ZWQsIHVzZSBpdCB0byBzZWxlY3QgYQotICAv
LyBjb2RlYyB0aGF0J3Mgbm90IGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QuCi0gIFJ0cENvZGVjUGFy
YW1ldGVycyB2cDlfY29kZWM7Ci0gIHZwOV9jb2RlYy5uYW1lID0gIlZQOSI7Ci0gIHZwOV9jb2Rl
Yy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgdnA5X2NvZGVjLnBheWxvYWRf
dHlwZSA9IDEwMjsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZSh2cDlf
Y29kZWMpKTsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgdnA5X3J0eF9jb2RlYzsKLSAgdnA5X3J0
eF9jb2RlYy5uYW1lID0gInJ0eCI7Ci0gIHZwOV9ydHhfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1F
RElBX1RZUEVfVklERU87Ci0gIHZwOV9ydHhfY29kZWMucGF5bG9hZF90eXBlID0gMTAzOwotICB2
cDlfcnR4X2NvZGVjLnBhcmFtZXRlcnNbImFwdCJdID0gIjEwMiI7Ci0gIHBhcmFtZXRlcnMuY29k
ZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUodnA5X3J0eF9jb2RlYykpOwotCi0gIFJ0cEVuY29kaW5n
UGFyYW1ldGVycyBlbmNvZGluZzsKLSAgZW5jb2Rpbmcuc3NyYy5lbXBsYWNlKDB4ZGVhZGJlZWYp
OwotICBlbmNvZGluZy5ydHguZW1wbGFjZSgweGJhYWRmZWVkKTsKLSAgZW5jb2RpbmcubWF4X2Jp
dHJhdGVfYnBzLmVtcGxhY2UoOTk5OTkpOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5wdXNoX2Jh
Y2soc3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0KLSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9u
cy5lbXBsYWNlX2JhY2soInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiwgNCk7Ci0gIHBhcmFt
ZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAotICAgICAgImh0dHA6Ly93d3cu
d2VicnRjLm9yZy9leHBlcmltZW50cy9ydHAtaGRyZXh0L3BsYXlvdXQtZGVsYXkiLCA2KTsKLQot
ICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNlbmQocGFyYW1ldGVycykub2soKSk7Ci0KLSAg
Ly8gTm93IHZlcmlmeSB0aGF0IHRoZSBwYXJhbWV0ZXJzIHdlcmUgYXBwbGllZCB0byB0aGUgZmFr
ZSBtZWRpYSBlbmdpbmUgbGF5ZXIKLSAgLy8gdGhhdCBleGlzdHMgYmVsb3cgQmFzZUNoYW5uZWwu
Ci0gIGNyaWNrZXQ6OkZha2VWaWRlb01lZGlhQ2hhbm5lbCogZmFrZV92aWRlb19jaGFubmVsID0K
LSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0VmlkZW9DaGFubmVsKDApOwotICBBU1NFUlRf
TkUobnVsbHB0ciwgZmFrZV92aWRlb19jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92aWRl
b19jaGFubmVsLT5zZW5kaW5nKCkpOwotCi0gIC8vIFZlcmlmeSBjb2RlYyBwYXJhbWV0ZXJzLgot
ICBBU1NFUlRfR0UoZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX2NvZGVjcygpLnNpemUoKSwgMnUp
OwotICBjb25zdCBjcmlja2V0OjpWaWRlb0NvZGVjJiB0b3BfY29kZWMgPSBmYWtlX3ZpZGVvX2No
YW5uZWwtPnNlbmRfY29kZWNzKClbMF07Ci0gIEVYUEVDVF9FUSgiVlA4IiwgdG9wX2NvZGVjLm5h
bWUpOwotICBFWFBFQ1RfRVEoOTksIHRvcF9jb2RlYy5pZCk7Ci0gIEVYUEVDVF9UUlVFKHRvcF9j
b2RlYy5mZWVkYmFja19wYXJhbXMuSGFzKHsiY2NtIiwgImZpciJ9KSk7Ci0gIEVYUEVDVF9UUlVF
KHRvcF9jb2RlYy5mZWVkYmFja19wYXJhbXMuSGFzKGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0oIm5h
Y2siKSkpOwotCi0gIGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29kZWMmIHJ0eF9jb2RlYyA9IGZha2Vf
dmlkZW9fY2hhbm5lbC0+c2VuZF9jb2RlY3MoKVsxXTsKLSAgRVhQRUNUX0VRKCJydHgiLCBydHhf
Y29kZWMubmFtZSk7Ci0gIEVYUEVDVF9FUSgxMDAsIHJ0eF9jb2RlYy5pZCk7Ci0gIEFTU0VSVF9O
RShydHhfY29kZWMucGFyYW1zLmVuZCgpLCBydHhfY29kZWMucGFyYW1zLmZpbmQoImFwdCIpKTsK
LSAgRVhQRUNUX0VRKCI5OSIsIHJ0eF9jb2RlYy5wYXJhbXMuYXQoImFwdCIpKTsKLQotICAvLyBW
ZXJpZnkgZW5jb2RpbmcgcGFyYW1ldGVycy4KLSAgRVhQRUNUX0VRKDk5OTk5LCBmYWtlX3ZpZGVv
X2NoYW5uZWwtPm1heF9icHMoKSk7Ci0gIEFTU0VSVF9FUSgxdSwgZmFrZV92aWRlb19jaGFubmVs
LT5zZW5kX3N0cmVhbXMoKS5zaXplKCkpOwotICBjb25zdCBjcmlja2V0OjpTdHJlYW1QYXJhbXMm
IHNlbmRfc3RyZWFtID0KLSAgICAgIGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9zdHJlYW1zKClb
MF07Ci0gIEVYUEVDVF9FUSgydSwgc2VuZF9zdHJlYW0uc3NyY3Muc2l6ZSgpKTsKLSAgRVhQRUNU
X0VRKDB4ZGVhZGJlZWYsIHNlbmRfc3RyZWFtLmZpcnN0X3NzcmMoKSk7Ci0gIHVpbnQzMl90IHJ0
eF9zc3JjID0gMHU7Ci0gIEVYUEVDVF9UUlVFKHNlbmRfc3RyZWFtLkdldEZpZFNzcmMoc2VuZF9z
dHJlYW0uZmlyc3Rfc3NyYygpLCAmcnR4X3NzcmMpKTsKLSAgRVhQRUNUX0VRKDB4YmFhZGZlZWQs
IHJ0eF9zc3JjKTsKLQotICAvLyBWZXJpZnkgaGVhZGVyIGV4dGVuc2lvbnMuCi0gIEFTU0VSVF9F
USgydSwgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX2V4dGVuc2lvbnMoKS5zaXplKCkpOwotICBj
b25zdCBSdHBFeHRlbnNpb24mIGV4dGVuc2lvbjEgPSBmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRf
ZXh0ZW5zaW9ucygpWzBdOwotICBFWFBFQ1RfRVEoInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9u
IiwgZXh0ZW5zaW9uMS51cmkpOwotICBFWFBFQ1RfRVEoNCwgZXh0ZW5zaW9uMS5pZCk7Ci0gIGNv
bnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uMiA9IGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9l
eHRlbnNpb25zKClbMV07Ci0gIEVYUEVDVF9FUSgiaHR0cDovL3d3dy53ZWJydGMub3JnL2V4cGVy
aW1lbnRzL3J0cC1oZHJleHQvcGxheW91dC1kZWxheSIsCi0gICAgICAgICAgICBleHRlbnNpb24y
LnVyaSk7Ci0gIEVYUEVDVF9FUSg2LCBleHRlbnNpb24yLmlkKTsKLX0KLQotLy8gRW5zdXJlIHRo
YXQgd2hlbiBwcmltYXJ5IG9yIFJUWCBTU1JDcyBhcmUgbGVmdCB1bnNldCwgdGhleSdyZSBnZW5l
cmF0ZWQKLS8vIGF1dG9tYXRpY2FsbHkuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIFNlbmRH
ZW5lcmF0ZXNTc3Jjc1doZW5FbXB0eSkgewotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBv
cnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBF
X0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVk
aW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJz
ID0gTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVyc1dpdGhOb1NzcmMoKTsKLSAgLy8gRGVmYXVsdCBS
VFggcGFyYW1ldGVycywgd2l0aCBubyBTU1JDLgotICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5y
dHguZW1wbGFjZSgpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQocGFyYW1ldGVy
cykub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZvaWNlTWVkaWFDaGFubmVsKiBmYWtlX3ZvaWNl
X2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWb2ljZUNoYW5uZWwoMCk7
Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZvaWNlX2NoYW5uZWwpOwotICBBU1NFUlRfRVEo
MXUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+c2VuZF9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAgY29uc3Qg
Y3JpY2tldDo6U3RyZWFtUGFyYW1zJiBhdWRpb19zZW5kX3N0cmVhbSA9Ci0gICAgICBmYWtlX3Zv
aWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpWzBdOwotICBFWFBFQ1RfTkUoMHUsIGF1ZGlvX3Nl
bmRfc3RyZWFtLmZpcnN0X3NzcmMoKSk7Ci0gIHVpbnQzMl90IHJ0eF9zc3JjID0gMHU7Ci0gIEVY
UEVDVF9UUlVFKAotICAgICAgYXVkaW9fc2VuZF9zdHJlYW0uR2V0RmlkU3NyYyhhdWRpb19zZW5k
X3N0cmVhbS5maXJzdF9zc3JjKCksICZydHhfc3NyYykpOwotICBFWFBFQ1RfTkUoMHUsIHJ0eF9z
c3JjKTsKLSAgRVhQRUNUX05FKGF1ZGlvX3NlbmRfc3RyZWFtLmZpcnN0X3NzcmMoKSwgcnR4X3Nz
cmMpOwotCi0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3Bv
cnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotICBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzV2l0aE5v
U3NyYygpOwotICAvLyBEZWZhdWx0IFJUWCBwYXJhbWV0ZXJzLCB3aXRoIG5vIFNTUkMuCi0gIHBh
cmFtZXRlcnMuZW5jb2RpbmdzWzBdLnJ0eC5lbXBsYWNlKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVv
X3NlbmRlci0+U2VuZChwYXJhbWV0ZXJzKS5vaygpKTsKLQotICBjcmlja2V0OjpGYWtlVmlkZW9N
ZWRpYUNoYW5uZWwqIGZha2VfdmlkZW9fY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2lu
ZV8tPkdldFZpZGVvQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2VfdmlkZW9f
Y2hhbm5lbCk7Ci0gIEFTU0VSVF9FUSgxdSwgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3N0cmVh
bXMoKS5zaXplKCkpOwotICBjb25zdCBjcmlja2V0OjpTdHJlYW1QYXJhbXMmIHZpZGVvX3NlbmRf
c3RyZWFtID0KLSAgICAgIGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9zdHJlYW1zKClbMF07Ci0g
IEVYUEVDVF9ORSgwdSwgdmlkZW9fc2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpKTsKLSAgcnR4X3Nz
cmMgPSAwdTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICB2aWRlb19zZW5kX3N0cmVhbS5HZXRGaWRT
c3JjKHZpZGVvX3NlbmRfc3RyZWFtLmZpcnN0X3NzcmMoKSwgJnJ0eF9zc3JjKSk7Ci0gIEVYUEVD
VF9ORSgwdSwgcnR4X3NzcmMpOwotICBFWFBFQ1RfTkUodmlkZW9fc2VuZF9zdHJlYW0uZmlyc3Rf
c3NyYygpLCBydHhfc3NyYyk7Ci0gIEVYUEVDVF9ORSh2aWRlb19zZW5kX3N0cmVhbS5maXJzdF9z
c3JjKCksIGF1ZGlvX3NlbmRfc3RyZWFtLmZpcnN0X3NzcmMoKSk7Ci19Ci0KLS8vIFRlc3QgY2hh
bmdpbmcgYm90aCB0aGUgc2VuZCBjb2RlYyBhbmQgU1NSQyBhdCB0aGUgc2FtZSB0aW1lLCBhbmQg
dmVyaWZ5IHRoYXQKLS8vIHRoZSBuZXcgcGFyYW1ldGVycyBhcmUgYXBwbGllZCB0byB0aGUgbWVk
aWEgZW5naW5lIGxldmVsLgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBDYWxsaW5nU2VuZFR3
aWNlQ2hhbmdlc1BhcmFtZXRlcnMpIHsKLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9B
VURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlv
X3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgYXVkaW9f
c2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnNXaXRoU3NyYygweDExMTExMTEx
KSkub2soKSk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgYXVkaW9fc2VuZGVyLT5TZW5kKE1ha2VN
aW5pbWFsSXNhY1BhcmFtZXRlcnNXaXRoU3NyYygweDIyMjIyMjIyKSkub2soKSk7Ci0KLSAgY3Jp
Y2tldDo6RmFrZVZvaWNlTWVkaWFDaGFubmVsKiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAg
ZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWb2ljZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxs
cHRyLCBmYWtlX3ZvaWNlX2NoYW5uZWwpOwotICBBU1NFUlRfR1QoZmFrZV92b2ljZV9jaGFubmVs
LT5zZW5kX2NvZGVjcygpLnNpemUoKSwgMHUpOwotICBFWFBFQ1RfRVEoIklTQUMiLCBmYWtlX3Zv
aWNlX2NoYW5uZWwtPnNlbmRfY29kZWNzKClbMF0ubmFtZSk7Ci0gIEFTU0VSVF9FUSgxdSwgZmFr
ZV92b2ljZV9jaGFubmVsLT5zZW5kX3N0cmVhbXMoKS5zaXplKCkpOwotICBFWFBFQ1RfRVEoMHgy
MjIyMjIyMnUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+c2VuZF9zdHJlYW1zKClbMF0uZmlyc3Rfc3Ny
YygpKTsKLQotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNw
b3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5N
b3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICB2aWRlb19zZW5kZXItPlNlbmQoTWFr
ZU1pbmltYWxWcDhQYXJhbWV0ZXJzV2l0aFNzcmMoMHgzMzMzMzMzMykpLm9rKCkpOwotICBFWFBF
Q1RfVFJVRSgKLSAgICAgIHZpZGVvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbFZwOVBhcmFtZXRl
cnNXaXRoU3NyYygweDQ0NDQ0NDQ0KSkub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZpZGVvTWVk
aWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVf
LT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZpZGVvX2No
YW5uZWwpOwotICBBU1NFUlRfR1QoZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX2NvZGVjcygpLnNp
emUoKSwgMHUpOwotICBFWFBFQ1RfRVEoIlZQOSIsIGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9j
b2RlY3MoKVswXS5uYW1lKTsKLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnNl
bmRfc3RyZWFtcygpLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgweDQ0NDQ0NDQ0dSwgZmFrZV92aWRl
b19jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVswXS5maXJzdF9zc3JjKCkpOwotfQotCi0vLyBFbnN1
cmUgdGhhdCBpZiB0aGUgfGFjdGl2ZXwgZmxhZyBvZiBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgaXMg
c2V0IHRvIGZhbHNlLAotLy8gc2VuZGluZyBzdG9wcyBhdCB0aGUgbWVkaWEgZW5naW5lIGxldmVs
LgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBEZWFjdGl2YXRpbmdFbmNvZGluZ1N0b3BzU2Vu
ZGluZykgewotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNw
b3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5N
b3ZlVmFsdWUoKTsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxPcHVz
UGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQocGFyYW1ldGVy
cykub2soKSk7Ci0KLSAgLy8gRXhwZWN0ICJzZW5kaW5nIiBmbGFnIHRvIGluaXRpYWxseSBiZSB0
cnVlLgotICBjcmlja2V0OjpGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2VfY2hhbm5l
bCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKLSAgQVNT
RVJUX05FKG51bGxwdHIsIGZha2Vfdm9pY2VfY2hhbm5lbCk7Ci0gIEVYUEVDVF9UUlVFKGZha2Vf
dm9pY2VfY2hhbm5lbC0+c2VuZGluZygpKTsKLQotICAvLyBEZWFjdGl2YXRlIGVuY29kaW5nIGFu
ZCBleHBlY3QgaXQgdG8gY2hhbmdlIHRvIGZhbHNlLgotICBwYXJhbWV0ZXJzLmVuY29kaW5nc1sw
XS5hY3RpdmUgPSBmYWxzZTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKHBhcmFt
ZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfRkFMU0UoZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kaW5n
KCkpOwotCi0gIC8vIFRyeSB0aGUgc2FtZSB0aGluZyBmb3IgdmlkZW8gbm93LgotICBhdXRvIHZp
ZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAg
ICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1
dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgcGFy
YW1ldGVycyA9IE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJVRSh2aWRl
b19zZW5kZXItPlNlbmQocGFyYW1ldGVycykub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZpZGVv
TWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdp
bmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZpZGVv
X2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRpbmcoKSk7
Ci0KLSAgcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uYWN0aXZlID0gZmFsc2U7Ci0gIEVYUEVDVF9U
UlVFKHZpZGVvX3NlbmRlci0+U2VuZChwYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0ZBTFNF
KGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZGluZygpKTsKLX0KLQotLy8gRW5zdXJlIHRoYXQgY2Fs
bGluZyBTZW5kIHdpdGggYW4gZW1wdHkgbGlzdCBvZiBlbmNvZGluZ3MgY2F1c2VzIHNlbmQgc3Ry
ZWFtcwotLy8gYXQgdGhlIG1lZGlhIGVuZ2luZSBsZXZlbCB0byBiZSBjbGVhcmVkLgotVEVTVF9G
KE9ydGNSdHBTZW5kZXJUZXN0LCBDYWxsaW5nU2VuZFdpdGhFbXB0eUVuY29kaW5nc0NsZWFyc1Nl
bmRTdHJlYW1zKSB7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8t
PkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90
cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJfcmVz
dWx0Lk1vdmVWYWx1ZSgpOwotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1h
bE9wdXNQYXJhbWV0ZXJzKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChwYXJh
bWV0ZXJzKS5vaygpKTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3MuY2xlYXIoKTsKLSAgRVhQRUNU
X1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKHBhcmFtZXRlcnMpLm9rKCkpOwotCi0gIGNyaWNrZXQ6
OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0KLSAgICAgIGZha2Vf
bWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwg
ZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92b2ljZV9jaGFubmVsLT5z
ZW5kX3N0cmVhbXMoKS5lbXB0eSgpKTsKLQotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBv
cnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBF
X1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlk
ZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFs
VnA4UGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNlbmQocGFyYW1l
dGVycykub2soKSk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLmNsZWFyKCk7Ci0gIEVYUEVDVF9U
UlVFKHZpZGVvX3NlbmRlci0+U2VuZChwYXJhbWV0ZXJzKS5vaygpKTsKLQotICBjcmlja2V0OjpG
YWtlVmlkZW9NZWRpYUNoYW5uZWwqIGZha2VfdmlkZW9fY2hhbm5lbCA9Ci0gICAgICBmYWtlX21l
ZGlhX2VuZ2luZV8tPkdldFZpZGVvQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZh
a2VfdmlkZW9fY2hhbm5lbCk7Ci0gIEVYUEVDVF9UUlVFKGZha2VfdmlkZW9fY2hhbm5lbC0+c2Vu
ZF9zdHJlYW1zKCkuZW1wdHkoKSk7Ci19Ci0KLS8vIFRoZXNlIGVycm9ycyBzaG91bGQgYmUgY292
ZXJlZCBieSBydHBwYXJhbWV0ZXJzY29udmVyc2lvbl91bml0dGVzdC5jYywgYnV0Ci0vLyB3ZSBz
aG91bGQgYXQgbGVhc3QgdGVzdCB0aGF0IHRob3NlIGVycm9ycyBhcmUgcHJvcG9nYXRlZCBmcm9t
IGNhbGxzIHRvIFNlbmQsCi0vLyB3aXRoIGEgZmV3IGV4YW1wbGVzLgotVEVTVF9GKE9ydGNSdHBT
ZW5kZXJUZXN0LCBTZW5kUmV0dXJuc0Vycm9yT25JbnZhbGlkUGFyYW1ldGVycykgewotICBhdXRv
IHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcihjcmlja2V0OjpNRURJQV9U
WVBFX1ZJREVPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gc2VuZGVyID0gcmVzdWx0Lk1vdmVWYWx1
ZSgpOwotICAvLyBOQUNLIGZlZWRiYWNrIG1pc3NpbmcgbWVzc2FnZSB0eXBlLgotICBSdHBQYXJh
bWV0ZXJzIGludmFsaWRfZmVlZGJhY2sgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAg
aW52YWxpZF9mZWVkYmFjay5jb2RlY3NbMF0ucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRj
cEZlZWRiYWNrVHlwZTo6TkFDSyk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURf
UEFSQU1FVEVSLAotICAgICAgICAgICAgc2VuZGVyLT5TZW5kKGludmFsaWRfZmVlZGJhY2spLnR5
cGUoKSk7Ci0gIC8vIE5lZ2F0aXZlIHBheWxvYWQgdHlwZS4KLSAgUnRwUGFyYW1ldGVycyBpbnZh
bGlkX3B0ID0gTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCk7Ci0gIGludmFsaWRfcHQuY29kZWNz
WzBdLnBheWxvYWRfdHlwZSA9IC0xOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElE
X1JBTkdFLCBzZW5kZXItPlNlbmQoaW52YWxpZF9wdCkudHlwZSgpKTsKLSAgLy8gRHVwbGljYXRl
IGNvZGVjIHBheWxvYWQgdHlwZXMuCi0gIFJ0cFBhcmFtZXRlcnMgZHVwbGljYXRlX3BheWxvYWRf
dHlwZXMgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgZHVwbGljYXRlX3BheWxvYWRf
dHlwZXMuY29kZWNzLnB1c2hfYmFjayhkdXBsaWNhdGVfcGF5bG9hZF90eXBlcy5jb2RlY3NbMF0p
OwotICBkdXBsaWNhdGVfcGF5bG9hZF90eXBlcy5jb2RlY3MuYmFjaygpLm5hbWUgPSAiVlA5IjsK
LSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAg
ICBzZW5kZXItPlNlbmQoZHVwbGljYXRlX3BheWxvYWRfdHlwZXMpLnR5cGUoKSk7Ci19Ci0KLS8v
IFR3byBzZW5kZXJzIHVzaW5nIHRoZSBzYW1lIHRyYW5zcG9ydCBzaG91bGRuJ3QgYmUgYWJsZSB0
byB1c2UgdGhlIHNhbWUKLS8vIHBheWxvYWQgdHlwZSB0byByZWZlciB0byBkaWZmZXJlbnQgY29k
ZWNzLCBzYW1lIGhlYWRlciBleHRlbnNpb24gSURzIHRvCi0vLyByZWZlciB0byBkaWZmZXJlbnQg
ZXh0ZW5zaW9ucywgb3Igc2FtZSBTU1JDLgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBTZW5k
UmV0dXJuc0Vycm9yT25JZENvbmZsaWN0cykgewotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQg
PSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jl
c3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5k
ZXIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBhdXRvIHZpZGVvX3NlbmRl
ciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gRmlyc3QgdGVzdCBw
YXlsb2FkIHR5cGUgY29uZmxpY3QuCi0gIFJ0cFBhcmFtZXRlcnMgYXVkaW9fcGFyYW1ldGVycyA9
IE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgUnRwUGFyYW1ldGVycyB2aWRlb19wYXJh
bWV0ZXJzID0gTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCk7Ci0gIGF1ZGlvX3BhcmFtZXRlcnMu
Y29kZWNzWzBdLnBheWxvYWRfdHlwZSA9IDEwMDsKLSAgdmlkZW9fcGFyYW1ldGVycy5jb2RlY3Nb
MF0ucGF5bG9hZF90eXBlID0gMTAwOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQo
YXVkaW9fcGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFM
SURfUEFSQU1FVEVSLAotICAgICAgICAgICAgdmlkZW9fc2VuZGVyLT5TZW5kKHZpZGVvX3BhcmFt
ZXRlcnMpLnR5cGUoKSk7Ci0KLSAgLy8gVGVzdCBoZWFkZXIgZXh0ZW5zaW9uIElEIGNvbmZsaWN0
LgotICB2aWRlb19wYXJhbWV0ZXJzLmNvZGVjc1swXS5wYXlsb2FkX3R5cGUgPSAxMTA7Ci0gIGF1
ZGlvX3BhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKCJmb28iLCA0KTsK
LSAgdmlkZW9fcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soImJhciIs
IDQpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQoYXVkaW9fcGFyYW1ldGVycyku
b2soKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAg
ICAgICAgICAgdmlkZW9fc2VuZGVyLT5TZW5kKHZpZGVvX3BhcmFtZXRlcnMpLnR5cGUoKSk7Ci0K
LSAgLy8gVGVzdCBTU1JDIGNvbmZsaWN0LiBIYXZlIGFuIFJUWCBTU1JDIHRoYXQgY29uZmxpY3Rz
IHdpdGggYSBwcmltYXJ5IFNTUkMKLSAgLy8gZm9yIGV4dHJhIGNoYWxsZW5nZS4KLSAgdmlkZW9f
cGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9uc1swXS51cmkgPSAiZm9vIjsKLSAgYXVkaW9fcGFy
YW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYy5lbXBsYWNlKDB4ZGVhZGJlZWYpOwotICB2aWRlb19w
YXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjLmVtcGxhY2UoMHhhYmJhYWJiYSk7Ci0gIHZpZGVv
X3BhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnJ0eC5lbXBsYWNlKDB4ZGVhZGJlZWYpOwotICBFWFBF
Q1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQoYXVkaW9fcGFyYW1ldGVycykub2soKSk7Ci0gIEVY
UEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgdmlk
ZW9fc2VuZGVyLT5TZW5kKHZpZGVvX3BhcmFtZXRlcnMpLnR5cGUoKSk7Ci0KLSAgLy8gU2FuaXR5
IGNoZWNrIHRoYXQgcGFyYW1ldGVycyBjYW4gYmUgc2V0IGlmIHRoZSBjb25mbGljdHMgYXJlIGFs
bCByZXNvbHZlZC4KLSAgdmlkZW9fcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ucnR4LT5zc3JjLmVt
cGxhY2UoMHhiYWFkZjAwZCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZCh2aWRl
b19wYXJhbWV0ZXJzKS5vaygpKTsKLX0KLQotLy8gRW5zdXJlIHRoYXQgZGVsZXRpbmcgYSBzZW5k
ZXIgY2F1c2VzIHNlbmQgc3RyZWFtcyBhdCB0aGUgbWVkaWEgZW5naW5lIGxldmVsCi0vLyB0byBi
ZSBjbGVhcmVkLgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBEZWxldGluZ1NlbmRlckNsZWFy
c1NlbmRTdHJlYW1zKSB7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0
cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJf
cmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQoTWFr
ZU1pbmltYWxPcHVzUGFyYW1ldGVycygpKS5vaygpKTsKLQotICAvLyBBbHNvIGNyZWF0ZSBhbiBh
dWRpbyByZWNlaXZlciwgdG8gcHJldmVudCB0aGUgdm9pY2UgY2hhbm5lbCBmcm9tIGJlaW5nCi0g
IC8vIGNvbXBsZXRlbHkgZGVsZXRlZC4KLSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBv
cnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9
IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9f
cmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpKS5vaygpKTsKLQot
ICBhdWRpb19zZW5kZXIucmVzZXQobnVsbHB0cik7Ci0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlh
Q2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+
R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFu
bmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX3N0cmVhbXMoKS5l
bXB0eSgpKTsKLQotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5D
cmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJh
bnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3Vs
dC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5p
bWFsVnA4UGFyYW1ldGVycygpKS5vaygpKTsKLQotICAvLyBBbHNvIGNyZWF0ZSBhbiB2aWRlbyBy
ZWNlaXZlciwgdG8gcHJldmVudCB0aGUgdmlkZW8gY2hhbm5lbCBmcm9tIGJlaW5nCi0gIC8vIGNv
bXBsZXRlbHkgZGVsZXRlZC4KLSAgYXV0byB2aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2Zh
Y3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklE
RU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19yZWNlaXZlciA9IHZpZGVv
X3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2
ZXItPlJlY2VpdmUoTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0gIHZpZGVv
X3NlbmRlci5yZXNldChudWxscHRyKTsKLSAgY3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVs
KiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRl
b0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwot
ICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpLmVtcHR5KCkp
OwotfQotCi0vLyBJZiBTZW5kIGhhc24ndCBiZWVuIGNhbGxlZCwgR2V0UGFyYW1ldGVycyBzaG91
bGQgcmV0dXJuIGVtcHR5IHBhcmFtZXRlcnMuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIEdl
dERlZmF1bHRQYXJhbWV0ZXJzKSB7Ci0gIGF1dG8gcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3Jl
YXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAg
RVhQRUNUX0VRKFJ0cFBhcmFtZXRlcnMoKSwgcmVzdWx0LnZhbHVlKCktPkdldFBhcmFtZXRlcnMo
KSk7Ci0gIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcihjcmlja2V0OjpN
RURJQV9UWVBFX1ZJREVPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfRVEoUnRwUGFyYW1ldGVycygpLCBy
ZXN1bHQudmFsdWUoKS0+R2V0UGFyYW1ldGVycygpKTsKLX0KLQotLy8gVGVzdCB0aGF0IEdldFBh
cmFtZXRlcnMgcmV0dXJucyB0aGUgbGFzdCBwYXJhbWV0ZXJzIHBhc3NlZCBpbnRvIFNlbmQsIGFs
b25nCi0vLyB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbi1kZWZhdWx0IHZhbHVlcyBmaWxsZWQgaW4g
d2hlcmUgdGhleSB3ZXJlIGxlZnQgdW5zZXQuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsCi0g
ICAgICAgR2V0UGFyYW1ldGVyc1JldHVybnNMYXN0U2V0UGFyYW1ldGVyc1dpdGhEZWZhdWx0c0Zp
bGxlZCkgewotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBTZW5kZXIoCi0gICAgICBDcmVhdGVBdWRpb1RyYWNrKCJhdWRpbyIpLCBydHBfdHJhbnNw
b3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5N
b3ZlVmFsdWUoKTsKLQotICBSdHBQYXJhbWV0ZXJzIG9wdXNfcGFyYW1ldGVycyA9IE1ha2VNaW5p
bWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKG9w
dXNfcGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9FUShvcHVzX3BhcmFtZXRlcnMsIGF1ZGlv
X3NlbmRlci0+R2V0UGFyYW1ldGVycygpKTsKLQotICBSdHBQYXJhbWV0ZXJzIGlzYWNfcGFyYW1l
dGVycyA9IE1ha2VNaW5pbWFsSXNhY1BhcmFtZXRlcnMoKTsKLSAgLy8gU2FuaXR5IGNoZWNrIHRo
YXQgbnVtX2NoYW5uZWxzIGFjdHVhbGx5IGlzIGxlZnQgdW5zZXQuCi0gIEFTU0VSVF9GQUxTRShp
c2FjX3BhcmFtZXRlcnMuY29kZWNzWzBdLm51bV9jaGFubmVscyk7Ci0gIEVYUEVDVF9UUlVFKGF1
ZGlvX3NlbmRlci0+U2VuZChpc2FjX3BhcmFtZXRlcnMpLm9rKCkpOwotICAvLyBTaG91bGQgYmUg
ZmlsbGVkIHdpdGggYSBkZWZhdWx0ICJudW0gY2hhbm5lbHMiIG9mIDEuCi0gIC8vIFRPRE8oZGVh
ZGJlZWYpOiBUaGlzIHNob3VsZCBhY3R1YWxseSBkZWZhdWx0IHRvIDIgZm9yIHNvbWUgY29kZWNz
LiBVcGRhdGUKLSAgLy8gdGhpcyB0ZXN0IG9uY2UgdGhhdCdzIGltcGxlbWVudGVkLgotICBpc2Fj
X3BhcmFtZXRlcnMuY29kZWNzWzBdLm51bV9jaGFubmVscy5lbXBsYWNlKDEpOwotICBFWFBFQ1Rf
RVEoaXNhY19wYXJhbWV0ZXJzLCBhdWRpb19zZW5kZXItPkdldFBhcmFtZXRlcnMoKSk7Ci0KLSAg
YXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVy
KAotICAgICAgQ3JlYXRlVmlkZW9UcmFjaygidmlkZW8iKSwgcnRwX3RyYW5zcG9ydF8uZ2V0KCkp
OwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7
Ci0KLSAgUnRwUGFyYW1ldGVycyB2cDhfcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA4UGFyYW1l
dGVycygpOwotICAvLyBTYW5pdHkgY2hlY2sgdGhhdCBjbG9ja19yYXRlIGFjdHVhbGx5IGlzIGxl
ZnQgdW5zZXQuCi0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZCh2cDhfcGFyYW1ldGVy
cykub2soKSk7Ci0gIC8vIFNob3VsZCBiZSBmaWxsZWQgd2l0aCBhIGRlZmF1bHQgY2xvY2sgcmF0
ZSBvZiA5MDAwMC4KLSAgdnA4X3BhcmFtZXRlcnMuY29kZWNzWzBdLmNsb2NrX3JhdGUuZW1wbGFj
ZSg5MDAwMCk7Ci0gIEVYUEVDVF9FUSh2cDhfcGFyYW1ldGVycywgdmlkZW9fc2VuZGVyLT5HZXRQ
YXJhbWV0ZXJzKCkpOwotCi0gIFJ0cFBhcmFtZXRlcnMgdnA5X3BhcmFtZXRlcnMgPSBNYWtlTWlu
aW1hbFZwOVBhcmFtZXRlcnMoKTsKLSAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgY2xvY2tfcmF0ZSBh
Y3R1YWxseSBpcyBsZWZ0IHVuc2V0LgotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNlbmQo
dnA5X3BhcmFtZXRlcnMpLm9rKCkpOwotICAvLyBTaG91bGQgYmUgZmlsbGVkIHdpdGggYSBkZWZh
dWx0IGNsb2NrIHJhdGUgb2YgOTAwMDAuCi0gIHZwOV9wYXJhbWV0ZXJzLmNvZGVjc1swXS5jbG9j
a19yYXRlLmVtcGxhY2UoOTAwMDApOwotICBFWFBFQ1RfRVEodnA5X3BhcmFtZXRlcnMsIHZpZGVv
X3NlbmRlci0+R2V0UGFyYW1ldGVycygpKTsKLX0KLQotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0
LCBHZXRLaW5kKSB7Ci0gIC8vIENvbnN0cnVjdCBvbmUgc2VuZGVyIGZyb20gdGhlICJraW5kIiBl
bnVtIGFuZCBhbm90aGVyIGZyb20gYSB0cmFjay4KLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0
ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFf
VFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlcl9y
ZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBDcmVhdGVWaWRl
b1RyYWNrKCJ2aWRlbyIpLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2Vu
ZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgYXV0byB2aWRlb19zZW5k
ZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfRVEoY3JpY2tl
dDo6TUVESUFfVFlQRV9BVURJTywgYXVkaW9fc2VuZGVyLT5HZXRLaW5kKCkpOwotICBFWFBFQ1Rf
RVEoY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgdmlkZW9fc2VuZGVyLT5HZXRLaW5kKCkpOwot
fQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHBzZW5kZXJhZGFwdGVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwc2Vu
ZGVyYWRhcHRlci5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI1NDFjYjhmODVm
M2E2NGFlMWEwZjQ1OTRhNDI3NTVkZTUxY2JkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9vcnRjL29ydGNydHBzZW5kZXJhZGFwdGVyLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTg4
ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJvcnRjL29ydGNydHBzZW5k
ZXJhZGFwdGVyLmgiCi0KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi0jaW5jbHVkZSAibWVkaWEvYmFz
ZS9tZWRpYWNvbnN0YW50cy5oIgotI2luY2x1ZGUgIm9ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotCi1uYW1lc3BhY2UgewotCi12b2lkIEZp
bGxBdWRpb1NlbmRlclBhcmFtZXRlcnMod2VicnRjOjpSdHBQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJz
KSB7Ci0gIGZvciAod2VicnRjOjpSdHBDb2RlY1BhcmFtZXRlcnMmIGNvZGVjIDogcGFyYW1ldGVy
cy0+Y29kZWNzKSB7Ci0gICAgaWYgKCFjb2RlYy5udW1fY2hhbm5lbHMpIHsKLSAgICAgIGNvZGVj
Lm51bV9jaGFubmVscyA9IDE7Ci0gICAgfQotICB9Ci19Ci0KLXZvaWQgRmlsbFZpZGVvU2VuZGVy
UGFyYW1ldGVycyh3ZWJydGM6OlJ0cFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMpIHsKLSAgZm9yICh3
ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYgY29kZWMgOiBwYXJhbWV0ZXJzLT5jb2RlY3MpIHsK
LSAgICBpZiAoIWNvZGVjLmNsb2NrX3JhdGUpIHsKLSAgICAgIGNvZGVjLmNsb2NrX3JhdGUgPSBj
cmlja2V0OjprVmlkZW9Db2RlY0Nsb2NrcmF0ZTsKLSAgICB9Ci0gIH0KLX0KLQotfSAgLy8gbmFt
ZXNwYWNlCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1CRUdJTl9PV05FRF9QUk9YWV9NQVAoT3J0
Y1J0cFNlbmRlcikKLVBST1hZX1NJR05BTElOR19USFJFQURfREVTVFJVQ1RPUigpCi1QUk9YWV9N
RVRIT0QxKFJUQ0Vycm9yLCBTZXRUcmFjaywgTWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZSopCi1Q
Uk9YWV9DT05TVE1FVEhPRDAocnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRl
cmZhY2U+LCBHZXRUcmFjaykKLVBST1hZX01FVEhPRDEoUlRDRXJyb3IsIFNldFRyYW5zcG9ydCwg
UnRwVHJhbnNwb3J0SW50ZXJmYWNlKikKLVBST1hZX0NPTlNUTUVUSE9EMChSdHBUcmFuc3BvcnRJ
bnRlcmZhY2UqLCBHZXRUcmFuc3BvcnQpCi1QUk9YWV9NRVRIT0QxKFJUQ0Vycm9yLCBTZW5kLCBj
b25zdCBSdHBQYXJhbWV0ZXJzJikKLVBST1hZX0NPTlNUTUVUSE9EMChSdHBQYXJhbWV0ZXJzLCBH
ZXRQYXJhbWV0ZXJzKQotUFJPWFlfQ09OU1RNRVRIT0QwKGNyaWNrZXQ6Ok1lZGlhVHlwZSwgR2V0
S2luZCkKLUVORF9QUk9YWV9NQVAoKQotCi0vLyBzdGF0aWMKLXN0ZDo6dW5pcXVlX3B0cjxPcnRj
UnRwU2VuZGVySW50ZXJmYWNlPiBPcnRjUnRwU2VuZGVyQWRhcHRlcjo6Q3JlYXRlUHJveHkoCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJBZGFwdGVyPiB3cmFwcGVkX3NlbmRlcikg
ewotICBSVENfRENIRUNLKHdyYXBwZWRfc2VuZGVyKTsKLSAgcnRjOjpUaHJlYWQqIHNpZ25hbGlu
ZyA9Ci0gICAgICB3cmFwcGVkX3NlbmRlci0+cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+c2ln
bmFsaW5nX3RocmVhZCgpOwotICBydGM6OlRocmVhZCogd29ya2VyID0KLSAgICAgIHdyYXBwZWRf
c2VuZGVyLT5ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT53b3JrZXJfdGhyZWFkKCk7Ci0gIHJl
dHVybiBPcnRjUnRwU2VuZGVyUHJveHk6OkNyZWF0ZShzaWduYWxpbmcsIHdvcmtlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh3cmFwcGVkX3NlbmRlcikp
OwotfQotCi1PcnRjUnRwU2VuZGVyQWRhcHRlcjo6fk9ydGNSdHBTZW5kZXJBZGFwdGVyKCkgewot
ICBpbnRlcm5hbF9zZW5kZXJfID0gbnVsbHB0cjsKLSAgU2lnbmFsRGVzdHJveWVkKCk7Ci19Ci0K
LVJUQ0Vycm9yIE9ydGNSdHBTZW5kZXJBZGFwdGVyOjpTZXRUcmFjayhNZWRpYVN0cmVhbVRyYWNr
SW50ZXJmYWNlKiB0cmFjaykgewotICBpZiAodHJhY2sgJiYgY3JpY2tldDo6TWVkaWFUeXBlRnJv
bVN0cmluZyh0cmFjay0+a2luZCgpKSAhPSBraW5kXykgewotICAgIExPR19BTkRfUkVUVVJOX0VS
Uk9SKAotICAgICAgICBSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAi
VHJhY2sga2luZCAoYXVkaW8vdmlkZW8pIGRvZXNuJ3QgbWF0Y2ggdGhlIGtpbmQgb2YgdGhpcyBz
ZW5kZXIuIik7Ci0gIH0KLSAgaWYgKGludGVybmFsX3NlbmRlcl8gJiYgIWludGVybmFsX3NlbmRl
cl8tPlNldFRyYWNrKHRyYWNrKSkgewotICAgIC8vIFNpbmNlIHdlIGNoZWNrZWQgdGhlIHRyYWNr
IHR5cGUgYWJvdmUsIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4uLgotICAgIFJUQ19OT1RSRUFD
SEVEKCk7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9F
UlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHNldCB0cmFjayBvbiBS
dHBTZW5kZXIuIik7Ci0gIH0KLSAgdHJhY2tfID0gdHJhY2s7Ci0gIHJldHVybiBSVENFcnJvcjo6
T0soKTsKLX0KLQotcnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+
IE9ydGNSdHBTZW5kZXJBZGFwdGVyOjpHZXRUcmFjaygpCi0gICAgY29uc3QgewotICByZXR1cm4g
dHJhY2tfOwotfQotCi1SVENFcnJvciBPcnRjUnRwU2VuZGVyQWRhcHRlcjo6U2V0VHJhbnNwb3J0
KFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0KSB7Ci0gIExPR19BTkRfUkVUVVJOX0VS
Uk9SKAotICAgICAgUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAi
Q2hhbmdpbmcgdGhlIHRyYW5zcG9ydCBvZiBhbiBSdHBTZW5kZXIgaXMgbm90IHlldCBzdXBwb3J0
ZWQuIik7Ci19Ci0KLVJ0cFRyYW5zcG9ydEludGVyZmFjZSogT3J0Y1J0cFNlbmRlckFkYXB0ZXI6
OkdldFRyYW5zcG9ydCgpIGNvbnN0IHsKLSAgcmV0dXJuIHRyYW5zcG9ydF87Ci19Ci0KLVJUQ0Vy
cm9yIE9ydGNSdHBTZW5kZXJBZGFwdGVyOjpTZW5kKGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpIHsKLSAgUnRwUGFyYW1ldGVycyBmaWxsZWRfcGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7
Ci0gIFJUQ0Vycm9yIGVycjsKLSAgdWludDMyX3Qgc3NyYyA9IDA7Ci0gIHN3aXRjaCAoa2luZF8p
IHsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86Ci0gICAgICBGaWxsQXVkaW9T
ZW5kZXJQYXJhbWV0ZXJzKCZmaWxsZWRfcGFyYW1ldGVycyk7Ci0gICAgICBlcnIgPSBydHBfdHJh
bnNwb3J0X2NvbnRyb2xsZXJfLT5WYWxpZGF0ZUFuZEFwcGx5QXVkaW9TZW5kZXJQYXJhbWV0ZXJz
KAotICAgICAgICAgIGZpbGxlZF9wYXJhbWV0ZXJzLCAmc3NyYyk7Ci0gICAgICBpZiAoIWVyci5v
aygpKSB7Ci0gICAgICAgIHJldHVybiBlcnI7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBj
YXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU86Ci0gICAgICBGaWxsVmlkZW9TZW5kZXJQYXJh
bWV0ZXJzKCZmaWxsZWRfcGFyYW1ldGVycyk7Ci0gICAgICBlcnIgPSBydHBfdHJhbnNwb3J0X2Nv
bnRyb2xsZXJfLT5WYWxpZGF0ZUFuZEFwcGx5VmlkZW9TZW5kZXJQYXJhbWV0ZXJzKAotICAgICAg
ICAgIGZpbGxlZF9wYXJhbWV0ZXJzLCAmc3NyYyk7Ci0gICAgICBpZiAoIWVyci5vaygpKSB7Ci0g
ICAgICAgIHJldHVybiBlcnI7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGNyaWNr
ZXQ6Ok1FRElBX1RZUEVfREFUQToKLSAgICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgICByZXR1
cm4gd2VicnRjOjpSVENFcnJvcih3ZWJydGM6OlJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1Ip
OwotICB9Ci0gIGxhc3RfYXBwbGllZF9wYXJhbWV0ZXJzXyA9IGZpbGxlZF9wYXJhbWV0ZXJzOwot
Ci0gIC8vIE5vdyB0aGF0IHBhcmFtZXRlcnMgd2VyZSBhcHBsaWVkLCBjYW4gY2FsbCBTZXRTc3Jj
IG9uIHRoZSBpbnRlcm5hbCBzZW5kZXIuCi0gIC8vIFRoaXMgaXMgYW5hbG9nb3VzIHRvIGEgUGVl
ckNvbm5lY3Rpb24gY2FsbGluZyBTZXRTc3JjIGFmdGVyCi0gIC8vIFNldExvY2FsRGVzY3JpcHRp
b24gaXMgc3VjY2Vzc2Z1bC4KLSAgLy8KLSAgLy8gSWYgdGhlcmUgd2VyZSBubyBlbmNvZGluZ3Ms
IHRoaXMgU1NSQyBtYXkgYmUgMCwgd2hpY2ggaXMgdmFsaWQuCi0gIGlmICghaW50ZXJuYWxfc2Vu
ZGVyXykgewotICAgIENyZWF0ZUludGVybmFsU2VuZGVyKCk7Ci0gIH0KLSAgaW50ZXJuYWxfc2Vu
ZGVyXy0+U2V0U3NyYyhzc3JjKTsKLQotICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7Ci19Ci0KLVJ0
cFBhcmFtZXRlcnMgT3J0Y1J0cFNlbmRlckFkYXB0ZXI6OkdldFBhcmFtZXRlcnMoKSBjb25zdCB7
Ci0gIHJldHVybiBsYXN0X2FwcGxpZWRfcGFyYW1ldGVyc187Ci19Ci0KLWNyaWNrZXQ6Ok1lZGlh
VHlwZSBPcnRjUnRwU2VuZGVyQWRhcHRlcjo6R2V0S2luZCgpIGNvbnN0IHsKLSAgcmV0dXJuIGtp
bmRfOwotfQotCi1PcnRjUnRwU2VuZGVyQWRhcHRlcjo6T3J0Y1J0cFNlbmRlckFkYXB0ZXIoCi0g
ICAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQsCi0gICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0
cmFuc3BvcnQsCi0gICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90cmFuc3Bv
cnRfY29udHJvbGxlcikKLSAgICA6IGtpbmRfKGtpbmQpLAotICAgICAgdHJhbnNwb3J0Xyh0cmFu
c3BvcnQpLAotICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXyhydHBfdHJhbnNwb3J0X2Nv
bnRyb2xsZXIpIHt9Ci0KLXZvaWQgT3J0Y1J0cFNlbmRlckFkYXB0ZXI6OkNyZWF0ZUludGVybmFs
U2VuZGVyKCkgewotICBzd2l0Y2ggKGtpbmRfKSB7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPOiB7Ci0gICAgICBhdXRvKiBhdWRpb19zZW5kZXIgPSBuZXcgQXVkaW9SdHBTZW5k
ZXIoCi0gICAgICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+d29ya2VyX3RocmVhZCgp
LCAvKmlkPSovIiIsIG51bGxwdHIpOwotICAgICAgYXV0byogdm9pY2VfY2hhbm5lbCA9IHJ0cF90
cmFuc3BvcnRfY29udHJvbGxlcl8tPnZvaWNlX2NoYW5uZWwoKTsKLSAgICAgIFJUQ19EQ0hFQ0so
dm9pY2VfY2hhbm5lbCk7Ci0gICAgICBhdWRpb19zZW5kZXItPlNldFZvaWNlTWVkaWFDaGFubmVs
KHZvaWNlX2NoYW5uZWwtPm1lZGlhX2NoYW5uZWwoKSk7Ci0gICAgICBpbnRlcm5hbF9zZW5kZXJf
ID0gYXVkaW9fc2VuZGVyOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tldDo6
TUVESUFfVFlQRV9WSURFTzogewotICAgICAgYXV0byogdmlkZW9fc2VuZGVyID0gbmV3IFZpZGVv
UnRwU2VuZGVyKAotICAgICAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPndvcmtlcl90
aHJlYWQoKSwgLyppZD0qLyIiKTsKLSAgICAgIGF1dG8qIHZpZGVvX2NoYW5uZWwgPSBydHBfdHJh
bnNwb3J0X2NvbnRyb2xsZXJfLT52aWRlb19jaGFubmVsKCk7Ci0gICAgICBSVENfRENIRUNLKHZp
ZGVvX2NoYW5uZWwpOwotICAgICAgdmlkZW9fc2VuZGVyLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCh2
aWRlb19jaGFubmVsLT5tZWRpYV9jaGFubmVsKCkpOwotICAgICAgaW50ZXJuYWxfc2VuZGVyXyA9
IHZpZGVvX3NlbmRlcjsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfREFUQToKLSAgICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIH0KLSAgaWYgKHRyYWNr
XykgewotICAgIGlmICghaW50ZXJuYWxfc2VuZGVyXy0+U2V0VHJhY2sodHJhY2tfKSkgewotICAg
ICAgLy8gU2luY2Ugd2UgY2hlY2tlZCB0aGUgdHJhY2sgdHlwZSB3aGVuIGl0IHdhcyBzZXQsIHRo
aXMgc2hvdWxkIG5ldmVyCi0gICAgICAvLyBoYXBwZW4uLi4KLSAgICAgIFJUQ19OT1RSRUFDSEVE
KCk7Ci0gICAgfQotICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHNl
bmRlcmFkYXB0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L29ydGMvb3J0Y3J0cHNlbmRlcmFkYXB0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjA3OGRhOTg1YzlkMThhMDY4ODYyMjBkMjQ5ZjhhOTA5NGZjNWFiYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHBzZW5kZXJhZGFwdGVyLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE9SVENf
T1JUQ1JUUFNFTkRFUkFEQVBURVJfSF8KLSNkZWZpbmUgT1JUQ19PUlRDUlRQU0VOREVSQURBUFRF
Ul9IXwotCi0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaW5jbHVkZSAiYXBpL29ydGMvb3J0Y3J0cHNl
bmRlcmludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgotI2luY2x1ZGUgImFw
aS9ydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVy
YWRhcHRlci5oIgotI2luY2x1ZGUgInBjL3J0cHNlbmRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdz
bG90L3NpZ3Nsb3QuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIEltcGxlbWVudGF0aW9u
IG9mIE9ydGNSdHBTZW5kZXJJbnRlcmZhY2UgdGhhdCB3b3JrcyB3aXRoIFJ0cFRyYW5zcG9ydEFk
YXB0ZXIsCi0vLyBhbmQgd3JhcHMgYSBWaWRlb1J0cFNlbmRlci9BdWRpb1J0cFNlbmRlciB0aGF0
J3Mgbm9ybWFsbHkgdXNlZCB3aXRoIHRoZQotLy8gUGVlckNvbm5lY3Rpb24uCi0vLwotLy8gVE9E
TyhkZWFkYmVlZik6IFdoZW4gQmFzZUNoYW5uZWwgaXMgc3BsaXQgYXBhcnQgaW50byBzZXBhcmF0
ZQotLy8gIlJ0cFNlbmRlciIvIlJ0cFRyYW5zY2VpdmVyIi8iUnRwU2VuZGVyIi8iUnRwUmVjZWl2
ZXIiIG9iamVjdHMsIHRoaXMgYWRhcHRlcgotLy8gb2JqZWN0IGNhbiBiZSByZW1vdmVkLgotY2xh
c3MgT3J0Y1J0cFNlbmRlckFkYXB0ZXIgOiBwdWJsaWMgT3J0Y1J0cFNlbmRlckludGVyZmFjZSB7
Ci0gcHVibGljOgotICAvLyBXcmFwcyB8d3JhcHBlZF9zZW5kZXJ8IGluIGEgcHJveHkgdGhhdCB3
aWxsIHNhZmVseSBjYWxsIG1ldGhvZHMgb24gdGhlCi0gIC8vIGNvcnJlY3QgdGhyZWFkLgotICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+IENyZWF0ZVByb3h5
KAotICAgICAgc3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJBZGFwdGVyPiB3cmFwcGVkX3Nl
bmRlcik7Ci0KLSAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IFJ0cFRyYW5zcG9ydENvbnRy
b2xsZXJBZGFwdGVyLgotICBPcnRjUnRwU2VuZGVyQWRhcHRlcihjcmlja2V0OjpNZWRpYVR5cGUg
a2luZCwKLSAgICAgICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFu
c3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFw
dGVyKiBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIpOwotICB+T3J0Y1J0cFNlbmRlckFkYXB0ZXIo
KSBvdmVycmlkZTsKLQotICAvLyBPcnRjUnRwU2VuZGVySW50ZXJmYWNlIGltcGxlbWVudGF0aW9u
LgotICBSVENFcnJvciBTZXRUcmFjayhNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlKiB0cmFjaykg
b3ZlcnJpZGU7Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNl
PiBHZXRUcmFjaygpIGNvbnN0IG92ZXJyaWRlOwotCi0gIFJUQ0Vycm9yIFNldFRyYW5zcG9ydChS
dHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgb3ZlcnJpZGU7Ci0gIFJ0cFRyYW5zcG9y
dEludGVyZmFjZSogR2V0VHJhbnNwb3J0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgUlRDRXJyb3Ig
U2VuZChjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBvdmVycmlkZTsKLSAgUnRwUGFy
YW1ldGVycyBHZXRQYXJhbWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgY3JpY2tldDo6TWVk
aWFUeXBlIEdldEtpbmQoKSBjb25zdCBvdmVycmlkZTsKLQotICAvLyBVc2VkIHNvIHRoYXQgdGhl
IFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyIGtub3dzIHdoZW4gaXQgY2FuCi0gIC8vIGRl
YWxsb2NhdGUgcmVzb3VyY2VzIGFsbG9jYXRlZCBmb3IgdGhpcyBvYmplY3QuCi0gIHNpZ3Nsb3Q6
OnNpZ25hbDA8PiBTaWduYWxEZXN0cm95ZWQ7Ci0KLSBwcml2YXRlOgotICB2b2lkIENyZWF0ZUlu
dGVybmFsU2VuZGVyKCk7Ci0KLSAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmRfOwotICBSdHBUcmFu
c3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydF87Ci0gIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFw
dGVyKiBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfOwotICAvLyBTY29wZWQgcmVmcHRyIGR1ZSB0
byByZWYtY291bnRlZCBpbnRlcmZhY2UsIGJ1dCB3ZSBzaG91bGQgYmUgdGhlIG9ubHkKLSAgLy8g
cmVmZXJlbmNlIGhvbGRlci4KLSAgcnRjOjpzY29wZWRfcmVmcHRyPFJ0cFNlbmRlckludGVybmFs
PiBpbnRlcm5hbF9zZW5kZXJfOwotICBydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFj
a0ludGVyZmFjZT4gdHJhY2tfOwotICBSdHBQYXJhbWV0ZXJzIGxhc3RfYXBwbGllZF9wYXJhbWV0
ZXJzXzsKLQotICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKE9ydGNSdHBTZW5k
ZXJBZGFwdGVyKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBP
UlRDX09SVENSVFBTRU5ERVJBREFQVEVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydF91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNw
b3J0X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmFkNDNmYWIz
ZWRlZTcwNDA1YmE1NTIxZDkxNWRmYjU5MzA5YjhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL29ydGMvcnRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEs
Mjg2ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNp
bmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5Lmgi
Ci0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9y
eS5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmgiCi0jaW5jbHVkZSAi
b3J0Yy9vcnRjZmFjdG9yeS5oIgotI2luY2x1ZGUgIm9ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuaCIK
LSNpbmNsdWRlICJwMnAvYmFzZS9mYWtlcGFja2V0dHJhbnNwb3J0LmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvZ3VuaXQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFRoaXMgdGVzdCB1c2Vz
IGZha2UgcGFja2V0IHRyYW5zcG9ydHMgYW5kIGEgZmFrZSBtZWRpYSBlbmdpbmUsIGluIG9yZGVy
IHRvCi0vLyB0ZXN0IHRoZSBSdHBUcmFuc3BvcnQgYXQgb25seSBhbiBBUEkgbGV2ZWwuIEFueSBl
bmQtdG8tZW5kIHRlc3Qgc2hvdWxkIGdvIGluCi0vLyBvcnRjZmFjdG9yeV9pbnRlZ3JhdGlvbnRl
c3QuY2MgaW5zdGVhZC4KLWNsYXNzIFJ0cFRyYW5zcG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci0gcHVibGljOgotICBSdHBUcmFuc3BvcnRUZXN0KCkgewotICAgIGZha2VfbWVkaWFf
ZW5naW5lXyA9IG5ldyBjcmlja2V0OjpGYWtlTWVkaWFFbmdpbmUoKTsKLSAgICAvLyBOb3RlOiBU
aGlzIGRvZXNuJ3QgbmVlZCB0byB1c2UgZmFrZSBuZXR3b3JrIGNsYXNzZXMsIHNpbmNlIGl0IHVz
ZXMKLSAgICAvLyBGYWtlUGFja2V0VHJhbnNwb3J0cy4KLSAgICBhdXRvIHJlc3VsdCA9IE9ydGNG
YWN0b3J5OjpDcmVhdGUoCi0gICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2lu
ZUludGVyZmFjZT4oZmFrZV9tZWRpYV9lbmdpbmVfKSwKLSAgICAgICAgQ3JlYXRlQnVpbHRpbkF1
ZGlvRW5jb2RlckZhY3RvcnkoKSwgQ3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSk7
Ci0gICAgb3J0Y19mYWN0b3J5XyA9IHJlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgfQotCi0gcHJvdGVj
dGVkOgotICAvLyBPd25lZCBieSB8b3J0Y19mYWN0b3J5X3wuCi0gIGNyaWNrZXQ6OkZha2VNZWRp
YUVuZ2luZSogZmFrZV9tZWRpYV9lbmdpbmVfOwotICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3Rv
cnlJbnRlcmZhY2U+IG9ydGNfZmFjdG9yeV87Ci19OwotCi0vLyBUZXN0IEdldFJ0cFBhY2tldFRy
YW5zcG9ydCBhbmQgR2V0UnRjcFBhY2tldFRyYW5zcG9ydCwgd2l0aCBhbmQgd2l0aG91dCBSVENQ
Ci0vLyBtdXhpbmcuCi1URVNUX0YoUnRwVHJhbnNwb3J0VGVzdCwgR2V0UGFja2V0VHJhbnNwb3J0
cykgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRwKCJydHAiKTsKLSAgcnRjOjpGYWtl
UGFja2V0VHJhbnNwb3J0IHJ0Y3AoInJ0Y3AiKTsKLSAgLy8gV2l0aCBtdXhlZCBSVENQLgotICBS
dHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRlcnMucnRjcC5tdXgg
PSB0cnVlOwotICBhdXRvIHJlc3VsdCA9Ci0gICAgICBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBU
cmFuc3BvcnQocGFyYW1ldGVycywgJnJ0cCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIEFTU0VSVF9U
UlVFKHJlc3VsdC5vaygpKTsKLSAgRVhQRUNUX0VRKCZydHAsIHJlc3VsdC52YWx1ZSgpLT5HZXRS
dHBQYWNrZXRUcmFuc3BvcnQoKSk7Ci0gIEVYUEVDVF9FUShudWxscHRyLCByZXN1bHQudmFsdWUo
KS0+R2V0UnRjcFBhY2tldFRyYW5zcG9ydCgpKTsKLSAgcmVzdWx0Lk1vdmVWYWx1ZSgpLnJlc2V0
KCk7Ci0gIC8vIFdpdGggbm9uLW11eGVkIFJUQ1AuCi0gIHBhcmFtZXRlcnMucnRjcC5tdXggPSBm
YWxzZTsKLSAgcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KHBhcmFt
ZXRlcnMsICZydHAsICZydGNwLCBudWxscHRyKTsKLSAgQVNTRVJUX1RSVUUocmVzdWx0Lm9rKCkp
OwotICBFWFBFQ1RfRVEoJnJ0cCwgcmVzdWx0LnZhbHVlKCktPkdldFJ0cFBhY2tldFRyYW5zcG9y
dCgpKTsKLSAgRVhQRUNUX0VRKCZydGNwLCByZXN1bHQudmFsdWUoKS0+R2V0UnRjcFBhY2tldFRy
YW5zcG9ydCgpKTsKLX0KLQotLy8gSWYgYW4gUnRwVHJhbnNwb3J0IHN0YXJ0cyBvdXQgdW4tbXV4
ZWQgYW5kIHRoZW4gc3RhcnRzIG11eGluZywgdGhlIFJUQ1AKLS8vIHBhY2tldCB0cmFuc3BvcnQg
c2hvdWxkIGJlIGZvcmdvdHRlbiBhbmQgR2V0UnRjcFBhY2tldFRyYW5zcG9ydCBzaG91bGQKLS8v
IHJldHVybiBudWxsLgotVEVTVF9GKFJ0cFRyYW5zcG9ydFRlc3QsIEVuYWJsaW5nUnRjcE11eGlu
Z1Vuc2V0c1J0Y3BUcmFuc3BvcnQpIHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0cCgi
cnRwIik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBydGNwKCJydGNwIik7Ci0KLSAgLy8g
Q3JlYXRlIG5vbi1tdXhlZC4KLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwot
ICBwYXJhbWV0ZXJzLnJ0Y3AubXV4ID0gZmFsc2U7Ci0gIGF1dG8gcmVzdWx0ID0KLSAgICAgIG9y
dGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydChwYXJhbWV0ZXJzLCAmcnRwLCAmcnRjcCwg
bnVsbHB0cik7Ci0gIEFTU0VSVF9UUlVFKHJlc3VsdC5vaygpKTsKLSAgYXV0byBydHBfdHJhbnNw
b3J0ID0gcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIC8vIEVuYWJsZSBtdXhpbmcuCi0gIHBhcmFt
ZXRlcnMucnRjcC5tdXggPSB0cnVlOwotICBFWFBFQ1RfVFJVRShydHBfdHJhbnNwb3J0LT5TZXRQ
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfRVEobnVsbHB0ciwgcnRwX3Ry
YW5zcG9ydC0+R2V0UnRjcFBhY2tldFRyYW5zcG9ydCgpKTsKLX0KLQotVEVTVF9GKFJ0cFRyYW5z
cG9ydFRlc3QsIEdldEFuZFNldFJ0Y3BQYXJhbWV0ZXJzKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRy
YW5zcG9ydCBydHAoInJ0cCIpOwotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRjcCgicnRj
cCIpOwotICAvLyBTdGFydCB3aXRoIG5vbi1tdXhlZCBSVENQLgotICBSdHBUcmFuc3BvcnRQYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRlcnMucnRjcC5tdXggPSBmYWxzZTsKLSAgcGFy
YW1ldGVycy5ydGNwLmNuYW1lID0gInRlU1QiOwotICBwYXJhbWV0ZXJzLnJ0Y3AucmVkdWNlZF9z
aXplID0gZmFsc2U7Ci0gIGF1dG8gcmVzdWx0ID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFRyYW5zcG9ydChwYXJhbWV0ZXJzLCAmcnRwLCAmcnRjcCwgbnVsbHB0cik7Ci0gIEFTU0VS
VF9UUlVFKHJlc3VsdC5vaygpKTsKLSAgYXV0byB0cmFuc3BvcnQgPSByZXN1bHQuTW92ZVZhbHVl
KCk7Ci0gIEVYUEVDVF9FUShwYXJhbWV0ZXJzLCB0cmFuc3BvcnQtPkdldFBhcmFtZXRlcnMoKSk7
Ci0KLSAgLy8gQ2hhbmdpbmcgdGhlIENOQU1FIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC4KLSAg
cGFyYW1ldGVycy5ydGNwLmNuYW1lID0gImRpZmZlcmVudCI7Ci0gIEVYUEVDVF9FUShSVENFcnJv
clR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgIHRyYW5zcG9ydC0+U2V0
UGFyYW1ldGVycyhwYXJhbWV0ZXJzKS50eXBlKCkpOwotICBwYXJhbWV0ZXJzLnJ0Y3AuY25hbWUg
PSAidGVTVCI7Ci0KLSAgLy8gRW5hYmxlIFJUQ1AgbXV4aW5nIGFuZCByZWR1Y2VkLXNpemUgUlRD
UC4KLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IHRydWU7Ci0gIHBhcmFtZXRlcnMucnRjcC5yZWR1
Y2VkX3NpemUgPSB0cnVlOwotICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnQtPlNldFBhcmFtZXRlcnMo
cGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9FUShwYXJhbWV0ZXJzLCB0cmFuc3BvcnQtPkdl
dFBhcmFtZXRlcnMoKSk7Ci0KLSAgLy8gRW1wdHkgQ05BTUUgc2hvdWxkIHJlc3VsdCBpbiB0aGUg
ZXhpc3RpbmcgQ05BTUUgYmVpbmcgdXNlZC4KLSAgcGFyYW1ldGVycy5ydGNwLmNuYW1lLmNsZWFy
KCk7Ci0gIEVYUEVDVF9UUlVFKHRyYW5zcG9ydC0+U2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJzKS5v
aygpKTsKLSAgRVhQRUNUX0VRKCJ0ZVNUIiwgdHJhbnNwb3J0LT5HZXRQYXJhbWV0ZXJzKCkucnRj
cC5jbmFtZSk7Ci0KLSAgLy8gRGlzYWJsaW5nIFJUQ1AgbXV4aW5nIGFmdGVyIGVuYWJsaW5nIHNo
b3VsZG4ndCBiZSBhbGxvd2VkLCBzaW5jZSBlbmFibGluZwotICAvLyBtdXhpbmcgc2hvdWxkIGhh
dmUgbWFkZSB0aGUgUlRQIHRyYW5zcG9ydCBmb3JnZXQgYWJvdXQgdGhlIFJUQ1AgcGFja2V0Ci0g
IC8vIHRyYW5zcG9ydCBpbml0aWFsbHkgcGFzc2VkIGludG8gaXQuCi0gIHBhcmFtZXRlcnMucnRj
cC5tdXggPSBmYWxzZTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9TVEFURSwK
LSAgICAgICAgICAgIHRyYW5zcG9ydC0+U2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJzKS50eXBlKCkp
OwotfQotCi0vLyBXaGVuIFNlbmQgb3IgUmVjZWl2ZSBpcyBjYWxsZWQgb24gYSBzZW5kZXIgb3Ig
cmVjZWl2ZXIsIHRoZSBSVENQIHBhcmFtZXRlcnMKLS8vIGZyb20gdGhlIFJ0cFRyYW5zcG9ydCB1
bmRlcm5lYXRoIHRoZSBzZW5kZXIgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIGNyZWF0ZWQKLS8v
IG1lZGlhIHN0cmVhbS4gVGhlIG9ubHkgcmVsZXZhbnQgcGFyYW1ldGVycyAoY3VycmVudGx5KSBh
cmUgfGNuYW1lfCBhbmQKLS8vIHxyZWR1Y2VkX3NpemV8LgotVEVTVF9GKFJ0cFRyYW5zcG9ydFRl
c3QsIFNlbmRBbmRSZWNlaXZlQXBwbHlSdGNwUGFyYW1ldGVyc1RvTWVkaWFFbmdpbmUpIHsKLSAg
Ly8gRmlyc3QsIGNyZWF0ZSB2aWRlbyB0cmFuc3BvcnQgd2l0aCByZWR1Y2VkLXNpemUgUlRDUC4K
LSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IGZha2VfcGFja2V0X3RyYW5zcG9ydDEoIjEiKTsK
LSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICBwYXJhbWV0ZXJzLnJ0Y3Au
bXV4ID0gdHJ1ZTsKLSAgcGFyYW1ldGVycy5ydGNwLnJlZHVjZWRfc2l6ZSA9IHRydWU7Ci0gIHBh
cmFtZXRlcnMucnRjcC5jbmFtZSA9ICJmb28iOwotICBhdXRvIHJ0cF90cmFuc3BvcnRfcmVzdWx0
ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgcGFyYW1ldGVycywg
JmZha2VfcGFja2V0X3RyYW5zcG9ydDEsIG51bGxwdHIsIG51bGxwdHIpOwotICBhdXRvIHZpZGVv
X3RyYW5zcG9ydCA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIC8vIENy
ZWF0ZSB2aWRlbyBzZW5kZXIgYW5kIGNhbGwgU2VuZCwgZXhwZWN0aW5nIHBhcmFtZXRlcnMgdG8g
YmUgYXBwbGllZC4KLSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb190cmFuc3BvcnQuZ2V0KCkp
OwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHNlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVY
UEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKSku
b2soKSk7Ci0gIGNyaWNrZXQ6OkZha2VWaWRlb01lZGlhQ2hhbm5lbCogZmFrZV92aWRlb19jaGFu
bmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0VmlkZW9DaGFubmVsKDApOwotICBB
U1NFUlRfTkUobnVsbHB0ciwgZmFrZV92aWRlb19jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFr
ZV92aWRlb19jaGFubmVsLT5zZW5kX3J0Y3BfcGFyYW1ldGVycygpLnJlZHVjZWRfc2l6ZSk7Ci0g
IEFTU0VSVF9FUSgxdSwgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3N0cmVhbXMoKS5zaXplKCkp
OwotICBjb25zdCBjcmlja2V0OjpTdHJlYW1QYXJhbXMmIHZpZGVvX3NlbmRfc3RyZWFtID0KLSAg
ICAgIGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9zdHJlYW1zKClbMF07Ci0gIEVYUEVDVF9FUSgi
Zm9vIiwgdmlkZW9fc2VuZF9zdHJlYW0uY25hbWUpOwotCi0gIC8vIENyZWF0ZSB2aWRlbyByZWNl
aXZlciBhbmQgY2FsbCBSZWNlaXZlLCBleHBlY3RpbmcgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVk
Ci0gIC8vIChtaW51cyB8Y25hbWV8LCBzaW5jZSB0aGF0J3MgdGhlIHNlbnQgY25hbWUsIG5vdCBy
ZWNlaXZlZCkuCi0gIGF1dG8gcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb190cmFu
c3BvcnQuZ2V0KCkpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyID0gcmVjZWl2ZXJfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZl
KE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVyc1dpdGhTc3JjKDB4ZGVhZGJlZWYpKQotICAgICAgICAg
IC5vaygpKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X3J0Y3BfcGFy
YW1ldGVycygpLnJlZHVjZWRfc2l6ZSk7Ci0KLSAgLy8gQ3JlYXRlIGF1ZGlvIHRyYW5zcG9ydCB3
aXRoIG5vbi1yZWR1Y2VkIHNpemUgUlRDUC4KLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IGZh
a2VfcGFja2V0X3RyYW5zcG9ydDIoIjIiKTsKLSAgcGFyYW1ldGVycy5ydGNwLnJlZHVjZWRfc2l6
ZSA9IGZhbHNlOwotICBwYXJhbWV0ZXJzLnJ0Y3AuY25hbWUgPSAiYmFyIjsKLSAgcnRwX3RyYW5z
cG9ydF9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBw
YXJhbWV0ZXJzLCAmZmFrZV9wYWNrZXRfdHJhbnNwb3J0MiwgbnVsbHB0ciwgbnVsbHB0cik7Ci0g
IGF1dG8gYXVkaW9fdHJhbnNwb3J0ID0gcnRwX3RyYW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7
Ci0KLSAgLy8gQ3JlYXRlIGF1ZGlvIHNlbmRlciBhbmQgY2FsbCBTZW5kLCBleHBlY3RpbmcgcGFy
YW1ldGVycyB0byBiZSBhcHBsaWVkLgotICBzZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+
Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fdHJhbnNwb3J0LmdldCgp
KTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBzZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBF
WFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQoTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVycygp
KS5vaygpKTsKLQotICBjcmlja2V0OjpGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2Vf
Y2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsK
LSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2Vfdm9pY2VfY2hhbm5lbCk7Ci0gIEVYUEVDVF9GQUxT
RShmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfcnRjcF9wYXJhbWV0ZXJzKCkucmVkdWNlZF9zaXpl
KTsKLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpLnNp
emUoKSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYgYXVkaW9fc2VuZF9zdHJlYW0g
PQotICAgICAgZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVswXTsKLSAgRVhQRUNU
X0VRKCJiYXIiLCBhdWRpb19zZW5kX3N0cmVhbS5jbmFtZSk7Ci0KLSAgLy8gQ3JlYXRlIGF1ZGlv
IHJlY2VpdmVyIGFuZCBjYWxsIFJlY2VpdmUsIGV4cGVjdGluZyBwYXJhbWV0ZXJzIHRvIGJlIGFw
cGxpZWQKLSAgLy8gKG1pbnVzIHxjbmFtZXwsIHNpbmNlIHRoYXQncyB0aGUgc2VudCBjbmFtZSwg
bm90IHJlY2VpdmVkKS4KLSAgcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwUmVjZWl2ZXIoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fdHJhbnNwb3J0LmdldCgp
KTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9IHJlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsK
LSAgRVhQRUNUX1RSVUUoCi0gICAgICBhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShNYWtlTWluaW1h
bE9wdXNQYXJhbWV0ZXJzV2l0aFNzcmMoMHhiYWFkZjAwZCkpCi0gICAgICAgICAgLm9rKCkpOwot
ICBFWFBFQ1RfRkFMU0UoZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2X3J0Y3BfcGFyYW1ldGVycygp
LnJlZHVjZWRfc2l6ZSk7Ci19Ci0KLS8vIFdoZW4gU2V0UGFyYW1ldGVycyBpcyBjYWxsZWQsIHRo
ZSBtb2RpZmllZCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBhcHBsaWVkCi0vLyB0byB0aGUgbWVkaWEg
ZW5naW5lLgotLy8gVE9ETyhkZWFkYmVlZik6IE9uY2UgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBv
cnRzIGNoYW5naW5nIHRoZSBDTkFNRSwKLS8vIHRlc3QgdGhhdCBoZXJlLgotVEVTVF9GKFJ0cFRy
YW5zcG9ydFRlc3QsIFNldFJ0Y3BQYXJhbWV0ZXJzQXBwbGllc1BhcmFtZXRlcnNUb01lZGlhRW5n
aW5lKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBmYWtlX3BhY2tldF90cmFuc3BvcnQo
ImZha2UiKTsKLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICBwYXJhbWV0
ZXJzLnJ0Y3AubXV4ID0gdHJ1ZTsKLSAgcGFyYW1ldGVycy5ydGNwLnJlZHVjZWRfc2l6ZSA9IGZh
bHNlOwotICBhdXRvIHJ0cF90cmFuc3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwVHJhbnNwb3J0KAotICAgICAgcGFyYW1ldGVycywgJmZha2VfcGFja2V0X3RyYW5zcG9ydCwg
bnVsbHB0ciwgbnVsbHB0cik7Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydCA9IHJ0cF90cmFuc3BvcnRf
cmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIC8vIENyZWF0ZSB2aWRlbyBzZW5kZXIgYW5kIGNhbGwg
U2VuZCwgYXBwbHlpbmcgYW4gaW5pdGlhbCBzZXQgb2YgcGFyYW1ldGVycy4KLSAgYXV0byBzZW5k
ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElB
X1RZUEVfVklERU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgYXV0byBzZW5kZXIgPSBzZW5kZXJf
cmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRShzZW5kZXItPlNlbmQoTWFrZU1pbmlt
YWxWcDhQYXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0gIC8vIE1vZGlmeSBwYXJhbWV0ZXJzIGFuZCBl
eHBlY3QgdGhlbSB0byBiZSBjaGFuZ2VkIGF0IHRoZSBtZWRpYSBlbmdpbmUgbGV2ZWwuCi0gIHBh
cmFtZXRlcnMucnRjcC5yZWR1Y2VkX3NpemUgPSB0cnVlOwotICBFWFBFQ1RfVFJVRShydHBfdHJh
bnNwb3J0LT5TZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLm9rKCkpOwotCi0gIGNyaWNrZXQ6OkZh
a2VWaWRlb01lZGlhQ2hhbm5lbCogZmFrZV92aWRlb19jaGFubmVsID0KLSAgICAgIGZha2VfbWVk
aWFfZW5naW5lXy0+R2V0VmlkZW9DaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFr
ZV92aWRlb19jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92aWRlb19jaGFubmVsLT5zZW5k
X3J0Y3BfcGFyYW1ldGVycygpLnJlZHVjZWRfc2l6ZSk7Ci19Ci0KLS8vIFNldFBhcmFtZXRlcnMg
c2hvdWxkIHNldCBrZWVwYWxpdmUgZm9yIGFsbCBSVFAgdHJhbnNwb3J0cy4KLS8vIEl0IGlzIGlt
cG9zc2libGUgdG8gbW9kaWZ5IGtlZXBhbGl2ZSBwYXJhbWV0ZXJzIGlmIGFueSBzdHJlYW1zIGFy
ZSBjcmVhdGVkLgotLy8gTm90ZTogVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgZm9y
IGN1cnJlbnQgd2F5IG9mIGNvbmZpZ3VyaW5nIHRoZQotLy8ga2VlcC1hbGl2ZS4gSXQgbWF5IGNo
YW5nZSBpbiB0aGUgZnV0dXJlLgotVEVTVF9GKFJ0cFRyYW5zcG9ydFRlc3QsIENhbnRDaGFuZ2VL
ZWVwQWxpdmVBZnRlckNyZWF0ZWRTZW5kU3RyZWFtcykgewotICBydGM6OkZha2VQYWNrZXRUcmFu
c3BvcnQgZmFrZV9wYWNrZXRfdHJhbnNwb3J0KCJmYWtlIik7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKLSAgcGFyYW1ldGVycy5rZWVwYWxpdmUudGltZW91dF9pbnRlcnZh
bF9tcyA9IDEwMDsKLSAgYXV0byBydHBfdHJhbnNwb3J0X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8t
PkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIHBhcmFtZXRlcnMsICZmYWtlX3BhY2tldF90cmFu
c3BvcnQsIG51bGxwdHIsIG51bGxwdHIpOwotICBBU1NFUlRfVFJVRShydHBfdHJhbnNwb3J0X3Jl
c3VsdC5vaygpKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVyZmFjZT4gcnRw
X3RyYW5zcG9ydCA9Ci0gICAgICBydHBfdHJhbnNwb3J0X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQot
ICAvLyBVcGRhdGluZyBrZWVwYWxpdmUgcGFyYW1ldGVycyBpcyBvaywgc2luY2Ugbm8gcnRwIHNl
bmRlciBjcmVhdGVkLgotICBwYXJhbWV0ZXJzLmtlZXBhbGl2ZS50aW1lb3V0X2ludGVydmFsX21z
ID0gMjAwOwotICBFWFBFQ1RfVFJVRShydHBfdHJhbnNwb3J0LT5TZXRQYXJhbWV0ZXJzKHBhcmFt
ZXRlcnMpLm9rKCkpOwotCi0gIC8vIENyZWF0ZSB2aWRlbyBzZW5kZXIuIE5vdGU6IHxzZW5kZXJf
cmVzdWx0fCBzY29wZSBtdXN0IGV4dGVuZCBwYXN0IHRoZQotICAvLyBTZXRQYXJhbWV0ZXJzKCkg
Y2FsbCBiZWxvdy4KLSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBfdHJhbnNwb3J0LmdldCgpKTsK
LSAgRVhQRUNUX1RSVUUoc2VuZGVyX3Jlc3VsdC5vaygpKTsKLQotICAvLyBNb2RpZnkgcGFyYW1l
dGVycyBzZWNvbmQgdGltZSBhZnRlciB2aWRlbyBzZW5kIHN0cmVhbSBjcmVhdGVkLgotICBwYXJh
bWV0ZXJzLmtlZXBhbGl2ZS50aW1lb3V0X2ludGVydmFsX21zID0gMTA7Ci0gIEVYUEVDVF9FUShS
VENFcnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLAotICAgICAgICAgICAgcnRwX3RyYW5z
cG9ydC0+U2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJzKS50eXBlKCkpOwotfQotCi0vLyBOb3RlOiBU
aGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBmb3IgY3VycmVudCB3YXkgb2YgY29uZmln
dXJpbmcgdGhlCi0vLyBrZWVwLWFsaXZlLiBJdCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuCi1U
RVNUX0YoUnRwVHJhbnNwb3J0VGVzdCwgS2VlcEFsaXZlTXVzdEJlU2FtZUFjcm9zc1RyYW5zcG9y
dENvbnRyb2xsZXIpIHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IGZha2VfcGFja2V0X3Ry
YW5zcG9ydCgiZmFrZSIpOwotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0g
IHBhcmFtZXRlcnMua2VlcGFsaXZlLnRpbWVvdXRfaW50ZXJ2YWxfbXMgPSAxMDA7Ci0KLSAgLy8g
TWFudWFsbHkgY3JlYXRlIGEgY29udHJvbGxlciwgdGhhdCBjYW4gYmUgc2hhcmVkIGJ5IG11bHRp
cGxlIHRyYW5zcG9ydHMuCi0gIGF1dG8gY29udHJvbGxlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVSdHBUcmFuc3BvcnRDb250cm9sbGVyKCk7Ci0gIEFTU0VSVF9UUlVFKGNvbnRyb2xs
ZXJfcmVzdWx0Lm9rKCkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxl
ckludGVyZmFjZT4gY29udHJvbGxlciA9Ci0gICAgICBjb250cm9sbGVyX3Jlc3VsdC5Nb3ZlVmFs
dWUoKTsKLQotICAvLyBDcmVhdGUgYSBmaXJzdCB0cmFuc3BvcnQuCi0gIGF1dG8gZmlyc3RfdHJh
bnNwb3J0X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAg
IHBhcmFtZXRlcnMsICZmYWtlX3BhY2tldF90cmFuc3BvcnQsIG51bGxwdHIsIGNvbnRyb2xsZXIu
Z2V0KCkpOwotICBBU1NFUlRfVFJVRShmaXJzdF90cmFuc3BvcnRfcmVzdWx0Lm9rKCkpOwotCi0g
IC8vIFVwZGF0ZSB0aGUgcGFyYW1ldGVycywgYW5kIGNyZWF0ZSBhbm90aGVyIHRyYW5zcG9ydCBm
b3IgdGhlIHNhbWUKLSAgLy8gY29udHJvbGxlci4KLSAgcGFyYW1ldGVycy5rZWVwYWxpdmUudGlt
ZW91dF9pbnRlcnZhbF9tcyA9IDEwOwotICBhdXRvIHNlY29uZHNfdHJhbnNwb3J0X3Jlc3VsdCA9
IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIHBhcmFtZXRlcnMsICZm
YWtlX3BhY2tldF90cmFuc3BvcnQsIG51bGxwdHIsIGNvbnRyb2xsZXIuZ2V0KCkpOwotICBFWFBF
Q1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX01PRElGSUNBVElPTiwKLSAgICAgICAgICAgIHNl
Y29uZHNfdHJhbnNwb3J0X3Jlc3VsdC5lcnJvcigpLnR5cGUoKSk7Ci19Ci0KLX0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5jYwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRjMmVmMDllNjZlZGRiOWFjNzg0YzM3MTYxMWRl
NzIzZmVhN2FlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5z
cG9ydGFkYXB0ZXIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyMzAgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLQotI2luY2x1ZGUgIm9ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5oIgotCi0jaW5j
bHVkZSA8YWxnb3JpdGhtPiAgLy8gRm9yIHN0ZDo6ZmluZC4KLSNpbmNsdWRlIDxzZXQ+Ci0jaW5j
bHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6Om1vdmUuCi0KLSNpbmNsdWRlICJhYnNsL21lbW9y
eS9tZW1vcnkuaCIKLSNpbmNsdWRlICJhcGkvcHJveHkuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1CRUdJTl9PV05FRF9QUk9YWV9NQVAo
UnRwVHJhbnNwb3J0KQotUFJPWFlfU0lHTkFMSU5HX1RIUkVBRF9ERVNUUlVDVE9SKCkKLVBST1hZ
X0NPTlNUTUVUSE9EMChQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqLCBHZXRSdHBQYWNrZXRUcmFu
c3BvcnQpCi1QUk9YWV9DT05TVE1FVEhPRDAoUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiwgR2V0
UnRjcFBhY2tldFRyYW5zcG9ydCkKLVBST1hZX01FVEhPRDEoUlRDRXJyb3IsIFNldFBhcmFtZXRl
cnMsIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmKQotUFJPWFlfQ09OU1RNRVRIT0QwKFJ0
cFRyYW5zcG9ydFBhcmFtZXRlcnMsIEdldFBhcmFtZXRlcnMpCi1wcm90ZWN0ZWQ6Ci1SdHBUcmFu
c3BvcnRBZGFwdGVyKiBHZXRJbnRlcm5hbCgpIG92ZXJyaWRlIHsKLSAgcmV0dXJuIGludGVybmFs
KCk7Ci19Ci1FTkRfUFJPWFlfTUFQKCkKLQotQkVHSU5fT1dORURfUFJPWFlfTUFQKFNydHBUcmFu
c3BvcnQpCi1QUk9YWV9TSUdOQUxJTkdfVEhSRUFEX0RFU1RSVUNUT1IoKQotUFJPWFlfQ09OU1RN
RVRIT0QwKFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSosIEdldFJ0cFBhY2tldFRyYW5zcG9ydCkK
LVBST1hZX0NPTlNUTUVUSE9EMChQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqLCBHZXRSdGNwUGFj
a2V0VHJhbnNwb3J0KQotUFJPWFlfTUVUSE9EMShSVENFcnJvciwgU2V0UGFyYW1ldGVycywgY29u
c3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYpCi1QUk9YWV9DT05TVE1FVEhPRDAoUnRwVHJhbnNw
b3J0UGFyYW1ldGVycywgR2V0UGFyYW1ldGVycykKLVBST1hZX01FVEhPRDEoUlRDRXJyb3IsIFNl
dFNydHBTZW5kS2V5LCBjb25zdCBjcmlja2V0OjpDcnlwdG9QYXJhbXMmKQotUFJPWFlfTUVUSE9E
MShSVENFcnJvciwgU2V0U3J0cFJlY2VpdmVLZXksIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1BhcmFt
cyYpCi1wcm90ZWN0ZWQ6Ci1SdHBUcmFuc3BvcnRBZGFwdGVyKiBHZXRJbnRlcm5hbCgpIG92ZXJy
aWRlIHsKLSAgcmV0dXJuIGludGVybmFsKCk7Ci19Ci1FTkRfUFJPWFlfTUFQKCkKLQotLy8gc3Rh
dGljCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+Pgot
UnRwVHJhbnNwb3J0QWRhcHRlcjo6Q3JlYXRlUHJveGllZCgKLSAgICBjb25zdCBSdHBUcmFuc3Bv
cnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSog
cnRwLAotICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICBSdHBUcmFuc3Bv
cnRDb250cm9sbGVyQWRhcHRlciogcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyKSB7Ci0gIGlmICgh
cnRwKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BB
UkFNRVRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiTXVzdCBwcm92aWRlIGFuIFJUUCBw
YWNrZXQgdHJhbnNwb3J0LiIpOwotICB9Ci0gIGlmICghcGFyYW1ldGVycy5ydGNwLm11eCAmJiAh
cnRjcCkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKAotICAgICAgICBSVENFcnJvclR5cGU6
OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAiTXVzdCBwcm92aWRlIGFuIFJUQ1AgcGFja2V0
IHRyYW5zcG9ydCB3aGVuIFJUQ1AgbXV4aW5nIGlzIG5vdCB1c2VkLiIpOwotICB9Ci0gIGlmIChw
YXJhbWV0ZXJzLnJ0Y3AubXV4ICYmIHJ0Y3ApIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihS
VENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICJDcmVhdGluZyBhbiBSdHBUcmFuc3BvcnQgd2l0aCBSVENQIG11eGluZyBlbmFibGVkLCAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggYSBzZXBhcmF0ZSBSVENQIHBhY2tldCB0cmFu
c3BvcnQ/Iik7Ci0gIH0KLSAgaWYgKCFydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgICAv
LyBTaW5jZSBPcnRjRmFjdG9yeTo6Q3JlYXRlUnRwVHJhbnNwb3J0IGNyZWF0ZXMgYW4gUnRwVHJh
bnNwb3J0Q29udHJvbGxlcgotICAgIC8vIGF1dG9tYXRpY2FsbHkgd2hlbiBvbmUgaXNuJ3QgcGFz
c2VkIGluLCB0aGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLgotICAgIFJUQ19OT1RSRUFDSEVE
KCk7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFN
RVRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiTXVzdCBwcm92aWRlIGFuIFJUUCB0cmFu
c3BvcnQgY29udHJvbGxlci4iKTsKLSAgfQotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0
QWRhcHRlcj4gdHJhbnNwb3J0X2FkYXB0ZXIoCi0gICAgICBuZXcgUnRwVHJhbnNwb3J0QWRhcHRl
cihwYXJhbWV0ZXJzLnJ0Y3AsIHJ0cCwgcnRjcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZhbHNlIC8qaXNfc3J0cF90cmFuc3BvcnQqLykpOwotICBSVENFcnJvciBwYXJhbXNfcmVz
dWx0ID0gdHJhbnNwb3J0X2FkYXB0ZXItPlNldFBhcmFtZXRlcnMocGFyYW1ldGVycyk7Ci0gIGlm
ICghcGFyYW1zX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJuIHN0ZDo6bW92ZShwYXJhbXNfcmVz
dWx0KTsKLSAgfQotCi0gIHJldHVybiBSdHBUcmFuc3BvcnRQcm94eVdpdGhJbnRlcm5hbDxSdHBU
cmFuc3BvcnRBZGFwdGVyPjo6Q3JlYXRlKAotICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVy
LT5zaWduYWxpbmdfdGhyZWFkKCksCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXItPndv
cmtlcl90aHJlYWQoKSwgc3RkOjptb3ZlKHRyYW5zcG9ydF9hZGFwdGVyKSk7Ci19Ci0KLVJUQ0Vy
cm9yT3I8c3RkOjp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+PgotUnRwVHJhbnNw
b3J0QWRhcHRlcjo6Q3JlYXRlU3J0cFByb3hpZWQoCi0gICAgY29uc3QgUnRwVHJhbnNwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycywKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwK
LSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0Y3AsCi0gICAgUnRwVHJhbnNwb3J0Q29u
dHJvbGxlckFkYXB0ZXIqIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcikgewotICBpZiAoIXJ0cCkg
ewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVU
RVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIk11c3QgcHJvdmlkZSBhbiBSVFAgcGFja2V0
IHRyYW5zcG9ydC4iKTsKLSAgfQotICBpZiAoIXBhcmFtZXRlcnMucnRjcC5tdXggJiYgIXJ0Y3Ap
IHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUigKLSAgICAgICAgUlRDRXJyb3JUeXBlOjpJTlZB
TElEX1BBUkFNRVRFUiwKLSAgICAgICAgIk11c3QgcHJvdmlkZSBhbiBSVENQIHBhY2tldCB0cmFu
c3BvcnQgd2hlbiBSVENQIG11eGluZyBpcyBub3QgdXNlZC4iKTsKLSAgfQotICBpZiAocGFyYW1l
dGVycy5ydGNwLm11eCAmJiBydGNwKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJy
b3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiQ3Jl
YXRpbmcgYW4gUnRwVHJhbnNwb3J0IHdpdGggUlRDUCBtdXhpbmcgZW5hYmxlZCwgIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICJ3aXRoIGEgc2VwYXJhdGUgUlRDUCBwYWNrZXQgdHJhbnNwb3J0
PyIpOwotICB9Ci0gIGlmICghcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyKSB7Ci0gICAgLy8gU2lu
Y2UgT3J0Y0ZhY3Rvcnk6OkNyZWF0ZVJ0cFRyYW5zcG9ydCBjcmVhdGVzIGFuIFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXIKLSAgICAvLyBhdXRvbWF0aWNhbGx5IHdoZW4gb25lIGlzbid0IHBhc3NlZCBp
biwgdGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC4KLSAgICBSVENfTk9UUkVBQ0hFRCgpOwot
ICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIk11c3QgcHJvdmlkZSBhbiBSVFAgdHJhbnNwb3J0
IGNvbnRyb2xsZXIuIik7Ci0gIH0KLQotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0QWRh
cHRlcj4gdHJhbnNwb3J0X2FkYXB0ZXI7Ci0gIHRyYW5zcG9ydF9hZGFwdGVyLnJlc2V0KG5ldyBS
dHBUcmFuc3BvcnRBZGFwdGVyKHBhcmFtZXRlcnMucnRjcCwgcnRwLCBydGNwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBfdHJhbnNwb3J0X2Nv
bnRyb2xsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRydWUgLyppc19zcnRwX3RyYW5zcG9ydCovKSk7Ci0gIFJUQ0Vycm9yIHBhcmFtc19yZXN1
bHQgPSB0cmFuc3BvcnRfYWRhcHRlci0+U2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKLSAgaWYg
KCFwYXJhbXNfcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gc3RkOjptb3ZlKHBhcmFtc19yZXN1
bHQpOwotICB9Ci0KLSAgcmV0dXJuIFNydHBUcmFuc3BvcnRQcm94eVdpdGhJbnRlcm5hbDxSdHBU
cmFuc3BvcnRBZGFwdGVyPjo6Q3JlYXRlKAotICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVy
LT5zaWduYWxpbmdfdGhyZWFkKCksCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXItPndv
cmtlcl90aHJlYWQoKSwgc3RkOjptb3ZlKHRyYW5zcG9ydF9hZGFwdGVyKSk7Ci19Ci0KLXZvaWQg
UnRwVHJhbnNwb3J0QWRhcHRlcjo6VGFrZU93bmVyc2hpcE9mUnRwVHJhbnNwb3J0Q29udHJvbGxl
cigKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4g
Y29udHJvbGxlcikgewotICBSVENfRENIRUNLX0VRKHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8s
IGNvbnRyb2xsZXItPkdldEludGVybmFsKCkpOwotICBSVENfRENIRUNLKG93bmVkX3J0cF90cmFu
c3BvcnRfY29udHJvbGxlcl8uZ2V0KCkgPT0gbnVsbHB0cik7Ci0gIG93bmVkX3J0cF90cmFuc3Bv
cnRfY29udHJvbGxlcl8gPSBzdGQ6Om1vdmUoY29udHJvbGxlcik7Ci19Ci0KLVJ0cFRyYW5zcG9y
dEFkYXB0ZXI6OlJ0cFRyYW5zcG9ydEFkYXB0ZXIoCi0gICAgY29uc3QgUnRjcFBhcmFtZXRlcnMm
IHJ0Y3BfcGFyYW1zLAotICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAotICAgIFBh
Y2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVy
QWRhcHRlciogcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyLAotICAgIGJvb2wgaXNfc3J0cF90cmFu
c3BvcnQpCi0gICAgOiBydHBfcGFja2V0X3RyYW5zcG9ydF8ocnRwKSwKLSAgICAgIHJ0Y3BfcGFj
a2V0X3RyYW5zcG9ydF8ocnRjcCksCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfKHJ0
cF90cmFuc3BvcnRfY29udHJvbGxlciksCi0gICAgICBuZXR3b3JrX3RocmVhZF8ocnRwX3RyYW5z
cG9ydF9jb250cm9sbGVyXy0+bmV0d29ya190aHJlYWQoKSkgewotICBwYXJhbWV0ZXJzXy5ydGNw
ID0gcnRjcF9wYXJhbXM7Ci0gIC8vIENOQU1FIHNob3VsZCBoYXZlIGJlZW4gZmlsbGVkIGJ5IE9y
dGNGYWN0b3J5IGlmIGVtcHR5LgotICBSVENfRENIRUNLKCFwYXJhbWV0ZXJzXy5ydGNwLmNuYW1l
LmVtcHR5KCkpOwotICBSVENfRENIRUNLKHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcik7Ci0KLSAg
aWYgKGlzX3NydHBfdHJhbnNwb3J0KSB7Ci0gICAgc3J0cF90cmFuc3BvcnRfID0gYWJzbDo6bWFr
ZV91bmlxdWU8U3J0cFRyYW5zcG9ydD4ocnRjcCA9PSBudWxscHRyKTsKLSAgICB0cmFuc3BvcnRf
ID0gc3J0cF90cmFuc3BvcnRfLmdldCgpOwotICB9IGVsc2UgewotICAgIHVuZW5jcnlwdGVkX3J0
cF90cmFuc3BvcnRfID0KLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UnRwVHJhbnNwb3J0Pihy
dGNwID09IG51bGxwdHIpOwotICAgIHRyYW5zcG9ydF8gPSB1bmVuY3J5cHRlZF9ydHBfdHJhbnNw
b3J0Xy5nZXQoKTsKLSAgfQotICBSVENfRENIRUNLKHRyYW5zcG9ydF8pOwotCi0gIG5ldHdvcmtf
dGhyZWFkXy0+SW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIFs9XSB7Ci0gICAgU2V0UnRwUGFj
a2V0VHJhbnNwb3J0KHJ0cC0+R2V0SW50ZXJuYWwoKSk7Ci0gICAgaWYgKHJ0Y3ApIHsKLSAgICAg
IFNldFJ0Y3BQYWNrZXRUcmFuc3BvcnQocnRjcC0+R2V0SW50ZXJuYWwoKSk7Ci0gICAgfQotICB9
KTsKLQotICB0cmFuc3BvcnRfLT5TaWduYWxSZWFkeVRvU2VuZC5jb25uZWN0KHRoaXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlJ0cFRyYW5zcG9ydEFkYXB0ZXI6
Ok9uUmVhZHlUb1NlbmQpOwotICB0cmFuc3BvcnRfLT5TaWduYWxSdGNwUGFja2V0UmVjZWl2ZWQu
Y29ubmVjdCgKLSAgICAgIHRoaXMsICZSdHBUcmFuc3BvcnRBZGFwdGVyOjpPblJ0Y3BQYWNrZXRS
ZWNlaXZlZCk7Ci0gIHRyYW5zcG9ydF8tPlNpZ25hbFdyaXRhYmxlU3RhdGUuY29ubmVjdCgKLSAg
ICAgIHRoaXMsICZSdHBUcmFuc3BvcnRBZGFwdGVyOjpPbldyaXRhYmxlU3RhdGUpOwotfQotCi1S
dHBUcmFuc3BvcnRBZGFwdGVyOjp+UnRwVHJhbnNwb3J0QWRhcHRlcigpIHsKLSAgU2lnbmFsRGVz
dHJveWVkKHRoaXMpOwotfQotCi1SVENFcnJvciBSdHBUcmFuc3BvcnRBZGFwdGVyOjpTZXRQYXJh
bWV0ZXJzKAotICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIHsK
LSAgaWYgKCFwYXJhbWV0ZXJzLnJ0Y3AubXV4ICYmIHBhcmFtZXRlcnNfLnJ0Y3AubXV4KSB7Ci0g
ICAgTE9HX0FORF9SRVRVUk5fRVJST1Iod2VicnRjOjpSVENFcnJvclR5cGU6OklOVkFMSURfU1RB
VEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGRpc2FibGUgUlRDUCBtdXhpbmcg
YWZ0ZXIgZW5hYmxpbmcuIik7Ci0gIH0KLSAgaWYgKCFwYXJhbWV0ZXJzLnJ0Y3AuY25hbWUuZW1w
dHkoKSAmJgotICAgICAgcGFyYW1ldGVycy5ydGNwLmNuYW1lICE9IHBhcmFtZXRlcnNfLnJ0Y3Au
Y25hbWUpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUih3ZWJydGM6OlJUQ0Vycm9yVHlwZTo6
VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDaGFuZ2lu
ZyB0aGUgUlRDUCBDTkFNRSBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQuIik7Ci0gIH0KLSAgLy8g
SWYgdGhlIENOQU1FIGlzIGVtcHR5LCB1c2UgdGhlIGV4aXN0aW5nIG9uZS4KLSAgUnRwVHJhbnNw
b3J0UGFyYW1ldGVycyBjb3B5ID0gcGFyYW1ldGVyczsKLSAgaWYgKGNvcHkucnRjcC5jbmFtZS5l
bXB0eSgpKSB7Ci0gICAgY29weS5ydGNwLmNuYW1lID0gcGFyYW1ldGVyc18ucnRjcC5jbmFtZTsK
LSAgfQotICBSVENFcnJvciBlcnIgPQotICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+
U2V0UnRwVHJhbnNwb3J0UGFyYW1ldGVycyhjb3B5LCB0aGlzKTsKLSAgaWYgKCFlcnIub2soKSkg
ewotICAgIHJldHVybiBlcnI7Ci0gIH0KLSAgcGFyYW1ldGVyc18gPSBjb3B5OwotICBpZiAocGFy
YW1ldGVyc18ucnRjcC5tdXgpIHsKLSAgICBydGNwX3BhY2tldF90cmFuc3BvcnRfID0gbnVsbHB0
cjsKLSAgfQotICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5z
cG9ydEFkYXB0ZXI6OlNldFNydHBTZW5kS2V5KAotICAgIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1Bh
cmFtcyYgcGFyYW1zKSB7Ci0gIGlmICghbmV0d29ya190aHJlYWRfLT5Jc0N1cnJlbnQoKSkgewot
ICAgIHJldHVybiBuZXR3b3JrX3RocmVhZF8tPkludm9rZTxSVENFcnJvcj4oCi0gICAgICAgIFJU
Q19GUk9NX0hFUkUsIFsmXSB7IHJldHVybiBTZXRTcnRwU2VuZEtleShwYXJhbXMpOyB9KTsKLSAg
fQotICByZXR1cm4gdHJhbnNwb3J0Xy0+U2V0U3J0cFNlbmRLZXkocGFyYW1zKTsKLX0KLQotUlRD
RXJyb3IgUnRwVHJhbnNwb3J0QWRhcHRlcjo6U2V0U3J0cFJlY2VpdmVLZXkoCi0gICAgY29uc3Qg
Y3JpY2tldDo6Q3J5cHRvUGFyYW1zJiBwYXJhbXMpIHsKLSAgaWYgKCFuZXR3b3JrX3RocmVhZF8t
PklzQ3VycmVudCgpKSB7Ci0gICAgcmV0dXJuIG5ldHdvcmtfdGhyZWFkXy0+SW52b2tlPFJUQ0Vy
cm9yPigKLSAgICAgICAgUlRDX0ZST01fSEVSRSwgWyZdIHsgcmV0dXJuIFNldFNydHBSZWNlaXZl
S2V5KHBhcmFtcyk7IH0pOwotICB9Ci0gIHJldHVybiB0cmFuc3BvcnRfLT5TZXRTcnRwUmVjZWl2
ZUtleShwYXJhbXMpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9y
dGFkYXB0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29y
dGMvcnRwdHJhbnNwb3J0YWRhcHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
MTkxNGY2YjhkMWI0NzVmNzViMDQ4NTU5NWExOGE3ZjE2NDFhNTQ0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
LSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgT1JUQ19SVFBU
UkFOU1BPUlRBREFQVEVSX0hfCi0jZGVmaW5lIE9SVENfUlRQVFJBTlNQT1JUQURBUFRFUl9IXwot
Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImFwaS9y
dGNlcnJvci5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2Uvc3RyZWFtcGFyYW1zLmgiCi0jaW5jbHVk
ZSAib3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5oIgotI2luY2x1ZGUgInBjL2No
YW5uZWwuaCIKLSNpbmNsdWRlICJwYy9ydHB0cmFuc3BvcnRpbnRlcm5hbGFkYXB0ZXIuaCIKLSNp
bmNsdWRlICJwYy9zcnRwdHJhbnNwb3J0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0
b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xv
dC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLS8vIFRoaXMgY2xhc3MgaXMgYSB3cmFwcGVyIG92
ZXIgYW4gUnRwVHJhbnNwb3J0IG9yIGFuIFNydHBUcmFuc3BvcnQuIFRoZSBiYXNlCi0vLyBjbGFz
cyBSdHBUcmFuc3BvcnRJbnRlcm5hbEFkYXB0ZXIga2VlcHMgYSByYXcgcG9pbnRlciwgfHRyYW5z
cG9ydF98LCBvZiB0aGUKLS8vIHRyYW5zcG9ydCBvYmplY3QgYW5kIGltcGxlbWVudHMgYm90aCB0
aGUgcHVibGljIFNydHBUcmFuc3BvcnRJbnRlcmZhY2UgYW5kCi0vLyBSdHBUcmFuc3BvcnQgaW50
ZXJuYWwgaW50ZXJmYWNlIGJ5IGNhbGxpbmcgdGhlIHx0cmFuc3BvcnRffCB1bmRlcm5lYXRoLgot
Ly8KLS8vIFRoaXMgYWRhcHRlciBjYW4gYmUgdXNlZCBhcyBhbiB1bmVuY3J5cHRlZCBSVFAgdHJh
bnNwb3J0IG9yIGFuIFNydHBUcmFuc3BvcnQKLS8vIHdpdGggUnRwU2VuZGVyQWRhcHRlciwgUnRw
UmVjZWl2ZXJBZGFwdGVyLCBhbmQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIuCi0vLwot
Ly8gVE9ETyhkZWFkYmVlZik6IFdoZW4gQmFzZUNoYW5uZWwgaXMgc3BsaXQgYXBhcnQgaW50byBz
ZXBhcmF0ZQotLy8gIlJ0cFRyYW5zcG9ydCIvIlJ0cFRyYW5zY2VpdmVyIi8iUnRwU2VuZGVyIi8i
UnRwUmVjZWl2ZXIiIG9iamVjdHMsIHRoaXMKLS8vIGFkYXB0ZXIgb2JqZWN0IGNhbiBiZSByZW1v
dmVkLgotY2xhc3MgUnRwVHJhbnNwb3J0QWRhcHRlciA6IHB1YmxpYyBSdHBUcmFuc3BvcnRJbnRl
cm5hbEFkYXB0ZXIgewotIHB1YmxpYzoKLSAgLy8gfHJ0cHwgY2FuJ3QgYmUgbnVsbC4gfHJ0Y3B8
IGNhbiBpZiBSVENQIG11eGluZyBpcyB1c2VkIGltbWVkaWF0ZWx5IChtZWFuaW5nCi0gIC8vIHxy
dGNwX3BhcmFtZXRlcnMubXV4fCBpcyBhbHNvIHRydWUpLgotICBzdGF0aWMgUlRDRXJyb3JPcjxz
dGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4gQ3JlYXRlUHJveGllZCgKLSAg
ICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHJ0Y3BfcGFyYW1ldGVycywKLSAgICAg
IFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAotICAgICAgUGFja2V0VHJhbnNwb3J0SW50
ZXJmYWNlKiBydGNwLAotICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90
cmFuc3BvcnRfY29udHJvbGxlcik7Ci0KLSAgc3RhdGljIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVf
cHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+PiBDcmVhdGVTcnRwUHJveGllZCgKLSAgICAgIGNv
bnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHJ0Y3BfcGFyYW1ldGVycywKLSAgICAgIFBhY2tl
dFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAotICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNl
KiBydGNwLAotICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90cmFuc3Bv
cnRfY29udHJvbGxlcik7Ci0KLSAgflJ0cFRyYW5zcG9ydEFkYXB0ZXIoKSBvdmVycmlkZTsKLQot
ICAvLyBSdHBUcmFuc3BvcnRJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uCi0gIFBhY2tldFRyYW5z
cG9ydEludGVyZmFjZSogR2V0UnRwUGFja2V0VHJhbnNwb3J0KCkgY29uc3Qgb3ZlcnJpZGUgewot
ICAgIHJldHVybiBydHBfcGFja2V0X3RyYW5zcG9ydF87Ci0gIH0KLSAgUGFja2V0VHJhbnNwb3J0
SW50ZXJmYWNlKiBHZXRSdGNwUGFja2V0VHJhbnNwb3J0KCkgY29uc3Qgb3ZlcnJpZGUgewotICAg
IHJldHVybiBydGNwX3BhY2tldF90cmFuc3BvcnRfOwotICB9Ci0gIFJUQ0Vycm9yIFNldFBhcmFt
ZXRlcnMoY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgb3ZlcnJpZGU7
Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgR2V0UGFyYW1ldGVycygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHBhcmFtZXRlcnNfOyB9Ci0KLSAgLy8gU1JUUCBzcGVjaWZpYyBpbXBsZW1lbnRh
dGlvbi4KLSAgUlRDRXJyb3IgU2V0U3J0cFNlbmRLZXkoY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFy
YW1zJiBwYXJhbXMpIG92ZXJyaWRlOwotICBSVENFcnJvciBTZXRTcnRwUmVjZWl2ZUtleShjb25z
dCBjcmlja2V0OjpDcnlwdG9QYXJhbXMmIHBhcmFtcykgb3ZlcnJpZGU7Ci0KLSAgLy8gTWV0aG9k
cyB1c2VkIGludGVybmFsbHkgYnkgT3J0Y0ZhY3RvcnkuCi0gIFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJBZGFwdGVyKiBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIoKSB7Ci0gICAgcmV0dXJuIHJ0cF90
cmFuc3BvcnRfY29udHJvbGxlcl87Ci0gIH0KLSAgdm9pZCBUYWtlT3duZXJzaGlwT2ZSdHBUcmFu
c3BvcnRDb250cm9sbGVyKAotICAgICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRy
b2xsZXJJbnRlcmZhY2U+IGNvbnRyb2xsZXIpOwotCi0gIC8vIFVzZWQgYnkgUnRwVHJhbnNwb3J0
Q29udHJvbGxlckFkYXB0ZXIgdG8gdGVsbCB3aGVuIGl0IHNob3VsZCBzdG9wCi0gIC8vIHJldHVy
bmluZyB0aGlzIHRyYW5zcG9ydCBmcm9tIEdldFRyYW5zcG9ydHMoKS4KLSAgc2lnc2xvdDo6c2ln
bmFsMTxSdHBUcmFuc3BvcnRBZGFwdGVyKj4gU2lnbmFsRGVzdHJveWVkOwotCi0gIGJvb2wgSXNT
cnRwQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJhbnNwb3J0Xy0+SXNTcnRwQWN0
aXZlKCk7IH0KLQotIHByb3RlY3RlZDoKLSAgUnRwVHJhbnNwb3J0QWRhcHRlciogR2V0SW50ZXJu
YWwoKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9Ci0KLSBwcml2YXRlOgotICBSdHBUcmFuc3Bv
cnRBZGFwdGVyKGNvbnN0IFJ0Y3BQYXJhbWV0ZXJzJiBydGNwX3BhcmFtcywKLSAgICAgICAgICAg
ICAgICAgICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwKLSAgICAgICAgICAgICAg
ICAgICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0Y3AsCi0gICAgICAgICAgICAgICAg
ICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90cmFuc3BvcnRfY29udHJv
bGxlciwKLSAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3NydHBfdHJhbnNwb3J0KTsKLQot
ICB2b2lkIE9uUmVhZHlUb1NlbmQoYm9vbCByZWFkeSkgeyBTaWduYWxSZWFkeVRvU2VuZChyZWFk
eSk7IH0KLQotICB2b2lkIE9uUnRjcFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZm
ZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tl
dFRpbWUmIHRpbWUpIHsKLSAgICBTaWduYWxSdGNwUGFja2V0UmVjZWl2ZWQocGFja2V0LCB0aW1l
KTsKLSAgfQotCi0gIHZvaWQgT25Xcml0YWJsZVN0YXRlKGJvb2wgd3JpdGFibGUpIHsgU2lnbmFs
V3JpdGFibGVTdGF0ZSh3cml0YWJsZSk7IH0KLQotICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2Uq
IHJ0cF9wYWNrZXRfdHJhbnNwb3J0XyA9IG51bGxwdHI7Ci0gIFBhY2tldFRyYW5zcG9ydEludGVy
ZmFjZSogcnRjcF9wYWNrZXRfdHJhbnNwb3J0XyA9IG51bGxwdHI7Ci0gIFJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJBZGFwdGVyKiBjb25zdCBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfID0gbnVsbHB0
cjsKLSAgLy8gTm9uLW51bGwgaWYgdGhpcyBjbGFzcyBvd25zIHRoZSB0cmFuc3BvcnQgY29udHJv
bGxlci4KLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+
Ci0gICAgICBvd25lZF9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfOwotICBSdHBUcmFuc3BvcnRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnNfOwotCi0gIC8vIE9ubHkgb25lIG9mIHRoZW0gaXMgbm9uLW51
bGw7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnQ+IHVuZW5jcnlwdGVkX3J0cF90cmFu
c3BvcnRfOwotICBzdGQ6OnVuaXF1ZV9wdHI8U3J0cFRyYW5zcG9ydD4gc3J0cF90cmFuc3BvcnRf
OwotCi0gIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZF8gPSBudWxscHRyOwotCi0gIFJUQ19E
SVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoUnRwVHJhbnNwb3J0QWRhcHRlcik7Ci19Owot
Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gT1JUQ19SVFBUUkFOU1BPUlRB
REFQVEVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGNvbnRy
b2xsZXJfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NTQ4NDE3
ZWU3Y2Y2N2Y0Mjk3ZGY3N2E4N2M2YjBmNzdmMzk3YzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyAvZGV2
L251bGwKQEAgLTEsMTk5ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxt
ZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2Vu
Y29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmgi
Ci0jaW5jbHVkZSAib3J0Yy9vcnRjZmFjdG9yeS5oIgotI2luY2x1ZGUgIm9ydGMvdGVzdHJ0cHBh
cmFtZXRlcnMuaCIKLSNpbmNsdWRlICJwMnAvYmFzZS9mYWtlcGFja2V0dHJhbnNwb3J0LmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFRo
aXMgdGVzdCB1c2VzIGZha2UgcGFja2V0IHRyYW5zcG9ydHMgYW5kIGEgZmFrZSBtZWRpYSBlbmdp
bmUsIGluIG9yZGVyIHRvCi0vLyB0ZXN0IHRoZSBSdHBUcmFuc3BvcnRDb250cm9sbGVyIGF0IG9u
bHkgYW4gQVBJIGxldmVsLiBBbnkgZW5kLXRvLWVuZCB0ZXN0Ci0vLyBzaG91bGQgZ28gaW4gb3J0
Y2ZhY3RvcnlfaW50ZWdyYXRpb250ZXN0LmNjIGluc3RlYWQuCi0vLwotLy8gQ3VycmVudGx5LCB0
aGlzIHRlc3QgbWFpbmx5IGZvY3VzZXMgb24gdGhlIGxpbWl0YXRpb25zIG9mIHRoZSAiYWRhcHRl
ciIKLS8vIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXIgaW1wbGVtZW50YXRpb24uIE9ubHkgb25lIG9m
IGVhY2ggdHlwZSBvZgotLy8gc2VuZGVyL3JlY2VpdmVyIGNhbiBiZSBjcmVhdGVkLCBhbmQgdGhl
IHNlbmRlci9yZWNlaXZlciBvZiB0aGUgc2FtZSBtZWRpYQotLy8gdHlwZSBtdXN0IHVzZSB0aGUg
c2FtZSB0cmFuc3BvcnQuCi1jbGFzcyBSdHBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6Ci0gIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0
KCkgewotICAgIC8vIE5vdGU6IFRoaXMgZG9lc24ndCBuZWVkIHRvIHVzZSBmYWtlIG5ldHdvcmsg
Y2xhc3Nlcywgc2luY2UgaXQgdXNlcwotICAgIC8vIEZha2VQYWNrZXRUcmFuc3BvcnRzLgotICAg
IGF1dG8gcmVzdWx0ID0gT3J0Y0ZhY3Rvcnk6OkNyZWF0ZSgKLSAgICAgICAgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPigKLSAgICAgICAgICAgIG5ldyBjcmlja2V0
OjpGYWtlTWVkaWFFbmdpbmUoKSksCi0gICAgICAgIENyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJG
YWN0b3J5KCksIENyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5KCkpOwotICAgIG9ydGNf
ZmFjdG9yeV8gPSByZXN1bHQuTW92ZVZhbHVlKCk7Ci0gICAgcnRwX3RyYW5zcG9ydF9jb250cm9s
bGVyXyA9Ci0gICAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXIoKS5Nb3ZlVmFsdWUoKTsKLSAgfQotCi0gcHJvdGVjdGVkOgotICBzdGQ6OnVuaXF1ZV9wdHI8
T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+IG9ydGNfZmFjdG9yeV87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxS
dHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlPiBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJf
OwotfTsKLQotVEVTVF9GKFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LCBHZXRUcmFuc3BvcnRz
KSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBwYWNrZXRfdHJhbnNwb3J0MSgib25lIik7
Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBwYWNrZXRfdHJhbnNwb3J0MigidHdvIik7Ci0K
LSAgYXV0byBydHBfdHJhbnNwb3J0X3Jlc3VsdDEgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBU
cmFuc3BvcnQoCi0gICAgICBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSwgJnBhY2tldF90cmFuc3Bv
cnQxLCBudWxscHRyLAotICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy5nZXQoKSk7Ci0g
IEFTU0VSVF9UUlVFKHJ0cF90cmFuc3BvcnRfcmVzdWx0MS5vaygpKTsKLQotICBhdXRvIHJ0cF90
cmFuc3BvcnRfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAg
ICAgIE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCAmcGFja2V0X3RyYW5zcG9ydDIsIG51bGxwdHIs
Ci0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLmdldCgpKTsKLSAgQVNTRVJUX1RSVUUo
cnRwX3RyYW5zcG9ydF9yZXN1bHQyLm9rKCkpOwotCi0gIGF1dG8gcmV0dXJuZWRfdHJhbnNwb3J0
cyA9IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldFRyYW5zcG9ydHMoKTsKLSAgQVNTRVJU
X0VRKDJ1LCByZXR1cm5lZF90cmFuc3BvcnRzLnNpemUoKSk7Ci0gIEVYUEVDVF9FUShydHBfdHJh
bnNwb3J0X3Jlc3VsdDEudmFsdWUoKS5nZXQoKSwgcmV0dXJuZWRfdHJhbnNwb3J0c1swXSk7Ci0g
IEVYUEVDVF9FUShydHBfdHJhbnNwb3J0X3Jlc3VsdDIudmFsdWUoKS5nZXQoKSwgcmV0dXJuZWRf
dHJhbnNwb3J0c1sxXSk7Ci0KLSAgLy8gSWYgYSB0cmFuc3BvcnQgaXMgZGVsZXRlZCwgaXQgc2hv
dWxkbid0IGJlIHJldHVybmVkIGFueSBtb3JlLgotICBydHBfdHJhbnNwb3J0X3Jlc3VsdDEuTW92
ZVZhbHVlKCkucmVzZXQoKTsKLSAgcmV0dXJuZWRfdHJhbnNwb3J0cyA9IHJ0cF90cmFuc3BvcnRf
Y29udHJvbGxlcl8tPkdldFRyYW5zcG9ydHMoKTsKLSAgQVNTRVJUX0VRKDF1LCByZXR1cm5lZF90
cmFuc3BvcnRzLnNpemUoKSk7Ci0gIEVYUEVDVF9FUShydHBfdHJhbnNwb3J0X3Jlc3VsdDIudmFs
dWUoKS5nZXQoKSwgcmV0dXJuZWRfdHJhbnNwb3J0c1swXSk7Ci19Ci0KLS8vIENyZWF0ZSBSdHBT
ZW5kZXJzIGFuZCBSdHBSZWNlaXZlcnMgb24gdG9wIG9mIFJ0cFRyYW5zcG9ydHMgY29udHJvbGxl
ZCBieSB0aGUKLS8vIHNhbWUgUnRwVHJhbnNwb3J0Q29udHJvbGxlci4gQ3VycmVudGx5IG9ubHkg
b25lIGVhY2ggb2YgYXVkaW8vdmlkZW8gaXMKLS8vIHN1cHBvcnRlZC4KLVRFU1RfRihSdHBUcmFu
c3BvcnRDb250cm9sbGVyVGVzdCwgQXR0YWNoTXVsdGlwbGVTZW5kZXJzQW5kUmVjZWl2ZXJzKSB7
Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBhdWRpb19wYWNrZXRfdHJhbnNwb3J0KCJhdWRp
byIpOwotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgdmlkZW9fcGFja2V0X3RyYW5zcG9ydCgi
dmlkZW8iKTsKLQotICBhdXRvIGF1ZGlvX3J0cF90cmFuc3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0
b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCks
ICZhdWRpb19wYWNrZXRfdHJhbnNwb3J0LCBudWxscHRyLAotICAgICAgcnRwX3RyYW5zcG9ydF9j
b250cm9sbGVyXy5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKGF1ZGlvX3J0cF90cmFuc3BvcnRfcmVz
dWx0Lm9rKCkpOwotICBhdXRvIGF1ZGlvX3J0cF90cmFuc3BvcnQgPSBhdWRpb19ydHBfdHJhbnNw
b3J0X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICBhdXRvIHZpZGVvX3J0cF90cmFuc3BvcnRfcmVz
dWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgTWFrZVJ0Y3BN
dXhQYXJhbWV0ZXJzKCksICZ2aWRlb19wYWNrZXRfdHJhbnNwb3J0LCBudWxscHRyLAotICAgICAg
cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKHZpZGVvX3J0
cF90cmFuc3BvcnRfcmVzdWx0Lm9rKCkpOwotICBhdXRvIHZpZGVvX3J0cF90cmFuc3BvcnQgPSB2
aWRlb19ydHBfdHJhbnNwb3J0X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICBhdXRvIGF1ZGlvX3Nl
bmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlj
a2V0OjpNRURJQV9UWVBFX0FVRElPLCBhdWRpb19ydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQ
RUNUX1RSVUUoYXVkaW9fc2VuZGVyX3Jlc3VsdC5vaygpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZl
cl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNr
ZXQ6Ok1FRElBX1RZUEVfQVVESU8sIGF1ZGlvX3J0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBF
Q1RfVFJVRShhdWRpb19yZWNlaXZlcl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVy
X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6
Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3J0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1Rf
VFJVRSh2aWRlb19zZW5kZXJfcmVzdWx0Lm9rKCkpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyX3Jl
c3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6
TUVESUFfVFlQRV9WSURFTywgdmlkZW9fcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9U
UlVFKHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLQotICAvLyBOb3cgdGhhdCB3ZSBoYXZl
IG9uZSBlYWNoIG9mIGF1ZGlvL3ZpZGVvIHNlbmRlcnMvcmVjZWl2ZXJzLCB0cnlpbmcgdG8KLSAg
Ly8gY3JlYXRlIG1vcmUgb24gdG9wIG9mIHRoZSBzYW1lIGNvbnRyb2xsZXIgaXMgZXhwZWN0ZWQg
dG8gZmFpbC4KLSAgLy8gVE9ETyhkZWFkYmVlZik6IFVwZGF0ZSB0aGlzIHRlc3Qgb25jZSBtdWx0
aXBsZSBzZW5kZXJzL3JlY2VpdmVycyBvbiB0b3Agb2YKLSAgLy8gdGhlIHNhbWUgY29udHJvbGxl
ciBpcyBzdXBwb3J0ZWQuCi0gIGF1dG8gZmFpbGVkX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rv
cnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBh
dWRpb19ydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5T
VVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgZmFpbGVkX3NlbmRlcl9yZXN1bHQuZXJy
b3IoKS50eXBlKCkpOwotICBhdXRvIGZhaWxlZF9yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rv
cnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8s
IGF1ZGlvX3J0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpV
TlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICBmYWlsZWRfcmVjZWl2ZXJfcmVzdWx0
LmVycm9yKCkudHlwZSgpKTsKLSAgZmFpbGVkX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRl
b19ydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5TVVBQ
T1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgZmFpbGVkX3NlbmRlcl9yZXN1bHQuZXJyb3Io
KS50eXBlKCkpOwotICBmYWlsZWRfcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3Jl
YXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb19y
dHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JU
RURfT1BFUkFUSU9OLAotICAgICAgICAgICAgZmFpbGVkX3JlY2VpdmVyX3Jlc3VsdC5lcnJvcigp
LnR5cGUoKSk7Ci0KLSAgLy8gSWYgd2UgZGVzdHJveSB0aGUgZXhpc3Rpbmcgc2VuZGVyL3JlY2Vp
dmVyIHVzaW5nIGEgdHJhbnNwb3J0IGNvbnRyb2xsZXIsCi0gIC8vIHdlIHNob3VsZCBiZSBhYmxl
IHRvIG1ha2UgYSBuZXcgb25lLCBkZXNwaXRlIHRoZSBhYm92ZSBsaW1pdGF0aW9uLgotICBhdWRp
b19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpLnJlc2V0KCk7Ci0gIGF1ZGlvX3NlbmRlcl9yZXN1
bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJ
QV9UWVBFX0FVRElPLCBhdWRpb19ydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQRUNUX1RSVUUo
YXVkaW9fc2VuZGVyX3Jlc3VsdC5vaygpKTsKLSAgYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVW
YWx1ZSgpLnJlc2V0KCk7Ci0gIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8t
PkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgYXVk
aW9fcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVyX3Jl
c3VsdC5vaygpKTsKLSAgdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKS5yZXNldCgpOwot
ICB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAot
ICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgdmlkZW9fcnRwX3RyYW5zcG9ydC5nZXQo
KSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlcl9yZXN1bHQub2soKSk7Ci0gIHZpZGVvX3Jl
Y2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKS5yZXNldCgpOwotICB2aWRlb19yZWNlaXZlcl9yZXN1
bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfVklERU8sIHZpZGVvX3J0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfVFJV
RSh2aWRlb19yZWNlaXZlcl9yZXN1bHQub2soKSk7Ci19Ci0KLS8vIEdpdmVuIHRoZSBjdXJyZW50
IGxpbWl0YXRpb25zIG9mIHRoZSBCYXNlQ2hhbm5lbC1iYXNlZCBpbXBsZW1lbnRhdGlvbiwgaXQn
cwotLy8gbm90IHBvc3NpYmxlIGZvciBhbiBhdWRpbyBzZW5kZXIgYW5kIHJlY2VpdmVyIHRvIHVz
ZSBkaWZmZXJlbnQgUnRwVHJhbnNwb3J0cy4KLS8vIFRPRE8oZGVhZGJlZWYpOiBPbmNlIHRoaXMg
aXMgc3VwcG9ydGVkLCB1cGRhdGUvcmVwbGFjZSB0aGlzIHRlc3QuCi1URVNUX0YoUnRwVHJhbnNw
b3J0Q29udHJvbGxlclRlc3QsCi0gICAgICAgU2VuZGVyQW5kUmVjZWl2ZXJVc2luZ0RpZmZlcmVu
dFRyYW5zcG9ydHNVbnN1cHBvcnRlZCkgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcGFj
a2V0X3RyYW5zcG9ydDEoIm9uZSIpOwotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcGFja2V0
X3RyYW5zcG9ydDIoInR3byIpOwotCi0gIGF1dG8gcnRwX3RyYW5zcG9ydF9yZXN1bHQxID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgTWFrZVJ0Y3BNdXhQYXJhbWV0
ZXJzKCksICZwYWNrZXRfdHJhbnNwb3J0MSwgbnVsbHB0ciwKLSAgICAgIHJ0cF90cmFuc3BvcnRf
Y29udHJvbGxlcl8uZ2V0KCkpOwotICBBU1NFUlRfVFJVRShydHBfdHJhbnNwb3J0X3Jlc3VsdDEu
b2soKSk7Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydDEgPSBydHBfdHJhbnNwb3J0X3Jlc3VsdDEuTW92
ZVZhbHVlKCk7Ci0KLSAgYXV0byBydHBfdHJhbnNwb3J0X3Jlc3VsdDIgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSwgJnBh
Y2tldF90cmFuc3BvcnQyLCBudWxscHRyLAotICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVy
Xy5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKHJ0cF90cmFuc3BvcnRfcmVzdWx0Mi5vaygpKTsKLSAg
YXV0byBydHBfdHJhbnNwb3J0MiA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0Mi5Nb3ZlVmFsdWUoKTsK
LQotICAvLyBDcmVhdGUgYW4gYXVkaW8gc2VuZGVyIG9uIHRyYW5zcG9ydCAxLCB0aGVuIHRyeSB0
byBjcmVhdGUgYSByZWNlaXZlciBvbiAyLgotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBv
cnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBF
X0FVRElPLCBydHBfdHJhbnNwb3J0MS5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRl
cl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0
b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElP
LCBydHBfdHJhbnNwb3J0Mi5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQ
UE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5lcnJv
cigpLnR5cGUoKSk7Ci0gIC8vIERlbGV0ZSB0aGUgc2VuZGVyOyBub3cgd2Ugc2hvdWxkIGJlIG9r
IHRvIGNyZWF0ZSB0aGUgcmVjZWl2ZXIgb24gMi4KLSAgYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3Zl
VmFsdWUoKS5yZXNldCgpOwotICBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0
cF90cmFuc3BvcnQyLmdldCgpKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXJfcmVzdWx0
Lm9rKCkpOwotCi0gIC8vIERvIHRoZSBzYW1lIHRoaW5nIGZvciB2aWRlbywgcmV2ZXJzaW5nIDEg
YW5kIDIgKGZvciB2YXJpZXR5KS4KLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19m
YWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURF
TywgcnRwX3RyYW5zcG9ydDIuZ2V0KCkpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXJfcmVz
dWx0Lm9rKCkpOwotCi0gIGF1dG8gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5
Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBy
dHBfdHJhbnNwb3J0MS5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQUE9S
VEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgIHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5lcnJvcigp
LnR5cGUoKSk7Ci0gIHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCkucmVzZXQoKTsKLSAg
dmlkZW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIo
Ci0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0MS5nZXQoKSk7
Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0
Y29udHJvbGxlcmFkYXB0ZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiYjAz
ZWEzMjFmNTQ2NzM3ZWYzMWZkMzFlYWI4NjQ4ZDVkMDA4ODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5jYworKysgL2Rl
di9udWxsCkBAIC0xLDk3MSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAi
b3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5oIgotCi0jaW5jbHVkZSA8YWxnb3Jp
dGhtPiAgLy8gRm9yICJyZW1vdmUiLCAiZmluZCIuCi0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUg
PHVub3JkZXJlZF9tYXA+Ci0jaW5jbHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6Om1vdmUuCi0K
LSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJhcGkvcHJveHkuaCIK
LSNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCi0jaW5jbHVkZSAib3J0Yy9v
cnRjcnRwcmVjZWl2ZXJhZGFwdGVyLmgiCi0jaW5jbHVkZSAib3J0Yy9vcnRjcnRwc2VuZGVyYWRh
cHRlci5oIgotI2luY2x1ZGUgIm9ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5oIgotI2luY2x1ZGUg
InBjL3J0cG1lZGlhdXRpbHMuaCIKLSNpbmNsdWRlICJwYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lv
bi5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0
cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIE5vdGU6
IEl0J3MgYXNzdW1lZCB0aGF0IGVhY2ggaW5kaXZpZHVhbCBsaXN0IGRvZXNuJ3QgaGF2ZSBjb25m
bGljdHMsIHNpbmNlCi0vLyB0aGV5IHNob3VsZCBoYXZlIGJlZW4gZGV0ZWN0ZWQgYWxyZWFkeSBi
eSBydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYy4gVGhpcwotLy8gb25seSBuZWVkcyB0byBkZXRl
Y3QgY29uZmxpY3RzICpiZXR3ZWVuKiBBIGFuZCBCLgotdGVtcGxhdGUgPHR5cGVuYW1lIEMxLCB0
eXBlbmFtZSBDMj4KLXN0YXRpYyBSVENFcnJvciBDaGVja0ZvcklkQ29uZmxpY3RzKAotICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPEMxPiYgY29kZWNzX2EsCi0gICAgY29uc3QgY3JpY2tldDo6UnRwSGVh
ZGVyRXh0ZW5zaW9ucyYgZXh0ZW5zaW9uc19hLAotICAgIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBh
cmFtc1ZlYyYgc3RyZWFtc19hLAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEMyPiYgY29kZWNzX2Is
Ci0gICAgY29uc3QgY3JpY2tldDo6UnRwSGVhZGVyRXh0ZW5zaW9ucyYgZXh0ZW5zaW9uc19iLAot
ICAgIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtc1ZlYyYgc3RyZWFtc19iKSB7Ci0gIHJ0Yzo6
U3RyaW5nQnVpbGRlciBvc3M7Ci0gIC8vIFNpbmNlIGl0J3MgYXNzdW1lZCB0aGF0IEMxIGFuZCBD
MiBhcmUgZGlmZmVyZW50IHR5cGVzLCBjb2RlY3NfYSBhbmQKLSAgLy8gY29kZWNzX2Igc2hvdWxk
IG5ldmVyIGNvbnRhaW4gdGhlIHNhbWUgcGF5bG9hZCB0eXBlLCBhbmQgdGh1cyB3ZSBjYW4ganVz
dAotICAvLyB1c2UgYSBzZXQuCi0gIHN0ZDo6c2V0PGludD4gc2Vlbl9wYXlsb2FkX3R5cGVzOwot
ICBmb3IgKGNvbnN0IEMxJiBjb2RlYyA6IGNvZGVjc19hKSB7Ci0gICAgc2Vlbl9wYXlsb2FkX3R5
cGVzLmluc2VydChjb2RlYy5pZCk7Ci0gIH0KLSAgZm9yIChjb25zdCBDMiYgY29kZWMgOiBjb2Rl
Y3NfYikgewotICAgIGlmICghc2Vlbl9wYXlsb2FkX3R5cGVzLmluc2VydChjb2RlYy5pZCkuc2Vj
b25kKSB7Ci0gICAgICBvc3MgPDwgIlNhbWUgcGF5bG9hZCB0eXBlIHVzZWQgZm9yIGF1ZGlvIGFu
ZCB2aWRlbyBjb2RlY3M6ICIgPDwgY29kZWMuaWQ7Ci0gICAgICBMT0dfQU5EX1JFVFVSTl9FUlJP
UihSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCBvc3Muc3RyKCkpOwotICAgIH0KLSAg
fQotICAvLyBBdWRpbyBhbmQgdmlkZW8gKm1heSogdXNlIHRoZSBzYW1lIGhlYWRlciBleHRlbnNp
b25zLCBzbyB1c2UgYSBtYXAuCi0gIHN0ZDo6dW5vcmRlcmVkX21hcDxpbnQsIHN0ZDo6c3RyaW5n
PiBzZWVuX2V4dGVuc2lvbnM7Ci0gIGZvciAoY29uc3Qgd2VicnRjOjpSdHBFeHRlbnNpb24mIGV4
dGVuc2lvbiA6IGV4dGVuc2lvbnNfYSkgewotICAgIHNlZW5fZXh0ZW5zaW9uc1tleHRlbnNpb24u
aWRdID0gZXh0ZW5zaW9uLnVyaTsKLSAgfQotICBmb3IgKGNvbnN0IHdlYnJ0Yzo6UnRwRXh0ZW5z
aW9uJiBleHRlbnNpb24gOiBleHRlbnNpb25zX2IpIHsKLSAgICBpZiAoc2Vlbl9leHRlbnNpb25z
LmZpbmQoZXh0ZW5zaW9uLmlkKSAhPSBzZWVuX2V4dGVuc2lvbnMuZW5kKCkgJiYKLSAgICAgICAg
c2Vlbl9leHRlbnNpb25zLmF0KGV4dGVuc2lvbi5pZCkgIT0gZXh0ZW5zaW9uLnVyaSkgewotICAg
ICAgb3NzIDw8ICJTYW1lIElEIHVzZWQgZm9yIGRpZmZlcmVudCBSVFAgaGVhZGVyIGV4dGVuc2lv
bnM6ICIKLSAgICAgICAgICA8PCBleHRlbnNpb24uaWQ7Ci0gICAgICBMT0dfQU5EX1JFVFVSTl9F
UlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCBvc3Muc3RyKCkpOwotICAgIH0K
LSAgfQotICBzdGQ6OnNldDx1aW50MzJfdD4gc2Vlbl9zc3JjczsKLSAgZm9yIChjb25zdCBjcmlj
a2V0OjpTdHJlYW1QYXJhbXMmIHN0cmVhbSA6IHN0cmVhbXNfYSkgewotICAgIHNlZW5fc3NyY3Mu
aW5zZXJ0KHN0cmVhbS5zc3Jjcy5iZWdpbigpLCBzdHJlYW0uc3NyY3MuZW5kKCkpOwotICB9Ci0g
IGZvciAoY29uc3QgY3JpY2tldDo6U3RyZWFtUGFyYW1zJiBzdHJlYW0gOiBzdHJlYW1zX2IpIHsK
LSAgICBmb3IgKHVpbnQzMl90IHNzcmMgOiBzdHJlYW0uc3NyY3MpIHsKLSAgICAgIGlmICghc2Vl
bl9zc3Jjcy5pbnNlcnQoc3NyYykuc2Vjb25kKSB7Ci0gICAgICAgIG9zcyA8PCAiU2FtZSBTU1JD
IHVzZWQgZm9yIGF1ZGlvIGFuZCB2aWRlbyBzZW5kZXJzOiAiIDw8IHNzcmM7Ci0gICAgICAgIExP
R19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsIG9zcy5z
dHIoKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0K
LQotQkVHSU5fT1dORURfUFJPWFlfTUFQKFJ0cFRyYW5zcG9ydENvbnRyb2xsZXIpCi1QUk9YWV9T
SUdOQUxJTkdfVEhSRUFEX0RFU1RSVUNUT1IoKQotUFJPWFlfQ09OU1RNRVRIT0QwKHN0ZDo6dmVj
dG9yPFJ0cFRyYW5zcG9ydEludGVyZmFjZSo+LCBHZXRUcmFuc3BvcnRzKQotcHJvdGVjdGVkOgot
UnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIEdldEludGVybmFsKCkgb3ZlcnJpZGUgewot
ICByZXR1cm4gaW50ZXJuYWwoKTsKLX0KLUVORF9QUk9YWV9NQVAoKQotCi0vLyBzdGF0aWMKLXN0
ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlPgotUnRwVHJhbnNw
b3J0Q29udHJvbGxlckFkYXB0ZXI6OkNyZWF0ZVByb3hpZWQoCi0gICAgY29uc3QgY3JpY2tldDo6
TWVkaWFDb25maWcmIGNvbmZpZywKLSAgICBjcmlja2V0OjpDaGFubmVsTWFuYWdlciogY2hhbm5l
bF9tYW5hZ2VyLAotICAgIHdlYnJ0Yzo6UnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKLSAgICBydGM6
OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVh
ZCwKLSAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQpIHsKLSAgc3RkOjp1bmlxdWVfcHRy
PFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyPiB3cmFwcGVkKAotICAgICAgbmV3IFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKGNvbmZpZywgY2hhbm5lbF9tYW5hZ2VyLCBldmVudF9s
b2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsaW5nX3Ro
cmVhZCwgd29ya2VyX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXR3b3JrX3RocmVhZCkpOwotICByZXR1cm4gUnRwVHJhbnNwb3J0Q29udHJvbGxlclBy
b3h5V2l0aEludGVybmFsPAotICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI+OjpD
cmVhdGUoc2lnbmFsaW5nX3RocmVhZCwgd29ya2VyX3RocmVhZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh3cmFwcGVkKSk7Ci19Ci0KLVJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjp+UnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0
ZXIoKSB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgaWYgKCF0
cmFuc3BvcnRfcHJveGllc18uZW1wdHkoKSkgewotICAgIFJUQ19MT0coTFNfRVJST1IpCi0gICAg
ICAgIDw8ICJEZXN0cm95aW5nIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyIHdoaWxlIFJ0
cFRyYW5zcG9ydHMgIgotICAgICAgICAgICAiYXJlIHN0aWxsIHVzaW5nIGl0OyB0aGlzIGlzIHVu
c2FmZS4iOwotICB9Ci0gIGlmICh2b2ljZV9jaGFubmVsXykgewotICAgIC8vIFRoaXMgd291bGQg
bWVhbiBhdWRpbyBSVFAgc2VuZGVycy9yZWNlaXZlcnMgdGhhdCBhcmUgdXNpbmcgdXMgaGF2ZW4n
dAotICAgIC8vIGJlZW4gZGVzdHJveWVkLiBUaGlzIGlzbid0IHNhZmUgKHNlZSBlcnJvciBsb2cg
YWJvdmUpLgotICAgIERlc3Ryb3lWb2ljZUNoYW5uZWwoKTsKLSAgfQotICBpZiAodm9pY2VfY2hh
bm5lbF8pIHsKLSAgICAvLyBUaGlzIHdvdWxkIG1lYW4gdmlkZW8gUlRQIHNlbmRlcnMvcmVjZWl2
ZXJzIHRoYXQgYXJlIHVzaW5nIHVzIGhhdmVuJ3QKLSAgICAvLyBiZWVuIGRlc3Ryb3llZC4gVGhp
cyBpc24ndCBzYWZlIChzZWUgZXJyb3IgbG9nIGFib3ZlKS4KLSAgICBEZXN0cm95VmlkZW9DaGFu
bmVsKCk7Ci0gIH0KLSAgLy8gQ2FsbCBtdXN0IGJlIGRlc3Ryb3llZCBvbiB0aGUgd29ya2VyIHRo
cmVhZC4KLSAgd29ya2VyX3RocmVhZF8tPkludm9rZTx2b2lkPigKLSAgICAgIFJUQ19GUk9NX0hF
UkUsIHJ0Yzo6QmluZCgmUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNsb3NlX3csIHRo
aXMpKTsKLX0KLQotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJm
YWNlPj4KLVJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpDcmVhdGVQcm94aWVkUnRwVHJh
bnNwb3J0KAotICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0g
ICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgUGFja2V0VHJhbnNwb3J0SW50
ZXJmYWNlKiBydGNwKSB7Ci0gIGlmICghdHJhbnNwb3J0X3Byb3hpZXNfLmVtcHR5KCkgJiYgKHBh
cmFtZXRlcnMua2VlcGFsaXZlICE9IGtlZXBhbGl2ZV8pKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5f
RVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX01PRElGSUNBVElPTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAiQ2Fubm90IGNyZWF0ZSBSdHBUcmFuc3BvcnQgd2l0aCBkaWZmZXJlbnQga2Vl
cC1hbGl2ZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZyb20gdGhlIFJ0cFRyYW5zcG9y
dHMgYWxyZWFkeSBhc3NvY2lhdGVkIHdpdGggdGhpcyAiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgInRyYW5zcG9ydCBjb250cm9sbGVyLiIpOwotICB9Ci0gIGF1dG8gcmVzdWx0ID0gUnRwVHJh
bnNwb3J0QWRhcHRlcjo6Q3JlYXRlUHJveGllZChwYXJhbWV0ZXJzLCBydHAsIHJ0Y3AsIHRoaXMp
OwotICBpZiAocmVzdWx0Lm9rKCkpIHsKLSAgICB0cmFuc3BvcnRfcHJveGllc18ucHVzaF9iYWNr
KHJlc3VsdC52YWx1ZSgpLmdldCgpKTsKLSAgICB0cmFuc3BvcnRfcHJveGllc18uYmFjaygpLT5H
ZXRJbnRlcm5hbCgpLT5TaWduYWxEZXN0cm95ZWQuY29ubmVjdCgKLSAgICAgICAgdGhpcywgJlJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPblJ0cFRyYW5zcG9ydERlc3Ryb3llZCk7Ci0g
IH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8U3J0
cFRyYW5zcG9ydEludGVyZmFjZT4+Ci1SdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q3Jl
YXRlUHJveGllZFNydHBUcmFuc3BvcnQoCi0gICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycywKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwKLSAgICBQ
YWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0Y3ApIHsKLSAgYXV0byByZXN1bHQgPQotICAgICAg
UnRwVHJhbnNwb3J0QWRhcHRlcjo6Q3JlYXRlU3J0cFByb3hpZWQocGFyYW1ldGVycywgcnRwLCBy
dGNwLCB0aGlzKTsKLSAgaWYgKHJlc3VsdC5vaygpKSB7Ci0gICAgdHJhbnNwb3J0X3Byb3hpZXNf
LnB1c2hfYmFjayhyZXN1bHQudmFsdWUoKS5nZXQoKSk7Ci0gICAgdHJhbnNwb3J0X3Byb3hpZXNf
LmJhY2soKS0+R2V0SW50ZXJuYWwoKS0+U2lnbmFsRGVzdHJveWVkLmNvbm5lY3QoCi0gICAgICAg
IHRoaXMsICZSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6T25SdHBUcmFuc3BvcnREZXN0
cm95ZWQpOwotICB9Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJUQ0Vycm9yT3I8c3RkOjp1bmlx
dWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PgotUnRwVHJhbnNwb3J0Q29udHJvbGxlckFk
YXB0ZXI6OkNyZWF0ZVByb3hpZWRSdHBTZW5kZXIoCi0gICAgY3JpY2tldDo6TWVkaWFUeXBlIGtp
bmQsCi0gICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnRfcHJveHkpIHsKLSAgUlRD
X0RDSEVDSyh0cmFuc3BvcnRfcHJveHkpOwotICBSVENfRENIRUNLKHN0ZDo6ZmluZCh0cmFuc3Bv
cnRfcHJveGllc18uYmVnaW4oKSwgdHJhbnNwb3J0X3Byb3hpZXNfLmVuZCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc3BvcnRfcHJveHkpICE9IHRyYW5zcG9ydF9wcm94aWVzXy5lbmQo
KSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwU2VuZGVyQWRhcHRlcj4gbmV3X3NlbmRlcigK
LSAgICAgIG5ldyBPcnRjUnRwU2VuZGVyQWRhcHRlcihraW5kLCB0cmFuc3BvcnRfcHJveHksIHRo
aXMpKTsKLSAgUlRDRXJyb3IgZXJyOwotICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIGNyaWNr
ZXQ6Ok1FRElBX1RZUEVfQVVESU86Ci0gICAgICBlcnIgPSBBdHRhY2hBdWRpb1NlbmRlcihuZXdf
c2VuZGVyLmdldCgpLCB0cmFuc3BvcnRfcHJveHktPkdldEludGVybmFsKCkpOwotICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOgotICAgICAgZXJyID0gQXR0
YWNoVmlkZW9TZW5kZXIobmV3X3NlbmRlci5nZXQoKSwgdHJhbnNwb3J0X3Byb3h5LT5HZXRJbnRl
cm5hbCgpKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9EQVRB
OgotICAgICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgfQotICBpZiAoIWVyci5vaygpKSB7Ci0gICAg
cmV0dXJuIHN0ZDo6bW92ZShlcnIpOwotICB9Ci0KLSAgcmV0dXJuIE9ydGNSdHBTZW5kZXJBZGFw
dGVyOjpDcmVhdGVQcm94eShzdGQ6Om1vdmUobmV3X3NlbmRlcikpOwotfQotCi1SVENFcnJvck9y
PHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwUmVjZWl2ZXJJbnRlcmZhY2U+PgotUnRwVHJhbnNwb3J0
Q29udHJvbGxlckFkYXB0ZXI6OkNyZWF0ZVByb3hpZWRSdHBSZWNlaXZlcigKLSAgICBjcmlja2V0
OjpNZWRpYVR5cGUga2luZCwKLSAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydF9w
cm94eSkgewotICBSVENfRENIRUNLKHRyYW5zcG9ydF9wcm94eSk7Ci0gIFJUQ19EQ0hFQ0soc3Rk
OjpmaW5kKHRyYW5zcG9ydF9wcm94aWVzXy5iZWdpbigpLCB0cmFuc3BvcnRfcHJveGllc18uZW5k
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydF9wcm94eSkgIT0gdHJhbnNwb3J0
X3Byb3hpZXNfLmVuZCgpKTsKLSAgc3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckFkYXB0
ZXI+IG5ld19yZWNlaXZlcigKLSAgICAgIG5ldyBPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyKGtpbmQs
IHRyYW5zcG9ydF9wcm94eSwgdGhpcykpOwotICBSVENFcnJvciBlcnI7Ci0gIHN3aXRjaCAoa2lu
ZCkgewotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzoKLSAgICAgIGVyciA9IEF0
dGFjaEF1ZGlvUmVjZWl2ZXIobmV3X3JlY2VpdmVyLmdldCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc3BvcnRfcHJveHktPkdldEludGVybmFsKCkpOwotICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOgotICAgICAgZXJyID0gQXR0
YWNoVmlkZW9SZWNlaXZlcihuZXdfcmVjZWl2ZXIuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYW5zcG9ydF9wcm94eS0+R2V0SW50ZXJuYWwoKSk7Ci0gICAgICBicmVh
azsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQToKLSAgICAgIFJUQ19OT1RSRUFD
SEVEKCk7Ci0gIH0KLSAgaWYgKCFlcnIub2soKSkgewotICAgIHJldHVybiBzdGQ6Om1vdmUoZXJy
KTsKLSAgfQotCi0gIHJldHVybiBPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyOjpDcmVhdGVQcm94eShz
dGQ6Om1vdmUobmV3X3JlY2VpdmVyKSk7Ci19Ci0KLXN0ZDo6dmVjdG9yPFJ0cFRyYW5zcG9ydElu
dGVyZmFjZSo+Ci1SdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6R2V0VHJhbnNwb3J0cygp
IGNvbnN0IHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICByZXR1
cm4gdHJhbnNwb3J0X3Byb3hpZXNfOwotfQotCi1SVENFcnJvciBSdHBUcmFuc3BvcnRDb250cm9s
bGVyQWRhcHRlcjo6U2V0UnRwVHJhbnNwb3J0UGFyYW1ldGVycygKLSAgICBjb25zdCBSdHBUcmFu
c3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSog
aW5uZXJfdHJhbnNwb3J0KSB7Ci0gIGlmICgodmlkZW9fY2hhbm5lbF8gIT0gbnVsbHB0ciB8fCB2
b2ljZV9jaGFubmVsXyAhPSBudWxscHRyKSAmJgotICAgICAgKHBhcmFtZXRlcnMua2VlcGFsaXZl
ICE9IGtlZXBhbGl2ZV8pKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBl
OjpJTlZBTElEX01PRElGSUNBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90
IGNoYW5nZSBrZWVwLWFsaXZlIHNldHRpbmdzIGFmdGVyIGNyZWF0aW5nICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAibWVkaWEgc3RyZWFtcyBvciBhZGRpdGlvbmFsIHRyYW5zcG9ydHMgZm9y
IHRoZSBzYW1lICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNwb3J0IGNvbnRyb2xs
ZXIuIik7Ci0gIH0KLSAgLy8gQ2FsbCBtdXN0IGJlIGNvbmZpZ3VyZWQgb24gdGhlIHdvcmtlciB0
aHJlYWQuCi0gIHdvcmtlcl90aHJlYWRfLT5JbnZva2U8dm9pZD4oCi0gICAgICBSVENfRlJPTV9I
RVJFLAotICAgICAgcnRjOjpCaW5kKCZSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6U2V0
UnRwVHJhbnNwb3J0UGFyYW1ldGVyc193LAotICAgICAgICAgICAgICAgIHRoaXMsIHBhcmFtZXRl
cnMpKTsKLQotICBkbyB7Ci0gICAgaWYgKGlubmVyX3RyYW5zcG9ydCA9PSBpbm5lcl9hdWRpb190
cmFuc3BvcnRfKSB7Ci0gICAgICBDb3B5UnRjcFBhcmFtZXRlcnNUb0Rlc2NyaXB0aW9ucyhwYXJh
bWV0ZXJzLnJ0Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9j
YWxfYXVkaW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8pOwotICAgICAgaWYgKCF2b2ljZV9jaGFu
bmVsXy0+U2V0TG9jYWxDb250ZW50KCZsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a09mZmVyLCBudWxs
cHRyKSkgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmICghdm9pY2VfY2hhbm5l
bF8tPlNldFJlbW90ZUNvbnRlbnQoJnJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFR5cGU6OmtBbnN3ZXIsIG51
bGxwdHIpKSB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0gZWxzZSBpZiAoaW5uZXJf
dHJhbnNwb3J0ID09IGlubmVyX3ZpZGVvX3RyYW5zcG9ydF8pIHsKLSAgICAgIENvcHlSdGNwUGFy
YW1ldGVyc1RvRGVzY3JpcHRpb25zKHBhcmFtZXRlcnMucnRjcCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZsb2NhbF92aWRlb19kZXNjcmlwdGlvbl8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9u
Xyk7Ci0gICAgICBpZiAoIXZpZGVvX2NoYW5uZWxfLT5TZXRMb2NhbENvbnRlbnQoJmxvY2FsX3Zp
ZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZHBUeXBlOjprT2ZmZXIsIG51bGxwdHIpKSB7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
fQotICAgICAgaWYgKCF2aWRlb19jaGFubmVsXy0+U2V0UmVtb3RlQ29udGVudCgmcmVtb3RlX3Zp
ZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2RwVHlwZTo6a0Fuc3dlciwgbnVsbHB0cikpIHsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICB9Ci0gICAgfQotICAgIHJldHVybiBSVENFcnJvcjo6T0soKTsKLSAgfSB3aGlsZSAoZmFsc2Up
OwotICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SLAot
ICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGFwcGx5IG5ldyBSVENQIHBhcmFtZXRl
cnMuIik7Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OlNldFJ0cFRy
YW5zcG9ydFBhcmFtZXRlcnNfdygKLSAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKSB7Ci0gIGNhbGxfc2VuZF9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TZXRL
ZWVwQWxpdmVDb25maWcocGFyYW1ldGVycy5rZWVwYWxpdmUpOwotfQotCi1SVENFcnJvciBSdHBU
cmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6VmFsaWRhdGVBbmRBcHBseUF1ZGlvU2VuZGVyUGFy
YW1ldGVycygKLSAgICBjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgIHVpbnQz
Ml90KiBwcmltYXJ5X3NzcmMpIHsKLSAgUlRDX0RDSEVDSyh2b2ljZV9jaGFubmVsXyk7Ci0gIFJU
Q19EQ0hFQ0soaGF2ZV9hdWRpb19zZW5kZXJfKTsKLQotICBhdXRvIGNvZGVjc19yZXN1bHQgPSBU
b0NyaWNrZXRDb2RlY3M8Y3JpY2tldDo6QXVkaW9Db2RlYz4ocGFyYW1ldGVycy5jb2RlY3MpOwot
ICBpZiAoIWNvZGVjc19yZXN1bHQub2soKSkgewotICAgIHJldHVybiBjb2RlY3NfcmVzdWx0Lk1v
dmVFcnJvcigpOwotICB9Ci0KLSAgYXV0byBleHRlbnNpb25zX3Jlc3VsdCA9Ci0gICAgICBUb0Ny
aWNrZXRSdHBIZWFkZXJFeHRlbnNpb25zKHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMpOwot
ICBpZiAoIWV4dGVuc2lvbnNfcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gZXh0ZW5zaW9uc19y
ZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICBhdXRvIHN0cmVhbV9wYXJhbXNfcmVzdWx0ID0g
TWFrZVNlbmRTdHJlYW1QYXJhbXNWZWMoCi0gICAgICBwYXJhbWV0ZXJzLmVuY29kaW5ncywgaW5u
ZXJfYXVkaW9fdHJhbnNwb3J0Xy0+R2V0UGFyYW1ldGVycygpLnJ0Y3AuY25hbWUsCi0gICAgICBs
b2NhbF9hdWRpb19kZXNjcmlwdGlvbl8pOwotICBpZiAoIXN0cmVhbV9wYXJhbXNfcmVzdWx0Lm9r
KCkpIHsKLSAgICByZXR1cm4gc3RyZWFtX3BhcmFtc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0K
LQotICAvLyBDaGVjayB0aGF0IGF1ZGlvL3ZpZGVvIHNlbmRlciBhcmVuJ3QgdXNpbmcgdGhlIHNh
bWUgSURzIHRvIHJlZmVyIHRvCi0gIC8vIGRpZmZlcmVudCB0aGluZ3MsIGlmIHRoZXkgc2hhcmUg
dGhlIHNhbWUgdHJhbnNwb3J0LgotICBpZiAoaW5uZXJfYXVkaW9fdHJhbnNwb3J0XyA9PSBpbm5l
cl92aWRlb190cmFuc3BvcnRfKSB7Ci0gICAgUlRDRXJyb3IgZXJyID0gQ2hlY2tGb3JJZENvbmZs
aWN0cygKLSAgICAgICAgY29kZWNzX3Jlc3VsdC52YWx1ZSgpLCBleHRlbnNpb25zX3Jlc3VsdC52
YWx1ZSgpLAotICAgICAgICBzdHJlYW1fcGFyYW1zX3Jlc3VsdC52YWx1ZSgpLCByZW1vdGVfdmlk
ZW9fZGVzY3JpcHRpb25fLmNvZGVjcygpLAotICAgICAgICByZW1vdGVfdmlkZW9fZGVzY3JpcHRp
b25fLnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucygpLAotICAgICAgICBsb2NhbF92aWRlb19kZXNjcmlw
dGlvbl8uc3RyZWFtcygpKTsKLSAgICBpZiAoIWVyci5vaygpKSB7Ci0gICAgICByZXR1cm4gZXJy
OwotICAgIH0KLSAgfQotCi0gIGJvb2wgbG9jYWxfc2VuZCA9IGZhbHNlOwotICBpbnQgYmFuZHdp
ZHRoID0gY3JpY2tldDo6a0F1dG9CYW5kd2lkdGg7Ci0gIGlmIChwYXJhbWV0ZXJzLmVuY29kaW5n
cy5zaXplKCkgPT0gMXUpIHsKLSAgICBpZiAocGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubWF4X2Jp
dHJhdGVfYnBzKSB7Ci0gICAgICBiYW5kd2lkdGggPSAqcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0u
bWF4X2JpdHJhdGVfYnBzOwotICAgIH0KLSAgICBsb2NhbF9zZW5kID0gcGFyYW1ldGVycy5lbmNv
ZGluZ3NbMF0uYWN0aXZlOwotICB9Ci0gIGNvbnN0IGJvb2wgbG9jYWxfcmVjdiA9Ci0gICAgICBS
dHBUcmFuc2NlaXZlckRpcmVjdGlvbkhhc1JlY3YobG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLmRp
cmVjdGlvbigpKTsKLSAgY29uc3QgYXV0byBsb2NhbF9kaXJlY3Rpb24gPQotICAgICAgUnRwVHJh
bnNjZWl2ZXJEaXJlY3Rpb25Gcm9tU2VuZFJlY3YobG9jYWxfc2VuZCwgbG9jYWxfcmVjdik7Ci0g
IGlmIChwcmltYXJ5X3NzcmMgJiYgIXN0cmVhbV9wYXJhbXNfcmVzdWx0LnZhbHVlKCkuZW1wdHko
KSkgewotICAgICpwcmltYXJ5X3NzcmMgPSBzdHJlYW1fcGFyYW1zX3Jlc3VsdC52YWx1ZSgpWzBd
LmZpcnN0X3NzcmMoKTsKLSAgfQotCi0gIC8vIFZhbGlkYXRpb24gaXMgZG9uZSwgc28gd2UgY2Fu
IGF0dGVtcHQgYXBwbHlpbmcgdGhlIGRlc2NyaXB0aW9ucy4gU2VudAotICAvLyBjb2RlY3MgYW5k
IGhlYWRlciBleHRlbnNpb25zIGdvIGluIHJlbW90ZSBkZXNjcmlwdGlvbiwgc3RyZWFtcyBnbyBp
bgotICAvLyBsb2NhbC4KLSAgLy8KLSAgLy8gSWYgdGhlcmUgYXJlIG5vIGNvZGVjcyBvciBlbmNv
ZGluZ3MsIGp1c3QgbGVhdmUgdGhlIHByZXZpb3VzIHNldCBvZgotICAvLyBjb2RlY3MuIFRoZSBt
ZWRpYSBlbmdpbmUgZG9lc24ndCBsaWtlIGFuIGVtcHR5IHNldCBvZiBjb2RlY3MuCi0gIGlmIChs
b2NhbF9hdWRpb19kZXNjcmlwdGlvbl8uc3RyZWFtcygpLmVtcHR5KCkgJiYKLSAgICAgIHJlbW90
ZV9hdWRpb19kZXNjcmlwdGlvbl8uY29kZWNzKCkuZW1wdHkoKSkgewotICB9IGVsc2UgewotICAg
IHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uc2V0X2NvZGVjcyhjb2RlY3NfcmVzdWx0Lk1vdmVW
YWx1ZSgpKTsKLSAgfQotICByZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fLnNldF9ydHBfaGVhZGVy
X2V4dGVuc2lvbnMoCi0gICAgICBleHRlbnNpb25zX3Jlc3VsdC5Nb3ZlVmFsdWUoKSk7Ci0gIHJl
bW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uc2V0X2JhbmR3aWR0aChiYW5kd2lkdGgpOwotICBsb2Nh
bF9hdWRpb19kZXNjcmlwdGlvbl8ubXV0YWJsZV9zdHJlYW1zKCkgPSBzdHJlYW1fcGFyYW1zX3Jl
c3VsdC5Nb3ZlVmFsdWUoKTsKLSAgLy8gRGlyZWN0aW9uIHNldCBiYXNlZCBvbiBlbmNvZGluZyAi
YWN0aXZlIiBmbGFnLgotICBsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8uc2V0X2RpcmVjdGlvbihs
b2NhbF9kaXJlY3Rpb24pOwotICByZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fLnNldF9kaXJlY3Rp
b24oCi0gICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvblJldmVyc2VkKGxvY2FsX2RpcmVjdGlv
bikpOwotCi0gIC8vIFNldCByZW1vdGUgY29udGVudCBmaXJzdCwgdG8gZW5zdXJlIHRoZSBzdHJl
YW0gaXMgY3JlYXRlZCB3aXRoIHRoZSBjb3JyZWN0Ci0gIC8vIGNvZGVjLgotICBpZiAoIXZvaWNl
X2NoYW5uZWxfLT5TZXRSZW1vdGVDb250ZW50KCZyZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFR5cGU6OmtPZmZlciwg
bnVsbHB0cikpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVEVS
TkFMX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYXBwbHkgcmVt
b3RlIHBhcmFtZXRlcnMgdG8gbWVkaWEgY2hhbm5lbC4iKTsKLSAgfQotICBpZiAoIXZvaWNlX2No
YW5uZWxfLT5TZXRMb2NhbENvbnRlbnQoJmxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFR5cGU6OmtBbnN3ZXIsIG51bGxw
dHIpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9F
UlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGFwcGx5IGxvY2FsIHBh
cmFtZXRlcnMgdG8gbWVkaWEgY2hhbm5lbC4iKTsKLSAgfQotICByZXR1cm4gUlRDRXJyb3I6Ok9L
KCk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpWYWxpZGF0
ZUFuZEFwcGx5VmlkZW9TZW5kZXJQYXJhbWV0ZXJzKAotICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsCi0gICAgdWludDMyX3QqIHByaW1hcnlfc3NyYykgewotICBSVENfRENIRUNL
KHZpZGVvX2NoYW5uZWxfKTsKLSAgUlRDX0RDSEVDSyhoYXZlX3ZpZGVvX3NlbmRlcl8pOwotCi0g
IGF1dG8gY29kZWNzX3Jlc3VsdCA9IFRvQ3JpY2tldENvZGVjczxjcmlja2V0OjpWaWRlb0NvZGVj
PihwYXJhbWV0ZXJzLmNvZGVjcyk7Ci0gIGlmICghY29kZWNzX3Jlc3VsdC5vaygpKSB7Ci0gICAg
cmV0dXJuIGNvZGVjc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICBhdXRvIGV4dGVuc2lv
bnNfcmVzdWx0ID0KLSAgICAgIFRvQ3JpY2tldFJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1ldGVy
cy5oZWFkZXJfZXh0ZW5zaW9ucyk7Ci0gIGlmICghZXh0ZW5zaW9uc19yZXN1bHQub2soKSkgewot
ICAgIHJldHVybiBleHRlbnNpb25zX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIGF1dG8g
c3RyZWFtX3BhcmFtc19yZXN1bHQgPSBNYWtlU2VuZFN0cmVhbVBhcmFtc1ZlYygKLSAgICAgIHBh
cmFtZXRlcnMuZW5jb2RpbmdzLCBpbm5lcl92aWRlb190cmFuc3BvcnRfLT5HZXRQYXJhbWV0ZXJz
KCkucnRjcC5jbmFtZSwKLSAgICAgIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXyk7Ci0gIGlmICgh
c3RyZWFtX3BhcmFtc19yZXN1bHQub2soKSkgewotICAgIHJldHVybiBzdHJlYW1fcGFyYW1zX3Jl
c3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIC8vIENoZWNrIHRoYXQgYXVkaW8vdmlkZW8gc2Vu
ZGVyIGFyZW4ndCB1c2luZyB0aGUgc2FtZSBJRHMgdG8gcmVmZXIgdG8KLSAgLy8gZGlmZmVyZW50
IHRoaW5ncywgaWYgdGhleSBzaGFyZSB0aGUgc2FtZSB0cmFuc3BvcnQuCi0gIGlmIChpbm5lcl9h
dWRpb190cmFuc3BvcnRfID09IGlubmVyX3ZpZGVvX3RyYW5zcG9ydF8pIHsKLSAgICBSVENFcnJv
ciBlcnIgPSBDaGVja0ZvcklkQ29uZmxpY3RzKAotICAgICAgICBjb2RlY3NfcmVzdWx0LnZhbHVl
KCksIGV4dGVuc2lvbnNfcmVzdWx0LnZhbHVlKCksCi0gICAgICAgIHN0cmVhbV9wYXJhbXNfcmVz
dWx0LnZhbHVlKCksIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uY29kZWNzKCksCi0gICAgICAg
IHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8ucnRwX2hlYWRlcl9leHRlbnNpb25zKCksCi0gICAg
ICAgIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zdHJlYW1zKCkpOwotICAgIGlmICghZXJyLm9r
KCkpIHsKLSAgICAgIHJldHVybiBlcnI7Ci0gICAgfQotICB9Ci0KLSAgYm9vbCBsb2NhbF9zZW5k
ID0gZmFsc2U7Ci0gIGludCBiYW5kd2lkdGggPSBjcmlja2V0OjprQXV0b0JhbmR3aWR0aDsKLSAg
aWYgKHBhcmFtZXRlcnMuZW5jb2RpbmdzLnNpemUoKSA9PSAxdSkgewotICAgIGlmIChwYXJhbWV0
ZXJzLmVuY29kaW5nc1swXS5tYXhfYml0cmF0ZV9icHMpIHsKLSAgICAgIGJhbmR3aWR0aCA9ICpw
YXJhbWV0ZXJzLmVuY29kaW5nc1swXS5tYXhfYml0cmF0ZV9icHM7Ci0gICAgfQotICAgIGxvY2Fs
X3NlbmQgPSBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5hY3RpdmU7Ci0gIH0KLSAgY29uc3QgYm9v
bCBsb2NhbF9yZWN2ID0KLSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uSGFzUmVjdihsb2Nh
bF9hdWRpb19kZXNjcmlwdGlvbl8uZGlyZWN0aW9uKCkpOwotICBjb25zdCBhdXRvIGxvY2FsX2Rp
cmVjdGlvbiA9Ci0gICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbkZyb21TZW5kUmVjdihsb2Nh
bF9zZW5kLCBsb2NhbF9yZWN2KTsKLSAgaWYgKHByaW1hcnlfc3NyYyAmJiAhc3RyZWFtX3BhcmFt
c19yZXN1bHQudmFsdWUoKS5lbXB0eSgpKSB7Ci0gICAgKnByaW1hcnlfc3NyYyA9IHN0cmVhbV9w
YXJhbXNfcmVzdWx0LnZhbHVlKClbMF0uZmlyc3Rfc3NyYygpOwotICB9Ci0KLSAgLy8gVmFsaWRh
dGlvbiBpcyBkb25lLCBzbyB3ZSBjYW4gYXR0ZW1wdCBhcHBseWluZyB0aGUgZGVzY3JpcHRpb25z
LiBTZW50Ci0gIC8vIGNvZGVjcyBhbmQgaGVhZGVyIGV4dGVuc2lvbnMgZ28gaW4gcmVtb3RlIGRl
c2NyaXB0aW9uLCBzdHJlYW1zIGdvIGluCi0gIC8vIGxvY2FsLgotICAvLwotICAvLyBJZiB0aGVy
ZSBhcmUgbm8gY29kZWNzIG9yIGVuY29kaW5ncywganVzdCBsZWF2ZSB0aGUgcHJldmlvdXMgc2V0
IG9mCi0gIC8vIGNvZGVjcy4gVGhlIG1lZGlhIGVuZ2luZSBkb2Vzbid0IGxpa2UgYW4gZW1wdHkg
c2V0IG9mIGNvZGVjcy4KLSAgaWYgKGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zdHJlYW1zKCku
ZW1wdHkoKSAmJgotICAgICAgcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXy5jb2RlY3MoKS5lbXB0
eSgpKSB7Ci0gIH0gZWxzZSB7Ci0gICAgcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zZXRfY29k
ZWNzKGNvZGVjc19yZXN1bHQuTW92ZVZhbHVlKCkpOwotICB9Ci0gIHJlbW90ZV92aWRlb19kZXNj
cmlwdGlvbl8uc2V0X3J0cF9oZWFkZXJfZXh0ZW5zaW9ucygKLSAgICAgIGV4dGVuc2lvbnNfcmVz
dWx0Lk1vdmVWYWx1ZSgpKTsKLSAgcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zZXRfYmFuZHdp
ZHRoKGJhbmR3aWR0aCk7Ci0gIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXy5tdXRhYmxlX3N0cmVh
bXMoKSA9IHN0cmVhbV9wYXJhbXNfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICAvLyBEaXJlY3Rpb24g
c2V0IGJhc2VkIG9uIGVuY29kaW5nICJhY3RpdmUiIGZsYWcuCi0gIGxvY2FsX3ZpZGVvX2Rlc2Ny
aXB0aW9uXy5zZXRfZGlyZWN0aW9uKGxvY2FsX2RpcmVjdGlvbik7Ci0gIHJlbW90ZV92aWRlb19k
ZXNjcmlwdGlvbl8uc2V0X2RpcmVjdGlvbigKLSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9u
UmV2ZXJzZWQobG9jYWxfZGlyZWN0aW9uKSk7Ci0KLSAgLy8gU2V0IHJlbW90ZSBjb250ZW50IGZp
cnN0LCB0byBlbnN1cmUgdGhlIHN0cmVhbSBpcyBjcmVhdGVkIHdpdGggdGhlIGNvcnJlY3QKLSAg
Ly8gY29kZWMuCi0gIGlmICghdmlkZW9fY2hhbm5lbF8tPlNldFJlbW90ZUNvbnRlbnQoJnJlbW90
ZV92aWRlb19kZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2RwVHlwZTo6a09mZmVyLCBudWxscHRyKSkgewotICAgIExPR19BTkRfUkVUVVJOX0VS
Uk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIkZhaWxlZCB0byBhcHBseSByZW1vdGUgcGFyYW1ldGVycyB0byBtZWRpYSBjaGFubmVsLiIp
OwotICB9Ci0gIGlmICghdmlkZW9fY2hhbm5lbF8tPlNldExvY2FsQ29udGVudCgmbG9jYWxfdmlk
ZW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2RwVHlwZTo6a0Fuc3dlciwgbnVsbHB0cikpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihS
VENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICJG
YWlsZWQgdG8gYXBwbHkgbG9jYWwgcGFyYW1ldGVycyB0byBtZWRpYSBjaGFubmVsLiIpOwotICB9
Ci0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQotUlRDRXJyb3IgUnRwVHJhbnNwb3J0Q29u
dHJvbGxlckFkYXB0ZXI6OlZhbGlkYXRlQW5kQXBwbHlBdWRpb1JlY2VpdmVyUGFyYW1ldGVycygK
LSAgICBjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSB7Ci0gIFJUQ19EQ0hFQ0sodm9p
Y2VfY2hhbm5lbF8pOwotICBSVENfRENIRUNLKGhhdmVfYXVkaW9fcmVjZWl2ZXJfKTsKLQotICBh
dXRvIGNvZGVjc19yZXN1bHQgPSBUb0NyaWNrZXRDb2RlY3M8Y3JpY2tldDo6QXVkaW9Db2RlYz4o
cGFyYW1ldGVycy5jb2RlY3MpOwotICBpZiAoIWNvZGVjc19yZXN1bHQub2soKSkgewotICAgIHJl
dHVybiBjb2RlY3NfcmVzdWx0Lk1vdmVFcnJvcigpOwotICB9Ci0KLSAgYXV0byBleHRlbnNpb25z
X3Jlc3VsdCA9Ci0gICAgICBUb0NyaWNrZXRSdHBIZWFkZXJFeHRlbnNpb25zKHBhcmFtZXRlcnMu
aGVhZGVyX2V4dGVuc2lvbnMpOwotICBpZiAoIWV4dGVuc2lvbnNfcmVzdWx0Lm9rKCkpIHsKLSAg
ICByZXR1cm4gZXh0ZW5zaW9uc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICBhdXRvIHN0
cmVhbV9wYXJhbXNfcmVzdWx0ID0gVG9Dcmlja2V0U3RyZWFtUGFyYW1zVmVjKHBhcmFtZXRlcnMu
ZW5jb2RpbmdzKTsKLSAgaWYgKCFzdHJlYW1fcGFyYW1zX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0
dXJuIHN0cmVhbV9wYXJhbXNfcmVzdWx0Lk1vdmVFcnJvcigpOwotICB9Ci0KLSAgLy8gQ2hlY2sg
dGhhdCBhdWRpby92aWRlbyByZWNlaXZlIGFyZW4ndCB1c2luZyB0aGUgc2FtZSBJRHMgdG8gcmVm
ZXIgdG8KLSAgLy8gZGlmZmVyZW50IHRoaW5ncywgaWYgdGhleSBzaGFyZSB0aGUgc2FtZSB0cmFu
c3BvcnQuCi0gIGlmIChpbm5lcl9hdWRpb190cmFuc3BvcnRfID09IGlubmVyX3ZpZGVvX3RyYW5z
cG9ydF8pIHsKLSAgICBSVENFcnJvciBlcnIgPSBDaGVja0ZvcklkQ29uZmxpY3RzKAotICAgICAg
ICBjb2RlY3NfcmVzdWx0LnZhbHVlKCksIGV4dGVuc2lvbnNfcmVzdWx0LnZhbHVlKCksCi0gICAg
ICAgIHN0cmVhbV9wYXJhbXNfcmVzdWx0LnZhbHVlKCksIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9u
Xy5jb2RlY3MoKSwKLSAgICAgICAgbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLnJ0cF9oZWFkZXJf
ZXh0ZW5zaW9ucygpLAotICAgICAgICByZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLnN0cmVhbXMo
KSk7Ci0gICAgaWYgKCFlcnIub2soKSkgewotICAgICAgcmV0dXJuIGVycjsKLSAgICB9Ci0gIH0K
LQotICBjb25zdCBib29sIGxvY2FsX3NlbmQgPQotICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rp
b25IYXNTZW5kKGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5kaXJlY3Rpb24oKSk7Ci0gIGNvbnN0
IGJvb2wgbG9jYWxfcmVjdiA9Ci0gICAgICAhcGFyYW1ldGVycy5lbmNvZGluZ3MuZW1wdHkoKSAm
JiBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5hY3RpdmU7Ci0gIGNvbnN0IGF1dG8gbG9jYWxfZGly
ZWN0aW9uID0KLSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uRnJvbVNlbmRSZWN2KGxvY2Fs
X3NlbmQsIGxvY2FsX3JlY3YpOwotCi0gIC8vIFZhbGlkYXRpb24gaXMgZG9uZSwgc28gd2UgY2Fu
IGF0dGVtcHQgYXBwbHlpbmcgdGhlIGRlc2NyaXB0aW9ucy4gUmVjZWl2ZWQKLSAgLy8gY29kZWNz
IGFuZCBoZWFkZXIgZXh0ZW5zaW9ucyBnbyBpbiBsb2NhbCBkZXNjcmlwdGlvbiwgc3RyZWFtcyBn
byBpbgotICAvLyByZW1vdGUuCi0gIC8vCi0gIC8vIElmIHRoZXJlIGFyZSBubyBjb2RlY3Mgb3Ig
ZW5jb2RpbmdzLCBqdXN0IGxlYXZlIHRoZSBwcmV2aW91cyBzZXQgb2YKLSAgLy8gY29kZWNzLiBU
aGUgbWVkaWEgZW5naW5lIGRvZXNuJ3QgbGlrZSBhbiBlbXB0eSBzZXQgb2YgY29kZWNzLgotICBp
ZiAocmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zdHJlYW1zKCkuZW1wdHkoKSAmJgotICAgICAg
bG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLmNvZGVjcygpLmVtcHR5KCkpIHsKLSAgfSBlbHNlIHsK
LSAgICBsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8uc2V0X2NvZGVjcyhjb2RlY3NfcmVzdWx0Lk1v
dmVWYWx1ZSgpKTsKLSAgfQotICBsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8uc2V0X3J0cF9oZWFk
ZXJfZXh0ZW5zaW9ucygKLSAgICAgIGV4dGVuc2lvbnNfcmVzdWx0Lk1vdmVWYWx1ZSgpKTsKLSAg
cmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXy5tdXRhYmxlX3N0cmVhbXMoKSA9Ci0gICAgICBzdHJl
YW1fcGFyYW1zX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgLy8gRGlyZWN0aW9uIHNldCBiYXNlZCBv
biBlbmNvZGluZyAiYWN0aXZlIiBmbGFnLgotICBsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8uc2V0
X2RpcmVjdGlvbihsb2NhbF9kaXJlY3Rpb24pOwotICByZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25f
LnNldF9kaXJlY3Rpb24oCi0gICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvblJldmVyc2VkKGxv
Y2FsX2RpcmVjdGlvbikpOwotCi0gIGlmICghdm9pY2VfY2hhbm5lbF8tPlNldExvY2FsQ29udGVu
dCgmbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2RwVHlwZTo6a09mZmVyLCBudWxscHRyKSkgewotICAgIExPR19BTkRfUkVU
VVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIkZhaWxlZCB0byBhcHBseSBsb2NhbCBwYXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5u
ZWwuIik7Ci0gIH0KLSAgaWYgKCF2b2ljZV9jaGFubmVsXy0+U2V0UmVtb3RlQ29udGVudCgmcmVt
b3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTZHBUeXBlOjprQW5zd2VyLCBudWxscHRyKSkgewotICAgIExPR19BTkRfUkVUVVJO
X0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIkZhaWxlZCB0byBhcHBseSByZW1vdGUgcGFyYW1ldGVycyB0byBtZWRpYSBjaGFubmVs
LiIpOwotICB9Ci0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQotUlRDRXJyb3IgUnRwVHJh
bnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OlZhbGlkYXRlQW5kQXBwbHlWaWRlb1JlY2VpdmVyUGFy
YW1ldGVycygKLSAgICBjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSB7Ci0gIFJUQ19E
Q0hFQ0sodmlkZW9fY2hhbm5lbF8pOwotICBSVENfRENIRUNLKGhhdmVfdmlkZW9fcmVjZWl2ZXJf
KTsKLQotICBhdXRvIGNvZGVjc19yZXN1bHQgPSBUb0NyaWNrZXRDb2RlY3M8Y3JpY2tldDo6Vmlk
ZW9Db2RlYz4ocGFyYW1ldGVycy5jb2RlY3MpOwotICBpZiAoIWNvZGVjc19yZXN1bHQub2soKSkg
ewotICAgIHJldHVybiBjb2RlY3NfcmVzdWx0Lk1vdmVFcnJvcigpOwotICB9Ci0KLSAgYXV0byBl
eHRlbnNpb25zX3Jlc3VsdCA9Ci0gICAgICBUb0NyaWNrZXRSdHBIZWFkZXJFeHRlbnNpb25zKHBh
cmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMpOwotICBpZiAoIWV4dGVuc2lvbnNfcmVzdWx0Lm9r
KCkpIHsKLSAgICByZXR1cm4gZXh0ZW5zaW9uc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQot
ICBpbnQgYmFuZHdpZHRoID0gY3JpY2tldDo6a0F1dG9CYW5kd2lkdGg7Ci0gIGF1dG8gc3RyZWFt
X3BhcmFtc19yZXN1bHQgPSBUb0NyaWNrZXRTdHJlYW1QYXJhbXNWZWMocGFyYW1ldGVycy5lbmNv
ZGluZ3MpOwotICBpZiAoIXN0cmVhbV9wYXJhbXNfcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4g
c3RyZWFtX3BhcmFtc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICAvLyBDaGVjayB0aGF0
IGF1ZGlvL3ZpZGVvIHJlY2VpdmVyIGFyZW4ndCB1c2luZyB0aGUgc2FtZSBJRHMgdG8gcmVmZXIg
dG8KLSAgLy8gZGlmZmVyZW50IHRoaW5ncywgaWYgdGhleSBzaGFyZSB0aGUgc2FtZSB0cmFuc3Bv
cnQuCi0gIGlmIChpbm5lcl9hdWRpb190cmFuc3BvcnRfID09IGlubmVyX3ZpZGVvX3RyYW5zcG9y
dF8pIHsKLSAgICBSVENFcnJvciBlcnIgPSBDaGVja0ZvcklkQ29uZmxpY3RzKAotICAgICAgICBj
b2RlY3NfcmVzdWx0LnZhbHVlKCksIGV4dGVuc2lvbnNfcmVzdWx0LnZhbHVlKCksCi0gICAgICAg
IHN0cmVhbV9wYXJhbXNfcmVzdWx0LnZhbHVlKCksIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5j
b2RlY3MoKSwKLSAgICAgICAgbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLnJ0cF9oZWFkZXJfZXh0
ZW5zaW9ucygpLAotICAgICAgICByZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKSk7
Ci0gICAgaWYgKCFlcnIub2soKSkgewotICAgICAgcmV0dXJuIGVycjsKLSAgICB9Ci0gIH0KLQot
ICBjb25zdCBib29sIGxvY2FsX3NlbmQgPQotICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25I
YXNTZW5kKGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXy5kaXJlY3Rpb24oKSk7Ci0gIGNvbnN0IGJv
b2wgbG9jYWxfcmVjdiA9Ci0gICAgICAhcGFyYW1ldGVycy5lbmNvZGluZ3MuZW1wdHkoKSAmJiBw
YXJhbWV0ZXJzLmVuY29kaW5nc1swXS5hY3RpdmU7Ci0gIGNvbnN0IGF1dG8gbG9jYWxfZGlyZWN0
aW9uID0KLSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uRnJvbVNlbmRSZWN2KGxvY2FsX3Nl
bmQsIGxvY2FsX3JlY3YpOwotCi0gIC8vIFZhbGlkYXRpb24gaXMgZG9uZSwgc28gd2UgY2FuIGF0
dGVtcHQgYXBwbHlpbmcgdGhlIGRlc2NyaXB0aW9ucy4gUmVjZWl2ZWQKLSAgLy8gY29kZWNzIGFu
ZCBoZWFkZXIgZXh0ZW5zaW9ucyBnbyBpbiBsb2NhbCBkZXNjcmlwdGlvbiwgc3RyZWFtcyBnbyBp
bgotICAvLyByZW1vdGUuCi0gIC8vCi0gIC8vIElmIHRoZXJlIGFyZSBubyBjb2RlY3Mgb3IgZW5j
b2RpbmdzLCBqdXN0IGxlYXZlIHRoZSBwcmV2aW91cyBzZXQgb2YKLSAgLy8gY29kZWNzLiBUaGUg
bWVkaWEgZW5naW5lIGRvZXNuJ3QgbGlrZSBhbiBlbXB0eSBzZXQgb2YgY29kZWNzLgotICBpZiAo
cmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zdHJlYW1zKCkuZW1wdHkoKSAmJgotICAgICAgbG9j
YWxfdmlkZW9fZGVzY3JpcHRpb25fLmNvZGVjcygpLmVtcHR5KCkpIHsKLSAgfSBlbHNlIHsKLSAg
ICBsb2NhbF92aWRlb19kZXNjcmlwdGlvbl8uc2V0X2NvZGVjcyhjb2RlY3NfcmVzdWx0Lk1vdmVW
YWx1ZSgpKTsKLSAgfQotICBsb2NhbF92aWRlb19kZXNjcmlwdGlvbl8uc2V0X3J0cF9oZWFkZXJf
ZXh0ZW5zaW9ucygKLSAgICAgIGV4dGVuc2lvbnNfcmVzdWx0Lk1vdmVWYWx1ZSgpKTsKLSAgbG9j
YWxfdmlkZW9fZGVzY3JpcHRpb25fLnNldF9iYW5kd2lkdGgoYmFuZHdpZHRoKTsKLSAgcmVtb3Rl
X3ZpZGVvX2Rlc2NyaXB0aW9uXy5tdXRhYmxlX3N0cmVhbXMoKSA9Ci0gICAgICBzdHJlYW1fcGFy
YW1zX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgLy8gRGlyZWN0aW9uIHNldCBiYXNlZCBvbiBlbmNv
ZGluZyAiYWN0aXZlIiBmbGFnLgotICBsb2NhbF92aWRlb19kZXNjcmlwdGlvbl8uc2V0X2RpcmVj
dGlvbihsb2NhbF9kaXJlY3Rpb24pOwotICByZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLnNldF9k
aXJlY3Rpb24oCi0gICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvblJldmVyc2VkKGxvY2FsX2Rp
cmVjdGlvbikpOwotCi0gIGlmICghdmlkZW9fY2hhbm5lbF8tPlNldExvY2FsQ29udGVudCgmbG9j
YWxfdmlkZW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2RwVHlwZTo6a09mZmVyLCBudWxscHRyKSkgewotICAgIExPR19BTkRfUkVUVVJOX0VS
Uk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIkZhaWxlZCB0byBhcHBseSBsb2NhbCBwYXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5uZWwuIik7
Ci0gIH0KLSAgaWYgKCF2aWRlb19jaGFubmVsXy0+U2V0UmVtb3RlQ29udGVudCgmcmVtb3RlX3Zp
ZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTZHBUeXBlOjprQW5zd2VyLCBudWxscHRyKSkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9S
KFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IkZhaWxlZCB0byBhcHBseSByZW1vdGUgcGFyYW1ldGVycyB0byBtZWRpYSBjaGFubmVsLiIpOwot
ICB9Ci0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQotUnRwVHJhbnNwb3J0Q29udHJvbGxl
ckFkYXB0ZXI6OlJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKAotICAgIGNvbnN0IGNyaWNr
ZXQ6Ok1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgY3JpY2tldDo6Q2hhbm5lbE1hbmFnZXIqIGNo
YW5uZWxfbWFuYWdlciwKLSAgICB3ZWJydGM6OlJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCi0gICAg
cnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90
aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkKQotICAgIDogc2lnbmFsaW5n
X3RocmVhZF8oc2lnbmFsaW5nX3RocmVhZCksCi0gICAgICB3b3JrZXJfdGhyZWFkXyh3b3JrZXJf
dGhyZWFkKSwKLSAgICAgIG5ldHdvcmtfdGhyZWFkXyhuZXR3b3JrX3RocmVhZCksCi0gICAgICBt
ZWRpYV9jb25maWdfKGNvbmZpZyksCi0gICAgICBjaGFubmVsX21hbmFnZXJfKGNoYW5uZWxfbWFu
YWdlciksCi0gICAgICBldmVudF9sb2dfKGV2ZW50X2xvZyksCi0gICAgICBjYWxsX3NlbmRfcnRw
X3RyYW5zcG9ydF9jb250cm9sbGVyXyhudWxscHRyKSB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKHNp
Z25hbGluZ190aHJlYWRfKTsKLSAgUlRDX0RDSEVDSyhjaGFubmVsX21hbmFnZXJfKTsKLSAgLy8g
QWRkICJkdW1teSIgY29kZWNzIHRvIHRoZSBkZXNjcmlwdGlvbnMsIGJlY2F1c2UgdGhlIG1lZGlh
IGVuZ2luZXMKLSAgLy8gY3VycmVudGx5IHJlamVjdCBlbXB0eSBsaXN0cyBvZiBjb2RlY3MuIE5v
dGUgdGhhdCB0aGVzZSBjb2RlY3Mgd2lsbCBuZXZlcgotICAvLyBhY3R1YWxseSBiZSB1c2VkLCBi
ZWNhdXNlIHdoZW4gcGFyYW1ldGVycyBhcmUgc2V0LCB0aGUgZHVtbXkgY29kZWNzIHdpbGwKLSAg
Ly8gYmUgcmVwbGFjZWQgYnkgYWN0dWFsIGNvZGVjcyBiZWZvcmUgYW55IHNlbmQvcmVjZWl2ZSBz
dHJlYW1zIGFyZSBjcmVhdGVkLgotICBjb25zdCBjcmlja2V0OjpBdWRpb0NvZGVjIGR1bW15X2F1
ZGlvKDAsIGNyaWNrZXQ6OmtQY211Q29kZWNOYW1lLCA4MDAwLCAwLCAxKTsKLSAgY29uc3QgY3Jp
Y2tldDo6VmlkZW9Db2RlYyBkdW1teV92aWRlbyg5NiwgY3JpY2tldDo6a1ZwOENvZGVjTmFtZSk7
Ci0gIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5BZGRDb2RlYyhkdW1teV9hdWRpbyk7Ci0gIHJl
bW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uQWRkQ29kZWMoZHVtbXlfYXVkaW8pOwotICBsb2NhbF92
aWRlb19kZXNjcmlwdGlvbl8uQWRkQ29kZWMoZHVtbXlfdmlkZW8pOwotICByZW1vdGVfdmlkZW9f
ZGVzY3JpcHRpb25fLkFkZENvZGVjKGR1bW15X3ZpZGVvKTsKLQotICB3b3JrZXJfdGhyZWFkXy0+
SW52b2tlPHZvaWQ+KAotICAgICAgUlRDX0ZST01fSEVSRSwgcnRjOjpCaW5kKCZSdHBUcmFuc3Bv
cnRDb250cm9sbGVyQWRhcHRlcjo6SW5pdF93LCB0aGlzKSk7Ci19Ci0KLS8vIFRPRE8obmlzc2Up
OiBEdXBsaWNhdGVzIGNvcnJlc3BvbmRpbmcgbWV0aG9kIGluIFBlZXJDb25uZWN0aW9uICh1c2Vk
Ci0vLyB0byBiZSBpbiBNZWRpYUNvbnRyb2xsZXIpLgotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9s
bGVyQWRhcHRlcjo6SW5pdF93KCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfLT5Jc0N1
cnJlbnQoKSk7Ci0gIFJUQ19EQ0hFQ0soIWNhbGxfKTsKLQotICBjb25zdCBpbnQga01pbkJhbmR3
aWR0aEJwcyA9IDMwMDAwOwotICBjb25zdCBpbnQga1N0YXJ0QmFuZHdpZHRoQnBzID0gMzAwMDAw
OwotICBjb25zdCBpbnQga01heEJhbmR3aWR0aEJwcyA9IDIwMDAwMDA7Ci0KLSAgd2VicnRjOjpD
YWxsOjpDb25maWcgY2FsbF9jb25maWcoZXZlbnRfbG9nXyk7Ci0gIGNhbGxfY29uZmlnLmF1ZGlv
X3N0YXRlID0gY2hhbm5lbF9tYW5hZ2VyXy0+bWVkaWFfZW5naW5lKCktPkdldEF1ZGlvU3RhdGUo
KTsKLSAgY2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcubWluX2JpdHJhdGVfYnBzID0ga01pbkJh
bmR3aWR0aEJwczsKLSAgY2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9i
cHMgPSBrU3RhcnRCYW5kd2lkdGhCcHM7Ci0gIGNhbGxfY29uZmlnLmJpdHJhdGVfY29uZmlnLm1h
eF9iaXRyYXRlX2JwcyA9IGtNYXhCYW5kd2lkdGhCcHM7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBU
cmFuc3BvcnRDb250cm9sbGVyU2VuZD4gY29udHJvbGxlcl9zZW5kID0KLSAgICAgIGFic2w6Om1h
a2VfdW5pcXVlPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kPigKLSAgICAgICAgICBDbG9jazo6
R2V0UmVhbFRpbWVDbG9jaygpLCBldmVudF9sb2dfLAotICAgICAgICAgIGNhbGxfY29uZmlnLm5l
dHdvcmtfY29udHJvbGxlcl9mYWN0b3J5LCBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZyk7Ci0g
IGNhbGxfc2VuZF9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfID0gY29udHJvbGxlcl9zZW5kLmdl
dCgpOwotICBjYWxsXy5yZXNldCh3ZWJydGM6OkNhbGw6OkNyZWF0ZShjYWxsX2NvbmZpZywgc3Rk
Ojptb3ZlKGNvbnRyb2xsZXJfc2VuZCkpKTsKLX0KLQotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9s
bGVyQWRhcHRlcjo6Q2xvc2VfdygpIHsKLSAgY2FsbF8ucmVzZXQoKTsKLSAgY2FsbF9zZW5kX3J0
cF90cmFuc3BvcnRfY29udHJvbGxlcl8gPSBudWxscHRyOwotfQotCi1SVENFcnJvciBSdHBUcmFu
c3BvcnRDb250cm9sbGVyQWRhcHRlcjo6QXR0YWNoQXVkaW9TZW5kZXIoCi0gICAgT3J0Y1J0cFNl
bmRlckFkYXB0ZXIqIHNlbmRlciwKLSAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIGlubmVyX3Ry
YW5zcG9ydCkgewotICBpZiAoaGF2ZV9hdWRpb19zZW5kZXJfKSB7Ci0gICAgTE9HX0FORF9SRVRV
Uk5fRVJST1IoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIlVzaW5nIHR3byBhdWRpbyBSdHBTZW5kZXJzIHdpdGggdGhlIHNhbWUg
IgotICAgICAgICAgICAgICAgICAgICAgICAgICJSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRl
ciBpcyBub3QgY3VycmVudGx5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydGVk
LiIpOwotICB9Ci0gIGlmIChpbm5lcl9hdWRpb190cmFuc3BvcnRfICYmIGlubmVyX2F1ZGlvX3Ry
YW5zcG9ydF8gIT0gaW5uZXJfdHJhbnNwb3J0KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1Io
UlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIlVzaW5nIGRpZmZlcmVudCB0cmFuc3BvcnRzIGZvciB0aGUgYXVkaW8gIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICJSdHBTZW5kZXIgYW5kIFJ0cFJlY2VpdmVyIGlzIG5vdCBjdXJy
ZW50bHkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0ZWQuIik7Ci0gIH0KLQot
ICAvLyBJZiBzZXR0aW5nIG5ldyB0cmFuc3BvcnQsIGV4dHJhY3QgaXRzIFJUQ1AgcGFyYW1ldGVy
cyBhbmQgY3JlYXRlIHZvaWNlCi0gIC8vIGNoYW5uZWwuCi0gIGlmICghaW5uZXJfYXVkaW9fdHJh
bnNwb3J0XykgewotICAgIENvcHlSdGNwUGFyYW1ldGVyc1RvRGVzY3JpcHRpb25zKGlubmVyX3Ry
YW5zcG9ydC0+R2V0UGFyYW1ldGVycygpLnJ0Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmcmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXyk7Ci0gICAgaW5u
ZXJfYXVkaW9fdHJhbnNwb3J0XyA9IGlubmVyX3RyYW5zcG9ydDsKLSAgICBDcmVhdGVWb2ljZUNo
YW5uZWwoKTsKLSAgfQotICBoYXZlX2F1ZGlvX3NlbmRlcl8gPSB0cnVlOwotICBzZW5kZXItPlNp
Z25hbERlc3Ryb3llZC5jb25uZWN0KAotICAgICAgdGhpcywgJlJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJBZGFwdGVyOjpPbkF1ZGlvU2VuZGVyRGVzdHJveWVkKTsKLSAgcmV0dXJuIFJUQ0Vycm9yOjpP
SygpOwotfQotCi1SVENFcnJvciBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6QXR0YWNo
VmlkZW9TZW5kZXIoCi0gICAgT3J0Y1J0cFNlbmRlckFkYXB0ZXIqIHNlbmRlciwKLSAgICBSdHBU
cmFuc3BvcnRJbnRlcmZhY2UqIGlubmVyX3RyYW5zcG9ydCkgewotICBpZiAoaGF2ZV92aWRlb19z
ZW5kZXJfKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpVTlNVUFBP
UlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlVzaW5nIHR3byB2aWRl
byBSdHBTZW5kZXJzIHdpdGggdGhlIHNhbWUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJS
dHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciBpcyBub3QgY3VycmVudGx5ICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAic3VwcG9ydGVkLiIpOwotICB9Ci0gIGlmIChpbm5lcl92aWRlb190
cmFuc3BvcnRfICYmIGlubmVyX3ZpZGVvX3RyYW5zcG9ydF8gIT0gaW5uZXJfdHJhbnNwb3J0KSB7
Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVS
QVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlVzaW5nIGRpZmZlcmVudCB0cmFuc3Bv
cnRzIGZvciB0aGUgdmlkZW8gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJSdHBTZW5kZXIg
YW5kIFJ0cFJlY2VpdmVyIGlzIG5vdCBjdXJyZW50bHkgIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICJzdXBwb3J0ZWQuIik7Ci0gIH0KLQotICAvLyBJZiBzZXR0aW5nIG5ldyB0cmFuc3BvcnQs
IGV4dHJhY3QgaXRzIFJUQ1AgcGFyYW1ldGVycyBhbmQgY3JlYXRlIHZpZGVvCi0gIC8vIGNoYW5u
ZWwuCi0gIGlmICghaW5uZXJfdmlkZW9fdHJhbnNwb3J0XykgewotICAgIENvcHlSdGNwUGFyYW1l
dGVyc1RvRGVzY3JpcHRpb25zKGlubmVyX3RyYW5zcG9ydC0+R2V0UGFyYW1ldGVycygpLnJ0Y3As
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsX3ZpZGVvX2Rlc2Ny
aXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVtb3RlX3Zp
ZGVvX2Rlc2NyaXB0aW9uXyk7Ci0gICAgaW5uZXJfdmlkZW9fdHJhbnNwb3J0XyA9IGlubmVyX3Ry
YW5zcG9ydDsKLSAgICBDcmVhdGVWaWRlb0NoYW5uZWwoKTsKLSAgfQotICBoYXZlX3ZpZGVvX3Nl
bmRlcl8gPSB0cnVlOwotICBzZW5kZXItPlNpZ25hbERlc3Ryb3llZC5jb25uZWN0KAotICAgICAg
dGhpcywgJlJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPblZpZGVvU2VuZGVyRGVzdHJv
eWVkKTsKLSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1SVENFcnJvciBSdHBUcmFuc3Bv
cnRDb250cm9sbGVyQWRhcHRlcjo6QXR0YWNoQXVkaW9SZWNlaXZlcigKLSAgICBPcnRjUnRwUmVj
ZWl2ZXJBZGFwdGVyKiByZWNlaXZlciwKLSAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIGlubmVy
X3RyYW5zcG9ydCkgewotICBpZiAoaGF2ZV9hdWRpb19yZWNlaXZlcl8pIHsKLSAgICBMT0dfQU5E
X1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAiVXNpbmcgdHdvIGF1ZGlvIFJ0cFJlY2VpdmVycyB3aXRoIHRo
ZSBzYW1lICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiUnRwVHJhbnNwb3J0Q29udHJvbGxl
ckFkYXB0ZXIgaXMgbm90IGN1cnJlbnRseSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInN1
cHBvcnRlZC4iKTsKLSAgfQotICBpZiAoaW5uZXJfYXVkaW9fdHJhbnNwb3J0XyAmJiBpbm5lcl9h
dWRpb190cmFuc3BvcnRfICE9IGlubmVyX3RyYW5zcG9ydCkgewotICAgIExPR19BTkRfUkVUVVJO
X0VSUk9SKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICJVc2luZyBkaWZmZXJlbnQgdHJhbnNwb3J0cyBmb3IgdGhlIGF1ZGlvICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAiUnRwUmVjZWl2ZXIgYW5kIFJ0cFJlY2VpdmVyIGlz
IG5vdCBjdXJyZW50bHkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0ZWQuIik7
Ci0gIH0KLQotICAvLyBJZiBzZXR0aW5nIG5ldyB0cmFuc3BvcnQsIGV4dHJhY3QgaXRzIFJUQ1Ag
cGFyYW1ldGVycyBhbmQgY3JlYXRlIHZvaWNlCi0gIC8vIGNoYW5uZWwuCi0gIGlmICghaW5uZXJf
YXVkaW9fdHJhbnNwb3J0XykgewotICAgIENvcHlSdGNwUGFyYW1ldGVyc1RvRGVzY3JpcHRpb25z
KGlubmVyX3RyYW5zcG9ydC0+R2V0UGFyYW1ldGVycygpLnJ0Y3AsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXyk7
Ci0gICAgaW5uZXJfYXVkaW9fdHJhbnNwb3J0XyA9IGlubmVyX3RyYW5zcG9ydDsKLSAgICBDcmVh
dGVWb2ljZUNoYW5uZWwoKTsKLSAgfQotICBoYXZlX2F1ZGlvX3JlY2VpdmVyXyA9IHRydWU7Ci0g
IHJlY2VpdmVyLT5TaWduYWxEZXN0cm95ZWQuY29ubmVjdCgKLSAgICAgIHRoaXMsICZSdHBUcmFu
c3BvcnRDb250cm9sbGVyQWRhcHRlcjo6T25BdWRpb1JlY2VpdmVyRGVzdHJveWVkKTsKLSAgcmV0
dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1SVENFcnJvciBSdHBUcmFuc3BvcnRDb250cm9sbGVy
QWRhcHRlcjo6QXR0YWNoVmlkZW9SZWNlaXZlcigKLSAgICBPcnRjUnRwUmVjZWl2ZXJBZGFwdGVy
KiByZWNlaXZlciwKLSAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIGlubmVyX3RyYW5zcG9ydCkg
ewotICBpZiAoaGF2ZV92aWRlb19yZWNlaXZlcl8pIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJP
UihSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAiVXNpbmcgdHdvIHZpZGVvIFJ0cFJlY2VpdmVycyB3aXRoIHRoZSBzYW1lICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAiUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIgaXMg
bm90IGN1cnJlbnRseSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZC4iKTsK
LSAgfQotICBpZiAoaW5uZXJfdmlkZW9fdHJhbnNwb3J0XyAmJiBpbm5lcl92aWRlb190cmFuc3Bv
cnRfICE9IGlubmVyX3RyYW5zcG9ydCkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vy
cm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICJVc2luZyBkaWZmZXJlbnQgdHJhbnNwb3J0cyBmb3IgdGhlIHZpZGVvICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAiUnRwUmVjZWl2ZXIgYW5kIFJ0cFJlY2VpdmVyIGlzIG5vdCBjdXJyZW50
bHkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0ZWQuIik7Ci0gIH0KLSAgLy8g
SWYgc2V0dGluZyBuZXcgdHJhbnNwb3J0LCBleHRyYWN0IGl0cyBSVENQIHBhcmFtZXRlcnMgYW5k
IGNyZWF0ZSB2aWRlbwotICAvLyBjaGFubmVsLgotICBpZiAoIWlubmVyX3ZpZGVvX3RyYW5zcG9y
dF8pIHsKLSAgICBDb3B5UnRjcFBhcmFtZXRlcnNUb0Rlc2NyaXB0aW9ucyhpbm5lcl90cmFuc3Bv
cnQtPkdldFBhcmFtZXRlcnMoKS5ydGNwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZsb2NhbF92aWRlb19kZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJnJlbW90ZV92aWRlb19kZXNjcmlwdGlvbl8pOwotICAgIGlubmVyX3Zp
ZGVvX3RyYW5zcG9ydF8gPSBpbm5lcl90cmFuc3BvcnQ7Ci0gICAgQ3JlYXRlVmlkZW9DaGFubmVs
KCk7Ci0gIH0KLSAgaGF2ZV92aWRlb19yZWNlaXZlcl8gPSB0cnVlOwotICByZWNlaXZlci0+U2ln
bmFsRGVzdHJveWVkLmNvbm5lY3QoCi0gICAgICB0aGlzLCAmUnRwVHJhbnNwb3J0Q29udHJvbGxl
ckFkYXB0ZXI6Ok9uVmlkZW9SZWNlaXZlckRlc3Ryb3llZCk7Ci0gIHJldHVybiBSVENFcnJvcjo6
T0soKTsKLX0KLQotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6T25SdHBUcmFu
c3BvcnREZXN0cm95ZWQoCi0gICAgUnRwVHJhbnNwb3J0QWRhcHRlciogdHJhbnNwb3J0KSB7Ci0g
IFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgYXV0byBpdCA9IHN0ZDo6
ZmluZF9pZih0cmFuc3BvcnRfcHJveGllc18uYmVnaW4oKSwgdHJhbnNwb3J0X3Byb3hpZXNfLmVu
ZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc3BvcnRdKFJ0cFRyYW5zcG9ydElu
dGVyZmFjZSogcHJveHkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm94
eS0+R2V0SW50ZXJuYWwoKSA9PSB0cmFuc3BvcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
fSk7Ci0gIGlmIChpdCA9PSB0cmFuc3BvcnRfcHJveGllc18uZW5kKCkpIHsKLSAgICBSVENfTk9U
UkVBQ0hFRCgpOwotICAgIHJldHVybjsKLSAgfQotICB0cmFuc3BvcnRfcHJveGllc18uZXJhc2Uo
aXQpOwotfQotCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPbkF1ZGlvU2Vu
ZGVyRGVzdHJveWVkKCkgewotICBpZiAoIWhhdmVfYXVkaW9fc2VuZGVyXykgewotICAgIFJUQ19O
T1RSRUFDSEVEKCk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIC8vIEVtcHR5IHBhcmFtZXRlcnMgc2hv
dWxkIHJlc3VsdCBpbiBzZW5kaW5nIGJlaW5nIHN0b3BwZWQuCi0gIFJUQ0Vycm9yIGVyciA9Ci0g
ICAgICBWYWxpZGF0ZUFuZEFwcGx5QXVkaW9TZW5kZXJQYXJhbWV0ZXJzKFJ0cFBhcmFtZXRlcnMo
KSwgbnVsbHB0cik7Ci0gIFJUQ19EQ0hFQ0soZXJyLm9rKCkpOwotICBoYXZlX2F1ZGlvX3NlbmRl
cl8gPSBmYWxzZTsKLSAgaWYgKCFoYXZlX2F1ZGlvX3JlY2VpdmVyXykgewotICAgIERlc3Ryb3lW
b2ljZUNoYW5uZWwoKTsKLSAgfQotfQotCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFw
dGVyOjpPblZpZGVvU2VuZGVyRGVzdHJveWVkKCkgewotICBpZiAoIWhhdmVfdmlkZW9fc2VuZGVy
XykgewotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIC8vIEVtcHR5
IHBhcmFtZXRlcnMgc2hvdWxkIHJlc3VsdCBpbiBzZW5kaW5nIGJlaW5nIHN0b3BwZWQuCi0gIFJU
Q0Vycm9yIGVyciA9Ci0gICAgICBWYWxpZGF0ZUFuZEFwcGx5VmlkZW9TZW5kZXJQYXJhbWV0ZXJz
KFJ0cFBhcmFtZXRlcnMoKSwgbnVsbHB0cik7Ci0gIFJUQ19EQ0hFQ0soZXJyLm9rKCkpOwotICBo
YXZlX3ZpZGVvX3NlbmRlcl8gPSBmYWxzZTsKLSAgaWYgKCFoYXZlX3ZpZGVvX3JlY2VpdmVyXykg
ewotICAgIERlc3Ryb3lWaWRlb0NoYW5uZWwoKTsKLSAgfQotfQotCi12b2lkIFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJBZGFwdGVyOjpPbkF1ZGlvUmVjZWl2ZXJEZXN0cm95ZWQoKSB7Ci0gIGlmICgh
aGF2ZV9hdWRpb19yZWNlaXZlcl8pIHsKLSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICAgIHJldHVy
bjsKLSAgfQotICAvLyBFbXB0eSBwYXJhbWV0ZXJzIHNob3VsZCByZXN1bHQgaW4gcmVjZWl2aW5n
IGJlaW5nIHN0b3BwZWQuCi0gIFJUQ0Vycm9yIGVyciA9IFZhbGlkYXRlQW5kQXBwbHlBdWRpb1Jl
Y2VpdmVyUGFyYW1ldGVycyhSdHBQYXJhbWV0ZXJzKCkpOwotICBSVENfRENIRUNLKGVyci5vaygp
KTsKLSAgaGF2ZV9hdWRpb19yZWNlaXZlcl8gPSBmYWxzZTsKLSAgaWYgKCFoYXZlX2F1ZGlvX3Nl
bmRlcl8pIHsKLSAgICBEZXN0cm95Vm9pY2VDaGFubmVsKCk7Ci0gIH0KLX0KLQotdm9pZCBSdHBU
cmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6T25WaWRlb1JlY2VpdmVyRGVzdHJveWVkKCkgewot
ICBpZiAoIWhhdmVfdmlkZW9fcmVjZWl2ZXJfKSB7Ci0gICAgUlRDX05PVFJFQUNIRUQoKTsKLSAg
ICByZXR1cm47Ci0gIH0KLSAgLy8gRW1wdHkgcGFyYW1ldGVycyBzaG91bGQgcmVzdWx0IGluIHJl
Y2VpdmluZyBiZWluZyBzdG9wcGVkLgotICBSVENFcnJvciBlcnIgPSBWYWxpZGF0ZUFuZEFwcGx5
VmlkZW9SZWNlaXZlclBhcmFtZXRlcnMoUnRwUGFyYW1ldGVycygpKTsKLSAgUlRDX0RDSEVDSyhl
cnIub2soKSk7Ci0gIGhhdmVfdmlkZW9fcmVjZWl2ZXJfID0gZmFsc2U7Ci0gIGlmICghaGF2ZV92
aWRlb19zZW5kZXJfKSB7Ci0gICAgRGVzdHJveVZpZGVvQ2hhbm5lbCgpOwotICB9Ci19Ci0KLXZv
aWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNyZWF0ZVZvaWNlQ2hhbm5lbCgpIHsK
LSAgdm9pY2VfY2hhbm5lbF8gPSBjaGFubmVsX21hbmFnZXJfLT5DcmVhdGVWb2ljZUNoYW5uZWwo
Ci0gICAgICBjYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnXywgaW5uZXJfYXVkaW9fdHJhbnNwb3J0
Xy0+R2V0SW50ZXJuYWwoKSwKLSAgICAgIHNpZ25hbGluZ190aHJlYWRfLCAiYXVkaW8iLCBmYWxz
ZSwgcnRjOjpDcnlwdG9PcHRpb25zKCksCi0gICAgICBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSk7
Ci0gIFJUQ19EQ0hFQ0sodm9pY2VfY2hhbm5lbF8pOwotICB2b2ljZV9jaGFubmVsXy0+RW5hYmxl
KHRydWUpOwotfQotCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpDcmVhdGVW
aWRlb0NoYW5uZWwoKSB7Ci0gIHZpZGVvX2NoYW5uZWxfID0gY2hhbm5lbF9tYW5hZ2VyXy0+Q3Jl
YXRlVmlkZW9DaGFubmVsKAotICAgICAgY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZ18sIGlubmVy
X3ZpZGVvX3RyYW5zcG9ydF8tPkdldEludGVybmFsKCksCi0gICAgICBzaWduYWxpbmdfdGhyZWFk
XywgInZpZGVvIiwgZmFsc2UsIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpLAotICAgICAgY3JpY2tldDo6
VmlkZW9PcHRpb25zKCkpOwotICBSVENfRENIRUNLKHZpZGVvX2NoYW5uZWxfKTsKLSAgdmlkZW9f
Y2hhbm5lbF8tPkVuYWJsZSh0cnVlKTsKLX0KLQotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9sbGVy
QWRhcHRlcjo6RGVzdHJveVZvaWNlQ2hhbm5lbCgpIHsKLSAgUlRDX0RDSEVDSyh2b2ljZV9jaGFu
bmVsXyk7Ci0gIGNoYW5uZWxfbWFuYWdlcl8tPkRlc3Ryb3lWb2ljZUNoYW5uZWwodm9pY2VfY2hh
bm5lbF8pOwotICB2b2ljZV9jaGFubmVsXyA9IG51bGxwdHI7Ci0gIGlubmVyX2F1ZGlvX3RyYW5z
cG9ydF8gPSBudWxscHRyOwotfQotCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVy
OjpEZXN0cm95VmlkZW9DaGFubmVsKCkgewotICBSVENfRENIRUNLKHZpZGVvX2NoYW5uZWxfKTsK
LSAgY2hhbm5lbF9tYW5hZ2VyXy0+RGVzdHJveVZpZGVvQ2hhbm5lbCh2aWRlb19jaGFubmVsXyk7
Ci0gIHZpZGVvX2NoYW5uZWxfID0gbnVsbHB0cjsKLSAgaW5uZXJfdmlkZW9fdHJhbnNwb3J0XyA9
IG51bGxwdHI7Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNvcHlS
dGNwUGFyYW1ldGVyc1RvRGVzY3JpcHRpb25zKAotICAgIGNvbnN0IFJ0Y3BQYXJhbWV0ZXJzJiBw
YXJhbXMsCi0gICAgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qIGxvY2FsLAotICAg
IGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uKiByZW1vdGUpIHsKLSAgbG9jYWwtPnNl
dF9ydGNwX211eChwYXJhbXMubXV4KTsKLSAgcmVtb3RlLT5zZXRfcnRjcF9tdXgocGFyYW1zLm11
eCk7Ci0gIGxvY2FsLT5zZXRfcnRjcF9yZWR1Y2VkX3NpemUocGFyYW1zLnJlZHVjZWRfc2l6ZSk7
Ci0gIHJlbW90ZS0+c2V0X3J0Y3BfcmVkdWNlZF9zaXplKHBhcmFtcy5yZWR1Y2VkX3NpemUpOwot
ICBmb3IgKGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYgc3RyZWFtX3BhcmFtcyA6IGxvY2FsLT5tdXRh
YmxlX3N0cmVhbXMoKSkgewotICAgIHN0cmVhbV9wYXJhbXMuY25hbWUgPSBwYXJhbXMuY25hbWU7
Ci0gIH0KLX0KLQotdWludDMyX3QgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkdlbmVy
YXRlVW51c2VkU3NyYygKLSAgICBzdGQ6OnNldDx1aW50MzJfdD4qIG5ld19zc3JjcykgY29uc3Qg
ewotICB1aW50MzJfdCBzc3JjOwotICBkbyB7Ci0gICAgc3NyYyA9IHJ0Yzo6Q3JlYXRlUmFuZG9t
Tm9uWmVyb0lkKCk7Ci0gIH0gd2hpbGUgKAotICAgICAgY3JpY2tldDo6R2V0U3RyZWFtQnlTc3Jj
KGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zdHJlYW1zKCksIHNzcmMpIHx8Ci0gICAgICBjcmlj
a2V0OjpHZXRTdHJlYW1CeVNzcmMocmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zdHJlYW1zKCks
IHNzcmMpIHx8Ci0gICAgICBjcmlja2V0OjpHZXRTdHJlYW1CeVNzcmMobG9jYWxfdmlkZW9fZGVz
Y3JpcHRpb25fLnN0cmVhbXMoKSwgc3NyYykgfHwKLSAgICAgIGNyaWNrZXQ6OkdldFN0cmVhbUJ5
U3NyYyhyZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKSwgc3NyYykgfHwKLSAgICAg
ICFuZXdfc3NyY3MtPmluc2VydChzc3JjKS5zZWNvbmQpOwotICByZXR1cm4gc3NyYzsKLX0KLQot
UlRDRXJyb3JPcjxjcmlja2V0OjpTdHJlYW1QYXJhbXNWZWM+Ci1SdHBUcmFuc3BvcnRDb250cm9s
bGVyQWRhcHRlcjo6TWFrZVNlbmRTdHJlYW1QYXJhbXNWZWMoCi0gICAgc3RkOjp2ZWN0b3I8UnRw
RW5jb2RpbmdQYXJhbWV0ZXJzPiBlbmNvZGluZ3MsCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNu
YW1lLAotICAgIGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbikgY29uc3QgewotICBpZiAoZW5jb2RpbmdzLnNpemUoKSA+IDF1KSB7Ci0gICAgTE9HX0FO
RF9SRVRVUk5fRVJST1Iod2VicnRjOjpSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX1BBUkFNRVRF
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiT1JUQyBBUEkgaW1wbGVtZW50YXRpb24gZG9l
c24ndCBjdXJyZW50bHkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IHNpbXVs
Y2FzdCBvciBsYXllcmVkIGVuY29kaW5ncy4iKTsKLSAgfSBlbHNlIGlmIChlbmNvZGluZ3MuZW1w
dHkoKSkgewotICAgIHJldHVybiBjcmlja2V0OjpTdHJlYW1QYXJhbXNWZWMoKTsKLSAgfQotICBS
dHBFbmNvZGluZ1BhcmFtZXRlcnMmIGVuY29kaW5nID0gZW5jb2RpbmdzWzBdOwotICBzdGQ6OnNl
dDx1aW50MzJfdD4gbmV3X3NzcmNzOwotICBpZiAoZW5jb2Rpbmcuc3NyYykgewotICAgIG5ld19z
c3Jjcy5pbnNlcnQoKmVuY29kaW5nLnNzcmMpOwotICB9Ci0gIGlmIChlbmNvZGluZy5ydHggJiYg
ZW5jb2RpbmcucnR4LT5zc3JjKSB7Ci0gICAgbmV3X3NzcmNzLmluc2VydCgqZW5jb2RpbmcucnR4
LT5zc3JjKTsKLSAgfQotICAvLyBNYXkgbmVlZCB0byBmaWxsIG1pc3NpbmcgU1NSQ3Mgd2l0aCBn
ZW5lcmF0ZWQgb25lcy4KLSAgaWYgKCFlbmNvZGluZy5zc3JjKSB7Ci0gICAgaWYgKCFkZXNjcmlw
dGlvbi5zdHJlYW1zKCkuZW1wdHkoKSkgewotICAgICAgZW5jb2Rpbmcuc3NyYy5lbXBsYWNlKGRl
c2NyaXB0aW9uLnN0cmVhbXMoKVswXS5maXJzdF9zc3JjKCkpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICBlbmNvZGluZy5zc3JjLmVtcGxhY2UoR2VuZXJhdGVVbnVzZWRTc3JjKCZuZXdfc3NyY3MpKTsK
LSAgICB9Ci0gIH0KLSAgaWYgKGVuY29kaW5nLnJ0eCAmJiAhZW5jb2RpbmcucnR4LT5zc3JjKSB7
Ci0gICAgdWludDMyX3QgZXhpc3RpbmdfcnR4X3NzcmM7Ci0gICAgaWYgKCFkZXNjcmlwdGlvbi5z
dHJlYW1zKCkuZW1wdHkoKSAmJgotICAgICAgICBkZXNjcmlwdGlvbi5zdHJlYW1zKClbMF0uR2V0
RmlkU3NyYygKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uLnN0cmVhbXMoKVswXS5maXJzdF9zc3Jj
KCksICZleGlzdGluZ19ydHhfc3NyYykpIHsKLSAgICAgIGVuY29kaW5nLnJ0eC0+c3NyYy5lbXBs
YWNlKGV4aXN0aW5nX3J0eF9zc3JjKTsKLSAgICB9IGVsc2UgewotICAgICAgZW5jb2RpbmcucnR4
LT5zc3JjLmVtcGxhY2UoR2VuZXJhdGVVbnVzZWRTc3JjKCZuZXdfc3NyY3MpKTsKLSAgICB9Ci0g
IH0KLQotICBhdXRvIHJlc3VsdCA9IFRvQ3JpY2tldFN0cmVhbVBhcmFtc1ZlYyhlbmNvZGluZ3Mp
OwotICBpZiAoIXJlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJuIHJlc3VsdC5Nb3ZlRXJyb3IoKTsK
LSAgfQotICAvLyBJZiBjb252ZXJzaW9uIHdhcyBzdWNjZXNzZnVsLCB0aGVyZSBzaG91bGQgYmUg
b25lIFN0cmVhbVBhcmFtcy4KLSAgUlRDX0RDSEVDS19FUSgxdSwgcmVzdWx0LnZhbHVlKCkuc2l6
ZSgpKTsKLSAgcmVzdWx0LnZhbHVlKClbMF0uY25hbWUgPSBjbmFtZTsKLSAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVy
YWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0
Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxNGM1NzhhYTQ2ZjVjYWFiYjc3MGQyMzQwZGU3ZDQ0YzU5Y2FiNWJiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcmFkYXB0
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDIyMSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAy
MDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwot
Ci0jaWZuZGVmIE9SVENfUlRQVFJBTlNQT1JUQ09OVFJPTExFUkFEQVBURVJfSF8KLSNkZWZpbmUg
T1JUQ19SVFBUUkFOU1BPUlRDT05UUk9MTEVSQURBUFRFUl9IXwotCi0jaW5jbHVkZSA8bWVtb3J5
PgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgot
Ci0jaW5jbHVkZSAiYXBpL29ydGMvb3J0Y3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgiCi0jaW5jbHVk
ZSAiYXBpL29ydGMvb3J0Y3J0cHNlbmRlcmludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9vcnRj
L3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvb3J0Yy9z
cnRwdHJhbnNwb3J0aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiY2FsbC9jYWxsLmgiCi0jaW5jbHVk
ZSAiY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5oIgotI2luY2x1ZGUgImxvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9t
ZWRpYWNoYW5uZWwuaCIgIC8vIEZvciBNZWRpYUNvbmZpZy4KLSNpbmNsdWRlICJwYy9jaGFubmVs
bWFuYWdlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS90aHJlYWQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIFJ0cFRyYW5z
cG9ydEFkYXB0ZXI7Ci1jbGFzcyBPcnRjUnRwU2VuZGVyQWRhcHRlcjsKLWNsYXNzIE9ydGNSdHBS
ZWNlaXZlckFkYXB0ZXI7Ci0KLS8vIEltcGxlbWVudGF0aW9uIG9mIFJ0cFRyYW5zcG9ydENvbnRy
b2xsZXJJbnRlcmZhY2UuIFdyYXBzIGEgQ2FsbCwKLS8vIGEgVm9pY2VDaGFubmVsIGFuZCBWaWRl
b0NoYW5uZWwsIGFuZCBtYWludGFpbnMgYSBsaXN0IG9mIGRlcGVuZGVudCBSVFAKLS8vIHRyYW5z
cG9ydHMuCi0vLwotLy8gV2hlbiB1c2VkIGFsb25nIHdpdGggYW4gUnRwU2VuZGVyQWRhcHRlciBv
ciBSdHBSZWNlaXZlckFkYXB0ZXIsIHRoZQotLy8gc2VuZGVyL3JlY2VpdmVyIHBhc3NlcyBpdHMg
cGFyYW1ldGVycyBhbG9uZyB0byB0aGlzIGNsYXNzLCB3aGljaCB0dXJucyB0aGVtCi0vLyBpbnRv
IGNyaWNrZXQ6OiBtZWRpYSBkZXNjcmlwdGlvbnMgKHRoZSBpbnRlcmZhY2UgdXNlZCBieSBCYXNl
Q2hhbm5lbCkuCi0vLwotLy8gRHVlIHRvIHRoZSBmYWN0IHRoYXQgQmFzZUNoYW5uZWwgaGFzIGRp
ZmZlcmVudCBzdWJjbGFzc2VzIGZvciBhdWRpby92aWRlbywKLS8vIHRoZSBhY3R1YWwgQmFzZUNo
YW5uZWwgb2JqZWN0IGlzIG5vdCBjcmVhdGVkIHVudGlsIGFuIFJ0cFNlbmRlci9SdHBSZWNlaXZl
cgotLy8gbmVlZHMgdGhlbS4KLS8vCi0vLyBBbGwgbWV0aG9kcyBzaG91bGQgYmUgY2FsbGVkIG9u
IHRoZSBzaWduYWxpbmcgdGhyZWFkLgotLy8KLS8vIFRPRE8oZGVhZGJlZWYpOiBXaGVuIEJhc2VD
aGFubmVsIGlzIHNwbGl0IGFwYXJ0IGludG8gc2VwYXJhdGUKLS8vICJSdHBTZW5kZXIiLyJSdHBU
cmFuc2NlaXZlciIvIlJ0cFNlbmRlciIvIlJ0cFJlY2VpdmVyIiBvYmplY3RzLCB0aGlzIGFkYXB0
ZXIKLS8vIG9iamVjdCBjYW4gYmUgcmVwbGFjZWQgYnkgYSAicmVhbCIgb25lLgotY2xhc3MgUnRw
VHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIgOiBwdWJsaWMgUnRwVHJhbnNwb3J0Q29udHJvbGxl
ckludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKLSBwdWJsaWM6Ci0gIC8vIENyZWF0ZXMgYSBwcm94eSB0
aGF0IHdpbGwgY2FsbCAicHVibGljIGludGVyZmFjZSIgbWV0aG9kcyBvbiB0aGUgY29ycmVjdAot
ICAvLyB0aHJlYWQuCi0gIC8vCi0gIC8vIERvZXNuJ3QgdGFrZSBvd25lcnNoaXAgb2YgYW55IG9i
amVjdHMgcGFzc2VkIGluLgotICAvLwotICAvLyB8Y2hhbm5lbF9tYW5hZ2VyfCBtdXN0IG5vdCBi
ZSBudWxsLgotICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJ
bnRlcmZhY2U+IENyZWF0ZVByb3hpZWQoCi0gICAgICBjb25zdCBjcmlja2V0OjpNZWRpYUNvbmZp
ZyYgY29uZmlnLAotICAgICAgY3JpY2tldDo6Q2hhbm5lbE1hbmFnZXIqIGNoYW5uZWxfbWFuYWdl
ciwKLSAgICAgIHdlYnJ0Yzo6UnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKLSAgICAgIHJ0Yzo6VGhy
ZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQs
Ci0gICAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQpOwotCi0gIH5SdHBUcmFuc3BvcnRD
b250cm9sbGVyQWRhcHRlcigpIG92ZXJyaWRlOwotCi0gIC8vIFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uCi0gIHN0ZDo6dmVjdG9yPFJ0cFRyYW5zcG9ydElu
dGVyZmFjZSo+IEdldFRyYW5zcG9ydHMoKSBjb25zdCBvdmVycmlkZTsKLQotICAvLyBUaGVzZSBt
ZXRob2RzIGFyZSB1c2VkIGJ5IE9ydGNGYWN0b3J5IHRvIGNyZWF0ZSBSdHBUcmFuc3BvcnRzLCBS
dHBTZW5kZXJzCi0gIC8vIGFuZCBSdHBSZWNlaXZlcnMgdXNpbmcgdGhpcyBjb250cm9sbGVyLiBD
YWxsZWQgIkNyZWF0ZVByb3hpZWQiIGJlY2F1c2UKLSAgLy8gdGhlc2UgbWV0aG9kcyByZXR1cm4g
cHJveGllcyB0aGF0IHdpbGwgc2FmZWx5IGNhbGwgbWV0aG9kcyBvbiB0aGUgY29ycmVjdAotICAv
LyB0aHJlYWQuCi0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVy
ZmFjZT4+IENyZWF0ZVByb3hpZWRSdHBUcmFuc3BvcnQoCi0gICAgICBjb25zdCBSdHBUcmFuc3Bv
cnRQYXJhbWV0ZXJzJiBydGNwX3BhcmFtZXRlcnMsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRl
cmZhY2UqIHJ0cCwKLSAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCk7Ci0KLSAg
UlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8U3J0cFRyYW5zcG9ydEludGVyZmFjZT4+Ci0gIENy
ZWF0ZVByb3hpZWRTcnRwVHJhbnNwb3J0KGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHJ0
Y3BfcGFyYW1ldGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0VHJhbnNw
b3J0SW50ZXJmYWNlKiBydHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tldFRy
YW5zcG9ydEludGVyZmFjZSogcnRjcCk7Ci0KLSAgLy8gfHRyYW5zcG9ydF9wcm94eXwgbmVlZHMg
dG8gYmUgYSBwcm94eSB0byBhIHRyYW5zcG9ydCBiZWNhdXNlIHRoZQotICAvLyBhcHBsaWNhdGlv
biBtYXkgY2FsbCBHZXRUcmFuc3BvcnQoKSBvbiB0aGUgcmV0dXJuZWQgc2VuZGVyIG9yIHJlY2Vp
dmVyLAotICAvLyBhbmQgZXhwZWN0cyBpdCB0byByZXR1cm4gYSB0aHJlYWQtc2FmZSB0cmFuc3Bv
cnQgcHJveHkuCi0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRl
cmZhY2U+PiBDcmVhdGVQcm94aWVkUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TWVkaWFUeXBl
IGtpbmQsCi0gICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydF9wcm94eSk7Ci0g
IFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckludGVyZmFjZT4+Ci0g
IENyZWF0ZVByb3hpZWRSdHBSZWNlaXZlcihjcmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0X3By
b3h5KTsKLQotICAvLyBNZXRob2RzIHVzZWQgaW50ZXJuYWxseSBieSBvdGhlciAiYWRhcHRlciIg
Y2xhc3Nlcy4KLSAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQoKSBjb25zdCB7IHJldHVy
biBzaWduYWxpbmdfdGhyZWFkXzsgfQotICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCgpIGNv
bnN0IHsgcmV0dXJuIHdvcmtlcl90aHJlYWRfOyB9Ci0gIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3Ro
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIG5ldHdvcmtfdGhyZWFkXzsgfQotCi0gIC8vIHxwYXJhbWV0
ZXJzLmtlZXBhbGl2ZXwgd2lsbCBiZSBzZXQgZm9yIEFMTCBSVFAgdHJhbnNwb3J0cyBpbiB0aGUg
Y2FsbC4KLSAgUlRDRXJyb3IgU2V0UnRwVHJhbnNwb3J0UGFyYW1ldGVycyhjb25zdCBSdHBUcmFu
c3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0KTsKLSAgdm9p
ZCBTZXRSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzX3coY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycyk7Ci0KLSAgY3JpY2tldDo6Vm9pY2VDaGFubmVsKiB2b2ljZV9jaGFubmVs
KCkgeyByZXR1cm4gdm9pY2VfY2hhbm5lbF87IH0KLSAgY3JpY2tldDo6VmlkZW9DaGFubmVsKiB2
aWRlb19jaGFubmVsKCkgeyByZXR1cm4gdmlkZW9fY2hhbm5lbF87IH0KLQotICAvLyB8cHJpbWFy
eV9zc3JjfCBvdXQgcGFyYW1ldGVyIGlzIGZpbGxlZCB3aXRoIGVpdGhlcgotICAvLyB8cGFyYW1l
dGVycy5lbmNvZGluZ3NbMF0uc3NyY3wsIG9yIGEgZ2VuZXJhdGVkIFNTUkMgaWYgdGhhdCdzIGxl
ZnQgdW5zZXQuCi0gIFJUQ0Vycm9yIFZhbGlkYXRlQW5kQXBwbHlBdWRpb1NlbmRlclBhcmFtZXRl
cnMoCi0gICAgICBjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgICAgdWludDMy
X3QqIHByaW1hcnlfc3NyYyk7Ci0gIFJUQ0Vycm9yIFZhbGlkYXRlQW5kQXBwbHlWaWRlb1NlbmRl
clBhcmFtZXRlcnMoCi0gICAgICBjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAg
ICAgdWludDMyX3QqIHByaW1hcnlfc3NyYyk7Ci0gIFJUQ0Vycm9yIFZhbGlkYXRlQW5kQXBwbHlB
dWRpb1JlY2VpdmVyUGFyYW1ldGVycygKLSAgICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpOwotICBSVENFcnJvciBWYWxpZGF0ZUFuZEFwcGx5VmlkZW9SZWNlaXZlclBhcmFtZXRl
cnMoCi0gICAgICBjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKLQotIHByb3RlY3Rl
ZDoKLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIEdldEludGVybmFsKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gdGhpczsgfQotCi0gcHJpdmF0ZToKLSAgLy8gT25seSBleHBlY3RlZCB0byBi
ZSBjYWxsZWQgYnkgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNyZWF0ZVByb3hpZWQu
Ci0gIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29u
ZmlnJiBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkNo
YW5uZWxNYW5hZ2VyKiBjaGFubmVsX21hbmFnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdlYnJ0Yzo6UnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQpOwot
ICB2b2lkIEluaXRfdygpOwotICB2b2lkIENsb3NlX3coKTsKLQotICAvLyBUaGVzZSByZXR1cm4g
YW4gZXJyb3IgaWYgYW5vdGhlciBvZiB0aGUgc2FtZSB0eXBlIG9mIG9iamVjdCBpcyBhbHJlYWR5
Ci0gIC8vIGF0dGFjaGVkLCBvciBpZiB8dHJhbnNwb3J0X3Byb3h5fCBjYW4ndCBiZSB1c2VkIHdp
dGggdGhlIHNlbmRlci9yZWNlaXZlcgotICAvLyBkdWUgdG8gdGhlIGxpbWl0YXRpb24gdGhhdCB0
aGUgc2VuZGVyL3JlY2VpdmVyIG9mIHRoZSBzYW1lIG1lZGlhIHR5cGUgbXVzdAotICAvLyB1c2Ug
dGhlIHNhbWUgdHJhbnNwb3J0LgotICBSVENFcnJvciBBdHRhY2hBdWRpb1NlbmRlcihPcnRjUnRw
U2VuZGVyQWRhcHRlciogc2VuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBU
cmFuc3BvcnRJbnRlcmZhY2UqIGlubmVyX3RyYW5zcG9ydCk7Ci0gIFJUQ0Vycm9yIEF0dGFjaFZp
ZGVvU2VuZGVyKE9ydGNSdHBTZW5kZXJBZGFwdGVyKiBzZW5kZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0KTsKLSAg
UlRDRXJyb3IgQXR0YWNoQXVkaW9SZWNlaXZlcihPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyKiByZWNl
aXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcmZh
Y2UqIGlubmVyX3RyYW5zcG9ydCk7Ci0gIFJUQ0Vycm9yIEF0dGFjaFZpZGVvUmVjZWl2ZXIoT3J0
Y1J0cFJlY2VpdmVyQWRhcHRlciogcmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBpbm5lcl90cmFuc3BvcnQpOwotCi0gIHZvaWQg
T25SdHBUcmFuc3BvcnREZXN0cm95ZWQoUnRwVHJhbnNwb3J0QWRhcHRlciogdHJhbnNwb3J0KTsK
LQotICB2b2lkIE9uQXVkaW9TZW5kZXJEZXN0cm95ZWQoKTsKLSAgdm9pZCBPblZpZGVvU2VuZGVy
RGVzdHJveWVkKCk7Ci0gIHZvaWQgT25BdWRpb1JlY2VpdmVyRGVzdHJveWVkKCk7Ci0gIHZvaWQg
T25WaWRlb1JlY2VpdmVyRGVzdHJveWVkKCk7Ci0KLSAgdm9pZCBDcmVhdGVWb2ljZUNoYW5uZWwo
KTsKLSAgdm9pZCBDcmVhdGVWaWRlb0NoYW5uZWwoKTsKLSAgdm9pZCBEZXN0cm95Vm9pY2VDaGFu
bmVsKCk7Ci0gIHZvaWQgRGVzdHJveVZpZGVvQ2hhbm5lbCgpOwotCi0gIHZvaWQgQ29weVJ0Y3BQ
YXJhbWV0ZXJzVG9EZXNjcmlwdGlvbnMoCi0gICAgICBjb25zdCBSdGNwUGFyYW1ldGVycyYgcGFy
YW1zLAotICAgICAgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qIGxvY2FsLAotICAg
ICAgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qIHJlbW90ZSk7Ci0KLSAgLy8gSGVs
cGVyIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGFuIFNTUkMgdGhhdCBkb2Vzbid0IG1hdGNoIG9uZSBp
biBhbnkgb2YgdGhlCi0gIC8vICJjb250ZW50IGRlc2NyaXB0aW9uIiBzdHJ1Y3RzLCBvciBpbiB8
bmV3X3NzcmNzfCAod2hpY2ggaXMgbmVlZGVkIHNpbmNlCi0gIC8vIG11bHRpcGxlIFNTUkNzIG1h
eSBiZSBnZW5lcmF0ZWQgaW4gb25lIGdvKS4KLSAgdWludDMyX3QgR2VuZXJhdGVVbnVzZWRTc3Jj
KHN0ZDo6c2V0PHVpbnQzMl90PiogbmV3X3NzcmNzKSBjb25zdDsKLQotICAvLyB8ZGVzY3JpcHRp
b258IGlzIHRoZSBtYXRjaGluZyBkZXNjcmlwdGlvbiB3aGVyZSBleGlzdGluZyBTU1JDcyBjYW4g
YmUKLSAgLy8gZm91bmQuCi0gIC8vCi0gIC8vIFRoaXMgaXMgYSBtZW1iZXIgZnVuY3Rpb24gYmVj
YXVzZSBpdCBtYXkgbmVlZCB0byBnZW5lcmF0ZSBTU1JDcyB0aGF0IGRvbid0Ci0gIC8vIG1hdGNo
IGV4aXN0aW5nIG9uZXMsIHdoaWNoIGlzIG1vcmUgdGhhbiBUb1N0cmVhbVBhcmFtc1ZlYyBkb2Vz
LgotICBSVENFcnJvck9yPGNyaWNrZXQ6OlN0cmVhbVBhcmFtc1ZlYz4gTWFrZVNlbmRTdHJlYW1Q
YXJhbXNWZWMoCi0gICAgICBzdGQ6OnZlY3RvcjxSdHBFbmNvZGluZ1BhcmFtZXRlcnM+IGVuY29k
aW5ncywKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjbmFtZSwKLSAgICAgIGNvbnN0IGNyaWNr
ZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikgY29uc3Q7Ci0KLSAgcnRj
OjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWRfOwotICBydGM6OlRocmVhZCogd29ya2VyX3RocmVh
ZF87Ci0gIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZF87Ci0gIC8vIHx0cmFuc3BvcnRfcHJv
eGllc198IGFuZCB8aW5uZXJfYXVkaW9fdHJhbnNwb3J0X3wvfGlubmVyX2F1ZGlvX3RyYW5zcG9y
dF98Ci0gIC8vIGFyZSBzb21ld2hhdCByZWR1bmRhbnQsIGJ1dCB0aGUgbGF0dGVyIGFyZSBvbmx5
IHNldCB3aGVuCi0gIC8vIFJ0cFNlbmRlcnMvUnRwUmVjZWl2ZXJzIGFyZSBhdHRhY2hlZCB0byB0
aGUgdHJhbnNwb3J0LgotICBzdGQ6OnZlY3RvcjxSdHBUcmFuc3BvcnRJbnRlcmZhY2UqPiB0cmFu
c3BvcnRfcHJveGllc187Ci0gIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJfYXVkaW9fdHJh
bnNwb3J0XyA9IG51bGxwdHI7Ci0gIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJfdmlkZW9f
dHJhbnNwb3J0XyA9IG51bGxwdHI7Ci0gIGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnIG1lZGlh
X2NvbmZpZ187Ci0gIFJ0cEtlZXBBbGl2ZUNvbmZpZyBrZWVwYWxpdmVfOwotICBjcmlja2V0OjpD
aGFubmVsTWFuYWdlciogY2hhbm5lbF9tYW5hZ2VyXzsKLSAgd2VicnRjOjpSdGNFdmVudExvZyog
ZXZlbnRfbG9nXzsKLSAgc3RkOjp1bmlxdWVfcHRyPENhbGw+IGNhbGxfOwotICB3ZWJydGM6OlJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kKiBjYWxsX3NlbmRfcnRwX3RyYW5zcG9ydF9jb250cm9s
bGVyXzsKLQotICAvLyBCYXNlQ2hhbm5lbCB0YWtlcyBjb250ZW50IGRlc2NyaXB0aW9ucyBhcyBp
bnB1dCwgc28gd2Ugc3RvcmUgdGhlbSBoZXJlCi0gIC8vIHN1Y2ggdGhhdCB0aGV5IGNhbiBiZSB1
cGRhdGVkIHdoZW4gYSBuZXcgUnRwU2VuZGVyQWRhcHRlci8KLSAgLy8gUnRwUmVjZWl2ZXJBZGFw
dGVyIGF0dGFjaGVzIGl0c2VsZi4KLSAgY3JpY2tldDo6QXVkaW9Db250ZW50RGVzY3JpcHRpb24g
bG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fOwotICBjcmlja2V0OjpBdWRpb0NvbnRlbnREZXNjcmlw
dGlvbiByZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fOwotICBjcmlja2V0OjpWaWRlb0NvbnRlbnRE
ZXNjcmlwdGlvbiBsb2NhbF92aWRlb19kZXNjcmlwdGlvbl87Ci0gIGNyaWNrZXQ6OlZpZGVvQ29u
dGVudERlc2NyaXB0aW9uIHJlbW90ZV92aWRlb19kZXNjcmlwdGlvbl87Ci0gIGNyaWNrZXQ6OlZv
aWNlQ2hhbm5lbCogdm9pY2VfY2hhbm5lbF8gPSBudWxscHRyOwotICBjcmlja2V0OjpWaWRlb0No
YW5uZWwqIHZpZGVvX2NoYW5uZWxfID0gbnVsbHB0cjsKLSAgYm9vbCBoYXZlX2F1ZGlvX3NlbmRl
cl8gPSBmYWxzZTsKLSAgYm9vbCBoYXZlX3ZpZGVvX3NlbmRlcl8gPSBmYWxzZTsKLSAgYm9vbCBo
YXZlX2F1ZGlvX3JlY2VpdmVyXyA9IGZhbHNlOwotICBib29sIGhhdmVfdmlkZW9fcmVjZWl2ZXJf
ID0gZmFsc2U7Ci0KLSAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhSdHBUcmFu
c3BvcnRDb250cm9sbGVyQWRhcHRlcik7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0K
LSNlbmRpZiAgLy8gT1JUQ19SVFBUUkFOU1BPUlRDT05UUk9MTEVSQURBUFRFUl9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9zcnRw
dHJhbnNwb3J0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvb3J0Yy9zcnRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNTA2YWE3MDQxNGUyOWFlMjdiMGZiOWFkODFkMmQ0OThmZTIxMmFjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvc3J0cHRyYW5zcG9ydF91bml0dGVz
dC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAy
MDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwot
Ci0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGlu
X2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVp
bHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2Vt
ZWRpYWVuZ2luZS5oIgotI2luY2x1ZGUgIm9ydGMvb3J0Y2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJv
cnRjL3Rlc3RydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAicDJwL2Jhc2UvZmFrZXBhY2tldHRy
YW5zcG9ydC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0KLW5hbWVzcGFjZSB3ZWJy
dGMgewotCi1zdGF0aWMgY29uc3QgY2hhciBrVGVzdFNoYTFLZXlQYXJhbXMxW10gPQotICAgICJp
bmxpbmU6V1ZOZlgxOXpaVzFqZEd3Z0tDa2dld2t5TWpBN2ZRcDlDblZ1YkdWeiI7Ci1zdGF0aWMg
Y29uc3QgY2hhciBrVGVzdFNoYTFLZXlQYXJhbXMyW10gPQotICAgICJpbmxpbmU6UFMxdVFDVmVl
Q0ZDYW5WbWNqa3BQeXdqTldoY1lEMG1YWHR4YVZCUiI7Ci1zdGF0aWMgY29uc3QgY2hhciBrVGVz
dEdjbUtleVBhcmFtczNbXSA9Ci0gICAgImlubGluZTplMTY2S0ZsS3pKc0dXMGQ1YXBYK3JySTA1
dnhicnZNSkV6RkkxNGFURENhNjNJUlRsTEs0aUg2NnVPST0iOwotCi1zdGF0aWMgY29uc3QgY3Jp
Y2tldDo6Q3J5cHRvUGFyYW1zIGtUZXN0U2hhMUNyeXB0b1BhcmFtczEoCi0gICAgMSwKLSAgICAi
QUVTX0NNXzEyOF9ITUFDX1NIQTFfODAiLAotICAgIGtUZXN0U2hhMUtleVBhcmFtczEsCi0gICAg
IiIpOwotc3RhdGljIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1BhcmFtcyBrVGVzdFNoYTFDcnlwdG9Q
YXJhbXMyKAotICAgIDEsCi0gICAgIkFFU19DTV8xMjhfSE1BQ19TSEExXzgwIiwKLSAgICBrVGVz
dFNoYTFLZXlQYXJhbXMyLAotICAgICIiKTsKLXN0YXRpYyBjb25zdCBjcmlja2V0OjpDcnlwdG9Q
YXJhbXMga1Rlc3RHY21DcnlwdG9QYXJhbXMzKDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUVBRF9BRVNfMjU2X0dDTSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVGVz
dEdjbUtleVBhcmFtczMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiIik7Ci0KLS8vIFRoaXMgdGVzdCB1c2VzIGZha2UgcGFja2V0IHRy
YW5zcG9ydHMgYW5kIGEgZmFrZSBtZWRpYSBlbmdpbmUsIGluIG9yZGVyIHRvCi0vLyB0ZXN0IHRo
ZSBTcnRwVHJhbnNwb3J0IGF0IG9ubHkgYW4gQVBJIGxldmVsLiBBbnkgZW5kLXRvLWVuZCB0ZXN0
IHNob3VsZCBnbyBpbgotLy8gb3J0Y2ZhY3RvcnlfaW50ZWdyYXRpb250ZXN0LmNjIGluc3RlYWQu
Ci1jbGFzcyBTcnRwVHJhbnNwb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJs
aWM6Ci0gIFNydHBUcmFuc3BvcnRUZXN0KCkgewotICAgIGZha2VfbWVkaWFfZW5naW5lXyA9IG5l
dyBjcmlja2V0OjpGYWtlTWVkaWFFbmdpbmUoKTsKLSAgICAvLyBOb3RlOiBUaGlzIGRvZXNuJ3Qg
bmVlZCB0byB1c2UgZmFrZSBuZXR3b3JrIGNsYXNzZXMsIHNpbmNlIGl0IHVzZXMKLSAgICAvLyBG
YWtlUGFja2V0VHJhbnNwb3J0cy4KLSAgICBhdXRvIHJlc3VsdCA9IE9ydGNGYWN0b3J5OjpDcmVh
dGUoCi0gICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4o
ZmFrZV9tZWRpYV9lbmdpbmVfKSwKLSAgICAgICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZh
Y3RvcnkoKSwgQ3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSk7Ci0gICAgb3J0Y19m
YWN0b3J5XyA9IHJlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xs
ZXJfID0KLSAgICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxl
cigpLk1vdmVWYWx1ZSgpOwotCi0gICAgZmFrZV9wYWNrZXRfdHJhbnNwb3J0Xy5yZXNldChuZXcg
cnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0KCJmYWtlIikpOwotICAgIGF1dG8gc3J0cF90cmFuc3Bv
cnRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlU3J0cFRyYW5zcG9ydCgKLSAgICAgICAg
cnRwX3RyYW5zcG9ydF9wYXJhbWV0ZXJzXywgZmFrZV9wYWNrZXRfdHJhbnNwb3J0Xy5nZXQoKSwg
bnVsbHB0ciwKLSAgICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy5nZXQoKSk7Ci0gICAg
c3J0cF90cmFuc3BvcnRfID0gc3J0cF90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICB9
Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIE93bmVkIGJ5IHxvcnRjX2ZhY3RvcnlffC4KLSAgY3JpY2tl
dDo6RmFrZU1lZGlhRW5naW5lKiBmYWtlX21lZGlhX2VuZ2luZV87Ci0gIHN0ZDo6dW5pcXVlX3B0
cjxPcnRjRmFjdG9yeUludGVyZmFjZT4gb3J0Y19mYWN0b3J5XzsKLSAgc3RkOjp1bmlxdWVfcHRy
PFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+IHJ0cF90cmFuc3BvcnRfY29udHJvbGxl
cl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNlPiBzcnRwX3RyYW5z
cG9ydF87Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcnRwX3RyYW5zcG9ydF9wYXJhbWV0ZXJz
XzsKLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydD4gZmFrZV9wYWNr
ZXRfdHJhbnNwb3J0XzsKLX07Ci0KLS8vIFRlc3RzIHRoYXQgc2V0dGluZyB0aGUgU1JUUCBzZW5k
L3JlY2VpdmUga2V5IHN1Y2NlZWRzLgotVEVTVF9GKFNydHBUcmFuc3BvcnRUZXN0LCBTZXRTcnRw
U2VuZEFuZFJlY2VpdmVLZXkpIHsKLSAgRVhQRUNUX1RSVUUoc3J0cF90cmFuc3BvcnRfLT5TZXRT
cnRwU2VuZEtleShrVGVzdFNoYTFDcnlwdG9QYXJhbXMxKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUo
c3J0cF90cmFuc3BvcnRfLT5TZXRTcnRwUmVjZWl2ZUtleShrVGVzdFNoYTFDcnlwdG9QYXJhbXMy
KS5vaygpKTsKLSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRw
U2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwot
ICBFWFBFQ1RfVFJVRShzZW5kZXJfcmVzdWx0Lm9rKCkpOwotICBhdXRvIHJlY2VpdmVyX3Jlc3Vs
dCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVE
SUFfVFlQRV9BVURJTywgc3J0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgRVhQRUNUX1RSVUUocmVj
ZWl2ZXJfcmVzdWx0Lm9rKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHNldHRpbmcgdGhlIFNSVFAg
c2VuZC9yZWNlaXZlIGtleSB0d2ljZSBpcyBub3Qgc3VwcG9ydGVkLgotVEVTVF9GKFNydHBUcmFu
c3BvcnRUZXN0LCBTZXRTcnRwU2VuZEFuZFJlY2VpdmVLZXlUd2ljZSkgewotICBFWFBFQ1RfVFJV
RShzcnRwX3RyYW5zcG9ydF8tPlNldFNydHBTZW5kS2V5KGtUZXN0U2hhMUNyeXB0b1BhcmFtczEp
Lm9rKCkpOwotICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydF8tPlNldFNydHBSZWNlaXZlS2V5
KGtUZXN0U2hhMUNyeXB0b1BhcmFtczIpLm9rKCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBl
OjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICBzcnRwX3RyYW5zcG9ydF8tPlNl
dFNydHBTZW5kS2V5KGtUZXN0U2hhMUNyeXB0b1BhcmFtczIpLnR5cGUoKSk7Ci0gIEVYUEVDVF9F
UShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgIHNydHBf
dHJhbnNwb3J0Xy0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RTaGExQ3J5cHRvUGFyYW1zMSkudHlw
ZSgpKTsKLSAgLy8gRW5zdXJlIHRoYXQgdGhlIHNlbmRlcnMgYW5kIHJlY2VpdmVycyBjYW4gYmUg
Y3JlYXRlZCBkZXNwaXRlIHRoZSBwcmV2aW91cwotICAvLyBlcnJvcnMuCi0gIGF1dG8gc2VuZGVy
X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcihjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3J0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgRVhQRUNUX1RSVUUoc2VuZGVyX3Jl
c3VsdC5vaygpKTsKLSAgYXV0byByZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHNydHBfdHJh
bnNwb3J0Xy5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKHJlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLX0K
LQotLy8gVGVzdCB0aGF0IHRoZSBTUlRQIHNlbmQga2V5IGFuZCByZWNlaXZlIGtleSBtdXN0IGhh
dmUgdGhlIHNhbWUgY2lwaGVyIHN1aXRlLgotVEVTVF9GKFNydHBUcmFuc3BvcnRUZXN0LCBTZXRT
cnRwU2VuZEFuZFJlY2VpdmVLZXlEaWZmZXJlbnRDaXBoZXJTdWl0ZSkgewotICBFWFBFQ1RfVFJV
RShzcnRwX3RyYW5zcG9ydF8tPlNldFNydHBTZW5kS2V5KGtUZXN0U2hhMUNyeXB0b1BhcmFtczEp
Lm9rKCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04s
Ci0gICAgICAgICAgICBzcnRwX3RyYW5zcG9ydF8tPlNldFNydHBSZWNlaXZlS2V5KGtUZXN0R2Nt
Q3J5cHRvUGFyYW1zMykudHlwZSgpKTsKLSAgRVhQRUNUX1RSVUUoc3J0cF90cmFuc3BvcnRfLT5T
ZXRTcnRwUmVjZWl2ZUtleShrVGVzdFNoYTFDcnlwdG9QYXJhbXMyKS5vaygpKTsKLSAgLy8gRW5z
dXJlIHRoYXQgdGhlIHNlbmRlcnMgYW5kIHJlY2VpdmVycyBjYW4gYmUgY3JlYXRlZCBkZXNwaXRl
IHRoZSBwcmV2aW91cwotICAvLyBlcnJvci4KLSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0Y19m
YWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnRwX3Ry
YW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShzZW5kZXJfcmVzdWx0Lm9rKCkpOwotICBh
dXRvIHJlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAot
ICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgc3J0cF90cmFuc3BvcnRfLmdldCgpKTsK
LSAgRVhQRUNUX1RSVUUocmVjZWl2ZXJfcmVzdWx0Lm9rKCkpOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9vcnRjL3Rlc3RydHBwYXJhbWV0ZXJzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODJkOTY1OTBmYjk2NTVlYTc4ODUzMDU3MjQ4OTMxMTZmNjdh
ZjI5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3Rlc3RydHBwYXJhbWV0
ZXJzLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzE1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICov
Ci0KLSNpbmNsdWRlICJvcnRjL3Rlc3RydHBwYXJhbWV0ZXJzLmgiCi0KLSNpbmNsdWRlIDxhbGdv
cml0aG0+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLVJ0cFBh
cmFtZXRlcnMgTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpIHsKLSAgUnRwUGFyYW1ldGVycyBw
YXJhbWV0ZXJzOwotICBSdHBDb2RlY1BhcmFtZXRlcnMgb3B1c19jb2RlYzsKLSAgb3B1c19jb2Rl
Yy5uYW1lID0gIm9wdXMiOwotICBvcHVzX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBF
X0FVRElPOwotICBvcHVzX2NvZGVjLnBheWxvYWRfdHlwZSA9IDExMTsKLSAgb3B1c19jb2RlYy5j
bG9ja19yYXRlLmVtcGxhY2UoNDgwMDApOwotICBvcHVzX2NvZGVjLm51bV9jaGFubmVscy5lbXBs
YWNlKDIpOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKG9wdXNfY29k
ZWMpKTsKLSAgUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIGVuY29kaW5nOwotICBlbmNvZGluZy5jb2Rl
Y19wYXlsb2FkX3R5cGUuZW1wbGFjZSgxMTEpOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5wdXNo
X2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0gIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1S
dHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsSXNhY1BhcmFtZXRlcnMoKSB7Ci0gIFJ0cFBhcmFtZXRl
cnMgcGFyYW1ldGVyczsKLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIGlzYWNfY29kZWM7Ci0gIGlzYWNf
Y29kZWMubmFtZSA9ICJJU0FDIjsKLSAgaXNhY19jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFf
VFlQRV9BVURJTzsKLSAgaXNhY19jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMDM7Ci0gIGlzYWNfY29k
ZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDE2MDAwKTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9i
YWNrKHN0ZDo6bW92ZShpc2FjX2NvZGVjKSk7Ci0gIFJ0cEVuY29kaW5nUGFyYW1ldGVycyBlbmNv
ZGluZzsKLSAgZW5jb2RpbmcuY29kZWNfcGF5bG9hZF90eXBlLmVtcGxhY2UoMTExKTsKLSAgcGFy
YW1ldGVycy5lbmNvZGluZ3MucHVzaF9iYWNrKHN0ZDo6bW92ZShlbmNvZGluZykpOwotICByZXR1
cm4gcGFyYW1ldGVyczsKLX0KLQotUnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbE9wdXNQYXJhbWV0
ZXJzV2l0aFNzcmModWludDMyX3Qgc3NyYykgewotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMg
PSBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBd
LnNzcmMuZW1wbGFjZShzc3JjKTsKLSAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLVJ0cFBhcmFt
ZXRlcnMgTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVyc1dpdGhTc3JjKHVpbnQzMl90IHNzcmMpIHsK
LSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVycygp
OwotICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjLmVtcGxhY2Uoc3NyYyk7Ci0gIHJldHVy
biBwYXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVmlkZW9QYXJhbWV0
ZXJzKGNvbnN0IGNoYXIqIGNvZGVjX25hbWUpIHsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OwotICBSdHBDb2RlY1BhcmFtZXRlcnMgdnA4X2NvZGVjOwotICB2cDhfY29kZWMubmFtZSA9IGNv
ZGVjX25hbWU7Ci0gIHZwOF9jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsK
LSAgdnA4X2NvZGVjLnBheWxvYWRfdHlwZSA9IDk2OwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNo
X2JhY2soc3RkOjptb3ZlKHZwOF9jb2RlYykpOwotICBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgZW5j
b2Rpbmc7Ci0gIGVuY29kaW5nLmNvZGVjX3BheWxvYWRfdHlwZS5lbXBsYWNlKDk2KTsKLSAgcGFy
YW1ldGVycy5lbmNvZGluZ3MucHVzaF9iYWNrKHN0ZDo6bW92ZShlbmNvZGluZykpOwotICByZXR1
cm4gcGFyYW1ldGVyczsKLX0KLQotUnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbFZwOFBhcmFtZXRl
cnMoKSB7Ci0gIHJldHVybiBNYWtlTWluaW1hbFZpZGVvUGFyYW1ldGVycygiVlA4Iik7Ci19Ci0K
LVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzKCkgewotICByZXR1cm4gTWFr
ZU1pbmltYWxWaWRlb1BhcmFtZXRlcnMoIlZQOSIpOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VN
aW5pbWFsVnA4UGFyYW1ldGVyc1dpdGhTc3JjKHVpbnQzMl90IHNzcmMpIHsKLSAgUnRwUGFyYW1l
dGVycyBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCk7Ci0gIHBhcmFtZXRl
cnMuZW5jb2RpbmdzWzBdLnNzcmMuZW1wbGFjZShzc3JjKTsKLSAgcmV0dXJuIHBhcmFtZXRlcnM7
Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0aFNzcmModWlu
dDMyX3Qgc3NyYykgewotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbFZw
OVBhcmFtZXRlcnMoKTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYy5lbXBsYWNlKHNz
cmMpOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotLy8gTm90ZTogQ3VycmVudGx5LCB0aGVz
ZSAiV2l0aE5vU3NyYyIgbWV0aG9kcyBhcmUgaWRlbnRpY2FsIHRvIHRoZSBub3JtYWwKLS8vICJN
YWtlTWluaW1hbCIgbWV0aG9kcywgYnV0IHdpdGggdGhlIGFkZGVkIGd1YXJhbnRlZSB0aGF0IHRo
ZXkgd2lsbCBuZXZlciBiZQotLy8gY2hhbmdlZCB0byBpbmNsdWRlIGFuIFNTUkMuCi0KLVJ0cFBh
cmFtZXRlcnMgTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVyc1dpdGhOb1NzcmMoKSB7Ci0gIFJ0cFBh
cmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgUlRD
X0RDSEVDSyghcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYyk7Ci0gIHJldHVybiBwYXJhbWV0
ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsSXNhY1BhcmFtZXRlcnNXaXRoTm9T
c3JjKCkgewotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbElzYWNQYXJh
bWV0ZXJzKCk7Ci0gIFJUQ19EQ0hFQ0soIXBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnNzcmMpOwot
ICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotUnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbFZwOFBh
cmFtZXRlcnNXaXRoTm9Tc3JjKCkgewotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtl
TWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgUlRDX0RDSEVDSyghcGFyYW1ldGVycy5lbmNvZGlu
Z3NbMF0uc3NyYyk7Ci0gIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1h
a2VNaW5pbWFsVnA5UGFyYW1ldGVyc1dpdGhOb1NzcmMoKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFy
YW1ldGVycyA9IE1ha2VNaW5pbWFsVnA5UGFyYW1ldGVycygpOwotICBSVENfRENIRUNLKCFwYXJh
bWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjKTsKLSAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLS8v
IE1ha2UgYXVkaW8gcGFyYW1ldGVycyB3aXRoIGFsbCB0aGUgYXZhaWxhYmxlIHByb3BlcnRpZXMg
Y29uZmlndXJlZCBhbmQKLS8vIGZlYXR1cmVzIHVzZWQsIGFuZCB3aXRoIG11bHRpcGxlIGNvZGVj
cyBvZmZlcmVkLiBPYnRhaW5lZCBieSB0YWtpbmcgYQotLy8gc25hcHNob3Qgb2YgYSBkZWZhdWx0
IFBlZXJDb25uZWN0aW9uIG9mZmVyIChhbmQgYWRkaW5nIG90aGVyIHRoaW5ncywgbGlrZQotLy8g
Yml0cmF0ZSBsaW1pdCkuCi0vLwotLy8gU2VlICJNYWtlRnVsbE9wdXNQYXJhbWV0ZXJzIi8iTWFr
ZUZ1bGxJc2FjUGFyYW1ldGVycyIgYmVsb3cuCi1SdHBQYXJhbWV0ZXJzIE1ha2VGdWxsQXVkaW9Q
YXJhbWV0ZXJzKGludCBwcmVmZXJyZWRfcGF5bG9hZF90eXBlKSB7Ci0gIFJ0cFBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgb3B1c19jb2RlYzsKLSAgb3B1c19j
b2RlYy5uYW1lID0gIm9wdXMiOwotICBvcHVzX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPOwotICBvcHVzX2NvZGVjLnBheWxvYWRfdHlwZSA9IDExMTsKLSAgb3B1c19jb2Rl
Yy5jbG9ja19yYXRlLmVtcGxhY2UoNDgwMDApOwotICBvcHVzX2NvZGVjLm51bV9jaGFubmVscy5l
bXBsYWNlKDIpOwotICBvcHVzX2NvZGVjLnBhcmFtZXRlcnNbIm1pbnB0aW1lIl0gPSAiMTAiOwot
ICBvcHVzX2NvZGVjLnBhcmFtZXRlcnNbInVzZWluYmFuZGZlYyJdID0gIjEiOwotICBvcHVzX2Nv
ZGVjLnBhcmFtZXRlcnNbInVzZWR0eCJdID0gIjEiOwotICBvcHVzX2NvZGVjLnBhcmFtZXRlcnNb
InN0ZXJlbyJdID0gIjEiOwotICBvcHVzX2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNr
KFJ0Y3BGZWVkYmFja1R5cGU6OlRSQU5TUE9SVF9DQyk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1
c2hfYmFjayhzdGQ6Om1vdmUob3B1c19jb2RlYykpOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyBp
c2FjX2NvZGVjOwotICBpc2FjX2NvZGVjLm5hbWUgPSAiSVNBQyI7Ci0gIGlzYWNfY29kZWMua2lu
ZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87Ci0gIGlzYWNfY29kZWMucGF5bG9hZF90eXBl
ID0gMTAzOwotICBpc2FjX2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFjZSgxNjAwMCk7Ci0gIHBhcmFt
ZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUoaXNhY19jb2RlYykpOwotCi0gIFJ0cENv
ZGVjUGFyYW1ldGVycyBjbl9jb2RlYzsKLSAgY25fY29kZWMubmFtZSA9ICJDTiI7Ci0gIGNuX2Nv
ZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOwotICBjbl9jb2RlYy5wYXlsb2Fk
X3R5cGUgPSAxMDY7Ci0gIGNuX2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFjZSgzMjAwMCk7Ci0gIHBh
cmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUoY25fY29kZWMpKTsKLQotICBSdHBD
b2RlY1BhcmFtZXRlcnMgZHRtZl9jb2RlYzsKLSAgZHRtZl9jb2RlYy5uYW1lID0gInRlbGVwaG9u
ZS1ldmVudCI7Ci0gIGR0bWZfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87
Ci0gIGR0bWZfY29kZWMucGF5bG9hZF90eXBlID0gMTI2OwotICBkdG1mX2NvZGVjLmNsb2NrX3Jh
dGUuZW1wbGFjZSg4MDAwKTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92
ZShkdG1mX2NvZGVjKSk7Ci0KLSAgLy8gImNvZGVjX3BheWxvYWRfdHlwZSIgaXNuJ3QgaW1wbGVt
ZW50ZWQsIHNvIHdlIG5lZWQgdG8gcmVvcmRlciBjb2RlY3MgdG8KLSAgLy8gY2F1c2Ugb25lIHRv
IGJlIHVzZWQuCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBSZW1vdmUgdGhpcyB3aGVuIGl0IGJlY29t
ZXMgdW5uZWNlc3NhcnkuCi0gIGF1dG8gaXQgPSBzdGQ6OmZpbmRfaWYocGFyYW1ldGVycy5jb2Rl
Y3MuYmVnaW4oKSwgcGFyYW1ldGVycy5jb2RlY3MuZW5kKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgW3ByZWZlcnJlZF9wYXlsb2FkX3R5cGVdKGNvbnN0IFJ0cENvZGVjUGFyYW1ldGVycyYg
cCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAucGF5bG9hZF90eXBlID09
IHByZWZlcnJlZF9wYXlsb2FkX3R5cGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0g
IFJ0cENvZGVjUGFyYW1ldGVycyBwcmVmZXJyZWQgPSAqaXQ7Ci0gIHBhcmFtZXRlcnMuY29kZWNz
LmVyYXNlKGl0KTsKLSAgcGFyYW1ldGVycy5jb2RlY3MuaW5zZXJ0KHBhcmFtZXRlcnMuY29kZWNz
LmJlZ2luKCksIHByZWZlcnJlZCk7Ci0KLSAgLy8gSW50ZW50aW9uYWxseSBsZWF2ZSBvdXQgU1NS
QyBzbyBvbmUncyBjaG9zZW4gYXV0b21hdGljYWxseS4KLSAgUnRwRW5jb2RpbmdQYXJhbWV0ZXJz
IGVuY29kaW5nOwotICBlbmNvZGluZy5jb2RlY19wYXlsb2FkX3R5cGUuZW1wbGFjZShwcmVmZXJy
ZWRfcGF5bG9hZF90eXBlKTsKLSAgZW5jb2RpbmcuZHR4LmVtcGxhY2UoRHR4U3RhdHVzOjpFTkFC
TEVEKTsKLSAgLy8gMjAga2Jwcy4KLSAgZW5jb2RpbmcubWF4X2JpdHJhdGVfYnBzLmVtcGxhY2Uo
MjAwMDApOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5wdXNoX2JhY2soc3RkOjptb3ZlKGVuY29k
aW5nKSk7Ci0KLSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soCi0g
ICAgICAidXJuOmlldGY6cGFyYW1zOnJ0cC1oZHJleHQ6c3NyYy1hdWRpby1sZXZlbCIsIDEpOwot
ICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotUnRwUGFyYW1ldGVycyBNYWtlRnVsbE9wdXNQYXJh
bWV0ZXJzKCkgewotICByZXR1cm4gTWFrZUZ1bGxBdWRpb1BhcmFtZXRlcnMoMTExKTsKLX0KLQot
UnRwUGFyYW1ldGVycyBNYWtlRnVsbElzYWNQYXJhbWV0ZXJzKCkgewotICByZXR1cm4gTWFrZUZ1
bGxBdWRpb1BhcmFtZXRlcnMoMTAzKTsKLX0KLQotLy8gTWFrZSB2aWRlbyBwYXJhbWV0ZXJzIHdp
dGggYWxsIHRoZSBhdmFpbGFibGUgcHJvcGVydGllcyBjb25maWd1cmVkIGFuZAotLy8gZmVhdHVy
ZXMgdXNlZCwgYW5kIHdpdGggbXVsdGlwbGUgY29kZWNzIG9mZmVyZWQuIE9idGFpbmVkIGJ5IHRh
a2luZyBhCi0vLyBzbmFwc2hvdCBvZiBhIGRlZmF1bHQgUGVlckNvbm5lY3Rpb24gb2ZmZXIgKGFu
ZCBhZGRpbmcgb3RoZXIgdGhpbmdzLCBsaWtlCi0vLyBiaXRyYXRlIGxpbWl0KS4KLS8vCi0vLyBT
ZWUgIk1ha2VGdWxsVnA4UGFyYW1ldGVycyIvIk1ha2VGdWxsVnA5UGFyYW1ldGVycyIgYmVsb3cu
Ci1SdHBQYXJhbWV0ZXJzIE1ha2VGdWxsVmlkZW9QYXJhbWV0ZXJzKGludCBwcmVmZXJyZWRfcGF5
bG9hZF90eXBlKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICBSdHBDb2RlY1Bh
cmFtZXRlcnMgdnA4X2NvZGVjOwotICB2cDhfY29kZWMubmFtZSA9ICJWUDgiOwotICB2cDhfY29k
ZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0gIHZwOF9jb2RlYy5wYXlsb2Fk
X3R5cGUgPSAxMDA7Ci0gIHZwOF9jb2RlYy5jbG9ja19yYXRlLmVtcGxhY2UoOTAwMDApOwotICB2
cDhfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6Q0NN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVz
c2FnZVR5cGU6OkZJUik7Ci0gIHZwOF9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhS
dGNwRmVlZGJhY2tUeXBlOjpOQUNLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5cGU6OkdFTkVSSUNfTkFDSyk7Ci0gIHZwOF9jb2Rl
Yy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpOQUNLLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5
cGU6OlBMSSk7Ci0gIHZwOF9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVl
ZGJhY2tUeXBlOjpSRU1CKTsKLSAgdnA4X2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNr
KFJ0Y3BGZWVkYmFja1R5cGU6OlRSQU5TUE9SVF9DQyk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1
c2hfYmFjayhzdGQ6Om1vdmUodnA4X2NvZGVjKSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHZw
OF9ydHhfY29kZWM7Ci0gIHZwOF9ydHhfY29kZWMubmFtZSA9ICJydHgiOwotICB2cDhfcnR4X2Nv
ZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB2cDhfcnR4X2NvZGVjLnBh
eWxvYWRfdHlwZSA9IDk2OwotICB2cDhfcnR4X2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFjZSg5MDAw
MCk7Ci0gIHZwOF9ydHhfY29kZWMucGFyYW1ldGVyc1siYXB0Il0gPSAiMTAwIjsKLSAgcGFyYW1l
dGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZSh2cDhfcnR4X2NvZGVjKSk7Ci0KLSAgUnRw
Q29kZWNQYXJhbWV0ZXJzIHZwOV9jb2RlYzsKLSAgdnA5X2NvZGVjLm5hbWUgPSAiVlA5IjsKLSAg
dnA5X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB2cDlfY29kZWMu
cGF5bG9hZF90eXBlID0gMTAxOwotICB2cDlfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDkwMDAw
KTsKLSAgdnA5X2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5
cGU6OkNDTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BGZWVk
YmFja01lc3NhZ2VUeXBlOjpGSVIpOwotICB2cDlfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNl
X2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6TkFDSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJ0Y3BGZWVkYmFja01lc3NhZ2VUeXBlOjpHRU5FUklDX05BQ0spOwotICB2
cDlfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6TkFD
SywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BGZWVkYmFja01l
c3NhZ2VUeXBlOjpQTEkpOwotICB2cDlfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2so
UnRjcEZlZWRiYWNrVHlwZTo6UkVNQik7Ci0gIHZwOV9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxh
Y2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpUUkFOU1BPUlRfQ0MpOwotICBwYXJhbWV0ZXJzLmNv
ZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHZwOV9jb2RlYykpOwotCi0gIFJ0cENvZGVjUGFyYW1l
dGVycyB2cDlfcnR4X2NvZGVjOwotICB2cDlfcnR4X2NvZGVjLm5hbWUgPSAicnR4IjsKLSAgdnA5
X3J0eF9jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgdnA5X3J0eF9j
b2RlYy5wYXlsb2FkX3R5cGUgPSA5NzsKLSAgdnA5X3J0eF9jb2RlYy5jbG9ja19yYXRlLmVtcGxh
Y2UoOTAwMDApOwotICB2cDlfcnR4X2NvZGVjLnBhcmFtZXRlcnNbImFwdCJdID0gIjEwMSI7Ci0g
IHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUodnA5X3J0eF9jb2RlYykpOwot
Ci0gIFJ0cENvZGVjUGFyYW1ldGVycyByZWRfY29kZWM7Ci0gIHJlZF9jb2RlYy5uYW1lID0gInJl
ZCI7Ci0gIHJlZF9jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgcmVk
X2NvZGVjLnBheWxvYWRfdHlwZSA9IDExNjsKLSAgcmVkX2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFj
ZSg5MDAwMCk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUocmVkX2Nv
ZGVjKSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHJlZF9ydHhfY29kZWM7Ci0gIHJlZF9ydHhf
Y29kZWMubmFtZSA9ICJydHgiOwotICByZWRfcnR4X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJ
QV9UWVBFX1ZJREVPOwotICByZWRfcnR4X2NvZGVjLnBheWxvYWRfdHlwZSA9IDk4OwotICByZWRf
cnR4X2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFjZSg5MDAwMCk7Ci0gIHJlZF9ydHhfY29kZWMucGFy
YW1ldGVyc1siYXB0Il0gPSAiMTE2IjsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0
ZDo6bW92ZShyZWRfcnR4X2NvZGVjKSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHVscGZlY19j
b2RlYzsKLSAgdWxwZmVjX2NvZGVjLm5hbWUgPSAidWxwZmVjIjsKLSAgdWxwZmVjX2NvZGVjLmtp
bmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB1bHBmZWNfY29kZWMucGF5bG9hZF90
eXBlID0gMTE3OwotICB1bHBmZWNfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDkwMDAwKTsKLSAg
cGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZSh1bHBmZWNfY29kZWMpKTsKLQot
ICAvLyAiY29kZWNfcGF5bG9hZF90eXBlIiBpc24ndCBpbXBsZW1lbnRlZCwgc28gd2UgbmVlZCB0
byByZW9yZGVyIGNvZGVjcyB0bwotICAvLyBjYXVzZSBvbmUgdG8gYmUgdXNlZC4KLSAgLy8gVE9E
TyhkZWFkYmVlZik6IFJlbW92ZSB0aGlzIHdoZW4gaXQgYmVjb21lcyB1bm5lY2Vzc2FyeS4KLSAg
YXV0byBpdCA9IHN0ZDo6ZmluZF9pZihwYXJhbWV0ZXJzLmNvZGVjcy5iZWdpbigpLCBwYXJhbWV0
ZXJzLmNvZGVjcy5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZmVycmVkX3Bh
eWxvYWRfdHlwZV0oY29uc3QgUnRwQ29kZWNQYXJhbWV0ZXJzJiBwKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcC5wYXlsb2FkX3R5cGUgPT0gcHJlZmVycmVkX3BheWxvYWRf
dHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgUnRwQ29kZWNQYXJhbWV0ZXJz
IHByZWZlcnJlZCA9ICppdDsKLSAgcGFyYW1ldGVycy5jb2RlY3MuZXJhc2UoaXQpOwotICBwYXJh
bWV0ZXJzLmNvZGVjcy5pbnNlcnQocGFyYW1ldGVycy5jb2RlY3MuYmVnaW4oKSwgcHJlZmVycmVk
KTsKLQotICAvLyBJbnRlbnRpb25hbGx5IGxlYXZlIG91dCBTU1JDIHNvIG9uZSdzIGNob3NlbiBh
dXRvbWF0aWNhbGx5LgotICBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgZW5jb2Rpbmc7Ci0gIGVuY29k
aW5nLmNvZGVjX3BheWxvYWRfdHlwZS5lbXBsYWNlKHByZWZlcnJlZF9wYXlsb2FkX3R5cGUpOwot
ICBlbmNvZGluZy5mZWMuZW1wbGFjZShGZWNNZWNoYW5pc206OlJFRF9BTkRfVUxQRkVDKTsKLSAg
Ly8gV2lsbCBjcmVhdGUgZGVmYXVsdCBSdHhQYXJhbWV0ZXJzLCB3aXRoIHVuc2V0IFNTUkMuCi0g
IGVuY29kaW5nLnJ0eC5lbXBsYWNlKCk7Ci0gIC8vIDEwMCBrYnBzLgotICBlbmNvZGluZy5tYXhf
Yml0cmF0ZV9icHMuZW1wbGFjZSgxMDAwMDApOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5wdXNo
X2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0KLSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5z
aW9ucy5lbXBsYWNlX2JhY2soCi0gICAgICAidXJuOmlldGY6cGFyYW1zOnJ0cC1oZHJleHQ6dG9m
ZnNldCIsIDIpOwotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygK
LSAgICAgICJodHRwOi8vd3d3LndlYnJ0Yy5vcmcvZXhwZXJpbWVudHMvcnRwLWhkcmV4dC9hYnMt
c2VuZC10aW1lIiwgMyk7Ci0gIHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9i
YWNrKCJ1cm46M2dwcDp2aWRlby1vcmllbnRhdGlvbiIsIDQpOwotICBwYXJhbWV0ZXJzLmhlYWRl
cl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygKLSAgICAgICJodHRwOi8vd3d3LmlldGYub3JnL2lk
LyIKLSAgICAgICJkcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0ZW5zaW9u
cy0wMSIsCi0gICAgICA1KTsKLSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNl
X2JhY2soCi0gICAgICAiaHR0cDovL3d3dy53ZWJydGMub3JnL2V4cGVyaW1lbnRzL3J0cC1oZHJl
eHQvcGxheW91dC1kZWxheSIsIDYpOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotUnRwUGFy
YW1ldGVycyBNYWtlRnVsbFZwOFBhcmFtZXRlcnMoKSB7Ci0gIHJldHVybiBNYWtlRnVsbFZpZGVv
UGFyYW1ldGVycygxMDApOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VGdWxsVnA5UGFyYW1ldGVy
cygpIHsKLSAgcmV0dXJuIE1ha2VGdWxsVmlkZW9QYXJhbWV0ZXJzKDEwMSk7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL29ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdlNTFlMTQwODM3ZDRiOWM0OTZjNTZlM2M0OTg5
NTE5Nzk3MDU4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3Rlc3RydHBw
YXJhbWV0ZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogIENvcHly
aWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
LSAqLwotCi0jaWZuZGVmIE9SVENfVEVTVFJUUFBBUkFNRVRFUlNfSF8KLSNkZWZpbmUgT1JUQ19U
RVNUUlRQUEFSQU1FVEVSU19IXwotCi0jaW5jbHVkZSAiYXBpL29ydGMvcnRwdHJhbnNwb3J0aW50
ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKLQotbmFtZXNwYWNlIHdl
YnJ0YyB7Ci0KLS8vIEhlbHBlciBtZXRob2RzIHRvIGNyZWF0ZSBSdHBQYXJhbWV0ZXJzIHRvIHVz
ZSBmb3Igc2VuZGluZy9yZWNlaXZpbmcuCi0vLwotLy8gIk1ha2VNaW5pbWFsIiBtZXRob2RzIGNv
bnRhaW4gdGhlIG1pbmltYWwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZvciBhbgotLy8gUnRwU2Vu
ZGVyIG9yIFJ0cFJlY2VpdmVyIHRvIGZ1bmN0aW9uLiBUaGUgIk1ha2VGdWxsIiBtZXRob2RzIGFy
ZSB0aGUKLS8vIG9wcG9zaXRlLCBhbmQgaW5jbHVkZSBhbGwgZmVhdHVyZXMgdGhhdCB3b3VsZCBu
b3JtYWxseSBiZSBvZmZlcmVkIGJ5IGEKLS8vIFBlZXJDb25uZWN0aW9uLCBhbmQgaW4gc29tZSBj
YXNlcyBhZGRpdGlvbmFsIG9uZXMuCi0vLwotLy8gVGhlc2UgbWV0aG9kcyBhcmUgaW50ZW5kZWQg
dG8gYmUgdXNlZCBmb3IgZW5kLXRvLWVuZCB0ZXN0aW5nIChzdWNoIGFzIGluCi0vLyBvcnRjZmFj
dG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MpLCBvciB1bml0IHRlc3RpbmcgdGhhdCBkb2Vzbid0IGNh
cmUgYWJvdXQgdGhlCi0vLyBzcGVjaWZpYyBjb250ZW50cyBvZiB0aGUgcGFyYW1ldGVycy4gVGVz
dHMgc2hvdWxkIE5PVCBhc3N1bWUgdGhhdCB0aGVzZQotLy8gbWV0aG9kcyB3aWxsIG5vdCBjaGFu
Z2U7IHRlc3RzIHRoYXQgYXJlIHRlc3RpbmcgdGhhdCBhIHNwZWNpZmljIHZhbHVlIGluIHRoZQot
Ly8gcGFyYW1ldGVycyBpcyBhcHBsaWVkIHByb3Blcmx5IHNob3VsZCBjb25zdHJ1Y3QgdGhlIHBh
cmFtZXRlcnMgaW4gdGhlIHRlc3QKLS8vIGl0c2VsZi4KLQotaW5saW5lIFJ0cFRyYW5zcG9ydFBh
cmFtZXRlcnMgTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCkgewotICBSdHBUcmFuc3BvcnRQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRlcnMucnRjcC5tdXggPSB0cnVlOwotICByZXR1cm4g
cGFyYW1ldGVyczsKLX0KLQotUnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJz
KCk7Ci1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsSXNhY1BhcmFtZXRlcnMoKTsKLVJ0cFBhcmFt
ZXRlcnMgTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVyc1dpdGhTc3JjKHVpbnQzMl90IHNzcmMpOwot
UnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbElzYWNQYXJhbWV0ZXJzV2l0aFNzcmModWludDMyX3Qg
c3NyYyk7Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCk7Ci1SdHBQ
YXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA5UGFyYW1ldGVycygpOwotUnRwUGFyYW1ldGVycyBNYWtl
TWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoU3NyYyh1aW50MzJfdCBzc3JjKTsKLVJ0cFBhcmFtZXRl
cnMgTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0aFNzcmModWludDMyX3Qgc3NyYyk7Ci0KLS8v
IFdpbGwgY3JlYXRlIGFuIGVuY29kaW5nIHdpdGggbm8gU1NSQyAobWVhbmluZyAibWF0Y2ggZmly
c3QgU1NSQyBzZWVuIiBmb3IgYQotLy8gcmVjZWl2ZXIsIG9yICJwaWNrIG9uZSBhdXRvbWF0aWNh
bGx5IiBmb3IgYSBzZW5kZXIpLgotUnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbE9wdXNQYXJhbWV0
ZXJzV2l0aE5vU3NyYygpOwotUnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbElzYWNQYXJhbWV0ZXJz
V2l0aE5vU3NyYygpOwotUnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnNXaXRo
Tm9Tc3JjKCk7Ci1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA5UGFyYW1ldGVyc1dpdGhOb1Nz
cmMoKTsKLQotLy8gTWFrZSBhdWRpbyBwYXJhbWV0ZXJzIHdpdGggYWxsIHRoZSBhdmFpbGFibGUg
cHJvcGVydGllcyBjb25maWd1cmVkIGFuZAotLy8gZmVhdHVyZXMgdXNlZCwgYW5kIHdpdGggbXVs
dGlwbGUgY29kZWNzIG9mZmVyZWQuIE9idGFpbmVkIGJ5IHRha2luZyBhCi0vLyBzbmFwc2hvdCBv
ZiBhIGRlZmF1bHQgUGVlckNvbm5lY3Rpb24gb2ZmZXIgKGFuZCBhZGRpbmcgb3RoZXIgdGhpbmdz
LCBsaWtlCi0vLyBiaXRyYXRlIGxpbWl0KS4KLVJ0cFBhcmFtZXRlcnMgTWFrZUZ1bGxPcHVzUGFy
YW1ldGVycygpOwotUnRwUGFyYW1ldGVycyBNYWtlRnVsbElzYWNQYXJhbWV0ZXJzKCk7Ci0KLS8v
IE1ha2UgdmlkZW8gcGFyYW1ldGVycyB3aXRoIGFsbCB0aGUgYXZhaWxhYmxlIHByb3BlcnRpZXMg
Y29uZmlndXJlZCBhbmQKLS8vIGZlYXR1cmVzIHVzZWQsIGFuZCB3aXRoIG11bHRpcGxlIGNvZGVj
cyBvZmZlcmVkLiBPYnRhaW5lZCBieSB0YWtpbmcgYQotLy8gc25hcHNob3Qgb2YgYSBkZWZhdWx0
IFBlZXJDb25uZWN0aW9uIG9mZmVyIChhbmQgYWRkaW5nIG90aGVyIHRoaW5ncywgbGlrZQotLy8g
Yml0cmF0ZSBsaW1pdCkuCi1SdHBQYXJhbWV0ZXJzIE1ha2VGdWxsVnA4UGFyYW1ldGVycygpOwot
UnRwUGFyYW1ldGVycyBNYWtlRnVsbFZwOVBhcmFtZXRlcnMoKTsKLQotfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwotCi0jZW5kaWYgIC8vIE9SVENfVEVTVFJUUFBBUkFNRVRFUlNfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9CVUlMRC5n
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9CVUlMRC5n
bgppbmRleCAyZDM1MWJiMGZhMmNmZjAzODkyM2JmNjEyN2U3YmYzN2U1ZmJiMWE3Li4yOWU2MzNj
NWQyMjdmOTI0MzUwYzk0YjJiNWUzNTFhOTcxOGFmZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvQlVJTEQuZ24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL0JVSUxELmduCkBAIC0yOSw2
ICsyOSw4IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX3AycCIpIHsKICAgICAiYmFzZS9kdGxz
dHJhbnNwb3J0LmgiLAogICAgICJiYXNlL2R0bHN0cmFuc3BvcnRpbnRlcm5hbC5jYyIsCiAgICAg
ImJhc2UvZHRsc3RyYW5zcG9ydGludGVybmFsLmgiLAorICAgICJiYXNlL2ljZWNyZWRlbnRpYWxz
aXRlcmF0b3IuY2MiLAorICAgICJiYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCIsCiAgICAg
ImJhc2UvaWNldHJhbnNwb3J0aW50ZXJuYWwuY2MiLAogICAgICJiYXNlL2ljZXRyYW5zcG9ydGlu
dGVybmFsLmgiLAogICAgICJiYXNlL21kbnNfbWVzc2FnZS5jYyIsCkBAIC03NCw4ICs3Niw2IEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX3AycCIpIHsKICAgICAiYmFzZS90dXJucG9ydC5jYyIs
CiAgICAgImJhc2UvdHVybnBvcnQuaCIsCiAgICAgImJhc2UvdWRwcG9ydC5oIiwKLSAgICAiYmFz
ZS91ZHB0cmFuc3BvcnQuY2MiLAotICAgICJiYXNlL3VkcHRyYW5zcG9ydC5oIiwKICAgICAiY2xp
ZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5jYyIsCiAgICAgImNsaWVudC9iYXNpY3BvcnRhbGxvY2F0
b3IuaCIsCiAgICAgImNsaWVudC9yZWxheXBvcnRmYWN0b3J5aW50ZXJmYWNlLmgiLApAQCAtODYs
MTcgKzg2LDIwIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX3AycCIpIHsKICAgZGVwcyA9IFsK
ICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAgICIuLi9hcGk6
b3J0Y19hcGkiLAorICAgICIuLi9hcGkvdHJhbnNwb3J0OmVudW1zIiwKICAgICAiLi4vbG9nZ2lu
ZzppY2VfbG9nIiwKICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vcnRjX2Jhc2U6
cnRjX2Jhc2UiLAogICAgICIuLi9ydGNfYmFzZTpzYWZlX21pbm1heCIsCiAgICAgIi4uL3J0Y19i
YXNlOnN0cmluZ3V0aWxzIiwKICAgICAiLi4vcnRjX2Jhc2U6d2Vha19wdHIiLAorICAgICIuLi9y
dGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5
L2Jhc2U2NCIsCiAgICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3QiLAogICAgICIu
Li9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6
bWV0cmljcyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIApAQCAtMTM3LDYg
KzE0MCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpydGNfcDJwIiwKICAg
ICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgICAiLi4vYXBp
Om9ydGNfYXBpIiwKKyAgICAgICIuLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgICAgICIu
Li9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92
ZWQiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKQEAgLTE1Myw2
ICsxNTcsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJiYXNlL2FzeW5jc3R1
bnRjcHNvY2tldF91bml0dGVzdC5jYyIsCiAgICAgICAiYmFzZS9iYXNpY2FzeW5jcmVzb2x2ZXJm
YWN0b3J5X3VuaXR0ZXN0LmNjIiwKICAgICAgICJiYXNlL2R0bHN0cmFuc3BvcnRfdW5pdHRlc3Qu
Y2MiLAorICAgICAgImJhc2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvcl91bml0dGVzdC5jYyIsCiAg
ICAgICAiYmFzZS9tZG5zX21lc3NhZ2VfdW5pdHRlc3QuY2MiLAogICAgICAgImJhc2UvcDJwdHJh
bnNwb3J0Y2hhbm5lbF91bml0dGVzdC5jYyIsCiAgICAgICAiYmFzZS9wYWNrZXRsb3NzZXN0aW1h
dG9yX3VuaXR0ZXN0LmNjIiwKQEAgLTE3MCw3ICsxNzUsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICAgICJiYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uZmFjdG9yeV91bml0dGVzdC5j
YyIsCiAgICAgICAiYmFzZS90dXJucG9ydF91bml0dGVzdC5jYyIsCiAgICAgICAiYmFzZS90dXJu
c2VydmVyX3VuaXR0ZXN0LmNjIiwKLSAgICAgICJiYXNlL3VkcHRyYW5zcG9ydF91bml0dGVzdC5j
YyIsCiAgICAgICAiY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYyIsCiAgICAg
XQogICAgIGRlcHMgPSBbCkBAIC0xNzgsMTAgKzE4MiwxMiBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICAgICI6cnRjX3AycCIsCiAgICAgICAiLi4vYXBpOm9ydGNfYXBpIiwKICAgICAg
ICIuLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICAgIi4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMi
LAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMi
LAogICAgICAgIi4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKKyAgICAgICIuLi9ydGNfYmFzZTp0
ZXN0Y2xpZW50IiwKICAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgICAi
Li4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCkBAIC0yMDYs
NiArMjEyLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJsaWJzdHVucHJvYmVyIikgewogICAgICIu
Ljp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vcnRj
X2Jhc2U6cnRjX2Jhc2UiLAorICAgICIuLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAg
IF0KIH0KIApAQCAtMjIxLDYgKzIyOCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAg
ICAgIjpwMnBfdGVzdF91dGlscyIsCiAgICAgICAiOnJ0Y19wMnAiLAogICAgICAgIi4uL3J0Y19i
YXNlOmNoZWNrcyIsCisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3Rz
X3V0aWxzIiwKICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL09XTkVSUyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9PV05FUlMKaW5kZXggMThmNjA0NGIx
NjNkODVmOTJmMDFkNzRmOTA2ODQyMmVhMjFkOTAyNy4uODRhMTllZDU5NmNjZWQzNWQzZGNiNzAz
MWVlOGQ5YzA1OWNhZmI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvT1dORVJTCkBAIC02LDYgKzYsOSBAQCBtZmxvZG1hbkB3ZWJy
dGMub3JnCiBwZXJrakB3ZWJydGMub3JnCiBwdGhhdGNoZXJAd2VicnRjLm9yZwogcWluZ3NpQHdl
YnJ0Yy5vcmcKK2plcm9lbmRiQHdlYnJ0Yy5vcmcKK2VtYWRvbWFyYUB3ZWJydGMub3JnCitzdGV2
ZWFudG9uQHdlYnJ0Yy5vcmcKIHNlcmdleXVAY2hyb21pdW0ub3JnCiB0b21taUB3ZWJydGMub3Jn
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL2FzeW5jc3R1bnRjcHNvY2tldC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2FzeW5jc3R1bnRjcHNvY2tldC5jYwppbmRleCA4
YmI3OTZmZDFkNTljYjU5Zjg5MDQ3NTFlZTJiMWJjMGJlNDgyYTI2Li5kMDE4NWMzZWIyOTBlZTg3
MmI5MzMwYzhiMmEwNzUxNzYyMjA5NDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9hc3luY3N0dW50Y3Bzb2NrZXQuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvYXN5
bmNzdHVudGNwc29ja2V0LmNjCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBBc3luY1N0dW5UQ1BT
b2NrZXQ6OlByb2Nlc3NJbnB1dChjaGFyKiBkYXRhLCBzaXplX3QqIGxlbikgewogICAgIH0KIAog
ICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwgZXhwZWN0ZWRfcGt0X2xlbiwgcmVtb3Rl
X2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpOwor
ICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaW1lTWljcm9zKCkpOwogCiAgICAgKmxlbiAtPSBh
Y3R1YWxfbGVuZ3RoOwogICAgIGlmICgqbGVuID4gMCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvYXN5bmNzdHVudGNwc29j
a2V0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvYXN5bmNzdHVudGNwc29ja2V0X3VuaXR0ZXN0LmNjCmluZGV4IGRlOTU0MTk0
MWY0MThkYTE0NTgxZTE0Nzg4YjljYjI4ZTg3YThhMTEuLmI1ZmExNGVkYzE0YmY4ZjQzNmQ2YTYy
YjMzNWU2ZTFiMWQ1NTM0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2FzeW5jc3R1bnRjcHNvY2tldF91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9h
c3luY3N0dW50Y3Bzb2NrZXRfdW5pdHRlc3QuY2MKQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgQXN5
bmNTdHVuVENQU29ja2V0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVu
LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9h
ZGRyLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90
aW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1l
X3VzICovKSB7CiAgICAgcmVjdl9wYWNrZXRzXy5wdXNoX2JhY2soc3RkOjpzdHJpbmcoZGF0YSwg
bGVuKSk7CiAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFuc3BvcnQuY2MKaW5kZXgg
MzE0ZjYzY2U3NGY4NjVmMWFmMzQ2OTI4YjVkNGUxMTdkNmJmYWYzNC4uOTdjNmIxM2ZiN2E3YjBk
MWIzYTgwNzY5Y2ZiM2EyNTI5OWZkMDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJh
bnNwb3J0LmNjCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvZHNjcC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdl
cXVldWUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0u
aCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKQEAgLTExMywzNyArMTE0LDIzIEBAIHZv
aWQgU3RyZWFtSW50ZXJmYWNlQ2hhbm5lbDo6Q2xvc2UoKSB7CiAgIHN0YXRlXyA9IHJ0Yzo6U1Nf
Q0xPU0VEOwogfQogCi1EdGxzVHJhbnNwb3J0OjpEdGxzVHJhbnNwb3J0KEljZVRyYW5zcG9ydElu
dGVybmFsKiBpY2VfdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKQotICAgIDogdHJhbnNwb3J0X25h
bWVfKGljZV90cmFuc3BvcnQtPnRyYW5zcG9ydF9uYW1lKCkpLAotICAgICAgY29tcG9uZW50Xyhp
Y2VfdHJhbnNwb3J0LT5jb21wb25lbnQoKSksCi0gICAgICBpY2VfdHJhbnNwb3J0XyhpY2VfdHJh
bnNwb3J0KSwKLSAgICAgIGRvd253YXJkXyhOVUxMKSwKLSAgICAgIHNydHBfY2lwaGVyc18oR2V0
U3VwcG9ydGVkRHRsc1NydHBDcnlwdG9TdWl0ZXMoY3J5cHRvX29wdGlvbnMpKSwKLSAgICAgIHNz
bF9tYXhfdmVyc2lvbl8ocnRjOjpTU0xfUFJPVE9DT0xfRFRMU18xMiksCi0gICAgICBjcnlwdG9f
b3B0aW9uc18oY3J5cHRvX29wdGlvbnMpIHsKLSAgUlRDX0RDSEVDSyhpY2VfdHJhbnNwb3J0Xyk7
Ci0gIENvbm5lY3RUb0ljZVRyYW5zcG9ydCgpOwotfQotCiBEdGxzVHJhbnNwb3J0OjpEdGxzVHJh
bnNwb3J0KAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJY2VUcmFuc3BvcnRJbnRlcm5hbD4gaWNlX3Ry
YW5zcG9ydCwKLSAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKQor
ICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpCiAgICAgOiB0
cmFuc3BvcnRfbmFtZV8oaWNlX3RyYW5zcG9ydC0+dHJhbnNwb3J0X25hbWUoKSksCiAgICAgICBj
b21wb25lbnRfKGljZV90cmFuc3BvcnQtPmNvbXBvbmVudCgpKSwKLSAgICAgIGljZV90cmFuc3Bv
cnRfKGljZV90cmFuc3BvcnQuZ2V0KCkpLAotICAgICAgb3duZWRfaWNlX3RyYW5zcG9ydF8oc3Rk
Ojptb3ZlKGljZV90cmFuc3BvcnQpKSwKKyAgICAgIGljZV90cmFuc3BvcnRfKHN0ZDo6bW92ZShp
Y2VfdHJhbnNwb3J0KSksCiAgICAgICBkb3dud2FyZF8oTlVMTCksCi0gICAgICBzcnRwX2NpcGhl
cnNfKEdldFN1cHBvcnRlZER0bHNTcnRwQ3J5cHRvU3VpdGVzKGNyeXB0b19vcHRpb25zKSksCisg
ICAgICBzcnRwX2NpcGhlcnNfKGNyeXB0b19vcHRpb25zLkdldFN1cHBvcnRlZER0bHNTcnRwQ3J5
cHRvU3VpdGVzKCkpLAogICAgICAgc3NsX21heF92ZXJzaW9uXyhydGM6OlNTTF9QUk9UT0NPTF9E
VExTXzEyKSwKICAgICAgIGNyeXB0b19vcHRpb25zXyhjcnlwdG9fb3B0aW9ucykgewotICBSVENf
RENIRUNLKG93bmVkX2ljZV90cmFuc3BvcnRfKTsKKyAgUlRDX0RDSEVDSyhpY2VfdHJhbnNwb3J0
Xyk7CiAgIENvbm5lY3RUb0ljZVRyYW5zcG9ydCgpOwogfQogCiBEdGxzVHJhbnNwb3J0Ojp+RHRs
c1RyYW5zcG9ydCgpID0gZGVmYXVsdDsKIAotY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBEdGxz
VHJhbnNwb3J0OjpjcnlwdG9fb3B0aW9ucygpIGNvbnN0IHsKK2NvbnN0IHdlYnJ0Yzo6Q3J5cHRv
T3B0aW9ucyYgRHRsc1RyYW5zcG9ydDo6Y3J5cHRvX29wdGlvbnMoKSBjb25zdCB7CiAgIHJldHVy
biBjcnlwdG9fb3B0aW9uc187CiB9CiAKQEAgLTMzNSw3ICszMjIsOCBAQCBib29sIER0bHNUcmFu
c3BvcnQ6OkV4cG9ydEtleWluZ01hdGVyaWFsKGNvbnN0IHN0ZDo6c3RyaW5nJiBsYWJlbCwKIAog
Ym9vbCBEdGxzVHJhbnNwb3J0OjpTZXR1cER0bHMoKSB7CiAgIFJUQ19EQ0hFQ0soZHRsc19yb2xl
Xyk7Ci0gIFN0cmVhbUludGVyZmFjZUNoYW5uZWwqIGRvd253YXJkID0gbmV3IFN0cmVhbUludGVy
ZmFjZUNoYW5uZWwoaWNlX3RyYW5zcG9ydF8pOworICBTdHJlYW1JbnRlcmZhY2VDaGFubmVsKiBk
b3dud2FyZCA9CisgICAgICBuZXcgU3RyZWFtSW50ZXJmYWNlQ2hhbm5lbChpY2VfdHJhbnNwb3J0
Xy5nZXQoKSk7CiAKICAgZHRsc18ucmVzZXQocnRjOjpTU0xTdHJlYW1BZGFwdGVyOjpDcmVhdGUo
ZG93bndhcmQpKTsKICAgaWYgKCFkdGxzXykgewpAQCAtNDMxLDcgKzQxOSw3IEBAIGludCBEdGxz
VHJhbnNwb3J0OjpTZW5kUGFja2V0KGNvbnN0IGNoYXIqIGRhdGEsCiB9CiAKIEljZVRyYW5zcG9y
dEludGVybmFsKiBEdGxzVHJhbnNwb3J0OjppY2VfdHJhbnNwb3J0KCkgewotICByZXR1cm4gaWNl
X3RyYW5zcG9ydF87CisgIHJldHVybiBpY2VfdHJhbnNwb3J0Xy5nZXQoKTsKIH0KIAogYm9vbCBE
dGxzVHJhbnNwb3J0OjpJc0R0bHNDb25uZWN0ZWQoKSB7CkBAIC00ODgsNyArNDc2LDcgQEAgdm9p
ZCBEdGxzVHJhbnNwb3J0OjpDb25uZWN0VG9JY2VUcmFuc3BvcnQoKSB7CiAvLyAgICAgICBpbXBs
IGFnYWluCiB2b2lkIER0bHNUcmFuc3BvcnQ6Ok9uV3JpdGFibGVTdGF0ZShydGM6OlBhY2tldFRy
YW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQpIHsKICAgUlRDX0RDSEVDS19SVU5fT04oJnRocmVh
ZF9jaGVja2VyXyk7Ci0gIFJUQ19EQ0hFQ0sodHJhbnNwb3J0ID09IGljZV90cmFuc3BvcnRfKTsK
KyAgUlRDX0RDSEVDSyh0cmFuc3BvcnQgPT0gaWNlX3RyYW5zcG9ydF8uZ2V0KCkpOwogICBSVENf
TE9HKExTX1ZFUkJPU0UpIDw8IFRvU3RyaW5nKCkKICAgICAgICAgICAgICAgICAgICAgICA8PCAi
OiBpY2VfdHJhbnNwb3J0IHdyaXRhYmxlIHN0YXRlIGNoYW5nZWQgdG8gIgogICAgICAgICAgICAg
ICAgICAgICAgIDw8IGljZV90cmFuc3BvcnRfLT53cml0YWJsZSgpOwpAQCAtNTIwLDcgKzUwOCw3
IEBAIHZvaWQgRHRsc1RyYW5zcG9ydDo6T25Xcml0YWJsZVN0YXRlKHJ0Yzo6UGFja2V0VHJhbnNw
b3J0SW50ZXJuYWwqIHRyYW5zcG9ydCkgewogCiB2b2lkIER0bHNUcmFuc3BvcnQ6Ok9uUmVjZWl2
aW5nU3RhdGUocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0KSB7CiAgIFJU
Q19EQ0hFQ0tfUlVOX09OKCZ0aHJlYWRfY2hlY2tlcl8pOwotICBSVENfRENIRUNLKHRyYW5zcG9y
dCA9PSBpY2VfdHJhbnNwb3J0Xyk7CisgIFJUQ19EQ0hFQ0sodHJhbnNwb3J0ID09IGljZV90cmFu
c3BvcnRfLmdldCgpKTsKICAgUlRDX0xPRyhMU19WRVJCT1NFKSA8PCBUb1N0cmluZygpCiAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIjogaWNlX3RyYW5zcG9ydCAiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgInJlY2VpdmluZyBzdGF0ZSBjaGFuZ2VkIHRvICIKQEAgLTUzNCwxNSArNTIyLDE1
IEBAIHZvaWQgRHRsc1RyYW5zcG9ydDo6T25SZWNlaXZpbmdTdGF0ZShydGM6OlBhY2tldFRyYW5z
cG9ydEludGVybmFsKiB0cmFuc3BvcnQpIHsKIHZvaWQgRHRsc1RyYW5zcG9ydDo6T25SZWFkUGFj
a2V0KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykgewogICBSVENfRENIRUNLX1JV
Tl9PTigmdGhyZWFkX2NoZWNrZXJfKTsKLSAgUlRDX0RDSEVDSyh0cmFuc3BvcnQgPT0gaWNlX3Ry
YW5zcG9ydF8pOworICBSVENfRENIRUNLKHRyYW5zcG9ydCA9PSBpY2VfdHJhbnNwb3J0Xy5nZXQo
KSk7CiAgIFJUQ19EQ0hFQ0soZmxhZ3MgPT0gMCk7CiAKICAgaWYgKCFkdGxzX2FjdGl2ZV8pIHsK
ICAgICAvLyBOb3QgZG9pbmcgRFRMUy4KLSAgICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEs
IHNpemUsIHBhY2tldF90aW1lLCAwKTsKKyAgICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEs
IHNpemUsIHBhY2tldF90aW1lX3VzLCAwKTsKICAgICByZXR1cm47CiAgIH0KIApAQCAtNjA1LDcg
KzU5Myw3IEBAIHZvaWQgRHRsc1RyYW5zcG9ydDo6T25SZWFkUGFja2V0KHJ0Yzo6UGFja2V0VHJh
bnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgICAgICAgUlRDX0RDSEVDSyghc3J0cF9jaXBo
ZXJzXy5lbXB0eSgpKTsKIAogICAgICAgICAvLyBTaWduYWwgdGhpcyB1cHdhcmRzIGFzIGEgYnlw
YXNzIHBhY2tldC4KLSAgICAgICAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBkYXRhLCBzaXplLCBw
YWNrZXRfdGltZSwgUEZfU1JUUF9CWVBBU1MpOworICAgICAgICBTaWduYWxSZWFkUGFja2V0KHRo
aXMsIGRhdGEsIHNpemUsIHBhY2tldF90aW1lX3VzLCBQRl9TUlRQX0JZUEFTUyk7CiAgICAgICB9
CiAgICAgICBicmVhazsKICAgICBjYXNlIERUTFNfVFJBTlNQT1JUX0ZBSUxFRDoKQEAgLTY1MSw3
ICs2MzksNyBAQCB2b2lkIER0bHNUcmFuc3BvcnQ6Ok9uRHRsc0V2ZW50KHJ0Yzo6U3RyZWFtSW50
ZXJmYWNlKiBkdGxzLCBpbnQgc2lnLCBpbnQgZXJyKSB7CiAgICAgZG8gewogICAgICAgcmV0ID0g
ZHRsc18tPlJlYWQoYnVmLCBzaXplb2YoYnVmKSwgJnJlYWQsICZyZWFkX2Vycm9yKTsKICAgICAg
IGlmIChyZXQgPT0gcnRjOjpTUl9TVUNDRVNTKSB7Ci0gICAgICAgIFNpZ25hbFJlYWRQYWNrZXQo
dGhpcywgYnVmLCByZWFkLCBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCksIDApOworICAgICAgICBT
aWduYWxSZWFkUGFja2V0KHRoaXMsIGJ1ZiwgcmVhZCwgcnRjOjpUaW1lTWljcm9zKCksIDApOwog
ICAgICAgfSBlbHNlIGlmIChyZXQgPT0gcnRjOjpTUl9FT1MpIHsKICAgICAgICAgLy8gUmVtb3Rl
IHBlZXIgc2h1dCBkb3duIHRoZSBhc3NvY2lhdGlvbiB3aXRoIG5vIGVycm9yLgogICAgICAgICBS
VENfTE9HKExTX0lORk8pIDw8IFRvU3RyaW5nKCkgPDwgIjogRFRMUyB0cmFuc3BvcnQgY2xvc2Vk
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL2R0bHN0cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFuc3BvcnQuaAppbmRleCA0NTZmMzc1YTEwNzA4
MDdlN2E3YjI3ODAwMWE3NTljYWJmYjFjMTBhLi5jZTk1ODAzYWVjYjIxM2RlNzNlMzQ4NDRhYjRi
Y2QzM2M0NDA0MmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydC5oCkBAIC0x
NSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2lu
Y2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgogI2luY2x1ZGUgInAycC9iYXNlL2R0
bHN0cmFuc3BvcnRpbnRlcm5hbC5oIgogI2luY2x1ZGUgInAycC9iYXNlL2ljZXRyYW5zcG9ydGlu
dGVybmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCkBAIC05NCwxNSArOTUsMTIg
QEAgY2xhc3MgRHRsc1RyYW5zcG9ydCA6IHB1YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJuYWwgewog
ICAvLwogICAvLyB8Y3J5cHRvX29wdGlvbnN8IGFyZSB0aGUgb3B0aW9ucyB1c2VkIGZvciB0aGUg
RFRMUyBoYW5kc2hha2UuIFRoaXMgYWZmZWN0cwogICAvLyB3aGV0aGVyIEdDTSBjcnlwdG8gc3Vp
dGVzIGFyZSBuZWdvdGlhdGVkLgotICAvLyBUT0RPKHpoaWh1YW5nKTogUmVtb3ZlIHRoaXMgb25j
ZSB3ZSBzd2l0Y2ggdG8gSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIuCi0gIGV4cGxpY2l0IER0bHNU
cmFuc3BvcnQoSWNlVHJhbnNwb3J0SW50ZXJuYWwqIGljZV90cmFuc3BvcnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucyk7
CiAgIGV4cGxpY2l0IER0bHNUcmFuc3BvcnQoc3RkOjp1bmlxdWVfcHRyPEljZVRyYW5zcG9ydElu
dGVybmFsPiBpY2VfdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpOwogCiAgIH5E
dGxzVHJhbnNwb3J0KCkgb3ZlcnJpZGU7CiAKLSAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBj
cnlwdG9fb3B0aW9ucygpIGNvbnN0IG92ZXJyaWRlOworICBjb25zdCB3ZWJydGM6OkNyeXB0b09w
dGlvbnMmIGNyeXB0b19vcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIER0bHNUcmFuc3BvcnRT
dGF0ZSBkdGxzX3N0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0
cmFuc3BvcnRfbmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICBpbnQgY29tcG9uZW50KCkgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0xOTYsNyArMTk0LDcgQEAgY2xhc3MgRHRsc1RyYW5zcG9ydCA6IHB1Ymxp
YyBEdGxzVHJhbnNwb3J0SW50ZXJuYWwgewogICB2b2lkIE9uUmVhZFBhY2tldChydGM6OlBhY2tl
dFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lLAorICAgICAgICAg
ICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cywKICAgICAgICAgICAgICAg
ICAgICAgaW50IGZsYWdzKTsKICAgdm9pZCBPblNlbnRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3Bv
cnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNl
bnRQYWNrZXQmIHNlbnRfcGFja2V0KTsKQEAgLTIyMCw5ICsyMTgsOCBAQCBjbGFzcyBEdGxzVHJh
bnNwb3J0IDogcHVibGljIER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIHN0ZDo6c3RyaW5nIHRy
YW5zcG9ydF9uYW1lXzsKICAgaW50IGNvbXBvbmVudF87CiAgIER0bHNUcmFuc3BvcnRTdGF0ZSBk
dGxzX3N0YXRlXyA9IERUTFNfVFJBTlNQT1JUX05FVzsKLSAgLy8gVW5kZXJseWluZyBpY2VfdHJh
bnNwb3J0LCBub3Qgb3duZWQgYnkgdGhpcyBjbGFzcy4KLSAgSWNlVHJhbnNwb3J0SW50ZXJuYWwq
IGNvbnN0IGljZV90cmFuc3BvcnRfOwotICBzdGQ6OnVuaXF1ZV9wdHI8SWNlVHJhbnNwb3J0SW50
ZXJuYWw+IG93bmVkX2ljZV90cmFuc3BvcnRfOworICAvLyBVbmRlcmx5aW5nIGljZV90cmFuc3Bv
cnQsIG93bmVkIGJ5IHRoaXMgY2xhc3MuCisgIHN0ZDo6dW5pcXVlX3B0cjxJY2VUcmFuc3BvcnRJ
bnRlcm5hbD4gaWNlX3RyYW5zcG9ydF87CiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTFN0cmVh
bUFkYXB0ZXI+IGR0bHNfOyAgLy8gVGhlIERUTFMgc3RyZWFtCiAgIFN0cmVhbUludGVyZmFjZUNo
YW5uZWwqCiAgICAgICBkb3dud2FyZF87ICAvLyBXcmFwcGVyIGZvciBpY2VfdHJhbnNwb3J0Xywg
b3duZWQgYnkgZHRsc18uCkBAIC0yMzEsNyArMjI4LDcgQEAgY2xhc3MgRHRsc1RyYW5zcG9ydCA6
IHB1YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJuYWwgewogICBydGM6OnNjb3BlZF9yZWZwdHI8cnRj
OjpSVENDZXJ0aWZpY2F0ZT4gbG9jYWxfY2VydGlmaWNhdGVfOwogICBhYnNsOjpvcHRpb25hbDxy
dGM6OlNTTFJvbGU+IGR0bHNfcm9sZV87CiAgIHJ0Yzo6U1NMUHJvdG9jb2xWZXJzaW9uIHNzbF9t
YXhfdmVyc2lvbl87Ci0gIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uc187CisgIHdl
YnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uc187CiAgIHJ0Yzo6QnVmZmVyIHJlbW90
ZV9maW5nZXJwcmludF92YWx1ZV87CiAgIHN0ZDo6c3RyaW5nIHJlbW90ZV9maW5nZXJwcmludF9h
bGdvcml0aG1fOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydF91
bml0dGVzdC5jYwppbmRleCAzY2Y0MjNlODUxM2NkZjlmNzg0YTczZjY3OWRjNTFmNTFhNmNmZDky
Li45M2YzZGEzMzdkMzAzMDg0ZjA3YmY5MGFhZjNmMmNiNDAzYWFiZjIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJh
bnNwb3J0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFuc3BvcnRfdW5pdHRlc3QuY2MKQEAgLTExLDYgKzEx
LDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHNldD4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAicDJwL2Jhc2UvZHRsc3RyYW5z
cG9ydC5oIgogI2luY2x1ZGUgInAycC9iYXNlL2Zha2VpY2V0cmFuc3BvcnQuaCIKQEAgLTE5LDYg
KzIwLDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9kc2NwLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Z3VuaXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9oZWxwZXJzLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvcnRjY2VydGlmaWNhdGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xhZGFwdGVyLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xz
dHJlYW1hZGFwdGVyLmgiCkBAIC00Nyw4ICs0OSw4IEBAIHZvaWQgU2V0UmVtb3RlRmluZ2VycHJp
bnRGcm9tQ2VydCgKICAgICBEdGxzVHJhbnNwb3J0KiB0cmFuc3BvcnQsCiAgICAgY29uc3QgcnRj
OjpzY29wZWRfcmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+JiBjZXJ0LAogICAgIGJvb2wgbW9k
aWZ5X2RpZ2VzdCA9IGZhbHNlKSB7Ci0gIHJ0Yzo6U1NMRmluZ2VycHJpbnQqIGZpbmdlcnByaW50
ID0KLSAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZShjZXJ0
KTsKKyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMRmluZ2VycHJpbnQ+IGZpbmdlcnByaW50ID0K
KyAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZSgqY2VydCk7
CiAgIGlmIChtb2RpZnlfZGlnZXN0KSB7CiAgICAgKytmaW5nZXJwcmludC0+ZGlnZXN0WzBdOwog
ICB9CkBAIC01Nyw3ICs1OSw2IEBAIHZvaWQgU2V0UmVtb3RlRmluZ2VycHJpbnRGcm9tQ2VydCgK
ICAgICAgIGZpbmdlcnByaW50LT5hbGdvcml0aG0sCiAgICAgICByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihmaW5nZXJwcmludC0+ZGlnZXN0LmRhdGEoKSksCiAgICAgICBmaW5nZXJw
cmludC0+ZGlnZXN0LnNpemUoKSkpOwotICBkZWxldGUgZmluZ2VycHJpbnQ7CiB9CiAKIGNsYXNz
IER0bHNUZXN0Q2xpZW50IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKQEAgLTc2LDE4
ICs3NywxOCBAQCBjbGFzcyBEdGxzVGVzdENsaWVudCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xv
dHM8PiB7CiAgIH0KICAgLy8gU2V0IHVwIGZha2UgSUNFIHRyYW5zcG9ydCBhbmQgcmVhbCBEVExT
IHRyYW5zcG9ydCB1bmRlciB0ZXN0LgogICB2b2lkIFNldHVwVHJhbnNwb3J0cyhJY2VSb2xlIHJv
bGUsIGludCBhc3luY19kZWxheV9tcyA9IDApIHsKLSAgICBmYWtlX2ljZV90cmFuc3BvcnRfLnJl
c2V0KG5ldyBGYWtlSWNlVHJhbnNwb3J0KCJmYWtlIiwgMCkpOwotICAgIGZha2VfaWNlX3RyYW5z
cG9ydF8tPlNldEFzeW5jKHRydWUpOwotICAgIGZha2VfaWNlX3RyYW5zcG9ydF8tPlNldEFzeW5j
RGVsYXkoYXN5bmNfZGVsYXlfbXMpOwotICAgIGZha2VfaWNlX3RyYW5zcG9ydF8tPlNldEljZVJv
bGUocm9sZSk7Ci0gICAgZmFrZV9pY2VfdHJhbnNwb3J0Xy0+U2V0SWNlVGllYnJlYWtlcigocm9s
ZSA9PSBJQ0VST0xFX0NPTlRST0xMSU5HKSA/IDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMik7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEZha2VJY2VUcmFuc3BvcnQ+IGZha2VfaWNlX3RyYW5zcG9ydDsKKyAg
ICBmYWtlX2ljZV90cmFuc3BvcnQucmVzZXQobmV3IEZha2VJY2VUcmFuc3BvcnQoImZha2UiLCAw
KSk7CisgICAgZmFrZV9pY2VfdHJhbnNwb3J0LT5TZXRBc3luYyh0cnVlKTsKKyAgICBmYWtlX2lj
ZV90cmFuc3BvcnQtPlNldEFzeW5jRGVsYXkoYXN5bmNfZGVsYXlfbXMpOworICAgIGZha2VfaWNl
X3RyYW5zcG9ydC0+U2V0SWNlUm9sZShyb2xlKTsKKyAgICBmYWtlX2ljZV90cmFuc3BvcnQtPlNl
dEljZVRpZWJyZWFrZXIoKHJvbGUgPT0gSUNFUk9MRV9DT05UUk9MTElORykgPyAxIDogMik7CiAg
ICAgLy8gSG9vayB0aGUgcmF3IHBhY2tldHMgc28gdGhhdCB3ZSBjYW4gdmVyaWZ5IHRoZXkgYXJl
IGVuY3J5cHRlZC4KLSAgICBmYWtlX2ljZV90cmFuc3BvcnRfLT5TaWduYWxSZWFkUGFja2V0LmNv
bm5lY3QoCisgICAgZmFrZV9pY2VfdHJhbnNwb3J0LT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3Qo
CiAgICAgICAgIHRoaXMsICZEdGxzVGVzdENsaWVudDo6T25GYWtlSWNlVHJhbnNwb3J0UmVhZFBh
Y2tldCk7CiAKLSAgICBkdGxzX3RyYW5zcG9ydF8ucmVzZXQoCi0gICAgICAgIG5ldyBEdGxzVHJh
bnNwb3J0KGZha2VfaWNlX3RyYW5zcG9ydF8uZ2V0KCksIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7
CisgICAgZHRsc190cmFuc3BvcnRfID0gYWJzbDo6bWFrZV91bmlxdWU8RHRsc1RyYW5zcG9ydD4o
CisgICAgICAgIHN0ZDo6bW92ZShmYWtlX2ljZV90cmFuc3BvcnQpLCB3ZWJydGM6OkNyeXB0b09w
dGlvbnMoKSk7CiAgICAgZHRsc190cmFuc3BvcnRfLT5TZXRTc2xNYXhQcm90b2NvbFZlcnNpb24o
c3NsX21heF92ZXJzaW9uXyk7CiAgICAgLy8gTm90ZTogQ2VydGlmaWNhdGUgbWF5IGJlIG51bGwg
aGVyZSBpZiB0ZXN0aW5nIHBhc3N0aHJvdWdoLgogICAgIGR0bHNfdHJhbnNwb3J0Xy0+U2V0TG9j
YWxDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZV8pOwpAQCAtOTksMTMgKzEwMCwxNiBAQCBjbGFzcyBE
dGxzVGVzdENsaWVudCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgIHRo
aXMsICZEdGxzVGVzdENsaWVudDo6T25UcmFuc3BvcnRTZW50UGFja2V0KTsKICAgfQogCi0gIEZh
a2VJY2VUcmFuc3BvcnQqIGZha2VfaWNlX3RyYW5zcG9ydCgpIHsgcmV0dXJuIGZha2VfaWNlX3Ry
YW5zcG9ydF8uZ2V0KCk7IH0KKyAgRmFrZUljZVRyYW5zcG9ydCogZmFrZV9pY2VfdHJhbnNwb3J0
KCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGYWtlSWNlVHJhbnNwb3J0Kj4oZHRsc190cmFu
c3BvcnRfLT5pY2VfdHJhbnNwb3J0KCkpOworICB9CiAKICAgRHRsc1RyYW5zcG9ydCogZHRsc190
cmFuc3BvcnQoKSB7IHJldHVybiBkdGxzX3RyYW5zcG9ydF8uZ2V0KCk7IH0KIAogICAvLyBTaW11
bGF0ZSBmYWtlIElDRSB0cmFuc3BvcnRzIGNvbm5lY3RpbmcuCiAgIGJvb2wgQ29ubmVjdChEdGxz
VGVzdENsaWVudCogcGVlciwgYm9vbCBhc3ltbWV0cmljKSB7Ci0gICAgZmFrZV9pY2VfdHJhbnNw
b3J0Xy0+U2V0RGVzdGluYXRpb24ocGVlci0+ZmFrZV9pY2VfdHJhbnNwb3J0KCksIGFzeW1tZXRy
aWMpOworICAgIGZha2VfaWNlX3RyYW5zcG9ydCgpLT5TZXREZXN0aW5hdGlvbihwZWVyLT5mYWtl
X2ljZV90cmFuc3BvcnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXN5bW1ldHJpYyk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIApAQCAtMjMyLDcgKzIzNiw3
IEBAIGNsYXNzIER0bHNUZXN0Q2xpZW50IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsK
ICAgdm9pZCBPblRyYW5zcG9ydFJlYWRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5h
bCogdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBk
YXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3Rp
bWVfdXMgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykgewogICAg
IHVpbnQzMl90IHBhY2tldF9udW0gPSAwOwogICAgIEFTU0VSVF9UUlVFKFZlcmlmeVBhY2tldChk
YXRhLCBzaXplLCAmcGFja2V0X251bSkpOwpAQCAtMjU0LDcgKzI1OCw3IEBAIGNsYXNzIER0bHNU
ZXN0Q2xpZW50IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgdm9pZCBPbkZha2VJ
Y2VUcmFuc3BvcnRSZWFkUGFja2V0KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5z
cG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRh
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYg
dGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3Qm
IC8qIHBhY2tldF90aW1lX3VzICovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGZsYWdzKSB7CiAgICAgLy8gRmxhZ3Mgc2hvdWxkbid0IGJlIHNldCBvbiB0aGUgdW5k
ZXJseWluZyBUcmFuc3BvcnQgcGFja2V0cy4KICAgICBBU1NFUlRfRVEoMCwgZmxhZ3MpOwpAQCAt
NTEzLDggKzUxNyw4IEBAIFRFU1RfRihEdGxzVHJhbnNwb3J0VGVzdCwgVGVzdENlcnRpZmljYXRl
c0JlZm9yZUNvbm5lY3QpIHsKICAgLy8gcmVtb3RlIGNlcnRpZmljYXRlLCBiZWNhdXNlIGNvbm5l
Y3Rpb24gaGFzIG5vdCB5ZXQgb2NjdXJyZWQuCiAgIGF1dG8gY2VydGlmaWNhdGUxID0gY2xpZW50
MV8uZHRsc190cmFuc3BvcnQoKS0+R2V0TG9jYWxDZXJ0aWZpY2F0ZSgpOwogICBhdXRvIGNlcnRp
ZmljYXRlMiA9IGNsaWVudDJfLmR0bHNfdHJhbnNwb3J0KCktPkdldExvY2FsQ2VydGlmaWNhdGUo
KTsKLSAgQVNTRVJUX05FKGNlcnRpZmljYXRlMS0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJp
bmcoKSwKLSAgICAgICAgICAgIGNlcnRpZmljYXRlMi0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1T
dHJpbmcoKSk7CisgIEFTU0VSVF9ORShjZXJ0aWZpY2F0ZTEtPkdldFNTTENlcnRpZmljYXRlKCku
VG9QRU1TdHJpbmcoKSwKKyAgICAgICAgICAgIGNlcnRpZmljYXRlMi0+R2V0U1NMQ2VydGlmaWNh
dGUoKS5Ub1BFTVN0cmluZygpKTsKICAgQVNTRVJUX0ZBTFNFKGNsaWVudDFfLmR0bHNfdHJhbnNw
b3J0KCktPkdldFJlbW90ZVNTTENlcnRDaGFpbigpKTsKICAgQVNTRVJUX0ZBTFNFKGNsaWVudDJf
LmR0bHNfdHJhbnNwb3J0KCktPkdldFJlbW90ZVNTTENlcnRDaGFpbigpKTsKIH0KQEAgLTUyNyw4
ICs1MzEsOCBAQCBURVNUX0YoRHRsc1RyYW5zcG9ydFRlc3QsIFRlc3RDZXJ0aWZpY2F0ZXNBZnRl
ckNvbm5lY3QpIHsKICAgLy8gQWZ0ZXIgY29ubmVjdGlvbiwgZWFjaCBzaWRlIGhhcyBhIGRpc3Rp
bmN0IGxvY2FsIGNlcnRpZmljYXRlLgogICBhdXRvIGNlcnRpZmljYXRlMSA9IGNsaWVudDFfLmR0
bHNfdHJhbnNwb3J0KCktPkdldExvY2FsQ2VydGlmaWNhdGUoKTsKICAgYXV0byBjZXJ0aWZpY2F0
ZTIgPSBjbGllbnQyXy5kdGxzX3RyYW5zcG9ydCgpLT5HZXRMb2NhbENlcnRpZmljYXRlKCk7Ci0g
IEFTU0VSVF9ORShjZXJ0aWZpY2F0ZTEtPnNzbF9jZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCks
Ci0gICAgICAgICAgICBjZXJ0aWZpY2F0ZTItPnNzbF9jZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5n
KCkpOworICBBU1NFUlRfTkUoY2VydGlmaWNhdGUxLT5HZXRTU0xDZXJ0aWZpY2F0ZSgpLlRvUEVN
U3RyaW5nKCksCisgICAgICAgICAgICBjZXJ0aWZpY2F0ZTItPkdldFNTTENlcnRpZmljYXRlKCku
VG9QRU1TdHJpbmcoKSk7CiAKICAgLy8gRWFjaCBzaWRlJ3MgcmVtb3RlIGNlcnRpZmljYXRlIGlz
IHRoZSBvdGhlciBzaWRlJ3MgbG9jYWwgY2VydGlmaWNhdGUuCiAgIHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OlNTTENlcnRDaGFpbj4gcmVtb3RlX2NlcnQxID0KQEAgLTUzNiwxMyArNTQwLDEzIEBAIFRF
U1RfRihEdGxzVHJhbnNwb3J0VGVzdCwgVGVzdENlcnRpZmljYXRlc0FmdGVyQ29ubmVjdCkgewog
ICBBU1NFUlRfVFJVRShyZW1vdGVfY2VydDEpOwogICBBU1NFUlRfRVEoMXUsIHJlbW90ZV9jZXJ0
MS0+R2V0U2l6ZSgpKTsKICAgQVNTRVJUX0VRKHJlbW90ZV9jZXJ0MS0+R2V0KDApLlRvUEVNU3Ry
aW5nKCksCi0gICAgICAgICAgICBjZXJ0aWZpY2F0ZTItPnNzbF9jZXJ0aWZpY2F0ZSgpLlRvUEVN
U3RyaW5nKCkpOworICAgICAgICAgICAgY2VydGlmaWNhdGUyLT5HZXRTU0xDZXJ0aWZpY2F0ZSgp
LlRvUEVNU3RyaW5nKCkpOwogICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xDZXJ0Q2hhaW4+IHJl
bW90ZV9jZXJ0MiA9CiAgICAgICBjbGllbnQyXy5kdGxzX3RyYW5zcG9ydCgpLT5HZXRSZW1vdGVT
U0xDZXJ0Q2hhaW4oKTsKICAgQVNTRVJUX1RSVUUocmVtb3RlX2NlcnQyKTsKICAgQVNTRVJUX0VR
KDF1LCByZW1vdGVfY2VydDItPkdldFNpemUoKSk7CiAgIEFTU0VSVF9FUShyZW1vdGVfY2VydDIt
PkdldCgwKS5Ub1BFTVN0cmluZygpLAotICAgICAgICAgICAgY2VydGlmaWNhdGUxLT5zc2xfY2Vy
dGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpKTsKKyAgICAgICAgICAgIGNlcnRpZmljYXRlMS0+R2V0
U1NMQ2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpKTsKIH0KIAogLy8gVGVzdCB0aGF0IHBhY2tl
dHMgYXJlIHJldHJhbnNtaXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBleHBlY3RlZCBzY2hlZHVsZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL2R0bHN0cmFuc3BvcnRpbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydGludGVybmFsLmgKaW5kZXgg
NThkMzZmYTA4ZGJjODNmNjYwNmY0Y2U5OGU4NDQ2ZjI1YWRiZmFhZC4uYTcxMzc0NDlmNGNmMTU5
ODQ0MzM4ZDI1YWFjNDEzMGQ4NTI5OTQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydGludGVybmFsLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
ZHRsc3RyYW5zcG9ydGludGVybmFsLmgKQEAgLTE1LDEwICsxNSwxMCBAQAogI2luY2x1ZGUgPHN0
cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29w
dGlvbnMuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9pY2V0cmFuc3BvcnRpbnRlcm5hbC5oIgogI2lu
Y2x1ZGUgInAycC9iYXNlL3BhY2tldHRyYW5zcG9ydGludGVybmFsLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29k
ZS5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgRHRs
c1RyYW5zcG9ydEludGVybmFsIDogcHVibGljIHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwg
ewogIHB1YmxpYzoKICAgfkR0bHNUcmFuc3BvcnRJbnRlcm5hbCgpIG92ZXJyaWRlOwogCi0gIHZp
cnR1YWwgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucygpIGNvbnN0ID0g
MDsKKyAgdmlydHVhbCBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25z
KCkgY29uc3QgPSAwOwogCiAgIHZpcnR1YWwgRHRsc1RyYW5zcG9ydFN0YXRlIGR0bHNfc3RhdGUo
KSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL2Zha2VkdGxzdHJhbnNwb3J0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9mYWtlZHRsc3RyYW5zcG9ydC5o
CmluZGV4IGNiOTQ0ZDNkYjViMzlkYTc2MGQ0NTQyMjQ1NzkyZGY1MmJkYjY3YWQuLmRhZWY1Yzc3
ZmM5OThhNDExOTBiYTg4ZTRiZjQyMDlhNWY1ZmMzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2Zha2VkdGxzdHJhbnNwb3J0
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvZmFrZWR0bHN0cmFuc3BvcnQuaApAQCAtMTcsOSArMTcsMTEgQEAKICNpbmNsdWRlIDx2ZWN0
b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvY3J5
cHRvL2NyeXB0b29wdGlvbnMuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9kdGxzdHJhbnNwb3J0aW50
ZXJuYWwuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9mYWtlaWNldHJhbnNwb3J0LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvZmFrZXNzbGlkZW50aXR5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2Vy
dGlmaWNhdGUuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewogCkBAIC0zMiw3ICszNCw3IEBAIGNs
YXNzIEZha2VEdGxzVHJhbnNwb3J0IDogcHVibGljIER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAg
ICAgICA6IGljZV90cmFuc3BvcnRfKGljZV90cmFuc3BvcnQpLAogICAgICAgICB0cmFuc3BvcnRf
bmFtZV8oaWNlX3RyYW5zcG9ydC0+dHJhbnNwb3J0X25hbWUoKSksCiAgICAgICAgIGNvbXBvbmVu
dF8oaWNlX3RyYW5zcG9ydC0+Y29tcG9uZW50KCkpLAotICAgICAgICBkdGxzX2ZpbmdlcnByaW50
XygiIiwgbnVsbHB0ciwgMCkgeworICAgICAgICBkdGxzX2ZpbmdlcnByaW50XygiIiwgbnVsbHB0
cikgewogICAgIFJUQ19EQ0hFQ0soaWNlX3RyYW5zcG9ydF8pOwogICAgIGljZV90cmFuc3BvcnRf
LT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3QoCiAgICAgICAgIHRoaXMsICZGYWtlRHRsc1RyYW5z
cG9ydDo6T25JY2VUcmFuc3BvcnRSZWFkUGFja2V0KTsKQEAgLTQ0LDcgKzQ2LDcgQEAgY2xhc3Mg
RmFrZUR0bHNUcmFuc3BvcnQgOiBwdWJsaWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAgICAg
IDogb3duZWRfaWNlX3RyYW5zcG9ydF8oc3RkOjptb3ZlKGljZSkpLAogICAgICAgICB0cmFuc3Bv
cnRfbmFtZV8ob3duZWRfaWNlX3RyYW5zcG9ydF8tPnRyYW5zcG9ydF9uYW1lKCkpLAogICAgICAg
ICBjb21wb25lbnRfKG93bmVkX2ljZV90cmFuc3BvcnRfLT5jb21wb25lbnQoKSksCi0gICAgICAg
IGR0bHNfZmluZ2VycHJpbnRfKCIiLCBudWxscHRyLCAwKSB7CisgICAgICAgIGR0bHNfZmluZ2Vy
cHJpbnRfKCIiLCBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PigpKSB7CiAgICAgaWNlX3Ry
YW5zcG9ydF8gPSBvd25lZF9pY2VfdHJhbnNwb3J0Xy5nZXQoKTsKICAgICBpY2VfdHJhbnNwb3J0
Xy0+U2lnbmFsUmVhZFBhY2tldC5jb25uZWN0KAogICAgICAgICB0aGlzLCAmRmFrZUR0bHNUcmFu
c3BvcnQ6Ok9uSWNlVHJhbnNwb3J0UmVhZFBhY2tldCk7CkBAIC04Miw2ICs4NCw3IEBAIGNsYXNz
IEZha2VEdGxzVHJhbnNwb3J0IDogcHVibGljIER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgICAg
aWNlX3RyYW5zcG9ydF8tPlNldFJlY2VpdmluZyhyZWNlaXZpbmcpOwogICAgIHNldF9yZWNlaXZp
bmcocmVjZWl2aW5nKTsKICAgfQorICB2b2lkIFNldER0bHNTdGF0ZShEdGxzVHJhbnNwb3J0U3Rh
dGUgc3RhdGUpIHsgZHRsc19zdGF0ZV8gPSBzdGF0ZTsgfQogCiAgIC8vIFNpbXVsYXRlcyB0aGUg
dHdvIERUTFMgdHJhbnNwb3J0cyBjb25uZWN0aW5nIHRvIGVhY2ggb3RoZXIuCiAgIC8vIElmIHxh
c3ltbWV0cmljfCBpcyB0cnVlIHRoaXMgbWV0aG9kIG9ubHkgYWZmZWN0cyB0aGlzIEZha2VEdGxz
VHJhbnNwb3J0LgpAQCAtMTMyLDcgKzEzNSw4IEBAIGNsYXNzIEZha2VEdGxzVHJhbnNwb3J0IDog
cHVibGljIER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIGJvb2wgU2V0UmVtb3RlRmluZ2VycHJp
bnQoY29uc3Qgc3RkOjpzdHJpbmcmIGFsZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90KiBkaWdlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGRpZ2VzdF9sZW4pIG92ZXJyaWRlIHsKLSAgICBkdGxzX2ZpbmdlcnByaW50XyA9IHJ0Yzo6U1NM
RmluZ2VycHJpbnQoYWxnLCBkaWdlc3QsIGRpZ2VzdF9sZW4pOworICAgIGR0bHNfZmluZ2VycHJp
bnRfID0KKyAgICAgICAgcnRjOjpTU0xGaW5nZXJwcmludChhbGcsIHJ0Yzo6TWFrZUFycmF5Vmll
dyhkaWdlc3QsIGRpZ2VzdF9sZW4pKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogICBib29sIFNl
dFNzbE1heFByb3RvY29sVmVyc2lvbihydGM6OlNTTFByb3RvY29sVmVyc2lvbiB2ZXJzaW9uKSBv
dmVycmlkZSB7CkBAIC0xNDksMTAgKzE1MywxMCBAQCBjbGFzcyBGYWtlRHRsc1RyYW5zcG9ydCA6
IHB1YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJuYWwgewogICAgICpyb2xlID0gKmR0bHNfcm9sZV87
CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KLSAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlw
dG9fb3B0aW9ucygpIGNvbnN0IG92ZXJyaWRlIHsKKyAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRp
b25zJiBjcnlwdG9fb3B0aW9ucygpIGNvbnN0IG92ZXJyaWRlIHsKICAgICByZXR1cm4gY3J5cHRv
X29wdGlvbnNfOwogICB9Ci0gIHZvaWQgU2V0Q3J5cHRvT3B0aW9ucyhjb25zdCBydGM6OkNyeXB0
b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSB7CisgIHZvaWQgU2V0Q3J5cHRvT3B0aW9ucyhjb25z
dCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSB7CiAgICAgY3J5cHRvX29w
dGlvbnNfID0gY3J5cHRvX29wdGlvbnM7CiAgIH0KICAgYm9vbCBTZXRMb2NhbENlcnRpZmljYXRl
KApAQCAtMTc4LDggKzE4MiwxMCBAQCBjbGFzcyBGYWtlRHRsc1RyYW5zcG9ydCA6IHB1YmxpYyBE
dGxzVHJhbnNwb3J0SW50ZXJuYWwgewogICAgIHJldHVybiBsb2NhbF9jZXJ0XzsKICAgfQogICBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xDZXJ0Q2hhaW4+IEdldFJlbW90ZVNTTENlcnRDaGFpbigp
IGNvbnN0IG92ZXJyaWRlIHsKLSAgICByZXR1cm4gcmVtb3RlX2NlcnRfID8gYWJzbDo6bWFrZV91
bmlxdWU8cnRjOjpTU0xDZXJ0Q2hhaW4+KHJlbW90ZV9jZXJ0XykKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDogbnVsbHB0cjsKKyAgICBpZiAoIXJlbW90ZV9jZXJ0XykgeworICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxydGM6OlNTTENl
cnRDaGFpbj4ocmVtb3RlX2NlcnRfLT5DbG9uZSgpKTsKICAgfQogICBib29sIEV4cG9ydEtleWlu
Z01hdGVyaWFsKGNvbnN0IHN0ZDo6c3RyaW5nJiBsYWJlbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90KiBjb250ZXh0LApAQCAtMjMyLDkgKzIzOCw5IEBAIGNsYXNz
IEZha2VEdGxzVHJhbnNwb3J0IDogcHVibGljIER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIHZv
aWQgT25JY2VUcmFuc3BvcnRSZWFkUGFja2V0KFBhY2tldFRyYW5zcG9ydEludGVybmFsKiBpY2Vf
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHRpbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpIHsKLSAgICBTaWduYWxSZWFk
UGFja2V0KHRoaXMsIGRhdGEsIGxlbiwgdGltZSwgZmxhZ3MpOworICAgIFNpZ25hbFJlYWRQYWNr
ZXQodGhpcywgZGF0YSwgbGVuLCBwYWNrZXRfdGltZV91cywgZmxhZ3MpOwogICB9CiAKICAgdm9p
ZCBzZXRfcmVjZWl2aW5nKGJvb2wgcmVjZWl2aW5nKSB7CkBAIC0yNzIsNyArMjc4LDcgQEAgY2xh
c3MgRmFrZUR0bHNUcmFuc3BvcnQgOiBwdWJsaWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAg
cnRjOjpTU0xGaW5nZXJwcmludCBkdGxzX2ZpbmdlcnByaW50XzsKICAgYWJzbDo6b3B0aW9uYWw8
cnRjOjpTU0xSb2xlPiBkdGxzX3JvbGVfOwogICBpbnQgY3J5cHRvX3N1aXRlXyA9IHJ0Yzo6U1JU
UF9BRVMxMjhfQ01fU0hBMV84MDsKLSAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25z
XzsKKyAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKIAogICBEdGxzVHJh
bnNwb3J0U3RhdGUgZHRsc19zdGF0ZV8gPSBEVExTX1RSQU5TUE9SVF9ORVc7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2Zh
a2VpY2V0cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL2Zha2VpY2V0cmFuc3BvcnQuaAppbmRleCA0ODE1NzQ1MWVhNjlhMWIxNTIy
ZDQxODY1NGUwMDdiYjlhZTQzNWQwLi44OGFmYzM4MmVjYmI4NTE5MTUzMjhiMzY5MzZlNzQwY2Fj
ZWU3ODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS9mYWtlaWNldHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZmFrZWljZXRyYW5zcG9ydC5oCkBAIC0y
Myw4ICsyMywxMyBAQCBuYW1lc3BhY2UgY3JpY2tldCB7CiAKIGNsYXNzIEZha2VJY2VUcmFuc3Bv
cnQgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewogIHB1YmxpYzoKLSAgZXhwbGljaXQg
RmFrZUljZVRyYW5zcG9ydChjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgaW50IGNvbXBvbmVudCkK
LSAgICAgIDogbmFtZV8obmFtZSksIGNvbXBvbmVudF8oY29tcG9uZW50KSB7fQorICBleHBsaWNp
dCBGYWtlSWNlVHJhbnNwb3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBjb21wb25lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkID0gbnVsbHB0cikKKyAgICAgIDogbmFtZV8o
bmFtZSksCisgICAgICAgIGNvbXBvbmVudF8oY29tcG9uZW50KSwKKyAgICAgICAgbmV0d29ya190
aHJlYWRfKG5ldHdvcmtfdGhyZWFkID8gbmV0d29ya190aHJlYWQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSkge30KICAgfkZh
a2VJY2VUcmFuc3BvcnQoKSBvdmVycmlkZSB7CiAgICAgaWYgKGRlc3RfICYmIGRlc3RfLT5kZXN0
XyA9PSB0aGlzKSB7CiAgICAgICBkZXN0Xy0+ZGVzdF8gPSBudWxscHRyOwpAQCAtMTE0LDYgKzEx
OSwxOSBAQCBjbGFzcyBGYWtlSWNlVHJhbnNwb3J0IDogcHVibGljIEljZVRyYW5zcG9ydEludGVy
bmFsIHsKICAgICByZXR1cm4gSWNlVHJhbnNwb3J0U3RhdGU6OlNUQVRFX0NPTk5FQ1RJTkc7CiAg
IH0KIAorICB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlIEdldEljZVRyYW5zcG9ydFN0YXRlKCkg
Y29uc3Qgb3ZlcnJpZGUgeworICAgIGlmIChjb25uZWN0aW9uX2NvdW50XyA9PSAwKSB7CisgICAg
ICByZXR1cm4gaGFkX2Nvbm5lY3Rpb25fID8gd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6a0Zh
aWxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHdlYnJ0Yzo6SWNlVHJhbnNwb3J0
U3RhdGU6OmtOZXc7CisgICAgfQorCisgICAgaWYgKGNvbm5lY3Rpb25fY291bnRfID09IDEpIHsK
KyAgICAgIHJldHVybiB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlOjprQ29tcGxldGVkOworICAg
IH0KKworICAgIHJldHVybiB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlOjprQ29ubmVjdGVkOwor
ICB9CisKICAgdm9pZCBTZXRJY2VSb2xlKEljZVJvbGUgcm9sZSkgb3ZlcnJpZGUgeyByb2xlXyA9
IHJvbGU7IH0KICAgSWNlUm9sZSBHZXRJY2VSb2xlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
cm9sZV87IH0KICAgdm9pZCBTZXRJY2VUaWVicmVha2VyKHVpbnQ2NF90IHRpZWJyZWFrZXIpIG92
ZXJyaWRlIHsKQEAgLTIyNiw2ICsyNDQsOCBAQCBjbGFzcyBGYWtlSWNlVHJhbnNwb3J0IDogcHVi
bGljIEljZVRyYW5zcG9ydEludGVybmFsIHsKICAgfQogICB2b2lkIFNldE5ldHdvcmtSb3V0ZShh
YnNsOjpvcHRpb25hbDxydGM6Ok5ldHdvcmtSb3V0ZT4gbmV0d29ya19yb3V0ZSkgewogICAgIG5l
dHdvcmtfcm91dGVfID0gbmV0d29ya19yb3V0ZTsKKyAgICBuZXR3b3JrX3RocmVhZF8tPkludm9r
ZTx2b2lkPigKKyAgICAgICAgUlRDX0ZST01fSEVSRSwgW3RoaXNdIHsgU2lnbmFsTmV0d29ya1Jv
dXRlQ2hhbmdlZChuZXR3b3JrX3JvdXRlXyk7IH0pOwogICB9CiAKICBwcml2YXRlOgpAQCAtMjUz
LDcgKzI3Myw3IEBAIGNsYXNzIEZha2VJY2VUcmFuc3BvcnQgOiBwdWJsaWMgSWNlVHJhbnNwb3J0
SW50ZXJuYWwgewogICAgIGlmIChkZXN0XykgewogICAgICAgbGFzdF9zZW50X3BhY2tldF8gPSBw
YWNrZXQ7CiAgICAgICBkZXN0Xy0+U2lnbmFsUmVhZFBhY2tldChkZXN0XywgcGFja2V0LmRhdGE8
Y2hhcj4oKSwgcGFja2V0LnNpemUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydGM6OlRpbWVNaWNyb3MoKSwgMCk7CiAgICAgfQogICB9CiAKQEAgLTI4Miw2ICszMDIsNyBA
QCBjbGFzcyBGYWtlSWNlVHJhbnNwb3J0IDogcHVibGljIEljZVRyYW5zcG9ydEludGVybmFsIHsK
ICAgYWJzbDo6b3B0aW9uYWw8cnRjOjpOZXR3b3JrUm91dGU+IG5ldHdvcmtfcm91dGVfOwogICBz
dGQ6Om1hcDxydGM6OlNvY2tldDo6T3B0aW9uLCBpbnQ+IHNvY2tldF9vcHRpb25zXzsKICAgcnRj
OjpDb3B5T25Xcml0ZUJ1ZmZlciBsYXN0X3NlbnRfcGFja2V0XzsKKyAgcnRjOjpUaHJlYWQqIGNv
bnN0IG5ldHdvcmtfdGhyZWFkXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS9mYWtlcGFja2V0dHJhbnNwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9mYWtlcGFja2V0dHJhbnNwb3J0LmgKaW5kZXggZTU3YmMxNzlh
Nzk5MTcxNGMxYjRiNDMyM2I1N2Y1NDcyZDE5ZGI3Zi4uNTJiMzkyMTVjNzUyNGFjMzQ1YmM1Mzlk
Y2EwNzVjMjE4MjdmODE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZmFrZXBhY2tldHRyYW5zcG9ydC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2Zha2VwYWNrZXR0
cmFuc3BvcnQuaApAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIEZha2VQYWNrZXRUcmFuc3BvcnQg
OiBwdWJsaWMgUGFja2V0VHJhbnNwb3J0SW50ZXJuYWwgewogICAgIGxhc3Rfc2VudF9wYWNrZXRf
ID0gcGFja2V0OwogICAgIGlmIChkZXN0XykgewogICAgICAgZGVzdF8tPlNpZ25hbFJlYWRQYWNr
ZXQoZGVzdF8sIHBhY2tldC5kYXRhPGNoYXI+KCksIHBhY2tldC5zaXplKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDcmVhdGVQYWNrZXRUaW1lKDApLCAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRpbWVNaWNyb3MoKSwgMCk7CiAgICAgfQogICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdkMjk2NTM0NDBkN2NiMmRhODBjNmQ1YWNmMTBlMzM5YzEyM2VkMGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmNjCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpbmNsdWRlICJwMnAvYmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgorCituYW1lc3BhY2UgY3JpY2tldCB7CisKK0lj
ZUNyZWRlbnRpYWxzSXRlcmF0b3I6OkljZUNyZWRlbnRpYWxzSXRlcmF0b3IoCisgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8SWNlUGFyYW1ldGVycz4mIHBvb2xlZF9jcmVkZW50aWFscykKKyAgICA6IHBv
b2xlZF9pY2VfY3JlZGVudGlhbHNfKHBvb2xlZF9jcmVkZW50aWFscykge30KKworSWNlQ3JlZGVu
dGlhbHNJdGVyYXRvcjo6fkljZUNyZWRlbnRpYWxzSXRlcmF0b3IoKSA9IGRlZmF1bHQ7CisKK0lj
ZVBhcmFtZXRlcnMgSWNlQ3JlZGVudGlhbHNJdGVyYXRvcjo6Q3JlYXRlUmFuZG9tSWNlQ3JlZGVu
dGlhbHMoKSB7CisgIHJldHVybiBJY2VQYXJhbWV0ZXJzKHJ0Yzo6Q3JlYXRlUmFuZG9tU3RyaW5n
KElDRV9VRlJBR19MRU5HVEgpLAorICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNyZWF0ZVJh
bmRvbVN0cmluZyhJQ0VfUFdEX0xFTkdUSCksIGZhbHNlKTsKK30KKworSWNlUGFyYW1ldGVycyBJ
Y2VDcmVkZW50aWFsc0l0ZXJhdG9yOjpHZXRJY2VDcmVkZW50aWFscygpIHsKKyAgaWYgKHBvb2xl
ZF9pY2VfY3JlZGVudGlhbHNfLmVtcHR5KCkpIHsKKyAgICByZXR1cm4gQ3JlYXRlUmFuZG9tSWNl
Q3JlZGVudGlhbHMoKTsKKyAgfQorICBJY2VQYXJhbWV0ZXJzIGNyZWRlbnRpYWxzID0gcG9vbGVk
X2ljZV9jcmVkZW50aWFsc18uYmFjaygpOworICBwb29sZWRfaWNlX2NyZWRlbnRpYWxzXy5wb3Bf
YmFjaygpOworICByZXR1cm4gY3JlZGVudGlhbHM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBjcmlj
a2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzNlMWQ2NDYwYWU5MDZiMzU2ODk3YzRlZGI4YWM2YjllOTA0ZWMzYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaApAQCAtMCwwICsxLDM3IEBACisvKgor
ICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFAyUF9CQVNFX0lDRUNSRURFTlRJQUxTSVRFUkFUT1Jf
SF8KKyNkZWZpbmUgUDJQX0JBU0VfSUNFQ1JFREVOVElBTFNJVEVSQVRPUl9IXworCisjaW5jbHVk
ZSA8dmVjdG9yPgorCisjaW5jbHVkZSAicDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uaCIK
KworbmFtZXNwYWNlIGNyaWNrZXQgeworCitjbGFzcyBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yIHsK
KyBwdWJsaWM6CisgIGV4cGxpY2l0IEljZUNyZWRlbnRpYWxzSXRlcmF0b3IoY29uc3Qgc3RkOjp2
ZWN0b3I8SWNlUGFyYW1ldGVycz4mKTsKKyAgdmlydHVhbCB+SWNlQ3JlZGVudGlhbHNJdGVyYXRv
cigpOworCisgIC8vIEdldCBuZXh0IHBvb2xlZCBpY2UgY3JlZGVudGlhbHMuCisgIC8vIFJldHVy
bnMgYSBuZXcgcmFuZG9tIGNyZWRlbnRpYWwgaWYgdGhlIHBvb2wgaXMgZW1wdHkuCisgIEljZVBh
cmFtZXRlcnMgR2V0SWNlQ3JlZGVudGlhbHMoKTsKKworICBzdGF0aWMgSWNlUGFyYW1ldGVycyBD
cmVhdGVSYW5kb21JY2VDcmVkZW50aWFscygpOworCisgcHJpdmF0ZToKKyAgc3RkOjp2ZWN0b3I8
SWNlUGFyYW1ldGVycz4gcG9vbGVkX2ljZV9jcmVkZW50aWFsc187Cit9OworCit9ICAvLyBuYW1l
c3BhY2UgY3JpY2tldAorCisjZW5kaWYgIC8vIFAyUF9CQVNFX0lDRUNSRURFTlRJQUxTSVRFUkFU
T1JfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9pY2VjcmVkZW50aWFs
c2l0ZXJhdG9yX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZmFjZmJiODhkMWVmYzljZTYzOWI4
OWQ3MDE2YmE1M2Q0ZDQ5YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yX3Vu
aXR0ZXN0LmNjCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdl
YlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRl
IDxtZW1vcnk+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1
ZGUgInAycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9ndW5pdC5oIgorCit1c2luZyBjcmlja2V0OjpJY2VQYXJhbWV0ZXJzOwordXNpbmcgY3JpY2tl
dDo6SWNlQ3JlZGVudGlhbHNJdGVyYXRvcjsKKworVEVTVChJY2VDcmVkZW50aWFsc0l0ZXJhdG9y
VGVzdCwgR2V0RW1wdHkpIHsKKyAgc3RkOjp2ZWN0b3I8SWNlUGFyYW1ldGVycz4gZW1wdHk7Cisg
IEljZUNyZWRlbnRpYWxzSXRlcmF0b3IgaXRlcmF0b3IoZW1wdHkpOworICAvLyBWZXJpZnkgdGhh
dCB3ZSBjYW4gZ2V0IGNyZWRlbnRpYWxzIGV2ZW4gaWYgaW5wdXQgaXMgZW1wdHkuCisgIEljZVBh
cmFtZXRlcnMgY3JlZGVudGlhbHMxID0gaXRlcmF0b3IuR2V0SWNlQ3JlZGVudGlhbHMoKTsKK30K
KworVEVTVChJY2VDcmVkZW50aWFsc0l0ZXJhdG9yVGVzdCwgR2V0T25lKSB7CisgIHN0ZDo6dmVj
dG9yPEljZVBhcmFtZXRlcnM+IG9uZSA9IHsKKyAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3I6
OkNyZWF0ZVJhbmRvbUljZUNyZWRlbnRpYWxzKCl9OworICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9y
IGl0ZXJhdG9yKG9uZSk7CisgIEVYUEVDVF9FUShpdGVyYXRvci5HZXRJY2VDcmVkZW50aWFscygp
LCBvbmVbMF0pOworICBhdXRvIHJhbmRvbSA9IGl0ZXJhdG9yLkdldEljZUNyZWRlbnRpYWxzKCk7
CisgIEVYUEVDVF9ORShyYW5kb20sIG9uZVswXSk7CisgIEVYUEVDVF9ORShyYW5kb20sIGl0ZXJh
dG9yLkdldEljZUNyZWRlbnRpYWxzKCkpOworfQorCitURVNUKEljZUNyZWRlbnRpYWxzSXRlcmF0
b3JUZXN0LCBHZXRUd28pIHsKKyAgc3RkOjp2ZWN0b3I8SWNlUGFyYW1ldGVycz4gdHdvID0gewor
ICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvcjo6Q3JlYXRlUmFuZG9tSWNlQ3JlZGVudGlhbHMo
KSwKKyAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3I6OkNyZWF0ZVJhbmRvbUljZUNyZWRlbnRp
YWxzKCl9OworICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yIGl0ZXJhdG9yKHR3byk7CisgIEVYUEVD
VF9FUShpdGVyYXRvci5HZXRJY2VDcmVkZW50aWFscygpLCB0d29bMV0pOworICBFWFBFQ1RfRVEo
aXRlcmF0b3IuR2V0SWNlQ3JlZGVudGlhbHMoKSwgdHdvWzBdKTsKKyAgYXV0byByYW5kb20gPSBp
dGVyYXRvci5HZXRJY2VDcmVkZW50aWFscygpOworICBFWFBFQ1RfTkUocmFuZG9tLCB0d29bMF0p
OworICBFWFBFQ1RfTkUocmFuZG9tLCB0d29bMV0pOworICBFWFBFQ1RfTkUocmFuZG9tLCBpdGVy
YXRvci5HZXRJY2VDcmVkZW50aWFscygpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZXRyYW5zcG9ydGludGVybmFs
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9p
Y2V0cmFuc3BvcnRpbnRlcm5hbC5oCmluZGV4IDc0ODNjM2JhYmMyZTIxZWNjMmQzOTc2MjhkYjY0
NDFmYTA3M2E0MmIuLjA5OWNlYTcwZThmODkwODM3ZDliNDIwZjA4OWJiODZjNjkxYjgyMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL2ljZXRyYW5zcG9ydGludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvaWNldHJhbnNwb3J0aW50ZXJuYWwuaApAQCAtMTUs
MTEgKzE1LDEyIEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2NhbmRpZGF0
ZS5oIgorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvZW51bXMuaCIKICNpbmNsdWRlICJwMnAvYmFz
ZS9jYW5kaWRhdGVwYWlyaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvcGFja2V0dHJh
bnNwb3J0aW50ZXJuYWwuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wb3J0LmgiCiAjaW5jbHVkZSAi
cDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJp
bmdlbmNvZGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBu
YW1lc3BhY2UgY3JpY2tldCB7CiAKQEAgLTE4MSwxNCArMTgyLDE3IEBAIGVudW0gSWNlUHJvdG9j
b2xUeXBlIHsKIAogLy8gSWNlVHJhbnNwb3J0SW50ZXJuYWwgaXMgYW4gaW50ZXJuYWwgYWJzdHJh
Y3QgY2xhc3MgdGhhdCBkb2VzIElDRS4KIC8vIE9uY2UgdGhlIHB1YmxpYyBpbnRlcmZhY2UgaXMg
c3VwcG9ydGVkLAotLy8gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJydGMvI3J0Y2ljZXRyYW5z
cG9ydC1pbnRlcmZhY2UpCisvLyAoaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8jcnRjaWNl
dHJhbnNwb3J0KQogLy8gdGhlIEljZVRyYW5zcG9ydEludGVyZmFjZSB3aWxsIGJlIHNwbGl0IGZy
b20gdGhpcyBjbGFzcy4KLWNsYXNzIEljZVRyYW5zcG9ydEludGVybmFsIDogcHVibGljIHJ0Yzo6
UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwgeworY2xhc3MgUlRDX0VYUE9SVCBJY2VUcmFuc3BvcnRJ
bnRlcm5hbCA6IHB1YmxpYyBydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsIHsKICBwdWJsaWM6
CiAgIEljZVRyYW5zcG9ydEludGVybmFsKCk7CiAgIH5JY2VUcmFuc3BvcnRJbnRlcm5hbCgpIG92
ZXJyaWRlOwogCisgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzkzMDgpOiBSZW1vdmUgR2V0U3Rh
dGUgb25jZSBhbGwgdXNlcyBoYXZlIGJlZW4KKyAgLy8gbWlncmF0ZWQgdG8gR2V0SWNlVHJhbnNw
b3J0U3RhdGUuCiAgIHZpcnR1YWwgSWNlVHJhbnNwb3J0U3RhdGUgR2V0U3RhdGUoKSBjb25zdCA9
IDA7CisgIHZpcnR1YWwgd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZSBHZXRJY2VUcmFuc3BvcnRT
dGF0ZSgpIGNvbnN0ID0gMDsKIAogICB2aXJ0dWFsIGludCBjb21wb25lbnQoKSBjb25zdCA9IDA7
CiAKQEAgLTI1OCw4ICsyNjIsMTMgQEAgY2xhc3MgSWNlVHJhbnNwb3J0SW50ZXJuYWwgOiBwdWJs
aWMgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8SWNl
VHJhbnNwb3J0SW50ZXJuYWwqPiBTaWduYWxSb2xlQ29uZmxpY3Q7CiAKICAgLy8gRW1pdHRlZCB3
aGVuZXZlciB0aGUgdHJhbnNwb3J0IHN0YXRlIGNoYW5nZWQuCisgIC8vIFRPRE8oYnVncy53ZWJy
dGMub3JnLzkzMDgpOiBSZW1vdmUgb25jZSBhbGwgdXNlcyBoYXZlIG1pZ3JhdGVkIHRvIHRoZSBu
ZXcKKyAgLy8gSWNlVHJhbnNwb3J0U3RhdGUuCiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8SWNlVHJhbnNw
b3J0SW50ZXJuYWwqPiBTaWduYWxTdGF0ZUNoYW5nZWQ7CiAKKyAgLy8gRW1pdHRlZCB3aGVuZXZl
ciB0aGUgbmV3IHN0YW5kYXJkcy1jb21wbGlhbnQgdHJhbnNwb3J0IHN0YXRlIGNoYW5nZWQuCisg
IHNpZ3Nsb3Q6OnNpZ25hbDE8SWNlVHJhbnNwb3J0SW50ZXJuYWwqPiBTaWduYWxJY2VUcmFuc3Bv
cnRTdGF0ZUNoYW5nZWQ7CisKICAgLy8gSW52b2tlZCB3aGVuIHRoZSB0cmFuc3BvcnQgaXMgYmVp
bmcgZGVzdHJveWVkLgogICBzaWdzbG90OjpzaWduYWwxPEljZVRyYW5zcG9ydEludGVybmFsKj4g
U2lnbmFsRGVzdHJveWVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZS5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZS5jYwpp
bmRleCA2MWFmNmYzOWYyOWM4OThlM2MyYTBkYjIxYWM1MDk3YzczODFjNjBiLi5mMTRhMGQxMTdl
MzVlYTM5YzIyMWVlMWZmZjBjZjc4MjNkOTk0ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2UuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvbWRu
c19tZXNzYWdlLmNjCkBAIC0xOSwxMyArMTksMTMgQEAgbmFtZXNwYWNlIHsKIC8vIFJGQyAxMDM1
LCBTZWN0aW9uIDQuMS4xLgogLy8KIC8vIFFSIGJpdC4KLWNvbnN0ZXhwciB1aW50MTZfdCBrTURu
c0ZsYWdNYXNrUXVlcnlPclJlc3BvbnNlID0gMHg4MDAwOworY29uc3RleHByIHVpbnQxNl90IGtN
ZG5zRmxhZ01hc2tRdWVyeU9yUmVzcG9uc2UgPSAweDgwMDA7CiAvLyBBQSBiaXQuCi1jb25zdGV4
cHIgdWludDE2X3Qga01EbnNGbGFnTWFza0F1dGhvcml0YXRpdmUgPSAweDA0MDA7Citjb25zdGV4
cHIgdWludDE2X3Qga01kbnNGbGFnTWFza0F1dGhvcml0YXRpdmUgPSAweDA0MDA7CiAvLyBSRkMg
MTAzNSwgU2VjdGlvbiA0LjEuMiwgUUNMQVNTIGFuZCBSRkMgNjc2MiwgU2VjdGlvbiAxOC4xMiwg
cmVwdXJwb3Npbmcgb2YKIC8vIHRvcCBiaXQgb2YgUUNMQVNTIGFzIHRoZSB1bmljYXN0IHJlc3Bv
bnNlIGJpdC4KLWNvbnN0ZXhwciB1aW50MTZfdCBrTURuc1FDbGFzc01hc2tVbmljYXN0UmVzcG9u
c2UgPSAweDgwMDA7Ci1jb25zdGV4cHIgc2l6ZV90IGtNRG5zSGVhZGVyU2l6ZUJ5dGVzID0gMTI7
Citjb25zdGV4cHIgdWludDE2X3Qga01kbnNRQ2xhc3NNYXNrVW5pY2FzdFJlc3BvbnNlID0gMHg4
MDAwOworY29uc3RleHByIHNpemVfdCBrTWRuc0hlYWRlclNpemVCeXRlcyA9IDEyOwogCiBib29s
IFJlYWREb21haW5OYW1lKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1Ziwgc3RkOjpzdHJpbmcqIG5h
bWUpIHsKICAgc2l6ZV90IG5hbWVfc3RhcnRfcG9zID0gYnVmLT5DdXJyZW50T2Zmc2V0KCk7CkBA
IC02NCw3ICs2NCw3IEBAIGJvb2wgUmVhZERvbWFpbk5hbWUoTWVzc2FnZUJ1ZmZlclJlYWRlciog
YnVmLCBzdGQ6OnN0cmluZyogbmFtZSkgewogICAgIC8vIEEgbGVnaXRpbWF0ZSBwb2ludGVyIG9u
bHkgcmVmZXJzIHRvIGEgcHJpb3Igb2NjdXJyZW5jZSBvZiB0aGUgc2FtZSBuYW1lLAogICAgIC8v
IGFuZCB3ZSBzaG91bGQgb25seSBtb3ZlIHN0cmljdGx5IGJhY2t3YXJkIHRvIGEgcHJpb3IgbmFt
ZSBmaWVsZCBhZnRlciB0aGUKICAgICAvLyBoZWFkZXIuCi0gICAgaWYgKHBvc19qdW1wX3RvID49
IG5hbWVfc3RhcnRfcG9zIHx8IHBvc19qdW1wX3RvIDwga01EbnNIZWFkZXJTaXplQnl0ZXMpIHsK
KyAgICBpZiAocG9zX2p1bXBfdG8gPj0gbmFtZV9zdGFydF9wb3MgfHwgcG9zX2p1bXBfdG8gPCBr
TWRuc0hlYWRlclNpemVCeXRlcykgewogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBN
ZXNzYWdlQnVmZmVyUmVhZGVyIG5ld19idWYoYnVmLT5NZXNzYWdlRGF0YSgpLCBidWYtPk1lc3Nh
Z2VMZW5ndGgoKSk7CkBAIC04OCwyNyArODgsMjcgQEAgdm9pZCBXcml0ZURvbWFpbk5hbWUocnRj
OjpCeXRlQnVmZmVyV3JpdGVyKiBidWYsIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7CiAKIH0g
IC8vIG5hbWVzcGFjZQogCi12b2lkIE1EbnNIZWFkZXI6OlNldFF1ZXJ5T3JSZXNwb25zZShib29s
IGlzX3F1ZXJ5KSB7Cit2b2lkIE1kbnNIZWFkZXI6OlNldFF1ZXJ5T3JSZXNwb25zZShib29sIGlz
X3F1ZXJ5KSB7CiAgIGlmIChpc19xdWVyeSkgewotICAgIGZsYWdzICY9IH5rTURuc0ZsYWdNYXNr
UXVlcnlPclJlc3BvbnNlOworICAgIGZsYWdzICY9IH5rTWRuc0ZsYWdNYXNrUXVlcnlPclJlc3Bv
bnNlOwogICB9IGVsc2UgewotICAgIGZsYWdzIHw9IGtNRG5zRmxhZ01hc2tRdWVyeU9yUmVzcG9u
c2U7CisgICAgZmxhZ3MgfD0ga01kbnNGbGFnTWFza1F1ZXJ5T3JSZXNwb25zZTsKICAgfQogfQog
Ci12b2lkIE1EbnNIZWFkZXI6OlNldEF1dGhvcml0YXRpdmUoYm9vbCBpc19hdXRob3JpdGF0aXZl
KSB7Cit2b2lkIE1kbnNIZWFkZXI6OlNldEF1dGhvcml0YXRpdmUoYm9vbCBpc19hdXRob3JpdGF0
aXZlKSB7CiAgIGlmIChpc19hdXRob3JpdGF0aXZlKSB7Ci0gICAgZmxhZ3MgfD0ga01EbnNGbGFn
TWFza0F1dGhvcml0YXRpdmU7CisgICAgZmxhZ3MgfD0ga01kbnNGbGFnTWFza0F1dGhvcml0YXRp
dmU7CiAgIH0gZWxzZSB7Ci0gICAgZmxhZ3MgJj0gfmtNRG5zRmxhZ01hc2tBdXRob3JpdGF0aXZl
OworICAgIGZsYWdzICY9IH5rTWRuc0ZsYWdNYXNrQXV0aG9yaXRhdGl2ZTsKICAgfQogfQogCi1i
b29sIE1EbnNIZWFkZXI6OklzQXV0aG9yaXRhdGl2ZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGZsYWdz
ICYga01EbnNGbGFnTWFza0F1dGhvcml0YXRpdmU7Citib29sIE1kbnNIZWFkZXI6OklzQXV0aG9y
aXRhdGl2ZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGZsYWdzICYga01kbnNGbGFnTWFza0F1dGhvcml0
YXRpdmU7CiB9CiAKLWJvb2wgTURuc0hlYWRlcjo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBi
dWYpIHsKK2Jvb2wgTWRuc0hlYWRlcjo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsK
ICAgaWYgKCFidWYtPlJlYWRVSW50MTYoJmlkKSB8fCAhYnVmLT5SZWFkVUludDE2KCZmbGFncykg
fHwKICAgICAgICFidWYtPlJlYWRVSW50MTYoJnFkY291bnQpIHx8ICFidWYtPlJlYWRVSW50MTYo
JmFuY291bnQpIHx8CiAgICAgICAhYnVmLT5SZWFkVUludDE2KCZuc2NvdW50KSB8fCAhYnVmLT5S
ZWFkVUludDE2KCZhcmNvdW50KSkgewpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgTURuc0hlYWRl
cjo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgTURuc0hlYWRlcjo6V3JpdGUocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0
IHsKK3ZvaWQgTWRuc0hlYWRlcjo6V3JpdGUocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNv
bnN0IHsKICAgYnVmLT5Xcml0ZVVJbnQxNihpZCk7CiAgIGJ1Zi0+V3JpdGVVSW50MTYoZmxhZ3Mp
OwogICBidWYtPldyaXRlVUludDE2KHFkY291bnQpOwpAQCAtMTI3LDE1ICsxMjcsMTUgQEAgdm9p
ZCBNRG5zSGVhZGVyOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3Qgewog
ICBidWYtPldyaXRlVUludDE2KGFyY291bnQpOwogfQogCi1ib29sIE1EbnNIZWFkZXI6OklzUXVl
cnkoKSBjb25zdCB7Ci0gIHJldHVybiAhKGZsYWdzICYga01EbnNGbGFnTWFza1F1ZXJ5T3JSZXNw
b25zZSk7Citib29sIE1kbnNIZWFkZXI6OklzUXVlcnkoKSBjb25zdCB7CisgIHJldHVybiAhKGZs
YWdzICYga01kbnNGbGFnTWFza1F1ZXJ5T3JSZXNwb25zZSk7CiB9CiAKLU1EbnNTZWN0aW9uRW50
cnk6Ok1EbnNTZWN0aW9uRW50cnkoKSA9IGRlZmF1bHQ7Ci1NRG5zU2VjdGlvbkVudHJ5Ojp+TURu
c1NlY3Rpb25FbnRyeSgpID0gZGVmYXVsdDsKLU1EbnNTZWN0aW9uRW50cnk6Ok1EbnNTZWN0aW9u
RW50cnkoY29uc3QgTURuc1NlY3Rpb25FbnRyeSYgb3RoZXIpID0gZGVmYXVsdDsKK01kbnNTZWN0
aW9uRW50cnk6Ok1kbnNTZWN0aW9uRW50cnkoKSA9IGRlZmF1bHQ7CitNZG5zU2VjdGlvbkVudHJ5
Ojp+TWRuc1NlY3Rpb25FbnRyeSgpID0gZGVmYXVsdDsKK01kbnNTZWN0aW9uRW50cnk6Ok1kbnNT
ZWN0aW9uRW50cnkoY29uc3QgTWRuc1NlY3Rpb25FbnRyeSYgb3RoZXIpID0gZGVmYXVsdDsKIAot
dm9pZCBNRG5zU2VjdGlvbkVudHJ5OjpTZXRUeXBlKFNlY3Rpb25FbnRyeVR5cGUgdHlwZSkgewor
dm9pZCBNZG5zU2VjdGlvbkVudHJ5OjpTZXRUeXBlKFNlY3Rpb25FbnRyeVR5cGUgdHlwZSkgewog
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNlY3Rpb25FbnRyeVR5cGU6OmtBOgogICAgICAg
dHlwZV8gPSAxOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgTURuc1NlY3Rpb25FbnRyeTo6U2V0
VHlwZShTZWN0aW9uRW50cnlUeXBlIHR5cGUpIHsKICAgfQogfQogCi1TZWN0aW9uRW50cnlUeXBl
IE1EbnNTZWN0aW9uRW50cnk6OkdldFR5cGUoKSBjb25zdCB7CitTZWN0aW9uRW50cnlUeXBlIE1k
bnNTZWN0aW9uRW50cnk6OkdldFR5cGUoKSBjb25zdCB7CiAgIHN3aXRjaCAodHlwZV8pIHsKICAg
ICBjYXNlIDE6CiAgICAgICByZXR1cm4gU2VjdGlvbkVudHJ5VHlwZTo6a0E7CkBAIC0xNTksNyAr
MTU5LDcgQEAgU2VjdGlvbkVudHJ5VHlwZSBNRG5zU2VjdGlvbkVudHJ5OjpHZXRUeXBlKCkgY29u
c3QgewogICB9CiB9CiAKLXZvaWQgTURuc1NlY3Rpb25FbnRyeTo6U2V0Q2xhc3MoU2VjdGlvbkVu
dHJ5Q2xhc3MgY2xzKSB7Cit2b2lkIE1kbnNTZWN0aW9uRW50cnk6OlNldENsYXNzKFNlY3Rpb25F
bnRyeUNsYXNzIGNscykgewogICBzd2l0Y2ggKGNscykgewogICAgIGNhc2UgU2VjdGlvbkVudHJ5
Q2xhc3M6OmtJTjoKICAgICAgIGNsYXNzXyA9IDE7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBN
RG5zU2VjdGlvbkVudHJ5OjpTZXRDbGFzcyhTZWN0aW9uRW50cnlDbGFzcyBjbHMpIHsKICAgfQog
fQogCi1TZWN0aW9uRW50cnlDbGFzcyBNRG5zU2VjdGlvbkVudHJ5OjpHZXRDbGFzcygpIGNvbnN0
IHsKK1NlY3Rpb25FbnRyeUNsYXNzIE1kbnNTZWN0aW9uRW50cnk6OkdldENsYXNzKCkgY29uc3Qg
ewogICBzd2l0Y2ggKGNsYXNzXykgewogICAgIGNhc2UgMToKICAgICAgIHJldHVybiBTZWN0aW9u
RW50cnlDbGFzczo6a0lOOwpAQCAtMTc4LDExICsxNzgsMTEgQEAgU2VjdGlvbkVudHJ5Q2xhc3Mg
TURuc1NlY3Rpb25FbnRyeTo6R2V0Q2xhc3MoKSBjb25zdCB7CiAgIH0KIH0KIAotTURuc1F1ZXN0
aW9uOjpNRG5zUXVlc3Rpb24oKSA9IGRlZmF1bHQ7Ci1NRG5zUXVlc3Rpb246Ok1EbnNRdWVzdGlv
bihjb25zdCBNRG5zUXVlc3Rpb24mIG90aGVyKSA9IGRlZmF1bHQ7Ci1NRG5zUXVlc3Rpb246On5N
RG5zUXVlc3Rpb24oKSA9IGRlZmF1bHQ7CitNZG5zUXVlc3Rpb246Ok1kbnNRdWVzdGlvbigpID0g
ZGVmYXVsdDsKK01kbnNRdWVzdGlvbjo6TWRuc1F1ZXN0aW9uKGNvbnN0IE1kbnNRdWVzdGlvbiYg
b3RoZXIpID0gZGVmYXVsdDsKK01kbnNRdWVzdGlvbjo6fk1kbnNRdWVzdGlvbigpID0gZGVmYXVs
dDsKIAotYm9vbCBNRG5zUXVlc3Rpb246OlJlYWQoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7
Citib29sIE1kbnNRdWVzdGlvbjo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKICAg
aWYgKCFSZWFkRG9tYWluTmFtZShidWYsICZuYW1lXykpIHsKICAgICBSVENfTE9HKExTX0VSUk9S
KSA8PCAiSW52YWxpZCBuYW1lLiI7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk0LDMxICsxOTQs
MzEgQEAgYm9vbCBNRG5zUXVlc3Rpb246OlJlYWQoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7
CiAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1EbnNRdWVzdGlvbjo6V3JpdGUocnRjOjpCeXRl
QnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKK2Jvb2wgTWRuc1F1ZXN0aW9uOjpXcml0ZShydGM6
OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3QgewogICBXcml0ZURvbWFpbk5hbWUoYnVmLCBu
YW1lXyk7CiAgIGJ1Zi0+V3JpdGVVSW50MTYodHlwZV8pOwogICBidWYtPldyaXRlVUludDE2KGNs
YXNzXyk7CiAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE1EbnNRdWVzdGlvbjo6U2V0VW5pY2Fz
dFJlc3BvbnNlKGJvb2wgc2hvdWxkX3VuaWNhc3QpIHsKK3ZvaWQgTWRuc1F1ZXN0aW9uOjpTZXRV
bmljYXN0UmVzcG9uc2UoYm9vbCBzaG91bGRfdW5pY2FzdCkgewogICBpZiAoc2hvdWxkX3VuaWNh
c3QpIHsKLSAgICBjbGFzc18gfD0ga01EbnNRQ2xhc3NNYXNrVW5pY2FzdFJlc3BvbnNlOworICAg
IGNsYXNzXyB8PSBrTWRuc1FDbGFzc01hc2tVbmljYXN0UmVzcG9uc2U7CiAgIH0gZWxzZSB7Ci0g
ICAgY2xhc3NfICY9IH5rTURuc1FDbGFzc01hc2tVbmljYXN0UmVzcG9uc2U7CisgICAgY2xhc3Nf
ICY9IH5rTWRuc1FDbGFzc01hc2tVbmljYXN0UmVzcG9uc2U7CiAgIH0KIH0KIAotYm9vbCBNRG5z
UXVlc3Rpb246OlNob3VsZFVuaWNhc3RSZXNwb25zZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGNsYXNz
XyAmIGtNRG5zUUNsYXNzTWFza1VuaWNhc3RSZXNwb25zZTsKK2Jvb2wgTWRuc1F1ZXN0aW9uOjpT
aG91bGRVbmljYXN0UmVzcG9uc2UoKSBjb25zdCB7CisgIHJldHVybiBjbGFzc18gJiBrTWRuc1FD
bGFzc01hc2tVbmljYXN0UmVzcG9uc2U7CiB9CiAKLU1EbnNSZXNvdXJjZVJlY29yZDo6TURuc1Jl
c291cmNlUmVjb3JkKCkgPSBkZWZhdWx0OwotTURuc1Jlc291cmNlUmVjb3JkOjpNRG5zUmVzb3Vy
Y2VSZWNvcmQoY29uc3QgTURuc1Jlc291cmNlUmVjb3JkJiBvdGhlcikgPQorTWRuc1Jlc291cmNl
UmVjb3JkOjpNZG5zUmVzb3VyY2VSZWNvcmQoKSA9IGRlZmF1bHQ7CitNZG5zUmVzb3VyY2VSZWNv
cmQ6Ok1kbnNSZXNvdXJjZVJlY29yZChjb25zdCBNZG5zUmVzb3VyY2VSZWNvcmQmIG90aGVyKSA9
CiAgICAgZGVmYXVsdDsKLU1EbnNSZXNvdXJjZVJlY29yZDo6fk1EbnNSZXNvdXJjZVJlY29yZCgp
ID0gZGVmYXVsdDsKK01kbnNSZXNvdXJjZVJlY29yZDo6fk1kbnNSZXNvdXJjZVJlY29yZCgpID0g
ZGVmYXVsdDsKIAotYm9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6OlJlYWQoTWVzc2FnZUJ1ZmZlclJl
YWRlciogYnVmKSB7Citib29sIE1kbnNSZXNvdXJjZVJlY29yZDo6UmVhZChNZXNzYWdlQnVmZmVy
UmVhZGVyKiBidWYpIHsKICAgaWYgKCFSZWFkRG9tYWluTmFtZShidWYsICZuYW1lXykpIHsKICAg
ICByZXR1cm4gZmFsc2U7CiAgIH0KQEAgLTIzOSwxNyArMjM5LDE3IEBAIGJvb2wgTURuc1Jlc291
cmNlUmVjb3JkOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgewogICB9CiAgIHJldHVy
biBmYWxzZTsKIH0KLWJvb2wgTURuc1Jlc291cmNlUmVjb3JkOjpSZWFkQVJEYXRhKE1lc3NhZ2VC
dWZmZXJSZWFkZXIqIGJ1ZikgeworYm9vbCBNZG5zUmVzb3VyY2VSZWNvcmQ6OlJlYWRBUkRhdGEo
TWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7CiAgIC8vIEEgUkRBVEEgY29udGFpbnMgYSAzMi1i
aXQgSVB2NCBhZGRyZXNzLgogICByZXR1cm4gYnVmLT5SZWFkU3RyaW5nKCZyZGF0YV8sIDQpOwog
fQogCi1ib29sIE1EbnNSZXNvdXJjZVJlY29yZDo6UmVhZFF1YWRBUkRhdGEoTWVzc2FnZUJ1ZmZl
clJlYWRlciogYnVmKSB7Citib29sIE1kbnNSZXNvdXJjZVJlY29yZDo6UmVhZFF1YWRBUkRhdGEo
TWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7CiAgIC8vIEFBQUEgUkRBVEEgY29udGFpbnMgYSAx
MjgtYml0IElQdjYgYWRkcmVzcy4KICAgcmV0dXJuIGJ1Zi0+UmVhZFN0cmluZygmcmRhdGFfLCAx
Nik7CiB9CiAKLWJvb2wgTURuc1Jlc291cmNlUmVjb3JkOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJX
cml0ZXIqIGJ1ZikgY29uc3QgeworYm9vbCBNZG5zUmVzb3VyY2VSZWNvcmQ6OldyaXRlKHJ0Yzo6
Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7CiAgIFdyaXRlRG9tYWluTmFtZShidWYsIG5h
bWVfKTsKICAgYnVmLT5Xcml0ZVVJbnQxNih0eXBlXyk7CiAgIGJ1Zi0+V3JpdGVVSW50MTYoY2xh
c3NfKTsKQEAgLTI3MCwxNSArMjcwLDE1IEBAIGJvb2wgTURuc1Jlc291cmNlUmVjb3JkOjpXcml0
ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3QgewogICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBNRG5zUmVzb3VyY2VSZWNvcmQ6OldyaXRlQVJEYXRhKHJ0Yzo6Qnl0ZUJ1ZmZlcldy
aXRlciogYnVmKSBjb25zdCB7Cit2b2lkIE1kbnNSZXNvdXJjZVJlY29yZDo6V3JpdGVBUkRhdGEo
cnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKICAgYnVmLT5Xcml0ZVN0cmluZyhy
ZGF0YV8pOwogfQogCi12b2lkIE1EbnNSZXNvdXJjZVJlY29yZDo6V3JpdGVRdWFkQVJEYXRhKHJ0
Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7Cit2b2lkIE1kbnNSZXNvdXJjZVJlY29y
ZDo6V3JpdGVRdWFkQVJEYXRhKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7CiAg
IGJ1Zi0+V3JpdGVTdHJpbmcocmRhdGFfKTsKIH0KIAotYm9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6
OlNldElQQWRkcmVzc0luUmVjb3JkRGF0YSgKK2Jvb2wgTWRuc1Jlc291cmNlUmVjb3JkOjpTZXRJ
UEFkZHJlc3NJblJlY29yZERhdGEoCiAgICAgY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHJlc3Mp
IHsKICAgaW50IGFmID0gYWRkcmVzcy5mYW1pbHkoKTsKICAgaWYgKGFmICE9IEFGX0lORVQgJiYg
YWYgIT0gQUZfSU5FVDYpIHsKQEAgLTI5Myw3ICsyOTMsNyBAQCBib29sIE1EbnNSZXNvdXJjZVJl
Y29yZDo6U2V0SVBBZGRyZXNzSW5SZWNvcmREYXRhKAogICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBNRG5zUmVzb3VyY2VSZWNvcmQ6OkdldElQQWRkcmVzc0Zyb21SZWNvcmREYXRhKAorYm9vbCBN
ZG5zUmVzb3VyY2VSZWNvcmQ6OkdldElQQWRkcmVzc0Zyb21SZWNvcmREYXRhKAogICAgIHJ0Yzo6
SVBBZGRyZXNzKiBhZGRyZXNzKSBjb25zdCB7CiAgIGlmIChHZXRUeXBlKCkgIT0gU2VjdGlvbkVu
dHJ5VHlwZTo6a0EgJiYKICAgICAgIEdldFR5cGUoKSAhPSBTZWN0aW9uRW50cnlUeXBlOjprQUFB
QSkgewpAQCAtMzEwLDE2ICszMTAsMTYgQEAgYm9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6OkdldElQ
QWRkcmVzc0Zyb21SZWNvcmREYXRhKAogICByZXR1cm4gcnRjOjpJUEZyb21TdHJpbmcoc3RkOjpz
dHJpbmcob3V0KSwgYWRkcmVzcyk7CiB9CiAKLU1EbnNNZXNzYWdlOjpNRG5zTWVzc2FnZSgpID0g
ZGVmYXVsdDsKLU1EbnNNZXNzYWdlOjp+TURuc01lc3NhZ2UoKSA9IGRlZmF1bHQ7CitNZG5zTWVz
c2FnZTo6TWRuc01lc3NhZ2UoKSA9IGRlZmF1bHQ7CitNZG5zTWVzc2FnZTo6fk1kbnNNZXNzYWdl
KCkgPSBkZWZhdWx0OwogCi1ib29sIE1EbnNNZXNzYWdlOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFk
ZXIqIGJ1ZikgeworYm9vbCBNZG5zTWVzc2FnZTo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBi
dWYpIHsKICAgUlRDX0RDSEVDS19FUSgwdSwgYnVmLT5DdXJyZW50T2Zmc2V0KCkpOwogICBpZiAo
IWhlYWRlcl8uUmVhZChidWYpKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKLSAgYXV0byBy
ZWFkX3F1ZXN0aW9uID0gWyZidWZdKHN0ZDo6dmVjdG9yPE1EbnNRdWVzdGlvbj4qIHNlY3Rpb24s
CisgIGF1dG8gcmVhZF9xdWVzdGlvbiA9IFsmYnVmXShzdGQ6OnZlY3RvcjxNZG5zUXVlc3Rpb24+
KiBzZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgY291bnQp
IHsKICAgICBzZWN0aW9uLT5yZXNpemUoY291bnQpOwogICAgIGZvciAoYXV0byYgcXVlc3Rpb24g
OiAoKnNlY3Rpb24pKSB7CkBAIC0zMjksNyArMzI5LDcgQEAgYm9vbCBNRG5zTWVzc2FnZTo6UmVh
ZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiAg
IH07Ci0gIGF1dG8gcmVhZF9yciA9IFsmYnVmXShzdGQ6OnZlY3RvcjxNRG5zUmVzb3VyY2VSZWNv
cmQ+KiBzZWN0aW9uLAorICBhdXRvIHJlYWRfcnIgPSBbJmJ1Zl0oc3RkOjp2ZWN0b3I8TWRuc1Jl
c291cmNlUmVjb3JkPiogc2VjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90
IGNvdW50KSB7CiAgICAgc2VjdGlvbi0+cmVzaXplKGNvdW50KTsKICAgICBmb3IgKGF1dG8mIHJy
IDogKCpzZWN0aW9uKSkgewpAQCAtMzQ5LDEwICszNDksMTAgQEAgYm9vbCBNRG5zTWVzc2FnZTo6
UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgTURuc01lc3NhZ2U6OldyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7
Citib29sIE1kbnNNZXNzYWdlOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29u
c3QgewogICBoZWFkZXJfLldyaXRlKGJ1Zik7CiAKLSAgYXV0byB3cml0ZV9yciA9IFsmYnVmXShj
b25zdCBzdGQ6OnZlY3RvcjxNRG5zUmVzb3VyY2VSZWNvcmQ+JiBzZWN0aW9uKSB7CisgIGF1dG8g
d3JpdGVfcnIgPSBbJmJ1Zl0oY29uc3Qgc3RkOjp2ZWN0b3I8TWRuc1Jlc291cmNlUmVjb3JkPiYg
c2VjdGlvbikgewogICAgIGZvciAoYXV0byByciA6IHNlY3Rpb24pIHsKICAgICAgIGlmICghcnIu
V3JpdGUoYnVmKSkgewogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzQsNyArMzc0LDcgQEAg
Ym9vbCBNRG5zTWVzc2FnZTo6V3JpdGUocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0
IHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTURuc01lc3NhZ2U6OlNob3VsZFVuaWNhc3RS
ZXNwb25zZSgpIGNvbnN0IHsKK2Jvb2wgTWRuc01lc3NhZ2U6OlNob3VsZFVuaWNhc3RSZXNwb25z
ZSgpIGNvbnN0IHsKICAgYm9vbCBzaG91bGRfdW5pY2FzdCA9IGZhbHNlOwogICBmb3IgKGNvbnN0
IGF1dG8mIHF1ZXN0aW9uIDogcXVlc3Rpb25fc2VjdGlvbl8pIHsKICAgICBzaG91bGRfdW5pY2Fz
dCB8PSBxdWVzdGlvbi5TaG91bGRVbmljYXN0UmVzcG9uc2UoKTsKQEAgLTM4MiwxMiArMzgyLDEy
IEBAIGJvb2wgTURuc01lc3NhZ2U6OlNob3VsZFVuaWNhc3RSZXNwb25zZSgpIGNvbnN0IHsKICAg
cmV0dXJuIHNob3VsZF91bmljYXN0OwogfQogCi12b2lkIE1EbnNNZXNzYWdlOjpBZGRRdWVzdGlv
bihjb25zdCBNRG5zUXVlc3Rpb24mIHF1ZXN0aW9uKSB7Cit2b2lkIE1kbnNNZXNzYWdlOjpBZGRR
dWVzdGlvbihjb25zdCBNZG5zUXVlc3Rpb24mIHF1ZXN0aW9uKSB7CiAgIHF1ZXN0aW9uX3NlY3Rp
b25fLnB1c2hfYmFjayhxdWVzdGlvbik7CiAgIGhlYWRlcl8ucWRjb3VudCA9IHF1ZXN0aW9uX3Nl
Y3Rpb25fLnNpemUoKTsKIH0KIAotdm9pZCBNRG5zTWVzc2FnZTo6QWRkQW5zd2VyUmVjb3JkKGNv
bnN0IE1EbnNSZXNvdXJjZVJlY29yZCYgYW5zd2VyKSB7Cit2b2lkIE1kbnNNZXNzYWdlOjpBZGRB
bnN3ZXJSZWNvcmQoY29uc3QgTWRuc1Jlc291cmNlUmVjb3JkJiBhbnN3ZXIpIHsKICAgYW5zd2Vy
X3NlY3Rpb25fLnB1c2hfYmFjayhhbnN3ZXIpOwogICBoZWFkZXJfLmFuY291bnQgPSBhbnN3ZXJf
c2VjdGlvbl8uc2l6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvbWRuc19tZXNzYWdlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2UuaAppbmRl
eCBmNmRlYzIwYTk1NmQ1MzAyMDc0OGRmYzljYjJiNDg5ZmQ0MDk4MjA3Li43YWExYjIxMDM5YTUz
MGYxMWY4YzhmODU1MWM5YjUwY2FkM2RkYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2UuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5zX21l
c3NhZ2UuaApAQCAtMTUsNyArMTUsNyBAQAogLy8gNjc2MiBhbmQgUkZDIDEwMjUgKEROUyBtZXNz
YWdlcykuIE5vdGUgdGhhdCBpdCBpcyByZWNvbW1lbmRlZCBieSBSRkMgNjc2MiB0bwogLy8gdXNl
IHRoZSBuYW1lIGNvbXByZXNzaW9uIHNjaGVtZSBkZWZpbmVkIGluIFJGQyAxMDM1IHdoZW5ldmVy
IHBvc3NpYmxlLiBXZQogLy8gY3VycmVudGx5IG9ubHkgaW1wbGVtZW50IHRoZSBjYXBhYmlsaXR5
IG9mIHJlYWRpbmcgY29tcHJlc3NlZCBuYW1lcyBpbiBtRE5TCi0vLyBtZXNzYWdlcyBpbiBNRG5z
TWVzc2FnZTo6UmVhZCgpOyBob3dldmVyLCB0aGUgTURuc01lc3NhZ2U6OldyaXRlKCkgZG9lcyBu
b3QKKy8vIG1lc3NhZ2VzIGluIE1kbnNNZXNzYWdlOjpSZWFkKCk7IGhvd2V2ZXIsIHRoZSBNZG5z
TWVzc2FnZTo6V3JpdGUoKSBkb2VzIG5vdAogLy8gc3VwcG9ydCBuYW1lIGNvbXByZXNzaW9uIHll
dC4KIC8vCiAvLyBGdXp6ZXIgdGVzdHMgKHRlc3QvZnV6emVycy9tZG5zX3BhcnNlcl9mdXp6ZXIu
Y2MpIE1VU1QgYWx3YXlzIGJlIHBlcmZvcm1lZApAQCAtNTAsNyArNTAsNyBAQCBlbnVtIGNsYXNz
IFNlY3Rpb25FbnRyeUNsYXNzIHsKIH07CiAKIC8vIFJGQyAxMDM1LCBTZWN0aW9uIDQuMS4xLgot
Y2xhc3MgTURuc0hlYWRlciBmaW5hbCB7CitjbGFzcyBNZG5zSGVhZGVyIGZpbmFsIHsKICBwdWJs
aWM6CiAgIGJvb2wgUmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpOwogICB2b2lkIFdyaXRl
KHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdDsKQEAgLTc0LDExICs3NCwxMSBAQCBj
bGFzcyBNRG5zSGVhZGVyIGZpbmFsIHsKIAogLy8gRW50cmllcyBpbiBlYWNoIHNlY3Rpb24gYWZ0
ZXIgdGhlIGhlYWRlciBzaGFyZSBhIGNvbW1vbiBzdHJ1Y3R1cmUuIE5vdGUgdGhhdAogLy8gdGhp
cyBpcyBub3QgYSBjb25jZXB0IGRlZmluZWQgaW4gUkZDIDEwMzUuCi1jbGFzcyBNRG5zU2VjdGlv
bkVudHJ5IHsKK2NsYXNzIE1kbnNTZWN0aW9uRW50cnkgewogIHB1YmxpYzoKLSAgTURuc1NlY3Rp
b25FbnRyeSgpOwotICBNRG5zU2VjdGlvbkVudHJ5KGNvbnN0IE1EbnNTZWN0aW9uRW50cnkmIG90
aGVyKTsKLSAgdmlydHVhbCB+TURuc1NlY3Rpb25FbnRyeSgpOworICBNZG5zU2VjdGlvbkVudHJ5
KCk7CisgIE1kbnNTZWN0aW9uRW50cnkoY29uc3QgTWRuc1NlY3Rpb25FbnRyeSYgb3RoZXIpOwor
ICB2aXJ0dWFsIH5NZG5zU2VjdGlvbkVudHJ5KCk7CiAgIHZpcnR1YWwgYm9vbCBSZWFkKE1lc3Nh
Z2VCdWZmZXJSZWFkZXIqIGJ1ZikgPSAwOwogICB2aXJ0dWFsIGJvb2wgV3JpdGUocnRjOjpCeXRl
QnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0ID0gMDsKIApAQCAtOTksMTEgKzk5LDExIEBAIGNsYXNz
IE1EbnNTZWN0aW9uRW50cnkgewogfTsKIAogLy8gUkZDIDEwMzUsIFNlY3Rpb24gNC4xLjIuCi1j
bGFzcyBNRG5zUXVlc3Rpb24gZmluYWwgOiBwdWJsaWMgTURuc1NlY3Rpb25FbnRyeSB7CitjbGFz
cyBNZG5zUXVlc3Rpb24gZmluYWwgOiBwdWJsaWMgTWRuc1NlY3Rpb25FbnRyeSB7CiAgcHVibGlj
OgotICBNRG5zUXVlc3Rpb24oKTsKLSAgTURuc1F1ZXN0aW9uKGNvbnN0IE1EbnNRdWVzdGlvbiYg
b3RoZXIpOwotICB+TURuc1F1ZXN0aW9uKCkgb3ZlcnJpZGU7CisgIE1kbnNRdWVzdGlvbigpOwor
ICBNZG5zUXVlc3Rpb24oY29uc3QgTWRuc1F1ZXN0aW9uJiBvdGhlcik7CisgIH5NZG5zUXVlc3Rp
b24oKSBvdmVycmlkZTsKIAogICBib29sIFJlYWQoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSBv
dmVycmlkZTsKICAgYm9vbCBXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0xMTMsMTEgKzExMywxMSBAQCBjbGFzcyBNRG5zUXVlc3Rpb24gZmluYWwg
OiBwdWJsaWMgTURuc1NlY3Rpb25FbnRyeSB7CiB9OwogCiAvLyBSRkMgMTAzNSwgU2VjdGlvbiA0
LjEuMy4KLWNsYXNzIE1EbnNSZXNvdXJjZVJlY29yZCBmaW5hbCA6IHB1YmxpYyBNRG5zU2VjdGlv
bkVudHJ5IHsKK2NsYXNzIE1kbnNSZXNvdXJjZVJlY29yZCBmaW5hbCA6IHB1YmxpYyBNZG5zU2Vj
dGlvbkVudHJ5IHsKICBwdWJsaWM6Ci0gIE1EbnNSZXNvdXJjZVJlY29yZCgpOwotICBNRG5zUmVz
b3VyY2VSZWNvcmQoY29uc3QgTURuc1Jlc291cmNlUmVjb3JkJiBvdGhlcik7Ci0gIH5NRG5zUmVz
b3VyY2VSZWNvcmQoKSBvdmVycmlkZTsKKyAgTWRuc1Jlc291cmNlUmVjb3JkKCk7CisgIE1kbnNS
ZXNvdXJjZVJlY29yZChjb25zdCBNZG5zUmVzb3VyY2VSZWNvcmQmIG90aGVyKTsKKyAgfk1kbnNS
ZXNvdXJjZVJlY29yZCgpIG92ZXJyaWRlOwogCiAgIGJvb2wgUmVhZChNZXNzYWdlQnVmZmVyUmVh
ZGVyKiBidWYpIG92ZXJyaWRlOwogICBib29sIFdyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciog
YnVmKSBjb25zdCBvdmVycmlkZTsKQEAgLTE0NSwxNyArMTQ1LDE3IEBAIGNsYXNzIE1EbnNSZXNv
dXJjZVJlY29yZCBmaW5hbCA6IHB1YmxpYyBNRG5zU2VjdGlvbkVudHJ5IHsKICAgc3RkOjpzdHJp
bmcgcmRhdGFfOwogfTsKIAotY2xhc3MgTURuc01lc3NhZ2UgZmluYWwgeworY2xhc3MgTWRuc01l
c3NhZ2UgZmluYWwgewogIHB1YmxpYzoKICAgLy8gUkZDIDEwMzUsIFNlY3Rpb24gNC4xLgogICBl
bnVtIGNsYXNzIFNlY3Rpb24geyBrUXVlc3Rpb24sIGtBbnN3ZXIsIGtBdXRob3JpdHksIGtBZGRp
dGlvbmFsIH07CiAKLSAgTURuc01lc3NhZ2UoKTsKLSAgfk1EbnNNZXNzYWdlKCk7CisgIE1kbnNN
ZXNzYWdlKCk7CisgIH5NZG5zTWVzc2FnZSgpOwogICAvLyBSZWFkcyB0aGUgbUROUyBtZXNzYWdl
IGluIHxidWZ8IGFuZCBwb3B1bGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzIGluCi0gIC8v
IE1EbnNNZXNzYWdlLgorICAvLyBNZG5zTWVzc2FnZS4KICAgYm9vbCBSZWFkKE1lc3NhZ2VCdWZm
ZXJSZWFkZXIqIGJ1Zik7Ci0gIC8vIFdyaXRlIGFuIG1ETlMgbWVzc2FnZSB0byB8YnVmfCBiYXNl
ZCBvbiB0aGUgZmllbGRzIGluIE1EbnNNZXNzYWdlLgorICAvLyBXcml0ZSBhbiBtRE5TIG1lc3Nh
Z2UgdG8gfGJ1ZnwgYmFzZWQgb24gdGhlIGZpZWxkcyBpbiBNZG5zTWVzc2FnZS4KICAgLy8KICAg
Ly8gVE9ETyhxaW5nc2kpOiBJbXBsZW1lbnQgbmFtZSBjb21wcmVzc2lvbiB3aGVuIHdyaXRpbmcg
bUROUyBtZXNzYWdlcy4KICAgYm9vbCBXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1Zikg
Y29uc3Q7CkBAIC0xNzcsMjkgKzE3NywyOSBAQCBjbGFzcyBNRG5zTWVzc2FnZSBmaW5hbCB7CiAg
IC8vIHByZWZlcnJlZC4gRmFsc2Ugb3RoZXJ3aXNlLgogICBib29sIFNob3VsZFVuaWNhc3RSZXNw
b25zZSgpIGNvbnN0OwogCi0gIHZvaWQgQWRkUXVlc3Rpb24oY29uc3QgTURuc1F1ZXN0aW9uJiBx
dWVzdGlvbik7CisgIHZvaWQgQWRkUXVlc3Rpb24oY29uc3QgTWRuc1F1ZXN0aW9uJiBxdWVzdGlv
bik7CiAgIC8vIFRPRE8ocWluZ3NpKTogSW1wbGVtZW50IEFkZFhSZWNvcmQgZm9yIG5hbWUgc2Vy
dmVyIGFuZCBhZGRpdGlvbmFsIHJlY29yZHMuCi0gIHZvaWQgQWRkQW5zd2VyUmVjb3JkKGNvbnN0
IE1EbnNSZXNvdXJjZVJlY29yZCYgYW5zd2VyKTsKKyAgdm9pZCBBZGRBbnN3ZXJSZWNvcmQoY29u
c3QgTWRuc1Jlc291cmNlUmVjb3JkJiBhbnN3ZXIpOwogCi0gIGNvbnN0IHN0ZDo6dmVjdG9yPE1E
bnNRdWVzdGlvbj4mIHF1ZXN0aW9uX3NlY3Rpb24oKSBjb25zdCB7CisgIGNvbnN0IHN0ZDo6dmVj
dG9yPE1kbnNRdWVzdGlvbj4mIHF1ZXN0aW9uX3NlY3Rpb24oKSBjb25zdCB7CiAgICAgcmV0dXJu
IHF1ZXN0aW9uX3NlY3Rpb25fOwogICB9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPE1EbnNSZXNvdXJj
ZVJlY29yZD4mIGFuc3dlcl9zZWN0aW9uKCkgY29uc3QgeworICBjb25zdCBzdGQ6OnZlY3RvcjxN
ZG5zUmVzb3VyY2VSZWNvcmQ+JiBhbnN3ZXJfc2VjdGlvbigpIGNvbnN0IHsKICAgICByZXR1cm4g
YW5zd2VyX3NlY3Rpb25fOwogICB9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPE1EbnNSZXNvdXJjZVJl
Y29yZD4mIGF1dGhvcml0eV9zZWN0aW9uKCkgY29uc3QgeworICBjb25zdCBzdGQ6OnZlY3RvcjxN
ZG5zUmVzb3VyY2VSZWNvcmQ+JiBhdXRob3JpdHlfc2VjdGlvbigpIGNvbnN0IHsKICAgICByZXR1
cm4gYXV0aG9yaXR5X3NlY3Rpb25fOwogICB9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPE1EbnNSZXNv
dXJjZVJlY29yZD4mIGFkZGl0aW9uYWxfc2VjdGlvbigpIGNvbnN0IHsKKyAgY29uc3Qgc3RkOjp2
ZWN0b3I8TWRuc1Jlc291cmNlUmVjb3JkPiYgYWRkaXRpb25hbF9zZWN0aW9uKCkgY29uc3Qgewog
ICAgIHJldHVybiBhZGRpdGlvbmFsX3NlY3Rpb25fOwogICB9CiAKICBwcml2YXRlOgotICBNRG5z
SGVhZGVyIGhlYWRlcl87Ci0gIHN0ZDo6dmVjdG9yPE1EbnNRdWVzdGlvbj4gcXVlc3Rpb25fc2Vj
dGlvbl87Ci0gIHN0ZDo6dmVjdG9yPE1EbnNSZXNvdXJjZVJlY29yZD4gYW5zd2VyX3NlY3Rpb25f
OwotICBzdGQ6OnZlY3RvcjxNRG5zUmVzb3VyY2VSZWNvcmQ+IGF1dGhvcml0eV9zZWN0aW9uXzsK
LSAgc3RkOjp2ZWN0b3I8TURuc1Jlc291cmNlUmVjb3JkPiBhZGRpdGlvbmFsX3NlY3Rpb25fOwor
ICBNZG5zSGVhZGVyIGhlYWRlcl87CisgIHN0ZDo6dmVjdG9yPE1kbnNRdWVzdGlvbj4gcXVlc3Rp
b25fc2VjdGlvbl87CisgIHN0ZDo6dmVjdG9yPE1kbnNSZXNvdXJjZVJlY29yZD4gYW5zd2VyX3Nl
Y3Rpb25fOworICBzdGQ6OnZlY3RvcjxNZG5zUmVzb3VyY2VSZWNvcmQ+IGF1dGhvcml0eV9zZWN0
aW9uXzsKKyAgc3RkOjp2ZWN0b3I8TWRuc1Jlc291cmNlUmVjb3JkPiBhZGRpdGlvbmFsX3NlY3Rp
b25fOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvbWRuc19tZXNzYWdlX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvbWRuc19tZXNzYWdlX3VuaXR0ZXN0LmNjCmluZGV4IGZiNGEzYjFlN2EyNjE1NjA5ZDFh
NWE0M2QyZDNhYmVmMDA0NDhmNzIuLjdmODE2Zjc0MGI4YTQwZDQ3MWZhMWIxZWNiMzcyNDg1ZjRm
ZmI2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2VfdW5pdHRl
c3QuY2MKQEAgLTE5LDkgKzE5LDkgQEAKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNz
LmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgogCi0jZGVmaW5lIFJlYWRNRG5zTWVzc2FnZShY
LCBZKSBSZWFkTURuc01lc3NhZ2VUZXN0Q2FzZShYLCBZLCBzaXplb2YoWSkpCi0jZGVmaW5lIFdy
aXRlTURuc01lc3NhZ2VBbmRDb21wYXJlKFgsIFkpIFwKLSAgV3JpdGVNRG5zTWVzc2FnZUFuZENv
bXBhcmVXaXRoVGVzdENhc3QoWCwgWSwgc2l6ZW9mKFkpKQorI2RlZmluZSBSZWFkTWRuc01lc3Nh
Z2UoWCwgWSkgUmVhZE1kbnNNZXNzYWdlVGVzdENhc2UoWCwgWSwgc2l6ZW9mKFkpKQorI2RlZmlu
ZSBXcml0ZU1kbnNNZXNzYWdlQW5kQ29tcGFyZShYLCBZKSBcCisgIFdyaXRlTWRuc01lc3NhZ2VB
bmRDb21wYXJlV2l0aFRlc3RDYXN0KFgsIFksIHNpemVvZihZKSkKIAogdXNpbmcgOjp0ZXN0aW5n
OjpFbGVtZW50c0FyZTsKIHVzaW5nIDo6dGVzdGluZzo6UGFpcjsKQEAgLTI1NSwxNCArMjU1LDE0
IEBAIGNvbnN0IHVpbnQ4X3Qga0NvcnJ1cHRlZEFuc3dlcldpdGhOYW1lQ29tcHJlc3Npb24yW10g
PSB7CiAgICAgMHhjMCwgMHhBOCwgMHgwMCwgMHgwMSwgIC8vIDE5Mi4xNjguMC4xCiB9OwogCi1i
b29sIFJlYWRNRG5zTWVzc2FnZVRlc3RDYXNlKE1EbnNNZXNzYWdlKiBtc2csCitib29sIFJlYWRN
ZG5zTWVzc2FnZVRlc3RDYXNlKE1kbnNNZXNzYWdlKiBtc2csCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHRlc3RjYXNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgc2l6ZSkgewogICBNZXNzYWdlQnVmZmVyUmVhZGVyIGJ1ZihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPih0ZXN0Y2FzZSksIHNpemUpOwogICByZXR1cm4gbXNnLT5S
ZWFkKCZidWYpOwogfQogCi12b2lkIFdyaXRlTURuc01lc3NhZ2VBbmRDb21wYXJlV2l0aFRlc3RD
YXN0KE1EbnNNZXNzYWdlKiBtc2csCit2b2lkIFdyaXRlTWRuc01lc3NhZ2VBbmRDb21wYXJlV2l0
aFRlc3RDYXN0KE1kbnNNZXNzYWdlKiBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHRlc3RjYXNlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSkgewogICBydGM6OkJ5dGVC
dWZmZXJXcml0ZXIgb3V0OwpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgV3JpdGVNRG5zTWVzc2Fn
ZUFuZENvbXBhcmVXaXRoVGVzdENhc3QoTURuc01lc3NhZ2UqIG1zZywKICAgRVhQRUNUX0VRKHRl
c3RjYXNlX2J5dGVzLCBieXRlcyk7CiB9CiAKLWJvb2wgR2V0UXVlcmllZE5hbWVzKE1EbnNNZXNz
YWdlKiBtc2csIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiogbmFtZXMpIHsKK2Jvb2wgR2V0UXVlcmll
ZE5hbWVzKE1kbnNNZXNzYWdlKiBtc2csIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiogbmFtZXMpIHsK
ICAgaWYgKCFtc2ctPklzUXVlcnkoKSB8fCBtc2ctPnF1ZXN0aW9uX3NlY3Rpb24oKS5lbXB0eSgp
KSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CkBAIC0yODYsNyArMjg2LDcgQEAgYm9vbCBHZXRR
dWVyaWVkTmFtZXMoTURuc01lc3NhZ2UqIG1zZywgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+KiBuYW1l
cykgewogICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBHZXRSZXNvbHV0aW9uKE1EbnNNZXNzYWdl
KiBtc2csCitib29sIEdldFJlc29sdXRpb24oTWRuc01lc3NhZ2UqIG1zZywKICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgcnRjOjpJUEFkZHJlc3M+KiBuYW1lcykgewog
ICBpZiAobXNnLT5Jc1F1ZXJ5KCkgfHwgbXNnLT5hbnN3ZXJfc2VjdGlvbigpLmVtcHR5KCkpIHsK
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDMsMTAgKzMwMywxMCBAQCBib29sIEdldFJlc29sdXRp
b24oTURuc01lc3NhZ2UqIG1zZywKIAogfSAgLy8gbmFtZXNwYWNlCiAKLVRFU1QoTURuc01lc3Nh
Z2VUZXN0LCBSZWFkU2luZ2xlUXVlc3Rpb25Gb3JJUHY0QWRkcmVzcykgewotICBNRG5zTWVzc2Fn
ZSBtc2c7CitURVNUKE1kbnNNZXNzYWdlVGVzdCwgUmVhZFNpbmdsZVF1ZXN0aW9uRm9ySVB2NEFk
ZHJlc3MpIHsKKyAgTWRuc01lc3NhZ2UgbXNnOwogICBBU1NFUlRfVFJVRSgKLSAgICAgIFJlYWRN
RG5zTWVzc2FnZSgmbXNnLCBrU2luZ2xlUXVlc3Rpb25Gb3JJUHY0QWRkcldpdGhVbmljYXN0UmVz
cG9uc2UpKTsKKyAgICAgIFJlYWRNZG5zTWVzc2FnZSgmbXNnLCBrU2luZ2xlUXVlc3Rpb25Gb3JJ
UHY0QWRkcldpdGhVbmljYXN0UmVzcG9uc2UpKTsKICAgRVhQRUNUX1RSVUUobXNnLklzUXVlcnko
KSk7CiAgIEVYUEVDVF9FUSgweDEyMzQsIG1zZy5HZXRJZCgpKTsKICAgQVNTRVJUX0VRKDF1LCBt
c2cucXVlc3Rpb25fc2VjdGlvbigpLnNpemUoKSk7CkBAIC0zMjMsOSArMzIzLDkgQEAgVEVTVChN
RG5zTWVzc2FnZVRlc3QsIFJlYWRTaW5nbGVRdWVzdGlvbkZvcklQdjRBZGRyZXNzKSB7CiAgIEVY
UEVDVF9USEFUKHF1ZXJpZWRfbmFtZXMsIEVsZW1lbnRzQXJlKCJ3ZWJydGMub3JnLiIpKTsKIH0K
IAotVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRUd29RdWVzdGlvbnNGb3JJUHY0QW5kSVB2NkFk
ZHIpIHsKLSAgTURuc01lc3NhZ2UgbXNnOwotICBBU1NFUlRfVFJVRShSZWFkTURuc01lc3NhZ2Uo
CitURVNUKE1kbnNNZXNzYWdlVGVzdCwgUmVhZFR3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRk
cikgeworICBNZG5zTWVzc2FnZSBtc2c7CisgIEFTU0VSVF9UUlVFKFJlYWRNZG5zTWVzc2FnZSgK
ICAgICAgICZtc2csIGtUd29RdWVzdGlvbnNGb3JJUHY0QW5kSVB2NkFkZHJXaXRoTXVsdGljYXN0
UmVzcG9uc2UpKTsKICAgRVhQRUNUX1RSVUUobXNnLklzUXVlcnkoKSk7CiAgIEVYUEVDVF9FUSgw
eDEyMzQsIG1zZy5HZXRJZCgpKTsKQEAgLTM0NSw5ICszNDUsOSBAQCBURVNUKE1EbnNNZXNzYWdl
VGVzdCwgUmVhZFR3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcikgewogICAgICAgICAgICAg
ICBVbm9yZGVyZWRFbGVtZW50c0FyZSgid2VicnRjNC5vcmcuIiwgIndlYnJ0YzYub3JnLiIpKTsK
IH0KIAotVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRUd29RdWVzdGlvbnNGb3JJUHY0QW5kSVB2
NkFkZHJXaXRoTmFtZUNvbXByZXNzaW9uKSB7Ci0gIE1EbnNNZXNzYWdlIG1zZzsKLSAgQVNTRVJU
X1RSVUUoUmVhZE1EbnNNZXNzYWdlKAorVEVTVChNZG5zTWVzc2FnZVRlc3QsIFJlYWRUd29RdWVz
dGlvbnNGb3JJUHY0QW5kSVB2NkFkZHJXaXRoTmFtZUNvbXByZXNzaW9uKSB7CisgIE1kbnNNZXNz
YWdlIG1zZzsKKyAgQVNTRVJUX1RSVUUoUmVhZE1kbnNNZXNzYWdlKAogICAgICAgJm1zZywKICAg
ICAgIGtUd29RdWVzdGlvbnNGb3JJUHY0QW5kSVB2NkFkZHJXaXRoTXVsdGljYXN0UmVzcG9uc2VB
bmROYW1lQ29tcHJlc3Npb24pKTsKIApAQCAtMzYzLDEwICszNjMsMTAgQEAgVEVTVChNRG5zTWVz
c2FnZVRlc3QsIFJlYWRUd29RdWVzdGlvbnNGb3JJUHY0QW5kSVB2NkFkZHJXaXRoTmFtZUNvbXBy
ZXNzaW9uKSB7CiAgICAgICAgICAgICAgIFVub3JkZXJlZEVsZW1lbnRzQXJlKCJ3d3cud2VicnRj
Lm9yZy4iLCAibWRucy53ZWJydGMub3JnLiIpKTsKIH0KIAotVEVTVChNRG5zTWVzc2FnZVRlc3Qs
IFJlYWRUaHJlZVF1ZXN0aW9uc1dpdGhUd29Qb2ludGVyc1RvVGhlU2FtZU5hbWVTdWZmaXgpIHsK
LSAgTURuc01lc3NhZ2UgbXNnOworVEVTVChNZG5zTWVzc2FnZVRlc3QsIFJlYWRUaHJlZVF1ZXN0
aW9uc1dpdGhUd29Qb2ludGVyc1RvVGhlU2FtZU5hbWVTdWZmaXgpIHsKKyAgTWRuc01lc3NhZ2Ug
bXNnOwogICBBU1NFUlRfVFJVRSgKLSAgICAgIFJlYWRNRG5zTWVzc2FnZSgmbXNnLCBrVGhyZWVR
dWVzdGlvbnNXaXRoVHdvUG9pbnRlcnNUb1RoZVNhbWVOYW1lU3VmZml4KSk7CisgICAgICBSZWFk
TWRuc01lc3NhZ2UoJm1zZywga1RocmVlUXVlc3Rpb25zV2l0aFR3b1BvaW50ZXJzVG9UaGVTYW1l
TmFtZVN1ZmZpeCkpOwogCiAgIEFTU0VSVF9FUSgzdSwgbXNnLnF1ZXN0aW9uX3NlY3Rpb24oKS5z
aXplKCkpOwogICBjb25zdCBhdXRvJiBxdWVzdGlvbjEgPSBtc2cucXVlc3Rpb25fc2VjdGlvbigp
WzBdOwpAQCAtMzgzLDEwICszODMsMTAgQEAgVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRUaHJl
ZVF1ZXN0aW9uc1dpdGhUd29Qb2ludGVyc1RvVGhlU2FtZU5hbWVTdWZmaXgpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIndlYnJ0Yy5vcmcuIikpOwogfQogCi1URVNUKE1E
bnNNZXNzYWdlVGVzdCwKK1RFU1QoTWRuc01lc3NhZ2VUZXN0LAogICAgICBSZWFkVGhyZWVRdWVz
dGlvbnNXaXRoUG9pbnRlclRvTmFtZVN1ZmZpeENvbnRhaW5pbmdBbm90aGVyUG9pbnRlcikgewot
ICBNRG5zTWVzc2FnZSBtc2c7Ci0gIEFTU0VSVF9UUlVFKFJlYWRNRG5zTWVzc2FnZSgKKyAgTWRu
c01lc3NhZ2UgbXNnOworICBBU1NFUlRfVFJVRShSZWFkTWRuc01lc3NhZ2UoCiAgICAgICAmbXNn
LCBrVGhyZWVRdWVzdGlvbnNXaXRoUG9pbnRlclRvTmFtZVN1ZmZpeENvbnRhaW5pbmdBbm90aGVy
UG9pbnRlcikpOwogCiAgIEFTU0VSVF9FUSgzdSwgbXNnLnF1ZXN0aW9uX3NlY3Rpb24oKS5zaXpl
KCkpOwpAQCAtNDA0LDE2ICs0MDQsMTYgQEAgVEVTVChNRG5zTWVzc2FnZVRlc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3d3cubWRucy53ZWJydGMub3JnLiIpKTsKIH0K
IAotVEVTVChNRG5zTWVzc2FnZVRlc3QsCitURVNUKE1kbnNNZXNzYWdlVGVzdCwKICAgICAgUmVh
ZFF1ZXN0aW9uV2l0aENvcnJ1cHRlZFBvaW50ZXJJbk5hbWVDb21wcmVzc2lvblNob3VsZEZhaWwp
IHsKLSAgTURuc01lc3NhZ2UgbXNnOwotICBFWFBFQ1RfRkFMU0UoUmVhZE1EbnNNZXNzYWdlKCZt
c2csIGtDb3JydXB0ZWRRdWVzdGlvbldpdGhOYW1lQ29tcHJlc3Npb24xKSk7Ci0gIEVYUEVDVF9G
QUxTRShSZWFkTURuc01lc3NhZ2UoJm1zZywga0NvcnJ1cHRlZFF1ZXN0aW9uV2l0aE5hbWVDb21w
cmVzc2lvbjIpKTsKKyAgTWRuc01lc3NhZ2UgbXNnOworICBFWFBFQ1RfRkFMU0UoUmVhZE1kbnNN
ZXNzYWdlKCZtc2csIGtDb3JydXB0ZWRRdWVzdGlvbldpdGhOYW1lQ29tcHJlc3Npb24xKSk7Cisg
IEVYUEVDVF9GQUxTRShSZWFkTWRuc01lc3NhZ2UoJm1zZywga0NvcnJ1cHRlZFF1ZXN0aW9uV2l0
aE5hbWVDb21wcmVzc2lvbjIpKTsKIH0KIAotVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRTaW5n
bGVBbnN3ZXJGb3JJUHY0QWRkcikgewotICBNRG5zTWVzc2FnZSBtc2c7Ci0gIEFTU0VSVF9UUlVF
KFJlYWRNRG5zTWVzc2FnZSgmbXNnLCBrU2luZ2xlQXV0aG9yaXRhdGl2ZUFuc3dlcldpdGhJUHY0
QWRkcikpOworVEVTVChNZG5zTWVzc2FnZVRlc3QsIFJlYWRTaW5nbGVBbnN3ZXJGb3JJUHY0QWRk
cikgeworICBNZG5zTWVzc2FnZSBtc2c7CisgIEFTU0VSVF9UUlVFKFJlYWRNZG5zTWVzc2FnZSgm
bXNnLCBrU2luZ2xlQXV0aG9yaXRhdGl2ZUFuc3dlcldpdGhJUHY0QWRkcikpOwogICBFWFBFQ1Rf
RkFMU0UobXNnLklzUXVlcnkoKSk7CiAgIEVYUEVDVF9UUlVFKG1zZy5Jc0F1dGhvcml0YXRpdmUo
KSk7CiAgIEVYUEVDVF9FUSgweDEyMzQsIG1zZy5HZXRJZCgpKTsKQEAgLTQzMiwxMCArNDMyLDEw
IEBAIFRFU1QoTURuc01lc3NhZ2VUZXN0LCBSZWFkU2luZ2xlQW5zd2VyRm9ySVB2NEFkZHIpIHsK
ICAgRVhQRUNUX1RIQVQocmVzb2x1dGlvbiwgRWxlbWVudHNBcmUoUGFpcigid2VicnRjLm9yZy4i
LCBleHBlY3RlZF9hZGRyKSkpOwogfQogCi1URVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFR3b0Fu
c3dlcnNGb3JJUHY0QW5kSVB2NkFkZHIpIHsKLSAgTURuc01lc3NhZ2UgbXNnOworVEVTVChNZG5z
TWVzc2FnZVRlc3QsIFJlYWRUd29BbnN3ZXJzRm9ySVB2NEFuZElQdjZBZGRyKSB7CisgIE1kbnNN
ZXNzYWdlIG1zZzsKICAgQVNTRVJUX1RSVUUoCi0gICAgICBSZWFkTURuc01lc3NhZ2UoJm1zZywg
a1R3b0F1dGhvcml0YXRpdmVBbnN3ZXJzV2l0aElQdjRBbmRJUHY2QWRkcikpOworICAgICAgUmVh
ZE1kbnNNZXNzYWdlKCZtc2csIGtUd29BdXRob3JpdGF0aXZlQW5zd2Vyc1dpdGhJUHY0QW5kSVB2
NkFkZHIpKTsKICAgRVhQRUNUX0ZBTFNFKG1zZy5Jc1F1ZXJ5KCkpOwogICBFWFBFQ1RfVFJVRSht
c2cuSXNBdXRob3JpdGF0aXZlKCkpOwogICBFWFBFQ1RfRVEoMHgxMjM0LCBtc2cuR2V0SWQoKSk7
CkBAIC00NjIsOSArNDYyLDkgQEAgVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRUd29BbnN3ZXJz
Rm9ySVB2NEFuZElQdjZBZGRyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhaXIoIndlYnJ0YzYub3JnLiIsIGV4cGVjdGVkX2FkZHJfaXB2NikpKTsKIH0KIAotVEVTVChN
RG5zTWVzc2FnZVRlc3QsIFJlYWRUd29BbnN3ZXJzRm9ySVB2NEFuZElQdjZBZGRyV2l0aE5hbWVD
b21wcmVzc2lvbikgewotICBNRG5zTWVzc2FnZSBtc2c7Ci0gIEFTU0VSVF9UUlVFKFJlYWRNRG5z
TWVzc2FnZSgKK1RFU1QoTWRuc01lc3NhZ2VUZXN0LCBSZWFkVHdvQW5zd2Vyc0ZvcklQdjRBbmRJ
UHY2QWRkcldpdGhOYW1lQ29tcHJlc3Npb24pIHsKKyAgTWRuc01lc3NhZ2UgbXNnOworICBBU1NF
UlRfVFJVRShSZWFkTWRuc01lc3NhZ2UoCiAgICAgICAmbXNnLCBrVHdvQXV0aG9yaXRhdGl2ZUFu
c3dlcnNXaXRoSVB2NEFuZElQdjZBZGRyV2l0aE5hbWVDb21wcmVzc2lvbikpOwogCiAgIHN0ZDo6
bWFwPHN0ZDo6c3RyaW5nLCBydGM6OklQQWRkcmVzcz4gcmVzb2x1dGlvbjsKQEAgLTQ3OCw1NyAr
NDc4LDU3IEBAIFRFU1QoTURuc01lc3NhZ2VUZXN0LCBSZWFkVHdvQW5zd2Vyc0ZvcklQdjRBbmRJ
UHY2QWRkcldpdGhOYW1lQ29tcHJlc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFpcigid2VicnRjLm9yZy4iLCBleHBlY3RlZF9hZGRyX2lwdjYpKSk7CiB9CiAK
LVRFU1QoTURuc01lc3NhZ2VUZXN0LAorVEVTVChNZG5zTWVzc2FnZVRlc3QsCiAgICAgIFJlYWRB
bnN3ZXJXaXRoQ29ycnVwdGVkUG9pbnRlckluTmFtZUNvbXByZXNzaW9uU2hvdWxkRmFpbCkgewot
ICBNRG5zTWVzc2FnZSBtc2c7Ci0gIEVYUEVDVF9GQUxTRShSZWFkTURuc01lc3NhZ2UoJm1zZywg
a0NvcnJ1cHRlZEFuc3dlcldpdGhOYW1lQ29tcHJlc3Npb24xKSk7Ci0gIEVYUEVDVF9GQUxTRShS
ZWFkTURuc01lc3NhZ2UoJm1zZywga0NvcnJ1cHRlZEFuc3dlcldpdGhOYW1lQ29tcHJlc3Npb24y
KSk7CisgIE1kbnNNZXNzYWdlIG1zZzsKKyAgRVhQRUNUX0ZBTFNFKFJlYWRNZG5zTWVzc2FnZSgm
bXNnLCBrQ29ycnVwdGVkQW5zd2VyV2l0aE5hbWVDb21wcmVzc2lvbjEpKTsKKyAgRVhQRUNUX0ZB
TFNFKFJlYWRNZG5zTWVzc2FnZSgmbXNnLCBrQ29ycnVwdGVkQW5zd2VyV2l0aE5hbWVDb21wcmVz
c2lvbjIpKTsKIH0KIAotVEVTVChNRG5zTWVzc2FnZVRlc3QsIFdyaXRlU2luZ2xlUXVlc3Rpb25G
b3JJUHY0QWRkcikgewotICBNRG5zTWVzc2FnZSBtc2c7CitURVNUKE1kbnNNZXNzYWdlVGVzdCwg
V3JpdGVTaW5nbGVRdWVzdGlvbkZvcklQdjRBZGRyKSB7CisgIE1kbnNNZXNzYWdlIG1zZzsKICAg
bXNnLlNldElkKDB4MTIzNCk7CiAgIG1zZy5TZXRRdWVyeU9yUmVzcG9uc2UodHJ1ZSk7CiAKLSAg
TURuc1F1ZXN0aW9uIHF1ZXN0aW9uOworICBNZG5zUXVlc3Rpb24gcXVlc3Rpb247CiAgIHF1ZXN0
aW9uLlNldE5hbWUoIndlYnJ0Yy5vcmcuIik7CiAgIHF1ZXN0aW9uLlNldFR5cGUoU2VjdGlvbkVu
dHJ5VHlwZTo6a0EpOwogICBxdWVzdGlvbi5TZXRDbGFzcyhTZWN0aW9uRW50cnlDbGFzczo6a0lO
KTsKICAgcXVlc3Rpb24uU2V0VW5pY2FzdFJlc3BvbnNlKHRydWUpOwogICBtc2cuQWRkUXVlc3Rp
b24ocXVlc3Rpb24pOwogCi0gIFdyaXRlTURuc01lc3NhZ2VBbmRDb21wYXJlKCZtc2csCisgIFdy
aXRlTWRuc01lc3NhZ2VBbmRDb21wYXJlKCZtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtTaW5nbGVRdWVzdGlvbkZvcklQdjRBZGRyV2l0aFVuaWNhc3RSZXNwb25zZSk7CiB9CiAK
LVRFU1QoTURuc01lc3NhZ2VUZXN0LCBXcml0ZVR3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRk
cikgewotICBNRG5zTWVzc2FnZSBtc2c7CitURVNUKE1kbnNNZXNzYWdlVGVzdCwgV3JpdGVUd29R
dWVzdGlvbnNGb3JJUHY0QW5kSVB2NkFkZHIpIHsKKyAgTWRuc01lc3NhZ2UgbXNnOwogICBtc2cu
U2V0SWQoMHgxMjM0KTsKICAgbXNnLlNldFF1ZXJ5T3JSZXNwb25zZSh0cnVlKTsKIAotICBNRG5z
UXVlc3Rpb24gcXVlc3Rpb24xOworICBNZG5zUXVlc3Rpb24gcXVlc3Rpb24xOwogICBxdWVzdGlv
bjEuU2V0TmFtZSgid2VicnRjNC5vcmcuIik7CiAgIHF1ZXN0aW9uMS5TZXRUeXBlKFNlY3Rpb25F
bnRyeVR5cGU6OmtBKTsKICAgcXVlc3Rpb24xLlNldENsYXNzKFNlY3Rpb25FbnRyeUNsYXNzOjpr
SU4pOwogICBtc2cuQWRkUXVlc3Rpb24ocXVlc3Rpb24xKTsKIAotICBNRG5zUXVlc3Rpb24gcXVl
c3Rpb24yOworICBNZG5zUXVlc3Rpb24gcXVlc3Rpb24yOwogICBxdWVzdGlvbjIuU2V0TmFtZSgi
d2VicnRjNi5vcmcuIik7CiAgIHF1ZXN0aW9uMi5TZXRUeXBlKFNlY3Rpb25FbnRyeVR5cGU6OmtB
QUFBKTsKICAgcXVlc3Rpb24yLlNldENsYXNzKFNlY3Rpb25FbnRyeUNsYXNzOjprSU4pOwogICBt
c2cuQWRkUXVlc3Rpb24ocXVlc3Rpb24yKTsKIAotICBXcml0ZU1EbnNNZXNzYWdlQW5kQ29tcGFy
ZSgKKyAgV3JpdGVNZG5zTWVzc2FnZUFuZENvbXBhcmUoCiAgICAgICAmbXNnLCBrVHdvUXVlc3Rp
b25zRm9ySVB2NEFuZElQdjZBZGRyV2l0aE11bHRpY2FzdFJlc3BvbnNlKTsKIH0KIAotVEVTVChN
RG5zTWVzc2FnZVRlc3QsIFdyaXRlU2luZ2xlQW5zd2VyVG9JUHY0QWRkcikgewotICBNRG5zTWVz
c2FnZSBtc2c7CitURVNUKE1kbnNNZXNzYWdlVGVzdCwgV3JpdGVTaW5nbGVBbnN3ZXJUb0lQdjRB
ZGRyKSB7CisgIE1kbnNNZXNzYWdlIG1zZzsKICAgbXNnLlNldElkKDB4MTIzNCk7CiAgIG1zZy5T
ZXRRdWVyeU9yUmVzcG9uc2UoZmFsc2UpOwogICBtc2cuU2V0QXV0aG9yaXRhdGl2ZSh0cnVlKTsK
IAotICBNRG5zUmVzb3VyY2VSZWNvcmQgYW5zd2VyOworICBNZG5zUmVzb3VyY2VSZWNvcmQgYW5z
d2VyOwogICBhbnN3ZXIuU2V0TmFtZSgid2VicnRjLm9yZy4iKTsKICAgYW5zd2VyLlNldFR5cGUo
U2VjdGlvbkVudHJ5VHlwZTo6a0EpOwogICBhbnN3ZXIuU2V0Q2xhc3MoU2VjdGlvbkVudHJ5Q2xh
c3M6OmtJTik7CkBAIC01MzcsMTYgKzUzNywxNiBAQCBURVNUKE1EbnNNZXNzYWdlVGVzdCwgV3Jp
dGVTaW5nbGVBbnN3ZXJUb0lQdjRBZGRyKSB7CiAgIGFuc3dlci5TZXRUdGxTZWNvbmRzKDEyMCk7
CiAgIG1zZy5BZGRBbnN3ZXJSZWNvcmQoYW5zd2VyKTsKIAotICBXcml0ZU1EbnNNZXNzYWdlQW5k
Q29tcGFyZSgmbXNnLCBrU2luZ2xlQXV0aG9yaXRhdGl2ZUFuc3dlcldpdGhJUHY0QWRkcik7Cisg
IFdyaXRlTWRuc01lc3NhZ2VBbmRDb21wYXJlKCZtc2csIGtTaW5nbGVBdXRob3JpdGF0aXZlQW5z
d2VyV2l0aElQdjRBZGRyKTsKIH0KIAotVEVTVChNRG5zTWVzc2FnZVRlc3QsIFdyaXRlVHdvQW5z
d2Vyc1RvSVB2NEFuZElQdjZBZGRyKSB7Ci0gIE1EbnNNZXNzYWdlIG1zZzsKK1RFU1QoTWRuc01l
c3NhZ2VUZXN0LCBXcml0ZVR3b0Fuc3dlcnNUb0lQdjRBbmRJUHY2QWRkcikgeworICBNZG5zTWVz
c2FnZSBtc2c7CiAgIG1zZy5TZXRJZCgweDEyMzQpOwogICBtc2cuU2V0UXVlcnlPclJlc3BvbnNl
KGZhbHNlKTsKICAgbXNnLlNldEF1dGhvcml0YXRpdmUodHJ1ZSk7CiAKLSAgTURuc1Jlc291cmNl
UmVjb3JkIGFuc3dlcjE7CisgIE1kbnNSZXNvdXJjZVJlY29yZCBhbnN3ZXIxOwogICBhbnN3ZXIx
LlNldE5hbWUoIndlYnJ0YzQub3JnLiIpOwogICBhbnN3ZXIxLlNldFR5cGUoU2VjdGlvbkVudHJ5
VHlwZTo6a0EpOwogICBhbnN3ZXIxLlNldENsYXNzKFNlY3Rpb25FbnRyeUNsYXNzOjprSU4pOwpA
QCAtNTU1LDcgKzU1NSw3IEBAIFRFU1QoTURuc01lc3NhZ2VUZXN0LCBXcml0ZVR3b0Fuc3dlcnNU
b0lQdjRBbmRJUHY2QWRkcikgewogICBhbnN3ZXIxLlNldFR0bFNlY29uZHMoNjApOwogICBtc2cu
QWRkQW5zd2VyUmVjb3JkKGFuc3dlcjEpOwogCi0gIE1EbnNSZXNvdXJjZVJlY29yZCBhbnN3ZXIy
OworICBNZG5zUmVzb3VyY2VSZWNvcmQgYW5zd2VyMjsKICAgYW5zd2VyMi5TZXROYW1lKCJ3ZWJy
dGM2Lm9yZy4iKTsKICAgYW5zd2VyMi5TZXRUeXBlKFNlY3Rpb25FbnRyeVR5cGU6OmtBQUFBKTsK
ICAgYW5zd2VyMi5TZXRDbGFzcyhTZWN0aW9uRW50cnlDbGFzczo6a0lOKTsKQEAgLTU2NCw3ICs1
NjQsNyBAQCBURVNUKE1EbnNNZXNzYWdlVGVzdCwgV3JpdGVUd29BbnN3ZXJzVG9JUHY0QW5kSVB2
NkFkZHIpIHsKICAgYW5zd2VyMi5TZXRUdGxTZWNvbmRzKDEyMCk7CiAgIG1zZy5BZGRBbnN3ZXJS
ZWNvcmQoYW5zd2VyMik7CiAKLSAgV3JpdGVNRG5zTWVzc2FnZUFuZENvbXBhcmUoJm1zZywga1R3
b0F1dGhvcml0YXRpdmVBbnN3ZXJzV2l0aElQdjRBbmRJUHY2QWRkcik7CisgIFdyaXRlTWRuc01l
c3NhZ2VBbmRDb21wYXJlKCZtc2csIGtUd29BdXRob3JpdGF0aXZlQW5zd2Vyc1dpdGhJUHY0QW5k
SVB2NkFkZHIpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tb2NraWNldHJh
bnNwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9tb2NraWNldHJhbnNwb3J0LmgKaW5kZXggZDE4NjNjNTI5MzUyMDllZWU0NDJhNDgzYzQy
NjUwMThmNmViMmM3MC4uYjE4Y2UzZDVhZGUxZGE5NDAwY2NhZDIwMmJkOGFkZGE4Y2FhNWZlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvbW9ja2ljZXRyYW5zcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21vY2tpY2V0cmFuc3BvcnQuaApAQCAtNDcsNiArNDcs
MTAgQEAgY2xhc3MgTW9ja0ljZVRyYW5zcG9ydCA6IHB1YmxpYyBJY2VUcmFuc3BvcnRJbnRlcm5h
bCB7CiAgIEljZVRyYW5zcG9ydFN0YXRlIEdldFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgewogICAg
IHJldHVybiBJY2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfSU5JVDsKICAgfQorICB3ZWJydGM6Oklj
ZVRyYW5zcG9ydFN0YXRlIEdldEljZVRyYW5zcG9ydFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgewor
ICAgIHJldHVybiB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlOjprTmV3OworICB9CisKICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9uYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJhbnNwb3J0X25hbWVfOyB9CiAgIGludCBjb21wb25lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9CiAgIHZvaWQgU2V0SWNlUm9sZShJY2VSb2xlIHJvbGUpIG92ZXJyaWRlIHt9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9wMnBjb25zdGFudHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3AycGNvbnN0YW50cy5oCmluZGV4IGIyZTkyZWZmMTM1MmFjOGM2MDVj
YTAxNDg0OTgxOTRhNmE3MTFiZWYuLjI5NDhiZTBiYjgzN2Q0YzA0ZGNiZjIwODFmOThiMDJkMGQ0
N2Q5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL3AycGNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycGNvbnN0YW50cy5oCkBAIC0xMyw2ICsxMyw4
IEBACiAKICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRj
X2V4cG9ydC5oIgorCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKIC8vIENOXyA9PSAiY29udGVudCBu
YW1lIi4gIFdoZW4gd2UgaW5pdGlhdGUgYSBzZXNzaW9uLCB3ZSBjaG9vc2UgdGhlCkBAIC0yOSw3
ICszMSw3IEBAIGV4dGVybiBjb25zdCBjaGFyIENOX09USEVSW107CiBleHRlcm4gY29uc3QgY2hh
ciBHUk9VUF9UWVBFX0JVTkRMRVtdOwogCiBleHRlcm4gY29uc3QgaW50IElDRV9VRlJBR19MRU5H
VEg7Ci1leHRlcm4gY29uc3QgaW50IElDRV9QV0RfTEVOR1RIOworUlRDX0VYUE9SVCBleHRlcm4g
Y29uc3QgaW50IElDRV9QV0RfTEVOR1RIOwogZXh0ZXJuIGNvbnN0IHNpemVfdCBJQ0VfVUZSQUdf
TUlOX0xFTkdUSDsKIGV4dGVybiBjb25zdCBzaXplX3QgSUNFX1BXRF9NSU5fTEVOR1RIOwogZXh0
ZXJuIGNvbnN0IHNpemVfdCBJQ0VfVUZSQUdfTUFYX0xFTkdUSDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5zcG9y
dGNoYW5uZWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFubmVsLmNjCmluZGV4IGIwYWJlMjRhMDU4MGExMmEwZmJl
YzAyNWU2M2FmMTIwZGVjNjdmYjAuLmY2MTI5MWM1ZGRjMDA4MjZlYjQyNDczNjRhYzRmNWExYmEy
NTEyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbC5j
YwpAQCAtMzIzLDYgKzMyMywxMCBAQCBJY2VUcmFuc3BvcnRTdGF0ZSBQMlBUcmFuc3BvcnRDaGFu
bmVsOjpHZXRTdGF0ZSgpIGNvbnN0IHsKICAgcmV0dXJuIHN0YXRlXzsKIH0KIAord2VicnRjOjpJ
Y2VUcmFuc3BvcnRTdGF0ZSBQMlBUcmFuc3BvcnRDaGFubmVsOjpHZXRJY2VUcmFuc3BvcnRTdGF0
ZSgpIGNvbnN0IHsKKyAgcmV0dXJuIHN0YW5kYXJkaXplZF9zdGF0ZV87Cit9CisKIGNvbnN0IHN0
ZDo6c3RyaW5nJiBQMlBUcmFuc3BvcnRDaGFubmVsOjp0cmFuc3BvcnRfbmFtZSgpIGNvbnN0IHsK
ICAgcmV0dXJuIHRyYW5zcG9ydF9uYW1lXzsKIH0KQEAgLTM4Nyw2ICszOTEsNDEgQEAgSWNlVHJh
bnNwb3J0U3RhdGUgUDJQVHJhbnNwb3J0Q2hhbm5lbDo6Q29tcHV0ZVN0YXRlKCkgY29uc3Qgewog
ICByZXR1cm4gSWNlVHJhbnNwb3J0U3RhdGU6OlNUQVRFX0NPTVBMRVRFRDsKIH0KIAorLy8gQ29t
cHV0ZSB0aGUgY3VycmVudCBSVENJY2VUcmFuc3BvcnRTdGF0ZSBhcyBkZXNjcmliZWQgaW4KKy8v
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJydGMvI2RvbS1ydGNpY2V0cmFuc3BvcnRzdGF0ZQor
Ly8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTMwOCk6IFJldHVybiBJY2VUcmFuc3BvcnRTdGF0ZTo6
a0Rpc2Nvbm5lY3RlZCB3aGVuIGl0CisvLyBtYWtlcyBzZW5zZS4KKy8vIFRPRE8oYnVncy53ZWJy
dGMub3JnLzkyMTgpOiBBdm9pZCBwcmVtYXR1cmVseSBzaWduYWxsaW5nIGtGYWlsZWQgb25jZSB3
ZSBoYXZlCisvLyBpbXBsZW1lbnRlZCBlbmQtb2YtY2FuZGlkYXRlcyBzaWduYWxsaW5nLgord2Vi
cnRjOjpJY2VUcmFuc3BvcnRTdGF0ZSBQMlBUcmFuc3BvcnRDaGFubmVsOjpDb21wdXRlSWNlVHJh
bnNwb3J0U3RhdGUoKQorICAgIGNvbnN0IHsKKyAgYm9vbCBoYXNfY29ubmVjdGlvbiA9IGZhbHNl
OworICBmb3IgKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24gOiBjb25uZWN0aW9uc18pIHsKKyAgICBp
ZiAoY29ubmVjdGlvbi0+YWN0aXZlKCkpIHsKKyAgICAgIGhhc19jb25uZWN0aW9uID0gdHJ1ZTsK
KyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIHN3aXRjaCAoZ2F0aGVyaW5nX3N0YXRlXykg
eworICAgIGNhc2Uga0ljZUdhdGhlcmluZ0NvbXBsZXRlOgorICAgICAgaWYgKGhhc19jb25uZWN0
aW9uKQorICAgICAgICByZXR1cm4gd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6a0NvbXBsZXRl
ZDsKKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6
OmtGYWlsZWQ7CisgICAgY2FzZSBrSWNlR2F0aGVyaW5nTmV3OgorICAgICAgcmV0dXJuIHdlYnJ0
Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtOZXc7CisgICAgY2FzZSBrSWNlR2F0aGVyaW5nR2F0aGVy
aW5nOgorICAgICAgaWYgKGhhc19jb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gd2VicnRjOjpJ
Y2VUcmFuc3BvcnRTdGF0ZTo6a0Nvbm5lY3RlZDsKKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJu
IHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtDaGVja2luZzsKKyAgICBkZWZhdWx0OgorICAg
ICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgICAgIHJldHVybiB3ZWJydGM6OkljZVRyYW5zcG9ydFN0
YXRlOjprRmFpbGVkOworICB9Cit9CisKIHZvaWQgUDJQVHJhbnNwb3J0Q2hhbm5lbDo6U2V0SWNl
UGFyYW1ldGVycyhjb25zdCBJY2VQYXJhbWV0ZXJzJiBpY2VfcGFyYW1zKSB7CiAgIFJUQ19EQ0hF
Q0sobmV0d29ya190aHJlYWRfID09IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCkpOwogICBSVENfTE9H
KExTX0lORk8pIDw8ICJTZXQgSUNFIHVmcmFnOiAiIDw8IGljZV9wYXJhbXMudWZyYWcKQEAgLTE4
MjcsNiArMTg2Niw5IEBAIHZvaWQgUDJQVHJhbnNwb3J0Q2hhbm5lbDo6U3dpdGNoU2VsZWN0ZWRD
b25uZWN0aW9uKENvbm5lY3Rpb24qIGNvbm4pIHsKIC8vIGV4YW1wbGUsIHdlIGNhbGwgdGhpcyBh
dCB0aGUgZW5kIG9mIFNvcnRDb25uZWN0aW9uc0FuZFVwZGF0ZVN0YXRlLgogdm9pZCBQMlBUcmFu
c3BvcnRDaGFubmVsOjpVcGRhdGVTdGF0ZSgpIHsKICAgSWNlVHJhbnNwb3J0U3RhdGUgc3RhdGUg
PSBDb21wdXRlU3RhdGUoKTsKKyAgd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZSBjdXJyZW50X3N0
YW5kYXJkaXplZF9zdGF0ZSA9CisgICAgICBDb21wdXRlSWNlVHJhbnNwb3J0U3RhdGUoKTsKKwog
ICBpZiAoc3RhdGVfICE9IHN0YXRlKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCBUb1N0cmlu
ZygpCiAgICAgICAgICAgICAgICAgICAgICA8PCAiOiBUcmFuc3BvcnQgY2hhbm5lbCBzdGF0ZSBj
aGFuZ2VkIGZyb20gIgpAQCAtMTg2OCw2ICsxOTEwLDEwIEBAIHZvaWQgUDJQVHJhbnNwb3J0Q2hh
bm5lbDo6VXBkYXRlU3RhdGUoKSB7CiAgICAgU2lnbmFsU3RhdGVDaGFuZ2VkKHRoaXMpOwogICB9
CiAKKyAgaWYgKHN0YW5kYXJkaXplZF9zdGF0ZV8gIT0gY3VycmVudF9zdGFuZGFyZGl6ZWRfc3Rh
dGUpIHsKKyAgICBzdGFuZGFyZGl6ZWRfc3RhdGVfID0gY3VycmVudF9zdGFuZGFyZGl6ZWRfc3Rh
dGU7CisgICAgU2lnbmFsSWNlVHJhbnNwb3J0U3RhdGVDaGFuZ2VkKHRoaXMpOworICB9CiAgIC8v
IElmIG91ciBzZWxlY3RlZCBjb25uZWN0aW9uIGlzICJwcmVzdW1lZCB3cml0YWJsZSIgKFRVUk4t
VFVSTiB3aXRoIG5vCiAgIC8vIENyZWF0ZVBlcm1pc3Npb24gcmVxdWlyZWQpLCBhY3QgbGlrZSB3
ZSdyZSBhbHJlYWR5IHdyaXRhYmxlIHRvIHRoZSB1cHBlcgogICAvLyBsYXllcnMsIHNvIHRoZXkg
Y2FuIHN0YXJ0IG1lZGlhIHF1aWNrZXIuCkBAIC0yMzE5LDcgKzIzNjUsNyBAQCBib29sIFAyUFRy
YW5zcG9ydENoYW5uZWw6OlBydW5lUG9ydChQb3J0SW50ZXJmYWNlKiBwb3J0KSB7CiB2b2lkIFAy
UFRyYW5zcG9ydENoYW5uZWw6Ok9uUmVhZFBhY2tldChDb25uZWN0aW9uKiBjb25uZWN0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUm
IHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIFJUQ19EQ0hFQ0sobmV0d29ya190aHJlYWRfID09
IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCkpOwogCiAgIC8vIERvIG5vdCBkZWxpdmVyLCBpZiBwYWNr
ZXQgZG9lc24ndCBiZWxvbmcgdG8gdGhlIGNvcnJlY3QgdHJhbnNwb3J0IGNoYW5uZWwuCkBAIC0y
MzI3LDcgKzIzNzMsNyBAQCB2b2lkIFAyUFRyYW5zcG9ydENoYW5uZWw6Ok9uUmVhZFBhY2tldChD
b25uZWN0aW9uKiBjb25uZWN0aW9uLAogICAgIHJldHVybjsKIAogICAvLyBMZXQgdGhlIGNsaWVu
dCBrbm93IG9mIGFuIGluY29taW5nIHBhY2tldAotICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRh
dGEsIGxlbiwgcGFja2V0X3RpbWUsIDApOworICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEs
IGxlbiwgcGFja2V0X3RpbWVfdXMsIDApOwogCiAgIC8vIE1heSBuZWVkIHRvIHN3aXRjaCB0aGUg
c2VuZGluZyBjb25uZWN0aW9uIGJhc2VkIG9uIHRoZSByZWNlaXZpbmcgbWVkaWEgcGF0aAogICAv
LyBpZiB0aGlzIGlzIHRoZSBjb250cm9sbGVkIHNpZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFu
bmVsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS9wMnB0cmFuc3BvcnRjaGFubmVsLmgKaW5kZXggZmJlZDM0NGNjMzNlNmVjNzMxYzlmMDg2MDBi
ZGRiNWE4ZGIwMWZjOS4uYWJlZGQwYmRkMzQ4OTM3NWU1MmY5NDM2MTIyZmNkNjE5Y2E3NTM2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWwuaApAQCAtNDIs
NiArNDIsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcGFja2V0c29ja2V0LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0
cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4
cG9ydC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTc1LDcgKzc2LDcgQEAgY2xhc3MgUmVtb3RlQ2Fu
ZGlkYXRlIDogcHVibGljIENhbmRpZGF0ZSB7CiAKIC8vIFAyUFRyYW5zcG9ydENoYW5uZWwgbWFu
YWdlcyB0aGUgY2FuZGlkYXRlcyBhbmQgY29ubmVjdGlvbiBwcm9jZXNzIHRvIGtlZXAKIC8vIHR3
byBQMlAgY2xpZW50cyBjb25uZWN0ZWQgdG8gZWFjaCBvdGhlci4KLWNsYXNzIFAyUFRyYW5zcG9y
dENoYW5uZWwgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgeworY2xhc3MgUlRDX0VYUE9S
VCBQMlBUcmFuc3BvcnRDaGFubmVsIDogcHVibGljIEljZVRyYW5zcG9ydEludGVybmFsIHsKICBw
dWJsaWM6CiAgIC8vIEZvciB0ZXN0aW5nIG9ubHkuCiAgIC8vIFRPRE8oenN0ZWluKTogUmVtb3Zl
IG9uY2UgQXN5bmNSZXNvbHZlckZhY3RvcnkgaXMgcmVxdWlyZWQuCkBAIC05MSw2ICs5Miw4IEBA
IGNsYXNzIFAyUFRyYW5zcG9ydENoYW5uZWwgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwg
ewogCiAgIC8vIEZyb20gVHJhbnNwb3J0Q2hhbm5lbEltcGw6CiAgIEljZVRyYW5zcG9ydFN0YXRl
IEdldFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGUg
R2V0SWNlVHJhbnNwb3J0U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKwogICBjb25zdCBzdGQ6OnN0
cmluZyYgdHJhbnNwb3J0X25hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgaW50IGNvbXBvbmVudCgp
IGNvbnN0IG92ZXJyaWRlOwogICBib29sIHdyaXRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0y
NDMsNyArMjQ2LDEzIEBAIGNsYXNzIFAyUFRyYW5zcG9ydENoYW5uZWwgOiBwdWJsaWMgSWNlVHJh
bnNwb3J0SW50ZXJuYWwgewogICB2b2lkIFVwZGF0ZVN0YXRlKCk7CiAgIHZvaWQgSGFuZGxlQWxs
VGltZWRPdXQoKTsKICAgdm9pZCBNYXliZVN0b3BQb3J0QWxsb2NhdG9yU2Vzc2lvbnMoKTsKKwor
ICAvLyBDb21wdXRlSWNlVHJhbnNwb3J0U3RhdGUgY29tcHV0ZXMgdGhlIFJUQ0ljZVRyYW5zcG9y
dFN0YXRlIGFzIGRlc2NyaWJlZCBpbgorICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRj
LXBjLyNkb20tcnRjaWNldHJhbnNwb3J0c3RhdGUuIENvbXB1dGVTdGF0ZQorICAvLyBjb21wdXRl
cyB0aGUgdmFsdWUgd2UgY3VycmVudGx5IGV4cG9ydCBhcyBSVENJY2VUcmFuc3BvcnRTdGF0ZS4K
KyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTMwOCk6IFJlbW92ZSBDb21wdXRlU3RhdGUgb25j
ZSBpdCdzIG5vIGxvbmdlciB1c2VkLgogICBJY2VUcmFuc3BvcnRTdGF0ZSBDb21wdXRlU3RhdGUo
KSBjb25zdDsKKyAgd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZSBDb21wdXRlSWNlVHJhbnNwb3J0
U3RhdGUoKSBjb25zdDsKIAogICBDb25uZWN0aW9uKiBHZXRCZXN0Q29ubmVjdGlvbk9uTmV0d29y
ayhydGM6Ok5ldHdvcmsqIG5ldHdvcmspIGNvbnN0OwogICBib29sIENyZWF0ZUNvbm5lY3Rpb25z
KGNvbnN0IENhbmRpZGF0ZSYgcmVtb3RlX2NhbmRpZGF0ZSwKQEAgLTI5NSw3ICszMDQsNyBAQCBj
bGFzcyBQMlBUcmFuc3BvcnRDaGFubmVsIDogcHVibGljIEljZVRyYW5zcG9ydEludGVybmFsIHsK
ICAgdm9pZCBPblJlYWRQYWNrZXQoQ29ubmVjdGlvbiogY29ubmVjdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxl
biwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGlt
ZSk7CisgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpOwogICB2b2lk
IE9uU2VudFBhY2tldChjb25zdCBydGM6OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KTsKICAgdm9p
ZCBPblJlYWR5VG9TZW5kKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24pOwogICB2b2lkIE9uQ29ubmVj
dGlvbkRlc3Ryb3llZChDb25uZWN0aW9uKiBjb25uZWN0aW9uKTsKQEAgLTQwNyw3ICs0MTYsMTEg
QEAgY2xhc3MgUDJQVHJhbnNwb3J0Q2hhbm5lbCA6IHB1YmxpYyBJY2VUcmFuc3BvcnRJbnRlcm5h
bCB7CiAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkJhc2ljUmVnYXRoZXJpbmdDb250cm9sbGVy
PiByZWdhdGhlcmluZ19jb250cm9sbGVyXzsKICAgaW50NjRfdCBsYXN0X3Bpbmdfc2VudF9tc18g
PSAwOwogICBpbnQgd2Vha19waW5nX2ludGVydmFsXyA9IFdFQUtfUElOR19JTlRFUlZBTDsKKyAg
Ly8gVE9ETyhqb25hc29sc3Nvbik6IFJlbW92ZSBzdGF0ZV8gYW5kIHJlbmFtZSBzdGFuZGFyZGl6
ZWRfc3RhdGVfIG9uY2Ugc3RhdGVfCisgIC8vIGlzIG5vIGxvbmdlciB1c2VkIHRvIGNvbXB1dGUg
dGhlIElDRSBjb25uZWN0aW9uIHN0YXRlLgogICBJY2VUcmFuc3BvcnRTdGF0ZSBzdGF0ZV8gPSBJ
Y2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfSU5JVDsKKyAgd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0
ZSBzdGFuZGFyZGl6ZWRfc3RhdGVfID0KKyAgICAgIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6
OmtOZXc7CiAgIEljZUNvbmZpZyBjb25maWdfOwogICBpbnQgbGFzdF9zZW50X3BhY2tldF9pZF8g
PSAtMTsgIC8vIC0xIGluZGljYXRlcyBubyBwYWNrZXQgd2FzIHNlbnQgYmVmb3JlLgogICBib29s
IHN0YXJ0ZWRfcGluZ2luZ18gPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWxfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9wMnB0cmFuc3BvcnRjaGFubmVsX3VuaXR0ZXN0LmNjCmluZGV4IDc2YjkxOGNhMWU0YmNl
OTI3NjNiZGVlNDU3MTEzN2E3M2ViNWNmNWYuLjJhYjNkODhhZmJjNTk3YWQ3ZTUyMGM3ZThmMWJm
OWZmYzBjNDhjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWxfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJh
bnNwb3J0Y2hhbm5lbF91bml0dGVzdC5jYwpAQCAtNjk5LDcgKzY5OSw2IEBAIGNsYXNzIFAyUFRy
YW5zcG9ydENoYW5uZWxUZXN0QmFzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgIEVYUEVD
VF9ORShpbmZvLnBhY2tldF90eXBlLCBydGM6OlBhY2tldFR5cGU6OmtVbmtub3duKTsKICAgICBF
WFBFQ1RfTkUoaW5mby5wcm90b2NvbCwgcnRjOjpQYWNrZXRJbmZvUHJvdG9jb2xUeXBlOjprVW5r
bm93bik7CiAgICAgRVhQRUNUX1RSVUUoaW5mby5uZXR3b3JrX2lkLmhhc192YWx1ZSgpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoaW5mby5sb2NhbF9zb2NrZXRfYWRkcmVzcy5Jc05pbCgpKTsKICAgfQog
CiAgIHZvaWQgT25SZWFkeVRvU2VuZChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFu
c3BvcnQpIHsKQEAgLTgxMSw3ICs4MTAsNyBAQCBjbGFzcyBQMlBUcmFuc3BvcnRDaGFubmVsVGVz
dEJhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgdm9pZCBPblJlYWRQYWNrZXQocnRjOjpQ
YWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lLAorICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLywKICAgICAg
ICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7CiAgICAgc3RkOjpsaXN0PHN0ZDo6c3RyaW5nPiYg
cGFja2V0cyA9IEdldFBhY2tldExpc3QodHJhbnNwb3J0KTsKICAgICBwYWNrZXRzLnB1c2hfZnJv
bnQoc3RkOjpzdHJpbmcoZGF0YSwgbGVuKSk7CkBAIC0zMjA0LDcgKzMyMDMsNyBAQCBjbGFzcyBQ
MlBUcmFuc3BvcnRDaGFubmVsUGluZ1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgICBt
c2cuQWRkRmluZ2VycHJpbnQoKTsKICAgICBydGM6OkJ5dGVCdWZmZXJXcml0ZXIgYnVmOwogICAg
IG1zZy5Xcml0ZSgmYnVmKTsKLSAgICBjb25uLT5PblJlYWRQYWNrZXQoYnVmLkRhdGEoKSwgYnVm
Lkxlbmd0aCgpLCBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpOworICAgIGNvbm4tPk9uUmVhZFBh
Y2tldChidWYuRGF0YSgpLCBidWYuTGVuZ3RoKCksIHJ0Yzo6VGltZU1pY3JvcygpKTsKICAgfQog
CiAgIHZvaWQgT25SZWFkeVRvU2VuZChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFu
c3BvcnQpIHsKQEAgLTM2MTMsNyArMzYxMiw3IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVs
UGluZ1Rlc3QsIFRlc3RSZWNlaXZpbmdTdGF0ZUNoYW5nZSkgewogCiAgIGNsb2NrLkFkdmFuY2VU
aW1lKHdlYnJ0Yzo6VGltZURlbHRhOjpzZWNvbmRzKDEpKTsKICAgY29ubjEtPlJlY2VpdmVkUGlu
ZygpOwotICBjb25uMS0+T25SZWFkUGFja2V0KCJBQkMiLCAzLCBydGM6OkNyZWF0ZVBhY2tldFRp
bWUoMCkpOworICBjb25uMS0+T25SZWFkUGFja2V0KCJBQkMiLCAzLCBydGM6OlRpbWVNaWNyb3Mo
KSk7CiAgIEVYUEVDVF9UUlVFX1NJTVVMQVRFRF9XQUlUKGNoLnJlY2VpdmluZygpLCBrU2hvcnRU
aW1lb3V0LCBjbG9jayk7CiAgIEVYUEVDVF9UUlVFX1NJTVVMQVRFRF9XQUlUKCFjaC5yZWNlaXZp
bmcoKSwga1Nob3J0VGltZW91dCwgY2xvY2spOwogfQpAQCAtMzgwNCw3ICszODAzLDcgQEAgVEVT
VF9GKFAyUFRyYW5zcG9ydENoYW5uZWxQaW5nVGVzdCwgVGVzdFNlbGVjdENvbm5lY3Rpb25CYXNl
ZE9uTWVkaWFSZWNlaXZlZCkgewogICBDb25uZWN0aW9uKiBjb25uMiA9IFdhaXRGb3JDb25uZWN0
aW9uVG8oJmNoLCAiMi4yLjIuMiIsIDIpOwogICBBU1NFUlRfVFJVRShjb25uMiAhPSBudWxscHRy
KTsKICAgY29ubjItPlJlY2VpdmVkUGluZ1Jlc3BvbnNlKExPV19SVFQsICJpZCIpOyAgLy8gQmVj
b21lIHdyaXRhYmxlIGFuZCByZWNlaXZpbmcuCi0gIGNvbm4yLT5PblJlYWRQYWNrZXQoIkFCQyIs
IDMsIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7CisgIGNvbm4yLT5PblJlYWRQYWNrZXQoIkFC
QyIsIDMsIHJ0Yzo6VGltZU1pY3JvcygpKTsKICAgRVhQRUNUX0VRKGNvbm4yLCBjaC5zZWxlY3Rl
ZF9jb25uZWN0aW9uKCkpOwogICBjb25uMi0+UmVjZWl2ZWRQaW5nUmVzcG9uc2UoTE9XX1JUVCwg
ImlkIik7ICAvLyBCZWNvbWUgd3JpdGFibGUuCiAKQEAgLTM4MzIsNyArMzgzMSw3IEBAIFRFU1Rf
RihQMlBUcmFuc3BvcnRDaGFubmVsUGluZ1Rlc3QsIFRlc3RTZWxlY3RDb25uZWN0aW9uQmFzZWRP
bk1lZGlhUmVjZWl2ZWQpIHsKICAgLy8gc2VsZWN0ZWQgY29ubmVjdGlvbiB3YXMgbm9taW5hdGVk
IGJ5IHRoZSBjb250cm9sbGluZyBzaWRlLgogICBjb25uMi0+UmVjZWl2ZWRQaW5nKCk7CiAgIGNv
bm4yLT5SZWNlaXZlZFBpbmdSZXNwb25zZShMT1dfUlRULCAiaWQiKTsKLSAgY29ubjItPk9uUmVh
ZFBhY2tldCgiWFlaIiwgMywgcnRjOjpDcmVhdGVQYWNrZXRUaW1lKDApKTsKKyAgY29ubjItPk9u
UmVhZFBhY2tldCgiWFlaIiwgMywgcnRjOjpUaW1lTWljcm9zKCkpOwogICBFWFBFQ1RfRVFfV0FJ
VChjb25uMywgY2guc2VsZWN0ZWRfY29ubmVjdGlvbigpLCBrRGVmYXVsdFRpbWVvdXQpOwogfQog
CkBAIC0zODYxLDEyICszODYwLDEyIEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsUGluZ1Rl
c3QsCiAgIC8vIEFkdmFuY2UgdGhlIGNsb2NrIGJ5IDFtcyBzbyB0aGF0IHRoZSBsYXN0IGRhdGEg
cmVjZWl2aW5nIHRpbWVzdGFtcCBvZgogICAvLyBjb25uMiBpcyBsYXJnZXIuCiAgIFNJTVVMQVRF
RF9XQUlUKGZhbHNlLCAxLCBjbG9jayk7Ci0gIGNvbm4yLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMs
IHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7CisgIGNvbm4yLT5PblJlYWRQYWNrZXQoIlhZWiIs
IDMsIHJ0Yzo6VGltZU1pY3JvcygpKTsKICAgRVhQRUNUX0VRKDEsIHJlc2V0X3NlbGVjdGVkX2Nh
bmRpZGF0ZV9wYWlyX3N3aXRjaGVzKCkpOwogICBFWFBFQ1RfVFJVRShDYW5kaWRhdGVQYWlyTWF0
Y2hlc05ldHdvcmtSb3V0ZShjb25uMikpOwogCiAgIC8vIGNvbm4xIGFsc28gcmVjZWl2ZXMgZGF0
YTsgaXQgYmVjb21lcyBzZWxlY3RlZCBkdWUgdG8gcHJpb3JpdHkgYWdhaW4uCi0gIGNvbm4xLT5P
blJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7CisgIGNvbm4x
LT5PblJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0Yzo6VGltZU1pY3JvcygpKTsKICAgRVhQRUNUX0VR
KDEsIHJlc2V0X3NlbGVjdGVkX2NhbmRpZGF0ZV9wYWlyX3N3aXRjaGVzKCkpOwogICBFWFBFQ1Rf
VFJVRShDYW5kaWRhdGVQYWlyTWF0Y2hlc05ldHdvcmtSb3V0ZShjb25uMikpOwogCkBAIC0zODc1
LDcgKzM4NzQsNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFBpbmdUZXN0LAogICBTSU1V
TEFURURfV0FJVChmYWxzZSwgMSwgY2xvY2spOwogICAvLyBOZWVkIHRvIGJlY29tZSB3cml0YWJs
ZSBhZ2FpbiBiZWNhdXNlIGl0IHdhcyBwcnVuZWQuCiAgIGNvbm4yLT5SZWNlaXZlZFBpbmdSZXNw
b25zZShMT1dfUlRULCAiaWQiKTsKLSAgY29ubjItPk9uUmVhZFBhY2tldCgiWFlaIiwgMywgcnRj
OjpDcmVhdGVQYWNrZXRUaW1lKDApKTsKKyAgY29ubjItPk9uUmVhZFBhY2tldCgiWFlaIiwgMywg
cnRjOjpUaW1lTWljcm9zKCkpOwogICBFWFBFQ1RfRVEoMSwgcmVzZXRfc2VsZWN0ZWRfY2FuZGlk
YXRlX3BhaXJfc3dpdGNoZXMoKSk7CiAgIEVYUEVDVF9UUlVFKENhbmRpZGF0ZVBhaXJNYXRjaGVz
TmV0d29ya1JvdXRlKGNvbm4yKSk7CiAKQEAgLTM5MDUsNyArMzkwNCw3IEBAIFRFU1RfRihQMlBU
cmFuc3BvcnRDaGFubmVsUGluZ1Rlc3QsCiAgIC8vIGNvbm4xIHJlY2VpdmVkIGRhdGE7IGl0IGlz
IHRoZSBzZWxlY3RlZCBjb25uZWN0aW9uLgogICAvLyBBZHZhbmNlIHRoZSBjbG9jayB0byBoYXZl
IGEgbm9uLXplcm8gbGFzdC1kYXRhLXJlY2VpdmluZyB0aW1lLgogICBTSU1VTEFURURfV0FJVChm
YWxzZSwgMSwgY2xvY2spOwotICBjb25uMS0+T25SZWFkUGFja2V0KCJYWVoiLCAzLCBydGM6OkNy
ZWF0ZVBhY2tldFRpbWUoMCkpOworICBjb25uMS0+T25SZWFkUGFja2V0KCJYWVoiLCAzLCBydGM6
OlRpbWVNaWNyb3MoKSk7CiAgIEVYUEVDVF9FUSgxLCByZXNldF9zZWxlY3RlZF9jYW5kaWRhdGVf
cGFpcl9zd2l0Y2hlcygpKTsKICAgRVhQRUNUX1RSVUUoQ2FuZGlkYXRlUGFpck1hdGNoZXNOZXR3
b3JrUm91dGUoY29ubjEpKTsKIApAQCAtNDEyNiw3ICs0MTI1LDcgQEAgVEVTVF9GKFAyUFRyYW5z
cG9ydENoYW5uZWxQaW5nVGVzdCwgVGVzdERvbnRQcnVuZUhpZ2hQcmlvcml0eUNvbm5lY3Rpb25z
KSB7CiAgIC8vIGNvbm4yLgogICBOb21pbmF0ZUNvbm5lY3Rpb24oY29ubjEpOwogICBTSU1VTEFU
RURfV0FJVChmYWxzZSwgMSwgY2xvY2spOwotICBjb25uMS0+T25SZWFkUGFja2V0KCJYWVoiLCAz
LCBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpOworICBjb25uMS0+T25SZWFkUGFja2V0KCJYWVoi
LCAzLCBydGM6OlRpbWVNaWNyb3MoKSk7CiAgIFNJTVVMQVRFRF9XQUlUKGNvbm4yLT5wcnVuZWQo
KSwgMTAwLCBjbG9jayk7CiAgIEVYUEVDVF9GQUxTRShjb25uMi0+cHJ1bmVkKCkpOwogfQpAQCAt
NDEzNyw2ICs0MTM2LDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxQaW5nVGVzdCwgVGVz
dEdldFN0YXRlKSB7CiAgIGNsb2NrLkFkdmFuY2VUaW1lKHdlYnJ0Yzo6VGltZURlbHRhOjpzZWNv
bmRzKDEpKTsKICAgRmFrZVBvcnRBbGxvY2F0b3IgcGEocnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwg
bnVsbHB0cik7CiAgIFAyUFRyYW5zcG9ydENoYW5uZWwgY2goInRlc3QgY2hhbm5lbCIsIDEsICZw
YSk7CisgIEVYUEVDVF9FUSh3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlOjprTmV3LCBjaC5HZXRJ
Y2VUcmFuc3BvcnRTdGF0ZSgpKTsKICAgUHJlcGFyZUNoYW5uZWwoJmNoKTsKICAgY2guTWF5YmVT
dGFydEdhdGhlcmluZygpOwogICBFWFBFQ1RfRVEoSWNlVHJhbnNwb3J0U3RhdGU6OlNUQVRFX0lO
SVQsIGNoLkdldFN0YXRlKCkpOwpAQCAtNDE0NCw2ICs0MTQ0LDggQEAgVEVTVF9GKFAyUFRyYW5z
cG9ydENoYW5uZWxQaW5nVGVzdCwgVGVzdEdldFN0YXRlKSB7CiAgIGNoLkFkZFJlbW90ZUNhbmRp
ZGF0ZShDcmVhdGVVZHBDYW5kaWRhdGUoTE9DQUxfUE9SVF9UWVBFLCAiMi4yLjIuMiIsIDIsIDEp
KTsKICAgQ29ubmVjdGlvbiogY29ubjEgPSBXYWl0Rm9yQ29ubmVjdGlvblRvKCZjaCwgIjEuMS4x
LjEiLCAxLCAmY2xvY2spOwogICBDb25uZWN0aW9uKiBjb25uMiA9IFdhaXRGb3JDb25uZWN0aW9u
VG8oJmNoLCAiMi4yLjIuMiIsIDIsICZjbG9jayk7CisgIC8vIEdhdGhlcmluZyBjb21wbGV0ZSB3
aXRoIGNhbmRpZGF0ZXMuCisgIEVYUEVDVF9FUSh3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlOjpr
Q29tcGxldGVkLCBjaC5HZXRJY2VUcmFuc3BvcnRTdGF0ZSgpKTsKICAgQVNTRVJUX1RSVUUoY29u
bjEgIT0gbnVsbHB0cik7CiAgIEFTU0VSVF9UUlVFKGNvbm4yICE9IG51bGxwdHIpOwogICAvLyBO
b3cgdGhlcmUgYXJlIHR3byBjb25uZWN0aW9ucywgc28gdGhlIHRyYW5zcG9ydCBjaGFubmVsIGlz
IGNvbm5lY3RpbmcuCkBAIC00MTU2LDYgKzQxNTgsNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hh
bm5lbFBpbmdUZXN0LCBUZXN0R2V0U3RhdGUpIHsKICAgLy8gTmVlZCB0byB3YWl0IHVudGlsIHRo
ZSBjaGFubmVsIHN0YXRlIGlzIHVwZGF0ZWQuCiAgIEVYUEVDVF9FUV9TSU1VTEFURURfV0FJVChJ
Y2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfRkFJTEVELCBjaC5HZXRTdGF0ZSgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAga1Nob3J0VGltZW91dCwgY2xvY2spOworICBFWFBFQ1RfRVEod2Vi
cnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6a0ZhaWxlZCwgY2guR2V0SWNlVHJhbnNwb3J0U3RhdGUo
KSk7CiB9CiAKIC8vIFRlc3QgdGhhdCB3aGVuIGEgbG93LXByaW9yaXR5IGNvbm5lY3Rpb24gaXMg
cHJ1bmVkLCBpdCBpcyBub3QgZGVsZXRlZApAQCAtNDU5MCw3ICs0NTkzLDcgQEAgVEVTVChQMlBU
cmFuc3BvcnRDaGFubmVsUmVzb2x2ZXJUZXN0LCBIb3N0bmFtZUNhbmRpZGF0ZUlzUmVzb2x2ZWQp
IHsKIC8vIHByZmx4IGNhbmRpZGF0ZSBpcyB1cGRhdGVkIHRvIGEgaG9zdCBjYW5kaWRhdGUgYWZ0
ZXIgdGhlIG5hbWUgcmVzb2x1dGlvbiBpcwogLy8gZG9uZS4KIFRFU1RfRihQMlBUcmFuc3BvcnRD
aGFubmVsVGVzdCwKLSAgICAgICBQZWVyUmVmbGV4aXZlQ2FuZGlkYXRlQmVmb3JlU2lnbmFsaW5n
V2l0aE1EbnNOYW1lKSB7CisgICAgICAgUGVlclJlZmxleGl2ZUNhbmRpZGF0ZUJlZm9yZVNpZ25h
bGluZ1dpdGhNZG5zTmFtZSkgewogICBydGM6Ok1vY2tBc3luY1Jlc29sdmVyIG1vY2tfYXN5bmNf
cmVzb2x2ZXI7CiAgIHdlYnJ0Yzo6TW9ja0FzeW5jUmVzb2x2ZXJGYWN0b3J5IG1vY2tfYXN5bmNf
cmVzb2x2ZXJfZmFjdG9yeTsKICAgRVhQRUNUX0NBTEwobW9ja19hc3luY19yZXNvbHZlcl9mYWN0
b3J5LCBDcmVhdGUoKSkKQEAgLTQ2MDEsNyArNDYwNCw3IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRD
aGFubmVsVGVzdCwKICAgQ29uZmlndXJlRW5kcG9pbnRzKE9QRU4sIE9QRU4sIGtPbmx5TG9jYWxQ
b3J0cywga09ubHlMb2NhbFBvcnRzKTsKICAgLy8gSUNFIHBhcmFtZXRlciB3aWxsIGJlIHNldCB1
cCB3aGVuIGNyZWF0aW5nIHRoZSBjaGFubmVscy4KICAgc2V0X3JlbW90ZV9pY2VfcGFyYW1ldGVy
X3NvdXJjZShGUk9NX1NFVElDRVBBUkFNRVRFUlMpOwotICBHZXRFbmRwb2ludCgwKS0+bmV0d29y
a19tYW5hZ2VyXy5DcmVhdGVNRG5zUmVzcG9uZGVyKCk7CisgIEdldEVuZHBvaW50KDApLT5uZXR3
b3JrX21hbmFnZXJfLkNyZWF0ZU1kbnNSZXNwb25kZXIoKTsKICAgR2V0RW5kcG9pbnQoMSktPmFz
eW5jX3Jlc29sdmVyX2ZhY3RvcnlfID0gJm1vY2tfYXN5bmNfcmVzb2x2ZXJfZmFjdG9yeTsKICAg
Q3JlYXRlQ2hhbm5lbHMoKTsKICAgLy8gUGF1c2Ugc2VuZGluZyBjYW5kaWRhdGVzIGZyb20gYm90
aCBlbmRwb2ludHMgdW50aWwgd2UgZmluZCBvdXQgd2hhdCBwb3J0CkBAIC00NjU2LDcgKzQ2NTks
NyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFRlc3QsCiAvLyBhIGhvc3QgY2FuZGlkYXRl
IGlmIHRoZSBob3N0bmFtZSBjYW5kaWRhdGUgdHVybnMgb3V0IHRvIGhhdmUgdGhlIHNhbWUgSVAK
IC8vIGFkZHJlc3MgYWZ0ZXIgdGhlIHJlc29sdXRpb24gY29tcGxldGVzLgogVEVTVF9GKFAyUFRy
YW5zcG9ydENoYW5uZWxUZXN0LAotICAgICAgIFBlZXJSZWZsZXhpdmVDYW5kaWRhdGVEdXJpbmdS
ZXNvbHZpbmdIb3N0Q2FuZGlkYXRlV2l0aE1EbnNOYW1lKSB7CisgICAgICAgUGVlclJlZmxleGl2
ZUNhbmRpZGF0ZUR1cmluZ1Jlc29sdmluZ0hvc3RDYW5kaWRhdGVXaXRoTWRuc05hbWUpIHsKICAg
TmljZU1vY2s8cnRjOjpNb2NrQXN5bmNSZXNvbHZlcj4gbW9ja19hc3luY19yZXNvbHZlcjsKICAg
d2VicnRjOjpNb2NrQXN5bmNSZXNvbHZlckZhY3RvcnkgbW9ja19hc3luY19yZXNvbHZlcl9mYWN0
b3J5OwogICBFWFBFQ1RfQ0FMTChtb2NrX2FzeW5jX3Jlc29sdmVyX2ZhY3RvcnksIENyZWF0ZSgp
KQpAQCAtNDY2Nyw3ICs0NjcwLDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0LAog
ICBDb25maWd1cmVFbmRwb2ludHMoT1BFTiwgT1BFTiwga09ubHlMb2NhbFBvcnRzLCBrT25seUxv
Y2FsUG9ydHMpOwogICAvLyBJQ0UgcGFyYW1ldGVyIHdpbGwgYmUgc2V0IHVwIHdoZW4gY3JlYXRp
bmcgdGhlIGNoYW5uZWxzLgogICBzZXRfcmVtb3RlX2ljZV9wYXJhbWV0ZXJfc291cmNlKEZST01f
U0VUSUNFUEFSQU1FVEVSUyk7Ci0gIEdldEVuZHBvaW50KDApLT5uZXR3b3JrX21hbmFnZXJfLkNy
ZWF0ZU1EbnNSZXNwb25kZXIoKTsKKyAgR2V0RW5kcG9pbnQoMCktPm5ldHdvcmtfbWFuYWdlcl8u
Q3JlYXRlTWRuc1Jlc3BvbmRlcigpOwogICBHZXRFbmRwb2ludCgxKS0+YXN5bmNfcmVzb2x2ZXJf
ZmFjdG9yeV8gPSAmbW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5OwogICBDcmVhdGVDaGFubmVs
cygpOwogICAvLyBQYXVzZSBzZW5kaW5nIGNhbmRpZGF0ZXMgZnJvbSBib3RoIGVuZHBvaW50cyB1
bnRpbCB3ZSBmaW5kIG91dCB3aGF0IHBvcnQKQEAgLTQ3MjMsNyArNDcyNiw3IEBAIFRFU1RfRihQ
MlBUcmFuc3BvcnRDaGFubmVsVGVzdCwKIC8vIFRlc3QgdGhhdCBpZiB3ZSBvbmx5IGdhdGhlciBh
bmQgc2lnbmFsIGEgaG9zdCBjYW5kaWRhdGUsIHRoZSBJUCBhZGRyZXNzIG9mCiAvLyB3aGljaCBp
cyBvYmZ1c2NhdGVkIGJ5IGFuIG1ETlMgbmFtZSwgYW5kIGlmIHRoZSBwZWVyIGNhbiBjb21wbGV0
ZSB0aGUgbmFtZQogLy8gcmVzb2x1dGlvbiB3aXRoIHRoZSBjb3JyZWN0IElQIGFkZHJlc3MsIHdl
IGNhbiBoYXZlIGEgcDJwIGNvbm5lY3Rpb24uCi1URVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFRl
c3QsIENhbkNvbm5lY3RXaXRoSG9zdENhbmRpZGF0ZVdpdGhNRG5zTmFtZSkgeworVEVTVF9GKFAy
UFRyYW5zcG9ydENoYW5uZWxUZXN0LCBDYW5Db25uZWN0V2l0aEhvc3RDYW5kaWRhdGVXaXRoTWRu
c05hbWUpIHsKICAgTmljZU1vY2s8cnRjOjpNb2NrQXN5bmNSZXNvbHZlcj4gbW9ja19hc3luY19y
ZXNvbHZlcjsKICAgd2VicnRjOjpNb2NrQXN5bmNSZXNvbHZlckZhY3RvcnkgbW9ja19hc3luY19y
ZXNvbHZlcl9mYWN0b3J5OwogICBFWFBFQ1RfQ0FMTChtb2NrX2FzeW5jX3Jlc29sdmVyX2ZhY3Rv
cnksIENyZWF0ZSgpKQpAQCAtNDczNCw3ICs0NzM3LDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENo
YW5uZWxUZXN0LCBDYW5Db25uZWN0V2l0aEhvc3RDYW5kaWRhdGVXaXRoTURuc05hbWUpIHsKICAg
Q29uZmlndXJlRW5kcG9pbnRzKE9QRU4sIE9QRU4sIGtPbmx5TG9jYWxQb3J0cywga09ubHlMb2Nh
bFBvcnRzKTsKICAgLy8gSUNFIHBhcmFtZXRlciB3aWxsIGJlIHNldCB1cCB3aGVuIGNyZWF0aW5n
IHRoZSBjaGFubmVscy4KICAgc2V0X3JlbW90ZV9pY2VfcGFyYW1ldGVyX3NvdXJjZShGUk9NX1NF
VElDRVBBUkFNRVRFUlMpOwotICBHZXRFbmRwb2ludCgwKS0+bmV0d29ya19tYW5hZ2VyXy5DcmVh
dGVNRG5zUmVzcG9uZGVyKCk7CisgIEdldEVuZHBvaW50KDApLT5uZXR3b3JrX21hbmFnZXJfLkNy
ZWF0ZU1kbnNSZXNwb25kZXIoKTsKICAgR2V0RW5kcG9pbnQoMSktPmFzeW5jX3Jlc29sdmVyX2Zh
Y3RvcnlfID0gJm1vY2tfYXN5bmNfcmVzb2x2ZXJfZmFjdG9yeTsKICAgQ3JlYXRlQ2hhbm5lbHMo
KTsKICAgLy8gUGF1c2Ugc2VuZGluZyBjYW5kaWRhdGVzIGZyb20gYm90aCBlbmRwb2ludHMgdW50
aWwgd2UgZmluZCBvdXQgd2hhdCBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wYWNrZXRzb2NrZXRmYWN0b3J5LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wYWNrZXRz
b2NrZXRmYWN0b3J5LmgKaW5kZXggNDY2N2JiMWZkNzAwMjhiOWUwNmQ0ZjY1NTc1NjMwNmI2MjM2
M2VkNi4uYzkwM2RmMDZjOGE5OGRkNDU2NTNjZDRlMDNmYTRmMDUwYzFiZTU3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcGFj
a2V0c29ja2V0ZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3BhY2tldHNvY2tldGZhY3RvcnkuaApAQCAtMTcsNiArMTcsNyBA
QAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9wcm94eWluZm8uaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSBydGMg
ewogCkBAIC0zNiw3ICszNyw3IEBAIHN0cnVjdCBQYWNrZXRTb2NrZXRUY3BPcHRpb25zIHsKIGNs
YXNzIEFzeW5jUGFja2V0U29ja2V0OwogY2xhc3MgQXN5bmNSZXNvbHZlckludGVyZmFjZTsKIAot
Y2xhc3MgUGFja2V0U29ja2V0RmFjdG9yeSB7CitjbGFzcyBSVENfRVhQT1JUIFBhY2tldFNvY2tl
dEZhY3RvcnkgewogIHB1YmxpYzoKICAgZW51bSBPcHRpb25zIHsKICAgICBPUFRfU1RVTiA9IDB4
MDQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9wYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwu
aAppbmRleCBjYTdmMDAzNjExNGRmODM2ZjFiY2NjNjhlMGM1ODU1OTg3YjMzNzFiLi43ZDUwZjlj
MGVlYTFkOTc3YmI4MDVhMmZiNjQ3OGRlZGRiNTkxMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wYWNrZXR0cmFuc3BvcnRp
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3BhY2tldHRyYW5zcG9ydGludGVybmFsLmgKQEAgLTIxLDE1ICsyMSwxNiBAQAog
I2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcGFja2V0c29ja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvbmV0d29ya3JvdXRlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0LmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGly
ZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiBzdHJ1Y3QgUGFj
a2V0T3B0aW9uczsKLXN0cnVjdCBQYWNrZXRUaW1lOwogc3RydWN0IFNlbnRQYWNrZXQ7CiAKLWNs
YXNzIFBhY2tldFRyYW5zcG9ydEludGVybmFsIDogcHVibGljIHZpcnR1YWwgd2VicnRjOjpQYWNr
ZXRUcmFuc3BvcnRJbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CitjbGFzcyBSVENfRVhQT1JUIFBhY2tldFRyYW5z
cG9ydEludGVybmFsCisgICAgOiBwdWJsaWMgdmlydHVhbCB3ZWJydGM6OlBhY2tldFRyYW5zcG9y
dEludGVyZmFjZSwKKyAgICAgIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgcHVibGlj
OgogICB2aXJ0dWFsIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSgpIGNvbnN0ID0g
MDsKIApAQCAtODUsNyArODYsOSBAQCBjbGFzcyBQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCA6IHB1
YmxpYyB2aXJ0dWFsIHdlYnJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlLAogICBzaWdzbG90
OjpzaWduYWw1PFBhY2tldFRyYW5zcG9ydEludGVybmFsKiwKICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiwKICAgICAgICAgICAgICAgICAgICBzaXplX3QsCi0gICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiwKKyAgICAgICAgICAgICAgICAgICAvLyBUT0RPKGJ1
Z3Mud2VicnRjLm9yZy85NTg0KTogQ2hhbmdlIHRvIHBhc3NpbmcgdGhlIGludDY0X3QKKyAgICAg
ICAgICAgICAgICAgICAvLyB0aW1lc3RhbXAgYnkgdmFsdWUuCisgICAgICAgICAgICAgICAgICAg
Y29uc3QgaW50NjRfdCYsCiAgICAgICAgICAgICAgICAgICAgaW50PgogICAgICAgU2lnbmFsUmVh
ZFBhY2tldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnQuY2MKaW5kZXggYWM3NTIxZTY2NzI3ZjZlOTQzNDgw
N2Y2NTBjMWFlM2JkMmY2MzE3OS4uNWI4ZTAyZDI4ZmY4OTRkM2QzNzZlZmFiM2IwN2YwZjNiZWU0
MGNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvcG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmNjCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8
dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJz
bC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvcG9ydGFsbG9jYXRvci5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyYzMyLmgi
CkBAIC0yNyw3ICsyOCw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29yay5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
c3RyaW5nZW5jb2RlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNs
dWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9iYXNlNjQvYmFzZTY0LmgiCiAKIG5hbWVzcGFjZSB7
CkBAIC0xODMsNyArMTgzLDcgQEAgY29uc3QgY2hhciogUHJvdG9Ub1N0cmluZyhQcm90b2NvbFR5
cGUgcHJvdG8pIHsKIAogYm9vbCBTdHJpbmdUb1Byb3RvKGNvbnN0IGNoYXIqIHZhbHVlLCBQcm90
b2NvbFR5cGUqIHByb3RvKSB7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDw9IFBST1RPX0xBU1Q7
ICsraSkgewotICAgIGlmIChfc3RyaWNtcChQUk9UT19OQU1FU1tpXSwgdmFsdWUpID09IDApIHsK
KyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShQUk9UT19OQU1FU1tpXSwgdmFsdWUpKSB7
CiAgICAgICAqcHJvdG8gPSBzdGF0aWNfY2FzdDxQcm90b2NvbFR5cGU+KGkpOwogICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMzk5LDkgKzM5OSw5IEBAIHZvaWQgUG9ydDo6QWRkQWRkcmVz
cyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgdHlwZV9wcmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJlbGF5
X3ByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgYm9vbCBmaW5hbCkgeworICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNfZmluYWwpIHsKICAgQWRkQWRkcmVzcyhhZGRyZXNzLCBi
YXNlX2FkZHJlc3MsIHJlbGF0ZWRfYWRkcmVzcywgcHJvdG9jb2wsIHJlbGF5X3Byb3RvY29sLAot
ICAgICAgICAgICAgIHRjcHR5cGUsIHR5cGUsIHR5cGVfcHJlZmVyZW5jZSwgcmVsYXlfcHJlZmVy
ZW5jZSwgIiIsIGZpbmFsKTsKKyAgICAgICAgICAgICB0Y3B0eXBlLCB0eXBlLCB0eXBlX3ByZWZl
cmVuY2UsIHJlbGF5X3ByZWZlcmVuY2UsICIiLCBpc19maW5hbCk7CiB9CiAKIHZvaWQgUG9ydDo6
QWRkQWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsCkBAIC00MzAsNDQg
KzQzMCw2MCBAQCB2b2lkIFBvcnQ6OkFkZEFkZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNz
JiBhZGRyZXNzLAogICBjLnNldF9uZXR3b3JrX25hbWUobmV0d29ya18tPm5hbWUoKSk7CiAgIGMu
c2V0X25ldHdvcmtfdHlwZShuZXR3b3JrXy0+dHlwZSgpKTsKICAgYy5zZXRfdXJsKHVybCk7Cisg
IGMuc2V0X3JlbGF0ZWRfYWRkcmVzcyhyZWxhdGVkX2FkZHJlc3MpOworCisgIGJvb2wgcGVuZGlu
ZyA9IE1heWJlT2JmdXNjYXRlQWRkcmVzcygmYywgdHlwZSwgaXNfZmluYWwpOworCisgIGlmICgh
cGVuZGluZykgeworICAgIEZpbmlzaEFkZGluZ0FkZHJlc3MoYywgaXNfZmluYWwpOworICB9Cit9
CisKK2Jvb2wgUG9ydDo6TWF5YmVPYmZ1c2NhdGVBZGRyZXNzKENhbmRpZGF0ZSogYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19maW5hbCkgewogICAvLyBUT0RP
KGJ1Z3Mud2VicnRjLm9yZy85NzIzKTogVXNlIGEgY29uZmlnIHRvIGNvbnRyb2wgdGhlIGZlYXR1
cmUgb2YgSVAKICAgLy8gaGFuZGxpbmcgd2l0aCBtRE5TLgotICBpZiAobmV0d29ya18tPkdldE1E
bnNSZXNwb25kZXIoKSAhPSBudWxscHRyKSB7Ci0gICAgLy8gT2JmdXNjYXRlIHRoZSBJUCBhZGRy
ZXNzIG9mIGEgaG9zdCBjYW5kaWRhdGVzIGJ5IGFuIG1ETlMgaG9zdG5hbWUuCi0gICAgaWYgKHR5
cGUgPT0gTE9DQUxfUE9SVF9UWVBFKSB7Ci0gICAgICBhdXRvIHdlYWtfcHRyID0gd2Vha19mYWN0
b3J5Xy5HZXRXZWFrUHRyKCk7Ci0gICAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtfcHRyLCBjLCBp
c19maW5hbF0oY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIG11dGFi
bGUgewotICAgICAgICBSVENfRENIRUNLKGMuYWRkcmVzcygpLmlwYWRkcigpID09IGFkZHIpOwot
ICAgICAgICBydGM6OlNvY2tldEFkZHJlc3MgaG9zdG5hbWVfYWRkcmVzcyhuYW1lLCBjLmFkZHJl
c3MoKS5wb3J0KCkpOwotICAgICAgICAvLyBJbiBQb3J0IGFuZCBDb25uZWN0aW9uLCB3ZSBuZWVk
IHRoZSBJUCBhZGRyZXNzIGluZm9ybWF0aW9uIHRvCi0gICAgICAgIC8vIGNvcnJlY3RseSBoYW5k
bGUgdGhlIHVwZGF0ZSBvZiBjYW5kaWRhdGUgdHlwZSB0byBwcmZseC4gVGhlIHJlbW92YWwKLSAg
ICAgICAgLy8gb2YgSVAgYWRkcmVzcyB3aGVuIHNpZ25hbGluZyB0aGlzIGNhbmRpZGF0ZSB3aWxs
IHRha2UgcGxhY2UgaW4KLSAgICAgICAgLy8gQmFzaWNQb3J0QWxsb2NhdG9yU2Vzc2lvbjo6T25D
YW5kaWRhdGVSZWFkeSwgdmlhIFNhbml0aXplQ2FuZGlkYXRlLgotICAgICAgICBob3N0bmFtZV9h
ZGRyZXNzLlNldFJlc29sdmVkSVAoYWRkcik7Ci0gICAgICAgIGMuc2V0X2FkZHJlc3MoaG9zdG5h
bWVfYWRkcmVzcyk7Ci0gICAgICAgIFJUQ19EQ0hFQ0soYy5yZWxhdGVkX2FkZHJlc3MoKSA9PSBy
dGM6OlNvY2tldEFkZHJlc3MoKSk7Ci0gICAgICAgIGlmICh3ZWFrX3B0ciAhPSBudWxscHRyKSB7
Ci0gICAgICAgICAgd2Vha19wdHItPkZpbmlzaEFkZGluZ0FkZHJlc3MoYywgaXNfZmluYWwpOwot
ICAgICAgICB9Ci0gICAgICB9OwotICAgICAgbmV0d29ya18tPkdldE1EbnNSZXNwb25kZXIoKS0+
Q3JlYXRlTmFtZUZvckFkZHJlc3MoYy5hZGRyZXNzKCkuaXBhZGRyKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayk7Ci0g
ICAgICByZXR1cm47Ci0gICAgfQotICAgIC8vIEZvciBvdGhlciB0eXBlcyBvZiBjYW5kaWRhdGVz
LCB0aGUgcmVsYXRlZCBhZGRyZXNzIHNob3VsZCBiZSBzZXQgdG8KLSAgICAvLyAwLjAuMC4wIG9y
IDo6MC4KLSAgICBjLnNldF9yZWxhdGVkX2FkZHJlc3MocnRjOjpTb2NrZXRBZGRyZXNzKCkpOwot
ICB9IGVsc2UgewotICAgIGMuc2V0X3JlbGF0ZWRfYWRkcmVzcyhyZWxhdGVkX2FkZHJlc3MpOwor
ICBpZiAobmV0d29ya18tPkdldE1kbnNSZXNwb25kZXIoKSA9PSBudWxscHRyKSB7CisgICAgcmV0
dXJuIGZhbHNlOworICB9CisgIGlmICh0eXBlICE9IExPQ0FMX1BPUlRfVFlQRSkgeworICAgIHJl
dHVybiBmYWxzZTsKICAgfQotICBGaW5pc2hBZGRpbmdBZGRyZXNzKGMsIGlzX2ZpbmFsKTsKKwor
ICBhdXRvIGNvcHkgPSAqYzsKKyAgYXV0byB3ZWFrX3B0ciA9IHdlYWtfZmFjdG9yeV8uR2V0V2Vh
a1B0cigpOworICBhdXRvIGNhbGxiYWNrID0gW3dlYWtfcHRyLCBjb3B5LCBpc19maW5hbF0oY29u
c3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkgbXV0YWJsZSB7CisgICAgUlRD
X0RDSEVDSyhjb3B5LmFkZHJlc3MoKS5pcGFkZHIoKSA9PSBhZGRyKTsKKyAgICBydGM6OlNvY2tl
dEFkZHJlc3MgaG9zdG5hbWVfYWRkcmVzcyhuYW1lLCBjb3B5LmFkZHJlc3MoKS5wb3J0KCkpOwor
ICAgIC8vIEluIFBvcnQgYW5kIENvbm5lY3Rpb24sIHdlIG5lZWQgdGhlIElQIGFkZHJlc3MgaW5m
b3JtYXRpb24gdG8KKyAgICAvLyBjb3JyZWN0bHkgaGFuZGxlIHRoZSB1cGRhdGUgb2YgY2FuZGlk
YXRlIHR5cGUgdG8gcHJmbHguIFRoZSByZW1vdmFsCisgICAgLy8gb2YgSVAgYWRkcmVzcyB3aGVu
IHNpZ25hbGluZyB0aGlzIGNhbmRpZGF0ZSB3aWxsIHRha2UgcGxhY2UgaW4KKyAgICAvLyBCYXNp
Y1BvcnRBbGxvY2F0b3JTZXNzaW9uOjpPbkNhbmRpZGF0ZVJlYWR5LCB2aWEgU2FuaXRpemVDYW5k
aWRhdGUuCisgICAgaG9zdG5hbWVfYWRkcmVzcy5TZXRSZXNvbHZlZElQKGFkZHIpOworICAgIGNv
cHkuc2V0X2FkZHJlc3MoaG9zdG5hbWVfYWRkcmVzcyk7CisgICAgY29weS5zZXRfcmVsYXRlZF9h
ZGRyZXNzKHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKKyAgICBpZiAod2Vha19wdHIgIT0gbnVsbHB0
cikgeworICAgICAgd2Vha19wdHItPnNldF9tZG5zX25hbWVfcmVnaXN0cmF0aW9uX3N0YXR1cygK
KyAgICAgICAgICBNZG5zTmFtZVJlZ2lzdHJhdGlvblN0YXR1czo6a0NvbXBsZXRlZCk7CisgICAg
ICB3ZWFrX3B0ci0+RmluaXNoQWRkaW5nQWRkcmVzcyhjb3B5LCBpc19maW5hbCk7CisgICAgfQor
ICB9OworICBzZXRfbWRuc19uYW1lX3JlZ2lzdHJhdGlvbl9zdGF0dXMoTWRuc05hbWVSZWdpc3Ry
YXRpb25TdGF0dXM6OmtJblByb2dyZXNzKTsKKyAgbmV0d29ya18tPkdldE1kbnNSZXNwb25kZXIo
KS0+Q3JlYXRlTmFtZUZvckFkZHJlc3MoY29weS5hZGRyZXNzKCkuaXBhZGRyKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKTsK
KyAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUG9ydDo6RmluaXNoQWRkaW5nQWRkcmVzcyhjb25z
dCBDYW5kaWRhdGUmIGMsIGJvb2wgaXNfZmluYWwpIHsKICAgY2FuZGlkYXRlc18ucHVzaF9iYWNr
KGMpOwogICBTaWduYWxDYW5kaWRhdGVSZWFkeSh0aGlzLCBjKTsKIAorICBQb3N0QWRkQWRkcmVz
cyhpc19maW5hbCk7Cit9CisKK3ZvaWQgUG9ydDo6UG9zdEFkZEFkZHJlc3MoYm9vbCBpc19maW5h
bCkgewogICBpZiAoaXNfZmluYWwpIHsKICAgICBTaWduYWxQb3J0Q29tcGxldGUodGhpcyk7CiAg
IH0KQEAgLTc3Myw3ICs3ODksNyBAQCBib29sIFBvcnQ6OkhhbmRsZUluY29taW5nUGFja2V0KHJ0
Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBSVENfTk9UUkVB
Q0hFRCgpOwogICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMjM2LDcgKzEyNTIsNyBAQCB2b2lkIENv
bm5lY3Rpb246Ok9uU2VuZFN0dW5QYWNrZXQoY29uc3Qgdm9pZCogZGF0YSwKIAogdm9pZCBDb25u
ZWN0aW9uOjpPblJlYWRQYWNrZXQoY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBzdGQ6OnVuaXF1ZV9wdHI8
SWNlTWVzc2FnZT4gbXNnOwogICBzdGQ6OnN0cmluZyByZW1vdGVfdWZyYWc7CiAgIGNvbnN0IHJ0
Yzo6U29ja2V0QWRkcmVzcyYgYWRkcihyZW1vdGVfY2FuZGlkYXRlXy5hZGRyZXNzKCkpOwpAQCAt
MTI0Niw3ICsxMjYyLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpPblJlYWRQYWNrZXQoY29uc3QgY2hh
ciogZGF0YSwKICAgICBsYXN0X2RhdGFfcmVjZWl2ZWRfID0gcnRjOjpUaW1lTWlsbGlzKCk7CiAg
ICAgVXBkYXRlUmVjZWl2aW5nKGxhc3RfZGF0YV9yZWNlaXZlZF8pOwogICAgIHJlY3ZfcmF0ZV90
cmFja2VyXy5BZGRTYW1wbGVzKHNpemUpOwotICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0
YSwgc2l6ZSwgcGFja2V0X3RpbWUpOworICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwg
c2l6ZSwgcGFja2V0X3RpbWVfdXMpOwogCiAgICAgLy8gSWYgdGltZWQgb3V0IHNlbmRpbmcgd3Jp
dGFiaWxpdHkgY2hlY2tzLCBzdGFydCB1cCBhZ2FpbgogICAgIGlmICghcHJ1bmVkXyAmJiAod3Jp
dGVfc3RhdGVfID09IFNUQVRFX1dSSVRFX1RJTUVPVVQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmgKaW5k
ZXggODU3MTFlNDFmNTZmOTM4OTJlNDNkNzMzYjlhNWNiMzA0OGNkYTk2Ny4uOWE4ZjkyYTk2ZTQ1
ZmQ5YTM5ZThjZjhkYjRiNTNjNTM1NmU2NDBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnQuaApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3Byb3h5aW5mby5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3JhdGV0cmFja2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
dGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvd2Vha19wdHIuaCIKQEAgLTQ5LDcgKzUwLDcg
QEAgY2xhc3MgQ29ubmVjdGlvblJlcXVlc3Q7CiBleHRlcm4gY29uc3QgY2hhciBMT0NBTF9QT1JU
X1RZUEVbXTsKIGV4dGVybiBjb25zdCBjaGFyIFNUVU5fUE9SVF9UWVBFW107CiBleHRlcm4gY29u
c3QgY2hhciBQUkZMWF9QT1JUX1RZUEVbXTsKLWV4dGVybiBjb25zdCBjaGFyIFJFTEFZX1BPUlRf
VFlQRVtdOworUlRDX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciBSRUxBWV9QT1JUX1RZUEVbXTsK
IAogLy8gUkZDIDY1NDQsIFRDUCBjYW5kaWRhdGUgZW5jb2RpbmcgcnVsZXMuCiBleHRlcm4gY29u
c3QgaW50IERJU0NBUkRfUE9SVDsKQEAgLTgzLDYgKzg0LDE4IEBAIGVudW0gY2xhc3MgSWNlQ2Fu
ZGlkYXRlUGFpclN0YXRlIHsKICAgLy8gZnJvemVuIGJlY2F1c2Ugd2UgaGF2ZSBub3QgaW1wbGVt
ZW50ZWQgSUNFIGZyZWV6aW5nIGxvZ2ljLgogfTsKIAorZW51bSBjbGFzcyBNZG5zTmFtZVJlZ2lz
dHJhdGlvblN0YXR1cyB7CisgIC8vIElQIGNvbmNlYWxtZW50IHdpdGggbUROUyBpcyBub3QgZW5h
YmxlZCBvciB0aGUgbmFtZSByZWdpc3RyYXRpb24gcHJvY2VzcyBpcworICAvLyBub3Qgc3RhcnRl
ZCB5ZXQuCisgIGtOb3RTdGFydGVkLAorICAvLyBBIHJlcXVlc3QgdG8gY3JlYXRlIGFuZCByZWdp
c3RlciBhbiBtRE5TIG5hbWUgZm9yIGEgbG9jYWwgSVAgYWRkcmVzcyBvZiBhCisgIC8vIGhvc3Qg
Y2FuZGlkYXRlIGlzIHNlbnQgdG8gdGhlIG1ETlMgcmVzcG9uZGVyLgorICBrSW5Qcm9ncmVzcywK
KyAgLy8gVGhlIG5hbWUgcmVnaXN0cmF0aW9uIGlzIGNvbXBsZXRlIGFuZCB0aGUgY3JlYXRlZCBu
YW1lIGlzIHJldHVybmVkIGJ5IHRoZQorICAvLyBtRE5TIHJlc3BvbmRlci4KKyAga0NvbXBsZXRl
ZCwKK307CisKIC8vIFN0YXRzIHRoYXQgd2UgY2FuIHJldHVybiBhYm91dCB0aGUgcG9ydCBvZiBh
IFNUVU4gY2FuZGlkYXRlLgogY2xhc3MgU3R1blN0YXRzIHsKICBwdWJsaWM6CkBAIC0zMDUsNyAr
MzE4LDcgQEAgY2xhc3MgUG9ydCA6IHB1YmxpYyBQb3J0SW50ZXJmYWNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYg
cGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBwYWNrZXRfdGltZV91cyk7CiAKICAgLy8gU2hhbGwgdGhlIHBvcnQgaGFuZGxlIHBhY2tldCBm
cm9tIHRoaXMgfHJlbW90ZV9hZGRyfC4KICAgLy8gVGhpcyBtZXRob2QgaXMgb3ZlcnJpZGRlbiBi
eSBUdXJuUG9ydC4KQEAgLTM5Miw3ICs0MDUsNyBAQCBjbGFzcyBQb3J0IDogcHVibGljIFBvcnRJ
bnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHlwZSwKICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5cGVfcHJlZmVyZW5jZSwKICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IHJlbGF5X3ByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICBib29sIGZp
bmFsKTsKKyAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZmluYWwpOwogCiAgIHZvaWQgQWRkQWRk
cmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsCiAgICAgICAgICAgICAgICAg
ICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGJhc2VfYWRkcmVzcywKQEAgLTQwOCw2ICs0MjEs
OCBAQCBjbGFzcyBQb3J0IDogcHVibGljIFBvcnRJbnRlcmZhY2UsCiAKICAgdm9pZCBGaW5pc2hB
ZGRpbmdBZGRyZXNzKGNvbnN0IENhbmRpZGF0ZSYgYywgYm9vbCBpc19maW5hbCk7CiAKKyAgdmly
dHVhbCB2b2lkIFBvc3RBZGRBZGRyZXNzKGJvb2wgaXNfZmluYWwpOworCiAgIC8vIEFkZHMgdGhl
IGdpdmVuIGNvbm5lY3Rpb24gdG8gdGhlIG1hcCBrZXllZCBieSB0aGUgcmVtb3RlIGNhbmRpZGF0
ZSBhZGRyZXNzLgogICAvLyBJZiBhbiBleGlzdGluZyBjb25uZWN0aW9uIGhhcyB0aGUgc2FtZSBh
ZGRyZXNzLCB0aGUgZXhpc3Rpbmcgb25lIHdpbGwgYmUKICAgLy8gcmVwbGFjZWQgYW5kIGRlc3Ry
b3llZC4KQEAgLTQ0Myw2ICs0NTgsMTMgQEAgY2xhc3MgUG9ydCA6IHB1YmxpYyBQb3J0SW50ZXJm
YWNlLAogCiAgIHZvaWQgQ29weVBvcnRJbmZvcm1hdGlvblRvUGFja2V0SW5mbyhydGM6OlBhY2tl
dEluZm8qIGluZm8pIGNvbnN0OwogCisgIE1kbnNOYW1lUmVnaXN0cmF0aW9uU3RhdHVzIG1kbnNf
bmFtZV9yZWdpc3RyYXRpb25fc3RhdHVzKCkgY29uc3QgeworICAgIHJldHVybiBtZG5zX25hbWVf
cmVnaXN0cmF0aW9uX3N0YXR1c187CisgIH0KKyAgdm9pZCBzZXRfbWRuc19uYW1lX3JlZ2lzdHJh
dGlvbl9zdGF0dXMoTWRuc05hbWVSZWdpc3RyYXRpb25TdGF0dXMgc3RhdHVzKSB7CisgICAgbWRu
c19uYW1lX3JlZ2lzdHJhdGlvbl9zdGF0dXNfID0gc3RhdHVzOworICB9CisKICBwcml2YXRlOgog
ICB2b2lkIENvbnN0cnVjdCgpOwogICAvLyBDYWxsZWQgd2hlbiBvbmUgb2Ygb3VyIGNvbm5lY3Rp
b25zIGRlbGV0ZXMgaXRzZWxmLgpAQCAtNDg3LDkgKzUwOSwxNSBAQCBjbGFzcyBQb3J0IDogcHVi
bGljIFBvcnRJbnRlcmZhY2UsCiAgIGludDE2X3QgbmV0d29ya19jb3N0XzsKICAgU3RhdGUgc3Rh
dGVfID0gU3RhdGU6OklOSVQ7CiAgIGludDY0X3QgbGFzdF90aW1lX2FsbF9jb25uZWN0aW9uc19y
ZW1vdmVkXyA9IDA7CisgIE1kbnNOYW1lUmVnaXN0cmF0aW9uU3RhdHVzIG1kbnNfbmFtZV9yZWdp
c3RyYXRpb25fc3RhdHVzXyA9CisgICAgICBNZG5zTmFtZVJlZ2lzdHJhdGlvblN0YXR1czo6a05v
dFN0YXJ0ZWQ7CiAKICAgcnRjOjpXZWFrUHRyRmFjdG9yeTxQb3J0PiB3ZWFrX2ZhY3RvcnlfOwog
CisgIGJvb2wgTWF5YmVPYmZ1c2NhdGVBZGRyZXNzKENhbmRpZGF0ZSogYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNfZmluYWwpOworCiAgIGZyaWVuZCBjbGFzcyBDb25uZWN0
aW9uOwogfTsKIApAQCAtNTc4LDE1ICs2MDYsMTIgQEAgY2xhc3MgQ29ubmVjdGlvbiA6IHB1Ymxp
YyBDYW5kaWRhdGVQYWlySW50ZXJmYWNlLAogICAvLyBFcnJvciBpZiBTZW5kKCkgcmV0dXJucyA8
IDAKICAgdmlydHVhbCBpbnQgR2V0RXJyb3IoKSA9IDA7CiAKLSAgc2lnc2xvdDo6c2lnbmFsNDxD
b25uZWN0aW9uKiwgY29uc3QgY2hhciosIHNpemVfdCwgY29uc3QgcnRjOjpQYWNrZXRUaW1lJj4K
LSAgICAgIFNpZ25hbFJlYWRQYWNrZXQ7CisgIHNpZ3Nsb3Q6OnNpZ25hbDQ8Q29ubmVjdGlvbios
IGNvbnN0IGNoYXIqLCBzaXplX3QsIGludDY0X3Q+IFNpZ25hbFJlYWRQYWNrZXQ7CiAKICAgc2ln
c2xvdDo6c2lnbmFsMTxDb25uZWN0aW9uKj4gU2lnbmFsUmVhZHlUb1NlbmQ7CiAKICAgLy8gQ2Fs
bGVkIHdoZW4gYSBwYWNrZXQgaXMgcmVjZWl2ZWQgb24gdGhpcyBjb25uZWN0aW9uLgotICB2b2lk
IE9uUmVhZFBhY2tldChjb25zdCBjaGFyKiBkYXRhLAotICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNr
ZXRfdGltZSk7CisgIHZvaWQgT25SZWFkUGFja2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplLCBpbnQ2NF90IHBhY2tldF90aW1lX3VzKTsKIAogICAvLyBDYWxsZWQgd2hlbiB0aGUgc29j
a2V0IGlzIGN1cnJlbnRseSBhYmxlIHRvIHNlbmQuCiAgIHZvaWQgT25SZWFkeVRvU2VuZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvcG9ydF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3BvcnRfdW5pdHRlc3QuY2MKaW5kZXggNTAyODAzMDFkNGNlMThm
ZmJmN2IxZWI1N2IwYjhmZDNhZDU1YjcxMi4uNzE5Mjk0MjNjYjYyMDA0OGUwZTMyMTgzMzYyYjY2
MjE2ZDk5NDI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvcG9ydF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0X3VuaXR0ZXN0LmNjCkBAIC05
MSwxOCArOTEsMTggQEAgU29ja2V0QWRkcmVzcyBHZXRBZGRyZXNzKFBvcnQqIHBvcnQpIHsKICAg
cmV0dXJuIEdldENhbmRpZGF0ZShwb3J0KS5hZGRyZXNzKCk7CiB9CiAKLUljZU1lc3NhZ2UqIENv
cHlTdHVuTWVzc2FnZShjb25zdCBJY2VNZXNzYWdlKiBzcmMpIHsKLSAgSWNlTWVzc2FnZSogZHN0
ID0gbmV3IEljZU1lc3NhZ2UoKTsKK3N0ZDo6dW5pcXVlX3B0cjxJY2VNZXNzYWdlPiBDb3B5U3R1
bk1lc3NhZ2UoY29uc3QgSWNlTWVzc2FnZSYgc3JjKSB7CisgIGF1dG8gZHN0ID0gYWJzbDo6bWFr
ZV91bmlxdWU8SWNlTWVzc2FnZT4oKTsKICAgQnl0ZUJ1ZmZlcldyaXRlciBidWY7Ci0gIHNyYy0+
V3JpdGUoJmJ1Zik7CisgIHNyYy5Xcml0ZSgmYnVmKTsKICAgQnl0ZUJ1ZmZlclJlYWRlciByZWFk
X2J1ZihidWYpOwogICBkc3QtPlJlYWQoJnJlYWRfYnVmKTsKICAgcmV0dXJuIGRzdDsKIH0KIAot
Ym9vbCBXcml0ZVN0dW5NZXNzYWdlKGNvbnN0IFN0dW5NZXNzYWdlKiBtc2csIEJ5dGVCdWZmZXJX
cml0ZXIqIGJ1ZikgeworYm9vbCBXcml0ZVN0dW5NZXNzYWdlKGNvbnN0IFN0dW5NZXNzYWdlJiBt
c2csIEJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgewogICBidWYtPlJlc2l6ZSgwKTsgIC8vIGNsZWFy
IG91dCBhbnkgZXhpc3RpbmcgYnVmZmVyIGNvbnRlbnRzCi0gIHJldHVybiBtc2ctPldyaXRlKGJ1
Zik7CisgIHJldHVybiBtc2cuV3JpdGUoYnVmKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCkBAIC0x
ODksMTcgKzE4OSwxNSBAQCBjbGFzcyBUZXN0UG9ydCA6IHB1YmxpYyBQb3J0IHsKICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0T3B0aW9ucyYgb3B0aW9ucywKICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgcGF5bG9hZCkgewogICAgIGlmICghcGF5bG9hZCkgewotICAgICAg
SWNlTWVzc2FnZSogbXNnID0gbmV3IEljZU1lc3NhZ2U7Ci0gICAgICBhdXRvKiBidWYgPQotICAg
ICAgICAgIG5ldyBydGM6OkJ1ZmZlclQ8dWludDhfdD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEpLCBzaXplKTsKKyAgICAgIGF1dG8gbXNnID0gYWJzbDo6bWFrZV91bmlxdWU8SWNlTWVz
c2FnZT4oKTsKKyAgICAgIGF1dG8gYnVmID0gYWJzbDo6bWFrZV91bmlxdWU8cnRjOjpCdWZmZXJU
PHVpbnQ4X3Q+PigKKyAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNp
emUpOwogICAgICAgQnl0ZUJ1ZmZlclJlYWRlciByZWFkX2J1ZigqYnVmKTsKICAgICAgIGlmICgh
bXNnLT5SZWFkKCZyZWFkX2J1ZikpIHsKLSAgICAgICAgZGVsZXRlIG1zZzsKLSAgICAgICAgZGVs
ZXRlIGJ1ZjsKICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgfQotICAgICAgbGFzdF9zdHVuX2J1
Zl8ucmVzZXQoYnVmKTsKLSAgICAgIGxhc3Rfc3R1bl9tc2dfLnJlc2V0KG1zZyk7CisgICAgICBs
YXN0X3N0dW5fYnVmXyA9IHN0ZDo6bW92ZShidWYpOworICAgICAgbGFzdF9zdHVuX21zZ18gPSBz
dGQ6Om1vdmUobXNnKTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc2l6ZSk7
CiAgIH0KQEAgLTIzNCwyNCArMjMyLDE4IEBAIHN0YXRpYyB2b2lkIFNlbmRQaW5nQW5kUmVjZWl2
ZVJlc3BvbnNlKENvbm5lY3Rpb24qIGxjb25uLAogICBBU1NFUlRfVFJVRV9XQUlUKGxwb3J0LT5s
YXN0X3N0dW5fbXNnKCksIGtEZWZhdWx0VGltZW91dCk7CiAgIEFTU0VSVF9UUlVFKGxwb3J0LT5s
YXN0X3N0dW5fYnVmKCkpOwogICByY29ubi0+T25SZWFkUGFja2V0KGxwb3J0LT5sYXN0X3N0dW5f
YnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAgICAgICAgICAgICAgICAgICAgICBscG9ydC0+bGFzdF9z
dHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICBscG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3VzICov
IC0xKTsKICAgY2xvY2stPkFkdmFuY2VUaW1lKHdlYnJ0Yzo6VGltZURlbHRhOjptcyhtcykpOwog
ICBBU1NFUlRfVFJVRV9XQUlUKHJwb3J0LT5sYXN0X3N0dW5fbXNnKCksIGtEZWZhdWx0VGltZW91
dCk7CiAgIEFTU0VSVF9UUlVFKHJwb3J0LT5sYXN0X3N0dW5fYnVmKCkpOwogICBsY29ubi0+T25S
ZWFkUGFja2V0KHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAgICAgICAg
ICAgICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6UGFja2V0
VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5z
aXplKCksIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKIH0KIAogY2xhc3MgVGVzdENoYW5uZWwg
OiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogIHB1YmxpYzoKICAgLy8gVGFrZXMgb3du
ZXJzaGlwIG9mIHxwMXwgKGJ1dCBub3QgfHAyfCkuCi0gIGV4cGxpY2l0IFRlc3RDaGFubmVsKFBv
cnQqIHAxKQotICAgICAgOiBpY2VfbW9kZV8oSUNFTU9ERV9GVUxMKSwKLSAgICAgICAgcG9ydF8o
cDEpLAotICAgICAgICBjb21wbGV0ZV9jb3VudF8oMCksCi0gICAgICAgIGNvbm5fKE5VTEwpLAot
ICAgICAgICByZW1vdGVfcmVxdWVzdF8oKSwKLSAgICAgICAgbm9taW5hdGVkXyhmYWxzZSkgewor
ICBleHBsaWNpdCBUZXN0Q2hhbm5lbChzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gcDEpIDogcG9ydF8o
c3RkOjptb3ZlKHAxKSkgewogICAgIHBvcnRfLT5TaWduYWxQb3J0Q29tcGxldGUuY29ubmVjdCh0
aGlzLCAmVGVzdENoYW5uZWw6Ok9uUG9ydENvbXBsZXRlKTsKICAgICBwb3J0Xy0+U2lnbmFsVW5r
bm93bkFkZHJlc3MuY29ubmVjdCh0aGlzLCAmVGVzdENoYW5uZWw6Ok9uVW5rbm93bkFkZHJlc3Mp
OwogICAgIHBvcnRfLT5TaWduYWxEZXN0cm95ZWQuY29ubmVjdCh0aGlzLCAmVGVzdENoYW5uZWw6
Ok9uU3JjUG9ydERlc3Ryb3llZCk7CkBAIC0zMjcsNyArMzE5LDcgQEAgY2xhc3MgVGVzdENoYW5u
ZWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIEVYUEVDVF9UUlVFKG1pX2F0
dHIgIT0gTlVMTCk7CiAgICAgRVhQRUNUX1RSVUUoZmluZ2VycHJpbnRfYXR0ciAhPSBOVUxMKTsK
ICAgICByZW1vdGVfYWRkcmVzc18gPSBhZGRyOwotICAgIHJlbW90ZV9yZXF1ZXN0Xy5yZXNldChD
b3B5U3R1bk1lc3NhZ2UobXNnKSk7CisgICAgcmVtb3RlX3JlcXVlc3RfID0gQ29weVN0dW5NZXNz
YWdlKCptc2cpOwogICAgIHJlbW90ZV9mcmFnXyA9IHJmOwogICB9CiAKQEAgLTM2MiwxNSArMzU0
LDE1IEBAIGNsYXNzIFRlc3RDaGFubmVsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsK
ICAgICBjb25uZWN0aW9uX3JlYWR5X3RvX3NlbmRfID0gdHJ1ZTsKICAgfQogCi0gIEljZU1vZGUg
aWNlX21vZGVfOworICBJY2VNb2RlIGljZV9tb2RlXyA9IElDRU1PREVfRlVMTDsKICAgc3RkOjp1
bmlxdWVfcHRyPFBvcnQ+IHBvcnRfOwogCi0gIGludCBjb21wbGV0ZV9jb3VudF87Ci0gIENvbm5l
Y3Rpb24qIGNvbm5fOworICBpbnQgY29tcGxldGVfY291bnRfID0gMDsKKyAgQ29ubmVjdGlvbiog
Y29ubl8gPSBudWxscHRyOwogICBTb2NrZXRBZGRyZXNzIHJlbW90ZV9hZGRyZXNzXzsKICAgc3Rk
Ojp1bmlxdWVfcHRyPFN0dW5NZXNzYWdlPiByZW1vdGVfcmVxdWVzdF87CiAgIHN0ZDo6c3RyaW5n
IHJlbW90ZV9mcmFnXzsKLSAgYm9vbCBub21pbmF0ZWRfOworICBib29sIG5vbWluYXRlZF8gPSBm
YWxzZTsKICAgYm9vbCBjb25uZWN0aW9uX3JlYWR5X3RvX3NlbmRfID0gZmFsc2U7CiB9OwogCkBA
IC00MDAsODIgKzM5Miw4NSBAQCBjbGFzcyBQb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogCiAgcHJvdGVjdGVkOgogICB2b2lkIFRl
c3RMb2NhbFRvTG9jYWwoKSB7Ci0gICAgUG9ydCogcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2Nh
bEFkZHIxKTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAg
ICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7Ci0gICAg
UG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKKyAgICBhdXRvIHBvcnQy
ID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMik7CiAgICAgcG9ydDItPlNldEljZVJvbGUoY3Jp
Y2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKLSAgICBUZXN0Q29ubmVjdGl2aXR5KCJ1ZHAiLCBw
b3J0MSwgInVkcCIsIHBvcnQyLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKyAgICBUZXN0Q29u
bmVjdGl2aXR5KCJ1ZHAiLCBzdGQ6Om1vdmUocG9ydDEpLCAidWRwIiwgc3RkOjptb3ZlKHBvcnQy
KSwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIHRydWUsIHRydWUsIHRydWUpOwogICB9CiAg
IHZvaWQgVGVzdExvY2FsVG9TdHVuKE5BVFR5cGUgbnR5cGUpIHsKLSAgICBQb3J0KiBwb3J0MSA9
IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVVZHBQ
b3J0KGtMb2NhbEFkZHIxKTsKICAgICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xF
X0NPTlRST0xMSU5HKTsKLSAgICBuYXRfc2VydmVyMl8ucmVzZXQoQ3JlYXRlTmF0U2VydmVyKGtO
YXRBZGRyMiwgbnR5cGUpKTsKLSAgICBQb3J0KiBwb3J0MiA9IENyZWF0ZVN0dW5Qb3J0KGtMb2Nh
bEFkZHIyLCAmbmF0X3NvY2tldF9mYWN0b3J5Ml8pOworICAgIG5hdF9zZXJ2ZXIyXyA9IENyZWF0
ZU5hdFNlcnZlcihrTmF0QWRkcjIsIG50eXBlKTsKKyAgICBhdXRvIHBvcnQyID0gQ3JlYXRlU3R1
blBvcnQoa0xvY2FsQWRkcjIsICZuYXRfc29ja2V0X2ZhY3RvcnkyXyk7CiAgICAgcG9ydDItPlNl
dEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKLSAgICBUZXN0Q29ubmVjdGl2
aXR5KCJ1ZHAiLCBwb3J0MSwgU3R1bk5hbWUobnR5cGUpLCBwb3J0MiwKKyAgICBUZXN0Q29ubmVj
dGl2aXR5KCJ1ZHAiLCBzdGQ6Om1vdmUocG9ydDEpLCBTdHVuTmFtZShudHlwZSksIHN0ZDo6bW92
ZShwb3J0MiksCiAgICAgICAgICAgICAgICAgICAgICBudHlwZSA9PSBOQVRfT1BFTl9DT05FLCB0
cnVlLCBudHlwZSAhPSBOQVRfU1lNTUVUUklDLAogICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7
CiAgIH0KICAgdm9pZCBUZXN0TG9jYWxUb1JlbGF5KFJlbGF5VHlwZSBydHlwZSwgUHJvdG9jb2xU
eXBlIHByb3RvKSB7Ci0gICAgUG9ydCogcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIx
KTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgICAgcG9y
dDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7Ci0gICAgUG9ydCog
cG9ydDIgPSBDcmVhdGVSZWxheVBvcnQoa0xvY2FsQWRkcjIsIHJ0eXBlLCBwcm90bywgUFJPVE9f
VURQKTsKKyAgICBhdXRvIHBvcnQyID0gQ3JlYXRlUmVsYXlQb3J0KGtMb2NhbEFkZHIyLCBydHlw
ZSwgcHJvdG8sIFBST1RPX1VEUCk7CiAgICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNF
Uk9MRV9DT05UUk9MTEVEKTsKLSAgICBUZXN0Q29ubmVjdGl2aXR5KCJ1ZHAiLCBwb3J0MSwgUmVs
YXlOYW1lKHJ0eXBlLCBwcm90byksIHBvcnQyLAotICAgICAgICAgICAgICAgICAgICAgcnR5cGUg
PT0gUkVMQVlfR1RVUk4sIHRydWUsIHRydWUsIHRydWUpOworICAgIFRlc3RDb25uZWN0aXZpdHko
InVkcCIsIHN0ZDo6bW92ZShwb3J0MSksIFJlbGF5TmFtZShydHlwZSwgcHJvdG8pLAorICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptb3ZlKHBvcnQyKSwgcnR5cGUgPT0gUkVMQVlfR1RVUk4sIHRy
dWUsIHRydWUsIHRydWUpOwogICB9CiAgIHZvaWQgVGVzdFN0dW5Ub0xvY2FsKE5BVFR5cGUgbnR5
cGUpIHsKLSAgICBuYXRfc2VydmVyMV8ucmVzZXQoQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMSwg
bnR5cGUpKTsKLSAgICBQb3J0KiBwb3J0MSA9IENyZWF0ZVN0dW5Qb3J0KGtMb2NhbEFkZHIxLCAm
bmF0X3NvY2tldF9mYWN0b3J5MV8pOworICAgIG5hdF9zZXJ2ZXIxXyA9IENyZWF0ZU5hdFNlcnZl
cihrTmF0QWRkcjEsIG50eXBlKTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRlU3R1blBvcnQoa0xv
Y2FsQWRkcjEsICZuYXRfc29ja2V0X2ZhY3RvcnkxXyk7CiAgICAgcG9ydDEtPlNldEljZVJvbGUo
Y3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7Ci0gICAgUG9ydCogcG9ydDIgPSBDcmVhdGVV
ZHBQb3J0KGtMb2NhbEFkZHIyKTsKKyAgICBhdXRvIHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9j
YWxBZGRyMik7CiAgICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9M
TEVEKTsKLSAgICBUZXN0Q29ubmVjdGl2aXR5KFN0dW5OYW1lKG50eXBlKSwgcG9ydDEsICJ1ZHAi
LCBwb3J0MiwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgIG50eXBlICE9IE5BVF9TWU1NRVRS
SUMsIHRydWUsIHRydWUpOworICAgIFRlc3RDb25uZWN0aXZpdHkoU3R1bk5hbWUobnR5cGUpLCBz
dGQ6Om1vdmUocG9ydDEpLCAidWRwIiwgc3RkOjptb3ZlKHBvcnQyKSwKKyAgICAgICAgICAgICAg
ICAgICAgIHRydWUsIG50eXBlICE9IE5BVF9TWU1NRVRSSUMsIHRydWUsIHRydWUpOwogICB9CiAg
IHZvaWQgVGVzdFN0dW5Ub1N0dW4oTkFUVHlwZSBudHlwZTEsIE5BVFR5cGUgbnR5cGUyKSB7Ci0g
ICAgbmF0X3NlcnZlcjFfLnJlc2V0KENyZWF0ZU5hdFNlcnZlcihrTmF0QWRkcjEsIG50eXBlMSkp
OwotICAgIFBvcnQqIHBvcnQxID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsICZuYXRfc29j
a2V0X2ZhY3RvcnkxXyk7CisgICAgbmF0X3NlcnZlcjFfID0gQ3JlYXRlTmF0U2VydmVyKGtOYXRB
ZGRyMSwgbnR5cGUxKTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRk
cjEsICZuYXRfc29ja2V0X2ZhY3RvcnkxXyk7CiAgICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tl
dDo6SUNFUk9MRV9DT05UUk9MTElORyk7Ci0gICAgbmF0X3NlcnZlcjJfLnJlc2V0KENyZWF0ZU5h
dFNlcnZlcihrTmF0QWRkcjIsIG50eXBlMikpOwotICAgIFBvcnQqIHBvcnQyID0gQ3JlYXRlU3R1
blBvcnQoa0xvY2FsQWRkcjIsICZuYXRfc29ja2V0X2ZhY3RvcnkyXyk7CisgICAgbmF0X3NlcnZl
cjJfID0gQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMiwgbnR5cGUyKTsKKyAgICBhdXRvIHBvcnQy
ID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjIsICZuYXRfc29ja2V0X2ZhY3RvcnkyXyk7CiAg
ICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKLSAgICBU
ZXN0Q29ubmVjdGl2aXR5KFN0dW5OYW1lKG50eXBlMSksIHBvcnQxLCBTdHVuTmFtZShudHlwZTIp
LCBwb3J0MiwKLSAgICAgICAgICAgICAgICAgICAgIG50eXBlMiA9PSBOQVRfT1BFTl9DT05FLCBu
dHlwZTEgIT0gTkFUX1NZTU1FVFJJQywKLSAgICAgICAgICAgICAgICAgICAgIG50eXBlMiAhPSBO
QVRfU1lNTUVUUklDLAorICAgIFRlc3RDb25uZWN0aXZpdHkoU3R1bk5hbWUobnR5cGUxKSwgc3Rk
Ojptb3ZlKHBvcnQxKSwgU3R1bk5hbWUobnR5cGUyKSwKKyAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bW92ZShwb3J0MiksIG50eXBlMiA9PSBOQVRfT1BFTl9DT05FLAorICAgICAgICAgICAgICAg
ICAgICAgbnR5cGUxICE9IE5BVF9TWU1NRVRSSUMsIG50eXBlMiAhPSBOQVRfU1lNTUVUUklDLAog
ICAgICAgICAgICAgICAgICAgICAgbnR5cGUxICsgbnR5cGUyIDwgKE5BVF9QT1JUX1JFU1RSSUNU
RUQgKyBOQVRfU1lNTUVUUklDKSk7CiAgIH0KICAgdm9pZCBUZXN0U3R1blRvUmVsYXkoTkFUVHlw
ZSBudHlwZSwgUmVsYXlUeXBlIHJ0eXBlLCBQcm90b2NvbFR5cGUgcHJvdG8pIHsKLSAgICBuYXRf
c2VydmVyMV8ucmVzZXQoQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMSwgbnR5cGUpKTsKLSAgICBQ
b3J0KiBwb3J0MSA9IENyZWF0ZVN0dW5Qb3J0KGtMb2NhbEFkZHIxLCAmbmF0X3NvY2tldF9mYWN0
b3J5MV8pOworICAgIG5hdF9zZXJ2ZXIxXyA9IENyZWF0ZU5hdFNlcnZlcihrTmF0QWRkcjEsIG50
eXBlKTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsICZuYXRf
c29ja2V0X2ZhY3RvcnkxXyk7CiAgICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9M
RV9DT05UUk9MTElORyk7Ci0gICAgUG9ydCogcG9ydDIgPSBDcmVhdGVSZWxheVBvcnQoa0xvY2Fs
QWRkcjIsIHJ0eXBlLCBwcm90bywgUFJPVE9fVURQKTsKKyAgICBhdXRvIHBvcnQyID0gQ3JlYXRl
UmVsYXlQb3J0KGtMb2NhbEFkZHIyLCBydHlwZSwgcHJvdG8sIFBST1RPX1VEUCk7CiAgICAgcG9y
dDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKLSAgICBUZXN0Q29u
bmVjdGl2aXR5KFN0dW5OYW1lKG50eXBlKSwgcG9ydDEsIFJlbGF5TmFtZShydHlwZSwgcHJvdG8p
LCBwb3J0MiwKLSAgICAgICAgICAgICAgICAgICAgIHJ0eXBlID09IFJFTEFZX0dUVVJOLCBudHlw
ZSAhPSBOQVRfU1lNTUVUUklDLCB0cnVlLCB0cnVlKTsKKyAgICBUZXN0Q29ubmVjdGl2aXR5KFN0
dW5OYW1lKG50eXBlKSwgc3RkOjptb3ZlKHBvcnQxKSwgUmVsYXlOYW1lKHJ0eXBlLCBwcm90byks
CisgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUocG9ydDIpLCBydHlwZSA9PSBSRUxBWV9H
VFVSTiwKKyAgICAgICAgICAgICAgICAgICAgIG50eXBlICE9IE5BVF9TWU1NRVRSSUMsIHRydWUs
IHRydWUpOwogICB9CiAgIHZvaWQgVGVzdFRjcFRvVGNwKCkgewotICAgIFBvcnQqIHBvcnQxID0g
Q3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7CisgICAgYXV0byBwb3J0MSA9IENyZWF0ZVRjcFBv
cnQoa0xvY2FsQWRkcjEpOwogICAgIHBvcnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVf
Q09OVFJPTExJTkcpOwotICAgIFBvcnQqIHBvcnQyID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRy
Mik7CisgICAgYXV0byBwb3J0MiA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjIpOwogICAgIHBv
cnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7Ci0gICAgVGVzdENv
bm5lY3Rpdml0eSgidGNwIiwgcG9ydDEsICJ0Y3AiLCBwb3J0MiwgdHJ1ZSwgZmFsc2UsIHRydWUs
IHRydWUpOworICAgIFRlc3RDb25uZWN0aXZpdHkoInRjcCIsIHN0ZDo6bW92ZShwb3J0MSksICJ0
Y3AiLCBzdGQ6Om1vdmUocG9ydDIpLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgZmFsc2Us
IHRydWUsIHRydWUpOwogICB9CiAgIHZvaWQgVGVzdFRjcFRvUmVsYXkoUmVsYXlUeXBlIHJ0eXBl
LCBQcm90b2NvbFR5cGUgcHJvdG8pIHsKLSAgICBQb3J0KiBwb3J0MSA9IENyZWF0ZVRjcFBvcnQo
a0xvY2FsQWRkcjEpOworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIx
KTsKICAgICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsK
LSAgICBQb3J0KiBwb3J0MiA9IENyZWF0ZVJlbGF5UG9ydChrTG9jYWxBZGRyMiwgcnR5cGUsIHBy
b3RvLCBQUk9UT19UQ1ApOworICAgIGF1dG8gcG9ydDIgPSBDcmVhdGVSZWxheVBvcnQoa0xvY2Fs
QWRkcjIsIHJ0eXBlLCBwcm90bywgUFJPVE9fVENQKTsKICAgICBwb3J0Mi0+U2V0SWNlUm9sZShj
cmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwotICAgIFRlc3RDb25uZWN0aXZpdHkoInRjcCIs
IHBvcnQxLCBSZWxheU5hbWUocnR5cGUsIHByb3RvKSwgcG9ydDIsCi0gICAgICAgICAgICAgICAg
ICAgICBydHlwZSA9PSBSRUxBWV9HVFVSTiwgZmFsc2UsIHRydWUsIHRydWUpOworICAgIFRlc3RD
b25uZWN0aXZpdHkoInRjcCIsIHN0ZDo6bW92ZShwb3J0MSksIFJlbGF5TmFtZShydHlwZSwgcHJv
dG8pLAorICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHBvcnQyKSwgcnR5cGUgPT0gUkVM
QVlfR1RVUk4sIGZhbHNlLCB0cnVlLCB0cnVlKTsKICAgfQogICB2b2lkIFRlc3RTc2xUY3BUb1Jl
bGF5KFJlbGF5VHlwZSBydHlwZSwgUHJvdG9jb2xUeXBlIHByb3RvKSB7Ci0gICAgUG9ydCogcG9y
dDEgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRl
VGNwUG9ydChrTG9jYWxBZGRyMSk7CiAgICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNF
Uk9MRV9DT05UUk9MTElORyk7Ci0gICAgUG9ydCogcG9ydDIgPSBDcmVhdGVSZWxheVBvcnQoa0xv
Y2FsQWRkcjIsIHJ0eXBlLCBwcm90bywgUFJPVE9fU1NMVENQKTsKKyAgICBhdXRvIHBvcnQyID0g
Q3JlYXRlUmVsYXlQb3J0KGtMb2NhbEFkZHIyLCBydHlwZSwgcHJvdG8sIFBST1RPX1NTTFRDUCk7
CiAgICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKLSAg
ICBUZXN0Q29ubmVjdGl2aXR5KCJzc2x0Y3AiLCBwb3J0MSwgUmVsYXlOYW1lKHJ0eXBlLCBwcm90
byksIHBvcnQyLAotICAgICAgICAgICAgICAgICAgICAgcnR5cGUgPT0gUkVMQVlfR1RVUk4sIGZh
bHNlLCB0cnVlLCB0cnVlKTsKKyAgICBUZXN0Q29ubmVjdGl2aXR5KCJzc2x0Y3AiLCBzdGQ6Om1v
dmUocG9ydDEpLCBSZWxheU5hbWUocnR5cGUsIHByb3RvKSwKKyAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bW92ZShwb3J0MiksIHJ0eXBlID09IFJFTEFZX0dUVVJOLCBmYWxzZSwgdHJ1ZSwgdHJ1
ZSk7CiAgIH0KIAogICBydGM6Ok5ldHdvcmsqIE1ha2VOZXR3b3JrKGNvbnN0IFNvY2tldEFkZHJl
c3MmIGFkZHIpIHsKQEAgLTQ4NSw3MSArNDgwLDcxIEBAIGNsYXNzIFBvcnRUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIH0KIAogICAv
LyBoZWxwZXJzIGZvciBhYm92ZSBmdW5jdGlvbnMKLSAgVURQUG9ydCogQ3JlYXRlVWRwUG9ydChj
b25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyKSB7CisgIHN0ZDo6dW5pcXVlX3B0cjxVRFBQb3J0PiBD
cmVhdGVVZHBQb3J0KGNvbnN0IFNvY2tldEFkZHJlc3MmIGFkZHIpIHsKICAgICByZXR1cm4gQ3Jl
YXRlVWRwUG9ydChhZGRyLCAmc29ja2V0X2ZhY3RvcnlfKTsKICAgfQotICBVRFBQb3J0KiBDcmVh
dGVVZHBQb3J0KGNvbnN0IFNvY2tldEFkZHJlc3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgUGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnkpIHsKKyAgc3RkOjp1bmlx
dWVfcHRyPFVEUFBvcnQ+IENyZWF0ZVVkcFBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0U29ja2V0RmFj
dG9yeSogc29ja2V0X2ZhY3RvcnkpIHsKICAgICByZXR1cm4gVURQUG9ydDo6Q3JlYXRlKCZtYWlu
Xywgc29ja2V0X2ZhY3RvcnksIE1ha2VOZXR3b3JrKGFkZHIpLCAwLCAwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXNlcm5hbWVfLCBwYXNzd29yZF8sIHN0ZDo6c3RyaW5nKCksIHRydWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpudWxsb3B0KTsKICAgfQotICBUQ1BQ
b3J0KiBDcmVhdGVUY3BQb3J0KGNvbnN0IFNvY2tldEFkZHJlc3MmIGFkZHIpIHsKKyAgc3RkOjp1
bmlxdWVfcHRyPFRDUFBvcnQ+IENyZWF0ZVRjcFBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRk
cikgewogICAgIHJldHVybiBDcmVhdGVUY3BQb3J0KGFkZHIsICZzb2NrZXRfZmFjdG9yeV8pOwog
ICB9Ci0gIFRDUFBvcnQqIENyZWF0ZVRjcFBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFj
dG9yeSkgeworICBzdGQ6OnVuaXF1ZV9wdHI8VENQUG9ydD4gQ3JlYXRlVGNwUG9ydChjb25zdCBT
b2NrZXRBZGRyZXNzJiBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFjdG9yeSkgewogICAgIHJldHVybiBU
Q1BQb3J0OjpDcmVhdGUoJm1haW5fLCBzb2NrZXRfZmFjdG9yeSwgTWFrZU5ldHdvcmsoYWRkciks
IDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZV8sIHBhc3N3b3JkXywg
dHJ1ZSk7CiAgIH0KLSAgU3R1blBvcnQqIENyZWF0ZVN0dW5Qb3J0KGNvbnN0IFNvY2tldEFkZHJl
c3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZh
Y3RvcnkqIGZhY3RvcnkpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFN0dW5Qb3J0PiBDcmVhdGVTdHVu
UG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogZmFjdG9yeSkgewog
ICAgIFNlcnZlckFkZHJlc3NlcyBzdHVuX3NlcnZlcnM7CiAgICAgc3R1bl9zZXJ2ZXJzLmluc2Vy
dChrU3R1bkFkZHIpOwogICAgIHJldHVybiBTdHVuUG9ydDo6Q3JlYXRlKCZtYWluXywgZmFjdG9y
eSwgTWFrZU5ldHdvcmsoYWRkciksIDAsIDAsIHVzZXJuYW1lXywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXNzd29yZF8sIHN0dW5fc2VydmVycywgc3RkOjpzdHJpbmcoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpudWxsb3B0KTsKICAgfQotICBQb3J0KiBDcmVh
dGVSZWxheVBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFJlbGF5VHlwZSBydHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29s
VHlwZSBpbnRfcHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgZXh0
X3Byb3RvKSB7CisgIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBDcmVhdGVSZWxheVBvcnQoY29uc3Qg
U29ja2V0QWRkcmVzcyYgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWxheVR5cGUgcnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUHJvdG9jb2xUeXBlIGludF9wcm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgZXh0X3Byb3RvKSB7CiAgICAgaWYgKHJ0eXBlID09
IFJFTEFZX1RVUk4pIHsKICAgICAgIHJldHVybiBDcmVhdGVUdXJuUG9ydChhZGRyLCAmc29ja2V0
X2ZhY3RvcnlfLCBpbnRfcHJvdG8sIGV4dF9wcm90byk7CiAgICAgfSBlbHNlIHsKICAgICAgIHJl
dHVybiBDcmVhdGVHdHVyblBvcnQoYWRkciwgaW50X3Byb3RvLCBleHRfcHJvdG8pOwogICAgIH0K
ICAgfQotICBUdXJuUG9ydCogQ3JlYXRlVHVyblBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRk
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tl
dF9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGludF9w
cm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBleHRfcHJvdG8p
IHsKKyAgc3RkOjp1bmlxdWVfcHRyPFR1cm5Qb3J0PiBDcmVhdGVUdXJuUG9ydChjb25zdCBTb2Nr
ZXRBZGRyZXNzJiBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBpbnRfcHJvdG8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGV4dF9w
cm90bykgewogICAgIFNvY2tldEFkZHJlc3Mgc2VydmVyX2FkZHIgPQogICAgICAgICBpbnRfcHJv
dG8gPT0gUFJPVE9fVENQID8ga1R1cm5UY3BJbnRBZGRyIDoga1R1cm5VZHBJbnRBZGRyOwogICAg
IHJldHVybiBDcmVhdGVUdXJuUG9ydChhZGRyLCBzb2NrZXRfZmFjdG9yeSwgaW50X3Byb3RvLCBl
eHRfcHJvdG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9hZGRyKTsKICAgfQot
ICBUdXJuUG9ydCogQ3JlYXRlVHVyblBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0
b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGludF9wcm90bywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBleHRfcHJvdG8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHNlcnZlcl9h
ZGRyKSB7Ci0gICAgcmV0dXJuIFR1cm5Qb3J0OjpDcmVhdGUoCi0gICAgICAgICZtYWluXywgc29j
a2V0X2ZhY3RvcnksIE1ha2VOZXR3b3JrKGFkZHIpLCAwLCAwLCB1c2VybmFtZV8sIHBhc3N3b3Jk
XywKLSAgICAgICAgUHJvdG9jb2xBZGRyZXNzKHNlcnZlcl9hZGRyLCBpbnRfcHJvdG8pLCBrUmVs
YXlDcmVkZW50aWFscywgMCwKLSAgICAgICAgc3RkOjpzdHJpbmcoKSwgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+KCksIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpLAotICAgICAgICBudWxscHRy
LCBudWxscHRyKTsKLSAgfQotICBSZWxheVBvcnQqIENyZWF0ZUd0dXJuUG9ydChjb25zdCBTb2Nr
ZXRBZGRyZXNzJiBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5
cGUgaW50X3Byb3RvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUg
ZXh0X3Byb3RvKSB7Ci0gICAgUmVsYXlQb3J0KiBwb3J0ID0gQ3JlYXRlR3R1cm5Qb3J0KGFkZHIp
OworICBzdGQ6OnVuaXF1ZV9wdHI8VHVyblBvcnQ+IENyZWF0ZVR1cm5Qb3J0KAorICAgICAgY29u
c3QgU29ja2V0QWRkcmVzcyYgYWRkciwKKyAgICAgIFBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tl
dF9mYWN0b3J5LAorICAgICAgUHJvdG9jb2xUeXBlIGludF9wcm90bywKKyAgICAgIFByb3RvY29s
VHlwZSBleHRfcHJvdG8sCisgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHNlcnZlcl9h
ZGRyKSB7CisgICAgcmV0dXJuIFR1cm5Qb3J0OjpDcmVhdGUoJm1haW5fLCBzb2NrZXRfZmFjdG9y
eSwgTWFrZU5ldHdvcmsoYWRkciksIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXNlcm5hbWVfLCBwYXNzd29yZF8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9j
b2xBZGRyZXNzKHNlcnZlcl9hZGRyLCBpbnRfcHJvdG8pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtSZWxheUNyZWRlbnRpYWxzLCAwLCAiIiwge30sIHt9LCBudWxscHRyLCBudWxscHRy
KTsKKyAgfQorICBzdGQ6OnVuaXF1ZV9wdHI8UmVsYXlQb3J0PiBDcmVhdGVHdHVyblBvcnQoY29u
c3QgU29ja2V0QWRkcmVzcyYgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFByb3RvY29sVHlwZSBpbnRfcHJvdG8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgZXh0X3Byb3RvKSB7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbGF5UG9ydD4gcG9ydCA9IENyZWF0ZUd0dXJuUG9ydChhZGRyKTsK
ICAgICBTb2NrZXRBZGRyZXNzIGFkZHJzW10gPSB7a1JlbGF5VWRwSW50QWRkciwga1JlbGF5VGNw
SW50QWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1JlbGF5U3NsVGNwSW50QWRk
cn07CiAgICAgcG9ydC0+QWRkU2VydmVyQWRkcmVzcyhQcm90b2NvbEFkZHJlc3MoYWRkcnNbaW50
X3Byb3RvXSwgaW50X3Byb3RvKSk7CiAgICAgcmV0dXJuIHBvcnQ7CiAgIH0KLSAgUmVsYXlQb3J0
KiBDcmVhdGVHdHVyblBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkcikgeworICBzdGQ6OnVu
aXF1ZV9wdHI8UmVsYXlQb3J0PiBDcmVhdGVHdHVyblBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYg
YWRkcikgewogICAgIC8vIFRPRE8ocHRoYXRjaGVyKTogIFJlbW92ZSBHVFVSTi4KICAgICAvLyBH
ZW5lcmF0ZSBhIHVzZXJuYW1lIHdpdGggbGVuZ3RoIG9mIDE2IGZvciBHdHVybiBvbmx5LgogICAg
IHN0ZDo6c3RyaW5nIHVzZXJuYW1lID0gcnRjOjpDcmVhdGVSYW5kb21TdHJpbmcoa0d0dXJuVXNl
ck5hbWVMZW5ndGgpOwpAQCAtNTU4LDkgKzU1MywxMCBAQCBjbGFzcyBQb3J0VGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIC8vIFRP
RE8oPyk6IEFkZCBhbiBleHRlcm5hbCBhZGRyZXNzIGZvciBleHRfcHJvdG8sIHNvIHRoYXQgdGhl
CiAgICAgLy8gb3RoZXIgc2lkZSBjYW4gY29ubmVjdCB0byB0aGlzIHBvcnQgdXNpbmcgYSBub24t
VURQIHByb3RvY29sLgogICB9Ci0gIHJ0Yzo6TkFUU2VydmVyKiBDcmVhdGVOYXRTZXJ2ZXIoY29u
c3QgU29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydGM6Ok5BVFR5cGUgdHlwZSkgewotICAgIHJldHVybiBuZXcgcnRjOjpOQVRTZXJ2ZXIodHlw
ZSwgc3NfLmdldCgpLCBhZGRyLCBhZGRyLCBzc18uZ2V0KCksIGFkZHIpOworICBzdGQ6OnVuaXF1
ZV9wdHI8cnRjOjpOQVRTZXJ2ZXI+IENyZWF0ZU5hdFNlcnZlcihjb25zdCBTb2NrZXRBZGRyZXNz
JiBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydGM6Ok5BVFR5cGUgdHlwZSkgeworICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxydGM6
Ok5BVFNlcnZlcj4odHlwZSwgc3NfLmdldCgpLCBhZGRyLCBhZGRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NfLmdldCgpLCBhZGRyKTsKICAgfQogICBz
dGF0aWMgY29uc3QgY2hhciogU3R1bk5hbWUoTkFUVHlwZSB0eXBlKSB7CiAgICAgc3dpdGNoICh0
eXBlKSB7CkBAIC02MTIsOSArNjA4LDkgQEAgY2xhc3MgUG9ydFRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCwgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKIAogICAvLyBUaGlzIGRvZXMg
YWxsIHRoZSB3b3JrIGFuZCB0aGVuIGRlbGV0ZXMgfHBvcnQxfCBhbmQgfHBvcnQyfC4KICAgdm9p
ZCBUZXN0Q29ubmVjdGl2aXR5KGNvbnN0IGNoYXIqIG5hbWUxLAotICAgICAgICAgICAgICAgICAg
ICAgICAgUG9ydCogcG9ydDEsCisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UG9ydD4gcG9ydDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1l
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFBvcnQqIHBvcnQyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IHBvcnQyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBhY2NlcHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhbWVfYWRk
cjEsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhbWVfYWRkcjIsCkBAIC02ODAsMTcg
KzY3NiwxNyBAQCBjbGFzcyBQb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMg
c2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogCiAgIHZvaWQgVGVzdFRjcFJlY29ubmVjdChib29sIHBp
bmdfYWZ0ZXJfZGlzY29ubmVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZW5k
X2FmdGVyX2Rpc2Nvbm5lY3RlZCkgewotICAgIFBvcnQqIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChr
TG9jYWxBZGRyMSk7CisgICAgYXV0byBwb3J0MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEp
OwogICAgIHBvcnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwot
ICAgIFBvcnQqIHBvcnQyID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMik7CisgICAgYXV0byBw
b3J0MiA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjIpOwogICAgIHBvcnQyLT5TZXRJY2VSb2xl
KGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CiAKICAgICBwb3J0MS0+c2V0X2NvbXBvbmVu
dChjcmlja2V0OjpJQ0VfQ0FORElEQVRFX0NPTVBPTkVOVF9ERUZBVUxUKTsKICAgICBwb3J0Mi0+
c2V0X2NvbXBvbmVudChjcmlja2V0OjpJQ0VfQ0FORElEQVRFX0NPTVBPTkVOVF9ERUZBVUxUKTsK
IAogICAgIC8vIFNldCB1cCBjaGFubmVscyBhbmQgZW5zdXJlIGJvdGggcG9ydHMgd2lsbCBiZSBk
ZWxldGVkLgotICAgIFRlc3RDaGFubmVsIGNoMShwb3J0MSk7Ci0gICAgVGVzdENoYW5uZWwgY2gy
KHBvcnQyKTsKKyAgICBUZXN0Q2hhbm5lbCBjaDEoc3RkOjptb3ZlKHBvcnQxKSk7CisgICAgVGVz
dENoYW5uZWwgY2gyKHN0ZDo6bW92ZShwb3J0MikpOwogICAgIEVYUEVDVF9FUSgwLCBjaDEuY29t
cGxldGVfY291bnQoKSk7CiAgICAgRVhQRUNUX0VRKDAsIGNoMi5jb21wbGV0ZV9jb3VudCgpKTsK
IApAQCAtNzAwLDcgKzY5Niw3IEBAIGNsYXNzIFBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QsIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgQVNTRVJUX0VRX1dBSVQoMSwg
Y2gyLmNvbXBsZXRlX2NvdW50KCksIGtEZWZhdWx0VGltZW91dCk7CiAKICAgICAvLyBJbml0aWFs
IGNvbm5lY3RpbmcgdGhlIGNoYW5uZWwsIGNyZWF0ZSBjb25uZWN0aW9uIG9uIGNoYW5uZWwxLgot
ICAgIGNoMS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0MikpOworICAgIGNoMS5D
cmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShjaDIucG9ydCgpKSk7CiAgICAgQ29ubmVjdFN0
YXJ0ZWRDaGFubmVscygmY2gxLCAmY2gyKTsKIAogICAgIC8vIFNob3J0ZW4gdGhlIHRpbWVvdXQg
cGVyaW9kLgpAQCAtNzUzLDQzICs3NDksNDUgQEAgY2xhc3MgUG9ydFRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCwgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICBFWFBFQ1RfVFJV
RV9XQUlUKGNoMi5jb25uKCkgPT0gTlVMTCwga0RlZmF1bHRUaW1lb3V0KTsKICAgfQogCi0gIElj
ZU1lc3NhZ2UqIENyZWF0ZVN0dW5NZXNzYWdlKGludCB0eXBlKSB7Ci0gICAgSWNlTWVzc2FnZSog
bXNnID0gbmV3IEljZU1lc3NhZ2UoKTsKKyAgc3RkOjp1bmlxdWVfcHRyPEljZU1lc3NhZ2U+IENy
ZWF0ZVN0dW5NZXNzYWdlKGludCB0eXBlKSB7CisgICAgYXV0byBtc2cgPSBhYnNsOjptYWtlX3Vu
aXF1ZTxJY2VNZXNzYWdlPigpOwogICAgIG1zZy0+U2V0VHlwZSh0eXBlKTsKICAgICBtc2ctPlNl
dFRyYW5zYWN0aW9uSUQoIlRFU1RURVNUVEVTVCIpOwogICAgIHJldHVybiBtc2c7CiAgIH0KLSAg
SWNlTWVzc2FnZSogQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoaW50IHR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB1c2VybmFtZSkgewotICAgIEljZU1lc3NhZ2UqIG1zZyA9IENyZWF0ZVN0dW5NZXNzYWdlKHR5
cGUpOworICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gQ3JlYXRlU3R1bk1lc3NhZ2VXaXRo
VXNlcm5hbWUoCisgICAgICBpbnQgdHlwZSwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2Vy
bmFtZSkgeworICAgIHN0ZDo6dW5pcXVlX3B0cjxJY2VNZXNzYWdlPiBtc2cgPSBDcmVhdGVTdHVu
TWVzc2FnZSh0eXBlKTsKICAgICBtc2ctPkFkZEF0dHJpYnV0ZShhYnNsOjptYWtlX3VuaXF1ZTxT
dHVuQnl0ZVN0cmluZ0F0dHJpYnV0ZT4oCiAgICAgICAgIFNUVU5fQVRUUl9VU0VSTkFNRSwgdXNl
cm5hbWUpKTsKICAgICByZXR1cm4gbXNnOwogICB9Ci0gIFRlc3RQb3J0KiBDcmVhdGVUZXN0UG9y
dChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICBUZXN0UG9ydCogcG9ydCA9
IG5ldyBUZXN0UG9ydCgmbWFpbl8sICJ0ZXN0IiwgJnNvY2tldF9mYWN0b3J5XywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlTmV0d29yayhhZGRyKSwgMCwgMCwgdXNlcm5h
bWUsIHBhc3N3b3JkKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBDcmVhdGVUZXN0UG9y
dChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBw
YXNzd29yZCkgeworICAgIGF1dG8gcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPFRlc3RQb3J0Pigm
bWFpbl8sICJ0ZXN0IiwgJnNvY2tldF9mYWN0b3J5XywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWFrZU5ldHdvcmsoYWRkciksIDAsIDAsIHVzZXJuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCk7CiAg
ICAgcG9ydC0+U2lnbmFsUm9sZUNvbmZsaWN0LmNvbm5lY3QodGhpcywgJlBvcnRUZXN0OjpPblJv
bGVDb25mbGljdCk7CiAgICAgcmV0dXJuIHBvcnQ7CiAgIH0KLSAgVGVzdFBvcnQqIENyZWF0ZVRl
c3RQb3J0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyaWNrZXQ6OkljZVJvbGUgcm9sZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCB0aWVicmVha2VyKSB7Ci0gICAgVGVzdFBvcnQqIHBvcnQgPSBDcmVhdGVUZXN0UG9y
dChhZGRyLCB1c2VybmFtZSwgcGFzc3dvcmQpOworICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+
IENyZWF0ZVRlc3RQb3J0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNl
cm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHBhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyaWNrZXQ6OkljZVJvbGUgcm9sZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgdGllYnJlYWtlcikgeworICAgIGF1dG8gcG9ydCA9IENy
ZWF0ZVRlc3RQb3J0KGFkZHIsIHVzZXJuYW1lLCBwYXNzd29yZCk7CiAgICAgcG9ydC0+U2V0SWNl
Um9sZShyb2xlKTsKICAgICBwb3J0LT5TZXRJY2VUaWVicmVha2VyKHRpZWJyZWFrZXIpOwogICAg
IHJldHVybiBwb3J0OwogICB9CiAgIC8vIE92ZXJsb2FkIHRvIGNyZWF0ZSBhIHRlc3QgcG9ydCBn
aXZlbiBhbiBydGM6Ok5ldHdvcmsgZGlyZWN0bHkuCi0gIFRlc3RQb3J0KiBDcmVhdGVUZXN0UG9y
dChydGM6Ok5ldHdvcmsqIG5ldHdvcmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICBUZXN0UG9ydCogcG9ydCA9IG5ldyBUZXN0
UG9ydCgmbWFpbl8sICJ0ZXN0IiwgJnNvY2tldF9mYWN0b3J5XywgbmV0d29yaywgMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCB1c2VybmFtZSwgcGFzc3dvcmQpOworICBz
dGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IENyZWF0ZVRlc3RQb3J0KHJ0Yzo6TmV0d29yayogbmV0
d29yaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkKSB7CisgICAgYXV0byBwb3J0ID0g
YWJzbDo6bWFrZV91bmlxdWU8VGVzdFBvcnQ+KCZtYWluXywgInRlc3QiLCAmc29ja2V0X2ZhY3Rv
cnlfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3Jr
LCAwLCAwLCB1c2VybmFtZSwgcGFzc3dvcmQpOwogICAgIHBvcnQtPlNpZ25hbFJvbGVDb25mbGlj
dC5jb25uZWN0KHRoaXMsICZQb3J0VGVzdDo6T25Sb2xlQ29uZmxpY3QpOwogICAgIHJldHVybiBw
b3J0OwogICB9CkBAIC04MzQsOSArODMyLDkgQEAgY2xhc3MgUG9ydFRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCwgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKIH07CiAKIHZvaWQgUG9y
dFRlc3Q6OlRlc3RDb25uZWN0aXZpdHkoY29uc3QgY2hhciogbmFtZTEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBvcnQqIHBvcnQxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gcG9ydDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQb3J0KiBwb3J0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBvcnQ+IHBvcnQyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGFjY2VwdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYW1l
X2FkZHIxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhbWVfYWRkcjIs
CkBAIC04NDcsOCArODQ1LDggQEAgdm9pZCBQb3J0VGVzdDo6VGVzdENvbm5lY3Rpdml0eShjb25z
dCBjaGFyKiBuYW1lMSwKICAgcG9ydDItPnNldF9jb21wb25lbnQoY3JpY2tldDo6SUNFX0NBTkRJ
REFURV9DT01QT05FTlRfREVGQVVMVCk7CiAKICAgLy8gU2V0IHVwIGNoYW5uZWxzIGFuZCBlbnN1
cmUgYm90aCBwb3J0cyB3aWxsIGJlIGRlbGV0ZWQuCi0gIFRlc3RDaGFubmVsIGNoMShwb3J0MSk7
Ci0gIFRlc3RDaGFubmVsIGNoMihwb3J0Mik7CisgIFRlc3RDaGFubmVsIGNoMShzdGQ6Om1vdmUo
cG9ydDEpKTsKKyAgVGVzdENoYW5uZWwgY2gyKHN0ZDo6bW92ZShwb3J0MikpOwogICBFWFBFQ1Rf
RVEoMCwgY2gxLmNvbXBsZXRlX2NvdW50KCkpOwogICBFWFBFQ1RfRVEoMCwgY2gyLmNvbXBsZXRl
X2NvdW50KCkpOwogCkBAIC04NTksNyArODU3LDcgQEAgdm9pZCBQb3J0VGVzdDo6VGVzdENvbm5l
Y3Rpdml0eShjb25zdCBjaGFyKiBuYW1lMSwKICAgQVNTRVJUX0VRX1NJTVVMQVRFRF9XQUlUKDEs
IGNoMi5jb21wbGV0ZV9jb3VudCgpLCBrRGVmYXVsdFRpbWVvdXQsIGNsb2NrKTsKIAogICAvLyBT
ZW5kIGEgcGluZyBmcm9tIHNyYyB0byBkc3QuIFRoaXMgbWF5IG9yIG1heSBub3QgbWFrZSBpdC4K
LSAgY2gxLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKHBvcnQyKSk7CisgIGNoMS5DcmVh
dGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShjaDIucG9ydCgpKSk7CiAgIEFTU0VSVF9UUlVFKGNo
MS5jb25uKCkgIT0gTlVMTCk7CiAgIEVYUEVDVF9UUlVFX1NJTVVMQVRFRF9XQUlUKGNoMS5jb25u
KCktPmNvbm5lY3RlZCgpLCBrRGVmYXVsdFRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsb2NrKTsgIC8vIGZvciBUQ1AgY29ubmVjdApAQCAtODcwLDE2ICs4NjgsMTYgQEAg
dm9pZCBQb3J0VGVzdDo6VGVzdENvbm5lY3Rpdml0eShjb25zdCBjaGFyKiBuYW1lMSwKICAgICAv
LyBXZSBhcmUgYWJsZSB0byBzZW5kIGEgcGluZyBmcm9tIHNyYyB0byBkc3QuIFRoaXMgaXMgdGhl
IGNhc2Ugd2hlbgogICAgIC8vIHNlbmRpbmcgdG8gVURQIHBvcnRzIGFuZCBjb25lIE5BVHMuCiAg
ICAgRVhQRUNUX1RSVUUoY2gxLnJlbW90ZV9hZGRyZXNzKCkuSXNOaWwoKSk7Ci0gICAgRVhQRUNU
X0VRKGNoMi5yZW1vdGVfZnJhZ21lbnQoKSwgcG9ydDEtPnVzZXJuYW1lX2ZyYWdtZW50KCkpOwor
ICAgIEVYUEVDVF9FUShjaDIucmVtb3RlX2ZyYWdtZW50KCksIGNoMS5wb3J0KCktPnVzZXJuYW1l
X2ZyYWdtZW50KCkpOwogCiAgICAgLy8gRW5zdXJlIHRoZSBwaW5nIGNhbWUgZnJvbSB0aGUgc2Ft
ZSBhZGRyZXNzIHVzZWQgZm9yIHNyYy4KICAgICAvLyBUaGlzIGlzIHRoZSBjYXNlIHVubGVzcyB0
aGUgc291cmNlIE5BVCB3YXMgc3ltbWV0cmljLgogICAgIGlmIChzYW1lX2FkZHIxKQotICAgICAg
RVhQRUNUX0VRKGNoMi5yZW1vdGVfYWRkcmVzcygpLCBHZXRBZGRyZXNzKHBvcnQxKSk7CisgICAg
ICBFWFBFQ1RfRVEoY2gyLnJlbW90ZV9hZGRyZXNzKCksIEdldEFkZHJlc3MoY2gxLnBvcnQoKSkp
OwogICAgIEVYUEVDVF9UUlVFKHNhbWVfYWRkcjIpOwogCiAgICAgLy8gU2VuZCBhIHBpbmcgZnJv
bSBkc3QgdG8gc3JjLgotICAgIGNoMi5BY2NlcHRDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0
MSkpOworICAgIGNoMi5BY2NlcHRDb25uZWN0aW9uKEdldENhbmRpZGF0ZShjaDEucG9ydCgpKSk7
CiAgICAgQVNTRVJUX1RSVUUoY2gyLmNvbm4oKSAhPSBOVUxMKTsKICAgICBjaDIuUGluZygpOwog
ICAgIEVYUEVDVF9FUV9TSU1VTEFURURfV0FJVChDb25uZWN0aW9uOjpTVEFURV9XUklUQUJMRSwK
QEAgLTg5MSw3ICs4ODksNyBAQCB2b2lkIFBvcnRUZXN0OjpUZXN0Q29ubmVjdGl2aXR5KGNvbnN0
IGNoYXIqIG5hbWUxLAogICAgIEVYUEVDVF9UUlVFKGNoMi5yZW1vdGVfYWRkcmVzcygpLklzTmls
KCkpOwogCiAgICAgLy8gU2VuZCBhIHBpbmcgZnJvbSBkc3QgdG8gc3JjLiBBZ2FpbiwgdGhpcyBt
YXkgb3IgbWF5IG5vdCBtYWtlIGl0LgotICAgIGNoMi5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRp
ZGF0ZShwb3J0MSkpOworICAgIGNoMi5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShjaDEu
cG9ydCgpKSk7CiAgICAgQVNTRVJUX1RSVUUoY2gyLmNvbm4oKSAhPSBOVUxMKTsKICAgICBjaDIu
UGluZygpOwogICAgIFNJTVVMQVRFRF9XQUlUKGNoMi5jb25uKCktPndyaXRlX3N0YXRlKCkgPT0g
Q29ubmVjdGlvbjo6U1RBVEVfV1JJVEFCTEUsCkBAIC05MjUsNyArOTIzLDcgQEAgdm9pZCBQb3J0
VGVzdDo6VGVzdENvbm5lY3Rpdml0eShjb25zdCBjaGFyKiBuYW1lMSwKICAgICAgIEVYUEVDVF9U
UlVFKGNoMS5yZW1vdGVfYWRkcmVzcygpLklzTmlsKCkpOwogCiAgICAgICAvLyBQaWNrIHVwIHRo
ZSBhY3R1YWwgYWRkcmVzcyBhbmQgZXN0YWJsaXNoIHRoZSBjb25uZWN0aW9uLgotICAgICAgY2gy
LkFjY2VwdENvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKHBvcnQxKSk7CisgICAgICBjaDIuQWNjZXB0
Q29ubmVjdGlvbihHZXRDYW5kaWRhdGUoY2gxLnBvcnQoKSkpOwogICAgICAgQVNTRVJUX1RSVUUo
Y2gyLmNvbm4oKSAhPSBOVUxMKTsKICAgICAgIGNoMi5QaW5nKCk7CiAgICAgICBFWFBFQ1RfRVFf
U0lNVUxBVEVEX1dBSVQoQ29ubmVjdGlvbjo6U1RBVEVfV1JJVEFCTEUsCkBAIC05MzgsNyArOTM2
LDcgQEAgdm9pZCBQb3J0VGVzdDo6VGVzdENvbm5lY3Rpdml0eShjb25zdCBjaGFyKiBuYW1lMSwK
ICAgICAgIEVYUEVDVF9GQUxTRShjaDEuY29ubigpLT5yZWNlaXZpbmcoKSk7CiAKICAgICAgIC8v
IFVwZGF0ZSBvdXIgYWRkcmVzcyBhbmQgY29tcGxldGUgdGhlIGNvbm5lY3Rpb24uCi0gICAgICBj
aDEuQWNjZXB0Q29ubmVjdGlvbihHZXRDYW5kaWRhdGUocG9ydDIpKTsKKyAgICAgIGNoMS5BY2Nl
cHRDb25uZWN0aW9uKEdldENhbmRpZGF0ZShjaDIucG9ydCgpKSk7CiAgICAgICBjaDEuUGluZygp
OwogICAgICAgRVhQRUNUX0VRX1NJTVVMQVRFRF9XQUlUKENvbm5lY3Rpb246OlNUQVRFX1dSSVRB
QkxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoMS5jb25uKCktPndyaXRlX3N0
YXRlKCksIGtEZWZhdWx0VGltZW91dCwKQEAgLTEyNjEsMTIgKzEyNTksMTIgQEAgVEVTVF9GKFBv
cnRUZXN0LCBUZXN0VGNwUmVjb25uZWN0VGltZW91dCkgewogLy8gVGVzdCB3aGVuIFRjcENvbm5l
Y3Rpb24gbmV2ZXIgY29ubmVjdHMsIHRoZSBPbkNsb3NlKCkgd2lsbCBiZSBjYWxsZWQgdG8KIC8v
IGRlc3Ryb3kgdGhlIGNvbm5lY3Rpb24uCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RUY3BOZXZlckNv
bm5lY3QpIHsKLSAgUG9ydCogcG9ydDEgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKTsKKyAg
YXV0byBwb3J0MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpOwogICBwb3J0MS0+U2V0SWNl
Um9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgcG9ydDEtPnNldF9jb21wb25l
bnQoY3JpY2tldDo6SUNFX0NBTkRJREFURV9DT01QT05FTlRfREVGQVVMVCk7CiAKICAgLy8gU2V0
IHVwIGEgY2hhbm5lbCBhbmQgZW5zdXJlIHRoZSBwb3J0IHdpbGwgYmUgZGVsZXRlZC4KLSAgVGVz
dENoYW5uZWwgY2gxKHBvcnQxKTsKKyAgVGVzdENoYW5uZWwgY2gxKHN0ZDo6bW92ZShwb3J0MSkp
OwogICBFWFBFQ1RfRVEoMCwgY2gxLmNvbXBsZXRlX2NvdW50KCkpOwogCiAgIGNoMS5TdGFydCgp
OwpAQCAtMTI3Nyw3ICsxMjc1LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0VGNwTmV2ZXJDb25u
ZWN0KSB7CiAgIC8vIEJpbmQgYnV0IG5vdCBsaXN0ZW4uCiAgIEVYUEVDVF9FUSgwLCBzZXJ2ZXIt
PkJpbmQoa0xvY2FsQWRkcjIpKTsKIAotICBDYW5kaWRhdGUgYyA9IEdldENhbmRpZGF0ZShwb3J0
MSk7CisgIENhbmRpZGF0ZSBjID0gR2V0Q2FuZGlkYXRlKGNoMS5wb3J0KCkpOwogICBjLnNldF9h
ZGRyZXNzKHNlcnZlci0+R2V0TG9jYWxBZGRyZXNzKCkpOwogCiAgIGNoMS5DcmVhdGVDb25uZWN0
aW9uKGMpOwpAQCAtMTMxMiwxMCArMTMxMCw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFNzbFRj
cFRvU3NsVGNwUmVsYXkpIHsKIC8vIGlpKSBpdCBoYXMgbm90IHJlY2VpdmVkIGFueXRoaW5nIGZv
ciBERUFEX0NPTk5FQ1RJT05fUkVDRUlWRV9USU1FT1VUCiAvLyAgICAgbWlsbGlzZWNvbmRzIHNp
bmNlIGxhc3QgcmVjZWl2aW5nLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q29ubmVjdGlvbkRlYWQp
IHsKLSAgVURQUG9ydCogcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKLSAgVURQ
UG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKLSAgVGVzdENoYW5uZWwg
Y2gxKHBvcnQxKTsKLSAgVGVzdENoYW5uZWwgY2gyKHBvcnQyKTsKKyAgVGVzdENoYW5uZWwgY2gx
KENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpKTsKKyAgVGVzdENoYW5uZWwgY2gyKENyZWF0ZVVk
cFBvcnQoa0xvY2FsQWRkcjIpKTsKICAgLy8gQWNxdWlyZSBhZGRyZXNzLgogICBjaDEuU3RhcnQo
KTsKICAgY2gyLlN0YXJ0KCk7CkBAIC0xMzI0LDcgKzEzMjAsNyBAQCBURVNUX0YoUG9ydFRlc3Qs
IFRlc3RDb25uZWN0aW9uRGVhZCkgewogCiAgIC8vIFRlc3QgY2FzZSB0aGF0IHRoZSBjb25uZWN0
aW9uIGhhcyBuZXZlciByZWNlaXZlZCBhbnl0aGluZy4KICAgaW50NjRfdCBiZWZvcmVfY3JlYXRl
ZCA9IHJ0Yzo6VGltZU1pbGxpcygpOwotICBjaDEuQ3JlYXRlQ29ubmVjdGlvbihHZXRDYW5kaWRh
dGUocG9ydDIpKTsKKyAgY2gxLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNoMi5wb3J0
KCkpKTsKICAgaW50NjRfdCBhZnRlcl9jcmVhdGVkID0gcnRjOjpUaW1lTWlsbGlzKCk7CiAgIENv
bm5lY3Rpb24qIGNvbm4gPSBjaDEuY29ubigpOwogICBBU1NFUlRfTkUoY29ubiwgbnVsbHB0cik7
CkBAIC0xMzQzLDcgKzEzMzksNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RDb25uZWN0aW9uRGVh
ZCkgewogCiAgIC8vIFRlc3QgY2FzZSB0aGF0IHRoZSBjb25uZWN0aW9uIGhhcyByZWNlaXZlZCBz
b21ldGhpbmcuCiAgIC8vIENyZWF0ZSBhIGNvbm5lY3Rpb24gYWdhaW4gYW5kIHJlY2VpdmUgYSBw
aW5nLgotICBjaDEuQ3JlYXRlQ29ubmVjdGlvbihHZXRDYW5kaWRhdGUocG9ydDIpKTsKKyAgY2gx
LkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNoMi5wb3J0KCkpKTsKICAgY29ubiA9IGNo
MS5jb25uKCk7CiAgIEFTU0VSVF9ORShjb25uLCBudWxscHRyKTsKICAgaW50NjRfdCBiZWZvcmVf
bGFzdF9yZWNlaXZpbmcgPSBydGM6OlRpbWVNaWxsaXMoKTsKQEAgLTEzNjIsMTQgKzEzNTgsMTUg
QEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q29ubmVjdGlvbkRlYWQpIHsKIC8vIHZlcmlmaWVzIE1l
c3NhZ2UgSW50ZWdyaXR5IGF0dHJpYnV0ZSBpbiBTVFVOIG1lc3NhZ2VzIGFuZCB1c2VybmFtZSBp
biBTVFVOCiAvLyBiaW5kaW5nIHJlcXVlc3Qgd2lsbCBoYXZlIGNvbG9uICgiOiIpIGJldHdlZW4g
cmVtb3RlIGFuZCBsb2NhbCB1c2VybmFtZS4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdExvY2FsVG9M
b2NhbFN0YW5kYXJkKSB7Ci0gIFVEUFBvcnQqIHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxB
ZGRyMSk7CisgIGF1dG8gcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKICAgcG9y
dDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIHBvcnQxLT5T
ZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMSk7Ci0gIFVEUFBvcnQqIHBvcnQyID0gQ3JlYXRl
VWRwUG9ydChrTG9jYWxBZGRyMik7CisgIGF1dG8gcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2Nh
bEFkZHIyKTsKICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVE
KTsKICAgcG9ydDItPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIyKTsKICAgLy8gU2FtZSBw
YXJhbWV0ZXJzIGFzIFRlc3RMb2NhbFRvTG9jYWwgYWJvdmUuCi0gIFRlc3RDb25uZWN0aXZpdHko
InVkcCIsIHBvcnQxLCAidWRwIiwgcG9ydDIsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOworICBU
ZXN0Q29ubmVjdGl2aXR5KCJ1ZHAiLCBzdGQ6Om1vdmUocG9ydDEpLCAidWRwIiwgc3RkOjptb3Zl
KHBvcnQyKSwgdHJ1ZSwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICB0cnVlLCB0cnVlKTsKIH0K
IAogLy8gVGhpcyB0ZXN0IGlzIHRyeWluZyB0byB2YWxpZGF0ZSBhIHN1Y2Nlc3NmdWwgYW5kIGZh
aWx1cmUgc2NlbmFyaW8gaW4gYQpAQCAtMTM3Nyw4ICsxMzc0LDcgQEAgVEVTVF9GKFBvcnRUZXN0
LCBUZXN0TG9jYWxUb0xvY2FsU3RhbmRhcmQpIHsKIC8vIHNob3VsZCByZW1haW4gZXF1YWwgdG8g
dGhlIHJlcXVlc3QgZ2VuZXJhdGVkIGJ5IHRoZSBwb3J0IGFuZCByb2xlIG9mIHBvcnQKIC8vIG11
c3QgYmUgaW4gY29udHJvbGxpbmcuCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RMb29wYmFja0NhbGwp
IHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBscG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQ
b3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3MiKSk7CisgIGF1dG8gbHBvcnQgPSBDcmVh
dGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIik7CiAgIGxwb3J0LT5TZXRJ
Y2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwogICBscG9ydC0+U2V0SWNlVGll
YnJlYWtlcihrVGllYnJlYWtlcjEpOwogICBscG9ydC0+UHJlcGFyZUFkZHJlc3MoKTsKQEAgLTEz
OTEsNyArMTM4Nyw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdExvb3BiYWNrQ2FsbCkgewogICBJ
Y2VNZXNzYWdlKiBtc2cgPSBscG9ydC0+bGFzdF9zdHVuX21zZygpOwogICBFWFBFQ1RfRVEoU1RV
Tl9CSU5ESU5HX1JFUVVFU1QsIG1zZy0+dHlwZSgpKTsKICAgY29ubi0+T25SZWFkUGFja2V0KGxw
b3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAgICAgICAgICAgICAgICAgICAg
IGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAg
ICAgICAgICAgICAgICAgICAgbHBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCAvKiBwYWNr
ZXRfdGltZV91cyAqLyAtMSk7CiAgIEFTU0VSVF9UUlVFX1dBSVQobHBvcnQtPmxhc3Rfc3R1bl9t
c2coKSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVvdXQpOwogICBtc2cgPSBscG9ydC0+bGFzdF9zdHVu
X21zZygpOwogICBFWFBFQ1RfRVEoU1RVTl9CSU5ESU5HX1JFU1BPTlNFLCBtc2ctPnR5cGUoKSk7
CkBAIC0xNDIyLDkgKzE0MTgsOSBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RMb29wYmFja0NhbGwp
IHsKICAgbW9kaWZpZWRfcmVxLT5BZGRGaW5nZXJwcmludCgpOwogCiAgIGxwb3J0LT5SZXNldCgp
OwotICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZUJ1ZmZlcldyaXRlcj4gYnVmKG5ldyBCeXRlQnVmZmVy
V3JpdGVyKCkpOwotICBXcml0ZVN0dW5NZXNzYWdlKG1vZGlmaWVkX3JlcS5nZXQoKSwgYnVmLmdl
dCgpKTsKLSAgY29ubjEtPk9uUmVhZFBhY2tldChidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwg
cnRjOjpQYWNrZXRUaW1lKCkpOworICBhdXRvIGJ1ZiA9IGFic2w6Om1ha2VfdW5pcXVlPEJ5dGVC
dWZmZXJXcml0ZXI+KCk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKm1vZGlmaWVkX3JlcSwgYnVmLmdl
dCgpKTsKKyAgY29ubjEtPk9uUmVhZFBhY2tldChidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwg
LyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBBU1NFUlRfVFJVRV9XQUlUKGxwb3J0LT5sYXN0
X3N0dW5fbXNnKCkgIT0gTlVMTCwga0RlZmF1bHRUaW1lb3V0KTsKICAgbXNnID0gbHBvcnQtPmxh
c3Rfc3R1bl9tc2coKTsKICAgRVhQRUNUX0VRKFNUVU5fQklORElOR19FUlJPUl9SRVNQT05TRSwg
bXNnLT50eXBlKCkpOwpAQCAtMTQzNiwxMiArMTQzMiwxMCBAQCBURVNUX0YoUG9ydFRlc3QsIFRl
c3RMb29wYmFja0NhbGwpIHsKIC8vIHZhbHVlIG9mIHRpZWJyZWFrZXIsIHdoZW4gaXQgcmVjZWl2
ZXMgcGluZyByZXF1ZXN0IGZyb20gfHJwb3J0fCBpdCB3aWxsCiAvLyBzZW5kIHJvbGUgY29uZmxp
Y3Qgc2lnbmFsLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0SWNlUm9sZUNvbmZsaWN0KSB7Ci0gIHN0
ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gbHBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9j
YWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIikpOworICBhdXRvIGxwb3J0ID0gQ3JlYXRlVGVzdFBv
cnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpOwogICBscG9ydC0+U2V0SWNlUm9sZShj
cmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBvcnQtPlNldEljZVRpZWJyZWFrZXIo
a1RpZWJyZWFrZXIxKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBycG9ydCgKLSAgICAg
IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKSk7CisgIGF1dG8g
cnBvcnQgPSBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIik7CiAg
IHJwb3J0LT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwogICBycG9y
dC0+U2V0SWNlVGllYnJlYWtlcihrVGllYnJlYWtlcjIpOwogCkBAIC0xNDYwLDcgKzE0NTQsNyBA
QCBURVNUX0YoUG9ydFRlc3QsIFRlc3RJY2VSb2xlQ29uZmxpY3QpIHsKICAgRVhQRUNUX0VRKFNU
VU5fQklORElOR19SRVFVRVNULCBtc2ctPnR5cGUoKSk7CiAgIC8vIFNlbmQgcnBvcnQgYmluZGlu
ZyByZXF1ZXN0IHRvIGxwb3J0LgogICBsY29ubi0+T25SZWFkUGFja2V0KHJwb3J0LT5sYXN0X3N0
dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFz
dF9zdHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3Vz
ICovIC0xKTsKIAogICBBU1NFUlRfVFJVRV9XQUlUKGxwb3J0LT5sYXN0X3N0dW5fbXNnKCkgIT0g
TlVMTCwga0RlZmF1bHRUaW1lb3V0KTsKICAgRVhQRUNUX0VRKFNUVU5fQklORElOR19SRVNQT05T
RSwgbHBvcnQtPmxhc3Rfc3R1bl9tc2coKS0+dHlwZSgpKTsKQEAgLTE0NjgsMTMgKzE0NjIsMTIg
QEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SWNlUm9sZUNvbmZsaWN0KSB7CiB9CiAKIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdFRjcE5vRGVsYXkpIHsKLSAgVENQUG9ydCogcG9ydDEgPSBDcmVhdGVUY3BQ
b3J0KGtMb2NhbEFkZHIxKTsKKyAgYXV0byBwb3J0MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRk
cjEpOwogICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsK
ICAgaW50IG9wdGlvbl92YWx1ZSA9IC0xOwogICBpbnQgc3VjY2VzcyA9IHBvcnQxLT5HZXRPcHRp
b24ocnRjOjpTb2NrZXQ6Ok9QVF9OT0RFTEFZLCAmb3B0aW9uX3ZhbHVlKTsKICAgQVNTRVJUX0VR
KDAsIHN1Y2Nlc3MpOyAgLy8gR2V0T3B0aW9uKCkgc2hvdWxkIGNvbXBsZXRlIHN1Y2Nlc3NmdWxs
eSB3LyAwCiAgIEFTU0VSVF9FUSgxLCBvcHRpb25fdmFsdWUpOwotICBkZWxldGUgcG9ydDE7CiB9
CiAKIFRFU1RfRihQb3J0VGVzdCwgVGVzdERlbGF5ZWRCaW5kaW5nVWRwKSB7CkBAIC0xNDgyLDcg
KzE0NzUsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3REZWxheWVkQmluZGluZ1VkcCkgewogICBG
YWtlUGFja2V0U29ja2V0RmFjdG9yeSBzb2NrZXRfZmFjdG9yeTsKIAogICBzb2NrZXRfZmFjdG9y
eS5zZXRfbmV4dF91ZHBfc29ja2V0KHNvY2tldCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxVRFBQb3J0
PiBwb3J0KENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEsICZzb2NrZXRfZmFjdG9yeSkpOworICBh
dXRvIHBvcnQgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxLCAmc29ja2V0X2ZhY3RvcnkpOwog
CiAgIHNvY2tldC0+c2V0X3N0YXRlKEFzeW5jUGFja2V0U29ja2V0OjpTVEFURV9CSU5ESU5HKTsK
ICAgcG9ydC0+UHJlcGFyZUFkZHJlc3MoKTsKQEAgLTE0OTgsNyArMTQ5MSw3IEBAIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdERlbGF5ZWRCaW5kaW5nVGNwKSB7CiAgIEZha2VQYWNrZXRTb2NrZXRGYWN0
b3J5IHNvY2tldF9mYWN0b3J5OwogCiAgIHNvY2tldF9mYWN0b3J5LnNldF9uZXh0X3NlcnZlcl90
Y3Bfc29ja2V0KHNvY2tldCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUQ1BQb3J0PiBwb3J0KENyZWF0
ZVRjcFBvcnQoa0xvY2FsQWRkcjEsICZzb2NrZXRfZmFjdG9yeSkpOworICBhdXRvIHBvcnQgPSBD
cmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxLCAmc29ja2V0X2ZhY3RvcnkpOwogCiAgIHNvY2tldC0+
c2V0X3N0YXRlKEFzeW5jUGFja2V0U29ja2V0OjpTVEFURV9CSU5ESU5HKTsKICAgcG9ydC0+UHJl
cGFyZUFkZHJlc3MoKTsKQEAgLTE1MTksMTAgKzE1MTIsMTAgQEAgdm9pZCBQb3J0VGVzdDo6VGVz
dENyb3NzRmFtaWx5UG9ydHMoaW50IHR5cGUpIHsKICAgICBGYWtlQXN5bmNQYWNrZXRTb2NrZXQq
IHNvY2tldCA9IG5ldyBGYWtlQXN5bmNQYWNrZXRTb2NrZXQoKTsKICAgICBpZiAodHlwZSA9PSBT
T0NLX0RHUkFNKSB7CiAgICAgICBmYWN0b3J5LnNldF9uZXh0X3VkcF9zb2NrZXQoc29ja2V0KTsK
LSAgICAgIHBvcnRzW2ldLnJlc2V0KENyZWF0ZVVkcFBvcnQoYWRkcmVzc2VzW2ldLCAmZmFjdG9y
eSkpOworICAgICAgcG9ydHNbaV0gPSBDcmVhdGVVZHBQb3J0KGFkZHJlc3Nlc1tpXSwgJmZhY3Rv
cnkpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBTT0NLX1NUUkVBTSkgewogICAgICAgZmFjdG9y
eS5zZXRfbmV4dF9zZXJ2ZXJfdGNwX3NvY2tldChzb2NrZXQpOwotICAgICAgcG9ydHNbaV0ucmVz
ZXQoQ3JlYXRlVGNwUG9ydChhZGRyZXNzZXNbaV0sICZmYWN0b3J5KSk7CisgICAgICBwb3J0c1tp
XSA9IENyZWF0ZVRjcFBvcnQoYWRkcmVzc2VzW2ldLCAmZmFjdG9yeSk7CiAgICAgfQogICAgIHNv
Y2tldC0+c2V0X3N0YXRlKEFzeW5jUGFja2V0U29ja2V0OjpTVEFURV9CSU5ESU5HKTsKICAgICBz
b2NrZXQtPlNpZ25hbEFkZHJlc3NSZWFkeShzb2NrZXQsIGFkZHJlc3Nlc1tpXSk7CkBAIC0xNTg2
LDcgKzE1NzksNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RVZHBWNkNyb3NzVHlwZVBvcnRzKSB7
CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgRmFrZUFzeW5jUGFja2V0U29j
a2V0KiBzb2NrZXQgPSBuZXcgRmFrZUFzeW5jUGFja2V0U29ja2V0KCk7CiAgICAgZmFjdG9yeS5z
ZXRfbmV4dF91ZHBfc29ja2V0KHNvY2tldCk7Ci0gICAgcG9ydHNbaV0ucmVzZXQoQ3JlYXRlVWRw
UG9ydChhZGRyZXNzZXNbaV0sICZmYWN0b3J5KSk7CisgICAgcG9ydHNbaV0gPSBDcmVhdGVVZHBQ
b3J0KGFkZHJlc3Nlc1tpXSwgJmZhY3RvcnkpOwogICAgIHNvY2tldC0+c2V0X3N0YXRlKEFzeW5j
UGFja2V0U29ja2V0OjpTVEFURV9CSU5ESU5HKTsKICAgICBzb2NrZXQtPlNpZ25hbEFkZHJlc3NS
ZWFkeShzb2NrZXQsIGFkZHJlc3Nlc1tpXSk7CiAgICAgcG9ydHNbaV0tPlByZXBhcmVBZGRyZXNz
KCk7CkBAIC0xNjExLDI4ICsxNjA0LDI3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFVkcFY2Q3Jv
c3NUeXBlUG9ydHMpIHsKIC8vIGdldCB0aHJvdWdoIERlZmF1bHREc2NwVmFsdWUuCiBURVNUX0Yo
UG9ydFRlc3QsIFRlc3REZWZhdWx0RHNjcFZhbHVlKSB7CiAgIGludCBkc2NwOwotICBzdGQ6OnVu
aXF1ZV9wdHI8VURQUG9ydD4gdWRwcG9ydChDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKSk7Cisg
IGF1dG8gdWRwcG9ydCA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwogICBFWFBFQ1RfRVEo
MCwgdWRwcG9ydC0+U2V0T3B0aW9uKHJ0Yzo6U29ja2V0OjpPUFRfRFNDUCwgcnRjOjpEU0NQX0NT
NikpOwogICBFWFBFQ1RfRVEoMCwgdWRwcG9ydC0+R2V0T3B0aW9uKHJ0Yzo6U29ja2V0OjpPUFRf
RFNDUCwgJmRzY3ApKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFRDUFBvcnQ+IHRjcHBvcnQoQ3JlYXRl
VGNwUG9ydChrTG9jYWxBZGRyMSkpOworICBhdXRvIHRjcHBvcnQgPSBDcmVhdGVUY3BQb3J0KGtM
b2NhbEFkZHIxKTsKICAgRVhQRUNUX0VRKDAsIHRjcHBvcnQtPlNldE9wdGlvbihydGM6OlNvY2tl
dDo6T1BUX0RTQ1AsIHJ0Yzo6RFNDUF9BRjMxKSk7CiAgIEVYUEVDVF9FUSgwLCB0Y3Bwb3J0LT5H
ZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9EU0NQLCAmZHNjcCkpOwogICBFWFBFQ1RfRVEocnRj
OjpEU0NQX0FGMzEsIGRzY3ApOwotICBzdGQ6OnVuaXF1ZV9wdHI8U3R1blBvcnQ+IHN0dW5wb3J0
KAotICAgICAgQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEo
KSkpOworICBhdXRvIHN0dW5wb3J0ID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsIG5hdF9z
b2NrZXRfZmFjdG9yeTEoKSk7CiAgIEVYUEVDVF9FUSgwLCBzdHVucG9ydC0+U2V0T3B0aW9uKHJ0
Yzo6U29ja2V0OjpPUFRfRFNDUCwgcnRjOjpEU0NQX0FGNDEpKTsKICAgRVhQRUNUX0VRKDAsIHN0
dW5wb3J0LT5HZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9EU0NQLCAmZHNjcCkpOwogICBFWFBF
Q1RfRVEocnRjOjpEU0NQX0FGNDEsIGRzY3ApOwotICBzdGQ6OnVuaXF1ZV9wdHI8VHVyblBvcnQ+
IHR1cm5wb3J0MSgKLSAgICAgIENyZWF0ZVR1cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0
X2ZhY3RvcnkxKCksIFBST1RPX1VEUCwgUFJPVE9fVURQKSk7CisgIGF1dG8gdHVybnBvcnQxID0K
KyAgICAgIENyZWF0ZVR1cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCks
IFBST1RPX1VEUCwgUFJPVE9fVURQKTsKICAgLy8gU29ja2V0IGlzIGNyZWF0ZWQgaW4gUHJlcGFy
ZUFkZHJlc3MuCiAgIHR1cm5wb3J0MS0+UHJlcGFyZUFkZHJlc3MoKTsKICAgRVhQRUNUX0VRKDAs
IHR1cm5wb3J0MS0+U2V0T3B0aW9uKHJ0Yzo6U29ja2V0OjpPUFRfRFNDUCwgcnRjOjpEU0NQX0NT
NykpOwogICBFWFBFQ1RfRVEoMCwgdHVybnBvcnQxLT5HZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9Q
VF9EU0NQLCAmZHNjcCkpOwogICBFWFBFQ1RfRVEocnRjOjpEU0NQX0NTNywgZHNjcCk7CiAgIC8v
IFRoaXMgd2lsbCB2ZXJpZnkgY29ycmVjdCB2YWx1ZSByZXR1cm5lZCB3aXRob3V0IHRoZSBzb2Nr
ZXQuCi0gIHN0ZDo6dW5pcXVlX3B0cjxUdXJuUG9ydD4gdHVybnBvcnQyKAotICAgICAgQ3JlYXRl
VHVyblBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQ
Uk9UT19VRFApKTsKKyAgYXV0byB0dXJucG9ydDIgPQorICAgICAgQ3JlYXRlVHVyblBvcnQoa0xv
Y2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQUk9UT19VRFApOwog
ICBFWFBFQ1RfRVEoMCwgdHVybnBvcnQyLT5TZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9EU0NQ
LCBydGM6OkRTQ1BfQ1M2KSk7CiAgIEVYUEVDVF9FUSgwLCB0dXJucG9ydDItPkdldE9wdGlvbihy
dGM6OlNvY2tldDo6T1BUX0RTQ1AsICZkc2NwKSk7CiAgIEVYUEVDVF9FUShydGM6OkRTQ1BfQ1M2
LCBkc2NwKTsKQEAgLTE2NDAsMTAgKzE2MzIsOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3REZWZh
dWx0RHNjcFZhbHVlKSB7CiAKIC8vIFRlc3Qgc2VuZGluZyBTVFVOIG1lc3NhZ2VzLgogVEVTVF9G
KFBvcnRUZXN0LCBUZXN0U2VuZFN0dW5NZXNzYWdlKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0
UG9ydD4gbHBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwg
ImxwYXNzIikpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAgQ3Jl
YXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBscG9y
dCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3MiKTsKKyAgYXV0
byBycG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsK
ICAgbHBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIGxw
b3J0LT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMSk7CiAgIHJwb3J0LT5TZXRJY2VSb2xl
KGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CkBAIC0xNjg5LDE3ICsxNjc5LDE3IEBAIFRF
U1RfRihQb3J0VGVzdCwgVGVzdFNlbmRTdHVuTWVzc2FnZSkgewogICBBU1NFUlRfVFJVRShtc2ct
PkdldFVJbnQzMihTVFVOX0FUVFJfUkVUUkFOU01JVF9DT1VOVCkgPT0gTlVMTCk7CiAKICAgLy8g
U2F2ZSBhIGNvcHkgb2YgdGhlIEJJTkRJTkctUkVRVUVTVCBmb3IgdXNlIGJlbG93LgotICBzdGQ6
OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gcmVxdWVzdChDb3B5U3R1bk1lc3NhZ2UobXNnKSk7Cisg
IHN0ZDo6dW5pcXVlX3B0cjxJY2VNZXNzYWdlPiByZXF1ZXN0ID0gQ29weVN0dW5NZXNzYWdlKCpt
c2cpOwogCiAgIC8vIFJlY2VpdmUgdGhlIEJJTkRJTkctUkVRVUVTVCBhbmQgcmVzcG9uZCB3aXRo
IEJJTkRJTkctUkVTUE9OU0UuCiAgIHJjb25uLT5PblJlYWRQYWNrZXQobHBvcnQtPmxhc3Rfc3R1
bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0
X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAg
ICAgICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMg
Ki8gLTEpOwogICBtc2cgPSBycG9ydC0+bGFzdF9zdHVuX21zZygpOwogICBBU1NFUlRfVFJVRSht
c2cgIT0gTlVMTCk7CiAgIEVYUEVDVF9FUShTVFVOX0JJTkRJTkdfUkVTUE9OU0UsIG1zZy0+dHlw
ZSgpKTsKICAgLy8gUmVjZWl2ZWQgYSBCSU5ESU5HLVJFU1BPTlNFLgogICBsY29ubi0+T25SZWFk
UGFja2V0KHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAgICAgICAgICAg
ICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6UGFja2V0VGlt
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXpl
KCksIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgLy8gVmVyaWZ5IHRoZSBTVFVOIFN0YXRz
LgogICBFWFBFQ1RfRVEoMVUsIGxjb25uLT5zdGF0cygpLnNlbnRfcGluZ19yZXF1ZXN0c190b3Rh
bCk7CiAgIEVYUEVDVF9FUSgxVSwgbGNvbm4tPnN0YXRzKCkuc2VudF9waW5nX3JlcXVlc3RzX2Jl
Zm9yZV9maXJzdF9yZXNwb25zZSk7CkBAIC0xNzc3LDEzICsxNzY3LDEzIEBAIFRFU1RfRihQb3J0
VGVzdCwgVGVzdFNlbmRTdHVuTWVzc2FnZSkgewogICBFWFBFQ1RfRVEoMlUsIHJldHJhbnNtaXRf
YXR0ci0+dmFsdWUoKSk7CiAKICAgLy8gUmVzcG9uZCB3aXRoIGEgQklORElORy1SRVNQT05TRS4K
LSAgcmVxdWVzdC5yZXNldChDb3B5U3R1bk1lc3NhZ2UobXNnKSk7CisgIHJlcXVlc3QgPSBDb3B5
U3R1bk1lc3NhZ2UoKm1zZyk7CiAgIGxjb25uLT5PblJlYWRQYWNrZXQocnBvcnQtPmxhc3Rfc3R1
bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgIHJwb3J0LT5sYXN0
X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAg
ICAgICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMg
Ki8gLTEpOwogICBtc2cgPSBscG9ydC0+bGFzdF9zdHVuX21zZygpOwogICAvLyBSZWNlaXZlIHRo
ZSBCSU5ESU5HLVJFU1BPTlNFLgogICByY29ubi0+T25SZWFkUGFja2V0KGxwb3J0LT5sYXN0X3N0
dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAgICAgICAgICAgICAgICAgICAgICBscG9ydC0+bGFz
dF9zdHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICBscG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3Vz
ICovIC0xKTsKIAogICAvLyBWZXJpZnkgdGhlIFN0dW4gcGluZyBzdGF0cy4KICAgRVhQRUNUX0VR
KDNVLCByY29ubi0+c3RhdHMoKS5zZW50X3BpbmdfcmVxdWVzdHNfdG90YWwpOwpAQCAtMTgwNCwx
MCArMTc5NCw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFNlbmRTdHVuTWVzc2FnZSkgewogfQog
CiBURVNUX0YoUG9ydFRlc3QsIFRlc3ROb21pbmF0aW9uKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxU
ZXN0UG9ydD4gbHBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFn
IiwgImxwYXNzIikpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAg
Q3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBs
cG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3MiKTsKKyAg
YXV0byBycG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3Mi
KTsKICAgbHBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAg
IGxwb3J0LT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMSk7CiAgIHJwb3J0LT5TZXRJY2VS
b2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CkBAIC0xODM3LDcgKzE4MjUsNyBAQCBU
RVNUX0YoUG9ydFRlc3QsIFRlc3ROb21pbmF0aW9uKSB7CiAgIEFTU0VSVF9UUlVFX1dBSVQobHBv
cnQtPmxhc3Rfc3R1bl9tc2coKSwga0RlZmF1bHRUaW1lb3V0KTsKICAgQVNTRVJUX1RSVUUobHBv
cnQtPmxhc3Rfc3R1bl9idWYoKSk7CiAgIHJjb25uLT5PblJlYWRQYWNrZXQobHBvcnQtPmxhc3Rf
c3R1bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5s
YXN0X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAg
ICAgICAgICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVf
dXMgKi8gLTEpOwogICBFWFBFQ1RfRVEobm9taW5hdGlvbiwgcmNvbm4tPnJlbW90ZV9ub21pbmF0
aW9uKCkpOwogICBFWFBFQ1RfRkFMU0UobGNvbm4tPm5vbWluYXRlZCgpKTsKICAgRVhQRUNUX1RS
VUUocmNvbm4tPm5vbWluYXRlZCgpKTsKQEAgLTE4NDksNyArMTgzNyw3IEBAIFRFU1RfRihQb3J0
VGVzdCwgVGVzdE5vbWluYXRpb24pIHsKICAgQVNTRVJUX1RSVUVfV0FJVChycG9ydC0+bGFzdF9z
dHVuX21zZygpLCBrRGVmYXVsdFRpbWVvdXQpOwogICBBU1NFUlRfVFJVRShycG9ydC0+bGFzdF9z
dHVuX2J1ZigpKTsKICAgbGNvbm4tPk9uUmVhZFBhY2tldChycG9ydC0+bGFzdF9zdHVuX2J1Zigp
LT5kYXRhPGNoYXI+KCksCi0gICAgICAgICAgICAgICAgICAgICAgcnBvcnQtPmxhc3Rfc3R1bl9i
dWYoKS0+c2l6ZSgpLCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
cnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7
CiAgIEVYUEVDVF9FUShub21pbmF0aW9uLCBsY29ubi0+YWNrZWRfbm9taW5hdGlvbigpKTsKICAg
RVhQRUNUX1RSVUUobGNvbm4tPm5vbWluYXRlZCgpKTsKICAgRVhQRUNUX1RSVUUocmNvbm4tPm5v
bWluYXRlZCgpKTsKQEAgLTE4NjAsMTAgKzE4NDgsOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RO
b21pbmF0aW9uKSB7CiBURVNUX0YoUG9ydFRlc3QsIFRlc3RSb3VuZFRyaXBUaW1lKSB7CiAgIHJ0
Yzo6U2NvcGVkRmFrZUNsb2NrIGNsb2NrOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4g
bHBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNz
IikpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAgQ3JlYXRlVGVz
dFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBscG9ydCA9IENy
ZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3MiKTsKKyAgYXV0byBycG9y
dCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsKICAgbHBv
cnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIGxwb3J0LT5T
ZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMSk7CiAgIHJwb3J0LT5TZXRJY2VSb2xlKGNyaWNr
ZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CkBAIC0xOTAxLDEwICsxODg3LDggQEAgVEVTVF9GKFBv
cnRUZXN0LCBUZXN0Um91bmRUcmlwVGltZSkgewogfQogCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RV
c2VDYW5kaWRhdGVBdHRyaWJ1dGUpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBscG9y
dCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3MiKSk7
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9y
dChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIikpOworICBhdXRvIGxwb3J0ID0gQ3JlYXRl
VGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpOworICBhdXRvIHJwb3J0ID0g
Q3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogICBscG9ydC0+
U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBvcnQtPlNldElj
ZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKICAgcnBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6
SUNFUk9MRV9DT05UUk9MTEVEKTsKQEAgLTE5MzIsMTAgKzE5MTYsOCBAQCBURVNUX0YoUG9ydFRl
c3QsIFRlc3RVc2VDYW5kaWRhdGVBdHRyaWJ1dGUpIHsKIC8vIHRoZSByZW1vdGUgbmV0d29yayBj
b3N0cyBhcmUgdXBkYXRlZCB3aXRoIHRoZSBzdHVuIGJpbmRpbmcgcmVxdWVzdHMuCiBURVNUX0Yo
UG9ydFRlc3QsIFRlc3ROZXR3b3JrQ29zdENoYW5nZSkgewogICBydGM6Ok5ldHdvcmsqIHRlc3Rf
bmV0d29yayA9IE1ha2VOZXR3b3JrKGtMb2NhbEFkZHIxKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFRl
c3RQb3J0PiBscG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KHRlc3RfbmV0d29yaywgImxmcmFn
IiwgImxwYXNzIikpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAg
Q3JlYXRlVGVzdFBvcnQodGVzdF9uZXR3b3JrLCAicmZyYWciLCAicnBhc3MiKSk7CisgIGF1dG8g
bHBvcnQgPSBDcmVhdGVUZXN0UG9ydCh0ZXN0X25ldHdvcmssICJsZnJhZyIsICJscGFzcyIpOwor
ICBhdXRvIHJwb3J0ID0gQ3JlYXRlVGVzdFBvcnQodGVzdF9uZXR3b3JrLCAicmZyYWciLCAicnBh
c3MiKTsKICAgbHBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7
CiAgIGxwb3J0LT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMSk7CiAgIHJwb3J0LT5TZXRJ
Y2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CkBAIC0xOTgyLDcgKzE5NjQsNyBA
QCBURVNUX0YoUG9ydFRlc3QsIFRlc3ROZXR3b3JrQ29zdENoYW5nZSkgewogICBFWFBFQ1RfRVEo
U1RVTl9CSU5ESU5HX1JFUVVFU1QsIG1zZy0+dHlwZSgpKTsKICAgLy8gUGFzcyB0aGUgYmluZGlu
ZyByZXF1ZXN0IHRvIHJwb3J0LgogICByY29ubi0+T25SZWFkUGFja2V0KGxwb3J0LT5sYXN0X3N0
dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAgICAgICAgICAgICAgICAgICAgICBscG9ydC0+bGFz
dF9zdHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICBscG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3Vz
ICovIC0xKTsKICAgLy8gV2FpdCB1bnRpbCBycG9ydCBzZW5kcyB0aGUgcmVzcG9uc2UgYW5kIHRo
ZW4gY2hlY2sgdGhlIHJlbW90ZSBuZXR3b3JrIGNvc3QuCiAgIEFTU0VSVF9UUlVFX1dBSVQocnBv
cnQtPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVvdXQpOwogICBFWFBFQ1Rf
RVEocnRjOjprTmV0d29ya0Nvc3RIaWdoLCByY29ubi0+cmVtb3RlX2NhbmRpZGF0ZSgpLm5ldHdv
cmtfY29zdCgpKTsKQEAgLTE5OTAsMTAgKzE5NzIsOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RO
ZXR3b3JrQ29zdENoYW5nZSkgewogCiBURVNUX0YoUG9ydFRlc3QsIFRlc3ROZXR3b3JrSW5mb0F0
dHJpYnV0ZSkgewogICBydGM6Ok5ldHdvcmsqIHRlc3RfbmV0d29yayA9IE1ha2VOZXR3b3JrKGtM
b2NhbEFkZHIxKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBscG9ydCgKLSAgICAgIENy
ZWF0ZVRlc3RQb3J0KHRlc3RfbmV0d29yaywgImxmcmFnIiwgImxwYXNzIikpOwotICBzdGQ6OnVu
aXF1ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQodGVzdF9uZXR3
b3JrLCAicmZyYWciLCAicnBhc3MiKSk7CisgIGF1dG8gbHBvcnQgPSBDcmVhdGVUZXN0UG9ydCh0
ZXN0X25ldHdvcmssICJsZnJhZyIsICJscGFzcyIpOworICBhdXRvIHJwb3J0ID0gQ3JlYXRlVGVz
dFBvcnQodGVzdF9uZXR3b3JrLCAicmZyYWciLCAicnBhc3MiKTsKICAgbHBvcnQtPlNldEljZVJv
bGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIGxwb3J0LT5TZXRJY2VUaWVicmVh
a2VyKGtUaWVicmVha2VyMSk7CiAgIHJwb3J0LT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVf
Q09OVFJPTExFRCk7CkBAIC0yMDM3LDQ0ICsyMDE3LDQzIEBAIFRFU1RfRihQb3J0VGVzdCwgVGVz
dE5ldHdvcmtJbmZvQXR0cmlidXRlKSB7CiAvLyBUZXN0IGhhbmRsaW5nIFNUVU4gbWVzc2FnZXMu
CiBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZSkgewogICAvLyBPdXIgcG9y
dCB3aWxsIGFjdCBhcyB0aGUgInJlbW90ZSIgcG9ydC4KLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQ
b3J0PiBwb3J0KENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKSk7
CisgIGF1dG8gcG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBh
c3MiKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gaW5fbXNnLCBvdXRfbXNnOwot
ICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZUJ1ZmZlcldyaXRlcj4gYnVmKG5ldyBCeXRlQnVmZmVyV3Jp
dGVyKCkpOworICBhdXRvIGJ1ZiA9IGFic2w6Om1ha2VfdW5pcXVlPEJ5dGVCdWZmZXJXcml0ZXI+
KCk7CiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBhZGRyKGtMb2NhbEFkZHIxKTsKICAgc3RkOjpzdHJp
bmcgdXNlcm5hbWU7CiAKICAgLy8gQklORElORy1SRVFVRVNUIGZyb20gbG9jYWwgdG8gcmVtb3Rl
IHdpdGggdmFsaWQgSUNFIHVzZXJuYW1lLAogICAvLyBNRVNTQUdFLUlOVEVHUklUWSwgYW5kIEZJ
TkdFUlBSSU5ULgotICBpbl9tc2cucmVzZXQoCi0gICAgICBDcmVhdGVTdHVuTWVzc2FnZVdpdGhV
c2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgInJmcmFnOmxmcmFnIikpOworICBpbl9tc2cg
PSBDcmVhdGVTdHVuTWVzc2FnZVdpdGhVc2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgInJm
cmFnOmxmcmFnIik7CiAgIGluX21zZy0+QWRkTWVzc2FnZUludGVncml0eSgicnBhc3MiKTsKICAg
aW5fbXNnLT5BZGRGaW5nZXJwcmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQo
KSwgYnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwog
ICBFWFBFQ1RfVFJVRShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5n
dGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfVFJVRShvdXRfbXNnLmdldCgpICE9IE5VTEwpOwogICBF
WFBFQ1RfRVEoImxmcmFnIiwgdXNlcm5hbWUpOwogCiAgIC8vIEJJTkRJTkctUkVTUE9OU0Ugd2l0
aG91dCB1c2VybmFtZSwgd2l0aCBNRVNTQUdFLUlOVEVHUklUWSBhbmQgRklOR0VSUFJJTlQuCi0g
IGluX21zZy5yZXNldChDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfUkVTUE9OU0UpKTsK
KyAgaW5fbXNnID0gQ3JlYXRlU3R1bk1lc3NhZ2UoU1RVTl9CSU5ESU5HX1JFU1BPTlNFKTsKICAg
aW5fbXNnLT5BZGRBdHRyaWJ1dGUoYWJzbDo6bWFrZV91bmlxdWU8U3R1blhvckFkZHJlc3NBdHRy
aWJ1dGU+KAogICAgICAgU1RVTl9BVFRSX1hPUl9NQVBQRURfQUREUkVTUywga0xvY2FsQWRkcjIp
KTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50ZWdyaXR5KCJycGFzcyIpOwogICBpbl9tc2ctPkFk
ZEZpbmdlcnByaW50KCk7Ci0gIFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0
KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9U
UlVFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRy
LCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1l
KSk7CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cuZ2V0KCkgIT0gTlVMTCk7CiAgIEVYUEVDVF9FUSgi
IiwgdXNlcm5hbWUpOwogCiAgIC8vIEJJTkRJTkctRVJST1ItUkVTUE9OU0Ugd2l0aG91dCB1c2Vy
bmFtZSwgd2l0aCBlcnJvciwgTS1JLCBhbmQgRklOR0VSUFJJTlQuCi0gIGluX21zZy5yZXNldChD
cmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfRVJST1JfUkVTUE9OU0UpKTsKKyAgaW5fbXNn
ID0gQ3JlYXRlU3R1bk1lc3NhZ2UoU1RVTl9CSU5ESU5HX0VSUk9SX1JFU1BPTlNFKTsKICAgaW5f
bXNnLT5BZGRBdHRyaWJ1dGUoYWJzbDo6bWFrZV91bmlxdWU8U3R1bkVycm9yQ29kZUF0dHJpYnV0
ZT4oCiAgICAgICBTVFVOX0FUVFJfRVJST1JfQ09ERSwgU1RVTl9FUlJPUl9TRVJWRVJfRVJST1Is
CiAgICAgICBTVFVOX0VSUk9SX1JFQVNPTl9TRVJWRVJfRVJST1IpKTsKICAgaW5fbXNnLT5BZGRG
aW5nZXJwcmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgp
KTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfVFJV
RShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgYWRkciwg
Jm91dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkp
OwogICBFWFBFQ1RfVFJVRShvdXRfbXNnLmdldCgpICE9IE5VTEwpOwpAQCAtMjA4NywxOCArMjA2
NiwxOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZSkgewogCiAvLyBU
ZXN0cyBoYW5kbGluZyBvZiBJQ0UgYmluZGluZyByZXF1ZXN0cyB3aXRoIG1pc3Npbmcgb3IgaW5j
b3JyZWN0IHVzZXJuYW1lcy4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdl
QmFkVXNlcm5hbWUpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBwb3J0KENyZWF0ZVRl
c3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKSk7CisgIGF1dG8gcG9ydCA9IENy
ZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsKIAogICBzdGQ6OnVu
aXF1ZV9wdHI8SWNlTWVzc2FnZT4gaW5fbXNnLCBvdXRfbXNnOwotICBzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZUJ1ZmZlcldyaXRlcj4gYnVmKG5ldyBCeXRlQnVmZmVyV3JpdGVyKCkpOworICBhdXRvIGJ1
ZiA9IGFic2w6Om1ha2VfdW5pcXVlPEJ5dGVCdWZmZXJXcml0ZXI+KCk7CiAgIHJ0Yzo6U29ja2V0
QWRkcmVzcyBhZGRyKGtMb2NhbEFkZHIxKTsKICAgc3RkOjpzdHJpbmcgdXNlcm5hbWU7CiAKICAg
Ly8gQklORElORy1SRVFVRVNUIHdpdGggbm8gdXNlcm5hbWUuCi0gIGluX21zZy5yZXNldChDcmVh
dGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfUkVRVUVTVCkpOworICBpbl9tc2cgPSBDcmVhdGVT
dHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfUkVRVUVTVCk7CiAgIGluX21zZy0+QWRkTWVzc2FnZUlu
dGVncml0eSgicnBhc3MiKTsKICAgaW5fbXNnLT5BZGRGaW5nZXJwcmludCgpOwotICBXcml0ZVN0
dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgq
aW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfVFJVRShwb3J0LT5HZXRTdHVuTWVzc2FnZShi
dWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfVFJVRShvdXRfbXNn
LmdldCgpID09IE5VTEwpOwpAQCAtMjEwNiwxMCArMjA4NSwxMCBAQCBURVNUX0YoUG9ydFRlc3Qs
IFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZFVzZXJuYW1lKSB7CiAgIEVYUEVDVF9FUShTVFVOX0VS
Uk9SX0JBRF9SRVFVRVNULCBwb3J0LT5sYXN0X3N0dW5fZXJyb3JfY29kZSgpKTsKIAogICAvLyBC
SU5ESU5HLVJFUVVFU1Qgd2l0aCBlbXB0eSB1c2VybmFtZS4KLSAgaW5fbXNnLnJlc2V0KENyZWF0
ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAiIikpOworICBp
bl9tc2cgPSBDcmVhdGVTdHVuTWVzc2FnZVdpdGhVc2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVT
VCwgIiIpOwogICBpbl9tc2ctPkFkZE1lc3NhZ2VJbnRlZ3JpdHkoInJwYXNzIik7CiAgIGluX21z
Zy0+QWRkRmluZ2VycHJpbnQoKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1
Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQ
RUNUX1RSVUUocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCks
IGFkZHIsICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNl
cm5hbWUpKTsKICAgRVhQRUNUX1RSVUUob3V0X21zZy5nZXQoKSA9PSBOVUxMKTsKQEAgLTIxMTcs
MTAgKzIwOTYsMTAgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRV
c2VybmFtZSkgewogICBFWFBFQ1RfRVEoU1RVTl9FUlJPUl9VTkFVVEhPUklaRUQsIHBvcnQtPmxh
c3Rfc3R1bl9lcnJvcl9jb2RlKCkpOwogCiAgIC8vIEJJTkRJTkctUkVRVUVTVCB3aXRoIHRvby1z
aG9ydCB1c2VybmFtZS4KLSAgaW5fbXNnLnJlc2V0KENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJu
YW1lKFNUVU5fQklORElOR19SRVFVRVNULCAicmZyYSIpKTsKKyAgaW5fbXNnID0gQ3JlYXRlU3R1
bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5HX1JFUVVFU1QsICJyZnJhIik7CiAgIGlu
X21zZy0+QWRkTWVzc2FnZUludGVncml0eSgicnBhc3MiKTsKICAgaW5fbXNnLT5BZGRGaW5nZXJw
cmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsKKyAg
V3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfVFJVRShwb3J0
LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91dF9t
c2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBF
WFBFQ1RfVFJVRShvdXRfbXNnLmdldCgpID09IE5VTEwpOwpAQCAtMjEyOCwxMSArMjEwNywxMCBA
QCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZFVzZXJuYW1lKSB7CiAg
IEVYUEVDVF9FUShTVFVOX0VSUk9SX1VOQVVUSE9SSVpFRCwgcG9ydC0+bGFzdF9zdHVuX2Vycm9y
X2NvZGUoKSk7CiAKICAgLy8gQklORElORy1SRVFVRVNUIHdpdGggcmV2ZXJzZWQgdXNlcm5hbWUu
Ci0gIGluX21zZy5yZXNldCgKLSAgICAgIENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNU
VU5fQklORElOR19SRVFVRVNULCAibGZyYWc6cmZyYWciKSk7CisgIGluX21zZyA9IENyZWF0ZVN0
dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAibGZyYWc6cmZyYWci
KTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50ZWdyaXR5KCJycGFzcyIpOwogICBpbl9tc2ctPkFk
ZEZpbmdlcnByaW50KCk7Ci0gIFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0
KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9U
UlVFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRy
LCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1l
KSk7CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cuZ2V0KCkgPT0gTlVMTCk7CkBAIC0yMTQwLDExICsy
MTE4LDEwIEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFkVXNlcm5h
bWUpIHsKICAgRVhQRUNUX0VRKFNUVU5fRVJST1JfVU5BVVRIT1JJWkVELCBwb3J0LT5sYXN0X3N0
dW5fZXJyb3JfY29kZSgpKTsKIAogICAvLyBCSU5ESU5HLVJFUVVFU1Qgd2l0aCBnYXJiYWdlIHVz
ZXJuYW1lLgotICBpbl9tc2cucmVzZXQoCi0gICAgICBDcmVhdGVTdHVuTWVzc2FnZVdpdGhVc2Vy
bmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgImFiY2Q6ZWZnaCIpKTsKKyAgaW5fbXNnID0gQ3Jl
YXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5HX1JFUVVFU1QsICJhYmNkOmVm
Z2giKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50ZWdyaXR5KCJycGFzcyIpOwogICBpbl9tc2ct
PkFkZEZpbmdlcnByaW50KCk7Ci0gIFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYu
Z2V0KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVD
VF9UUlVFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBh
ZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJu
YW1lKSk7CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cuZ2V0KCkgPT0gTlVMTCk7CkBAIC0yMTU1LDE5
ICsyMTMyLDE4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFkVXNl
cm5hbWUpIHsKIC8vIFRlc3QgaGFuZGxpbmcgU1RVTiBtZXNzYWdlcyB3aXRoIG1pc3Npbmcgb3Ig
bWFsZm9ybWVkIE0tSS4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFk
TWVzc2FnZUludGVncml0eSkgewogICAvLyBPdXIgcG9ydCB3aWxsIGFjdCBhcyB0aGUgInJlbW90
ZSIgcG9ydC4KLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBwb3J0KENyZWF0ZVRlc3RQb3J0
KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKSk7CisgIGF1dG8gcG9ydCA9IENyZWF0ZVRl
c3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsKIAogICBzdGQ6OnVuaXF1ZV9w
dHI8SWNlTWVzc2FnZT4gaW5fbXNnLCBvdXRfbXNnOwotICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZUJ1
ZmZlcldyaXRlcj4gYnVmKG5ldyBCeXRlQnVmZmVyV3JpdGVyKCkpOworICBhdXRvIGJ1ZiA9IGFi
c2w6Om1ha2VfdW5pcXVlPEJ5dGVCdWZmZXJXcml0ZXI+KCk7CiAgIHJ0Yzo6U29ja2V0QWRkcmVz
cyBhZGRyKGtMb2NhbEFkZHIxKTsKICAgc3RkOjpzdHJpbmcgdXNlcm5hbWU7CiAKICAgLy8gQklO
RElORy1SRVFVRVNUIGZyb20gbG9jYWwgdG8gcmVtb3RlIHdpdGggdmFsaWQgSUNFIHVzZXJuYW1l
IGFuZAogICAvLyBGSU5HRVJQUklOVCwgYnV0IG5vIE1FU1NBR0UtSU5URUdSSVRZLgotICBpbl9t
c2cucmVzZXQoCi0gICAgICBDcmVhdGVTdHVuTWVzc2FnZVdpdGhVc2VybmFtZShTVFVOX0JJTkRJ
TkdfUkVRVUVTVCwgInJmcmFnOmxmcmFnIikpOworICBpbl9tc2cgPSBDcmVhdGVTdHVuTWVzc2Fn
ZVdpdGhVc2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgInJmcmFnOmxmcmFnIik7CiAgIGlu
X21zZy0+QWRkRmluZ2VycHJpbnQoKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCks
IGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAg
RVhQRUNUX1RSVUUocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3Ro
KCksIGFkZHIsICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
dXNlcm5hbWUpKTsKICAgRVhQRUNUX1RSVUUob3V0X21zZy5nZXQoKSA9PSBOVUxMKTsKQEAgLTIx
NzYsMTEgKzIxNTIsMTAgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VC
YWRNZXNzYWdlSW50ZWdyaXR5KSB7CiAKICAgLy8gQklORElORy1SRVFVRVNUIGZyb20gbG9jYWwg
dG8gcmVtb3RlIHdpdGggdmFsaWQgSUNFIHVzZXJuYW1lIGFuZAogICAvLyBGSU5HRVJQUklOVCwg
YnV0IGludmFsaWQgTUVTU0FHRS1JTlRFR1JJVFkuCi0gIGluX21zZy5yZXNldCgKLSAgICAgIENy
ZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAicmZyYWc6
bGZyYWciKSk7CisgIGluX21zZyA9IENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5f
QklORElOR19SRVFVRVNULCAicmZyYWc6bGZyYWciKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50
ZWdyaXR5KCJpbnZhbGlkIik7CiAgIGluX21zZy0+QWRkRmluZ2VycHJpbnQoKTsKLSAgV3JpdGVT
dHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2Uo
KmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX1RSVUUocG9ydC0+R2V0U3R1bk1lc3NhZ2Uo
YnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIsICZvdXRfbXNnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUpKTsKICAgRVhQRUNUX1RSVUUob3V0X21z
Zy5nZXQoKSA9PSBOVUxMKTsKQEAgLTIxOTUsMTkgKzIxNzAsMTggQEAgVEVTVF9GKFBvcnRUZXN0
LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRNZXNzYWdlSW50ZWdyaXR5KSB7CiAvLyBUZXN0IGhh
bmRsaW5nIFNUVU4gbWVzc2FnZXMgd2l0aCBtaXNzaW5nIG9yIG1hbGZvcm1lZCBGSU5HRVJQUklO
VC4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFkRmluZ2VycHJpbnQp
IHsKICAgLy8gT3VyIHBvcnQgd2lsbCBhY3QgYXMgdGhlICJyZW1vdGUiIHBvcnQuCi0gIHN0ZDo6
dW5pcXVlX3B0cjxUZXN0UG9ydD4gcG9ydChDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJm
cmFnIiwgInJwYXNzIikpOworICBhdXRvIHBvcnQgPSBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRy
MiwgInJmcmFnIiwgInJwYXNzIik7CiAKICAgc3RkOjp1bmlxdWVfcHRyPEljZU1lc3NhZ2U+IGlu
X21zZywgb3V0X21zZzsKLSAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVCdWZmZXJXcml0ZXI+IGJ1Zihu
ZXcgQnl0ZUJ1ZmZlcldyaXRlcigpKTsKKyAgYXV0byBidWYgPSBhYnNsOjptYWtlX3VuaXF1ZTxC
eXRlQnVmZmVyV3JpdGVyPigpOwogICBydGM6OlNvY2tldEFkZHJlc3MgYWRkcihrTG9jYWxBZGRy
MSk7CiAgIHN0ZDo6c3RyaW5nIHVzZXJuYW1lOwogCiAgIC8vIEJJTkRJTkctUkVRVUVTVCBmcm9t
IGxvY2FsIHRvIHJlbW90ZSB3aXRoIHZhbGlkIElDRSB1c2VybmFtZSBhbmQKICAgLy8gTUVTU0FH
RS1JTlRFR1JJVFksIGJ1dCBubyBGSU5HRVJQUklOVDsgR2V0U3R1bk1lc3NhZ2Ugc2hvdWxkIGZh
aWwuCi0gIGluX21zZy5yZXNldCgKLSAgICAgIENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1l
KFNUVU5fQklORElOR19SRVFVRVNULCAicmZyYWc6bGZyYWciKSk7CisgIGluX21zZyA9IENyZWF0
ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAicmZyYWc6bGZy
YWciKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50ZWdyaXR5KCJycGFzcyIpOwotICBXcml0ZVN0
dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgq
aW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfRkFMU0UocG9ydC0+R2V0U3R1bk1lc3NhZ2Uo
YnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIsICZvdXRfbXNnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9FUSgwLCBwb3J0
LT5sYXN0X3N0dW5fZXJyb3JfY29kZSgpKTsKQEAgLTIyMTUsMTcgKzIxODksMTcgQEAgVEVTVF9G
KFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRGaW5nZXJwcmludCkgewogICAvLyBO
b3csIGFkZCBhIGZpbmdlcnByaW50LCBidXQgbXVuZ2UgdGhlIG1lc3NhZ2Ugc28gaXQncyBub3Qg
dmFsaWQuCiAgIGluX21zZy0+QWRkRmluZ2VycHJpbnQoKTsKICAgaW5fbXNnLT5TZXRUcmFuc2Fj
dGlvbklEKCJURVNUVEVTVEJBREQiKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCks
IGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAg
RVhQRUNUX0ZBTFNFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0
aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfRVEoMCwgcG9ydC0+bGFzdF9zdHVuX2Vycm9yX2NvZGUo
KSk7CiAKICAgLy8gVmFsaWQgQklORElORy1SRVNQT05TRSwgZXhjZXB0IG5vIEZJTkdFUlBSSU5U
LgotICBpbl9tc2cucmVzZXQoQ3JlYXRlU3R1bk1lc3NhZ2UoU1RVTl9CSU5ESU5HX1JFU1BPTlNF
KSk7CisgIGluX21zZyA9IENyZWF0ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19SRVNQT05TRSk7
CiAgIGluX21zZy0+QWRkQXR0cmlidXRlKGFic2w6Om1ha2VfdW5pcXVlPFN0dW5Yb3JBZGRyZXNz
QXR0cmlidXRlPigKICAgICAgIFNUVU5fQVRUUl9YT1JfTUFQUEVEX0FERFJFU1MsIGtMb2NhbEFk
ZHIyKSk7CiAgIGluX21zZy0+QWRkTWVzc2FnZUludGVncml0eSgicnBhc3MiKTsKLSAgV3JpdGVT
dHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2Uo
KmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX0ZBTFNFKHBvcnQtPkdldFN0dW5NZXNzYWdl
KGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfRVEoMCwgcG9y
dC0+bGFzdF9zdHVuX2Vycm9yX2NvZGUoKSk7CkBAIC0yMjMzLDE4ICsyMjA3LDE4IEBAIFRFU1Rf
RihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFkRmluZ2VycHJpbnQpIHsKICAgLy8g
Tm93LCBhZGQgYSBmaW5nZXJwcmludCwgYnV0IG11bmdlIHRoZSBtZXNzYWdlIHNvIGl0J3Mgbm90
IHZhbGlkLgogICBpbl9tc2ctPkFkZEZpbmdlcnByaW50KCk7CiAgIGluX21zZy0+U2V0VHJhbnNh
Y3Rpb25JRCgiVEVTVFRFU1RCQUREIik7Ci0gIFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgp
LCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAg
IEVYUEVDVF9GQUxTRShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5n
dGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmdXNlcm5hbWUpKTsKICAgRVhQRUNUX0VRKDAsIHBvcnQtPmxhc3Rfc3R1bl9lcnJvcl9jb2Rl
KCkpOwogCiAgIC8vIFZhbGlkIEJJTkRJTkctRVJST1ItUkVTUE9OU0UsIGV4Y2VwdCBubyBGSU5H
RVJQUklOVC4KLSAgaW5fbXNnLnJlc2V0KENyZWF0ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19F
UlJPUl9SRVNQT05TRSkpOworICBpbl9tc2cgPSBDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJ
TkdfRVJST1JfUkVTUE9OU0UpOwogICBpbl9tc2ctPkFkZEF0dHJpYnV0ZShhYnNsOjptYWtlX3Vu
aXF1ZTxTdHVuRXJyb3JDb2RlQXR0cmlidXRlPigKICAgICAgIFNUVU5fQVRUUl9FUlJPUl9DT0RF
LCBTVFVOX0VSUk9SX1NFUlZFUl9FUlJPUiwKICAgICAgIFNUVU5fRVJST1JfUkVBU09OX1NFUlZF
Ul9FUlJPUikpOwogICBpbl9tc2ctPkFkZE1lc3NhZ2VJbnRlZ3JpdHkoInJwYXNzIik7Ci0gIFdy
aXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5NZXNz
YWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9GQUxTRShwb3J0LT5HZXRTdHVuTWVz
c2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUpKTsKICAgRVhQRUNUX0VRKDAs
IHBvcnQtPmxhc3Rfc3R1bl9lcnJvcl9jb2RlKCkpOwpAQCAtMjI1Miw3ICsyMjI2LDcgQEAgVEVT
VF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRGaW5nZXJwcmludCkgewogICAv
LyBOb3csIGFkZCBhIGZpbmdlcnByaW50LCBidXQgbXVuZ2UgdGhlIG1lc3NhZ2Ugc28gaXQncyBu
b3QgdmFsaWQuCiAgIGluX21zZy0+QWRkRmluZ2VycHJpbnQoKTsKICAgaW5fbXNnLT5TZXRUcmFu
c2FjdGlvbklEKCJURVNUVEVTVEJBREQiKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0
KCksIGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsK
ICAgRVhQRUNUX0ZBTFNFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxl
bmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfRVEoMCwgcG9ydC0+bGFzdF9zdHVuX2Vycm9yX2Nv
ZGUoKSk7CkBAIC0yMjYxLDggKzIyMzUsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVT
dHVuTWVzc2FnZUJhZEZpbmdlcnByaW50KSB7CiAvLyBUZXN0IGhhbmRsaW5nIG9mIFNUVU4gYmlu
ZGluZyBpbmRpY2F0aW9uIG1lc3NhZ2VzIC4gU1RVTiBiaW5kaW5nCiAvLyBpbmRpY2F0aW9ucyBh
cmUgYWxsb3dlZCBvbmx5IHRvIHRoZSBjb25uZWN0aW9uIHdoaWNoIGlzIGluIHJlYWQgbW9kZS4K
IFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5CaW5kaW5nSW5kaWNhdGlvbikgewotICBz
dGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IGxwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xv
Y2FsQWRkcjIsICJsZnJhZyIsICJscGFzcyIpKTsKKyAgYXV0byBscG9ydCA9IENyZWF0ZVRlc3RQ
b3J0KGtMb2NhbEFkZHIyLCAibGZyYWciLCAibHBhc3MiKTsKICAgbHBvcnQtPlNldEljZVJvbGUo
Y3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIGxwb3J0LT5TZXRJY2VUaWVicmVha2Vy
KGtUaWVicmVha2VyMSk7CiAKQEAgLTIyNzIsOSArMjI0NSw5IEBAIFRFU1RfRihQb3J0VGVzdCwg
VGVzdEhhbmRsZVN0dW5CaW5kaW5nSW5kaWNhdGlvbikgewogICBydGM6OlNvY2tldEFkZHJlc3Mg
YWRkcihrTG9jYWxBZGRyMSk7CiAgIHN0ZDo6c3RyaW5nIHVzZXJuYW1lOwogCi0gIGluX21zZy5y
ZXNldChDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfSU5ESUNBVElPTikpOworICBpbl9t
c2cgPSBDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfSU5ESUNBVElPTik7CiAgIGluX21z
Zy0+QWRkRmluZ2VycHJpbnQoKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1
Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQ
RUNUX1RSVUUobHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgp
LCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1
c2VybmFtZSkpOwogICBFWFBFQ1RfVFJVRShvdXRfbXNnLmdldCgpICE9IE5VTEwpOwpAQCAtMjI4
Myw4ICsyMjU2LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bkJpbmRpbmdJbmRp
Y2F0aW9uKSB7CiAKICAgLy8gVmVyaWZ5IGNvbm5lY3Rpb24gY2FuIGhhbmRsZSBTVFVOIGluZGlj
YXRpb24gYW5kIHVwZGF0ZXMKICAgLy8gbGFzdF9waW5nX3JlY2VpdmVkLgotICBzdGQ6OnVuaXF1
ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIs
ICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBycG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2Nh
bEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsKICAgcnBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6
SUNFUk9MRV9DT05UUk9MTEVEKTsKICAgcnBvcnQtPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFr
ZXIyKTsKIApAQCAtMjMwNCw3ICsyMjc2LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxl
U3R1bkJpbmRpbmdJbmRpY2F0aW9uKSB7CiAgIEVYUEVDVF9FUShTVFVOX0JJTkRJTkdfUkVRVUVT
VCwgbXNnLT50eXBlKCkpOwogICAvLyBTZW5kIHJwb3J0IGJpbmRpbmcgcmVxdWVzdCB0byBscG9y
dC4KICAgbGNvbm4tPk9uUmVhZFBhY2tldChycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5kYXRhPGNo
YXI+KCksCi0gICAgICAgICAgICAgICAgICAgICAgcnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6
ZSgpLCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgcnBvcnQtPmxh
c3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIEFTU0VS
VF9UUlVFX1dBSVQobHBvcnQtPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVv
dXQpOwogICBFWFBFQ1RfRVEoU1RVTl9CSU5ESU5HX1JFU1BPTlNFLCBscG9ydC0+bGFzdF9zdHVu
X21zZygpLT50eXBlKCkpOwogICBpbnQ2NF90IGxhc3RfcGluZ19yZWNlaXZlZDEgPSBsY29ubi0+
bGFzdF9waW5nX3JlY2VpdmVkKCk7CkBAIC0yMzEyLDEzICsyMjg0LDEzIEBAIFRFU1RfRihQb3J0
VGVzdCwgVGVzdEhhbmRsZVN0dW5CaW5kaW5nSW5kaWNhdGlvbikgewogICAvLyBBZGRpbmcgYSBk
ZWxheSBvZiAxMDBtcy4KICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKS0+UHJvY2Vzc01lc3NhZ2Vz
KDEwMCk7CiAgIC8vIFBpbmdpbmcgbGNvbm4gdXNpbmcgc3R1biBpbmRpY2F0aW9uIG1lc3NhZ2Uu
Ci0gIGxjb25uLT5PblJlYWRQYWNrZXQoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIHJ0Yzo6
UGFja2V0VGltZSgpKTsKKyAgbGNvbm4tPk9uUmVhZFBhY2tldChidWYtPkRhdGEoKSwgYnVmLT5M
ZW5ndGgoKSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBpbnQ2NF90IGxhc3RfcGluZ19y
ZWNlaXZlZDIgPSBsY29ubi0+bGFzdF9waW5nX3JlY2VpdmVkKCk7CiAgIEVYUEVDVF9HVChsYXN0
X3BpbmdfcmVjZWl2ZWQyLCBsYXN0X3BpbmdfcmVjZWl2ZWQxKTsKIH0KIAogVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0Q29tcHV0ZUNhbmRpZGF0ZVByaW9yaXR5KSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxU
ZXN0UG9ydD4gcG9ydChDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgIm5hbWUiLCAicGFzcyIp
KTsKKyAgYXV0byBwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJuYW1lIiwgInBh
c3MiKTsKICAgcG9ydC0+c2V0X3R5cGVfcHJlZmVyZW5jZSg5MCk7CiAgIHBvcnQtPnNldF9jb21w
b25lbnQoMTc3KTsKICAgcG9ydC0+QWRkQ2FuZGlkYXRlQWRkcmVzcyhTb2NrZXRBZGRyZXNzKCIx
OTIuMTY4LjEuNCIsIDEyMzQpKTsKQEAgLTIzNTUsOCArMjMyNyw3IEBAIFRFU1RfRihQb3J0VGVz
dCwgVGVzdENvbXB1dGVDYW5kaWRhdGVQcmlvcml0eSkgewogLy8gSW4gdGhlIGNhc2Ugb2Ygc2hh
cmVkIHNvY2tldCwgb25lIHBvcnQgbWF5IGJlIHNoYXJlZCBieSBsb2NhbCBhbmQgc3R1bi4KIC8v
IFRlc3QgdGhhdCBjYW5kaWRhdGVzIHdpdGggZGlmZmVyZW50IHR5cGVzIHdpbGwgaGF2ZSBkaWZm
ZXJlbnQgZm91bmRhdGlvbi4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdEZvdW5kYXRpb24pIHsKLSAg
c3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiB0ZXN0cG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0
KGtMb2NhbEFkZHIxLCAibmFtZSIsICJwYXNzIikpOworICBhdXRvIHRlc3Rwb3J0ID0gQ3JlYXRl
VGVzdFBvcnQoa0xvY2FsQWRkcjEsICJuYW1lIiwgInBhc3MiKTsKICAgdGVzdHBvcnQtPkFkZENh
bmRpZGF0ZUFkZHJlc3Moa0xvY2FsQWRkcjEsIGtMb2NhbEFkZHIxLCBMT0NBTF9QT1JUX1RZUEUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OklDRV9UWVBFX1BSRUZF
UkVOQ0VfSE9TVCwgZmFsc2UpOwogICB0ZXN0cG9ydC0+QWRkQ2FuZGlkYXRlQWRkcmVzcyhrTG9j
YWxBZGRyMiwga0xvY2FsQWRkcjEsIFNUVU5fUE9SVF9UWVBFLApAQCAtMjM2OSwyMCArMjM0MCwx
OSBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RGb3VuZGF0aW9uKSB7CiBURVNUX0YoUG9ydFRlc3Qs
IFRlc3RDYW5kaWRhdGVGb3VuZGF0aW9uKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6Ok5BVFNl
cnZlcj4gbmF0X3NlcnZlcigKICAgICAgIENyZWF0ZU5hdFNlcnZlcihrTmF0QWRkcjEsIE5BVF9P
UEVOX0NPTkUpKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFVEUFBvcnQ+IHVkcHBvcnQxKENyZWF0ZVVk
cFBvcnQoa0xvY2FsQWRkcjEpKTsKKyAgYXV0byB1ZHBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xv
Y2FsQWRkcjEpOwogICB1ZHBwb3J0MS0+UHJlcGFyZUFkZHJlc3MoKTsKLSAgc3RkOjp1bmlxdWVf
cHRyPFVEUFBvcnQ+IHVkcHBvcnQyKENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpKTsKKyAgYXV0
byB1ZHBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwogICB1ZHBwb3J0Mi0+UHJl
cGFyZUFkZHJlc3MoKTsKICAgRVhQRUNUX0VRKHVkcHBvcnQxLT5DYW5kaWRhdGVzKClbMF0uZm91
bmRhdGlvbigpLAogICAgICAgICAgICAgdWRwcG9ydDItPkNhbmRpZGF0ZXMoKVswXS5mb3VuZGF0
aW9uKCkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VENQUG9ydD4gdGNwcG9ydDEoQ3JlYXRlVGNwUG9y
dChrTG9jYWxBZGRyMSkpOworICBhdXRvIHRjcHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxB
ZGRyMSk7CiAgIHRjcHBvcnQxLT5QcmVwYXJlQWRkcmVzcygpOwotICBzdGQ6OnVuaXF1ZV9wdHI8
VENQUG9ydD4gdGNwcG9ydDIoQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSkpOworICBhdXRvIHRj
cHBvcnQyID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHRjcHBvcnQyLT5QcmVwYXJl
QWRkcmVzcygpOwogICBFWFBFQ1RfRVEodGNwcG9ydDEtPkNhbmRpZGF0ZXMoKVswXS5mb3VuZGF0
aW9uKCksCiAgICAgICAgICAgICB0Y3Bwb3J0Mi0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24o
KSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBzdHVucG9ydCgKLSAgICAgIENyZWF0ZVN0dW5Q
b3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCkpKTsKKyAgYXV0byBzdHVucG9y
dCA9IENyZWF0ZVN0dW5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCkpOwog
ICBzdHVucG9ydC0+UHJlcGFyZUFkZHJlc3MoKTsKICAgQVNTRVJUX0VRX1dBSVQoMVUsIHN0dW5w
b3J0LT5DYW5kaWRhdGVzKCkuc2l6ZSgpLCBrRGVmYXVsdFRpbWVvdXQpOwogICBFWFBFQ1RfTkUo
dGNwcG9ydDEtPkNhbmRpZGF0ZXMoKVswXS5mb3VuZGF0aW9uKCksCkBAIC0yMzk0LDcgKzIzNjQs
NyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RDYW5kaWRhdGVGb3VuZGF0aW9uKSB7CiAgIEVYUEVD
VF9ORSh1ZHBwb3J0Mi0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSwKICAgICAgICAgICAg
IHN0dW5wb3J0LT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpKTsKICAgLy8gVmVyaWZ5IEdU
VVJOIGNhbmRpZGF0ZSBmb3VuZGF0aW9uLgotICBzdGQ6OnVuaXF1ZV9wdHI8UmVsYXlQb3J0PiBy
ZWxheXBvcnQoQ3JlYXRlR3R1cm5Qb3J0KGtMb2NhbEFkZHIxKSk7CisgIGF1dG8gcmVsYXlwb3J0
ID0gQ3JlYXRlR3R1cm5Qb3J0KGtMb2NhbEFkZHIxKTsKICAgcmVsYXlwb3J0LT5BZGRTZXJ2ZXJB
ZGRyZXNzKAogICAgICAgY3JpY2tldDo6UHJvdG9jb2xBZGRyZXNzKGtSZWxheVVkcEludEFkZHIs
IGNyaWNrZXQ6OlBST1RPX1VEUCkpOwogICByZWxheXBvcnQtPlByZXBhcmVBZGRyZXNzKCk7CkBA
IC0yNDA0LDggKzIzNzQsOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RDYW5kaWRhdGVGb3VuZGF0
aW9uKSB7CiAgIEVYUEVDVF9ORSh1ZHBwb3J0Mi0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24o
KSwKICAgICAgICAgICAgIHJlbGF5cG9ydC0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSk7
CiAgIC8vIFZlcmlmeWluZyBUVVJOIGNhbmRpZGF0ZSBmb3VuZGF0aW9uLgotICBzdGQ6OnVuaXF1
ZV9wdHI8UG9ydD4gdHVybnBvcnQxKAotICAgICAgQ3JlYXRlVHVyblBvcnQoa0xvY2FsQWRkcjEs
IG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQUk9UT19VRFApKTsKKyAgYXV0byB0
dXJucG9ydDEgPQorICAgICAgQ3JlYXRlVHVyblBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRf
ZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQUk9UT19VRFApOwogICB0dXJucG9ydDEtPlByZXBhcmVB
ZGRyZXNzKCk7CiAgIEFTU0VSVF9FUV9XQUlUKDFVLCB0dXJucG9ydDEtPkNhbmRpZGF0ZXMoKS5z
aXplKCksIGtEZWZhdWx0VGltZW91dCk7CiAgIEVYUEVDVF9ORSh1ZHBwb3J0MS0+Q2FuZGlkYXRl
cygpWzBdLmZvdW5kYXRpb24oKSwKQEAgLTI0MTQsOCArMjM4NCw4IEBAIFRFU1RfRihQb3J0VGVz
dCwgVGVzdENhbmRpZGF0ZUZvdW5kYXRpb24pIHsKICAgICAgICAgICAgIHR1cm5wb3J0MS0+Q2Fu
ZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSk7CiAgIEVYUEVDVF9ORShzdHVucG9ydC0+Q2FuZGlk
YXRlcygpWzBdLmZvdW5kYXRpb24oKSwKICAgICAgICAgICAgIHR1cm5wb3J0MS0+Q2FuZGlkYXRl
cygpWzBdLmZvdW5kYXRpb24oKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiB0dXJucG9ydDIo
Ci0gICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgp
LCBQUk9UT19VRFAsIFBST1RPX1VEUCkpOworICBhdXRvIHR1cm5wb3J0MiA9CisgICAgICBDcmVh
dGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAs
IFBST1RPX1VEUCk7CiAgIHR1cm5wb3J0Mi0+UHJlcGFyZUFkZHJlc3MoKTsKICAgQVNTRVJUX0VR
X1dBSVQoMVUsIHR1cm5wb3J0Mi0+Q2FuZGlkYXRlcygpLnNpemUoKSwga0RlZmF1bHRUaW1lb3V0
KTsKICAgRVhQRUNUX0VRKHR1cm5wb3J0MS0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSwK
QEAgLTI0MjYsOSArMjM5Niw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdENhbmRpZGF0ZUZvdW5k
YXRpb24pIHsKICAgU29ja2V0QWRkcmVzcyBrVHVyblVkcEV4dEFkZHIyKCI5OS45OS45OC41Iiwg
MCk7CiAgIFRlc3RUdXJuU2VydmVyIHR1cm5fc2VydmVyMihydGM6OlRocmVhZDo6Q3VycmVudCgp
LCBrVHVyblVkcEludEFkZHIyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1R1cm5V
ZHBFeHRBZGRyMik7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiB0dXJucG9ydDMoCi0gICAgICBD
cmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19V
RFAsIFBST1RPX1VEUCwKLSAgICAgICAgICAgICAgICAgICAgIGtUdXJuVWRwSW50QWRkcjIpKTsK
KyAgYXV0byB0dXJucG9ydDMgPSBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tl
dF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPVE9fVURQLCBrVHVyblVkcEludEFkZHIyKTsKICAgdHVybnBvcnQzLT5QcmVwYXJlQWRk
cmVzcygpOwogICBBU1NFUlRfRVFfV0FJVCgxVSwgdHVybnBvcnQzLT5DYW5kaWRhdGVzKCkuc2l6
ZSgpLCBrRGVmYXVsdFRpbWVvdXQpOwogICBFWFBFQ1RfTkUodHVybnBvcnQzLT5DYW5kaWRhdGVz
KClbMF0uZm91bmRhdGlvbigpLApAQCAtMjQzOCw4ICsyNDA3LDggQEAgVEVTVF9GKFBvcnRUZXN0
LCBUZXN0Q2FuZGlkYXRlRm91bmRhdGlvbikgewogICAvLyBkaWZmZXJlbnQgZm91bmRhdGlvbnMg
aWYgdGhlaXIgcmVsYXkgcHJvdG9jb2xzIGFyZSBkaWZmZXJlbnQuCiAgIFRlc3RUdXJuU2VydmVy
IHR1cm5fc2VydmVyMyhydGM6OlRocmVhZDo6Q3VycmVudCgpLCBrVHVyblRjcEludEFkZHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVHVyblVkcEV4dEFkZHIsIFBST1RPX1RDUCk7
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiB0dXJucG9ydDQoCi0gICAgICBDcmVhdGVUdXJuUG9y
dChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19UQ1AsIFBST1RPX1VE
UCkpOworICBhdXRvIHR1cm5wb3J0NCA9CisgICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRy
MSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19UQ1AsIFBST1RPX1VEUCk7CiAgIHR1cm5w
b3J0NC0+UHJlcGFyZUFkZHJlc3MoKTsKICAgQVNTRVJUX0VRX1dBSVQoMVUsIHR1cm5wb3J0NC0+
Q2FuZGlkYXRlcygpLnNpemUoKSwga0RlZmF1bHRUaW1lb3V0KTsKICAgRVhQRUNUX05FKHR1cm5w
b3J0Mi0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSwKQEAgLTI0NDksMTcgKzI0MTgsMTUg
QEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q2FuZGlkYXRlRm91bmRhdGlvbikgewogLy8gVGhpcyB0
ZXN0IHZlcmlmaWVzIHRoZSByZWxhdGVkIGFkZHJlc3NlcyBvZiBkaWZmZXJlbnQgdHlwZXMgb2YK
IC8vIElDRSBjYW5kaWF0ZXMuCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RDYW5kaWRhdGVSZWxhdGVk
QWRkcmVzcykgewotICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpOQVRTZXJ2ZXI+IG5hdF9zZXJ2ZXIo
Ci0gICAgICBDcmVhdGVOYXRTZXJ2ZXIoa05hdEFkZHIxLCBOQVRfT1BFTl9DT05FKSk7Ci0gIHN0
ZDo6dW5pcXVlX3B0cjxVRFBQb3J0PiB1ZHBwb3J0KENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEp
KTsKKyAgYXV0byBuYXRfc2VydmVyID0gQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMSwgTkFUX09Q
RU5fQ09ORSk7CisgIGF1dG8gdWRwcG9ydCA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwog
ICB1ZHBwb3J0LT5QcmVwYXJlQWRkcmVzcygpOwogICAvLyBGb3IgVURQUG9ydCwgcmVsYXRlZCBh
ZGRyZXNzIHdpbGwgYmUgZW1wdHkuCiAgIEVYUEVDVF9UUlVFKHVkcHBvcnQtPkNhbmRpZGF0ZXMo
KVswXS5yZWxhdGVkX2FkZHJlc3MoKS5Jc05pbCgpKTsKICAgLy8gVGVzdGluZyByZWxhdGVkIGFk
ZHJlc3MgZm9yIHN0dW4gY2FuZGlkYXRlcy4KICAgLy8gRm9yIHN0dW4gY2FuZGlkYXRlIHJlbGF0
ZWQgYWRkcmVzcyBtdXN0IGJlIGVxdWFsIHRvIHRoZSBiYXNlCiAgIC8vIHNvY2tldCBhZGRyZXNz
LgotICBzdGQ6OnVuaXF1ZV9wdHI8U3R1blBvcnQ+IHN0dW5wb3J0KAotICAgICAgQ3JlYXRlU3R1
blBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSkpOworICBhdXRvIHN0dW5w
b3J0ID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSk7
CiAgIHN0dW5wb3J0LT5QcmVwYXJlQWRkcmVzcygpOwogICBBU1NFUlRfRVFfV0FJVCgxVSwgc3R1
bnBvcnQtPkNhbmRpZGF0ZXMoKS5zaXplKCksIGtEZWZhdWx0VGltZW91dCk7CiAgIC8vIENoZWNr
IFNUVU4gY2FuZGlkYXRlIGFkZHJlc3MuCkBAIC0yNDcwLDcgKzI0MzcsNyBAQCBURVNUX0YoUG9y
dFRlc3QsIFRlc3RDYW5kaWRhdGVSZWxhdGVkQWRkcmVzcykgewogICAvLyBWZXJpZnlpbmcgdGhl
IHJlbGF0ZWQgYWRkcmVzcyBmb3IgdGhlIEdUVVJOIGNhbmRpZGF0ZXMuCiAgIC8vIE5PVEU6IElu
IGNhc2Ugb2YgR1RVUk4gcmVsYXRlZCBhZGRyZXNzIHdpbGwgYmUgZXF1YWwgdG8gdGhlIG1hcHBl
ZAogICAvLyBhZGRyZXNzLCBidXQgYWRkcmVzcyhtYXBwZWQpIHdpbGwgbm90IGJlIFhPUi4KLSAg
c3RkOjp1bmlxdWVfcHRyPFJlbGF5UG9ydD4gcmVsYXlwb3J0KENyZWF0ZUd0dXJuUG9ydChrTG9j
YWxBZGRyMSkpOworICBhdXRvIHJlbGF5cG9ydCA9IENyZWF0ZUd0dXJuUG9ydChrTG9jYWxBZGRy
MSk7CiAgIHJlbGF5cG9ydC0+QWRkU2VydmVyQWRkcmVzcygKICAgICAgIGNyaWNrZXQ6OlByb3Rv
Y29sQWRkcmVzcyhrUmVsYXlVZHBJbnRBZGRyLCBjcmlja2V0OjpQUk9UT19VRFApKTsKICAgcmVs
YXlwb3J0LT5QcmVwYXJlQWRkcmVzcygpOwpAQCAtMjQ3OSw4ICsyNDQ2LDggQEAgVEVTVF9GKFBv
cnRUZXN0LCBUZXN0Q2FuZGlkYXRlUmVsYXRlZEFkZHJlc3MpIHsKICAgRVhQRUNUX0VRKHJ0Yzo6
U29ja2V0QWRkcmVzcygpLCByZWxheXBvcnQtPkNhbmRpZGF0ZXMoKVswXS5yZWxhdGVkX2FkZHJl
c3MoKSk7CiAgIC8vIFZlcmlmeWluZyB0aGUgcmVsYXRlZCBhZGRyZXNzIGZvciBUVVJOIGNhbmRp
ZGF0ZS4KICAgLy8gRm9yIFRVUk4gcmVsYXRlZCBhZGRyZXNzIG11c3QgYmUgZXF1YWwgdG8gdGhl
IG1hcHBlZCBhZGRyZXNzLgotICBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gdHVybnBvcnQoCi0gICAg
ICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9U
T19VRFAsIFBST1RPX1VEUCkpOworICBhdXRvIHR1cm5wb3J0ID0KKyAgICAgIENyZWF0ZVR1cm5Q
b3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1VEUCwgUFJPVE9f
VURQKTsKICAgdHVybnBvcnQtPlByZXBhcmVBZGRyZXNzKCk7CiAgIEFTU0VSVF9FUV9XQUlUKDFV
LCB0dXJucG9ydC0+Q2FuZGlkYXRlcygpLnNpemUoKSwga0RlZmF1bHRUaW1lb3V0KTsKICAgRVhQ
RUNUX0VRKGtUdXJuVWRwRXh0QWRkci5pcGFkZHIoKSwKQEAgLTI1MDAsMTEgKzI0NjcsOSBAQCBU
RVNUX0YoUG9ydFRlc3QsIFRlc3RDYW5kaWRhdGVQcmlvcml0eSkgewogCiAvLyBUZXN0IHRoZSBD
b25uZWN0aW9uIHByaW9yaXR5IGlzIGNhbGN1bGF0ZWQgY29ycmVjdGx5LgogVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0Q29ubmVjdGlvblByaW9yaXR5KSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9y
dD4gbHBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxw
YXNzIikpOworICBhdXRvIGxwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJh
ZyIsICJscGFzcyIpOwogICBscG9ydC0+c2V0X3R5cGVfcHJlZmVyZW5jZShjcmlja2V0OjpJQ0Vf
VFlQRV9QUkVGRVJFTkNFX0hPU1QpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0
KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsK
KyAgYXV0byBycG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBh
c3MiKTsKICAgcnBvcnQtPnNldF90eXBlX3ByZWZlcmVuY2UoY3JpY2tldDo6SUNFX1RZUEVfUFJF
RkVSRU5DRV9SRUxBWV9VRFApOwogICBscG9ydC0+c2V0X2NvbXBvbmVudCgxMjMpOwogICBscG9y
dC0+QWRkQ2FuZGlkYXRlQWRkcmVzcyhTb2NrZXRBZGRyZXNzKCIxOTIuMTY4LjEuNCIsIDEyMzQp
KTsKQEAgLTI1NDUsMTQgKzI1MTAsMTQgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q29ubmVjdGlv
blByaW9yaXR5KSB7CiAvLyBlc3RpbWF0ZSBnaXZlbiBieSB8TUlOSU1VTV9SVFR8ID0gMTAwLgog
VEVTVF9GKFBvcnRUZXN0LCBUZXN0V3JpdGFibGVTdGF0ZSkgewogICBydGM6OlNjb3BlZEZha2VD
bG9jayBjbG9jazsKLSAgVURQUG9ydCogcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIx
KTsKKyAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwogICBwb3J0MS0+
U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKLSAgVURQUG9ydCogcG9y
dDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKKyAgYXV0byBwb3J0MiA9IENyZWF0ZVVk
cFBvcnQoa0xvY2FsQWRkcjIpOwogICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xF
X0NPTlRST0xMRUQpOwogCiAgIC8vIFNldCB1cCBjaGFubmVscy4KLSAgVGVzdENoYW5uZWwgY2gx
KHBvcnQxKTsKLSAgVGVzdENoYW5uZWwgY2gyKHBvcnQyKTsKKyAgVGVzdENoYW5uZWwgY2gxKHN0
ZDo6bW92ZShwb3J0MSkpOworICBUZXN0Q2hhbm5lbCBjaDIoc3RkOjptb3ZlKHBvcnQyKSk7CiAK
ICAgLy8gQWNxdWlyZSBhZGRyZXNzZXMuCiAgIGNoMS5TdGFydCgpOwpAQCAtMjU2MSw3ICsyNTI2
LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0V3JpdGFibGVTdGF0ZSkgewogICBBU1NFUlRfRVFf
U0lNVUxBVEVEX1dBSVQoMSwgY2gyLmNvbXBsZXRlX2NvdW50KCksIGtEZWZhdWx0VGltZW91dCwg
Y2xvY2spOwogCiAgIC8vIFNlbmQgYSBwaW5nIGZyb20gc3JjIHRvIGRzdC4KLSAgY2gxLkNyZWF0
ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKHBvcnQyKSk7CisgIGNoMS5DcmVhdGVDb25uZWN0aW9u
KEdldENhbmRpZGF0ZShjaDIucG9ydCgpKSk7CiAgIEFTU0VSVF9UUlVFKGNoMS5jb25uKCkgIT0g
TlVMTCk7CiAgIEVYUEVDVF9FUShDb25uZWN0aW9uOjpTVEFURV9XUklURV9JTklULCBjaDEuY29u
bigpLT53cml0ZV9zdGF0ZSgpKTsKICAgLy8gZm9yIFRDUCBjb25uZWN0CkBAIC0yNTc3LDcgKzI1
NDIsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RXcml0YWJsZVN0YXRlKSB7CiAKICAgLy8gQWNj
ZXB0IHRoZSBjb25uZWN0aW9uIHRvIHJldHVybiB0aGUgYmluZGluZyByZXNwb25zZSwgdHJhbnNp
dGlvbiB0bwogICAvLyB3cml0YWJsZSwgYW5kIGFsbG93IGRhdGEgdG8gYmUgc2VudC4KLSAgY2gy
LkFjY2VwdENvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKHBvcnQxKSk7CisgIGNoMi5BY2NlcHRDb25u
ZWN0aW9uKEdldENhbmRpZGF0ZShjaDEucG9ydCgpKSk7CiAgIEVYUEVDVF9FUV9TSU1VTEFURURf
V0FJVChDb25uZWN0aW9uOjpTVEFURV9XUklUQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoMS5jb25uKCktPndyaXRlX3N0YXRlKCksIGtEZWZhdWx0VGltZW91dCwgY2xvY2spOwog
ICBFWFBFQ1RfRVEoZGF0YV9zaXplLCBjaDEuY29ubigpLT5TZW5kKGRhdGEsIGRhdGFfc2l6ZSwg
b3B0aW9ucykpOwpAQCAtMjYyMiwxNCArMjU4NywxNCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RX
cml0YWJsZVN0YXRlKSB7CiAvLyB8Q09OTkVDVElPTl9XUklURV9DT05ORUNUX0ZBSUxVUkVTfC4K
IFRFU1RfRihQb3J0VGVzdCwgVGVzdFdyaXRhYmxlU3RhdGVXaXRoQ29uZmlndXJlZFRocmVzaG9s
ZCkgewogICBydGM6OlNjb3BlZEZha2VDbG9jayBjbG9jazsKLSAgVURQUG9ydCogcG9ydDEgPSBD
cmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKKyAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBvcnQo
a0xvY2FsQWRkcjEpOwogICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRS
T0xMSU5HKTsKLSAgVURQUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsK
KyAgYXV0byBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOwogICBwb3J0Mi0+U2V0
SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwogCiAgIC8vIFNldCB1cCBjaGFu
bmVscy4KLSAgVGVzdENoYW5uZWwgY2gxKHBvcnQxKTsKLSAgVGVzdENoYW5uZWwgY2gyKHBvcnQy
KTsKKyAgVGVzdENoYW5uZWwgY2gxKHN0ZDo6bW92ZShwb3J0MSkpOworICBUZXN0Q2hhbm5lbCBj
aDIoc3RkOjptb3ZlKHBvcnQyKSk7CiAKICAgLy8gQWNxdWlyZSBhZGRyZXNzZXMuCiAgIGNoMS5T
dGFydCgpOwpAQCAtMjYzOCwxNCArMjYwMywxNCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RXcml0
YWJsZVN0YXRlV2l0aENvbmZpZ3VyZWRUaHJlc2hvbGQpIHsKICAgQVNTRVJUX0VRX1NJTVVMQVRF
RF9XQUlUKDEsIGNoMi5jb21wbGV0ZV9jb3VudCgpLCBrRGVmYXVsdFRpbWVvdXQsIGNsb2NrKTsK
IAogICAvLyBTZW5kIGEgcGluZyBmcm9tIHNyYyB0byBkc3QuCi0gIGNoMS5DcmVhdGVDb25uZWN0
aW9uKEdldENhbmRpZGF0ZShwb3J0MikpOworICBjaDEuQ3JlYXRlQ29ubmVjdGlvbihHZXRDYW5k
aWRhdGUoY2gyLnBvcnQoKSkpOwogICBBU1NFUlRfVFJVRShjaDEuY29ubigpICE9IE5VTEwpOwog
ICBjaDEuUGluZygpOwogICBTSU1VTEFURURfV0FJVCghY2gyLnJlbW90ZV9hZGRyZXNzKCkuSXNO
aWwoKSwga1Nob3J0VGltZW91dCwgY2xvY2spOwogCiAgIC8vIEFjY2VwdCB0aGUgY29ubmVjdGlv
biB0byByZXR1cm4gdGhlIGJpbmRpbmcgcmVzcG9uc2UsIHRyYW5zaXRpb24gdG8KICAgLy8gd3Jp
dGFibGUsIGFuZCBhbGxvdyBkYXRhIHRvIGJlIHNlbnQuCi0gIGNoMi5BY2NlcHRDb25uZWN0aW9u
KEdldENhbmRpZGF0ZShwb3J0MSkpOworICBjaDIuQWNjZXB0Q29ubmVjdGlvbihHZXRDYW5kaWRh
dGUoY2gxLnBvcnQoKSkpOwogICBFWFBFQ1RfRVFfU0lNVUxBVEVEX1dBSVQoQ29ubmVjdGlvbjo6
U1RBVEVfV1JJVEFCTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaDEuY29ubigpLT53
cml0ZV9zdGF0ZSgpLCBrRGVmYXVsdFRpbWVvdXQsIGNsb2NrKTsKIApAQCAtMjY3NiwyMCArMjY0
MSwyMCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RXcml0YWJsZVN0YXRlV2l0aENvbmZpZ3VyZWRU
aHJlc2hvbGQpIHsKIH0KIAogVEVTVF9GKFBvcnRUZXN0LCBUZXN0VGltZW91dEZvck5ldmVyV3Jp
dGFibGUpIHsKLSAgVURQUG9ydCogcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsK
KyAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwogICBwb3J0MS0+U2V0
SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKLSAgVURQUG9ydCogcG9ydDIg
PSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKKyAgYXV0byBwb3J0MiA9IENyZWF0ZVVkcFBv
cnQoa0xvY2FsQWRkcjIpOwogICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NP
TlRST0xMRUQpOwogCiAgIC8vIFNldCB1cCBjaGFubmVscy4KLSAgVGVzdENoYW5uZWwgY2gxKHBv
cnQxKTsKLSAgVGVzdENoYW5uZWwgY2gyKHBvcnQyKTsKKyAgVGVzdENoYW5uZWwgY2gxKHN0ZDo6
bW92ZShwb3J0MSkpOworICBUZXN0Q2hhbm5lbCBjaDIoc3RkOjptb3ZlKHBvcnQyKSk7CiAKICAg
Ly8gQWNxdWlyZSBhZGRyZXNzZXMuCiAgIGNoMS5TdGFydCgpOwogICBjaDIuU3RhcnQoKTsKIAot
ICBjaDEuQ3JlYXRlQ29ubmVjdGlvbihHZXRDYW5kaWRhdGUocG9ydDIpKTsKKyAgY2gxLkNyZWF0
ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNoMi5wb3J0KCkpKTsKICAgQVNTRVJUX1RSVUUoY2gx
LmNvbm4oKSAhPSBOVUxMKTsKICAgRVhQRUNUX0VRKENvbm5lY3Rpb246OlNUQVRFX1dSSVRFX0lO
SVQsIGNoMS5jb25uKCktPndyaXRlX3N0YXRlKCkpOwogCkBAIC0yNzA2LDE1ICsyNjcxLDE1IEBA
IFRFU1RfRihQb3J0VGVzdCwgVGVzdFRpbWVvdXRGb3JOZXZlcldyaXRhYmxlKSB7CiAvLyBJbiB0
aGlzIHRlc3QgfGNoMXwgYmVoYXZlcyBsaWtlIEZVTEwgbW9kZSBjbGllbnQgYW5kIHdlIGhhdmUg
Y3JlYXRlZAogLy8gcG9ydCB3aGljaCByZXNwb25kcyB0byB0aGUgcGluZyBtZXNzYWdlIGp1c3Qg
bGlrZSBMSVRFIGNsaWVudC4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdEljZUxpdGVDb25uZWN0aXZp
dHkpIHsKLSAgVGVzdFBvcnQqIGljZV9mdWxsX3BvcnQgPQorICBhdXRvIGljZV9mdWxsX3BvcnQg
PQogICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIsCiAg
ICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HLCBrVGllYnJl
YWtlcjEpOworICBhdXRvKiBpY2VfZnVsbF9wb3J0X3B0ciA9IGljZV9mdWxsX3BvcnQuZ2V0KCk7
CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBpY2VfbGl0ZV9wb3J0KAotICAgICAgQ3Jl
YXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIsIGNyaWNrZXQ6OklDRVJP
TEVfQ09OVFJPTExFRCwKLSAgICAgICAgICAgICAgICAgICAgIGtUaWVicmVha2VyMikpOworICBh
dXRvIGljZV9saXRlX3BvcnQgPSBDcmVhdGVUZXN0UG9ydCgKKyAgICAgIGtMb2NhbEFkZHIyLCAi
cmZyYWciLCAicnBhc3MiLCBjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQsIGtUaWVicmVha2Vy
Mik7CiAgIC8vIFNldHVwIFRlc3RDaGFubmVsLiBUaGlzIGJlaGF2ZXMgbGlrZSBGVUxMIG1vZGUg
Y2xpZW50LgotICBUZXN0Q2hhbm5lbCBjaDEoaWNlX2Z1bGxfcG9ydCk7CisgIFRlc3RDaGFubmVs
IGNoMShzdGQ6Om1vdmUoaWNlX2Z1bGxfcG9ydCkpOwogICBjaDEuU2V0SWNlTW9kZShJQ0VNT0RF
X0ZVTEwpOwogCiAgIC8vIFN0YXJ0IGdhdGhlcmluZyBjYW5kaWRhdGVzLgpAQCAtMjczNCwyNCAr
MjY5OSwyNCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RJY2VMaXRlQ29ubmVjdGl2aXR5KSB7CiAK
ICAgLy8gVmVyaWZ5IHN0dW4gcGluZyBpcyB3aXRob3V0IFVTRV9DQU5ESURBVEVfQVRUUi4gR2V0
dGluZyBtZXNzYWdlIGRpcmVjdGx5CiAgIC8vIGZyb20gcG9ydC4KLSAgQVNTRVJUX1RSVUVfV0FJ
VChpY2VfZnVsbF9wb3J0LT5sYXN0X3N0dW5fbXNnKCkgIT0gTlVMTCwga0RlZmF1bHRUaW1lb3V0
KTsKLSAgSWNlTWVzc2FnZSogbXNnID0gaWNlX2Z1bGxfcG9ydC0+bGFzdF9zdHVuX21zZygpOwor
ICBBU1NFUlRfVFJVRV9XQUlUKGljZV9mdWxsX3BvcnRfcHRyLT5sYXN0X3N0dW5fbXNnKCkgIT0g
TlVMTCwga0RlZmF1bHRUaW1lb3V0KTsKKyAgSWNlTWVzc2FnZSogbXNnID0gaWNlX2Z1bGxfcG9y
dF9wdHItPmxhc3Rfc3R1bl9tc2coKTsKICAgRVhQRUNUX1RSVUUobXNnLT5HZXRCeXRlU3RyaW5n
KFNUVU5fQVRUUl9VU0VfQ0FORElEQVRFKSA9PSBOVUxMKTsKIAogICAvLyBSZXNwb25kIHdpdGgg
YSBCSU5ESU5HLVJFU1BPTlNFIGZyb20gbGl0ZW1vZGUgY2xpZW50LgogICAvLyBOT1RFOiBJZGVh
bGx5IHdlIHNob3VsZCd0IGNyZWF0ZSBjb25uZWN0aW9uIGF0IHRoaXMgc3RhZ2UgZnJvbSBsaXRl
CiAgIC8vIHBvcnQsIGFzIGl0IHNob3VsZCBiZSBkb25lIG9ubHkgYWZ0ZXIgcmVjZWl2aW5nIHBp
bmcgd2l0aCBVU0VfQ0FORElEQVRFLgogICAvLyBCdXQgd2UgbmVlZCBhIGNvbm5lY3Rpb24gdG8g
c2VuZCBhIHJlc3BvbnNlIG1lc3NhZ2UuCi0gIGljZV9saXRlX3BvcnQtPkNyZWF0ZUNvbm5lY3Rp
b24oaWNlX2Z1bGxfcG9ydC0+Q2FuZGlkYXRlcygpWzBdLAorICBpY2VfbGl0ZV9wb3J0LT5DcmVh
dGVDb25uZWN0aW9uKGljZV9mdWxsX3BvcnRfcHRyLT5DYW5kaWRhdGVzKClbMF0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6UG9ydDo6T1JJR0lOX01FU1NBR0Up
OwotICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gcmVxdWVzdChDb3B5U3R1bk1lc3NhZ2Uo
bXNnKSk7Ci0gIGljZV9saXRlX3BvcnQtPlNlbmRCaW5kaW5nUmVzcG9uc2UocmVxdWVzdC5nZXQo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY2VfZnVsbF9wb3J0LT5D
YW5kaWRhdGVzKClbMF0uYWRkcmVzcygpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPEljZU1lc3NhZ2U+
IHJlcXVlc3QgPSBDb3B5U3R1bk1lc3NhZ2UoKm1zZyk7CisgIGljZV9saXRlX3BvcnQtPlNlbmRC
aW5kaW5nUmVzcG9uc2UoCisgICAgICByZXF1ZXN0LmdldCgpLCBpY2VfZnVsbF9wb3J0X3B0ci0+
Q2FuZGlkYXRlcygpWzBdLmFkZHJlc3MoKSk7CiAKICAgLy8gRmVlZGluZyB0aGUgcmVzcG9uZSBt
ZXNzYWdlIGZyb20gbGl0ZW1vZGUgdG8gdGhlIGZ1bGwgbW9kZSBjb25uZWN0aW9uLgogICBjaDEu
Y29ubigpLT5PblJlYWRQYWNrZXQoaWNlX2xpdGVfcG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5kYXRh
PGNoYXI+KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY2VfbGl0ZV9wb3J0LT5sYXN0
X3N0dW5fYnVmKCktPnNpemUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFj
a2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBhY2tldF90aW1lX3Vz
ICovIC0xKTsKICAgLy8gVmVyaWZ5aW5nIGZ1bGwgbW9kZSBjb25uZWN0aW9uIGJlY29tZXMgd3Jp
dGFibGUgZnJvbSB0aGUgcmVzcG9uc2UuCiAgIEVYUEVDVF9FUV9XQUlUKENvbm5lY3Rpb246OlNU
QVRFX1dSSVRBQkxFLCBjaDEuY29ubigpLT53cml0ZV9zdGF0ZSgpLAogICAgICAgICAgICAgICAg
ICBrRGVmYXVsdFRpbWVvdXQpOwpAQCAtMjc1OSwxMSArMjcyNCwxMSBAQCBURVNUX0YoUG9ydFRl
c3QsIFRlc3RJY2VMaXRlQ29ubmVjdGl2aXR5KSB7CiAKICAgLy8gQ2xlYXIgZXhpc3Rpbmcgc3R1
biBtZXNzc2FnZXMuIE90aGVyd2lzZSB3ZSB3aWxsIHByb2Nlc3Mgb2xkIHN0dW4KICAgLy8gbWVz
c2FnZSByaWdodCBhZnRlciB3ZSBzZW5kIHBpbmcuCi0gIGljZV9mdWxsX3BvcnQtPlJlc2V0KCk7
CisgIGljZV9mdWxsX3BvcnRfcHRyLT5SZXNldCgpOwogICAvLyBTZW5kIHBpbmcuIFRoaXMgbXVz
dCBoYXZlIFVTRV9DQU5ESURBVEVfQVRUUi4KICAgY2gxLlBpbmcoKTsKLSAgQVNTRVJUX1RSVUVf
V0FJVChpY2VfZnVsbF9wb3J0LT5sYXN0X3N0dW5fbXNnKCkgIT0gTlVMTCwga0RlZmF1bHRUaW1l
b3V0KTsKLSAgbXNnID0gaWNlX2Z1bGxfcG9ydC0+bGFzdF9zdHVuX21zZygpOworICBBU1NFUlRf
VFJVRV9XQUlUKGljZV9mdWxsX3BvcnRfcHRyLT5sYXN0X3N0dW5fbXNnKCkgIT0gTlVMTCwga0Rl
ZmF1bHRUaW1lb3V0KTsKKyAgbXNnID0gaWNlX2Z1bGxfcG9ydF9wdHItPmxhc3Rfc3R1bl9tc2co
KTsKICAgRVhQRUNUX1RSVUUobXNnLT5HZXRCeXRlU3RyaW5nKFNUVU5fQVRUUl9VU0VfQ0FORElE
QVRFKSAhPSBOVUxMKTsKICAgY2gxLlN0b3AoKTsKIH0KQEAgLTI3NzQsMjEgKzI3MzksMjEgQEAg
VEVTVF9GKFBvcnRUZXN0LCBUZXN0SWNlTGl0ZUNvbm5lY3Rpdml0eSkgewogVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0UG9ydFRpbWVvdXRJZk5vdEtlcHRBbGl2ZSkgewogICBydGM6OlNjb3BlZEZha2VD
bG9jayBjbG9jazsKICAgaW50IHRpbWVvdXRfZGVsYXkgPSAxMDA7Ci0gIFVEUFBvcnQqIHBvcnQx
ID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7Ci0gIENvbm5lY3RUb1NpZ25hbERlc3Ryb3ll
ZChwb3J0MSk7CisgIGF1dG8gcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKKyAg
Q29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQxLmdldCgpKTsKICAgcG9ydDEtPnNldF90aW1l
b3V0X2RlbGF5KHRpbWVvdXRfZGVsYXkpOyAgLy8gbWlsbGlzZWNvbmRzCiAgIHBvcnQxLT5TZXRJ
Y2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwogICBwb3J0MS0+U2V0SWNlVGll
YnJlYWtlcihrVGllYnJlYWtlcjEpOwogCi0gIFVEUFBvcnQqIHBvcnQyID0gQ3JlYXRlVWRwUG9y
dChrTG9jYWxBZGRyMik7Ci0gIENvbm5lY3RUb1NpZ25hbERlc3Ryb3llZChwb3J0Mik7CisgIGF1
dG8gcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKKyAgQ29ubmVjdFRvU2lnbmFs
RGVzdHJveWVkKHBvcnQyLmdldCgpKTsKICAgcG9ydDItPnNldF90aW1lb3V0X2RlbGF5KHRpbWVv
dXRfZGVsYXkpOyAgLy8gbWlsbGlzZWNvbmRzCiAgIHBvcnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6
OklDRVJPTEVfQ09OVFJPTExFRCk7CiAgIHBvcnQyLT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVh
a2VyMik7CiAKICAgLy8gU2V0IHVwIGNoYW5uZWxzIGFuZCBlbnN1cmUgYm90aCBwb3J0cyB3aWxs
IGJlIGRlbGV0ZWQuCi0gIFRlc3RDaGFubmVsIGNoMShwb3J0MSk7Ci0gIFRlc3RDaGFubmVsIGNo
Mihwb3J0Mik7CisgIFRlc3RDaGFubmVsIGNoMShzdGQ6Om1vdmUocG9ydDEpKTsKKyAgVGVzdENo
YW5uZWwgY2gyKHN0ZDo6bW92ZShwb3J0MikpOwogCiAgIC8vIFNpbXVsYXRlIGEgY29ubmVjdGlv
biB0aGF0IHN1Y2NlZWRzLCBhbmQgdGhlbiBpcyBkZXN0cm95ZWQuCiAgIFN0YXJ0Q29ubmVjdEFu
ZFN0b3BDaGFubmVscygmY2gxLCAmY2gyKTsKQEAgLTI4MDMsMjIgKzI3NjgsMjIgQEAgVEVTVF9G
KFBvcnRUZXN0LCBUZXN0UG9ydFRpbWVvdXRJZk5vdEtlcHRBbGl2ZSkgewogVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0UG9ydFRpbWVvdXRBZnRlck5ld0Nvbm5lY3Rpb25DcmVhdGVkQW5kRGVzdHJveWVk
KSB7CiAgIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGNsb2NrOwogICBpbnQgdGltZW91dF9kZWxheSA9
IDEwMDsKLSAgVURQUG9ydCogcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKLSAg
Q29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQxKTsKKyAgYXV0byBwb3J0MSA9IENyZWF0ZVVk
cFBvcnQoa0xvY2FsQWRkcjEpOworICBDb25uZWN0VG9TaWduYWxEZXN0cm95ZWQocG9ydDEuZ2V0
KCkpOwogICBwb3J0MS0+c2V0X3RpbWVvdXRfZGVsYXkodGltZW91dF9kZWxheSk7ICAvLyBtaWxs
aXNlY29uZHMKICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElO
Ryk7CiAgIHBvcnQxLT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMSk7CiAKLSAgVURQUG9y
dCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKLSAgQ29ubmVjdFRvU2lnbmFs
RGVzdHJveWVkKHBvcnQyKTsKKyAgYXV0byBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRk
cjIpOworICBDb25uZWN0VG9TaWduYWxEZXN0cm95ZWQocG9ydDIuZ2V0KCkpOwogICBwb3J0Mi0+
c2V0X3RpbWVvdXRfZGVsYXkodGltZW91dF9kZWxheSk7ICAvLyBtaWxsaXNlY29uZHMKIAogICBw
b3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwogICBwb3J0Mi0+
U2V0SWNlVGllYnJlYWtlcihrVGllYnJlYWtlcjIpOwogCiAgIC8vIFNldCB1cCBjaGFubmVscyBh
bmQgZW5zdXJlIGJvdGggcG9ydHMgd2lsbCBiZSBkZWxldGVkLgotICBUZXN0Q2hhbm5lbCBjaDEo
cG9ydDEpOwotICBUZXN0Q2hhbm5lbCBjaDIocG9ydDIpOworICBUZXN0Q2hhbm5lbCBjaDEoc3Rk
Ojptb3ZlKHBvcnQxKSk7CisgIFRlc3RDaGFubmVsIGNoMihzdGQ6Om1vdmUocG9ydDIpKTsKIAog
ICAvLyBTaW11bGF0ZSBhIGNvbm5lY3Rpb24gdGhhdCBzdWNjZWVkcywgYW5kIHRoZW4gaXMgZGVz
dHJveWVkLgogICBTdGFydENvbm5lY3RBbmRTdG9wQ2hhbm5lbHMoJmNoMSwgJmNoMik7CkBAIC0y
ODQ0LDE0ICsyODA5LDE0IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFBvcnRUaW1lb3V0QWZ0ZXJO
ZXdDb25uZWN0aW9uQ3JlYXRlZEFuZERlc3Ryb3llZCkgewogVEVTVF9GKFBvcnRUZXN0LCBUZXN0
UG9ydE5vdFRpbWVvdXRVbnRpbFBydW5lZCkgewogICBydGM6OlNjb3BlZEZha2VDbG9jayBjbG9j
azsKICAgaW50IHRpbWVvdXRfZGVsYXkgPSAxMDA7Ci0gIFVEUFBvcnQqIHBvcnQxID0gQ3JlYXRl
VWRwUG9ydChrTG9jYWxBZGRyMSk7Ci0gIENvbm5lY3RUb1NpZ25hbERlc3Ryb3llZChwb3J0MSk7
CisgIGF1dG8gcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKKyAgQ29ubmVjdFRv
U2lnbmFsRGVzdHJveWVkKHBvcnQxLmdldCgpKTsKICAgcG9ydDEtPnNldF90aW1lb3V0X2RlbGF5
KHRpbWVvdXRfZGVsYXkpOyAgLy8gbWlsbGlzZWNvbmRzCiAgIHBvcnQxLT5TZXRJY2VSb2xlKGNy
aWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwogICBwb3J0MS0+U2V0SWNlVGllYnJlYWtlcihr
VGllYnJlYWtlcjEpOwogCi0gIFVEUFBvcnQqIHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxB
ZGRyMik7Ci0gIENvbm5lY3RUb1NpZ25hbERlc3Ryb3llZChwb3J0Mik7CisgIGF1dG8gcG9ydDIg
PSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKKyAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVk
KHBvcnQyLmdldCgpKTsKICAgcG9ydDItPnNldF90aW1lb3V0X2RlbGF5KHRpbWVvdXRfZGVsYXkp
OyAgLy8gbWlsbGlzZWNvbmRzCiAgIHBvcnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVf
Q09OVFJPTExFRCk7CiAgIHBvcnQyLT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMik7CkBA
IC0yODYyLDQwICsyODI3LDM5IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFBvcnROb3RUaW1lb3V0
VW50aWxQcnVuZWQpIHsKICAgcG9ydDItPnNldF9jb21wb25lbnQoY3JpY2tldDo6SUNFX0NBTkRJ
REFURV9DT01QT05FTlRfREVGQVVMVCk7CiAKICAgLy8gU2V0IHVwIGNoYW5uZWxzIGFuZCBrZWVw
IHRoZSBwb3J0IGFsaXZlLgotICBUZXN0Q2hhbm5lbCBjaDEocG9ydDEpOwotICBUZXN0Q2hhbm5l
bCBjaDIocG9ydDIpOworICBUZXN0Q2hhbm5lbCBjaDEoc3RkOjptb3ZlKHBvcnQxKSk7CisgIFRl
c3RDaGFubmVsIGNoMihzdGQ6Om1vdmUocG9ydDIpKTsKICAgLy8gU2ltdWxhdGUgYSBjb25uZWN0
aW9uIHRoYXQgc3VjY2VlZHMsIGFuZCB0aGVuIGlzIGRlc3Ryb3llZC4gQnV0IHBvcnRzCiAgIC8v
IGFyZSBrZXB0IGFsaXZlLiBQb3J0cyB3b24ndCBiZSBkZXN0cm95ZWQuCiAgIFN0YXJ0Q29ubmVj
dEFuZFN0b3BDaGFubmVscygmY2gxLCAmY2gyKTsKLSAgcG9ydDEtPktlZXBBbGl2ZVVudGlsUHJ1
bmVkKCk7Ci0gIHBvcnQyLT5LZWVwQWxpdmVVbnRpbFBydW5lZCgpOworICBjaDEucG9ydCgpLT5L
ZWVwQWxpdmVVbnRpbFBydW5lZCgpOworICBjaDIucG9ydCgpLT5LZWVwQWxpdmVVbnRpbFBydW5l
ZCgpOwogICBTSU1VTEFURURfV0FJVChwb3J0c19kZXN0cm95ZWQoKSA+IDAsIDE1MCwgY2xvY2sp
OwogICBFWFBFQ1RfRVEoMCwgcG9ydHNfZGVzdHJveWVkKCkpOwogCiAgIC8vIElmIHRoZXkgYXJl
IHBydW5lZCBub3csIHRoZXkgd2lsbCBiZSBkZXN0cm95ZWQgcmlnaHQgYXdheS4KLSAgcG9ydDEt
PlBydW5lKCk7Ci0gIHBvcnQyLT5QcnVuZSgpOworICBjaDEucG9ydCgpLT5QcnVuZSgpOworICBj
aDIucG9ydCgpLT5QcnVuZSgpOwogICAvLyBUaGUgcG9ydHMgb24gYm90aCBzaWRlcyBzaG91bGQg
YmUgZGVzdHJveWVkIGFmdGVyIHRpbWVvdXQuCiAgIEVYUEVDVF9UUlVFX1NJTVVMQVRFRF9XQUlU
KHBvcnRzX2Rlc3Ryb3llZCgpID09IDIsIDEsIGNsb2NrKTsKIH0KIAogVEVTVF9GKFBvcnRUZXN0
LCBUZXN0U3VwcG9ydHNQcm90b2NvbCkgewotICBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gdWRwX3Bv
cnQoQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSkpOworICBhdXRvIHVkcF9wb3J0ID0gQ3JlYXRl
VWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgIEVYUEVDVF9UUlVFKHVkcF9wb3J0LT5TdXBwb3J0c1By
b3RvY29sKFVEUF9QUk9UT0NPTF9OQU1FKSk7CiAgIEVYUEVDVF9GQUxTRSh1ZHBfcG9ydC0+U3Vw
cG9ydHNQcm90b2NvbChUQ1BfUFJPVE9DT0xfTkFNRSkpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxQ
b3J0PiBzdHVuX3BvcnQoCi0gICAgICBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3Nv
Y2tldF9mYWN0b3J5MSgpKSk7CisgIGF1dG8gc3R1bl9wb3J0ID0gQ3JlYXRlU3R1blBvcnQoa0xv
Y2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSk7CiAgIEVYUEVDVF9UUlVFKHN0dW5fcG9y
dC0+U3VwcG9ydHNQcm90b2NvbChVRFBfUFJPVE9DT0xfTkFNRSkpOwogICBFWFBFQ1RfRkFMU0Uo
c3R1bl9wb3J0LT5TdXBwb3J0c1Byb3RvY29sKFRDUF9QUk9UT0NPTF9OQU1FKSk7CiAKLSAgc3Rk
Ojp1bmlxdWVfcHRyPFBvcnQ+IHRjcF9wb3J0KENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpKTsK
KyAgYXV0byB0Y3BfcG9ydCA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpOwogICBFWFBFQ1Rf
VFJVRSh0Y3BfcG9ydC0+U3VwcG9ydHNQcm90b2NvbChUQ1BfUFJPVE9DT0xfTkFNRSkpOwogICBF
WFBFQ1RfVFJVRSh0Y3BfcG9ydC0+U3VwcG9ydHNQcm90b2NvbChTU0xUQ1BfUFJPVE9DT0xfTkFN
RSkpOwogICBFWFBFQ1RfRkFMU0UodGNwX3BvcnQtPlN1cHBvcnRzUHJvdG9jb2woVURQX1BST1RP
Q09MX05BTUUpKTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gdHVybl9wb3J0KAotICAgICAg
Q3JlYXRlVHVyblBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwgUFJPVE9f
VURQLCBQUk9UT19VRFApKTsKKyAgYXV0byB0dXJuX3BvcnQgPQorICAgICAgQ3JlYXRlVHVyblBv
cnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQUk9UT19V
RFApOwogICBFWFBFQ1RfVFJVRSh0dXJuX3BvcnQtPlN1cHBvcnRzUHJvdG9jb2woVURQX1BST1RP
Q09MX05BTUUpKTsKICAgRVhQRUNUX0ZBTFNFKHR1cm5fcG9ydC0+U3VwcG9ydHNQcm90b2NvbChU
Q1BfUFJPVE9DT0xfTkFNRSkpOwogfQpAQCAtMjkwMyw4ICsyODY3LDcgQEAgVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0U3VwcG9ydHNQcm90b2NvbCkgewogLy8gVGVzdCB0aGF0IFNldEljZVBhcmFtZXRl
cnMgdXBkYXRlcyB0aGUgY29tcG9uZW50LCB1ZnJhZyBhbmQgcGFzc3dvcmQKIC8vIG9uIGJvdGgg
dGhlIHBvcnQgaXRzZWxmIGFuZCBpdHMgY2FuZGlkYXRlcy4KIFRFU1RfRihQb3J0VGVzdCwgVGVz
dFNldEljZVBhcmFtZXRlcnMpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBwb3J0KAot
ICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJ1ZnJhZzEiLCAicGFzc3dvcmQxIikp
OworICBhdXRvIHBvcnQgPSBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgInVmcmFnMSIsICJw
YXNzd29yZDEiKTsKICAgcG9ydC0+UHJlcGFyZUFkZHJlc3MoKTsKICAgRVhQRUNUX0VRKDFVTCwg
cG9ydC0+Q2FuZGlkYXRlcygpLnNpemUoKSk7CiAgIHBvcnQtPlNldEljZVBhcmFtZXRlcnMoMSwg
InVmcmFnMiIsICJwYXNzd29yZDIiKTsKQEAgLTI5MTgsOCArMjg4MSw3IEBAIFRFU1RfRihQb3J0
VGVzdCwgVGVzdFNldEljZVBhcmFtZXRlcnMpIHsKIH0KIAogVEVTVF9GKFBvcnRUZXN0LCBUZXN0
QWRkQ29ubmVjdGlvbldpdGhTYW1lQWRkcmVzcykgewotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBv
cnQ+IHBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgInVmcmFnMSIsICJw
YXNzd29yZDEiKSk7CisgIGF1dG8gcG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAi
dWZyYWcxIiwgInBhc3N3b3JkMSIpOwogICBwb3J0LT5QcmVwYXJlQWRkcmVzcygpOwogICBFWFBF
Q1RfRVEoMXUsIHBvcnQtPkNhbmRpZGF0ZXMoKS5zaXplKCkpOwogICBydGM6OlNvY2tldEFkZHJl
c3MgYWRkcmVzcygiMS4xLjEuMSIsIDUwMDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRvci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRhbGxv
Y2F0b3IuY2MKaW5kZXggNTQ3MGI1YjgyZTY1NWUzNjQzYmVlMGVkOWY0MmViOWViNzA2NTc4YS4u
ZDNiM2E1NmVkZDkyNmM3YzBhMDMxNGJjNTNjODZhNDcyOTc0YzIyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9j
YXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9wb3J0YWxsb2NhdG9yLmNjCkBAIC0xMCw4ICsxMCwxMCBAQAogCiAjaW5jbHVkZSAi
cDJwL2Jhc2UvcG9ydGFsbG9jYXRvci5oIgogCisjaW5jbHVkZSA8aXRlcmF0b3I+CiAjaW5jbHVk
ZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgInAycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewpA
QCAtMTIxLDYgKzEyMywxMCBAQCBQb3J0QWxsb2NhdG9yOjp+UG9ydEFsbG9jYXRvcigpIHsKICAg
Q2hlY2tSdW5PblZhbGlkVGhyZWFkSWZJbml0aWFsaXplZCgpOwogfQogCit2b2lkIFBvcnRBbGxv
Y2F0b3I6OnNldF9yZXN0cmljdF9pY2VfY3JlZGVudGlhbHNfY2hhbmdlKGJvb2wgdmFsdWUpIHsK
KyAgcmVzdHJpY3RfaWNlX2NyZWRlbnRpYWxzX2NoYW5nZV8gPSB2YWx1ZTsKK30KKwogYm9vbCBQ
b3J0QWxsb2NhdG9yOjpTZXRDb25maWd1cmF0aW9uKAogICAgIGNvbnN0IFNlcnZlckFkZHJlc3Nl
cyYgc3R1bl9zZXJ2ZXJzLAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFJlbGF5U2VydmVyQ29uZmln
PiYgdHVybl9zZXJ2ZXJzLApAQCAtMTY2LDggKzE3Miw4IEBAIGJvb2wgUG9ydEFsbG9jYXRvcjo6
U2V0Q29uZmlndXJhdGlvbigKICAgLy8gSWYgfGNhbmRpZGF0ZV9wb29sX3NpemVffCBpcyBsZXNz
IHRoYW4gdGhlIG51bWJlciBvZiBwb29sZWQgc2Vzc2lvbnMsIGdldAogICAvLyByaWQgb2YgdGhl
IGV4dHJhcy4KICAgd2hpbGUgKGNhbmRpZGF0ZV9wb29sX3NpemVfIDwgc3RhdGljX2Nhc3Q8aW50
Pihwb29sZWRfc2Vzc2lvbnNfLnNpemUoKSkpIHsKLSAgICBwb29sZWRfc2Vzc2lvbnNfLmZyb250
KCkucmVzZXQobnVsbHB0cik7Ci0gICAgcG9vbGVkX3Nlc3Npb25zXy5wb3BfZnJvbnQoKTsKKyAg
ICBwb29sZWRfc2Vzc2lvbnNfLmJhY2soKS5yZXNldChudWxscHRyKTsKKyAgICBwb29sZWRfc2Vz
c2lvbnNfLnBvcF9iYWNrKCk7CiAgIH0KIAogICAvLyB8c3R1bl9jYW5kaWRhdGVfa2VlcGFsaXZl
X2ludGVydmFsX3wgd2lsbCBiZSB1c2VkIGluIFNUVU4gcG9ydCBhbGxvY2F0aW9uCkBAIC0xODMs
NyArMTg5LDExIEBAIGJvb2wgUG9ydEFsbG9jYXRvcjo6U2V0Q29uZmlndXJhdGlvbigKICAgLy8g
SWYgfGNhbmRpZGF0ZV9wb29sX3NpemVffCBpcyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBw
b29sZWQgc2Vzc2lvbnMsCiAgIC8vIGNyZWF0ZSBuZXcgc2Vzc2lvbnMuCiAgIHdoaWxlIChzdGF0
aWNfY2FzdDxpbnQ+KHBvb2xlZF9zZXNzaW9uc18uc2l6ZSgpKSA8IGNhbmRpZGF0ZV9wb29sX3Np
emVfKSB7Ci0gICAgUG9ydEFsbG9jYXRvclNlc3Npb24qIHBvb2xlZF9zZXNzaW9uID0gQ3JlYXRl
U2Vzc2lvbkludGVybmFsKCIiLCAwLCAiIiwgIiIpOworICAgIEljZVBhcmFtZXRlcnMgaWNlQ3Jl
ZGVudGlhbHMgPQorICAgICAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yOjpDcmVhdGVSYW5kb21J
Y2VDcmVkZW50aWFscygpOworICAgIFBvcnRBbGxvY2F0b3JTZXNzaW9uKiBwb29sZWRfc2Vzc2lv
biA9CisgICAgICAgIENyZWF0ZVNlc3Npb25JbnRlcm5hbCgiIiwgMCwgaWNlQ3JlZGVudGlhbHMu
dWZyYWcsIGljZUNyZWRlbnRpYWxzLnB3ZCk7CisgICAgcG9vbGVkX3Nlc3Npb24tPnNldF9wb29s
ZWQodHJ1ZSk7CiAgICAgcG9vbGVkX3Nlc3Npb24tPlN0YXJ0R2V0dGluZ1BvcnRzKCk7CiAgICAg
cG9vbGVkX3Nlc3Npb25zXy5wdXNoX2JhY2soCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb3J0
QWxsb2NhdG9yU2Vzc2lvbj4ocG9vbGVkX3Nlc3Npb24pKTsKQEAgLTIxNCwyMiArMjI0LDUwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxQb3J0QWxsb2NhdG9yU2Vzc2lvbj4gUG9ydEFsbG9jYXRvcjo6VGFr
ZVBvb2xlZFNlc3Npb24oCiAgIGlmIChwb29sZWRfc2Vzc2lvbnNfLmVtcHR5KCkpIHsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgfQotICBzdGQ6OnVuaXF1ZV9wdHI8UG9ydEFsbG9jYXRvclNlc3Np
b24+IHJldCA9Ci0gICAgICBzdGQ6Om1vdmUocG9vbGVkX3Nlc3Npb25zXy5mcm9udCgpKTsKKwor
ICBJY2VQYXJhbWV0ZXJzIGNyZWRlbnRpYWxzKGljZV91ZnJhZywgaWNlX3B3ZCwgZmFsc2UpOwor
ICAvLyBJZiByZXN0cmljdF9pY2VfY3JlZGVudGlhbHNfY2hhbmdlXyBpcyBUUlVFLCB0aGVuIGNh
bGwgRmluZFBvb2xlZFNlc3Npb24KKyAgLy8gd2l0aCBpY2UgY3JlZGVudGlhbHMuIE90aGVyd2lz
ZSBjYWxsIGl0IHdpdGggbnVsbHB0ciB3aGljaCBtZWFucworICAvLyAiZmluZCBhbnkiIHBvb2xl
ZCBzZXNzaW9uLgorICBhdXRvIGNpdCA9IEZpbmRQb29sZWRTZXNzaW9uKHJlc3RyaWN0X2ljZV9j
cmVkZW50aWFsc19jaGFuZ2VfID8gJmNyZWRlbnRpYWxzCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxscHRyKTsKKyAg
aWYgKGNpdCA9PSBwb29sZWRfc2Vzc2lvbnNfLmVuZCgpKSB7CisgICAgcmV0dXJuIG51bGxwdHI7
CisgIH0KKworICBhdXRvIGl0ID0KKyAgICAgIHBvb2xlZF9zZXNzaW9uc18uYmVnaW4oKSArIHN0
ZDo6ZGlzdGFuY2UocG9vbGVkX3Nlc3Npb25zXy5jYmVnaW4oKSwgY2l0KTsKKyAgc3RkOjp1bmlx
dWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9uPiByZXQgPSBzdGQ6Om1vdmUoKml0KTsKICAgcmV0
LT5TZXRJY2VQYXJhbWV0ZXJzKGNvbnRlbnRfbmFtZSwgY29tcG9uZW50LCBpY2VfdWZyYWcsIGlj
ZV9wd2QpOwotICAvLyBBY2NvcmRpbmcgdG8gSlNFUCwgYSBwb29sZWQgc2Vzc2lvbiBzaG91bGQg
ZmlsdGVyIGNhbmRpZGF0ZXMgb25seSBhZnRlcgotICAvLyBpdCdzIHRha2VuIG91dCBvZiB0aGUg
cG9vbC4KKyAgcmV0LT5zZXRfcG9vbGVkKGZhbHNlKTsKKyAgLy8gQWNjb3JkaW5nIHRvIEpTRVAs
IGEgcG9vbGVkIHNlc3Npb24gc2hvdWxkIGZpbHRlciBjYW5kaWRhdGVzIG9ubHkKKyAgLy8gYWZ0
ZXIgaXQncyB0YWtlbiBvdXQgb2YgdGhlIHBvb2wuCiAgIHJldC0+U2V0Q2FuZGlkYXRlRmlsdGVy
KGNhbmRpZGF0ZV9maWx0ZXIoKSk7Ci0gIHBvb2xlZF9zZXNzaW9uc18ucG9wX2Zyb250KCk7Cisg
IHBvb2xlZF9zZXNzaW9uc18uZXJhc2UoaXQpOwogICByZXR1cm4gcmV0OwogfQogCi1jb25zdCBQ
b3J0QWxsb2NhdG9yU2Vzc2lvbiogUG9ydEFsbG9jYXRvcjo6R2V0UG9vbGVkU2Vzc2lvbigpIGNv
bnN0IHsKK2NvbnN0IFBvcnRBbGxvY2F0b3JTZXNzaW9uKiBQb3J0QWxsb2NhdG9yOjpHZXRQb29s
ZWRTZXNzaW9uKAorICAgIGNvbnN0IEljZVBhcmFtZXRlcnMqIGljZV9jcmVkZW50aWFscykgY29u
c3QgewogICBDaGVja1J1bk9uVmFsaWRUaHJlYWRBbmRJbml0aWFsaXplZCgpOwotICBpZiAocG9v
bGVkX3Nlc3Npb25zXy5lbXB0eSgpKSB7CisgIGF1dG8gaXQgPSBGaW5kUG9vbGVkU2Vzc2lvbihp
Y2VfY3JlZGVudGlhbHMpOworICBpZiAoaXQgPT0gcG9vbGVkX3Nlc3Npb25zXy5lbmQoKSkgewog
ICAgIHJldHVybiBudWxscHRyOworICB9IGVsc2UgeworICAgIHJldHVybiBpdC0+Z2V0KCk7Cisg
IH0KK30KKworc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9u
Pj46OmNvbnN0X2l0ZXJhdG9yCitQb3J0QWxsb2NhdG9yOjpGaW5kUG9vbGVkU2Vzc2lvbihjb25z
dCBJY2VQYXJhbWV0ZXJzKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0IHsKKyAgZm9yIChhdXRvIGl0
ID0gcG9vbGVkX3Nlc3Npb25zXy5iZWdpbigpOyBpdCAhPSBwb29sZWRfc2Vzc2lvbnNfLmVuZCgp
OyArK2l0KSB7CisgICAgaWYgKGljZV9jcmVkZW50aWFscyA9PSBudWxscHRyIHx8CisgICAgICAg
ICgoKml0KS0+aWNlX3VmcmFnKCkgPT0gaWNlX2NyZWRlbnRpYWxzLT51ZnJhZyAmJgorICAgICAg
ICAgKCppdCktPmljZV9wd2QoKSA9PSBpY2VfY3JlZGVudGlhbHMtPnB3ZCkpIHsKKyAgICAgIHJl
dHVybiBpdDsKKyAgICB9CiAgIH0KLSAgcmV0dXJuIHBvb2xlZF9zZXNzaW9uc18uZnJvbnQoKS5n
ZXQoKTsKKyAgcmV0dXJuIHBvb2xlZF9zZXNzaW9uc18uZW5kKCk7CiB9CiAKIHZvaWQgUG9ydEFs
bG9jYXRvcjo6RnJlZXplQ2FuZGlkYXRlUG9vbCgpIHsKQEAgLTI1MCw0ICsyODgsMTQgQEAgdm9p
ZCBQb3J0QWxsb2NhdG9yOjpHZXRDYW5kaWRhdGVTdGF0c0Zyb21Qb29sZWRTZXNzaW9ucygKICAg
fQogfQogCitzdGQ6OnZlY3RvcjxJY2VQYXJhbWV0ZXJzPiBQb3J0QWxsb2NhdG9yOjpHZXRQb29s
ZWRJY2VDcmVkZW50aWFscygpIHsKKyAgQ2hlY2tSdW5PblZhbGlkVGhyZWFkQW5kSW5pdGlhbGl6
ZWQoKTsKKyAgc3RkOjp2ZWN0b3I8SWNlUGFyYW1ldGVycz4gbGlzdDsKKyAgZm9yIChjb25zdCBh
dXRvJiBzZXNzaW9uIDogcG9vbGVkX3Nlc3Npb25zXykgeworICAgIGxpc3QucHVzaF9iYWNrKAor
ICAgICAgICBJY2VQYXJhbWV0ZXJzKHNlc3Npb24tPmljZV91ZnJhZygpLCBzZXNzaW9uLT5pY2Vf
cHdkKCksIGZhbHNlKSk7CisgIH0KKyAgcmV0dXJuIGxpc3Q7Cit9CisKIH0gIC8vIG5hbWVzcGFj
ZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmgKaW5kZXggOGJkNzA5
NjQyYzhhZWMzODQ2NTgxYmU4ZDZjNmIwNmU3OGJjZTAyMC4uNzAyNmYyYjJiNjMyMDRmNzJhYWJk
NzIzMzY5ZDVjM2YxOWQyNDk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3Iu
aApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9wcm94eWluZm8uaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZp
Y2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKQEAg
LTE0Niw3ICsxNDcsNyBAQCBzdHJ1Y3QgUmVsYXlDcmVkZW50aWFscyB7CiAKIHR5cGVkZWYgc3Rk
Ojp2ZWN0b3I8UHJvdG9jb2xBZGRyZXNzPiBQb3J0TGlzdDsKIC8vIFRPRE8oZGVhZGJlZWYpOiBS
ZW5hbWUgdG8gVHVyblNlcnZlckNvbmZpZy4KLXN0cnVjdCBSZWxheVNlcnZlckNvbmZpZyB7Citz
dHJ1Y3QgUlRDX0VYUE9SVCBSZWxheVNlcnZlckNvbmZpZyB7CiAgIGV4cGxpY2l0IFJlbGF5U2Vy
dmVyQ29uZmlnKFJlbGF5VHlwZSB0eXBlKTsKICAgUmVsYXlTZXJ2ZXJDb25maWcoY29uc3QgcnRj
OjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgdXNlcm5hbWUsCkBAIC0xODMsNyArMTg0LDcgQEAgc3RydWN0IFJlbGF5U2VydmVy
Q29uZmlnIHsKICAgcnRjOjpTU0xDZXJ0aWZpY2F0ZVZlcmlmaWVyKiB0bHNfY2VydF92ZXJpZmll
ciA9IG51bGxwdHI7CiB9OwogCi1jbGFzcyBQb3J0QWxsb2NhdG9yU2Vzc2lvbiA6IHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiB7CitjbGFzcyBSVENfRVhQT1JUIFBvcnRBbGxvY2F0b3JTZXNz
aW9uIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICBwdWJsaWM6CiAgIC8vIENvbnRl
bnQgbmFtZSBwYXNzZWQgaW4gbW9zdGx5IGZvciBsb2dnaW5nIGFuZCBkZWJ1Z2dpbmcuCiAgIFBv
cnRBbGxvY2F0b3JTZXNzaW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCkBAIC0y
MDEsNyArMjAyLDcgQEAgY2xhc3MgUG9ydEFsbG9jYXRvclNlc3Npb24gOiBwdWJsaWMgc2lnc2xv
dDo6aGFzX3Nsb3RzPD4gewogICBpbnQgY29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gY29tcG9u
ZW50XzsgfQogICBjb25zdCBzdGQ6OnN0cmluZyYgaWNlX3VmcmFnKCkgY29uc3QgeyByZXR1cm4g
aWNlX3VmcmFnXzsgfQogICBjb25zdCBzdGQ6OnN0cmluZyYgaWNlX3B3ZCgpIGNvbnN0IHsgcmV0
dXJuIGljZV9wd2RfOyB9Ci0gIGJvb2wgcG9vbGVkKCkgY29uc3QgeyByZXR1cm4gaWNlX3VmcmFn
Xy5lbXB0eSgpOyB9CisgIGJvb2wgcG9vbGVkKCkgY29uc3QgeyByZXR1cm4gcG9vbGVkXzsgfQog
CiAgIC8vIFNldHRpbmcgdGhpcyBmaWx0ZXIgc2hvdWxkIGFmZmVjdCBub3Qgb25seSBjYW5kaWRh
dGVzIGdhdGhlcmVkIGluIHRoZQogICAvLyBmdXR1cmUsIGJ1dCBjYW5kaWRhdGVzIGFscmVhZHkg
Z2F0aGVyZWQgYW5kIHBvcnRzIGFscmVhZHkgInJlYWR5IiwKQEAgLTMwOSw2ICszMTAsOCBAQCBj
bGFzcyBQb3J0QWxsb2NhdG9yU2Vzc2lvbiA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7
CiAgICAgVXBkYXRlSWNlUGFyYW1ldGVyc0ludGVybmFsKCk7CiAgIH0KIAorICB2b2lkIHNldF9w
b29sZWQoYm9vbCB2YWx1ZSkgeyBwb29sZWRfID0gdmFsdWU7IH0KKwogICB1aW50MzJfdCBmbGFn
c187CiAgIHVpbnQzMl90IGdlbmVyYXRpb25fOwogICBzdGQ6OnN0cmluZyBjb250ZW50X25hbWVf
OwpAQCAtMzE2LDYgKzMxOSw4IEBAIGNsYXNzIFBvcnRBbGxvY2F0b3JTZXNzaW9uIDogcHVibGlj
IHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgc3RkOjpzdHJpbmcgaWNlX3VmcmFnXzsKICAgc3Rk
OjpzdHJpbmcgaWNlX3B3ZF87CiAKKyAgYm9vbCBwb29sZWRfID0gZmFsc2U7CisKICAgLy8gU2V0
SWNlUGFyYW1ldGVycyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgd2hpY2ggb25seSBQb3J0
QWxsb2NhdG9yCiAgIC8vIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwuCiAgIGZyaWVuZCBjbGFzcyBQ
b3J0QWxsb2NhdG9yOwpAQCAtMzI2LDcgKzMzMSw3IEBAIGNsYXNzIFBvcnRBbGxvY2F0b3JTZXNz
aW9uIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKIC8vCiAvLyBUaGlzIGFsbG93cyBh
IFBvcnRBbGxvY2F0b3Igc3ViY2xhc3MgdG8gYmUgY29uc3RydWN0ZWQgYW5kIGNvbmZpZ3VyZWQg
b24gb25lCiAvLyB0aHJlYWQsIGFuZCBwYXNzZWQgaW50byBhbiBvYmplY3QgdGhhdCB1c2VzIGl0
IG9uIGEgZGlmZmVyZW50IHRocmVhZC4KLWNsYXNzIFBvcnRBbGxvY2F0b3IgOiBwdWJsaWMgc2ln
c2xvdDo6aGFzX3Nsb3RzPD4geworY2xhc3MgUlRDX0VYUE9SVCBQb3J0QWxsb2NhdG9yIDogcHVi
bGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICBwdWJsaWM6CiAgIFBvcnRBbGxvY2F0b3IoKTsK
ICAgflBvcnRBbGxvY2F0b3IoKSBvdmVycmlkZTsKQEAgLTMzNSw2ICszNDAsMTEgQEAgY2xhc3Mg
UG9ydEFsbG9jYXRvciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIC8vIGNvbnN0
cnVjdGluZyBhbmQgY29uZmlndXJpbmcgdGhlIFBvcnRBbGxvY2F0b3Igc3ViY2xhc3Nlcy4KICAg
dmlydHVhbCB2b2lkIEluaXRpYWxpemUoKTsKIAorICAvLyBTZXQgdG8gdHJ1ZSBpZiBzb21lIFBv
cnRzIG5lZWQgdG8ga25vdyB0aGUgSUNFIGNyZWRlbnRpYWxzIHdoZW4gdGhleSBhcmUKKyAgLy8g
Y3JlYXRlZC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBQb3J0QWxsb2NhdG9yIHdpbGwgb25s
eSBtYXRjaCBwb29sZWQKKyAgLy8gYWxsb2NhdG9yIHNlc3Npb25zIHRvIHRoZSBJQ0UgdHJhbnNw
b3J0IHdpdGggdGhlIHNhbWUgY3JlZGVudGlhbHMuCisgIHZpcnR1YWwgdm9pZCBzZXRfcmVzdHJp
Y3RfaWNlX2NyZWRlbnRpYWxzX2NoYW5nZShib29sIHZhbHVlKTsKKwogICAvLyBTZXQgU1RVTiBh
bmQgVFVSTiBzZXJ2ZXJzIHRvIGJlIHVzZWQgaW4gZnV0dXJlIHNlc3Npb25zLCBhbmQgc2V0CiAg
IC8vIGNhbmRpZGF0ZSBwb29sIHNpemUsIGFzIGRlc2NyaWJlZCBpbiBKU0VQLgogICAvLwpAQCAt
MzkyLDYgKzQwMiw4IEBAIGNsYXNzIFBvcnRBbGxvY2F0b3IgOiBwdWJsaWMgc2lnc2xvdDo6aGFz
X3Nsb3RzPD4gewogICAvLwogICAvLyBDYWxsZXIgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZXR1
cm5lZCBzZXNzaW9uLgogICAvLworICAvLyBJZiByZXN0cmljdF9pY2VfY3JlZGVudGlhbHNfY2hh
bmdlIGlzIFRSVUUsIHRoZW4gaXQgd2lsbCBvbmx5CisgIC8vICAgcmV0dXJuIGEgcG9vbGVkIHNl
c3Npb24gd2l0aCBtYXRjaGluZyBpY2UgY3JlZGVudGlhbHMuCiAgIC8vIElmIG5vIHBvb2xlZCBz
ZXNzaW9ucyBhcmUgYXZhaWxhYmxlLCByZXR1cm5zIG51bGwuCiAgIHN0ZDo6dW5pcXVlX3B0cjxQ
b3J0QWxsb2NhdG9yU2Vzc2lvbj4gVGFrZVBvb2xlZFNlc3Npb24oCiAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgY29udGVudF9uYW1lLApAQCAtMzk5LDggKzQxMSwxMCBAQCBjbGFzcyBQb3J0QWxs
b2NhdG9yIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBpY2VfdWZyYWcsCiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaWNlX3B3ZCk7CiAK
LSAgLy8gUmV0dXJucyB0aGUgbmV4dCBzZXNzaW9uIHRoYXQgd291bGQgYmUgcmV0dXJuZWQgYnkg
VGFrZVBvb2xlZFNlc3Npb24uCi0gIGNvbnN0IFBvcnRBbGxvY2F0b3JTZXNzaW9uKiBHZXRQb29s
ZWRTZXNzaW9uKCkgY29uc3Q7CisgIC8vIFJldHVybnMgdGhlIG5leHQgc2Vzc2lvbiB0aGF0IHdv
dWxkIGJlIHJldHVybmVkIGJ5IFRha2VQb29sZWRTZXNzaW9uCisgIC8vIG9wdGlvbmFsbHkgcmVz
dHJpY3RpbmcgaXQgdG8gc2Vzc2lvbnMgd2l0aCBzcGVjaWZpZWQgaWNlIGNyZWRlbnRpYWxzLgor
ICBjb25zdCBQb3J0QWxsb2NhdG9yU2Vzc2lvbiogR2V0UG9vbGVkU2Vzc2lvbigKKyAgICAgIGNv
bnN0IEljZVBhcmFtZXRlcnMqIGljZV9jcmVkZW50aWFscyA9IG51bGxwdHIpIGNvbnN0OwogCiAg
IC8vIEFmdGVyIEZyZWV6ZUNhbmRpZGF0ZVBvb2wgaXMgY2FsbGVkLCBjaGFuZ2luZyB0aGUgY2Fu
ZGlkYXRlIHBvb2wgc2l6ZSB3aWxsCiAgIC8vIG5vIGxvbmdlciBiZSBhbGxvd2VkLCBhbmQgY2hh
bmdpbmcgSUNFIHNlcnZlcnMgd2lsbCBub3QgY2F1c2UgcG9vbGVkCkBAIC01NDgsNiArNTYyLDkg
QEAgY2xhc3MgUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAg
IHZpcnR1YWwgdm9pZCBHZXRDYW5kaWRhdGVTdGF0c0Zyb21Qb29sZWRTZXNzaW9ucygKICAgICAg
IENhbmRpZGF0ZVN0YXRzTGlzdCogY2FuZGlkYXRlX3N0YXRzX2xpc3QpOwogCisgIC8vIFJldHVy
biBJY2VQYXJhbWV0ZXJzIG9mIHRoZSBwb29sZWQgc2Vzc2lvbnMuCisgIHN0ZDo6dmVjdG9yPElj
ZVBhcmFtZXRlcnM+IEdldFBvb2xlZEljZUNyZWRlbnRpYWxzKCk7CisKICBwcm90ZWN0ZWQ6CiAg
IHZpcnR1YWwgUG9ydEFsbG9jYXRvclNlc3Npb24qIENyZWF0ZVNlc3Npb25JbnRlcm5hbCgKICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCkBAIC01NTUsNyArNTcyLDcgQEAg
Y2xhc3MgUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgaWNlX3VmcmFnLAogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGljZV9wd2QpID0gMDsKIAotICBjb25zdCBzdGQ6OmRlcXVlPHN0ZDo6dW5pcXVlX3B0cjxQb3J0
QWxsb2NhdG9yU2Vzc2lvbj4+JiBwb29sZWRfc2Vzc2lvbnMoKSB7CisgIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxQb3J0QWxsb2NhdG9yU2Vzc2lvbj4+JiBwb29sZWRfc2Vzc2lv
bnMoKSB7CiAgICAgcmV0dXJuIHBvb2xlZF9zZXNzaW9uc187CiAgIH0KIApAQCAtNTg2LDcgKzYw
Myw3IEBAIGNsYXNzIFBvcnRBbGxvY2F0b3IgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4g
ewogICBTZXJ2ZXJBZGRyZXNzZXMgc3R1bl9zZXJ2ZXJzXzsKICAgc3RkOjp2ZWN0b3I8UmVsYXlT
ZXJ2ZXJDb25maWc+IHR1cm5fc2VydmVyc187CiAgIGludCBjYW5kaWRhdGVfcG9vbF9zaXplXyA9
IDA7ICAvLyBMYXN0IHZhbHVlIHBhc3NlZCBpbnRvIFNldENvbmZpZ3VyYXRpb24uCi0gIHN0ZDo6
ZGVxdWU8c3RkOjp1bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9uPj4gcG9vbGVkX3Nlc3Np
b25zXzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9u
Pj4gcG9vbGVkX3Nlc3Npb25zXzsKICAgYm9vbCBjYW5kaWRhdGVfcG9vbF9mcm96ZW5fID0gZmFs
c2U7CiAgIGJvb2wgcHJ1bmVfdHVybl9wb3J0c18gPSBmYWxzZTsKIApAQCAtNTk2LDYgKzYxMywx
NSBAQCBjbGFzcyBQb3J0QWxsb2NhdG9yIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsK
ICAgd2VicnRjOjpUdXJuQ3VzdG9taXplciogdHVybl9jdXN0b21pemVyXyA9IG51bGxwdHI7CiAK
ICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzdHVuX2NhbmRpZGF0ZV9rZWVwYWxpdmVfaW50ZXJ2YWxf
OworCisgIC8vIElmIHRydWUsIFRha2VQb29sZWRTZXNzaW9uKCkgd2lsbCBvbmx5IHJldHVybiBz
ZXNzaW9ucyB0aGF0IGhhcyBzYW1lIGljZQorICAvLyBjcmVkZW50aWFscyBhcyByZXF1ZXN0ZWQu
CisgIGJvb2wgcmVzdHJpY3RfaWNlX2NyZWRlbnRpYWxzX2NoYW5nZV8gPSBmYWxzZTsKKworICAv
LyBSZXR1cm5zIGl0ZXJhdG9yIHRvIHBvb2xlZCBzZXNzaW9uIHdpdGggc3BlY2lmaWVkIGljZV9j
cmVkZW50aWFscyBvciBmaXJzdAorICAvLyBpZiBpY2VfY3JlZGVudGlhbHMgaXMgbnVsbHB0ci4K
KyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9uPj46OmNv
bnN0X2l0ZXJhdG9yCisgIEZpbmRQb29sZWRTZXNzaW9uKGNvbnN0IEljZVBhcmFtZXRlcnMqIGlj
ZV9jcmVkZW50aWFscyA9IG51bGxwdHIpIGNvbnN0OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIGNy
aWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yX3VuaXR0ZXN0
LmNjCmluZGV4IDM4ODdhOTBkYjFmMjliYTZmMDgxMjNiYjEzZTJkOGNiZjUzMjdmMTcuLjhiMzE3
ZjRkNWE5NTNjODQ3MzMyODA5YjZlNjZjMjAzMWJhNjM2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3Jf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYwpAQCAtNzEsOCArNzEsNyBAQCBj
bGFzcyBQb3J0QWxsb2NhdG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2ln
c2xvdDo6aGFzX3Nsb3RzPD4gewogCiAgIGludCBHZXRBbGxQb29sZWRTZXNzaW9uc1JldHVybkNv
dW50KCkgewogICAgIGludCBjb3VudCA9IDA7Ci0gICAgd2hpbGUgKEdldFBvb2xlZFNlc3Npb24o
KSkgewotICAgICAgVGFrZVBvb2xlZFNlc3Npb24oKTsKKyAgICB3aGlsZSAoVGFrZVBvb2xlZFNl
c3Npb24oKSAhPSBudWxscHRyKSB7CiAgICAgICArK2NvdW50OwogICAgIH0KICAgICByZXR1cm4g
Y291bnQ7CkBAIC0yNzUsMyArMjc0LDI5IEBAIFRFU1RfRihQb3J0QWxsb2NhdG9yVGVzdCwgRGlz
Y2FyZENhbmRpZGF0ZVBvb2wpIHsKICAgYWxsb2NhdG9yXy0+RGlzY2FyZENhbmRpZGF0ZVBvb2wo
KTsKICAgRVhQRUNUX0VRKDAsIEdldEFsbFBvb2xlZFNlc3Npb25zUmV0dXJuQ291bnQoKSk7CiB9
CisKK1RFU1RfRihQb3J0QWxsb2NhdG9yVGVzdCwgUmVzdHJpY3RJY2VDcmVkZW50aWFsc0NoYW5n
ZSkgeworICBTZXRDb25maWd1cmF0aW9uV2l0aFBvb2xTaXplKDEpOworICBFWFBFQ1RfRVEoMSwg
R2V0QWxsUG9vbGVkU2Vzc2lvbnNSZXR1cm5Db3VudCgpKTsKKyAgYWxsb2NhdG9yXy0+RGlzY2Fy
ZENhbmRpZGF0ZVBvb2woKTsKKworICAvLyBPbmx5IHJldHVybiBwb29sZWQgc2Vzc2lvbnMgd2l0
aCB0aGUgaWNlIGNyZWRlbnRpYWxzIHRoYXQKKyAgLy8gbWF0Y2ggdGhvc2UgcmVxdWVzdGVkIGlu
IFRha2VQb29sZWRTZXNzaW9uKCkuCisgIGFsbG9jYXRvcl8tPnNldF9yZXN0cmljdF9pY2VfY3Jl
ZGVudGlhbHNfY2hhbmdlKHRydWUpOworICBTZXRDb25maWd1cmF0aW9uV2l0aFBvb2xTaXplKDEp
OworICBFWFBFQ1RfRVEoMCwgR2V0QWxsUG9vbGVkU2Vzc2lvbnNSZXR1cm5Db3VudCgpKTsKKyAg
YWxsb2NhdG9yXy0+RGlzY2FyZENhbmRpZGF0ZVBvb2woKTsKKworICBTZXRDb25maWd1cmF0aW9u
V2l0aFBvb2xTaXplKDEpOworICBhdXRvIGNyZWRlbnRpYWxzID0gYWxsb2NhdG9yXy0+R2V0UG9v
bGVkSWNlQ3JlZGVudGlhbHMoKTsKKyAgQVNTRVJUX0VRKDF1LCBjcmVkZW50aWFscy5zaXplKCkp
OworICBFWFBFQ1RfRVEobnVsbHB0ciwKKyAgICAgICAgICAgIGFsbG9jYXRvcl8tPlRha2VQb29s
ZWRTZXNzaW9uKGtDb250ZW50TmFtZSwgMCwga0ljZVVmcmFnLCBrSWNlUHdkKSk7CisgIEVYUEVD
VF9ORShudWxscHRyLAorICAgICAgICAgICAgYWxsb2NhdG9yXy0+VGFrZVBvb2xlZFNlc3Npb24o
a0NvbnRlbnROYW1lLCAwLCBjcmVkZW50aWFsc1swXS51ZnJhZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzWzBdLnB3ZCkpOworICBFWFBFQ1Rf
RVEobnVsbHB0ciwKKyAgICAgICAgICAgIGFsbG9jYXRvcl8tPlRha2VQb29sZWRTZXNzaW9uKGtD
b250ZW50TmFtZSwgMCwgY3JlZGVudGlhbHNbMF0udWZyYWcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVkZW50aWFsc1swXS5wd2QpKTsKKyAgYWxsb2NhdG9y
Xy0+RGlzY2FyZENhbmRpZGF0ZVBvb2woKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcC5j
YwppbmRleCAxNjExMjJiNmQ1YzczODQyYjc3NTIxZmMxMWUyODZjNmQ4NTdjMGE5Li5jNzQyOTg1
ODRhZWUxYWYxYmIyMzgyZDk4Y2ZiMDAzY2RmMzc0MWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1ZG90Y3AuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNl
dWRvdGNwLmNjCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc29ja2V0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNp
bmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogLy8gVGhlIGZvbGxvd2luZyBsb2dnaW5n
IGlzIGZvciBkZXRhaWxlZCAocGFja2V0LWxldmVsKSBhbmFseXNpcyBvbmx5LgpAQCAtMTg2LDgg
KzE4NSw4IEBAIHZvaWQgUmVwb3J0U3RhdHMoKSB7CiAgIGNoYXIgYnVmZmVyWzI1Nl07CiAgIHNp
emVfdCBsZW4gPSAwOwogICBmb3IgKGludCBpID0gMDsgaSA8IFNfTlVNX1NUQVRTOyArK2kpIHsK
LSAgICBsZW4gKz0gcnRjOjpzcHJpbnRmbihidWZmZXIsIGFycmF5c2l6ZShidWZmZXIpLCAiJXMl
czolZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPT0gMCkgPyAiIiA6ICIs
IiwgU1RBVF9OQU1FU1tpXSwgZ19zdGF0c1tpXSk7CisgICAgbGVuICs9IHNucHJpbnRmKGJ1ZmZl
ciwgYXJyYXlzaXplKGJ1ZmZlciksICIlcyVzOiVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGkgPT0gMCkgPyAiIiA6ICIsIiwgU1RBVF9OQU1FU1tpXSwgZ19zdGF0c1tpXSk7CiAgICAg
Z19zdGF0c1tpXSA9IDA7CiAgIH0KICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU3RhdHNbIiA8PCBi
dWZmZXIgPDwgIl0iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNldWRvdGNwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1ZG90Y3AuaAppbmRleCBjMzYzZWY2NGI3
NGFmOWIxMjIzZmY3Y2E1MzMxNzlhZTgyYzFhY2I0Li41YjI2YWViMjFhNWJjZTQzNWExOTg1N2Nh
N2QwNTFmYWRkOTEzNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1ZG90Y3AuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1ZG90Y3AuaApAQCAtMTQsNiAr
MTQsNyBAQAogI2luY2x1ZGUgPGxpc3Q+CiAKICNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgY3Jp
Y2tldCB7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgSVBzZXVkb1RjcE5vdGlmeSB7CiAvLyBQ
c2V1ZG9UY3AKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotY2xhc3MgUHNldWRvVGNwIHsKK2NsYXNzIFJUQ19F
WFBPUlQgUHNldWRvVGNwIHsKICBwdWJsaWM6CiAgIHN0YXRpYyB1aW50MzJfdCBOb3coKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvcHNldWRvdGNwX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNldWRvdGNwX3VuaXR0ZXN0LmNjCmluZGV4IGRkODZm
OTIxZDUyZmFhMTU2OTJjYTIzYTI0OThlMGNhNzZmZTFmZjIuLjJmYzk5MDBjYmNjYTViMWZiZjQ5
NjBiYzE1ZWExYjg0OTBhODJhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcF91bml0dGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1ZG90
Y3BfdW5pdHRlc3QuY2MKQEAgLTE1LDggKzE1LDggQEAKICNpbmNsdWRlICJwMnAvYmFzZS9wc2V1
ZG90Y3AuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2hlbHBlcnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZW1vcnlfc3RyZWFtLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbWVzc2FnZWhhbmRsZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0u
aCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1l
dXRpbHMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0LmNjCmluZGV4IGZiODMwY2U2NmE5
NDNjZDI0OWRkYTQwYWQyOGU5ZGNlNGJhYTM4ZjAuLmIxYjkyNGI4MDI3NGMzOTQyNDJmY2U1ZGEz
NTlkNDYzMmQ2Mzk4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXBvcnQuY2MKQEAgLTEzOSw3
ICsxMzksNyBAQCBjbGFzcyBSZWxheUVudHJ5IDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIs
IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpOwogCiAgIHZvaWQg
T25TZW50UGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpTZW50UGFja2V0JiBzZW50X3BhY2tldCk7CkBAIC0zOTcsOSAr
Mzk3LDkgQEAgdm9pZCBSZWxheVBvcnQ6Ok9uUmVhZFBhY2tldChjb25zdCBjaGFyKiBkYXRhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIHByb3RvLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsK
ICAgaWYgKENvbm5lY3Rpb24qIGNvbm4gPSBHZXRDb25uZWN0aW9uKHJlbW90ZV9hZGRyKSkgewot
ICAgIGNvbm4tPk9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBwYWNrZXRfdGltZSk7CisgICAgY29u
bi0+T25SZWFkUGFja2V0KGRhdGEsIHNpemUsIHBhY2tldF90aW1lX3VzKTsKICAgfSBlbHNlIHsK
ICAgICBQb3J0OjpPblJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsIHByb3RvKTsK
ICAgfQpAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgUmVsYXlFbnRyeTo6T25SZWFkUGFja2V0KHJ0
Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0
QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cykgewogICAvLyBSVENfRENIRUNL
KHJlbW90ZV9hZGRyID09IHBvcnRfLT5zZXJ2ZXJfYWRkcigpKTsKICAgLy8gVE9ETyg/KTogYXJl
IHdlIHdvcnJpZWQgYWJvdXQgdGhpcz8KIApAQCAtNzAwLDcgKzcwMCw3IEBAIHZvaWQgUmVsYXlF
bnRyeTo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgLy8g
YnkgdGhlIHNlcnZlciwgIFRoZSBhY3R1YWwgcmVtb3RlIGFkZHJlc3MgaXMgdGhlIG9uZSB3ZSBy
ZWNvcmRlZC4KICAgaWYgKCFwb3J0Xy0+SGFzTWFnaWNDb29raWUoZGF0YSwgc2l6ZSkpIHsKICAg
ICBpZiAobG9ja2VkXykgewotICAgICAgcG9ydF8tPk9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBl
eHRfYWRkcl8sIFBST1RPX1VEUCwgcGFja2V0X3RpbWUpOworICAgICAgcG9ydF8tPk9uUmVhZFBh
Y2tldChkYXRhLCBzaXplLCBleHRfYWRkcl8sIFBST1RPX1VEUCwgcGFja2V0X3RpbWVfdXMpOwog
ICAgIH0gZWxzZSB7CiAgICAgICBSVENfTE9HKFdBUk5JTkcpIDw8ICJEcm9wcGluZyBwYWNrZXQ6
IGVudHJ5IG5vdCBsb2NrZWQiOwogICAgIH0KQEAgLTc1Myw3ICs3NTMsNyBAQCB2b2lkIFJlbGF5
RW50cnk6Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAKICAg
Ly8gUHJvY2VzcyB0aGUgYWN0dWFsIGRhdGEgYW5kIHJlbW90ZSBhZGRyZXNzIGluIHRoZSBub3Jt
YWwgbWFubmVyLgogICBwb3J0Xy0+T25SZWFkUGFja2V0KGRhdGFfYXR0ci0+Ynl0ZXMoKSwgZGF0
YV9hdHRyLT5sZW5ndGgoKSwgcmVtb3RlX2FkZHIyLAotICAgICAgICAgICAgICAgICAgICAgIFBS
T1RPX1VEUCwgcGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAgICAgICAgIFBST1RPX1VEUCwg
cGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIFJlbGF5RW50cnk6Ok9uU2VudFBhY2tldChydGM6
OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXBvcnQuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydC5oCmlu
ZGV4IDQ4YTkzOWUwY2ZkMTBlOGY3YjJmZGZmN2FkY2RjMzAxM2NkNTRkYmIuLjU5ODlmNzZlODFm
NWY2NjRmYzFkOGM2Mzc4ODM4MTM3OTE4OTM4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5cG9y
dC5oCkBAIC0xMiwxMCArMTIsMTIgQEAKICNkZWZpbmUgUDJQX0JBU0VfUkVMQVlQT1JUX0hfCiAK
ICNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvcG9ydC5oIgogI2luY2x1ZGUgInAy
cC9iYXNlL3N0dW5yZXF1ZXN0LmgiCiAKQEAgLTM1LDE1ICszNywxNiBAQCBjbGFzcyBSZWxheVBv
cnQgOiBwdWJsaWMgUG9ydCB7CiAgIHR5cGVkZWYgc3RkOjpwYWlyPHJ0Yzo6U29ja2V0OjpPcHRp
b24sIGludD4gT3B0aW9uVmFsdWU7CiAKICAgLy8gUmVsYXlQb3J0IGRvZXNuJ3QgeWV0IGRvIGFu
eXRoaW5nIGZhbmN5IGluIHRoZSBjdG9yLgotICBzdGF0aWMgUmVsYXlQb3J0KiBDcmVhdGUocnRj
OjpUaHJlYWQqIHRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0
U29ja2V0RmFjdG9yeSogZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6
TmV0d29yayogbmV0d29yaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1p
bl9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWF4X3BvcnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQpIHsK
LSAgICByZXR1cm4gbmV3IFJlbGF5UG9ydCh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIG1pbl9w
b3J0LCBtYXhfcG9ydCwgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dv
cmQpOworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbGF5UG9ydD4gQ3JlYXRlKHJ0Yzo6VGhy
ZWFkKiB0aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtaW5fcG9ydCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtYXhfcG9ydCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkKSB7CisgICAgLy8gVXNpbmcgYG5ld2AgdG8g
YWNjZXNzIGEgbm9uLXB1YmxpYyBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gYWJzbDo6V3JhcFVu
aXF1ZShuZXcgUmVsYXlQb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgbWluX3BvcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfcG9ydCwgdXNlcm5h
bWUsIHBhc3N3b3JkKSk7CiAgIH0KICAgflJlbGF5UG9ydCgpIG92ZXJyaWRlOwogCkBAIC05Miw3
ICs5NSw3IEBAIGNsYXNzIFJlbGF5UG9ydCA6IHB1YmxpYyBQb3J0IHsKICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0
QWRkcmVzcyYgcmVtb3RlX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBw
cm90bywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRf
dGltZSk7CisgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpOwogCiAg
IC8vIFRoZSBPblNlbnRQYWNrZXQgY2FsbGJhY2sgaXMgbGVmdCBlbXB0eSBoZXJlIHNpbmNlIHRo
ZXkgYXJlIGhhbmRsZWQgYnkKICAgLy8gUmVsYXlFbnRyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydF91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3JlbGF5cG9ydF91bml0dGVzdC5jYwppbmRleCBlNmU5MjJmZGFmNzdmZWE3ZDA0NDM0NzRh
NzM5MmUwZDA2YmFkZmZmLi4xY2E2OWY0ZWY5NmNlMjBiZjk4ZWFjMzdmMDI2M2U2MGUxNDRlMWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9yZWxheXBvcnRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0X3VuaXR0ZXN0LmNjCkBAIC02
MiwxMCArNjIsMTAgQEAgY2xhc3MgUmVsYXlQb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICB9CiAKICAgdm9pZCBPblJlYWRQYWNr
ZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAotICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBkYXRhLAotICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiBkYXRhICovLAorICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgLyogc2l6ZSAqLywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpTb2NrZXRBZGRyZXNzJiAvKiByZW1vdGVfYWRkciAqLywKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAgICByZWNlaXZlZF9wYWNr
ZXRfY291bnRfW3NvY2tldF0rKzsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXNlcnZlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5c2VydmVy
LmNjCmluZGV4IDhlMTdhNzlkYjhkNDQ0ZDU2YzMzZGZmZmM3NDhjZTZiZWE0M2JiZGUuLmFkNmI0
ODcyODJlMTQ4YzA5Mjc0NTdjN2RlMTkwMTNlZGY1Yjg0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5c2VydmVyLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3JlbGF5c2VydmVyLmNjCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBSZWxheVNlcnZlcjo6QWRk
SW50ZXJuYWxTb2NrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0KSB7CiB9CiAKIHZv
aWQgUmVsYXlTZXJ2ZXI6OlJlbW92ZUludGVybmFsU29ja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2Nr
ZXQqIHNvY2tldCkgewotICBTb2NrZXRMaXN0OjppdGVyYXRvciBpdGVyID0KKyAgYXV0byBpdGVy
ID0KICAgICAgIHN0ZDo6ZmluZChpbnRlcm5hbF9zb2NrZXRzXy5iZWdpbigpLCBpbnRlcm5hbF9z
b2NrZXRzXy5lbmQoKSwgc29ja2V0KTsKICAgUlRDX0RDSEVDSyhpdGVyICE9IGludGVybmFsX3Nv
Y2tldHNfLmVuZCgpKTsKICAgaW50ZXJuYWxfc29ja2V0c18uZXJhc2UoaXRlcik7CkBAIC0xMzIs
NyArMTMyLDcgQEAgdm9pZCBSZWxheVNlcnZlcjo6QWRkRXh0ZXJuYWxTb2NrZXQocnRjOjpBc3lu
Y1BhY2tldFNvY2tldCogc29ja2V0KSB7CiB9CiAKIHZvaWQgUmVsYXlTZXJ2ZXI6OlJlbW92ZUV4
dGVybmFsU29ja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCkgewotICBTb2NrZXRM
aXN0OjppdGVyYXRvciBpdGVyID0KKyAgYXV0byBpdGVyID0KICAgICAgIHN0ZDo6ZmluZChleHRl
cm5hbF9zb2NrZXRzXy5iZWdpbigpLCBleHRlcm5hbF9zb2NrZXRzXy5lbmQoKSwgc29ja2V0KTsK
ICAgUlRDX0RDSEVDSyhpdGVyICE9IGV4dGVybmFsX3NvY2tldHNfLmVuZCgpKTsKICAgZXh0ZXJu
YWxfc29ja2V0c18uZXJhc2UoaXRlcik7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBSZWxheVNl
cnZlcjo6QWRkSW50ZXJuYWxTZXJ2ZXJTb2NrZXQocnRjOjpBc3luY1NvY2tldCogc29ja2V0LAog
fQogCiB2b2lkIFJlbGF5U2VydmVyOjpSZW1vdmVJbnRlcm5hbFNlcnZlclNvY2tldChydGM6OkFz
eW5jU29ja2V0KiBzb2NrZXQpIHsKLSAgU2VydmVyU29ja2V0TWFwOjppdGVyYXRvciBpdGVyID0g
c2VydmVyX3NvY2tldHNfLmZpbmQoc29ja2V0KTsKKyAgYXV0byBpdGVyID0gc2VydmVyX3NvY2tl
dHNfLmZpbmQoc29ja2V0KTsKICAgUlRDX0RDSEVDSyhpdGVyICE9IHNlcnZlcl9zb2NrZXRzXy5l
bmQoKSk7CiAgIHNlcnZlcl9zb2NrZXRzXy5lcmFzZShpdGVyKTsKICAgc29ja2V0LT5TaWduYWxS
ZWFkRXZlbnQuZGlzY29ubmVjdCh0aGlzKTsKQEAgLTE2MCwxMCArMTYwLDkgQEAgaW50IFJlbGF5
U2VydmVyOjpHZXRDb25uZWN0aW9uQ291bnQoKSBjb25zdCB7CiAKIHJ0Yzo6U29ja2V0QWRkcmVz
c1BhaXIgUmVsYXlTZXJ2ZXI6OkdldENvbm5lY3Rpb24oaW50IGNvbm5lY3Rpb24pIGNvbnN0IHsK
ICAgaW50IGkgPSAwOwotICBmb3IgKENvbm5lY3Rpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
Y29ubmVjdGlvbnNfLmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gY29ubmVjdGlvbnNfLmVuZCgpOyAr
K2l0KSB7CisgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBjb25uZWN0aW9uc18pIHsKICAgICBp
ZiAoaSA9PSBjb25uZWN0aW9uKSB7Ci0gICAgICByZXR1cm4gaXQtPnNlY29uZC0+YWRkcl9wYWly
KCk7CisgICAgICByZXR1cm4gZW50cnkuc2Vjb25kLT5hZGRyX3BhaXIoKTsKICAgICB9CiAgICAg
KytpOwogICB9CkBAIC0xNzEsOSArMTcwLDggQEAgcnRjOjpTb2NrZXRBZGRyZXNzUGFpciBSZWxh
eVNlcnZlcjo6R2V0Q29ubmVjdGlvbihpbnQgY29ubmVjdGlvbikgY29uc3QgewogfQogCiBib29s
IFJlbGF5U2VydmVyOjpIYXNDb25uZWN0aW9uKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRk
cmVzcykgY29uc3QgewotICBmb3IgKENvbm5lY3Rpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
Y29ubmVjdGlvbnNfLmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gY29ubmVjdGlvbnNfLmVuZCgpOyAr
K2l0KSB7Ci0gICAgaWYgKGl0LT5zZWNvbmQtPmFkZHJfcGFpcigpLmRlc3RpbmF0aW9uKCkgPT0g
YWRkcmVzcykgeworICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogY29ubmVjdGlvbnNfKSB7Cisg
ICAgaWYgKGVudHJ5LnNlY29uZC0+YWRkcl9wYWlyKCkuZGVzdGluYXRpb24oKSA9PSBhZGRyZXNz
KSB7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgIH0KQEAgLTE4OSwxNCArMTg3LDE0IEBA
IHZvaWQgUmVsYXlTZXJ2ZXI6Ok9uSW50ZXJuYWxQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tl
dCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRk
cmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAg
Ly8gR2V0IHRoZSBhZGRyZXNzIG9mIHRoZSBjb25uZWN0aW9uIHdlIGp1c3QgcmVjZWl2ZWQgb24u
CiAgIHJ0Yzo6U29ja2V0QWRkcmVzc1BhaXIgYXAocmVtb3RlX2FkZHIsIHNvY2tldC0+R2V0TG9j
YWxBZGRyZXNzKCkpOwogICBSVENfRENIRUNLKCFhcC5kZXN0aW5hdGlvbigpLklzTmlsKCkpOwog
CiAgIC8vIElmIHRoaXMgZGlkIG5vdCBjb21lIGZyb20gYW4gZXhpc3RpbmcgY29ubmVjdGlvbiwg
aXQgc2hvdWxkIGJlIGEgU1RVTgogICAvLyBhbGxvY2F0ZSByZXF1ZXN0LgotICBDb25uZWN0aW9u
TWFwOjppdGVyYXRvciBwaXRlciA9IGNvbm5lY3Rpb25zXy5maW5kKGFwKTsKKyAgYXV0byBwaXRl
ciA9IGNvbm5lY3Rpb25zXy5maW5kKGFwKTsKICAgaWYgKHBpdGVyID09IGNvbm5lY3Rpb25zXy5l
bmQoKSkgewogICAgIEhhbmRsZVN0dW5BbGxvY2F0ZShieXRlcywgc2l6ZSwgYXAsIHNvY2tldCk7
CiAgICAgcmV0dXJuOwpAQCAtMjM0LDEzICsyMzIsMTMgQEAgdm9pZCBSZWxheVNlcnZlcjo6T25F
eHRlcm5hbFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ5dGVzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBw
YWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLykgewogICAvLyBHZXQgdGhlIGFkZHJlc3Mgb2Yg
dGhlIGNvbm5lY3Rpb24gd2UganVzdCByZWNlaXZlZCBvbi4KICAgcnRjOjpTb2NrZXRBZGRyZXNz
UGFpciBhcChyZW1vdGVfYWRkciwgc29ja2V0LT5HZXRMb2NhbEFkZHJlc3MoKSk7CiAgIFJUQ19E
Q0hFQ0soIWFwLmRlc3RpbmF0aW9uKCkuSXNOaWwoKSk7CiAKICAgLy8gSWYgdGhpcyBjb25uZWN0
aW9uIGFscmVhZHkgZXhpc3RzLCB0aGVuIGZvcndhcmQgdGhlIHRyYWZmaWMuCi0gIENvbm5lY3Rp
b25NYXA6Oml0ZXJhdG9yIHBpdGVyID0gY29ubmVjdGlvbnNfLmZpbmQoYXApOworICBhdXRvIHBp
dGVyID0gY29ubmVjdGlvbnNfLmZpbmQoYXApOwogICBpZiAocGl0ZXIgIT0gY29ubmVjdGlvbnNf
LmVuZCgpKSB7CiAgICAgLy8gVE9ETyg/KTogQ2hlY2sgdGhlIEhNQUMuCiAgICAgUmVsYXlTZXJ2
ZXJDb25uZWN0aW9uKiBleHRfY29ubiA9IHBpdGVyLT5zZWNvbmQ7CkBAIC0yNzYsNyArMjc0LDcg
QEAgdm9pZCBSZWxheVNlcnZlcjo6T25FeHRlcm5hbFBhY2tldChydGM6OkFzeW5jUGFja2V0U29j
a2V0KiBzb2NrZXQsCiAgIC8vIFRPRE8oPyk6IENoZWNrIHRoZSBITUFDLgogCiAgIC8vIFRoZSBi
aW5kaW5nIHNob3VsZCBhbHJlYWR5IGJlIHByZXNlbnQuCi0gIEJpbmRpbmdNYXA6Oml0ZXJhdG9y
IGJpdGVyID0gYmluZGluZ3NfLmZpbmQodXNlcm5hbWUpOworICBhdXRvIGJpdGVyID0gYmluZGlu
Z3NfLmZpbmQodXNlcm5hbWUpOwogICBpZiAoYml0ZXIgPT0gYmluZGluZ3NfLmVuZCgpKSB7CiAg
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRHJvcHBpbmcgcGFja2V0OiBubyBiaW5kaW5nIHdp
dGggdXNlcm5hbWUiOwogICAgIHJldHVybjsKQEAgLTM1MSw3ICszNDksNyBAQCB2b2lkIFJlbGF5
U2VydmVyOjpIYW5kbGVTdHVuQWxsb2NhdGUoY29uc3QgY2hhciogYnl0ZXMsCiAKICAgUmVsYXlT
ZXJ2ZXJCaW5kaW5nKiBiaW5kaW5nOwogCi0gIEJpbmRpbmdNYXA6Oml0ZXJhdG9yIGJpdGVyID0g
YmluZGluZ3NfLmZpbmQodXNlcm5hbWUpOworICBhdXRvIGJpdGVyID0gYmluZGluZ3NfLmZpbmQo
dXNlcm5hbWUpOwogICBpZiAoYml0ZXIgIT0gYmluZGluZ3NfLmVuZCgpKSB7CiAgICAgYmluZGlu
ZyA9IGJpdGVyLT5zZWNvbmQ7CiAgIH0gZWxzZSB7CkBAIC01MTQsMTMgKzUxMiwxMyBAQCB2b2lk
IFJlbGF5U2VydmVyOjpBZGRDb25uZWN0aW9uKFJlbGF5U2VydmVyQ29ubmVjdGlvbiogY29ubikg
ewogfQogCiB2b2lkIFJlbGF5U2VydmVyOjpSZW1vdmVDb25uZWN0aW9uKFJlbGF5U2VydmVyQ29u
bmVjdGlvbiogY29ubikgewotICBDb25uZWN0aW9uTWFwOjppdGVyYXRvciBpdGVyID0gY29ubmVj
dGlvbnNfLmZpbmQoY29ubi0+YWRkcl9wYWlyKCkpOworICBhdXRvIGl0ZXIgPSBjb25uZWN0aW9u
c18uZmluZChjb25uLT5hZGRyX3BhaXIoKSk7CiAgIFJUQ19EQ0hFQ0soaXRlciAhPSBjb25uZWN0
aW9uc18uZW5kKCkpOwogICBjb25uZWN0aW9uc18uZXJhc2UoaXRlcik7CiB9CiAKIHZvaWQgUmVs
YXlTZXJ2ZXI6OlJlbW92ZUJpbmRpbmcoUmVsYXlTZXJ2ZXJCaW5kaW5nKiBiaW5kaW5nKSB7Ci0g
IEJpbmRpbmdNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBiaW5kaW5nc18uZmluZChiaW5kaW5nLT51c2Vy
bmFtZSgpKTsKKyAgYXV0byBpdGVyID0gYmluZGluZ3NfLmZpbmQoYmluZGluZy0+dXNlcm5hbWUo
KSk7CiAgIFJUQ19EQ0hFQ0soaXRlciAhPSBiaW5kaW5nc18uZW5kKCkpOwogICBiaW5kaW5nc18u
ZXJhc2UoaXRlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5c2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXNlcnZlci5oCmluZGV4IGM3NjYx
MjA0ZjgxOTkwOTkwNjRiYmNiYjEzZWY0NzBlZDNhZTI1YjMuLjViYTVlMDY1YTg2ODEyMDU4MjIz
ZWZjYTUxODhjNjJjOThhNzllMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5c2VydmVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlzZXJ2ZXIuaApA
QCAtNjgsMzMgKzY4LDI3IEBAIGNsYXNzIFJlbGF5U2VydmVyIDogcHVibGljIHJ0Yzo6TWVzc2Fn
ZUhhbmRsZXIsIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIGJvb2wgSGFzQ29ubmVj
dGlvbihjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MpIGNvbnN0OwogCiAgcHJpdmF0
ZToKLSAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxydGM6OkFzeW5jUGFja2V0U29ja2V0Kj4gU29ja2V0
TGlzdDsKLSAgdHlwZWRlZiBzdGQ6Om1hcDxydGM6OkFzeW5jU29ja2V0KiwgY3JpY2tldDo6UHJv
dG9jb2xUeXBlPiBTZXJ2ZXJTb2NrZXRNYXA7Ci0gIHR5cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJp
bmcsIFJlbGF5U2VydmVyQmluZGluZyo+IEJpbmRpbmdNYXA7Ci0gIHR5cGVkZWYgc3RkOjptYXA8
cnRjOjpTb2NrZXRBZGRyZXNzUGFpciwgUmVsYXlTZXJ2ZXJDb25uZWN0aW9uKj4KLSAgICAgIENv
bm5lY3Rpb25NYXA7Ci0KICAgcnRjOjpUaHJlYWQqIHRocmVhZF87CiAgIHdlYnJ0Yzo6UmFuZG9t
IHJhbmRvbV87CiAgIGJvb2wgbG9nX2JpbmRpbmdzXzsKLSAgU29ja2V0TGlzdCBpbnRlcm5hbF9z
b2NrZXRzXzsKLSAgU29ja2V0TGlzdCBleHRlcm5hbF9zb2NrZXRzXzsKLSAgU29ja2V0TGlzdCBy
ZW1vdmVkX3NvY2tldHNfOwotICBTZXJ2ZXJTb2NrZXRNYXAgc2VydmVyX3NvY2tldHNfOwotICBC
aW5kaW5nTWFwIGJpbmRpbmdzXzsKLSAgQ29ubmVjdGlvbk1hcCBjb25uZWN0aW9uc187CisgIHN0
ZDo6dmVjdG9yPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqPiBpbnRlcm5hbF9zb2NrZXRzXzsKKyAg
c3RkOjp2ZWN0b3I8cnRjOjpBc3luY1BhY2tldFNvY2tldCo+IGV4dGVybmFsX3NvY2tldHNfOwor
ICBzdGQ6OnZlY3RvcjxydGM6OkFzeW5jUGFja2V0U29ja2V0Kj4gcmVtb3ZlZF9zb2NrZXRzXzsK
KyAgc3RkOjptYXA8cnRjOjpBc3luY1NvY2tldCosIGNyaWNrZXQ6OlByb3RvY29sVHlwZT4gc2Vy
dmVyX3NvY2tldHNfOworICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgUmVsYXlTZXJ2ZXJCaW5kaW5n
Kj4gYmluZGluZ3NfOworICBzdGQ6Om1hcDxydGM6OlNvY2tldEFkZHJlc3NQYWlyLCBSZWxheVNl
cnZlckNvbm5lY3Rpb24qPiBjb25uZWN0aW9uc187CiAKICAgLy8gQ2FsbGVkIHdoZW4gYSBwYWNr
ZXQgaXMgcmVjZWl2ZWQgYnkgdGhlIHNlcnZlciBvbiBvbmUgb2YgaXRzIHNvY2tldHMuCiAgIHZv
aWQgT25JbnRlcm5hbFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBieXRlcywKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpT
b2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpOwogICB2b2lkIE9uRXh0ZXJuYWxQYWNrZXQo
cnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3Rl
X2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBh
Y2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tl
dF90aW1lX3VzKTsKIAogICB2b2lkIE9uUmVhZEV2ZW50KHJ0Yzo6QXN5bmNTb2NrZXQqIHNvY2tl
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL3N0dW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9zdHVuLmNjCmluZGV4IGNjOWZiNGU0YzA5MGMzM2I1N2M5OTliYWRm
MDY5NjgxMmI3N2I5NDIuLmZhNmI2ZjgzMmUwODU3NWE5OGEzMjBmODE1ZjI2MGIwNTBhYWNjZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3N0dW4uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2Uvc3R1bi5jYwpAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgInJ0Y19i
YXNlL2NyYzMyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUu
aCIKIAogdXNpbmcgcnRjOjpCeXRlQnVmZmVyUmVhZGVyOwogdXNpbmcgcnRjOjpCeXRlQnVmZmVy
V3JpdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2Uvc3R1bnBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVucG9ydC5jYwppbmRleCBjNjBiZjkyZWI0OTIwYzNk
ZWZkYzJjNTFkNjAwMjlmMmNjZWYzZTJmLi43MjczMTIzMjllZTRkMDk5NjdiZTcxN2RkOGI2NDBj
OTk4NzAwZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9zdHVucG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVucG9ydC5jYwpAQCAtMzE5LDkgKzMxOSw5
IEBAIGJvb2wgVURQUG9ydDo6SGFuZGxlSW5jb21pbmdQYWNrZXQocnRjOjpBc3luY1BhY2tldFNv
Y2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRB
ZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIC8vIEFsbCBwYWNr
ZXRzIGdpdmVuIHRvIFVEUCBwb3J0IHdpbGwgYmUgY29uc3VtZWQuCi0gIE9uUmVhZFBhY2tldChz
b2NrZXQsIGRhdGEsIHNpemUsIHJlbW90ZV9hZGRyLCBwYWNrZXRfdGltZSk7CisgIE9uUmVhZFBh
Y2tldChzb2NrZXQsIGRhdGEsIHNpemUsIHJlbW90ZV9hZGRyLCBwYWNrZXRfdGltZV91cyk7CiAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0zNTgsMTEgKzM1OCwxNSBAQCB2b2lkIFVEUFBvcnQ6Ok9u
TG9jYWxBZGRyZXNzUmVhZHkocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICBNYXli
ZVByZXBhcmVTdHVuQ2FuZGlkYXRlKCk7CiB9CiAKK3ZvaWQgVURQUG9ydDo6UG9zdEFkZEFkZHJl
c3MoYm9vbCBpc19maW5hbCkgeworICBNYXliZVNldFBvcnRDb21wbGV0ZU9yRXJyb3IoKTsKK30K
Kwogdm9pZCBVRFBQb3J0OjpPblJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29j
a2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKSB7
CiAgIFJUQ19EQ0hFQ0soc29ja2V0ID09IHNvY2tldF8pOwogICBSVENfRENIRUNLKCFyZW1vdGVf
YWRkci5Jc1VucmVzb2x2ZWRJUCgpKTsKIApAQCAtMzc2LDcgKzM4MCw3IEBAIHZvaWQgVURQUG9y
dDo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgfQogCiAg
IGlmIChDb25uZWN0aW9uKiBjb25uID0gR2V0Q29ubmVjdGlvbihyZW1vdGVfYWRkcikpIHsKLSAg
ICBjb25uLT5PblJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWUpOworICAgIGNvbm4t
Pk9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBwYWNrZXRfdGltZV91cyk7CiAgIH0gZWxzZSB7CiAg
ICAgUG9ydDo6T25SZWFkUGFja2V0KGRhdGEsIHNpemUsIHJlbW90ZV9hZGRyLCBQUk9UT19VRFAp
OwogICB9CkBAIC01MTcsOCArNTIxLDE0IEBAIHZvaWQgVURQUG9ydDo6T25TdHVuQmluZGluZ09y
UmVzb2x2ZVJlcXVlc3RGYWlsZWQoCiB9CiAKIHZvaWQgVURQUG9ydDo6TWF5YmVTZXRQb3J0Q29t
cGxldGVPckVycm9yKCkgewotICBpZiAocmVhZHlfKQorICBpZiAobWRuc19uYW1lX3JlZ2lzdHJh
dGlvbl9zdGF0dXMoKSA9PQorICAgICAgTWRuc05hbWVSZWdpc3RyYXRpb25TdGF0dXM6OmtJblBy
b2dyZXNzKSB7CiAgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHJlYWR5XykgeworICAgIHJldHVy
bjsKKyAgfQogCiAgIC8vIERvIG5vdCBzZXQgcG9ydCByZWFkeSBpZiB3ZSBhcmUgc3RpbGwgd2Fp
dGluZyBmb3IgYmluZCByZXNwb25zZXMuCiAgIGNvbnN0IHNpemVfdCBzZXJ2ZXJzX2RvbmVfYmlu
ZF9yZXF1ZXN0ID0KQEAgLTU2MywyMiArNTczLDI0IEBAIGJvb2wgVURQUG9ydDo6SGFzQ2FuZGlk
YXRlV2l0aEFkZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyKSBjb25zdCB7CiAg
IHJldHVybiBmYWxzZTsKIH0KIAotU3R1blBvcnQqIFN0dW5Qb3J0OjpDcmVhdGUocnRjOjpUaHJl
YWQqIHRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0
RmFjdG9yeSogZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29y
ayogbmV0d29yaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1pbl9wb3J0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWF4X3BvcnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTZXJ2ZXJBZGRyZXNzZXMmIHNlcnZlcnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzdHVuX2tlZXBhbGl2ZV9p
bnRlcnZhbCkgewotICBTdHVuUG9ydCogcG9ydCA9IG5ldyBTdHVuUG9ydCh0aHJlYWQsIGZhY3Rv
cnksIG5ldHdvcmssIG1pbl9wb3J0LCBtYXhfcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXNlcm5hbWUsIHBhc3N3b3JkLCBzZXJ2ZXJzLCBvcmlnaW4pOworc3RkOjp1bmlx
dWVfcHRyPFN0dW5Qb3J0PiBTdHVuUG9ydDo6Q3JlYXRlKAorICAgIHJ0Yzo6VGhyZWFkKiB0aHJl
YWQsCisgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAorICAgIHJ0Yzo6TmV0
d29yayogbmV0d29yaywKKyAgICB1aW50MTZfdCBtaW5fcG9ydCwKKyAgICB1aW50MTZfdCBtYXhf
cG9ydCwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHBhc3N3b3JkLAorICAgIGNvbnN0IFNlcnZlckFkZHJlc3NlcyYgc2VydmVycywKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAorICAgIGFic2w6Om9wdGlvbmFsPGludD4gc3R1
bl9rZWVwYWxpdmVfaW50ZXJ2YWwpIHsKKyAgLy8gVXNpbmcgYG5ld2AgdG8gYWNjZXNzIGEgbm9u
LXB1YmxpYyBjb25zdHJ1Y3Rvci4KKyAgYXV0byBwb3J0ID0gYWJzbDo6V3JhcFVuaXF1ZShuZXcg
U3R1blBvcnQodGhyZWFkLCBmYWN0b3J5LCBuZXR3b3JrLCBtaW5fcG9ydCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3BvcnQsIHVzZXJuYW1lLCBwYXNz
d29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy
cywgb3JpZ2luKSk7CiAgIHBvcnQtPnNldF9zdHVuX2tlZXBhbGl2ZV9kZWxheShzdHVuX2tlZXBh
bGl2ZV9pbnRlcnZhbCk7CiAgIGlmICghcG9ydC0+SW5pdCgpKSB7Ci0gICAgZGVsZXRlIHBvcnQ7
Ci0gICAgcG9ydCA9IE5VTEw7CisgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KICAgcmV0dXJuIHBv
cnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS9zdHVucG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnBvcnQuaAppbmRleCA1ZTM5NzgzNWRiZWI2NTE4NjY5
ZmQzODc0MjdjZWFmOTc0ZTRmZTkwLi5jYTQzY2JjOGM0ODNkMDc0OTE5M2M2YjFlNDQ4OTQxNjBk
NGNmZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS9zdHVucG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5wb3J0LmgKQEAgLTE1LDYgKzE1LDcgQEAKICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAiYWJzbC9tZW1v
cnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvcG9ydC5oIgogI2luY2x1ZGUgInAycC9i
YXNlL3N0dW5yZXF1ZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQu
aCIKQEAgLTM1LDQyICszNiw0NSBAQCBzdGF0aWMgY29uc3QgaW50IEhJR0hfQ09TVF9QT1JUX0tF
RVBBTElWRV9MSUZFVElNRSA9IDIgKiA2MCAqIDEwMDA7CiAvLyBDb21tdW5pY2F0ZXMgdXNpbmcg
dGhlIGFkZHJlc3Mgb24gdGhlIG91dHNpZGUgb2YgYSBOQVQuCiBjbGFzcyBVRFBQb3J0IDogcHVi
bGljIFBvcnQgewogIHB1YmxpYzoKLSAgc3RhdGljIFVEUFBvcnQqIENyZWF0ZShydGM6OlRocmVh
ZCogdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFj
dG9yeSogZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBydGM6Ok5ldHdvcmsqIG5l
dHdvcmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBc3luY1BhY2tldFNvY2tldCog
c29ja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2Vy
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dv
cmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9yaWdpbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVtaXRfbG9jYWxfZm9yX2FueWFkZHJlc3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzdHVuX2tlZXBh
bGl2ZV9pbnRlcnZhbCkgewotICAgIFVEUFBvcnQqIHBvcnQgPSBuZXcgVURQUG9ydCh0aHJlYWQs
IGZhY3RvcnksIG5ldHdvcmssIHNvY2tldCwgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhc3N3b3JkLCBvcmlnaW4sIGVtaXRfbG9jYWxfZm9yX2FueWFkZHJlc3Mp
OworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFVEUFBvcnQ+IENyZWF0ZSgKKyAgICAgIHJ0Yzo6
VGhyZWFkKiB0aHJlYWQsCisgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3Rvcnks
CisgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdvcmssCisgICAgICBydGM6OkFzeW5jUGFja2V0U29j
a2V0KiBzb2NrZXQsCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQsCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3Jp
Z2luLAorICAgICAgYm9vbCBlbWl0X2xvY2FsX2Zvcl9hbnlhZGRyZXNzLAorICAgICAgYWJzbDo6
b3B0aW9uYWw8aW50PiBzdHVuX2tlZXBhbGl2ZV9pbnRlcnZhbCkgeworICAgIC8vIFVzaW5nIGBu
ZXdgIHRvIGFjY2VzcyBhIG5vbi1wdWJsaWMgY29uc3RydWN0b3IuCisgICAgYXV0byBwb3J0ID0g
YWJzbDo6V3JhcFVuaXF1ZShuZXcgVURQUG9ydCh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIHNv
Y2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJu
YW1lLCBwYXNzd29yZCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW1pdF9sb2NhbF9mb3JfYW55YWRkcmVzcykpOwogICAgIHBvcnQtPnNldF9z
dHVuX2tlZXBhbGl2ZV9kZWxheShzdHVuX2tlZXBhbGl2ZV9pbnRlcnZhbCk7CiAgICAgaWYgKCFw
b3J0LT5Jbml0KCkpIHsKLSAgICAgIGRlbGV0ZSBwb3J0OwotICAgICAgcG9ydCA9IE5VTEw7Cisg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIHBvcnQ7CiAgIH0KIAotICBz
dGF0aWMgVURQUG9ydCogQ3JlYXRlKHJ0Yzo6VGhyZWFkKiB0aHJlYWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MTZfdCBtaW5fcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MTZfdCBtYXhfcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHBhc3N3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBv
cmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbWl0X2xvY2FsX2Zvcl9hbnlh
ZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGludD4gc3R1
bl9rZWVwYWxpdmVfaW50ZXJ2YWwpIHsKLSAgICBVRFBQb3J0KiBwb3J0ID0KKyAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxVRFBQb3J0PiBDcmVhdGUoCisgICAgICBydGM6OlRocmVhZCogdGhyZWFk
LAorICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAorICAgICAgcnRjOjpO
ZXR3b3JrKiBuZXR3b3JrLAorICAgICAgdWludDE2X3QgbWluX3BvcnQsCisgICAgICB1aW50MTZf
dCBtYXhfcG9ydCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKKyAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmln
aW4sCisgICAgICBib29sIGVtaXRfbG9jYWxfZm9yX2FueWFkZHJlc3MsCisgICAgICBhYnNsOjpv
cHRpb25hbDxpbnQ+IHN0dW5fa2VlcGFsaXZlX2ludGVydmFsKSB7CisgICAgLy8gVXNpbmcgYG5l
d2AgdG8gYWNjZXNzIGEgbm9uLXB1YmxpYyBjb25zdHJ1Y3Rvci4KKyAgICBhdXRvIHBvcnQgPSBh
YnNsOjpXcmFwVW5pcXVlKAogICAgICAgICBuZXcgVURQUG9ydCh0aHJlYWQsIGZhY3RvcnksIG5l
dHdvcmssIG1pbl9wb3J0LCBtYXhfcG9ydCwgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAg
IHBhc3N3b3JkLCBvcmlnaW4sIGVtaXRfbG9jYWxfZm9yX2FueWFkZHJlc3MpOworICAgICAgICAg
ICAgICAgICAgICBwYXNzd29yZCwgb3JpZ2luLCBlbWl0X2xvY2FsX2Zvcl9hbnlhZGRyZXNzKSk7
CiAgICAgcG9ydC0+c2V0X3N0dW5fa2VlcGFsaXZlX2RlbGF5KHN0dW5fa2VlcGFsaXZlX2ludGVy
dmFsKTsKICAgICBpZiAoIXBvcnQtPkluaXQoKSkgewotICAgICAgZGVsZXRlIHBvcnQ7Ci0gICAg
ICBwb3J0ID0gTlVMTDsKKyAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4g
cG9ydDsKICAgfQpAQCAtMTAwLDcgKzEwNCw3IEBAIGNsYXNzIFVEUFBvcnQgOiBwdWJsaWMgUG9y
dCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIG92
ZXJyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVf
dXMpIG92ZXJyaWRlOwogCiAgIGJvb2wgU3VwcG9ydHNQcm90b2NvbChjb25zdCBzdGQ6OnN0cmlu
ZyYgcHJvdG9jb2wpIGNvbnN0IG92ZXJyaWRlOwogICBQcm90b2NvbFR5cGUgR2V0UHJvdG9jb2wo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTE1NiwxMCArMTYwLDE0IEBAIGNsYXNzIFVEUFBvcnQgOiBw
dWJsaWMgUG9ydCB7CiAKICAgdm9pZCBPbkxvY2FsQWRkcmVzc1JlYWR5KHJ0Yzo6QXN5bmNQYWNr
ZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYgYWRkcmVzcyk7CisKKyAgdm9pZCBQb3N0QWRkQWRkcmVzcyhib29sIGlz
X2ZpbmFsKSBvdmVycmlkZTsKKwogICB2b2lkIE9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0
U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAorICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsKIAogICB2b2lkIE9uU2VudFBhY2tldChydGM6OkFz
eW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
U2VudFBhY2tldCYgc2VudF9wYWNrZXQpIG92ZXJyaWRlOwpAQCAtMjYyLDE2ICsyNzAsMTcgQEAg
Y2xhc3MgVURQUG9ydCA6IHB1YmxpYyBQb3J0IHsKIAogY2xhc3MgU3R1blBvcnQgOiBwdWJsaWMg
VURQUG9ydCB7CiAgcHVibGljOgotICBzdGF0aWMgU3R1blBvcnQqIENyZWF0ZShydGM6OlRocmVh
ZCogdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZh
Y3RvcnkqIGZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29yayog
bmV0d29yaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWluX3BvcnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1heF9wb3J0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU2VydmVyQWRkcmVzc2VzJiBzZXJ2ZXJzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IHN0dW5fa2VlcGFsaXZlX2ludGVydmFsKTsK
KyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTdHVuUG9ydD4gQ3JlYXRlKAorICAgICAgcnRjOjpU
aHJlYWQqIHRocmVhZCwKKyAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogZmFjdG9yeSwK
KyAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKKyAgICAgIHVpbnQxNl90IG1pbl9wb3J0LAor
ICAgICAgdWludDE2X3QgbWF4X3BvcnQsCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5h
bWUsCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQsCisgICAgICBjb25zdCBTZXJ2
ZXJBZGRyZXNzZXMmIHNlcnZlcnMsCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAor
ICAgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzdHVuX2tlZXBhbGl2ZV9pbnRlcnZhbCk7CiAKICAg
dm9pZCBQcmVwYXJlQWRkcmVzcygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVucG9ydF91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3N0dW5wb3J0X3VuaXR0ZXN0LmNjCmluZGV4IDI5NzU0ZTg2MWM5MzhhNDFhN2VhOGZiYzg2N2Nh
ZmMzZjBmN2IxZDIuLjAxNTE4YTk0NjgzNjRkMTBlYzM0MWRjMzA3ZTgzYjVhMjgyYTAxY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3N0dW5wb3J0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5wb3J0X3VuaXR0ZXN0LmNjCkBAIC03NSwxMCAr
NzUsMTAgQEAgY2xhc3MgU3R1blBvcnRUZXN0QmFzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBw
dWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICB9CiAKICAgdm9pZCBDcmVhdGVTdHVuUG9y
dChjb25zdCBTZXJ2ZXJBZGRyZXNzZXMmIHN0dW5fc2VydmVycykgewotICAgIHN0dW5fcG9ydF8u
cmVzZXQoY3JpY2tldDo6U3R1blBvcnQ6OkNyZWF0ZSgKKyAgICBzdHVuX3BvcnRfID0gY3JpY2tl
dDo6U3R1blBvcnQ6OkNyZWF0ZSgKICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwgJnNv
Y2tldF9mYWN0b3J5XywgJm5ldHdvcmtfLCAwLCAwLAogICAgICAgICBydGM6OkNyZWF0ZVJhbmRv
bVN0cmluZygxNiksIHJ0Yzo6Q3JlYXRlUmFuZG9tU3RyaW5nKDIyKSwgc3R1bl9zZXJ2ZXJzLAot
ICAgICAgICBzdGQ6OnN0cmluZygpLCBhYnNsOjpudWxsb3B0KSk7CisgICAgICAgIHN0ZDo6c3Ry
aW5nKCksIGFic2w6Om51bGxvcHQpOwogICAgIHN0dW5fcG9ydF8tPnNldF9zdHVuX2tlZXBhbGl2
ZV9kZWxheShzdHVuX2tlZXBhbGl2ZV9kZWxheV8pOwogICAgIC8vIElmIHxzdHVuX2tlZXBhbGl2
ZV9saWZldGltZV98IGlzIG5lZ2F0aXZlLCBsZXQgdGhlIHN0dW4gcG9ydAogICAgIC8vIGNob29z
ZSBpdHMgbGlmZXRpbWUgZnJvbSB0aGUgbmV0d29yayB0eXBlLgpAQCAtMTAwLDEwICsxMDAsMTAg
QEAgY2xhc3MgU3R1blBvcnRUZXN0QmFzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMg
c2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIH0KICAgICBBU1NFUlRfVFJVRShzb2NrZXRfICE9
IE5VTEwpOwogICAgIHNvY2tldF8tPlNpZ25hbFJlYWRQYWNrZXQuY29ubmVjdCh0aGlzLCAmU3R1
blBvcnRUZXN0QmFzZTo6T25SZWFkUGFja2V0KTsKLSAgICBzdHVuX3BvcnRfLnJlc2V0KGNyaWNr
ZXQ6OlVEUFBvcnQ6OkNyZWF0ZSgKKyAgICBzdHVuX3BvcnRfID0gY3JpY2tldDo6VURQUG9ydDo6
Q3JlYXRlKAogICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLCAmc29ja2V0X2ZhY3Rvcnlf
LCAmbmV0d29ya18sIHNvY2tldF8uZ2V0KCksCiAgICAgICAgIHJ0Yzo6Q3JlYXRlUmFuZG9tU3Ry
aW5nKDE2KSwgcnRjOjpDcmVhdGVSYW5kb21TdHJpbmcoMjIpLCBzdGQ6OnN0cmluZygpLAotICAg
ICAgICBmYWxzZSwgYWJzbDo6bnVsbG9wdCkpOworICAgICAgICBmYWxzZSwgYWJzbDo6bnVsbG9w
dCk7CiAgICAgQVNTRVJUX1RSVUUoc3R1bl9wb3J0XyAhPSBOVUxMKTsKICAgICBTZXJ2ZXJBZGRy
ZXNzZXMgc3R1bl9zZXJ2ZXJzOwogICAgIHN0dW5fc2VydmVycy5pbnNlcnQoc2VydmVyX2FkZHIp
OwpAQCAtMTE5LDE1ICsxMTksMTUgQEAgY2xhc3MgU3R1blBvcnRUZXN0QmFzZSA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVf
YWRkciwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRf
dGltZSkgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGlt
ZV91cyAqLykgewogICAgIHN0dW5fcG9ydF8tPkhhbmRsZUluY29taW5nUGFja2V0KHNvY2tldCwg
ZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgfQogCiAgIHZvaWQgU2VuZERhdGEo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbikgewogICAgIHN0dW5fcG9ydF8tPkhhbmRsZUlu
Y29taW5nUGFja2V0KHNvY2tldF8uZ2V0KCksIGRhdGEsIGxlbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBydGM6OlNvY2tldEFkZHJlc3MoIjIyLjIyLjIyLjIyIiwgMCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRUaW1lKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBhY2tldF90aW1lX3Vz
ICovIC0xKTsKICAgfQogCiAgcHJvdGVjdGVkOgpAQCAtMjE2LDcgKzIxNiw3IEBAIFRFU1RfRihT
dHVuUG9ydFRlc3QsIFRlc3RQcmVwYXJlQWRkcmVzc0ZhaWwpIHsKIAogLy8gVGVzdCB0aGF0IHdl
IGNhbiBnZXQgYW4gYWRkcmVzcyBmcm9tIGEgU1RVTiBzZXJ2ZXIgc3BlY2lmaWVkIGJ5IGEgaG9z
dG5hbWUuCiAvLyBDcmFzaGVzIG9uIExpbnV4LCBzZWUgd2VicnRjOjc0MTYKLSNpZiBkZWZpbmVk
KFdFQlJUQ19MSU5VWCkKKyNpZiBkZWZpbmVkKFdFQlJUQ19MSU5VWCkgfHwgZGVmaW5lZChXRUJS
VENfV0lOKQogI2RlZmluZSBNQVlCRV9UZXN0UHJlcGFyZUFkZHJlc3NIb3N0bmFtZSBESVNBQkxF
RF9UZXN0UHJlcGFyZUFkZHJlc3NIb3N0bmFtZQogI2Vsc2UKICNkZWZpbmUgTUFZQkVfVGVzdFBy
ZXBhcmVBZGRyZXNzSG9zdG5hbWUgVGVzdFByZXBhcmVBZGRyZXNzSG9zdG5hbWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0
dW5yZXF1ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2Uvc3R1bnJlcXVlc3QuY2MKaW5kZXggNTY0MTBiZWEwODlkOWIyNjllMmZmZTIxNmY3
Y2M5YWQ0NDc3NzI0Yy4uZWRiYTRkNjhlNTRiYzIwYTBlZjNmZDQ2NmE4NGU1YzlkMzYzMmZjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2Uvc3R1bnJlcXVlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnJlcXVlc3QuY2MKQEAgLTE4LDcgKzE4LDcgQEAKICNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9oZWxwZXJzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmlu
Z2VuY29kZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIiAgLy8gRm9yIFRpbWVN
aWxsaXMKIAogbmFtZXNwYWNlIGNyaWNrZXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVuc2VydmVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnNlcnZl
ci5jYwppbmRleCAwMGVhY2YxN2JjOWUxOWE2YWViZTdlZmMyY2VlNjE1ZGE0ZTZhNDRkLi45NWYw
Y2ViZTBhNzBkODhjZjAzOWM4NTVhZmYyNTQ0MTgyMTU2YmFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVuc2VydmVyLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3N0dW5zZXJ2ZXIuY2MKQEAgLTI5LDcgKzI5LDcgQEAgdm9pZCBTdHVuU2VydmVyOjpPblBhY2tl
dChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNp
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYg
cmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0
VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50
NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAgLy8gUGFyc2UgdGhlIFNUVU4gbWVzc2Fn
ZTsgZWF0IGFueSBtZXNzYWdlcyB0aGF0IGZhaWwgdG8gcGFyc2UuCiAgIHJ0Yzo6Qnl0ZUJ1ZmZl
clJlYWRlciBiYnVmKGJ1Ziwgc2l6ZSk7CiAgIFN0dW5NZXNzYWdlIG1zZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5z
ZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3N0dW5zZXJ2ZXIuaAppbmRleCA5MDE2ZDA2YzIwYWNhOGQ5MTg2MDk2OWIxYjZhMWE1NTli
ZGM4OGZhLi4wMDYxZDM4MmJjMTQ5MjUyNDA2NGEyM2Y3MjBmOGMyYmQzYjcyNjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9z
dHVuc2VydmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2Uvc3R1bnNlcnZlci5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFN0dW5TZXJ2
ZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAg
ICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAgIGNv
bnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsKIAogICAvLyBIYW5kbGVycyBmb3IgdGhlIGRp
ZmZlcmVudCB0eXBlcyBvZiBTVFVOL1RVUk4gcmVxdWVzdHM6CiAgIHZpcnR1YWwgdm9pZCBPbkJp
bmRpbmdSZXF1ZXN0KFN0dW5NZXNzYWdlKiBtc2csCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYwpp
bmRleCBjNjZjNzMwNzM3NWUwM2ZiODk3NGI5MGEwZWYyYmY5MjA4NGI3ZjgzLi4wZDdhZWE5ZDYw
YTQ4M2YxNWMyNTExYzFhMGEwNWY4Yzc5MmRiZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQu
Y2MKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIFRDUFBvcnQ6Ok9uUmVhZFBhY2tldChydGM6OkFz
eW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90
ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1l
JiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRf
dCYgcGFja2V0X3RpbWVfdXMpIHsKICAgUG9ydDo6T25SZWFkUGFja2V0KGRhdGEsIHNpemUsIHJl
bW90ZV9hZGRyLCBQUk9UT19UQ1ApOwogfQogCkBAIC01NDUsOSArNTQ1LDkgQEAgdm9pZCBUQ1BD
b25uZWN0aW9uOjpPblJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYg
cGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu
dDY0X3QmIHBhY2tldF90aW1lX3VzKSB7CiAgIFJUQ19EQ0hFQ0soc29ja2V0ID09IHNvY2tldF8u
Z2V0KCkpOwotICBDb25uZWN0aW9uOjpPblJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcGFja2V0X3Rp
bWUpOworICBDb25uZWN0aW9uOjpPblJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWVf
dXMpOwogfQogCiB2b2lkIFRDUENvbm5lY3Rpb246Ok9uUmVhZHlUb1NlbmQocnRjOjpBc3luY1Bh
Y2tldFNvY2tldCogc29ja2V0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmgKaW5kZXggZmE1Yzk1
OGMyMWMyNjNiYmI0YjFlYTAxOWI4YTE3MGJmYTdhZDY5Ny4uNGQwNmE2NTA3YzM1MzQyMWVhY2Nl
OTEzMmE5ZTMxZGQxNjI4YzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuaApAQCAtMTUsNiAr
MTUsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRl
ICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wb3J0LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaCIKIApAQCAtMzAsMTYgKzMxLDE4IEBA
IGNsYXNzIFRDUENvbm5lY3Rpb247CiAvLyBjYWxsIHRoaXMgVENQUG9ydDo6T25SZWFkUGFja2V0
ICgzIGFyZykgdG8gZGlzcGF0Y2ggdG8gYSBjb25uZWN0aW9uLgogY2xhc3MgVENQUG9ydCA6IHB1
YmxpYyBQb3J0IHsKICBwdWJsaWM6Ci0gIHN0YXRpYyBUQ1BQb3J0KiBDcmVhdGUocnRjOjpUaHJl
YWQqIHRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZh
Y3RvcnkqIGZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpOZXR3b3JrKiBu
ZXR3b3JrLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1pbl9wb3J0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1heF9wb3J0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBhbGxvd19saXN0ZW4pIHsKLSAgICByZXR1cm4gbmV3IFRDUFBvcnQodGhyZWFk
LCBmYWN0b3J5LCBuZXR3b3JrLCBtaW5fcG9ydCwgbWF4X3BvcnQsIHVzZXJuYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICBwYXNzd29yZCwgYWxsb3dfbGlzdGVuKTsKKyAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxUQ1BQb3J0PiBDcmVhdGUocnRjOjpUaHJlYWQqIHRocmVhZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5
KiBmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6
Ok5ldHdvcmsqIG5ldHdvcmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQxNl90IG1pbl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MTZfdCBtYXhfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxsb3dfbGlzdGVu
KSB7CisgICAgLy8gVXNpbmcgYG5ld2AgdG8gYWNjZXNzIGEgbm9uLXB1YmxpYyBjb25zdHJ1Y3Rv
ci4KKyAgICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZShuZXcgVENQUG9ydCh0aHJlYWQsIGZhY3Rv
cnksIG5ldHdvcmssIG1pbl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1heF9wb3J0LCB1c2VybmFtZSwgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWxsb3dfbGlzdGVuKSk7CiAgIH0KICAgflRDUFBvcnQoKSBv
dmVycmlkZTsKIApAQCAtOTEsNyArOTQsNyBAQCBjbGFzcyBUQ1BQb3J0IDogcHVibGljIFBvcnQg
ewogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRB
ZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNr
ZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3Qm
IHBhY2tldF90aW1lX3VzKTsKIAogICB2b2lkIE9uU2VudFBhY2tldChydGM6OkFzeW5jUGFja2V0
U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tl
dCYgc2VudF9wYWNrZXQpIG92ZXJyaWRlOwpAQCAtMTU5LDcgKzE2Miw3IEBAIGNsYXNzIFRDUENv
bm5lY3Rpb24gOiBwdWJsaWMgQ29ubmVjdGlvbiB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpOwogICB2b2lkIE9u
UmVhZHlUb1NlbmQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0KTsKIAogICBzdGQ6OnVu
aXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4gc29ja2V0XzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnRf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS90Y3Bwb3J0X3VuaXR0ZXN0LmNjCmluZGV4IGVmMzAyZjkwMjYwMzJkMDQzMjBiZDFj
YzA4ZWZlNzAwNTk4MDU0ZWUuLjM0Mzg1YTdmOWJlZTY5NDA4NGNkYjViNjM2NGRkZWU2MWNkNzMw
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3RjcHBvcnRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydF91bml0dGVzdC5jYwpAQCAtMTQs
NiArMTQsNyBAQAogI2luY2x1ZGUgInAycC9iYXNlL2Jhc2ljcGFja2V0c29ja2V0ZmFjdG9yeS5o
IgogI2luY2x1ZGUgInAycC9iYXNlL3RjcHBvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5p
dC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90
aHJlYWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmgiCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uY2MKaW5kZXggYWQy
OWExMTk5ZTdkNTMxYjA4N2QwYzBhMjZjY2U4ZTkxZGI0OTkxMy4uMzc3YTRjM2VlZTMyNzg1NDE2
NmUyMmUwYTdkYWU0MTk2Yzk1YWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJh
bnNwb3J0ZGVzY3JpcHRpb24uY2MKQEAgLTEwLDkgKzEwLDkgQEAKIAogI2luY2x1ZGUgInAycC9i
YXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uLmgiCiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0
Y2guaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wMnBjb25zdGFudHMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9hcnJheXNpemUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiBu
YW1lc3BhY2UgY3JpY2tldCB7CiAKQEAgLTIyLDcgKzIyLDcgQEAgYm9vbCBTdHJpbmdUb0Nvbm5l
Y3Rpb25Sb2xlKGNvbnN0IHN0ZDo6c3RyaW5nJiByb2xlX3N0ciwgQ29ubmVjdGlvblJvbGUqIHJv
bGUpIHsKICAgICAgIENPTk5FQ1RJT05ST0xFX0FDVFBBU1NfU1RSLCBDT05ORUNUSU9OUk9MRV9I
T0xEQ09OTl9TVFJ9OwogCiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKHJvbGVz
KTsgKytpKSB7Ci0gICAgaWYgKF9zdHJpY21wKHJvbGVzW2ldLCByb2xlX3N0ci5jX3N0cigpKSA9
PSAwKSB7CisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uocm9sZXNbaV0sIHJvbGVfc3Ry
KSkgewogICAgICAgKnJvbGUgPSBzdGF0aWNfY2FzdDxDb25uZWN0aW9uUm9sZT4oQ09OTkVDVElP
TlJPTEVfQUNUSVZFICsgaSk7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFu
c3BvcnRkZXNjcmlwdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uaAppbmRleCAzYmZmZGY5NzFhMGU5
MzZmMjAwODExNjNjOTg5M2ZjZmJkZGM0ZGRjLi4yYWI5NzMyNzhmYWY3MmFhNjAzNGQ4ODM0ODNk
MGU4NTc3MzBmZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2Ny
aXB0aW9uLmgKQEAgLTY3LDExICs2NywxMyBAQCBzdHJ1Y3QgSWNlUGFyYW1ldGVycyB7CiAgICAg
ICAgICAgICAgICAgYm9vbCBpY2VfcmVub21pbmF0aW9uKQogICAgICAgOiB1ZnJhZyhpY2VfdWZy
YWcpLCBwd2QoaWNlX3B3ZCksIHJlbm9taW5hdGlvbihpY2VfcmVub21pbmF0aW9uKSB7fQogCi0g
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBJY2VQYXJhbWV0ZXJzJiBvdGhlcikgeworICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSWNlUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0IHsKICAgICByZXR1cm4g
dWZyYWcgPT0gb3RoZXIudWZyYWcgJiYgcHdkID09IG90aGVyLnB3ZCAmJgogICAgICAgICAgICBy
ZW5vbWluYXRpb24gPT0gb3RoZXIucmVub21pbmF0aW9uOwogICB9Ci0gIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBJY2VQYXJhbWV0ZXJzJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KKyAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEljZVBhcmFtZXRlcnMmIG90aGVyKSBjb25zdCB7
CisgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICB9CiB9OwogCiBleHRlcm4gY29uc3Qg
Y2hhciBDT05ORUNUSU9OUk9MRV9BQ1RJVkVfU1RSW107CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlw
dGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnkuY2MKaW5kZXggNjE4NzI2ZTg0
MTE2NGMwOTZhZTA1MDg5YzU0ZDE1ZWMxNzQ1ZDA0Ni4uNjg5Y2Q0ZjdhMmQwYmRjN2YwNTFmM2E0
NGNhNzUwYTk2YWZlNjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3Ry
YW5zcG9ydGRlc2NyaXB0aW9uZmFjdG9yeS5jYwpAQCAtMjcsMTMgKzI3LDE1IEBAIFRyYW5zcG9y
dERlc2NyaXB0aW9uRmFjdG9yeTo6flRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeSgpID0gZGVm
YXVsdDsKIAogVHJhbnNwb3J0RGVzY3JpcHRpb24qIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9y
eTo6Q3JlYXRlT2ZmZXIoCiAgICAgY29uc3QgVHJhbnNwb3J0T3B0aW9ucyYgb3B0aW9ucywKLSAg
ICBjb25zdCBUcmFuc3BvcnREZXNjcmlwdGlvbiogY3VycmVudF9kZXNjcmlwdGlvbikgY29uc3Qg
eworICAgIGNvbnN0IFRyYW5zcG9ydERlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uLAor
ICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3QgewogICBz
dGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRlc2MobmV3IFRyYW5zcG9ydERl
c2NyaXB0aW9uKCkpOwogCiAgIC8vIEdlbmVyYXRlIHRoZSBJQ0UgY3JlZGVudGlhbHMgaWYgd2Ug
ZG9uJ3QgYWxyZWFkeSBoYXZlIHRoZW0uCiAgIGlmICghY3VycmVudF9kZXNjcmlwdGlvbiB8fCBv
cHRpb25zLmljZV9yZXN0YXJ0KSB7Ci0gICAgZGVzYy0+aWNlX3VmcmFnID0gcnRjOjpDcmVhdGVS
YW5kb21TdHJpbmcoSUNFX1VGUkFHX0xFTkdUSCk7Ci0gICAgZGVzYy0+aWNlX3B3ZCA9IHJ0Yzo6
Q3JlYXRlUmFuZG9tU3RyaW5nKElDRV9QV0RfTEVOR1RIKTsKKyAgICBJY2VQYXJhbWV0ZXJzIGNy
ZWRlbnRpYWxzID0gaWNlX2NyZWRlbnRpYWxzLT5HZXRJY2VDcmVkZW50aWFscygpOworICAgIGRl
c2MtPmljZV91ZnJhZyA9IGNyZWRlbnRpYWxzLnVmcmFnOworICAgIGRlc2MtPmljZV9wd2QgPSBj
cmVkZW50aWFscy5wd2Q7CiAgIH0gZWxzZSB7CiAgICAgZGVzYy0+aWNlX3VmcmFnID0gY3VycmVu
dF9kZXNjcmlwdGlvbi0+aWNlX3VmcmFnOwogICAgIGRlc2MtPmljZV9wd2QgPSBjdXJyZW50X2Rl
c2NyaXB0aW9uLT5pY2VfcHdkOwpAQCAtNTksNyArNjEsOCBAQCBUcmFuc3BvcnREZXNjcmlwdGlv
biogVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVBbnN3ZXIoCiAgICAgY29uc3Qg
VHJhbnNwb3J0RGVzY3JpcHRpb24qIG9mZmVyLAogICAgIGNvbnN0IFRyYW5zcG9ydE9wdGlvbnMm
IG9wdGlvbnMsCiAgICAgYm9vbCByZXF1aXJlX3RyYW5zcG9ydF9hdHRyaWJ1dGVzLAotICAgIGNv
bnN0IFRyYW5zcG9ydERlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uKSBjb25zdCB7Cisg
ICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24sCisgICAg
SWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIC8vIFRP
RE8oanViZXJ0aSk6IEZpZ3VyZSBvdXQgd2h5IHdlIGdldCBOVUxMIG9mZmVycywgYW5kIGZpeCB0
aGlzIHVwc3RyZWFtLgogICBpZiAoIW9mZmVyKSB7CiAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8
PCAiRmFpbGVkIHRvIGNyZWF0ZSBUcmFuc3BvcnREZXNjcmlwdGlvbiBhbnN3ZXIgIgpAQCAtNzEs
OCArNzQsOSBAQCBUcmFuc3BvcnREZXNjcmlwdGlvbiogVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0
b3J5OjpDcmVhdGVBbnN3ZXIoCiAgIC8vIEdlbmVyYXRlIHRoZSBJQ0UgY3JlZGVudGlhbHMgaWYg
d2UgZG9uJ3QgYWxyZWFkeSBoYXZlIHRoZW0gb3IgaWNlIGlzCiAgIC8vIGJlaW5nIHJlc3RhcnRl
ZC4KICAgaWYgKCFjdXJyZW50X2Rlc2NyaXB0aW9uIHx8IG9wdGlvbnMuaWNlX3Jlc3RhcnQpIHsK
LSAgICBkZXNjLT5pY2VfdWZyYWcgPSBydGM6OkNyZWF0ZVJhbmRvbVN0cmluZyhJQ0VfVUZSQUdf
TEVOR1RIKTsKLSAgICBkZXNjLT5pY2VfcHdkID0gcnRjOjpDcmVhdGVSYW5kb21TdHJpbmcoSUNF
X1BXRF9MRU5HVEgpOworICAgIEljZVBhcmFtZXRlcnMgY3JlZGVudGlhbHMgPSBpY2VfY3JlZGVu
dGlhbHMtPkdldEljZUNyZWRlbnRpYWxzKCk7CisgICAgZGVzYy0+aWNlX3VmcmFnID0gY3JlZGVu
dGlhbHMudWZyYWc7CisgICAgZGVzYy0+aWNlX3B3ZCA9IGNyZWRlbnRpYWxzLnB3ZDsKICAgfSBl
bHNlIHsKICAgICBkZXNjLT5pY2VfdWZyYWcgPSBjdXJyZW50X2Rlc2NyaXB0aW9uLT5pY2VfdWZy
YWc7CiAgICAgZGVzYy0+aWNlX3B3ZCA9IGN1cnJlbnRfZGVzY3JpcHRpb24tPmljZV9wd2Q7CkBA
IC0xMTYsOCArMTIwLDggQEAgYm9vbCBUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3Rvcnk6OlNldFNl
Y3VyaXR5SW5mbyhUcmFuc3BvcnREZXNjcmlwdGlvbiogZGVzYywKICAgLy8gVGhpcyBkaWdlc3Qg
YWxnb3JpdGhtIGlzIHVzZWQgdG8gcHJvZHVjZSB0aGUgYT1maW5nZXJwcmludCBsaW5lcyBpbiBT
RFAuCiAgIC8vIFJGQyA0NTcyIFNlY3Rpb24gNSByZXF1aXJlcyB0aGF0IHRob3NlIGxpbmVzIHVz
ZSB0aGUgc2FtZSBoYXNoIGZ1bmN0aW9uIGFzCiAgIC8vIHRoZSBjZXJ0aWZpY2F0ZSdzIHNpZ25h
dHVyZSwgd2hpY2ggaXMgd2hhdCBDcmVhdGVGcm9tQ2VydGlmaWNhdGUgZG9lcy4KLSAgZGVzYy0+
aWRlbnRpdHlfZmluZ2VycHJpbnQucmVzZXQoCi0gICAgICBydGM6OlNTTEZpbmdlcnByaW50OjpD
cmVhdGVGcm9tQ2VydGlmaWNhdGUoY2VydGlmaWNhdGVfKSk7CisgIGRlc2MtPmlkZW50aXR5X2Zp
bmdlcnByaW50ID0KKyAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0aWZp
Y2F0ZSgqY2VydGlmaWNhdGVfKTsKICAgaWYgKCFkZXNjLT5pZGVudGl0eV9maW5nZXJwcmludCkg
ewogICAgIHJldHVybiBmYWxzZTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0
b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnkuaAppbmRleCA5MzdjNWZhMWZlYTRhMjFmYWFj
Y2JmNWU1MTk1ZTMyYmYyZDEwYjNlLi5kYzE0NzZhODBmNTA3MWI5MDY4YzAxNGMyN2ZkMTM0Y2Q0
ZGQ5NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnkuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNj
cmlwdGlvbmZhY3RvcnkuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBQMlBfQkFTRV9UUkFO
U1BPUlRERVNDUklQVElPTkZBQ1RPUllfSF8KICNkZWZpbmUgUDJQX0JBU0VfVFJBTlNQT1JUREVT
Q1JJUFRJT05GQUNUT1JZX0hfCiAKKyNpbmNsdWRlICJwMnAvYmFzZS9pY2VjcmVkZW50aWFsc2l0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uaCIKICNp
bmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5oIgogCkBAIC01NCw3ICs1NSw4IEBAIGNs
YXNzIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeSB7CiAgIC8vIENyZWF0ZXMgYSB0cmFuc3Bv
cnQgZGVzY3JpcHRpb24gc3VpdGFibGUgZm9yIHVzZSBpbiBhbiBvZmZlci4KICAgVHJhbnNwb3J0
RGVzY3JpcHRpb24qIENyZWF0ZU9mZmVyKAogICAgICAgY29uc3QgVHJhbnNwb3J0T3B0aW9ucyYg
b3B0aW9ucywKLSAgICAgIGNvbnN0IFRyYW5zcG9ydERlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2Ny
aXB0aW9uKSBjb25zdDsKKyAgICAgIGNvbnN0IFRyYW5zcG9ydERlc2NyaXB0aW9uKiBjdXJyZW50
X2Rlc2NyaXB0aW9uLAorICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRp
YWxzKSBjb25zdDsKICAgLy8gQ3JlYXRlIGEgdHJhbnNwb3J0IGRlc2NyaXB0aW9uIHRoYXQgaXMg
YSByZXNwb25zZSB0byBhbiBvZmZlci4KICAgLy8KICAgLy8gSWYgfHJlcXVpcmVfdHJhbnNwb3J0
X2F0dHJpYnV0ZXN8IGlzIHRydWUsIHRoZW4gVFJBTlNQT1JUIGNhdGVnb3J5CkBAIC02Niw3ICs2
OCw4IEBAIGNsYXNzIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeSB7CiAgICAgICBjb25zdCBU
cmFuc3BvcnREZXNjcmlwdGlvbiogb2ZmZXIsCiAgICAgICBjb25zdCBUcmFuc3BvcnRPcHRpb25z
JiBvcHRpb25zLAogICAgICAgYm9vbCByZXF1aXJlX3RyYW5zcG9ydF9hdHRyaWJ1dGVzLAotICAg
ICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24pIGNvbnN0
OworICAgICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24s
CisgICAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0Owog
CiAgcHJpdmF0ZToKICAgYm9vbCBTZXRTZWN1cml0eUluZm8oVHJhbnNwb3J0RGVzY3JpcHRpb24q
IGRlc2NyaXB0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5X3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
dHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5X3VuaXR0ZXN0LmNjCmluZGV4IGE3YzM0YjU2YTA0
ZDM1YzZkZjkwYjA4ZGFlOTQzY2Y4NzkzNTFkZWQuLmM0NjYzMGFjZTIxOTJmMTU4NmE3NmNlM2Vh
NjM3MGU5NmMxNmNiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uZmFjdG9yeV91bml0dGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnlfdW5pdHRlc3QuY2MKQEAgLTI2LDcgKzI2
LDggQEAgdXNpbmcgY3JpY2tldDo6VHJhbnNwb3J0T3B0aW9uczsKIGNsYXNzIFRyYW5zcG9ydERl
c2NyaXB0aW9uRmFjdG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgcHVibGljOgog
ICBUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0KCkKLSAgICAgIDogY2VydDFfKHJ0Yzo6
UlRDQ2VydGlmaWNhdGU6OkNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xJZGVudGl0eT4o
CisgICAgICA6IGljZV9jcmVkZW50aWFsc18oe30pLAorICAgICAgICBjZXJ0MV8ocnRjOjpSVEND
ZXJ0aWZpY2F0ZTo6Q3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTElkZW50aXR5PigKICAg
ICAgICAgICAgIG5ldyBydGM6OkZha2VTU0xJZGVudGl0eSgiVXNlcjEiKSkpKSwKICAgICAgICAg
Y2VydDJfKHJ0Yzo6UlRDQ2VydGlmaWNhdGU6OkNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpT
U0xJZGVudGl0eT4oCiAgICAgICAgICAgICBuZXcgcnRjOjpGYWtlU1NMSWRlbnRpdHkoIlVzZXIy
IikpKSkge30KQEAgLTY0LDIxICs2NSwyMiBAQCBjbGFzcyBUcmFuc3BvcnREZXNjcmlwdGlvbkZh
Y3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIFNldER0bHMoZHRscyk7CiAg
ICAgY3JpY2tldDo6VHJhbnNwb3J0T3B0aW9ucyBvcHRpb25zOwogICAgIC8vIFRoZSBpbml0aWFs
IG9mZmVyIC8gYW5zd2VyIGV4Y2hhbmdlLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnRE
ZXNjcmlwdGlvbj4gb2ZmZXIoZjFfLkNyZWF0ZU9mZmVyKG9wdGlvbnMsIE5VTEwpKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG9mZmVyKAorICAgICAgICBmMV8u
Q3JlYXRlT2ZmZXIob3B0aW9ucywgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGFuc3dlcigKLSAgICAgICAgZjJfLkNy
ZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0aW9ucywgdHJ1ZSwgTlVMTCkpOworICAgICAgICBm
Ml8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBvcHRpb25zLCB0cnVlLCBOVUxMLCAmaWNlX2Ny
ZWRlbnRpYWxzXykpOwogCiAgICAgLy8gQ3JlYXRlIGFuIHVwZGF0ZWQgb2ZmZXIgd2hlcmUgd2Ug
cmVzdGFydCBpY2UuCiAgICAgb3B0aW9ucy5pY2VfcmVzdGFydCA9IHRydWU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiByZXN0YXJ0X29mZmVyKAotICAgICAgICBm
MV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgb2ZmZXIuZ2V0KCkpKTsKKyAgICAgICAgZjFfLkNyZWF0
ZU9mZmVyKG9wdGlvbnMsIG9mZmVyLmdldCgpLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogCiAgICAg
VmVyaWZ5VWZyYWdBbmRQYXNzd29yZENoYW5nZWQoZHRscywgb2ZmZXIuZ2V0KCksIHJlc3RhcnRf
b2ZmZXIuZ2V0KCkpOwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGFuc3dlci4gVGhlIHRyYW5zcG9y
dCB1ZnJhZyBhbmQgcGFzc3dvcmQgaXMgY2hhbmdlZCBzaW5jZQogICAgIC8vIHxvcHRpb25zLmlj
ZV9yZXN0YXJ0ID09IHRydWV8Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0
aW9uPiByZXN0YXJ0X2Fuc3dlcigKLSAgICAgICAgZjJfLkNyZWF0ZUFuc3dlcihyZXN0YXJ0X29m
ZmVyLmdldCgpLCBvcHRpb25zLCB0cnVlLCBhbnN3ZXIuZ2V0KCkpKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IHJlc3RhcnRfYW5zd2VyKGYyXy5DcmVhdGVBbnN3
ZXIoCisgICAgICAgIHJlc3RhcnRfb2ZmZXIuZ2V0KCksIG9wdGlvbnMsIHRydWUsIGFuc3dlci5n
ZXQoKSwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgICBBU1NFUlRfVFJVRShyZXN0YXJ0X2Fuc3dl
ci5nZXQoKSAhPSBOVUxMKTsKIAogICAgIFZlcmlmeVVmcmFnQW5kUGFzc3dvcmRDaGFuZ2VkKGR0
bHMsIGFuc3dlci5nZXQoKSwgcmVzdGFydF9hbnN3ZXIuZ2V0KCkpOwpAQCAtMTA4LDE5ICsxMTAs
MjAgQEAgY2xhc3MgVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKICAgICBjcmlja2V0OjpUcmFuc3BvcnRPcHRpb25zIG9wdGlvbnM7CiAgICAg
Ly8gVGhlIGluaXRpYWwgb2ZmZXIgLyBhbnN3ZXIgZXhjaGFuZ2UuCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBvZmZlcigKLSAgICAgICAgZjFfLkNyZWF0ZU9mZmVy
KG9wdGlvbnMsIG51bGxwdHIpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3Jp
cHRpb24+IGFuc3dlcigKLSAgICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0
aW9ucywgdHJ1ZSwgbnVsbHB0cikpOworICAgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywg
bnVsbHB0ciwgJmljZV9jcmVkZW50aWFsc18pKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNw
b3J0RGVzY3JpcHRpb24+IGFuc3dlcihmMl8uQ3JlYXRlQW5zd2VyKAorICAgICAgICBvZmZlci5n
ZXQoKSwgb3B0aW9ucywgdHJ1ZSwgbnVsbHB0ciwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgICBW
ZXJpZnlSZW5vbWluYXRpb24ob2ZmZXIuZ2V0KCksIGZhbHNlKTsKICAgICBWZXJpZnlSZW5vbWlu
YXRpb24oYW5zd2VyLmdldCgpLCBmYWxzZSk7CiAKICAgICBvcHRpb25zLmVuYWJsZV9pY2VfcmVu
b21pbmF0aW9uID0gdHJ1ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRp
b24+IHJlbm9taW5hdGlvbl9vZmZlcigKLSAgICAgICAgZjFfLkNyZWF0ZU9mZmVyKG9wdGlvbnMs
IG9mZmVyLmdldCgpKSk7CisgICAgICAgIGYxXy5DcmVhdGVPZmZlcihvcHRpb25zLCBvZmZlci5n
ZXQoKSwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgICBWZXJpZnlSZW5vbWluYXRpb24ocmVub21p
bmF0aW9uX29mZmVyLmdldCgpLCB0cnVlKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3Bv
cnREZXNjcmlwdGlvbj4gcmVub21pbmF0aW9uX2Fuc3dlcihmMl8uQ3JlYXRlQW5zd2VyKAotICAg
ICAgICByZW5vbWluYXRpb25fb2ZmZXIuZ2V0KCksIG9wdGlvbnMsIHRydWUsIGFuc3dlci5nZXQo
KSkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gcmVub21pbmF0
aW9uX2Fuc3dlcigKKyAgICAgICAgZjJfLkNyZWF0ZUFuc3dlcihyZW5vbWluYXRpb25fb2ZmZXIu
Z2V0KCksIG9wdGlvbnMsIHRydWUsIGFuc3dlci5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAmaWNlX2NyZWRlbnRpYWxzXykpOwogICAgIFZlcmlmeVJlbm9taW5hdGlvbihyZW5vbWlu
YXRpb25fYW5zd2VyLmdldCgpLCB0cnVlKTsKICAgfQogCkBAIC0xNDUsNiArMTQ4LDcgQEAgY2xh
c3MgVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKICAgICB9CiAgIH0KIAorICBjcmlja2V0OjpJY2VDcmVkZW50aWFsc0l0ZXJhdG9yIGljZV9j
cmVkZW50aWFsc187CiAgIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeSBmMV87CiAgIFRyYW5z
cG9ydERlc2NyaXB0aW9uRmFjdG9yeSBmMl87CiAKQEAgLTE1NCw3ICsxNTgsNyBAQCBjbGFzcyBU
cmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewog
CiBURVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdE9mZmVyRGVmYXVs
dCkgewogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRlc2MoCi0gICAg
ICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMKSk7CisgICAgICBmMV8u
Q3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykp
OwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIiLCAiIiwgIiIpOwogfQogCkBAIC0xNjMs
MTMgKzE2NywxMyBAQCBURVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVz
dE9mZmVyRHRscykgewogICBmMV8uc2V0X2NlcnRpZmljYXRlKGNlcnQxXyk7CiAgIHN0ZDo6c3Ry
aW5nIGRpZ2VzdF9hbGc7CiAgIEFTU0VSVF9UUlVFKAotICAgICAgY2VydDFfLT5zc2xfY2VydGlm
aWNhdGUoKS5HZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG0oJmRpZ2VzdF9hbGcpKTsKKyAgICAg
IGNlcnQxXy0+R2V0U1NMQ2VydGlmaWNhdGUoKS5HZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG0o
JmRpZ2VzdF9hbGcpKTsKICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBk
ZXNjKAotICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCkpOwor
ICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCwgJmljZV9jcmVk
ZW50aWFsc18pKTsKICAgQ2hlY2tEZXNjKGRlc2MuZ2V0KCksICIiLCAiIiwgIiIsIGRpZ2VzdF9h
bGcpOwogICAvLyBFbnN1cmUgaXQgYWxzbyB3b3JrcyB3aXRoIFNFQ19SRVFVSVJFRC4KICAgZjFf
LnNldF9zZWN1cmUoY3JpY2tldDo6U0VDX1JFUVVJUkVEKTsKLSAgZGVzYy5yZXNldChmMV8uQ3Jl
YXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMKSk7CisgIGRlc2MucmVzZXQoZjFfLkNy
ZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsK
ICAgQ2hlY2tEZXNjKGRlc2MuZ2V0KCksICIiLCAiIiwgIiIsIGRpZ2VzdF9hbGcpOwogfQogCkBA
IC0xNzcsNyArMTgxLDcgQEAgVEVTVF9GKFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3Qs
IFRlc3RPZmZlckR0bHMpIHsKIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0
LCBUZXN0T2ZmZXJEdGxzV2l0aE5vSWRlbnRpdHkpIHsKICAgZjFfLnNldF9zZWN1cmUoY3JpY2tl
dDo6U0VDX0VOQUJMRUQpOwogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+
IGRlc2MoCi0gICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMKSk7
CisgICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMLCAmaWNlX2Ny
ZWRlbnRpYWxzXykpOwogICBBU1NFUlRfVFJVRShkZXNjLmdldCgpID09IE5VTEwpOwogfQogCkBA
IC0xODgsMzYgKzE5MiwzOCBAQCBURVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVz
dCwgVGVzdE9mZmVyRHRsc1Jlb2ZmZXJEdGxzKSB7CiAgIGYxXy5zZXRfY2VydGlmaWNhdGUoY2Vy
dDFfKTsKICAgc3RkOjpzdHJpbmcgZGlnZXN0X2FsZzsKICAgQVNTRVJUX1RSVUUoCi0gICAgICBj
ZXJ0MV8tPnNzbF9jZXJ0aWZpY2F0ZSgpLkdldFNpZ25hdHVyZURpZ2VzdEFsZ29yaXRobSgmZGln
ZXN0X2FsZykpOworICAgICAgY2VydDFfLT5HZXRTU0xDZXJ0aWZpY2F0ZSgpLkdldFNpZ25hdHVy
ZURpZ2VzdEFsZ29yaXRobSgmZGlnZXN0X2FsZykpOwogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNw
b3J0RGVzY3JpcHRpb24+IG9sZF9kZXNjKAotICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9y
dE9wdGlvbnMoKSwgTlVMTCkpOworICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlv
bnMoKSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQVNTRVJUX1RSVUUob2xkX2Rlc2Mu
Z2V0KCkgIT0gTlVMTCk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4g
ZGVzYygKLSAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIG9sZF9kZXNj
LmdldCgpKSk7CisgICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBvbGRf
ZGVzYy5nZXQoKSwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQ2hlY2tEZXNjKGRlc2MuZ2V0KCks
ICIiLCBvbGRfZGVzYy0+aWNlX3VmcmFnLCBvbGRfZGVzYy0+aWNlX3B3ZCwgZGlnZXN0X2FsZyk7
CiB9CiAKIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0QW5zd2Vy
RGVmYXVsdCkgewogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG9mZmVy
KAotICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCkpOworICAg
ICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCwgJmljZV9jcmVkZW50
aWFsc18pKTsKICAgQVNTRVJUX1RSVUUob2ZmZXIuZ2V0KCkgIT0gTlVMTCk7Ci0gIHN0ZDo6dW5p
cXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYygKLSAgICAgIGYyXy5DcmVhdGVBbnN3
ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCkpOworICBzdGQ6
OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRlc2MoZjJfLkNyZWF0ZUFuc3dlcigK
KyAgICAgIG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwsICZpY2Vf
Y3JlZGVudGlhbHNfKSk7CiAgIENoZWNrRGVzYyhkZXNjLmdldCgpLCAiIiwgIiIsICIiLCAiIik7
Ci0gIGRlc2MucmVzZXQoZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0
aW9ucygpLCB0cnVlLCBOVUxMKSk7CisgIGRlc2MucmVzZXQoZjJfLkNyZWF0ZUFuc3dlcihvZmZl
ci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQ2hlY2tEZXNjKGRlc2MuZ2V0
KCksICIiLCAiIiwgIiIsICIiKTsKIH0KIAogLy8gVGVzdCB0aGF0IHdlIGNhbiB1cGRhdGUgYW4g
YW5zd2VyIHByb3Blcmx5OyBJQ0UgY3JlZGVudGlhbHMgc2hvdWxkbid0IGNoYW5nZS4KIFRFU1Rf
RihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0UmVhbnN3ZXIpIHsKICAgc3Rk
Ojp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBvZmZlcigKLSAgICAgIGYxXy5DcmVh
dGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwpKTsKKyAgICAgIGYxXy5DcmVhdGVPZmZl
cihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIEFTU0VS
VF9UUlVFKG9mZmVyLmdldCgpICE9IE5VTEwpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0
RGVzY3JpcHRpb24+IG9sZF9kZXNjKAotICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQo
KSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxU
cmFuc3BvcnREZXNjcmlwdGlvbj4gb2xkX2Rlc2MoZjJfLkNyZWF0ZUFuc3dlcigKKyAgICAgIG9m
ZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwsICZpY2VfY3JlZGVudGlh
bHNfKSk7CiAgIEFTU0VSVF9UUlVFKG9sZF9kZXNjLmdldCgpICE9IE5VTEwpOwogICBzdGQ6OnVu
aXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRlc2MoCi0gICAgICBmMl8uQ3JlYXRlQW5z
d2VyKG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIG9sZF9kZXNjLmdldCgp
KSk7CisgICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25z
KCksIHRydWUsIG9sZF9kZXNjLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAmaWNlX2Ny
ZWRlbnRpYWxzXykpOwogICBBU1NFUlRfVFJVRShkZXNjLmdldCgpICE9IE5VTEwpOwogICBDaGVj
a0Rlc2MoZGVzYy5nZXQoKSwgIiIsIG9sZF9kZXNjLT5pY2VfdWZyYWcsIG9sZF9kZXNjLT5pY2Vf
cHdkLCAiIik7CiB9CkBAIC0yMjcsMTAgKzIzMywxMCBAQCBURVNUX0YoVHJhbnNwb3J0RGVzY3Jp
cHRpb25GYWN0b3J5VGVzdCwgVGVzdEFuc3dlckR0bHNUb05vRHRscykgewogICBmMV8uc2V0X3Nl
Y3VyZShjcmlja2V0OjpTRUNfRU5BQkxFRCk7CiAgIGYxXy5zZXRfY2VydGlmaWNhdGUoY2VydDFf
KTsKICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBvZmZlcigKLSAgICAg
IGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwpKTsKKyAgICAgIGYxXy5D
cmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7
CiAgIEFTU0VSVF9UUlVFKG9mZmVyLmdldCgpICE9IE5VTEwpOwotICBzdGQ6OnVuaXF1ZV9wdHI8
VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRlc2MoCi0gICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVy
LmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwpKTsKKyAgc3RkOjp1bmlxdWVf
cHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBkZXNjKGYyXy5DcmVhdGVBbnN3ZXIoCisgICAgICBv
ZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMLCAmaWNlX2NyZWRlbnRp
YWxzXykpOwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIiLCAiIiwgIiIpOwogfQogCkBA
IC0yNDAsMTMgKzI0NiwxNCBAQCBURVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVz
dCwgVGVzdEFuc3dlck5vRHRsc1RvRHRscykgewogICBmMl8uc2V0X3NlY3VyZShjcmlja2V0OjpT
RUNfRU5BQkxFRCk7CiAgIGYyXy5zZXRfY2VydGlmaWNhdGUoY2VydDJfKTsKICAgc3RkOjp1bmlx
dWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBvZmZlcigKLSAgICAgIGYxXy5DcmVhdGVPZmZl
cihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwpKTsKKyAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFu
c3BvcnRPcHRpb25zKCksIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIEFTU0VSVF9UUlVF
KG9mZmVyLmdldCgpICE9IE5VTEwpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3Jp
cHRpb24+IGRlc2MoCi0gICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBUcmFuc3Bv
cnRPcHRpb25zKCksIHRydWUsIE5VTEwpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERl
c2NyaXB0aW9uPiBkZXNjKGYyXy5DcmVhdGVBbnN3ZXIoCisgICAgICBvZmZlci5nZXQoKSwgVHJh
bnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBDaGVj
a0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIiLCAiIiwgIiIpOwogICBmMl8uc2V0X3NlY3VyZShjcmlj
a2V0OjpTRUNfUkVRVUlSRUQpOwotICBkZXNjLnJlc2V0KGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIu
Z2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCkpOworICBkZXNjLnJlc2V0KGYy
Xy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVM
TCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpY2VfY3JlZGVudGlhbHNfKSk7CiAg
IEFTU0VSVF9UUlVFKGRlc2MuZ2V0KCkgPT0gTlVMTCk7CiB9CiAKQEAgLTI2MiwxNiArMjY5LDE3
IEBAIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0QW5zd2VyRHRs
c1RvRHRscykgewogICAvLyBhbnN3ZXIgbXVzdCBjb250YWluIGZpbmdlcnByaW50IGxpbmVzIHdp
dGggY2VydDJfJ3MgZGlnZXN0IGFsZ29yaXRobS4KICAgc3RkOjpzdHJpbmcgZGlnZXN0X2FsZzI7
CiAgIEFTU0VSVF9UUlVFKAotICAgICAgY2VydDJfLT5zc2xfY2VydGlmaWNhdGUoKS5HZXRTaWdu
YXR1cmVEaWdlc3RBbGdvcml0aG0oJmRpZ2VzdF9hbGcyKSk7CisgICAgICBjZXJ0Ml8tPkdldFNT
TENlcnRpZmljYXRlKCkuR2V0U2lnbmF0dXJlRGlnZXN0QWxnb3JpdGhtKCZkaWdlc3RfYWxnMikp
OwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gb2ZmZXIoCi0gICAg
ICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMKSk7CisgICAgICBmMV8u
Q3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykp
OwogICBBU1NFUlRfVFJVRShvZmZlci5nZXQoKSAhPSBOVUxMKTsKLSAgc3RkOjp1bmlxdWVfcHRy
PFRyYW5zcG9ydERlc2NyaXB0aW9uPiBkZXNjKAotICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZl
ci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMKSk7CisgIHN0ZDo6dW5pcXVl
X3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYyhmMl8uQ3JlYXRlQW5zd2VyKAorICAgICAg
b2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCwgJmljZV9jcmVkZW50
aWFsc18pKTsKICAgQ2hlY2tEZXNjKGRlc2MuZ2V0KCksICIiLCAiIiwgIiIsIGRpZ2VzdF9hbGcy
KTsKICAgZjJfLnNldF9zZWN1cmUoY3JpY2tldDo6U0VDX1JFUVVJUkVEKTsKLSAgZGVzYy5yZXNl
dChmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUs
IE5VTEwpKTsKKyAgZGVzYy5yZXNldChmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBUcmFu
c3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIiLCAi
IiwgZGlnZXN0X2FsZzIpOwogfQogCkBAIC0zMDQsOSArMzEyLDM2IEBAIFRFU1RfRihUcmFuc3Bv
cnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0SWNlUmVub21pbmF0aW9uV2l0aER0bHMpIHsK
IFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBBZGRzVHJpY2tsZUljZU9w
dGlvbikgewogICBjcmlja2V0OjpUcmFuc3BvcnRPcHRpb25zIG9wdGlvbnM7CiAgIHN0ZDo6dW5p
cXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gb2ZmZXIoCi0gICAgICBmMV8uQ3JlYXRlT2Zm
ZXIob3B0aW9ucywgbnVsbHB0cikpOworICAgICAgZjFfLkNyZWF0ZU9mZmVyKG9wdGlvbnMsIG51
bGxwdHIsICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIEVYUEVDVF9UUlVFKG9mZmVyLT5IYXNPcHRp
b24oInRyaWNrbGUiKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4g
YW5zd2VyKAotICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0aW9ucywgdHJ1
ZSwgbnVsbHB0cikpOworICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0aW9u
cywgdHJ1ZSwgbnVsbHB0ciwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgRVhQRUNUX1RSVUUoYW5z
d2VyLT5IYXNPcHRpb24oInRyaWNrbGUiKSk7CiB9CisKKy8vIFRlc3QgQ3JlYXRlT2ZmZXIgd2l0
aCBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yLgorVEVTVF9GKFRyYW5zcG9ydERlc2NyaXB0aW9uRmFj
dG9yeVRlc3QsIENyZWF0ZU9mZmVySWNlQ3JlZGVudGlhbHNJdGVyYXRvcikgeworICBzdGQ6OnZl
Y3Rvcjxjcmlja2V0OjpJY2VQYXJhbWV0ZXJzPiBjcmVkZW50aWFscyA9IHsKKyAgICAgIGNyaWNr
ZXQ6OkljZVBhcmFtZXRlcnMoImthbGxlIiwgImFua2EiLCBmYWxzZSl9OworICBjcmlja2V0OjpJ
Y2VDcmVkZW50aWFsc0l0ZXJhdG9yIGNyZWRlbnRpYWxzSXRlcmF0b3IoY3JlZGVudGlhbHMpOwor
ICBjcmlja2V0OjpUcmFuc3BvcnRPcHRpb25zIG9wdGlvbnM7CisgIHN0ZDo6dW5pcXVlX3B0cjxU
cmFuc3BvcnREZXNjcmlwdGlvbj4gb2ZmZXIoCisgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9u
cywgbnVsbHB0ciwgJmNyZWRlbnRpYWxzSXRlcmF0b3IpKTsKKyAgRVhQRUNUX0VRKG9mZmVyLT5H
ZXRJY2VQYXJhbWV0ZXJzKCkudWZyYWcsIGNyZWRlbnRpYWxzWzBdLnVmcmFnKTsKKyAgRVhQRUNU
X0VRKG9mZmVyLT5HZXRJY2VQYXJhbWV0ZXJzKCkucHdkLCBjcmVkZW50aWFsc1swXS5wd2QpOwor
fQorCisvLyBUZXN0IENyZWF0ZUFuc3dlciB3aXRoIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IuCitU
RVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgQ3JlYXRlQW5zd2VySWNlQ3Jl
ZGVudGlhbHNJdGVyYXRvcikgeworICBjcmlja2V0OjpUcmFuc3BvcnRPcHRpb25zIG9wdGlvbnM7
CisgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gb2ZmZXIoCisgICAgICBm
MV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgbnVsbHB0ciwgJmljZV9jcmVkZW50aWFsc18pKTsKKwor
ICBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpJY2VQYXJhbWV0ZXJzPiBjcmVkZW50aWFscyA9IHsKKyAg
ICAgIGNyaWNrZXQ6OkljZVBhcmFtZXRlcnMoImthbGxlIiwgImFua2EiLCBmYWxzZSl9OworICBj
cmlja2V0OjpJY2VDcmVkZW50aWFsc0l0ZXJhdG9yIGNyZWRlbnRpYWxzSXRlcmF0b3IoY3JlZGVu
dGlhbHMpOworICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGFuc3dlcihm
MV8uQ3JlYXRlQW5zd2VyKAorICAgICAgb2ZmZXIuZ2V0KCksIG9wdGlvbnMsIGZhbHNlLCBudWxs
cHRyLCAmY3JlZGVudGlhbHNJdGVyYXRvcikpOworICBFWFBFQ1RfRVEoYW5zd2VyLT5HZXRJY2VQ
YXJhbWV0ZXJzKCkudWZyYWcsIGNyZWRlbnRpYWxzWzBdLnVmcmFnKTsKKyAgRVhQRUNUX0VRKGFu
c3dlci0+R2V0SWNlUGFyYW1ldGVycygpLnB3ZCwgY3JlZGVudGlhbHNbMF0ucHdkKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3RyYW5zcG9ydGZhY3RvcnlpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGZhY3RvcnlpbnRlcmZhY2UuaApp
bmRleCBjZTMyZWU4NDgzZWRlYjdlZTJmMDg0NTc4MzIzMDI0YWE3ODNhNjdlLi45ODA1ZGIwMDVj
YzAyMTU1ZmJkMjJkZjZjZWRlYTAzYjAyNDA5OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRmYWN0b3J5aW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvdHJhbnNwb3J0ZmFjdG9yeWludGVyZmFjZS5oCkBAIC0zNCw3ICszNCw3IEBAIGNs
YXNzIFRyYW5zcG9ydEZhY3RvcnlJbnRlcmZhY2UgewogCiAgIHZpcnR1YWwgc3RkOjp1bmlxdWVf
cHRyPER0bHNUcmFuc3BvcnRJbnRlcm5hbD4gQ3JlYXRlRHRsc1RyYW5zcG9ydCgKICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxJY2VUcmFuc3BvcnRJbnRlcm5hbD4gaWNlLAotICAgICAgY29uc3QgcnRj
OjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykgPSAwOworICAgICAgY29uc3Qgd2VicnRj
OjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykgPSAwOwogfTsKIAogfSAgLy8gbmFtZXNw
YWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3R1cm5wb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnBvcnQuY2MKaW5kZXggOTc1NDFmNjBjMDJk
ZDliNzQyZDdkZWYyMmMzNTA5ZmJiYjg0YjIxMS4uZWIwYWRmYTNjZTRlMWRiOTkwYzMwMzk3MmE2
YzBlODU1ODcwOTNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnBvcnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnBvcnQuY2MKQEAgLTI0LDcgKzI0
LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
bmV0aGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdz
L3N0cmluZ19idWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBjcmlja2V0IHsKQEAgLTYyMyw3ICs2MjIs
NyBAQCBib29sIFR1cm5Qb3J0OjpIYW5kbGVJbmNvbWluZ1BhY2tldChydGM6OkFzeW5jUGFja2V0
U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNv
Y2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBpZiAo
c29ja2V0ICE9IHNvY2tldF8pIHsKICAgICAvLyBUaGUgcGFja2V0IHdhcyByZWNlaXZlZCBvbiBh
IHNoYXJlZCBzb2NrZXQgYWZ0ZXIgd2UndmUgYWxsb2NhdGVkIGEgbmV3CiAgICAgLy8gc29ja2V0
IGZvciB0aGlzIFRVUk4gcG9ydC4KQEAgLTY2MCwxMiArNjU5LDEyIEBAIGJvb2wgVHVyblBvcnQ6
OkhhbmRsZUluY29taW5nUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAg
Ly8gYSByZXNwb25zZSB0byBhIHByZXZpb3VzIHJlcXVlc3QuCiAgIHVpbnQxNl90IG1zZ190eXBl
ID0gcnRjOjpHZXRCRTE2KGRhdGEpOwogICBpZiAoSXNUdXJuQ2hhbm5lbERhdGEobXNnX3R5cGUp
KSB7Ci0gICAgSGFuZGxlQ2hhbm5lbERhdGEobXNnX3R5cGUsIGRhdGEsIHNpemUsIHBhY2tldF90
aW1lKTsKKyAgICBIYW5kbGVDaGFubmVsRGF0YShtc2dfdHlwZSwgZGF0YSwgc2l6ZSwgcGFja2V0
X3RpbWVfdXMpOwogICAgIHJldHVybiB0cnVlOwogICB9CiAKICAgaWYgKG1zZ190eXBlID09IFRV
Uk5fREFUQV9JTkRJQ0FUSU9OKSB7Ci0gICAgSGFuZGxlRGF0YUluZGljYXRpb24oZGF0YSwgc2l6
ZSwgcGFja2V0X3RpbWUpOworICAgIEhhbmRsZURhdGFJbmRpY2F0aW9uKGRhdGEsIHNpemUsIHBh
Y2tldF90aW1lX3VzKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCkBAIC02OTYsOCArNjk1LDgg
QEAgdm9pZCBUdXJuUG9ydDo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNv
Y2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkg
ewotICBIYW5kbGVJbmNvbWluZ1BhY2tldChzb2NrZXQsIGRhdGEsIHNpemUsIHJlbW90ZV9hZGRy
LCBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRf
dCYgcGFja2V0X3RpbWVfdXMpIHsKKyAgSGFuZGxlSW5jb21pbmdQYWNrZXQoc29ja2V0LCBkYXRh
LCBzaXplLCByZW1vdGVfYWRkciwgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIFR1cm5Qb3J0
OjpPblNlbnRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LApAQCAtOTMzLDcg
KzkzMiw3IEBAIHZvaWQgVHVyblBvcnQ6Ok9uQWxsb2NhdGVSZXF1ZXN0VGltZW91dCgpIHsKIAog
dm9pZCBUdXJuUG9ydDo6SGFuZGxlRGF0YUluZGljYXRpb24oY29uc3QgY2hhciogZGF0YSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRf
dGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNr
ZXRfdGltZV91cykgewogICAvLyBSZWFkIGluIHRoZSBtZXNzYWdlLCBhbmQgcHJvY2VzcyBhY2Nv
cmRpbmcgdG8gUkZDNTc2NiwgU2VjdGlvbiAxMC40LgogICBydGM6OkJ5dGVCdWZmZXJSZWFkZXIg
YnVmKGRhdGEsIHNpemUpOwogICBUdXJuTWVzc2FnZSBtc2c7CkBAIC05NzIsMTMgKzk3MSwxMyBA
QCB2b2lkIFR1cm5Qb3J0OjpIYW5kbGVEYXRhSW5kaWNhdGlvbihjb25zdCBjaGFyKiBkYXRhLAog
ICB9CiAKICAgRGlzcGF0Y2hQYWNrZXQoZGF0YV9hdHRyLT5ieXRlcygpLCBkYXRhX2F0dHItPmxl
bmd0aCgpLCBleHRfYWRkciwgUFJPVE9fVURQLAotICAgICAgICAgICAgICAgICBwYWNrZXRfdGlt
ZSk7CisgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lX3VzKTsKIH0KIAogdm9pZCBUdXJuUG9y
dDo6SGFuZGxlQ2hhbm5lbERhdGEoaW50IGNoYW5uZWxfaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIC8vIFJlYWQgdGhlIG1l
c3NhZ2UsIGFuZCBwcm9jZXNzIGFjY29yZGluZyB0byBSRkM1NzY2LCBTZWN0aW9uIDExLjYuCiAg
IC8vICAgIDAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAyICAgICAgICAg
ICAgICAgICAgIDMKICAgLy8gICAgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQgNSA2IDcg
OCA5IDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxCkBAIC0xMDE0LDE2ICsxMDEzLDE2IEBAIHZvaWQg
VHVyblBvcnQ6OkhhbmRsZUNoYW5uZWxEYXRhKGludCBjaGFubmVsX2lkLAogICB9CiAKICAgRGlz
cGF0Y2hQYWNrZXQoZGF0YSArIFRVUk5fQ0hBTk5FTF9IRUFERVJfU0laRSwgbGVuLCBlbnRyeS0+
YWRkcmVzcygpLAotICAgICAgICAgICAgICAgICBQUk9UT19VRFAsIHBhY2tldF90aW1lKTsKKyAg
ICAgICAgICAgICAgICAgUFJPVE9fVURQLCBwYWNrZXRfdGltZV91cyk7CiB9CiAKIHZvaWQgVHVy
blBvcnQ6OkRpc3BhdGNoUGFja2V0KGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgcHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIGlmIChDb25u
ZWN0aW9uKiBjb25uID0gR2V0Q29ubmVjdGlvbihyZW1vdGVfYWRkcikpIHsKLSAgICBjb25uLT5P
blJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWUpOworICAgIGNvbm4tPk9uUmVhZFBh
Y2tldChkYXRhLCBzaXplLCBwYWNrZXRfdGltZV91cyk7CiAgIH0gZWxzZSB7CiAgICAgUG9ydDo6
T25SZWFkUGFja2V0KGRhdGEsIHNpemUsIHJlbW90ZV9hZGRyLCBwcm90byk7CiAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3R1cm5wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS90dXJucG9ydC5oCmluZGV4IDExYjU4ZDRmNmM5OWZhYTk0MjhiODI1YmFjNjdhZTg2
M2NkMWQzYWEuLjVkYjE5NTZhOWIxYWZhN2NhNjQ3YzI2ZWIzMjBlNWY0YjM2YTk1MGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3R1cm5wb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvdHVybnBvcnQuaApAQCAtMTQsMTAgKzE0LDEyIEBACiAjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAK
KyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wb3J0
LmgiCiAjaW5jbHVkZSAicDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9hc3luY2ludm9rZXIuaCIKQEAgLTUwLDI1ICs1Miw0NCBAQCBjbGFzcyBUdXJu
UG9ydCA6IHB1YmxpYyBQb3J0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYWNrZXRz
LgogICB9OwogICAvLyBDcmVhdGUgYSBUVVJOIHBvcnQgdXNpbmcgdGhlIHNoYXJlZCBVRFAgc29j
a2V0LCB8c29ja2V0fC4KLSAgc3RhdGljIFR1cm5Qb3J0KiBDcmVhdGUocnRjOjpUaHJlYWQqIHRo
cmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5
KiBmYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdv
cmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNv
Y2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJu
YW1lLCAgLy8gaWNlIHVzZXJuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgcGFzc3dvcmQsICAvLyBpY2UgcGFzc3dvcmQuCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFByb3RvY29sQWRkcmVzcyYgc2VydmVyX2FkZHJlc3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbGF5Q3JlZGVudGlhbHMmIGNyZWRlbnRpYWxzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VydmVyX3ByaW9yaXR5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICB3ZWJydGM6OlR1cm5DdXN0b21pemVyKiBjdXN0b21pemVyKSB7Ci0gICAg
cmV0dXJuIG5ldyBUdXJuUG9ydCh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIHNvY2tldCwgdXNl
cm5hbWUsIHBhc3N3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2FkZHJlc3Ms
IGNyZWRlbnRpYWxzLCBzZXJ2ZXJfcHJpb3JpdHksIG9yaWdpbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGN1c3RvbWl6ZXIpOworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFR1cm5Qb3J0PiBD
cmVhdGUoCisgICAgICBydGM6OlRocmVhZCogdGhyZWFkLAorICAgICAgcnRjOjpQYWNrZXRTb2Nr
ZXRGYWN0b3J5KiBmYWN0b3J5LAorICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3JrLAorICAgICAg
cnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHVzZXJuYW1lLCAgLy8gaWNlIHVzZXJuYW1lLgorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBh
c3N3b3JkLCAgLy8gaWNlIHBhc3N3b3JkLgorICAgICAgY29uc3QgUHJvdG9jb2xBZGRyZXNzJiBz
ZXJ2ZXJfYWRkcmVzcywKKyAgICAgIGNvbnN0IFJlbGF5Q3JlZGVudGlhbHMmIGNyZWRlbnRpYWxz
LAorICAgICAgaW50IHNlcnZlcl9wcmlvcml0eSwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBv
cmlnaW4sCisgICAgICB3ZWJydGM6OlR1cm5DdXN0b21pemVyKiBjdXN0b21pemVyKSB7CisgICAg
Ly8gVXNpbmcgYG5ld2AgdG8gYWNjZXNzIGEgbm9uLXB1YmxpYyBjb25zdHJ1Y3Rvci4KKyAgICBy
ZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZShuZXcgVHVyblBvcnQoCisgICAgICAgIHRocmVhZCwgZmFj
dG9yeSwgbmV0d29yaywgc29ja2V0LCB1c2VybmFtZSwgcGFzc3dvcmQsIHNlcnZlcl9hZGRyZXNz
LAorICAgICAgICBjcmVkZW50aWFscywgc2VydmVyX3ByaW9yaXR5LCBvcmlnaW4sIGN1c3RvbWl6
ZXIpKTsKKyAgfQorICAvLyBUT0RPKHN0ZXZlYW50b24pOiBSZW1vdmUgb25jZSBkb3duc3RyZWFt
IGNsaWVudHMgaGF2ZSBtb3ZlZCB0byB8Q3JlYXRlfC4KKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxUdXJuUG9ydD4gQ3JlYXRlVW5pcXVlKAorICAgICAgcnRjOjpUaHJlYWQqIHRocmVhZCwKKyAg
ICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogZmFjdG9yeSwKKyAgICAgIHJ0Yzo6TmV0d29y
ayogbmV0d29yaywKKyAgICAgIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKKyAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwgIC8vIGljZSB1c2VybmFtZS4KKyAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwgIC8vIGljZSBwYXNzd29yZC4KKyAgICAgIGNvbnN0
IFByb3RvY29sQWRkcmVzcyYgc2VydmVyX2FkZHJlc3MsCisgICAgICBjb25zdCBSZWxheUNyZWRl
bnRpYWxzJiBjcmVkZW50aWFscywKKyAgICAgIGludCBzZXJ2ZXJfcHJpb3JpdHksCisgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAorICAgICAgd2VicnRjOjpUdXJuQ3VzdG9taXplciog
Y3VzdG9taXplcikgeworICAgIHJldHVybiBDcmVhdGUodGhyZWFkLCBmYWN0b3J5LCBuZXR3b3Jr
LCBzb2NrZXQsIHVzZXJuYW1lLCBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgIHNlcnZlcl9h
ZGRyZXNzLCBjcmVkZW50aWFscywgc2VydmVyX3ByaW9yaXR5LCBvcmlnaW4sCisgICAgICAgICAg
ICAgICAgICBjdXN0b21pemVyKTsKICAgfQogCiAgIC8vIENyZWF0ZSBhIFRVUk4gcG9ydCB0aGF0
IHdpbGwgdXNlIGEgbmV3IHNvY2tldCwgYm91bmQgdG8gfG5ldHdvcmt8IGFuZAogICAvLyB1c2lu
ZyBhIHBvcnQgaW4gdGhlIHJhbmdlIGJldHdlZW4gfG1pbl9wb3J0fCBhbmQgfG1heF9wb3J0fC4K
LSAgc3RhdGljIFR1cm5Qb3J0KiBDcmVhdGUoCisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VHVy
blBvcnQ+IENyZWF0ZSgKICAgICAgIHJ0Yzo6VGhyZWFkKiB0aHJlYWQsCiAgICAgICBydGM6OlBh
Y2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCiAgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdvcmss
CkBAIC04NCwxMCArMTA1LDM0IEBAIGNsYXNzIFR1cm5Qb3J0IDogcHVibGljIFBvcnQgewogICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiB0bHNfZWxsaXB0aWNfY3VydmVzLAog
ICAgICAgd2VicnRjOjpUdXJuQ3VzdG9taXplciogY3VzdG9taXplciwKICAgICAgIHJ0Yzo6U1NM
Q2VydGlmaWNhdGVWZXJpZmllciogdGxzX2NlcnRfdmVyaWZpZXIgPSBudWxscHRyKSB7Ci0gICAg
cmV0dXJuIG5ldyBUdXJuUG9ydCh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIG1pbl9wb3J0LCBt
YXhfcG9ydCwgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCwgc2Vy
dmVyX2FkZHJlc3MsIGNyZWRlbnRpYWxzLCBzZXJ2ZXJfcHJpb3JpdHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBvcmlnaW4sIHRsc19hbHBuX3Byb3RvY29scywgdGxzX2VsbGlwdGljX2N1cnZl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZXIsIHRsc19jZXJ0X3ZlcmlmaWVy
KTsKKyAgICAvLyBVc2luZyBgbmV3YCB0byBhY2Nlc3MgYSBub24tcHVibGljIGNvbnN0cnVjdG9y
LgorICAgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlKAorICAgICAgICBuZXcgVHVyblBvcnQodGhy
ZWFkLCBmYWN0b3J5LCBuZXR3b3JrLCBtaW5fcG9ydCwgbWF4X3BvcnQsIHVzZXJuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgcGFzc3dvcmQsIHNlcnZlcl9hZGRyZXNzLCBjcmVkZW50aWFscywg
c2VydmVyX3ByaW9yaXR5LAorICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLCB0bHNfYWxwbl9w
cm90b2NvbHMsIHRsc19lbGxpcHRpY19jdXJ2ZXMsCisgICAgICAgICAgICAgICAgICAgICBjdXN0
b21pemVyLCB0bHNfY2VydF92ZXJpZmllcikpOworICB9CisgIC8vIFRPRE8oc3RldmVhbnRvbik6
IFJlbW92ZSBvbmNlIGRvd25zdHJlYW0gY2xpZW50cyBoYXZlIG1vdmVkIHRvIHxDcmVhdGV8Lgor
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFR1cm5Qb3J0PiBDcmVhdGVVbmlxdWUoCisgICAgICBy
dGM6OlRocmVhZCogdGhyZWFkLAorICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0
b3J5LAorICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3JrLAorICAgICAgdWludDE2X3QgbWluX3Bv
cnQsCisgICAgICB1aW50MTZfdCBtYXhfcG9ydCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1
c2VybmFtZSwgIC8vIGljZSB1c2VybmFtZS4KKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNz
d29yZCwgIC8vIGljZSBwYXNzd29yZC4KKyAgICAgIGNvbnN0IFByb3RvY29sQWRkcmVzcyYgc2Vy
dmVyX2FkZHJlc3MsCisgICAgICBjb25zdCBSZWxheUNyZWRlbnRpYWxzJiBjcmVkZW50aWFscywK
KyAgICAgIGludCBzZXJ2ZXJfcHJpb3JpdHksCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3Jp
Z2luLAorICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiB0bHNfYWxwbl9wcm90
b2NvbHMsCisgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHRsc19lbGxpcHRp
Y19jdXJ2ZXMsCisgICAgICB3ZWJydGM6OlR1cm5DdXN0b21pemVyKiBjdXN0b21pemVyLAorICAg
ICAgcnRjOjpTU0xDZXJ0aWZpY2F0ZVZlcmlmaWVyKiB0bHNfY2VydF92ZXJpZmllciA9IG51bGxw
dHIpIHsKKyAgICByZXR1cm4gQ3JlYXRlKHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgbWluX3Bv
cnQsIG1heF9wb3J0LCB1c2VybmFtZSwKKyAgICAgICAgICAgICAgICAgIHBhc3N3b3JkLCBzZXJ2
ZXJfYWRkcmVzcywgY3JlZGVudGlhbHMsIHNlcnZlcl9wcmlvcml0eSwKKyAgICAgICAgICAgICAg
ICAgIG9yaWdpbiwgdGxzX2FscG5fcHJvdG9jb2xzLCB0bHNfZWxsaXB0aWNfY3VydmVzLCBjdXN0
b21pemVyLAorICAgICAgICAgICAgICAgICAgdGxzX2NlcnRfdmVyaWZpZXIpOwogICB9CiAKICAg
flR1cm5Qb3J0KCkgb3ZlcnJpZGU7CkBAIC0xMzAsMTMgKzE3NSwxNCBAQCBjbGFzcyBUdXJuUG9y
dCA6IHB1YmxpYyBQb3J0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2Fk
ZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBw
YWNrZXRfdGltZSkgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBwYWNrZXRfdGltZV91cykgb3ZlcnJpZGU7CiAgIGJvb2wgQ2FuSGFuZGxlSW5jb21pbmdQYWNr
ZXRzRnJvbSgKICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcikgY29uc3Qgb3Zl
cnJpZGU7CiAgIHZpcnR1YWwgdm9pZCBPblJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tl
dCogc29ja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRh
dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNr
ZXRfdGltZV91cyk7CiAKICAgdm9pZCBPblNlbnRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tl
dCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNlbnRQYWNrZXQmIHNl
bnRfcGFja2V0KSBvdmVycmlkZTsKQEAgLTI2OCwxMyArMzE0LDE4IEBAIGNsYXNzIFR1cm5Qb3J0
IDogcHVibGljIFBvcnQgewogICB2b2lkIE9uQWxsb2NhdGVFcnJvcigpOwogICB2b2lkIE9uQWxs
b2NhdGVSZXF1ZXN0VGltZW91dCgpOwogCi0gIHZvaWQgSGFuZGxlRGF0YUluZGljYXRpb24oY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7Ci0gIHZvaWQgSGFuZGxlQ2hhbm5l
bERhdGEoaW50IGNoYW5uZWxfaWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUp
OwotICB2b2lkIERpc3BhdGNoUGFja2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplLAot
ICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgIFByb3Rv
Y29sVHlwZSBwcm90bywgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgIHZv
aWQgSGFuZGxlRGF0YUluZGljYXRpb24oY29uc3QgY2hhciogZGF0YSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90IHBhY2tldF90aW1lX3VzKTsKKyAgdm9pZCBIYW5kbGVDaGFubmVsRGF0YShpbnQgY2hh
bm5lbF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpOworICB2b2lkIERpc3BhdGNoUGFja2V0KGNvbnN0
IGNoYXIqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKKyAg
ICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgcHJvdG8sCisgICAgICAgICAgICAgICAg
ICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAKICAgYm9vbCBTY2hlZHVsZVJlZnJlc2go
dWludDMyX3QgbGlmZXRpbWUpOwogICB2b2lkIFNlbmRSZXF1ZXN0KFN0dW5SZXF1ZXN0KiByZXF1
ZXN0LCBpbnQgZGVsYXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnBvcnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJucG9ydF91bml0dGVz
dC5jYwppbmRleCBiYWMzNWU4OTFjZDQ5ZGNkZTBjYTM2OTQxY2NjYjZiYzg5ZTJiMDQxLi42MTdl
Nzc5OGFkZjUzZmFlNTQ0ZTAwYzE5YzQ0NDYxMWNjOWRjMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJucG9ydF91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS90dXJucG9ydF91bml0dGVzdC5jYwpAQCAtMTk0LDIzICsxOTQsMjMgQEAgY2xhc3Mg
VHVyblBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsCiAgIHZvaWQgT25UdXJuUmVhZFBh
Y2tldChDb25uZWN0aW9uKiBjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICAgIHR1cm5f
cGFja2V0c18ucHVzaF9iYWNrKHJ0Yzo6QnVmZmVyKGRhdGEsIHNpemUpKTsKICAgfQogICB2b2lk
IE9uVWRwUG9ydENvbXBsZXRlKFBvcnQqIHBvcnQpIHsgdWRwX3JlYWR5XyA9IHRydWU7IH0KICAg
dm9pZCBPblVkcFJlYWRQYWNrZXQoQ29ubmVjdGlvbiogY29ubiwKICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0
X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykg
ewogICAgIHVkcF9wYWNrZXRzXy5wdXNoX2JhY2socnRjOjpCdWZmZXIoZGF0YSwgc2l6ZSkpOwog
ICB9CiAgIHZvaWQgT25Tb2NrZXRSZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNv
Y2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpIHsKICAg
ICB0dXJuX3BvcnRfLT5IYW5kbGVJbmNvbWluZ1BhY2tldChzb2NrZXQsIGRhdGEsIHNpemUsIHJl
bW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90
aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdGltZV91
cyk7CiAgIH0KICAgdm9pZCBPblR1cm5Qb3J0Q2xvc2VkKFR1cm5Qb3J0KiBwb3J0KSB7IHR1cm5f
cG9ydF9jbG9zZWRfID0gdHJ1ZTsgfQogICB2b2lkIE9uVHVyblBvcnREZXN0cm95ZWQoUG9ydElu
dGVyZmFjZSogcG9ydCkgeyB0dXJuX3BvcnRfZGVzdHJveWVkXyA9IHRydWU7IH0KQEAgLTI3MCwx
MCArMjcwLDkgQEAgY2xhc3MgVHVyblBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByb3RvY29sQWRkcmVzcyYg
c2VydmVyX2FkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBvcmlnaW4pIHsKICAgICBSZWxheUNyZWRlbnRpYWxzIGNyZWRlbnRpYWxz
KHVzZXJuYW1lLCBwYXNzd29yZCk7Ci0gICAgdHVybl9wb3J0Xy5yZXNldChUdXJuUG9ydDo6Q3Jl
YXRlKAorICAgIHR1cm5fcG9ydF8gPSBUdXJuUG9ydDo6Q3JlYXRlKAogICAgICAgICAmbWFpbl8s
ICZzb2NrZXRfZmFjdG9yeV8sIG5ldHdvcmssIDAsIDAsIGtJY2VVZnJhZzEsIGtJY2VQd2QxLAot
ICAgICAgICBzZXJ2ZXJfYWRkcmVzcywgY3JlZGVudGlhbHMsIDAsIG9yaWdpbiwgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+KCksCi0gICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpLCB0
dXJuX2N1c3RvbWl6ZXJfLmdldCgpKSk7CisgICAgICAgIHNlcnZlcl9hZGRyZXNzLCBjcmVkZW50
aWFscywgMCwgb3JpZ2luLCB7fSwge30sIHR1cm5fY3VzdG9taXplcl8uZ2V0KCkpOwogICAgIC8v
IFRoaXMgVFVSTiBwb3J0IHdpbGwgYmUgdGhlIGNvbnRyb2xsaW5nLgogICAgIHR1cm5fcG9ydF8t
PlNldEljZVJvbGUoSUNFUk9MRV9DT05UUk9MTElORyk7CiAgICAgQ29ubmVjdFNpZ25hbHMoKTsK
QEAgLTMwMSwxMCArMzAwLDEwIEBAIGNsYXNzIFR1cm5Qb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0LAogICAgIH0KIAogICAgIFJlbGF5Q3JlZGVudGlhbHMgY3JlZGVudGlhbHModXNlcm5h
bWUsIHBhc3N3b3JkKTsKLSAgICB0dXJuX3BvcnRfLnJlc2V0KFR1cm5Qb3J0OjpDcmVhdGUoJm1h
aW5fLCAmc29ja2V0X2ZhY3RvcnlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNYWtlTmV0d29yayhrTG9jYWxBZGRyMSksIHNvY2tldF8uZ2V0KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtJY2VVZnJhZzEsIGtJY2VQd2QxLCBzZXJ2ZXJf
YWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlh
bHMsIDAsIHN0ZDo6c3RyaW5nKCksIG51bGxwdHIpKTsKKyAgICB0dXJuX3BvcnRfID0KKyAgICAg
ICAgVHVyblBvcnQ6OkNyZWF0ZSgmbWFpbl8sICZzb2NrZXRfZmFjdG9yeV8sIE1ha2VOZXR3b3Jr
KGtMb2NhbEFkZHIxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRfLmdldCgpLCBr
SWNlVWZyYWcxLCBrSWNlUHdkMSwgc2VydmVyX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlZGVudGlhbHMsIDAsIHN0ZDo6c3RyaW5nKCksIG51bGxwdHIpOwogICAgIC8vIFRo
aXMgVFVSTiBwb3J0IHdpbGwgYmUgdGhlIGNvbnRyb2xsaW5nLgogICAgIHR1cm5fcG9ydF8tPlNl
dEljZVJvbGUoSUNFUk9MRV9DT05UUk9MTElORyk7CiAgICAgQ29ubmVjdFNpZ25hbHMoKTsKQEAg
LTMyOSw5ICszMjgsOSBAQCBjbGFzcyBUdXJuUG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCwKICAgdm9pZCBDcmVhdGVVZHBQb3J0KCkgeyBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsg
fQogCiAgIHZvaWQgQ3JlYXRlVWRwUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyZXNzKSB7
Ci0gICAgdWRwX3BvcnRfLnJlc2V0KFVEUFBvcnQ6OkNyZWF0ZSgKLSAgICAgICAgJm1haW5fLCAm
c29ja2V0X2ZhY3RvcnlfLCBNYWtlTmV0d29yayhhZGRyZXNzKSwgMCwgMCwga0ljZVVmcmFnMiwK
LSAgICAgICAga0ljZVB3ZDIsIHN0ZDo6c3RyaW5nKCksIGZhbHNlLCBhYnNsOjpudWxsb3B0KSk7
CisgICAgdWRwX3BvcnRfID0gVURQUG9ydDo6Q3JlYXRlKCZtYWluXywgJnNvY2tldF9mYWN0b3J5
XywgTWFrZU5ldHdvcmsoYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIGtJY2VVZnJhZzIsIGtJY2VQd2QyLCBzdGQ6OnN0cmluZygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWxzZSwgYWJzbDo6bnVsbG9wdCk7CiAgICAgLy8gVURQIHBv
cnQgd2lsbCBiZSBjb250cm9sbGVkLgogICAgIHVkcF9wb3J0Xy0+U2V0SWNlUm9sZShJQ0VST0xF
X0NPTlRST0xMRUQpOwogICAgIHVkcF9wb3J0Xy0+U2lnbmFsUG9ydENvbXBsZXRlLmNvbm5lY3Qo
dGhpcywKQEAgLTEwMzIsOCArMTAzMSw3IEBAIFRFU1RfRihUdXJuUG9ydFRlc3QsIFRlc3RUdXJu
QWxsb2NhdGVNaXNtYXRjaCkgewogICBzdGQ6OnN0cmluZyB0ZXN0X3BhY2tldCA9ICJUZXN0IHBh
Y2tldCI7CiAgIEVYUEVDVF9GQUxTRSh0dXJuX3BvcnRfLT5IYW5kbGVJbmNvbWluZ1BhY2tldCgK
ICAgICAgIHNvY2tldF8uZ2V0KCksIHRlc3RfcGFja2V0LmRhdGEoKSwgdGVzdF9wYWNrZXQuc2l6
ZSgpLAotICAgICAgcnRjOjpTb2NrZXRBZGRyZXNzKGtUdXJuVWRwRXh0QWRkci5pcGFkZHIoKSwg
MCksCi0gICAgICBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpKTsKKyAgICAgIHJ0Yzo6U29ja2V0
QWRkcmVzcyhrVHVyblVkcEV4dEFkZHIuaXBhZGRyKCksIDApLCBydGM6OlRpbWVNaWNyb3MoKSkp
OwogfQogCiAvLyBUZXN0cyB0aGF0IGEgc2hhcmVkLXNvY2tldC1UdXJuUG9ydCBjcmVhdGVzIGl0
cyBvd24gc29ja2V0IGFmdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJuc2VydmVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnNlcnZlci5jYwppbmRleCAw
MjIxMTNlN2U3NDZhMGM1OTA3NmI4YjA2MmNiMzEwOTkyYTk0ZTMwLi5hOGJiNDFjODdhNmFjYWQy
ZTI4NGFhNzgzMTAxNTM3Zjc3NzRmZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJuc2VydmVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIu
Y2MKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tl
dGFkYXB0ZXJzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3RocmVhZC5oIgogCkBAIC0xOTksOSArMTk4LDEwIEBAIHZvaWQgVHVyblNlcnZlcjo6T25JbnRl
cm5hbFNvY2tldENsb3NlKHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKIH0KIAogdm9p
ZCBUdXJuU2VydmVyOjpPbkludGVybmFsUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNv
Y2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRk
cmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAgUlRDX0RDSEVD
Syh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgLy8gRmFpbCBpZiB0
aGUgcGFja2V0IGlzIHRvbyBzbWFsbCB0byBldmVuIGNvbnRhaW4gYSBjaGFubmVsIGhlYWRlci4K
ICAgaWYgKHNpemUgPCBUVVJOX0NIQU5ORUxfSEVBREVSX1NJWkUpIHsKQEAgLTg0Miw5ICs4NDIs
MTAgQEAgdm9pZCBUdXJuU2VydmVyQWxsb2NhdGlvbjo6SGFuZGxlQ2hhbm5lbERhdGEoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsKIAogdm9pZCBUdXJuU2VydmVyQWxsb2NhdGlvbjo6
T25FeHRlcm5hbFBhY2tldCgKICAgICBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0g
ICAgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsCisgICAgY29uc3QgY2hhciogZGF0YSwK
KyAgICBzaXplX3Qgc2l6ZSwKICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHIsCi0g
ICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgIGNvbnN0IGludDY0
X3QmIC8qIHBhY2tldF90aW1lX3VzICovKSB7CiAgIFJUQ19EQ0hFQ0soZXh0ZXJuYWxfc29ja2V0
Xy5nZXQoKSA9PSBzb2NrZXQpOwogICBDaGFubmVsKiBjaGFubmVsID0gRmluZENoYW5uZWwoYWRk
cik7CiAgIGlmIChjaGFubmVsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJuc2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJuc2VydmVyLmgKaW5kZXgg
ZTdmODg2Y2Y4ZmI1NTNkZTM0OTRjYmU3MjgxM2E5ZDg4ZDNmOTg0Yi4uYWY1MTI1MWJiY2QwY2Yw
Mzk4NGYwMzFiYjI3Mjg5N2UzNDNlNDM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnNlcnZlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIu
aApAQCAtMTA1LDkgKzEwNSwxMCBAQCBjbGFzcyBUdXJuU2VydmVyQWxsb2NhdGlvbiA6IHB1Ymxp
YyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAogICB2b2lkIEhhbmRsZUNoYW5uZWxCaW5kUmVxdWVzdChj
b25zdCBUdXJuTWVzc2FnZSogbXNnKTsKIAogICB2b2lkIE9uRXh0ZXJuYWxQYWNrZXQocnRjOjpB
c3luY1BhY2tldFNvY2tldCogc29ja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsKIAog
ICBzdGF0aWMgaW50IENvbXB1dGVMaWZldGltZShjb25zdCBUdXJuTWVzc2FnZSogbXNnKTsKICAg
Ym9vbCBIYXNQZXJtaXNzaW9uKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiBhZGRyKTsKQEAgLTI1Niw5
ICsyNTcsMTEgQEAgY2xhc3MgVHVyblNlcnZlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8
PiB7CiAKICBwcml2YXRlOgogICBzdGQ6OnN0cmluZyBHZW5lcmF0ZU5vbmNlKGludDY0X3Qgbm93
KSBjb25zdDsKLSAgdm9pZCBPbkludGVybmFsUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQq
IHNvY2tldCwgY29uc3QgY2hhciogZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzaXplLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgdm9pZCBP
bkludGVybmFsUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0
QWRkcmVzcyYgYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3Qm
IHBhY2tldF90aW1lX3VzKTsKIAogICB2b2lkIE9uTmV3SW50ZXJuYWxDb25uZWN0aW9uKHJ0Yzo6
QXN5bmNTb2NrZXQqIHNvY2tldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3VkcHRyYW5zcG9ydC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3VkcHRyYW5zcG9ydC5j
YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIxZTViODc2OWVlNmRjNjZmNWEzYjcy
NGIzN2Y4MzA0ZTExMDI2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS91ZHB0cmFuc3BvcnQuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAq
ICBDb3B5cmlnaHQgMjAxNiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0g
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgInAycC9iYXNlL3VkcHRyYW5zcG9ydC5oIgotCi0jaW5j
bHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBGb3Igc3RkOjptb3ZlLgotCi0j
aW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9hc3luY3VkcHNvY2tldC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9uZXRoZWxwZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRy
ZXNzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
dGhyZWFkX2NoZWNrZXIuaCIKLQotbmFtZXNwYWNlIGNyaWNrZXQgewotCi1VZHBUcmFuc3BvcnQ6
OlVkcFRyYW5zcG9ydChjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0X25hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tl
dD4gc29ja2V0KQotICAgIDogdHJhbnNwb3J0X25hbWVfKHRyYW5zcG9ydF9uYW1lKSwgc29ja2V0
XyhzdGQ6Om1vdmUoc29ja2V0KSkgewotICBSVENfRENIRUNLKHNvY2tldF8pOwotICBzb2NrZXRf
LT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3QodGhpcywgJlVkcFRyYW5zcG9ydDo6T25Tb2NrZXRS
ZWFkUGFja2V0KTsKLSAgc29ja2V0Xy0+U2lnbmFsU2VudFBhY2tldC5jb25uZWN0KHRoaXMsICZV
ZHBUcmFuc3BvcnQ6Ok9uU29ja2V0U2VudFBhY2tldCk7Ci19Ci0KLVVkcFRyYW5zcG9ydDo6flVk
cFRyYW5zcG9ydCgpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04oJm5ldHdvcmtfdGhyZWFkX2NoZWNr
ZXJfKTsKLX0KLQotcnRjOjpTb2NrZXRBZGRyZXNzIFVkcFRyYW5zcG9ydDo6R2V0TG9jYWxBZGRy
ZXNzKCkgY29uc3QgewotICBSVENfRENIRUNLX1JVTl9PTigmbmV0d29ya190aHJlYWRfY2hlY2tl
cl8pOwotICByZXR1cm4gc29ja2V0Xy0+R2V0TG9jYWxBZGRyZXNzKCk7Ci19Ci0KLWJvb2wgVWRw
VHJhbnNwb3J0OjpTZXRSZW1vdGVBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRk
cikgewotICBSVENfRENIRUNLX1JVTl9PTigmbmV0d29ya190aHJlYWRfY2hlY2tlcl8pOwotICBp
ZiAoIWFkZHIuSXNDb21wbGV0ZSgpKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVt
b3RlIGFkZHJlc3Mgbm90IGNvbXBsZXRlLiI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIC8v
IFRPRE8oam9oYW4pOiBjaGVjayBmb3IgaXB2NCwgb3RoZXIgc2V0dGluZ3MuCi0gIGJvb2wgcHJl
dl9kZXN0aW5hdGlvbl9uaWwgPSByZW1vdGVfYWRkcmVzc18uSXNOaWwoKTsKLSAgcmVtb3RlX2Fk
ZHJlc3NfID0gYWRkcjsKLSAgLy8gR29pbmcgZnJvbSAiZGlkbid0IGhhdmUgZGVzdGluYXRpb24i
IHRvICJoYXZlIGRlc3RpbmF0aW9uIiBvciB2aWNlIHZlcnNhLgotICBpZiAocHJldl9kZXN0aW5h
dGlvbl9uaWwgIT0gcmVtb3RlX2FkZHJlc3NfLklzTmlsKCkpIHsKLSAgICBTaWduYWxXcml0YWJs
ZVN0YXRlKHRoaXMpOwotICAgIGlmIChwcmV2X2Rlc3RpbmF0aW9uX25pbCkgewotICAgICAgU2ln
bmFsUmVhZHlUb1NlbmQodGhpcyk7Ci0gICAgfQotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi1y
dGM6OlNvY2tldEFkZHJlc3MgVWRwVHJhbnNwb3J0OjpHZXRSZW1vdGVBZGRyZXNzKCkgY29uc3Qg
ewotICBSVENfRENIRUNLX1JVTl9PTigmbmV0d29ya190aHJlYWRfY2hlY2tlcl8pOwotICByZXR1
cm4gcmVtb3RlX2FkZHJlc3NfOwotfQotCi1jb25zdCBzdGQ6OnN0cmluZyYgVWRwVHJhbnNwb3J0
Ojp0cmFuc3BvcnRfbmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJuIHRyYW5zcG9ydF9uYW1lXzsKLX0K
LQotYm9vbCBVZHBUcmFuc3BvcnQ6OnJlY2VpdmluZygpIGNvbnN0IHsKLSAgLy8gVE9ETyhqb2hh
bik6IEltcGxlbWVudCBtZXRob2QgYW5kIHNpZ25hbC4KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgVWRwVHJhbnNwb3J0Ojp3cml0YWJsZSgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDS19SVU5fT04o
Jm5ldHdvcmtfdGhyZWFkX2NoZWNrZXJfKTsKLSAgcmV0dXJuICFyZW1vdGVfYWRkcmVzc18uSXNO
aWwoKTsKLX0KLQotaW50IFVkcFRyYW5zcG9ydDo6U2VuZFBhY2tldChjb25zdCBjaGFyKiBkYXRh
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldE9wdGlvbnMmIG9wdGlvbnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykgewotICAvLyBObyB0aHJlYWRfY2hl
Y2tlciBpbiBoaWdoIGZyZXF1ZW5jeSBuZXR3b3JrIGZ1bmN0aW9uLgotICBpZiAocmVtb3RlX2Fk
ZHJlc3NfLklzTmlsKCkpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJSZW1vdGUgYWRk
cmVzcyBub3Qgc2V0LiI7Ci0gICAgc2VuZF9lcnJvcl8gPSBFTk9UQ09OTjsKLSAgICByZXR1cm4g
LTE7Ci0gIH0KLSAgaW50IHJlc3VsdCA9Ci0gICAgICBzb2NrZXRfLT5TZW5kVG8oKGNvbnN0IHZv
aWQqKWRhdGEsIGxlbiwgcmVtb3RlX2FkZHJlc3NfLCBvcHRpb25zKTsKLSAgaWYgKHJlc3VsdCA8
PSAwKSB7Ci0gICAgUlRDX0xPRyhMU19WRVJCT1NFKSA8PCAiU2VuZFBhY2tldCgpICIgPDwgcmVz
dWx0OwotICB9Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLWFic2w6Om9wdGlvbmFsPHJ0Yzo6TmV0
d29ya1JvdXRlPiBVZHBUcmFuc3BvcnQ6Om5ldHdvcmtfcm91dGUoKSBjb25zdCB7Ci0gIHJ0Yzo6
TmV0d29ya1JvdXRlIG5ldHdvcmtfcm91dGU7Ci0gIG5ldHdvcmtfcm91dGUucGFja2V0X292ZXJo
ZWFkID0KLSAgICAgIC8qa1VkcE92ZXJoZWFkPSovOCArIEdldElwT3ZlcmhlYWQoR2V0TG9jYWxB
ZGRyZXNzKCkuZmFtaWx5KCkpOwotICByZXR1cm4gYWJzbDo6b3B0aW9uYWw8cnRjOjpOZXR3b3Jr
Um91dGU+KG5ldHdvcmtfcm91dGUpOwotfQotCi1pbnQgVWRwVHJhbnNwb3J0OjpTZXRPcHRpb24o
cnRjOjpTb2NrZXQ6Ok9wdGlvbiBvcHQsIGludCB2YWx1ZSkgewotICByZXR1cm4gMDsKLX0KLQot
aW50IFVkcFRyYW5zcG9ydDo6R2V0RXJyb3IoKSB7Ci0gIHJldHVybiBzZW5kX2Vycm9yXzsKLX0K
LQotcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogVWRwVHJhbnNwb3J0OjpHZXRJbnRlcm5h
bCgpIHsKLSAgcmV0dXJuIHRoaXM7Ci19Ci0KLXZvaWQgVWRwVHJhbnNwb3J0OjpPblNvY2tldFJl
YWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRp
bWUmIHBhY2tldF90aW1lKSB7Ci0gIC8vIE5vIHRocmVhZF9jaGVja2VyIGluIGhpZ2ggZnJlcXVl
bmN5IG5ldHdvcmsgZnVuY3Rpb24uCi0gIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwgbGVu
LCBwYWNrZXRfdGltZSwgMCk7Ci19Ci0KLXZvaWQgVWRwVHJhbnNwb3J0OjpPblNvY2tldFNlbnRQ
YWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNlbnRQYWNrZXQmIHBhY2tldCkgewotICBS
VENfRENIRUNLX0VRKHNvY2tldF8uZ2V0KCksIHNvY2tldCk7Ci0gIFNpZ25hbFNlbnRQYWNrZXQo
dGhpcywgcGFja2V0KTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3VkcHRy
YW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvdWRwdHJhbnNwb3J0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2YTc5
NWYyZTFmOWE1MDQxMTQ2ZjhhOWFhZGJjNmQ2OTkwMjZlNGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJhbnNwb3J0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4
OSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIFAyUF9CQVNFX1VEUFRSQU5T
UE9SVF9IXwotI2RlZmluZSBQMlBfQkFTRV9VRFBUUkFOU1BPUlRfSF8KLQotI2luY2x1ZGUgPG1l
bW9yeT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFs
LmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvdWRwdHJhbnNwb3J0aW50ZXJmYWNlLmgiCi0jaW5jbHVk
ZSAicDJwL2Jhc2UvcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9hc3luY3BhY2tldHNvY2tldC5oIiAgLy8gRm9yIFBhY2tldE9wdGlvbnMuCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKLQotbmFtZXNwYWNlIHJ0YyB7Ci1jbGFzcyBBc3lu
Y1BhY2tldFNvY2tldDsKLXN0cnVjdCBQYWNrZXRUaW1lOwotc3RydWN0IFNlbnRQYWNrZXQ7Ci1j
bGFzcyBTb2NrZXRBZGRyZXNzOwotfSAgLy8gbmFtZXNwYWNlIHJ0YwotCi1uYW1lc3BhY2UgY3Jp
Y2tldCB7Ci0KLS8vIEltcGxlbWVudGF0aW9uIG9mIFVkcFRyYW5zcG9ydEludGVyZmFjZS4KLS8v
IFVzZWQgYnkgT3J0Y0ZhY3RvcnkuCi1jbGFzcyBVZHBUcmFuc3BvcnQgOiBwdWJsaWMgcnRjOjpQ
YWNrZXRUcmFuc3BvcnRJbnRlcm5hbCwKLSAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB3ZWJy
dGM6OlVkcFRyYW5zcG9ydEludGVyZmFjZSB7Ci0gcHVibGljOgotICAvLyB8dHJhbnNwb3J0X25h
bWV8IGlzIG9ubHkgdXNlZCBmb3IgaWRlbnRpZmljYXRpb24vbG9nZ2luZy4KLSAgLy8gfHNvY2tl
dHwgbXVzdCBiZSBub24tbnVsbC4KLSAgVWRwVHJhbnNwb3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0
cmFuc3BvcnRfbmFtZSwKLSAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5j
UGFja2V0U29ja2V0PiBzb2NrZXQpOwotICB+VWRwVHJhbnNwb3J0KCkgb3ZlcnJpZGU7Ci0KLSAg
Ly8gT3ZlcnJpZGVzIG9mIFVkcFRyYW5zcG9ydEludGVyZmFjZSwgdXNlZCBieSB0aGUgQVBJIGNv
bnN1bWVyLgotICBydGM6OlNvY2tldEFkZHJlc3MgR2V0TG9jYWxBZGRyZXNzKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gIGJvb2wgU2V0UmVtb3RlQWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3Mm
IGFkZHIpIG92ZXJyaWRlOwotICBydGM6OlNvY2tldEFkZHJlc3MgR2V0UmVtb3RlQWRkcmVzcygp
IGNvbnN0IG92ZXJyaWRlOwotCi0gIC8vIE92ZXJyaWRlcyBvZiBQYWNrZXRUcmFuc3BvcnRJbnRl
cm5hbCwgdXNlZCBieSB3ZWJydGMgaW50ZXJuYWxseS4KLSAgY29uc3Qgc3RkOjpzdHJpbmcmIHRy
YW5zcG9ydF9uYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgYm9vbCByZWNlaXZpbmcoKSBjb25z
dCBvdmVycmlkZTsKLQotICBib29sIHdyaXRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgaW50
IFNlbmRQYWNrZXQoY29uc3QgY2hhciogZGF0YSwKLSAgICAgICAgICAgICAgICAgc2l6ZV90IGxl
biwKLSAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRPcHRpb25zJiBvcHRpb25zLAot
ICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpIG92ZXJyaWRlOwotCi0gIGludCBTZXRPcHRpb24o
cnRjOjpTb2NrZXQ6Ok9wdGlvbiBvcHQsIGludCB2YWx1ZSkgb3ZlcnJpZGU7Ci0KLSAgaW50IEdl
dEVycm9yKCkgb3ZlcnJpZGU7Ci0KLSAgYWJzbDo6b3B0aW9uYWw8cnRjOjpOZXR3b3JrUm91dGU+
IG5ldHdvcmtfcm91dGUoKSBjb25zdCBvdmVycmlkZTsKLQotIHByb3RlY3RlZDoKLSAgUGFja2V0
VHJhbnNwb3J0SW50ZXJuYWwqIEdldEludGVybmFsKCkgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgot
ICB2b2lkIE9uU29ja2V0UmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOwotICB2b2lkIE9uU29j
a2V0U2VudFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgcGFja2V0KTsKLSAgYm9vbCBJ
c0xvY2FsQ29uc2lzdGVudCgpOwotCi0gIHN0ZDo6c3RyaW5nIHRyYW5zcG9ydF9uYW1lXzsKLSAg
aW50IHNlbmRfZXJyb3JfID0gMDsKLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQ+IHNvY2tldF87Ci0gIC8vIElmIG5vdCBzZXQsIHdpbGwgYmUgYW4gIm5pbCIgYWRkcmVz
cyAoIklzTmlsIiByZXR1cm5zIHRydWUpLgotICBydGM6OlNvY2tldEFkZHJlc3MgcmVtb3RlX2Fk
ZHJlc3NfOwotICBydGM6OlRocmVhZENoZWNrZXIgbmV0d29ya190aHJlYWRfY2hlY2tlcl87Ci19
OwotCi19ICAvLyBuYW1lc3BhY2UgY3JpY2tldAotCi0jZW5kaWYgIC8vIFAyUF9CQVNFX1VEUFRS
QU5TUE9SVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJhbnNwb3J0X3VuaXR0
ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWQzNjY1OTVmNDE2YjgyY2Ey
MmUxYmRhZDg5MGJhNzg1N2RmYmRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3VkcHRyYW5zcG9ydF91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE4OSAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE2IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1
ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVk
ZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAicDJwL2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0b3J5
LmgiCi0jaW5jbHVkZSAicDJwL2Jhc2UvcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuaCIKLSNpbmNs
dWRlICJwMnAvYmFzZS91ZHB0cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9hc3luY3Bh
Y2tldHNvY2tldC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvaXBhZGRyZXNzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldHNlcnZlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
cmVhZC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuaCIKLQotbmFt
ZXNwYWNlIGNyaWNrZXQgewotCi1jb25zdGV4cHIgaW50IGtUaW1lb3V0TXMgPSAxMDAwMDsKLXN0
YXRpYyBjb25zdCBydGM6OklQQWRkcmVzcyBrSVB2NExvY2FsSG9zdEFkZHJlc3MgPQotICAgIHJ0
Yzo6SVBBZGRyZXNzKDB4N0YwMDAwMDEpOyAgLy8gMTI3LjAuMC4xCi0KLWNsYXNzIFVkcFRyYW5z
cG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90
czw+IHsKLSBwdWJsaWM6Ci0gIFVkcFRyYW5zcG9ydFRlc3QoKQotICAgICAgOiB2aXJ0dWFsX3Nv
Y2tldF9zZXJ2ZXJfKG5ldyBydGM6OlZpcnR1YWxTb2NrZXRTZXJ2ZXIoKSksCi0gICAgICAgIG5l
dHdvcmtfdGhyZWFkXyh2aXJ0dWFsX3NvY2tldF9zZXJ2ZXJfLmdldCgpKSwKLSAgICAgICAgZXAx
XygiTmFtZTEiLAotICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0
U29ja2V0PigKLSAgICAgICAgICAgICAgICAgc29ja2V0X2ZhY3RvcnlfLkNyZWF0ZVVkcFNvY2tl
dCgKLSAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyhydGM6OkdldEFueUlQ
KEFGX0lORVQpLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAg
ICAgICAwKSkpLAotICAgICAgICBlcDJfKCJOYW1lMiIsCi0gICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+KAotICAgICAgICAgICAgICAgICBzb2NrZXRf
ZmFjdG9yeV8uQ3JlYXRlVWRwU29ja2V0KAotICAgICAgICAgICAgICAgICAgICAgcnRjOjpTb2Nr
ZXRBZGRyZXNzKHJ0Yzo6R2V0QW55SVAoQUZfSU5FVCksIDApLAotICAgICAgICAgICAgICAgICAg
ICAgMCwKLSAgICAgICAgICAgICAgICAgICAgIDApKSkgewotICAgIC8vIFNldHVwIElQIEFkZHJl
c3MgZm9yIG91dGdvaW5nIHBhY2tldHMgZnJvbSBzb2NrZXRzIGJvdW5kIHRvIElQVjQKLSAgICAv
LyBJTkFERFJfQU5ZICgiMC4wLjAuMC4iKSwgYXMgdXNlZCBhYm92ZSB3aGVuIGNyZWF0aW5nIHRo
ZSB2aXJ0dWFsCi0gICAgLy8gc29ja2V0cy4gVGhlIHZpcnR1YWwgc29ja2V0IHNlcnZlciBzZW5k
cyB0aGVzZSBwYWNrZXRzIG9ubHkgaWYgdGhlCi0gICAgLy8gZGVmYXVsdCBhZGRyZXNzIGlzIGV4
cGxpY2l0IHNldC4gV2l0aCBhIHBoeXNpY2FsIHNvY2tldCwgdGhlIGFjdHVhbAotICAgIC8vIG5l
dHdvcmsgc3RhY2sgLyBvcGVyYXRpbmcgc3lzdGVtIHdvdWxkIHNldCB0aGUgSVAgYWRkcmVzcyBm
b3Igb3V0Z29pbmcKLSAgICAvLyBwYWNrZXRzLgotICAgIHZpcnR1YWxfc29ja2V0X3NlcnZlcl8t
PlNldERlZmF1bHRSb3V0ZShrSVB2NExvY2FsSG9zdEFkZHJlc3MpOwotICB9Ci0KLSAgc3RydWN0
IEVuZHBvaW50IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKLSAgICBleHBsaWNpdCBF
bmRwb2ludChzdGQ6OnN0cmluZyB0Y2hfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4gc29ja2V0KSB7Ci0gICAgICBjaF8u
cmVzZXQobmV3IFVkcFRyYW5zcG9ydChzdGQ6Om1vdmUodGNoX25hbWUpLCBzdGQ6Om1vdmUoc29j
a2V0KSkpOwotICAgICAgY2hfLT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3QodGhpcywgJkVuZHBv
aW50OjpPblJlYWRQYWNrZXQpOwotICAgICAgY2hfLT5TaWduYWxTZW50UGFja2V0LmNvbm5lY3Qo
dGhpcywgJkVuZHBvaW50OjpPblNlbnRQYWNrZXQpOwotICAgICAgY2hfLT5TaWduYWxSZWFkeVRv
U2VuZC5jb25uZWN0KHRoaXMsICZFbmRwb2ludDo6T25SZWFkeVRvU2VuZCk7Ci0gICAgICBjaF8t
PlNpZ25hbFdyaXRhYmxlU3RhdGUuY29ubmVjdCh0aGlzLCAmRW5kcG9pbnQ6Ok9uV3JpdGFibGVT
dGF0ZSk7Ci0gICAgfQotCi0gICAgYm9vbCBDaGVja0RhdGEoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbikgewotICAgICAgYm9vbCByZXQgPSBmYWxzZTsKLSAgICAgIGlmICghY2hfcGFja2V0c18u
ZW1wdHkoKSkgewotICAgICAgICBzdGQ6OnN0cmluZyBwYWNrZXQgPSBjaF9wYWNrZXRzXy5mcm9u
dCgpOwotICAgICAgICByZXQgPSAocGFja2V0ID09IHN0ZDo6c3RyaW5nKGRhdGEsIGxlbikpOwot
ICAgICAgICBjaF9wYWNrZXRzXy5wb3BfZnJvbnQoKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBy
ZXQ7Ci0gICAgfQotCi0gICAgdm9pZCBPbldyaXRhYmxlU3RhdGUocnRjOjpQYWNrZXRUcmFuc3Bv
cnRJbnRlcm5hbCogdHJhbnNwb3J0KSB7Ci0gICAgICBudW1fc2lnX3dyaXRhYmxlXysrOwotICAg
IH0KLQotICAgIHZvaWQgT25SZWFkeVRvU2VuZChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFs
KiB0cmFuc3BvcnQpIHsKLSAgICAgIG51bV9zaWdfcmVhZHlfdG9fc2VuZF8rKzsKLSAgICB9Ci0K
LSAgICB2b2lkIE9uUmVhZFBhY2tldChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFu
c3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKLSAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgaW50IGZs
YWdzKSB7Ci0gICAgICBudW1fcmVjZWl2ZWRfcGFja2V0c18rKzsKLSAgICAgIFJUQ19MT0coTFNf
VkVSQk9TRSkgPDwgIk9uUmVhZFBhY2tldCAodW5pdHRlc3QpIjsKLSAgICAgIGNoX3BhY2tldHNf
LnB1c2hfZnJvbnQoc3RkOjpzdHJpbmcoZGF0YSwgbGVuKSk7Ci0gICAgfQotCi0gICAgdm9pZCBP
blNlbnRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAotICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYpIHsKLSAgICAgIG51bV9z
aWdfc2VudF9wYWNrZXRzXysrOwotICAgIH0KLQotICAgIGludCBTZW5kRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuKSB7Ci0gICAgICBydGM6OlBhY2tldE9wdGlvbnMgb3B0aW9uczsK
LSAgICAgIHJldHVybiBjaF8tPlNlbmRQYWNrZXQoZGF0YSwgbGVuLCBvcHRpb25zLCAwKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIEdldExvY2FsUG9ydCh1aW50MTZfdCogbG9jYWxfcG9ydCkgewotICAg
ICAgKmxvY2FsX3BvcnQgPSBjaF8tPkdldExvY2FsQWRkcmVzcygpLnBvcnQoKTsKLSAgICB9Ci0K
LSAgICBzdGQ6Omxpc3Q8c3RkOjpzdHJpbmc+IGNoX3BhY2tldHNfOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxVZHBUcmFuc3BvcnQ+IGNoXzsKLSAgICB1aW50MzJfdCBudW1fcmVjZWl2ZWRfcGFja2V0
c18gPSAwOyAgIC8vIEluY3JlYXNlcyBvbiBTaWduYWxSZWFkUGFja2V0LgotICAgIHVpbnQzMl90
IG51bV9zaWdfc2VudF9wYWNrZXRzXyA9IDA7ICAgLy8gSW5jcmVhc2VzIG9uIFNpZ25hbFNlbnRQ
YWNrZXQuCi0gICAgdWludDMyX3QgbnVtX3NpZ193cml0YWJsZV8gPSAwOyAgICAgICAvLyBJbmNy
ZWFzZXMgb24gU2lnbmFsV3JpdGFibGUuCi0gICAgdWludDMyX3QgbnVtX3NpZ19yZWFkeV90b19z
ZW5kXyA9IDA7ICAvLyBJbmNyZWFzZXMgb24gU2lnbmFsUmVhZHlUb1NlbmQuCi0gIH07Ci0KLSAg
c3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VmlydHVhbFNvY2tldFNlcnZlcj4gdmlydHVhbF9zb2NrZXRf
c2VydmVyXzsKLSAgcnRjOjpBdXRvU29ja2V0U2VydmVyVGhyZWFkIG5ldHdvcmtfdGhyZWFkXzsK
LSAgLy8gVXNlcyBjdXJyZW50IHRocmVhZCdzIHNvY2tldCBzZXJ2ZXIsIHdoaWNoIHdpbGwgYmUg
c2V0IGJ5IHNzX3Njb3BlXy4KLSAgcnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnkgc29ja2V0
X2ZhY3RvcnlfOwotCi0gIEVuZHBvaW50IGVwMV87Ci0gIEVuZHBvaW50IGVwMl87Ci0KLSAgdm9p
ZCBUZXN0U2VuZFJlY3YoKSB7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IDU7ICsraSkg
ewotICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGEgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RV
VldYWVoxMjM0NTY3ODkwIjsKLSAgICAgIGludCBsZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmxl
bihkYXRhKSk7Ci0gICAgICAvLyBsb2NhbF9jaGFubmVsIDw9PT4gcmVtb3RlX2NoYW5uZWwKLSAg
ICAgIEVYUEVDVF9FUV9XQUlUKGxlbiwgZXAxXy5TZW5kRGF0YShkYXRhLCBsZW4pLCBrVGltZW91
dE1zKTsKLSAgICAgIEVYUEVDVF9UUlVFX1dBSVQoZXAyXy5DaGVja0RhdGEoZGF0YSwgbGVuKSwg
a1RpbWVvdXRNcyk7Ci0gICAgICBFWFBFQ1RfRVFfV0FJVChpICsgMXUsIGVwMl8ubnVtX3JlY2Vp
dmVkX3BhY2tldHNfLCBrVGltZW91dE1zKTsKLSAgICAgIEVYUEVDVF9FUV9XQUlUKGxlbiwgZXAy
Xy5TZW5kRGF0YShkYXRhLCBsZW4pLCBrVGltZW91dE1zKTsKLSAgICAgIEVYUEVDVF9UUlVFX1dB
SVQoZXAxXy5DaGVja0RhdGEoZGF0YSwgbGVuKSwga1RpbWVvdXRNcyk7Ci0gICAgICBFWFBFQ1Rf
RVFfV0FJVChpICsgMXUsIGVwMV8ubnVtX3JlY2VpdmVkX3BhY2tldHNfLCBrVGltZW91dE1zKTsK
LSAgICB9Ci0gIH0KLX07Ci0KLVRFU1RfRihVZHBUcmFuc3BvcnRUZXN0LCBBZGRyZXNzR2V0dGVy
cykgewotICAvLyBJbml0aWFsbHksIHJlbW90ZSBhZGRyZXNzIHNob3VsZCBiZSBuaWwgYnV0IGxv
Y2FsIGFkZHJlc3Mgc2hvdWxkbid0IGJlLgotICBFWFBFQ1RfRkFMU0UoZXAxXy5jaF8tPkdldExv
Y2FsQWRkcmVzcygpLklzTmlsKCkpOwotICBFWFBFQ1RfVFJVRShlcDFfLmNoXy0+R2V0UmVtb3Rl
QWRkcmVzcygpLklzTmlsKCkpOwotICBydGM6OlNvY2tldEFkZHJlc3MgZGVzdGluYXRpb24oIjEy
Ny4wLjAuMSIsIDEzMzcpOwotICBBU1NFUlRfVFJVRShlcDFfLmNoXy0+U2V0UmVtb3RlQWRkcmVz
cyhkZXN0aW5hdGlvbikpOwotICBFWFBFQ1RfRVEoZGVzdGluYXRpb24sIGVwMV8uY2hfLT5HZXRS
ZW1vdGVBZGRyZXNzKCkpOwotfQotCi0vLyBTZXR0aW5nIGFuIGludmFsaWQgYWRkcmVzcyBzaG91
bGQgZmFpbCBhbmQgaGF2ZSBubyBlZmZlY3QuCi1URVNUX0YoVWRwVHJhbnNwb3J0VGVzdCwgU2V0
dGluZ0luY29tcGxldGVSZW1vdGVBZGRyZXNzRmFpbHMpIHsKLSAgRVhQRUNUX0ZBTFNFKGVwMV8u
Y2hfLT5TZXRSZW1vdGVBZGRyZXNzKHJ0Yzo6U29ja2V0QWRkcmVzcygiMTI3LjAuMC4xIiwgMCkp
KTsKLSAgRVhQRUNUX1RSVUUoZXAxXy5jaF8tPkdldFJlbW90ZUFkZHJlc3MoKS5Jc05pbCgpKTsK
LX0KLQotVEVTVF9GKFVkcFRyYW5zcG9ydFRlc3QsIFNlbmRSZWN2QmFzaWMpIHsKLSAgdWludDE2
X3QgcG9ydDsKLSAgZXAyXy5HZXRMb2NhbFBvcnQoJnBvcnQpOwotICBydGM6OlNvY2tldEFkZHJl
c3MgYWRkcjIgPSBydGM6OlNvY2tldEFkZHJlc3MoIjEyNy4wLjAuMSIsIHBvcnQpOwotICBFWFBF
Q1RfVFJVRShlcDFfLmNoXy0+U2V0UmVtb3RlQWRkcmVzcyhhZGRyMikpOwotICBlcDFfLkdldExv
Y2FsUG9ydCgmcG9ydCk7Ci0gIHJ0Yzo6U29ja2V0QWRkcmVzcyBhZGRyMSA9IHJ0Yzo6U29ja2V0
QWRkcmVzcygiMTI3LjAuMC4xIiwgcG9ydCk7Ci0gIEVYUEVDVF9UUlVFKGVwMl8uY2hfLT5TZXRS
ZW1vdGVBZGRyZXNzKGFkZHIxKSk7Ci0gIFRlc3RTZW5kUmVjdigpOwotfQotCi0vLyBUZXN0IHRo
ZSBzaWduYWxzIGFuZCBzdGF0ZSBtZXRob2RzIHVzZWQgaW50ZXJuYWxseSBieSBjYXVzaW5nIGEg
VWRwVHJhbnNwb3J0Ci0vLyB0byBzZW5kIGEgcGFja2V0IHRvIGl0c2VsZi4KLVRFU1RfRihVZHBU
cmFuc3BvcnRUZXN0LCBTdGF0dXNBbmRTaWduYWxzKSB7Ci0gIEVYUEVDVF9FUSgwdSwgZXAxXy5u
dW1fc2lnX3dyaXRhYmxlXyk7Ci0gIEVYUEVDVF9FUSgwdSwgZXAxXy5udW1fc2lnX3JlYWR5X3Rv
X3NlbmRfKTsKLSAgLy8gTG9vcGJhY2sKLSAgRVhQRUNUX1RSVUUoIWVwMV8uY2hfLT53cml0YWJs
ZSgpKTsKLSAgcnRjOjpTb2NrZXRBZGRyZXNzIGFkZHIgPSBlcDFfLmNoXy0+R2V0TG9jYWxBZGRy
ZXNzKCk7Ci0gIC8vIEtlZXAgcG9ydCwgYnV0IGV4cGxpY2l0bHkgc2V0IElQLgotICBhZGRyLlNl
dElQKCIxMjcuMC4wLjEiKTsKLSAgZXAxXy5jaF8tPlNldFJlbW90ZUFkZHJlc3MoYWRkcik7Ci0g
IEVYUEVDVF9UUlVFKGVwMV8uY2hfLT53cml0YWJsZSgpKTsKLSAgRVhQRUNUX0VRKDF1LCBlcDFf
Lm51bV9zaWdfd3JpdGFibGVfKTsKLSAgRVhQRUNUX0VRKDF1LCBlcDFfLm51bV9zaWdfcmVhZHlf
dG9fc2VuZF8pOwotICBjb25zdCBjaGFyIGRhdGFbXSA9ICJhYmMiOwotICBlcDFfLlNlbmREYXRh
KGRhdGEsIHNpemVvZihkYXRhKSk7Ci0gIEVYUEVDVF9FUV9XQUlUKDF1LCBlcDFfLmNoX3BhY2tl
dHNfLnNpemUoKSwga1RpbWVvdXRNcyk7Ci0gIEVYUEVDVF9FUV9XQUlUKDF1LCBlcDFfLm51bV9z
aWdfc2VudF9wYWNrZXRzXywga1RpbWVvdXRNcyk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBjcmlj
a2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmNjCmlu
ZGV4IGMxYjFkZTU4ZGRiNjBmZjI3OGFlNTNhMWM4NjNjOTk0MDAzYjI0NjYuLjBjMmZlZjMxMTI2
MDU3OTZiNjgzYzVlZGQ1ODAxZGZlNzQ3OGM2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9y
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9j
bGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmNjCkBAIC01MTgsNiArNTE4LDEwIEBAIHZvaWQgQmFz
aWNQb3J0QWxsb2NhdG9yU2Vzc2lvbjo6R2V0Q2FuZGlkYXRlc0Zyb21Qb3J0KAogICB9CiB9CiAK
K2Jvb2wgQmFzaWNQb3J0QWxsb2NhdG9yU2Vzc2lvbjo6TWRuc09iZnVzY2F0aW9uRW5hYmxlZCgp
IGNvbnN0IHsKKyAgcmV0dXJuIGFsbG9jYXRvcl8tPm5ldHdvcmtfbWFuYWdlcigpLT5HZXRNZG5z
UmVzcG9uZGVyKCkgIT0gbnVsbHB0cjsKK30KKwogQ2FuZGlkYXRlIEJhc2ljUG9ydEFsbG9jYXRv
clNlc3Npb246OlNhbml0aXplQ2FuZGlkYXRlKAogICAgIGNvbnN0IENhbmRpZGF0ZSYgYykgY29u
c3QgewogICBSVENfRENIRUNLX1JVTl9PTihuZXR3b3JrX3RocmVhZF8pOwpAQCAtNTM0LDcgKzUz
OCw3IEBAIENhbmRpZGF0ZSBCYXNpY1BvcnRBbGxvY2F0b3JTZXNzaW9uOjpTYW5pdGl6ZUNhbmRp
ZGF0ZSgKICAgYm9vbCBmaWx0ZXJfc3R1bl9yZWxhdGVkX2FkZHJlc3MgPQogICAgICAgKChmbGFn
cygpICYgUE9SVEFMTE9DQVRPUl9ESVNBQkxFX0FEQVBURVJfRU5VTUVSQVRJT04pICYmCiAgICAg
ICAgKGZsYWdzKCkgJiBQT1JUQUxMT0NBVE9SX0RJU0FCTEVfREVGQVVMVF9MT0NBTF9DQU5ESURB
VEUpKSB8fAotICAgICAgIShjYW5kaWRhdGVfZmlsdGVyXyAmIENGX0hPU1QpOworICAgICAgIShj
YW5kaWRhdGVfZmlsdGVyXyAmIENGX0hPU1QpIHx8IE1kbnNPYmZ1c2NhdGlvbkVuYWJsZWQoKTsK
ICAgLy8gSWYgdGhlIGNhbmRpZGF0ZSBmaWx0ZXIgZG9lc24ndCBhbGxvdyByZWZsZXhpdmUgYWRk
cmVzc2VzLCBlbXB0eSBUVVJOIHJhZGRyCiAgIC8vIHRvIGF2b2lkIHJlZmxleGl2ZSBhZGRyZXNz
IGxlYWthZ2UuCiAgIGJvb2wgZmlsdGVyX3R1cm5fcmVsYXRlZF9hZGRyZXNzID0gIShjYW5kaWRh
dGVfZmlsdGVyXyAmIENGX1JFRkxFWElWRSk7CkBAIC0xMzYyLDcgKzEzNjYsNyBAQCB2b2lkIEFs
bG9jYXRpb25TZXF1ZW5jZTo6Q3JlYXRlVURQUG9ydHMoKSB7CiAKICAgLy8gVE9ETyhtYWxsaW5h
dGgpIC0gUmVtb3ZlIFVEUFBvcnQgY3JlYXRpbmcgc29ja2V0IGFmdGVyIHNoYXJlZCBzb2NrZXQK
ICAgLy8gaXMgZW5hYmxlZCBjb21wbGV0ZWx5LgotICBVRFBQb3J0KiBwb3J0ID0gTlVMTDsKKyAg
c3RkOjp1bmlxdWVfcHRyPFVEUFBvcnQ+IHBvcnQ7CiAgIGJvb2wgZW1pdF9sb2NhbF9jYW5kaWRh
dGVfZm9yX2FueWFkZHJlc3MgPQogICAgICAgIUlzRmxhZ1NldChQT1JUQUxMT0NBVE9SX0RJU0FC
TEVfREVGQVVMVF9MT0NBTF9DQU5ESURBVEUpOwogICBpZiAoSXNGbGFnU2V0KFBPUlRBTExPQ0FU
T1JfRU5BQkxFX1NIQVJFRF9TT0NLRVQpICYmIHVkcF9zb2NrZXRfKSB7CkBAIC0xMzg0LDcgKzEz
ODgsNyBAQCB2b2lkIEFsbG9jYXRpb25TZXF1ZW5jZTo6Q3JlYXRlVURQUG9ydHMoKSB7CiAgICAg
Ly8gSWYgc2hhcmVkIHNvY2tldCBpcyBlbmFibGVkLCBTVFVOIGNhbmRpZGF0ZSB3aWxsIGJlIGFs
bG9jYXRlZCBieSB0aGUKICAgICAvLyBVRFBQb3J0LgogICAgIGlmIChJc0ZsYWdTZXQoUE9SVEFM
TE9DQVRPUl9FTkFCTEVfU0hBUkVEX1NPQ0tFVCkpIHsKLSAgICAgIHVkcF9wb3J0XyA9IHBvcnQ7
CisgICAgICB1ZHBfcG9ydF8gPSBwb3J0LmdldCgpOwogICAgICAgcG9ydC0+U2lnbmFsRGVzdHJv
eWVkLmNvbm5lY3QodGhpcywgJkFsbG9jYXRpb25TZXF1ZW5jZTo6T25Qb3J0RGVzdHJveWVkKTsK
IAogICAgICAgLy8gSWYgU1RVTiBpcyBub3QgZGlzYWJsZWQsIHNldHRpbmcgc3R1biBzZXJ2ZXIg
YWRkcmVzcyB0byBwb3J0LgpAQCAtMTM5OCw3ICsxNDAyLDcgQEAgdm9pZCBBbGxvY2F0aW9uU2Vx
dWVuY2U6OkNyZWF0ZVVEUFBvcnRzKCkgewogICAgICAgfQogICAgIH0KIAotICAgIHNlc3Npb25f
LT5BZGRBbGxvY2F0ZWRQb3J0KHBvcnQsIHRoaXMsIHRydWUpOworICAgIHNlc3Npb25fLT5BZGRB
bGxvY2F0ZWRQb3J0KHBvcnQucmVsZWFzZSgpLCB0aGlzLCB0cnVlKTsKICAgfQogfQogCkBAIC0x
NDA4LDEzICsxNDEyLDEzIEBAIHZvaWQgQWxsb2NhdGlvblNlcXVlbmNlOjpDcmVhdGVUQ1BQb3J0
cygpIHsKICAgICByZXR1cm47CiAgIH0KIAotICBQb3J0KiBwb3J0ID0gVENQUG9ydDo6Q3JlYXRl
KAorICBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gcG9ydCA9IFRDUFBvcnQ6OkNyZWF0ZSgKICAgICAg
IHNlc3Npb25fLT5uZXR3b3JrX3RocmVhZCgpLCBzZXNzaW9uXy0+c29ja2V0X2ZhY3RvcnkoKSwg
bmV0d29ya18sCiAgICAgICBzZXNzaW9uXy0+YWxsb2NhdG9yKCktPm1pbl9wb3J0KCksIHNlc3Np
b25fLT5hbGxvY2F0b3IoKS0+bWF4X3BvcnQoKSwKICAgICAgIHNlc3Npb25fLT51c2VybmFtZSgp
LCBzZXNzaW9uXy0+cGFzc3dvcmQoKSwKICAgICAgIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+YWxs
b3dfdGNwX2xpc3RlbigpKTsKICAgaWYgKHBvcnQpIHsKLSAgICBzZXNzaW9uXy0+QWRkQWxsb2Nh
dGVkUG9ydChwb3J0LCB0aGlzLCB0cnVlKTsKKyAgICBzZXNzaW9uXy0+QWRkQWxsb2NhdGVkUG9y
dChwb3J0LnJlbGVhc2UoKSwgdGhpcywgdHJ1ZSk7CiAgICAgLy8gU2luY2UgVENQUG9ydCBpcyBu
b3QgY3JlYXRlZCB1c2luZyBzaGFyZWQgc29ja2V0LCB8cG9ydHwgd2lsbCBub3QgYmUKICAgICAv
LyBhZGRlZCB0byB0aGUgZGVxdWV1ZS4KICAgfQpAQCAtMTQzNiwxNCArMTQ0MCwxNCBAQCB2b2lk
IEFsbG9jYXRpb25TZXF1ZW5jZTo6Q3JlYXRlU3R1blBvcnRzKCkgewogICAgIHJldHVybjsKICAg
fQogCi0gIFN0dW5Qb3J0KiBwb3J0ID0gU3R1blBvcnQ6OkNyZWF0ZSgKKyAgc3RkOjp1bmlxdWVf
cHRyPFN0dW5Qb3J0PiBwb3J0ID0gU3R1blBvcnQ6OkNyZWF0ZSgKICAgICAgIHNlc3Npb25fLT5u
ZXR3b3JrX3RocmVhZCgpLCBzZXNzaW9uXy0+c29ja2V0X2ZhY3RvcnkoKSwgbmV0d29ya18sCiAg
ICAgICBzZXNzaW9uXy0+YWxsb2NhdG9yKCktPm1pbl9wb3J0KCksIHNlc3Npb25fLT5hbGxvY2F0
b3IoKS0+bWF4X3BvcnQoKSwKICAgICAgIHNlc3Npb25fLT51c2VybmFtZSgpLCBzZXNzaW9uXy0+
cGFzc3dvcmQoKSwgY29uZmlnXy0+U3R1blNlcnZlcnMoKSwKICAgICAgIHNlc3Npb25fLT5hbGxv
Y2F0b3IoKS0+b3JpZ2luKCksCiAgICAgICBzZXNzaW9uXy0+YWxsb2NhdG9yKCktPnN0dW5fY2Fu
ZGlkYXRlX2tlZXBhbGl2ZV9pbnRlcnZhbCgpKTsKICAgaWYgKHBvcnQpIHsKLSAgICBzZXNzaW9u
Xy0+QWRkQWxsb2NhdGVkUG9ydChwb3J0LCB0aGlzLCB0cnVlKTsKKyAgICBzZXNzaW9uXy0+QWRk
QWxsb2NhdGVkUG9ydChwb3J0LnJlbGVhc2UoKSwgdGhpcywgdHJ1ZSk7CiAgICAgLy8gU2luY2Ug
U3R1blBvcnQgaXMgbm90IGNyZWF0ZWQgdXNpbmcgc2hhcmVkIHNvY2tldCwgfHBvcnR8IHdpbGwg
bm90IGJlCiAgICAgLy8gYWRkZWQgdG8gdGhlIGRlcXVldWUuCiAgIH0KQEAgLTE0NzksMTEgKzE0
ODMsMTIgQEAgdm9pZCBBbGxvY2F0aW9uU2VxdWVuY2U6OkNyZWF0ZVJlbGF5UG9ydHMoKSB7CiAK
IHZvaWQgQWxsb2NhdGlvblNlcXVlbmNlOjpDcmVhdGVHdHVyblBvcnQoY29uc3QgUmVsYXlTZXJ2
ZXJDb25maWcmIGNvbmZpZykgewogICAvLyBUT0RPKG1hbGxpbmF0aCkgLSBSZW5hbWUgUmVsYXlQ
b3J0IHRvIEdUdXJuUG9ydC4KLSAgUmVsYXlQb3J0KiBwb3J0ID0gUmVsYXlQb3J0OjpDcmVhdGUo
CisgIHN0ZDo6dW5pcXVlX3B0cjxSZWxheVBvcnQ+IHBvcnQgPSBSZWxheVBvcnQ6OkNyZWF0ZSgK
ICAgICAgIHNlc3Npb25fLT5uZXR3b3JrX3RocmVhZCgpLCBzZXNzaW9uXy0+c29ja2V0X2ZhY3Rv
cnkoKSwgbmV0d29ya18sCiAgICAgICBzZXNzaW9uXy0+YWxsb2NhdG9yKCktPm1pbl9wb3J0KCks
IHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+bWF4X3BvcnQoKSwKICAgICAgIGNvbmZpZ18tPnVzZXJu
YW1lLCBjb25maWdfLT5wYXNzd29yZCk7CiAgIGlmIChwb3J0KSB7CisgICAgUmVsYXlQb3J0KiBw
b3J0X3B0ciA9IHBvcnQucmVsZWFzZSgpOwogICAgIC8vIFNpbmNlIFJlbGF5UG9ydCBpcyBub3Qg
Y3JlYXRlZCB1c2luZyBzaGFyZWQgc29ja2V0LCB8cG9ydHwgd2lsbCBub3QgYmUKICAgICAvLyBh
ZGRlZCB0byB0aGUgZGVxdWV1ZS4KICAgICAvLyBOb3RlOiBXZSBtdXN0IGFkZCB0aGUgYWxsb2Nh
dGVkIHBvcnQgYmVmb3JlIHdlIGFkZCBhZGRyZXNzZXMgYmVjYXVzZQpAQCAtMTQ5MSwxNyArMTQ5
NiwxNyBAQCB2b2lkIEFsbG9jYXRpb25TZXF1ZW5jZTo6Q3JlYXRlR3R1cm5Qb3J0KGNvbnN0IFJl
bGF5U2VydmVyQ29uZmlnJiBjb25maWcpIHsKICAgICAvLyAgICAgICBzZXR0aW5ncy4gIEhvd2V2
ZXIsIHdlIGFsc28gY2FuJ3QgcHJlcGFyZSB0aGUgYWRkcmVzcyAobm9ybWFsbHkKICAgICAvLyAg
ICAgICBkb25lIGJ5IEFkZEFsbG9jYXRlZFBvcnQpIHVudGlsIHdlIGhhdmUgdGhlc2UgYWRkcmVz
c2VzLiAgU28gd2UKICAgICAvLyAgICAgICB3YWl0IHRvIGRvIHRoYXQgdW50aWwgYmVsb3cuCi0g
ICAgc2Vzc2lvbl8tPkFkZEFsbG9jYXRlZFBvcnQocG9ydCwgdGhpcywgZmFsc2UpOworICAgIHNl
c3Npb25fLT5BZGRBbGxvY2F0ZWRQb3J0KHBvcnRfcHRyLCB0aGlzLCBmYWxzZSk7CiAKICAgICAv
LyBBZGQgdGhlIGFkZHJlc3NlcyBvZiB0aGlzIHByb3RvY29sLgogICAgIFBvcnRMaXN0Ojpjb25z
dF9pdGVyYXRvciByZWxheV9wb3J0OwogICAgIGZvciAocmVsYXlfcG9ydCA9IGNvbmZpZy5wb3J0
cy5iZWdpbigpOyByZWxheV9wb3J0ICE9IGNvbmZpZy5wb3J0cy5lbmQoKTsKICAgICAgICAgICsr
cmVsYXlfcG9ydCkgewotICAgICAgcG9ydC0+QWRkU2VydmVyQWRkcmVzcygqcmVsYXlfcG9ydCk7
Ci0gICAgICBwb3J0LT5BZGRFeHRlcm5hbEFkZHJlc3MoKnJlbGF5X3BvcnQpOworICAgICAgcG9y
dF9wdHItPkFkZFNlcnZlckFkZHJlc3MoKnJlbGF5X3BvcnQpOworICAgICAgcG9ydF9wdHItPkFk
ZEV4dGVybmFsQWRkcmVzcygqcmVsYXlfcG9ydCk7CiAgICAgfQogICAgIC8vIFN0YXJ0IGZldGNo
aW5nIGFuIGFkZHJlc3MgZm9yIHRoaXMgcG9ydC4KLSAgICBwb3J0LT5QcmVwYXJlQWRkcmVzcygp
OworICAgIHBvcnRfcHRyLT5QcmVwYXJlQWRkcmVzcygpOwogICB9CiB9CiAKQEAgLTE1NzksNyAr
MTU4NCw3IEBAIHZvaWQgQWxsb2NhdGlvblNlcXVlbmNlOjpPblJlYWRQYWNrZXQocnRjOjpBc3lu
Y1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBw
YWNrZXRfdGltZV91cykgewogICBSVENfRENIRUNLKHNvY2tldCA9PSB1ZHBfc29ja2V0Xy5nZXQo
KSk7CiAKICAgYm9vbCB0dXJuX3BvcnRfZm91bmQgPSBmYWxzZTsKQEAgLTE1OTMsNyArMTU5OCw3
IEBAIHZvaWQgQWxsb2NhdGlvblNlcXVlbmNlOjpPblJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tl
dFNvY2tldCogc29ja2V0LAogICBmb3IgKGF1dG8qIHBvcnQgOiByZWxheV9wb3J0c18pIHsKICAg
ICBpZiAocG9ydC0+Q2FuSGFuZGxlSW5jb21pbmdQYWNrZXRzRnJvbShyZW1vdGVfYWRkcikpIHsK
ICAgICAgIGlmIChwb3J0LT5IYW5kbGVJbmNvbWluZ1BhY2tldChzb2NrZXQsIGRhdGEsIHNpemUs
IHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tl
dF90aW1lKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90
aW1lX3VzKSkgewogICAgICAgICByZXR1cm47CiAgICAgICB9CiAgICAgICB0dXJuX3BvcnRfZm91
bmQgPSB0cnVlOwpAQCAtMTYwOSw3ICsxNjE0LDcgQEAgdm9pZCBBbGxvY2F0aW9uU2VxdWVuY2U6
Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgIHN0
dW5fc2VydmVycy5maW5kKHJlbW90ZV9hZGRyKSAhPSBzdHVuX3NlcnZlcnMuZW5kKCkpIHsKICAg
ICAgIFJUQ19EQ0hFQ0sodWRwX3BvcnRfLT5TaGFyZWRTb2NrZXQoKSk7CiAgICAgICB1ZHBfcG9y
dF8tPkhhbmRsZUluY29taW5nUGFja2V0KHNvY2tldCwgZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWVfdXMpOwogICAg
IH0KICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9y
LmgKaW5kZXggOGI5NTFjYWU5ZTYyY2JmN2VlYzE4NzJiNGI5OWZjYzMyODlkNDU4Zi4uNjcyZjNk
ZGI3YzI2M2IxYTU1ZmEzMTQyMmI5ZjEwM2E1YmU3YjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxv
Y2F0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5oCkBAIC0yMiwxMSArMjIsMTIgQEAKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lz
dGVtL3J0Y19leHBvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKIAogbmFtZXNw
YWNlIGNyaWNrZXQgewogCi1jbGFzcyBCYXNpY1BvcnRBbGxvY2F0b3IgOiBwdWJsaWMgUG9ydEFs
bG9jYXRvciB7CitjbGFzcyBSVENfRVhQT1JUIEJhc2ljUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBQ
b3J0QWxsb2NhdG9yIHsKICBwdWJsaWM6CiAgIC8vIG5vdGU6IFRoZSAob3B0aW9uYWwpIHJlbGF5
X3BvcnRfZmFjdG9yeSBpcyBvd25lZCBieSBjYWxsZXIKICAgLy8gYW5kIG11c3QgaGF2ZSBhIGxp
ZmUgdGltZSB0aGF0IGV4Y2VlZHMgdGhhdCBvZiBCYXNpY1BvcnRBbGxvY2F0b3IuCkBAIC0xMTAs
OCArMTExLDggQEAgZW51bSBjbGFzcyBTZXNzaW9uU3RhdGUgewogICAgICAgICAgICAgICAvLyBw
cm9jZXNzIHdpbGwgYmUgc3RhcnRlZC4KIH07CiAKLWNsYXNzIEJhc2ljUG9ydEFsbG9jYXRvclNl
c3Npb24gOiBwdWJsaWMgUG9ydEFsbG9jYXRvclNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIgeworY2xhc3MgUlRDX0VY
UE9SVCBCYXNpY1BvcnRBbGxvY2F0b3JTZXNzaW9uIDogcHVibGljIFBvcnRBbGxvY2F0b3JTZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IHJ0Yzo6TWVzc2FnZUhhbmRsZXIgewogIHB1YmxpYzoKICAgQmFzaWNQb3J0QWxsb2NhdG9yU2Vz
c2lvbihCYXNpY1BvcnRBbGxvY2F0b3IqIGFsbG9jYXRvciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLApAQCAtMjM1LDYgKzIzNiwx
MCBAQCBjbGFzcyBCYXNpY1BvcnRBbGxvY2F0b3JTZXNzaW9uIDogcHVibGljIFBvcnRBbGxvY2F0
b3JTZXNzaW9uLAogCiAgIGJvb2wgQ2hlY2tDYW5kaWRhdGVGaWx0ZXIoY29uc3QgQ2FuZGlkYXRl
JiBjKSBjb25zdDsKICAgYm9vbCBDYW5kaWRhdGVQYWlyYWJsZShjb25zdCBDYW5kaWRhdGUmIGMs
IGNvbnN0IFBvcnQqIHBvcnQpIGNvbnN0OworCisgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBp
cyBhbiBtRE5TIHJlc3BvbmRlciBhdHRhY2hlZCB0byB0aGUgbmV0d29yayBtYW5hZ2VyCisgIGJv
b2wgTWRuc09iZnVzY2F0aW9uRW5hYmxlZCgpIGNvbnN0OworCiAgIC8vIENsZWFycyAxKSB0aGUg
YWRkcmVzcyBpZiB0aGUgY2FuZGlkYXRlIGlzIHN1cHBvc2VkbHkgYSBob3N0bmFtZSBjYW5kaWRh
dGU7CiAgIC8vIDIpIHRoZSByZWxhdGVkIGFkZHJlc3MgYWNjb3JkaW5nIHRvIHRoZSBmbGFncyBh
bmQgY2FuZGlkYXRlIGZpbHRlciBpbiBvcmRlcgogICAvLyB0byBhdm9pZCBsZWFraW5nIGFueSBp
bmZvcm1hdGlvbi4KQEAgLTI3NCw3ICsyNzksNyBAQCBjbGFzcyBCYXNpY1BvcnRBbGxvY2F0b3JT
ZXNzaW9uIDogcHVibGljIFBvcnRBbGxvY2F0b3JTZXNzaW9uLAogCiAvLyBSZWNvcmRzIGNvbmZp
Z3VyYXRpb24gaW5mb3JtYXRpb24gdXNlZnVsIGluIGNyZWF0aW5nIHBvcnRzLgogLy8gVE9ETyhk
ZWFkYmVlZik6IFJlbmFtZSAicmVsYXkiIHRvICJ0dXJuX3NlcnZlciIgaW4gdGhpcyBzdHJ1Y3Qu
Ci1zdHJ1Y3QgUG9ydENvbmZpZ3VyYXRpb24gOiBwdWJsaWMgcnRjOjpNZXNzYWdlRGF0YSB7Citz
dHJ1Y3QgUlRDX0VYUE9SVCBQb3J0Q29uZmlndXJhdGlvbiA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VE
YXRhIHsKICAgLy8gVE9ETyhqaWF5bCk6IHJlbW92ZSB8c3R1bl9hZGRyZXNzfCB3aGVuIENocm9t
ZSBpcyB1cGRhdGVkLgogICBydGM6OlNvY2tldEFkZHJlc3Mgc3R1bl9hZGRyZXNzOwogICBTZXJ2
ZXJBZGRyZXNzZXMgc3R1bl9zZXJ2ZXJzOwpAQCAtMzgzLDcgKzM4OCw3IEBAIGNsYXNzIEFsbG9j
YXRpb25TZXF1ZW5jZSA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVf
YWRkciwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRf
dGltZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3Vz
KTsKIAogICB2b2lkIE9uUG9ydERlc3Ryb3llZChQb3J0SW50ZXJmYWNlKiBwb3J0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Ns
aWVudC9iYXNpY3BvcnRhbGxvY2F0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvcl91bml0
dGVzdC5jYwppbmRleCBhNDZlNTNiYTlkYTY2MjBlN2I0NjVkMjFhZDJhNTk0NzFlOTg4MjFjLi44
OTQzZWJjNzNkYmEyZGI2OGEyZmJjZGJlNDA3MzU3ODZmNGVhZjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9y
dGFsbG9jYXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYwpA
QCAtMzgsNyArMzgsNiBAQAogCiB1c2luZyBydGM6OklQQWRkcmVzczsKIHVzaW5nIHJ0Yzo6U29j
a2V0QWRkcmVzczsKLXVzaW5nIHJ0Yzo6VGhyZWFkOwogCiAjZGVmaW5lIE1BWUJFX1NLSVBfSVBW
NCAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgaWYgKCFydGM6Okhhc0lQdjRFbmFibGVkKCkp
IHsgICAgICAgICAgICAgICAgXApAQCAtMTQ3LDE1ICsxNDYsMTUgQEAgY2xhc3MgQmFzaWNQb3J0
QWxsb2NhdG9yVGVzdEJhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgICAgICAgLy8gbXVz
dCBiZSBjYWxsZWQuCiAgICAgICAgIG5hdF9mYWN0b3J5Xyh2c3NfLmdldCgpLCBrTmF0VWRwQWRk
ciwga05hdFRjcEFkZHIpLAogICAgICAgICBuYXRfc29ja2V0X2ZhY3RvcnlfKG5ldyBydGM6OkJh
c2ljUGFja2V0U29ja2V0RmFjdG9yeSgmbmF0X2ZhY3RvcnlfKSksCi0gICAgICAgIHN0dW5fc2Vy
dmVyXyhUZXN0U3R1blNlcnZlcjo6Q3JlYXRlKFRocmVhZDo6Q3VycmVudCgpLCBrU3R1bkFkZHIp
KSwKLSAgICAgICAgcmVsYXlfc2VydmVyXyhUaHJlYWQ6OkN1cnJlbnQoKSwKKyAgICAgICAgc3R1
bl9zZXJ2ZXJfKFRlc3RTdHVuU2VydmVyOjpDcmVhdGUocnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwg
a1N0dW5BZGRyKSksCisgICAgICAgIHJlbGF5X3NlcnZlcl8ocnRjOjpUaHJlYWQ6OkN1cnJlbnQo
KSwKICAgICAgICAgICAgICAgICAgICAgICBrUmVsYXlVZHBJbnRBZGRyLAogICAgICAgICAgICAg
ICAgICAgICAgIGtSZWxheVVkcEV4dEFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAga1JlbGF5
VGNwSW50QWRkciwKICAgICAgICAgICAgICAgICAgICAgICBrUmVsYXlUY3BFeHRBZGRyLAogICAg
ICAgICAgICAgICAgICAgICAgIGtSZWxheVNzbFRjcEludEFkZHIsCiAgICAgICAgICAgICAgICAg
ICAgICAga1JlbGF5U3NsVGNwRXh0QWRkciksCi0gICAgICAgIHR1cm5fc2VydmVyXyhUaHJlYWQ6
OkN1cnJlbnQoKSwga1R1cm5VZHBJbnRBZGRyLCBrVHVyblVkcEV4dEFkZHIpLAorICAgICAgICB0
dXJuX3NlcnZlcl8ocnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwga1R1cm5VZHBJbnRBZGRyLCBrVHVy
blVkcEV4dEFkZHIpLAogICAgICAgICBjYW5kaWRhdGVfYWxsb2NhdGlvbl9kb25lXyhmYWxzZSkg
ewogICAgIFNlcnZlckFkZHJlc3NlcyBzdHVuX3NlcnZlcnM7CiAgICAgc3R1bl9zZXJ2ZXJzLmlu
c2VydChrU3R1bkFkZHIpOwpAQCAtMjI0Nyw4ICsyMjQ2LDggQEAgVEVTVF9GKEJhc2ljUG9ydEFs
bG9jYXRvclRlc3QsIEljZVJlZ2F0aGVyaW5nTWV0cmljc0xvZ2dlZFdoZW5OZXR3b3JrQ2hhbmdl
cykgewogfQogCiAvLyBUZXN0IHRoYXQgd2hlbiBhbiBtRE5TIHJlc3BvbmRlciBpcyBwcmVzZW50
LCB0aGUgbG9jYWwgYWRkcmVzcyBvZiBhIGhvc3QKLS8vIGNhbmRpZGF0ZSBpcyBtYXNrZWQgYnkg
YW4gbUROUyBob3N0bmFtZSBhbmQgdGhlIHJlbGF0ZWQgYWRkcmVzcyBvZiBhbnkgb3RoZXIKLS8v
IHR5cGUgb2YgY2FuZGlkYXRlcyBpcyBzZXQgdG8gMC4wLjAuMCBvciA6OjAuCisvLyBjYW5kaWRh
dGUgaXMgY29uY2VhbGVkIGJ5IGFuIG1ETlMgaG9zdG5hbWUgYW5kIHRoZSByZWxhdGVkIGFkZHJl
c3Mgb2YgYSBzcmZseAorLy8gY2FuZGlkYXRlIGlzIHNldCB0byAwLjAuMC4wIG9yIDo6MC4KIFRF
U1RfRihCYXNpY1BvcnRBbGxvY2F0b3JUZXN0LCBIb3N0Q2FuZGlkYXRlQWRkcmVzc0lzUmVwbGFj
ZWRCeUhvc3RuYW1lKSB7CiAgIC8vIERlZmF1bHQgY29uZmlnIHVzZXMgR1RVUk4gYW5kIG5vIE5B
VCwgc28gcmVwbGFjZSB0aGF0IHdpdGggdGhlCiAgIC8vIGRlc2lyZWQgc2V0dXAgKE5BVCwgU1RV
TiBzZXJ2ZXIsIFRVUk4gc2VydmVyLCBVRFAvVENQKS4KQEAgLTIyNTgsNyArMjI1Nyw3IEBAIFRF
U1RfRihCYXNpY1BvcnRBbGxvY2F0b3JUZXN0LCBIb3N0Q2FuZGlkYXRlQWRkcmVzc0lzUmVwbGFj
ZWRCeUhvc3RuYW1lKSB7CiAgIEFkZFR1cm5TZXJ2ZXJzKGtUdXJuVWRwSW50SVB2NkFkZHIsIGtU
dXJuVGNwSW50SVB2NkFkZHIpOwogCiAgIEFTU0VSVF9FUSgmbmV0d29ya19tYW5hZ2VyXywgYWxs
b2NhdG9yKCkubmV0d29ya19tYW5hZ2VyKCkpOwotICBuZXR3b3JrX21hbmFnZXJfLkNyZWF0ZU1E
bnNSZXNwb25kZXIoKTsKKyAgbmV0d29ya19tYW5hZ2VyXy5DcmVhdGVNZG5zUmVzcG9uZGVyKCk7
CiAgIEFkZEludGVyZmFjZShrQ2xpZW50QWRkcik7CiAgIEFTU0VSVF9UUlVFKENyZWF0ZVNlc3Np
b24oSUNFX0NBTkRJREFURV9DT01QT05FTlRfUlRQKSk7CiAgIHNlc3Npb25fLT5TdGFydEdldHRp
bmdQb3J0cygpOwpAQCAtMjI3MCwyMyArMjI2OSwyOSBAQCBURVNUX0YoQmFzaWNQb3J0QWxsb2Nh
dG9yVGVzdCwgSG9zdENhbmRpZGF0ZUFkZHJlc3NJc1JlcGxhY2VkQnlIb3N0bmFtZSkgewogICBp
bnQgbnVtX3NyZmx4X2NhbmRpZGF0ZXMgPSAwOwogICBpbnQgbnVtX3JlbGF5X2NhbmRpZGF0ZXMg
PSAwOwogICBmb3IgKGNvbnN0IGF1dG8mIGNhbmRpZGF0ZSA6IGNhbmRpZGF0ZXNfKSB7CisgICAg
Y29uc3QgYXV0byYgcmFkZHIgPSBjYW5kaWRhdGUucmVsYXRlZF9hZGRyZXNzKCk7CisKICAgICBp
ZiAoY2FuZGlkYXRlLnR5cGUoKSA9PSBMT0NBTF9QT1JUX1RZUEUpIHsKLSAgICAgIEVYUEVDVF9U
UlVFKGNhbmRpZGF0ZS5hZGRyZXNzKCkuSXNVbnJlc29sdmVkSVAoKSk7CisgICAgICBFWFBFQ1Rf
RkFMU0UoY2FuZGlkYXRlLmFkZHJlc3MoKS5ob3N0bmFtZSgpLmVtcHR5KCkpOworICAgICAgRVhQ
RUNUX1RSVUUocmFkZHIuSXNOaWwoKSk7CiAgICAgICBpZiAoY2FuZGlkYXRlLnByb3RvY29sKCkg
PT0gVURQX1BST1RPQ09MX05BTUUpIHsKICAgICAgICAgKytudW1faG9zdF91ZHBfY2FuZGlkYXRl
czsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgICsrbnVtX2hvc3RfdGNwX2NhbmRpZGF0ZXM7CiAg
ICAgICB9CisgICAgfSBlbHNlIGlmIChjYW5kaWRhdGUudHlwZSgpID09IFNUVU5fUE9SVF9UWVBF
KSB7CisgICAgICAvLyBGb3IgYSBzcmZseCBjYW5kaWRhdGUsIHRoZSByZWxhdGVkIGFkZHJlc3Mg
c2hvdWxkIGJlIHNldCB0byAwLjAuMC4wIG9yCisgICAgICAvLyA6OjAKKyAgICAgIEVYUEVDVF9U
UlVFKElQSXNBbnkocmFkZHIuaXBhZGRyKCkpKTsKKyAgICAgIEVYUEVDVF9FUShyYWRkci5wb3J0
KCksIDApOworICAgICAgKytudW1fc3JmbHhfY2FuZGlkYXRlczsKKyAgICB9IGVsc2UgaWYgKGNh
bmRpZGF0ZS50eXBlKCkgPT0gUkVMQVlfUE9SVF9UWVBFKSB7CisgICAgICBFWFBFQ1RfRVEoa05h
dFVkcEFkZHIuaXBhZGRyKCksIHJhZGRyLmlwYWRkcigpKTsKKyAgICAgIEVYUEVDVF9FUShrTmF0
VWRwQWRkci5mYW1pbHkoKSwgcmFkZHIuZmFtaWx5KCkpOworICAgICAgKytudW1fcmVsYXlfY2Fu
ZGlkYXRlczsKICAgICB9IGVsc2UgewotICAgICAgRVhQRUNUX05FKFBSRkxYX1BPUlRfVFlQRSwg
Y2FuZGlkYXRlLnR5cGUoKSk7Ci0gICAgICAvLyBUaGUgcmVsYXRlZCBhZGRyZXNzIHNob3VsZCBi
ZSBzZXQgdG8gMC4wLjAuMCBvciA6OjAgZm9yIHNyZmx4IGFuZAotICAgICAgLy8gcmVsYXkgY2Fu
ZGlkYXRlcy4KLSAgICAgIEVYUEVDVF9FUShydGM6OlNvY2tldEFkZHJlc3MoKSwgY2FuZGlkYXRl
LnJlbGF0ZWRfYWRkcmVzcygpKTsKLSAgICAgIGlmIChjYW5kaWRhdGUudHlwZSgpID09IFNUVU5f
UE9SVF9UWVBFKSB7Ci0gICAgICAgICsrbnVtX3NyZmx4X2NhbmRpZGF0ZXM7Ci0gICAgICB9IGVs
c2UgewotICAgICAgICArK251bV9yZWxheV9jYW5kaWRhdGVzOwotICAgICAgfQorICAgICAgLy8g
cHJmbHggY2FuZGlkYXRlcyBhcmUgbm90IGV4cGVjdGVkCisgICAgICBGQUlMKCk7CiAgICAgfQog
ICB9CiAgIEVYUEVDVF9FUSgxLCBudW1faG9zdF91ZHBfY2FuZGlkYXRlcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L3R1
cm5wb3J0ZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9jbGllbnQvdHVybnBvcnRmYWN0b3J5LmNjCmluZGV4IDY0MDQxMzRjNGExOWQ4YzVl
MWEwZWU3MzRhNmI3NjZlMGZiNGE3NzguLmMwYzE3MjA3NmJjMWViN2QyMmY3NTkzMWEyNWE5MDUw
NDU3MmM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9jbGllbnQvdHVybnBvcnRmYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvdHVybnBvcnRmYWN0b3J5LmNj
CkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAicDJwL2NsaWVudC90dXJucG9ydGZhY3Rvcnku
aCIKIAogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAi
cDJwL2Jhc2UvdHVybnBvcnQuaCIKIApAQCAtMjEsMjYgKzIyLDI2IEBAIFR1cm5Qb3J0RmFjdG9y
eTo6flR1cm5Qb3J0RmFjdG9yeSgpIHt9CiBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gVHVyblBvcnRG
YWN0b3J5OjpDcmVhdGUoCiAgICAgY29uc3QgQ3JlYXRlUmVsYXlQb3J0QXJncyYgYXJncywKICAg
ICBydGM6OkFzeW5jUGFja2V0U29ja2V0KiB1ZHBfc29ja2V0KSB7Ci0gIFR1cm5Qb3J0KiBwb3J0
ID0gVHVyblBvcnQ6OkNyZWF0ZSgKKyAgYXV0byBwb3J0ID0gVHVyblBvcnQ6OkNyZWF0ZVVuaXF1
ZSgKICAgICAgIGFyZ3MubmV0d29ya190aHJlYWQsIGFyZ3Muc29ja2V0X2ZhY3RvcnksIGFyZ3Mu
bmV0d29yaywgdWRwX3NvY2tldCwKICAgICAgIGFyZ3MudXNlcm5hbWUsIGFyZ3MucGFzc3dvcmQs
ICphcmdzLnNlcnZlcl9hZGRyZXNzLAogICAgICAgYXJncy5jb25maWctPmNyZWRlbnRpYWxzLCBh
cmdzLmNvbmZpZy0+cHJpb3JpdHksIGFyZ3Mub3JpZ2luLAogICAgICAgYXJncy50dXJuX2N1c3Rv
bWl6ZXIpOwogICBwb3J0LT5TZXRUbHNDZXJ0UG9saWN5KGFyZ3MuY29uZmlnLT50bHNfY2VydF9w
b2xpY3kpOwotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBvcnQ+KHBvcnQpOworICByZXR1cm4g
c3RkOjptb3ZlKHBvcnQpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gVHVyblBvcnRGYWN0
b3J5OjpDcmVhdGUoY29uc3QgQ3JlYXRlUmVsYXlQb3J0QXJncyYgYXJncywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWluX3BvcnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heF9wb3J0KSB7Ci0g
IFR1cm5Qb3J0KiBwb3J0ID0gVHVyblBvcnQ6OkNyZWF0ZSgKKyAgYXV0byBwb3J0ID0gVHVyblBv
cnQ6OkNyZWF0ZVVuaXF1ZSgKICAgICAgIGFyZ3MubmV0d29ya190aHJlYWQsIGFyZ3Muc29ja2V0
X2ZhY3RvcnksIGFyZ3MubmV0d29yaywgbWluX3BvcnQsCiAgICAgICBtYXhfcG9ydCwgYXJncy51
c2VybmFtZSwgYXJncy5wYXNzd29yZCwgKmFyZ3Muc2VydmVyX2FkZHJlc3MsCiAgICAgICBhcmdz
LmNvbmZpZy0+Y3JlZGVudGlhbHMsIGFyZ3MuY29uZmlnLT5wcmlvcml0eSwgYXJncy5vcmlnaW4s
CiAgICAgICBhcmdzLmNvbmZpZy0+dGxzX2FscG5fcHJvdG9jb2xzLCBhcmdzLmNvbmZpZy0+dGxz
X2VsbGlwdGljX2N1cnZlcywKICAgICAgIGFyZ3MudHVybl9jdXN0b21pemVyLCBhcmdzLmNvbmZp
Zy0+dGxzX2NlcnRfdmVyaWZpZXIpOwogICBwb3J0LT5TZXRUbHNDZXJ0UG9saWN5KGFyZ3MuY29u
ZmlnLT50bHNfY2VydF9wb2xpY3kpOwotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBvcnQ+KHBv
cnQpOworICByZXR1cm4gc3RkOjptb3ZlKHBvcnQpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgY3Jp
Y2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL3N0dW5wcm9iZXIvc3R1bnByb2Jlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9zdHVucHJvYmVyL3N0dW5wcm9iZXIuY2MKaW5kZXggNTE1
MDZiNjcwZDc1MThhZjM3MWFkMGFjYzAwMjZhZTJhMzY1NzcxNi4uOTc3ODQxNmExYjAwOTEyMDVk
MjdiZGRjNjdkZmE1ODc1YzJhNWMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL3N0dW5wcm9iZXIvc3R1bnByb2Jlci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvc3R1bnByb2Jlci9z
dHVucHJvYmVyLmNjCkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFN0dW5Qcm9iZXI6OlJlcXVlc3Rl
ciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29j
a2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6UGFja2V0VGltZSYgdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAKICAgY29uc3Qgc3RkOjp2ZWN0b3I8UmVxdWVz
dCo+JiByZXF1ZXN0cygpIHsgcmV0dXJuIHJlcXVlc3RzXzsgfQogCkBAIC0yMDQsNyArMjA0LDcg
QEAgdm9pZCBTdHVuUHJvYmVyOjpSZXF1ZXN0ZXI6Ok9uU3R1blJlc3BvbnNlUmVjZWl2ZWQoCiAg
ICAgY29uc3QgY2hhciogYnVmLAogICAgIHNpemVfdCBzaXplLAogICAgIGNvbnN0IHJ0Yzo6U29j
a2V0QWRkcmVzcyYgYWRkciwKLSAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHRpbWUpIHsKKyAg
ICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLykgewogICBSVENfRENIRUNLKHRo
cmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBSVENfRENIRUNLKHNvY2tl
dF8pOwogICBSZXF1ZXN0KiByZXF1ZXN0ID0gR2V0UmVxdWVzdEJ5QWRkcmVzcyhhZGRyLmlwYWRk
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9zdHVucHJvYmVyL3N0dW5wcm9iZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9zdHVucHJvYmVyL3N0dW5wcm9iZXIuaAppbmRleCA5ZjFk
NDJmMzJjZTM3YjFiYjJlNTYzODc3MmE2NGE4YjYxYTEzYTcxLi5hNGZlZWNkODEzMmE5ZjM1YjQ5
Y2I5NzhjMzNiNjQ1NTBlZTY2Y2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvc3R1bnByb2Jlci9zdHVucHJvYmVyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL3N0dW5wcm9iZXIvc3R1
bnByb2Jlci5oCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvaXBhZGRyZXNz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29yay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Nv
Y2tldGFkZHJlc3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9j
aGVja2VyLmgiCiAKQEAgLTQ5LDcgKzUwLDcgQEAgZW51bSBOYXRUeXBlIHsKICAgTkFUVFlQRV9O
T05fU1lNTUVUUklDICAvLyBCZWhpbmQgYSBub24tc3ltbWV0cmljIE5BVC4KIH07CiAKLWNsYXNz
IFN0dW5Qcm9iZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4geworY2xhc3MgUlRDX0VY
UE9SVCBTdHVuUHJvYmVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICBwdWJsaWM6
CiAgIGVudW0gU3RhdHVzIHsgICAgICAgLy8gVXNlZCBpbiBVTUFfSElTVE9HUkFNX0VOVU1FUkFU
SU9OLgogICAgIFNVQ0NFU1MsICAgICAgICAgIC8vIFN1Y2Nlc3NmdWxseSByZWNlaXZlZCBieXRl
cyBmcm9tIHRoZSBzZXJ2ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL0JVSUxELmduCmluZGV4IDRlNmU1NTgxMGFkOWMyMGI4NDlkZTc1
NmM5NzM3NDdhN2U2MzhhMzYuLjY1YWIzM2E1MGI0OTdkMmRjMjAzNmMzNjUwNjI4YjhkNzQ4YmY4
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL0JVSUxELmduCkBAIC0zMSw2ICszMSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRj
X3BjX2Jhc2UiKSB7CiAgIHNvdXJjZXMgPSBbCiAgICAgImNoYW5uZWwuY2MiLAogICAgICJjaGFu
bmVsLmgiLAorICAgICJjaGFubmVsaW50ZXJmYWNlLmgiLAogICAgICJjaGFubmVsbWFuYWdlci5j
YyIsCiAgICAgImNoYW5uZWxtYW5hZ2VyLmgiLAogICAgICJkdGxzc3J0cHRyYW5zcG9ydC5jYyIs
CkBAIC04Nyw2ICs4OCw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX3BjX2Jhc2UiKSB7CiAg
ICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3QiLAogICAgICIuLi9zeXN0ZW1fd3Jh
cHBlcnM6bWV0cmljcyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9y
eSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIApAQCAt
MjAzLDYgKzIwNSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicGVlcmNvbm5lY3Rpb24iKSB7CiAg
ICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4vcnRjX2Jhc2U6c3Ry
aW5ndXRpbHMiLAogICAgICIuLi9ydGNfYmFzZS9leHBlcmltZW50czpjb25nZXN0aW9uX2NvbnRy
b2xsZXJfZXhwZXJpbWVudCIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwK
ICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0IiwKICAgICAiLi4vcnRjX2Jhc2Uv
dGhpcmRfcGFydHkvc2lnc2xvdCIsCiAgICAgIi4uL3N0YXRzIiwKQEAgLTIxMCw2MiArMjEzLDEx
IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicGVlcmNvbm5lY3Rpb24iKSB7CiAgICAgIi4uL3N5c3Rl
bV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNz
IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQogCi1ydGNfc3RhdGljX2xp
YnJhcnkoImJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIpIHsKLSAgc291
cmNlcyA9IFsKLSAgICAiYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNj
IiwKLSAgICAiYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiLAotICBd
Ci0KLSAgZGVwcyA9IFsKLSAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnkiLAotICAgICIuLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCi0gICAgIi4uL21vZHVs
ZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKLSAgICAiLi4vbW9kdWxlcy92
aWRlb19jb2Rpbmc6d2VicnRjX3ZwOV9oZWxwZXJzIiwKLSAgICAiLi4vcnRjX2Jhc2U6cHRyX3V0
aWwiLAotICAgICIuLi9ydGNfYmFzZS9zeXN0ZW06ZmFsbHRocm91Z2giLAotICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAotICBdCi19Ci0KLSMgVGhpcyB0YXJnZXQg
aW1wbGVtZW50cyBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkgbWV0aG9kcyB0aGF0IHdpbGwg
Y3JlYXRlIGEKLSMgUGVlckNvbm5lY3Rpb24gd2lsbCBmdWxsIGZ1bmN0aW9uYWxpdHkgKGF1ZGlv
LCB2aWRlbyBhbmQgZGF0YSkuIEFwcGxpY2F0aW9ucwotIyB0aGF0IHdpc2ggdG8gcmVkdWNlIHRo
ZWlyIGJpbmFyeSBzaXplIGJ5IG9tbWl0dGluZyBmdW5jdGlvbmFsaXR5IHRoZXkgZG9uJ3QKLSMg
bmVlZCBzaG91bGQgdXNlIENyZWF0ZU1vZHVsYXJDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3Rvcnkg
aW5zdGVhZCwgdXNpbmcgdGhlCi0jICJwZWVyY29ubmVjdGlvbiIgYnVpbGQgdGFyZ2V0IGFuZCBv
dGhlciB0YXJnZXRzIHNwZWNpZmljIHRvIHRoZWlyCi0jIHJlcXVyZW1lbnRzLiBTZWUgY29tbWVu
dCBpbiBwZWVyY29ubmVjdGlvbmZhY3RvcnlpbnRlcmZhY2UuaC4KLXJ0Y19zdGF0aWNfbGlicmFy
eSgiY3JlYXRlX3BjX2ZhY3RvcnkiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgImNyZWF0ZXBlZXJj
b25uZWN0aW9uZmFjdG9yeS5jYyIsCi0gIF0KLQotICBkZXBzID0gWwotICAgICIuLi9hcGk6Y2Fs
bGZhY3RvcnlfYXBpIiwKLSAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGki
LAotICAgICIuLi9hcGkvYXVkaW86YXVkaW9fbWl4ZXJfYXBpIiwKLSAgICAiLi4vYXBpL2F1ZGlv
X2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKLSAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRl
b19jb2RlY3NfYXBpIiwKLSAgICAiLi4vY2FsbCIsCi0gICAgIi4uL2NhbGw6Y2FsbF9pbnRlcmZh
Y2VzIiwKLSAgICAiLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCi0gICAgIi4uL2xvZ2dp
bmc6cnRjX2V2ZW50X2xvZ19pbXBsX2Jhc2UiLAotICAgICIuLi9tZWRpYTpydGNfYXVkaW9fdmlk
ZW8iLAotICAgICIuLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCi0gICAgIi4uL21vZHVsZXMvYXVk
aW9fZGV2aWNlOmF1ZGlvX2RldmljZSIsCi0gICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
ZzphdWRpb19wcm9jZXNzaW5nIiwKLSAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAotICAgICIu
Li9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gIF0KLQotICBpZiAoIWJ1aWxkX3dpdGhf
Y2hyb21pdW0gJiYgaXNfY2xhbmcpIHsKLSAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhl
IENocm9taXVtIENsYW5nIHBsdWdpbiAoYnVncy53ZWJydGMub3JnLzE2MykuCi0gICAgc3VwcHJl
c3NlZF9jb25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2NsYW5nOmZpbmRfYmFkX2NvbnN0cnVj
dHMiIF0KLSAgfQotfQotCiBydGNfc291cmNlX3NldCgibGliamluZ2xlX3BlZXJjb25uZWN0aW9u
IikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBhbGxvd19wb2lzb24gPSBbCkBAIC0yNzMs
OCArMjI1LDggQEAgcnRjX3NvdXJjZV9zZXQoImxpYmppbmdsZV9wZWVyY29ubmVjdGlvbiIpIHsK
ICAgICAic29mdHdhcmVfdmlkZW9fY29kZWNzIiwgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvNzky
NSk6IFJlbW92ZS4KICAgXQogICBkZXBzID0gWwotICAgICI6Y3JlYXRlX3BjX2ZhY3RvcnkiLAog
ICAgICI6cGVlcmNvbm5lY3Rpb24iLAorICAgICIuLi9hcGk6Y3JlYXRlX3BlZXJjb25uZWN0aW9u
X2ZhY3RvcnkiLAogICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAg
IF0KIH0KQEAgLTI5Myw2ICsyNDUsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAg
ICJydGNwbXV4ZmlsdGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJydHB0cmFuc3BvcnRfdW5pdHRl
c3QuY2MiLAogICAgICAgInJ0cHRyYW5zcG9ydHRlc3R1dGlsLmgiLAorICAgICAgInNlc3Npb25k
ZXNjcmlwdGlvbl91bml0dGVzdC5jYyIsCiAgICAgICAic3J0cGZpbHRlcl91bml0dGVzdC5jYyIs
CiAgICAgICAic3J0cHNlc3Npb25fdW5pdHRlc3QuY2MiLAogICAgICAgInNydHB0ZXN0dXRpbC5o
IiwKQEAgLTMxNiw2ICsyNjksNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6
cnRjX3BjIiwKICAgICAgICI6cnRjX3BjX2Jhc2UiLAogICAgICAgIi4uL2FwaTphcnJheV92aWV3
IiwKKyAgICAgICIuLi9hcGk6ZmFrZV9tZWRpYV90cmFuc3BvcnQiLAogICAgICAgIi4uL2FwaTps
aWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi9jYWxsOnJ0cF9pbnRlcmZh
Y2VzIiwKICAgICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKQEAgLTMyNSw2ICsy
NzksNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9wMnA6cDJwX3Rlc3Rf
dXRpbHMiLAogICAgICAgIi4uL3AycDpydGNfcDJwIiwKICAgICAgICIuLi9ydGNfYmFzZTpjaGVj
a3MiLAorICAgICAgIi4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICAgIi4uL3J0Y19i
YXNlOnJ0Y19iYXNlIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAg
ICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfbWFpbiIsCkBAIC0zNTMsNiArMzA4LDcg
QEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgXQogICAgIGRlcHMgPSBbCiAgICAgICAi
OnBjX3Rlc3RfdXRpbHMiLAorICAgICAgIi4uL2FwaTpjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFj
dG9yeSIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAg
ICAgIi4uL2FwaTpydGNfc3RhdHNfYXBpIiwKICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1
aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKQEAgLTM2Myw2ICszMTksNyBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9wMnA6cDJwX3Rlc3RfdXRpbHMiLAogICAgICAg
Ii4uL3AycDpydGNfcDJwIiwKICAgICAgICIuLi9wYzpwZWVyY29ubmVjdGlvbiIsCisgICAgICAi
Li4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2Ui
LAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCkBAIC0zOTEsNiArMzQ4LDcgQEAgaWYgKHJ0Y19p
bmNsdWRlX3Rlc3RzKSB7CiAgICAgICAidGVzdC9mYWtldmlkZW90cmFja3JlbmRlcmVyLmgiLAog
ICAgICAgInRlc3QvZmFrZXZpZGVvdHJhY2tzb3VyY2UuaCIsCiAgICAgICAidGVzdC9mcmFtZWdl
bmVyYXRvcmNhcHR1cmVydmlkZW90cmFja3NvdXJjZS5oIiwKKyAgICAgICJ0ZXN0L21vY2tfY2hh
bm5lbGludGVyZmFjZS5oIiwKICAgICAgICJ0ZXN0L21vY2tfZGF0YWNoYW5uZWwuaCIsCiAgICAg
ICAidGVzdC9tb2NrX3J0cHJlY2VpdmVyaW50ZXJuYWwuaCIsCiAgICAgICAidGVzdC9tb2NrX3J0
cHNlbmRlcmludGVybmFsLmgiLApAQCAtNDA2LDYgKzM2NCw3IEBAIGlmIChydGNfaW5jbHVkZV90
ZXN0cykgewogICAgICAgIjpwZWVyY29ubmVjdGlvbiIsCiAgICAgICAiOnJ0Y19wY19iYXNlIiwK
ICAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwKKyAgICAgICIuLi9hcGk6Y3JlYXRlX3BlZXJjb25u
ZWN0aW9uX2ZhY3RvcnkiLAogICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25f
YXBpIiwKICAgICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX3Rlc3RfYXBpIiwK
ICAgICAgICIuLi9hcGk6cnRjX3N0YXRzX2FwaSIsCkBAIC00MTksMTIgKzM3OCwxMyBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCiAg
ICAgICAiLi4vbWVkaWE6cnRjX21lZGlhX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi9tb2R1bGVz
L2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2UiLAorICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZzphcGkiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19w
cm9jZXNzaW5nIiwKICAgICAgICIuLi9wMnA6cDJwX3Rlc3RfdXRpbHMiLAogICAgICAgIi4uL3J0
Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAg
ICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKLSAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAg
ICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAogICAgICAgIi4uL3J0Y19iYXNlL3RoaXJk
X3BhcnR5L3NpZ3Nsb3QiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKQEAgLTQ3MCw2
ICs0MzAsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJydHBtZWRpYXV0aWxz
X3VuaXR0ZXN0LmNjIiwKICAgICAgICJydHBwYXJhbWV0ZXJzY29udmVyc2lvbl91bml0dGVzdC5j
YyIsCiAgICAgICAicnRwc2VuZGVycmVjZWl2ZXJfdW5pdHRlc3QuY2MiLAorICAgICAgInJ0cHRy
YW5zY2VpdmVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJzY3RwdXRpbHNfdW5pdHRlc3QuY2MiLAog
ICAgICAgInN0YXRzY29sbGVjdG9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICJ0ZXN0L2Zha2VhdWRp
b2NhcHR1cmVtb2R1bGVfdW5pdHRlc3QuY2MiLApAQCAtNDkyLDE3ICs0NTMsMjMgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgZGVwcyA9IFsKICAgICAgICI6cGVlcmNvbm5lY3Rpb24i
LAogICAgICAgIjpydGNfcGNfYmFzZSIsCi0gICAgICAiLi4vYXBpOmZha2VfZnJhbWVfY3J5cHRv
IiwKKyAgICAgICIuLi9hcGk6Y3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkiLAorICAgICAg
Ii4uL2FwaTpmYWtlX2ZyYW1lX2RlY3J5cHRvciIsCisgICAgICAiLi4vYXBpOmZha2VfZnJhbWVf
ZW5jcnlwdG9yIiwKICAgICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIs
CisgICAgICAiLi4vYXBpOmxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydCIsCiAgICAgICAiLi4vYXBp
Om1vY2tfcnRwIiwKICAgICAgICIuLi9hcGkvdW5pdHM6dGltZV9kZWx0YSIsCiAgICAgICAiLi4v
bG9nZ2luZzpmYWtlX3J0Y19ldmVudF9sb2ciLAogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIs
CisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCisgICAgICAiLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwK
ICAgICAgICIuLi9ydGNfYmFzZS90aGlyZF9wYXJ0eS9iYXNlNjQiLAogICAgICAgIi4uL3N5c3Rl
bV93cmFwcGVyczptZXRyaWNzIiwKICAgICAgICIuLi90ZXN0OmZpbGV1dGlscyIsCiAgICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICBdCiAgICAgaWYgKGlzX2FuZHJvaWQp
IHsKICAgICAgIGRlcHMgKz0gWyAiOmFuZHJvaWRfYmxhY2tfbWFnaWMiIF0KQEAgLTUxMyw2ICs0
ODAsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6cGNfdGVzdF91dGlscyIs
CiAgICAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4vYXBpOmNhbGxmYWN0b3J5X2Fw
aSIsCisgICAgICAiLi4vYXBpOmZha2VfbWVkaWFfdHJhbnNwb3J0IiwKICAgICAgICIuLi9hcGk6
bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX3Rlc3RfYXBpIiwKICAgICAgICIuLi9hcGk6cnRjX3N0
YXRzX2FwaSIsCiAgICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwK
QEAgLTUzMSw2ICs0OTksNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9t
ZWRpYTpydGNfZGF0YSIsICAjIFRPRE8ocGhvZ2x1bmQpOiBBRkFJSyBvbmx5IHVzZWQgZm9yIG9u
ZSBzY3RwIGNvbnN0YW50LgogICAgICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKICAgICAg
ICIuLi9tZWRpYTpydGNfbWVkaWFfdGVzdHNfdXRpbHMiLAorICAgICAgIi4uL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzph
dWRpb19wcm9jZXNzaW5nIiwKICAgICAgICIuLi9tb2R1bGVzL3V0aWxpdHk6dXRpbGl0eSIsCiAg
ICAgICAiLi4vcDJwOnAycF90ZXN0X3V0aWxzIiwKQEAgLTUzOSw3ICs1MDgsNiBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgICAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX3Rlc3RzX21haW4iLAotICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxz
IiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCiAgICAgICAiLi4vcnRjX2Jh
c2U6c2FmZV9jb252ZXJzaW9ucyIsCiAgICAgICAiLi4vdGVzdDphdWRpb19jb2RlY19tb2NrcyIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idWlsdGluX3ZpZGVvX2JpdHJhdGVf
YWxsb2NhdG9yX2ZhY3RvcnkuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZDdk
YWVhNmZhOThhZjdmMDBhOWJmZmY0MTVmOTk5ZjhiNzllMzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNj
CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0K
LSNpbmNsdWRlICJwYy9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIK
LQotI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2Uv
Y29kZWMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19y
YXRlX2FsbG9jYXRvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkv
ZGVmYXVsdF92aWRlb19iaXRyYXRlX2FsbG9jYXRvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlk
ZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL2ZhbGx0aHJvdWdoLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1u
YW1lc3BhY2UgewotCi1jbGFzcyBCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeQot
ICAgIDogcHVibGljIFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkgewotIHB1YmxpYzoKLSAg
QnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSA9IGRlZmF1bHQ7Ci0gIH5CdWls
dGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKLQot
ICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiBDcmVhdGVWaWRlb0JpdHJh
dGVBbGxvY2F0b3IoCi0gICAgICBjb25zdCBWaWRlb0NvZGVjJiBjb2RlYykgb3ZlcnJpZGUgewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+IHJhdGVfYWxsb2NhdG9y
OwotICAgIHN3aXRjaCAoY29kZWMuY29kZWNUeXBlKSB7Ci0gICAgICBjYXNlIGtWaWRlb0NvZGVj
VlA4OgotICAgICAgICBSVENfRkFMTFRIUk9VR0goKTsKLSAgICAgIGNhc2Uga1ZpZGVvQ29kZWNI
MjY0OgotICAgICAgICByYXRlX2FsbG9jYXRvci5yZXNldChuZXcgU2ltdWxjYXN0UmF0ZUFsbG9j
YXRvcihjb2RlYykpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Uga1ZpZGVvQ29kZWNWUDk6
Ci0gICAgICAgIHJhdGVfYWxsb2NhdG9yLnJlc2V0KG5ldyBTdmNSYXRlQWxsb2NhdG9yKGNvZGVj
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmF0ZV9hbGxvY2F0
b3IucmVzZXQobmV3IERlZmF1bHRWaWRlb0JpdHJhdGVBbGxvY2F0b3IoY29kZWMpKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHJhdGVfYWxsb2NhdG9yOwotICB9Ci19OwotCi19ICAvLyBuYW1lc3BhY2UK
LQotc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+Ci1DcmVhdGVC
dWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpIHsKLSAgcmV0dXJuIGFic2w6Om1h
a2VfdW5pcXVlPEJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PigpOwotfQotCi19
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2Zh
Y3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1
aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2MGYyYWZjYmFiYTEyNzgxNGQ2MzViYWU0MmYwMDNhZDMwMjBmZTQ3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLyoKLSAq
ICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgUENfQlVJTFRJTl9WSURFT19CSVRSQVRFX0FMTE9D
QVRPUl9GQUNUT1JZX0hfCi0jZGVmaW5lIFBDX0JVSUxUSU5fVklERU9fQklUUkFURV9BTExPQ0FU
T1JfRkFDVE9SWV9IXwotCi0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaW5jbHVkZSAiYXBpL3ZpZGVv
L3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7
Ci0KLXN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgotQ3JlYXRl
QnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKTsKLQotfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwotCi0jZW5kaWYgIC8vIFBDX0JVSUxUSU5fVklERU9fQklUUkFURV9BTExPQ0FUT1Jf
RkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVyLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyMDFkMmJmOTVjYWI1NDcxNjIwOTJkOTE5N2U3OTEwOTgxY2VlZmQ2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZpbHRlci5jYworKysgL2Rldi9udWxs
CkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
LSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJwYy9idW5k
bGVmaWx0ZXIuaCIKLQotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvcnRwdXRpbHMuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBjcmlja2V0IHsKLQotQnVuZGxlRmls
dGVyOjpCdW5kbGVGaWx0ZXIoKSB7fQotCi1CdW5kbGVGaWx0ZXI6On5CdW5kbGVGaWx0ZXIoKSB7
fQotCi1ib29sIEJ1bmRsZUZpbHRlcjo6RGVtdXhQYWNrZXQoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGxlbikgewotICAvLyBGb3IgUlRQIHBhY2tldHMsIHdlIGNoZWNrIHdoZXRoZXIgdGhl
IHBheWxvYWQgdHlwZSBjYW4gYmUgZm91bmQuCi0gIGlmICghSXNSdHBQYWNrZXQoZGF0YSwgbGVu
KSkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGludCBwYXlsb2FkX3R5cGUgPSAwOwot
ICBpZiAoIUdldFJ0cFBheWxvYWRUeXBlKGRhdGEsIGxlbiwgJnBheWxvYWRfdHlwZSkpIHsKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgcmV0dXJuIEZpbmRQYXlsb2FkVHlwZShwYXlsb2FkX3R5
cGUpOwotfQotCi12b2lkIEJ1bmRsZUZpbHRlcjo6QWRkUGF5bG9hZFR5cGUoaW50IHBheWxvYWRf
dHlwZSkgewotICBwYXlsb2FkX3R5cGVzXy5pbnNlcnQocGF5bG9hZF90eXBlKTsKLX0KLQotYm9v
bCBCdW5kbGVGaWx0ZXI6OkZpbmRQYXlsb2FkVHlwZShpbnQgcGxfdHlwZSkgY29uc3QgewotICBy
ZXR1cm4gcGF5bG9hZF90eXBlc18uZmluZChwbF90eXBlKSAhPSBwYXlsb2FkX3R5cGVzXy5lbmQo
KTsKLX0KLQotdm9pZCBCdW5kbGVGaWx0ZXI6OkNsZWFyQWxsUGF5bG9hZFR5cGVzKCkgewotICBw
YXlsb2FkX3R5cGVzXy5jbGVhcigpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVu
ZGxlZmlsdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9idW5kbGVmaWx0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU0NzdmNDU3
ZjI5NDhiYjQzNDE1NzNlYWJkY2UyZDFmZjg5OWM1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAK
LS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0g
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgUENfQlVORExFRklMVEVSX0hfCi0jZGVmaW5l
IFBDX0JVTkRMRUZJTFRFUl9IXwotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLSNpbmNsdWRlIDxz
ZXQ+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9zdHJlYW1wYXJh
bXMuaCIKLS8vI2luY2x1ZGUgInJ0Y19iYXNlL2Jhc2ljdHlwZXMuaCIKLQotbmFtZXNwYWNlIGNy
aWNrZXQgewotCi0vLyBJbiBjYXNlIG9mIHNpbmdsZSBSVFAgc2Vzc2lvbiBhbmQgc2luZ2xlIHRy
YW5zcG9ydCBjaGFubmVsLCBhbGwgc2Vzc2lvbgotLy8gKG9yIG1lZGlhKSBjaGFubmVscyBzaGFy
ZSBhIGNvbW1vbiB0cmFuc3BvcnQgY2hhbm5lbC4gSGVuY2UgdGhleSBhbGwgZ2V0Ci0vLyBTaWdu
YWxSZWFkUGFja2V0IHdoZW4gcGFja2V0IHJlY2VpdmVkIG9uIHRyYW5zcG9ydCBjaGFubmVsLiBU
aGlzIHJlcXVpcmVzCi0vLyBjcmlja2V0OjpCYXNlQ2hhbm5lbCB0byBrbm93IGFsbCB0aGUgdmFs
aWQgc291cmNlcywgZWxzZSBtZWRpYSBjaGFubmVsCi0vLyB3aWxsIGRlY29kZSBpbnZhbGlkIHBh
Y2tldHMuCi0vLwotLy8gVGhpcyBjbGFzcyBkZXRlcm1pbmVzIHdoZXRoZXIgYSBwYWNrZXQgaXMg
ZGVzdGluZWQgZm9yIGNyaWNrZXQ6OkJhc2VDaGFubmVsLgotLy8gVGhpcyBpcyBvbmx5IHRvIGJl
IHVzZWQgZm9yIFJUUCBwYWNrZXRzIGFzIFJUQ1AgcGFja2V0cyBhcmUgbm90IGZpbHRlcmVkLgot
Ly8gRm9yIFJUUCBwYWNrZXRzLCB0aGlzIGlzIGRlY2lkZWQgYmFzZWQgb24gdGhlIHBheWxvYWQg
dHlwZS4KLWNsYXNzIEJ1bmRsZUZpbHRlciB7Ci0gcHVibGljOgotICBCdW5kbGVGaWx0ZXIoKTsK
LSAgfkJ1bmRsZUZpbHRlcigpOwotCi0gIC8vIERldGVybWluZXMgaWYgYSBSVFAgcGFja2V0IGJl
bG9uZ3MgdG8gdmFsaWQgY3JpY2tldDo6QmFzZUNoYW5uZWwuCi0gIGJvb2wgRGVtdXhQYWNrZXQo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbik7Ci0KLSAgLy8gQWRkcyB0aGUgc3VwcG9y
dGVkIHBheWxvYWQgdHlwZS4KLSAgdm9pZCBBZGRQYXlsb2FkVHlwZShpbnQgcGF5bG9hZF90eXBl
KTsKLQotICAvLyBQdWJsaWMgZm9yIHVuaXR0ZXN0cy4KLSAgYm9vbCBGaW5kUGF5bG9hZFR5cGUo
aW50IHBsX3R5cGUpIGNvbnN0OwotICB2b2lkIENsZWFyQWxsUGF5bG9hZFR5cGVzKCk7Ci0KLSBw
cml2YXRlOgotICBzdGQ6OnNldDxpbnQ+IHBheWxvYWRfdHlwZXNfOwotfTsKLQotfSAgLy8gbmFt
ZXNwYWNlIGNyaWNrZXQKLQotI2VuZGlmICAvLyBQQ19CVU5ETEVGSUxURVJfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZp
bHRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL2J1bmRsZWZpbHRlcl91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTdjYWRiZmJhYzYxM2M2NDI5YThiZTI3N2UyMWYzNzVjZmM0YmQ3MS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXJfdW5pdHRlc3QuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDA0IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAi
cGMvYnVuZGxlZmlsdGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLQotdXNpbmcg
Y3JpY2tldDo6U3RyZWFtUGFyYW1zOwotCi1zdGF0aWMgY29uc3QgaW50IGtQYXlsb2FkVHlwZTEg
PSAweDExOwotc3RhdGljIGNvbnN0IGludCBrUGF5bG9hZFR5cGUyID0gMHgyMjsKLXN0YXRpYyBj
b25zdCBpbnQga1BheWxvYWRUeXBlMyA9IDB4MzM7Ci0KLS8vIFNTUkMgPSAweDExMTEsIFBheWxv
YWQgdHlwZSA9IDB4MTEKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtSdHBQYWNrZXRQdDFT
c3JjMVtdID0gewotICAgIDB4ODAsIGtQYXlsb2FkVHlwZTEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4
MDAsCi0gICAgMHgwMCwgMHgwMCwgICAgICAgICAgMHgwMCwgMHgwMCwgMHgxMSwgMHgxMSwKLX07
Ci0KLS8vIFNTUkMgPSAweDIyMjIsIFBheWxvYWQgdHlwZSA9IDB4MjIKLXN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIGtSdHBQYWNrZXRQdDJTc3JjMltdID0gewotICAgIDB4ODAsIDB4ODAgKyBr
UGF5bG9hZFR5cGUyLAotICAgIDB4MDAsIDB4MDEsCi0gICAgMHgwMCwgMHgwMCwKLSAgICAweDAw
LCAweDAwLAotICAgIDB4MDAsIDB4MDAsCi0gICAgMHgyMiwgMHgyMiwKLX07Ci0KLS8vIFNTUkMg
PSAweDIyMjIsIFBheWxvYWQgdHlwZSA9IDB4MzMKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IGtSdHBQYWNrZXRQdDNTc3JjMltdID0gewotICAgIDB4ODAsIGtQYXlsb2FkVHlwZTMsIDB4MDAs
IDB4MDEsIDB4MDAsIDB4MDAsCi0gICAgMHgwMCwgMHgwMCwgICAgICAgICAgMHgwMCwgMHgwMCwg
MHgyMiwgMHgyMiwKLX07Ci0KLS8vIEFuIFNDVFAgcGFja2V0Lgotc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNoYXIga1NjdHBQYWNrZXRbXSA9IHsKLSAgICAweDAwLCAweDAxLCAweDAwLCAweDAxLCAw
eGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAwLCAweDAwLAotICAgIDB4MDAsIDB4MDAsIDB4MDMs
IDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi19OwotCi1URVNUKEJ1
bmRsZUZpbHRlclRlc3QsIFJ0cFBhY2tldFRlc3QpIHsKLSAgY3JpY2tldDo6QnVuZGxlRmlsdGVy
IGJ1bmRsZV9maWx0ZXI7Ci0gIGJ1bmRsZV9maWx0ZXIuQWRkUGF5bG9hZFR5cGUoa1BheWxvYWRU
eXBlMSk7Ci0gIEVYUEVDVF9UUlVFKGJ1bmRsZV9maWx0ZXIuRGVtdXhQYWNrZXQoa1J0cFBhY2tl
dFB0MVNzcmMxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVv
ZihrUnRwUGFja2V0UHQxU3NyYzEpKSk7Ci0gIGJ1bmRsZV9maWx0ZXIuQWRkUGF5bG9hZFR5cGUo
a1BheWxvYWRUeXBlMik7Ci0gIEVYUEVDVF9UUlVFKGJ1bmRsZV9maWx0ZXIuRGVtdXhQYWNrZXQo
a1J0cFBhY2tldFB0MlNzcmMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVvZihrUnRwUGFja2V0UHQyU3NyYzIpKSk7Ci0KLSAgLy8gUGF5bG9hZCB0eXBlIDB4
MzMgaXMgbm90IGFkZGVkLgotICBFWFBFQ1RfRkFMU0UoYnVuZGxlX2ZpbHRlci5EZW11eFBhY2tl
dChrUnRwUGFja2V0UHQzU3NyYzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVvZihrUnRwUGFja2V0UHQzU3NyYzIpKSk7Ci0gIC8vIFNpemUgaXMgdG9vIHNt
YWxsLgotICBFWFBFQ1RfRkFMU0UoYnVuZGxlX2ZpbHRlci5EZW11eFBhY2tldChrUnRwUGFja2V0
UHQxU3NyYzEsIDExKSk7Ci0KLSAgYnVuZGxlX2ZpbHRlci5DbGVhckFsbFBheWxvYWRUeXBlcygp
OwotICBFWFBFQ1RfRkFMU0UoYnVuZGxlX2ZpbHRlci5EZW11eFBhY2tldChrUnRwUGFja2V0UHQx
U3NyYzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihr
UnRwUGFja2V0UHQxU3NyYzEpKSk7Ci0gIEVYUEVDVF9GQUxTRShidW5kbGVfZmlsdGVyLkRlbXV4
UGFja2V0KGtSdHBQYWNrZXRQdDJTc3JjMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZW9mKGtSdHBQYWNrZXRQdDJTc3JjMikpKTsKLX0KLQotVEVTVChCdW5k
bGVGaWx0ZXJUZXN0LCBJbnZhbGlkUnRwUGFja2V0KSB7Ci0gIGNyaWNrZXQ6OkJ1bmRsZUZpbHRl
ciBidW5kbGVfZmlsdGVyOwotICBFWFBFQ1RfRkFMU0UoYnVuZGxlX2ZpbHRlci5EZW11eFBhY2tl
dChrU2N0cFBhY2tldCwgc2l6ZW9mKGtTY3RwUGFja2V0KSkpOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWwuY2MKaW5k
ZXggYjYzY2VhN2NlY2YzMDIxYzM2MmE3YTcyZDc4NDZjN2UyMTMyYWNmYS4uNjdkNjk4NDg3Y2U0
Zjg5YmNkMmY5MjM2YjdjZWYwMjRmNmE5ZDRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsLmNjCkBAIC05Myw2ICs5
Myw3IEBAIHZvaWQgUnRwU2VuZFBhcmFtZXRlcnNGcm9tTWVkaWFEZXNjcmlwdGlvbigKICAgICBS
dHBTZW5kUGFyYW1ldGVyczxDb2RlYz4qIHNlbmRfcGFyYW1zKSB7CiAgIFJ0cFBhcmFtZXRlcnNG
cm9tTWVkaWFEZXNjcmlwdGlvbihkZXNjLCBleHRlbnNpb25zLCBzZW5kX3BhcmFtcyk7CiAgIHNl
bmRfcGFyYW1zLT5tYXhfYmFuZHdpZHRoX2JwcyA9IGRlc2MtPmJhbmR3aWR0aCgpOworICBzZW5k
X3BhcmFtcy0+ZXh0bWFwX2FsbG93X21peGVkID0gZGVzYy0+ZXh0bWFwX2FsbG93X21peGVkKCk7
CiB9CiAKIEJhc2VDaGFubmVsOjpCYXNlQ2hhbm5lbChydGM6OlRocmVhZCogd29ya2VyX3RocmVh
ZCwKQEAgLTEwMSw3ICsxMDIsNyBAQCBCYXNlQ2hhbm5lbDo6QmFzZUNoYW5uZWwocnRjOjpUaHJl
YWQqIHdvcmtlcl90aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhQ2hhbm5lbD4gbWVkaWFfY2hhbm5lbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNy
eXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgd2Vi
cnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKQogICAgIDogd29ya2VyX3RocmVhZF8o
d29ya2VyX3RocmVhZCksCiAgICAgICBuZXR3b3JrX3RocmVhZF8obmV0d29ya190aHJlYWQpLAog
ICAgICAgc2lnbmFsaW5nX3RocmVhZF8oc2lnbmFsaW5nX3RocmVhZCksCkBAIC0xMTcsNiArMTE4
LDExIEBAIEJhc2VDaGFubmVsOjpCYXNlQ2hhbm5lbChydGM6OlRocmVhZCogd29ya2VyX3RocmVh
ZCwKIEJhc2VDaGFubmVsOjp+QmFzZUNoYW5uZWwoKSB7CiAgIFRSQUNFX0VWRU5UMCgid2VicnRj
IiwgIkJhc2VDaGFubmVsOjp+QmFzZUNoYW5uZWwiKTsKICAgUlRDX0RDSEVDS19SVU5fT04od29y
a2VyX3RocmVhZF8pOworCisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgbWVkaWFfdHJh
bnNwb3J0Xy0+U2V0TmV0d29ya0NoYW5nZUNhbGxiYWNrKG51bGxwdHIpOworICB9CisKICAgLy8g
RWF0cyBhbnkgb3V0c3RhbmRpbmcgbWVzc2FnZXMgb3IgcGFja2V0cy4KICAgd29ya2VyX3RocmVh
ZF8tPkNsZWFyKCZpbnZva2VyXyk7CiAgIHdvcmtlcl90aHJlYWRfLT5DbGVhcih0aGlzKTsKQEAg
LTEzNiw4ICsxNDIsMTUgQEAgYm9vbCBCYXNlQ2hhbm5lbDo6Q29ubmVjdFRvUnRwVHJhbnNwb3J0
KCkgewogICAgICAgdGhpcywgJkJhc2VDaGFubmVsOjpPblRyYW5zcG9ydFJlYWR5VG9TZW5kKTsK
ICAgcnRwX3RyYW5zcG9ydF8tPlNpZ25hbFJ0Y3BQYWNrZXRSZWNlaXZlZC5jb25uZWN0KAogICAg
ICAgdGhpcywgJkJhc2VDaGFubmVsOjpPblJ0Y3BQYWNrZXRSZWNlaXZlZCk7Ci0gIHJ0cF90cmFu
c3BvcnRfLT5TaWduYWxOZXR3b3JrUm91dGVDaGFuZ2VkLmNvbm5lY3QoCi0gICAgICB0aGlzLCAm
QmFzZUNoYW5uZWw6Ok9uTmV0d29ya1JvdXRlQ2hhbmdlZCk7CisKKyAgLy8gSWYgbWVkaWEgdHJh
bnNwb3J0IGlzIHVzZWQsIGl0J3MgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBuZXR3b3JrCisg
IC8vIHJvdXRlIGNoYW5nZWQgY2FsbGJhY2tzLgorICBpZiAoIW1lZGlhX3RyYW5zcG9ydF8pIHsK
KyAgICBydHBfdHJhbnNwb3J0Xy0+U2lnbmFsTmV0d29ya1JvdXRlQ2hhbmdlZC5jb25uZWN0KAor
ICAgICAgICB0aGlzLCAmQmFzZUNoYW5uZWw6Ok9uTmV0d29ya1JvdXRlQ2hhbmdlZCk7CisgIH0K
KyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTcxOSk6IE1lZGlhIHRyYW5zcG9ydCBzaG91bGQg
YWxzbyBiZSB1c2VkIHRvIHByb3ZpZGUKKyAgLy8gJ3dyaXRhYmxlJyBzdGF0ZSBoZXJlLgogICBy
dHBfdHJhbnNwb3J0Xy0+U2lnbmFsV3JpdGFibGVTdGF0ZS5jb25uZWN0KHRoaXMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkJhc2VDaGFubmVsOjpPbldy
aXRhYmxlU3RhdGUpOwogICBydHBfdHJhbnNwb3J0Xy0+U2lnbmFsU2VudFBhY2tldC5jb25uZWN0
KHRoaXMsCkBAIC0xNTUsMTkgKzE2OCwyOSBAQCB2b2lkIEJhc2VDaGFubmVsOjpEaXNjb25uZWN0
RnJvbVJ0cFRyYW5zcG9ydCgpIHsKICAgcnRwX3RyYW5zcG9ydF8tPlNpZ25hbFNlbnRQYWNrZXQu
ZGlzY29ubmVjdCh0aGlzKTsKIH0KIAotdm9pZCBCYXNlQ2hhbm5lbDo6SW5pdF93KHdlYnJ0Yzo6
UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQpIHsKK3ZvaWQgQmFzZUNoYW5uZWw6
OkluaXRfdyh3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1l
ZGlhX3RyYW5zcG9ydCkgewogICBSVENfRENIRUNLX1JVTl9PTih3b3JrZXJfdGhyZWFkXyk7Cisg
IG1lZGlhX3RyYW5zcG9ydF8gPSBtZWRpYV90cmFuc3BvcnQ7CisKICAgbmV0d29ya190aHJlYWRf
LT5JbnZva2U8dm9pZD4oCiAgICAgICBSVENfRlJPTV9IRVJFLCBbdGhpcywgcnRwX3RyYW5zcG9y
dF0geyBTZXRSdHBUcmFuc3BvcnQocnRwX3RyYW5zcG9ydCk7IH0pOwogCiAgIC8vIEJvdGggUlRQ
IGFuZCBSVENQIGNoYW5uZWxzIHNob3VsZCBiZSBzZXQsIHdlIGNhbiBjYWxsIFNldEludGVyZmFj
ZSBvbgogICAvLyB0aGUgbWVkaWEgY2hhbm5lbCBhbmQgaXQgY2FuIHNldCBuZXR3b3JrIG9wdGlv
bnMuCi0gIG1lZGlhX2NoYW5uZWxfLT5TZXRJbnRlcmZhY2UodGhpcyk7CisgIG1lZGlhX2NoYW5u
ZWxfLT5TZXRJbnRlcmZhY2UodGhpcywgbWVkaWFfdHJhbnNwb3J0KTsKKworICBSVENfTE9HKExT
X0lORk8pIDw8ICJCYXNlQ2hhbm5lbDo6SW5pdF93LCBtZWRpYV90cmFuc3BvcnQ9IgorICAgICAg
ICAgICAgICAgICAgIDw8IChtZWRpYV90cmFuc3BvcnRfICE9IG51bGxwdHIpOworICBpZiAobWVk
aWFfdHJhbnNwb3J0XykgeworICAgIG1lZGlhX3RyYW5zcG9ydF8tPlNldE5ldHdvcmtDaGFuZ2VD
YWxsYmFjayh0aGlzKTsKKyAgfQogfQogCiB2b2lkIEJhc2VDaGFubmVsOjpEZWluaXQoKSB7CiAg
IFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF8tPklzQ3VycmVudCgpKTsKLSAgbWVkaWFfY2hhbm5l
bF8tPlNldEludGVyZmFjZShOVUxMKTsKKyAgbWVkaWFfY2hhbm5lbF8tPlNldEludGVyZmFjZSgv
KmlmYWNlPSovbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlh
X3RyYW5zcG9ydD0qL251bGxwdHIpOwogICAvLyBQYWNrZXRzIGFycml2ZSBvbiB0aGUgbmV0d29y
ayB0aHJlYWQsIHByb2Nlc3NpbmcgcGFja2V0cyBjYWxscyB2aXJ0dWFsCiAgIC8vIGZ1bmN0aW9u
cywgc28gbmVlZCB0byBzdG9wIHRoaXMgcHJvY2VzcyBpbiBEZWluaXQgdGhhdCBpcyBjYWxsZWQg
aW4KICAgLy8gZGVyaXZlZCBjbGFzc2VzIGRlc3RydWN0b3IuCkBAIC0zNTAsNiArMzczLDggQEAg
dm9pZCBCYXNlQ2hhbm5lbDo6T25Xcml0YWJsZVN0YXRlKGJvb2wgd3JpdGFibGUpIHsKIAogdm9p
ZCBCYXNlQ2hhbm5lbDo6T25OZXR3b3JrUm91dGVDaGFuZ2VkKAogICAgIGFic2w6Om9wdGlvbmFs
PHJ0Yzo6TmV0d29ya1JvdXRlPiBuZXR3b3JrX3JvdXRlKSB7CisgIFJUQ19MT0coTFNfSU5GTykg
PDwgIk5ldHdvcmsgcm91dGUgd2FzIGNoYW5nZWQuIjsKKwogICBSVENfRENIRUNLKG5ldHdvcmtf
dGhyZWFkXy0+SXNDdXJyZW50KCkpOwogICBydGM6Ok5ldHdvcmtSb3V0ZSBuZXdfcm91dGU7CiAg
IGlmIChuZXR3b3JrX3JvdXRlKSB7CkBAIC00MzksMTMgKzQ2NCwxMiBAQCB2b2lkIEJhc2VDaGFu
bmVsOjpPblJ0cFBhY2tldChjb25zdCB3ZWJydGM6OlJ0cFBhY2tldFJlY2VpdmVkJiBwYXJzZWRf
cGFja2V0KSB7CiAgIC8vIFJ0cFBhY2tldFJlY2VpdmVkLmFycml2YWxfdGltZV9tcyA9IChQYWNr
ZXRUaW1lICsgNTAwKSAvIDEwMDA7CiAgIC8vIE5vdGU6IFRoZSB8bm90X2JlZm9yZXwgZmllbGQg
aXMgYWx3YXlzIDAgaGVyZS4gVGhpcyBmaWVsZCBpcyBub3QgY3VycmVudGx5CiAgIC8vIHVzZWQs
IHNvIGl0IHNob3VsZCBiZSBmaW5lLgotICBpbnQ2NF90IHRpbWVzdGFtcCA9IC0xOworICBpbnQ2
NF90IHRpbWVzdGFtcF91cyA9IC0xOwogICBpZiAocGFyc2VkX3BhY2tldC5hcnJpdmFsX3RpbWVf
bXMoKSA+IDApIHsKLSAgICB0aW1lc3RhbXAgPSBwYXJzZWRfcGFja2V0LmFycml2YWxfdGltZV9t
cygpICogMTAwMDsKKyAgICB0aW1lc3RhbXBfdXMgPSBwYXJzZWRfcGFja2V0LmFycml2YWxfdGlt
ZV9tcygpICogMTAwMDsKICAgfQotICBydGM6OlBhY2tldFRpbWUgcGFja2V0X3RpbWUodGltZXN0
YW1wLCAvKm5vdF9iZWZvcmU9Ki8wKTsKIAotICBPblBhY2tldFJlY2VpdmVkKC8qcnRjcD0qL2Zh
bHNlLCBwYXJzZWRfcGFja2V0LkJ1ZmZlcigpLCBwYWNrZXRfdGltZSk7CisgIE9uUGFja2V0UmVj
ZWl2ZWQoLypydGNwPSovZmFsc2UsIHBhcnNlZF9wYWNrZXQuQnVmZmVyKCksIHRpbWVzdGFtcF91
cyk7CiB9CiAKIHZvaWQgQmFzZUNoYW5uZWw6OlVwZGF0ZVJ0cEhlYWRlckV4dGVuc2lvbk1hcCgK
QEAgLTQ3MiwxMyArNDk2LDEzIEBAIGJvb2wgQmFzZUNoYW5uZWw6OlJlZ2lzdGVyUnRwRGVtdXhl
clNpbmsoKSB7CiB9CiAKIHZvaWQgQmFzZUNoYW5uZWw6Ok9uUnRjcFBhY2tldFJlY2VpdmVkKHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKLSAgT25Q
YWNrZXRSZWNlaXZlZCgvKnJ0Y3A9Ki90cnVlLCAqcGFja2V0LCBwYWNrZXRfdGltZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3Vz
KSB7CisgIE9uUGFja2V0UmVjZWl2ZWQoLypydGNwPSovdHJ1ZSwgKnBhY2tldCwgcGFja2V0X3Rp
bWVfdXMpOwogfQogCiB2b2lkIEJhc2VDaGFubmVsOjpPblBhY2tldFJlY2VpdmVkKGJvb2wgcnRj
cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25X
cml0ZUJ1ZmZlciYgcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgaWYgKCFoYXNfcmVj
ZWl2ZWRfcGFja2V0XyAmJiAhcnRjcCkgewogICAgIGhhc19yZWNlaXZlZF9wYWNrZXRfID0gdHJ1
ZTsKICAgICBzaWduYWxpbmdfdGhyZWFkKCktPlBvc3QoUlRDX0ZST01fSEVSRSwgdGhpcywgTVNH
X0ZJUlNUUEFDS0VUUkVDRUlWRUQpOwpAQCAtNTA0LDIxICs1MjgsMjEgQEAgdm9pZCBCYXNlQ2hh
bm5lbDo6T25QYWNrZXRSZWNlaXZlZChib29sIHJ0Y3AsCiAKICAgaW52b2tlcl8uQXN5bmNJbnZv
a2U8dm9pZD4oCiAgICAgICBSVENfRlJPTV9IRVJFLCB3b3JrZXJfdGhyZWFkXywKLSAgICAgIEJp
bmQoJkJhc2VDaGFubmVsOjpQcm9jZXNzUGFja2V0LCB0aGlzLCBydGNwLCBwYWNrZXQsIHBhY2tl
dF90aW1lKSk7CisgICAgICBCaW5kKCZCYXNlQ2hhbm5lbDo6UHJvY2Vzc1BhY2tldCwgdGhpcywg
cnRjcCwgcGFja2V0LCBwYWNrZXRfdGltZV91cykpOwogfQogCiB2b2lkIEJhc2VDaGFubmVsOjpQ
cm9jZXNzUGFja2V0KGJvb2wgcnRjcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgcGFja2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAg
UlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkXy0+SXNDdXJyZW50KCkpOwogCiAgIC8vIE5lZWQgdG8g
Y29weSB2YXJpYWJsZSBiZWNhdXNlIE9uUnRjcFJlY2VpdmVkL09uUGFja2V0UmVjZWl2ZWQKICAg
Ly8gcmVxdWlyZXMgbm9uLWNvbnN0IHBvaW50ZXIgdG8gYnVmZmVyLiBUaGlzIGRvZXNuJ3QgbWVt
Y3B5IHRoZSBhY3R1YWwgZGF0YS4KICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBkYXRhKHBhY2tl
dCk7CiAgIGlmIChydGNwKSB7Ci0gICAgbWVkaWFfY2hhbm5lbF8tPk9uUnRjcFJlY2VpdmVkKCZk
YXRhLCBwYWNrZXRfdGltZSk7CisgICAgbWVkaWFfY2hhbm5lbF8tPk9uUnRjcFJlY2VpdmVkKCZk
YXRhLCBwYWNrZXRfdGltZV91cyk7CiAgIH0gZWxzZSB7Ci0gICAgbWVkaWFfY2hhbm5lbF8tPk9u
UGFja2V0UmVjZWl2ZWQoJmRhdGEsIHBhY2tldF90aW1lKTsKKyAgICBtZWRpYV9jaGFubmVsXy0+
T25QYWNrZXRSZWNlaXZlZCgmZGF0YSwgcGFja2V0X3RpbWVfdXMpOwogICB9CiB9CiAKQEAgLTY3
Myw3ICs2OTcsNyBAQCBib29sIEJhc2VDaGFubmVsOjpVcGRhdGVSZW1vdGVTdHJlYW1zX3coCiBS
dHBIZWFkZXJFeHRlbnNpb25zIEJhc2VDaGFubmVsOjpHZXRGaWx0ZXJlZFJ0cEhlYWRlckV4dGVu
c2lvbnMoCiAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9ucyYgZXh0ZW5zaW9ucykgewogICBS
VENfRENIRUNLKHJ0cF90cmFuc3BvcnRfKTsKLSAgaWYgKGNyeXB0b19vcHRpb25zXy5lbmFibGVf
ZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucykgeworICBpZiAoY3J5cHRvX29wdGlvbnNf
LnNydHAuZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMpIHsKICAgICBSdHBI
ZWFkZXJFeHRlbnNpb25zIGZpbHRlcmVkOwogICAgIGF1dG8gcHJlZCA9IFtdKGNvbnN0IHdlYnJ0
Yzo6UnRwRXh0ZW5zaW9uJiBleHRlbnNpb24pIHsKICAgICAgIHJldHVybiAhZXh0ZW5zaW9uLmVu
Y3J5cHQ7CkBAIC03MDAsNyArNzI0LDcgQEAgdm9pZCBCYXNlQ2hhbm5lbDo6T25NZXNzYWdlKHJ0
Yzo6TWVzc2FnZSogcG1zZykgewogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTVNHX0ZJ
UlNUUEFDS0VUUkVDRUlWRUQ6IHsKLSAgICAgIFNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWQodGhp
cyk7CisgICAgICBTaWduYWxGaXJzdFBhY2tldFJlY2VpdmVkXyh0aGlzKTsKICAgICAgIGJyZWFr
OwogICAgIH0KICAgfQpAQCAtNzQyLDcgKzc2Niw3IEBAIFZvaWNlQ2hhbm5lbDo6Vm9pY2VDaGFu
bmVsKHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFZvaWNlTWVkaWFDaGFubmVsPiBtZWRpYV9jaGFubmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0
aW9ucykKICAgICA6IEJhc2VDaGFubmVsKHdvcmtlcl90aHJlYWQsCiAgICAgICAgICAgICAgICAg
ICBuZXR3b3JrX3RocmVhZCwKICAgICAgICAgICAgICAgICAgIHNpZ25hbGluZ190aHJlYWQsCkBA
IC03NjUsNiArNzg5LDExIEBAIHZvaWQgQmFzZUNoYW5uZWw6OlVwZGF0ZU1lZGlhU2VuZFJlY3ZT
dGF0ZSgpIHsKICAgICAgIEJpbmQoJkJhc2VDaGFubmVsOjpVcGRhdGVNZWRpYVNlbmRSZWN2U3Rh
dGVfdywgdGhpcykpOwogfQogCit2b2lkIEJhc2VDaGFubmVsOjpPbk5ldHdvcmtSb3V0ZUNoYW5n
ZWQoCisgICAgY29uc3QgcnRjOjpOZXR3b3JrUm91dGUmIG5ldHdvcmtfcm91dGUpIHsKKyAgT25O
ZXR3b3JrUm91dGVDaGFuZ2VkKGFic2w6Om1ha2Vfb3B0aW9uYWwobmV0d29ya19yb3V0ZSkpOwor
fQorCiB2b2lkIFZvaWNlQ2hhbm5lbDo6VXBkYXRlTWVkaWFTZW5kUmVjdlN0YXRlX3coKSB7CiAg
IC8vIFJlbmRlciBpbmNvbWluZyBkYXRhIGlmIHdlJ3JlIHRoZSBhY3RpdmUgY2FsbCwgYW5kIHdl
IGhhdmUgdGhlIGxvY2FsCiAgIC8vIGNvbnRlbnQuIFdlIHJlY2VpdmUgZGF0YSBvbiB0aGUgZGVm
YXVsdCBjaGFubmVsIGFuZCBtdWx0aXBsZXhlZCBzdHJlYW1zLgpAQCAtNzk3LDYgKzgyNiw3IEBA
IGJvb2wgVm9pY2VDaGFubmVsOjpTZXRMb2NhbENvbnRlbnRfdyhjb25zdCBNZWRpYUNvbnRlbnRE
ZXNjcmlwdGlvbiogY29udGVudCwKICAgUnRwSGVhZGVyRXh0ZW5zaW9ucyBydHBfaGVhZGVyX2V4
dGVuc2lvbnMgPQogICAgICAgR2V0RmlsdGVyZWRSdHBIZWFkZXJFeHRlbnNpb25zKGF1ZGlvLT5y
dHBfaGVhZGVyX2V4dGVuc2lvbnMoKSk7CiAgIFVwZGF0ZVJ0cEhlYWRlckV4dGVuc2lvbk1hcChy
dHBfaGVhZGVyX2V4dGVuc2lvbnMpOworICBtZWRpYV9jaGFubmVsKCktPlNldEV4dG1hcEFsbG93
TWl4ZWQoYXVkaW8tPmV4dG1hcF9hbGxvd19taXhlZCgpKTsKIAogICBBdWRpb1JlY3ZQYXJhbWV0
ZXJzIHJlY3ZfcGFyYW1zID0gbGFzdF9yZWN2X3BhcmFtc187CiAgIFJ0cFBhcmFtZXRlcnNGcm9t
TWVkaWFEZXNjcmlwdGlvbihhdWRpbywgcnRwX2hlYWRlcl9leHRlbnNpb25zLCAmcmVjdl9wYXJh
bXMpOwpAQCAtODgxLDcgKzkxMSw3IEBAIFZpZGVvQ2hhbm5lbDo6VmlkZW9DaGFubmVsKHJ0Yzo6
VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBtZWRpYV9jaGFubmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucykKICAg
ICA6IEJhc2VDaGFubmVsKHdvcmtlcl90aHJlYWQsCiAgICAgICAgICAgICAgICAgICBuZXR3b3Jr
X3RocmVhZCwKICAgICAgICAgICAgICAgICAgIHNpZ25hbGluZ190aHJlYWQsCkBAIC05MzIsNiAr
OTYyLDcgQEAgYm9vbCBWaWRlb0NoYW5uZWw6OlNldExvY2FsQ29udGVudF93KGNvbnN0IE1lZGlh
Q29udGVudERlc2NyaXB0aW9uKiBjb250ZW50LAogICBSdHBIZWFkZXJFeHRlbnNpb25zIHJ0cF9o
ZWFkZXJfZXh0ZW5zaW9ucyA9CiAgICAgICBHZXRGaWx0ZXJlZFJ0cEhlYWRlckV4dGVuc2lvbnMo
dmlkZW8tPnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucygpKTsKICAgVXBkYXRlUnRwSGVhZGVyRXh0ZW5z
aW9uTWFwKHJ0cF9oZWFkZXJfZXh0ZW5zaW9ucyk7CisgIG1lZGlhX2NoYW5uZWwoKS0+U2V0RXh0
bWFwQWxsb3dNaXhlZCh2aWRlby0+ZXh0bWFwX2FsbG93X21peGVkKCkpOwogCiAgIFZpZGVvUmVj
dlBhcmFtZXRlcnMgcmVjdl9wYXJhbXMgPSBsYXN0X3JlY3ZfcGFyYW1zXzsKICAgUnRwUGFyYW1l
dGVyc0Zyb21NZWRpYURlc2NyaXB0aW9uKHZpZGVvLCBydHBfaGVhZGVyX2V4dGVuc2lvbnMsICZy
ZWN2X3BhcmFtcyk7CkBAIC0xMDE5LDcgKzEwNTAsNyBAQCBSdHBEYXRhQ2hhbm5lbDo6UnRwRGF0
YUNoYW5uZWwocnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFNZWRpYUNoYW5uZWw+IG1lZGlhX2NoYW5u
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNv
bnRlbnRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNydHBfcmVx
dWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpDcnlwdG9PcHRpb25z
IGNyeXB0b19vcHRpb25zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6
Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucykKICAgICA6IEJhc2VDaGFubmVsKHdvcmtlcl90
aHJlYWQsCiAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3RocmVhZCwKICAgICAgICAgICAgICAg
ICAgIHNpZ25hbGluZ190aHJlYWQsCkBAIC0xMDM2LDcgKzEwNjcsNyBAQCBSdHBEYXRhQ2hhbm5l
bDo6flJ0cERhdGFDaGFubmVsKCkgewogfQogCiB2b2lkIFJ0cERhdGFDaGFubmVsOjpJbml0X3co
d2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCkgewotICBCYXNlQ2hh
bm5lbDo6SW5pdF93KHJ0cF90cmFuc3BvcnQpOworICBCYXNlQ2hhbm5lbDo6SW5pdF93KHJ0cF90
cmFuc3BvcnQsIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgIG1lZGlhX2NoYW5uZWwo
KS0+U2lnbmFsRGF0YVJlY2VpdmVkLmNvbm5lY3QodGhpcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmUnRwRGF0YUNoYW5uZWw6Ok9uRGF0YVJlY2VpdmVk
KTsKICAgbWVkaWFfY2hhbm5lbCgpLT5TaWduYWxSZWFkeVRvU2VuZC5jb25uZWN0KApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5l
bC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5l
bC5oCmluZGV4IGJhNTg0NjkwYmE2YWQwNzU1N2JjMTk2YTE2MDMzMGUxZDg0NGY1MDcuLjYyNjRi
YjM5MDQxYWU3ZDNkNGExYTVlNzI3MGY0MzQ4YzIzNGEyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJtZWRpYS9iYXNlL3N0cmVhbXBhcmFtcy5oIgogI2luY2x1
ZGUgInAycC9iYXNlL2R0bHN0cmFuc3BvcnRpbnRlcm5hbC5oIgogI2luY2x1ZGUgInAycC9iYXNl
L3BhY2tldHRyYW5zcG9ydGludGVybmFsLmgiCisjaW5jbHVkZSAicGMvY2hhbm5lbGludGVyZmFj
ZS5oIgogI2luY2x1ZGUgInBjL2R0bHNzcnRwdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAicGMvbWVk
aWFzZXNzaW9uLmgiCiAjaW5jbHVkZSAicGMvcnRwdHJhbnNwb3J0LmgiCkBAIC00MiwxMiArNDMs
MTIgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBBdWRpb1NpbmtJbnRlcmZhY2U7Citj
bGFzcyBNZWRpYVRyYW5zcG9ydEludGVyZmFjZTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIAog
bmFtZXNwYWNlIGNyaWNrZXQgewogCiBzdHJ1Y3QgQ3J5cHRvUGFyYW1zOwotY2xhc3MgTWVkaWFD
b250ZW50RGVzY3JpcHRpb247CiAKIC8vIEJhc2VDaGFubmVsIGNvbnRhaW5zIGxvZ2ljIGNvbW1v
biB0byB2b2ljZSBhbmQgdmlkZW8sIGluY2x1ZGluZyBlbmFibGUsCiAvLyBtYXJzaGFsaW5nIGNh
bGxzIHRvIGEgd29ya2VyIGFuZCBuZXR3b3JrIHRocmVhZHMsIGFuZCBjb25uZWN0aW9uIGFuZCBt
ZWRpYQpAQCAtNjcsMTAgKzY4LDEyIEBAIGNsYXNzIE1lZGlhQ29udGVudERlc2NyaXB0aW9uOwog
Ly8gdnRhYmxlLCBhbmQgdGhlIG1lZGlhIGNoYW5uZWwncyB0aHJlYWQgdXNpbmcgQmFzZUNoYW5u
ZWwgYXMgdGhlCiAvLyBOZXR3b3JrSW50ZXJmYWNlLgogCi1jbGFzcyBCYXNlQ2hhbm5lbCA6IHB1
YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAorY2xhc3MgQmFzZUNoYW5uZWwgOiBwdWJsaWMgQ2hh
bm5lbEludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHJ0Yzo6TWVzc2FnZUhh
bmRsZXIsCiAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiwK
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIE1lZGlhQ2hhbm5lbDo6TmV0d29ya0ludGVyZmFj
ZSwKLSAgICAgICAgICAgICAgICAgICAgcHVibGljIHdlYnJ0Yzo6UnRwUGFja2V0U2lua0ludGVy
ZmFjZSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB3ZWJydGM6OlJ0cFBhY2tldFNpbmtJ
bnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB3ZWJydGM6Ok1lZGlhVHJhbnNw
b3J0TmV0d29ya0NoYW5nZUNhbGxiYWNrIHsKICBwdWJsaWM6CiAgIC8vIElmIHxzcnRwX3JlcXVp
cmVkfCBpcyB0cnVlLCB0aGUgY2hhbm5lbCB3aWxsIG5vdCBzZW5kIG9yIHJlY2VpdmUgYW55CiAg
IC8vIFJUUC9SVENQIHBhY2tldHMgd2l0aG91dCB1c2luZyBTUlRQIChlaXRoZXIgdXNpbmcgU0RF
UyBvciBEVExTLVNSVFApLgpAQCAtODIsOSArODUsMTAgQEAgY2xhc3MgQmFzZUNoYW5uZWwgOiBw
dWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwKICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhQ2hhbm5lbD4gbWVkaWFfY2hhbm5lbCwKICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAgICAgICAgYm9vbCBzcnRwX3JlcXVpcmVkLAot
ICAgICAgICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpOworICAgICAg
ICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpOwogICB2aXJ0dWFs
IH5CYXNlQ2hhbm5lbCgpOwotICB2b2lkIEluaXRfdyh3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVy
bmFsKiBydHBfdHJhbnNwb3J0KTsKKyAgdm9pZCBJbml0X3cod2VicnRjOjpSdHBUcmFuc3BvcnRJ
bnRlcm5hbCogcnRwX3RyYW5zcG9ydCwKKyAgICAgICAgICAgICAgd2VicnRjOjpNZWRpYVRyYW5z
cG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KTsKIAogICAvLyBEZWluaXQgbWF5IGJlIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgaXMgc2ltcGx5IGlnbm9yZWQgaWYgaXQncyBhbHJlYWR5
CiAgIC8vIGRvbmUuCkBAIC05MiwxMCArOTYsMTAgQEAgY2xhc3MgQmFzZUNoYW5uZWwgOiBwdWJs
aWMgcnRjOjpNZXNzYWdlSGFuZGxlciwKIAogICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCgp
IGNvbnN0IHsgcmV0dXJuIHdvcmtlcl90aHJlYWRfOyB9CiAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3Jr
X3RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG5ldHdvcmtfdGhyZWFkXzsgfQotICBjb25zdCBzdGQ6
OnN0cmluZyYgY29udGVudF9uYW1lKCkgY29uc3QgeyByZXR1cm4gY29udGVudF9uYW1lXzsgfQor
ICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gY29udGVudF9uYW1lXzsgfQogICAvLyBUT0RPKGRlYWRiZWVmKTogVGhpcyBpcyByZWR1bmRh
bnQ7IHJlbW92ZSB0aGlzLgotICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0X25hbWUoKSBj
b25zdCB7IHJldHVybiB0cmFuc3BvcnRfbmFtZV87IH0KLSAgYm9vbCBlbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gZW5hYmxlZF87IH0KKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9uYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJhbnNwb3J0X25hbWVfOyB9CisgIGJvb2wgZW5h
YmxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVuYWJsZWRfOyB9CiAKICAgLy8gVGhpcyBm
dW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdXNpbmcgU1JUUCAoRFRMUy1iYXNlZCBrZXlpbmcgb3Ig
U0RFUykuCiAgIGJvb2wgc3J0cF9hY3RpdmUoKSBjb25zdCB7CkBAIC0xMDgsMTcgKzExMiwxNyBA
QCBjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAogICAvLyBl
bmNyeXB0aW9uLCBhbiBTcnRwVHJhbnNwb3J0IGZvciBTREVTIG9yIGEgRHRsc1NydHBUcmFuc3Bv
cnQgZm9yIERUTFMtU1JUUC4KICAgLy8gVGhpcyBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVh
ZCBhbmQgaXQgaG9wcyB0byB0aGUgbmV0d29yayB0aHJlYWQKICAgLy8gaW50ZXJuYWxseS4gSXQg
d291bGQgcmVwbGFjZSB0aGUgfFNldFRyYW5zcG9ydHN8IGFuZCBpdHMgdmFyaWFudHMuCi0gIGJv
b2wgU2V0UnRwVHJhbnNwb3J0KHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFu
c3BvcnQpOworICBib29sIFNldFJ0cFRyYW5zcG9ydCh3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVy
bmFsKiBydHBfdHJhbnNwb3J0KSBvdmVycmlkZTsKIAogICAvLyBDaGFubmVsIGNvbnRyb2wKICAg
Ym9vbCBTZXRMb2NhbENvbnRlbnQoY29uc3QgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIGNvbnRl
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6U2RwVHlwZSB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZXJyb3JfZGVzYyk7CisgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnJvcl9kZXNjKSBvdmVycmlkZTsKICAgYm9vbCBTZXRS
ZW1vdGVDb250ZW50KGNvbnN0IE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBjb250ZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpTZHBUeXBlIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZyogZXJyb3JfZGVzYyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnN0cmluZyogZXJyb3JfZGVzYykgb3ZlcnJpZGU7CiAKLSAgYm9vbCBFbmFibGUo
Ym9vbCBlbmFibGUpOworICBib29sIEVuYWJsZShib29sIGVuYWJsZSkgb3ZlcnJpZGU7CiAKICAg
Ly8gVE9ETyh6aGlodWFuZyk6IFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIHRlc3RpbmcgYW5k
IGNhbiBiZSByZW1vdmVkLgogICBib29sIEFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1z
JiBzcCk7CkBAIC0xMzgsNyArMTQyLDkgQEAgY2xhc3MgQmFzZUNoYW5uZWwgOiBwdWJsaWMgcnRj
OjpNZXNzYWdlSGFuZGxlciwKICAgdm9pZCBTaWduYWxEdGxzU3J0cFNldHVwRmFpbHVyZV9zKGJv
b2wgcnRjcCk7CiAKICAgLy8gVXNlZCBmb3IgbGF0ZW5jeSBtZWFzdXJlbWVudHMuCi0gIHNpZ3Ns
b3Q6OnNpZ25hbDE8QmFzZUNoYW5uZWwqPiBTaWduYWxGaXJzdFBhY2tldFJlY2VpdmVkOworICBz
aWdzbG90OjpzaWduYWwxPENoYW5uZWxJbnRlcmZhY2UqPiYgU2lnbmFsRmlyc3RQYWNrZXRSZWNl
aXZlZCgpIG92ZXJyaWRlIHsKKyAgICByZXR1cm4gU2lnbmFsRmlyc3RQYWNrZXRSZWNlaXZlZF87
CisgIH0KIAogICAvLyBGb3J3YXJkIFNpZ25hbFNlbnRQYWNrZXQgdG8gd29ya2VyIHRocmVhZC4K
ICAgc2lnc2xvdDo6c2lnbmFsMTxjb25zdCBydGM6OlNlbnRQYWNrZXQmPiBTaWduYWxTZW50UGFj
a2V0OwpAQCAtMTYyLDYgKzE2OCwxMSBAQCBjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBydGM6
Ok1lc3NhZ2VIYW5kbGVyLAogICAgIHJldHVybiBudWxscHRyOwogICB9CiAKKyAgLy8gUmV0dXJu
cyBtZWRpYSB0cmFuc3BvcnQsIGNhbiBiZSBudWxsIGlmIG1lZGlhIHRyYW5zcG9ydCBpcyBub3Qg
YXZhaWxhYmxlLgorICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFu
c3BvcnQoKSB7CisgICAgcmV0dXJuIG1lZGlhX3RyYW5zcG9ydF87CisgIH0KKwogICAvLyBGcm9t
IFJ0cFRyYW5zcG9ydCAtIHB1YmxpYyBmb3IgdGVzdGluZyBvbmx5CiAgIHZvaWQgT25UcmFuc3Bv
cnRSZWFkeVRvU2VuZChib29sIHJlYWR5KTsKIApAQCAtMTY5LDggKzE4MCw2IEBAIGNsYXNzIEJh
c2VDaGFubmVsIDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCiAgIGludCBTZXRPcHRpb24o
U29ja2V0VHlwZSB0eXBlLCBydGM6OlNvY2tldDo6T3B0aW9uIG8sIGludCB2YWwpIG92ZXJyaWRl
OwogICBpbnQgU2V0T3B0aW9uX24oU29ja2V0VHlwZSB0eXBlLCBydGM6OlNvY2tldDo6T3B0aW9u
IG8sIGludCB2YWwpOwogCi0gIHZpcnR1YWwgY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUo
KSA9IDA7Ci0KICAgLy8gUnRwUGFja2V0U2lua0ludGVyZmFjZSBvdmVycmlkZXMuCiAgIHZvaWQg
T25SdHBQYWNrZXQoY29uc3Qgd2VicnRjOjpSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSBvdmVy
cmlkZTsKIApAQCAtMTgwLDkgKzE4OSw5IEBAIGNsYXNzIEJhc2VDaGFubmVsIDogcHVibGljIHJ0
Yzo6TWVzc2FnZUhhbmRsZXIsCiAgICAgdHJhbnNwb3J0X25hbWVfID0gdHJhbnNwb3J0X25hbWU7
CiAgIH0KIAotIHByb3RlY3RlZDoKLSAgdmlydHVhbCBNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5u
ZWwoKSBjb25zdCB7IHJldHVybiBtZWRpYV9jaGFubmVsXy5nZXQoKTsgfQorICBNZWRpYUNoYW5u
ZWwqIG1lZGlhX2NoYW5uZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtZWRpYV9jaGFubmVs
Xy5nZXQoKTsgfQogCisgcHJvdGVjdGVkOgogICBib29sIHdhc19ldmVyX3dyaXRhYmxlKCkgY29u
c3QgeyByZXR1cm4gd2FzX2V2ZXJfd3JpdGFibGVfOyB9CiAgIHZvaWQgc2V0X2xvY2FsX2NvbnRl
bnRfZGlyZWN0aW9uKHdlYnJ0Yzo6UnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gZGlyZWN0aW9uKSB7
CiAgICAgbG9jYWxfY29udGVudF9kaXJlY3Rpb25fID0gZGlyZWN0aW9uOwpAQCAtMjI1LDE0ICsy
MzQsMTQgQEAgY2xhc3MgQmFzZUNoYW5uZWwgOiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwK
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0T3B0aW9ucyYgb3B0aW9ucyk7CiAK
ICAgdm9pZCBPblJ0Y3BQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNr
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBw
YWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRf
dGltZV91cyk7CiAKICAgdm9pZCBPblBhY2tldFJlY2VpdmVkKGJvb2wgcnRjcCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIHBhY2tldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAgIHZv
aWQgUHJvY2Vzc1BhY2tldChib29sIHJ0Y3AsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBy
dGM6OkNvcHlPbldyaXRlQnVmZmVyJiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICBjb25z
dCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgIGlu
dDY0X3QgcGFja2V0X3RpbWVfdXMpOwogCiAgIHZvaWQgRW5hYmxlTWVkaWFfdygpOwogICB2b2lk
IERpc2FibGVNZWRpYV93KCk7CkBAIC0yOTUsMTAgKzMwNCwxNCBAQCBjbGFzcyBCYXNlQ2hhbm5l
bCA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAogICB2b2lkIFNpZ25hbFNlbnRQYWNrZXRf
bihjb25zdCBydGM6OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KTsKICAgdm9pZCBTaWduYWxTZW50
UGFja2V0X3coY29uc3QgcnRjOjpTZW50UGFja2V0JiBzZW50X3BhY2tldCk7CiAgIGJvb2wgSXNS
ZWFkeVRvU2VuZE1lZGlhX24oKSBjb25zdDsKKworICAvLyBNZWRpYVRyYW5zcG9ydE5ldHdvcmtD
aGFuZ2VDYWxsYmFjayBvdmVycmlkZS4KKyAgdm9pZCBPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoY29u
c3QgcnRjOjpOZXR3b3JrUm91dGUmIG5ldHdvcmtfcm91dGUpIG92ZXJyaWRlOwogICBydGM6OlRo
cmVhZCogY29uc3Qgd29ya2VyX3RocmVhZF87CiAgIHJ0Yzo6VGhyZWFkKiBjb25zdCBuZXR3b3Jr
X3RocmVhZF87CiAgIHJ0Yzo6VGhyZWFkKiBjb25zdCBzaWduYWxpbmdfdGhyZWFkXzsKICAgcnRj
OjpBc3luY0ludm9rZXIgaW52b2tlcl87CisgIHNpZ3Nsb3Q6OnNpZ25hbDE8Q2hhbm5lbEludGVy
ZmFjZSo+IFNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWRfOwogCiAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGNvbnRlbnRfbmFtZV87CiAKQEAgLTMwNywxMyArMzIwLDE4IEBAIGNsYXNzIEJhc2VDaGFubmVs
IDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCiAKICAgd2VicnRjOjpSdHBUcmFuc3BvcnRJ
bnRlcm5hbCogcnRwX3RyYW5zcG9ydF8gPSBudWxscHRyOwogCisgIC8vIE9wdGlvbmFsIG1lZGlh
IHRyYW5zcG9ydCAoZXhwZXJpbWVudGFsKS4KKyAgLy8gSWYgcHJvdmlkZWQsIGF1ZGlvIGFuZCB2
aWRlbyB3aWxsIGJlIHNlbnQgdGhyb3VnaCBtZWRpYV90cmFuc3BvcnQgaW5zdGVhZAorICAvLyBv
ZiBSVFAvUlRDUC4gQ3VycmVudGx5IG1lZGlhX3RyYW5zcG9ydCBjYW4gY28tZXhpc3Qgd2l0aCBy
dHBfdHJhbnNwb3J0LgorICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90
cmFuc3BvcnRfID0gbnVsbHB0cjsKKwogICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8cnRjOjpTb2Nr
ZXQ6Ok9wdGlvbiwgaW50PiA+IHNvY2tldF9vcHRpb25zXzsKICAgc3RkOjp2ZWN0b3I8c3RkOjpw
YWlyPHJ0Yzo6U29ja2V0OjpPcHRpb24sIGludD4gPiBydGNwX3NvY2tldF9vcHRpb25zXzsKICAg
Ym9vbCB3cml0YWJsZV8gPSBmYWxzZTsKICAgYm9vbCB3YXNfZXZlcl93cml0YWJsZV8gPSBmYWxz
ZTsKICAgYm9vbCBoYXNfcmVjZWl2ZWRfcGFja2V0XyA9IGZhbHNlOwogICBjb25zdCBib29sIHNy
dHBfcmVxdWlyZWRfID0gdHJ1ZTsKLSAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25z
XzsKKyAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKIAogICAvLyBNZWRp
YUNoYW5uZWwgcmVsYXRlZCBtZW1iZXJzIHRoYXQgc2hvdWxkIGJlIGFjY2Vzc2VkIGZyb20gdGhl
IHdvcmtlcgogICAvLyB0aHJlYWQuCkBAIC0zNDMsNyArMzYxLDcgQEAgY2xhc3MgVm9pY2VDaGFu
bmVsIDogcHVibGljIEJhc2VDaGFubmVsIHsKICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxWb2ljZU1lZGlhQ2hhbm5lbD4gY2hhbm5lbCwKICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgICAgICAgICAgICBib29sIHNydHBfcmVxdWlyZWQs
Ci0gICAgICAgICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpOworICAg
ICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKTsKICAgflZv
aWNlQ2hhbm5lbCgpOwogCiAgIC8vIGRvd25jYXN0cyBhIE1lZGlhQ2hhbm5lbApAQCAtMzUxLDEw
ICszNjksOSBAQCBjbGFzcyBWb2ljZUNoYW5uZWwgOiBwdWJsaWMgQmFzZUNoYW5uZWwgewogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxWb2ljZU1lZGlhQ2hhbm5lbCo+KEJhc2VDaGFubmVsOjptZWRp
YV9jaGFubmVsKCkpOwogICB9CiAKLSAgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIEdldFJ0cFNlbmRQ
YXJhbWV0ZXJzX3codWludDMyX3Qgc3NyYykgY29uc3Q7Ci0gIHdlYnJ0Yzo6UlRDRXJyb3IgU2V0
UnRwU2VuZFBhcmFtZXRlcnNfdyh1aW50MzJfdCBzc3JjLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpOwot
ICBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGNyaWNr
ZXQ6Ok1FRElBX1RZUEVfQVVESU87IH0KKyAgY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUo
KSBjb25zdCBvdmVycmlkZSB7CisgICAgcmV0dXJuIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87
CisgIH0KIAogIHByaXZhdGU6CiAgIC8vIG92ZXJyaWRlcyBmcm9tIEJhc2VDaGFubmVsCkBAIC0z
ODMsNyArNDAwLDcgQEAgY2xhc3MgVmlkZW9DaGFubmVsIDogcHVibGljIEJhc2VDaGFubmVsIHsK
ICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gbWVkaWFf
Y2hhbm5lbCwKICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUs
CiAgICAgICAgICAgICAgICBib29sIHNydHBfcmVxdWlyZWQsCi0gICAgICAgICAgICAgICBydGM6
OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpOworICAgICAgICAgICAgICAgd2VicnRjOjpD
cnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKTsKICAgflZpZGVvQ2hhbm5lbCgpOwogCiAgIC8v
IGRvd25jYXN0cyBhIE1lZGlhQ2hhbm5lbApAQCAtMzkzLDcgKzQxMCw5IEBAIGNsYXNzIFZpZGVv
Q2hhbm5lbCA6IHB1YmxpYyBCYXNlQ2hhbm5lbCB7CiAKICAgdm9pZCBGaWxsQml0cmF0ZUluZm8o
QmFuZHdpZHRoRXN0aW1hdGlvbkluZm8qIGJ3ZV9pbmZvKTsKIAotICBjcmlja2V0OjpNZWRpYVR5
cGUgbWVkaWFfdHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklE
RU87IH0KKyAgY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUoKSBjb25zdCBvdmVycmlkZSB7
CisgICAgcmV0dXJuIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87CisgIH0KIAogIHByaXZhdGU6
CiAgIC8vIG92ZXJyaWRlcyBmcm9tIEJhc2VDaGFubmVsCkBAIC00MjIsNyArNDQxLDcgQEAgY2xh
c3MgUnRwRGF0YUNoYW5uZWwgOiBwdWJsaWMgQmFzZUNoYW5uZWwgewogICAgICAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YU1lZGlhQ2hhbm5lbD4gY2hhbm5lbCwKICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAgICAgICAgICAg
Ym9vbCBzcnRwX3JlcXVpcmVkLAotICAgICAgICAgICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMg
Y3J5cHRvX29wdGlvbnMpOworICAgICAgICAgICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMg
Y3J5cHRvX29wdGlvbnMpOwogICB+UnRwRGF0YUNoYW5uZWwoKTsKICAgLy8gVE9ETyh6aGlodWFu
Zyk6IFJlbW92ZSB0aGlzIG9uY2UgdGhlIFJ0cFRyYW5zcG9ydCBjYW4gYmUgc2hhcmVkIGJldHdl
ZW4KICAgLy8gQmFzZUNoYW5uZWxzLgpAQCAtNDQ1LDcgKzQ2NCw5IEBAIGNsYXNzIFJ0cERhdGFD
aGFubmVsIDogcHVibGljIEJhc2VDaGFubmVsIHsKICAgLy8gVGhhdCBvY2N1cnMgd2hlbiB0aGUg
Y2hhbm5lbCBpcyBlbmFibGVkLCB0aGUgdHJhbnNwb3J0IGlzIHdyaXRhYmxlLAogICAvLyBib3Ro
IGxvY2FsIGFuZCByZW1vdGUgZGVzY3JpcHRpb25zIGFyZSBzZXQsIGFuZCB0aGUgY2hhbm5lbCBp
cyB1bmJsb2NrZWQuCiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8Ym9vbD4gU2lnbmFsUmVhZHlUb1NlbmRE
YXRhOwotICBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJu
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQTsgfQorICBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFf
dHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICByZXR1cm4gY3JpY2tldDo6TUVESUFfVFlQRV9E
QVRBOworICB9CiAKICBwcm90ZWN0ZWQ6CiAgIC8vIGRvd25jYXN0cyBhIE1lZGlhQ2hhbm5lbC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2NoYW5uZWxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9jaGFubmVsX3VuaXR0ZXN0LmNjCmluZGV4IDU4Y2IxN2I4YmJmNWRkMWY3Y2Jl
NDAwZmM1YzVkNTAwOWM2ZDcyYjcuLjVkNGQ0YzdmOWUwMDRlNTZkNWVjYjhhZjIwNzY4MGI5ZGE5
MjYzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL2NoYW5uZWxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbF91bml0dGVzdC5jYwpAQCAtMTUsNyArMTUsNiBA
QAogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmgiCiAjaW5jbHVkZSAibWVk
aWEvYmFzZS9mYWtlcnRwLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuaCIK
LSNpbmNsdWRlICJtZWRpYS9iYXNlL3Rlc3R1dGlscy5oIgogI2luY2x1ZGUgInAycC9iYXNlL2Zh
a2VjYW5kaWRhdGVwYWlyLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvZmFrZWR0bHN0cmFuc3BvcnQu
aCIKICNpbmNsdWRlICJwMnAvYmFzZS9mYWtlcGFja2V0dHJhbnNwb3J0LmgiCkBAIC0yNTAsOCAr
MjQ5LDggQEAgY2xhc3MgQ2hhbm5lbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGlj
IHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVh
ZCA9IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCk7CiAgICAgYXV0byBjaGFubmVsID0gYWJzbDo6bWFr
ZV91bmlxdWU8dHlwZW5hbWUgVDo6Q2hhbm5lbD4oCiAgICAgICAgIHdvcmtlcl90aHJlYWQsIG5l
dHdvcmtfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBlbmdpbmUsIHN0ZDo6bW92ZShjaCksCi0g
ICAgICAgIGNyaWNrZXQ6OkNOX0FVRElPLCAoZmxhZ3MgJiBEVExTKSAhPSAwLCBydGM6OkNyeXB0
b09wdGlvbnMoKSk7Ci0gICAgY2hhbm5lbC0+SW5pdF93KHJ0cF90cmFuc3BvcnQpOworICAgICAg
ICBjcmlja2V0OjpDTl9BVURJTywgKGZsYWdzICYgRFRMUykgIT0gMCwgd2VicnRjOjpDcnlwdG9P
cHRpb25zKCkpOworICAgIGNoYW5uZWwtPkluaXRfdyhydHBfdHJhbnNwb3J0LCAvKm1lZGlhX3Ry
YW5zcG9ydD0qL251bGxwdHIpOwogICAgIHJldHVybiBjaGFubmVsOwogICB9CiAKQEAgLTU3Nyw2
ICs1NzYsMzcgQEAgY2xhc3MgQ2hhbm5lbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVi
bGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgICAgQ29kZWNNYXRjaGVzKGNvbnRlbnQu
Y29kZWNzKClbMF0sIG1lZGlhX2NoYW5uZWwxXy0+Y29kZWNzKClbMF0pKTsKICAgfQogCisgIC8v
IFRlc3QgdGhhdCBTZXRMb2NhbENvbnRlbnQgYW5kIFNldFJlbW90ZUNvbnRlbnQgcHJvcGVybHkg
Y29uZmlndXJlCisgIC8vIGV4dG1hcC1hbGxvdy1taXhlZC4KKyAgdm9pZCBUZXN0U2V0Q29udGVu
dHNFeHRtYXBBbGxvd01peGVkQ2FsbGVyKGJvb2wgb2ZmZXIsIGJvb2wgYW5zd2VyKSB7CisgICAg
Ly8gRm9yIGEgY2FsbGVyLCBTZXRMb2NhbENvbnRlbnQoKSBpcyBjYWxsZWQgZmlyc3Qgd2l0aCBh
biBvZmZlciBhbmQgbmV4dAorICAgIC8vIFNldFJlbW90ZUNvbnRlbnQoKSBpcyBjYWxsZWQgd2l0
aCB0aGUgYW5zd2VyLgorICAgIENyZWF0ZUNoYW5uZWxzKDAsIDApOworICAgIHR5cGVuYW1lIFQ6
OkNvbnRlbnQgY29udGVudDsKKyAgICBDcmVhdGVDb250ZW50KDAsIGtQY211Q29kZWMsIGtIMjY0
Q29kZWMsICZjb250ZW50KTsKKyAgICBhdXRvIG9mZmVyX2VudW0gPSBvZmZlciA/IChUOjpDb250
ZW50OjprU2Vzc2lvbikgOiAoVDo6Q29udGVudDo6a05vKTsKKyAgICBhdXRvIGFuc3dlcl9lbnVt
ID0gYW5zd2VyID8gKFQ6OkNvbnRlbnQ6OmtTZXNzaW9uKSA6IChUOjpDb250ZW50OjprTm8pOwor
ICAgIGNvbnRlbnQuc2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKG9mZmVyX2VudW0pOworICAg
IEVYUEVDVF9UUlVFKGNoYW5uZWwxXy0+U2V0TG9jYWxDb250ZW50KCZjb250ZW50LCBTZHBUeXBl
OjprT2ZmZXIsIE5VTEwpKTsKKyAgICBjb250ZW50LnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51
bShhbnN3ZXJfZW51bSk7CisgICAgRVhQRUNUX1RSVUUoY2hhbm5lbDFfLT5TZXRSZW1vdGVDb250
ZW50KCZjb250ZW50LCBTZHBUeXBlOjprQW5zd2VyLCBOVUxMKSk7CisgICAgRVhQRUNUX0VRKGFu
c3dlciwgbWVkaWFfY2hhbm5lbDFfLT5FeHRtYXBBbGxvd01peGVkKCkpOworICB9CisgIHZvaWQg
VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlZShib29sIG9mZmVyLCBib29sIGFu
c3dlcikgeworICAgIC8vIEZvciBhIGNhbGxlZSwgU2V0UmVtb3RlQ29udGVudCgpIGlzIGNhbGxl
ZCBmaXJzdCB3aXRoIGFuIG9mZmVyIGFuZCBuZXh0CisgICAgLy8gU2V0TG9jYWxDb250ZW50KCkg
aXMgY2FsbGVkIHdpdGggdGhlIGFuc3dlci4KKyAgICBDcmVhdGVDaGFubmVscygwLCAwKTsKKyAg
ICB0eXBlbmFtZSBUOjpDb250ZW50IGNvbnRlbnQ7CisgICAgQ3JlYXRlQ29udGVudCgwLCBrUGNt
dUNvZGVjLCBrSDI2NENvZGVjLCAmY29udGVudCk7CisgICAgYXV0byBvZmZlcl9lbnVtID0gb2Zm
ZXIgPyAoVDo6Q29udGVudDo6a1Nlc3Npb24pIDogKFQ6OkNvbnRlbnQ6OmtObyk7CisgICAgYXV0
byBhbnN3ZXJfZW51bSA9IGFuc3dlciA/IChUOjpDb250ZW50OjprU2Vzc2lvbikgOiAoVDo6Q29u
dGVudDo6a05vKTsKKyAgICBjb250ZW50LnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShvZmZl
cl9lbnVtKTsKKyAgICBFWFBFQ1RfVFJVRShjaGFubmVsMV8tPlNldFJlbW90ZUNvbnRlbnQoJmNv
bnRlbnQsIFNkcFR5cGU6OmtPZmZlciwgTlVMTCkpOworICAgIGNvbnRlbnQuc2V0X2V4dG1hcF9h
bGxvd19taXhlZF9lbnVtKGFuc3dlcl9lbnVtKTsKKyAgICBFWFBFQ1RfVFJVRShjaGFubmVsMV8t
PlNldExvY2FsQ29udGVudCgmY29udGVudCwgU2RwVHlwZTo6a0Fuc3dlciwgTlVMTCkpOworICAg
IEVYUEVDVF9FUShhbnN3ZXIsIG1lZGlhX2NoYW5uZWwxXy0+RXh0bWFwQWxsb3dNaXhlZCgpKTsK
KyAgfQorCiAgIC8vIFRlc3QgdGhhdCBTZXRMb2NhbENvbnRlbnQgYW5kIFNldFJlbW90ZUNvbnRl
bnQgcHJvcGVybHkgZGVhbHMKICAgLy8gd2l0aCBhbiBlbXB0eSBvZmZlci4KICAgdm9pZCBUZXN0
U2V0Q29udGVudHNOdWxsT2ZmZXIoKSB7CkBAIC0xNTQ1LDggKzE1NzUsOCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Y3JpY2tldDo6VmlkZW9DaGFubmVsPiBDaGFubmVsVGVzdDxWaWRlb1RyYWl0cz46OkNy
ZWF0ZUNoYW5uZWwoCiAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkID0gcnRjOjpUaHJl
YWQ6OkN1cnJlbnQoKTsKICAgYXV0byBjaGFubmVsID0gYWJzbDo6bWFrZV91bmlxdWU8Y3JpY2tl
dDo6VmlkZW9DaGFubmVsPigKICAgICAgIHdvcmtlcl90aHJlYWQsIG5ldHdvcmtfdGhyZWFkLCBz
aWduYWxpbmdfdGhyZWFkLCBzdGQ6Om1vdmUoY2gpLAotICAgICAgY3JpY2tldDo6Q05fVklERU8s
IChmbGFncyAmIERUTFMpICE9IDAsIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKLSAgY2hhbm5lbC0+
SW5pdF93KHJ0cF90cmFuc3BvcnQpOworICAgICAgY3JpY2tldDo6Q05fVklERU8sIChmbGFncyAm
IERUTFMpICE9IDAsIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKKyAgY2hhbm5lbC0+SW5pdF93
KHJ0cF90cmFuc3BvcnQsIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgIHJldHVybiBj
aGFubmVsOwogfQogCkBAIC0xNjE1LDYgKzE2NDUsMjQgQEAgVEVTVF9GKFZvaWNlQ2hhbm5lbFNp
bmdsZVRocmVhZFRlc3QsIFRlc3RTZXRDb250ZW50cykgewogICBCYXNlOjpUZXN0U2V0Q29udGVu
dHMoKTsKIH0KIAorVEVTVF9GKFZvaWNlQ2hhbm5lbFNpbmdsZVRocmVhZFRlc3QsIFRlc3RTZXRD
b250ZW50c0V4dG1hcEFsbG93TWl4ZWRBc0NhbGxlcikgeworICBCYXNlOjpUZXN0U2V0Q29udGVu
dHNFeHRtYXBBbGxvd01peGVkQ2FsbGVyKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL3RydWUp
OworfQorCitURVNUX0YoVm9pY2VDaGFubmVsU2luZ2xlVGhyZWFkVGVzdCwKKyAgICAgICBUZXN0
U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkTm90U3VwcG9ydGVkQXNDYWxsZXIpIHsKKyAgQmFz
ZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlcigvKm9mZmVyPSovdHJ1ZSwg
LyphbnN3ZXI9Ki9mYWxzZSk7Cit9CisKK1RFU1RfRihWb2ljZUNoYW5uZWxTaW5nbGVUaHJlYWRU
ZXN0LCBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQXNDYWxsZWUpIHsKKyAgQmFzZTo6
VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlZSgvKm9mZmVyPSovdHJ1ZSwgLyph
bnN3ZXI9Ki90cnVlKTsKK30KKworVEVTVF9GKFZvaWNlQ2hhbm5lbFNpbmdsZVRocmVhZFRlc3Qs
CisgICAgICAgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZE5vdFN1cHBvcnRlZEFzQ2Fs
bGVlKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRDYWxsZWUoLypv
ZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovZmFsc2UpOworfQorCiBURVNUX0YoVm9pY2VDaGFubmVs
U2luZ2xlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzTnVsbE9mZmVyKSB7CiAgIEJhc2U6OlRl
c3RTZXRDb250ZW50c051bGxPZmZlcigpOwogfQpAQCAtMTc1MCw2ICsxNzk4LDI0IEBAIFRFU1Rf
RihWb2ljZUNoYW5uZWxEb3VibGVUaHJlYWRUZXN0LCBUZXN0U2V0Q29udGVudHMpIHsKICAgQmFz
ZTo6VGVzdFNldENvbnRlbnRzKCk7CiB9CiAKK1RFU1RfRihWb2ljZUNoYW5uZWxEb3VibGVUaHJl
YWRUZXN0LCBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQXNDYWxsZXIpIHsKKyAgQmFz
ZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlcigvKm9mZmVyPSovdHJ1ZSwg
LyphbnN3ZXI9Ki90cnVlKTsKK30KKworVEVTVF9GKFZvaWNlQ2hhbm5lbERvdWJsZVRocmVhZFRl
c3QsCisgICAgICAgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZE5vdFN1cHBvcnRlZEFz
Q2FsbGVyKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRDYWxsZXIo
LypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovZmFsc2UpOworfQorCitURVNUX0YoVm9pY2VDaGFu
bmVsRG91YmxlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZEFzQ2Fs
bGVlKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRDYWxsZWUoLypv
ZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovdHJ1ZSk7Cit9CisKK1RFU1RfRihWb2ljZUNoYW5uZWxE
b3VibGVUaHJlYWRUZXN0LAorICAgICAgIFRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRO
b3RTdXBwb3J0ZWRBc0NhbGxlZSkgeworICBCYXNlOjpUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxv
d01peGVkQ2FsbGVlKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL2ZhbHNlKTsKK30KKwogVEVT
VF9GKFZvaWNlQ2hhbm5lbERvdWJsZVRocmVhZFRlc3QsIFRlc3RTZXRDb250ZW50c051bGxPZmZl
cikgewogICBCYXNlOjpUZXN0U2V0Q29udGVudHNOdWxsT2ZmZXIoKTsKIH0KQEAgLTE4ODMsNiAr
MTk0OSwyNCBAQCBURVNUX0YoVmlkZW9DaGFubmVsU2luZ2xlVGhyZWFkVGVzdCwgVGVzdFNldENv
bnRlbnRzKSB7CiAgIEJhc2U6OlRlc3RTZXRDb250ZW50cygpOwogfQogCitURVNUX0YoVmlkZW9D
aGFubmVsU2luZ2xlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZEFz
Q2FsbGVyKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRDYWxsZXIo
LypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovdHJ1ZSk7Cit9CisKK1RFU1RfRihWaWRlb0NoYW5u
ZWxTaW5nbGVUaHJlYWRUZXN0LAorICAgICAgIFRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4
ZWROb3RTdXBwb3J0ZWRBc0NhbGxlcikgeworICBCYXNlOjpUZXN0U2V0Q29udGVudHNFeHRtYXBB
bGxvd01peGVkQ2FsbGVyKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL2ZhbHNlKTsKK30KKwor
VEVTVF9GKFZpZGVvQ2hhbm5lbFNpbmdsZVRocmVhZFRlc3QsIFRlc3RTZXRDb250ZW50c0V4dG1h
cEFsbG93TWl4ZWRBc0NhbGxlZSkgeworICBCYXNlOjpUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxv
d01peGVkQ2FsbGVlKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL3RydWUpOworfQorCitURVNU
X0YoVmlkZW9DaGFubmVsU2luZ2xlVGhyZWFkVGVzdCwKKyAgICAgICBUZXN0U2V0Q29udGVudHNF
eHRtYXBBbGxvd01peGVkTm90U3VwcG9ydGVkQXNDYWxsZWUpIHsKKyAgQmFzZTo6VGVzdFNldENv
bnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlZSgvKm9mZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki9m
YWxzZSk7Cit9CisKIFRFU1RfRihWaWRlb0NoYW5uZWxTaW5nbGVUaHJlYWRUZXN0LCBUZXN0U2V0
Q29udGVudHNOdWxsT2ZmZXIpIHsKICAgQmFzZTo6VGVzdFNldENvbnRlbnRzTnVsbE9mZmVyKCk7
CiB9CkBAIC0yMDE2LDYgKzIxMDAsMjQgQEAgVEVTVF9GKFZpZGVvQ2hhbm5lbERvdWJsZVRocmVh
ZFRlc3QsIFRlc3RTZXRDb250ZW50cykgewogICBCYXNlOjpUZXN0U2V0Q29udGVudHMoKTsKIH0K
IAorVEVTVF9GKFZpZGVvQ2hhbm5lbERvdWJsZVRocmVhZFRlc3QsIFRlc3RTZXRDb250ZW50c0V4
dG1hcEFsbG93TWl4ZWRBc0NhbGxlcikgeworICBCYXNlOjpUZXN0U2V0Q29udGVudHNFeHRtYXBB
bGxvd01peGVkQ2FsbGVyKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL3RydWUpOworfQorCitU
RVNUX0YoVmlkZW9DaGFubmVsRG91YmxlVGhyZWFkVGVzdCwKKyAgICAgICBUZXN0U2V0Q29udGVu
dHNFeHRtYXBBbGxvd01peGVkTm90U3VwcG9ydGVkQXNDYWxsZXIpIHsKKyAgQmFzZTo6VGVzdFNl
dENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlcigvKm9mZmVyPSovdHJ1ZSwgLyphbnN3ZXI9
Ki9mYWxzZSk7Cit9CisKK1RFU1RfRihWaWRlb0NoYW5uZWxEb3VibGVUaHJlYWRUZXN0LCBUZXN0
U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQXNDYWxsZWUpIHsKKyAgQmFzZTo6VGVzdFNldENv
bnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlZSgvKm9mZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki90
cnVlKTsKK30KKworVEVTVF9GKFZpZGVvQ2hhbm5lbERvdWJsZVRocmVhZFRlc3QsCisgICAgICAg
VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZE5vdFN1cHBvcnRlZEFzQ2FsbGVlKSB7Cisg
IEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRDYWxsZWUoLypvZmZlcj0qL3Ry
dWUsIC8qYW5zd2VyPSovZmFsc2UpOworfQorCiBURVNUX0YoVmlkZW9DaGFubmVsRG91YmxlVGhy
ZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzTnVsbE9mZmVyKSB7CiAgIEJhc2U6OlRlc3RTZXRDb250
ZW50c051bGxPZmZlcigpOwogfQpAQCAtMjE2NCw3ICsyMjY2LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PGNyaWNrZXQ6OlJ0cERhdGFDaGFubmVsPiBDaGFubmVsVGVzdDxEYXRhVHJhaXRzPjo6Q3JlYXRl
Q2hhbm5lbCgKICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQgPSBydGM6OlRocmVhZDo6
Q3VycmVudCgpOwogICBhdXRvIGNoYW5uZWwgPSBhYnNsOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpS
dHBEYXRhQ2hhbm5lbD4oCiAgICAgICB3b3JrZXJfdGhyZWFkLCBuZXR3b3JrX3RocmVhZCwgc2ln
bmFsaW5nX3RocmVhZCwgc3RkOjptb3ZlKGNoKSwKLSAgICAgIGNyaWNrZXQ6OkNOX0RBVEEsIChm
bGFncyAmIERUTFMpICE9IDAsIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKKyAgICAgIGNyaWNrZXQ6
OkNOX0RBVEEsIChmbGFncyAmIERUTFMpICE9IDAsIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsK
ICAgY2hhbm5lbC0+SW5pdF93KHJ0cF90cmFuc3BvcnQpOwogICByZXR1cm4gY2hhbm5lbDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2NoYW5uZWxpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL2NoYW5uZWxpbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTQxMDlhMDQ1NDJmNTM1
NjU2YmRhNDEyZTkyZTY1MjIzNzE2MWE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbGludGVyZmFjZS5oCkBAIC0w
LDAgKzEsNjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgUENfQ0hBTk5FTElOVEVS
RkFDRV9IXworI2RlZmluZSBQQ19DSEFOTkVMSU5URVJGQUNFX0hfCisKKyNpbmNsdWRlIDxzdHJp
bmc+CisKKyNpbmNsdWRlICJhcGkvanNlcC5oIgorI2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgi
CisjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuaCIKKyNpbmNsdWRlICJwYy9ydHB0
cmFuc3BvcnRpbnRlcm5hbC5oIgorCituYW1lc3BhY2UgY3JpY2tldCB7CisKK2NsYXNzIE1lZGlh
Q29udGVudERlc2NyaXB0aW9uOworCisvLyBDaGFubmVsSW50ZXJmYWNlIGNvbnRhaW5zIG1ldGhv
ZHMgY29tbW9uIHRvIHZvaWNlLCB2aWRlbyBhbmQgZGF0YSBjaGFubmVscy4KKy8vIEFzIG1vcmUg
bWV0aG9kcyBhcmUgYWRkZWQgdG8gQmFzZUNoYW5uZWwsIHRoZXkgc2hvdWxkIGJlIGluY2x1ZGVk
IGluIHRoZQorLy8gaW50ZXJmYWNlIGFzIHdlbGwuCitjbGFzcyBDaGFubmVsSW50ZXJmYWNlIHsK
KyBwdWJsaWM6CisgIHZpcnR1YWwgY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUoKSBjb25z
dCA9IDA7CisKKyAgdmlydHVhbCBNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwoKSBjb25zdCA9
IDA7CisKKyAgLy8gVE9ETyhkZWFkYmVlZik6IFRoaXMgaXMgcmVkdW5kYW50OyByZW1vdmUgdGhp
cy4KKyAgdmlydHVhbCBjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0X25hbWUoKSBjb25zdCA9
IDA7CisKKyAgdmlydHVhbCBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lKCkgY29uc3Qg
PSAwOworCisgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgPSAwOworCisgIC8vIEVuYWJs
ZXMgb3IgZGlzYWJsZXMgdGhpcyBjaGFubmVsCisgIHZpcnR1YWwgYm9vbCBFbmFibGUoYm9vbCBl
bmFibGUpID0gMDsKKworICAvLyBVc2VkIGZvciBsYXRlbmN5IG1lYXN1cmVtZW50cy4KKyAgdmly
dHVhbCBzaWdzbG90OjpzaWduYWwxPENoYW5uZWxJbnRlcmZhY2UqPiYgU2lnbmFsRmlyc3RQYWNr
ZXRSZWNlaXZlZCgpID0gMDsKKworICAvLyBDaGFubmVsIGNvbnRyb2wKKyAgdmlydHVhbCBib29s
IFNldExvY2FsQ29udGVudChjb25zdCBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogY29udGVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlNkcFR5cGUgdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZXJyb3JfZGVzYykgPSAw
OworICB2aXJ0dWFsIGJvb2wgU2V0UmVtb3RlQ29udGVudChjb25zdCBNZWRpYUNvbnRlbnREZXNj
cmlwdGlvbiogY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRj
OjpTZHBUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nKiBlcnJvcl9kZXNjKSA9IDA7CisKKyAgLy8gU2V0IGFuIFJUUCBsZXZlbCB0cmFuc3BvcnQu
CisgIC8vIFNvbWUgZXhhbXBsZXM6CisgIC8vICAgKiBBbiBSdHBUcmFuc3BvcnQgd2l0aG91dCBl
bmNyeXB0aW9uLgorICAvLyAgICogQW4gU3J0cFRyYW5zcG9ydCBmb3IgU0RFUy4KKyAgLy8gICAq
IEEgRHRsc1NydHBUcmFuc3BvcnQgZm9yIERUTFMtU1JUUC4KKyAgdmlydHVhbCBib29sIFNldFJ0
cFRyYW5zcG9ydCh3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0KSA9
IDA7CisKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgfkNoYW5uZWxJbnRlcmZhY2UoKSA9IGRlZmF1
bHQ7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY3JpY2tldAorCisjZW5kaWYgIC8vIFBDX0NIQU5O
RUxJTlRFUkZBQ0VfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5hZ2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbG1hbmFnZXIuY2MKaW5kZXggZGFiNjIyYWQ3
MGU0MmYwNzlmYjQzMGQyZTkwMWZjYTlkZDQ5OTIzYy4uZWRhNWEyZGQ1NzkyMmNiZDdhZTRmZTg0
OTgyY2E3ZWYwOGRmZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbG1hbmFnZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbG1hbmFnZXIuY2MKQEAgLTE0LDEw
ICsxNCwxMCBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9t
ZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJtZWRp
YS9iYXNlL3J0cGRhdGFlbmdpbmUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRp
bHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgogCiBuYW1lc3BhY2UgY3Jp
Y2tldCB7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgQ2hhbm5lbE1hbmFnZXI6OkdldFN1cHBvcnRl
ZEF1ZGlvU2VuZENvZGVjcygKICAgaWYgKCFtZWRpYV9lbmdpbmVfKSB7CiAgICAgcmV0dXJuOwog
ICB9Ci0gICpjb2RlY3MgPSBtZWRpYV9lbmdpbmVfLT5hdWRpb19zZW5kX2NvZGVjcygpOworICAq
Y29kZWNzID0gbWVkaWFfZW5naW5lXy0+dm9pY2UoKS5zZW5kX2NvZGVjcygpOwogfQogCiB2b2lk
IENoYW5uZWxNYW5hZ2VyOjpHZXRTdXBwb3J0ZWRBdWRpb1JlY2VpdmVDb2RlY3MoCkBAIC03NCw3
ICs3NCw3IEBAIHZvaWQgQ2hhbm5lbE1hbmFnZXI6OkdldFN1cHBvcnRlZEF1ZGlvUmVjZWl2ZUNv
ZGVjcygKICAgaWYgKCFtZWRpYV9lbmdpbmVfKSB7CiAgICAgcmV0dXJuOwogICB9Ci0gICpjb2Rl
Y3MgPSBtZWRpYV9lbmdpbmVfLT5hdWRpb19yZWN2X2NvZGVjcygpOworICAqY29kZWNzID0gbWVk
aWFfZW5naW5lXy0+dm9pY2UoKS5yZWN2X2NvZGVjcygpOwogfQogCiB2b2lkIENoYW5uZWxNYW5h
Z2VyOjpHZXRTdXBwb3J0ZWRBdWRpb1J0cEhlYWRlckV4dGVuc2lvbnMoCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgQ2hhbm5lbE1hbmFnZXI6OkdldFN1cHBvcnRlZEF1ZGlvUnRwSGVhZGVyRXh0ZW5z
aW9ucygKICAgaWYgKCFtZWRpYV9lbmdpbmVfKSB7CiAgICAgcmV0dXJuOwogICB9Ci0gICpleHQg
PSBtZWRpYV9lbmdpbmVfLT5HZXRBdWRpb0NhcGFiaWxpdGllcygpLmhlYWRlcl9leHRlbnNpb25z
OworICAqZXh0ID0gbWVkaWFfZW5naW5lXy0+dm9pY2UoKS5HZXRDYXBhYmlsaXRpZXMoKS5oZWFk
ZXJfZXh0ZW5zaW9uczsKIH0KIAogdm9pZCBDaGFubmVsTWFuYWdlcjo6R2V0U3VwcG9ydGVkVmlk
ZW9Db2RlY3MoCkBAIC05MiwxMCArOTIsMTAgQEAgdm9pZCBDaGFubmVsTWFuYWdlcjo6R2V0U3Vw
cG9ydGVkVmlkZW9Db2RlY3MoCiAgIH0KICAgY29kZWNzLT5jbGVhcigpOwogCi0gIHN0ZDo6dmVj
dG9yPFZpZGVvQ29kZWM+IHZpZGVvX2NvZGVjcyA9IG1lZGlhX2VuZ2luZV8tPnZpZGVvX2NvZGVj
cygpOworICBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiB2aWRlb19jb2RlY3MgPSBtZWRpYV9lbmdp
bmVfLT52aWRlbygpLmNvZGVjcygpOwogICBmb3IgKGNvbnN0IGF1dG8mIHZpZGVvX2NvZGVjIDog
dmlkZW9fY29kZWNzKSB7CiAgICAgaWYgKCFlbmFibGVfcnR4XyAmJgotICAgICAgICBfc3RyaWNt
cChrUnR4Q29kZWNOYW1lLCB2aWRlb19jb2RlYy5uYW1lLmNfc3RyKCkpID09IDApIHsKKyAgICAg
ICAgYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShrUnR4Q29kZWNOYW1lLCB2aWRlb19jb2RlYy5uYW1l
KSkgewogICAgICAgY29udGludWU7CiAgICAgfQogICAgIGNvZGVjcy0+cHVzaF9iYWNrKHZpZGVv
X2NvZGVjKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENoYW5uZWxNYW5hZ2VyOjpHZXRTdXBw
b3J0ZWRWaWRlb1J0cEhlYWRlckV4dGVuc2lvbnMoCiAgIGlmICghbWVkaWFfZW5naW5lXykgewog
ICAgIHJldHVybjsKICAgfQotICAqZXh0ID0gbWVkaWFfZW5naW5lXy0+R2V0VmlkZW9DYXBhYmls
aXRpZXMoKS5oZWFkZXJfZXh0ZW5zaW9uczsKKyAgKmV4dCA9IG1lZGlhX2VuZ2luZV8tPnZpZGVv
KCkuR2V0Q2FwYWJpbGl0aWVzKCkuaGVhZGVyX2V4dGVuc2lvbnM7CiB9CiAKIHZvaWQgQ2hhbm5l
bE1hbmFnZXI6OkdldFN1cHBvcnRlZERhdGFDb2RlY3MoCkBAIC0xNTYsMTYgKzE1NiwxNyBAQCBW
b2ljZUNoYW5uZWwqIENoYW5uZWxNYW5hZ2VyOjpDcmVhdGVWb2ljZUNoYW5uZWwoCiAgICAgd2Vi
cnRjOjpDYWxsKiBjYWxsLAogICAgIGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnJiBtZWRpYV9j
b25maWcsCiAgICAgd2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwK
KyAgICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQsCiAg
ICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGNvbnRlbnRfbmFtZSwKICAgICBib29sIHNydHBfcmVxdWlyZWQsCi0gICAgY29uc3QgcnRjOjpD
cnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09w
dGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykg
ewogICBpZiAoIXdvcmtlcl90aHJlYWRfLT5Jc0N1cnJlbnQoKSkgewogICAgIHJldHVybiB3b3Jr
ZXJfdGhyZWFkXy0+SW52b2tlPFZvaWNlQ2hhbm5lbCo+KFJUQ19GUk9NX0hFUkUsIFsmXSB7CiAg
ICAgICByZXR1cm4gQ3JlYXRlVm9pY2VDaGFubmVsKGNhbGwsIG1lZGlhX2NvbmZpZywgcnRwX3Ry
YW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsaW5nX3RocmVh
ZCwgY29udGVudF9uYW1lLCBzcnRwX3JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcnlwdG9fb3B0aW9ucywgb3B0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lZGlhX3RyYW5zcG9ydCwgc2lnbmFsaW5nX3RocmVhZCwgY29udGVudF9uYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnRwX3JlcXVpcmVkLCBjcnlwdG9f
b3B0aW9ucywgb3B0aW9ucyk7CiAgICAgfSk7CiAgIH0KIApAQCAtMTc2LDggKzE3Nyw4IEBAIFZv
aWNlQ2hhbm5lbCogQ2hhbm5lbE1hbmFnZXI6OkNyZWF0ZVZvaWNlQ2hhbm5lbCgKICAgICByZXR1
cm4gbnVsbHB0cjsKICAgfQogCi0gIFZvaWNlTWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsID0K
LSAgICAgIG1lZGlhX2VuZ2luZV8tPkNyZWF0ZUNoYW5uZWwoY2FsbCwgbWVkaWFfY29uZmlnLCBv
cHRpb25zKTsKKyAgVm9pY2VNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwgPSBtZWRpYV9lbmdp
bmVfLT52b2ljZSgpLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGNhbGwsIG1lZGlhX2NvbmZp
Zywgb3B0aW9ucywgY3J5cHRvX29wdGlvbnMpOwogICBpZiAoIW1lZGlhX2NoYW5uZWwpIHsKICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgfQpAQCAtMTg3LDcgKzE4OCw3IEBAIFZvaWNlQ2hhbm5lbCog
Q2hhbm5lbE1hbmFnZXI6OkNyZWF0ZVZvaWNlQ2hhbm5lbCgKICAgICAgIGFic2w6OldyYXBVbmlx
dWUobWVkaWFfY2hhbm5lbCksIGNvbnRlbnRfbmFtZSwgc3J0cF9yZXF1aXJlZCwKICAgICAgIGNy
eXB0b19vcHRpb25zKTsKIAotICB2b2ljZV9jaGFubmVsLT5Jbml0X3cocnRwX3RyYW5zcG9ydCk7
CisgIHZvaWNlX2NoYW5uZWwtPkluaXRfdyhydHBfdHJhbnNwb3J0LCBtZWRpYV90cmFuc3BvcnQp
OwogCiAgIFZvaWNlQ2hhbm5lbCogdm9pY2VfY2hhbm5lbF9wdHIgPSB2b2ljZV9jaGFubmVsLmdl
dCgpOwogICB2b2ljZV9jaGFubmVsc18ucHVzaF9iYWNrKHN0ZDo6bW92ZSh2b2ljZV9jaGFubmVs
KSk7CkBAIC0yMjYsNyArMjI3LDcgQEAgVmlkZW9DaGFubmVsKiBDaGFubmVsTWFuYWdlcjo6Q3Jl
YXRlVmlkZW9DaGFubmVsKAogICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAogICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgYm9vbCBzcnRwX3JlcXVpcmVk
LAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgY29u
c3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKICAgICBjb25zdCBWaWRl
b09wdGlvbnMmIG9wdGlvbnMpIHsKICAgaWYgKCF3b3JrZXJfdGhyZWFkXy0+SXNDdXJyZW50KCkp
IHsKICAgICByZXR1cm4gd29ya2VyX3RocmVhZF8tPkludm9rZTxWaWRlb0NoYW5uZWwqPihSVENf
RlJPTV9IRVJFLCBbJl0gewpAQCAtMjQzLDggKzI0NCw4IEBAIFZpZGVvQ2hhbm5lbCogQ2hhbm5l
bE1hbmFnZXI6OkNyZWF0ZVZpZGVvQ2hhbm5lbCgKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQog
Ci0gIFZpZGVvTWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsID0KLSAgICAgIG1lZGlhX2VuZ2lu
ZV8tPkNyZWF0ZVZpZGVvQ2hhbm5lbChjYWxsLCBtZWRpYV9jb25maWcsIG9wdGlvbnMpOworICBW
aWRlb01lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCA9IG1lZGlhX2VuZ2luZV8tPnZpZGVvKCku
Q3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbCwgbWVkaWFfY29uZmlnLCBvcHRpb25zLCBj
cnlwdG9fb3B0aW9ucyk7CiAgIGlmICghbWVkaWFfY2hhbm5lbCkgewogICAgIHJldHVybiBudWxs
cHRyOwogICB9CkBAIC0yNTMsNyArMjU0LDkgQEAgVmlkZW9DaGFubmVsKiBDaGFubmVsTWFuYWdl
cjo6Q3JlYXRlVmlkZW9DaGFubmVsKAogICAgICAgd29ya2VyX3RocmVhZF8sIG5ldHdvcmtfdGhy
ZWFkXywgc2lnbmFsaW5nX3RocmVhZCwKICAgICAgIGFic2w6OldyYXBVbmlxdWUobWVkaWFfY2hh
bm5lbCksIGNvbnRlbnRfbmFtZSwgc3J0cF9yZXF1aXJlZCwKICAgICAgIGNyeXB0b19vcHRpb25z
KTsKLSAgdmlkZW9fY2hhbm5lbC0+SW5pdF93KHJ0cF90cmFuc3BvcnQpOworCisgIC8vIFRPRE8o
c3VraGFub3YpOiBBZGQgbWVkaWFfdHJhbnNwb3J0IHN1cHBvcnQgZm9yIHZpZGVvIGNoYW5uZWwu
CisgIHZpZGVvX2NoYW5uZWwtPkluaXRfdyhydHBfdHJhbnNwb3J0LCAvKm1lZGlhX3RyYW5zcG9y
dD0qL251bGxwdHIpOwogCiAgIFZpZGVvQ2hhbm5lbCogdmlkZW9fY2hhbm5lbF9wdHIgPSB2aWRl
b19jaGFubmVsLmdldCgpOwogICB2aWRlb19jaGFubmVsc18ucHVzaF9iYWNrKHN0ZDo6bW92ZSh2
aWRlb19jaGFubmVsKSk7CkBAIC0yOTEsNyArMjk0LDcgQEAgUnRwRGF0YUNoYW5uZWwqIENoYW5u
ZWxNYW5hZ2VyOjpDcmVhdGVSdHBEYXRhQ2hhbm5lbCgKICAgICBydGM6OlRocmVhZCogc2lnbmFs
aW5nX3RocmVhZCwKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAogICAgIGJv
b2wgc3J0cF9yZXF1aXJlZCwKLSAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19v
cHRpb25zKSB7CisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cykgewogICBpZiAoIXdvcmtlcl90aHJlYWRfLT5Jc0N1cnJlbnQoKSkgewogICAgIHJldHVybiB3
b3JrZXJfdGhyZWFkXy0+SW52b2tlPFJ0cERhdGFDaGFubmVsKj4oUlRDX0ZST01fSEVSRSwgWyZd
IHsKICAgICAgIHJldHVybiBDcmVhdGVSdHBEYXRhQ2hhbm5lbChtZWRpYV9jb25maWcsIHJ0cF90
cmFuc3BvcnQsIHNpZ25hbGluZ190aHJlYWQsCkBAIC0zNDYsMTMgKzM0OSwxMyBAQCB2b2lkIENo
YW5uZWxNYW5hZ2VyOjpEZXN0cm95UnRwRGF0YUNoYW5uZWwoUnRwRGF0YUNoYW5uZWwqIGRhdGFf
Y2hhbm5lbCkgewogYm9vbCBDaGFubmVsTWFuYWdlcjo6U3RhcnRBZWNEdW1wKHJ0Yzo6UGxhdGZv
cm1GaWxlIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBt
YXhfc2l6ZV9ieXRlcykgewogICByZXR1cm4gd29ya2VyX3RocmVhZF8tPkludm9rZTxib29sPihS
VENfRlJPTV9IRVJFLCBbJl0gewotICAgIHJldHVybiBtZWRpYV9lbmdpbmVfLT5TdGFydEFlY0R1
bXAoZmlsZSwgbWF4X3NpemVfYnl0ZXMpOworICAgIHJldHVybiBtZWRpYV9lbmdpbmVfLT52b2lj
ZSgpLlN0YXJ0QWVjRHVtcChmaWxlLCBtYXhfc2l6ZV9ieXRlcyk7CiAgIH0pOwogfQogCiB2b2lk
IENoYW5uZWxNYW5hZ2VyOjpTdG9wQWVjRHVtcCgpIHsKICAgd29ya2VyX3RocmVhZF8tPkludm9r
ZTx2b2lkPihSVENfRlJPTV9IRVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsm
XSB7IG1lZGlhX2VuZ2luZV8tPlN0b3BBZWNEdW1wKCk7IH0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsmXSB7IG1lZGlhX2VuZ2luZV8tPnZvaWNlKCkuU3RvcEFlY0R1bXAoKTsg
fSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbG1hbmFnZXIu
aAppbmRleCBjNmI2MDFlYThmNmNiMGUwMDE3YjBiZjBhY2E3MDNkZTAyNDk2NThhLi41Y2FmZDhj
ZmE3MmY1NjM3N2ZjNTgxNTczMTQ4YTNhOTViNDgwYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5h
Z2VyLmgKQEAgLTgwLDE0ICs4MCwxNiBAQCBjbGFzcyBDaGFubmVsTWFuYWdlciBmaW5hbCB7CiAg
IC8vIGNhbGwgdGhlIGFwcHJvcHJpYXRlIERlc3Ryb3kqQ2hhbm5lbCBtZXRob2Qgd2hlbiBkb25l
LgogCiAgIC8vIENyZWF0ZXMgYSB2b2ljZSBjaGFubmVsLCB0byBiZSBhc3NvY2lhdGVkIHdpdGgg
dGhlIHNwZWNpZmllZCBzZXNzaW9uLgotICBWb2ljZUNoYW5uZWwqIENyZWF0ZVZvaWNlQ2hhbm5l
bCh3ZWJydGM6OkNhbGwqIGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnJiBtZWRpYV9jb25maWcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90
cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFk
KiBzaWduYWxpbmdfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHNydHBfcmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9u
cyk7CisgIFZvaWNlQ2hhbm5lbCogQ3JlYXRlVm9pY2VDaGFubmVsKAorICAgICAgd2VicnRjOjpD
YWxsKiBjYWxsLAorICAgICAgY29uc3QgY3JpY2tldDo6TWVkaWFDb25maWcmIG1lZGlhX2NvbmZp
ZywKKyAgICAgIHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQsCisg
ICAgICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQsCisg
ICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBjb250ZW50X25hbWUsCisgICAgICBib29sIHNydHBfcmVxdWlyZWQsCisgICAgICBjb25z
dCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgICAgY29uc3QgQXVk
aW9PcHRpb25zJiBvcHRpb25zKTsKICAgLy8gRGVzdHJveXMgYSB2b2ljZSBjaGFubmVsIGNyZWF0
ZWQgYnkgQ3JlYXRlVm9pY2VDaGFubmVsLgogICB2b2lkIERlc3Ryb3lWb2ljZUNoYW5uZWwoVm9p
Y2VDaGFubmVsKiB2b2ljZV9jaGFubmVsKTsKIApAQCAtMTAwLDcgKzEwMiw3IEBAIGNsYXNzIENo
YW5uZWxNYW5hZ2VyIGZpbmFsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0
aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpD
cnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKTsKICAgLy8gRGVzdHJveXMgYSB2
aWRlbyBjaGFubmVsIGNyZWF0ZWQgYnkgQ3JlYXRlVmlkZW9DaGFubmVsLgogICB2b2lkIERlc3Ry
b3lWaWRlb0NoYW5uZWwoVmlkZW9DaGFubmVsKiB2aWRlb19jaGFubmVsKTsKQEAgLTExMSw3ICsx
MTMsNyBAQCBjbGFzcyBDaGFubmVsTWFuYWdlciBmaW5hbCB7CiAgICAgICBydGM6OlRocmVhZCog
c2lnbmFsaW5nX3RocmVhZCwKICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUs
CiAgICAgICBib29sIHNydHBfcmVxdWlyZWQsCi0gICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlv
bnMmIGNyeXB0b19vcHRpb25zKTsKKyAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYg
Y3J5cHRvX29wdGlvbnMpOwogICAvLyBEZXN0cm95cyBhIGRhdGEgY2hhbm5lbCBjcmVhdGVkIGJ5
IENyZWF0ZVJ0cERhdGFDaGFubmVsLgogICB2b2lkIERlc3Ryb3lSdHBEYXRhQ2hhbm5lbChSdHBE
YXRhQ2hhbm5lbCogZGF0YV9jaGFubmVsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbG1hbmFnZXJfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFu
YWdlcl91bml0dGVzdC5jYwppbmRleCA0N2M5NTMwNmVlNzBmOGIyNjFiODBhYzA0ZWNlN2QzODg0
MDI3MTJkLi42ZTljYWI2Y2RhODFkZTZjNjBlYmU3ZWU4N2ZjMWFiNzdiYjk1YWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVs
bWFuYWdlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlcl91bml0dGVzdC5jYwpAQCAtMTEsNiArMTEsNyBA
QAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBp
L3Rlc3QvZmFrZV9tZWRpYV90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2Vt
ZWRpYWVuZ2luZS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvdGVzdHV0aWxzLmgiCiAjaW5jbHVk
ZSAibWVkaWEvZW5naW5lL2Zha2V3ZWJydGNjYWxsLmgiCkBAIC02MSwyMCArNjIsMzIgQEAgY2xh
c3MgQ2hhbm5lbE1hbmFnZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHJldHVy
biBkdGxzX3NydHBfdHJhbnNwb3J0OwogICB9CiAKLSAgdm9pZCBUZXN0Q3JlYXRlRGVzdHJveUNo
YW5uZWxzKHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQpIHsKKyAg
c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+IENyZWF0ZU1l
ZGlhVHJhbnNwb3J0KAorICAgICAgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogcGFja2V0
X3RyYW5zcG9ydCkgeworICAgIGF1dG8gbWVkaWFfdHJhbnNwb3J0X3Jlc3VsdCA9CisgICAgICAg
IGZha2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnlfLkNyZWF0ZU1lZGlhVHJhbnNwb3J0KHBhY2tl
dF90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5ldHdvcmtfLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmlzX2NhbGxlcj0qL3RydWUpOwor
ICAgIFJUQ19DSEVDSyhtZWRpYV90cmFuc3BvcnRfcmVzdWx0Lm9rKCkpOworICAgIHJldHVybiBt
ZWRpYV90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOworICB9CisKKyAgdm9pZCBUZXN0Q3Jl
YXRlRGVzdHJveUNoYW5uZWxzKAorICAgICAgd2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCog
cnRwX3RyYW5zcG9ydCwKKyAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1l
ZGlhX3RyYW5zcG9ydCkgewogICAgIGNyaWNrZXQ6OlZvaWNlQ2hhbm5lbCogdm9pY2VfY2hhbm5l
bCA9IGNtXy0+Q3JlYXRlVm9pY2VDaGFubmVsKAotICAgICAgICAmZmFrZV9jYWxsXywgY3JpY2tl
dDo6TWVkaWFDb25maWcoKSwgcnRwX3RyYW5zcG9ydCwKKyAgICAgICAgJmZha2VfY2FsbF8sIGNy
aWNrZXQ6Ok1lZGlhQ29uZmlnKCksIHJ0cF90cmFuc3BvcnQsIG1lZGlhX3RyYW5zcG9ydCwKICAg
ICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwgY3JpY2tldDo6Q05fQVVESU8sIGtEZWZhdWx0
U3J0cFJlcXVpcmVkLAotICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMoKSwgQXVkaW9PcHRpb25z
KCkpOworICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSwgQXVkaW9PcHRpb25zKCkpOwog
ICAgIEVYUEVDVF9UUlVFKHZvaWNlX2NoYW5uZWwgIT0gbnVsbHB0cik7CiAgICAgY3JpY2tldDo6
VmlkZW9DaGFubmVsKiB2aWRlb19jaGFubmVsID0gY21fLT5DcmVhdGVWaWRlb0NoYW5uZWwoCiAg
ICAgICAgICZmYWtlX2NhbGxfLCBjcmlja2V0OjpNZWRpYUNvbmZpZygpLCBydHBfdHJhbnNwb3J0
LAogICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLCBjcmlja2V0OjpDTl9WSURFTywga0Rl
ZmF1bHRTcnRwUmVxdWlyZWQsCi0gICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBWaWRlb09w
dGlvbnMoKSk7CisgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBWaWRlb09wdGlvbnMo
KSk7CiAgICAgRVhQRUNUX1RSVUUodmlkZW9fY2hhbm5lbCAhPSBudWxscHRyKTsKICAgICBjcmlj
a2V0OjpSdHBEYXRhQ2hhbm5lbCogcnRwX2RhdGFfY2hhbm5lbCA9IGNtXy0+Q3JlYXRlUnRwRGF0
YUNoYW5uZWwoCiAgICAgICAgIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIHJ0cF90cmFuc3BvcnQs
IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksCi0gICAgICAgIGNyaWNrZXQ6OkNOX0RBVEEsIGtEZWZh
dWx0U3J0cFJlcXVpcmVkLCBydGM6OkNyeXB0b09wdGlvbnMoKSk7CisgICAgICAgIGNyaWNrZXQ6
OkNOX0RBVEEsIGtEZWZhdWx0U3J0cFJlcXVpcmVkLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSk7
CiAgICAgRVhQRUNUX1RSVUUocnRwX2RhdGFfY2hhbm5lbCAhPSBudWxscHRyKTsKICAgICBjbV8t
PkRlc3Ryb3lWaWRlb0NoYW5uZWwodmlkZW9fY2hhbm5lbCk7CiAgICAgY21fLT5EZXN0cm95Vm9p
Y2VDaGFubmVsKHZvaWNlX2NoYW5uZWwpOwpAQCAtOTAsNiArMTAzLDcgQEAgY2xhc3MgQ2hhbm5l
bE1hbmFnZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICBjcmlja2V0OjpGYWtlRGF0
YUVuZ2luZSogZmRtZV87CiAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpDaGFubmVsTWFuYWdl
cj4gY21fOwogICBjcmlja2V0OjpGYWtlQ2FsbCBmYWtlX2NhbGxfOworICB3ZWJydGM6OkZha2VN
ZWRpYVRyYW5zcG9ydEZhY3RvcnkgZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeV87CiB9Owog
CiAvLyBUZXN0IHRoYXQgd2Ugc3RhcnR1cC9zaHV0ZG93biBwcm9wZXJseS4KQEAgLTE1NCw3ICsx
NjgsMTUgQEAgVEVTVF9GKENoYW5uZWxNYW5hZ2VyVGVzdCwgU2V0VmlkZW9SdHhFbmFibGVkKSB7
CiBURVNUX0YoQ2hhbm5lbE1hbmFnZXJUZXN0LCBDcmVhdGVEZXN0cm95Q2hhbm5lbHMpIHsKICAg
RVhQRUNUX1RSVUUoY21fLT5Jbml0KCkpOwogICBhdXRvIHJ0cF90cmFuc3BvcnQgPSBDcmVhdGVE
dGxzU3J0cFRyYW5zcG9ydCgpOwotICBUZXN0Q3JlYXRlRGVzdHJveUNoYW5uZWxzKHJ0cF90cmFu
c3BvcnQuZ2V0KCkpOworICBUZXN0Q3JlYXRlRGVzdHJveUNoYW5uZWxzKHJ0cF90cmFuc3BvcnQu
Z2V0KCksIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7Cit9CisKK1RFU1RfRihDaGFubmVs
TWFuYWdlclRlc3QsIENyZWF0ZURlc3Ryb3lDaGFubmVsc1dpdGhNZWRpYVRyYW5zcG9ydCkgewor
ICBFWFBFQ1RfVFJVRShjbV8tPkluaXQoKSk7CisgIGF1dG8gcnRwX3RyYW5zcG9ydCA9IENyZWF0
ZUR0bHNTcnRwVHJhbnNwb3J0KCk7CisgIGF1dG8gbWVkaWFfdHJhbnNwb3J0ID0KKyAgICAgIENy
ZWF0ZU1lZGlhVHJhbnNwb3J0KHJ0cF90cmFuc3BvcnQtPnJ0Y3BfcGFja2V0X3RyYW5zcG9ydCgp
KTsKKyAgVGVzdENyZWF0ZURlc3Ryb3lDaGFubmVscyhydHBfdHJhbnNwb3J0LmdldCgpLCBtZWRp
YV90cmFuc3BvcnQuZ2V0KCkpOwogfQogCiBURVNUX0YoQ2hhbm5lbE1hbmFnZXJUZXN0LCBDcmVh
dGVEZXN0cm95Q2hhbm5lbHNPblRocmVhZCkgewpAQCAtMTY0LDcgKzE4Niw3IEBAIFRFU1RfRihD
aGFubmVsTWFuYWdlclRlc3QsIENyZWF0ZURlc3Ryb3lDaGFubmVsc09uVGhyZWFkKSB7CiAgIEVY
UEVDVF9UUlVFKGNtXy0+c2V0X25ldHdvcmtfdGhyZWFkKG5ldHdvcmtfLmdldCgpKSk7CiAgIEVY
UEVDVF9UUlVFKGNtXy0+SW5pdCgpKTsKICAgYXV0byBydHBfdHJhbnNwb3J0ID0gQ3JlYXRlRHRs
c1NydHBUcmFuc3BvcnQoKTsKLSAgVGVzdENyZWF0ZURlc3Ryb3lDaGFubmVscyhydHBfdHJhbnNw
b3J0LmdldCgpKTsKKyAgVGVzdENyZWF0ZURlc3Ryb3lDaGFubmVscyhydHBfdHJhbnNwb3J0Lmdl
dCgpLCAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ug
Y3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvY3JlYXRlcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY3JlYXRlcGVlcmNvbm5lY3Rpb25mYWN0b3J5
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmM0ZWJiZTczMGY5OWFlMzgwMjdm
MjM4MTI5MTgxODhiNWEwMTljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2Ny
ZWF0ZXBlZXJjb25uZWN0aW9uZmFjdG9yeS5jYworKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCww
IEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAiYXBpL2NhbGwvY2FsbGZhY3Rvcnlp
bnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKLSNp
bmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAi
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfZmFjdG9yeV9pbnRlcmZhY2UuaCIK
LSNpbmNsdWRlICJtZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaCIKLSNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9iaW5kLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0K
LSNpZiBkZWZpbmVkKFVTRV9CVUlMVElOX1NXX0NPREVDUykKLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9y
eSgKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5j
b2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5
PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnkpIHsKLSAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9u
RmFjdG9yeVdpdGhBdWRpb01peGVyKAotICAgICAgbnVsbHB0ciAvKm5ldHdvcmtfdGhyZWFkKi8s
IG51bGxwdHIgLyp3b3JrZXJfdGhyZWFkKi8sCi0gICAgICBudWxscHRyIC8qc2lnbmFsaW5nX3Ro
cmVhZCovLCBudWxscHRyIC8qZGVmYXVsdF9hZG0qLywKLSAgICAgIGF1ZGlvX2VuY29kZXJfZmFj
dG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgICAgbnVsbHB0ciAvKnZpZGVvX2VuY29k
ZXJfZmFjdG9yeSovLCBudWxscHRyIC8qdmlkZW9fZGVjb2Rlcl9mYWN0b3J5Ki8sCi0gICAgICBu
dWxscHRyIC8qYXVkaW9fbWl4ZXIqLyk7Ci19Ci0KLS8vIE5vdGU6IGFsbCB0aGUgb3RoZXIgQ3Jl
YXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5IHZhcmlhbnRzIGp1c3QgZW5kIHVwIGNhbGxpbmcKLS8v
IHRoaXMsIHVsdGltYXRlbHkuCi1ydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0
b3J5SW50ZXJmYWNlPiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCi0gICAgcnRjOjpUaHJl
YWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAotICAg
IHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBk
ZWZhdWx0X2FkbSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4g
YXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29k
ZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRjVmlk
ZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6Oldl
YlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCi0gICAgcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZykgewotICBydGM6OnNjb3Bl
ZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nX3VzZSA9IGF1ZGlvX3By
b2Nlc3Npbmc7Ci0gIGlmICghYXVkaW9fcHJvY2Vzc2luZ191c2UpIHsKLSAgICBhdWRpb19wcm9j
ZXNzaW5nX3VzZSA9IEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKTsKLSAgfQotCi0g
IHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5n
aW5lKAotICAgICAgY3JpY2tldDo6V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCi0g
ICAgICAgICAgZGVmYXVsdF9hZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LAotICAgICAgICAgIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwgdmlkZW9fZGVjb2Rl
cl9mYWN0b3J5LCBhdWRpb19taXhlciwKLSAgICAgICAgICBhdWRpb19wcm9jZXNzaW5nX3VzZSkp
OwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRmFjdG9yeUludGVyZmFjZT4gY2FsbF9mYWN0b3J5
ID0gQ3JlYXRlQ2FsbEZhY3RvcnkoKTsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dG
YWN0b3J5SW50ZXJmYWNlPiBldmVudF9sb2dfZmFjdG9yeSA9Ci0gICAgICBDcmVhdGVSdGNFdmVu
dExvZ0ZhY3RvcnkoKTsKLQotICByZXR1cm4gQ3JlYXRlTW9kdWxhclBlZXJDb25uZWN0aW9uRmFj
dG9yeSgKLSAgICAgIG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhy
ZWFkLCBzdGQ6Om1vdmUobWVkaWFfZW5naW5lKSwKLSAgICAgIHN0ZDo6bW92ZShjYWxsX2ZhY3Rv
cnkpLCBzdGQ6Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpKTsKLX0KLQotcnRjOjpzY29wZWRfcmVm
cHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25G
YWN0b3J5KAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVh
ZCogd29ya2VyX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAg
ICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCi0gICAgcnRjOjpzY29wZWRfcmVmcHRy
PEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAot
ICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFj
dG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNv
ZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21p
eGVyLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nl
c3NpbmcsCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNl
PiBmZWNfY29udHJvbGxlcl9mYWN0b3J5LAotICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29u
dHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+Ci0gICAgICAgIG5ldHdvcmtfY29udHJvbGxlcl9mYWN0
b3J5KSB7Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nl
c3NpbmdfdXNlID0gYXVkaW9fcHJvY2Vzc2luZzsKLSAgaWYgKCFhdWRpb19wcm9jZXNzaW5nX3Vz
ZSkgewotICAgIGF1ZGlvX3Byb2Nlc3NpbmdfdXNlID0gQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigp
LkNyZWF0ZSgpOwotICB9Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5l
SW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUoCi0gICAgICBjcmlja2V0OjpXZWJSdGNNZWRpYUVuZ2lu
ZUZhY3Rvcnk6OkNyZWF0ZSgKLSAgICAgICAgICBkZWZhdWx0X2FkbSwgYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgICAgICAgdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LCB2aWRlb19kZWNvZGVyX2ZhY3RvcnksIGF1ZGlvX21peGVyLAotICAgICAgICAgIGF1
ZGlvX3Byb2Nlc3NpbmdfdXNlKSk7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPENhbGxGYWN0b3J5SW50
ZXJmYWNlPiBjYWxsX2ZhY3RvcnkgPSBDcmVhdGVDYWxsRmFjdG9yeSgpOwotCi0gIHN0ZDo6dW5p
cXVlX3B0cjxSdGNFdmVudExvZ0ZhY3RvcnlJbnRlcmZhY2U+IGV2ZW50X2xvZ19mYWN0b3J5ID0K
LSAgICAgIENyZWF0ZVJ0Y0V2ZW50TG9nRmFjdG9yeSgpOwotCi0gIHJldHVybiBDcmVhdGVNb2R1
bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgICAgbmV0d29ya190aHJlYWQsIHdvcmtlcl90
aHJlYWQsIHNpZ25hbGluZ190aHJlYWQsIHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpLAotICAgICAg
c3RkOjptb3ZlKGNhbGxfZmFjdG9yeSksIHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSksCi0g
ICAgICBzdGQ6Om1vdmUoZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSksIHN0ZDo6bW92ZShuZXR3b3Jr
X2NvbnRyb2xsZXJfZmFjdG9yeSkpOwotfQotI2VuZGlmCi0KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9y
eSgKLSAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdv
cmtlcl90aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBkZWZhdWx0X2FkbSwKLSAgICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnksCi0gICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IHZp
ZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFj
dG9yeT4gdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b01peGVyPiBhdWRpb19taXhlciwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNz
aW5nPiBhdWRpb19wcm9jZXNzaW5nKSB7Ci0gIGlmICghYXVkaW9fcHJvY2Vzc2luZykKLSAgICBh
dWRpb19wcm9jZXNzaW5nID0gQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpOwotCi0g
IHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5n
aW5lID0KLSAgICAgIGNyaWNrZXQ6OldlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAot
ICAgICAgICAgIGRlZmF1bHRfYWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29k
ZXJfZmFjdG9yeSwKLSAgICAgICAgICBzdGQ6Om1vdmUodmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSwg
c3RkOjptb3ZlKHZpZGVvX2RlY29kZXJfZmFjdG9yeSksCi0gICAgICAgICAgYXVkaW9fbWl4ZXIs
IGF1ZGlvX3Byb2Nlc3NpbmcpOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRmFjdG9yeUludGVy
ZmFjZT4gY2FsbF9mYWN0b3J5ID0gQ3JlYXRlQ2FsbEZhY3RvcnkoKTsKLQotICBzdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnRMb2dGYWN0b3J5SW50ZXJmYWNlPiBldmVudF9sb2dfZmFjdG9yeSA9Ci0g
ICAgICBDcmVhdGVSdGNFdmVudExvZ0ZhY3RvcnkoKTsKLQotICByZXR1cm4gQ3JlYXRlTW9kdWxh
clBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICAgIG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhy
ZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBzdGQ6Om1vdmUobWVkaWFfZW5naW5lKSwKLSAgICAgIHN0
ZDo6bW92ZShjYWxsX2ZhY3RvcnkpLCBzdGQ6Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpKTsKLX0K
LQotI2lmIGRlZmluZWQoVVNFX0JVSUxUSU5fU1dfQ09ERUNTKQotcnRjOjpzY29wZWRfcmVmcHRy
PFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KLUNyZWF0ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeVdpdGhBdWRpb01peGVyKAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAg
ICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5n
X3RocmVhZCwKLSAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCi0gICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwK
LSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVv
X2VuY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5
KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4
ZXI+IGF1ZGlvX21peGVyKSB7Ci0gIHJldHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3Rvcnko
Ci0gICAgICBuZXR3b3JrX3RocmVhZCwgd29ya2VyX3RocmVhZCwgc2lnbmFsaW5nX3RocmVhZCwg
ZGVmYXVsdF9hZG0sCi0gICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJf
ZmFjdG9yeSwgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgICAgdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5LCBhdWRpb19taXhlciwgbnVsbHB0cik7Ci19Ci0KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVy
Q29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgK
LSAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtl
cl90aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgQXVkaW9E
ZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0Vu
Y29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBjcmlj
a2V0OjpXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0g
ICAgY3JpY2tldDo6V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5KSB7Ci0gIHJldHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnlXaXRoQXVkaW9NaXhl
cigKLSAgICAgIG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFk
LCBkZWZhdWx0X2FkbSwKLSAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LCB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICB2aWRlb19kZWNvZGVyX2Zh
Y3RvcnksIG51bGxwdHIpOwotfQotI2VuZGlmCi0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2Rh
dGFjaGFubmVsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvZGF0YWNoYW5uZWwuY2MKaW5kZXggZjgxOWQyNjY5NTc2MDUxNWQwOGZlMTk0YmEwMTMxNTIw
MzcwNDA4ZC4uZTk4OTU4NjYwN2Q3N2JmM2E0MWY5MjgzZDUyNGQzYWQzZjczYjBlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZGF0YWNo
YW5uZWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvZGF0YWNoYW5uZWwuY2MKQEAgLTExOCw2ICsxMTgsMTAgQEAgcnRjOjpzY29wZWRfcmVmcHRy
PERhdGFDaGFubmVsPiBEYXRhQ2hhbm5lbDo6Q3JlYXRlKAogICByZXR1cm4gY2hhbm5lbDsKIH0K
IAorYm9vbCBEYXRhQ2hhbm5lbDo6SXNTY3RwTGlrZShjcmlja2V0OjpEYXRhQ2hhbm5lbFR5cGUg
dHlwZSkgeworICByZXR1cm4gdHlwZSA9PSBjcmlja2V0OjpEQ1RfU0NUUCB8fCB0eXBlID09IGNy
aWNrZXQ6OkRDVF9NRURJQV9UUkFOU1BPUlQ7Cit9CisKIERhdGFDaGFubmVsOjpEYXRhQ2hhbm5l
bChEYXRhQ2hhbm5lbFByb3ZpZGVySW50ZXJmYWNlKiBwcm92aWRlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmlja2V0OjpEYXRhQ2hhbm5lbFR5cGUgZGN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsYWJlbCkKQEAgLTE0Nyw3ICsxNTEsNyBAQCBi
b29sIERhdGFDaGFubmVsOjpJbml0KGNvbnN0IEludGVybmFsRGF0YUNoYW5uZWxJbml0JiBjb25m
aWcpIHsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaGFuZHNoYWtlX3N0YXRlXyA9
IGtIYW5kc2hha2VSZWFkeTsKLSAgfSBlbHNlIGlmIChkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3Jp
Y2tldDo6RENUX1NDVFApIHsKKyAgfSBlbHNlIGlmIChJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90
eXBlXykpIHsKICAgICBpZiAoY29uZmlnLmlkIDwgLTEgfHwgY29uZmlnLm1heFJldHJhbnNtaXRz
IDwgLTEgfHwKICAgICAgICAgY29uZmlnLm1heFJldHJhbnNtaXRUaW1lIDwgLTEpIHsKICAgICAg
IFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgU0NUUCBkYXRh
IGNoYW5uZWwgZHVlIHRvICIKQEAgLTI0MSw3ICsyNDUsNyBAQCBib29sIERhdGFDaGFubmVsOjpT
ZW5kKGNvbnN0IERhdGFCdWZmZXImIGJ1ZmZlcikgewogICBpZiAoIXF1ZXVlZF9zZW5kX2RhdGFf
LkVtcHR5KCkpIHsKICAgICAvLyBPbmx5IFNDVFAgRGF0YUNoYW5uZWwgcXVldWVzIHRoZSBvdXRn
b2luZyBkYXRhIHdoZW4gdGhlIHRyYW5zcG9ydCBpcwogICAgIC8vIGJsb2NrZWQuCi0gICAgUlRD
X0RDSEVDSyhkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6RENUX1NDVFApOworICAgIFJU
Q19EQ0hFQ0soSXNTY3RwTGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pKTsKICAgICBpZiAoIVF1ZXVl
U2VuZERhdGFNZXNzYWdlKGJ1ZmZlcikpIHsKICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJD
bG9zaW5nIHRoZSBEYXRhQ2hhbm5lbCBkdWUgdG8gYSBmYWlsdXJlIHRvIHF1ZXVlICIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsIGRhdGEuIjsKQEAgLTI3Myw3ICsyNzcs
NyBAQCB2b2lkIERhdGFDaGFubmVsOjpTZXRSZWNlaXZlU3NyYyh1aW50MzJfdCByZWNlaXZlX3Nz
cmMpIHsKIHZvaWQgRGF0YUNoYW5uZWw6OlNldFNjdHBTaWQoaW50IHNpZCkgewogICBSVENfRENI
RUNLX0xUKGNvbmZpZ18uaWQsIDApOwogICBSVENfRENIRUNLX0dFKHNpZCwgMCk7Ci0gIFJUQ19E
Q0hFQ0tfRVEoZGF0YV9jaGFubmVsX3R5cGVfLCBjcmlja2V0OjpEQ1RfU0NUUCk7CisgIFJUQ19E
Q0hFQ0soSXNTY3RwTGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pKTsKICAgaWYgKGNvbmZpZ18uaWQg
PT0gc2lkKSB7CiAgICAgcmV0dXJuOwogICB9CkBAIC0yODMsNyArMjg3LDcgQEAgdm9pZCBEYXRh
Q2hhbm5lbDo6U2V0U2N0cFNpZChpbnQgc2lkKSB7CiB9CiAKIHZvaWQgRGF0YUNoYW5uZWw6Ok9u
Q2xvc2luZ1Byb2NlZHVyZVN0YXJ0ZWRSZW1vdGVseShpbnQgc2lkKSB7Ci0gIGlmIChkYXRhX2No
YW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6RENUX1NDVFAgJiYgc2lkID09IGNvbmZpZ18uaWQgJiYK
KyAgaWYgKElzU2N0cExpa2UoZGF0YV9jaGFubmVsX3R5cGVfKSAmJiBzaWQgPT0gY29uZmlnXy5p
ZCAmJgogICAgICAgc3RhdGVfICE9IGtDbG9zaW5nICYmIHN0YXRlXyAhPSBrQ2xvc2VkKSB7CiAg
ICAgLy8gRG9uJ3QgYm90aGVyIHNlbmRpbmcgcXVldWVkIGRhdGEgc2luY2UgdGhlIHNpZGUgdGhh
dCBpbml0aWF0ZWQgdGhlCiAgICAgLy8gY2xvc3VyZSB3b3VsZG4ndCByZWNlaXZlIGl0IGFueXdh
eS4gU2VlIGNyYnVnLmNvbS81NTkzOTQgZm9yIGEgbGVuZ3RoeQpAQCAtMjk5LDcgKzMwMyw3IEBA
IHZvaWQgRGF0YUNoYW5uZWw6Ok9uQ2xvc2luZ1Byb2NlZHVyZVN0YXJ0ZWRSZW1vdGVseShpbnQg
c2lkKSB7CiB9CiAKIHZvaWQgRGF0YUNoYW5uZWw6Ok9uQ2xvc2luZ1Byb2NlZHVyZUNvbXBsZXRl
KGludCBzaWQpIHsKLSAgaWYgKGRhdGFfY2hhbm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfU0NU
UCAmJiBzaWQgPT0gY29uZmlnXy5pZCkgeworICBpZiAoSXNTY3RwTGlrZShkYXRhX2NoYW5uZWxf
dHlwZV8pICYmIHNpZCA9PSBjb25maWdfLmlkKSB7CiAgICAgLy8gSWYgdGhlIGNsb3NpbmcgcHJv
Y2VkdXJlIGlzIGNvbXBsZXRlLCB3ZSBzaG91bGQgaGF2ZSBmaW5pc2hlZCBzZW5kaW5nCiAgICAg
Ly8gYWxsIHBlbmRpbmcgZGF0YSBhbmQgdHJhbnNpdGlvbmVkIHRvIGtDbG9zaW5nIGFscmVhZHku
CiAgICAgUlRDX0RDSEVDS19FUShzdGF0ZV8sIGtDbG9zaW5nKTsKQEAgLTMxMCw3ICszMTQsNyBA
QCB2b2lkIERhdGFDaGFubmVsOjpPbkNsb3NpbmdQcm9jZWR1cmVDb21wbGV0ZShpbnQgc2lkKSB7
CiB9CiAKIHZvaWQgRGF0YUNoYW5uZWw6Ok9uVHJhbnNwb3J0Q2hhbm5lbENyZWF0ZWQoKSB7Ci0g
IFJUQ19EQ0hFQ0soZGF0YV9jaGFubmVsX3R5cGVfID09IGNyaWNrZXQ6OkRDVF9TQ1RQKTsKKyAg
UlRDX0RDSEVDSyhJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpOwogICBpZiAoIWNvbm5l
Y3RlZF90b19wcm92aWRlcl8pIHsKICAgICBjb25uZWN0ZWRfdG9fcHJvdmlkZXJfID0gcHJvdmlk
ZXJfLT5Db25uZWN0RGF0YUNoYW5uZWwodGhpcyk7CiAgIH0KQEAgLTM0OCwxMiArMzUyLDEyIEBA
IHZvaWQgRGF0YUNoYW5uZWw6Ok9uRGF0YVJlY2VpdmVkKGNvbnN0IGNyaWNrZXQ6OlJlY2VpdmVE
YXRhUGFyYW1zJiBwYXJhbXMsCiAgIGlmIChkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6
RENUX1JUUCAmJiBwYXJhbXMuc3NyYyAhPSByZWNlaXZlX3NzcmNfKSB7CiAgICAgcmV0dXJuOwog
ICB9Ci0gIGlmIChkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6RENUX1NDVFAgJiYgcGFy
YW1zLnNpZCAhPSBjb25maWdfLmlkKSB7CisgIGlmIChJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90
eXBlXykgJiYgcGFyYW1zLnNpZCAhPSBjb25maWdfLmlkKSB7CiAgICAgcmV0dXJuOwogICB9CiAK
ICAgaWYgKHBhcmFtcy50eXBlID09IGNyaWNrZXQ6OkRNVF9DT05UUk9MKSB7Ci0gICAgUlRDX0RD
SEVDSyhkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6RENUX1NDVFApOworICAgIFJUQ19E
Q0hFQ0soSXNTY3RwTGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pKTsKICAgICBpZiAoaGFuZHNoYWtl
X3N0YXRlXyAhPSBrSGFuZHNoYWtlV2FpdGluZ0ZvckFjaykgewogICAgICAgLy8gSWdub3JlIGl0
IGlmIHdlIGFyZSBub3QgZXhwZWN0aW5nIGFuIEFDSyBtZXNzYWdlLgogICAgICAgUlRDX0xPRyhM
U19XQVJOSU5HKQpAQCAtNTcwLDcgKzU3NCw3IEBAIGJvb2wgRGF0YUNoYW5uZWw6OlNlbmREYXRh
TWVzc2FnZShjb25zdCBEYXRhQnVmZmVyJiBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBxdWV1ZV9pZl9ibG9ja2VkKSB7CiAgIGNyaWNrZXQ6OlNlbmREYXRh
UGFyYW1zIHNlbmRfcGFyYW1zOwogCi0gIGlmIChkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tl
dDo6RENUX1NDVFApIHsKKyAgaWYgKElzU2N0cExpa2UoZGF0YV9jaGFubmVsX3R5cGVfKSkgewog
ICAgIHNlbmRfcGFyYW1zLm9yZGVyZWQgPSBjb25maWdfLm9yZGVyZWQ7CiAgICAgLy8gU2VuZCBh
cyBvcmRlcmVkIGlmIGl0IGlzIHN0aWxsIGdvaW5nIHRocm91Z2ggT1BFTi9BQ0sgc2lnbmFsaW5n
LgogICAgIGlmIChoYW5kc2hha2Vfc3RhdGVfICE9IGtIYW5kc2hha2VSZWFkeSAmJiAhY29uZmln
Xy5vcmRlcmVkKSB7CkBAIC01OTcsNyArNjAxLDcgQEAgYm9vbCBEYXRhQ2hhbm5lbDo6U2VuZERh
dGFNZXNzYWdlKGNvbnN0IERhdGFCdWZmZXImIGJ1ZmZlciwKICAgICByZXR1cm4gdHJ1ZTsKICAg
fQogCi0gIGlmIChkYXRhX2NoYW5uZWxfdHlwZV8gIT0gY3JpY2tldDo6RENUX1NDVFApIHsKKyAg
aWYgKCFJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpIHsKICAgICByZXR1cm4gZmFsc2U7
CiAgIH0KIApAQCAtNjQ5LDcgKzY1Myw3IEBAIHZvaWQgRGF0YUNoYW5uZWw6OlF1ZXVlQ29udHJv
bE1lc3NhZ2UoY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgYnVmZmVyKSB7CiBib29sIERh
dGFDaGFubmVsOjpTZW5kQ29udHJvbE1lc3NhZ2UoY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZl
ciYgYnVmZmVyKSB7CiAgIGJvb2wgaXNfb3Blbl9tZXNzYWdlID0gaGFuZHNoYWtlX3N0YXRlXyA9
PSBrSGFuZHNoYWtlU2hvdWxkU2VuZE9wZW47CiAKLSAgUlRDX0RDSEVDS19FUShkYXRhX2NoYW5u
ZWxfdHlwZV8sIGNyaWNrZXQ6OkRDVF9TQ1RQKTsKKyAgUlRDX0RDSEVDSyhJc1NjdHBMaWtlKGRh
dGFfY2hhbm5lbF90eXBlXykpOwogICBSVENfRENIRUNLKHdyaXRhYmxlXyk7CiAgIFJUQ19EQ0hF
Q0tfR0UoY29uZmlnXy5pZCwgMCk7CiAgIFJUQ19EQ0hFQ0soIWlzX29wZW5fbWVzc2FnZSB8fCAh
Y29uZmlnXy5uZWdvdGlhdGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2RhdGFjaGFubmVsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kYXRhY2hhbm5lbC5oCmluZGV4IGNiYjBjOGIyY2Yw
YWJhNTY4Y2E3ZGJmZjRiM2QxYjkzYTVjYjk1YjEuLjIyZWEzNTRjMjExNjMyZGI4NmU3OTQyMzQ4
YmQ1YzMyODY2NGY3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL2RhdGFjaGFubmVsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZGF0YWNoYW5uZWwuaApAQCAtMTIyLDYgKzEyMiw4IEBA
IGNsYXNzIERhdGFDaGFubmVsIDogcHVibGljIERhdGFDaGFubmVsSW50ZXJmYWNlLCBwdWJsaWMg
c2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxhYmVsLAog
ICAgICAgY29uc3QgSW50ZXJuYWxEYXRhQ2hhbm5lbEluaXQmIGNvbmZpZyk7CiAKKyAgc3RhdGlj
IGJvb2wgSXNTY3RwTGlrZShjcmlja2V0OjpEYXRhQ2hhbm5lbFR5cGUgdHlwZSk7CisKICAgdmly
dHVhbCB2b2lkIFJlZ2lzdGVyT2JzZXJ2ZXIoRGF0YUNoYW5uZWxPYnNlcnZlciogb2JzZXJ2ZXIp
OwogICB2aXJ0dWFsIHZvaWQgVW5yZWdpc3Rlck9ic2VydmVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2R0bHNzcnRwdHJhbnNw
b3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZHRs
c3NydHB0cmFuc3BvcnQuY2MKaW5kZXggZTMxYjJmNTg3MmNhOTZiNTczYmM4MTI0YTA1Y2QxZDM4
MDIwY2Q4NC4uMjgzNWQzNGE0Njc3NjU0OTcyYjU0YjdmNjAzM2ExZjQyMDM5NjMzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZHRsc3Ny
dHB0cmFuc3BvcnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvZHRsc3NydHB0cmFuc3BvcnQuY2MKQEAgLTMwMSw2ICszMDEsOCBAQCB2b2lkIER0
bHNTcnRwVHJhbnNwb3J0OjpPbkR0bHNTdGF0ZShjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJu
YWwqIHRyYW5zcG9ydCwKICAgUlRDX0RDSEVDSyh0cmFuc3BvcnQgPT0gcnRwX2R0bHNfdHJhbnNw
b3J0XyB8fAogICAgICAgICAgICAgIHRyYW5zcG9ydCA9PSBydGNwX2R0bHNfdHJhbnNwb3J0Xyk7
CiAKKyAgU2lnbmFsRHRsc1N0YXRlQ2hhbmdlKCk7CisKICAgaWYgKHN0YXRlICE9IGNyaWNrZXQ6
OkRUTFNfVFJBTlNQT1JUX0NPTk5FQ1RFRCkgewogICAgIFJlc2V0UGFyYW1zKCk7CiAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvZHRsc3NydHB0cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL2R0bHNzcnRwdHJhbnNwb3J0LmgKaW5kZXggNDk4ZjAyZTkxNzYyMmI3
MzAwNDk0NjA2MTE1OGZlMDk4NmY3ZWI3MS4uY2FjNTYwZTc5YWNlODVhZjM2NzI4MzVjNGRhYmY5
NWMwY2NhZjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvZHRsc3NydHB0cmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kdGxzc3J0cHRyYW5zcG9ydC5oCkBAIC00Miw3ICs0
Miw4IEBAIGNsYXNzIER0bHNTcnRwVHJhbnNwb3J0IDogcHVibGljIFNydHBUcmFuc3BvcnQgewog
ICB2b2lkIFVwZGF0ZVJlY3ZFbmNyeXB0ZWRIZWFkZXJFeHRlbnNpb25JZHMoCiAgICAgICBjb25z
dCBzdGQ6OnZlY3RvcjxpbnQ+JiByZWN2X2V4dGVuc2lvbl9pZHMpOwogCi0gIHNpZ3Nsb3Q6OnNp
Z25hbDI8RHRsc1NydHBUcmFuc3BvcnQqLCBib29sPiBTaWduYWxEdGxzU3J0cFNldHVwRmFpbHVy
ZTsKKyAgc2lnc2xvdDo6c2lnbmFsPER0bHNTcnRwVHJhbnNwb3J0KiwgYm9vbD4gU2lnbmFsRHRs
c1NydHBTZXR1cEZhaWx1cmU7CisgIHNpZ3Nsb3Q6OnNpZ25hbDw+IFNpZ25hbER0bHNTdGF0ZUNo
YW5nZTsKIAogICBSVENFcnJvciBTZXRTcnRwU2VuZEtleShjb25zdCBjcmlja2V0OjpDcnlwdG9Q
YXJhbXMmIHBhcmFtcykgb3ZlcnJpZGUgewogICAgIHJldHVybiBSVENFcnJvcihSVENFcnJvclR5
cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXBpY2VjYW5kaWRhdGUuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwaWNlY2FuZGlkYXRlLmNj
CmluZGV4IDI3N2YxYmFiNGZmZjEwZDM4NGY3ZDEzYTc0ZmFlM2E4ZDQ4YTc4YmUuLjIxMzNkOWRh
ZGQyNTgxODRiNDk3NzY4OTdjYzMzOWZmYTJjNmI4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXBpY2VjYW5kaWRhdGUuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcGljZWNh
bmRpZGF0ZS5jYwpAQCAtMTQsNyArMTQsNiBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCiAjaW5jbHVkZSAicGMvd2VicnRjc2RwLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3Ry
aW5nZW5jb2RlLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2Vwc2Vzc2lvbmRlc2NyaXB0
aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNl
cHNlc3Npb25kZXNjcmlwdGlvbi5jYwppbmRleCA2NGE3YTJiZDU5MWIwYTY5MWVkMjFjOTFhNmY4
YmE3Mzk1NGU0ZDMyLi4xM2QwNzQzODA4MjAwNTM0MjhmMjNlZGExOTg1YzE4MmE0MmQwOTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9q
c2Vwc2Vzc2lvbmRlc2NyaXB0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXBzZXNzaW9uZGVzY3JpcHRpb24uY2MKQEAgLTE3LDcgKzE3
LDYgQEAKICNpbmNsdWRlICJwYy9tZWRpYXNlc3Npb24uaCIKICNpbmNsdWRlICJwYy93ZWJydGNz
ZHAuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9zdHJpbmdlbmNvZGUuaCIKIAogdXNpbmcgY3JpY2tldDo6U2Vzc2lvbkRlc2NyaXB0aW9uOwog
CkBAIC05MywzNyArOTIsOSBAQCB2b2lkIFVwZGF0ZUNvbm5lY3Rpb25BZGRyZXNzKAogCiB9ICAv
LyBuYW1lc3BhY2UKIAotY29uc3QgY2hhciBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtP
ZmZlcltdID0gIm9mZmVyIjsKLWNvbnN0IGNoYXIgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNl
OjprUHJBbnN3ZXJbXSA9ICJwcmFuc3dlciI7Ci1jb25zdCBjaGFyIFNlc3Npb25EZXNjcmlwdGlv
bkludGVyZmFjZTo6a0Fuc3dlcltdID0gImFuc3dlciI7Ci0KIGNvbnN0IGludCBKc2VwU2Vzc2lv
bkRlc2NyaXB0aW9uOjprRGVmYXVsdFZpZGVvQ29kZWNJZCA9IDEwMDsKIGNvbnN0IGNoYXIgSnNl
cFNlc3Npb25EZXNjcmlwdGlvbjo6a0RlZmF1bHRWaWRlb0NvZGVjTmFtZVtdID0gIlZQOCI7CiAK
LWNvbnN0IGNoYXIqIFNkcFR5cGVUb1N0cmluZyhTZHBUeXBlIHR5cGUpIHsKLSAgc3dpdGNoICh0
eXBlKSB7Ci0gICAgY2FzZSBTZHBUeXBlOjprT2ZmZXI6Ci0gICAgICByZXR1cm4gU2Vzc2lvbkRl
c2NyaXB0aW9uSW50ZXJmYWNlOjprT2ZmZXI7Ci0gICAgY2FzZSBTZHBUeXBlOjprUHJBbnN3ZXI6
Ci0gICAgICByZXR1cm4gU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprUHJBbnN3ZXI7Ci0g
ICAgY2FzZSBTZHBUeXBlOjprQW5zd2VyOgotICAgICAgcmV0dXJuIFNlc3Npb25EZXNjcmlwdGlv
bkludGVyZmFjZTo6a0Fuc3dlcjsKLSAgfQotICByZXR1cm4gIiI7Ci19Ci0KLWFic2w6Om9wdGlv
bmFsPFNkcFR5cGU+IFNkcFR5cGVGcm9tU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlX3N0
cikgewotICBpZiAodHlwZV9zdHIgPT0gU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprT2Zm
ZXIpIHsKLSAgICByZXR1cm4gU2RwVHlwZTo6a09mZmVyOwotICB9IGVsc2UgaWYgKHR5cGVfc3Ry
ID09IFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6a1ByQW5zd2VyKSB7Ci0gICAgcmV0dXJu
IFNkcFR5cGU6OmtQckFuc3dlcjsKLSAgfSBlbHNlIGlmICh0eXBlX3N0ciA9PSBTZXNzaW9uRGVz
Y3JpcHRpb25JbnRlcmZhY2U6OmtBbnN3ZXIpIHsKLSAgICByZXR1cm4gU2RwVHlwZTo6a0Fuc3dl
cjsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKLSAgfQotfQotCiAvLyBU
T0RPKHN0ZXZlYW50b24pOiBSZW1vdmUgdGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9uY2Ug
Q2hyb21pdW0gaGFzIGJlZW4KIC8vIHVwZGF0ZWQuCiBTZHBUeXBlIFNlc3Npb25EZXNjcmlwdGlv
bkludGVyZmFjZTo6R2V0VHlwZSgpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0LmNjCmlu
ZGV4IGMzZGZkMzI0NjRkZWQyNTc5YTE5NGMwMWQ3ZWMxZGE4MTAyZjZkZDUuLjg4ZDIwYTQ1YjE3
OTI3ZjQxZDM2MjViMTRiMTFjZjA1ZWM0YTFjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnQuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydC5j
YwpAQCAtMTMsNyArMTMsNiBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5
PiAgLy8gZm9yIHN0ZDo6cGFpcgogCi0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAj
aW5jbHVkZSAiYXBpL2NhbmRpZGF0ZS5oIgogI2luY2x1ZGUgInAycC9iYXNlL3AycGNvbnN0YW50
cy5oIgogI2luY2x1ZGUgInAycC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWwuaCIKQEAgLTk0LDEx
ICs5MywxMyBAQCBKc2VwVHJhbnNwb3J0OjpKc2VwVHJhbnNwb3J0KAogICAgIHN0ZDo6dW5pcXVl
X3B0cjx3ZWJydGM6OlNydHBUcmFuc3BvcnQ+IHNkZXNfdHJhbnNwb3J0LAogICAgIHN0ZDo6dW5p
cXVlX3B0cjx3ZWJydGM6OkR0bHNTcnRwVHJhbnNwb3J0PiBkdGxzX3NydHBfdHJhbnNwb3J0LAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEdGxzVHJhbnNwb3J0SW50ZXJuYWw+IHJ0cF9kdGxzX3RyYW5z
cG9ydCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RHRsc1RyYW5zcG9ydEludGVybmFsPiBydGNwX2R0
bHNfdHJhbnNwb3J0KQorICAgIHN0ZDo6dW5pcXVlX3B0cjxEdGxzVHJhbnNwb3J0SW50ZXJuYWw+
IHJ0Y3BfZHRsc190cmFuc3BvcnQsCisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFU
cmFuc3BvcnRJbnRlcmZhY2U+IG1lZGlhX3RyYW5zcG9ydCkKICAgICA6IG1pZF8obWlkKSwKICAg
ICAgIGxvY2FsX2NlcnRpZmljYXRlXyhsb2NhbF9jZXJ0aWZpY2F0ZSksCiAgICAgICBydHBfZHRs
c190cmFuc3BvcnRfKHN0ZDo6bW92ZShydHBfZHRsc190cmFuc3BvcnQpKSwKLSAgICAgIHJ0Y3Bf
ZHRsc190cmFuc3BvcnRfKHN0ZDo6bW92ZShydGNwX2R0bHNfdHJhbnNwb3J0KSkgeworICAgICAg
cnRjcF9kdGxzX3RyYW5zcG9ydF8oc3RkOjptb3ZlKHJ0Y3BfZHRsc190cmFuc3BvcnQpKSwKKyAg
ICAgIG1lZGlhX3RyYW5zcG9ydF8oc3RkOjptb3ZlKG1lZGlhX3RyYW5zcG9ydCkpIHsKICAgUlRD
X0RDSEVDSyhydHBfZHRsc190cmFuc3BvcnRfKTsKICAgaWYgKHVuZW5jcnlwdGVkX3J0cF90cmFu
c3BvcnQpIHsKICAgICBSVENfRENIRUNLKCFzZGVzX3RyYW5zcG9ydCk7CkBAIC0xMTQsOSArMTE1
LDE3IEBAIEpzZXBUcmFuc3BvcnQ6OkpzZXBUcmFuc3BvcnQoCiAgICAgUlRDX0RDSEVDSyghc2Rl
c190cmFuc3BvcnQpOwogICAgIGR0bHNfc3J0cF90cmFuc3BvcnRfID0gc3RkOjptb3ZlKGR0bHNf
c3J0cF90cmFuc3BvcnQpOwogICB9CisKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBt
ZWRpYV90cmFuc3BvcnRfLT5TZXRNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sodGhpcyk7Cisg
IH0KIH0KIAotSnNlcFRyYW5zcG9ydDo6fkpzZXBUcmFuc3BvcnQoKSB7fQorSnNlcFRyYW5zcG9y
dDo6fkpzZXBUcmFuc3BvcnQoKSB7CisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgbWVk
aWFfdHJhbnNwb3J0Xy0+U2V0TWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrKG51bGxwdHIpOwor
ICB9Cit9CiAKIHdlYnJ0Yzo6UlRDRXJyb3IgSnNlcFRyYW5zcG9ydDo6U2V0TG9jYWxKc2VwVHJh
bnNwb3J0RGVzY3JpcHRpb24oCiAgICAgY29uc3QgSnNlcFRyYW5zcG9ydERlc2NyaXB0aW9uJiBq
c2VwX2Rlc2NyaXB0aW9uLApAQCAtMzE1LDggKzMyNCw5IEBAIHdlYnJ0Yzo6UlRDRXJyb3IgSnNl
cFRyYW5zcG9ydDo6VmVyaWZ5Q2VydGlmaWNhdGVGaW5nZXJwcmludCgKICAgICByZXR1cm4gd2Vi
cnRjOjpSVENFcnJvcih3ZWJydGM6OlJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmdlcnByaW50IHByb3ZpZGVkIGJ1dCBubyBp
ZGVudGl0eSBhdmFpbGFibGUuIik7CiAgIH0KLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMRmlu
Z2VycHJpbnQ+IGZwX3RtcChydGM6OlNTTEZpbmdlcnByaW50OjpDcmVhdGUoCi0gICAgICBmaW5n
ZXJwcmludC0+YWxnb3JpdGhtLCBjZXJ0aWZpY2F0ZS0+aWRlbnRpdHkoKSkpOworICBzdGQ6OnVu
aXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4gZnBfdG1wID0KKyAgICAgIHJ0Yzo6U1NMRmlu
Z2VycHJpbnQ6OkNyZWF0ZVVuaXF1ZShmaW5nZXJwcmludC0+YWxnb3JpdGhtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjZXJ0aWZpY2F0ZS0+aWRlbnRpdHkoKSk7
CiAgIFJUQ19EQ0hFQ0soZnBfdG1wLmdldCgpICE9IE5VTEwpOwogICBpZiAoKmZwX3RtcCA9PSAq
ZmluZ2VycHJpbnQpIHsKICAgICByZXR1cm4gd2VicnRjOjpSVENFcnJvcjo6T0soKTsKQEAgLTUw
NSw3ICs1MTUsOCBAQCB3ZWJydGM6OlJUQ0Vycm9yIEpzZXBUcmFuc3BvcnQ6Ok5lZ290aWF0ZUFu
ZFNldER0bHNQYXJhbWV0ZXJzKAogICAgICAgICAiTG9jYWwgZmluZ2VycHJpbnQgc3VwcGxpZWQg
d2hlbiBjYWxsZXIgZGlkbid0IG9mZmVyIERUTFMuIik7CiAgIH0gZWxzZSB7CiAgICAgLy8gV2Ug
YXJlIG5vdCBkb2luZyBEVExTCi0gICAgcmVtb3RlX2ZpbmdlcnByaW50ID0gYWJzbDo6bWFrZV91
bmlxdWU8cnRjOjpTU0xGaW5nZXJwcmludD4oIiIsIG51bGxwdHIsIDApOworICAgIHJlbW90ZV9m
aW5nZXJwcmludCA9IGFic2w6Om1ha2VfdW5pcXVlPHJ0Yzo6U1NMRmluZ2VycHJpbnQ+KAorICAg
ICAgICAiIiwgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4oKSk7CiAgIH0KICAgLy8gTm93
IHRoYXQgd2UgaGF2ZSBuZWdvdGlhdGVkIGV2ZXJ5dGhpbmcsIHB1c2ggaXQgZG93bndhcmQuCiAg
IC8vIE5vdGUgdGhhdCB3ZSBjYWNoZSB0aGUgcmVzdWx0IHNvIHRoYXQgaWYgd2UgaGF2ZSByYWNl
IGNvbmRpdGlvbnMKQEAgLTYzMyw0ICs2NDQsMTIgQEAgYm9vbCBKc2VwVHJhbnNwb3J0OjpHZXRU
cmFuc3BvcnRTdGF0cyhEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0LAogICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBKc2VwVHJhbnNwb3J0OjpPblN0YXRlQ2hhbmdlZCh3ZWJy
dGM6Ok1lZGlhVHJhbnNwb3J0U3RhdGUgc3RhdGUpIHsKKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5v
cmcvOTcxOSkgVGhpcyBtZXRob2QgY3VycmVudGx5IGZpcmVzIG9uIHRoZSBuZXR3b3JrCisgIC8v
IHRocmVhZCwgYnV0IG1lZGlhIHRyYW5zcG9ydCBkb2VzIG5vdCBtYWtlIHN1Y2ggZ3VhcmFudGVl
cy4gV2UgbmVlZCB0byBtYWtlCisgIC8vIHN1cmUgdGhpcyBjYWxsYmFjayBpcyBndWFyYW50ZWVk
IHRvIGJlIGV4ZWN1dGVkIG9uIHRoZSBuZXR3b3JrIHRocmVhZC4KKyAgbWVkaWFfdHJhbnNwb3J0
X3N0YXRlXyA9IHN0YXRlOworICBTaWduYWxNZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZCgpOwor
fQorCiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydC5oCmluZGV4
IDhlODk4NTMzZWY5N2MxZWM2ZDJiZWU0NzhmZmE5NmQyMDUwMWZlZDAuLjk1MmYyY2NiOGY3NDg0
OGY2NDY1ODcxMDcwZGVhMzViMDhjMTYyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnQuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0LmgKQEAg
LTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVk
ZSAiYXBpL2NhbmRpZGF0ZS5oIgogI2luY2x1ZGUgImFwaS9qc2VwLmgiCisjaW5jbHVkZSAiYXBp
L21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9kdGxzdHJh
bnNwb3J0LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvcDJwY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAi
cDJwL2Jhc2UvdHJhbnNwb3J0aW5mby5oIgpAQCAtNzAsMTEgKzcxLDE2IEBAIHN0cnVjdCBKc2Vw
VHJhbnNwb3J0RGVzY3JpcHRpb24gewogLy8KIC8vIE9uIFRocmVhZGluZzogSnNlcFRyYW5zcG9y
dCBwZXJmb3JtcyB3b3JrIHNvbGVseSBvbiB0aGUgbmV0d29yayB0aHJlYWQsIGFuZAogLy8gc28g
aXRzIG1ldGhvZHMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIHRoZSBuZXR3b3JrIHRocmVhZC4K
LWNsYXNzIEpzZXBUcmFuc3BvcnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4geworY2xh
c3MgSnNlcFRyYW5zcG9ydCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiwKKyAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgd2VicnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sg
ewogIHB1YmxpYzoKICAgLy8gfG1pZHwgaXMganVzdCB1c2VkIGZvciBsb2cgc3RhdGVtZW50cyBp
biBvcmRlciB0byBpZGVudGlmeSB0aGUgVHJhbnNwb3J0LgogICAvLyBOb3RlIHRoYXQgfGxvY2Fs
X2NlcnRpZmljYXRlfCBpcyBhbGxvd2VkIHRvIGJlIG51bGwgc2luY2UgYSByZW1vdGUKICAgLy8g
ZGVzY3JpcHRpb24gbWF5IGJlIHNldCBiZWZvcmUgYSBsb2NhbCBjZXJ0aWZpY2F0ZSBpcyBnZW5l
cmF0ZWQuCisgIC8vCisgIC8vIHxtZWRpYV90cmFzcG9ydHwgaXMgb3B0aW9uYWwgKGV4cGVyaW1l
bnRhbCkuIElmIGF2YWlsYWJsZSBpdCB3aWxsIGJlIHVzZWQKKyAgLy8gdG8gc2VuZCAvIHJlY2Vp
dmUgZW5jb2RlZCBhdWRpbyBhbmQgdmlkZW8gZnJhbWVzIGluc3RlYWQgb2YgUlRQLgorICAvLyBD
dXJyZW50bHkgfG1lZGlhX3RyYW5zcG9ydHwgY2FuIGNvLWV4aXN0IHdpdGggUlRQIC8gUlRDUCB0
cmFuc3BvcnRzLgogICBKc2VwVHJhbnNwb3J0KAogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1p
ZCwKICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxydGM6OlJUQ0NlcnRpZmljYXRlPiYg
bG9jYWxfY2VydGlmaWNhdGUsCkBAIC04Miw3ICs4OCw4IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnQg
OiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6U3J0cFRyYW5zcG9ydD4gc2Rlc190cmFuc3BvcnQsCiAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8d2VicnRjOjpEdGxzU3J0cFRyYW5zcG9ydD4gZHRsc19zcnRwX3RyYW5zcG9ydCwKICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxEdGxzVHJhbnNwb3J0SW50ZXJuYWw+IHJ0cF9kdGxzX3RyYW5zcG9y
dCwKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEdGxzVHJhbnNwb3J0SW50ZXJuYWw+IHJ0Y3BfZHRs
c190cmFuc3BvcnQpOworICAgICAgc3RkOjp1bmlxdWVfcHRyPER0bHNUcmFuc3BvcnRJbnRlcm5h
bD4gcnRjcF9kdGxzX3RyYW5zcG9ydCwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Ok1l
ZGlhVHJhbnNwb3J0SW50ZXJmYWNlPiBtZWRpYV90cmFuc3BvcnQpOwogCiAgIH5Kc2VwVHJhbnNw
b3J0KCkgb3ZlcnJpZGU7CiAKQEAgLTE1OCwxMSArMTY1LDI2IEBAIGNsYXNzIEpzZXBUcmFuc3Bv
cnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIHJldHVybiBydGNwX2R0bHNf
dHJhbnNwb3J0Xy5nZXQoKTsKICAgfQogCisgIC8vIFJldHVybnMgbWVkaWEgdHJhbnNwb3J0LCBp
ZiBhdmFpbGFibGUuCisgIC8vIE5vdGUgdGhhdCBtZWRpYSB0cmFuc3BvcnQgaXMgb3duZWQgYnkg
anNlcHRyYW5zcG9ydCBhbmQgdGhlIHBvaW50ZXIKKyAgLy8gdG8gbWVkaWEgdHJhbnNwb3J0IHdp
bGwgYmVjb21lcyBpbnZhbGlkIGFmdGVyIGRlc3RydWN0aW9uIG9mIGpzZXB0cmFuc3BvcnQuCisg
IHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCgpIGNvbnN0
IHsKKyAgICByZXR1cm4gbWVkaWFfdHJhbnNwb3J0Xy5nZXQoKTsKKyAgfQorCisgIC8vIFJldHVy
bnMgdGhlIGxhdGVzdCBtZWRpYSB0cmFuc3BvcnQgc3RhdGUuCisgIHdlYnJ0Yzo6TWVkaWFUcmFu
c3BvcnRTdGF0ZSBtZWRpYV90cmFuc3BvcnRfc3RhdGUoKSBjb25zdCB7CisgICAgcmV0dXJuIG1l
ZGlhX3RyYW5zcG9ydF9zdGF0ZV87CisgIH0KKwogICAvLyBUaGlzIGlzIHNpZ25hbGVkIHdoZW4g
UlRDUC1tdXggYmVjb21lcyBhY3RpdmUgYW5kCiAgIC8vIHxydGNwX2R0bHNfdHJhbnNwb3J0X3wg
aXMgZGVzdHJveWVkLiBUaGUgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgd2lsbAogICAvLyBoYW5k
bGUgdGhlIHNpZ25hbCBhbmQgdXBkYXRlIHRoZSBhZ2dyZWdhdGUgdHJhbnNwb3J0IHN0YXRlcy4K
ICAgc2lnc2xvdDo6c2lnbmFsPD4gU2lnbmFsUnRjcE11eEFjdGl2ZTsKIAorICAvLyBUaGlzIGlz
IHNpZ25hbGVkIGZvciBjaGFuZ2VzIGluIHxtZWRpYV90cmFuc3BvcnRffCBzdGF0ZS4KKyAgc2ln
c2xvdDo6c2lnbmFsPD4gU2lnbmFsTWVkaWFUcmFuc3BvcnRTdGF0ZUNoYW5nZWQ7CisKICAgLy8g
VE9ETyhkZWFkYmVlZik6IFRoZSBtZXRob2RzIGJlbG93IGFyZSBvbmx5IHB1YmxpYyBmb3IgdGVz
dGluZy4gU2hvdWxkIG1ha2UKICAgLy8gdGhlbSB1dGlsaXR5IGZ1bmN0aW9ucyBvciBvYmplY3Rz
IHNvIHRoZXkgY2FuIGJlIHRlc3RlZCBpbmRlcGVuZGVudGx5IGZyb20KICAgLy8gdGhpcyBjbGFz
cy4KQEAgLTIxOCw2ICsyNDAsOSBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0IDogcHVibGljIHNpZ3Ns
b3Q6Omhhc19zbG90czw+IHsKICAgYm9vbCBHZXRUcmFuc3BvcnRTdGF0cyhEdGxzVHJhbnNwb3J0
SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5z
cG9ydFN0YXRzKiBzdGF0cyk7CiAKKyAgLy8gSW52b2tlZCB3aGVuZXZlciB0aGUgc3RhdGUgb2Yg
dGhlIG1lZGlhIHRyYW5zcG9ydCBjaGFuZ2VzLgorICB2b2lkIE9uU3RhdGVDaGFuZ2VkKHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZSBzdGF0ZSkgb3ZlcnJpZGU7CisKICAgY29uc3Qgc3RkOjpz
dHJpbmcgbWlkXzsKICAgLy8gbmVlZHMtaWNlLXJlc3RhcnQgYml0IGFzIGRlc2NyaWJlZCBpbiBK
U0VQLgogICBib29sIG5lZWRzX2ljZV9yZXN0YXJ0XyA9IGZhbHNlOwpAQCAtMjQxLDYgKzI2Niwx
NCBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsK
ICAgYWJzbDo6b3B0aW9uYWw8c3RkOjp2ZWN0b3I8aW50Pj4gc2VuZF9leHRlbnNpb25faWRzXzsK
ICAgYWJzbDo6b3B0aW9uYWw8c3RkOjp2ZWN0b3I8aW50Pj4gcmVjdl9leHRlbnNpb25faWRzXzsK
IAorICAvLyBPcHRpb25hbCBtZWRpYSB0cmFuc3BvcnQgKGV4cGVyaW1lbnRhbCkuCisgIHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPiBtZWRpYV90cmFuc3Bv
cnRfOworCisgIC8vIElmIHxtZWRpYV90cmFuc3BvcnRffCBpcyBwcm92aWRlZCwgdGhpcyB2YXJp
YWJsZSByZXByZXNlbnRzIHRoZSBzdGF0ZSBvZgorICAvLyBtZWRpYSB0cmFuc3BvcnQuCisgIHdl
YnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZSBtZWRpYV90cmFuc3BvcnRfc3RhdGVfID0KKyAgICAg
IHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1BlbmRpbmc7CisKICAgUlRDX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihKc2VwVHJhbnNwb3J0KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9q
c2VwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCmluZGV4IDU2YTc0MmMzMzhiYzdmZTAzYWQzYzIxODc4
ZTFjYTQwZjA5MWNjNzUuLmU1MTgzMDFjZTJjODYyZmM3NWY2NDkxYWZmNGFkMDNmYmMxNjllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2pzZXB0cmFuc3BvcnRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydF91bml0dGVzdC5jYwpAQCAtOTgsMTEg
Kzk4LDE2IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnQyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgICBSVENfTk9UUkVBQ0hFRCgp
OwogICAgIH0KIAorICAgIC8vIFRPRE8oc3VraGFub3YpOiBDdXJyZW50bHkgdGhlcmUgaXMgbm8g
bWVkaWFfdHJhbnNwb3J0IHNwZWNpZmljCisgICAgLy8gbG9naWMgaW4ganNlcHRyYW5zcG9ydCwg
c28ganNlcHRyYW5zcG9ydCB1bml0dGVzdHMgYXJlIGNyZWF0ZWQgd2l0aAorICAgIC8vIG1lZGlh
X3RyYW5zcG9ydCA9IG51bGxwdHIuIEluIHRoZSBmdXR1cmUgd2Ugd2lsbCBwcm9iYWJseSBhZGQK
KyAgICAvLyBtb3JlIGxvZ2ljIHRoYXQgcmVxdWlyZSB1bml0IHRlc3RzLiBOb3RlIHRoYXQgY3Jl
YXRpb24gb2YgbWVkaWFfdHJhbnNwb3J0CisgICAgLy8gaXMgY292ZXJlZCBpbiBqc2VwdHJhbnNw
b3J0Y29udHJvbGxlcl91bml0dGVzdC4KICAgICBhdXRvIGpzZXBfdHJhbnNwb3J0ID0gYWJzbDo6
bWFrZV91bmlxdWU8SnNlcFRyYW5zcG9ydD4oCiAgICAgICAgIGtUcmFuc3BvcnROYW1lLCAvKmxv
Y2FsX2NlcnRpZmljYXRlPSovbnVsbHB0ciwKICAgICAgICAgc3RkOjptb3ZlKHVuZW5jcnlwdGVk
X3J0cF90cmFuc3BvcnQpLCBzdGQ6Om1vdmUoc2Rlc190cmFuc3BvcnQpLAogICAgICAgICBzdGQ6
Om1vdmUoZHRsc19zcnRwX3RyYW5zcG9ydCksIHN0ZDo6bW92ZShydHBfZHRsc190cmFuc3BvcnQp
LAotICAgICAgICBzdGQ6Om1vdmUocnRjcF9kdGxzX3RyYW5zcG9ydCkpOworICAgICAgICBzdGQ6
Om1vdmUocnRjcF9kdGxzX3RyYW5zcG9ydCksIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7
CiAKICAgICBzaWduYWxfcnRjcF9tdXhfYWN0aXZlX3JlY2VpdmVkXyA9IGZhbHNlOwogICAgIGpz
ZXBfdHJhbnNwb3J0LT5TaWduYWxSdGNwTXV4QWN0aXZlLmNvbm5lY3QoCkBAIC0xMjEsNyArMTI2
LDcgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydDJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1
YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpT
U0xGaW5nZXJwcmludD4gZmluZ2VycHJpbnQ7CiAgICAgaWYgKGNlcnQpIHsKLSAgICAgIGZpbmdl
cnByaW50LnJlc2V0KHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZShj
ZXJ0KSk7CisgICAgICBmaW5nZXJwcmludCA9IHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZy
b21DZXJ0aWZpY2F0ZSgqY2VydCk7CiAgICAgfQogICAgIGpzZXBfZGVzY3JpcHRpb24udHJhbnNw
b3J0X2Rlc2MgPQogICAgICAgICBUcmFuc3BvcnREZXNjcmlwdGlvbihzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4oKSwgdWZyYWcsIHB3ZCwKQEAgLTM3OCwxMSArMzgzLDEyIEBAIFRFU1RfUChKc2Vw
VHJhbnNwb3J0MldpdGhSdGNwTXV4LCBWZXJpZnlDZXJ0aWZpY2F0ZUZpbmdlcnByaW50KSB7CiAg
ICAgQVNTRVJUX05FKG51bGxwdHIsIGNlcnRpZmljYXRlKTsKIAogICAgIHN0ZDo6c3RyaW5nIGRp
Z2VzdF9hbGdvcml0aG07Ci0gICAgQVNTRVJUX1RSVUUoY2VydGlmaWNhdGUtPnNzbF9jZXJ0aWZp
Y2F0ZSgpLkdldFNpZ25hdHVyZURpZ2VzdEFsZ29yaXRobSgKKyAgICBBU1NFUlRfVFJVRShjZXJ0
aWZpY2F0ZS0+R2V0U1NMQ2VydGlmaWNhdGUoKS5HZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG0o
CiAgICAgICAgICZkaWdlc3RfYWxnb3JpdGhtKSk7CiAgICAgQVNTRVJUX0ZBTFNFKGRpZ2VzdF9h
bGdvcml0aG0uZW1wdHkoKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMRmluZ2VycHJp
bnQ+IGdvb2RfZmluZ2VycHJpbnQoCi0gICAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0
ZShkaWdlc3RfYWxnb3JpdGhtLCBjZXJ0aWZpY2F0ZS0+aWRlbnRpdHkoKSkpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OlNTTEZpbmdlcnByaW50PiBnb29kX2ZpbmdlcnByaW50ID0KKyAgICAg
ICAgcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlVW5pcXVlKGRpZ2VzdF9hbGdvcml0aG0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY2VydGlmaWNhdGUtPmlk
ZW50aXR5KCkpOwogICAgIEFTU0VSVF9ORShudWxscHRyLCBnb29kX2ZpbmdlcnByaW50KTsKIAog
ICAgIEVYUEVDVF9UUlVFKGpzZXBfdHJhbnNwb3J0XwpAQCAtMTA0NSw3ICsxMDUxLDcgQEAgY2xh
c3MgSnNlcFRyYW5zcG9ydDJIZWFkZXJFeHRlbnNpb25UZXN0CiAgIHZvaWQgT25SZWFkUGFja2V0
MShydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQsCiAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNp
emUsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHRpbWUsCisg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLywK
ICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykgewogICAgIFJUQ19MT0coTFNfSU5GTykg
PDwgIkpzZXBUcmFuc3BvcnQgMSBSZWNlaXZlZCBhIHBhY2tldC4iOwogICAgIENvbXBhcmVIZWFk
ZXJFeHRlbnNpb25zKApAQCAtMTA1OCw3ICsxMDY0LDcgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydDJI
ZWFkZXJFeHRlbnNpb25UZXN0CiAgIHZvaWQgT25SZWFkUGFja2V0MihydGM6OlBhY2tldFRyYW5z
cG9ydEludGVybmFsKiB0cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHRpbWUsCisgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLywKICAgICAgICAgICAgICAgICAg
ICAgIGludCBmbGFncykgewogICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkpzZXBUcmFuc3BvcnQg
MiBSZWNlaXZlZCBhIHBhY2tldC4iOwogICAgIENvbXBhcmVIZWFkZXJFeHRlbnNpb25zKApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNl
cHRyYW5zcG9ydGNvbnRyb2xsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJvbGxlci5jYwppbmRleCA0YzY5YTZhMDdl
Mjk1ODhjZTliZmE0ZGZhN2JlMzQ4NTVhMmZmMDEyLi43OGVjYWYzMWRlYWM0ZTQxZThkYjQ4OGEw
ZGY2Y2E4MTUwNGQyY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJvbGxlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJv
bGxlci5jYwpAQCAtMTQsMTAgKzE0LDExIEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJw
MnAvYmFzZS9wb3J0LmgiCisjaW5jbHVkZSAicGMvc3J0cGZpbHRlci5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2JpbmQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9rZXlfZGVyaXZhdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgog
CiB1c2luZyB3ZWJydGM6OlNkcFR5cGU7CkBAIC0xMzMsNiArMTM0LDI0IEBAIFJ0cFRyYW5zcG9y
dEludGVybmFsKiBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6R2V0UnRwVHJhbnNwb3J0KAogICBy
ZXR1cm4ganNlcF90cmFuc3BvcnQtPnJ0cF90cmFuc3BvcnQoKTsKIH0KIAorTWVkaWFUcmFuc3Bv
cnRJbnRlcmZhY2UqIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpHZXRNZWRpYVRyYW5zcG9ydCgK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlkKSBjb25zdCB7CisgIGF1dG8ganNlcF90cmFuc3Bv
cnQgPSBHZXRKc2VwVHJhbnNwb3J0Rm9yTWlkKG1pZCk7CisgIGlmICghanNlcF90cmFuc3BvcnQp
IHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorICByZXR1cm4ganNlcF90cmFuc3BvcnQtPm1l
ZGlhX3RyYW5zcG9ydCgpOworfQorCitNZWRpYVRyYW5zcG9ydFN0YXRlIEpzZXBUcmFuc3BvcnRD
b250cm9sbGVyOjpHZXRNZWRpYVRyYW5zcG9ydFN0YXRlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBtaWQpIGNvbnN0IHsKKyAgYXV0byBqc2VwX3RyYW5zcG9ydCA9IEdldEpzZXBUcmFuc3BvcnRG
b3JNaWQobWlkKTsKKyAgaWYgKCFqc2VwX3RyYW5zcG9ydCkgeworICAgIHJldHVybiBNZWRpYVRy
YW5zcG9ydFN0YXRlOjprUGVuZGluZzsKKyAgfQorICByZXR1cm4ganNlcF90cmFuc3BvcnQtPm1l
ZGlhX3RyYW5zcG9ydF9zdGF0ZSgpOworfQorCiBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJu
YWwqIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpHZXREdGxzVHJhbnNwb3J0KAogICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtaWQpIGNvbnN0IHsKICAgYXV0byBqc2VwX3RyYW5zcG9ydCA9IEdldEpz
ZXBUcmFuc3BvcnRGb3JNaWQobWlkKTsKQEAgLTM3MCw2ICszODksMTUgQEAgdm9pZCBKc2VwVHJh
bnNwb3J0Q29udHJvbGxlcjo6U2V0QWN0aXZlUmVzZXRTcnRwUGFyYW1zKAogICB9CiB9CiAKK3Zv
aWQgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OlNldE1lZGlhVHJhbnNwb3J0RmFjdG9yeSgKKyAg
ICBNZWRpYVRyYW5zcG9ydEZhY3RvcnkqIG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KSB7CisgIFJU
Q19EQ0hFQ0sobWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgPT0gY29uZmlnXy5tZWRpYV90cmFuc3Bv
cnRfZmFjdG9yeSB8fAorICAgICAgICAgICAgIGpzZXBfdHJhbnNwb3J0c19ieV9uYW1lXy5lbXB0
eSgpKQorICAgICAgPDwgIllvdSBjYW4gb25seSBjYWxsIFNldE1lZGlhVHJhbnNwb3J0RmFjdG9y
eSBiZWZvcmUgIgorICAgICAgICAgIkpzZXBUcmFuc3BvcnRDb250cm9sbGVyIGNyZWF0ZWQgaXRz
IGZpcnN0IHRyYW5zcG9ydC4iOworICBjb25maWdfLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0g
bWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpE
dGxzVHJhbnNwb3J0SW50ZXJuYWw+CiBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6Q3JlYXRlRHRs
c1RyYW5zcG9ydChjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0X25hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJ0Y3ApIHsKQEAgLTQ3MSw2
ICs0OTksOCBAQCBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6Q3JlYXRlRHRsc1NydHBUcmFuc3Bv
cnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Y3BfZHRsc190
cmFuc3BvcnQpOwogICBkdGxzX3NydHBfdHJhbnNwb3J0LT5TZXRBY3RpdmVSZXNldFNydHBQYXJh
bXMoCiAgICAgICBjb25maWdfLmFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtcyk7CisgIGR0bHNfc3J0
cF90cmFuc3BvcnQtPlNpZ25hbER0bHNTdGF0ZUNoYW5nZS5jb25uZWN0KAorICAgICAgdGhpcywg
JkpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpVcGRhdGVBZ2dyZWdhdGVTdGF0ZXNfbik7CiAgIHJl
dHVybiBkdGxzX3NydHBfdHJhbnNwb3J0OwogfQogCkBAIC01MjMsNyArNTUzLDcgQEAgUlRDRXJy
b3IgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkFwcGx5RGVzY3JpcHRpb25fbigKICAgICAgICAg
KElzQnVuZGxlZChjb250ZW50X2luZm8ubmFtZSkgJiYgY29udGVudF9pbmZvLm5hbWUgIT0gKmJ1
bmRsZWRfbWlkKCkpKSB7CiAgICAgICBjb250aW51ZTsKICAgICB9Ci0gICAgZXJyb3IgPSBNYXli
ZUNyZWF0ZUpzZXBUcmFuc3BvcnQoY29udGVudF9pbmZvKTsKKyAgICBlcnJvciA9IE1heWJlQ3Jl
YXRlSnNlcFRyYW5zcG9ydChsb2NhbCwgY29udGVudF9pbmZvKTsKICAgICBpZiAoIWVycm9yLm9r
KCkpIHsKICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CkBAIC03MzIsNiArNzYyLDEwIEBAIGJv
b2wgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkhhbmRsZUJ1bmRsZWRDb250ZW50KAogICAvLyBC
YXNlQ2hhbm5lbC9TY3RwVHJhbnNwb3J0IGNoYW5nZSB0aGUgUnRwVHJhbnNwb3J0L0R0bHNUcmFu
c3BvcnQgZmlyc3QsCiAgIC8vIHRoZW4gZGVzdHJveSB0aGUgY3JpY2tldDo6SnNlcFRyYW5zcG9y
dC4KICAgaWYgKFNldFRyYW5zcG9ydEZvck1pZChjb250ZW50X2luZm8ubmFtZSwganNlcF90cmFu
c3BvcnQpKSB7CisgICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTcxOSkgRm9yIG1lZGlhIHRy
YW5zcG9ydCB0aGlzIGlzIGZhciBmcm9tIGlkZWFsLAorICAgIC8vIGJlY2F1c2UgaXQgbWVhbnMg
dGhhdCB3ZSBmaXJzdCBjcmVhdGUgbWVkaWEgdHJhbnNwb3J0IGFuZCBzdGFydAorICAgIC8vIGNv
bm5lY3RpbmcgaXQsIGFuZCB0aGVuIHdlIGRlc3Ryb3kgaXQuIFdlIHdpbGwgbmVlZCB0byBhZGRy
ZXNzIGl0IGJlZm9yZQorICAgIC8vIHZpZGVvIHBhdGggaXMgZW5hYmxlZC4KICAgICBNYXliZURl
c3Ryb3lKc2VwVHJhbnNwb3J0KGNvbnRlbnRfaW5mby5uYW1lKTsKICAgICByZXR1cm4gdHJ1ZTsK
ICAgfQpAQCAtNzQ5LDEyICs3ODMsMTIgQEAgYm9vbCBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6
U2V0VHJhbnNwb3J0Rm9yTWlkKAogICBtaWRfdG9fdHJhbnNwb3J0X1ttaWRdID0ganNlcF90cmFu
c3BvcnQ7CiAgIHJldHVybiBjb25maWdfLnRyYW5zcG9ydF9vYnNlcnZlci0+T25UcmFuc3BvcnRD
aGFuZ2VkKAogICAgICAgbWlkLCBqc2VwX3RyYW5zcG9ydC0+cnRwX3RyYW5zcG9ydCgpLAotICAg
ICAganNlcF90cmFuc3BvcnQtPnJ0cF9kdGxzX3RyYW5zcG9ydCgpKTsKKyAgICAgIGpzZXBfdHJh
bnNwb3J0LT5ydHBfZHRsc190cmFuc3BvcnQoKSwganNlcF90cmFuc3BvcnQtPm1lZGlhX3RyYW5z
cG9ydCgpKTsKIH0KIAogdm9pZCBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6UmVtb3ZlVHJhbnNw
b3J0Rm9yTWlkKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpIHsKLSAgYm9vbCByZXQgPQotICAgICAg
Y29uZmlnXy50cmFuc3BvcnRfb2JzZXJ2ZXItPk9uVHJhbnNwb3J0Q2hhbmdlZChtaWQsIG51bGxw
dHIsIG51bGxwdHIpOworICBib29sIHJldCA9IGNvbmZpZ18udHJhbnNwb3J0X29ic2VydmVyLT5P
blRyYW5zcG9ydENoYW5nZWQobWlkLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0cik7CiAg
IC8vIENhbGxpbmcgT25UcmFuc3BvcnRDaGFuZ2VkIHdpdGggbnVsbHB0ciBzaG91bGQgYWx3YXlz
IHN1Y2NlZWQsIHNpbmNlIGl0IGlzCiAgIC8vIG9ubHkgZXhwZWN0ZWQgdG8gZmFpbCB3aGVuIGFk
ZGluZyBtZWRpYSB0byBhIHRyYW5zcG9ydCAobm90IHJlbW92aW5nKS4KICAgUlRDX0RDSEVDSyhy
ZXQpOwpAQCAtODA2LDcgKzg0MCw3IEBAIHN0ZDo6dmVjdG9yPGludD4gSnNlcFRyYW5zcG9ydENv
bnRyb2xsZXI6OkdldEVuY3J5cHRlZEhlYWRlckV4dGVuc2lvbklkcygKICAgICAgIHN0YXRpY19j
YXN0PGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uKj4oCiAgICAgICAgICAg
Y29udGVudF9pbmZvLmRlc2NyaXB0aW9uKTsKIAotICBpZiAoIWNvbmZpZ18uY3J5cHRvX29wdGlv
bnMuZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMpIHsKKyAgaWYgKCFjb25m
aWdfLmNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVu
c2lvbnMpIHsKICAgICByZXR1cm4gc3RkOjp2ZWN0b3I8aW50PigpOwogICB9CiAKQEAgLTg4OCw3
ICs5MjIsOTQgQEAgY3JpY2tldDo6SnNlcFRyYW5zcG9ydCogSnNlcFRyYW5zcG9ydENvbnRyb2xs
ZXI6OkdldEpzZXBUcmFuc3BvcnRCeU5hbWUoCiAgIHJldHVybiAoaXQgPT0ganNlcF90cmFuc3Bv
cnRzX2J5X25hbWVfLmVuZCgpKSA/IG51bGxwdHIgOiBpdC0+c2Vjb25kLmdldCgpOwogfQogCitz
dGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZT4KK0pzZXBUcmFu
c3BvcnRDb250cm9sbGVyOjpNYXliZUNyZWF0ZU1lZGlhVHJhbnNwb3J0KAorICAgIGNvbnN0IGNy
aWNrZXQ6OkNvbnRlbnRJbmZvJiBjb250ZW50X2luZm8sCisgICAgYm9vbCBsb2NhbCwKKyAgICBj
cmlja2V0OjpJY2VUcmFuc3BvcnRJbnRlcm5hbCogaWNlX3RyYW5zcG9ydCkgeworICBhYnNsOjpv
cHRpb25hbDxjcmlja2V0OjpDcnlwdG9QYXJhbXM+IHNlbGVjdGVkX2NyeXB0b19mb3JfbWVkaWFf
dHJhbnNwb3J0OworICBpZiAoY29udGVudF9pbmZvLm1lZGlhX2Rlc2NyaXB0aW9uKCkgJiYKKyAg
ICAgICFjb250ZW50X2luZm8ubWVkaWFfZGVzY3JpcHRpb24oKS0+Y3J5cHRvcygpLmVtcHR5KCkp
IHsKKyAgICAvLyBPcmRlciBvZiBjcnlwdG9zIGlzIGRldGVybWluaXN0aWMgKHJmYzQ1NjgsIDUu
MS4xKSwgc28gd2UganVzdCBzZWxlY3QgdGhlCisgICAgLy8gZmlyc3Qgb25lIChpbiBmYWN0IHRo
ZSBmaXJzdCBvbmUgc2hvdWxkIGJlIHRoZSBtb3N0IHByZWZlcnJlZCBvbmUuKSBXZQorICAgIC8v
IGlnbm9yZSB0aGUgSE1BQyBzaXplLCBhcyBtZWRpYSB0cmFuc3BvcnQgY3J5cHRvIHNldHRpbmdz
IGN1cnJlbnRseSBkb24ndAorICAgIC8vIGV4cG9zZSBITUFDIHNpemUsIG5vciBjcnlwdG8gcHJv
dG9jb2wgZm9yIHRoYXQgbWF0dGVyLgorICAgIHNlbGVjdGVkX2NyeXB0b19mb3JfbWVkaWFfdHJh
bnNwb3J0ID0KKyAgICAgICAgY29udGVudF9pbmZvLm1lZGlhX2Rlc2NyaXB0aW9uKCktPmNyeXB0
b3MoKVswXTsKKyAgfQorCisgIGlmIChjb25maWdfLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ICE9
IG51bGxwdHIpIHsKKyAgICBpZiAoIXNlbGVjdGVkX2NyeXB0b19mb3JfbWVkaWFfdHJhbnNwb3J0
Lmhhc192YWx1ZSgpKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJhPWNyeXRvIGxp
bmUgd2FzIG5vdCBmb3VuZCBpbiB0aGUgb2ZmZXIuIE1vc3QgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAibGlrZWx5IHlvdSBkaWQgbm90IGVuYWJsZSBTREVTLiAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNYWtlIHN1cmUgdG8gcGFzcyBjb25maWcuZW5hYmxlX2R0bHNf
c3J0cD1mYWxzZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0byBSVENDb25maWd1
cmF0aW9uLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgY29udGludWUg
d2l0aCBtZWRpYSB0cmFuc3BvcnQuIEZhbGxpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYmFjayB0byBSVFAuIGlzX2xvY2FsPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgbG9jYWw7CisKKyAgICAgIC8vIFJlbW92ZSBtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSBmcm9t
IGNvbmZpZywgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvCisgICAgICAvLyB1c2UgaXQgb24gdGhl
IHN1YnNlcXVlbnQgY2FsbCAoZm9yIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBvZmZlcikuCisgICAg
ICBjb25maWdfLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gbnVsbHB0cjsKKyAgICB9IGVsc2Ug
eworICAgICAgLy8gTm90ZSB0aGF0IHdlIGlnbm9yZSBoZXJlIGxpZmV0aW1lIGFuZCBsZW5ndGgu
CisgICAgICAvLyBJbiBmYWN0IHdlIHRha2UgdGhvc2UgYml0cyAoaW5saW5lLCBsaWZldGltZSBh
bmQgbGVuZ3RoKSBhbmQga2VlcCBpdCBhcworICAgICAgLy8gcGFydCBvZiBrZXkgZGVyaXZhdGlv
bi4KKyAgICAgIC8vCisgICAgICAvLyBUZWNobmljYWxseSwgd2UgYXJlIGFsc28gbm90IGZvbGxv
d2luZyByZmM0NTY4LCB3aGljaCByZXF1aXJlcyB1cyB0bworICAgICAgLy8gc2VuZCBhbmQgYW5z
d2VyIHdpdGggdGhlIGtleSB0aGF0IHdlIGNob3NlLiBJbiBwcmFjdGljZSwgZm9yIG1lZGlhCisg
ICAgICAvLyB0cmFuc3BvcnQsIHRoZSBjdXJyZW50IGFwcHJvYWNoIHNob3VsZCBiZSBzdWZmaWNp
ZW50ICh3ZSB0YWtlIHRoZSBrZXkKKyAgICAgIC8vIHRoYXQgc2VuZGVyIG9mZmVyZWQsIGFuZCBj
YWxsZXIgYXNzdW1lcyB3ZSB3aWxsIHVzZSBpdC4gV2UgYXJlIG5vdAorICAgICAgLy8gc2lnbmFs
aW5nIGJhY2sgdGhhdCB3ZSBpbmRlZWQgdXNlZCBpdC4pCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
cnRjOjpLZXlEZXJpdmF0aW9uPiBrZXlfZGVyaXZhdGlvbiA9CisgICAgICAgICAgcnRjOjpLZXlE
ZXJpdmF0aW9uOjpDcmVhdGUocnRjOjpLZXlEZXJpdmF0aW9uQWxnb3JpdGhtOjpIS0RGX1NIQTI1
Nik7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBsYWJlbCA9ICJNZWRpYVRyYW5zcG9ydExhYmVs
IjsKKyAgICAgIGNvbnN0ZXhwciBpbnQga0Rlcml2ZWRLZXlCeXRlU2l6ZSA9IDMyOworCisgICAg
ICBpbnQga2V5X2xlbiwgc2FsdF9sZW47CisgICAgICBpZiAoIXJ0Yzo6R2V0U3J0cEtleUFuZFNh
bHRMZW5ndGhzKAorICAgICAgICAgICAgICBydGM6OlNydHBDcnlwdG9TdWl0ZUZyb21OYW1lKAor
ICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRfY3J5cHRvX2Zvcl9tZWRpYV90cmFuc3BvcnQudmFs
dWUoKS5jaXBoZXJfc3VpdGUpLAorICAgICAgICAgICAgICAma2V5X2xlbiwgJnNhbHRfbGVuKSkg
eworICAgICAgICBSVENfQ0hFQ0soZmFsc2UpIDw8ICJDYW5ub3Qgc2V0IHVwIHNlY3VyZSBtZWRp
YSB0cmFuc3BvcnQiOworICAgICAgfQorICAgICAgcnRjOjpaZXJvT25GcmVlQnVmZmVyPHVpbnQ4
X3Q+IHJhd19rZXkoa2V5X2xlbiArIHNhbHRfbGVuKTsKKworICAgICAgY3JpY2tldDo6U3J0cEZp
bHRlcjo6UGFyc2VLZXlQYXJhbXMoCisgICAgICAgICAgc2VsZWN0ZWRfY3J5cHRvX2Zvcl9tZWRp
YV90cmFuc3BvcnQudmFsdWUoKS5rZXlfcGFyYW1zLAorICAgICAgICAgIHJhd19rZXkuZGF0YSgp
LCByYXdfa2V5LnNpemUoKSk7CisgICAgICBhYnNsOjpvcHRpb25hbDxydGM6Olplcm9PbkZyZWVC
dWZmZXI8dWludDhfdD4+IGtleSA9CisgICAgICAgICAga2V5X2Rlcml2YXRpb24tPkRlcml2ZUtl
eSgKKyAgICAgICAgICAgICAgcmF3X2tleSwKKyAgICAgICAgICAgICAgLypzYWx0PSovbnVsbHB0
ciwKKyAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4oCisgICAgICAg
ICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihsYWJlbC5kYXRhKCkp
LCBsYWJlbC5zaXplKCkpLAorICAgICAgICAgICAgICBrRGVyaXZlZEtleUJ5dGVTaXplKTsKKwor
ICAgICAgLy8gV2Ugd2FudCB0byBjcmFzaCB0aGUgYXBwIGlmIHdlIGRvbid0IGhhdmUgYSBrZXks
IGFuZCBub3Qgc2lsZW50bHkgZmFsbAorICAgICAgLy8gYmFjayB0byB0aGUgdW5zZWN1cmUgY29t
bXVuaWNhdGlvbi4KKyAgICAgIFJUQ19DSEVDSyhrZXkuaGFzX3ZhbHVlKCkpOworICAgICAgTWVk
aWFUcmFuc3BvcnRTZXR0aW5ncyBzZXR0aW5nczsKKyAgICAgIHNldHRpbmdzLmlzX2NhbGxlciA9
IGxvY2FsOworICAgICAgc2V0dGluZ3MucHJlX3NoYXJlZF9rZXkgPQorICAgICAgICAgIHN0ZDo6
c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGtleS52YWx1ZSgpLmRhdGEoKSks
CisgICAgICAgICAgICAgICAgICAgICAga2V5LnZhbHVlKCkuc2l6ZSgpKTsKKyAgICAgIGF1dG8g
bWVkaWFfdHJhbnNwb3J0X3Jlc3VsdCA9CisgICAgICAgICAgY29uZmlnXy5tZWRpYV90cmFuc3Bv
cnRfZmFjdG9yeS0+Q3JlYXRlTWVkaWFUcmFuc3BvcnQoCisgICAgICAgICAgICAgIGljZV90cmFu
c3BvcnQsIG5ldHdvcmtfdGhyZWFkXywgc2V0dGluZ3MpOworCisgICAgICAvLyBUT0RPKHN1a2hh
bm92KTogUHJvcGVyIGVycm9yIGhhbmRsaW5nLgorICAgICAgUlRDX0NIRUNLKG1lZGlhX3RyYW5z
cG9ydF9yZXN1bHQub2soKSk7CisKKyAgICAgIHJldHVybiBtZWRpYV90cmFuc3BvcnRfcmVzdWx0
Lk1vdmVWYWx1ZSgpOworICAgIH0KKyAgfQorCisgIHJldHVybiBudWxscHRyOworfQorCiBSVENF
cnJvciBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6TWF5YmVDcmVhdGVKc2VwVHJhbnNwb3J0KAor
ICAgIGJvb2wgbG9jYWwsCiAgICAgY29uc3QgY3JpY2tldDo6Q29udGVudEluZm8mIGNvbnRlbnRf
aW5mbykgewogICBSVENfRENIRUNLKG5ldHdvcmtfdGhyZWFkXy0+SXNDdXJyZW50KCkpOwogICBj
cmlja2V0OjpKc2VwVHJhbnNwb3J0KiB0cmFuc3BvcnQgPSBHZXRKc2VwVHJhbnNwb3J0QnlOYW1l
KGNvbnRlbnRfaW5mby5uYW1lKTsKQEAgLTkwNiwxNyArMTAyNywyNCBAQCBSVENFcnJvciBKc2Vw
VHJhbnNwb3J0Q29udHJvbGxlcjo6TWF5YmVDcmVhdGVKc2VwVHJhbnNwb3J0KAogCiAgIHN0ZDo6
dW5pcXVlX3B0cjxjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWw+IHJ0cF9kdGxzX3RyYW5z
cG9ydCA9CiAgICAgICBDcmVhdGVEdGxzVHJhbnNwb3J0KGNvbnRlbnRfaW5mby5uYW1lLCAvKnJ0
Y3AgPSovZmFsc2UpOworCiAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpEdGxzVHJhbnNwb3J0
SW50ZXJuYWw+IHJ0Y3BfZHRsc190cmFuc3BvcnQ7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFu
c3BvcnQ+IHVuZW5jcnlwdGVkX3J0cF90cmFuc3BvcnQ7CisgIHN0ZDo6dW5pcXVlX3B0cjxTcnRw
VHJhbnNwb3J0PiBzZGVzX3RyYW5zcG9ydDsKKyAgc3RkOjp1bmlxdWVfcHRyPER0bHNTcnRwVHJh
bnNwb3J0PiBkdGxzX3NydHBfdHJhbnNwb3J0OworICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFu
c3BvcnRJbnRlcmZhY2U+IG1lZGlhX3RyYW5zcG9ydDsKKwogICBpZiAoY29uZmlnXy5ydGNwX211
eF9wb2xpY3kgIT0KICAgICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a1J0Y3BNdXhQ
b2xpY3lSZXF1aXJlICYmCiAgICAgICBjb250ZW50X2luZm8udHlwZSA9PSBjcmlja2V0OjpNZWRp
YVByb3RvY29sVHlwZTo6a1J0cCkgewogICAgIHJ0Y3BfZHRsc190cmFuc3BvcnQgPQogICAgICAg
ICBDcmVhdGVEdGxzVHJhbnNwb3J0KGNvbnRlbnRfaW5mby5uYW1lLCAvKnJ0Y3AgPSovdHJ1ZSk7
CiAgIH0KKyAgbWVkaWFfdHJhbnNwb3J0ID0gTWF5YmVDcmVhdGVNZWRpYVRyYW5zcG9ydCgKKyAg
ICAgIGNvbnRlbnRfaW5mbywgbG9jYWwsIHJ0cF9kdGxzX3RyYW5zcG9ydC0+aWNlX3RyYW5zcG9y
dCgpKTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0PiB1bmVuY3J5cHRlZF9ydHBf
dHJhbnNwb3J0OwotICBzdGQ6OnVuaXF1ZV9wdHI8U3J0cFRyYW5zcG9ydD4gc2Rlc190cmFuc3Bv
cnQ7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxEdGxzU3J0cFRyYW5zcG9ydD4gZHRsc19zcnRwX3RyYW5z
cG9ydDsKKyAgLy8gVE9ETyhzdWtoYW5vdik6IERvIG5vdCBjcmVhdGUgUlRQL1JUQ1AgdHJhbnNw
b3J0cyBpZiBtZWRpYSB0cmFuc3BvcnQgaXMKKyAgLy8gdXNlZC4KICAgaWYgKGNvbmZpZ18uZGlz
YWJsZV9lbmNyeXB0aW9uKSB7CiAgICAgdW5lbmNyeXB0ZWRfcnRwX3RyYW5zcG9ydCA9IENyZWF0
ZVVuZW5jcnlwdGVkUnRwVHJhbnNwb3J0KAogICAgICAgICBjb250ZW50X2luZm8ubmFtZSwgcnRw
X2R0bHNfdHJhbnNwb3J0LmdldCgpLCBydGNwX2R0bHNfdHJhbnNwb3J0LmdldCgpKTsKQEAgLTkz
Miw5ICsxMDYwLDEyIEBAIFJUQ0Vycm9yIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpNYXliZUNy
ZWF0ZUpzZXBUcmFuc3BvcnQoCiAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpKc2Vw
VHJhbnNwb3J0PigKICAgICAgICAgICBjb250ZW50X2luZm8ubmFtZSwgY2VydGlmaWNhdGVfLCBz
dGQ6Om1vdmUodW5lbmNyeXB0ZWRfcnRwX3RyYW5zcG9ydCksCiAgICAgICAgICAgc3RkOjptb3Zl
KHNkZXNfdHJhbnNwb3J0KSwgc3RkOjptb3ZlKGR0bHNfc3J0cF90cmFuc3BvcnQpLAotICAgICAg
ICAgIHN0ZDo6bW92ZShydHBfZHRsc190cmFuc3BvcnQpLCBzdGQ6Om1vdmUocnRjcF9kdGxzX3Ry
YW5zcG9ydCkpOworICAgICAgICAgIHN0ZDo6bW92ZShydHBfZHRsc190cmFuc3BvcnQpLCBzdGQ6
Om1vdmUocnRjcF9kdGxzX3RyYW5zcG9ydCksCisgICAgICAgICAgc3RkOjptb3ZlKG1lZGlhX3Ry
YW5zcG9ydCkpOwogICBqc2VwX3RyYW5zcG9ydC0+U2lnbmFsUnRjcE11eEFjdGl2ZS5jb25uZWN0
KAogICAgICAgdGhpcywgJkpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpVcGRhdGVBZ2dyZWdhdGVT
dGF0ZXNfbik7CisgIGpzZXBfdHJhbnNwb3J0LT5TaWduYWxNZWRpYVRyYW5zcG9ydFN0YXRlQ2hh
bmdlZC5jb25uZWN0KAorICAgICAgdGhpcywgJkpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpPbk1l
ZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkX24pOwogICBTZXRUcmFuc3BvcnRGb3JNaWQoY29udGVu
dF9pbmZvLm5hbWUsIGpzZXBfdHJhbnNwb3J0LmdldCgpKTsKIAogICBqc2VwX3RyYW5zcG9ydHNf
YnlfbmFtZV9bY29udGVudF9pbmZvLm5hbWVdID0gc3RkOjptb3ZlKGpzZXBfdHJhbnNwb3J0KTsK
QEAgLTk1NiwxMiArMTA4NywxOSBAQCB2b2lkIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpNYXli
ZURlc3Ryb3lKc2VwVHJhbnNwb3J0KAogICAgICAgcmV0dXJuOwogICAgIH0KICAgfQorCiAgIGpz
ZXBfdHJhbnNwb3J0c19ieV9uYW1lXy5lcmFzZShtaWQpOwogICBVcGRhdGVBZ2dyZWdhdGVTdGF0
ZXNfbigpOwogfQogCiB2b2lkIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpEZXN0cm95QWxsSnNl
cFRyYW5zcG9ydHNfbigpIHsKICAgUlRDX0RDSEVDSyhuZXR3b3JrX3RocmVhZF8tPklzQ3VycmVu
dCgpKTsKKworICBmb3IgKGNvbnN0IGF1dG8mIGpzZXBfdHJhbnNwb3J0IDoganNlcF90cmFuc3Bv
cnRzX2J5X25hbWVfKSB7CisgICAgY29uZmlnXy50cmFuc3BvcnRfb2JzZXJ2ZXItPk9uVHJhbnNw
b3J0Q2hhbmdlZChqc2VwX3RyYW5zcG9ydC5maXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwor
ICB9CisKICAganNlcF90cmFuc3BvcnRzX2J5X25hbWVfLmNsZWFyKCk7CiB9CiAKQEAgLTExMTYs
MTggKzEyNTQsMzUgQEAgdm9pZCBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6T25UcmFuc3BvcnRT
dGF0ZUNoYW5nZWRfbigKICAgVXBkYXRlQWdncmVnYXRlU3RhdGVzX24oKTsKIH0KIAordm9pZCBK
c2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6T25NZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZF9uKCkg
eworICBTaWduYWxNZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZCgpOworICBVcGRhdGVBZ2dyZWdh
dGVTdGF0ZXNfbigpOworfQorCiB2b2lkIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpVcGRhdGVB
Z2dyZWdhdGVTdGF0ZXNfbigpIHsKICAgUlRDX0RDSEVDSyhuZXR3b3JrX3RocmVhZF8tPklzQ3Vy
cmVudCgpKTsKIAogICBhdXRvIGR0bHNfdHJhbnNwb3J0cyA9IEdldER0bHNUcmFuc3BvcnRzKCk7
CiAgIGNyaWNrZXQ6OkljZUNvbm5lY3Rpb25TdGF0ZSBuZXdfY29ubmVjdGlvbl9zdGF0ZSA9CiAg
ICAgICBjcmlja2V0OjprSWNlQ29ubmVjdGlvbkNvbm5lY3Rpbmc7CisgIFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUgbmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlID0K
KyAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGU6OmtJY2VD
b25uZWN0aW9uTmV3OworICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25T
dGF0ZSBuZXdfY29tYmluZWRfc3RhdGUgPQorICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtOZXc7CiAgIGNyaWNrZXQ6OkljZUdhdGhlcmluZ1N0YXRl
IG5ld19nYXRoZXJpbmdfc3RhdGUgPSBjcmlja2V0OjprSWNlR2F0aGVyaW5nTmV3OwogICBib29s
IGFueV9mYWlsZWQgPSBmYWxzZTsKKworICAvLyBUT0RPKGh0dHA6Ly9idWdzLndlYnJ0Yy5vcmcv
OTcxOSkgSWYod2hlbikgbWVkaWFfdHJhbnNwb3J0IGRpc2FibGVzCisgIC8vIGR0bHNfdHJhbnNw
b3J0cyBlbnRpcmVseSwgdGhlIGJlbG93IGxpbmUgd2lsbCBoYXZlIHRvIGJlIGNoYW5nZWQgdG8g
YWNjb3VudAorICAvLyBmb3IgdGhlIGZhY3QgdGhhdCBkdGxzIHRyYW5zcG9ydHMgbWlnaHQgYmUg
YWJzZW50LgogICBib29sIGFsbF9jb25uZWN0ZWQgPSAhZHRsc190cmFuc3BvcnRzLmVtcHR5KCk7
CiAgIGJvb2wgYWxsX2NvbXBsZXRlZCA9ICFkdGxzX3RyYW5zcG9ydHMuZW1wdHkoKTsKICAgYm9v
bCBhbnlfZ2F0aGVyaW5nID0gZmFsc2U7CiAgIGJvb2wgYWxsX2RvbmVfZ2F0aGVyaW5nID0gIWR0
bHNfdHJhbnNwb3J0cy5lbXB0eSgpOworCisgIHN0ZDo6bWFwPEljZVRyYW5zcG9ydFN0YXRlLCBp
bnQ+IGljZV9zdGF0ZV9jb3VudHM7CisgIHN0ZDo6bWFwPGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRT
dGF0ZSwgaW50PiBkdGxzX3N0YXRlX2NvdW50czsKKwogICBmb3IgKGNvbnN0IGF1dG8mIGR0bHMg
OiBkdGxzX3RyYW5zcG9ydHMpIHsKICAgICBhbnlfZmFpbGVkID0gYW55X2ZhaWxlZCB8fCBkdGxz
LT5pY2VfdHJhbnNwb3J0KCktPkdldFN0YXRlKCkgPT0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JpY2tldDo6SWNlVHJhbnNwb3J0U3RhdGU6OlNUQVRFX0ZBSUxFRDsKQEAg
LTExNDQsNyArMTI5OSwzNSBAQCB2b2lkIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpVcGRhdGVB
Z2dyZWdhdGVTdGF0ZXNfbigpIHsKICAgICBhbGxfZG9uZV9nYXRoZXJpbmcgPQogICAgICAgICBh
bGxfZG9uZV9nYXRoZXJpbmcgJiYgZHRscy0+aWNlX3RyYW5zcG9ydCgpLT5nYXRoZXJpbmdfc3Rh
dGUoKSA9PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OmtJY2VH
YXRoZXJpbmdDb21wbGV0ZTsKKworICAgIGR0bHNfc3RhdGVfY291bnRzW2R0bHMtPmR0bHNfc3Rh
dGUoKV0rKzsKKyAgICBpY2Vfc3RhdGVfY291bnRzW2R0bHMtPmljZV90cmFuc3BvcnQoKS0+R2V0
SWNlVHJhbnNwb3J0U3RhdGUoKV0rKzsKICAgfQorCisgIGZvciAoYXV0byBpdCA9IGpzZXBfdHJh
bnNwb3J0c19ieV9uYW1lXy5iZWdpbigpOworICAgICAgIGl0ICE9IGpzZXBfdHJhbnNwb3J0c19i
eV9uYW1lXy5lbmQoKTsgKytpdCkgeworICAgIGF1dG8ganNlcF90cmFuc3BvcnQgPSBpdC0+c2Vj
b25kLmdldCgpOworICAgIGlmICghanNlcF90cmFuc3BvcnQtPm1lZGlhX3RyYW5zcG9ydCgpKSB7
CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICAvLyBUaGVyZSBpcyBubyAna0ljZUNvbm5l
Y3Rpb25EaXNjb25uZWN0ZWQnLCBzbyB3ZSBvbmx5IG5lZWQgdG8gaGFuZGxlCisgICAgLy8gY29u
bmVjdGVkIGFuZCBjb21wbGV0ZWQuCisgICAgLy8gV2UgdHJlYXQga0Nsb3NlZCBhcyBmYWlsZWQs
IGJlY2F1c2UgaWYgaXQgaGFwcGVucyBiZWZvcmUgc2h1dHRpbmcgZG93bgorICAgIC8vIG1lZGlh
IHRyYW5zcG9ydHMgaXQgbWVhbnMgdGhhdCB0aGVyZSB3YXMgYSBmYWlsdXJlLgorICAgIC8vIE1l
ZGlhVHJhbnNwb3J0SW50ZXJmYWNlIGFsbG93cyB0byBmbGlwIGJhY2sgYW5kIGZvcnRoIGJldHdl
ZW4ga1dyaXRhYmxlCisgICAgLy8gYW5kIGtQZW5kaW5nLCBidXQgdGhlcmUgZG9lcyBub3QgZXhp
c3QgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBkb2VzIHRoYXQsCisgICAgLy8gYW5kIHRoZSBjb250
cmFjdCBvZiBqc2VwIHRyYW5zcG9ydCBjb250cm9sbGVyIGRvZXNuJ3QgcXVpdGUgZXhwZWN0IHRo
YXQuCisgICAgLy8gV2hlbiB0aGlzIGhhcHBlbnMsIHdlIHdvdWxkIGdvIGZyb20gY29ubmVjdGVk
IHRvIGNvbm5lY3Rpbmcgc3RhdGUsIGJ1dAorICAgIC8vIHRoaXMgbWF5IGNoYW5nZSBpbiBmdXR1
cmUuCisgICAgYW55X2ZhaWxlZCB8PSBqc2VwX3RyYW5zcG9ydC0+bWVkaWFfdHJhbnNwb3J0X3N0
YXRlKCkgPT0KKyAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6
a0Nsb3NlZDsKKyAgICBhbGxfY29tcGxldGVkICY9IGpzZXBfdHJhbnNwb3J0LT5tZWRpYV90cmFu
c3BvcnRfc3RhdGUoKSA9PQorICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpNZWRpYVRyYW5z
cG9ydFN0YXRlOjprV3JpdGFibGU7CisgICAgYWxsX2Nvbm5lY3RlZCAmPSBqc2VwX3RyYW5zcG9y
dC0+bWVkaWFfdHJhbnNwb3J0X3N0YXRlKCkgPT0KKyAgICAgICAgICAgICAgICAgICAgIHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlOworICB9CisKICAgaWYgKGFueV9mYWls
ZWQpIHsKICAgICBuZXdfY29ubmVjdGlvbl9zdGF0ZSA9IGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9u
RmFpbGVkOwogICB9IGVsc2UgaWYgKGFsbF9jb21wbGV0ZWQpIHsKQEAgLTExNjAsNiArMTM0Mywx
MjcgQEAgdm9pZCBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6VXBkYXRlQWdncmVnYXRlU3RhdGVz
X24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgIH0KIAorICAvLyBD
b21wdXRlIHRoZSBjdXJyZW50IFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSBhcyBkZXNjcmliZWQgaW4K
KyAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8jZG9tLXJ0Y2ljZWNvbm5lY3Rpb25z
dGF0ZS4KKyAgLy8gVGhlIFBlZXJDb25uZWN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGlu
ZyB0aGUgImNsb3NlZCIgc3RhdGUuCisgIGludCB0b3RhbF9pY2VfY2hlY2tpbmcgPSBpY2Vfc3Rh
dGVfY291bnRzW0ljZVRyYW5zcG9ydFN0YXRlOjprQ2hlY2tpbmddOworICBpbnQgdG90YWxfaWNl
X2Nvbm5lY3RlZCA9IGljZV9zdGF0ZV9jb3VudHNbSWNlVHJhbnNwb3J0U3RhdGU6OmtDb25uZWN0
ZWRdOworICBpbnQgdG90YWxfaWNlX2NvbXBsZXRlZCA9IGljZV9zdGF0ZV9jb3VudHNbSWNlVHJh
bnNwb3J0U3RhdGU6OmtDb21wbGV0ZWRdOworICBpbnQgdG90YWxfaWNlX2ZhaWxlZCA9IGljZV9z
dGF0ZV9jb3VudHNbSWNlVHJhbnNwb3J0U3RhdGU6OmtGYWlsZWRdOworICBpbnQgdG90YWxfaWNl
X2Rpc2Nvbm5lY3RlZCA9CisgICAgICBpY2Vfc3RhdGVfY291bnRzW0ljZVRyYW5zcG9ydFN0YXRl
OjprRGlzY29ubmVjdGVkXTsKKyAgaW50IHRvdGFsX2ljZV9jbG9zZWQgPSBpY2Vfc3RhdGVfY291
bnRzW0ljZVRyYW5zcG9ydFN0YXRlOjprQ2xvc2VkXTsKKyAgaW50IHRvdGFsX2ljZV9uZXcgPSBp
Y2Vfc3RhdGVfY291bnRzW0ljZVRyYW5zcG9ydFN0YXRlOjprTmV3XTsKKyAgaW50IHRvdGFsX2lj
ZSA9IGR0bHNfdHJhbnNwb3J0cy5zaXplKCk7CisKKyAgaWYgKHRvdGFsX2ljZV9mYWlsZWQgPiAw
KSB7CisgICAgLy8gQW55IG9mIHRoZSBSVENJY2VUcmFuc3BvcnRzIGFyZSBpbiB0aGUgImZhaWxl
ZCIgc3RhdGUuCisgICAgbmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlID0gUGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uRmFpbGVkOworICB9IGVsc2UgaWYgKHRvdGFsX2ljZV9k
aXNjb25uZWN0ZWQgPiAwKSB7CisgICAgLy8gQW55IG9mIHRoZSBSVENJY2VUcmFuc3BvcnRzIGFy
ZSBpbiB0aGUgImRpc2Nvbm5lY3RlZCIgc3RhdGUgYW5kIG5vbmUgb2YKKyAgICAvLyB0aGVtIGFy
ZSBpbiB0aGUgImZhaWxlZCIgc3RhdGUuCisgICAgbmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlID0K
KyAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uRGlzY29ubmVj
dGVkOworICB9IGVsc2UgaWYgKHRvdGFsX2ljZV9jaGVja2luZyA+IDApIHsKKyAgICAvLyBBbnkg
b2YgdGhlIFJUQ0ljZVRyYW5zcG9ydHMgYXJlIGluIHRoZSAiY2hlY2tpbmciIHN0YXRlIGFuZCBu
b25lIG9mIHRoZW0KKyAgICAvLyBhcmUgaW4gdGhlICJkaXNjb25uZWN0ZWQiIG9yICJmYWlsZWQi
IHN0YXRlLgorICAgIG5ld19pY2VfY29ubmVjdGlvbl9zdGF0ZSA9IFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkNoZWNraW5nOworICB9IGVsc2UgaWYgKHRvdGFsX2ljZV9j
b21wbGV0ZWQgKyB0b3RhbF9pY2VfY2xvc2VkID09IHRvdGFsX2ljZSAmJgorICAgICAgICAgICAg
IHRvdGFsX2ljZV9jb21wbGV0ZWQgPiAwKSB7CisgICAgLy8gQWxsIFJUQ0ljZVRyYW5zcG9ydHMg
YXJlIGluIHRoZSAiY29tcGxldGVkIiBvciAiY2xvc2VkIiBzdGF0ZSBhbmQgYXQKKyAgICAvLyBs
ZWFzdCBvbmUgb2YgdGhlbSBpcyBpbiB0aGUgImNvbXBsZXRlZCIgc3RhdGUuCisgICAgbmV3X2lj
ZV9jb25uZWN0aW9uX3N0YXRlID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0
aW9uQ29tcGxldGVkOworICB9IGVsc2UgaWYgKHRvdGFsX2ljZV9jb25uZWN0ZWQgKyB0b3RhbF9p
Y2VfY29tcGxldGVkICsgdG90YWxfaWNlX2Nsb3NlZCA9PQorICAgICAgICAgICAgICAgICB0b3Rh
bF9pY2UgJiYKKyAgICAgICAgICAgICB0b3RhbF9pY2VfY29ubmVjdGVkID4gMCkgeworICAgIC8v
IEFsbCBSVENJY2VUcmFuc3BvcnRzIGFyZSBpbiB0aGUgImNvbm5lY3RlZCIsICJjb21wbGV0ZWQi
IG9yICJjbG9zZWQiCisgICAgLy8gc3RhdGUgYW5kIGF0IGxlYXN0IG9uZSBvZiB0aGVtIGlzIGlu
IHRoZSAiY29ubmVjdGVkIiBzdGF0ZS4KKyAgICBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUgPSBQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25Db25uZWN0ZWQ7CisgIH0gZWxz
ZSBpZiAoKHRvdGFsX2ljZV9uZXcgPiAwICYmCisgICAgICAgICAgICAgIHRvdGFsX2ljZV9jaGVj
a2luZyArIHRvdGFsX2ljZV9kaXNjb25uZWN0ZWQgKyB0b3RhbF9pY2VfZmFpbGVkID09CisgICAg
ICAgICAgICAgICAgICAwKSB8fAorICAgICAgICAgICAgIHRvdGFsX2ljZSA9PSB0b3RhbF9pY2Vf
Y2xvc2VkKSB7CisgICAgLy8gQW55IG9mIHRoZSBSVENJY2VUcmFuc3BvcnRzIGFyZSBpbiB0aGUg
Im5ldyIgc3RhdGUgYW5kIG5vbmUgb2YgdGhlbSBhcmUKKyAgICAvLyBpbiB0aGUgImNoZWNraW5n
IiwgImRpc2Nvbm5lY3RlZCIgb3IgImZhaWxlZCIgc3RhdGUsIG9yIGFsbAorICAgIC8vIFJUQ0lj
ZVRyYW5zcG9ydHMgYXJlIGluIHRoZSAiY2xvc2VkIiBzdGF0ZSwgb3IgdGhlcmUgYXJlIG5vIHRy
YW5zcG9ydHMuCisgICAgbmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlID0gUGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uTmV3OworICB9IGVsc2UgeworICAgIFJUQ19OT1RSRUFD
SEVEKCk7CisgIH0KKworICBpZiAoc3RhbmRhcmRpemVkX2ljZV9jb25uZWN0aW9uX3N0YXRlXyAh
PSBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUpIHsKKyAgICBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5l
Y3Rpb25fc3RhdGVfID0gbmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlOworICAgIGludm9rZXJfLkFz
eW5jSW52b2tlPHZvaWQ+KAorICAgICAgICBSVENfRlJPTV9IRVJFLCBzaWduYWxpbmdfdGhyZWFk
XywgW3RoaXMsIG5ld19pY2VfY29ubmVjdGlvbl9zdGF0ZV0geworICAgICAgICAgIFNpZ25hbFN0
YW5kYXJkaXplZEljZUNvbm5lY3Rpb25TdGF0ZShuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUpOwor
ICAgICAgICB9KTsKKyAgfQorCisgIC8vIENvbXB1dGUgdGhlIGN1cnJlbnQgUlRDUGVlckNvbm5l
Y3Rpb25TdGF0ZSBhcyBkZXNjcmliZWQgaW4KKyAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dl
YnJ0Yy8jZG9tLXJ0Y3BlZXJjb25uZWN0aW9uc3RhdGUuCisgIC8vIFRoZSBQZWVyQ29ubmVjdGlv
biBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlICJjbG9zZWQiIHN0YXRlLgorICAvLyBO
b3RlIHRoYXQgImNvbm5lY3RpbmciIGlzIG9ubHkgYSB2YWxpZCBzdGF0ZSBmb3IgRFRMUyB0cmFu
c3BvcnRzIHdoaWxlCisgIC8vICJjaGVja2luZyIsICJjb21wbGV0ZWQiIGFuZCAiZGlzY29ubmVj
dGVkIiBhcmUgb25seSB2YWxpZCBmb3IgSUNFCisgIC8vIHRyYW5zcG9ydHMuCisgIGludCB0b3Rh
bF9jb25uZWN0ZWQgPSB0b3RhbF9pY2VfY29ubmVjdGVkICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGR0bHNfc3RhdGVfY291bnRzW2NyaWNrZXQ6OkRUTFNfVFJBTlNQT1JUX0NPTk5FQ1RFRF07
CisgIGludCB0b3RhbF9kdGxzX2Nvbm5lY3RpbmcgPQorICAgICAgZHRsc19zdGF0ZV9jb3VudHNb
Y3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVElOR107CisgIGludCB0b3RhbF9mYWlsZWQg
PQorICAgICAgdG90YWxfaWNlX2ZhaWxlZCArIGR0bHNfc3RhdGVfY291bnRzW2NyaWNrZXQ6OkRU
TFNfVFJBTlNQT1JUX0ZBSUxFRF07CisgIGludCB0b3RhbF9jbG9zZWQgPQorICAgICAgdG90YWxf
aWNlX2Nsb3NlZCArIGR0bHNfc3RhdGVfY291bnRzW2NyaWNrZXQ6OkRUTFNfVFJBTlNQT1JUX0NM
T1NFRF07CisgIGludCB0b3RhbF9uZXcgPQorICAgICAgdG90YWxfaWNlX25ldyArIGR0bHNfc3Rh
dGVfY291bnRzW2NyaWNrZXQ6OkRUTFNfVFJBTlNQT1JUX05FV107CisgIGludCB0b3RhbF90cmFu
c3BvcnRzID0gdG90YWxfaWNlICogMjsKKworICBpZiAodG90YWxfZmFpbGVkID4gMCkgeworICAg
IC8vIEFueSBvZiB0aGUgUlRDSWNlVHJhbnNwb3J0cyBvciBSVENEdGxzVHJhbnNwb3J0cyBhcmUg
aW4gYSAiZmFpbGVkIiBzdGF0ZS4KKyAgICBuZXdfY29tYmluZWRfc3RhdGUgPSBQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0ZhaWxlZDsKKyAgfSBlbHNlIGlm
ICh0b3RhbF9pY2VfZGlzY29ubmVjdGVkID4gMCAmJgorICAgICAgICAgICAgIHRvdGFsX2R0bHNf
Y29ubmVjdGluZyArIHRvdGFsX2ljZV9jaGVja2luZyA9PSAwKSB7CisgICAgLy8gQW55IG9mIHRo
ZSBSVENJY2VUcmFuc3BvcnRzIG9yIFJUQ0R0bHNUcmFuc3BvcnRzIGFyZSBpbiB0aGUKKyAgICAv
LyAiZGlzY29ubmVjdGVkIiBzdGF0ZSBhbmQgbm9uZSBvZiB0aGVtIGFyZSBpbiB0aGUgImZhaWxl
ZCIgb3IgImNvbm5lY3RpbmciCisgICAgLy8gb3IgImNoZWNraW5nIiBzdGF0ZS4KKyAgICBuZXdf
Y29tYmluZWRfc3RhdGUgPQorICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNv
bm5lY3Rpb25TdGF0ZTo6a0Rpc2Nvbm5lY3RlZDsKKyAgfSBlbHNlIGlmICh0b3RhbF9kdGxzX2Nv
bm5lY3RpbmcgKyB0b3RhbF9pY2VfY2hlY2tpbmcgPiAwKSB7CisgICAgLy8gQW55IG9mIHRoZSBS
VENJY2VUcmFuc3BvcnRzIG9yIFJUQ0R0bHNUcmFuc3BvcnRzIGFyZSBpbiB0aGUgImNvbm5lY3Rp
bmciCisgICAgLy8gb3IgImNoZWNraW5nIiBzdGF0ZSBhbmQgbm9uZSBvZiB0aGVtIGlzIGluIHRo
ZSAiZmFpbGVkIiBzdGF0ZS4KKyAgICBuZXdfY29tYmluZWRfc3RhdGUgPQorICAgICAgICBQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3Rpbmc7Cisg
IH0gZWxzZSBpZiAodG90YWxfY29ubmVjdGVkICsgdG90YWxfaWNlX2NvbXBsZXRlZCArIHRvdGFs
X2Nsb3NlZCA9PQorICAgICAgICAgICAgICAgICB0b3RhbF90cmFuc3BvcnRzICYmCisgICAgICAg
ICAgICAgdG90YWxfY29ubmVjdGVkICsgdG90YWxfaWNlX2NvbXBsZXRlZCA+IDApIHsKKyAgICAv
LyBBbGwgUlRDSWNlVHJhbnNwb3J0cyBhbmQgUlRDRHRsc1RyYW5zcG9ydHMgYXJlIGluIHRoZSAi
Y29ubmVjdGVkIiwKKyAgICAvLyAiY29tcGxldGVkIiBvciAiY2xvc2VkIiBzdGF0ZSBhbmQgYXQg
bGVhc3Qgb25lIG9mIHRoZW0gaXMgaW4gdGhlCisgICAgLy8gImNvbm5lY3RlZCIgb3IgImNvbXBs
ZXRlZCIgc3RhdGUuCisgICAgbmV3X2NvbWJpbmVkX3N0YXRlID0KKyAgICAgICAgUGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDb25uZWN0ZWQ7CisgIH0gZWxz
ZSBpZiAoKHRvdGFsX25ldyA+IDAgJiYgdG90YWxfZHRsc19jb25uZWN0aW5nICsgdG90YWxfaWNl
X2NoZWNraW5nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFs
X2ZhaWxlZCArIHRvdGFsX2ljZV9kaXNjb25uZWN0ZWQgPT0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCkgfHwKKyAgICAgICAgICAgICB0b3RhbF90cmFuc3BvcnRzID09IHRv
dGFsX2Nsb3NlZCkgeworICAgIC8vIEFueSBvZiB0aGUgUlRDSWNlVHJhbnNwb3J0cyBvciBSVENE
dGxzVHJhbnNwb3J0cyBhcmUgaW4gdGhlICJuZXciIHN0YXRlCisgICAgLy8gYW5kIG5vbmUgb2Yg
dGhlIHRyYW5zcG9ydHMgYXJlIGluIHRoZSAiY29ubmVjdGluZyIsICJjaGVja2luZyIsICJmYWls
ZWQiCisgICAgLy8gb3IgImRpc2Nvbm5lY3RlZCIgc3RhdGUsIG9yIGFsbCB0cmFuc3BvcnRzIGFy
ZSBpbiB0aGUgImNsb3NlZCIgc3RhdGUsIG9yCisgICAgLy8gdGhlcmUgYXJlIG5vIHRyYW5zcG9y
dHMuCisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgaWYgbm9uZSBvZiB0aGUgb3RoZXIgY29uZGl0
aW9ucyBob2xkIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZQorICAgIC8vIHRydWUuCisgICAgbmV3
X2NvbWJpbmVkX3N0YXRlID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9u
U3RhdGU6OmtOZXc7CisgIH0gZWxzZSB7CisgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgfQorCisg
IGlmIChjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXyAhPSBuZXdfY29tYmluZWRfc3RhdGUpIHsK
KyAgICBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXyA9IG5ld19jb21iaW5lZF9zdGF0ZTsKKyAg
ICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBzaWduYWxpbmdfdGhy
ZWFkXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcywgbmV3X2NvbWJpbmVk
X3N0YXRlXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYWxDb25uZWN0
aW9uU3RhdGUobmV3X2NvbWJpbmVkX3N0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgfQorCiAgIGlmIChhbGxfZG9uZV9nYXRoZXJpbmcpIHsKICAgICBuZXdfZ2F0
aGVyaW5nX3N0YXRlID0gY3JpY2tldDo6a0ljZUdhdGhlcmluZ0NvbXBsZXRlOwogICB9IGVsc2Ug
aWYgKGFueV9nYXRoZXJpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9sbGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJv
bGxlci5oCmluZGV4IGQ5MzQwY2YzNTdkMGUxMzQ1ZGI2MzU4OTNlMmZiMjdhMzQ0NTE0ODAuLjNl
ZDdmNWY0MzNiN2E2MjUwYjM0NWVkOTYwODZmZTJmMzgzZDMwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRjb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvanNlcHRyYW5zcG9ydGNvbnRyb2xsZXIuaApAQCAtMTgsNiArMTgsOCBAQAogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9jYW5kaWRhdGUuaCIKKyNpbmNsdWRlICJhcGkvY3J5
cHRvL2NyeXB0b29wdGlvbnMuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVy
ZmFjZS5oIgogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgogI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCiAjaW5jbHVkZSAibWVk
aWEvc2N0cC9zY3RwdHJhbnNwb3J0aW50ZXJuYWwuaCIKQEAgLTMyLDcgKzM0LDYgQEAKICNpbmNs
dWRlICJydGNfYmFzZS9hc3luY2ludm9rZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1
Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90
aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CkBAIC01Niw3
ICs1Nyw4IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6
Omhhc19zbG90czw+IHsKICAgICB2aXJ0dWFsIGJvb2wgT25UcmFuc3BvcnRDaGFuZ2VkKAogICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlkLAogICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcm5h
bCogcnRwX3RyYW5zcG9ydCwKLSAgICAgICAgY3JpY2tldDo6RHRsc1RyYW5zcG9ydEludGVybmFs
KiBkdGxzX3RyYW5zcG9ydCkgPSAwOworICAgICAgICBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50
ZXJuYWwqIGR0bHNfdHJhbnNwb3J0LAorICAgICAgICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSog
bWVkaWFfdHJhbnNwb3J0KSA9IDA7CiAgIH07CiAKICAgc3RydWN0IENvbmZpZyB7CkBAIC02Nyw3
ICs2OSw3IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6
Omhhc19zbG90czw+IHsKICAgICBydGM6OlNTTFByb3RvY29sVmVyc2lvbiBzc2xfbWF4X3ZlcnNp
b24gPSBydGM6OlNTTF9QUk9UT0NPTF9EVExTXzEyOwogICAgIC8vIHxjcnlwdG9fb3B0aW9uc3wg
aXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgY3JlYXRlZCBEVExTIHRyYW5zcG9ydHMKICAgICAvLyBu
ZWdvdGlhdGUgR0NNIGNyeXB0byBzdWl0ZXMgb3Igbm90LgotICAgIHJ0Yzo6Q3J5cHRvT3B0aW9u
cyBjcnlwdG9fb3B0aW9uczsKKyAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlv
bnM7CiAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkJ1bmRsZVBvbGljeSBidW5kbGVfcG9s
aWN5ID0KICAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtCdW5kbGVQb2xpY3lCYWxh
bmNlZDsKICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UnRjcE11eFBvbGljeSBydGNwX211
eF9wb2xpY3kgPQpAQCAtNzksNiArODEsMTMgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xs
ZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIE9ic2VydmVyKiB0cmFuc3Bv
cnRfb2JzZXJ2ZXIgPSBudWxscHRyOwogICAgIGJvb2wgYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1z
ID0gZmFsc2U7CiAgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZyA9IG51bGxwdHI7CisKKyAgICAv
LyBPcHRpb25hbCBtZWRpYSB0cmFuc3BvcnQgZmFjdG9yeSAoZXhwZXJpbWVudGFsKS4gSWYgcHJv
dmlkZWQgaXQgd2lsbCBiZQorICAgIC8vIHVzZWQgdG8gY3JlYXRlIG1lZGlhX3RyYW5zcG9ydCBh
bmQgd2lsbCBiZSB1c2VkIHRvIHNlbmQgLyByZWNlaXZlCisgICAgLy8gYXVkaW8gYW5kIHZpZGVv
IGZyYW1lcyBpbnN0ZWFkIG9mIFJUUC4gTm90ZSB0aGF0IGN1cnJlbnRseQorICAgIC8vIG1lZGlh
X3RyYW5zcG9ydCBjby1leGlzdHMgd2l0aCBSVFAgLyBSVENQIHRyYW5zcG9ydHMgYW5kIHVzZXMg
dGhlIHNhbWUKKyAgICAvLyB1bmRlcmx5aW5nIElDRSB0cmFuc3BvcnQuCisgICAgTWVkaWFUcmFu
c3BvcnRGYWN0b3J5KiBtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9IG51bGxwdHI7CiAgIH07CiAK
ICAgLy8gVGhlIElDRSByZWxhdGVkIGV2ZW50cyBhcmUgc2lnbmFsZWQgb24gdGhlIHxzaWduYWxp
bmdfdGhyZWFkfC4KQEAgLTEwOCw2ICsxMTcsOSBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Q29udHJv
bGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIGNyaWNrZXQ6OkR0bHNUcmFu
c3BvcnRJbnRlcm5hbCogR2V0UnRjcER0bHNUcmFuc3BvcnQoCiAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgbWlkKSBjb25zdDsKIAorICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogR2V0TWVkaWFU
cmFuc3BvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCkgY29uc3Q7CisgIE1lZGlhVHJhbnNwb3J0
U3RhdGUgR2V0TWVkaWFUcmFuc3BvcnRTdGF0ZShjb25zdCBzdGQ6OnN0cmluZyYgbWlkKSBjb25z
dDsKKwogICAvKioqKioqKioqKioqKioqKioqKioqCiAgICAqIElDRS1yZWxhdGVkIG1ldGhvZHMK
ICAgICoqKioqKioqKioqKioqKioqKioqLwpAQCAtMTU3LDYgKzE2OSwxMiBAQCBjbGFzcyBKc2Vw
VHJhbnNwb3J0Q29udHJvbGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAKICAg
dm9pZCBTZXRBY3RpdmVSZXNldFNydHBQYXJhbXMoYm9vbCBhY3RpdmVfcmVzZXRfc3J0cF9wYXJh
bXMpOwogCisgIC8vIEFsbG93cyB0byBvdmVyd3JpdGUgdGhlIHNldHRpbmdzIGZyb20gY29uZmln
LiBZb3UgbWF5IHNldCBvciByZXNldCB0aGUKKyAgLy8gbWVkaWEgdHJhbnNwb3J0IGZhY3Rvcnkg
b24gdGhlIGpzZXAgdHJhbnNwb3J0IGNvbnRyb2xsZXIsIGFzIGxvbmcgYXMgeW91CisgIC8vIGRp
ZCBub3QgY2FsbCAnR2V0TWVkaWFUcmFuc3BvcnQnIG9yICdNYXliZUNyZWF0ZUpzZXBUcmFuc3Bv
cnQnLiBPbmNlIEpzZXAKKyAgLy8gdHJhbnNwb3J0IGlzIGNyZWF0ZWQsIHlvdSBjYW4ndCBjaGFu
Z2UgdGhpcyBzZXR0aW5nLgorICB2b2lkIFNldE1lZGlhVHJhbnNwb3J0RmFjdG9yeShNZWRpYVRy
YW5zcG9ydEZhY3RvcnkqIG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KTsKKwogICAvLyBBbGwgb2Yg
dGhlc2Ugc2lnbmFscyBhcmUgZmlyZWQgb24gdGhlIHNpZ25hbGluZyB0aHJlYWQuCiAKICAgLy8g
SWYgYW55IHRyYW5zcG9ydCBmYWlsZWQgPT4gZmFpbGVkLApAQCAtMTY1LDYgKzE4MywxMSBAQCBj
bGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8
PiB7CiAgIC8vIEVsc2UgPT4gY29ubmVjdGluZwogICBzaWdzbG90OjpzaWduYWwxPGNyaWNrZXQ6
OkljZUNvbm5lY3Rpb25TdGF0ZT4gU2lnbmFsSWNlQ29ubmVjdGlvblN0YXRlOwogCisgIHNpZ3Ns
b3Q6OnNpZ25hbDE8UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU+
CisgICAgICBTaWduYWxDb25uZWN0aW9uU3RhdGU7CisgIHNpZ3Nsb3Q6OnNpZ25hbDE8UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZT4KKyAgICAgIFNpZ25hbFN0YW5k
YXJkaXplZEljZUNvbm5lY3Rpb25TdGF0ZTsKKwogICAvLyBJZiBhbGwgdHJhbnNwb3J0cyBkb25l
IGdhdGhlcmluZyA9PiBjb21wbGV0ZSwKICAgLy8gRWxzZSBpZiBhbnkgYXJlIGdhdGhlcmluZyA9
PiBnYXRoZXJpbmcsCiAgIC8vIEVsc2UgPT4gbmV3CkBAIC0xNzksNiArMjAyLDggQEAgY2xhc3Mg
SnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewog
CiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8cnRjOjpTU0xIYW5kc2hha2VFcnJvcj4gU2lnbmFsRHRsc0hh
bmRzaGFrZUVycm9yOwogCisgIHNpZ3Nsb3Q6OnNpZ25hbDw+IFNpZ25hbE1lZGlhVHJhbnNwb3J0
U3RhdGVDaGFuZ2VkOworCiAgcHJpdmF0ZToKICAgUlRDRXJyb3IgQXBwbHlEZXNjcmlwdGlvbl9u
KGJvb2wgbG9jYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBUeXBlIHR5cGUs
CkBAIC0yNDEsNyArMjY2LDIwIEBAIGNsYXNzIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyIDogcHVi
bGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgY3JpY2tldDo6SnNlcFRyYW5zcG9ydCogR2V0
SnNlcFRyYW5zcG9ydEJ5TmFtZSgKICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRf
bmFtZSk7CiAKLSAgUlRDRXJyb3IgTWF5YmVDcmVhdGVKc2VwVHJhbnNwb3J0KGNvbnN0IGNyaWNr
ZXQ6OkNvbnRlbnRJbmZvJiBjb250ZW50X2luZm8pOworICAvLyBDcmVhdGVzIGpzZXAgdHJhbnNw
b3J0LiBOb29wIGlmIHRyYW5zcG9ydCBpcyBhbHJlYWR5IGNyZWF0ZWQuCisgIC8vIFRyYW5zcG9y
dCBpcyBjcmVhdGVkIGVpdGhlciBkdXJpbmcgU2V0TG9jYWxEZXNjcmlwdGlvbiAofGxvY2FsfCA9
PSB0cnVlKSBvcgorICAvLyBkdXJpbmcgU2V0UmVtb3RlRGVzY3JpcHRpb24gKHxsb2NhbHwgPT0g
ZmFsc2UpLiBQYXNzaW5nIHxsb2NhbHwgaGVscHMgdG8KKyAgLy8gZGlmZmVyZW50aWF0ZSBpbml0
aWF0b3IgKGNhbGxlcikgZnJvbSBhbnN3ZXJlciAoY2FsbGVlKS4KKyAgUlRDRXJyb3IgTWF5YmVD
cmVhdGVKc2VwVHJhbnNwb3J0KGJvb2wgbG9jYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjcmlja2V0OjpDb250ZW50SW5mbyYgY29udGVudF9pbmZvKTsKKwor
ICAvLyBDcmVhdGVzIG1lZGlhIHRyYW5zcG9ydCBpZiBjb25maWcgd2FudHMgdG8gdXNlIGl0LCBh
bmQgcHJlLXNoYXJlZCBrZXkgaXMKKyAgLy8gcHJvdmlkZWQgaW4gY29udGVudCBpbmZvLiBJdCBt
b2RpZmllcyB0aGUgY29uZmlnIHRvIGRpc2FibGUgbWVkaWEgdHJhbnNwb3J0CisgIC8vIGlmIHBy
ZS1zaGFyZWQga2V5IGlzIG5vdCBwcm92aWRlZC4KKyAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6
TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+IE1heWJlQ3JlYXRlTWVkaWFUcmFuc3BvcnQoCisgICAg
ICBjb25zdCBjcmlja2V0OjpDb250ZW50SW5mbyYgY29udGVudF9pbmZvLAorICAgICAgYm9vbCBs
b2NhbCwKKyAgICAgIGNyaWNrZXQ6OkljZVRyYW5zcG9ydEludGVybmFsKiBpY2VfdHJhbnNwb3J0
KTsKICAgdm9pZCBNYXliZURlc3Ryb3lKc2VwVHJhbnNwb3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiBt
aWQpOwogICB2b2lkIERlc3Ryb3lBbGxKc2VwVHJhbnNwb3J0c19uKCk7CiAKQEAgLTI4NSw2ICsz
MjMsNyBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlciA6IHB1YmxpYyBzaWdzbG90Ojpo
YXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNyaWNrZXQ6OkNhbmRpZGF0ZXMmIGNhbmRpZGF0ZXMpOwogICB2b2lkIE9uVHJhbnNwb3J0Um9s
ZUNvbmZsaWN0X24oY3JpY2tldDo6SWNlVHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCk7CiAg
IHZvaWQgT25UcmFuc3BvcnRTdGF0ZUNoYW5nZWRfbihjcmlja2V0OjpJY2VUcmFuc3BvcnRJbnRl
cm5hbCogdHJhbnNwb3J0KTsKKyAgdm9pZCBPbk1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkX24o
KTsKIAogICB2b2lkIFVwZGF0ZUFnZ3JlZ2F0ZVN0YXRlc19uKCk7CiAKQEAgLTMwMSw5ICszNDAs
MTYgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFz
X3Nsb3RzPD4gewogICAvLyAoQmFzZUNoYW5uZWwvU2N0cFRyYW5zcG9ydCkgYW5kIHRoZSBKc2Vw
VHJhbnNwb3J0IHVuZGVybmVhdGguCiAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBjcmlja2V0OjpK
c2VwVHJhbnNwb3J0Kj4gbWlkX3RvX3RyYW5zcG9ydF87CiAKLSAgLy8gQWdncmVnYXRlIHN0YXRl
IGZvciBUcmFuc3BvcnRzLgorICAvLyBBZ2dyZWdhdGUgc3RhdGVzIGZvciBUcmFuc3BvcnRzLgor
ICAvLyBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25fc3RhdGVfIGlzIGludGVuZGVkIHRvIHJl
cGxhY2UKKyAgLy8gaWNlX2Nvbm5lY3Rpb25fc3RhdGUsIHNlZSBidWdzLndlYnJ0Yy5vcmcvOTMw
OAogICBjcmlja2V0OjpJY2VDb25uZWN0aW9uU3RhdGUgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfID0K
ICAgICAgIGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGluZzsKKyAgUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZQorICAgICAgc3RhbmRhcmRpemVkX2ljZV9j
b25uZWN0aW9uX3N0YXRlXyA9CisgICAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJ
Y2VDb25uZWN0aW9uTmV3OworICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rp
b25TdGF0ZSBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXyA9CisgICAgICBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a05ldzsKICAgY3JpY2tldDo6SWNlR2F0
aGVyaW5nU3RhdGUgaWNlX2dhdGhlcmluZ19zdGF0ZV8gPSBjcmlja2V0OjprSWNlR2F0aGVyaW5n
TmV3OwogCiAgIENvbmZpZyBjb25maWdfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydGNvbnRyb2xsZXJfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2Vw
dHJhbnNwb3J0Y29udHJvbGxlcl91bml0dGVzdC5jYwppbmRleCA2Zjg2OTNiZWE3YTliNTcxNTAy
NThkMDQ4NmMwYTdmMjRlZWZiM2Y3Li4xMjlkMjJhNGZjYzg0NzMwZTFmOTliN2E4NTRlOTY3Y2Ey
ZWY5YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJvbGxlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJv
bGxlcl91bml0dGVzdC5jYwpAQCAtMTEsNyArMTEsOCBAQAogI2luY2x1ZGUgPG1hcD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAKLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRl
ICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgorI2luY2x1ZGUgImFwaS90ZXN0L2Zh
a2VfbWVkaWFfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvZmFrZWR0bHN0cmFuc3Bv
cnQuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9mYWtlaWNldHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAi
cDJwL2Jhc2UvdHJhbnNwb3J0ZmFjdG9yeWludGVyZmFjZS5oIgpAQCAtNDEsNiArNDIsMjAgQEAg
c3RhdGljIGNvbnN0IGNoYXIga0RhdGFNaWQxW10gPSAiZGF0YTEiOwogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIAorbmFtZXNwYWNlIHsKKworLy8gTWVkaWEgdHJhbnNwb3J0IGZhY3RvcnkgcmVxdWly
ZXMgY3J5cHRvIHNldHRpbmdzIHRvIGJlIHByZXNlbnQgaW4gb3JkZXIgdG8KKy8vIGNyZWF0ZSBt
ZWRpYSB0cmFuc3BvcnQuCit2b2lkIEFkZENyeXB0b1NldHRpbmdzKGNyaWNrZXQ6OlNlc3Npb25E
ZXNjcmlwdGlvbiogZGVzY3JpcHRpb24pIHsKKyAgZm9yIChhdXRvJiBjb250ZW50IDogZGVzY3Jp
cHRpb24tPmNvbnRlbnRzKCkpIHsKKyAgICBjb250ZW50Lm1lZGlhX2Rlc2NyaXB0aW9uKCktPkFk
ZENyeXB0byhjcmlja2V0OjpDcnlwdG9QYXJhbXMoCisgICAgICAgIC8qdD0qLzAsIHN0ZDo6c3Ry
aW5nKHJ0Yzo6Q1NfQUVTX0NNXzEyOF9ITUFDX1NIQTFfODApLAorICAgICAgICAiaW5saW5lOllV
SkRaR1ZtWjJocFNrdE1iVzlRVVhKelZIVldkM2w2TVRJek5EVTIiLCAiIikpOworICB9Cit9CisK
K30gIC8vIG5hbWVzcGFjZQorCiBjbGFzcyBGYWtlVHJhbnNwb3J0RmFjdG9yeSA6IHB1YmxpYyBj
cmlja2V0OjpUcmFuc3BvcnRGYWN0b3J5SW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHN0ZDo6dW5p
cXVlX3B0cjxjcmlja2V0OjpJY2VUcmFuc3BvcnRJbnRlcm5hbD4gQ3JlYXRlSWNlVHJhbnNwb3J0
KApAQCAtNTIsNyArNjcsNyBAQCBjbGFzcyBGYWtlVHJhbnNwb3J0RmFjdG9yeSA6IHB1YmxpYyBj
cmlja2V0OjpUcmFuc3BvcnRGYWN0b3J5SW50ZXJmYWNlIHsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8
Y3JpY2tldDo6RHRsc1RyYW5zcG9ydEludGVybmFsPiBDcmVhdGVEdGxzVHJhbnNwb3J0KAogICAg
ICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkljZVRyYW5zcG9ydEludGVybmFsPiBpY2UsCi0g
ICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSBvdmVycmlkZSB7
CisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSBvdmVy
cmlkZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkZha2VJY2VUcmFuc3BvcnQ+IGZh
a2VfaWNlKAogICAgICAgICBzdGF0aWNfY2FzdDxjcmlja2V0OjpGYWtlSWNlVHJhbnNwb3J0Kj4o
aWNlLnJlbGVhc2UoKSkpOwogICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlRHRsc1Ry
YW5zcG9ydD4oc3RkOjptb3ZlKGZha2VfaWNlKSk7CkBAIC04NCw2ICs5OSwxMCBAQCBjbGFzcyBK
c2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QgOiBwdWJsaWMgSnNlcFRyYW5zcG9ydENvbnRyb2xs
ZXI6Ok9ic2VydmVyLAogICB2b2lkIENvbm5lY3RUcmFuc3BvcnRDb250cm9sbGVyU2lnbmFscygp
IHsKICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPlNpZ25hbEljZUNvbm5lY3Rpb25TdGF0ZS5j
b25uZWN0KAogICAgICAgICB0aGlzLCAmSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0OjpPbkNv
bm5lY3Rpb25TdGF0ZSk7CisgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TaWduYWxTdGFuZGFy
ZGl6ZWRJY2VDb25uZWN0aW9uU3RhdGUuY29ubmVjdCgKKyAgICAgICAgdGhpcywgJkpzZXBUcmFu
c3BvcnRDb250cm9sbGVyVGVzdDo6T25TdGFuZGFyZGl6ZWRJY2VDb25uZWN0aW9uU3RhdGUpOwor
ICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsQ29ubmVjdGlvblN0YXRlLmNvbm5lY3Qo
CisgICAgICAgIHRoaXMsICZKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3Q6Ok9uQ29tYmluZWRD
b25uZWN0aW9uU3RhdGUpOwogICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsSWNlR2F0
aGVyaW5nU3RhdGUuY29ubmVjdCgKICAgICAgICAgdGhpcywgJkpzZXBUcmFuc3BvcnRDb250cm9s
bGVyVGVzdDo6T25HYXRoZXJpbmdTdGF0ZSk7CiAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5T
aWduYWxJY2VDYW5kaWRhdGVzR2F0aGVyZWQuY29ubmVjdCgKQEAgLTE3MCw3ICsxODksNyBAQCBj
bGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QgOiBwdWJsaWMgSnNlcFRyYW5zcG9ydENv
bnRyb2xsZXI6Ok9ic2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpzY29wZWRf
cmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+IGNlcnQpIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
cnRjOjpTU0xGaW5nZXJwcmludD4gZmluZ2VycHJpbnQ7CiAgICAgaWYgKGNlcnQpIHsKLSAgICAg
IGZpbmdlcnByaW50LnJlc2V0KHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0aWZp
Y2F0ZShjZXJ0KSk7CisgICAgICBmaW5nZXJwcmludCA9IHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNy
ZWF0ZUZyb21DZXJ0aWZpY2F0ZSgqY2VydCk7CiAgICAgfQogCiAgICAgY3JpY2tldDo6VHJhbnNw
b3J0RGVzY3JpcHRpb24gdHJhbnNwb3J0X2Rlc2Moc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCks
CkBAIC0yNDMsNiArMjYyLDI0IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCA6
IHB1YmxpYyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6T2JzZXJ2ZXIsCiAgICAgKytjb25uZWN0
aW9uX3N0YXRlX3NpZ25hbF9jb3VudF87CiAgIH0KIAorICB2b2lkIE9uU3RhbmRhcmRpemVkSWNl
Q29ubmVjdGlvblN0YXRlKAorICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5l
Y3Rpb25TdGF0ZSBzdGF0ZSkgeworICAgIGlmICghc2lnbmFsaW5nX3RocmVhZF8tPklzQ3VycmVu
dCgpKSB7CisgICAgICBzaWduYWxlZF9vbl9ub25fc2lnbmFsaW5nX3RocmVhZF8gPSB0cnVlOwor
ICAgIH0KKyAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV8gPSBzdGF0ZTsKKyAgICArK2ljZV9jb25u
ZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF87CisgIH0KKworICB2b2lkIE9uQ29tYmluZWRDb25u
ZWN0aW9uU3RhdGUoCisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rp
b25TdGF0ZSBzdGF0ZSkgeworICAgIGlmICghc2lnbmFsaW5nX3RocmVhZF8tPklzQ3VycmVudCgp
KSB7CisgICAgICBzaWduYWxlZF9vbl9ub25fc2lnbmFsaW5nX3RocmVhZF8gPSB0cnVlOworICAg
IH0KKyAgICBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXyA9IHN0YXRlOworICAgICsrY29tYmlu
ZWRfY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfOworICB9CisKICAgdm9pZCBPbkdhdGhl
cmluZ1N0YXRlKGNyaWNrZXQ6OkljZUdhdGhlcmluZ1N0YXRlIHN0YXRlKSB7CiAgICAgaWYgKCFz
aWduYWxpbmdfdGhyZWFkXy0+SXNDdXJyZW50KCkpIHsKICAgICAgIHNpZ25hbGVkX29uX25vbl9z
aWduYWxpbmdfdGhyZWFkXyA9IHRydWU7CkBAIC0yNjIsMzEgKzI5OSwzNyBAQCBjbGFzcyBKc2Vw
VHJhbnNwb3J0Q29udHJvbGxlclRlc3QgOiBwdWJsaWMgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6
Ok9ic2VydmVyLAogICB9CiAKICAgLy8gSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok9ic2VydmVy
IG92ZXJyaWRlcy4KLSAgYm9vbCBPblRyYW5zcG9ydENoYW5nZWQoCi0gICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgbWlkLAotICAgICAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQs
Ci0gICAgICBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0KSBv
dmVycmlkZSB7CisgIGJvb2wgT25UcmFuc3BvcnRDaGFuZ2VkKGNvbnN0IHN0ZDo6c3RyaW5nJiBt
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBf
dHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpEdGxzVHJhbnNw
b3J0SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBN
ZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KSBvdmVycmlkZSB7CiAgICAg
Y2hhbmdlZF9ydHBfdHJhbnNwb3J0X2J5X21pZF9bbWlkXSA9IHJ0cF90cmFuc3BvcnQ7CiAgICAg
Y2hhbmdlZF9kdGxzX3RyYW5zcG9ydF9ieV9taWRfW21pZF0gPSBkdGxzX3RyYW5zcG9ydDsKKyAg
ICBjaGFuZ2VkX21lZGlhX3RyYW5zcG9ydF9ieV9taWRfW21pZF0gPSBtZWRpYV90cmFuc3BvcnQ7
CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICAvLyBJbmZvcm1hdGlvbiByZWNlaXZlZCBmcm9t
IHNpZ25hbHMgZnJvbSB0cmFuc3BvcnQgY29udHJvbGxlci4KICAgY3JpY2tldDo6SWNlQ29ubmVj
dGlvblN0YXRlIGNvbm5lY3Rpb25fc3RhdGVfID0KICAgICAgIGNyaWNrZXQ6OmtJY2VDb25uZWN0
aW9uQ29ubmVjdGluZzsKKyAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25T
dGF0ZSBpY2VfY29ubmVjdGlvbl9zdGF0ZV8gPQorICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OmtJY2VDb25uZWN0aW9uTmV3OworICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNv
bm5lY3Rpb25TdGF0ZSBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXyA9CisgICAgICBQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a05ldzsKICAgYm9vbCByZWNl
aXZpbmdfID0gZmFsc2U7CiAgIGNyaWNrZXQ6OkljZUdhdGhlcmluZ1N0YXRlIGdhdGhlcmluZ19z
dGF0ZV8gPSBjcmlja2V0OjprSWNlR2F0aGVyaW5nTmV3OwogICAvLyB0cmFuc3BvcnRfbmFtZSA9
PiBjYW5kaWRhdGVzCiAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBDYW5kaWRhdGVzPiBjYW5kaWRh
dGVzXzsKICAgLy8gQ291bnRzIG9mIGVhY2ggc2lnbmFsIGVtaXR0ZWQuCiAgIGludCBjb25uZWN0
aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8gPSAwOworICBpbnQgaWNlX2Nvbm5lY3Rpb25fc3RhdGVf
c2lnbmFsX2NvdW50XyA9IDA7CisgIGludCBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlX3NpZ25h
bF9jb3VudF8gPSAwOwogICBpbnQgcmVjZWl2aW5nX3NpZ25hbF9jb3VudF8gPSAwOwogICBpbnQg
Z2F0aGVyaW5nX3N0YXRlX3NpZ25hbF9jb3VudF8gPSAwOwogICBpbnQgY2FuZGlkYXRlc19zaWdu
YWxfY291bnRfID0gMDsKIAogICAvLyB8bmV0d29ya190aHJlYWRffCBzaG91bGQgYmUgZGVzdHJv
eWVkIGFmdGVyIHx0cmFuc3BvcnRfY29udHJvbGxlcl98CiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6
OlRocmVhZD4gbmV0d29ya190aHJlYWRfOwotICBzdGQ6OnVuaXF1ZV9wdHI8SnNlcFRyYW5zcG9y
dENvbnRyb2xsZXI+IHRyYW5zcG9ydF9jb250cm9sbGVyXzsKICAgc3RkOjp1bmlxdWVfcHRyPEZh
a2VUcmFuc3BvcnRGYWN0b3J5PiBmYWtlX3RyYW5zcG9ydF9mYWN0b3J5XzsKICAgcnRjOjpUaHJl
YWQqIGNvbnN0IHNpZ25hbGluZ190aHJlYWRfID0gbnVsbHB0cjsKICAgYm9vbCBzaWduYWxlZF9v
bl9ub25fc2lnbmFsaW5nX3RocmVhZF8gPSBmYWxzZTsKQEAgLTI5NSw2ICszMzgsMTIgQEAgY2xh
c3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0IDogcHVibGljIEpzZXBUcmFuc3BvcnRDb250
cm9sbGVyOjpPYnNlcnZlciwKICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIFJ0cFRyYW5zcG9ydElu
dGVybmFsKj4gY2hhbmdlZF9ydHBfdHJhbnNwb3J0X2J5X21pZF87CiAgIHN0ZDo6bWFwPHN0ZDo6
c3RyaW5nLCBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqPgogICAgICAgY2hhbmdlZF9k
dGxzX3RyYW5zcG9ydF9ieV9taWRfOworICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgTWVkaWFUcmFu
c3BvcnRJbnRlcmZhY2UqPgorICAgICAgY2hhbmdlZF9tZWRpYV90cmFuc3BvcnRfYnlfbWlkXzsK
KworICAvLyBUcmFuc3BvcnQgY29udHJvbGxlciBuZWVkcyB0byBiZSBkZXN0cm95ZWQgZmlyc3Qs
IGJlY2F1c2UgaXQgbWF5IGlzc3VlCisgIC8vIGNhbGxiYWNrcyB0aGF0IG1vZGlmeSB0aGUgY2hh
bmdlZF8qX2J5X21pZCBpbiB0aGUgZGVzdHJ1Y3Rvci4KKyAgc3RkOjp1bmlxdWVfcHRyPEpzZXBU
cmFuc3BvcnRDb250cm9sbGVyPiB0cmFuc3BvcnRfY29udHJvbGxlcl87CiB9OwogCiBURVNUX0Yo
SnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LCBHZXRSdHBUcmFuc3BvcnQpIHsKQEAgLTM0MSw2
ICszOTAsMTE4IEBAIFRFU1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIEdldER0bHNU
cmFuc3BvcnRXaXRoUnRjcE11eCkgewogICBFWFBFQ1RfRVEobnVsbHB0ciwgdHJhbnNwb3J0X2Nv
bnRyb2xsZXJfLT5HZXRSdGNwRHRsc1RyYW5zcG9ydChrQXVkaW9NaWQxKSk7CiAgIEVYUEVDVF9O
RShudWxscHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0bHNUcmFuc3BvcnQoa1ZpZGVv
TWlkMSkpOwogICBFWFBFQ1RfRVEobnVsbHB0ciwgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRS
dGNwRHRsc1RyYW5zcG9ydChrVmlkZW9NaWQxKSk7CisgIEVYUEVDVF9FUShudWxscHRyLCB0cmFu
c3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKK30KKwor
VEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgR2V0TWVkaWFUcmFuc3BvcnRJbkNh
bGxlcikgeworICBGYWtlTWVkaWFUcmFuc3BvcnRGYWN0b3J5IGZha2VfbWVkaWFfdHJhbnNwb3J0
X2ZhY3Rvcnk7CisgIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpDb25maWcgY29uZmlnOworCisg
IGNvbmZpZy5ydGNwX211eF9wb2xpY3kgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a1J0Y3BN
dXhQb2xpY3lOZWdvdGlhdGU7CisgIGNvbmZpZy5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9ICZm
YWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5OworICBDcmVhdGVKc2VwVHJhbnNwb3J0Q29udHJv
bGxlcihjb25maWcpOworICBhdXRvIGRlc2NyaXB0aW9uID0gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0
aW9uV2l0aG91dEJ1bmRsZSgpOworICBBZGRDcnlwdG9TZXR0aW5ncyhkZXNjcmlwdGlvbi5nZXQo
KSk7CisKKyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0X2NvbnRyb2xsZXJfCisgICAgICAgICAgICAg
ICAgICAtPlNldExvY2FsRGVzY3JpcHRpb24oU2RwVHlwZTo6a09mZmVyLCBkZXNjcmlwdGlvbi5n
ZXQoKSkKKyAgICAgICAgICAgICAgICAgIC5vaygpKTsKKworICBGYWtlTWVkaWFUcmFuc3BvcnQq
IG1lZGlhX3RyYW5zcG9ydCA9IHN0YXRpY19jYXN0PEZha2VNZWRpYVRyYW5zcG9ydCo+KAorICAg
ICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChrQXVkaW9NaWQxKSk7
CisKKyAgQVNTRVJUX05FKG51bGxwdHIsIG1lZGlhX3RyYW5zcG9ydCk7CisKKyAgLy8gQWZ0ZXIg
U2V0TG9jYWxEZXNjcmlwdGlvbiwgbWVkaWEgdHJhbnNwb3J0IHNob3VsZCBiZSBjcmVhdGVkIGFz
IGNhbGxlci4KKyAgRVhQRUNUX1RSVUUobWVkaWFfdHJhbnNwb3J0LT5pc19jYWxsZXIoKSk7Cisg
IEVYUEVDVF9UUlVFKG1lZGlhX3RyYW5zcG9ydC0+cHJlX3NoYXJlZF9rZXkoKS5oYXNfdmFsdWUo
KSk7CisKKyAgLy8gUmV0dXJuIG51bGxwdHIgZm9yIG5vbi1leGlzdGluZyBtaWRzLgorICBFWFBF
Q1RfRVEobnVsbHB0ciwgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChr
VmlkZW9NaWQyKSk7Cit9CisKK1RFU1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIEdl
dE1lZGlhVHJhbnNwb3J0SW5DYWxsZWUpIHsKKyAgRmFrZU1lZGlhVHJhbnNwb3J0RmFjdG9yeSBm
YWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5OworICBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6
Q29uZmlnIGNvbmZpZzsKKworICBjb25maWcucnRjcF9tdXhfcG9saWN5ID0gUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OmtSdGNwTXV4UG9saWN5TmVnb3RpYXRlOworICBjb25maWcubWVkaWFfdHJh
bnNwb3J0X2ZhY3RvcnkgPSAmZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeTsKKyAgQ3JlYXRl
SnNlcFRyYW5zcG9ydENvbnRyb2xsZXIoY29uZmlnKTsKKyAgYXV0byBkZXNjcmlwdGlvbiA9IENy
ZWF0ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhvdXRCdW5kbGUoKTsKKyAgQWRkQ3J5cHRvU2V0dGlu
Z3MoZGVzY3JpcHRpb24uZ2V0KCkpOworICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnRfY29udHJvbGxl
cl8KKyAgICAgICAgICAgICAgICAgIC0+U2V0UmVtb3RlRGVzY3JpcHRpb24oU2RwVHlwZTo6a09m
ZmVyLCBkZXNjcmlwdGlvbi5nZXQoKSkKKyAgICAgICAgICAgICAgICAgIC5vaygpKTsKKworICBG
YWtlTWVkaWFUcmFuc3BvcnQqIG1lZGlhX3RyYW5zcG9ydCA9IHN0YXRpY19jYXN0PEZha2VNZWRp
YVRyYW5zcG9ydCo+KAorICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5z
cG9ydChrQXVkaW9NaWQxKSk7CisKKyAgQVNTRVJUX05FKG51bGxwdHIsIG1lZGlhX3RyYW5zcG9y
dCk7CisKKyAgLy8gQWZ0ZXIgU2V0UmVtb3RlRGVzY3JpcHRpb24sIG1lZGlhIHRyYW5zcG9ydCBz
aG91bGQgYmUgY3JlYXRlZCBhcyBjYWxsZWUuCisgIEVYUEVDVF9GQUxTRShtZWRpYV90cmFuc3Bv
cnQtPmlzX2NhbGxlcigpKTsKKyAgRVhQRUNUX1RSVUUobWVkaWFfdHJhbnNwb3J0LT5wcmVfc2hh
cmVkX2tleSgpLmhhc192YWx1ZSgpKTsKKworICAvLyBSZXR1cm4gbnVsbHB0ciBmb3Igbm9uLWV4
aXN0aW5nIG1pZHMuCisgIEVYUEVDVF9FUShudWxscHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8t
PkdldE1lZGlhVHJhbnNwb3J0KGtWaWRlb01pZDIpKTsKK30KKworVEVTVF9GKEpzZXBUcmFuc3Bv
cnRDb250cm9sbGVyVGVzdCwgR2V0TWVkaWFUcmFuc3BvcnRJc05vdFNldElmTm9TZGVzKSB7Cisg
IEZha2VNZWRpYVRyYW5zcG9ydEZhY3RvcnkgZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeTsK
KyAgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkNvbmZpZyBjb25maWc7CisKKyAgY29uZmlnLnJ0
Y3BfbXV4X3BvbGljeSA9IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprUnRjcE11eFBvbGljeU5l
Z290aWF0ZTsKKyAgY29uZmlnLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gJmZha2VfbWVkaWFf
dHJhbnNwb3J0X2ZhY3Rvcnk7CisgIENyZWF0ZUpzZXBUcmFuc3BvcnRDb250cm9sbGVyKGNvbmZp
Zyk7CisgIGF1dG8gZGVzY3JpcHRpb24gPSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0
QnVuZGxlKCk7CisgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydF9jb250cm9sbGVyXworICAgICAgICAg
ICAgICAgICAgLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihTZHBUeXBlOjprT2ZmZXIsIGRlc2NyaXB0
aW9uLmdldCgpKQorICAgICAgICAgICAgICAgICAgLm9rKCkpOworCisgIEVYUEVDVF9FUShudWxs
cHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtBdWRpb01pZDEp
KTsKKworICAvLyBFdmVuIGlmIHdlIHNldCBsb2NhbCBkZXNjcmlwdGlvbiB3aXRoIGNyeXB0byBu
b3cgKGFmdGVyIHRoZSByZW1vdGUgb2ZmZXIKKyAgLy8gd2FzIHNldCksIG1lZGlhIHRyYW5zcG9y
dCB3b24ndCBiZSBwcm92aWRlZC4KKyAgYXV0byBkZXNjcmlwdGlvbjIgPSBDcmVhdGVTZXNzaW9u
RGVzY3JpcHRpb25XaXRob3V0QnVuZGxlKCk7CisgIEFkZENyeXB0b1NldHRpbmdzKGRlc2NyaXB0
aW9uMi5nZXQoKSk7CisgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydF9jb250cm9sbGVyXworICAgICAg
ICAgICAgICAgICAgLT5TZXRMb2NhbERlc2NyaXB0aW9uKFNkcFR5cGU6OmtBbnN3ZXIsIGRlc2Ny
aXB0aW9uMi5nZXQoKSkKKyAgICAgICAgICAgICAgICAgIC5vaygpKTsKKworICBFWFBFQ1RfRVEo
bnVsbHB0ciwgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChrQXVkaW9N
aWQxKSk7Cit9CisKK1RFU1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsCisgICAgICAg
QWZ0ZXJTZXR0aW5nQW5zd2VyVGhlU2FtZU1lZGlhVHJhbnNwb3J0SXNSZXR1cm5lZCkgeworICBG
YWtlTWVkaWFUcmFuc3BvcnRGYWN0b3J5IGZha2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7Cisg
IEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpDb25maWcgY29uZmlnOworCisgIGNvbmZpZy5ydGNw
X211eF9wb2xpY3kgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a1J0Y3BNdXhQb2xpY3lOZWdv
dGlhdGU7CisgIGNvbmZpZy5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9ICZmYWtlX21lZGlhX3Ry
YW5zcG9ydF9mYWN0b3J5OworICBDcmVhdGVKc2VwVHJhbnNwb3J0Q29udHJvbGxlcihjb25maWcp
OworICBhdXRvIGRlc2NyaXB0aW9uID0gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aG91dEJ1
bmRsZSgpOworICBBZGRDcnlwdG9TZXR0aW5ncyhkZXNjcmlwdGlvbi5nZXQoKSk7CisgIEVYUEVD
VF9UUlVFKHRyYW5zcG9ydF9jb250cm9sbGVyXworICAgICAgICAgICAgICAgICAgLT5TZXRSZW1v
dGVEZXNjcmlwdGlvbihTZHBUeXBlOjprT2ZmZXIsIGRlc2NyaXB0aW9uLmdldCgpKQorICAgICAg
ICAgICAgICAgICAgLm9rKCkpOworCisgIEZha2VNZWRpYVRyYW5zcG9ydCogbWVkaWFfdHJhbnNw
b3J0ID0gc3RhdGljX2Nhc3Q8RmFrZU1lZGlhVHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3BvcnRf
Y29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKKyAgRVhQRUNUX05F
KG51bGxwdHIsIG1lZGlhX3RyYW5zcG9ydCk7CisgIEVYUEVDVF9UUlVFKG1lZGlhX3RyYW5zcG9y
dC0+cHJlX3NoYXJlZF9rZXkoKS5oYXNfdmFsdWUoKSk7CisKKyAgLy8gRXZlbiBpZiB3ZSBzZXQg
bG9jYWwgZGVzY3JpcHRpb24gd2l0aCBjcnlwdG8gbm93IChhZnRlciB0aGUgcmVtb3RlIG9mZmVy
CisgIC8vIHdhcyBzZXQpLCBtZWRpYSB0cmFuc3BvcnQgd29uJ3QgYmUgcHJvdmlkZWQuCisgIGF1
dG8gZGVzY3JpcHRpb24yID0gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aG91dEJ1bmRsZSgp
OworICBBZGRDcnlwdG9TZXR0aW5ncyhkZXNjcmlwdGlvbjIuZ2V0KCkpOworCisgIFJUQ0Vycm9y
IHJlc3VsdCA9IHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2V0TG9jYWxEZXNjcmlwdGlvbigKKyAg
ICAgIFNkcFR5cGU6OmtBbnN3ZXIsIGRlc2NyaXB0aW9uMi5nZXQoKSk7CisgIEVYUEVDVF9UUlVF
KHJlc3VsdC5vaygpKSA8PCByZXN1bHQubWVzc2FnZSgpOworCisgIC8vIE1lZGlhIHRyYW5zcG9y
dCBkaWQgbm90IGNoYW5nZS4KKyAgRVhQRUNUX0VRKG1lZGlhX3RyYW5zcG9ydCwKKyAgICAgICAg
ICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0TWVkaWFUcmFuc3BvcnQoa0F1ZGlvTWlkMSkp
OwogfQogCiBURVNUX0YoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LCBTZXRJY2VDb25maWcp
IHsKQEAgLTU2OCw5ICs3MjksMTYgQEAgVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVz
dCwgU2lnbmFsQ29ubmVjdGlvblN0YXRlRmFpbGVkKSB7CiAgIGZha2VfaWNlLT5TZXRDb25uZWN0
aW9uQ291bnQoMCk7CiAgIEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uRmFp
bGVkLCBjb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOwogICBFWFBFQ1RfRVEoMSwgY29ubmVj
dGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKKyAgRVhQRUNUX0VRX1dBSVQoUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uRmFpbGVkLAorICAgICAgICAgICAgICAgICBpY2Vf
Y29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDEsIGljZV9jb25uZWN0
aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOworICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0ZhaWxlZCwKKyAgICAgICAgICAgICAg
ICAgY29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDEs
IGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7CiB9CiAKLVRFU1RfRihK
c2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIFNpZ25hbENvbm5lY3Rpb25TdGF0ZUNvbm5lY3Rl
ZCkgeworVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwKKyAgICAgICBTaWduYWxD
b25uZWN0aW9uU3RhdGVDb25uZWN0ZWROb01lZGlhVHJhbnNwb3J0KSB7CiAgIENyZWF0ZUpzZXBU
cmFuc3BvcnRDb250cm9sbGVyKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpDb25maWcoKSk7CiAg
IGF1dG8gZGVzY3JpcHRpb24gPSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVuZGxl
KCk7CiAgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydF9jb250cm9sbGVyXwpAQCAtNTk1LDEzICs3NjMs
MTE0IEBAIFRFU1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIFNpZ25hbENvbm5lY3Rp
b25TdGF0ZUNvbm5lY3RlZCkgewogCiAgIEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25u
ZWN0aW9uRmFpbGVkLCBjb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOwogICBFWFBFQ1RfRVEo
MSwgY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKLQorICBFWFBFQ1RfRVFfV0FJVChQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25GYWlsZWQsCisgICAgICAgICAg
ICAgICAgIGljZV9jb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMSwg
aWNlX2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7CisgIEVYUEVDVF9FUV9XQUlUKFBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprRmFpbGVkLAorICAg
ICAgICAgICAgICAgICBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBF
WFBFQ1RfRVEoMSwgY29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKKwor
ICBmYWtlX2F1ZGlvX2R0bHMtPlNldER0bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9D
T05ORUNURUQpOworICBmYWtlX3ZpZGVvX2R0bHMtPlNldER0bHNTdGF0ZShjcmlja2V0OjpEVExT
X1RSQU5TUE9SVF9DT05ORUNURUQpOwogICAvLyBTZXQgdGhlIGNvbm5lY3Rpb24gY291bnQgdG8g
YmUgMiBhbmQgdGhlIGNyaWNrZXQ6OkZha2VJY2VUcmFuc3BvcnQgd2lsbCBzZXQKICAgLy8gdGhl
IHRyYW5zcG9ydCBzdGF0ZSB0byBiZSBTVEFURV9DT05ORUNUSU5HLgogICBmYWtlX3ZpZGVvX2R0
bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgpLT5TZXRDb25uZWN0aW9uQ291bnQoMik7CiAgIGZha2Vf
dmlkZW9fZHRscy0+U2V0V3JpdGFibGUodHJ1ZSk7CiAgIEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6
OmtJY2VDb25uZWN0aW9uQ29ubmVjdGVkLCBjb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOwog
ICBFWFBFQ1RfRVEoMiwgY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKKyAgRVhQRUNU
X0VRX1dBSVQoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGVk
LAorICAgICAgICAgICAgICAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAg
RVhQRUNUX0VRKDIsIGljZV9jb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOworICBFWFBF
Q1RfRVFfV0FJVChQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6
a0Nvbm5lY3RlZCwKKyAgICAgICAgICAgICAgICAgY29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV8s
IGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDIsIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfc2ln
bmFsX2NvdW50Xyk7Cit9CisKK1RFU1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsCisg
ICAgICAgU2lnbmFsQ29ubmVjdGlvblN0YXRlQ29ubmVjdGVkV2l0aE1lZGlhVHJhbnNwb3J0KSB7
CisgIEZha2VNZWRpYVRyYW5zcG9ydEZhY3RvcnkgZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9y
eTsKKyAgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkNvbmZpZyBjb25maWc7CisgIGNvbmZpZy5t
ZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9ICZmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5Owor
ICBDcmVhdGVKc2VwVHJhbnNwb3J0Q29udHJvbGxlcihjb25maWcpOworICBhdXRvIGRlc2NyaXB0
aW9uID0gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aG91dEJ1bmRsZSgpOworICBBZGRDcnlw
dG9TZXR0aW5ncyhkZXNjcmlwdGlvbi5nZXQoKSk7CisgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydF9j
b250cm9sbGVyXworICAgICAgICAgICAgICAgICAgLT5TZXRMb2NhbERlc2NyaXB0aW9uKFNkcFR5
cGU6OmtPZmZlciwgZGVzY3JpcHRpb24uZ2V0KCkpCisgICAgICAgICAgICAgICAgICAub2soKSk7
CisKKyAgYXV0byBmYWtlX2F1ZGlvX2R0bHMgPSBzdGF0aWNfY2FzdDxGYWtlRHRsc1RyYW5zcG9y
dCo+KAorICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXREdGxzVHJhbnNwb3J0KGtBdWRp
b01pZDEpKTsKKyAgYXV0byBmYWtlX3ZpZGVvX2R0bHMgPSBzdGF0aWNfY2FzdDxGYWtlRHRsc1Ry
YW5zcG9ydCo+KAorICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXREdGxzVHJhbnNwb3J0
KGtWaWRlb01pZDEpKTsKKyAgZmFrZV9hdWRpb19kdGxzLT5TZXRXcml0YWJsZSh0cnVlKTsKKyAg
ZmFrZV92aWRlb19kdGxzLT5TZXRXcml0YWJsZSh0cnVlKTsKKyAgLy8gRGVjcmVhc2luZyBjb25u
ZWN0aW9uIGNvdW50IGZyb20gMiB0byAxIHRyaWdnZXJzIGNvbm5lY3Rpb24gc3RhdGUgZXZlbnQu
CisgIGZha2VfYXVkaW9fZHRscy0+ZmFrZV9pY2VfdHJhbnNwb3J0KCktPlNldENvbm5lY3Rpb25D
b3VudCgyKTsKKyAgZmFrZV9hdWRpb19kdGxzLT5mYWtlX2ljZV90cmFuc3BvcnQoKS0+U2V0Q29u
bmVjdGlvbkNvdW50KDEpOworICBmYWtlX3ZpZGVvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgp
LT5TZXRDb25uZWN0aW9uQ291bnQoMik7CisgIGZha2VfdmlkZW9fZHRscy0+ZmFrZV9pY2VfdHJh
bnNwb3J0KCktPlNldENvbm5lY3Rpb25Db3VudCgxKTsKKyAgZmFrZV9hdWRpb19kdGxzLT5TZXRE
dGxzU3RhdGUoY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEKTsKKyAgZmFrZV92aWRl
b19kdGxzLT5TZXREdGxzU3RhdGUoY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEKTsK
KworICAvLyBTdGlsbCBub3QgY29ubmVjdGVkLCBiZWNhdXNlIHdlIGFyZSB3YWl0aW5nIGZvciBt
ZWRpYSB0cmFuc3BvcnQuCisgIEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9u
Q29ubmVjdGluZywgY29ubmVjdGlvbl9zdGF0ZV8sCisgICAgICAgICAgICAgICAgIGtUaW1lb3V0
KTsKKworICBGYWtlTWVkaWFUcmFuc3BvcnQqIG1lZGlhX3RyYW5zcG9ydCA9IHN0YXRpY19jYXN0
PEZha2VNZWRpYVRyYW5zcG9ydCo+KAorICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRN
ZWRpYVRyYW5zcG9ydChrQXVkaW9NaWQxKSk7CisKKyAgbWVkaWFfdHJhbnNwb3J0LT5TZXRTdGF0
ZSh3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJsZSk7CisgIEVYUEVDVF9FUV9X
QUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGluZywgY29ubmVjdGlvbl9zdGF0ZV8s
CisgICAgICAgICAgICAgICAgIGtUaW1lb3V0KTsKKworICAvLyBTdGlsbCB3YWl0aW5nIGZvciB0
aGUgc2Vjb25kIG1lZGlhIHRyYW5zcG9ydC4KKyAgbWVkaWFfdHJhbnNwb3J0ID0gc3RhdGljX2Nh
c3Q8RmFrZU1lZGlhVHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdl
dE1lZGlhVHJhbnNwb3J0KGtWaWRlb01pZDEpKTsKKyAgbWVkaWFfdHJhbnNwb3J0LT5TZXRTdGF0
ZSh3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJsZSk7CisKKyAgRVhQRUNUX0VR
X1dBSVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25Db25uZWN0ZWQsIGNvbm5lY3Rpb25fc3RhdGVf
LCBrVGltZW91dCk7Cit9CisKK1RFU1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsCisg
ICAgICAgU2lnbmFsQ29ubmVjdGlvblN0YXRlRmFpbGVkV2hlbk1lZGlhVHJhbnNwb3J0Q2xvc2Vk
KSB7CisgIEZha2VNZWRpYVRyYW5zcG9ydEZhY3RvcnkgZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFj
dG9yeTsKKyAgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkNvbmZpZyBjb25maWc7CisgIGNvbmZp
Zy5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9ICZmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
OworICBDcmVhdGVKc2VwVHJhbnNwb3J0Q29udHJvbGxlcihjb25maWcpOworICBhdXRvIGRlc2Ny
aXB0aW9uID0gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aG91dEJ1bmRsZSgpOworICBBZGRD
cnlwdG9TZXR0aW5ncyhkZXNjcmlwdGlvbi5nZXQoKSk7CisgIEVYUEVDVF9UUlVFKHRyYW5zcG9y
dF9jb250cm9sbGVyXworICAgICAgICAgICAgICAgICAgLT5TZXRMb2NhbERlc2NyaXB0aW9uKFNk
cFR5cGU6OmtPZmZlciwgZGVzY3JpcHRpb24uZ2V0KCkpCisgICAgICAgICAgICAgICAgICAub2so
KSk7CisKKyAgYXV0byBmYWtlX2F1ZGlvX2R0bHMgPSBzdGF0aWNfY2FzdDxGYWtlRHRsc1RyYW5z
cG9ydCo+KAorICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXREdGxzVHJhbnNwb3J0KGtB
dWRpb01pZDEpKTsKKyAgYXV0byBmYWtlX3ZpZGVvX2R0bHMgPSBzdGF0aWNfY2FzdDxGYWtlRHRs
c1RyYW5zcG9ydCo+KAorICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXREdGxzVHJhbnNw
b3J0KGtWaWRlb01pZDEpKTsKKyAgZmFrZV9hdWRpb19kdGxzLT5TZXRXcml0YWJsZSh0cnVlKTsK
KyAgZmFrZV92aWRlb19kdGxzLT5TZXRXcml0YWJsZSh0cnVlKTsKKyAgLy8gRGVjcmVhc2luZyBj
b25uZWN0aW9uIGNvdW50IGZyb20gMiB0byAxIHRyaWdnZXJzIGNvbm5lY3Rpb24gc3RhdGUgZXZl
bnQuCisgIGZha2VfYXVkaW9fZHRscy0+ZmFrZV9pY2VfdHJhbnNwb3J0KCktPlNldENvbm5lY3Rp
b25Db3VudCgyKTsKKyAgZmFrZV9hdWRpb19kdGxzLT5mYWtlX2ljZV90cmFuc3BvcnQoKS0+U2V0
Q29ubmVjdGlvbkNvdW50KDEpOworICBmYWtlX3ZpZGVvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9y
dCgpLT5TZXRDb25uZWN0aW9uQ291bnQoMik7CisgIGZha2VfdmlkZW9fZHRscy0+ZmFrZV9pY2Vf
dHJhbnNwb3J0KCktPlNldENvbm5lY3Rpb25Db3VudCgxKTsKKyAgZmFrZV9hdWRpb19kdGxzLT5T
ZXREdGxzU3RhdGUoY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEKTsKKyAgZmFrZV92
aWRlb19kdGxzLT5TZXREdGxzU3RhdGUoY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVE
KTsKKworICBGYWtlTWVkaWFUcmFuc3BvcnQqIG1lZGlhX3RyYW5zcG9ydCA9IHN0YXRpY19jYXN0
PEZha2VNZWRpYVRyYW5zcG9ydCo+KAorICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRN
ZWRpYVRyYW5zcG9ydChrQXVkaW9NaWQxKSk7CisKKyAgbWVkaWFfdHJhbnNwb3J0LT5TZXRTdGF0
ZSh3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJsZSk7CisKKyAgbWVkaWFfdHJh
bnNwb3J0ID0gc3RhdGljX2Nhc3Q8RmFrZU1lZGlhVHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3Bv
cnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtWaWRlb01pZDEpKTsKKworICBtZWRp
YV90cmFuc3BvcnQtPlNldFN0YXRlKHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRh
YmxlKTsKKworICBFWFBFQ1RfRVFfV0FJVChjcmlja2V0OjprSWNlQ29ubmVjdGlvbkNvbm5lY3Rl
ZCwgY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKworICBtZWRpYV90cmFuc3BvcnQtPlNl
dFN0YXRlKHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a0Nsb3NlZCk7CisgIEVYUEVDVF9F
UV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uRmFpbGVkLCBjb25uZWN0aW9uX3N0YXRlXywg
a1RpbWVvdXQpOwogfQogCiBURVNUX0YoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LCBTaWdu
YWxDb25uZWN0aW9uU3RhdGVDb21wbGV0ZSkgewpAQCAtNjI5LDEzICs4OTgsMjcgQEAgVEVTVF9G
KEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgU2lnbmFsQ29ubmVjdGlvblN0YXRlQ29tcGxl
dGUpIHsKIAogICBFWFBFQ1RfRVFfV0FJVChjcmlja2V0OjprSWNlQ29ubmVjdGlvbkZhaWxlZCwg
Y29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKICAgRVhQRUNUX0VRKDEsIGNvbm5lY3Rpb25f
c3RhdGVfc2lnbmFsX2NvdW50Xyk7Ci0KKyAgRVhQRUNUX0VRX1dBSVQoUGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uRmFpbGVkLAorICAgICAgICAgICAgICAgICBpY2VfY29u
bmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDEsIGljZV9jb25uZWN0aW9u
X3N0YXRlX3NpZ25hbF9jb3VudF8pOworICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0ZhaWxlZCwKKyAgICAgICAgICAgICAgICAg
Y29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDEsIGNv
bWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7CisKKyAgZmFrZV9hdWRpb19k
dGxzLT5TZXREdGxzU3RhdGUoY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEKTsKKyAg
ZmFrZV92aWRlb19kdGxzLT5TZXREdGxzU3RhdGUoY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09O
TkVDVEVEKTsKICAgLy8gU2V0IHRoZSBjb25uZWN0aW9uIGNvdW50IHRvIGJlIDEgYW5kIHRoZSBj
cmlja2V0OjpGYWtlSWNlVHJhbnNwb3J0IHdpbGwgc2V0CiAgIC8vIHRoZSB0cmFuc3BvcnQgc3Rh
dGUgdG8gYmUgU1RBVEVfQ09NUExFVEVELgogICBmYWtlX3ZpZGVvX2R0bHMtPmZha2VfaWNlX3Ry
YW5zcG9ydCgpLT5TZXRDb25uZWN0aW9uQ291bnQoMSk7CiAgIGZha2VfdmlkZW9fZHRscy0+U2V0
V3JpdGFibGUodHJ1ZSk7CiAgIEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9u
Q29tcGxldGVkLCBjb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOwogICBFWFBFQ1RfRVEoMiwg
Y29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKKyAgRVhQRUNUX0VRX1dBSVQoUGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uQ29tcGxldGVkLAorICAgICAgICAgICAg
ICAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDIsIGlj
ZV9jb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOworICBFWFBFQ1RfRVFfV0FJVChQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3RlZCwKKyAg
ICAgICAgICAgICAgICAgY29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAg
RVhQRUNUX0VRKDIsIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7CiB9
CiAKIFRFU1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIFNpZ25hbEljZUdhdGhlcmlu
Z1N0YXRlR2F0aGVyaW5nKSB7CkBAIC03MDksNiArOTkyLDcgQEAgVEVTVF9GKEpzZXBUcmFuc3Bv
cnRDb250cm9sbGVyVGVzdCwKICAgZmFrZV9hdWRpb19kdGxzLT5TZXRXcml0YWJsZSh0cnVlKTsK
ICAgZmFrZV9hdWRpb19kdGxzLT5mYWtlX2ljZV90cmFuc3BvcnQoKS0+U2V0Q2FuZGlkYXRlc0dh
dGhlcmluZ0NvbXBsZXRlKCk7CiAgIGZha2VfYXVkaW9fZHRscy0+ZmFrZV9pY2VfdHJhbnNwb3J0
KCktPlNldENvbm5lY3Rpb25Db3VudCgxKTsKKyAgZmFrZV9hdWRpb19kdGxzLT5TZXREdGxzU3Rh
dGUoY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEKTsKICAgRVhQRUNUX0VRKDEsIGdh
dGhlcmluZ19zdGF0ZV9zaWduYWxfY291bnRfKTsKIAogICAvLyBTZXQgdGhlIHJlbW90ZSBkZXNj
cmlwdGlvbiBhbmQgZW5hYmxlIHRoZSBidW5kbGUuCkBAIC03MjEsNiArMTAwNSwxMCBAQCBURVNU
X0YoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LAogICAgICAgdHJhbnNwb3J0X2NvbnRyb2xs
ZXJfLT5HZXREdGxzVHJhbnNwb3J0KGtWaWRlb01pZDEpKTsKICAgRVhQRUNUX0VRKGZha2VfYXVk
aW9fZHRscywgZmFrZV92aWRlb19kdGxzKTsKICAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0lj
ZUNvbm5lY3Rpb25Db21wbGV0ZWQsIGNvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CisgIEVY
UEVDVF9FUShQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25Db21wbGV0ZWQs
CisgICAgICAgICAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV8pOworICBFWFBFQ1RfRVEoUGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDb25uZWN0ZWQsCisgICAg
ICAgICAgICBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXyk7CiAgIEVYUEVDVF9FUV9XQUlUKGNy
aWNrZXQ6OmtJY2VHYXRoZXJpbmdDb21wbGV0ZSwgZ2F0aGVyaW5nX3N0YXRlXywga1RpbWVvdXQp
OwogICBFWFBFQ1RfRVEoMiwgZ2F0aGVyaW5nX3N0YXRlX3NpZ25hbF9jb3VudF8pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbG9j
YWxhdWRpb3NvdXJjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvbG9jYWxhdWRpb3NvdXJjZS5oCmluZGV4IGM1ZjY1MzA0ZDBiM2NlYjViNzcwNDA2NTU0
NDI0ZDM0Y2MzYzdmNDkuLmM0OGY1NDA3ZDRjMWU1MzRmNWU2Y2IzNmNiOTdjYTJmNTRmNjM0MmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2xvY2FsYXVkaW9zb3VyY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9sb2NhbGF1ZGlvc291cmNlLmgKQEAgLTI5LDcgKzI5LDcgQEAgY2xhc3Mg
TG9jYWxBdWRpb1NvdXJjZSA6IHB1YmxpYyBOb3RpZmllcjxBdWRpb1NvdXJjZUludGVyZmFjZT4g
ewogICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGtMaXZlOyB9
CiAgIGJvb2wgcmVtb3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICB2
aXJ0dWFsIGNvbnN0IGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG9wdGlvbnNfOyB9CisgIGNvbnN0IGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucyBvcHRpb25zKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gb3B0aW9uc187IH0KIAogICB2b2lkIEFkZFNpbmsoQXVk
aW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIG92ZXJyaWRlIHt9CiAgIHZvaWQgUmVtb3ZlU2lu
ayhBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykgb3ZlcnJpZGUge30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lv
bi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlh
c2Vzc2lvbi5jYwppbmRleCA5YWU0NmJlMjdjNWJmODVhMDNhMmM4MmRlN2FlN2Y2YTc0YTExNWI0
Li43MjM5YWY4NmMzOTllN2JkYmU0ODZkOGIwNmJkYWNhNjlhNjEyYzBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24u
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVk
aWFzZXNzaW9uLmNjCkBAIC0xOCw5ICsxOCw5IEBACiAjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAj
aW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9jcnlwdG9wYXJh
bXMuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRl
KQogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvaDI2NF9wcm9maWxlX2xldmVsX2lkLmgiCiAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgogI2luY2x1ZGUgInAycC9iYXNlL3AycGNv
bnN0YW50cy5oIgpAQCAtMzksMTAgKzM5LDEwIEBAIHVzaW5nIHdlYnJ0Yzo6UnRwVHJhbnNjZWl2
ZXJEaXJlY3Rpb247CiAKIGNvbnN0IGNoYXIga0lubGluZVtdID0gImlubGluZToiOwogCi12b2lk
IEdldFN1cHBvcnRlZFNkZXNDcnlwdG9TdWl0ZU5hbWVzKHZvaWQgKCpmdW5jKShjb25zdCBydGM6
OkNyeXB0b09wdGlvbnMmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiopLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4qIG5hbWVzKSB7Cit2b2lkIEdldFN1cHBvcnRlZFNkZXNDcnlwdG9TdWl0ZU5hbWVzKAor
ICAgIHZvaWQgKCpmdW5jKShjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmLCBzdGQ6OnZlY3Rv
cjxpbnQ+KiksCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cywKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIG5hbWVzKSB7CiAgIHN0ZDo6dmVjdG9y
PGludD4gY3J5cHRvX3N1aXRlczsKICAgZnVuYyhjcnlwdG9fb3B0aW9ucywgJmNyeXB0b19zdWl0
ZXMpOwogICBmb3IgKGNvbnN0IGF1dG8gY3J5cHRvIDogY3J5cHRvX3N1aXRlcykgewpAQCAtMTk1
LDI4ICsxOTUsMzAgQEAgYm9vbCBGaW5kTWF0Y2hpbmdDcnlwdG8oY29uc3QgQ3J5cHRvUGFyYW1z
VmVjJiBjcnlwdG9zLAogCiAvLyBGb3IgYXVkaW8sIEhNQUMgMzIgKGlmIGVuYWJsZWQpIGlzIHBy
ZWZlcmVkIG92ZXIgSE1BQyA4MCBiZWNhdXNlIG9mIHRoZQogLy8gbG93IG92ZXJoZWFkLgotdm9p
ZCBHZXRTdXBwb3J0ZWRBdWRpb1NkZXNDcnlwdG9TdWl0ZXMoY29uc3QgcnRjOjpDcnlwdG9PcHRp
b25zJiBjcnlwdG9fb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0b19zdWl0ZXMpIHsKLSAgaWYgKGNyeXB0b19vcHRp
b25zLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcykgewordm9pZCBHZXRTdXBwb3J0ZWRBdWRpb1Nk
ZXNDcnlwdG9TdWl0ZXMoCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9f
b3B0aW9ucywKKyAgICBzdGQ6OnZlY3RvcjxpbnQ+KiBjcnlwdG9fc3VpdGVzKSB7CisgIGlmIChj
cnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcykgewogICAgIGNyeXB0
b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6OlNSVFBfQUVBRF9BRVNfMjU2X0dDTSk7CiAgICAgY3J5
cHRvX3N1aXRlcy0+cHVzaF9iYWNrKHJ0Yzo6U1JUUF9BRUFEX0FFU18xMjhfR0NNKTsKICAgfQot
ICBpZiAoY3J5cHRvX29wdGlvbnMuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIp
IHsKKyAgaWYgKGNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0
b19jaXBoZXIpIHsKICAgICBjcnlwdG9fc3VpdGVzLT5wdXNoX2JhY2socnRjOjpTUlRQX0FFUzEy
OF9DTV9TSEExXzMyKTsKICAgfQogICBjcnlwdG9fc3VpdGVzLT5wdXNoX2JhY2socnRjOjpTUlRQ
X0FFUzEyOF9DTV9TSEExXzgwKTsKIH0KIAogdm9pZCBHZXRTdXBwb3J0ZWRBdWRpb1NkZXNDcnlw
dG9TdWl0ZU5hbWVzKAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlv
bnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKICAg
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIGNyeXB0b19zdWl0ZV9uYW1lcykgewogICBHZXRT
dXBwb3J0ZWRTZGVzQ3J5cHRvU3VpdGVOYW1lcyhHZXRTdXBwb3J0ZWRBdWRpb1NkZXNDcnlwdG9T
dWl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyeXB0b19vcHRpb25z
LCBjcnlwdG9fc3VpdGVfbmFtZXMpOwogfQogCi12b2lkIEdldFN1cHBvcnRlZFZpZGVvU2Rlc0Ny
eXB0b1N1aXRlcyhjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5
cHRvX3N1aXRlcykgewotICBpZiAoY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3Vp
dGVzKSB7Cit2b2lkIEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0b1N1aXRlcygKKyAgICBjb25z
dCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgIHN0ZDo6dmVjdG9y
PGludD4qIGNyeXB0b19zdWl0ZXMpIHsKKyAgaWYgKGNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxl
X2djbV9jcnlwdG9fc3VpdGVzKSB7CiAgICAgY3J5cHRvX3N1aXRlcy0+cHVzaF9iYWNrKHJ0Yzo6
U1JUUF9BRUFEX0FFU18yNTZfR0NNKTsKICAgICBjcnlwdG9fc3VpdGVzLT5wdXNoX2JhY2socnRj
OjpTUlRQX0FFQURfQUVTXzEyOF9HQ00pOwogICB9CkBAIC0yMjQsMTUgKzIyNiwxNiBAQCB2b2lk
IEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0b1N1aXRlcyhjb25zdCBydGM6OkNyeXB0b09wdGlv
bnMmIGNyeXB0b19vcHRpb25zLAogfQogCiB2b2lkIEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0
b1N1aXRlTmFtZXMoCi0gICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogY3J5cHRvX3N1aXRlX25hbWVzKSB7CiAgIEdldFN1
cHBvcnRlZFNkZXNDcnlwdG9TdWl0ZU5hbWVzKEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0b1N1
aXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3J5cHRvX29wdGlvbnMs
IGNyeXB0b19zdWl0ZV9uYW1lcyk7CiB9CiAKLXZvaWQgR2V0U3VwcG9ydGVkRGF0YVNkZXNDcnlw
dG9TdWl0ZXMoY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5cHRv
X3N1aXRlcykgewotICBpZiAoY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVz
KSB7Cit2b2lkIEdldFN1cHBvcnRlZERhdGFTZGVzQ3J5cHRvU3VpdGVzKAorICAgIGNvbnN0IHdl
YnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgc3RkOjp2ZWN0b3I8aW50
PiogY3J5cHRvX3N1aXRlcykgeworICBpZiAoY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZ2Nt
X2NyeXB0b19zdWl0ZXMpIHsKICAgICBjcnlwdG9fc3VpdGVzLT5wdXNoX2JhY2socnRjOjpTUlRQ
X0FFQURfQUVTXzI1Nl9HQ00pOwogICAgIGNyeXB0b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6OlNS
VFBfQUVBRF9BRVNfMTI4X0dDTSk7CiAgIH0KQEAgLTI0MCw3ICsyNDMsNyBAQCB2b2lkIEdldFN1
cHBvcnRlZERhdGFTZGVzQ3J5cHRvU3VpdGVzKGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5
cHRvX29wdGlvbnMsCiB9CiAKIHZvaWQgR2V0U3VwcG9ydGVkRGF0YVNkZXNDcnlwdG9TdWl0ZU5h
bWVzKAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAg
Y29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKICAgICBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4qIGNyeXB0b19zdWl0ZV9uYW1lcykgewogICBHZXRTdXBwb3J0ZWRT
ZGVzQ3J5cHRvU3VpdGVOYW1lcyhHZXRTdXBwb3J0ZWREYXRhU2Rlc0NyeXB0b1N1aXRlcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3J5cHRvX29wdGlvbnMsIGNyeXB0b19z
dWl0ZV9uYW1lcyk7CkBAIC0yNTIsMTcgKzI1NSwxNyBAQCB2b2lkIEdldFN1cHBvcnRlZERhdGFT
ZGVzQ3J5cHRvU3VpdGVOYW1lcygKIC8vIFBpY2sgdGhlIGNyeXB0byBpbiB0aGUgbGlzdCB0aGF0
IGlzIHN1cHBvcnRlZC4KIHN0YXRpYyBib29sIFNlbGVjdENyeXB0byhjb25zdCBNZWRpYUNvbnRl
bnREZXNjcmlwdGlvbiogb2ZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBidW5k
bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBj
cnlwdG9fb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OkNy
eXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgIENy
eXB0b1BhcmFtcyogY3J5cHRvX291dCkgewogICBib29sIGF1ZGlvID0gb2ZmZXItPnR5cGUoKSA9
PSBNRURJQV9UWVBFX0FVRElPOwogICBjb25zdCBDcnlwdG9QYXJhbXNWZWMmIGNyeXB0b3MgPSBv
ZmZlci0+Y3J5cHRvcygpOwogCiAgIGZvciAoY29uc3QgQ3J5cHRvUGFyYW1zJiBjcnlwdG8gOiBj
cnlwdG9zKSB7Ci0gICAgaWYgKChjcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0
ZXMgJiYKKyAgICBpZiAoKGNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3Vp
dGVzICYmCiAgICAgICAgICBydGM6OklzR2NtQ3J5cHRvU3VpdGVOYW1lKGNyeXB0by5jaXBoZXJf
c3VpdGUpKSB8fAogICAgICAgICBydGM6OkNTX0FFU19DTV8xMjhfSE1BQ19TSEExXzgwID09IGNy
eXB0by5jaXBoZXJfc3VpdGUgfHwKICAgICAgICAgKHJ0Yzo6Q1NfQUVTX0NNXzEyOF9ITUFDX1NI
QTFfMzIgPT0gY3J5cHRvLmNpcGhlcl9zdWl0ZSAmJiBhdWRpbyAmJgotICAgICAgICAgIWJ1bmRs
ZSAmJiBjcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlcikp
IHsKKyAgICAgICAgICFidW5kbGUgJiYgY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfYWVzMTI4
X3NoYTFfMzJfY3J5cHRvX2NpcGhlcikpIHsKICAgICAgIHJldHVybiBDcmVhdGVDcnlwdG9QYXJh
bXMoY3J5cHRvLnRhZywgY3J5cHRvLmNpcGhlcl9zdWl0ZSwgY3J5cHRvX291dCk7CiAgICAgfQog
ICB9CkBAIC0zMDksNyArMzEyLDggQEAgdm9pZCBGaWx0ZXJEYXRhQ29kZWNzKHN0ZDo6dmVjdG9y
PERhdGFDb2RlYz4qIGNvZGVjcywgYm9vbCBzY3RwKSB7CiAgICAgICBzY3RwID8ga0dvb2dsZVJ0
cERhdGFDb2RlY05hbWUgOiBrR29vZ2xlU2N0cERhdGFDb2RlY05hbWU7CiAgIGNvZGVjcy0+ZXJh
c2Uoc3RkOjpyZW1vdmVfaWYoY29kZWNzLT5iZWdpbigpLCBjb2RlY3MtPmVuZCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsmY29kZWNfbmFtZV0oY29uc3QgRGF0YUNvZGVjJiBj
b2RlYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVjTmFt
ZXNFcShjb2RlYy5uYW1lLCBjb2RlY19uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjLm5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2RlY19uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAg
ICAgICAgICBjb2RlY3MtPmVuZCgpKTsKIH0KQEAgLTY1MCw3ICs2NTQsNyBAQCBzdGF0aWMgYm9v
bCBDb250YWluc1J0eENvZGVjKGNvbnN0IHN0ZDo6dmVjdG9yPEM+JiBjb2RlY3MpIHsKIAogdGVt
cGxhdGUgPGNsYXNzIEM+CiBzdGF0aWMgYm9vbCBJc1J0eENvZGVjKGNvbnN0IEMmIGNvZGVjKSB7
Ci0gIHJldHVybiBTVFJfQ0FTRV9DTVAoY29kZWMubmFtZS5jX3N0cigpLCBrUnR4Q29kZWNOYW1l
KSA9PSAwOworICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBrUnR4
Q29kZWNOYW1lKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEM+CkBAIC02NjUsNyArNjY5LDcgQEAg
c3RhdGljIGJvb2wgQ29udGFpbnNGbGV4ZmVjQ29kZWMoY29uc3Qgc3RkOjp2ZWN0b3I8Qz4mIGNv
ZGVjcykgewogCiB0ZW1wbGF0ZSA8Y2xhc3MgQz4KIHN0YXRpYyBib29sIElzRmxleGZlY0NvZGVj
KGNvbnN0IEMmIGNvZGVjKSB7Ci0gIHJldHVybiBTVFJfQ0FTRV9DTVAoY29kZWMubmFtZS5jX3N0
cigpLCBrRmxleGZlY0NvZGVjTmFtZSkgPT0gMDsKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9y
ZUNhc2UoY29kZWMubmFtZSwga0ZsZXhmZWNDb2RlY05hbWUpOwogfQogCiAvLyBDcmVhdGUgYSBt
ZWRpYSBjb250ZW50IHRvIGJlIG9mZmVyZWQgZm9yIHRoZSBnaXZlbiB8c2VuZGVyX29wdGlvbnN8
LApAQCAtNzQzLDcgKzc0Nyw3IEBAIHN0YXRpYyB2b2lkIE5lZ290aWF0ZUNvZGVjcyhjb25zdCBz
dGQ6OnZlY3RvcjxDPiYgbG9jYWxfY29kZWNzLAogICAgICAgICBSVENfRENIRUNLKGFwdF9pdCAh
PSB0aGVpcnMucGFyYW1zLmVuZCgpKTsKICAgICAgICAgbmVnb3RpYXRlZC5TZXRQYXJhbShrQ29k
ZWNQYXJhbUFzc29jaWF0ZWRQYXlsb2FkVHlwZSwgYXB0X2l0LT5zZWNvbmQpOwogICAgICAgfQot
ICAgICAgaWYgKENvZGVjTmFtZXNFcShvdXJzLm5hbWUuY19zdHIoKSwga0gyNjRDb2RlY05hbWUp
KSB7CisgICAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShvdXJzLm5hbWUsIGtIMjY0Q29k
ZWNOYW1lKSkgewogICAgICAgICB3ZWJydGM6OkgyNjQ6OkdlbmVyYXRlUHJvZmlsZUxldmVsSWRG
b3JBbnN3ZXIoCiAgICAgICAgICAgICBvdXJzLnBhcmFtcywgdGhlaXJzLnBhcmFtcywgJm5lZ290
aWF0ZWQucGFyYW1zKTsKICAgICAgIH0KQEAgLTEwMzgsOSArMTA0Miw4IEBAIHN0YXRpYyB2b2lk
IE5lZ290aWF0ZVJ0cEhlYWRlckV4dGVuc2lvbnMoCiBzdGF0aWMgdm9pZCBTdHJpcENOQ29kZWNz
KEF1ZGlvQ29kZWNzKiBhdWRpb19jb2RlY3MpIHsKICAgYXVkaW9fY29kZWNzLT5lcmFzZShzdGQ6
OnJlbW92ZV9pZihhdWRpb19jb2RlY3MtPmJlZ2luKCksIGF1ZGlvX2NvZGVjcy0+ZW5kKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10oY29uc3QgQXVkaW9Db2RlYyYg
Y29kZWMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBT
VFJfQ0FTRV9DTVAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvZGVjLm5hbWUuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga0NvbWZvcnROb2lzZUNvZGVjTmFtZSkgPT0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVj
Lm5hbWUsIGtDb21mb3J0Tm9pc2VDb2RlY05hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2NvZGVjcy0+ZW5k
KCkpOwogfQpAQCAtMTA2OSw2ICsxMDcyLDggQEAgc3RhdGljIGJvb2wgQ3JlYXRlTWVkaWFDb250
ZW50QW5zd2VyKAogICBOZWdvdGlhdGVDb2RlY3MobG9jYWxfY29kZWNzLCBvZmZlci0+Y29kZWNz
KCksICZuZWdvdGlhdGVkX2NvZGVjcyk7CiAgIGFuc3dlci0+QWRkQ29kZWNzKG5lZ290aWF0ZWRf
Y29kZWNzKTsKICAgYW5zd2VyLT5zZXRfcHJvdG9jb2wob2ZmZXItPnByb3RvY29sKCkpOworCisg
IGFuc3dlci0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKG9mZmVyLT5leHRtYXBfYWxsb3df
bWl4ZWRfZW51bSgpKTsKICAgUnRwSGVhZGVyRXh0ZW5zaW9ucyBuZWdvdGlhdGVkX3J0cF9leHRl
bnNpb25zOwogICBOZWdvdGlhdGVSdHBIZWFkZXJFeHRlbnNpb25zKAogICAgICAgbG9jYWxfcnRw
X2V4dGVuc3Rpb25zLCBvZmZlci0+cnRwX2hlYWRlcl9leHRlbnNpb25zKCksCkBAIC0xMjYyLDYg
KzEyNjcsOCBAQCBTZXNzaW9uRGVzY3JpcHRpb24qIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFj
dG9yeTo6Q3JlYXRlT2ZmZXIoCiAgICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBjdXJyZW50
X2Rlc2NyaXB0aW9uKSBjb25zdCB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRp
b24+IG9mZmVyKG5ldyBTZXNzaW9uRGVzY3JpcHRpb24oKSk7CiAKKyAgSWNlQ3JlZGVudGlhbHNJ
dGVyYXRvciBpY2VfY3JlZGVudGlhbHMoCisgICAgICBzZXNzaW9uX29wdGlvbnMucG9vbGVkX2lj
ZV9jcmVkZW50aWFscyk7CiAgIFN0cmVhbVBhcmFtc1ZlYyBjdXJyZW50X3N0cmVhbXM7CiAgIEdl
dEN1cnJlbnRTdHJlYW1QYXJhbXMoY3VycmVudF9kZXNjcmlwdGlvbiwgJmN1cnJlbnRfc3RyZWFt
cyk7CiAKQEAgLTEzMDUsMTggKzEzMTIsMTggQEAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBNZWRpYVNl
c3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkNyZWF0ZU9mZmVyKAogICAgIH0KICAgICBzd2l0Y2gg
KG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMudHlwZSkgewogICAgICAgY2FzZSBNRURJQV9UWVBF
X0FVRElPOgotICAgICAgICBpZiAoIUFkZEF1ZGlvQ29udGVudEZvck9mZmVyKG1lZGlhX2Rlc2Ny
aXB0aW9uX29wdGlvbnMsIHNlc3Npb25fb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50X2NvbnRlbnQsIGN1cnJlbnRfZGVzY3JpcHRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcnRwX2V4dGVuc2lvbnMsIG9m
ZmVyX2F1ZGlvX2NvZGVjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
Y3VycmVudF9zdHJlYW1zLCBvZmZlci5nZXQoKSkpIHsKKyAgICAgICAgaWYgKCFBZGRBdWRpb0Nv
bnRlbnRGb3JPZmZlcigKKyAgICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25z
LCBzZXNzaW9uX29wdGlvbnMsIGN1cnJlbnRfY29udGVudCwKKyAgICAgICAgICAgICAgICBjdXJy
ZW50X2Rlc2NyaXB0aW9uLCBhdWRpb19ydHBfZXh0ZW5zaW9ucywgb2ZmZXJfYXVkaW9fY29kZWNz
LAorICAgICAgICAgICAgICAgICZjdXJyZW50X3N0cmVhbXMsIG9mZmVyLmdldCgpLCAmaWNlX2Ny
ZWRlbnRpYWxzKSkgewogICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwogICAgICAgY2FzZSBNRURJQV9UWVBFX1ZJREVPOgotICAgICAgICBpZiAoIUFk
ZFZpZGVvQ29udGVudEZvck9mZmVyKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25f
b3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Nv
bnRlbnQsIGN1cnJlbnRfZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmlkZW9fcnRwX2V4dGVuc2lvbnMsIG9mZmVyX3ZpZGVvX2NvZGVjcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VycmVudF9zdHJlYW1zLCBvZmZlci5n
ZXQoKSkpIHsKKyAgICAgICAgaWYgKCFBZGRWaWRlb0NvbnRlbnRGb3JPZmZlcigKKyAgICAgICAg
ICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLCBzZXNzaW9uX29wdGlvbnMsIGN1cnJl
bnRfY29udGVudCwKKyAgICAgICAgICAgICAgICBjdXJyZW50X2Rlc2NyaXB0aW9uLCB2aWRlb19y
dHBfZXh0ZW5zaW9ucywgb2ZmZXJfdmlkZW9fY29kZWNzLAorICAgICAgICAgICAgICAgICZjdXJy
ZW50X3N0cmVhbXMsIG9mZmVyLmdldCgpLCAmaWNlX2NyZWRlbnRpYWxzKSkgewogICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTMyNCw3ICsx
MzMxLDcgQEAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rv
cnk6OkNyZWF0ZU9mZmVyKAogICAgICAgICBpZiAoIUFkZERhdGFDb250ZW50Rm9yT2ZmZXIobWVk
aWFfZGVzY3JpcHRpb25fb3B0aW9ucywgc2Vzc2lvbl9vcHRpb25zLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9jb250ZW50LCBjdXJyZW50X2Rlc2NyaXB0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXJfZGF0YV9jb2RlY3Ms
ICZjdXJyZW50X3N0cmVhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
ZmZlci5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVy
LmdldCgpLCAmaWNlX2NyZWRlbnRpYWxzKSkgewogICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTM3MSw2ICsxMzc4LDggQEAgU2Vzc2lvbkRl
c2NyaXB0aW9uKiBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkNyZWF0ZU9mZmVyKAog
ICAgIG9mZmVyLT5zZXRfbXNpZF9zaWduYWxpbmcoY3JpY2tldDo6a01zaWRTaWduYWxpbmdTc3Jj
QXR0cmlidXRlKTsKICAgfQogCisgIG9mZmVyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkKHNlc3Np
b25fb3B0aW9ucy5vZmZlcl9leHRtYXBfYWxsb3dfbWl4ZWQpOworCiAgIHJldHVybiBvZmZlci5y
ZWxlYXNlKCk7CiB9CiAKQEAgLTEzODEsNiArMTM5MCwxMCBAQCBTZXNzaW9uRGVzY3JpcHRpb24q
IE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlQW5zd2VyKAogICBpZiAoIW9m
ZmVyKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KKworICBJY2VDcmVkZW50aWFsc0l0ZXJh
dG9yIGljZV9jcmVkZW50aWFscygKKyAgICAgIHNlc3Npb25fb3B0aW9ucy5wb29sZWRfaWNlX2Ny
ZWRlbnRpYWxzKTsKKwogICAvLyBUaGUgYW5zd2VyIGNvbnRhaW5zIHRoZSBpbnRlcnNlY3Rpb24g
b2YgdGhlIGNvZGVjcyBpbiB0aGUgb2ZmZXIgd2l0aCB0aGUKICAgLy8gY29kZWNzIHdlIHN1cHBv
cnQuIEFzIGluZGljYXRlZCBieSBYRVAtMDE2Nywgd2UgcmV0YWluIHRoZSBzYW1lIHBheWxvYWQg
aWRzCiAgIC8vIGZyb20gdGhlIG9mZmVyIGluIHRoZSBhbnN3ZXIuCkBAIC0xMzk2LDYgKzE0MDks
OCBAQCBTZXNzaW9uRGVzY3JpcHRpb24qIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6
Q3JlYXRlQW5zd2VyKAogICAvLyBUcmFuc3BvcnQgaW5mbyBzaGFyZWQgYnkgdGhlIGJ1bmRsZSBn
cm91cC4KICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydEluZm8+IGJ1bmRsZV90cmFuc3BvcnQ7
CiAKKyAgYW5zd2VyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkKG9mZmVyLT5leHRtYXBfYWxsb3df
bWl4ZWQoKSk7CisKICAgLy8gR2V0IGxpc3Qgb2YgYWxsIHBvc3NpYmxlIGNvZGVjcyB0aGF0IHJl
c3BlY3RzIGV4aXN0aW5nIHBheWxvYWQgdHlwZQogICAvLyBtYXBwaW5ncyBhbmQgdXNlcyBhIHNp
bmdsZSBwYXlsb2FkIHR5cGUgc3BhY2UuCiAgIC8vCkBAIC0xNDQwLDcgKzE0NTUsNyBAQCBTZXNz
aW9uRGVzY3JpcHRpb24qIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlQW5z
d2VyKAogICAgICAgICAgICAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25f
b3B0aW9ucywgb2ZmZXJfY29udGVudCwKICAgICAgICAgICAgICAgICBvZmZlciwgY3VycmVudF9j
b250ZW50LCBjdXJyZW50X2Rlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgIGJ1bmRsZV90cmFu
c3BvcnQuZ2V0KCksIGFuc3dlcl9hdWRpb19jb2RlY3MsICZjdXJyZW50X3N0cmVhbXMsCi0gICAg
ICAgICAgICAgICAgYW5zd2VyLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGFuc3dlci5nZXQo
KSwgJmljZV9jcmVkZW50aWFscykpIHsKICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKQEAgLTE0NDksMTYgKzE0NjQsMTYgQEAgU2Vzc2lvbkRlc2Ny
aXB0aW9uKiBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkNyZWF0ZUFuc3dlcigKICAg
ICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLCBzZXNzaW9uX29wdGlvbnMs
IG9mZmVyX2NvbnRlbnQsCiAgICAgICAgICAgICAgICAgb2ZmZXIsIGN1cnJlbnRfY29udGVudCwg
Y3VycmVudF9kZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICBidW5kbGVfdHJhbnNwb3J0Lmdl
dCgpLCBhbnN3ZXJfdmlkZW9fY29kZWNzLCAmY3VycmVudF9zdHJlYW1zLAotICAgICAgICAgICAg
ICAgIGFuc3dlci5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBhbnN3ZXIuZ2V0KCksICZpY2Vf
Y3JlZGVudGlhbHMpKSB7CiAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAgICAgICBjYXNlIE1FRElBX1RZUEVfREFUQToKLSAgICAgICAgaWYgKCFB
ZGREYXRhQ29udGVudEZvckFuc3dlcihtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLCBzZXNzaW9u
X29wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXJfY29u
dGVudCwgb2ZmZXIsIGN1cnJlbnRfY29udGVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50X2Rlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ1bmRsZV90cmFuc3BvcnQuZ2V0KCksIGFuc3dlcl9kYXRhX2NvZGVjcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VycmVudF9zdHJlYW1zLCBh
bnN3ZXIuZ2V0KCkpKSB7CisgICAgICAgIGlmICghQWRkRGF0YUNvbnRlbnRGb3JBbnN3ZXIoCisg
ICAgICAgICAgICAgICAgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucywgc2Vzc2lvbl9vcHRpb25z
LCBvZmZlcl9jb250ZW50LAorICAgICAgICAgICAgICAgIG9mZmVyLCBjdXJyZW50X2NvbnRlbnQs
IGN1cnJlbnRfZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgYnVuZGxlX3RyYW5zcG9ydC5n
ZXQoKSwgYW5zd2VyX2RhdGFfY29kZWNzLCAmY3VycmVudF9zdHJlYW1zLAorICAgICAgICAgICAg
ICAgIGFuc3dlci5nZXQoKSwgJmljZV9jcmVkZW50aWFscykpIHsKICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTE3NjUsMTMgKzE3ODAsMTUg
QEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZFRyYW5zcG9ydE9mZmVy
KAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgY29uc3QgVHJhbnNw
b3J0T3B0aW9ucyYgdHJhbnNwb3J0X29wdGlvbnMsCiAgICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0
aW9uKiBjdXJyZW50X2Rlc2MsCi0gICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBvZmZlcl9kZXNjKSBj
b25zdCB7CisgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBvZmZlcl9kZXNjLAorICAgIEljZUNyZWRl
bnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3QgewogICBpZiAoIXRyYW5zcG9y
dF9kZXNjX2ZhY3RvcnlfKQogICAgIHJldHVybiBmYWxzZTsKICAgY29uc3QgVHJhbnNwb3J0RGVz
Y3JpcHRpb24qIGN1cnJlbnRfdGRlc2MgPQogICAgICAgR2V0VHJhbnNwb3J0RGVzY3JpcHRpb24o
Y29udGVudF9uYW1lLCBjdXJyZW50X2Rlc2MpOwogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0
RGVzY3JpcHRpb24+IG5ld190ZGVzYygKLSAgICAgIHRyYW5zcG9ydF9kZXNjX2ZhY3RvcnlfLT5D
cmVhdGVPZmZlcih0cmFuc3BvcnRfb3B0aW9ucywgY3VycmVudF90ZGVzYykpOworICAgICAgdHJh
bnNwb3J0X2Rlc2NfZmFjdG9yeV8tPkNyZWF0ZU9mZmVyKHRyYW5zcG9ydF9vcHRpb25zLCBjdXJy
ZW50X3RkZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlj
ZV9jcmVkZW50aWFscykpOwogICBib29sIHJldCA9CiAgICAgICAobmV3X3RkZXNjLmdldCgpICE9
IE5VTEwgJiYKICAgICAgICBvZmZlcl9kZXNjLT5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydElu
Zm8oY29udGVudF9uYW1lLCAqbmV3X3RkZXNjKSkpOwpAQCAtMTc4Nyw3ICsxODA0LDggQEAgVHJh
bnNwb3J0RGVzY3JpcHRpb24qIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRl
VHJhbnNwb3J0QW5zd2VyKAogICAgIGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiogb2ZmZXJfZGVz
YywKICAgICBjb25zdCBUcmFuc3BvcnRPcHRpb25zJiB0cmFuc3BvcnRfb3B0aW9ucywKICAgICBj
b25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzYywKLSAgICBib29sIHJlcXVpcmVf
dHJhbnNwb3J0X2F0dHJpYnV0ZXMpIGNvbnN0IHsKKyAgICBib29sIHJlcXVpcmVfdHJhbnNwb3J0
X2F0dHJpYnV0ZXMsCisgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxz
KSBjb25zdCB7CiAgIGlmICghdHJhbnNwb3J0X2Rlc2NfZmFjdG9yeV8pCiAgICAgcmV0dXJuIE5V
TEw7CiAgIGNvbnN0IFRyYW5zcG9ydERlc2NyaXB0aW9uKiBvZmZlcl90ZGVzYyA9CkBAIC0xNzk2
LDcgKzE4MTQsNyBAQCBUcmFuc3BvcnREZXNjcmlwdGlvbiogTWVkaWFTZXNzaW9uRGVzY3JpcHRp
b25GYWN0b3J5OjpDcmVhdGVUcmFuc3BvcnRBbnN3ZXIoCiAgICAgICBHZXRUcmFuc3BvcnREZXNj
cmlwdGlvbihjb250ZW50X25hbWUsIGN1cnJlbnRfZGVzYyk7CiAgIHJldHVybiB0cmFuc3BvcnRf
ZGVzY19mYWN0b3J5Xy0+Q3JlYXRlQW5zd2VyKG9mZmVyX3RkZXNjLCB0cmFuc3BvcnRfb3B0aW9u
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWly
ZV90cmFuc3BvcnRfYXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3VycmVudF90ZGVzYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfdGRlc2MsIGljZV9jcmVkZW50aWFscyk7CiB9
CiAKIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpBZGRUcmFuc3BvcnRBbnN3
ZXIoCkBAIC0xODMyLDcgKzE4NTAsOCBAQCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFj
dG9yeTo6QWRkQXVkaW9Db250ZW50Rm9yT2ZmZXIoCiAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5z
aW9ucyYgYXVkaW9fcnRwX2V4dGVuc2lvbnMsCiAgICAgY29uc3QgQXVkaW9Db2RlY3MmIGF1ZGlv
X2NvZGVjcywKICAgICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICBTZXNz
aW9uRGVzY3JpcHRpb24qIGRlc2MpIGNvbnN0IHsKKyAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRl
c2MsCisgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7
CiAgIC8vIEZpbHRlciBhdWRpb19jb2RlY3MgKHdoaWNoIGluY2x1ZGVzIGFsbCBjb2RlY3MsIHdp
dGggY29ycmVjdGx5IHJlbWFwcGVkCiAgIC8vIHBheWxvYWQgdHlwZXMpIGJhc2VkIG9uIHRyYW5z
Y2VpdmVyIGRpcmVjdGlvbi4KICAgY29uc3QgQXVkaW9Db2RlY3MmIHN1cHBvcnRlZF9hdWRpb19j
b2RlY3MgPQpAQCAtMTg4OCw3ICsxOTA3LDcgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlv
bkZhY3Rvcnk6OkFkZEF1ZGlvQ29udGVudEZvck9mZmVyKAogICAgICAgICAgICAgICAgICAgIG1l
ZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMuc3RvcHBlZCwgYXVkaW8ucmVsZWFzZSgpKTsKICAgaWYg
KCFBZGRUcmFuc3BvcnRPZmZlcihtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLm1pZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5zcG9ydF9v
cHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3JpcHRpb24sIGRl
c2MpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9kZXNjcmlwdGlvbiwgZGVz
YywgaWNlX2NyZWRlbnRpYWxzKSkgewogICAgIHJldHVybiBmYWxzZTsKICAgfQogCkBAIC0xOTAz
LDcgKzE5MjIsOCBAQCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6QWRkVmlk
ZW9Db250ZW50Rm9yT2ZmZXIoCiAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9ucyYgdmlkZW9f
cnRwX2V4dGVuc2lvbnMsCiAgICAgY29uc3QgVmlkZW9Db2RlY3MmIHZpZGVvX2NvZGVjcywKICAg
ICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICBTZXNzaW9uRGVzY3JpcHRp
b24qIGRlc2MpIGNvbnN0IHsKKyAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MsCisgICAgSWNl
Q3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIGNyaWNrZXQ6
OlNlY3VyZVBvbGljeSBzZGVzX3BvbGljeSA9CiAgICAgICBJc0R0bHNBY3RpdmUoY3VycmVudF9j
b250ZW50LCBjdXJyZW50X2Rlc2NyaXB0aW9uKSA/IGNyaWNrZXQ6OlNFQ19ESVNBQkxFRAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBz
ZWN1cmUoKTsKQEAgLTE5NTcsNyArMTk3Nyw3IEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRp
b25GYWN0b3J5OjpBZGRWaWRlb0NvbnRlbnRGb3JPZmZlcigKICAgICAgICAgICAgICAgICAgICBt
ZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnN0b3BwZWQsIHZpZGVvLnJlbGVhc2UoKSk7CiAgIGlm
ICghQWRkVHJhbnNwb3J0T2ZmZXIobWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy5taWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy50cmFuc3BvcnRf
b3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Rlc2NyaXB0aW9uLCBk
ZXNjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3JpcHRpb24sIGRl
c2MsIGljZV9jcmVkZW50aWFscykpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICAgcmV0dXJu
IHRydWU7CkBAIC0xOTcwLDcgKzE5OTAsOCBAQCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9u
RmFjdG9yeTo6QWRkRGF0YUNvbnRlbnRGb3JPZmZlcigKICAgICBjb25zdCBTZXNzaW9uRGVzY3Jp
cHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24sCiAgICAgY29uc3QgRGF0YUNvZGVjcyYgZGF0YV9j
b2RlY3MsCiAgICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0cmVhbXMsCi0gICAgU2Vzc2lv
bkRlc2NyaXB0aW9uKiBkZXNjKSBjb25zdCB7CisgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNj
LAorICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3Qgewog
ICBib29sIHNlY3VyZV90cmFuc3BvcnQgPSAodHJhbnNwb3J0X2Rlc2NfZmFjdG9yeV8tPnNlY3Vy
ZSgpICE9IFNFQ19ESVNBQkxFRCk7CiAKICAgc3RkOjp1bmlxdWVfcHRyPERhdGFDb250ZW50RGVz
Y3JpcHRpb24+IGRhdGEobmV3IERhdGFDb250ZW50RGVzY3JpcHRpb24oKSk7CkBAIC0yMDI0LDcg
KzIwNDUsNyBAQCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6QWRkRGF0YUNv
bnRlbnRGb3JPZmZlcigKICAgfQogICBpZiAoIUFkZFRyYW5zcG9ydE9mZmVyKG1lZGlhX2Rlc2Ny
aXB0aW9uX29wdGlvbnMubWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhX2Rlc2Ny
aXB0aW9uX29wdGlvbnMudHJhbnNwb3J0X29wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudF9kZXNjcmlwdGlvbiwgZGVzYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjdXJyZW50X2Rlc2NyaXB0aW9uLCBkZXNjLCBpY2VfY3JlZGVudGlhbHMpKSB7CiAgICAgcmV0
dXJuIGZhbHNlOwogICB9CiAgIHJldHVybiB0cnVlOwpAQCAtMjA1MiwxNSArMjA3MywxNiBAQCBi
b29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6QWRkQXVkaW9Db250ZW50Rm9yQW5z
d2VyKAogICAgIGNvbnN0IFRyYW5zcG9ydEluZm8qIGJ1bmRsZV90cmFuc3BvcnQsCiAgICAgY29u
c3QgQXVkaW9Db2RlY3MmIGF1ZGlvX2NvZGVjcywKICAgICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJl
bnRfc3RyZWFtcywKLSAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGFuc3dlcikgY29uc3QgeworICAg
IFNlc3Npb25EZXNjcmlwdGlvbiogYW5zd2VyLAorICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3Iq
IGljZV9jcmVkZW50aWFscykgY29uc3QgewogICBSVENfQ0hFQ0soSXNNZWRpYUNvbnRlbnRPZlR5
cGUob2ZmZXJfY29udGVudCwgTUVESUFfVFlQRV9BVURJTykpOwogICBjb25zdCBBdWRpb0NvbnRl
bnREZXNjcmlwdGlvbiogb2ZmZXJfYXVkaW9fZGVzY3JpcHRpb24gPQogICAgICAgb2ZmZXJfY29u
dGVudC0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfYXVkaW8oKTsKIAotICBzdGQ6OnVuaXF1ZV9w
dHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGF1ZGlvX3RyYW5zcG9ydCgKLSAgICAgIENyZWF0ZVRy
YW5zcG9ydEFuc3dlcihtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLm1pZCwgb2ZmZXJfZGVzY3Jp
cHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFfZGVzY3JpcHRpb25fb3B0
aW9ucy50cmFuc3BvcnRfb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50X2Rlc2NyaXB0aW9uLCBidW5kbGVfdHJhbnNwb3J0ICE9IG51bGxwdHIpKTsKKyAgc3RkOjp1
bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBhdWRpb190cmFuc3BvcnQoQ3JlYXRlVHJh
bnNwb3J0QW5zd2VyKAorICAgICAgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy5taWQsIG9mZmVy
X2Rlc2NyaXB0aW9uLAorICAgICAgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy50cmFuc3BvcnRf
b3B0aW9ucywgY3VycmVudF9kZXNjcmlwdGlvbiwKKyAgICAgIGJ1bmRsZV90cmFuc3BvcnQgIT0g
bnVsbHB0ciwgaWNlX2NyZWRlbnRpYWxzKSk7CiAgIGlmICghYXVkaW9fdHJhbnNwb3J0KSB7CiAg
ICAgcmV0dXJuIGZhbHNlOwogICB9CkBAIC0yMTQ2LDE1ICsyMTY4LDE2IEBAIGJvb2wgTWVkaWFT
ZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpBZGRWaWRlb0NvbnRlbnRGb3JBbnN3ZXIoCiAgICAg
Y29uc3QgVHJhbnNwb3J0SW5mbyogYnVuZGxlX3RyYW5zcG9ydCwKICAgICBjb25zdCBWaWRlb0Nv
ZGVjcyYgdmlkZW9fY29kZWNzLAogICAgIFN0cmVhbVBhcmFtc1ZlYyogY3VycmVudF9zdHJlYW1z
LAotICAgIFNlc3Npb25EZXNjcmlwdGlvbiogYW5zd2VyKSBjb25zdCB7CisgICAgU2Vzc2lvbkRl
c2NyaXB0aW9uKiBhbnN3ZXIsCisgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRl
bnRpYWxzKSBjb25zdCB7CiAgIFJUQ19DSEVDSyhJc01lZGlhQ29udGVudE9mVHlwZShvZmZlcl9j
b250ZW50LCBNRURJQV9UWVBFX1ZJREVPKSk7CiAgIGNvbnN0IFZpZGVvQ29udGVudERlc2NyaXB0
aW9uKiBvZmZlcl92aWRlb19kZXNjcmlwdGlvbiA9CiAgICAgICBvZmZlcl9jb250ZW50LT5tZWRp
YV9kZXNjcmlwdGlvbigpLT5hc192aWRlbygpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3Bv
cnREZXNjcmlwdGlvbj4gdmlkZW9fdHJhbnNwb3J0KAotICAgICAgQ3JlYXRlVHJhbnNwb3J0QW5z
d2VyKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkLCBvZmZlcl9kZXNjcmlwdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5z
cG9ydF9vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3Jp
cHRpb24sIGJ1bmRsZV90cmFuc3BvcnQgIT0gbnVsbHB0cikpOworICBzdGQ6OnVuaXF1ZV9wdHI8
VHJhbnNwb3J0RGVzY3JpcHRpb24+IHZpZGVvX3RyYW5zcG9ydChDcmVhdGVUcmFuc3BvcnRBbnN3
ZXIoCisgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLm1pZCwgb2ZmZXJfZGVzY3JpcHRp
b24sCisgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5zcG9ydF9vcHRpb25zLCBj
dXJyZW50X2Rlc2NyaXB0aW9uLAorICAgICAgYnVuZGxlX3RyYW5zcG9ydCAhPSBudWxscHRyLCBp
Y2VfY3JlZGVudGlhbHMpKTsKICAgaWYgKCF2aWRlb190cmFuc3BvcnQpIHsKICAgICByZXR1cm4g
ZmFsc2U7CiAgIH0KQEAgLTIyMzIsMTEgKzIyNTUsMTIgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNj
cmlwdGlvbkZhY3Rvcnk6OkFkZERhdGFDb250ZW50Rm9yQW5zd2VyKAogICAgIGNvbnN0IFRyYW5z
cG9ydEluZm8qIGJ1bmRsZV90cmFuc3BvcnQsCiAgICAgY29uc3QgRGF0YUNvZGVjcyYgZGF0YV9j
b2RlY3MsCiAgICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0cmVhbXMsCi0gICAgU2Vzc2lv
bkRlc2NyaXB0aW9uKiBhbnN3ZXIpIGNvbnN0IHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9y
dERlc2NyaXB0aW9uPiBkYXRhX3RyYW5zcG9ydCgKLSAgICAgIENyZWF0ZVRyYW5zcG9ydEFuc3dl
cihtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLm1pZCwgb2ZmZXJfZGVzY3JpcHRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy50cmFuc3Bv
cnRfb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Rlc2NyaXB0
aW9uLCBidW5kbGVfdHJhbnNwb3J0ICE9IG51bGxwdHIpKTsKKyAgICBTZXNzaW9uRGVzY3JpcHRp
b24qIGFuc3dlciwKKyAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMp
IGNvbnN0IHsKKyAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBkYXRhX3Ry
YW5zcG9ydChDcmVhdGVUcmFuc3BvcnRBbnN3ZXIoCisgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9v
cHRpb25zLm1pZCwgb2ZmZXJfZGVzY3JpcHRpb24sCisgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9v
cHRpb25zLnRyYW5zcG9ydF9vcHRpb25zLCBjdXJyZW50X2Rlc2NyaXB0aW9uLAorICAgICAgYnVu
ZGxlX3RyYW5zcG9ydCAhPSBudWxscHRyLCBpY2VfY3JlZGVudGlhbHMpKTsKICAgaWYgKCFkYXRh
X3RyYW5zcG9ydCkgewogICAgIHJldHVybiBmYWxzZTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24u
aAppbmRleCBiNDA5NzQwMzliODIwYTk2NWY1N2Q1N2YzNWM2ODkwMjFjNDQ1NDMwLi41OTA0NjA1
ZjEwYTRkYTI1ZmJkN2NkYzk1Y2ZiOTBmOTQ5OTE0NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24uaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24u
aApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgiCiAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVk
aWFlbmdpbmUuaCIgIC8vIEZvciBEYXRhQ2hhbm5lbFR5cGUKKyNpbmNsdWRlICJwMnAvYmFzZS9p
Y2VjcmVkZW50aWFsc2l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvdHJhbnNwb3J0ZGVz
Y3JpcHRpb25mYWN0b3J5LmgiCiAjaW5jbHVkZSAicGMvanNlcHRyYW5zcG9ydC5oIgogI2luY2x1
ZGUgInBjL3Nlc3Npb25kZXNjcmlwdGlvbi5oIgpAQCAtOTMsMTEgKzk0LDEzIEBAIHN0cnVjdCBN
ZWRpYVNlc3Npb25PcHRpb25zIHsKICAgYm9vbCBydGNwX211eF9lbmFibGVkID0gdHJ1ZTsKICAg
Ym9vbCBidW5kbGVfZW5hYmxlZCA9IGZhbHNlOwogICBib29sIGlzX3VuaWZpZWRfcGxhbiA9IGZh
bHNlOworICBib29sIG9mZmVyX2V4dG1hcF9hbGxvd19taXhlZCA9IGZhbHNlOwogICBzdGQ6OnN0
cmluZyBydGNwX2NuYW1lID0ga0RlZmF1bHRSdGNwQ25hbWU7Ci0gIHJ0Yzo6Q3J5cHRvT3B0aW9u
cyBjcnlwdG9fb3B0aW9uczsKKyAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25z
OwogICAvLyBMaXN0IG9mIG1lZGlhIGRlc2NyaXB0aW9uIG9wdGlvbnMgaW4gdGhlIHNhbWUgb3Jk
ZXIgdGhhdCB0aGUgbWVkaWEKICAgLy8gZGVzY3JpcHRpb25zIHdpbGwgYmUgZ2VuZXJhdGVkLgog
ICBzdGQ6OnZlY3RvcjxNZWRpYURlc2NyaXB0aW9uT3B0aW9ucz4gbWVkaWFfZGVzY3JpcHRpb25f
b3B0aW9uczsKKyAgc3RkOjp2ZWN0b3I8SWNlUGFyYW1ldGVycz4gcG9vbGVkX2ljZV9jcmVkZW50
aWFsczsKIH07CiAKIC8vIENyZWF0ZXMgbWVkaWEgc2Vzc2lvbiBkZXNjcmlwdGlvbnMgYWNjb3Jk
aW5nIHRvIHRoZSBzdXBwbGllZCBjb2RlY3MgYW5kCkBAIC0xODYsMTQgKzE4OSwxNiBAQCBjbGFz
cyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnkgewogICBib29sIEFkZFRyYW5zcG9ydE9m
ZmVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVHJhbnNwb3J0T3B0aW9ucyYgdHJhbnNwb3J0X29wdGlvbnMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBvZmZlcikgY29u
c3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBvZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3Jl
ZGVudGlhbHMpIGNvbnN0OwogCiAgIFRyYW5zcG9ydERlc2NyaXB0aW9uKiBDcmVhdGVUcmFuc3Bv
cnRBbnN3ZXIoCiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAogICAgICAg
Y29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBvZmZlcl9kZXNjLAogICAgICAgY29uc3QgVHJhbnNw
b3J0T3B0aW9ucyYgdHJhbnNwb3J0X29wdGlvbnMsCiAgICAgICBjb25zdCBTZXNzaW9uRGVzY3Jp
cHRpb24qIGN1cnJlbnRfZGVzYywKLSAgICAgIGJvb2wgcmVxdWlyZV90cmFuc3BvcnRfYXR0cmli
dXRlcykgY29uc3Q7CisgICAgICBib29sIHJlcXVpcmVfdHJhbnNwb3J0X2F0dHJpYnV0ZXMsCisg
ICAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0OwogCiAg
IGJvb2wgQWRkVHJhbnNwb3J0QW5zd2VyKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zcG9ydERlc2NyaXB0aW9uJiB0
cmFuc3BvcnRfZGVzYywKQEAgLTIxMSw3ICsyMTYsOCBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNj
cmlwdGlvbkZhY3RvcnkgewogICAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9ucyYgYXVkaW9f
cnRwX2V4dGVuc2lvbnMsCiAgICAgICBjb25zdCBBdWRpb0NvZGVjcyYgYXVkaW9fY29kZWNzLAog
ICAgICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0cmVhbXMsCi0gICAgICBTZXNzaW9uRGVz
Y3JpcHRpb24qIGRlc2MpIGNvbnN0OworICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjLAor
ICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdDsKIAog
ICBib29sIEFkZFZpZGVvQ29udGVudEZvck9mZmVyKAogICAgICAgY29uc3QgTWVkaWFEZXNjcmlw
dGlvbk9wdGlvbnMmIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsCkBAIC0yMjEsNyArMjI3LDgg
QEAgY2xhc3MgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5IHsKICAgICAgIGNvbnN0IFJ0
cEhlYWRlckV4dGVuc2lvbnMmIHZpZGVvX3J0cF9leHRlbnNpb25zLAogICAgICAgY29uc3QgVmlk
ZW9Db2RlY3MmIHZpZGVvX2NvZGVjcywKICAgICAgIFN0cmVhbVBhcmFtc1ZlYyogY3VycmVudF9z
dHJlYW1zLAotICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjKSBjb25zdDsKKyAgICAgIFNl
c3Npb25EZXNjcmlwdGlvbiogZGVzYywKKyAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGlj
ZV9jcmVkZW50aWFscykgY29uc3Q7CiAKICAgYm9vbCBBZGREYXRhQ29udGVudEZvck9mZmVyKAog
ICAgICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvbk9wdGlvbnMmIG1lZGlhX2Rlc2NyaXB0aW9uX29w
dGlvbnMsCkBAIC0yMzAsNyArMjM3LDggQEAgY2xhc3MgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25G
YWN0b3J5IHsKICAgICAgIGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiogY3VycmVudF9kZXNjcmlw
dGlvbiwKICAgICAgIGNvbnN0IERhdGFDb2RlY3MmIGRhdGFfY29kZWNzLAogICAgICAgU3RyZWFt
UGFyYW1zVmVjKiBjdXJyZW50X3N0cmVhbXMsCi0gICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRl
c2MpIGNvbnN0OworICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjLAorICAgICAgSWNlQ3Jl
ZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdDsKIAogICBib29sIEFkZEF1
ZGlvQ29udGVudEZvckFuc3dlcigKICAgICAgIGNvbnN0IE1lZGlhRGVzY3JpcHRpb25PcHRpb25z
JiBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLApAQCAtMjQyLDcgKzI1MCw4IEBAIGNsYXNzIE1l
ZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeSB7CiAgICAgICBjb25zdCBUcmFuc3BvcnRJbmZv
KiBidW5kbGVfdHJhbnNwb3J0LAogICAgICAgY29uc3QgQXVkaW9Db2RlY3MmIGF1ZGlvX2NvZGVj
cywKICAgICAgIFN0cmVhbVBhcmFtc1ZlYyogY3VycmVudF9zdHJlYW1zLAotICAgICAgU2Vzc2lv
bkRlc2NyaXB0aW9uKiBhbnN3ZXIpIGNvbnN0OworICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBh
bnN3ZXIsCisgICAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNv
bnN0OwogCiAgIGJvb2wgQWRkVmlkZW9Db250ZW50Rm9yQW5zd2VyKAogICAgICAgY29uc3QgTWVk
aWFEZXNjcmlwdGlvbk9wdGlvbnMmIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsCkBAIC0yNTQs
NyArMjYzLDggQEAgY2xhc3MgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5IHsKICAgICAg
IGNvbnN0IFRyYW5zcG9ydEluZm8qIGJ1bmRsZV90cmFuc3BvcnQsCiAgICAgICBjb25zdCBWaWRl
b0NvZGVjcyYgdmlkZW9fY29kZWNzLAogICAgICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0
cmVhbXMsCi0gICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGFuc3dlcikgY29uc3Q7CisgICAgICBT
ZXNzaW9uRGVzY3JpcHRpb24qIGFuc3dlciwKKyAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3Iq
IGljZV9jcmVkZW50aWFscykgY29uc3Q7CiAKICAgYm9vbCBBZGREYXRhQ29udGVudEZvckFuc3dl
cigKICAgICAgIGNvbnN0IE1lZGlhRGVzY3JpcHRpb25PcHRpb25zJiBtZWRpYV9kZXNjcmlwdGlv
bl9vcHRpb25zLApAQCAtMjY2LDcgKzI3Niw4IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2NyaXB0
aW9uRmFjdG9yeSB7CiAgICAgICBjb25zdCBUcmFuc3BvcnRJbmZvKiBidW5kbGVfdHJhbnNwb3J0
LAogICAgICAgY29uc3QgRGF0YUNvZGVjcyYgZGF0YV9jb2RlY3MsCiAgICAgICBTdHJlYW1QYXJh
bXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICAgIFNlc3Npb25EZXNjcmlwdGlvbiogYW5zd2Vy
KSBjb25zdDsKKyAgICAgIFNlc3Npb25EZXNjcmlwdGlvbiogYW5zd2VyLAorICAgICAgSWNlQ3Jl
ZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdDsKIAogICB2b2lkIENvbXB1
dGVBdWRpb0NvZGVjc0ludGVyc2VjdGlvbkFuZFVuaW9uKCk7CiAKQEAgLTMyNywyMCArMzM4LDIz
IEBAIERhdGFDb250ZW50RGVzY3JpcHRpb24qIEdldEZpcnN0RGF0YUNvbnRlbnREZXNjcmlwdGlv
bigKICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIHNkZXNjKTsKIAogLy8gSGVscGVyIGZ1bmN0aW9u
cyB0byByZXR1cm4gY3J5cHRvIHN1aXRlcyB1c2VkIGZvciBTREVTLgotdm9pZCBHZXRTdXBwb3J0
ZWRBdWRpb1NkZXNDcnlwdG9TdWl0ZXMoY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9f
b3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPGludD4qIGNyeXB0b19zdWl0ZXMpOwotdm9pZCBHZXRTdXBwb3J0ZWRWaWRlb1NkZXNDcnlw
dG9TdWl0ZXMoY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0
b19zdWl0ZXMpOwotdm9pZCBHZXRTdXBwb3J0ZWREYXRhU2Rlc0NyeXB0b1N1aXRlcyhjb25zdCBy
dGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+KiBjcnlwdG9fc3VpdGVzKTsKK3ZvaWQg
R2V0U3VwcG9ydGVkQXVkaW9TZGVzQ3J5cHRvU3VpdGVzKAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5
cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5cHRv
X3N1aXRlcyk7Cit2b2lkIEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0b1N1aXRlcygKKyAgICBj
b25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgIHN0ZDo6dmVj
dG9yPGludD4qIGNyeXB0b19zdWl0ZXMpOwordm9pZCBHZXRTdXBwb3J0ZWREYXRhU2Rlc0NyeXB0
b1N1aXRlcygKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25z
LAorICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0b19zdWl0ZXMpOwogdm9pZCBHZXRTdXBwb3J0
ZWRBdWRpb1NkZXNDcnlwdG9TdWl0ZU5hbWVzKAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9u
cyYgY3J5cHRvX29wdGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlw
dG9fb3B0aW9ucywKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIGNyeXB0b19zdWl0ZV9u
YW1lcyk7CiB2b2lkIEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0b1N1aXRlTmFtZXMoCi0gICAg
Y29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBjb25zdCB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiogY3J5cHRvX3N1aXRlX25hbWVzKTsKIHZvaWQgR2V0U3VwcG9ydGVkRGF0YVNkZXND
cnlwdG9TdWl0ZU5hbWVzKAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29w
dGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywK
ICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIGNyeXB0b19zdWl0ZV9uYW1lcyk7CiAKIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gbWVkaWEgc2VjdGlvbiBwcm90b2NvbCBpbmRpY2F0
ZXMgdXNlIG9mIFJUUC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbl91bml0dGVzdC5jYwpp
bmRleCBkYjMyNWVkMmVmMTY3ZWJmOWIzYWRlODMyY2I0Y2NkYmY3ZjczYzE2Li4wNzZhZDEyYTVi
MzQ5ODBjMDBjMzEyMDk3NDlhMWViNTM2ZmMzNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb25fdW5pdHRlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFz
ZXNzaW9uX3VuaXR0ZXN0LmNjCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbmNsdWRlICJydGNfYmFz
ZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsYWRhcHRlci5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKKyNpbmNsdWRlICJ0ZXN0
L2dtb2NrLmgiCiAKICNkZWZpbmUgQVNTRVJUX0NSWVBUTyhjZCwgcywgY3MpICAgICAgXAogICBB
U1NFUlRfRVEocywgY2QtPmNyeXB0b3MoKS5zaXplKCkpOyBcCi0gIEFTU0VSVF9FUShzdGQ6OnN0
cmluZyhjcyksIGNkLT5jcnlwdG9zKClbMF0uY2lwaGVyX3N1aXRlKQorICBBU1NFUlRfRVEoY3Ms
IGNkLT5jcnlwdG9zKClbMF0uY2lwaGVyX3N1aXRlKQogCiB0eXBlZGVmIHN0ZDo6dmVjdG9yPGNy
aWNrZXQ6OkNhbmRpZGF0ZT4gQ2FuZGlkYXRlczsKIApAQCAtNzEsNiArNzIsNyBAQCB1c2luZyBy
dGM6OkNTX0FFU19DTV8xMjhfSE1BQ19TSEExXzMyOwogdXNpbmcgcnRjOjpDU19BRVNfQ01fMTI4
X0hNQUNfU0hBMV84MDsKIHVzaW5nIHJ0Yzo6Q1NfQUVBRF9BRVNfMTI4X0dDTTsKIHVzaW5nIHJ0
Yzo6Q1NfQUVBRF9BRVNfMjU2X0dDTTsKK3VzaW5nIHRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXk7
CiB1c2luZyB3ZWJydGM6OlJ0cEV4dGVuc2lvbjsKIHVzaW5nIHdlYnJ0Yzo6UnRwVHJhbnNjZWl2
ZXJEaXJlY3Rpb247CiAKQEAgLTU0NSw3ICs1NDcsNyBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNj
cmlwdGlvbkZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIEVYUEVDVF9U
UlVFKENvbXBhcmVDcnlwdG9QYXJhbXMoYXVkaW9fbWVkaWFfZGVzYy0+Y3J5cHRvcygpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9fbWVkaWFfZGVzYy0+Y3J5cHRv
cygpKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBhdWRpb19tZWRpYV9kZXNjLT5jcnlwdG9zKCkuc2l6
ZSgpKTsKLSAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoa0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUp
LAorICAgIEVYUEVDVF9FUShrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSwKICAgICAgICAgICAgICAg
YXVkaW9fbWVkaWFfZGVzYy0+Y3J5cHRvcygpWzBdLmNpcGhlcl9zdWl0ZSk7CiAKICAgICAvLyBW
ZXJpZnkgdGhlIHNlbGVjdGVkIGNyeXB0byBpcyBvbmUgZnJvbSB0aGUgcmVmZXJlbmNlIGF1ZGlv
CkBAIC02MDksMTEgKzYxMSwxMSBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rv
cnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICB2b2lkIFRlc3RWaWRlb0djbUNpcGhl
cihib29sIGdjbV9vZmZlciwgYm9vbCBnY21fYW5zd2VyKSB7CiAgICAgTWVkaWFTZXNzaW9uT3B0
aW9ucyBvZmZlcl9vcHRzOwogICAgIEFkZEF1ZGlvVmlkZW9TZWN0aW9ucyhSdHBUcmFuc2NlaXZl
ckRpcmVjdGlvbjo6a1JlY3ZPbmx5LCAmb2ZmZXJfb3B0cyk7Ci0gICAgb2ZmZXJfb3B0cy5jcnlw
dG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSBnY21fb2ZmZXI7CisgICAgb2Zm
ZXJfb3B0cy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IGdj
bV9vZmZlcjsKIAogICAgIE1lZGlhU2Vzc2lvbk9wdGlvbnMgYW5zd2VyX29wdHM7CiAgICAgQWRk
QXVkaW9WaWRlb1NlY3Rpb25zKFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uOjprUmVjdk9ubHksICZh
bnN3ZXJfb3B0cyk7Ci0gICAgYW5zd2VyX29wdHMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9j
cnlwdG9fc3VpdGVzID0gZ2NtX2Fuc3dlcjsKKyAgICBhbnN3ZXJfb3B0cy5jcnlwdG9fb3B0aW9u
cy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IGdjbV9hbnN3ZXI7CiAKICAgICBmMV8u
c2V0X3NlY3VyZShTRUNfRU5BQkxFRCk7CiAgICAgZjJfLnNldF9zZWN1cmUoU0VDX0VOQUJMRUQp
OwpAQCAtNjMxLDcgKzYzMyw3IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9y
eVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgY29uc3QgQXVkaW9Db250ZW50RGVz
Y3JpcHRpb24qIGFjZCA9IGFjLT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19hdWRpbygpOwogICAg
IGNvbnN0IFZpZGVvQ29udGVudERlc2NyaXB0aW9uKiB2Y2QgPSB2Yy0+bWVkaWFfZGVzY3JpcHRp
b24oKS0+YXNfdmlkZW8oKTsKICAgICBFWFBFQ1RfRVEoTUVESUFfVFlQRV9BVURJTywgYWNkLT50
eXBlKCkpOwotICAgIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrQXVkaW9Db2RlY3NBbnN3ZXIpLCBh
Y2QtPmNvZGVjcygpKTsKKyAgICBFWFBFQ1RfVEhBVChhY2QtPmNvZGVjcygpLCBFbGVtZW50c0Fy
ZUFycmF5KGtBdWRpb0NvZGVjc0Fuc3dlcikpOwogICAgIEVYUEVDVF9FUShrQXV0b0JhbmR3aWR0
aCwgYWNkLT5iYW5kd2lkdGgoKSk7ICAvLyBuZWdvdGlhdGVkIGF1dG8gYncKICAgICBFWFBFQ1Rf
RVEoMFUsIGFjZC0+Zmlyc3Rfc3NyYygpKTsgICAgICAgICAgICAgLy8gbm8gc2VuZGVyIGlzIGF0
dGFjaGVkCiAgICAgRVhQRUNUX1RSVUUoYWNkLT5ydGNwX211eCgpKTsgICAgICAgICAgICAgICAg
IC8vIG5lZ290aWF0ZWQgcnRjcC1tdXgKQEAgLTY0MSw3ICs2NDMsNyBAQCBjbGFzcyBNZWRpYVNl
c3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAg
ICAgQVNTRVJUX0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7CiAgICAg
fQogICAgIEVYUEVDVF9FUShNRURJQV9UWVBFX1ZJREVPLCB2Y2QtPnR5cGUoKSk7Ci0gICAgRVhQ
RUNUX0VRKE1BS0VfVkVDVE9SKGtWaWRlb0NvZGVjc0Fuc3dlciksIHZjZC0+Y29kZWNzKCkpOwor
ICAgIEVYUEVDVF9USEFUKHZjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa1ZpZGVvQ29k
ZWNzQW5zd2VyKSk7CiAgICAgRVhQRUNUX0VRKDBVLCB2Y2QtPmZpcnN0X3NzcmMoKSk7ICAvLyBu
byBzZW5kZXIgaXMgYXR0YWNoZWQKICAgICBFWFBFQ1RfVFJVRSh2Y2QtPnJ0Y3BfbXV4KCkpOyAg
ICAgIC8vIG5lZ290aWF0ZWQgcnRjcC1tdXgKICAgICBpZiAoZ2NtX29mZmVyICYmIGdjbV9hbnN3
ZXIpIHsKQEAgLTY0OSw3ICs2NTEsNyBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZh
Y3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIH0gZWxzZSB7CiAgICAgICBB
U1NFUlRfQ1JZUFRPKHZjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKICAgICB9Ci0g
ICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCB2
Y2QtPnByb3RvY29sKCkpOworICAgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbFNh
dnBmLCB2Y2QtPnByb3RvY29sKCkpOwogICB9CiAKICBwcm90ZWN0ZWQ6CkBAIC02NzcsNyArNjc5
LDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVh
dGVBdWRpb09mZmVyKSB7CiAgIEVYUEVDVF9FUShrQXV0b0JhbmR3aWR0aCwgYWNkLT5iYW5kd2lk
dGgoKSk7ICAvLyBkZWZhdWx0IGJhbmR3aWR0aCAoYXV0bykKICAgRVhQRUNUX1RSVUUoYWNkLT5y
dGNwX211eCgpKTsgICAgICAgICAgICAgICAgIC8vIHJ0Y3AtbXV4IGRlZmF1bHRzIG9uCiAgIEFT
U0VSVF9DUllQVE8oYWNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwotICBFWFBFQ1Rf
RVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiksIGFjZC0+cHJvdG9j
b2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmLCBhY2QtPnBy
b3RvY29sKCkpOwogfQogCiAvLyBDcmVhdGUgYSB0eXBpY2FsIHZpZGVvIG9mZmVyLCBhbmQgZW5z
dXJlIGl0IG1hdGNoZXMgd2hhdCB3ZSBleHBlY3QuCkBAIC03MDEsMTQgKzcwMywxNCBAQCBURVNU
X0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdENyZWF0ZVZpZGVvT2Zm
ZXIpIHsKICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgpKTsgIC8v
IGRlZmF1bHQgYmFuZHdpZHRoIChhdXRvKQogICBFWFBFQ1RfVFJVRShhY2QtPnJ0Y3BfbXV4KCkp
OyAgICAgICAgICAgICAgICAgLy8gcnRjcC1tdXggZGVmYXVsdHMgb24KICAgQVNTRVJUX0NSWVBU
TyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0
cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgYWNkLT5wcm90b2NvbCgpKTsKKyAg
RVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGFjZC0+cHJvdG9jb2woKSk7
CiAgIEVYUEVDVF9FUShNRURJQV9UWVBFX1ZJREVPLCB2Y2QtPnR5cGUoKSk7CiAgIEVYUEVDVF9F
UShmMV8udmlkZW9fY29kZWNzKCksIHZjZC0+Y29kZWNzKCkpOwogICBFWFBFQ1RfRVEoMFUsIHZj
ZC0+Zmlyc3Rfc3NyYygpKTsgICAgICAgICAgICAgLy8gbm8gc2VuZGVyIGlzIGF0dGFjaGVkCiAg
IEVYUEVDVF9FUShrQXV0b0JhbmR3aWR0aCwgdmNkLT5iYW5kd2lkdGgoKSk7ICAvLyBkZWZhdWx0
IGJhbmR3aWR0aCAoYXV0bykKICAgRVhQRUNUX1RSVUUodmNkLT5ydGNwX211eCgpKTsgICAgICAg
ICAgICAgICAgIC8vIHJ0Y3AtbXV4IGRlZmF1bHRzIG9uCiAgIEFTU0VSVF9DUllQVE8odmNkLCAx
VSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3Jp
Y2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiksIHZjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9F
UShjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmLCB2Y2QtPnByb3RvY29sKCkpOwogfQogCiAv
LyBUZXN0IGNyZWF0aW5nIGFuIG9mZmVyIHdpdGggYnVuZGxlIHdoZXJlIHRoZSBDb2RlY3MgaGF2
ZSB0aGUgc2FtZSBkeW5hbWljCkBAIC03NzksMTEgKzc4MSwxMSBAQCBURVNUX0YoTWVkaWFTZXNz
aW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKICAgRVhQRUNUX1RSVUUoTlVMTCAhPSBkY2QpOwog
CiAgIEFTU0VSVF9DUllQVE8oYWNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwotICBF
WFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiksIGFjZC0+
cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmLCBh
Y2QtPnByb3RvY29sKCkpOwogICBBU1NFUlRfQ1JZUFRPKHZjZCwgMVUsIGtEZWZhdWx0U3J0cENy
eXB0b1N1aXRlKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3Rv
Y29sU2F2cGYpLCB2Y2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlh
UHJvdG9jb2xTYXZwZiwgdmNkLT5wcm90b2NvbCgpKTsKICAgQVNTRVJUX0NSWVBUTyhkY2QsIDFV
LCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlj
a2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgZGNkLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VR
KGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGRjZC0+cHJvdG9jb2woKSk7CiB9CiAKIC8v
IENyZWF0ZSBhIFJUUCBkYXRhIG9mZmVyLCBhbmQgZW5zdXJlIGl0IG1hdGNoZXMgd2hhdCB3ZSBl
eHBlY3QuCkBAIC04MDgsNyArODEwLDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9u
RmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVSdHBEYXRhT2ZmZXIpIHsKICAgRVhQRUNUX0VRKGtBdXRv
QmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgpKTsgIC8vIGRlZmF1bHQgYmFuZHdpZHRoIChhdXRv
KQogICBFWFBFQ1RfVFJVRShhY2QtPnJ0Y3BfbXV4KCkpOyAgICAgICAgICAgICAgICAgLy8gcnRj
cC1tdXggZGVmYXVsdHMgb24KICAgQVNTRVJUX0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBD
cnlwdG9TdWl0ZSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90
b2NvbFNhdnBmKSwgYWNkLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRp
YVByb3RvY29sU2F2cGYsIGFjZC0+cHJvdG9jb2woKSk7CiAgIEVYUEVDVF9FUShNRURJQV9UWVBF
X0RBVEEsIGRjZC0+dHlwZSgpKTsKICAgRVhQRUNUX0VRKGYxXy5kYXRhX2NvZGVjcygpLCBkY2Qt
PmNvZGVjcygpKTsKICAgRVhQRUNUX0VRKDBVLCBkY2QtPmZpcnN0X3NzcmMoKSk7ICAvLyBubyBz
ZW5kZXIgaXMgYXR0YWNoZWQuCkBAIC04MTYsNyArODE4LDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lv
bkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVSdHBEYXRhT2ZmZXIpIHsKICAgICAg
ICAgICAgIGRjZC0+YmFuZHdpZHRoKCkpOyAgIC8vIGRlZmF1bHQgYmFuZHdpZHRoIChhdXRvKQog
ICBFWFBFQ1RfVFJVRShkY2QtPnJ0Y3BfbXV4KCkpOyAgLy8gcnRjcC1tdXggZGVmYXVsdHMgb24K
ICAgQVNTRVJUX0NSWVBUTyhkY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVY
UEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgZGNkLT5w
cm90b2NvbCgpKTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGRj
ZC0+cHJvdG9jb2woKSk7CiB9CiAKIC8vIENyZWF0ZSBhbiBTQ1RQIGRhdGEgb2ZmZXIgd2l0aCBi
dW5kbGUgd2l0aG91dCBlcnJvci4KQEAgLTkzOSwxMiArOTQxLDEyIEBAIFRFU1RfRihNZWRpYVNl
c3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3JlYXRlQXVkaW9BbnN3ZXIpIHsKICAg
RVhQRUNUX0VRKE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCBhYy0+dHlwZSk7CiAgIGNvbnN0IEF1
ZGlvQ29udGVudERlc2NyaXB0aW9uKiBhY2QgPSBhYy0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNf
YXVkaW8oKTsKICAgRVhQRUNUX0VRKE1FRElBX1RZUEVfQVVESU8sIGFjZC0+dHlwZSgpKTsKLSAg
RVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtBdWRpb0NvZGVjc0Fuc3dlciksIGFjZC0+Y29kZWNzKCkp
OworICBFWFBFQ1RfVEhBVChhY2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtBdWRpb0Nv
ZGVjc0Fuc3dlcikpOwogICBFWFBFQ1RfRVEoMFUsIGFjZC0+Zmlyc3Rfc3NyYygpKTsgICAgICAg
ICAgICAgLy8gbm8gc2VuZGVyIGlzIGF0dGFjaGVkCiAgIEVYUEVDVF9FUShrQXV0b0JhbmR3aWR0
aCwgYWNkLT5iYW5kd2lkdGgoKSk7ICAvLyBuZWdvdGlhdGVkIGF1dG8gYncKICAgRVhQRUNUX1RS
VUUoYWNkLT5ydGNwX211eCgpKTsgICAgICAgICAgICAgICAgIC8vIG5lZ290aWF0ZWQgcnRjcC1t
dXgKICAgQVNTRVJUX0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0g
IEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgYWNk
LT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYs
IGFjZC0+cHJvdG9jb2woKSk7CiB9CiAKIC8vIENyZWF0ZSBhIHR5cGljYWwgYXVkaW8gYW5zd2Vy
IHdpdGggR0NNIGNpcGhlcnMgZW5hYmxlZCwgYW5kIGVuc3VyZSBpdApAQCAtOTUzLDcgKzk1NSw3
IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3JlYXRl
QXVkaW9BbnN3ZXJHY20pIHsKICAgZjFfLnNldF9zZWN1cmUoU0VDX0VOQUJMRUQpOwogICBmMl8u
c2V0X3NlY3VyZShTRUNfRU5BQkxFRCk7CiAgIE1lZGlhU2Vzc2lvbk9wdGlvbnMgb3B0cyA9IENy
ZWF0ZVBsYW5CTWVkaWFTZXNzaW9uT3B0aW9ucygpOwotICBvcHRzLmNyeXB0b19vcHRpb25zLmVu
YWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHRydWU7CisgIG9wdHMuY3J5cHRvX29wdGlvbnMuc3J0
cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSB0cnVlOwogICBzdGQ6OnVuaXF1ZV9wdHI8U2Vz
c2lvbkRlc2NyaXB0aW9uPiBvZmZlcihmMV8uQ3JlYXRlT2ZmZXIob3B0cywgTlVMTCkpOwogICBB
U1NFUlRfVFJVRShvZmZlci5nZXQoKSAhPSBOVUxMKTsKICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Np
b25EZXNjcmlwdGlvbj4gYW5zd2VyKApAQCAtOTY1LDEyICs5NjcsMTIgQEAgVEVTVF9GKE1lZGlh
U2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVBdWRpb0Fuc3dlckdjbSkg
ewogICBFWFBFQ1RfRVEoTWVkaWFQcm90b2NvbFR5cGU6OmtSdHAsIGFjLT50eXBlKTsKICAgY29u
c3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGFjZCA9IGFjLT5tZWRpYV9kZXNjcmlwdGlvbigp
LT5hc19hdWRpbygpOwogICBFWFBFQ1RfRVEoTUVESUFfVFlQRV9BVURJTywgYWNkLT50eXBlKCkp
OwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Ioa0F1ZGlvQ29kZWNzQW5zd2VyKSwgYWNkLT5jb2Rl
Y3MoKSk7CisgIEVYUEVDVF9USEFUKGFjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa0F1
ZGlvQ29kZWNzQW5zd2VyKSk7CiAgIEVYUEVDVF9FUSgwVSwgYWNkLT5maXJzdF9zc3JjKCkpOyAg
ICAgICAgICAgICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAgRVhQRUNUX0VRKGtBdXRvQmFu
ZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgpKTsgIC8vIG5lZ290aWF0ZWQgYXV0byBidwogICBFWFBF
Q1RfVFJVRShhY2QtPnJ0Y3BfbXV4KCkpOyAgICAgICAgICAgICAgICAgLy8gbmVnb3RpYXRlZCBy
dGNwLW11eAogICBBU1NFUlRfQ1JZUFRPKGFjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRl
R2NtKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2
cGYpLCBhY2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9j
b2xTYXZwZiwgYWNkLT5wcm90b2NvbCgpKTsKIH0KIAogLy8gQ3JlYXRlIGEgdHlwaWNhbCB2aWRl
byBhbnN3ZXIsIGFuZCBlbnN1cmUgaXQgbWF0Y2hlcyB3aGF0IHdlIGV4cGVjdC4KQEAgLTk5Miwx
NyArOTk0LDE3IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBU
ZXN0Q3JlYXRlVmlkZW9BbnN3ZXIpIHsKICAgY29uc3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24q
IGFjZCA9IGFjLT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19hdWRpbygpOwogICBjb25zdCBWaWRl
b0NvbnRlbnREZXNjcmlwdGlvbiogdmNkID0gdmMtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX3Zp
ZGVvKCk7CiAgIEVYUEVDVF9FUShNRURJQV9UWVBFX0FVRElPLCBhY2QtPnR5cGUoKSk7Ci0gIEVY
UEVDVF9FUShNQUtFX1ZFQ1RPUihrQXVkaW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsK
KyAgRVhQRUNUX1RIQVQoYWNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2Rl
Y3NBbnN3ZXIpKTsKICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgp
KTsgIC8vIG5lZ290aWF0ZWQgYXV0byBidwogICBFWFBFQ1RfRVEoMFUsIGFjZC0+Zmlyc3Rfc3Ny
YygpKTsgICAgICAgICAgICAgLy8gbm8gc2VuZGVyIGlzIGF0dGFjaGVkCiAgIEVYUEVDVF9UUlVF
KGFjZC0+cnRjcF9tdXgoKSk7ICAgICAgICAgICAgICAgICAvLyBuZWdvdGlhdGVkIHJ0Y3AtbXV4
CiAgIEFTU0VSVF9DUllQVE8oYWNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwogICBF
WFBFQ1RfRVEoTUVESUFfVFlQRV9WSURFTywgdmNkLT50eXBlKCkpOwotICBFWFBFQ1RfRVEoTUFL
RV9WRUNUT1Ioa1ZpZGVvQ29kZWNzQW5zd2VyKSwgdmNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9U
SEFUKHZjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa1ZpZGVvQ29kZWNzQW5zd2VyKSk7
CiAgIEVYUEVDVF9FUSgwVSwgdmNkLT5maXJzdF9zc3JjKCkpOyAgLy8gbm8gc2VuZGVyIGlzIGF0
dGFjaGVkCiAgIEVYUEVDVF9UUlVFKHZjZC0+cnRjcF9tdXgoKSk7ICAgICAgLy8gbmVnb3RpYXRl
ZCBydGNwLW11eAogICBBU1NFUlRfQ1JZUFRPKHZjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1
aXRlKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2
cGYpLCB2Y2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9j
b2xTYXZwZiwgdmNkLT5wcm90b2NvbCgpKTsKIH0KIAogLy8gQ3JlYXRlIGEgdHlwaWNhbCB2aWRl
byBhbnN3ZXIgd2l0aCBHQ00gY2lwaGVycyBlbmFibGVkLCBhbmQgZW5zdXJlIGl0CkBAIC0xMDQx
LDIzICsxMDQzLDIzIEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0
LCBUZXN0Q3JlYXRlRGF0YUFuc3dlcikgewogICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlv
biogYWNkID0gYWMtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7CiAgIGNvbnN0IERh
dGFDb250ZW50RGVzY3JpcHRpb24qIGRjZCA9IGRjLT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19k
YXRhKCk7CiAgIEVYUEVDVF9FUShNRURJQV9UWVBFX0FVRElPLCBhY2QtPnR5cGUoKSk7Ci0gIEVY
UEVDVF9FUShNQUtFX1ZFQ1RPUihrQXVkaW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsK
KyAgRVhQRUNUX1RIQVQoYWNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2Rl
Y3NBbnN3ZXIpKTsKICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgp
KTsgIC8vIG5lZ290aWF0ZWQgYXV0byBidwogICBFWFBFQ1RfRVEoMFUsIGFjZC0+Zmlyc3Rfc3Ny
YygpKTsgICAgICAgICAgICAgLy8gbm8gc2VuZGVyIGlzIGF0dGFjaGVkCiAgIEVYUEVDVF9UUlVF
KGFjZC0+cnRjcF9tdXgoKSk7ICAgICAgICAgICAgICAgICAvLyBuZWdvdGlhdGVkIHJ0Y3AtbXV4
CiAgIEFTU0VSVF9DUllQVE8oYWNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwogICBF
WFBFQ1RfRVEoTUVESUFfVFlQRV9EQVRBLCBkY2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtF
X1ZFQ1RPUihrRGF0YUNvZGVjc0Fuc3dlciksIGRjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhB
VChkY2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtEYXRhQ29kZWNzQW5zd2VyKSk7CiAg
IEVYUEVDVF9FUSgwVSwgZGNkLT5maXJzdF9zc3JjKCkpOyAgLy8gbm8gc2VuZGVyIGlzIGF0dGFj
aGVkCiAgIEVYUEVDVF9UUlVFKGRjZC0+cnRjcF9tdXgoKSk7ICAgICAgLy8gbmVnb3RpYXRlZCBy
dGNwLW11eAogICBBU1NFUlRfQ1JZUFRPKGRjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRl
KTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYp
LCBkY2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xT
YXZwZiwgZGNkLT5wcm90b2NvbCgpKTsKIH0KIAogVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0
aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVEYXRhQW5zd2VyR2NtKSB7CiAgIE1lZGlhU2Vzc2lv
bk9wdGlvbnMgb3B0cyA9IENyZWF0ZVBsYW5CTWVkaWFTZXNzaW9uT3B0aW9ucygpOwogICBBZGRE
YXRhU2VjdGlvbihjcmlja2V0OjpEQ1RfUlRQLCBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a1Jl
Y3ZPbmx5LCAmb3B0cyk7Ci0gIG9wdHMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9f
c3VpdGVzID0gdHJ1ZTsKKyAgb3B0cy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5
cHRvX3N1aXRlcyA9IHRydWU7CiAgIGYxXy5zZXRfc2VjdXJlKFNFQ19FTkFCTEVEKTsKICAgZjJf
LnNldF9zZWN1cmUoU0VDX0VOQUJMRUQpOwogICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2Ny
aXB0aW9uPiBvZmZlcihmMV8uQ3JlYXRlT2ZmZXIob3B0cywgTlVMTCkpOwpAQCAtMTA3MywxNyAr
MTA3NSwxNyBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVz
dENyZWF0ZURhdGFBbnN3ZXJHY20pIHsKICAgY29uc3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24q
IGFjZCA9IGFjLT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19hdWRpbygpOwogICBjb25zdCBEYXRh
Q29udGVudERlc2NyaXB0aW9uKiBkY2QgPSBkYy0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfZGF0
YSgpOwogICBFWFBFQ1RfRVEoTUVESUFfVFlQRV9BVURJTywgYWNkLT50eXBlKCkpOwotICBFWFBF
Q1RfRVEoTUFLRV9WRUNUT1Ioa0F1ZGlvQ29kZWNzQW5zd2VyKSwgYWNkLT5jb2RlY3MoKSk7Cisg
IEVYUEVDVF9USEFUKGFjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa0F1ZGlvQ29kZWNz
QW5zd2VyKSk7CiAgIEVYUEVDVF9FUShrQXV0b0JhbmR3aWR0aCwgYWNkLT5iYW5kd2lkdGgoKSk7
ICAvLyBuZWdvdGlhdGVkIGF1dG8gYncKICAgRVhQRUNUX0VRKDBVLCBhY2QtPmZpcnN0X3NzcmMo
KSk7ICAgICAgICAgICAgIC8vIG5vIHNlbmRlciBpcyBhdHRhY2hlZAogICBFWFBFQ1RfVFJVRShh
Y2QtPnJ0Y3BfbXV4KCkpOyAgICAgICAgICAgICAgICAgLy8gbmVnb3RpYXRlZCBydGNwLW11eAog
ICBBU1NFUlRfQ1JZUFRPKGFjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlR2NtKTsKICAg
RVhQRUNUX0VRKE1FRElBX1RZUEVfREFUQSwgZGNkLT50eXBlKCkpOwotICBFWFBFQ1RfRVEoTUFL
RV9WRUNUT1Ioa0RhdGFDb2RlY3NBbnN3ZXIpLCBkY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RI
QVQoZGNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrRGF0YUNvZGVjc0Fuc3dlcikpOwog
ICBFWFBFQ1RfRVEoMFUsIGRjZC0+Zmlyc3Rfc3NyYygpKTsgIC8vIG5vIHNlbmRlciBpcyBhdHRh
Y2hlZAogICBFWFBFQ1RfVFJVRShkY2QtPnJ0Y3BfbXV4KCkpOyAgICAgIC8vIG5lZ290aWF0ZWQg
cnRjcC1tdXgKICAgQVNTRVJUX0NSWVBUTyhkY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0
ZUdjbSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNh
dnBmKSwgZGNkLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3Rv
Y29sU2F2cGYsIGRjZC0+cHJvdG9jb2woKSk7CiB9CiAKIC8vIFRoZSB1c2Vfc2N0cG1hcCBmbGFn
IHNob3VsZCBiZSBzZXQgaW4gYSBEYXRhQ29udGVudERlc2NyaXB0aW9uIGJ5IGRlZmF1bHQuCkBA
IC0xMjY0LDcgKzEyNjYsNyBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5
VGVzdCwgQXVkaW9PZmZlckFuc3dlcldpdGhDcnlwdG9EaXNhYmxlZCkgewogICBjb25zdCBBdWRp
b0NvbnRlbnREZXNjcmlwdGlvbiogb2ZmZXJfYWNkID0KICAgICAgIEdldEZpcnN0QXVkaW9Db250
ZW50RGVzY3JpcHRpb24ob2ZmZXIuZ2V0KCkpOwogICBBU1NFUlRfVFJVRShvZmZlcl9hY2QgIT0g
TlVMTCk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbEF2
cGYpLCBvZmZlcl9hY2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlh
UHJvdG9jb2xBdnBmLCBvZmZlcl9hY2QtPnByb3RvY29sKCkpOwogCiAgIHN0ZDo6dW5pcXVlX3B0
cjxTZXNzaW9uRGVzY3JpcHRpb24+IGFuc3dlcigKICAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2Zm
ZXIuZ2V0KCksIG9wdHMsIE5VTEwpKTsKQEAgLTEyNzYsNyArMTI3OCw3IEBAIFRFU1RfRihNZWRp
YVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBBdWRpb09mZmVyQW5zd2VyV2l0aENyeXB0
b0Rpc2FibGVkKSB7CiAgIGNvbnN0IEF1ZGlvQ29udGVudERlc2NyaXB0aW9uKiBhbnN3ZXJfYWNk
ID0KICAgICAgIEdldEZpcnN0QXVkaW9Db250ZW50RGVzY3JpcHRpb24oYW5zd2VyLmdldCgpKTsK
ICAgQVNTRVJUX1RSVUUoYW5zd2VyX2FjZCAhPSBOVUxMKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3Ry
aW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sQXZwZiksIGFuc3dlcl9hY2QtPnByb3RvY29sKCkp
OworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xBdnBmLCBhbnN3ZXJfYWNkLT5w
cm90b2NvbCgpKTsKIH0KIAogLy8gQ3JlYXRlIGEgdmlkZW8gb2ZmZXIgYW5kIGFuc3dlciBhbmQg
ZW5zdXJlIHRoZSBSVFAgaGVhZGVyIGV4dGVuc2lvbnMKQEAgLTE1ODEsNiArMTU4Myw2NyBAQCBU
RVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKICAgRVhQRUNUX1RSVUUo
ZGMtPnJlamVjdGVkKTsKIH0KIAorVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9y
eVRlc3QsCisgICAgICAgQ3JlYXRlQW5zd2VyU3VwcG9ydHNNaXhlZE9uZUFuZFR3b0J5dGVIZWFk
ZXJFeHRlbnNpb25zKSB7CisgIE1lZGlhU2Vzc2lvbk9wdGlvbnMgb3B0czsKKyAgc3RkOjp1bmlx
dWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gb2ZmZXIoZjFfLkNyZWF0ZU9mZmVyKG9wdHMsIE5V
TEwpKTsKKyAgLy8gT2ZmZXIgd2l0aG91dCByZXF1ZXN0IG9mIG1peGVkIG9uZS0gYW5kIHR3by1i
eXRlIGhlYWRlciBleHRlbnNpb25zLgorICBvZmZlci0+c2V0X2V4dG1hcF9hbGxvd19taXhlZChm
YWxzZSk7CisgIEFTU0VSVF9UUlVFKG9mZmVyLmdldCgpICE9IE5VTEwpOworICBzdGQ6OnVuaXF1
ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBhbnN3ZXJfbm9fc3VwcG9ydCgKKyAgICAgIGYyXy5D
cmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIG9wdHMsIE5VTEwpKTsKKyAgRVhQRUNUX0ZBTFNFKGFu
c3dlcl9ub19zdXBwb3J0LT5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7CisKKyAgLy8gT2ZmZXIgd2l0
aCByZXF1ZXN0IG9mIG1peGVkIG9uZS0gYW5kIHR3by1ieXRlIGhlYWRlciBleHRlbnNpb25zLgor
ICBvZmZlci0+c2V0X2V4dG1hcF9hbGxvd19taXhlZCh0cnVlKTsKKyAgQVNTRVJUX1RSVUUob2Zm
ZXIuZ2V0KCkgIT0gTlVMTCk7CisgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+
IGFuc3dlcl9zdXBwb3J0KAorICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0
cywgTlVMTCkpOworICBFWFBFQ1RfVFJVRShhbnN3ZXJfc3VwcG9ydC0+ZXh0bWFwX2FsbG93X21p
eGVkKCkpOworfQorCitURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwK
KyAgICAgICBDcmVhdGVBbnN3ZXJTdXBwb3J0c01peGVkT25lQW5kVHdvQnl0ZUhlYWRlckV4dGVu
c2lvbnNPbk1lZGlhTGV2ZWwpIHsKKyAgTWVkaWFTZXNzaW9uT3B0aW9ucyBvcHRzOworICBBZGRB
dWRpb1ZpZGVvU2VjdGlvbnMoUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246OmtTZW5kUmVjdiwgJm9w
dHMpOworICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBvZmZlcihmMV8uQ3Jl
YXRlT2ZmZXIob3B0cywgTlVMTCkpOworICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogdmlkZW9f
b2ZmZXIgPQorICAgICAgb2ZmZXItPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZSgidmlkZW8i
KTsKKyAgQVNTRVJUX1RSVUUodmlkZW9fb2ZmZXIpOworICBNZWRpYUNvbnRlbnREZXNjcmlwdGlv
biogYXVkaW9fb2ZmZXIgPQorICAgICAgb2ZmZXItPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFt
ZSgiYXVkaW8iKTsKKyAgQVNTRVJUX1RSVUUoYXVkaW9fb2ZmZXIpOworCisgIC8vIEV4cGxpY2l0
IGRpc2FibGUgb2YgbWl4ZWQgb25lLXR3byBieXRlIGhlYWRlciBzdXBwb3J0IGluIG9mZmVyLgor
ICB2aWRlb19vZmZlci0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERl
c2NyaXB0aW9uOjprTm8pOworICBhdWRpb19vZmZlci0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9l
bnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8pOworCisgIEFTU0VSVF9UUlVFKG9mZmVy
LmdldCgpICE9IE5VTEwpOworICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBh
bnN3ZXJfbm9fc3VwcG9ydCgKKyAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIG9w
dHMsIE5VTEwpKTsKKyAgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIHZpZGVvX2Fuc3dlciA9Cisg
ICAgICBhbnN3ZXJfbm9fc3VwcG9ydC0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKCJ2aWRl
byIpOworICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogYXVkaW9fYW5zd2VyID0KKyAgICAgIGFu
c3dlcl9ub19zdXBwb3J0LT5HZXRDb250ZW50RGVzY3JpcHRpb25CeU5hbWUoImF1ZGlvIik7Cisg
IEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a05vLAorICAgICAgICAgICAgdmlk
ZW9fYW5zd2VyLT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKyAgRVhQRUNUX0VRKE1lZGlh
Q29udGVudERlc2NyaXB0aW9uOjprTm8sCisgICAgICAgICAgICBhdWRpb19hbnN3ZXItPmV4dG1h
cF9hbGxvd19taXhlZF9lbnVtKCkpOworCisgIC8vIEVuYWJsZSBtaXhlZCBvbmUtdHdvIGJ5dGUg
aGVhZGVyIHN1cHBvcnQgaW4gb2ZmZXIuCisgIHZpZGVvX29mZmVyLT5zZXRfZXh0bWFwX2FsbG93
X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7CisgIGF1ZGlvX29m
ZmVyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246
OmtNZWRpYSk7CisgIEFTU0VSVF9UUlVFKG9mZmVyLmdldCgpICE9IE5VTEwpOworICBzdGQ6OnVu
aXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBhbnN3ZXJfc3VwcG9ydCgKKyAgICAgIGYyXy5D
cmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIG9wdHMsIE5VTEwpKTsKKyAgdmlkZW9fYW5zd2VyID0g
YW5zd2VyX3N1cHBvcnQtPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZSgidmlkZW8iKTsKKyAg
YXVkaW9fYW5zd2VyID0gYW5zd2VyX3N1cHBvcnQtPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFt
ZSgiYXVkaW8iKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEs
CisgICAgICAgICAgICB2aWRlb19hbnN3ZXItPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOwor
ICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSwKKyAgICAgICAgICAg
IGF1ZGlvX2Fuc3dlci0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7Cit9CisKIC8vIENyZWF0
ZSBhbiBhdWRpbyBhbmQgdmlkZW8gb2ZmZXIgd2l0aDoKIC8vIC0gb25lIHZpZGVvIHRyYWNrCiAv
LyAtIHR3byBhdWRpbyB0cmFja3MKQEAgLTE4MTQsNyArMTg3Nyw3IEBAIFRFU1RfRihNZWRpYVNl
c3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3JlYXRlTXVsdGlTdHJlYW1WaWRlb0Fu
c3dlcikgewogICBBU1NFUlRfQ1JZUFRPKGRjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRl
KTsKIAogICBFWFBFQ1RfRVEoTUVESUFfVFlQRV9BVURJTywgYWNkLT50eXBlKCkpOwotICBFWFBF
Q1RfRVEoTUFLRV9WRUNUT1Ioa0F1ZGlvQ29kZWNzQW5zd2VyKSwgYWNkLT5jb2RlY3MoKSk7Cisg
IEVYUEVDVF9USEFUKGFjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa0F1ZGlvQ29kZWNz
QW5zd2VyKSk7CiAKICAgY29uc3QgU3RyZWFtUGFyYW1zVmVjJiBhdWRpb19zdHJlYW1zID0gYWNk
LT5zdHJlYW1zKCk7CiAgIEFTU0VSVF9FUSgyVSwgYXVkaW9fc3RyZWFtcy5zaXplKCkpOwpAQCAt
MTgzMCw3ICsxODkzLDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRl
c3QsIFRlc3RDcmVhdGVNdWx0aVN0cmVhbVZpZGVvQW5zd2VyKSB7CiAgIEVYUEVDVF9UUlVFKGFj
ZC0+cnRjcF9tdXgoKSk7ICAgICAgICAgICAgICAgICAvLyBydGNwLW11eCBkZWZhdWx0cyBvbgog
CiAgIEVYUEVDVF9FUShNRURJQV9UWVBFX1ZJREVPLCB2Y2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9F
UShNQUtFX1ZFQ1RPUihrVmlkZW9Db2RlY3NBbnN3ZXIpLCB2Y2QtPmNvZGVjcygpKTsKKyAgRVhQ
RUNUX1RIQVQodmNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrVmlkZW9Db2RlY3NBbnN3
ZXIpKTsKIAogICBjb25zdCBTdHJlYW1QYXJhbXNWZWMmIHZpZGVvX3N0cmVhbXMgPSB2Y2QtPnN0
cmVhbXMoKTsKICAgQVNTRVJUX0VRKDFVLCB2aWRlb19zdHJlYW1zLnNpemUoKSk7CkBAIC0xODQw
LDcgKzE5MDMsNyBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwg
VGVzdENyZWF0ZU11bHRpU3RyZWFtVmlkZW9BbnN3ZXIpIHsKICAgRVhQRUNUX1RSVUUodmNkLT5y
dGNwX211eCgpKTsgICAgICAgICAgICAgICAgIC8vIHJ0Y3AtbXV4IGRlZmF1bHRzIG9uCiAKICAg
RVhQRUNUX0VRKE1FRElBX1RZUEVfREFUQSwgZGNkLT50eXBlKCkpOwotICBFWFBFQ1RfRVEoTUFL
RV9WRUNUT1Ioa0RhdGFDb2RlY3NBbnN3ZXIpLCBkY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RI
QVQoZGNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrRGF0YUNvZGVjc0Fuc3dlcikpOwog
CiAgIGNvbnN0IFN0cmVhbVBhcmFtc1ZlYyYgZGF0YV9zdHJlYW1zID0gZGNkLT5zdHJlYW1zKCk7
CiAgIEFTU0VSVF9FUSgyVSwgZGF0YV9zdHJlYW1zLnNpemUoKSk7CkBAIC0xOTIzLDExICsxOTg2
LDExIEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LAogCiAgIGNv
bnN0IEF1ZGlvQ29udGVudERlc2NyaXB0aW9uKiBhY2QgPQogICAgICAgR2V0Rmlyc3RBdWRpb0Nv
bnRlbnREZXNjcmlwdGlvbihhbnN3ZXIuZ2V0KCkpOwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Io
a0F1ZGlvQ29kZWNzQW5zd2VyKSwgYWNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9USEFUKGFjZC0+
Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa0F1ZGlvQ29kZWNzQW5zd2VyKSk7CiAKICAgY29u
c3QgVmlkZW9Db250ZW50RGVzY3JpcHRpb24qIHZjZCA9CiAgICAgICBHZXRGaXJzdFZpZGVvQ29u
dGVudERlc2NyaXB0aW9uKGFuc3dlci5nZXQoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihr
VmlkZW9Db2RlY3NBbnN3ZXIpLCB2Y2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQodmNkLT5j
b2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrVmlkZW9Db2RlY3NBbnN3ZXIpKTsKIAogICBzdGQ6
OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiB1cGRhdGVkX29mZmVyKAogICAgICAgZjJf
LkNyZWF0ZU9mZmVyKG9wdHMsIGFuc3dlci5nZXQoKSkpOwpAQCAtMTk1MCwxMSArMjAxMywxMSBA
QCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKIAogICBjb25zdCBB
dWRpb0NvbnRlbnREZXNjcmlwdGlvbiogdXBkYXRlZF9hY2QgPQogICAgICAgR2V0Rmlyc3RBdWRp
b0NvbnRlbnREZXNjcmlwdGlvbih1cGRhdGVkX29mZmVyLmdldCgpKTsKLSAgRVhQRUNUX0VRKE1B
S0VfVkVDVE9SKGtVcGRhdGVkQXVkaW9Db2RlY09mZmVyKSwgdXBkYXRlZF9hY2QtPmNvZGVjcygp
KTsKKyAgRVhQRUNUX1RIQVQodXBkYXRlZF9hY2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5
KGtVcGRhdGVkQXVkaW9Db2RlY09mZmVyKSk7CiAKICAgY29uc3QgVmlkZW9Db250ZW50RGVzY3Jp
cHRpb24qIHVwZGF0ZWRfdmNkID0KICAgICAgIEdldEZpcnN0VmlkZW9Db250ZW50RGVzY3JpcHRp
b24odXBkYXRlZF9vZmZlci5nZXQoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrVXBkYXRl
ZFZpZGVvQ29kZWNPZmZlciksIHVwZGF0ZWRfdmNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9USEFU
KHVwZGF0ZWRfdmNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrVXBkYXRlZFZpZGVvQ29k
ZWNPZmZlcikpOwogfQogCiAvLyBDcmVhdGUgYW4gdXBkYXRlZCBvZmZlciBhZnRlciBjcmVhdGlu
ZyBhbiBhbnN3ZXIgdG8gdGhlIG9yaWdpbmFsIG9mZmVyIGFuZApAQCAtMjA3OSw3ICsyMTQyLDcg
QEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsCiAKICAgY29uc3Qg
QXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGFjZCA9CiAgICAgICBHZXRGaXJzdEF1ZGlvQ29udGVu
dERlc2NyaXB0aW9uKGFuc3dlci5nZXQoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrQXVk
aW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQoYWNkLT5jb2Rl
Y3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NBbnN3ZXIpKTsKIAogICAvLyBOb3cg
LSBsZXQgfGYyX3wgYWRkIHZpZGVvIHdpdGggUlRYIGFuZCBsZXQgdGhlIHBheWxvYWQgdHlwZSB0
aGUgUlRYIGNvZGVjCiAgIC8vIHJlZmVyZW5jZSAgYmUgdGhlIHNhbWUgYXMgYW4gYXVkaW8gY29k
ZWMgdGhhdCB3YXMgbmVnb3RpYXRlZCBpbiB0aGUKQEAgLTIxMDEsMTMgKzIxNjQsMTMgQEAgVEVT
VF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsCiAKICAgY29uc3QgQXVkaW9D
b250ZW50RGVzY3JpcHRpb24qIHVwZGF0ZWRfYWNkID0KICAgICAgIEdldEZpcnN0QXVkaW9Db250
ZW50RGVzY3JpcHRpb24oYW5zd2VyLmdldCgpKTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtB
dWRpb0NvZGVjc0Fuc3dlciksIHVwZGF0ZWRfYWNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9USEFU
KHVwZGF0ZWRfYWNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NBbnN3
ZXIpKTsKIAogICBjb25zdCBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiogdXBkYXRlZF92Y2QgPQog
ICAgICAgR2V0Rmlyc3RWaWRlb0NvbnRlbnREZXNjcmlwdGlvbih1cGRhdGVkX2Fuc3dlci5nZXQo
KSk7CiAKICAgQVNTRVJUX0VRKCJIMjY0IiwgdXBkYXRlZF92Y2QtPmNvZGVjcygpWzBdLm5hbWUp
OwotICBBU1NFUlRfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a1J0eENvZGVjTmFtZSksIHVwZGF0
ZWRfdmNkLT5jb2RlY3MoKVsxXS5uYW1lKTsKKyAgQVNTRVJUX0VRKGNyaWNrZXQ6OmtSdHhDb2Rl
Y05hbWUsIHVwZGF0ZWRfdmNkLT5jb2RlY3MoKVsxXS5uYW1lKTsKICAgaW50IG5ld19oMjY0X3Bs
X3R5cGUgPSB1cGRhdGVkX3ZjZC0+Y29kZWNzKClbMF0uaWQ7CiAgIEVYUEVDVF9ORSh1c2VkX3Bs
X3R5cGUsIG5ld19oMjY0X3BsX3R5cGUpOwogICBWaWRlb0NvZGVjIHJ0eCA9IHVwZGF0ZWRfdmNk
LT5jb2RlY3MoKVsxXTsKQEAgLTI3NzYsOCArMjgzOSw3IEBAIFRFU1RfRihNZWRpYVNlc3Npb25E
ZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0T2ZmZXJEdGxzU2F2cGZDcmVhdGVBbnN3ZXIpIHsK
IAogICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYW5zd2VyX2F1ZGlvX2Rlc2MgPQog
ICAgICAgYW5zd2VyX2NvbnRlbnQtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7Ci0g
IEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbER0bHNTYXZwZiks
Ci0gICAgICAgICAgICBhbnN3ZXJfYXVkaW9fZGVzYy0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9F
UShjcmlja2V0OjprTWVkaWFQcm90b2NvbER0bHNTYXZwZiwgYW5zd2VyX2F1ZGlvX2Rlc2MtPnBy
b3RvY29sKCkpOwogfQogCiAvLyBUZXN0IHRoYXQgd2UgaW5jbHVkZSBib3RoIFNERVMgYW5kIERU
TFMgaW4gdGhlIG9mZmVyLCBidXQgb25seSBpbmNsdWRlIFNERVMKQEAgLTI4NDIsMTAgKzI5MDQs
OCBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdENyeXB0
b0R0bHMpIHsKICAgQVNTRVJUX1RSVUUodmlkZW9fbWVkaWFfZGVzYyAhPSBOVUxMKTsKICAgRVhQ
RUNUX1RSVUUoYXVkaW9fbWVkaWFfZGVzYy0+Y3J5cHRvcygpLmVtcHR5KCkpOwogICBFWFBFQ1Rf
VFJVRSh2aWRlb19tZWRpYV9kZXNjLT5jcnlwdG9zKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9FUShz
dGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwKLSAgICAgICAgICAgIGF1
ZGlvX21lZGlhX2Rlc2MtPnByb3RvY29sKCkpOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3Jp
Y2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiksCi0gICAgICAgICAgICB2aWRlb19tZWRpYV9kZXNj
LT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYs
IGF1ZGlvX21lZGlhX2Rlc2MtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01l
ZGlhUHJvdG9jb2xTYXZwZiwgdmlkZW9fbWVkaWFfZGVzYy0+cHJvdG9jb2woKSk7CiAKICAgYXVk
aW9fdHJhbnNfZGVzYyA9IGFuc3dlci0+R2V0VHJhbnNwb3J0RGVzY3JpcHRpb25CeU5hbWUoImF1
ZGlvIik7CiAgIEFTU0VSVF9UUlVFKGF1ZGlvX3RyYW5zX2Rlc2MgIT0gTlVMTCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29u
bmVjdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3BlZXJjb25uZWN0aW9uLmNjCmluZGV4IGRkMzE2MzMyYWNhZTMyNDY2YTlhYTExNjAyNzM0MTVi
NjA2N2I0OWQuLmE2YjQ3YzE2ZGViYTM4MWU1N2FiZmJmMTIzMDExODE2NWZiMTU4YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJj
b25uZWN0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3BlZXJjb25uZWN0aW9uLmNjCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiYXBp
L2pzZXBzZXNzaW9uZGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1wcm94
eS5oIgogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbXRyYWNrcHJveHkuaCIKKyNpbmNsdWRlICJh
cGkvdW1hbWV0cmljcy5oIgogI2luY2x1ZGUgImNhbGwvY2FsbC5oIgogI2luY2x1ZGUgImxvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9pY2Vsb2dnZXIuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvb3V0cHV0L3J0Y19ldmVudF9sb2dfb3V0cHV0X2ZpbGUuaCIKQEAgLTYzMCw2ICs2MzEs
MzUgQEAgYWJzbDo6b3B0aW9uYWw8aW50PiBSVENDb25maWd1cmF0aW9uVG9JY2VDb25maWdPcHRp
b25hbEludCgKICAgcmV0dXJuIHJ0Y19jb25maWd1cmF0aW9uX3BhcmFtZXRlcjsKIH0KIAorY3Jp
Y2tldDo6RGF0YU1lc3NhZ2VUeXBlIFRvQ3JpY2tldERhdGFNZXNzYWdlVHlwZShEYXRhTWVzc2Fn
ZVR5cGUgdHlwZSkgeworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIERhdGFNZXNzYWdlVHlw
ZTo6a1RleHQ6CisgICAgICByZXR1cm4gY3JpY2tldDo6RE1UX1RFWFQ7CisgICAgY2FzZSBEYXRh
TWVzc2FnZVR5cGU6OmtCaW5hcnk6CisgICAgICByZXR1cm4gY3JpY2tldDo6RE1UX0JJTkFSWTsK
KyAgICBjYXNlIERhdGFNZXNzYWdlVHlwZTo6a0NvbnRyb2w6CisgICAgICByZXR1cm4gY3JpY2tl
dDo6RE1UX0NPTlRST0w7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBjcmlja2V0OjpETVRf
Tk9ORTsKKyAgfQorICByZXR1cm4gY3JpY2tldDo6RE1UX05PTkU7Cit9CisKK0RhdGFNZXNzYWdl
VHlwZSBUb1dlYnJ0Y0RhdGFNZXNzYWdlVHlwZShjcmlja2V0OjpEYXRhTWVzc2FnZVR5cGUgdHlw
ZSkgeworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIGNyaWNrZXQ6OkRNVF9URVhUOgorICAg
ICAgcmV0dXJuIERhdGFNZXNzYWdlVHlwZTo6a1RleHQ7CisgICAgY2FzZSBjcmlja2V0OjpETVRf
QklOQVJZOgorICAgICAgcmV0dXJuIERhdGFNZXNzYWdlVHlwZTo6a0JpbmFyeTsKKyAgICBjYXNl
IGNyaWNrZXQ6OkRNVF9DT05UUk9MOgorICAgICAgcmV0dXJuIERhdGFNZXNzYWdlVHlwZTo6a0Nv
bnRyb2w7CisgICAgY2FzZSBjcmlja2V0OjpETVRfTk9ORToKKyAgICBkZWZhdWx0OgorICAgICAg
UlRDX05PVFJFQUNIRUQoKTsKKyAgfQorICByZXR1cm4gRGF0YU1lc3NhZ2VUeXBlOjprQ29udHJv
bDsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIC8vIFVwb24gY29tcGxldGlvbiwgcG9zdHMgYSB0
YXNrIHRvIGV4ZWN1dGUgdGhlIGNhbGxiYWNrIG9mIHRoZQpAQCAtNjg0LDYgKzcxNCw3IEBAIGJv
b2wgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb246Om9wZXJhdG9yPT0o
CiAgICAgQ2FuZGlkYXRlTmV0d29ya1BvbGljeSBjYW5kaWRhdGVfbmV0d29ya19wb2xpY3k7CiAg
ICAgaW50IGF1ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tldHM7CiAgICAgYm9vbCBhdWRpb19q
aXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZTsKKyAgICBpbnQgYXVkaW9faml0dGVyX2J1ZmZl
cl9taW5fZGVsYXlfbXM7CiAgICAgaW50IGljZV9jb25uZWN0aW9uX3JlY2VpdmluZ190aW1lb3V0
OwogICAgIGludCBpY2VfYmFja3VwX2NhbmRpZGF0ZV9wYWlyX3BpbmdfaW50ZXJ2YWw7CiAgICAg
Q29udGludWFsR2F0aGVyaW5nUG9saWN5IGNvbnRpbnVhbF9nYXRoZXJpbmdfcG9saWN5OwpAQCAt
NzA0LDYgKzczNSwxMCBAQCBib29sIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1
cmF0aW9uOjpvcGVyYXRvcj09KAogICAgIFNkcFNlbWFudGljcyBzZHBfc2VtYW50aWNzOwogICAg
IGFic2w6Om9wdGlvbmFsPHJ0Yzo6QWRhcHRlclR5cGU+IG5ldHdvcmtfcHJlZmVyZW5jZTsKICAg
ICBib29sIGFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtczsKKyAgICBib29sIHVzZV9tZWRpYV90cmFu
c3BvcnQ7CisgICAgYm9vbCB1c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzOwor
ICAgIGFic2w6Om9wdGlvbmFsPENyeXB0b09wdGlvbnM+IGNyeXB0b19vcHRpb25zOworICAgIGJv
b2wgb2ZmZXJfZXh0bWFwX2FsbG93X21peGVkOwogICB9OwogICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihzdHVmZl9iZWluZ190ZXN0ZWRfZm9yX2VxdWFsaXR5KSA9PSBzaXplb2YoKnRoaXMpLAogICAg
ICAgICAgICAgICAgICJEaWQgeW91IGFkZCBzb21ldGhpbmcgdG8gUlRDQ29uZmlndXJhdGlvbiBh
bmQgZm9yZ2V0IHRvICIKQEAgLTcxNiw2ICs3NTEsOCBAQCBib29sIFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uOjpvcGVyYXRvcj09KAogICAgICAgICAgYXVkaW9faml0
dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyA9PSBvLmF1ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tl
dHMgJiYKICAgICAgICAgIGF1ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlID09CiAg
ICAgICAgICAgICAgby5hdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSAmJgorICAg
ICAgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMgPT0KKyAgICAgICAgICAgICBv
LmF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zICYmCiAgICAgICAgICBpY2VfY29ubmVj
dGlvbl9yZWNlaXZpbmdfdGltZW91dCA9PQogICAgICAgICAgICAgIG8uaWNlX2Nvbm5lY3Rpb25f
cmVjZWl2aW5nX3RpbWVvdXQgJiYKICAgICAgICAgIGljZV9iYWNrdXBfY2FuZGlkYXRlX3BhaXJf
cGluZ19pbnRlcnZhbCA9PQpAQCAtNzUxLDcgKzc4OCwxMiBAQCBib29sIFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uOjpvcGVyYXRvcj09KAogICAgICAgICAgdHVybl9j
dXN0b21pemVyID09IG8udHVybl9jdXN0b21pemVyICYmCiAgICAgICAgICBzZHBfc2VtYW50aWNz
ID09IG8uc2RwX3NlbWFudGljcyAmJgogICAgICAgICAgbmV0d29ya19wcmVmZXJlbmNlID09IG8u
bmV0d29ya19wcmVmZXJlbmNlICYmCi0gICAgICAgICBhY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMg
PT0gby5hY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXM7CisgICAgICAgICBhY3RpdmVfcmVzZXRfc3J0
cF9wYXJhbXMgPT0gby5hY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMgJiYKKyAgICAgICAgIHVzZV9t
ZWRpYV90cmFuc3BvcnQgPT0gby51c2VfbWVkaWFfdHJhbnNwb3J0ICYmCisgICAgICAgICB1c2Vf
bWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID09CisgICAgICAgICAgICAgby51c2Vf
bWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzICYmCisgICAgICAgICBjcnlwdG9fb3B0
aW9ucyA9PSBvLmNyeXB0b19vcHRpb25zICYmCisgICAgICAgICBvZmZlcl9leHRtYXBfYWxsb3df
bWl4ZWQgPT0gby5vZmZlcl9leHRtYXBfYWxsb3dfbWl4ZWQ7CiB9CiAKIGJvb2wgUGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb246Om9wZXJhdG9yIT0oCkBAIC04MjAsNiAr
ODYyLDcgQEAgUGVlckNvbm5lY3Rpb246On5QZWVyQ29ubmVjdGlvbigpIHsKICAgd2VicnRjX3Nl
c3Npb25fZGVzY19mYWN0b3J5Xy5yZXNldCgpOwogICBzY3RwX2ludm9rZXJfLnJlc2V0KCk7CiAg
IHNjdHBfZmFjdG9yeV8ucmVzZXQoKTsKKyAgbWVkaWFfdHJhbnNwb3J0X2ludm9rZXJfLnJlc2V0
KCk7CiAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy5yZXNldCgpOwogCiAgIC8vIHBvcnRfYWxsb2Nh
dG9yXyBsaXZlcyBvbiB0aGUgbmV0d29yayB0aHJlYWQgYW5kIHNob3VsZCBiZSBkZXN0cm95ZWQg
dGhlcmUuCkBAIC05MjksMTggKzk3Miw0MCBAQCBib29sIFBlZXJDb25uZWN0aW9uOjpJbml0aWFs
aXplKAogICBjb25maWcuZGlzYWJsZV9lbmNyeXB0aW9uID0gb3B0aW9ucy5kaXNhYmxlX2VuY3J5
cHRpb247CiAgIGNvbmZpZy5idW5kbGVfcG9saWN5ID0gY29uZmlndXJhdGlvbi5idW5kbGVfcG9s
aWN5OwogICBjb25maWcucnRjcF9tdXhfcG9saWN5ID0gY29uZmlndXJhdGlvbi5ydGNwX211eF9w
b2xpY3k7Ci0gIGNvbmZpZy5jcnlwdG9fb3B0aW9ucyA9IG9wdGlvbnMuY3J5cHRvX29wdGlvbnM7
CisgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk4OTEpIC0gUmVtb3ZlIG9wdGlvbnMuY3J5cHRv
X29wdGlvbnMgdGhlbiByZW1vdmUgdGhpcworICAvLyBzdHViLgorICBjb25maWcuY3J5cHRvX29w
dGlvbnMgPSBjb25maWd1cmF0aW9uLmNyeXB0b19vcHRpb25zLmhhc192YWx1ZSgpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA/ICpjb25maWd1cmF0aW9uLmNyeXB0b19vcHRpb25zCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG9wdGlvbnMuY3J5cHRvX29wdGlvbnM7CiAg
IGNvbmZpZy50cmFuc3BvcnRfb2JzZXJ2ZXIgPSB0aGlzOwogICBjb25maWcuZXZlbnRfbG9nID0g
ZXZlbnRfbG9nXy5nZXQoKTsKICNpZiBkZWZpbmVkKEVOQUJMRV9FWFRFUk5BTF9BVVRIKQogICBj
b25maWcuZW5hYmxlX2V4dGVybmFsX2F1dGggPSB0cnVlOwogI2VuZGlmCiAgIGNvbmZpZy5hY3Rp
dmVfcmVzZXRfc3J0cF9wYXJhbXMgPSBjb25maWd1cmF0aW9uLmFjdGl2ZV9yZXNldF9zcnRwX3Bh
cmFtczsKKworICBpZiAoY29uZmlndXJhdGlvbi51c2VfbWVkaWFfdHJhbnNwb3J0IHx8CisgICAg
ICBjb25maWd1cmF0aW9uLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMpIHsK
KyAgICBpZiAoIWZhY3RvcnlfLT5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSgpKSB7CisgICAgICBS
VENfRENIRUNLKGZhbHNlKQorICAgICAgICAgIDw8ICJQZWVyQ29ubmVjdG9uIGlzIGluaXRpYWxp
emVkIHdpdGggdXNlX21lZGlhX3RyYW5zcG9ydCA9IHRydWUgb3IgIgorICAgICAgICAgIDw8ICJ1
c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1ZSAiCisgICAgICAgICAg
PDwgImJ1dCBtZWRpYSB0cmFuc3BvcnQgZmFjdG9yeSBpcyBub3Qgc2V0IGluIFBlZXJDb25uZWN0
aW9uRmFjdG9yeSI7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uZmlnLm1l
ZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gZmFjdG9yeV8tPm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
KCk7CisgIH0KKwogICB0cmFuc3BvcnRfY29udHJvbGxlcl8ucmVzZXQobmV3IEpzZXBUcmFuc3Bv
cnRDb250cm9sbGVyKAogICAgICAgc2lnbmFsaW5nX3RocmVhZCgpLCBuZXR3b3JrX3RocmVhZCgp
LCBwb3J0X2FsbG9jYXRvcl8uZ2V0KCksCiAgICAgICBhc3luY19yZXNvbHZlcl9mYWN0b3J5Xy5n
ZXQoKSwgY29uZmlnKSk7CiAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsSWNlQ29ubmVj
dGlvblN0YXRlLmNvbm5lY3QoCiAgICAgICB0aGlzLCAmUGVlckNvbm5lY3Rpb246Ok9uVHJhbnNw
b3J0Q29udHJvbGxlckNvbm5lY3Rpb25TdGF0ZSk7CisgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+
U2lnbmFsU3RhbmRhcmRpemVkSWNlQ29ubmVjdGlvblN0YXRlLmNvbm5lY3QoCisgICAgICB0aGlz
LCAmUGVlckNvbm5lY3Rpb246OlNldFN0YW5kYXJkaXplZEljZUNvbm5lY3Rpb25TdGF0ZSk7Cisg
IHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsQ29ubmVjdGlvblN0YXRlLmNvbm5lY3QoCisg
ICAgICB0aGlzLCAmUGVlckNvbm5lY3Rpb246OlNldENvbm5lY3Rpb25TdGF0ZSk7CiAgIHRyYW5z
cG9ydF9jb250cm9sbGVyXy0+U2lnbmFsSWNlR2F0aGVyaW5nU3RhdGUuY29ubmVjdCgKICAgICAg
IHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6T25UcmFuc3BvcnRDb250cm9sbGVyR2F0aGVyaW5nU3Rh
dGUpOwogICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPlNpZ25hbEljZUNhbmRpZGF0ZXNHYXRoZXJl
ZC5jb25uZWN0KApAQCAtOTc5LDEwICsxMDQ0LDE4IEBAIGJvb2wgUGVlckNvbm5lY3Rpb246Oklu
aXRpYWxpemUoCiAgICAgfQogICB9CiAKLSAgLy8gRW5hYmxlIGNyZWF0aW9uIG9mIFJUUCBkYXRh
IGNoYW5uZWxzIGlmIHRoZSBrRW5hYmxlUnRwRGF0YUNoYW5uZWxzIGlzIHNldC4KLSAgLy8gSXQg
dGFrZXMgcHJlY2VuZGVuY2Ugb3ZlciB0aGUgZGlzYWJsZV9zY3RwX2RhdGFfY2hhbm5lbHMKLSAg
Ly8gUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlOjpPcHRpb25zLgotICBpZiAoY29uZmln
dXJhdGlvbi5lbmFibGVfcnRwX2RhdGFfY2hhbm5lbCkgeworICBpZiAoY29uZmlndXJhdGlvbi51
c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzKSB7CisgICAgaWYgKGNvbmZpZ3Vy
YXRpb24uZW5hYmxlX3J0cF9kYXRhX2NoYW5uZWwpIHsKKyAgICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJlbmFibGVfcnRwX2RhdGFfY2hhbm5lbCBhbmQgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgYXJlICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBhdGlibGUgYW5kIGNhbm5vdCBib3RoIGJlIHNl
dCB0byB0cnVlIjsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZGF0YV9jaGFubmVs
X3R5cGVfID0gY3JpY2tldDo6RENUX01FRElBX1RSQU5TUE9SVDsKKyAgfSBlbHNlIGlmIChjb25m
aWd1cmF0aW9uLmVuYWJsZV9ydHBfZGF0YV9jaGFubmVsKSB7CisgICAgLy8gRW5hYmxlIGNyZWF0
aW9uIG9mIFJUUCBkYXRhIGNoYW5uZWxzIGlmIHRoZSBrRW5hYmxlUnRwRGF0YUNoYW5uZWxzIGlz
CisgICAgLy8gc2V0LiBJdCB0YWtlcyBwcmVjZW5kZW5jZSBvdmVyIHRoZSBkaXNhYmxlX3NjdHBf
ZGF0YV9jaGFubmVscworICAgIC8vIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0
aW9ucy4KICAgICBkYXRhX2NoYW5uZWxfdHlwZV8gPSBjcmlja2V0OjpEQ1RfUlRQOwogICB9IGVs
c2UgewogICAgIC8vIERUTFMgaGFzIHRvIGJlIGVuYWJsZWQgdG8gdXNlIFNDVFAuCkBAIC0xMDAy
LDYgKzEwNzUsOSBAQCBib29sIFBlZXJDb25uZWN0aW9uOjpJbml0aWFsaXplKAogICBhdWRpb19v
cHRpb25zXy5hdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSA9CiAgICAgICBjb25m
aWd1cmF0aW9uLmF1ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlOwogCisgIGF1ZGlv
X29wdGlvbnNfLmF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zID0KKyAgICAgIGNvbmZp
Z3VyYXRpb24uYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXM7CisKICAgLy8gV2hldGhl
ciB0aGUgY2VydGlmaWNhdGUgZ2VuZXJhdG9yL2NlcnRpZmljYXRlIGlzIG51bGwgb3Igbm90IGRl
dGVybWluZXMKICAgLy8gd2hhdCBQZWVyQ29ubmVjdGlvbkRlc2NyaXB0aW9uRmFjdG9yeSB3aWxs
IGRvLCBzbyBtYWtlIHN1cmUgdGhhdCB3ZSBnaXZlIGl0CiAgIC8vIHRoZSByaWdodCBpbnN0cnVj
dGlvbnMgYnkgY2xlYXJpbmcgdGhlIHZhcmlhYmxlcyBpZiBuZWVkZWQuCkBAIC0xMDI0LDcgKzEx
MDAsNyBAQCBib29sIFBlZXJDb25uZWN0aW9uOjpJbml0aWFsaXplKAogICB9CiAKICAgd2VicnRj
X3Nlc3Npb25fZGVzY19mYWN0b3J5Xy0+c2V0X2VuYWJsZV9lbmNyeXB0ZWRfcnRwX2hlYWRlcl9l
eHRlbnNpb25zKAotICAgICAgb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZW5jcnlwdGVk
X3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyk7CisgICAgICBHZXRDcnlwdG9PcHRpb25zKCkuc3J0cC5l
bmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyk7CiAKICAgLy8gQWRkIGRlZmF1
bHQgYXVkaW8vdmlkZW8gdHJhbnNjZWl2ZXJzIGZvciBQbGFuIEIgU0RQLgogICBpZiAoIUlzVW5p
ZmllZFBsYW4oKSkgewpAQCAtMTE4Myw3ICsxMjU5LDcgQEAgUGVlckNvbm5lY3Rpb246OkFkZFRy
YWNrUGxhbkIoCiAgIGF1dG8gbmV3X3NlbmRlciA9CiAgICAgICBDcmVhdGVTZW5kZXIobWVkaWFf
dHlwZSwgdHJhY2stPmlkKCksIHRyYWNrLCBhZGp1c3RlZF9zdHJlYW1faWRzLCB7fSk7CiAgIGlm
ICh0cmFjay0+a2luZCgpID09IE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U6OmtBdWRpb0tpbmQp
IHsKLSAgICBuZXdfc2VuZGVyLT5pbnRlcm5hbCgpLT5TZXRWb2ljZU1lZGlhQ2hhbm5lbCh2b2lj
ZV9tZWRpYV9jaGFubmVsKCkpOworICAgIG5ld19zZW5kZXItPmludGVybmFsKCktPlNldE1lZGlh
Q2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVsKCkpOwogICAgIEdldEF1ZGlvVHJhbnNjZWl2ZXIo
KS0+aW50ZXJuYWwoKS0+QWRkU2VuZGVyKG5ld19zZW5kZXIpOwogICAgIGNvbnN0IFJ0cFNlbmRl
ckluZm8qIHNlbmRlcl9pbmZvID0KICAgICAgICAgRmluZFNlbmRlckluZm8obG9jYWxfYXVkaW9f
c2VuZGVyX2luZm9zXywKQEAgLTExOTMsNyArMTI2OSw3IEBAIFBlZXJDb25uZWN0aW9uOjpBZGRU
cmFja1BsYW5CKAogICAgIH0KICAgfSBlbHNlIHsKICAgICBSVENfRENIRUNLX0VRKE1lZGlhU3Ry
ZWFtVHJhY2tJbnRlcmZhY2U6OmtWaWRlb0tpbmQsIHRyYWNrLT5raW5kKCkpOwotICAgIG5ld19z
ZW5kZXItPmludGVybmFsKCktPlNldFZpZGVvTWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5u
ZWwoKSk7CisgICAgbmV3X3NlbmRlci0+aW50ZXJuYWwoKS0+U2V0TWVkaWFDaGFubmVsKHZpZGVv
X21lZGlhX2NoYW5uZWwoKSk7CiAgICAgR2V0VmlkZW9UcmFuc2NlaXZlcigpLT5pbnRlcm5hbCgp
LT5BZGRTZW5kZXIobmV3X3NlbmRlcik7CiAgICAgY29uc3QgUnRwU2VuZGVySW5mbyogc2VuZGVy
X2luZm8gPQogICAgICAgICBGaW5kU2VuZGVySW5mbyhsb2NhbF92aWRlb19zZW5kZXJfaW5mb3Nf
LApAQCAtMTUyMywxNCArMTU5OSwxNCBAQCBydGM6OnNjb3BlZF9yZWZwdHI8UnRwU2VuZGVySW50
ZXJmYWNlPiBQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlU2VuZGVyKAogICBpZiAoa2luZCA9PSBNZWRp
YVN0cmVhbVRyYWNrSW50ZXJmYWNlOjprQXVkaW9LaW5kKSB7CiAgICAgYXV0byogYXVkaW9fc2Vu
ZGVyID0gbmV3IEF1ZGlvUnRwU2VuZGVyKAogICAgICAgICB3b3JrZXJfdGhyZWFkKCksIHJ0Yzo6
Q3JlYXRlUmFuZG9tVXVpZCgpLCBzdGF0c18uZ2V0KCkpOwotICAgIGF1ZGlvX3NlbmRlci0+U2V0
Vm9pY2VNZWRpYUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbCgpKTsKKyAgICBhdWRpb19zZW5k
ZXItPlNldE1lZGlhQ2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVsKCkpOwogICAgIG5ld19zZW5k
ZXIgPSBSdHBTZW5kZXJQcm94eVdpdGhJbnRlcm5hbDxSdHBTZW5kZXJJbnRlcm5hbD46OkNyZWF0
ZSgKICAgICAgICAgc2lnbmFsaW5nX3RocmVhZCgpLCBhdWRpb19zZW5kZXIpOwogICAgIEdldEF1
ZGlvVHJhbnNjZWl2ZXIoKS0+aW50ZXJuYWwoKS0+QWRkU2VuZGVyKG5ld19zZW5kZXIpOwogICB9
IGVsc2UgaWYgKGtpbmQgPT0gTWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZTo6a1ZpZGVvS2luZCkg
ewogICAgIGF1dG8qIHZpZGVvX3NlbmRlciA9CiAgICAgICAgIG5ldyBWaWRlb1J0cFNlbmRlcih3
b3JrZXJfdGhyZWFkKCksIHJ0Yzo6Q3JlYXRlUmFuZG9tVXVpZCgpKTsKLSAgICB2aWRlb19zZW5k
ZXItPlNldFZpZGVvTWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWwoKSk7CisgICAgdmlk
ZW9fc2VuZGVyLT5TZXRNZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbCgpKTsKICAgICBu
ZXdfc2VuZGVyID0gUnRwU2VuZGVyUHJveHlXaXRoSW50ZXJuYWw8UnRwU2VuZGVySW50ZXJuYWw+
OjpDcmVhdGUoCiAgICAgICAgIHNpZ25hbGluZ190aHJlYWQoKSwgdmlkZW9fc2VuZGVyKTsKICAg
ICBHZXRWaWRlb1RyYW5zY2VpdmVyKCktPmludGVybmFsKCktPkFkZFNlbmRlcihuZXdfc2VuZGVy
KTsKQEAgLTE2NDcsNyArMTcyMyw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkdldFN0YXRzKAog
ICAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgLy8gSWYgdGhlcmUgaXMgbm8gfGludGVybmFs
X3NlbmRlcnzCoHRoZW4gfHNlbGVjdG9yfCBpcyBlaXRoZXIgbnVsbCBvciBkb2VzIG5vdAorICAv
LyBJZiB0aGVyZSBpcyBubyB8aW50ZXJuYWxfc2VuZGVyfCB0aGVuIHxzZWxlY3RvcnwgaXMgZWl0
aGVyIG51bGwgb3IgZG9lcyBub3QKICAgLy8gYmVsb25nIHRvIHRoZSBQZWVyQ29ubmVjdGlvbiAo
aW4gUGxhbiBCLCBzZW5kZXJzIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlCiAgIC8vIFBlZXJDb25u
ZWN0aW9uKS4gVGhpcyBtZWFucyB0aGF0ICJhbGwgdGhlIHN0YXRzIG9iamVjdHMgcmVwcmVzZW50
aW5nIHRoZQogICAvLyBzZWxlY3RvciIgaXMgYW4gZW1wdHkgc2V0LiBJbnZva2luZyBHZXRTdGF0
c1JlcG9ydCgpIHdpdGggYSBudWxsIHNlbGVjdG9yCkBAIC0xNjc1LDcgKzE3NTEsNyBAQCB2b2lk
IFBlZXJDb25uZWN0aW9uOjpHZXRTdGF0cygKICAgICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0g
IC8vIElmIHRoZXJlIGlzIG5vIHxpbnRlcm5hbF9yZWNlaXZlcnzCoHRoZW4gfHNlbGVjdG9yfCBp
cyBlaXRoZXIgbnVsbCBvciBkb2VzCisgIC8vIElmIHRoZXJlIGlzIG5vIHxpbnRlcm5hbF9yZWNl
aXZlcnwgdGhlbiB8c2VsZWN0b3J8IGlzIGVpdGhlciBudWxsIG9yIGRvZXMKICAgLy8gbm90IGJl
bG9uZyB0byB0aGUgUGVlckNvbm5lY3Rpb24gKGluIFBsYW4gQiwgcmVjZWl2ZXJzIGNhbiBiZSBy
ZW1vdmVkIGZyb20KICAgLy8gdGhlIFBlZXJDb25uZWN0aW9uKS4gVGhpcyBtZWFucyB0aGF0ICJh
bGwgdGhlIHN0YXRzIG9iamVjdHMgcmVwcmVzZW50aW5nCiAgIC8vIHRoZSBzZWxlY3RvciIgaXMg
YW4gZW1wdHkgc2V0LiBJbnZva2luZyBHZXRTdGF0c1JlcG9ydCgpIHdpdGggYSBudWxsCkBAIC0x
NjkyLDYgKzE3NjgsMTYgQEAgUGVlckNvbm5lY3Rpb246OmljZV9jb25uZWN0aW9uX3N0YXRlKCkg
ewogICByZXR1cm4gaWNlX2Nvbm5lY3Rpb25fc3RhdGVfOwogfQogCitQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlCitQZWVyQ29ubmVjdGlvbjo6c3RhbmRhcmRpemVk
X2ljZV9jb25uZWN0aW9uX3N0YXRlKCkgeworICByZXR1cm4gc3RhbmRhcmRpemVkX2ljZV9jb25u
ZWN0aW9uX3N0YXRlXzsKK30KKworUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0
aW9uU3RhdGUKK1BlZXJDb25uZWN0aW9uOjpwZWVyX2Nvbm5lY3Rpb25fc3RhdGUoKSB7CisgIHJl
dHVybiBjb25uZWN0aW9uX3N0YXRlXzsKK30KKwogUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6Oklj
ZUdhdGhlcmluZ1N0YXRlCiBQZWVyQ29ubmVjdGlvbjo6aWNlX2dhdGhlcmluZ19zdGF0ZSgpIHsK
ICAgcmV0dXJuIGljZV9nYXRoZXJpbmdfc3RhdGVfOwpAQCAtMTk5NSw2ICsyMDgxLDE2IEBAIFJU
Q0Vycm9yIFBlZXJDb25uZWN0aW9uOjpBcHBseUxvY2FsRGVzY3JpcHRpb24oCiAgIC8vIHxsb2Nh
bF9kZXNjcmlwdGlvbigpfC4KICAgUlRDX0RDSEVDSyhsb2NhbF9kZXNjcmlwdGlvbigpKTsKIAor
ICBpZiAoIWlzX2NhbGxlcl8pIHsKKyAgICBpZiAocmVtb3RlX2Rlc2NyaXB0aW9uKCkpIHsKKyAg
ICAgIC8vIFJlbW90ZSBkZXNjcmlwdGlvbiB3YXMgYXBwbGllZCBmaXJzdCwgc28gdGhpcyBQQyBp
cyB0aGUgY2FsbGVlLgorICAgICAgaXNfY2FsbGVyXyA9IGZhbHNlOworICAgIH0gZWxzZSB7Cisg
ICAgICAvLyBMb2NhbCBkZXNjcmlwdGlvbiBpcyBhcHBsaWVkIGZpcnN0LCBzbyB0aGlzIFBDIGlz
IHRoZSBjYWxsZXIuCisgICAgICBpc19jYWxsZXJfID0gdHJ1ZTsKKyAgICB9CisgIH0KKwogICBS
VENFcnJvciBlcnJvciA9IFB1c2hkb3duVHJhbnNwb3J0RGVzY3JpcHRpb24oY3JpY2tldDo6Q1Nf
TE9DQUwsIHR5cGUpOwogICBpZiAoIWVycm9yLm9rKCkpIHsKICAgICByZXR1cm4gZXJyb3I7CkBA
IC0yMDc3LDcgKzIxNzMsNyBAQCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbjo6QXBwbHlMb2NhbERl
c2NyaXB0aW9uKAogICAvLyBJZiBzZXR0aW5nIHRoZSBkZXNjcmlwdGlvbiBkZWNpZGVkIG91ciBT
U0wgcm9sZSwgYWxsb2NhdGUgYW55IG5lY2Vzc2FyeQogICAvLyBTQ1RQIHNpZHMuCiAgIHJ0Yzo6
U1NMUm9sZSByb2xlOwotICBpZiAoZGF0YV9jaGFubmVsX3R5cGUoKSA9PSBjcmlja2V0OjpEQ1Rf
U0NUUCAmJiBHZXRTY3RwU3NsUm9sZSgmcm9sZSkpIHsKKyAgaWYgKERhdGFDaGFubmVsOjpJc1Nj
dHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykgJiYgR2V0U2N0cFNzbFJvbGUoJnJvbGUpKSB7CiAg
ICAgQWxsb2NhdGVTY3RwU2lkcyhyb2xlKTsKICAgfQogCkBAIC0yMzUyLDcgKzI0NDgsNyBAQCBS
VENFcnJvciBQZWVyQ29ubmVjdGlvbjo6QXBwbHlSZW1vdGVEZXNjcmlwdGlvbigKICAgLy8gSWYg
c2V0dGluZyB0aGUgZGVzY3JpcHRpb24gZGVjaWRlZCBvdXIgU1NMIHJvbGUsIGFsbG9jYXRlIGFu
eSBuZWNlc3NhcnkKICAgLy8gU0NUUCBzaWRzLgogICBydGM6OlNTTFJvbGUgcm9sZTsKLSAgaWYg
KGRhdGFfY2hhbm5lbF90eXBlKCkgPT0gY3JpY2tldDo6RENUX1NDVFAgJiYgR2V0U2N0cFNzbFJv
bGUoJnJvbGUpKSB7CisgIGlmIChEYXRhQ2hhbm5lbDo6SXNTY3RwTGlrZShkYXRhX2NoYW5uZWxf
dHlwZV8pICYmIEdldFNjdHBTc2xSb2xlKCZyb2xlKSkgewogICAgIEFsbG9jYXRlU2N0cFNpZHMo
cm9sZSk7CiAgIH0KIApAQCAtMjM4MCw5ICsyNDc2LDEwIEBAIFJUQ0Vycm9yIFBlZXJDb25uZWN0
aW9uOjpBcHBseVJlbW90ZURlc2NyaXB0aW9uKAogICAgICAgICAvLyBUaGUgcmVtb3RlIGRlc2Ny
aXB0aW9uIGhhcyBzaWduYWxlZCB0aGUgc3RyZWFtIElEcy4KICAgICAgICAgc3RyZWFtX2lkcyA9
IG1lZGlhX2Rlc2MtPnN0cmVhbXMoKVswXS5zdHJlYW1faWRzKCk7CiAgICAgICB9Ci0gICAgICBp
ZiAoUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25IYXNSZWN2KGxvY2FsX2RpcmVjdGlvbikpIHsKLSAg
ICAgICAgYm9vbCBpc19ub3dfcmVjZWl2aW5nX3RyYW5zY2VpdmVyID0gIXRyYW5zY2VpdmVyLT5m
aXJlZF9kaXJlY3Rpb24oKSB8fCAhUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25IYXNSZWN2KCp0cmFu
c2NlaXZlci0+ZmlyZWRfZGlyZWN0aW9uKCkpOwotICAgICAgICBSVENfTE9HKExTX0lORk8pIDw8
ICJQcm9jZXNzaW5nIHRoZSIgPDwgKGlzX25vd19yZWNlaXZpbmdfdHJhbnNjZWl2ZXIgPyAiIGFk
ZGl0aW9uIG9mIGEgbmV3ICIgOiAiIGRlc2NyaXB0aW9uIG9mIHRoZSAiKSA8PCAidHJhY2sgZm9y
IE1JRD0iCisgICAgICBpZiAoUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25IYXNSZWN2KGxvY2FsX2Rp
cmVjdGlvbikgJiYKKyAgICAgICAgICAoIXRyYW5zY2VpdmVyLT5maXJlZF9kaXJlY3Rpb24oKSB8
fAorICAgICAgICAgICAhUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25IYXNSZWN2KCp0cmFuc2NlaXZl
ci0+ZmlyZWRfZGlyZWN0aW9uKCkpKSkgeworICAgICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJQ
cm9jZXNzaW5nIHRoZSBhZGRpdGlvbiBvZiBhIG5ldyB0cmFjayBmb3IgTUlEPSIKICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBjb250ZW50LT5uYW1lIDw8ICIgKGFkZGVkIHRvICIKICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBHZXRTdHJlYW1JZHNTdHJpbmcoc3RyZWFtX2lkcykgPDwg
IikuIjsKIApAQCAtMjQwMiw4ICsyNDk5LDcgQEAgUlRDRXJyb3IgUGVlckNvbm5lY3Rpb246OkFw
cGx5UmVtb3RlRGVzY3JpcHRpb24oCiAgICAgICAgIC8vIFRPRE8oaGJvcyk6IFdoZW4gd2UgcmVt
b3ZlIHJlbW90ZV9zdHJlYW1zKCksIHVzZSBzZXRfc3RyZWFtX2lkcygpCiAgICAgICAgIC8vIGlu
c3RlYWQuIGh0dHBzOi8vY3JidWcuY29tL3dlYnJ0Yy85NDgwCiAgICAgICAgIHRyYW5zY2VpdmVy
LT5pbnRlcm5hbCgpLT5yZWNlaXZlcl9pbnRlcm5hbCgpLT5TZXRTdHJlYW1zKG1lZGlhX3N0cmVh
bXMpOwotICAgICAgICBpZiAoaXNfbm93X3JlY2VpdmluZ190cmFuc2NlaXZlcikKLSAgICAgICAg
ICBub3dfcmVjZWl2aW5nX3RyYW5zY2VpdmVycy5wdXNoX2JhY2sodHJhbnNjZWl2ZXIpOworICAg
ICAgICBub3dfcmVjZWl2aW5nX3RyYW5zY2VpdmVycy5wdXNoX2JhY2sodHJhbnNjZWl2ZXIpOwog
ICAgICAgfQogICAgICAgLy8gMi4yLjguMS43OiBJZiBkaXJlY3Rpb24gaXMgInNlbmRvbmx5IiBv
ciAiaW5hY3RpdmUiLCBhbmQgdHJhbnNjZWl2ZXIncwogICAgICAgLy8gW1tGaXJlZERpcmVjdGlv
bl1dIHNsb3QgaXMgZWl0aGVyICJzZW5kcmVjdiIgb3IgInJlY3Zvbmx5IiwgcHJvY2VzcyB0aGUK
QEAgLTI2NDYsMTEgKzI3NDIsMTEgQEAgUlRDRXJyb3IgUGVlckNvbm5lY3Rpb246OlVwZGF0ZVRy
YW5zY2VpdmVyQ2hhbm5lbCgKICAgICBjb25zdCBjcmlja2V0OjpDb250ZW50R3JvdXAqIGJ1bmRs
ZV9ncm91cCkgewogICBSVENfRENIRUNLKElzVW5pZmllZFBsYW4oKSk7CiAgIFJUQ19EQ0hFQ0so
dHJhbnNjZWl2ZXIpOwotICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IHRyYW5zY2Vp
dmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCk7CisgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2Uq
IGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOwogICBpZiAoY29u
dGVudC5yZWplY3RlZCkgewogICAgIGlmIChjaGFubmVsKSB7CiAgICAgICB0cmFuc2NlaXZlci0+
aW50ZXJuYWwoKS0+U2V0Q2hhbm5lbChudWxscHRyKTsKLSAgICAgIERlc3Ryb3lCYXNlQ2hhbm5l
bChjaGFubmVsKTsKKyAgICAgIERlc3Ryb3lDaGFubmVsSW50ZXJmYWNlKGNoYW5uZWwpOwogICAg
IH0KICAgfSBlbHNlIHsKICAgICBpZiAoIWNoYW5uZWwpIHsKQEAgLTI2ODMsNyArMjc3OSw3IEBA
IFJUQ0Vycm9yIFBlZXJDb25uZWN0aW9uOjpVcGRhdGVEYXRhQ2hhbm5lbCgKICAgaWYgKGNvbnRl
bnQucmVqZWN0ZWQpIHsKICAgICBEZXN0cm95RGF0YUNoYW5uZWwoKTsKICAgfSBlbHNlIHsKLSAg
ICBpZiAoIXJ0cF9kYXRhX2NoYW5uZWxfICYmICFzY3RwX3RyYW5zcG9ydF8pIHsKKyAgICBpZiAo
IXJ0cF9kYXRhX2NoYW5uZWxfICYmICFzY3RwX3RyYW5zcG9ydF8gJiYgIW1lZGlhX3RyYW5zcG9y
dF8pIHsKICAgICAgIGlmICghQ3JlYXRlRGF0YUNoYW5uZWwoY29udGVudC5uYW1lKSkgewogICAg
ICAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBkYXRhIGNoYW5u
ZWwuIik7CkBAIC0yODcwLDYgKzI5NjYsNDkgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbjo6U2V0Q29u
ZmlndXJhdGlvbihjb25zdCBSVENDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLAogICAgIHJl
dHVybiBTYWZlU2V0RXJyb3IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX01PRElGSUNBVElPTiwgZXJy
b3IpOwogICB9CiAKKyAgaWYgKGxvY2FsX2Rlc2NyaXB0aW9uKCkgJiYKKyAgICAgIGNvbmZpZ3Vy
YXRpb24udXNlX21lZGlhX3RyYW5zcG9ydCAhPSBjb25maWd1cmF0aW9uXy51c2VfbWVkaWFfdHJh
bnNwb3J0KSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbid0IGNoYW5nZSBtZWRpYV90
cmFuc3BvcnQgYWZ0ZXIgY2FsbGluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIlNldExv
Y2FsRGVzY3JpcHRpb24uIjsKKyAgICByZXR1cm4gU2FmZVNldEVycm9yKFJUQ0Vycm9yVHlwZTo6
SU5WQUxJRF9NT0RJRklDQVRJT04sIGVycm9yKTsKKyAgfQorCisgIGlmIChyZW1vdGVfZGVzY3Jp
cHRpb24oKSAmJgorICAgICAgY29uZmlndXJhdGlvbi51c2VfbWVkaWFfdHJhbnNwb3J0ICE9IGNv
bmZpZ3VyYXRpb25fLnVzZV9tZWRpYV90cmFuc3BvcnQpIHsKKyAgICBSVENfTE9HKExTX0VSUk9S
KSA8PCAiQ2FuJ3QgY2hhbmdlIG1lZGlhX3RyYW5zcG9ydCBhZnRlciBjYWxsaW5nICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAiU2V0UmVtb3RlRGVzY3JpcHRpb24uIjsKKyAgICByZXR1cm4g
U2FmZVNldEVycm9yKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9NT0RJRklDQVRJT04sIGVycm9yKTsK
KyAgfQorCisgIGlmIChsb2NhbF9kZXNjcmlwdGlvbigpICYmCisgICAgICBjb25maWd1cmF0aW9u
LnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgIT0KKyAgICAgICAgICBjb25m
aWd1cmF0aW9uXy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzKSB7CisgICAg
UlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbid0IGNoYW5nZSBtZWRpYV90cmFuc3BvcnRfZm9yX2Rh
dGFfY2hhbm5lbHMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJhZnRlciBjYWxsaW5nIFNl
dExvY2FsRGVzY3JpcHRpb24uIjsKKyAgICByZXR1cm4gU2FmZVNldEVycm9yKFJUQ0Vycm9yVHlw
ZTo6SU5WQUxJRF9NT0RJRklDQVRJT04sIGVycm9yKTsKKyAgfQorCisgIGlmIChyZW1vdGVfZGVz
Y3JpcHRpb24oKSAmJgorICAgICAgY29uZmlndXJhdGlvbi51c2VfbWVkaWFfdHJhbnNwb3J0X2Zv
cl9kYXRhX2NoYW5uZWxzICE9CisgICAgICAgICAgY29uZmlndXJhdGlvbl8udXNlX21lZGlhX3Ry
YW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscykgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJD
YW4ndCBjaGFuZ2UgbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAiYWZ0ZXIgY2FsbGluZyBTZXRSZW1vdGVEZXNjcmlwdGlvbi4iOwor
ICAgIHJldHVybiBTYWZlU2V0RXJyb3IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX01PRElGSUNBVElP
TiwgZXJyb3IpOworICB9CisKKyAgaWYgKGxvY2FsX2Rlc2NyaXB0aW9uKCkgJiYKKyAgICAgIGNv
bmZpZ3VyYXRpb24uY3J5cHRvX29wdGlvbnMgIT0gY29uZmlndXJhdGlvbl8uY3J5cHRvX29wdGlv
bnMpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ2FuJ3QgY2hhbmdlIGNyeXB0b19vcHRp
b25zIGFmdGVyIGNhbGxpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJTZXRMb2NhbERl
c2NyaXB0aW9uLiI7CisgICAgcmV0dXJuIFNhZmVTZXRFcnJvcihSVENFcnJvclR5cGU6OklOVkFM
SURfTU9ESUZJQ0FUSU9OLCBlcnJvcik7CisgIH0KKworICBpZiAoY29uZmlndXJhdGlvbi51c2Vf
bWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzIHx8CisgICAgICBjb25maWd1cmF0aW9u
LnVzZV9tZWRpYV90cmFuc3BvcnQpIHsKKyAgICBSVENfQ0hFQ0soY29uZmlndXJhdGlvbi5idW5k
bGVfcG9saWN5ID09IGtCdW5kbGVQb2xpY3lNYXhCdW5kbGUpCisgICAgICAgIDw8ICJNZWRpYSB0
cmFuc3BvcnQgcmVxdWlyZXMgTWF4QnVuZGxlIHBvbGljeS4iOworICB9CisKICAgLy8gVGhlIHNp
bXBsZXN0IChhbmQgbW9zdCBmdXR1cmUtY29tcGF0aWJsZSkgd2F5IHRvIHRlbGwgaWYgdGhlIGNv
bmZpZyB3YXMKICAgLy8gbW9kaWZpZWQgaW4gYW4gaW52YWxpZCB3YXkgaXMgdG8gY29weSBlYWNo
IHByb3BlcnR5IHdlIGRvIHN1cHBvcnQKICAgLy8gbW9kaWZ5aW5nLCB0aGVuIHVzZSBvcGVyYXRv
cj09LiBUaGVyZSBhcmUgZmFyIG1vcmUgcHJvcGVydGllcyB3ZSBkb24ndApAQCAtMjg5NCw2ICsz
MDMzLDkgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbjo6U2V0Q29uZmlndXJhdGlvbihjb25zdCBSVEND
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLAogICBtb2RpZmllZF9jb25maWcubmV0d29ya19w
cmVmZXJlbmNlID0gY29uZmlndXJhdGlvbi5uZXR3b3JrX3ByZWZlcmVuY2U7CiAgIG1vZGlmaWVk
X2NvbmZpZy5hY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMgPQogICAgICAgY29uZmlndXJhdGlvbi5h
Y3RpdmVfcmVzZXRfc3J0cF9wYXJhbXM7CisgIG1vZGlmaWVkX2NvbmZpZy51c2VfbWVkaWFfdHJh
bnNwb3J0ID0gY29uZmlndXJhdGlvbi51c2VfbWVkaWFfdHJhbnNwb3J0OworICBtb2RpZmllZF9j
b25maWcudXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9CisgICAgICBjb25m
aWd1cmF0aW9uLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHM7CiAgIGlmIChj
b25maWd1cmF0aW9uICE9IG1vZGlmaWVkX2NvbmZpZykgewogICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJNb2RpZnlpbmcgdGhlIGNvbmZpZ3VyYXRpb24gaW4gYW4gdW5zdXBwb3J0ZWQgd2F5LiI7
CiAgICAgcmV0dXJuIFNhZmVTZXRFcnJvcihSVENFcnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FU
SU9OLCBlcnJvcik7CkBAIC0yOTUxLDYgKzMwOTMsMTEgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbjo6
U2V0Q29uZmlndXJhdGlvbihjb25zdCBSVENDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLAog
ICB9CiAKICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TZXRJY2VDb25maWcoUGFyc2VJY2VDb25m
aWcobW9kaWZpZWRfY29uZmlnKSk7CisgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2V0TWVkaWFU
cmFuc3BvcnRGYWN0b3J5KAorICAgICAgbW9kaWZpZWRfY29uZmlnLnVzZV9tZWRpYV90cmFuc3Bv
cnQgfHwKKyAgICAgICAgICAgICAgbW9kaWZpZWRfY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnRf
Zm9yX2RhdGFfY2hhbm5lbHMKKyAgICAgICAgICA/IGZhY3RvcnlfLT5tZWRpYV90cmFuc3BvcnRf
ZmFjdG9yeSgpCisgICAgICAgICAgOiBudWxscHRyKTsKIAogICBpZiAoY29uZmlndXJhdGlvbl8u
YWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zICE9CiAgICAgICBtb2RpZmllZF9jb25maWcuYWN0aXZl
X3Jlc2V0X3NydHBfcGFyYW1zKSB7CkBAIC0zMTE5LDcgKzMyNjYsNyBAQCB2b2lkIFBlZXJDb25u
ZWN0aW9uOjpTZXRBdWRpb1BsYXlvdXQoYm9vbCBwbGF5b3V0KSB7CiAgICAgcmV0dXJuOwogICB9
CiAgIGF1dG8gYXVkaW9fc3RhdGUgPQotICAgICAgZmFjdG9yeV8tPmNoYW5uZWxfbWFuYWdlcigp
LT5tZWRpYV9lbmdpbmUoKS0+R2V0QXVkaW9TdGF0ZSgpOworICAgICAgZmFjdG9yeV8tPmNoYW5u
ZWxfbWFuYWdlcigpLT5tZWRpYV9lbmdpbmUoKS0+dm9pY2UoKS5HZXRBdWRpb1N0YXRlKCk7CiAg
IGF1ZGlvX3N0YXRlLT5TZXRQbGF5b3V0KHBsYXlvdXQpOwogfQogCkBAIC0zMTMxLDcgKzMyNzgs
NyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpTZXRBdWRpb1JlY29yZGluZyhib29sIHJlY29yZGlu
ZykgewogICAgIHJldHVybjsKICAgfQogICBhdXRvIGF1ZGlvX3N0YXRlID0KLSAgICAgIGZhY3Rv
cnlfLT5jaGFubmVsX21hbmFnZXIoKS0+bWVkaWFfZW5naW5lKCktPkdldEF1ZGlvU3RhdGUoKTsK
KyAgICAgIGZhY3RvcnlfLT5jaGFubmVsX21hbmFnZXIoKS0+bWVkaWFfZW5naW5lKCktPnZvaWNl
KCkuR2V0QXVkaW9TdGF0ZSgpOwogICBhdWRpb19zdGF0ZS0+U2V0UmVjb3JkaW5nKHJlY29yZGlu
Zyk7CiB9CiAKQEAgLTMxNDEsNyArMzI4OCw3IEBAIFBlZXJDb25uZWN0aW9uOjpHZXRSZW1vdGVB
dWRpb1NTTENlcnRpZmljYXRlKCkgewogICBpZiAoIWNoYWluIHx8ICFjaGFpbi0+R2V0U2l6ZSgp
KSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KLSAgcmV0dXJuIGNoYWluLT5HZXQoMCkuR2V0
VW5pcXVlUmVmZXJlbmNlKCk7CisgIHJldHVybiBjaGFpbi0+R2V0KDApLkNsb25lKCk7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTENlcnRDaGFpbj4KQEAgLTMxNzAsOSArMzMxNywxMyBA
QCBib29sIFBlZXJDb25uZWN0aW9uOjpTdGFydFJ0Y0V2ZW50TG9nKHJ0Yzo6UGxhdGZvcm1GaWxl
IGZpbGUsCiAgIGNvbnN0IHNpemVfdCBtYXhfc2l6ZSA9IChtYXhfc2l6ZV9ieXRlcyA8IDApCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFJ0Y0V2ZW50TG9nOjprVW5saW1pdGVkT3V0
cHV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJ0Yzo6c2F0dXJhdGVkX2Nhc3Q8
c2l6ZV90PihtYXhfc2l6ZV9ieXRlcyk7CisgIGludDY0X3Qgb3V0cHV0X3BlcmlvZF9tcyA9IHdl
YnJ0Yzo6UnRjRXZlbnRMb2c6OmtJbW1lZGlhdGVPdXRwdXQ7CisgIGlmIChmaWVsZF90cmlhbDo6
SXNFbmFibGVkKCJXZWJSVEMtUnRjRXZlbnRMb2dOZXdGb3JtYXQiKSkgeworICAgIG91dHB1dF9w
ZXJpb2RfbXMgPSA1MDAwOworICB9CiAgIHJldHVybiBTdGFydFJ0Y0V2ZW50TG9nKAogICAgICAg
YWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dPdXRwdXRGaWxlPihmaWxlLCBtYXhfc2l6ZSks
Ci0gICAgICB3ZWJydGM6OlJ0Y0V2ZW50TG9nOjprSW1tZWRpYXRlT3V0cHV0KTsKKyAgICAgIG91
dHB1dF9wZXJpb2RfbXMpOwogfQogCiBib29sIFBlZXJDb25uZWN0aW9uOjpTdGFydFJ0Y0V2ZW50
TG9nKHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZ091dHB1dD4gb3V0cHV0LApAQCAtMzM0Nyw3
ICszNDk4LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlQXVkaW9SZWNlaXZlcigKICAg
Ly8gdGhlIGNvbnN0cnVjdG9yIHRha2luZyBzdHJlYW0gSURzIGluc3RlYWQuCiAgIGF1dG8qIGF1
ZGlvX3JlY2VpdmVyID0gbmV3IEF1ZGlvUnRwUmVjZWl2ZXIoCiAgICAgICB3b3JrZXJfdGhyZWFk
KCksIHJlbW90ZV9zZW5kZXJfaW5mby5zZW5kZXJfaWQsIHN0cmVhbXMpOwotICBhdWRpb19yZWNl
aXZlci0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbCgpKTsKKyAgYXVk
aW9fcmVjZWl2ZXItPlNldE1lZGlhQ2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVsKCkpOwogICBh
dWRpb19yZWNlaXZlci0+U2V0dXBNZWRpYUNoYW5uZWwocmVtb3RlX3NlbmRlcl9pbmZvLmZpcnN0
X3NzcmMpOwogICBhdXRvIHJlY2VpdmVyID0gUnRwUmVjZWl2ZXJQcm94eVdpdGhJbnRlcm5hbDxS
dHBSZWNlaXZlckludGVybmFsPjo6Q3JlYXRlKAogICAgICAgc2lnbmFsaW5nX3RocmVhZCgpLCBh
dWRpb19yZWNlaXZlcik7CkBAIC0zMzY1LDcgKzM1MTYsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9u
OjpDcmVhdGVWaWRlb1JlY2VpdmVyKAogICAvLyB0aGUgY29uc3RydWN0b3IgdGFraW5nIHN0cmVh
bSBJRHMgaW5zdGVhZC4KICAgYXV0byogdmlkZW9fcmVjZWl2ZXIgPSBuZXcgVmlkZW9SdHBSZWNl
aXZlcigKICAgICAgIHdvcmtlcl90aHJlYWQoKSwgcmVtb3RlX3NlbmRlcl9pbmZvLnNlbmRlcl9p
ZCwgc3RyZWFtcyk7Ci0gIHZpZGVvX3JlY2VpdmVyLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCh2aWRl
b19tZWRpYV9jaGFubmVsKCkpOworICB2aWRlb19yZWNlaXZlci0+U2V0TWVkaWFDaGFubmVsKHZp
ZGVvX21lZGlhX2NoYW5uZWwoKSk7CiAgIHZpZGVvX3JlY2VpdmVyLT5TZXR1cE1lZGlhQ2hhbm5l
bChyZW1vdGVfc2VuZGVyX2luZm8uZmlyc3Rfc3NyYyk7CiAgIGF1dG8gcmVjZWl2ZXIgPSBSdHBS
ZWNlaXZlclByb3h5V2l0aEludGVybmFsPFJ0cFJlY2VpdmVySW50ZXJuYWw+OjpDcmVhdGUoCiAg
ICAgICBzaWduYWxpbmdfdGhyZWFkKCksIHZpZGVvX3JlY2VpdmVyKTsKQEAgLTM0MDgsNyArMzU1
OSw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkFkZEF1ZGlvVHJhY2soQXVkaW9UcmFja0ludGVy
ZmFjZSogdHJhY2ssCiAgIC8vIE5vcm1hbCBjYXNlOyB3ZSd2ZSBuZXZlciBzZWVuIHRoaXMgdHJh
Y2sgYmVmb3JlLgogICBhdXRvIG5ld19zZW5kZXIgPSBDcmVhdGVTZW5kZXIoY3JpY2tldDo6TUVE
SUFfVFlQRV9BVURJTywgdHJhY2stPmlkKCksIHRyYWNrLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge3N0cmVhbS0+aWQoKX0sIHt9KTsKLSAgbmV3X3NlbmRlci0+aW50ZXJuYWwo
KS0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbCgpKTsKKyAgbmV3X3Nl
bmRlci0+aW50ZXJuYWwoKS0+U2V0TWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWwoKSk7
CiAgIEdldEF1ZGlvVHJhbnNjZWl2ZXIoKS0+aW50ZXJuYWwoKS0+QWRkU2VuZGVyKG5ld19zZW5k
ZXIpOwogICAvLyBJZiB0aGUgc2VuZGVyIGhhcyBhbHJlYWR5IGJlZW4gY29uZmlndXJlZCBpbiBT
RFAsIHdlIGNhbGwgU2V0U3NyYywKICAgLy8gd2hpY2ggd2lsbCBjb25uZWN0IHRoZSBzZW5kZXIg
dG8gdGhlIHVuZGVybHlpbmcgdHJhbnNwb3J0LiBUaGlzIGNhbgpAQCAtMzQ1Myw3ICszNjA0LDcg
QEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6QWRkVmlkZW9UcmFjayhWaWRlb1RyYWNrSW50ZXJmYWNl
KiB0cmFjaywKICAgLy8gTm9ybWFsIGNhc2U7IHdlJ3ZlIG5ldmVyIHNlZW4gdGhpcyB0cmFjayBi
ZWZvcmUuCiAgIGF1dG8gbmV3X3NlbmRlciA9IENyZWF0ZVNlbmRlcihjcmlja2V0OjpNRURJQV9U
WVBFX1ZJREVPLCB0cmFjay0+aWQoKSwgdHJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7c3RyZWFtLT5pZCgpfSwge30pOwotICBuZXdfc2VuZGVyLT5pbnRlcm5hbCgpLT5T
ZXRWaWRlb01lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsKCkpOworICBuZXdfc2VuZGVy
LT5pbnRlcm5hbCgpLT5TZXRNZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbCgpKTsKICAg
R2V0VmlkZW9UcmFuc2NlaXZlcigpLT5pbnRlcm5hbCgpLT5BZGRTZW5kZXIobmV3X3NlbmRlcik7
CiAgIGNvbnN0IFJ0cFNlbmRlckluZm8qIHNlbmRlcl9pbmZvID0KICAgICAgIEZpbmRTZW5kZXJJ
bmZvKGxvY2FsX3ZpZGVvX3NlbmRlcl9pbmZvc18sIHN0cmVhbS0+aWQoKSwgdHJhY2stPmlkKCkp
OwpAQCAtMzQ5NSw2ICszNjQ2LDI5IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OlNldEljZUNvbm5l
Y3Rpb25TdGF0ZShJY2VDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSB7CiAgIE9ic2VydmVyKCkt
Pk9uSWNlQ29ubmVjdGlvbkNoYW5nZShpY2VfY29ubmVjdGlvbl9zdGF0ZV8pOwogfQogCit2b2lk
IFBlZXJDb25uZWN0aW9uOjpTZXRTdGFuZGFyZGl6ZWRJY2VDb25uZWN0aW9uU3RhdGUoCisgICAg
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpIHsK
KyAgUlRDX0RDSEVDSyhzaWduYWxpbmdfdGhyZWFkKCktPklzQ3VycmVudCgpKTsKKyAgaWYgKHN0
YW5kYXJkaXplZF9pY2VfY29ubmVjdGlvbl9zdGF0ZV8gPT0gbmV3X3N0YXRlKQorICAgIHJldHVy
bjsKKyAgaWYgKElzQ2xvc2VkKCkpCisgICAgcmV0dXJuOworICBzdGFuZGFyZGl6ZWRfaWNlX2Nv
bm5lY3Rpb25fc3RhdGVfID0gbmV3X3N0YXRlOworICAvLyBUT0RPKGpvbmFzb2xzc29uKTogUGFz
cyB0aGlzIHZhbHVlIG9uIHRvIE9uSWNlQ29ubmVjdGlvbkNoYW5nZSBpbnN0ZWFkIG9mCisgIC8v
IHRoZSBvbGQgb25lIG9uY2UgZGlzY29ubmVjdHMgYXJlIGhhbmRsZWQgcHJvcGVybHkuCit9CisK
K3ZvaWQgUGVlckNvbm5lY3Rpb246OlNldENvbm5lY3Rpb25TdGF0ZSgKKyAgICBQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpIHsKKyAgUlRDX0RD
SEVDSyhzaWduYWxpbmdfdGhyZWFkKCktPklzQ3VycmVudCgpKTsKKyAgaWYgKGNvbm5lY3Rpb25f
c3RhdGVfID09IG5ld19zdGF0ZSkKKyAgICByZXR1cm47CisgIGlmIChJc0Nsb3NlZCgpKQorICAg
IHJldHVybjsKKyAgY29ubmVjdGlvbl9zdGF0ZV8gPSBuZXdfc3RhdGU7CisgIE9ic2VydmVyKCkt
Pk9uQ29ubmVjdGlvbkNoYW5nZShuZXdfc3RhdGUpOworfQorCiB2b2lkIFBlZXJDb25uZWN0aW9u
OjpPbkljZUdhdGhlcmluZ0NoYW5nZSgKICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNl
R2F0aGVyaW5nU3RhdGUgbmV3X3N0YXRlKSB7CiAgIFJUQ19EQ0hFQ0soc2lnbmFsaW5nX3RocmVh
ZCgpLT5Jc0N1cnJlbnQoKSk7CkBAIC0zNTQyLDYgKzM3MTYsMTAgQEAgdm9pZCBQZWVyQ29ubmVj
dGlvbjo6Q2hhbmdlU2lnbmFsaW5nU3RhdGUoCiAgIGlmIChzaWduYWxpbmdfc3RhdGUgPT0ga0Ns
b3NlZCkgewogICAgIGljZV9jb25uZWN0aW9uX3N0YXRlXyA9IGtJY2VDb25uZWN0aW9uQ2xvc2Vk
OwogICAgIE9ic2VydmVyKCktPk9uSWNlQ29ubmVjdGlvbkNoYW5nZShpY2VfY29ubmVjdGlvbl9z
dGF0ZV8pOworICAgIHN0YW5kYXJkaXplZF9pY2VfY29ubmVjdGlvbl9zdGF0ZV8gPQorICAgICAg
ICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlOjprSWNlQ29ubmVj
dGlvbkNsb3NlZDsKKyAgICBjb25uZWN0aW9uX3N0YXRlXyA9IFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ2xvc2VkOworICAgIE9ic2VydmVyKCktPk9uQ29u
bmVjdGlvbkNoYW5nZShjb25uZWN0aW9uX3N0YXRlXyk7CiAgICAgaWYgKGljZV9nYXRoZXJpbmdf
c3RhdGVfICE9IGtJY2VHYXRoZXJpbmdDb21wbGV0ZSkgewogICAgICAgaWNlX2dhdGhlcmluZ19z
dGF0ZV8gPSBrSWNlR2F0aGVyaW5nQ29tcGxldGU7CiAgICAgICBPYnNlcnZlcigpLT5PbkljZUdh
dGhlcmluZ0NoYW5nZShpY2VfZ2F0aGVyaW5nX3N0YXRlXyk7CkBAIC0zNjQxLDggKzM4MTksMTUg
QEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6R2V0T3B0aW9uc0Zvck9mZmVyKAogICB9CiAKICAgc2Vz
c2lvbl9vcHRpb25zLT5ydGNwX2NuYW1lID0gcnRjcF9jbmFtZV87Ci0gIHNlc3Npb25fb3B0aW9u
cy0+Y3J5cHRvX29wdGlvbnMgPSBmYWN0b3J5Xy0+b3B0aW9ucygpLmNyeXB0b19vcHRpb25zOwor
ICBzZXNzaW9uX29wdGlvbnMtPmNyeXB0b19vcHRpb25zID0gR2V0Q3J5cHRvT3B0aW9ucygpOwog
ICBzZXNzaW9uX29wdGlvbnMtPmlzX3VuaWZpZWRfcGxhbiA9IElzVW5pZmllZFBsYW4oKTsKKyAg
c2Vzc2lvbl9vcHRpb25zLT5wb29sZWRfaWNlX2NyZWRlbnRpYWxzID0KKyAgICAgIG5ldHdvcmtf
dGhyZWFkKCktPkludm9rZTxzdGQ6OnZlY3Rvcjxjcmlja2V0OjpJY2VQYXJhbWV0ZXJzPj4oCisg
ICAgICAgICAgUlRDX0ZST01fSEVSRSwKKyAgICAgICAgICBydGM6OkJpbmQoJmNyaWNrZXQ6OlBv
cnRBbGxvY2F0b3I6OkdldFBvb2xlZEljZUNyZWRlbnRpYWxzLAorICAgICAgICAgICAgICAgICAg
ICBwb3J0X2FsbG9jYXRvcl8uZ2V0KCkpKTsKKyAgc2Vzc2lvbl9vcHRpb25zLT5vZmZlcl9leHRt
YXBfYWxsb3dfbWl4ZWQgPQorICAgICAgY29uZmlndXJhdGlvbl8ub2ZmZXJfZXh0bWFwX2FsbG93
X21peGVkOwogfQogCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpHZXRPcHRpb25zRm9yUGxhbkJPZmZl
cigKQEAgLTM5MDEsOCArNDA4NiwxMyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpHZXRPcHRpb25z
Rm9yQW5zd2VyKAogICB9CiAKICAgc2Vzc2lvbl9vcHRpb25zLT5ydGNwX2NuYW1lID0gcnRjcF9j
bmFtZV87Ci0gIHNlc3Npb25fb3B0aW9ucy0+Y3J5cHRvX29wdGlvbnMgPSBmYWN0b3J5Xy0+b3B0
aW9ucygpLmNyeXB0b19vcHRpb25zOworICBzZXNzaW9uX29wdGlvbnMtPmNyeXB0b19vcHRpb25z
ID0gR2V0Q3J5cHRvT3B0aW9ucygpOwogICBzZXNzaW9uX29wdGlvbnMtPmlzX3VuaWZpZWRfcGxh
biA9IElzVW5pZmllZFBsYW4oKTsKKyAgc2Vzc2lvbl9vcHRpb25zLT5wb29sZWRfaWNlX2NyZWRl
bnRpYWxzID0KKyAgICAgIG5ldHdvcmtfdGhyZWFkKCktPkludm9rZTxzdGQ6OnZlY3Rvcjxjcmlj
a2V0OjpJY2VQYXJhbWV0ZXJzPj4oCisgICAgICAgICAgUlRDX0ZST01fSEVSRSwKKyAgICAgICAg
ICBydGM6OkJpbmQoJmNyaWNrZXQ6OlBvcnRBbGxvY2F0b3I6OkdldFBvb2xlZEljZUNyZWRlbnRp
YWxzLAorICAgICAgICAgICAgICAgICAgICBwb3J0X2FsbG9jYXRvcl8uZ2V0KCkpKTsKIH0KIAog
dm9pZCBQZWVyQ29ubmVjdGlvbjo6R2V0T3B0aW9uc0ZvclBsYW5CQW5zd2VyKApAQCAtNDA2OSw2
ICs0MjU5LDggQEAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IFBlZXJDb25uZWN0aW9uOjpH
ZXREYXRhTWlkKCkgY29uc3QgewogICAgICAgcmV0dXJuIHJ0cF9kYXRhX2NoYW5uZWxfLT5jb250
ZW50X25hbWUoKTsKICAgICBjYXNlIGNyaWNrZXQ6OkRDVF9TQ1RQOgogICAgICAgcmV0dXJuIHNj
dHBfbWlkXzsKKyAgICBjYXNlIGNyaWNrZXQ6OkRDVF9NRURJQV9UUkFOU1BPUlQ6CisgICAgICBy
ZXR1cm4gbWVkaWFfdHJhbnNwb3J0X2RhdGFfbWlkXzsKICAgICBkZWZhdWx0OgogICAgICAgcmV0
dXJuIGFic2w6Om51bGxvcHQ7CiAgIH0KQEAgLTQ0MzEsNyArNDYyMyw3IEBAIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxEYXRhQ2hhbm5lbD4gUGVlckNvbm5lY3Rpb246OkludGVybmFsQ3JlYXRlRGF0YUNo
YW5uZWwoCiAgIH0KICAgSW50ZXJuYWxEYXRhQ2hhbm5lbEluaXQgbmV3X2NvbmZpZyA9CiAgICAg
ICBjb25maWcgPyAoKmNvbmZpZykgOiBJbnRlcm5hbERhdGFDaGFubmVsSW5pdCgpOwotICBpZiAo
ZGF0YV9jaGFubmVsX3R5cGUoKSA9PSBjcmlja2V0OjpEQ1RfU0NUUCkgeworICBpZiAoRGF0YUNo
YW5uZWw6OklzU2N0cExpa2UoZGF0YV9jaGFubmVsX3R5cGVfKSkgewogICAgIGlmIChuZXdfY29u
ZmlnLmlkIDwgMCkgewogICAgICAgcnRjOjpTU0xSb2xlIHJvbGU7CiAgICAgICBpZiAoKEdldFNj
dHBTc2xSb2xlKCZyb2xlKSkgJiYKQEAgLTQ0NjIsNyArNDY1NCw3IEBAIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxEYXRhQ2hhbm5lbD4gUGVlckNvbm5lY3Rpb246OkludGVybmFsQ3JlYXRlRGF0YUNoYW5u
ZWwoCiAgICAgfQogICAgIHJ0cF9kYXRhX2NoYW5uZWxzX1tjaGFubmVsLT5sYWJlbCgpXSA9IGNo
YW5uZWw7CiAgIH0gZWxzZSB7Ci0gICAgUlRDX0RDSEVDSyhjaGFubmVsLT5kYXRhX2NoYW5uZWxf
dHlwZSgpID09IGNyaWNrZXQ6OkRDVF9TQ1RQKTsKKyAgICBSVENfRENIRUNLKERhdGFDaGFubmVs
OjpJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpOwogICAgIHNjdHBfZGF0YV9jaGFubmVs
c18ucHVzaF9iYWNrKGNoYW5uZWwpOwogICAgIGNoYW5uZWwtPlNpZ25hbENsb3NlZC5jb25uZWN0
KHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlBlZXJDb25uZWN0aW9u
OjpPblNjdHBEYXRhQ2hhbm5lbENsb3NlZCk7CkBAIC00NTQyLDYgKzQ3MzQsMjcgQEAgdm9pZCBQ
ZWVyQ29ubmVjdGlvbjo6T25EYXRhQ2hhbm5lbE9wZW5NZXNzYWdlKAogICBOb3RlVXNhZ2VFdmVu
dChVc2FnZUV2ZW50OjpEQVRBX0FEREVEKTsKIH0KIAorYm9vbCBQZWVyQ29ubmVjdGlvbjo6SGFu
ZGxlT3Blbk1lc3NhZ2VfcygKKyAgICBjb25zdCBjcmlja2V0OjpSZWNlaXZlRGF0YVBhcmFtcyYg
cGFyYW1zLAorICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIGJ1ZmZlcikgeworICBp
ZiAocGFyYW1zLnR5cGUgPT0gY3JpY2tldDo6RE1UX0NPTlRST0wgJiYgSXNPcGVuTWVzc2FnZShi
dWZmZXIpKSB7CisgICAgLy8gUmVjZWl2ZWQgT1BFTiBtZXNzYWdlOyBwYXJzZSBhbmQgc2lnbmFs
IHRoYXQgYSBuZXcgZGF0YSBjaGFubmVsIHNob3VsZAorICAgIC8vIGJlIGNyZWF0ZWQuCisgICAg
c3RkOjpzdHJpbmcgbGFiZWw7CisgICAgSW50ZXJuYWxEYXRhQ2hhbm5lbEluaXQgY29uZmlnOwor
ICAgIGNvbmZpZy5pZCA9IHBhcmFtcy5zc3JjOworICAgIGlmICghUGFyc2VEYXRhQ2hhbm5lbE9w
ZW5NZXNzYWdlKGJ1ZmZlciwgJmxhYmVsLCAmY29uZmlnKSkgeworICAgICAgUlRDX0xPRyhMU19X
QVJOSU5HKSA8PCAiRmFpbGVkIHRvIHBhcnNlIHRoZSBPUEVOIG1lc3NhZ2UgZm9yIHNzcmMgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBwYXJhbXMuc3NyYzsKKyAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICBjb25maWcub3Blbl9oYW5kc2hha2Vfcm9sZSA9IEludGVybmFsRGF0
YUNoYW5uZWxJbml0OjprQWNrZXI7CisgICAgT25EYXRhQ2hhbm5lbE9wZW5NZXNzYWdlKGxhYmVs
LCBjb25maWcpOworICAgIHJldHVybiB0cnVlOworICB9CisgIHJldHVybiBmYWxzZTsKK30KKwog
cnRjOjpzY29wZWRfcmVmcHRyPFJ0cFRyYW5zY2VpdmVyUHJveHlXaXRoSW50ZXJuYWw8UnRwVHJh
bnNjZWl2ZXI+PgogUGVlckNvbm5lY3Rpb246OkdldEF1ZGlvVHJhbnNjZWl2ZXIoKSBjb25zdCB7
CiAgIC8vIFRoaXMgbWV0aG9kIG9ubHkgd29ya3Mgd2l0aCBQbGFuIEIgU0RQLCB3aGVyZSB0aGVy
ZSBpcyBhIHNpbmdsZQpAQCAtNDc2OSwxMCArNDk4MiwxMCBAQCB2b2lkIFBlZXJDb25uZWN0aW9u
OjpTdG9wUnRjRXZlbnRMb2dfdygpIHsKICAgfQogfQogCi1jcmlja2V0OjpCYXNlQ2hhbm5lbCog
UGVlckNvbm5lY3Rpb246OkdldENoYW5uZWwoCitjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBQ
ZWVyQ29ubmVjdGlvbjo6R2V0Q2hhbm5lbCgKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVu
dF9uYW1lKSB7CiAgIGZvciAoYXV0byB0cmFuc2NlaXZlciA6IHRyYW5zY2VpdmVyc18pIHsKLSAg
ICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgp
LT5jaGFubmVsKCk7CisgICAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbCA9IHRy
YW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCk7CiAgICAgaWYgKGNoYW5uZWwgJiYgY2hh
bm5lbC0+Y29udGVudF9uYW1lKCkgPT0gY29udGVudF9uYW1lKSB7CiAgICAgICByZXR1cm4gY2hh
bm5lbDsKICAgICB9CkBAIC00Nzg1LDE5ICs0OTk4LDI1IEBAIGNyaWNrZXQ6OkJhc2VDaGFubmVs
KiBQZWVyQ29ubmVjdGlvbjo6R2V0Q2hhbm5lbCgKIH0KIAogYm9vbCBQZWVyQ29ubmVjdGlvbjo6
R2V0U2N0cFNzbFJvbGUocnRjOjpTU0xSb2xlKiByb2xlKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09O
KHNpZ25hbGluZ190aHJlYWQoKSk7CiAgIGlmICghbG9jYWxfZGVzY3JpcHRpb24oKSB8fCAhcmVt
b3RlX2Rlc2NyaXB0aW9uKCkpIHsKICAgICBSVENfTE9HKExTX0lORk8pCiAgICAgICAgIDw8ICJM
b2NhbCBhbmQgUmVtb3RlIGRlc2NyaXB0aW9ucyBtdXN0IGJlIGFwcGxpZWQgdG8gZ2V0IHRoZSAi
CiAgICAgICAgICAgICJTU0wgUm9sZSBvZiB0aGUgU0NUUCB0cmFuc3BvcnQuIjsKICAgICByZXR1
cm4gZmFsc2U7CiAgIH0KLSAgaWYgKCFzY3RwX3RyYW5zcG9ydF8pIHsKKyAgaWYgKCFzY3RwX3Ry
YW5zcG9ydF8gJiYgIW1lZGlhX3RyYW5zcG9ydF8pIHsKICAgICBSVENfTE9HKExTX0lORk8pIDw8
ICJOb24tcmVqZWN0ZWQgU0NUUCBtPSBzZWN0aW9uIGlzIG5lZWRlZCB0byBnZXQgdGhlICIKICAg
ICAgICAgICAgICAgICAgICAgICAgICJTU0wgUm9sZSBvZiB0aGUgU0NUUCB0cmFuc3BvcnQuIjsK
ICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAotICBhdXRvIGR0bHNfcm9sZSA9IHRyYW5zcG9ydF9j
b250cm9sbGVyXy0+R2V0RHRsc1JvbGUoKnNjdHBfbWlkXyk7CisgIGFic2w6Om9wdGlvbmFsPHJ0
Yzo6U1NMUm9sZT4gZHRsc19yb2xlOworICBpZiAoc2N0cF9taWRfKSB7CisgICAgZHRsc19yb2xl
ID0gdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXREdGxzUm9sZSgqc2N0cF9taWRfKTsKKyAgfSBl
bHNlIGlmIChpc19jYWxsZXJfKSB7CisgICAgZHRsc19yb2xlID0gKmlzX2NhbGxlcl8gPyBydGM6
OlNTTF9TRVJWRVIgOiBydGM6OlNTTF9DTElFTlQ7CisgIH0KICAgaWYgKGR0bHNfcm9sZSkgewog
ICAgICpyb2xlID0gKmR0bHNfcm9sZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ4ODMsNyArNTEw
Miw3IEBAIFJUQ0Vycm9yIFBlZXJDb25uZWN0aW9uOjpQdXNoZG93bk1lZGlhRGVzY3JpcHRpb24o
CiAgIGZvciAoYXV0byB0cmFuc2NlaXZlciA6IHRyYW5zY2VpdmVyc18pIHsKICAgICBjb25zdCBD
b250ZW50SW5mbyogY29udGVudF9pbmZvID0KICAgICAgICAgRmluZE1lZGlhU2VjdGlvbkZvclRy
YW5zY2VpdmVyKHRyYW5zY2VpdmVyLCBzZGVzYyk7Ci0gICAgY3JpY2tldDo6QmFzZUNoYW5uZWwq
IGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOworICAgIGNyaWNr
ZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+
Y2hhbm5lbCgpOwogICAgIGlmICghY2hhbm5lbCB8fCAhY29udGVudF9pbmZvIHx8IGNvbnRlbnRf
aW5mby0+cmVqZWN0ZWQpIHsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KQEAgLTUwNDMsMTEgKzUy
NjIsMjIgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbjo6R2V0UmVtb3RlVHJhY2tJZEJ5U3NyYyh1aW50
MzJfdCBzc3JjLAogYm9vbCBQZWVyQ29ubmVjdGlvbjo6U2VuZERhdGEoY29uc3QgY3JpY2tldDo6
U2VuZERhdGFQYXJhbXMmIHBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIHBheWxvYWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmlja2V0OjpTZW5kRGF0YVJlc3VsdCogcmVzdWx0KSB7Ci0gIGlmICghcnRw
X2RhdGFfY2hhbm5lbF8gJiYgIXNjdHBfdHJhbnNwb3J0XykgewotICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJTZW5kRGF0YSBjYWxsZWQgd2hlbiBydHBfZGF0YV9jaGFubmVsXyAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgImFuZCBzY3RwX3RyYW5zcG9ydF8gYXJlIE5VTEwuIjsKKyAgaWYg
KCFydHBfZGF0YV9jaGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRfICYmICFtZWRpYV90cmFuc3Bv
cnRfKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlNlbmREYXRhIGNhbGxlZCB3aGVuIHJ0
cF9kYXRhX2NoYW5uZWxfLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInNjdHBfdHJhbnNw
b3J0XywgYW5kIG1lZGlhX3RyYW5zcG9ydF8gYXJlIE5VTEwuIjsKICAgICByZXR1cm4gZmFsc2U7
CiAgIH0KKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBTZW5kRGF0YVBhcmFtcyBzZW5k
X3BhcmFtczsKKyAgICBzZW5kX3BhcmFtcy50eXBlID0gVG9XZWJydGNEYXRhTWVzc2FnZVR5cGUo
cGFyYW1zLnR5cGUpOworICAgIHNlbmRfcGFyYW1zLm9yZGVyZWQgPSBwYXJhbXMub3JkZXJlZDsK
KyAgICBpZiAocGFyYW1zLm1heF9ydHhfY291bnQgPj0gMCkgeworICAgICAgc2VuZF9wYXJhbXMu
bWF4X3J0eF9jb3VudCA9IHBhcmFtcy5tYXhfcnR4X2NvdW50OworICAgIH0gZWxzZSBpZiAocGFy
YW1zLm1heF9ydHhfbXMgPj0gMCkgeworICAgICAgc2VuZF9wYXJhbXMubWF4X3J0eF9tcyA9IHBh
cmFtcy5tYXhfcnR4X21zOworICAgIH0KKyAgICByZXR1cm4gbWVkaWFfdHJhbnNwb3J0Xy0+U2Vu
ZERhdGEocGFyYW1zLnNpZCwgc2VuZF9wYXJhbXMsIHBheWxvYWQpLm9rKCk7CisgIH0KICAgcmV0
dXJuIHJ0cF9kYXRhX2NoYW5uZWxfCiAgICAgICAgICAgICAgPyBydHBfZGF0YV9jaGFubmVsXy0+
U2VuZERhdGEocGFyYW1zLCBwYXlsb2FkLCByZXN1bHQpCiAgICAgICAgICAgICAgOiBuZXR3b3Jr
X3RocmVhZCgpLT5JbnZva2U8Ym9vbD4oCkBAIC01MDU3LDEzICs1Mjg3LDIzIEBAIGJvb2wgUGVl
ckNvbm5lY3Rpb246OlNlbmREYXRhKGNvbnN0IGNyaWNrZXQ6OlNlbmREYXRhUGFyYW1zJiBwYXJh
bXMsCiB9CiAKIGJvb2wgUGVlckNvbm5lY3Rpb246OkNvbm5lY3REYXRhQ2hhbm5lbChEYXRhQ2hh
bm5lbCogd2VicnRjX2RhdGFfY2hhbm5lbCkgewotICBpZiAoIXJ0cF9kYXRhX2NoYW5uZWxfICYm
ICFzY3RwX3RyYW5zcG9ydF8pIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVh
ZCgpKTsKKyAgaWYgKCFydHBfZGF0YV9jaGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRfICYmICFt
ZWRpYV90cmFuc3BvcnRfKSB7CiAgICAgLy8gRG9uJ3QgbG9nIGFuIGVycm9yIGhlcmUsIGJlY2F1
c2UgRGF0YUNoYW5uZWxzIGFyZSBleHBlY3RlZCB0byBjYWxsCiAgICAgLy8gQ29ubmVjdERhdGFD
aGFubmVsIGluIHRoaXMgc3RhdGUuIEl0J3MgdGhlIG9ubHkgd2F5IHRvIGluaXRpYWxseSB0ZWxs
CiAgICAgLy8gd2hldGhlciBvciBub3QgdGhlIHVuZGVybHlpbmcgdHJhbnNwb3J0IGlzIHJlYWR5
LgogICAgIHJldHVybiBmYWxzZTsKICAgfQotICBpZiAocnRwX2RhdGFfY2hhbm5lbF8pIHsKKyAg
aWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBTaWduYWxNZWRpYVRyYW5zcG9ydFdyaXRhYmxl
X3MuY29ubmVjdCh3ZWJydGNfZGF0YV9jaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZEYXRhQ2hhbm5lbDo6T25DaGFubmVsUmVhZHkpOworICAgIFNp
Z25hbE1lZGlhVHJhbnNwb3J0UmVjZWl2ZWREYXRhX3MuY29ubmVjdCh3ZWJydGNfZGF0YV9jaGFu
bmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRGF0
YUNoYW5uZWw6Ok9uRGF0YVJlY2VpdmVkKTsKKyAgICBTaWduYWxNZWRpYVRyYW5zcG9ydENoYW5u
ZWxDbG9zaW5nX3MuY29ubmVjdCgKKyAgICAgICAgd2VicnRjX2RhdGFfY2hhbm5lbCwgJkRhdGFD
aGFubmVsOjpPbkNsb3NpbmdQcm9jZWR1cmVTdGFydGVkUmVtb3RlbHkpOworICAgIFNpZ25hbE1l
ZGlhVHJhbnNwb3J0Q2hhbm5lbENsb3NlZF9zLmNvbm5lY3QoCisgICAgICAgIHdlYnJ0Y19kYXRh
X2NoYW5uZWwsICZEYXRhQ2hhbm5lbDo6T25DbG9zaW5nUHJvY2VkdXJlQ29tcGxldGUpOworICB9
IGVsc2UgaWYgKHJ0cF9kYXRhX2NoYW5uZWxfKSB7CiAgICAgcnRwX2RhdGFfY2hhbm5lbF8tPlNp
Z25hbFJlYWR5VG9TZW5kRGF0YS5jb25uZWN0KAogICAgICAgICB3ZWJydGNfZGF0YV9jaGFubmVs
LCAmRGF0YUNoYW5uZWw6Ok9uQ2hhbm5lbFJlYWR5KTsKICAgICBydHBfZGF0YV9jaGFubmVsXy0+
U2lnbmFsRGF0YVJlY2VpdmVkLmNvbm5lY3Qod2VicnRjX2RhdGFfY2hhbm5lbCwKQEAgLTUwODIs
MTMgKzUzMjIsMTkgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbjo6Q29ubmVjdERhdGFDaGFubmVsKERh
dGFDaGFubmVsKiB3ZWJydGNfZGF0YV9jaGFubmVsKSB7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rp
b246OkRpc2Nvbm5lY3REYXRhQ2hhbm5lbChEYXRhQ2hhbm5lbCogd2VicnRjX2RhdGFfY2hhbm5l
bCkgewotICBpZiAoIXJ0cF9kYXRhX2NoYW5uZWxfICYmICFzY3RwX3RyYW5zcG9ydF8pIHsKKyAg
UlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZCgpKTsKKyAgaWYgKCFydHBfZGF0YV9j
aGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRfICYmICFtZWRpYV90cmFuc3BvcnRfKSB7CiAgICAg
UlRDX0xPRyhMU19FUlJPUikKICAgICAgICAgPDwgIkRpc2Nvbm5lY3REYXRhQ2hhbm5lbCBjYWxs
ZWQgd2hlbiBydHBfZGF0YV9jaGFubmVsXyBhbmQgIgogICAgICAgICAgICAic2N0cF90cmFuc3Bv
cnRfIGFyZSBOVUxMLiI7CiAgICAgcmV0dXJuOwogICB9Ci0gIGlmIChydHBfZGF0YV9jaGFubmVs
XykgeworICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIFNpZ25hbE1lZGlhVHJhbnNwb3J0
V3JpdGFibGVfcy5kaXNjb25uZWN0KHdlYnJ0Y19kYXRhX2NoYW5uZWwpOworICAgIFNpZ25hbE1l
ZGlhVHJhbnNwb3J0UmVjZWl2ZWREYXRhX3MuZGlzY29ubmVjdCh3ZWJydGNfZGF0YV9jaGFubmVs
KTsKKyAgICBTaWduYWxNZWRpYVRyYW5zcG9ydENoYW5uZWxDbG9zaW5nX3MuZGlzY29ubmVjdCh3
ZWJydGNfZGF0YV9jaGFubmVsKTsKKyAgICBTaWduYWxNZWRpYVRyYW5zcG9ydENoYW5uZWxDbG9z
ZWRfcy5kaXNjb25uZWN0KHdlYnJ0Y19kYXRhX2NoYW5uZWwpOworICB9IGVsc2UgaWYgKHJ0cF9k
YXRhX2NoYW5uZWxfKSB7CiAgICAgcnRwX2RhdGFfY2hhbm5lbF8tPlNpZ25hbFJlYWR5VG9TZW5k
RGF0YS5kaXNjb25uZWN0KHdlYnJ0Y19kYXRhX2NoYW5uZWwpOwogICAgIHJ0cF9kYXRhX2NoYW5u
ZWxfLT5TaWduYWxEYXRhUmVjZWl2ZWQuZGlzY29ubmVjdCh3ZWJydGNfZGF0YV9jaGFubmVsKTsK
ICAgfSBlbHNlIHsKQEAgLTUxMDAsNiArNTM0NiwxMCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpE
aXNjb25uZWN0RGF0YUNoYW5uZWwoRGF0YUNoYW5uZWwqIHdlYnJ0Y19kYXRhX2NoYW5uZWwpIHsK
IH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbjo6QWRkU2N0cERhdGFTdHJlYW0oaW50IHNpZCkgewor
ICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIC8vIE5vLW9wLiAgTWVkaWEgdHJhbnNwb3J0
IGRvZXMgbm90IG5lZWQgdG8gYWRkIHN0cmVhbXMuCisgICAgcmV0dXJuOworICB9CiAgIGlmICgh
c2N0cF90cmFuc3BvcnRfKSB7CiAgICAgUlRDX0xPRyhMU19FUlJPUikKICAgICAgICAgPDwgIkFk
ZFNjdHBEYXRhU3RyZWFtIGNhbGxlZCB3aGVuIHNjdHBfdHJhbnNwb3J0XyBpcyBOVUxMLiI7CkBA
IC01MTExLDYgKzUzNjEsMTAgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6QWRkU2N0cERhdGFTdHJl
YW0oaW50IHNpZCkgewogfQogCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpSZW1vdmVTY3RwRGF0YVN0
cmVhbShpbnQgc2lkKSB7CisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgbWVkaWFfdHJh
bnNwb3J0Xy0+Q2xvc2VDaGFubmVsKHNpZCk7CisgICAgcmV0dXJuOworICB9CiAgIGlmICghc2N0
cF90cmFuc3BvcnRfKSB7CiAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlJlbW92ZVNjdHBEYXRh
U3RyZWFtIGNhbGxlZCB3aGVuIHNjdHBfdHJhbnNwb3J0XyBpcyAiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIk5VTEwuIjsKQEAgLTUxMjIsMTAgKzUzNzYsNDMgQEAgdm9pZCBQZWVyQ29ubmVj
dGlvbjo6UmVtb3ZlU2N0cERhdGFTdHJlYW0oaW50IHNpZCkgewogfQogCiBib29sIFBlZXJDb25u
ZWN0aW9uOjpSZWFkeVRvU2VuZERhdGEoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKHNp
Z25hbGluZ190aHJlYWQoKSk7CiAgIHJldHVybiAocnRwX2RhdGFfY2hhbm5lbF8gJiYgcnRwX2Rh
dGFfY2hhbm5lbF8tPnJlYWR5X3RvX3NlbmRfZGF0YSgpKSB8fAorICAgICAgICAgKG1lZGlhX3Ry
YW5zcG9ydF8gJiYgbWVkaWFfdHJhbnNwb3J0X3JlYWR5X3RvX3NlbmRfZGF0YV8pIHx8CiAgICAg
ICAgICBzY3RwX3JlYWR5X3RvX3NlbmRfZGF0YV87CiB9CiAKK3ZvaWQgUGVlckNvbm5lY3Rpb246
Ok9uRGF0YVJlY2VpdmVkKGludCBjaGFubmVsX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGF0YU1lc3NhZ2VUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIpIHsKKyAg
Y3JpY2tldDo6UmVjZWl2ZURhdGFQYXJhbXMgcGFyYW1zOworICBwYXJhbXMuc2lkID0gY2hhbm5l
bF9pZDsKKyAgcGFyYW1zLnR5cGUgPSBUb0NyaWNrZXREYXRhTWVzc2FnZVR5cGUodHlwZSk7Cisg
IG1lZGlhX3RyYW5zcG9ydF9pbnZva2VyXy0+QXN5bmNJbnZva2U8dm9pZD4oCisgICAgICBSVENf
RlJPTV9IRVJFLCBzaWduYWxpbmdfdGhyZWFkKCksIFt0aGlzLCBwYXJhbXMsIGJ1ZmZlcl0gewor
ICAgICAgICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkKCkpOworICAgICAgICBp
ZiAoIUhhbmRsZU9wZW5NZXNzYWdlX3MocGFyYW1zLCBidWZmZXIpKSB7CisgICAgICAgICAgU2ln
bmFsTWVkaWFUcmFuc3BvcnRSZWNlaXZlZERhdGFfcyhwYXJhbXMsIGJ1ZmZlcik7CisgICAgICAg
IH0KKyAgICAgIH0pOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpPbkNoYW5uZWxDbG9zaW5n
KGludCBjaGFubmVsX2lkKSB7CisgIG1lZGlhX3RyYW5zcG9ydF9pbnZva2VyXy0+QXN5bmNJbnZv
a2U8dm9pZD4oCisgICAgICBSVENfRlJPTV9IRVJFLCBzaWduYWxpbmdfdGhyZWFkKCksIFt0aGlz
LCBjaGFubmVsX2lkXSB7CisgICAgICAgIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJl
YWQoKSk7CisgICAgICAgIFNpZ25hbE1lZGlhVHJhbnNwb3J0Q2hhbm5lbENsb3NpbmdfcyhjaGFu
bmVsX2lkKTsKKyAgICAgIH0pOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpPbkNoYW5uZWxD
bG9zZWQoaW50IGNoYW5uZWxfaWQpIHsKKyAgbWVkaWFfdHJhbnNwb3J0X2ludm9rZXJfLT5Bc3lu
Y0ludm9rZTx2b2lkPigKKyAgICAgIFJUQ19GUk9NX0hFUkUsIHNpZ25hbGluZ190aHJlYWQoKSwg
W3RoaXMsIGNoYW5uZWxfaWRdIHsKKyAgICAgICAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5n
X3RocmVhZCgpKTsKKyAgICAgICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRDaGFubmVsQ2xvc2VkX3Mo
Y2hhbm5lbF9pZCk7CisgICAgICB9KTsKK30KKwogYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+
IFBlZXJDb25uZWN0aW9uOjpzY3RwX3RyYW5zcG9ydF9uYW1lKCkgY29uc3QgewogICBpZiAoc2N0
cF9taWRfICYmIHRyYW5zcG9ydF9jb250cm9sbGVyXykgewogICAgIGF1dG8gZHRsc190cmFuc3Bv
cnQgPSB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0bHNUcmFuc3BvcnQoKnNjdHBfbWlkXyk7
CkBAIC01MTUwLDcgKzU0MzcsNyBAQCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+
IFBlZXJDb25uZWN0aW9uOjpHZXRUcmFuc3BvcnROYW1lc0J5TWlkKCkKICAgICBjb25zdCB7CiAg
IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gdHJhbnNwb3J0X25hbWVzX2J5X21p
ZDsKICAgZm9yIChhdXRvIHRyYW5zY2VpdmVyIDogdHJhbnNjZWl2ZXJzXykgewotICAgIGNyaWNr
ZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNoYW5u
ZWwoKTsKKyAgICBjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBjaGFubmVsID0gdHJhbnNjZWl2
ZXItPmludGVybmFsKCktPmNoYW5uZWwoKTsKICAgICBpZiAoY2hhbm5lbCkgewogICAgICAgdHJh
bnNwb3J0X25hbWVzX2J5X21pZFtjaGFubmVsLT5jb250ZW50X25hbWUoKV0gPQogICAgICAgICAg
IGNoYW5uZWwtPnRyYW5zcG9ydF9uYW1lKCk7CkBAIC01MzI3LDcgKzU2MTQsNyBAQCB2b2lkIFBl
ZXJDb25uZWN0aW9uOjpPblRyYW5zcG9ydENvbnRyb2xsZXJEdGxzSGFuZHNoYWtlRXJyb3IoCiAK
IHZvaWQgUGVlckNvbm5lY3Rpb246OkVuYWJsZVNlbmRpbmcoKSB7CiAgIGZvciAoYXV0byB0cmFu
c2NlaXZlciA6IHRyYW5zY2VpdmVyc18pIHsKLSAgICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hh
bm5lbCA9IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCk7CisgICAgY3JpY2tldDo6
Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbCA9IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFu
bmVsKCk7CiAgICAgaWYgKGNoYW5uZWwgJiYgIWNoYW5uZWwtPmVuYWJsZWQoKSkgewogICAgICAg
Y2hhbm5lbC0+RW5hYmxlKHRydWUpOwogICAgIH0KQEAgLTU0ODYsNyArNTc3Myw3IEBAIFJUQ0Vy
cm9yIFBlZXJDb25uZWN0aW9uOjpDcmVhdGVDaGFubmVscyhjb25zdCBTZXNzaW9uRGVzY3JpcHRp
b24mIGRlc2MpIHsKIAogICBjb25zdCBjcmlja2V0OjpDb250ZW50SW5mbyogZGF0YSA9IGNyaWNr
ZXQ6OkdldEZpcnN0RGF0YUNvbnRlbnQoJmRlc2MpOwogICBpZiAoZGF0YV9jaGFubmVsX3R5cGVf
ICE9IGNyaWNrZXQ6OkRDVF9OT05FICYmIGRhdGEgJiYgIWRhdGEtPnJlamVjdGVkICYmCi0gICAg
ICAhcnRwX2RhdGFfY2hhbm5lbF8gJiYgIXNjdHBfdHJhbnNwb3J0XykgeworICAgICAgIXJ0cF9k
YXRhX2NoYW5uZWxfICYmICFzY3RwX3RyYW5zcG9ydF8gJiYgIW1lZGlhX3RyYW5zcG9ydF8pIHsK
ICAgICBpZiAoIUNyZWF0ZURhdGFDaGFubmVsKGRhdGEtPm5hbWUpKSB7CiAgICAgICBMT0dfQU5E
X1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgZGF0YSBjaGFubmVsLiIpOwpAQCAtNTQ5
OSwxMyArNTc4NiwxNiBAQCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlQ2hhbm5lbHMo
Y29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjKSB7CiAvLyBUT0RPKHN0ZXZlYW50b24pOiBQ
ZXJoYXBzIHRoaXMgc2hvdWxkIGJlIG1hbmFnZWQgYnkgdGhlIFJ0cFRyYW5zY2VpdmVyLgogY3Jp
Y2tldDo6Vm9pY2VDaGFubmVsKiBQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlVm9pY2VDaGFubmVsKAog
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpIHsKLSAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0
cF90cmFuc3BvcnQgPQotICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRSdHBUcmFuc3Bv
cnQobWlkKTsKLSAgUlRDX0RDSEVDSyhydHBfdHJhbnNwb3J0KTsKKyAgUnRwVHJhbnNwb3J0SW50
ZXJuYWwqIHJ0cF90cmFuc3BvcnQgPSBHZXRSdHBUcmFuc3BvcnQobWlkKTsKKyAgTWVkaWFUcmFu
c3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCA9IG51bGxwdHI7CisgIGlmIChjb25maWd1
cmF0aW9uXy51c2VfbWVkaWFfdHJhbnNwb3J0KSB7CisgICAgbWVkaWFfdHJhbnNwb3J0ID0gR2V0
TWVkaWFUcmFuc3BvcnQobWlkKTsKKyAgfQorCiAgIGNyaWNrZXQ6OlZvaWNlQ2hhbm5lbCogdm9p
Y2VfY2hhbm5lbCA9IGNoYW5uZWxfbWFuYWdlcigpLT5DcmVhdGVWb2ljZUNoYW5uZWwoCi0gICAg
ICBjYWxsXy5nZXQoKSwgY29uZmlndXJhdGlvbl8ubWVkaWFfY29uZmlnLCBydHBfdHJhbnNwb3J0
LAotICAgICAgc2lnbmFsaW5nX3RocmVhZCgpLCBtaWQsIFNydHBSZXF1aXJlZCgpLAotICAgICAg
ZmFjdG9yeV8tPm9wdGlvbnMoKS5jcnlwdG9fb3B0aW9ucywgYXVkaW9fb3B0aW9uc18pOworICAg
ICAgY2FsbF8uZ2V0KCksIGNvbmZpZ3VyYXRpb25fLm1lZGlhX2NvbmZpZywgcnRwX3RyYW5zcG9y
dCwgbWVkaWFfdHJhbnNwb3J0LAorICAgICAgc2lnbmFsaW5nX3RocmVhZCgpLCBtaWQsIFNydHBS
ZXF1aXJlZCgpLCBHZXRDcnlwdG9PcHRpb25zKCksCisgICAgICBhdWRpb19vcHRpb25zXyk7CiAg
IGlmICghdm9pY2VfY2hhbm5lbCkgewogICAgIHJldHVybiBudWxscHRyOwogICB9CkBAIC01NTIx
LDEzICs1ODExLDEzIEBAIGNyaWNrZXQ6OlZvaWNlQ2hhbm5lbCogUGVlckNvbm5lY3Rpb246OkNy
ZWF0ZVZvaWNlQ2hhbm5lbCgKIC8vIFRPRE8oc3RldmVhbnRvbik6IFBlcmhhcHMgdGhpcyBzaG91
bGQgYmUgbWFuYWdlZCBieSB0aGUgUnRwVHJhbnNjZWl2ZXIuCiBjcmlja2V0OjpWaWRlb0NoYW5u
ZWwqIFBlZXJDb25uZWN0aW9uOjpDcmVhdGVWaWRlb0NoYW5uZWwoCiAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIG1pZCkgewotICBSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCA9Ci0g
ICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldFJ0cFRyYW5zcG9ydChtaWQpOwotICBSVENf
RENIRUNLKHJ0cF90cmFuc3BvcnQpOworICBSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5z
cG9ydCA9IEdldFJ0cFRyYW5zcG9ydChtaWQpOworCisgIC8vIFRPRE8oc3VraGFub3YpOiBQcm9w
YWdhdGUgbWVkaWFfdHJhbnNwb3J0IHRvIHZpZGVvIGNoYW5uZWwuCiAgIGNyaWNrZXQ6OlZpZGVv
Q2hhbm5lbCogdmlkZW9fY2hhbm5lbCA9IGNoYW5uZWxfbWFuYWdlcigpLT5DcmVhdGVWaWRlb0No
YW5uZWwoCiAgICAgICBjYWxsXy5nZXQoKSwgY29uZmlndXJhdGlvbl8ubWVkaWFfY29uZmlnLCBy
dHBfdHJhbnNwb3J0LAotICAgICAgc2lnbmFsaW5nX3RocmVhZCgpLCBtaWQsIFNydHBSZXF1aXJl
ZCgpLAotICAgICAgZmFjdG9yeV8tPm9wdGlvbnMoKS5jcnlwdG9fb3B0aW9ucywgdmlkZW9fb3B0
aW9uc18pOworICAgICAgc2lnbmFsaW5nX3RocmVhZCgpLCBtaWQsIFNydHBSZXF1aXJlZCgpLCBH
ZXRDcnlwdG9PcHRpb25zKCksCisgICAgICB2aWRlb19vcHRpb25zXyk7CiAgIGlmICghdmlkZW9f
Y2hhbm5lbCkgewogICAgIHJldHVybiBudWxscHRyOwogICB9CkBAIC01NTQxLDM3ICs1ODMxLDQ5
IEBAIGNyaWNrZXQ6OlZpZGVvQ2hhbm5lbCogUGVlckNvbm5lY3Rpb246OkNyZWF0ZVZpZGVvQ2hh
bm5lbCgKIH0KIAogYm9vbCBQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlRGF0YUNoYW5uZWwoY29uc3Qg
c3RkOjpzdHJpbmcmIG1pZCkgewotICBib29sIHNjdHAgPSAoZGF0YV9jaGFubmVsX3R5cGVfID09
IGNyaWNrZXQ6OkRDVF9TQ1RQKTsKLSAgaWYgKHNjdHApIHsKLSAgICBpZiAoIXNjdHBfZmFjdG9y
eV8pIHsKLSAgICAgIFJUQ19MT0coTFNfRVJST1IpCi0gICAgICAgICAgPDwgIlRyeWluZyB0byBj
cmVhdGUgU0NUUCB0cmFuc3BvcnQsIGJ1dCBkaWRuJ3QgY29tcGlsZSB3aXRoICIKLSAgICAgICAg
ICAgICAiU0NUUCBzdXBwb3J0IChIQVZFX1NDVFApIjsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgaWYgKCFuZXR3b3JrX3RocmVhZCgpLT5JbnZva2U8Ym9vbD4oCi0gICAgICAgICAg
ICBSVENfRlJPTV9IRVJFLAotICAgICAgICAgICAgcnRjOjpCaW5kKCZQZWVyQ29ubmVjdGlvbjo6
Q3JlYXRlU2N0cFRyYW5zcG9ydF9uLCB0aGlzLCBtaWQpKSkgewotICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNoYW5uZWwgOiBzY3RwX2RhdGFfY2hhbm5l
bHNfKSB7Ci0gICAgICBjaGFubmVsLT5PblRyYW5zcG9ydENoYW5uZWxDcmVhdGVkKCk7Ci0gICAg
fQotICB9IGVsc2UgewotICAgIFJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0ID0K
LSAgICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRSdHBUcmFuc3BvcnQobWlkKTsKLSAg
ICBSVENfRENIRUNLKHJ0cF90cmFuc3BvcnQpOwotICAgIHJ0cF9kYXRhX2NoYW5uZWxfID0gY2hh
bm5lbF9tYW5hZ2VyKCktPkNyZWF0ZVJ0cERhdGFDaGFubmVsKAotICAgICAgICBjb25maWd1cmF0
aW9uXy5tZWRpYV9jb25maWcsIHJ0cF90cmFuc3BvcnQsIHNpZ25hbGluZ190aHJlYWQoKSwgbWlk
LAotICAgICAgICBTcnRwUmVxdWlyZWQoKSwgZmFjdG9yeV8tPm9wdGlvbnMoKS5jcnlwdG9fb3B0
aW9ucyk7Ci0gICAgaWYgKCFydHBfZGF0YV9jaGFubmVsXykgeworICBzd2l0Y2ggKGRhdGFfY2hh
bm5lbF90eXBlXykgeworICAgIGNhc2UgY3JpY2tldDo6RENUX01FRElBX1RSQU5TUE9SVDoKKyAg
ICAgIGlmIChuZXR3b3JrX3RocmVhZCgpLT5JbnZva2U8Ym9vbD4oCisgICAgICAgICAgICAgIFJU
Q19GUk9NX0hFUkUsCisgICAgICAgICAgICAgIHJ0Yzo6QmluZCgmUGVlckNvbm5lY3Rpb246OlNl
dHVwTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5lbHNfbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMsIG1pZCkpKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hhbm5lbCA6IHNj
dHBfZGF0YV9jaGFubmVsc18pIHsKKyAgICAgICAgICBjaGFubmVsLT5PblRyYW5zcG9ydENoYW5u
ZWxDcmVhdGVkKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CiAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJ0cF9kYXRhX2NoYW5uZWxfLT5TaWduYWxE
dGxzU3J0cFNldHVwRmFpbHVyZS5jb25uZWN0KAotICAgICAgICB0aGlzLCAmUGVlckNvbm5lY3Rp
b246Ok9uRHRsc1NydHBTZXR1cEZhaWx1cmUpOwotICAgIHJ0cF9kYXRhX2NoYW5uZWxfLT5TaWdu
YWxTZW50UGFja2V0LmNvbm5lY3QoCi0gICAgICAgIHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6T25T
ZW50UGFja2V0X3cpOwotICAgIHJ0cF9kYXRhX2NoYW5uZWxfLT5TZXRSdHBUcmFuc3BvcnQocnRw
X3RyYW5zcG9ydCk7CisgICAgY2FzZSBjcmlja2V0OjpEQ1RfU0NUUDoKKyAgICAgIGlmICghc2N0
cF9mYWN0b3J5XykgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKQorICAgICAgICAgICAgPDwg
IlRyeWluZyB0byBjcmVhdGUgU0NUUCB0cmFuc3BvcnQsIGJ1dCBkaWRuJ3QgY29tcGlsZSB3aXRo
ICIKKyAgICAgICAgICAgICAgICJTQ1RQIHN1cHBvcnQgKEhBVkVfU0NUUCkiOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBpZiAoIW5ldHdvcmtfdGhyZWFkKCktPkludm9r
ZTxib29sPigKKyAgICAgICAgICAgICAgUlRDX0ZST01fSEVSRSwKKyAgICAgICAgICAgICAgcnRj
OjpCaW5kKCZQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlU2N0cFRyYW5zcG9ydF9uLCB0aGlzLCBtaWQp
KSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGNoYW5uZWwgOiBzY3RwX2RhdGFfY2hhbm5lbHNfKSB7CisgICAgICAgIGNoYW5uZWwtPk9u
VHJhbnNwb3J0Q2hhbm5lbENyZWF0ZWQoKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOwor
ICAgIGNhc2UgY3JpY2tldDo6RENUX1JUUDoKKyAgICBkZWZhdWx0OgorICAgICAgUnRwVHJhbnNw
b3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQgPSBHZXRSdHBUcmFuc3BvcnQobWlkKTsKKyAgICAg
IHJ0cF9kYXRhX2NoYW5uZWxfID0gY2hhbm5lbF9tYW5hZ2VyKCktPkNyZWF0ZVJ0cERhdGFDaGFu
bmVsKAorICAgICAgICAgIGNvbmZpZ3VyYXRpb25fLm1lZGlhX2NvbmZpZywgcnRwX3RyYW5zcG9y
dCwgc2lnbmFsaW5nX3RocmVhZCgpLCBtaWQsCisgICAgICAgICAgU3J0cFJlcXVpcmVkKCksIEdl
dENyeXB0b09wdGlvbnMoKSk7CisgICAgICBpZiAoIXJ0cF9kYXRhX2NoYW5uZWxfKSB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHJ0cF9kYXRhX2NoYW5uZWxfLT5TaWdu
YWxEdGxzU3J0cFNldHVwRmFpbHVyZS5jb25uZWN0KAorICAgICAgICAgIHRoaXMsICZQZWVyQ29u
bmVjdGlvbjo6T25EdGxzU3J0cFNldHVwRmFpbHVyZSk7CisgICAgICBydHBfZGF0YV9jaGFubmVs
Xy0+U2lnbmFsU2VudFBhY2tldC5jb25uZWN0KAorICAgICAgICAgIHRoaXMsICZQZWVyQ29ubmVj
dGlvbjo6T25TZW50UGFja2V0X3cpOworICAgICAgcnRwX2RhdGFfY2hhbm5lbF8tPlNldFJ0cFRy
YW5zcG9ydChydHBfdHJhbnNwb3J0KTsKKyAgICAgIHJldHVybiB0cnVlOwogICB9CiAKICAgcmV0
dXJuIHRydWU7CkBAIC01NjYxLDIyICs1OTYzLDggQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6T25T
Y3RwVHJhbnNwb3J0RGF0YVJlY2VpdmVkX24oCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpPblNjdHBU
cmFuc3BvcnREYXRhUmVjZWl2ZWRfcygKICAgICBjb25zdCBjcmlja2V0OjpSZWNlaXZlRGF0YVBh
cmFtcyYgcGFyYW1zLAogICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIHBheWxvYWQp
IHsKLSAgUlRDX0RDSEVDSyhzaWduYWxpbmdfdGhyZWFkKCktPklzQ3VycmVudCgpKTsKLSAgaWYg
KHBhcmFtcy50eXBlID09IGNyaWNrZXQ6OkRNVF9DT05UUk9MICYmIElzT3Blbk1lc3NhZ2UocGF5
bG9hZCkpIHsKLSAgICAvLyBSZWNlaXZlZCBPUEVOIG1lc3NhZ2U7IHBhcnNlIGFuZCBzaWduYWwg
dGhhdCBhIG5ldyBkYXRhIGNoYW5uZWwgc2hvdWxkCi0gICAgLy8gYmUgY3JlYXRlZC4KLSAgICBz
dGQ6OnN0cmluZyBsYWJlbDsKLSAgICBJbnRlcm5hbERhdGFDaGFubmVsSW5pdCBjb25maWc7Ci0g
ICAgY29uZmlnLmlkID0gcGFyYW1zLnNzcmM7Ci0gICAgaWYgKCFQYXJzZURhdGFDaGFubmVsT3Bl
bk1lc3NhZ2UocGF5bG9hZCwgJmxhYmVsLCAmY29uZmlnKSkgewotICAgICAgUlRDX0xPRyhMU19X
QVJOSU5HKSA8PCAiRmFpbGVkIHRvIHBhcnNlIHRoZSBPUEVOIG1lc3NhZ2UgZm9yIHNpZCAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHBhcmFtcy5zc3JjOwotICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjb25maWcub3Blbl9oYW5kc2hha2Vfcm9sZSA9IEludGVybmFsRGF0YUNoYW5u
ZWxJbml0OjprQWNrZXI7Ci0gICAgT25EYXRhQ2hhbm5lbE9wZW5NZXNzYWdlKGxhYmVsLCBjb25m
aWcpOwotICB9IGVsc2UgewotICAgIC8vIE90aGVyd2lzZSBqdXN0IGZvcndhcmQgdGhlIHNpZ25h
bC4KKyAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZCgpKTsKKyAgaWYgKCFIYW5k
bGVPcGVuTWVzc2FnZV9zKHBhcmFtcywgcGF5bG9hZCkpIHsKICAgICBTaWduYWxTY3RwRGF0YVJl
Y2VpdmVkKHBhcmFtcywgcGF5bG9hZCk7CiAgIH0KIH0KQEAgLTU2OTksNiArNTk4Nyw0OSBAQCB2
b2lkIFBlZXJDb25uZWN0aW9uOjpPblNjdHBDbG9zaW5nUHJvY2VkdXJlQ29tcGxldGVfbihpbnQg
c2lkKSB7CiAgICAgICAgICAgICAgICAgJlNpZ25hbFNjdHBDbG9zaW5nUHJvY2VkdXJlQ29tcGxl
dGUsIHNpZCkpOwogfQogCitib29sIFBlZXJDb25uZWN0aW9uOjpTZXR1cE1lZGlhVHJhbnNwb3J0
Rm9yRGF0YUNoYW5uZWxzX24oCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCkgeworICBtZWRp
YV90cmFuc3BvcnRfID0gdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydCht
aWQpOworICBpZiAoIW1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8
PCAiTWVkaWEgdHJhbnNwb3J0IGlzIG5vdCBhdmFpbGFibGUgZm9yIGRhdGEgY2hhbm5lbHMiOwor
ICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIG1lZGlhX3RyYW5zcG9ydF9pbnZva2VyXyA9IGFi
c2w6Om1ha2VfdW5pcXVlPHJ0Yzo6QXN5bmNJbnZva2VyPigpOworICBtZWRpYV90cmFuc3BvcnRf
LT5TZXREYXRhU2luayh0aGlzKTsKKyAgbWVkaWFfdHJhbnNwb3J0X2RhdGFfbWlkXyA9IG1pZDsK
KyAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TaWduYWxNZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdl
ZC5jb25uZWN0KAorICAgICAgdGhpcywgJlBlZXJDb25uZWN0aW9uOjpPbk1lZGlhVHJhbnNwb3J0
U3RhdGVDaGFuZ2VkX24pOworICAvLyBDaGVjayB0aGUgaW5pdGlhbCBzdGF0ZSByaWdodCBhd2F5
LCBpbiBjYXNlIHRyYW5zcG9ydCBpcyBhbHJlYWR5IHdyaXRhYmxlLgorICBPbk1lZGlhVHJhbnNw
b3J0U3RhdGVDaGFuZ2VkX24oKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUGVlckNvbm5l
Y3Rpb246OlRlYXJkb3duTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5lbHNfbigpIHsKKyAgaWYg
KCFtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgcmV0dXJuOworICB9CisgIHRyYW5zcG9ydF9jb250
cm9sbGVyXy0+U2lnbmFsTWVkaWFUcmFuc3BvcnRTdGF0ZUNoYW5nZWQuZGlzY29ubmVjdCh0aGlz
KTsKKyAgbWVkaWFfdHJhbnNwb3J0X2RhdGFfbWlkXy5yZXNldCgpOworICBtZWRpYV90cmFuc3Bv
cnRfLT5TZXREYXRhU2luayhudWxscHRyKTsKKyAgbWVkaWFfdHJhbnNwb3J0X2ludm9rZXJfID0g
bnVsbHB0cjsKKyAgbWVkaWFfdHJhbnNwb3J0XyA9IG51bGxwdHI7Cit9CisKK3ZvaWQgUGVlckNv
bm5lY3Rpb246Ok9uTWVkaWFUcmFuc3BvcnRTdGF0ZUNoYW5nZWRfbigpIHsKKyAgaWYgKCFtZWRp
YV90cmFuc3BvcnRfZGF0YV9taWRfIHx8CisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdl
dE1lZGlhVHJhbnNwb3J0U3RhdGUoCisgICAgICAgICAgKm1lZGlhX3RyYW5zcG9ydF9kYXRhX21p
ZF8pICE9IE1lZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJsZSkgeworICAgIHJldHVybjsKKyAg
fQorICBtZWRpYV90cmFuc3BvcnRfaW52b2tlcl8tPkFzeW5jSW52b2tlPHZvaWQ+KAorICAgICAg
UlRDX0ZST01fSEVSRSwgc2lnbmFsaW5nX3RocmVhZCgpLCBbdGhpc10geworICAgICAgICBSVENf
RENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkKCkpOworICAgICAgICBtZWRpYV90cmFuc3Bv
cnRfcmVhZHlfdG9fc2VuZF9kYXRhXyA9IHRydWU7CisgICAgICAgIFNpZ25hbE1lZGlhVHJhbnNw
b3J0V3JpdGFibGVfcyhtZWRpYV90cmFuc3BvcnRfcmVhZHlfdG9fc2VuZF9kYXRhXyk7CisgICAg
ICB9KTsKK30KKwogLy8gUmV0dXJucyBmYWxzZSBpZiBidW5kbGUgaXMgZW5hYmxlZCBhbmQgcnRj
cF9tdXggaXMgZGlzYWJsZWQuCiBib29sIFBlZXJDb25uZWN0aW9uOjpWYWxpZGF0ZUJ1bmRsZVNl
dHRpbmdzKGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiogZGVzYykgewogICBib29sIGJ1bmRsZV9l
bmFibGVkID0gZGVzYy0+SGFzR3JvdXAoY3JpY2tldDo6R1JPVVBfVFlQRV9CVU5ETEUpOwpAQCAt
NjE2OSw3ICs2NTAwLDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6T25TZW50UGFja2V0X3coY29u
c3QgcnRjOjpTZW50UGFja2V0JiBzZW50X3BhY2tldCkgewogCiBjb25zdCBzdGQ6OnN0cmluZyBQ
ZWVyQ29ubmVjdGlvbjo6R2V0VHJhbnNwb3J0TmFtZSgKICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
Y29udGVudF9uYW1lKSB7Ci0gIGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsID0gR2V0Q2hh
bm5lbChjb250ZW50X25hbWUpOworICBjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBjaGFubmVs
ID0gR2V0Q2hhbm5lbChjb250ZW50X25hbWUpOwogICBpZiAoY2hhbm5lbCkgewogICAgIHJldHVy
biBjaGFubmVsLT50cmFuc3BvcnRfbmFtZSgpOwogICB9CkBAIC02MTg4LDE3ICs2NTE5LDE3IEBA
IHZvaWQgUGVlckNvbm5lY3Rpb246OkRlc3Ryb3lUcmFuc2NlaXZlckNoYW5uZWwoCiAgICAgICAg
IHRyYW5zY2VpdmVyKSB7CiAgIFJUQ19EQ0hFQ0sodHJhbnNjZWl2ZXIpOwogCi0gIGNyaWNrZXQ6
OkJhc2VDaGFubmVsKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNoYW5uZWwo
KTsKKyAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbCA9IHRyYW5zY2VpdmVyLT5p
bnRlcm5hbCgpLT5jaGFubmVsKCk7CiAgIGlmIChjaGFubmVsKSB7CiAgICAgdHJhbnNjZWl2ZXIt
PmludGVybmFsKCktPlNldENoYW5uZWwobnVsbHB0cik7Ci0gICAgRGVzdHJveUJhc2VDaGFubmVs
KGNoYW5uZWwpOworICAgIERlc3Ryb3lDaGFubmVsSW50ZXJmYWNlKGNoYW5uZWwpOwogICB9CiB9
CiAKIHZvaWQgUGVlckNvbm5lY3Rpb246OkRlc3Ryb3lEYXRhQ2hhbm5lbCgpIHsKICAgaWYgKHJ0
cF9kYXRhX2NoYW5uZWxfKSB7CiAgICAgT25EYXRhQ2hhbm5lbERlc3Ryb3llZCgpOwotICAgIERl
c3Ryb3lCYXNlQ2hhbm5lbChydHBfZGF0YV9jaGFubmVsXyk7CisgICAgRGVzdHJveUNoYW5uZWxJ
bnRlcmZhY2UocnRwX2RhdGFfY2hhbm5lbF8pOwogICAgIHJ0cF9kYXRhX2NoYW5uZWxfID0gbnVs
bHB0cjsKICAgfQogCkBAIC02MjEzLDkgKzY1NDQsMTggQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6
RGVzdHJveURhdGFDaGFubmVsKCkgewogICAgIG5ldHdvcmtfdGhyZWFkKCktPkludm9rZTx2b2lk
PihSVENfRlJPTV9IRVJFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhp
c10geyBEZXN0cm95U2N0cFRyYW5zcG9ydF9uKCk7IH0pOwogICB9CisKKyAgaWYgKG1lZGlhX3Ry
YW5zcG9ydF8pIHsKKyAgICBPbkRhdGFDaGFubmVsRGVzdHJveWVkKCk7CisgICAgbmV0d29ya190
aHJlYWQoKS0+SW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIFt0aGlzXSB7CisgICAgICBSVENf
RENIRUNLX1JVTl9PTihuZXR3b3JrX3RocmVhZCgpKTsKKyAgICAgIFRlYXJkb3duTWVkaWFUcmFu
c3BvcnRGb3JEYXRhQ2hhbm5lbHNfbigpOworICAgIH0pOworICB9CiB9CiAKLXZvaWQgUGVlckNv
bm5lY3Rpb246OkRlc3Ryb3lCYXNlQ2hhbm5lbChjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5l
bCkgewordm9pZCBQZWVyQ29ubmVjdGlvbjo6RGVzdHJveUNoYW5uZWxJbnRlcmZhY2UoCisgICAg
Y3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbCkgewogICBSVENfRENIRUNLKGNoYW5u
ZWwpOwogICBzd2l0Y2ggKGNoYW5uZWwtPm1lZGlhX3R5cGUoKSkgewogICAgIGNhc2UgY3JpY2tl
dDo6TUVESUFfVFlQRV9BVURJTzoKQEAgLTYyMzksNyArNjU3OSw4IEBAIHZvaWQgUGVlckNvbm5l
Y3Rpb246OkRlc3Ryb3lCYXNlQ2hhbm5lbChjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCkg
ewogYm9vbCBQZWVyQ29ubmVjdGlvbjo6T25UcmFuc3BvcnRDaGFuZ2VkKAogICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBtaWQsCiAgICAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQs
Ci0gICAgY3JpY2tldDo6RHRsc1RyYW5zcG9ydEludGVybmFsKiBkdGxzX3RyYW5zcG9ydCkgewor
ICAgIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCogZHRsc190cmFuc3BvcnQsCisgICAg
TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCkgewogICBib29sIHJldCA9
IHRydWU7CiAgIGF1dG8gYmFzZV9jaGFubmVsID0gR2V0Q2hhbm5lbChtaWQpOwogICBpZiAoYmFz
ZV9jaGFubmVsKSB7CkBAIC02MjQ4LDYgKzY1ODksOSBAQCBib29sIFBlZXJDb25uZWN0aW9uOjpP
blRyYW5zcG9ydENoYW5nZWQoCiAgIGlmIChzY3RwX3RyYW5zcG9ydF8gJiYgbWlkID09IHNjdHBf
bWlkXykgewogICAgIHNjdHBfdHJhbnNwb3J0Xy0+U2V0RHRsc1RyYW5zcG9ydChkdGxzX3RyYW5z
cG9ydCk7CiAgIH0KKworICBjYWxsXy0+TWVkaWFUcmFuc3BvcnRDaGFuZ2UobWVkaWFfdHJhbnNw
b3J0KTsKKwogICByZXR1cm4gcmV0OwogfQogCkBAIC02MjYxLDYgKzY2MDUsMTQgQEAgUGVlckNv
bm5lY3Rpb25PYnNlcnZlciogUGVlckNvbm5lY3Rpb246Ok9ic2VydmVyKCkgY29uc3QgewogICBy
ZXR1cm4gb2JzZXJ2ZXJfOwogfQogCitDcnlwdG9PcHRpb25zIFBlZXJDb25uZWN0aW9uOjpHZXRD
cnlwdG9PcHRpb25zKCkgeworICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85ODkxKSAtIFJlbW92
ZSBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkNyeXB0b09wdGlvbnMKKyAgLy8gYWZ0ZXIgaXQgaGFz
IGJlZW4gcmVtb3ZlZC4KKyAgcmV0dXJuIGNvbmZpZ3VyYXRpb25fLmNyeXB0b19vcHRpb25zLmhh
c192YWx1ZSgpCisgICAgICAgICAgICAgPyAqY29uZmlndXJhdGlvbl8uY3J5cHRvX29wdGlvbnMK
KyAgICAgICAgICAgICA6IGZhY3RvcnlfLT5vcHRpb25zKCkuY3J5cHRvX29wdGlvbnM7Cit9CisK
IHZvaWQgUGVlckNvbm5lY3Rpb246OkNsZWFyU3RhdHNDYWNoZSgpIHsKICAgaWYgKHN0YXRzX2Nv
bGxlY3Rvcl8pIHsKICAgICBzdGF0c19jb2xsZWN0b3JfLT5DbGVhckNhY2hlZFN0YXRzUmVwb3J0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9wZWVyY29ubmVjdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uaAppbmRleCAzN2M5ZDczYmQ0NmM4ODFjOTFjNWFi
ZGRhMjdhOTdhOGFhZGFjNjc3Li43ZTk3YWZhYjdjNjA1Mzk1ZGIwYzliNDA0NDYzNjgyZTUxNWQz
NzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9wZWVyY29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmgKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNs
dWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL21lZGlhX3Ry
YW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJhcGkvdHVybmN1c3RvbWl6ZXIuaCIKICNpbmNsdWRlICJwYy9pY2Vz
ZXJ2ZXJwYXJzaW5nLmgiCkBAIC01MSw2ICs1Miw3IEBAIGNsYXNzIFJ0Y0V2ZW50TG9nOwogLy8g
LSBHZW5lcmF0aW5nIHN0YXRzLgogY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNv
bm5lY3Rpb25JbnRlcm5hbCwKICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIERhdGFDaGFu
bmVsUHJvdmlkZXJJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBEYXRh
Q2hhbm5lbFNpbmssCiAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBKc2VwVHJhbnNwb3J0
Q29udHJvbGxlcjo6T2JzZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBydGM6
Ok1lc3NhZ2VIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgc2lnc2xvdDo6
aGFzX3Nsb3RzPD4gewpAQCAtMTQ1LDYgKzE0Nyw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uIDog
cHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAgIFNpZ25hbGluZ1N0YXRlIHNpZ25hbGlu
Z19zdGF0ZSgpIG92ZXJyaWRlOwogCiAgIEljZUNvbm5lY3Rpb25TdGF0ZSBpY2VfY29ubmVjdGlv
bl9zdGF0ZSgpIG92ZXJyaWRlOworICBJY2VDb25uZWN0aW9uU3RhdGUgc3RhbmRhcmRpemVkX2lj
ZV9jb25uZWN0aW9uX3N0YXRlKCk7CisgIFBlZXJDb25uZWN0aW9uU3RhdGUgcGVlcl9jb25uZWN0
aW9uX3N0YXRlKCkgb3ZlcnJpZGU7CiAgIEljZUdhdGhlcmluZ1N0YXRlIGljZV9nYXRoZXJpbmdf
c3RhdGUoKSBvdmVycmlkZTsKIAogICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2Uq
IGxvY2FsX2Rlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zNzIsNiArMzc2LDExIEBA
IGNsYXNzIFBlZXJDb25uZWN0aW9uIDogcHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAg
ICAgICAgICAgcmVjZWl2ZXIpOwogCiAgIHZvaWQgU2V0SWNlQ29ubmVjdGlvblN0YXRlKEljZUNv
bm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpOworICB2b2lkIFNldFN0YW5kYXJkaXplZEljZUNvbm5l
Y3Rpb25TdGF0ZSgKKyAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9u
U3RhdGUgbmV3X3N0YXRlKTsKKyAgdm9pZCBTZXRDb25uZWN0aW9uU3RhdGUoCisgICAgICBQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpOworCiAg
IC8vIENhbGxlZCBhbnkgdGltZSB0aGUgSWNlR2F0aGVyaW5nU3RhdGUgY2hhbmdlcwogICB2b2lk
IE9uSWNlR2F0aGVyaW5nQ2hhbmdlKEljZUdhdGhlcmluZ1N0YXRlIG5ld19zdGF0ZSk7CiAgIC8v
IE5ldyBJQ0UgY2FuZGlkYXRlIGhhcyBiZWVuIGdhdGhlcmVkLgpAQCAtNjI0LDYgKzYzMywxMSBA
QCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkludGVybmFsLAog
ICAvLyBDYWxsZWQgd2hlbiBhIHZhbGlkIGRhdGEgY2hhbm5lbCBPUEVOIG1lc3NhZ2UgaXMgcmVj
ZWl2ZWQuCiAgIHZvaWQgT25EYXRhQ2hhbm5lbE9wZW5NZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBsYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxE
YXRhQ2hhbm5lbEluaXQmIGNvbmZpZyk7CisgIC8vIFBhcnNlcyBhbmQgaGFuZGxlcyBvcGVuIG1l
c3NhZ2VzLiAgUmV0dXJucyB0cnVlIGlmIHRoZSBtZXNzYWdlIGlzIGFuIG9wZW4KKyAgLy8gbWVz
c2FnZSwgZmFsc2Ugb3RoZXJ3aXNlLgorICBib29sIEhhbmRsZU9wZW5NZXNzYWdlX3MoY29uc3Qg
Y3JpY2tldDo6UmVjZWl2ZURhdGFQYXJhbXMmIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIGJ1ZmZlcikKKyAgICAgIFJUQ19S
VU5fT04oc2lnbmFsaW5nX3RocmVhZCgpKTsKIAogICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIFBl
ZXJDb25uZWN0aW9uIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIFVuaWZpZWQgUGxhbgogICAvLyBzZW1h
bnRpY3MgZm9yIGNyZWF0aW5nIG9mZmVycy9hbnN3ZXJzIGFuZCBzZXR0aW5nIGxvY2FsL3JlbW90
ZQpAQCAtNzA1LDcgKzcxOSw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uIDogcHVibGljIFBlZXJD
b25uZWN0aW9uSW50ZXJuYWwsCiAgIFNlc3Npb25FcnJvciBzZXNzaW9uX2Vycm9yKCkgY29uc3Qg
eyByZXR1cm4gc2Vzc2lvbl9lcnJvcl87IH0KICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNlc3Npb25f
ZXJyb3JfZGVzYygpIGNvbnN0IHsgcmV0dXJuIHNlc3Npb25fZXJyb3JfZGVzY187IH0KIAotICBj
cmlja2V0OjpCYXNlQ2hhbm5lbCogR2V0Q2hhbm5lbChjb25zdCBzdGQ6OnN0cmluZyYgY29udGVu
dF9uYW1lKTsKKyAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogR2V0Q2hhbm5lbChjb25zdCBz
dGQ6OnN0cmluZyYgY29udGVudF9uYW1lKTsKIAogICAvLyBHZXQgY3VycmVudCBTU0wgcm9sZSB1
c2VkIGJ5IFNDVFAncyB1bmRlcmx5aW5nIHRyYW5zcG9ydC4KICAgYm9vbCBHZXRTY3RwU3NsUm9s
ZShydGM6OlNTTFJvbGUqIHJvbGUpOwpAQCAtNzI1LDYgKzczOSwxMyBAQCBjbGFzcyBQZWVyQ29u
bmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkludGVybmFsLAogCiAgIGNyaWNrZXQ6OkRh
dGFDaGFubmVsVHlwZSBkYXRhX2NoYW5uZWxfdHlwZSgpIGNvbnN0OwogCisgIC8vIEltcGxlbWVu
dHMgRGF0YUNoYW5uZWxTaW5rLgorICB2b2lkIE9uRGF0YVJlY2VpdmVkKGludCBjaGFubmVsX2lk
LAorICAgICAgICAgICAgICAgICAgICAgIERhdGFNZXNzYWdlVHlwZSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIGJ1ZmZlcikgb3ZlcnJp
ZGU7CisgIHZvaWQgT25DaGFubmVsQ2xvc2luZyhpbnQgY2hhbm5lbF9pZCkgb3ZlcnJpZGU7Cisg
IHZvaWQgT25DaGFubmVsQ2xvc2VkKGludCBjaGFubmVsX2lkKSBvdmVycmlkZTsKKwogICAvLyBD
YWxsZWQgd2hlbiBhbiBSVENDZXJ0aWZpY2F0ZSBpcyBnZW5lcmF0ZWQgb3IgcmV0cmlldmVkIGJ5
CiAgIC8vIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnkuIFNob3VsZCBoYXBwZW4gYmVm
b3JlIHNldExvY2FsRGVzY3JpcHRpb24uCiAgIHZvaWQgT25DZXJ0aWZpY2F0ZVJlYWR5KApAQCAt
ODIyLDYgKzg0MywxMSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVj
dGlvbkludGVybmFsLAogICB2b2lkIE9uU2N0cENsb3NpbmdQcm9jZWR1cmVTdGFydGVkUmVtb3Rl
bHlfbihpbnQgc2lkKTsKICAgdm9pZCBPblNjdHBDbG9zaW5nUHJvY2VkdXJlQ29tcGxldGVfbihp
bnQgc2lkKTsKIAorICBib29sIFNldHVwTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5lbHNfbihj
b25zdCBzdGQ6OnN0cmluZyYgbWlkKQorICAgICAgUlRDX1JVTl9PTihuZXR3b3JrX3RocmVhZCgp
KTsKKyAgdm9pZCBPbk1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkX24oKSBSVENfUlVOX09OKG5l
dHdvcmtfdGhyZWFkKCkpOworICB2b2lkIFRlYXJkb3duTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hh
bm5lbHNfbigpIFJUQ19SVU5fT04obmV0d29ya190aHJlYWQoKSk7CisKICAgYm9vbCBWYWxpZGF0
ZUJ1bmRsZVNldHRpbmdzKGNvbnN0IGNyaWNrZXQ6OlNlc3Npb25EZXNjcmlwdGlvbiogZGVzYyk7
CiAgIGJvb2wgSGFzUnRjcE11eEVuYWJsZWQoY29uc3QgY3JpY2tldDo6Q29udGVudEluZm8qIGNv
bnRlbnQpOwogICAvLyBCZWxvdyBtZXRob2RzIGFyZSBoZWxwZXIgbWV0aG9kcyB3aGljaCB2ZXJp
ZmllcyBTRFAuCkBAIC04OTYsOSArOTIyLDkgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJs
aWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKICAgLy8gRGVzdHJveXMgdGhlIFJUUCBkYXRhIGNo
YW5uZWwgYW5kL29yIHRoZSBTQ1RQIGRhdGEgY2hhbm5lbCBhbmQgY2xlYXJzIGl0LgogICB2b2lk
IERlc3Ryb3lEYXRhQ2hhbm5lbCgpOwogCi0gIC8vIERlc3Ryb3lzIHRoZSBnaXZlbiBCYXNlQ2hh
bm5lbC4gVGhlIGNoYW5uZWwgY2Fubm90IGJlIGFjY2Vzc2VkIGFmdGVyIHRoaXMKLSAgLy8gbWV0
aG9kIGlzIGNhbGxlZC4KLSAgdm9pZCBEZXN0cm95QmFzZUNoYW5uZWwoY3JpY2tldDo6QmFzZUNo
YW5uZWwqIGNoYW5uZWwpOworICAvLyBEZXN0cm95cyB0aGUgZ2l2ZW4gQ2hhbm5lbEludGVyZmFj
ZS4KKyAgLy8gVGhlIGNoYW5uZWwgY2Fubm90IGJlIGFjY2Vzc2VkIGFmdGVyIHRoaXMgbWV0aG9k
IGlzIGNhbGxlZC4KKyAgdm9pZCBEZXN0cm95Q2hhbm5lbEludGVyZmFjZShjcmlja2V0OjpDaGFu
bmVsSW50ZXJmYWNlKiBjaGFubmVsKTsKIAogICAvLyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6
T2JzZXJ2ZXIgb3ZlcnJpZGUuCiAgIC8vCkBAIC05MDYsMTQgKzkzMiw0MSBAQCBjbGFzcyBQZWVy
Q29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkludGVybmFsLAogICAvLyBmcm9tIGEg
c2Vzc2lvbiBkZXNjcmlwdGlvbiwgYW5kIHRoZSBtYXBwaW5nIGZyb20gbT0gc2VjdGlvbnMgdG8g
dHJhbnNwb3J0cwogICAvLyBjaGFuZ2VkIChhcyBhIHJlc3VsdCBvZiBCVU5ETEUgbmVnb3RpYXRp
b24sIG9yIG09IHNlY3Rpb25zIGJlaW5nCiAgIC8vIHJlamVjdGVkKS4KLSAgYm9vbCBPblRyYW5z
cG9ydENoYW5nZWQoCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlkLAotICAgICAgUnRwVHJh
bnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQsCi0gICAgICBjcmlja2V0OjpEdGxzVHJhbnNw
b3J0SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0KSBvdmVycmlkZTsKKyAgYm9vbCBPblRyYW5zcG9y
dENoYW5nZWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCogZHRsc190cmFuc3BvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRp
YV90cmFuc3BvcnQpIG92ZXJyaWRlOwogCiAgIC8vIFJldHVybnMgdGhlIG9ic2VydmVyLiBXaWxs
IGNyYXNoIG9uIENIRUNLIGlmIHRoZSBvYnNlcnZlciBpcyByZW1vdmVkLgogICBQZWVyQ29ubmVj
dGlvbk9ic2VydmVyKiBPYnNlcnZlcigpIGNvbnN0OwogCisgIC8vIFJldHVybnMgdGhlIENyeXB0
b09wdGlvbnMgZm9yIHRoaXMgUGVlckNvbm5lY3Rpb24uIFRoaXMgd2lsbCBhbHdheXMKKyAgLy8g
cmV0dXJuIHRoZSBSVENDb25maWd1cmF0aW9uLmNyeXB0b19vcHRpb25zIGlmIHNldCBhbmQgd2ls
bCBvbmx5IGRlZmF1bHQKKyAgLy8gYmFjayB0byB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5IHNl
dHRpbmdzIGlmIG5vdGhpbmcgd2FzIHNldC4KKyAgQ3J5cHRvT3B0aW9ucyBHZXRDcnlwdG9PcHRp
b25zKCk7CisKKyAgLy8gUmV0dXJucyBydHAgdHJhbnNwb3J0LCByZXN1bHQgY2FuIG5vdCBiZSBu
dWxscHRyLgorICBSdHBUcmFuc3BvcnRJbnRlcm5hbCogR2V0UnRwVHJhbnNwb3J0KGNvbnN0IHN0
ZDo6c3RyaW5nJiBtaWQpIHsKKyAgICBhdXRvIHJ0cF90cmFuc3BvcnQgPSB0cmFuc3BvcnRfY29u
dHJvbGxlcl8tPkdldFJ0cFRyYW5zcG9ydChtaWQpOworICAgIFJUQ19EQ0hFQ0socnRwX3RyYW5z
cG9ydCk7CisgICAgcmV0dXJuIHJ0cF90cmFuc3BvcnQ7CisgIH0KKworICAvLyBSZXR1cm5zIG1l
ZGlhIHRyYW5zcG9ydCwgaWYgUGVlckNvbm5lY3Rpb24gd2FzIGNyZWF0ZWQgd2l0aCBjb25maWd1
cmF0aW9uCisgIC8vIHRvIHVzZSBtZWRpYSB0cmFuc3BvcnQuIE90aGVyd2lzZSByZXR1cm5zIG51
bGxwdHIuCisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBHZXRNZWRpYVRyYW5zcG9ydChjb25z
dCBzdGQ6OnN0cmluZyYgbWlkKSB7CisgICAgYXV0byBtZWRpYV90cmFuc3BvcnQgPSB0cmFuc3Bv
cnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KG1pZCk7CisgICAgUlRDX0RDSEVDSygo
Y29uZmlndXJhdGlvbl8udXNlX21lZGlhX3RyYW5zcG9ydCB8fAorICAgICAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb25fLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMpID09Cisg
ICAgICAgICAgICAgICAobWVkaWFfdHJhbnNwb3J0ICE9IG51bGxwdHIpKQorICAgICAgICA8PCAi
Y29uZmlndXJhdGlvbl8udXNlX21lZGlhX3RyYW5zcG9ydD0iCisgICAgICAgIDw8IGNvbmZpZ3Vy
YXRpb25fLnVzZV9tZWRpYV90cmFuc3BvcnQKKyAgICAgICAgPDwgIiwgY29uZmlndXJhdGlvbl8u
dXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscz0iCisgICAgICAgIDw8IGNvbmZp
Z3VyYXRpb25fLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMKKyAgICAgICAg
PDwgIiwgKG1lZGlhX3RyYW5zcG9ydCAhPSBudWxscHRyKT0iIDw8IChtZWRpYV90cmFuc3BvcnQg
IT0gbnVsbHB0cik7CisgICAgcmV0dXJuIG1lZGlhX3RyYW5zcG9ydDsKKyAgfQorCiAgIHNpZ3Ns
b3Q6OnNpZ25hbDE8RGF0YUNoYW5uZWwqPiBTaWduYWxEYXRhQ2hhbm5lbENyZWF0ZWRfOwogCiAg
IC8vIFN0b3JpbmcgdGhlIGZhY3RvcnkgYXMgYSBzY29wZWQgcmVmZXJlbmNlIHBvaW50ZXIgZW5z
dXJlcyB0aGF0IHRoZSBtZW1vcnkKQEAgLTkzMCw2ICs5ODMsMTEgQEAgY2xhc3MgUGVlckNvbm5l
Y3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKIAogICBTaWduYWxpbmdTdGF0
ZSBzaWduYWxpbmdfc3RhdGVfID0ga1N0YWJsZTsKICAgSWNlQ29ubmVjdGlvblN0YXRlIGljZV9j
b25uZWN0aW9uX3N0YXRlXyA9IGtJY2VDb25uZWN0aW9uTmV3OworICBQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlCisgICAgICBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5l
Y3Rpb25fc3RhdGVfID0ga0ljZUNvbm5lY3Rpb25OZXc7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlIGNvbm5lY3Rpb25fc3RhdGVfID0KKyAgICAgIFBlZXJD
b25uZWN0aW9uU3RhdGU6OmtOZXc7CisKICAgSWNlR2F0aGVyaW5nU3RhdGUgaWNlX2dhdGhlcmlu
Z19zdGF0ZV8gPSBrSWNlR2F0aGVyaW5nTmV3OwogICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
UlRDQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uXzsKIApAQCAtMTAxMCw2ICsxMDY4LDMzIEBA
IGNsYXNzIFBlZXJDb25uZWN0aW9uIDogcHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAg
IHNpZ3Nsb3Q6OnNpZ25hbDE8aW50PiBTaWduYWxTY3RwQ2xvc2luZ1Byb2NlZHVyZVN0YXJ0ZWRS
ZW1vdGVseTsKICAgc2lnc2xvdDo6c2lnbmFsMTxpbnQ+IFNpZ25hbFNjdHBDbG9zaW5nUHJvY2Vk
dXJlQ29tcGxldGU7CiAKKyAgLy8gV2hldGhlciB0aGlzIHBlZXIgaXMgdGhlIGNhbGxlci4gU2V0
IHdoZW4gdGhlIGxvY2FsIGRlc2NyaXB0aW9uIGlzIGFwcGxpZWQuCisgIGFic2w6Om9wdGlvbmFs
PGJvb2w+IGlzX2NhbGxlcl8gUlRDX0dVQVJERURfQlkoc2lnbmFsaW5nX3RocmVhZCgpKTsKKwor
ICAvLyBDb250ZW50IG5hbWUgKE1JRCkgZm9yIG1lZGlhIHRyYW5zcG9ydCBkYXRhIGNoYW5uZWxz
IGluIFNEUC4KKyAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IG1lZGlhX3RyYW5zcG9ydF9k
YXRhX21pZF87CisKKyAgLy8gTWVkaWEgdHJhbnNwb3J0IHVzZWQgZm9yIGRhdGEgY2hhbm5lbHMu
ICBUaHJlYWQtc2FmZS4KKyAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9y
dF8gPSBudWxscHRyOworCisgIC8vIENhY2hlZCB2YWx1ZSBvZiB3aGV0aGVyIHRoZSBtZWRpYSB0
cmFuc3BvcnQgaXMgcmVhZHkgdG8gc2VuZC4KKyAgYm9vbCBtZWRpYV90cmFuc3BvcnRfcmVhZHlf
dG9fc2VuZF9kYXRhXyBSVENfR1VBUkRFRF9CWShzaWduYWxpbmdfdGhyZWFkKCkpID0KKyAgICAg
IGZhbHNlOworCisgIC8vIFVzZWQgdG8gaW52b2tlIG1lZGlhIHRyYW5zcG9ydCBzaWduYWxzIG9u
IHRoZSBzaWduYWxpbmcgdGhyZWFkLgorICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY0ludm9r
ZXI+IG1lZGlhX3RyYW5zcG9ydF9pbnZva2VyXzsKKworICAvLyBJZGVudGljYWwgdG8gdGhlIHNp
Z25hbHMgZm9yIFNDVFAsIGJ1dCBmcm9tIG1lZGlhIHRyYW5zcG9ydDoKKyAgc2lnc2xvdDo6c2ln
bmFsMTxib29sPiBTaWduYWxNZWRpYVRyYW5zcG9ydFdyaXRhYmxlX3MKKyAgICAgIFJUQ19HVUFS
REVEX0JZKHNpZ25hbGluZ190aHJlYWQoKSk7CisgIHNpZ3Nsb3Q6OnNpZ25hbDI8Y29uc3QgY3Jp
Y2tldDo6UmVjZWl2ZURhdGFQYXJhbXMmLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
Q29weU9uV3JpdGVCdWZmZXImPgorICAgICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRSZWNlaXZlZERh
dGFfcyBSVENfR1VBUkRFRF9CWShzaWduYWxpbmdfdGhyZWFkKCkpOworICBzaWdzbG90OjpzaWdu
YWwxPGludD4gU2lnbmFsTWVkaWFUcmFuc3BvcnRDaGFubmVsQ2xvc2luZ19zCisgICAgICBSVENf
R1VBUkRFRF9CWShzaWduYWxpbmdfdGhyZWFkKCkpOworICBzaWdzbG90OjpzaWduYWwxPGludD4g
U2lnbmFsTWVkaWFUcmFuc3BvcnRDaGFubmVsQ2xvc2VkX3MKKyAgICAgIFJUQ19HVUFSREVEX0JZ
KHNpZ25hbGluZ190aHJlYWQoKSk7CisKICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlw
dGlvbkludGVyZmFjZT4gY3VycmVudF9sb2NhbF9kZXNjcmlwdGlvbl87CiAgIHN0ZDo6dW5pcXVl
X3B0cjxTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+IHBlbmRpbmdfbG9jYWxfZGVzY3JpcHRp
b25fOwogICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlPiBjdXJy
ZW50X3JlbW90ZV9kZXNjcmlwdGlvbl87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9idW5kbGVfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29u
bmVjdGlvbl9idW5kbGVfdW5pdHRlc3QuY2MKaW5kZXggOTA3NjY5YjVhZDMwYzQ4NjZhZWFhYzgz
YjNjNjI2YjQwNzZmMmM0Mi4uNmMzNzJiNGI4OTgyYjgyODk5MjFjNzVjMDdhMmE2OWJmYTJlNmRm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcGVlcmNvbm5lY3Rpb25fYnVuZGxlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2J1bmRsZV91bml0
dGVzdC5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9i
dWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2Rl
Y3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvY3JlYXRl
X3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25w
cm94eS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVy
X2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9jcnlwdG9fdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9j
cnlwdG9fdW5pdHRlc3QuY2MKaW5kZXggMWNjZmU1NTYwZjA5NTA5ZjUxNDNjNjBjNGY4N2Y0ODRh
NGI1YjAzMy4uNmY3ZTIzYjk0ZjVhZDM1MDUzNGEzZWQ3MTQzMmFkNWVkMWU1Y2VlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNv
bm5lY3Rpb25fY3J5cHRvX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2NyeXB0b191bml0dGVzdC5jYwpA
QCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1
ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRp
bl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvY3JlYXRlX3BlZXJjb25u
ZWN0aW9uX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlk
ZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGlu
X3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInAycC9iYXNlL2Zha2Vwb3J0YWxs
b2NhdG9yLmgiCkBAIC03Niw2ICs3Nyw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uQ3J5cHRvQmFz
ZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAorICAgIG9ic2VydmVyLT5TZXRQZWVyQ29ubmVjdGlvbkludGVyZmFjZShwYy5nZXQo
KSk7CiAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFBlZXJDb25uZWN0aW9uV3JhcHBlcj4o
cGNfZmFjdG9yeV8sIHBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bW92ZShvYnNlcnZlcikpOwogICB9CkBAIC0yNzgsMTMgKzI4MCwz
NSBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25DcnlwdG9UZXN0LCBDb3JyZWN0Q3J5cHRvSW5BbnN3
ZXJXaGVuRW5jcnlwdGlvbkRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuc3dlci0+ZGVzY3JpcHRpb24oKSkpOwogfQogCisvLyBDcnlwdG9PcHRpb25zIGhhcyBiZWVu
IHByb21vdGVkIHRvIFJUQ0NvbmZpZ3VyYXRpb24uIEFzIHN1Y2ggaWYgaXQgaXMgZXZlcgorLy8g
c2V0IGluIHRoZSBjb25maWd1cmF0aW9uIGl0IHNob3VsZCBvdmVycml0ZSB0aGUgc2V0dGluZ3Mg
c2V0IGluIHRoZSBmYWN0b3J5LgorVEVTVF9QKFBlZXJDb25uZWN0aW9uQ3J5cHRvVGVzdCwgUlRD
Q29uZmlndXJhdGlvbkNyeXB0b09wdGlvbk92ZXJyaWRlc0ZhY3RvcnkpIHsKKyAgUGVlckNvbm5l
Y3Rpb25GYWN0b3J5SW50ZXJmYWNlOjpPcHRpb25zIG9wdGlvbnM7CisgIG9wdGlvbnMuY3J5cHRv
X29wdGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSB0cnVlOworICBwY19mYWN0
b3J5Xy0+U2V0T3B0aW9ucyhvcHRpb25zKTsKKworICBSVENDb25maWd1cmF0aW9uIGNvbmZpZzsK
KyAgY29uZmlnLmVuYWJsZV9kdGxzX3NydHAuZW1wbGFjZShmYWxzZSk7CisgIENyeXB0b09wdGlv
bnMgY3J5cHRvX29wdGlvbnM7CisgIGNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlw
dG9fc3VpdGVzID0gZmFsc2U7CisgIGNvbmZpZy5jcnlwdG9fb3B0aW9ucyA9IGNyeXB0b19vcHRp
b25zOworICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlvVmlkZW8o
Y29uZmlnKTsKKworICBhdXRvIG9mZmVyID0gY2FsbGVyLT5DcmVhdGVPZmZlcigpOworICBBU1NF
UlRfVFJVRShvZmZlcik7CisKKyAgQVNTRVJUX0ZBTFNFKG9mZmVyLT5kZXNjcmlwdGlvbigpLT5j
b250ZW50cygpLmVtcHR5KCkpOworICAvLyBUaGlzIHNob3VsZCBleGlzdCBpZiBHQ00gaXMgZW5h
YmxlZCBzZWUgQ29ycmVjdENyeXB0b0luT2ZmZXJXaXRoU2Rlc0FuZEdjbQorICBFWFBFQ1RfRkFM
U0UoU2RwQ29udGVudHNBbGwoSGF2ZVNkZXNHY21DcnlwdG9zKDMpLCBvZmZlci0+ZGVzY3JpcHRp
b24oKSkpOworfQorCiAvLyBXaGVuIERUTFMgaXMgZGlzYWJsZWQgYW5kIEdDTSBjaXBoZXIgc3Vp
dGVzIGFyZSBlbmFibGVkLCB0aGUgU0RQIG9mZmVyL2Fuc3dlcgogLy8gc2hvdWxkIGhhdmUgdGhl
IGNvcnJlY3QgY2lwaGVycyBpbiB0aGUgU0RFUyBjcnlwdG8gb3B0aW9ucy4KIC8vIFdpdGggR0NN
IGNpcGhlciBzdWl0ZXMgZW5hYmxlZCwgdGhlcmUgd2lsbCBiZSAzIGNyeXB0b3MgaW4gdGhlIG9m
ZmVyIGFuZCAxCiAvLyBpbiB0aGUgYW5zd2VyLgogVEVTVF9QKFBlZXJDb25uZWN0aW9uQ3J5cHRv
VGVzdCwgQ29ycmVjdENyeXB0b0luT2ZmZXJXaXRoU2Rlc0FuZEdjbSkgewogICBQZWVyQ29ubmVj
dGlvbkZhY3RvcnlJbnRlcmZhY2U6Ok9wdGlvbnMgb3B0aW9uczsKLSAgb3B0aW9ucy5jcnlwdG9f
b3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSB0cnVlOworICBvcHRpb25zLmNyeXB0
b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKICAgcGNfZmFj
dG9yeV8tPlNldE9wdGlvbnMob3B0aW9ucyk7CiAKICAgUlRDQ29uZmlndXJhdGlvbiBjb25maWc7
CkBAIC0yOTcsOSArMzIxLDEwIEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkNyeXB0b1Rlc3QsIENv
cnJlY3RDcnlwdG9Jbk9mZmVyV2l0aFNkZXNBbmRHY20pIHsKICAgQVNTRVJUX0ZBTFNFKG9mZmVy
LT5kZXNjcmlwdGlvbigpLT5jb250ZW50cygpLmVtcHR5KCkpOwogICBFWFBFQ1RfVFJVRShTZHBD
b250ZW50c0FsbChIYXZlU2Rlc0djbUNyeXB0b3MoMyksIG9mZmVyLT5kZXNjcmlwdGlvbigpKSk7
CiB9CisKIFRFU1RfUChQZWVyQ29ubmVjdGlvbkNyeXB0b1Rlc3QsIENvcnJlY3RDcnlwdG9JbkFu
c3dlcldpdGhTZGVzQW5kR2NtKSB7CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6
T3B0aW9ucyBvcHRpb25zOwotICBvcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5
cHRvX3N1aXRlcyA9IHRydWU7CisgIG9wdGlvbnMuY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVf
Z2NtX2NyeXB0b19zdWl0ZXMgPSB0cnVlOwogICBwY19mYWN0b3J5Xy0+U2V0T3B0aW9ucyhvcHRp
b25zKTsKIAogICBSVENDb25maWd1cmF0aW9uIGNvbmZpZzsKQEAgLTMxNyw3ICszNDIsNyBAQCBU
RVNUX1AoUGVlckNvbm5lY3Rpb25DcnlwdG9UZXN0LCBDb3JyZWN0Q3J5cHRvSW5BbnN3ZXJXaXRo
U2Rlc0FuZEdjbSkgewogCiBURVNUX1AoUGVlckNvbm5lY3Rpb25DcnlwdG9UZXN0LCBDYW5TZXRT
ZGVzR2NtUmVtb3RlT2ZmZXJBbmRMb2NhbEFuc3dlcikgewogICBQZWVyQ29ubmVjdGlvbkZhY3Rv
cnlJbnRlcmZhY2U6Ok9wdGlvbnMgb3B0aW9uczsKLSAgb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5l
bmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSB0cnVlOworICBvcHRpb25zLmNyeXB0b19vcHRpb25z
LnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKICAgcGNfZmFjdG9yeV8tPlNl
dE9wdGlvbnMob3B0aW9ucyk7CiAKICAgUlRDQ29uZmlndXJhdGlvbiBjb25maWc7CkBAIC03MDMs
OCArNzI4LDggQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uQ3J5cHRvVGVzdCwgU2Vzc2lvbkVycm9y
SWZGaW5nZXJwcmludEludmFsaWQpIHsKICAgICAgIGludmFsaWRfYW5zd2VyLT5kZXNjcmlwdGlv
bigpLT5HZXRUcmFuc3BvcnRJbmZvQnlOYW1lKAogICAgICAgICAgIGF1ZGlvX2NvbnRlbnQtPm5h
bWUpOwogICBBU1NFUlRfVFJVRShhdWRpb190cmFuc3BvcnRfaW5mbyk7Ci0gIGF1ZGlvX3RyYW5z
cG9ydF9pbmZvLT5kZXNjcmlwdGlvbi5pZGVudGl0eV9maW5nZXJwcmludC5yZXNldCgKLSAgICAg
IHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZShvdGhlcl9jZXJ0aWZp
Y2F0ZSkpOworICBhdWRpb190cmFuc3BvcnRfaW5mby0+ZGVzY3JpcHRpb24uaWRlbnRpdHlfZmlu
Z2VycHJpbnQgPQorICAgICAgcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmlj
YXRlKCpvdGhlcl9jZXJ0aWZpY2F0ZSk7CiAKICAgLy8gU2V0IHRoZSBpbnZhbGlkIGFuc3dlciBh
bmQgZXhwZWN0IGEgZmluZ2VycHJpbnQgZXJyb3IuCiAgIHN0ZDo6c3RyaW5nIGVycm9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVl
cmNvbm5lY3Rpb25fZGF0YWNoYW5uZWxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9kYXRhY2hhbm5lbF91bml0
dGVzdC5jYwppbmRleCAwMzNhNjA5Zjk4YWRhYjIzOTExMTljZTk2ZGZjNzE1ZWFiNjY1MWUxLi5j
ZmI1ZGRlMjJhZjNjYmUwNDg3ZDQ2ZTljZjljOTMyMzUxYzA0ODc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9k
YXRhY2hhbm5lbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9kYXRhY2hhbm5lbF91bml0dGVzdC5jYwpA
QCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgPHR1cGxlPgogCiAjaW5jbHVkZSAiYXBpL3BlZXJj
b25uZWN0aW9ucHJveHkuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9mYWtlX21lZGlhX3RyYW5zcG9y
dC5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmgiCiAjaW5jbHVkZSAi
cGMvbWVkaWFzZXNzaW9uLmgiCiAjaW5jbHVkZSAicGMvcGVlcmNvbm5lY3Rpb24uaCIKQEAgLTMx
LDE3ICszMiwzOSBAQCB1c2luZyBSVENDb25maWd1cmF0aW9uID0gUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb247CiB1c2luZyBSVENPZmZlckFuc3dlck9wdGlvbnMgPSBQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDT2ZmZXJBbnN3ZXJPcHRpb25zOwogdXNpbmcgOjp0
ZXN0aW5nOjpWYWx1ZXM7CiAKK25hbWVzcGFjZSB7CisKK1BlZXJDb25uZWN0aW9uRmFjdG9yeURl
cGVuZGVuY2llcyBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnlEZXBlbmRlbmNpZXMoCisgICAg
cnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhy
ZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAorICAgIHN0ZDo6dW5pcXVl
X3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5naW5lLAorICAgIHN0
ZDo6dW5pcXVlX3B0cjxDYWxsRmFjdG9yeUludGVyZmFjZT4gY2FsbF9mYWN0b3J5LAorICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IG1lZGlhX3RyYW5zcG9ydF9mYWN0
b3J5KSB7CisgIFBlZXJDb25uZWN0aW9uRmFjdG9yeURlcGVuZGVuY2llcyBkZXBzOworICBkZXBz
Lm5ldHdvcmtfdGhyZWFkID0gbmV0d29ya190aHJlYWQ7CisgIGRlcHMud29ya2VyX3RocmVhZCA9
IHdvcmtlcl90aHJlYWQ7CisgIGRlcHMuc2lnbmFsaW5nX3RocmVhZCA9IHNpZ25hbGluZ190aHJl
YWQ7CisgIGRlcHMubWVkaWFfZW5naW5lID0gc3RkOjptb3ZlKG1lZGlhX2VuZ2luZSk7CisgIGRl
cHMuY2FsbF9mYWN0b3J5ID0gc3RkOjptb3ZlKGNhbGxfZmFjdG9yeSk7CisgIGRlcHMubWVkaWFf
dHJhbnNwb3J0X2ZhY3RvcnkgPSBzdGQ6Om1vdmUobWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpOwor
ICByZXR1cm4gZGVwczsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKIGNsYXNzIFBlZXJDb25uZWN0
aW9uRmFjdG9yeUZvckRhdGFDaGFubmVsVGVzdAogICAgIDogcHVibGljIHJ0Yzo6UmVmQ291bnRl
ZE9iamVjdDxQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHsKICBwdWJsaWM6CiAgIFBlZXJDb25uZWN0
aW9uRmFjdG9yeUZvckRhdGFDaGFubmVsVGVzdCgpCiAgICAgICA6IHJ0Yzo6UmVmQ291bnRlZE9i
amVjdDxQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KAotICAgICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1
cnJlbnQoKSwKLSAgICAgICAgICAgIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksCi0gICAgICAgICAg
ICBydGM6OlRocmVhZDo6Q3VycmVudCgpLAotICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8
Y3JpY2tldDo6RmFrZU1lZGlhRW5naW5lPigpLAotICAgICAgICAgICAgQ3JlYXRlQ2FsbEZhY3Rv
cnkoKSwKLSAgICAgICAgICAgIG51bGxwdHIpIHt9CisgICAgICAgICAgICBDcmVhdGVQZWVyQ29u
bmVjdGlvbkZhY3RvcnlEZXBlbmRlbmNpZXMoCisgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQ6
OkN1cnJlbnQoKSwKKyAgICAgICAgICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLAorICAg
ICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksCisgICAgICAgICAgICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6RmFrZU1lZGlhRW5naW5lPigpLAorICAgICAgICAgICAg
ICAgIENyZWF0ZUNhbGxGYWN0b3J5KCksCisgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlx
dWU8RmFrZU1lZGlhVHJhbnNwb3J0RmFjdG9yeT4oKSkpIHt9CiAKICAgc3RkOjp1bmlxdWVfcHRy
PGNyaWNrZXQ6OlNjdHBUcmFuc3BvcnRJbnRlcm5hbEZhY3Rvcnk+CiAgIENyZWF0ZVNjdHBUcmFu
c3BvcnRJbnRlcm5hbEZhY3RvcnkoKSB7CkBAIC0xMjMsNiArMTQ2LDcgQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb25EYXRhQ2hhbm5lbEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBvYnNlcnZlci0+U2V0UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2UocGMuZ2V0KCkpOwogICAgIGF1dG8gd3JhcHBlciA9IGFic2w6Om1ha2Vf
dW5pcXVlPFBlZXJDb25uZWN0aW9uV3JhcHBlckZvckRhdGFDaGFubmVsVGVzdD4oCiAgICAgICAg
IHBjX2ZhY3RvcnksIHBjLCBzdGQ6Om1vdmUob2JzZXJ2ZXIpKTsKICAgICBSVENfRENIRUNLKHBj
X2ZhY3RvcnktPmxhc3RfZmFrZV9zY3RwX3RyYW5zcG9ydF9mYWN0b3J5Xyk7CkBAIC0zMjMsNiAr
MzQ3LDUyIEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkRhdGFDaGFubmVsVGVzdCwgU2N0cFBvcnRQ
cm9wYWdhdGVkRnJvbVNkcFRvVHJhbnNwb3J0KSB7CiAgIEVYUEVDVF9FUShrTmV3UmVjdlBvcnQs
IGNhbGxlZV90cmFuc3BvcnQtPmxvY2FsX3BvcnQoKSk7CiB9CiAKK1RFU1RfUChQZWVyQ29ubmVj
dGlvbkRhdGFDaGFubmVsVGVzdCwKKyAgICAgICBOb1NjdHBUcmFuc3BvcnRDcmVhdGVkSWZNZWRp
YVRyYW5zcG9ydERhdGFDaGFubmVsc0VuYWJsZWQpIHsKKyAgUlRDQ29uZmlndXJhdGlvbiBjb25m
aWc7CisgIGNvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1
ZTsKKyAgY29uZmlnLmVuYWJsZV9kdGxzX3NydHAgPSBmYWxzZTsgIC8vIFNERVMgaXMgcmVxdWly
ZWQgdG8gdXNlIG1lZGlhIHRyYW5zcG9ydC4KKyAgYXV0byBjYWxsZXIgPSBDcmVhdGVQZWVyQ29u
bmVjdGlvbldpdGhEYXRhQ2hhbm5lbChjb25maWcpOworCisgIEFTU0VSVF9UUlVFKGNhbGxlci0+
U2V0TG9jYWxEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9mZmVyKCkpKTsKKyAgRVhQRUNUX0ZB
TFNFKGNhbGxlci0+c2N0cF90cmFuc3BvcnRfZmFjdG9yeSgpLT5sYXN0X2Zha2Vfc2N0cF90cmFu
c3BvcnQoKSk7Cit9CisKK1RFU1RfUChQZWVyQ29ubmVjdGlvbkRhdGFDaGFubmVsVGVzdCwKKyAg
ICAgICBNZWRpYVRyYW5zcG9ydERhdGFDaGFubmVsQ3JlYXRlZEV2ZW5JZlNjdHBBdmFpbGFibGUp
IHsKKyAgUlRDQ29uZmlndXJhdGlvbiBjb25maWc7CisgIGNvbmZpZy51c2VfbWVkaWFfdHJhbnNw
b3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1ZTsKKyAgY29uZmlnLmVuYWJsZV9kdGxzX3NydHAg
PSBmYWxzZTsgIC8vIFNERVMgaXMgcmVxdWlyZWQgdG8gdXNlIG1lZGlhIHRyYW5zcG9ydC4KKyAg
UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlOjpPcHRpb25zIG9wdGlvbnM7CisgIG9wdGlv
bnMuZGlzYWJsZV9zY3RwX2RhdGFfY2hhbm5lbHMgPSBmYWxzZTsKKyAgYXV0byBjYWxsZXIgPSBD
cmVhdGVQZWVyQ29ubmVjdGlvbldpdGhEYXRhQ2hhbm5lbChjb25maWcsIG9wdGlvbnMpOworCisg
IEFTU0VSVF9UUlVFKGNhbGxlci0+U2V0TG9jYWxEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9m
ZmVyKCkpKTsKKyAgRVhQRUNUX0ZBTFNFKGNhbGxlci0+c2N0cF90cmFuc3BvcnRfZmFjdG9yeSgp
LT5sYXN0X2Zha2Vfc2N0cF90cmFuc3BvcnQoKSk7Cit9CisKK1RFU1RfUChQZWVyQ29ubmVjdGlv
bkRhdGFDaGFubmVsVGVzdCwKKyAgICAgICBDYW5ub3RFbmFibGVCb3RoTWVkaWFUcmFuc3BvcnRB
bmRSdHBEYXRhQ2hhbm5lbHMpIHsKKyAgUlRDQ29uZmlndXJhdGlvbiBjb25maWc7CisgIGNvbmZp
Zy5lbmFibGVfcnRwX2RhdGFfY2hhbm5lbCA9IHRydWU7CisgIGNvbmZpZy51c2VfbWVkaWFfdHJh
bnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1ZTsKKyAgY29uZmlnLmVuYWJsZV9kdGxzX3Ny
dHAgPSBmYWxzZTsgIC8vIFNERVMgaXMgcmVxdWlyZWQgdG8gdXNlIG1lZGlhIHRyYW5zcG9ydC4K
KyAgRVhQRUNUX0VRKENyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZyksIG51bGxwdHIpOworfQor
CitURVNUX1AoUGVlckNvbm5lY3Rpb25EYXRhQ2hhbm5lbFRlc3QsCisgICAgICAgTWVkaWFUcmFu
c3BvcnREYXRhQ2hhbm5lbEZhaWxzV2l0aG91dFNkZXMpIHsKKyAgUlRDQ29uZmlndXJhdGlvbiBj
b25maWc7CisgIGNvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0g
dHJ1ZTsKKyAgY29uZmlnLmVuYWJsZV9kdGxzX3NydHAgPSB0cnVlOyAgLy8gRGlzYWJsZXMgU0RF
UyBmb3IgZGF0YSBzZWN0aW9ucy4KKyAgYXV0byBjYWxsZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlv
bldpdGhEYXRhQ2hhbm5lbChjb25maWcpOworCisgIHN0ZDo6c3RyaW5nIGVycm9yOworICBBU1NF
UlRfRkFMU0UoY2FsbGVyLT5TZXRMb2NhbERlc2NyaXB0aW9uKGNhbGxlci0+Q3JlYXRlT2ZmZXIo
KSwgJmVycm9yKSk7CisgIEVYUEVDVF9FUShlcnJvciwKKyAgICAgICAgICAgICJGYWlsZWQgdG8g
c2V0IGxvY2FsIG9mZmVyIHNkcDogRmFpbGVkIHRvIGNyZWF0ZSBkYXRhIGNoYW5uZWwuIik7Cit9
CisKIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFBlZXJDb25uZWN0aW9uRGF0YUNoYW5uZWxUZXN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgUGVlckNvbm5lY3Rpb25EYXRhQ2hhbm5lbFRlc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoU2RwU2VtYW50aWNzOjprUGxhbkIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9w
ZWVyY29ubmVjdGlvbl9oaXN0b2dyYW1fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9oaXN0b2dyYW1fdW5pdHRl
c3QuY2MKaW5kZXggYjVjMDdmNDllYzQxMWIwNjgwY2ExM2JkZDc1MGJhODZlMDQ0Nzk1ZS4uNDk3
ZTMzYTY4OGM2NWRiNDkxMDc3NjhhMmM5YjJjOTk3N2MwOTZkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25faGlz
dG9ncmFtX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2hpc3RvZ3JhbV91bml0dGVzdC5jYwpAQCAtMjUx
LDYgKzI1MSw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uVXNhZ2VIaXN0b2dyYW1UZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAg
ICBvYnNlcnZlci0+U2V0UGVlckNvbm5lY3Rpb25JbnRlcmZhY2UocGMuZ2V0KCkpOwogICAgIGF1
dG8gd3JhcHBlciA9CiAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFBlZXJDb25uZWN0aW9uV3Jh
cHBlckZvclVzYWdlSGlzdG9ncmFtVGVzdD4oCiAgICAgICAgICAgICBwY19mYWN0b3J5LCBwYywg
c3RkOjptb3ZlKG9ic2VydmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9pY2VfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlv
bl9pY2VfdW5pdHRlc3QuY2MKaW5kZXggOTY1OTU2YzQyYTMyNDFiMTE4MGU1ZGI4NzM1ODE0ZWRl
MzZmNTM3NS4uOTI4NTQ5ZjM4MDBmMjU2NGZlOWI2NzRjMmQ0YzZmODA1ZWYwYWE5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNv
bm5lY3Rpb25faWNlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2ljZV91bml0dGVzdC5jYwpAQCAtMjEs
NyArMjEsOSBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImFw
aS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5j
bHVkZSAiYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBp
L3BlZXJjb25uZWN0aW9ucHJveHkuaCIKKyNpbmNsdWRlICJhcGkvdW1hbWV0cmljcy5oIgogI2lu
Y2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAicGMvdGVzdC9mYWtlYXVkaW9jYXB0dXJlbW9kdWxlLmgiCkBAIC03Nyw2
ICs3OSw5IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uV3JhcHBlckZvckljZVRlc3QgOiBwdWJsaWMg
UGVlckNvbm5lY3Rpb25XcmFwcGVyIHsKIAogICB2b2lkIHNldF9uZXR3b3JrKHJ0Yzo6RmFrZU5l
dHdvcmtNYW5hZ2VyKiBuZXR3b3JrKSB7IG5ldHdvcmtfID0gbmV0d29yazsgfQogCisgIC8vIFRo
ZSBwb3J0IGFsbG9jYXRvciB1c2VkIGJ5IHRoaXMgUEMuCisgIGNyaWNrZXQ6OlBvcnRBbGxvY2F0
b3IqIHBvcnRfYWxsb2NhdG9yXzsKKwogIHByaXZhdGU6CiAgIHJ0Yzo6RmFrZU5ldHdvcmtNYW5h
Z2VyKiBuZXR3b3JrXzsKIH07CkBAIC0xMTQsMTUgKzExOSwxOCBAQCBjbGFzcyBQZWVyQ29ubmVj
dGlvbkljZUJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgUlRDQ29uZmln
dXJhdGlvbiBtb2RpZmllZF9jb25maWcgPSBjb25maWc7CiAgICAgbW9kaWZpZWRfY29uZmlnLnNk
cF9zZW1hbnRpY3MgPSBzZHBfc2VtYW50aWNzXzsKICAgICBhdXRvIG9ic2VydmVyID0gYWJzbDo6
bWFrZV91bmlxdWU8TW9ja1BlZXJDb25uZWN0aW9uT2JzZXJ2ZXI+KCk7CisgICAgYXV0byBwb3J0
X2FsbG9jYXRvcl9jb3B5ID0gcG9ydF9hbGxvY2F0b3IuZ2V0KCk7CiAgICAgYXV0byBwYyA9IHBj
X2ZhY3RvcnlfLT5DcmVhdGVQZWVyQ29ubmVjdGlvbigKICAgICAgICAgbW9kaWZpZWRfY29uZmln
LCBzdGQ6Om1vdmUocG9ydF9hbGxvY2F0b3IpLCBudWxscHRyLCBvYnNlcnZlci5nZXQoKSk7CiAg
ICAgaWYgKCFwYykgewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgb2JzZXJ2
ZXItPlNldFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlKHBjLmdldCgpKTsKICAgICBhdXRvIHdyYXBw
ZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxQZWVyQ29ubmVjdGlvbldyYXBwZXJGb3JJY2VUZXN0PigK
ICAgICAgICAgcGNfZmFjdG9yeV8sIHBjLCBzdGQ6Om1vdmUob2JzZXJ2ZXIpKTsKICAgICB3cmFw
cGVyLT5zZXRfbmV0d29yayhmYWtlX25ldHdvcmspOworICAgIHdyYXBwZXItPnBvcnRfYWxsb2Nh
dG9yXyA9IHBvcnRfYWxsb2NhdG9yX2NvcHk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiAgIH0KIApA
QCAtMjA1LDcgKzIxMywxMiBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkljZUJhc2VUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgUGVlckNvbm5lY3Rpb24qIHBjID0gc3RhdGljX2Nh
c3Q8UGVlckNvbm5lY3Rpb24qPihwY19wcm94eS0+aW50ZXJuYWwoKSk7CiAgICAgZm9yIChhdXRv
IHRyYW5zY2VpdmVyIDogcGMtPkdldFRyYW5zY2VpdmVyc0ludGVybmFsKCkpIHsKICAgICAgIGlm
ICh0cmFuc2NlaXZlci0+bWVkaWFfdHlwZSgpID09IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8p
IHsKLSAgICAgICAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+
aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOworICAgICAgICAvLyBUT0RPKGFtaXRoaSk6IFRoaXMgdGVz
dCBzZWVtcyB0byBiZSB1c2luZyBhIG1ldGhvZCB0aGF0IHNob3VsZCBub3QKKyAgICAgICAgLy8g
YmUgcHVibGljIHxydHBfcGFja2V0X3RyYW5zcG9ydHwuIEJlY2F1c2UgdGhlIHRlc3QgaXMgbm90
IG1vY2tpbmcKKyAgICAgICAgLy8gdGhlIGNoYW5uZWxzIG9yIHRyYW5zY2VpdmVyLCB3b3JrYXJv
dW5kIHdpbGwgYmUgdG8gfHN0YXRpY19jYXN0fAorICAgICAgICAvLyB0aGUgY2hhbm5lbCB1bnRp
bCB0aGUgbWV0aG9kIGlzIHJld3JpdHRlbi4KKyAgICAgICAgY3JpY2tldDo6QmFzZUNoYW5uZWwq
IGNoYW5uZWwgPSBzdGF0aWNfY2FzdDxjcmlja2V0OjpCYXNlQ2hhbm5lbCo+KAorICAgICAgICAg
ICAgdHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNoYW5uZWwoKSk7CiAgICAgICAgIGlmIChjaGFu
bmVsKSB7CiAgICAgICAgICAgYXV0byBkdGxzX3RyYW5zcG9ydCA9IHN0YXRpY19jYXN0PGNyaWNr
ZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCo+KAogICAgICAgICAgICAgICBjaGFubmVsLT5ydHBf
cGFja2V0X3RyYW5zcG9ydCgpKTsKQEAgLTEwMDcsNCArMTAyMCw0MSBAQCBURVNUX0YoUGVlckNv
bm5lY3Rpb25JY2VDb25maWdUZXN0LCBTZXRTdHVuQ2FuZGlkYXRlS2VlcGFsaXZlSW50ZXJ2YWwp
IHsKICAgRVhQRUNUX0VRKGFjdHVhbF9zdHVuX2tlZXBhbGl2ZV9pbnRlcnZhbC52YWx1ZV9vcigt
MSksIDMyMSk7CiB9CiAKK1RFU1RfUChQZWVyQ29ubmVjdGlvbkljZVRlc3QsIEljZUNyZWRlbnRp
YWxzQ3JlYXRlT2ZmZXIpIHsKKyAgUlRDQ29uZmlndXJhdGlvbiBjb25maWc7CisgIGNvbmZpZy5p
Y2VfY2FuZGlkYXRlX3Bvb2xfc2l6ZSA9IDE7CisgIGF1dG8gcGMgPSBDcmVhdGVQZWVyQ29ubmVj
dGlvbldpdGhBdWRpb1ZpZGVvKGNvbmZpZyk7CisgIEFTU0VSVF9ORShwYy0+cG9ydF9hbGxvY2F0
b3JfLCBudWxscHRyKTsKKyAgYXV0byBvZmZlciA9IHBjLT5DcmVhdGVPZmZlcigpOworICBhdXRv
IGNyZWRlbnRpYWxzID0gcGMtPnBvcnRfYWxsb2NhdG9yXy0+R2V0UG9vbGVkSWNlQ3JlZGVudGlh
bHMoKTsKKyAgQVNTRVJUX0VRKDF1LCBjcmVkZW50aWFscy5zaXplKCkpOworCisgIGF1dG8qIGRl
c2MgPSBvZmZlci0+ZGVzY3JpcHRpb24oKTsKKyAgZm9yIChjb25zdCBhdXRvJiBjb250ZW50IDog
ZGVzYy0+Y29udGVudHMoKSkgeworICAgIGF1dG8qIHRyYW5zcG9ydF9pbmZvID0gZGVzYy0+R2V0
VHJhbnNwb3J0SW5mb0J5TmFtZShjb250ZW50Lm5hbWUpOworICAgIEVYUEVDVF9FUSh0cmFuc3Bv
cnRfaW5mby0+ZGVzY3JpcHRpb24uaWNlX3VmcmFnLCBjcmVkZW50aWFsc1swXS51ZnJhZyk7Cisg
ICAgRVhQRUNUX0VRKHRyYW5zcG9ydF9pbmZvLT5kZXNjcmlwdGlvbi5pY2VfcHdkLCBjcmVkZW50
aWFsc1swXS5wd2QpOworICB9Cit9CisKK1RFU1RfUChQZWVyQ29ubmVjdGlvbkljZVRlc3QsIElj
ZUNyZWRlbnRpYWxzQ3JlYXRlQW5zd2VyKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOwor
ICBjb25maWcuaWNlX2NhbmRpZGF0ZV9wb29sX3NpemUgPSAxOworICBhdXRvIHBjID0gQ3JlYXRl
UGVlckNvbm5lY3Rpb25XaXRoQXVkaW9WaWRlbyhjb25maWcpOworICBBU1NFUlRfTkUocGMtPnBv
cnRfYWxsb2NhdG9yXywgbnVsbHB0cik7CisgIGF1dG8gb2ZmZXIgPSBwYy0+Q3JlYXRlT2ZmZXIo
KTsKKyAgQVNTRVJUX1RSVUUocGMtPlNldFJlbW90ZURlc2NyaXB0aW9uKHN0ZDo6bW92ZShvZmZl
cikpKTsKKyAgYXV0byBhbnN3ZXIgPSBwYy0+Q3JlYXRlQW5zd2VyKCk7CisKKyAgYXV0byBjcmVk
ZW50aWFscyA9IHBjLT5wb3J0X2FsbG9jYXRvcl8tPkdldFBvb2xlZEljZUNyZWRlbnRpYWxzKCk7
CisgIEFTU0VSVF9FUSgxdSwgY3JlZGVudGlhbHMuc2l6ZSgpKTsKKworICBhdXRvKiBkZXNjID0g
YW5zd2VyLT5kZXNjcmlwdGlvbigpOworICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRlbnQgOiBkZXNj
LT5jb250ZW50cygpKSB7CisgICAgYXV0byogdHJhbnNwb3J0X2luZm8gPSBkZXNjLT5HZXRUcmFu
c3BvcnRJbmZvQnlOYW1lKGNvbnRlbnQubmFtZSk7CisgICAgRVhQRUNUX0VRKHRyYW5zcG9ydF9p
bmZvLT5kZXNjcmlwdGlvbi5pY2VfdWZyYWcsIGNyZWRlbnRpYWxzWzBdLnVmcmFnKTsKKyAgICBF
WFBFQ1RfRVEodHJhbnNwb3J0X2luZm8tPmRlc2NyaXB0aW9uLmljZV9wd2QsIGNyZWRlbnRpYWxz
WzBdLnB3ZCk7CisgIH0KK30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b25faW50ZWdyYXRpb250ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25faW50ZWdyYXRpb250ZXN0LmNjCmluZGV4IDI4ZTAx
MTAzNTUwMzdlZDRkN2VjOTE2MzI2YWU2OGYxNzFjZTEzZDMuLmE3ZjdhYWQwZjU0YjMxY2FlZDNl
YTdmZDQ1ZjYzZjQ3Yzk0YTllZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2ludGVncmF0aW9udGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29u
bmVjdGlvbl9pbnRlZ3JhdGlvbnRlc3QuY2MKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJh
cGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rp
b25wcm94eS5oIgogI2luY2x1ZGUgImFwaS9ydHByZWNlaXZlcmludGVyZmFjZS5oIgorI2luY2x1
ZGUgImFwaS90ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgImFwaS91
bWFtZXRyaWNzLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2Rl
Y29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRl
b19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRl
b19mb3JtYXQuaCIKQEAgLTI1MCw3ICsyNTIsOCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbldyYXBw
ZXIgOiBwdWJsaWMgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyLAogICAgIHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzKG51bGxwdHIpOwogICAgIGRl
cGVuZGVuY2llcy5jZXJ0X2dlbmVyYXRvciA9IHN0ZDo6bW92ZShjZXJ0X2dlbmVyYXRvcik7CiAg
ICAgaWYgKCFjbGllbnQtPkluaXQobnVsbHB0ciwgbnVsbHB0ciwgc3RkOjptb3ZlKGRlcGVuZGVu
Y2llcyksIG5ldHdvcmtfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcl90aHJl
YWQsIG51bGxwdHIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgd29ya2VyX3RocmVhZCwgbnVs
bHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5PSov
bnVsbHB0cikpIHsKICAgICAgIGRlbGV0ZSBjbGllbnQ7CiAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CkBAIC0zMTcsNiArMzIwLDEyIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uV3JhcHBlciA6
IHB1YmxpYyB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIsCiAgICAgaWNlX2Nvbm5lY3Rp
b25fc3RhdGVfaGlzdG9yeV8uY2xlYXIoKTsKICAgfQogCisgIC8vIEV2ZXJ5IFBlZXJDb25uZWN0
aW9uIHN0YXRlIGluIG9yZGVyIHRoYXQgaGFzIGJlZW4gc2VlbiBieSB0aGUgb2JzZXJ2ZXIuCisg
IHN0ZDo6dmVjdG9yPFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRl
PgorICBwZWVyX2Nvbm5lY3Rpb25fc3RhdGVfaGlzdG9yeSgpIGNvbnN0IHsKKyAgICByZXR1cm4g
cGVlcl9jb25uZWN0aW9uX3N0YXRlX2hpc3RvcnlfOworICB9CisKICAgLy8gRXZlcnkgSUNFIGdh
dGhlcmluZyBzdGF0ZSBpbiBvcmRlciB0aGF0IGhhcyBiZWVuIHNlZW4gYnkgdGhlIG9ic2VydmVy
LgogICBzdGQ6OnZlY3RvcjxQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlR2F0aGVyaW5nU3Rh
dGU+CiAgIGljZV9nYXRoZXJpbmdfc3RhdGVfaGlzdG9yeSgpIGNvbnN0IHsKQEAgLTU4MSwxMiAr
NTkwLDE0IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uV3JhcHBlciA6IHB1YmxpYyB3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uT2JzZXJ2ZXIsCiAgIGV4cGxpY2l0IFBlZXJDb25uZWN0aW9uV3JhcHBlcihj
b25zdCBzdGQ6OnN0cmluZyYgZGVidWdfbmFtZSkKICAgICAgIDogZGVidWdfbmFtZV8oZGVidWdf
bmFtZSkge30KIAotICBib29sIEluaXQoY29uc3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRp
b25zKiBvcHRpb25zLAotICAgICAgICAgICAgY29uc3QgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlJUQ0NvbmZpZ3VyYXRpb24qIGNvbmZpZywKLSAgICAgICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25EZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzLAotICAgICAgICAgICAgcnRjOjpUaHJlYWQq
IG5ldHdvcmtfdGhyZWFkLAotICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQs
Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpGYWtlUnRjRXZlbnRMb2dGYWN0
b3J5PiBldmVudF9sb2dfZmFjdG9yeSkgeworICBib29sIEluaXQoCisgICAgICBjb25zdCBQZWVy
Q29ubmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMqIG9wdGlvbnMsCisgICAgICBjb25zdCBQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiogY29uZmlnLAorICAgICAgd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyBkZXBlbmRlbmNpZXMsCisgICAgICBydGM6OlRo
cmVhZCogbmV0d29ya190aHJlYWQsCisgICAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwK
KyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkZha2VSdGNFdmVudExvZ0ZhY3Rvcnk+IGV2
ZW50X2xvZ19mYWN0b3J5LAorICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFu
c3BvcnRGYWN0b3J5PiBtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSkgewogICAgIC8vIFRoZXJlJ3Mg
YW4gZXJyb3IgaW4gdGhpcyB0ZXN0IGNvZGUgaWYgSW5pdCBlbmRzIHVwIGJlaW5nIGNhbGxlZCB0
d2ljZS4KICAgICBSVENfRENIRUNLKCFwZWVyX2Nvbm5lY3Rpb25fKTsKICAgICBSVENfRENIRUNL
KCFwZWVyX2Nvbm5lY3Rpb25fZmFjdG9yeV8pOwpAQCAtNjI0LDYgKzYzNSwxMCBAQCBjbGFzcyBQ
ZWVyQ29ubmVjdGlvbldyYXBwZXIgOiBwdWJsaWMgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2Vy
dmVyLAogICAgICAgcGNfZmFjdG9yeV9kZXBlbmRlbmNpZXMuZXZlbnRfbG9nX2ZhY3RvcnkgPQog
ICAgICAgICAgIHdlYnJ0Yzo6Q3JlYXRlUnRjRXZlbnRMb2dGYWN0b3J5KCk7CiAgICAgfQorICAg
IGlmIChtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSkgeworICAgICAgcGNfZmFjdG9yeV9kZXBlbmRl
bmNpZXMubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgPQorICAgICAgICAgIHN0ZDo6bW92ZShtZWRp
YV90cmFuc3BvcnRfZmFjdG9yeSk7CisgICAgfQogICAgIHBlZXJfY29ubmVjdGlvbl9mYWN0b3J5
XyA9IHdlYnJ0Yzo6Q3JlYXRlTW9kdWxhclBlZXJDb25uZWN0aW9uRmFjdG9yeSgKICAgICAgICAg
c3RkOjptb3ZlKHBjX2ZhY3RvcnlfZGVwZW5kZW5jaWVzKSk7CiAKQEAgLTkxMyw2ICs5MjgsMTEg
QEAgY2xhc3MgUGVlckNvbm5lY3Rpb25XcmFwcGVyIDogcHVibGljIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25PYnNlcnZlciwKICAgICBFWFBFQ1RfRVEocGMoKS0+aWNlX2Nvbm5lY3Rpb25fc3RhdGUo
KSwgbmV3X3N0YXRlKTsKICAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV9oaXN0b3J5Xy5wdXNoX2Jh
Y2sobmV3X3N0YXRlKTsKICAgfQorICB2b2lkIE9uQ29ubmVjdGlvbkNoYW5nZSgKKyAgICAgIHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUgbmV3X3N0
YXRlKSBvdmVycmlkZSB7CisgICAgcGVlcl9jb25uZWN0aW9uX3N0YXRlX2hpc3RvcnlfLnB1c2hf
YmFjayhuZXdfc3RhdGUpOworICB9CisKICAgdm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZSgKICAg
ICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdhdGhlcmluZ1N0YXRlIG5l
d19zdGF0ZSkgb3ZlcnJpZGUgewogICAgIEVYUEVDVF9FUShwYygpLT5pY2VfZ2F0aGVyaW5nX3N0
YXRlKCksIG5ld19zdGF0ZSk7CkBAIC0xMDA5LDYgKzEwMjksOCBAQCBjbGFzcyBQZWVyQ29ubmVj
dGlvbldyYXBwZXIgOiBwdWJsaWMgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyLAogCiAg
IHN0ZDo6dmVjdG9yPFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGU+
CiAgICAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV9oaXN0b3J5XzsKKyAgc3RkOjp2ZWN0b3I8UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU+CisgICAgICBwZWVyX2Nv
bm5lY3Rpb25fc3RhdGVfaGlzdG9yeV87CiAgIHN0ZDo6dmVjdG9yPFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0ZT4KICAgICAgIGljZV9nYXRoZXJpbmdfc3RhdGVfaGlz
dG9yeV87CiAKQEAgLTExNDIsNyArMTE2NCw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZWdy
YXRpb25CYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgc3NfKG5ldyBy
dGM6OlZpcnR1YWxTb2NrZXRTZXJ2ZXIoKSksCiAgICAgICAgIGZzc18obmV3IHJ0Yzo6RmlyZXdh
bGxTb2NrZXRTZXJ2ZXIoc3NfLmdldCgpKSksCiAgICAgICAgIG5ldHdvcmtfdGhyZWFkXyhuZXcg
cnRjOjpUaHJlYWQoZnNzXy5nZXQoKSkpLAotICAgICAgICB3b3JrZXJfdGhyZWFkXyhydGM6OlRo
cmVhZDo6Q3JlYXRlKCkpIHsKKyAgICAgICAgd29ya2VyX3RocmVhZF8ocnRjOjpUaHJlYWQ6OkNy
ZWF0ZSgpKSwKKyAgICAgICAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0c18obmV0d29ya190aHJl
YWRfLmdldCgpKSB7CiAgICAgbmV0d29ya190aHJlYWRfLT5TZXROYW1lKCJQQ05ldHdvcmtUaHJl
YWQiLCB0aGlzKTsKICAgICB3b3JrZXJfdGhyZWFkXy0+U2V0TmFtZSgiUENXb3JrZXJUaHJlYWQi
LCB0aGlzKTsKICAgICBSVENfQ0hFQ0sobmV0d29ya190aHJlYWRfLT5TdGFydCgpKTsKQEAgLTEx
OTgsNyArMTIyMSw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25CYXNlVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICAgIGNvbnN0IFBlZXJDb25uZWN0aW9uRmFjdG9y
eTo6T3B0aW9ucyogb3B0aW9ucywKICAgICAgIGNvbnN0IFJUQ0NvbmZpZ3VyYXRpb24qIGNvbmZp
ZywKICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVz
LAotICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6RmFrZVJ0Y0V2ZW50TG9nRmFjdG9yeT4g
ZXZlbnRfbG9nX2ZhY3RvcnkpIHsKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkZha2VS
dGNFdmVudExvZ0ZhY3Rvcnk+IGV2ZW50X2xvZ19mYWN0b3J5LAorICAgICAgc3RkOjp1bmlxdWVf
cHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRGYWN0b3J5PiBtZWRpYV90cmFuc3BvcnRfZmFjdG9y
eSkgewogICAgIFJUQ0NvbmZpZ3VyYXRpb24gbW9kaWZpZWRfY29uZmlnOwogICAgIGlmIChjb25m
aWcpIHsKICAgICAgIG1vZGlmaWVkX2NvbmZpZyA9ICpjb25maWc7CkBAIC0xMjEzLDcgKzEyMzcs
OCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiAKICAgICBpZiAoIWNsaWVudC0+SW5pdChvcHRpb25zLCAmbW9kaWZpZWRf
Y29uZmlnLCBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzKSwKICAgICAgICAgICAgICAgICAgICAgICBu
ZXR3b3JrX3RocmVhZF8uZ2V0KCksIHdvcmtlcl90aHJlYWRfLmdldCgpLAotICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSkpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptb3ZlKGV2ZW50X2xvZ19mYWN0b3J5KSwKKyAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1vdmUobWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpKSkgewogICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBjbGllbnQ7CkBAIC0xMjI5LDcgKzEyNTQsOCBA
QCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CiAgICAgICAgIG5ldyB3ZWJydGM6OkZha2VSdGNFdmVudExvZ0ZhY3RvcnkocnRj
OjpUaHJlYWQ6OkN1cnJlbnQoKSkpOwogICAgIHJldHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbldy
YXBwZXIoZGVidWdfbmFtZSwgb3B0aW9ucywgY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGRlcGVuZGVuY2llcyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShldmVudF9s
b2dfZmFjdG9yeSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1l
ZGlhX3RyYW5zcG9ydF9mYWN0b3J5PSovbnVsbHB0cik7CiAgIH0KIAogICBib29sIENyZWF0ZVBl
ZXJDb25uZWN0aW9uV3JhcHBlcnMoKSB7CkBAIC0xMjUwLDExICsxMjc2LDExIEBAIGNsYXNzIFBl
ZXJDb25uZWN0aW9uSW50ZWdyYXRpb25CYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
ICAgICBzZHBfc2VtYW50aWNzXyA9IGNhbGxlcl9zZW1hbnRpY3M7CiAgICAgY2FsbGVyXyA9IENy
ZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcigKICAgICAgICAgIkNhbGxlciIsIG51bGxwdHIsIG51
bGxwdHIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMobnVsbHB0ciksCi0gICAg
ICAgIG51bGxwdHIpOworICAgICAgICBudWxscHRyLCAvKm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
PSovbnVsbHB0cik7CiAgICAgc2RwX3NlbWFudGljc18gPSBjYWxsZWVfc2VtYW50aWNzOwogICAg
IGNhbGxlZV8gPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXIoCiAgICAgICAgICJDYWxsZWUi
LCBudWxscHRyLCBudWxscHRyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzKG51
bGxwdHIpLAotICAgICAgICBudWxscHRyKTsKKyAgICAgICAgbnVsbHB0ciwgLyptZWRpYV90cmFu
c3BvcnRfZmFjdG9yeT0qL251bGxwdHIpOwogICAgIHNkcF9zZW1hbnRpY3NfID0gb3JpZ2luYWxf
c2VtYW50aWNzOwogICAgIHJldHVybiBjYWxsZXJfICYmIGNhbGxlZV87CiAgIH0KQEAgLTEyNjQs
MTAgKzEyOTAsMjggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgICAgY29uc3QgUGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OlJUQ0NvbmZpZ3VyYXRpb24mIGNhbGxlZV9jb25maWcpIHsKICAgICBjYWxsZXJfID0gQ3Jl
YXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyKAogICAgICAgICAiQ2FsbGVyIiwgbnVsbHB0ciwgJmNh
bGxlcl9jb25maWcsCi0gICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMo
bnVsbHB0ciksIG51bGxwdHIpOworICAgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5k
ZW5jaWVzKG51bGxwdHIpLCBudWxscHRyLAorICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydF9mYWN0
b3J5PSovbnVsbHB0cik7CiAgICAgY2FsbGVlXyA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBl
cigKICAgICAgICAgIkNhbGxlZSIsIG51bGxwdHIsICZjYWxsZWVfY29uZmlnLAotICAgICAgICB3
ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzKG51bGxwdHIpLCBudWxscHRyKTsKKyAg
ICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwgbnVsbHB0
ciwKKyAgICAgICAgLyptZWRpYV90cmFuc3BvcnRfZmFjdG9yeT0qL251bGxwdHIpOworICAgIHJl
dHVybiBjYWxsZXJfICYmIGNhbGxlZV87CisgIH0KKworICBib29sIENyZWF0ZVBlZXJDb25uZWN0
aW9uV3JhcHBlcnNXaXRoQ29uZmlnQW5kTWVkaWFUcmFuc3BvcnRGYWN0b3J5KAorICAgICAgY29u
c3QgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mIGNhbGxlcl9jb25m
aWcsCisgICAgICBjb25zdCBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlv
biYgY2FsbGVlX2NvbmZpZywKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJh
bnNwb3J0RmFjdG9yeT4gY2FsbGVyX2ZhY3RvcnksCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IGNhbGxlZV9mYWN0b3J5KSB7CisgICAgY2FsbGVy
XyA9CisgICAgICAgIENyZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcigiQ2FsbGVyIiwgbnVsbHB0
ciwgJmNhbGxlcl9jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzKG51bGxwdHIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgc3RkOjptb3ZlKGNhbGxlcl9mYWN0b3J5
KSk7CisgICAgY2FsbGVlXyA9CisgICAgICAgIENyZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcigi
Q2FsbGVlIiwgbnVsbHB0ciwgJmNhbGxlZV9jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzKG51bGxwdHIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgc3RkOjptb3Zl
KGNhbGxlZV9mYWN0b3J5KSk7CiAgICAgcmV0dXJuIGNhbGxlcl8gJiYgY2FsbGVlXzsKICAgfQog
CkBAIC0xMjc4LDEwICsxMzIyLDEyIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25C
YXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25EZXBlbmRlbmNpZXMgY2FsbGVlX2RlcGVuZGVuY2llcykgewogICAgIGNhbGxlcl8gPQog
ICAgICAgICBDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXIoIkNhbGxlciIsIG51bGxwdHIsICZj
YWxsZXJfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
b3ZlKGNhbGxlcl9kZXBlbmRlbmNpZXMpLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShjYWxsZXJfZGVwZW5kZW5jaWVzKSwgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0X2Zh
Y3Rvcnk9Ki9udWxscHRyKTsKICAgICBjYWxsZWVfID0KICAgICAgICAgQ3JlYXRlUGVlckNvbm5l
Y3Rpb25XcmFwcGVyKCJDYWxsZWUiLCBudWxscHRyLCAmY2FsbGVlX2NvbmZpZywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShjYWxsZWVfZGVwZW5kZW5jaWVz
KSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1v
dmUoY2FsbGVlX2RlcGVuZGVuY2llcyksIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5PSovbnVsbHB0cik7CiAgICAg
cmV0dXJuIGNhbGxlcl8gJiYgY2FsbGVlXzsKICAgfQogCkBAIC0xMjkwLDEwICsxMzM2LDEyIEBA
IGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25CYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKICAgICAgIGNvbnN0IFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyYgY2Fs
bGVlX29wdGlvbnMpIHsKICAgICBjYWxsZXJfID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVy
KAogICAgICAgICAiQ2FsbGVyIiwgJmNhbGxlcl9vcHRpb25zLCBudWxscHRyLAotICAgICAgICB3
ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzKG51bGxwdHIpLCBudWxscHRyKTsKKyAg
ICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwgbnVsbHB0
ciwKKyAgICAgICAgLyptZWRpYV90cmFuc3BvcnRfZmFjdG9yeT0qL251bGxwdHIpOwogICAgIGNh
bGxlZV8gPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXIoCiAgICAgICAgICJDYWxsZWUiLCAm
Y2FsbGVlX29wdGlvbnMsIG51bGxwdHIsCi0gICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25E
ZXBlbmRlbmNpZXMobnVsbHB0ciksIG51bGxwdHIpOworICAgICAgICB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uRGVwZW5kZW5jaWVzKG51bGxwdHIpLCBudWxscHRyLAorICAgICAgICAvKm1lZGlhX3Ry
YW5zcG9ydF9mYWN0b3J5PSovbnVsbHB0cik7CiAgICAgcmV0dXJuIGNhbGxlcl8gJiYgY2FsbGVl
XzsKICAgfQogCkBAIC0xMzE3LDcgKzEzNjUsOCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVn
cmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkRlcGVuZGVuY2llcyBkZXBlbmRlbmNpZXMobnVsbHB0cik7CiAgICAgZGVwZW5k
ZW5jaWVzLmNlcnRfZ2VuZXJhdG9yID0gc3RkOjptb3ZlKGNlcnRfZ2VuZXJhdG9yKTsKICAgICBy
ZXR1cm4gQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyKCJOZXcgUGVlciIsIG51bGxwdHIsIG51
bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUo
ZGVwZW5kZW5jaWVzKSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzKSwgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk9Ki9udWxs
cHRyKTsKICAgfQogCiAgIGNyaWNrZXQ6OlRlc3RUdXJuU2VydmVyKiBDcmVhdGVUdXJuU2VydmVy
KApAQCAtMTQwNSw2ICsxNDU0LDEwIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25C
YXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIAogICBydGM6OlZpcnR1YWxTb2NrZXRT
ZXJ2ZXIqIHZpcnR1YWxfc29ja2V0X3NlcnZlcigpIHsgcmV0dXJuIHNzXy5nZXQoKTsgfQogCisg
IHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRQYWlyKiBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCkg
eworICAgIHJldHVybiAmbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0c187CisgIH0KKwogICBQZWVy
Q29ubmVjdGlvbldyYXBwZXIqIGNhbGxlcigpIHsgcmV0dXJuIGNhbGxlcl8uZ2V0KCk7IH0KIAog
ICAvLyBTZXQgdGhlIHxjYWxsZXJffCB0byB0aGUgfHdyYXBwZXJ8IHBhc3NlZCBpbiBhbmQgcmV0
dXJuIHRoZQpAQCAtMTU1Nyw5ICsxNjEwLDExIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZWdy
YXRpb25CYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZW1vdGVfZ2NtX2VuYWJsZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHBlY3RlZF9jaXBoZXJfc3Vp
dGUpIHsKICAgICBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMgY2FsbGVyX29wdGlvbnM7
Ci0gICAgY2FsbGVyX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3Vp
dGVzID0gbG9jYWxfZ2NtX2VuYWJsZWQ7CisgICAgY2FsbGVyX29wdGlvbnMuY3J5cHRvX29wdGlv
bnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPQorICAgICAgICBsb2NhbF9nY21fZW5h
YmxlZDsKICAgICBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMgY2FsbGVlX29wdGlvbnM7
Ci0gICAgY2FsbGVlX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3Vp
dGVzID0gcmVtb3RlX2djbV9lbmFibGVkOworICAgIGNhbGxlZV9vcHRpb25zLmNyeXB0b19vcHRp
b25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0KKyAgICAgICAgcmVtb3RlX2djbV9l
bmFibGVkOwogICAgIFRlc3ROZWdvdGlhdGVkQ2lwaGVyU3VpdGUoY2FsbGVyX29wdGlvbnMsIGNh
bGxlZV9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfY2lw
aGVyX3N1aXRlKTsKICAgfQpAQCAtMTU4MSw2ICsxNjM2LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rp
b25JbnRlZ3JhdGlvbkJhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAvLyBvbiB0
aGUgbmV0d29yayB0aHJlYWQuCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0
OjpUZXN0VHVyblNlcnZlcj4+IHR1cm5fc2VydmVyc187CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxjcmlja2V0OjpUZXN0VHVybkN1c3RvbWl6ZXI+PiB0dXJuX2N1c3RvbWl6ZXJzXzsK
KyAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydFBhaXIgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0c187
CiAgIHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbldyYXBwZXI+IGNhbGxlcl87CiAgIHN0
ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbldyYXBwZXI+IGNhbGxlZV87CiB9OwpAQCAtMTgw
NSwyNiArMTg2MSwyNiBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QsCiAK
ICAgYXV0byBjYWxsZXJfcmVtb3RlX2NlcnQgPSBHZXRSZW1vdGVBdWRpb1NTTENlcnRpZmljYXRl
KGNhbGxlcigpKTsKICAgQVNTRVJUX1RSVUUoY2FsbGVyX3JlbW90ZV9jZXJ0KTsKLSAgRVhQRUNU
X0VRKGNhbGxlZV9jZXJ0LT5zc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpLAorICBFWFBF
Q1RfRVEoY2FsbGVlX2NlcnQtPkdldFNTTENlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwKICAg
ICAgICAgICAgIGNhbGxlcl9yZW1vdGVfY2VydC0+VG9QRU1TdHJpbmcoKSk7CiAKICAgYXV0byBj
YWxsZWVfcmVtb3RlX2NlcnQgPSBHZXRSZW1vdGVBdWRpb1NTTENlcnRpZmljYXRlKGNhbGxlZSgp
KTsKICAgQVNTRVJUX1RSVUUoY2FsbGVlX3JlbW90ZV9jZXJ0KTsKLSAgRVhQRUNUX0VRKGNhbGxl
cl9jZXJ0LT5zc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpLAorICBFWFBFQ1RfRVEoY2Fs
bGVyX2NlcnQtPkdldFNTTENlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwKICAgICAgICAgICAg
IGNhbGxlZV9yZW1vdGVfY2VydC0+VG9QRU1TdHJpbmcoKSk7CiAKICAgYXV0byBjYWxsZXJfcmVt
b3RlX2NlcnRfY2hhaW4gPSBHZXRSZW1vdGVBdWRpb1NTTENlcnRDaGFpbihjYWxsZXIoKSk7CiAg
IEFTU0VSVF9UUlVFKGNhbGxlcl9yZW1vdGVfY2VydF9jaGFpbik7CiAgIEFTU0VSVF9FUSgxVSwg
Y2FsbGVyX3JlbW90ZV9jZXJ0X2NoYWluLT5HZXRTaXplKCkpOwogICBhdXRvIHJlbW90ZV9jZXJ0
ID0gJmNhbGxlcl9yZW1vdGVfY2VydF9jaGFpbi0+R2V0KDApOwotICBFWFBFQ1RfRVEoY2FsbGVl
X2NlcnQtPnNzbF9jZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCksCisgIEVYUEVDVF9FUShjYWxs
ZWVfY2VydC0+R2V0U1NMQ2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpLAogICAgICAgICAgICAg
cmVtb3RlX2NlcnQtPlRvUEVNU3RyaW5nKCkpOwogCiAgIGF1dG8gY2FsbGVlX3JlbW90ZV9jZXJ0
X2NoYWluID0gR2V0UmVtb3RlQXVkaW9TU0xDZXJ0Q2hhaW4oY2FsbGVlKCkpOwogICBBU1NFUlRf
VFJVRShjYWxsZWVfcmVtb3RlX2NlcnRfY2hhaW4pOwogICBBU1NFUlRfRVEoMVUsIGNhbGxlZV9y
ZW1vdGVfY2VydF9jaGFpbi0+R2V0U2l6ZSgpKTsKICAgcmVtb3RlX2NlcnQgPSAmY2FsbGVlX3Jl
bW90ZV9jZXJ0X2NoYWluLT5HZXQoMCk7Ci0gIEVYUEVDVF9FUShjYWxsZXJfY2VydC0+c3NsX2Nl
cnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwKKyAgRVhQRUNUX0VRKGNhbGxlcl9jZXJ0LT5HZXRT
U0xDZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCksCiAgICAgICAgICAgICByZW1vdGVfY2VydC0+
VG9QRU1TdHJpbmcoKSk7CiB9CiAKQEAgLTI4NDIsOSArMjg5OCwxMCBAQCBURVNUX1AoUGVlckNv
bm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QsIENhbGxlckR0bHMxMFRvQ2FsbGVlRHRsczEyKSB7CiBU
RVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QsCiAgICAgICAgQWVzMTI4U2hhMV8z
Ml9DaXBoZXJOb3RVc2VkV2hlbk9ubHlDYWxsZXJTdXBwb3J0ZWQpIHsKICAgUGVlckNvbm5lY3Rp
b25GYWN0b3J5OjpPcHRpb25zIGNhbGxlcl9vcHRpb25zOwotICBjYWxsZXJfb3B0aW9ucy5jcnlw
dG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9IHRydWU7Cisg
IGNhbGxlcl9vcHRpb25zLmNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMy
X2NyeXB0b19jaXBoZXIgPSB0cnVlOwogICBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMg
Y2FsbGVlX29wdGlvbnM7Ci0gIGNhbGxlZV9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9h
ZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gZmFsc2U7CisgIGNhbGxlZV9vcHRpb25zLmNy
eXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPQor
ICAgICAgZmFsc2U7CiAgIGludCBleHBlY3RlZF9jaXBoZXJfc3VpdGUgPSBydGM6OlNSVFBfQUVT
MTI4X0NNX1NIQTFfODA7CiAgIFRlc3ROZWdvdGlhdGVkQ2lwaGVyU3VpdGUoY2FsbGVyX29wdGlv
bnMsIGNhbGxlZV9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2NpcGhlcl9zdWl0ZSk7CkBAIC0yODUzLDkgKzI5MTAsMTAgQEAgVEVTVF9QKFBlZXJDb25uZWN0
aW9uSW50ZWdyYXRpb25UZXN0LAogVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0
LAogICAgICAgIEFlczEyOFNoYTFfMzJfQ2lwaGVyTm90VXNlZFdoZW5Pbmx5Q2FsbGVlU3VwcG9y
dGVkKSB7CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyBjYWxsZXJfb3B0aW9uczsK
LSAgY2FsbGVyX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2FlczEyOF9zaGExXzMyX2Ny
eXB0b19jaXBoZXIgPSBmYWxzZTsKKyAgY2FsbGVyX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuc3J0
cC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9CisgICAgICBmYWxzZTsKICAg
UGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zIGNhbGxlZV9vcHRpb25zOwotICBjYWxsZWVf
b3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhl
ciA9IHRydWU7CisgIGNhbGxlZV9vcHRpb25zLmNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2Fl
czEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPSB0cnVlOwogICBpbnQgZXhwZWN0ZWRfY2lwaGVy
X3N1aXRlID0gcnRjOjpTUlRQX0FFUzEyOF9DTV9TSEExXzgwOwogICBUZXN0TmVnb3RpYXRlZENp
cGhlclN1aXRlKGNhbGxlcl9vcHRpb25zLCBjYWxsZWVfb3B0aW9ucywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3RlZF9jaXBoZXJfc3VpdGUpOwpAQCAtMjg2Myw5ICsyOTIxLDkg
QEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LAogCiBURVNUX1AoUGVlckNv
bm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QsIEFlczEyOFNoYTFfMzJfQ2lwaGVyVXNlZFdoZW5TdXBw
b3J0ZWQpIHsKICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zIGNhbGxlcl9vcHRpb25z
OwotICBjYWxsZXJfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJf
Y3J5cHRvX2NpcGhlciA9IHRydWU7CisgIGNhbGxlcl9vcHRpb25zLmNyeXB0b19vcHRpb25zLnNy
dHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPSB0cnVlOwogICBQZWVyQ29u
bmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMgY2FsbGVlX29wdGlvbnM7Ci0gIGNhbGxlZV9vcHRpb25z
LmNyeXB0b19vcHRpb25zLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gdHJ1
ZTsKKyAgY2FsbGVlX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfYWVzMTI4X3No
YTFfMzJfY3J5cHRvX2NpcGhlciA9IHRydWU7CiAgIGludCBleHBlY3RlZF9jaXBoZXJfc3VpdGUg
PSBydGM6OlNSVFBfQUVTMTI4X0NNX1NIQTFfMzI7CiAgIFRlc3ROZWdvdGlhdGVkQ2lwaGVyU3Vp
dGUoY2FsbGVyX29wdGlvbnMsIGNhbGxlZV9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX2NpcGhlcl9zdWl0ZSk7CkBAIC0yOTE1LDcgKzI5NzMsNyBAQCBURVNU
X1AoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QsCiAvLyB3b3JrcyB3aXRoIGl0LgogVEVT
VF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LCBFbmRUb0VuZENhbGxXaXRoR2NtQ2lw
aGVyKSB7CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyBnY21fb3B0aW9uczsKLSAg
Z2NtX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1
ZTsKKyAgZ2NtX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19z
dWl0ZXMgPSB0cnVlOwogICBBU1NFUlRfVFJVRSgKICAgICAgIENyZWF0ZVBlZXJDb25uZWN0aW9u
V3JhcHBlcnNXaXRoT3B0aW9ucyhnY21fb3B0aW9ucywgZ2NtX29wdGlvbnMpKTsKICAgQ29ubmVj
dEZha2VTaWduYWxpbmcoKTsKQEAgLTMzMjksNiArMzM4NywxNDYgQEAgVEVTVF9QKFBlZXJDb25u
ZWN0aW9uSW50ZWdyYXRpb25UZXN0LAogCiAjZW5kaWYgIC8vIEhBVkVfU0NUUAogCisvLyBUaGlz
IHRlc3Qgc2V0cyB1cCBhIGNhbGwgYmV0d2VlbiB0d28gcGFydGllcyB3aXRoIGEgbWVkaWEgdHJh
bnNwb3J0IGRhdGEKKy8vIGNoYW5uZWwuCitURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlv
blRlc3QsIE1lZGlhVHJhbnNwb3J0RGF0YUNoYW5uZWxFbmRUb0VuZCkgeworICBQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBydGNfY29uZmlnOworICBydGNfY29uZmln
LnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPSB0cnVlOworICBydGNfY29u
ZmlnLmVuYWJsZV9kdGxzX3NydHAgPSBmYWxzZTsgIC8vIFNERVMgaXMgcmVxdWlyZWQgZm9yIG1l
ZGlhIHRyYW5zcG9ydC4KKyAgQVNTRVJUX1RSVUUoQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVy
c1dpdGhDb25maWdBbmRNZWRpYVRyYW5zcG9ydEZhY3RvcnkoCisgICAgICBydGNfY29uZmlnLCBy
dGNfY29uZmlnLCBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPmZpcnN0X2ZhY3RvcnkoKSwK
KyAgICAgIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+c2Vjb25kX2ZhY3RvcnkoKSkpOwor
ICBDb25uZWN0RmFrZVNpZ25hbGluZygpOworCisgIC8vIEV4cGVjdCB0aGF0IGRhdGEgY2hhbm5l
bCBjcmVhdGVkIG9uIGNhbGxlciBzaWRlIHdpbGwgc2hvdyB1cCBmb3IgY2FsbGVlIGFzCisgIC8v
IHdlbGwuCisgIGNhbGxlcigpLT5DcmVhdGVEYXRhQ2hhbm5lbCgpOworICBjYWxsZXIoKS0+Q3Jl
YXRlQW5kU2V0QW5kU2lnbmFsT2ZmZXIoKTsKKyAgQVNTRVJUX1RSVUVfV0FJVChTaWduYWxpbmdT
dGF0ZVN0YWJsZSgpLCBrRGVmYXVsdFRpbWVvdXQpOworCisgIC8vIEVuc3VyZSB0aGF0IHRoZSBt
ZWRpYSB0cmFuc3BvcnQgaXMgcmVhZHkuCisgIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+
U2V0U3RhdGUod2VicnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpOworICBsb29w
YmFja19tZWRpYV90cmFuc3BvcnRzKCktPkZsdXNoQXN5bmNJbnZva2VzKCk7CisKKyAgLy8gQ2Fs
bGVyIGRhdGEgY2hhbm5lbCBzaG91bGQgYWxyZWFkeSBleGlzdCAoaXQgY3JlYXRlZCBvbmUpLiBD
YWxsZWUgZGF0YQorICAvLyBjaGFubmVsIG1heSBub3QgZXhpc3QgeWV0LCBzaW5jZSBuZWdvdGlh
dGlvbiBoYXBwZW5zIGluLWJhbmQsIG5vdCBpbiBTRFAuCisgIEFTU0VSVF9ORShudWxscHRyLCBj
YWxsZXIoKS0+ZGF0YV9jaGFubmVsKCkpOworICBBU1NFUlRfVFJVRV9XQUlUKGNhbGxlZSgpLT5k
YXRhX2NoYW5uZWwoKSAhPSBudWxscHRyLCBrRGVmYXVsdFRpbWVvdXQpOworICBFWFBFQ1RfVFJV
RV9XQUlUKGNhbGxlcigpLT5kYXRhX29ic2VydmVyKCktPklzT3BlbigpLCBrRGVmYXVsdFRpbWVv
dXQpOworICBFWFBFQ1RfVFJVRV9XQUlUKGNhbGxlZSgpLT5kYXRhX29ic2VydmVyKCktPklzT3Bl
bigpLCBrRGVmYXVsdFRpbWVvdXQpOworCisgIC8vIEVuc3VyZSBkYXRhIGNhbiBiZSBzZW50IGlu
IGJvdGggZGlyZWN0aW9ucy4KKyAgc3RkOjpzdHJpbmcgZGF0YSA9ICJoZWxsbyB3b3JsZCI7Cisg
IGNhbGxlcigpLT5kYXRhX2NoYW5uZWwoKS0+U2VuZChEYXRhQnVmZmVyKGRhdGEpKTsKKyAgRVhQ
RUNUX0VRX1dBSVQoZGF0YSwgY2FsbGVlKCktPmRhdGFfb2JzZXJ2ZXIoKS0+bGFzdF9tZXNzYWdl
KCksCisgICAgICAgICAgICAgICAgIGtEZWZhdWx0VGltZW91dCk7CisgIGNhbGxlZSgpLT5kYXRh
X2NoYW5uZWwoKS0+U2VuZChEYXRhQnVmZmVyKGRhdGEpKTsKKyAgRVhQRUNUX0VRX1dBSVQoZGF0
YSwgY2FsbGVyKCktPmRhdGFfb2JzZXJ2ZXIoKS0+bGFzdF9tZXNzYWdlKCksCisgICAgICAgICAg
ICAgICAgIGtEZWZhdWx0VGltZW91dCk7Cit9CisKKy8vIEVuc3VyZSB0aGF0IHdoZW4gdGhlIGNh
bGxlZSBjbG9zZXMgYSBtZWRpYSB0cmFuc3BvcnQgZGF0YSBjaGFubmVsLCB0aGUKKy8vIGNsb3Np
bmcgcHJvY2VkdXJlIHJlc3VsdHMgaW4gdGhlIGRhdGEgY2hhbm5lbCBiZWluZyBjbG9zZWQgZm9y
IHRoZSBjYWxsZXIKKy8vIGFzIHdlbGwuCitURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlv
blRlc3QsIE1lZGlhVHJhbnNwb3J0RGF0YUNoYW5uZWxDYWxsZWVDbG9zZXMpIHsKKyAgUGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gcnRjX2NvbmZpZzsKKyAgcnRjX2Nv
bmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1ZTsKKyAgcnRj
X2NvbmZpZy5lbmFibGVfZHRsc19zcnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJlcXVpcmVkIGZv
ciBtZWRpYSB0cmFuc3BvcnQuCisgIEFTU0VSVF9UUlVFKENyZWF0ZVBlZXJDb25uZWN0aW9uV3Jh
cHBlcnNXaXRoQ29uZmlnQW5kTWVkaWFUcmFuc3BvcnRGYWN0b3J5KAorICAgICAgcnRjX2NvbmZp
ZywgcnRjX2NvbmZpZywgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5maXJzdF9mYWN0b3J5
KCksCisgICAgICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPnNlY29uZF9mYWN0b3J5KCkp
KTsKKyAgQ29ubmVjdEZha2VTaWduYWxpbmcoKTsKKworICAvLyBDcmVhdGUgYSBkYXRhIGNoYW5u
ZWwgb24gdGhlIGNhbGxlciBhbmQgc2lnbmFsIGl0IHRvIHRoZSBjYWxsZWUuCisgIGNhbGxlcigp
LT5DcmVhdGVEYXRhQ2hhbm5lbCgpOworICBjYWxsZXIoKS0+Q3JlYXRlQW5kU2V0QW5kU2lnbmFs
T2ZmZXIoKTsKKyAgQVNTRVJUX1RSVUVfV0FJVChTaWduYWxpbmdTdGF0ZVN0YWJsZSgpLCBrRGVm
YXVsdFRpbWVvdXQpOworCisgIC8vIEVuc3VyZSB0aGF0IHRoZSBtZWRpYSB0cmFuc3BvcnQgaXMg
cmVhZHkuCisgIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+U2V0U3RhdGUod2VicnRjOjpN
ZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpOworICBsb29wYmFja19tZWRpYV90cmFuc3Bv
cnRzKCktPkZsdXNoQXN5bmNJbnZva2VzKCk7CisKKyAgLy8gRGF0YSBjaGFubmVscyBleGlzdCBh
bmQgb3BlbiBvbiBib3RoIGVuZHMgb2YgdGhlIGNvbm5lY3Rpb24uCisgIEFTU0VSVF9ORShudWxs
cHRyLCBjYWxsZXIoKS0+ZGF0YV9jaGFubmVsKCkpOworICBBU1NFUlRfVFJVRV9XQUlUKGNhbGxl
ZSgpLT5kYXRhX2NoYW5uZWwoKSAhPSBudWxscHRyLCBrRGVmYXVsdFRpbWVvdXQpOworICBBU1NF
UlRfVFJVRV9XQUlUKGNhbGxlcigpLT5kYXRhX29ic2VydmVyKCktPklzT3BlbigpLCBrRGVmYXVs
dFRpbWVvdXQpOworICBBU1NFUlRfVFJVRV9XQUlUKGNhbGxlZSgpLT5kYXRhX29ic2VydmVyKCkt
PklzT3BlbigpLCBrRGVmYXVsdFRpbWVvdXQpOworCisgIC8vIENsb3NlIHRoZSBkYXRhIGNoYW5u
ZWwgb24gdGhlIGNhbGxlZSBzaWRlLCBhbmQgd2FpdCBmb3IgaXQgdG8gcmVhY2ggdGhlCisgIC8v
ICJjbG9zZWQiIHN0YXRlIG9uIGJvdGggc2lkZXMuCisgIGNhbGxlZSgpLT5kYXRhX2NoYW5uZWwo
KS0+Q2xvc2UoKTsKKyAgRVhQRUNUX1RSVUVfV0FJVCghY2FsbGVyKCktPmRhdGFfb2JzZXJ2ZXIo
KS0+SXNPcGVuKCksIGtEZWZhdWx0VGltZW91dCk7CisgIEVYUEVDVF9UUlVFX1dBSVQoIWNhbGxl
ZSgpLT5kYXRhX29ic2VydmVyKCktPklzT3BlbigpLCBrRGVmYXVsdFRpbWVvdXQpOworfQorCitU
RVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QsCisgICAgICAgTWVkaWFUcmFuc3Bv
cnREYXRhQ2hhbm5lbENvbmZpZ1NlbnRUb090aGVyU2lkZSkgeworICBQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBydGNfY29uZmlnOworICBydGNfY29uZmlnLnVzZV9t
ZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPSB0cnVlOworICBydGNfY29uZmlnLmVu
YWJsZV9kdGxzX3NydHAgPSBmYWxzZTsgIC8vIFNERVMgaXMgcmVxdWlyZWQgZm9yIG1lZGlhIHRy
YW5zcG9ydC4KKyAgQVNTRVJUX1RSVUUoQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyc1dpdGhD
b25maWdBbmRNZWRpYVRyYW5zcG9ydEZhY3RvcnkoCisgICAgICBydGNfY29uZmlnLCBydGNfY29u
ZmlnLCBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPmZpcnN0X2ZhY3RvcnkoKSwKKyAgICAg
IGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+c2Vjb25kX2ZhY3RvcnkoKSkpOworICBDb25u
ZWN0RmFrZVNpZ25hbGluZygpOworCisgIC8vIENyZWF0ZSBhIGRhdGEgY2hhbm5lbCB3aXRoIGEg
bm9uLWRlZmF1bHQgY29uZmlndXJhdGlvbiBhbmQgc2lnbmFsIGl0IHRvIHRoZQorICAvLyBjYWxs
ZWUuCisgIHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbml0IGluaXQ7CisgIGluaXQuaWQgPSA1MzsKKyAg
aW5pdC5tYXhSZXRyYW5zbWl0cyA9IDUyOworICBjYWxsZXIoKS0+Q3JlYXRlRGF0YUNoYW5uZWwo
ImRhdGEtY2hhbm5lbCIsICZpbml0KTsKKyAgY2FsbGVyKCktPkNyZWF0ZUFuZFNldEFuZFNpZ25h
bE9mZmVyKCk7CisgIEFTU0VSVF9UUlVFX1dBSVQoU2lnbmFsaW5nU3RhdGVTdGFibGUoKSwga0Rl
ZmF1bHRUaW1lb3V0KTsKKworICAvLyBFbnN1cmUgdGhhdCB0aGUgbWVkaWEgdHJhbnNwb3J0IGlz
IHJlYWR5LgorICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPlNldFN0YXRlKHdlYnJ0Yzo6
TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKTsKKyAgbG9vcGJhY2tfbWVkaWFfdHJhbnNw
b3J0cygpLT5GbHVzaEFzeW5jSW52b2tlcygpOworCisgIC8vIEVuc3VyZSB0aGF0IHRoZSBkYXRh
IGNoYW5uZWwgZXhpc3RzIG9uIHRoZSBjYWxsZWUgd2l0aCB0aGUgY29ycmVjdAorICAvLyBjb25m
aWd1cmF0aW9uLgorICBBU1NFUlRfVFJVRV9XQUlUKGNhbGxlZSgpLT5kYXRhX2NoYW5uZWwoKSAh
PSBudWxscHRyLCBrRGVmYXVsdFRpbWVvdXQpOworICBBU1NFUlRfVFJVRV9XQUlUKGNhbGxlZSgp
LT5kYXRhX29ic2VydmVyKCktPklzT3BlbigpLCBrRGVmYXVsdFRpbWVvdXQpOworICBFWFBFQ1Rf
RVEoaW5pdC5pZCwgY2FsbGVlKCktPmRhdGFfY2hhbm5lbCgpLT5pZCgpKTsKKyAgRVhQRUNUX0VR
KCJkYXRhLWNoYW5uZWwiLCBjYWxsZWUoKS0+ZGF0YV9jaGFubmVsKCktPmxhYmVsKCkpOworICBF
WFBFQ1RfRVEoaW5pdC5tYXhSZXRyYW5zbWl0cywgY2FsbGVlKCktPmRhdGFfY2hhbm5lbCgpLT5t
YXhSZXRyYW5zbWl0cygpKTsKKyAgRVhQRUNUX0ZBTFNFKGNhbGxlZSgpLT5kYXRhX2NoYW5uZWwo
KS0+bmVnb3RpYXRlZCgpKTsKK30KKworVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25U
ZXN0LCBNZWRpYVRyYW5zcG9ydEJpZGlyZWN0aW9uYWxBdWRpbykgeworICBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBydGNfY29uZmlnOworICBydGNfY29uZmlnLnVz
ZV9tZWRpYV90cmFuc3BvcnQgPSB0cnVlOworICBydGNfY29uZmlnLmVuYWJsZV9kdGxzX3NydHAg
PSBmYWxzZTsgIC8vIFNERVMgaXMgcmVxdWlyZWQgZm9yIG1lZGlhIHRyYW5zcG9ydC4KKyAgQVNT
RVJUX1RSVUUoQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyc1dpdGhDb25maWdBbmRNZWRpYVRy
YW5zcG9ydEZhY3RvcnkoCisgICAgICBydGNfY29uZmlnLCBydGNfY29uZmlnLCBsb29wYmFja19t
ZWRpYV90cmFuc3BvcnRzKCktPmZpcnN0X2ZhY3RvcnkoKSwKKyAgICAgIGxvb3BiYWNrX21lZGlh
X3RyYW5zcG9ydHMoKS0+c2Vjb25kX2ZhY3RvcnkoKSkpOworICBDb25uZWN0RmFrZVNpZ25hbGlu
ZygpOworCisgIGNhbGxlcigpLT5BZGRBdWRpb1RyYWNrKCk7CisgIGNhbGxlZSgpLT5BZGRBdWRp
b1RyYWNrKCk7CisgIC8vIFN0YXJ0IG9mZmVyL2Fuc3dlciBleGNoYW5nZSBhbmQgd2FpdCBmb3Ig
aXQgdG8gY29tcGxldGUuCisgIGNhbGxlcigpLT5DcmVhdGVBbmRTZXRBbmRTaWduYWxPZmZlcigp
OworICBBU1NFUlRfVFJVRV9XQUlUKFNpZ25hbGluZ1N0YXRlU3RhYmxlKCksIGtEZWZhdWx0VGlt
ZW91dCk7CisKKyAgLy8gRW5zdXJlIHRoYXQgdGhlIG1lZGlhIHRyYW5zcG9ydCBpcyByZWFkeS4K
KyAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5TZXRTdGF0ZSh3ZWJydGM6Ok1lZGlhVHJh
bnNwb3J0U3RhdGU6OmtXcml0YWJsZSk7CisgIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+
Rmx1c2hBc3luY0ludm9rZXMoKTsKKworICBNZWRpYUV4cGVjdGF0aW9ucyBtZWRpYV9leHBlY3Rh
dGlvbnM7CisgIG1lZGlhX2V4cGVjdGF0aW9ucy5FeHBlY3RCaWRpcmVjdGlvbmFsQXVkaW8oKTsK
KyAgQVNTRVJUX1RSVUUoRXhwZWN0TmV3RnJhbWVzKG1lZGlhX2V4cGVjdGF0aW9ucykpOworCisg
IHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRQYWlyOjpTdGF0cyBmaXJzdF9zdGF0cyA9CisgICAgICBs
b29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPkZpcnN0U3RhdHMoKTsKKyAgd2VicnRjOjpNZWRp
YVRyYW5zcG9ydFBhaXI6OlN0YXRzIHNlY29uZF9zdGF0cyA9CisgICAgICBsb29wYmFja19tZWRp
YV90cmFuc3BvcnRzKCktPlNlY29uZFN0YXRzKCk7CisKKyAgRVhQRUNUX0dUKGZpcnN0X3N0YXRz
LnJlY2VpdmVkX2F1ZGlvX2ZyYW1lcywgMCk7CisgIEVYUEVDVF9HRShzZWNvbmRfc3RhdHMuc2Vu
dF9hdWRpb19mcmFtZXMsIGZpcnN0X3N0YXRzLnJlY2VpdmVkX2F1ZGlvX2ZyYW1lcyk7CisKKyAg
RVhQRUNUX0dUKHNlY29uZF9zdGF0cy5yZWNlaXZlZF9hdWRpb19mcmFtZXMsIDApOworICBFWFBF
Q1RfR0UoZmlyc3Rfc3RhdHMuc2VudF9hdWRpb19mcmFtZXMsIHNlY29uZF9zdGF0cy5yZWNlaXZl
ZF9hdWRpb19mcmFtZXMpOworfQorCiAvLyBUZXN0IHRoYXQgdGhlIElDRSBjb25uZWN0aW9uIGFu
ZCBnYXRoZXJpbmcgc3RhdGVzIGV2ZW50dWFsbHkgcmVhY2gKIC8vICJjb21wbGV0ZSIuCiBURVNU
X1AoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QsIEljZVN0YXRlc1JlYWNoQ29tcGxldGlv
bikgewpAQCAtMzU1Nyw2ICszNzU1LDE3IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVncmF0
aW9uSWNlU3RhdGVzVGVzdCwgVmVyaWZ5SWNlU3RhdGVzKSB7CiAgICAgICAgICAgICAgIEVsZW1l
bnRzQXJlKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkNoZWNraW5nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNv
bm5lY3Rpb25Db25uZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkNvbXBsZXRlZCkpOworICAvLyBBZnRlciB0aGUg
aWNlIHRyYW5zcG9ydCB0cmFuc2l0aW9ucyBmcm9tIGNoZWNraW5nIHRvIGNvbm5lY3RlZCB3ZSBy
ZXZlcnQKKyAgLy8gYmFjayB0byBuZXcgYXMgdGhlIHN0YW5kYXJkIHJlcXVpcmVzLCBhcyBhdCB0
aGF0IHBvaW50IHRoZSBEVExTIHRyYW5zcG9ydAorICAvLyBpcyBpbiB0aGUgIm5ldyIgc3RhdGUg
d2hpbGUgbm8gdHJhbnNwb3J0cyBhcmUgImNvbm5lY3RpbmciLCAiY2hlY2tpbmciLAorICAvLyAi
ZmFpbGVkIiBvciBkaXNjb25uZWN0ZWQuIFRoaXMgaXMgcHJldHR5IHVuaW50dWl0aXZlLCBhbmQg
d2UgbWlnaHQgd2FudCB0bworICAvLyBhbWVuZCB0aGUgc3BlYyB0byBoYW5kbGUgdGhpcyBjYXNl
IG1vcmUgZ3JhY2VmdWxseS4KKyAgRVhQRUNUX1RIQVQoCisgICAgICBjYWxsZXIoKS0+cGVlcl9j
b25uZWN0aW9uX3N0YXRlX2hpc3RvcnkoKSwKKyAgICAgIEVsZW1lbnRzQXJlKFBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29ubmVjdGluZywKKyAgICAgICAg
ICAgICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjpr
TmV3LAorICAgICAgICAgICAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25u
ZWN0aW9uU3RhdGU6OmtDb25uZWN0aW5nLAorICAgICAgICAgICAgICAgICAgUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDb25uZWN0ZWQpKTsKICAgRVhQRUNU
X1RIQVQoY2FsbGVyKCktPmljZV9nYXRoZXJpbmdfc3RhdGVfaGlzdG9yeSgpLAogICAgICAgICAg
ICAgICBFbGVtZW50c0FyZShQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUdhdGhlcmluZ0dh
dGhlcmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OmtJY2VHYXRoZXJpbmdDb21wbGV0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fanNlcF91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJj
b25uZWN0aW9uX2pzZXBfdW5pdHRlc3QuY2MKaW5kZXggN2RlMGEzZmYxNGE0YWI5N2E5OGNiYzc2
N2E5Mzk4Y2M3ZmE4ODhiMS4uZmU4NzhiMDVmNzhjMjMxNzcwMDY4YWVhZTJjY2VhNjE5MDM1MjRj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcGVlcmNvbm5lY3Rpb25fanNlcF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9qc2VwX3VuaXR0ZXN0
LmNjCkBAIC05NSw2ICs5NSw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSnNlcFRlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAg
IG9ic2VydmVyLT5TZXRQZWVyQ29ubmVjdGlvbkludGVyZmFjZShwYy5nZXQoKSk7CiAgICAgcmV0
dXJuIGFic2w6Om1ha2VfdW5pcXVlPFBlZXJDb25uZWN0aW9uV3JhcHBlcj4ocGNfZmFjdG9yeSwg
cGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptb3ZlKG9ic2VydmVyKSk7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX21lZGlhX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNv
bm5lY3Rpb25fbWVkaWFfdW5pdHRlc3QuY2MKaW5kZXggNmY0ZmUxZTNmNDg5ZTk4OTJkNjQ5MjE2
OGIzN2ViZGQ1MDMwZTViZi4uNmFmMGM5ODg3ZTZlMmRmZTRhMWMwN2NhZDIyMGViZDEyMGU1NjQ4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcGVlcmNvbm5lY3Rpb25fbWVkaWFfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fbWVkaWFfdW5pdHRl
c3QuY2MKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlIDx0dXBsZT4KIAogI2luY2x1ZGUgImFw
aS9jYWxsL2NhbGxmYWN0b3J5aW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvZmFrZV9t
ZWRpYV90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2
ZW50X2xvZ19mYWN0b3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUu
aCIKICNpbmNsdWRlICJwMnAvYmFzZS9mYWtlcG9ydGFsbG9jYXRvci5oIgpAQCAtNzEsMTMgKzcy
LDI2IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uTWVkaWFCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewogICAgIHJldHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbihSVENDb25maWd1cmF0
aW9uKCkpOwogICB9CiAKKyAgLy8gQ3JlYXRlcyBQZWVyQ29ubmVjdGlvbkZhY3RvcnkgYW5kIFBl
ZXJDb25uZWN0aW9uIGZvciBnaXZlbiBjb25maWd1cmF0aW9uLgorICAvLyBOb3RlIHRoYXQgUGVl
ckNvbm5lY3Rpb25GYWN0b3J5IGlzIGNyZWF0ZWQgd2l0aCBNZWRpYVRyYW5zcG9ydEZhY3Rvcnks
CisgIC8vIGJlY2F1c2Ugc29tZSB0ZXN0cyBwYXNzIGNvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0
ID0gdHJ1ZS4KICAgV3JhcHBlclB0ciBDcmVhdGVQZWVyQ29ubmVjdGlvbihjb25zdCBSVENDb25m
aWd1cmF0aW9uJiBjb25maWcpIHsKICAgICBhdXRvIG1lZGlhX2VuZ2luZSA9IGFic2w6Om1ha2Vf
dW5pcXVlPEZha2VNZWRpYUVuZ2luZT4oKTsKICAgICBhdXRvKiBtZWRpYV9lbmdpbmVfcHRyID0g
bWVkaWFfZW5naW5lLmdldCgpOwotICAgIGF1dG8gcGNfZmFjdG9yeSA9IENyZWF0ZU1vZHVsYXJQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnkoCi0gICAgICAgIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksIHJ0
Yzo6VGhyZWFkOjpDdXJyZW50KCksIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksCi0gICAgICAgIHN0
ZDo6bW92ZShtZWRpYV9lbmdpbmUpLCBDcmVhdGVDYWxsRmFjdG9yeSgpLAotICAgICAgICBDcmVh
dGVSdGNFdmVudExvZ0ZhY3RvcnkoKSk7CisKKyAgICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlEZXBl
bmRlbmNpZXMgZmFjdG9yeV9kZXBlbmRlbmNpZXM7CisKKyAgICBmYWN0b3J5X2RlcGVuZGVuY2ll
cy5uZXR3b3JrX3RocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCk7CisgICAgZmFjdG9yeV9k
ZXBlbmRlbmNpZXMud29ya2VyX3RocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCk7CisgICAg
ZmFjdG9yeV9kZXBlbmRlbmNpZXMuc2lnbmFsaW5nX3RocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDdXJy
ZW50KCk7CisgICAgZmFjdG9yeV9kZXBlbmRlbmNpZXMubWVkaWFfZW5naW5lID0gc3RkOjptb3Zl
KG1lZGlhX2VuZ2luZSk7CisgICAgZmFjdG9yeV9kZXBlbmRlbmNpZXMuY2FsbF9mYWN0b3J5ID0g
Q3JlYXRlQ2FsbEZhY3RvcnkoKTsKKyAgICBmYWN0b3J5X2RlcGVuZGVuY2llcy5ldmVudF9sb2df
ZmFjdG9yeSA9IENyZWF0ZVJ0Y0V2ZW50TG9nRmFjdG9yeSgpOworICAgIGZhY3RvcnlfZGVwZW5k
ZW5jaWVzLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0KKyAgICAgICAgYWJzbDo6bWFrZV91bmlx
dWU8RmFrZU1lZGlhVHJhbnNwb3J0RmFjdG9yeT4oKTsKKworICAgIGF1dG8gcGNfZmFjdG9yeSA9
CisgICAgICAgIENyZWF0ZU1vZHVsYXJQZWVyQ29ubmVjdGlvbkZhY3Rvcnkoc3RkOjptb3ZlKGZh
Y3RvcnlfZGVwZW5kZW5jaWVzKSk7CiAKICAgICBhdXRvIGZha2VfcG9ydF9hbGxvY2F0b3IgPSBh
YnNsOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpGYWtlUG9ydEFsbG9jYXRvcj4oCiAgICAgICAgIHJ0
Yzo6VGhyZWFkOjpDdXJyZW50KCksIG51bGxwdHIpOwpAQCAtOTEsMTIgKzEwNSwyNSBAQCBjbGFz
cyBQZWVyQ29ubmVjdGlvbk1lZGlhQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsK
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIG9ic2VydmVyLT5TZXRQZWVyQ29u
bmVjdGlvbkludGVyZmFjZShwYy5nZXQoKSk7CiAgICAgYXV0byB3cmFwcGVyID0gYWJzbDo6bWFr
ZV91bmlxdWU8UGVlckNvbm5lY3Rpb25XcmFwcGVyRm9yTWVkaWFUZXN0PigKICAgICAgICAgcGNf
ZmFjdG9yeSwgcGMsIHN0ZDo6bW92ZShvYnNlcnZlcikpOwogICAgIHdyYXBwZXItPnNldF9tZWRp
YV9lbmdpbmUobWVkaWFfZW5naW5lX3B0cik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiAgIH0KIAor
ICAvLyBBY2NlcHRzIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyBDcmVhdGVQZWVyQ29ubmVjdGlvbiBh
bmQgYWRkcyBkZWZhdWx0IGF1ZGlvCisgIC8vIHRyYWNrIChidXQgbm8gdmlkZW8pLgorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgV3JhcHBlclB0ciBDcmVhdGVQZWVyQ29ubmVjdGlv
bldpdGhBdWRpbyhBcmdzJiYuLi4gYXJncykgeworICAgIGF1dG8gd3JhcHBlciA9IENyZWF0ZVBl
ZXJDb25uZWN0aW9uKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgaWYgKCF3cmFw
cGVyKSB7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgd3JhcHBlci0+QWRkQXVk
aW9UcmFjaygiYSIpOworICAgIHJldHVybiB3cmFwcGVyOworICB9CisKICAgLy8gQWNjZXB0cyB0
aGUgc2FtZSBhcmd1bWVudHMgYXMgQ3JlYXRlUGVlckNvbm5lY3Rpb24gYW5kIGFkZHMgZGVmYXVs
dCBhdWRpbwogICAvLyBhbmQgdmlkZW8gdHJhY2tzLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KQEAgLTY3Nyw3ICs3MDQsNyBAQCB2b2lkIEFkZENvbWZvcnROb2lzZUNvZGVjc1RvU2Vu
ZChjcmlja2V0OjpGYWtlTWVkaWFFbmdpbmUqIG1lZGlhX2VuZ2luZSkgewogICBjb25zdCBjcmlj
a2V0OjpBdWRpb0NvZGVjIGtDb21mb3J0Tm9pc2VDb2RlYzhrKDEwMiwgIkNOIiwgODAwMCwgMCwg
MSk7CiAgIGNvbnN0IGNyaWNrZXQ6OkF1ZGlvQ29kZWMga0NvbWZvcnROb2lzZUNvZGVjMTZrKDEw
MywgIkNOIiwgMTYwMDAsIDAsIDEpOwogCi0gIGF1dG8gY29kZWNzID0gbWVkaWFfZW5naW5lLT5h
dWRpb19zZW5kX2NvZGVjcygpOworICBhdXRvIGNvZGVjcyA9IG1lZGlhX2VuZ2luZS0+dm9pY2Uo
KS5zZW5kX2NvZGVjcygpOwogICBjb2RlY3MucHVzaF9iYWNrKGtDb21mb3J0Tm9pc2VDb2RlYzhr
KTsKICAgY29kZWNzLnB1c2hfYmFjayhrQ29tZm9ydE5vaXNlQ29kZWMxNmspOwogICBtZWRpYV9l
bmdpbmUtPlNldEF1ZGlvQ29kZWNzKGNvZGVjcyk7CkBAIC0xMDcyLDYgKzEwOTksMTI4IEBAIFRF
U1RfUChQZWVyQ29ubmVjdGlvbk1lZGlhVGVzdCwKICAgICAgICAgICAgIGF1ZGlvX29wdGlvbnMu
Y29tYmluZWRfYXVkaW9fdmlkZW9fYndlKTsKIH0KIAorVEVTVF9QKFBlZXJDb25uZWN0aW9uTWVk
aWFUZXN0LCBNZWRpYVRyYW5zcG9ydFByb3BhZ2F0ZWRUb1ZvaWNlRW5naW5lKSB7CisgIFJUQ0Nv
bmZpZ3VyYXRpb24gY29uZmlnOworCisgIC8vIFNldHVwIFBlZXJDb25uZWN0aW9uIHRvIHVzZSBt
ZWRpYSB0cmFuc3BvcnQuCisgIGNvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0ID0gdHJ1ZTsKKwor
ICAvLyBGb3JjZSBTREVTLgorICBjb25maWcuZW5hYmxlX2R0bHNfc3J0cCA9IGZhbHNlOworCisg
IGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQXVkaW8oY29uZmlnKTsKKyAg
YXV0byBjYWxsZWUgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhBdWRpbyhjb25maWcpOworCisg
IEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVP
ZmZlckFuZFNldEFzTG9jYWwoKSkpOworICBhdXRvIGFuc3dlciA9IGNhbGxlZS0+Q3JlYXRlQW5z
d2VyKCk7CisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0TG9jYWxEZXNjcmlwdGlvbihzdGQ6Om1v
dmUoYW5zd2VyKSkpOworCisgIGF1dG8gY2FsbGVyX3ZvaWNlID0gY2FsbGVyLT5tZWRpYV9lbmdp
bmUoKS0+R2V0Vm9pY2VDaGFubmVsKDApOworICBhdXRvIGNhbGxlZV92b2ljZSA9IGNhbGxlZS0+
bWVkaWFfZW5naW5lKCktPkdldFZvaWNlQ2hhbm5lbCgwKTsKKyAgQVNTRVJUX1RSVUUoY2FsbGVy
X3ZvaWNlKTsKKyAgQVNTRVJUX1RSVUUoY2FsbGVlX3ZvaWNlKTsKKworICAvLyBNYWtlIHN1cmUg
bWVkaWEgdHJhbnNwb3J0IGlzIHByb3BhZ2F0ZWQgdG8gdm9pY2UgY2hhbm5lbC4KKyAgRmFrZU1l
ZGlhVHJhbnNwb3J0KiBjYWxsZXJfdm9pY2VfbWVkaWFfdHJhbnNwb3J0ID0KKyAgICAgIHN0YXRp
Y19jYXN0PEZha2VNZWRpYVRyYW5zcG9ydCo+KGNhbGxlcl92b2ljZS0+bWVkaWFfdHJhbnNwb3J0
KCkpOworICBGYWtlTWVkaWFUcmFuc3BvcnQqIGNhbGxlZV92b2ljZV9tZWRpYV90cmFuc3BvcnQg
PQorICAgICAgc3RhdGljX2Nhc3Q8RmFrZU1lZGlhVHJhbnNwb3J0Kj4oY2FsbGVlX3ZvaWNlLT5t
ZWRpYV90cmFuc3BvcnQoKSk7CisgIEFTU0VSVF9ORShudWxscHRyLCBjYWxsZXJfdm9pY2VfbWVk
aWFfdHJhbnNwb3J0KTsKKyAgQVNTRVJUX05FKG51bGxwdHIsIGNhbGxlZV92b2ljZV9tZWRpYV90
cmFuc3BvcnQpOworCisgIC8vIE1ha2Ugc3VyZSBtZWRpYSB0cmFuc3BvcnQgaXMgY3JlYXRlZCB3
aXRoIGNvcnJlY3QgaXNfY2FsbGVyLgorICBFWFBFQ1RfVFJVRShjYWxsZXJfdm9pY2VfbWVkaWFf
dHJhbnNwb3J0LT5pc19jYWxsZXIoKSk7CisgIEVYUEVDVF9GQUxTRShjYWxsZWVfdm9pY2VfbWVk
aWFfdHJhbnNwb3J0LT5pc19jYWxsZXIoKSk7CisKKyAgLy8gVE9ETyhzdWtoYW5vdik6IFByb3Bh
Z2F0ZSBtZWRpYSB0cmFuc3BvcnQgdG8gdmlkZW8gY2hhbm5lbC4KKyAgLy8gVGhpcyB0ZXN0IGRv
ZXMgTk9UIHNldCB1cCB2aWRlbyBjaGFubmVscywgYmVjYXVzZSBjdXJyZW50bHkgaXQgY2F1c2Vz
CisgIC8vIHVzIHRvIGNyZWF0ZSB0d28gbWVkaWEgdHJhbnNwb3J0cy4KK30KKworVEVTVF9QKFBl
ZXJDb25uZWN0aW9uTWVkaWFUZXN0LCBNZWRpYVRyYW5zcG9ydE9ubHlGb3JEYXRhQ2hhbm5lbHMp
IHsKKyAgUlRDQ29uZmlndXJhdGlvbiBjb25maWc7CisKKyAgLy8gU2V0dXAgUGVlckNvbm5lY3Rp
b24gdG8gdXNlIG1lZGlhIHRyYW5zcG9ydCBmb3IgZGF0YSBjaGFubmVscy4KKyAgY29uZmlnLnVz
ZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPSB0cnVlOworCisgIC8vIEZvcmNl
IFNERVMuCisgIGNvbmZpZy5lbmFibGVfZHRsc19zcnRwID0gZmFsc2U7CisKKyAgYXV0byBjYWxs
ZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhBdWRpbyhjb25maWcpOworICBhdXRvIGNhbGxl
ZSA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlvKGNvbmZpZyk7CisKKyAgQVNTRVJUX1RS
VUUoY2FsbGVlLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9mZmVyQW5kU2V0
QXNMb2NhbCgpKSk7CisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0TG9jYWxEZXNjcmlwdGlvbihj
YWxsZWUtPkNyZWF0ZUFuc3dlcigpKSk7CisKKyAgYXV0byBjYWxsZXJfdm9pY2UgPSBjYWxsZXIt
Pm1lZGlhX2VuZ2luZSgpLT5HZXRWb2ljZUNoYW5uZWwoMCk7CisgIGF1dG8gY2FsbGVlX3ZvaWNl
ID0gY2FsbGVlLT5tZWRpYV9lbmdpbmUoKS0+R2V0Vm9pY2VDaGFubmVsKDApOworICBBU1NFUlRf
VFJVRShjYWxsZXJfdm9pY2UpOworICBBU1NFUlRfVFJVRShjYWxsZWVfdm9pY2UpOworCisgIC8v
IE1ha2Ugc3VyZSBtZWRpYSB0cmFuc3BvcnQgaXMgbm90IHByb3BhZ2F0ZWQgdG8gdm9pY2UgY2hh
bm5lbC4KKyAgRVhQRUNUX0VRKG51bGxwdHIsIGNhbGxlcl92b2ljZS0+bWVkaWFfdHJhbnNwb3J0
KCkpOworICBFWFBFQ1RfRVEobnVsbHB0ciwgY2FsbGVlX3ZvaWNlLT5tZWRpYV90cmFuc3BvcnQo
KSk7Cit9CisKK1RFU1RfUChQZWVyQ29ubmVjdGlvbk1lZGlhVGVzdCwgTWVkaWFUcmFuc3BvcnRG
b3JNZWRpYUFuZERhdGFDaGFubmVscykgeworICBSVENDb25maWd1cmF0aW9uIGNvbmZpZzsKKwor
ICAvLyBTZXR1cCBQZWVyQ29ubmVjdGlvbiB0byB1c2UgbWVkaWEgdHJhbnNwb3J0IGZvciBib3Ro
IG1lZGlhIGFuZCBkYXRhCisgIC8vIGNoYW5uZWxzLgorICBjb25maWcudXNlX21lZGlhX3RyYW5z
cG9ydCA9IHRydWU7CisgIGNvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5u
ZWxzID0gdHJ1ZTsKKworICAvLyBGb3JjZSBTREVTLgorICBjb25maWcuZW5hYmxlX2R0bHNfc3J0
cCA9IGZhbHNlOworCisgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQXVk
aW8oY29uZmlnKTsKKyAgYXV0byBjYWxsZWUgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhBdWRp
byhjb25maWcpOworCisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24o
Y2FsbGVyLT5DcmVhdGVPZmZlckFuZFNldEFzTG9jYWwoKSkpOworICBBU1NFUlRfVFJVRShjYWxs
ZWUtPlNldExvY2FsRGVzY3JpcHRpb24oY2FsbGVlLT5DcmVhdGVBbnN3ZXIoKSkpOworCisgIGF1
dG8gY2FsbGVyX3ZvaWNlID0gY2FsbGVyLT5tZWRpYV9lbmdpbmUoKS0+R2V0Vm9pY2VDaGFubmVs
KDApOworICBhdXRvIGNhbGxlZV92b2ljZSA9IGNhbGxlZS0+bWVkaWFfZW5naW5lKCktPkdldFZv
aWNlQ2hhbm5lbCgwKTsKKyAgQVNTRVJUX1RSVUUoY2FsbGVyX3ZvaWNlKTsKKyAgQVNTRVJUX1RS
VUUoY2FsbGVlX3ZvaWNlKTsKKworICAvLyBNYWtlIHN1cmUgbWVkaWEgdHJhbnNwb3J0IGlzIHBy
b3BhZ2F0ZWQgdG8gdm9pY2UgY2hhbm5lbC4KKyAgRmFrZU1lZGlhVHJhbnNwb3J0KiBjYWxsZXJf
dm9pY2VfbWVkaWFfdHJhbnNwb3J0ID0KKyAgICAgIHN0YXRpY19jYXN0PEZha2VNZWRpYVRyYW5z
cG9ydCo+KGNhbGxlcl92b2ljZS0+bWVkaWFfdHJhbnNwb3J0KCkpOworICBGYWtlTWVkaWFUcmFu
c3BvcnQqIGNhbGxlZV92b2ljZV9tZWRpYV90cmFuc3BvcnQgPQorICAgICAgc3RhdGljX2Nhc3Q8
RmFrZU1lZGlhVHJhbnNwb3J0Kj4oY2FsbGVlX3ZvaWNlLT5tZWRpYV90cmFuc3BvcnQoKSk7Cisg
IEFTU0VSVF9ORShudWxscHRyLCBjYWxsZXJfdm9pY2VfbWVkaWFfdHJhbnNwb3J0KTsKKyAgQVNT
RVJUX05FKG51bGxwdHIsIGNhbGxlZV92b2ljZV9tZWRpYV90cmFuc3BvcnQpOworCisgIC8vIE1h
a2Ugc3VyZSBtZWRpYSB0cmFuc3BvcnQgaXMgY3JlYXRlZCB3aXRoIGNvcnJlY3QgaXNfY2FsbGVy
LgorICBFWFBFQ1RfVFJVRShjYWxsZXJfdm9pY2VfbWVkaWFfdHJhbnNwb3J0LT5pc19jYWxsZXIo
KSk7CisgIEVYUEVDVF9GQUxTRShjYWxsZWVfdm9pY2VfbWVkaWFfdHJhbnNwb3J0LT5pc19jYWxs
ZXIoKSk7Cit9CisKK1RFU1RfUChQZWVyQ29ubmVjdGlvbk1lZGlhVGVzdCwgTWVkaWFUcmFuc3Bv
cnROb3RQcm9wYWdhdGVkVG9Wb2ljZUVuZ2luZSkgeworICBhdXRvIGNhbGxlciA9IENyZWF0ZVBl
ZXJDb25uZWN0aW9uV2l0aEF1ZGlvVmlkZW8oKTsKKyAgYXV0byBjYWxsZWUgPSBDcmVhdGVQZWVy
Q29ubmVjdGlvbldpdGhBdWRpb1ZpZGVvKCk7CisKKyAgQVNTRVJUX1RSVUUoY2FsbGVlLT5TZXRS
ZW1vdGVEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9mZmVyQW5kU2V0QXNMb2NhbCgpKSk7Cisg
IGF1dG8gYW5zd2VyID0gY2FsbGVlLT5DcmVhdGVBbnN3ZXIoKTsKKyAgQVNTRVJUX1RSVUUoY2Fs
bGVlLT5TZXRMb2NhbERlc2NyaXB0aW9uKHN0ZDo6bW92ZShhbnN3ZXIpKSk7CisKKyAgYXV0byBj
YWxsZXJfdm9pY2UgPSBjYWxsZXItPm1lZGlhX2VuZ2luZSgpLT5HZXRWb2ljZUNoYW5uZWwoMCk7
CisgIGF1dG8gY2FsbGVlX3ZvaWNlID0gY2FsbGVlLT5tZWRpYV9lbmdpbmUoKS0+R2V0Vm9pY2VD
aGFubmVsKDApOworICBBU1NFUlRfVFJVRShjYWxsZXJfdm9pY2UpOworICBBU1NFUlRfVFJVRShj
YWxsZWVfdm9pY2UpOworCisgIC8vIFNpbmNlIHdlIGRpZCBub3Qgc2V0dXAgUGVlckNvbm5lY3Rp
b24gdG8gdXNlIG1lZGlhIHRyYW5zcG9ydCwgbWVkaWEKKyAgLy8gdHJhbnNwb3J0IHNob3VsZCBu
b3QgYmUgY3JlYXRlZCAvIHByb3BhZ2F0ZWQgdG8gdGhlIHZvaWNlIGVuZ2luZS4KKyAgQVNTRVJU
X0VRKG51bGxwdHIsIGNhbGxlcl92b2ljZS0+bWVkaWFfdHJhbnNwb3J0KCkpOworICBBU1NFUlRf
RVEobnVsbHB0ciwgY2FsbGVlX3ZvaWNlLT5tZWRpYV90cmFuc3BvcnQoKSk7CisKKyAgYXV0byBj
YWxsZXJfdmlkZW8gPSBjYWxsZXItPm1lZGlhX2VuZ2luZSgpLT5HZXRWaWRlb0NoYW5uZWwoMCk7
CisgIGF1dG8gY2FsbGVlX3ZpZGVvID0gY2FsbGVlLT5tZWRpYV9lbmdpbmUoKS0+R2V0VmlkZW9D
aGFubmVsKDApOworICBBU1NFUlRfRVEobnVsbHB0ciwgY2FsbGVyX3ZpZGVvLT5tZWRpYV90cmFu
c3BvcnQoKSk7CisgIEFTU0VSVF9FUShudWxscHRyLCBjYWxsZWVfdmlkZW8tPm1lZGlhX3RyYW5z
cG9ydCgpKTsKK30KKwogSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUGVlckNvbm5lY3Rpb25NZWRp
YVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBQZWVyQ29ubmVjdGlvbk1lZGlhVGVzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhTZHBTZW1hbnRpY3M6OmtQbGFuQiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Bl
ZXJjb25uZWN0aW9uX3JhbXB1cF90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX3JhbXB1cF90ZXN0cy5jYwppbmRleCA4
NTAyMTJiZjBkY2E0YmQ3NTI4MjgyODg2OTAzMmNlZGE4YzkzMzBkLi43NGY4MDE4ZmIwOWI3ZTBk
YTEwN2Y3ODM0OTQzMjI3MjE0ZTljOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9yYW1wdXBfdGVzdHMuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNv
bm5lY3Rpb25fcmFtcHVwX3Rlc3RzLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJh
cGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgorI2lu
Y2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIgogI2luY2x1ZGUgImFw
aS9zdGF0cy9ydGNzdGF0c19vYmplY3RzLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9i
dWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2Rl
Y3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX3J0cF91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3BlZXJjb25uZWN0aW9uX3J0cF91bml0dGVzdC5jYwppbmRleCBiYzM2NjJjYmJkNDNlMzQxZDFh
YWU4MjNjN2Q4MTY4MzE4YWUyODJlLi43MDk4NDcwYmFhZWVlOThkMGU3NGE2ZmM3MDc0YTg3NjEx
Zjk1OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9ydHBfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fcnRwX3VuaXR0
ZXN0LmNjCkBAIC0xNCw5ICsxNCwxMSBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5o
IgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiYXBpL2pzZXAuaCIKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1pbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKKyNpbmNsdWRl
ICJhcGkvdW1hbWV0cmljcy5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92
aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0
aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAicGMvbWVkaWFzZXNzaW9uLmgi
CkBAIC0xMTYsNiArMTE4LDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25SdHBCYXNlVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBhdXRvIG9ic2VydmVyID0gYWJzbDo6bWFrZV91bmlx
dWU8TW9ja1BlZXJDb25uZWN0aW9uT2JzZXJ2ZXI+KCk7CiAgICAgYXV0byBwYyA9IHBjX2ZhY3Rv
cnlfLT5DcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWcsIG51bGxwdHIsIG51bGxwdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5nZXQo
KSk7CisgICAgRVhQRUNUX1RSVUUocGMuZ2V0KCkpOworICAgIG9ic2VydmVyLT5TZXRQZWVyQ29u
bmVjdGlvbkludGVyZmFjZShwYy5nZXQoKSk7CiAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVl
PFBlZXJDb25uZWN0aW9uV3JhcHBlcj4ocGNfZmFjdG9yeV8sIHBjLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShvYnNlcnZlcikp
OwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9zaWduYWxpbmdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9zaWduYWxp
bmdfdW5pdHRlc3QuY2MKaW5kZXggOTVmNDY0YjJlZTI0OTIyNDA0MjQxOGQ2N2IxOWNmZjliYTg0
YzgyYi4uZjU3ZjgwNmI2NDdmMDEzMzlmYmIwMjUyY2MxMDcxZWEzYTI0MmQ0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5l
Y3Rpb25fc2lnbmFsaW5nX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX3NpZ25hbGluZ191bml0dGVzdC5j
YwpAQCAtMTUsNiArMTUsNyBAQAogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGlu
X2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVp
bHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvY3JlYXRlX3BlZXJj
b25uZWN0aW9uX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25wcm94eS5o
IgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LmgiCkBAIC05MCw2ICs5MSw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uU2lnbmFsaW5n
QmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAorICAgIG9ic2VydmVyLT5TZXRQZWVyQ29ubmVjdGlvbkludGVyZmFjZShwYy5n
ZXQoKSk7CiAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFBlZXJDb25uZWN0aW9uV3JhcHBl
ckZvclNpZ25hbGluZ1Rlc3Q+KAogICAgICAgICBwY19mYWN0b3J5XywgcGMsIHN0ZDo6bW92ZShv
YnNlcnZlcikpOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmVuZHRvZW5kX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25l
bmR0b2VuZF91bml0dGVzdC5jYwppbmRleCA2MGRhMmQyNDJjMWFhMzVkY2YxY2RkZWY0N2ZlNmIz
MjNmZWRlOWZmLi5kZWUyNTNiN2M3MTg3MGE3MjhjMjJiOThhMGY2N2I1MzkwY2M5NGM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVy
Y29ubmVjdGlvbmVuZHRvZW5kX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZW5kdG9lbmRfdW5pdHRlc3Qu
Y2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNs
dWRlICJhcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19kZWNvZGVyX0wxNi5oIgogI2luY2x1ZGUg
ImFwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2VuY29kZXJfTDE2LmgiCiAjaW5jbHVkZSAiYXBp
L2F1ZGlvX2NvZGVjcy9hdWRpb19jb2RlY19wYWlyX2lkLmgiCkBAIC0yMCw3ICsyMSw2IEBACiAj
aW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2lu
Zy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ3V0aWxzLmgiCiAKICNpZmRlZiBXRUJSVENfQU5EUk9JRApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgInBjL3Rlc3QvbW9ja3BlZXJjb25uZWN0aW9ub2JzZXJ2ZXJzLmgiCiAj
aW5jbHVkZSAidGVzdC9tb2NrX2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJ0ZXN0L21vY2tf
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAidGVzdC9tb2NrX2F1ZGlvX2VuY29k
ZXJfZmFjdG9yeS5oIgogCiB1c2luZyB0ZXN0aW5nOjpBdExlYXN0OwogdXNpbmcgdGVzdGluZzo6
SW52b2tlOwpAQCAtMzAwLDcgKzMwMSw3IEBAIENyZWF0ZUZvcndhcmRpbmdNb2NrRGVjb2RlckZh
Y3RvcnkoCiBzdHJ1Y3QgQXVkaW9FbmNvZGVyVW5pY29yblNwYXJrbGVzUmFpbmJvdyB7CiAgIHVz
aW5nIENvbmZpZyA9IHdlYnJ0Yzo6QXVkaW9FbmNvZGVyTDE2OjpDb25maWc7CiAgIHN0YXRpYyBh
YnNsOjpvcHRpb25hbDxDb25maWc+IFNkcFRvQ29uZmlnKHdlYnJ0Yzo6U2RwQXVkaW9Gb3JtYXQg
Zm9ybWF0KSB7Ci0gICAgaWYgKFNUUl9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0cigpLCAiVW5p
Y29yblNwYXJrbGVzUmFpbmJvdyIpID09IDApIHsKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3Jl
Q2FzZShmb3JtYXQubmFtZSwgIlVuaWNvcm5TcGFya2xlc1JhaW5ib3ciKSkgewogICAgICAgY29u
c3Qgd2VicnRjOjpTZHBBdWRpb0Zvcm1hdDo6UGFyYW1ldGVycyBleHBlY3RlZF9wYXJhbXMgPSB7
CiAgICAgICAgICAgeyJudW1faG9ybnMiLCAiMSJ9fTsKICAgICAgIEVYUEVDVF9FUShleHBlY3Rl
ZF9wYXJhbXMsIGZvcm1hdC5wYXJhbWV0ZXJzKTsKQEAgLTMzNyw3ICszMzgsNyBAQCBzdHJ1Y3Qg
QXVkaW9FbmNvZGVyVW5pY29yblNwYXJrbGVzUmFpbmJvdyB7CiBzdHJ1Y3QgQXVkaW9EZWNvZGVy
VW5pY29yblNwYXJrbGVzUmFpbmJvdyB7CiAgIHVzaW5nIENvbmZpZyA9IHdlYnJ0Yzo6QXVkaW9E
ZWNvZGVyTDE2OjpDb25maWc7CiAgIHN0YXRpYyBhYnNsOjpvcHRpb25hbDxDb25maWc+IFNkcFRv
Q29uZmlnKHdlYnJ0Yzo6U2RwQXVkaW9Gb3JtYXQgZm9ybWF0KSB7Ci0gICAgaWYgKFNUUl9DQVNF
X0NNUChmb3JtYXQubmFtZS5jX3N0cigpLCAiVW5pY29yblNwYXJrbGVzUmFpbmJvdyIpID09IDAp
IHsKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIlVuaWNvcm5T
cGFya2xlc1JhaW5ib3ciKSkgewogICAgICAgY29uc3Qgd2VicnRjOjpTZHBBdWRpb0Zvcm1hdDo6
UGFyYW1ldGVycyBleHBlY3RlZF9wYXJhbXMgPSB7CiAgICAgICAgICAgeyJudW1faG9ybnMiLCAi
MSJ9fTsKICAgICAgIEVYUEVDVF9FUShleHBlY3RlZF9wYXJhbXMsIGZvcm1hdC5wYXJhbWV0ZXJz
KTsKQEAgLTQ4MSw3ICs0ODIsNyBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRlc3Qs
IENhbGxXaXRoQ3VzdG9tQ29kZWMpIHsKIC8vIFZlcmlmaWVzIHRoYXQgYSBEYXRhQ2hhbm5lbCBj
cmVhdGVkIGJlZm9yZSB0aGUgbmVnb3RpYXRpb24gY2FuIHRyYW5zaXRpb24gdG8KIC8vICJPUEVO
IiBhbmQgdHJhbnNmZXIgZGF0YS4KIFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwg
Q3JlYXRlRGF0YUNoYW5uZWxCZWZvcmVOZWdvdGlhdGUpIHsKLSAgQ3JlYXRlUGNzKHdlYnJ0Yzo6
Q3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwKKyAgQ3JlYXRlUGNzKHdlYnJ0Yzo6
TW9ja0F1ZGlvRW5jb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpLAogICAgICAgICAg
ICAgd2VicnRjOjpNb2NrQXVkaW9EZWNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCkp
OwogCiAgIHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbml0IGluaXQ7CkBAIC01MDYsNyArNTA3LDcgQEAg
VEVTVF9QKFBlZXJDb25uZWN0aW9uRW5kVG9FbmRUZXN0LCBDcmVhdGVEYXRhQ2hhbm5lbEJlZm9y
ZU5lZ290aWF0ZSkgewogLy8gVmVyaWZpZXMgdGhhdCBhIERhdGFDaGFubmVsIGNyZWF0ZWQgYWZ0
ZXIgdGhlIG5lZ290aWF0aW9uIGNhbiB0cmFuc2l0aW9uIHRvCiAvLyAiT1BFTiIgYW5kIHRyYW5z
ZmVyIGRhdGEuCiBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRlc3QsIENyZWF0ZURhdGFD
aGFubmVsQWZ0ZXJOZWdvdGlhdGUpIHsKLSAgQ3JlYXRlUGNzKHdlYnJ0Yzo6Q3JlYXRlQnVpbHRp
bkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwKKyAgQ3JlYXRlUGNzKHdlYnJ0Yzo6TW9ja0F1ZGlvRW5j
b2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpLAogICAgICAgICAgICAgd2VicnRjOjpN
b2NrQXVkaW9EZWNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCkpOwogCiAgIHdlYnJ0
Yzo6RGF0YUNoYW5uZWxJbml0IGluaXQ7CkBAIC01MzgsNyArNTM5LDcgQEAgVEVTVF9QKFBlZXJD
b25uZWN0aW9uRW5kVG9FbmRUZXN0LCBDcmVhdGVEYXRhQ2hhbm5lbEFmdGVyTmVnb3RpYXRlKSB7
CiAKIC8vIFZlcmlmaWVzIHRoYXQgYSBEYXRhQ2hhbm5lbCBjcmVhdGVkIGNhbiB0cmFuc2ZlciBs
YXJnZSBtZXNzYWdlcy4KIFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwgQ3JlYXRl
RGF0YUNoYW5uZWxMYXJnZVRyYW5zZmVyKSB7Ci0gIENyZWF0ZVBjcyh3ZWJydGM6OkNyZWF0ZUJ1
aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCisgIENyZWF0ZVBjcyh3ZWJydGM6Ok1vY2tBdWRp
b0VuY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSwKICAgICAgICAgICAgIHdlYnJ0
Yzo6TW9ja0F1ZGlvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpKTsKIAogICB3
ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OwpAQCAtNTcyLDcgKzU3Myw3IEBAIFRFU1RfUChQ
ZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwgQ3JlYXRlRGF0YUNoYW5uZWxMYXJnZVRyYW5zZmVy
KSB7CiAKIC8vIFZlcmlmaWVzIHRoYXQgRGF0YUNoYW5uZWwgSURzIGFyZSBldmVuL29kZCBiYXNl
ZCBvbiB0aGUgRFRMUyByb2xlcy4KIFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwg
RGF0YUNoYW5uZWxJZEFzc2lnbm1lbnQpIHsKLSAgQ3JlYXRlUGNzKHdlYnJ0Yzo6Q3JlYXRlQnVp
bHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwKKyAgQ3JlYXRlUGNzKHdlYnJ0Yzo6TW9ja0F1ZGlv
RW5jb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpLAogICAgICAgICAgICAgd2VicnRj
OjpNb2NrQXVkaW9EZWNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCkpOwogCiAgIHdl
YnJ0Yzo6RGF0YUNoYW5uZWxJbml0IGluaXQ7CkBAIC02MDAsNyArNjAxLDcgQEAgVEVTVF9QKFBl
ZXJDb25uZWN0aW9uRW5kVG9FbmRUZXN0LCBEYXRhQ2hhbm5lbElkQXNzaWdubWVudCkgewogLy8g
dGhlcmUgYXJlIG11bHRpcGxlIERhdGFDaGFubmVscy4KIFRFU1RfUChQZWVyQ29ubmVjdGlvbkVu
ZFRvRW5kVGVzdCwKICAgICAgICBNZXNzYWdlVHJhbnNmZXJCZXR3ZWVuVHdvUGFpcnNPZkRhdGFD
aGFubmVscykgewotICBDcmVhdGVQY3Mod2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVy
RmFjdG9yeSgpLAorICBDcmVhdGVQY3Mod2VicnRjOjpNb2NrQXVkaW9FbmNvZGVyRmFjdG9yeTo6
Q3JlYXRlRW1wdHlGYWN0b3J5KCksCiAgICAgICAgICAgICB3ZWJydGM6Ok1vY2tBdWRpb0RlY29k
ZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSk7CiAKICAgd2VicnRjOjpEYXRhQ2hhbm5l
bEluaXQgaW5pdDsKQEAgLTY0MCw3ICs2NDEsNyBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRU
b0VuZFRlc3QsCiAvLyBjaGFubmVsLCBhbmQgdGhlIGNsb3NlZCBjaGFubmVsIHdhcyBpbmNvcnJl
Y3RseSBzdGlsbCBhc3NpZ25lZCB0byB0aGUgSUQuCiBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRU
b0VuZFRlc3QsCiAgICAgICAgRGF0YUNoYW5uZWxGcm9tT3BlbldvcmtzQWZ0ZXJQcmV2aW91c0No
YW5uZWxDbG9zZWQpIHsKLSAgQ3JlYXRlUGNzKHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRW5j
b2RlckZhY3RvcnkoKSwKKyAgQ3JlYXRlUGNzKHdlYnJ0Yzo6TW9ja0F1ZGlvRW5jb2RlckZhY3Rv
cnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpLAogICAgICAgICAgICAgd2VicnRjOjpNb2NrQXVkaW9E
ZWNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCkpOwogCiAgIHdlYnJ0Yzo6RGF0YUNo
YW5uZWxJbml0IGluaXQ7CkBAIC02NzMsNyArNjc0LDcgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9u
RW5kVG9FbmRUZXN0LAogLy8gY2xvc2luZyBiZWZvcmUgY3JlYXRpbmcgdGhlIHNlY29uZCBvbmUu
CiBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRlc3QsCiAgICAgICAgRGF0YUNoYW5uZWxG
cm9tT3BlbldvcmtzV2hpbGVQcmV2aW91c0NoYW5uZWxDbG9zaW5nKSB7Ci0gIENyZWF0ZVBjcyh3
ZWJydGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCisgIENyZWF0ZVBjcyh3
ZWJydGM6Ok1vY2tBdWRpb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSwKICAg
ICAgICAgICAgIHdlYnJ0Yzo6TW9ja0F1ZGlvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFj
dG9yeSgpKTsKIAogICB3ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OwpAQCAtNzA0LDcgKzcw
NSw3IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwKIC8vIHJlZmVyZW5jZSBj
b3VudCksIG5vIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIHdpbGwgb2NjdXIuCiAvLyBTZWU6IGh0
dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD01NjUwNDgK
IFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwgQ2xvc2VEYXRhQ2hhbm5lbFJlbW90
ZWx5V2hpbGVOb3RSZWZlcmVuY2VkKSB7Ci0gIENyZWF0ZVBjcyh3ZWJydGM6OkNyZWF0ZUJ1aWx0
aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCisgIENyZWF0ZVBjcyh3ZWJydGM6Ok1vY2tBdWRpb0Vu
Y29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSwKICAgICAgICAgICAgIHdlYnJ0Yzo6
TW9ja0F1ZGlvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpKTsKIAogICB3ZWJy
dGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25m
YWN0b3J5LmNjCmluZGV4IDUzZjRkYTg1MTZlNDZjOGY1ODg0NjNlZDkyMjJmNTZlZGIyMDIyOTQu
Ljc1MjYxNTA4YjI3MmQyZTdlNjYyYTVmODczZjM1YWY4YmRlNTM4YTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9u
ZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1
ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImFwaS9mZWNfY29udHJvbGxlci5o
IgorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
YXBpL21lZGlhY29uc3RyYWludHNpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJl
YW1wcm94eS5oIgogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbXRyYWNrcHJveHkuaCIKQEAgLTQ2
LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJwYy92aWRlb2NhcHR1cmVydHJhY2tzb3VyY2UuaCIKICNp
bmNsdWRlICJwYy92aWRlb3RyYWNrLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyX2V4cGVyaW1lbnQuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAt
MTg3LDcgKzE4OSw5IEBAIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6UGVlckNvbm5lY3Rpb25GYWN0
b3J5KAogICAgICAgICAgIHN0ZDo6bW92ZShkZXBlbmRlbmNpZXMuY2FsbF9mYWN0b3J5KSwKICAg
ICAgICAgICBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzLmV2ZW50X2xvZ19mYWN0b3J5KSwKICAgICAg
ICAgICBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzLmZlY19jb250cm9sbGVyX2ZhY3RvcnkpLAotICAg
ICAgICAgIHN0ZDo6bW92ZShkZXBlbmRlbmNpZXMubmV0d29ya19jb250cm9sbGVyX2ZhY3Rvcnkp
KSB7fQorICAgICAgICAgIHN0ZDo6bW92ZShkZXBlbmRlbmNpZXMubmV0d29ya19jb250cm9sbGVy
X2ZhY3RvcnkpKSB7CisgIG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5XyA9IHN0ZDo6bW92ZShkZXBl
bmRlbmNpZXMubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpOworfQogCiBQZWVyQ29ubmVjdGlvbkZh
Y3Rvcnk6On5QZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSB7CiAgIFJUQ19EQ0hFQ0soc2lnbmFsaW5n
X3RocmVhZF8tPklzQ3VycmVudCgpKTsKQEAgLTM1Niw5ICszNjAsMTIgQEAgUGVlckNvbm5lY3Rp
b25GYWN0b3J5OjpDcmVhdGVQZWVyQ29ubmVjdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29ya190aHJlYWRfKTsKICAgfQog
ICBpZiAoIWRlcGVuZGVuY2llcy5hbGxvY2F0b3IpIHsKLSAgICBkZXBlbmRlbmNpZXMuYWxsb2Nh
dG9yLnJlc2V0KG5ldyBjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3IoCi0gICAgICAgIGRlZmF1
bHRfbmV0d29ya19tYW5hZ2VyXy5nZXQoKSwgZGVmYXVsdF9zb2NrZXRfZmFjdG9yeV8uZ2V0KCks
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24udHVybl9jdXN0b21pemVyKSk7CisgICAgbmV0d29ya190
aHJlYWRfLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgW3RoaXMsICZjb25maWd1cmF0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVw
ZW5kZW5jaWVzXSgpIHsKKyAgICAgIGRlcGVuZGVuY2llcy5hbGxvY2F0b3IgPSBhYnNsOjptYWtl
X3VuaXF1ZTxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KAorICAgICAgICAgIGRlZmF1bHRf
bmV0d29ya19tYW5hZ2VyXy5nZXQoKSwgZGVmYXVsdF9zb2NrZXRfZmFjdG9yeV8uZ2V0KCksCisg
ICAgICAgICAgY29uZmlndXJhdGlvbi50dXJuX2N1c3RvbWl6ZXIpOworICAgIH0pOwogICB9CiAK
ICAgLy8gVE9ETyh6c3RlaW4pOiBPbmNlIGNocm9taXVtIGluamVjdHMgaXRzIG93biBBc3luY1Jl
c29sdmVyRmFjdG9yeSwgc2V0CkBAIC00NDIsNyArNDQ5LDEwIEBAIHJ0Yzo6VGhyZWFkKiBQZWVy
Q29ubmVjdGlvbkZhY3Rvcnk6Om5ldHdvcmtfdGhyZWFkKCkgewogCiBzdGQ6OnVuaXF1ZV9wdHI8
UnRjRXZlbnRMb2c+IFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6Q3JlYXRlUnRjRXZlbnRMb2dfdygp
IHsKICAgUlRDX0RDSEVDS19SVU5fT04od29ya2VyX3RocmVhZF8pOwotICBjb25zdCBhdXRvIGVu
Y29kaW5nX3R5cGUgPSBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpMZWdhY3k7CisKKyAgYXV0
byBlbmNvZGluZ190eXBlID0gUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TGVnYWN5OworICBp
ZiAoZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVJ0Y0V2ZW50TG9nTmV3Rm9ybWF0Iikp
CisgICAgZW5jb2RpbmdfdHlwZSA9IFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6Ok5ld0Zvcm1h
dDsKICAgcmV0dXJuIGV2ZW50X2xvZ19mYWN0b3J5XwogICAgICAgICAgICAgID8gZXZlbnRfbG9n
X2ZhY3RvcnlfLT5DcmVhdGVSdGNFdmVudExvZyhlbmNvZGluZ190eXBlKQogICAgICAgICAgICAg
IDogYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dOdWxsSW1wbD4oKTsKQEAgLTQ2MCw3ICs0
NzAsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbD4gUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpDcmVh
dGVDYWxsX3coCiAgIGlmICghY2hhbm5lbF9tYW5hZ2VyXy0+bWVkaWFfZW5naW5lKCkgfHwgIWNh
bGxfZmFjdG9yeV8pIHsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQotICBjYWxsX2NvbmZpZy5h
dWRpb19zdGF0ZSA9IGNoYW5uZWxfbWFuYWdlcl8tPm1lZGlhX2VuZ2luZSgpLT5HZXRBdWRpb1N0
YXRlKCk7CisgIGNhbGxfY29uZmlnLmF1ZGlvX3N0YXRlID0KKyAgICAgIGNoYW5uZWxfbWFuYWdl
cl8tPm1lZGlhX2VuZ2luZSgpLT52b2ljZSgpLkdldEF1ZGlvU3RhdGUoKTsKICAgY2FsbF9jb25m
aWcuYml0cmF0ZV9jb25maWcubWluX2JpdHJhdGVfYnBzID0ga01pbkJhbmR3aWR0aEJwczsKICAg
Y2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMgPSBrU3RhcnRCYW5k
d2lkdGhCcHM7CiAgIGNhbGxfY29uZmlnLmJpdHJhdGVfY29uZmlnLm1heF9iaXRyYXRlX2JwcyA9
IGtNYXhCYW5kd2lkdGhCcHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5o
CmluZGV4IGYzNmE0ZTBjMDQ0YmM0NDViYjY4ZWNjOTg4NDc3NDkxZjM3MDUyYjEuLjFjMWVhOTRm
ZTI4YTczYWFjY2I2MjQ3MWVhZTc5YmMwZDU0MzdiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJj
b25uZWN0aW9uZmFjdG9yeS5oCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
YXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibWVkaWEvc2N0cC9zY3Rw
dHJhbnNwb3J0aW50ZXJuYWwuaCIKQEAgLTk2LDYgKzk3LDEwIEBAIGNsYXNzIFBlZXJDb25uZWN0
aW9uRmFjdG9yeSA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UgewogICB2
aXJ0dWFsIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCgpOwogICBjb25zdCBPcHRpb25zJiBv
cHRpb25zKCkgY29uc3QgeyByZXR1cm4gb3B0aW9uc187IH0KIAorICBNZWRpYVRyYW5zcG9ydEZh
Y3RvcnkqIG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KCkgeworICAgIHJldHVybiBtZWRpYV90cmFu
c3BvcnRfZmFjdG9yeV8uZ2V0KCk7CisgIH0KKwogIHByb3RlY3RlZDoKICAgUGVlckNvbm5lY3Rp
b25GYWN0b3J5KAogICAgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLApAQCAtMTQ4LDYg
KzE1Myw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uRmFjdG9yeSA6IHB1YmxpYyBQZWVyQ29ubmVj
dGlvbkZhY3RvcnlJbnRlcmZhY2UgewogICAgICAgaW5qZWN0ZWRfbmV0d29ya19jb250cm9sbGVy
X2ZhY3RvcnlfOwogICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5SW50
ZXJmYWNlPgogICAgICAgYmJyX25ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5XzsKKyAgc3RkOjp1
bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnlf
OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5X3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cGVlcmNvbm5lY3Rpb25mYWN0b3J5X3VuaXR0ZXN0LmNjCmluZGV4IDg0YzgyOGYwOTYxMDQyYTVk
NTFjYmNmMTJmNjA4MWI3NjQ2MmU5M2EuLjI0NDQxNDMyZDdhMzhiODg0MDk3MTM0MDZhYTM5ZmEx
M2E1NTIwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeV91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3Rv
cnlfdW5pdHRlc3QuY2MKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19j
b2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBp
L2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL21lZGlhc3Ry
ZWFtaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVv
X2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92
aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNv
bm5lY3Rpb25pbnRlcmZhY2VfdW5pdHRlc3QuY2MKaW5kZXggNzE5ZmRiZGQ3ZjQxY2M4MGQ4YmIz
YjgwODIxOWQ2OWQzYTBhNTUzNi4uZGQ1ZDBkMTZhOTE5ODZiMGVjNDVmMjRiN2RmMDMwZTExZWE0
MGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2VfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25pbnRlcmZh
Y2VfdW5pdHRlc3QuY2MKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9t
ZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2Vu
Y29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFj
dG9yeS5oIgogI2luY2x1ZGUgImFwaS9qc2Vwc2Vzc2lvbmRlc2NyaXB0aW9uLmgiCiAjaW5jbHVk
ZSAiYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0
aW9uaW50ZXJmYWNlLmgiCkBAIC0xMzk3LDYgKzEzOTgsOCBAQCBURVNUX1AoUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2VUZXN0LAogICBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U+IHBjKAogICAgICAgcGNfZmFjdG9yeS0+Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmln
LCBzdGQ6Om1vdmUocG9ydF9hbGxvY2F0b3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwgJm9ic2VydmVyXykpOworICBFWFBFQ1RfVFJVRShwYy5nZXQo
KSk7CisgIG9ic2VydmVyXy5TZXRQZWVyQ29ubmVjdGlvbkludGVyZmFjZShwYy5nZXQoKSk7CiAK
ICAgLy8gTm93IHZhbGlkYXRlIHRoYXQgdGhlIGNvbmZpZyBmaWVsZHMgc2V0IGFib3ZlIHdlcmUg
YXBwbGllZCB0byB0aGUKICAgLy8gUG9ydEFsbG9jYXRvciwgYXMgZmxhZ3Mgb3Igb3RoZXJ3aXNl
LgpAQCAtMTQyNCwxNSArMTQyNywyMiBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2VU
ZXN0LCBHZXRDb25maWd1cmF0aW9uQWZ0ZXJDcmVhdGVQZWVyQ29ubmVjdGlvbikgewogLy8gQ2hl
Y2sgdGhhdCBHZXRDb25maWd1cmF0aW9uIHJldHVybnMgdGhlIGxhc3QgY29uZmlndXJhdGlvbiBw
YXNzZWQgaW50bwogLy8gU2V0Q29uZmlndXJhdGlvbi4KIFRFU1RfUChQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZVRlc3QsIEdldENvbmZpZ3VyYXRpb25BZnRlclNldENvbmZpZ3VyYXRpb24pIHsKLSAg
Q3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKyAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0Nv
bmZpZ3VyYXRpb24gc3RhcnRpbmdfY29uZmlnOworICBzdGFydGluZ19jb25maWcuYnVuZGxlX3Bv
bGljeSA9CisgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uOjprQnVuZGxlUG9saWN5TWF4QnVu
ZGxlOworICBDcmVhdGVQZWVyQ29ubmVjdGlvbihzdGFydGluZ19jb25maWcpOwogCiAgIFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uIGNvbmZpZyA9IHBjXy0+R2V0Q29u
ZmlndXJhdGlvbigpOwogICBjb25maWcudHlwZSA9IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpr
UmVsYXk7CisgIGNvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0ID0gdHJ1ZTsKKyAgY29uZmlnLnVz
ZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPSB0cnVlOwogICBFWFBFQ1RfVFJV
RShwY18tPlNldENvbmZpZ3VyYXRpb24oY29uZmlnKSk7CiAKICAgUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gcmV0dXJuZWRfY29uZmlnID0KICAgICAgIHBjXy0+R2V0
Q29uZmlndXJhdGlvbigpOwogICBFWFBFQ1RfRVEoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtS
ZWxheSwgcmV0dXJuZWRfY29uZmlnLnR5cGUpOworICBFWFBFQ1RfVFJVRShyZXR1cm5lZF9jb25m
aWcudXNlX21lZGlhX3RyYW5zcG9ydCk7CisgIEVYUEVDVF9UUlVFKHJldHVybmVkX2NvbmZpZy51
c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzKTsKIH0KIAogVEVTVF9QKFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlVGVzdCwgU2V0Q29uZmlndXJhdGlvbkZhaWxzQWZ0ZXJDbG9zZSkg
ewpAQCAtMzkzOCw2ICszOTQ4LDIxIEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVyZmFjZVRl
c3QsCiAgIEVYUEVDVF9GQUxTRShEb1NldExvY2FsRGVzY3JpcHRpb24oc3RkOjptb3ZlKG9mZmVy
KSkpOwogfQogCitURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2VUZXN0LCBFeHRtYXBBbGxv
d01peGVkSXNDb25maWd1cmFibGUpIHsKKyAgUlRDQ29uZmlndXJhdGlvbiBjb25maWc7CisgIC8v
IERlZmF1bHQgYmVoYXZpb3IgaXMgZmFsc2UuCisgIENyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZp
Zyk7CisgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+IG9mZmVy
OworICBBU1NFUlRfVFJVRShEb0NyZWF0ZU9mZmVyKCZvZmZlciwgbnVsbHB0cikpOworICBFWFBF
Q1RfRkFMU0Uob2ZmZXItPmRlc2NyaXB0aW9uKCktPmV4dG1hcF9hbGxvd19taXhlZCgpKTsKKyAg
Ly8gUG9zc2libGUgdG8gc2V0IHRvIHRydWUuCisgIGNvbmZpZy5vZmZlcl9leHRtYXBfYWxsb3df
bWl4ZWQgPSB0cnVlOworICBDcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWcpOworICBvZmZlci5y
ZWxlYXNlKCk7CisgIEFTU0VSVF9UUlVFKERvQ3JlYXRlT2ZmZXIoJm9mZmVyLCBudWxscHRyKSk7
CisgIEVYUEVDVF9UUlVFKG9mZmVyLT5kZXNjcmlwdGlvbigpLT5leHRtYXBfYWxsb3dfbWl4ZWQo
KSk7Cit9CisKIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
VGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlVGVz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhTZHBTZW1hbnRpY3M6OmtQbGFuQiwK
QEAgLTM5NTQsNiArMzk3OSw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uTWVkaWFDb25maWdUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29u
bmVjdGlvbkludGVyZmFjZT4gcGMoCiAgICAgICAgIHBjZl8tPkNyZWF0ZVBlZXJDb25uZWN0aW9u
KGNvbmZpZywgbnVsbHB0ciwgbnVsbHB0ciwgJm9ic2VydmVyXykpOwogICAgIEVYUEVDVF9UUlVF
KHBjLmdldCgpKTsKKyAgICBvYnNlcnZlcl8uU2V0UGVlckNvbm5lY3Rpb25JbnRlcmZhY2UocGMu
Z2V0KCkpOwogICAgIHJldHVybiBwYy0+R2V0Q29uZmlndXJhdGlvbigpLm1lZGlhX2NvbmZpZzsK
ICAgfQogCkBAIC0zOTYxLDYgKzM5ODcsMTcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25NZWRpYUNv
bmZpZ1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgIE1vY2tQZWVyQ29ubmVjdGlvbk9i
c2VydmVyIG9ic2VydmVyXzsKIH07CiAKKy8vIFRoaXMgc2FuaXR5IGNoZWNrIHZhbGlkYXRlcyB0
aGUgdGVzdCBpbmZyYXN0cnVjdHVyZSBpdHNlbGYuCitURVNUX0YoUGVlckNvbm5lY3Rpb25NZWRp
YUNvbmZpZ1Rlc3QsIFRlc3RDcmVhdGVBbmRDbG9zZSkgeworICBQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBjb25maWc7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVy
Q29ubmVjdGlvbkludGVyZmFjZT4gcGMoCisgICAgICBwY2ZfLT5DcmVhdGVQZWVyQ29ubmVjdGlv
bihjb25maWcsIG51bGxwdHIsIG51bGxwdHIsICZvYnNlcnZlcl8pKTsKKyAgRVhQRUNUX1RSVUUo
cGMuZ2V0KCkpOworICBvYnNlcnZlcl8uU2V0UGVlckNvbm5lY3Rpb25JbnRlcmZhY2UocGMuZ2V0
KCkpOyAgLy8gUmVxdWlyZWQuCisgIHBjLT5DbG9zZSgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBObyBhYm9ydCAtPiBvay4KKyAgU1VDQ0VFRCgpOworfQorCiAvLyBU
aGlzIHRlc3QgdmVyaWZpZXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIHdpdGggbm8gY29uc3RyYWlu
dHMgYW5kIGEKIC8vIGRlZmF1bHQgUlRDQ29uZmlndXJhdGlvbi4KIFRFU1RfRihQZWVyQ29ubmVj
dGlvbk1lZGlhQ29uZmlnVGVzdCwgVGVzdERlZmF1bHRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNwbXV4ZmlsdGVyX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRj
cG11eGZpbHRlcl91bml0dGVzdC5jYwppbmRleCA1NTVhYjVjNDY4MTA1NGM0MGE3MWUxZGNlNmMz
NGFhOTcwY2UxMjRhLi5hNmFjNDQ3OGZjZDVhZTc1YmE1NzE2YzAzNmY5MDAwM2ZlMDhhYTBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9y
dGNwbXV4ZmlsdGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3BtdXhmaWx0ZXJfdW5pdHRlc3QuY2MKQEAgLTksNyArOSw2
IEBACiAgKi8KIAogI2luY2x1ZGUgInBjL3J0Y3BtdXhmaWx0ZXIuaCIKLSNpbmNsdWRlICJtZWRp
YS9iYXNlL3Rlc3R1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAKIFRFU1Qo
UnRjcE11eEZpbHRlclRlc3QsIElzQWN0aXZlU2VuZGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNzdGF0c19pbnRlZ3JhdGlv
bnRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9y
dGNzdGF0c19pbnRlZ3JhdGlvbnRlc3QuY2MKaW5kZXggM2MwN2UzOGI1YTQ5NWFhOTNlN2RiOWZm
ZDFlZjJmNTU5NDA4M2JhOC4uNDkwODRkZTRkMjA3MTdjMjJkZGM4OTFiN2VhNDYzMjA0Y2I2M2I0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcnRjc3RhdHNfaW50ZWdyYXRpb250ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3N0YXRzX2ludGVncmF0aW9udGVzdC5jYwpAQCAt
NjA0LDExICs2MDQsMTggQEAgY2xhc3MgUlRDU3RhdHNSZXBvcnRWZXJpZmllciB7CiAgICAgICAg
ICAgbWVkaWFfc3RyZWFtX3RyYWNrLmNvbmNlYWxlZF9zYW1wbGVzKTsKICAgICAgIHZlcmlmaWVy
LlRlc3RNZW1iZXJJc05vbk5lZ2F0aXZlPHVpbnQ2NF90PigKICAgICAgICAgICBtZWRpYV9zdHJl
YW1fdHJhY2suY29uY2VhbG1lbnRfZXZlbnRzKTsKKyAgICAgIHZlcmlmaWVyLlRlc3RNZW1iZXJJ
c05vbk5lZ2F0aXZlPHVpbnQ2NF90PigKKyAgICAgICAgICBtZWRpYV9zdHJlYW1fdHJhY2suaml0
dGVyX2J1ZmZlcl9mbHVzaGVzKTsKKyAgICAgIHZlcmlmaWVyLlRlc3RNZW1iZXJJc05vbk5lZ2F0
aXZlPHVpbnQ2NF90PigKKyAgICAgICAgICBtZWRpYV9zdHJlYW1fdHJhY2suZGVsYXllZF9wYWNr
ZXRfb3V0YWdlX3NhbXBsZXMpOwogICAgIH0gZWxzZSB7CiAgICAgICB2ZXJpZmllci5UZXN0TWVt
YmVySXNVbmRlZmluZWQobWVkaWFfc3RyZWFtX3RyYWNrLmppdHRlcl9idWZmZXJfZGVsYXkpOwog
ICAgICAgdmVyaWZpZXIuVGVzdE1lbWJlcklzVW5kZWZpbmVkKG1lZGlhX3N0cmVhbV90cmFjay50
b3RhbF9zYW1wbGVzX3JlY2VpdmVkKTsKICAgICAgIHZlcmlmaWVyLlRlc3RNZW1iZXJJc1VuZGVm
aW5lZChtZWRpYV9zdHJlYW1fdHJhY2suY29uY2VhbGVkX3NhbXBsZXMpOwogICAgICAgdmVyaWZp
ZXIuVGVzdE1lbWJlcklzVW5kZWZpbmVkKG1lZGlhX3N0cmVhbV90cmFjay5jb25jZWFsbWVudF9l
dmVudHMpOworICAgICAgdmVyaWZpZXIuVGVzdE1lbWJlcklzVW5kZWZpbmVkKG1lZGlhX3N0cmVh
bV90cmFjay5qaXR0ZXJfYnVmZmVyX2ZsdXNoZXMpOworICAgICAgdmVyaWZpZXIuVGVzdE1lbWJl
cklzVW5kZWZpbmVkKAorICAgICAgICAgIG1lZGlhX3N0cmVhbV90cmFjay5kZWxheWVkX3BhY2tl
dF9vdXRhZ2Vfc2FtcGxlcyk7CiAgICAgfQogICAgIHJldHVybiB2ZXJpZmllci5FeHBlY3RBbGxN
ZW1iZXJzU3VjY2Vzc2Z1bGx5VGVzdGVkKCk7CiAgIH0KQEAgLTgwNiw3ICs4MTMsMTEgQEAgVEVT
VF9GKFJUQ1N0YXRzSW50ZWdyYXRpb25UZXN0LCBHZXRTdGF0c1dpdGhJbnZhbGlkUmVjZWl2ZXJT
ZWxlY3RvcikgewogICBFWFBFQ1RfRkFMU0UocmVwb3J0LT5zaXplKCkpOwogfQogCi1URVNUX0Yo
UlRDU3RhdHNJbnRlZ3JhdGlvblRlc3QsIEdldHNTdGF0c1doaWxlRGVzdHJveWluZ1BlZXJDb25u
ZWN0aW9ucykgeworLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvMTAwNDEpIEZvciBub3cgdGhpcyBp
cyBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcKKy8vIHRlc3QgR2V0c1N0YXRzV2hpbGVDbG9z
aW5nUGVlckNvbm5lY3Rpb24sIGJlY2F1c2UgcGMoKSBpcyBjbG9zZWQgYnkKKy8vIFBlZXJDb25u
ZWN0aW9uVGVzdFdyYXBwZXIuIFNlZTogYnVncy53ZWJydGMub3JnLzk4NDcKK1RFU1RfRihSVENT
dGF0c0ludGVncmF0aW9uVGVzdCwKKyAgICAgICBESVNBQkxFRF9HZXRTdGF0c1doaWxlRGVzdHJv
eWluZ1BlZXJDb25uZWN0aW9uKSB7CiAgIFN0YXJ0Q2FsbCgpOwogCiAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxSVENTdGF0c09idGFpbmVyPiBzdGF0c19vYnRhaW5lciA9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNzdGF0c2NvbGxlY3Rv
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3N0
YXRzY29sbGVjdG9yLmNjCmluZGV4IGQ4ODM5NDMwZWJlZjg0MjNlMmY5OGY1ODM0NDNjMWU0NWJj
ZjkyZDcuLmQ0OGVjYzAxZjM1OWU1MWI5MDAyNTk4MjhjMDg1YzhiNWUxNjE3ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3N0YXRz
Y29sbGVjdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3J0Y3N0YXRzY29sbGVjdG9yLmNjCkBAIC00NTQsNiArNDU0LDEwIEBAIFByb2R1Y2VN
ZWRpYVN0cmVhbVRyYWNrU3RhdHNGcm9tVm9pY2VSZWNlaXZlckluZm8oCiAgIGF1ZGlvX3RyYWNr
X3N0YXRzLT5jb25jZWFsZWRfc2FtcGxlcyA9IHZvaWNlX3JlY2VpdmVyX2luZm8uY29uY2VhbGVk
X3NhbXBsZXM7CiAgIGF1ZGlvX3RyYWNrX3N0YXRzLT5jb25jZWFsbWVudF9ldmVudHMgPQogICAg
ICAgdm9pY2VfcmVjZWl2ZXJfaW5mby5jb25jZWFsbWVudF9ldmVudHM7CisgIGF1ZGlvX3RyYWNr
X3N0YXRzLT5qaXR0ZXJfYnVmZmVyX2ZsdXNoZXMgPQorICAgICAgdm9pY2VfcmVjZWl2ZXJfaW5m
by5qaXR0ZXJfYnVmZmVyX2ZsdXNoZXM7CisgIGF1ZGlvX3RyYWNrX3N0YXRzLT5kZWxheWVkX3Bh
Y2tldF9vdXRhZ2Vfc2FtcGxlcyA9CisgICAgICB2b2ljZV9yZWNlaXZlcl9pbmZvLmRlbGF5ZWRf
cGFja2V0X291dGFnZV9zYW1wbGVzOwogICByZXR1cm4gYXVkaW9fdHJhY2tfc3RhdHM7CiB9CiAK
QEAgLTEzODgsNyArMTM5Miw3IEBAIFJUQ1N0YXRzQ29sbGVjdG9yOjpQcmVwYXJlVHJhbnNwb3J0
Q2VydGlmaWNhdGVTdGF0c19uKAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxydGM6OlJUQ0NlcnRp
ZmljYXRlPiBsb2NhbF9jZXJ0aWZpY2F0ZTsKICAgICBpZiAocGNfLT5HZXRMb2NhbENlcnRpZmlj
YXRlKHRyYW5zcG9ydF9uYW1lLCAmbG9jYWxfY2VydGlmaWNhdGUpKSB7CiAgICAgICBjZXJ0aWZp
Y2F0ZV9zdGF0c19wYWlyLmxvY2FsID0KLSAgICAgICAgICBsb2NhbF9jZXJ0aWZpY2F0ZS0+c3Ns
X2NlcnRfY2hhaW4oKS5HZXRTdGF0cygpOworICAgICAgICAgIGxvY2FsX2NlcnRpZmljYXRlLT5H
ZXRTU0xDZXJ0aWZpY2F0ZUNoYWluKCkuR2V0U3RhdHMoKTsKICAgICB9CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8cnRjOjpTU0xDZXJ0Q2hhaW4+IHJlbW90ZV9jZXJ0X2NoYWluID0KQEAgLTE0MjYs
NyArMTQzMCw3IEBAIFJUQ1N0YXRzQ29sbGVjdG9yOjpQcmVwYXJlVHJhbnNjZWl2ZXJTdGF0c0lu
Zm9zX3MoKSBjb25zdCB7CiAgICAgc3RhdHMudHJhbnNjZWl2ZXIgPSB0cmFuc2NlaXZlci0+aW50
ZXJuYWwoKTsKICAgICBzdGF0cy5tZWRpYV90eXBlID0gbWVkaWFfdHlwZTsKIAotICAgIGNyaWNr
ZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNoYW5u
ZWwoKTsKKyAgICBjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBjaGFubmVsID0gdHJhbnNjZWl2
ZXItPmludGVybmFsKCktPmNoYW5uZWwoKTsKICAgICBpZiAoIWNoYW5uZWwpIHsKICAgICAgIC8v
IFRoZSByZW1haW5pbmcgZmllbGRzIHJlcXVpcmUgYSBCYXNlQ2hhbm5lbC4KICAgICAgIGNvbnRp
bnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcnRjc3RhdHNjb2xsZWN0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNzdGF0c2NvbGxlY3Rvcl91bml0dGVzdC5jYwpp
bmRleCA3NDA0ZDQ5MmVmMzdkZDFhYWRjYjdmNDIzYmQ3Yjg4NmQ2NWFkY2IzLi5hZGNhOWVmNmM0
NjU3ZWNkZGNmNGY1OGQ3MWUzNWQwNjBjNjM5NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNzdGF0c2NvbGxlY3Rvcl91bml0dGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9y
dGNzdGF0c2NvbGxlY3Rvcl91bml0dGVzdC5jYwpAQCAtMTQzLDEwICsxNDMsMTAgQEAgc3RkOjp1
bmlxdWVfcHRyPENlcnRpZmljYXRlSW5mbz4gQ3JlYXRlRmFrZUNlcnRpZmljYXRlQW5kSW5mb0Zy
b21EZXJzKAogICB9CiAgIC8vIEZpbmdlcnByaW50cyBmb3IgdGhlIHdob2xlIGNlcnRpZmljYXRl
IGNoYWluLCBzdGFydGluZyB3aXRoIGxlYWYKICAgLy8gY2VydGlmaWNhdGUuCi0gIGNvbnN0IHJ0
Yzo6U1NMQ2VydENoYWluJiBjaGFpbiA9IGluZm8tPmNlcnRpZmljYXRlLT5zc2xfY2VydF9jaGFp
bigpOworICBjb25zdCBydGM6OlNTTENlcnRDaGFpbiYgY2hhaW4gPSBpbmZvLT5jZXJ0aWZpY2F0
ZS0+R2V0U1NMQ2VydGlmaWNhdGVDaGFpbigpOwogICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xG
aW5nZXJwcmludD4gZnA7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hhaW4uR2V0U2l6ZSgp
OyBpKyspIHsKLSAgICBmcC5yZXNldChydGM6OlNTTEZpbmdlcnByaW50OjpDcmVhdGUoInNoYS0x
IiwgJmNoYWluLkdldChpKSkpOworICAgIGZwID0gcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRl
KCJzaGEtMSIsIGNoYWluLkdldChpKSk7CiAgICAgRVhQRUNUX1RSVUUoZnApOwogICAgIGluZm8t
PmZpbmdlcnByaW50cy5wdXNoX2JhY2soZnAtPkdldFJmYzQ1NzJGaW5nZXJwcmludCgpKTsKICAg
fQpAQCAtNzA0LDcgKzcwNCw3IEBAIFRFU1RfRihSVENTdGF0c0NvbGxlY3RvclRlc3QsIENvbGxl
Y3RSVENDZXJ0aWZpY2F0ZVN0YXRzU2luZ2xlKSB7CiAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+KHsiKHJlbW90ZSkgc2luZ2xlIGNlcnRpZmljYXRlIn0pKTsKICAgcGNfLT5TZXRS
ZW1vdGVDZXJ0Q2hhaW4oCiAgICAgICBrVHJhbnNwb3J0TmFtZSwKLSAgICAgIHJlbW90ZV9jZXJ0
aW5mby0+Y2VydGlmaWNhdGUtPnNzbF9jZXJ0X2NoYWluKCkuVW5pcXVlQ29weSgpKTsKKyAgICAg
IHJlbW90ZV9jZXJ0aW5mby0+Y2VydGlmaWNhdGUtPkdldFNTTENlcnRpZmljYXRlQ2hhaW4oKS5D
bG9uZSgpKTsKIAogICBydGM6OnNjb3BlZF9yZWZwdHI8Y29uc3QgUlRDU3RhdHNSZXBvcnQ+IHJl
cG9ydCA9IHN0YXRzXy0+R2V0U3RhdHNSZXBvcnQoKTsKIApAQCAtODE4LDcgKzgxOCw3IEBAIFRF
U1RfRihSVENTdGF0c0NvbGxlY3RvclRlc3QsIENvbGxlY3RSVENDZXJ0aWZpY2F0ZVN0YXRzTXVs
dGlwbGUpIHsKICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oeyIocmVtb3RlKSBh
dWRpbyJ9KSk7CiAgIHBjXy0+U2V0UmVtb3RlQ2VydENoYWluKAogICAgICAga0F1ZGlvVHJhbnNw
b3J0LAotICAgICAgYXVkaW9fcmVtb3RlX2NlcnRpbmZvLT5jZXJ0aWZpY2F0ZS0+c3NsX2NlcnRf
Y2hhaW4oKS5VbmlxdWVDb3B5KCkpOworICAgICAgYXVkaW9fcmVtb3RlX2NlcnRpbmZvLT5jZXJ0
aWZpY2F0ZS0+R2V0U1NMQ2VydGlmaWNhdGVDaGFpbigpLkNsb25lKCkpOwogCiAgIHBjXy0+QWRk
VmlkZW9DaGFubmVsKCJ2aWRlbyIsIGtWaWRlb1RyYW5zcG9ydCk7CiAgIHN0ZDo6dW5pcXVlX3B0
cjxDZXJ0aWZpY2F0ZUluZm8+IHZpZGVvX2xvY2FsX2NlcnRpbmZvID0KQEAgLTgzMCw3ICs4MzAs
NyBAQCBURVNUX0YoUlRDU3RhdHNDb2xsZWN0b3JUZXN0LCBDb2xsZWN0UlRDQ2VydGlmaWNhdGVT
dGF0c011bHRpcGxlKSB7CiAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KHsiKHJl
bW90ZSkgdmlkZW8ifSkpOwogICBwY18tPlNldFJlbW90ZUNlcnRDaGFpbigKICAgICAgIGtWaWRl
b1RyYW5zcG9ydCwKLSAgICAgIHZpZGVvX3JlbW90ZV9jZXJ0aW5mby0+Y2VydGlmaWNhdGUtPnNz
bF9jZXJ0X2NoYWluKCkuVW5pcXVlQ29weSgpKTsKKyAgICAgIHZpZGVvX3JlbW90ZV9jZXJ0aW5m
by0+Y2VydGlmaWNhdGUtPkdldFNTTENlcnRpZmljYXRlQ2hhaW4oKS5DbG9uZSgpKTsKIAogICBy
dGM6OnNjb3BlZF9yZWZwdHI8Y29uc3QgUlRDU3RhdHNSZXBvcnQ+IHJlcG9ydCA9IHN0YXRzXy0+
R2V0U3RhdHNSZXBvcnQoKTsKICAgRXhwZWN0UmVwb3J0Q29udGFpbnNDZXJ0aWZpY2F0ZUluZm8o
cmVwb3J0LCAqYXVkaW9fbG9jYWxfY2VydGluZm8pOwpAQCAtODU1LDcgKzg1NSw3IEBAIFRFU1Rf
RihSVENTdGF0c0NvbGxlY3RvclRlc3QsIENvbGxlY3RSVENDZXJ0aWZpY2F0ZVN0YXRzQ2hhaW4p
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihyZW1vdGUp
IGNoYWluIn0pOwogICBwY18tPlNldFJlbW90ZUNlcnRDaGFpbigKICAgICAgIGtUcmFuc3BvcnRO
YW1lLAotICAgICAgcmVtb3RlX2NlcnRpbmZvLT5jZXJ0aWZpY2F0ZS0+c3NsX2NlcnRfY2hhaW4o
KS5VbmlxdWVDb3B5KCkpOworICAgICAgcmVtb3RlX2NlcnRpbmZvLT5jZXJ0aWZpY2F0ZS0+R2V0
U1NMQ2VydGlmaWNhdGVDaGFpbigpLkNsb25lKCkpOwogCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxj
b25zdCBSVENTdGF0c1JlcG9ydD4gcmVwb3J0ID0gc3RhdHNfLT5HZXRTdGF0c1JlcG9ydCgpOwog
ICBFeHBlY3RSZXBvcnRDb250YWluc0NlcnRpZmljYXRlSW5mbyhyZXBvcnQsICpsb2NhbF9jZXJ0
aW5mbyk7CkBAIC0xNDI2LDYgKzE0MjYsOCBAQCBURVNUX0YoUlRDU3RhdHNDb2xsZWN0b3JUZXN0
LAogICB2b2ljZV9yZWNlaXZlcl9pbmZvLmNvbmNlYWxlZF9zYW1wbGVzID0gMTIzOwogICB2b2lj
ZV9yZWNlaXZlcl9pbmZvLmNvbmNlYWxtZW50X2V2ZW50cyA9IDEyOwogICB2b2ljZV9yZWNlaXZl
cl9pbmZvLmppdHRlcl9idWZmZXJfZGVsYXlfc2Vjb25kcyA9IDM0NTY7CisgIHZvaWNlX3JlY2Vp
dmVyX2luZm8uaml0dGVyX2J1ZmZlcl9mbHVzaGVzID0gNzsKKyAgdm9pY2VfcmVjZWl2ZXJfaW5m
by5kZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlcyA9IDE1OwogCiAgIHN0YXRzXy0+Q3JlYXRl
TW9ja1J0cFNlbmRlcnNSZWNlaXZlcnNBbmRDaGFubmVscygKICAgICAgIHt9LCB7c3RkOjptYWtl
X3BhaXIocmVtb3RlX2F1ZGlvX3RyYWNrLmdldCgpLCB2b2ljZV9yZWNlaXZlcl9pbmZvKX0sIHt9
LApAQCAtMTQ1OSw2ICsxNDYxLDggQEAgVEVTVF9GKFJUQ1N0YXRzQ29sbGVjdG9yVGVzdCwKICAg
ZXhwZWN0ZWRfcmVtb3RlX2F1ZGlvX3RyYWNrLmNvbmNlYWxlZF9zYW1wbGVzID0gMTIzOwogICBl
eHBlY3RlZF9yZW1vdGVfYXVkaW9fdHJhY2suY29uY2VhbG1lbnRfZXZlbnRzID0gMTI7CiAgIGV4
cGVjdGVkX3JlbW90ZV9hdWRpb190cmFjay5qaXR0ZXJfYnVmZmVyX2RlbGF5ID0gMzQ1NjsKKyAg
ZXhwZWN0ZWRfcmVtb3RlX2F1ZGlvX3RyYWNrLmppdHRlcl9idWZmZXJfZmx1c2hlcyA9IDc7Cisg
IGV4cGVjdGVkX3JlbW90ZV9hdWRpb190cmFjay5kZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxl
cyA9IDE1OwogICBBU1NFUlRfVFJVRShyZXBvcnQtPkdldChleHBlY3RlZF9yZW1vdGVfYXVkaW9f
dHJhY2suaWQoKSkpOwogICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcmVtb3RlX2F1ZGlvX3RyYWNrLAog
ICAgICAgICAgICAgcmVwb3J0LT5HZXQoZXhwZWN0ZWRfcmVtb3RlX2F1ZGlvX3RyYWNrLmlkKCkp
CkBAIC0xOTU3LDcgKzE5NjEsNyBAQCBURVNUX0YoUlRDU3RhdHNDb2xsZWN0b3JUZXN0LCBDb2xs
ZWN0UlRDVHJhbnNwb3J0U3RhdHMpIHsKICAgICAgICAgICB7IihyZW1vdGUpIGxvY2FsIiwgIihy
ZW1vdGUpIGNoYWluIn0pOwogICBwY18tPlNldFJlbW90ZUNlcnRDaGFpbigKICAgICAgIGtUcmFu
c3BvcnROYW1lLAotICAgICAgcmVtb3RlX2NlcnRpbmZvLT5jZXJ0aWZpY2F0ZS0+c3NsX2NlcnRf
Y2hhaW4oKS5VbmlxdWVDb3B5KCkpOworICAgICAgcmVtb3RlX2NlcnRpbmZvLT5jZXJ0aWZpY2F0
ZS0+R2V0U1NMQ2VydGlmaWNhdGVDaGFpbigpLkNsb25lKCkpOwogCiAgIHJlcG9ydCA9IHN0YXRz
Xy0+R2V0RnJlc2hTdGF0c1JlcG9ydCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRl
cnNjb252ZXJzaW9uLmNjCmluZGV4IGU1MTliOWIwNmRlNmMzM2EwMjZkNDk1OWU5YjczY2U2ZDRl
MmQ3OTAuLjg2NTY4NWQ3M2M0MzI0ZmI4ZjJmNjFmZWEwNjg0N2RiOWM2NTYzMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFt
ZXRlcnNjb252ZXJzaW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNjCkBAIC0zOTYsNiArMzk2LDcg
QEAgUnRwQ2FwYWJpbGl0aWVzIFRvUnRwQ2FwYWJpbGl0aWVzKAogICBib29sIGhhdmVfcmVkID0g
ZmFsc2U7CiAgIGJvb2wgaGF2ZV91bHBmZWMgPSBmYWxzZTsKICAgYm9vbCBoYXZlX2ZsZXhmZWMg
PSBmYWxzZTsKKyAgYm9vbCBoYXZlX3J0eCA9IGZhbHNlOwogICBmb3IgKGNvbnN0IEMmIGNyaWNr
ZXRfY29kZWMgOiBjcmlja2V0X2NvZGVjcykgewogICAgIGlmIChjcmlja2V0X2NvZGVjLm5hbWUg
PT0gY3JpY2tldDo6a1JlZENvZGVjTmFtZSkgewogICAgICAgaGF2ZV9yZWQgPSB0cnVlOwpAQCAt
NDAzLDggKzQwNCwxOSBAQCBSdHBDYXBhYmlsaXRpZXMgVG9SdHBDYXBhYmlsaXRpZXMoCiAgICAg
ICBoYXZlX3VscGZlYyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChjcmlja2V0X2NvZGVjLm5hbWUg
PT0gY3JpY2tldDo6a0ZsZXhmZWNDb2RlY05hbWUpIHsKICAgICAgIGhhdmVfZmxleGZlYyA9IHRy
dWU7CisgICAgfSBlbHNlIGlmIChjcmlja2V0X2NvZGVjLm5hbWUgPT0gY3JpY2tldDo6a1J0eENv
ZGVjTmFtZSkgeworICAgICAgaWYgKGhhdmVfcnR4KSB7CisgICAgICAgIC8vIFRoZXJlIHNob3Vs
ZCBvbmx5IGJlIG9uZSBSVFggY29kZWMgZW50cnkKKyAgICAgICAgY29udGludWU7CisgICAgICB9
CisgICAgICBoYXZlX3J0eCA9IHRydWU7CisgICAgfQorICAgIGF1dG8gY29kZWNfY2FwYWJpbGl0
eSA9IFRvUnRwQ29kZWNDYXBhYmlsaXR5KGNyaWNrZXRfY29kZWMpOworICAgIGlmIChjcmlja2V0
X2NvZGVjLm5hbWUgPT0gY3JpY2tldDo6a1J0eENvZGVjTmFtZSkgeworICAgICAgLy8gUlRYIGNv
ZGVjIHNob3VsZCBub3QgaGF2ZSBhbnkgcGFyYW1ldGVyCisgICAgICBjb2RlY19jYXBhYmlsaXR5
LnBhcmFtZXRlcnMuY2xlYXIoKTsKICAgICB9Ci0gICAgY2FwYWJpbGl0aWVzLmNvZGVjcy5wdXNo
X2JhY2soVG9SdHBDb2RlY0NhcGFiaWxpdHkoY3JpY2tldF9jb2RlYykpOworICAgIGNhcGFiaWxp
dGllcy5jb2RlY3MucHVzaF9iYWNrKGNvZGVjX2NhcGFiaWxpdHkpOwogICB9CiAgIGZvciAoY29u
c3QgUnRwRXh0ZW5zaW9uJiBjcmlja2V0X2V4dGVuc2lvbiA6IGNyaWNrZXRfZXh0ZW5zaW9ucykg
ewogICAgIGNhcGFiaWxpdGllcy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soY3JpY2tl
dF9leHRlbnNpb24udXJpLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb25fdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJhbWV0ZXJz
Y29udmVyc2lvbl91bml0dGVzdC5jYwppbmRleCAyNTdkMjZlYmI1MGMzYjhlNmYyNWM5OTcwOGE2
NjEzN2JmNWMzMGMxLi5mNGYxYjkyNzBjNmM5NmFmZWQ5OTk0NzgwZTk4OTJiMWU3ZDkyZDYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9y
dHBwYXJhbWV0ZXJzY29udmVyc2lvbl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbl91bml0
dGVzdC5jYwpAQCAtNTc0LDExICs1NzQsMjMgQEAgVEVTVChSdHBQYXJhbWV0ZXJzQ29udmVyc2lv
blRlc3QsIFRvUnRwQ2FwYWJpbGl0aWVzKSB7CiAgIGZsZXhmZWMuaWQgPSAxMDI7CiAgIGZsZXhm
ZWMuY2xvY2tyYXRlID0gOTAwMDA7CiAKKyAgY3JpY2tldDo6VmlkZW9Db2RlYyBydHg7CisgIHJ0
eC5uYW1lID0gInJ0eCI7CisgIHJ0eC5pZCA9IDEwNDsKKyAgcnR4LnBhcmFtcy5pbnNlcnQoeyJh
cHQiLCAiMTAxIn0pOworCisgIGNyaWNrZXQ6OlZpZGVvQ29kZWMgcnR4MjsKKyAgcnR4Mi5uYW1l
ID0gInJ0eCI7CisgIHJ0eDIuaWQgPSAxMDU7CisgIHJ0eDIucGFyYW1zLmluc2VydCh7ImFwdCIs
ICIxMDkifSk7CisKICAgUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcyA9IFRvUnRwQ2FwYWJp
bGl0aWVzPGNyaWNrZXQ6OlZpZGVvQ29kZWM+KAotICAgICAge3ZwOCwgdWxwZmVjfSwge3sidXJp
IiwgMX0sIHsidXJpMiIsIDN9fSk7Ci0gIEFTU0VSVF9FUSgydSwgY2FwYWJpbGl0aWVzLmNvZGVj
cy5zaXplKCkpOworICAgICAge3ZwOCwgdWxwZmVjLCBydHgsIHJ0eDJ9LCB7eyJ1cmkiLCAxfSwg
eyJ1cmkyIiwgM319KTsKKyAgQVNTRVJUX0VRKDN1LCBjYXBhYmlsaXRpZXMuY29kZWNzLnNpemUo
KSk7CiAgIEVYUEVDVF9FUSgiVlA4IiwgY2FwYWJpbGl0aWVzLmNvZGVjc1swXS5uYW1lKTsKICAg
RVhQRUNUX0VRKCJ1bHBmZWMiLCBjYXBhYmlsaXRpZXMuY29kZWNzWzFdLm5hbWUpOworICBFWFBF
Q1RfRVEoInJ0eCIsIGNhcGFiaWxpdGllcy5jb2RlY3NbMl0ubmFtZSk7CisgIEVYUEVDVF9FUSgw
dSwgY2FwYWJpbGl0aWVzLmNvZGVjc1syXS5wYXJhbWV0ZXJzLnNpemUoKSk7CiAgIEFTU0VSVF9F
USgydSwgY2FwYWJpbGl0aWVzLmhlYWRlcl9leHRlbnNpb25zLnNpemUoKSk7CiAgIEVYUEVDVF9F
USgidXJpIiwgY2FwYWJpbGl0aWVzLmhlYWRlcl9leHRlbnNpb25zWzBdLnVyaSk7CiAgIEVYUEVD
VF9FUSgxLCBjYXBhYmlsaXRpZXMuaGVhZGVyX2V4dGVuc2lvbnNbMF0ucHJlZmVycmVkX2lkKTsK
QEAgLTU4Nyw4ICs1OTksOCBAQCBURVNUKFJ0cFBhcmFtZXRlcnNDb252ZXJzaW9uVGVzdCwgVG9S
dHBDYXBhYmlsaXRpZXMpIHsKICAgRVhQRUNUX0VRKDB1LCBjYXBhYmlsaXRpZXMuZmVjLnNpemUo
KSk7CiAKICAgY2FwYWJpbGl0aWVzID0gVG9SdHBDYXBhYmlsaXRpZXM8Y3JpY2tldDo6VmlkZW9D
b2RlYz4oCi0gICAgICB7dnA4LCByZWQsIHVscGZlY30sIGNyaWNrZXQ6OlJ0cEhlYWRlckV4dGVu
c2lvbnMoKSk7Ci0gIEVYUEVDVF9FUSgzdSwgY2FwYWJpbGl0aWVzLmNvZGVjcy5zaXplKCkpOwor
ICAgICAge3ZwOCwgcmVkLCB1bHBmZWMsIHJ0eH0sIGNyaWNrZXQ6OlJ0cEhlYWRlckV4dGVuc2lv
bnMoKSk7CisgIEVYUEVDVF9FUSg0dSwgY2FwYWJpbGl0aWVzLmNvZGVjcy5zaXplKCkpOwogICBF
WFBFQ1RfRVEoMnUsIGNhcGFiaWxpdGllcy5mZWMuc2l6ZSgpKTsKICAgRVhQRUNUX05FKGNhcGFi
aWxpdGllcy5mZWMuZW5kKCksCiAgICAgICAgICAgICBzdGQ6OmZpbmQoY2FwYWJpbGl0aWVzLmZl
Yy5iZWdpbigpLCBjYXBhYmlsaXRpZXMuZmVjLmVuZCgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcmVjZWl2ZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHByZWNlaXZlci5jYwpp
bmRleCBkNGExZjYyZjgzYjg0Y2NhNjcwZmFhMGJlNTgyOTFlMGMyYTNiYzRmLi4xOTE2YTczNjcw
MzJjNGJiMWY4MWE2NTEwZDJlZWYxMWM0NWE5Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHByZWNlaXZlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHByZWNlaXZlci5jYwpA
QCAtNTAsOSArNTAsMTAgQEAgdm9pZCBNYXliZUF0dGFjaEZyYW1lRGVjcnlwdG9yVG9NZWRpYUNo
YW5uZWwoCiAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+JiBzc3JjLAogICAgIHJ0
Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IsCi0gICAgY3JpY2tldDo6
TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsKSB7Ci0gIGlmIChtZWRpYV9jaGFubmVsICYmIHNz
cmMuaGFzX3ZhbHVlKCkpIHsKLSAgICByZXR1cm4gd29ya2VyX3RocmVhZC0+SW52b2tlPHZvaWQ+
KFJUQ19GUk9NX0hFUkUsIFsmXSB7CisgICAgY3JpY2tldDo6TWVkaWFDaGFubmVsKiBtZWRpYV9j
aGFubmVsLAorICAgIGJvb2wgc3RvcHBlZCkgeworICBpZiAobWVkaWFfY2hhbm5lbCAmJiBmcmFt
ZV9kZWNyeXB0b3IgJiYgc3NyYy5oYXNfdmFsdWUoKSAmJiAhc3RvcHBlZCkgeworICAgIHdvcmtl
cl90aHJlYWQtPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0gewogICAgICAgbWVkaWFf
Y2hhbm5lbC0+U2V0RnJhbWVEZWNyeXB0b3IoKnNzcmMsIGZyYW1lX2RlY3J5cHRvcik7CiAgICAg
fSk7CiAgIH0KQEAgLTE1Niw5ICsxNTcsMTIgQEAgYm9vbCBBdWRpb1J0cFJlY2VpdmVyOjpTZXRQ
YXJhbWV0ZXJzKGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIHsKIHZvaWQgQXVkaW9S
dHBSZWNlaXZlcjo6U2V0RnJhbWVEZWNyeXB0b3IoCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZy
YW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IpIHsKICAgZnJhbWVfZGVjcnlw
dG9yXyA9IHN0ZDo6bW92ZShmcmFtZV9kZWNyeXB0b3IpOwotICAvLyBBdHRhY2ggdGhlIGZyYW1l
IGRlY3J5cHRvciB0byB0aGUgbWVkaWEgY2hhbm5lbCBpZiBpdCBleGlzdHMuCi0gIE1heWJlQXR0
YWNoRnJhbWVEZWNyeXB0b3JUb01lZGlhQ2hhbm5lbChzc3JjXywgd29ya2VyX3RocmVhZF8sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9kZWNyeXB0b3Jf
LCBtZWRpYV9jaGFubmVsXyk7CisgIC8vIFNwZWNpYWwgQ2FzZTogU2V0IHRoZSBmcmFtZSBkZWNy
eXB0b3IgdG8gYW55IHZhbHVlIG9uIGFueSBleGlzdGluZyBjaGFubmVsLgorICBpZiAobWVkaWFf
Y2hhbm5lbF8gJiYgc3NyY18uaGFzX3ZhbHVlKCkgJiYgIXN0b3BwZWRfKSB7CisgICAgd29ya2Vy
X3RocmVhZF8tPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0geworICAgICAgbWVkaWFf
Y2hhbm5lbF8tPlNldEZyYW1lRGVjcnlwdG9yKCpzc3JjXywgZnJhbWVfZGVjcnlwdG9yXyk7Cisg
ICAgfSk7CisgIH0KIH0KIAogcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJm
YWNlPgpAQCAtMjUyLDggKzI1Niw4IEBAIHZvaWQgQXVkaW9SdHBSZWNlaXZlcjo6UmVjb25maWd1
cmUoKSB7CiAgICAgUlRDX05PVFJFQUNIRUQoKTsKICAgfQogICAvLyBSZWF0dGFjaCB0aGUgZnJh
bWUgZGVjcnlwdG9yIGlmIHdlIHdlcmUgcmVjb25maWd1cmVkLgotICBNYXliZUF0dGFjaEZyYW1l
RGVjcnlwdG9yVG9NZWRpYUNoYW5uZWwoc3NyY18sIHdvcmtlcl90aHJlYWRfLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZGVjcnlwdG9yXywgbWVkaWFf
Y2hhbm5lbF8pOworICBNYXliZUF0dGFjaEZyYW1lRGVjcnlwdG9yVG9NZWRpYUNoYW5uZWwoCisg
ICAgICBzc3JjXywgd29ya2VyX3RocmVhZF8sIGZyYW1lX2RlY3J5cHRvcl8sIG1lZGlhX2NoYW5u
ZWxfLCBzdG9wcGVkXyk7CiB9CiAKIHZvaWQgQXVkaW9SdHBSZWNlaXZlcjo6U2V0T2JzZXJ2ZXIo
UnRwUmVjZWl2ZXJPYnNlcnZlckludGVyZmFjZSogb2JzZXJ2ZXIpIHsKQEAgLTI2NCw5ICsyNjgs
MTAgQEAgdm9pZCBBdWRpb1J0cFJlY2VpdmVyOjpTZXRPYnNlcnZlcihSdHBSZWNlaXZlck9ic2Vy
dmVySW50ZXJmYWNlKiBvYnNlcnZlcikgewogICB9CiB9CiAKLXZvaWQgQXVkaW9SdHBSZWNlaXZl
cjo6U2V0Vm9pY2VNZWRpYUNoYW5uZWwoCi0gICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwq
IHZvaWNlX21lZGlhX2NoYW5uZWwpIHsKLSAgbWVkaWFfY2hhbm5lbF8gPSB2b2ljZV9tZWRpYV9j
aGFubmVsOwordm9pZCBBdWRpb1J0cFJlY2VpdmVyOjpTZXRNZWRpYUNoYW5uZWwoY3JpY2tldDo6
TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsKSB7CisgIFJUQ19EQ0hFQ0sobWVkaWFfY2hhbm5l
bCA9PSBudWxscHRyIHx8CisgICAgICAgICAgICAgbWVkaWFfY2hhbm5lbC0+bWVkaWFfdHlwZSgp
ID09IG1lZGlhX3R5cGUoKSk7CisgIG1lZGlhX2NoYW5uZWxfID0gc3RhdGljX2Nhc3Q8Y3JpY2tl
dDo6Vm9pY2VNZWRpYUNoYW5uZWwqPihtZWRpYV9jaGFubmVsKTsKIH0KIAogdm9pZCBBdWRpb1J0
cFJlY2VpdmVyOjpOb3RpZnlGaXJzdFBhY2tldFJlY2VpdmVkKCkgewpAQCAtMzQ3LDkgKzM1Miwx
MiBAQCBib29sIFZpZGVvUnRwUmVjZWl2ZXI6OlNldFBhcmFtZXRlcnMoY29uc3QgUnRwUGFyYW1l
dGVycyYgcGFyYW1ldGVycykgewogdm9pZCBWaWRlb1J0cFJlY2VpdmVyOjpTZXRGcmFtZURlY3J5
cHRvcigKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZy
YW1lX2RlY3J5cHRvcikgewogICBmcmFtZV9kZWNyeXB0b3JfID0gc3RkOjptb3ZlKGZyYW1lX2Rl
Y3J5cHRvcik7Ci0gIC8vIEF0dGFjaCB0aGUgbmV3IGZyYW1lIGRlY3J5cHRvciB0aGUgbWVkaWEg
Y2hhbm5lbCBpZiBpdCBleGlzdHMgeWV0LgotICBNYXliZUF0dGFjaEZyYW1lRGVjcnlwdG9yVG9N
ZWRpYUNoYW5uZWwoc3NyY18sIHdvcmtlcl90aHJlYWRfLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZGVjcnlwdG9yXywgbWVkaWFfY2hhbm5lbF8pOwor
ICAvLyBTcGVjaWFsIENhc2U6IFNldCB0aGUgZnJhbWUgZGVjcnlwdG9yIHRvIGFueSB2YWx1ZSBv
biBhbnkgZXhpc3RpbmcgY2hhbm5lbC4KKyAgaWYgKG1lZGlhX2NoYW5uZWxfICYmIHNzcmNfLmhh
c192YWx1ZSgpICYmICFzdG9wcGVkXykgeworICAgIHdvcmtlcl90aHJlYWRfLT5JbnZva2U8dm9p
ZD4oUlRDX0ZST01fSEVSRSwgWyZdIHsKKyAgICAgIG1lZGlhX2NoYW5uZWxfLT5TZXRGcmFtZURl
Y3J5cHRvcigqc3NyY18sIGZyYW1lX2RlY3J5cHRvcl8pOworICAgIH0pOworICB9CiB9CiAKIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4KQEAgLTM4Nyw4ICszOTUs
OCBAQCB2b2lkIFZpZGVvUnRwUmVjZWl2ZXI6OlNldHVwTWVkaWFDaGFubmVsKHVpbnQzMl90IHNz
cmMpIHsKICAgc3NyY18gPSBzc3JjOwogICBTZXRTaW5rKHNvdXJjZV8tPnNpbmsoKSk7CiAgIC8v
IEF0dGFjaCBhbnkgZXhpc3RpbmcgZnJhbWUgZGVjcnlwdG9yIHRvIHRoZSBtZWRpYSBjaGFubmVs
LgotICBNYXliZUF0dGFjaEZyYW1lRGVjcnlwdG9yVG9NZWRpYUNoYW5uZWwoc3NyY18sIHdvcmtl
cl90aHJlYWRfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWVfZGVjcnlwdG9yXywgbWVkaWFfY2hhbm5lbF8pOworICBNYXliZUF0dGFjaEZyYW1lRGVjcnlw
dG9yVG9NZWRpYUNoYW5uZWwoCisgICAgICBzc3JjXywgd29ya2VyX3RocmVhZF8sIGZyYW1lX2Rl
Y3J5cHRvcl8sIG1lZGlhX2NoYW5uZWxfLCBzdG9wcGVkXyk7CiB9CiAKIHZvaWQgVmlkZW9SdHBS
ZWNlaXZlcjo6c2V0X3N0cmVhbV9pZHMoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHN0cmVhbV9p
ZHMpIHsKQEAgLTQzNiw5ICs0NDQsMTAgQEAgdm9pZCBWaWRlb1J0cFJlY2VpdmVyOjpTZXRPYnNl
cnZlcihSdHBSZWNlaXZlck9ic2VydmVySW50ZXJmYWNlKiBvYnNlcnZlcikgewogICB9CiB9CiAK
LXZvaWQgVmlkZW9SdHBSZWNlaXZlcjo6U2V0VmlkZW9NZWRpYUNoYW5uZWwoCi0gICAgY3JpY2tl
dDo6VmlkZW9NZWRpYUNoYW5uZWwqIHZpZGVvX21lZGlhX2NoYW5uZWwpIHsKLSAgbWVkaWFfY2hh
bm5lbF8gPSB2aWRlb19tZWRpYV9jaGFubmVsOwordm9pZCBWaWRlb1J0cFJlY2VpdmVyOjpTZXRN
ZWRpYUNoYW5uZWwoY3JpY2tldDo6TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsKSB7CisgIFJU
Q19EQ0hFQ0sobWVkaWFfY2hhbm5lbCA9PSBudWxscHRyIHx8CisgICAgICAgICAgICAgbWVkaWFf
Y2hhbm5lbC0+bWVkaWFfdHlwZSgpID09IG1lZGlhX3R5cGUoKSk7CisgIG1lZGlhX2NoYW5uZWxf
ID0gc3RhdGljX2Nhc3Q8Y3JpY2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqPihtZWRpYV9jaGFubmVs
KTsKIH0KIAogdm9pZCBWaWRlb1J0cFJlY2VpdmVyOjpOb3RpZnlGaXJzdFBhY2tldFJlY2VpdmVk
KCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcnRwcmVjZWl2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3J0cHJlY2VpdmVyLmgKaW5kZXggODViZThjMjU4YmZiYTJmNWIwOTJlZmYxYmZj
ZDUyYzQxMjJjM2Y2OS4uMDYzMzFhNjZjNGRkOTVjYTJlNWUxNTg4NDYyYmIxZWZlZmQ4NzI3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cnRwcmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9ydHByZWNlaXZlci5oCkBAIC0zNCwxNCArMzQsMTAgQEAgY2xhc3MgUnRwUmVjZWl2
ZXJJbnRlcm5hbCA6IHB1YmxpYyBSdHBSZWNlaXZlckludGVyZmFjZSB7CiAgIHZpcnR1YWwgdm9p
ZCBTdG9wKCkgPSAwOwogCiAgIC8vIFNldHMgdGhlIHVuZGVybHlpbmcgTWVkaWFFbmdpbmUgY2hh
bm5lbCBhc3NvY2lhdGVkIHdpdGggdGhpcyBSdHBTZW5kZXIuCi0gIC8vIFNldFZvaWNlTWVkaWFD
aGFubmVsIHNob3VsZCBiZSB1c2VkIGZvciBhdWRpbyBSdHBTZW5kZXJzIGFuZAotICAvLyBTZXRW
aWRlb01lZGlhQ2hhbm5lbCBzaG91bGQgYmUgdXNlZCBmb3IgdmlkZW8gUnRwU2VuZGVycy4gTXVz
dCBjYWxsIHRoZQotICAvLyBhcHByb3ByaWF0ZSBTZXRYeHhNZWRpYUNoYW5uZWwobnVsbHB0cikg
YmVmb3JlIHRoZSBtZWRpYSBjaGFubmVsIGlzCi0gIC8vIGRlc3Ryb3llZC4KLSAgdmlydHVhbCB2
b2lkIFNldFZvaWNlTWVkaWFDaGFubmVsKAotICAgICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5u
ZWwqIHZvaWNlX21lZGlhX2NoYW5uZWwpID0gMDsKLSAgdmlydHVhbCB2b2lkIFNldFZpZGVvTWVk
aWFDaGFubmVsKAotICAgICAgY3JpY2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqIHZpZGVvX21lZGlh
X2NoYW5uZWwpID0gMDsKKyAgLy8gQSBWb2ljZU1lZGlhQ2hhbm5lbCBzaG91bGQgYmUgdXNlZCBm
b3IgYXVkaW8gUnRwU2VuZGVycyBhbmQKKyAgLy8gYSBWaWRlb01lZGlhQ2hhbm5lbCBzaG91bGQg
YmUgdXNlZCBmb3IgdmlkZW8gUnRwU2VuZGVycy4KKyAgLy8gTXVzdCBjYWxsIFNldE1lZGlhQ2hh
bm5lbChudWxscHRyKSBiZWZvcmUgdGhlIG1lZGlhIGNoYW5uZWwgaXMgZGVzdHJveWVkLgorICB2
aXJ0dWFsIHZvaWQgU2V0TWVkaWFDaGFubmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFf
Y2hhbm5lbCkgPSAwOwogCiAgIC8vIENvbmZpZ3VyZXMgdGhlIFJ0cFJlY2VpdmVyIHdpdGggdGhl
IHVuZGVybHlpbmcgbWVkaWEgY2hhbm5lbCwgd2l0aCB0aGUKICAgLy8gZ2l2ZW4gU1NSQyBhcyB0
aGUgc3RyZWFtIGlkZW50aWZpZXIuIElmIHxzc3JjfCBpcyAwLCB0aGUgcmVjZWl2ZXIgd2lsbApA
QCAtMTMwLDEzICsxMjYsOCBAQCBjbGFzcyBBdWRpb1J0cFJlY2VpdmVyIDogcHVibGljIE9ic2Vy
dmVySW50ZXJmYWNlLAogICB2b2lkIFNldFN0cmVhbXMoY29uc3Qgc3RkOjp2ZWN0b3I8cnRjOjpz
Y29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtSW50ZXJmYWNlPj4mCiAgICAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtcykgb3ZlcnJpZGU7CiAgIHZvaWQgU2V0T2JzZXJ2ZXIoUnRwUmVjZWl2ZXJPYnNl
cnZlckludGVyZmFjZSogb2JzZXJ2ZXIpIG92ZXJyaWRlOwotICB2b2lkIFNldFZvaWNlTWVkaWFD
aGFubmVsKAotICAgICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIHZvaWNlX21lZGlhX2No
YW5uZWwpIG92ZXJyaWRlOwogCi0gIHZvaWQgU2V0VmlkZW9NZWRpYUNoYW5uZWwoCi0gICAgICBj
cmlja2V0OjpWaWRlb01lZGlhQ2hhbm5lbCogdmlkZW9fbWVkaWFfY2hhbm5lbCkgb3ZlcnJpZGUg
ewotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIH0KKyAgdm9pZCBTZXRNZWRpYUNoYW5uZWwoY3Jp
Y2tldDo6TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsKSBvdmVycmlkZTsKIAogICBzdGQ6OnZl
Y3RvcjxSdHBTb3VyY2U+IEdldFNvdXJjZXMoKSBjb25zdCBvdmVycmlkZTsKICAgaW50IEF0dGFj
aG1lbnRJZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGF0dGFjaG1lbnRfaWRfOyB9CkBAIC0y
MTcsMTMgKzIwOCw3IEBAIGNsYXNzIFZpZGVvUnRwUmVjZWl2ZXIgOiBwdWJsaWMgcnRjOjpSZWZD
b3VudGVkT2JqZWN0PFJ0cFJlY2VpdmVySW50ZXJuYWw+IHsKIAogICB2b2lkIFNldE9ic2VydmVy
KFJ0cFJlY2VpdmVyT2JzZXJ2ZXJJbnRlcmZhY2UqIG9ic2VydmVyKSBvdmVycmlkZTsKIAotICB2
b2lkIFNldFZvaWNlTWVkaWFDaGFubmVsKAotICAgICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5u
ZWwqIHZvaWNlX21lZGlhX2NoYW5uZWwpIG92ZXJyaWRlIHsKLSAgICBSVENfTk9UUkVBQ0hFRCgp
OwotICB9Ci0KLSAgdm9pZCBTZXRWaWRlb01lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZp
ZGVvTWVkaWFDaGFubmVsKiB2aWRlb19tZWRpYV9jaGFubmVsKSBvdmVycmlkZTsKKyAgdm9pZCBT
ZXRNZWRpYUNoYW5uZWwoY3JpY2tldDo6TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsKSBvdmVy
cmlkZTsKIAogICBpbnQgQXR0YWNobWVudElkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYXR0
YWNobWVudF9pZF87IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVyLmNjCmluZGV4IDNiYjkwZjI0ZGExNGI5MTRk
MzAzZjViYThlYzNjNjM3Y2Q0YjUyYmQuLjc2ZmRjYTZlOTQyMDk0ODNlYTc2NzMyNTFkZGE0MmQ1
ZTljNmY4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3J0cHNlbmRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXIuY2MKQEAgLTU4LDcgKzU4LDggQEAgYm9vbCBVbmlt
cGxlbWVudGVkUnRwRW5jb2RpbmdQYXJhbWV0ZXJIYXNWYWx1ZSgKIC8vIGxheWVyLgogYm9vbCBQ
ZXJTZW5kZXJSdHBFbmNvZGluZ1BhcmFtZXRlckhhc1ZhbHVlKAogICAgIGNvbnN0IFJ0cEVuY29k
aW5nUGFyYW1ldGVycyYgZW5jb2RpbmdfcGFyYW1zKSB7Ci0gIGlmIChlbmNvZGluZ19wYXJhbXMu
Yml0cmF0ZV9wcmlvcml0eSAhPSBrRGVmYXVsdEJpdHJhdGVQcmlvcml0eSkgeworICBpZiAoZW5j
b2RpbmdfcGFyYW1zLmJpdHJhdGVfcHJpb3JpdHkgIT0ga0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkg
fHwKKyAgICAgIGVuY29kaW5nX3BhcmFtcy5uZXR3b3JrX3ByaW9yaXR5ICE9IGtEZWZhdWx0Qml0
cmF0ZVByaW9yaXR5KSB7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjgsMTMgKzY5LDE0IEBAIGJvb2wgUGVyU2VuZGVyUnRwRW5jb2RpbmdQYXJhbWV0ZXJIYXNW
YWx1ZSgKIC8vIGNvcnJlY3Qgd29ya2VyIHRocmVhZCBvbmx5IGlmIGJvdGggdGhlIG1lZGlhIGNo
YW5uZWwgZXhpc3RzIGFuZCBhIHNzcmMgaGFzCiAvLyBiZWVuIGFsbG9jYXRlZCB0byB0aGUgc3Ry
ZWFtLgogdm9pZCBNYXliZUF0dGFjaEZyYW1lRW5jcnlwdG9yVG9NZWRpYUNoYW5uZWwoCi0gICAg
Y29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmMsCisgICAgY29uc3QgdWludDMyX3Qg
c3NyYywKICAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKICAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yLAot
ICAgIGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgewotICBpZiAobWVkaWFf
Y2hhbm5lbCAmJiBzc3JjLmhhc192YWx1ZSgpKSB7Ci0gICAgcmV0dXJuIHdvcmtlcl90aHJlYWQt
Pkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0gewotICAgICAgbWVkaWFfY2hhbm5lbC0+
U2V0RnJhbWVFbmNyeXB0b3IoKnNzcmMsIGZyYW1lX2VuY3J5cHRvcik7CisgICAgY3JpY2tldDo6
TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsLAorICAgIGJvb2wgc3RvcHBlZCkgeworICBpZiAo
bWVkaWFfY2hhbm5lbCAmJiBmcmFtZV9lbmNyeXB0b3IgJiYgc3NyYyAmJiAhc3RvcHBlZCkgewor
ICAgIHdvcmtlcl90aHJlYWQtPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0geworICAg
ICAgbWVkaWFfY2hhbm5lbC0+U2V0RnJhbWVFbmNyeXB0b3Ioc3NyYywgZnJhbWVfZW5jcnlwdG9y
KTsKICAgICB9KTsKICAgfQogfQpAQCAtMzA1LDggKzMwNywxMiBAQCBydGM6OnNjb3BlZF9yZWZw
dHI8RHRtZlNlbmRlckludGVyZmFjZT4gQXVkaW9SdHBTZW5kZXI6OkdldER0bWZTZW5kZXIoKSBj
b25zdCB7CiB2b2lkIEF1ZGlvUnRwU2VuZGVyOjpTZXRGcmFtZUVuY3J5cHRvcigKICAgICBydGM6
OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2VuY3J5cHRvcikg
ewogICBmcmFtZV9lbmNyeXB0b3JfID0gc3RkOjptb3ZlKGZyYW1lX2VuY3J5cHRvcik7Ci0gIE1h
eWJlQXR0YWNoRnJhbWVFbmNyeXB0b3JUb01lZGlhQ2hhbm5lbChzc3JjXywgd29ya2VyX3RocmVh
ZF8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9lbmNy
eXB0b3JfLCBtZWRpYV9jaGFubmVsXyk7CisgIC8vIFNwZWNpYWwgQ2FzZTogU2V0IHRoZSBmcmFt
ZSBlbmNyeXB0b3IgdG8gYW55IHZhbHVlIG9uIGFueSBleGlzdGluZyBjaGFubmVsLgorICBpZiAo
bWVkaWFfY2hhbm5lbF8gJiYgc3NyY18gJiYgIXN0b3BwZWRfKSB7CisgICAgd29ya2VyX3RocmVh
ZF8tPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0geworICAgICAgbWVkaWFfY2hhbm5l
bF8tPlNldEZyYW1lRW5jcnlwdG9yKHNzcmNfLCBmcmFtZV9lbmNyeXB0b3JfKTsKKyAgICB9KTsK
KyAgfQogfQogCiBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IEF1
ZGlvUnRwU2VuZGVyOjpHZXRGcmFtZUVuY3J5cHRvcigpCkBAIC0zNTYsOCArMzYyLDggQEAgdm9p
ZCBBdWRpb1J0cFNlbmRlcjo6U2V0U3NyYyh1aW50MzJfdCBzc3JjKSB7CiAgICAgfSk7CiAgIH0K
ICAgLy8gRWFjaCB0aW1lIHRoZXJlIGlzIGFuIHNzcmMgdXBkYXRlLgotICBNYXliZUF0dGFjaEZy
YW1lRW5jcnlwdG9yVG9NZWRpYUNoYW5uZWwoc3NyY18sIHdvcmtlcl90aHJlYWRfLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZW5jcnlwdG9yXywgbWVk
aWFfY2hhbm5lbF8pOworICBNYXliZUF0dGFjaEZyYW1lRW5jcnlwdG9yVG9NZWRpYUNoYW5uZWwo
CisgICAgICBzc3JjXywgd29ya2VyX3RocmVhZF8sIGZyYW1lX2VuY3J5cHRvcl8sIG1lZGlhX2No
YW5uZWxfLCBzdG9wcGVkXyk7CiB9CiAKIHZvaWQgQXVkaW9SdHBTZW5kZXI6OlN0b3AoKSB7CkBA
IC0zODAsOSArMzg2LDEwIEBAIHZvaWQgQXVkaW9SdHBTZW5kZXI6OlN0b3AoKSB7CiAgIHN0b3Bw
ZWRfID0gdHJ1ZTsKIH0KIAotdm9pZCBBdWRpb1J0cFNlbmRlcjo6U2V0Vm9pY2VNZWRpYUNoYW5u
ZWwoCi0gICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIHZvaWNlX21lZGlhX2NoYW5uZWwp
IHsKLSAgbWVkaWFfY2hhbm5lbF8gPSB2b2ljZV9tZWRpYV9jaGFubmVsOwordm9pZCBBdWRpb1J0
cFNlbmRlcjo6U2V0TWVkaWFDaGFubmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hh
bm5lbCkgeworICBSVENfRENIRUNLKG1lZGlhX2NoYW5uZWwgPT0gbnVsbHB0ciB8fAorICAgICAg
ICAgICAgIG1lZGlhX2NoYW5uZWwtPm1lZGlhX3R5cGUoKSA9PSBtZWRpYV90eXBlKCkpOworICBt
ZWRpYV9jaGFubmVsXyA9IHN0YXRpY19jYXN0PGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKj4o
bWVkaWFfY2hhbm5lbCk7CiB9CiAKIHZvaWQgQXVkaW9SdHBTZW5kZXI6OlNldEF1ZGlvU2VuZCgp
IHsKQEAgLTM5OSw5ICs0MDYsNyBAQCB2b2lkIEF1ZGlvUnRwU2VuZGVyOjpTZXRBdWRpb1NlbmQo
KSB7CiAgIC8vIG9wdGlvbnMgc2luY2UgaXQgaXMgYWxzbyBhcHBsaWVkIHRvIGFsbCBzdHJlYW1z
L2NoYW5uZWxzLCBsb2NhbCBvciByZW1vdGUuCiAgIGlmICh0cmFja18tPmVuYWJsZWQoKSAmJiB0
cmFja18tPkdldFNvdXJjZSgpICYmCiAgICAgICAhdHJhY2tfLT5HZXRTb3VyY2UoKS0+cmVtb3Rl
KCkpIHsKLSAgICAvLyBUT0RPKHhpYW5zKTogUmVtb3ZlIHRoaXMgc3RhdGljX2Nhc3Qgc2luY2Ug
d2Ugc2hvdWxkIGJlIGFibGUgdG8gY29ubmVjdAotICAgIC8vIGEgcmVtb3RlIGF1ZGlvIHRyYWNr
IHRvIGEgcGVlciBjb25uZWN0aW9uLgotICAgIG9wdGlvbnMgPSBzdGF0aWNfY2FzdDxMb2NhbEF1
ZGlvU291cmNlKj4odHJhY2tfLT5HZXRTb3VyY2UoKSktPm9wdGlvbnMoKTsKKyAgICBvcHRpb25z
ID0gdHJhY2tfLT5HZXRTb3VyY2UoKS0+b3B0aW9ucygpOwogICB9CiAjZW5kaWYKIApAQCAtNTU3
LDggKzU2MiwxMiBAQCBydGM6OnNjb3BlZF9yZWZwdHI8RHRtZlNlbmRlckludGVyZmFjZT4gVmlk
ZW9SdHBTZW5kZXI6OkdldER0bWZTZW5kZXIoKSBjb25zdCB7CiB2b2lkIFZpZGVvUnRwU2VuZGVy
OjpTZXRGcmFtZUVuY3J5cHRvcigKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0
b3JJbnRlcmZhY2U+IGZyYW1lX2VuY3J5cHRvcikgewogICBmcmFtZV9lbmNyeXB0b3JfID0gc3Rk
Ojptb3ZlKGZyYW1lX2VuY3J5cHRvcik7Ci0gIE1heWJlQXR0YWNoRnJhbWVFbmNyeXB0b3JUb01l
ZGlhQ2hhbm5lbChzc3JjXywgd29ya2VyX3RocmVhZF8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZV9lbmNyeXB0b3JfLCBtZWRpYV9jaGFubmVsXyk7Cisg
IC8vIFNwZWNpYWwgQ2FzZTogU2V0IHRoZSBmcmFtZSBlbmNyeXB0b3IgdG8gYW55IHZhbHVlIG9u
IGFueSBleGlzdGluZyBjaGFubmVsLgorICBpZiAobWVkaWFfY2hhbm5lbF8gJiYgc3NyY18gJiYg
IXN0b3BwZWRfKSB7CisgICAgd29ya2VyX3RocmVhZF8tPkludm9rZTx2b2lkPihSVENfRlJPTV9I
RVJFLCBbJl0geworICAgICAgbWVkaWFfY2hhbm5lbF8tPlNldEZyYW1lRW5jcnlwdG9yKHNzcmNf
LCBmcmFtZV9lbmNyeXB0b3JfKTsKKyAgICB9KTsKKyAgfQogfQogCiBydGM6OnNjb3BlZF9yZWZw
dHI8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IFZpZGVvUnRwU2VuZGVyOjpHZXRGcmFtZUVuY3J5
cHRvcigpCkBAIC02MDEsOCArNjEwLDggQEAgdm9pZCBWaWRlb1J0cFNlbmRlcjo6U2V0U3NyYyh1
aW50MzJfdCBzc3JjKSB7CiAgICAgICBpbml0X3BhcmFtZXRlcnNfLmVuY29kaW5ncy5jbGVhcigp
OwogICAgIH0pOwogICB9Ci0gIE1heWJlQXR0YWNoRnJhbWVFbmNyeXB0b3JUb01lZGlhQ2hhbm5l
bChzc3JjXywgd29ya2VyX3RocmVhZF8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZV9lbmNyeXB0b3JfLCBtZWRpYV9jaGFubmVsXyk7CisgIE1heWJlQXR0
YWNoRnJhbWVFbmNyeXB0b3JUb01lZGlhQ2hhbm5lbCgKKyAgICAgIHNzcmNfLCB3b3JrZXJfdGhy
ZWFkXywgZnJhbWVfZW5jcnlwdG9yXywgbWVkaWFfY2hhbm5lbF8sIHN0b3BwZWRfKTsKIH0KIAog
dm9pZCBWaWRlb1J0cFNlbmRlcjo6U3RvcCgpIHsKQEAgLTYyMSw5ICs2MzAsMTAgQEAgdm9pZCBW
aWRlb1J0cFNlbmRlcjo6U3RvcCgpIHsKICAgc3RvcHBlZF8gPSB0cnVlOwogfQogCi12b2lkIFZp
ZGVvUnRwU2VuZGVyOjpTZXRWaWRlb01lZGlhQ2hhbm5lbCgKLSAgICBjcmlja2V0OjpWaWRlb01l
ZGlhQ2hhbm5lbCogdmlkZW9fbWVkaWFfY2hhbm5lbCkgewotICBtZWRpYV9jaGFubmVsXyA9IHZp
ZGVvX21lZGlhX2NoYW5uZWw7Cit2b2lkIFZpZGVvUnRwU2VuZGVyOjpTZXRNZWRpYUNoYW5uZWwo
Y3JpY2tldDo6TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsKSB7CisgIFJUQ19EQ0hFQ0sobWVk
aWFfY2hhbm5lbCA9PSBudWxscHRyIHx8CisgICAgICAgICAgICAgbWVkaWFfY2hhbm5lbC0+bWVk
aWFfdHlwZSgpID09IG1lZGlhX3R5cGUoKSk7CisgIG1lZGlhX2NoYW5uZWxfID0gc3RhdGljX2Nh
c3Q8Y3JpY2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqPihtZWRpYV9jaGFubmVsKTsKIH0KIAogdm9p
ZCBWaWRlb1J0cFNlbmRlcjo6U2V0VmlkZW9TZW5kKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXIuaAppbmRleCAy
YTgyODlmNDE3ZWFjOTRlMjQ4M2E5OGJlN2Y3OGI2YmJkN2Y4MjdjLi4wN2ZhZTZiOTU0N2M0OTRh
MjNmZjNkNzU4ZTJlM2E2MmFlZmZjOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXIuaApAQCAtMzYsMTQgKzM2
LDEwIEBAIGJvb2wgVW5pbXBsZW1lbnRlZFJ0cFBhcmFtZXRlckhhc1ZhbHVlKGNvbnN0IFJ0cFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpOwogY2xhc3MgUnRwU2VuZGVySW50ZXJuYWwgOiBwdWJsaWMg
UnRwU2VuZGVySW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIC8vIFNldHMgdGhlIHVuZGVybHlpbmcg
TWVkaWFFbmdpbmUgY2hhbm5lbCBhc3NvY2lhdGVkIHdpdGggdGhpcyBSdHBTZW5kZXIuCi0gIC8v
IFNldFZvaWNlTWVkaWFDaGFubmVsIHNob3VsZCBiZSB1c2VkIGZvciBhdWRpbyBSdHBTZW5kZXJz
IGFuZAotICAvLyBTZXRWaWRlb01lZGlhQ2hhbm5lbCBzaG91bGQgYmUgdXNlZCBmb3IgdmlkZW8g
UnRwU2VuZGVycy4gTXVzdCBjYWxsIHRoZQotICAvLyBhcHByb3ByaWF0ZSBTZXRYeHhNZWRpYUNo
YW5uZWwobnVsbHB0cikgYmVmb3JlIHRoZSBtZWRpYSBjaGFubmVsIGlzCi0gIC8vIGRlc3Ryb3ll
ZC4KLSAgdmlydHVhbCB2b2lkIFNldFZvaWNlTWVkaWFDaGFubmVsKAotICAgICAgY3JpY2tldDo6
Vm9pY2VNZWRpYUNoYW5uZWwqIHZvaWNlX21lZGlhX2NoYW5uZWwpID0gMDsKLSAgdmlydHVhbCB2
b2lkIFNldFZpZGVvTWVkaWFDaGFubmVsKAotICAgICAgY3JpY2tldDo6VmlkZW9NZWRpYUNoYW5u
ZWwqIHZpZGVvX21lZGlhX2NoYW5uZWwpID0gMDsKKyAgLy8gQSBWb2ljZU1lZGlhQ2hhbm5lbCBz
aG91bGQgYmUgdXNlZCBmb3IgYXVkaW8gUnRwU2VuZGVycyBhbmQKKyAgLy8gYSBWaWRlb01lZGlh
Q2hhbm5lbCBzaG91bGQgYmUgdXNlZCBmb3IgdmlkZW8gUnRwU2VuZGVycy4KKyAgLy8gTXVzdCBj
YWxsIFNldE1lZGlhQ2hhbm5lbChudWxscHRyKSBiZWZvcmUgdGhlIG1lZGlhIGNoYW5uZWwgaXMg
ZGVzdHJveWVkLgorICB2aXJ0dWFsIHZvaWQgU2V0TWVkaWFDaGFubmVsKGNyaWNrZXQ6Ok1lZGlh
Q2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgPSAwOwogCiAgIC8vIFVzZWQgdG8gc2V0IHRoZSBTU1JD
IG9mIHRoZSBzZW5kZXIsIG9uY2UgYSBsb2NhbCBkZXNjcmlwdGlvbiBoYXMgYmVlbiBzZXQuCiAg
IC8vIElmIHxzc3JjfCBpcyAwLCB0aGlzIGluZGlhdGVzIHRoYXQgdGhlIHNlbmRlciBzaG91bGQg
ZGlzY29ubmVjdCBmcm9tIHRoZQpAQCAtMTU2LDEzICsxNTIsNyBAQCBjbGFzcyBBdWRpb1J0cFNl
bmRlciA6IHB1YmxpYyBEdG1mUHJvdmlkZXJJbnRlcmZhY2UsCiAKICAgaW50IEF0dGFjaG1lbnRJ
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGF0dGFjaG1lbnRfaWRfOyB9CiAKLSAgdm9pZCBT
ZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiB2
b2ljZV9tZWRpYV9jaGFubmVsKSBvdmVycmlkZTsKLQotICB2b2lkIFNldFZpZGVvTWVkaWFDaGFu
bmVsKAotICAgICAgY3JpY2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqIHZpZGVvX21lZGlhX2NoYW5u
ZWwpIG92ZXJyaWRlIHsKLSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICB9CisgIHZvaWQgU2V0TWVk
aWFDaGFubmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgb3ZlcnJpZGU7
CiAKICBwcml2YXRlOgogICAvLyBUT0RPKG5pc3NlKTogU2luY2UgU1NSQyA9PSAwIGlzIHRlY2hu
aWNhbGx5IHZhbGlkLCBmaWd1cmUgb3V0CkBAIC0yNTMsMTMgKzI0Myw3IEBAIGNsYXNzIFZpZGVv
UnRwU2VuZGVyIDogcHVibGljIE9ic2VydmVySW50ZXJmYWNlLAogICB2b2lkIFN0b3AoKSBvdmVy
cmlkZTsKICAgaW50IEF0dGFjaG1lbnRJZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGF0dGFj
aG1lbnRfaWRfOyB9CiAKLSAgdm9pZCBTZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNr
ZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiB2b2ljZV9tZWRpYV9jaGFubmVsKSBvdmVycmlkZSB7Ci0g
ICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgfQotCi0gIHZvaWQgU2V0VmlkZW9NZWRpYUNoYW5uZWwo
Ci0gICAgICBjcmlja2V0OjpWaWRlb01lZGlhQ2hhbm5lbCogdmlkZW9fbWVkaWFfY2hhbm5lbCkg
b3ZlcnJpZGU7CisgIHZvaWQgU2V0TWVkaWFDaGFubmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCog
bWVkaWFfY2hhbm5lbCkgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgogICBib29sIGNhbl9zZW5kX3Ry
YWNrKCkgY29uc3QgeyByZXR1cm4gdHJhY2tfICYmIHNzcmNfOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXJyZWNlaXZl
cl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3J0cHNlbmRlcnJlY2VpdmVyX3VuaXR0ZXN0LmNjCmluZGV4IDA3ZmY2YTM4NjU0NDY0NzRh
MjE4NmUyYjY5MWU4ZmZjOWNhOTAzNDQuLjNiZTY5YmFmYzljMDFmNWQ2ZWY0ZDQyZjA3MTg4MmEy
M2UyM2E2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3J0cHNlbmRlcnJlY2VpdmVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHNlbmRlcnJlY2VpdmVyX3VuaXR0
ZXN0LmNjCkBAIC04MCwxMiArODAsMTIgQEAgY2xhc3MgUnRwU2VuZGVyUmVjZWl2ZXJUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QsCiAKICAgICB2b2ljZV9jaGFubmVsXyA9IGNoYW5uZWxfbWFu
YWdlcl8uQ3JlYXRlVm9pY2VDaGFubmVsKAogICAgICAgICAmZmFrZV9jYWxsXywgY3JpY2tldDo6
TWVkaWFDb25maWcoKSwgcnRwX3RyYW5zcG9ydF8uZ2V0KCksCi0gICAgICAgIHJ0Yzo6VGhyZWFk
OjpDdXJyZW50KCksIGNyaWNrZXQ6OkNOX0FVRElPLCBzcnRwX3JlcXVpcmVkLAotICAgICAgICBy
dGM6OkNyeXB0b09wdGlvbnMoKSwgY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpOworICAgICAgICAv
Km1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIsIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksIGNyaWNr
ZXQ6OkNOX0FVRElPLAorICAgICAgICBzcnRwX3JlcXVpcmVkLCB3ZWJydGM6OkNyeXB0b09wdGlv
bnMoKSwgY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpOwogICAgIHZpZGVvX2NoYW5uZWxfID0gY2hh
bm5lbF9tYW5hZ2VyXy5DcmVhdGVWaWRlb0NoYW5uZWwoCiAgICAgICAgICZmYWtlX2NhbGxfLCBj
cmlja2V0OjpNZWRpYUNvbmZpZygpLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSwKICAgICAgICAgcnRj
OjpUaHJlYWQ6OkN1cnJlbnQoKSwgY3JpY2tldDo6Q05fVklERU8sIHNydHBfcmVxdWlyZWQsCi0g
ICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBjcmlja2V0OjpWaWRlb09wdGlvbnMoKSk7Cisg
ICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBjcmlja2V0OjpWaWRlb09wdGlvbnMoKSk7
CiAgICAgdm9pY2VfY2hhbm5lbF8tPkVuYWJsZSh0cnVlKTsKICAgICB2aWRlb19jaGFubmVsXy0+
RW5hYmxlKHRydWUpOwogICAgIHZvaWNlX21lZGlhX2NoYW5uZWxfID0gbWVkaWFfZW5naW5lXy0+
R2V0Vm9pY2VDaGFubmVsKDApOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGNsYXNzIFJ0cFNlbmRlclJl
Y2VpdmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgICAgICBuZXcgQXVkaW9SdHBT
ZW5kZXIod29ya2VyX3RocmVhZF8sIGF1ZGlvX3RyYWNrXy0+aWQoKSwgbnVsbHB0cik7CiAgICAg
QVNTRVJUX1RSVUUoYXVkaW9fcnRwX3NlbmRlcl8tPlNldFRyYWNrKGF1ZGlvX3RyYWNrXykpOwog
ICAgIGF1ZGlvX3J0cF9zZW5kZXJfLT5zZXRfc3RyZWFtX2lkcyh7bG9jYWxfc3RyZWFtXy0+aWQo
KX0pOwotICAgIGF1ZGlvX3J0cF9zZW5kZXJfLT5TZXRWb2ljZU1lZGlhQ2hhbm5lbCh2b2ljZV9t
ZWRpYV9jaGFubmVsXyk7CisgICAgYXVkaW9fcnRwX3NlbmRlcl8tPlNldE1lZGlhQ2hhbm5lbCh2
b2ljZV9tZWRpYV9jaGFubmVsXyk7CiAgICAgYXVkaW9fcnRwX3NlbmRlcl8tPlNldFNzcmMoa0F1
ZGlvU3NyYyk7CiAgICAgYXVkaW9fcnRwX3NlbmRlcl8tPkdldE9uRGVzdHJveWVkU2lnbmFsKCkt
PmNvbm5lY3QoCiAgICAgICAgIHRoaXMsICZSdHBTZW5kZXJSZWNlaXZlclRlc3Q6Ok9uQXVkaW9T
ZW5kZXJEZXN0cm95ZWQpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIGNsYXNzIFJ0cFNlbmRlclJlY2Vp
dmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogCiAgIHZvaWQgQ3JlYXRlQXVkaW9SdHBT
ZW5kZXJXaXRoTm9UcmFjaygpIHsKICAgICBhdWRpb19ydHBfc2VuZGVyXyA9IG5ldyBBdWRpb1J0
cFNlbmRlcih3b3JrZXJfdGhyZWFkXywgLyppZD0qLyIiLCBudWxscHRyKTsKLSAgICBhdWRpb19y
dHBfc2VuZGVyXy0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbF8pOwor
ICAgIGF1ZGlvX3J0cF9zZW5kZXJfLT5TZXRNZWRpYUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5l
bF8pOwogICB9CiAKICAgdm9pZCBPbkF1ZGlvU2VuZGVyRGVzdHJveWVkKCkgeyBhdWRpb19zZW5k
ZXJfZGVzdHJveWVkX3NpZ25hbF9maXJlZF8gPSB0cnVlOyB9CkBAIC0xOTEsMTMgKzE5MSwxMyBA
QCBjbGFzcyBSdHBTZW5kZXJSZWNlaXZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAg
ICB2aWRlb19ydHBfc2VuZGVyXyA9IG5ldyBWaWRlb1J0cFNlbmRlcih3b3JrZXJfdGhyZWFkXywg
dmlkZW9fdHJhY2tfLT5pZCgpKTsKICAgICBBU1NFUlRfVFJVRSh2aWRlb19ydHBfc2VuZGVyXy0+
U2V0VHJhY2sodmlkZW9fdHJhY2tfKSk7CiAgICAgdmlkZW9fcnRwX3NlbmRlcl8tPnNldF9zdHJl
YW1faWRzKHtsb2NhbF9zdHJlYW1fLT5pZCgpfSk7Ci0gICAgdmlkZW9fcnRwX3NlbmRlcl8tPlNl
dFZpZGVvTWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWxfKTsKKyAgICB2aWRlb19ydHBf
c2VuZGVyXy0+U2V0TWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWxfKTsKICAgICB2aWRl
b19ydHBfc2VuZGVyXy0+U2V0U3NyYyhzc3JjKTsKICAgICBWZXJpZnlWaWRlb0NoYW5uZWxJbnB1
dChzc3JjKTsKICAgfQogICB2b2lkIENyZWF0ZVZpZGVvUnRwU2VuZGVyV2l0aE5vVHJhY2soKSB7
CiAgICAgdmlkZW9fcnRwX3NlbmRlcl8gPSBuZXcgVmlkZW9SdHBTZW5kZXIod29ya2VyX3RocmVh
ZF8sIC8qaWQ9Ki8iIik7Ci0gICAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldFZpZGVvTWVkaWFDaGFu
bmVsKHZpZGVvX21lZGlhX2NoYW5uZWxfKTsKKyAgICB2aWRlb19ydHBfc2VuZGVyXy0+U2V0TWVk
aWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWxfKTsKICAgfQogCiAgIHZvaWQgRGVzdHJveUF1
ZGlvUnRwU2VuZGVyKCkgewpAQCAtMjE0LDcgKzIxNCw3IEBAIGNsYXNzIFJ0cFNlbmRlclJlY2Vp
dmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpz
Y29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtSW50ZXJmYWNlPj4gc3RyZWFtcyA9IHt9KSB7CiAgICAg
YXVkaW9fcnRwX3JlY2VpdmVyXyA9IG5ldyBBdWRpb1J0cFJlY2VpdmVyKAogICAgICAgICBydGM6
OlRocmVhZDo6Q3VycmVudCgpLCBrQXVkaW9UcmFja0lkLCBzdGQ6Om1vdmUoc3RyZWFtcykpOwot
ICAgIGF1ZGlvX3J0cF9yZWNlaXZlcl8tPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNlX21lZGlh
X2NoYW5uZWxfKTsKKyAgICBhdWRpb19ydHBfcmVjZWl2ZXJfLT5TZXRNZWRpYUNoYW5uZWwodm9p
Y2VfbWVkaWFfY2hhbm5lbF8pOwogICAgIGF1ZGlvX3J0cF9yZWNlaXZlcl8tPlNldHVwTWVkaWFD
aGFubmVsKGtBdWRpb1NzcmMpOwogICAgIGF1ZGlvX3RyYWNrXyA9IGF1ZGlvX3J0cF9yZWNlaXZl
cl8tPmF1ZGlvX3RyYWNrKCk7CiAgICAgVmVyaWZ5Vm9pY2VDaGFubmVsT3V0cHV0KCk7CkBAIC0y
MjQsMTIgKzIyNCwzMCBAQCBjbGFzcyBSdHBTZW5kZXJSZWNlaXZlclRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCwKICAgICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0
cmVhbUludGVyZmFjZT4+IHN0cmVhbXMgPSB7fSkgewogICAgIHZpZGVvX3J0cF9yZWNlaXZlcl8g
PSBuZXcgVmlkZW9SdHBSZWNlaXZlcigKICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwg
a1ZpZGVvVHJhY2tJZCwgc3RkOjptb3ZlKHN0cmVhbXMpKTsKLSAgICB2aWRlb19ydHBfcmVjZWl2
ZXJfLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CisgICAgdmlk
ZW9fcnRwX3JlY2VpdmVyXy0+U2V0TWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWxfKTsK
ICAgICB2aWRlb19ydHBfcmVjZWl2ZXJfLT5TZXR1cE1lZGlhQ2hhbm5lbChrVmlkZW9Tc3JjKTsK
ICAgICB2aWRlb190cmFja18gPSB2aWRlb19ydHBfcmVjZWl2ZXJfLT52aWRlb190cmFjaygpOwog
ICAgIFZlcmlmeVZpZGVvQ2hhbm5lbE91dHB1dCgpOwogICB9CiAKKyAgdm9pZCBDcmVhdGVWaWRl
b1J0cFJlY2VpdmVyV2l0aFNpbXVsY2FzdCgKKyAgICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVk
X3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+IHN0cmVhbXMgPSB7fSwKKyAgICAgIGludCBu
dW1fbGF5ZXJzID0ga1ZpZGVvU2ltdWxjYXN0TGF5ZXJDb3VudCkgeworICAgIHN0ZDo6dmVjdG9y
PHVpbnQzMl90PiBzc3JjczsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9sYXllcnM7ICsr
aSkKKyAgICAgIHNzcmNzLnB1c2hfYmFjayhrVmlkZW9Tc3JjU2ltdWxjYXN0ICsgaSk7CisgICAg
Y3JpY2tldDo6U3RyZWFtUGFyYW1zIHN0cmVhbV9wYXJhbXMgPQorICAgICAgICBjcmlja2V0OjpD
cmVhdGVTaW1TdHJlYW1QYXJhbXMoImNuYW1lIiwgc3NyY3MpOworICAgIHZpZGVvX21lZGlhX2No
YW5uZWxfLT5BZGRSZWN2U3RyZWFtKHN0cmVhbV9wYXJhbXMpOworICAgIHVpbnQzMl90IHByaW1h
cnlfc3NyYyA9IHN0cmVhbV9wYXJhbXMuZmlyc3Rfc3NyYygpOworCisgICAgdmlkZW9fcnRwX3Jl
Y2VpdmVyXyA9IG5ldyBWaWRlb1J0cFJlY2VpdmVyKAorICAgICAgICBydGM6OlRocmVhZDo6Q3Vy
cmVudCgpLCBrVmlkZW9UcmFja0lkLCBzdGQ6Om1vdmUoc3RyZWFtcykpOworICAgIHZpZGVvX3J0
cF9yZWNlaXZlcl8tPlNldE1lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CisgICAg
dmlkZW9fcnRwX3JlY2VpdmVyXy0+U2V0dXBNZWRpYUNoYW5uZWwocHJpbWFyeV9zc3JjKTsKKyAg
ICB2aWRlb190cmFja18gPSB2aWRlb19ydHBfcmVjZWl2ZXJfLT52aWRlb190cmFjaygpOworICB9
CisKICAgdm9pZCBEZXN0cm95QXVkaW9SdHBSZWNlaXZlcigpIHsKICAgICBhdWRpb19ydHBfcmVj
ZWl2ZXJfID0gbnVsbHB0cjsKICAgICBWZXJpZnlWb2ljZUNoYW5uZWxOb091dHB1dCgpOwpAQCAt
NjY0LDcgKzY4Miw3IEBAIFRFU1RfRihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIEF1ZGlvU2VuZGVy
SW5pdFBhcmFtZXRlcnNNb3ZlZEFmdGVyTmVnb3RpYXRpb24pIHsKICAgY3JpY2tldDo6U3RyZWFt
UGFyYW1zIHN0cmVhbV9wYXJhbXMgPQogICAgICAgY3JpY2tldDo6Q3JlYXRlU2ltU3RyZWFtUGFy
YW1zKCJjbmFtZSIsIHNzcmNzKTsKICAgdm9pY2VfbWVkaWFfY2hhbm5lbF8tPkFkZFNlbmRTdHJl
YW0oc3RyZWFtX3BhcmFtcyk7Ci0gIGF1ZGlvX3J0cF9zZW5kZXJfLT5TZXRWb2ljZU1lZGlhQ2hh
bm5lbCh2b2ljZV9tZWRpYV9jaGFubmVsXyk7CisgIGF1ZGlvX3J0cF9zZW5kZXJfLT5TZXRNZWRp
YUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbF8pOwogICBhdWRpb19ydHBfc2VuZGVyXy0+U2V0
U3NyYygxKTsKIAogICBwYXJhbXMgPSBhdWRpb19ydHBfc2VuZGVyXy0+R2V0UGFyYW1ldGVycygp
OwpAQCAtOTAzLDcgKzkyMSw3IEBAIFRFU1RfRihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIFZpZGVv
U2VuZGVySW5pdFBhcmFtZXRlcnNNb3ZlZEFmdGVyTmVnb3RpYXRpb24pIHsKICAgY3JpY2tldDo6
U3RyZWFtUGFyYW1zIHN0cmVhbV9wYXJhbXMgPQogICAgICAgY3JpY2tldDo6Q3JlYXRlU2ltU3Ry
ZWFtUGFyYW1zKCJjbmFtZSIsIHNzcmNzKTsKICAgdmlkZW9fbWVkaWFfY2hhbm5lbF8tPkFkZFNl
bmRTdHJlYW0oc3RyZWFtX3BhcmFtcyk7Ci0gIHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRWaWRlb01l
ZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CisgIHZpZGVvX3J0cF9zZW5kZXJfLT5T
ZXRNZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbF8pOwogICB2aWRlb19ydHBfc2VuZGVy
Xy0+U2V0U3NyYyhrVmlkZW9Tc3JjU2ltdWxjYXN0KTsKIAogICBwYXJhbXMgPSB2aWRlb19ydHBf
c2VuZGVyXy0+R2V0UGFyYW1ldGVycygpOwpAQCAtOTM4LDcgKzk1Niw3IEBAIFRFU1RfRihSdHBT
ZW5kZXJSZWNlaXZlclRlc3QsCiAgIGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyBzdHJlYW1fcGFyYW1z
ID0KICAgICAgIGNyaWNrZXQ6OkNyZWF0ZVNpbVN0cmVhbVBhcmFtcygiY25hbWUiLCBzc3Jjcyk7
CiAgIHZpZGVvX21lZGlhX2NoYW5uZWxfLT5BZGRTZW5kU3RyZWFtKHN0cmVhbV9wYXJhbXMpOwot
ICB2aWRlb19ydHBfc2VuZGVyXy0+U2V0VmlkZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hh
bm5lbF8pOworICB2aWRlb19ydHBfc2VuZGVyXy0+U2V0TWVkaWFDaGFubmVsKHZpZGVvX21lZGlh
X2NoYW5uZWxfKTsKICAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldFNzcmMoa1ZpZGVvU3NyY1NpbXVs
Y2FzdCk7CiAKICAgcGFyYW1zID0gdmlkZW9fcnRwX3NlbmRlcl8tPkdldFBhcmFtZXRlcnMoKTsK
QEAgLTEyNjMsNiArMTI4MSwxNSBAQCBURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBWaWRl
b1JlY2VpdmVyQ2FuU2V0UGFyYW1ldGVycykgewogICBEZXN0cm95VmlkZW9SdHBSZWNlaXZlcigp
OwogfQogCitURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBWaWRlb1JlY2VpdmVyQ2FuR2V0
UGFyYW1ldGVyc1dpdGhTaW11bGNhc3QpIHsKKyAgQ3JlYXRlVmlkZW9SdHBSZWNlaXZlcldpdGhT
aW11bGNhc3Qoe30sIDIpOworCisgIFJ0cFBhcmFtZXRlcnMgcGFyYW1zID0gdmlkZW9fcnRwX3Jl
Y2VpdmVyXy0+R2V0UGFyYW1ldGVycygpOworICBFWFBFQ1RfRVEoMnUsIHBhcmFtcy5lbmNvZGlu
Z3Muc2l6ZSgpKTsKKworICBEZXN0cm95VmlkZW9SdHBSZWNlaXZlcigpOworfQorCiAvLyBUZXN0
IHRoYXQgbWFrZXMgc3VyZSB0aGF0IGEgdmlkZW8gdHJhY2sgY29udGVudCBoaW50IHRyYW5zbGF0
ZXMgdG8gdGhlIHByb3BlcgogLy8gdmFsdWUgZm9yIHNvdXJjZXMgdGhhdCBhcmUgbm90IHNjcmVl
bmNhc3QuCiBURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBQcm9wYWdhdGVzVmlkZW9UcmFj
a0NvbnRlbnRIaW50KSB7CkBAIC0xMzMyLDcgKzEzNTksNyBAQCBURVNUX0YoUnRwU2VuZGVyUmVj
ZWl2ZXJUZXN0LAogICB2aWRlb19ydHBfc2VuZGVyXyA9IG5ldyBWaWRlb1J0cFNlbmRlcih3b3Jr
ZXJfdGhyZWFkXywgdmlkZW9fdHJhY2tfLT5pZCgpKTsKICAgQVNTRVJUX1RSVUUodmlkZW9fcnRw
X3NlbmRlcl8tPlNldFRyYWNrKHZpZGVvX3RyYWNrXykpOwogICB2aWRlb19ydHBfc2VuZGVyXy0+
c2V0X3N0cmVhbV9pZHMoe2xvY2FsX3N0cmVhbV8tPmlkKCl9KTsKLSAgdmlkZW9fcnRwX3NlbmRl
cl8tPlNldFZpZGVvTWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWxfKTsKKyAgdmlkZW9f
cnRwX3NlbmRlcl8tPlNldE1lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CiAgIHZp
ZGVvX3RyYWNrXy0+c2V0X2VuYWJsZWQodHJ1ZSk7CiAKICAgLy8gU2VuZGVyIGlzIG5vdCByZWFk
eSB0byBzZW5kIChubyBTU1JDKSBzbyBubyBvcHRpb24gc2hvdWxkIGhhdmUgYmVlbiBzZXQuCkBA
IC0xNDI0LDYgKzE0NTEsMTggQEAgVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgQXVkaW9T
ZW5kZXJDYW5TZXRGcmFtZUVuY3J5cHRvcikgewogICAgICAgICAgICAgYXVkaW9fcnRwX3NlbmRl
cl8tPkdldEZyYW1lRW5jcnlwdG9yKCkuZ2V0KCkpOwogfQogCisvLyBWYWxpZGF0ZSB0aGF0IHNl
dHRpbmcgYSBGcmFtZUVuY3J5cHRvciBhZnRlciB0aGUgc2VuZCBzdHJlYW0gaXMgc3RvcHBlZCBk
b2VzCisvLyBub3RoaW5nLgorVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgQXVkaW9TZW5k
ZXJDYW5ub3RTZXRGcmFtZUVuY3J5cHRvckFmdGVyU3RvcCkgeworICBDcmVhdGVBdWRpb1J0cFNl
bmRlcigpOworICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IGZh
a2VfZnJhbWVfZW5jcnlwdG9yKAorICAgICAgbmV3IEZha2VGcmFtZUVuY3J5cHRvcigpKTsKKyAg
RVhQRUNUX0VRKG51bGxwdHIsIGF1ZGlvX3J0cF9zZW5kZXJfLT5HZXRGcmFtZUVuY3J5cHRvcigp
KTsKKyAgYXVkaW9fcnRwX3NlbmRlcl8tPlN0b3AoKTsKKyAgYXVkaW9fcnRwX3NlbmRlcl8tPlNl
dEZyYW1lRW5jcnlwdG9yKGZha2VfZnJhbWVfZW5jcnlwdG9yKTsKKyAgLy8gVE9ETyh3ZWJydGM6
OTkyNikgLSBWYWxpZGF0ZSBtZWRpYSBjaGFubmVsIG5vdCBzZXQgb25jZSBmYWtlcyB1cGRhdGVk
LgorfQorCiAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBkZWZhdWx0IEZyYW1lRW5jcnlwdG9yIHNldHRp
bmcgaXMgbnVsbHB0ci4KIFRFU1RfRihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIEF1ZGlvUmVjZWl2
ZXJDYW5TZXRGcmFtZURlY3J5cHRvcikgewogICBDcmVhdGVBdWRpb1J0cFJlY2VpdmVyKCk7CkBA
IC0xNDM1LDQgKzE0NzQsNjAgQEAgVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgQXVkaW9S
ZWNlaXZlckNhblNldEZyYW1lRGVjcnlwdG9yKSB7CiAgICAgICAgICAgICBhdWRpb19ydHBfcmVj
ZWl2ZXJfLT5HZXRGcmFtZURlY3J5cHRvcigpLmdldCgpKTsKIH0KIAorLy8gVmFsaWRhdGUgdGhh
dCB0aGUgZGVmYXVsdCBGcmFtZUVuY3J5cHRvciBzZXR0aW5nIGlzIG51bGxwdHIuCitURVNUX0Yo
UnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBBdWRpb1JlY2VpdmVyQ2Fubm90U2V0RnJhbWVEZWNyeXB0
b3JBZnRlclN0b3ApIHsKKyAgQ3JlYXRlQXVkaW9SdHBSZWNlaXZlcigpOworICBydGM6OnNjb3Bl
ZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZha2VfZnJhbWVfZGVjcnlwdG9yKAor
ICAgICAgbmV3IEZha2VGcmFtZURlY3J5cHRvcigpKTsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIGF1
ZGlvX3J0cF9yZWNlaXZlcl8tPkdldEZyYW1lRGVjcnlwdG9yKCkpOworICBhdWRpb19ydHBfcmVj
ZWl2ZXJfLT5TdG9wKCk7CisgIGF1ZGlvX3J0cF9yZWNlaXZlcl8tPlNldEZyYW1lRGVjcnlwdG9y
KGZha2VfZnJhbWVfZGVjcnlwdG9yKTsKKyAgLy8gVE9ETyh3ZWJydGM6OTkyNikgLSBWYWxpZGF0
ZSBtZWRpYSBjaGFubmVsIG5vdCBzZXQgb25jZSBmYWtlcyB1cGRhdGVkLgorfQorCisvLyBWYWxp
ZGF0ZSB0aGF0IHRoZSBkZWZhdWx0IEZyYW1lRW5jcnlwdG9yIHNldHRpbmcgaXMgbnVsbHB0ci4K
K1RFU1RfRihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIFZpZGVvU2VuZGVyQ2FuU2V0RnJhbWVFbmNy
eXB0b3IpIHsKKyAgQ3JlYXRlVmlkZW9SdHBTZW5kZXIoKTsKKyAgcnRjOjpzY29wZWRfcmVmcHRy
PEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBmYWtlX2ZyYW1lX2VuY3J5cHRvcigKKyAgICAgIG5l
dyBGYWtlRnJhbWVFbmNyeXB0b3IoKSk7CisgIEVYUEVDVF9FUShudWxscHRyLCB2aWRlb19ydHBf
c2VuZGVyXy0+R2V0RnJhbWVFbmNyeXB0b3IoKSk7CisgIHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRG
cmFtZUVuY3J5cHRvcihmYWtlX2ZyYW1lX2VuY3J5cHRvcik7CisgIEVYUEVDVF9FUShmYWtlX2Zy
YW1lX2VuY3J5cHRvci5nZXQoKSwKKyAgICAgICAgICAgIHZpZGVvX3J0cF9zZW5kZXJfLT5HZXRG
cmFtZUVuY3J5cHRvcigpLmdldCgpKTsKK30KKworLy8gVmFsaWRhdGUgdGhhdCBzZXR0aW5nIGEg
RnJhbWVFbmNyeXB0b3IgYWZ0ZXIgdGhlIHNlbmQgc3RyZWFtIGlzIHN0b3BwZWQgZG9lcworLy8g
bm90aGluZy4KK1RFU1RfRihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIFZpZGVvU2VuZGVyQ2Fubm90
U2V0RnJhbWVFbmNyeXB0b3JBZnRlclN0b3ApIHsKKyAgQ3JlYXRlVmlkZW9SdHBTZW5kZXIoKTsK
KyAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBmYWtlX2ZyYW1l
X2VuY3J5cHRvcigKKyAgICAgIG5ldyBGYWtlRnJhbWVFbmNyeXB0b3IoKSk7CisgIEVYUEVDVF9F
UShudWxscHRyLCB2aWRlb19ydHBfc2VuZGVyXy0+R2V0RnJhbWVFbmNyeXB0b3IoKSk7CisgIHZp
ZGVvX3J0cF9zZW5kZXJfLT5TdG9wKCk7CisgIHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRGcmFtZUVu
Y3J5cHRvcihmYWtlX2ZyYW1lX2VuY3J5cHRvcik7CisgIC8vIFRPRE8od2VicnRjOjk5MjYpIC0g
VmFsaWRhdGUgbWVkaWEgY2hhbm5lbCBub3Qgc2V0IG9uY2UgZmFrZXMgdXBkYXRlZC4KK30KKwor
Ly8gVmFsaWRhdGUgdGhhdCB0aGUgZGVmYXVsdCBGcmFtZUVuY3J5cHRvciBzZXR0aW5nIGlzIG51
bGxwdHIuCitURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBWaWRlb1JlY2VpdmVyQ2FuU2V0
RnJhbWVEZWNyeXB0b3IpIHsKKyAgQ3JlYXRlVmlkZW9SdHBSZWNlaXZlcigpOworICBydGM6OnNj
b3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZha2VfZnJhbWVfZGVjcnlwdG9y
KAorICAgICAgbmV3IEZha2VGcmFtZURlY3J5cHRvcigpKTsKKyAgRVhQRUNUX0VRKG51bGxwdHIs
IHZpZGVvX3J0cF9yZWNlaXZlcl8tPkdldEZyYW1lRGVjcnlwdG9yKCkpOworICB2aWRlb19ydHBf
cmVjZWl2ZXJfLT5TZXRGcmFtZURlY3J5cHRvcihmYWtlX2ZyYW1lX2RlY3J5cHRvcik7CisgIEVY
UEVDVF9FUShmYWtlX2ZyYW1lX2RlY3J5cHRvci5nZXQoKSwKKyAgICAgICAgICAgIHZpZGVvX3J0
cF9yZWNlaXZlcl8tPkdldEZyYW1lRGVjcnlwdG9yKCkuZ2V0KCkpOworfQorCisvLyBWYWxpZGF0
ZSB0aGF0IHRoZSBkZWZhdWx0IEZyYW1lRW5jcnlwdG9yIHNldHRpbmcgaXMgbnVsbHB0ci4KK1RF
U1RfRihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIFZpZGVvUmVjZWl2ZXJDYW5ub3RTZXRGcmFtZURl
Y3J5cHRvckFmdGVyU3RvcCkgeworICBDcmVhdGVWaWRlb1J0cFJlY2VpdmVyKCk7CisgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZmFrZV9mcmFtZV9kZWNyeXB0
b3IoCisgICAgICBuZXcgRmFrZUZyYW1lRGVjcnlwdG9yKCkpOworICBFWFBFQ1RfRVEobnVsbHB0
ciwgdmlkZW9fcnRwX3JlY2VpdmVyXy0+R2V0RnJhbWVEZWNyeXB0b3IoKSk7CisgIHZpZGVvX3J0
cF9yZWNlaXZlcl8tPlN0b3AoKTsKKyAgdmlkZW9fcnRwX3JlY2VpdmVyXy0+U2V0RnJhbWVEZWNy
eXB0b3IoZmFrZV9mcmFtZV9kZWNyeXB0b3IpOworICAvLyBUT0RPKHdlYnJ0Yzo5OTI2KSAtIFZh
bGlkYXRlIG1lZGlhIGNoYW5uZWwgbm90IHNldCBvbmNlIGZha2VzIHVwZGF0ZWQuCit9CisKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2VpdmVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXIuY2MKaW5kZXggMGZl
OGVhNmY1MGE5OTMwZjNlOGM4YWIzMTUxNjk2ZDNiZWZkMjQwMi4uOGI1NmI4YjRmMTBhNTI5Zjli
OWEzYjNlMDgxNDIxNGQxNjY0Yjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXIuY2MKQEAg
LTM4LDUyICszOCw0NSBAQCBSdHBUcmFuc2NlaXZlcjo6flJ0cFRyYW5zY2VpdmVyKCkgewogICBT
dG9wKCk7CiB9CiAKLXZvaWQgUnRwVHJhbnNjZWl2ZXI6OlNldENoYW5uZWwoY3JpY2tldDo6QmFz
ZUNoYW5uZWwqIGNoYW5uZWwpIHsKK3ZvaWQgUnRwVHJhbnNjZWl2ZXI6OlNldENoYW5uZWwoY3Jp
Y2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbCkgeworICAvLyBDYW5ub3Qgc2V0IGEgbm9u
LW51bGwgY2hhbm5lbCBvbiBhIHN0b3BwZWQgdHJhbnNjZWl2ZXIuCisgIGlmIChzdG9wcGVkXyAm
JiBjaGFubmVsKSB7CisgICAgcmV0dXJuOworICB9CisKICAgaWYgKGNoYW5uZWwpIHsKICAgICBS
VENfRENIRUNLX0VRKG1lZGlhX3R5cGUoKSwgY2hhbm5lbC0+bWVkaWFfdHlwZSgpKTsKICAgfQog
CiAgIGlmIChjaGFubmVsXykgewotICAgIGNoYW5uZWxfLT5TaWduYWxGaXJzdFBhY2tldFJlY2Vp
dmVkLmRpc2Nvbm5lY3QodGhpcyk7CisgICAgY2hhbm5lbF8tPlNpZ25hbEZpcnN0UGFja2V0UmVj
ZWl2ZWQoKS5kaXNjb25uZWN0KHRoaXMpOwogICB9CiAKICAgY2hhbm5lbF8gPSBjaGFubmVsOwog
CiAgIGlmIChjaGFubmVsXykgewotICAgIGNoYW5uZWxfLT5TaWduYWxGaXJzdFBhY2tldFJlY2Vp
dmVkLmNvbm5lY3QoCisgICAgY2hhbm5lbF8tPlNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWQoKS5j
b25uZWN0KAogICAgICAgICB0aGlzLCAmUnRwVHJhbnNjZWl2ZXI6Ok9uRmlyc3RQYWNrZXRSZWNl
aXZlZCk7CiAgIH0KIAogICBmb3IgKGF1dG8gc2VuZGVyIDogc2VuZGVyc18pIHsKLSAgICBpZiAo
bWVkaWFfdHlwZSgpID09IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8pIHsKLSAgICAgIGF1dG8q
IHZvaWNlX2NoYW5uZWwgPSBzdGF0aWNfY2FzdDxjcmlja2V0OjpWb2ljZUNoYW5uZWwqPihjaGFu
bmVsKTsKLSAgICAgIHNlbmRlci0+aW50ZXJuYWwoKS0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwoCi0g
ICAgICAgICAgdm9pY2VfY2hhbm5lbCA/IHZvaWNlX2NoYW5uZWwtPm1lZGlhX2NoYW5uZWwoKSA6
IG51bGxwdHIpOwotICAgIH0gZWxzZSB7Ci0gICAgICBhdXRvKiB2aWRlb19jaGFubmVsID0gc3Rh
dGljX2Nhc3Q8Y3JpY2tldDo6VmlkZW9DaGFubmVsKj4oY2hhbm5lbCk7Ci0gICAgICBzZW5kZXIt
PmludGVybmFsKCktPlNldFZpZGVvTWVkaWFDaGFubmVsKAotICAgICAgICAgIHZpZGVvX2NoYW5u
ZWwgPyB2aWRlb19jaGFubmVsLT5tZWRpYV9jaGFubmVsKCkgOiBudWxscHRyKTsKLSAgICB9Cisg
ICAgc2VuZGVyLT5pbnRlcm5hbCgpLT5TZXRNZWRpYUNoYW5uZWwoY2hhbm5lbF8gPyBjaGFubmVs
Xy0+bWVkaWFfY2hhbm5lbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBudWxscHRyKTsKICAgfQogCiAgIGZvciAoYXV0byByZWNlaXZlciA6IHJl
Y2VpdmVyc18pIHsKLSAgICBpZiAoIWNoYW5uZWwpIHsKKyAgICBpZiAoIWNoYW5uZWxfKSB7CiAg
ICAgICByZWNlaXZlci0+aW50ZXJuYWwoKS0+U3RvcCgpOwogICAgIH0KLSAgICBpZiAobWVkaWFf
dHlwZSgpID09IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8pIHsKLSAgICAgIGF1dG8qIHZvaWNl
X2NoYW5uZWwgPSBzdGF0aWNfY2FzdDxjcmlja2V0OjpWb2ljZUNoYW5uZWwqPihjaGFubmVsKTsK
LSAgICAgIHJlY2VpdmVyLT5pbnRlcm5hbCgpLT5TZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAgICAg
ICAgICB2b2ljZV9jaGFubmVsID8gdm9pY2VfY2hhbm5lbC0+bWVkaWFfY2hhbm5lbCgpIDogbnVs
bHB0cik7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGF1dG8qIHZpZGVvX2NoYW5uZWwgPSBzdGF0aWNf
Y2FzdDxjcmlja2V0OjpWaWRlb0NoYW5uZWwqPihjaGFubmVsKTsKLSAgICAgIHJlY2VpdmVyLT5p
bnRlcm5hbCgpLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCgKLSAgICAgICAgICB2aWRlb19jaGFubmVs
ID8gdmlkZW9fY2hhbm5lbC0+bWVkaWFfY2hhbm5lbCgpIDogbnVsbHB0cik7Ci0gICAgfQorCisg
ICAgcmVjZWl2ZXItPmludGVybmFsKCktPlNldE1lZGlhQ2hhbm5lbChjaGFubmVsXyA/IGNoYW5u
ZWxfLT5tZWRpYV9jaGFubmVsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogbnVsbHB0cik7CiAgIH0KIH0KIAogdm9pZCBSdHBUcmFuc2NlaXZl
cjo6QWRkU2VuZGVyKAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxSdHBTZW5kZXJQcm94eVdpdGhJ
bnRlcm5hbDxSdHBTZW5kZXJJbnRlcm5hbD4+IHNlbmRlcikgeworICBSVENfRENIRUNLKCFzdG9w
cGVkXyk7CiAgIFJUQ19EQ0hFQ0soIXVuaWZpZWRfcGxhbl8pOwogICBSVENfRENIRUNLKHNlbmRl
cik7CiAgIFJUQ19EQ0hFQ0tfRVEobWVkaWFfdHlwZSgpLCBzZW5kZXItPm1lZGlhX3R5cGUoKSk7
CkBAIC0xMDksNiArMTAyLDcgQEAgYm9vbCBSdHBUcmFuc2NlaXZlcjo6UmVtb3ZlU2VuZGVyKFJ0
cFNlbmRlckludGVyZmFjZSogc2VuZGVyKSB7CiB2b2lkIFJ0cFRyYW5zY2VpdmVyOjpBZGRSZWNl
aXZlcigKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8UnRwUmVjZWl2ZXJQcm94eVdpdGhJbnRlcm5h
bDxSdHBSZWNlaXZlckludGVybmFsPj4KICAgICAgICAgcmVjZWl2ZXIpIHsKKyAgUlRDX0RDSEVD
Syghc3RvcHBlZF8pOwogICBSVENfRENIRUNLKCF1bmlmaWVkX3BsYW5fKTsKICAgUlRDX0RDSEVD
SyhyZWNlaXZlcik7CiAgIFJUQ19EQ0hFQ0tfRVEobWVkaWFfdHlwZSgpLCByZWNlaXZlci0+bWVk
aWFfdHlwZSgpKTsKQEAgLTE1Miw3ICsxNDYsNyBAQCBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmlu
Zz4gUnRwVHJhbnNjZWl2ZXI6Om1pZCgpIGNvbnN0IHsKICAgcmV0dXJuIG1pZF87CiB9CiAKLXZv
aWQgUnRwVHJhbnNjZWl2ZXI6Ok9uRmlyc3RQYWNrZXRSZWNlaXZlZChjcmlja2V0OjpCYXNlQ2hh
bm5lbCogY2hhbm5lbCkgewordm9pZCBSdHBUcmFuc2NlaXZlcjo6T25GaXJzdFBhY2tldFJlY2Vp
dmVkKGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqKSB7CiAgIGZvciAoYXV0byByZWNlaXZlciA6
IHJlY2VpdmVyc18pIHsKICAgICByZWNlaXZlci0+aW50ZXJuYWwoKS0+Tm90aWZ5Rmlyc3RQYWNr
ZXRSZWNlaXZlZCgpOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXIuaAppbmRleCAzZTBkNDMz
NzgyNjExNTc2Y2E5MmU1MTZlNGU2YjQ5NTQzYWUyOTUwLi4wN2RiMTk2ZWRkOWFiZGNhNTNjYzhl
ZWUzM2M2MmEyYmI0ZWE2NGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2VpdmVyLmgKQEAgLTcwLDEx
ICs3MCwxMSBAQCBjbGFzcyBSdHBUcmFuc2NlaXZlciBmaW5hbAogCiAgIC8vIFJldHVybnMgdGhl
IFZvaWNlL1ZpZGVvQ2hhbm5lbCBzZXQgZm9yIHRoaXMgdHJhbnNjZWl2ZXIuIE1heSBiZSBudWxs
IGlmCiAgIC8vIHRoZSB0cmFuc2NlaXZlciBpcyBub3QgaW4gdGhlIGN1cnJlbnRseSBzZXQgbG9j
YWwvcmVtb3RlIGRlc2NyaXB0aW9uLgotICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCgp
IGNvbnN0IHsgcmV0dXJuIGNoYW5uZWxfOyB9CisgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2Uq
IGNoYW5uZWwoKSBjb25zdCB7IHJldHVybiBjaGFubmVsXzsgfQogCiAgIC8vIFNldHMgdGhlIFZv
aWNlL1ZpZGVvQ2hhbm5lbC4gVGhlIGNhbGxlciBtdXN0IHBhc3MgaW4gdGhlIGNvcnJlY3QgY2hh
bm5lbAogICAvLyBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUgdHJhbnNj
ZWl2ZXIuCi0gIHZvaWQgU2V0Q2hhbm5lbChjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCk7
CisgIHZvaWQgU2V0Q2hhbm5lbChjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBjaGFubmVsKTsK
IAogICAvLyBBZGRzIGFuIFJ0cFNlbmRlciBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZSB0byBiZSBv
d25lZCBieSB0aGlzIHRyYW5zY2VpdmVyLgogICAvLyBNdXN0IG5vdCBiZSBudWxsLgpAQCAtMTc3
LDcgKzE3Nyw3IEBAIGNsYXNzIFJ0cFRyYW5zY2VpdmVyIGZpbmFsCiAgIHZvaWQgU2V0Q29kZWNQ
cmVmZXJlbmNlcyhydGM6OkFycmF5VmlldzxSdHBDb2RlY0NhcGFiaWxpdHk+IGNvZGVjcykgb3Zl
cnJpZGU7CiAKICBwcml2YXRlOgotICB2b2lkIE9uRmlyc3RQYWNrZXRSZWNlaXZlZChjcmlja2V0
OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCk7CisgIHZvaWQgT25GaXJzdFBhY2tldFJlY2VpdmVkKGNy
aWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwpOwogCiAgIGNvbnN0IGJvb2wgdW5pZmll
ZF9wbGFuXzsKICAgY29uc3QgY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGVfOwpAQCAtMTk2
LDcgKzE5Niw3IEBAIGNsYXNzIFJ0cFRyYW5zY2VpdmVyIGZpbmFsCiAgIGJvb2wgY3JlYXRlZF9i
eV9hZGR0cmFja18gPSBmYWxzZTsKICAgYm9vbCBoYXNfZXZlcl9iZWVuX3VzZWRfdG9fc2VuZF8g
PSBmYWxzZTsKIAotICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbF8gPSBudWxscHRyOwor
ICBjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBjaGFubmVsXyA9IG51bGxwdHI7CiB9OwogCiBC
RUdJTl9TSUdOQUxJTkdfUFJPWFlfTUFQKFJ0cFRyYW5zY2VpdmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXJf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9ydHB0cmFuc2NlaXZlcl91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTdkMjEyM2QxNTJmYjJi
ZjMzNWE4OTY5NjVlN2ZlNjEwNTJmNTg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXJfdW5pdHRlc3Qu
Y2MKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworLy8gVGhpcyBmaWxlIGNv
bnRhaW5zIHRlc3RzIGZvciB8UnRwVHJhbnNjZWl2ZXJ8LgorCisjaW5jbHVkZSAicGMvcnRwdHJh
bnNjZWl2ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgorI2luY2x1ZGUgInRlc3Qv
Z21vY2suaCIKKyNpbmNsdWRlICJ0ZXN0L21vY2tfY2hhbm5lbGludGVyZmFjZS5oIgorCit1c2lu
ZyA6OnRlc3Rpbmc6OlJldHVybjsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuUmVmOworCituYW1l
c3BhY2Ugd2VicnRjIHsKKworLy8gQ2hlY2tzIHRoYXQgYSBjaGFubmVsIGNhbm5vdCBiZSBzZXQg
b24gYSBzdG9wcGVkIHxSdHBUcmFuc2NlaXZlcnwuCitURVNUKFJ0cFRyYW5zY2VpdmVyVGVzdCwg
Q2Fubm90U2V0Q2hhbm5lbE9uU3RvcHBlZFRyYW5zY2VpdmVyKSB7CisgIFJ0cFRyYW5zY2VpdmVy
IHRyYW5zY2VpdmVyKGNyaWNrZXQ6Ok1lZGlhVHlwZTo6TUVESUFfVFlQRV9BVURJTyk7CisgIGNy
aWNrZXQ6Ok1vY2tDaGFubmVsSW50ZXJmYWNlIGNoYW5uZWwxOworICBzaWdzbG90OjpzaWduYWwx
PGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqPiBzaWduYWw7CisgIEVYUEVDVF9DQUxMKGNoYW5u
ZWwxLCBtZWRpYV90eXBlKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGNyaWNrZXQ6
Ok1lZGlhVHlwZTo6TUVESUFfVFlQRV9BVURJTykpOworICBFWFBFQ1RfQ0FMTChjaGFubmVsMSwg
U2lnbmFsRmlyc3RQYWNrZXRSZWNlaXZlZCgpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVy
blJlZihzaWduYWwpKTsKKworICB0cmFuc2NlaXZlci5TZXRDaGFubmVsKCZjaGFubmVsMSk7Cisg
IEVYUEVDVF9FUSgmY2hhbm5lbDEsIHRyYW5zY2VpdmVyLmNoYW5uZWwoKSk7CisKKyAgLy8gU3Rv
cCB0aGUgdHJhbnNjZWl2ZXIuCisgIHRyYW5zY2VpdmVyLlN0b3AoKTsKKyAgRVhQRUNUX0VRKCZj
aGFubmVsMSwgdHJhbnNjZWl2ZXIuY2hhbm5lbCgpKTsKKworICBjcmlja2V0OjpNb2NrQ2hhbm5l
bEludGVyZmFjZSBjaGFubmVsMjsKKyAgRVhQRUNUX0NBTEwoY2hhbm5lbDIsIG1lZGlhX3R5cGUo
KSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oY3JpY2tldDo6TWVkaWFUeXBlOjpNRURJ
QV9UWVBFX0FVRElPKSk7CisKKyAgLy8gQ2hhbm5lbCBjYW4gbm8gbG9uZ2VyIGJlIHNldCwgc28g
dGhpcyBjYWxsIHNob3VsZCBiZSBhIG5vLW9wLgorICB0cmFuc2NlaXZlci5TZXRDaGFubmVsKCZj
aGFubmVsMik7CisgIEVYUEVDVF9FUSgmY2hhbm5lbDEsIHRyYW5zY2VpdmVyLmNoYW5uZWwoKSk7
Cit9CisKKy8vIENoZWNrcyB0aGF0IGEgY2hhbm5lbCBjYW4gYmUgdW5zZXQgb24gYSBzdG9wcGVk
IHxSdHBUcmFuc2NlaXZlcnwKK1RFU1QoUnRwVHJhbnNjZWl2ZXJUZXN0LCBDYW5VbnNldENoYW5u
ZWxPblN0b3BwZWRUcmFuc2NlaXZlcikgeworICBSdHBUcmFuc2NlaXZlciB0cmFuc2NlaXZlcihj
cmlja2V0OjpNZWRpYVR5cGU6Ok1FRElBX1RZUEVfVklERU8pOworICBjcmlja2V0OjpNb2NrQ2hh
bm5lbEludGVyZmFjZSBjaGFubmVsOworICBzaWdzbG90OjpzaWduYWwxPGNyaWNrZXQ6OkNoYW5u
ZWxJbnRlcmZhY2UqPiBzaWduYWw7CisgIEVYUEVDVF9DQUxMKGNoYW5uZWwsIG1lZGlhX3R5cGUo
KSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oY3JpY2tldDo6TWVkaWFUeXBlOjpNRURJ
QV9UWVBFX1ZJREVPKSk7CisgIEVYUEVDVF9DQUxMKGNoYW5uZWwsIFNpZ25hbEZpcnN0UGFja2V0
UmVjZWl2ZWQoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm5SZWYoc2lnbmFsKSk7CisK
KyAgdHJhbnNjZWl2ZXIuU2V0Q2hhbm5lbCgmY2hhbm5lbCk7CisgIEVYUEVDVF9FUSgmY2hhbm5l
bCwgdHJhbnNjZWl2ZXIuY2hhbm5lbCgpKTsKKworICAvLyBTdG9wIHRoZSB0cmFuc2NlaXZlci4K
KyAgdHJhbnNjZWl2ZXIuU3RvcCgpOworICBFWFBFQ1RfRVEoJmNoYW5uZWwsIHRyYW5zY2VpdmVy
LmNoYW5uZWwoKSk7CisKKyAgLy8gU2V0IHRoZSBjaGFubmVsIHRvIHxudWxscHRyfC4KKyAgdHJh
bnNjZWl2ZXIuU2V0Q2hhbm5lbChudWxscHRyKTsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIHRyYW5z
Y2VpdmVyLmNoYW5uZWwoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5z
cG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0
cHRyYW5zcG9ydC5jYwppbmRleCA5ZTk5NGU5Yjk4MDRhNTFhYzU2YjY3OTdhNTY3ZDBhZjcxMzZl
Y2QwLi40YTU3MzAxNmYyMWU4N2JjYzhiMjFlMGZhNzFlZWI4NDY0ODFkNzdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc3Bv
cnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cnRwdHJhbnNwb3J0LmNjCkBAIC0xODcsNyArMTg3LDcgQEAgUnRwVHJhbnNwb3J0UGFyYW1ldGVy
cyBSdHBUcmFuc3BvcnQ6OkdldFBhcmFtZXRlcnMoKSBjb25zdCB7CiB9CiAKIHZvaWQgUnRwVHJh
bnNwb3J0OjpEZW11eFBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiB0aW1lKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykg
ewogICB3ZWJydGM6OlJ0cFBhY2tldFJlY2VpdmVkIHBhcnNlZF9wYWNrZXQoJmhlYWRlcl9leHRl
bnNpb25fbWFwXyk7CiAgIGlmICghcGFyc2VkX3BhY2tldC5QYXJzZShzdGQ6Om1vdmUoKnBhY2tl
dCkpKSB7CiAgICAgUlRDX0xPRyhMU19FUlJPUikKQEAgLTE5NSw4ICsxOTUsOCBAQCB2b2lkIFJ0
cFRyYW5zcG9ydDo6RGVtdXhQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAog
ICAgIHJldHVybjsKICAgfQogCi0gIGlmICh0aW1lLnRpbWVzdGFtcCAhPSAtMSkgewotICAgIHBh
cnNlZF9wYWNrZXQuc2V0X2Fycml2YWxfdGltZV9tcygodGltZS50aW1lc3RhbXAgKyA1MDApIC8g
MTAwMCk7CisgIGlmIChwYWNrZXRfdGltZV91cyAhPSAtMSkgeworICAgIHBhcnNlZF9wYWNrZXQu
c2V0X2Fycml2YWxfdGltZV9tcygocGFja2V0X3RpbWVfdXMgKyA1MDApIC8gMTAwMCk7CiAgIH0K
ICAgcnRwX2RlbXV4ZXJfLk9uUnRwUGFja2V0KHBhcnNlZF9wYWNrZXQpOwogfQpAQCAtMjM2LDE5
ICsyMzYsMTkgQEAgdm9pZCBSdHBUcmFuc3BvcnQ6Ok9uU2VudFBhY2tldChydGM6OlBhY2tldFRy
YW5zcG9ydEludGVybmFsKiBwYWNrZXRfdHJhbnNwb3J0LAogfQogCiB2b2lkIFJ0cFRyYW5zcG9y
dDo6T25SdHBQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRp
bWUmIHBhY2tldF90aW1lKSB7Ci0gIERlbXV4UGFja2V0KHBhY2tldCwgcGFja2V0X3RpbWUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGlt
ZV91cykgeworICBEZW11eFBhY2tldChwYWNrZXQsIHBhY2tldF90aW1lX3VzKTsKIH0KIAogdm9p
ZCBSdHBUcmFuc3BvcnQ6Ok9uUnRjcFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZm
ZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7Ci0gIFNpZ25hbFJ0Y3BQYWNrZXRSZWNl
aXZlZChwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CisgIFNpZ25hbFJ0Y3BQYWNrZXRS
ZWNlaXZlZChwYWNrZXQsIHBhY2tldF90aW1lX3VzKTsKIH0KIAogdm9pZCBSdHBUcmFuc3BvcnQ6
Ok9uUmVhZFBhY2tldChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpIHsKICAgVFJBQ0VfRVZF
TlQwKCJ3ZWJydGMiLCAiUnRwVHJhbnNwb3J0OjpPblJlYWRQYWNrZXQiKTsKIApAQCAtMjcyLDkg
KzI3Miw5IEBAIHZvaWQgUnRwVHJhbnNwb3J0OjpPblJlYWRQYWNrZXQocnRjOjpQYWNrZXRUcmFu
c3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICB9CiAKICAgaWYgKHJ0Y3ApIHsKLSAgICBPblJ0
Y3BQYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBwYWNrZXRfdGltZSk7CisgICAgT25SdGNwUGFja2V0
UmVjZWl2ZWQoJnBhY2tldCwgcGFja2V0X3RpbWVfdXMpOwogICB9IGVsc2UgewotICAgIE9uUnRw
UGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcGFja2V0X3RpbWUpOworICAgIE9uUnRwUGFja2V0UmVj
ZWl2ZWQoJnBhY2tldCwgcGFja2V0X3RpbWVfdXMpOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zcG9ydC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNw
b3J0LmgKaW5kZXggNzkzYWM5MDFhYTVjOGNiNDhjZjJjZjMzZTVhZWI5YmQ0NmI5ZDA5OC4uZGFi
NTkwMzE3MTU1OGVmNzc5M2NmOWNmZThmOWI0NGQ0Mjc5M2NmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNw
b3J0LmgKQEAgLTg3LDcgKzg3LDcgQEAgY2xhc3MgUnRwVHJhbnNwb3J0IDogcHVibGljIFJ0cFRy
YW5zcG9ydEludGVybmFsIHsKICAgUnRwVHJhbnNwb3J0QWRhcHRlciogR2V0SW50ZXJuYWwoKSBv
dmVycmlkZTsKIAogICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgYmUgdXNlZCBpbiB0aGUgc3ViY2xh
c3Nlcy4KLSAgdm9pZCBEZW11eFBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQs
IGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGltZSk7CisgIHZvaWQgRGVtdXhQYWNrZXQocnRjOjpD
b3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LCBpbnQ2NF90IHBhY2tldF90aW1lX3VzKTsKIAogICBi
b29sIFNlbmRQYWNrZXQoYm9vbCBydGNwLAogICAgICAgICAgICAgICAgICAgcnRjOjpDb3B5T25X
cml0ZUJ1ZmZlciogcGFja2V0LApAQCAtOTgsOSArOTgsOSBAQCBjbGFzcyBSdHBUcmFuc3BvcnQg
OiBwdWJsaWMgUnRwVHJhbnNwb3J0SW50ZXJuYWwgewogICB2aXJ0dWFsIHZvaWQgT25OZXR3b3Jr
Um91dGVDaGFuZ2VkKAogICAgICAgYWJzbDo6b3B0aW9uYWw8cnRjOjpOZXR3b3JrUm91dGU+IG5l
dHdvcmtfcm91dGUpOwogICB2aXJ0dWFsIHZvaWQgT25SdHBQYWNrZXRSZWNlaXZlZChydGM6OkNv
cHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKTsKICAgdmlydHVhbCB2
b2lkIE9uUnRjcFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGlt
ZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCBwYWNrZXRfdGltZV91cyk7CiAgIC8vIE92ZXJyaWRkZW4gYnkgU3J0cFRyYW5zcG9ydCBh
bmQgRHRsc1NydHBUcmFuc3BvcnQuCiAgIHZpcnR1YWwgdm9pZCBPbldyaXRhYmxlU3RhdGUocnRj
OjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9ydCk7CiAKQEAgLTExMSw3
ICsxMTEsNyBAQCBjbGFzcyBSdHBUcmFuc3BvcnQgOiBwdWJsaWMgUnRwVHJhbnNwb3J0SW50ZXJu
YWwgewogICB2b2lkIE9uUmVhZFBhY2tldChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0
cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
UGFja2V0VGltZSYgcGFja2V0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0
X3QmIHBhY2tldF90aW1lX3VzLAogICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOwogCiAg
IC8vIFVwZGF0ZXMgInJlYWR5IHRvIHNlbmQiIGZvciBhbiBpbmRpdmlkdWFsIGNoYW5uZWwgYW5k
IGZpcmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9ydHB0cmFuc3BvcnRpbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0aW50ZXJuYWwuaAppbmRleCBjYTA1Njgw
NzEwODZjZTUxYWQxNjgwYjYyY2YyOWU3ZWMwZTU5ZWRkLi5lNjMzODM2NmMwNjM3ZWNmMDZkM2Iy
OGZlMzFlMTllNjU3NzQ1ZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc3BvcnRpbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zcG9ydGludGVybmFs
LmgKQEAgLTI0LDcgKzI0LDYgQEAKIG5hbWVzcGFjZSBydGMgewogY2xhc3MgQ29weU9uV3JpdGVC
dWZmZXI7CiBzdHJ1Y3QgUGFja2V0T3B0aW9uczsKLXN0cnVjdCBQYWNrZXRUaW1lOwogfSAgLy8g
bmFtZXNwYWNlIHJ0YwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTU5LDggKzU4LDcgQEAgY2xh
c3MgUnRwVHJhbnNwb3J0SW50ZXJuYWwgOiBwdWJsaWMgU3J0cFRyYW5zcG9ydEludGVyZmFjZSwK
ICAgLy8gQ2FsbGVkIHdoZW5ldmVyIGFuIFJUQ1AgcGFja2V0IGlzIHJlY2VpdmVkLiBUaGVyZSBp
cyBubyBlcXVpdmFsZW50IHNpZ25hbAogICAvLyBmb3IgUlRQIHBhY2tldHMgYmVjYXVzZSB0aGV5
IHdvdWxkIGJlIGZvcndhcmRlZCB0byB0aGUgQmFzZUNoYW5uZWwgdGhyb3VnaAogICAvLyB0aGUg
UnRwRGVtdXhlciBjYWxsYmFjay4KLSAgc2lnc2xvdDo6c2lnbmFsMjxydGM6OkNvcHlPbldyaXRl
QnVmZmVyKiwgY29uc3QgcnRjOjpQYWNrZXRUaW1lJj4KLSAgICAgIFNpZ25hbFJ0Y3BQYWNrZXRS
ZWNlaXZlZDsKKyAgc2lnc2xvdDo6c2lnbmFsMjxydGM6OkNvcHlPbldyaXRlQnVmZmVyKiwgaW50
NjRfdD4gU2lnbmFsUnRjcFBhY2tldFJlY2VpdmVkOwogCiAgIC8vIENhbGxlZCB3aGVuZXZlciB0
aGUgbmV0d29yayByb3V0ZSBvZiB0aGUgUDJQIGxheWVyIHRyYW5zcG9ydCBjaGFuZ2VzLgogICAv
LyBUaGUgYXJndW1lbnQgaXMgYW4gb3B0aW9uYWwgbmV0d29yayByb3V0ZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zcG9y
dHRlc3R1dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9ydHB0cmFuc3BvcnR0ZXN0dXRpbC5oCmluZGV4IGViMzM3NzMwZDEwN2Y4YzhkODFhOGQyOGEy
YWEwNGYzMmU2MDIyNTQuLmYyYzM1MTIyYWFmNDRhMzQ3MjY3ZmFkMzdmOWYyMjVjMjQ0NzYzOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3J0cHRyYW5zcG9ydHRlc3R1dGlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0dGVzdHV0aWwuaApAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBUcmFuc3BvcnRPYnNlcnZlciA6IHB1YmxpYyBSdHBQYWNrZXRTaW5rSW50ZXJmYWNl
LAogICB9CiAKICAgdm9pZCBPblJ0Y3BQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVm
ZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNr
ZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgICBydGNwX2NvdW50XysrOwogICAgIGxhc3RfcmVjdl9y
dGNwX3BhY2tldF8gPSAqcGFja2V0OwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb24uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRp
b24uY2MKaW5kZXggZjNlODliNDdmYWRiNjZjMDAwMDExZGM4ODhmMmNjMzYzNGI5OTU3ZC4uM2E5
YjE4ZWU2OTE5YjM3ZmY1OTQwZWU2MDY0ZWNjYjdiNDZhOGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9u
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nl
c3Npb25kZXNjcmlwdGlvbi5jYwpAQCAtODQsMjEgKzg0LDYgQEAgYm9vbCBDb250ZW50R3JvdXA6
OlJlbW92ZUNvbnRlbnROYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUpIHsKIH0K
IAogU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb24oKSA9IGRlZmF1bHQ7Ci0K
LVNlc3Npb25EZXNjcmlwdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uKGNvbnN0IENvbnRlbnRJbmZv
cyYgY29udGVudHMpCi0gICAgOiBjb250ZW50c18oY29udGVudHMpIHt9Ci0KLVNlc3Npb25EZXNj
cmlwdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uKGNvbnN0IENvbnRlbnRJbmZvcyYgY29udGVudHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb250ZW50R3Jv
dXBzJiBncm91cHMpCi0gICAgOiBjb250ZW50c18oY29udGVudHMpLCBjb250ZW50X2dyb3Vwc18o
Z3JvdXBzKSB7fQotCi1TZXNzaW9uRGVzY3JpcHRpb246OlNlc3Npb25EZXNjcmlwdGlvbihjb25z
dCBDb250ZW50SW5mb3MmIGNvbnRlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVHJhbnNwb3J0SW5mb3MmIHRyYW5zcG9ydHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb250ZW50R3JvdXBzJiBncm91cHMpCi0g
ICAgOiBjb250ZW50c18oY29udGVudHMpLAotICAgICAgdHJhbnNwb3J0X2luZm9zXyh0cmFuc3Bv
cnRzKSwKLSAgICAgIGNvbnRlbnRfZ3JvdXBzXyhncm91cHMpIHt9Ci0KIFNlc3Npb25EZXNjcmlw
dGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uKGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiYpID0gZGVm
YXVsdDsKIAogU2Vzc2lvbkRlc2NyaXB0aW9uOjp+U2Vzc2lvbkRlc2NyaXB0aW9uKCkgewpAQCAt
MTYyLDcgKzE0Nyw3IEBAIHZvaWQgU2Vzc2lvbkRlc2NyaXB0aW9uOjpBZGRDb250ZW50KGNvbnN0
IHN0ZDo6c3RyaW5nJiBuYW1lLAogICBDb250ZW50SW5mbyBjb250ZW50KHR5cGUpOwogICBjb250
ZW50Lm5hbWUgPSBuYW1lOwogICBjb250ZW50LmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247Ci0g
IGNvbnRlbnRzXy5wdXNoX2JhY2soc3RkOjptb3ZlKGNvbnRlbnQpKTsKKyAgQWRkQ29udGVudCgm
Y29udGVudCk7CiB9CiAKIHZvaWQgU2Vzc2lvbkRlc2NyaXB0aW9uOjpBZGRDb250ZW50KGNvbnN0
IHN0ZDo6c3RyaW5nJiBuYW1lLApAQCAtMTczLDcgKzE1OCw3IEBAIHZvaWQgU2Vzc2lvbkRlc2Ny
aXB0aW9uOjpBZGRDb250ZW50KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAogICBjb250ZW50Lm5h
bWUgPSBuYW1lOwogICBjb250ZW50LnJlamVjdGVkID0gcmVqZWN0ZWQ7CiAgIGNvbnRlbnQuZGVz
Y3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKLSAgY29udGVudHNfLnB1c2hfYmFjayhzdGQ6Om1vdmUo
Y29udGVudCkpOworICBBZGRDb250ZW50KCZjb250ZW50KTsKIH0KIAogdm9pZCBTZXNzaW9uRGVz
Y3JpcHRpb246OkFkZENvbnRlbnQoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCkBAIC0xODYsNyAr
MTcxLDE2IEBAIHZvaWQgU2Vzc2lvbkRlc2NyaXB0aW9uOjpBZGRDb250ZW50KGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lLAogICBjb250ZW50LnJlamVjdGVkID0gcmVqZWN0ZWQ7CiAgIGNvbnRlbnQu
YnVuZGxlX29ubHkgPSBidW5kbGVfb25seTsKICAgY29udGVudC5kZXNjcmlwdGlvbiA9IGRlc2Ny
aXB0aW9uOwotICBjb250ZW50c18ucHVzaF9iYWNrKHN0ZDo6bW92ZShjb250ZW50KSk7CisgIEFk
ZENvbnRlbnQoJmNvbnRlbnQpOworfQorCit2b2lkIFNlc3Npb25EZXNjcmlwdGlvbjo6QWRkQ29u
dGVudChDb250ZW50SW5mbyogY29udGVudCkgeworICBpZiAoZXh0bWFwX2FsbG93X21peGVkKCkp
IHsKKyAgICAvLyBNaXhlZCBzdXBwb3J0IG9uIHNlc3Npb24gbGV2ZWwgb3ZlcnJpZGVzIHNldHRp
bmcgb24gbWVkaWEgbGV2ZWwuCisgICAgY29udGVudC0+ZGVzY3JpcHRpb24tPnNldF9leHRtYXBf
YWxsb3dfbWl4ZWRfZW51bSgKKyAgICAgICAgTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtTZXNz
aW9uKTsKKyAgfQorICBjb250ZW50c18ucHVzaF9iYWNrKHN0ZDo6bW92ZSgqY29udGVudCkpOwog
fQogCiBib29sIFNlc3Npb25EZXNjcmlwdGlvbjo6UmVtb3ZlQ29udGVudEJ5TmFtZShjb25zdCBz
dGQ6OnN0cmluZyYgbmFtZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb24uaAppbmRl
eCA2NDVlYmM1NGY4NmU1Nzk3NDY0MGFmN2JkNTljODZjZWEwNzc2MjcyLi4zODI5MTQ4NGNkOGNi
NGU4ODg4NzM3YTc4ZDZiMGY4MjE1NGU4MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb24uaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3Jp
cHRpb24uaApAQCAtMTgzLDYgKzE4MywyMiBAQCBjbGFzcyBNZWRpYUNvbnRlbnREZXNjcmlwdGlv
biB7CiAgICAgcmV0dXJuIGNvbm5lY3Rpb25fYWRkcmVzc187CiAgIH0KIAorICAvLyBEZXRlcm1p
bmVzIGlmIGl0J3MgYWxsb3dlZCB0byBtaXggb25lLSBhbmQgdHdvLWJ5dGUgcnRwIGhlYWRlciBl
eHRlbnNpb25zCisgIC8vIHdpdGhpbiB0aGUgc2FtZSBydHAgc3RyZWFtLgorICBlbnVtIEV4dG1h
cEFsbG93TWl4ZWQgeyBrTm8sIGtTZXNzaW9uLCBrTWVkaWEgfTsKKyAgdm9pZCBzZXRfZXh0bWFw
X2FsbG93X21peGVkX2VudW0oRXh0bWFwQWxsb3dNaXhlZCBuZXdfZXh0bWFwX2FsbG93X21peGVk
KSB7CisgICAgaWYgKG5ld19leHRtYXBfYWxsb3dfbWl4ZWQgPT0ga01lZGlhICYmCisgICAgICAg
IGV4dG1hcF9hbGxvd19taXhlZF9lbnVtXyA9PSBrU2Vzc2lvbikgeworICAgICAgLy8gRG8gbm90
IGRvd25ncmFkZSBmcm9tIHNlc3Npb24gbGV2ZWwgdG8gbWVkaWEgbGV2ZWwuCisgICAgICByZXR1
cm47CisgICAgfQorICAgIGV4dG1hcF9hbGxvd19taXhlZF9lbnVtXyA9IG5ld19leHRtYXBfYWxs
b3dfbWl4ZWQ7CisgIH0KKyAgRXh0bWFwQWxsb3dNaXhlZCBleHRtYXBfYWxsb3dfbWl4ZWRfZW51
bSgpIGNvbnN0IHsKKyAgICByZXR1cm4gZXh0bWFwX2FsbG93X21peGVkX2VudW1fOworICB9Cisg
IGJvb2wgZXh0bWFwX2FsbG93X21peGVkKCkgY29uc3QgeyByZXR1cm4gZXh0bWFwX2FsbG93X21p
eGVkX2VudW1fICE9IGtObzsgfQorCiAgcHJvdGVjdGVkOgogICBib29sIHJ0Y3BfbXV4XyA9IGZh
bHNlOwogICBib29sIHJ0Y3BfcmVkdWNlZF9zaXplXyA9IGZhbHNlOwpAQCAtMTk2LDYgKzIxMiwx
MCBAQCBjbGFzcyBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiB7CiAgIHdlYnJ0Yzo6UnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24gZGlyZWN0aW9uXyA9CiAgICAgICB3ZWJydGM6OlJ0cFRyYW5zY2VpdmVy
RGlyZWN0aW9uOjprU2VuZFJlY3Y7CiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBjb25uZWN0aW9uX2Fk
ZHJlc3NfOworICAvLyBNaXhlZCBvbmUtIGFuZCB0d28tYnl0ZSBoZWFkZXIgbm90IGluY2x1ZGVk
IGluIG9mZmVyIG9uIG1lZGlhIGxldmVsIG9yCisgIC8vIHNlc3Npb24gbGV2ZWwsIGJ1dCB3ZSB3
aWxsIHJlc3BvbmQgdGhhdCB3ZSBzdXBwb3J0IGl0LiBUaGUgcGxhbiBpcyB0byBhZGQKKyAgLy8g
aXQgdG8gb3VyIG9mZmVyIG9uIHNlc3Npb24gbGV2ZWwuIFNlZSB0b2RvIGluIFNlc3Npb25EZXNj
cmlwdGlvbi4KKyAgRXh0bWFwQWxsb3dNaXhlZCBleHRtYXBfYWxsb3dfbWl4ZWRfZW51bV8gPSBr
Tm87CiB9OwogCiAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NjIwKTogUmVtb3ZlIHRoaXMgYWxp
YXMgb25jZSBkb3duc3RyZWFtIHByb2plY3RzIGhhdmUKQEAgLTM3OCwxMSArMzk4LDYgQEAgZW51
bSBNc2lkU2lnbmFsaW5nIHsKIGNsYXNzIFNlc3Npb25EZXNjcmlwdGlvbiB7CiAgcHVibGljOgog
ICBTZXNzaW9uRGVzY3JpcHRpb24oKTsKLSAgZXhwbGljaXQgU2Vzc2lvbkRlc2NyaXB0aW9uKGNv
bnN0IENvbnRlbnRJbmZvcyYgY29udGVudHMpOwotICBTZXNzaW9uRGVzY3JpcHRpb24oY29uc3Qg
Q29udGVudEluZm9zJiBjb250ZW50cywgY29uc3QgQ29udGVudEdyb3VwcyYgZ3JvdXBzKTsKLSAg
U2Vzc2lvbkRlc2NyaXB0aW9uKGNvbnN0IENvbnRlbnRJbmZvcyYgY29udGVudHMsCi0gICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUcmFuc3BvcnRJbmZvcyYgdHJhbnNwb3J0cywKLSAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvbnRlbnRHcm91cHMmIGdyb3Vwcyk7CiAgIH5TZXNzaW9uRGVz
Y3JpcHRpb24oKTsKIAogICBTZXNzaW9uRGVzY3JpcHRpb24qIENvcHkoKSBjb25zdDsKQEAgLTQx
Miw2ICs0MjcsOCBAQCBjbGFzcyBTZXNzaW9uRGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAg
ICAgYm9vbCByZWplY3RlZCwKICAgICAgICAgICAgICAgICAgIGJvb2wgYnVuZGxlX29ubHksCiAg
ICAgICAgICAgICAgICAgICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogZGVzY3JpcHRpb24pOwor
ICB2b2lkIEFkZENvbnRlbnQoQ29udGVudEluZm8qIGNvbnRlbnQpOworCiAgIGJvb2wgUmVtb3Zl
Q29udGVudEJ5TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7CiAKICAgLy8gVHJhbnNwb3J0
IGFjY2Vzc29ycy4KQEAgLTQ1NSw2ICs0NzIsMjQgQEAgY2xhc3MgU2Vzc2lvbkRlc2NyaXB0aW9u
IHsKICAgfQogICBpbnQgbXNpZF9zaWduYWxpbmcoKSBjb25zdCB7IHJldHVybiBtc2lkX3NpZ25h
bGluZ187IH0KIAorICAvLyBEZXRlcm1pbmVzIGlmIGl0J3MgYWxsb3dlZCB0byBtaXggb25lLSBh
bmQgdHdvLWJ5dGUgcnRwIGhlYWRlciBleHRlbnNpb25zCisgIC8vIHdpdGhpbiB0aGUgc2FtZSBy
dHAgc3RyZWFtLgorICB2b2lkIHNldF9leHRtYXBfYWxsb3dfbWl4ZWQoYm9vbCBzdXBwb3J0ZWQp
IHsKKyAgICBleHRtYXBfYWxsb3dfbWl4ZWRfID0gc3VwcG9ydGVkOworICAgIE1lZGlhQ29udGVu
dERlc2NyaXB0aW9uOjpFeHRtYXBBbGxvd01peGVkIG1lZGlhX2xldmVsX3NldHRpbmcgPQorICAg
ICAgICBzdXBwb3J0ZWQgPyBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a1Nlc3Npb24KKyAgICAg
ICAgICAgICAgICAgIDogTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtObzsKKyAgICBmb3IgKGF1
dG8mIGNvbnRlbnQgOiBjb250ZW50c18pIHsKKyAgICAgIC8vIERvIG5vdCBzZXQgdG8ga05vIGlm
IHRoZSBjdXJyZW50IHNldHRpbmcgaXMga01lZGlhLgorICAgICAgaWYgKHN1cHBvcnRlZCB8fCBj
b250ZW50Lm1lZGlhX2Rlc2NyaXB0aW9uKCktPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkgIT0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVk
aWEpIHsKKyAgICAgICAgY29udGVudC5tZWRpYV9kZXNjcmlwdGlvbigpLT5zZXRfZXh0bWFwX2Fs
bG93X21peGVkX2VudW0oCisgICAgICAgICAgICBtZWRpYV9sZXZlbF9zZXR0aW5nKTsKKyAgICAg
IH0KKyAgICB9CisgIH0KKyAgYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQoKSBjb25zdCB7IHJldHVy
biBleHRtYXBfYWxsb3dfbWl4ZWRfOyB9CisKICBwcml2YXRlOgogICBTZXNzaW9uRGVzY3JpcHRp
b24oY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uJik7CiAKQEAgLTQ2NSw2ICs1MDAsMTIgQEAgY2xh
c3MgU2Vzc2lvbkRlc2NyaXB0aW9uIHsKICAgLy8gRGVmYXVsdCB0byB3aGF0IFBsYW4gQiB3b3Vs
ZCBkby4KICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODUzMCk6IENoYW5nZSBkZWZhdWx0IHRv
IGtNc2lkU2lnbmFsaW5nTWVkaWFTZWN0aW9uLgogICBpbnQgbXNpZF9zaWduYWxpbmdfID0ga01z
aWRTaWduYWxpbmdTc3JjQXR0cmlidXRlOworICAvLyBUT0RPKHdlYnJ0Yzo5OTg1KTogQWN0aXZh
dGUgbWl4ZWQgb25lLSBhbmQgdHdvLWJ5dGUgaGVhZGVyIGV4dGVuc2lvbiBpbgorICAvLyBvZmZl
ciBhdCBzZXNzaW9uIGxldmVsLiBJdCdzIGN1cnJlbnRseSBub3QgaW5jbHVkZWQgaW4gb2ZmZXIg
YnkgZGVmYXVsdAorICAvLyBiZWNhdXNlIGNsaWVudHMgcHJpb3IgdG8gaHR0cHM6Ly9idWdzLndl
YnJ0Yy5vcmcvOTcxMiBjYW5ub3QgcGFyc2UgdGhpcworICAvLyBjb3JyZWN0bHkuIElmIGl0J3Mg
aW5jbHVkZWQgaW4gb2ZmZXIgdG8gdXMgd2Ugd2lsbCByZXNwb25kIHRoYXQgd2Ugc3VwcG9ydAor
ICAvLyBpdC4KKyAgYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWRfID0gZmFsc2U7CiB9OwogCiAvLyBJ
bmRpY2F0ZXMgd2hldGhlciBhIHNlc3Npb24gZGVzY3JpcHRpb24gd2FzIHNlbnQgYnkgdGhlIGxv
Y2FsIGNsaWVudCBvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uX3Vu
aXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjYWNmNTg3ZjU2MmI0ZjlhNTI2N2I0YWMyNzVhZGQ3ODhl
MjczMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb25fdW5pdHRlc3QuY2MKQEAgLTAsMCArMSwx
MzAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisjaW5jbHVkZSAicGMvc2Vzc2lvbmRlc2NyaXB0aW9u
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKKworbmFtZXNwYWNlIGNyaWNrZXQgewor
CitURVNUKE1lZGlhQ29udGVudERlc2NyaXB0aW9uVGVzdCwgRXh0bWFwQWxsb3dNaXhlZERlZmF1
bHRWYWx1ZSkgeworICBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiB2aWRlb19kZXNjOworICBFWFBF
Q1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtObywgdmlkZW9fZGVzYy5leHRtYXBfYWxs
b3dfbWl4ZWRfZW51bSgpKTsKK30KKworVEVTVChNZWRpYUNvbnRlbnREZXNjcmlwdGlvblRlc3Qs
IFNldEV4dG1hcEFsbG93TWl4ZWQpIHsKKyAgVmlkZW9Db250ZW50RGVzY3JpcHRpb24gdmlkZW9f
ZGVzYzsKKyAgdmlkZW9fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250
ZW50RGVzY3JpcHRpb246OmtObyk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlv
bjo6a05vLCB2aWRlb19kZXNjLmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworICB2aWRlb19k
ZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6
a01lZGlhKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEsCisg
ICAgICAgICAgICB2aWRlb19kZXNjLmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworICB2aWRl
b19kZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlv
bjo6a1Nlc3Npb24pOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtTZXNz
aW9uLAorICAgICAgICAgICAgdmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsK
KworICAvLyBOb3QgYWxsb3dlZCB0byBkb3duZ3JhZGUgZnJvbSBrU2Vzc2lvbiB0byBrTWVkaWEu
CisgIHZpZGVvX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERl
c2NyaXB0aW9uOjprTWVkaWEpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246
OmtTZXNzaW9uLAorICAgICAgICAgICAgdmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWRfZW51
bSgpKTsKKworICAvLyBBbHdheXMgb2theSB0byBzZXQgbm90IHN1cHBvcnRlZC4KKyAgdmlkZW9f
ZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246
OmtObyk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a05vLCB2aWRlb19k
ZXNjLmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworICB2aWRlb19kZXNjLnNldF9leHRtYXBf
YWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgRVhQ
RUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEsCisgICAgICAgICAgICB2aWRl
b19kZXNjLmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworICB2aWRlb19kZXNjLnNldF9leHRt
YXBfYWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a05vKTsKKyAgRVhQ
RUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8sIHZpZGVvX2Rlc2MuZXh0bWFwX2Fs
bG93X21peGVkX2VudW0oKSk7Cit9CisKK1RFU1QoTWVkaWFDb250ZW50RGVzY3JpcHRpb25UZXN0
LCBNaXhlZE9uZVR3b0J5dGVIZWFkZXJTdXBwb3J0ZWQpIHsKKyAgVmlkZW9Db250ZW50RGVzY3Jp
cHRpb24gdmlkZW9fZGVzYzsKKyAgdmlkZW9fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkX2Vu
dW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtObyk7CisgIEVYUEVDVF9GQUxTRSh2aWRlb19k
ZXNjLmV4dG1hcF9hbGxvd19taXhlZCgpKTsKKyAgdmlkZW9fZGVzYy5zZXRfZXh0bWFwX2FsbG93
X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7CisgIEVYUEVDVF9U
UlVFKHZpZGVvX2Rlc2MuZXh0bWFwX2FsbG93X21peGVkKCkpOworICB2aWRlb19kZXNjLnNldF9l
eHRtYXBfYWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a1Nlc3Npb24p
OworICBFWFBFQ1RfVFJVRSh2aWRlb19kZXNjLmV4dG1hcF9hbGxvd19taXhlZCgpKTsKK30KKwor
VEVTVChTZXNzaW9uRGVzY3JpcHRpb25UZXN0LCBTZXRFeHRtYXBBbGxvd01peGVkKSB7CisgIFNl
c3Npb25EZXNjcmlwdGlvbiBzZXNzaW9uX2Rlc2M7CisgIHNlc3Npb25fZGVzYy5zZXRfZXh0bWFw
X2FsbG93X21peGVkKHRydWUpOworICBFWFBFQ1RfVFJVRShzZXNzaW9uX2Rlc2MuZXh0bWFwX2Fs
bG93X21peGVkKCkpOworICBzZXNzaW9uX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZChmYWxz
ZSk7CisgIEVYUEVDVF9GQUxTRShzZXNzaW9uX2Rlc2MuZXh0bWFwX2FsbG93X21peGVkKCkpOwor
fQorCitURVNUKFNlc3Npb25EZXNjcmlwdGlvblRlc3QsIFNldEV4dG1hcEFsbG93TWl4ZWRQcm9w
YWdhdGVzVG9NZWRpYUxldmVsKSB7CisgIFNlc3Npb25EZXNjcmlwdGlvbiBzZXNzaW9uX2Rlc2M7
CisgIE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiB2aWRlb19kZXNjID0gbmV3IFZpZGVvQ29udGVu
dERlc2NyaXB0aW9uKCk7CisgIHNlc3Npb25fZGVzYy5BZGRDb250ZW50KCJ2aWRlbyIsIE1lZGlh
UHJvdG9jb2xUeXBlOjprUnRwLCB2aWRlb19kZXNjKTsKKworICAvLyBTZXR0aW5nIHRydWUgb24g
c2Vzc2lvbiBsZXZlbCBwcm9wYWdhdGVzIHRvIG1lZGlhIGxldmVsLgorICBzZXNzaW9uX2Rlc2Mu
c2V0X2V4dG1hcF9hbGxvd19taXhlZCh0cnVlKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERl
c2NyaXB0aW9uOjprU2Vzc2lvbiwKKyAgICAgICAgICAgIHZpZGVvX2Rlc2MtPmV4dG1hcF9hbGxv
d19taXhlZF9lbnVtKCkpOworCisgIC8vIERvbid0IGRvd25ncmFkZSBmcm9tIHNlc3Npb24gbGV2
ZWwgdG8gbWVkaWEgbGV2ZWwKKyAgdmlkZW9fZGVzYy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9l
bnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEpOworICBFWFBFQ1RfRVEoTWVkaWFD
b250ZW50RGVzY3JpcHRpb246OmtTZXNzaW9uLAorICAgICAgICAgICAgdmlkZW9fZGVzYy0+ZXh0
bWFwX2FsbG93X21peGVkX2VudW0oKSk7CisKKyAgLy8gU2V0dGluZyBmYWxzZSBvbiBzZXNzaW9u
IGxldmVsIHByb3BhZ2F0ZXMgdG8gbWVkaWEgbGV2ZWwgaWYgdGhlIGN1cnJlbnQKKyAgLy8gc3Rh
dGUgaXMga1Nlc3Npb24uCisgIHNlc3Npb25fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkKGZh
bHNlKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8sCisgICAgICAg
ICAgICB2aWRlb19kZXNjLT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKworICAvLyBOb3cg
cG9zc2libGUgdG8gc2V0IGF0IG1lZGlhIGxldmVsLgorICB2aWRlb19kZXNjLT5zZXRfZXh0bWFw
X2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7CisgIEVY
UEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhLAorICAgICAgICAgICAgdmlk
ZW9fZGVzYy0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7CisKKyAgLy8gU2V0dGluZyBmYWxz
ZSBvbiBzZXNzaW9uIGxldmVsIGRvZXMgbm90IG92ZXJyaWRlIG9uIG1lZGlhIGxldmVsIGlmIGN1
cnJlbnQKKyAgLy8gc3RhdGUgaXMga01lZGlhLgorICBzZXNzaW9uX2Rlc2Muc2V0X2V4dG1hcF9h
bGxvd19taXhlZChmYWxzZSk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6
a01lZGlhLAorICAgICAgICAgICAgdmlkZW9fZGVzYy0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0o
KSk7CisKKyAgLy8gU2V0dGluZyB0cnVlIG9uIHNlc3Npb24gbGV2ZWwgb3ZlcnJpZGVzIHNldHRp
bmcgb24gbWVkaWEgbGV2ZWwuCisgIHNlc3Npb25fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVk
KHRydWUpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtTZXNzaW9uLAor
ICAgICAgICAgICAgdmlkZW9fZGVzYy0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7Cit9CisK
K1RFU1QoU2Vzc2lvbkRlc2NyaXB0aW9uVGVzdCwgQWRkQ29udGVudFRyYW5zZmVyc0V4dG1hcEFs
bG93TWl4ZWRTZXR0aW5nKSB7CisgIFNlc3Npb25EZXNjcmlwdGlvbiBzZXNzaW9uX2Rlc2M7Cisg
IHNlc3Npb25fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkKGZhbHNlKTsKKyAgTWVkaWFDb250
ZW50RGVzY3JpcHRpb24qIGF1ZGlvX2Rlc2MgPSBuZXcgQXVkaW9Db250ZW50RGVzY3JpcHRpb24o
KTsKKyAgYXVkaW9fZGVzYy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVu
dERlc2NyaXB0aW9uOjprTWVkaWEpOworCisgIC8vIElmIHNlc3Npb24gc2V0dGluZyBpcyBmYWxz
ZSwgbWVkaWEgbGV2ZWwgc2V0dGluZyBpcyBwcmVzZXJ2ZWQgd2hlbiBuZXcKKyAgLy8gY29udGVu
dCBpcyBhZGRlZC4KKyAgc2Vzc2lvbl9kZXNjLkFkZENvbnRlbnQoImF1ZGlvIiwgTWVkaWFQcm90
b2NvbFR5cGU6OmtSdHAsIGF1ZGlvX2Rlc2MpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVz
Y3JpcHRpb246OmtNZWRpYSwKKyAgICAgICAgICAgIGF1ZGlvX2Rlc2MtPmV4dG1hcF9hbGxvd19t
aXhlZF9lbnVtKCkpOworCisgIC8vIElmIHNlc3Npb24gc2V0dGluZyBpcyB0cnVlLCBpdCdzIHRy
YW5zZmVycmVkIHRvIG1lZGlhIGxldmVsIHdoZW4gbmV3CisgIC8vIGNvbnRlbnQgaXMgYWRkZWQu
CisgIHNlc3Npb25fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkKHRydWUpOworICBNZWRpYUNv
bnRlbnREZXNjcmlwdGlvbiogdmlkZW9fZGVzYyA9IG5ldyBWaWRlb0NvbnRlbnREZXNjcmlwdGlv
bigpOworICBzZXNzaW9uX2Rlc2MuQWRkQ29udGVudCgidmlkZW8iLCBNZWRpYVByb3RvY29sVHlw
ZTo6a1J0cCwgdmlkZW9fZGVzYyk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlv
bjo6a1Nlc3Npb24sCisgICAgICAgICAgICB2aWRlb19kZXNjLT5leHRtYXBfYWxsb3dfbWl4ZWRf
ZW51bSgpKTsKKworICAvLyBTZXNzaW9uIGxldmVsIHNldHRpbmcgb3ZlcnJpZGVzIG1lZGlhIGxl
dmVsIHdoZW4gbmV3IGNvbnRlbnQgaXMgYWRkZWQuCisgIE1lZGlhQ29udGVudERlc2NyaXB0aW9u
KiBkYXRhX2Rlc2MgPSBuZXcgRGF0YUNvbnRlbnREZXNjcmlwdGlvbjsKKyAgZGF0YV9kZXNjLT5z
ZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRp
YSk7CisgIHNlc3Npb25fZGVzYy5BZGRDb250ZW50KCJkYXRhIiwgTWVkaWFQcm90b2NvbFR5cGU6
OmtSdHAsIGRhdGFfZGVzYyk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6
a1Nlc3Npb24sCisgICAgICAgICAgICBkYXRhX2Rlc2MtPmV4dG1hcF9hbGxvd19taXhlZF9lbnVt
KCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cGZpbHRlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0ZXIuY2MKaW5k
ZXggNWZmZTM0MjEyZTUwOGJhNzNhMDBlM2Y4Njk0OGFlNTA3ZmY2MmUxMC4uY2QwMzkzYTAzZTMz
MWIxZDczY2ZmNGEyMjU5ZTIzYWU3YTUyZjQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cGZpbHRlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwZmlsdGVyLmNjCkBAIC0x
OSw3ICsxOSw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvYnl0ZW9yZGVyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3Bh
cnR5L2Jhc2U2NC9iYXNlNjQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNp
bmNsdWRlICJydGNfYmFzZS96ZXJvX21lbW9yeS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cGZpbHRlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cGZpbHRlci5oCmluZGV4IGE0
ZGQ1NGZhOGJkZWJjYTY4ZTE5YzBmZGRkMDgzOWI2OTEwZTY5ZDUuLjRhYjBkZDcyYzFhNDEyYzE0
MjNjOGMwMjQ1YWRlNzk0ZWE4ZWY4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwZmlsdGVyLmgKQEAgLTc4LDYgKzc4
LDEwIEBAIGNsYXNzIFNydHBGaWx0ZXIgewogCiAgIGJvb2wgUmVzZXRQYXJhbXMoKTsKIAorICBz
dGF0aWMgYm9vbCBQYXJzZUtleVBhcmFtcyhjb25zdCBzdGQ6OnN0cmluZyYgcGFyYW1zLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBrZXksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZW4pOworCiAgIGFic2w6Om9wdGlvbmFsPGludD4gc2VuZF9j
aXBoZXJfc3VpdGUoKSB7IHJldHVybiBzZW5kX2NpcGhlcl9zdWl0ZV87IH0KICAgYWJzbDo6b3B0
aW9uYWw8aW50PiByZWN2X2NpcGhlcl9zdWl0ZSgpIHsgcmV0dXJuIHJlY3ZfY2lwaGVyX3N1aXRl
XzsgfQogCkBAIC0xMDQsMTAgKzEwOCw2IEBAIGNsYXNzIFNydHBGaWx0ZXIgewogCiAgIGJvb2wg
QXBwbHlSZWN2UGFyYW1zKGNvbnN0IENyeXB0b1BhcmFtcyYgcmVjdl9wYXJhbXMpOwogCi0gIHN0
YXRpYyBib29sIFBhcnNlS2V5UGFyYW1zKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXJhbXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGtleSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxlbik7Ci0KICAgZW51bSBTdGF0ZSB7CiAgICAgU1RfSU5JVCwg
ICAgICAgICAgICAgICAgICAgIC8vIFNSVFAgZmlsdGVyIHVudXNlZC4KICAgICBTVF9TRU5UT0ZG
RVIsICAgICAgICAgICAgICAgLy8gT2ZmZXIgd2l0aCBTUlRQIHBhcmFtZXRlcnMgc2VudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Ny
dHBzZXNzaW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvc3J0cHNlc3Npb24uY2MKaW5kZXggYTVmZGE4ODk3ZmViOWQ3MjYyOTVkNWU1Mzc4ZGU0NTZm
Y2YwYjUzNy4uYWFkZDQ3MTFhNTAzZTFlNzQ3MzNmM2Y4NDYyNWUwYTgxMWQ4MmYyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHNl
c3Npb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvc3J0cHNlc3Npb24uY2MKQEAgLTEzOCw3ICsxMzgsMTUgQEAgYm9vbCBTcnRwU2Vzc2lvbjo6
VW5wcm90ZWN0UnRwKHZvaWQqIHAsIGludCBpbl9sZW4sIGludCogb3V0X2xlbikgewogICAqb3V0
X2xlbiA9IGluX2xlbjsKICAgaW50IGVyciA9IHNydHBfdW5wcm90ZWN0KHNlc3Npb25fLCBwLCBv
dXRfbGVuKTsKICAgaWYgKGVyciAhPSBzcnRwX2Vycl9zdGF0dXNfb2spIHsKLSAgICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gdW5wcm90ZWN0IFNSVFAgcGFja2V0LCBlcnI9IiA8
PCBlcnI7CisgICAgLy8gTGltaXQgdGhlIGVycm9yIGxvZ2dpbmcgdG8gYXZvaWQgZXhjZXNzaXZl
IGxvZ3Mgd2hlbiB0aGVyZSBhcmUgbG90cyBvZgorICAgIC8vIGJhZCBwYWNrZXRzLgorICAgIGNv
bnN0IGludCBrRmFpbHVyZUxvZ1Rocm90dGxlQ291bnQgPSAxMDA7CisgICAgaWYgKGRlY3J5cHRp
b25fZmFpbHVyZV9jb3VudF8gJSBrRmFpbHVyZUxvZ1Rocm90dGxlQ291bnQgPT0gMCkgeworICAg
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHVucHJvdGVjdCBTUlRQIHBhY2tl
dCwgZXJyPSIgPDwgZXJyCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsIHByZXZpb3Vz
IGZhaWx1cmUgY291bnQ6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZGVjcnlwdGlv
bl9mYWlsdXJlX2NvdW50XzsKKyAgICB9CisgICAgKytkZWNyeXB0aW9uX2ZhaWx1cmVfY291bnRf
OwogICAgIFJUQ19ISVNUT0dSQU1fRU5VTUVSQVRJT04oIldlYlJUQy5QZWVyQ29ubmVjdGlvbi5T
cnRwVW5wcm90ZWN0RXJyb3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8aW50PihlcnIpLCBrU3J0cEVycm9yQ29kZUJvdW5kYXJ5KTsKICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9zcnRwc2Vzc2lvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvc3J0cHNlc3Npb24uaAppbmRleCBjM2EwMWJkMTM5YmIwYTUzNmNiZjhkOTc3NGM0
ZTJiZmE3ZTc2MTkzLi5jZTA1Y2U2ZDcyNTg2MjJjODQ5NzNiMmY3NzFkZGM2YmIwZjNkNDljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9z
cnRwc2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3NydHBzZXNzaW9uLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCBjbGFzcyBTcnRwU2Vzc2lv
biB7CiAgIGludCBsYXN0X3NlbmRfc2VxX251bV8gPSAtMTsKICAgYm9vbCBleHRlcm5hbF9hdXRo
X2FjdGl2ZV8gPSBmYWxzZTsKICAgYm9vbCBleHRlcm5hbF9hdXRoX2VuYWJsZWRfID0gZmFsc2U7
CisgIGludCBkZWNyeXB0aW9uX2ZhaWx1cmVfY291bnRfID0gMDsKICAgUlRDX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihTcnRwU2Vzc2lvbik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwdHJhbnNwb3J0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHRyYW5zcG9ydC5j
YwppbmRleCA2ZmQ4YmUzN2MyNDI0ODFiOWM5Nzg5OTMwYmU0M2NkZGExNDcwZjNiLi4wY2Y0MTA2
MjAzZTYzNTE1MGRlN2ZlODk4ZmM0YTkxNzU2OGQzZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwdHJhbnNwb3J0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHB0cmFuc3Bv
cnQuY2MKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIFNydHBUcmFuc3BvcnQ6OlNlbmRSdGNwUGFj
a2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKIH0KIAogdm9pZCBTcnRwVHJhbnNw
b3J0OjpPblJ0cFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tl
dFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBpZiAoIUlzU3J0cEFjdGl2ZSgpKSB7
CiAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQogICAgICAgICA8PCAiSW5hY3RpdmUgU1JUUCB0cmFu
c3BvcnQgcmVjZWl2ZWQgYW4gUlRQIHBhY2tldC4gRHJvcCBpdC4iOwpAQCAtMjA3LDE2ICsyMDcs
MjUgQEAgdm9pZCBTcnRwVHJhbnNwb3J0OjpPblJ0cFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9u
V3JpdGVCdWZmZXIqIHBhY2tldCwKICAgICB1aW50MzJfdCBzc3JjID0gMDsKICAgICBjcmlja2V0
OjpHZXRSdHBTZXFOdW0oZGF0YSwgbGVuLCAmc2VxX251bSk7CiAgICAgY3JpY2tldDo6R2V0UnRw
U3NyYyhkYXRhLCBsZW4sICZzc3JjKTsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVk
IHRvIHVucHJvdGVjdCBSVFAgcGFja2V0OiBzaXplPSIgPDwgbGVuCi0gICAgICAgICAgICAgICAg
ICAgICAgPDwgIiwgc2VxbnVtPSIgPDwgc2VxX251bSA8PCAiLCBTU1JDPSIgPDwgc3NyYzsKKwor
ICAgIC8vIExpbWl0IHRoZSBlcnJvciBsb2dnaW5nIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBsb2dzIHdo
ZW4gdGhlcmUgYXJlIGxvdHMgb2YKKyAgICAvLyBiYWQgcGFja2V0cy4KKyAgICBjb25zdCBpbnQg
a0ZhaWx1cmVMb2dUaHJvdHRsZUNvdW50ID0gMTAwOworICAgIGlmIChkZWNyeXB0aW9uX2ZhaWx1
cmVfY291bnRfICUga0ZhaWx1cmVMb2dUaHJvdHRsZUNvdW50ID09IDApIHsKKyAgICAgIFJUQ19M
T0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gdW5wcm90ZWN0IFJUUCBwYWNrZXQ6IHNpemU9IiA8
PCBsZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsIHNlcW51bT0iIDw8IHNlcV9udW0g
PDwgIiwgU1NSQz0iIDw8IHNzcmMKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsIHByZXZp
b3VzIGZhaWx1cmUgY291bnQ6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IGRlY3J5cHRp
b25fZmFpbHVyZV9jb3VudF87CisgICAgfQorICAgICsrZGVjcnlwdGlvbl9mYWlsdXJlX2NvdW50
XzsKICAgICByZXR1cm47CiAgIH0KICAgcGFja2V0LT5TZXRTaXplKGxlbik7Ci0gIERlbXV4UGFj
a2V0KHBhY2tldCwgcGFja2V0X3RpbWUpOworICBEZW11eFBhY2tldChwYWNrZXQsIHBhY2tldF90
aW1lX3VzKTsKIH0KIAogdm9pZCBTcnRwVHJhbnNwb3J0OjpPblJ0Y3BQYWNrZXRSZWNlaXZlZChy
dGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGlt
ZV91cykgewogICBpZiAoIUlzU3J0cEFjdGl2ZSgpKSB7CiAgICAgUlRDX0xPRyhMU19XQVJOSU5H
KQogICAgICAgICA8PCAiSW5hY3RpdmUgU1JUUCB0cmFuc3BvcnQgcmVjZWl2ZWQgYW4gUlRDUCBw
YWNrZXQuIERyb3AgaXQuIjsKQEAgLTIzMyw3ICsyNDIsNyBAQCB2b2lkIFNydHBUcmFuc3BvcnQ6
Ok9uUnRjcFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKICAg
ICByZXR1cm47CiAgIH0KICAgcGFja2V0LT5TZXRTaXplKGxlbik7Ci0gIFNpZ25hbFJ0Y3BQYWNr
ZXRSZWNlaXZlZChwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgU2lnbmFsUnRjcFBhY2tldFJlY2Vp
dmVkKHBhY2tldCwgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIFNydHBUcmFuc3BvcnQ6Ok9u
TmV0d29ya1JvdXRlQ2hhbmdlZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHB0cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHB0cmFuc3BvcnQuaAppbmRleCAxOTgwMjRm
NWE1NGNhNGQ5NDE0NTc1MDg4Mzg0YjQ2ZTk4YWQ5OTVkLi5jNjIzNTliOTQ0ZDQ4NzIzOTkwZmEw
MDUwMzlmMWEzZGMzNDIxYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwdHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHRyYW5zcG9ydC5oCkBAIC0xMTMsOSAr
MTEzLDkgQEAgY2xhc3MgU3J0cFRyYW5zcG9ydCA6IHB1YmxpYyBSdHBUcmFuc3BvcnQgewogICB2
b2lkIENyZWF0ZVNydHBTZXNzaW9ucygpOwogCiAgIHZvaWQgT25SdHBQYWNrZXRSZWNlaXZlZChy
dGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSBvdmVycmlkZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIG92ZXJyaWRlOwogICB2
b2lkIE9uUnRjcFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKSBvdmVycmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBh
Y2tldF90aW1lX3VzKSBvdmVycmlkZTsKICAgdm9pZCBPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCiAg
ICAgICBhYnNsOjpvcHRpb25hbDxydGM6Ok5ldHdvcmtSb3V0ZT4gbmV0d29ya19yb3V0ZSkgb3Zl
cnJpZGU7CiAKQEAgLTE2MCw2ICsxNjAsOCBAQCBjbGFzcyBTcnRwVHJhbnNwb3J0IDogcHVibGlj
IFJ0cFRyYW5zcG9ydCB7CiAgIGJvb2wgZXh0ZXJuYWxfYXV0aF9lbmFibGVkXyA9IGZhbHNlOwog
CiAgIGludCBydHBfYWJzX3NlbmR0aW1lX2V4dG5faWRfID0gLTE7CisKKyAgaW50IGRlY3J5cHRp
b25fZmFpbHVyZV9jb3VudF8gPSAwOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3Rh
dHNjb2xsZWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9zdGF0c2NvbGxlY3Rvci5jYwppbmRleCAyM2E0NDkzMDhjMzE3ZTkxMTEwY2FkODQwNDAw
ZjJkYjM1ZDc4MTIwLi5hMWQ1MmRiMDRlOTJkZThkNDU3YzkzYTA2ODlhODUyMjFhY2Q3MTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9z
dGF0c2NvbGxlY3Rvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9zdGF0c2NvbGxlY3Rvci5jYwpAQCAtNzgzLDggKzc4Myw4IEBAIHZvaWQgU3Rh
dHNDb2xsZWN0b3I6OkV4dHJhY3RTZXNzaW9uSW5mbygpIHsKICAgICBTdGF0c1JlcG9ydDo6SWQg
bG9jYWxfY2VydF9yZXBvcnRfaWQsIHJlbW90ZV9jZXJ0X3JlcG9ydF9pZDsKICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGU7CiAgICAgaWYgKHBj
Xy0+R2V0TG9jYWxDZXJ0aWZpY2F0ZSh0cmFuc3BvcnRfbmFtZSwgJmNlcnRpZmljYXRlKSkgewot
ICAgICAgU3RhdHNSZXBvcnQqIHIgPQotICAgICAgICAgIEFkZENlcnRpZmljYXRlUmVwb3J0cyhj
ZXJ0aWZpY2F0ZS0+c3NsX2NlcnRfY2hhaW4oKS5HZXRTdGF0cygpKTsKKyAgICAgIFN0YXRzUmVw
b3J0KiByID0gQWRkQ2VydGlmaWNhdGVSZXBvcnRzKAorICAgICAgICAgIGNlcnRpZmljYXRlLT5H
ZXRTU0xDZXJ0aWZpY2F0ZUNoYWluKCkuR2V0U3RhdHMoKSk7CiAgICAgICBpZiAocikKICAgICAg
ICAgbG9jYWxfY2VydF9yZXBvcnRfaWQgPSByLT5pZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3N0YXRzY29sbGVjdG9y
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvc3RhdHNjb2xsZWN0b3JfdW5pdHRlc3QuY2MKaW5kZXggZmE0ZDNkYjgxYmQ3YzU3NmY3NWNk
MTk3NzI5NGUzNmRkZjI1MWY4OS4uNTNlYjJlYWE1ZWFiYTQ2NzcyMDViZDNhOTQxNmEzNDIwYTY3
NjdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvc3RhdHNjb2xsZWN0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3RhdHNjb2xsZWN0b3JfdW5pdHRlc3QuY2MKQEAg
LTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJwYy90ZXN0L2Zha2V2aWRlb3RyYWNrc291cmNlLmgi
CiAjaW5jbHVkZSAicGMvdmlkZW90cmFjay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Zha2Vzc2xp
ZGVudGl0eS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS90aGlyZF9wYXJ0eS9iYXNlNjQvYmFzZTY0LmgiCiAjaW5jbHVkZSAidGVzdC9n
dGVzdC5oIgogCkBAIC01NiwxNCArNTcsNiBAQCBjbGFzcyBGYWtlQXVkaW9Qcm9jZXNzb3IgOiBw
dWJsaWMgQXVkaW9Qcm9jZXNzb3JJbnRlcmZhY2UgewogICB+RmFrZUF1ZGlvUHJvY2Vzc29yKCkg
e30KIAogIHByaXZhdGU6Ci0gIHZvaWQgR2V0U3RhdHMoQXVkaW9Qcm9jZXNzb3JJbnRlcmZhY2U6
OkF1ZGlvUHJvY2Vzc29yU3RhdHMqIHN0YXRzKSBvdmVycmlkZSB7Ci0gICAgc3RhdHMtPnR5cGlu
Z19ub2lzZV9kZXRlY3RlZCA9IHRydWU7Ci0gICAgc3RhdHMtPmVjaG9fcmV0dXJuX2xvc3MgPSAy
OwotICAgIHN0YXRzLT5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0gMzsKLSAgICBzdGF0
cy0+ZWNob19kZWxheV9tZWRpYW5fbXMgPSA0OwotICAgIHN0YXRzLT5lY2hvX2RlbGF5X3N0ZF9t
cyA9IDY7Ci0gIH0KLQogICBBdWRpb1Byb2Nlc3NvckludGVyZmFjZTo6QXVkaW9Qcm9jZXNzb3JT
dGF0aXN0aWNzIEdldFN0YXRzKAogICAgICAgYm9vbCBoYXNfcmVjdl9zdHJlYW1zKSBvdmVycmlk
ZSB7CiAgICAgQXVkaW9Qcm9jZXNzb3JTdGF0aXN0aWNzIHN0YXRzOwpAQCAtMTA3LDE0ICsxMDAs
NiBAQCBjbGFzcyBGYWtlQXVkaW9Qcm9jZXNzb3JXaXRoSW5pdFZhbHVlIDogcHVibGljIEF1ZGlv
UHJvY2Vzc29ySW50ZXJmYWNlIHsKICAgfkZha2VBdWRpb1Byb2Nlc3NvcldpdGhJbml0VmFsdWUo
KSB7fQogCiAgcHJpdmF0ZToKLSAgdm9pZCBHZXRTdGF0cyhBdWRpb1Byb2Nlc3NvckludGVyZmFj
ZTo6QXVkaW9Qcm9jZXNzb3JTdGF0cyogc3RhdHMpIG92ZXJyaWRlIHsKLSAgICBzdGF0cy0+dHlw
aW5nX25vaXNlX2RldGVjdGVkID0gZmFsc2U7Ci0gICAgc3RhdHMtPmVjaG9fcmV0dXJuX2xvc3Mg
PSAtMTAwOwotICAgIHN0YXRzLT5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0gLTEwMDsK
LSAgICBzdGF0cy0+ZWNob19kZWxheV9tZWRpYW5fbXMgPSAtMTsKLSAgICBzdGF0cy0+ZWNob19k
ZWxheV9zdGRfbXMgPSAtMTsKLSAgfQotCiAgIEF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNlOjpBdWRp
b1Byb2Nlc3NvclN0YXRpc3RpY3MgR2V0U3RhdHMoCiAgICAgICBib29sIC8qaGFzX3JlY3Zfc3Ry
ZWFtcyovKSBvdmVycmlkZSB7CiAgICAgQXVkaW9Qcm9jZXNzb3JTdGF0aXN0aWNzIHN0YXRzOwpA
QCAtNDk0LDEwICs0NzksMTAgQEAgdm9pZCBJbml0Vm9pY2VTZW5kZXJJbmZvKGNyaWNrZXQ6OlZv
aWNlU2VuZGVySW5mbyogdm9pY2Vfc2VuZGVyX2luZm8pIHsKICAgdm9pY2Vfc2VuZGVyX2luZm8t
PnBhY2tldHNfbG9zdCA9IDEwNTsKICAgdm9pY2Vfc2VuZGVyX2luZm8tPmV4dF9zZXFudW0gPSAx
MDY7CiAgIHZvaWNlX3NlbmRlcl9pbmZvLT5hdWRpb19sZXZlbCA9IDEwNzsKLSAgdm9pY2Vfc2Vu
ZGVyX2luZm8tPmVjaG9fcmV0dXJuX2xvc3MgPSAxMDg7Ci0gIHZvaWNlX3NlbmRlcl9pbmZvLT5l
Y2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0gMTA5OwotICB2b2ljZV9zZW5kZXJfaW5mby0+
ZWNob19kZWxheV9tZWRpYW5fbXMgPSAxMTA7Ci0gIHZvaWNlX3NlbmRlcl9pbmZvLT5lY2hvX2Rl
bGF5X3N0ZF9tcyA9IDExMTsKKyAgdm9pY2Vfc2VuZGVyX2luZm8tPmFwbV9zdGF0aXN0aWNzLmVj
aG9fcmV0dXJuX2xvc3MgPSAxMDg7CisgIHZvaWNlX3NlbmRlcl9pbmZvLT5hcG1fc3RhdGlzdGlj
cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0gMTA5OworICB2b2ljZV9zZW5kZXJfaW5m
by0+YXBtX3N0YXRpc3RpY3MuZGVsYXlfbWVkaWFuX21zID0gMTEwOworICB2b2ljZV9zZW5kZXJf
aW5mby0+YXBtX3N0YXRpc3RpY3MuZGVsYXlfc3RhbmRhcmRfZGV2aWF0aW9uX21zID0gMTExOwog
ICB2b2ljZV9zZW5kZXJfaW5mby0+dHlwaW5nX25vaXNlX2RldGVjdGVkID0gZmFsc2U7CiAgIHZv
aWNlX3NlbmRlcl9pbmZvLT5hbmFfc3RhdGlzdGljcy5iaXRyYXRlX2FjdGlvbl9jb3VudGVyID0g
MTEyOwogICB2b2ljZV9zZW5kZXJfaW5mby0+YW5hX3N0YXRpc3RpY3MuY2hhbm5lbF9hY3Rpb25f
Y291bnRlciA9IDExMzsKQEAgLTY0MSw3ICs2MjYsNyBAQCBjbGFzcyBTdGF0c0NvbGxlY3RvclRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
cnRjOjpTU0xJZGVudGl0eT4obG9jYWxfaWRlbnRpdHkuR2V0UmVmZXJlbmNlKCkpKSk7CiAgICAg
cGMtPlNldExvY2FsQ2VydGlmaWNhdGUoa1RyYW5zcG9ydE5hbWUsIGxvY2FsX2NlcnRpZmljYXRl
KTsKICAgICBwYy0+U2V0UmVtb3RlQ2VydENoYWluKGtUcmFuc3BvcnROYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVtb3RlX2lkZW50aXR5LmNlcnRfY2hhaW4oKS5VbmlxdWVDb3B5
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2lkZW50aXR5LmNlcnRfY2hh
aW4oKS5DbG9uZSgpKTsKIAogICAgIHN0YXRzLT5VcGRhdGVTdGF0cyhQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6a1N0YXRzT3V0cHV0TGV2ZWxTdGFuZGFyZCk7CiAKQEAgLTE1NjcsNyArMTU1Miw3
IEBAIFRFU1RfUChTdGF0c0NvbGxlY3RvclRyYWNrVGVzdCwgR2V0U3RhdHNBZnRlclJlbW92ZUF1
ZGlvU3RyZWFtKSB7CiAKICAgLy8gVmVyaWZpZXMgdGhlIHZhbHVlcyBpbiB0aGUgdHJhY2sgcmVw
b3J0LCBubyB2YWx1ZSB3aWxsIGJlIGNoYW5nZWQgYnkgdGhlCiAgIC8vIEF1ZGlvVHJhY2tJbnRl
cmZhY2U6OkdldFNpZ25hbFZhbHVlKCkgYW5kCi0gIC8vIEF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNl
OjpBdWRpb1Byb2Nlc3NvclN0YXRzOjpHZXRTdGF0cygpOworICAvLyBBdWRpb1Byb2Nlc3Nvcklu
dGVyZmFjZTo6R2V0U3RhdHMoKTsKICAgVmVyaWZ5Vm9pY2VTZW5kZXJJbmZvUmVwb3J0KHJlcG9y
dCwgdm9pY2Vfc2VuZGVyX2luZm8pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L2Zha2VwZWVyY29ubmVjdGlvbmZvcnN0
YXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0
L2Zha2VwZWVyY29ubmVjdGlvbmZvcnN0YXRzLmgKaW5kZXggNjQyZmEwMTFlYjRlODgwOTZjODI0
OWUyNmMyMGE1NzJmZTllNzdkMi4uYWY4NjYzOWVjYTRkNTk4NDlmNmQ1ZWU4OWE0NTFlNGI2NDAw
YjIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvdGVzdC9mYWtlcGVlcmNvbm5lY3Rpb25mb3JzdGF0cy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvZmFrZXBlZXJjb25uZWN0aW9u
Zm9yc3RhdHMuaApAQCAtMTI2LDcgKzEyNiw3IEBAIGNsYXNzIEZha2VQZWVyQ29ubmVjdGlvbkZv
clN0YXRzIDogcHVibGljIEZha2VQZWVyQ29ubmVjdGlvbkJhc2UgewogICAgIHZvaWNlX2NoYW5u
ZWxfID0gYWJzbDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6Vm9pY2VDaGFubmVsPigKICAgICAgICAg
d29ya2VyX3RocmVhZF8sIG5ldHdvcmtfdGhyZWFkXywgc2lnbmFsaW5nX3RocmVhZF8sIG51bGxw
dHIsCiAgICAgICAgIHN0ZDo6bW92ZSh2b2ljZV9tZWRpYV9jaGFubmVsKSwgbWlkLCBrRGVmYXVs
dFNydHBSZXF1aXJlZCwKLSAgICAgICAgcnRjOjpDcnlwdG9PcHRpb25zKCkpOworICAgICAgICB3
ZWJydGM6OkNyeXB0b09wdGlvbnMoKSk7CiAgICAgdm9pY2VfY2hhbm5lbF8tPnNldF90cmFuc3Bv
cnRfbmFtZV9mb3JfdGVzdGluZyh0cmFuc3BvcnRfbmFtZSk7CiAgICAgR2V0T3JDcmVhdGVGaXJz
dFRyYW5zY2VpdmVyT2ZUeXBlKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8pCiAgICAgICAgIC0+
aW50ZXJuYWwoKQpAQCAtMTQ0LDcgKzE0NCw3IEBAIGNsYXNzIEZha2VQZWVyQ29ubmVjdGlvbkZv
clN0YXRzIDogcHVibGljIEZha2VQZWVyQ29ubmVjdGlvbkJhc2UgewogICAgIHZpZGVvX2NoYW5u
ZWxfID0gYWJzbDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6VmlkZW9DaGFubmVsPigKICAgICAgICAg
d29ya2VyX3RocmVhZF8sIG5ldHdvcmtfdGhyZWFkXywgc2lnbmFsaW5nX3RocmVhZF8sCiAgICAg
ICAgIHN0ZDo6bW92ZSh2aWRlb19tZWRpYV9jaGFubmVsKSwgbWlkLCBrRGVmYXVsdFNydHBSZXF1
aXJlZCwKLSAgICAgICAgcnRjOjpDcnlwdG9PcHRpb25zKCkpOworICAgICAgICB3ZWJydGM6OkNy
eXB0b09wdGlvbnMoKSk7CiAgICAgdmlkZW9fY2hhbm5lbF8tPnNldF90cmFuc3BvcnRfbmFtZV9m
b3JfdGVzdGluZyh0cmFuc3BvcnRfbmFtZSk7CiAgICAgR2V0T3JDcmVhdGVGaXJzdFRyYW5zY2Vp
dmVyT2ZUeXBlKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8pCiAgICAgICAgIC0+aW50ZXJuYWwo
KQpAQCAtMzE5LDcgKzMxOSw3IEBAIGNsYXNzIEZha2VQZWVyQ29ubmVjdGlvbkZvclN0YXRzIDog
cHVibGljIEZha2VQZWVyQ29ubmVjdGlvbkJhc2UgewogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHRyYW5zcG9ydF9uYW1lKSBvdmVycmlkZSB7CiAgICAgYXV0byBpdCA9IHJlbW90ZV9jZXJ0X2No
YWluc19ieV90cmFuc3BvcnRfLmZpbmQodHJhbnNwb3J0X25hbWUpOwogICAgIGlmIChpdCAhPSBy
ZW1vdGVfY2VydF9jaGFpbnNfYnlfdHJhbnNwb3J0Xy5lbmQoKSkgewotICAgICAgcmV0dXJuIGl0
LT5zZWNvbmQtPlVuaXF1ZUNvcHkoKTsKKyAgICAgIHJldHVybiBpdC0+c2Vjb25kLT5DbG9uZSgp
OwogICAgIH0gZWxzZSB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2tf
Y2hhbm5lbGludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvdGVzdC9tb2NrX2NoYW5uZWxpbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzMyYThm
YjhkOTc5YzA1ZDk5MDA0Y2QxZDQ0YzQyYmJmNGVkZDYwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrX2NoYW5u
ZWxpbnRlcmZhY2UuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
CisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZu
ZGVmIFBDX1RFU1RfTU9DS19DSEFOTkVMSU5URVJGQUNFX0hfCisjZGVmaW5lIFBDX1RFU1RfTU9D
S19DSEFOTkVMSU5URVJGQUNFX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJw
Yy9jaGFubmVsaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAidGVzdC9nbW9jay5oIgorCituYW1lc3Bh
Y2UgY3JpY2tldCB7CisKKy8vIE1vY2sgY2xhc3MgZm9yIEJhc2VDaGFubmVsLgorLy8gVXNlIHRo
aXMgY2xhc3MgaW4gdW5pdCB0ZXN0cyB0byBhdm9pZCBkZXBlbmRlY3kgb24gYSBzcGVjaWZpYwor
Ly8gaW1wbGVtZW50YXRpb24gb2YgQmFzZUNoYW5uZWwuCitjbGFzcyBNb2NrQ2hhbm5lbEludGVy
ZmFjZSA6IHB1YmxpYyBjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIE1P
Q0tfQ09OU1RfTUVUSE9EMChtZWRpYV90eXBlLCBjcmlja2V0OjpNZWRpYVR5cGUoKSk7CisgIE1P
Q0tfQ09OU1RfTUVUSE9EMChtZWRpYV9jaGFubmVsLCBNZWRpYUNoYW5uZWwqKCkpOworICBNT0NL
X0NPTlNUX01FVEhPRDAodHJhbnNwb3J0X25hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJigpKTsKKyAg
TU9DS19DT05TVF9NRVRIT0QwKGNvbnRlbnRfbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmKCkpOwor
ICBNT0NLX0NPTlNUX01FVEhPRDAoZW5hYmxlZCwgYm9vbCgpKTsKKyAgTU9DS19NRVRIT0QxKEVu
YWJsZSwgYm9vbChib29sKSk7CisgIE1PQ0tfTUVUSE9EMChTaWduYWxGaXJzdFBhY2tldFJlY2Vp
dmVkLAorICAgICAgICAgICAgICAgc2lnc2xvdDo6c2lnbmFsMTxDaGFubmVsSW50ZXJmYWNlKj4m
KCkpOworICBNT0NLX01FVEhPRDMoU2V0TG9jYWxDb250ZW50LAorICAgICAgICAgICAgICAgYm9v
bChjb25zdCBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiosCisgICAgICAgICAgICAg
ICAgICAgIHdlYnJ0Yzo6U2RwVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcq
KSk7CisgIE1PQ0tfTUVUSE9EMyhTZXRSZW1vdGVDb250ZW50LAorICAgICAgICAgICAgICAgYm9v
bChjb25zdCBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiosCisgICAgICAgICAgICAg
ICAgICAgIHdlYnJ0Yzo6U2RwVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcq
KSk7CisgIE1PQ0tfTUVUSE9EMShTZXRSdHBUcmFuc3BvcnQsIGJvb2wod2VicnRjOjpSdHBUcmFu
c3BvcnRJbnRlcm5hbCopKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBjcmlja2V0CisKKyNlbmRp
ZiAgLy8gUENfVEVTVF9NT0NLX0NIQU5ORUxJTlRFUkZBQ0VfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja19ydHByZWNl
aXZlcmludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy90ZXN0L21vY2tfcnRwcmVjZWl2ZXJpbnRlcm5hbC5oCmluZGV4IDg1MGQ1YTlmOGU1OTkw
ZDAxMGZkMTM1Yzk4ZTA1NTEwMWJjY2NhMWEuLjg0YjBkNzE3NjZiOTcwNWU1NWI1ZWI0MDhkYmI4
MWM4MjQ1NTY2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3Rlc3QvbW9ja19ydHByZWNlaXZlcmludGVybmFsLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrX3J0cHJlY2Vp
dmVyaW50ZXJuYWwuaApAQCAtNDEsOCArNDEsNyBAQCBjbGFzcyBNb2NrUnRwUmVjZWl2ZXJJbnRl
cm5hbCA6IHB1YmxpYyBSdHBSZWNlaXZlckludGVybmFsIHsKIAogICAvLyBSdHBSZWNlaXZlcklu
dGVybmFsIG1ldGhvZHMuCiAgIE1PQ0tfTUVUSE9EMChTdG9wLCB2b2lkKCkpOwotICBNT0NLX01F
VEhPRDEoU2V0Vm9pY2VNZWRpYUNoYW5uZWwsIHZvaWQoY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5u
ZWwqKSk7Ci0gIE1PQ0tfTUVUSE9EMShTZXRWaWRlb01lZGlhQ2hhbm5lbCwgdm9pZChjcmlja2V0
OjpWaWRlb01lZGlhQ2hhbm5lbCopKTsKKyAgTU9DS19NRVRIT0QxKFNldE1lZGlhQ2hhbm5lbCwg
dm9pZChjcmlja2V0OjpNZWRpYUNoYW5uZWwqKSk7CiAgIE1PQ0tfTUVUSE9EMShTZXR1cE1lZGlh
Q2hhbm5lbCwgdm9pZCh1aW50MzJfdCkpOwogICBNT0NLX0NPTlNUX01FVEhPRDAoc3NyYywgdWlu
dDMyX3QoKSk7CiAgIE1PQ0tfTUVUSE9EMChOb3RpZnlGaXJzdFBhY2tldFJlY2VpdmVkLCB2b2lk
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvdGVzdC9tb2NrX3J0cHNlbmRlcmludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2tfcnRwc2VuZGVyaW50ZXJuYWwuaApp
bmRleCA1ZTE0ZjdhZDdkZTYyNWM0OGIyYThkZTI1ODI2NjJmNDY1YjA4MjY5Li5kZDRmNjk0OTdk
ZjQxMjkxNjEwYzE1N2FjMzcwZGQ5ZDNjMGE3NWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2tfcnRwc2VuZGVyaW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90
ZXN0L21vY2tfcnRwc2VuZGVyaW50ZXJuYWwuaApAQCAtMzksOCArMzksNyBAQCBjbGFzcyBNb2Nr
UnRwU2VuZGVySW50ZXJuYWwgOiBwdWJsaWMgUnRwU2VuZGVySW50ZXJuYWwgewogICAgICAgICAg
ICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPigp
KTsKIAogICAvLyBSdHBTZW5kZXJJbnRlcm5hbCBtZXRob2RzLgotICBNT0NLX01FVEhPRDEoU2V0
Vm9pY2VNZWRpYUNoYW5uZWwsIHZvaWQoY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqKSk7Ci0g
IE1PQ0tfTUVUSE9EMShTZXRWaWRlb01lZGlhQ2hhbm5lbCwgdm9pZChjcmlja2V0OjpWaWRlb01l
ZGlhQ2hhbm5lbCopKTsKKyAgTU9DS19NRVRIT0QxKFNldE1lZGlhQ2hhbm5lbCwgdm9pZChjcmlj
a2V0OjpNZWRpYUNoYW5uZWwqKSk7CiAgIE1PQ0tfTUVUSE9EMShTZXRTc3JjLCB2b2lkKHVpbnQz
Ml90KSk7CiAgIE1PQ0tfTUVUSE9EMShzZXRfc3RyZWFtX2lkcywgdm9pZChjb25zdCBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4mKSk7CiAgIE1PQ0tfTUVUSE9EMShzZXRfaW5pdF9zZW5kX2VuY29k
aW5ncywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3Rlc3QvbW9ja3BlZXJjb25uZWN0aW9ub2JzZXJ2ZXJzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2twZWVyY29ubmVjdGlvbm9i
c2VydmVycy5oCmluZGV4IDZmNWU5YmM2NjUyNTllNzEwYjM2OGNkYjRkNmU1OTkwOGMwNjIwZjgu
LjYyYzBjOTQxNWY2YzQxODNiZWNlMTI3ODg3MGUyYjA2N2FkNDM5MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja3BlZXJj
b25uZWN0aW9ub2JzZXJ2ZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrcGVlcmNvbm5lY3Rpb25vYnNlcnZlcnMuaApAQCAtNjcs
NiArNjcsNyBAQCBjbGFzcyBNb2NrUGVlckNvbm5lY3Rpb25PYnNlcnZlciA6IHB1YmxpYyBQZWVy
Q29ubmVjdGlvbk9ic2VydmVyIHsKICAgfQogICB2b2lkIE9uU2lnbmFsaW5nQ2hhbmdlKAogICAg
ICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlNpZ25hbGluZ1N0YXRlIG5ld19zdGF0ZSkgb3Zl
cnJpZGUgeworICAgIFJUQ19EQ0hFQ0socGNfKTsKICAgICBSVENfRENIRUNLKHBjXy0+c2lnbmFs
aW5nX3N0YXRlKCkgPT0gbmV3X3N0YXRlKTsKICAgICBzdGF0ZV8gPSBuZXdfc3RhdGU7CiAgIH0K
QEAgLTkyLDYgKzkzLDcgQEAgY2xhc3MgTW9ja1BlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgOiBwdWJs
aWMgUGVlckNvbm5lY3Rpb25PYnNlcnZlciB7CiAKICAgdm9pZCBPbkljZUNvbm5lY3Rpb25DaGFu
Z2UoCiAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlIG5l
d19zdGF0ZSkgb3ZlcnJpZGUgeworICAgIFJUQ19EQ0hFQ0socGNfKTsKICAgICBSVENfRENIRUNL
KHBjXy0+aWNlX2Nvbm5lY3Rpb25fc3RhdGUoKSA9PSBuZXdfc3RhdGUpOwogICAgIC8vIFdoZW4g
SUNFIGlzIGZpbmlzaGVkLCB0aGUgY2FsbGVyIHdpbGwgZ2V0IHRvIGEga0ljZUNvbm5lY3Rpb25D
b21wbGV0ZWQKICAgICAvLyBzdGF0ZSwgYmVjYXVzZSBpdCBoYXMgdGhlIElDRSBjb250cm9sbGlu
ZyByb2xlLCB3aGlsZSB0aGUgY2FsbGVlCkBAIC0xMDQsMTIgKzEwNiwxNCBAQCBjbGFzcyBNb2Nr
UGVlckNvbm5lY3Rpb25PYnNlcnZlciA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbk9ic2VydmVyIHsK
ICAgfQogICB2b2lkIE9uSWNlR2F0aGVyaW5nQ2hhbmdlKAogICAgICAgUGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OkljZUdhdGhlcmluZ1N0YXRlIG5ld19zdGF0ZSkgb3ZlcnJpZGUgeworICAgIFJU
Q19EQ0hFQ0socGNfKTsKICAgICBSVENfRENIRUNLKHBjXy0+aWNlX2dhdGhlcmluZ19zdGF0ZSgp
ID09IG5ld19zdGF0ZSk7CiAgICAgaWNlX2dhdGhlcmluZ19jb21wbGV0ZV8gPQogICAgICAgICBu
ZXdfc3RhdGUgPT0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VHYXRoZXJpbmdDb21wbGV0
ZTsKICAgICBjYWxsYmFja190cmlnZ2VyZWRfID0gdHJ1ZTsKICAgfQogICB2b2lkIE9uSWNlQ2Fu
ZGlkYXRlKGNvbnN0IEljZUNhbmRpZGF0ZUludGVyZmFjZSogY2FuZGlkYXRlKSBvdmVycmlkZSB7
CisgICAgUlRDX0RDSEVDSyhwY18pOwogICAgIFJUQ19EQ0hFQ0soUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OmtJY2VHYXRoZXJpbmdOZXcgIT0KICAgICAgICAgICAgICAgIHBjXy0+aWNlX2dhdGhl
cmluZ19zdGF0ZSgpKTsKICAgICBjYW5kaWRhdGVzXy5wdXNoX2JhY2soYWJzbDo6bWFrZV91bmlx
dWU8SnNlcEljZUNhbmRpZGF0ZT4oCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L3BlZXJjb25uZWN0aW9udGVzdHdyYXBwZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L3BlZXJj
b25uZWN0aW9udGVzdHdyYXBwZXIuY2MKaW5kZXggOWJlMTU5NjM3M2M2ODFhZDQyMGM1Njg4ZDgw
YzU2MDAzMzczYTdmNC4uYTFkYjllZDllNmYzMGMzZTA3MjY5NTQ5NGUwOGM1YTY4ZjllYjA5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
dGVzdC9wZWVyY29ubmVjdGlvbnRlc3R3cmFwcGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvcGVlcmNvbm5lY3Rpb250ZXN0d3JhcHBl
ci5jYwpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCisjaW5jbHVkZSAiYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5o
IgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19w
cm9jZXNzaW5nLmgiCkBAIC0yMiw2ICsyMyw3IEBACiAjaW5jbHVkZSAicGMvdGVzdC9tb2NrcGVl
cmNvbm5lY3Rpb25vYnNlcnZlcnMuaCIKICNpbmNsdWRlICJwYy90ZXN0L3BlZXJjb25uZWN0aW9u
dGVzdHdyYXBwZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgi
CiAKIHVzaW5nIHdlYnJ0Yzo6RmFrZUNvbnN0cmFpbnRzOwpAQCAtNjQsOSArNjYsMjAgQEAgUGVl
ckNvbm5lY3Rpb25UZXN0V3JhcHBlcjo6UGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcigKICAgICBy
dGM6OlRocmVhZCogd29ya2VyX3RocmVhZCkKICAgICA6IG5hbWVfKG5hbWUpLAogICAgICAgbmV0
d29ya190aHJlYWRfKG5ldHdvcmtfdGhyZWFkKSwKLSAgICAgIHdvcmtlcl90aHJlYWRfKHdvcmtl
cl90aHJlYWQpIHt9CisgICAgICB3b3JrZXJfdGhyZWFkXyh3b3JrZXJfdGhyZWFkKSB7CisgIHBj
X3RocmVhZF9jaGVja2VyXy5EZXRhY2hGcm9tVGhyZWFkKCk7Cit9CiAKLVBlZXJDb25uZWN0aW9u
VGVzdFdyYXBwZXI6On5QZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyKCkge30KK1BlZXJDb25uZWN0
aW9uVGVzdFdyYXBwZXI6On5QZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyKCkgeworICBSVENfRENI
RUNLX1JVTl9PTigmcGNfdGhyZWFkX2NoZWNrZXJfKTsKKyAgLy8gRWl0aGVyIG5ldHdvcmtfdGhy
ZWFkIG9yIHdvcmtlcl90aHJlYWQgbWlnaHQgYmUgYWN0aXZlIGF0IHRoaXMgcG9pbnQuCisgIC8v
IFJlbHlpbmcgb24gflBlZXJDb25uZWN0aW9uIHRvIHByb3Blcmx5IHdhaXQgZm9yIHRoZW0gZG9l
c24ndCB3b3JrLAorICAvLyBhcyBhIHZwdHIgcmFjZSBtaWdodCBvY2N1ciAoYmVmb3JlIHdlIGVu
dGVyIHRoZSBkZXN0cnVjdGlvbiBib2R5KS4KKyAgLy8gU2VlOiBidWdzLndlYnJ0Yy5vcmcvOTg0
NworICBpZiAocGMoKSkgeworICAgIHBjKCktPkNsb3NlKCk7CisgIH0KK30KIAogYm9vbCBQZWVy
Q29ubmVjdGlvblRlc3RXcmFwcGVyOjpDcmVhdGVQYygKICAgICBjb25zdCB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiBjb25maWcsCkBAIC03NSw2ICs4
OCw4IEBAIGJvb2wgUGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcjo6Q3JlYXRlUGMoCiAgIHN0ZDo6
dW5pcXVlX3B0cjxjcmlja2V0OjpQb3J0QWxsb2NhdG9yPiBwb3J0X2FsbG9jYXRvcigKICAgICAg
IG5ldyBjcmlja2V0OjpGYWtlUG9ydEFsbG9jYXRvcihuZXR3b3JrX3RocmVhZF8sIG51bGxwdHIp
KTsKIAorICBSVENfRENIRUNLX1JVTl9PTigmcGNfdGhyZWFkX2NoZWNrZXJfKTsKKwogICBmYWtl
X2F1ZGlvX2NhcHR1cmVfbW9kdWxlXyA9IEZha2VBdWRpb0NhcHR1cmVNb2R1bGU6OkNyZWF0ZSgp
OwogICBpZiAoZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZV8gPT0gTlVMTCkgewogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3Rlc3QvcGVlcmNvbm5lY3Rpb250ZXN0d3JhcHBlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9wZWVyY29ubmVjdGlvbnRlc3R3
cmFwcGVyLmgKaW5kZXggMjFiYTg5YWNiZjA3MzA1ODM5YTUxZDUxOThmYWQ0ZGQ4OTExMWY1Mi4u
YjZhNTdmMzVkMzgyMzMxMWJhNWYzZDNkN2Y2NjQ2ZmYwN2QyMDg4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9wZWVyY29ubmVj
dGlvbnRlc3R3cmFwcGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvdGVzdC9wZWVyY29ubmVjdGlvbnRlc3R3cmFwcGVyLmgKQEAgLTIwLDYgKzIw
LDcgQEAKICNpbmNsdWRlICJwYy90ZXN0L2Zha2VhdWRpb2NhcHR1cmVtb2R1bGUuaCIKICNpbmNs
dWRlICJwYy90ZXN0L2Zha2V2aWRlb3RyYWNrcmVuZGVyZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWRfY2hlY2tlci5oIgogCiBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyCiAgICAgOiBw
dWJsaWMgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyLApAQCAtMTA2LDYgKzEwNyw3IEBA
IGNsYXNzIFBlZXJDb25uZWN0aW9uVGVzdFdyYXBwZXIKICAgc3RkOjpzdHJpbmcgbmFtZV87CiAg
IHJ0Yzo6VGhyZWFkKiBjb25zdCBuZXR3b3JrX3RocmVhZF87CiAgIHJ0Yzo6VGhyZWFkKiBjb25z
dCB3b3JrZXJfdGhyZWFkXzsKKyAgcnRjOjpUaHJlYWRDaGVja2VyIHBjX3RocmVhZF9jaGVja2Vy
XzsKICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+
IHBlZXJfY29ubmVjdGlvbl87CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KICAgICAgIHBlZXJfY29ubmVjdGlvbl9mYWN0b3J5XzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3ZpZGVvY2FwdHVyZXJ0cmFja3NvdXJjZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3ZpZGVvY2FwdHVyZXJ0cmFja3NvdXJjZV91bml0
dGVzdC5jYwppbmRleCBkMmI4ZTE1NzRjZWJkMDgzZDYyMzcyZGMyNDhjZTdlYzY0OGNlODhjLi42
N2JlYzM0NWI2OTdhNGE3MjVhMzMyNDQzZmE1MGMzYzk2MWUxZWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy92aWRlb2NhcHR1cmVydHJh
Y2tzb3VyY2VfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvdmlkZW9jYXB0dXJlcnRyYWNrc291cmNlX3VuaXR0ZXN0LmNjCkBAIC0x
MjYsNyArMTI2LDcgQEAgY2xhc3MgVmlkZW9DYXB0dXJlclRyYWNrU291cmNlVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKICAgfQogCiAgIHZvaWQgQ2FwdHVyZVNpbmdsZUZyYW1lKCkgewot
ICAgIHJ0Yzo6RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgICBydGM6OkV2ZW50IGV2ZW50
OwogICAgIHRhc2tfcXVldWVfLlBvc3RUYXNrKFt0aGlzLCAmZXZlbnRdKCkgewogICAgICAgQVNT
RVJUX1RSVUUoY2FwdHVyZXJfLT5DYXB0dXJlRnJhbWUoKSk7CiAgICAgICBldmVudC5TZXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3ZpZGVvdHJhY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3ZpZGVvdHJhY2suaAppbmRleCBlNjY5ZTA4MTRjNzI1M2UwYTg3Mzc3NGY4OTMzYTM0MjE2
YmI1NTBkLi5mMTE5ZGQ4NmQ4M2RlNjgwNmQ2M2QwNzJhN2VhM2UyOTg4MjY0N2I2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy92aWRlb3Ry
YWNrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
dmlkZW90cmFjay5oCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAibWVkaWEvYmFzZS92aWRl
b3NvdXJjZWJhc2UuaCIKICNpbmNsdWRlICJwYy9tZWRpYXN0cmVhbXRyYWNrLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQu
aCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3ZpZGVvdHJhY2tzb3VyY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3ZpZGVvdHJhY2tzb3VyY2UuaAppbmRleCA1MDQ4OGRkMmM2MDExZDMz
NmFiZTliYmEyNzdlMTBmNjQ2NDY3ZTUzLi5jZWRiNzViM2M4OGRkNzMwZjYzODc1OTVlMWIxNmEw
YTYyYWRhOTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy92aWRlb3RyYWNrc291cmNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdmlkZW90cmFja3NvdXJjZS5oCkBAIC0xNSwxMyArMTUs
MTQgQEAKICNpbmNsdWRlICJhcGkvbm90aWZpZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlk
ZW9fc2lua19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY2hhbm5lbC5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIFZpZGVv
VHJhY2tTb3VyY2UgaXMgYSBjb252ZW5pZW5jZSBiYXNlIGNsYXNzIGZvciBpbXBsZW1lbnRhdGlv
bnMgb2YKIC8vIFZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2UuCi1jbGFzcyBWaWRlb1RyYWNrU291
cmNlIDogcHVibGljIE5vdGlmaWVyPFZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2U+IHsKK2NsYXNz
IFJUQ19FWFBPUlQgVmlkZW9UcmFja1NvdXJjZSA6IHB1YmxpYyBOb3RpZmllcjxWaWRlb1RyYWNr
U291cmNlSW50ZXJmYWNlPiB7CiAgcHVibGljOgogICBleHBsaWNpdCBWaWRlb1RyYWNrU291cmNl
KGJvb2wgcmVtb3RlKTsKICAgdm9pZCBTZXRTdGF0ZShTb3VyY2VTdGF0ZSBuZXdfc3RhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
d2VicnRjc2RwLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvd2VicnRjc2RwLmNjCmluZGV4IDY2NWI0ZDQxMWEwNTBhOTg0MzBmMjZkNGY0ZmFiMzQ3ZjBi
YTQ3YTguLjBjZDZiZWNlZWZhMzc3ZGZmZTdmOTM0YjllNWI5NjYzNTA0NmM1NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3Nk
cC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93
ZWJydGNzZHAuY2MKQEAgLTIwLDEzICsyMCwxNSBAQAogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRl
IDxzdHJpbmc+CiAjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNpbmNsdWRlIDx1dGlsaXR5Pgog
I2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgiCisjaW5jbHVk
ZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL2NhbmRpZGF0ZS5oIgogI2lu
Y2x1ZGUgImFwaS9jcnlwdG9wYXJhbXMuaCIKICNpbmNsdWRlICJhcGkvanNlcGljZWNhbmRpZGF0
ZS5oIgogI2luY2x1ZGUgImFwaS9qc2Vwc2Vzc2lvbmRlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAi
YXBpL21lZGlhdHlwZXMuaCIKIC8vIGZvciBSdHBFeHRlbnNpb24KICNpbmNsdWRlICJhcGkvcnRw
cGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29kZWMuaCIKQEAgLTExOSw2ICsx
MjEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBrQXR0cmlidXRlUnRjcE11eFtdID0gInJ0Y3AtbXV4
IjsKIHN0YXRpYyBjb25zdCBjaGFyIGtBdHRyaWJ1dGVSdGNwUmVkdWNlZFNpemVbXSA9ICJydGNw
LXJzaXplIjsKIHN0YXRpYyBjb25zdCBjaGFyIGtBdHRyaWJ1dGVTc3JjW10gPSAic3NyYyI7CiBz
dGF0aWMgY29uc3QgY2hhciBrU3NyY0F0dHJpYnV0ZUNuYW1lW10gPSAiY25hbWUiOworc3RhdGlj
IGNvbnN0IGNoYXIga0F0dHJpYnV0ZUV4dG1hcEFsbG93TWl4ZWRbXSA9ICJleHRtYXAtYWxsb3ct
bWl4ZWQiOwogc3RhdGljIGNvbnN0IGNoYXIga0F0dHJpYnV0ZUV4dG1hcFtdID0gImV4dG1hcCI7
CiAvLyBkcmFmdC1hbHZlc3RyYW5kLW1tdXNpYy1tc2lkLTAxCiAvLyBhPW1zaWQtc2VtYW50aWM6
IFdNUwpAQCAtMzM0LDkgKzMzNywxMCBAQCBzdGF0aWMgYm9vbCBQYXJzZUljZU9wdGlvbnMoY29u
c3Qgc3RkOjpzdHJpbmcmIGxpbmUsCiBzdGF0aWMgYm9vbCBQYXJzZUV4dG1hcChjb25zdCBzdGQ6
OnN0cmluZyYgbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cEV4dGVuc2lvbiogZXh0
bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgU2RwUGFyc2VFcnJvciogZXJyb3IpOwotc3Rh
dGljIGJvb2wgUGFyc2VGaW5nZXJwcmludEF0dHJpYnV0ZShjb25zdCBzdGQ6OnN0cmluZyYgbGlu
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpTU0xGaW5nZXJw
cmludCoqIGZpbmdlcnByaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTZHBQYXJzZUVycm9yKiBlcnJvcik7CitzdGF0aWMgYm9vbCBQYXJzZUZpbmdlcnByaW50QXR0
cmlidXRlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsaW5lLAorICAgIHN0ZDo6dW5pcXVlX3B0
cjxydGM6OlNTTEZpbmdlcnByaW50PiogZmluZ2VycHJpbnQsCisgICAgU2RwUGFyc2VFcnJvciog
ZXJyb3IpOwogc3RhdGljIGJvb2wgUGFyc2VEdGxzU2V0dXAoY29uc3Qgc3RkOjpzdHJpbmcmIGxp
bmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpDb25uZWN0aW9uUm9sZSog
cm9sZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yKTsK
QEAgLTg1Miw2ICs4NTYsMTIgQEAgc3RkOjpzdHJpbmcgU2RwU2VyaWFsaXplKGNvbnN0IEpzZXBT
ZXNzaW9uRGVzY3JpcHRpb24mIGpkZXNjKSB7CiAgICAgQWRkTGluZShncm91cF9saW5lLCAmbWVz
c2FnZSk7CiAgIH0KIAorICAvLyBNaXhlZCBvbmUtIGFuZCB0d28tYnl0ZSBoZWFkZXIgZXh0ZW5z
aW9uLgorICBpZiAoZGVzYy0+ZXh0bWFwX2FsbG93X21peGVkKCkpIHsKKyAgICBJbml0QXR0ckxp
bmUoa0F0dHJpYnV0ZUV4dG1hcEFsbG93TWl4ZWQsICZvcyk7CisgICAgQWRkTGluZShvcy5zdHIo
KSwgJm1lc3NhZ2UpOworICB9CisKICAgLy8gTWVkaWFTdHJlYW0gc2VtYW50aWNzCiAgIEluaXRB
dHRyTGluZShrQXR0cmlidXRlTXNpZFNlbWFudGljcywgJm9zKTsKICAgb3MgPDwga1NkcERlbGlt
aXRlckNvbG9uIDw8ICIgIiA8PCBrTWVkaWFTdHJlYW1TZW1hbnRpYzsKQEAgLTEzMDMsOCArMTMx
Myw4IEBAIHZvaWQgQnVpbGRNZWRpYURlc2NyaXB0aW9uKGNvbnN0IENvbnRlbnRJbmZvKiBjb250
ZW50X2luZm8sCiAKICAgICAgIGlmIChkYXRhX2Rlc2MtPnVzZV9zY3RwbWFwKCkpIHsKICAgICAg
ICAgZm9yIChjb25zdCBjcmlja2V0OjpEYXRhQ29kZWMmIGNvZGVjIDogZGF0YV9kZXNjLT5jb2Rl
Y3MoKSkgewotICAgICAgICAgIGlmIChjcmlja2V0OjpDb2RlY05hbWVzRXEoY29kZWMubmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OmtHb29nbGVTY3Rw
RGF0YUNvZGVjTmFtZSkgJiYKKyAgICAgICAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShj
b2RlYy5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6
OmtHb29nbGVTY3RwRGF0YUNvZGVjTmFtZSkgJiYKICAgICAgICAgICAgICAgY29kZWMuR2V0UGFy
YW0oY3JpY2tldDo6a0NvZGVjUGFyYW1Qb3J0LCAmc2N0cF9wb3J0KSkgewogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgfQpAQCAtMTQ4Miw3ICsxNDkyLDE3IEBAIHZvaWQgQnVpbGRSdHBD
b250ZW50QXR0cmlidXRlcyhjb25zdCBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogbWVkaWFfZGVz
YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbXNpZF9zaWduYWxpbmcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIG1lc3NhZ2UpIHsKICAg
cnRjOjpTdHJpbmdCdWlsZGVyIG9zOwotICAvLyBSRkMgNTI4NQorICAvLyBSRkMgODI4NQorICAv
LyBhPWV4dG1hcC1hbGxvdy1taXhlZAorICAvLyBUaGUgYXR0cmlidXRlIE1VU1QgYmUgZWl0aGVy
IG9uIHNlc3Npb24gbGV2ZWwgb3IgbWVkaWEgbGV2ZWwuIFdlIHN1cHBvcnQKKyAgLy8gcmVzcG9u
ZGluZyBvbiBib3RoIGxldmVscywgaG93ZXZlciwgd2UgZG9uJ3QgcmVzcG9uZCBvbiBtZWRpYSBs
ZXZlbCBpZiBpdCdzCisgIC8vIHNldCBvbiBzZXNzaW9uIGxldmVsLgorICBpZiAobWVkaWFfZGVz
Yy0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSA9PQorICAgICAgTWVkaWFDb250ZW50RGVzY3Jp
cHRpb246OmtNZWRpYSkgeworICAgIEluaXRBdHRyTGluZShrQXR0cmlidXRlRXh0bWFwQWxsb3dN
aXhlZCwgJm9zKTsKKyAgICBBZGRMaW5lKG9zLnN0cigpLCBtZXNzYWdlKTsKKyAgfQorICAvLyBS
RkMgODI4NQogICAvLyBhPWV4dG1hcDo8dmFsdWU+WyIvIjxkaXJlY3Rpb24+XSA8VVJJPiA8ZXh0
ZW5zaW9uYXR0cmlidXRlcz4KICAgLy8gVGhlIGRlZmluaXRpb25zIE1VU1QgYmUgZWl0aGVyIGFs
bCBzZXNzaW9uIGxldmVsIG9yIGFsbCBtZWRpYSBsZXZlbC4gVGhpcwogICAvLyBpbXBsZW1lbnRh
dGlvbiB1c2VzIGFsbCBtZWRpYSBsZXZlbC4KQEAgLTE2MDksNyArMTYyOSwxMiBAQCB2b2lkIEJ1
aWxkUnRwQ29udGVudEF0dHJpYnV0ZXMoY29uc3QgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIG1l
ZGlhX2Rlc2MsCiAgICAgICAgIC8vIFNpbmNlIGE9c3NyYyBtc2lkIHNpZ25hbGluZyBpcyB1c2Vk
IGluIFBsYW4gQiBTRFAgc2VtYW50aWNzLCBhbmQKICAgICAgICAgLy8gbXVsdGlwbGUgc3RyZWFt
IGlkcyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgUGxhbiBCLCB3ZSBhcmUgb25seSBhZGRpbmcKICAg
ICAgICAgLy8gYSBsaW5lIGZvciB0aGUgZmlyc3QgbWVkaWEgc3RyZWFtIGlkIGhlcmUuCi0gICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHJlYW1faWQgPSB0cmFjay5maXJzdF9zdHJlYW1faWQo
KTsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNrX3N0cmVhbV9pZCA9IHRyYWNrLmZp
cnN0X3N0cmVhbV9pZCgpOworICAgICAgICAvLyBXZSB1c2UgYSBzcGVjaWFsIG1zaWQtaWQgdmFs
dWUgb2YgIi0iIHRvIHJlcHJlc2VudCBubyBzdHJlYW1zLAorICAgICAgICAvLyBmb3IgVW5pZmll
ZCBQbGFuIGNvbXBhdGliaWxpdHkuIFBsYW4gQiB3aWxsIGFsd2F5cyBoYXZlIGEKKyAgICAgICAg
Ly8gdHJhY2tfc3RyZWFtX2lkLgorICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3RyZWFtX2lk
ID0KKyAgICAgICAgICAgIHRyYWNrX3N0cmVhbV9pZC5lbXB0eSgpID8ga05vU3RyZWFtTXNpZCA6
IHRyYWNrX3N0cmVhbV9pZDsKICAgICAgICAgSW5pdEF0dHJMaW5lKGtBdHRyaWJ1dGVTc3JjLCAm
b3MpOwogICAgICAgICBvcyA8PCBrU2RwRGVsaW1pdGVyQ29sb24gPDwgc3NyYyA8PCBrU2RwRGVs
aW1pdGVyU3BhY2UKICAgICAgICAgICAgPDwga1NzcmNBdHRyaWJ1dGVNc2lkIDw8IGtTZHBEZWxp
bWl0ZXJDb2xvbiA8PCBzdHJlYW1faWQKQEAgLTE3MjcsNyArMTc1Miw3IEBAIHZvaWQgQWRkUnRj
cEZiTGluZXMoY29uc3QgVCYgY29kZWMsIHN0ZDo6c3RyaW5nKiBtZXNzYWdlKSB7CiAKIGJvb2wg
QWRkU2N0cERhdGFDb2RlYyhEYXRhQ29udGVudERlc2NyaXB0aW9uKiBtZWRpYV9kZXNjLCBpbnQg
c2N0cF9wb3J0KSB7CiAgIGZvciAoY29uc3QgYXV0byYgY29kZWMgOiBtZWRpYV9kZXNjLT5jb2Rl
Y3MoKSkgewotICAgIGlmIChjcmlja2V0OjpDb2RlY05hbWVzRXEoY29kZWMubmFtZSwgY3JpY2tl
dDo6a0dvb2dsZVNjdHBEYXRhQ29kZWNOYW1lKSkgeworICAgIGlmIChhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKGNvZGVjLm5hbWUsIGNyaWNrZXQ6OmtHb29nbGVTY3RwRGF0YUNvZGVjTmFtZSkpIHsK
ICAgICAgIHJldHVybiBQYXJzZUZhaWxlZCgiIiwgIkNhbid0IGhhdmUgbXVsdGlwbGUgc2N0cCBw
b3J0IGF0dHJpYnV0ZXMuIiwgTlVMTCk7CiAgICAgfQogICB9CkBAIC0xOTk2LDcgKzIwMjEsNyBA
QCBib29sIFBhcnNlU2Vzc2lvbkRlc2NyaXB0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdl
LAogICBzdGQ6OnN0cmluZyBsaW5lOwogCiAgIGRlc2MtPnNldF9tc2lkX3N1cHBvcnRlZChmYWxz
ZSk7Ci0KKyAgZGVzYy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZChmYWxzZSk7CiAgIC8vIFJGQyA0
NTY2CiAgIC8vIHY9ICAocHJvdG9jb2wgdmVyc2lvbikKICAgaWYgKCFHZXRMaW5lV2l0aFR5cGUo
bWVzc2FnZSwgcG9zLCAmbGluZSwga0xpbmVUeXBlVmVyc2lvbikpIHsKQEAgLTIxMTcsMTEgKzIx
NDIsMTEgQEAgYm9vbCBQYXJzZVNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBzdGQ6OnN0cmluZyYg
bWVzc2FnZSwKICAgICAgICAgICAgICJDYW4ndCBoYXZlIG11bHRpcGxlIGZpbmdlcnByaW50IGF0
dHJpYnV0ZXMgYXQgdGhlIHNhbWUgbGV2ZWwuIiwKICAgICAgICAgICAgIGVycm9yKTsKICAgICAg
IH0KLSAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQqIGZpbmdlcnByaW50ID0gTlVMTDsKKyAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTEZpbmdlcnByaW50PiBmaW5nZXJwcmludDsKICAgICAg
IGlmICghUGFyc2VGaW5nZXJwcmludEF0dHJpYnV0ZShsaW5lLCAmZmluZ2VycHJpbnQsIGVycm9y
KSkgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICB9Ci0gICAgICBzZXNzaW9uX3RkLT5p
ZGVudGl0eV9maW5nZXJwcmludC5yZXNldChmaW5nZXJwcmludCk7CisgICAgICBzZXNzaW9uX3Rk
LT5pZGVudGl0eV9maW5nZXJwcmludCA9IHN0ZDo6bW92ZShmaW5nZXJwcmludCk7CiAgICAgfSBl
bHNlIGlmIChIYXNBdHRyaWJ1dGUobGluZSwga0F0dHJpYnV0ZVNldHVwKSkgewogICAgICAgaWYg
KCFQYXJzZUR0bHNTZXR1cChsaW5lLCAmKHNlc3Npb25fdGQtPmNvbm5lY3Rpb25fcm9sZSksIGVy
cm9yKSkgewogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTMzLDYgKzIxNTgsOCBAQCBib29s
IFBhcnNlU2Vzc2lvbkRlc2NyaXB0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAogICAg
ICAgfQogICAgICAgZGVzYy0+c2V0X21zaWRfc3VwcG9ydGVkKAogICAgICAgICAgIENhc2VJbnNl
bnNpdGl2ZUZpbmQoc2VtYW50aWNzLCBrTWVkaWFTdHJlYW1TZW1hbnRpYykpOworICAgIH0gZWxz
ZSBpZiAoSGFzQXR0cmlidXRlKGxpbmUsIGtBdHRyaWJ1dGVFeHRtYXBBbGxvd01peGVkKSkgewor
ICAgICAgZGVzYy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZCh0cnVlKTsKICAgICB9IGVsc2UgaWYg
KEhhc0F0dHJpYnV0ZShsaW5lLCBrQXR0cmlidXRlRXh0bWFwKSkgewogICAgICAgUnRwRXh0ZW5z
aW9uIGV4dG1hcDsKICAgICAgIGlmICghUGFyc2VFeHRtYXAobGluZSwgJmV4dG1hcCwgZXJyb3Ip
KSB7CkBAIC0yMTY2LDkgKzIxOTMsMTAgQEAgYm9vbCBQYXJzZUdyb3VwQXR0cmlidXRlKGNvbnN0
IHN0ZDo6c3RyaW5nJiBsaW5lLAogICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgUGFy
c2VGaW5nZXJwcmludEF0dHJpYnV0ZShjb25zdCBzdGQ6OnN0cmluZyYgbGluZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpTU0xGaW5nZXJwcmludCoqIGZpbmdl
cnByaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBQYXJzZUVy
cm9yKiBlcnJvcikgeworc3RhdGljIGJvb2wgUGFyc2VGaW5nZXJwcmludEF0dHJpYnV0ZSgKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbGluZSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xG
aW5nZXJwcmludD4qIGZpbmdlcnByaW50LAorICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yKSB7CiAg
IGlmICghSXNMaW5lVHlwZShsaW5lLCBrTGluZVR5cGVBdHRyaWJ1dGVzKSB8fAogICAgICAgIUhh
c0F0dHJpYnV0ZShsaW5lLCBrQXR0cmlidXRlRmluZ2VycHJpbnQpKSB7CiAgICAgcmV0dXJuIFBh
cnNlRmFpbGVkRXhwZWN0TGluZShsaW5lLCAwLCBrTGluZVR5cGVBdHRyaWJ1dGVzLApAQCAtMjE5
NCw3ICsyMjIyLDggQEAgc3RhdGljIGJvb2wgUGFyc2VGaW5nZXJwcmludEF0dHJpYnV0ZShjb25z
dCBzdGQ6OnN0cmluZyYgbGluZSwKICAgICAgICAgICAgICAgICAgOjp0b2xvd2VyKTsKIAogICAv
LyBUaGUgc2Vjb25kIGZpZWxkIGlzIHRoZSBkaWdlc3QgdmFsdWUuIERlLWhleGlmeSBpdC4KLSAg
KmZpbmdlcnByaW50ID0gcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbVJmYzQ1NzIoYWxn
b3JpdGhtLCBmaWVsZHNbMV0pOworICAqZmluZ2VycHJpbnQgPQorICAgICAgcnRjOjpTU0xGaW5n
ZXJwcmludDo6Q3JlYXRlVW5pcXVlRnJvbVJmYzQ1NzIoYWxnb3JpdGhtLCBmaWVsZHNbMV0pOwog
ICBpZiAoISpmaW5nZXJwcmludCkgewogICAgIHJldHVybiBQYXJzZUZhaWxlZChsaW5lLCAiRmFp
bGVkIHRvIGNyZWF0ZSBmaW5nZXJwcmludCBmcm9tIHRoZSBkaWdlc3QuIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3IpOwpAQCAtMjgzNCwxMiArMjg2MywxMSBAQCBib29sIFBhcnNlQ29u
dGVudChjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgfQogICAgIH0gZWxzZSBpZiAoSGFzQXR0cmlidXRlKGxpbmUsIGtBdHRyaWJ1dGVGaW5n
ZXJwcmludCkpIHsKLSAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQqIGZpbmdlcnByaW50ID0gTlVM
TDsKLQorICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMRmluZ2VycHJpbnQ+IGZpbmdlcnBy
aW50OwogICAgICAgaWYgKCFQYXJzZUZpbmdlcnByaW50QXR0cmlidXRlKGxpbmUsICZmaW5nZXJw
cmludCwgZXJyb3IpKSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgIH0KLSAgICAgIHRy
YW5zcG9ydC0+aWRlbnRpdHlfZmluZ2VycHJpbnQucmVzZXQoZmluZ2VycHJpbnQpOworICAgICAg
dHJhbnNwb3J0LT5pZGVudGl0eV9maW5nZXJwcmludCA9IHN0ZDo6bW92ZShmaW5nZXJwcmludCk7
CiAgICAgfSBlbHNlIGlmIChIYXNBdHRyaWJ1dGUobGluZSwga0F0dHJpYnV0ZVNldHVwKSkgewog
ICAgICAgaWYgKCFQYXJzZUR0bHNTZXR1cChsaW5lLCAmKHRyYW5zcG9ydC0+Y29ubmVjdGlvbl9y
b2xlKSwgZXJyb3IpKSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5MDIsNiArMjkzMCw5
IEBAIGJvb2wgUGFyc2VDb250ZW50KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAogICAgICAg
ICBtZWRpYV9kZXNjLT5zZXRfZGlyZWN0aW9uKFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uOjprSW5h
Y3RpdmUpOwogICAgICAgfSBlbHNlIGlmIChIYXNBdHRyaWJ1dGUobGluZSwga0F0dHJpYnV0ZVNl
bmRSZWN2KSkgewogICAgICAgICBtZWRpYV9kZXNjLT5zZXRfZGlyZWN0aW9uKFJ0cFRyYW5zY2Vp
dmVyRGlyZWN0aW9uOjprU2VuZFJlY3YpOworICAgICAgfSBlbHNlIGlmIChIYXNBdHRyaWJ1dGUo
bGluZSwga0F0dHJpYnV0ZUV4dG1hcEFsbG93TWl4ZWQpKSB7CisgICAgICAgIG1lZGlhX2Rlc2Mt
PnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgKKyAgICAgICAgICAgIE1lZGlhQ29udGVudERl
c2NyaXB0aW9uOjprTWVkaWEpOwogICAgICAgfSBlbHNlIGlmIChIYXNBdHRyaWJ1dGUobGluZSwg
a0F0dHJpYnV0ZUV4dG1hcCkpIHsKICAgICAgICAgUnRwRXh0ZW5zaW9uIGV4dG1hcDsKICAgICAg
ICAgaWYgKCFQYXJzZUV4dG1hcChsaW5lLCAmZXh0bWFwLCBlcnJvcikpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2Rw
LmgKaW5kZXggMmQ4NDJhMWQ1ZDRiODA5MWJiNzRhOTRmOTZlZmFiNjA5ZDA3N2QyOS4uZjE4NWMw
ODkzMjAwODk4YmQxNzA2NTE5ZjFiNjU5ZDVmNDk2YjJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwLmgKQEAg
LTIyLDYgKzIyLDggQEAKIAogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgInJ0Y19iYXNl
L3N5c3RlbS9ydGNfZXhwb3J0LmgiCisKIG5hbWVzcGFjZSBjcmlja2V0IHsKIGNsYXNzIENhbmRp
ZGF0ZTsKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CkBAIC00Niw3ICs0OCw4IEBAIHN0ZDo6c3Ry
aW5nIFNkcFNlcmlhbGl6ZUNhbmRpZGF0ZShjb25zdCBJY2VDYW5kaWRhdGVJbnRlcmZhY2UmIGNh
bmRpZGF0ZSk7CiAKIC8vIFNlcmlhbGl6ZXMgYSBjcmlja2V0IENhbmRpZGF0ZS4KIC8vIGNhbmRp
ZGF0ZSAtIFRoZSBjYW5kaWRhdGUgdG8gYmUgc2VyaWFsaXplZC4KLXN0ZDo6c3RyaW5nIFNkcFNl
cmlhbGl6ZUNhbmRpZGF0ZShjb25zdCBjcmlja2V0OjpDYW5kaWRhdGUmIGNhbmRpZGF0ZSk7CitS
VENfRVhQT1JUIHN0ZDo6c3RyaW5nIFNkcFNlcmlhbGl6ZUNhbmRpZGF0ZSgKKyAgICBjb25zdCBj
cmlja2V0OjpDYW5kaWRhdGUmIGNhbmRpZGF0ZSk7CiAKIC8vIERlc2VyaWFsaXplcyB0aGUgcGFz
c2VkIGluIFNEUCBzdHJpbmcgdG8gYSBKc2VwU2Vzc2lvbkRlc2NyaXB0aW9uLgogLy8gbWVzc2Fn
ZSAtIFNEUCBzdHJpbmcgdG8gYmUgRGVzZXJpYWxpemVkLgpAQCAtNzYsMTAgKzc5LDEwIEBAIGJv
b2wgU2RwRGVzZXJpYWxpemVDYW5kaWRhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCiAv
LyBjYW5kaWRhdGUgLSBUaGUgY3JpY2tldCBDYW5kaWRhdGUgZnJvbSB0aGUgU0RQIHN0cmluZy4K
IC8vIGVycm9yIC0gVGhlIGRldGFpbCBlcnJvciBpbmZvcm1hdGlvbiB3aGVuIHBhcnNpbmcgZmFp
bHMuCiAvLyByZXR1cm4gLSB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCi1ib29s
IFNkcERlc2VyaWFsaXplQ2FuZGlkYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3Nh
Z2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkNhbmRpZGF0ZSogY2Fu
ZGlkYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBQYXJzZUVycm9yKiBlcnJv
cik7CitSVENfRVhQT1JUIGJvb2wgU2RwRGVzZXJpYWxpemVDYW5kaWRhdGUoY29uc3Qgc3RkOjpz
dHJpbmcmIHRyYW5zcG9ydF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkNhbmRpZGF0ZSogY2FuZGlkYXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yKTsK
IAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHBfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHBfdW5pdHRl
c3QuY2MKaW5kZXggOWMxMDU1NDYzMTUzYmU3MTIyNTRhMDM0MjEyN2E4MDA0NmVmNjZlZS4uZTdj
NWM3N2JiNjFhZGUyYjVmOTQ4OTI2NjEwMjU3YjEwOTY1ZDA3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwX3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dl
YnJ0Y3NkcF91bml0dGVzdC5jYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1
dGlscy5oIgogCkBAIC04OSw2ICs5MCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtBdHRyaWJ1dGVD
cnlwdG9WaWRlb1tdID0KIHN0YXRpYyBjb25zdCBjaGFyIGtGaW5nZXJwcmludFtdID0KICAgICAi
YT1maW5nZXJwcmludDpzaGEtMSAiCiAgICAgIjRBOkFEOkI5OkIxOjNGOjgyOjE4OjNCOjU0OjAy
OjEyOkRGOjNFOjVEOjQ5OjZCOjE5OkU1OjdDOkFCXHJcbiI7CitzdGF0aWMgY29uc3QgY2hhciBr
RXh0bWFwQWxsb3dNaXhlZFtdID0gImE9ZXh0bWFwLWFsbG93LW1peGVkXHJcbiI7CiBzdGF0aWMg
Y29uc3QgaW50IGtFeHRtYXBJZCA9IDE7CiBzdGF0aWMgY29uc3QgY2hhciBrRXh0bWFwVXJpW10g
PSAiaHR0cDovL2V4YW1wbGUuY29tLzA4MjAwNS9leHQuaHRtI3R0aW1lIjsKIHN0YXRpYyBjb25z
dCBjaGFyIGtFeHRtYXBbXSA9CkBAIC02MjEsOCArNjIzLDggQEAgc3RhdGljIGNvbnN0IGNoYXIg
a1VuaWZpZWRQbGFuU2RwRnVsbFN0cmluZ1dpdGhTcGVjaWFsTXNpZFtdID0KICAgICAiZ2VuZXJh
dGlvbiAyXHJcbiIKICAgICAiYT1pY2UtdWZyYWc6dWZyYWdfdm9pY2VcclxuYT1pY2UtcHdkOnB3
ZF92b2ljZVxyXG4iCiAgICAgImE9bWlkOmF1ZGlvX2NvbnRlbnRfbmFtZVxyXG4iCi0gICAgImE9
bXNpZDpsb2NhbF9zdHJlYW1fMSBhdWRpb190cmFja19pZF8xXHJcbiIKICAgICAiYT1zZW5kcmVj
dlxyXG4iCisgICAgImE9bXNpZDpsb2NhbF9zdHJlYW1fMSBhdWRpb190cmFja19pZF8xXHJcbiIK
ICAgICAiYT1ydGNwLW11eFxyXG4iCiAgICAgImE9cnRjcC1yc2l6ZVxyXG4iCiAgICAgImE9Y3J5
cHRvOjEgQUVTX0NNXzEyOF9ITUFDX1NIQTFfMzIgIgpAQCAtNjQxLDkgKzY0Myw5IEBAIHN0YXRp
YyBjb25zdCBjaGFyIGtVbmlmaWVkUGxhblNkcEZ1bGxTdHJpbmdXaXRoU3BlY2lhbE1zaWRbXSA9
CiAgICAgImE9cnRjcDo5IElOIElQNCAwLjAuMC4wXHJcbiIKICAgICAiYT1pY2UtdWZyYWc6dWZy
YWdfdm9pY2VfMlxyXG5hPWljZS1wd2Q6cHdkX3ZvaWNlXzJcclxuIgogICAgICJhPW1pZDphdWRp
b19jb250ZW50X25hbWVfMlxyXG4iCisgICAgImE9c2VuZHJlY3ZcclxuIgogICAgICJhPW1zaWQ6
bG9jYWxfc3RyZWFtXzEgYXVkaW9fdHJhY2tfaWRfMlxyXG4iCiAgICAgImE9bXNpZDpsb2NhbF9z
dHJlYW1fMiBhdWRpb190cmFja19pZF8yXHJcbiIKLSAgICAiYT1zZW5kcmVjdlxyXG4iCiAgICAg
ImE9cnRjcC1tdXhcclxuIgogICAgICJhPXJ0Y3AtcnNpemVcclxuIgogICAgICJhPWNyeXB0bzox
IEFFU19DTV8xMjhfSE1BQ19TSEExXzMyICIKQEAgLTY2NCw4ICs2NjYsOCBAQCBzdGF0aWMgY29u
c3QgY2hhciBrVW5pZmllZFBsYW5TZHBGdWxsU3RyaW5nV2l0aFNwZWNpYWxNc2lkW10gPQogICAg
ICJhPXJ0Y3A6OSBJTiBJUDQgMC4wLjAuMFxyXG4iCiAgICAgImE9aWNlLXVmcmFnOnVmcmFnX3Zv
aWNlXzNcclxuYT1pY2UtcHdkOnB3ZF92b2ljZV8zXHJcbiIKICAgICAiYT1taWQ6YXVkaW9fY29u
dGVudF9uYW1lXzNcclxuIgotICAgICJhPW1zaWQ6LSBhdWRpb190cmFja19pZF8zXHJcbiIKICAg
ICAiYT1zZW5kcmVjdlxyXG4iCisgICAgImE9bXNpZDotIGF1ZGlvX3RyYWNrX2lkXzNcclxuIgog
ICAgICJhPXJ0Y3AtbXV4XHJcbiIKICAgICAiYT1ydGNwLXJzaXplXHJcbiIKICAgICAiYT1jcnlw
dG86MSBBRVNfQ01fMTI4X0hNQUNfU0hBMV8zMiAiCkBAIC02NzQsNyArNjc2LDEwIEBAIHN0YXRp
YyBjb25zdCBjaGFyIGtVbmlmaWVkUGxhblNkcEZ1bGxTdHJpbmdXaXRoU3BlY2lhbE1zaWRbXSA9
CiAgICAgImE9cnRwbWFwOjExMSBvcHVzLzQ4MDAwLzJcclxuIgogICAgICJhPXJ0cG1hcDoxMDMg
SVNBQy8xNjAwMFxyXG4iCiAgICAgImE9cnRwbWFwOjEwNCBJU0FDLzMyMDAwXHJcbiIKLSAgICAi
YT1zc3JjOjcgY25hbWU6c3RyZWFtXzJfY25hbWVcclxuIjsKKyAgICAiYT1zc3JjOjcgY25hbWU6
c3RyZWFtXzJfY25hbWVcclxuIgorICAgICJhPXNzcmM6NyBtc2lkOi0gYXVkaW9fdHJhY2tfaWRf
M1xyXG4iCisgICAgImE9c3NyYzo3IG1zbGFiZWw6LVxyXG4iCisgICAgImE9c3NyYzo3IGxhYmVs
OmF1ZGlvX3RyYWNrX2lkXzNcclxuIjsKIAogLy8gT25lIGNhbmRpZGF0ZSByZWZlcmVuY2Ugc3Ry
aW5nIGFzIHBlciBXM2Mgc3BlYy4KIC8vIGNhbmRpZGF0ZTo8YmxhaD4gbm90IGE9Y2FuZGlkYXRl
OjxibGFoPkNSTEYKQEAgLTExNjAsNyArMTE2NSw3IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgIC8vIHdpdGggMyBhdWRpbyBNZWRpYUNvbnRlbnREZXNj
cmlwdGlvbnMgd2l0aCBzcGVjaWFsIFN0cmVhbVBhcmFtcyB0aGF0CiAgIC8vIGNvbnRhaW4gMCBv
ciBtdWx0aXBsZSBzdHJlYW0gaWRzOiAtIGF1ZGlvIHRyYWNrIDEgaGFzIDEgbWVkaWEgc3RyZWFt
IGlkIC0KICAgLy8gYXVkaW8gdHJhY2sgMiBoYXMgMiBtZWRpYSBzdHJlYW0gaWRzIC0gYXVkaW8g
dHJhY2sgMyBoYXMgMCBtZWRpYSBzdHJlYW0gaWRzCi0gIHZvaWQgTWFrZVVuaWZpZWRQbGFuRGVz
Y3JpcHRpb25NdWx0aXBsZVN0cmVhbUlkcygpIHsKKyAgdm9pZCBNYWtlVW5pZmllZFBsYW5EZXNj
cmlwdGlvbk11bHRpcGxlU3RyZWFtSWRzKGNvbnN0IGludCBtc2lkX3NpZ25hbGluZykgewogICAg
IGRlc2NfLlJlbW92ZUNvbnRlbnRCeU5hbWUoa1ZpZGVvQ29udGVudE5hbWUpOwogICAgIGRlc2Nf
LlJlbW92ZVRyYW5zcG9ydEluZm9CeU5hbWUoa1ZpZGVvQ29udGVudE5hbWUpOwogICAgIFJlbW92
ZVZpZGVvQ2FuZGlkYXRlcygpOwpAQCAtMTE4OCw5ICsxMTkzLDcgQEAgY2xhc3MgV2ViUnRjU2Rw
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBkZXNjXy5BZGRDb250ZW50KGtBdWRp
b0NvbnRlbnROYW1lMywgTWVkaWFQcm90b2NvbFR5cGU6OmtSdHAsIGF1ZGlvX2Rlc2NfMyk7CiAg
ICAgRVhQRUNUX1RSVUUoZGVzY18uQWRkVHJhbnNwb3J0SW5mbyhUcmFuc3BvcnRJbmZvKAogICAg
ICAgICBrQXVkaW9Db250ZW50TmFtZTMsIFRyYW5zcG9ydERlc2NyaXB0aW9uKGtVZnJhZ1ZvaWNl
Mywga1B3ZFZvaWNlMykpKSk7Ci0gICAgLy8gTWFrZSBzdXJlIHRvIGNyZWF0ZSBib3RoIGE9bXNp
ZCBsaW5lcy4KLSAgICBkZXNjXy5zZXRfbXNpZF9zaWduYWxpbmcoY3JpY2tldDo6a01zaWRTaWdu
YWxpbmdNZWRpYVNlY3Rpb24gfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0
OjprTXNpZFNpZ25hbGluZ1NzcmNBdHRyaWJ1dGUpOworICAgIGRlc2NfLnNldF9tc2lkX3NpZ25h
bGluZyhtc2lkX3NpZ25hbGluZyk7CiAgICAgQVNTRVJUX1RSVUUoamRlc2NfLkluaXRpYWxpemUo
ZGVzY18uQ29weSgpLCBqZGVzY18uc2Vzc2lvbl9pZCgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpkZXNjXy5zZXNzaW9uX3ZlcnNpb24oKSkpOwogICB9CkBAIC0xMjgyLDYg
KzEyODUsOSBAQCBjbGFzcyBXZWJSdGNTZHBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewog
ICAgIC8vIHN0cmVhbXMKICAgICBFWFBFQ1RfRVEoY2QxLT5zdHJlYW1zKCksIGNkMi0+c3RyZWFt
cygpKTsKIAorICAgIC8vIGV4dG1hcC1hbGxvdy1taXhlZAorICAgIEVYUEVDVF9FUShjZDEtPmV4
dG1hcF9hbGxvd19taXhlZF9lbnVtKCksIGNkMi0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7
CisKICAgICAvLyBleHRtYXAKICAgICBBU1NFUlRfRVEoY2QxLT5ydHBfaGVhZGVyX2V4dGVuc2lv
bnMoKS5zaXplKCksCiAgICAgICAgICAgICAgIGNkMi0+cnRwX2hlYWRlcl9leHRlbnNpb25zKCku
c2l6ZSgpKTsKQEAgLTEzOTgsNiArMTQwNCw3IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CiAKICAgICAvLyBnbG9iYWwgYXR0cmlidXRlcwogICAgIEVYUEVD
VF9FUShkZXNjMS5tc2lkX3N1cHBvcnRlZCgpLCBkZXNjMi5tc2lkX3N1cHBvcnRlZCgpKTsKKyAg
ICBFWFBFQ1RfRVEoZGVzYzEuZXh0bWFwX2FsbG93X21peGVkKCksIGRlc2MyLmV4dG1hcF9hbGxv
d19taXhlZCgpKTsKICAgfQogCiAgIGJvb2wgQ29tcGFyZVNlc3Npb25EZXNjcmlwdGlvbihjb25z
dCBKc2VwU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjMSwKQEAgLTE0OTUsOCArMTUwMiw3IEBAIGNs
YXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgIHZvaWQgQWRkRmlu
Z2VycHJpbnQoKSB7CiAgICAgZGVzY18uUmVtb3ZlVHJhbnNwb3J0SW5mb0J5TmFtZShrQXVkaW9D
b250ZW50TmFtZSk7CiAgICAgZGVzY18uUmVtb3ZlVHJhbnNwb3J0SW5mb0J5TmFtZShrVmlkZW9D
b250ZW50TmFtZSk7Ci0gICAgcnRjOjpTU0xGaW5nZXJwcmludCBmaW5nZXJwcmludChydGM6OkRJ
R0VTVF9TSEFfMSwga0lkZW50aXR5RGlnZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZW9mKGtJZGVudGl0eURpZ2VzdCkpOworICAgIHJ0Yzo6U1NMRmluZ2VycHJp
bnQgZmluZ2VycHJpbnQocnRjOjpESUdFU1RfU0hBXzEsIGtJZGVudGl0eURpZ2VzdCk7CiAgICAg
RVhQRUNUX1RSVUUoZGVzY18uQWRkVHJhbnNwb3J0SW5mbyhUcmFuc3BvcnRJbmZvKAogICAgICAg
ICBrQXVkaW9Db250ZW50TmFtZSwKICAgICAgICAgVHJhbnNwb3J0RGVzY3JpcHRpb24oc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+KCksIGtVZnJhZ1ZvaWNlLCBrUHdkVm9pY2UsCkBAIC0xNTQwLDYg
KzE1NDYsMjcgQEAgY2xhc3MgV2ViUnRjU2RwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
ICAgICB9CiAgIH0KIAorICAvLyBSZW1vdmVzIGFsbCBhPXNzcmMgbGluZXMgZnJvbSB0aGUgU0RQ
IHN0cmluZywgZXhjZXB0IGZvciB0aGUKKyAgLy8gImE9c3NyYzouLi4gY25hbWU6Li4uIiBsaW5l
cy4KKyAgdm9pZCBSZW1vdmVTc3JjTXNpZExpbmVzRnJvbVNkcFN0cmluZyhzdGQ6OnN0cmluZyog
c2RwX3N0cmluZykgeworICAgIGNvbnN0IGNoYXIga0F0dHJpYnV0ZVNzcmNbXSA9ICJhPXNzcmMi
OworICAgIGNvbnN0IGNoYXIga0F0dHJpYnV0ZUNuYW1lW10gPSAiY25hbWUiOworICAgIHNpemVf
dCBzc3JjX2xpbmVfcG9zID0gc2RwX3N0cmluZy0+ZmluZChrQXR0cmlidXRlU3NyYyk7CisgICAg
d2hpbGUgKHNzcmNfbGluZV9wb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIHNpemVf
dCBiZWdfbGluZV9wb3MgPSBzZHBfc3RyaW5nLT5yZmluZCgnXG4nLCBzc3JjX2xpbmVfcG9zKTsK
KyAgICAgIHNpemVfdCBlbmRfbGluZV9wb3MgPSBzZHBfc3RyaW5nLT5maW5kKCdcbicsIHNzcmNf
bGluZV9wb3MpOworICAgICAgc2l6ZV90IGNuYW1lX3BvcyA9IHNkcF9zdHJpbmctPmZpbmQoa0F0
dHJpYnV0ZUNuYW1lLCBzc3JjX2xpbmVfcG9zKTsKKyAgICAgIGlmIChjbmFtZV9wb3MgPT0gc3Rk
OjpzdHJpbmc6Om5wb3MgfHwgY25hbWVfcG9zID4gZW5kX2xpbmVfcG9zKSB7CisgICAgICAgIC8v
IE9ubHkgZXJhc2UgYT1zc3JjIGxpbmVzIHRoYXQgZG9uJ3QgY29udGFpbiAiY25hbWUiLgorICAg
ICAgICBzZHBfc3RyaW5nLT5lcmFzZShiZWdfbGluZV9wb3MsIGVuZF9saW5lX3BvcyAtIGJlZ19s
aW5lX3Bvcyk7CisgICAgICAgIHNzcmNfbGluZV9wb3MgPSBzZHBfc3RyaW5nLT5maW5kKGtBdHRy
aWJ1dGVTc3JjLCBiZWdfbGluZV9wb3MpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gU2tp
cCB0aGUgImE9c3NyYzouLi4gY25hbWUiIGxpbmUgYW5kIGZpbmQgdGhlIG5leHQgImE9c3NyYyIg
bGluZS4KKyAgICAgICAgc3NyY19saW5lX3BvcyA9IHNkcF9zdHJpbmctPmZpbmQoa0F0dHJpYnV0
ZVNzcmMsIGVuZF9saW5lX3Bvcyk7CisgICAgICB9CisgICAgfQorICB9CisKICAgLy8gUmVtb3Zl
cyBhbGwgYT1zc3JjIGxpbmVzIGZyb20gdGhlIFNEUCBzdHJpbmcuCiAgIHZvaWQgUmVtb3ZlU3Ny
Y0xpbmVzRnJvbVNkcFN0cmluZyhzdGQ6OnN0cmluZyogc2RwX3N0cmluZykgewogICAgIGNvbnN0
IGNoYXIga0F0dHJpYnV0ZVNzcmNbXSA9ICJhPXNzcmMiOwpAQCAtMjA3MCw5ICsyMDk3LDggQEAg
VEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIFNlcmlhbGl6ZVdpdGhTY3RwRGF0YUNoYW5uZWxBbmROZXdQ
b3J0KSB7CiAKICAgY2hhciBkZWZhdWx0X3BvcnRzdHJbMTZdOwogICBjaGFyIG5ld19wb3J0c3Ry
WzE2XTsKLSAgcnRjOjpzcHJpbnRmbihkZWZhdWx0X3BvcnRzdHIsIHNpemVvZihkZWZhdWx0X3Bv
cnRzdHIpLCAiJWQiLAotICAgICAgICAgICAgICAgIGtEZWZhdWx0U2N0cFBvcnQpOwotICBydGM6
OnNwcmludGZuKG5ld19wb3J0c3RyLCBzaXplb2YobmV3X3BvcnRzdHIpLCAiJWQiLCBrTmV3UG9y
dCk7CisgIHNucHJpbnRmKGRlZmF1bHRfcG9ydHN0ciwgc2l6ZW9mKGRlZmF1bHRfcG9ydHN0ciks
ICIlZCIsIGtEZWZhdWx0U2N0cFBvcnQpOworICBzbnByaW50ZihuZXdfcG9ydHN0ciwgc2l6ZW9m
KG5ld19wb3J0c3RyKSwgIiVkIiwga05ld1BvcnQpOwogICBydGM6OnJlcGxhY2Vfc3Vic3Rycyhk
ZWZhdWx0X3BvcnRzdHIsIHN0cmxlbihkZWZhdWx0X3BvcnRzdHIpLCBuZXdfcG9ydHN0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG5ld19wb3J0c3RyKSwgJmV4cGVjdGVkX3NkcCk7
CiAKQEAgLTIwOTQsNiArMjEyMCwyNSBAQCBURVNUX0YoV2ViUnRjU2RwVGVzdCwgU2VyaWFsaXpl
U2Vzc2lvbkRlc2NyaXB0aW9uV2l0aERhdGFDaGFubmVsQW5kQmFuZHdpZHRoKSB7CiAgIEVYUEVD
VF9FUShleHBlY3RlZF9zZHAsIG1lc3NhZ2UpOwogfQogCitURVNUX0YoV2ViUnRjU2RwVGVzdCwg
U2VyaWFsaXplU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aEV4dG1hcEFsbG93TWl4ZWQpIHsKKyAgamRl
c2NfLmRlc2NyaXB0aW9uKCktPnNldF9leHRtYXBfYWxsb3dfbWl4ZWQodHJ1ZSk7CisgIFRlc3RT
ZXJpYWxpemUoamRlc2NfKTsKK30KKworVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIFNlcmlhbGl6ZU1l
ZGlhQ29udGVudERlc2NyaXB0aW9uV2l0aEV4dG1hcEFsbG93TWl4ZWQpIHsKKyAgY3JpY2tldDo6
TWVkaWFDb250ZW50RGVzY3JpcHRpb24qIHZpZGVvX2Rlc2MgPQorICAgICAgamRlc2NfLmRlc2Ny
aXB0aW9uKCktPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZShrVmlkZW9Db250ZW50TmFtZSk7
CisgIEFTU0VSVF9UUlVFKHZpZGVvX2Rlc2MpOworICBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNj
cmlwdGlvbiogYXVkaW9fZGVzYyA9CisgICAgICBqZGVzY18uZGVzY3JpcHRpb24oKS0+R2V0Q29u
dGVudERlc2NyaXB0aW9uQnlOYW1lKGtBdWRpb0NvbnRlbnROYW1lKTsKKyAgQVNTRVJUX1RSVUUo
YXVkaW9fZGVzYyk7CisgIHZpZGVvX2Rlc2MtPnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgK
KyAgICAgIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEpOworICBhdWRp
b19kZXNjLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oCisgICAgICBjcmlja2V0OjpNZWRp
YUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgVGVzdFNlcmlhbGl6ZShqZGVzY18pOwor
fQorCiBURVNUX0YoV2ViUnRjU2RwVGVzdCwgU2VyaWFsaXplU2Vzc2lvbkRlc2NyaXB0aW9uV2l0
aEV4dG1hcCkgewogICBib29sIGVuY3J5cHRlZCA9IGZhbHNlOwogICBBZGRFeHRtYXAoZW5jcnlw
dGVkKTsKQEAgLTI0MzEsNiArMjQ3Niw1MyBAQCBURVNUX0YoV2ViUnRjU2RwVGVzdCwgRGVzZXJp
YWxpemVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0TXNpZCkgewogICBFWFBFQ1RfVFJVRShDb21w
YXJlU2Vzc2lvbkRlc2NyaXB0aW9uKGpkZXNjXywgamRlc2MpKTsKIH0KIAorVEVTVF9GKFdlYlJ0
Y1NkcFRlc3QsIERlc2VyaWFsaXplU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aEV4dG1hcEFsbG93TWl4
ZWQpIHsKKyAgamRlc2NfLmRlc2NyaXB0aW9uKCktPnNldF9leHRtYXBfYWxsb3dfbWl4ZWQodHJ1
ZSk7CisgIHN0ZDo6c3RyaW5nIHNkcF93aXRoX2V4dG1hcF9hbGxvd19taXhlZCA9IGtTZHBGdWxs
U3RyaW5nOworICBJbmplY3RBZnRlcigidD0wIDBcclxuIiwga0V4dG1hcEFsbG93TWl4ZWQsICZz
ZHBfd2l0aF9leHRtYXBfYWxsb3dfbWl4ZWQpOworICAvLyBEZXNlcmlhbGl6ZQorICBKc2VwU2Vz
c2lvbkRlc2NyaXB0aW9uIGpkZXNjX2Rlc2VyaWFsaXplZChrRHVtbXlUeXBlKTsKKyAgRVhQRUNU
X1RSVUUoU2RwRGVzZXJpYWxpemUoc2RwX3dpdGhfZXh0bWFwX2FsbG93X21peGVkLCAmamRlc2Nf
ZGVzZXJpYWxpemVkKSk7CisgIC8vIFZlcmlmeQorICBFWFBFQ1RfVFJVRShDb21wYXJlU2Vzc2lv
bkRlc2NyaXB0aW9uKGpkZXNjXywgamRlc2NfZGVzZXJpYWxpemVkKSk7Cit9CisKK1RFU1RfRihX
ZWJSdGNTZHBUZXN0LCBEZXNlcmlhbGl6ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhvdXRFeHRtYXBB
bGxvd01peGVkKSB7CisgIGpkZXNjXy5kZXNjcmlwdGlvbigpLT5zZXRfZXh0bWFwX2FsbG93X21p
eGVkKGZhbHNlKTsKKyAgc3RkOjpzdHJpbmcgc2RwX3dpdGhvdXRfZXh0bWFwX2FsbG93X21peGVk
ID0ga1NkcEZ1bGxTdHJpbmc7CisgIC8vIERlc2VyaWFsaXplCisgIEpzZXBTZXNzaW9uRGVzY3Jp
cHRpb24gamRlc2NfZGVzZXJpYWxpemVkKGtEdW1teVR5cGUpOworICBFWFBFQ1RfVFJVRSgKKyAg
ICAgIFNkcERlc2VyaWFsaXplKHNkcF93aXRob3V0X2V4dG1hcF9hbGxvd19taXhlZCwgJmpkZXNj
X2Rlc2VyaWFsaXplZCkpOworICAvLyBWZXJpZnkKKyAgRVhQRUNUX1RSVUUoQ29tcGFyZVNlc3Np
b25EZXNjcmlwdGlvbihqZGVzY18sIGpkZXNjX2Rlc2VyaWFsaXplZCkpOworfQorCitURVNUX0Yo
V2ViUnRjU2RwVGVzdCwgRGVzZXJpYWxpemVNZWRpYUNvbnRlbnREZXNjcmlwdGlvbldpdGhFeHRt
YXBBbGxvd01peGVkKSB7CisgIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uKiB2aWRl
b19kZXNjID0KKyAgICAgIGpkZXNjXy5kZXNjcmlwdGlvbigpLT5HZXRDb250ZW50RGVzY3JpcHRp
b25CeU5hbWUoa1ZpZGVvQ29udGVudE5hbWUpOworICBBU1NFUlRfVFJVRSh2aWRlb19kZXNjKTsK
KyAgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qIGF1ZGlvX2Rlc2MgPQorICAgICAg
amRlc2NfLmRlc2NyaXB0aW9uKCktPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZShrQXVkaW9D
b250ZW50TmFtZSk7CisgIEFTU0VSVF9UUlVFKGF1ZGlvX2Rlc2MpOworICB2aWRlb19kZXNjLT5z
ZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oCisgICAgICBjcmlja2V0OjpNZWRpYUNvbnRlbnRE
ZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgYXVkaW9fZGVzYy0+c2V0X2V4dG1hcF9hbGxvd19taXhl
ZF9lbnVtKAorICAgICAgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7
CisKKyAgc3RkOjpzdHJpbmcgc2RwX3dpdGhfZXh0bWFwX2FsbG93X21peGVkID0ga1NkcEZ1bGxT
dHJpbmc7CisgIEluamVjdEFmdGVyKCJhPW1pZDphdWRpb19jb250ZW50X25hbWVcclxuIiwga0V4
dG1hcEFsbG93TWl4ZWQsCisgICAgICAgICAgICAgICZzZHBfd2l0aF9leHRtYXBfYWxsb3dfbWl4
ZWQpOworICBJbmplY3RBZnRlcigiYT1taWQ6dmlkZW9fY29udGVudF9uYW1lXHJcbiIsIGtFeHRt
YXBBbGxvd01peGVkLAorICAgICAgICAgICAgICAmc2RwX3dpdGhfZXh0bWFwX2FsbG93X21peGVk
KTsKKworICAvLyBEZXNlcmlhbGl6ZQorICBKc2VwU2Vzc2lvbkRlc2NyaXB0aW9uIGpkZXNjX2Rl
c2VyaWFsaXplZChrRHVtbXlUeXBlKTsKKyAgRVhQRUNUX1RSVUUoU2RwRGVzZXJpYWxpemUoc2Rw
X3dpdGhfZXh0bWFwX2FsbG93X21peGVkLCAmamRlc2NfZGVzZXJpYWxpemVkKSk7CisgIC8vIFZl
cmlmeQorICBFWFBFQ1RfVFJVRShDb21wYXJlU2Vzc2lvbkRlc2NyaXB0aW9uKGpkZXNjXywgamRl
c2NfZGVzZXJpYWxpemVkKSk7Cit9CisKIFRFU1RfRihXZWJSdGNTZHBUZXN0LCBEZXNlcmlhbGl6
ZUNhbmRpZGF0ZSkgewogICBKc2VwSWNlQ2FuZGlkYXRlIGpjYW5kaWRhdGUoa0R1bW15TWlkLCBr
RHVtbXlJbmRleCk7CiAKQEAgLTMzNjIsMTIgKzM0NTQsMTYgQEAgVEVTVF9GKFdlYlJ0Y1NkcFRl
c3QsIFNlcmlhbGl6ZVVuaWZpZWRQbGFuU2Vzc2lvbkRlc2NyaXB0aW9uKSB7CiB9CiAKIC8vIFRo
aXMgdGVzdHMgZGVzZXJpYWxpemluZyBhIFVuaWZpZWQgUGxhbiBTRFAgdGhhdCBpcyBjb21wYXRp
YmxlIHdpdGggYm90aAotLy8gVW5pZmllZCBQbGFuIGFuZCBQbGFuIEIgc3R5bGUgU0RQLiBJdCB0
ZXN0cyB0aGUgY2FzZSBmb3IgYXVkaW8vdmlkZW8gdHJhY2tzCisvLyBVbmlmaWVkIFBsYW4gYW5k
IFBsYW4gQiBzdHlsZSBTRFAsIG1lYW5pbmcgdGhhdCBpdCBjb250YWlucyBib3RoICJhPXNzcmMK
Ky8vIG1zaWQiIGxpbmVzIGFuZCAiYT1tc2lkICIgbGluZXMuIEl0IHRlc3RzIHRoZSBjYXNlIGZv
ciBhdWRpby92aWRlbyB0cmFja3MKIC8vIHdpdGggbm8gc3RyZWFtIGlkcyBhbmQgbXVsdGlwbGUg
c3RyZWFtIGlkcy4gRm9yIHBhcnNpbmcgdGhpcywgdGhlIFVuaWZpZWQKIC8vIFBsYW4gYT1tc2lk
IGxpbmVzIHNob3VsZCB0YWtlIHByaW9yaXR5LCBiZWNhdXNlIHRoZSBQbGFuIEIgc3R5bGUgYT1z
c3JjIG1zaWQKIC8vIGxpbmVzIGRvIG5vdCBzdXBwb3J0IG11bHRpcGxlIHN0cmVhbSBpZHMgYW5k
IG5vIHN0cmVhbSBpZHMuCi1URVNUX0YoV2ViUnRjU2RwVGVzdCwgRGVzZXJpYWxpemVVbmlmaWVk
UGxhblNlc3Npb25EZXNjcmlwdGlvblNwZWNpYWxNc2lkKSB7Ci0gIE1ha2VVbmlmaWVkUGxhbkRl
c2NyaXB0aW9uTXVsdGlwbGVTdHJlYW1JZHMoKTsKK1RFU1RfRihXZWJSdGNTZHBUZXN0LCBEZXNl
cmlhbGl6ZVNlc3Npb25EZXNjcmlwdGlvblNwZWNpYWxNc2lkKSB7CisgIC8vIENyZWF0ZSBib3Ro
IG1zaWQgbGluZXMgZm9yIFBsYW4gQiBhbmQgVW5pZmllZCBQbGFuIHN1cHBvcnQuCisgIE1ha2VV
bmlmaWVkUGxhbkRlc2NyaXB0aW9uTXVsdGlwbGVTdHJlYW1JZHMoCisgICAgICBjcmlja2V0Ojpr
TXNpZFNpZ25hbGluZ01lZGlhU2VjdGlvbiB8CisgICAgICBjcmlja2V0OjprTXNpZFNpZ25hbGlu
Z1NzcmNBdHRyaWJ1dGUpOwogCiAgIEpzZXBTZXNzaW9uRGVzY3JpcHRpb24gZGVzZXJpYWxpemVk
X2Rlc2NyaXB0aW9uKGtEdW1teVR5cGUpOwogICBFWFBFQ1RfVFJVRShTZHBEZXNlcmlhbGl6ZShr
VW5pZmllZFBsYW5TZHBGdWxsU3RyaW5nV2l0aFNwZWNpYWxNc2lkLApAQCAtMzM3Niw4ICszNDcy
LDUwIEBAIFRFU1RfRihXZWJSdGNTZHBUZXN0LCBEZXNlcmlhbGl6ZVVuaWZpZWRQbGFuU2Vzc2lv
bkRlc2NyaXB0aW9uU3BlY2lhbE1zaWQpIHsKICAgRVhQRUNUX1RSVUUoQ29tcGFyZVNlc3Npb25E
ZXNjcmlwdGlvbihqZGVzY18sIGRlc2VyaWFsaXplZF9kZXNjcmlwdGlvbikpOwogfQogCi1URVNU
X0YoV2ViUnRjU2RwVGVzdCwgU2VyaWFsaXplVW5pZmllZFBsYW5TZXNzaW9uRGVzY3JpcHRpb25T
cGVjaWFsTXNpZCkgewotICBNYWtlVW5pZmllZFBsYW5EZXNjcmlwdGlvbk11bHRpcGxlU3RyZWFt
SWRzKCk7CisvLyBUZXN0cyB0aGUgc2VyaWFsaXphdGlvbiBvZiBhIFVuaWZpZWQgUGxhbiBTRFAg
dGhhdCBpcyBjb21wYXRpYmxlIGZvciBib3RoCisvLyBVbmlmaWVkIFBsYW4gYW5kIFBsYW4gQiBz
dHlsZSBTRFBzLCBtZWFuaW5nIHRoYXQgaXQgY29udGFpbnMgYm90aCAiYT1zc3JjCisvLyBtc2lk
IiBsaW5lcyBhbmQgImE9bXNpZCAiIGxpbmVzLiBJdCB0ZXN0cyB0aGUgY2FzZSBmb3Igbm8gc3Ry
ZWFtIGlkcyBhbmQKKy8vIG11bHRpcGxlIHN0cmVhbSBpZHMuCitURVNUX0YoV2ViUnRjU2RwVGVz
dCwgU2VyaWFsaXplU2Vzc2lvbkRlc2NyaXB0aW9uU3BlY2lhbE1zaWQpIHsKKyAgLy8gQ3JlYXRl
IGJvdGggbXNpZCBsaW5lcyBmb3IgUGxhbiBCIGFuZCBVbmlmaWVkIFBsYW4gc3VwcG9ydC4KKyAg
TWFrZVVuaWZpZWRQbGFuRGVzY3JpcHRpb25NdWx0aXBsZVN0cmVhbUlkcygKKyAgICAgIGNyaWNr
ZXQ6OmtNc2lkU2lnbmFsaW5nTWVkaWFTZWN0aW9uIHwKKyAgICAgIGNyaWNrZXQ6OmtNc2lkU2ln
bmFsaW5nU3NyY0F0dHJpYnV0ZSk7CisgIHN0ZDo6c3RyaW5nIHNlcmlhbGl6ZWRfc2RwID0gd2Vi
cnRjOjpTZHBTZXJpYWxpemUoamRlc2NfKTsKKyAgLy8gV2UgZXhwbGljaXRseSB0ZXN0IHRoYXQg
dGhlIHNlcmlhbGl6ZWQgU0RQIHN0cmluZyBpcyBlcXVhbCB0byB0aGUgaGFyZAorICAvLyBjb2Rl
ZCBTRFAgc3RyaW5nLiBUaGlzIGlzIG5lY2Vzc2FyeSwgYmVjYXVzZSBpbiB0aGUgcGFyc2VyICJh
PW1zaWQiIGxpbmVzCisgIC8vIHRha2UgcHJpb3JpdHkgb3ZlciAiYT1zc3JjIG1zaWQiIGxpbmVz
LiBUaGlzIG1lYW5zIGlmIHdlIGp1c3QgdXNlZAorICAvLyBUZXN0U2VyaWFsaXplKCksIGl0IGNv
dWxkIHNlcmlhbGl6ZSBhbiBTRFAgdGhhdCBvbWl0cyAiYT1zc3JjIG1zaWQiIGxpbmVzLAorICAv
LyBhbmQgc3RpbGwgcGFzcywgYmVjYXVzZSB0aGUgZGVzZXJpYWxpemVkIHZlcnNpb24gd291bGQg
YmUgdGhlIHNhbWUuCisgIEVYUEVDVF9FUShrVW5pZmllZFBsYW5TZHBGdWxsU3RyaW5nV2l0aFNw
ZWNpYWxNc2lkLCBzZXJpYWxpemVkX3NkcCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBVbmlmaWVk
IFBsYW4gc3R5bGUgU0RQIChkb2VzIG5vdCBjb250YWluICJhPXNzcmMgbXNpZCIgbGluZXMKKy8v
IHRoYXQgc2lnbmFsIHN0cmVhbSBJRHMpIGlzIGRlc2VyaWFsaXplZCBhcHByb3ByaWF0ZWx5LiBJ
dCB0ZXN0cyB0aGUgY2FzZSBmb3IKKy8vIG5vIHN0cmVhbSBpZHMgYW5kIG11bHRpcGxlIHN0cmVh
bSBpZHMuCitURVNUX0YoV2ViUnRjU2RwVGVzdCwgVW5pZmllZFBsYW5EZXNlcmlhbGl6ZVNlc3Np
b25EZXNjcmlwdGlvblNwZWNpYWxNc2lkKSB7CisgIC8vIE9ubHkgY3JlYXRlIGE9bXNpZCBsaW5l
cyBmb3Igc3RyaWN0bHkgVW5pZmllZCBQbGFuIHN0cmVhbSBJRCBzdXBwb3J0LgorICBNYWtlVW5p
ZmllZFBsYW5EZXNjcmlwdGlvbk11bHRpcGxlU3RyZWFtSWRzKAorICAgICAgY3JpY2tldDo6a01z
aWRTaWduYWxpbmdNZWRpYVNlY3Rpb24pOworCisgIEpzZXBTZXNzaW9uRGVzY3JpcHRpb24gZGVz
ZXJpYWxpemVkX2Rlc2NyaXB0aW9uKGtEdW1teVR5cGUpOworICBzdGQ6OnN0cmluZyB1bmlmaWVk
X3BsYW5fc2RwX3N0cmluZyA9CisgICAgICBrVW5pZmllZFBsYW5TZHBGdWxsU3RyaW5nV2l0aFNw
ZWNpYWxNc2lkOworICBSZW1vdmVTc3JjTXNpZExpbmVzRnJvbVNkcFN0cmluZygmdW5pZmllZF9w
bGFuX3NkcF9zdHJpbmcpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIFNkcERlc2VyaWFsaXplKHVu
aWZpZWRfcGxhbl9zZHBfc3RyaW5nLCAmZGVzZXJpYWxpemVkX2Rlc2NyaXB0aW9uKSk7CisKKyAg
RVhQRUNUX1RSVUUoQ29tcGFyZVNlc3Npb25EZXNjcmlwdGlvbihqZGVzY18sIGRlc2VyaWFsaXpl
ZF9kZXNjcmlwdGlvbikpOworfQorCisvLyBUZXN0cyB0aGF0IGEgVW5pZmllZCBQbGFuIHN0eWxl
IFNEUCAoZG9lcyBub3QgY29udGFpbiAiYT1zc3JjIG1zaWQiIGxpbmVzCisvLyB0aGF0IHNpZ25h
bCBzdHJlYW0gSURzKSBpcyBzZXJpYWxpemVkIGFwcHJvcHJpYXRlbHkuIEl0IHRlc3RzIHRoZSBj
YXNlIGZvciBubworLy8gc3RyZWFtIGlkcyBhbmQgbXVsdGlwbGUgc3RyZWFtIGlkcy4KK1RFU1Rf
RihXZWJSdGNTZHBUZXN0LCBVbmlmaWVkUGxhblNlcmlhbGl6ZVNlc3Npb25EZXNjcmlwdGlvblNw
ZWNpYWxNc2lkKSB7CisgIC8vIE9ubHkgY3JlYXRlIGE9bXNpZCBsaW5lcyBmb3Igc3RyaWN0bHkg
VW5pZmllZCBQbGFuIHN0cmVhbSBJRCBzdXBwb3J0LgorICBNYWtlVW5pZmllZFBsYW5EZXNjcmlw
dGlvbk11bHRpcGxlU3RyZWFtSWRzKAorICAgICAgY3JpY2tldDo6a01zaWRTaWduYWxpbmdNZWRp
YVNlY3Rpb24pOworCiAgIFRlc3RTZXJpYWxpemUoamRlc2NfKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2Vzc2lv
bmRlc2NyaXB0aW9uZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3dlYnJ0Y3Nlc3Npb25kZXNjcmlwdGlvbmZhY3RvcnkuY2MKaW5kZXggODA4
ZTQxMWEzOTk4NTg1MmI5NjMzMTc2NjZiYzg4MWI0OGQ3YThjNS4uMDdiOGUxNDdjYzgyNzc0MDdl
MjYxNDY1ODVlYTYwYTcwYzQwYTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2Vzc2lvbmRlc2NyaXB0aW9uZmFjdG9yeS5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJy
dGNzZXNzaW9uZGVzY3JpcHRpb25mYWN0b3J5LmNjCkBAIC0xMTYsNyArMTE2LDYgQEAgdm9pZCBX
ZWJSdGNTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDb3B5Q2FuZGlkYXRlc0Zyb21TZXNzaW9u
RGVzY3JpcHRpb24oCiAgIH0KIH0KIAotLy8gUHJpdmF0ZSBjb25zdHJ1Y3RvciBjYWxsZWQgYnkg
b3RoZXIgY29uc3RydWN0b3JzLgogV2ViUnRjU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6V2Vi
UnRjU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeSgKICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5n
X3RocmVhZCwKICAgICBjcmlja2V0OjpDaGFubmVsTWFuYWdlciogY2hhbm5lbF9tYW5hZ2VyLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVz
b3VyY2VzL2F1ZGlvX2NvZGluZy9GMDBfdGxtMTAuT1VUMjAuc2hhMSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAwX3Rs
bTEwLk9VVDIwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYjhlNTJjYjI1
ZGYzMTRhZjk2MGIxMDQyOTgwMTQ0NTI1NjA5ZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDBfdGxtMTAuT1VUMjAuc2hhMQorKysgL2Rl
di9udWxsCkBAIC0xICswLDAgQEAKLTk2ZmI1MzI3ZmY3YTFmZTg3YmQ0NTEyNzczY2U3MzQ3YjRk
NzI4ODgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0Yw
MF90bG0xMC5PVVQzMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDBfdGxtMTAuT1VUMzAuc2hhMQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ3MDAxM2I3MmFmMGRlZmY1ODc0MmYyY2I5ZjdlNTkz
ZThkMGVhYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9f
Y29kaW5nL0YwMF90bG0xMC5PVVQzMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
ZWE1MjdlOGU2MTI0MWVhNzMyNjVhYmJhNTc2NTc5MzUxMWM0MjI5MQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAxX3RsbTEwLk9VVDIwLnNoYTEgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9f
Y29kaW5nL0YwMV90bG0xMC5PVVQyMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkMzNlYjdlMWM3NDc1Yjg1NGQ4MzFjYjRjYmI4MmRiYmMwZTIzYTE1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAxX3RsbTEwLk9VVDIw
LnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1hNWU4YzI2ODkzNmQ3YzhkMDNlZGQ3
MDhjNjc1MjU0NDc0YWVkOTQ0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1
ZGlvX2NvZGluZy9GMDFfdGxtMTAuT1VUMzAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAxX3RsbTEwLk9VVDMw
LnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MzY1NmZlMDFjMGIzMzgzZGEz
NjhmMDU0ZmFmM2QzMjkwZWYwNTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVz
b3VyY2VzL2F1ZGlvX2NvZGluZy9GMDFfdGxtMTAuT1VUMzAuc2hhMQorKysgL2Rldi9udWxsCkBA
IC0xICswLDAgQEAKLTk4OTM1MDRiZGFhNTYwYTRkZGI2N2E5OWU2NzAxZThkNDI0NDg5NmEKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwMl90bG0xMC5P
VVQyMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVz
b3VyY2VzL2F1ZGlvX2NvZGluZy9GMDJfdGxtMTAuT1VUMjAuc2hhMQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjhhNTI1MzRiM2FlODE2MGMzYzA3MjQyODkzODU2ZDllZGMxOWEyOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0Yw
Ml90bG0xMC5PVVQyMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotNWUwMDUzYTBk
ZTdiNDcwODQwMmZjYzBhMWI1YWUwMjQ4MTU5MzhhMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAyX3RsbTEwLk9VVDMwLnNoYTEgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0Yw
Ml90bG0xMC5PVVQzMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2JiYzk4
NjZkMTU2ODdjNzI2OGQ3NTRjZmVhODFiY2U2NmVhNzk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAyX3RsbTEwLk9VVDMwLnNoYTEKKysr
IC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1kNTc5ODZkM2RjNjVjMWNhZGM0MTQxOWE3N2VkMTQ3
MmI3MzA1MGI0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGlu
Zy9GMDQuQklUMjAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA0LkJJVDIwLnNoYTEKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGEzMDRmYTQxODExYTg5ZGUwOGMxNWUxYWYxODIzN2MxNTJkZDY1NTIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9G
MDQuQklUMjAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLThjYzFmODJlZTBkMWI3
ZGYzOTg0MDg5NWQzZTk5NzU2OTIwYjg1YWQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNv
dXJjZXMvYXVkaW9fY29kaW5nL0YwNC5CSVQzMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDQuQklUMzAuc2hh
MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZjYmUxM2FmYjRiODdhMTFmZjk2N2Ex
YTUwMTQ2NWI0OGM3YTljMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJj
ZXMvYXVkaW9fY29kaW5nL0YwNC5CSVQzMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBA
QAotODVjYTNkOWE1Y2E2MWMxYmI5ZDc5OGJhNmQzNTUxOTQ1YWI3NjY3ZApcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA0LklOUC5zaGExIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGlu
Zy9GMDQuSU5QLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMTE4ZmNiMzVj
MWQ2MmYxZTY0MjJhMDA0ZGVlOGYxNzg2MDM3ZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDQuSU5QLnNoYTEKKysrIC9kZXYvbnVsbApA
QCAtMSArMCwwIEBACi03MzA1ODEwMzVkNWFmODMyZDFiMDVjOGYzYTYyM2VjOTM4NjNiM2UzClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDQuT1VUMjAu
c2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNl
cy9hdWRpb19jb2RpbmcvRjA0Lk9VVDIwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGZkMjdmMDQxZTA5ZWFhMzFhOTRhNDBjNTg5YzgzZWQ1Y2VmMmMzOTAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDQuT1VUMjAuc2hh
MQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTk4NWU1ZmZhMGI5ODcxOGFmYWRmYjFmMDJi
NTU5NWZiMjRhOTQ3NmMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9f
Y29kaW5nL0YwNC5PVVQzMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDQuT1VUMzAuc2hhMQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2NjZWM0ZWZmZWZiN2ZlZWYwNDM5ZGUyYTc2YzA5ZmQwY2My
YjY4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29k
aW5nL0YwNC5PVVQzMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotOGIwMzVmYjBm
OWNlM2JkYzJhZTZjOTgzZTIzMmMyNTdhNTE1YTc4MQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1LkJJVDIwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5CSVQy
MC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWQ4MmU2ZjUyMWE3MmUwYjkz
MzQ1YzI5MDMzZWZkYjZlYzQxOWJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jl
c291cmNlcy9hdWRpb19jb2RpbmcvRjA1LkJJVDIwLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSAr
MCwwIEBACi05MDY5ZmVjYzNjZDEzYmY5MDE3ODFhZjRlY2U4YjM3NGI1Mjg1OTg0ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDUuQklUMzAuc2hhMSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRp
b19jb2RpbmcvRjA1LkJJVDMwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUx
M2M5MzYyYTg5MTE5ZGIyYzYyZmYyMWU0ZjhlZWZjMTkzNDc3YTQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDUuQklUMzAuc2hhMQorKysg
L2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTQ0YTA0ZTEzM2MxNWUwMTNmNmI0NDI0ODc3NTI4YTQ0
NDVlMjhiZWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5n
L0YwNS5JTlAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1LklOUC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwZWUwYTM5ZjNjYTQxMmQwZjA2ODM2ODEyODU5YThmNjU3NTliN2FkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1LklO
UC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotYzNkZGUxMGMzMmYxMmRhNTgxODFl
Y2FjY2I3YWVhYTUxNTIzOTIzMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9h
dWRpb19jb2RpbmcvRjA1Lk9VVDIwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5PVVQyMC5zaGExCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjUxNDUyNjUyMWEwNTg5YTRhNGNiNjg2NzRmZWVl
ZDhjYmMyNjg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRp
b19jb2RpbmcvRjA1Lk9VVDIwLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0yNjBm
NTFmODMyMGQ5MmQzYzhiODM0YzFmMzg4NzliYWExMmE3YTVhClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDUuT1VUMzAuc2hhMSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1
Lk9VVDMwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYzMxOGM5NmY0OThi
MjM1ODFhN2ZiMzM0OWJjNWYwZDlkNTFkNTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDUuT1VUMzAuc2hhMQorKysgL2Rldi9udWxsCkBA
IC0xICswLDAgQEAKLTcyYWJiNGMxZDg0YTRjZmYxZWZlZDRkM2UwMTI4MGQ4MzlhOWY2OTEKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNi5CSVQyMC5z
aGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2Vz
L2F1ZGlvX2NvZGluZy9GMDYuQklUMjAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNmI2ZTNkZmI2ODQ1YjUxMDE0MzQ3ODc4NTEzYWQwYWMzNDgwZWI0Mi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNi5CSVQyMC5zaGEx
CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotYjY1MzAyNDdhY2RmZDdhZTdiM2ZkODBjNjc3
ZDcxMDQ1MzUxYWQwNwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19j
b2RpbmcvRjA2LkJJVDMwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNi5CSVQzMC5zaGExCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmOWY3OTc1NzMwZTVjMWQ4NDk1Y2Y4OTg3MThiNDJkODI2ZGYw
YjUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2Rp
bmcvRjA2LkJJVDMwLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0wMzE4ZGU0ZGM0
ODQyMmJmZTEyNWZkNmY4MjdlNmU3MTE0ZGM2MWJjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuSU5QLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNi5JTlAuc2hh
MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIxMDIwOTY1MmM3NmQ3ZDRiN2U1YTI5
MDM5ZTc1N2Y3ZDE2ZTVjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJj
ZXMvYXVkaW9fY29kaW5nL0YwNi5JTlAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAK
LTgwMzU5Y2ZmNzJjYmRjMDRhMzM3YTUxYzJmY2MwYzc0ODkwNzEwYjQKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNi5PVVQyMC5zaGExIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGlu
Zy9GMDYuT1VUMjAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q1MGRmODI1
OGQzMzRkMGYyZTQ5NDQ3ZmRkMGNjZTJlM2IyNjI1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNi5PVVQyMC5zaGExCisrKyAvZGV2L251
bGwKQEAgLTEgKzAsMCBAQAotYzdiYzcxYWJjOTczNDQwMTIzYTUxN2Y2MWUzZGJjYjk2MDg5ZWUz
ZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA2Lk9V
VDMwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNv
dXJjZXMvYXVkaW9fY29kaW5nL0YwNi5PVVQzMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhZDkyMTlkZDBhZDA3ZjdiMjI0MDU3NjI2NTM4Y2Y4YzhiYTIyNmQ3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA2Lk9VVDMw
LnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi01ZmRlMmRlZmQyMzUwYjVjYTdkM2I4
ZjhjZWVmNzVkMmI3ZmQ3ZjAzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1
ZGlvX2NvZGluZy90bG0xMC5jaG4uc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvdGxtMTAuY2huLnNoYTEKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwMWY0NDg3YmM2MzY1NzhiOTRkOWZlNjVlZTc0Nzk0
ZGE1NTdmMDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlv
X2NvZGluZy90bG0xMC5jaG4uc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTIxYzc4
NTE2YzI0NzA2NjdhNzVjN2VkODVmZTM3YzUzYTM1MTQ0NTYKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL0JVSUxELmduCmluZGV4IGU5ZWZiZDEzNjBmMTI0YjI5NzExMDRk
MzY4MDkwZmYxMjEzNGQ0M2EuLjc1YzQzOTdhYjdkNDhhZmMxNzc1YWRhZWIzNjJmNDgyNzIyNDA0
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL0JVSUxELmduCkBAIC02Nyw5ICs2NywxMDIgQEAgcnRjX3NvdXJj
ZV9zZXQoImNvbXBpbGVfYXNzZXJ0X2MiKSB7CiAgIF0KIH0KIAorIyBUaGUgc3Vic2V0IG9mIHJ0
Y19iYXNlIGFwcHJvdmVkIGZvciB1c2Ugb3V0c2lkZSBvZiBsaWJqaW5nbGUuCisjIFRPRE8oYnVn
cy53ZWJydGMub3JnLzk4MzgpOiBDcmVhdGUgc21hbGwgYW5kIGZvY3VzZWQgYnVpbGQgdGFyZ2V0
cyBhbmQgcmVtb3ZlCisjIHRoZSBvbGQgY29uY2VwdCBvZiBydGNfYmFzZSBhbmQgcnRjX2Jhc2Vf
YXBwcm92ZWQuCiBydGNfc291cmNlX3NldCgicnRjX2Jhc2VfYXBwcm92ZWQiKSB7CiAgIHZpc2li
aWxpdHkgPSBbICIqIiBdCi0gIHB1YmxpY19kZXBzID0gWworICBkZXBzID0gWworICAgICI6Y2hl
Y2tzIiwKKyAgICAiOnJ0Y190YXNrX3F1ZXVlIiwKKyAgICAiOnNhZmVfY29tcGFyZSIsCisgICAg
IjpzYWZlX21pbm1heCIsCisgICAgIjp0eXBlX3RyYWl0cyIsCisgICAgIi4uL2FwaTphcnJheV92
aWV3IiwKKyAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAiZXhwZXJp
bWVudHM6ZmllbGRfdHJpYWxfcGFyc2VyIiwKKyAgICAic3lzdGVtOmFyY2giLAorICAgICJzeXN0
ZW06dW51c2VkIiwKKyAgICAidGhpcmRfcGFydHkvYmFzZTY0IiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5Om1lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgXQorCisgIHNvdXJjZXMgPSBbCisgICAg
ImJpbmQuaCIsCisgICAgImJpdGJ1ZmZlci5jYyIsCisgICAgImJpdGJ1ZmZlci5oIiwKKyAgICAi
Yml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5jYyIsCisgICAgImJpdHJhdGVhbGxvY2F0aW9uc3Ry
YXRlZ3kuaCIsCisgICAgImJ1ZmZlci5oIiwKKyAgICAiYnVmZmVycXVldWUuY2MiLAorICAgICJi
dWZmZXJxdWV1ZS5oIiwKKyAgICAiYnl0ZWJ1ZmZlci5jYyIsCisgICAgImJ5dGVidWZmZXIuaCIs
CisgICAgImJ5dGVvcmRlci5oIiwKKyAgICAiY29weW9ud3JpdGVidWZmZXIuY2MiLAorICAgICJj
b3B5b253cml0ZWJ1ZmZlci5oIiwKKyAgICAiZXZlbnRfdHJhY2VyLmNjIiwKKyAgICAiZXZlbnRf
dHJhY2VyLmgiLAorICAgICJmaWxlLmNjIiwKKyAgICAiZmlsZS5oIiwKKyAgICAiZmxhZ3MuY2Mi
LAorICAgICJmbGFncy5oIiwKKyAgICAiZnVuY3Rpb25fdmlldy5oIiwKKyAgICAiaWdub3JlX3d1
bmRlZi5oIiwKKyAgICAibG9jYXRpb24uY2MiLAorICAgICJsb2NhdGlvbi5oIiwKKyAgICAibWVz
c2FnZV9idWZmZXJfcmVhZGVyLmgiLAorICAgICJudW1lcmljcy9oaXN0b2dyYW1fcGVyY2VudGls
ZV9jb3VudGVyLmNjIiwKKyAgICAibnVtZXJpY3MvaGlzdG9ncmFtX3BlcmNlbnRpbGVfY291bnRl
ci5oIiwKKyAgICAibnVtZXJpY3MvbW9kX29wcy5oIiwKKyAgICAibnVtZXJpY3MvbW92aW5nX21h
eF9jb3VudGVyLmgiLAorICAgICJudW1lcmljcy9zYW1wbGVfY291bnRlci5jYyIsCisgICAgIm51
bWVyaWNzL3NhbXBsZV9jb3VudGVyLmgiLAorICAgICJvbmV0aW1lZXZlbnQuaCIsCisgICAgInBs
YXRmb3JtX2ZpbGUuY2MiLAorICAgICJwbGF0Zm9ybV9maWxlLmgiLAorICAgICJyYWNlX2NoZWNr
ZXIuY2MiLAorICAgICJyYWNlX2NoZWNrZXIuaCIsCisgICAgInJhbmRvbS5jYyIsCisgICAgInJh
bmRvbS5oIiwKKyAgICAicmF0ZV9zdGF0aXN0aWNzLmNjIiwKKyAgICAicmF0ZV9zdGF0aXN0aWNz
LmgiLAorICAgICJyYXRldHJhY2tlci5jYyIsCisgICAgInJhdGV0cmFja2VyLmgiLAorICAgICJz
d2FwX3F1ZXVlLmgiLAorICAgICJ0ZW1wbGF0ZV91dGlsLmgiLAorICAgICJ0aW1lc3RhbXBhbGln
bmVyLmNjIiwKKyAgICAidGltZXN0YW1wYWxpZ25lci5oIiwKKyAgICAidHJhY2VfZXZlbnQuaCIs
CisgICAgInplcm9fbWVtb3J5LmNjIiwKKyAgICAiemVyb19tZW1vcnkuaCIsCisgIF0KKworICBp
ZiAoaXNfcG9zaXggfHwgaXNfZnVjaHNpYSkgeworICAgIHNvdXJjZXMgKz0gWyAiZmlsZV9wb3Np
eC5jYyIgXQorICB9CisKKyAgaWYgKGlzX3dpbikgeworICAgIHNvdXJjZXMgKz0gWworICAgICAg
ImZpbGVfd2luLmNjIiwKKyAgICAgICJ3aW4vd2luZG93c192ZXJzaW9uLmNjIiwKKyAgICAgICJ3
aW4vd2luZG93c192ZXJzaW9uLmgiLAorICAgIF0KKyAgICBkYXRhX2RlcHMgPSBbCisgICAgICAi
Ly9idWlsZC93aW46cnVudGltZV9saWJzIiwKKyAgICBdCisgIH0KKworICBpZiAoaXNfbmFjbCkg
eworICAgIGRlcHMgKz0gWyAiLy9uYXRpdmVfY2xpZW50X3Nkay9zcmMvbGlicmFyaWVzL25hY2xf
aW8iIF0KKyAgfQorCisgIGlmIChpc19hbmRyb2lkKSB7CisgICAgbGlicyA9IFsgImxvZyIgXQor
ICB9CisKKyAgcHVibGljX2RlcHMgPSBbICAjIG5vLXByZXN1Ym1pdC1jaGVjayBUT0RPKHdlYnJ0
Yzo4NjAzKQogICAgICI6YXRvbWljb3BzIiwKICAgICAiOmNyaXRpY2Fsc2VjdGlvbiIsCiAgICAg
Ijpsb2dnaW5nIiwKQEAgLTc4LDE2ICsxNzEsMTIgQEAgcnRjX3NvdXJjZV9zZXQoInJ0Y19iYXNl
X2FwcHJvdmVkIikgewogICAgICI6cGxhdGZvcm1fdGhyZWFkX3R5cGVzIiwKICAgICAiOnB0cl91
dGlsIiwKICAgICAiOnJlZmNvdW50IiwKLSAgICAiOnJ0Y19iYXNlX2FwcHJvdmVkX2dlbmVyaWMi
LAogICAgICI6cnRjX2V2ZW50IiwKICAgICAiOnNhZmVfY29udmVyc2lvbnMiLAogICAgICI6c3Ry
aW5ndXRpbHMiLAogICAgICI6dGhyZWFkX2NoZWNrZXIiLAogICAgICI6dGltZXV0aWxzIiwKICAg
XQotICBpZiAoaXNfbWFjICYmICFidWlsZF93aXRoX2Nocm9taXVtKSB7Ci0gICAgcHVibGljX2Rl
cHMgKz0gWyAiOnJ0Y19iYXNlX2FwcHJvdmVkX29iamMiIF0KLSAgfQogfQogCiBydGNfc291cmNl
X3NldCgibWFjcm9tYWdpYyIpIHsKQEAgLTExNyw2ICsyMDYsOSBAQCBydGNfc291cmNlX3NldCgi
cHRyX3V0aWwiKSB7CiAgIHNvdXJjZXMgPSBbCiAgICAgInNjb3BlZF9yZWZfcHRyLmgiLAogICBd
CisgIGRlcHMgPSBbCisgICAgIi4uL2FwaTpzY29wZWRfcmVmcHRyIiwKKyAgXQogfQogCiBydGNf
c291cmNlX3NldCgicmVmY291bnQiKSB7CkBAIC0xNDksOSArMjQxLDkgQEAgcnRjX3NvdXJjZV9z
ZXQoImNyaXRpY2Fsc2VjdGlvbiIpIHsKIHJ0Y19zb3VyY2Vfc2V0KCJwbGF0Zm9ybV90aHJlYWQi
KSB7CiAgIHZpc2liaWxpdHkgPSBbCiAgICAgIjpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgIjpy
dGNfYmFzZV9hcHByb3ZlZF9nZW5lcmljIiwKICAgICAiOnJ0Y190YXNrX3F1ZXVlX2xpYmV2ZW50
IiwKICAgICAiOnJ0Y190YXNrX3F1ZXVlX3dpbiIsCisgICAgIjpydGNfdGFza19xdWV1ZV9zdGRs
aWIiLAogICAgICI6c2VxdWVuY2VkX3Rhc2tfY2hlY2tlciIsCiAgIF0KICAgc291cmNlcyA9IFsK
QEAgLTE3Miw3ICsyNjQsNiBAQCBydGNfc291cmNlX3NldCgicGxhdGZvcm1fdGhyZWFkIikgewog
cnRjX3NvdXJjZV9zZXQoInJ0Y19ldmVudCIpIHsKICAgZGVwcyA9IFsKICAgICAiOmNoZWNrcyIs
Ci0gICAgIjptYWNyb21hZ2ljIiwKICAgXQogCiAgIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7
CkBAIC0xOTIsNyArMjgzLDkgQEAgcnRjX3NvdXJjZV9zZXQoInJ0Y19ldmVudCIpIHsKIAogcnRj
X3NvdXJjZV9zZXQoImxvZ2dpbmciKSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIGxpYnMg
PSBbXQogICBkZXBzID0gWworICAgICI6Y2hlY2tzIiwKICAgICAiOmNyaXRpY2Fsc2VjdGlvbiIs
CiAgICAgIjptYWNyb21hZ2ljIiwKICAgICAiOnBsYXRmb3JtX3RocmVhZF90eXBlcyIsCkBAIC0y
MTksOSArMzEyLDE3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJsb2dnaW5nIikgewogICAgIF0KICAgICBk
ZXBzICs9IFsgInN5c3RlbTppbmxpbmUiIF0KIAorICAgIGlmIChpc19tYWMpIHsKKyAgICAgIGRl
cHMgKz0gWyAiOmxvZ2dpbmdfbWFjIiBdCisgICAgfQorCiAgICAgIyBsb2dnaW5nLmggbmVlZHMg
dGhlIGRlcHJlY2F0aW9uIGhlYWRlciB3aGlsZSBkb3duc3RyZWFtIHByb2plY3RzIGFyZQogICAg
ICMgcmVtb3ZpbmcgY29kZSB0aGF0IGRlcGVuZHMgb24gbG9nZ2luZyBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWxzLgogICAgIGRlcHMgKz0gWyAiOmRlcHJlY2F0aW9uIiBdCisKKyAgICBpZiAoaXNfYW5k
cm9pZCkgeworICAgICAgbGlicyArPSBbICJsb2ciIF0KKyAgICB9CiAgIH0KIH0KIApAQCAtMjQ4
LDYgKzM0OSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhdG9taWNvcHMiKSB7CiBydGNfc291cmNlX3Nl
dCgiY2hlY2tzIikgewogICAjIFRPRE8oYnVncy53ZWJydGMub3JnLzk2MDcpOiBUaGlzIHNob3Vs
ZCBub3QgYmUgcHVibGljLgogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICBsaWJzID0gW10KICAg
c291cmNlcyA9IFsKICAgICAiY2hlY2tzLmNjIiwKICAgICAiY2hlY2tzLmgiLApAQCAtMjU2LDYg
KzM1OCw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJjaGVja3MiKSB7CiAgICAgIjpzYWZlX2NvbXBhcmUi
LAogICAgICJzeXN0ZW06aW5saW5lIiwKICAgXQorICBpZiAoaXNfYW5kcm9pZCkgeworICAgIGxp
YnMgKz0gWyAibG9nIiBdCisgIH0KIH0KIAogcnRjX3NvdXJjZV9zZXQoInJhdGVfbGltaXRlciIp
IHsKQEAgLTI2Niw2ICszNzEsNyBAQCBydGNfc291cmNlX3NldCgicmF0ZV9saW1pdGVyIikgewog
ICBkZXBzID0gWwogICAgICI6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi9zeXN0ZW1fd3Jh
cHBlcnMiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25h
bCIsCiAgIF0KIH0KIApAQCAtMjczLDYgKzM3OSw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJzYW5pdGl6
ZXIiKSB7CiAgIHNvdXJjZXMgPSBbCiAgICAgInNhbml0aXplci5oIiwKICAgXQorICBkZXBzID0g
WworICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwK
KyAgXQogfQogCiBydGNfc291cmNlX3NldCgic2FmZV9jb21wYXJlIikgewpAQCAtMzYyLDEzNyAr
NDcxLDE0IEBAIHJ0Y19zb3VyY2Vfc2V0KCJkZXByZWNhdGlvbiIpIHsKICAgXQogfQogCi0jIFRo
ZSBzdWJzZXQgb2YgcnRjX2Jhc2UgYXBwcm92ZWQgZm9yIHVzZSBvdXRzaWRlIG9mIGxpYmppbmds
ZS4KLXJ0Y19zb3VyY2Vfc2V0KCJydGNfYmFzZV9hcHByb3ZlZF9nZW5lcmljIikgewotICB2aXNp
YmlsaXR5ID0gWwotICAgICI6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICI6d2Vha19wdHJfdW5p
dHRlc3RzIiwKLSAgXQotCi0gIGNmbGFncyA9IFtdCi0gIGRlZmluZXMgPSBbXQotICBsaWJzID0g
W10KLSAgZGF0YV9kZXBzID0gW10KLSAgZGVwcyA9IFsKLSAgICAiOmF0b21pY29wcyIsCi0gICAg
IjpjaGVja3MiLAotICAgICI6Y3JpdGljYWxzZWN0aW9uIiwKLSAgICAiOmxvZ2dpbmciLAotICAg
ICI6bWFjcm9tYWdpYyIsCi0gICAgIjpwbGF0Zm9ybV90aHJlYWQiLAotICAgICI6cGxhdGZvcm1f
dGhyZWFkX3R5cGVzIiwKLSAgICAiOnB0cl91dGlsIiwKLSAgICAiOnJlZmNvdW50IiwKLSAgICAi
OnJ0Y19ldmVudCIsCi0gICAgIjpydGNfdGFza19xdWV1ZSIsCi0gICAgIjpzYWZlX2NvbXBhcmUi
LAotICAgICI6c2FmZV9jb252ZXJzaW9ucyIsCi0gICAgIjpzdHJpbmd1dGlscyIsCi0gICAgIjp0
aHJlYWRfY2hlY2tlciIsCi0gICAgIjp0aW1ldXRpbHMiLAotICAgICI6dHlwZV90cmFpdHMiLAot
ICAgICJzeXN0ZW06YXJjaCIsCi0gICAgInN5c3RlbTp1bnVzZWQiLAotICAgICJ0aGlyZF9wYXJ0
eS9iYXNlNjQiLAotICBdCi0KLSAgc291cmNlcyA9IFsKLSAgICAiYmluZC5oIiwKLSAgICAiYml0
YnVmZmVyLmNjIiwKLSAgICAiYml0YnVmZmVyLmgiLAotICAgICJiaXRyYXRlYWxsb2NhdGlvbnN0
cmF0ZWd5LmNjIiwKLSAgICAiYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oIiwKLSAgICAiYnVm
ZmVyLmgiLAotICAgICJidWZmZXJxdWV1ZS5jYyIsCi0gICAgImJ1ZmZlcnF1ZXVlLmgiLAotICAg
ICJieXRlYnVmZmVyLmNjIiwKLSAgICAiYnl0ZWJ1ZmZlci5oIiwKLSAgICAiYnl0ZW9yZGVyLmgi
LAotICAgICJjb3B5b253cml0ZWJ1ZmZlci5jYyIsCi0gICAgImNvcHlvbndyaXRlYnVmZmVyLmgi
LAotICAgICJldmVudF90cmFjZXIuY2MiLAotICAgICJldmVudF90cmFjZXIuaCIsCi0gICAgImZp
bGUuY2MiLAotICAgICJmaWxlLmgiLAotICAgICJmbGFncy5jYyIsCi0gICAgImZsYWdzLmgiLAot
ICAgICJmdW5jdGlvbl92aWV3LmgiLAotICAgICJpZ25vcmVfd3VuZGVmLmgiLAotICAgICJsb2Nh
dGlvbi5jYyIsCi0gICAgImxvY2F0aW9uLmgiLAotICAgICJtZXNzYWdlX2J1ZmZlcl9yZWFkZXIu
aCIsCi0gICAgIm51bWVyaWNzL2hpc3RvZ3JhbV9wZXJjZW50aWxlX2NvdW50ZXIuY2MiLAotICAg
ICJudW1lcmljcy9oaXN0b2dyYW1fcGVyY2VudGlsZV9jb3VudGVyLmgiLAotICAgICJudW1lcmlj
cy9tb2Rfb3BzLmgiLAotICAgICJudW1lcmljcy9tb3ZpbmdfbWF4X2NvdW50ZXIuaCIsCi0gICAg
Im51bWVyaWNzL3NhbXBsZV9jb3VudGVyLmNjIiwKLSAgICAibnVtZXJpY3Mvc2FtcGxlX2NvdW50
ZXIuaCIsCi0gICAgIm9uZXRpbWVldmVudC5oIiwKLSAgICAicGF0aHV0aWxzLmNjIiwKLSAgICAi
cGF0aHV0aWxzLmgiLAotICAgICJwbGF0Zm9ybV9maWxlLmNjIiwKLSAgICAicGxhdGZvcm1fZmls
ZS5oIiwKLSAgICAicmFjZV9jaGVja2VyLmNjIiwKLSAgICAicmFjZV9jaGVja2VyLmgiLAotICAg
ICJyYW5kb20uY2MiLAotICAgICJyYW5kb20uaCIsCi0gICAgInJhdGVfc3RhdGlzdGljcy5jYyIs
Ci0gICAgInJhdGVfc3RhdGlzdGljcy5oIiwKLSAgICAicmF0ZXRyYWNrZXIuY2MiLAotICAgICJy
YXRldHJhY2tlci5oIiwKLSAgICAic3dhcF9xdWV1ZS5oIiwKLSAgICAidGVtcGxhdGVfdXRpbC5o
IiwKLSAgICAidGltZXN0YW1wYWxpZ25lci5jYyIsCi0gICAgInRpbWVzdGFtcGFsaWduZXIuaCIs
Ci0gICAgInRyYWNlX2V2ZW50LmgiLAotICAgICJ6ZXJvX21lbW9yeS5jYyIsCi0gICAgInplcm9f
bWVtb3J5LmgiLAotICBdCi0KLSAgZGVwcyArPSBbCi0gICAgIi4uOndlYnJ0Y19jb21tb24iLAot
ICAgICIuLi9hcGk6YXJyYXlfdmlldyIsCi0gICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21lbW9yeTptZW1vcnkiLAotICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
eXBlczpvcHRpb25hbCIsCi0gIF0KLQotICBpZiAoaXNfYW5kcm9pZCkgewotICAgIGxpYnMgKz0g
WyAibG9nIiBdCi0gIH0KLQotICBpZiAoaXNfcG9zaXggfHwgaXNfZnVjaHNpYSkgewotICAgIHNv
dXJjZXMgKz0gWyAiZmlsZV9wb3NpeC5jYyIgXQotICB9Ci0KLSAgaWYgKGlzX3dpbikgewotICAg
IHNvdXJjZXMgKz0gWwotICAgICAgImZpbGVfd2luLmNjIiwKLSAgICAgICJ3aW4vd2luZG93c192
ZXJzaW9uLmNjIiwKLSAgICAgICJ3aW4vd2luZG93c192ZXJzaW9uLmgiLAotICAgIF0KLSAgICBk
YXRhX2RlcHMgKz0gWyAiLy9idWlsZC93aW46cnVudGltZV9saWJzIiBdCi0gIH0KLQotICBpZiAo
aXNfbmFjbCkgewotICAgIGRlcHMgKz0gWyAiLy9uYXRpdmVfY2xpZW50X3Nkay9zcmMvbGlicmFy
aWVzL25hY2xfaW8iIF0KLSAgfQotfQotCiBpZiAoaXNfbWFjICYmICFidWlsZF93aXRoX2Nocm9t
aXVtKSB7Ci0gIGNvbmZpZygicnRjX2Jhc2VfYXBwcm92ZWRfb2JqY19hbGxfZGVwZW5kZW50X2Nv
bmZpZyIpIHsKLSAgICB2aXNpYmlsaXR5ID0gWyAiOnJ0Y19iYXNlX2FwcHJvdmVkX29iamMiIF0K
LSAgICBsaWJzID0gWyAiRm91bmRhdGlvbi5mcmFtZXdvcmsiIF0gICMgbmVlZGVkIGZvciBsb2dn
aW5nX21hYy5tbQotICB9Ci0KLSAgcnRjX3NvdXJjZV9zZXQoInJ0Y19iYXNlX2FwcHJvdmVkX29i
amMiKSB7Ci0gICAgdmlzaWJpbGl0eSA9IFsgIjpydGNfYmFzZV9hcHByb3ZlZCIgXQotICAgIGFs
bF9kZXBlbmRlbnRfY29uZmlncyA9IFsgIjpydGNfYmFzZV9hcHByb3ZlZF9vYmpjX2FsbF9kZXBl
bmRlbnRfY29uZmlnIiBdCisgIHJ0Y19zb3VyY2Vfc2V0KCJsb2dnaW5nX21hYyIpIHsKKyAgICB2
aXNpYmlsaXR5ID0gWyAiOmxvZ2dpbmciIF0KKyAgICBsaWJzID0gWyAiRm91bmRhdGlvbi5mcmFt
ZXdvcmsiIF0KICAgICBzb3VyY2VzID0gWworICAgICAgImxvZ2dpbmdfbWFjLmgiLAogICAgICAg
ImxvZ2dpbmdfbWFjLm1tIiwKICAgICBdCi0gICAgZGVwcyA9IFsKLSAgICAgICI6bG9nZ2luZyIs
Ci0gICAgXQogICB9CiB9CiAKQEAgLTUyOSw2ICs1MTUsNyBAQCBydGNfc291cmNlX3NldCgicnRj
X3Rhc2tfcXVldWVfYXBpIikgewogICBkZXBzID0gWwogICAgICI6bWFjcm9tYWdpYyIsCiAgICAg
IjpwdHJfdXRpbCIsCisgICAgInN5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQogfQpAQCAtNTY1LDcgKzU1Miw5IEBAIGlm
IChydGNfZW5hYmxlX2xpYmV2ZW50KSB7CiAgICAgICAiOmNoZWNrcyIsCiAgICAgICAiOmNyaXRp
Y2Fsc2VjdGlvbiIsCiAgICAgICAiOmxvZ2dpbmciLAorICAgICAgIjptYWNyb21hZ2ljIiwKICAg
ICAgICI6cGxhdGZvcm1fdGhyZWFkIiwKKyAgICAgICI6cGxhdGZvcm1fdGhyZWFkX3R5cGVzIiwK
ICAgICAgICI6cHRyX3V0aWwiLAogICAgICAgIjpyZWZjb3VudCIsCiAgICAgICAiOnJ0Y190YXNr
X3F1ZXVlX2FwaSIsCkBAIC02MTksNiArNjA4LDI2IEBAIGlmIChpc193aW4pIHsKICAgfQogfQog
CitydGNfc291cmNlX3NldCgicnRjX3Rhc2tfcXVldWVfc3RkbGliIikgeworICB2aXNpYmlsaXR5
ID0gWyAiOnJ0Y190YXNrX3F1ZXVlX2ltcGwiIF0KKyAgc291cmNlcyA9IFsKKyAgICAidGFza19x
dWV1ZV9zdGRsaWIuY2MiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjaGVja3MiLAorICAgICI6
Y3JpdGljYWxzZWN0aW9uIiwKKyAgICAiOmxvZ2dpbmciLAorICAgICI6bWFjcm9tYWdpYyIsCisg
ICAgIjpwbGF0Zm9ybV90aHJlYWQiLAorICAgICI6cHRyX3V0aWwiLAorICAgICI6cmVmY291bnQi
LAorICAgICI6cnRjX2V2ZW50IiwKKyAgICAiOnJ0Y190YXNrX3F1ZXVlX2FwaSIsCisgICAgIjpz
YWZlX2NvbnZlcnNpb25zIiwKKyAgICAiOnRpbWV1dGlscyIsCisgIF0KK30KKwogcnRjX3NvdXJj
ZV9zZXQoInJ0Y190YXNrX3F1ZXVlX2ltcGwiKSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAg
IGlmIChydGNfZW5hYmxlX2xpYmV2ZW50KSB7CkBAIC02MzIsOSArNjQxLDE1IEBAIHJ0Y19zb3Vy
Y2Vfc2V0KCJydGNfdGFza19xdWV1ZV9pbXBsIikgewogICAgICAgXQogICAgIH0KICAgICBpZiAo
aXNfd2luKSB7Ci0gICAgICBkZXBzID0gWwotICAgICAgICAiOnJ0Y190YXNrX3F1ZXVlX3dpbiIs
Ci0gICAgICBdCisgICAgICBpZiAoY3VycmVudF9vcyA9PSAid2ludXdwIikgeworICAgICAgICBk
ZXBzID0gWworICAgICAgICAgICI6cnRjX3Rhc2tfcXVldWVfc3RkbGliIiwKKyAgICAgICAgXQor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgZGVwcyA9IFsKKyAgICAgICAgICAiOnJ0Y190YXNrX3F1
ZXVlX3dpbiIsCisgICAgICAgIF0KKyAgICAgIH0KICAgICB9CiAgIH0KIH0KQEAgLTY3MCw2ICs2
ODUsOCBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19udW1lcmljcyIpIHsKICAgc291cmNlcyA9
IFsKICAgICAibnVtZXJpY3MvZXhwX2ZpbHRlci5jYyIsCiAgICAgIm51bWVyaWNzL2V4cF9maWx0
ZXIuaCIsCisgICAgIm51bWVyaWNzL21vdmluZ19hdmVyYWdlLmNjIiwKKyAgICAibnVtZXJpY3Mv
bW92aW5nX2F2ZXJhZ2UuaCIsCiAgICAgIm51bWVyaWNzL21vdmluZ19tZWRpYW5fZmlsdGVyLmgi
LAogICAgICJudW1lcmljcy9wZXJjZW50aWxlX2ZpbHRlci5oIiwKICAgICAibnVtZXJpY3Mvc2Vx
dWVuY2VfbnVtYmVyX3V0aWwuaCIsCkBAIC03MDcsNDggKzcyNCwyMyBAQCBydGNfc291cmNlX3Nl
dCgicnRjX2pzb24iKSB7CiAKIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2Jhc2UiKSB7CiAgIHZp
c2liaWxpdHkgPSBbICIqIiBdCi0gIHB1YmxpY19kZXBzID0gW10KLSAgaWYgKCFidWlsZF93aXRo
X21vemlsbGEpIHsKLSAgICBwdWJsaWNfZGVwcyArPSBbICI6cnRjX2Jhc2VfZ2VuZXJpYyIgXQot
ICB9Ci0gIGlmIChpc193aW4pIHsKLSAgICBzb3VyY2VzID0gWwotICAgICAgIm5vb3AuY2MiLAot
ICAgIF0KLSAgfQotICBpZiAoaXNfaW9zIHx8IGlzX21hYykgewotICAgIHNvdXJjZXMgPSBbCi0g
ICAgICAibm9vcC5tbSIsCi0gICAgXQotICAgIHB1YmxpY19kZXBzICs9IFsgIjpydGNfYmFzZV9v
YmpjIiBdCi0gIH0KLX0KLQotaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKLSAgcnRjX3NvdXJjZV9z
ZXQoInJ0Y19iYXNlX29iamMiKSB7Ci0gICAgc291cmNlcyA9IFsKLSAgICAgICJ0aHJlYWRfZGFy
d2luLm1tIiwKLSAgICBdCi0gICAgZGVwcyA9IFsKLSAgICAgICI6cnRjX2Jhc2VfZ2VuZXJpYyIs
Ci0gICAgXQotICAgIHZpc2liaWxpdHkgPSBbICI6cnRjX2Jhc2UiIF0KLSAgfQotfQotCi1ydGNf
c3RhdGljX2xpYnJhcnkoInJ0Y19iYXNlX2dlbmVyaWMiKSB7CiAgIGNmbGFncyA9IFtdCiAgIGNm
bGFnc19jYyA9IFtdCiAgIGxpYnMgPSBbXQogICBkZWZpbmVzID0gW10KICAgZGVwcyA9IFsKICAg
ICAiOmNoZWNrcyIsCisKKyAgICAjIEZvciBkZXByZWNhdGlvbiBvZiBydGM6OlBhY2tldFRpbWUs
IGluIGFzeW5jcGFja2V0c29ja2V0LmguCisgICAgIjpkZXByZWNhdGlvbiIsCiAgICAgIjpzdHJp
bmd1dGlscyIsCiAgICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi9hcGk6YXJyYXlfdmll
dyIsCisgICAgIm5ldHdvcms6c2VudF9wYWNrZXQiLAogICAgICJ0aGlyZF9wYXJ0eS9iYXNlNjQi
LAogICAgICJ0aGlyZF9wYXJ0eS9zaWdzbG90IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKICAgXQogICBwdWJsaWNfZGVwcyA9IFsKQEAgLTc4MSw4ICs3NzMsNiBAQCBydGNfc3RhdGlj
X2xpYnJhcnkoInJ0Y19iYXNlX2dlbmVyaWMiKSB7CiAgICAgImRzY3AuaCIsCiAgICAgImZpbGVy
b3RhdGluZ3N0cmVhbS5jYyIsCiAgICAgImZpbGVyb3RhdGluZ3N0cmVhbS5oIiwKLSAgICAiZmls
ZXV0aWxzLmNjIiwKLSAgICAiZmlsZXV0aWxzLmgiLAogICAgICJndW5pdF9wcm9kLmgiLAogICAg
ICJoZWxwZXJzLmNjIiwKICAgICAiaGVscGVycy5oIiwKQEAgLTc5MSw2ICs3ODEsOCBAQCBydGNf
c3RhdGljX2xpYnJhcnkoInJ0Y19iYXNlX2dlbmVyaWMiKSB7CiAgICAgImlwYWRkcmVzcy5jYyIs
CiAgICAgImlwYWRkcmVzcy5oIiwKICAgICAia2VlcF9yZWZfdW50aWxfZG9uZS5oIiwKKyAgICAi
a2V5X2Rlcml2YXRpb24uY2MiLAorICAgICJrZXlfZGVyaXZhdGlvbi5oIiwKICAgICAibWRuc19y
ZXNwb25kZXJfaW50ZXJmYWNlLmgiLAogICAgICJtZXNzYWdlZGlnZXN0LmNjIiwKICAgICAibWVz
c2FnZWRpZ2VzdC5oIiwKQEAgLTgxMSw2ICs4MDMsOCBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0
Y19iYXNlX2dlbmVyaWMiKSB7CiAgICAgIm51bGxzb2NrZXRzZXJ2ZXIuY2MiLAogICAgICJudWxs
c29ja2V0c2VydmVyLmgiLAogICAgICJvcGVuc3NsLmgiLAorICAgICJvcGVuc3NsX2tleV9kZXJp
dmF0aW9uX2hrZGYuY2MiLAorICAgICJvcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuaCIsCiAg
ICAgIm9wZW5zc2xhZGFwdGVyLmNjIiwKICAgICAib3BlbnNzbGFkYXB0ZXIuaCIsCiAgICAgIm9w
ZW5zc2xjZXJ0aWZpY2F0ZS5jYyIsCkBAIC04NDYsOCArODQwLDYgQEAgcnRjX3N0YXRpY19saWJy
YXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewogICAgICJzb2NrZXRhZGRyZXNzcGFpci5oIiwKICAg
ICAic29ja2V0ZmFjdG9yeS5oIiwKICAgICAic29ja2V0c2VydmVyLmgiLAotICAgICJzb2NrZXRz
dHJlYW0uY2MiLAotICAgICJzb2NrZXRzdHJlYW0uaCIsCiAgICAgInNzbGFkYXB0ZXIuY2MiLAog
ICAgICJzc2xhZGFwdGVyLmgiLAogICAgICJzc2xjZXJ0aWZpY2F0ZS5jYyIsCkBAIC04NjQsMTEg
Kzg1Niw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2Jhc2VfZ2VuZXJpYyIpIHsKICAgICAi
dGhyZWFkLmgiLAogICBdCiAKLSAgdmlzaWJpbGl0eSA9IFsKLSAgICAiOnJ0Y19iYXNlIiwKLSAg
ICAiOnJ0Y19iYXNlX29iamMiLAotICBdCi0KICAgaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsK
ICAgICBpbmNsdWRlX2RpcnMgPSBbICIuLi8uLi9ib3Jpbmdzc2wvc3JjL2luY2x1ZGUiIF0KICAg
ICBwdWJsaWNfY29uZmlncyArPSBbICI6cnRjX2Jhc2VfY2hyb21pdW1fY29uZmlnIiBdCkBAIC04
NzgsOCArODY1LDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewog
ICAgICAgImxvZ3NpbmtzLmNjIiwKICAgICAgICJsb2dzaW5rcy5oIiwKICAgICAgICJudW1lcmlj
cy9tYXRodXRpbHMuaCIsCi0gICAgICAib3B0aW9uc2ZpbGUuY2MiLAotICAgICAgIm9wdGlvbnNm
aWxlLmgiLAogICAgICAgInJvbGxpbmdhY2N1bXVsYXRvci5oIiwKICAgICAgICJzc2xyb290cy5o
IiwKICAgICBdCkBAIC05MTMsNiArODk4LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYmFz
ZV9nZW5lcmljIikgewogCiAgIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgc291cmNlcyAr
PSBbICJtYWNpZmFkZHJzX2NvbnZlcnRlci5jYyIgXQorICAgIGRlcHMgKz0gWyAic3lzdGVtOmNv
Y29hX3RocmVhZGluZyIgXQogICB9CiAKICAgaWYgKHJ0Y191c2VfeDExKSB7CkBAIC05MzgsMTgg
KzkyNCwxMiBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19iYXNlX2dlbmVyaWMiKSB7CiAgICAg
ICAibWFjdXRpbHMuY2MiLAogICAgICAgIm1hY3V0aWxzLmgiLAogICAgIF0KLSAgICBsaWJzICs9
IFsKLSAgICAgICMgRm9yIFByb2Nlc3NJbmZvcm1hdGlvbkNvcHlEaWN0aW9uYXJ5IGluIHVuaXhm
aWxlc3lzdGVtLmNjLgotICAgICAgIkFwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrIiwKLSAg
ICBdCiAgIH0KIAogICBpZiAoaXNfd2luKSB7CiAgICAgc291cmNlcyArPSBbCiAgICAgICAid2lu
MzIuY2MiLAogICAgICAgIndpbjMyLmgiLAotICAgICAgIndpbjMyZmlsZXN5c3RlbS5jYyIsCi0g
ICAgICAid2luMzJmaWxlc3lzdGVtLmgiLAogICAgICAgIndpbjMyd2luZG93LmNjIiwKICAgICAg
ICJ3aW4zMndpbmRvdy5oIiwKICAgICBdCkBAIC05NjcsOCArOTQ3LDYgQEAgcnRjX3N0YXRpY19s
aWJyYXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewogICAgIHNvdXJjZXMgKz0gWwogICAgICAgImlm
YWRkcnNfY29udmVydGVyLmNjIiwKICAgICAgICJpZmFkZHJzX2NvbnZlcnRlci5oIiwKLSAgICAg
ICJ1bml4ZmlsZXN5c3RlbS5jYyIsCi0gICAgICAidW5peGZpbGVzeXN0ZW0uaCIsCiAgICAgXQog
ICB9CiAKQEAgLTk4NiwxMSArOTY0LDQxIEBAIHJ0Y19zb3VyY2Vfc2V0KCJndGVzdF9wcm9kIikg
ewogICBdCiB9CiAKK3J0Y19zb3VyY2Vfc2V0KCJndW5pdF9oZWxwZXJzIikgeworICB0ZXN0b25s
eSA9IHRydWUKKyAgc291cmNlcyA9IFsKKyAgICAiZ3VuaXQuY2MiLAorICAgICJndW5pdC5oIiwK
KyAgXQorICBkZXBzID0gWworICAgICI6bG9nZ2luZyIsCisgICAgIjpydGNfYmFzZSIsCisgICAg
IjpydGNfYmFzZV90ZXN0c191dGlscyIsCisgICAgIjpzdHJpbmd1dGlscyIsCisgICAgIi4uL3Rl
c3Q6dGVzdF9zdXBwb3J0IiwKKyAgXQorfQorCitydGNfc291cmNlX3NldCgidGVzdGNsaWVudCIp
IHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIHNvdXJjZXMgPSBbCisgICAgInRlc3RjbGllbnQuY2Mi
LAorICAgICJ0ZXN0Y2xpZW50LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjcml0aWNhbHNl
Y3Rpb24iLAorICAgICI6Z3VuaXRfaGVscGVycyIsCisgICAgIjptYWNyb21hZ2ljIiwKKyAgICAi
OnJ0Y19iYXNlIiwKKyAgICAiOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKKyAgICAiOnRpbWV1dGls
cyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeTptZW1vcnkiLAor
ICBdCit9CisKIHJ0Y19zb3VyY2Vfc2V0KCJydGNfYmFzZV90ZXN0c191dGlscyIpIHsKICAgdGVz
dG9ubHkgPSB0cnVlCiAgIHNvdXJjZXMgPSBbCi0gICAgIyBBbHNvIHVzZSB0aGlzIGFzIGEgY29u
dmVuaWVudCBkdW1waW5nIGdyb3VuZCBmb3IgbWlzYyBmaWxlcyB0aGF0IGFyZQotICAgICMgaW5j
bHVkZWQgYnkgbXVsdGlwbGUgdGFyZ2V0cyBiZWxvdy4KICAgICAiY3B1X3RpbWUuY2MiLAogICAg
ICJjcHVfdGltZS5oIiwKICAgICAiZmFrZV9tZG5zX3Jlc3BvbmRlci5oIiwKQEAgLTEwMDEsOCAr
MTAwOSw4IEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfYmFzZV90ZXN0c191dGlscyIpIHsKICAgICAi
ZmFrZXNzbGlkZW50aXR5LmgiLAogICAgICJmaXJld2FsbHNvY2tldHNlcnZlci5jYyIsCiAgICAg
ImZpcmV3YWxsc29ja2V0c2VydmVyLmgiLAotICAgICJndW5pdC5jYyIsCi0gICAgImd1bml0Lmgi
LAorICAgICJtZW1vcnlfc3RyZWFtLmNjIiwKKyAgICAibWVtb3J5X3N0cmVhbS5oIiwKICAgICAi
bWVtb3J5X3VzYWdlLmNjIiwKICAgICAibWVtb3J5X3VzYWdlLmgiLAogICAgICJuYXRzZXJ2ZXIu
Y2MiLApAQCAtMTAxNSwxMCArMTAyMywxMCBAQCBydGNfc291cmNlX3NldCgicnRjX2Jhc2VfdGVz
dHNfdXRpbHMiKSB7CiAgICAgInByb3h5c2VydmVyLmgiLAogICAgICJzaWdzbG90dGVzdGVyLmgi
LAogICAgICJzaWdzbG90dGVzdGVyLmgucHVtcCIsCisgICAgInNvY2tldHN0cmVhbS5jYyIsCisg
ICAgInNvY2tldHN0cmVhbS5oIiwKICAgICAidGVzdGJhc2U2NC5oIiwKICAgICAidGVzdGNlcnRp
ZmljYXRldmVyaWZpZXIuaCIsCi0gICAgInRlc3RjbGllbnQuY2MiLAotICAgICJ0ZXN0Y2xpZW50
LmgiLAogICAgICJ0ZXN0ZWNob3NlcnZlci5jYyIsCiAgICAgInRlc3RlY2hvc2VydmVyLmgiLAog
ICAgICJ0ZXN0dXRpbHMuY2MiLApAQCAtMTAyOSwxNiArMTAzNywxMCBAQCBydGNfc291cmNlX3Nl
dCgicnRjX2Jhc2VfdGVzdHNfdXRpbHMiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjpjaGVja3MiLAog
ICAgICI6cnRjX2Jhc2UiLAotICAgICI6c3RyaW5ndXRpbHMiLAogICAgICIuLi9hcGkvdW5pdHM6
dGltZV9kZWx0YSIsCi0gICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKLSAgICAic3lzdGVtOmZh
bGx0aHJvdWdoIiwKICAgICAidGhpcmRfcGFydHkvc2lnc2xvdCIsCiAgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KLSAgcHVibGljX2RlcHMgPSBbCi0gICAg
Ii8vdGVzdGluZy9ndGVzdCIsCi0gIF0KIH0KIAogcnRjX3NvdXJjZV9zZXQoInJ0Y190YXNrX3F1
ZXVlX2Zvcl90ZXN0IikgewpAQCAtMTA2Myw2ICsxMDY1LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rl
c3RzKSB7CiAgICAgICAic2lnc2xvdF91bml0dGVzdC5jYyIsCiAgICAgXQogICAgIGRlcHMgPSBb
CisgICAgICAiOmd1bml0X2hlbHBlcnMiLAogICAgICAgIjpydGNfYmFzZSIsCiAgICAgICAiOnJ0
Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICJ0aGlyZF9wYXJ0eS9zaWdzbG90IiwKQEAgLTEw
NzUsMTMgKzEwNzgsMTMgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAidW5pdHRl
c3RfbWFpbi5jYyIsCiAgICAgXQogICAgIGRlcHMgPSBbCisgICAgICAiOmd1bml0X2hlbHBlcnMi
LAogICAgICAgIjpydGNfYmFzZSIsCiAgICAgICAiOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAg
ICI6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uL3N5c3RlbV93cmFwcGVyczpmaWVs
ZF90cmlhbCIsCiAgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3MiLAogICAgICAgIi4u
L3Rlc3Q6ZmllbGRfdHJpYWwiLAotICAgICAgIi4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIu
Li90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgXQogCkBAIC0xMTA0LDkgKzExMDcsMTEgQEAgaWYg
KHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgXQogICAgIGRlcHMgPSBbCiAgICAgICAiOmNoZWNr
cyIsCisgICAgICAiOmd1bml0X2hlbHBlcnMiLAogICAgICAgIjpydGNfYmFzZSIsCiAgICAgICAi
OnJ0Y19iYXNlX3Rlc3RzX21haW4iLAogICAgICAgIjpydGNfYmFzZV90ZXN0c191dGlscyIsCisg
ICAgICAiOnRlc3RjbGllbnQiLAogICAgICAgIi4uL3N5c3RlbV93cmFwcGVyczpzeXN0ZW1fd3Jh
cHBlcnMiLAogICAgICAgIi4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi90ZXN0OnRlc3Rf
c3VwcG9ydCIsCkBAIC0xMTQ3LDcgKzExNTIsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsK
ICAgICAgICJudW1lcmljcy9zYWZlX21pbm1heF91bml0dGVzdC5jYyIsCiAgICAgICAibnVtZXJp
Y3Mvc2FtcGxlX2NvdW50ZXJfdW5pdHRlc3QuY2MiLAogICAgICAgIm9uZXRpbWVldmVudF91bml0
dGVzdC5jYyIsCi0gICAgICAicGF0aHV0aWxzX3VuaXR0ZXN0LmNjIiwKICAgICAgICJwbGF0Zm9y
bV9maWxlX3VuaXR0ZXN0LmNjIiwKICAgICAgICJwbGF0Zm9ybV90aHJlYWRfdW5pdHRlc3QuY2Mi
LAogICAgICAgInJhbmRvbV91bml0dGVzdC5jYyIsCkBAIC0xMTc0LDYgKzExNzgsNyBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICB9CiAgICAgZGVwcyA9IFsKICAgICAgICI6Y2hlY2tz
IiwKKyAgICAgICI6Z3VuaXRfaGVscGVycyIsCiAgICAgICAiOnJhdGVfbGltaXRlciIsCiAgICAg
ICAiOnJ0Y19iYXNlIiwKICAgICAgICI6cnRjX2Jhc2VfYXBwcm92ZWQiLApAQCAtMTE4NCw2ICsx
MTg5LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOnNhZmVfbWlubWF4IiwK
ICAgICAgICI6c2FuaXRpemVyIiwKICAgICAgICI6c3RyaW5ndXRpbHMiLAorICAgICAgIjp0ZXN0
Y2xpZW50IiwKICAgICAgICIuLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgICAiLi4vc3lzdGVtX3dy
YXBwZXJzOnN5c3RlbV93cmFwcGVycyIsCiAgICAgICAiLi4vdGVzdDpmaWxldXRpbHMiLApAQCAt
MTIwMyw2ICsxMjA5LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAidGFza19x
dWV1ZV91bml0dGVzdC5jYyIsCiAgICAgXQogICAgIGRlcHMgPSBbCisgICAgICAiOmd1bml0X2hl
bHBlcnMiLAogICAgICAgIjpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiOnJ0Y19iYXNlX3Rl
c3RzX21haW4iLAogICAgICAgIjpydGNfYmFzZV90ZXN0c191dGlscyIsCkBAIC0xMjM2LDcgKzEy
NDMsOCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJ3ZWFrX3B0cl91bml0dGVz
dC5jYyIsCiAgICAgXQogICAgIGRlcHMgPSBbCi0gICAgICAiOnJ0Y19iYXNlX2FwcHJvdmVkX2dl
bmVyaWMiLAorICAgICAgIjpndW5pdF9oZWxwZXJzIiwKKyAgICAgICI6cnRjX2Jhc2VfYXBwcm92
ZWQiLAogICAgICAgIjpydGNfYmFzZV90ZXN0c19tYWluIiwKICAgICAgICI6cnRjX2Jhc2VfdGVz
dHNfdXRpbHMiLAogICAgICAgIjpydGNfZXZlbnQiLApAQCAtMTI1MSw2ICsxMjU5LDcgQEAgaWYg
KHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAKICAgICBzb3VyY2VzID0gWwogICAgICAgIm51bWVyaWNz
L2V4cF9maWx0ZXJfdW5pdHRlc3QuY2MiLAorICAgICAgIm51bWVyaWNzL21vdmluZ19hdmVyYWdl
X3VuaXR0ZXN0LmNjIiwKICAgICAgICJudW1lcmljcy9tb3ZpbmdfbWVkaWFuX2ZpbHRlcl91bml0
dGVzdC5jYyIsCiAgICAgICAibnVtZXJpY3MvcGVyY2VudGlsZV9maWx0ZXJfdW5pdHRlc3QuY2Mi
LAogICAgICAgIm51bWVyaWNzL3NlcXVlbmNlX251bWJlcl91dGlsX3VuaXR0ZXN0LmNjIiwKQEAg
LTEyNzAsNiArMTI3OSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgInN0cmlu
Z3MvanNvbl91bml0dGVzdC5jYyIsCiAgICAgXQogICAgIGRlcHMgPSBbCisgICAgICAiOmd1bml0
X2hlbHBlcnMiLAogICAgICAgIjpydGNfYmFzZV90ZXN0c19tYWluIiwKICAgICAgICI6cnRjX2Jh
c2VfdGVzdHNfdXRpbHMiLAogICAgICAgIjpydGNfanNvbiIsCkBAIC0xMjkyLDcgKzEzMDIsNiBA
QCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJtZXNzYWdlcXVldWVfdW5pdHRlc3Qu
Y2MiLAogICAgICAgIm5hdF91bml0dGVzdC5jYyIsCiAgICAgICAibmV0d29ya191bml0dGVzdC5j
YyIsCi0gICAgICAib3B0aW9uc2ZpbGVfdW5pdHRlc3QuY2MiLAogICAgICAgInByb3h5X3VuaXR0
ZXN0LmNjIiwKICAgICAgICJyb2xsaW5nYWNjdW11bGF0b3JfdW5pdHRlc3QuY2MiLAogICAgICAg
InJ0Y2NlcnRpZmljYXRlX3VuaXR0ZXN0LmNjIiwKQEAgLTEzMTEsNiArMTMyMCw3IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgIH0KICAgICBpZiAoaXNfcG9zaXggfHwgaXNfZnVjaHNp
YSkgewogICAgICAgc291cmNlcyArPSBbCisgICAgICAgICJvcGVuc3NsX2tleV9kZXJpdmF0aW9u
X2hrZGZfdW5pdHRlc3QuY2MiLAogICAgICAgICAib3BlbnNzbGFkYXB0ZXJfdW5pdHRlc3QuY2Mi
LAogICAgICAgICAib3BlbnNzbHNlc3Npb25jYWNoZV91bml0dGVzdC5jYyIsCiAgICAgICAgICJv
cGVuc3NsdXRpbGl0eV91bml0dGVzdC5jYyIsCkBAIC0xMzIxLDkgKzEzMzEsMTEgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgfQogICAgIGRlcHMgPSBbCiAgICAgICAiOmNoZWNrcyIs
CisgICAgICAiOmd1bml0X2hlbHBlcnMiLAogICAgICAgIjpydGNfYmFzZV90ZXN0c19tYWluIiwK
ICAgICAgICI6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgIjpzdHJpbmd1dGlscyIsCisg
ICAgICAiOnRlc3RjbGllbnQiLAogICAgICAgIi4uL2FwaTphcnJheV92aWV3IiwKICAgICAgICIu
Li90ZXN0OmZpbGV1dGlscyIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
RHVtbXkuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL0R1bW15LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ZjAyYzkw
ZGJmNjYwZGQwNThlZTVkMTM2ZTkxYTI0ZWVmYTJlMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvRHVtbXkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
Ci0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgotICovCi0KLS8qKgotICogVGhpcyBjbGFzcyBvbmx5IGV4aXN0cyBh
cyBnbHVlIGluIGEgdHJhbnNpdGlvbi4KLSAqIFRPRE8oa2plbGxhbmRlcik6IFJlbW92ZS4KLSAq
IFNlZSBodHRwczovL2J1Z3Mud2VicnRjLm9yZy83NjM0IGZvciBtb3JlIGRldGFpbHMuCi0gKi8K
LWNsYXNzIER1bW15IHsKLSAgRHVtbXkoKSB7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL09XTkVSUyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL09XTkVSUwppbmRl
eCA2OWNlMjUzMDg3ZjU5YjE3Yjc2ZjJhNWNlODA3MjkwYmNiZjJiYjE0Li5lNjdlODM0MGY3Yzc4
OTBmNzBlNTFiMjM2ODk1NWExN2U5NjE1ZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9PV05FUlMKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvT1dORVJTCkBAIC0yLDcg
KzIsNiBAQCBodGFAd2VicnRjLm9yZwoganViZXJ0aUB3ZWJydGMub3JnCiBrd2liZXJnQHdlYnJ0
Yy5vcmcKIG1mbG9kbWFuQHdlYnJ0Yy5vcmcKLXBlcmtqQHdlYnJ0Yy5vcmcKIHB0aGF0Y2hlckB3
ZWJydGMub3JnCiBxaW5nc2lAd2VicnRjLm9yZwogc2VyZ2V5dUBjaHJvbWl1bS5vcmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2FzeW5jaW52b2tlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2FzeW5jaW52b2tlci5jYwppbmRleCBlMjU1ZmI5OGZjY2I3Mjc2YjQ5ZjMy
NmU4MTc3N2U3MDk4MDQ1YTAwLi5mMGRkMTg4MWVmMzQ3MmI4NWMyNjBkNDc2ZDY2MWZkZTgzMjMw
NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9hc3luY2ludm9rZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNpbnZva2VyLmNjCkBAIC0xNyw3ICsxNyw3
IEBAIG5hbWVzcGFjZSBydGMgewogCiBBc3luY0ludm9rZXI6OkFzeW5jSW52b2tlcigpCiAgICAg
OiBwZW5kaW5nX2ludm9jYXRpb25zXygwKSwKLSAgICAgIGludm9jYXRpb25fY29tcGxldGVfKG5l
dyBSZWZDb3VudGVkT2JqZWN0PEV2ZW50PihmYWxzZSwgZmFsc2UpKSwKKyAgICAgIGludm9jYXRp
b25fY29tcGxldGVfKG5ldyBSZWZDb3VudGVkT2JqZWN0PEV2ZW50PigpKSwKICAgICAgIGRlc3Ry
b3lpbmdfKGZhbHNlKSB7fQogCiBBc3luY0ludm9rZXI6On5Bc3luY0ludm9rZXIoKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9hc3luY3BhY2tldHNvY2tldC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jcGFja2V0c29ja2V0LmNjCmluZGV4IGUxYjFlYWU2YTMx
ZDczNWI3MDNhZjI0YjU4Y2M4MTg0YjhjMWRjYjkuLjdlMGNjOGY4MTAxMWU1OTZjNDM4MDViMjBj
OWVkNjI5YWE0YjFhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jcGFja2V0c29ja2V0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jcGFja2V0c29j
a2V0LmNjCkBAIC05LDYgKzksNyBAQAogICovCiAKICNpbmNsdWRlICJydGNfYmFzZS9hc3luY3Bh
Y2tldHNvY2tldC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL25ldGhlbHBlci5oIgogCiBuYW1lc3Bh
Y2UgcnRjIHsKIApAQCAtMzMsOSArMzQsMTEgQEAgdm9pZCBDb3B5U29ja2V0SW5mb3JtYXRpb25U
b1BhY2tldEluZm8oc2l6ZV90IHBhY2tldF9zaXplX2J5dGVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19jb25uZWN0aW9ubGVzcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0SW5mbyogaW5mbykgewogICBp
bmZvLT5wYWNrZXRfc2l6ZV9ieXRlcyA9IHBhY2tldF9zaXplX2J5dGVzOwotICBpbmZvLT5sb2Nh
bF9zb2NrZXRfYWRkcmVzcyA9IHNvY2tldF9mcm9tLkdldExvY2FsQWRkcmVzcygpOwotICBpZiAo
IWlzX2Nvbm5lY3Rpb25sZXNzKSB7Ci0gICAgaW5mby0+cmVtb3RlX3NvY2tldF9hZGRyZXNzID0g
c29ja2V0X2Zyb20uR2V0UmVtb3RlQWRkcmVzcygpOworICAvLyBUT0RPKHNydGUpOiBNYWtlIHN1
cmUgdGhhdCB0aGUgZmFtaWx5IG9mIHRoZSBsb2NhbCBzb2NrZXQgaXMgYWx3YXlzIHNldAorICAv
LyBpbiB0aGUgVmlydHVhbFNvY2tldCBpbXBsZW1lbnRhdGlvbiBhbmQgcmVtb3ZlIHRoaXMgY2hl
Y2suCisgIGludCBmYW1pbHkgPSBzb2NrZXRfZnJvbS5HZXRMb2NhbEFkZHJlc3MoKS5mYW1pbHko
KTsKKyAgaWYgKGZhbWlseSAhPSAwKSB7CisgICAgaW5mby0+aXBfb3ZlcmhlYWRfYnl0ZXMgPSBj
cmlja2V0OjpHZXRJcE92ZXJoZWFkKGZhbWlseSk7CiAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNwYWNr
ZXRzb2NrZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2FzeW5jcGFja2V0c29ja2V0LmgKaW5kZXggYmIwYjNiY2MwNDhlNzVmZTQ4NmVmZGY2
NTU3ZjNjYTcxNzFjYmIwMi4uNDRkNmM2NzQyNjdhNjE2NWYyYjE5NWY4MWYyZDg4MmYzMzY0MTM4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oCkBAIC0xMiw2
ICsxMiw3IEBACiAjZGVmaW5lIFJUQ19CQVNFX0FTWU5DUEFDS0VUU09DS0VUX0hfCiAKICNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZGVw
cmVjYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9kc2NwLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2Uvc29ja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdz
bG90LmgiCkBAIC01MCwyNSArNTEsOSBAQCBzdHJ1Y3QgUGFja2V0T3B0aW9ucyB7CiAgIFBhY2tl
dEluZm8gaW5mb19zaWduYWxlZF9hZnRlcl9zZW50OwogfTsKIAotLy8gVGhpcyBzdHJ1Y3R1cmUg
d2lsbCBoYXZlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB3aGVuIHBhY2tldCBpcyBhY3R1YWxseQot
Ly8gcmVjZWl2ZWQgYnkgc29ja2V0Lgotc3RydWN0IFBhY2tldFRpbWUgewotICBQYWNrZXRUaW1l
KCkgOiB0aW1lc3RhbXAoLTEpLCBub3RfYmVmb3JlKC0xKSB7fQotICBQYWNrZXRUaW1lKGludDY0
X3QgdGltZXN0YW1wLCBpbnQ2NF90IG5vdF9iZWZvcmUpCi0gICAgICA6IHRpbWVzdGFtcCh0aW1l
c3RhbXApLCBub3RfYmVmb3JlKG5vdF9iZWZvcmUpIHt9Ci0KLSAgaW50NjRfdCB0aW1lc3RhbXA7
ICAvLyBSZWNlaXZlIHRpbWUgYWZ0ZXIgc29ja2V0IGRlbGl2ZXJzIHRoZSBkYXRhLgotCi0gIC8v
IEVhcmxpZXN0IHBvc3NpYmxlIHRpbWUgdGhlIGRhdGEgY291bGQgaGF2ZSBhcnJpdmVkLCBpbmRp
Y2F0aW5nIHRoZQotICAvLyBwb3RlbnRpYWwgZXJyb3IgaW4gdGhlIHx0aW1lc3RhbXB8IHZhbHVl
LCBpbiBjYXNlIHRoZSBzeXN0ZW0sIGlzIGJ1c3kuIEZvcgotICAvLyBleGFtcGxlLCB0aGUgdGlt
ZSBvZiB0aGUgbGFzdCBzZWxlY3QoKSBjYWxsLgotICAvLyBJZiB1bmtub3duLCB0aGlzIHZhbHVl
IHdpbGwgYmUgc2V0IHRvIHplcm8uCi0gIGludDY0X3Qgbm90X2JlZm9yZTsKLX07Ci0KLWlubGlu
ZSBQYWNrZXRUaW1lIENyZWF0ZVBhY2tldFRpbWUoaW50NjRfdCBub3RfYmVmb3JlKSB7Ci0gIHJl
dHVybiBQYWNrZXRUaW1lKFRpbWVNaWNyb3MoKSwgbm90X2JlZm9yZSk7Ci19CisvLyBUT0RPKGJ1
Z3Mud2VicnRjLm9yZy85NTg0KTogQ29tcGF0aWJpbGl0eSBhbGlhcywgZGVsZXRlIGFzIHNvb24g
YXMgZG93bnN0cmVhbQorLy8gY29kZSBpcyB1cGRhdGVkLgordHlwZWRlZiBpbnQ2NF90IFBhY2tl
dFRpbWU7CiAKIC8vIFByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIHJlY2VpdmUgcGFja2V0cyBhc3lu
Y2hyb25vdXNseS4gU2VuZHMgYXJlIG5vdAogLy8gYnVmZmVyZWQgc2luY2UgaXQgaXMgYWNjZXB0
YWJsZSB0byBkcm9wIHBhY2tldHMgdW5kZXIgaGlnaCBsb2FkLgpAQCAtMTIwLDcgKzEwNSw5IEBA
IGNsYXNzIEFzeW5jUGFja2V0U29ja2V0IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsK
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiwKICAgICAgICAgICAgICAgICAgICBzaXpl
X3QsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgU29ja2V0QWRkcmVzcyYsCi0gICAgICAgICAg
ICAgICAgICAgY29uc3QgUGFja2V0VGltZSY+CisgICAgICAgICAgICAgICAgICAgLy8gVE9ETyhi
dWdzLndlYnJ0Yy5vcmcvOTU4NCk6IENoYW5nZSB0byBwYXNzaW5nIHRoZSBpbnQ2NF90CisgICAg
ICAgICAgICAgICAgICAgLy8gdGltZXN0YW1wIGJ5IHZhbHVlLgorICAgICAgICAgICAgICAgICAg
IGNvbnN0IGludDY0X3QmPgogICAgICAgU2lnbmFsUmVhZFBhY2tldDsKIAogICAvLyBFbWl0dGVk
IGVhY2ggdGltZSBhIHBhY2tldCBpcyBzZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNyZXNvbHZlcmludGVyZmFj
ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
YXN5bmNyZXNvbHZlcmludGVyZmFjZS5oCmluZGV4IDViMjMwM2Y0ZDgwMjg2MDgxYjc5YTliMTI5
ZjhkN2YyMDVlMDA1MWUuLmYzZGY4ODQyNDkzZmRlM2M3NmM0YWQ1ZTk5ZGM5ZTA2OTFlNGY3Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2FzeW5jcmVzb2x2ZXJpbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3Jlc29sdmVyaW50ZXJmYWNlLmgK
QEAgLTIyLDkgKzIyLDEyIEBAIGNsYXNzIEFzeW5jUmVzb2x2ZXJJbnRlcmZhY2UgewogICBBc3lu
Y1Jlc29sdmVySW50ZXJmYWNlKCk7CiAgIHZpcnR1YWwgfkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2Uo
KTsKIAotICAvLyBTdGFydCBhZGRyZXNzIHJlc29sdmUgcHJvY2Vzcy4KKyAgLy8gU3RhcnQgYWRk
cmVzcyByZXNvbHV0aW9uIG9mIHRoZSBob3N0bmFtZSBpbiB8YWRkcnwuCiAgIHZpcnR1YWwgdm9p
ZCBTdGFydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyKSA9IDA7Ci0gIC8vIFJldHVybnMgdG9w
IG1vc3QgcmVzb2x2ZWQgYWRkcmVzcyBvZiB8ZmFtaWx5fAorICAvLyBSZXR1cm5zIHRydWUgaWZm
IHRoZSBhZGRyZXNzIGZyb20gfFN0YXJ0fCB3YXMgc3VjY2Vzc2Z1bGx5IHJlc29sdmVkLgorICAv
LyBJZiB0aGUgYWRkcmVzcyB3YXMgc3VjY2Vzc2Z1bGx5IHJlc29sdmVkLCBzZXRzIHxhZGRyfCB0
byBhIGNvcHkgb2YgdGhlCisgIC8vIGFkZHJlc3MgZnJvbSB8U3RhcnR8IHdpdGggdGhlIElQIGFk
ZHJlc3Mgc2V0IHRvIHRoZSB0b3AgbW9zdCByZXNvbHZlZAorICAvLyBhZGRyZXNzIG9mIHxmYW1p
bHl8ICh8YWRkcnwgd2lsbCBoYXZlIGJvdGggaG9zdG5hbWUgYW5kIHRoZSByZXNvbHZlZCBpcCku
CiAgIHZpcnR1YWwgYm9vbCBHZXRSZXNvbHZlZEFkZHJlc3MoaW50IGZhbWlseSwgU29ja2V0QWRk
cmVzcyogYWRkcikgY29uc3QgPSAwOwogICAvLyBSZXR1cm5zIGVycm9yIGZyb20gcmVzb2x2ZXIu
CiAgIHZpcnR1YWwgaW50IEdldEVycm9yKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN0Y3Bzb2Nr
ZXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9hc3luY3RjcHNvY2tldC5jYwppbmRleCAzZDY4YTJhNDZhNmM2MzdhOGVkMmZhN2EyZmJkOWNi
M2U1Y2NmN2RkLi42NjZiMzM1N2FhYWY1NTNmYTMwNzQxZWNiNjUwNzc0Mjg2NmRhMmZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9hc3luY3RjcHNvY2tldC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3RjcHNvY2tldC5jYwpAQCAtMTgsNiArMTgsNyBAQAog
I2luY2x1ZGUgInJ0Y19iYXNlL2J5dGVvcmRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90
aW1ldXRpbHMuaCIgIC8vIGZvciBUaW1lTWlsbGlzCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19QT1NJ
WCkKICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtMzIwLDcgKzMyMSw3IEBAIHZvaWQgQXN5bmNUQ1BT
b2NrZXQ6OlByb2Nlc3NJbnB1dChjaGFyKiBkYXRhLCBzaXplX3QqIGxlbikgewogICAgICAgcmV0
dXJuOwogCiAgICAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBkYXRhICsga1BhY2tldExlblNpemUs
IHBrdF9sZW4sIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlUGFja2V0
VGltZSgwKSk7CisgICAgICAgICAgICAgICAgICAgICBUaW1lTWljcm9zKCkpOwogCiAgICAgKmxl
biAtPSBrUGFja2V0TGVuU2l6ZSArIHBrdF9sZW47CiAgICAgaWYgKCpsZW4gPiAwKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9hc3luY3RjcHNvY2tldC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuaAppbmRleCA5NDNlMDEwZjRkYWMwMTljMWM4
MTJkOGY0MDY0ODdjZDJjMWY1YmRhLi45NTY3ZGQ5MTQzMmI3NGMwMDNlOGQ3YjJkMjgyNzhjM2Iy
OTcyZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9hc3luY3RjcHNvY2tldC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdGNwc29ja2V0LmgKQEAgLTExLDEy
ICsxMSwxNSBAQAogI2lmbmRlZiBSVENfQkFTRV9BU1lOQ1RDUFNPQ0tFVF9IXwogI2RlZmluZSBS
VENfQkFTRV9BU1lOQ1RDUFNPQ0tFVF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVk
ZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9hc3luY3NvY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9zb2NrZXRmYWN0b3J5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0LmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvYXN5bmN1ZHBzb2NrZXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3VkcHNvY2tldC5jYwppbmRleCBiYTVmYTg4YWFkYjNl
MmY0ZDZmNDEyNGE5MzRmMTQ0ZDUwMjM2OGViLi4yZjkwMTFjYWIxNDNhYWJkNDBhY2ZmMGRlOWM1
NTEzMzNhYjM4MjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3VkcHNvY2tldC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3VkcHNvY2tldC5jYwpA
QCAtNzQsNyArNzQsNiBAQCBpbnQgQXN5bmNVRFBTb2NrZXQ6OlNlbmRUbyhjb25zdCB2b2lkKiBw
diwKICAgcnRjOjpTZW50UGFja2V0IHNlbnRfcGFja2V0KG9wdGlvbnMucGFja2V0X2lkLCBydGM6
OlRpbWVNaWxsaXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuaW5m
b19zaWduYWxlZF9hZnRlcl9zZW50KTsKICAgQ29weVNvY2tldEluZm9ybWF0aW9uVG9QYWNrZXRJ
bmZvKGNiLCAqdGhpcywgdHJ1ZSwgJnNlbnRfcGFja2V0LmluZm8pOwotICBzZW50X3BhY2tldC5p
bmZvLnJlbW90ZV9zb2NrZXRfYWRkcmVzcyA9IGFkZHI7CiAgIGludCByZXQgPSBzb2NrZXRfLT5T
ZW5kVG8ocHYsIGNiLCBhZGRyKTsKICAgU2lnbmFsU2VudFBhY2tldCh0aGlzLCBzZW50X3BhY2tl
dCk7CiAgIHJldHVybiByZXQ7CkBAIC0xMjMsOSArMTIyLDggQEAgdm9pZCBBc3luY1VEUFNvY2tl
dDo6T25SZWFkRXZlbnQoQXN5bmNTb2NrZXQqIHNvY2tldCkgewogCiAgIC8vIFRPRE86IE1ha2Ug
c3VyZSB0aGF0IHdlIGdvdCBhbGwgb2YgdGhlIHBhY2tldC4KICAgLy8gSWYgd2UgZGlkIG5vdCwg
dGhlbiB3ZSBzaG91bGQgcmVzaXplIG91ciBidWZmZXIgdG8gYmUgbGFyZ2UgZW5vdWdoLgotICBT
aWduYWxSZWFkUGFja2V0KAotICAgICAgdGhpcywgYnVmXywgc3RhdGljX2Nhc3Q8c2l6ZV90Pihs
ZW4pLCByZW1vdGVfYWRkciwKLSAgICAgICh0aW1lc3RhbXAgPiAtMSA/IFBhY2tldFRpbWUodGlt
ZXN0YW1wLCAwKSA6IENyZWF0ZVBhY2tldFRpbWUoMCkpKTsKKyAgU2lnbmFsUmVhZFBhY2tldCh0
aGlzLCBidWZfLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbiksIHJlbW90ZV9hZGRyLAorICAgICAg
ICAgICAgICAgICAgICh0aW1lc3RhbXAgPiAtMSA/IHRpbWVzdGFtcCA6IFRpbWVNaWNyb3MoKSkp
OwogfQogCiB2b2lkIEFzeW5jVURQU29ja2V0OjpPbldyaXRlRXZlbnQoQXN5bmNTb2NrZXQqIHNv
Y2tldCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvYXN5bmN1ZHBzb2NrZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdWRwc29ja2V0LmgKaW5kZXggZDgxNGI0
YmZkMGM1ZGJlNWQ3ZTRkNGFjNDg2YzdiOGZiNTYwOThmNC4uMDMwOTQ2ZDhhMDNhNWM2Y2Y4NGIz
Zjg3Yjc3NmMxNzliY2MwOTI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN1ZHBzb2NrZXQuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3VkcHNvY2tl
dC5oCkBAIC0xMSw5ICsxMSwxMyBAQAogI2lmbmRlZiBSVENfQkFTRV9BU1lOQ1VEUFNPQ0tFVF9I
XwogI2RlZmluZSBSVENfQkFTRV9BU1lOQ1VEUFNPQ0tFVF9IXwogCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRz
b2NrZXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9hc3luY3NvY2tldC5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3NvY2tldC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zb2NrZXRmYWN0b3J5LmgiCiAKIG5hbWVzcGFjZSBydGMgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvYmFzZTY0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvYmFzZTY0X3VuaXR0ZXN0LmNjCmluZGV4IDRiODU3ZjFhYTk0MDA4
NDE5ZWQ4NDZmYTVkMzNiODg0MDVmODQ0MGQuLmJkZjg1NTljMTI3ZjQ3YjQxYWYyNTgyY2RkNWI1
MzdjOThjOTQyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2Jhc2U2NF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9iYXNlNjRfdW5pdHRlc3QuY2MK
QEAgLTExLDcgKzExLDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9iYXNlNjQv
YmFzZTY0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogI2luY2x1
ZGUgInJ0Y19iYXNlL3Rlc3RiYXNlNjQuaCIKIApAQCAtNDMwLDEwICs0MjksMTAgQEAgVEVTVChC
YXNlNjQsIEVuY29kZURlY29kZUJhdHRlcnkpIHsKIAogICAgICAgLy8gdHJ5IHB1dHRpbmcgc29t
ZSBleHRyYSBzdHVmZiBhZnRlciB0aGUgZXF1YWxzIHNpZ25zLCBvciBpbiBiZXR3ZWVuIHRoZW0K
ICAgICAgIGlmIChlcXVhbHMgPT0gMikgewotICAgICAgICBzcHJpbnRmbihmaXJzdF9lcXVhbHMs
IDYsICIgPSA9ICIpOworICAgICAgICBzbnByaW50ZihmaXJzdF9lcXVhbHMsIDYsICIgPSA9ICIp
OwogICAgICAgICBsZW4gPSBmaXJzdF9lcXVhbHMgLSBlbmNvZGVfYnVmZmVyICsgNTsKICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgIHNwcmludGZuKGZpcnN0X2VxdWFscywgNiwgIiA9ICIpOworICAg
ICAgICBzbnByaW50ZihmaXJzdF9lcXVhbHMsIDYsICIgPSAiKTsKICAgICAgICAgbGVuID0gZmly
c3RfZXF1YWxzIC0gZW5jb2RlX2J1ZmZlciArIDM7CiAgICAgICB9CiAgICAgICBkZWNvZGVkMi5h
c3NpZ24oInRoaXMganVuayBzaG91bGQgYmUgaWdub3JlZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0ZWFsbG9j
YXRpb25zdHJhdGVneS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuY2MKaW5kZXggZDJhMDZjZDll
ZmVjODFjYzdhNGVlYWIxMDM2MzE1ZDY2ZGRlN2NkMS4uNDZlNjY3NDFlMGEwNDExNTU1MjczZGNl
ZDc2MTQxYTE0ZGZkOGEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9iaXRy
YXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmNjCkBAIC05LDkgKzksMzEgQEAKICAqLwogCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oIgorCiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRl
IDxtYXA+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNz
L3NhZmVfbWlubWF4LmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRf
dHJpYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitBdWRpb1ByaW9yaXR5Q29uZmlnOjpBdWRp
b1ByaW9yaXR5Q29uZmlnKCkKKyAgICA6IG1pbl9yYXRlKCJtaW4iKSwgbWF4X3JhdGUoIm1heCIp
LCB0YXJnZXRfcmF0ZSgidGFyZ2V0IikgeworICBzdGQ6OnN0cmluZyB0cmlhbF9zdHJpbmc7Cisv
LyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85ODg5KTogUmVtb3ZlIHRoaXMgd2hlbiBDaHJvbWl1bSBi
dWlsZCBoYXMgYmVlbiBmaXhlZC4KKyNpZiAhZGVmaW5lZChXRUJSVENfQ0hST01JVU1fQlVJTEQp
CisgIHRyaWFsX3N0cmluZyA9IGZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoIldlYlJUQy1Cd2Ut
QXVkaW9Qcmlvcml0eSIpOworI2VuZGlmCisgIFBhcnNlRmllbGRUcmlhbCh7Jm1pbl9yYXRlLCAm
bWF4X3JhdGUsICZ0YXJnZXRfcmF0ZX0sIHRyaWFsX3N0cmluZyk7Cit9CitBdWRpb1ByaW9yaXR5
Q29uZmlnOjpBdWRpb1ByaW9yaXR5Q29uZmlnKGNvbnN0IEF1ZGlvUHJpb3JpdHlDb25maWcmKSA9
IGRlZmF1bHQ7CitBdWRpb1ByaW9yaXR5Q29uZmlnOjp+QXVkaW9Qcmlvcml0eUNvbmZpZygpID0g
ZGVmYXVsdDsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCiBuYW1lc3BhY2UgcnRjIHsKIAog
Ly8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBhbGxvdyB2aWRlbyBzdHJlYW1zIHRvIHVzZSBl
eHRyYSBiYW5kd2lkdGggZm9yIEZFQy4KQEAgLTIxLDMxICs0MywzMSBAQCBuYW1lc3BhY2UgcnRj
IHsKIGNvbnN0IGludCBrVHJhbnNtaXNzaW9uTWF4Qml0cmF0ZU11bHRpcGxpZXIgPSAyOwogCiBz
dGQ6OnZlY3Rvcjx1aW50MzJfdD4gQml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6U2V0QWxsQml0
cmF0ZXNUb01pbmltdW0oCi0gICAgY29uc3QgQXJyYXlWaWV3PGNvbnN0IFRyYWNrQ29uZmlnKj4g
dHJhY2tfY29uZmlncykgeworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEJpdHJhdGVBbGxvY2F0aW9u
U3RyYXRlZ3k6OlRyYWNrQ29uZmlnPiYgdHJhY2tfY29uZmlncykgewogICBzdGQ6OnZlY3Rvcjx1
aW50MzJfdD4gdHJhY2tfYWxsb2NhdGlvbnM7Ci0gIGZvciAoY29uc3QgYXV0byogdHJhY2tfY29u
ZmlnIDogdHJhY2tfY29uZmlncykgewotICAgIHRyYWNrX2FsbG9jYXRpb25zLnB1c2hfYmFjayh0
cmFja19jb25maWctPm1pbl9iaXRyYXRlX2Jwcyk7CisgIGZvciAoY29uc3QgYXV0byYgdHJhY2tf
Y29uZmlnIDogdHJhY2tfY29uZmlncykgeworICAgIHRyYWNrX2FsbG9jYXRpb25zLnB1c2hfYmFj
ayh0cmFja19jb25maWcubWluX2JpdHJhdGVfYnBzKTsKICAgfQogICByZXR1cm4gdHJhY2tfYWxs
b2NhdGlvbnM7CiB9CiAKIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBCaXRyYXRlQWxsb2NhdGlvblN0
cmF0ZWd5OjpEaXN0cmlidXRlQml0cmF0ZXNFdmVubHkoCi0gICAgY29uc3QgQXJyYXlWaWV3PGNv
bnN0IFRyYWNrQ29uZmlnKj4gdHJhY2tfY29uZmlncywKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxC
aXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZz4mIHRyYWNrX2NvbmZpZ3MsCiAg
ICAgdWludDMyX3QgYXZhaWxhYmxlX2JpdHJhdGUpIHsKICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+
IHRyYWNrX2FsbG9jYXRpb25zID0KICAgICAgIFNldEFsbEJpdHJhdGVzVG9NaW5pbXVtKHRyYWNr
X2NvbmZpZ3MpOwogICB1aW50MzJfdCBzdW1fbWluX2JpdHJhdGVzID0gMDsKICAgdWludDMyX3Qg
c3VtX21heF9iaXRyYXRlcyA9IDA7Ci0gIGZvciAoY29uc3QgYXV0byogdHJhY2tfY29uZmlnIDog
dHJhY2tfY29uZmlncykgewotICAgIHN1bV9taW5fYml0cmF0ZXMgKz0gdHJhY2tfY29uZmlnLT5t
aW5fYml0cmF0ZV9icHM7Ci0gICAgc3VtX21heF9iaXRyYXRlcyArPSB0cmFja19jb25maWctPm1h
eF9iaXRyYXRlX2JwczsKKyAgZm9yIChjb25zdCBhdXRvJiB0cmFja19jb25maWcgOiB0cmFja19j
b25maWdzKSB7CisgICAgc3VtX21pbl9iaXRyYXRlcyArPSB0cmFja19jb25maWcubWluX2JpdHJh
dGVfYnBzOworICAgIHN1bV9tYXhfYml0cmF0ZXMgKz0gdHJhY2tfY29uZmlnLm1heF9iaXRyYXRl
X2JwczsKICAgfQogICBpZiAoc3VtX21pbl9iaXRyYXRlcyA+PSBhdmFpbGFibGVfYml0cmF0ZSkg
ewogICAgIHJldHVybiB0cmFja19hbGxvY2F0aW9uczsKICAgfSBlbHNlIGlmIChhdmFpbGFibGVf
Yml0cmF0ZSA+PSBzdW1fbWF4X2JpdHJhdGVzKSB7CiAgICAgYXV0byB0cmFja19hbGxvY2F0aW9u
c19pdCA9IHRyYWNrX2FsbG9jYXRpb25zLmJlZ2luKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvKiB0
cmFja19jb25maWcgOiB0cmFja19jb25maWdzKSB7Ci0gICAgICAqdHJhY2tfYWxsb2NhdGlvbnNf
aXQrKyA9IHRyYWNrX2NvbmZpZy0+bWF4X2JpdHJhdGVfYnBzOworICAgIGZvciAoY29uc3QgYXV0
byYgdHJhY2tfY29uZmlnIDogdHJhY2tfY29uZmlncykgeworICAgICAgKnRyYWNrX2FsbG9jYXRp
b25zX2l0KysgPSB0cmFja19jb25maWcubWF4X2JpdHJhdGVfYnBzOwogICAgIH0KICAgICByZXR1
cm4gdHJhY2tfYWxsb2NhdGlvbnM7CiAgIH0gZWxzZSB7CkBAIC01NCwxMSArNzYsMTAgQEAgc3Rk
Ojp2ZWN0b3I8dWludDMyX3Q+IEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OkRpc3RyaWJ1dGVC
aXRyYXRlc0V2ZW5seSgKICAgICAvLyBsb3dlc3QgbWF4X2JpdHJhdGVfYnBzLiBSZW1haW5kZXIg
b2YgYXZhaWxhYmxlIGJpdHJhdGUgc3BsaXQgZXZlbmx5IGFtb25nCiAgICAgLy8gcmVtYWluaW5n
IHRyYWNrcy4KICAgICBzdGQ6Om11bHRpbWFwPHVpbnQzMl90LCBzaXplX3Q+IG1heF9iaXRyYXRl
X3NvcnRlZF9jb25maWdzOwotICAgIGZvciAoY29uc3QgVHJhY2tDb25maWcqKiB0cmFja19jb25m
aWdzX2l0ID0gdHJhY2tfY29uZmlncy5iZWdpbigpOwotICAgICAgICAgdHJhY2tfY29uZmlnc19p
dCAhPSB0cmFja19jb25maWdzLmVuZCgpOyArK3RyYWNrX2NvbmZpZ3NfaXQpIHsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIHRyYWNrX2NvbmZpZyA6IHRyYWNrX2NvbmZpZ3MpIHsKICAgICAgIG1heF9i
aXRyYXRlX3NvcnRlZF9jb25maWdzLmluc2VydCgKLSAgICAgICAgICBzdGQ6Om1ha2VfcGFpcigo
KnRyYWNrX2NvbmZpZ3NfaXQpLT5tYXhfYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhY2tfY29uZmlnc19pdCAtIHRyYWNrX2NvbmZpZ3MuYmVnaW4oKSkpOworICAgICAg
ICAgIHN0ZDo6bWFrZV9wYWlyKHRyYWNrX2NvbmZpZy5tYXhfYml0cmF0ZV9icHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJnRyYWNrX2NvbmZpZyAtICZ0cmFja19jb25maWdzLmZyb250KCkp
KTsKICAgICB9CiAgICAgdWludDMyX3QgdG90YWxfYXZhaWxhYmxlX2luY3JlYXNlID0gYXZhaWxh
YmxlX2JpdHJhdGUgLSBzdW1fbWluX2JpdHJhdGVzOwogICAgIGludCBwcm9jZXNzZWRfY29uZmln
cyA9IDA7CkBAIC02Nyw4ICs4OCw4IEBAIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBCaXRyYXRlQWxs
b2NhdGlvblN0cmF0ZWd5OjpEaXN0cmlidXRlQml0cmF0ZXNFdmVubHkoCiAgICAgICAgICAgdG90
YWxfYXZhaWxhYmxlX2luY3JlYXNlIC8KICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHRyYWNrX2NvbmZpZ3Muc2l6ZSgpIC0gcHJvY2Vzc2VkX2NvbmZpZ3MpKTsKICAgICAgIHVpbnQz
Ml90IGNvbnN1bWVkX2luY3JlYXNlID0KLSAgICAgICAgICBzdGQ6Om1pbih0cmFja19jb25maWdz
W3RyYWNrX2NvbmZpZ19wYWlyLnNlY29uZF0tPm1heF9iaXRyYXRlX2JwcyAtCi0gICAgICAgICAg
ICAgICAgICAgICAgIHRyYWNrX2NvbmZpZ3NbdHJhY2tfY29uZmlnX3BhaXIuc2Vjb25kXS0+bWlu
X2JpdHJhdGVfYnBzLAorICAgICAgICAgIHN0ZDo6bWluKHRyYWNrX2NvbmZpZ3NbdHJhY2tfY29u
ZmlnX3BhaXIuc2Vjb25kXS5tYXhfYml0cmF0ZV9icHMgLQorICAgICAgICAgICAgICAgICAgICAg
ICB0cmFja19jb25maWdzW3RyYWNrX2NvbmZpZ19wYWlyLnNlY29uZF0ubWluX2JpdHJhdGVfYnBz
LAogICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZV9pbmNyZWFzZSk7CiAgICAgICB0cmFja19h
bGxvY2F0aW9uc1t0cmFja19jb25maWdfcGFpci5zZWNvbmRdICs9IGNvbnN1bWVkX2luY3JlYXNl
OwogICAgICAgdG90YWxfYXZhaWxhYmxlX2luY3JlYXNlIC09IGNvbnN1bWVkX2luY3JlYXNlOwpA
QCAtNzcsNTMgKzk4LDUwIEBAIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBCaXRyYXRlQWxsb2NhdGlv
blN0cmF0ZWd5OjpEaXN0cmlidXRlQml0cmF0ZXNFdmVubHkoCiAgICAgcmV0dXJuIHRyYWNrX2Fs
bG9jYXRpb25zOwogICB9CiB9Ci0KIEF1ZGlvUHJpb3JpdHlCaXRyYXRlQWxsb2NhdGlvblN0cmF0
ZWd5OjpBdWRpb1ByaW9yaXR5Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneSgKICAgICBzdGQ6OnN0
cmluZyBhdWRpb190cmFja19pZCwKICAgICB1aW50MzJfdCBzdWZmaWNpZW50X2F1ZGlvX2JpdHJh
dGUpCiAgICAgOiBhdWRpb190cmFja19pZF8oYXVkaW9fdHJhY2tfaWQpLAotICAgICAgc3VmZmlj
aWVudF9hdWRpb19iaXRyYXRlXyhzdWZmaWNpZW50X2F1ZGlvX2JpdHJhdGUpIHt9CisgICAgICBz
dWZmaWNpZW50X2F1ZGlvX2JpdHJhdGVfKHN1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZSkgeworICBp
ZiAoY29uZmlnXy50YXJnZXRfcmF0ZSkgeworICAgIHN1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZV8g
PSBjb25maWdfLnRhcmdldF9yYXRlLT5icHMoKTsKKyAgfQorfQogCiBzdGQ6OnZlY3Rvcjx1aW50
MzJfdD4gQXVkaW9Qcmlvcml0eUJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OkFsbG9jYXRlQml0
cmF0ZXMoCiAgICAgdWludDMyX3QgYXZhaWxhYmxlX2JpdHJhdGUsCi0gICAgY29uc3QgQXJyYXlW
aWV3PGNvbnN0IFRyYWNrQ29uZmlnKj4gdHJhY2tfY29uZmlncykgewotICBjb25zdCBUcmFja0Nv
bmZpZyogYXVkaW9fdHJhY2tfY29uZmlnID0gTlVMTDsKKyAgICBzdGQ6OnZlY3RvcjxCaXRyYXRl
QWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZz4gdHJhY2tfY29uZmlncykgeworICBUcmFj
a0NvbmZpZyogYXVkaW9fdHJhY2tfY29uZmlnID0gbnVsbHB0cjsKICAgc2l6ZV90IGF1ZGlvX2Nv
bmZpZ19pbmRleCA9IDA7CiAgIHVpbnQzMl90IHN1bV9taW5fYml0cmF0ZXMgPSAwOwogICB1aW50
MzJfdCBzdW1fbWF4X2JpdHJhdGVzID0gMDsKIAotICBmb3IgKGNvbnN0IGF1dG8qJiB0cmFja19j
b25maWcgOiB0cmFja19jb25maWdzKSB7Ci0gICAgc3VtX21pbl9iaXRyYXRlcyArPSB0cmFja19j
b25maWctPm1pbl9iaXRyYXRlX2JwczsKLSAgICBzdW1fbWF4X2JpdHJhdGVzICs9IHRyYWNrX2Nv
bmZpZy0+bWF4X2JpdHJhdGVfYnBzOwotICAgIGlmICh0cmFja19jb25maWctPnRyYWNrX2lkID09
IGF1ZGlvX3RyYWNrX2lkXykgewotICAgICAgYXVkaW9fdHJhY2tfY29uZmlnID0gdHJhY2tfY29u
ZmlnOworICBmb3IgKGF1dG8mIHRyYWNrX2NvbmZpZyA6IHRyYWNrX2NvbmZpZ3MpIHsKKyAgICBp
ZiAodHJhY2tfY29uZmlnLnRyYWNrX2lkID09IGF1ZGlvX3RyYWNrX2lkXykgewogICAgICAgYXVk
aW9fY29uZmlnX2luZGV4ID0gJnRyYWNrX2NvbmZpZyAtICZ0cmFja19jb25maWdzWzBdOworICAg
ICAgYXVkaW9fdHJhY2tfY29uZmlnID0gJnRyYWNrX2NvbmZpZzsKKyAgICAgIGlmIChjb25maWdf
Lm1pbl9yYXRlKQorICAgICAgICBhdWRpb190cmFja19jb25maWctPm1pbl9iaXRyYXRlX2JwcyA9
IGNvbmZpZ18ubWluX3JhdGUtPmJwcygpOworICAgICAgaWYgKGNvbmZpZ18ubWF4X3JhdGUpCisg
ICAgICAgIGF1ZGlvX3RyYWNrX2NvbmZpZy0+bWF4X2JpdHJhdGVfYnBzID0gY29uZmlnXy5tYXhf
cmF0ZS0+YnBzKCk7CiAgICAgfQorICAgIHN1bV9taW5fYml0cmF0ZXMgKz0gdHJhY2tfY29uZmln
Lm1pbl9iaXRyYXRlX2JwczsKKyAgICBzdW1fbWF4X2JpdHJhdGVzICs9IHRyYWNrX2NvbmZpZy5t
YXhfYml0cmF0ZV9icHM7CiAgIH0KICAgaWYgKHN1bV9tYXhfYml0cmF0ZXMgPCBhdmFpbGFibGVf
Yml0cmF0ZSkgewogICAgIC8vIEFsbG93IG5vbiBhdWRpbyBzdHJlYW1zIHRvIGdvIGFib3ZlIG1h
eCB1cHRvCiAgICAgLy8ga1RyYW5zbWlzc2lvbk1heEJpdHJhdGVNdWx0aXBsaWVyICogbWF4X2Jp
dHJhdGVfYnBzCi0gICAgc2l6ZV90IHRyYWNrX2NvbmZpZ3Nfc2l6ZSA9IHRyYWNrX2NvbmZpZ3Mu
c2l6ZSgpOwotICAgIHN0ZDo6dmVjdG9yPFRyYWNrQ29uZmlnPiBpbmNyZWFzZWRfdHJhY2tfY29u
Zmlncyh0cmFja19jb25maWdzX3NpemUpOwotICAgIHN0ZDo6dmVjdG9yPGNvbnN0IFRyYWNrQ29u
ZmlnKj4gaW5jcmVhc2VkX3RyYWNrX2NvbmZpZ3NfcHRyKAotICAgICAgICB0cmFja19jb25maWdz
X3NpemUpOwotICAgIGZvciAodW5zaWduZWQgbG9uZyBpID0gMDsgaSA8IHRyYWNrX2NvbmZpZ3Nf
c2l6ZTsgaSsrKSB7Ci0gICAgICBpbmNyZWFzZWRfdHJhY2tfY29uZmlnc1tpXSA9ICgqdHJhY2tf
Y29uZmlnc1tpXSk7Ci0gICAgICBpbmNyZWFzZWRfdHJhY2tfY29uZmlnc19wdHJbaV0gPSAmaW5j
cmVhc2VkX3RyYWNrX2NvbmZpZ3NbaV07Ci0gICAgICBpZiAodHJhY2tfY29uZmlnc1tpXS0+dHJh
Y2tfaWQgIT0gYXVkaW9fdHJhY2tfaWRfKSB7Ci0gICAgICAgIGluY3JlYXNlZF90cmFja19jb25m
aWdzW2ldLm1heF9iaXRyYXRlX2JwcyA9Ci0gICAgICAgICAgICB0cmFja19jb25maWdzW2ldLT5t
YXhfYml0cmF0ZV9icHMgKgotICAgICAgICAgICAga1RyYW5zbWlzc2lvbk1heEJpdHJhdGVNdWx0
aXBsaWVyOwotICAgICAgfQorICAgIGZvciAoYXV0byYgdHJhY2tfY29uZmlnIDogdHJhY2tfY29u
ZmlncykgeworICAgICAgaWYgKCZ0cmFja19jb25maWcgIT0gYXVkaW9fdHJhY2tfY29uZmlnKQor
ICAgICAgICB0cmFja19jb25maWcubWF4X2JpdHJhdGVfYnBzICo9IGtUcmFuc21pc3Npb25NYXhC
aXRyYXRlTXVsdGlwbGllcjsKICAgICB9Ci0gICAgcmV0dXJuIERpc3RyaWJ1dGVCaXRyYXRlc0V2
ZW5seShpbmNyZWFzZWRfdHJhY2tfY29uZmlnc19wdHIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdmFpbGFibGVfYml0cmF0ZSk7CisgICAgcmV0dXJuIERpc3RyaWJ1dGVC
aXRyYXRlc0V2ZW5seSh0cmFja19jb25maWdzLCBhdmFpbGFibGVfYml0cmF0ZSk7CiAgIH0KLSAg
aWYgKGF1ZGlvX3RyYWNrX2NvbmZpZyA9PSBudWxscHRyKSB7CisgIGlmICghYXVkaW9fdHJhY2tf
Y29uZmlnKSB7CiAgICAgcmV0dXJuIERpc3RyaWJ1dGVCaXRyYXRlc0V2ZW5seSh0cmFja19jb25m
aWdzLCBhdmFpbGFibGVfYml0cmF0ZSk7CiAgIH0KLSAgYXV0byBzYWZlX3N1ZmZpY2llbnRfYXVk
aW9fYml0cmF0ZSA9IHN0ZDo6bWluKAotICAgICAgc3RkOjptYXgoYXVkaW9fdHJhY2tfY29uZmln
LT5taW5fYml0cmF0ZV9icHMsIHN1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZV8pLAorICBhdXRvIHNh
ZmVfc3VmZmljaWVudF9hdWRpb19iaXRyYXRlID0gcnRjOjpTYWZlQ2xhbXAoCisgICAgICBzdWZm
aWNpZW50X2F1ZGlvX2JpdHJhdGVfLCBhdWRpb190cmFja19jb25maWctPm1pbl9iaXRyYXRlX2Jw
cywKICAgICAgIGF1ZGlvX3RyYWNrX2NvbmZpZy0+bWF4X2JpdHJhdGVfYnBzKTsKICAgaWYgKGF2
YWlsYWJsZV9iaXRyYXRlIDw9IHN1bV9taW5fYml0cmF0ZXMpIHsKICAgICByZXR1cm4gU2V0QWxs
Qml0cmF0ZXNUb01pbmltdW0odHJhY2tfY29uZmlncyk7CkBAIC0xMzksOSArMTU3LDcgQEAgc3Rk
Ojp2ZWN0b3I8dWludDMyX3Q+IEF1ZGlvUHJpb3JpdHlCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5
OjpBbGxvY2F0ZUJpdHJhdGVzKAogICAgICAgLy8gU2V0dGluZyBhdWRpbyB0cmFjayBtaW5pbXVt
IHRvIHNhZmVfc3VmZmljaWVudF9hdWRpb19iaXRyYXRlIHdpbGwKICAgICAgIC8vIGFsbG93IHVz
aW5nIERpc3RyaWJ1dGVCaXRyYXRlc0V2ZW5seSB0byBhbGxvY2F0ZSBhdCBsZWFzdCBzdWZmaWNp
ZW50CiAgICAgICAvLyBiaXRyYXRlIGZvciBhdWRpbyBhbmQgdGhlIHJlc3QgZXZlbmx5LgotICAg
ICAgVHJhY2tDb25maWcgc3VmZmljaWVudF90cmFja19jb25maWcoKnRyYWNrX2NvbmZpZ3NbYXVk
aW9fY29uZmlnX2luZGV4XSk7Ci0gICAgICBzdWZmaWNpZW50X3RyYWNrX2NvbmZpZy5taW5fYml0
cmF0ZV9icHMgPSBzYWZlX3N1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZTsKLSAgICAgIHRyYWNrX2Nv
bmZpZ3NbYXVkaW9fY29uZmlnX2luZGV4XSA9ICZzdWZmaWNpZW50X3RyYWNrX2NvbmZpZzsKKyAg
ICAgIGF1ZGlvX3RyYWNrX2NvbmZpZy0+bWluX2JpdHJhdGVfYnBzID0gc2FmZV9zdWZmaWNpZW50
X2F1ZGlvX2JpdHJhdGU7CiAgICAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gdHJhY2tfYWxsb2Nh
dGlvbnMgPQogICAgICAgICAgIERpc3RyaWJ1dGVCaXRyYXRlc0V2ZW5seSh0cmFja19jb25maWdz
LCBhdmFpbGFibGVfYml0cmF0ZSk7CiAgICAgICByZXR1cm4gdHJhY2tfYWxsb2NhdGlvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmgK
aW5kZXggZjcxMWQxZjE4ZmZkODE0ZWViMTZiOGQzNDk5OTRmOWFjYTEzNDJjMi4uMTNhNGVlZTUy
NGUyZTk4YjFjNzY3Yzk1ZGRmYTcyMTc0YmUwZGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25z
dHJhdGVneS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuaApAQCAtMTEsMTIgKzExLDEzIEBA
CiAjaWZuZGVmIFJUQ19CQVNFX0JJVFJBVEVBTExPQ0FUSU9OU1RSQVRFR1lfSF8KICNkZWZpbmUg
UlRDX0JBU0VfQklUUkFURUFMTE9DQVRJT05TVFJBVEVHWV9IXwogCi0jaW5jbHVkZSA8bWFwPgot
I2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmc+
CiAjaW5jbHVkZSA8dmVjdG9yPgorCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9m
aWVsZF90cmlhbF9wYXJzZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9maWVs
ZF90cmlhbF91bml0cy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApAQCAtNTYsMTAgKzU3LDEyIEBA
IGNsYXNzIEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3kgewogICAgIHN0ZDo6c3RyaW5nIHRyYWNr
X2lkOwogICB9OwogCisgIC8vIFRoZXNlIGFyZSBvbmx5IHVzZWQgYnkgQXVkaW9Qcmlvcml0eUJp
dHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3kuIFRoZXkgYXJlCisgIC8vIGV4cG9zZWQgaGVyZSB0byB0
aGV5IGNhbiBiZSB1bml0IHRlc3RlZC4KICAgc3RhdGljIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBT
ZXRBbGxCaXRyYXRlc1RvTWluaW11bSgKLSAgICAgIGNvbnN0IEFycmF5Vmlldzxjb25zdCBUcmFj
a0NvbmZpZyo+IHRyYWNrX2NvbmZpZ3MpOworICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Qml0cmF0
ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWc+JiB0cmFja19jb25maWdzKTsKICAgc3Rh
dGljIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBEaXN0cmlidXRlQml0cmF0ZXNFdmVubHkoCi0gICAg
ICBjb25zdCBBcnJheVZpZXc8Y29uc3QgVHJhY2tDb25maWcqPiB0cmFja19jb25maWdzLAorICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25m
aWc+JiB0cmFja19jb25maWdzLAogICAgICAgdWludDMyX3QgYXZhaWxhYmxlX2JpdHJhdGUpOwog
CiAgIC8vIFN0cmF0ZWd5IGlzIGV4cGVjdGVkIHRvIGFsbG9jYXRlIGFsbCBhdmFpbGFibGVfYml0
cmF0ZSB1cCB0byB0aGUgc3VtIG9mCkBAIC03NCwxMSArNzcsMjUgQEAgY2xhc3MgQml0cmF0ZUFs
bG9jYXRpb25TdHJhdGVneSB7CiAgIC8vIGF2YWlsYWJsZV9iaXRyYXRlIGRlY3JlYXNlLgogICB2
aXJ0dWFsIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBBbGxvY2F0ZUJpdHJhdGVzKAogICAgICAgdWlu
dDMyX3QgYXZhaWxhYmxlX2JpdHJhdGUsCi0gICAgICBjb25zdCBBcnJheVZpZXc8Y29uc3QgVHJh
Y2tDb25maWcqPiB0cmFja19jb25maWdzKSA9IDA7CisgICAgICBzdGQ6OnZlY3RvcjxCaXRyYXRl
QWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZz4gdHJhY2tfY29uZmlncykgPSAwOwogCiAg
IHZpcnR1YWwgfkJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3koKSA9IGRlZmF1bHQ7CiB9OworfSAg
Ly8gbmFtZXNwYWNlIHJ0YwogCituYW1lc3BhY2Ugd2VicnRjIHsKK3N0cnVjdCBBdWRpb1ByaW9y
aXR5Q29uZmlnIHsKKyAgRmllbGRUcmlhbE9wdGlvbmFsPERhdGFSYXRlPiBtaW5fcmF0ZTsKKyAg
RmllbGRUcmlhbE9wdGlvbmFsPERhdGFSYXRlPiBtYXhfcmF0ZTsKKyAgRmllbGRUcmlhbE9wdGlv
bmFsPERhdGFSYXRlPiB0YXJnZXRfcmF0ZTsKKyAgQXVkaW9Qcmlvcml0eUNvbmZpZygpOworICBB
dWRpb1ByaW9yaXR5Q29uZmlnKGNvbnN0IEF1ZGlvUHJpb3JpdHlDb25maWcmKTsKKyAgQXVkaW9Q
cmlvcml0eUNvbmZpZyYgb3BlcmF0b3I9KGNvbnN0IEF1ZGlvUHJpb3JpdHlDb25maWcmKSA9IGRl
ZmF1bHQ7CisgIH5BdWRpb1ByaW9yaXR5Q29uZmlnKCk7Cit9OworfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YworCituYW1lc3BhY2UgcnRjIHsKIC8vIFNpbXBsZSBhbGxvY2F0aW9uIHN0cmF0ZWd5IGdp
dmluZyBwcmlvcml0eSB0byBhdWRpbyB1bnRpbAogLy8gc3VmZmljaWVudF9hdWRpb19iaXRyYXRl
IGlzIHJlYWNoZWQuIEJpdHJhdGUgaXMgZGlzdHJpYnV0ZWQgZXZlbmx5IGJldHdlZW4KIC8vIHRo
ZSB0cmFja3MgYWZ0ZXIgc3VmZmljaWVudF9hdWRpb19iaXRyYXRlIGlzIHJlYWNoZWQuIFRoaXMg
aW1wbGVtZW50YXRpb24KQEAgLTkwLDkgKzEwNywxMSBAQCBjbGFzcyBBdWRpb1ByaW9yaXR5Qml0
cmF0ZUFsbG9jYXRpb25TdHJhdGVneQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBzdWZmaWNpZW50X2F1ZGlvX2JpdHJhdGUpOwogICBzdGQ6OnZlY3Rv
cjx1aW50MzJfdD4gQWxsb2NhdGVCaXRyYXRlcygKICAgICAgIHVpbnQzMl90IGF2YWlsYWJsZV9i
aXRyYXRlLAotICAgICAgY29uc3QgQXJyYXlWaWV3PGNvbnN0IFRyYWNrQ29uZmlnKj4gdHJhY2tf
Y29uZmlncykgb3ZlcnJpZGU7CisgICAgICBzdGQ6OnZlY3RvcjxCaXRyYXRlQWxsb2NhdGlvblN0
cmF0ZWd5OjpUcmFja0NvbmZpZz4gdHJhY2tfY29uZmlncykKKyAgICAgIG92ZXJyaWRlOwogCiAg
cHJpdmF0ZToKKyAgd2VicnRjOjpBdWRpb1ByaW9yaXR5Q29uZmlnIGNvbmZpZ187CiAgIHN0ZDo6
c3RyaW5nIGF1ZGlvX3RyYWNrX2lkXzsKICAgdWludDMyX3Qgc3VmZmljaWVudF9hdWRpb19iaXRy
YXRlXzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5X3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0
ZWFsbG9jYXRpb25zdHJhdGVneV91bml0dGVzdC5jYwppbmRleCBiZmM0MWY1NmU4MDEwMmFmZDg3
NTA5Njg5NWQwYTA2ZDNjZDJiYzM5Li5mNGM3ZWU3MDQzYjQ2NDZhNjlmMzFiODQ2YzEyZDY3M2Vk
Nzg0ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5X3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2JpdHJh
dGVhbGxvY2F0aW9uc3RyYXRlZ3lfdW5pdHRlc3QuY2MKQEAgLTQzLDExICs0Myw4IEBAIFRFU1Qo
Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneVRlc3QsIFNldEFsbEJpdHJhdGVzVG9NaW5pbXVtKSB7
CiAgICAgICBCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZyhtaW5fb3RoZXJf
Yml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
eF9vdGhlcl9iaXRyYXRlLCBmYWxzZSwgIiIpfTsKIAotICBzdGQ6OnZlY3Rvcjxjb25zdCBydGM6
OkJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRyYWNrQ29uZmlnKj4KLSAgICAgIHRyYWNrX2Nv
bmZpZ19wdHJzID0gTWFrZVRyYWNrQ29uZmlnUHRyc1ZlY3Rvcih0cmFja19jb25maWdzKTsKLQog
ICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gYWxsb2NhdGlvbnMgPQotICAgICAgQml0cmF0ZUFsbG9j
YXRpb25TdHJhdGVneTo6U2V0QWxsQml0cmF0ZXNUb01pbmltdW0odHJhY2tfY29uZmlnX3B0cnMp
OworICAgICAgQml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6U2V0QWxsQml0cmF0ZXNUb01pbmlt
dW0odHJhY2tfY29uZmlncyk7CiAgIEVYUEVDVF9FUShtaW5fYXVkaW9fYml0cmF0ZSwgYWxsb2Nh
dGlvbnNbMF0pOwogICBFWFBFQ1RfRVEobWluX3ZpZGVvX2JpdHJhdGUsIGFsbG9jYXRpb25zWzFd
KTsKICAgRVhQRUNUX0VRKG1pbl9vdGhlcl9iaXRyYXRlLCBhbGxvY2F0aW9uc1syXSk7CkBAIC03
NiwxMSArNzMsOCBAQCBURVNUKEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3lUZXN0LCBEaXN0cmli
dXRlQml0cmF0ZXNFdmVubHkpIHsKICAgICAgIEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRy
YWNrQ29uZmlnKG1pbl9vdGhlcl9iaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF4X290aGVyX2JpdHJhdGUsIGZhbHNlLCAiIil9OwogCi0gIHN0
ZDo6dmVjdG9yPGNvbnN0IHJ0Yzo6Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25m
aWcqPgotICAgICAgdHJhY2tfY29uZmlnX3B0cnMgPSBNYWtlVHJhY2tDb25maWdQdHJzVmVjdG9y
KHRyYWNrX2NvbmZpZ3MpOwotCiAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBhbGxvY2F0aW9ucyA9
Ci0gICAgICBCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpEaXN0cmlidXRlQml0cmF0ZXNFdmVu
bHkodHJhY2tfY29uZmlnX3B0cnMsCisgICAgICBCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpE
aXN0cmlidXRlQml0cmF0ZXNFdmVubHkodHJhY2tfY29uZmlncywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVfYml0cmF0
ZSk7CiAgIEVYUEVDVF9FUShtaW5fYXVkaW9fYml0cmF0ZSArIGV2ZW5fYml0cmF0ZV9pbmNyZWFz
ZSwgYWxsb2NhdGlvbnNbMF0pOwogICBFWFBFQ1RfRVEobWluX3ZpZGVvX2JpdHJhdGUgKyBldmVu
X2JpdHJhdGVfaW5jcmVhc2UsIGFsbG9jYXRpb25zWzFdKTsKQEAgLTEwOCwxMSArMTAyLDcgQEAg
c3RkOjp2ZWN0b3I8dWludDMyX3Q+IFJ1bkF1ZGlvUHJpb3JpdHlBbGxvY2F0aW9uKAogICAgICAg
Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWcobWluX290aGVyX2JpdHJhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfb3RoZXJf
Yml0cmF0ZSwgZmFsc2UsICIiKX07CiAKLSAgc3RkOjp2ZWN0b3I8Y29uc3QgcnRjOjpCaXRyYXRl
QWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZyo+Ci0gICAgICB0cmFja19jb25maWdfcHRy
cyA9IE1ha2VUcmFja0NvbmZpZ1B0cnNWZWN0b3IodHJhY2tfY29uZmlncyk7Ci0KLSAgcmV0dXJu
IGFsbG9jYXRpb25fc3RyYXRlZ3kuQWxsb2NhdGVCaXRyYXRlcyhhdmFpbGFibGVfYml0cmF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja19jb25m
aWdfcHRycyk7CisgIHJldHVybiBhbGxvY2F0aW9uX3N0cmF0ZWd5LkFsbG9jYXRlQml0cmF0ZXMo
YXZhaWxhYmxlX2JpdHJhdGUsIHRyYWNrX2NvbmZpZ3MpOwogfQogCiAvLyBUZXN0IHRoYXQgd2hl
biB0aGUgYXZhaWxhYmxlIGJpdHJhdGUgaXMgbGVzcyB0aGFuIHRoZSBzdW0gb2YgdGhlIG1pbmlt
dW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvYnVmZmVyLmgKaW5kZXggMjJmODkzNzJkZWJjMTZkNTVkNmM4YzRjMzdm
OGYwZGRhMzU2OTExNC4uZjkyOTFiOTllNWExMDMyNDRjN2Q2YzQ2Y2JhODI2NDFlOTZlYjE3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvYnVmZmVyLmgKQEAgLTE0OSwxMSArMTQ5LDEzIEBAIGNsYXNzIEJ1ZmZl
clQgewogICB9CiAKICAgQnVmZmVyVCYgb3BlcmF0b3I9KEJ1ZmZlclQmJiBidWYpIHsKLSAgICBS
VENfRENIRUNLKElzQ29uc2lzdGVudCgpKTsKICAgICBSVENfRENIRUNLKGJ1Zi5Jc0NvbnNpc3Rl
bnQoKSk7CisgICAgTWF5YmVaZXJvQ29tcGxldGVCdWZmZXIoKTsKICAgICBzaXplXyA9IGJ1Zi5z
aXplXzsKICAgICBjYXBhY2l0eV8gPSBidWYuY2FwYWNpdHlfOwotICAgIGRhdGFfID0gc3RkOjpt
b3ZlKGJ1Zi5kYXRhXyk7CisgICAgdXNpbmcgc3RkOjpzd2FwOworICAgIHN3YXAoZGF0YV8sIGJ1
Zi5kYXRhXyk7CisgICAgYnVmLmRhdGFfLnJlc2V0KCk7CiAgICAgYnVmLk9uTW92ZWRGcm9tKCk7
CiAgICAgcmV0dXJuICp0aGlzOwogICB9CkBAIC0zNzQsMTAgKzM3NiwxMCBAQCBjbGFzcyBCdWZm
ZXJUIHsKIAogICAvLyBaZXJvIHRoZSBjb21wbGV0ZSBidWZmZXIgaWYgdGVtcGxhdGUgYXJndW1l
bnQgIlplcm9PbkZyZWUiIGlzIHRydWUuCiAgIHZvaWQgTWF5YmVaZXJvQ29tcGxldGVCdWZmZXIo
KSB7Ci0gICAgaWYgKFplcm9PbkZyZWUgJiYgY2FwYWNpdHlfKSB7CisgICAgaWYgKFplcm9PbkZy
ZWUgJiYgY2FwYWNpdHlfID4gMCkgewogICAgICAgLy8gSXQgd291bGQgYmUgc3VmZmljaWVudCB0
byBvbmx5IHplcm8gInNpemVfIiBlbGVtZW50cywgYXMgYWxsIG90aGVyCiAgICAgICAvLyBtZXRo
b2RzIGFscmVhZHkgZW5zdXJlIHRoYXQgdGhlIHVudXNlZCBjYXBhY2l0eSBjb250YWlucyBubyBz
ZW5zaXRpdmUKLSAgICAgIC8vIGRhdGEgLSBidXQgYmV0dGVyIHNhZmUgdGhhbiBzb3JyeS4KKyAg
ICAgIC8vIGRhdGEtLS1idXQgYmV0dGVyIHNhZmUgdGhhbiBzb3JyeS4KICAgICAgIEV4cGxpY2l0
WmVyb01lbW9yeShkYXRhXy5nZXQoKSwgY2FwYWNpdHlfICogc2l6ZW9mKFQpKTsKICAgICB9CiAg
IH0KQEAgLTM4OSw3ICszOTEsNyBAQCBjbGFzcyBCdWZmZXJUIHsKICAgICBFeHBsaWNpdFplcm9N
ZW1vcnkoZGF0YV8uZ2V0KCkgKyBzaXplXywgY291bnQgKiBzaXplb2YoVCkpOwogICB9CiAKLSAg
Ly8gUHJlY29uZGl0aW9uIGZvciBhbGwgbWV0aG9kcyBleGNlcHQgQ2xlYXIgYW5kIHRoZSBkZXN0
cnVjdG9yLgorICAvLyBQcmVjb25kaXRpb24gZm9yIGFsbCBtZXRob2RzIGV4Y2VwdCBDbGVhciwg
b3BlcmF0b3I9IGFuZCB0aGUgZGVzdHJ1Y3Rvci4KICAgLy8gUG9zdGNvbmRpdGlvbiBmb3IgYWxs
IG1ldGhvZHMgZXhjZXB0IG1vdmUgY29uc3RydWN0aW9uIGFuZCBtb3ZlCiAgIC8vIGFzc2lnbm1l
bnQsIHdoaWNoIGxlYXZlIHRoZSBtb3ZlZC1mcm9tIG9iamVjdCBpbiBhIHBvc3NpYmx5IGluY29u
c2lzdGVudAogICAvLyBzdGF0ZS4KQEAgLTQwMCwxNSArNDAyLDE2IEBAIGNsYXNzIEJ1ZmZlclQg
ewogICAvLyBDYWxsZWQgd2hlbiAqdGhpcyBoYXMgYmVlbiBtb3ZlZCBmcm9tLiBDb25jZXB0dWFs
bHkgaXQncyBhIG5vLW9wLCBidXQgd2UKICAgLy8gY2FuIG11dGF0ZSB0aGUgc3RhdGUgc2xpZ2h0
bHkgdG8gaGVscCBzdWJzZXF1ZW50IHNhbml0eSBjaGVja3MgY2F0Y2ggYnVncy4KICAgdm9pZCBP
bk1vdmVkRnJvbSgpIHsKKyAgICBSVENfRENIRUNLKCFkYXRhXyk7ICAvLyBPdXIgaGVhcCBibG9j
ayBzaG91bGQgaGF2ZSBiZWVuIHN0b2xlbi4KICNpZiBSVENfRENIRUNLX0lTX09OCisgICAgLy8g
RW5zdXJlIHRoYXQgKnRoaXMgaXMgYWx3YXlzIGluY29uc2lzdGVudCwgdG8gcHJvdm9rZSBidWdz
LgorICAgIHNpemVfID0gMTsKKyAgICBjYXBhY2l0eV8gPSAwOworI2Vsc2UKICAgICAvLyBNYWtl
ICp0aGlzIGNvbnNpc3RlbnQgYW5kIGVtcHR5LiBTaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQg
YmV0dGVyIHNhZmUKICAgICAvLyB0aGFuIHNvcnJ5LgogICAgIHNpemVfID0gMDsKICAgICBjYXBh
Y2l0eV8gPSAwOwotI2Vsc2UKLSAgICAvLyBFbnN1cmUgdGhhdCAqdGhpcyBpcyBhbHdheXMgaW5j
b25zaXN0ZW50LCB0byBwcm92b2tlIGJ1Z3MuCi0gICAgc2l6ZV8gPSAxOwotICAgIGNhcGFjaXR5
XyA9IDA7CiAjZW5kaWYKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJfdW5pdHRl
c3QuY2MKaW5kZXggYWU5NzZmMTM5NDMyMmYxMWIxYTk0OTY0NjZkNzM4NWUyYmFjOTRhYS4uYjJm
NDdjMTZlY2JlM2YzZGY4ZDFmYzY4M2Y2ZGE4MGNhM2Y4ZDAyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnVmZmVyX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2J1ZmZlcl91bml0dGVzdC5jYwpAQCAtMTg1LDYgKzE4NSwxNyBAQCBURVNUKEJ1ZmZl
clRlc3QsIFRlc3RNb3ZlQXNzaWduKSB7CiAgIEVYUEVDVF9UUlVFKGJ1ZjEuZW1wdHkoKSk7CiB9
CiAKK1RFU1QoQnVmZmVyVGVzdCwgVGVzdE1vdmVBc3NpZ25TZWxmKSB7CisgIC8vIE1vdmUgc2Vs
Zi1hc3NpZ25tZW50IGlzbid0IHJlcXVpcmVkIHRvIHByb2R1Y2UgYSBtZWFuaW5nZnVsIHN0YXRl
LCBidXQKKyAgLy8gc2hvdWxkIG5vdCBsZWF2ZSB0aGUgb2JqZWN0IGluIGFuIGluY29uc2lzdGVu
dCBzdGF0ZS4gKFN1Y2ggaW5jb25zaXN0ZW50CisgIC8vIHN0YXRlIGNvdWxkIGJlIGNhdWdodCBi
eSB0aGUgRENIRUNLcyBhbmQvb3IgYnkgdGhlIGxlYWsgY2hlY2tlci4pIFdlIG5lZWQKKyAgLy8g
dG8gYmUgc25lYWt5IHdoZW4gdGVzdGluZyB0aGlzOyBpZiB3ZSdyZSBkb2luZyBhIHRvby1vYnZp
b3VzCisgIC8vIG1vdmUtYXNzaWduLXRvLXNlbGYsIGNsYW5nJ3MgLVdzZWxmLW1vdmUgdHJpZ2dl
cnMgYXQgY29tcGlsZSB0aW1lLgorICBCdWZmZXIgYnVmKGtUZXN0RGF0YSwgMywgNDApOworICBC
dWZmZXIqIGJ1Zl9wdHIgPSAmYnVmOworICBidWYgPSBzdGQ6Om1vdmUoKmJ1Zl9wdHIpOworfQor
CiBURVNUKEJ1ZmZlclRlc3QsIFRlc3RTd2FwKSB7CiAgIEJ1ZmZlciBidWYxKGtUZXN0RGF0YSwg
Myk7CiAgIEJ1ZmZlciBidWYyKGtUZXN0RGF0YSwgNiwgNDApOwpAQCAtNDM0LDYgKzQ0NSwxOSBA
QCBURVNUKEJ1ZmZlclRlc3QsIFRlc3RTdHJ1Y3QpIHsKICAgRVhQRUNUX0VRKGtPYnNpZGlhbiwg
YnVmWzJdLnN0b25lKTsKIH0KIAorVEVTVChCdWZmZXJUZXN0LCBEaWVPblVzZUFmdGVyTW92ZSkg
eworICBCdWZmZXIgYnVmKDE3KTsKKyAgQnVmZmVyIGJ1ZjIgPSBzdGQ6Om1vdmUoYnVmKTsKKyAg
RVhQRUNUX0VRKGJ1ZjIuc2l6ZSgpLCAxN3UpOworI2lmIFJUQ19EQ0hFQ0tfSVNfT04KKyNpZiBH
VEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKKyAgRVhQRUNU
X0RFQVRIKGJ1Zi5lbXB0eSgpLCAiIik7CisjZW5kaWYKKyNlbHNlCisgIEVYUEVDVF9UUlVFKGJ1
Zi5lbXB0eSgpKTsKKyNlbmRpZgorfQorCiBURVNUKFplcm9PbkZyZWVCdWZmZXJUZXN0LCBUZXN0
WmVyb09uU2V0RGF0YSkgewogICBaZXJvT25GcmVlQnVmZmVyPHVpbnQ4X3Q+IGJ1ZihrVGVzdERh
dGEsIDcpOwogICBjb25zdCB1aW50OF90KiBvbGRfZGF0YSA9IGJ1Zi5kYXRhKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9i
dWZmZXJxdWV1ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2J1ZmZlcnF1ZXVlLmNjCmluZGV4IDQ4ZmYyZTZkMzE3ZDc4MjA4YTZiMzMwZWZi
Mzk4YWRkNjRlM2RmN2MuLjc0ZjdhNTAyYzBiOTEwZTYxZjVhYWE4YmMxMDllNjMzNGI4YTkxOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2J1ZmZlcnF1ZXVlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlcnF1ZXVlLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAK
ICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXJxdWV1ZS5oIgogCisjaW5jbHVkZSA8c3RkaW50Lmg+
CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2Ug
cnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2J1ZmZlcnF1ZXVlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5oCmluZGV4IDk0YWIwY2E0YzllYjBj
ZjNiYjNmOTY0ZjdlNmNjNjhhMzllMWQ1ZDcuLjYzZjUxODI1MDlmNjIyMDRiZTAxMTE1Nzk4Yjkw
ZjFlMGE4ZTI1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlcnF1ZXVlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnVmZmVycXVldWUuaApAQCAtMTEsMTIg
KzExLDE0IEBACiAjaWZuZGVmIFJUQ19CQVNFX0JVRkZFUlFVRVVFX0hfCiAjZGVmaW5lIFJUQ19C
QVNFX0JVRkZFUlFVRVVFX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxkZXF1
ZT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25z
LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ieXRlYnVmZmVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnl0ZWJ1ZmZlci5jYwpp
bmRleCA5NGZjNmFjZjA4MDI3NDEyYTI1ZWQ3MzY3MzIwZjc2ZTIxZGRhZDEwLi5mOGNlMWEyOWVm
ZTE2Njg3YWM2NTRmZTlhZmNiMjVlZGZhYTMwOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ieXRlYnVmZmVyLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J5dGVi
dWZmZXIuY2MKQEAgLTEyLDggKzEyLDYgQEAKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogCi0jaW5j
bHVkZSA8YWxnb3JpdGhtPgotCiBuYW1lc3BhY2UgcnRjIHsKIAogQnl0ZUJ1ZmZlcldyaXRlcjo6
Qnl0ZUJ1ZmZlcldyaXRlcigpIDogQnl0ZUJ1ZmZlcldyaXRlclQoKSB7fQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnl0ZWJ1
ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvYnl0ZWJ1ZmZlci5oCmluZGV4IDllMDhmMDI1YTg0MjM3ZTk0NGExZmYzZTUzOGJhZjg5NzJk
Y2UyOTMuLjRkMjVjMjEwNTA3ZDczMTA1OWY4M2JkNTNhYmQ5NzM3YmU0ZDBmODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J5
dGVidWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9ieXRlYnVmZmVyLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgUlRDX0JB
U0VfQllURUJVRkZFUl9IXwogI2RlZmluZSBSVENfQkFTRV9CWVRFQlVGRkVSX0hfCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAK
ICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NhbmNlbGFibGVfcGVyaW9kaWNf
dGFza191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2NhbmNlbGFibGVfcGVyaW9kaWNfdGFza191bml0dGVzdC5jYwppbmRleCBm
ZTI3ZWE3ZDQ4YjY1NmVjNWU5OGI5ZWZhZjU2ZWZjMjY2OGI5OTQ3Li5iYWRkNjIzNDE1YWQ1NTMx
OWY3MmRkZmZmZmJmMWIzYmMyZTRiNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jYW5jZWxhYmxlX3BlcmlvZGljX3Rhc2tf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvY2FuY2VsYWJsZV9wZXJpb2RpY190YXNrX3VuaXR0ZXN0LmNjCkBAIC02OCw3
ICs2OCw3IEBAIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIENhbkNhbGxDYW5jZWxP
bkVtcHR5SGFuZGxlKSB7CiB9CiAKIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIENh
bmNlbFRhc2tCZWZvcmVJdFJ1bnMpIHsKLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7
CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgTW9ja0Nsb3N1cmUgbW9jazsKICAgRVhQRUNUX0NBTEwo
bW9jaywgQ2FsbCkuVGltZXMoMCk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIERlbGV0ZSkuV2lsbE9u
Y2UoSW52b2tlKFsmZG9uZV0geyBkb25lLlNldCgpOyB9KSk7CkBAIC04NCw3ICs4NCw3IEBAIFRF
U1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIENhbmNlbFRhc2tCZWZvcmVJdFJ1bnMpIHsK
IH0KIAogVEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgQ2FuY2VsRGVsYXllZFRhc2tC
ZWZvcmVJdFJ1bnMpIHsKLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6
RXZlbnQgZG9uZTsKICAgTW9ja0Nsb3N1cmUgbW9jazsKICAgRVhQRUNUX0NBTEwobW9jaywgQ2Fs
bCkuVGltZXMoMCk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIERlbGV0ZSkuV2lsbE9uY2UoSW52b2tl
KFsmZG9uZV0geyBkb25lLlNldCgpOyB9KSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgVEVTVChDYW5j
ZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgQ2FuY2VsRGVsYXllZFRhc2tCZWZvcmVJdFJ1bnMpIHsK
IH0KIAogVEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgQ2FuY2VsVGFza0FmdGVySXRS
dW5zKSB7Ci0gIHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRv
bmU7CiAgIE1vY2tDbG9zdXJlIG1vY2s7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIENhbGwpLldpbGxP
bmNlKFJldHVybigxMDApKTsKICAgRVhQRUNUX0NBTEwobW9jaywgRGVsZXRlKS5XaWxsT25jZShJ
bnZva2UoWyZkb25lXSB7IGRvbmUuU2V0KCk7IH0pKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBURVNU
KENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBDYW5jZWxUYXNrQWZ0ZXJJdFJ1bnMpIHsKIAog
VEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgWmVyb1JldHVyblZhbHVlUmVwb3N0c1Ro
ZVRhc2spIHsKICAgTmljZU1vY2s8TW9ja0Nsb3N1cmU+IGNsb3N1cmU7Ci0gIHJ0Yzo6RXZlbnQg
ZG9uZShmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIEVYUEVDVF9DQUxMKGNs
b3N1cmUsIENhbGwoKSkuV2lsbE9uY2UoUmV0dXJuKDApKS5XaWxsT25jZShJbnZva2UoWyZkb25l
XSB7CiAgICAgZG9uZS5TZXQoKTsKICAgICByZXR1cm4ga1RpbWVvdXRNczsKQEAgLTEzMCw3ICsx
MzAsNyBAQCBURVNUKENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBaZXJvUmV0dXJuVmFsdWVS
ZXBvc3RzVGhlVGFzaykgewogCiBURVNUKENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBTdGFy
dFBlcmlvZGljVGFzaykgewogICBNb2NrRnVuY3Rpb248aW50KCk+IGNsb3N1cmU7Ci0gIHJ0Yzo6
RXZlbnQgZG9uZShmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIEVYUEVDVF9D
QUxMKGNsb3N1cmUsIENhbGwoKSkKICAgICAgIC5XaWxsT25jZShSZXR1cm4oMjApKQogICAgICAg
LldpbGxPbmNlKFJldHVybigyMCkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgVEVTVChDYW5jZWxhYmxl
UGVyaW9kaWNUYXNrVGVzdCwgU3RhcnRQZXJpb2RpY1Rhc2spIHsKIAogLy8gVmFsaWRhdGVzIHBl
cmZlY3QgZm9yd2FyZGluZyBkb2Vzbid0IGtlZXAgcmVmZXJlbmNlIHRvIGRlbGV0ZWQgY29weS4K
IFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIENyZWF0ZVdpdGhDb3B5T2ZBQ2xvc3Vy
ZSkgewotICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25l
OwogICBNb2NrQ2xvc3VyZSBtb2NrOwogICBFWFBFQ1RfQ0FMTChtb2NrLCBDYWxsKS5XaWxsT25j
ZShJbnZva2UoWyZkb25lXSB7CiAgICAgZG9uZS5TZXQoKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBU
RVNUKENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBDcmVhdGVXaXRoQ29weU9mQUNsb3N1cmUp
IHsKIH0KIAogVEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgRGVsZXRpbmdIYW5kbGVE
b2VzbnRTdG9wVGhlVGFzaykgewotICBydGM6OkV2ZW50IHJ1bihmYWxzZSwgZmFsc2UpOworICBy
dGM6OkV2ZW50IHJ1bjsKICAgcnRjOjpUYXNrUXVldWUgdGFza19xdWV1ZSgicXVldWUiKTsKICAg
YXV0byB0YXNrID0gcnRjOjpDcmVhdGVDYW5jZWxhYmxlUGVyaW9kaWNUYXNrKChbJl0gewogICAg
IHJ1bi5TZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIuY2MK
aW5kZXggNmM0OGQ1MmYxNzE3MmVlOGM0Y2ZhZWZhZDNlOTA1MWNjYjQyMDkzMy4uOGY1MTI2YTI4
MjY4Y2YxOThhY2I0Y2RhOWZmNGFjNzQ5ODFlNzdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvY29weW9ud3JpdGVidWZmZXIuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmgiCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogbmFt
ZXNwYWNlIHJ0YyB7CiAKIENvcHlPbldyaXRlQnVmZmVyOjpDb3B5T25Xcml0ZUJ1ZmZlcigpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oCmluZGV4IDA1MTRlMmZl
NjYxMWEyNTk2NmZkNjMzZThmNjkyZjQ2MjNhMmY1Y2YuLmNjMTc0ZGZjN2M5NjllNzI4OTk1ZGUz
ZDM0ZGFhNGFjOGQyODMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY29weW9ud3JpdGVi
dWZmZXIuaApAQCAtMTEsMTIgKzExLDE1IEBACiAjaWZuZGVmIFJUQ19CQVNFX0NPUFlPTldSSVRF
QlVGRkVSX0hfCiAjZGVmaW5lIFJUQ19CQVNFX0NPUFlPTldSSVRFQlVGRkVSX0hfCiAKKyNpbmNs
dWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0cmluZz4K
KyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dXRp
bGl0eT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZf
cHRyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2NwdV90aW1lLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY3B1X3RpbWUuY2MKaW5kZXggZGU0YTZiZDY4NDRiMWVi
NDMyMmI0MTdkMTc1ZmEwZjE2NmM4ZWUyMy4uYWQ5MWVjYWNlOTczMTk1YzQ5NWJiMjI3OTE0MjU5
MjlkMzMzNjJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvY3B1X3RpbWUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY3B1X3RpbWUuY2MKQEAgLTY1LDYgKzY1LDkg
QEAgaW50NjRfdCBHZXRQcm9jZXNzQ3B1VGltZU5hbm9zKCkgewogICB9IGVsc2UgewogICAgIFJU
Q19MT0dfRVJSKExTX0VSUk9SKSA8PCAiR2V0UHJvY2Vzc1RpbWVzKCkgZmFpbGVkLiI7CiAgIH0K
KyNlbGlmIGRlZmluZWQoV0VCUlRDX0ZVQ0hTSUEpCisgIFJUQ19MT0dfRVJSKExTX0VSUk9SKSA8
PCAiR2V0UHJvY2Vzc0NwdVRpbWVOYW5vcygpIG5vdCBpbXBsZW1lbnRlZCI7CisgIHJldHVybiAw
OwogI2Vsc2UKICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KICAgc3RhdGljX2Fzc2VydCgKQEAg
LTEwNywxMCArMTEwLDEzIEBAIGludDY0X3QgR2V0VGhyZWFkQ3B1VGltZU5hbm9zKCkgewogICB9
IGVsc2UgewogICAgIFJUQ19MT0dfRVJSKExTX0VSUk9SKSA8PCAiR2V0VGhyZWFkVGltZXMoKSBm
YWlsZWQuIjsKICAgfQorI2VsaWYgZGVmaW5lZChXRUJSVENfRlVDSFNJQSkKKyAgUlRDX0xPR19F
UlIoTFNfRVJST1IpIDw8ICJHZXRUaHJlYWRDcHVUaW1lTmFub3MoKSBub3QgaW1wbGVtZW50ZWQi
OworICByZXR1cm4gMDsKICNlbHNlCiAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCiAgIHN0YXRp
Y19hc3NlcnQoCi0gICAgICBmYWxzZSwgIkdldFByb2Nlc3NDcHVUaW1lTmFub3MoKSBwbGF0Zm9y
bSBzdXBwb3J0IG5vdCB5ZXQgaW1wbGVtZW50ZWQuIik7CisgICAgICBmYWxzZSwgIkdldFRocmVh
ZENwdVRpbWVOYW5vcygpIHBsYXRmb3JtIHN1cHBvcnQgbm90IHlldCBpbXBsZW1lbnRlZC4iKTsK
ICNlbmRpZgogICByZXR1cm4gLTE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jcml0aWNhbHNl
Y3Rpb24uY2MKaW5kZXggZDhhNWI0OGMwNTEzOTAyNTg3YmEyMTk1NGY2MDg0N2M1MTZhMzk1YS4u
NGUwMGJlOTY4ZGU5MDJhZDJhZGZhN2VlNDEwMjBkZmViZjIxOWJhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY3JpdGljYWxz
ZWN0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAKKyNpbmNsdWRlIDx0aW1lLmg+CisKICNp
bmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Ny
aXRpY2Fsc2VjdGlvbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbl91bml0dGVzdC5jYwppbmRleCBk
YjRmOWU3NDUyZjU3YzY2MGM3ZDk1MzI0MWIzOGM5ZDIwZjA5ODA0Li42MDE2Zjg1Zjg5OGU1ZTQ4
ZWE2NTA1ZGRhNTljZThhNjU4N2JmMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jcml0aWNhbHNlY3Rpb25fdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvY3JpdGljYWxzZWN0aW9uX3VuaXR0ZXN0LmNjCkBAIC0zODksNyArMzg5LDcgQEAgY2xhc3Mg
UGVyZlRlc3RUaHJlYWQgewogLy8gVGhlIHRlc3QgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCB0byBh
dm9pZCB1bmVjZXNzYXJpbHkgbG9hZGluZyB0aGUgYm90cy4KIFRFU1QoQ3JpdGljYWxTZWN0aW9u
VGVzdCwgRElTQUJMRURfUGVyZm9ybWFuY2UpIHsKICAgUGVyZlRlc3RUaHJlYWQgdGhyZWFkc1s4
XTsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7CiAKICAgc3Rh
dGljIGNvbnN0IGludCBrVGhyZWFkUmVwZWF0cyA9IDEwMDAwMDAwOwogICBzdGF0aWMgY29uc3Qg
aW50IGtFeHBlY3RlZENvdW50ID0ga1RocmVhZFJlcGVhdHMgKiBhcnJheXNpemUodGhyZWFkcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9ldmVudC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2V2ZW50LmNjCmluZGV4IDZjOTYzOWI0ZmVjYzExMWE4MDdlZWFhMThhZWYw
M2JhNzE4MTZiYWEuLjQyYzIyYTI5Y2NiMDk2OGE4MzdkZWVlOWRiNmJkZGVjMWU0ZTBhYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2V2ZW50LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2V2ZW50LmNjCkBAIC0yNCw2ICsyNCw4IEBACiAKIG5hbWVzcGFjZSBydGMg
ewogCitFdmVudDo6RXZlbnQoKSA6IEV2ZW50KGZhbHNlLCBmYWxzZSkge30KKwogI2lmIGRlZmlu
ZWQoV0VCUlRDX1dJTikKIAogRXZlbnQ6OkV2ZW50KGJvb2wgbWFudWFsX3Jlc2V0LCBib29sIGlu
aXRpYWxseV9zaWduYWxlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50LmgKaW5kZXggN2U2MWM0YzhhNjg3
OGZkZWExM2ViNzAwYTM5YzAyNWNkZjFjYWE1Yi4uMmUxMTAwMjA2NmRhOTFmYzU5MTg0YWE5MGYx
NTZlMWY1MjVkYWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ldmVudC5oCkBAIC0xMSw3ICsxMSw2IEBACiAj
aWZuZGVmIFJUQ19CQVNFX0VWRU5UX0hfCiAjZGVmaW5lIFJUQ19CQVNFX0VWRU5UX0hfCiAKLSNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaWYgZGVmaW5lZChXRUJSVENf
V0lOKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbGlmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQpA
QCAtMjYsNyArMjUsMTAgQEAgY2xhc3MgRXZlbnQgewogIHB1YmxpYzoKICAgc3RhdGljIGNvbnN0
IGludCBrRm9yZXZlciA9IC0xOwogCisgIEV2ZW50KCk7CiAgIEV2ZW50KGJvb2wgbWFudWFsX3Jl
c2V0LCBib29sIGluaXRpYWxseV9zaWduYWxlZCk7CisgIEV2ZW50KGNvbnN0IEV2ZW50JikgPSBk
ZWxldGU7CisgIEV2ZW50JiBvcGVyYXRvcj0oY29uc3QgRXZlbnQmKSA9IGRlbGV0ZTsKICAgfkV2
ZW50KCk7CiAKICAgdm9pZCBTZXQoKTsKQEAgLTQ1LDggKzQ3LDYgQEAgY2xhc3MgRXZlbnQgewog
ICBjb25zdCBib29sIGlzX21hbnVhbF9yZXNldF87CiAgIGJvb2wgZXZlbnRfc3RhdHVzXzsKICNl
bmRpZgotCi0gIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoRXZlbnQpOwogfTsK
IAogLy8gVGhpcyBjbGFzcyBpcyBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENocm9t
aXVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvZXZlbnRfdHJhY2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnRfdHJhY2VyLmNjCmluZGV4IDMxZjQyNzFkMzFl
MmEzOWRiN2I4ODQxM2RjMTg2OGVhMzdjYjdmMmIuLmFmODhjOWRkZDRjMTAxY2Q4OWYxZGNiZjQ4
NmMwM2JmYjQ5ODJmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50X3RyYWNlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ldmVudF90cmFjZXIuY2MKQEAg
LTEwLDcgKzEwLDkgQEAKICNpbmNsdWRlICJydGNfYmFzZS9ldmVudF90cmFjZXIuaCIKIAogI2lu
Y2x1ZGUgPGludHR5cGVzLmg+Ci0KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRp
by5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2
ZWN0b3I+CiAKQEAgLTIwLDcgKzIyLDkgQEAKICNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9y
bV90aHJlYWQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZF90eXBlcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
cmVhZF9hbm5vdGF0aW9ucy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdHJh
Y2VfZXZlbnQuaCIKIApAQCAtODYsOCArOTAsNyBAQCBjbGFzcyBFdmVudExvZ2dlciBmaW5hbCB7
CiAgICAgICA6IGxvZ2dpbmdfdGhyZWFkXyhFdmVudFRyYWNpbmdUaHJlYWRGdW5jLAogICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICJFdmVudFRy
YWNpbmdUaHJlYWQiLAotICAgICAgICAgICAgICAgICAgICAgICAga0xvd1ByaW9yaXR5KSwKLSAg
ICAgICAgc2h1dGRvd25fZXZlbnRfKGZhbHNlLCBmYWxzZSkge30KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGtMb3dQcmlvcml0eSkge30KICAgfkV2ZW50TG9nZ2VyKCkgeyBSVENfRENIRUNLKHRo
cmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOyB9CiAKICAgdm9pZCBBZGRUcmFj
ZUV2ZW50KGNvbnN0IGNoYXIqIG5hbWUsCkBAIC0yODYsMTkgKzI4OSwxOSBAQCBjbGFzcyBFdmVu
dExvZ2dlciBmaW5hbCB7CiAgICAgICAgICAgfQogICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVDoKLSAgICAgICAgICBwcmludF9sZW5ndGggPSBzcHJp
bnRmbigmb3V0cHV0WzBdLCBrVHJhY2VBcmdCdWZmZXJMZW5ndGgsICIlbGx1IiwKKyAgICAgICAg
ICBwcmludF9sZW5ndGggPSBzbnByaW50Zigmb3V0cHV0WzBdLCBrVHJhY2VBcmdCdWZmZXJMZW5n
dGgsICIlbGx1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcudmFsdWUu
YXNfdWludCk7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVFJBQ0VfVkFMVUVfVFlQ
RV9JTlQ6Ci0gICAgICAgICAgcHJpbnRfbGVuZ3RoID0gc3ByaW50Zm4oJm91dHB1dFswXSwga1Ry
YWNlQXJnQnVmZmVyTGVuZ3RoLCAiJWxsZCIsCisgICAgICAgICAgcHJpbnRfbGVuZ3RoID0gc25w
cmludGYoJm91dHB1dFswXSwga1RyYWNlQXJnQnVmZmVyTGVuZ3RoLCAiJWxsZCIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLnZhbHVlLmFzX2ludCk7CiAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVFJBQ0VfVkFMVUVfVFlQRV9ET1VCTEU6Ci0gICAgICAgICAg
cHJpbnRfbGVuZ3RoID0gc3ByaW50Zm4oJm91dHB1dFswXSwga1RyYWNlQXJnQnVmZmVyTGVuZ3Ro
LCAiJWYiLAorICAgICAgICAgIHByaW50X2xlbmd0aCA9IHNucHJpbnRmKCZvdXRwdXRbMF0sIGtU
cmFjZUFyZ0J1ZmZlckxlbmd0aCwgIiVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmcudmFsdWUuYXNfZG91YmxlKTsKICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBUUkFDRV9WQUxVRV9UWVBFX1BPSU5URVI6Ci0gICAgICAgICAgcHJpbnRfbGVuZ3RoID0gc3By
aW50Zm4oJm91dHB1dFswXSwga1RyYWNlQXJnQnVmZmVyTGVuZ3RoLCAiXCIlcFwiIiwKKyAgICAg
ICAgICBwcmludF9sZW5ndGggPSBzbnByaW50Zigmb3V0cHV0WzBdLCBrVHJhY2VBcmdCdWZmZXJM
ZW5ndGgsICJcIiVwXCIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy52
YWx1ZS5hc19wb2ludGVyKTsKICAgICAgICAgICBicmVhazsKICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZXZlbnRfdW5pdHRlc3QuY2MKaW5kZXggMDUwNjE5ZTg0OTU0MWNhYzA3ZDA5MGVm
ZDdiZmMwZjNiNTBiOGQ0MC4uYTY1MTExYmM5MGY3ZjM4MzdlMzhkMjM3OGFkY2M0MGE4ZDg5NmI3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZXZlbnRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnRfdW5pdHRlc3QuY2MKQEAgLTMyLDcgKzMy
LDcgQEAgVEVTVChFdmVudFRlc3QsIE1hbnVhbFJlc2V0KSB7CiB9CiAKIFRFU1QoRXZlbnRUZXN0
LCBBdXRvUmVzZXQpIHsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZl
bnQ7CiAgIEFTU0VSVF9GQUxTRShldmVudC5XYWl0KDApKTsKIAogICBldmVudC5TZXQoKTsKQEAg
LTU5LDcgKzU5LDcgQEAgY2xhc3MgU2lnbmFsZXJUaHJlYWQgewogICAgICAgbWUtPnJlYWRlcl8t
PldhaXQoRXZlbnQ6OmtGb3JldmVyKTsKICAgICB9CiAgIH0KLSAgRXZlbnQgc3RvcF9ldmVudF97
ZmFsc2UsIGZhbHNlfTsKKyAgRXZlbnQgc3RvcF9ldmVudF87CiAgIEV2ZW50KiB3cml0ZXJfOwog
ICBFdmVudCogcmVhZGVyXzsKICAgUGxhdGZvcm1UaHJlYWQgdGhyZWFkXzsKQEAgLTY4LDcgKzY4
LDcgQEAgY2xhc3MgU2lnbmFsZXJUaHJlYWQgewogLy8gVGhlc2UgdGVzdHMgYXJlIGRpc2FibGVk
IGJ5IGRlZmF1bHQgYW5kIG9ubHkgaW50ZW5kZWQgdG8gYmUgcnVuIG1hbnVhbGx5LgogVEVTVChF
dmVudFRlc3QsIERJU0FCTEVEX1BlcmZvcm1hbmNlU2luZ2xlVGhyZWFkKSB7CiAgIHN0YXRpYyBj
b25zdCBpbnQga051bUl0ZXJhdGlvbnMgPSAxMDAwMDAwMDsKLSAgRXZlbnQgZXZlbnQoZmFsc2Us
IGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwga051bUl0ZXJh
dGlvbnM7ICsraSkgewogICAgIGV2ZW50LlNldCgpOwogICAgIGV2ZW50LldhaXQoMCk7CkBAIC03
Nyw4ICs3Nyw4IEBAIFRFU1QoRXZlbnRUZXN0LCBESVNBQkxFRF9QZXJmb3JtYW5jZVNpbmdsZVRo
cmVhZCkgewogCiBURVNUKEV2ZW50VGVzdCwgRElTQUJMRURfUGVyZm9ybWFuY2VNdWx0aVRocmVh
ZCkgewogICBzdGF0aWMgY29uc3QgaW50IGtOdW1JdGVyYXRpb25zID0gMTAwMDA7Ci0gIEV2ZW50
IHJlYWQoZmFsc2UsIGZhbHNlKTsKLSAgRXZlbnQgd3JpdGUoZmFsc2UsIGZhbHNlKTsKKyAgRXZl
bnQgcmVhZDsKKyAgRXZlbnQgd3JpdGU7CiAgIFNpZ25hbGVyVGhyZWFkIHRocmVhZDsKICAgdGhy
ZWFkLlN0YXJ0KCZyZWFkLCAmd3JpdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9CVUlMRC5nbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVy
aW1lbnRzL0JVSUxELmduCmluZGV4IGIxMGQwYzE1NDU5MjA2MjY3MWE5ZjJhYzlkOGE5MmY1MDM2
ODI2ZGEuLmQzNmE0M2U5NDY5MDU1ZWRjYzRkZjY5NWEzYWQxNTg4NGViZjczMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4
cGVyaW1lbnRzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL0JVSUxELmduCkBAIC0yOCwxMSArMjgsMTEg
QEAgcnRjX3N0YXRpY19saWJyYXJ5KCJmaWVsZF90cmlhbF9wYXJzZXIiKSB7CiAgICAgImZpZWxk
X3RyaWFsX3VuaXRzLmgiLAogICBdCiAgIGRlcHMgPSBbCi0gICAgIi4uLzpydGNfYmFzZV9hcHBy
b3ZlZCIsCiAgICAgIi4uLy4uL2FwaS91bml0czpkYXRhX3JhdGUiLAogICAgICIuLi8uLi9hcGkv
dW5pdHM6ZGF0YV9zaXplIiwKICAgICAiLi4vLi4vYXBpL3VuaXRzOnRpbWVfZGVsdGEiLAogICAg
ICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi8uLi9ydGNfYmFzZTpsb2dnaW5nIiwK
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBd
CiB9CkBAIC01NiwxMyArNTYsMzYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJxdWFsaXR5X3NjYWxp
bmdfZXhwZXJpbWVudCIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLi86cnRjX2Jhc2VfYXBw
cm92ZWQiLAotICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBpL3ZpZGVv
X2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZp
ZWxkX3RyaWFsIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0
aW9uYWwiLAogICBdCiB9CiAKK3J0Y19zdGF0aWNfbGlicmFyeSgibm9ybWFsaXplX3NpbXVsY2Fz
dF9zaXplX2V4cGVyaW1lbnQiKSB7CisgIHNvdXJjZXMgPSBbCisgICAgIm5vcm1hbGl6ZV9zaW11
bGNhc3Rfc2l6ZV9leHBlcmltZW50LmNjIiwKKyAgICAibm9ybWFsaXplX3NpbXVsY2FzdF9zaXpl
X2V4cGVyaW1lbnQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICBdCit9CisKK3J0
Y19zdGF0aWNfbGlicmFyeSgiY3B1X3NwZWVkX2V4cGVyaW1lbnQiKSB7CisgIHNvdXJjZXMgPSBb
CisgICAgImNwdV9zcGVlZF9leHBlcmltZW50LmNjIiwKKyAgICAiY3B1X3NwZWVkX2V4cGVyaW1l
bnQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAg
ICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICBdCit9CisKIHJ0Y19zdGF0aWNf
bGlicmFyeSgicnR0X211bHRfZXhwZXJpbWVudCIpIHsKICAgc291cmNlcyA9IFsKICAgICAicnR0
X211bHRfZXhwZXJpbWVudC5jYyIsCkBAIC03NCwyNiArOTcsNDQgQEAgcnRjX3N0YXRpY19saWJy
YXJ5KCJydHRfbXVsdF9leHBlcmltZW50IikgewogICBdCiB9CiAKK3J0Y19zdGF0aWNfbGlicmFy
eSgiaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQiKSB7CisgIHNvdXJjZXMgPSBbCisgICAg
ImppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjIiwKKyAgICAiaml0dGVyX3VwcGVyX2Jv
dW5kX2V4cGVyaW1lbnQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICBdCit9CisK
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICBydGNfc291cmNlX3NldCgiZXhwZXJpbWVudHNf
dW5pdHRlc3RzIikgewogICAgIHRlc3Rvbmx5ID0gdHJ1ZQogCiAgICAgc291cmNlcyA9IFsKICAg
ICAgICJjb25nZXN0aW9uX2NvbnRyb2xsZXJfZXhwZXJpbWVudF91bml0dGVzdC5jYyIsCisgICAg
ICAiY3B1X3NwZWVkX2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MiLAogICAgICAgImZpZWxkX3RyaWFs
X3BhcnNlcl91bml0dGVzdC5jYyIsCiAgICAgICAiZmllbGRfdHJpYWxfdW5pdHNfdW5pdHRlc3Qu
Y2MiLAorICAgICAgIm5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50X3VuaXR0ZXN0
LmNjIiwKICAgICAgICJxdWFsaXR5X3NjYWxpbmdfZXhwZXJpbWVudF91bml0dGVzdC5jYyIsCiAg
ICAgICAicnR0X211bHRfZXhwZXJpbWVudF91bml0dGVzdC5jYyIsCiAgICAgXQogICAgIGRlcHMg
PSBbCiAgICAgICAiOmNvbmdlc3Rpb25fY29udHJvbGxlcl9leHBlcmltZW50IiwKKyAgICAgICI6
Y3B1X3NwZWVkX2V4cGVyaW1lbnQiLAogICAgICAgIjpmaWVsZF90cmlhbF9wYXJzZXIiLAorICAg
ICAgIjpub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudCIsCiAgICAgICAiOnF1YWxp
dHlfc2NhbGluZ19leHBlcmltZW50IiwKICAgICAgICI6cnR0X211bHRfZXhwZXJpbWVudCIsCisg
ICAgICAiLi46Z3VuaXRfaGVscGVycyIsCiAgICAgICAiLi4vOnJ0Y19iYXNlX3Rlc3RzX21haW4i
LAogICAgICAgIi4uLzpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiLi4vLi4vc3lzdGVt
X3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAgICIuLi8uLi90ZXN0OmZpZWxkX3RyaWFsIiwK
KyAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgXQogICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9l
eHBlcmltZW50cy9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9PV05FUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM1NTg3MjI2Zjhk
YTIyNDU1ZTAxNGVkOTYxYTExMmNlMWZhOGUwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL09X
TkVSUwpAQCAtMCwwICsxLDggQEAKK3Blci1maWxlIGFscl9leHBlcmltZW50Kj1zcHJhbmdAd2Vi
cnRjLm9yZworcGVyLWZpbGUgY29uZ2VzdGlvbl9jb250cm9sbGVyX2V4cGVyaW1lbnQqPXNydGVA
d2VicnRjLm9yZworcGVyLWZpbGUgY3B1X3NwZWVkX2V4cGVyaW1lbnQqPWFzYXBlcnNzb25Ad2Vi
cnRjLm9yZworcGVyLWZpbGUgZmllbGRfdHJpYWwqPXNydGVAd2VicnRjLm9yZworcGVyLWZpbGUg
aml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQqPXNwcmFuZ0B3ZWJydGMub3JnCitwZXItZmls
ZSBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudCo9YXNhcGVyc3NvbkB3ZWJydGMu
b3JnCitwZXItZmlsZSBxdWFsaXR5X3NjYWxpbmdfZXhwZXJpbWVudCo9YXNhcGVyc3NvbkB3ZWJy
dGMub3JnCitwZXItZmlsZSBydHRfbXVsdF9leHBlcmltZW50Kj1taG9yb0B3ZWJydGMub3JnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2Fscl9leHBlcmltZW50
LmNjCmluZGV4IGRmZjVhY2VjYzhiNzU2NmEwOGMxNTY5ZWU3MGZmMTUwOGUyNjc0NDQuLjI1ZTk0
OGQ5OGEwZTc2ODRiYWNkMzk5ZGI2NjJhNjk4NWQ1N2QzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2Fs
cl9leHBlcmltZW50LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2Fscl9leHBlcmltZW50LmNjCkBAIC0xMCw5ICsx
MCwxMCBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQu
aCIKIAorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRl
IDxzdHJpbmc+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRl
L2ZpZWxkX3RyaWFsLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2Fscl9leHBlcmltZW50LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmlt
ZW50cy9hbHJfZXhwZXJpbWVudC5oCmluZGV4IDRkOWZkMDAxMzA0OTY1NTQyZmQ1NThkMTQ0MTI3
ZWEzMzc3ODQyZmUuLjg3NmJkMDI1MTczMGI2YTA0MGNjYTNhZTVmOTEwMzExMzVjZTk0NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2V4cGVyaW1lbnRzL2Fscl9leHBlcmltZW50LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1l
bnQuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBSVENfQkFTRV9FWFBFUklNRU5UU19BTFJf
RVhQRVJJTUVOVF9IXwogI2RlZmluZSBSVENfQkFTRV9FWFBFUklNRU5UU19BTFJfRVhQRVJJTUVO
VF9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlv
bmFsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVk
X2V4cGVyaW1lbnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9leHBlcmltZW50cy9jcHVfc3BlZWRfZXhwZXJpbWVudC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMzk1NDBjZjAzOTBmMWI5OTg5NGFjZDFlNGYwNGY0MTc2YzRmZDRmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
ZXhwZXJpbWVudHMvY3B1X3NwZWVkX2V4cGVyaW1lbnQuY2MKQEAgLTAsMCArMSw3MCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVl
ZF9leHBlcmltZW50LmgiCisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJp
YWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworY29uc3RleHByIGNoYXIg
a0ZpZWxkVHJpYWxbXSA9ICJXZWJSVEMtVlA4LUNwdVNwZWVkLUFybSI7Citjb25zdGV4cHIgaW50
IGtNaW5TZXR0aW5nID0gLTE2OworY29uc3RleHByIGludCBrTWF4U2V0dGluZyA9IC0xOworfSAg
Ly8gbmFtZXNwYWNlCisKK2Fic2w6Om9wdGlvbmFsPHN0ZDo6dmVjdG9yPENwdVNwZWVkRXhwZXJp
bWVudDo6Q29uZmlnPj4KK0NwdVNwZWVkRXhwZXJpbWVudDo6R2V0Q29uZmlncygpIHsKKyAgaWYg
KCF3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa0ZpZWxkVHJpYWwpKQorICAgIHJldHVy
biBhYnNsOjpudWxsb3B0OworCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGdyb3VwID0gd2VicnRjOjpm
aWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtGaWVsZFRyaWFsKTsKKyAgaWYgKGdyb3VwLmVtcHR5
KCkpCisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisKKyAgc3RkOjp2ZWN0b3I8Q29uZmlnPiBj
b25maWdzKDMpOworICBpZiAoc3NjYW5mKGdyb3VwLmNfc3RyKCksICJFbmFibGVkLSVkLCVkLCVk
LCVkLCVkLCVkIiwgJihjb25maWdzWzBdLnBpeGVscyksCisgICAgICAgICAgICAgJihjb25maWdz
WzBdLmNwdV9zcGVlZCksICYoY29uZmlnc1sxXS5waXhlbHMpLAorICAgICAgICAgICAgICYoY29u
Zmlnc1sxXS5jcHVfc3BlZWQpLCAmKGNvbmZpZ3NbMl0ucGl4ZWxzKSwKKyAgICAgICAgICAgICAm
KGNvbmZpZ3NbMl0uY3B1X3NwZWVkKSkgIT0gNikgeworICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIlRvbyBmZXcgcGFyYW1ldGVycyBwcm92aWRlZC4iOworICAgIHJldHVybiBhYnNsOjpudWxs
b3B0OworICB9CisKKyAgZm9yIChjb25zdCBhdXRvJiBjb25maWcgOiBjb25maWdzKSB7CisgICAg
aWYgKGNvbmZpZy5jcHVfc3BlZWQgPCBrTWluU2V0dGluZyB8fCBjb25maWcuY3B1X3NwZWVkID4g
a01heFNldHRpbmcpIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlVuc3VwcG9ydGVk
IGNwdSBzcGVlZCBzZXR0aW5nLCB2YWx1ZSBpZ25vcmVkLiI7CisgICAgICByZXR1cm4gYWJzbDo6
bnVsbG9wdDsKKyAgICB9CisgIH0KKworICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGNvbmZpZ3Mu
c2l6ZSgpOyArK2kpIHsKKyAgICBpZiAoY29uZmlnc1tpXS5waXhlbHMgPCBjb25maWdzW2kgLSAx
XS5waXhlbHMgfHwKKyAgICAgICAgY29uZmlnc1tpXS5jcHVfc3BlZWQgPiBjb25maWdzW2kgLSAx
XS5jcHVfc3BlZWQpIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkludmFsaWQgcGFy
YW1ldGVyIHZhbHVlIHByb3ZpZGVkLiI7CisgICAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAg
ICB9CisgIH0KKworICByZXR1cm4gYWJzbDo6b3B0aW9uYWw8c3RkOjp2ZWN0b3I8Q29uZmlnPj4o
Y29uZmlncyk7Cit9CisKK2ludCBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKGludCBwaXhl
bHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxD
b25maWc+JiBjb25maWdzKSB7CisgIGZvciAoY29uc3QgYXV0byYgY29uZmlnIDogY29uZmlncykg
eworICAgIGlmIChwaXhlbHMgPD0gY29uZmlnLnBpeGVscykKKyAgICAgIHJldHVybiBjb25maWcu
Y3B1X3NwZWVkOworICB9CisgIHJldHVybiBrTWluU2V0dGluZzsKK30KKworfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVkX2V4cGVyaW1lbnQuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1l
bnRzL2NwdV9zcGVlZF9leHBlcmltZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZjODM0MDk0MzAxNDFlNTcw
MWFlMjBiYTE0NGM3ZDY3MmNlOWQ5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVl
ZF9leHBlcmltZW50LmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lm
bmRlZiBSVENfQkFTRV9FWFBFUklNRU5UU19DUFVfU1BFRURfRVhQRVJJTUVOVF9IXworI2RlZmlu
ZSBSVENfQkFTRV9FWFBFUklNRU5UU19DUFVfU1BFRURfRVhQRVJJTUVOVF9IXworCisjaW5jbHVk
ZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorCituYW1lc3Bh
Y2Ugd2VicnRjIHsKKworY2xhc3MgQ3B1U3BlZWRFeHBlcmltZW50IHsKKyBwdWJsaWM6CisgIHN0
cnVjdCBDb25maWcgeworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb25maWcmIG8pIGNvbnN0
IHsKKyAgICAgIHJldHVybiBwaXhlbHMgPT0gby5waXhlbHMgJiYgY3B1X3NwZWVkID09IG8uY3B1
X3NwZWVkOworICAgIH0KKworICAgIGludCBwaXhlbHM7ICAgICAvLyBUaGUgdmlkZW8gZnJhbWUg
c2l6ZS4KKyAgICBpbnQgY3B1X3NwZWVkOyAgLy8gVGhlIHxjcHVfc3BlZWR8IHRvIGJlIHVzZWQg
aWYgdGhlIGZyYW1lIHNpemUgaXMgbGVzcworICAgICAgICAgICAgICAgICAgICAvLyB0aGFuIG9y
IGVxdWFsIHRvIHxwaXhlbHN8LgorICB9OworCisgIC8vIFJldHVybnMgdGhlIGNvbmZpZ3VyYXRp
b25zIGZyb20gZmllbGQgdHJpYWwgb24gc3VjY2Vzcy4KKyAgc3RhdGljIGFic2w6Om9wdGlvbmFs
PHN0ZDo6dmVjdG9yPENvbmZpZz4+IEdldENvbmZpZ3MoKTsKKworICAvLyBHZXRzIHRoZSBjcHUg
c3BlZWQgZnJvbSB0aGUgfGNvbmZpZ3N8IGJhc2VkIG9uIHxwaXhlbHN8LgorICBzdGF0aWMgaW50
IEdldFZhbHVlKGludCBwaXhlbHMsIGNvbnN0IHN0ZDo6dmVjdG9yPENvbmZpZz4mIGNvbmZpZ3Mp
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFJUQ19CQVNFX0VY
UEVSSU1FTlRTX0NQVV9TUEVFRF9FWFBFUklNRU5UX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9jcHVf
c3BlZWRfZXhwZXJpbWVudF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBlcmltZW50
X3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkYzc4MmMwYWRkYmQ2OTQ0MjFlM2JiYjU5Y2I0Nzhi
YjMyZWVjMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9jcHVfc3BlZWRfZXhwZXJpbWVudF91
bml0dGVzdC5jYwpAQCAtMCwwICsxLDg1IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVk
ZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVkX2V4cGVyaW1lbnQuaCIKKworI2luY2x1
ZGUgInJ0Y19iYXNlL2d1bml0LmgiCisjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgorI2lu
Y2x1ZGUgInRlc3QvZ21vY2suaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK1RFU1QoQ3B1U3Bl
ZWRFeHBlcmltZW50VGVzdCwgR2V0Q29uZmlnc0ZhaWxzSWZOb3RFbmFibGVkKSB7CisgIEVYUEVD
VF9GQUxTRShDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENvbmZpZ3MoKSk7Cit9CisKK1RFU1QoQ3B1
U3BlZWRFeHBlcmltZW50VGVzdCwgR2V0Q29uZmlnc0ZhaWxzRm9yVG9vRmV3UGFyYW1ldGVycykg
eworICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAg
ICJXZWJSVEMtVlA4LUNwdVNwZWVkLUFybS9FbmFibGVkLTEwMDAsLTEsMjAwMCwtMTAsMzAwMC8i
KTsKKyAgRVhQRUNUX0ZBTFNFKENwdVNwZWVkRXhwZXJpbWVudDo6R2V0Q29uZmlncygpKTsKK30K
KworVEVTVChDcHVTcGVlZEV4cGVyaW1lbnRUZXN0LCBHZXRDb25maWdzKSB7CisgIHdlYnJ0Yzo6
dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1WUDgt
Q3B1U3BlZWQtQXJtL0VuYWJsZWQtMTAwMCwtMSwyMDAwLC0xMCwzMDAwLC0xNi8iKTsKKworICBj
b25zdCBhYnNsOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxDcHVTcGVlZEV4cGVyaW1lbnQ6OkNvbmZp
Zz4+IGtDb25maWdzID0KKyAgICAgIENwdVNwZWVkRXhwZXJpbWVudDo6R2V0Q29uZmlncygpOwor
ICBBU1NFUlRfVFJVRShrQ29uZmlncyk7CisgIEVYUEVDVF9USEFUKCprQ29uZmlncywKKyAgICAg
ICAgICAgICAgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZShDcHVTcGVlZEV4cGVyaW1lbnQ6OkNvbmZp
Z3sxMDAwLCAtMX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3B1U3Bl
ZWRFeHBlcmltZW50OjpDb25maWd7MjAwMCwgLTEwfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDcHVTcGVlZEV4cGVyaW1lbnQ6OkNvbmZpZ3szMDAwLCAtMTZ9KSk7Cit9
CisKK1RFU1QoQ3B1U3BlZWRFeHBlcmltZW50VGVzdCwgR2V0VmFsdWUpIHsKKyAgd2VicnRjOjp0
ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisgICAgICAiV2ViUlRDLVZQOC1D
cHVTcGVlZC1Bcm0vRW5hYmxlZC0xMDAwLC01LDIwMDAsLTEwLDMwMDAsLTEyLyIpOworCisgIGNv
bnN0IGFic2w6Om9wdGlvbmFsPHN0ZDo6dmVjdG9yPENwdVNwZWVkRXhwZXJpbWVudDo6Q29uZmln
Pj4ga0NvbmZpZ3MgPQorICAgICAgQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRDb25maWdzKCk7Cisg
IEFTU0VSVF9UUlVFKGtDb25maWdzKTsKKyAgQVNTRVJUX0VRKDN1LCAoKmtDb25maWdzKS5zaXpl
KCkpOworICBFWFBFQ1RfRVEoLTUsIENwdVNwZWVkRXhwZXJpbWVudDo6R2V0VmFsdWUoMSwgKmtD
b25maWdzKSk7CisgIEVYUEVDVF9FUSgtNSwgQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRWYWx1ZSgx
MDAwLCAqa0NvbmZpZ3MpKTsKKyAgRVhQRUNUX0VRKC0xMCwgQ3B1U3BlZWRFeHBlcmltZW50OjpH
ZXRWYWx1ZSgxMDAwICsgMSwgKmtDb25maWdzKSk7CisgIEVYUEVDVF9FUSgtMTAsIENwdVNwZWVk
RXhwZXJpbWVudDo6R2V0VmFsdWUoMjAwMCwgKmtDb25maWdzKSk7CisgIEVYUEVDVF9FUSgtMTIs
IENwdVNwZWVkRXhwZXJpbWVudDo6R2V0VmFsdWUoMjAwMCArIDEsICprQ29uZmlncykpOworICBF
WFBFQ1RfRVEoLTEyLCBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKDMwMDAsICprQ29uZmln
cykpOworICBFWFBFQ1RfRVEoLTE2LCBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKDMwMDAg
KyAxLCAqa0NvbmZpZ3MpKTsKK30KKworVEVTVChDcHVTcGVlZEV4cGVyaW1lbnRUZXN0LCBHZXRD
b25maWdzRmFpbHNGb3JUb29TbWFsbFZhbHVlKSB7CisgIC8vIFN1cHBvcnRlZCByYW5nZTogWy0x
NiwgLTFdLgorICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygK
KyAgICAgICJXZWJSVEMtVlA4LUNwdVNwZWVkLUFybS9FbmFibGVkLTEwMDAsLTEsMjAwMCwtMTAs
MzAwMCwtMTcvIik7CisgIEVYUEVDVF9GQUxTRShDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENvbmZp
Z3MoKSk7Cit9CisKK1RFU1QoQ3B1U3BlZWRFeHBlcmltZW50VGVzdCwgR2V0Q29uZmlnc0ZhaWxz
Rm9yVG9vTGFyZ2VWYWx1ZSkgeworICAvLyBTdXBwb3J0ZWQgcmFuZ2U6IFstMTYsIC0xXS4KKyAg
d2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisgICAgICAiV2Vi
UlRDLVZQOC1DcHVTcGVlZC1Bcm0vRW5hYmxlZC0xMDAwLDAsMjAwMCwtMTAsMzAwMCwtMTYvIik7
CisgIEVYUEVDVF9GQUxTRShDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENvbmZpZ3MoKSk7Cit9CisK
K1RFU1QoQ3B1U3BlZWRFeHBlcmltZW50VGVzdCwgR2V0Q29uZmlnc0ZhaWxzSWZQaXhlbHNEZWNy
ZWFzaW5nKSB7CisgIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxz
KAorICAgICAgIldlYlJUQy1WUDgtQ3B1U3BlZWQtQXJtL0VuYWJsZWQtMTAwMCwtNSw5OTksLTEw
LDMwMDAsLTE2LyIpOworICBFWFBFQ1RfRkFMU0UoQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRDb25m
aWdzKCkpOworfQorCitURVNUKENwdVNwZWVkRXhwZXJpbWVudFRlc3QsIEdldENvbmZpZ3NGYWls
c0lmQ3B1U3BlZWRJbmNyZWFzaW5nKSB7CisgIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlh
bHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1WUDgtQ3B1U3BlZWQtQXJtL0VuYWJsZWQt
MTAwMCwtNSwyMDAwLC00LDMwMDAsLTE2LyIpOworICBFWFBFQ1RfRkFMU0UoQ3B1U3BlZWRFeHBl
cmltZW50OjpHZXRDb25maWdzKCkpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9w
YXJzZXIuY2MKaW5kZXggYTJkN2Y5N2JkZTFmNDY0M2Y3ZTVlZmRkNDFhMmEyNGFlZjI5ZmI5OC4u
OTM2NDg3Y2IwMTVlMDI2MmVmOTBhMjgwMmFjMjZkYWJmMzQ3MzUwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVu
dHMvZmllbGRfdHJpYWxfcGFyc2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlci5j
YwpAQCAtMTY5LDYgKzE2OSw5IEBAIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8
ZG91YmxlPjsKIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8aW50PjsKIHRlbXBs
YXRlIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8c3RkOjpzdHJpbmc+OwogCit0ZW1wbGF0ZSBj
bGFzcyBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8ZG91YmxlPjsKK3RlbXBsYXRlIGNsYXNzIEZpZWxk
VHJpYWxDb25zdHJhaW5lZDxpbnQ+OworCiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9u
YWw8ZG91YmxlPjsKIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxPcHRpb25hbDxpbnQ+OwogdGVt
cGxhdGUgY2xhc3MgRmllbGRUcmlhbE9wdGlvbmFsPGJvb2w+OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMv
ZmllbGRfdHJpYWxfcGFyc2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXIuaAppbmRleCAy
MmE4ODg5NzE3MGJjNTUwNzJmZDhkMWUzMWEwZGQ3ZjAzN2Q4ZmQxLi44YmRkOWI1ZDhlYmU4NjAx
YTQ0ZTZhMjJjOWE3NjhkOWJhZTZmZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9w
YXJzZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXIuaApAQCAtOTIsNiArOTIsNDMg
QEAgY2xhc3MgRmllbGRUcmlhbFBhcmFtZXRlciA6IHB1YmxpYyBGaWVsZFRyaWFsUGFyYW1ldGVy
SW50ZXJmYWNlIHsKICAgVCB2YWx1ZV87CiB9OwogCisvLyBUaGlzIGNsYXNzIHVzZXMgdGhlIFBh
cnNlVHlwZWRQYXJhbWV0ZXIgZnVuY3Rpb24gdG8gaW1wbGVtZW50IGEgcGFyYW1ldGVyCisvLyBp
bXBsZW1lbnRhdGlvbiB3aXRoIGFuIGVuZm9yY2VkIGRlZmF1bHQgdmFsdWUgYW5kIGEgcmFuZ2Ug
Y29uc3RyYWludC4gVmFsdWVzCisvLyBvdXRzaWRlIHRoZSBjb25maWd1cmVkIHJhbmdlIHdpbGwg
YmUgaWdub3JlZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRmllbGRUcmlhbENvbnN0
cmFpbmVkIDogcHVibGljIEZpZWxkVHJpYWxQYXJhbWV0ZXJJbnRlcmZhY2UgeworIHB1YmxpYzoK
KyAgRmllbGRUcmlhbENvbnN0cmFpbmVkKHN0ZDo6c3RyaW5nIGtleSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFQgZGVmYXVsdF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6
Om9wdGlvbmFsPFQ+IGxvd2VyX2xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
b3B0aW9uYWw8VD4gdXBwZXJfbGltaXQpCisgICAgICA6IEZpZWxkVHJpYWxQYXJhbWV0ZXJJbnRl
cmZhY2Uoa2V5KSwKKyAgICAgICAgdmFsdWVfKGRlZmF1bHRfdmFsdWUpLAorICAgICAgICBsb3dl
cl9saW1pdF8obG93ZXJfbGltaXQpLAorICAgICAgICB1cHBlcl9saW1pdF8odXBwZXJfbGltaXQp
IHt9CisgIFQgR2V0KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisgIG9wZXJhdG9yIFQoKSBj
b25zdCB7IHJldHVybiBHZXQoKTsgfQorICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBy
ZXR1cm4gJnZhbHVlXzsgfQorCisgcHJvdGVjdGVkOgorICBib29sIFBhcnNlKGFic2w6Om9wdGlv
bmFsPHN0ZDo6c3RyaW5nPiBzdHJfdmFsdWUpIG92ZXJyaWRlIHsKKyAgICBpZiAoc3RyX3ZhbHVl
KSB7CisgICAgICBhYnNsOjpvcHRpb25hbDxUPiB2YWx1ZSA9IFBhcnNlVHlwZWRQYXJhbWV0ZXI8
VD4oKnN0cl92YWx1ZSk7CisgICAgICBpZiAodmFsdWUgJiYgKCFsb3dlcl9saW1pdF8gfHwgKnZh
bHVlID49ICpsb3dlcl9saW1pdF8pICYmCisgICAgICAgICAgKCF1cHBlcl9saW1pdF8gfHwgKnZh
bHVlIDw9ICp1cHBlcl9saW1pdF8pKSB7CisgICAgICAgIHZhbHVlXyA9ICp2YWx1ZTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAgfQor
CisgcHJpdmF0ZToKKyAgVCB2YWx1ZV87CisgIGFic2w6Om9wdGlvbmFsPFQ+IGxvd2VyX2xpbWl0
XzsKKyAgYWJzbDo6b3B0aW9uYWw8VD4gdXBwZXJfbGltaXRfOworfTsKKwogY2xhc3MgQWJzdHJh
Y3RGaWVsZFRyaWFsRW51bSA6IHB1YmxpYyBGaWVsZFRyaWFsUGFyYW1ldGVySW50ZXJmYWNlIHsK
ICBwdWJsaWM6CiAgIEFic3RyYWN0RmllbGRUcmlhbEVudW0oc3RkOjpzdHJpbmcga2V5LApAQCAt
MTkxLDYgKzIyOCw5IEBAIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVy
PGludD47CiAvLyBVc2luZyB0aGUgZ2l2ZW4gdmFsdWUgYXMgaXMuCiBleHRlcm4gdGVtcGxhdGUg
Y2xhc3MgRmllbGRUcmlhbFBhcmFtZXRlcjxzdGQ6OnN0cmluZz47CiAKK2V4dGVybiB0ZW1wbGF0
ZSBjbGFzcyBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8ZG91YmxlPjsKK2V4dGVybiB0ZW1wbGF0ZSBj
bGFzcyBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8aW50PjsKKwogZXh0ZXJuIHRlbXBsYXRlIGNsYXNz
IEZpZWxkVHJpYWxPcHRpb25hbDxkb3VibGU+OwogZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxk
VHJpYWxPcHRpb25hbDxpbnQ+OwogZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxPcHRp
b25hbDxib29sPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlcl91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlcl91bml0dGVzdC5jYwppbmRleCBkZTk3N2Vj
OGJhODA5NzIyMDMwNDA4ZDY1OTdmNTdiYWMxNGVjYmRjLi4wZDA2N2Y1YTQ5MTM4YTc1Y2Q4Y2Rl
MTg3MjRlNjU3MmJjOWFkOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXJf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyX3VuaXR0ZXN0LmNjCkBA
IC05OSw2ICs5OSwxOSBAQCBURVNUKEZpZWxkVHJpYWxQYXJzZXJUZXN0LCBJZ25vcmVzSW52YWxp
ZCkgewogICBFWFBFQ1RfRVEoZXhwLnBpbmcuR2V0KCksIGZhbHNlKTsKICAgRVhQRUNUX0VRKGV4
cC5oYXNoLkdldCgpLCAiYTgwIik7CiB9CitURVNUKEZpZWxkVHJpYWxQYXJzZXJUZXN0LCBJZ25v
cmVzT3V0T2ZSYW5nZSkgeworICBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8ZG91YmxlPiBsb3coImxv
dyIsIDEwLCBhYnNsOjpudWxsb3B0LCAxMDApOworICBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8ZG91
YmxlPiBoaWdoKCJoaWdoIiwgMTAsIDUsIGFic2w6Om51bGxvcHQpOworICBQYXJzZUZpZWxkVHJp
YWwoeyZsb3csICZoaWdofSwgImxvdzoxMDAwLGhpZ2g6MCIpOworICBFWFBFQ1RfRVEobG93Lkdl
dCgpLCAxMCk7CisgIEVYUEVDVF9FUShoaWdoLkdldCgpLCAxMCk7CisgIFBhcnNlRmllbGRUcmlh
bCh7JmxvdywgJmhpZ2h9LCAibG93OmluZixoaWdoOm5hbiIpOworICBFWFBFQ1RfRVEobG93Lkdl
dCgpLCAxMCk7CisgIEVYUEVDVF9FUShoaWdoLkdldCgpLCAxMCk7CisgIFBhcnNlRmllbGRUcmlh
bCh7JmxvdywgJmhpZ2h9LCAibG93OjIwLGhpZ2g6MjAiKTsKKyAgRVhQRUNUX0VRKGxvdy5HZXQo
KSwgMjApOworICBFWFBFQ1RfRVEoaGlnaC5HZXQoKSwgMjApOworfQogVEVTVChGaWVsZFRyaWFs
UGFyc2VyVGVzdCwgUGFyc2VzT3B0aW9uYWxQYXJhbWV0ZXJzKSB7CiAgIEZpZWxkVHJpYWxPcHRp
b25hbDxpbnQ+IG1heF9jb3VudCgiYyIsIGFic2w6Om51bGxvcHQpOwogICBQYXJzZUZpZWxkVHJp
YWwoeyZtYXhfY291bnR9LCAiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF91bml0
cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzLmNjCmluZGV4IGY1Mzk3OGIyMTE1M2Q0ZmQ1
MDI0ZTFjOTk1NjRkNTdlYmY5MWFkZjcuLjUzMTFhM2E5NDFjNzgwYjllMDM1YzBmYjBiMzg3ODFj
NDM3YmEyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1l
bnRzL2ZpZWxkX3RyaWFsX3VuaXRzLmNjCkBAIC05LDYgKzksNyBAQAogICovCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfdW5pdHMuaCIKIAorI2luY2x1ZGUgPHN0
ZGlvLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmluZz4KIApAQCAtODYsNiAr
ODcsMTAgQEAgdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbFBhcmFtZXRlcjxEYXRhUmF0ZT47CiB0
ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPERhdGFTaXplPjsKIHRlbXBsYXRlIGNs
YXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPjsKIAordGVtcGxhdGUgY2xhc3MgRmll
bGRUcmlhbENvbnN0cmFpbmVkPERhdGFSYXRlPjsKK3RlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxD
b25zdHJhaW5lZDxEYXRhU2l6ZT47Cit0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsQ29uc3RyYWlu
ZWQ8VGltZURlbHRhPjsKKwogdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbE9wdGlvbmFsPERhdGFS
YXRlPjsKIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxPcHRpb25hbDxEYXRhU2l6ZT47CiB0ZW1w
bGF0ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9uYWw8VGltZURlbHRhPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1l
bnRzL2ZpZWxkX3RyaWFsX3VuaXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF91bml0cy5oCmluZGV4
IDkzMmM1Y2I0NTAwMWNmMDZlNTgyZTFiOWRjNjYwZmI5MzEyMDgwZGYuLmFmODhmNGE2YzAwZGYz
NTEwNmI5YzVjZGE0NjMzOTcwMTI1OWE2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFs
X3VuaXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfdW5pdHMuaApAQCAtMjEsNiArMjEsMTAg
QEAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8RGF0YVJhdGU+Owog
ZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8RGF0YVNpemU+OwogZXh0
ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPjsKIAorZXh0
ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxDb25zdHJhaW5lZDxEYXRhUmF0ZT47CitleHRl
cm4gdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbENvbnN0cmFpbmVkPERhdGFTaXplPjsKK2V4dGVy
biB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8VGltZURlbHRhPjsKKwogZXh0
ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxPcHRpb25hbDxEYXRhUmF0ZT47CiBleHRlcm4g
dGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbE9wdGlvbmFsPERhdGFTaXplPjsKIGV4dGVybiB0ZW1w
bGF0ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9uYWw8VGltZURlbHRhPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1l
bnRzL2ZpZWxkX3RyaWFsX3VuaXRzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfdW5p
dHNfdW5pdHRlc3QuY2MKaW5kZXggODA3NzFkOTI2YWJkMzdlN2M4MGZkZTkxODA0ZWZmMzU1ZDI3
NDBlOC4uNTcwMjJjMmYyM2Y0NmUzMGI4MjMxMzE3MmI4MzkyZTNiYTNhMjI2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhw
ZXJpbWVudHMvZmllbGRfdHJpYWxfdW5pdHNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRf
dHJpYWxfdW5pdHNfdW5pdHRlc3QuY2MKQEAgLTU4LDUgKzU4LDI1IEBAIFRFU1QoRmllbGRUcmlh
bFBhcnNlclVuaXRzVGVzdCwgUGFyc2VzT3RoZXJVbml0UGFyYW1ldGVycykgewogICBFWFBFQ1Rf
RVEoKmV4cC5tYXhfYnVmZmVyLkdldE9wdGlvbmFsKCksIERhdGFTaXplOjpieXRlcyg4KSk7CiAg
IEVYUEVDVF9FUShleHAucGVyaW9kLkdldCgpLCBUaW1lRGVsdGE6Om1zKDMwMCkpOwogfQorVEVT
VChGaWVsZFRyaWFsUGFyc2VyVW5pdHNUZXN0LCBJZ25vcmVzT3V0T2ZSYW5nZSkgeworICBGaWVs
ZFRyaWFsQ29uc3RyYWluZWQ8RGF0YVJhdGU+IHJhdGUoInIiLCBEYXRhUmF0ZTo6a2JwcygzMCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZTo6a2Jwcygx
MCksIERhdGFSYXRlOjprYnBzKDEwMCkpOworICBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8VGltZURl
bHRhPiBkZWx0YSgiZCIsIFRpbWVEZWx0YTo6bXMoMzApLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUaW1lRGVsdGE6Om1zKDEwKSwgVGltZURlbHRhOjptcygxMDAp
KTsKKyAgRmllbGRUcmlhbENvbnN0cmFpbmVkPERhdGFTaXplPiBzaXplKAorICAgICAgInMiLCBE
YXRhU2l6ZTo6Ynl0ZXMoMzApLCBEYXRhU2l6ZTo6Ynl0ZXMoMTApLCBEYXRhU2l6ZTo6Ynl0ZXMo
MTAwKSk7CisgIFBhcnNlRmllbGRUcmlhbCh7JnJhdGUsICZkZWx0YSwgJnNpemV9LCAicjowLGQ6
MCxzOjAiKTsKKyAgRVhQRUNUX0VRKHJhdGUtPmticHMoKSwgMzApOworICBFWFBFQ1RfRVEoZGVs
dGEtPm1zKCksIDMwKTsKKyAgRVhQRUNUX0VRKHNpemUtPmJ5dGVzKCksIDMwKTsKKyAgUGFyc2VG
aWVsZFRyaWFsKHsmcmF0ZSwgJmRlbHRhLCAmc2l6ZX0sICJyOjMwMCxkOjMwMCxzOjMwMCIpOwor
ICBFWFBFQ1RfRVEocmF0ZS0+a2JwcygpLCAzMCk7CisgIEVYUEVDVF9FUShkZWx0YS0+bXMoKSwg
MzApOworICBFWFBFQ1RfRVEoc2l6ZS0+Ynl0ZXMoKSwgMzApOworICBQYXJzZUZpZWxkVHJpYWwo
eyZyYXRlLCAmZGVsdGEsICZzaXplfSwgInI6NTAsZDo1MCxzOjUwIik7CisgIEVYUEVDVF9FUShy
YXRlLT5rYnBzKCksIDUwKTsKKyAgRVhQRUNUX0VRKGRlbHRhLT5tcygpLCA1MCk7CisgIEVYUEVD
VF9FUShzaXplLT5ieXRlcygpLCA1MCk7Cit9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2V4cGVyaW1lbnRzL2ppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMv
aml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNlOTIzMDE5YjNj
ZmQ4MmRjNjQ4YjNmZmE4OTM0ZGY0MDZmZGJmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2pp
dHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvaml0dGVyX3Vw
cGVyX2JvdW5kX2V4cGVyaW1lbnQuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRl
IDxzdHJpbmc+CisKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CisKK2NvbnN0IGNoYXIgSml0dGVyVXBwZXJCb3VuZEV4cGVyaW1lbnQ6OmtKaXR0ZXJVcHBlckJv
dW5kRXhwZXJpbWVudE5hbWVbXSA9CisgICAgIldlYlJUQy1KaXR0ZXJVcHBlckJvdW5kIjsKKwor
YWJzbDo6b3B0aW9uYWw8ZG91YmxlPiBKaXR0ZXJVcHBlckJvdW5kRXhwZXJpbWVudDo6R2V0VXBw
ZXJCb3VuZFNpZ21hcygpIHsKKyAgaWYgKCFmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtKaXR0ZXJV
cHBlckJvdW5kRXhwZXJpbWVudE5hbWUpKSB7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7Cisg
IH0KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZ3JvdXAgPQorICAgICAgd2VicnRjOjpmaWVsZF90cmlh
bDo6RmluZEZ1bGxOYW1lKGtKaXR0ZXJVcHBlckJvdW5kRXhwZXJpbWVudE5hbWUpOworCisgIGRv
dWJsZSB1cHBlcl9ib3VuZF9zaWdtYXM7CisgIGlmIChzc2NhbmYoZ3JvdXAuY19zdHIoKSwgIkVu
YWJsZWQtJWxmIiwgJnVwcGVyX2JvdW5kX3NpZ21hcykgIT0gMSkgeworICAgIFJUQ19MT0coTFNf
V0FSTklORykgPDwgIkludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgcHJvdmlkZWQuIjsKKyAg
ICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorCisgIGlmICh1cHBlcl9ib3VuZF9zaWdtYXMg
PCAwKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiSW52YWxpZCBqaXR0ZXIgdXBwZXIg
Ym91bmQgc2lnbWFzLCBtdXN0IGJlID49IDAuMDogIgorICAgICAgICAgICAgICAgICAgICAgICAg
PDwgdXBwZXJfYm91bmRfc2lnbWFzOworICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworICB9CisK
KyAgcmV0dXJuIHVwcGVyX2JvdW5kX3NpZ21hczsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZXhwZXJpbWVudHMvaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1l
bnRzL2ppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYyY2Q3OWVm
YTZjY2NmZDdhYzFhOTA0NGZmZDk3MDBlNzhmMjBiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRz
L2ppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfRVhQRVJJTUVOVFNfSklUVEVSX1VQ
UEVSX0JPVU5EX0VYUEVSSU1FTlRfSF8KKyNkZWZpbmUgUlRDX0JBU0VfRVhQRVJJTUVOVFNfSklU
VEVSX1VQUEVSX0JPVU5EX0VYUEVSSU1FTlRfSF8KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIEppdHRlclVwcGVyQm91bmRF
eHBlcmltZW50IHsKKyBwdWJsaWM6CisgIC8vIFJldHVybnMgbnVsbG9wdCBpZiBleHBlcmltZW50
IGlzIG5vdCBvbiwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIGNvbmZpZ3VyZWQKKyAgLy8gdXBwZXIg
Ym91bmQgZm9yIGZyYW1lIGRlbGF5IGRlbHRhIHVzZWQgaW4gaml0dGVyIGVzdGltYXRpb24sIGV4
cHJlc3NlZCBhcworICAvLyBudW1iZXIgb2Ygc3RhbmRhcmQgZGV2aWF0aW9ucyBvZiB0aGUgY3Vy
cmVudCBkZXZpYXRpb24gZnJvbSB0aGUgZXhwZWN0ZWQKKyAgLy8gZGVsYXkuCisgIHN0YXRpYyBh
YnNsOjpvcHRpb25hbDxkb3VibGU+IEdldFVwcGVyQm91bmRTaWdtYXMoKTsKKworICBzdGF0aWMg
Y29uc3QgY2hhciBrSml0dGVyVXBwZXJCb3VuZEV4cGVyaW1lbnROYW1lW107Cit9OworCit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfRVhQRVJJTUVOVFNfSklU
VEVSX1VQUEVSX0JPVU5EX0VYUEVSSU1FTlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6
ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVsY2Fz
dF9zaXplX2V4cGVyaW1lbnQuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNlNWY1N2Y4ZjA2NTJkMjgzZjJlZTdm
MzdkMzAxMjY3MGZkMGRjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9zaW11
bGNhc3Rfc2l6ZV9leHBlcmltZW50LmNjCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9ub3JtYWxpemVfc2ltdWxjYXN0
X3NpemVfZXhwZXJpbWVudC5oIgorCisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxk
X3RyaWFsLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHsKK2NvbnN0ZXhwciBj
aGFyIGtGaWVsZFRyaWFsW10gPSAiV2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2FzdFJlc29sdXRpb24i
OworY29uc3RleHByIGludCBrTWluU2V0dGluZyA9IDA7Citjb25zdGV4cHIgaW50IGtNYXhTZXR0
aW5nID0gNTsKK30gIC8vIG5hbWVzcGFjZQorCithYnNsOjpvcHRpb25hbDxpbnQ+IE5vcm1hbGl6
ZVNpbXVsY2FzdFNpemVFeHBlcmltZW50OjpHZXRCYXNlMkV4cG9uZW50KCkgeworICBpZiAoIXdl
YnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrRmllbGRUcmlhbCkpCisgICAgcmV0dXJuIGFi
c2w6Om51bGxvcHQ7CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZ3JvdXAgPSB3ZWJydGM6OmZpZWxk
X3RyaWFsOjpGaW5kRnVsbE5hbWUoa0ZpZWxkVHJpYWwpOworICBpZiAoZ3JvdXAuZW1wdHkoKSkK
KyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKworICBpbnQgZXhwb25lbnQ7CisgIGlmIChzc2Nh
bmYoZ3JvdXAuY19zdHIoKSwgIkVuYWJsZWQtJWQiLCAmZXhwb25lbnQpICE9IDEpIHsKKyAgICBS
VENfTE9HKExTX1dBUk5JTkcpIDw8ICJObyBwYXJhbWV0ZXIgcHJvdmlkZWQuIjsKKyAgICByZXR1
cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorCisgIGlmIChleHBvbmVudCA8IGtNaW5TZXR0aW5nIHx8
IGV4cG9uZW50ID4ga01heFNldHRpbmcpIHsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJV
bnN1cHBvcnRlZCBleHAgdmFsdWUgcHJvdmlkZWQsIHZhbHVlIGlnbm9yZWQuIjsKKyAgICByZXR1
cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorCisgIHJldHVybiBhYnNsOjpvcHRpb25hbDxpbnQ+KGV4
cG9uZW50KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMv
bm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9z
aW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIzNTgyMDJiMjcyYWRhNDE0
Y2M2ODc0YjM2MGEyNWM3ZmI1NjdjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6
ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmgKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqICBD
b3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworI2lmbmRlZiBSVENfQkFTRV9FWFBFUklNRU5UU19OT1JNQUxJWkVfU0lNVUxD
QVNUX1NJWkVfRVhQRVJJTUVOVF9IXworI2RlZmluZSBSVENfQkFTRV9FWFBFUklNRU5UU19OT1JN
QUxJWkVfU0lNVUxDQVNUX1NJWkVfRVhQRVJJTUVOVF9IXworCisjaW5jbHVkZSAiYWJzbC90eXBl
cy9vcHRpb25hbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIE5vcm1hbGl6ZVNpbXVs
Y2FzdFNpemVFeHBlcmltZW50IHsKKyBwdWJsaWM6CisgIC8vIFJldHVybnMgdGhlIGJhc2UgdHdv
IGV4cG9uZW50IGZyb20gZmllbGQgdHJpYWwuCisgIHN0YXRpYyBhYnNsOjpvcHRpb25hbDxpbnQ+
IEdldEJhc2UyRXhwb25lbnQoKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2Vu
ZGlmICAvLyBSVENfQkFTRV9FWFBFUklNRU5UU19OT1JNQUxJWkVfU0lNVUxDQVNUX1NJWkVfRVhQ
RVJJTUVOVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4
cGVyaW1lbnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9ub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhw
ZXJpbWVudF91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzdiODA5MTdmZTNjNjBlYjFlNjY5ODQ0
OGM0NGYzZTQwZThkZmNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVs
Y2FzdF9zaXplX2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKworI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9z
aW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmgiCisKKyNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5o
IgorI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisK
K1RFU1QoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnRUZXN0LCBHZXRFeHBvbmVudCkg
eworICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAg
ICJXZWJSVEMtTm9ybWFsaXplU2ltdWxjYXN0UmVzb2x1dGlvbi9FbmFibGVkLTIvIik7CisgIEVY
UEVDVF9FUSgyLCBOb3JtYWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVudDo6R2V0QmFzZTJFeHBv
bmVudCgpKTsKK30KKworVEVTVChOb3JtYWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVudFRlc3Qs
IEdldEV4cG9uZW50V2l0aFR3b1BhcmFtZXRlcnMpIHsKKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRG
aWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisgICAgICAiV2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2Fz
dFJlc29sdXRpb24vRW5hYmxlZC0zLTQvIik7CisgIEVYUEVDVF9FUSgzLCBOb3JtYWxpemVTaW11
bGNhc3RTaXplRXhwZXJpbWVudDo6R2V0QmFzZTJFeHBvbmVudCgpKTsKK30KKworVEVTVChOb3Jt
YWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVudFRlc3QsIEdldEV4cG9uZW50RmFpbHNJZk5vdEVu
YWJsZWQpIHsKKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMo
CisgICAgICAiV2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2FzdFJlc29sdXRpb24vRGlzYWJsZWQvIik7
CisgIEVYUEVDVF9GQUxTRShOb3JtYWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVudDo6R2V0QmFz
ZTJFeHBvbmVudCgpKTsKK30KKworVEVTVChOb3JtYWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVu
dFRlc3QsCisgICAgIEdldEV4cG9uZW50RmFpbHNGb3JJbnZhbGlkRmllbGRUcmlhbCkgeworICB3
ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJS
VEMtTm9ybWFsaXplU2ltdWxjYXN0UmVzb2x1dGlvbi9FbmFibGVkLWludmFsaWQvIik7CisgIEVY
UEVDVF9GQUxTRShOb3JtYWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVudDo6R2V0QmFzZTJFeHBv
bmVudCgpKTsKK30KKworVEVTVChOb3JtYWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVudFRlc3Qs
CisgICAgIEdldEV4cG9uZW50RmFpbHNGb3JOZWdhdGl2ZU91dE9mQm91bmRWYWx1ZSkgeworICAv
LyBTdXBwb3J0ZWQgcmFuZ2U6IFswLCA1XS4KKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRy
aWFscyBmaWVsZF90cmlhbHMoCisgICAgICAiV2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2FzdFJlc29s
dXRpb24vRW5hYmxlZC0tMS8iKTsKKyAgRVhQRUNUX0ZBTFNFKE5vcm1hbGl6ZVNpbXVsY2FzdFNp
emVFeHBlcmltZW50OjpHZXRCYXNlMkV4cG9uZW50KCkpOworfQorCitURVNUKE5vcm1hbGl6ZVNp
bXVsY2FzdFNpemVFeHBlcmltZW50VGVzdCwKKyAgICAgR2V0RXhwb25lbnRGYWlsc0ZvclBvc2l0
aXZlT3V0T2ZCb3VuZFZhbHVlKSB7CisgIC8vIFN1cHBvcnRlZCByYW5nZTogWzAsIDVdLgorICB3
ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJS
VEMtTm9ybWFsaXplU2ltdWxjYXN0UmVzb2x1dGlvbi9FbmFibGVkLTYvIik7CisgIEVYUEVDVF9G
QUxTRShOb3JtYWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVudDo6R2V0QmFzZTJFeHBvbmVudCgp
KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvcXVhbGl0
eV9zY2FsaW5nX2V4cGVyaW1lbnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL3F1YWxpdHlfc2NhbGluZ19leHBlcmltZW50
LmgKaW5kZXggODBhMjVlZjFlZWU1OGIxOTFhZGMwZjFiYjVhMDE1NTU5YjFlMjM1MS4uMTQ4MzNj
MDBiMTI3OTc4Y2I2YjY1ZTkyNGM4YzA0NDlhOWQzMjNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvcXVh
bGl0eV9zY2FsaW5nX2V4cGVyaW1lbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9xdWFsaXR5X3NjYWxpbmdfZXhw
ZXJpbWVudC5oCkBAIC0xMiw3ICsxMiw2IEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlv
bmFsLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCi0jaW5j
bHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiBjbGFzcyBRdWFsaXR5U2NhbGluZ0V4cGVyaW1lbnQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFr
ZV9tZG5zX3Jlc3BvbmRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvZmFrZV9tZG5zX3Jlc3BvbmRlci5oCmluZGV4IDMyZDY5YmE2ODM2YTdm
OWZjMzllNjk3NmY2ZTY2ZTI2YTM5ODc0ZDEuLjFlNjBhNWQ5ZGUyZDFjY2M0ZmRmMTU0YmY2YjMw
NTk4ZDViNjViYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2Zha2VfbWRuc19yZXNwb25kZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlX21kbnNfcmVzcG9u
ZGVyLmgKQEAgLTIxLDEwICsyMSwxMCBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3Mg
RmFrZU1EbnNSZXNwb25kZXIgOiBwdWJsaWMgTURuc1Jlc3BvbmRlckludGVyZmFjZSB7CitjbGFz
cyBGYWtlTWRuc1Jlc3BvbmRlciA6IHB1YmxpYyBNZG5zUmVzcG9uZGVySW50ZXJmYWNlIHsKICBw
dWJsaWM6Ci0gIEZha2VNRG5zUmVzcG9uZGVyKCkgPSBkZWZhdWx0OwotICB+RmFrZU1EbnNSZXNw
b25kZXIoKSA9IGRlZmF1bHQ7CisgIGV4cGxpY2l0IEZha2VNZG5zUmVzcG9uZGVyKHJ0Yzo6VGhy
ZWFkKiB0aHJlYWQpIDogdGhyZWFkXyh0aHJlYWQpIHt9CisgIH5GYWtlTWRuc1Jlc3BvbmRlcigp
ID0gZGVmYXVsdDsKIAogICB2b2lkIENyZWF0ZU5hbWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBB
ZGRyZXNzJiBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVDcmVhdGVkQ2Fs
bGJhY2sgY2FsbGJhY2spIG92ZXJyaWRlIHsKQEAgLTM1LDcgKzM1LDkgQEAgY2xhc3MgRmFrZU1E
bnNSZXNwb25kZXIgOiBwdWJsaWMgTURuc1Jlc3BvbmRlckludGVyZmFjZSB7CiAgICAgICBuYW1l
ID0gc3RkOjp0b19zdHJpbmcobmV4dF9hdmFpbGFibGVfaWRfKyspICsgIi5sb2NhbCI7CiAgICAg
ICBhZGRyX25hbWVfbWFwX1thZGRyXSA9IG5hbWU7CiAgICAgfQotICAgIGNhbGxiYWNrKGFkZHIs
IG5hbWUpOworICAgIGludm9rZXJfLkFzeW5jSW52b2tlPHZvaWQ+KAorICAgICAgICBSVENfRlJP
TV9IRVJFLCB0aHJlYWRfLAorICAgICAgICBbY2FsbGJhY2ssIGFkZHIsIG5hbWVdKCkgeyBjYWxs
YmFjayhhZGRyLCBuYW1lKTsgfSk7CiAgIH0KICAgdm9pZCBSZW1vdmVOYW1lRm9yQWRkcmVzcyhj
b25zdCBydGM6OklQQWRkcmVzcyYgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
YW1lUmVtb3ZlZENhbGxiYWNrIGNhbGxiYWNrKSBvdmVycmlkZSB7CkBAIC00MywxMiArNDUsMTYg
QEAgY2xhc3MgRmFrZU1EbnNSZXNwb25kZXIgOiBwdWJsaWMgTURuc1Jlc3BvbmRlckludGVyZmFj
ZSB7CiAgICAgaWYgKGl0ICE9IGFkZHJfbmFtZV9tYXBfLmVuZCgpKSB7CiAgICAgICBhZGRyX25h
bWVfbWFwXy5lcmFzZShpdCk7CiAgICAgfQotICAgIGNhbGxiYWNrKGl0ICE9IGFkZHJfbmFtZV9t
YXBfLmVuZCgpKTsKKyAgICBib29sIHJlc3VsdCA9IGl0ICE9IGFkZHJfbmFtZV9tYXBfLmVuZCgp
OworICAgIGludm9rZXJfLkFzeW5jSW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIHRocmVhZF8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrLCByZXN1bHRdKCkgeyBj
YWxsYmFjayhyZXN1bHQpOyB9KTsKICAgfQogCiAgcHJpdmF0ZToKICAgdWludDMyX3QgbmV4dF9h
dmFpbGFibGVfaWRfID0gMDsKICAgc3RkOjptYXA8cnRjOjpJUEFkZHJlc3MsIHN0ZDo6c3RyaW5n
PiBhZGRyX25hbWVfbWFwXzsKKyAgcnRjOjpUaHJlYWQqIHRocmVhZF87CisgIHJ0Yzo6QXN5bmNJ
bnZva2VyIGludm9rZXJfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFr
ZW5ldHdvcmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2Zha2VuZXR3b3JrLmgKaW5kZXggZDU0MjZhM2UyYzkwOTU1NDU2ZGYxN2MyZDNlNjZi
MjVjMTZlYjA3Ny4uY2I4OTBlYzU4M2RjODc2YmU2ZjRkNDRkMmViZGYwODAzYzA1YWI1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvZmFrZW5ldHdvcmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9mYWtlbmV0d29yay5oCkBAIC04MiwxNiArODIsMTcgQEAgY2xhc3Mg
RmFrZU5ldHdvcmtNYW5hZ2VyIDogcHVibGljIE5ldHdvcmtNYW5hZ2VyQmFzZSwgcHVibGljIE1l
c3NhZ2VIYW5kbGVyIHsKICAgLy8gTWVzc2FnZUhhbmRsZXIgaW50ZXJmYWNlLgogICB2aXJ0dWFs
IHZvaWQgT25NZXNzYWdlKE1lc3NhZ2UqIG1zZykgeyBEb1VwZGF0ZU5ldHdvcmtzKCk7IH0KIAot
ICB2b2lkIENyZWF0ZU1EbnNSZXNwb25kZXIoKSB7CisgIHZvaWQgQ3JlYXRlTWRuc1Jlc3BvbmRl
cigpIHsKICAgICBpZiAobWRuc19yZXNwb25kZXJfID09IG51bGxwdHIpIHsKLSAgICAgIG1kbnNf
cmVzcG9uZGVyXyA9IGFic2w6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6RmFrZU1EbnNSZXNwb25kZXI+
KCk7CisgICAgICBtZG5zX3Jlc3BvbmRlcl8gPQorICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PHdlYnJ0Yzo6RmFrZU1kbnNSZXNwb25kZXI+KHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCkpOwogICAg
IH0KICAgfQogCiAgIHVzaW5nIE5ldHdvcmtNYW5hZ2VyQmFzZTo6c2V0X2VudW1lcmF0aW9uX3Bl
cm1pc3Npb247CiAgIHVzaW5nIE5ldHdvcmtNYW5hZ2VyQmFzZTo6c2V0X2RlZmF1bHRfbG9jYWxf
YWRkcmVzc2VzOwogCi0gIHdlYnJ0Yzo6TURuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TURuc1Jl
c3BvbmRlcigpIGNvbnN0IG92ZXJyaWRlIHsKKyAgd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJm
YWNlKiBHZXRNZG5zUmVzcG9uZGVyKCkgY29uc3Qgb3ZlcnJpZGUgewogICAgIHJldHVybiBtZG5z
X3Jlc3BvbmRlcl8uZ2V0KCk7CiAgIH0KIApAQCAtMTMxLDcgKzEzMiw3IEBAIGNsYXNzIEZha2VO
ZXR3b3JrTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrTWFuYWdlckJhc2UsIHB1YmxpYyBNZXNzYWdl
SGFuZGxlciB7CiAgIElQQWRkcmVzcyBkZWZhdWx0X2xvY2FsX2lwdjRfYWRkcmVzc187CiAgIElQ
QWRkcmVzcyBkZWZhdWx0X2xvY2FsX2lwdjZfYWRkcmVzc187CiAKLSAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6RmFrZU1EbnNSZXNwb25kZXI+IG1kbnNfcmVzcG9uZGVyXzsKKyAgc3RkOjp1bmlx
dWVfcHRyPHdlYnJ0Yzo6RmFrZU1kbnNSZXNwb25kZXI+IG1kbnNfcmVzcG9uZGVyXzsKIH07CiAK
IH0gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zha2Vzc2xpZGVudGl0eS5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zha2Vzc2xpZGVudGl0
eS5jYwppbmRleCA4MGEzZTc4ODg3ODQ0MWVkMWRjYTY4OTc4NjNjM2RiOWIxMjEzNjJiLi42MmFj
OWRkMDIwN2Q4NTZhMDFiNTBlODdhNjJhYzFhMzA5YzljZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlc3NsaWRlbnRp
dHkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZmFrZXNzbGlkZW50aXR5LmNjCkBAIC0yOSw4ICsyOSw4IEBAIEZha2VTU0xDZXJ0aWZp
Y2F0ZTo6RmFrZVNTTENlcnRpZmljYXRlKGNvbnN0IEZha2VTU0xDZXJ0aWZpY2F0ZSYpID0gZGVm
YXVsdDsKIAogRmFrZVNTTENlcnRpZmljYXRlOjp+RmFrZVNTTENlcnRpZmljYXRlKCkgPSBkZWZh
dWx0OwogCi1GYWtlU1NMQ2VydGlmaWNhdGUqIEZha2VTU0xDZXJ0aWZpY2F0ZTo6R2V0UmVmZXJl
bmNlKCkgY29uc3QgewotICByZXR1cm4gbmV3IEZha2VTU0xDZXJ0aWZpY2F0ZSgqdGhpcyk7Citz
dGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IEZha2VTU0xDZXJ0aWZpY2F0ZTo6Q2xvbmUo
KSBjb25zdCB7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlU1NMQ2VydGlmaWNhdGU+
KCp0aGlzKTsKIH0KIAogc3RkOjpzdHJpbmcgRmFrZVNTTENlcnRpZmljYXRlOjpUb1BFTVN0cmlu
ZygpIGNvbnN0IHsKQEAgLTgzLDEwICs4MywxMCBAQCBGYWtlU1NMSWRlbnRpdHk6OkZha2VTU0xJ
ZGVudGl0eShjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHBlbV9zdHJpbmdzKSB7CiB9
CiAKIEZha2VTU0xJZGVudGl0eTo6RmFrZVNTTElkZW50aXR5KGNvbnN0IEZha2VTU0xDZXJ0aWZp
Y2F0ZSYgY2VydCkKLSAgICA6IGNlcnRfY2hhaW5fKGFic2w6Om1ha2VfdW5pcXVlPFNTTENlcnRD
aGFpbj4oJmNlcnQpKSB7fQorICAgIDogY2VydF9jaGFpbl8oYWJzbDo6bWFrZV91bmlxdWU8U1NM
Q2VydENoYWluPihjZXJ0LkNsb25lKCkpKSB7fQogCiBGYWtlU1NMSWRlbnRpdHk6OkZha2VTU0xJ
ZGVudGl0eShjb25zdCBGYWtlU1NMSWRlbnRpdHkmIG8pCi0gICAgOiBjZXJ0X2NoYWluXyhvLmNl
cnRfY2hhaW5fLT5VbmlxdWVDb3B5KCkpIHt9CisgICAgOiBjZXJ0X2NoYWluXyhvLmNlcnRfY2hh
aW5fLT5DbG9uZSgpKSB7fQogCiBGYWtlU1NMSWRlbnRpdHk6On5GYWtlU1NMSWRlbnRpdHkoKSA9
IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2Zha2Vzc2xpZGVudGl0eS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFrZXNzbGlkZW50aXR5LmgKaW5kZXgg
NDQ5NGE1MjRlZmFiOTA3OTE2NDYzZmZmYjBjNzE3ODYzNjk3NGQxZC4uYjE5Y2JmYmI0OTJjYTE2
ZTY2ZWMxMDc1YjY5ZmE1Zjk1NTg0ZWE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFrZXNzbGlkZW50aXR5LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFrZXNz
bGlkZW50aXR5LmgKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9zc2xpZGVudGl0eS5oIgogCiBuYW1lc3BhY2UgcnRjIHsKQEAgLTI4LDcg
KzI5LDcgQEAgY2xhc3MgRmFrZVNTTENlcnRpZmljYXRlIDogcHVibGljIFNTTENlcnRpZmljYXRl
IHsKICAgfkZha2VTU0xDZXJ0aWZpY2F0ZSgpIG92ZXJyaWRlOwogCiAgIC8vIFNTTENlcnRpZmlj
YXRlIGltcGxlbWVudGF0aW9uLgotICBGYWtlU1NMQ2VydGlmaWNhdGUqIEdldFJlZmVyZW5jZSgp
IGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IENsb25l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgIHN0ZDo6c3RyaW5nIFRvUEVNU3RyaW5nKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgIHZvaWQgVG9ERVIoQnVmZmVyKiBkZXJfYnVmZmVyKSBjb25zdCBvdmVycmlkZTsK
ICAgaW50NjRfdCBDZXJ0aWZpY2F0ZUV4cGlyYXRpb25UaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9maWxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZmlsZS5jYwppbmRleCA2MjAyNDExOWZjYzE3YTQ5YzVhN2QzMzFkYTQyZWY3ZWQy
MmY2NTA1Li5hNzkzNTAwNjQ2YWY2MjNkNjAzODk2YjIzNGExMGQzMTYyYTZiNjExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9m
aWxlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2ZpbGUuY2MKQEAgLTEwLDggKzEwLDYgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL2Zp
bGUuaCIKIAotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KIG5hbWVzcGFjZSBydGMgewogCiBGaWxlOjpG
aWxlKFBsYXRmb3JtRmlsZSBmaWxlKSA6IGZpbGVfKGZpbGUpIHt9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlLmgK
aW5kZXggNzVmZDkzZDEzMTAxZTI1ZmNiZGM3MjIxZGNmOWI5YTU2OGQzYWYzNC4uYmMwOTc0YWUy
YTBiYmY1ZjEwODQwZWQ1NWFhMWM5YTI5ZGQ5NmRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGUuaApAQCAt
MTEsOCArMTEsOCBAQAogI2lmbmRlZiBSVENfQkFTRV9GSUxFX0hfCiAjZGVmaW5lIFJUQ19CQVNF
X0ZJTEVfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgotCiAj
aW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZmlsZV9wb3NpeC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGVfcG9zaXguY2MKaW5kZXggYjBmZWM5ZjlmY2VhMDAxNGNj
NzZkZDMwZjA3NzA1ZjhhNDJhMTc5Zi4uNDkyMDE5MjgwYzUzNWFmNjEzMjdjNjUyZTQ5MTRlNzNm
YTk3MWRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvZmlsZV9wb3NpeC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlX3Bvc2l4LmNjCkBAIC04LDE3ICs4LDE2
IEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCiAgKi8KIAotI2luY2x1ZGUgInJ0Y19iYXNlL2ZpbGUuaCIKLQogI2luY2x1
ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgot
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgotCiAjaW5jbHVkZSA8bGltaXRzPgogCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZmlsZS5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2ZpbGVyb3RhdGluZ3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGVyb3RhdGluZ3N0cmVhbS5jYwppbmRleCBjOWE2NjNh
YWZmZjg2OWYzNzA2ZjFmZGRkZTM4NTAyYjRkODQwNTU5Li5iMWRjNWZmOTk4MTc4NTFjMWM5NTIx
YjRlMDg3YjAyYWJlNTA5MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0uY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0
aW5nc3RyZWFtLmNjCkBAIC0xMywxNyArMTMsMTU5IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxzdHJpbmc+Ci0KKyNpbmNsdWRlIDx1dGlsaXR5
PgorCisjaWYgZGVmaW5lZChXRUJSVENfV0lOKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgorI2Vsc2UKKyNpbmNsdWRlIDxkaXJlbnQuaD4K
KyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmICAvLyBX
RUJSVENfV0lOCisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9maWxldXRpbHMuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9wYXRodXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0
cmluZ19idWlsZGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiAvLyBOb3Rl
OiBXZSB1c2UgZnByaW50ZiBmb3IgbG9nZ2luZyBpbiB0aGUgd3JpdGUgcGF0aHMgb2YgdGhpcyBz
dHJlYW0gdG8gYXZvaWQKIC8vIGluZmluaXRlIGxvb3BzIHdoZW4gbG9nZ2luZy4KIAogbmFtZXNw
YWNlIHJ0YyB7CiAKK25hbWVzcGFjZSB7CisKK3N0ZDo6c3RyaW5nIEFkZFRyYWlsaW5nUGF0aERl
bGltaXRlcklmTmVlZGVkKHN0ZDo6c3RyaW5nIGRpcmVjdG9yeSk7CisKKy8vIHxkaXJ8IG11c3Qg
aGF2ZSBhIHRyYWlsaW5nIGRlbGltaXRlci4gfHByZWZpeHwgbXVzdCBub3QgaW5jbHVkZSB3aWxk
IGNhcmQKKy8vIGNoYXJhY3RlcnMuCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0RmlsZXNX
aXRoUHJlZml4KGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwcmVmaXgpOwor
Ym9vbCBEZWxldGVGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKTsKK2Jvb2wgTW92ZUZpbGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIG9sZF9maWxlLCBjb25zdCBzdGQ6OnN0cmluZyYgbmV3X2ZpbGUp
OworYm9vbCBJc0ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpOworYm9vbCBJc0ZvbGRlcihj
b25zdCBzdGQ6OnN0cmluZyYgZmlsZSk7CithYnNsOjpvcHRpb25hbDxzaXplX3Q+IEdldEZpbGVT
aXplKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKTsKKworI2lmIGRlZmluZWQoV0VCUlRDX1dJTikK
Kworc3RkOjpzdHJpbmcgQWRkVHJhaWxpbmdQYXRoRGVsaW1pdGVySWZOZWVkZWQoc3RkOjpzdHJp
bmcgZGlyZWN0b3J5KSB7CisgIGlmIChhYnNsOjpFbmRzV2l0aChkaXJlY3RvcnksICJcXCIpKSB7
CisgICAgcmV0dXJuIGRpcmVjdG9yeTsKKyAgfQorICByZXR1cm4gZGlyZWN0b3J5ICsgIlxcIjsK
K30KKworc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEZpbGVzV2l0aFByZWZpeChjb25zdCBz
dGQ6OnN0cmluZyYgZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcHJlZml4KSB7CisgIFJUQ19EQ0hFQ0soYWJz
bDo6RW5kc1dpdGgoZGlyZWN0b3J5LCAiXFwiKSk7CisgIFdJTjMyX0ZJTkRfREFUQSBkYXRhOwor
ICBIQU5ETEUgaGFuZGxlOworICBoYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGUoVG9VdGYxNihkaXJl
Y3RvcnkgKyBwcmVmaXggKyAnKicpLmNfc3RyKCksICZkYXRhKTsKKyAgaWYgKGhhbmRsZSA9PSBJ
TlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICByZXR1cm4ge307CisKKyAgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IGZpbGVfbGlzdDsKKyAgZG8geworICAgIGZpbGVfbGlzdC5lbXBsYWNlX2JhY2so
ZGlyZWN0b3J5ICsgVG9VdGY4KGRhdGEuY0ZpbGVOYW1lKSk7CisgIH0gd2hpbGUgKDo6RmluZE5l
eHRGaWxlKGhhbmRsZSwgJmRhdGEpID09IFRSVUUpOworCisgIDo6RmluZENsb3NlKGhhbmRsZSk7
CisgIHJldHVybiBmaWxlX2xpc3Q7Cit9CisKK2Jvb2wgRGVsZXRlRmlsZShjb25zdCBzdGQ6OnN0
cmluZyYgZmlsZSkgeworICByZXR1cm4gOjpEZWxldGVGaWxlKFRvVXRmMTYoZmlsZSkuY19zdHIo
KSkgIT0gMDsKK30KKworYm9vbCBNb3ZlRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgb2xkX2ZpbGUs
IGNvbnN0IHN0ZDo6c3RyaW5nJiBuZXdfZmlsZSkgeworICByZXR1cm4gOjpNb3ZlRmlsZShUb1V0
ZjE2KG9sZF9maWxlKS5jX3N0cigpLCBUb1V0ZjE2KG5ld19maWxlKS5jX3N0cigpKSAhPSAwOwor
fQorCitib29sIElzRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSkgeworICBXSU4zMl9GSUxF
X0FUVFJJQlVURV9EQVRBIGRhdGEgPSB7MH07CisgIGlmICgwID09IDo6R2V0RmlsZUF0dHJpYnV0
ZXNFeChUb1V0ZjE2KGZpbGUpLmNfc3RyKCksIEdldEZpbGVFeEluZm9TdGFuZGFyZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhKSkKKyAgICByZXR1cm4gZmFsc2U7Cisg
IHJldHVybiAoZGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZ
KSA9PSAwOworfQorCitib29sIElzRm9sZGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKSB7Cisg
IFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgZGF0YSA9IHswfTsKKyAgaWYgKDAgPT0gOjpHZXRG
aWxlQXR0cmlidXRlc0V4KFRvVXRmMTYoZmlsZSkuY19zdHIoKSwgR2V0RmlsZUV4SW5mb1N0YW5k
YXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGEpKQorICAgIHJldHVy
biBmYWxzZTsKKyAgcmV0dXJuIChkYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVU
RV9ESVJFQ1RPUlkpID09CisgICAgICAgICBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlk7Cit9CisK
K2Fic2w6Om9wdGlvbmFsPHNpemVfdD4gR2V0RmlsZVNpemUoY29uc3Qgc3RkOjpzdHJpbmcmIGZp
bGUpIHsKKyAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBkYXRhID0gezB9OworICBpZiAoOjpH
ZXRGaWxlQXR0cmlidXRlc0V4KFRvVXRmMTYoZmlsZSkuY19zdHIoKSwgR2V0RmlsZUV4SW5mb1N0
YW5kYXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhKSA9PSAwKQorICAgIHJl
dHVybiBhYnNsOjpudWxsb3B0OworICByZXR1cm4gZGF0YS5uRmlsZVNpemVMb3c7Cit9CisKKyNl
bHNlICAvLyBkZWZpbmVkKFdFQlJUQ19XSU4pCisKK3N0ZDo6c3RyaW5nIEFkZFRyYWlsaW5nUGF0
aERlbGltaXRlcklmTmVlZGVkKHN0ZDo6c3RyaW5nIGRpcmVjdG9yeSkgeworICBpZiAoYWJzbDo6
RW5kc1dpdGgoZGlyZWN0b3J5LCAiLyIpKSB7CisgICAgcmV0dXJuIGRpcmVjdG9yeTsKKyAgfQor
ICByZXR1cm4gZGlyZWN0b3J5ICsgIi8iOworfQorCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
R2V0RmlsZXNXaXRoUHJlZml4KGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXJlY3RvcnksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBw
cmVmaXgpIHsKKyAgUlRDX0RDSEVDSyhhYnNsOjpFbmRzV2l0aChkaXJlY3RvcnksICIvIikpOwor
ICBESVIqIGRpciA9IDo6b3BlbmRpcihkaXJlY3RvcnkuY19zdHIoKSk7CisgIGlmIChkaXIgPT0g
bnVsbHB0cikKKyAgICByZXR1cm4ge307CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBmaWxl
X2xpc3Q7CisgIGZvciAoc3RydWN0IGRpcmVudCogZGlyZW50ID0gOjpyZWFkZGlyKGRpcik7IGRp
cmVudDsKKyAgICAgICBkaXJlbnQgPSA6OnJlYWRkaXIoZGlyKSkgeworICAgIHN0ZDo6c3RyaW5n
IG5hbWUgPSBkaXJlbnQtPmRfbmFtZTsKKyAgICBpZiAobmFtZS5jb21wYXJlKDAsIHByZWZpeC5z
aXplKCksIHByZWZpeCkgPT0gMCkgeworICAgICAgZmlsZV9saXN0LmVtcGxhY2VfYmFjayhkaXJl
Y3RvcnkgKyBuYW1lKTsKKyAgICB9CisgIH0KKyAgOjpjbG9zZWRpcihkaXIpOworICByZXR1cm4g
ZmlsZV9saXN0OworfQorCitib29sIERlbGV0ZUZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUp
IHsKKyAgcmV0dXJuIDo6dW5saW5rKGZpbGUuY19zdHIoKSkgPT0gMDsKK30KKworYm9vbCBNb3Zl
RmlsZShjb25zdCBzdGQ6OnN0cmluZyYgb2xkX2ZpbGUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBuZXdf
ZmlsZSkgeworICByZXR1cm4gOjpyZW5hbWUob2xkX2ZpbGUuY19zdHIoKSwgbmV3X2ZpbGUuY19z
dHIoKSkgPT0gMDsKK30KKworYm9vbCBJc0ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpIHsK
KyAgc3RydWN0IHN0YXQgc3Q7CisgIGludCByZXMgPSA6OnN0YXQoZmlsZS5jX3N0cigpLCAmc3Qp
OworICAvLyBUcmVhdCBzeW1saW5rcywgbmFtZWQgcGlwZXMsIGV0Yy4gYWxsIGFzIGZpbGVzLgor
ICByZXR1cm4gcmVzID09IDAgJiYgIVNfSVNESVIoc3Quc3RfbW9kZSk7Cit9CisKK2Jvb2wgSXNG
b2xkZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpIHsKKyAgc3RydWN0IHN0YXQgc3Q7CisgIGlu
dCByZXMgPSA6OnN0YXQoZmlsZS5jX3N0cigpLCAmc3QpOworICByZXR1cm4gcmVzID09IDAgJiYg
U19JU0RJUihzdC5zdF9tb2RlKTsKK30KKworYWJzbDo6b3B0aW9uYWw8c2l6ZV90PiBHZXRGaWxl
U2l6ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSkgeworICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgaWYg
KDo6c3RhdChmaWxlLmNfc3RyKCksICZzdCkgIT0gMCkKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9w
dDsKKyAgcmV0dXJuIHN0LnN0X3NpemU7Cit9CisKKyNlbmRpZgorCit9ICAvLyBuYW1lc3BhY2UK
KwogRmlsZVJvdGF0aW5nU3RyZWFtOjpGaWxlUm90YXRpbmdTdHJlYW0oY29uc3Qgc3RkOjpzdHJp
bmcmIGRpcl9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIGZpbGVfcHJlZml4KQogICAgIDogRmlsZVJvdGF0aW5nU3RyZWFtKGRp
cl9wYXRoLCBmaWxlX3ByZWZpeCwgMCwgMCwga1JlYWQpIHt9CkBAIC00Niw3ICsxODgsNyBAQCBG
aWxlUm90YXRpbmdTdHJlYW06OkZpbGVSb3RhdGluZ1N0cmVhbShjb25zdCBzdGQ6OnN0cmluZyYg
ZGlyX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bWF4X2ZpbGVfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBudW1fZmlsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
b2RlIG1vZGUpCi0gICAgOiBkaXJfcGF0aF8oZGlyX3BhdGgpLAorICAgIDogZGlyX3BhdGhfKEFk
ZFRyYWlsaW5nUGF0aERlbGltaXRlcklmTmVlZGVkKGRpcl9wYXRoKSksCiAgICAgICBmaWxlX3By
ZWZpeF8oZmlsZV9wcmVmaXgpLAogICAgICAgbW9kZV8obW9kZSksCiAgICAgICBmaWxlX3N0cmVh
bV8obnVsbHB0ciksCkBAIC01NSw3ICsxOTcsNyBAQCBGaWxlUm90YXRpbmdTdHJlYW06OkZpbGVS
b3RhdGluZ1N0cmVhbShjb25zdCBzdGQ6OnN0cmluZyYgZGlyX3BhdGgsCiAgICAgICByb3RhdGlv
bl9pbmRleF8oMCksCiAgICAgICBjdXJyZW50X2J5dGVzX3dyaXR0ZW5fKDApLAogICAgICAgZGlz
YWJsZV9idWZmZXJpbmdfKGZhbHNlKSB7Ci0gIFJUQ19EQ0hFQ0soRmlsZXN5c3RlbTo6SXNGb2xk
ZXIoZGlyX3BhdGgpKTsKKyAgUlRDX0RDSEVDSyhJc0ZvbGRlcihkaXJfcGF0aCkpOwogICBzd2l0
Y2ggKG1vZGUpIHsKICAgICBjYXNlIGtXcml0ZTogewogICAgICAgZmlsZV9uYW1lc18uY2xlYXIo
KTsKQEAgLTY2LDcgKzIwOCw3IEBAIEZpbGVSb3RhdGluZ1N0cmVhbTo6RmlsZVJvdGF0aW5nU3Ry
ZWFtKGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXJfcGF0aCwKICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIGtSZWFkOiB7Ci0gICAgICBmaWxlX25hbWVzXyA9IEdldEZpbGVzV2l0aFByZWZpeCgp
OworICAgICAgZmlsZV9uYW1lc18gPSBHZXRGaWxlc1dpdGhQcmVmaXgoZGlyX3BhdGhfLCBmaWxl
X3ByZWZpeF8pOwogICAgICAgc3RkOjpzb3J0KGZpbGVfbmFtZXNfLmJlZ2luKCksIGZpbGVfbmFt
ZXNfLmVuZCgpKTsKICAgICAgIGlmIChmaWxlX25hbWVzXy5zaXplKCkgPiAwKSB7CiAgICAgICAg
IC8vIHxmaWxlX25hbWVzX3wgaXMgc29ydGVkIG5ld2VzdCBmaXJzdCwgc28gcmVhZCBmcm9tIHRo
ZSBlbmQuCkBAIC0xODcsMTEgKzMyOSw3IEBAIGJvb2wgRmlsZVJvdGF0aW5nU3RyZWFtOjpHZXRT
aXplKHNpemVfdCogc2l6ZSkgY29uc3QgewogICAqc2l6ZSA9IDA7CiAgIHNpemVfdCB0b3RhbF9z
aXplID0gMDsKICAgZm9yIChhdXRvIGZpbGVfbmFtZSA6IGZpbGVfbmFtZXNfKSB7Ci0gICAgUGF0
aG5hbWUgcGF0aG5hbWUoZmlsZV9uYW1lKTsKLSAgICBzaXplX3QgZmlsZV9zaXplID0gMDsKLSAg
ICBpZiAoRmlsZXN5c3RlbTo6R2V0RmlsZVNpemUoZmlsZV9uYW1lLCAmZmlsZV9zaXplKSkgewot
ICAgICAgdG90YWxfc2l6ZSArPSBmaWxlX3NpemU7Ci0gICAgfQorICAgIHRvdGFsX3NpemUgKz0g
R2V0RmlsZVNpemUoZmlsZV9uYW1lKS52YWx1ZV9vcigwKTsKICAgfQogICAqc2l6ZSA9IHRvdGFs
X3NpemU7CiAgIHJldHVybiB0cnVlOwpAQCAtMjA5LDkgKzM0NywxMCBAQCBib29sIEZpbGVSb3Rh
dGluZ1N0cmVhbTo6T3BlbigpIHsKICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2Uga1dyaXRl
OiB7CiAgICAgICAvLyBEZWxldGUgZXhpc3RpbmcgZmlsZXMgd2hlbiBvcGVuaW5nIGZvciB3cml0
ZS4KLSAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBtYXRjaGluZ19maWxlcyA9IEdldEZp
bGVzV2l0aFByZWZpeCgpOwotICAgICAgZm9yIChhdXRvIG1hdGNoaW5nX2ZpbGUgOiBtYXRjaGlu
Z19maWxlcykgewotICAgICAgICBpZiAoIUZpbGVzeXN0ZW06OkRlbGV0ZUZpbGUobWF0Y2hpbmdf
ZmlsZSkpIHsKKyAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBtYXRjaGluZ19maWxlcyA9
CisgICAgICAgICAgR2V0RmlsZXNXaXRoUHJlZml4KGRpcl9wYXRoXywgZmlsZV9wcmVmaXhfKTsK
KyAgICAgIGZvciAoY29uc3QgYXV0byYgbWF0Y2hpbmdfZmlsZSA6IG1hdGNoaW5nX2ZpbGVzKSB7
CisgICAgICAgIGlmICghRGVsZXRlRmlsZShtYXRjaGluZ19maWxlKSkgewogICAgICAgICAgIHN0
ZDo6ZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZGVsZXRlOiAlc1xuIiwgbWF0Y2hpbmdfZmls
ZS5jX3N0cigpKTsKICAgICAgICAgfQogICAgICAgfQpAQCAtMjgyLDE2ICs0MjEsMTYgQEAgdm9p
ZCBGaWxlUm90YXRpbmdTdHJlYW06OlJvdGF0ZUZpbGVzKCkgewogICAvLyBTZWUgaGVhZGVyIGZp
bGUgY29tbWVudHMgZm9yIGV4YW1wbGUuCiAgIFJUQ19EQ0hFQ0tfTFQocm90YXRpb25faW5kZXhf
LCBmaWxlX25hbWVzXy5zaXplKCkpOwogICBzdGQ6OnN0cmluZyBmaWxlX3RvX2RlbGV0ZSA9IGZp
bGVfbmFtZXNfW3JvdGF0aW9uX2luZGV4X107Ci0gIGlmIChGaWxlc3lzdGVtOjpJc0ZpbGUoZmls
ZV90b19kZWxldGUpKSB7Ci0gICAgaWYgKCFGaWxlc3lzdGVtOjpEZWxldGVGaWxlKGZpbGVfdG9f
ZGVsZXRlKSkgeworICBpZiAoSXNGaWxlKGZpbGVfdG9fZGVsZXRlKSkgeworICAgIGlmICghRGVs
ZXRlRmlsZShmaWxlX3RvX2RlbGV0ZSkpIHsKICAgICAgIHN0ZDo6ZnByaW50ZihzdGRlcnIsICJG
YWlsZWQgdG8gZGVsZXRlOiAlc1xuIiwgZmlsZV90b19kZWxldGUuY19zdHIoKSk7CiAgICAgfQog
ICB9CiAgIGZvciAoYXV0byBpID0gcm90YXRpb25faW5kZXhfOyBpID4gMDsgLS1pKSB7CiAgICAg
c3RkOjpzdHJpbmcgcm90YXRlZF9uYW1lID0gZmlsZV9uYW1lc19baV07CiAgICAgc3RkOjpzdHJp
bmcgdW5yb3RhdGVkX25hbWUgPSBmaWxlX25hbWVzX1tpIC0gMV07Ci0gICAgaWYgKEZpbGVzeXN0
ZW06OklzRmlsZSh1bnJvdGF0ZWRfbmFtZSkpIHsKLSAgICAgIGlmICghRmlsZXN5c3RlbTo6TW92
ZUZpbGUodW5yb3RhdGVkX25hbWUsIHJvdGF0ZWRfbmFtZSkpIHsKKyAgICBpZiAoSXNGaWxlKHVu
cm90YXRlZF9uYW1lKSkgeworICAgICAgaWYgKCFNb3ZlRmlsZSh1bnJvdGF0ZWRfbmFtZSwgcm90
YXRlZF9uYW1lKSkgewogICAgICAgICBzdGQ6OmZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIG1v
dmU6ICVzIHRvICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgdW5yb3RhdGVkX25hbWUuY19z
dHIoKSwgcm90YXRlZF9uYW1lLmNfc3RyKCkpOwogICAgICAgfQpAQCAtMzAyLDI2ICs0NDEsNiBA
QCB2b2lkIEZpbGVSb3RhdGluZ1N0cmVhbTo6Um90YXRlRmlsZXMoKSB7CiAgIE9uUm90YXRpb24o
KTsKIH0KIAotc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEZpbGVSb3RhdGluZ1N0cmVhbTo6R2V0
RmlsZXNXaXRoUHJlZml4KCkgY29uc3QgewotICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZmls
ZXM7Ci0gIC8vIEl0ZXJhdGUgb3ZlciB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4KLSAgRGly
ZWN0b3J5SXRlcmF0b3IgaXQ7Ci0gIFBhdGhuYW1lIGRpcl9wYXRoOwotICBkaXJfcGF0aC5TZXRG
b2xkZXIoZGlyX3BhdGhfKTsKLSAgaWYgKCFpdC5JdGVyYXRlKGRpcl9wYXRoKSkgewotICAgIHJl
dHVybiBmaWxlczsKLSAgfQotICBkbyB7Ci0gICAgc3RkOjpzdHJpbmcgY3VycmVudF9uYW1lID0g
aXQuTmFtZSgpOwotICAgIGlmIChjdXJyZW50X25hbWUuc2l6ZSgpICYmICFpdC5Jc0RpcmVjdG9y
eSgpICYmCi0gICAgICAgIGN1cnJlbnRfbmFtZS5jb21wYXJlKDAsIGZpbGVfcHJlZml4Xy5zaXpl
KCksIGZpbGVfcHJlZml4XykgPT0gMCkgewotICAgICAgUGF0aG5hbWUgcGF0aChkaXJfcGF0aF8s
IGN1cnJlbnRfbmFtZSk7Ci0gICAgICBmaWxlcy5wdXNoX2JhY2socGF0aC5wYXRobmFtZSgpKTsK
LSAgICB9Ci0gIH0gd2hpbGUgKGl0Lk5leHQoKSk7Ci0gIHJldHVybiBmaWxlczsKLX0KLQogc3Rk
OjpzdHJpbmcgRmlsZVJvdGF0aW5nU3RyZWFtOjpHZXRGaWxlUGF0aChzaXplX3QgaW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1fZmls
ZXMpIGNvbnN0IHsKICAgUlRDX0RDSEVDS19MVChpbmRleCwgbnVtX2ZpbGVzKTsKQEAgLTMzMyw4
ICs0NTIsNyBAQCBzdGQ6OnN0cmluZyBGaWxlUm90YXRpbmdTdHJlYW06OkdldEZpbGVQYXRoKHNp
emVfdCBpbmRleCwKICAgUlRDX0RDSEVDS19MVCgxICsgbWF4X2RpZ2l0cywgYnVmZmVyX3NpemUp
OwogICBzdGQ6OnNucHJpbnRmKGZpbGVfcG9zdGZpeCwgYnVmZmVyX3NpemUsICJfJTAqenUiLCBt
YXhfZGlnaXRzLCBpbmRleCk7CiAKLSAgUGF0aG5hbWUgZmlsZV9wYXRoKGRpcl9wYXRoXywgZmls
ZV9wcmVmaXhfICsgZmlsZV9wb3N0Zml4KTsKLSAgcmV0dXJuIGZpbGVfcGF0aC5wYXRobmFtZSgp
OworICByZXR1cm4gZGlyX3BhdGhfICsgZmlsZV9wcmVmaXhfICsgZmlsZV9wb3N0Zml4OwogfQog
CiBDYWxsU2Vzc2lvbkZpbGVSb3RhdGluZ1N0cmVhbTo6Q2FsbFNlc3Npb25GaWxlUm90YXRpbmdT
dHJlYW0oCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGVyb3RhdGluZ3N0cmVhbS5oCmluZGV4
IDRkYWIzNDU1ZGIwMTkzYjIxMzMyYWQ1ZTEzYTAyODUwNDI2MzFlMDguLmM3NWVlMTUzYjZlNGE2
MGU0YzM0Zjg3NTRlMGYxNmEyMTNhODc1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGVyb3RhdGluZ3N0cmVhbS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zp
bGVyb3RhdGluZ3N0cmVhbS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFJUQ19CQVNFX0ZJ
TEVST1RBVElOR1NUUkVBTV9IXwogI2RlZmluZSBSVENfQkFTRV9GSUxFUk9UQVRJTkdTVFJFQU1f
SF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxz
dHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgpAQCAtMTAxLDggKzEwMiw2IEBAIGNsYXNzIEZpbGVS
b3RhdGluZ1N0cmVhbSA6IHB1YmxpYyBTdHJlYW1JbnRlcmZhY2UgewogICAvLyBjcmVhdGUgbmV3
IGZpbGVfMAogICB2b2lkIFJvdGF0ZUZpbGVzKCk7CiAKLSAgLy8gUmV0dXJucyBhIGxpc3Qgb2Yg
ZmlsZSBuYW1lcyBpbiB0aGUgZGlyZWN0b3J5IGJlZ2lubmluZyB3aXRoIHRoZSBwcmVmaXguCi0g
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRGaWxlc1dpdGhQcmVmaXgoKSBjb25zdDsKICAg
Ly8gUHJpdmF0ZSB2ZXJzaW9uIG9mIEdldEZpbGVQYXRoLgogICBzdGQ6OnN0cmluZyBHZXRGaWxl
UGF0aChzaXplX3QgaW5kZXgsIHNpemVfdCBudW1fZmlsZXMpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxl
cm90YXRpbmdzdHJlYW1fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW1fdW5pdHRlc3QuY2MKaW5k
ZXggMTkwNTUxNjJmZDAxOTQ1ZDViY2FkZjJjMWY3ZDliYTA5ZjUzNmM4OS4uMTcyYmU1N2VhY2M2
OWQ0OGM5YzI1ZjBlNTg3ODQxODZiOWM3MWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2ZpbGVyb3RhdGluZ3N0cmVhbV91bml0dGVzdC5jYwpAQCAtMTMsOSArMTMsNyBA
QAogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2ZpbGVyb3RhdGluZ3N0cmVhbS5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL2ZpbGV1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvcGF0aHV0aWxzLmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9y
dC9maWxldXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CkBAIC00NiwxMiArNDQsMTUgQEAgY2xh
c3MgTUFZQkVfRmlsZVJvdGF0aW5nU3RyZWFtVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
ewogICB2b2lkIEluaXQoY29uc3Qgc3RkOjpzdHJpbmcmIGRpcl9uYW1lLAogICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfcHJlZml4LAogICAgICAgICAgICAgc2l6ZV90IG1heF9m
aWxlX3NpemUsCi0gICAgICAgICAgICBzaXplX3QgbnVtX2xvZ19maWxlcykgeworICAgICAgICAg
ICAgc2l6ZV90IG51bV9sb2dfZmlsZXMsCisgICAgICAgICAgICBib29sIGVuc3VyZV90cmFpbGlu
Z19kZWxpbWl0ZXIgPSB0cnVlKSB7CiAgICAgZGlyX3BhdGhfID0gd2VicnRjOjp0ZXN0OjpPdXRw
dXRQYXRoKCk7CiAKICAgICAvLyBBcHBlbmQgcGVyLXRlc3Qgb3V0cHV0IHBhdGggaW4gb3JkZXIg
dG8gcnVuIHdpdGhpbiBndGVzdCBwYXJhbGxlbC4KICAgICBkaXJfcGF0aF8uYXBwZW5kKGRpcl9u
YW1lKTsKLSAgICBkaXJfcGF0aF8ucHVzaF9iYWNrKFBhdGhuYW1lOjpEZWZhdWx0Rm9sZGVyRGVs
aW1pdGVyKCkpOworICAgIGlmIChlbnN1cmVfdHJhaWxpbmdfZGVsaW1pdGVyKSB7CisgICAgICBk
aXJfcGF0aF8uYXBwZW5kKHdlYnJ0Yzo6dGVzdDo6a1BhdGhEZWxpbWl0ZXIpOworICAgIH0KICAg
ICBBU1NFUlRfVFJVRSh3ZWJydGM6OnRlc3Q6OkNyZWF0ZURpcihkaXJfcGF0aF8pKTsKICAgICBz
dHJlYW1fLnJlc2V0KG5ldyBGaWxlUm90YXRpbmdTdHJlYW0oZGlyX3BhdGhfLCBmaWxlX3ByZWZp
eCwgbWF4X2ZpbGVfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVtX2xvZ19maWxlcykpOwpAQCAtMTU5LDEyICsxNjAsMTIgQEAgVEVTVF9GKE1BWUJFX0Zp
bGVSb3RhdGluZ1N0cmVhbVRlc3QsIFdyaXRlQW5kUmVhZCkgewogICB9CiAgIC8vIENoZWNrIHRo
YXQgZXhhY3RseSB0aHJlZSBmaWxlcyBleGlzdC4KICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
cnJheXNpemUobWVzc2FnZXMpOyArK2kpIHsKLSAgICBFWFBFQ1RfVFJVRShGaWxlc3lzdGVtOjpJ
c0ZpbGUoc3RyZWFtXy0+R2V0RmlsZVBhdGgoaSkpKTsKKyAgICBFWFBFQ1RfVFJVRSh3ZWJydGM6
OnRlc3Q6OkZpbGVFeGlzdHMoc3RyZWFtXy0+R2V0RmlsZVBhdGgoaSkpKTsKICAgfQogICBzdGQ6
OnN0cmluZyBtZXNzYWdlKCJkIik7CiAgIFdyaXRlQW5kRmx1c2gobWVzc2FnZS5jX3N0cigpLCBt
ZXNzYWdlLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKG1lc3Nh
Z2VzKTsgKytpKSB7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZXN5c3RlbTo6SXNGaWxlKHN0cmVhbV8t
PkdldEZpbGVQYXRoKGkpKSk7CisgICAgRVhQRUNUX1RSVUUod2VicnRjOjp0ZXN0OjpGaWxlRXhp
c3RzKHN0cmVhbV8tPkdldEZpbGVQYXRoKGkpKSk7CiAgIH0KICAgLy8gVE9ETyh0a2NoaW4pOiBN
YXliZSBjaGVjayBhbGwgdGhlIGZpbGVzIGluIHRoZSBkaXIuCiAKQEAgLTE3NCw2ICsxNzUsNTMg
QEAgVEVTVF9GKE1BWUJFX0ZpbGVSb3RhdGluZ1N0cmVhbVRlc3QsIFdyaXRlQW5kUmVhZCkgewog
ICAgICAgICAgICAgICAgICAgIGRpcl9wYXRoXywga0ZpbGVQcmVmaXgpOwogfQogCisvLyBUZXN0
cyB0aGF0IGEgd3JpdGUgb3BlcmF0aW9uICh3aXRoIGRpciBuYW1lIHdpdGhvdXQgZGVsaW1pdGVy
KSBmb2xsb3dlZCBieSBhCisvLyByZWFkIHJldHVybnMgdGhlIGV4cGVjdGVkIGRhdGEgYW5kIHdy
aXRlcyB0byB0aGUgZXhwZWN0ZWQgZmlsZXMuCitURVNUX0YoTUFZQkVfRmlsZVJvdGF0aW5nU3Ry
ZWFtVGVzdCwgV3JpdGVXaXRob3V0RGVsaW1pdGVyQW5kUmVhZCkgeworICBJbml0KCJGaWxlUm90
YXRpbmdTdHJlYW1UZXN0V3JpdGVXaXRob3V0RGVsaW1pdGVyQW5kUmVhZCIsIGtGaWxlUHJlZml4
LAorICAgICAgIGtNYXhGaWxlU2l6ZSwgMywKKyAgICAgICAvKiBlbnN1cmVfdHJhaWxpbmdfZGVs
aW1pdGVyKi8gZmFsc2UpOworCisgIEFTU0VSVF9UUlVFKHN0cmVhbV8tPk9wZW4oKSk7CisgIC8v
IFRoZSB0ZXN0IGlzIHNldCB1cCB0byBjcmVhdGUgdGhyZWUgbG9nIGZpbGVzIG9mIGxlbmd0aCAy
LiBXcml0ZSBhbmQgY2hlY2sKKyAgLy8gY29udGVudHMuCisgIHN0ZDo6c3RyaW5nIG1lc3NhZ2Vz
WzNdID0geyJhYSIsICJiYiIsICJjYyJ9OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5
c2l6ZShtZXNzYWdlcyk7ICsraSkgeworICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlID0g
bWVzc2FnZXNbaV07CisgICAgV3JpdGVBbmRGbHVzaChtZXNzYWdlLmNfc3RyKCksIG1lc3NhZ2Uu
c2l6ZSgpKTsKKyAgfQorICBzdGQ6OnN0cmluZyBtZXNzYWdlKCJkIik7CisgIFdyaXRlQW5kRmx1
c2gobWVzc2FnZS5jX3N0cigpLCBtZXNzYWdlLnNpemUoKSk7CisKKyAgLy8gUmVvcGVuIGZvciBy
ZWFkLgorICBzdGQ6OnN0cmluZyBleHBlY3RlZF9jb250ZW50cygiYmJjY2QiKTsKKyAgVmVyaWZ5
U3RyZWFtUmVhZChleHBlY3RlZF9jb250ZW50cy5jX3N0cigpLCBleHBlY3RlZF9jb250ZW50cy5z
aXplKCksCisgICAgICAgICAgICAgICAgICAgZGlyX3BhdGhfICsgd2VicnRjOjp0ZXN0OjprUGF0
aERlbGltaXRlciwga0ZpbGVQcmVmaXgpOworfQorCisvLyBUZXN0cyB0aGF0IGEgd3JpdGUgb3Bl
cmF0aW9uIGZvbGxvd2VkIGJ5IGEgcmVhZCAod2l0aG91dCB0cmFpbGluZyBkZWxpbWl0ZXIpCisv
LyByZXR1cm5zIHRoZSBleHBlY3RlZCBkYXRhIGFuZCB3cml0ZXMgdG8gdGhlIGV4cGVjdGVkIGZp
bGVzLgorVEVTVF9GKE1BWUJFX0ZpbGVSb3RhdGluZ1N0cmVhbVRlc3QsIFdyaXRlQW5kUmVhZFdp
dGhvdXREZWxpbWl0ZXIpIHsKKyAgSW5pdCgiRmlsZVJvdGF0aW5nU3RyZWFtVGVzdFdyaXRlQW5k
UmVhZFdpdGhvdXREZWxpbWl0ZXIiLCBrRmlsZVByZWZpeCwKKyAgICAgICBrTWF4RmlsZVNpemUs
IDMpOworCisgIEFTU0VSVF9UUlVFKHN0cmVhbV8tPk9wZW4oKSk7CisgIC8vIFRoZSB0ZXN0IGlz
IHNldCB1cCB0byBjcmVhdGUgdGhyZWUgbG9nIGZpbGVzIG9mIGxlbmd0aCAyLiBXcml0ZSBhbmQg
Y2hlY2sKKyAgLy8gY29udGVudHMuCisgIHN0ZDo6c3RyaW5nIG1lc3NhZ2VzWzNdID0geyJhYSIs
ICJiYiIsICJjYyJ9OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShtZXNzYWdl
cyk7ICsraSkgeworICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlID0gbWVzc2FnZXNbaV07
CisgICAgV3JpdGVBbmRGbHVzaChtZXNzYWdlLmNfc3RyKCksIG1lc3NhZ2Uuc2l6ZSgpKTsKKyAg
fQorICBzdGQ6OnN0cmluZyBtZXNzYWdlKCJkIik7CisgIFdyaXRlQW5kRmx1c2gobWVzc2FnZS5j
X3N0cigpLCBtZXNzYWdlLnNpemUoKSk7CisKKyAgLy8gUmVvcGVuIGZvciByZWFkLgorICBzdGQ6
OnN0cmluZyBleHBlY3RlZF9jb250ZW50cygiYmJjY2QiKTsKKyAgVmVyaWZ5U3RyZWFtUmVhZChl
eHBlY3RlZF9jb250ZW50cy5jX3N0cigpLCBleHBlY3RlZF9jb250ZW50cy5zaXplKCksCisgICAg
ICAgICAgICAgICAgICAgZGlyX3BhdGhfLnN1YnN0cigwLCBkaXJfcGF0aF8uc2l6ZSgpIC0gMSks
IGtGaWxlUHJlZml4KTsKK30KKwogLy8gVGVzdHMgdGhhdCB3cml0aW5nIGRhdGEgZ3JlYXRlciB0
aGFuIHRoZSB0b3RhbCBjYXBhY2l0eSBvZiB0aGUgZmlsZXMKIC8vIG92ZXJ3cml0ZXMgdGhlIGZp
bGVzIGNvcnJlY3RseSBhbmQgaXMgcmVhZCBjb3JyZWN0bHkgYWZ0ZXIuCiBURVNUX0YoTUFZQkVf
RmlsZVJvdGF0aW5nU3RyZWFtVGVzdCwgV3JpdGVPdmVyZmxvd0FuZFJlYWQpIHsKQEAgLTIxOCw3
ICsyNjYsNyBAQCBjbGFzcyBNQVlCRV9DYWxsU2Vzc2lvbkZpbGVSb3RhdGluZ1N0cmVhbVRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIAogICAgIC8vIEFwcGVuZCBwZXItdGVzdCBvdXRw
dXQgcGF0aCBpbiBvcmRlciB0byBydW4gd2l0aGluIGd0ZXN0IHBhcmFsbGVsLgogICAgIGRpcl9w
YXRoXy5hcHBlbmQoZGlyX25hbWUpOwotICAgIGRpcl9wYXRoXy5wdXNoX2JhY2soUGF0aG5hbWU6
OkRlZmF1bHRGb2xkZXJEZWxpbWl0ZXIoKSk7CisgICAgZGlyX3BhdGhfLmFwcGVuZCh3ZWJydGM6
OnRlc3Q6OmtQYXRoRGVsaW1pdGVyKTsKICAgICBBU1NFUlRfVFJVRSh3ZWJydGM6OnRlc3Q6OkNy
ZWF0ZURpcihkaXJfcGF0aF8pKTsKICAgICBzdHJlYW1fLnJlc2V0KAogICAgICAgICBuZXcgQ2Fs
bFNlc3Npb25GaWxlUm90YXRpbmdTdHJlYW0oZGlyX3BhdGhfLCBtYXhfdG90YWxfbG9nX3NpemUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2ZpbGV1dGlscy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGV1dGlscy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggN2Q4M2Y5N2ZhZTRjMWNhMDY5MTQ3NDU1MDliYzA0NzE3OGFlOTNmYS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxldXRpbHMuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSwxMzAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgInJ0Y19i
YXNlL2ZpbGV1dGlscy5oIgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcGF0aHV0aWxzLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKLQotI2lmIGRlZmluZWQoV0VCUlRD
X1dJTikKLSNpbmNsdWRlICJydGNfYmFzZS93aW4zMmZpbGVzeXN0ZW0uaCIKLSNlbHNlCi0jaW5j
bHVkZSAicnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uaCIKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQo
V0VCUlRDX1dJTikKLSNkZWZpbmUgTUFYX1BBVEggMjYwCi0jZW5kaWYKLQotbmFtZXNwYWNlIHJ0
YyB7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBEaXJlY3RvcnkgSXRlcmF0b3Ig
ICAvLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gQSBEaXJlY3RvcnlJdGVyYXRv
ciBpcyBjcmVhdGVkIHdpdGggYSBnaXZlbiBkaXJlY3RvcnkuIEl0IG9yaWdpbmFsbHkgcG9pbnRz
Ci0vLyB0byB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgZGlyZWN0b3J5LCBhbmQgY2FuIGJlIGFkdmFu
ZWNkIHdpdGggTmV4dCgpLiBUaGlzCi0vLyBhbGxvd3MgeW91IHRvIGdldCBpbmZvcm1hdGlvbiBh
Ym91dCBlYWNoIGZpbGUuCi0KLS8vIENvbnN0cnVjdG9yCi1EaXJlY3RvcnlJdGVyYXRvcjo6RGly
ZWN0b3J5SXRlcmF0b3IoKQotI2lmZGVmIFdFQlJUQ19XSU4KLSAgICA6IGhhbmRsZV8oSU5WQUxJ
RF9IQU5ETEVfVkFMVUUpIHsKLSNlbHNlCi0gICAgOiBkaXJfKG51bGxwdHIpLAotICAgICAgZGly
ZW50XyhudWxscHRyKXsKLSNlbmRpZgotfQotCi0vLyBEZXN0cnVjdG9yCi1EaXJlY3RvcnlJdGVy
YXRvcjo6fkRpcmVjdG9yeUl0ZXJhdG9yKCkgewotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLSAg
aWYgKGhhbmRsZV8gIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgOjpGaW5kQ2xvc2UoaGFu
ZGxlXyk7Ci0jZWxzZQotICBpZiAoZGlyXykKLSAgICBjbG9zZWRpcihkaXJfKTsKLSNlbmRpZgot
fQotCi0vLyBTdGFydHMgdHJhdmVyc2luZyBhIGRpcmVjdG9yeS4KLS8vIGRpciBpcyB0aGUgZGly
ZWN0b3J5IHRvIHRyYXZlcnNlCi0vLyByZXR1cm5zIHRydWUgaWYgdGhlIGRpcmVjdG9yeSBleGlz
dHMgYW5kIGlzIHZhbGlkCi1ib29sIERpcmVjdG9yeUl0ZXJhdG9yOjpJdGVyYXRlKGNvbnN0IFBh
dGhuYW1lJiBkaXIpIHsKLSAgZGlyZWN0b3J5XyA9IGRpci5wYXRobmFtZSgpOwotI2lmIGRlZmlu
ZWQoV0VCUlRDX1dJTikKLSAgaWYgKGhhbmRsZV8gIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0g
ICAgOjpGaW5kQ2xvc2UoaGFuZGxlXyk7Ci0gIHN0ZDo6c3RyaW5nIGQgPSBkaXIucGF0aG5hbWUo
KSArICcqJzsKLSAgaGFuZGxlXyA9IDo6RmluZEZpcnN0RmlsZShUb1V0ZjE2KGQpLmNfc3RyKCks
ICZkYXRhXyk7Ci0gIGlmIChoYW5kbGVfID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgIHJl
dHVybiBmYWxzZTsKLSNlbHNlCi0gIGlmIChkaXJfICE9IG51bGxwdHIpCi0gICAgY2xvc2VkaXIo
ZGlyXyk7Ci0gIGRpcl8gPSA6Om9wZW5kaXIoZGlyZWN0b3J5Xy5jX3N0cigpKTsKLSAgaWYgKGRp
cl8gPT0gbnVsbHB0cikKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGRpcmVudF8gPSByZWFkZGlyKGRp
cl8pOwotICBpZiAoZGlyZW50XyA9PSBudWxscHRyKQotICAgIHJldHVybiBmYWxzZTsKLQotICBp
ZiAoOjpzdGF0KHN0ZDo6c3RyaW5nKGRpcmVjdG9yeV8gKyBOYW1lKCkpLmNfc3RyKCksICZzdGF0
XykgIT0gMCkKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgcmV0dXJuIHRydWU7Ci19Ci0K
LS8vIEFkdmFuY2VzIHRvIHRoZSBuZXh0IGZpbGUKLS8vIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3
ZXJlIG1vcmUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4KLWJvb2wgRGlyZWN0b3J5SXRlcmF0b3I6
Ok5leHQoKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotICByZXR1cm4gOjpGaW5kTmV4dEZp
bGUoaGFuZGxlXywgJmRhdGFfKSA9PSBUUlVFOwotI2Vsc2UKLSAgZGlyZW50XyA9IDo6cmVhZGRp
cihkaXJfKTsKLSAgaWYgKGRpcmVudF8gPT0gbnVsbHB0cikKLSAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgcmV0dXJuIDo6c3RhdChzdGQ6OnN0cmluZyhkaXJlY3RvcnlfICsgTmFtZSgpKS5jX3N0cigp
LCAmc3RhdF8pID09IDA7Ci0jZW5kaWYKLX0KLQotLy8gcmV0dXJucyB0cnVlIGlmIHRoZSBmaWxl
IGN1cnJlbnRseSBwb2ludGVkIHRvIGlzIGEgZGlyZWN0b3J5Ci1ib29sIERpcmVjdG9yeUl0ZXJh
dG9yOjpJc0RpcmVjdG9yeSgpIGNvbnN0IHsKLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0gIHJl
dHVybiAoZGF0YV8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkg
IT0gRkFMU0U7Ci0jZWxzZQotICByZXR1cm4gU19JU0RJUihzdGF0Xy5zdF9tb2RlKTsKLSNlbmRp
ZgotfQotCi0vLyByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGN1cnJlbnRseSBwb2ludGVk
IHRvCi1zdGQ6OnN0cmluZyBEaXJlY3RvcnlJdGVyYXRvcjo6TmFtZSgpIGNvbnN0IHsKLSNpZiBk
ZWZpbmVkKFdFQlJUQ19XSU4pCi0gIHJldHVybiBUb1V0ZjgoZGF0YV8uY0ZpbGVOYW1lKTsKLSNl
bHNlCi0gIFJUQ19EQ0hFQ0soZGlyZW50Xyk7Ci0gIHJldHVybiBkaXJlbnRfLT5kX25hbWU7Ci0j
ZW5kaWYKLX0KLQotRmlsZXN5c3RlbUludGVyZmFjZSogRmlsZXN5c3RlbTo6R2V0RmlsZXN5c3Rl
bSgpIHsKLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0gIHN0YXRpYyBGaWxlc3lzdGVtSW50ZXJm
YWNlKiBjb25zdCBmaWxlc3lzdGVtID0gbmV3IFdpbjMyRmlsZXN5c3RlbSgpOwotI2Vsc2UKLSAg
c3RhdGljIEZpbGVzeXN0ZW1JbnRlcmZhY2UqIGNvbnN0IGZpbGVzeXN0ZW0gPSBuZXcgVW5peEZp
bGVzeXN0ZW0oKTsKLSNlbmRpZgotCi0gIHJldHVybiBmaWxlc3lzdGVtOwotfQotCi19ICAvLyBu
YW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxldXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGV1dGlscy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxMzJmZDg4NDQwMWNmZjVmZmIwMjNlZmU4NWU4ZjA4OTU2NzUxZmY3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGV1dGlscy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdl
YlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYg
UlRDX0JBU0VfRklMRVVUSUxTX0hfCi0jZGVmaW5lIFJUQ19CQVNFX0ZJTEVVVElMU19IXwotCi0j
aW5jbHVkZSA8c3RyaW5nPgotCi0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotI2luY2x1ZGUgPHdp
bmRvd3MuaD4KLSNlbHNlCi0jaW5jbHVkZSA8ZGlyZW50Lmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4K
LSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUg
PHVuaXN0ZC5oPgotI2VuZGlmICAvLyBXRUJSVENfV0lOCi0KLSNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvcGxhdGZvcm1fZmlsZS5oIgotCi1uYW1lc3BhY2UgcnRjIHsKLQotY2xhc3Mg
RmlsZVN0cmVhbTsKLWNsYXNzIFBhdGhuYW1lOwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotLy8gRGlyZWN0b3J5IEl0ZXJhdG9yICAgLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0KLS8vIEEgRGlyZWN0b3J5SXRlcmF0b3IgaXMgY3JlYXRlZCB3aXRoIGEgZ2l2ZW4gZGlyZWN0
b3J5LiBJdCBvcmlnaW5hbGx5IHBvaW50cwotLy8gdG8gdGhlIGZpcnN0IGZpbGUgaW4gdGhlIGRp
cmVjdG9yeSwgYW5kIGNhbiBiZSBhZHZhbmVjZCB3aXRoIE5leHQoKS4gVGhpcwotLy8gYWxsb3dz
IHlvdSB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBmaWxlLgotCi1jbGFzcyBEaXJlY3Rv
cnlJdGVyYXRvciB7Ci0gIGZyaWVuZCBjbGFzcyBGaWxlc3lzdGVtOwotCi0gcHVibGljOgotICAv
LyBDb25zdHJ1Y3RvcgotICBEaXJlY3RvcnlJdGVyYXRvcigpOwotICAvLyBEZXN0cnVjdG9yCi0g
IHZpcnR1YWwgfkRpcmVjdG9yeUl0ZXJhdG9yKCk7Ci0KLSAgLy8gU3RhcnRzIHRyYXZlcnNpbmcg
YSBkaXJlY3RvcnkKLSAgLy8gZGlyIGlzIHRoZSBkaXJlY3RvcnkgdG8gdHJhdmVyc2UKLSAgLy8g
cmV0dXJucyB0cnVlIGlmIHRoZSBkaXJlY3RvcnkgZXhpc3RzIGFuZCBpcyB2YWxpZAotICAvLyBU
aGUgaXRlcmF0b3Igd2lsbCBwb2ludCB0byB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGRpcmVjdG9y
eQotICB2aXJ0dWFsIGJvb2wgSXRlcmF0ZShjb25zdCBQYXRobmFtZSYgcGF0aCk7Ci0KLSAgLy8g
QWR2YW5jZXMgdG8gdGhlIG5leHQgZmlsZQotICAvLyByZXR1cm5zIHRydWUgaWYgdGhlcmUgd2Vy
ZSBtb3JlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuCi0gIHZpcnR1YWwgYm9vbCBOZXh0KCk7Ci0K
LSAgLy8gcmV0dXJucyB0cnVlIGlmIHRoZSBmaWxlIGN1cnJlbnRseSBwb2ludGVkIHRvIGlzIGEg
ZGlyZWN0b3J5Ci0gIHZpcnR1YWwgYm9vbCBJc0RpcmVjdG9yeSgpIGNvbnN0OwotCi0gIC8vIHJl
dHVybnMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgY3VycmVudGx5IHBvaW50ZWQgdG8KLSAgdmlydHVh
bCBzdGQ6OnN0cmluZyBOYW1lKCkgY29uc3Q7Ci0KLSBwcml2YXRlOgotICBzdGQ6OnN0cmluZyBk
aXJlY3RvcnlfOwotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLSAgV0lOMzJfRklORF9EQVRBIGRh
dGFfOwotICBIQU5ETEUgaGFuZGxlXzsKLSNlbHNlCi0gIERJUiogZGlyXzsKLSAgc3RydWN0IGRp
cmVudCogZGlyZW50XzsKLSAgc3RydWN0IHN0YXQgc3RhdF87Ci0jZW5kaWYKLX07Ci0KLWNsYXNz
IEZpbGVzeXN0ZW1JbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+RmlsZXN5c3RlbUlu
dGVyZmFjZSgpIHt9Ci0KLSAgLy8gVGhpcyB3aWxsIGF0dGVtcHQgdG8gZGVsZXRlIHRoZSBwYXRo
IGxvY2F0ZWQgYXQgZmlsZW5hbWUuCi0gIC8vIEl0IERDSEVDS3MgYW5kIHJldHVybnMgZmFsc2Ug
aWYgdGhlIHBhdGggcG9pbnRzIHRvIGEgZm9sZGVyIG9yIGEKLSAgLy8gbm9uLWV4aXN0ZW50IGZp
bGUuCi0gIHZpcnR1YWwgYm9vbCBEZWxldGVGaWxlKGNvbnN0IFBhdGhuYW1lJiBmaWxlbmFtZSkg
PSAwOwotCi0gIC8vIFRoaXMgbW92ZXMgYSBmaWxlIGZyb20gb2xkX3BhdGggdG8gbmV3X3BhdGgs
IHdoZXJlICJvbGRfcGF0aCIgaXMgYQotICAvLyBwbGFpbiBmaWxlLiBUaGlzIERDSEVDS3MgYW5k
IHJldHVybnMgZmFsc2UgaWYgb2xkX3BhdGggcG9pbnRzIHRvIGEKLSAgLy8gZGlyZWN0b3J5LCBh
bmQgcmV0dXJucyB0cnVlIGlmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcy4KLSAgdmlydHVhbCBib29s
IE1vdmVGaWxlKGNvbnN0IFBhdGhuYW1lJiBvbGRfcGF0aCwgY29uc3QgUGF0aG5hbWUmIG5ld19w
YXRoKSA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHBhdGhuYW1lIHJlZmVycyB0byBhIGRp
cmVjdG9yeQotICB2aXJ0dWFsIGJvb2wgSXNGb2xkZXIoY29uc3QgUGF0aG5hbWUmIHBhdGhuYW1l
KSA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHBhdGhuYW1lIHJlZmVycyB0byBhIGZpbGUK
LSAgdmlydHVhbCBib29sIElzRmlsZShjb25zdCBQYXRobmFtZSYgcGF0aG5hbWUpID0gMDsKLQot
ICAvLyBEZXRlcm1pbmVzIHRoZSBzaXplIG9mIHRoZSBmaWxlIGluZGljYXRlZCBieSBwYXRoLgot
ICB2aXJ0dWFsIGJvb2wgR2V0RmlsZVNpemUoY29uc3QgUGF0aG5hbWUmIHBhdGgsIHNpemVfdCog
c2l6ZSkgPSAwOwotfTsKLQotY2xhc3MgRmlsZXN5c3RlbSB7Ci0gcHVibGljOgotICBzdGF0aWMg
Ym9vbCBEZWxldGVGaWxlKGNvbnN0IFBhdGhuYW1lJiBmaWxlbmFtZSkgewotICAgIHJldHVybiBH
ZXRGaWxlc3lzdGVtKCktPkRlbGV0ZUZpbGUoZmlsZW5hbWUpOwotICB9Ci0KLSAgc3RhdGljIGJv
b2wgTW92ZUZpbGUoY29uc3QgUGF0aG5hbWUmIG9sZF9wYXRoLCBjb25zdCBQYXRobmFtZSYgbmV3
X3BhdGgpIHsKLSAgICByZXR1cm4gR2V0RmlsZXN5c3RlbSgpLT5Nb3ZlRmlsZShvbGRfcGF0aCwg
bmV3X3BhdGgpOwotICB9Ci0KLSAgc3RhdGljIGJvb2wgSXNGb2xkZXIoY29uc3QgUGF0aG5hbWUm
IHBhdGhuYW1lKSB7Ci0gICAgcmV0dXJuIEdldEZpbGVzeXN0ZW0oKS0+SXNGb2xkZXIocGF0aG5h
bWUpOwotICB9Ci0KLSAgc3RhdGljIGJvb2wgSXNGaWxlKGNvbnN0IFBhdGhuYW1lJiBwYXRobmFt
ZSkgewotICAgIHJldHVybiBHZXRGaWxlc3lzdGVtKCktPklzRmlsZShwYXRobmFtZSk7Ci0gIH0K
LQotICBzdGF0aWMgYm9vbCBHZXRGaWxlU2l6ZShjb25zdCBQYXRobmFtZSYgcGF0aCwgc2l6ZV90
KiBzaXplKSB7Ci0gICAgcmV0dXJuIEdldEZpbGVzeXN0ZW0oKS0+R2V0RmlsZVNpemUocGF0aCwg
c2l6ZSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0YXRpYyBGaWxlc3lzdGVtSW50ZXJmYWNlKiBH
ZXRGaWxlc3lzdGVtKCk7Ci0gIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoRmls
ZXN5c3RlbSk7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgcnRjCi0KLSNlbmRpZiAgLy8gUlRDX0JB
U0VfRklMRVVUSUxTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjCmluZGV4IDRmMjk0NTk0YmQ0YWZj
ZjI5YTNmODlhYzI3MGUyOGFiY2JmNzU1MzEuLjZiNDNiOTFlMDI2YWNkYzU4NDIxNWRkNGViNDJk
ZGJhNWU1YzA0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjCkBAIC0xNSw3ICsxNSw2IEBACiAj
aW5jbHVkZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiAjaWYgZGVmaW5lZChXRUJSVENfV0lOKQog
Ly8gY2xhbmctZm9ybWF0IG9mZgpAQCAtMjMsNiArMjIsOCBAQAogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KICNpbmNsdWRlIDxzaGVsbGFwaS5oPiAvLyBtdXN0IGNvbWUgYWZ0ZXIgd2luZG93cy5oCiAv
LyBjbGFuZy1mb3JtYXQgb24KKworI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiICAv
LyBGb3IgVG9VdGY4CiAjZW5kaWYKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5oCmlu
ZGV4IDMzZjZlNWJkYTFkYmRhNTRjNmRmOGU1ZjI2OGZkODYwZmQ0NzY4YWQuLmEwOGJmZDI5Yjg1
ZDVmZjJiMGQxZGFmNTExMTY1ZWNiNGYyMTAzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuaApAQCAt
MjMsNyArMjMsMTAgQEAKICNkZWZpbmUgUlRDX0JBU0VfRkxBR1NfSF8KIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgorCisjaWYgZGVmaW5lZChXRUJSVENfV0lOKQogI2luY2x1ZGUgInJ0
Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgcnRjIHsKIApA
QCAtMzMsNyArMzYsNyBAQCB1bmlvbiBGbGFnVmFsdWUgewogICAvLyBib29sIHZhbHVlcyAoJ2Jv
b2wgYiA9ICJmYWxzZSI7JyByZXN1bHRzIGluIGIgPT0gdHJ1ZSEpLCB3ZSBwYXNzCiAgIC8vIGFu
ZCBpbnQgYXJndW1lbnQgdG8gTmV3X0JPT0wgYXMgdGhpcyBhcHBlYXJzIHRvIGJlIHNhZmVyIC0g
c2lnaC4KICAgLy8gSW4gcGFydGljdWxhciwgaXQgcHJldmVudHMgdGhlIChub3QgdW5jb21tb24h
KSBidWcgd2hlcmUgYSBib29sCi0gIC8vIGZsYWcgaXMgZGVmaW5lZCB2aWE6IERFRklORV9ib29s
KGZsYWcsICJmYWxzZSIsICJzb21lIGNvbW1lbnQiKTsuCisgIC8vIGZsYWcgaXMgZGVmaW5lZCB2
aWE6IFdFQlJUQ19ERUZJTkVfYm9vbChmbGFnLCAiZmFsc2UiLCAic29tZSBjb21tZW50Iik7Lgog
ICBzdGF0aWMgRmxhZ1ZhbHVlIE5ld19CT09MKGludCBiKSB7CiAgICAgRmxhZ1ZhbHVlIHY7CiAg
ICAgdi5iID0gKGIgIT0gMCk7CkBAIC0xNTIsNyArMTU1LDcgQEAgY2xhc3MgRmxhZyB7CiB9Owog
CiAvLyBJbnRlcm5hbCB1c2Ugb25seS4KLSNkZWZpbmUgREVGSU5FX0ZMQUcodHlwZSwgY190eXBl
LCBuYW1lLCBkZWZhdWx0LCBjb21tZW50KSAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIFdF
QlJUQ19ERUZJTkVfRkxBRyh0eXBlLCBjX3R5cGUsIG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpICAg
ICAgICAgICAgXAogICAvKiBkZWZpbmUgYW5kIGluaXRpYWxpemUgdGhlIGZsYWcgKi8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgY190eXBlIEZMQUdfIyNuYW1lID0g
KGRlZmF1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
IC8qIHJlZ2lzdGVyIHRoZSBmbGFnICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXApAQCAtMTYxLDI1ICsxNjQsMjUgQEAgY2xhc3MgRmxhZyB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpGbGFnVmFsdWU6Ok5ld18jI3R5cGUo
ZGVmYXVsdCkpCiAKIC8vIEludGVybmFsIHVzZSBvbmx5LgotI2RlZmluZSBERUNMQVJFX0ZMQUco
Y190eXBlLCBuYW1lKSBcCi0gIC8qIGRlY2xhcmUgdGhlIGV4dGVybmFsIGZsYWcgKi8gIFwKKyNk
ZWZpbmUgV0VCUlRDX0RFQ0xBUkVfRkxBRyhjX3R5cGUsIG5hbWUpIFwKKyAgLyogZGVjbGFyZSB0
aGUgZXh0ZXJuYWwgZmxhZyAqLyAgICAgICAgIFwKICAgZXh0ZXJuIGNfdHlwZSBGTEFHXyMjbmFt
ZQogCiAvLyBVc2UgdGhlIGZvbGxvd2luZyBtYWNyb3MgdG8gZGVmaW5lIGEgbmV3IGZsYWc6Ci0j
ZGVmaW5lIERFRklORV9ib29sKG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpIFwKLSAgREVGSU5FX0ZM
QUcoQk9PTCwgYm9vbCwgbmFtZSwgZGVmYXVsdCwgY29tbWVudCkKLSNkZWZpbmUgREVGSU5FX2lu
dChuYW1lLCBkZWZhdWx0LCBjb21tZW50KSBcCi0gIERFRklORV9GTEFHKElOVCwgaW50LCBuYW1l
LCBkZWZhdWx0LCBjb21tZW50KQotI2RlZmluZSBERUZJTkVfZmxvYXQobmFtZSwgZGVmYXVsdCwg
Y29tbWVudCkgXAotICBERUZJTkVfRkxBRyhGTE9BVCwgZG91YmxlLCBuYW1lLCBkZWZhdWx0LCBj
b21tZW50KQotI2RlZmluZSBERUZJTkVfc3RyaW5nKG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpIFwK
LSAgREVGSU5FX0ZMQUcoU1RSSU5HLCBjb25zdCBjaGFyKiwgbmFtZSwgZGVmYXVsdCwgY29tbWVu
dCkKKyNkZWZpbmUgV0VCUlRDX0RFRklORV9ib29sKG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpIFwK
KyAgV0VCUlRDX0RFRklORV9GTEFHKEJPT0wsIGJvb2wsIG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQp
CisjZGVmaW5lIFdFQlJUQ19ERUZJTkVfaW50KG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpIFwKKyAg
V0VCUlRDX0RFRklORV9GTEFHKElOVCwgaW50LCBuYW1lLCBkZWZhdWx0LCBjb21tZW50KQorI2Rl
ZmluZSBXRUJSVENfREVGSU5FX2Zsb2F0KG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpIFwKKyAgV0VC
UlRDX0RFRklORV9GTEFHKEZMT0FULCBkb3VibGUsIG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpCisj
ZGVmaW5lIFdFQlJUQ19ERUZJTkVfc3RyaW5nKG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpIFwKKyAg
V0VCUlRDX0RFRklORV9GTEFHKFNUUklORywgY29uc3QgY2hhciosIG5hbWUsIGRlZmF1bHQsIGNv
bW1lbnQpCiAKIC8vIFVzZSB0aGUgZm9sbG93aW5nIG1hY3JvcyB0byBkZWNsYXJlIGEgZmxhZyBk
ZWZpbmVkIGVsc2V3aGVyZToKLSNkZWZpbmUgREVDTEFSRV9ib29sKG5hbWUpIERFQ0xBUkVfRkxB
Ryhib29sLCBuYW1lKQotI2RlZmluZSBERUNMQVJFX2ludChuYW1lKSBERUNMQVJFX0ZMQUcoaW50
LCBuYW1lKQotI2RlZmluZSBERUNMQVJFX2Zsb2F0KG5hbWUpIERFQ0xBUkVfRkxBRyhkb3VibGUs
IG5hbWUpCi0jZGVmaW5lIERFQ0xBUkVfc3RyaW5nKG5hbWUpIERFQ0xBUkVfRkxBRyhjb25zdCBj
aGFyKiwgbmFtZSkKKyNkZWZpbmUgV0VCUlRDX0RFQ0xBUkVfYm9vbChuYW1lKSBXRUJSVENfREVD
TEFSRV9GTEFHKGJvb2wsIG5hbWUpCisjZGVmaW5lIFdFQlJUQ19ERUNMQVJFX2ludChuYW1lKSBX
RUJSVENfREVDTEFSRV9GTEFHKGludCwgbmFtZSkKKyNkZWZpbmUgV0VCUlRDX0RFQ0xBUkVfZmxv
YXQobmFtZSkgV0VCUlRDX0RFQ0xBUkVfRkxBRyhkb3VibGUsIG5hbWUpCisjZGVmaW5lIFdFQlJU
Q19ERUNMQVJFX3N0cmluZyhuYW1lKSBXRUJSVENfREVDTEFSRV9GTEFHKGNvbnN0IGNoYXIqLCBu
YW1lKQogCiAvLyBUaGUgZ2xvYmFsIGxpc3Qgb2YgYWxsIGZsYWdzLgogY2xhc3MgRmxhZ0xpc3Qg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvaGVscGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvaGVscGVycy5oCmluZGV4IGQzYjA5Y2ZkNDhmYjViZDNlNWFmZDkzYmQ2
Zjg1NGExMWFjZTBlZjcuLmE5M2IzMjFlYWI5MjY3M2RlOTAzYjllODdlYzI2NTYzNjZlMzFlNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2hlbHBlcnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9oZWxwZXJzLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgUlRD
X0JBU0VfSEVMUEVSU19IXwogI2RlZmluZSBSVENfQkFTRV9IRUxQRVJTX0hfCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKIG5h
bWVzcGFjZSBydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvaHR0cGNvbW1vbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2h0dHBjb21tb24uY2MKaW5kZXggNzE2YTQx
ZTE2ZTkzZTcyYzZlOTBjMTYyYmU2MjVlZTIyMTQ1OGIzNS4uNzkyNmY4ODRmOWQ4ODFiMzc1Zjhj
MGQ3N2MwNDY1ZjA4ZWE2NGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaHR0cGNvbW1vbi5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9odHRwY29tbW9uLmNjCkBA
IC0xOCwxNyArMTgsMjMgQEAKICNpbmNsdWRlIDxzZWN1cml0eS5oPgogI2VuZGlmCiAKKyNpbmNs
dWRlIDxjdHlwZS5oPiAgLy8gZm9yIGlzc3BhY2UKKyNpbmNsdWRlIDxzdGRpby5oPiAgLy8gZm9y
IHNwcmludGYKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8dXRpbGl0eT4gIC8vIGZv
ciBwYWlyCisjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNo
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY3J5cHRzdHJpbmcuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9jcnlwdHN0cmluZy5oIiAgLy8gZm9yIENyeXB0U3RyaW5nCiAjaW5jbHVkZSAicnRj
X2Jhc2UvaHR0cGNvbW1vbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0
YWRkcmVzcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9iYXNlNjQvYmFzZTY0LmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvemVyb19tZW1vcnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0
eS9iYXNlNjQvYmFzZTY0LmgiICAvLyBmb3IgQmFzZTY0CisjaW5jbHVkZSAicnRjX2Jhc2UvemVy
b19tZW1vcnkuaCIgICAgICAgICAgICAgICAgLy8gZm9yIEV4cGxpY2l0WmVyb01lbW9yeQogCiBu
YW1lc3BhY2UgcnRjIHsKIG5hbWVzcGFjZSB7CkBAIC0yNjAsNyArMjY2LDcgQEAgSHR0cEF1dGhS
ZXN1bHQgSHR0cEF1dGhlbnRpY2F0ZShjb25zdCBjaGFyKiBjaGFsbGVuZ2UsCiAgICAgcmV0dXJu
IEhBUl9JR05PUkU7CiAKICAgLy8gQkFTSUMKLSAgaWYgKF9zdHJpY21wKGF1dGhfbWV0aG9kLmNf
c3RyKCksICJiYXNpYyIpID09IDApIHsKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoYXV0
aF9tZXRob2QsICJiYXNpYyIpKSB7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgICByZXR1cm4gSEFS
X0NSRURFTlRJQUxTOyAgLy8gQmFkIGNyZWRlbnRpYWxzCiAgICAgaWYgKHVzZXJuYW1lLmVtcHR5
KCkpCkBAIC0yODgsNyArMjk0LDcgQEAgSHR0cEF1dGhSZXN1bHQgSHR0cEF1dGhlbnRpY2F0ZShj
b25zdCBjaGFyKiBjaGFsbGVuZ2UsCiAgIH0KIAogICAvLyBESUdFU1QKLSAgaWYgKF9zdHJpY21w
KGF1dGhfbWV0aG9kLmNfc3RyKCksICJkaWdlc3QiKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVh
bHNJZ25vcmVDYXNlKGF1dGhfbWV0aG9kLCAiZGlnZXN0IikpIHsKICAgICBpZiAoY29udGV4dCkK
ICAgICAgIHJldHVybiBIQVJfQ1JFREVOVElBTFM7ICAvLyBCYWQgY3JlZGVudGlhbHMKICAgICBp
ZiAodXNlcm5hbWUuZW1wdHkoKSkKQEAgLTM1NSw4ICszNjEsOCBAQCBIdHRwQXV0aFJlc3VsdCBI
dHRwQXV0aGVudGljYXRlKGNvbnN0IGNoYXIqIGNoYWxsZW5nZSwKIAogI2lmIGRlZmluZWQoV0VC
UlRDX1dJTikKICNpZiAxCi0gIGJvb2wgd2FudF9uZWdvdGlhdGUgPSAoX3N0cmljbXAoYXV0aF9t
ZXRob2QuY19zdHIoKSwgIm5lZ290aWF0ZSIpID09IDApOwotICBib29sIHdhbnRfbnRsbSA9IChf
c3RyaWNtcChhdXRoX21ldGhvZC5jX3N0cigpLCAibnRsbSIpID09IDApOworICBib29sIHdhbnRf
bmVnb3RpYXRlID0gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShhdXRoX21ldGhvZCwgIm5lZ290aWF0
ZSIpOworICBib29sIHdhbnRfbnRsbSA9IGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoYXV0aF9tZXRo
b2QsICJudGxtIik7CiAgIC8vIFNQTkVHTyAmIE5UTE0KICAgaWYgKHdhbnRfbmVnb3RpYXRlIHx8
IHdhbnRfbnRsbSkgewogICAgIGNvbnN0IHNpemVfdCBNQVhfTUVTU0FHRSA9IDEyMDAwLCBNQVhf
U1BOID0gMjU2OwpAQCAtMzcxLDcgKzM3Nyw3IEBAIEh0dHBBdXRoUmVzdWx0IEh0dHBBdXRoZW50
aWNhdGUoY29uc3QgY2hhciogY2hhbGxlbmdlLAogICAgICAgcmV0dXJuIEhBUl9JR05PUkU7CiAg
ICAgfQogI2Vsc2UKLSAgICBzcHJpbnRmbihzcG4sIE1BWF9TUE4sICJIVFRQLyVzIiwgc2VydmVy
LlRvU3RyaW5nKCkuY19zdHIoKSk7CisgICAgc25wcmludGYoc3BuLCBNQVhfU1BOLCAiSFRUUC8l
cyIsIHNlcnZlci5Ub1N0cmluZygpLmNfc3RyKCkpOwogI2VuZGlmCiAKICAgICBTZWNCdWZmZXIg
b3V0X3NlYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2h0dHBjb21tb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2h0dHBjb21tb24uaAppbmRleCA1ODFiZDFlZThhODZj
NjEyY2I2MmY2YWIyMzQxNTNhZDRkMmM4MDhkLi5mYmFkMjgwZTAyNTBhMGI3YWQ1MzVkOTM4Mzgx
NzI3ZGQ3YWNkMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9odHRwY29tbW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaHR0cGNvbW1vbi5oCkBAIC0xMSwxNCAr
MTEsNyBAQAogI2lmbmRlZiBSVENfQkFTRV9IVFRQQ09NTU9OX0hfCiAjZGVmaW5lIFJUQ19CQVNF
X0hUVFBDT01NT05fSF8KIAotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L3N0cmluZ3V0aWxzLmgiCiAKIG5hbWVzcGFjZSBydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9pcGFkZHJlc3MuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9pcGFk
ZHJlc3MuY2MKaW5kZXggYzUyYzlhNGFkZGRhYzMwZGM0ZWQwMDlkZmZhZTBhZWM1NWVkYjZiNi4u
MDI3YTdiMjE5ZTAyYTllNmM1MzcwYmM1MDVmNTkzYWQ4YjQwYTQ3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaXBhZGRyZXNz
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2lwYWRkcmVzcy5jYwpAQCAtMTEsMjQgKzExLDE3IEBACiAjaWYgZGVmaW5lZChXRUJSVENf
UE9TSVgpCiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4K
LSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZmRlZiBPUEVOQlNECiAjaW5jbHVkZSA8bmV0aW5l
dC9pbl9zeXN0bS5oPgogI2VuZGlmCiAjaWZuZGVmIF9fbmF0aXZlX2NsaWVudF9fCiAjaW5jbHVk
ZSA8bmV0aW5ldC9pcC5oPgogI2VuZGlmCi0jaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAjaW5jbHVk
ZSA8bmV0ZGIuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8c3Rk
aW8uaD4KLQogI2luY2x1ZGUgInJ0Y19iYXNlL2J5dGVvcmRlci5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2lwYWRkcmVzcy5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9uZXRoZWxwZXJzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIApAQCAtMTYyLDExICsxNTUsMTAgQEAg
c3RkOjpzdHJpbmcgSVBBZGRyZXNzOjpUb1NlbnNpdGl2ZVN0cmluZygpIGNvbnN0IHsKICAgICAg
IHN0ZDo6c3RyaW5nIHJlc3VsdDsKICAgICAgIHJlc3VsdC5yZXNpemUoSU5FVDZfQUREUlNUUkxF
Tik7CiAgICAgICBpbjZfYWRkciBhZGRyID0gaXB2Nl9hZGRyZXNzKCk7Ci0gICAgICBzaXplX3Qg
bGVuID0KLSAgICAgICAgICBydGM6OnNwcmludGZuKCYocmVzdWx0WzBdKSwgcmVzdWx0LnNpemUo
KSwgIiV4OiV4OiV4Ong6eDp4Ong6eCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAoYWRkci5z
Nl9hZGRyWzBdIDw8IDgpICsgYWRkci5zNl9hZGRyWzFdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgKGFkZHIuczZfYWRkclsyXSA8PCA4KSArIGFkZHIuczZfYWRkclszXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIChhZGRyLnM2X2FkZHJbNF0gPDwgOCkgKyBhZGRyLnM2X2FkZHJbNV0pOwor
ICAgICAgc2l6ZV90IGxlbiA9IHNucHJpbnRmKCYocmVzdWx0WzBdKSwgcmVzdWx0LnNpemUoKSwg
IiV4OiV4OiV4Ong6eDp4Ong6eCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZHIu
czZfYWRkclswXSA8PCA4KSArIGFkZHIuczZfYWRkclsxXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoYWRkci5zNl9hZGRyWzJdIDw8IDgpICsgYWRkci5zNl9hZGRyWzNdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChhZGRyLnM2X2FkZHJbNF0gPDwgOCkgKyBhZGRyLnM2X2Fk
ZHJbNV0pOwogICAgICAgcmVzdWx0LnJlc2l6ZShsZW4pOwogICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9rZXlfZGVyaXZhdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2tleV9kZXJpdmF0aW9uLmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI4OGU0MDdlYmM1YTk3NDMxMGQ4NDBiYTY5Y2Y0MDU3NTI5NzhjMmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9r
ZXlfZGVyaXZhdGlvbi5jYwpAQCAtMCwwICsxLDMxIEBACisvKgorICogIENvcHlyaWdodCAyMDE4
IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aW5jbHVkZSAicnRjX2Jhc2Uva2V5X2Rlcml2YXRpb24uaCIKKworI2luY2x1ZGUgImFic2wvbWVt
b3J5L21lbW9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2YXRpb25f
aGtkZi5oIgorCituYW1lc3BhY2UgcnRjIHsKKworS2V5RGVyaXZhdGlvbjo6S2V5RGVyaXZhdGlv
bigpID0gZGVmYXVsdDsKK0tleURlcml2YXRpb246On5LZXlEZXJpdmF0aW9uKCkgPSBkZWZhdWx0
OworCisvLyBzdGF0aWMKK3N0ZDo6dW5pcXVlX3B0cjxLZXlEZXJpdmF0aW9uPiBLZXlEZXJpdmF0
aW9uOjpDcmVhdGUoCisgICAgS2V5RGVyaXZhdGlvbkFsZ29yaXRobSBrZXlfZGVyaXZhdGlvbl9h
bGdvcml0aG0pIHsKKyAgc3dpdGNoIChrZXlfZGVyaXZhdGlvbl9hbGdvcml0aG0pIHsKKyAgICBj
YXNlIEtleURlcml2YXRpb25BbGdvcml0aG06OkhLREZfU0hBMjU2OgorICAgICAgcmV0dXJuIGFi
c2w6Om1ha2VfdW5pcXVlPE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERj4oKTsKKyAgfQorICBSVENf
Tk9UUkVBQ0hFRCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9rZXlfZGVyaXZh
dGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uva2V5X2Rlcml2YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTMyOWFlYjRjZTRjOWQ5OGVhYmUxMDA2
MTY3OGJjOTFiN2I2ZjM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uva2V5X2Rlcml2YXRpb24uaApAQCAtMCwwICsx
LDcwIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19CQVNFX0tFWV9ERVJJVkFU
SU9OX0hfCisjZGVmaW5lIFJUQ19CQVNFX0tFWV9ERVJJVkFUSU9OX0hfCisKKyNpbmNsdWRlIDxt
ZW1vcnk+CisKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisKK25hbWVzcGFjZSBydGMgeworCisvLyBEZWZp
bmVzIHRoZSBzZXQgb2Yga2V5IGRlcml2YXRpb24gYWxnb3JpdGhtcyB0aGF0IGFyZSBzdXBwb3J0
ZWQuIEl0IGlzIGlkZWFsCisvLyB0byBrZWVwIHRoaXMgbGlzdCBhcyBzbWFsbCBhcyBwb3NzaWJs
ZS4KK2VudW0gY2xhc3MgS2V5RGVyaXZhdGlvbkFsZ29yaXRobSB7CisgIC8vIFRoaXMgYWxnb3Jp
dGhtIGlzIG5vdCBzdWl0YWJsZSB0byBnZW5lcmF0ZSBhIGtleSBmcm9tIGEgcGFzc3dvcmQuIFBs
ZWFzZQorICAvLyBvbmx5IHVzZSB3aXRoIGEgY3J5cHRvZ3JhcGhpY2FsbHkgcmFuZG9tIG1hc3Rl
ciBzZWNyZXQuCisgIEhLREZfU0hBMjU2Cit9OworCisvLyBLZXlEZXJpdmF0aW9uIHByb3ZpZGVz
IGEgZ2VuZXJpYyBpbnRlcmZhY2UgZm9yIGRlcml2aW5nIGtleXMgaW4gV2ViUlRDLiBUaGlzCisv
LyBjbGFzcyBzaG91bGQgYmUgdXNlZCBvdmVyIGRpcmVjdGx5IGFjY2Vzc2luZyBvcGVuc3NsIG9y
IGJvcmluZ3NzbCBwcmltaXRpdmVzCisvLyBzbyB0aGF0IHdlIGNhbiBtYWludGFpbiBzZXBlcmF0
ZSBpbXBsZW1lbnRhdGlvbnMuCisvLyBFeGFtcGxlOgorLy8gICBhdXRvIGtkID0gS2V5RGVyaXZh
dGlvbjo6Q3JlYXRlKEtleURlcml2YXRpb25BbGdvcml0aG06OkhES0ZfU0hBNTI2KTsKKy8vICAg
aWYgKGtkID09IG51bGxwdHIpIHJldHVybjsKKy8vICAgYXV0byBkZXJpdmVkX2tleV9vciA9IGtk
LT5EZXJpdmVLZXkoc2VjcmV0LCBzYWx0LCBsYWJlbCk7CisvLyAgIGlmICghZGVyaXZlZF9rZXlf
b3Iub2soKSkgcmV0dXJuOworLy8gICBEb1NvbWV0aGluZ1dpdGhLZXkoZGVyaXZlZF9rZXlfb3Iu
dmFsdWUoKSk7CitjbGFzcyBLZXlEZXJpdmF0aW9uIHsKKyBwdWJsaWM6CisgIEtleURlcml2YXRp
b24oKTsKKyAgdmlydHVhbCB+S2V5RGVyaXZhdGlvbigpOworCisgIC8vIERlcml2ZXMgYSBuZXcg
a2V5IGZyb20gZXhpc3Rpbmcga2V5IG1hdGVyaWFsLgorICAvLyBzZWNyZXQgLSBUaGUgcmFuZG9t
IHNlY3JldCB2YWx1ZSB5b3Ugd2lzaCB0byBkZXJpdmUgYSBrZXkgZnJvbS4KKyAgLy8gc2FsdCAt
IE9wdGlvbmFsIGJ1dCByZWNvbW1lbmRlZCAobm9uIHNlY3JldCkgY3J5cHRvZ3JhcGhpY2FsbHkg
cmFuZG9tLgorICAvLyBsYWJlbCAtIEEgbm9uIHNlY3JldCBidXQgdW5pcXVlIGxhYmVsIHZhbHVl
IHRvIGRldGVybWluZSB0aGUgZGVyaXZhdGlvbi4KKyAgLy8gZGVyaXZlZF9rZXlfYnl0ZV9zaXpl
IC0gVGhpcyBtdXN0IGJlIGF0IGxlYXN0IDEyOCBiaXRzLgorICAvLyByZXR1cm4gLSBBbiBvcHRp
b25hbCBaZXJvT25GcmVlQnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRlcml2ZWQga2V5IG9yCisgIC8v
IGFic2w6Om51bGxvcHQuIE51bGxvcHQgaW5kaWNhdGVzIGEgZmFpbHVyZSBpbiBkZXJpdmF0aW9u
LgorICB2aXJ0dWFsIGFic2w6Om9wdGlvbmFsPFplcm9PbkZyZWVCdWZmZXI8dWludDhfdD4+IERl
cml2ZUtleSgKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IHNlY3JldCwKKyAg
ICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IHNhbHQsCisgICAgICBydGM6OkFycmF5
Vmlldzxjb25zdCB1aW50OF90PiBsYWJlbCwKKyAgICAgIHNpemVfdCBkZXJpdmVkX2tleV9ieXRl
X3NpemUpID0gMDsKKworICAvLyBTdGF0aWMgZmFjdG9yeSB0aGF0IHdpbGwgcmV0dXJuIGFuIGlt
cGxlbWVudGF0aW9uIHRoYXQgaXMgY2FwYWJsZSBvZgorICAvLyBoYW5kbGluZyB0aGUga2V5IGRl
cml2YXRpb24gd2l0aCB0aGUgcmVxdWVzdGVkIGFsZ29yaXRobS4gSWYgbm8KKyAgLy8gaW1wbGVt
ZW50YXRpb24gaXMgYXZhaWxhYmxlIG51bGxwdHIgd2lsbCBiZSByZXR1cm5lZC4KKyAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxLZXlEZXJpdmF0aW9uPiBDcmVhdGUoCisgICAgICBLZXlEZXJpdmF0
aW9uQWxnb3JpdGhtIGtleV9kZXJpdmF0aW9uX2FsZ29yaXRobSk7CisKKyBwcml2YXRlOgorICBS
VENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEtleURlcml2YXRpb24pOworfTsKKworfSAgLy8g
bmFtZXNwYWNlIHJ0YworCisjZW5kaWYgIC8vIFJUQ19CQVNFX0tFWV9ERVJJVkFUSU9OX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9sb2NhdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2xvY2F0aW9uLmNjCmluZGV4IDljOTBkOWVjMTc5Nzc0NWI5MWM3Mzk2OTg0
ZWZiY2E5MDY0NzNiNWEuLmM5NWFkOWM0ODhhMDdkNDE1YjBlOThlNWVkNWE3ZTI1ZTE5MDAwM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2xvY2F0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmNjCkBAIC0xMCw4ICsxMCw2IEBACiAKICNpbmNs
dWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgogCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRp
bHMuaCIKLQogbmFtZXNwYWNlIHJ0YyB7CiAKIExvY2F0aW9uOjpMb2NhdGlvbihjb25zdCBjaGFy
KiBmdW5jdGlvbl9uYW1lLCBjb25zdCBjaGFyKiBmaWxlX2FuZF9saW5lKQpAQCAtMzEsNyArMjks
NyBAQCBMb2NhdGlvbiYgTG9jYXRpb246Om9wZXJhdG9yPShjb25zdCBMb2NhdGlvbiYgb3RoZXIp
IHsKIAogc3RkOjpzdHJpbmcgTG9jYXRpb246OlRvU3RyaW5nKCkgY29uc3QgewogICBjaGFyIGJ1
ZlsyNTZdOwotICBzcHJpbnRmbihidWYsIHNpemVvZihidWYpLCAiJXNAJXMiLCBmdW5jdGlvbl9u
YW1lXywgZmlsZV9hbmRfbGluZV8pOworICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXNA
JXMiLCBmdW5jdGlvbl9uYW1lXywgZmlsZV9hbmRfbGluZV8pOwogICByZXR1cm4gYnVmOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9sb2dnaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmgKaW5kZXggMWJkMGM3MjA1ZTY5MjY3YTFkMTE3MzgxN2Zm
MzQxOWVlNDUzMDVhYy4uYzdkMDgzZTQyZDM3YTMxOTEyNmEyYWRmN2U2MDM3YjdiMGI2ZDhiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbG9nZ2luZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2xvZ2dpbmcuaApAQCAtNTEsMTYgKzUxLDE1IEBACiAjaW5jbHVkZSA8
c3RyaW5nPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpICYm
ICFkZWZpbmVkKFdFQlJUQ19JT1MpCi0jaW5jbHVkZSA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNl
cy5oPgotI2VuZGlmCi0KICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
ZGVwcmVjYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2lubGluZS5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgorCisjaWYgZGVmaW5lZChXRUJSVENfTUFDKSAmJiAh
ZGVmaW5lZChXRUJSVENfSU9TKQorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmdfbWFjLmgiCisj
ZW5kaWYgIC8vIFdFQlJUQ19NQUMKIAogI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgZGVmaW5lZChE
TE9HX0FMV0FZU19PTikKICNkZWZpbmUgUlRDX0RMT0dfSVNfT04gMQpAQCAtNzAsMTEgKzY5LDYg
QEAKIAogbmFtZXNwYWNlIHJ0YyB7CiAKLSNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpICYmICFkZWZp
bmVkKFdFQlJUQ19JT1MpCi0vLyBSZXR1cm5zIGEgVVRGOCBkZXNjcmlwdGlvbiBmcm9tIGFuIE9T
IFggU3RhdHVzIGVycm9yLgotc3RkOjpzdHJpbmcgRGVzY3JpcHRpb25Gcm9tT1NTdGF0dXMoT1NT
dGF0dXMgZXJyKTsKLSNlbmRpZgotCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIC8vIE5vdGUgdGhhdCB0aGUg
bm9uLXN0YW5kYXJkIExvZ2dpbmdTZXZlcml0eSBhbGlhc2VzIGV4aXN0IGJlY2F1c2UgdGhleSBh
cmUKQEAgLTEyMSw2ICsxMTUsOCBAQCBjbGFzcyBMb2dTaW5rIHsKICAgdmlydHVhbCB2b2lkIE9u
TG9nTWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbXNnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExvZ2dpbmdTZXZlcml0eSBzZXZlcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiB0YWcpOworICB2aXJ0dWFsIHZvaWQgT25Mb2dNZXNzYWdlKGNvbnN0
IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dp
bmdTZXZlcml0eSBzZXZlcml0eSk7CiAgIHZpcnR1YWwgdm9pZCBPbkxvZ01lc3NhZ2UoY29uc3Qg
c3RkOjpzdHJpbmcmIG1lc3NhZ2UpID0gMDsKIH07CiAKQEAgLTUyMywxMCArNTE5LDEwIEBAIGNs
YXNzIExvZ01lc3NhZ2UgewogICAgICAgPyBzdGF0aWNfY2FzdDx2b2lkPigwKSAgICAgICAgICAg
ICAgIFwKICAgICAgIDogcnRjOjp3ZWJydGNfbG9nZ2luZ19pbXBsOjpMb2dNZXNzYWdlVm9pZGlm
eSgpJgogCi0jZGVmaW5lIFJUQ19MT0dfRklMRV9MSU5FKHNldiwgZmlsZSwgbGluZSkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBydGM6OndlYnJ0Y19sb2dnaW5nX2lt
cGw6OkxvZ0NhbGwoKSAmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgIHJ0Yzo6d2VicnRjX2xvZ2dpbmdfaW1wbDo6TG9nU3RyZWFtZXI8PigpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgPDwgcnRjOjp3ZWJydGNfbG9nZ2lu
Z19pbXBsOjpMb2dNZXRhZGF0YShfX0ZJTEVfXywgX19MSU5FX18sIHNldikKKyNkZWZpbmUgUlRD
X0xPR19GSUxFX0xJTkUoc2V2LCBmaWxlLCBsaW5lKSAgICAgIFwKKyAgcnRjOjp3ZWJydGNfbG9n
Z2luZ19pbXBsOjpMb2dDYWxsKCkgJiAgICAgICAgIFwKKyAgICAgIHJ0Yzo6d2VicnRjX2xvZ2dp
bmdfaW1wbDo6TG9nU3RyZWFtZXI8PigpIFwKKyAgICAgICAgICA8PCBydGM6OndlYnJ0Y19sb2dn
aW5nX2ltcGw6OkxvZ01ldGFkYXRhKGZpbGUsIGxpbmUsIHNldikKIAogI2RlZmluZSBSVENfTE9H
KHNldikgUlRDX0xPR19GSUxFX0xJTkUocnRjOjpzZXYsIF9fRklMRV9fLCBfX0xJTkVfXykKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbG9nZ2luZ19tYWMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfbWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY1ZGI1NjBjMTg3OWYy
Yjg4MDM3NzMzOTQxOTg4MGNmNjE4N2M1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfbWFjLmgKQEAg
LTAsMCArMSwyOCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKyNpZm5kZWYgUlRDX0JBU0VfTE9HR0lO
R19NQUNfSF8KKyNkZWZpbmUgUlRDX0JBU0VfTE9HR0lOR19NQUNfSF8KKworI2lmICFkZWZpbmVk
KFdFQlJUQ19NQUMpIHx8IGRlZmluZWQoV0VCUlRDX0lPUykKKyNlcnJvciAiT25seSBpbmNsdWRl
IHRoaXMgaGVhZGVyIGluIG1hY09TIGJ1aWxkcyIKKyNlbmRpZgorCisjaW5jbHVkZSA8Q29yZVNl
cnZpY2VzL0NvcmVTZXJ2aWNlcy5oPgorCisjaW5jbHVkZSA8c3RyaW5nPgorCituYW1lc3BhY2Ug
cnRjIHsKKworLy8gUmV0dXJucyBhIFVURjggZGVzY3JpcHRpb24gZnJvbSBhbiBPUyBYIFN0YXR1
cyBlcnJvci4KK3N0ZDo6c3RyaW5nIERlc2NyaXB0aW9uRnJvbU9TU3RhdHVzKE9TU3RhdHVzIGVy
cik7CisKK30gIC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAvLyBSVENfQkFTRV9MT0dHSU5H
X01BQ19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ19tYWMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX21hYy5tbQppbmRleCAzNzhjZmJmY2I5
Y2QxNDc3MDExODBiMzBiMDdiODU5Mjk3YjVmYjU3Li5iZDVmMmI5ZDM4ZmJmNWU4ZDkwMDc1YmZi
YzQ5YTQwMDM2NDQ0YjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX21hYy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX21hYy5tbQpAQCAt
OCwxNSArOCwxNSBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZ19tYWMuaCIKIAogI2ltcG9ydCA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+CiAKLQogbmFtZXNwYWNlIHJ0YyB7CiBzdGQ6OnN0cmluZyBEZXNj
cmlwdGlvbkZyb21PU1N0YXR1cyhPU1N0YXR1cyBlcnIpIHsKICAgTlNFcnJvciogZXJyb3IgPQog
ICAgICAgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TT1NTdGF0dXNFcnJvckRvbWFpbiBjb2Rl
OmVyciB1c2VySW5mbzpuaWxdOwogICByZXR1cm4gZXJyb3IuZGVzY3JpcHRpb24uVVRGOFN0cmlu
ZzsKIH0KKwogfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ191bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dp
bmdfdW5pdHRlc3QuY2MKaW5kZXggNmIyMjYzOTIzZmE4NTAxYjY3YjNiZGVhY2MwNDY3N2UwNGM2
ZGYzNi4uNGRlMWNmMmZlNGNhYWIzZTdlZGQ0NGViOWJmZDQ0N2EwNmRmYjAxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9n
Z2luZ191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX3VuaXR0ZXN0LmNjCkBAIC0yMjEsNyArMjIxLDcgQEAg
VEVTVChMb2dUZXN0LCBTaW5nbGVTdHJlYW0pIHsKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNU
ICYmICFkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQogVEVTVChMb2dUZXN0LCBDaGVja3MpIHsKLSAg
RVhQRUNUX0RFQVRIKFJUQ19GQVRBTCgpIDw8ICJtZXNzYWdlIiwKKyAgRVhQRUNUX0RFQVRIKEZB
VEFMKCkgPDwgIm1lc3NhZ2UiLAogICAgICAgICAgICAgICAgIlxuXG4jXG4iCiAgICAgICAgICAg
ICAgICAiIyBGYXRhbCBlcnJvciBpbjogXFxTKywgbGluZSBcXHcrXG4iCiAgICAgICAgICAgICAg
ICAiIyBsYXN0IHN5c3RlbSBlcnJvcjogXFx3K1xuIgpAQCAtMjkyLDcgKzI5Miw3IEBAIGNsYXNz
IExvZ1RocmVhZCB7CiAgIHN0YXRpYyB2b2lkIFRocmVhZEVudHJ5KHZvaWQqIHApIHsgc3RhdGlj
X2Nhc3Q8TG9nVGhyZWFkKj4ocCktPlJ1bigpOyB9CiAKICAgUGxhdGZvcm1UaHJlYWQgdGhyZWFk
XzsKLSAgRXZlbnQgZXZlbnRfe2ZhbHNlLCBmYWxzZX07CisgIEV2ZW50IGV2ZW50XzsKIH07CiAK
IC8vIEVuc3VyZSB3ZSBkb24ndCBjcmFzaCB3aGVuIGFkZGluZy9yZW1vdmluZyBzdHJlYW1zIHdo
aWxlIHRocmVhZHMgYXJlIGdvaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nc2lua3MuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dzaW5rcy5jYwppbmRleCA2
NjJiMWYyMGRlOTc4NWM3NTM2MDg0MGFhNWVlOGIwOWM3ZDllNzE3Li5jMDFiYWZiZGQyMjgwZjQ1
OTg4YjI5MjdjYzc1YmNiMDRkYTRmODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dzaW5rcy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dzaW5rcy5jYwpA
QCAtMTAsMTAgKzEwLDEyIEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9sb2dzaW5rcy5oIgogCisj
aW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPHN0cmluZz4K
IAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVh
bS5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nc2lua3MuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ3NpbmtzLmgKaW5kZXgg
Y2FmNGE1ZjcyOGEzNzk0NTI1MGQwZjg5MjU3MjkwYjVjYmM1NDc5Ny4uZDA4NjdhMjIwMjRiYmQx
NWU3ZWRkZjg0NTVjM2M5N2RkMGY5NjE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nc2lua3MuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dzaW5rcy5oCkBA
IC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFJUQ19CQVNFX0xPR1NJTktTX0hfCiAjZGVmaW5lIFJU
Q19CQVNFX0xPR1NJTktTX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8c3RyaW5nPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZG5zX3Jlc3BvbmRlcl9pbnRlcmZhY2Uu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21k
bnNfcmVzcG9uZGVyX2ludGVyZmFjZS5oCmluZGV4IDlkYmFmNTZhZDg4ZjEwNTliZjNmM2YwMDQ4
YWExYzBhNjE1NmE4N2IuLjcxOTM4YjI1NzZkNzlkZDhhNmM3MTdlNmEyMDVkNDM2NWFjMjE3YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL21kbnNfcmVzcG9uZGVyX2ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21kbnNfcmVzcG9uZGVyX2ludGVyZmFj
ZS5oCkBAIC0xMiwzNiArMTIsMzUgQEAKICNkZWZpbmUgUlRDX0JBU0VfTUROU19SRVNQT05ERVJf
SU5URVJGQUNFX0hfCiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPG1hcD4KLSNp
bmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2lwYWRkcmVzcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFk
ZHJlc3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIERlZmluZXMgYW4gbUROUyByZXNw
b25kZXIgdGhhdCBjYW4gYmUgdXNlZCBpbiBJQ0UgY2FuZGlkYXRlIGdhdGhlcmluZywgd2hlcmUK
LS8vIHRoZSBsb2NhbCBJUCBhZGRyZXNzZXMgb2YgaG9zdCBjYW5kaWRhdGVzIGFyZSBvYmZ1c2Nh
dGVkIGJ5IG1ETlMgaG9zdG5hbWVzLgotY2xhc3MgTURuc1Jlc3BvbmRlckludGVyZmFjZSB7Cisv
LyB0aGUgbG9jYWwgSVAgYWRkcmVzc2VzIG9mIGhvc3QgY2FuZGlkYXRlcyBhcmUgcmVwbGFjZWQg
YnkgbUROUyBob3N0bmFtZXMuCitjbGFzcyBNZG5zUmVzcG9uZGVySW50ZXJmYWNlIHsKICBwdWJs
aWM6CiAgIHVzaW5nIE5hbWVDcmVhdGVkQ2FsbGJhY2sgPQogICAgICAgc3RkOjpmdW5jdGlvbjx2
b2lkKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiwgY29uc3Qgc3RkOjpzdHJpbmcmKT47CiAgIHVzaW5n
IE5hbWVSZW1vdmVkQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+OwogCi0gIE1E
bnNSZXNwb25kZXJJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7Ci0gIHZpcnR1YWwgfk1EbnNSZXNwb25k
ZXJJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CisgIE1kbnNSZXNwb25kZXJJbnRlcmZhY2UoKSA9IGRl
ZmF1bHQ7CisgIHZpcnR1YWwgfk1kbnNSZXNwb25kZXJJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CiAK
LSAgLy8gQXN5bmNocm9ub3VzbHkgY3JlYXRlcyBhIHR5cGUtNCBVVUlEIGhvc3RuYW1lIGZvciBh
biBJUCBhZGRyZXNzLiBUaGUKLSAgLy8gY3JlYXRlZCBuYW1lIHNob3VsZCBiZSBnaXZlbiB0byB8
Y2FsbGJhY2t8IHdpdGggdGhlIGFkZHJlc3MgdGhhdCBpdAotICAvLyByZXByZXNlbnRzLgorICAv
LyBBc3luY2hyb25vdXNseSBjcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IG5hbWUgdmlhIHxjYWxs
YmFja3wgZm9yIHxhZGRyfCBpZgorICAvLyB0aGVyZSBpcyBubyBuYW1lIG1hcHBlZCB0byBpdCBi
eSB0aGlzIHJlc3BvbmRlciwgYW5kIGluaXRpYWxpemVzIHRoZQorICAvLyByZWZlcmVuY2UgY291
bnQgb2YgdGhpcyBuYW1lIHRvIG9uZS4gT3RoZXJ3aXNlIHRoZSBleGlzdGluZyBuYW1lIG1hcHBl
ZCB0bworICAvLyB8YWRkcnwgaXMgcmV0dXJuZWQgYW5kIGl0cyByZWZlcmVuY2UgY291bnQgaXMg
aW5jcmVtZW50ZWQgYnkgb25lLgogICB2aXJ0dWFsIHZvaWQgQ3JlYXRlTmFtZUZvckFkZHJlc3Mo
Y29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOYW1lQ3JlYXRlZENhbGxiYWNrIGNhbGxiYWNrKSA9IDA7Ci0gIC8vIFJlbW92ZXMg
dGhlIG5hbWUgbWFwcGVkIHRvIHRoZSBnaXZlbiBhZGRyZXNzIGlmIHRoZXJlIGlzIHN1Y2ggYW4K
LSAgLy8gbmFtZS1hZGRyZXNzIG1hcHBpbmcgcHJldmlvdXNseSBjcmVhdGVkIHZpYSBDcmVhdGVO
YW1lRm9yQWRkcmVzcy4gVGhlCi0gIC8vIHJlc3VsdCBvZiB3aGV0aGVyIGFuIGFzc29jaWF0ZWQg
bmFtZS1hZGRyZXNzIG1hcHBpbmcgaXMgcmVtb3ZlZCBzaG91bGQgYmUKLSAgLy8gZ2l2ZW4gdG8g
fGNhbGxiYWNrfC4KKyAgLy8gRGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBt
YXBwZWQgbmFtZSBvZiB8YWRkcnwsIGlmCisgIC8vIHRoZXJlIGlzIGEgbWFwIGNyZWF0ZWQgcHJl
dmlvdXNseSB2aWEgQ3JlYXRlTmFtZUZvckFkZHJlc3M7IGFzeW5jaHJvbm91c2x5CisgIC8vIHJl
bW92ZXMgdGhlIGFzc29jaWF0aW9uIGJldHdlZW4gfGFkZHJ8IGFuZCBpdHMgbWFwcGVkIG5hbWUs
IGFuZCByZXR1cm5zCisgIC8vIHRydWUgdmlhIHxjYWxsYmFja3wgaWYgdGhlIGRlY3JlbWVudGVk
IHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uCisgIC8vIE90aGVyd2lzZSBubyBvcGVyYXRp
b24gaXMgZG9uZSBhbmQgZmFsc2UgaXMgcmV0dXJuZWQgdmlhIHxjYWxsYmFja3wKKyAgLy8gYXN5
bmNocm9ub3VzbHkuCiAgIHZpcnR1YWwgdm9pZCBSZW1vdmVOYW1lRm9yQWRkcmVzcyhjb25zdCBy
dGM6OklQQWRkcmVzcyYgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5hbWVSZW1vdmVkQ2FsbGJhY2sgY2FsbGJhY2spID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZW1vcnkvYWxp
Z25lZF9tYWxsb2MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9tZW1vcnkvYWxpZ25lZF9tYWxsb2MuY2MKaW5kZXggYTFkNTRiZGI3ODVhOGRm
ZGE1ZTM0OTNkMDI2YjlhYzRlZDM5MjExOS4uYzg5M2M5NmVmMmFmMDg4M2MwM2ZhMTIwZWZmMzg1
YTU4ZTNhY2I0OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5L2FsaWduZWRfbWFsbG9jLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeS9hbGlnbmVk
X21hbGxvYy5jYwpAQCAtMTAsOCArMTAsOCBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVtb3J5
L2FsaWduZWRfbWFsbG9jLmgiCiAKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxjc3Ry
aW5nPgorI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gZm9yIGZyZWUsIG1hbGxvYworI2luY2x1ZGUg
PHN0cmluZy5oPiAgLy8gZm9yIG1lbWNweQogCiAjaWZkZWYgX1dJTjMyCiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbWVtb3J5X3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeV9zdHJlYW0uY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTQxZGUwNzBjNzI4MWNiOGY3ZjQ5OTU3NmU2YzZkYzEwODcxOTZkZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21l
bW9yeV9zdHJlYW0uY2MKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTgg
VGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bmNsdWRlIDxhbGdvcml0aG0+CisKKyNpbmNsdWRlICJydGNfYmFzZS9tZW1vcnlfc3RyZWFtLmgi
CisKK25hbWVzcGFjZSBydGMgeworCitTdHJlYW1TdGF0ZSBNZW1vcnlTdHJlYW06OkdldFN0YXRl
KCkgY29uc3QgeworICByZXR1cm4gU1NfT1BFTjsKK30KKworU3RyZWFtUmVzdWx0IE1lbW9yeVN0
cmVhbTo6UmVhZCh2b2lkKiBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBi
eXRlc19yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSB7
CisgIGlmIChzZWVrX3Bvc2l0aW9uXyA+PSBkYXRhX2xlbmd0aF8pIHsKKyAgICByZXR1cm4gU1Jf
RU9TOworICB9CisgIHNpemVfdCBhdmFpbGFibGUgPSBkYXRhX2xlbmd0aF8gLSBzZWVrX3Bvc2l0
aW9uXzsKKyAgaWYgKGJ5dGVzID4gYXZhaWxhYmxlKSB7CisgICAgLy8gUmVhZCBwYXJ0aWFsIGJ1
ZmZlcgorICAgIGJ5dGVzID0gYXZhaWxhYmxlOworICB9CisgIG1lbWNweShidWZmZXIsICZidWZm
ZXJfW3NlZWtfcG9zaXRpb25fXSwgYnl0ZXMpOworICBzZWVrX3Bvc2l0aW9uXyArPSBieXRlczsK
KyAgaWYgKGJ5dGVzX3JlYWQpIHsKKyAgICAqYnl0ZXNfcmVhZCA9IGJ5dGVzOworICB9CisgIHJl
dHVybiBTUl9TVUNDRVNTOworfQorCitTdHJlYW1SZXN1bHQgTWVtb3J5U3RyZWFtOjpXcml0ZShj
b25zdCB2b2lkKiBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVz
X3dyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSB7
CisgIHNpemVfdCBhdmFpbGFibGUgPSBidWZmZXJfbGVuZ3RoXyAtIHNlZWtfcG9zaXRpb25fOwor
ICBpZiAoMCA9PSBhdmFpbGFibGUpIHsKKyAgICAvLyBJbmNyZWFzZSBidWZmZXIgc2l6ZSB0byB0
aGUgbGFyZ2VyIG9mOgorICAgIC8vIGEpIG5ldyBwb3NpdGlvbiByb3VuZGVkIHVwIHRvIG5leHQg
MjU2IGJ5dGVzCisgICAgLy8gYikgZG91YmxlIHRoZSBwcmV2aW91cyBsZW5ndGgKKyAgICBzaXpl
X3QgbmV3X2J1ZmZlcl9sZW5ndGggPQorICAgICAgICBzdGQ6Om1heCgoKHNlZWtfcG9zaXRpb25f
ICsgYnl0ZXMpIHwgMHhGRikgKyAxLCBidWZmZXJfbGVuZ3RoXyAqIDIpOworICAgIFN0cmVhbVJl
c3VsdCByZXN1bHQgPSBEb1Jlc2VydmUobmV3X2J1ZmZlcl9sZW5ndGgsIGVycm9yKTsKKyAgICBp
ZiAoU1JfU1VDQ0VTUyAhPSByZXN1bHQpIHsKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
ICAgIFJUQ19EQ0hFQ0soYnVmZmVyX2xlbmd0aF8gPj0gbmV3X2J1ZmZlcl9sZW5ndGgpOworICAg
IGF2YWlsYWJsZSA9IGJ1ZmZlcl9sZW5ndGhfIC0gc2Vla19wb3NpdGlvbl87CisgIH0KKworICBp
ZiAoYnl0ZXMgPiBhdmFpbGFibGUpIHsKKyAgICBieXRlcyA9IGF2YWlsYWJsZTsKKyAgfQorICBt
ZW1jcHkoJmJ1ZmZlcl9bc2Vla19wb3NpdGlvbl9dLCBidWZmZXIsIGJ5dGVzKTsKKyAgc2Vla19w
b3NpdGlvbl8gKz0gYnl0ZXM7CisgIGlmIChkYXRhX2xlbmd0aF8gPCBzZWVrX3Bvc2l0aW9uXykg
eworICAgIGRhdGFfbGVuZ3RoXyA9IHNlZWtfcG9zaXRpb25fOworICB9CisgIGlmIChieXRlc193
cml0dGVuKSB7CisgICAgKmJ5dGVzX3dyaXR0ZW4gPSBieXRlczsKKyAgfQorICByZXR1cm4gU1Jf
U1VDQ0VTUzsKK30KKwordm9pZCBNZW1vcnlTdHJlYW06OkNsb3NlKCkgeworICAvLyBub3RoaW5n
IHRvIGRvCit9CisKK2Jvb2wgTWVtb3J5U3RyZWFtOjpTZXRQb3NpdGlvbihzaXplX3QgcG9zaXRp
b24pIHsKKyAgaWYgKHBvc2l0aW9uID4gZGF0YV9sZW5ndGhfKQorICAgIHJldHVybiBmYWxzZTsK
KyAgc2Vla19wb3NpdGlvbl8gPSBwb3NpdGlvbjsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
TWVtb3J5U3RyZWFtOjpHZXRQb3NpdGlvbihzaXplX3QqIHBvc2l0aW9uKSBjb25zdCB7CisgIGlm
IChwb3NpdGlvbikKKyAgICAqcG9zaXRpb24gPSBzZWVrX3Bvc2l0aW9uXzsKKyAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgTWVtb3J5U3RyZWFtOjpHZXRTaXplKHNpemVfdCogc2l6ZSkgY29uc3Qg
eworICBpZiAoc2l6ZSkKKyAgICAqc2l6ZSA9IGRhdGFfbGVuZ3RoXzsKKyAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgTWVtb3J5U3RyZWFtOjpSZXNlcnZlU2l6ZShzaXplX3Qgc2l6ZSkgeworICBy
ZXR1cm4gKFNSX1NVQ0NFU1MgPT0gRG9SZXNlcnZlKHNpemUsIG51bGxwdHIpKTsKK30KKworLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSgpIHt9CisK
K01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKGNvbnN0IGNoYXIqIGRhdGEpIHsKKyAgU2V0RGF0
YShkYXRhLCBzdHJsZW4oZGF0YSkpOworfQorCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShj
b25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7CisgIFNldERhdGEoZGF0YSwgbGVuZ3Ro
KTsKK30KKworTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkgeworICBkZWxldGVbXSBidWZm
ZXJfOworfQorCit2b2lkIE1lbW9yeVN0cmVhbTo6U2V0RGF0YShjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKSB7CisgIGRhdGFfbGVuZ3RoXyA9IGJ1ZmZlcl9sZW5ndGhfID0gbGVuZ3Ro
OworICBkZWxldGVbXSBidWZmZXJfOworICBidWZmZXJfID0gbmV3IGNoYXJbYnVmZmVyX2xlbmd0
aF9dOworICBtZW1jcHkoYnVmZmVyXywgZGF0YSwgZGF0YV9sZW5ndGhfKTsKKyAgc2Vla19wb3Np
dGlvbl8gPSAwOworfQorCitTdHJlYW1SZXN1bHQgTWVtb3J5U3RyZWFtOjpEb1Jlc2VydmUoc2l6
ZV90IHNpemUsIGludCogZXJyb3IpIHsKKyAgaWYgKGJ1ZmZlcl9sZW5ndGhfID49IHNpemUpCisg
ICAgcmV0dXJuIFNSX1NVQ0NFU1M7CisKKyAgaWYgKGNoYXIqIG5ld19idWZmZXIgPSBuZXcgY2hh
cltzaXplXSkgeworICAgIG1lbWNweShuZXdfYnVmZmVyLCBidWZmZXJfLCBkYXRhX2xlbmd0aF8p
OworICAgIGRlbGV0ZVtdIGJ1ZmZlcl87CisgICAgYnVmZmVyXyA9IG5ld19idWZmZXI7CisgICAg
YnVmZmVyX2xlbmd0aF8gPSBzaXplOworICAgIHJldHVybiBTUl9TVUNDRVNTOworICB9CisKKyAg
aWYgKGVycm9yKSB7CisgICAgKmVycm9yID0gRU5PTUVNOworICB9CisgIHJldHVybiBTUl9FUlJP
UjsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5X3N0cmVhbS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5X3N0
cmVhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkzNmY3MWIzNGMwMTBiMjI2M2U0NzgwMjkzMjliMWVjZmQyNzBk
NzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9tZW1vcnlfc3RyZWFtLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKworI2lmbmRlZiBSVENfQkFTRV9NRU1PUllfU1RSRUFNX0hfCisjZGVmaW5l
IFJUQ19CQVNFX01FTU9SWV9TVFJFQU1fSF8KKworI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5o
IgorCituYW1lc3BhY2UgcnRjIHsKKworLy8gTWVtb3J5U3RyZWFtIGR5bmFtaWNhbGx5IHJlc2l6
ZXMgdG8gYWNjb21vZGF0ZSB3cml0dGVuIGRhdGEuCisKK2NsYXNzIE1lbW9yeVN0cmVhbSBmaW5h
bCA6IHB1YmxpYyBTdHJlYW1JbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgTWVtb3J5U3RyZWFtKCk7
CisgIGV4cGxpY2l0IE1lbW9yeVN0cmVhbShjb25zdCBjaGFyKiBkYXRhKTsgIC8vIENhbGxzIFNl
dERhdGEoZGF0YSwgc3RybGVuKGRhdGEpKQorICBNZW1vcnlTdHJlYW0oY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90IGxlbmd0aCk7ICAvLyBDYWxscyBTZXREYXRhKGRhdGEsIGxlbmd0aCkKKyAgfk1l
bW9yeVN0cmVhbSgpIG92ZXJyaWRlOworCisgIFN0cmVhbVN0YXRlIEdldFN0YXRlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgIFN0cmVhbVJlc3VsdCBSZWFkKHZvaWQqIGJ1ZmZlciwKKyAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVz
X3JlYWQsCisgICAgICAgICAgICAgICAgICAgIGludCogZXJyb3IpIG92ZXJyaWRlOworICBTdHJl
YW1SZXN1bHQgV3JpdGUoY29uc3Qgdm9pZCogYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc193cml0dGVu
LAorICAgICAgICAgICAgICAgICAgICAgaW50KiBlcnJvcikgb3ZlcnJpZGU7CisgIHZvaWQgQ2xv
c2UoKSBvdmVycmlkZTsKKyAgYm9vbCBTZXRQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIG92ZXJy
aWRlOworICBib29sIEdldFBvc2l0aW9uKHNpemVfdCogcG9zaXRpb24pIGNvbnN0IG92ZXJyaWRl
OworICBib29sIEdldFNpemUoc2l6ZV90KiBzaXplKSBjb25zdCBvdmVycmlkZTsKKyAgYm9vbCBS
ZXNlcnZlU2l6ZShzaXplX3Qgc2l6ZSkgb3ZlcnJpZGU7CisKKyAgY2hhciogR2V0QnVmZmVyKCkg
eyByZXR1cm4gYnVmZmVyXzsgfQorICBjb25zdCBjaGFyKiBHZXRCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBidWZmZXJfOyB9CisKKyAgdm9pZCBTZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBsZW5ndGgpOworCisgcHJpdmF0ZToKKyAgU3RyZWFtUmVzdWx0IERvUmVzZXJ2ZShzaXplX3Qg
c2l6ZSwgaW50KiBlcnJvcik7CisKKyAgLy8gSW52YXJpYW50OiAwIDw9IHNlZWtfcG9zaXRpb24g
PD0gZGF0YV9sZW5ndGhfIDw9IGJ1ZmZlcl9sZW5ndGhfCisgIGNoYXIqIGJ1ZmZlcl8gPSBudWxs
cHRyOworICBzaXplX3QgYnVmZmVyX2xlbmd0aF8gPSAwOworICBzaXplX3QgZGF0YV9sZW5ndGhf
ID0gMDsKKyAgc2l6ZV90IHNlZWtfcG9zaXRpb25fID0gMDsKK307CisKK30gIC8vIG5hbWVzcGFj
ZSBydGMKKworI2VuZGlmICAvLyBSVENfQkFTRV9NRU1PUllfU1RSRUFNX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZW1v
cnlfdXNhZ2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9tZW1vcnlfdXNhZ2UuY2MKaW5kZXggYTcwYzU0NzUzZmM0YWY3Yzg1NzQzNWM0OGQy
YTc0ZWIxYTI0NGJmNS4uOWNkMzZkMzcyMDk5YWE0OTdiMGI0M2FiYzg2NmViYmUyM2NhNjQ2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbWVtb3J5X3VzYWdlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeV91c2FnZS5jYwpAQCAtNjEsNiArNjEsOSBAQCBp
bnQ2NF90IEdldFByb2Nlc3NSZXNpZGVudFNpemVCeXRlcygpIHsKICAgICByZXR1cm4gLTE7CiAg
IH0KICAgcmV0dXJuIHBtYy5Xb3JraW5nU2V0U2l6ZTsKKyNlbGlmIGRlZmluZWQoV0VCUlRDX0ZV
Q0hTSUEpCisgIFJUQ19MT0dfRVJSKExTX0VSUk9SKSA8PCAiR2V0UHJvY2Vzc1Jlc2lkZW50U2l6
ZUJ5dGVzKCkgbm90IGltcGxlbWVudGVkIjsKKyAgcmV0dXJuIDA7CiAjZWxzZQogICAvLyBOb3Qg
aW1wbGVtZW50ZWQgeWV0LgogICBzdGF0aWNfYXNzZXJ0KGZhbHNlLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZWRp
Z2VzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL21lc3NhZ2VkaWdlc3QuY2MKaW5kZXggOWMxMGJjZDQ4NmE3NjFiYmVkNmRmYTNhMzliNmRi
YTgwZGE0NGY4OS4uNWEwZDE2YTlhMDRiNjcyZWM2OWNmZjc3ZmM5ODI4NzQ1MDY3N2E3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbWVzc2FnZWRpZ2VzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmNjCkBAIC0xMCw5ICsxMCw5IEBACiAK
ICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAKLSNpbmNsdWRlIDxtZW1vcnk+
Ci0KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPG1l
bW9yeT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xkaWdlc3QuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VkaWdlc3Qu
aAppbmRleCBmYzgyMDg4NTQzNmY4Y2U3MWQ0NWY2Y2IyMTUzYTdlZjYxNzNiMzk4Li43NTdmOTE0
ODc2YjA3ZTQxMzA3ODFlOGU0YmMxN2ZhNWZhYTk3Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
bWVzc2FnZWRpZ2VzdC5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFJUQ19CQVNFX01FU1NB
R0VESUdFU1RfSF8KICNkZWZpbmUgUlRDX0JBU0VfTUVTU0FHRURJR0VTVF9IXwogCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiBuYW1lc3BhY2UgcnRjIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L21lc3NhZ2VoYW5kbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oCmluZGV4IGRmMmQxYWRhOGRkY2VjYzQ0OTNl
NWJhMjQ1YTg3NDI3MGViMDNhZjkuLjBjNDA4NTNlMjE0ODU1YzQ2NDc4YzVmN2E5MGVmZjE0MjI2
NGM3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL21lc3NhZ2VoYW5kbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZWhhbmRsZXIuaApAQCAtMTEsNyAr
MTEsNiBAQAogI2lmbmRlZiBSVENfQkFTRV9NRVNTQUdFSEFORExFUl9IXwogI2RlZmluZSBSVENf
QkFTRV9NRVNTQUdFSEFORExFUl9IXwogCi0jaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0
aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9t
ZXNzYWdlcXVldWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9tZXNzYWdlcXVldWUuY2MKaW5kZXggYTU2MWFmNDJlYjgwODRhNzRhMzliZWJj
OWE0NDg4NzdiNjIzM2Q4Zi4uMjA0OTUyYTdlMmFiZmI0MjMzODgzNGUwZWM5MzRjNGViY2ZlNWQw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5jYwpAQCAtOCwxMyArOCwxNSBA
QAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgogICovCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHN0cmluZz4K
KyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L3N0cmluZ2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50Lmgi
CiAKIG5hbWVzcGFjZSBydGMgewpAQCAtMzQ4LDggKzM1MCwxMCBAQCB2b2lkIE1lc3NhZ2VRdWV1
ZTo6UG9zdChjb25zdCBMb2NhdGlvbiYgcG9zdGVkX2Zyb20sCiAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VEYXRhKiBw
ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdGltZV9zZW5zaXRpdmUpIHsKLSAg
aWYgKElzUXVpdHRpbmcoKSkKKyAgaWYgKElzUXVpdHRpbmcoKSkgeworICAgIGRlbGV0ZSBwZGF0
YTsKICAgICByZXR1cm47CisgIH0KIAogICAvLyBLZWVwIHRocmVhZCBzYWZlCiAgIC8vIEFkZCB0
aGUgbWVzc2FnZSB0byB0aGUgZW5kIG9mIHRoZSBxdWV1ZQpAQCAtNDA1LDYgKzQwOSw3IEBAIHZv
aWQgTWVzc2FnZVF1ZXVlOjpEb0RlbGF5UG9zdChjb25zdCBMb2NhdGlvbiYgcG9zdGVkX2Zyb20s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZURhdGEqIHBkYXRhKSB7CiAgIGlmIChJc1F1aXR0
aW5nKCkpIHsKKyAgICBkZWxldGUgcGRhdGE7CiAgICAgcmV0dXJuOwogICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21l
c3NhZ2VxdWV1ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmgKaW5kZXggZTdlNDc5Mjg1ZDIwYzgzMzlhNjJlZTYzZWFm
M2FhNTBkMDk5ZTAyZS4uYzFiOWI1YTkxNmE4OTVhYzA2ZjJiZGViN2I1OTljYWM2M2RlNzhiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbWVzc2FnZXF1ZXVlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmgKQEAgLTE3LDcgKzE3LDYgQEAKICNp
bmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxxdWV1ZT4KLSNpbmNs
dWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2Nv
bnN0cnVjdG9ybWFnaWMuaCIKQEAgLTI4LDcgKzI3LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9z
b2NrZXRzZXJ2ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3Np
Z3Nsb3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25h
dHNlcnZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL25hdHNlcnZlci5jYwppbmRleCA4MTE5Mzc2MWE2M2MwNTVjNzI2OTFhOTFkZmM2M2Mw
MzMzODllMTBmLi5iMDA1ZWNhZTdhMGQxYTViZjZhMGE2YTQ1ODJkMTBhMWM3OGQ5YTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9uYXRzZXJ2ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbmF0c2VydmVyLmNjCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBOQVRT
ZXJ2ZXI6Ok9uSW50ZXJuYWxVRFBQYWNrZXQoQXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90
aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90
JiAvKiBwYWNrZXRfdGltZV91cyAqLykgewogICAvLyBSZWFkIHRoZSBpbnRlbmRlZCBkZXN0aW5h
dGlvbiBmcm9tIHRoZSB3aXJlLgogICBTb2NrZXRBZGRyZXNzIGRlc3RfYWRkcjsKICAgc2l6ZV90
IGxlbmd0aCA9IFVucGFja0FkZHJlc3NGcm9tTkFUKGJ1Ziwgc2l6ZSwgJmRlc3RfYWRkcik7CkBA
IC0xODQsNyArMTg0LDcgQEAgdm9pZCBOQVRTZXJ2ZXI6Ok9uRXh0ZXJuYWxVRFBQYWNrZXQoQXN5
bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8p
IHsKICAgU29ja2V0QWRkcmVzcyBsb2NhbF9hZGRyID0gc29ja2V0LT5HZXRMb2NhbEFkZHJlc3Mo
KTsKIAogICAvLyBGaW5kIHRoZSB0cmFuc2xhdGlvbiBmb3IgdGhpcyBhZGRyZXNzZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9uYXRzZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL25hdHNlcnZlci5oCmluZGV4IGY0Y2FiY2YwZDliN2UxMzBiNWM4ZDI5OWE5NWM0
OGI4OTExMGRlNjQuLmQxNmI1MzcwZjA1MDdjNmM4NGVlODg4MTM1MzljZGU5YmVmYzZhNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL25hdHNlcnZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL25hdHNlcnZlci5oCkBAIC04MSwxMiArODEsMTIgQEAgY2xhc3MgTkFU
U2VydmVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU29ja2V0QWRkcmVz
cyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBh
Y2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBh
Y2tldF90aW1lX3VzKTsKICAgdm9pZCBPbkV4dGVybmFsVURQUGFja2V0KEFzeW5jUGFja2V0U29j
a2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpOwogCiAg
cHJpdmF0ZToKICAgdHlwZWRlZiBzdGQ6OnNldDxTb2NrZXRBZGRyZXNzLCBBZGRyQ21wPiBBZGRy
ZXNzU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXRoZWxwZXIuaAppbmRleCBlODZkMTI2Y2JmNDVjNmY3
OWVhMjAxNTE1NTAxNTg4ZDFhNTgzZGViLi5mOTU2MTM4MGZiN2QyMzAzMmFhZTlmNmIwNmNlOTIx
OTMzYzBlZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9uZXRoZWxwZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXRoZWxwZXIuaApAQCAtMTAsNyArMTAsNiBA
QAogI2lmbmRlZiBSVENfQkFTRV9ORVRIRUxQRVJfSF8KICNkZWZpbmUgUlRDX0JBU0VfTkVUSEVM
UEVSX0hfCiAKLSNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPHN0cmluZz4KIAogLy8gVGhp
cyBoZWFkZXIgY29udGFpbnMgaGVscGVyIGZ1bmN0aW9ucyBhbmQgY29uc3RhbnRzIHVzZWQgYnkg
ZGlmZmVyZW50IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXRoZWxwZXJzLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVycy5jYwppbmRleCBiMTIy
MWMzZDAwMTRkYjYzNDQxOGJiZGJmYjFkN2U2NTg3OGNlODViLi44MWNkMWFmY2VmNGEwNjllNmE3
NmEwNzZkYTIwZDFjZTEwNzFiMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXRoZWxwZXJzLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldGhlbHBlcnMuY2MK
QEAgLTI1LDEwICsyNSw5IEBACiAjZW5kaWYKICNlbmRpZiAgLy8gZGVmaW5lZChXRUJSVENfUE9T
SVgpICYmICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQogCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
Ynl0ZW9yZGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NpZ25hbHRocmVhZC5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIiAgLy8gZm9yIHNp
Z25hbF93aXRoX3RocmVhZC4uLgogCiBuYW1lc3BhY2UgcnRjIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVy
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
bmV0aGVscGVycy5oCmluZGV4IGY5ZDE4OGY2MWQwOWE3NzgyNTEzNzNjNzM4ZGFlN2U4NjkzMjRh
MWUuLjEzOGY5NTgzY2NjYTFhY2E4YTgwOGZkYWRjNDEyYzhmYjRhODBmYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldGhl
bHBlcnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9uZXRoZWxwZXJzLmgKQEAgLTEyLDE4ICsxMiwxNyBAQAogI2RlZmluZSBSVENfQkFT
RV9ORVRIRUxQRVJTX0hfCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19QT1NJWCkKLSNpbmNsdWRlIDxu
ZXRkYi5oPgotI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNl
bGlmIFdFQlJUQ19XSU4KICNpbmNsdWRlIDx3aW5zb2NrMi5oPiAgLy8gTk9MSU5UCiAjZW5kaWYK
IAotI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAicnRjX2Jh
c2UvYXN5bmNyZXNvbHZlcmludGVyZmFjZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2lwYWRkcmVz
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NpZ25hbHRocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3NvY2tldGFkZHJlc3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdz
bG90L3NpZ3Nsb3QuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3Jr
LmNjCmluZGV4IDY3ODg4ZWRlODM0MjMxMGEwNzA2Y2YxM2FmODI0YWU5YjVmMzI5OTIuLjVjN2Iw
MTlkNjZjMmZkZDMyNTVkNTIwY2UzMjAzZjdjOTZiOTFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0
d29yay5jYwpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrbW9uaXRvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3NvY2tldC5oIiAgLy8gaW5jbHVkZXMgc29tZXRoaW5nIHRoYXQgbWFrZXMgd2luZG93cyBoYXBw
eQotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmlu
Z2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgpAQCAtMjYwLDcgKzI1OSw3IEBAIGJv
b2wgTmV0d29ya01hbmFnZXI6OkdldERlZmF1bHRMb2NhbEFkZHJlc3MoaW50IGZhbWlseSwgSVBB
ZGRyZXNzKiBhZGRyKSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAotd2VicnRjOjpNRG5z
UmVzcG9uZGVySW50ZXJmYWNlKiBOZXR3b3JrTWFuYWdlcjo6R2V0TURuc1Jlc3BvbmRlcigpIGNv
bnN0IHsKK3dlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogTmV0d29ya01hbmFnZXI6Okdl
dE1kbnNSZXNwb25kZXIoKSBjb25zdCB7CiAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0yODYs
NyArMjg1LDcgQEAgdm9pZCBOZXR3b3JrTWFuYWdlckJhc2U6OkdldEFueUFkZHJlc3NOZXR3b3Jr
cyhOZXR3b3JrTGlzdCogbmV0d29ya3MpIHsKICAgICAgICAgbmV3IHJ0Yzo6TmV0d29yaygiYW55
IiwgImFueSIsIGlwdjRfYW55X2FkZHJlc3MsIDAsIEFEQVBURVJfVFlQRV9BTlkpKTsKICAgICBp
cHY0X2FueV9hZGRyZXNzX25ldHdvcmtfLT5zZXRfZGVmYXVsdF9sb2NhbF9hZGRyZXNzX3Byb3Zp
ZGVyKHRoaXMpOwogICAgIGlwdjRfYW55X2FkZHJlc3NfbmV0d29ya18tPkFkZElQKGlwdjRfYW55
X2FkZHJlc3MpOwotICAgIGlwdjRfYW55X2FkZHJlc3NfbmV0d29ya18tPlNldE1EbnNSZXNwb25k
ZXIoR2V0TURuc1Jlc3BvbmRlcigpKTsKKyAgICBpcHY0X2FueV9hZGRyZXNzX25ldHdvcmtfLT5T
ZXRNZG5zUmVzcG9uZGVyKEdldE1kbnNSZXNwb25kZXIoKSk7CiAgIH0KICAgbmV0d29ya3MtPnB1
c2hfYmFjayhpcHY0X2FueV9hZGRyZXNzX25ldHdvcmtfLmdldCgpKTsKIApAQCAtMjk3LDcgKzI5
Niw3IEBAIHZvaWQgTmV0d29ya01hbmFnZXJCYXNlOjpHZXRBbnlBZGRyZXNzTmV0d29ya3MoTmV0
d29ya0xpc3QqIG5ldHdvcmtzKSB7CiAgICAgICAgICAgImFueSIsICJhbnkiLCBpcHY2X2FueV9h
ZGRyZXNzLCAwLCBBREFQVEVSX1RZUEVfQU5ZKSk7CiAgICAgICBpcHY2X2FueV9hZGRyZXNzX25l
dHdvcmtfLT5zZXRfZGVmYXVsdF9sb2NhbF9hZGRyZXNzX3Byb3ZpZGVyKHRoaXMpOwogICAgICAg
aXB2Nl9hbnlfYWRkcmVzc19uZXR3b3JrXy0+QWRkSVAoaXB2Nl9hbnlfYWRkcmVzcyk7Ci0gICAg
ICBpcHY2X2FueV9hZGRyZXNzX25ldHdvcmtfLT5TZXRNRG5zUmVzcG9uZGVyKEdldE1EbnNSZXNw
b25kZXIoKSk7CisgICAgICBpcHY2X2FueV9hZGRyZXNzX25ldHdvcmtfLT5TZXRNZG5zUmVzcG9u
ZGVyKEdldE1kbnNSZXNwb25kZXIoKSk7CiAgICAgfQogICAgIG5ldHdvcmtzLT5wdXNoX2JhY2so
aXB2Nl9hbnlfYWRkcmVzc19uZXR3b3JrXy5nZXQoKSk7CiAgIH0KQEAgLTM4Nyw3ICszODYsNyBA
QCB2b2lkIE5ldHdvcmtNYW5hZ2VyQmFzZTo6TWVyZ2VOZXR3b3JrTGlzdChjb25zdCBOZXR3b3Jr
TGlzdCYgbmV3X25ldHdvcmtzLAogICAgICAgICBkZWxldGUgbmV0OwogICAgICAgfQogICAgIH0K
LSAgICBuZXR3b3Jrc19tYXBfW2tleV0tPlNldE1EbnNSZXNwb25kZXIoR2V0TURuc1Jlc3BvbmRl
cigpKTsKKyAgICBuZXR3b3Jrc19tYXBfW2tleV0tPlNldE1kbnNSZXNwb25kZXIoR2V0TWRuc1Jl
c3BvbmRlcigpKTsKICAgfQogICAvLyBJdCBtYXkgc3RpbGwgaGFwcGVuIHRoYXQgdGhlIG1lcmdl
ZCBsaXN0IGlzIGEgc3Vic2V0IG9mIHxuZXR3b3Jrc198LgogICAvLyBUbyBkZXRlY3QgdGhpcyBj
aGFuZ2UsIHdlIGNvbXBhcmUgdGhlaXIgc2l6ZXMuCkBAIC03NzUsMjYgKzc3NCwyOCBAQCBib29s
IEJhc2ljTmV0d29ya01hbmFnZXI6OkNyZWF0ZU5ldHdvcmtzKGJvb2wgaW5jbHVkZV9pZ25vcmVk
LAogCiAjaWYgZGVmaW5lZChXRUJSVENfTElOVVgpCiBib29sIElzRGVmYXVsdFJvdXRlKGNvbnN0
IHN0ZDo6c3RyaW5nJiBuZXR3b3JrX25hbWUpIHsKLSAgRmlsZVN0cmVhbSBmczsKLSAgaWYgKCFm
cy5PcGVuKCIvcHJvYy9uZXQvcm91dGUiLCAiciIsIG51bGxwdHIpKSB7CisgIEZJTEUqIGYgPSBm
b3BlbigiL3Byb2MvbmV0L3JvdXRlIiwgInIiKTsKKyAgaWYgKCFmKSB7CiAgICAgUlRDX0xPRyhM
U19XQVJOSU5HKQogICAgICAgICA8PCAiQ291bGRuJ3QgcmVhZCAvcHJvYy9uZXQvcm91dGUsIHNr
aXBwaW5nIGRlZmF1bHQgIgogICAgICAgICA8PCAicm91dGUgY2hlY2sgKGFzc3VtaW5nIGV2ZXJ5
dGhpbmcgaXMgYSBkZWZhdWx0IHJvdXRlKS4iOwogICAgIHJldHVybiB0cnVlOwotICB9IGVsc2Ug
ewotICAgIHN0ZDo6c3RyaW5nIGxpbmU7Ci0gICAgd2hpbGUgKGZzLlJlYWRMaW5lKCZsaW5lKSA9
PSBTUl9TVUNDRVNTKSB7Ci0gICAgICBjaGFyIGlmYWNlX25hbWVbMjU2XTsKLSAgICAgIHVuc2ln
bmVkIGludCBpZmFjZV9pcCwgaWZhY2VfZ3csIGlmYWNlX21hc2ssIGlmYWNlX2ZsYWdzOwotICAg
ICAgaWYgKHNzY2FuZihsaW5lLmNfc3RyKCksICIlMjU1cyAlOFggJThYICU0WCAlKmQgJSp1ICUq
ZCAlOFgiLCBpZmFjZV9uYW1lLAotICAgICAgICAgICAgICAgICAmaWZhY2VfaXAsICZpZmFjZV9n
dywgJmlmYWNlX2ZsYWdzLCAmaWZhY2VfbWFzaykgPT0gNSAmJgotICAgICAgICAgIG5ldHdvcmtf
bmFtZSA9PSBpZmFjZV9uYW1lICYmIGlmYWNlX21hc2sgPT0gMCAmJgotICAgICAgICAgIChpZmFj
ZV9mbGFncyAmIChSVEZfVVAgfCBSVEZfSE9TVCkpID09IFJURl9VUCkgewotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgIH0KKyAgfQorICBib29sIGlzX2RlZmF1bHRfcm91dGUgPSBmYWxzZTsK
KyAgY2hhciBsaW5lWzUwMF07CisgIHdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGYp
KSB7CisgICAgY2hhciBpZmFjZV9uYW1lWzI1Nl07CisgICAgdW5zaWduZWQgaW50IGlmYWNlX2lw
LCBpZmFjZV9ndywgaWZhY2VfbWFzaywgaWZhY2VfZmxhZ3M7CisgICAgaWYgKHNzY2FuZihsaW5l
LCAiJTI1NXMgJThYICU4WCAlNFggJSpkICUqdSAlKmQgJThYIiwgaWZhY2VfbmFtZSwgJmlmYWNl
X2lwLAorICAgICAgICAgICAgICAgJmlmYWNlX2d3LCAmaWZhY2VfZmxhZ3MsICZpZmFjZV9tYXNr
KSA9PSA1ICYmCisgICAgICAgIG5ldHdvcmtfbmFtZSA9PSBpZmFjZV9uYW1lICYmIGlmYWNlX21h
c2sgPT0gMCAmJgorICAgICAgICAoaWZhY2VfZmxhZ3MgJiAoUlRGX1VQIHwgUlRGX0hPU1QpKSA9
PSBSVEZfVVApIHsKKyAgICAgIGlzX2RlZmF1bHRfcm91dGUgPSB0cnVlOworICAgICAgYnJlYWs7
CiAgICAgfQogICB9Ci0gIHJldHVybiBmYWxzZTsKKyAgZmNsb3NlKGYpOworICByZXR1cm4gaXNf
ZGVmYXVsdF9yb3V0ZTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrLmgKaW5kZXgg
NjAxZTM5ZjAyNzcxZDAzMjkzZThkNzMwMDhhYzgzZDRiMjc3Yjc4Ni4uOGIxYTVmY2M1YzNkZWQx
MTgzYmE4NmI4MDM3ZGQ4ZDg2YTkwZDRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29yay5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsuaApAQCAt
MTQxLDcgKzE0MSw3IEBAIGNsYXNzIE5ldHdvcmtNYW5hZ2VyIDogcHVibGljIERlZmF1bHRMb2Nh
bEFkZHJlc3NQcm92aWRlciB7CiAKICAgLy8gUmV0dXJucyB0aGUgbUROUyByZXNwb25kZXIgdGhh
dCBjYW4gYmUgdXNlZCB0byBvYmZ1c2NhdGUgdGhlIGxvY2FsIElQCiAgIC8vIGFkZHJlc3NlcyBv
ZiBJQ0UgaG9zdCBjYW5kaWRhdGVzIGJ5IG1ETlMgaG9zdG5hbWVzLgotICB2aXJ0dWFsIHdlYnJ0
Yzo6TURuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TURuc1Jlc3BvbmRlcigpIGNvbnN0OworICB2
aXJ0dWFsIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigp
IGNvbnN0OwogfTsKIAogLy8gQmFzZSBjbGFzcyBmb3IgTmV0d29ya01hbmFnZXIgaW1wbGVtZW50
YXRpb25zLgpAQCAtMzY3LDExICszNjcsMTEgQEAgY2xhc3MgTmV0d29yayB7CiAgIC8vIGNyZWF0
ZWQgbmFtZSB3aWxsIGJlIHJlc29sdmVkIGJ5IHRoZSByZXNwb25kZXIuCiAgIC8vCiAgIC8vIFRo
ZSBtRE5TIHJlc3BvbmRlciwgaWYgbm90IG51bGwsIHNob3VsZCBvdXRsaXZlIHRoaXMgcnRjOjpO
ZXR3b3JrLgotICB2b2lkIFNldE1EbnNSZXNwb25kZXIod2VicnRjOjpNRG5zUmVzcG9uZGVySW50
ZXJmYWNlKiBtZG5zX3Jlc3BvbmRlcikgeworICB2b2lkIFNldE1kbnNSZXNwb25kZXIod2VicnRj
OjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlKiBtZG5zX3Jlc3BvbmRlcikgewogICAgIG1kbnNfcmVz
cG9uZGVyXyA9IG1kbnNfcmVzcG9uZGVyOwogICB9CiAgIC8vIFJldHVybnMgdGhlIG1ETlMgcmVz
cG9uZGVyLCB3aGljaCBpcyBudWxsIGJ5IGRlZmF1bHQuCi0gIHdlYnJ0Yzo6TURuc1Jlc3BvbmRl
ckludGVyZmFjZSogR2V0TURuc1Jlc3BvbmRlcigpIGNvbnN0IHsKKyAgd2VicnRjOjpNZG5zUmVz
cG9uZGVySW50ZXJmYWNlKiBHZXRNZG5zUmVzcG9uZGVyKCkgY29uc3QgewogICAgIHJldHVybiBt
ZG5zX3Jlc3BvbmRlcl87CiAgIH0KIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIGNsYXNzIE5ldHdvcmsg
ewogICBpbnQgcHJlZml4X2xlbmd0aF87CiAgIHN0ZDo6c3RyaW5nIGtleV87CiAgIHN0ZDo6dmVj
dG9yPEludGVyZmFjZUFkZHJlc3M+IGlwc187Ci0gIHdlYnJ0Yzo6TURuc1Jlc3BvbmRlckludGVy
ZmFjZSogbWRuc19yZXNwb25kZXJfID0gbnVsbHB0cjsKKyAgd2VicnRjOjpNZG5zUmVzcG9uZGVy
SW50ZXJmYWNlKiBtZG5zX3Jlc3BvbmRlcl8gPSBudWxscHRyOwogICBpbnQgc2NvcGVfaWRfOwog
ICBib29sIGlnbm9yZWRfOwogICBBZGFwdGVyVHlwZSB0eXBlXzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9uZXR3b3JrL0JVSUxELmduCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYmRiYjFlZGJiMGFmYzI0ZTFmNGJiN2Mx
MzU0MzZhNDhlZTg0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrL0JVSUxELmduCkBAIC0wLDAgKzEs
MTkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorIworIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisjIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorIyB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisjIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisKK2ltcG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCisKK3J0Y19zb3VyY2Vfc2V0KCJz
ZW50X3BhY2tldCIpIHsKKyAgc291cmNlcyA9IFsKKyAgICAic2VudF9wYWNrZXQuY2MiLAorICAg
ICJzZW50X3BhY2tldC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsvc2Vu
dF9wYWNrZXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjYzQ5NzM3ZWZkZWNh
NzA4MWUxNTVjZGM3NTQxZTgzNWMxYzBiZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFj
a2V0LmNjCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJU
QyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJy
dGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0LmgiCisKK25hbWVzcGFjZSBydGMgeworCitQYWNr
ZXRJbmZvOjpQYWNrZXRJbmZvKCkgPSBkZWZhdWx0OworUGFja2V0SW5mbzo6UGFja2V0SW5mbyhj
b25zdCBQYWNrZXRJbmZvJiBpbmZvKSA9IGRlZmF1bHQ7CitQYWNrZXRJbmZvOjp+UGFja2V0SW5m
bygpID0gZGVmYXVsdDsKKworU2VudFBhY2tldDo6U2VudFBhY2tldCgpID0gZGVmYXVsdDsKK1Nl
bnRQYWNrZXQ6OlNlbnRQYWNrZXQoaW50NjRfdCBwYWNrZXRfaWQsIGludDY0X3Qgc2VuZF90aW1l
X21zKQorICAgIDogcGFja2V0X2lkKHBhY2tldF9pZCksIHNlbmRfdGltZV9tcyhzZW5kX3RpbWVf
bXMpIHt9CitTZW50UGFja2V0OjpTZW50UGFja2V0KGludDY0X3QgcGFja2V0X2lkLAorICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90IHNlbmRfdGltZV9tcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRJbmZvJiBpbmZvKQorICAgIDogcGFja2V0X2lkKHBhY2tl
dF9pZCksIHNlbmRfdGltZV9tcyhzZW5kX3RpbWVfbXMpLCBpbmZvKGluZm8pIHt9CisKK30gIC8v
IG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsvc2VudF9wYWNrZXQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsvc2VudF9wYWNr
ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wY2FkMzFjYTkxYzBmODkwMmJiNGFlNGE4ZGRmNDc4MDE0YzFhNDM1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5oCkBAIC0wLDAgKzEsNjggQEAKKy8q
CisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfTkVUV09SS19TRU5UX1BBQ0tFVF9I
XworI2RlZmluZSBSVENfQkFTRV9ORVRXT1JLX1NFTlRfUEFDS0VUX0hfCisKKyNpbmNsdWRlIDxz
dGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKKworbmFtZXNwYWNlIHJ0YyB7CisKK2VudW0gY2xhc3MgUGFja2V0VHlwZSB7Cisg
IGtVbmtub3duLAorICBrRGF0YSwKKyAga0ljZUNvbm5lY3Rpdml0eUNoZWNrLAorICBrSWNlQ29u
bmVjdGl2aXR5Q2hlY2tSZXNwb25zZSwKKyAga1N0dW5NZXNzYWdlLAorICBrVHVybk1lc3NhZ2Us
Cit9OworCitlbnVtIGNsYXNzIFBhY2tldEluZm9Qcm90b2NvbFR5cGUgeworICBrVW5rbm93biwK
KyAga1VkcCwKKyAga1RjcCwKKyAga1NzbHRjcCwKKyAga1RscywKK307CisKK3N0cnVjdCBQYWNr
ZXRJbmZvIHsKKyAgUGFja2V0SW5mbygpOworICBQYWNrZXRJbmZvKGNvbnN0IFBhY2tldEluZm8m
IGluZm8pOworICB+UGFja2V0SW5mbygpOworCisgIGJvb2wgaW5jbHVkZWRfaW5fZmVlZGJhY2sg
PSBmYWxzZTsKKyAgYm9vbCBpbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0gZmFsc2U7CisgIFBhY2tl
dFR5cGUgcGFja2V0X3R5cGUgPSBQYWNrZXRUeXBlOjprVW5rbm93bjsKKyAgUGFja2V0SW5mb1By
b3RvY29sVHlwZSBwcm90b2NvbCA9IFBhY2tldEluZm9Qcm90b2NvbFR5cGU6OmtVbmtub3duOwor
ICAvLyBBIHVuaXF1ZSBpZCBhc3NpZ25lZCBieSB0aGUgbmV0d29yayBtYW5hZ2VyLCBhbmQgYWJz
bDo6bnVsbG9wdCBpZiBub3Qgc2V0LgorICBhYnNsOjpvcHRpb25hbDx1aW50MTZfdD4gbmV0d29y
a19pZDsKKyAgc2l6ZV90IHBhY2tldF9zaXplX2J5dGVzID0gMDsKKyAgc2l6ZV90IHR1cm5fb3Zl
cmhlYWRfYnl0ZXMgPSAwOworICBzaXplX3QgaXBfb3ZlcmhlYWRfYnl0ZXMgPSAwOworfTsKKwor
c3RydWN0IFNlbnRQYWNrZXQgeworICBTZW50UGFja2V0KCk7CisgIFNlbnRQYWNrZXQoaW50NjRf
dCBwYWNrZXRfaWQsIGludDY0X3Qgc2VuZF90aW1lX21zKTsKKyAgU2VudFBhY2tldChpbnQ2NF90
IHBhY2tldF9pZCwKKyAgICAgICAgICAgICBpbnQ2NF90IHNlbmRfdGltZV9tcywKKyAgICAgICAg
ICAgICBjb25zdCBydGM6OlBhY2tldEluZm8mIGluZm8pOworCisgIGludDY0X3QgcGFja2V0X2lk
ID0gLTE7CisgIGludDY0X3Qgc2VuZF90aW1lX21zID0gLTE7CisgIHJ0Yzo6UGFja2V0SW5mbyBp
bmZvOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ0YworCisjZW5kaWYgIC8vIFJUQ19CQVNFX05F
VFdPUktfU0VOVF9QQUNLRVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmttb25pdG9yLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29ya21vbml0b3Iu
Y2MKaW5kZXggYWQ2ODA1YWNlYzdlNzk4ZmY4YTljNmVhMzNkYzk3NzU1ODBjYmJiMC4uMDE4NWVh
Yjg1NjEzYTNiMTk1NjFhNjFmZTRhYWNhMTY1ZjNmZWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29ya21vbml0b3Iu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbmV0d29ya21vbml0b3IuY2MKQEAgLTEwLDcgKzEwLDExIEBACiAKICNpbmNsdWRlICJydGNf
YmFzZS9uZXR3b3JrbW9uaXRvci5oIgogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHsKIGNvbnN0IHVpbnQzMl90
IFVQREFURV9ORVRXT1JLU19NRVNTQUdFID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmttb25pdG9yLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3Jr
bW9uaXRvci5oCmluZGV4IGE4NGEzMGFlZDJiYzMzNjg2NjViN2Q0MzE0Nzc1ZTYzYmYwNTU2MWYu
LjFhZDc2NjM2Njk2Y2M4ZTY2ZmVkYmJlYjAxZmIyNWU2NmNjNzdjYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmtt
b25pdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvbmV0d29ya21vbml0b3IuaApAQCAtMTEsNyArMTEsNiBAQAogI2lmbmRlZiBSVENf
QkFTRV9ORVRXT1JLTU9OSVRPUl9IXwogI2RlZmluZSBSVENfQkFTRV9ORVRXT1JLTU9OSVRPUl9I
XwogCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL25l
dHdvcmtfY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xv
dC9zaWdzbG90LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ub29wLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvbm9v
cC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZhOGU2ZDVjMTBiOTcxMzRlNjhi
MDhlMmM2NWVmMmZmZjE2YmQ1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9ub29wLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotLyoKLSAqICBDb3B5
cmlnaHQgMjAxNSBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
Ci0gKi8KLQotLy8gVGhpcyBmaWxlIGlzIG9ubHkgbmVlZGVkIHRvIG1ha2UgbmluamEgaGFwcHkg
b24gc29tZSBwbGF0Zm9ybXMuCi0vLyBPbiBzb21lIHBsYXRmb3JtcyBpdCBpcyBub3QgcG9zc2li
bGUgdG8gbGluayBhbiBydGNfc3RhdGljX2xpYnJhcnkKLS8vIHdpdGhvdXQgYW55IHNvdXJjZSBm
aWxlIGxpc3RlZCBpbiB0aGUgR04gdGFyZ2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvbm9vcC5tbSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25vb3AubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YThlNmQ1YzEwYjk3MTM0ZTY4YjA4ZTJjNjVlZjJmZmYx
NmJkNTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvbm9vcC5tbQor
KysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTUgVGhl
IFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
LSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLS8vIFRo
aXMgZmlsZSBpcyBvbmx5IG5lZWRlZCB0byBtYWtlIG5pbmphIGhhcHB5IG9uIHNvbWUgcGxhdGZv
cm1zLgotLy8gT24gc29tZSBwbGF0Zm9ybXMgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGxpbmsgYW4g
cnRjX3N0YXRpY19saWJyYXJ5Ci0vLyB3aXRob3V0IGFueSBzb3VyY2UgZmlsZSBsaXN0ZWQgaW4g
dGhlIEdOIHRhcmdldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmNj
CmluZGV4IGM4OTBjNmYzZGNmNjUzZjk2OTRlZmE2YmJjNWZjODI5OTFjYWM5MWQuLmVjMDQyZGQw
OTUxN2RjMThlN2UxZTA0Yjg0OWFlNTE3ODUwYTMwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbnVsbHNvY2tldHNlcnZlci5jYwpAQCAtMTMsNyArMTMsNyBAQAogCiBuYW1lc3BhY2UgcnRj
IHsKIAotTnVsbFNvY2tldFNlcnZlcjo6TnVsbFNvY2tldFNlcnZlcigpIDogZXZlbnRfKGZhbHNl
LCBmYWxzZSkge30KK051bGxTb2NrZXRTZXJ2ZXI6Ok51bGxTb2NrZXRTZXJ2ZXIoKSA9IGRlZmF1
bHQ7CiBOdWxsU29ja2V0U2VydmVyOjp+TnVsbFNvY2tldFNlcnZlcigpIHt9CiAKIGJvb2wgTnVs
bFNvY2tldFNlcnZlcjo6V2FpdChpbnQgY21zLCBib29sIHByb2Nlc3NfaW8pIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251
bGxzb2NrZXRzZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIuaAppbmRleCA0MDhiY2QxYjJmNTE2MzYyMWYx
MzEwMTViNmM1ZjZkZWZhYjM5YzFhLi40N2E3ZmE2MTE4NzFjNDQyM2QyNTE2ZTM5OGM5NDgwYzQ4
NWY4M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVsbHNvY2tldHNlcnZlci5oCkBAIC0x
MSw3ICsxMSw5IEBACiAjaWZuZGVmIFJUQ19CQVNFX05VTExTT0NLRVRTRVJWRVJfSF8KICNkZWZp
bmUgUlRDX0JBU0VfTlVMTFNPQ0tFVFNFUlZFUl9IXwogCisjaW5jbHVkZSAicnRjX2Jhc2UvYXN5
bmNzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL3NvY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldHNlcnZlci5oIgogCiBuYW1l
c3BhY2UgcnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5n
X2F2ZXJhZ2UuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgyNTgzOTIyN2ViYjhhNGFhYzdjNTkxMTM4ZjYwOTQw
NTA4ZDI3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmNjCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVt
ZXJpY3MvbW92aW5nX2F2ZXJhZ2UuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKworI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2UgcnRjIHsKKworTW92aW5nQXZlcmFn
ZTo6TW92aW5nQXZlcmFnZShzaXplX3Qgd2luZG93X3NpemUpIDogaGlzdG9yeV8od2luZG93X3Np
emUsIDApIHsKKyAgLy8gTGltaXQgd2luZG93IHNpemUgdG8gYXZvaWQgb3ZlcmZsb3cuCisgIFJU
Q19EQ0hFQ0tfTEUod2luZG93X3NpemUsIChpbnQ2NF90ezF9IDw8IDMyKSAtIDEpOworfQorTW92
aW5nQXZlcmFnZTo6fk1vdmluZ0F2ZXJhZ2UoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgTW92aW5nQXZl
cmFnZTo6QWRkU2FtcGxlKGludCBzYW1wbGUpIHsKKyAgY291bnRfKys7CisgIHNpemVfdCBpbmRl
eCA9IGNvdW50XyAlIGhpc3RvcnlfLnNpemUoKTsKKyAgaWYgKGNvdW50XyA+IGhpc3RvcnlfLnNp
emUoKSkKKyAgICBzdW1fIC09IGhpc3RvcnlfW2luZGV4XTsKKyAgc3VtXyArPSBzYW1wbGU7Cisg
IGhpc3RvcnlfW2luZGV4XSA9IHNhbXBsZTsKK30KKworYWJzbDo6b3B0aW9uYWw8aW50PiBNb3Zp
bmdBdmVyYWdlOjpHZXRBdmVyYWdlUm91bmRlZERvd24oKSBjb25zdCB7CisgIGlmIChjb3VudF8g
PT0gMCkKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgcmV0dXJuIHN1bV8gLyBTaXplKCk7
Cit9CisKK2Fic2w6Om9wdGlvbmFsPGludD4gTW92aW5nQXZlcmFnZTo6R2V0QXZlcmFnZVJvdW5k
ZWRUb0Nsb3Nlc3QoKSBjb25zdCB7CisgIGlmIChjb3VudF8gPT0gMCkKKyAgICByZXR1cm4gYWJz
bDo6bnVsbG9wdDsKKyAgcmV0dXJuIChzdW1fICsgU2l6ZSgpIC8gMikgLyBTaXplKCk7Cit9CisK
K2Fic2w6Om9wdGlvbmFsPGRvdWJsZT4gTW92aW5nQXZlcmFnZTo6R2V0VW5yb3VuZGVkQXZlcmFn
ZSgpIGNvbnN0IHsKKyAgaWYgKGNvdW50XyA9PSAwKQorICAgIHJldHVybiBhYnNsOjpudWxsb3B0
OworICByZXR1cm4gc3VtXyAvIHN0YXRpY19jYXN0PGRvdWJsZT4oU2l6ZSgpKTsKK30KKwordm9p
ZCBNb3ZpbmdBdmVyYWdlOjpSZXNldCgpIHsKKyAgY291bnRfID0gMDsKKyAgc3VtXyA9IDA7Cit9
CisKK3NpemVfdCBNb3ZpbmdBdmVyYWdlOjpTaXplKCkgY29uc3QgeworICByZXR1cm4gc3RkOjpt
aW4oY291bnRfLCBoaXN0b3J5Xy5zaXplKCkpOworfQorfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzcwZTQ3ZDg2ZjgxMjhmY2Y3Nzc0ZDRiYzQ1MDk2NzY5NzVjNjJhYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfTlVNRVJJQ1NfTU9WSU5HX0FWRVJBR0Vf
SF8KKyNkZWZpbmUgUlRDX0JBU0VfTlVNRVJJQ1NfTU9WSU5HX0FWRVJBR0VfSF8KKworI2luY2x1
ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKworbmFtZXNw
YWNlIHJ0YyB7CisKKy8vIENhbGN1bGF0ZXMgYXZlcmFnZSBvdmVyIGZpeGVkIHNpemUgd2luZG93
LiBJZiB0aGVyZSBhcmUgbGVzcyB0aGFuIHdpbmRvdworLy8gc2l6ZSBlbGVtZW50cywgY2FsY3Vs
YXRlcyBhdmVyYWdlIG9mIGFsbCBpbnNlcnRlZCBzbyBmYXIgZWxlbWVudHMuCisvLworY2xhc3Mg
TW92aW5nQXZlcmFnZSB7CisgcHVibGljOgorICAvLyBNYXhpbXVtIHN1cHBvcnRlZCB3aW5kb3cg
c2l6ZSBpcyAyXjMyIC0gMS4KKyAgZXhwbGljaXQgTW92aW5nQXZlcmFnZShzaXplX3Qgd2luZG93
X3NpemUpOworICB+TW92aW5nQXZlcmFnZSgpOworICAvLyBNb3ZpbmdBdmVyYWdlIGlzIG5laXRo
ZXIgY29weWFibGUgbm9yIG1vdmFibGUuCisgIE1vdmluZ0F2ZXJhZ2UoY29uc3QgTW92aW5nQXZl
cmFnZSYpID0gZGVsZXRlOworICBNb3ZpbmdBdmVyYWdlJiBvcGVyYXRvcj0oY29uc3QgTW92aW5n
QXZlcmFnZSYpID0gZGVsZXRlOworCisgIC8vIEFkZHMgbmV3IHNhbXBsZS4gSWYgdGhlIHdpbmRv
dyBpcyBmdWxsLCB0aGUgb2xkZXN0IGVsZW1lbnQgaXMgcHVzaGVkIG91dC4KKyAgdm9pZCBBZGRT
YW1wbGUoaW50IHNhbXBsZSk7CisKKyAgLy8gUmV0dXJucyByb3VuZGVkIGRvd24gYXZlcmFnZSBv
ZiBsYXN0IHx3aW5kb3dfc2l6ZXwgZWxlbWVudHMgb3IgYWxsCisgIC8vIGVsZW1lbnRzIGlmIHRo
ZXJlIGFyZSBub3QgZW5vdWdoIG9mIHRoZW0uIFJldHVybnMgbnVsbG9wdCBpZiB0aGVyZSB3ZXJl
CisgIC8vIG5vIGVsZW1lbnRzIGFkZGVkLgorICBhYnNsOjpvcHRpb25hbDxpbnQ+IEdldEF2ZXJh
Z2VSb3VuZGVkRG93bigpIGNvbnN0OworCisgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IHJvdW5kZWQg
dG8gdGhlIGNsb3Nlc3QgaW50ZWdlci4KKyAgYWJzbDo6b3B0aW9uYWw8aW50PiBHZXRBdmVyYWdl
Um91bmRlZFRvQ2xvc2VzdCgpIGNvbnN0OworCisgIC8vIFJldHVybnMgdW5yb3VuZGVkIGF2ZXJh
Z2Ugb3ZlciB0aGUgd2luZG93LgorICBhYnNsOjpvcHRpb25hbDxkb3VibGU+IEdldFVucm91bmRl
ZEF2ZXJhZ2UoKSBjb25zdDsKKworICAvLyBSZXNldHMgdG8gdGhlIGluaXRpYWwgc3RhdGUgYmVm
b3JlIGFueSBlbGVtZW50cyB3ZXJlIGFkZGVkLgorICB2b2lkIFJlc2V0KCk7CisKKyAgLy8gUmV0
dXJucyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHdpbmRvdy4KKyAgc2l6ZV90IFNpemUoKSBj
b25zdDsKKworIHByaXZhdGU6CisgIC8vIFRvdGFsIG51bWJlciBvZiBzYW1wbGVzIGFkZGVkIHRv
IHRoZSBjbGFzcyBzaW5jZSBsYXN0IHJlc2V0LgorICBzaXplX3QgY291bnRfID0gMDsKKyAgLy8g
U3VtIG9mIHRoZSBzYW1wbGVzIGluIHRoZSBtb3Zpbmcgd2luZG93LgorICBpbnQ2NF90IHN1bV8g
PSAwOworICAvLyBDaXJjdWxhciBidWZmZXIgZm9yIGFsbCB0aGUgc2FtcGxlcyBpbiB0aGUgbW92
aW5nIHdpbmRvdy4KKyAgLy8gU2l6ZSBpcyBhbHdheXMgfHdpbmRvd19zaXplfAorICBzdGQ6OnZl
Y3RvcjxpbnQ+IGhpc3RvcnlfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ0YworI2VuZGlmICAv
LyBSVENfQkFTRV9OVU1FUklDU19NT1ZJTkdfQVZFUkFHRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3MvbW92
aW5nX2F2ZXJhZ2VfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZV91bml0dGVzdC5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45YmM5YTFhZWY4OWExNGJhOTM2NmJlODg4ZmQyMmIyZDEzOTYwOTU5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2VfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw4
NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmlj
cy9tb3ZpbmdfYXZlcmFnZS5oIgorCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCituYW1lc3Bh
Y2UgdGVzdCB7CisKK1RFU1QoTW92aW5nQXZlcmFnZVRlc3QsIEVtcHR5QXZlcmFnZSkgeworICBy
dGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMSk7CisgIEVYUEVDVF9FUSgwdSwgbW92
aW5nX2F2ZXJhZ2UuU2l6ZSgpKTsKKyAgRVhQRUNUX0VRKGFic2w6Om51bGxvcHQsIG1vdmluZ19h
dmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVkRG93bigpKTsKK30KKworLy8gVGVzdCBzaW5nbGUgdmFs
dWUuCitURVNUKE1vdmluZ0F2ZXJhZ2VUZXN0LCBPbmVFbGVtZW50KSB7CisgIHJ0Yzo6TW92aW5n
QXZlcmFnZSBtb3ZpbmdfYXZlcmFnZSgxKTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDMp
OworICBFWFBFQ1RfRVEoMXUsIG1vdmluZ19hdmVyYWdlLlNpemUoKSk7CisgIEVYUEVDVF9FUSgz
LCAqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWREb3duKCkpOworfQorCitURVNUKE1v
dmluZ0F2ZXJhZ2VUZXN0LCBHZXRBdmVyYWdlKSB7CisgIHJ0Yzo6TW92aW5nQXZlcmFnZSBtb3Zp
bmdfYXZlcmFnZSgxMDI0KTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDEpOworICBtb3Zp
bmdfYXZlcmFnZS5BZGRTYW1wbGUoMSk7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgzKTsK
KyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDMpOworICBFWFBFQ1RfRVEoKm1vdmluZ19hdmVy
YWdlLkdldEF2ZXJhZ2VSb3VuZGVkRG93bigpLCAyKTsKKyAgRVhQRUNUX0VRKCptb3ZpbmdfYXZl
cmFnZS5HZXRBdmVyYWdlUm91bmRlZFRvQ2xvc2VzdCgpLCAyKTsKK30KKworVEVTVChNb3ZpbmdB
dmVyYWdlVGVzdCwgR2V0QXZlcmFnZVJvdW5kZWREb3duUm91bmRzKSB7CisgIHJ0Yzo6TW92aW5n
QXZlcmFnZSBtb3ZpbmdfYXZlcmFnZSgxMDI0KTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxl
KDEpOworICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoMik7CisgIG1vdmluZ19hdmVyYWdlLkFk
ZFNhbXBsZSgyKTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDIpOworICBFWFBFQ1RfRVEo
Km1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVkRG93bigpLCAxKTsKK30KKworVEVTVChN
b3ZpbmdBdmVyYWdlVGVzdCwgR2V0QXZlcmFnZVJvdW5kZWRUb0Nsb3Nlc3RSb3VuZHMpIHsKKyAg
cnRjOjpNb3ZpbmdBdmVyYWdlIG1vdmluZ19hdmVyYWdlKDEwMjQpOworICBtb3ZpbmdfYXZlcmFn
ZS5BZGRTYW1wbGUoMSk7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgyKTsKKyAgbW92aW5n
X2F2ZXJhZ2UuQWRkU2FtcGxlKDIpOworICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoMik7Cisg
IEVYUEVDVF9FUSgqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSwg
Mik7Cit9CisKK1RFU1QoTW92aW5nQXZlcmFnZVRlc3QsIFJlc2V0KSB7CisgIHJ0Yzo6TW92aW5n
QXZlcmFnZSBtb3ZpbmdfYXZlcmFnZSg1KTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDEp
OworICBFWFBFQ1RfRVEoMSwgKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVkRG93bigp
KTsKKyAgRVhQRUNUX0VRKDEsICptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZFRvQ2xv
c2VzdCgpKTsKKworICBtb3ZpbmdfYXZlcmFnZS5SZXNldCgpOworCisgIEVYUEVDVF9GQUxTRSht
b3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSk7CisgIG1vdmluZ19hdmVyYWdl
LkFkZFNhbXBsZSgxMCk7CisgIEVYUEVDVF9FUSgxMCwgKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJh
Z2VSb3VuZGVkRG93bigpKTsKKyAgRVhQRUNUX0VRKDEwLCAqbW92aW5nX2F2ZXJhZ2UuR2V0QXZl
cmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSk7Cit9CisKK1RFU1QoTW92aW5nQXZlcmFnZVRlc3QsIE1h
bnlTYW1wbGVzKSB7CisgIHJ0Yzo6TW92aW5nQXZlcmFnZSBtb3ZpbmdfYXZlcmFnZSgxMCk7Cisg
IGZvciAoaW50IGkgPSAxOyBpIDwgMTE7IGkrKykgeworICAgIG1vdmluZ19hdmVyYWdlLkFkZFNh
bXBsZShpKTsKKyAgfQorICBFWFBFQ1RfRVEoKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3Vu
ZGVkRG93bigpLCA1KTsKKyAgRVhQRUNUX0VRKCptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91
bmRlZFRvQ2xvc2VzdCgpLCA2KTsKKyAgZm9yIChpbnQgaSA9IDE7IGkgPCAyMDAxOyBpKyspIHsK
KyAgICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoaSk7CisgIH0KKyAgRVhQRUNUX0VRKCptb3Zp
bmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSwgMTk5NSk7CisgIEVYUEVDVF9FUSgq
bW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSwgMTk5Nik7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9zYW1wbGVfY291bnRlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJp
Y3Mvc2FtcGxlX2NvdW50ZXIuaAppbmRleCA0ZmU3MWQxOTQyN2EyM2VlMjI5ZWNmNGQyMWI2MTcx
MGQ4NTA4MGVlLi4xOGJkMzZiOGYzMDUyYTY1MmExYWE3YmU5ODZkNmRiM2M5NzE3OTI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9udW1lcmljcy9zYW1wbGVfY291bnRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL3NhbXBsZV9jb3VudGVyLmgKQEAg
LTExLDYgKzExLDggQEAKICNpZm5kZWYgUlRDX0JBU0VfTlVNRVJJQ1NfU0FNUExFX0NPVU5URVJf
SF8KICNkZWZpbmUgUlRDX0JBU0VfTlVNRVJJQ1NfU0FNUExFX0NPVU5URVJfSF8KIAorI2luY2x1
ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogCiBuYW1l
c3BhY2UgcnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xfa2V5
X2Rlcml2YXRpb25faGtkZi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmFmNjY3NjQ1YjM5ZWU3NzAzY2U3Yjc0
ZmYyMDQ1NWI5ZThhY2FlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2Rm
LmNjCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNf
YmFzZS9vcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuaCIKKworI2luY2x1ZGUgPG9wZW5zc2wv
ZGlnZXN0Lmg+CisjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2hr
ZGYuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL3NoYS5oPgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9vcGVuc3NsLmgiCisKK25hbWVzcGFjZSBydGMgeworCitPcGVuU1NMS2V5
RGVyaXZhdGlvbkhLREY6Ok9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERigpID0gZGVmYXVsdDsKK09w
ZW5TU0xLZXlEZXJpdmF0aW9uSEtERjo6fk9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERigpID0gZGVm
YXVsdDsKKworY29uc3Qgc2l6ZV90IE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERjo6a01pbktleUJ5
dGVTaXplID0gMTY7Citjb25zdCBzaXplX3QgT3BlblNTTEtleURlcml2YXRpb25IS0RGOjprTWF4
S2V5Qnl0ZVNpemUgPQorICAgIDI1NSAqIFNIQTI1Nl9ESUdFU1RfTEVOR1RIOworY29uc3Qgc2l6
ZV90IE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERjo6a01pblNlY3JldEJ5dGVTaXplID0gMTY7CisK
K2Fic2w6Om9wdGlvbmFsPFplcm9PbkZyZWVCdWZmZXI8dWludDhfdD4+IE9wZW5TU0xLZXlEZXJp
dmF0aW9uSEtERjo6RGVyaXZlS2V5KAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+
IHNlY3JldCwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBzYWx0LAorICAgIHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IGxhYmVsLAorICAgIHNpemVfdCBkZXJpdmVkX2tl
eV9ieXRlX3NpemUpIHsKKyAgLy8gUHJldmVudCBkZXJpdmluZyBsZXNzIHRoYW4gMTI4IGJpdHMg
b2Yga2V5IG1hdGVyaWFsIG9yIG1vcmUgdGhhbiB0aGUgbWF4LgorICBpZiAoZGVyaXZlZF9rZXlf
Ynl0ZV9zaXplIDwga01pbktleUJ5dGVTaXplIHx8CisgICAgICBkZXJpdmVkX2tleV9ieXRlX3Np
emUgPiBrTWF4S2V5Qnl0ZVNpemUpIHsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQor
ICAvLyBUaGUgc2VjcmV0IG11c3QgcmVhY2ggdGhlIG1pbmltdW0gbnVtYmVyIG9mIGJpdHMgdG8g
YmUgc2VjdXJlLgorICBpZiAoc2VjcmV0LmRhdGEoKSA9PSBudWxscHRyIHx8IHNlY3JldC5zaXpl
KCkgPCBrTWluU2VjcmV0Qnl0ZVNpemUpIHsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAg
fQorICAvLyBFbXB0eSBsYWJlbHMgYXJlIGFsd2F5cyBpbnZhbGlkIGluIGRlcml2YXRpb24uCisg
IGlmIChsYWJlbC5kYXRhKCkgPT0gbnVsbHB0ciB8fCBsYWJlbC5zaXplKCkgPT0gMCkgeworICAg
IHJldHVybiBhYnNsOjpudWxsb3B0OworICB9CisgIC8vIElmIGEgcmFuZG9tIHNhbHQgaXMgbm90
IHByb3ZpZGVkIHVzZSBhbGwgemVyb3MuCisgIHJ0Yzo6QnVmZmVyIHNhbHRfYnVmZmVyOworICBp
ZiAoc2FsdC5kYXRhKCkgPT0gbnVsbHB0ciB8fCBzYWx0LnNpemUoKSA9PSAwKSB7CisgICAgc2Fs
dF9idWZmZXIuU2V0U2l6ZShTSEEyNTZfRElHRVNUX0xFTkdUSCk7CisgICAgc3RkOjpmaWxsKHNh
bHRfYnVmZmVyLmJlZ2luKCksIHNhbHRfYnVmZmVyLmVuZCgpLCAwKTsKKyAgICBzYWx0ID0gc2Fs
dF9idWZmZXI7CisgIH0KKyAgLy8gVGhpcyBidWZmZXIgd2lsbCBlcmFzZSBpdHNlbGYgb24gcmVs
ZWFzZS4KKyAgWmVyb09uRnJlZUJ1ZmZlcjx1aW50OF90PiBkZXJpdmVkX2tleV9idWZmZXIoZGVy
aXZlZF9rZXlfYnl0ZV9zaXplLCAwKTsKKyAgaWYgKCFIS0RGKGRlcml2ZWRfa2V5X2J1ZmZlci5k
YXRhKCksIGRlcml2ZWRfa2V5X2J1ZmZlci5zaXplKCksIEVWUF9zaGEyNTYoKSwKKyAgICAgICAg
ICAgIHNlY3JldC5kYXRhKCksIHNlY3JldC5zaXplKCksIHNhbHQuZGF0YSgpLCBzYWx0LnNpemUo
KSwKKyAgICAgICAgICAgIGxhYmVsLmRhdGEoKSwgbGFiZWwuc2l6ZSgpKSkgeworICAgIHJldHVy
biBhYnNsOjpudWxsb3B0OworICB9CisgIHJldHVybiBhYnNsOjpvcHRpb25hbDxaZXJvT25GcmVl
QnVmZmVyPHVpbnQ4X3Q+PigKKyAgICAgIHN0ZDo6bW92ZShkZXJpdmVkX2tleV9idWZmZXIpKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9o
a2RmLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9vcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmY0M2NmYWE3YWJh
ZDdhOWExMWFhNWQ1MDk2ZTgxZWZhMWVlNTlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVy
aXZhdGlvbl9oa2RmLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBU
aGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lm
bmRlZiBSVENfQkFTRV9PUEVOU1NMX0tFWV9ERVJJVkFUSU9OX0hLREZfSF8KKyNkZWZpbmUgUlRD
X0JBU0VfT1BFTlNTTF9LRVlfREVSSVZBVElPTl9IS0RGX0hfCisKKyNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uva2V5X2Rlcml2YXRpb24u
aCIKKworbmFtZXNwYWNlIHJ0YyB7CisKKy8vIE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERiBwcm92
aWRlcyBhIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIHRoZQorLy8gS2V5RGVyaXZhdGlvbiBp
bnRlcmZhY2UgdG8gc3VwcG9ydCB0aGUgSEtERiBhbGdvcml0aG0gdXNpbmcgdGhlCisvLyBPcGVu
U1NML0JvcmluZ1NTTCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4KK2NsYXNzIE9wZW5TU0xLZXlE
ZXJpdmF0aW9uSEtERiBmaW5hbCA6IHB1YmxpYyBLZXlEZXJpdmF0aW9uIHsKKyBwdWJsaWM6Cisg
IE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERigpOworICB+T3BlblNTTEtleURlcml2YXRpb25IS0RG
KCkgb3ZlcnJpZGU7CisKKyAgLy8gR2VuZXJhbCB1c2VycyBzaG91bGRuJ3QgYmUgZ2VuZXJhdGlu
ZyBrZXlzIHNtYWxsZXIgdGhhbiAxMjggYml0cy4KKyAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWlu
S2V5Qnl0ZVNpemU7CisgIC8vIFRoZSBtYXhpbXVtIGF2YWlsYWJsZSBkZXJpdmF0aW9uIHNpemUg
MjU1KkRJR0VTVF9MRU5HVEgKKyAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWF4S2V5Qnl0ZVNpemU7
CisgIC8vIFRoZSBtaW5pbXVtIGFjY2VwdGFibGUgc2VjcmV0IHNpemUuCisgIHN0YXRpYyBjb25z
dCBzaXplX3Qga01pblNlY3JldEJ5dGVTaXplOworCisgIC8vIERlcml2ZXMgYSBuZXcga2V5IGZy
b20gZXhpc3Rpbmcga2V5IG1hdGVyaWFsIHVzaW5nIEhLREYuCisgIC8vIHNlY3JldCAtIFRoZSBy
YW5kb20gc2VjcmV0IHZhbHVlIHlvdSB3aXNoIHRvIGRlcml2ZSBhIGtleSBmcm9tLgorICAvLyBz
YWx0IC0gT3B0aW9uYWwgKG5vbiBzZWNyZXQpIGNyeXB0b2dyYXBoaWNhbGx5IHJhbmRvbSB2YWx1
ZS4KKyAgLy8gbGFiZWwgLSBBIG5vbiBzZWNyZXQgYnV0IHVuaXF1ZSBsYWJlbCB2YWx1ZSB0byBk
ZXRlcm1pbmUgdGhlIGRlcml2YXRpb24uCisgIC8vIGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSAtIFRo
ZSBzaXplIG9mIHRoZSBkZXJpdmVkIGtleS4KKyAgLy8gcmV0dXJuIC0gQSBaZXJvT25GcmVlQnVm
ZmVyIGNvbnRhaW5pbmcgdGhlIGRlcml2ZWQga2V5IG9yIGFuIGVycm9yCisgIC8vIGNvbmRpdGlv
bi4gQ2hlY2tpbmcgZXJyb3IgY29kZXMgaXMgZXhwbGljaXQgaW4gdGhlIEFQSSBhbmQgZXJyb3Ig
c2hvdWxkCisgIC8vIG5ldmVyIGJlIGlnbm9yZWQuCisgIGFic2w6Om9wdGlvbmFsPFplcm9PbkZy
ZWVCdWZmZXI8dWludDhfdD4+IERlcml2ZUtleSgKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IHVpbnQ4X3Q+IHNlY3JldCwKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IHNh
bHQsCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBsYWJlbCwKKyAgICAgIHNp
emVfdCBkZXJpdmVkX2tleV9ieXRlX3NpemUpIG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgUlRD
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYpOworfTsK
KworfSAgLy8gbmFtZXNwYWNlIHJ0YworCisjZW5kaWYgIC8vIFJUQ19CQVNFX09QRU5TU0xfS0VZ
X0RFUklWQVRJT05fSEtERl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkyZGY0MmZmZDMwZDZiNGZkMzU5YzE0YjEzZDM4ODNkZWE5YWY0ZGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9v
cGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGZfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSwxMDcgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsX2tleV9kZXJp
dmF0aW9uX2hrZGYuaCIKKworI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJ0ZXN0L2dt
b2NrLmgiCisKK25hbWVzcGFjZSBydGMgeworbmFtZXNwYWNlIHsKKworLy8gVmFsaWRhdGVzIHRo
YXQgYSBiYXNpYyB2YWxpZCBjYWxsIHdvcmtzIGNvcnJlY3RseS4KK1RFU1QoT3BlblNTTEtleURl
cml2YXRpb25IS0RGLCBEZXJpdmF0aW9uQmFzaWNUZXN0KSB7CisgIHJ0Yzo6QnVmZmVyIHNlY3Jl
dCgzMik7CisgIHJ0Yzo6QnVmZmVyIHNhbHQoMzIpOworICBydGM6OkJ1ZmZlciBsYWJlbCgzMik7
CisgIGNvbnN0IHNpemVfdCBkZXJpdmVkX2tleV9ieXRlX3NpemUgPSAxNjsKKworICBPcGVuU1NM
S2V5RGVyaXZhdGlvbkhLREYgaGtkZjsKKyAgYXV0byBrZXlfb3IgPSBoa2RmLkRlcml2ZUtleShz
ZWNyZXQsIHNhbHQsIGxhYmVsLCBkZXJpdmVkX2tleV9ieXRlX3NpemUpOworICBFWFBFQ1RfVFJV
RShrZXlfb3IuaGFzX3ZhbHVlKCkpOworICBaZXJvT25GcmVlQnVmZmVyPHVpbnQ4X3Q+IGtleSA9
IHN0ZDo6bW92ZShrZXlfb3IudmFsdWUoKSk7CisgIEVYUEVDVF9FUShkZXJpdmVkX2tleV9ieXRl
X3NpemUsIGtleS5zaXplKCkpOworfQorCisvLyBEZXJpdmF0aW9uIGZhaWxzIGlmIG91dHB1dCBp
cyB0b28gc21hbGwuCitURVNUKE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERiwgRGVyaXZhdGlvbkZh
aWxzSWZPdXRwdXRJc1Rvb1NtYWxsKSB7CisgIHJ0Yzo6QnVmZmVyIHNlY3JldCgzMik7CisgIHJ0
Yzo6QnVmZmVyIHNhbHQoMzIpOworICBydGM6OkJ1ZmZlciBsYWJlbCgzMik7CisgIGNvbnN0IHNp
emVfdCBkZXJpdmVkX2tleV9ieXRlX3NpemUgPSAxNTsKKworICBPcGVuU1NMS2V5RGVyaXZhdGlv
bkhLREYgaGtkZjsKKyAgYXV0byBrZXlfb3IgPSBoa2RmLkRlcml2ZUtleShzZWNyZXQsIHNhbHQs
IGxhYmVsLCBkZXJpdmVkX2tleV9ieXRlX3NpemUpOworICBFWFBFQ1RfRkFMU0Uoa2V5X29yLmhh
c192YWx1ZSgpKTsKK30KKworLy8gRGVyaXZhdGlvbiBmYWlscyBpZiBvdXRwdXQgaXMgdG9vIGxh
cmdlLgorVEVTVChPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYsIERlcml2YXRpb25GYWlsc0lmT3V0
cHV0SXNUb29MYXJnZSkgeworICBydGM6OkJ1ZmZlciBzZWNyZXQoMzIpOworICBydGM6OkJ1ZmZl
ciBzYWx0KDMyKTsKKyAgcnRjOjpCdWZmZXIgbGFiZWwoMzIpOworICBjb25zdCBzaXplX3QgZGVy
aXZlZF9rZXlfYnl0ZV9zaXplID0gMjU2ICogMzI7CisKKyAgT3BlblNTTEtleURlcml2YXRpb25I
S0RGIGhrZGY7CisgIGF1dG8ga2V5X29yID0gaGtkZi5EZXJpdmVLZXkoc2VjcmV0LCBzYWx0LCBs
YWJlbCwgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKTsKKyAgRVhQRUNUX0ZBTFNFKGtleV9vci5oYXNf
dmFsdWUoKSk7Cit9CisKKy8vIFZhbGlkYXRlcyB0aGF0IHRvbyBsaXR0bGUga2V5IG1hdGVyaWFs
IGNhdXNlcyBhIGZhaWx1cmUuCitURVNUKE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERiwgRGVyaXZh
dGlvbkZhaWxzV2l0aEludmFsaWRTZWNyZXQpIHsKKyAgcnRjOjpCdWZmZXIgc2VjcmV0KDE1KTsK
KyAgcnRjOjpCdWZmZXIgc2FsdCgzMik7CisgIHJ0Yzo6QnVmZmVyIGxhYmVsKDMyKTsKKyAgY29u
c3Qgc2l6ZV90IGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSA9IDE2OworCisgIE9wZW5TU0xLZXlEZXJp
dmF0aW9uSEtERiBoa2RmOworICBhdXRvIGtleV9vcl8wID0gaGtkZi5EZXJpdmVLZXkoc2VjcmV0
LCBzYWx0LCBsYWJlbCwgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKTsKKyAgRVhQRUNUX0ZBTFNFKGtl
eV9vcl8wLmhhc192YWx1ZSgpKTsKKworICBhdXRvIGtleV9vcl8xID0gaGtkZi5EZXJpdmVLZXko
bnVsbHB0ciwgc2FsdCwgbGFiZWwsIGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSk7CisgIEVYUEVDVF9G
QUxTRShrZXlfb3JfMS5oYXNfdmFsdWUoKSk7CisKKyAgcnRjOjpCdWZmZXIgc2VjcmV0X2VtcHR5
OworICBhdXRvIGtleV9vcl8yID0KKyAgICAgIGhrZGYuRGVyaXZlS2V5KHNlY3JldF9lbXB0eSwg
c2FsdCwgbGFiZWwsIGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSk7CisgIEVYUEVDVF9GQUxTRShrZXlf
b3JfMi5oYXNfdmFsdWUoKSk7Cit9CisKKy8vIFZhbGlkYXRlcyB0aGF0IEhLREYgd29ya3Mgd2l0
aG91dCBhIHNhbHQgYmVpbmcgc2V0LgorVEVTVChPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYsIERl
cml2YXRpb25Xb3Jrc1dpdGhOb1NhbHQpIHsKKyAgcnRjOjpCdWZmZXIgc2VjcmV0KDMyKTsKKyAg
cnRjOjpCdWZmZXIgbGFiZWwoMzIpOworICBjb25zdCBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9z
aXplID0gMTY7CisKKyAgT3BlblNTTEtleURlcml2YXRpb25IS0RGIGhrZGY7CisgIGF1dG8ga2V5
X29yID0gaGtkZi5EZXJpdmVLZXkoc2VjcmV0LCBudWxscHRyLCBsYWJlbCwgZGVyaXZlZF9rZXlf
Ynl0ZV9zaXplKTsKKyAgRVhQRUNUX1RSVUUoa2V5X29yLmhhc192YWx1ZSgpKTsKK30KKworLy8g
VmFsaWRhdGVzIHRoYXQgYSBsYWJlbCBpcyByZXF1aXJlZCB0byB3b3JrIGNvcnJlY3RseS4KK1RF
U1QoT3BlblNTTEtleURlcml2YXRpb25IS0RGLCBEZXJpdmF0aW9uUmVxdWlyZXNMYWJlbCkgewor
ICBydGM6OkJ1ZmZlciBzZWNyZXQoMzIpOworICBydGM6OkJ1ZmZlciBzYWx0KDMyKTsKKyAgcnRj
OjpCdWZmZXIgbGFiZWwoMSk7CisgIGNvbnN0IHNpemVfdCBkZXJpdmVkX2tleV9ieXRlX3NpemUg
PSAxNjsKKworICBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYgaGtkZjsKKyAgYXV0byBrZXlfb3Jf
MCA9IGhrZGYuRGVyaXZlS2V5KHNlY3JldCwgc2FsdCwgbGFiZWwsIGRlcml2ZWRfa2V5X2J5dGVf
c2l6ZSk7CisgIEVYUEVDVF9UUlVFKGtleV9vcl8wLmhhc192YWx1ZSgpKTsKKyAgWmVyb09uRnJl
ZUJ1ZmZlcjx1aW50OF90PiBrZXkgPSBzdGQ6Om1vdmUoa2V5X29yXzAudmFsdWUoKSk7CisgIEVY
UEVDVF9FUShrZXkuc2l6ZSgpLCBkZXJpdmVkX2tleV9ieXRlX3NpemUpOworCisgIGF1dG8ga2V5
X29yXzEgPSBoa2RmLkRlcml2ZUtleShzZWNyZXQsIHNhbHQsIG51bGxwdHIsIGRlcml2ZWRfa2V5
X2J5dGVfc2l6ZSk7CisgIEVYUEVDVF9GQUxTRShrZXlfb3JfMS5oYXNfdmFsdWUoKSk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9vcGVuc3NsYWRhcHRlci5jYwppbmRleCA1MDI4NGE2NzE5ZmU0NTE0NmFjZTkyNjZlMGY5Y2Jk
YjNiZDYzM2Q4Li5mY2ZhNTNiN2VlNzBkODRlYzFiYWFkMDBiODY3NDU0ZTQzMTM5MDFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9vcGVuc3NsYWRhcHRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsYWRhcHRlci5jYwpAQCAtMTAsMjUgKzEwLDI1IEBA
CiAKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsYWRhcHRlci5oIgogCi0jaWYgZGVmaW5lZChX
RUJSVENfUE9TSVgpCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKKyNpbmNsdWRlIDxlcnJu
by5oPgogCiAjaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KLSNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0
by5oPgogI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3Ns
di5oPgogI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgogI2luY2x1ZGUgPG9wZW5zc2wveDUwOS5o
PgotI2luY2x1ZGUgPG9wZW5zc2wveDUwOXYzLmg+CiAjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNz
bC5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVk
ZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L29wZW5zc2x1dGlsaXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWQuaCIKIAogI2lmbmRlZiBPUEVOU1NMX0lTX0JPUklOR1NTTApAQCAtMzkyLDE1ICszOTIsMTcg
QEAgaW50IE9wZW5TU0xBZGFwdGVyOjpCZWdpblNTTCgpIHsKIAogICAvLyBEbyB0aGUgY29ubmVj
dC4KICAgZXJyID0gQ29udGludWVTU0woKTsKLSAgaWYgKGVyciAhPSAwKQorICBpZiAoZXJyICE9
IDApIHsKICAgICBnb3RvIHNzbF9lcnJvcjsKKyAgfQogCiAgIHJldHVybiBlcnI7CiAKIHNzbF9l
cnJvcjoKICAgQ2xlYW51cCgpOwotICBpZiAoYmlvKQorICBpZiAoYmlvKSB7CiAgICAgQklPX2Zy
ZWUoYmlvKTsKKyAgfQogCiAgIHJldHVybiBlcnI7CiB9CkBAIC00MjQsMTQgKzQyNiwxMyBAQCBp
bnQgT3BlblNTTEFkYXB0ZXI6OkNvbnRpbnVlU1NMKCkgewogCiAgICAgICBzdGF0ZV8gPSBTU0xf
Q09OTkVDVEVEOwogICAgICAgQXN5bmNTb2NrZXRBZGFwdGVyOjpPbkNvbm5lY3RFdmVudCh0aGlz
KTsKLSNpZiAwICAvLyBUT0RPKGJlbndyaWdodCk6IHdvcnJ5IGFib3V0IHRoaXMKLSAgICAvLyBE
b24ndCBsZXQgb3Vyc2VsdmVzIGdvIGF3YXkgZHVyaW5nIHRoZSBjYWxsYmFja3MKLSAgICBQUmVm
UHRyPE9wZW5TU0xBZGFwdGVyPiBsb2NrKHRoaXMpOwotICAgIFJUQ19MT0coTFNfSU5GTykgPDwg
IiAtLSBvblN0cmVhbVJlYWRhYmxlIjsKLSAgICBBc3luY1NvY2tldEFkYXB0ZXI6Ok9uUmVhZEV2
ZW50KHRoaXMpOwotICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIiAtLSBvblN0cmVhbVdyaXRlYWJs
ZSI7Ci0gICAgQXN5bmNTb2NrZXRBZGFwdGVyOjpPbldyaXRlRXZlbnQodGhpcyk7Ci0jZW5kaWYK
KyAgICAgIC8vIFRPRE8oYmVud3JpZ2h0KTogUmVmYWN0b3IgdGhpcyBjb2RlIHBhdGguCisgICAg
ICAvLyBEb24ndCBsZXQgb3Vyc2VsdmVzIGdvIGF3YXkgZHVyaW5nIHRoZSBjYWxsYmFja3MKKyAg
ICAgIC8vIFBSZWZQdHI8T3BlblNTTEFkYXB0ZXI+IGxvY2sodGhpcyk7CisgICAgICAvLyBSVENf
TE9HKExTX0lORk8pIDw8ICIgLS0gb25TdHJlYW1SZWFkYWJsZSI7CisgICAgICAvLyBBc3luY1Nv
Y2tldEFkYXB0ZXI6Ok9uUmVhZEV2ZW50KHRoaXMpOworICAgICAgLy8gUlRDX0xPRyhMU19JTkZP
KSA8PCAiIC0tIG9uU3RyZWFtV3JpdGVhYmxlIjsKKyAgICAgIC8vIEFzeW5jU29ja2V0QWRhcHRl
cjo6T25Xcml0ZUV2ZW50KHRoaXMpOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNTTF9FUlJP
Ul9XQU5UX1JFQUQ6CkBAIC00NjIsOCArNDYzLDkgQEAgdm9pZCBPcGVuU1NMQWRhcHRlcjo6RXJy
b3IoY29uc3QgY2hhciogY29udGV4dCwgaW50IGVyciwgYm9vbCBzaWduYWwpIHsKICAgICAgICAg
ICAgICAgICAgICAgICA8PCAiKSI7CiAgIHN0YXRlXyA9IFNTTF9FUlJPUjsKICAgU2V0RXJyb3Io
ZXJyKTsKLSAgaWYgKHNpZ25hbCkKKyAgaWYgKHNpZ25hbCkgewogICAgIEFzeW5jU29ja2V0QWRh
cHRlcjo6T25DbG9zZUV2ZW50KHRoaXMsIGVycik7CisgIH0KIH0KIAogdm9pZCBPcGVuU1NMQWRh
cHRlcjo6Q2xlYW51cCgpIHsKQEAgLTUyOCwyMyArNTMwLDIwIEBAIGludCBPcGVuU1NMQWRhcHRl
cjo6RG9Tc2xXcml0ZShjb25zdCB2b2lkKiBwdiwgc2l6ZV90IGNiLCBpbnQqIGVycm9yKSB7CiAg
IHJldHVybiBTT0NLRVRfRVJST1I7CiB9CiAKLS8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAv
LyBBc3luY1NvY2tldCBJbXBsZW1lbnRhdGlvbgotLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
IAogaW50IE9wZW5TU0xBZGFwdGVyOjpTZW5kKGNvbnN0IHZvaWQqIHB2LCBzaXplX3QgY2IpIHsK
ICAgc3dpdGNoIChzdGF0ZV8pIHsKICAgICBjYXNlIFNTTF9OT05FOgogICAgICAgcmV0dXJuIEFz
eW5jU29ja2V0QWRhcHRlcjo6U2VuZChwdiwgY2IpOwotCiAgICAgY2FzZSBTU0xfV0FJVDoKICAg
ICBjYXNlIFNTTF9DT05ORUNUSU5HOgogICAgICAgU2V0RXJyb3IoRU5PVENPTk4pOwogICAgICAg
cmV0dXJuIFNPQ0tFVF9FUlJPUjsKLQogICAgIGNhc2UgU1NMX0NPTk5FQ1RFRDoKICAgICAgIGJy
ZWFrOwotCiAgICAgY2FzZSBTU0xfRVJST1I6CiAgICAgZGVmYXVsdDoKICAgICAgIHJldHVybiBT
T0NLRVRfRVJST1I7CkBAIC01NjcsOCArNTY2LDkgQEAgaW50IE9wZW5TU0xBZGFwdGVyOjpTZW5k
KGNvbnN0IHZvaWQqIHB2LCBzaXplX3QgY2IpIHsKICAgfQogCiAgIC8vIE9wZW5TU0wgd2lsbCBy
ZXR1cm4gYW4gZXJyb3IgaWYgd2UgdHJ5IHRvIHdyaXRlIHplcm8gYnl0ZXMKLSAgaWYgKGNiID09
IDApCisgIGlmIChjYiA9PSAwKSB7CiAgICAgcmV0dXJuIDA7CisgIH0KIAogICByZXQgPSBEb1Nz
bFdyaXRlKHB2LCBjYiwgJmVycm9yKTsKIApAQCAtNTk1LDcgKzU5NSw2IEBAIGludCBPcGVuU1NM
QWRhcHRlcjo6U2VuZChjb25zdCB2b2lkKiBwdiwgc2l6ZV90IGNiKSB7CiAgICAgLy8gc2l6ZS4g
VGhlIHVzZXIgb2YgdGhpcyBjbGFzcyBjYW4gY29uc2lkZXIgaXQgc2VudC4KICAgICByZXR1cm4g
cnRjOjpkY2hlY2tlZF9jYXN0PGludD4oY2IpOwogICB9Ci0KICAgcmV0dXJuIHJldDsKIH0KIApA
QCAtNjA4LDcgKzYwNyw2IEBAIGludCBPcGVuU1NMQWRhcHRlcjo6U2VuZFRvKGNvbnN0IHZvaWQq
IHB2LAogICB9CiAKICAgU2V0RXJyb3IoRU5PVENPTk4pOwotCiAgIHJldHVybiBTT0NLRVRfRVJS
T1I7CiB9CiAKQEAgLTYxNiwyOCArNjE0LDI2IEBAIGludCBPcGVuU1NMQWRhcHRlcjo6UmVjdih2
b2lkKiBwdiwgc2l6ZV90IGNiLCBpbnQ2NF90KiB0aW1lc3RhbXApIHsKICAgc3dpdGNoIChzdGF0
ZV8pIHsKICAgICBjYXNlIFNTTF9OT05FOgogICAgICAgcmV0dXJuIEFzeW5jU29ja2V0QWRhcHRl
cjo6UmVjdihwdiwgY2IsIHRpbWVzdGFtcCk7Ci0KICAgICBjYXNlIFNTTF9XQUlUOgogICAgIGNh
c2UgU1NMX0NPTk5FQ1RJTkc6CiAgICAgICBTZXRFcnJvcihFTk9UQ09OTik7CiAgICAgICByZXR1
cm4gU09DS0VUX0VSUk9SOwotCiAgICAgY2FzZSBTU0xfQ09OTkVDVEVEOgogICAgICAgYnJlYWs7
Ci0KICAgICBjYXNlIFNTTF9FUlJPUjoKICAgICBkZWZhdWx0OgogICAgICAgcmV0dXJuIFNPQ0tF
VF9FUlJPUjsKICAgfQogCiAgIC8vIERvbid0IHRydXN0IE9wZW5TU0wgd2l0aCB6ZXJvIGJ5dGUg
cmVhZHMKLSAgaWYgKGNiID09IDApCisgIGlmIChjYiA9PSAwKSB7CiAgICAgcmV0dXJuIDA7Cisg
IH0KIAogICBzc2xfcmVhZF9uZWVkc193cml0ZV8gPSBmYWxzZTsKLQogICBpbnQgY29kZSA9IFNT
TF9yZWFkKHNzbF8sIHB2LCBjaGVja2VkX2Nhc3Q8aW50PihjYikpOwogICBpbnQgZXJyb3IgPSBT
U0xfZ2V0X2Vycm9yKHNzbF8sIGNvZGUpOworCiAgIHN3aXRjaCAoZXJyb3IpIHsKICAgICBjYXNl
IFNTTF9FUlJPUl9OT05FOgogICAgICAgcmV0dXJuIGNvZGU7CkBAIC02NjAsNyArNjU2LDYgQEAg
aW50IE9wZW5TU0xBZGFwdGVyOjpSZWN2KHZvaWQqIHB2LCBzaXplX3QgY2IsIGludDY0X3QqIHRp
bWVzdGFtcCkgewogICAgICAgRXJyb3IoIlNTTF9yZWFkIiwgKGNvZGUgPyBjb2RlIDogLTEpLCBm
YWxzZSk7CiAgICAgICBicmVhazsKICAgfQotCiAgIHJldHVybiBTT0NLRVRfRVJST1I7CiB9CiAK
QEAgLTY3MCwxNCArNjY1LDExIEBAIGludCBPcGVuU1NMQWRhcHRlcjo6UmVjdkZyb20odm9pZCog
cHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QqIHRpbWVzdGFtcCkgewog
ICBpZiAoc29ja2V0Xy0+R2V0U3RhdGUoKSA9PSBTb2NrZXQ6OkNTX0NPTk5FQ1RFRCkgewogICAg
IGludCByZXQgPSBSZWN2KHB2LCBjYiwgdGltZXN0YW1wKTsKLQogICAgICpwYWRkciA9IEdldFJl
bW90ZUFkZHJlc3MoKTsKLQogICAgIHJldHVybiByZXQ7CiAgIH0KIAogICBTZXRFcnJvcihFTk9U
Q09OTik7Ci0KICAgcmV0dXJuIFNPQ0tFVF9FUlJPUjsKIH0KIApAQCAtNjg4LDEyICs2ODAsMTEg
QEAgaW50IE9wZW5TU0xBZGFwdGVyOjpDbG9zZSgpIHsKIH0KIAogU29ja2V0OjpDb25uU3RhdGUg
T3BlblNTTEFkYXB0ZXI6OkdldFN0YXRlKCkgY29uc3QgewotICAvLyBpZiAoc2lnbmFsX2Nsb3Nl
XykKLSAgLy8gIHJldHVybiBDU19DT05ORUNURUQ7CiAgIENvbm5TdGF0ZSBzdGF0ZSA9IHNvY2tl
dF8tPkdldFN0YXRlKCk7CiAgIGlmICgoc3RhdGUgPT0gQ1NfQ09OTkVDVEVEKSAmJgotICAgICAg
KChzdGF0ZV8gPT0gU1NMX1dBSVQpIHx8IChzdGF0ZV8gPT0gU1NMX0NPTk5FQ1RJTkcpKSkKKyAg
ICAgICgoc3RhdGVfID09IFNTTF9XQUlUKSB8fCAoc3RhdGVfID09IFNTTF9DT05ORUNUSU5HKSkp
IHsKICAgICBzdGF0ZSA9IENTX0NPTk5FQ1RJTkc7CisgIH0KICAgcmV0dXJuIHN0YXRlOwogfQog
CkBAIC03MzYsOCArNzI3LDkgQEAgdm9pZCBPcGVuU1NMQWRhcHRlcjo6T25SZWFkRXZlbnQoQXN5
bmNTb2NrZXQqIHNvY2tldCkgewogICAgIHJldHVybjsKICAgfQogCi0gIGlmIChzdGF0ZV8gIT0g
U1NMX0NPTk5FQ1RFRCkKKyAgaWYgKHN0YXRlXyAhPSBTU0xfQ09OTkVDVEVEKSB7CiAgICAgcmV0
dXJuOworICB9CiAKICAgLy8gRG9uJ3QgbGV0IG91cnNlbHZlcyBnbyBhd2F5IGR1cmluZyB0aGUg
Y2FsbGJhY2tzCiAgIC8vIFBSZWZQdHI8T3BlblNTTEFkYXB0ZXI+IGxvY2sodGhpcyk7IC8vIFRP
RE8oYmVud3JpZ2h0KTogZml4IHRoaXMKQEAgLTc2MSw4ICs3NTMsOSBAQCB2b2lkIE9wZW5TU0xB
ZGFwdGVyOjpPbldyaXRlRXZlbnQoQXN5bmNTb2NrZXQqIHNvY2tldCkgewogICAgIHJldHVybjsK
ICAgfQogCi0gIGlmIChzdGF0ZV8gIT0gU1NMX0NPTk5FQ1RFRCkKKyAgaWYgKHN0YXRlXyAhPSBT
U0xfQ09OTkVDVEVEKSB7CiAgICAgcmV0dXJuOworICB9CiAKICAgLy8gRG9uJ3QgbGV0IG91cnNl
bHZlcyBnbyBhd2F5IGR1cmluZyB0aGUgY2FsbGJhY2tzCiAgIC8vIFBSZWZQdHI8T3BlblNTTEFk
YXB0ZXI+IGxvY2sodGhpcyk7IC8vIFRPRE8oYmVud3JpZ2h0KTogZml4IHRoaXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29w
ZW5zc2xhZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9vcGVuc3NsYWRhcHRlci5oCmluZGV4IDUwYTdjMDg0NWNhNDU5ZGVkZDI4MjEw
NWM3NzNhYzk3ZWE4YTJkNmEuLjJlM2EzNTVmNDM5ZTc1MGU1YzIyYzhhYTliYzZhYjY5NmI4NWM4
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL29wZW5zc2xhZGFwdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuaApAQCAtMTEsMjUgKzEx
LDI4IEBACiAjaWZuZGVmIFJUQ19CQVNFX09QRU5TU0xBREFQVEVSX0hfCiAjZGVmaW5lIFJUQ19C
QVNFX09QRU5TU0xBREFQVEVSX0hfCiAKLSNpbmNsdWRlIDxvcGVuc3NsL29zc2xfdHlwLmg+Ci0K
LSNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+
CiAKLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9h
c3luY3NvY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL21lc3NhZ2VoYW5kbGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZXF1ZXVl
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbHNl
c3Npb25jYWNoZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldC5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xhZGFwdGVyLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9zc2xpZGVudGl0eS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuaCIK
IAogbmFtZXNwYWNlIHJ0YyB7CiAKLWNsYXNzIE9wZW5TU0xBZGFwdGVyIDogcHVibGljIFNTTEFk
YXB0ZXIsIHB1YmxpYyBNZXNzYWdlSGFuZGxlciB7CitjbGFzcyBPcGVuU1NMQWRhcHRlciBmaW5h
bCA6IHB1YmxpYyBTU0xBZGFwdGVyLCBwdWJsaWMgTWVzc2FnZUhhbmRsZXIgewogIHB1YmxpYzoK
ICAgc3RhdGljIGJvb2wgSW5pdGlhbGl6ZVNTTCgpOwogICBzdGF0aWMgYm9vbCBDbGVhbnVwU1NM
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MKaW5kZXgg
MjM2YmVmNTVjOGFhYzk1YTZjNzE0Mzc0YjhhMmMwY2VhNzdiMTJkYy4uNGUzMjVkY2VjMDE4ZmM5
MjUzNmEwY2U1YzgyOGMzMmE5ODI5MzgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29w
ZW5zc2xjZXJ0aWZpY2F0ZS5jYwpAQCAtMTAsMTAgKzEwLDYgQEAKIAogI2luY2x1ZGUgInJ0Y19i
YXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5oIgogCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUg
PHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCiAjaWYgZGVmaW5lZChXRUJSVENfV0lOKQog
Ly8gTXVzdCBiZSBpbmNsdWRlZCBmaXJzdCBiZWZvcmUgb3BlbnNzbCBoZWFkZXJzLgogI2luY2x1
ZGUgInJ0Y19iYXNlL3dpbjMyLmgiICAvLyBOT0xJTlQKQEAgLTIxLDYzICsxNyw2OSBAQAogCiAj
aW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KICNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0jaW5jbHVk
ZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgogI2luY2x1ZGUg
PG9wZW5zc2wvcGVtLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KKyNpbmNsdWRlIDx0aW1l
Lmg+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9oZWxwZXJzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9vcGVuc3NsLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xkaWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVu
c3NsaWRlbnRpdHkuaCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5oIgotI2lm
bmRlZiBXRUJSVENfRVhDTFVERV9CVUlMVF9JTl9TU0xfUk9PVF9DRVJUUwotI2luY2x1ZGUgInJ0
Y19iYXNlL3NzbHJvb3RzLmgiCi0jZW5kaWYgIC8vIFdFQlJUQ19FWENMVURFX0JVSUxUX0lOX1NT
TF9ST09UX0NFUlRTCiAKIG5hbWVzcGFjZSBydGMgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBPcGVu
U1NMQ2VydGlmaWNhdGUKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gV2UgY291bGQgaGF2ZSBleHBvc2Vk
IGEgbXlyaWFkIG9mIHBhcmFtZXRlcnMgZm9yIHRoZSBjcnlwdG8gc3R1ZmYsCi0vLyBidXQga2Vl
cGluZyBpdCBzaW1wbGUgc2VlbXMgYmVzdC4KK25hbWVzcGFjZSB7CiAKIC8vIFJhbmRvbSBiaXRz
IGZvciBjZXJ0aWZpY2F0ZSBzZXJpYWwgbnVtYmVyCiBzdGF0aWMgY29uc3QgaW50IFNFUklBTF9S
QU5EX0JJVFMgPSA2NDsKIAorI2lmICFkZWZpbmVkKE5ERUJVRykKKy8vIFByaW50IGEgY2VydGlm
aWNhdGUgdG8gdGhlIGxvZywgZm9yIGRlYnVnZ2luZy4KK3N0YXRpYyB2b2lkIFByaW50Q2VydChY
NTA5KiB4NTA5KSB7CisgIEJJTyogdGVtcF9tZW1vcnlfYmlvID0gQklPX25ldyhCSU9fc19tZW0o
KSk7CisgIGlmICghdGVtcF9tZW1vcnlfYmlvKSB7CisgICAgUlRDX0RMT0dfRihMU19FUlJPUikg
PDwgIkZhaWxlZCB0byBhbGxvY2F0ZSB0ZW1wb3JhcnkgbWVtb3J5IGJpbyI7CisgICAgcmV0dXJu
OworICB9CisgIFg1MDlfcHJpbnRfZXgodGVtcF9tZW1vcnlfYmlvLCB4NTA5LCBYTl9GTEFHX1NF
UF9DUExVU19TUEMsIDApOworICBCSU9fd3JpdGUodGVtcF9tZW1vcnlfYmlvLCAiXDAiLCAxKTsK
KyAgY2hhciogYnVmZmVyOworICBCSU9fZ2V0X21lbV9kYXRhKHRlbXBfbWVtb3J5X2JpbywgJmJ1
ZmZlcik7CisgIFJUQ19ETE9HKExTX1ZFUkJPU0UpIDw8IGJ1ZmZlcjsKKyAgQklPX2ZyZWUodGVt
cF9tZW1vcnlfYmlvKTsKK30KKyNlbmRpZgorCiAvLyBHZW5lcmF0ZSBhIHNlbGYtc2lnbmVkIGNl
cnRpZmljYXRlLCB3aXRoIHRoZSBwdWJsaWMga2V5IGZyb20gdGhlCiAvLyBnaXZlbiBrZXkgcGFp
ci4gQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSByZXR1cm5lZCBvYmplY3Qu
CiBzdGF0aWMgWDUwOSogTWFrZUNlcnRpZmljYXRlKEVWUF9QS0VZKiBwa2V5LCBjb25zdCBTU0xJ
ZGVudGl0eVBhcmFtcyYgcGFyYW1zKSB7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIk1ha2luZyBj
ZXJ0aWZpY2F0ZSBmb3IgIiA8PCBwYXJhbXMuY29tbW9uX25hbWU7Ci0gIFg1MDkqIHg1MDkgPSBu
dWxscHRyOworCisgIEFTTjFfSU5URUdFUiogYXNuMV9zZXJpYWxfbnVtYmVyID0gbnVsbHB0cjsK
ICAgQklHTlVNKiBzZXJpYWxfbnVtYmVyID0gbnVsbHB0cjsKKyAgWDUwOSogeDUwOSA9IG51bGxw
dHI7CiAgIFg1MDlfTkFNRSogbmFtZSA9IG51bGxwdHI7CiAgIHRpbWVfdCBlcG9jaF9vZmYgPSAw
OyAgLy8gVGltZSBvZmZzZXQgc2luY2UgZXBvY2guCiAKLSAgaWYgKCh4NTA5ID0gWDUwOV9uZXco
KSkgPT0gbnVsbHB0cikKKyAgaWYgKCh4NTA5ID0gWDUwOV9uZXcoKSkgPT0gbnVsbHB0cikgewog
ICAgIGdvdG8gZXJyb3I7Ci0KLSAgaWYgKCFYNTA5X3NldF9wdWJrZXkoeDUwOSwgcGtleSkpCisg
IH0KKyAgaWYgKCFYNTA5X3NldF9wdWJrZXkoeDUwOSwgcGtleSkpIHsKICAgICBnb3RvIGVycm9y
OwotCi0gIC8vIHNlcmlhbCBudW1iZXIKLSAgLy8gdGVtcG9yYXJ5IHJlZmVyZW5jZSB0byBzZXJp
YWwgbnVtYmVyIGluc2lkZSB4NTA5IHN0cnVjdAotICBBU04xX0lOVEVHRVIqIGFzbjFfc2VyaWFs
X251bWJlcjsKKyAgfQorICAvLyBzZXJpYWwgbnVtYmVyIC0gdGVtcG9yYXJ5IHJlZmVyZW5jZSB0
byBzZXJpYWwgbnVtYmVyIGluc2lkZSB4NTA5IHN0cnVjdAogICBpZiAoKHNlcmlhbF9udW1iZXIg
PSBCTl9uZXcoKSkgPT0gbnVsbHB0ciB8fAogICAgICAgIUJOX3BzZXVkb19yYW5kKHNlcmlhbF9u
dW1iZXIsIFNFUklBTF9SQU5EX0JJVFMsIDAsIDApIHx8CiAgICAgICAoYXNuMV9zZXJpYWxfbnVt
YmVyID0gWDUwOV9nZXRfc2VyaWFsTnVtYmVyKHg1MDkpKSA9PSBudWxscHRyIHx8Ci0gICAgICAh
Qk5fdG9fQVNOMV9JTlRFR0VSKHNlcmlhbF9udW1iZXIsIGFzbjFfc2VyaWFsX251bWJlcikpCisg
ICAgICAhQk5fdG9fQVNOMV9JTlRFR0VSKHNlcmlhbF9udW1iZXIsIGFzbjFfc2VyaWFsX251bWJl
cikpIHsKICAgICBnb3RvIGVycm9yOwotCi0gIGlmICghWDUwOV9zZXRfdmVyc2lvbih4NTA5LCAy
TCkpICAvLyB2ZXJzaW9uIDMKKyAgfQorICAvLyBTZXQgdmVyc2lvbiB0byBYNTA5LlYzCisgIGlm
ICghWDUwOV9zZXRfdmVyc2lvbih4NTA5LCAyTCkpIHsKICAgICBnb3RvIGVycm9yOworICB9CiAK
ICAgLy8gVGhlcmUgYXJlIGEgbG90IG9mIHBvc3NpYmxlIGNvbXBvbmVudHMgZm9yIHRoZSBuYW1l
IGVudHJpZXMuIEluCiAgIC8vIG91ciBQMlAgU1NMIG1vZGUgaG93ZXZlciwgdGhlIGNlcnRpZmlj
YXRlcyBhcmUgcHJlLWV4Y2hhbmdlZApAQCAtOTAsMTUgKzkyLDE2IEBAIHN0YXRpYyBYNTA5KiBN
YWtlQ2VydGlmaWNhdGUoRVZQX1BLRVkqIHBrZXksIGNvbnN0IFNTTElkZW50aXR5UGFyYW1zJiBw
YXJhbXMpIHsKICAgICAgICFYNTA5X05BTUVfYWRkX2VudHJ5X2J5X05JRChuYW1lLCBOSURfY29t
bW9uTmFtZSwgTUJTVFJJTkdfVVRGOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAodW5zaWduZWQgY2hhciopcGFyYW1zLmNvbW1vbl9uYW1lLmNfc3RyKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xLCAwKSB8fAotICAgICAgIVg1MDlfc2V0X3N1
YmplY3RfbmFtZSh4NTA5LCBuYW1lKSB8fCAhWDUwOV9zZXRfaXNzdWVyX25hbWUoeDUwOSwgbmFt
ZSkpCisgICAgICAhWDUwOV9zZXRfc3ViamVjdF9uYW1lKHg1MDksIG5hbWUpIHx8ICFYNTA5X3Nl
dF9pc3N1ZXJfbmFtZSh4NTA5LCBuYW1lKSkgewogICAgIGdvdG8gZXJyb3I7Ci0KKyAgfQogICBp
ZiAoIVg1MDlfdGltZV9hZGooWDUwOV9nZXRfbm90QmVmb3JlKHg1MDkpLCBwYXJhbXMubm90X2Jl
Zm9yZSwgJmVwb2NoX29mZikgfHwKLSAgICAgICFYNTA5X3RpbWVfYWRqKFg1MDlfZ2V0X25vdEFm
dGVyKHg1MDkpLCBwYXJhbXMubm90X2FmdGVyLCAmZXBvY2hfb2ZmKSkKKyAgICAgICFYNTA5X3Rp
bWVfYWRqKFg1MDlfZ2V0X25vdEFmdGVyKHg1MDkpLCBwYXJhbXMubm90X2FmdGVyLCAmZXBvY2hf
b2ZmKSkgewogICAgIGdvdG8gZXJyb3I7Ci0KLSAgaWYgKCFYNTA5X3NpZ24oeDUwOSwgcGtleSwg
RVZQX3NoYTI1NigpKSkKKyAgfQorICBpZiAoIVg1MDlfc2lnbih4NTA5LCBwa2V5LCBFVlBfc2hh
MjU2KCkpKSB7CiAgICAgZ290byBlcnJvcjsKKyAgfQogCiAgIEJOX2ZyZWUoc2VyaWFsX251bWJl
cik7CiAgIFg1MDlfTkFNRV9mcmVlKG5hbWUpOwpAQCAtMTEyLDI4ICsxMTUsMTQgQEAgZXJyb3I6
CiAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYgIWRlZmluZWQoTkRFQlVHKQotLy8gUHJpbnQg
YSBjZXJ0aWZpY2F0ZSB0byB0aGUgbG9nLCBmb3IgZGVidWdnaW5nLgotc3RhdGljIHZvaWQgUHJp
bnRDZXJ0KFg1MDkqIHg1MDkpIHsKLSAgQklPKiB0ZW1wX21lbW9yeV9iaW8gPSBCSU9fbmV3KEJJ
T19zX21lbSgpKTsKLSAgaWYgKCF0ZW1wX21lbW9yeV9iaW8pIHsKLSAgICBSVENfRExPR19GKExT
X0VSUk9SKSA8PCAiRmFpbGVkIHRvIGFsbG9jYXRlIHRlbXBvcmFyeSBtZW1vcnkgYmlvIjsKLSAg
ICByZXR1cm47Ci0gIH0KLSAgWDUwOV9wcmludF9leCh0ZW1wX21lbW9yeV9iaW8sIHg1MDksIFhO
X0ZMQUdfU0VQX0NQTFVTX1NQQywgMCk7Ci0gIEJJT193cml0ZSh0ZW1wX21lbW9yeV9iaW8sICJc
MCIsIDEpOwotICBjaGFyKiBidWZmZXI7Ci0gIEJJT19nZXRfbWVtX2RhdGEodGVtcF9tZW1vcnlf
YmlvLCAmYnVmZmVyKTsKLSAgUlRDX0RMT0coTFNfVkVSQk9TRSkgPDwgYnVmZmVyOwotICBCSU9f
ZnJlZSh0ZW1wX21lbW9yeV9iaW8pOwotfQotI2VuZGlmCit9ICAvLyBuYW1lc3BhY2UKIAogT3Bl
blNTTENlcnRpZmljYXRlOjpPcGVuU1NMQ2VydGlmaWNhdGUoWDUwOSogeDUwOSkgOiB4NTA5Xyh4
NTA5KSB7Ci0gIEFkZFJlZmVyZW5jZSgpOworICBSVENfRENIRUNLKHg1MDlfICE9IG51bGxwdHIp
OworICBYNTA5X3VwX3JlZih4NTA5Xyk7CiB9CiAKLU9wZW5TU0xDZXJ0aWZpY2F0ZSogT3BlblNT
TENlcnRpZmljYXRlOjpHZW5lcmF0ZSgKK3N0ZDo6dW5pcXVlX3B0cjxPcGVuU1NMQ2VydGlmaWNh
dGU+IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6R2VuZXJhdGUoCiAgICAgT3BlblNTTEtleVBhaXIqIGtl
eV9wYWlyLAogICAgIGNvbnN0IFNTTElkZW50aXR5UGFyYW1zJiBwYXJhbXMpIHsKICAgU1NMSWRl
bnRpdHlQYXJhbXMgYWN0dWFsX3BhcmFtcyhwYXJhbXMpOwpAQCAtMTQ5LDI1ICsxMzgsMjcgQEAg
T3BlblNTTENlcnRpZmljYXRlKiBPcGVuU1NMQ2VydGlmaWNhdGU6OkdlbmVyYXRlKAogI2lmICFk
ZWZpbmVkKE5ERUJVRykKICAgUHJpbnRDZXJ0KHg1MDkpOwogI2VuZGlmCi0gIE9wZW5TU0xDZXJ0
aWZpY2F0ZSogcmV0ID0gbmV3IE9wZW5TU0xDZXJ0aWZpY2F0ZSh4NTA5KTsKKyAgYXV0byByZXQg
PSBhYnNsOjptYWtlX3VuaXF1ZTxPcGVuU1NMQ2VydGlmaWNhdGU+KHg1MDkpOwogICBYNTA5X2Zy
ZWUoeDUwOSk7CiAgIHJldHVybiByZXQ7CiB9CiAKLU9wZW5TU0xDZXJ0aWZpY2F0ZSogT3BlblNT
TENlcnRpZmljYXRlOjpGcm9tUEVNU3RyaW5nKAorc3RkOjp1bmlxdWVfcHRyPE9wZW5TU0xDZXJ0
aWZpY2F0ZT4gT3BlblNTTENlcnRpZmljYXRlOjpGcm9tUEVNU3RyaW5nKAogICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBwZW1fc3RyaW5nKSB7CiAgIEJJTyogYmlvID0gQklPX25ld19tZW1fYnVmKGNv
bnN0X2Nhc3Q8Y2hhcio+KHBlbV9zdHJpbmcuY19zdHIoKSksIC0xKTsKLSAgaWYgKCFiaW8pCisg
IGlmICghYmlvKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKwogICBCSU9fc2V0X21lbV9l
b2ZfcmV0dXJuKGJpbywgMCk7CiAgIFg1MDkqIHg1MDkgPQogICAgICAgUEVNX3JlYWRfYmlvX1g1
MDkoYmlvLCBudWxscHRyLCBudWxscHRyLCBjb25zdF9jYXN0PGNoYXIqPigiXDAiKSk7CiAgIEJJ
T19mcmVlKGJpbyk7ICAvLyBGcmVlcyB0aGUgQklPLCBidXQgbm90IHRoZSBwb2ludGVkLXRvIHN0
cmluZy4KIAotICBpZiAoIXg1MDkpCisgIGlmICgheDUwOSkgewogICAgIHJldHVybiBudWxscHRy
OwotCi0gIE9wZW5TU0xDZXJ0aWZpY2F0ZSogcmV0ID0gbmV3IE9wZW5TU0xDZXJ0aWZpY2F0ZSh4
NTA5KTsKKyAgfQorICBhdXRvIHJldCA9IGFic2w6Om1ha2VfdW5pcXVlPE9wZW5TU0xDZXJ0aWZp
Y2F0ZT4oeDUwOSk7CiAgIFg1MDlfZnJlZSh4NTA5KTsKICAgcmV0dXJuIHJldDsKIH0KQEAgLTIy
OSwxOSArMjIwLDE2IEBAIGJvb2wgT3BlblNTTENlcnRpZmljYXRlOjpDb21wdXRlRGlnZXN0KGNv
bnN0IFg1MDkqIHg1MDksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyKiBkaWdlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCogbGVuZ3RoKSB7Ci0gIGNvbnN0IEVWUF9NRCogbWQ7Ci0gIHVuc2lnbmVkIGludCBu
OwotCi0gIGlmICghT3BlblNTTERpZ2VzdDo6R2V0RGlnZXN0RVZQKGFsZ29yaXRobSwgJm1kKSkK
KyAgY29uc3QgRVZQX01EKiBtZCA9IG51bGxwdHI7CisgIHVuc2lnbmVkIGludCBuID0gMDsKKyAg
aWYgKCFPcGVuU1NMRGlnZXN0OjpHZXREaWdlc3RFVlAoYWxnb3JpdGhtLCAmbWQpKSB7CiAgICAg
cmV0dXJuIGZhbHNlOwotCi0gIGlmIChzaXplIDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihFVlBfTURf
c2l6ZShtZCkpKQorICB9CisgIGlmIChzaXplIDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihFVlBfTURf
c2l6ZShtZCkpKSB7CiAgICAgcmV0dXJuIGZhbHNlOwotCisgIH0KICAgWDUwOV9kaWdlc3QoeDUw
OSwgbWQsIGRpZ2VzdCwgJm4pOwotCiAgICpsZW5ndGggPSBuOwotCiAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0yNDksMTggKzIzNywxOCBAQCBPcGVuU1NMQ2VydGlmaWNhdGU6On5PcGVuU1NMQ2Vy
dGlmaWNhdGUoKSB7CiAgIFg1MDlfZnJlZSh4NTA5Xyk7CiB9CiAKLU9wZW5TU0xDZXJ0aWZpY2F0
ZSogT3BlblNTTENlcnRpZmljYXRlOjpHZXRSZWZlcmVuY2UoKSBjb25zdCB7Ci0gIHJldHVybiBu
ZXcgT3BlblNTTENlcnRpZmljYXRlKHg1MDlfKTsKK3N0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZp
Y2F0ZT4gT3BlblNTTENlcnRpZmljYXRlOjpDbG9uZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6
Om1ha2VfdW5pcXVlPE9wZW5TU0xDZXJ0aWZpY2F0ZT4oeDUwOV8pOwogfQogCiBzdGQ6OnN0cmlu
ZyBPcGVuU1NMQ2VydGlmaWNhdGU6OlRvUEVNU3RyaW5nKCkgY29uc3QgewogICBCSU8qIGJpbyA9
IEJJT19uZXcoQklPX3NfbWVtKCkpOwogICBpZiAoIWJpbykgewotICAgIFJUQ19GQVRBTCgpIDw8
ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKyAgICBSVENfRkFUQUwoKSA8PCAiVW5yZWFjaGFibGUgY29k
ZS4iOwogICB9CiAgIGlmICghUEVNX3dyaXRlX2Jpb19YNTA5KGJpbywgeDUwOV8pKSB7CiAgICAg
QklPX2ZyZWUoYmlvKTsKLSAgICBSVENfRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7Cisg
ICAgUlRDX0ZBVEFMKCkgPDwgIlVucmVhY2hhYmxlIGNvZGUuIjsKICAgfQogICBCSU9fd3JpdGUo
YmlvLCAiXDAiLCAxKTsKICAgY2hhciogYnVmZmVyOwpAQCAtMjczLDI3ICsyNjEsMjEgQEAgc3Rk
OjpzdHJpbmcgT3BlblNTTENlcnRpZmljYXRlOjpUb1BFTVN0cmluZygpIGNvbnN0IHsKIHZvaWQg
T3BlblNTTENlcnRpZmljYXRlOjpUb0RFUihCdWZmZXIqIGRlcl9idWZmZXIpIGNvbnN0IHsKICAg
Ly8gSW4gY2FzZSBvZiBmYWlsdXJlLCBtYWtlIHN1cmUgdG8gbGVhdmUgdGhlIGJ1ZmZlciBlbXB0
eS4KICAgZGVyX2J1ZmZlci0+U2V0U2l6ZSgwKTsKLQogICAvLyBDYWxjdWxhdGVzIHRoZSBERVIg
cmVwcmVzZW50YXRpb24gb2YgdGhlIGNlcnRpZmljYXRlLCBmcm9tIHNjcmF0Y2guCiAgIEJJTyog
YmlvID0gQklPX25ldyhCSU9fc19tZW0oKSk7CiAgIGlmICghYmlvKSB7Ci0gICAgUlRDX0ZBVEFM
KCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOworICAgIFJUQ19GQVRBTCgpIDw8ICJVbnJlYWNoYWJs
ZSBjb2RlLiI7CiAgIH0KICAgaWYgKCFpMmRfWDUwOV9iaW8oYmlvLCB4NTA5XykpIHsKICAgICBC
SU9fZnJlZShiaW8pOwotICAgIFJUQ19GQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKyAg
ICBSVENfRkFUQUwoKSA8PCAiVW5yZWFjaGFibGUgY29kZS4iOwogICB9Ci0gIGNoYXIqIGRhdGE7
CisgIGNoYXIqIGRhdGEgPSBudWxscHRyOwogICBzaXplX3QgbGVuZ3RoID0gQklPX2dldF9tZW1f
ZGF0YShiaW8sICZkYXRhKTsKICAgZGVyX2J1ZmZlci0+U2V0RGF0YShkYXRhLCBsZW5ndGgpOwog
ICBCSU9fZnJlZShiaW8pOwogfQogCi12b2lkIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6QWRkUmVmZXJl
bmNlKCkgY29uc3QgewotICBSVENfRENIRUNLKHg1MDlfICE9IG51bGxwdHIpOwotICBYNTA5X3Vw
X3JlZih4NTA5Xyk7Ci19Ci0KIGJvb2wgT3BlblNTTENlcnRpZmljYXRlOjpvcGVyYXRvcj09KGNv
bnN0IE9wZW5TU0xDZXJ0aWZpY2F0ZSYgb3RoZXIpIGNvbnN0IHsKICAgcmV0dXJuIFg1MDlfY21w
KHg1MDlfLCBvdGhlci54NTA5XykgPT0gMDsKIH0KQEAgLTMwMiwxMSArMjg0LDkgQEAgYm9vbCBP
cGVuU1NMQ2VydGlmaWNhdGU6Om9wZXJhdG9yIT0oY29uc3QgT3BlblNTTENlcnRpZmljYXRlJiBv
dGhlcikgY29uc3QgewogICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiB9CiAKLS8vIERvY3Vt
ZW50ZWQgaW4gc3NsaWRlbnRpdHkuaC4KIGludDY0X3QgT3BlblNTTENlcnRpZmljYXRlOjpDZXJ0
aWZpY2F0ZUV4cGlyYXRpb25UaW1lKCkgY29uc3QgewogICBBU04xX1RJTUUqIGV4cGlyZV90aW1l
ID0gWDUwOV9nZXRfbm90QWZ0ZXIoeDUwOV8pOwogICBib29sIGxvbmdfZm9ybWF0OwotCiAgIGlm
IChleHBpcmVfdGltZS0+dHlwZSA9PSBWX0FTTjFfVVRDVElNRSkgewogICAgIGxvbmdfZm9ybWF0
ID0gZmFsc2U7CiAgIH0gZWxzZSBpZiAoZXhwaXJlX3RpbWUtPnR5cGUgPT0gVl9BU04xX0dFTkVS
QUxJWkVEVElNRSkgewpAQCAtMzE0LDcgKzI5NCw2IEBAIGludDY0X3QgT3BlblNTTENlcnRpZmlj
YXRlOjpDZXJ0aWZpY2F0ZUV4cGlyYXRpb25UaW1lKCkgY29uc3QgewogICB9IGVsc2UgewogICAg
IHJldHVybiAtMTsKICAgfQotCiAgIHJldHVybiBBU04xVGltZVRvU2VjKGV4cGlyZV90aW1lLT5k
YXRhLCBleHBpcmVfdGltZS0+bGVuZ3RoLCBsb25nX2Zvcm1hdCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5z
c2xjZXJ0aWZpY2F0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmgKaW5kZXggYzczMGZmZDBkYzllNzY5YzZi
ZDBmOTdkNGVlMWU3YmRjNTQyOWZmMi4uMDg4NzI1YzBkNzU1NjUzZDNiMjMwMzY1YzU2MzMxY2Qw
NDJjMDY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmgK
QEAgLTExLDM4ICsxMSwzOCBAQAogI2lmbmRlZiBSVENfQkFTRV9PUEVOU1NMQ0VSVElGSUNBVEVf
SF8KICNkZWZpbmUgUlRDX0JBU0VfT1BFTlNTTENFUlRJRklDQVRFX0hfCiAKLSNpbmNsdWRlIDxv
cGVuc3NsL2V2cC5oPgotI2luY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgorI2luY2x1ZGUgPG9wZW5z
c2wvb3NzbF90eXAuaD4KIAotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRkZWYuaD4K
KyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsY2VydGlm
aWNhdGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xpZGVudGl0eS5oIgogCi10eXBlZGVmIHN0
cnVjdCBzc2xfY3R4X3N0IFNTTF9DVFg7Ci0KIG5hbWVzcGFjZSBydGMgewogCiBjbGFzcyBPcGVu
U1NMS2V5UGFpcjsKIAogLy8gT3BlblNTTENlcnRpZmljYXRlIGVuY2Fwc3VsYXRlcyBhbiBPcGVu
U1NMIFg1MDkqIGNlcnRpZmljYXRlIG9iamVjdCwKIC8vIHdoaWNoIGlzIGFsc28gcmVmZXJlbmNl
IGNvdW50ZWQgaW5zaWRlIHRoZSBPcGVuU1NMIGxpYnJhcnkuCi1jbGFzcyBPcGVuU1NMQ2VydGlm
aWNhdGUgOiBwdWJsaWMgU1NMQ2VydGlmaWNhdGUgeworY2xhc3MgT3BlblNTTENlcnRpZmljYXRl
IGZpbmFsIDogcHVibGljIFNTTENlcnRpZmljYXRlIHsKICBwdWJsaWM6CiAgIC8vIFg1MDkgb2Jq
ZWN0IGhhcyBpdHMgcmVmZXJlbmNlIGNvdW50IGluY3JlbWVudGVkLiBTbyB0aGUgY2FsbGVyIGFu
ZAogICAvLyBPcGVuU1NMQ2VydGlmaWNhdGUgc2hhcmUgb3duZXJzaGlwLgogICBleHBsaWNpdCBP
cGVuU1NMQ2VydGlmaWNhdGUoWDUwOSogeDUwOSk7CiAKLSAgc3RhdGljIE9wZW5TU0xDZXJ0aWZp
Y2F0ZSogR2VuZXJhdGUoT3BlblNTTEtleVBhaXIqIGtleV9wYWlyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTU0xJZGVudGl0eVBhcmFtcyYgcGFyYW1zKTsK
LSAgc3RhdGljIE9wZW5TU0xDZXJ0aWZpY2F0ZSogRnJvbVBFTVN0cmluZyhjb25zdCBzdGQ6OnN0
cmluZyYgcGVtX3N0cmluZyk7CisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8T3BlblNTTENlcnRp
ZmljYXRlPiBHZW5lcmF0ZSgKKyAgICAgIE9wZW5TU0xLZXlQYWlyKiBrZXlfcGFpciwKKyAgICAg
IGNvbnN0IFNTTElkZW50aXR5UGFyYW1zJiBwYXJhbXMpOworICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPE9wZW5TU0xDZXJ0aWZpY2F0ZT4gRnJvbVBFTVN0cmluZygKKyAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBwZW1fc3RyaW5nKTsKIAogICB+T3BlblNTTENlcnRpZmljYXRlKCkgb3ZlcnJpZGU7
CiAKLSAgT3BlblNTTENlcnRpZmljYXRlKiBHZXRSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlkZTsK
KyAgc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiBDbG9uZSgpIGNvbnN0IG92ZXJyaWRl
OwogCiAgIFg1MDkqIHg1MDkoKSBjb25zdCB7IHJldHVybiB4NTA5XzsgfQogCkBAIC02OSw4ICs2
OSw2IEBAIGNsYXNzIE9wZW5TU0xDZXJ0aWZpY2F0ZSA6IHB1YmxpYyBTU0xDZXJ0aWZpY2F0ZSB7
CiAgIGludDY0X3QgQ2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgcHJpdmF0ZToKLSAgdm9pZCBBZGRSZWZlcmVuY2UoKSBjb25zdDsKLQogICBYNTA5KiB4NTA5
XzsgIC8vIE5PVCBPV05FRAogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKE9wZW5TU0xD
ZXJ0aWZpY2F0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGRpZ2VzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xkaWdlc3QuY2MKaW5k
ZXggOWI2NDRjNDYwYjVhNTgzNGI4MzlmZTY4ZjFmNzRiZTkwYzdjNWM5My4uZGE5MGI2NWY4MjIx
Y2E5NmM2YTAzMzM5ZjI4ODdkNzBiODJiNWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGRpZ2VzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVu
c3NsZGlnZXN0LmNjCkBAIC0xMCw3ICsxMCw3IEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9vcGVu
c3NsZGlnZXN0LmgiCiAKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIgIC8vIFJUQ19EQ0hFQ0ssIFJUQ19DSEVDSwogI2luY2x1ZGUgInJ0
Y19iYXNlL29wZW5zc2wuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsZGlnZXN0
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9v
cGVuc3NsZGlnZXN0LmgKaW5kZXggYzRjZDFlMDMxNGVkNGUwYWJlZGNkYmMwNjc2Yzg5MDA2YTFi
NmViMC4uODJkYzlhOTZjZDg0YmJhZjBjN2NkYWYyNzFhYzIyNDcwYWM1ODI5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3Bl
bnNzbGRpZ2VzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL29wZW5zc2xkaWdlc3QuaApAQCAtMTEsMTQgKzExLDE2IEBACiAjaWZuZGVm
IFJUQ19CQVNFX09QRU5TU0xESUdFU1RfSF8KICNkZWZpbmUgUlRDX0JBU0VfT1BFTlNTTERJR0VT
VF9IXwogCi0jaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2Jhc2Uu
aD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJy
dGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCiAvLyBBbiBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgZGlnZXN0IGNsYXNzIHRoYXQgdXNlcyBPcGVuU1NMLgotY2xhc3Mg
T3BlblNTTERpZ2VzdCA6IHB1YmxpYyBNZXNzYWdlRGlnZXN0IHsKK2NsYXNzIE9wZW5TU0xEaWdl
c3QgZmluYWwgOiBwdWJsaWMgTWVzc2FnZURpZ2VzdCB7CiAgcHVibGljOgogICAvLyBDcmVhdGVz
IGFuIE9wZW5TU0xEaWdlc3Qgd2l0aCB8YWxnb3JpdGhtfCBhcyB0aGUgaGFzaCBhbGdvcml0aG0u
CiAgIGV4cGxpY2l0IE9wZW5TU0xEaWdlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuY2MKaW5kZXggYThjNjkxOTc3
OWJlZGU0NzkwZjlmZGYwZjExNWI1NzJjZWQ2ZTY4NS4uOTg1MGM4NTVlYTE2NzlhNDEzNzkyNjkw
ZTY1Zjk5ODYyYzRkNDQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xpZGVudGl0
eS5jYwpAQCAtMjEsMTggKzIxLDE3IEBACiAKICNpbmNsdWRlIDxvcGVuc3NsL2Jpby5oPgogI2lu
Y2x1ZGUgPG9wZW5zc2wvYm4uaD4KLSNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgogI2luY2x1
ZGUgPG9wZW5zc2wvZXJyLmg+CiAjaW5jbHVkZSA8b3BlbnNzbC9wZW0uaD4KICNpbmNsdWRlIDxv
cGVuc3NsL3JzYS5oPgogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9oZWxwZXJzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9vcGVuc3NsLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbGRpZ2VzdC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL29wZW5zc2x1dGlsaXR5LmgiCiAKIG5hbWVzcGFjZSBydGMgewpAQCAt
MzE2LDcgKzMxNSw3IEBAIGNvbnN0IFNTTENlcnRDaGFpbiYgT3BlblNTTElkZW50aXR5OjpjZXJ0
X2NoYWluKCkgY29uc3QgewogCiBPcGVuU1NMSWRlbnRpdHkqIE9wZW5TU0xJZGVudGl0eTo6R2V0
UmVmZXJlbmNlKCkgY29uc3QgewogICByZXR1cm4gbmV3IE9wZW5TU0xJZGVudGl0eShhYnNsOjpX
cmFwVW5pcXVlKGtleV9wYWlyXy0+R2V0UmVmZXJlbmNlKCkpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpXcmFwVW5pcXVlKGNlcnRfY2hhaW5fLT5Db3B5KCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9jaGFpbl8tPkNsb25lKCkpOwogfQogCiBib29s
IE9wZW5TU0xJZGVudGl0eTo6Q29uZmlndXJlSWRlbnRpdHkoU1NMX0NUWCogY3R4KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9vcGVuc3NsaWRlbnRpdHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL29wZW5zc2xpZGVudGl0eS5oCmluZGV4IDM0MDQ0Mjc2Y2E3NjU5YmRk
Nzg1NTQ1YmQ5YmVmMTFiOGNhZjljOTIuLmZjZjdkZWJmOTA3MmZlYjEzNWY3NDcyZjI0Y2Q2YjBj
MGNhY2VjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL29wZW5zc2xpZGVudGl0eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xpZGVudGl0eS5oCkBAIC0x
MSwyNCArMTEsMjMgQEAKICNpZm5kZWYgUlRDX0JBU0VfT1BFTlNTTElERU5USVRZX0hfCiAjZGVm
aW5lIFJUQ19CQVNFX09QRU5TU0xJREVOVElUWV9IXwogCi0jaW5jbHVkZSA8b3BlbnNzbC9ldnAu
aD4KLSNpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL29zc2xfdHlw
Lmg+CiAKKyNpbmNsdWRlIDxjdGltZT4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3Ry
aW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0
ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2Uvc3NsaWRlbnRpdHkuaCIKIAotdHlwZWRlZiBzdHJ1Y3Qgc3NsX2N0eF9zdCBTU0xfQ1RY
OwotCiBuYW1lc3BhY2UgcnRjIHsKIAogLy8gT3BlblNTTEtleVBhaXIgZW5jYXBzdWxhdGVzIGFu
IE9wZW5TU0wgRVZQX1BLRVkqIGtleXBhaXIgb2JqZWN0LAogLy8gd2hpY2ggaXMgcmVmZXJlbmNl
IGNvdW50ZWQgaW5zaWRlIHRoZSBPcGVuU1NMIGxpYnJhcnkuCi1jbGFzcyBPcGVuU1NMS2V5UGFp
ciB7CitjbGFzcyBPcGVuU1NMS2V5UGFpciBmaW5hbCB7CiAgcHVibGljOgogICBleHBsaWNpdCBP
cGVuU1NMS2V5UGFpcihFVlBfUEtFWSogcGtleSkgOiBwa2V5Xyhwa2V5KSB7CiAgICAgUlRDX0RD
SEVDSyhwa2V5XyAhPSBudWxscHRyKTsKQEAgLTU5LDcgKzU4LDcgQEAgY2xhc3MgT3BlblNTTEtl
eVBhaXIgewogCiAvLyBIb2xkcyBhIGtleXBhaXIgYW5kIGNlcnRpZmljYXRlIHRvZ2V0aGVyLCBh
bmQgYSBtZXRob2QgdG8gZ2VuZXJhdGUKIC8vIHRoZW0gY29uc2lzdGVudGx5LgotY2xhc3MgT3Bl
blNTTElkZW50aXR5IDogcHVibGljIFNTTElkZW50aXR5IHsKK2NsYXNzIE9wZW5TU0xJZGVudGl0
eSBmaW5hbCA6IHB1YmxpYyBTU0xJZGVudGl0eSB7CiAgcHVibGljOgogICBzdGF0aWMgT3BlblNT
TElkZW50aXR5KiBHZW5lcmF0ZVdpdGhFeHBpcmF0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb21t
b25fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBLZXlQYXJhbXMmIGtleV9wYXJhbXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Nsc3RyZWFtYWRhcHRl
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L29wZW5zc2xzdHJlYW1hZGFwdGVyLmNjCmluZGV4IGZkNTRhMDgyYTdkNzM4NTgzZTg4NGM4ODhl
ZWU1MDgyZjk0MzRmOGUuLjcyN2NiODRhYWU5NWRhMzc1YzI0NzRhOTJmYmNjOGViOGQ5MWQ4YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL29wZW5zc2xzdHJlYW1hZGFwdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xzdHJlYW1hZGFwdGVyLmNjCkBA
IC0yMiw2ICsyMiw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1
dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgpAQCAtMzEsNiArMzIsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xhZGFwdGVyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbGRpZ2VzdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L29wZW5zc2xpZGVudGl0eS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyZWFtLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
dXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKQEAgLTE4MCw4ICsxODIsOSBA
QCBzdGF0aWMgQklPX01FVEhPRCogQklPX3N0cmVhbV9tZXRob2QoKSB7CiAKIHN0YXRpYyBCSU8q
IEJJT19uZXdfc3RyZWFtKFN0cmVhbUludGVyZmFjZSogc3RyZWFtKSB7CiAgIEJJTyogcmV0ID0g
QklPX25ldyhCSU9fc3RyZWFtX21ldGhvZCgpKTsKLSAgaWYgKHJldCA9PSBudWxscHRyKQorICBp
ZiAocmV0ID09IG51bGxwdHIpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQogICBCSU9fc2V0
X2RhdGEocmV0LCBzdHJlYW0pOwogICByZXR1cm4gcmV0OwogfQpAQCAtMTk2LDE0ICsxOTksMTYg
QEAgc3RhdGljIGludCBzdHJlYW1fbmV3KEJJTyogYikgewogfQogCiBzdGF0aWMgaW50IHN0cmVh
bV9mcmVlKEJJTyogYikgewotICBpZiAoYiA9PSBudWxscHRyKQorICBpZiAoYiA9PSBudWxscHRy
KSB7CiAgICAgcmV0dXJuIDA7CisgIH0KICAgcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBpbnQgc3Ry
ZWFtX3JlYWQoQklPKiBiLCBjaGFyKiBvdXQsIGludCBvdXRsKSB7Ci0gIGlmICghb3V0KQorICBp
ZiAoIW91dCkgewogICAgIHJldHVybiAtMTsKKyAgfQogICBTdHJlYW1JbnRlcmZhY2UqIHN0cmVh
bSA9IHN0YXRpY19jYXN0PFN0cmVhbUludGVyZmFjZSo+KEJJT19nZXRfZGF0YShiKSk7CiAgIEJJ
T19jbGVhcl9yZXRyeV9mbGFncyhiKTsKICAgc2l6ZV90IHJlYWQ7CkBAIC0yMTgsOCArMjIzLDkg
QEAgc3RhdGljIGludCBzdHJlYW1fcmVhZChCSU8qIGIsIGNoYXIqIG91dCwgaW50IG91dGwpIHsK
IH0KIAogc3RhdGljIGludCBzdHJlYW1fd3JpdGUoQklPKiBiLCBjb25zdCBjaGFyKiBpbiwgaW50
IGlubCkgewotICBpZiAoIWluKQorICBpZiAoIWluKSB7CiAgICAgcmV0dXJuIC0xOworICB9CiAg
IFN0cmVhbUludGVyZmFjZSogc3RyZWFtID0gc3RhdGljX2Nhc3Q8U3RyZWFtSW50ZXJmYWNlKj4o
QklPX2dldF9kYXRhKGIpKTsKICAgQklPX2NsZWFyX3JldHJ5X2ZsYWdzKGIpOwogICBzaXplX3Qg
d3JpdHRlbjsKQEAgLTI5Niw3ICszMDIsNyBAQCBib29sIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpT
ZXRQZWVyQ2VydGlmaWNhdGVEaWdlc3QoCiAgICAgc2l6ZV90IGRpZ2VzdF9sZW4sCiAgICAgU1NM
UGVlckNlcnRpZmljYXRlRGlnZXN0RXJyb3IqIGVycm9yKSB7CiAgIFJUQ19EQ0hFQ0soIXBlZXJf
Y2VydGlmaWNhdGVfdmVyaWZpZWRfKTsKLSAgUlRDX0RDSEVDSyghaGFzX3BlZXJfY2VydGlmaWNh
dGVfZGlnZXN0KCkpOworICBSVENfRENIRUNLKCFIYXNQZWVyQ2VydGlmaWNhdGVEaWdlc3QoKSk7
CiAgIHNpemVfdCBleHBlY3RlZF9sZW47CiAgIGlmIChlcnJvcikgewogICAgICplcnJvciA9IFNT
TFBlZXJDZXJ0aWZpY2F0ZURpZ2VzdEVycm9yOjpOT05FOwpAQCAtMzYyLDggKzM2OCw5IEBAIHN0
ZDo6c3RyaW5nIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpTc2xDaXBoZXJTdWl0ZVRvTmFtZShpbnQg
Y2lwaGVyX3N1aXRlKSB7CiB9CiAKIGJvb2wgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OkdldFNzbENp
cGhlclN1aXRlKGludCogY2lwaGVyX3N1aXRlKSB7Ci0gIGlmIChzdGF0ZV8gIT0gU1NMX0NPTk5F
Q1RFRCkKKyAgaWYgKHN0YXRlXyAhPSBTU0xfQ09OTkVDVEVEKSB7CiAgICAgcmV0dXJuIGZhbHNl
OworICB9CiAKICAgY29uc3QgU1NMX0NJUEhFUiogY3VycmVudF9jaXBoZXIgPSBTU0xfZ2V0X2N1
cnJlbnRfY2lwaGVyKHNzbF8pOwogICBpZiAoY3VycmVudF9jaXBoZXIgPT0gbnVsbHB0cikgewpA
QCAtMzgwLDE3ICszODcsMTkgQEAgaW50IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpHZXRTc2xWZXJz
aW9uKCkgY29uc3QgewogCiAgIGludCBzc2xfdmVyc2lvbiA9IFNTTF92ZXJzaW9uKHNzbF8pOwog
ICBpZiAoc3NsX21vZGVfID09IFNTTF9NT0RFX0RUTFMpIHsKLSAgICBpZiAoc3NsX3ZlcnNpb24g
PT0gRFRMUzFfVkVSU0lPTikKKyAgICBpZiAoc3NsX3ZlcnNpb24gPT0gRFRMUzFfVkVSU0lPTikg
ewogICAgICAgcmV0dXJuIFNTTF9QUk9UT0NPTF9EVExTXzEwOwotICAgIGVsc2UgaWYgKHNzbF92
ZXJzaW9uID09IERUTFMxXzJfVkVSU0lPTikKKyAgICB9IGVsc2UgaWYgKHNzbF92ZXJzaW9uID09
IERUTFMxXzJfVkVSU0lPTikgewogICAgICAgcmV0dXJuIFNTTF9QUk9UT0NPTF9EVExTXzEyOwor
ICAgIH0KICAgfSBlbHNlIHsKLSAgICBpZiAoc3NsX3ZlcnNpb24gPT0gVExTMV9WRVJTSU9OKQor
ICAgIGlmIChzc2xfdmVyc2lvbiA9PSBUTFMxX1ZFUlNJT04pIHsKICAgICAgIHJldHVybiBTU0xf
UFJPVE9DT0xfVExTXzEwOwotICAgIGVsc2UgaWYgKHNzbF92ZXJzaW9uID09IFRMUzFfMV9WRVJT
SU9OKQorICAgIH0gZWxzZSBpZiAoc3NsX3ZlcnNpb24gPT0gVExTMV8xX1ZFUlNJT04pIHsKICAg
ICAgIHJldHVybiBTU0xfUFJPVE9DT0xfVExTXzExOwotICAgIGVsc2UgaWYgKHNzbF92ZXJzaW9u
ID09IFRMUzFfMl9WRVJTSU9OKQorICAgIH0gZWxzZSBpZiAoc3NsX3ZlcnNpb24gPT0gVExTMV8y
X1ZFUlNJT04pIHsKICAgICAgIHJldHVybiBTU0xfUFJPVE9DT0xfVExTXzEyOworICAgIH0KICAg
fQogCiAgIHJldHVybiAtMTsKQEAgLTQwMywxNSArNDEyLDExIEBAIGJvb2wgT3BlblNTTFN0cmVh
bUFkYXB0ZXI6OkV4cG9ydEtleWluZ01hdGVyaWFsKGNvbnN0IHN0ZDo6c3RyaW5nJiBsYWJlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNl
X2NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90KiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgcmVzdWx0X2xlbikgewotICBpbnQgaTsKLQotICBpID0gU1NMX2V4
cG9ydF9rZXlpbmdfbWF0ZXJpYWwoc3NsXywgcmVzdWx0LCByZXN1bHRfbGVuLCBsYWJlbC5jX3N0
cigpLAorICBpZiAoU1NMX2V4cG9ydF9rZXlpbmdfbWF0ZXJpYWwoc3NsXywgcmVzdWx0LCByZXN1
bHRfbGVuLCBsYWJlbC5jX3N0cigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGFiZWwubGVuZ3RoKCksIGNvbnN0X2Nhc3Q8dWludDhfdCo+KGNvbnRleHQpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dF9sZW4sIHVzZV9jb250ZXh0KTsKLQotICBp
ZiAoaSAhPSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dF9sZW4s
IHVzZV9jb250ZXh0KSAhPSAxKSB7CiAgICAgcmV0dXJuIGZhbHNlOwotCisgIH0KICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTQxOSw4ICs0MjQsOSBAQCBib29sIE9wZW5TU0xTdHJlYW1BZGFwdGVy
OjpTZXREdGxzU3J0cENyeXB0b1N1aXRlcygKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBj
aXBoZXJzKSB7CiAgIHN0ZDo6c3RyaW5nIGludGVybmFsX2NpcGhlcnM7CiAKLSAgaWYgKHN0YXRl
XyAhPSBTU0xfTk9ORSkKKyAgaWYgKHN0YXRlXyAhPSBTU0xfTk9ORSkgewogICAgIHJldHVybiBm
YWxzZTsKKyAgfQogCiAgIGZvciAoc3RkOjp2ZWN0b3I8aW50Pjo6Y29uc3RfaXRlcmF0b3IgY2lw
aGVyID0gY2lwaGVycy5iZWdpbigpOwogICAgICAgIGNpcGhlciAhPSBjaXBoZXJzLmVuZCgpOyAr
K2NpcGhlcikgewpAQCAtNDI5LDggKzQzNSw5IEBAIGJvb2wgT3BlblNTTFN0cmVhbUFkYXB0ZXI6
OlNldER0bHNTcnRwQ3J5cHRvU3VpdGVzKAogICAgICAgICAgKytlbnRyeSkgewogICAgICAgaWYg
KCpjaXBoZXIgPT0gZW50cnktPmlkKSB7CiAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAg
aWYgKCFpbnRlcm5hbF9jaXBoZXJzLmVtcHR5KCkpCisgICAgICAgIGlmICghaW50ZXJuYWxfY2lw
aGVycy5lbXB0eSgpKSB7CiAgICAgICAgICAgaW50ZXJuYWxfY2lwaGVycyArPSAiOiI7CisgICAg
ICAgIH0KICAgICAgICAgaW50ZXJuYWxfY2lwaGVycyArPSBlbnRyeS0+aW50ZXJuYWxfbmFtZTsK
ICAgICAgICAgYnJlYWs7CiAgICAgICB9CkBAIC00NDIsOCArNDQ5LDkgQEAgYm9vbCBPcGVuU1NM
U3RyZWFtQWRhcHRlcjo6U2V0RHRsc1NydHBDcnlwdG9TdWl0ZXMoCiAgICAgfQogICB9CiAKLSAg
aWYgKGludGVybmFsX2NpcGhlcnMuZW1wdHkoKSkKKyAgaWYgKGludGVybmFsX2NpcGhlcnMuZW1w
dHkoKSkgewogICAgIHJldHVybiBmYWxzZTsKKyAgfQogCiAgIHNydHBfY2lwaGVyc18gPSBpbnRl
cm5hbF9jaXBoZXJzOwogICByZXR1cm4gdHJ1ZTsKQEAgLTQ1MSwxNCArNDU5LDE2IEBAIGJvb2wg
T3BlblNTTFN0cmVhbUFkYXB0ZXI6OlNldER0bHNTcnRwQ3J5cHRvU3VpdGVzKAogCiBib29sIE9w
ZW5TU0xTdHJlYW1BZGFwdGVyOjpHZXREdGxzU3J0cENyeXB0b1N1aXRlKGludCogY3J5cHRvX3N1
aXRlKSB7CiAgIFJUQ19EQ0hFQ0soc3RhdGVfID09IFNTTF9DT05ORUNURUQpOwotICBpZiAoc3Rh
dGVfICE9IFNTTF9DT05ORUNURUQpCisgIGlmIChzdGF0ZV8gIT0gU1NMX0NPTk5FQ1RFRCkgewog
ICAgIHJldHVybiBmYWxzZTsKKyAgfQogCiAgIGNvbnN0IFNSVFBfUFJPVEVDVElPTl9QUk9GSUxF
KiBzcnRwX3Byb2ZpbGUgPQogICAgICAgU1NMX2dldF9zZWxlY3RlZF9zcnRwX3Byb2ZpbGUoc3Ns
Xyk7CiAKLSAgaWYgKCFzcnRwX3Byb2ZpbGUpCisgIGlmICghc3J0cF9wcm9maWxlKSB7CiAgICAg
cmV0dXJuIGZhbHNlOworICB9CiAKICAgKmNyeXB0b19zdWl0ZSA9IHNydHBfcHJvZmlsZS0+aWQ7
CiAgIFJUQ19EQ0hFQ0soIVNydHBDcnlwdG9TdWl0ZVRvTmFtZSgqY3J5cHRvX3N1aXRlKS5lbXB0
eSgpKTsKQEAgLTQ3MCw4ICs0ODAsOCBAQCBib29sIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpJc1Rs
c0Nvbm5lY3RlZCgpIHsKIH0KIAogaW50IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpTdGFydFNTTCgp
IHsKKyAgLy8gRG9uJ3QgYWxsb3cgU3RhcnRTU0wgdG8gYmUgY2FsbGVkIHR3aWNlLgogICBpZiAo
c3RhdGVfICE9IFNTTF9OT05FKSB7Ci0gICAgLy8gRG9uJ3QgYWxsb3cgU3RhcnRTU0wgdG8gYmUg
Y2FsbGVkIHR3aWNlLgogICAgIHJldHVybiAtMTsKICAgfQogCkBAIC01MjQsNyArNTM0LDcgQEAg
U3RyZWFtUmVzdWx0IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpXcml0ZShjb25zdCB2b2lkKiBkYXRh
LAogICAgICAgcmV0dXJuIFNSX0JMT0NLOwogCiAgICAgY2FzZSBTU0xfQ09OTkVDVEVEOgotICAg
ICAgaWYgKHdhaXRpbmdfdG9fdmVyaWZ5X3BlZXJfY2VydGlmaWNhdGUoKSkgeworICAgICAgaWYg
KFdhaXRpbmdUb1ZlcmlmeVBlZXJDZXJ0aWZpY2F0ZSgpKSB7CiAgICAgICAgIHJldHVybiBTUl9C
TE9DSzsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtNTMyLDE1ICs1NDIsMTcgQEAgU3RyZWFt
UmVzdWx0IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpXcml0ZShjb25zdCB2b2lkKiBkYXRhLAogICAg
IGNhc2UgU1NMX0VSUk9SOgogICAgIGNhc2UgU1NMX0NMT1NFRDoKICAgICBkZWZhdWx0OgotICAg
ICAgaWYgKGVycm9yKQorICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICplcnJvciA9IHNzbF9l
cnJvcl9jb2RlXzsKKyAgICAgIH0KICAgICAgIHJldHVybiBTUl9FUlJPUjsKICAgfQogCiAgIC8v
IE9wZW5TU0wgd2lsbCByZXR1cm4gYW4gZXJyb3IgaWYgd2UgdHJ5IHRvIHdyaXRlIHplcm8gYnl0
ZXMKICAgaWYgKGRhdGFfbGVuID09IDApIHsKLSAgICBpZiAod3JpdHRlbikKKyAgICBpZiAod3Jp
dHRlbikgewogICAgICAgKndyaXR0ZW4gPSAwOworICAgIH0KICAgICByZXR1cm4gU1JfU1VDQ0VT
UzsKICAgfQogCkBAIC01NjcsOCArNTc5LDkgQEAgU3RyZWFtUmVzdWx0IE9wZW5TU0xTdHJlYW1B
ZGFwdGVyOjpXcml0ZShjb25zdCB2b2lkKiBkYXRhLAogICAgIGNhc2UgU1NMX0VSUk9SX1pFUk9f
UkVUVVJOOgogICAgIGRlZmF1bHQ6CiAgICAgICBFcnJvcigiU1NMX3dyaXRlIiwgKHNzbF9lcnJv
ciA/IHNzbF9lcnJvciA6IC0xKSwgMCwgZmFsc2UpOwotICAgICAgaWYgKGVycm9yKQorICAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgICplcnJvciA9IHNzbF9lcnJvcl9jb2RlXzsKKyAgICAgIH0K
ICAgICAgIHJldHVybiBTUl9FUlJPUjsKICAgfQogICAvLyBub3QgcmVhY2hlZApAQCAtNTgzLDMx
ICs1OTYsMjkgQEAgU3RyZWFtUmVzdWx0IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpSZWFkKHZvaWQq
IGRhdGEsCiAgICAgY2FzZSBTU0xfTk9ORToKICAgICAgIC8vIHBhc3MtdGhyb3VnaCBpbiBjbGVh
ciB0ZXh0CiAgICAgICByZXR1cm4gU3RyZWFtQWRhcHRlckludGVyZmFjZTo6UmVhZChkYXRhLCBk
YXRhX2xlbiwgcmVhZCwgZXJyb3IpOwotCiAgICAgY2FzZSBTU0xfV0FJVDoKICAgICBjYXNlIFNT
TF9DT05ORUNUSU5HOgogICAgICAgcmV0dXJuIFNSX0JMT0NLOwotCiAgICAgY2FzZSBTU0xfQ09O
TkVDVEVEOgotICAgICAgaWYgKHdhaXRpbmdfdG9fdmVyaWZ5X3BlZXJfY2VydGlmaWNhdGUoKSkg
eworICAgICAgaWYgKFdhaXRpbmdUb1ZlcmlmeVBlZXJDZXJ0aWZpY2F0ZSgpKSB7CiAgICAgICAg
IHJldHVybiBTUl9CTE9DSzsKICAgICAgIH0KICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBTU0xf
Q0xPU0VEOgogICAgICAgcmV0dXJuIFNSX0VPUzsKLQogICAgIGNhc2UgU1NMX0VSUk9SOgogICAg
IGRlZmF1bHQ6Ci0gICAgICBpZiAoZXJyb3IpCisgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAg
KmVycm9yID0gc3NsX2Vycm9yX2NvZGVfOworICAgICAgfQogICAgICAgcmV0dXJuIFNSX0VSUk9S
OwogICB9CiAKICAgLy8gRG9uJ3QgdHJ1c3QgT3BlblNTTCB3aXRoIHplcm8gYnl0ZSByZWFkcwog
ICBpZiAoZGF0YV9sZW4gPT0gMCkgewotICAgIGlmIChyZWFkKQorICAgIGlmIChyZWFkKSB7CiAg
ICAgICAqcmVhZCA9IDA7CisgICAgfQogICAgIHJldHVybiBTUl9TVUNDRVNTOwogICB9CiAKQEAg
LTYyMCw4ICs2MzEsOSBAQCBTdHJlYW1SZXN1bHQgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OlJlYWQo
dm9pZCogZGF0YSwKICAgICAgIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIiAtLSBzdWNjZXNzIjsK
ICAgICAgIFJUQ19EQ0hFQ0tfR1QoY29kZSwgMCk7CiAgICAgICBSVENfRENIRUNLX0xFKGNvZGUs
IGRhdGFfbGVuKTsKLSAgICAgIGlmIChyZWFkKQorICAgICAgaWYgKHJlYWQpIHsKICAgICAgICAg
KnJlYWQgPSBjb2RlOworICAgICAgfQogCiAgICAgICBpZiAoc3NsX21vZGVfID09IFNTTF9NT0RF
X0RUTFMpIHsKICAgICAgICAgLy8gRW5mb3JjZSBhdG9taWMgcmVhZHMgLS0gdGhpcyBpcyBhIHNo
b3J0IHJlYWQKQEAgLTYzMCw4ICs2NDIsOSBAQCBTdHJlYW1SZXN1bHQgT3BlblNTTFN0cmVhbUFk
YXB0ZXI6OlJlYWQodm9pZCogZGF0YSwKICAgICAgICAgaWYgKHBlbmRpbmcpIHsKICAgICAgICAg
ICBSVENfTE9HKExTX0lORk8pIDw8ICIgLS0gc2hvcnQgRFRMUyByZWFkLiBmbHVzaGluZyI7CiAg
ICAgICAgICAgRmx1c2hJbnB1dChwZW5kaW5nKTsKLSAgICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAqZXJyb3IgPSBTU0VfTVNHX1RSVU5DOwor
ICAgICAgICAgIH0KICAgICAgICAgICByZXR1cm4gU1JfRVJST1I7CiAgICAgICAgIH0KICAgICAg
IH0KQEAgLTY1MCw4ICs2NjMsOSBAQCBTdHJlYW1SZXN1bHQgT3BlblNTTFN0cmVhbUFkYXB0ZXI6
OlJlYWQodm9pZCogZGF0YSwKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBFcnJv
cigiU1NMX3JlYWQiLCAoc3NsX2Vycm9yID8gc3NsX2Vycm9yIDogLTEpLCAwLCBmYWxzZSk7Ci0g
ICAgICBpZiAoZXJyb3IpCisgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgKmVycm9yID0gc3Ns
X2Vycm9yX2NvZGVfOworICAgICAgfQogICAgICAgcmV0dXJuIFNSX0VSUk9SOwogICB9CiAgIC8v
IG5vdCByZWFjaGVkCkBAIC02OTQsMTMgKzcwOCwxMyBAQCBTdHJlYW1TdGF0ZSBPcGVuU1NMU3Ry
ZWFtQWRhcHRlcjo6R2V0U3RhdGUoKSBjb25zdCB7CiAgICAgY2FzZSBTU0xfQ09OTkVDVElORzoK
ICAgICAgIHJldHVybiBTU19PUEVOSU5HOwogICAgIGNhc2UgU1NMX0NPTk5FQ1RFRDoKLSAgICAg
IGlmICh3YWl0aW5nX3RvX3ZlcmlmeV9wZWVyX2NlcnRpZmljYXRlKCkpIHsKKyAgICAgIGlmIChX
YWl0aW5nVG9WZXJpZnlQZWVyQ2VydGlmaWNhdGUoKSkgewogICAgICAgICByZXR1cm4gU1NfT1BF
TklORzsKICAgICAgIH0KICAgICAgIHJldHVybiBTU19PUEVOOwogICAgIGRlZmF1bHQ6CiAgICAg
ICByZXR1cm4gU1NfQ0xPU0VEOwotICB9OworICB9CiAgIC8vIG5vdCByZWFjaGVkCiB9CiAKQEAg
LTcxMCw2ICs3MjQsNyBAQCB2b2lkIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpPbkV2ZW50KFN0cmVh
bUludGVyZmFjZSogc3RyZWFtLAogICBpbnQgZXZlbnRzX3RvX3NpZ25hbCA9IDA7CiAgIGludCBz
aWduYWxfZXJyb3IgPSAwOwogICBSVENfRENIRUNLKHN0cmVhbSA9PSB0aGlzLT5zdHJlYW0oKSk7
CisKICAgaWYgKChldmVudHMgJiBTRV9PUEVOKSkgewogICAgIFJUQ19MT0coTFNfVkVSQk9TRSkg
PDwgIk9wZW5TU0xTdHJlYW1BZGFwdGVyOjpPbkV2ZW50IFNFX09QRU4iOwogICAgIGlmIChzdGF0
ZV8gIT0gU1NMX1dBSVQpIHsKQEAgLTcyMyw2ICs3MzgsNyBAQCB2b2lkIE9wZW5TU0xTdHJlYW1B
ZGFwdGVyOjpPbkV2ZW50KFN0cmVhbUludGVyZmFjZSogc3RyZWFtLAogICAgICAgfQogICAgIH0K
ICAgfQorCiAgIGlmICgoZXZlbnRzICYgKFNFX1JFQUQgfCBTRV9XUklURSkpKSB7CiAgICAgUlRD
X0xPRyhMU19WRVJCT1NFKSA8PCAiT3BlblNTTFN0cmVhbUFkYXB0ZXI6Ok9uRXZlbnQiCiAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCAoKGV2ZW50cyAmIFNFX1JFQUQpID8gIiBTRV9SRUFEIiA6
ICIiKQpAQCAtNzQ3LDYgKzc2Myw3IEBAIHZvaWQgT3BlblNTTFN0cmVhbUFkYXB0ZXI6Ok9uRXZl
bnQoU3RyZWFtSW50ZXJmYWNlKiBzdHJlYW0sCiAgICAgICB9CiAgICAgfQogICB9CisKICAgaWYg
KChldmVudHMgJiBTRV9DTE9TRSkpIHsKICAgICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICJPcGVu
U1NMU3RyZWFtQWRhcHRlcjo6T25FdmVudChTRV9DTE9TRSwgIiA8PCBlcnIKICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICIpIjsKQEAgLTc1Niw4ICs3NzMsMTAgQEAgdm9pZCBPcGVuU1NMU3Ry
ZWFtQWRhcHRlcjo6T25FdmVudChTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSwKICAgICBSVENfRENI
RUNLKHNpZ25hbF9lcnJvciA9PSAwKTsKICAgICBzaWduYWxfZXJyb3IgPSBlcnI7CiAgIH0KLSAg
aWYgKGV2ZW50c190b19zaWduYWwpCisKKyAgaWYgKGV2ZW50c190b19zaWduYWwpIHsKICAgICBT
dHJlYW1BZGFwdGVySW50ZXJmYWNlOjpPbkV2ZW50KHN0cmVhbSwgZXZlbnRzX3RvX3NpZ25hbCwg
c2lnbmFsX2Vycm9yKTsKKyAgfQogfQogCiBpbnQgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OkJlZ2lu
U1NMKCkgewpAQCAtNzcwLDEyICs3ODksMTQgQEAgaW50IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpC
ZWdpblNTTCgpIHsKICAgLy8gRmlyc3Qgc2V0IHVwIHRoZSBjb250ZXh0LgogICBSVENfRENIRUNL
KHNzbF9jdHhfID09IG51bGxwdHIpOwogICBzc2xfY3R4XyA9IFNldHVwU1NMQ29udGV4dCgpOwot
ICBpZiAoIXNzbF9jdHhfKQorICBpZiAoIXNzbF9jdHhfKSB7CiAgICAgcmV0dXJuIC0xOworICB9
CiAKICAgYmlvID0gQklPX25ld19zdHJlYW0oc3RhdGljX2Nhc3Q8U3RyZWFtSW50ZXJmYWNlKj4o
c3RyZWFtKCkpKTsKLSAgaWYgKCFiaW8pCisgIGlmICghYmlvKSB7CiAgICAgcmV0dXJuIC0xOwor
ICB9CiAKICAgc3NsXyA9IFNTTF9uZXcoc3NsX2N0eF8pOwogICBpZiAoIXNzbF8pIHsKQEAgLTgw
NSw4ICs4MjYsOSBAQCBpbnQgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OkJlZ2luU1NMKCkgewogICAv
LyBjb21tb25seSBzdXBwb3J0ZWQuIEJvcmluZ1NTTCBkb2Vzbid0IG5lZWQgZXhwbGljaXQgY29u
ZmlndXJhdGlvbiBhbmQgaGFzCiAgIC8vIGEgcmVhc29uYWJsZSBkZWZhdWx0IHNldC4KICAgRUNf
S0VZKiBlY2RoID0gRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lKE5JRF9YOV82Ml9wcmltZTI1NnYx
KTsKLSAgaWYgKGVjZGggPT0gbnVsbHB0cikKKyAgaWYgKGVjZGggPT0gbnVsbHB0cikgewogICAg
IHJldHVybiAtMTsKKyAgfQogICBTU0xfc2V0X29wdGlvbnMoc3NsXywgU1NMX09QX1NJTkdMRV9F
Q0RIX1VTRSk7CiAgIFNTTF9zZXRfdG1wX2VjZGgoc3NsXywgZWNkaCk7CiAgIEVDX0tFWV9mcmVl
KGVjZGgpOwpAQCAtODMwLDEwICs4NTIsMTAgQEAgaW50IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpD
b250aW51ZVNTTCgpIHsKICAgICAgIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIiAtLSBzdWNjZXNz
IjsKICAgICAgIC8vIEJ5IHRoaXMgcG9pbnQsIE9wZW5TU0wgc2hvdWxkIGhhdmUgZ2l2ZW4gdXMg
YSBjZXJ0aWZpY2F0ZSwgb3IgZXJyb3JlZAogICAgICAgLy8gb3V0IGlmIG9uZSB3YXMgbWlzc2lu
Zy4KLSAgICAgIFJUQ19EQ0hFQ0socGVlcl9jZXJ0X2NoYWluXyB8fCAhY2xpZW50X2F1dGhfZW5h
YmxlZCgpKTsKKyAgICAgIFJUQ19EQ0hFQ0socGVlcl9jZXJ0X2NoYWluXyB8fCAhR2V0Q2xpZW50
QXV0aEVuYWJsZWQoKSk7CiAKICAgICAgIHN0YXRlXyA9IFNTTF9DT05ORUNURUQ7Ci0gICAgICBp
ZiAoIXdhaXRpbmdfdG9fdmVyaWZ5X3BlZXJfY2VydGlmaWNhdGUoKSkgeworICAgICAgaWYgKCFX
YWl0aW5nVG9WZXJpZnlQZWVyQ2VydGlmaWNhdGUoKSkgewogICAgICAgICAvLyBXZSBoYXZlIGV2
ZXJ5dGhpbmcgd2UgbmVlZCB0byBzdGFydCB0aGUgY29ubmVjdGlvbiwgc28gc2lnbmFsCiAgICAg
ICAgIC8vIFNFX09QRU4uIElmIHdlIG5lZWQgYSBjbGllbnQgY2VydGlmaWNhdGUgZmluZ2VycHJp
bnQgYW5kIGRvbid0IGhhdmUKICAgICAgICAgLy8gaXQgeWV0LCB3ZSdsbCBpbnN0ZWFkIHNpZ25h
bCBTRV9PUEVOIGluIFNldFBlZXJDZXJ0aWZpY2F0ZURpZ2VzdC4KQEAgLTg4Niw4ICs5MDgsOSBA
QCB2b2lkIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpFcnJvcihjb25zdCBjaGFyKiBjb250ZXh0LAog
ICBzdGF0ZV8gPSBTU0xfRVJST1I7CiAgIHNzbF9lcnJvcl9jb2RlXyA9IGVycjsKICAgQ2xlYW51
cChhbGVydCk7Ci0gIGlmIChzaWduYWwpCisgIGlmIChzaWduYWwpIHsKICAgICBTdHJlYW1BZGFw
dGVySW50ZXJmYWNlOjpPbkV2ZW50KHN0cmVhbSgpLCBTRV9DTE9TRSwgZXJyKTsKKyAgfQogfQog
CiB2b2lkIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpDbGVhbnVwKHVpbnQ4X3QgYWxlcnQpIHsKQEAg
LTk5MCw4ICsxMDEzLDkgQEAgU1NMX0NUWCogT3BlblNTTFN0cmVhbUFkYXB0ZXI6OlNldHVwU1NM
Q29udGV4dCgpIHsKICAgY3R4ID0gU1NMX0NUWF9uZXcobWV0aG9kKTsKICNlbmRpZiAgLy8gT1BF
TlNTTF9JU19CT1JJTkdTU0wKIAotICBpZiAoY3R4ID09IG51bGxwdHIpCisgIGlmIChjdHggPT0g
bnVsbHB0cikgewogICAgIHJldHVybiBudWxscHRyOworICB9CiAKICNpZmRlZiBPUEVOU1NMX0lT
X0JPUklOR1NTTAogICBTU0xfQ1RYX3NldF9taW5fcHJvdG9fdmVyc2lvbigKQEAgLTEwMjYsNyAr
MTA1MCw3IEBAIFNTTF9DVFgqIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpTZXR1cFNTTENvbnRleHQo
KSB7CiAjZW5kaWYKIAogICBpbnQgbW9kZSA9IFNTTF9WRVJJRllfUEVFUjsKLSAgaWYgKGNsaWVu
dF9hdXRoX2VuYWJsZWQoKSkgeworICBpZiAoR2V0Q2xpZW50QXV0aEVuYWJsZWQoKSkgewogICAg
IC8vIFJlcXVpcmUgYSBjZXJ0aWZpY2F0ZSBmcm9tIHRoZSBjbGllbnQuCiAgICAgLy8gTm90ZTog
Tm9ybWFsbHkgdGhpcyBpcyBhbHdheXMgdHJ1ZSBpbiBwcm9kdWN0aW9uLCBidXQgaXQgbWF5IGJl
IGRpc2FibGVkCiAgICAgLy8gZm9yIHRlc3RpbmcgcHVycG9zZXMgKGUuZy4gU1NMQWRhcHRlciB1
bml0IHRlc3RzKS4KQEAgLTEwNTgsNyArMTA4Miw3IEBAIFNTTF9DVFgqIE9wZW5TU0xTdHJlYW1B
ZGFwdGVyOjpTZXR1cFNTTENvbnRleHQoKSB7CiB9CiAKIGJvb2wgT3BlblNTTFN0cmVhbUFkYXB0
ZXI6OlZlcmlmeVBlZXJDZXJ0aWZpY2F0ZSgpIHsKLSAgaWYgKCFoYXNfcGVlcl9jZXJ0aWZpY2F0
ZV9kaWdlc3QoKSB8fCAhcGVlcl9jZXJ0X2NoYWluXyB8fAorICBpZiAoIUhhc1BlZXJDZXJ0aWZp
Y2F0ZURpZ2VzdCgpIHx8ICFwZWVyX2NlcnRfY2hhaW5fIHx8CiAgICAgICAhcGVlcl9jZXJ0X2No
YWluXy0+R2V0U2l6ZSgpKSB7CiAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiTWlzc2luZyBk
aWdlc3Qgb3IgcGVlciBjZXJ0aWZpY2F0ZS4iOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTEwOTEs
NyArMTExNSw3IEBAIGJvb2wgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OlZlcmlmeVBlZXJDZXJ0aWZp
Y2F0ZSgpIHsKIAogc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRDaGFpbj4gT3BlblNTTFN0cmVhbUFk
YXB0ZXI6OkdldFBlZXJTU0xDZXJ0Q2hhaW4oKQogICAgIGNvbnN0IHsKLSAgcmV0dXJuIHBlZXJf
Y2VydF9jaGFpbl8gPyBwZWVyX2NlcnRfY2hhaW5fLT5VbmlxdWVDb3B5KCkgOiBudWxscHRyOwor
ICByZXR1cm4gcGVlcl9jZXJ0X2NoYWluXyA/IHBlZXJfY2VydF9jaGFpbl8tPkNsb25lKCkgOiBu
dWxscHRyOwogfQogCiBpbnQgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OlNTTFZlcmlmeUNhbGxiYWNr
KFg1MDlfU1RPUkVfQ1RYKiBzdG9yZSwgdm9pZCogYXJnKSB7CkBAIC0xMTc2LDE1ICsxMjAwLDE3
IEBAIHN0YXRpYyBjb25zdCBjaXBoZXJfbGlzdCBPS19FQ0RTQV9jaXBoZXJzW10gPSB7CiBib29s
IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpJc0FjY2VwdGFibGVDaXBoZXIoaW50IGNpcGhlciwgS2V5
VHlwZSBrZXlfdHlwZSkgewogICBpZiAoa2V5X3R5cGUgPT0gS1RfUlNBKSB7CiAgICAgZm9yIChj
b25zdCBjaXBoZXJfbGlzdCYgYyA6IE9LX1JTQV9jaXBoZXJzKSB7Ci0gICAgICBpZiAoY2lwaGVy
ID09IGMuY2lwaGVyKQorICAgICAgaWYgKGNpcGhlciA9PSBjLmNpcGhlcikgewogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgIH0KICAgICB9CiAgIH0KIAogICBpZiAoa2V5X3R5cGUgPT0gS1Rf
RUNEU0EpIHsKICAgICBmb3IgKGNvbnN0IGNpcGhlcl9saXN0JiBjIDogT0tfRUNEU0FfY2lwaGVy
cykgewotICAgICAgaWYgKGNpcGhlciA9PSBjLmNpcGhlcikKKyAgICAgIGlmIChjaXBoZXIgPT0g
Yy5jaXBoZXIpIHsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CiAgICAgfQogICB9CiAK
QEAgLTExOTUsMjIgKzEyMjEsMjQgQEAgYm9vbCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6SXNBY2Nl
cHRhYmxlQ2lwaGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBjaXBoZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5VHlwZSBrZXlfdHlwZSkgewogICBpZiAo
a2V5X3R5cGUgPT0gS1RfUlNBKSB7CiAgICAgZm9yIChjb25zdCBjaXBoZXJfbGlzdCYgYyA6IE9L
X1JTQV9jaXBoZXJzKSB7Ci0gICAgICBpZiAoY2lwaGVyID09IGMuY2lwaGVyX3N0cikKKyAgICAg
IGlmIChjaXBoZXIgPT0gYy5jaXBoZXJfc3RyKSB7CiAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgfQogICAgIH0KICAgfQogCiAgIGlmIChrZXlfdHlwZSA9PSBLVF9FQ0RTQSkgewogICAgIGZv
ciAoY29uc3QgY2lwaGVyX2xpc3QmIGMgOiBPS19FQ0RTQV9jaXBoZXJzKSB7Ci0gICAgICBpZiAo
Y2lwaGVyID09IGMuY2lwaGVyX3N0cikKKyAgICAgIGlmIChjaXBoZXIgPT0gYy5jaXBoZXJfc3Ry
KSB7CiAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQogICAgIH0KICAgfQogCiAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6ZW5hYmxlX3RpbWVfY2Fs
bGJhY2tfZm9yX3Rlc3RpbmcoKSB7Cit2b2lkIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpFbmFibGVU
aW1lQ2FsbGJhY2tGb3JUZXN0aW5nKCkgewogICBnX3VzZV90aW1lX2NhbGxiYWNrX2Zvcl90ZXN0
aW5nID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHN0cmVhbWFkYXB0ZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xzdHJlYW1h
ZGFwdGVyLmgKaW5kZXggNjFmZmMzZGJmZTJkNjUzOGJkMzAzMWZjOTcwZTc1MmNlYTRmNDNmZi4u
ZTAxMmQxNzJhNjJhMGI0NTk1YzkwNWNjNjEyODFjNDk4OTc1NmVmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHN0
cmVhbWFkYXB0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9vcGVuc3Nsc3RyZWFtYWRhcHRlci5oCkBAIC0xMywxMyArMTMsMTggQEAK
IAogI2luY2x1ZGUgPG9wZW5zc2wvb3NzbF90eXAuaD4KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgor
I2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNz
bGlkZW50aXR5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyZWFt
LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCkBAIC00NywxMSArNTIsMTEgQEAgbmFtZXNwYWNlIHJ0
YyB7CiAKIC8vIExvb2sgaW4gc3Nsc3RyZWFtYWRhcHRlci5oIGZvciBkb2N1bWVudGF0aW9uIG9m
IHRoZSBtZXRob2RzLgogCi1jbGFzcyBPcGVuU1NMSWRlbnRpdHk7CitjbGFzcyBTU0xDZXJ0Q2hh
aW47CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotY2xhc3MgT3BlblNTTFN0cmVhbUFkYXB0
ZXIgOiBwdWJsaWMgU1NMU3RyZWFtQWRhcHRlciB7CitjbGFzcyBPcGVuU1NMU3RyZWFtQWRhcHRl
ciBmaW5hbCA6IHB1YmxpYyBTU0xTdHJlYW1BZGFwdGVyIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0
IE9wZW5TU0xTdHJlYW1BZGFwdGVyKFN0cmVhbUludGVyZmFjZSogc3RyZWFtKTsKICAgfk9wZW5T
U0xTdHJlYW1BZGFwdGVyKCkgb3ZlcnJpZGU7CkBAIC0xMTUsNyArMTIwLDcgQEAgY2xhc3MgT3Bl
blNTTFN0cmVhbUFkYXB0ZXIgOiBwdWJsaWMgU1NMU3RyZWFtQWRhcHRlciB7CiAKICAgLy8gVXNl
IG91ciB0aW1ldXRpbHMuaCBzb3VyY2Ugb2YgdGltaW5nIGluIEJvcmluZ1NTTCwgYWxsb3dpbmcg
dXMgdG8gdGVzdAogICAvLyB1c2luZyBhIGZha2UgY2xvY2suCi0gIHN0YXRpYyB2b2lkIGVuYWJs
ZV90aW1lX2NhbGxiYWNrX2Zvcl90ZXN0aW5nKCk7CisgIHN0YXRpYyB2b2lkIEVuYWJsZVRpbWVD
YWxsYmFja0ZvclRlc3RpbmcoKTsKIAogIHByb3RlY3RlZDoKICAgdm9pZCBPbkV2ZW50KFN0cmVh
bUludGVyZmFjZSogc3RyZWFtLCBpbnQgZXZlbnRzLCBpbnQgZXJyKSBvdmVycmlkZTsKQEAgLTE3
MCwxMSArMTc1LDExIEBAIGNsYXNzIE9wZW5TU0xTdHJlYW1BZGFwdGVyIDogcHVibGljIFNTTFN0
cmVhbUFkYXB0ZXIgewogICAvLyBTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjay4KICAg
c3RhdGljIGludCBTU0xWZXJpZnlDYWxsYmFjayhYNTA5X1NUT1JFX0NUWCogc3RvcmUsIHZvaWQq
IGFyZyk7CiAKLSAgYm9vbCB3YWl0aW5nX3RvX3ZlcmlmeV9wZWVyX2NlcnRpZmljYXRlKCkgY29u
c3QgewotICAgIHJldHVybiBjbGllbnRfYXV0aF9lbmFibGVkKCkgJiYgIXBlZXJfY2VydGlmaWNh
dGVfdmVyaWZpZWRfOworICBib29sIFdhaXRpbmdUb1ZlcmlmeVBlZXJDZXJ0aWZpY2F0ZSgpIGNv
bnN0IHsKKyAgICByZXR1cm4gR2V0Q2xpZW50QXV0aEVuYWJsZWQoKSAmJiAhcGVlcl9jZXJ0aWZp
Y2F0ZV92ZXJpZmllZF87CiAgIH0KIAotICBib29sIGhhc19wZWVyX2NlcnRpZmljYXRlX2RpZ2Vz
dCgpIGNvbnN0IHsKKyAgYm9vbCBIYXNQZWVyQ2VydGlmaWNhdGVEaWdlc3QoKSBjb25zdCB7CiAg
ICAgcmV0dXJuICFwZWVyX2NlcnRpZmljYXRlX2RpZ2VzdF9hbGdvcml0aG1fLmVtcHR5KCkgJiYK
ICAgICAgICAgICAgIXBlZXJfY2VydGlmaWNhdGVfZGlnZXN0X3ZhbHVlXy5lbXB0eSgpOwogICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2x1dGlsaXR5LmNjCmluZGV4IDQ2ZjQ1NDc0MzZl
MTE1OGE3YjgwMzA4MDQzZjhmNjc3ZDI1ZTE5ZTguLmEzZjMzNDc4ZWJjN2IwNTEwMGI3M2NiMzA0
MjgxYTAyNDZiOTI1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2x1dGlsaXR5LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2x1dGlsaXR5LmNj
CkBAIC05LDI5ICs5LDIxIEBACiAgKi8KIAogI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2x1dGls
aXR5LmgiCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpZiBkZWZpbmVkKFdFQlJUQ19QT1NJWCkK
LSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChXRUJSVENfV0lOKQog
Ly8gTXVzdCBiZSBpbmNsdWRlZCBmaXJzdCBiZWZvcmUgb3BlbnNzbCBoZWFkZXJzLgogI2luY2x1
ZGUgInJ0Y19iYXNlL3dpbjMyLmgiICAvLyBOT0xJTlQKICNlbmRpZiAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV0VCUlRDX1dJTgogCi0jaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KLSNpbmNsdWRl
IDxvcGVuc3NsL2NyeXB0by5oPgogI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CiAjaW5jbHVkZSA8
b3BlbnNzbC94NTA5Lmg+CiAjaW5jbHVkZSA8b3BlbnNzbC94NTA5djMuaD4KKyNpbmNsdWRlICJy
dGNfYmFzZS9vcGVuc3NsLmgiCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2FycmF5c2l6ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZl
X2NvbnZlcnNpb25zLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5oIgogI2lmbmRlZiBXRUJSVENfRVhDTFVERV9C
VUlMVF9JTl9TU0xfUk9PVF9DRVJUUwogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbHJvb3RzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9vcGVuc3NsdXRpbGl0eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuaAppbmRleCA3Y2IzOGI1YjUyNzYzYTUx
ZGRiNDAyNTg5MzZhNjU2YmQ2NzIxZjlhLi43N2VkMGIxZTdjY2ExY2I3OTY4YTY4MWFjYmYwNjVh
OWZhM2MzMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2x1dGlsaXR5LmgKQEAgLTEz
LDcgKzEzLDYgQEAKIAogI2luY2x1ZGUgPG9wZW5zc2wvb3NzbF90eXAuaD4KICNpbmNsdWRlIDxz
dHJpbmc+Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaCIKIAogbmFtZXNwYWNl
IHJ0YyB7CiAvLyBUaGUgb3BlbnNzbCBuYW1lc3BhY2UgaG9sZHMgc3RhdGljIGhlbHBlciBtZXRo
b2RzLiBBbGwgbWV0aG9kcyByZWxhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcHRpb25zZmlsZS5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wdGlvbnNmaWxlLmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzU4NTliNGNjMDc1MzY0YjRiYzYyZDFm
ODVlYzMzZGU1MWMwYzE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L29wdGlvbnNmaWxlLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLS8qCi0gKiAg
Q29weXJpZ2h0IDIwMDggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgotICovCi0KLSNpbmNsdWRlICJydGNfYmFzZS9vcHRpb25zZmlsZS5oIgotCi0jaW5jbHVk
ZSA8Y3R5cGUuaD4KLQotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9zdHJlYW0uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKLQot
bmFtZXNwYWNlIHJ0YyB7Ci0KLU9wdGlvbnNGaWxlOjpPcHRpb25zRmlsZShjb25zdCBzdGQ6OnN0
cmluZyYgcGF0aCkgOiBwYXRoXyhwYXRoKSB7fQotCi1PcHRpb25zRmlsZTo6fk9wdGlvbnNGaWxl
KCkgPSBkZWZhdWx0OwotCi1ib29sIE9wdGlvbnNGaWxlOjpMb2FkKCkgewotICBvcHRpb25zXy5j
bGVhcigpOwotICAvLyBPcGVuIGZpbGUuCi0gIEZpbGVTdHJlYW0gc3RyZWFtOwotICBpbnQgZXJy
OwotICBpZiAoIXN0cmVhbS5PcGVuKHBhdGhfLCAiciIsICZlcnIpKSB7Ci0gICAgUlRDX0xPR19G
KExTX1dBUk5JTkcpIDw8ICJDb3VsZCBub3Qgb3BlbiBmaWxlLCBlcnI9IiA8PCBlcnI7Ci0gICAg
Ly8gV2UgZG8gbm90IGNvbnNpZGVyIHRoaXMgYW4gZXJyb3IgYmVjYXVzZSB3ZSBleHBlY3QgdGhl
cmUgdG8gYmUgbm8gZmlsZQotICAgIC8vIHVudGlsIHRoZSB1c2VyIHNhdmVzIGEgc2V0dGluZy4K
LSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICAvLyBSZWFkIGluIGFsbCBpdHMgZGF0YS4KLSAgc3Rk
OjpzdHJpbmcgbGluZTsKLSAgU3RyZWFtUmVzdWx0IHJlczsKLSAgZm9yICg7OykgewotICAgIHJl
cyA9IHN0cmVhbS5SZWFkTGluZSgmbGluZSk7Ci0gICAgaWYgKHJlcyAhPSBTUl9TVUNDRVNTKSB7
Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgc2l6ZV90IGVxdWFsc19wb3MgPSBsaW5lLmZpbmQo
Jz0nKTsKLSAgICBpZiAoZXF1YWxzX3BvcyA9PSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAg
Ly8gV2UgZG8gbm90IGNvbnNpZGVyIHRoaXMgYW4gZXJyb3IuIEluc3RlYWQgd2UgaWdub3JlIHRo
ZSBsaW5lIGFuZAotICAgICAgLy8ga2VlcCBnb2luZy4KLSAgICAgIFJUQ19MT0dfRihMU19XQVJO
SU5HKSA8PCAiSWdub3JpbmcgbWFsZm9ybWVkIGxpbmUgaW4gIiA8PCBwYXRoXzsKLSAgICAgIGNv
bnRpbnVlOwotICAgIH0KLSAgICBzdGQ6OnN0cmluZyBrZXkobGluZSwgMCwgZXF1YWxzX3Bvcyk7
Ci0gICAgc3RkOjpzdHJpbmcgdmFsdWUobGluZSwgZXF1YWxzX3BvcyArIDEsIGxpbmUubGVuZ3Ro
KCkgLSAoZXF1YWxzX3BvcyArIDEpKTsKLSAgICBvcHRpb25zX1trZXldID0gdmFsdWU7Ci0gIH0K
LSAgaWYgKHJlcyAhPSBTUl9FT1MpIHsKLSAgICBSVENfTE9HX0YoTFNfRVJST1IpIDw8ICJFcnJv
ciB3aGVuIHJlYWRpbmcgZnJvbSBmaWxlIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0gZWxzZSB7
Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KLQotYm9vbCBPcHRpb25zRmlsZTo6U2F2ZSgpIHsK
LSAgLy8gT3BlbiBmaWxlLgotICBGaWxlU3RyZWFtIHN0cmVhbTsKLSAgaW50IGVycjsKLSAgaWYg
KCFzdHJlYW0uT3BlbihwYXRoXywgInciLCAmZXJyKSkgewotICAgIFJUQ19MT0dfRihMU19FUlJP
UikgPDwgIkNvdWxkIG5vdCBvcGVuIGZpbGUsIGVycj0iIDw8IGVycjsKLSAgICByZXR1cm4gZmFs
c2U7Ci0gIH0KLSAgLy8gV3JpdGUgb3V0IGFsbCB0aGUgZGF0YS4KLSAgU3RyZWFtUmVzdWx0IHJl
cyA9IFNSX1NVQ0NFU1M7Ci0gIHNpemVfdCB3cml0dGVuOwotICBpbnQgZXJyb3I7Ci0gIGZvciAo
T3B0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaSA9IG9wdGlvbnNfLmJlZ2luKCk7IGkgIT0gb3B0
aW9uc18uZW5kKCk7Ci0gICAgICAgKytpKSB7Ci0gICAgcmVzID0KLSAgICAgICAgc3RyZWFtLldy
aXRlQWxsKGktPmZpcnN0LmNfc3RyKCksIGktPmZpcnN0Lmxlbmd0aCgpLCAmd3JpdHRlbiwgJmVy
cm9yKTsKLSAgICBpZiAocmVzICE9IFNSX1NVQ0NFU1MpIHsKLSAgICAgIGJyZWFrOwotICAgIH0K
LSAgICByZXMgPSBzdHJlYW0uV3JpdGVBbGwoIj0iLCAxLCAmd3JpdHRlbiwgJmVycm9yKTsKLSAg
ICBpZiAocmVzICE9IFNSX1NVQ0NFU1MpIHsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXMg
PSBzdHJlYW0uV3JpdGVBbGwoaS0+c2Vjb25kLmNfc3RyKCksIGktPnNlY29uZC5sZW5ndGgoKSwg
JndyaXR0ZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcik7Ci0gICAgaWYgKHJl
cyAhPSBTUl9TVUNDRVNTKSB7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgcmVzID0gc3RyZWFt
LldyaXRlQWxsKCJcbiIsIDEsICZ3cml0dGVuLCAmZXJyb3IpOwotICAgIGlmIChyZXMgIT0gU1Jf
U1VDQ0VTUykgewotICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0gIGlmIChyZXMgIT0gU1JfU1VD
Q0VTUykgewotICAgIFJUQ19MT0dfRihMU19FUlJPUikgPDwgIlVuYWJsZSB0byB3cml0ZSB0byBm
aWxlIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIHRydWU7Ci0g
IH0KLX0KLQotYm9vbCBPcHRpb25zRmlsZTo6SXNMZWdhbE5hbWUoY29uc3Qgc3RkOjpzdHJpbmcm
IG5hbWUpIHsKLSAgZm9yIChzaXplX3QgcG9zID0gMDsgcG9zIDwgbmFtZS5sZW5ndGgoKTsgKytw
b3MpIHsKLSAgICBpZiAobmFtZVtwb3NdID09ICdcbicgfHwgbmFtZVtwb3NdID09ICdcXCcgfHwg
bmFtZVtwb3NdID09ICc9JykgewotICAgICAgLy8gSWxsZWdhbCBjaGFyYWN0ZXIuCi0gICAgICBS
VENfTE9HKExTX1dBUk5JTkcpIDw8ICJJZ25vcmluZyBvcGVyYXRpb24gZm9yIGlsbGVnYWwgb3B0
aW9uICIgPDwgbmFtZTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgT3B0aW9uc0ZpbGU6OklzTGVnYWxWYWx1ZShjb25zdCBzdGQ6OnN0
cmluZyYgdmFsdWUpIHsKLSAgZm9yIChzaXplX3QgcG9zID0gMDsgcG9zIDwgdmFsdWUubGVuZ3Ro
KCk7ICsrcG9zKSB7Ci0gICAgaWYgKHZhbHVlW3Bvc10gPT0gJ1xuJyB8fCB2YWx1ZVtwb3NdID09
ICdcXCcpIHsKLSAgICAgIC8vIElsbGVnYWwgY2hhcmFjdGVyLgotICAgICAgUlRDX0xPRyhMU19X
QVJOSU5HKSA8PCAiSWdub3Jpbmcgb3BlcmF0aW9uIGZvciBpbGxlZ2FsIHZhbHVlICIgPDwgdmFs
dWU7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0gIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIE9wdGlvbnNGaWxlOjpHZXRTdHJpbmdWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgb3B0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIG91dF92
YWwpIGNvbnN0IHsKLSAgUlRDX0xPRyhMU19WRVJCT1NFKSA8PCAiT3B0aW9uc0ZpbGU6OkdldFN0
cmluZ1ZhbHVlICIgPDwgb3B0aW9uOwotICBpZiAoIUlzTGVnYWxOYW1lKG9wdGlvbikpIHsKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgT3B0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaSA9IG9w
dGlvbnNfLmZpbmQob3B0aW9uKTsKLSAgaWYgKGkgPT0gb3B0aW9uc18uZW5kKCkpIHsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0gIH0KLSAgKm91dF92YWwgPSBpLT5zZWNvbmQ7Ci0gIHJldHVybiB0cnVl
OwotfQotCi1ib29sIE9wdGlvbnNGaWxlOjpHZXRJbnRWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYg
b3B0aW9uLCBpbnQqIG91dF92YWwpIGNvbnN0IHsKLSAgUlRDX0xPRyhMU19WRVJCT1NFKSA8PCAi
T3B0aW9uc0ZpbGU6OkdldEludFZhbHVlICIgPDwgb3B0aW9uOwotICBpZiAoIUlzTGVnYWxOYW1l
KG9wdGlvbikpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgT3B0aW9uc01hcDo6Y29uc3Rf
aXRlcmF0b3IgaSA9IG9wdGlvbnNfLmZpbmQob3B0aW9uKTsKLSAgaWYgKGkgPT0gb3B0aW9uc18u
ZW5kKCkpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgcmV0dXJuIEZyb21TdHJpbmcoaS0+
c2Vjb25kLCBvdXRfdmFsKTsKLX0KLQotYm9vbCBPcHRpb25zRmlsZTo6U2V0U3RyaW5nVmFsdWUo
Y29uc3Qgc3RkOjpzdHJpbmcmIG9wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgewotICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8
ICJPcHRpb25zRmlsZTo6U2V0U3RyaW5nVmFsdWUgIiA8PCBvcHRpb24gPDwgIjoiCi0gICAgICAg
ICAgICAgICAgICAgICAgPDwgdmFsdWU7Ci0gIGlmICghSXNMZWdhbE5hbWUob3B0aW9uKSB8fCAh
SXNMZWdhbFZhbHVlKHZhbHVlKSkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBvcHRpb25z
X1tvcHRpb25dID0gdmFsdWU7Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIE9wdGlvbnNGaWxl
OjpTZXRJbnRWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgb3B0aW9uLCBpbnQgdmFsdWUpIHsKLSAg
UlRDX0xPRyhMU19WRVJCT1NFKSA8PCAiT3B0aW9uc0ZpbGU6OlNldEludFZhbHVlICIgPDwgb3B0
aW9uIDw8ICI6IiA8PCB2YWx1ZTsKLSAgaWYgKCFJc0xlZ2FsTmFtZShvcHRpb24pKSB7Ci0gICAg
cmV0dXJuIGZhbHNlOwotICB9Ci0gIG9wdGlvbnNfW29wdGlvbl0gPSBUb1N0cmluZyh2YWx1ZSk7
Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIE9wdGlvbnNGaWxlOjpSZW1vdmVWYWx1ZShjb25z
dCBzdGQ6OnN0cmluZyYgb3B0aW9uKSB7Ci0gIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIk9wdGlv
bnNGaWxlOjpSZW1vdmVWYWx1ZSAiIDw8IG9wdGlvbjsKLSAgaWYgKCFJc0xlZ2FsTmFtZShvcHRp
b24pKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIG9wdGlvbnNfLmVyYXNlKG9wdGlvbik7
Ci0gIHJldHVybiB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcHRpb25z
ZmlsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvb3B0aW9uc2ZpbGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU2NjBmZjI1
OThiZTNkZWNiMmU1Njk2MmU1NWU4NTNiZTE1ZTJiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9vcHRpb25zZmlsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBSVENfQkFTRV9PUFRJT05TRklMRV9I
XwotI2RlZmluZSBSVENfQkFTRV9PUFRJT05TRklMRV9IXwotCi0jaW5jbHVkZSA8bWFwPgotI2lu
Y2x1ZGUgPHN0cmluZz4KLQotbmFtZXNwYWNlIHJ0YyB7Ci0KLS8vIEltcGxlbWVudHMgc3RvcmFn
ZSBvZiBzaW1wbGUgb3B0aW9ucyBpbiBhIHRleHQgZmlsZSBvbiBkaXNrLiBUaGlzIGlzCi0vLyBj
cm9zcy1wbGF0Zm9ybSwgYnV0IGl0IGlzIGludGVuZGVkIG1vc3RseSBmb3IgTGludXggd2hlcmUg
dGhlcmUgaXMgbm8KLS8vIGZpcnN0LWNsYXNzIG9wdGlvbnMgc3RvcmFnZSBzeXN0ZW0uCi1jbGFz
cyBPcHRpb25zRmlsZSB7Ci0gcHVibGljOgotICBPcHRpb25zRmlsZShjb25zdCBzdGQ6OnN0cmlu
ZyYgcGF0aCk7Ci0gIH5PcHRpb25zRmlsZSgpOwotCi0gIC8vIExvYWRzIHRoZSBmaWxlIGZyb20g
ZGlzaywgb3ZlcndyaXRpbmcgdGhlIGluLW1lbW9yeSB2YWx1ZXMuCi0gIGJvb2wgTG9hZCgpOwot
ICAvLyBTYXZlcyB0aGUgY29udGVudHMgaW4gbWVtb3J5LCBvdmVyd3JpdGluZyB0aGUgb24tZGlz
ayB2YWx1ZXMuCi0gIGJvb2wgU2F2ZSgpOwotCi0gIGJvb2wgR2V0U3RyaW5nVmFsdWUoY29uc3Qg
c3RkOjpzdHJpbmcmIG9wdGlvbiwgc3RkOjpzdHJpbmcqIG91dF92YWwpIGNvbnN0OwotICBib29s
IEdldEludFZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24sIGludCogb3V0X3ZhbCkgY29u
c3Q7Ci0gIGJvb2wgU2V0U3RyaW5nVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIG9wdGlvbiwgY29u
c3Qgc3RkOjpzdHJpbmcmIHZhbCk7Ci0gIGJvb2wgU2V0SW50VmFsdWUoY29uc3Qgc3RkOjpzdHJp
bmcmIG9wdGlvbiwgaW50IHZhbCk7Ci0gIGJvb2wgUmVtb3ZlVmFsdWUoY29uc3Qgc3RkOjpzdHJp
bmcmIG9wdGlvbik7Ci0KLSBwcml2YXRlOgotICB0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5n
LCBzdGQ6OnN0cmluZz4gT3B0aW9uc01hcDsKLQotICBzdGF0aWMgYm9vbCBJc0xlZ2FsTmFtZShj
b25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7Ci0gIHN0YXRpYyBib29sIElzTGVnYWxWYWx1ZShjb25z
dCBzdGQ6OnN0cmluZyYgdmFsdWUpOwotCi0gIHN0ZDo6c3RyaW5nIHBhdGhfOwotICBPcHRpb25z
TWFwIG9wdGlvbnNfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHJ0YwotCi0jZW5kaWYgIC8vIFJU
Q19CQVNFX09QVElPTlNGSUxFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcHRpb25zZmlsZV91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wdGlvbnNm
aWxlX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzViYzgyM2Zm
NDE1OGY3MmRiMmM1MDZlMjZmN2I4OWQwMWQ0NTdhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL29wdGlvbnNmaWxlX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAg
LTEsMTc4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDggVGhlIFdlYlJUQyBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0K
LSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL29wdGlvbnNmaWxlLmgiCi0jaW5jbHVkZSAidGVzdC90ZXN0
c3VwcG9ydC9maWxldXRpbHMuaCIKLQotbmFtZXNwYWNlIHJ0YyB7Ci0KLXN0YXRpYyBjb25zdCBz
dGQ6OnN0cmluZyBrVGVzdE9wdGlvbkEgPSAidGVzdC1vcHRpb24tYSI7Ci1zdGF0aWMgY29uc3Qg
c3RkOjpzdHJpbmcga1Rlc3RPcHRpb25CID0gInRlc3Qtb3B0aW9uLWIiOwotc3RhdGljIGNvbnN0
IHN0ZDo6c3RyaW5nIGtUZXN0U3RyaW5nMSA9ICJhIHN0cmluZyI7Ci1zdGF0aWMgY29uc3Qgc3Rk
OjpzdHJpbmcga1Rlc3RTdHJpbmcyID0gImRpZmZlcmVudCBzdHJpbmciOwotc3RhdGljIGNvbnN0
IHN0ZDo6c3RyaW5nIGtPcHRpb25XaXRoRXF1YWxzID0gImZvbz1iYXIiOwotc3RhdGljIGNvbnN0
IHN0ZDo6c3RyaW5nIGtPcHRpb25XaXRoTmV3bGluZSA9ICJmb29cbmJhciI7Ci1zdGF0aWMgY29u
c3Qgc3RkOjpzdHJpbmcga1ZhbHVlV2l0aEVxdWFscyA9ICJiYXo9cXV1eCI7Ci1zdGF0aWMgY29u
c3Qgc3RkOjpzdHJpbmcga1ZhbHVlV2l0aE5ld2xpbmUgPSAiYmF6XG5xdXV4IjsKLXN0YXRpYyBj
b25zdCBzdGQ6OnN0cmluZyBrRW1wdHlTdHJpbmcgPSAiIjsKLXN0YXRpYyBjb25zdCBjaGFyIGtP
cHRpb25XaXRoVXRmOFtdID0geydPJywgICAgJ3AnLCAndCcsICdcMzAyJywgJ1wyNTYnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2knLCAgICAnbycsICduJywgJ1wz
NDInLCAnXDIwNCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXDI0
MicsICdcMCd9OyAgLy8gT3B0KFIpaW8oVE0pLgotc3RhdGljIGNvbnN0IGNoYXIga1ZhbHVlV2l0
aFV0ZjhbXSA9IHsKLSAgICAnVicsICdhJywgICAgJ2wnLCAgICAnXDMwMicsICdcMjU2JywgJ3Yn
LAotICAgICdlJywgJ1wzNDInLCAnXDIwNCcsICdcMjQyJywgJ1wwJ307ICAvLyBWYWwoUil1ZShU
TSkuCi1zdGF0aWMgaW50IGtUZXN0SW50MSA9IDEyMzQ1Owotc3RhdGljIGludCBrVGVzdEludDIg
PSA2Nzg5MDsKLXN0YXRpYyBpbnQga05lZ0ludCA9IC02MzQ7Ci1zdGF0aWMgaW50IGtaZXJvID0g
MDsKLQotI2lmIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCi0vLyBGYWlscyBvbiBBbmRyb2lkOiBo
dHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9NDM2NC4K
LSNkZWZpbmUgTUFZQkVfT3B0aW9uc0ZpbGVUZXN0IERJU0FCTEVEX09wdGlvbnNGaWxlVGVzdAot
I2Vsc2UKLSNkZWZpbmUgTUFZQkVfT3B0aW9uc0ZpbGVUZXN0IE9wdGlvbnNGaWxlVGVzdAotI2Vu
ZGlmCi0KLWNsYXNzIE1BWUJFX09wdGlvbnNGaWxlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLSBwdWJsaWM6Ci0gIE1BWUJFX09wdGlvbnNGaWxlVGVzdCgpIHsKLSAgICB0ZXN0X2ZpbGVf
ID0KLSAgICAgICAgd2VicnRjOjp0ZXN0OjpUZW1wRmlsZW5hbWUod2VicnRjOjp0ZXN0OjpPdXRw
dXRQYXRoKCksICIudGVzdGZpbGUiKTsKLSAgICBPcGVuU3RvcmUoKTsKLSAgfQotCi0gIH5NQVlC
RV9PcHRpb25zRmlsZVRlc3QoKSBvdmVycmlkZSB7IHdlYnJ0Yzo6dGVzdDo6UmVtb3ZlRmlsZSh0
ZXN0X2ZpbGVfKTsgfQotCi0gcHJvdGVjdGVkOgotICB2b2lkIE9wZW5TdG9yZSgpIHsgc3RvcmVf
LnJlc2V0KG5ldyBPcHRpb25zRmlsZSh0ZXN0X2ZpbGVfKSk7IH0KLQotICBzdGQ6OnVuaXF1ZV9w
dHI8T3B0aW9uc0ZpbGU+IHN0b3JlXzsKLQotIHByaXZhdGU6Ci0gIHN0ZDo6c3RyaW5nIHRlc3Rf
ZmlsZV87Ci19OwotCi1URVNUX0YoTUFZQkVfT3B0aW9uc0ZpbGVUZXN0LCBHZXRTZXRTdHJpbmcp
IHsKLSAgLy8gQ2xlYXIgY29udGVudHMgb2YgdGhlIGZpbGUgb24gZGlzay4KLSAgRVhQRUNUX1RS
VUUoc3RvcmVfLT5TYXZlKCkpOwotICBzdGQ6OnN0cmluZyBvdXQxLCBvdXQyOwotICBFWFBFQ1Rf
RkFMU0Uoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkEsICZvdXQxKSk7Ci0gIEVY
UEVDVF9GQUxTRShzdG9yZV8tPkdldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQiwgJm91dDIpKTsK
LSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkEsIGtUZXN0
U3RyaW5nMSkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVF
KHN0b3JlXy0+TG9hZCgpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TZXRTdHJpbmdWYWx1ZShr
VGVzdE9wdGlvbkIsIGtUZXN0U3RyaW5nMikpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUo
KSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVf
LT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkEsICZvdXQxKSk7Ci0gIEVYUEVDVF9UUlVFKHN0
b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25CLCAmb3V0MikpOwotICBFWFBFQ1RfRVEo
a1Rlc3RTdHJpbmcxLCBvdXQxKTsKLSAgRVhQRUNUX0VRKGtUZXN0U3RyaW5nMiwgb3V0Mik7Ci0g
IEVYUEVDVF9UUlVFKHN0b3JlXy0+UmVtb3ZlVmFsdWUoa1Rlc3RPcHRpb25BKSk7Ci0gIEVYUEVD
VF9UUlVFKHN0b3JlXy0+U2F2ZSgpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5Mb2FkKCkpOwot
ICBFWFBFQ1RfVFJVRShzdG9yZV8tPlJlbW92ZVZhbHVlKGtUZXN0T3B0aW9uQikpOwotICBFWFBF
Q1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgpKTsK
LSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCAmb3V0
MSkpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkIs
ICZvdXQyKSk7Ci19Ci0KLVRFU1RfRihNQVlCRV9PcHRpb25zRmlsZVRlc3QsIEdldFNldEludCkg
ewotICAvLyBDbGVhciBjb250ZW50cyBvZiB0aGUgZmlsZSBvbiBkaXNrLgotICBFWFBFQ1RfVFJV
RShzdG9yZV8tPlNhdmUoKSk7Ci0gIGludCBvdXQxLCBvdXQyOwotICBFWFBFQ1RfRkFMU0Uoc3Rv
cmVfLT5HZXRJbnRWYWx1ZShrVGVzdE9wdGlvbkEsICZvdXQxKSk7Ci0gIEVYUEVDVF9GQUxTRShz
dG9yZV8tPkdldEludFZhbHVlKGtUZXN0T3B0aW9uQiwgJm91dDIpKTsKLSAgRVhQRUNUX1RSVUUo
c3RvcmVfLT5TZXRJbnRWYWx1ZShrVGVzdE9wdGlvbkEsIGtUZXN0SW50MSkpOwotICBFWFBFQ1Rf
VFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgpKTsKLSAg
RVhQRUNUX1RSVUUoc3RvcmVfLT5TZXRJbnRWYWx1ZShrVGVzdE9wdGlvbkIsIGtUZXN0SW50Mikp
OwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+
TG9hZCgpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5HZXRJbnRWYWx1ZShrVGVzdE9wdGlvbkEs
ICZvdXQxKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0SW50VmFsdWUoa1Rlc3RPcHRpb25C
LCAmb3V0MikpOwotICBFWFBFQ1RfRVEoa1Rlc3RJbnQxLCBvdXQxKTsKLSAgRVhQRUNUX0VRKGtU
ZXN0SW50Miwgb3V0Mik7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+UmVtb3ZlVmFsdWUoa1Rlc3RP
cHRpb25BKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2F2ZSgpKTsKLSAgRVhQRUNUX1RSVUUo
c3RvcmVfLT5Mb2FkKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlJlbW92ZVZhbHVlKGtUZXN0
T3B0aW9uQikpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVF
KHN0b3JlXy0+TG9hZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+R2V0SW50VmFsdWUoa1Rl
c3RPcHRpb25BLCAmb3V0MSkpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5HZXRJbnRWYWx1ZShr
VGVzdE9wdGlvbkIsICZvdXQyKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0SW50VmFsdWUo
a1Rlc3RPcHRpb25BLCBrTmVnSW50KSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0SW50VmFs
dWUoa1Rlc3RPcHRpb25BLCAmb3V0MSkpOwotICBFWFBFQ1RfRVEoa05lZ0ludCwgb3V0MSk7Ci0g
IEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0SW50VmFsdWUoa1Rlc3RPcHRpb25BLCBrWmVybykpOwot
ICBFWFBFQ1RfVFJVRShzdG9yZV8tPkdldEludFZhbHVlKGtUZXN0T3B0aW9uQSwgJm91dDEpKTsK
LSAgRVhQRUNUX0VRKGtaZXJvLCBvdXQxKTsKLX0KLQotVEVTVF9GKE1BWUJFX09wdGlvbnNGaWxl
VGVzdCwgUGVyc2lzdCkgewotICAvLyBDbGVhciBjb250ZW50cyBvZiB0aGUgZmlsZSBvbiBkaXNr
LgotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+
U2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCBrVGVzdFN0cmluZzEpKTsKLSAgRVhQRUNUX1RS
VUUoc3RvcmVfLT5TZXRJbnRWYWx1ZShrVGVzdE9wdGlvbkIsIGtOZWdJbnQpKTsKLSAgRVhQRUNU
X1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotCi0gIC8vIExvYWQgdGhlIHNhdmVkIGNvbnRlbnRzIGZy
b20gYWJvdmUuCi0gIE9wZW5TdG9yZSgpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7
Ci0gIHN0ZDo6c3RyaW5nIG91dDE7Ci0gIGludCBvdXQyOwotICBFWFBFQ1RfVFJVRShzdG9yZV8t
PkdldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQSwgJm91dDEpKTsKLSAgRVhQRUNUX1RSVUUoc3Rv
cmVfLT5HZXRJbnRWYWx1ZShrVGVzdE9wdGlvbkIsICZvdXQyKSk7Ci0gIEVYUEVDVF9FUShrVGVz
dFN0cmluZzEsIG91dDEpOwotICBFWFBFQ1RfRVEoa05lZ0ludCwgb3V0Mik7Ci19Ci0KLVRFU1Rf
RihNQVlCRV9PcHRpb25zRmlsZVRlc3QsIFNwZWNpYWxDaGFyYWN0ZXJzKSB7Ci0gIC8vIENsZWFy
IGNvbnRlbnRzIG9mIHRoZSBmaWxlIG9uIGRpc2suCi0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2F2
ZSgpKTsKLSAgc3RkOjpzdHJpbmcgb3V0OwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5TZXRTdHJp
bmdWYWx1ZShrT3B0aW9uV2l0aEVxdWFscywga1Rlc3RTdHJpbmcxKSk7Ci0gIEVYUEVDVF9GQUxT
RShzdG9yZV8tPkdldFN0cmluZ1ZhbHVlKGtPcHRpb25XaXRoRXF1YWxzLCAmb3V0KSk7Ci0gIEVY
UEVDVF9GQUxTRShzdG9yZV8tPlNldFN0cmluZ1ZhbHVlKGtPcHRpb25XaXRoTmV3bGluZSwga1Rl
c3RTdHJpbmcxKSk7Ci0gIEVYUEVDVF9GQUxTRShzdG9yZV8tPkdldFN0cmluZ1ZhbHVlKGtPcHRp
b25XaXRoTmV3bGluZSwgJm91dCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNldFN0cmluZ1Zh
bHVlKGtPcHRpb25XaXRoVXRmOCwga1ZhbHVlV2l0aFV0ZjgpKTsKLSAgRVhQRUNUX1RSVUUoc3Rv
cmVfLT5TZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkEsIGtUZXN0U3RyaW5nMSkpOwotICBFWFBF
Q1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgpKTsK
LSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkEsICZvdXQp
KTsKLSAgRVhQRUNUX0VRKGtUZXN0U3RyaW5nMSwgb3V0KTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVf
LT5HZXRTdHJpbmdWYWx1ZShrT3B0aW9uV2l0aFV0ZjgsICZvdXQpKTsKLSAgRVhQRUNUX0VRKGtW
YWx1ZVdpdGhVdGY4LCBvdXQpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5TZXRTdHJpbmdWYWx1
ZShrVGVzdE9wdGlvbkEsIGtWYWx1ZVdpdGhOZXdsaW5lKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3Jl
Xy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCAmb3V0KSk7Ci0gIEVYUEVDVF9FUShrVGVz
dFN0cmluZzEsIG91dCk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0U3RyaW5nVmFsdWUoa1Rl
c3RPcHRpb25BLCBrVmFsdWVXaXRoRXF1YWxzKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2F2
ZSgpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5Mb2FkKCkpOwotICBFWFBFQ1RfVFJVRShzdG9y
ZV8tPkdldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQSwgJm91dCkpOwotICBFWFBFQ1RfRVEoa1Zh
bHVlV2l0aEVxdWFscywgb3V0KTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TZXRTdHJpbmdWYWx1
ZShrRW1wdHlTdHJpbmcsIGtUZXN0U3RyaW5nMikpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNh
dmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgpKTsKLSAgRVhQRUNUX1RSVUUoc3Rv
cmVfLT5HZXRTdHJpbmdWYWx1ZShrRW1wdHlTdHJpbmcsICZvdXQpKTsKLSAgRVhQRUNUX0VRKGtU
ZXN0U3RyaW5nMiwgb3V0KTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TZXRTdHJpbmdWYWx1ZShr
VGVzdE9wdGlvbkIsIGtFbXB0eVN0cmluZykpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUo
KSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVf
LT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkIsICZvdXQpKTsKLSAgRVhQRUNUX0VRKGtFbXB0
eVN0cmluZywgb3V0KTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGF0aHV0aWxz
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
cGF0aHV0aWxzLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTRkZWI3ZjBmYzEz
MmZhN2M0MzZlYzE3NDJlNjgyOTg5MmExYTExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3BhdGh1dGlscy5jYworKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAyMDA0IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAot
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotI2luY2x1ZGUg
PHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxzaGVsbGFwaS5oPgotI2luY2x1ZGUgPHNobG9iai5oPgot
I2luY2x1ZGUgPHRjaGFyLmg+Ci0jZW5kaWYgIC8vIFdFQlJUQ19XSU4KLQotI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9wYXRodXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5o
IgotCi1uYW1lc3BhY2UgcnRjIHsKLQotc3RhdGljIGNvbnN0IGNoYXIgRU1QVFlfU1RSW10gPSAi
IjsKLQotLy8gRVhUX0RFTElNIHNlcGFyYXRlcyBhIGZpbGUgYmFzZW5hbWUgZnJvbSBleHRlbnNp
b24KLWNvbnN0IGNoYXIgRVhUX0RFTElNID0gJy4nOwotCi0vLyBGT0xERVJfREVMSU1TIHNlcGFy
YXRlIGZvbGRlciBzZWdtZW50cyBhbmQgdGhlIGZpbGVuYW1lCi1jb25zdCBjaGFyKiBjb25zdCBG
T0xERVJfREVMSU1TID0gIi9cXCI7Ci0KLS8vIERFRkFVTFRfRk9MREVSX0RFTElNIGlzIHRoZSBw
cmVmZXJyZWQgZGVsaW1pdGVyIGZvciB0aGlzIHBsYXRmb3JtCi0jaWZkZWYgV0VCUlRDX1dJTgot
Y29uc3QgY2hhciBERUZBVUxUX0ZPTERFUl9ERUxJTSA9ICdcXCc7Ci0jZWxzZSAgLy8gIVdFQlJU
Q19XSU4KLWNvbnN0IGNoYXIgREVGQVVMVF9GT0xERVJfREVMSU0gPSAnLyc7Ci0jZW5kaWYgIC8v
ICFXRUJSVENfV0lOCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFBhdGhuYW1lIC0gcGFy
c2luZyBvZiBwYXRobmFtZXMgaW50byBjb21wb25lbnRzLCBhbmQgdmljZSB2ZXJzYQotLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotCi1ib29sIFBhdGhuYW1lOjpJc0ZvbGRlckRlbGltaXRlcihjaGFy
IGNoKSB7Ci0gIHJldHVybiAobnVsbHB0ciAhPSA6OnN0cmNocihGT0xERVJfREVMSU1TLCBjaCkp
OwotfQotCi1jaGFyIFBhdGhuYW1lOjpEZWZhdWx0Rm9sZGVyRGVsaW1pdGVyKCkgewotICByZXR1
cm4gREVGQVVMVF9GT0xERVJfREVMSU07Ci19Ci0KLVBhdGhuYW1lOjpQYXRobmFtZSgpCi0gICAg
OiBmb2xkZXJfZGVsaW1pdGVyXyhERUZBVUxUX0ZPTERFUl9ERUxJTSkgewotfQotCi1QYXRobmFt
ZTo6UGF0aG5hbWUoY29uc3QgUGF0aG5hbWUmKSA9IGRlZmF1bHQ7Ci1QYXRobmFtZTo6UGF0aG5h
bWUoUGF0aG5hbWUmJikgPSBkZWZhdWx0OwotCi1QYXRobmFtZTo6UGF0aG5hbWUoY29uc3Qgc3Rk
OjpzdHJpbmcmIHBhdGhuYW1lKQotICAgIDogZm9sZGVyX2RlbGltaXRlcl8oREVGQVVMVF9GT0xE
RVJfREVMSU0pIHsKLSAgU2V0UGF0aG5hbWUocGF0aG5hbWUpOwotfQotCi1QYXRobmFtZTo6UGF0
aG5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZvbGRlciwgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVu
YW1lKQotICAgIDogZm9sZGVyX2RlbGltaXRlcl8oREVGQVVMVF9GT0xERVJfREVMSU0pIHsKLSAg
U2V0UGF0aG5hbWUoZm9sZGVyLCBmaWxlbmFtZSk7Ci19Ci0KLVBhdGhuYW1lJiBQYXRobmFtZTo6
b3BlcmF0b3I9KGNvbnN0IFBhdGhuYW1lJikgPSBkZWZhdWx0OwotUGF0aG5hbWUmIFBhdGhuYW1l
OjpvcGVyYXRvcj0oUGF0aG5hbWUmJikgPSBkZWZhdWx0OwotCi1zdGQ6OnN0cmluZyBQYXRobmFt
ZTo6cGF0aG5hbWUoKSBjb25zdCB7Ci0gIHN0ZDo6c3RyaW5nIHBhdGhuYW1lKGZvbGRlcl8pOwot
ICBwYXRobmFtZS5hcHBlbmQoYmFzZW5hbWVfKTsKLSAgcGF0aG5hbWUuYXBwZW5kKGV4dGVuc2lv
bl8pOwotICBpZiAocGF0aG5hbWUuZW1wdHkoKSkgewotICAgIC8vIEluc3RlYWQgb2YgdGhlIGVt
cHR5IHBhdGhuYW1lLCByZXR1cm4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0gICAg
cGF0aG5hbWUucHVzaF9iYWNrKCcuJyk7Ci0gICAgcGF0aG5hbWUucHVzaF9iYWNrKGZvbGRlcl9k
ZWxpbWl0ZXJfKTsKLSAgfQotICByZXR1cm4gcGF0aG5hbWU7Ci19Ci0KLXZvaWQgUGF0aG5hbWU6
OlNldFBhdGhuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRobmFtZSkgewotICBzdGQ6OnN0cmlu
Zzo6c2l6ZV90eXBlIHBvcyA9IHBhdGhuYW1lLmZpbmRfbGFzdF9vZihGT0xERVJfREVMSU1TKTsK
LSAgaWYgKHBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgIFNldEZvbGRlcihwYXRobmFt
ZS5zdWJzdHIoMCwgcG9zICsgMSkpOwotICAgIFNldEZpbGVuYW1lKHBhdGhuYW1lLnN1YnN0cihw
b3MgKyAxKSk7Ci0gIH0gZWxzZSB7Ci0gICAgU2V0Rm9sZGVyKEVNUFRZX1NUUik7Ci0gICAgU2V0
RmlsZW5hbWUocGF0aG5hbWUpOwotICB9Ci19Ci0KLXZvaWQgUGF0aG5hbWU6OlNldFBhdGhuYW1l
KGNvbnN0IHN0ZDo6c3RyaW5nJiBmb2xkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpIHsKLSAgU2V0Rm9sZGVyKGZvbGRlcik7Ci0gIFNl
dEZpbGVuYW1lKGZpbGVuYW1lKTsKLX0KLQotdm9pZCBQYXRobmFtZTo6U2V0Rm9sZGVyKGNvbnN0
IHN0ZDo6c3RyaW5nJiBmb2xkZXIpIHsKLSAgZm9sZGVyXy5hc3NpZ24oZm9sZGVyKTsKLSAgLy8g
RW5zdXJlIGZvbGRlciBlbmRzIGluIGEgcGF0aCBkZWxpbWl0ZXIKLSAgaWYgKCFmb2xkZXJfLmVt
cHR5KCkgJiYgIUlzRm9sZGVyRGVsaW1pdGVyKGZvbGRlcl9bZm9sZGVyXy5sZW5ndGgoKS0xXSkp
IHsKLSAgICBmb2xkZXJfLnB1c2hfYmFjayhmb2xkZXJfZGVsaW1pdGVyXyk7Ci0gIH0KLX0KLQot
dm9pZCBQYXRobmFtZTo6QXBwZW5kRm9sZGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb2xkZXIpIHsK
LSAgZm9sZGVyXy5hcHBlbmQoZm9sZGVyKTsKLSAgLy8gRW5zdXJlIGZvbGRlciBlbmRzIGluIGEg
cGF0aCBkZWxpbWl0ZXIKLSAgaWYgKCFmb2xkZXJfLmVtcHR5KCkgJiYgIUlzRm9sZGVyRGVsaW1p
dGVyKGZvbGRlcl9bZm9sZGVyXy5sZW5ndGgoKS0xXSkpIHsKLSAgICBmb2xkZXJfLnB1c2hfYmFj
ayhmb2xkZXJfZGVsaW1pdGVyXyk7Ci0gIH0KLX0KLQotYm9vbCBQYXRobmFtZTo6U2V0QmFzZW5h
bWUoY29uc3Qgc3RkOjpzdHJpbmcmIGJhc2VuYW1lKSB7Ci0gIGlmKGJhc2VuYW1lLmZpbmRfZmly
c3Rfb2YoRk9MREVSX0RFTElNUykgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICByZXR1cm4g
ZmFsc2U7Ci0gIH0KLSAgYmFzZW5hbWVfLmFzc2lnbihiYXNlbmFtZSk7Ci0gIHJldHVybiB0cnVl
OwotfQotCi1ib29sIFBhdGhuYW1lOjpTZXRFeHRlbnNpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGV4
dGVuc2lvbikgewotICBpZiAoZXh0ZW5zaW9uLmZpbmRfZmlyc3Rfb2YoRk9MREVSX0RFTElNUykg
IT0gc3RkOjpzdHJpbmc6Om5wb3MgfHwKLSAgICBleHRlbnNpb24uZmluZF9maXJzdF9vZihFWFRf
REVMSU0sIDEpICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0g
IH0KLSAgZXh0ZW5zaW9uXy5hc3NpZ24oZXh0ZW5zaW9uKTsKLSAgLy8gRW5zdXJlIGV4dGVuc2lv
biBiZWdpbnMgd2l0aCB0aGUgZXh0ZW5zaW9uIGRlbGltaXRlcgotICBpZiAoIWV4dGVuc2lvbl8u
ZW1wdHkoKSAmJiAoZXh0ZW5zaW9uX1swXSAhPSBFWFRfREVMSU0pKSB7Ci0gICAgZXh0ZW5zaW9u
Xy5pbnNlcnQoZXh0ZW5zaW9uXy5iZWdpbigpLCBFWFRfREVMSU0pOwotICB9Ci0gIHJldHVybiB0
cnVlOwotfQotCi1zdGQ6OnN0cmluZyBQYXRobmFtZTo6ZmlsZW5hbWUoKSBjb25zdCB7Ci0gIHN0
ZDo6c3RyaW5nIGZpbGVuYW1lKGJhc2VuYW1lXyk7Ci0gIGZpbGVuYW1lLmFwcGVuZChleHRlbnNp
b25fKTsKLSAgcmV0dXJuIGZpbGVuYW1lOwotfQotCi1ib29sIFBhdGhuYW1lOjpTZXRGaWxlbmFt
ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpIHsKLSAgc3RkOjpzdHJpbmc6OnNpemVfdHlw
ZSBwb3MgPSBmaWxlbmFtZS5yZmluZChFWFRfREVMSU0pOwotICBpZiAoKHBvcyA9PSBzdGQ6OnN0
cmluZzo6bnBvcykgfHwgKHBvcyA9PSAwKSkgewotICAgIHJldHVybiBTZXRFeHRlbnNpb24oRU1Q
VFlfU1RSKSAmJiBTZXRCYXNlbmFtZShmaWxlbmFtZSk7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJu
IFNldEV4dGVuc2lvbihmaWxlbmFtZS5zdWJzdHIocG9zKSkgJiYgU2V0QmFzZW5hbWUoZmlsZW5h
bWUuc3Vic3RyKDAsIHBvcykpOwotICB9Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQot
fSAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BhdGh1dGlscy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5NTQzYmUwNzNmMjQ1ZDM0MDlmZDY5MGI1Y2Y5Y2M5N2RiNmU1
YTdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BhdGh1dGlscy5o
CisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBU
aGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lm
bmRlZiBSVENfQkFTRV9QQVRIVVRJTFNfSF8KLSNkZWZpbmUgUlRDX0JBU0VfUEFUSFVUSUxTX0hf
Ci0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLQot
bmFtZXNwYWNlIHJ0YyB7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFBhdGhuYW1lIC0g
cGFyc2luZyBvZiBwYXRobmFtZXMgaW50byBjb21wb25lbnRzLCBhbmQgdmljZSB2ZXJzYS4KLS8v
Ci0vLyBUbyBlc3RhYmxpc2ggY29uc2lzdGVudCB0ZXJtaW5vbG9neSwgYSBmaWxlbmFtZSBuZXZl
ciBjb250YWlucyBhIGZvbGRlcgotLy8gY29tcG9uZW50LiAgQSBmb2xkZXIgbmV2ZXIgY29udGFp
bnMgYSBmaWxlbmFtZS4gIEEgcGF0aG5hbWUgbWF5IGluY2x1ZGUKLS8vIGEgZm9sZGVyIGFuZC9v
ciBmaWxlbmFtZSBjb21wb25lbnQuICBIZXJlIGFyZSBzb21lIGV4YW1wbGVzOgotLy8KLS8vICAg
cGF0aG5hbWUoKSAgICAgIC9ob21lL2pvaG4vZXhhbXBsZS50eHQKLS8vICAgZm9sZGVyKCkgICAg
ICAgIC9ob21lL2pvaG4vCi0vLyAgIGZpbGVuYW1lKCkgICAgICAgICAgICAgICAgIGV4YW1wbGUu
dHh0Ci0vLyAgIHBhcmVudF9mb2xkZXIoKSAvaG9tZS8KLS8vICAgZm9sZGVyX25hbWUoKSAgICAg
ICAgIGpvaG4vCi0vLyAgIGJhc2VuYW1lKCkgICAgICAgICAgICAgICAgIGV4YW1wbGUKLS8vICAg
ZXh0ZW5zaW9uKCkgICAgICAgICAgICAgICAgICAgICAgIC50eHQKLS8vCi0vLyBCYXNlbmFtZSBt
YXkgYmVnaW4sIGVuZCwgYW5kL29yIGluY2x1ZGUgcGVyaW9kcywgYnV0IG5vIGZvbGRlciBkZWxp
bWl0ZXJzLgotLy8gSWYgZXh0ZW5zaW9uIGV4aXN0cywgaXQgY29uc2lzdHMgb2YgYSBwZXJpb2Qg
Zm9sbG93ZWQgYnkgemVybyBvciBtb3JlCi0vLyBub24tcGVyaW9kL25vbi1kZWxpbWl0ZXIgY2hh
cmFjdGVycywgYW5kIGJhc2VuYW1lIGlzIG5vbi1lbXB0eS4KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLQotY2xhc3MgUGF0aG5hbWUgewotIHB1YmxpYzoKLSAgLy8gRm9sZGVyIGRlbGltaXRlcnMg
YXJlIHNsYXNoIGFuZCBiYWNrc2xhc2gKLSAgc3RhdGljIGJvb2wgSXNGb2xkZXJEZWxpbWl0ZXIo
Y2hhciBjaCk7Ci0gIHN0YXRpYyBjaGFyIERlZmF1bHRGb2xkZXJEZWxpbWl0ZXIoKTsKLQotICBQ
YXRobmFtZSgpOwotICBQYXRobmFtZShjb25zdCBQYXRobmFtZSYpOwotICBQYXRobmFtZShQYXRo
bmFtZSYmKTsKLSAgUGF0aG5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhuYW1lKTsKLSAgUGF0
aG5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZvbGRlciwgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVu
YW1lKTsKLQotICBQYXRobmFtZSYgb3BlcmF0b3I9KGNvbnN0IFBhdGhuYW1lJik7Ci0gIFBhdGhu
YW1lJiBvcGVyYXRvcj0oUGF0aG5hbWUmJik7Ci0KLSAgLy8gUmV0dXJucyB0aGUgZm9sZGVyIGFu
ZCBmaWxlbmFtZSBjb21wb25lbnRzLiAgSWYgdGhlIHBhdGhuYW1lIGlzIGVtcHR5LAotICAvLyBy
ZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBkaXJlY3RvcnkgKGFzIGEg
cmVsYXRpdmUgcGF0aCwKLSAgLy8gaS5lLiwgIi4iKS4KLSAgc3RkOjpzdHJpbmcgcGF0aG5hbWUo
KSBjb25zdDsKLSAgdm9pZCBTZXRQYXRobmFtZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aG5hbWUp
OwotICB2b2lkIFNldFBhdGhuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb2xkZXIsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBmaWxlbmFtZSk7Ci0KLSAgLy8gU2V0Rm9sZGVyIGFuZCBBcHBlbmRGb2xkZXIg
d2lsbCBhcHBlbmQgYSBmb2xkZXIgZGVsaW1pdGVyLCBpZiBuZWVkZWQuCi0gIHZvaWQgU2V0Rm9s
ZGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb2xkZXIpOwotICB2b2lkIEFwcGVuZEZvbGRlcihjb25z
dCBzdGQ6OnN0cmluZyYgZm9sZGVyKTsKLQotICBib29sIFNldEJhc2VuYW1lKGNvbnN0IHN0ZDo6
c3RyaW5nJiBiYXNlbmFtZSk7Ci0KLSAgLy8gU2V0RXh0ZW5zaW9uIHdpbGwgcHJlZml4IGEgcGVy
aW9kLCBpZiBuZWVkZWQuCi0gIGJvb2wgU2V0RXh0ZW5zaW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBl
eHRlbnNpb24pOwotCi0gIHN0ZDo6c3RyaW5nIGZpbGVuYW1lKCkgY29uc3Q7Ci0gIGJvb2wgU2V0
RmlsZW5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKTsKLQotIHByaXZhdGU6Ci0gIHN0
ZDo6c3RyaW5nIGZvbGRlcl8sIGJhc2VuYW1lXywgZXh0ZW5zaW9uXzsKLSAgY2hhciBmb2xkZXJf
ZGVsaW1pdGVyXzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBydGMKLQotI2VuZGlmICAvLyBSVENf
QkFTRV9QQVRIVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BhdGh1dGlsc191bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BhdGh1dGlsc191bml0
dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFlNGYwYWJhNTliZjVlNGY4
ZTg5YmY5ZDk1MDhkMGY1NzlkYmVlMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9wYXRodXRpbHNfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCww
IEBACi0vKgotICogIENvcHlyaWdodCAyMDA3IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAicnRjX2Jhc2UvcGF0aHV0aWxzLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLQotVEVTVChQYXRobmFtZSwgUmV0dXJuc0Rv
dEZvckVtcHR5UGF0aG5hbWUpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcga0NXRCA9Ci0gICAgICBz
dGQ6OnN0cmluZygiLiIpICsgcnRjOjpQYXRobmFtZTo6RGVmYXVsdEZvbGRlckRlbGltaXRlcigp
OwotCi0gIHJ0Yzo6UGF0aG5hbWUgcGF0aCgiLyIsICIiKTsKLSAgRVhQRUNUX1RSVUUgKHBhdGgu
ZmlsZW5hbWUoKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKHBhdGgucGF0aG5hbWUoKS5lbXB0
eSgpKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKCIvIiksIHBhdGgucGF0aG5hbWUoKSk7Ci0K
LSAgcGF0aC5TZXRQYXRobmFtZSgiIiwgImZvbyIpOwotICBFWFBFQ1RfRkFMU0UocGF0aC5maWxl
bmFtZSgpLmVtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UocGF0aC5wYXRobmFtZSgpLmVtcHR5KCkp
OwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoImZvbyIpLCBwYXRoLnBhdGhuYW1lKCkpOwotCi0g
IHBhdGguU2V0UGF0aG5hbWUoIiIsICIiKTsKLSAgRVhQRUNUX1RSVUUgKHBhdGguZmlsZW5hbWUo
KS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKHBhdGgucGF0aG5hbWUoKS5lbXB0eSgpKTsKLSAg
RVhQRUNUX0VRKGtDV0QsIHBhdGgucGF0aG5hbWUoKSk7Ci0KLSAgcGF0aC5TZXRQYXRobmFtZShr
Q1dELCAiIik7Ci0gIEVYUEVDVF9UUlVFIChwYXRoLmZpbGVuYW1lKCkuZW1wdHkoKSk7Ci0gIEVY
UEVDVF9GQUxTRShwYXRoLnBhdGhuYW1lKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9FUShrQ1dELCBw
YXRoLnBhdGhuYW1lKCkpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9w
aHlzaWNhbHNvY2tldHNlcnZlcl91bml0dGVzdC5jYwppbmRleCAxZTA0NmMwNTdlNWQ4MjExYzIz
NWQ4NTRmNWQ2Y2U3MTJlNmJiYWEzLi40YjM2Y2Q1ZjYwOGU4Zjg3ZmU5ZTZkNWI5ZDkwZDllOTEw
ZTRlZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9waHlzaWNhbHNvY2tldHNlcnZlcl91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9waHlzaWNhbHNv
Y2tldHNlcnZlcl91bml0dGVzdC5jYwpAQCAtNTQ3LDcgKzU0NywxMyBAQCBUaHJlYWQqIFBvc2l4
U2lnbmFsRGVsaXZlcnlUZXN0OjpzaWduYWxlZF90aHJlYWRfID0gbnVsbHB0cjsKIAogLy8gVGVz
dCByZWNlaXZpbmcgYSBzeW5jaHJvbm91cyBzaWduYWwgd2hpbGUgbm90IGluIFdhaXQoKSBhbmQg
dGhlbiBlbnRlcmluZwogLy8gV2FpdCgpIGFmdGVyd2FyZHMuCi1URVNUX0YoUG9zaXhTaWduYWxE
ZWxpdmVyeVRlc3QsIFJhaXNlVGhlbldhaXQpIHsKKy8vIFRPRE8od2VicnRjOjc4NjQpOiBGYWls
cyBvbiByZWFsIGlPUyBkZXZpY2VzCisjaWYgZGVmaW5lZChXRUJSVENfSU9TKSAmJiBkZWZpbmVk
KFdFQlJUQ19BUkNIX0FSTV9GQU1JTFkpCisjZGVmaW5lIE1BWUJFX1JhaXNlVGhlbldhaXQgRElT
QUJMRURfUmFpc2VUaGVuV2FpdAorI2Vsc2UKKyNkZWZpbmUgTUFZQkVfUmFpc2VUaGVuV2FpdCBS
YWlzZVRoZW5XYWl0CisjZW5kaWYKK1RFU1RfRihQb3NpeFNpZ25hbERlbGl2ZXJ5VGVzdCwgTUFZ
QkVfUmFpc2VUaGVuV2FpdCkgewogICBBU1NFUlRfVFJVRShzc18tPlNldFBvc2l4U2lnbmFsSGFu
ZGxlcihTSUdURVJNLCAmUmVjb3JkU2lnbmFsKSk7CiAgIHJhaXNlKFNJR1RFUk0pOwogICBFWFBF
Q1RfVFJVRShzc18tPldhaXQoMCwgdHJ1ZSkpOwpAQCAtNTU3LDcgKzU2MywxMyBAQCBURVNUX0Yo
UG9zaXhTaWduYWxEZWxpdmVyeVRlc3QsIFJhaXNlVGhlbldhaXQpIHsKIAogLy8gVGVzdCB0aGF0
IHdlIGNhbiBoYW5kbGUgZ2V0dGluZyB0b25zIG9mIHJlcGVhdGVkIHNpZ25hbHMgYW5kIHRoYXQg
d2Ugc2VlIGFsbAogLy8gdGhlIGRpZmZlcmVudCBvbmVzLgotVEVTVF9GKFBvc2l4U2lnbmFsRGVs
aXZlcnlUZXN0LCBJbnNhbmVseU1hbnlTaWduYWxzKSB7CisvLyBUT0RPKHdlYnJ0Yzo3ODY0KTog
RmFpbHMgb24gcmVhbCBpT1MgZGV2aWNlcworI2lmIGRlZmluZWQoV0VCUlRDX0lPUykgJiYgZGVm
aW5lZChXRUJSVENfQVJDSF9BUk1fRkFNSUxZKQorI2RlZmluZSBNQVlCRV9JbnNhbmVseU1hbnlT
aWduYWxzIERJU0FCTEVEX0luc2FuZWx5TWFueVNpZ25hbHMKKyNlbHNlCisjZGVmaW5lIE1BWUJF
X0luc2FuZWx5TWFueVNpZ25hbHMgSW5zYW5lbHlNYW55U2lnbmFscworI2VuZGlmCitURVNUX0Yo
UG9zaXhTaWduYWxEZWxpdmVyeVRlc3QsIE1BWUJFX0luc2FuZWx5TWFueVNpZ25hbHMpIHsKICAg
c3NfLT5TZXRQb3NpeFNpZ25hbEhhbmRsZXIoU0lHVEVSTSwgJlJlY29yZFNpZ25hbCk7CiAgIHNz
Xy0+U2V0UG9zaXhTaWduYWxIYW5kbGVyKFNJR0lOVCwgJlJlY29yZFNpZ25hbCk7CiAgIGZvciAo
aW50IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewpAQCAtNTk3LDcgKzYwOSwxMyBAQCBjbGFzcyBS
YWlzZVNpZ1Rlcm1SdW5uYWJsZSA6IHB1YmxpYyBSdW5uYWJsZSB7CiAKIC8vIFRlc3QgdGhhdCBp
dCB3b3JrcyBubyBtYXR0ZXIgd2hhdCB0aHJlYWQgdGhlIGtlcm5lbCBjaG9vc2VzIHRvIGdpdmUg
dGhlCiAvLyBzaWduYWwgdG8gKHNpbmNlIGl0J3Mgbm90IGd1YXJhbnRlZWQgdG8gYmUgdGhlIG9u
ZSB0aGF0IFdhaXQoKSBydW5zIG9uKS4KLVRFU1RfRihQb3NpeFNpZ25hbERlbGl2ZXJ5VGVzdCwg
U2lnbmFsT25EaWZmZXJlbnRUaHJlYWQpIHsKKy8vIFRPRE8od2VicnRjOjc4NjQpOiBGYWlscyBv
biByZWFsIGlPUyBkZXZpY2VzCisjaWYgZGVmaW5lZChXRUJSVENfSU9TKSAmJiBkZWZpbmVkKFdF
QlJUQ19BUkNIX0FSTV9GQU1JTFkpCisjZGVmaW5lIE1BWUJFX1NpZ25hbE9uRGlmZmVyZW50VGhy
ZWFkIERJU0FCTEVEX1NpZ25hbE9uRGlmZmVyZW50VGhyZWFkCisjZWxzZQorI2RlZmluZSBNQVlC
RV9TaWduYWxPbkRpZmZlcmVudFRocmVhZCBTaWduYWxPbkRpZmZlcmVudFRocmVhZAorI2VuZGlm
CitURVNUX0YoUG9zaXhTaWduYWxEZWxpdmVyeVRlc3QsIERJU0FCTEVEX1NpZ25hbE9uRGlmZmVy
ZW50VGhyZWFkKSB7CiAgIHNzXy0+U2V0UG9zaXhTaWduYWxIYW5kbGVyKFNJR1RFUk0sICZSZWNv
cmRTaWduYWwpOwogICAvLyBNYXNrIG91dCBTSUdURVJNIHNvIHRoYXQgaXQgY2FuJ3QgYmUgZGVs
aXZlcmVkIHRvIHRoaXMgdGhyZWFkLgogICBzaWdzZXRfdCBtYXNrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGxhdGZvcm1f
ZmlsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3BsYXRmb3JtX2ZpbGUuY2MKaW5kZXggYTRjOTA2YTFlZDAyOGFkZjZkYjBiZmYyNTI4NDA3
YjkwYjliY2NjOS4uYmFlZmIyMjkzMTNiZDJhNzNhMzRkZDEzMjQ4MDhhNTkyOWQ4ZDAzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvcGxhdGZvcm1fZmlsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmNjCkBAIC0xMCwxNCArMTAsMTMgQEAK
IAogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIKIAotI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ3V0aWxzLmgiCi0KICNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCiAjaW5jbHVkZSA8
aW8uaD4KKworI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiICAvLyBGb3IgVG9VdGYx
NgogI2Vsc2UKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5j
bHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
cGxhdGZvcm1fdGhyZWFkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmNjCmluZGV4IDc5ZDlkNTNhZWVlMDJlMGQ4
YmUwNDExYjBlMDE5YjYwNzVkMDdlMWUuLmJhODRiNmFlOGUwNDk1NDg3NzNjN2ZlZDQ3MzE1NWRl
NWM2YTM0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuY2MKQEAg
LTEwLDE1ICsxMCwxNyBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgi
CiAKKyNpZiAhZGVmaW5lZChXRUJSVENfV0lOKQorI2luY2x1ZGUgPHNjaGVkLmg+CisjZW5kaWYK
KyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKLSNpZiBkZWZp
bmVkKFdFQlJUQ19MSU5VWCkKLSNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KLSNpbmNsdWRlIDxzeXMv
c3lzY2FsbC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBydGMgewogbmFtZXNwYWNlIHsKICNpZiBk
ZWZpbmVkKFdFQlJUQ19XSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5o
CmluZGV4IDMzOTIxYzIwOWRhMDI4OWIwNzQ3ZGFhNDdiMTU0NWJjYTU0NDZkNTQuLjQ3YzIzZGMx
YjViNDdmNGIyOTg4NTIyOGYzOGIzMDZlMjNhZDJiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3BsYXRmb3JtX3RocmVhZC5oCkBAIC0xMSwxMCArMTEsMTIgQEAKICNpZm5kZWYgUlRDX0JBU0Vf
UExBVEZPUk1fVEhSRUFEX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1BMQVRGT1JNX1RIUkVBRF9IXwog
CisjaWZuZGVmIFdFQlJUQ19XSU4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKICNpbmNs
dWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90
aHJlYWRfdHlwZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9wcm94eV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3Byb3h5X3VuaXR0ZXN0LmNjCmluZGV4IGY0MjAzOWY1MGJhMjEx
OGRkY2NhYWI4NDVjMWRjOTQwZTJhODRjMDIuLjAxMDE4OTM4NGY4Yjc1NzA5OWFlNjhiYzhhMzZk
MGU5OGFlMmJkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3Byb3h5X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Byb3h5X3VuaXR0ZXN0LmNjCkBA
IC0xOCw3ICsxOCw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5o
IgogCiB1c2luZyBydGM6OlNvY2tldDsKLXVzaW5nIHJ0Yzo6VGhyZWFkOwogdXNpbmcgcnRjOjpT
b2NrZXRBZGRyZXNzOwogCiBzdGF0aWMgY29uc3QgU29ja2V0QWRkcmVzcyBrU29ja3NQcm94eUlu
dEFkZHIoIjEuMi4zLjQiLCAxMDgwKTsKQEAgLTQ5LDcgKzQ4LDggQEAgVEVTVF9GKFByb3h5VGVz
dCwgVGVzdFNvY2tzNUNvbm5lY3QpIHsKICAgICAgIHNvY2tldCwga1NvY2tzUHJveHlJbnRBZGRy
LCAiIiwgcnRjOjpDcnlwdFN0cmluZygpKTsKICAgLy8gVE9ETzogSVB2Ni1pemUgdGhlc2UgdGVz
dHMgd2hlbiBwcm94eSBzdXBwb3J0cyBJUHY2LgogCi0gIHJ0Yzo6VGVzdEVjaG9TZXJ2ZXIgc2Vy
dmVyKFRocmVhZDo6Q3VycmVudCgpLCBTb2NrZXRBZGRyZXNzKElOQUREUl9BTlksIDApKTsKKyAg
cnRjOjpUZXN0RWNob1NlcnZlciBzZXJ2ZXIocnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU29ja2V0QWRkcmVzcyhJTkFERFJfQU5ZLCAwKSk7CiAK
ICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNUQ1BTb2NrZXQ+IHBhY2tldF9zb2NrZXQoCiAg
ICAgICBydGM6OkFzeW5jVENQU29ja2V0OjpDcmVhdGUocHJveHlfc29ja2V0LCBTb2NrZXRBZGRy
ZXNzKElOQUREUl9BTlksIDApLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcHJveHlzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wcm94eXNlcnZlci5jYwppbmRl
eCA1NWNhYjgwOTc1YzM2ZmQxNTQzZTg0ZWRhNTEyYWZmMzgyYmRlNzRjLi43MWM0ODc5MDk5ZjA1
NjQ4YzQ4NTA2MDk2Mzc0YmNiYTlkMmY1MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wcm94eXNlcnZlci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wcm94eXNl
cnZlci5jYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zb2NrZXRmYWN0b3J5LmgiCiAKIG5hbWVzcGFjZSBydGMgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvcmFjZV9jaGVja2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9yYWNlX2NoZWNrZXIuaAppbmRleCA3MzU2N2U5OGQ4YWMwN2RiNzY2ZTgx
Yzg5N2RiMzRjMGQzYWQ4ZGVjLi40ZDU3NDYwMWViMGI0YmE2MmFjZTVjZGI0NmQ2OTBhMzQxM2Zh
M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9yYWNlX2NoZWNrZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYWNlX2NoZWNrZXIuaApAQCAtMTIsNyArMTIsNyBA
QAogI2RlZmluZSBSVENfQkFTRV9SQUNFX0NIRUNLRVJfSF8KIAogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZF90eXBlcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhbmRvbS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFu
ZG9tLmgKaW5kZXggMmZhYTk4NTZkYzZhZWUxMTA1Y2ZlYmI5ZmY2YzhhNWQ2MDliNmUwOS4uZTFj
M2JiNzA1OGU4MjY5NzQ5NDk5NDQ5MDA4NmYwMjcxMmRiYTA0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFuZG9tLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFu
ZG9tLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgUlRDX0JBU0VfUkFORE9NX0hfCiAjZGVm
aW5lIFJUQ19CQVNFX1JBTkRPTV9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8
bGltaXRzPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRlX2xpbWl0
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9yYXRlX2xpbWl0ZXIuY2MKaW5kZXggMDM0M2YyNTZiMjkzZjBhMTE0NDhmMTY3ZGNhMzE5MGNm
NzUwNWQ1Ni4uNWM3YmRlZmIwYzhiOTdhMDY4Y2FkZDkzNDc3ZjVhMDVkYjcyNmNhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
cmF0ZV9saW1pdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3JhdGVfbGltaXRlci5jYwpAQCAtOSw2ICs5LDEwIEBACiAgKi8KIAog
I2luY2x1ZGUgInJ0Y19iYXNlL3JhdGVfbGltaXRlci5oIgorCisjaW5jbHVkZSA8bGltaXRzPgor
CisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFw
cGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9s
aW1pdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9yYXRlX2xpbWl0ZXIuaAppbmRleCAwYmZkZTBkYTI1OWJiN2E0YTJlNWRhMDEwNjc1M2Yw
MzkzZTk2ZjFlLi40M2VmODhkOGZjMzU2ZWIwZTkxYzk3ODJjMTYyOWNiOGRhNjM4OWMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9yYXRlX2xpbWl0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9yYXRlX2xpbWl0ZXIuaApAQCAtMTEsMTEgKzExLDEzIEBACiAjaWZu
ZGVmIFJUQ19CQVNFX1JBVEVfTElNSVRFUl9IXwogI2RlZmluZSBSVENfQkFTRV9SQVRFX0xJTUlU
RVJfSF8KIAotI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9y
YXRlX3N0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVfbGltaXRlcl91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Jh
dGVfbGltaXRlcl91bml0dGVzdC5jYwppbmRleCA2ZWZlYTU0NThlMWIwODdjZmEyMDVjZTFlNWUx
YjRmMzcxNjUwODZmLi5hYzA2MjVmYTE4NmY3OWNlYjE3Y2RjMjQyNjQ4YTA3ZWJlOTE5ZTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9yYXRlX2xpbWl0ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyX3VuaXR0ZXN0LmNjCkBA
IC0xMTIsOSArMTEyLDcgQEAgc3RhdGljIGNvbnN0IGludDY0X3Qga01heFRpbWVvdXRNcyA9IDMw
MDAwOwogY2xhc3MgVGhyZWFkVGFzayB7CiAgcHVibGljOgogICBleHBsaWNpdCBUaHJlYWRUYXNr
KFJhdGVMaW1pdGVyKiByYXRlX2xpbWl0ZXIpCi0gICAgICA6IHJhdGVfbGltaXRlcl8ocmF0ZV9s
aW1pdGVyKSwKLSAgICAgICAgc3RhcnRfc2lnbmFsXyhmYWxzZSwgZmFsc2UpLAotICAgICAgICBl
bmRfc2lnbmFsXyhmYWxzZSwgZmFsc2UpIHt9CisgICAgICA6IHJhdGVfbGltaXRlcl8ocmF0ZV9s
aW1pdGVyKSB7fQogICB2aXJ0dWFsIH5UaHJlYWRUYXNrKCkge30KIAogICB2b2lkIFJ1bigpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3JhdGVfc3RhdGlzdGljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9zdGF0aXN0aWNzLmgKaW5kZXggNjgwMzVjOWE2OGU5
OGJhMDAzMmI1N2RkM2RhMDAyZDI2Y2MxZTk3Ni4uZDRjY2M1OWJmNWJkZmQxYzg5Mzg4ZmQ3ZGZl
ZjEyYmZkODBiZTBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9zdGF0aXN0aWNzLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9zdGF0aXN0aWNzLmgK
QEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgUlRDX0JBU0VfUkFURV9TVEFUSVNUSUNTX0hfCiAj
ZGVmaW5lIFJUQ19CQVNFX1JBVEVfU1RBVElTVElDU19IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+
CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZXRyYWNrZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRldHJhY2tlci5jYwppbmRl
eCBlMzFkMjY2MjdhYjE5ZWRiMjdjMWRiZTAyMGI4ODNlNWRmNzNkMGU5Li43Yzk2Y2E5ZjYwODU4
ODkyYjk1NTAxZWYyZTY4NjFiMGIyMTc4OTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRldHJhY2tlci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRldHJh
Y2tlci5jYwpAQCAtMTAsOCArMTAsNiBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZXRyYWNr
ZXIuaCIKIAotI2luY2x1ZGUgPHN0ZGRlZi5oPgotCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRp
ZmljYXRlLmNjCmluZGV4IDdmMDI3YmE1ZjgwZjQ4ODg2ZDczZTUwYmIzOTQ1MTYwZjVhMjNiZjku
Ljg3NTA2OGY0ZmM5ODg5NzBlMDI2Zjg3MWYyOTZmM2QyNWY1ZWEyZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRp
ZmljYXRlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlLmNjCkBAIC0xNCw2ICsxNCw5IEBACiAKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9zc2xpZGVudGl0eS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiBu
YW1lc3BhY2UgcnRjIHsKIApAQCAtMjksNyArMzIsNyBAQCBSVENDZXJ0aWZpY2F0ZTo6UlRDQ2Vy
dGlmaWNhdGUoU1NMSWRlbnRpdHkqIGlkZW50aXR5KSA6IGlkZW50aXR5XyhpZGVudGl0eSkgewog
UlRDQ2VydGlmaWNhdGU6On5SVENDZXJ0aWZpY2F0ZSgpIHt9CiAKIHVpbnQ2NF90IFJUQ0NlcnRp
ZmljYXRlOjpFeHBpcmVzKCkgY29uc3QgewotICBpbnQ2NF90IGV4cGlyZXMgPSBzc2xfY2VydGlm
aWNhdGUoKS5DZXJ0aWZpY2F0ZUV4cGlyYXRpb25UaW1lKCk7CisgIGludDY0X3QgZXhwaXJlcyA9
IEdldFNTTENlcnRpZmljYXRlKCkuQ2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpOwogICBpZiAo
ZXhwaXJlcyAhPSAtMSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGV4cGlyZXMp
ICoga051bU1pbGxpc2Vjc1BlclNlYzsKICAgLy8gSWYgdGhlIGV4cGlyYXRpb24gdGltZSBjb3Vs
ZCBub3QgYmUgcmV0cmlldmVkIHJldHVybiBhbiBleHBpcmVkIHRpbWVzdGFtcC4KQEAgLTQwLDE3
ICs0MywyMiBAQCBib29sIFJUQ0NlcnRpZmljYXRlOjpIYXNFeHBpcmVkKHVpbnQ2NF90IG5vdykg
Y29uc3QgewogICByZXR1cm4gRXhwaXJlcygpIDw9IG5vdzsKIH0KIAorY29uc3QgU1NMQ2VydGlm
aWNhdGUmIFJUQ0NlcnRpZmljYXRlOjpHZXRTU0xDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsKKyAgcmV0
dXJuIGlkZW50aXR5Xy0+Y2VydGlmaWNhdGUoKTsKK30KKworLy8gRGVwcmVjYXRlZDogVE9ETyhi
ZW53cmlnaHQpIC0gUmVtb3ZlIG9uY2UgY2hyb21pdW0gaXMgdXBkYXRlZC4KIGNvbnN0IFNTTENl
cnRpZmljYXRlJiBSVENDZXJ0aWZpY2F0ZTo6c3NsX2NlcnRpZmljYXRlKCkgY29uc3QgewogICBy
ZXR1cm4gaWRlbnRpdHlfLT5jZXJ0aWZpY2F0ZSgpOwogfQogCi1jb25zdCBTU0xDZXJ0Q2hhaW4m
IFJUQ0NlcnRpZmljYXRlOjpzc2xfY2VydF9jaGFpbigpIGNvbnN0IHsKK2NvbnN0IFNTTENlcnRD
aGFpbiYgUlRDQ2VydGlmaWNhdGU6OkdldFNTTENlcnRpZmljYXRlQ2hhaW4oKSBjb25zdCB7CiAg
IHJldHVybiBpZGVudGl0eV8tPmNlcnRfY2hhaW4oKTsKIH0KIAogUlRDQ2VydGlmaWNhdGVQRU0g
UlRDQ2VydGlmaWNhdGU6OlRvUEVNKCkgY29uc3QgewogICByZXR1cm4gUlRDQ2VydGlmaWNhdGVQ
RU0oaWRlbnRpdHlfLT5Qcml2YXRlS2V5VG9QRU1TdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNzbF9jZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2V0U1NMQ2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpKTsKIH0KIAog
c2NvcGVkX3JlZnB0cjxSVENDZXJ0aWZpY2F0ZT4gUlRDQ2VydGlmaWNhdGU6OkZyb21QRU0oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9ydGNjZXJ0aWZpY2F0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaAppbmRleCBkNTQyMmY4YjRhNDdkMmZl
MTkyOGI2MTIzYzdiNWMwNzJlMDYzNjRkLi41NjFlYTBmOWU3ZTkwNmY0Yzc4ZDBmYTExOTk5YTli
YTg3MmM3MDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlLmgKQEAgLTEy
LDE1ICsxMiwxOCBAQAogI2RlZmluZSBSVENfQkFTRV9SVENDRVJUSUZJQ0FURV9IXwogCiAjaW5j
bHVkZSA8c3RkaW50Lmg+Ci0KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RyaW5nPgog
CiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29w
ZWRfcmVmX3B0ci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5LmgiCiAKIG5hbWVz
cGFjZSBydGMgewogCitjbGFzcyBTU0xDZXJ0Q2hhaW47CitjbGFzcyBTU0xDZXJ0aWZpY2F0ZTsK
K2NsYXNzIFNTTElkZW50aXR5OworCiAvLyBUaGlzIGNsYXNzIGNvbnRhaW5zIFBFTSBzdHJpbmdz
IG9mIGFuIFJUQ0NlcnRpZmljYXRlJ3MgcHJpdmF0ZSBrZXkgYW5kCiAvLyBjZXJ0aWZpY2F0ZSBh
bmQgYWN0cyBhcyBhIHRleHQgcmVwcmVzZW50YXRpb24gb2YgUlRDQ2VydGlmaWNhdGUuIENlcnRp
ZmljYXRlcwogLy8gY2FuIGJlIHNlcmlhbGl6ZWQgYW5kIGRlc2VyaWFsaXplZCB0byBhbmQgZnJv
bSB0aGlzIGZvcm1hdCwgd2hpY2ggYWxsb3dzIGZvcgpAQCAtNTUsMTEgKzU4LDE1IEBAIGNsYXNz
IFJUQ0NlcnRpZmljYXRlIDogcHVibGljIFJlZkNvdW50SW50ZXJmYWNlIHsKICAgLy8gQ2hlY2tz
IGlmIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgZXhwaXJlZCwgd2hlcmUgfG5vd3wgaXMgZXhwcmVzc2Vk
IGluIG1zCiAgIC8vIHJlbGF0aXZlIHRvIGVwb2NoLCAxOTcwLTAxLTAxVDAwOjAwOjAwWi4KICAg
Ym9vbCBIYXNFeHBpcmVkKHVpbnQ2NF90IG5vdykgY29uc3Q7CisKKyAgY29uc3QgU1NMQ2VydGlm
aWNhdGUmIEdldFNTTENlcnRpZmljYXRlKCkgY29uc3Q7CisgIGNvbnN0IFNTTENlcnRDaGFpbiYg
R2V0U1NMQ2VydGlmaWNhdGVDaGFpbigpIGNvbnN0OworCisgIC8vIERlcHJlY2F0ZWQ6IFRPRE8o
YmVud3JpZ2h0KSAtIFJlbW92ZSBvbmNlIGNocm9taXVtIGlzIHVwZGF0ZWQuCiAgIGNvbnN0IFNT
TENlcnRpZmljYXRlJiBzc2xfY2VydGlmaWNhdGUoKSBjb25zdDsKLSAgY29uc3QgU1NMQ2VydENo
YWluJiBzc2xfY2VydF9jaGFpbigpIGNvbnN0OwogCiAgIC8vIFRPRE8oaGJvcyk6IElmIHBvc3Np
YmxlLCByZW1vdmUgb25jZSBSVENDZXJ0aWZpY2F0ZSBhbmQgaXRzCi0gIC8vIHNzbF9jZXJ0aWZp
Y2F0ZSgpIGlzIHVzZWQgaW4gYWxsIHJlbGV2YW50IHBsYWNlcy4gU2hvdWxkIG5vdCBwYXNzIGFy
b3VuZAorICAvLyBHZXRTU0xDZXJ0aWZpY2F0ZSgpIGlzIHVzZWQgaW4gYWxsIHJlbGV2YW50IHBs
YWNlcy4gU2hvdWxkIG5vdCBwYXNzIGFyb3VuZAogICAvLyByYXcgU1NMSWRlbnRpdHkqIGZvciB0
aGUgc2FrZSBvZiBhY2Nlc3NpbmcgU1NMSWRlbnRpdHk6OmNlcnRpZmljYXRlKCkuCiAgIC8vIEhv
d2V2ZXIsIHNvbWUgcGxhY2VzIG1pZ2h0IG5lZWQgU1NMSWRlbnRpdHkqIGZvciBpdHMgcHVibGlj
L3ByaXZhdGUga2V5Li4uCiAgIFNTTElkZW50aXR5KiBpZGVudGl0eSgpIGNvbnN0IHsgcmV0dXJu
IGlkZW50aXR5Xy5nZXQoKTsgfQpAQCAtNzcsNyArODQsNyBAQCBjbGFzcyBSVENDZXJ0aWZpY2F0
ZSA6IHB1YmxpYyBSZWZDb3VudEludGVyZmFjZSB7CiAKICBwcml2YXRlOgogICAvLyBUaGUgU1NM
SWRlbnRpdHkgaXMgdGhlIG93bmVyIG9mIHRoZSBTU0xDZXJ0aWZpY2F0ZS4gVG8gcHJvdGVjdCBv
dXIKLSAgLy8gc3NsX2NlcnRpZmljYXRlKCkgd2UgdGFrZSBvd25lcnNoaXAgb2YgfGlkZW50aXR5
X3wuCisgIC8vIEdldFNTTENlcnRpZmljYXRlKCkgd2UgdGFrZSBvd25lcnNoaXAgb2YgfGlkZW50
aXR5X3wuCiAgIHN0ZDo6dW5pcXVlX3B0cjxTU0xJZGVudGl0eT4gaWRlbnRpdHlfOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvcnRjY2VydGlmaWNhdGVnZW5lcmF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZWdlbmVyYXRvci5jYwpp
bmRleCAwYjUxYzYxMWJhZGY1MzcwMTRiZDIwNGIzZTViYWI2ODUzZmZiMmUyLi4xMTRiMzVjNjY1
OGZjYzllNTU3MjVlN2EzNDQ0NTQ5YmMxMmRmODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZWdlbmVy
YXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZWdlbmVyYXRvci5jYwpAQCAtMTAsMTAgKzEwLDE1IEBACiAK
ICNpbmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZWdlbmVyYXRvci5oIgogCisjaW5jbHVk
ZSA8dGltZS5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2xvY2F0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWhhbmRsZXIu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9yZWZjb3VudGVkb2JqZWN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIK
IApAQCAtMjMsNyArMjgsNiBAQCBuYW1lc3BhY2UgewogCiAvLyBBIGNlcnRpZmljYXRlcycgc3Vi
amVjdCBhbmQgaXNzdWVyIG5hbWUuCiBjb25zdCBjaGFyIGtJZGVudGl0eU5hbWVbXSA9ICJXZWJS
VEMiOwotCiBjb25zdCB1aW50NjRfdCBrWWVhckluU2Vjb25kcyA9IDM2NSAqIDI0ICogNjAgKiA2
MDsKIAogZW51bSB7CkBAIC02MCwxMSArNjQsOSBAQCBjbGFzcyBSVENDZXJ0aWZpY2F0ZUdlbmVy
YXRpb25UYXNrIDogcHVibGljIFJlZkNvdW50SW50ZXJmYWNlLAogICAgIHN3aXRjaCAobXNnLT5t
ZXNzYWdlX2lkKSB7CiAgICAgICBjYXNlIE1TR19HRU5FUkFURToKICAgICAgICAgUlRDX0RDSEVD
Syh3b3JrZXJfdGhyZWFkXy0+SXNDdXJyZW50KCkpOwotCiAgICAgICAgIC8vIFBlcmZvcm0gdGhl
IGNlcnRpZmljYXRlIGdlbmVyYXRpb24gd29yayBoZXJlIG9uIHRoZSB3b3JrZXIgdGhyZWFkLgog
ICAgICAgICBjZXJ0aWZpY2F0ZV8gPSBSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcjo6R2VuZXJhdGVD
ZXJ0aWZpY2F0ZSgKICAgICAgICAgICAgIGtleV9wYXJhbXNfLCBleHBpcmVzX21zXyk7Ci0KICAg
ICAgICAgLy8gSGFuZGxlIGNhbGxiYWNrcyBvbiBzaWduYWxpbmcgdGhyZWFkLiBQYXNzIG9uIHRo
ZSB8bXNnLT5wZGF0YXwKICAgICAgICAgLy8gKHdoaWNoIHJlZmVyZW5jZXMgfHRoaXN8IHdpdGgg
cmVmIGNvdW50aW5nKSB0byB0aGF0IHRocmVhZC4KICAgICAgICAgc2lnbmFsaW5nX3RocmVhZF8t
PlBvc3QoUlRDX0ZST01fSEVSRSwgdGhpcywgTVNHX0dFTkVSQVRFX0RPTkUsCkBAIC03MiwxNCAr
NzQsMTIgQEAgY2xhc3MgUlRDQ2VydGlmaWNhdGVHZW5lcmF0aW9uVGFzayA6IHB1YmxpYyBSZWZD
b3VudEludGVyZmFjZSwKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIE1TR19HRU5FUkFURV9E
T05FOgogICAgICAgICBSVENfRENIRUNLKHNpZ25hbGluZ190aHJlYWRfLT5Jc0N1cnJlbnQoKSk7
Ci0KICAgICAgICAgLy8gUGVyZm9ybSBjYWxsYmFjayB3aXRoIHJlc3VsdCBoZXJlIG9uIHRoZSBz
aWduYWxpbmcgdGhyZWFkLgogICAgICAgICBpZiAoY2VydGlmaWNhdGVfKSB7CiAgICAgICAgICAg
Y2FsbGJhY2tfLT5PblN1Y2Nlc3MoY2VydGlmaWNhdGVfKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICBjYWxsYmFja18tPk9uRmFpbHVyZSgpOwogICAgICAgICB9Ci0KICAgICAgICAgLy8g
RGVzdHJveSB8bXNnLT5wZGF0YXwgd2hpY2ggcmVmZXJlbmNlcyB8dGhpc3wgd2l0aCByZWYgY291
bnRpbmcuIFRoaXMKICAgICAgICAgLy8gbWF5IHJlc3VsdCBpbiB8dGhpc3wgYmVpbmcgZGVsZXRl
ZCAtIGRvIG5vdCB0b3VjaCBtZW1iZXIgdmFyaWFibGVzCiAgICAgICAgIC8vIGFmdGVyIHRoaXMg
bGluZS4KQEAgLTEwNSw5ICsxMDUsMTEgQEAgY2xhc3MgUlRDQ2VydGlmaWNhdGVHZW5lcmF0aW9u
VGFzayA6IHB1YmxpYyBSZWZDb3VudEludGVyZmFjZSwKIHNjb3BlZF9yZWZwdHI8UlRDQ2VydGlm
aWNhdGU+IFJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yOjpHZW5lcmF0ZUNlcnRpZmljYXRlKAogICAg
IGNvbnN0IEtleVBhcmFtcyYga2V5X3BhcmFtcywKICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4mIGV4cGlyZXNfbXMpIHsKLSAgaWYgKCFrZXlfcGFyYW1zLklzVmFsaWQoKSkKKyAg
aWYgKCFrZXlfcGFyYW1zLklzVmFsaWQoKSkgewogICAgIHJldHVybiBudWxscHRyOwotICBTU0xJ
ZGVudGl0eSogaWRlbnRpdHk7CisgIH0KKworICBTU0xJZGVudGl0eSogaWRlbnRpdHkgPSBudWxs
cHRyOwogICBpZiAoIWV4cGlyZXNfbXMpIHsKICAgICBpZGVudGl0eSA9IFNTTElkZW50aXR5OjpH
ZW5lcmF0ZShrSWRlbnRpdHlOYW1lLCBrZXlfcGFyYW1zKTsKICAgfSBlbHNlIHsKQEAgLTEyNCw4
ICsxMjYsOSBAQCBzY29wZWRfcmVmcHRyPFJUQ0NlcnRpZmljYXRlPiBSVENDZXJ0aWZpY2F0ZUdl
bmVyYXRvcjo6R2VuZXJhdGVDZXJ0aWZpY2F0ZSgKICAgICBpZGVudGl0eSA9IFNTTElkZW50aXR5
OjpHZW5lcmF0ZVdpdGhFeHBpcmF0aW9uKGtJZGVudGl0eU5hbWUsIGtleV9wYXJhbXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X2xpZmV0
aW1lX3MpOwogICB9Ci0gIGlmICghaWRlbnRpdHkpCisgIGlmICghaWRlbnRpdHkpIHsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgfQogICBzdGQ6OnVuaXF1ZV9wdHI8U1NMSWRlbnRpdHk+IGlkZW50
aXR5X3NwdHIoaWRlbnRpdHkpOwogICByZXR1cm4gUlRDQ2VydGlmaWNhdGU6OkNyZWF0ZShzdGQ6
Om1vdmUoaWRlbnRpdHlfc3B0cikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGVnZW5lcmF0b3Iu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0
Y2NlcnRpZmljYXRlZ2VuZXJhdG9yLmgKaW5kZXggYTZjNTAzYTlmMjljZjA0ZDZkMjZhMDU3MmJl
NWU5NzQ0MmZmNDVkMi4uZmVkMDc1ZTZkZGY0ZTY3YjQzNGJhYWVhYjFjNjMyOWRhYWMzYmNjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvcnRjY2VydGlmaWNhdGVnZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZWdlbmVyYXRvci5o
CkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIFJUQ19CQVNFX1JUQ0NFUlRJRklDQVRFR0VORVJB
VE9SX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1JUQ0NFUlRJRklDQVRFR0VORVJBVE9SX0hfCiAKKyNp
bmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3J0Y2NlcnRp
ZmljYXRlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zYW5pdGl6ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Nhbml0aXplci5oCmluZGV4IDIzYTc0OGY4NGZjMDI3
ZDRjZGY1ZWZiZmIyNDMwYjJmNTZkODJlOTMuLjhhZjA4MjRiNjdjODViY2RlZGIzZWZiYzM1ZTQx
MGU2ZTAxYWU5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3Nhbml0aXplci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Nhbml0aXplci5oCkBAIC0xNCw3ICsxNCw3
IEBACiAjaW5jbHVkZSA8c3RkZGVmLmg+ICAvLyBGb3Igc2l6ZV90LgogCiAjaWZkZWYgX19jcGx1
c3BsdXMKLSNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90
cmFpdHMuaCIKICNlbmRpZgogCiAjaWYgZGVmaW5lZChfX2hhc19mZWF0dXJlKQpAQCAtOTgsMTAg
Kzk4LDEwIEBAIG5hbWVzcGFjZSBzYW5pdGl6ZXJfaW1wbCB7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogY29uc3RleHByIGJvb2wgSXNUcml2aWFsbHlDb3B5YWJsZSgpIHsKLSAgcmV0dXJuIHN0
YXRpY19jYXN0PGJvb2w+KHN0ZDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZTxUPjo6
dmFsdWUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGQ6OmlzX3RyaXZpYWxseV9j
b3B5X2Fzc2lnbmFibGU8VD46OnZhbHVlIHx8CisgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihh
YnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSAmJgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGU8
VD46OnZhbHVlIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXN0ZDo6aXNfY29weV9h
c3NpZ25hYmxlPFQ+Ojp2YWx1ZSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWJzbDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpOwogfQog
CiB9ICAvLyBuYW1lc3BhY2Ugc2FuaXRpemVyX2ltcGwKQEAgLTEyMyw5ICsxMjMsMTEgQEAgaW5s
aW5lIHZvaWQgTXNhbk1hcmtVbmluaXRpYWxpemVkKGNvbnN0IFQmIG1lbSkgewogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KIGlubGluZSBUIE1zYW5VbmluaXRpYWxpemVkKFQgdCkgeworI2lmIFJU
Q19IQVNfTVNBTgogICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NzYyKTogU3dpdGNoIHRvIHN0
ZDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlIHdoZW4gaXQKICAgLy8gYmVjb21lcyBhdmFpbGFibGUg
aW4gZG93bnN0cmVhbSBwcm9qZWN0cy4KICAgc3RhdGljX2Fzc2VydChzYW5pdGl6ZXJfaW1wbDo6
SXNUcml2aWFsbHlDb3B5YWJsZTxUPigpLCAiIik7CisjZW5kaWYKICAgcnRjX01zYW5NYXJrVW5p
bml0aWFsaXplZCgmdCwgc2l6ZW9mKFQpLCAxKTsKICAgcmV0dXJuIHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zY29w
ZWRfcmVmX3B0ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaAppbmRleCBhNTgzYWE5OWI1MzNiYjI5ZjY5NzNiMmZm
Mjk3YWUyZmJiYTNmYTFlLi5iOTYxZmY1N2U4NjRhNzM5MzI4MDkzNGQzYjJjODEyYzcxYjllZTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgKQEAgLTgsMTU0ICs4LDEy
IEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCiAgKi8KIAotLy8gT3JpZ2luYWxseSB0aGVzZSBjbGFzc2VzIGFyZSBmcm9t
IENocm9taXVtLgotLy8gaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2Nocm9tZS90cnVu
ay9zcmMvYmFzZS9tZW1vcnkvcmVmX2NvdW50ZWQuaD92aWV3PW1hcmt1cAotCi0vLwotLy8gQSBz
bWFydCBwb2ludGVyIGNsYXNzIGZvciByZWZlcmVuY2UgY291bnRlZCBvYmplY3RzLiAgVXNlIHRo
aXMgY2xhc3MgaW5zdGVhZAotLy8gb2YgY2FsbGluZyBBZGRSZWYgYW5kIFJlbGVhc2UgbWFudWFs
bHkgb24gYSByZWZlcmVuY2UgY291bnRlZCBvYmplY3QgdG8KLS8vIGF2b2lkIGNvbW1vbiBtZW1v
cnkgbGVha3MgY2F1c2VkIGJ5IGZvcmdldHRpbmcgdG8gUmVsZWFzZSBhbiBvYmplY3QKLS8vIHJl
ZmVyZW5jZS4gIFNhbXBsZSB1c2FnZToKLS8vCi0vLyAgIGNsYXNzIE15Rm9vIDogcHVibGljIFJl
ZkNvdW50ZWQ8TXlGb28+IHsKLS8vICAgIC4uLgotLy8gICB9OwotLy8KLS8vICAgdm9pZCBzb21l
X2Z1bmN0aW9uKCkgewotLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+IGZvbyA9IG5ldyBNeUZv
bygpOwotLy8gICAgIGZvby0+TWV0aG9kKHBhcmFtKTsKLS8vICAgICAvLyB8Zm9vfCBpcyByZWxl
YXNlZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucwotLy8gICB9Ci0vLwotLy8gICB2b2lkIHNv
bWVfb3RoZXJfZnVuY3Rpb24oKSB7Ci0vLyAgICAgc2NvcGVkX3JlZnB0cjxNeUZvbz4gZm9vID0g
bmV3IE15Rm9vKCk7Ci0vLyAgICAgLi4uCi0vLyAgICAgZm9vID0gbnVsbHB0cjsgIC8vIGV4cGxp
Y2l0bHkgcmVsZWFzZXMgfGZvb3wKLS8vICAgICAuLi4KLS8vICAgICBpZiAoZm9vKQotLy8gICAg
ICAgZm9vLT5NZXRob2QocGFyYW0pOwotLy8gICB9Ci0vLwotLy8gVGhlIGFib3ZlIGV4YW1wbGVz
IHNob3cgaG93IHNjb3BlZF9yZWZwdHI8VD4gYWN0cyBsaWtlIGEgcG9pbnRlciB0byBULgotLy8g
R2l2ZW4gdHdvIHNjb3BlZF9yZWZwdHI8VD4gY2xhc3NlcywgaXQgaXMgYWxzbyBwb3NzaWJsZSB0
byBleGNoYW5nZQotLy8gcmVmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28gb2JqZWN0cywgbGlrZSBz
bzoKLS8vCi0vLyAgIHsKLS8vICAgICBzY29wZWRfcmVmcHRyPE15Rm9vPiBhID0gbmV3IE15Rm9v
KCk7Ci0vLyAgICAgc2NvcGVkX3JlZnB0cjxNeUZvbz4gYjsKLS8vCi0vLyAgICAgYi5zd2FwKGEp
OwotLy8gICAgIC8vIG5vdywgfGJ8IHJlZmVyZW5jZXMgdGhlIE15Rm9vIG9iamVjdCwgYW5kIHxh
fCByZWZlcmVuY2VzIG51bGwuCi0vLyAgIH0KLS8vCi0vLyBUbyBtYWtlIGJvdGggfGF8IGFuZCB8
YnwgaW4gdGhlIGFib3ZlIGV4YW1wbGUgcmVmZXJlbmNlIHRoZSBzYW1lIE15Rm9vCi0vLyBvYmpl
Y3QsIHNpbXBseSB1c2UgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3I6Ci0vLwotLy8gICB7Ci0vLyAg
ICAgc2NvcGVkX3JlZnB0cjxNeUZvbz4gYSA9IG5ldyBNeUZvbygpOwotLy8gICAgIHNjb3BlZF9y
ZWZwdHI8TXlGb28+IGI7Ci0vLwotLy8gICAgIGIgPSBhOwotLy8gICAgIC8vIG5vdywgfGF8IGFu
ZCB8YnwgZWFjaCBvd24gYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgTXlGb28gb2JqZWN0LgotLy8g
ICB9Ci0vLwotCiAjaWZuZGVmIFJUQ19CQVNFX1NDT1BFRF9SRUZfUFRSX0hfCiAjZGVmaW5lIFJU
Q19CQVNFX1NDT1BFRF9SRUZfUFRSX0hfCiAKLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLW5hbWVzcGFj
ZSBydGMgewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWNsYXNzIHNjb3BlZF9yZWZwdHIgewotIHB1
YmxpYzoKLSAgc2NvcGVkX3JlZnB0cigpIDogcHRyXyhudWxscHRyKSB7fQotCi0gIHNjb3BlZF9y
ZWZwdHIoVCogcCkgOiBwdHJfKHApIHsKLSAgICBpZiAocHRyXykKLSAgICAgIHB0cl8tPkFkZFJl
ZigpOwotICB9Ci0KLSAgc2NvcGVkX3JlZnB0cihjb25zdCBzY29wZWRfcmVmcHRyPFQ+JiByKSA6
IHB0cl8oci5wdHJfKSB7Ci0gICAgaWYgKHB0cl8pCi0gICAgICBwdHJfLT5BZGRSZWYoKTsKLSAg
fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICBzY29wZWRfcmVmcHRyKGNvbnN0IHNjb3Bl
ZF9yZWZwdHI8VT4mIHIpIDogcHRyXyhyLmdldCgpKSB7Ci0gICAgaWYgKHB0cl8pCi0gICAgICBw
dHJfLT5BZGRSZWYoKTsKLSAgfQotCi0gIC8vIE1vdmUgY29uc3RydWN0b3JzLgotICBzY29wZWRf
cmVmcHRyKHNjb3BlZF9yZWZwdHI8VD4mJiByKSA6IHB0cl8oci5yZWxlYXNlKCkpIHt9Ci0KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gIHNjb3BlZF9yZWZwdHIoc2NvcGVkX3JlZnB0cjxVPiYm
IHIpIDogcHRyXyhyLnJlbGVhc2UoKSkge30KLQotICB+c2NvcGVkX3JlZnB0cigpIHsKLSAgICBp
ZiAocHRyXykKLSAgICAgIHB0cl8tPlJlbGVhc2UoKTsKLSAgfQotCi0gIFQqIGdldCgpIGNvbnN0
IHsgcmV0dXJuIHB0cl87IH0KLSAgb3BlcmF0b3IgVCooKSBjb25zdCB7IHJldHVybiBwdHJfOyB9
Ci0gIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBwdHJfOyB9Ci0KLSAgLy8gUmV0dXJu
cyB0aGUgKHBvc3NpYmx5IG51bGwpIHJhdyBwb2ludGVyLCBhbmQgbWFrZXMgdGhlIHNjb3BlZF9y
ZWZwdHIgaG9sZCBhCi0gIC8vIG51bGwgcG9pbnRlciwgYWxsIHdpdGhvdXQgdG91Y2hpbmcgdGhl
IHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgdW5kZXJseWluZwotICAvLyBwb2ludGVkLXRvIG9iamVj
dC4gVGhlIG9iamVjdCBpcyBzdGlsbCByZWZlcmVuY2UgY291bnRlZCwgYW5kIHRoZSBjYWxsZXIg
b2YKLSAgLy8gcmVsZWFzZSgpIGlzIG5vdyB0aGUgcHJvdWQgb3duZXIgb2Ygb25lIHJlZmVyZW5j
ZSwgc28gaXQgaXMgcmVzcG9uc2libGUgZm9yCi0gIC8vIGNhbGxpbmcgUmVsZWFzZSgpIG9uY2Ug
b24gdGhlIG9iamVjdCB3aGVuIG5vIGxvbmdlciB1c2luZyBpdC4KLSAgVCogcmVsZWFzZSgpIHsK
LSAgICBUKiByZXRWYWwgPSBwdHJfOwotICAgIHB0cl8gPSBudWxscHRyOwotICAgIHJldHVybiBy
ZXRWYWw7Ci0gIH0KLQotICBzY29wZWRfcmVmcHRyPFQ+JiBvcGVyYXRvcj0oVCogcCkgewotICAg
IC8vIEFkZFJlZiBmaXJzdCBzbyB0aGF0IHNlbGYgYXNzaWdubWVudCBzaG91bGQgd29yawotICAg
IGlmIChwKQotICAgICAgcC0+QWRkUmVmKCk7Ci0gICAgaWYgKHB0cl8pCi0gICAgICBwdHJfLT5S
ZWxlYXNlKCk7Ci0gICAgcHRyXyA9IHA7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgc2Nv
cGVkX3JlZnB0cjxUPiYgb3BlcmF0b3I9KGNvbnN0IHNjb3BlZF9yZWZwdHI8VD4mIHIpIHsKLSAg
ICByZXR1cm4gKnRoaXMgPSByLnB0cl87Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4K
LSAgc2NvcGVkX3JlZnB0cjxUPiYgb3BlcmF0b3I9KGNvbnN0IHNjb3BlZF9yZWZwdHI8VT4mIHIp
IHsKLSAgICByZXR1cm4gKnRoaXMgPSByLmdldCgpOwotICB9Ci0KLSAgc2NvcGVkX3JlZnB0cjxU
PiYgb3BlcmF0b3I9KHNjb3BlZF9yZWZwdHI8VD4mJiByKSB7Ci0gICAgc2NvcGVkX3JlZnB0cjxU
PihzdGQ6Om1vdmUocikpLnN3YXAoKnRoaXMpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICBzY29wZWRfcmVmcHRyPFQ+JiBvcGVyYXRvcj0oc2Nv
cGVkX3JlZnB0cjxVPiYmIHIpIHsKLSAgICBzY29wZWRfcmVmcHRyPFQ+KHN0ZDo6bW92ZShyKSku
c3dhcCgqdGhpcyk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgdm9pZCBzd2FwKFQqKiBw
cCkgewotICAgIFQqIHAgPSBwdHJfOwotICAgIHB0cl8gPSAqcHA7Ci0gICAgKnBwID0gcDsKLSAg
fQotCi0gIHZvaWQgc3dhcChzY29wZWRfcmVmcHRyPFQ+JiByKSB7IHN3YXAoJnIucHRyXyk7IH0K
LQotIHByb3RlY3RlZDoKLSAgVCogcHRyXzsKLX07CisvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85
ODg3KTogVGhpcyBpcyBhIGZvcndhcmQgaGVhZGVyIGZvciBiYWNrd2FyZHMKKy8vIGNvbXBhdGli
aWxpdHkuIFJlbW92ZSB3aGVuIGRvd25zdHJlYW0gY2xpZW50cyBhcmUgdXBkYXRlZC4KIAotfSAg
Ly8gbmFtZXNwYWNlIHJ0YworI2luY2x1ZGUgImFwaS9zY29wZWRfcmVmcHRyLmgiCiAKICNlbmRp
ZiAgLy8gUlRDX0JBU0VfU0NPUEVEX1JFRl9QVFJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2No
ZWNrZXJfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2NoZWNrZXJfaW1wbC5jYwppbmRleCAxNjA2OWMyNWY3
YWIwNjQ2NzJkOTZmM2JiMDQyNmIxNDc5MGQyYjQ3Li43MTdjYjk1MDQwODM1YTU3YjE0ODA1YmFi
MjAyNWNmYWI5ODM4NTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyX2ltcGwuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2Vx
dWVuY2VkX3Rhc2tfY2hlY2tlcl9pbXBsLmNjCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8
ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNlbmRpZgogCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tlci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tl
cl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2NoZWNrZXJfdW5pdHRlc3QuY2MKaW5kZXggOTZlNjU1
YmFhZDRmMzdjMzcwNmIyM2I3MmQxNDE4M2ViZmRmMzgyNi4uN2I3MjQ3YzY0YzAxNWZhZDNmMTY3
N2Y4YWM3MTJhZmVjOWI4OTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl91bml0dGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyX3VuaXR0ZXN0LmNjCkBAIC0xMiw2ICsxMiw3IEBA
CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVl
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKQEAgLTQzLDcgKzQ0LDYg
QEAgY2xhc3MgQ2FsbENhbGxlZFNlcXVlbnRpYWxseU9uVGhyZWFkIHsKICAgQ2FsbENhbGxlZFNl
cXVlbnRpYWxseU9uVGhyZWFkKGJvb2wgZXhwZWN0X3RydWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTZXF1ZW5jZWRUYXNrQ2hlY2tlciogc2VxdWVuY2VkX3Rhc2tfY2hlY2tl
cikKICAgICAgIDogZXhwZWN0X3RydWVfKGV4cGVjdF90cnVlKSwKLSAgICAgICAgdGhyZWFkX2hh
c19ydW5fZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAgICAgICAgIHRocmVhZF8oJlJ1biwgdGhpcywg
ImNhbGxfZG9fc3R1ZmZfb25fdGhyZWFkIiksCiAgICAgICAgIHNlcXVlbmNlZF90YXNrX2NoZWNr
ZXJfKHNlcXVlbmNlZF90YXNrX2NoZWNrZXIpIHsKICAgICB0aHJlYWRfLlN0YXJ0KCk7CkBAIC03
Nyw3ICs3Nyw2IEBAIGNsYXNzIERlbGV0ZVNlcXVlbmNlZENoZWNrZXJPblRocmVhZCB7CiAgIGV4
cGxpY2l0IERlbGV0ZVNlcXVlbmNlZENoZWNrZXJPblRocmVhZCgKICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTZXF1ZW5jZWRUYXNrQ2hlY2tlcj4gc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcikKICAgICAg
IDogdGhyZWFkXygmUnVuLCB0aGlzLCAiZGVsZXRlX3NlcXVlbmNlZF90YXNrX2NoZWNrZXJfb25f
dGhyZWFkIiksCi0gICAgICAgIHRocmVhZF9oYXNfcnVuX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAog
ICAgICAgICBzZXF1ZW5jZWRfdGFza19jaGVja2VyXyhzdGQ6Om1vdmUoc2VxdWVuY2VkX3Rhc2tf
Y2hlY2tlcikpIHsKICAgICB0aHJlYWRfLlN0YXJ0KCk7CiAgIH0KQEAgLTExOCw3ICsxMTcsNyBA
QCB2b2lkIFJ1bk1ldGhvZE9uRGlmZmVyZW50VGFza1F1ZXVlKGJvb2wgZXhwZWN0X3RydWUpIHsK
IAogICBzdGF0aWMgY29uc3QgY2hhciBrUXVldWVOYW1lW10gPSAiTWV0aG9kTm90QWxsb3dlZE9u
RGlmZmVyZW50VHEiOwogICBUYXNrUXVldWUgcXVldWUoa1F1ZXVlTmFtZSk7Ci0gIEV2ZW50IGRv
bmVfZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZG9uZV9ldmVudDsKICAgcXVldWUuUG9z
dFRhc2soWyZzZXF1ZW5jZWRfdGFza19jaGVja2VyLCAmZG9uZV9ldmVudCwgZXhwZWN0X3RydWVd
IHsKICAgICBpZiAoZXhwZWN0X3RydWUpCiAgICAgICBFWFBFQ1RfVFJVRShzZXF1ZW5jZWRfdGFz
a19jaGVja2VyLT5DYWxsZWRTZXF1ZW50aWFsbHkoKSk7CkBAIC0xMzUsNyArMTM0LDcgQEAgdm9p
ZCBEZXRhY2hUaGVuQ2FsbEZyb21EaWZmZXJlbnRUYXNrUXVldWUoYm9vbCBleHBlY3RfdHJ1ZSkg
ewogCiAgIHNlcXVlbmNlZF90YXNrX2NoZWNrZXItPkRldGFjaCgpOwogCi0gIEV2ZW50IGRvbmVf
ZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZG9uZV9ldmVudDsKICAgVGFza1F1ZXVlIHF1
ZXVlMSgiRGV0YWNoVGhlbkNhbGxGcm9tRGlmZmVyZW50VGFza1F1ZXVlSW1wbDEiKTsKICAgcXVl
dWUxLlBvc3RUYXNrKFsmc2VxdWVuY2VkX3Rhc2tfY2hlY2tlciwgJmRvbmVfZXZlbnRdIHsKICAg
ICBFWFBFQ1RfVFJVRShzZXF1ZW5jZWRfdGFza19jaGVja2VyLT5DYWxsZWRTZXF1ZW50aWFsbHko
KSk7CkBAIC0xOTMsNyArMTkyLDcgQEAgVEVTVChTZXF1ZW5jZWRUYXNrQ2hlY2tlclRlc3QsIERl
dGFjaEZyb21UaHJlYWRBbmRVc2VPblRhc2tRdWV1ZSkgewogICBzZXF1ZW5jZWRfdGFza19jaGVj
a2VyLT5EZXRhY2goKTsKICAgc3RhdGljIGNvbnN0IGNoYXIga1F1ZXVlTmFtZVtdID0gIkRldGFj
aEZyb21UaHJlYWRBbmRVc2VPblRhc2tRdWV1ZSI7CiAgIFRhc2tRdWV1ZSBxdWV1ZShrUXVldWVO
YW1lKTsKLSAgRXZlbnQgZG9uZV9ldmVudChmYWxzZSwgZmFsc2UpOworICBFdmVudCBkb25lX2V2
ZW50OwogICBxdWV1ZS5Qb3N0VGFzayhbJnNlcXVlbmNlZF90YXNrX2NoZWNrZXIsICZkb25lX2V2
ZW50XSB7CiAgICAgRVhQRUNUX1RSVUUoc2VxdWVuY2VkX3Rhc2tfY2hlY2tlci0+Q2FsbGVkU2Vx
dWVudGlhbGx5KCkpOwogICAgIGRvbmVfZXZlbnQuU2V0KCk7CkBAIC0yMDMsNyArMjAyLDcgQEAg
VEVTVChTZXF1ZW5jZWRUYXNrQ2hlY2tlclRlc3QsIERldGFjaEZyb21UaHJlYWRBbmRVc2VPblRh
c2tRdWV1ZSkgewogCiBURVNUKFNlcXVlbmNlZFRhc2tDaGVja2VyVGVzdCwgRGV0YWNoRnJvbVRh
c2tRdWV1ZUFuZFVzZU9uVGhyZWFkKSB7CiAgIFRhc2tRdWV1ZSBxdWV1ZSgiRGV0YWNoRnJvbVRh
c2tRdWV1ZUFuZFVzZU9uVGhyZWFkIik7Ci0gIEV2ZW50IGRvbmVfZXZlbnQoZmFsc2UsIGZhbHNl
KTsKKyAgRXZlbnQgZG9uZV9ldmVudDsKICAgcXVldWUuUG9zdFRhc2soWyZkb25lX2V2ZW50XSB7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlcXVlbmNlZFRhc2tDaGVja2VyPiBzZXF1ZW5jZWRfdGFz
a19jaGVja2VyKAogICAgICAgICBuZXcgU2VxdWVuY2VkVGFza0NoZWNrZXIoKSk7CkBAIC0yNzEs
NyArMjcwLDcgQEAgdm9pZCBUZXN0QW5ub3RhdGlvbnNPbldyb25nUXVldWUoKSB7CiAgIFRlc3RB
bm5vdGF0aW9ucyBhbm5vdGF0aW9uczsKICAgc3RhdGljIGNvbnN0IGNoYXIga1F1ZXVlTmFtZVtd
ID0gIlRlc3RBbm5vdGF0aW9uc09uV3JvbmdRdWV1ZURlYnVnIjsKICAgVGFza1F1ZXVlIHF1ZXVl
KGtRdWV1ZU5hbWUpOwotICBFdmVudCBkb25lX2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50
IGRvbmVfZXZlbnQ7CiAgIHF1ZXVlLlBvc3RUYXNrKFsmYW5ub3RhdGlvbnMsICZkb25lX2V2ZW50
XSB7CiAgICAgYW5ub3RhdGlvbnMuTW9kaWZ5VGVzdFZhcigpOwogICAgIGRvbmVfZXZlbnQuU2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zaWduYWx0aHJlYWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zaWduYWx0aHJlYWQuY2MKaW5kZXggZWI3OWRjODRmZThl
NTQ2NWRhYzFlZTZlODk0NGQwYmU3MWI0ZWZiNi4uNWRkOTM4NzkzMTVjMzllYWQwZWYwNjVmZjNj
NGY5MjFiOTcxZjhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2lnbmFsdGhyZWFkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NpZ25hbHRocmVhZC5jYwpAQCAt
MTAsOCArMTAsMTMgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL3NpZ25hbHRocmVhZC5oIgogCisj
aW5jbHVkZSA8bWVtb3J5PgorCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2Uvc29ja2V0c2VydmVyLmgiCiAKIG5hbWVzcGFjZSBydGMgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zaWduYWx0aHJl
YWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3NpZ25hbHRocmVhZC5oCmluZGV4IDAyMWNmNGQ3OGRmOGU0YTM1ZGI4ZDZiMzcyNzg3YmZjMTA3
ODMwZDMuLjkyMDhlMmMyNDY3Nzg3NTM3ZTA4M2I1YWQ5ZjczYjVmODI0NWQzNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Np
Z25hbHRocmVhZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NpZ25hbHRocmVhZC5oCkBAIC0xNSw5ICsxNSwxMiBAQAogCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdp
Yy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlaGFu
ZGxlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3RocmVhZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCiBu
YW1lc3BhY2UgcnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0LmNjCmluZGV4IGE5NzQ5YTQ3M2Vl
MTE4MWZlNWM5ODA0ZTgzMTQxOTdiYzRjYjFiMWYuLmYxOWIzNDQxMmY0YTU4Zjk2ZGMxYTAxNTVl
ZTIxMDIyNjBmYjViMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXQuY2MKQEAgLTEyLDE2ICsxMiw0
IEBACiAKIG5hbWVzcGFjZSBydGMgewogCi1QYWNrZXRJbmZvOjpQYWNrZXRJbmZvKCkgPSBkZWZh
dWx0OwotUGFja2V0SW5mbzo6UGFja2V0SW5mbyhjb25zdCBQYWNrZXRJbmZvJiBpbmZvKSA9IGRl
ZmF1bHQ7Ci1QYWNrZXRJbmZvOjp+UGFja2V0SW5mbygpID0gZGVmYXVsdDsKLQotU2VudFBhY2tl
dDo6U2VudFBhY2tldCgpID0gZGVmYXVsdDsKLVNlbnRQYWNrZXQ6OlNlbnRQYWNrZXQoaW50NjRf
dCBwYWNrZXRfaWQsIGludDY0X3Qgc2VuZF90aW1lX21zKQotICAgIDogcGFja2V0X2lkKHBhY2tl
dF9pZCksIHNlbmRfdGltZV9tcyhzZW5kX3RpbWVfbXMpIHt9Ci1TZW50UGFja2V0OjpTZW50UGFj
a2V0KGludDY0X3QgcGFja2V0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNl
bmRfdGltZV9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRJbmZv
JiBpbmZvKQotICAgIDogcGFja2V0X2lkKHBhY2tldF9pZCksIHNlbmRfdGltZV9tcyhzZW5kX3Rp
bWVfbXMpLCBpbmZvKGluZm8pIHt9Ci0KIH0gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tl
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c29ja2V0LmgKaW5kZXggYjgyOTBiYjEzOWIyZTY5YTU3YjIwNzRlYTU3NjM1ODlkNDA2NjljZi4u
ZTdlODIxMDhjZDI5ZDJhYmRiMzE5YmQyMzZkOWI2NDc2MTFhYzUxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c29ja2V0LmgKQEAgLTI1LDggKzI1LDggQEAKICNpbmNsdWRlICJydGNfYmFzZS93aW4zMi5oIgog
I2VuZGlmCiAKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdvcmsvc2Vu
dF9wYWNrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCiAKIC8vIFJh
dGhlciB0aGFuIGNvbnZlcnRpbmcgZXJyb3JzIGludG8gYSBwcml2YXRlIG5hbWVzcGFjZSwKQEAg
LTEyMyw1MCArMTIzLDYgQEAgaW5saW5lIGJvb2wgSXNCbG9ja2luZ0Vycm9yKGludCBlKSB7CiAg
IHJldHVybiAoZSA9PSBFV09VTERCTE9DSykgfHwgKGUgPT0gRUFHQUlOKSB8fCAoZSA9PSBFSU5Q
Uk9HUkVTUyk7CiB9CiAKLWVudW0gY2xhc3MgUGFja2V0VHlwZSB7Ci0gIGtVbmtub3duLAotICBr
RGF0YSwKLSAga0ljZUNvbm5lY3Rpdml0eUNoZWNrLAotICBrSWNlQ29ubmVjdGl2aXR5Q2hlY2tS
ZXNwb25zZSwKLSAga1N0dW5NZXNzYWdlLAotICBrVHVybk1lc3NhZ2UsCi19OwotCi1lbnVtIGNs
YXNzIFBhY2tldEluZm9Qcm90b2NvbFR5cGUgewotICBrVW5rbm93biwKLSAga1VkcCwKLSAga1Rj
cCwKLSAga1NzbHRjcCwKLSAga1RscywKLX07Ci0KLXN0cnVjdCBQYWNrZXRJbmZvIHsKLSAgUGFj
a2V0SW5mbygpOwotICBQYWNrZXRJbmZvKGNvbnN0IFBhY2tldEluZm8mIGluZm8pOwotICB+UGFj
a2V0SW5mbygpOwotCi0gIFBhY2tldFR5cGUgcGFja2V0X3R5cGUgPSBQYWNrZXRUeXBlOjprVW5r
bm93bjsKLSAgUGFja2V0SW5mb1Byb3RvY29sVHlwZSBwcm90b2NvbCA9IFBhY2tldEluZm9Qcm90
b2NvbFR5cGU6OmtVbmtub3duOwotICAvLyBBIHVuaXF1ZSBpZCBhc3NpZ25lZCBieSB0aGUgbmV0
d29yayBtYW5hZ2VyLCBhbmQgYWJzbDo6bnVsbG9wdCBpZiBub3Qgc2V0LgotICBhYnNsOjpvcHRp
b25hbDx1aW50MTZfdD4gbmV0d29ya19pZDsKLSAgc2l6ZV90IHBhY2tldF9zaXplX2J5dGVzID0g
MDsKLSAgc2l6ZV90IHR1cm5fb3ZlcmhlYWRfYnl0ZXMgPSAwOwotICBTb2NrZXRBZGRyZXNzIGxv
Y2FsX3NvY2tldF9hZGRyZXNzOwotICBTb2NrZXRBZGRyZXNzIHJlbW90ZV9zb2NrZXRfYWRkcmVz
czsKLX07Ci0KLXN0cnVjdCBTZW50UGFja2V0IHsKLSAgU2VudFBhY2tldCgpOwotICBTZW50UGFj
a2V0KGludDY0X3QgcGFja2V0X2lkLCBpbnQ2NF90IHNlbmRfdGltZV9tcyk7Ci0gIFNlbnRQYWNr
ZXQoaW50NjRfdCBwYWNrZXRfaWQsCi0gICAgICAgICAgICAgaW50NjRfdCBzZW5kX3RpbWVfbXMs
Ci0gICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRJbmZvJiBpbmZvKTsKLQotICBpbnQ2NF90
IHBhY2tldF9pZCA9IC0xOwotICBpbnQ2NF90IHNlbmRfdGltZV9tcyA9IC0xOwotICBydGM6OlBh
Y2tldEluZm8gaW5mbzsKLX07Ci0KIC8vIEdlbmVyYWwgaW50ZXJmYWNlIGZvciB0aGUgc29ja2V0
IGltcGxlbWVudGF0aW9ucyBvZiB2YXJpb3VzIG5ldHdvcmtzLiAgVGhlCiAvLyBtZXRob2RzIG1h
dGNoIHRob3NlIG9mIG5vcm1hbCBVTklYIHNvY2tldHMgdmVyeSBjbG9zZWx5LgogY2xhc3MgU29j
a2V0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRhcHRlcnMuY2MKaW5kZXggYWNkOWI2
MzM4NThjODgxNGY2ZDRiOGY4NmNhMWQ5ZDNkNTE4NGU4MS4uOTQ1MTkyODg5MTQyYThlMDRlZDNm
OWQzZDc4Y2FiMmRlZjg1MmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRhcHRlcnMuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRhcHRl
cnMuY2MKQEAgLTEzLDI0ICsxMywyOSBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxlcnJuby5oPgor
I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5n
Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgogCiAjaWYgZGVmaW5lZChXRUJSVENfV0lOKQogI2luY2x1
ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3aW5zb2NrMi5oPgogI2luY2x1ZGUgPHdzMnRjcGlw
Lmg+CisKICNkZWZpbmUgU0VDVVJJVFlfV0lOMzIKICNpbmNsdWRlIDxzZWN1cml0eS5oPgogI2Vu
ZGlmCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0
Y2guaCIKKyNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9i
eXRlYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvaHR0cGNvbW1vbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9zb2NrZXRhZGFwdGVycy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmlu
Z2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3pl
cm9fbWVtb3J5LmgiCkBAIC00NTcsNyArNDYyLDcgQEAgdm9pZCBBc3luY0h0dHBzUHJveHlTb2Nr
ZXQ6OlByb2Nlc3NMaW5lKGNoYXIqIGRhdGEsIHNpemVfdCBsZW4pIHsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgfSBlbHNlIGlmICgoc3RhdGVfID09IFBTX0FVVEhFTlRJQ0FURSkgJiYKLSAg
ICAgICAgICAgICAoX3N0cm5pY21wKGRhdGEsICJQcm94eS1BdXRoZW50aWNhdGU6IiwgMTkpID09
IDApKSB7CisgICAgICAgICAgICAgYWJzbDo6U3RhcnRzV2l0aElnbm9yZUNhc2UoZGF0YSwgIlBy
b3h5LUF1dGhlbnRpY2F0ZToiKSkgewogICAgIHN0ZDo6c3RyaW5nIHJlc3BvbnNlLCBhdXRoX21l
dGhvZDsKICAgICBzd2l0Y2ggKEh0dHBBdXRoZW50aWNhdGUoZGF0YSArIDE5LCBsZW4gLSAxOSwg
cHJveHlfLCAiQ09OTkVDVCIsICIvIiwgdXNlcl8sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhc3NfLCBjb250ZXh0XywgcmVzcG9uc2UsIGF1dGhfbWV0aG9kKSkgewpAQCAtNDg1LDEy
ICs0OTAsMTIgQEAgdm9pZCBBc3luY0h0dHBzUHJveHlTb2NrZXQ6OlByb2Nlc3NMaW5lKGNoYXIq
IGRhdGEsIHNpemVfdCBsZW4pIHsKICAgICAgICAgdW5rbm93bl9tZWNoYW5pc21zXy5jbGVhcigp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gIH0gZWxzZSBpZiAoX3N0cm5pY21wKGRhdGEsICJD
b250ZW50LUxlbmd0aDoiLCAxNSkgPT0gMCkgeworICB9IGVsc2UgaWYgKGFic2w6OlN0YXJ0c1dp
dGhJZ25vcmVDYXNlKGRhdGEsICJDb250ZW50LUxlbmd0aDoiKSkgewogICAgIGNvbnRlbnRfbGVu
Z3RoXyA9IHN0cnRvdWwoZGF0YSArIDE1LCAwLCAwKTsKLSAgfSBlbHNlIGlmIChfc3RybmljbXAo
ZGF0YSwgIlByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUiLCAyOCkgPT0gMCkgeworICB9IGVs
c2UgaWYgKGFic2w6OlN0YXJ0c1dpdGhJZ25vcmVDYXNlKGRhdGEsICJQcm94eS1Db25uZWN0aW9u
OiBLZWVwLUFsaXZlIikpIHsKICAgICBleHBlY3RfY2xvc2VfID0gZmFsc2U7CiAgICAgLyoKLSAg
fSBlbHNlIGlmIChfc3RybmljbXAoZGF0YSwgIkNvbm5lY3Rpb246IGNsb3NlIiwgMTcpID09IDAp
IHsKKyAgfSBlbHNlIGlmIChhYnNsOjpTdGFydHNXaXRoSWdub3JlQ2FzZShkYXRhLCAiQ29ubmVj
dGlvbjogY2xvc2UiKSB7CiAgICAgZXhwZWN0X2Nsb3NlXyA9IHRydWU7CiAgICAgKi8KICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvc29ja2V0YWRhcHRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmgKaW5kZXggYWQ4OGZlNmI2ZmI4Y2Yy
MDAzYmVlZjgxNTM5YzNlMjIyMzgyZDEwZi4uMDYyZjc1YzNmZWIxZmZmYzMwMDk0NDE0NDcxOWVl
ZTUyMzhhNzk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRhcHRlcnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGFwdGVycy5oCkBAIC0x
MSwxMyArMTEsMTEgQEAKICNpZm5kZWYgUlRDX0JBU0VfU09DS0VUQURBUFRFUlNfSF8KICNkZWZp
bmUgUlRDX0JBU0VfU09DS0VUQURBUFRFUlNfSF8KIAotI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRl
IDxzdHJpbmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9hc3luY3NvY2tldC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcnlwdHN0
cmluZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHJ0YyB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkZHJlc3MuaAppbmRleCBiZmY4ZTc2NDk1ZWI3
NGJjYTU4OTgyNGI4ZWQ5MzAyMWNjZjIwYjIxLi5iMWE1MmI5MzcxNmE4ZTI0Y2EyOGI3ZTVkZWQx
NWVkOTk1ZWZkOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oCkBAIC0x
NSw3ICsxNSw2IEBACiAjaWZkZWYgVU5JVF9URVNUCiAjaW5jbHVkZSA8b3N0cmVhbT4gIC8vIG5v
LXByZXN1Ym1pdC1jaGVjayBUT0RPKHdlYnJ0Yzo4OTgyKQogI2VuZGlmICAgICAgICAgICAgICAv
LyBVTklUX1RFU1QKLSNpbmNsdWRlIDx2ZWN0b3I+CiAjaW5jbHVkZSAicnRjX2Jhc2UvaXBhZGRy
ZXNzLmgiCiAKICN1bmRlZiBTZXRQb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGRyZXNzcGFpci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRk
cmVzc3BhaXIuaAppbmRleCA1ZmYxNDhhNzVkODc2MDRlMWRiMWZjNjFkODQ5MGMxZDJkZjcyMmU5
Li42NjkxMzg2ZDNhYmZmOGI5ZThlNDMwYzNiNzM1NWQyOTQ3OWY5ZWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRh
ZGRyZXNzcGFpci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NvY2tldGFkZHJlc3NwYWlyLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5k
ZWYgUlRDX0JBU0VfU09DS0VUQUREUkVTU1BBSVJfSF8KICNkZWZpbmUgUlRDX0JBU0VfU09DS0VU
QUREUkVTU1BBSVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCiAjaW5jbHVkZSAicnRjX2Jh
c2Uvc29ja2V0YWRkcmVzcy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldHN0cmVh
bS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3NvY2tldHN0cmVhbS5jYwppbmRleCAyZWExY2VjMGFjNzM2ZDM1NTAxMTAzZWRhMmVkMDZlODE4
MTU3NGVjLi44OTc4NDA0Y2Y0NWYwMmQ5ZDA5MDE2YTZmN2MxNTQ5OWQyYWJmNDc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9z
b2NrZXRzdHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvc29ja2V0c3RyZWFtLmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc29ja2V0c3RyZWFtLmgiCiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3NzbGFkYXB0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NzbGFkYXB0ZXIuaAppbmRleCA0ODQzZDI2NGZjY2NkMzY2ZDQ4MGY2NDM4
NjE0MTAzYjllYTk3ODViLi43ZWJlZGNhZGYwMjZmZWY5YWI5YjFjMTMzYWQzNTk4YTM3NTRjZTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zc2xhZGFwdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsYWRhcHRlci5oCkBAIC0xNiw2ICsxNiw3IEBACiAKICNp
bmNsdWRlICJydGNfYmFzZS9hc3luY3NvY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNl
cnRpZmljYXRlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyLmgiCiAKIG5hbWVzcGFjZSBydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c3NsYWRhcHRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3NzbGFkYXB0ZXJfdW5pdHRlc3QuY2MKaW5kZXggZWM1MzJiMWM0
NDI2MThmZjJkNzRmNTU4ZDU2YzYwMmY2ZmRlMjgwOS4uYzg0YzY2OGM3ZTFhODEyODFhZjg5NGYy
NmUwNWZiNDVhZmI4NWZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsYWRhcHRlcl91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xhZGFwdGVy
X3VuaXR0ZXN0LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9p
cGFkZHJlc3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc29ja2V0c3RyZWFtLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsYWRhcHRl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5LmgiCkBAIC0yNjYsNyArMjY3LDcg
QEAgY2xhc3MgU1NMQWRhcHRlclRlc3REdW1teVNlcnZlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNf
c2xvdHM8PiB7CiAgICAgLy8gKGUuZy4gYSBXZWJSVEMtYmFzZWQgYXBwbGljYXRpb24gYW5kIGFu
IFJGQyA1NzY2IFRVUk4gc2VydmVyKSwgd2hlcmUKICAgICAvLyBjbGllbnRzIGFyZSBub3QgcmVx
dWlyZWQgdG8gcHJvdmlkZSBhIGNlcnRpZmljYXRlIGR1cmluZyBoYW5kc2hha2UuCiAgICAgLy8g
QWNjb3JkaW5nbHksIHdlIG11c3QgZGlzYWJsZSBjbGllbnQgYXV0aGVudGljYXRpb24gaGVyZS4K
LSAgICBzc2xfc3RyZWFtX2FkYXB0ZXJfLT5zZXRfY2xpZW50X2F1dGhfZW5hYmxlZChmYWxzZSk7
CisgICAgc3NsX3N0cmVhbV9hZGFwdGVyXy0+U2V0Q2xpZW50QXV0aEVuYWJsZWRGb3JUZXN0aW5n
KGZhbHNlKTsKIAogICAgIHNzbF9zdHJlYW1fYWRhcHRlcl8tPlNldElkZW50aXR5KHNzbF9pZGVu
dGl0eV8tPkdldFJlZmVyZW5jZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xjZXJ0aWZp
Y2F0ZS5jYwppbmRleCA5YTM4ZmMwMzg0YjcwNDk0MmEwZjI4ZTg3YTEzNzAyOTdiYzI5Y2Q1Li45
MzQ4NDhmYjczMDQ1N2IzOTc4ZjkxYTE3MmNkZWQ2Nzc1MWVlYjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xjZXJ0aWZp
Y2F0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5jYwpAQCAtMTAsMTMgKzEwLDEyIEBACiAKICNpbmNsdWRl
ICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgogCi0jaW5jbHVkZSA8Y3RpbWU+CisjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAj
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL29w
ZW5zc2xjZXJ0aWZpY2F0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGZpbmdlcnByaW50Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0L2Jhc2U2NC5oIgpAQCAtMzEs
NyArMzAsNyBAQCBTU0xDZXJ0aWZpY2F0ZVN0YXRzOjpTU0xDZXJ0aWZpY2F0ZVN0YXRzKAogICAg
IHN0ZDo6c3RyaW5nJiYgZmluZ2VycHJpbnQsCiAgICAgc3RkOjpzdHJpbmcmJiBmaW5nZXJwcmlu
dF9hbGdvcml0aG0sCiAgICAgc3RkOjpzdHJpbmcmJiBiYXNlNjRfY2VydGlmaWNhdGUsCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlU3RhdHM+JiYgaXNzdWVyKQorICAgIHN0ZDo6
dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZVN0YXRzPiBpc3N1ZXIpCiAgICAgOiBmaW5nZXJwcmlu
dChzdGQ6Om1vdmUoZmluZ2VycHJpbnQpKSwKICAgICAgIGZpbmdlcnByaW50X2FsZ29yaXRobShz
dGQ6Om1vdmUoZmluZ2VycHJpbnRfYWxnb3JpdGhtKSksCiAgICAgICBiYXNlNjRfY2VydGlmaWNh
dGUoc3RkOjptb3ZlKGJhc2U2NF9jZXJ0aWZpY2F0ZSkpLApAQCAtNTUsOCArNTQsOCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGVTdGF0cz4gU1NMQ2VydGlmaWNhdGU6OkdldFN0YXRz
KCkgY29uc3QgewogICAvLyB8U1NMQ2VydGlmaWNhdGU6OkdldFNpZ25hdHVyZURpZ2VzdEFsZ29y
aXRobXwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUKICAgLy8gaW1wbGVtZW50YXRpb24gb2YgfFNT
TENlcnRpZmljYXRlOjpDb21wdXRlRGlnZXN0fC4gVGhpcyBjdXJyZW50bHkgaGFwcGVucwogICAv
LyB3aXRoIE1ENS0gYW5kIFNIQS0yMjQtc2lnbmVkIGNlcnRpZmljYXRlcyB3aGVuIGxpbmtlZCB0
byBsaWJOU1MuCi0gIHN0ZDo6dW5pcXVlX3B0cjxTU0xGaW5nZXJwcmludD4gc3NsX2ZpbmdlcnBy
aW50KAotICAgICAgU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZShkaWdlc3RfYWxnb3JpdGhtLCB0aGlz
KSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxTU0xGaW5nZXJwcmludD4gc3NsX2ZpbmdlcnByaW50ID0K
KyAgICAgIFNTTEZpbmdlcnByaW50OjpDcmVhdGUoZGlnZXN0X2FsZ29yaXRobSwgKnRoaXMpOwog
ICBpZiAoIXNzbF9maW5nZXJwcmludCkKICAgICByZXR1cm4gbnVsbHB0cjsKICAgc3RkOjpzdHJp
bmcgZmluZ2VycHJpbnQgPSBzc2xfZmluZ2VycHJpbnQtPkdldFJmYzQ1NzJGaW5nZXJwcmludCgp
OwpAQCAtNzEsNDkgKzcwLDMwIEBAIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZVN0YXRz
PiBTU0xDZXJ0aWZpY2F0ZTo6R2V0U3RhdHMoKSBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoZGVyX2Jhc2U2NCksIG51bGxw
dHIpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IFNTTENlcnRpZmljYXRl
OjpHZXRVbmlxdWVSZWZlcmVuY2UoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVl
KEdldFJlZmVyZW5jZSgpKTsKLX0KLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gU1NMQ2VydENoYWluCiAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCiAKLVNTTENlcnRDaGFpbjo6U1NMQ2VydENoYWluKHN0ZDo6dmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4+IGNlcnRzKQotICAgIDogY2VydHNfKHN0ZDo6
bW92ZShjZXJ0cykpIHt9Ci0KLVNTTENlcnRDaGFpbjo6U1NMQ2VydENoYWluKGNvbnN0IHN0ZDo6
dmVjdG9yPFNTTENlcnRpZmljYXRlKj4mIGNlcnRzKSB7Ci0gIFJUQ19EQ0hFQ0soIWNlcnRzLmVt
cHR5KCkpOwotICBjZXJ0c18ucmVzaXplKGNlcnRzLnNpemUoKSk7Ci0gIHN0ZDo6dHJhbnNmb3Jt
KAotICAgICAgY2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGNlcnRzXy5iZWdpbigpLAotICAg
ICAgW10oY29uc3QgU1NMQ2VydGlmaWNhdGUqIGNlcnQpIC0+IHN0ZDo6dW5pcXVlX3B0cjxTU0xD
ZXJ0aWZpY2F0ZT4gewotICAgICAgICByZXR1cm4gY2VydC0+R2V0VW5pcXVlUmVmZXJlbmNlKCk7
Ci0gICAgICB9KTsKK1NTTENlcnRDaGFpbjo6U1NMQ2VydENoYWluKHN0ZDo6dW5pcXVlX3B0cjxT
U0xDZXJ0aWZpY2F0ZT4gc2luZ2xlX2NlcnQpIHsKKyAgY2VydHNfLnB1c2hfYmFjayhzdGQ6Om1v
dmUoc2luZ2xlX2NlcnQpKTsKIH0KIAotU1NMQ2VydENoYWluOjpTU0xDZXJ0Q2hhaW4oY29uc3Qg
U1NMQ2VydGlmaWNhdGUqIGNlcnQpIHsKLSAgY2VydHNfLnB1c2hfYmFjayhjZXJ0LT5HZXRVbmlx
dWVSZWZlcmVuY2UoKSk7Ci19CitTU0xDZXJ0Q2hhaW46OlNTTENlcnRDaGFpbihzdGQ6OnZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+PiBjZXJ0cykKKyAgICA6IGNlcnRzXyhz
dGQ6Om1vdmUoY2VydHMpKSB7fQogCiBTU0xDZXJ0Q2hhaW46OlNTTENlcnRDaGFpbihTU0xDZXJ0
Q2hhaW4mJiByaHMpID0gZGVmYXVsdDsKIAogU1NMQ2VydENoYWluJiBTU0xDZXJ0Q2hhaW46Om9w
ZXJhdG9yPShTU0xDZXJ0Q2hhaW4mJikgPSBkZWZhdWx0OwogCi1TU0xDZXJ0Q2hhaW46On5TU0xD
ZXJ0Q2hhaW4oKSB7fQorU1NMQ2VydENoYWluOjp+U1NMQ2VydENoYWluKCkgPSBkZWZhdWx0Owog
Ci1TU0xDZXJ0Q2hhaW4qIFNTTENlcnRDaGFpbjo6Q29weSgpIGNvbnN0IHsKK3N0ZDo6dW5pcXVl
X3B0cjxTU0xDZXJ0Q2hhaW4+IFNTTENlcnRDaGFpbjo6Q2xvbmUoKSBjb25zdCB7CiAgIHN0ZDo6
dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4+IG5ld19jZXJ0cyhjZXJ0c18u
c2l6ZSgpKTsKLSAgc3RkOjp0cmFuc2Zvcm0oY2VydHNfLmJlZ2luKCksIGNlcnRzXy5lbmQoKSwg
bmV3X2NlcnRzLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgIFtdKGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxTU0xDZXJ0aWZpY2F0ZT4mIGNlcnQpCi0gICAgICAgICAgICAgICAgICAgICAtPiBzdGQ6
OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IHsKLSAgICAgICAgICAgICAgICAgICByZXR1cm4g
Y2VydC0+R2V0VW5pcXVlUmVmZXJlbmNlKCk7Ci0gICAgICAgICAgICAgICAgIH0pOwotICByZXR1
cm4gbmV3IFNTTENlcnRDaGFpbihzdGQ6Om1vdmUobmV3X2NlcnRzKSk7Ci19Ci0KLXN0ZDo6dW5p
cXVlX3B0cjxTU0xDZXJ0Q2hhaW4+IFNTTENlcnRDaGFpbjo6VW5pcXVlQ29weSgpIGNvbnN0IHsK
LSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWUoQ29weSgpKTsKKyAgc3RkOjp0cmFuc2Zvcm0oCisg
ICAgICBjZXJ0c18uYmVnaW4oKSwgY2VydHNfLmVuZCgpLCBuZXdfY2VydHMuYmVnaW4oKSwKKyAg
ICAgIFtdKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4mIGNlcnQpCisgICAg
ICAgICAgLT4gc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiB7IHJldHVybiBjZXJ0LT5D
bG9uZSgpOyB9KTsKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFNTTENlcnRDaGFpbj4oc3Rk
Ojptb3ZlKG5ld19jZXJ0cykpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGVT
dGF0cz4gU1NMQ2VydENoYWluOjpHZXRTdGF0cygpIGNvbnN0IHsKQEAgLTEzNSw3ICsxMTUsOCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGVTdGF0cz4gU1NMQ2VydENoYWluOjpHZXRT
dGF0cygpIGNvbnN0IHsKIH0KIAogLy8gc3RhdGljCi1TU0xDZXJ0aWZpY2F0ZSogU1NMQ2VydGlm
aWNhdGU6OkZyb21QRU1TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV9zdHJpbmcpIHsKK3N0
ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4gU1NMQ2VydGlmaWNhdGU6OkZyb21QRU1TdHJp
bmcoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV9zdHJpbmcpIHsKICAgcmV0dXJuIE9wZW5T
U0xDZXJ0aWZpY2F0ZTo6RnJvbVBFTVN0cmluZyhwZW1fc3RyaW5nKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Ns
Y2VydGlmaWNhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgKaW5kZXggMjljNGRiNThlZjU2YzgwMDM1ZTgzMmNk
MjQyY2FkNzJlOWRjOGRkNC4uZWI4MWMyMDllNGYwYzMyNjU2NjRlMDE1ZDdhNzMzYzQ0ODA2MDBl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oCkBAIC0xNSwxNSArMTUs
MTQgQEAKICNpZm5kZWYgUlRDX0JBU0VfU1NMQ0VSVElGSUNBVEVfSF8KICNkZWZpbmUgUlRDX0JB
U0VfU1NMQ0VSVElGSUNBVEVfSF8KIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxz
dGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgi
CiAKIG5hbWVzcGFjZSBydGMgewogCkBAIC0zMSw3ICszMCw3IEBAIHN0cnVjdCBTU0xDZXJ0aWZp
Y2F0ZVN0YXRzIHsKICAgU1NMQ2VydGlmaWNhdGVTdGF0cyhzdGQ6OnN0cmluZyYmIGZpbmdlcnBy
aW50LAogICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiYgZmluZ2VycHJpbnRfYWxn
b3JpdGhtLAogICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiYgYmFzZTY0X2NlcnRp
ZmljYXRlLAotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZp
Y2F0ZVN0YXRzPiYmIGlzc3Vlcik7CisgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFNTTENlcnRpZmljYXRlU3RhdHM+IGlzc3Vlcik7CiAgIH5TU0xDZXJ0aWZpY2F0ZVN0YXRz
KCk7CiAgIHN0ZDo6c3RyaW5nIGZpbmdlcnByaW50OwogICBzdGQ6OnN0cmluZyBmaW5nZXJwcmlu
dF9hbGdvcml0aG07CkBAIC01NCwxNyArNTMsMTMgQEAgY2xhc3MgU1NMQ2VydGlmaWNhdGUgewog
ICAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNlcnRp
ZmljYXRlIGlzCiAgIC8vIHN0b3JlZCBpbiAqcGVtX2xlbmd0aCBpZiBpdCBpcyBub24tbnVsbCwg
YW5kIG9ubHkgaWYKICAgLy8gcGFyc2luZyB3YXMgc3VjY2Vzc2Z1bC4KLSAgLy8gQ2FsbGVyIGlz
IHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSByZXR1cm5lZCBvYmplY3QuCi0gIHN0YXRpYyBT
U0xDZXJ0aWZpY2F0ZSogRnJvbVBFTVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcGVtX3N0cmlu
Zyk7Ci0gIHZpcnR1YWwgflNTTENlcnRpZmljYXRlKCkge30KKyAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxTU0xDZXJ0aWZpY2F0ZT4gRnJvbVBFTVN0cmluZygKKyAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwZW1fc3RyaW5nKTsKKyAgdmlydHVhbCB+U1NMQ2VydGlmaWNhdGUoKSA9IGRlZmF1bHQ7
CiAKICAgLy8gUmV0dXJucyBhIG5ldyBTU0xDZXJ0aWZpY2F0ZSBvYmplY3QgaW5zdGFuY2Ugd3Jh
cHBpbmcgdGhlIHNhbWUKLSAgLy8gdW5kZXJseWluZyBjZXJ0aWZpY2F0ZSwgaW5jbHVkaW5nIGl0
cyBjaGFpbiBpZiBwcmVzZW50LiAgQ2FsbGVyIGlzCi0gIC8vIHJlc3BvbnNpYmxlIGZvciBmcmVl
aW5nIHRoZSByZXR1cm5lZCBvYmplY3QuIFVzZSBHZXRVbmlxdWVSZWZlcmVuY2UKLSAgLy8gaW5z
dGVhZC4KLSAgdmlydHVhbCBTU0xDZXJ0aWZpY2F0ZSogR2V0UmVmZXJlbmNlKCkgY29uc3QgPSAw
OwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4gR2V0VW5pcXVlUmVmZXJlbmNl
KCkgY29uc3Q7CisgIC8vIHVuZGVybHlpbmcgY2VydGlmaWNhdGUsIGluY2x1ZGluZyBpdHMgY2hh
aW4gaWYgcHJlc2VudC4KKyAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+
IENsb25lKCkgY29uc3QgPSAwOwogCiAgIC8vIFJldHVybnMgYSBQRU0gZW5jb2RlZCBzdHJpbmcg
cmVwcmVzZW50YXRpb24gb2YgdGhlIGNlcnRpZmljYXRlLgogICB2aXJ0dWFsIHN0ZDo6c3RyaW5n
IFRvUEVNU3RyaW5nKCkgY29uc3QgPSAwOwpAQCAtOTUsMTMgKzkwLDEwIEBAIGNsYXNzIFNTTENl
cnRpZmljYXRlIHsKIC8vIFNTTENlcnRDaGFpbiBpcyBhIHNpbXBsZSB3cmFwcGVyIGZvciBhIHZl
Y3RvciBvZiBTU0xDZXJ0aWZpY2F0ZXMuIEl0IHNlcnZlcwogLy8gcHJpbWFyaWx5IHRvIGVuc3Vy
ZSBwcm9wZXIgbWVtb3J5IG1hbmFnZW1lbnQgKGVzcGVjaWFsbHkgZGVsZXRpb24pIG9mIHRoZQog
Ly8gU1NMQ2VydGlmaWNhdGUgcG9pbnRlcnMuCi1jbGFzcyBTU0xDZXJ0Q2hhaW4geworY2xhc3Mg
U1NMQ2VydENoYWluIGZpbmFsIHsKICBwdWJsaWM6CisgIGV4cGxpY2l0IFNTTENlcnRDaGFpbihz
dGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IHNpbmdsZV9jZXJ0KTsKICAgZXhwbGljaXQg
U1NMQ2VydENoYWluKHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4+
IGNlcnRzKTsKLSAgLy8gVGhlc2UgY29uc3RydWN0b3JzIGNvcHkgdGhlIHByb3ZpZGVkIFNTTENl
cnRpZmljYXRlKHMpLCBzbyB0aGUgY2FsbGVyCi0gIC8vIHJldGFpbnMgb3duZXJzaGlwLgotICBl
eHBsaWNpdCBTU0xDZXJ0Q2hhaW4oY29uc3Qgc3RkOjp2ZWN0b3I8U1NMQ2VydGlmaWNhdGUqPiYg
Y2VydHMpOwotICBleHBsaWNpdCBTU0xDZXJ0Q2hhaW4oY29uc3QgU1NMQ2VydGlmaWNhdGUqIGNl
cnQpOwogICAvLyBBbGxvdyBtb3ZlIHNlbWFudGljcyBmb3IgdGhlIG9iamVjdC4KICAgU1NMQ2Vy
dENoYWluKFNTTENlcnRDaGFpbiYmKTsKICAgU1NMQ2VydENoYWluJiBvcGVyYXRvcj0oU1NMQ2Vy
dENoYWluJiYpOwpAQCAtMTE1LDEwICsxMDcsOCBAQCBjbGFzcyBTU0xDZXJ0Q2hhaW4gewogICBj
b25zdCBTU0xDZXJ0aWZpY2F0ZSYgR2V0KHNpemVfdCBwb3MpIGNvbnN0IHsgcmV0dXJuICooY2Vy
dHNfW3Bvc10pOyB9CiAKICAgLy8gUmV0dXJucyBhIG5ldyBTU0xDZXJ0Q2hhaW4gb2JqZWN0IGlu
c3RhbmNlIHdyYXBwaW5nIHRoZSBzYW1lIHVuZGVybHlpbmcKLSAgLy8gY2VydGlmaWNhdGUgY2hh
aW4uICBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlIHJldHVybmVkIG9iamVj
dC4KLSAgU1NMQ2VydENoYWluKiBDb3B5KCkgY29uc3Q7Ci0gIC8vIFNhbWUgYXMgYWJvdmUsIGJ1
dCByZXR1cm5pbmcgYSB1bmlxdWVfcHRyIGZvciBjb252ZW5pZW5jZS4KLSAgc3RkOjp1bmlxdWVf
cHRyPFNTTENlcnRDaGFpbj4gVW5pcXVlQ29weSgpIGNvbnN0OworICAvLyBjZXJ0aWZpY2F0ZSBj
aGFpbi4KKyAgc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRDaGFpbj4gQ2xvbmUoKSBjb25zdDsKIAog
ICAvLyBHZXRzIGluZm9ybWF0aW9uIChmaW5nZXJwcmludCwgZXRjLikgYWJvdXQgdGhpcyBjZXJ0
aWZpY2F0ZSBjaGFpbi4gVGhpcyBpcwogICAvLyB1c2VkIGZvciBjZXJ0aWZpY2F0ZSBzdGF0cywg
c2VlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zc2xmaW5nZXJwcmludC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGZpbmdlcnByaW50LmNjCmluZGV4IGI2NTFhM2Q2
Mjg1MjA1YjU1YTJmYjAzNjc3MTA0YjE1YTk3Yjc2NjIuLmIyOTZkMzNkZGQ5YzQzMTIzYTQxNTRi
OTRiNWYwZjNhODY0YTgxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGZpbmdlcnByaW50LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGZpbmdlcnByaW50
LmNjCkBAIC0xMSw2NyArMTEsODIgQEAKICNpbmNsdWRlICJydGNfYmFzZS9zc2xmaW5nZXJwcmlu
dC5oIgogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVk
ZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9oZWxw
ZXJzLmgiCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNl
cnRpZmljYXRlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKIFNTTEZpbmdl
cnByaW50KiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0
aG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNT
TElkZW50aXR5KiBpZGVudGl0eSkgewotICBpZiAoIWlkZW50aXR5KSB7Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci0gIH0KKyAgcmV0dXJuIENyZWF0ZVVuaXF1ZShhbGdvcml0aG0sICppZGVudGl0eSku
cmVsZWFzZSgpOworfQogCi0gIHJldHVybiBDcmVhdGUoYWxnb3JpdGhtLCAmKGlkZW50aXR5LT5j
ZXJ0aWZpY2F0ZSgpKSk7CitzdGQ6OnVuaXF1ZV9wdHI8U1NMRmluZ2VycHJpbnQ+IFNTTEZpbmdl
cnByaW50OjpDcmVhdGVVbmlxdWUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwK
KyAgICBjb25zdCBydGM6OlNTTElkZW50aXR5JiBpZGVudGl0eSkgeworICByZXR1cm4gQ3JlYXRl
KGFsZ29yaXRobSwgaWRlbnRpdHkuY2VydGlmaWNhdGUoKSk7CiB9CiAKLVNTTEZpbmdlcnByaW50
KiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0aG0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNTTENlcnRp
ZmljYXRlKiBjZXJ0KSB7CitzdGQ6OnVuaXF1ZV9wdHI8U1NMRmluZ2VycHJpbnQ+IFNTTEZpbmdl
cnByaW50OjpDcmVhdGUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKKyAgICBj
b25zdCBydGM6OlNTTENlcnRpZmljYXRlJiBjZXJ0KSB7CiAgIHVpbnQ4X3QgZGlnZXN0X3ZhbFs2
NF07CiAgIHNpemVfdCBkaWdlc3RfbGVuOwotICBib29sIHJldCA9IGNlcnQtPkNvbXB1dGVEaWdl
c3QoYWxnb3JpdGhtLCBkaWdlc3RfdmFsLCBzaXplb2YoZGlnZXN0X3ZhbCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmZGlnZXN0X2xlbik7CisgIGJvb2wgcmV0ID0gY2VydC5D
b21wdXRlRGlnZXN0KGFsZ29yaXRobSwgZGlnZXN0X3ZhbCwgc2l6ZW9mKGRpZ2VzdF92YWwpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGlnZXN0X2xlbik7CiAgIGlmICghcmV0
KSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KLQotICByZXR1cm4gbmV3IFNTTEZpbmdlcnBy
aW50KGFsZ29yaXRobSwgZGlnZXN0X3ZhbCwgZGlnZXN0X2xlbik7CisgIHJldHVybiBhYnNsOjpt
YWtlX3VuaXF1ZTxTU0xGaW5nZXJwcmludD4oCisgICAgICBhbGdvcml0aG0sIEFycmF5Vmlldzxj
b25zdCB1aW50OF90PihkaWdlc3RfdmFsLCBkaWdlc3RfbGVuKSk7CiB9CiAKIFNTTEZpbmdlcnBy
aW50KiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbVJmYzQ1NzIoCiAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGFsZ29yaXRobSwKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZmluZ2VycHJpbnQpIHsK
KyAgcmV0dXJuIENyZWF0ZVVuaXF1ZUZyb21SZmM0NTcyKGFsZ29yaXRobSwgZmluZ2VycHJpbnQp
LnJlbGVhc2UoKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFNTTEZpbmdlcnByaW50PiBTU0xGaW5n
ZXJwcmludDo6Q3JlYXRlVW5pcXVlRnJvbVJmYzQ1NzIoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGFsZ29yaXRobSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZmluZ2VycHJpbnQpIHsKICAgaWYg
KGFsZ29yaXRobS5lbXB0eSgpIHx8ICFydGM6OklzRmlwczE4MERpZ2VzdEFsZ29yaXRobShhbGdv
cml0aG0pKQogICAgIHJldHVybiBudWxscHRyOwogCiAgIGlmIChmaW5nZXJwcmludC5lbXB0eSgp
KQogICAgIHJldHVybiBudWxscHRyOwogCi0gIHNpemVfdCB2YWx1ZV9sZW47CiAgIGNoYXIgdmFs
dWVbcnRjOjpNZXNzYWdlRGlnZXN0OjprTWF4U2l6ZV07Ci0gIHZhbHVlX2xlbiA9IHJ0Yzo6aGV4
X2RlY29kZV93aXRoX2RlbGltaXRlcigKKyAgc2l6ZV90IHZhbHVlX2xlbiA9IHJ0Yzo6aGV4X2Rl
Y29kZV93aXRoX2RlbGltaXRlcigKICAgICAgIHZhbHVlLCBzaXplb2YodmFsdWUpLCBmaW5nZXJw
cmludC5jX3N0cigpLCBmaW5nZXJwcmludC5sZW5ndGgoKSwgJzonKTsKICAgaWYgKCF2YWx1ZV9s
ZW4pCiAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgcmV0dXJuIG5ldyBTU0xGaW5nZXJwcmludChh
bGdvcml0aG0sIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZhbHVlKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZV9sZW4pOworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8
U1NMRmluZ2VycHJpbnQ+KAorICAgICAgYWxnb3JpdGhtLAorICAgICAgQXJyYXlWaWV3PGNvbnN0
IHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZhbHVlKSwgdmFsdWVfbGVuKSk7
CiB9CiAKLVNTTEZpbmdlcnByaW50KiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmlj
YXRlKAotICAgIGNvbnN0IFJUQ0NlcnRpZmljYXRlKiBjZXJ0KSB7CitzdGQ6OnVuaXF1ZV9wdHI8
U1NMRmluZ2VycHJpbnQ+IFNTTEZpbmdlcnByaW50OjpDcmVhdGVGcm9tQ2VydGlmaWNhdGUoCisg
ICAgY29uc3QgUlRDQ2VydGlmaWNhdGUmIGNlcnQpIHsKICAgc3RkOjpzdHJpbmcgZGlnZXN0X2Fs
ZzsKLSAgaWYgKCFjZXJ0LT5zc2xfY2VydGlmaWNhdGUoKS5HZXRTaWduYXR1cmVEaWdlc3RBbGdv
cml0aG0oJmRpZ2VzdF9hbGcpKSB7CisgIGlmICghY2VydC5HZXRTU0xDZXJ0aWZpY2F0ZSgpLkdl
dFNpZ25hdHVyZURpZ2VzdEFsZ29yaXRobSgmZGlnZXN0X2FsZykpIHsKICAgICBSVENfTE9HKExT
X0VSUk9SKQogICAgICAgICA8PCAiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBjZXJ0aWZpY2F0ZSdz
IGRpZ2VzdCBhbGdvcml0aG0iOwogICAgIHJldHVybiBudWxscHRyOwogICB9CiAKLSAgU1NMRmlu
Z2VycHJpbnQqIGZpbmdlcnByaW50ID0gQ3JlYXRlKGRpZ2VzdF9hbGcsIGNlcnQtPmlkZW50aXR5
KCkpOworICBzdGQ6OnVuaXF1ZV9wdHI8U1NMRmluZ2VycHJpbnQ+IGZpbmdlcnByaW50ID0KKyAg
ICAgIENyZWF0ZVVuaXF1ZShkaWdlc3RfYWxnLCAqY2VydC5pZGVudGl0eSgpKTsKICAgaWYgKCFm
aW5nZXJwcmludCkgewogICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRl
IGlkZW50aXR5IGZpbmdlcnByaW50LCBhbGc9IgogICAgICAgICAgICAgICAgICAgICAgIDw8IGRp
Z2VzdF9hbGc7CkBAIC03OSwxMiArOTQsMTQgQEAgU1NMRmluZ2VycHJpbnQqIFNTTEZpbmdlcnBy
aW50OjpDcmVhdGVGcm9tQ2VydGlmaWNhdGUoCiAgIHJldHVybiBmaW5nZXJwcmludDsKIH0KIAor
U1NMRmluZ2VycHJpbnQ6OlNTTEZpbmdlcnByaW50KGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0
aG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlWaWV3PGNvbnN0IHVpbnQ4
X3Q+IGRpZ2VzdF92aWV3KQorICAgIDogYWxnb3JpdGhtKGFsZ29yaXRobSksIGRpZ2VzdChkaWdl
c3Rfdmlldy5kYXRhKCksIGRpZ2VzdF92aWV3LnNpemUoKSkge30KKwogU1NMRmluZ2VycHJpbnQ6
OlNTTEZpbmdlcnByaW50KGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0aG0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogZGlnZXN0X2luLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkaWdlc3RfbGVuKQotICAgIDogYWxnb3JpdGht
KGFsZ29yaXRobSkgewotICBkaWdlc3QuU2V0RGF0YShkaWdlc3RfaW4sIGRpZ2VzdF9sZW4pOwot
fQorICAgIDogU1NMRmluZ2VycHJpbnQoYWxnb3JpdGhtLCBNYWtlQXJyYXlWaWV3KGRpZ2VzdF9p
biwgZGlnZXN0X2xlbikpIHt9CiAKIFNTTEZpbmdlcnByaW50OjpTU0xGaW5nZXJwcmludChjb25z
dCBTU0xGaW5nZXJwcmludCYgZnJvbSkKICAgICA6IGFsZ29yaXRobShmcm9tLmFsZ29yaXRobSks
IGRpZ2VzdChmcm9tLmRpZ2VzdCkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGZpbmdlcnByaW50LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xmaW5nZXJwcmlu
dC5oCmluZGV4IGIyMDRiYzc3ZjMwMDIxMWM3M2Y0YzQ3YzIxNmYzOGIzYjkxZWVlZDkuLmVhMTBl
ZGU3MjA2YmE2ZjM2OTFmOTdmMzkwN2JiMDJmYWUyOTU5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGZpbmdlcnByaW50
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3NsZmluZ2VycHJpbnQuaApAQCAtMTEsMzAgKzExLDQ3IEBACiAjaWZuZGVmIFJUQ19CQVNF
X1NTTEZJTkdFUlBSSU5UX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1NTTEZJTkdFUlBSSU5UX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJp
bmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL3J0Y2NlcnRpZmljYXRlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRp
dHkuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKK2NsYXNzIFJUQ0NlcnRpZmljYXRlOwogY2xhc3Mg
U1NMQ2VydGlmaWNhdGU7CitjbGFzcyBTU0xJZGVudGl0eTsKIAogc3RydWN0IFNTTEZpbmdlcnBy
aW50IHsKKyAgLy8gVE9ETyhzdGV2ZWFudG9uKTogUmVtb3ZlIG9uY2UgZG93bnN0cmVhbSBwcm9q
ZWN0cyBoYXZlIG1vdmVkIG9mZiBvZiB0aGlzLgogICBzdGF0aWMgU1NMRmluZ2VycHJpbnQqIENy
ZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYgYWxnb3JpdGhtLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlNTTElkZW50aXR5KiBpZGVudGl0eSk7CisgIC8vIFRPRE8o
c3RldmVhbnRvbik6IFJlbmFtZSB0byBDcmVhdGUgb25jZSBwcm9qZWN0cyBoYXZlIG1pZ3JhdGVk
LgorICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNTTEZpbmdlcnByaW50PiBDcmVhdGVVbmlxdWUo
CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYWxnb3JpdGhtLAorICAgICAgY29uc3QgcnRjOjpT
U0xJZGVudGl0eSYgaWRlbnRpdHkpOwogCi0gIHN0YXRpYyBTU0xGaW5nZXJwcmludCogQ3JlYXRl
KGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0aG0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6U1NMQ2VydGlmaWNhdGUqIGNlcnQpOworICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFNTTEZpbmdlcnByaW50PiBDcmVhdGUoCisgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgYWxnb3JpdGhtLAorICAgICAgY29uc3QgcnRjOjpTU0xDZXJ0aWZpY2F0ZSYgY2VydCk7CiAK
KyAgLy8gVE9ETyhzdGV2ZWFudG9uKTogUmVtb3ZlIG9uY2UgZG93bnN0cmVhbSBwcm9qZWN0cyBo
YXZlIG1vdmVkIG9mZiBvZiB0aGlzLgogICBzdGF0aWMgU1NMRmluZ2VycHJpbnQqIENyZWF0ZUZy
b21SZmM0NTcyKGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0aG0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbmdlcnByaW50
KTsKKyAgLy8gVE9ETyhzdGV2ZWFudG9uKTogUmVuYW1lIHRvIENyZWF0ZUZyb21SZmM0NTcyIG9u
Y2UgcHJvamVjdHMgaGF2ZSBtaWdyYXRlZC4KKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTU0xG
aW5nZXJwcmludD4gQ3JlYXRlVW5pcXVlRnJvbVJmYzQ1NzIoCisgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgYWxnb3JpdGhtLAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbmdlcnByaW50KTsK
IAogICAvLyBDcmVhdGVzIGEgZmluZ2VycHJpbnQgZnJvbSBhIGNlcnRpZmljYXRlLCB1c2luZyB0
aGUgc2FtZSBkaWdlc3QgYWxnb3JpdGhtCiAgIC8vIGFzIHRoZSBjZXJ0aWZpY2F0ZSdzIHNpZ25h
dHVyZS4KLSAgc3RhdGljIFNTTEZpbmdlcnByaW50KiBDcmVhdGVGcm9tQ2VydGlmaWNhdGUoY29u
c3QgUlRDQ2VydGlmaWNhdGUqIGNlcnQpOworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNTTEZp
bmdlcnByaW50PiBDcmVhdGVGcm9tQ2VydGlmaWNhdGUoCisgICAgICBjb25zdCBSVENDZXJ0aWZp
Y2F0ZSYgY2VydCk7CiAKKyAgU1NMRmluZ2VycHJpbnQoY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29y
aXRobSwKKyAgICAgICAgICAgICAgICAgQXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IGRpZ2VzdF92
aWV3KTsKKyAgLy8gVE9ETyhzdGV2ZWFudG9uKTogUmVtb3ZlIG9uY2UgZG93bnN0cmVhbSBwcm9q
ZWN0cyBoYXZlIG1vdmVkIG9mZiBvZiB0aGlzLgogICBTU0xGaW5nZXJwcmludChjb25zdCBzdGQ6
OnN0cmluZyYgYWxnb3JpdGhtLAogICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBkaWdl
c3RfaW4sCiAgICAgICAgICAgICAgICAgIHNpemVfdCBkaWdlc3RfbGVuKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlk
ZW50aXR5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvc3NsaWRlbnRpdHkuY2MKaW5kZXggODIzZmMzODhhM2NlZjFiODE1MGY2MGNmNjk4Yjg3
MzZhMTY0MmIzNy4uNDFlYjM1ZDVmNTJiNjczN2U3MWI5MzM2MTQwZWI3M2NjOTc3MWEyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3NsaWRlbnRpdHkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvc3NsaWRlbnRpdHkuY2MKQEAgLTExLDIwICsxMSw5NSBAQAogLy8g
SGFuZGxpbmcgb2YgY2VydGlmaWNhdGVzIGFuZCBrZXlwYWlycyBmb3IgU1NMU3RyZWFtQWRhcHRl
cidzIHBlZXIgbW9kZS4KICNpbmNsdWRlICJydGNfYmFzZS9zc2xpZGVudGl0eS5oIgogCi0jaW5j
bHVkZSA8Y3RpbWU+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgogI2lu
Y2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaW5jbHVkZSAiYWJzbC9tZW1v
cnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xpZGVudGl0eS5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL3NzbGZpbmdlcnByaW50LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
c3NsY2VydGlmaWNhdGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWls
ZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0L2Jhc2U2NC5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIAorLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLworLy8gSGVscGVyIEZ1bmN0aW9ucworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCituYW1lc3Bh
Y2UgeworLy8gUmVhZCB8bnwgYnl0ZXMgZnJvbSBBU04xIG51bWJlciBzdHJpbmcgYXQgKnxwcHwg
YW5kIHJldHVybiB0aGUgbnVtZXJpYyB2YWx1ZS4KKy8vIFVwZGF0ZSAqfHBwfCBhbmQgKnxucHwg
dG8gcmVmbGVjdCBudW1iZXIgb2YgcmVhZCBieXRlcy4KKy8vIFRPRE8oYnVncy53ZWJydGMub3Jn
Lzk4NjApIC0gUmVtb3ZlIHRoaXMgY29kZS4KK2lubGluZSBpbnQgQVNOMVJlYWRJbnQoY29uc3Qg
dW5zaWduZWQgY2hhcioqIHBwLCBzaXplX3QqIG5wLCBzaXplX3QgbikgeworICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBwID0gKnBwOworICBpbnQgeCA9IDA7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbjsgaSsrKSB7CisgICAgeCA9IDEwICogeCArIHBbaV0gLSAnMCc7CisgIH0KKyAgKnBwID0g
cCArIG47CisgICpucCA9ICpucCAtIG47CisgIHJldHVybiB4OworfQorCit9ICAvLyBuYW1lc3Bh
Y2UKKworLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTg2MCkgLSBSZW1vdmUgdGhpcyBjb2RlLgor
aW50NjRfdCBBU04xVGltZVRvU2VjKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHMsIHNpemVfdCBsZW5n
dGgsIGJvb2wgbG9uZ19mb3JtYXQpIHsKKyAgc2l6ZV90IGJ5dGVzX2xlZnQgPSBsZW5ndGg7Cisg
IC8vIE1ha2Ugc3VyZSB0aGUgc3RyaW5nIGVuZHMgd2l0aCBaLiAgRG9pbmcgaXQgaGVyZSBwcm90
ZWN0cyB0aGUgc3Ryc3BuIGNhbGwKKyAgLy8gZnJvbSBydW5uaW5nIG9mZiB0aGUgZW5kIG9mIHRo
ZSBzdHJpbmcgaW4gWidzIGFic2Vuc2UuCisgIGlmIChsZW5ndGggPT0gMCB8fCBzW2xlbmd0aCAt
IDFdICE9ICdaJykgeworICAgIHJldHVybiAtMTsKKyAgfQorICAvLyBNYWtlIHN1cmUgd2Ugb25s
eSBoYXZlIEFTQ0lJIGRpZ2l0cyBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gY2x1dHRlciB0aGUK
KyAgLy8gY29kZSBiZWxvdyBhbmQgQVNOMVJlYWRJbnQgd2l0aCBlcnJvciBjaGVja2luZy4KKyAg
c2l6ZV90IG4gPSBzdHJzcG4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocyksICIwMTIz
NDU2Nzg5Iik7CisgIGlmIChuICsgMSAhPSBsZW5ndGgpIHsKKyAgICByZXR1cm4gLTE7CisgIH0K
KyAgLy8gUmVhZCBvdXQgQVNOMSB5ZWFyLCBpbiBlaXRoZXIgMi1jaGFyICJVVENUSU1FIiBvciA0
LWNoYXIgIkdFTkVSQUxJWkVEVElNRSIKKyAgLy8gZm9ybWF0LiAgQm90aCBmb3JtYXQgdXNlIFVU
QyBpbiB0aGlzIGNvbnRleHQuCisgIGludCB5ZWFyID0gMDsKKyAgaWYgKGxvbmdfZm9ybWF0KSB7
CisgICAgLy8gQVNOMSBmb3JtYXQ6IHl5eXltbWRkaGhbbW1bc3NbLmZmZl1dXVogd2hlcmUgdGhl
IFogaXMgbGl0ZXJhbCwgYnV0CisgICAgLy8gUkZDIDUyODAgcmVxdWlyZXMgdXMgdG8gb25seSBz
dXBwb3J0IGV4YWN0bHkgeXl5eW1tZGRoaG1tc3NaLgorICAgIGlmIChieXRlc19sZWZ0IDwgMTEp
IHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgeWVhciA9IEFTTjFSZWFkSW50KCZzLCAm
Ynl0ZXNfbGVmdCwgNCk7CisgICAgeWVhciAtPSAxOTAwOworICB9IGVsc2UgeworICAgIC8vIEFT
TjEgZm9ybWF0OiB5eW1tZGRoaG1tW3NzXVogd2hlcmUgdGhlIFogaXMgbGl0ZXJhbCwgYnV0IFJG
QyA1MjgwCisgICAgLy8gcmVxdWlyZXMgdXMgdG8gb25seSBzdXBwb3J0IGV4YWN0bHkgeXltbWRk
aGhtbXNzWi4KKyAgICBpZiAoYnl0ZXNfbGVmdCA8IDkpIHsKKyAgICAgIHJldHVybiAtMTsKKyAg
ICB9CisgICAgeWVhciA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgMik7CisgICAgLy8g
UGVyIFJGQyA1MjgwIDQuMS4yLjUuMQorICAgIGlmICh5ZWFyIDwgNTApIHsKKyAgICAgIHllYXIg
Kz0gMTAwOworICAgIH0KKyAgfQorCisgIC8vIFJlYWQgb3V0IHJlbWFpbmluZyBBU04xIHRpbWUg
ZGF0YSBhbmQgc3RvcmUgaXQgaW4gfHRtfCBpbiBkb2N1bWVudGVkCisgIC8vIHN0ZDo6dG0gZm9y
bWF0LgorICB0bSB0bTsKKyAgdG0udG1feWVhciA9IHllYXI7CisgIHRtLnRtX21vbiA9IEFTTjFS
ZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgMikgLSAxOworICB0bS50bV9tZGF5ID0gQVNOMVJlYWRJ
bnQoJnMsICZieXRlc19sZWZ0LCAyKTsKKyAgdG0udG1faG91ciA9IEFTTjFSZWFkSW50KCZzLCAm
Ynl0ZXNfbGVmdCwgMik7CisgIHRtLnRtX21pbiA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVm
dCwgMik7CisgIHRtLnRtX3NlYyA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgMik7CisK
KyAgLy8gTm93IGp1c3QgWiBzaG91bGQgcmVtYWluLiAgSXRzIGV4aXN0ZW5jZSB3YXMgYXNzZXJ0
ZWQgYWJvdmUuCisgIGlmIChieXRlc19sZWZ0ICE9IDEpIHsKKyAgICByZXR1cm4gLTE7CisgIH0K
KyAgcmV0dXJuIFRtVG9TZWNvbmRzKHRtKTsKK30KKwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gS2V5UGFy
YW1zCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCkBAIC05MywyMiArMTY4LDIxIEBAIEtleVR5cGUgSW50S2V5VHlw
ZUZhbWlseVRvS2V5VHlwZShpbnQga2V5X3R5cGVfZmFtaWx5KSB7CiBib29sIFNTTElkZW50aXR5
OjpQZW1Ub0Rlcihjb25zdCBzdGQ6OnN0cmluZyYgcGVtX3R5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGVtX3N0cmluZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBkZXIpIHsKLSAgLy8gRmluZCB0aGUgaW5uZXIgYm9k
eS4gV2UgbmVlZCB0aGlzIHRvIGZ1bGZpbGwgdGhlIGNvbnRyYWN0IG9mCi0gIC8vIHJldHVybmlu
ZyBwZW1fbGVuZ3RoLgorICAvLyBGaW5kIHRoZSBpbm5lciBib2R5LiBXZSBuZWVkIHRoaXMgdG8g
ZnVsZmlsbCB0aGUgY29udHJhY3Qgb2YgcmV0dXJuaW5nCisgIC8vIHBlbV9sZW5ndGguCiAgIHNp
emVfdCBoZWFkZXIgPSBwZW1fc3RyaW5nLmZpbmQoIi0tLS0tQkVHSU4gIiArIHBlbV90eXBlICsg
Ii0tLS0tIik7Ci0gIGlmIChoZWFkZXIgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgIGlmIChoZWFk
ZXIgPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgfQogICBz
aXplX3QgYm9keSA9IHBlbV9zdHJpbmcuZmluZCgiXG4iLCBoZWFkZXIpOwotICBpZiAoYm9keSA9
PSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgaWYgKGJvZHkgPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsK
ICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgfQogICBzaXplX3QgdHJhaWxlciA9IHBlbV9zdHJpbmcu
ZmluZCgiLS0tLS1FTkQgIiArIHBlbV90eXBlICsgIi0tLS0tIik7Ci0gIGlmICh0cmFpbGVyID09
IHN0ZDo6c3RyaW5nOjpucG9zKQorICBpZiAodHJhaWxlciA9PSBzdGQ6OnN0cmluZzo6bnBvcykg
ewogICAgIHJldHVybiBmYWxzZTsKLQorICB9CiAgIHN0ZDo6c3RyaW5nIGlubmVyID0gcGVtX3N0
cmluZy5zdWJzdHIoYm9keSArIDEsIHRyYWlsZXIgLSAoYm9keSArIDEpKTsKLQogICAqZGVyID0g
QmFzZTY0OjpEZWNvZGUoaW5uZXIsIEJhc2U2NDo6RE9fUEFSU0VfV0hJVEUgfCBCYXNlNjQ6OkRP
X1BBRF9BTlkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlNjQ6OkRP
X1RFUk1fQlVGRkVSKTsKICAgcmV0dXJuIHRydWU7CkBAIC0xMTgsMTQgKzE5MiwxMiBAQCBzdGQ6
OnN0cmluZyBTU0xJZGVudGl0eTo6RGVyVG9QZW0oY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV90eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCkg
ewogICBydGM6OlN0cmluZ0J1aWxkZXIgcmVzdWx0OwotCiAgIHJlc3VsdCA8PCAiLS0tLS1CRUdJ
TiAiIDw8IHBlbV90eXBlIDw8ICItLS0tLVxuIjsKIAogICBzdGQ6OnN0cmluZyBiNjRfZW5jb2Rl
ZDsKICAgQmFzZTY0OjpFbmNvZGVGcm9tQXJyYXkoZGF0YSwgbGVuZ3RoLCAmYjY0X2VuY29kZWQp
OwotCi0gIC8vIERpdmlkZSB0aGUgQmFzZS02NCBlbmNvZGVkIGRhdGEgaW50byA2NC1jaGFyYWN0
ZXIgY2h1bmtzLCBhcyBwZXIKLSAgLy8gNC4zLjIuNCBvZiBSRkMgMTQyMS4KKyAgLy8gRGl2aWRl
IHRoZSBCYXNlLTY0IGVuY29kZWQgZGF0YSBpbnRvIDY0LWNoYXJhY3RlciBjaHVua3MsIGFzIHBl
ciA0LjMuMi40CisgIC8vIG9mIFJGQyAxNDIxLgogICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtDaHVu
a1NpemUgPSA2NDsKICAgc2l6ZV90IGNodW5rcyA9IChiNjRfZW5jb2RlZC5zaXplKCkgKyAoa0No
dW5rU2l6ZSAtIDEpKSAvIGtDaHVua1NpemU7CiAgIGZvciAoc2l6ZV90IGkgPSAwLCBjaHVua19v
ZmZzZXQgPSAwOyBpIDwgY2h1bmtzOwpAQCAtMTMzLDkgKzIwNSw3IEBAIHN0ZDo6c3RyaW5nIFNT
TElkZW50aXR5OjpEZXJUb1BlbShjb25zdCBzdGQ6OnN0cmluZyYgcGVtX3R5cGUsCiAgICAgcmVz
dWx0IDw8IGI2NF9lbmNvZGVkLnN1YnN0cihjaHVua19vZmZzZXQsIGtDaHVua1NpemUpOwogICAg
IHJlc3VsdCA8PCAiXG4iOwogICB9Ci0KICAgcmVzdWx0IDw8ICItLS0tLUVORCAiIDw8IHBlbV90
eXBlIDw8ICItLS0tLVxuIjsKLQogICByZXR1cm4gcmVzdWx0LlJlbGVhc2UoKTsKIH0KIApAQCAt
MTg2LDc4ICsyNTYsNCBAQCBib29sIG9wZXJhdG9yIT0oY29uc3QgU1NMSWRlbnRpdHkmIGEsIGNv
bnN0IFNTTElkZW50aXR5JiBiKSB7CiAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLS8vIEhlbHBlciBGdW5jdGlvbnMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gUmVhZCB8bnwg
Ynl0ZXMgZnJvbSBBU04xIG51bWJlciBzdHJpbmcgYXQgKnxwcHwgYW5kIHJldHVybiB0aGUgbnVt
ZXJpYyB2YWx1ZS4KLS8vIFVwZGF0ZSAqfHBwfCBhbmQgKnxucHwgdG8gcmVmbGVjdCBudW1iZXIg
b2YgcmVhZCBieXRlcy4KLXN0YXRpYyBpbmxpbmUgaW50IEFTTjFSZWFkSW50KGNvbnN0IHVuc2ln
bmVkIGNoYXIqKiBwcCwgc2l6ZV90KiBucCwgc2l6ZV90IG4pIHsKLSAgY29uc3QgdW5zaWduZWQg
Y2hhciogcCA9ICpwcDsKLSAgaW50IHggPSAwOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47
IGkrKykKLSAgICB4ID0gMTAgKiB4ICsgcFtpXSAtICcwJzsKLSAgKnBwID0gcCArIG47Ci0gICpu
cCA9ICpucCAtIG47Ci0gIHJldHVybiB4OwotfQotCi1pbnQ2NF90IEFTTjFUaW1lVG9TZWMoY29u
c3QgdW5zaWduZWQgY2hhciogcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBsb25nX2Zvcm1hdCkgewot
ICBzaXplX3QgYnl0ZXNfbGVmdCA9IGxlbmd0aDsKLQotICAvLyBNYWtlIHN1cmUgdGhlIHN0cmlu
ZyBlbmRzIHdpdGggWi4gIERvaW5nIGl0IGhlcmUgcHJvdGVjdHMgdGhlIHN0cnNwbiBjYWxsCi0g
IC8vIGZyb20gcnVubmluZyBvZmYgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGluIFoncyBhYnNlbnNl
LgotICBpZiAobGVuZ3RoID09IDAgfHwgc1tsZW5ndGggLSAxXSAhPSAnWicpCi0gICAgcmV0dXJu
IC0xOwotCi0gIC8vIE1ha2Ugc3VyZSB3ZSBvbmx5IGhhdmUgQVNDSUkgZGlnaXRzIHNvIHRoYXQg
d2UgZG9uJ3QgbmVlZCB0byBjbHV0dGVyIHRoZQotICAvLyBjb2RlIGJlbG93IGFuZCBBU04xUmVh
ZEludCB3aXRoIGVycm9yIGNoZWNraW5nLgotICBzaXplX3QgbiA9IHN0cnNwbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihzKSwgIjAxMjM0NTY3ODkiKTsKLSAgaWYgKG4gKyAxICE9IGxl
bmd0aCkKLSAgICByZXR1cm4gLTE7Ci0KLSAgaW50IHllYXI7Ci0KLSAgLy8gUmVhZCBvdXQgQVNO
MSB5ZWFyLCBpbiBlaXRoZXIgMi1jaGFyICJVVENUSU1FIiBvciA0LWNoYXIgIkdFTkVSQUxJWkVE
VElNRSIKLSAgLy8gZm9ybWF0LiAgQm90aCBmb3JtYXQgdXNlIFVUQyBpbiB0aGlzIGNvbnRleHQu
Ci0gIGlmIChsb25nX2Zvcm1hdCkgewotICAgIC8vIEFTTjEgZm9ybWF0OiB5eXl5bW1kZGhoW21t
W3NzWy5mZmZdXV1aIHdoZXJlIHRoZSBaIGlzIGxpdGVyYWwsIGJ1dAotICAgIC8vIFJGQyA1Mjgw
IHJlcXVpcmVzIHVzIHRvIG9ubHkgc3VwcG9ydCBleGFjdGx5IHl5eXltbWRkaGhtbXNzWi4KLQot
ICAgIGlmIChieXRlc19sZWZ0IDwgMTEpCi0gICAgICByZXR1cm4gLTE7Ci0KLSAgICB5ZWFyID0g
QVNOMVJlYWRJbnQoJnMsICZieXRlc19sZWZ0LCA0KTsKLSAgICB5ZWFyIC09IDE5MDA7Ci0gIH0g
ZWxzZSB7Ci0gICAgLy8gQVNOMSBmb3JtYXQ6IHl5bW1kZGhobW1bc3NdWiB3aGVyZSB0aGUgWiBp
cyBsaXRlcmFsLCBidXQgUkZDIDUyODAKLSAgICAvLyByZXF1aXJlcyB1cyB0byBvbmx5IHN1cHBv
cnQgZXhhY3RseSB5eW1tZGRoaG1tc3NaLgotCi0gICAgaWYgKGJ5dGVzX2xlZnQgPCA5KQotICAg
ICAgcmV0dXJuIC0xOwotCi0gICAgeWVhciA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwg
Mik7Ci0gICAgaWYgKHllYXIgPCA1MCkgIC8vIFBlciBSRkMgNTI4MCA0LjEuMi41LjEKLSAgICAg
IHllYXIgKz0gMTAwOwotICB9Ci0KLSAgc3RkOjp0bSB0bTsKLSAgdG0udG1feWVhciA9IHllYXI7
Ci0KLSAgLy8gUmVhZCBvdXQgcmVtYWluaW5nIEFTTjEgdGltZSBkYXRhIGFuZCBzdG9yZSBpdCBp
biB8dG18IGluIGRvY3VtZW50ZWQKLSAgLy8gc3RkOjp0bSBmb3JtYXQuCi0gIHRtLnRtX21vbiA9
IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgMikgLSAxOwotICB0bS50bV9tZGF5ID0gQVNO
MVJlYWRJbnQoJnMsICZieXRlc19sZWZ0LCAyKTsKLSAgdG0udG1faG91ciA9IEFTTjFSZWFkSW50
KCZzLCAmYnl0ZXNfbGVmdCwgMik7Ci0gIHRtLnRtX21pbiA9IEFTTjFSZWFkSW50KCZzLCAmYnl0
ZXNfbGVmdCwgMik7Ci0gIHRtLnRtX3NlYyA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwg
Mik7Ci0KLSAgaWYgKGJ5dGVzX2xlZnQgIT0gMSkgewotICAgIC8vIE5vdyBqdXN0IFogc2hvdWxk
IHJlbWFpbi4gIEl0cyBleGlzdGVuY2Ugd2FzIGFzc2VydGVkIGFib3ZlLgotICAgIHJldHVybiAt
MTsKLSAgfQotCi0gIHJldHVybiBUbVRvU2Vjb25kcyh0bSk7Ci19Ci0KIH0gIC8vIG5hbWVzcGFj
ZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xpZGVudGl0eS5oCmluZGV4IDEzNzlkNzMzYmU1ZjRm
MWEyZjg3N2M2NGY1ZDNmYmE1ZmU3OWZmYjUuLjM5ZmVlYWJhYjMxMmMxNDA1NGQyNjUzYTUzYWMy
NDNmNTdlZTAyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaApAQCAtMTMsMTkg
KzEzLDE1IEBACiAjaWZuZGVmIFJUQ19CQVNFX1NTTElERU5USVRZX0hfCiAjZGVmaW5lIFJUQ19C
QVNFX1NTTElERU5USVRZX0hfCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGN0aW1lPgogI2luY2x1ZGUgPHN0
cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2UvbWVzc2FnZWRpZ2VzdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKIG5hbWVzcGFjZSBydGMgewogCitj
bGFzcyBTU0xDZXJ0Q2hhaW47CitjbGFzcyBTU0xDZXJ0aWZpY2F0ZTsKKwogLy8gS1RfTEFTVCBp
cyBpbnRlbmRlZCBmb3IgdmVjdG9yIGRlY2xhcmF0aW9ucyBhbmQgbG9vcHMgb3ZlciBhbGwga2V5
IHR5cGVzOwogLy8gaXQgZG9lcyBub3QgcmVwcmVzZW50IGFueSBrZXkgdHlwZSBpbiBpdHNlbGYu
CiAvLyBLVF9ERUZBVUxUIGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQgS2V5VHlwZSBmb3IgS2V5UGFy
YW1zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3NsaWRlbnRpdHlfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xpZGVudGl0eV91bml0dGVzdC5jYwpp
bmRleCAxMzJlMjQwYzJmNWE1YzBkYzQ4Yzc3YWM4OGU3NWU4NmEzYWMyOGMwLi5iYTUzZDE3ZGE0
MzFhMmFjZjJhYjZiMThmNDFjOGVkNjE2NTE0ZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xpZGVudGl0eV91bml0dGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9zc2xpZGVudGl0eV91bml0dGVzdC5jYwpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUg
InJ0Y19iYXNlL2Zha2Vzc2xpZGVudGl0eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lc3Nh
Z2VkaWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xhZGFwdGVyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3NsZmluZ2VycHJpbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xpZGVudGl0
eS5oIgpAQCAtMTc5LDcgKzE4MCw3IEBAIElkZW50aXR5QW5kSW5mbyBDcmVhdGVGYWtlSWRlbnRp
dHlBbmRJbmZvRnJvbURlcnMoCiAgIGNvbnN0IHJ0Yzo6U1NMQ2VydENoYWluJiBjaGFpbiA9IGlu
Zm8uaWRlbnRpdHktPmNlcnRfY2hhaW4oKTsKICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMRmlu
Z2VycHJpbnQ+IGZwOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYWluLkdldFNpemUoKTsg
aSsrKSB7Ci0gICAgZnAucmVzZXQocnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlKCJzaGEtMSIs
ICZjaGFpbi5HZXQoaSkpKTsKKyAgICBmcCA9IHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZSgi
c2hhLTEiLCBjaGFpbi5HZXQoaSkpOwogICAgIEVYUEVDVF9UUlVFKGZwKTsKICAgICBpbmZvLmZp
bmdlcnByaW50cy5wdXNoX2JhY2soZnAtPkdldFJmYzQ1NzJGaW5nZXJwcmludCgpKTsKICAgfQpA
QCAtMjAwLDcgKzIwMSw3IEBAIGNsYXNzIFNTTElkZW50aXR5VGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKICAgICBBU1NFUlRfVFJVRShpZGVudGl0eV9lY2RzYTFfKTsKICAgICBBU1NFUlRf
VFJVRShpZGVudGl0eV9lY2RzYTJfKTsKIAotICAgIHRlc3RfY2VydF8ucmVzZXQocnRjOjpTU0xD
ZXJ0aWZpY2F0ZTo6RnJvbVBFTVN0cmluZyhrVGVzdENlcnRpZmljYXRlKSk7CisgICAgdGVzdF9j
ZXJ0XyA9IHJ0Yzo6U1NMQ2VydGlmaWNhdGU6OkZyb21QRU1TdHJpbmcoa1Rlc3RDZXJ0aWZpY2F0
ZSk7CiAgICAgQVNTRVJUX1RSVUUodGVzdF9jZXJ0Xyk7CiAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Nsc3RyZWFt
YWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuY2MKaW5kZXggNzQ2ZWJkNTAwNjNkY2E4YmZhZTY4OTg1
ZGJkYjZlZWQ3ZjUzMmUwZS4uOWMzM2E5YzkzM2M5OGE5MDQwNDlmYzg2YmNmMDExMGE3N2RmYjc3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyLmNjCkBAIC04OSw0
MCArODksMTIgQEAgYm9vbCBJc0djbUNyeXB0b1N1aXRlTmFtZShjb25zdCBzdGQ6OnN0cmluZyYg
Y3J5cHRvX3N1aXRlKSB7CiAgICAgICAgICAgY3J5cHRvX3N1aXRlID09IENTX0FFQURfQUVTXzEy
OF9HQ00pOwogfQogCi0vLyBzdGF0aWMKLUNyeXB0b09wdGlvbnMgQ3J5cHRvT3B0aW9uczo6Tm9H
Y20oKSB7Ci0gIENyeXB0b09wdGlvbnMgb3B0aW9uczsKLSAgb3B0aW9ucy5lbmFibGVfZ2NtX2Ny
eXB0b19zdWl0ZXMgPSBmYWxzZTsKLSAgcmV0dXJuIG9wdGlvbnM7Ci19Ci0KLXN0ZDo6dmVjdG9y
PGludD4gR2V0U3VwcG9ydGVkRHRsc1NydHBDcnlwdG9TdWl0ZXMoCi0gICAgY29uc3QgcnRjOjpD
cnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykgewotICBzdGQ6OnZlY3RvcjxpbnQ+IGNyeXB0
b19zdWl0ZXM7Ci0gIGlmIChjcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMp
IHsKLSAgICBjcnlwdG9fc3VpdGVzLnB1c2hfYmFjayhydGM6OlNSVFBfQUVBRF9BRVNfMjU2X0dD
TSk7Ci0gICAgY3J5cHRvX3N1aXRlcy5wdXNoX2JhY2socnRjOjpTUlRQX0FFQURfQUVTXzEyOF9H
Q00pOwotICB9Ci0gIC8vIE5vdGU6IFNSVFBfQUVTMTI4X0NNX1NIQTFfODAgaXMgd2hhdCBpcyBy
ZXF1aXJlZCB0byBiZSBzdXBwb3J0ZWQgKGJ5Ci0gIC8vIGRyYWZ0LWlldGYtcnRjd2ViLXNlY3Vy
aXR5LWFyY2gpLCBidXQgU1JUUF9BRVMxMjhfQ01fU0hBMV8zMiBpcyBhbGxvd2VkIGFzCi0gIC8v
IHdlbGwsIGFuZCBzYXZlcyBhIGZldyBieXRlcyBwZXIgcGFja2V0IGlmIGl0IGVuZHMgdXAgc2Vs
ZWN0ZWQuCi0gIC8vIEFzIHRoZSBjaXBoZXIgc3VpdGUgaXMgcG90ZW50aWFsbHkgaW5zZWN1cmUs
IGl0IHdpbGwgb25seSBiZSB1c2VkIGlmCi0gIC8vIGVuYWJsZWQgYnkgYm90aCBwZWVycy4KLSAg
aWYgKGNyeXB0b19vcHRpb25zLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyKSB7
Ci0gICAgY3J5cHRvX3N1aXRlcy5wdXNoX2JhY2socnRjOjpTUlRQX0FFUzEyOF9DTV9TSEExXzMy
KTsKLSAgfQotICBjcnlwdG9fc3VpdGVzLnB1c2hfYmFjayhydGM6OlNSVFBfQUVTMTI4X0NNX1NI
QTFfODApOwotICByZXR1cm4gY3J5cHRvX3N1aXRlczsKLX0KLQogU1NMU3RyZWFtQWRhcHRlciog
U1NMU3RyZWFtQWRhcHRlcjo6Q3JlYXRlKFN0cmVhbUludGVyZmFjZSogc3RyZWFtKSB7CiAgIHJl
dHVybiBuZXcgT3BlblNTTFN0cmVhbUFkYXB0ZXIoc3RyZWFtKTsKIH0KIAogU1NMU3RyZWFtQWRh
cHRlcjo6U1NMU3RyZWFtQWRhcHRlcihTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSkKLSAgICA6IFN0
cmVhbUFkYXB0ZXJJbnRlcmZhY2Uoc3RyZWFtKSwKLSAgICAgIGlnbm9yZV9iYWRfY2VydF8oZmFs
c2UpLAotICAgICAgY2xpZW50X2F1dGhfZW5hYmxlZF8odHJ1ZSkge30KKyAgICA6IFN0cmVhbUFk
YXB0ZXJJbnRlcmZhY2Uoc3RyZWFtKSB7fQogCiBTU0xTdHJlYW1BZGFwdGVyOjp+U1NMU3RyZWFt
QWRhcHRlcigpIHt9CiAKQEAgLTE2MSw4ICsxMzMsMTMgQEAgYm9vbCBTU0xTdHJlYW1BZGFwdGVy
OjpJc0FjY2VwdGFibGVDaXBoZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGNpcGhlciwKIHN0ZDo6c3Ry
aW5nIFNTTFN0cmVhbUFkYXB0ZXI6OlNzbENpcGhlclN1aXRlVG9OYW1lKGludCBjaXBoZXJfc3Vp
dGUpIHsKICAgcmV0dXJuIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpTc2xDaXBoZXJTdWl0ZVRvTmFt
ZShjaXBoZXJfc3VpdGUpOwogfQotdm9pZCBTU0xTdHJlYW1BZGFwdGVyOjplbmFibGVfdGltZV9j
YWxsYmFja19mb3JfdGVzdGluZygpIHsKLSAgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OmVuYWJsZV90
aW1lX2NhbGxiYWNrX2Zvcl90ZXN0aW5nKCk7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v
IFRlc3Qgb25seSBzZXR0aW5ncworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCit2b2lkIFNTTFN0
cmVhbUFkYXB0ZXI6OkVuYWJsZVRpbWVDYWxsYmFja0ZvclRlc3RpbmcoKSB7CisgIE9wZW5TU0xT
dHJlYW1BZGFwdGVyOjpFbmFibGVUaW1lQ2FsbGJhY2tGb3JUZXN0aW5nKCk7CiB9CiAKIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIu
aAppbmRleCAyZDRlMTlmOWI1MGZlZjMwYzA4Y2YwNjNhZGY2NTQ2NDEzM2ZmYzg1Li4yNWY0ZjMz
NDg2ZGFkZDk4NGM4YTQyYmUxYjMxZDNmMmFhOWFiNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3Nsc3RyZWFtYWRhcHRlci5oCkBAIC03MCwzNCArNzAsNiBAQCBib29sIElzR2NtQ3J5cHRv
U3VpdGUoaW50IGNyeXB0b19zdWl0ZSk7CiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGNy
eXB0byBzdWl0ZSBuYW1lIHVzZXMgYSBHQ00gY2lwaGVyLgogYm9vbCBJc0djbUNyeXB0b1N1aXRl
TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgY3J5cHRvX3N1aXRlKTsKIAotc3RydWN0IENyeXB0b09w
dGlvbnMgewotICBDcnlwdG9PcHRpb25zKCkge30KLQotICAvLyBIZWxwZXIgbWV0aG9kIHRvIHJl
dHVybiBhbiBpbnN0YW5jZSBvZiB0aGUgQ3J5cHRvT3B0aW9ucyB3aXRoIEdDTSBjcnlwdG8KLSAg
Ly8gc3VpdGVzIGRpc2FibGVkLiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9m
IGRlcGVuZGluZyBvbiBjdXJyZW50Ci0gIC8vIGRlZmF1bHQgdmFsdWVzIHNldCBieSB0aGUgY29u
c3RydWN0b3IuCi0gIHN0YXRpYyBDcnlwdG9PcHRpb25zIE5vR2NtKCk7Ci0KLSAgLy8gRW5hYmxl
IEdDTSBjcnlwdG8gc3VpdGVzIGZyb20gUkZDIDc3MTQgZm9yIFNSVFAuIEdDTSB3aWxsIG9ubHkg
YmUgdXNlZAotICAvLyBpZiBib3RoIHNpZGVzIGVuYWJsZSBpdC4KLSAgYm9vbCBlbmFibGVfZ2Nt
X2NyeXB0b19zdWl0ZXMgPSBmYWxzZTsKLQotICAvLyBJZiBzZXQgdG8gdHJ1ZSwgdGhlIChwb3Rl
bnRpYWxseSBpbnNlY3VyZSkgY3J5cHRvIGNpcGhlcgotICAvLyBTUlRQX0FFUzEyOF9DTV9TSEEx
XzMyIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGNpcGhlcnMKLSAg
Ly8gZHVyaW5nIG5lZ290aWF0aW9uLiBJdCB3aWxsIG9ubHkgYmUgdXNlZCBpZiBib3RoIHBlZXJz
IHN1cHBvcnQgaXQgYW5kIG5vCi0gIC8vIG90aGVyIGNpcGhlcnMgZ2V0IHByZWZlcnJlZC4KLSAg
Ym9vbCBlbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9IGZhbHNlOwotCi0gIC8v
IElmIHNldCB0byB0cnVlLCBlbmNyeXB0ZWQgUlRQIGhlYWRlciBleHRlbnNpb25zIGFzIGRlZmlu
ZWQgaW4gUkZDIDY5MDQKLSAgLy8gd2lsbCBiZSBuZWdvdGlhdGVkLiBUaGV5IHdpbGwgb25seSBi
ZSB1c2VkIGlmIGJvdGggcGVlcnMgc3VwcG9ydCB0aGVtLgotICBib29sIGVuYWJsZV9lbmNyeXB0
ZWRfcnRwX2hlYWRlcl9leHRlbnNpb25zID0gZmFsc2U7Ci19OwotCi0vLyBSZXR1cm5zIHN1cHBv
cnRlZCBjcnlwdG8gc3VpdGVzLCBnaXZlbiB8Y3J5cHRvX29wdGlvbnN8LgotLy8gQ1NfQUVTX0NN
XzEyOF9ITUFDX1NIQTFfMzIgd2lsbCBiZSBwcmVmZXJyZWQgYnkgZGVmYXVsdC4KLXN0ZDo6dmVj
dG9yPGludD4gR2V0U3VwcG9ydGVkRHRsc1NydHBDcnlwdG9TdWl0ZXMoCi0gICAgY29uc3QgcnRj
OjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucyk7Ci0KIC8vIFNTTFN0cmVhbUFkYXB0ZXIg
OiBBIFN0cmVhbUludGVyZmFjZUFkYXB0ZXIgdGhhdCBkb2VzIFNTTC9UTFMuCiAvLyBBZnRlciBT
U0wgaGFzIGJlZW4gc3RhcnRlZCwgdGhlIHN0cmVhbSB3aWxsIG9ubHkgb3BlbiBvbiBzdWNjZXNz
ZnVsCiAvLyBTU0wgdmVyaWZpY2F0aW9uIG9mIGNlcnRpZmljYXRlcywgYW5kIHRoZSBjb21tdW5p
Y2F0aW9uIGlzCkBAIC0xNDQsMTIgKzExNiw2IEBAIGNsYXNzIFNTTFN0cmVhbUFkYXB0ZXIgOiBw
dWJsaWMgU3RyZWFtQWRhcHRlckludGVyZmFjZSB7CiAgIGV4cGxpY2l0IFNTTFN0cmVhbUFkYXB0
ZXIoU3RyZWFtSW50ZXJmYWNlKiBzdHJlYW0pOwogICB+U1NMU3RyZWFtQWRhcHRlcigpIG92ZXJy
aWRlOwogCi0gIHZvaWQgc2V0X2lnbm9yZV9iYWRfY2VydChib29sIGlnbm9yZSkgeyBpZ25vcmVf
YmFkX2NlcnRfID0gaWdub3JlOyB9Ci0gIGJvb2wgaWdub3JlX2JhZF9jZXJ0KCkgY29uc3QgeyBy
ZXR1cm4gaWdub3JlX2JhZF9jZXJ0XzsgfQotCi0gIHZvaWQgc2V0X2NsaWVudF9hdXRoX2VuYWJs
ZWQoYm9vbCBlbmFibGVkKSB7IGNsaWVudF9hdXRoX2VuYWJsZWRfID0gZW5hYmxlZDsgfQotICBi
b29sIGNsaWVudF9hdXRoX2VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBjbGllbnRfYXV0aF9lbmFi
bGVkXzsgfQotCiAgIC8vIFNwZWNpZnkgb3VyIFNTTCBpZGVudGl0eToga2V5IGFuZCBjZXJ0aWZp
Y2F0ZS4gU1NMU3RyZWFtIHRha2VzIG93bmVyc2hpcAogICAvLyBvZiB0aGUgU1NMSWRlbnRpdHkg
b2JqZWN0IGFuZCB3aWxsIGZyZWUgaXQgd2hlbiBhcHByb3ByaWF0ZS4gU2hvdWxkIGJlCiAgIC8v
IGNhbGxlZCBubyBtb3JlIHRoYW4gb25jZSBvbiBhIGdpdmVuIFNTTFN0cmVhbSBpbnN0YW5jZS4K
QEAgLTI2MywyMiArMjI5LDMyIEBAIGNsYXNzIFNTTFN0cmVhbUFkYXB0ZXIgOiBwdWJsaWMgU3Ry
ZWFtQWRhcHRlckludGVyZmFjZSB7CiAgIC8vIGRlcGVuZGluZyBvbiBzcGVjaWZpYyBTU0wgaW1w
bGVtZW50YXRpb24uCiAgIHN0YXRpYyBzdGQ6OnN0cmluZyBTc2xDaXBoZXJTdWl0ZVRvTmFtZShp
bnQgY2lwaGVyX3N1aXRlKTsKIAorICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgIC8vIFRlc3Rpbmcg
b25seSBtZW1iZXIgZnVuY3Rpb25zCisgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwogICAvLyBVc2Ug
b3VyIHRpbWV1dGlscy5oIHNvdXJjZSBvZiB0aW1pbmcgaW4gQm9yaW5nU1NMLCBhbGxvd2luZyB1
cyB0byB0ZXN0CiAgIC8vIHVzaW5nIGEgZmFrZSBjbG9jay4KLSAgc3RhdGljIHZvaWQgZW5hYmxl
X3RpbWVfY2FsbGJhY2tfZm9yX3Rlc3RpbmcoKTsKKyAgc3RhdGljIHZvaWQgRW5hYmxlVGltZUNh
bGxiYWNrRm9yVGVzdGluZygpOworCisgIC8vIERlcHJlY2F0ZWQuIERvIG5vdCB1c2UgdGhpcyBB
UEkgb3V0c2lkZSBvZiB0ZXN0aW5nLgorICAvLyBEbyBub3Qgc2V0IHRoaXMgdG8gZmFsc2Ugb3V0
c2lkZSBvZiB0ZXN0aW5nLgorICB2b2lkIFNldENsaWVudEF1dGhFbmFibGVkRm9yVGVzdGluZyhi
b29sIGVuYWJsZWQpIHsKKyAgICBjbGllbnRfYXV0aF9lbmFibGVkXyA9IGVuYWJsZWQ7CisgIH0K
KworICAvLyBEZXByZWNhdGVkLiBEbyBub3QgdXNlIHRoaXMgQVBJIG91dHNpZGUgb2YgdGVzdGlu
Zy4KKyAgLy8gUmV0dXJucyB0cnVlIGJ5IGRlZmF1bHQsIGVsc2UgZmFsc2UgaWYgZXhwbGljaXRs
eSBzZXQgdG8gZGlzYWJsZSBjbGllbnQKKyAgLy8gYXV0aGVudGljYXRpb24uCisgIGJvb2wgR2V0
Q2xpZW50QXV0aEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBjbGllbnRfYXV0aF9lbmFibGVkXzsg
fQogCiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8U1NMSGFuZHNoYWtlRXJyb3I+IFNpZ25hbFNTTEhhbmRz
aGFrZUVycm9yOwogCiAgcHJpdmF0ZToKLSAgLy8gSWYgdHJ1ZSwgdGhlIHNlcnZlciBjZXJ0aWZp
Y2F0ZSBuZWVkIG5vdCBtYXRjaCB0aGUgY29uZmlndXJlZAotICAvLyBzZXJ2ZXJfbmFtZSwgYW5k
IGluIGZhY3QgbWlzc2luZyBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgYW5kIG90aGVyCi0gIC8vIHZl
cmlmaWNhdGlvbiBlcnJvcnMgYXJlIGlnbm9yZWQuCi0gIGJvb2wgaWdub3JlX2JhZF9jZXJ0XzsK
LQogICAvLyBJZiB0cnVlIChkZWZhdWx0KSwgdGhlIGNsaWVudCBpcyByZXF1aXJlZCB0byBwcm92
aWRlIGEgY2VydGlmaWNhdGUgZHVyaW5nCiAgIC8vIGhhbmRzaGFrZS4gSWYgbm8gY2VydGlmaWNh
dGUgaXMgZ2l2ZW4sIGhhbmRzaGFrZSBmYWlscy4gVGhpcyBhcHBsaWVzIHRvCiAgIC8vIHNlcnZl
ciBtb2RlIG9ubHkuCi0gIGJvb2wgY2xpZW50X2F1dGhfZW5hYmxlZF87CisgIGJvb2wgY2xpZW50
X2F1dGhfZW5hYmxlZF8gPSB0cnVlOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c3Nsc3RyZWFtYWRhcHRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXJfdW5pdHRlc3QuY2MKaW5k
ZXggMzQwM2JkYmU3MjdlZTMzZjA4NjI4NjBjOWY3MWFhZDFkYjZkOWZlNy4uNmZiYjFkN2MyY2Mw
OTgyMmQyNmJhNjdlOWE3MGVhNTJjMzE1YTcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlcl91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyX3VuaXR0ZXN0LmNjCkBAIC0xNyw2ICsxNyw4IEBACiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9oZWxwZXJzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVtb3J5
X3N0cmVhbS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zc2xhZGFwdGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHku
aCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyLmgiCkBAIC01ODcsOCArNTg5
LDcgQEAgY2xhc3MgU1NMU3RyZWFtQWRhcHRlclRlc3RCYXNlIDogcHVibGljIHRlc3Rpbmc6OlRl
c3QsCiAgICAgICBjaGFpbiA9IGNsaWVudF9zc2xfLT5HZXRQZWVyU1NMQ2VydENoYWluKCk7CiAg
ICAgZWxzZQogICAgICAgY2hhaW4gPSBzZXJ2ZXJfc3NsXy0+R2V0UGVlclNTTENlcnRDaGFpbigp
OwotICAgIHJldHVybiAoY2hhaW4gJiYgY2hhaW4tPkdldFNpemUoKSkgPyBjaGFpbi0+R2V0KDAp
LkdldFVuaXF1ZVJlZmVyZW5jZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IG51bGxwdHI7CisgICAgcmV0dXJuIChjaGFpbiAmJiBjaGFpbi0+R2V0U2l6ZSgpKSA/
IGNoYWluLT5HZXQoMCkuQ2xvbmUoKSA6IG51bGxwdHI7CiAgIH0KIAogICBib29sIEdldFNzbENp
cGhlclN1aXRlKGJvb2wgY2xpZW50LCBpbnQqIHJldHZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyZWFtLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyZWFt
LmNjCmluZGV4IGQxZWMxNDAwZGU2MGIxZGUzZmVlZGE5Zjc3OWEwMDk2NzJmMjE5MGQuLjc4MzYy
NWM2N2E5NDYwMjUxMTkzN2FlNDBkNjYzNDNhYTg1NmUzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmVhbS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJl
YW0uY2MKQEAgLTcsMjkgKzcsMjMgQEAKICAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KLQotI2lmIGRlZmlu
ZWQoV0VCUlRDX1BPU0lYKQotI2luY2x1ZGUgPHN5cy9maWxlLmg+Ci0jZW5kaWYgIC8vIFdFQlJU
Q19QT1NJWAogI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVk
ZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRp
b24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9zdHJlYW0uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiAjaWYgZGVmaW5lZChXRUJSVENf
V0lOKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKwogI2RlZmluZSBmaWxlbm8gX2ZpbGVubworI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIHJ0YyB7
CkBAIC03NSwyNiArNjksNiBAQCBTdHJlYW1SZXN1bHQgU3RyZWFtSW50ZXJmYWNlOjpSZWFkQWxs
KHZvaWQqIGJ1ZmZlciwKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyZWFtUmVzdWx0IFN0cmVh
bUludGVyZmFjZTo6UmVhZExpbmUoc3RkOjpzdHJpbmcqIGxpbmUpIHsKLSAgbGluZS0+Y2xlYXIo
KTsKLSAgU3RyZWFtUmVzdWx0IHJlc3VsdCA9IFNSX1NVQ0NFU1M7Ci0gIHdoaWxlICh0cnVlKSB7
Ci0gICAgY2hhciBjaDsKLSAgICByZXN1bHQgPSBSZWFkKCZjaCwgc2l6ZW9mKGNoKSwgbnVsbHB0
ciwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdCAhPSBTUl9TVUNDRVNTKSB7Ci0gICAgICBicmVh
azsKLSAgICB9Ci0gICAgaWYgKGNoID09ICdcbicpIHsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICBsaW5lLT5wdXNoX2JhY2soY2gpOwotICB9Ci0gIGlmICghbGluZS0+ZW1wdHkoKSkgeyAgIC8v
IGdpdmUgYmFjayB0aGUgbGluZSB3ZSd2ZSBjb2xsZWN0ZWQgc28gZmFyIHdpdGgKLSAgICByZXN1
bHQgPSBTUl9TVUNDRVNTOyAgLy8gYSBzdWNjZXNzIGNvZGUuICBPdGhlcndpc2UgcmV0dXJuIHRo
ZSBsYXN0IGNvZGUKLSAgfQotICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIFN0cmVhbUludGVy
ZmFjZTo6UG9zdEV2ZW50KFRocmVhZCogdCwgaW50IGV2ZW50cywgaW50IGVycikgewogICB0LT5Q
b3N0KFJUQ19GUk9NX0hFUkUsIHRoaXMsIE1TR19QT1NUX0VWRU5ULAogICAgICAgICAgIG5ldyBT
dHJlYW1FdmVudERhdGEoZXZlbnRzLCBlcnIpKTsKQEAgLTEwNCwxNCArNzgsNiBAQCB2b2lkIFN0
cmVhbUludGVyZmFjZTo6UG9zdEV2ZW50KGludCBldmVudHMsIGludCBlcnIpIHsKICAgUG9zdEV2
ZW50KFRocmVhZDo6Q3VycmVudCgpLCBldmVudHMsIGVycik7CiB9CiAKLWNvbnN0IHZvaWQqIFN0
cmVhbUludGVyZmFjZTo6R2V0UmVhZERhdGEoc2l6ZV90KiBkYXRhX2xlbikgewotICByZXR1cm4g
bnVsbHB0cjsKLX0KLQotdm9pZCogU3RyZWFtSW50ZXJmYWNlOjpHZXRXcml0ZUJ1ZmZlcihzaXpl
X3QqIGJ1Zl9sZW4pIHsKLSAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgU3RyZWFtSW50ZXJm
YWNlOjpTZXRQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIHsKICAgcmV0dXJuIGZhbHNlOwogfQpA
QCAtMTI0LDEwICs5MCw2IEBAIGJvb2wgU3RyZWFtSW50ZXJmYWNlOjpHZXRTaXplKHNpemVfdCog
c2l6ZSkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU3RyZWFtSW50ZXJmYWNl
OjpHZXRXcml0ZVJlbWFpbmluZyhzaXplX3QqIHNpemUpIGNvbnN0IHsKLSAgcmV0dXJuIGZhbHNl
OwotfQotCiBib29sIFN0cmVhbUludGVyZmFjZTo6Rmx1c2goKSB7CiAgIHJldHVybiBmYWxzZTsK
IH0KQEAgLTE4OCwxMCArMTUwLDYgQEAgYm9vbCBTdHJlYW1BZGFwdGVySW50ZXJmYWNlOjpHZXRT
aXplKHNpemVfdCogc2l6ZSkgY29uc3QgewogICByZXR1cm4gc3RyZWFtXy0+R2V0U2l6ZShzaXpl
KTsKIH0KIAotYm9vbCBTdHJlYW1BZGFwdGVySW50ZXJmYWNlOjpHZXRXcml0ZVJlbWFpbmluZyhz
aXplX3QqIHNpemUpIGNvbnN0IHsKLSAgcmV0dXJuIHN0cmVhbV8tPkdldFdyaXRlUmVtYWluaW5n
KHNpemUpOwotfQotCiBib29sIFN0cmVhbUFkYXB0ZXJJbnRlcmZhY2U6OlJlc2VydmVTaXplKHNp
emVfdCBzaXplKSB7CiAgIHJldHVybiBzdHJlYW1fLT5SZXNlcnZlU2l6ZShzaXplKTsKIH0KQEAg
LTM4OSwxNDMgKzM0Nyw2IEBAIHZvaWQgRmlsZVN0cmVhbTo6RG9DbG9zZSgpIHsKICAgZmNsb3Nl
KGZpbGVfKTsKIH0KIAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gTWVtb3J5U3RyZWFtCi0v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLU1lbW9yeVN0cmVhbUJhc2U6Ok1lbW9yeVN0cmVhbUJh
c2UoKQotICAgIDogYnVmZmVyXyhudWxscHRyKSwgYnVmZmVyX2xlbmd0aF8oMCksIGRhdGFfbGVu
Z3RoXygwKSwgc2Vla19wb3NpdGlvbl8oMCkge30KLQotU3RyZWFtU3RhdGUgTWVtb3J5U3RyZWFt
QmFzZTo6R2V0U3RhdGUoKSBjb25zdCB7Ci0gIHJldHVybiBTU19PUEVOOwotfQotCi1TdHJlYW1S
ZXN1bHQgTWVtb3J5U3RyZWFtQmFzZTo6UmVhZCh2b2lkKiBidWZmZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVzX3JlYWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSB7Ci0gIGlmIChzZWVrX3Bvc2l0aW9uXyA+PSBk
YXRhX2xlbmd0aF8pIHsKLSAgICByZXR1cm4gU1JfRU9TOwotICB9Ci0gIHNpemVfdCBhdmFpbGFi
bGUgPSBkYXRhX2xlbmd0aF8gLSBzZWVrX3Bvc2l0aW9uXzsKLSAgaWYgKGJ5dGVzID4gYXZhaWxh
YmxlKSB7Ci0gICAgLy8gUmVhZCBwYXJ0aWFsIGJ1ZmZlcgotICAgIGJ5dGVzID0gYXZhaWxhYmxl
OwotICB9Ci0gIG1lbWNweShidWZmZXIsICZidWZmZXJfW3NlZWtfcG9zaXRpb25fXSwgYnl0ZXMp
OwotICBzZWVrX3Bvc2l0aW9uXyArPSBieXRlczsKLSAgaWYgKGJ5dGVzX3JlYWQpIHsKLSAgICAq
Ynl0ZXNfcmVhZCA9IGJ5dGVzOwotICB9Ci0gIHJldHVybiBTUl9TVUNDRVNTOwotfQotCi1TdHJl
YW1SZXN1bHQgTWVtb3J5U3RyZWFtQmFzZTo6V3JpdGUoY29uc3Qgdm9pZCogYnVmZmVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVzX3dyaXR0ZW4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBlcnJvcikgewotICBzaXplX3Qg
YXZhaWxhYmxlID0gYnVmZmVyX2xlbmd0aF8gLSBzZWVrX3Bvc2l0aW9uXzsKLSAgaWYgKDAgPT0g
YXZhaWxhYmxlKSB7Ci0gICAgLy8gSW5jcmVhc2UgYnVmZmVyIHNpemUgdG8gdGhlIGxhcmdlciBv
ZjoKLSAgICAvLyBhKSBuZXcgcG9zaXRpb24gcm91bmRlZCB1cCB0byBuZXh0IDI1NiBieXRlcwot
ICAgIC8vIGIpIGRvdWJsZSB0aGUgcHJldmlvdXMgbGVuZ3RoCi0gICAgc2l6ZV90IG5ld19idWZm
ZXJfbGVuZ3RoID0KLSAgICAgICAgc3RkOjptYXgoKChzZWVrX3Bvc2l0aW9uXyArIGJ5dGVzKSB8
IDB4RkYpICsgMSwgYnVmZmVyX2xlbmd0aF8gKiAyKTsKLSAgICBTdHJlYW1SZXN1bHQgcmVzdWx0
ID0gRG9SZXNlcnZlKG5ld19idWZmZXJfbGVuZ3RoLCBlcnJvcik7Ci0gICAgaWYgKFNSX1NVQ0NF
U1MgIT0gcmVzdWx0KSB7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBSVENfRENI
RUNLKGJ1ZmZlcl9sZW5ndGhfID49IG5ld19idWZmZXJfbGVuZ3RoKTsKLSAgICBhdmFpbGFibGUg
PSBidWZmZXJfbGVuZ3RoXyAtIHNlZWtfcG9zaXRpb25fOwotICB9Ci0KLSAgaWYgKGJ5dGVzID4g
YXZhaWxhYmxlKSB7Ci0gICAgYnl0ZXMgPSBhdmFpbGFibGU7Ci0gIH0KLSAgbWVtY3B5KCZidWZm
ZXJfW3NlZWtfcG9zaXRpb25fXSwgYnVmZmVyLCBieXRlcyk7Ci0gIHNlZWtfcG9zaXRpb25fICs9
IGJ5dGVzOwotICBpZiAoZGF0YV9sZW5ndGhfIDwgc2Vla19wb3NpdGlvbl8pIHsKLSAgICBkYXRh
X2xlbmd0aF8gPSBzZWVrX3Bvc2l0aW9uXzsKLSAgfQotICBpZiAoYnl0ZXNfd3JpdHRlbikgewot
ICAgICpieXRlc193cml0dGVuID0gYnl0ZXM7Ci0gIH0KLSAgcmV0dXJuIFNSX1NVQ0NFU1M7Ci19
Ci0KLXZvaWQgTWVtb3J5U3RyZWFtQmFzZTo6Q2xvc2UoKSB7Ci0gIC8vIG5vdGhpbmcgdG8gZG8K
LX0KLQotYm9vbCBNZW1vcnlTdHJlYW1CYXNlOjpTZXRQb3NpdGlvbihzaXplX3QgcG9zaXRpb24p
IHsKLSAgaWYgKHBvc2l0aW9uID4gZGF0YV9sZW5ndGhfKQotICAgIHJldHVybiBmYWxzZTsKLSAg
c2Vla19wb3NpdGlvbl8gPSBwb3NpdGlvbjsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTWVt
b3J5U3RyZWFtQmFzZTo6R2V0UG9zaXRpb24oc2l6ZV90KiBwb3NpdGlvbikgY29uc3QgewotICBp
ZiAocG9zaXRpb24pCi0gICAgKnBvc2l0aW9uID0gc2Vla19wb3NpdGlvbl87Ci0gIHJldHVybiB0
cnVlOwotfQotCi1ib29sIE1lbW9yeVN0cmVhbUJhc2U6OkdldFNpemUoc2l6ZV90KiBzaXplKSBj
b25zdCB7Ci0gIGlmIChzaXplKQotICAgICpzaXplID0gZGF0YV9sZW5ndGhfOwotICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBNZW1vcnlTdHJlYW1CYXNlOjpSZXNlcnZlU2l6ZShzaXplX3Qgc2l6
ZSkgewotICByZXR1cm4gKFNSX1NVQ0NFU1MgPT0gRG9SZXNlcnZlKHNpemUsIG51bGxwdHIpKTsK
LX0KLQotU3RyZWFtUmVzdWx0IE1lbW9yeVN0cmVhbUJhc2U6OkRvUmVzZXJ2ZShzaXplX3Qgc2l6
ZSwgaW50KiBlcnJvcikgewotICByZXR1cm4gKGJ1ZmZlcl9sZW5ndGhfID49IHNpemUpID8gU1Jf
U1VDQ0VTUyA6IFNSX0VPUzsKLX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1NZW1vcnlT
dHJlYW06Ok1lbW9yeVN0cmVhbSgpIHt9Ci0KLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKGNv
bnN0IGNoYXIqIGRhdGEpIHsKLSAgU2V0RGF0YShkYXRhLCBzdHJsZW4oZGF0YSkpOwotfQotCi1N
ZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KSB7Ci0gIFNldERhdGEoZGF0YSwgbGVuZ3RoKTsKLX0KLQotTWVtb3J5U3RyZWFtOjp+TWVtb3J5
U3RyZWFtKCkgewotICBkZWxldGVbXSBidWZmZXJfOwotfQotCi12b2lkIE1lbW9yeVN0cmVhbTo6
U2V0RGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7Ci0gIGRhdGFfbGVuZ3Ro
XyA9IGJ1ZmZlcl9sZW5ndGhfID0gbGVuZ3RoOwotICBkZWxldGVbXSBidWZmZXJfOwotICBidWZm
ZXJfID0gbmV3IGNoYXJbYnVmZmVyX2xlbmd0aF9dOwotICBtZW1jcHkoYnVmZmVyXywgZGF0YSwg
ZGF0YV9sZW5ndGhfKTsKLSAgc2Vla19wb3NpdGlvbl8gPSAwOwotfQotCi1TdHJlYW1SZXN1bHQg
TWVtb3J5U3RyZWFtOjpEb1Jlc2VydmUoc2l6ZV90IHNpemUsIGludCogZXJyb3IpIHsKLSAgaWYg
KGJ1ZmZlcl9sZW5ndGhfID49IHNpemUpCi0gICAgcmV0dXJuIFNSX1NVQ0NFU1M7Ci0KLSAgaWYg
KGNoYXIqIG5ld19idWZmZXIgPSBuZXcgY2hhcltzaXplXSkgewotICAgIG1lbWNweShuZXdfYnVm
ZmVyLCBidWZmZXJfLCBkYXRhX2xlbmd0aF8pOwotICAgIGRlbGV0ZVtdIGJ1ZmZlcl87Ci0gICAg
YnVmZmVyXyA9IG5ld19idWZmZXI7Ci0gICAgYnVmZmVyX2xlbmd0aF8gPSBzaXplOwotICAgIHJl
dHVybiBTUl9TVUNDRVNTOwotICB9Ci0KLSAgaWYgKGVycm9yKSB7Ci0gICAgKmVycm9yID0gRU5P
TUVNOwotICB9Ci0gIHJldHVybiBTUl9FUlJPUjsKLX0KLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwogLy8gRmlmb0J1ZmZlcgogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtNzU4LDY4ICs1Nzks
NCBAQCBTdHJlYW1SZXN1bHQgRmlmb0J1ZmZlcjo6V3JpdGVPZmZzZXRMb2NrZWQoY29uc3Qgdm9p
ZCogYnVmZmVyLAogICByZXR1cm4gU1JfU1VDQ0VTUzsKIH0KIAotCi0vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCi0KLVN0cmVhbVJlc3VsdCBGbG93KFN0cmVhbUludGVyZmFjZSogc291cmNlLAotICAg
ICAgICAgICAgICAgICAgY2hhciogYnVmZmVyLAotICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ1
ZmZlcl9sZW4sCi0gICAgICAgICAgICAgICAgICBTdHJlYW1JbnRlcmZhY2UqIHNpbmssCi0gICAg
ICAgICAgICAgICAgICBzaXplX3QqIGRhdGFfbGVuIC8qID0gbnVsbHB0ciAqLykgewotICBSVENf
RENIRUNLKGJ1ZmZlcl9sZW4gPiAwKTsKLQotICBTdHJlYW1SZXN1bHQgcmVzdWx0OwotICBzaXpl
X3QgY291bnQsIHJlYWRfcG9zLCB3cml0ZV9wb3M7Ci0gIGlmIChkYXRhX2xlbikgewotICAgIHJl
YWRfcG9zID0gKmRhdGFfbGVuOwotICB9IGVsc2UgewotICAgIHJlYWRfcG9zID0gMDsKLSAgfQot
Ci0gIGJvb2wgZW5kX29mX3N0cmVhbSA9IGZhbHNlOwotICBkbyB7Ci0gICAgLy8gUmVhZCB1bnRp
bCBidWZmZXIgaXMgZnVsbCwgZW5kIG9mIHN0cmVhbSwgb3IgZXJyb3IKLSAgICB3aGlsZSAoIWVu
ZF9vZl9zdHJlYW0gJiYgKHJlYWRfcG9zIDwgYnVmZmVyX2xlbikpIHsKLSAgICAgIHJlc3VsdCA9
IHNvdXJjZS0+UmVhZChidWZmZXIgKyByZWFkX3BvcywgYnVmZmVyX2xlbiAtIHJlYWRfcG9zLCAm
Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICBpZiAo
cmVzdWx0ID09IFNSX0VPUykgewotICAgICAgICBlbmRfb2Zfc3RyZWFtID0gdHJ1ZTsKLSAgICAg
IH0gZWxzZSBpZiAocmVzdWx0ICE9IFNSX1NVQ0NFU1MpIHsKLSAgICAgICAgaWYgKGRhdGFfbGVu
KSB7Ci0gICAgICAgICAgKmRhdGFfbGVuID0gcmVhZF9wb3M7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlYWRfcG9zICs9IGNvdW50
OwotICAgICAgfQotICAgIH0KLQotICAgIC8vIFdyaXRlIHVudGlsIGJ1ZmZlciBpcyBlbXB0eSwg
b3IgZXJyb3IgKGluY2x1ZGluZyBlbmQgb2Ygc3RyZWFtKQotICAgIHdyaXRlX3BvcyA9IDA7Ci0g
ICAgd2hpbGUgKHdyaXRlX3BvcyA8IHJlYWRfcG9zKSB7Ci0gICAgICByZXN1bHQgPSBzaW5rLT5X
cml0ZShidWZmZXIgKyB3cml0ZV9wb3MsIHJlYWRfcG9zIC0gd3JpdGVfcG9zLCAmY291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgIGlmIChyZXN1bHQgIT0g
U1JfU1VDQ0VTUykgewotICAgICAgICBpZiAoZGF0YV9sZW4pIHsKLSAgICAgICAgICAqZGF0YV9s
ZW4gPSByZWFkX3BvcyAtIHdyaXRlX3BvczsKLSAgICAgICAgICBpZiAod3JpdGVfcG9zID4gMCkg
ewotICAgICAgICAgICAgbWVtbW92ZShidWZmZXIsIGJ1ZmZlciArIHdyaXRlX3BvcywgKmRhdGFf
bGVuKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICAgIH0KLSAgICAgIHdyaXRlX3BvcyArPSBjb3VudDsKLSAgICB9Ci0KLSAgICByZWFkX3BvcyA9
IDA7Ci0gIH0gd2hpbGUgKCFlbmRfb2Zfc3RyZWFtKTsKLQotICBpZiAoZGF0YV9sZW4pIHsKLSAg
ICAqZGF0YV9sZW4gPSAwOwotICB9Ci0gIHJldHVybiBTUl9TVUNDRVNTOwotfQotCi0vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0KIH0gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmVhbS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyZWFt
LmgKaW5kZXggODFjNWU0MTgwMWE1YmFhZDY1MWI0MmI1ZGFkZDg0NTNiNTEyMzM3OC4uNDNlN2Y1
OGJjN2MwOTYxMzcxY2E5Y2UxZWQ4NjVjMDBiYWMwYmU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyZWFtLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyZWFt
LmgKQEAgLTE4LDcgKzE4LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3Jp
dGljYWxzZWN0aW9uLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL21lc3NhZ2VoYW5kbGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZXF1
ZXVlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90Lmgi
CkBAIC0xMDgsNTkgKzEwNyw2IEBAIGNsYXNzIFN0cmVhbUludGVyZmFjZSA6IHB1YmxpYyBNZXNz
YWdlSGFuZGxlciB7CiAgIC8vIExpa2UgdGhlIGFmb3JlbWVudGlvbmVkIG1ldGhvZCwgYnV0IHBv
c3RzIHRvIHRoZSBjdXJyZW50IHRocmVhZC4KICAgdm9pZCBQb3N0RXZlbnQoaW50IGV2ZW50cywg
aW50IGVycik7CiAKLSAgLy8KLSAgLy8gT1BUSU9OQUwgT1BFUkFUSU9OUwotICAvLwotICAvLyBO
b3QgYWxsIGltcGxlbWVudGF0aW9ucyB3aWxsIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBvcGVyYXRp
b25zLiAgSW4gZ2VuZXJhbCwKLSAgLy8gYSBzdHJlYW0gd2lsbCBvbmx5IHN1cHBvcnQgYW4gb3Bl
cmF0aW9uIGlmIGl0IHJlYXNvbmFibHkgZWZmaWNpZW50IHRvIGRvCi0gIC8vIHNvLiAgRm9yIGV4
YW1wbGUsIHdoaWxlIGEgc29ja2V0IGNvdWxkIGJ1ZmZlciBpbmNvbWluZyBkYXRhIHRvIHN1cHBv
cnQKLSAgLy8gc2Vla2luZywgaXQgd2lsbCBub3QgZG8gc28uICBJbnN0ZWFkLCBhIGJ1ZmZlcmlu
ZyBzdHJlYW0gYWRhcHRlciBzaG91bGQKLSAgLy8gYmUgdXNlZC4KLSAgLy8KLSAgLy8gRXZlbiB0
aG91Z2ggc2V2ZXJhbCBvZiB0aGVzZSBvcGVyYXRpb25zIGFyZSByZWxhdGVkLCB5b3Ugc2hvdWxk
Ci0gIC8vIGFsd2F5cyB1c2Ugd2hpY2hldmVyIG9wZXJhdGlvbiBpcyBtb3N0IHJlbGV2YW50Lgot
ICAvLwotICAvLyBUaGUgZm9sbG93aW5nIGZvdXIgbWV0aG9kcyBhcmUgdXNlZCB0byBhdm9pZCBj
b3B5aW5nIGRhdGEgbXVsdGlwbGUgdGltZXMuCi0KLSAgLy8gR2V0UmVhZERhdGEgcmV0dXJucyBh
IHBvaW50ZXIgdG8gYSBidWZmZXIgd2hpY2ggaXMgb3duZWQgYnkgdGhlIHN0cmVhbS4KLSAgLy8g
VGhlIGJ1ZmZlciBjb250YWlucyBkYXRhX2xlbiBieXRlcy4gIG51bGwgaXMgcmV0dXJuZWQgaWYg
bm8gZGF0YSBpcwotICAvLyBhdmFpbGFibGUsIG9yIGlmIHRoZSBtZXRob2QgZmFpbHMuICBJZiB0
aGUgY2FsbGVyIHByb2Nlc3NlcyB0aGUgZGF0YSwgaXQKLSAgLy8gbXVzdCBjYWxsIENvbnN1bWVS
ZWFkRGF0YSB3aXRoIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VkIGJ5dGVzLiAgR2V0UmVhZERhdGEK
LSAgLy8gZG9lcyBub3QgcmVxdWlyZSBhIG1hdGNoaW5nIGNhbGwgdG8gQ29uc3VtZVJlYWREYXRh
IGlmIHRoZSBkYXRhIGlzIG5vdAotICAvLyBwcm9jZXNzZWQuICBSZWFkIGFuZCBDb25zdW1lUmVh
ZERhdGEgaW52YWxpZGF0ZSB0aGUgYnVmZmVyIHJldHVybmVkIGJ5Ci0gIC8vIEdldFJlYWREYXRh
LgotICB2aXJ0dWFsIGNvbnN0IHZvaWQqIEdldFJlYWREYXRhKHNpemVfdCogZGF0YV9sZW4pOwot
ICB2aXJ0dWFsIHZvaWQgQ29uc3VtZVJlYWREYXRhKHNpemVfdCB1c2VkKSB7fQotCi0gIC8vIEdl
dFdyaXRlQnVmZmVyIHJldHVybnMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIHdoaWNoIGlzIG93bmVk
IGJ5IHRoZSBzdHJlYW0uCi0gIC8vIFRoZSBidWZmZXIgaGFzIGEgY2FwYWNpdHkgb2YgYnVmX2xl
biBieXRlcy4gIG51bGwgaXMgcmV0dXJuZWQgaWYgdGhlcmUgaXMKLSAgLy8gbm8gYnVmZmVyIGF2
YWlsYWJsZSwgb3IgaWYgdGhlIG1ldGhvZCBmYWlscy4gIFRoZSBjYWxsIG1heSB3cml0ZSBkYXRh
IHRvCi0gIC8vIHRoZSBidWZmZXIsIGFuZCB0aGVuIGNhbGwgQ29uc3VtZVdyaXRlQnVmZmVyIHdp
dGggdGhlIG51bWJlciBvZiBieXRlcwotICAvLyB3cml0dGVuLiAgR2V0V3JpdGVCdWZmZXIgZG9l
cyBub3QgcmVxdWlyZSBhIG1hdGNoaW5nIGNhbGwgdG8KLSAgLy8gQ29uc3VtZVdyaXRlRGF0YSBp
ZiBubyBkYXRhIGlzIHdyaXR0ZW4uICBXcml0ZSwgRm9yY2VXcml0ZSwgYW5kCi0gIC8vIENvbnN1
bWVXcml0ZURhdGEgaW52YWxpZGF0ZSB0aGUgYnVmZmVyIHJldHVybmVkIGJ5IEdldFdyaXRlQnVm
ZmVyLgotICAvLyBUT0RPOiBBbGxvdyB0aGUgY2FsbGVyIHRvIHNwZWNpZnkgYSBtaW5pbXVtIGJ1
ZmZlciBzaXplLiAgSWYgdGhlIHNwZWNpZmllZAotICAvLyBhbW91bnQgb2YgYnVmZmVyIGlzIG5v
dCB5ZXQgYXZhaWxhYmxlLCByZXR1cm4gbnVsbCBhbmQgU2lnbmFsIFNFX1dSSVRFCi0gIC8vIHdo
ZW4gaXQgaXMgYXZhaWxhYmxlLiAgSWYgdGhlIHJlcXVlc3RlZCBhbW91bnQgaXMgdG9vIGxhcmdl
LCByZXR1cm4gYW4KLSAgLy8gZXJyb3IuCi0gIHZpcnR1YWwgdm9pZCogR2V0V3JpdGVCdWZmZXIo
c2l6ZV90KiBidWZfbGVuKTsKLSAgdmlydHVhbCB2b2lkIENvbnN1bWVXcml0ZUJ1ZmZlcihzaXpl
X3QgdXNlZCkge30KLQotICAvLyBXcml0ZSBkYXRhX2xlbiBieXRlcyBmb3VuZCBpbiBkYXRhLCBj
aXJjdW12ZW50aW5nIGFueSB0aHJvdHRsaW5nIHdoaWNoCi0gIC8vIHdvdWxkIGNvdWxkIGNhdXNl
IFNSX0JMT0NLIHRvIGJlIHJldHVybmVkLiAgUmV0dXJucyB0cnVlIGlmIGFsbCB0aGUgZGF0YQot
ICAvLyB3YXMgd3JpdHRlbi4gIE90aGVyd2lzZSwgdGhlIG1ldGhvZCBpcyB1bnN1cHBvcnRlZCwg
b3IgYW4gdW5yZWNvdmVyYWJsZQotICAvLyBlcnJvciBvY2N1cnJlZCwgYW5kIHRoZSBlcnJvciB2
YWx1ZSBpcyBzZXQuICBUaGlzIG1ldGhvZCBzaG91bGQgYmUgdXNlZAotICAvLyBzcGFyaW5nbHkg
dG8gd3JpdGUgY3JpdGljYWwgZGF0YSB3aGljaCBzaG91bGQgbm90IGJlIHRocm90dGxlZC4gIEEg
c3RyZWFtCi0gIC8vIHdoaWNoIGNhbm5vdCBjaXJjdW12ZW50IGl0cyBibG9ja2luZyBjb25zdHJh
aW50cyBzaG91bGQgbm90IGltcGxlbWVudCB0aGlzCi0gIC8vIG1ldGhvZC4KLSAgLy8gTk9URTog
VGhpcyBpbnRlcmZhY2UgaXMgYmVpbmcgY29uc2lkZXJlZCBleHBlcmltZW50YWxseSBhdCB0aGUg
bW9tZW50LiAgSXQKLSAgLy8gd291bGQgYmUgdXNlZCBieSBKVURQIGFuZCBCYW5kd2lkdGhTdHJl
YW0gYXMgYSB3YXkgdG8gY2lyY3VtdmVudCBjZXJ0YWluCi0gIC8vIHNvZnQgbGltaXRzIGluIHdy
aXRpbmcuCi0gIC8vIHZpcnR1YWwgYm9vbCBGb3JjZVdyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBkYXRhX2xlbiwgaW50KiBlcnJvcikgewotICAvLyAgaWYgKGVycm9yKSAqZXJyb3IgPSAt
MTsKLSAgLy8gIHJldHVybiBmYWxzZTsKLSAgLy99Ci0KICAgLy8gU2VlayB0byBhIGJ5dGUgb2Zm
c2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtLiAgUmV0dXJucyBmYWxzZSBpZgog
ICAvLyB0aGUgc3RyZWFtIGRvZXMgbm90IHN1cHBvcnQgc2Vla2luZywgb3IgY2Fubm90IHNlZWsg
dG8gdGhlIHNwZWNpZmllZAogICAvLyBwb3NpdGlvbi4KQEAgLTE3NCwxMCArMTIwLDYgQEAgY2xh
c3MgU3RyZWFtSW50ZXJmYWNlIDogcHVibGljIE1lc3NhZ2VIYW5kbGVyIHsKICAgLy8gaXMgbm90
IGtub3duLgogICB2aXJ0dWFsIGJvb2wgR2V0U2l6ZShzaXplX3QqIHNpemUpIGNvbnN0OwogCi0g
IC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIFdyaXRlKCktYWJsZSBieXRlcyByZW1haW5pbmcgYmVm
b3JlIGVuZC1vZi1zdHJlYW0uCi0gIC8vIFJldHVybnMgZmFsc2UgaWYgbm90IGtub3duLgotICB2
aXJ0dWFsIGJvb2wgR2V0V3JpdGVSZW1haW5pbmcoc2l6ZV90KiBzaXplKSBjb25zdDsKLQogICAv
LyBSZXR1cm4gdHJ1ZSBpZiBmbHVzaCBpcyBzdWNjZXNzZnVsLgogICB2aXJ0dWFsIGJvb2wgRmx1
c2goKTsKIApAQCAtMjE0LDEyICsxNTYsNiBAQCBjbGFzcyBTdHJlYW1JbnRlcmZhY2UgOiBwdWJs
aWMgTWVzc2FnZUhhbmRsZXIgewogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIHJlYWQs
CiAgICAgICAgICAgICAgICAgICAgICAgIGludCogZXJyb3IpOwogCi0gIC8vIFJlYWRMaW5lIGlz
IGEgaGVscGVyIGZ1bmN0aW9uIHdoaWNoIHJlcGVhdGVkbHkgY2FsbHMgUmVhZCB1bnRpbCBpdCBo
aXRzCi0gIC8vIHRoZSBlbmQtb2YtbGluZSBjaGFyYWN0ZXIsIG9yIHNvbWV0aGluZyBvdGhlciB0
aGFuIFNSX1NVQ0NFU1MuCi0gIC8vIFRPRE86IHRoaXMgaXMgdG9vIGluZWZmaWNpZW50IHRvIGtl
ZXAgaGVyZS4gIEJyZWFrIHRoaXMgb3V0IGludG8gYSBidWZmZXJlZAotICAvLyByZWFkbGluZSBv
YmplY3Qgb3IgYWRhcHRlcgotICBTdHJlYW1SZXN1bHQgUmVhZExpbmUoc3RkOjpzdHJpbmcqIGxp
bmUpOwotCiAgcHJvdGVjdGVkOgogICBTdHJlYW1JbnRlcmZhY2UoKTsKIApAQCAtMjU1LDM3ICsx
OTEsOSBAQCBjbGFzcyBTdHJlYW1BZGFwdGVySW50ZXJmYWNlIDogcHVibGljIFN0cmVhbUludGVy
ZmFjZSwKICAgICAgICAgICAgICAgICAgICAgIGludCogZXJyb3IpIG92ZXJyaWRlOwogICB2b2lk
IENsb3NlKCkgb3ZlcnJpZGU7CiAKLSAgLy8gT3B0aW9uYWwgU3RyZWFtIEludGVyZmFjZQotICAv
KiAgTm90ZTogTWFueSBzdHJlYW0gYWRhcHRlcnMgd2VyZSBpbXBsZW1lbnRlZCBwcmlvciB0byB0
aGlzIFJlYWQvV3JpdGUKLSAgICAgIGludGVyZmFjZS4gIFRoZXJlZm9yZSwgYSBzaW1wbGUgcGFz
cyB0aHJvdWdoIG9mIGRhdGEgaW4gdGhvc2UgY2FzZXMgbWF5Ci0gICAgICBiZSBicm9rZW4uICBB
dCBhIGxhdGVyIHRpbWUsIHdlIHNob3VsZCBkbyBhIG9uY2Utb3ZlciBwYXNzIG9mIGFsbAotICAg
ICAgYWRhcHRlcnMsIGFuZCBtYWtlIHRoZW0gY29tcGxpYW50IHdpdGggdGhlc2UgaW50ZXJmYWNl
cywgYWZ0ZXIgd2hpY2ggdGhpcwotICAgICAgY29kZSBjYW4gYmUgdW5jb21tZW50ZWQuCi0gIHZp
cnR1YWwgY29uc3Qgdm9pZCogR2V0UmVhZERhdGEoc2l6ZV90KiBkYXRhX2xlbikgewotICAgIHJl
dHVybiBzdHJlYW1fLT5HZXRSZWFkRGF0YShkYXRhX2xlbik7Ci0gIH0KLSAgdmlydHVhbCB2b2lk
IENvbnN1bWVSZWFkRGF0YShzaXplX3QgdXNlZCkgewotICAgIHN0cmVhbV8tPkNvbnN1bWVSZWFk
RGF0YSh1c2VkKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCogR2V0V3JpdGVCdWZmZXIoc2l6ZV90
KiBidWZfbGVuKSB7Ci0gICAgcmV0dXJuIHN0cmVhbV8tPkdldFdyaXRlQnVmZmVyKGJ1Zl9sZW4p
OwotICB9Ci0gIHZpcnR1YWwgdm9pZCBDb25zdW1lV3JpdGVCdWZmZXIoc2l6ZV90IHVzZWQpIHsK
LSAgICBzdHJlYW1fLT5Db25zdW1lV3JpdGVCdWZmZXIodXNlZCk7Ci0gIH0KLSAgKi8KLQotICAv
KiAgTm90ZTogVGhpcyBpbnRlcmZhY2UgaXMgY3VycmVudGx5IHVuZGVyZ29pbmcgZXZhbHVhdGlv
bi4KLSAgdmlydHVhbCBib29sIEZvcmNlV3JpdGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRh
dGFfbGVuLCBpbnQqIGVycm9yKSB7Ci0gICAgcmV0dXJuIHN0cmVhbV8tPkZvcmNlV3JpdGUoZGF0
YSwgZGF0YV9sZW4sIGVycm9yKTsKLSAgfQotICAqLwotCiAgIGJvb2wgU2V0UG9zaXRpb24oc2l6
ZV90IHBvc2l0aW9uKSBvdmVycmlkZTsKICAgYm9vbCBHZXRQb3NpdGlvbihzaXplX3QqIHBvc2l0
aW9uKSBjb25zdCBvdmVycmlkZTsKICAgYm9vbCBHZXRTaXplKHNpemVfdCogc2l6ZSkgY29uc3Qg
b3ZlcnJpZGU7Ci0gIGJvb2wgR2V0V3JpdGVSZW1haW5pbmcoc2l6ZV90KiBzaXplKSBjb25zdCBv
dmVycmlkZTsKICAgYm9vbCBSZXNlcnZlU2l6ZShzaXplX3Qgc2l6ZSkgb3ZlcnJpZGU7CiAgIGJv
b2wgRmx1c2goKSBvdmVycmlkZTsKIApAQCAtMzUzLDY4ICsyNjEsMTEgQEAgY2xhc3MgRmlsZVN0
cmVhbSA6IHB1YmxpYyBTdHJlYW1JbnRlcmZhY2UgewogICBSVENfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOKEZpbGVTdHJlYW0pOwogfTsKIAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gTWVt
b3J5U3RyZWFtIGlzIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIGEgU3RyZWFtSW50ZXJmYWNl
IG92ZXIgaW4tbWVtb3J5Ci0vLyBkYXRhLiAgRGF0YSBpcyByZWFkIGFuZCB3cml0dGVuIGF0IHRo
ZSBjdXJyZW50IHNlZWsgcG9zaXRpb24uICBSZWFkcyByZXR1cm4KLS8vIGVuZC1vZi1zdHJlYW0g
d2hlbiB0aGV5IHJlYWNoIHRoZSBlbmQgb2YgZGF0YS4gIFdyaXRlcyBhY3R1YWxseSBleHRlbmQg
dGhlCi0vLyBlbmQgb2YgZGF0YSBtYXJrLgotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1jbGFz
cyBNZW1vcnlTdHJlYW1CYXNlIDogcHVibGljIFN0cmVhbUludGVyZmFjZSB7Ci0gcHVibGljOgot
ICBTdHJlYW1TdGF0ZSBHZXRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICBTdHJlYW1SZXN1bHQg
UmVhZCh2b2lkKiBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlcywKLSAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc19yZWFkLAotICAgICAgICAgICAgICAgICAg
ICBpbnQqIGVycm9yKSBvdmVycmlkZTsKLSAgU3RyZWFtUmVzdWx0IFdyaXRlKGNvbnN0IHZvaWQq
IGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlcywKLSAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCogYnl0ZXNfd3JpdHRlbiwKLSAgICAgICAgICAgICAgICAgICAgIGlu
dCogZXJyb3IpIG92ZXJyaWRlOwotICB2b2lkIENsb3NlKCkgb3ZlcnJpZGU7Ci0gIGJvb2wgU2V0
UG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBvdmVycmlkZTsKLSAgYm9vbCBHZXRQb3NpdGlvbihz
aXplX3QqIHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZTsKLSAgYm9vbCBHZXRTaXplKHNpemVfdCog
c2l6ZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGJvb2wgUmVzZXJ2ZVNpemUoc2l6ZV90IHNpemUpIG92
ZXJyaWRlOwotCi0gIGNoYXIqIEdldEJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlcl87IH0KLSAgY29u
c3QgY2hhciogR2V0QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gYnVmZmVyXzsgfQotCi0gcHJvdGVj
dGVkOgotICBNZW1vcnlTdHJlYW1CYXNlKCk7Ci0KLSAgdmlydHVhbCBTdHJlYW1SZXN1bHQgRG9S
ZXNlcnZlKHNpemVfdCBzaXplLCBpbnQqIGVycm9yKTsKLQotICAvLyBJbnZhcmlhbnQ6IDAgPD0g
c2Vla19wb3NpdGlvbiA8PSBkYXRhX2xlbmd0aF8gPD0gYnVmZmVyX2xlbmd0aF8KLSAgY2hhciog
YnVmZmVyXzsKLSAgc2l6ZV90IGJ1ZmZlcl9sZW5ndGhfOwotICBzaXplX3QgZGF0YV9sZW5ndGhf
OwotICBzaXplX3Qgc2Vla19wb3NpdGlvbl87Ci0KLSBwcml2YXRlOgotICBSVENfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKE1lbW9yeVN0cmVhbUJhc2UpOwotfTsKLQotLy8gTWVtb3J5U3RyZWFt
IGR5bmFtaWNhbGx5IHJlc2l6ZXMgdG8gYWNjb21vZGF0ZSB3cml0dGVuIGRhdGEuCi0KLWNsYXNz
IE1lbW9yeVN0cmVhbSA6IHB1YmxpYyBNZW1vcnlTdHJlYW1CYXNlIHsKLSBwdWJsaWM6Ci0gIE1l
bW9yeVN0cmVhbSgpOwotICBleHBsaWNpdCBNZW1vcnlTdHJlYW0oY29uc3QgY2hhciogZGF0YSk7
ICAvLyBDYWxscyBTZXREYXRhKGRhdGEsIHN0cmxlbihkYXRhKSkKLSAgTWVtb3J5U3RyZWFtKGNv
bnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpOyAgLy8gQ2FsbHMgU2V0RGF0YShkYXRhLCBs
ZW5ndGgpCi0gIH5NZW1vcnlTdHJlYW0oKSBvdmVycmlkZTsKLQotICB2b2lkIFNldERhdGEoY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCk7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIFN0cmVhbVJl
c3VsdCBEb1Jlc2VydmUoc2l6ZV90IHNpemUsIGludCogZXJyb3IpIG92ZXJyaWRlOwotfTsKLQog
Ly8gRmlmb0J1ZmZlciBhbGxvd3MgZm9yIGVmZmljaWVudCwgdGhyZWFkLXNhZmUgYnVmZmVyaW5n
IG9mIGRhdGEgYmV0d2VlbgogLy8gd3JpdGVyIGFuZCByZWFkZXIuIEFzIHRoZSBkYXRhIGNhbiB3
cmFwIGFyb3VuZCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsCiAvLyBNZW1vcnlTdHJlYW1CYXNlIGNh
bid0IGhlbHAgdXMgaGVyZS4KIAotY2xhc3MgRmlmb0J1ZmZlciA6IHB1YmxpYyBTdHJlYW1JbnRl
cmZhY2UgeworY2xhc3MgRmlmb0J1ZmZlciBmaW5hbCA6IHB1YmxpYyBTdHJlYW1JbnRlcmZhY2Ug
ewogIHB1YmxpYzoKICAgLy8gQ3JlYXRlcyBhIEZJRk8gYnVmZmVyIHdpdGggdGhlIHNwZWNpZmll
ZCBjYXBhY2l0eS4KICAgZXhwbGljaXQgRmlmb0J1ZmZlcihzaXplX3QgbGVuZ3RoKTsKQEAgLTQ1
NSwxMSArMzA2LDI4IEBAIGNsYXNzIEZpZm9CdWZmZXIgOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNl
IHsKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfd3JpdHRlbiwKICAgICAgICAg
ICAgICAgICAgICAgIGludCogZXJyb3IpIG92ZXJyaWRlOwogICB2b2lkIENsb3NlKCkgb3ZlcnJp
ZGU7Ci0gIGNvbnN0IHZvaWQqIEdldFJlYWREYXRhKHNpemVfdCogZGF0YV9sZW4pIG92ZXJyaWRl
OwotICB2b2lkIENvbnN1bWVSZWFkRGF0YShzaXplX3QgdXNlZCkgb3ZlcnJpZGU7Ci0gIHZvaWQq
IEdldFdyaXRlQnVmZmVyKHNpemVfdCogYnVmX2xlbikgb3ZlcnJpZGU7Ci0gIHZvaWQgQ29uc3Vt
ZVdyaXRlQnVmZmVyKHNpemVfdCB1c2VkKSBvdmVycmlkZTsKLSAgYm9vbCBHZXRXcml0ZVJlbWFp
bmluZyhzaXplX3QqIHNpemUpIGNvbnN0IG92ZXJyaWRlOworICAvLyBHZXRSZWFkRGF0YSByZXR1
cm5zIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB3aGljaCBpcyBvd25lZCBieSB0aGUgc3RyZWFtLgor
ICAvLyBUaGUgYnVmZmVyIGNvbnRhaW5zIGRhdGFfbGVuIGJ5dGVzLiAgbnVsbCBpcyByZXR1cm5l
ZCBpZiBubyBkYXRhIGlzCisgIC8vIGF2YWlsYWJsZSwgb3IgaWYgdGhlIG1ldGhvZCBmYWlscy4g
IElmIHRoZSBjYWxsZXIgcHJvY2Vzc2VzIHRoZSBkYXRhLCBpdAorICAvLyBtdXN0IGNhbGwgQ29u
c3VtZVJlYWREYXRhIHdpdGggdGhlIG51bWJlciBvZiBwcm9jZXNzZWQgYnl0ZXMuICBHZXRSZWFk
RGF0YQorICAvLyBkb2VzIG5vdCByZXF1aXJlIGEgbWF0Y2hpbmcgY2FsbCB0byBDb25zdW1lUmVh
ZERhdGEgaWYgdGhlIGRhdGEgaXMgbm90CisgIC8vIHByb2Nlc3NlZC4gIFJlYWQgYW5kIENvbnN1
bWVSZWFkRGF0YSBpbnZhbGlkYXRlIHRoZSBidWZmZXIgcmV0dXJuZWQgYnkKKyAgLy8gR2V0UmVh
ZERhdGEuCisgIGNvbnN0IHZvaWQqIEdldFJlYWREYXRhKHNpemVfdCogZGF0YV9sZW4pOworICB2
b2lkIENvbnN1bWVSZWFkRGF0YShzaXplX3QgdXNlZCk7CisgIC8vIEdldFdyaXRlQnVmZmVyIHJl
dHVybnMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIHdoaWNoIGlzIG93bmVkIGJ5IHRoZSBzdHJlYW0u
CisgIC8vIFRoZSBidWZmZXIgaGFzIGEgY2FwYWNpdHkgb2YgYnVmX2xlbiBieXRlcy4gIG51bGwg
aXMgcmV0dXJuZWQgaWYgdGhlcmUgaXMKKyAgLy8gbm8gYnVmZmVyIGF2YWlsYWJsZSwgb3IgaWYg
dGhlIG1ldGhvZCBmYWlscy4gIFRoZSBjYWxsIG1heSB3cml0ZSBkYXRhIHRvCisgIC8vIHRoZSBi
dWZmZXIsIGFuZCB0aGVuIGNhbGwgQ29uc3VtZVdyaXRlQnVmZmVyIHdpdGggdGhlIG51bWJlciBv
ZiBieXRlcworICAvLyB3cml0dGVuLiAgR2V0V3JpdGVCdWZmZXIgZG9lcyBub3QgcmVxdWlyZSBh
IG1hdGNoaW5nIGNhbGwgdG8KKyAgLy8gQ29uc3VtZVdyaXRlRGF0YSBpZiBubyBkYXRhIGlzIHdy
aXR0ZW4uICBXcml0ZSBhbmQKKyAgLy8gQ29uc3VtZVdyaXRlRGF0YSBpbnZhbGlkYXRlIHRoZSBi
dWZmZXIgcmV0dXJuZWQgYnkgR2V0V3JpdGVCdWZmZXIuCisgIHZvaWQqIEdldFdyaXRlQnVmZmVy
KHNpemVfdCogYnVmX2xlbik7CisgIHZvaWQgQ29uc3VtZVdyaXRlQnVmZmVyKHNpemVfdCB1c2Vk
KTsKKworICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBXcml0ZSgpLWFibGUgYnl0ZXMgcmVtYWlu
aW5nIGJlZm9yZSBlbmQtb2Ytc3RyZWFtLgorICAvLyBSZXR1cm5zIGZhbHNlIGlmIG5vdCBrbm93
bi4KKyAgYm9vbCBHZXRXcml0ZVJlbWFpbmluZyhzaXplX3QqIHNpemUpIGNvbnN0OwogCiAgcHJp
dmF0ZToKICAgLy8gSGVscGVyIG1ldGhvZCB0aGF0IGltcGxlbWVudHMgUmVhZE9mZnNldC4gQ2Fs
bGVyIG11c3QgYWNxdWlyZSBhIGxvY2sKQEAgLTQ5NSwyNSArMzYzLDYgQEAgY2xhc3MgRmlmb0J1
ZmZlciA6IHB1YmxpYyBTdHJlYW1JbnRlcmZhY2UgewogICBSVENfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOKEZpZm9CdWZmZXIpOwogfTsKIAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyBG
bG93IGF0dGVtcHRzIHRvIG1vdmUgYnl0ZXMgZnJvbSBzb3VyY2UgdG8gc2luayB2aWEgYnVmZmVy
IG9mIHNpemUKLS8vIGJ1ZmZlcl9sZW4uICBUaGUgZnVuY3Rpb24gcmV0dXJucyBTUl9TVUNDRVNT
IHdoZW4gc291cmNlIHJlYWNoZXMKLS8vIGVuZC1vZi1zdHJlYW0gKHJldHVybnMgU1JfRU9TKSwg
YW5kIGFsbCB0aGUgZGF0YSBoYXMgYmVlbiB3cml0dGVuIHN1Y2Nlc3NmdWwKLS8vIHRvIHNpbmsu
ICBBbHRlcm5hdGVseSwgaWYgc291cmNlIHJldHVybnMgU1JfQkxPQ0sgb3IgU1JfRVJST1IsIG9y
IGlmIHNpbmsKLS8vIHJldHVybnMgU1JfQkxPQ0ssIFNSX0VSUk9SLCBvciBTUl9FT1MsIHRoZW4g
dGhlIGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHJldHVybnMKLS8vIHdpdGggdGhlIHVuZXhwZWN0ZWQg
U3RyZWFtUmVzdWx0IHZhbHVlLgotLy8gZGF0YV9sZW4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgdmFs
aWQgZGF0YSBpbiBidWZmZXIuIGluIGNhc2Ugb2YgZXJyb3IKLS8vIHRoaXMgaXMgdGhlIGRhdGEg
dGhhdCByZWFkIGZyb20gc291cmNlIGJ1dCBjYW4ndCBtb3ZlIHRvIGRlc3RpbmF0aW9uLgotLy8g
YXMgYSBwYXNzIGluIHBhcmFtZXRlciwgaXQgaW5kaWNhdGVzIGRhdGEgaW4gYnVmZmVyIHRoYXQg
c2hvdWxkIG1vdmUgdG8gc2luawotU3RyZWFtUmVzdWx0IEZsb3coU3RyZWFtSW50ZXJmYWNlKiBz
b3VyY2UsCi0gICAgICAgICAgICAgICAgICBjaGFyKiBidWZmZXIsCi0gICAgICAgICAgICAgICAg
ICBzaXplX3QgYnVmZmVyX2xlbiwKLSAgICAgICAgICAgICAgICAgIFN0cmVhbUludGVyZmFjZSog
c2luaywKLSAgICAgICAgICAgICAgICAgIHNpemVfdCogZGF0YV9sZW4gPSBudWxscHRyKTsKLQot
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCiB9ICAvLyBuYW1lc3BhY2UgcnRjCiAKICNlbmRpZiAg
Ly8gUlRDX0JBU0VfU1RSRUFNX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJlYW1fdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJlYW1fdW5pdHRl
c3QuY2MKaW5kZXggNjE2NzgzY2I0ZGM3NjAxMWY2MDc5M2EwNmEyOGIwOGZmNzk4MzIwZS4uMmNh
MjUyNmMzY2FhZWE3MGY0NTQzYzA5ODYyYjRiYmNmYWY0Y2RhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyZWFtX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3N0cmVhbV91bml0dGVzdC5jYwpAQCAtMTA1LDU2ICsxMDUsNTIgQEAgVEVTVChGaWZv
QnVmZmVyVGVzdCwgVGVzdEFsbCkgewogICBjb25zdCB2b2lkKiBxOwogICBzaXplX3QgYnl0ZXM7
CiAgIEZpZm9CdWZmZXIgYnVmKGtTaXplKTsKLSAgU3RyZWFtSW50ZXJmYWNlKiBzdHJlYW0gPSAm
YnVmOwogCiAgIC8vIFRlc3QgYXNzdW1wdGlvbnMgYWJvdXQgYmFzZSBzdGF0ZQotICBFWFBFQ1Rf
RVEoU1NfT1BFTiwgc3RyZWFtLT5HZXRTdGF0ZSgpKTsKLSAgRVhQRUNUX0VRKFNSX0JMT0NLLCBz
dHJlYW0tPlJlYWQob3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7Ci0gIEVYUEVDVF9UUlVF
KG51bGxwdHIgIT0gc3RyZWFtLT5HZXRSZWFkRGF0YSgmYnl0ZXMpKTsKLSAgRVhQRUNUX0VRKChz
aXplX3QpMCwgYnl0ZXMpOwotICBzdHJlYW0tPkNvbnN1bWVSZWFkRGF0YSgwKTsKLSAgRVhQRUNU
X1RSVUUobnVsbHB0ciAhPSBzdHJlYW0tPkdldFdyaXRlQnVmZmVyKCZieXRlcykpOworICBFWFBF
Q1RfRVEoU1NfT1BFTiwgYnVmLkdldFN0YXRlKCkpOworICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIGJ1
Zi5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfVFJVRShudWxs
cHRyICE9IGJ1Zi5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpKTsKICAgRVhQRUNUX0VRKGtTaXplLCBi
eXRlcyk7Ci0gIHN0cmVhbS0+Q29uc3VtZVdyaXRlQnVmZmVyKDApOworICBidWYuQ29uc3VtZVdy
aXRlQnVmZmVyKDApOwogCiAgIC8vIFRyeSBhIGZ1bGwgd3JpdGUKLSAgRVhQRUNUX0VRKFNSX1NV
Q0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQ
RUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0cikp
OwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKIAogICAvLyBUcnkgYSB3cml0ZSB0aGF0IHNo
b3VsZCBibG9jawotICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXpl
LCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNUX0VRKFNSX0JMT0NLLCBidWYuV3JpdGUoaW4s
IGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKIAogICAvLyBUcnkgYSBmdWxsIHJlYWQKLSAgRVhQ
RUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplLCAmYnl0ZXMsIG51bGxw
dHIpKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUsICZieXRl
cywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAs
IG1lbWNtcChpbiwgb3V0LCBrU2l6ZSkpOwogCiAgIC8vIFRyeSBhIHJlYWQgdGhhdCBzaG91bGQg
YmxvY2sKLSAgRVhQRUNUX0VRKFNSX0JMT0NLLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSwgJmJ5
dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9CTE9DSywgYnVmLlJlYWQob3V0LCBrU2l6
ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAKICAgLy8gVHJ5IGEgdG9vLWJpZyB3cml0ZQotICBFWFBF
Q1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiwga1NpemUgKiAyLCAmYnl0ZXMsIG51
bGxwdHIpKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUgKiAy
LCAmYnl0ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGJ5dGVzLCBrU2l6ZSk7CiAKICAgLy8g
VHJ5IGEgdG9vLWJpZyByZWFkCi0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQo
b3V0LCBrU2l6ZSAqIDIsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VT
UywgYnVmLlJlYWQob3V0LCBrU2l6ZSAqIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1Rf
RVEoa1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSkp
OwogCiAgIC8vIFRyeSBzb21lIHNtYWxsIHdyaXRlcyBhbmQgcmVhZHMKLSAgRVhQRUNUX0VRKFNS
X1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7
CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVz
LCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKLSAgRVhQRUNUX0VR
KFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRy
KSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5
dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKICAgRVhQRUNU
X0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NF
U1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVY
UEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxs
cHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKLSAgRVhQRUNUX0VRKFNSX1NV
Q0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7Cisg
IEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVzLCBu
dWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKLSAgRVhQRUNUX0VRKFNS
X1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7
CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVz
LCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKICAgRVhQRUNUX0VR
KDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1Ms
IHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVD
VF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRy
KSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNt
cChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsKIApAQCAtMTY2LDUxICsxNjIsNTEgQEAgVEVTVChGaWZv
QnVmZmVyVGVzdCwgVGVzdEFsbCkgewogICAvLyBYWFhYV1dXV1dXV1dYWFhYIDQ1NjcwMTIzNDU2
NzAxMjMKICAgLy8gUlJSUlhYWFhYWFhYUlJSUiAuLi4uMDEyMzQ1NjcuLi4uCiAgIC8vIC4uLi5S
UlJSUlJSUi4uLi4gLi4uLi4uLi4uLi4uLi4uLgotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3Ry
ZWFtLT5Xcml0ZShpbiwga1NpemUgKiAzIC8gNCwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVD
VF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplICogMyAvIDQsICZieXRlcywgbnVs
bHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgKiAzIC8gNCwgYnl0ZXMpOwotICBFWFBFQ1RfRVEo
U1JfU1VDQ0VTUywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIp
KTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUgLyAyLCAmYnl0
ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplIC8gMiwgYnl0ZXMpOwogICBFWFBFQ1Rf
RVEoMCwgbWVtY21wKGluLCBvdXQsIGtTaXplIC8gMikpOwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VT
Uywgc3RyZWFtLT5Xcml0ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQ
RUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxw
dHIpKTsKICAgRVhQRUNUX0VRKGtTaXplIC8gMiwgYnl0ZXMpOwotICBFWFBFQ1RfRVEoU1JfU1VD
Q0VTUywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUgLyA0LCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAg
RVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUgLyA0LCAmYnl0ZXMsIG51
bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplIC8gNCwgYnl0ZXMpOwogICBFWFBFQ1RfRVEoMCwg
bWVtY21wKGluICsga1NpemUgLyAyLCBvdXQsIGtTaXplIC8gNCkpOwotICBFWFBFQ1RfRVEoU1Jf
U1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsK
KyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMs
IG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplIC8gMiwgYnl0ZXMpOwotICBFWFBFQ1RfRVEo
U1JfU1VDQ0VTUywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIp
KTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUgLyAyLCAmYnl0
ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplIC8gMiwgYnl0ZXMpOwogICBFWFBFQ1Rf
RVEoMCwgbWVtY21wKGluLCBvdXQsIGtTaXplIC8gMikpOwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VT
Uywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQ
RUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxw
dHIpKTsKICAgRVhQRUNUX0VRKGtTaXplIC8gMiwgYnl0ZXMpOwogICBFWFBFQ1RfRVEoMCwgbWVt
Y21wKGluLCBvdXQsIGtTaXplIC8gMikpOwogCiAgIC8vIFVzZSBHZXRXcml0ZUJ1ZmZlciB0byBy
ZXNldCB0aGUgcmVhZF9wb3NpdGlvbiBmb3IgdGhlIG5leHQgdGVzdHMKLSAgc3RyZWFtLT5HZXRX
cml0ZUJ1ZmZlcigmYnl0ZXMpOwotICBzdHJlYW0tPkNvbnN1bWVXcml0ZUJ1ZmZlcigwKTsKKyAg
YnVmLkdldFdyaXRlQnVmZmVyKCZieXRlcyk7CisgIGJ1Zi5Db25zdW1lV3JpdGVCdWZmZXIoMCk7
CiAKICAgLy8gVHJ5IHVzaW5nIEdldFJlYWREYXRhIHRvIGRvIGEgZnVsbCByZWFkCi0gIEVYUEVD
VF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRy
KSk7Ci0gIHEgPSBzdHJlYW0tPkdldFJlYWREYXRhKCZieXRlcyk7CisgIEVYUEVDVF9FUShTUl9T
VUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgcSA9IGJ1
Zi5HZXRSZWFkRGF0YSgmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHEpOwogICBF
WFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChxLCBpbiwga1Np
emUpKTsKLSAgc3RyZWFtLT5Db25zdW1lUmVhZERhdGEoa1NpemUpOwotICBFWFBFQ1RfRVEoU1Jf
QkxPQ0ssIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgYnVm
LkNvbnN1bWVSZWFkRGF0YShrU2l6ZSk7CisgIEVYUEVDVF9FUShTUl9CTE9DSywgYnVmLlJlYWQo
b3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAKICAgLy8gVHJ5IHVzaW5nIEdldFJlYWRE
YXRhIHRvIGRvIHNvbWUgc21hbGwgcmVhZHMKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVh
bS0+V3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKLSAgcSA9IHN0cmVhbS0+R2V0
UmVhZERhdGEoJmJ5dGVzKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwg
a1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBxID0gYnVmLkdldFJlYWREYXRhKCZieXRlcyk7
CiAgIEVYUEVDVF9UUlVFKG51bGxwdHIgIT0gcSk7CiAgIEVYUEVDVF9FUShrU2l6ZSwgYnl0ZXMp
OwogICBFWFBFQ1RfRVEoMCwgbWVtY21wKHEsIGluLCBrU2l6ZSAvIDIpKTsKLSAgc3RyZWFtLT5D
b25zdW1lUmVhZERhdGEoa1NpemUgLyAyKTsKLSAgcSA9IHN0cmVhbS0+R2V0UmVhZERhdGEoJmJ5
dGVzKTsKKyAgYnVmLkNvbnN1bWVSZWFkRGF0YShrU2l6ZSAvIDIpOworICBxID0gYnVmLkdldFJl
YWREYXRhKCZieXRlcyk7CiAgIEVYUEVDVF9UUlVFKG51bGxwdHIgIT0gcSk7CiAgIEVYUEVDVF9F
UShrU2l6ZSAvIDIsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChxLCBpbiArIGtTaXpl
IC8gMiwga1NpemUgLyAyKSk7Ci0gIHN0cmVhbS0+Q29uc3VtZVJlYWREYXRhKGtTaXplIC8gMik7
Ci0gIEVYUEVDVF9FUShTUl9CTE9DSywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUsICZieXRlcywg
bnVsbHB0cikpOworICBidWYuQ29uc3VtZVJlYWREYXRhKGtTaXplIC8gMik7CisgIEVYUEVDVF9F
UShTUl9CTE9DSywgYnVmLlJlYWQob3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAKICAg
Ly8gVHJ5IHVzaW5nIEdldFJlYWREYXRhIGluIGEgd3JhcGFyb3VuZCBjYXNlCiAgIC8vIFdXV1dX
V1dXV1dXV1dXV1cgMDEyMzQ1Njc4OUFCQ0RFRgpAQCAtMjE4LDQ2ICsyMTQsNDYgQEAgVEVTVChG
aWZvQnVmZmVyVGVzdCwgVGVzdEFsbCkgewogICAvLyBXV1dXV1dXVy4uLi5YWFhYIDAxMjM0NTY3
Li4uLkNERUYKICAgLy8gLi4uLi4uLi4uLi4uUlJSUiAwMTIzNDU2Ny4uLi4uLi4uCiAgIC8vIFJS
UlJSUlJSLi4uLi4uLi4gLi4uLi4uLi4uLi4uLi4uLgotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywg
c3RyZWFtLT5Xcml0ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwotICBFWFBFQ1RfRVEo
U1JfU1VDQ0VTUywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUgKiAzIC8gNCwgJmJ5dGVzLCBudWxs
cHRyKSk7Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAv
IDIsICZieXRlcywgbnVsbHB0cikpOwotICBxID0gc3RyZWFtLT5HZXRSZWFkRGF0YSgmYnl0ZXMp
OworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBu
dWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplICog
MyAvIDQsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldy
aXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOworICBxID0gYnVmLkdldFJlYWRE
YXRhKCZieXRlcyk7CiAgIEVYUEVDVF9UUlVFKG51bGxwdHIgIT0gcSk7CiAgIEVYUEVDVF9FUShr
U2l6ZSAvIDQsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChxLCBpbiArIGtTaXplICog
MyAvIDQsIGtTaXplIC8gNCkpOwotICBzdHJlYW0tPkNvbnN1bWVSZWFkRGF0YShrU2l6ZSAvIDQp
OwotICBxID0gc3RyZWFtLT5HZXRSZWFkRGF0YSgmYnl0ZXMpOworICBidWYuQ29uc3VtZVJlYWRE
YXRhKGtTaXplIC8gNCk7CisgIHEgPSBidWYuR2V0UmVhZERhdGEoJmJ5dGVzKTsKICAgRVhQRUNU
X1RSVUUobnVsbHB0ciAhPSBxKTsKICAgRVhQRUNUX0VRKGtTaXplIC8gMiwgYnl0ZXMpOwogICBF
WFBFQ1RfRVEoMCwgbWVtY21wKHEsIGluLCBrU2l6ZSAvIDIpKTsKLSAgc3RyZWFtLT5Db25zdW1l
UmVhZERhdGEoa1NpemUgLyAyKTsKKyAgYnVmLkNvbnN1bWVSZWFkRGF0YShrU2l6ZSAvIDIpOwog
CiAgIC8vIFVzZSBHZXRXcml0ZUJ1ZmZlciB0byByZXNldCB0aGUgcmVhZF9wb3NpdGlvbiBmb3Ig
dGhlIG5leHQgdGVzdHMKLSAgc3RyZWFtLT5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOwotICBzdHJl
YW0tPkNvbnN1bWVXcml0ZUJ1ZmZlcigwKTsKKyAgYnVmLkdldFdyaXRlQnVmZmVyKCZieXRlcyk7
CisgIGJ1Zi5Db25zdW1lV3JpdGVCdWZmZXIoMCk7CiAKICAgLy8gVHJ5IHVzaW5nIEdldFdyaXRl
QnVmZmVyIHRvIGRvIGEgZnVsbCB3cml0ZQotICBwID0gc3RyZWFtLT5HZXRXcml0ZUJ1ZmZlcigm
Ynl0ZXMpOworICBwID0gYnVmLkdldFdyaXRlQnVmZmVyKCZieXRlcyk7CiAgIEVYUEVDVF9UUlVF
KG51bGxwdHIgIT0gcCk7CiAgIEVYUEVDVF9FUShrU2l6ZSwgYnl0ZXMpOwogICBtZW1jcHkocCwg
aW4sIGtTaXplKTsKLSAgc3RyZWFtLT5Db25zdW1lV3JpdGVCdWZmZXIoa1NpemUpOwotICBFWFBF
Q1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0
cikpOworICBidWYuQ29uc3VtZVdyaXRlQnVmZmVyKGtTaXplKTsKKyAgRVhQRUNUX0VRKFNSX1NV
Q0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1Rf
RVEoa1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSkp
OwogCiAgIC8vIFRyeSB1c2luZyBHZXRXcml0ZUJ1ZmZlciB0byBkbyBzb21lIHNtYWxsIHdyaXRl
cwotICBwID0gc3RyZWFtLT5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOworICBwID0gYnVmLkdldFdy
aXRlQnVmZmVyKCZieXRlcyk7CiAgIEVYUEVDVF9UUlVFKG51bGxwdHIgIT0gcCk7CiAgIEVYUEVD
VF9FUShrU2l6ZSwgYnl0ZXMpOwogICBtZW1jcHkocCwgaW4sIGtTaXplIC8gMik7Ci0gIHN0cmVh
bS0+Q29uc3VtZVdyaXRlQnVmZmVyKGtTaXplIC8gMik7Ci0gIHAgPSBzdHJlYW0tPkdldFdyaXRl
QnVmZmVyKCZieXRlcyk7CisgIGJ1Zi5Db25zdW1lV3JpdGVCdWZmZXIoa1NpemUgLyAyKTsKKyAg
cCA9IGJ1Zi5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9
IHApOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7CiAgIG1lbWNweShwLCBpbiArIGtT
aXplIC8gMiwga1NpemUgLyAyKTsKLSAgc3RyZWFtLT5Db25zdW1lV3JpdGVCdWZmZXIoa1NpemUg
LyAyKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplLCAm
Ynl0ZXMsIG51bGxwdHIpKTsKKyAgYnVmLkNvbnN1bWVXcml0ZUJ1ZmZlcihrU2l6ZSAvIDIpOwor
ICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxs
cHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSwgYnl0ZXMpOwogICBFWFBFQ1RfRVEoMCwgbWVtY21w
KGluLCBvdXQsIGtTaXplKSk7CiAKQEAgLTI2Nyw1MyArMjYzLDUzIEBAIFRFU1QoRmlmb0J1ZmZl
clRlc3QsIFRlc3RBbGwpIHsKICAgLy8gLi4uLi4uLi5YWFhYV1dXVyAuLi4uLi4uLjg5QUIwMTIz
CiAgIC8vIFdXV1cuLi4uWFhYWFhYWFggNDU2Ny4uLi44OUFCMDEyMwogICAvLyBSUlJSLi4uLlJS
UlJSUlJSIC4uLi4uLi4uLi4uLi4uLi4KLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+
V3JpdGUoaW4sIGtTaXplICogMyAvIDQsICZieXRlcywgbnVsbHB0cikpOwotICBFWFBFQ1RfRVEo
U1JfU1VDQ0VTUywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIp
KTsKLSAgcCA9IHN0cmVhbS0+R2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKKyAgRVhQRUNUX0VRKFNS
X1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUgKiAzIC8gNCwgJmJ5dGVzLCBudWxscHRyKSk7
CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVz
LCBudWxscHRyKSk7CisgIHAgPSBidWYuR2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKICAgRVhQRUNU
X1RSVUUobnVsbHB0ciAhPSBwKTsKICAgRVhQRUNUX0VRKGtTaXplIC8gNCwgYnl0ZXMpOwogICBt
ZW1jcHkocCwgaW4sIGtTaXplIC8gNCk7Ci0gIHN0cmVhbS0+Q29uc3VtZVdyaXRlQnVmZmVyKGtT
aXplIC8gNCk7Ci0gIHAgPSBzdHJlYW0tPkdldFdyaXRlQnVmZmVyKCZieXRlcyk7CisgIGJ1Zi5D
b25zdW1lV3JpdGVCdWZmZXIoa1NpemUgLyA0KTsKKyAgcCA9IGJ1Zi5HZXRXcml0ZUJ1ZmZlcigm
Ynl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHApOwogICBFWFBFQ1RfRVEoa1NpemUg
LyAyLCBieXRlcyk7CiAgIG1lbWNweShwLCBpbiArIGtTaXplIC8gNCwga1NpemUgLyA0KTsKLSAg
c3RyZWFtLT5Db25zdW1lV3JpdGVCdWZmZXIoa1NpemUgLyA0KTsKLSAgRVhQRUNUX0VRKFNSX1NV
Q0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplICogMyAvIDQsICZieXRlcywgbnVsbHB0cikp
OworICBidWYuQ29uc3VtZVdyaXRlQnVmZmVyKGtTaXplIC8gNCk7CisgIEVYUEVDVF9FUShTUl9T
VUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplICogMyAvIDQsICZieXRlcywgbnVsbHB0cikpOwog
ICBFWFBFQ1RfRVEoa1NpemUgKiAzIC8gNCwgYnl0ZXMpOwogICBFWFBFQ1RfRVEoMCwgbWVtY21w
KGluICsga1NpemUgLyAyLCBvdXQsIGtTaXplIC8gNCkpOwogICBFWFBFQ1RfRVEoMCwgbWVtY21w
KGluLCBvdXQgKyBrU2l6ZSAvIDQsIGtTaXplIC8gNCkpOwogCiAgIC8vIENoZWNrIHRoYXQgdGhl
IHN0cmVhbSBpcyBub3cgZW1wdHkKLSAgRVhQRUNUX0VRKFNSX0JMT0NLLCBzdHJlYW0tPlJlYWQo
b3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9CTE9DSywgYnVm
LlJlYWQob3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAKICAgLy8gVHJ5IGdyb3dpbmcg
dGhlIGJ1ZmZlcgotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiwga1Np
emUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRl
KGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSwgYnl0ZXMp
OwogICBFWFBFQ1RfVFJVRShidWYuU2V0Q2FwYWNpdHkoa1NpemUgKiAyKSk7Ci0gIEVYUEVDVF9F
UShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluICsga1NpemUsIGtTaXplLCAmYnl0ZXMsIG51
bGxwdHIpKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiArIGtTaXplLCBr
U2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSwgYnl0ZXMpOwotICBF
WFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUgKiAyLCAmYnl0ZXMs
IG51bGxwdHIpKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUg
KiAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplICogMiwgYnl0ZXMpOwog
ICBFWFBFQ1RfRVEoMCwgbWVtY21wKGluLCBvdXQsIGtTaXplICogMikpOwogCiAgIC8vIFRyeSBz
aHJpbmtpbmcgdGhlIGJ1ZmZlcgotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0
ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywg
YnVmLldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6
ZSwgYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShidWYuU2V0Q2FwYWNpdHkoa1NpemUpKTsKLSAgRVhQ
RUNUX0VRKFNSX0JMT0NLLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRy
KSk7Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSwgJmJ5
dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9CTE9DSywgYnVmLldyaXRlKGluLCBrU2l6
ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChv
dXQsIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7
CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUpKTsKIAogICAvLyBXcml0ZSB0
byB0aGUgc3RyZWFtLCBjbG9zZSBpdCwgcmVhZCB0aGUgcmVtYWluaW5nIGJ5dGVzCi0gIEVYUEVD
VF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywgbnVs
bHB0cikpOwotICBzdHJlYW0tPkNsb3NlKCk7Ci0gIEVYUEVDVF9FUShTU19DTE9TRUQsIHN0cmVh
bS0+R2V0U3RhdGUoKSk7Ci0gIEVYUEVDVF9FUShTUl9FT1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtT
aXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJl
YW0tPlJlYWQob3V0LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEo
U1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwor
ICBidWYuQ2xvc2UoKTsKKyAgRVhQRUNUX0VRKFNTX0NMT1NFRCwgYnVmLkdldFN0YXRlKCkpOwor
ICBFWFBFQ1RfRVEoU1JfRU9TLCBidWYuV3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxs
cHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplIC8gMiwg
JmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUg
LyAyKSk7Ci0gIEVYUEVDVF9FUShTUl9FT1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwg
JmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9FT1MsIGJ1Zi5SZWFkKG91dCwga1Np
emUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKIH0KIAogVEVTVChGaWZvQnVmZmVyVGVzdCwgRnVs
bEJ1ZmZlckNoZWNrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nX3RvX251bWJlci5j
YwppbmRleCA5MjAxMjQyZDVmNTc4ZDdmNTU4ZWYxZjA3M2FjMzViNTU4NDY3ZDY5Li42MzQ2NTJi
ODNmNmJlMmJlYTM2N2ZiOTEyOGMxZGE0ZGZmZDkxMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVy
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3N0cmluZ190b19udW1iZXIuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgInJ0
Y19iYXNlL3N0cmluZ190b19udW1iZXIuaCIKIAorI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVk
ZSA8Y2Vycm5vPgogI2luY2x1ZGUgPGNzdGRsaWI+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ190b19udW1iZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0
cmluZ190b19udW1iZXIuaAppbmRleCA3ZWE5ZjI1MWVkNDY4YmJiNmE4YTBjZjc2YzY4ODhkNDkx
YzAzMDllLi40Y2I1MjE1OTVkZWZhZGQyZjEwYmZkNmRhYjRhMzhkMTU1MzYxN2IzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9z
dHJpbmdfdG9fbnVtYmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nX3RvX251bWJlci5oCkBAIC0xMyw2ICsxMyw3IEBACiAK
ICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdl
bmNvZGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9zdHJpbmdlbmNvZGUuY2MKaW5kZXggYTU3ODQ1ZmZkYWQ1YTgwYjBiZmMyNGY5YjU0NTky
MmIwNjRlZjI2Yi4uZmM0ZTNiYzhlNzMxNWNjNzIzNWMxZjMyNzY5YTVhNjEzNTI1ODUyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3RyaW5nZW5jb2RlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2VuY29kZS5jYwpAQCAtMTAsOCArMTAsNyBAQAogCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAKLSNpbmNsdWRlIDxzdGRpby5oPgot
I2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGNzdGRpbz4KIAogI2luY2x1ZGUgInJ0Y19i
YXNlL2FycmF5c2l6ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpAQCAtNTEsNjcg
KzUwLDYgQEAgc2l6ZV90IHVybF9kZWNvZGUoY2hhciogYnVmZmVyLAogICByZXR1cm4gYnVmcG9z
OwogfQogCi1zaXplX3QgdXRmOF9kZWNvZGUoY29uc3QgY2hhciogc291cmNlLCBzaXplX3Qgc3Jj
bGVuLCB1bnNpZ25lZCBsb25nKiB2YWx1ZSkgewotICBjb25zdCB1bnNpZ25lZCBjaGFyKiBzID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc291cmNlKTsKLSAgaWYgKChz
WzBdICYgMHg4MCkgPT0gMHgwMCkgeyAgLy8gQ2hlY2sgc1swXSA9PSAweHh4eHh4eAotICAgICp2
YWx1ZSA9IHNbMF07Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLSAgaWYgKChzcmNsZW4gPCAyKSB8fCAo
KHNbMV0gJiAweEMwKSAhPSAweDgwKSkgeyAgLy8gQ2hlY2sgc1sxXSAhPSAxMHh4eHh4eAotICAg
IHJldHVybiAwOwotICB9Ci0gIC8vIEFjY3VtdWxhdGUgdGhlIHRyYWlsZXIgYnl0ZSB2YWx1ZXMg
aW4gdmFsdWUxNiwgYW5kIGNvbWJpbmUgaXQgd2l0aCB0aGUKLSAgLy8gcmVsZXZhbnQgYml0cyBm
cm9tIHNbMF0sIG9uY2Ugd2UndmUgZGV0ZXJtaW5lZCB0aGUgc2VxdWVuY2UgbGVuZ3RoLgotICB1
bnNpZ25lZCBsb25nIHZhbHVlMTYgPSAoc1sxXSAmIDB4M0YpOwotICBpZiAoKHNbMF0gJiAweEUw
KSA9PSAweEMwKSB7ICAvLyBDaGVjayBzWzBdID09IDExMHh4eHh4Ci0gICAgKnZhbHVlID0gKChz
WzBdICYgMHgxRikgPDwgNikgfCB2YWx1ZTE2OwotICAgIHJldHVybiAyOwotICB9Ci0gIGlmICgo
c3JjbGVuIDwgMykgfHwgKChzWzJdICYgMHhDMCkgIT0gMHg4MCkpIHsgIC8vIENoZWNrIHNbMl0g
IT0gMTB4eHh4eHgKLSAgICByZXR1cm4gMDsKLSAgfQotICB2YWx1ZTE2ID0gKHZhbHVlMTYgPDwg
NikgfCAoc1syXSAmIDB4M0YpOwotICBpZiAoKHNbMF0gJiAweEYwKSA9PSAweEUwKSB7ICAvLyBD
aGVjayBzWzBdID09IDExMTB4eHh4Ci0gICAgKnZhbHVlID0gKChzWzBdICYgMHgwRikgPDwgMTIp
IHwgdmFsdWUxNjsKLSAgICByZXR1cm4gMzsKLSAgfQotICBpZiAoKHNyY2xlbiA8IDQpIHx8ICgo
c1szXSAmIDB4QzApICE9IDB4ODApKSB7ICAvLyBDaGVjayBzWzNdICE9IDEweHh4eHh4Ci0gICAg
cmV0dXJuIDA7Ci0gIH0KLSAgdmFsdWUxNiA9ICh2YWx1ZTE2IDw8IDYpIHwgKHNbM10gJiAweDNG
KTsKLSAgaWYgKChzWzBdICYgMHhGOCkgPT0gMHhGMCkgeyAgLy8gQ2hlY2sgc1swXSA9PSAxMTEx
MHh4eAotICAgICp2YWx1ZSA9ICgoc1swXSAmIDB4MDcpIDw8IDE4KSB8IHZhbHVlMTY7Ci0gICAg
cmV0dXJuIDQ7Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0KLXNpemVfdCB1dGY4X2VuY29kZShjaGFy
KiBidWZmZXIsIHNpemVfdCBidWZsZW4sIHVuc2lnbmVkIGxvbmcgdmFsdWUpIHsKLSAgaWYgKCh2
YWx1ZSA8PSAweDdGKSAmJiAoYnVmbGVuID49IDEpKSB7Ci0gICAgYnVmZmVyWzBdID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFsdWUpOwotICAgIHJldHVybiAxOwotICB9Ci0gIGlmICgo
dmFsdWUgPD0gMHg3RkYpICYmIChidWZsZW4gPj0gMikpIHsKLSAgICBidWZmZXJbMF0gPSAweEMw
IHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFsdWUgPj4gNik7Ci0gICAgYnVmZmVyWzFd
ID0gMHg4MCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlICYgMHgzRik7Ci0gICAg
cmV0dXJuIDI7Ci0gIH0KLSAgaWYgKCh2YWx1ZSA8PSAweEZGRkYpICYmIChidWZsZW4gPj0gMykp
IHsKLSAgICBidWZmZXJbMF0gPSAweEUwIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFs
dWUgPj4gMTIpOwotICAgIGJ1ZmZlclsxXSA9IDB4ODAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPigodmFsdWUgPj4gNikgJiAweDNGKTsKLSAgICBidWZmZXJbMl0gPSAweDgwIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFsdWUgJiAweDNGKTsKLSAgICByZXR1cm4gMzsKLSAgfQot
ICBpZiAoKHZhbHVlIDw9IDB4MUZGRkZGKSAmJiAoYnVmbGVuID49IDQpKSB7Ci0gICAgYnVmZmVy
WzBdID0gMHhGMCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlID4+IDE4KTsKLSAg
ICBidWZmZXJbMV0gPSAweDgwIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKHZhbHVlID4+
IDEyKSAmIDB4M0YpOwotICAgIGJ1ZmZlclsyXSA9IDB4ODAgfCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPigodmFsdWUgPj4gNikgJiAweDNGKTsKLSAgICBidWZmZXJbM10gPSAweDgwIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFsdWUgJiAweDNGKTsKLSAgICByZXR1cm4gNDsKLSAg
fQotICByZXR1cm4gMDsKLX0KLQogc3RhdGljIGNvbnN0IGNoYXIgSEVYW10gPSAiMDEyMzQ1Njc4
OWFiY2RlZiI7CiAKIGNoYXIgaGV4X2VuY29kZSh1bnNpZ25lZCBjaGFyIHZhbCkgewpAQCAtMTIy
LDkgKzYwLDkgQEAgY2hhciBoZXhfZW5jb2RlKHVuc2lnbmVkIGNoYXIgdmFsKSB7CiBib29sIGhl
eF9kZWNvZGUoY2hhciBjaCwgdW5zaWduZWQgY2hhciogdmFsKSB7CiAgIGlmICgoY2ggPj0gJzAn
KSAmJiAoY2ggPD0gJzknKSkgewogICAgICp2YWwgPSBjaCAtICcwJzsKLSAgfSBlbHNlIGlmICgo
Y2ggPj0gJ0EnKSAmJiAoY2ggPD0gJ1onKSkgeworICB9IGVsc2UgaWYgKChjaCA+PSAnQScpICYm
IChjaCA8PSAnRicpKSB7CiAgICAgKnZhbCA9IChjaCAtICdBJykgKyAxMDsKLSAgfSBlbHNlIGlm
ICgoY2ggPj0gJ2EnKSAmJiAoY2ggPD0gJ3onKSkgeworICB9IGVsc2UgaWYgKChjaCA+PSAnYScp
ICYmIChjaCA8PSAnZicpKSB7CiAgICAgKnZhbCA9IChjaCAtICdhJykgKyAxMDsKICAgfSBlbHNl
IHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2VuY29kZS5oCmlu
ZGV4IDVkNDM2ZGZkNTdiYTA4YTU3MzA3ZjVhYzNkMzEwM2UzZmNlNmUwODEuLjA5YmY3N2Y0NDYx
NTI1YTNiYWZjMWZhMWZhY2E2OWMyOTZlMmQyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2VuY29kZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmlu
Z2VuY29kZS5oCkBAIC0xMSw5ICsxMSwxMiBAQAogI2lmbmRlZiBSVENfQkFTRV9TVFJJTkdFTkNP
REVfSF8KICNkZWZpbmUgUlRDX0JBU0VfU1RSSU5HRU5DT0RFX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KICNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ190b19udW1iZXIu
aCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlX3VuaXR0ZXN0LmNj
CmluZGV4IDliZGM1OTJjMjlhYTA2NjM3NzhhZTJjN2Q4NmRjYTYwMTgxOWIxZjQuLmYyMWM0Y2I3
OGM2Zjg0ODRmNzg1MzU3Mjg0MGJlYTI5MzI5MmI5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2VuY29kZV91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zdHJpbmdlbmNvZGVfdW5pdHRlc3QuY2MKQEAgLTE0MSw3ICsxNDEsOCBAQCBURVNU
X0YoSGV4RW5jb2RlVGVzdCwgVGVzdERlY29kZVRvb1Nob3J0KSB7CiAKIC8vIFRlc3QgdGhhdCBk
ZWNvZGluZyBub24taGV4IGRhdGEgZmFpbHMuCiBURVNUX0YoSGV4RW5jb2RlVGVzdCwgVGVzdERl
Y29kZUJvZ3VzRGF0YSkgewotICBkZWNfcmVzXyA9IGhleF9kZWNvZGVfd2l0aF9kZWxpbWl0ZXIo
ZGVjb2RlZF8sIHNpemVvZihkZWNvZGVkXyksICJ4eXoiLCAzLCAwKTsKKyAgZGVjX3Jlc18gPQor
ICAgICAgaGV4X2RlY29kZV93aXRoX2RlbGltaXRlcihkZWNvZGVkXywgc2l6ZW9mKGRlY29kZWRf
KSwgImF4eXoiLCA0LCAwKTsKICAgQVNTRVJUX0VRKDBVLCBkZWNfcmVzXyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3N0cmluZ3MvYXVkaW9fZm9ybWF0X3RvX3N0cmluZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3MvYXVkaW9fZm9ybWF0X3RvX3N0
cmluZy5jYwppbmRleCBhMTQ5MzQ0MTk4NWZkYzlkNzJlZTI1NDEyMTQ2MGEyNThjZjY5N2YzLi43
ZTkxYzNiNDlkZDQxNTU4NWMxOGRjZjY1N2UzMzkzYjkyMWRlZjEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdzL2F1
ZGlvX2Zvcm1hdF90b19zdHJpbmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ncy9hdWRpb19mb3JtYXRfdG9fc3RyaW5nLmNj
CkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL2F1ZGlvX2Zv
cm1hdF90b19zdHJpbmcuaCIKIAorI2luY2x1ZGUgPHV0aWxpdHk+CisKICNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c3RyaW5ncy9zdHJpbmdfYnVpbGRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuY2MKaW5kZXggMmZk
NGFiYTE5Y2RjZGJkMzJkZmU5ZTk5OWEwOWI4ZmY5MmUzNjM4ZC4uYWRmNGZhOWU4MTlhMzg5ZGQ1
YjFjMmZlOWVkZmY5MzYwZGRjMWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9z
dHJpbmdzL3N0cmluZ19idWlsZGVyLmNjCkBAIC0xMCw2ICsxMCwxMiBAQAogCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogCisjaW5jbHVkZSA8c3RkYXJnLmg+
CisjaW5jbHVkZSA8Y3N0cmluZz4KKworI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCisKIG5hbWVzcGFjZSBydGMg
ewogCiBTaW1wbGVTdHJpbmdCdWlsZGVyOjpTaW1wbGVTdHJpbmdCdWlsZGVyKHJ0Yzo6QXJyYXlW
aWV3PGNoYXI+IGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3Mvc3Ry
aW5nX2J1aWxkZXIuaAppbmRleCAxODZjMmY3YjlkNzk4MTZlMzFhY2MwMmVjNTBkYWVhNmZmNmQ4
ZmYyLi4yNzAwMWQxYmU1YTNjMTI1ODg4MzBhYjNkYzYwZmNhNDZhNzMzNTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJp
bmdzL3N0cmluZ19idWlsZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oCkBAIC0xMiwxMyAr
MTIsMTEgQEAKICNkZWZpbmUgUlRDX0JBU0VfU1RSSU5HU19TVFJJTkdfQlVJTERFUl9IXwogCiAj
aW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8c3RyaW5nPgor
I2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcu
aCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRp
bHMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlscy5jYwppbmRleCA2YmFkZGQxMWJk
ZDM2ZDE5NmRiOWZlMzFjYzI5NGE4ZmVhNGNhNTNlLi5jODA4ZWIyY2M0MWVlNjA3YzNiOWU3M2E5
ZWM2MGRiNzYyZWVmMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlscy5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlscy5jYwpAQCAt
Nyw5NyArNywyOSBAQAogICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwotI2luY2x1ZGUgPGFsZ29yaXRobT4K
LSNpbmNsdWRlIDxjc3RkaW8+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIAotYm9vbCBt
ZW1vcnlfY2hlY2soY29uc3Qgdm9pZCogbWVtb3J5LCBpbnQgYywgc2l6ZV90IGNvdW50KSB7Ci0g
IGNvbnN0IGNoYXIqIGNoYXJfbWVtb3J5ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbW9y
eSk7Ci0gIGNoYXIgY2hhcl9jID0gc3RhdGljX2Nhc3Q8Y2hhcj4oYyk7Ci0gIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgIGlmIChjaGFyX21lbW9yeVtpXSAhPSBjaGFy
X2MpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgc3RyaW5nX21hdGNoKGNvbnN0IGNoYXIqIHRhcmdldCwgY29uc3QgY2hhciogcGF0
dGVybikgewotICB3aGlsZSAoKnBhdHRlcm4pIHsKLSAgICBpZiAoKnBhdHRlcm4gPT0gJyonKSB7
Ci0gICAgICBpZiAoISorK3BhdHRlcm4pIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9
Ci0gICAgICB3aGlsZSAoKnRhcmdldCkgewotICAgICAgICBpZiAoKHRvdXBwZXIoKnBhdHRlcm4p
ID09IHRvdXBwZXIoKnRhcmdldCkpICYmCi0gICAgICAgICAgICBzdHJpbmdfbWF0Y2godGFyZ2V0
ICsgMSwgcGF0dGVybiArIDEpKSB7Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LSAgICAgICAgKyt0YXJnZXQ7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIGlmICh0b3VwcGVyKCpwYXR0ZXJuKSAhPSB0b3VwcGVyKCp0YXJnZXQpKSB7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgICsrdGFyZ2V0OwotICAgICAg
KytwYXR0ZXJuOwotICAgIH0KLSAgfQotICByZXR1cm4gISp0YXJnZXQ7Ci19Ci0KLSNpZiBkZWZp
bmVkKFdFQlJUQ19XSU4pCi1pbnQgYXNjaWlfc3RyaW5nX2NvbXBhcmUoY29uc3Qgd2NoYXJfdCog
czEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmFj
dGVyVHJhbnNmb3JtYXRpb24gdHJhbnNmb3JtYXRpb24pIHsKLSAgd2NoYXJfdCBjMSwgYzI7Ci0g
IHdoaWxlICh0cnVlKSB7Ci0gICAgaWYgKG4tLSA9PSAwKQotICAgICAgcmV0dXJuIDA7Ci0gICAg
YzEgPSB0cmFuc2Zvcm1hdGlvbigqczEpOwotICAgIC8vIERvdWJsZSBjaGVjayB0aGF0IGNoYXJh
Y3RlcnMgYXJlIG5vdCBVVEYtOAotICAgIFJUQ19EQ0hFQ0tfTFQoKnMyLCAxMjgpOwotICAgIC8v
IE5vdGU6ICpzMiBnZXRzIGltcGxpY2l0bHkgcHJvbW90ZWQgdG8gd2NoYXJfdAotICAgIGMyID0g
dHJhbnNmb3JtYXRpb24oKnMyKTsKLSAgICBpZiAoYzEgIT0gYzIpCi0gICAgICByZXR1cm4gKGMx
IDwgYzIpID8gLTEgOiAxOwotICAgIGlmICghYzEpCi0gICAgICByZXR1cm4gMDsKLSAgICArK3Mx
OwotICAgICsrczI7Ci0gIH0KLX0KLQotc2l6ZV90IGFzY2NweW4od2NoYXJfdCogYnVmZmVyLAor
c2l6ZV90IHN0cmNweW4oY2hhciogYnVmZmVyLAogICAgICAgICAgICAgICAgc2l6ZV90IGJ1Zmxl
biwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHNvdXJjZSwKLSAgICAgICAgICAgICAgIHNp
emVfdCBzcmNsZW4pIHsKKyAgICAgICAgICAgICAgIHNpemVfdCBzcmNsZW4gLyogPSBTSVpFX1VO
S05PV04gKi8pIHsKICAgaWYgKGJ1ZmxlbiA8PSAwKQogICAgIHJldHVybiAwOwogCiAgIGlmIChz
cmNsZW4gPT0gU0laRV9VTktOT1dOKSB7Ci0gICAgc3JjbGVuID0gc3RybGVubihzb3VyY2UsIGJ1
ZmxlbiAtIDEpOwotICB9IGVsc2UgaWYgKHNyY2xlbiA+PSBidWZsZW4pIHsKKyAgICBzcmNsZW4g
PSBzdHJsZW4oc291cmNlKTsKKyAgfQorICBpZiAoc3JjbGVuID49IGJ1ZmxlbikgewogICAgIHNy
Y2xlbiA9IGJ1ZmxlbiAtIDE7CiAgIH0KLSNpZiBSVENfRENIRUNLX0lTX09OCi0gIC8vIERvdWJs
ZSBjaGVjayB0aGF0IGNoYXJhY3RlcnMgYXJlIG5vdCBVVEYtOAotICBmb3IgKHNpemVfdCBwb3Mg
PSAwOyBwb3MgPCBzcmNsZW47ICsrcG9zKQotICAgIFJUQ19EQ0hFQ0tfTFQoc291cmNlW3Bvc10s
IDEyOCk7Ci0jZW5kaWYKLSAgc3RkOjpjb3B5KHNvdXJjZSwgc291cmNlICsgc3JjbGVuLCBidWZm
ZXIpOworICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIHNyY2xlbik7CiAgIGJ1ZmZlcltzcmNsZW5d
ID0gMDsKICAgcmV0dXJuIHNyY2xlbjsKIH0KIAotI2VuZGlmICAvLyBXRUJSVENfV0lOCi0KIHZv
aWQgcmVwbGFjZV9zdWJzdHJzKGNvbnN0IGNoYXIqIHNlYXJjaCwKICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzZWFyY2hfbGVuLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
cmVwbGFjZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3N0cmluZ3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlscy5oCmluZGV4IDI2YzQ2MjdkNWNh
NTk4MDNhNGUzZmI1ZGEyOTc3ODYzYmNhOTc5NzIuLmM5ZGFiZmI4YWFhZmI4NWI1ZWJiMjhmMmYy
Yjk2MzdlNzc3ZDQzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3V0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaApAQCAtMTMs
OCArMTMsNyBAQAogCiAjaWYgIWRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKICNpbmNsdWRl
IDxjdHlwZS5oPgotI2VuZGlmCi0KKyNlbmRpZiAvLyAhZGVmaW5lZChXRUJSVENfV0VCS0lUX0JV
SUxEKQogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8
c3RyaW5nLmg+CkBAIC0yMyw2ICsyMiw3IEBACiAjaW5jbHVkZSA8bWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d2NoYXIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CisKICNkZWZpbmUgYWxsb2NhIF9hbGxv
Y2EKICNlbmRpZiAgLy8gV0VCUlRDX1dJTgogCkBAIC0zMiw2ICszMiw3IEBACiAjZWxzZSAgLy8g
QlNECiAjaW5jbHVkZSA8YWxsb2NhLmg+CiAjZW5kaWYgIC8vICFCU0QKKyNpbmNsdWRlIDxzdHJp
bmdzLmg+CiAjZW5kaWYgIC8vIFdFQlJUQ19QT1NJWAogCiAjaW5jbHVkZSA8c3RyaW5nPgpAQCAt
NDMsNDkgKzQ0LDYgQEAKICNkZWZpbmUgU1RBQ0tfQVJSQVkoVFlQRSwgTEVOKSBcCiAgIHN0YXRp
Y19jYXN0PFRZUEUqPig6OmFsbG9jYSgoTEVOKSAqIHNpemVvZihUWVBFKSkpCiAKLW5hbWVzcGFj
ZSBydGMgewotCi0vLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNpbXBsZSB3aWxkY2FyZCBwYXR0
ZXJuIG1hdGNoZXMgdGFyZ2V0LgotLy8gQWxwaGEgY2hhcmFjdGVycyBpbiBwYXR0ZXJuIG1hdGNo
IGNhc2UtaW5zZW5zaXRpdmVseS4KLS8vIEFzdGVyaXNrcyBpbiBwYXR0ZXJuIG1hdGNoIDAgb3Ig
bW9yZSBjaGFyYWN0ZXJzLgotLy8gRXg6IHN0cmluZ19tYXRjaCgid3d3LlRFU1QuR09PR0xFLkNP
TSIsICJ3d3cuKi5jb20iKSAtPiB0cnVlCi1ib29sIHN0cmluZ19tYXRjaChjb25zdCBjaGFyKiB0
YXJnZXQsIGNvbnN0IGNoYXIqIHBhdHRlcm4pOwotCi19ICAvLyBuYW1lc3BhY2UgcnRjCi0KLSNp
ZiAhZGVmaW5lZChXRUJSVENfV0VCS0lUX0JVSUxEKQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot
Ly8gUmVuYW1lIGEgZmV3IGNvbW1vbiBzdHJpbmcgZnVuY3Rpb25zIHNvIHRoZXkgYXJlIGNvbnNp
c3RlbnQgYWNyb3NzIHBsYXRmb3Jtcy4KLS8vIHRvbG93ZXJjYXNlIGlzIGxpa2UgdG9sb3dlciwg
YnV0IG5vdCBjb21wYXRpYmxlIHdpdGggZW5kLW9mLWZpbGUgdmFsdWUKLS8vCi0vLyBJdCdzIG5v
dCBjbGVhciBpZiB3ZSB3aWxsIGV2ZXIgdXNlIHdjaGFyX3Qgc3RyaW5ncyBvbiB1bml4LiAgSW4g
dGhlb3J5LAotLy8gYWxsIHN0cmluZ3Mgc2hvdWxkIGJlIFV0ZjggYWxsIHRoZSB0aW1lLCBleGNl
cHQgd2hlbiBpbnRlcmZhY2luZyB3aXRoIFdpbjMyCi0vLyBBUElzIHRoYXQgcmVxdWlyZSBVdGYx
Ni4KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLWlubGluZSBjaGFyIHRvbG93ZXJjYXNlKGNoYXIg
YykgewotICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4odG9sb3dlcihjKSk7Ci19Ci0jZW5kaWYg
Ly8gIWRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKLQotI2lmIGRlZmluZWQoV0VCUlRDX1dJ
TikKLQotaW5saW5lIHdjaGFyX3QgdG9sb3dlcmNhc2Uod2NoYXJfdCBjKSB7Ci0gIHJldHVybiBz
dGF0aWNfY2FzdDx3Y2hhcl90Pih0b3dsb3dlcihjKSk7Ci19Ci0KLSNlbmRpZiAgLy8gV0VCUlRD
X1dJTgotCi0jaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCi0KLWlubGluZSBpbnQgX3N0cmljbXAo
Y29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7Ci0gIHJldHVybiBzdHJjYXNlY21wKHMx
LCBzMik7Ci19Ci1pbmxpbmUgaW50IF9zdHJuaWNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hh
ciogczIsIHNpemVfdCBuKSB7Ci0gIHJldHVybiBzdHJuY2FzZWNtcChzMSwgczIsIG4pOwotfQot
Ci0jZW5kaWYgIC8vIFdFQlJUQ19QT1NJWAotCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBU
cmFpdHMgc2ltcGxpZmllcyBwb3J0aW5nIHN0cmluZyBmdW5jdGlvbnMgdG8gYmUgQ1RZUEUtYWdu
b3N0aWMKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTk0LDE5MSArNTIsMTIgQEAgbmFtZXNw
YWNlIHJ0YyB7CiAKIGNvbnN0IHNpemVfdCBTSVpFX1VOS05PV04gPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KC0xKTsKIAotdGVtcGxhdGUgPGNsYXNzIENUWVBFPgotc3RydWN0IFRyYWl0cyB7Ci0gIC8v
IFNUTCBzdHJpbmcgdHlwZQotICAvLyB0eXBlZGVmIFhYWCBzdHJpbmc7Ci0gIC8vIE51bGwtdGVy
bWluYXRlZCBzdHJpbmcKLSAgLy8gaW5saW5lIHN0YXRpYyBjb25zdCBDVFlQRSogZW1wdHlfc3Ry
KCk7Ci19OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBTdHJpbmcgdXRpbGl0aWVzIHdo
aWNoIHdvcmsgd2l0aCBjaGFyIG9yIHdjaGFyX3QKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQot
dGVtcGxhdGUgPGNsYXNzIENUWVBFPgotaW5saW5lIGNvbnN0IENUWVBFKiBub25udWxsKGNvbnN0
IENUWVBFKiBzdHIsIGNvbnN0IENUWVBFKiBkZWZfc3RyID0gbnVsbHB0cikgewotICByZXR1cm4g
c3RyID8gc3RyIDogKGRlZl9zdHIgPyBkZWZfc3RyIDogVHJhaXRzPENUWVBFPjo6ZW1wdHlfc3Ry
KCkpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQ1RZUEU+Ci1jb25zdCBDVFlQRSogc3RyY2hyKGNv
bnN0IENUWVBFKiBzdHIsIGNvbnN0IENUWVBFKiBjaHMpIHsKLSAgZm9yIChzaXplX3QgaSA9IDA7
IHN0cltpXTsgKytpKSB7Ci0gICAgZm9yIChzaXplX3QgaiA9IDA7IGNoc1tqXTsgKytqKSB7Ci0g
ICAgICBpZiAoc3RyW2ldID09IGNoc1tqXSkgewotICAgICAgICByZXR1cm4gc3RyICsgaTsKLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBDVFlQ
RT4KLWNvbnN0IENUWVBFKiBzdHJjaHJuKGNvbnN0IENUWVBFKiBzdHIsIHNpemVfdCBzbGVuLCBD
VFlQRSBjaCkgewotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNsZW4gJiYgc3RyW2ldOyArK2kp
IHsKLSAgICBpZiAoc3RyW2ldID09IGNoKSB7Ci0gICAgICByZXR1cm4gc3RyICsgaTsKLSAgICB9
Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4KLXNpemVfdCBz
dHJsZW5uKGNvbnN0IENUWVBFKiBidWZmZXIsIHNpemVfdCBidWZsZW4pIHsKLSAgc2l6ZV90IGJ1
ZnBvcyA9IDA7Ci0gIHdoaWxlIChidWZmZXJbYnVmcG9zXSAmJiAoYnVmcG9zIDwgYnVmbGVuKSkg
ewotICAgICsrYnVmcG9zOwotICB9Ci0gIHJldHVybiBidWZwb3M7Ci19Ci0KLS8vIFNhZmUgdmVy
c2lvbnMgb2Ygc3RybmNweSwgc3RybmNhdCwgc25wcmludGYgYW5kIHZzbnByaW50ZiB0aGF0IGFs
d2F5cwotLy8gbnVsbC10ZXJtaW5hdGUuCi0KLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4KLXNpemVf
dCBzdHJjcHluKENUWVBFKiBidWZmZXIsCi0gICAgICAgICAgICAgICBzaXplX3QgYnVmbGVuLAot
ICAgICAgICAgICAgICAgY29uc3QgQ1RZUEUqIHNvdXJjZSwKLSAgICAgICAgICAgICAgIHNpemVf
dCBzcmNsZW4gPSBTSVpFX1VOS05PV04pIHsKLSAgaWYgKGJ1ZmxlbiA8PSAwKQotICAgIHJldHVy
biAwOwotCi0gIGlmIChzcmNsZW4gPT0gU0laRV9VTktOT1dOKSB7Ci0gICAgc3JjbGVuID0gc3Ry
bGVubihzb3VyY2UsIGJ1ZmxlbiAtIDEpOwotICB9IGVsc2UgaWYgKHNyY2xlbiA+PSBidWZsZW4p
IHsKLSAgICBzcmNsZW4gPSBidWZsZW4gLSAxOwotICB9Ci0gIG1lbWNweShidWZmZXIsIHNvdXJj
ZSwgc3JjbGVuICogc2l6ZW9mKENUWVBFKSk7Ci0gIGJ1ZmZlcltzcmNsZW5dID0gMDsKLSAgcmV0
dXJuIHNyY2xlbjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIENUWVBFPgotc2l6ZV90IHN0cmNhdG4o
Q1RZUEUqIGJ1ZmZlciwKLSAgICAgICAgICAgICAgIHNpemVfdCBidWZsZW4sCi0gICAgICAgICAg
ICAgICBjb25zdCBDVFlQRSogc291cmNlLAotICAgICAgICAgICAgICAgc2l6ZV90IHNyY2xlbiA9
IFNJWkVfVU5LTk9XTikgewotICBpZiAoYnVmbGVuIDw9IDApCi0gICAgcmV0dXJuIDA7Ci0KLSAg
c2l6ZV90IGJ1ZnBvcyA9IHN0cmxlbm4oYnVmZmVyLCBidWZsZW4gLSAxKTsKLSAgcmV0dXJuIGJ1
ZnBvcyArIHN0cmNweW4oYnVmZmVyICsgYnVmcG9zLCBidWZsZW4gLSBidWZwb3MsIHNvdXJjZSwg
c3JjbGVuKTsKLX0KLQotLy8gU29tZSBjb21waWxlcnMgKGNsYW5nIHNwZWNpZmljYWxseSkgcmVx
dWlyZSB2c3ByaW50Zm4gYmUgZGVmaW5lZCBiZWZvcmUKLS8vIHNwcmludGZuLgotdGVtcGxhdGUg
PGNsYXNzIENUWVBFPgotc2l6ZV90IHZzcHJpbnRmbihDVFlQRSogYnVmZmVyLAotICAgICAgICAg
ICAgICAgICBzaXplX3QgYnVmbGVuLAotICAgICAgICAgICAgICAgICBjb25zdCBDVFlQRSogZm9y
bWF0LAotICAgICAgICAgICAgICAgICB2YV9saXN0IGFyZ3MpIHsKLSAgaW50IGxlbiA9IHZzbnBy
aW50ZihidWZmZXIsIGJ1ZmxlbiwgZm9ybWF0LCBhcmdzKTsKLSAgaWYgKChsZW4gPCAwKSB8fCAo
c3RhdGljX2Nhc3Q8c2l6ZV90PihsZW4pID49IGJ1ZmxlbikpIHsKLSAgICBsZW4gPSBzdGF0aWNf
Y2FzdDxpbnQ+KGJ1ZmxlbiAtIDEpOwotICAgIGJ1ZmZlcltsZW5dID0gMDsKLSAgfQotICByZXR1
cm4gbGVuOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQ1RZUEU+Ci1zaXplX3Qgc3ByaW50Zm4oQ1RZ
UEUqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmxlbiwgY29uc3QgQ1RZUEUqIGZvcm1hdCwgLi4uKTsKLXRl
bXBsYXRlIDxjbGFzcyBDVFlQRT4KLXNpemVfdCBzcHJpbnRmbihDVFlQRSogYnVmZmVyLCBzaXpl
X3QgYnVmbGVuLCBjb25zdCBDVFlQRSogZm9ybWF0LCAuLi4pIHsKLSAgdmFfbGlzdCBhcmdzOwot
ICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOwotICBzaXplX3QgbGVuID0gdnNwcmludGZuKGJ1ZmZl
ciwgYnVmbGVuLCBmb3JtYXQsIGFyZ3MpOwotICB2YV9lbmQoYXJncyk7Ci0gIHJldHVybiBsZW47
Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEFsbG93IHNhZmUgY29tcGFyaW5nIGFu
ZCBjb3B5aW5nIGFzY2lpIChub3QgVVRGLTgpIHdpdGggYm90aCB3aWRlIGFuZAotLy8gbm9uLXdp
ZGUgY2hhcmFjdGVyIHN0cmluZ3MuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLWlubGluZSBp
bnQgYXNjY21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4gc3Ry
Y21wKHMxLCBzMik7Ci19Ci1pbmxpbmUgaW50IGFzY2ljbXAoY29uc3QgY2hhciogczEsIGNvbnN0
IGNoYXIqIHMyKSB7Ci0gIHJldHVybiBfc3RyaWNtcChzMSwgczIpOwotfQotaW5saW5lIGludCBh
c2NuY21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgc2l6ZV90IG4pIHsKLSAgcmV0
dXJuIHN0cm5jbXAoczEsIHMyLCBuKTsKLX0KLWlubGluZSBpbnQgYXNjbmljbXAoY29uc3QgY2hh
ciogczEsIGNvbnN0IGNoYXIqIHMyLCBzaXplX3QgbikgewotICByZXR1cm4gX3N0cm5pY21wKHMx
LCBzMiwgbik7Ci19Ci1pbmxpbmUgc2l6ZV90IGFzY2NweW4oY2hhciogYnVmZmVyLAotICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBidWZsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzcmNsZW4gPSBT
SVpFX1VOS05PV04pIHsKLSAgcmV0dXJuIHN0cmNweW4oYnVmZmVyLCBidWZsZW4sIHNvdXJjZSwg
c3JjbGVuKTsKLX0KLQotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLQotdHlwZWRlZiB3Y2hhcl90
ICgqQ2hhcmFjdGVyVHJhbnNmb3JtYXRpb24pKHdjaGFyX3QpOwotaW5saW5lIHdjaGFyX3QgaWRl
bnRpdHkod2NoYXJfdCBjKSB7Ci0gIHJldHVybiBjOwotfQotaW50IGFzY2lpX3N0cmluZ19jb21w
YXJlKGNvbnN0IHdjaGFyX3QqIHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHMyLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIENoYXJhY3RlclRyYW5zZm9ybWF0aW9uIHRyYW5zZm9ybWF0aW9uKTsKLQot
aW5saW5lIGludCBhc2NjbXAoY29uc3Qgd2NoYXJfdCogczEsIGNvbnN0IGNoYXIqIHMyKSB7Ci0g
IHJldHVybiBhc2NpaV9zdHJpbmdfY29tcGFyZShzMSwgczIsIHN0YXRpY19jYXN0PHNpemVfdD4o
LTEpLCBpZGVudGl0eSk7Ci19Ci1pbmxpbmUgaW50IGFzY2ljbXAoY29uc3Qgd2NoYXJfdCogczEs
IGNvbnN0IGNoYXIqIHMyKSB7Ci0gIHJldHVybiBhc2NpaV9zdHJpbmdfY29tcGFyZShzMSwgczIs
IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpLCB0b2xvd2VyY2FzZSk7Ci19Ci1pbmxpbmUgaW50IGFz
Y25jbXAoY29uc3Qgd2NoYXJfdCogczEsIGNvbnN0IGNoYXIqIHMyLCBzaXplX3QgbikgewotICBy
ZXR1cm4gYXNjaWlfc3RyaW5nX2NvbXBhcmUoczEsIHMyLCBuLCBpZGVudGl0eSk7Ci19Ci1pbmxp
bmUgaW50IGFzY25pY21wKGNvbnN0IHdjaGFyX3QqIHMxLCBjb25zdCBjaGFyKiBzMiwgc2l6ZV90
IG4pIHsKLSAgcmV0dXJuIGFzY2lpX3N0cmluZ19jb21wYXJlKHMxLCBzMiwgbiwgdG9sb3dlcmNh
c2UpOwotfQotc2l6ZV90IGFzY2NweW4od2NoYXJfdCogYnVmZmVyLAorLy8gU2FmZSB2ZXJzaW9u
IG9mIHN0cm5jcHkgdGhhdCBhbHdheXMgbnVsLXRlcm1pbmF0ZS4KK3NpemVfdCBzdHJjcHluKGNo
YXIqIGJ1ZmZlciwKICAgICAgICAgICAgICAgIHNpemVfdCBidWZsZW4sCiAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBzb3VyY2UsCiAgICAgICAgICAgICAgICBzaXplX3Qgc3JjbGVuID0gU0la
RV9VTktOT1dOKTsKIAotI2VuZGlmICAvLyBXRUJSVENfV0lOCi0KLS8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLS8vIFRyYWl0czxjaGFyPiBzcGVjaWFsaXphdGlvbnMKLS8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBUcmFpdHM8Y2hhcj4gewotICB0eXBlZGVmIHN0
ZDo6c3RyaW5nIHN0cmluZzsKLSAgaW5saW5lIHN0YXRpYyBjb25zdCBjaGFyKiBlbXB0eV9zdHIo
KSB7IHJldHVybiAiIjsgfQotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gVHJhaXRz
PHdjaGFyX3Q+IHNwZWNpYWxpemF0aW9ucyAoV2luZG93cyBvbmx5LCBjdXJyZW50bHkpCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0KLXRlbXBsYXRl
IDw+Ci1zdHJ1Y3QgVHJhaXRzPHdjaGFyX3Q+IHsKLSAgdHlwZWRlZiBzdGQ6OndzdHJpbmcgc3Ry
aW5nOwotICBpbmxpbmUgc3RhdGljIGNvbnN0IHdjaGFyX3QqIGVtcHR5X3N0cigpIHsgcmV0dXJu
IEwiIjsgfQotfTsKLQotI2VuZGlmICAvLyBXRUJSVENfV0lOCi0KIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KIC8vIFVURiBoZWxwZXJzIChXaW5kb3dzIG9ubHkpCiAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zdHJpbmd1dGlsc191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3V0aWxzX3VuaXR0ZXN0LmNjCmlu
ZGV4IGE2ZTY0NjgwYmI3MzU5ZDgxZWQxYWU0ZWZmY2I2Mzk2NTA4YjZjYzYuLjY2M2U5NzY4ZjYw
OGEzNDZjODQyMDQ1YTExY2VkNTcwNGU3NmNmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3V0aWxzX3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3N0cmluZ3V0aWxzX3VuaXR0ZXN0LmNjCkBAIC0xMyw3MCArMTMsNiBAQAogCiBuYW1lc3Bh
Y2UgcnRjIHsKIAotLy8gVGVzdHMgZm9yIHN0cmluZ19tYXRjaCgpLgotCi1URVNUKHN0cmluZ19t
YXRjaFRlc3QsIE1hdGNoZXMpIHsKLSAgRVhQRUNUX1RSVUUoc3RyaW5nX21hdGNoKCJBLkIuQy5E
IiwgImEuYi5jLmQiKSk7Ci0gIEVYUEVDVF9UUlVFKHN0cmluZ19tYXRjaCgid3d3LlRFU1QuR09P
R0xFLkNPTSIsICJ3d3cuKi5jb20iKSk7Ci0gIEVYUEVDVF9UUlVFKHN0cmluZ19tYXRjaCgiMTI3
LjAuMC4xIiwgIjEyKi4wLioxIikpOwotICBFWFBFQ1RfVFJVRShzdHJpbmdfbWF0Y2goIjEyNy4x
LjAuMjEiLCAiMTIqLjAuKjEiKSk7Ci0gIEVYUEVDVF9GQUxTRShzdHJpbmdfbWF0Y2goIjEyNy4w
LjAuMCIsICIxMiouMC4qMSIpKTsKLSAgRVhQRUNUX0ZBTFNFKHN0cmluZ19tYXRjaCgiMTI3LjAu
MC4wIiwgIjEyKi4wLioxIikpOwotICBFWFBFQ1RfRkFMU0Uoc3RyaW5nX21hdGNoKCIxMjcuMS4x
LjIxIiwgIjEyKi4wLioxIikpOwotfQotCi0vLyBJdCdzIG5vdCBjbGVhciBpZiB3ZSB3aWxsIGV2
ZXIgdXNlIHdjaGFyX3Qgc3RyaW5ncyBvbiB1bml4LiAgSW4gdGhlb3J5LAotLy8gYWxsIHN0cmlu
Z3Mgc2hvdWxkIGJlIFV0ZjggYWxsIHRoZSB0aW1lLCBleGNlcHQgd2hlbiBpbnRlcmZhY2luZyB3
aXRoIFdpbjMyCi0vLyBBUElzIHRoYXQgcmVxdWlyZSBVdGYxNi4KLQotI2lmIGRlZmluZWQoV0VC
UlRDX1dJTikKLQotLy8gVGVzdHMgZm9yIGFzY2lpX3N0cmluZ19jb21wYXJlKCkuCi0KLS8vIFRl
c3RzIG51bGwgaW5wdXQuCi1URVNUKGFzY2lpX3N0cmluZ19jb21wYXJlVGVzdCwgTnVsbElucHV0
KSB7Ci0gIC8vIFRoZSBmb2xsb3dpbmcgcmVzdWx0cyBpbiBhbiBhY2Nlc3MgdmlvbGF0aW9uIGlu
Ci0gIC8vIGFzY2lpX3N0cmluZ19jb21wYXJlLiAgSXMgdGhpcyBhIGJ1ZyBvciBieSBkZXNpZ24/
ICBzdHJpbmd1dGlscy5oCi0gIC8vIHNob3VsZCBkb2N1bWVudCB0aGUgZXhwZWN0ZWQgYmVoYXZp
b3IgaW4gdGhpcyBjYXNlLgotCi0gIC8vIEVYUEVDVF9FUSgwLCBhc2NpaV9zdHJpbmdfY29tcGFy
ZShudWxscHRyLCBudWxscHRyLCAxLCBpZGVudGl0eSkpOwotfQotCi0vLyBUZXN0cyBjb21wYXJp
bmcgdHdvIHN0cmluZ3Mgb2YgZGlmZmVyZW50IGxlbmd0aHMuCi1URVNUKGFzY2lpX3N0cmluZ19j
b21wYXJlVGVzdCwgRGlmZmVyZW50TGVuZ3RocykgewotICBFWFBFQ1RfRVEoLTEsIGFzY2lpX3N0
cmluZ19jb21wYXJlKEwiVGVzdCIsICJUZXN0MSIsIDUsIGlkZW50aXR5KSk7Ci19Ci0KLS8vIFRl
c3RzIHRoZSBjYXNlIHdoZXJlIHRoZSBidWZmZXIgc2l6ZSBpcyBzbWFsbGVyIHRoYW4gdGhlIHN0
cmluZwotLy8gbGVuZ3Rocy4KLVRFU1QoYXNjaWlfc3RyaW5nX2NvbXBhcmVUZXN0LCBTbWFsbEJ1
ZmZlcikgewotICBFWFBFQ1RfRVEoMCwgYXNjaWlfc3RyaW5nX2NvbXBhcmUoTCJUZXN0IiwgIlRl
c3QxIiwgMywgaWRlbnRpdHkpKTsKLX0KLQotLy8gVGVzdHMgdGhlIGNhc2Ugd2hlcmUgdGhlIGJ1
ZmZlciBpcyBub3QgZnVsbC4KLVRFU1QoYXNjaWlfc3RyaW5nX2NvbXBhcmVUZXN0LCBMYXJnZUJ1
ZmZlcikgewotICBFWFBFQ1RfRVEoMCwgYXNjaWlfc3RyaW5nX2NvbXBhcmUoTCJUZXN0IiwgIlRl
c3QiLCAxMCwgaWRlbnRpdHkpKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIHR3byBlcWF1bCBz
dHJpbmdzLgotVEVTVChhc2NpaV9zdHJpbmdfY29tcGFyZVRlc3QsIEVxdWFsKSB7Ci0gIEVYUEVD
VF9FUSgwLCBhc2NpaV9zdHJpbmdfY29tcGFyZShMIlRlc3QiLCAiVGVzdCIsIDUsIGlkZW50aXR5
KSk7Ci0gIEVYUEVDVF9FUSgwLCBhc2NpaV9zdHJpbmdfY29tcGFyZShMIlRlU3QiLCAidEVzVCIs
IDUsIHRvbG93ZXJjYXNlKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBhIHNtbGxlciBzdHJp
bmcgdG8gYSBsYXJnZXIgb25lLgotVEVTVChhc2NpaV9zdHJpbmdfY29tcGFyZVRlc3QsIExlc3NU
aGFuKSB7Ci0gIEVYUEVDVF9FUSgtMSwgYXNjaWlfc3RyaW5nX2NvbXBhcmUoTCJhYmMiLCAiYWJk
IiwgNCwgaWRlbnRpdHkpKTsKLSAgRVhQRUNUX0VRKC0xLCBhc2NpaV9zdHJpbmdfY29tcGFyZShM
IkFCQyIsICJhYkQiLCA1LCB0b2xvd2VyY2FzZSkpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcg
YSBsYXJnZXIgc3RyaW5nIHRvIGEgc21hbGxlciBvbmUuCi1URVNUKGFzY2lpX3N0cmluZ19jb21w
YXJlVGVzdCwgR3JlYXRlclRoYW4pIHsKLSAgRVhQRUNUX0VRKDEsIGFzY2lpX3N0cmluZ19jb21w
YXJlKEwieHl6IiwgInh5IiwgNSwgaWRlbnRpdHkpKTsKLSAgRVhQRUNUX0VRKDEsIGFzY2lpX3N0
cmluZ19jb21wYXJlKEwiYWJjIiwgIkFCQiIsIDUsIHRvbG93ZXJjYXNlKSk7Ci19Ci0jZW5kaWYg
IC8vIFdFQlJUQ19XSU4KLQogVEVTVChzdHJpbmdfdHJpbV9UZXN0LCBUcmltbWluZykgewogICBF
WFBFQ1RfRVEoInRlbXAiLCBzdHJpbmdfdHJpbSgiXG5cclx0IHRlbXAgXG5cclx0IikpOwogICBF
WFBFQ1RfRVEoInRlbXBcblxyXHQgdGVtcCIsIHN0cmluZ190cmltKCIgdGVtcFxuXHJcdCB0ZW1w
ICIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3N5bmNocm9uaXphdGlvbi9yd19sb2NrX3Bvc2l4LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3luY2hyb25pemF0aW9u
L3J3X2xvY2tfcG9zaXguY2MKaW5kZXggN2UzN2RjOTI0ZmRmODFjYjcwOTE2ZTMxYWE3NTA3YjYy
Y2U2MjAwMy4uMTVlZjNkNzA2ZThhZWNhZGRkYmNjZmVkNjExOGVlYTMwYmRmNGMwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c3luY2hyb25pemF0aW9uL3J3X2xvY2tfcG9zaXguY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3luY2hyb25pemF0aW9uL3J3X2xvY2tf
cG9zaXguY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL3N5bmNocm9u
aXphdGlvbi9yd19sb2NrX3Bvc2l4LmgiCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKIFJXTG9ja1Bvc2l4OjpSV0xvY2tQb3NpeCgpIDogbG9ja18oKSB7fQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvc3lzdGVtL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL0JVSUxELmduCmluZGV4IGYyMmVmZTE0YTA0ODhlMzNi
MTc4ZDZjYjZlYjM1MjJjNDNmNmFjY2MuLmU1YWEzMmI0ZWYxZDhjNTIyYTgyNDNhMTZiNDQwNDNi
ZTdiYzIxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3N5c3RlbS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vQlVJTEQuZ24KQEAgLTY1LDMg
KzY1LDE1IEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfZXhwb3J0IikgewogICAgICJydGNfZXhwb3J0
LmgiLAogICBdCiB9CisKK2lmIChpc19tYWMgfHwgaXNfaW9zKSB7CisgIHJ0Y19zb3VyY2Vfc2V0
KCJjb2NvYV90aHJlYWRpbmciKSB7CisgICAgc291cmNlcyA9IFsKKyAgICAgICJjb2NvYV90aHJl
YWRpbmcuaCIsCisgICAgICAiY29jb2FfdGhyZWFkaW5nLm1tIiwKKyAgICBdCisgICAgZGVwcyA9
IFsKKyAgICAgICIuLjpjaGVja3MiLAorICAgIF0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2NvY29h
X3RocmVhZGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3lzdGVtL2NvY29hX3RocmVhZGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxOGNiNzE3ODZi
YWYzNGFjMGUzZDI4MzBkYTg1MTgzOThjMmY3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vY29jb2Ff
dGhyZWFkaW5nLmgKQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUg
V2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRl
ZiBSVENfQkFTRV9TWVNURU1fQ09DT0FfVEhSRUFESU5HX0hfCisjZGVmaW5lIFJUQ19CQVNFX1NZ
U1RFTV9DT0NPQV9USFJFQURJTkdfSF8KKworLy8gSWYgQ29jb2EgaXMgdG8gYmUgdXNlZCBvbiBt
b3JlIHRoYW4gb25lIHRocmVhZCwgaXQgbXVzdCBrbm93IHRoYXQgdGhlCisvLyBhcHBsaWNhdGlv
biBpcyBtdWx0aXRocmVhZGVkLiAgU2luY2UgaXQncyBwb3NzaWJsZSB0byBlbnRlciBDb2NvYSBj
b2RlCisvLyBmcm9tIHRocmVhZHMgY3JlYXRlZCBieSBwdGhyZWFkX3RocmVhZF9jcmVhdGUsIENv
Y29hIHdvbid0IG5lY2Vzc2FyaWx5CisvLyBiZSBhd2FyZSB0aGF0IHRoZSBhcHBsaWNhdGlvbiBp
cyBtdWx0aXRocmVhZGVkLiAgU3Bhd25pbmcgYW4gTlNUaHJlYWQgaXMKKy8vIGVub3VnaCB0byBn
ZXQgQ29jb2EgdG8gc2V0IHVwIGZvciBtdWx0aXRocmVhZGVkIG9wZXJhdGlvbiwgc28gdGhpcyBp
cyBkb25lCisvLyBpZiBuZWNlc3NhcnkgYmVmb3JlIHB0aHJlYWRfdGhyZWFkX2NyZWF0ZSBzcGF3
bnMgYW55IHRocmVhZHMuCisvLworLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1l
bnRhdGlvbi9Db2NvYS9Db25jZXB0dWFsL011bHRpdGhyZWFkaW5nL0NyZWF0aW5nVGhyZWFkcy9j
aGFwdGVyXzRfc2VjdGlvbl80Lmh0bWwKK3ZvaWQgSW5pdENvY29hTXVsdGlUaHJlYWRpbmcoKTsK
KworI2VuZGlmICAvLyBSVENfQkFTRV9TWVNURU1fQ09DT0FfVEhSRUFESU5HX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9z
eXN0ZW0vY29jb2FfdGhyZWFkaW5nLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2NvY29hX3RocmVhZGluZy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMDk4NjJlN2U1Zjc1MGRiMDVhYjg4NGUwNWJlMjRiMDE1Y2QzZGJjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c3lzdGVtL2NvY29hX3RocmVhZGluZy5tbQpAQCAtMCwwICsxLDI0IEBACisvKgorICogIENvcHly
aWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9jb2NvYV90aHJlYWRpbmcuaCIKKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKKwordm9pZCBJbml0Q29jb2FNdWx0aVRocmVhZGluZygpIHsKKyAgc3RhdGljIEJPT0wg
aXNfY29jb2FfbXVsdGl0aHJlYWRlZCA9IFtOU1RocmVhZCBpc011bHRpVGhyZWFkZWRdOworICBp
ZiAoIWlzX2NvY29hX211bHRpdGhyZWFkZWQpIHsKKyAgICAvLyArW05TT2JqZWN0IGNsYXNzXSBp
cyBpZGVtcG90ZW50LgorICAgIFtOU1RocmVhZCBkZXRhY2hOZXdUaHJlYWRTZWxlY3RvcjpAc2Vs
ZWN0b3IoY2xhc3MpIHRvVGFyZ2V0OltOU09iamVjdCBjbGFzc10gd2l0aE9iamVjdDpuaWxdOwor
ICAgIGlzX2NvY29hX211bHRpdGhyZWFkZWQgPSBZRVM7CisgICAgUlRDX0RDSEVDSyhbTlNUaHJl
YWQgaXNNdWx0aVRocmVhZGVkXSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9maWxlX3dyYXBwZXIu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9z
eXN0ZW0vZmlsZV93cmFwcGVyLmNjCmluZGV4IDcyZjVmMjU5ZGJkZjY4OWEwMzU4NGJiY2Q3NTE1
YjExYjlhYjUwMzguLmMwMzNhNzkyYTUwYzNlOTIzODg5NjI1NWFiNmM2NTdlMzg4MDk0M2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3N5c3RlbS9maWxlX3dyYXBwZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2ZpbGVfd3JhcHBlci5jYwpAQCAtMTMs
MTQgKzEzLDExIEBACiAjaWZkZWYgX1dJTjMyCiAjaW5jbHVkZSA8V2luZG93cy5oPgogI2Vsc2UK
LSNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbmRpZgogCiAjaW5j
bHVkZSA8dXRpbGl0eT4KIAotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CiBGSUxFKiBGaWxlT3Blbihjb25zdCBjaGFyKiBmaWxl
X25hbWVfdXRmOCwgYm9vbCByZWFkX29ubHkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9maWxlX3dyYXBwZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5
c3RlbS9maWxlX3dyYXBwZXIuaAppbmRleCA1NDExYjA0ZjY5OTJkNzVkM2VhYjkyMTI2OTA5NDli
MDM2Y2RjMDAwLi4wYmI4NmEzOTdmOTA2MGJmZTQzM2Q5ZTM1NmY0Zjk4OWY2NTU1ZjAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zeXN0ZW0vZmlsZV93cmFwcGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2ZpbGVfd3JhcHBlci5oCkBAIC0xNCw3ICsx
NCw2IEBACiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotI2luY2x1
ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAKIC8vIEltcGxlbWVudGF0aW9uIHRoYXQgY2Fu
IHJlYWQgKGV4Y2x1c2l2ZSkgb3Igd3JpdGUgZnJvbS90byBhIGZpbGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0v
cnRjX2V4cG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaAppbmRleCBiN2EwZmU0MTY4MjYwODIxOTdiOTg0
NjI3OThmNWNhYWJkYmRkYzU4Li5kMWViNjBhZDc4M2E1ZjFjOGE3YTgwNzQyZWJmZGVkMzFhYjcz
NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgKQEAgLTE2
LDcgKzE2LDcgQEAKIC8vIFdoZW4gV2ViUlRDIGlzIGJ1aWx0IGFzIGEgc3RhdGljIGxpYnJhcnkg
dGhlIFJUQ19FWFBPUlQgbWFjcm8gZXhwYW5kcyB0bwogLy8gbm90aGluZy4KIAotI2lmZGVmIENP
TVBPTkVOVF9CVUlMRAorI2lmZGVmIFdFQlJUQ19FTkFCTEVfU1lNQk9MX0VYUE9SVAogCiAjaWZk
ZWYgV0VCUlRDX1dJTgogCkBAIC0zNCw3ICszNCw3IEBACiAKICNlbmRpZiAgLy8gV0VCUlRDX1dJ
TgogCi0jZW5kaWYgIC8vIENPTVBPTkVOVF9CVUlMRAorI2VuZGlmICAvLyBXRUJSVENfRU5BQkxF
X1NZTUJPTF9FWFBPUlQKIAogI2lmbmRlZiBSVENfRVhQT1JUCiAjZGVmaW5lIFJUQ19FWFBPUlQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3Rhc2tfcXVldWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWUuaAppbmRleCBiOGIzMDdjYTZhNDA1ODM1NGU0YjFi
ODg4Njk4ODQ4YjUzOTRlNzkzLi44ODhlMjAzOTY3Y2QzNjVhZDA4MmIzM2U4MDlkYzFhNzQ5YzE2
ZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS90YXNrX3F1ZXVlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZS5oCkBAIC0xOCw2ICsxOCw3IEBACiAj
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3Ry
dWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90
aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CkBAIC0xNTAsNyArMTUxLDcg
QEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiBOZXdDbG9zdXJlKENsb3N1cmUm
JiBjbG9zdXJlLAogLy8gVGFza1F1ZXVlIGl0c2VsZiBoYXMgYmVlbiBkZWxldGVkIG9yIGl0IG1h
eSBoYXBwZW4gc3luY2hyb25vdXNseSB3aGlsZSB0aGUKIC8vIFRhc2tRdWV1ZSBpbnN0YW5jZSBp
cyBiZWluZyBkZWxldGVkLiAgVGhpcyBtYXkgdmFyeSBmcm9tIG9uZSBPUyB0byB0aGUgbmV4dAog
Ly8gc28gYXNzdW1wdGlvbnMgYWJvdXQgbGlmZXRpbWVzIG9mIHBlbmRpbmcgdGFza3Mgc2hvdWxk
IG5vdCBiZSBtYWRlLgotY2xhc3MgUlRDX0xPQ0tBQkxFIFRhc2tRdWV1ZSB7CitjbGFzcyBSVENf
TE9DS0FCTEUgUlRDX0VYUE9SVCBUYXNrUXVldWUgewogIHB1YmxpYzoKICAgLy8gVGFza1F1ZXVl
IHByaW9yaXR5IGxldmVscy4gT24gc29tZSBwbGF0Zm9ybXMgdGhlc2Ugd2lsbCBtYXAgdG8gdGhy
ZWFkCiAgIC8vIHByaW9yaXRpZXMsIG9uIG90aGVycyBzdWNoIGFzIE1hYyBhbmQgaU9TLCBHQ0Qg
cXVldWUgcHJpb3JpdGllcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfZm9yX3Rlc3QuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfZm9y
X3Rlc3QuaAppbmRleCA3MGM1OGZiNTE2YzFhYTZhZDQzZWRmZWFhOTNiZDNjYWIyZGFjYTFhLi45
MTYyZTgxYjg4YWNlOTU4MmIwOGQ4ZjIwZDM5M2NjMWUwYTI0Y2E4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVl
X2Zvcl90ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdGFza19xdWV1ZV9mb3JfdGVzdC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNz
IFJUQ19MT0NLQUJMRSBUYXNrUXVldWVGb3JUZXN0IDogcHVibGljIFRhc2tRdWV1ZSB7CiAgIHRl
bXBsYXRlIDxjbGFzcyBDbG9zdXJlPgogICB2b2lkIFNlbmRUYXNrKENsb3N1cmUqIHRhc2spIHsK
ICAgICBSVENfRENIRUNLKCFJc0N1cnJlbnQoKSk7Ci0gICAgcnRjOjpFdmVudCBldmVudChmYWxz
ZSwgZmFsc2UpOworICAgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAgICAgUG9zdFRhc2socnRjOjpOZXdD
bG9zdXJlKAogICAgICAgICBbJnRhc2tdKCkgewogICAgICAgICAgIFJUQ19DSEVDS19FUShmYWxz
ZSwgc3RhdGljX2Nhc3Q8UXVldWVkVGFzayo+KHRhc2spLT5SdW4oKSk7CkBAIC00Nyw3ICs0Nyw3
IEBAIGNsYXNzIFJUQ19MT0NLQUJMRSBUYXNrUXVldWVGb3JUZXN0IDogcHVibGljIFRhc2tRdWV1
ZSB7CiAgIHRlbXBsYXRlIDxjbGFzcyBDbG9zdXJlPgogICB2b2lkIFNlbmRUYXNrKENsb3N1cmUm
JiB0YXNrKSB7CiAgICAgUlRDX0RDSEVDSyghSXNDdXJyZW50KCkpOwotICAgIHJ0Yzo6RXZlbnQg
ZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgICBydGM6OkV2ZW50IGV2ZW50OwogICAgIFBvc3RUYXNr
KHJ0Yzo6TmV3Q2xvc3VyZShzdGQ6Om1vdmUodGFzayksIFsmZXZlbnRdKCkgeyBldmVudC5TZXQo
KTsgfSkpOwogICAgIGV2ZW50LldhaXQocnRjOjpFdmVudDo6a0ZvcmV2ZXIpOwogICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS90YXNrX3F1ZXVlX2xpYmV2ZW50LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZV9saWJldmVudC5jYwppbmRleCBjYmVkMzMz
NGQ3N2ZkN2FhODY1N2FiODk1YThmMTNjZWFlYjU2NTg0Li45MDViYmRhYzBlMmU1YTFiZWRkMWU2
NGFmZmVlZjlkMDgzMWQ4ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlX2xpYmV2ZW50LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVl
dWVfbGliZXZlbnQuY2MKQEAgLTEwLDMwICsxMCwzMSBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
dGFza19xdWV1ZS5oIgogCisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxmY250bC5oPgor
I2luY2x1ZGUgPHB0aHJlYWQuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KLSNpbmNsdWRlIDxzdHJp
bmcuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8
dW5pc3RkLmg+CiAjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAotI2lmIGRlZmluZWQoV0VCUlRDX0xJ
TlVYKQotI2luY2x1ZGUgPGV2ZW50Mi9ldmVudC5oPgotI2luY2x1ZGUgPGV2ZW50Mi9ldmVudF9j
b21wYXQuaD4KLSNpbmNsdWRlIDxldmVudDIvZXZlbnRfc3RydWN0Lmg+Ci0jZWxzZQogI2luY2x1
ZGUgImJhc2UvdGhpcmRfcGFydHkvbGliZXZlbnQvZXZlbnQuaCIKLSNlbmRpZgotCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9u
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90
aHJlYWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50
ZWRvYmplY3QuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3N5c3RlbS91bnVzZWQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1
ZXVlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZV9wb3NpeC5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1
dGlscy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfc3RkbGliLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19x
dWV1ZV9zdGRsaWIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZiMGVkMjhiOTUxZWJjOTEwZTEwMzg3OGIxODkz
YWM3YjgwODhhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfc3RkbGliLmNjCkBAIC0wLDAgKzEs
Mzk5IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1
ZS5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1
ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDxjb25kaXRpb25fdmFyaWFibGU+CisjaW5jbHVkZSA8bWFw
PgorI2luY2x1ZGUgPHF1ZXVlPgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9yZWZjb3VudC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS90aW1ldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ0YyB7CituYW1lc3BhY2UgeworCit1c2luZyBQ
cmlvcml0eSA9IFRhc2tRdWV1ZTo6UHJpb3JpdHk7CisKK1RocmVhZFByaW9yaXR5IFRhc2tRdWV1
ZVByaW9yaXR5VG9UaHJlYWRQcmlvcml0eShQcmlvcml0eSBwcmlvcml0eSkgeworICBzd2l0Y2gg
KHByaW9yaXR5KSB7CisgICAgY2FzZSBQcmlvcml0eTo6SElHSDoKKyAgICAgIHJldHVybiBrUmVh
bHRpbWVQcmlvcml0eTsKKyAgICBjYXNlIFByaW9yaXR5OjpMT1c6CisgICAgICByZXR1cm4ga0xv
d1ByaW9yaXR5OworICAgIGNhc2UgUHJpb3JpdHk6Ok5PUk1BTDoKKyAgICAgIHJldHVybiBrTm9y
bWFsUHJpb3JpdHk7CisgICAgZGVmYXVsdDoKKyAgICAgIFJUQ19OT1RSRUFDSEVEKCk7CisgICAg
ICByZXR1cm4ga05vcm1hbFByaW9yaXR5OworICB9CisgIHJldHVybiBrTm9ybWFsUHJpb3JpdHk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitjbGFzcyBUYXNrUXVldWU6OkltcGwgOiBwdWJsaWMg
UmVmQ291bnRJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgSW1wbChjb25zdCBjaGFyKiBxdWV1ZV9u
YW1lLCBUYXNrUXVldWUqIHF1ZXVlLCBQcmlvcml0eSBwcmlvcml0eSk7CisgIH5JbXBsKCkgb3Zl
cnJpZGU7CisKKyAgc3RhdGljIFRhc2tRdWV1ZTo6SW1wbCogQ3VycmVudCgpOworICBzdGF0aWMg
VGFza1F1ZXVlKiBDdXJyZW50UXVldWUoKTsKKworICAvLyBVc2VkIGZvciBEQ0hFQ0tpbmcgdGhl
IGN1cnJlbnQgcXVldWUuCisgIGJvb2wgSXNDdXJyZW50KCkgY29uc3Q7CisKKyAgdGVtcGxhdGUg
PGNsYXNzIENsb3N1cmUsCisgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3Rk
Ojppc19jb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgICBDbG9zdXJlLAorICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPj46OnZhbHVlPjo6dHlwZSogPSBudWxscHRy
PgorICB2b2lkIFBvc3RUYXNrKENsb3N1cmUmJiBjbG9zdXJlKSB7CisgICAgUG9zdFRhc2soTmV3
Q2xvc3VyZShzdGQ6OmZvcndhcmQ8Q2xvc3VyZT4oY2xvc3VyZSkpKTsKKyAgfQorCisgIHZvaWQg
UG9zdFRhc2soc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHRhc2spOworICB2b2lkIFBvc3RU
YXNrQW5kUmVwbHkoc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHRhc2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gcmVwbHksCisgICAgICAg
ICAgICAgICAgICAgICAgICBUYXNrUXVldWU6OkltcGwqIHJlcGx5X3F1ZXVlKTsKKworICB2b2lk
IFBvc3REZWxheWVkVGFzayhzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaywgdWludDMy
X3QgbWlsbGlzZWNvbmRzKTsKKworICBjbGFzcyBXb3JrZXJUaHJlYWQgOiBwdWJsaWMgUGxhdGZv
cm1UaHJlYWQgeworICAgcHVibGljOgorICAgIFdvcmtlclRocmVhZChUaHJlYWRSdW5GdW5jdGlv
biBmdW5jLAorICAgICAgICAgICAgICAgICB2b2lkKiBvYmosCisgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHRocmVhZF9uYW1lLAorICAgICAgICAgICAgICAgICBUaHJlYWRQcmlvcml0eSBw
cmlvcml0eSkKKyAgICAgICAgOiBQbGF0Zm9ybVRocmVhZChmdW5jLCBvYmosIHRocmVhZF9uYW1l
LCBwcmlvcml0eSkge30KKyAgfTsKKworICB1c2luZyBPcmRlcklkID0gdWludDY0X3Q7CisKKyAg
c3RydWN0IERlbGF5ZWRFbnRyeVRpbWVvdXQgeworICAgIGludDY0X3QgbmV4dF9maXJlX2F0X21z
X3t9OworICAgIE9yZGVySWQgb3JkZXJfe307CisKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBE
ZWxheWVkRW50cnlUaW1lb3V0JiBvKSBjb25zdCB7CisgICAgICByZXR1cm4gc3RkOjp0aWUobmV4
dF9maXJlX2F0X21zXywgb3JkZXJfKSA8CisgICAgICAgICAgICAgc3RkOjp0aWUoby5uZXh0X2Zp
cmVfYXRfbXNfLCBvLm9yZGVyXyk7CisgICAgfQorICB9OworCisgIHN0cnVjdCBOZXh0VGFzayB7
CisgICAgYm9vbCBmaW5hbF90YXNrX3tmYWxzZX07CisgICAgc3RkOjp1bmlxdWVfcHRyPFF1ZXVl
ZFRhc2s+IHJ1bl90YXNrXzsKKyAgICBpbnQ2NF90IHNsZWVwX3RpbWVfbXNfe307CisgIH07CisK
KyBwcm90ZWN0ZWQ6CisgIE5leHRUYXNrIEdldE5leHRUYXNrKCk7CisKKyBwcml2YXRlOgorICAv
LyBUaGUgVGhyZWFkUXVldWU6OkN1cnJlbnQoKSBtZXRob2QgcmVxdWlyZXMgdGhhdCB0aGUgY3Vy
cmVudCB0aHJlYWQKKyAgLy8gcmV0dXJucyB0aGUgdGFzayBxdWV1ZSBpZiB0aGUgY3VycmVudCB0
aHJlYWQgaXMgdGhlIGFjdGl2ZSB0YXNrCisgIC8vIHF1ZXVlIGFuZCB0aGlzIHZhcmlhYmxlIGhv
bGRzIHRoZSB2YWx1ZSBuZWVkZWQgaW4gdGhyZWFkX2xvY2FsIHRvCisgIC8vIG9uIHRoZSBpbml0
aWFsaXplZCB3b3JrZXIgdGhyZWFkIGhvbGRpbmcgdGhlIHF1ZXVlLgorICBzdGF0aWMgdGhyZWFk
X2xvY2FsIFRhc2tRdWV1ZTo6SW1wbCogdGhyZWFkX2NvbnRleHRfOworCisgIHN0YXRpYyB2b2lk
IFRocmVhZE1haW4odm9pZCogY29udGV4dCk7CisKKyAgdm9pZCBQcm9jZXNzVGFza3MoKTsKKwor
ICB2b2lkIE5vdGlmeVdha2UoKTsKKworICAvLyBUaGUgYmFjayBwb2ludGVyIGZyb20gdGhlIG93
bmVyIHRhc2sgcXVldWUgb2JqZWN0CisgIC8vIGZyb20gdGhpcyBpbXBsZW1lbnRhdGlvbiBkZXRh
aWwuCisgIFRhc2tRdWV1ZSogY29uc3QgcXVldWVfOworCisgIC8vIEluZGljYXRlcyBpZiB0aGUg
dGhyZWFkIGhhcyBzdGFydGVkLgorICBFdmVudCBzdGFydGVkXzsKKworICAvLyBJbmRpY2F0ZXMg
aWYgdGhlIHRocmVhZCBoYXMgc3RvcHBlZC4KKyAgRXZlbnQgc3RvcHBlZF87CisKKyAgLy8gU2ln
bmFsZWQgd2hlbmV2ZXIgYSBuZXcgdGFzayBpcyBwZW5kaW5nLgorICBFdmVudCBmbGFnX25vdGlm
eV87CisKKyAgLy8gQ29udGFpbnMgdGhlIGFjdGl2ZSB3b3JrZXIgdGhyZWFkIGFzc2lnbmVkIHRv
IHByb2Nlc3NpbmcKKyAgLy8gdGFza3MgKGluY2x1ZGluZyBkZWxheWVkIHRhc2tzKS4KKyAgV29y
a2VyVGhyZWFkIHRocmVhZF87CisKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gcGVuZGluZ19sb2Nr
XzsKKworICAvLyBJbmRpY2F0ZXMgaWYgdGhlIHdvcmtlciB0aHJlYWQgbmVlZHMgdG8gc2h1dGRv
d24gbm93LgorICBib29sIHRocmVhZF9zaG91bGRfcXVpdF8gUlRDX0dVQVJERURfQlkocGVuZGlu
Z19sb2NrXyl7ZmFsc2V9OworCisgIC8vIEhvbGRzIHRoZSBuZXh0IG9yZGVyIHRvIHVzZSBmb3Ig
dGhlIG5leHQgdGFzayB0byBiZQorICAvLyBwdXQgaW50byBvbmUgb2YgdGhlIHBlbmRpbmcgcXVl
dWVzLgorICBPcmRlcklkIHRocmVhZF9wb3N0aW5nX29yZGVyXyBSVENfR1VBUkRFRF9CWShwZW5k
aW5nX2xvY2tfKXt9OworCisgIC8vIFRoZSBsaXN0IG9mIGFsbCBwZW5kaW5nIHRhc2tzIHRoYXQg
bmVlZCB0byBiZSBwcm9jZXNzZWQgaW4gdGhlCisgIC8vIEZJRk8gcXVldWUgb3JkZXJpbmcgb24g
dGhlIHdvcmtlciB0aHJlYWQuCisgIHN0ZDo6cXVldWU8c3RkOjpwYWlyPE9yZGVySWQsIHN0ZDo6
dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPj4+IHBlbmRpbmdfcXVldWVfCisgICAgICBSVENfR1VBUkRF
RF9CWShwZW5kaW5nX2xvY2tfKTsKKworICAvLyBUaGUgbGlzdCBvZiBhbGwgcGVuZGluZyB0YXNr
cyB0aGF0IG5lZWQgdG8gYmUgcHJvY2Vzc2VkIGF0IGEgZnV0dXJlCisgIC8vIHRpbWUgYmFzZWQg
dXBvbiBhIGRlbGF5LiBPbiB0aGUgb2ZmIGNoYW5nZSB0aGUgZGVsYXllZCB0YXNrIHNob3VsZAor
ICAvLyBoYXBwZW4gYXQgZXhhY3RseSB0aGUgc2FtZSB0aW1lIGludGVydmFsIGFzIGFub3RoZXIg
dGFzayB0aGVuIHRoZQorICAvLyB0YXNrIGlzIHByb2Nlc3NlZCBiYXNlZCBvbiBGSUZPIG9yZGVy
aW5nLiBzdGQ6OnByaW9yaXR5X3F1ZXVlIHdhcworICAvLyBjb25zaWRlcmVkIGJ1dCByZWplY3Rl
ZCBkdWUgdG8gaXRzIGluYWJpbGl0eSB0byBleHRyYWN0IHRoZQorICAvLyBzdGQ6OnVuaXF1ZV9w
dHIgb3V0IG9mIHRoZSBxdWV1ZSB3aXRob3V0IHRoZSBwcmVzZW5jZSBvZiBhIGhhY2suCisgIHN0
ZDo6bWFwPERlbGF5ZWRFbnRyeVRpbWVvdXQsIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPj4g
ZGVsYXllZF9xdWV1ZV8KKyAgICAgIFJUQ19HVUFSREVEX0JZKHBlbmRpbmdfbG9ja18pOworfTsK
KworLy8gc3RhdGljCit0aHJlYWRfbG9jYWwgVGFza1F1ZXVlOjpJbXBsKiBUYXNrUXVldWU6Oklt
cGw6OnRocmVhZF9jb250ZXh0XyA9IG51bGxwdHI7CisKK1Rhc2tRdWV1ZTo6SW1wbDo6SW1wbChj
b25zdCBjaGFyKiBxdWV1ZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIFRhc2tRdWV1ZSog
cXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgcHJpb3JpdHkpCisgICAgOiBx
dWV1ZV8ocXVldWUpLAorICAgICAgc3RhcnRlZF8oLyptYW51YWxfcmVzZXQ9Ki9mYWxzZSwgLypp
bml0aWFsbHlfc2lnbmFsZWQ9Ki9mYWxzZSksCisgICAgICBzdG9wcGVkXygvKm1hbnVhbF9yZXNl
dD0qL2ZhbHNlLCAvKmluaXRpYWxseV9zaWduYWxlZD0qL2ZhbHNlKSwKKyAgICAgIGZsYWdfbm90
aWZ5XygvKm1hbnVhbF9yZXNldD0qL2ZhbHNlLCAvKmluaXRpYWxseV9zaWduYWxlZD0qL2ZhbHNl
KSwKKyAgICAgIHRocmVhZF8oJlRhc2tRdWV1ZTo6SW1wbDo6VGhyZWFkTWFpbiwKKyAgICAgICAg
ICAgICAgdGhpcywKKyAgICAgICAgICAgICAgcXVldWVfbmFtZSwKKyAgICAgICAgICAgICAgVGFz
a1F1ZXVlUHJpb3JpdHlUb1RocmVhZFByaW9yaXR5KHByaW9yaXR5KSkgeworICBSVENfRENIRUNL
KHF1ZXVlX25hbWUpOworICB0aHJlYWRfLlN0YXJ0KCk7CisgIHN0YXJ0ZWRfLldhaXQoRXZlbnQ6
OmtGb3JldmVyKTsKK30KKworVGFza1F1ZXVlOjpJbXBsOjp+SW1wbCgpIHsKKyAgUlRDX0RDSEVD
SyghSXNDdXJyZW50KCkpOworCisgIHsKKyAgICBDcml0U2NvcGUgbG9jaygmcGVuZGluZ19sb2Nr
Xyk7CisgICAgdGhyZWFkX3Nob3VsZF9xdWl0XyA9IHRydWU7CisgIH0KKworICBOb3RpZnlXYWtl
KCk7CisKKyAgc3RvcHBlZF8uV2FpdChFdmVudDo6a0ZvcmV2ZXIpOworICB0aHJlYWRfLlN0b3Ao
KTsKK30KKworLy8gc3RhdGljCitUYXNrUXVldWU6OkltcGwqIFRhc2tRdWV1ZTo6SW1wbDo6Q3Vy
cmVudCgpIHsKKyAgcmV0dXJuIHRocmVhZF9jb250ZXh0XzsKK30KKworLy8gc3RhdGljCitUYXNr
UXVldWUqIFRhc2tRdWV1ZTo6SW1wbDo6Q3VycmVudFF1ZXVlKCkgeworICBUYXNrUXVldWU6Oklt
cGwqIGN1cnJlbnQgPSBDdXJyZW50KCk7CisgIHJldHVybiBjdXJyZW50ID8gY3VycmVudC0+cXVl
dWVfIDogbnVsbHB0cjsKK30KKworYm9vbCBUYXNrUXVldWU6OkltcGw6OklzQ3VycmVudCgpIGNv
bnN0IHsKKyAgcmV0dXJuIElzVGhyZWFkUmVmRXF1YWwodGhyZWFkXy5HZXRUaHJlYWRSZWYoKSwg
Q3VycmVudFRocmVhZFJlZigpKTsKK30KKwordm9pZCBUYXNrUXVldWU6OkltcGw6OlBvc3RUYXNr
KHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiB0YXNrKSB7CisgIHsKKyAgICBDcml0U2NvcGUg
bG9jaygmcGVuZGluZ19sb2NrXyk7CisgICAgT3JkZXJJZCBvcmRlciA9IHRocmVhZF9wb3N0aW5n
X29yZGVyXysrOworCisgICAgcGVuZGluZ19xdWV1ZV8ucHVzaChzdGQ6OnBhaXI8T3JkZXJJZCwg
c3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+PigKKyAgICAgICAgb3JkZXIsIHN0ZDo6bW92ZSh0
YXNrKSkpOworICB9CisKKyAgTm90aWZ5V2FrZSgpOworfQorCit2b2lkIFRhc2tRdWV1ZTo6SW1w
bDo6UG9zdERlbGF5ZWRUYXNrKHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiB0YXNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBtaWxsaXNlY29uZHMp
IHsKKyAgYXV0byBmaXJlX2F0ID0gcnRjOjpUaW1lTWlsbGlzKCkgKyBtaWxsaXNlY29uZHM7CisK
KyAgRGVsYXllZEVudHJ5VGltZW91dCBkZWxheTsKKyAgZGVsYXkubmV4dF9maXJlX2F0X21zXyA9
IGZpcmVfYXQ7CisKKyAgeworICAgIENyaXRTY29wZSBsb2NrKCZwZW5kaW5nX2xvY2tfKTsKKyAg
ICBkZWxheS5vcmRlcl8gPSArK3RocmVhZF9wb3N0aW5nX29yZGVyXzsKKyAgICBkZWxheWVkX3F1
ZXVlX1tkZWxheV0gPSBzdGQ6Om1vdmUodGFzayk7CisgIH0KKworICBOb3RpZnlXYWtlKCk7Cit9
CisKK3ZvaWQgVGFza1F1ZXVlOjpJbXBsOjpQb3N0VGFza0FuZFJlcGx5KHN0ZDo6dW5pcXVlX3B0
cjxRdWV1ZWRUYXNrPiB0YXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHJlcGx5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGFza1F1ZXVlOjpJbXBsKiByZXBseV9xdWV1ZSkgeworICBR
dWV1ZWRUYXNrKiB0YXNrX3B0ciA9IHRhc2sucmVsZWFzZSgpOworICBRdWV1ZWRUYXNrKiByZXBs
eV90YXNrX3B0ciA9IHJlcGx5LnJlbGVhc2UoKTsKKyAgUG9zdFRhc2soW3Rhc2tfcHRyLCByZXBs
eV90YXNrX3B0ciwgcmVwbHlfcXVldWVdKCkgeworICAgIGlmICh0YXNrX3B0ci0+UnVuKCkpCisg
ICAgICBkZWxldGUgdGFza19wdHI7CisKKyAgICByZXBseV9xdWV1ZS0+UG9zdFRhc2soc3RkOjp1
bmlxdWVfcHRyPFF1ZXVlZFRhc2s+KHJlcGx5X3Rhc2tfcHRyKSk7CisgIH0pOworfQorCitUYXNr
UXVldWU6OkltcGw6Ok5leHRUYXNrIFRhc2tRdWV1ZTo6SW1wbDo6R2V0TmV4dFRhc2soKSB7Cisg
IE5leHRUYXNrIHJlc3VsdHt9OworCisgIGF1dG8gdGljayA9IHJ0Yzo6VGltZU1pbGxpcygpOwor
CisgIENyaXRTY29wZSBsb2NrKCZwZW5kaW5nX2xvY2tfKTsKKworICBpZiAodGhyZWFkX3Nob3Vs
ZF9xdWl0XykgeworICAgIHJlc3VsdC5maW5hbF90YXNrXyA9IHRydWU7CisgICAgcmV0dXJuIHJl
c3VsdDsKKyAgfQorCisgIGlmIChkZWxheWVkX3F1ZXVlXy5zaXplKCkgPiAwKSB7CisgICAgYXV0
byBkZWxheWVkX2VudHJ5ID0gZGVsYXllZF9xdWV1ZV8uYmVnaW4oKTsKKyAgICBjb25zdCBhdXRv
JiBkZWxheV9pbmZvID0gZGVsYXllZF9lbnRyeS0+Zmlyc3Q7CisgICAgYXV0byYgZGVsYXlfcnVu
ID0gZGVsYXllZF9lbnRyeS0+c2Vjb25kOworICAgIGlmICh0aWNrID49IGRlbGF5X2luZm8ubmV4
dF9maXJlX2F0X21zXykgeworICAgICAgaWYgKHBlbmRpbmdfcXVldWVfLnNpemUoKSA+IDApIHsK
KyAgICAgICAgYXV0byYgZW50cnkgPSBwZW5kaW5nX3F1ZXVlXy5mcm9udCgpOworICAgICAgICBh
dXRvJiBlbnRyeV9vcmRlciA9IGVudHJ5LmZpcnN0OworICAgICAgICBhdXRvJiBlbnRyeV9ydW4g
PSBlbnRyeS5zZWNvbmQ7CisgICAgICAgIGlmIChlbnRyeV9vcmRlciA8IGRlbGF5X2luZm8ub3Jk
ZXJfKSB7CisgICAgICAgICAgcmVzdWx0LnJ1bl90YXNrXyA9IHN0ZDo6bW92ZShlbnRyeV9ydW4p
OworICAgICAgICAgIHBlbmRpbmdfcXVldWVfLnBvcCgpOworICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmVzdWx0LnJ1bl90YXNrXyA9IHN0ZDo6
bW92ZShkZWxheV9ydW4pOworICAgICAgZGVsYXllZF9xdWV1ZV8uZXJhc2UoZGVsYXllZF9lbnRy
eSk7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHJlc3VsdC5zbGVlcF90aW1l
X21zXyA9IGRlbGF5X2luZm8ubmV4dF9maXJlX2F0X21zXyAtIHRpY2s7CisgIH0KKworICBpZiAo
cGVuZGluZ19xdWV1ZV8uc2l6ZSgpID4gMCkgeworICAgIGF1dG8mIGVudHJ5ID0gcGVuZGluZ19x
dWV1ZV8uZnJvbnQoKTsKKyAgICByZXN1bHQucnVuX3Rhc2tfID0gc3RkOjptb3ZlKGVudHJ5LnNl
Y29uZCk7CisgICAgcGVuZGluZ19xdWV1ZV8ucG9wKCk7CisgIH0KKworICByZXR1cm4gcmVzdWx0
OworfQorCisvLyBzdGF0aWMKK3ZvaWQgVGFza1F1ZXVlOjpJbXBsOjpUaHJlYWRNYWluKHZvaWQq
IGNvbnRleHQpIHsKKyAgVGFza1F1ZXVlOjpJbXBsKiBtZSA9IHN0YXRpY19jYXN0PFRhc2tRdWV1
ZTo6SW1wbCo+KGNvbnRleHQpOworICBtZS0+UHJvY2Vzc1Rhc2tzKCk7Cit9CisKK3ZvaWQgVGFz
a1F1ZXVlOjpJbXBsOjpQcm9jZXNzVGFza3MoKSB7CisgIHRocmVhZF9jb250ZXh0XyA9IHRoaXM7
CisgIHN0YXJ0ZWRfLlNldCgpOworCisgIHdoaWxlICh0cnVlKSB7CisgICAgYXV0byB0YXNrID0g
R2V0TmV4dFRhc2soKTsKKworICAgIGlmICh0YXNrLmZpbmFsX3Rhc2tfKQorICAgICAgYnJlYWs7
CisKKyAgICBpZiAodGFzay5ydW5fdGFza18pIHsKKyAgICAgIC8vIHByb2Nlc3MgZW50cnkgaW1t
ZWRpYXRlbHkgdGhlbiB0cnkgYWdhaW4KKyAgICAgIFF1ZXVlZFRhc2sqIHJlbGVhc2VfcHRyID0g
dGFzay5ydW5fdGFza18ucmVsZWFzZSgpOworICAgICAgaWYgKHJlbGVhc2VfcHRyLT5SdW4oKSkK
KyAgICAgICAgZGVsZXRlIHJlbGVhc2VfcHRyOworCisgICAgICAvLyBhdHRlbXB0IHRvIHNsZWVw
IGFnYWluCisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBpZiAoMCA9PSB0YXNrLnNsZWVw
X3RpbWVfbXNfKQorICAgICAgZmxhZ19ub3RpZnlfLldhaXQoRXZlbnQ6OmtGb3JldmVyKTsKKyAg
ICBlbHNlCisgICAgICBmbGFnX25vdGlmeV8uV2FpdCh0YXNrLnNsZWVwX3RpbWVfbXNfKTsKKyAg
fQorCisgIHN0b3BwZWRfLlNldCgpOworfQorCit2b2lkIFRhc2tRdWV1ZTo6SW1wbDo6Tm90aWZ5
V2FrZSgpIHsKKyAgLy8gVGhlIHF1ZXVlIGhvbGRzIHBlbmRpbmcgdGFza3MgdG8gY29tcGxldGUu
IEVpdGhlciB0YXNrcyBhcmUgdG8gYmUKKyAgLy8gZXhlY3V0ZWQgaW1tZWRpYXRlbHkgb3IgdGFz
a3MgYXJlIHRvIGJlIHJ1biBhdCBzb21lIGZ1dHVyZSBkZWxheWVkIHRpbWUuCisgIC8vIEZvciBp
bW1lZGlhdGUgdGFza3MgdGhlIHRhc2sgcXVldWUncyB0aHJlYWQgaXMgYnVzeSBydW5uaW5nIHRo
ZSB0YXNrIGFuZAorICAvLyB0aGUgdGhyZWFkIHdpbGwgbm90IGJlIHdhaXRpbmcgb24gdGhlIGZs
YWdfbm90aWZ5XyBldmVudC4gSWYgbm8gaW1tZWRpYXRlCisgIC8vIHRhc2tzIGFyZSBhdmFpbGFi
bGUgYnV0IGEgZGVsYXllZCB0YXNrIGlzIHBlbmRpbmcgdGhlbiB0aGUgdGhyZWFkIHdpbGwgYmUK
KyAgLy8gd2FpdGluZyBvbiBmbGFnX25vdGlmeV8gd2l0aCBhIGRlbGF5ZWQgdGltZS1vdXQgb2Yg
dGhlIG5lYXJlc3QgdGltZWQgdGFzaworICAvLyB0byBydW4uIElmIG5vIGltbWVkaWF0ZSBvciBw
ZW5kaW5nIHRhc2tzIGFyZSBhdmFpbGFibGUsIHRoZSB0aHJlYWQgd2lsbAorICAvLyB3YWl0IG9u
IGZsYWdfbm90aWZ5XyB1bnRpbCBzaWduYWxlZCB0aGF0IGEgdGFzayBoYXMgYmVlbiBhZGRlZCAo
b3IgdGhlCisgIC8vIHRocmVhZCB0byBiZSB0b2xkIHRvIHNodXRkb3duKS4KKworICAvLyBJbiBh
bGwgY2FzZXMsIHdoZW4gYSBuZXcgaW1tZWRpYXRlIHRhc2ssIGRlbGF5ZWQgdGFzaywgb3IgcmVx
dWVzdCB0bworICAvLyBzaHV0ZG93biB0aGUgdGhyZWFkIGlzIGFkZGVkIHRoZSBmbGFnX25vdGlm
eV8gaXMgc2lnbmFsZWQgYWZ0ZXIuIElmIHRoZQorICAvLyB0aHJlYWQgd2FzIHdhaXRpbmcgdGhl
biB0aGUgdGhyZWFkIHdpbGwgd2FrZSB1cCBpbW1lZGlhdGVseSBhbmQgcmUtYXNzZXNzCisgIC8v
IHdoYXQgdGFzayBuZWVkcyB0byBiZSBydW4gbmV4dCAoaS5lLiBydW4gYSB0YXNrIG5vdywgd2Fp
dCBmb3IgdGhlIG5lYXJlc3QKKyAgLy8gdGltZWQgZGVsYXllZCB0YXNrLCBvciBzaHV0ZG93biB0
aGUgdGhyZWFkKS4gSWYgdGhlIHRocmVhZCB3YXMgbm90IHdhaXRpbmcKKyAgLy8gdGhlbiB0aGUg
dGhyZWFkIHdpbGwgcmVtYWluZWQgc2lnbmFsZWQgdG8gd2FrZSB1cCB0aGUgbmV4dCB0aW1lIGFu
eQorICAvLyBhdHRlbXB0IHRvIHdhaXQgb24gdGhlIGZsYWdfbm90aWZ5XyBldmVudCBvY2N1cnMu
CisKKyAgLy8gQW55IGltbWVkaWF0ZSBvciBkZWxheWVkIHBlbmRpbmcgdGFzayAob3IgcmVxdWVz
dCB0byBzaHV0ZG93biB0aGUgdGhyZWFkKQorICAvLyBtdXN0IGFsd2F5cyBiZSBhZGRlZCB0byB0
aGUgcXVldWUgcHJpb3IgdG8gc2lnbmFsaW5nIGZsYWdfbm90aWZ5XyB0byB3YWtlCisgIC8vIHVw
IHRoZSBwb3NzaWJseSBzbGVlcGluZyB0aHJlYWQuIFRoaXMgcHJldmVudHMgYSByYWNlIGNvbmRp
dGlvbiB3aGVyZSB0aGUKKyAgLy8gdGhyZWFkIGlzIG5vdGlmaWVkIHRvIHdha2UgdXAgYnV0IHRo
ZSB0YXNrIHF1ZXVlJ3MgdGhyZWFkIGZpbmRzIG5vdGhpbmcgdG8KKyAgLy8gZG8gc28gaXQgd2Fp
dHMgb25jZSBhZ2FpbiB0byBiZSBzaWduYWxlZCB3aGVyZSBzdWNoIGEgc2lnbmFsIG1heSBuZXZl
cgorICAvLyBoYXBwZW4uCisgIGZsYWdfbm90aWZ5Xy5TZXQoKTsKK30KKworLy8gQm9pbGVycGxh
dGUgZm9yIHRoZSBQSU1QTCBwYXR0ZXJuLgorVGFza1F1ZXVlOjpUYXNrUXVldWUoY29uc3QgY2hh
ciogcXVldWVfbmFtZSwgUHJpb3JpdHkgcHJpb3JpdHkpCisgICAgOiBpbXBsXyhuZXcgUmVmQ291
bnRlZE9iamVjdDxUYXNrUXVldWU6OkltcGw+KHF1ZXVlX25hbWUsIHRoaXMsIHByaW9yaXR5KSkg
eworfQorCitUYXNrUXVldWU6On5UYXNrUXVldWUoKSB7fQorCisvLyBzdGF0aWMKK1Rhc2tRdWV1
ZSogVGFza1F1ZXVlOjpDdXJyZW50KCkgeworICByZXR1cm4gVGFza1F1ZXVlOjpJbXBsOjpDdXJy
ZW50UXVldWUoKTsKK30KKworLy8gVXNlZCBmb3IgRENIRUNLaW5nIHRoZSBjdXJyZW50IHF1ZXVl
LgorYm9vbCBUYXNrUXVldWU6OklzQ3VycmVudCgpIGNvbnN0IHsKKyAgcmV0dXJuIGltcGxfLT5J
c0N1cnJlbnQoKTsKK30KKwordm9pZCBUYXNrUXVldWU6OlBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0
cjxRdWV1ZWRUYXNrPiB0YXNrKSB7CisgIHJldHVybiBUYXNrUXVldWU6OmltcGxfLT5Qb3N0VGFz
ayhzdGQ6Om1vdmUodGFzaykpOworfQorCit2b2lkIFRhc2tRdWV1ZTo6UG9zdFRhc2tBbmRSZXBs
eShzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiByZXBseSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tRdWV1ZSogcmVwbHlfcXVldWUpIHsKKyAgcmV0
dXJuIFRhc2tRdWV1ZTo6aW1wbF8tPlBvc3RUYXNrQW5kUmVwbHkoc3RkOjptb3ZlKHRhc2spLCBz
dGQ6Om1vdmUocmVwbHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXBseV9xdWV1ZS0+aW1wbF8uZ2V0KCkpOworfQorCit2b2lkIFRhc2tRdWV1ZTo6UG9z
dFRhc2tBbmRSZXBseShzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiByZXBs
eSkgeworICByZXR1cm4gVGFza1F1ZXVlOjppbXBsXy0+UG9zdFRhc2tBbmRSZXBseShzdGQ6Om1v
dmUodGFzayksIHN0ZDo6bW92ZShyZXBseSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGltcGxfLmdldCgpKTsKK30KKwordm9pZCBUYXNrUXVldWU6OlBvc3RE
ZWxheWVkVGFzayhzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbWlsbGlzZWNvbmRzKSB7CisgIHJldHVybiBU
YXNrUXVldWU6OmltcGxfLT5Qb3N0RGVsYXllZFRhc2soc3RkOjptb3ZlKHRhc2spLCBtaWxsaXNl
Y29uZHMpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvdGFza19xdWV1ZV91bml0dGVzdC5jYwppbmRleCBjZWRmNjhlMmU4NTEzNTljNTA1ZTRjMzRi
MTRiOWNkODliZGFlZTYzLi4wYWYzOWE1ZTcxNWZiMTU3OGMzNTliZTZjMjhjYzQxYWQzZGQ4MjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS90YXNrX3F1ZXVlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfdW5pdHRlc3QuY2MKQEAg
LTY0LDcgKzY0LDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBDb25zdHJ1Y3QpIHsKIAogVEVTVChU
YXNrUXVldWVUZXN0LCBQb3N0QW5kQ2hlY2tDdXJyZW50KSB7CiAgIHN0YXRpYyBjb25zdCBjaGFy
IGtRdWV1ZU5hbWVbXSA9ICJQb3N0QW5kQ2hlY2tDdXJyZW50IjsKLSAgRXZlbnQgZXZlbnQoZmFs
c2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7CiAgIFRhc2tRdWV1ZSBxdWV1ZShrUXVldWVOYW1l
KTsKIAogICAvLyBXZSdyZSBub3QgcnVubmluZyBhIHRhc2ssIHNvIHRoZXJlIHNob3VsZG4ndCBi
ZSBhIGN1cnJlbnQgcXVldWUuCkBAIC0xMDYsNyArMTA2LDcgQEAgVEVTVChUYXNrUXVldWVUZXN0
LCBQb3N0TGFtYmRhKSB7CiAKIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdERlbGF5ZWRaZXJvKSB7
CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtRdWV1ZU5hbWVbXSA9ICJQb3N0RGVsYXllZFplcm8iOwot
ICBFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudDsKICAgVGFza1F1ZXVl
IHF1ZXVlKGtRdWV1ZU5hbWUpOwogCiAgIHF1ZXVlLlBvc3REZWxheWVkVGFzayhbJmV2ZW50XSgp
IHsgZXZlbnQuU2V0KCk7IH0sIDApOwpAQCAtMTE1LDcgKzExNSw3IEBAIFRFU1QoVGFza1F1ZXVl
VGVzdCwgUG9zdERlbGF5ZWRaZXJvKSB7CiAKIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdEZyb21R
dWV1ZSkgewogICBzdGF0aWMgY29uc3QgY2hhciBrUXVldWVOYW1lW10gPSAiUG9zdEZyb21RdWV1
ZSI7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBUYXNr
UXVldWUgcXVldWUoa1F1ZXVlTmFtZSk7CiAKICAgcXVldWUuUG9zdFRhc2soCkBAIC0xMjUsNyAr
MTI1LDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0RnJvbVF1ZXVlKSB7CiAKIFRFU1QoVGFz
a1F1ZXVlVGVzdCwgUG9zdERlbGF5ZWQpIHsKICAgc3RhdGljIGNvbnN0IGNoYXIga1F1ZXVlTmFt
ZVtdID0gIlBvc3REZWxheWVkIjsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZl
bnQgZXZlbnQ7CiAgIFRhc2tRdWV1ZSBxdWV1ZShrUXVldWVOYW1lLCBUYXNrUXVldWU6OlByaW9y
aXR5OjpISUdIKTsKIAogICB1aW50MzJfdCBzdGFydCA9IFRpbWUoKTsKQEAgLTE0NSw3ICsxNDUs
NyBAQCBURVNUKFRhc2tRdWV1ZVRlc3QsIERJU0FCTEVEX1Bvc3REZWxheWVkSGlnaFJlcykgewog
ICBFbmFibGVIaWdoUmVzVGltZXJzIGhpZ2hfcmVzX3Njb3BlOwogCiAgIHN0YXRpYyBjb25zdCBj
aGFyIGtRdWV1ZU5hbWVbXSA9ICJQb3N0RGVsYXllZEhpZ2hSZXMiOwotICBFdmVudCBldmVudChm
YWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudDsKICAgVGFza1F1ZXVlIHF1ZXVlKGtRdWV1ZU5h
bWUsIFRhc2tRdWV1ZTo6UHJpb3JpdHk6OkhJR0gpOwogCiAgIHVpbnQzMl90IHN0YXJ0ID0gVGlt
ZSgpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdE11bHRpcGxl
RGVsYXllZCkgewogCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFdmVudD4+IGV2ZW50
czsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSkgewotICAgIGV2ZW50cy5wdXNoX2Jh
Y2soc3RkOjp1bmlxdWVfcHRyPEV2ZW50PihuZXcgRXZlbnQoZmFsc2UsIGZhbHNlKSkpOworICAg
IGV2ZW50cy5wdXNoX2JhY2soYWJzbDo6bWFrZV91bmlxdWU8RXZlbnQ+KCkpOwogICAgIHF1ZXVl
LlBvc3REZWxheWVkVGFzayhCaW5kKCZDaGVja0N1cnJlbnQsIGV2ZW50cy5iYWNrKCkuZ2V0KCks
ICZxdWV1ZSksIGkpOwogICB9CiAKQEAgLTE3NSw4ICsxNzUsOCBAQCBURVNUKFRhc2tRdWV1ZVRl
c3QsIFBvc3RNdWx0aXBsZURlbGF5ZWQpIHsKIAogVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0RGVs
YXllZEFmdGVyRGVzdHJ1Y3QpIHsKICAgc3RhdGljIGNvbnN0IGNoYXIga1F1ZXVlTmFtZVtdID0g
IlBvc3REZWxheWVkQWZ0ZXJEZXN0cnVjdCI7Ci0gIEV2ZW50IHJ1bihmYWxzZSwgZmFsc2UpOwot
ICBFdmVudCBkZWxldGVkKGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IHJ1bjsKKyAgRXZlbnQgZGVs
ZXRlZDsKICAgewogICAgIFRhc2tRdWV1ZSBxdWV1ZShrUXVldWVOYW1lKTsKICAgICBxdWV1ZS5Q
b3N0RGVsYXllZFRhc2soCkBAIC0xOTEsNyArMTkxLDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBQ
b3N0RGVsYXllZEFmdGVyRGVzdHJ1Y3QpIHsKIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdEFuZFJl
cGx5KSB7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtQb3N0UXVldWVbXSA9ICJQb3N0UXVldWUiOwog
ICBzdGF0aWMgY29uc3QgY2hhciBrUmVwbHlRdWV1ZVtdID0gIlJlcGx5UXVldWUiOwotICBFdmVu
dCBldmVudChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudDsKICAgVGFza1F1ZXVlIHBvc3Rf
cXVldWUoa1Bvc3RRdWV1ZSk7CiAgIFRhc2tRdWV1ZSByZXBseV9xdWV1ZShrUmVwbHlRdWV1ZSk7
CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RBbmRSZXBseSkg
ewogVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0QW5kUmV1c2UpIHsKICAgc3RhdGljIGNvbnN0IGNo
YXIga1Bvc3RRdWV1ZVtdID0gIlBvc3RRdWV1ZSI7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtSZXBs
eVF1ZXVlW10gPSAiUmVwbHlRdWV1ZSI7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7Cisg
IEV2ZW50IGV2ZW50OwogICBUYXNrUXVldWUgcG9zdF9xdWV1ZShrUG9zdFF1ZXVlKTsKICAgVGFz
a1F1ZXVlIHJlcGx5X3F1ZXVlKGtSZXBseVF1ZXVlKTsKIApAQCAtMjUxLDcgKzI1MSw3IEBAIFRF
U1QoVGFza1F1ZXVlVGVzdCwgUG9zdEFuZFJldXNlKSB7CiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBv
c3RBbmRSZXBseUxhbWJkYSkgewogICBzdGF0aWMgY29uc3QgY2hhciBrUG9zdFF1ZXVlW10gPSAi
UG9zdFF1ZXVlIjsKICAgc3RhdGljIGNvbnN0IGNoYXIga1JlcGx5UXVldWVbXSA9ICJSZXBseVF1
ZXVlIjsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7CiAgIFRh
c2tRdWV1ZSBwb3N0X3F1ZXVlKGtQb3N0UXVldWUpOwogICBUYXNrUXVldWUgcmVwbHlfcXVldWUo
a1JlcGx5UXVldWUpOwogCkBAIC0yODcsNyArMjg3LDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBQ
b3N0Q29weWFibGVDbG9zdXJlKSB7CiAKICAgaW50IG51bV9jb3BpZXMgPSAwOwogICBpbnQgbnVt
X21vdmVzID0gMDsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7
CiAKICAgc3RhdGljIGNvbnN0IGNoYXIga1Bvc3RRdWV1ZVtdID0gIlBvc3RDb3B5YWJsZUNsb3N1
cmUiOwogICBUYXNrUXVldWUgcG9zdF9xdWV1ZShrUG9zdFF1ZXVlKTsKQEAgLTMyMyw3ICszMjMs
NyBAQCBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RNb3ZlT25seUNsb3N1cmUpIHsKICAgfTsKIAog
ICBpbnQgbnVtX21vdmVzID0gMDsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZl
bnQgZXZlbnQ7CiAgIHN0ZDo6dW5pcXVlX3B0cjxTb21lU3RhdGU+IHN0YXRlKG5ldyBTb21lU3Rh
dGUoJmV2ZW50KSk7CiAKICAgc3RhdGljIGNvbnN0IGNoYXIga1Bvc3RRdWV1ZVtdID0gIlBvc3RN
b3ZlT25seUNsb3N1cmUiOwpAQCAtMzQ2LDggKzM0Niw4IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwg
UG9zdE1vdmVPbmx5Q2xlYW51cCkgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxTb21lU3RhdGU+IHN0
YXRlOwogICB9OwogCi0gIEV2ZW50IGV2ZW50X3J1bihmYWxzZSwgZmFsc2UpOwotICBFdmVudCBl
dmVudF9jbGVhbnVwKGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50X3J1bjsKKyAgRXZlbnQg
ZXZlbnRfY2xlYW51cDsKICAgc3RkOjp1bmlxdWVfcHRyPFNvbWVTdGF0ZT4gc3RhdGVfcnVuKG5l
dyBTb21lU3RhdGUoJmV2ZW50X3J1bikpOwogICBzdGQ6OnVuaXF1ZV9wdHI8U29tZVN0YXRlPiBz
dGF0ZV9jbGVhbnVwKG5ldyBTb21lU3RhdGUoJmV2ZW50X2NsZWFudXApKTsKIApAQCAtMzY3LDcg
KzM2Nyw3IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdE1vdmVPbmx5Q2xlYW51cCkgewogLy8g
d3JpdHRlbiBpbiBhIHdheSB0aGF0IG1ha2VzIGl0IGxpa2VseSBhbmQgYnkgcnVubmluZyB3aXRo
IC0tZ3Rlc3RfcmVwZWF0PTEwMDAKIC8vIHRoZSBidWcgd291bGQgb2NjdXIuIEFsYXMsIG5vdyBp
dCBzaG91bGQgYmUgZml4ZWQuCiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RBbmRSZXBseURlYWRs
b2NrKSB7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBU
YXNrUXVldWUgcG9zdF9xdWV1ZSgiUG9zdFF1ZXVlIik7CiAgIFRhc2tRdWV1ZSByZXBseV9xdWV1
ZSgiUmVwbHlRdWV1ZSIpOwogCkBAIC0zODQsOCArMzg0LDggQEAgVEVTVChUYXNrUXVldWVUZXN0
LCBQb3N0QW5kUmVwbHlEZWFkbG9jaykgewogI2RlZmluZSBNQVlCRV9EZWxldGVUYXNrUXVldWVB
ZnRlclBvc3RBbmRSZXBseSBEZWxldGVUYXNrUXVldWVBZnRlclBvc3RBbmRSZXBseQogI2VuZGlm
CiBURVNUKFRhc2tRdWV1ZVRlc3QsIE1BWUJFX0RlbGV0ZVRhc2tRdWV1ZUFmdGVyUG9zdEFuZFJl
cGx5KSB7Ci0gIEV2ZW50IHRhc2tfZGVsZXRlZChmYWxzZSwgZmFsc2UpOwotICBFdmVudCByZXBs
eV9kZWxldGVkKGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IHRhc2tfZGVsZXRlZDsKKyAgRXZlbnQg
cmVwbHlfZGVsZXRlZDsKICAgYXV0byogdGFza19xdWV1ZSA9IG5ldyBUYXNrUXVldWUoIlF1ZXVl
Iik7CiAKICAgdGFza19xdWV1ZS0+UG9zdFRhc2tBbmRSZXBseSgKQEAgLTQxMyw3ICs0MTMsNyBA
QCB2b2lkIFRlc3RQb3N0VGFza0FuZFJlcGx5KFRhc2tRdWV1ZSogd29ya19xdWV1ZSwgRXZlbnQq
IGV2ZW50KSB7CiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RBbmRSZXBseTIpIHsKICAgc3RhdGlj
IGNvbnN0IGNoYXIga1F1ZXVlTmFtZVtdID0gIlBvc3RBbmRSZXBseTIiOwogICBzdGF0aWMgY29u
c3QgY2hhciBrV29ya1F1ZXVlTmFtZVtdID0gIlBvc3RBbmRSZXBseTJfV29ya2VyIjsKLSAgRXZl
bnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7CiAgIFRhc2tRdWV1ZSBxdWV1
ZShrUXVldWVOYW1lKTsKICAgVGFza1F1ZXVlIHdvcmtfcXVldWUoa1dvcmtRdWV1ZU5hbWUpOwog
CkBAIC00MjUsNyArNDI1LDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0QW5kUmVwbHkyKSB7
CiAvLyBJbiBzaXR1YXRpb25zIGxpa2UgdGhhdCwgdGFza3Mgd2lsbCBnZXQgZHJvcHBlZC4KIFRF
U1QoVGFza1F1ZXVlVGVzdCwgUG9zdEFMb3QpIHsKICAgLy8gVG8gZGVzdHJ1Y3QgdGhlIGV2ZW50
IGFmdGVyIHRoZSBxdWV1ZSBoYXMgZ29uZSBvdXQgb2Ygc2NvcGUuCi0gIEV2ZW50IGV2ZW50KGZh
bHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogCiAgIGludCB0YXNrc19leGVjdXRlZCA9IDA7
CiAgIGludCB0YXNrc19jbGVhbmVkX3VwID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3RjbGllbnQuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0Y2xpZW50
LmNjCmluZGV4IDdjMTUxYzc1MTAxZTdiMDU4N2ZhYWM4MDJkNTYwMzFkYTRkNDI1NGYuLmE1Yjkw
ZGRkMjAxN2RkNmYyODBiZmFjN2Q3YTVhNjJhNzk2ZWFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3RjbGllbnQuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
dGVzdGNsaWVudC5jYwpAQCAtOTcsNyArOTcsNyBAQCBib29sIFRlc3RDbGllbnQ6OkNoZWNrTmV4
dFBhY2tldChjb25zdCBjaGFyKiBidWYsCiAgIHN0ZDo6dW5pcXVlX3B0cjxQYWNrZXQ+IHBhY2tl
dCA9IE5leHRQYWNrZXQoa1RpbWVvdXRNcyk7CiAgIGlmIChwYWNrZXQpIHsKICAgICByZXMgPSAo
cGFja2V0LT5zaXplID09IHNpemUgJiYgbWVtY21wKHBhY2tldC0+YnVmLCBidWYsIHNpemUpID09
IDAgJiYKLSAgICAgICAgICAgQ2hlY2tUaW1lc3RhbXAocGFja2V0LT5wYWNrZXRfdGltZS50aW1l
c3RhbXApKTsKKyAgICAgICAgICAgQ2hlY2tUaW1lc3RhbXAocGFja2V0LT5wYWNrZXRfdGltZV91
cykpOwogICAgIGlmIChhZGRyKQogICAgICAgKmFkZHIgPSBwYWNrZXQtPmFkZHI7CiAgIH0KQEAg
LTE0NCwxMCArMTQ0LDEwIEBAIHZvaWQgVGVzdENsaWVudDo6T25QYWNrZXQoQXN5bmNQYWNrZXRT
b2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVm
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKSB7CiAgIENy
aXRTY29wZSBjcygmY3JpdF8pOwogICBwYWNrZXRzXy5wdXNoX2JhY2soCi0gICAgICBhYnNsOjpt
YWtlX3VuaXF1ZTxQYWNrZXQ+KHJlbW90ZV9hZGRyLCBidWYsIHNpemUsIHBhY2tldF90aW1lKSk7
CisgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxQYWNrZXQ+KHJlbW90ZV9hZGRyLCBidWYsIHNpemUs
IHBhY2tldF90aW1lX3VzKSk7CiB9CiAKIHZvaWQgVGVzdENsaWVudDo6T25SZWFkeVRvU2VuZChB
c3luY1BhY2tldFNvY2tldCogc29ja2V0KSB7CkBAIC0xNTcsMTQgKzE1NywxNCBAQCB2b2lkIFRl
c3RDbGllbnQ6Ok9uUmVhZHlUb1NlbmQoQXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCkgewogVGVz
dENsaWVudDo6UGFja2V0OjpQYWNrZXQoY29uc3QgU29ja2V0QWRkcmVzcyYgYSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRp
bWUmIHBhY2tldF90aW1lKQotICAgIDogYWRkcihhKSwgYnVmKDApLCBzaXplKHMpLCBwYWNrZXRf
dGltZShwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBw
YWNrZXRfdGltZV91cykKKyAgICA6IGFkZHIoYSksIGJ1ZigwKSwgc2l6ZShzKSwgcGFja2V0X3Rp
bWVfdXMocGFja2V0X3RpbWVfdXMpIHsKICAgYnVmID0gbmV3IGNoYXJbc2l6ZV07CiAgIG1lbWNw
eShidWYsIGIsIHNpemUpOwogfQogCiBUZXN0Q2xpZW50OjpQYWNrZXQ6OlBhY2tldChjb25zdCBQ
YWNrZXQmIHApCi0gICAgOiBhZGRyKHAuYWRkciksIGJ1ZigwKSwgc2l6ZShwLnNpemUpLCBwYWNr
ZXRfdGltZShwLnBhY2tldF90aW1lKSB7CisgICAgOiBhZGRyKHAuYWRkciksIGJ1ZigwKSwgc2l6
ZShwLnNpemUpLCBwYWNrZXRfdGltZV91cyhwLnBhY2tldF90aW1lX3VzKSB7CiAgIGJ1ZiA9IG5l
dyBjaGFyW3NpemVdOwogICBtZW1jcHkoYnVmLCBwLmJ1Ziwgc2l6ZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0
Y2xpZW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS90ZXN0Y2xpZW50LmgKaW5kZXggYTBkOThiMzBkMTY1NGJjNjBkMmEzZDk3NDFjODlkYTE0
MWRiNTJhZC4uMTZmYjZiYTY3N2MyMjI2ZGY4OThiMDllYjNkYjliNGE3Yzk1MjY4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
dGVzdGNsaWVudC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3Rlc3RjbGllbnQuaApAQCAtMjksMTQgKzI5LDE0IEBAIGNsYXNzIFRlc3RD
bGllbnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIFBhY2tldChjb25zdCBT
b2NrZXRBZGRyZXNzJiBhLAogICAgICAgICAgICBjb25zdCBjaGFyKiBiLAogICAgICAgICAgICBz
aXplX3QgcywKLSAgICAgICAgICAgY29uc3QgUGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAg
ICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKTsKICAgICBQYWNrZXQoY29uc3QgUGFja2V0
JiBwKTsKICAgICB2aXJ0dWFsIH5QYWNrZXQoKTsKIAogICAgIFNvY2tldEFkZHJlc3MgYWRkcjsK
ICAgICBjaGFyKiBidWY7CiAgICAgc2l6ZV90IHNpemU7Ci0gICAgUGFja2V0VGltZSBwYWNrZXRf
dGltZTsKKyAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzOwogICB9OwogCiAgIC8vIERlZmF1bHQg
dGltZW91dCBmb3IgTmV4dFBhY2tldCByZWFkcy4KQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3MgVGVz
dENsaWVudCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYnVmLAogICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCiAgICAgICAgICAg
ICAgICAgY29uc3QgU29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAg
Y29uc3QgUGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAgIGNvbnN0IGlu
dDY0X3QmIHBhY2tldF90aW1lX3VzKTsKICAgdm9pZCBPblJlYWR5VG9TZW5kKEFzeW5jUGFja2V0
U29ja2V0KiBzb2NrZXQpOwogICBib29sIENoZWNrVGltZXN0YW1wKGludDY0X3QgcGFja2V0X3Rp
bWVzdGFtcCk7CiAgIHZvaWQgQWR2YW5jZVRpbWUoaW50IG1zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3RlY2hvc2Vy
dmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS90ZXN0ZWNob3NlcnZlci5oCmluZGV4IDVlNzE0ZWI2M2RkMzBlMGU2OTY3NWIxZTBkZjlmZTQ3
OWYyYWZmNGEuLjlmZmQ3ODYyMmE0NWY3MjAyYzg5NzUyYjFlMzI5MjcyNGRhMGI4ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3Rlc3RlY2hvc2VydmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvdGVzdGVjaG9zZXJ2ZXIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFz
cyBUZXN0RWNob1NlcnZlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogYnVmLAogICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAog
ICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAg
ICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAg
ICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAgICBydGM6OlBhY2tl
dE9wdGlvbnMgb3B0aW9uczsKICAgICBzb2NrZXQtPlNlbmQoYnVmLCBzaXplLCBvcHRpb25zKTsK
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdGVzdHV0aWxzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvdGVzdHV0aWxzLmNjCmluZGV4IGI0YTc0MzNmYmQ3ZjE4MzA1
MGI0NjI2ZjU1OGQ3YjMyMDU0Yzg3N2YuLmYzMjkyZmQ1OWY3Y2VlMGIyMGU3ZjgxOTkyZWMyMWUz
MjU3ZTI0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0dXRpbHMuY2MKQEAgLTE0LDc1ICsxNCw3
IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3RpbmcgewogCiBTdHJlYW1TaW5r
OjpTdHJlYW1TaW5rKCkgPSBkZWZhdWx0OwotCiBTdHJlYW1TaW5rOjp+U3RyZWFtU2luaygpID0g
ZGVmYXVsdDsKIAotU3RyZWFtU291cmNlOjpTdHJlYW1Tb3VyY2UoKSB7Ci0gIENsZWFyKCk7Ci19
Ci0KLVN0cmVhbVNvdXJjZTo6flN0cmVhbVNvdXJjZSgpID0gZGVmYXVsdDsKLQotU3RyZWFtU3Rh
dGUgU3RyZWFtU291cmNlOjpHZXRTdGF0ZSgpIGNvbnN0IHsKLSAgcmV0dXJuIHN0YXRlXzsKLX0K
LQotU3RyZWFtUmVzdWx0IFN0cmVhbVNvdXJjZTo6UmVhZCh2b2lkKiBidWZmZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVuLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QqIHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCogZXJyb3IpIHsKLSAgaWYgKFNTX0NMT1NFRCA9PSBzdGF0ZV8pIHsKLSAg
ICBpZiAoZXJyb3IpCi0gICAgICAqZXJyb3IgPSAtMTsKLSAgICByZXR1cm4gU1JfRVJST1I7Ci0g
IH0KLSAgaWYgKChTU19PUEVOSU5HID09IHN0YXRlXykgfHwgKHJlYWRhYmxlX2RhdGFfLnNpemUo
KSA8PSByZWFkX2Jsb2NrXykpIHsKLSAgICByZXR1cm4gU1JfQkxPQ0s7Ci0gIH0KLSAgc2l6ZV90
IGNvdW50ID0gc3RkOjptaW4oYnVmZmVyX2xlbiwgcmVhZGFibGVfZGF0YV8uc2l6ZSgpIC0gcmVh
ZF9ibG9ja18pOwotICBtZW1jcHkoYnVmZmVyLCAmcmVhZGFibGVfZGF0YV9bMF0sIGNvdW50KTsK
LSAgc2l6ZV90IG5ld19zaXplID0gcmVhZGFibGVfZGF0YV8uc2l6ZSgpIC0gY291bnQ7Ci0gIC8v
IEF2b2lkIHVuZGVmaW5lZCBhY2Nlc3MgYmV5b25kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHZl
Y3Rvci4KLSAgLy8gVGhpcyBvbmx5IGhhcHBlbnMgd2hlbiBuZXdfc2l6ZSBpcyAwLgotICBpZiAo
Y291bnQgPCByZWFkYWJsZV9kYXRhXy5zaXplKCkpIHsKLSAgICBtZW1tb3ZlKCZyZWFkYWJsZV9k
YXRhX1swXSwgJnJlYWRhYmxlX2RhdGFfW2NvdW50XSwgbmV3X3NpemUpOwotICB9Ci0gIHJlYWRh
YmxlX2RhdGFfLnJlc2l6ZShuZXdfc2l6ZSk7Ci0gIGlmIChyZWFkKQotICAgICpyZWFkID0gY291
bnQ7Ci0gIHJldHVybiBTUl9TVUNDRVNTOwotfQotCi1TdHJlYW1SZXN1bHQgU3RyZWFtU291cmNl
OjpXcml0ZShjb25zdCB2b2lkKiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRhdGFfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90KiB3cml0dGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBlcnJv
cikgewotICBpZiAoU1NfQ0xPU0VEID09IHN0YXRlXykgewotICAgIGlmIChlcnJvcikKLSAgICAg
ICplcnJvciA9IC0xOwotICAgIHJldHVybiBTUl9FUlJPUjsKLSAgfQotICBpZiAoU1NfT1BFTklO
RyA9PSBzdGF0ZV8pIHsKLSAgICByZXR1cm4gU1JfQkxPQ0s7Ci0gIH0KLSAgaWYgKFNJWkVfVU5L
Tk9XTiAhPSB3cml0ZV9ibG9ja18pIHsKLSAgICBpZiAod3JpdHRlbl9kYXRhXy5zaXplKCkgPj0g
d3JpdGVfYmxvY2tfKSB7Ci0gICAgICByZXR1cm4gU1JfQkxPQ0s7Ci0gICAgfQotICAgIGlmIChk
YXRhX2xlbiA+ICh3cml0ZV9ibG9ja18gLSB3cml0dGVuX2RhdGFfLnNpemUoKSkpIHsKLSAgICAg
IGRhdGFfbGVuID0gd3JpdGVfYmxvY2tfIC0gd3JpdHRlbl9kYXRhXy5zaXplKCk7Ci0gICAgfQot
ICB9Ci0gIGlmICh3cml0dGVuKQotICAgICp3cml0dGVuID0gZGF0YV9sZW47Ci0gIGNvbnN0IGNo
YXIqIGNkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpOwotICB3cml0dGVuX2Rh
dGFfLmluc2VydCh3cml0dGVuX2RhdGFfLmVuZCgpLCBjZGF0YSwgY2RhdGEgKyBkYXRhX2xlbik7
Ci0gIHJldHVybiBTUl9TVUNDRVNTOwotfQotCi12b2lkIFN0cmVhbVNvdXJjZTo6Q2xvc2UoKSB7
Ci0gIHN0YXRlXyA9IFNTX0NMT1NFRDsKLX0KLQogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGVzdHV0aWxzLmgKaW5kZXggMmFi
NGEzNTk1NmEwNTllYWNiNzQzOTE1YjVhZTI4YTcyNTRjYjViOC4uYWM3NDIwM2NmOWY5M2NmN2Jh
YTJhMDJlMmQ2OWNhNjk4MmRkMGI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGVzdHV0aWxzLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGVzdHV0aWxzLmgKQEAg
LTE5LDkgKzE5LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5
bmNzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9ndW5pdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRl
c3RpbmcgewpAQCAtMTM3LDkxICsxMzUsNiBAQCBjbGFzcyBTdHJlYW1TaW5rIDogcHVibGljIHNp
Z3Nsb3Q6Omhhc19zbG90czw+IHsKICAgRXZlbnRNYXAgZXZlbnRzXzsKIH07CiAKLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLS8vIFN0cmVhbVNvdXJjZSAtIEltcGxlbWVudHMgc3RyZWFtIGludGVy
ZmFjZSBhbmQgc2ltdWxhdGVzIGFzeW5jaHJvbm91cwotLy8gZXZlbnRzIG9uIHRoZSBzdHJlYW0s
IHdpdGhvdXQgYSBuZXR3b3JrLiAgQWxzbyBidWZmZXJzIHdyaXR0ZW4gZGF0YS4KLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLQotY2xhc3MgU3RyZWFtU291cmNlIDogcHVibGljIFN0cmVhbUludGVy
ZmFjZSB7Ci0gcHVibGljOgotICBTdHJlYW1Tb3VyY2UoKTsKLSAgflN0cmVhbVNvdXJjZSgpIG92
ZXJyaWRlOwotCi0gIHZvaWQgQ2xlYXIoKSB7Ci0gICAgcmVhZGFibGVfZGF0YV8uY2xlYXIoKTsK
LSAgICB3cml0dGVuX2RhdGFfLmNsZWFyKCk7Ci0gICAgc3RhdGVfID0gU1NfQ0xPU0VEOwotICAg
IHJlYWRfYmxvY2tfID0gMDsKLSAgICB3cml0ZV9ibG9ja18gPSBTSVpFX1VOS05PV047Ci0gIH0K
LSAgdm9pZCBRdWV1ZVN0cmluZyhjb25zdCBjaGFyKiBkYXRhKSB7IFF1ZXVlRGF0YShkYXRhLCBz
dHJsZW4oZGF0YSkpOyB9Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSAgLy8gTm90ZTogSW1wbGlj
aXQgfHRoaXN8IGFyZ3VtZW50IGNvdW50cyBhcyB0aGUgZmlyc3QgYXJndW1lbnQuCi0gIF9fYXR0
cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgMiwgMykpKQotI2VuZGlmCi0gIHZvaWQK
LSAgUXVldWVTdHJpbmdGKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSB7Ci0gICAgdmFfbGlzdCBh
cmdzOwotICAgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7Ci0gICAgY2hhciBidWZmZXJbMTAyNF07
Ci0gICAgc2l6ZV90IGxlbiA9IHZzcHJpbnRmbihidWZmZXIsIHNpemVvZihidWZmZXIpLCBmb3Jt
YXQsIGFyZ3MpOwotICAgIFJUQ19DSEVDSyhsZW4gPCBzaXplb2YoYnVmZmVyKSAtIDEpOwotICAg
IHZhX2VuZChhcmdzKTsKLSAgICBRdWV1ZURhdGEoYnVmZmVyLCBsZW4pOwotICB9Ci0gIHZvaWQg
UXVldWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4pIHsKLSAgICByZWFkYWJsZV9k
YXRhXy5pbnNlcnQocmVhZGFibGVfZGF0YV8uZW5kKCksIGRhdGEsIGRhdGEgKyBsZW4pOwotICAg
IGlmICgoU1NfT1BFTiA9PSBzdGF0ZV8pICYmIChyZWFkYWJsZV9kYXRhXy5zaXplKCkgPT0gbGVu
KSkgewotICAgICAgU2lnbmFsRXZlbnQodGhpcywgU0VfUkVBRCwgMCk7Ci0gICAgfQotICB9Ci0g
IHN0ZDo6c3RyaW5nIFJlYWREYXRhKCkgewotICAgIHN0ZDo6c3RyaW5nIGRhdGE7Ci0gICAgLy8g
YXZvaWQgYWNjZXNzaW5nIHdyaXR0ZW5fZGF0YV9bMF0gaWYgaXQgaXMgdW5kZWZpbmVkCi0gICAg
aWYgKHdyaXR0ZW5fZGF0YV8uc2l6ZSgpID4gMCkgewotICAgICAgZGF0YS5pbnNlcnQoMCwgJndy
aXR0ZW5fZGF0YV9bMF0sIHdyaXR0ZW5fZGF0YV8uc2l6ZSgpKTsKLSAgICB9Ci0gICAgd3JpdHRl
bl9kYXRhXy5jbGVhcigpOwotICAgIHJldHVybiBkYXRhOwotICB9Ci0gIHZvaWQgU2V0U3RhdGUo
U3RyZWFtU3RhdGUgc3RhdGUpIHsKLSAgICBpbnQgZXZlbnRzID0gMDsKLSAgICBpZiAoKFNTX09Q
RU5JTkcgPT0gc3RhdGVfKSAmJiAoU1NfT1BFTiA9PSBzdGF0ZSkpIHsKLSAgICAgIGV2ZW50cyB8
PSBTRV9PUEVOOwotICAgICAgaWYgKCFyZWFkYWJsZV9kYXRhXy5lbXB0eSgpKSB7Ci0gICAgICAg
IGV2ZW50cyB8PSBTRV9SRUFEOwotICAgICAgfQotICAgIH0gZWxzZSBpZiAoKFNTX0NMT1NFRCAh
PSBzdGF0ZV8pICYmIChTU19DTE9TRUQgPT0gc3RhdGUpKSB7Ci0gICAgICBldmVudHMgfD0gU0Vf
Q0xPU0U7Ci0gICAgfQotICAgIHN0YXRlXyA9IHN0YXRlOwotICAgIGlmIChldmVudHMpIHsKLSAg
ICAgIFNpZ25hbEV2ZW50KHRoaXMsIGV2ZW50cywgMCk7Ci0gICAgfQotICB9Ci0gIC8vIFdpbGwg
Y2F1c2UgUmVhZCB0byBibG9jayB3aGVuIHRoZXJlIGFyZSBwb3MgYnl0ZXMgaW4gdGhlIHJlYWQg
cXVldWUuCi0gIHZvaWQgU2V0UmVhZEJsb2NrKHNpemVfdCBwb3MpIHsgcmVhZF9ibG9ja18gPSBw
b3M7IH0KLSAgLy8gV2lsbCBjYXVzZSBXcml0ZSB0byBibG9jayB3aGVuIHRoZXJlIGFyZSBwb3Mg
Ynl0ZXMgaW4gdGhlIHdyaXRlIHF1ZXVlLgotICB2b2lkIFNldFdyaXRlQmxvY2soc2l6ZV90IHBv
cykgeyB3cml0ZV9ibG9ja18gPSBwb3M7IH0KLQotICBTdHJlYW1TdGF0ZSBHZXRTdGF0ZSgpIGNv
bnN0IG92ZXJyaWRlOwotICBTdHJlYW1SZXN1bHQgUmVhZCh2b2lkKiBidWZmZXIsCi0gICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVuLAotICAgICAgICAgICAgICAgICAgICBzaXpl
X3QqIHJlYWQsCi0gICAgICAgICAgICAgICAgICAgIGludCogZXJyb3IpIG92ZXJyaWRlOwotICBT
dHJlYW1SZXN1bHQgV3JpdGUoY29uc3Qgdm9pZCogZGF0YSwKLSAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBkYXRhX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogd3JpdHRlbiwK
LSAgICAgICAgICAgICAgICAgICAgIGludCogZXJyb3IpIG92ZXJyaWRlOwotICB2b2lkIENsb3Nl
KCkgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICB0eXBlZGVmIHN0ZDo6dmVjdG9yPGNoYXI+IEJ1
ZmZlcjsKLSAgQnVmZmVyIHJlYWRhYmxlX2RhdGFfLCB3cml0dGVuX2RhdGFfOwotICBTdHJlYW1T
dGF0ZSBzdGF0ZV87Ci0gIHNpemVfdCByZWFkX2Jsb2NrXywgd3JpdGVfYmxvY2tfOwotfTsKLQog
fSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
dGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaApp
bmRleCBjNzdlNGU2NzVkZjUwNGEwODQyMjM5MzIyMjdlYWM4YjU0ZmJiNDM1Li44YmQxYzcwNjRh
Mzg0MWUzYWFiYjdjYzVmZDcxZWQ0ZDc4MDY1NDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90
L3NpZ3Nsb3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaApAQCAtOTYsNyArOTYsNiBA
QAogI2lmbmRlZiBSVENfQkFTRV9USElSRF9QQVJUWV9TSUdTTE9UX1NJR1NMT1RfSF8KICNkZWZp
bmUgUlRDX0JBU0VfVEhJUkRfUEFSVFlfU0lHU0xPVF9TSUdTTE9UX0hfCiAKLSNpbmNsdWRlIDxz
dGRsaWIuaD4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8
c2V0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdGhyZWFkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkLmNjCmluZGV4IDJkNTcwNGUwYmU3ODBhNDc0OGVlMjU0
ZjcyMzQyM2I0MmYxNjY5ZjcuLjRkZDVmZDIyMjRmMTJhNmFhZWI1MmFlODFjZmI4NDViMmJkYjQ4
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3RocmVhZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aHJlYWQuY2MKQEAgLTI0LDE0ICsyNCw0MyBAQAogI3ByYWdt
YSB3YXJuaW5nKGRpc2FibGUgOiA0NzIyKQogI2VuZGlmCiAKKyNpbmNsdWRlIDxzdGRpby5oPgor
I2luY2x1ZGUgPHV0aWxpdHk+CisKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVsbHNvY2tldHNlcnZlci5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0
aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvdHJhY2VfZXZlbnQuaCIKIAorI2lmIGRlZmluZWQoV0VCUlRDX01BQykKKyNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vY29jb2FfdGhyZWFkaW5nLmgiCisKKy8qCisgKiBUaGVzZSBhcmUgZm9y
d2FyZC1kZWNsYXJhdGlvbnMgZm9yIG1ldGhvZHMgdGhhdCBhcmUgcGFydCBvZiB0aGUKKyAqIE9i
akMgcnVudGltZS4gVGhleSBhcmUgZGVjbGFyZWQgaW4gdGhlIHByaXZhdGUgaGVhZGVyIG9iamMt
aW50ZXJuYWwuaC4KKyAqIFRoZXNlIGNhbGxzIGFyZSB3aGF0IGNsYW5nIGluc2VydHMgd2hlbiB1
c2luZyBAYXV0b3JlbGVhc2Vwb29sIGluIE9iakMsCisgKiBidXQgaGVyZSB0aGV5IGFyZSB1c2Vk
IGRpcmVjdGx5IGluIG9yZGVyIHRvIGtlZXAgdGhpcyBmaWxlIEMrKy4KKyAqIGh0dHBzOi8vY2xh
bmcubGx2bS5vcmcvZG9jcy9BdXRvbWF0aWNSZWZlcmVuY2VDb3VudGluZy5odG1sI3J1bnRpbWUt
c3VwcG9ydAorICovCitleHRlcm4gIkMiIHsKK3ZvaWQqIG9iamNfYXV0b3JlbGVhc2VQb29sUHVz
aCh2b2lkKTsKK3ZvaWQgb2JqY19hdXRvcmVsZWFzZVBvb2xQb3Aodm9pZCogcG9vbCk7Cit9CisK
K25hbWVzcGFjZSB7CitjbGFzcyBTY29wZWRBdXRvUmVsZWFzZVBvb2wgeworIHB1YmxpYzoKKyAg
U2NvcGVkQXV0b1JlbGVhc2VQb29sKCkgOiBwb29sXyhvYmpjX2F1dG9yZWxlYXNlUG9vbFB1c2go
KSkge30KKyAgflNjb3BlZEF1dG9SZWxlYXNlUG9vbCgpIHsgb2JqY19hdXRvcmVsZWFzZVBvb2xQ
b3AocG9vbF8pOyB9CisKKyBwcml2YXRlOgorICB2b2lkKiBjb25zdCBwb29sXzsKK307Cit9ICAv
LyBuYW1lc3BhY2UKKyNlbmRpZgorCiBuYW1lc3BhY2UgcnRjIHsKIAogVGhyZWFkTWFuYWdlciog
VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKSB7CkBAIC02MSwxMSArOTAsMTIgQEAgVGhyZWFkKiBU
aHJlYWQ6OkN1cnJlbnQoKSB7CiB9CiAKICNpZiBkZWZpbmVkKFdFQlJUQ19QT1NJWCkKLSNpZiAh
ZGVmaW5lZChXRUJSVENfTUFDKQogVGhyZWFkTWFuYWdlcjo6VGhyZWFkTWFuYWdlcigpIDogbWFp
bl90aHJlYWRfcmVmXyhDdXJyZW50VGhyZWFkUmVmKCkpIHsKKyNpZiBkZWZpbmVkKFdFQlJUQ19N
QUMpCisgIEluaXRDb2NvYU11bHRpVGhyZWFkaW5nKCk7CisjZW5kaWYKICAgcHRocmVhZF9rZXlf
Y3JlYXRlKCZrZXlfLCBudWxscHRyKTsKIH0KLSNlbmRpZgogCiBUaHJlYWQqIFRocmVhZE1hbmFn
ZXI6OkN1cnJlbnRUaHJlYWQoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHJlYWQqPihwdGhy
ZWFkX2dldHNwZWNpZmljKGtleV8pKTsKQEAgLTE5Myw4ICsyMjMsMTAgQEAgYm9vbCBUaHJlYWQ6
OlNldE5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNvbnN0IHZvaWQqIG9iaikgewogCiAg
IG5hbWVfID0gbmFtZTsKICAgaWYgKG9iaikgewotICAgIGNoYXIgYnVmWzE2XTsKLSAgICBzcHJp
bnRmbihidWYsIHNpemVvZihidWYpLCAiIDB4JXAiLCBvYmopOworICAgIC8vIFRoZSAlcCBzcGVj
aWZpZXIgdHlwaWNhbGx5IHByb2R1Y2UgYXQgbW9zdCAxNiBoZXggZGlnaXRzLCBwb3NzaWJseSB3
aXRoIGEKKyAgICAvLyAweCBwcmVmaXguIEJ1dCBmb3JtYXQgaXMgaW1wbGVtZW50YXRpb24gZGVm
aW5lZCwgc28gYWRkIHNvbWUgbWFyZ2luLgorICAgIGNoYXIgYnVmWzMwXTsKKyAgICBzbnByaW50
ZihidWYsIHNpemVvZihidWYpLCAiIDB4JXAiLCBvYmopOwogICAgIG5hbWVfICs9IGJ1ZjsKICAg
fQogICByZXR1cm4gdHJ1ZTsKQEAgLTMwMCw3ICszMzIsNiBAQCB2b2lkIFRocmVhZDo6QXNzZXJ0
QmxvY2tpbmdJc0FsbG93ZWRPbkN1cnJlbnRUaHJlYWQoKSB7CiB9CiAKIC8vIHN0YXRpYwotI2lm
ICFkZWZpbmVkKFdFQlJUQ19NQUMpCiAjaWYgZGVmaW5lZChXRUJSVENfV0lOKQogRFdPUkQgV0lO
QVBJIFRocmVhZDo6UHJlUnVuKExQVk9JRCBwdikgewogI2Vsc2UKQEAgLTMwOSw2ICszNDAsOSBA
QCB2b2lkKiBUaHJlYWQ6OlByZVJ1bih2b2lkKiBwdikgewogICBUaHJlYWRJbml0KiBpbml0ID0g
c3RhdGljX2Nhc3Q8VGhyZWFkSW5pdCo+KHB2KTsKICAgVGhyZWFkTWFuYWdlcjo6SW5zdGFuY2Uo
KS0+U2V0Q3VycmVudFRocmVhZChpbml0LT50aHJlYWQpOwogICBydGM6OlNldEN1cnJlbnRUaHJl
YWROYW1lKGluaXQtPnRocmVhZC0+bmFtZV8uY19zdHIoKSk7CisjaWYgZGVmaW5lZChXRUJSVENf
TUFDKQorICBTY29wZWRBdXRvUmVsZWFzZVBvb2wgcG9vbDsKKyNlbmRpZgogICBpZiAoaW5pdC0+
cnVubmFibGUpIHsKICAgICBpbml0LT5ydW5uYWJsZS0+UnVuKGluaXQtPnRocmVhZCk7CiAgIH0g
ZWxzZSB7CkBAIC0zMjIsNyArMzU2LDYgQEAgdm9pZCogVGhyZWFkOjpQcmVSdW4odm9pZCogcHYp
IHsKICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0KLSNlbmRpZgogCiB2b2lkIFRocmVhZDo6
UnVuKCkgewogICBQcm9jZXNzTWVzc2FnZXMoa0ZvcmV2ZXIpOwpAQCAtNDg1LDkgKzUxOCw2IEBA
IHZvaWQgVGhyZWFkOjpDbGVhcihNZXNzYWdlSGFuZGxlciogcGhhbmRsZXIsCiAgIENsZWFySW50
ZXJuYWwocGhhbmRsZXIsIGlkLCByZW1vdmVkKTsKIH0KIAotI2lmICFkZWZpbmVkKFdFQlJUQ19N
QUMpCi0vLyBOb3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBoYXZlIGEgc2VwYXJhdGUgaW1wbGVtZW50
YXRpb24gZm9yIG1hYyBhbmQgaW9zCi0vLyBkZWZpbmVkIGluIHdlYnJ0Yy9ydGNfYmFzZS90aHJl
YWRfZGFyd2luLm1tLgogYm9vbCBUaHJlYWQ6OlByb2Nlc3NNZXNzYWdlcyhpbnQgY21zTG9vcCkg
ewogICAvLyBVc2luZyBQcm9jZXNzTWVzc2FnZXMgd2l0aCBhIGN1c3RvbSBjbG9jayBmb3IgdGVz
dGluZyBhbmQgYSB0aW1lIGdyZWF0ZXIKICAgLy8gdGhhbiAwIGRvZXNuJ3Qgd29yaywgc2luY2Ug
aXQncyBub3QgZ3VhcmFudGVlZCB0byBhZHZhbmNlIHRoZSBjdXN0b20KQEAgLTQ5OCw2ICs1Mjgs
OSBAQCBib29sIFRocmVhZDo6UHJvY2Vzc01lc3NhZ2VzKGludCBjbXNMb29wKSB7CiAgIGludCBj
bXNOZXh0ID0gY21zTG9vcDsKIAogICB3aGlsZSAodHJ1ZSkgeworI2lmIGRlZmluZWQoV0VCUlRD
X01BQykKKyAgICBTY29wZWRBdXRvUmVsZWFzZVBvb2wgcG9vbDsKKyNlbmRpZgogICAgIE1lc3Nh
Z2UgbXNnOwogICAgIGlmICghR2V0KCZtc2csIGNtc05leHQpKQogICAgICAgcmV0dXJuICFJc1F1
aXR0aW5nKCk7CkBAIC01MTAsNyArNTQzLDYgQEAgYm9vbCBUaHJlYWQ6OlByb2Nlc3NNZXNzYWdl
cyhpbnQgY21zTG9vcCkgewogICAgIH0KICAgfQogfQotI2VuZGlmCiAKIGJvb2wgVGhyZWFkOjpX
cmFwQ3VycmVudFdpdGhUaHJlYWRNYW5hZ2VyKFRocmVhZE1hbmFnZXIqIHRocmVhZF9tYW5hZ2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBuZWVkX3N5
bmNocm9uaXplX2FjY2VzcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aHJlYWQuaAppbmRleCA1YTQ2NjEwNGFh
MjczZTc3NGFkYzc1MjVjYWM1OTYyOGU5NGU2MjM2Li4wMzkxOTJjZTdmNjc0Njk1YWIyZjFjNzU4
ZWMwYzg1NDk3ZjJhYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aHJlYWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aHJlYWQuaApAQCAtMTEsMTkgKzExLDIy
IEBACiAjaWZuZGVmIFJUQ19CQVNFX1RIUkVBRF9IXwogI2RlZmluZSBSVENfQkFTRV9USFJFQURf
SF8KIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRl
IDxsaXN0PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8
dXRpbGl0eT4KLSNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAKICNp
ZiBkZWZpbmVkKFdFQlJUQ19QT1NJWCkKICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZW5kaWYKICNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
bG9jYXRpb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3Jt
X3RocmVhZF90eXBlcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldHNlcnZlci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCiAjaWYgZGVmaW5lZChXRUJS
VENfV0lOKQogI2luY2x1ZGUgInJ0Y19iYXNlL3dpbjMyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aHJlYWRfZGFyd2lu
Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
dGhyZWFkX2Rhcndpbi5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQwNDg0OWM3
MmI0Y2VmZDU2ZjFmNTQ1NzA5MmNmZjBhMjNkN2FhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS90aHJlYWRfZGFyd2luLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODQg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5o
IgotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLQotI2luY2x1ZGUgInJ0Y19i
YXNlL3BsYXRmb3JtX3RocmVhZC5oIgotCi0vKgotICogVGhpcyBmaWxlIGNvbnRhaW5zIHBsYXRm
b3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBmb3Igc2V2ZXJhbAotICogbWV0aG9kcyBpbiBy
dGM6OlRocmVhZC4KLSAqLwotCi1uYW1lc3BhY2Ugewotdm9pZCBJbml0Q29jb2FNdWx0aVRocmVh
ZGluZygpIHsKLSAgaWYgKFtOU1RocmVhZCBpc011bHRpVGhyZWFkZWRdID09IE5PKSB7Ci0gICAg
Ly8gVGhlIHNvbGUgcHVycG9zZSBvZiB0aGlzIGF1dG9yZWxlYXNlIHBvb2wgaXMgdG8gYXZvaWQg
YSBjb25zb2xlCi0gICAgLy8gbWVzc2FnZSBvbiBMZW9wYXJkIHRoYXQgdGVsbHMgdXMgd2UncmUg
YXV0b3JlbGVhc2luZyB0aGUgdGhyZWFkCi0gICAgLy8gd2l0aCBubyBhdXRvcmVsZWFzZSBwb29s
IGluIHBsYWNlLgotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgW05TVGhyZWFkIGRldGFj
aE5ld1RocmVhZFNlbGVjdG9yOkBzZWxlY3RvcihjbGFzcykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b1RhcmdldDpbTlNPYmplY3QgY2xhc3NdCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpdGhPYmplY3Q6bmlsXTsKLSAgICB9Ci0gIH0KLQotICBSVENfRENIRUNLKFtO
U1RocmVhZCBpc011bHRpVGhyZWFkZWRdKTsKLX0KLX0KLQotbmFtZXNwYWNlIHJ0YyB7Ci0KLVRo
cmVhZE1hbmFnZXI6OlRocmVhZE1hbmFnZXIoKSA6IG1haW5fdGhyZWFkX3JlZl8oQ3VycmVudFRo
cmVhZFJlZigpKSB7Ci0gIHB0aHJlYWRfa2V5X2NyZWF0ZSgma2V5XywgbnVsbHB0cik7Ci0gIC8v
IFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGFsZXJ0IHRoZSBjb2NvYSBydW50aW1lIG9mIHRoZSBmYWN0
IHRoYXQKLSAgLy8gd2UgYXJlIHJ1bm5pbmcgaW4gYSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50
LgotICBJbml0Q29jb2FNdWx0aVRocmVhZGluZygpOwotfQotCi0vLyBzdGF0aWMKLXZvaWQqIFRo
cmVhZDo6UHJlUnVuKHZvaWQqIHB2KSB7Ci0gIFRocmVhZEluaXQqIGluaXQgPSBzdGF0aWNfY2Fz
dDxUaHJlYWRJbml0Kj4ocHYpOwotICBUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5TZXRDdXJy
ZW50VGhyZWFkKGluaXQtPnRocmVhZCk7Ci0gIHJ0Yzo6U2V0Q3VycmVudFRocmVhZE5hbWUoaW5p
dC0+dGhyZWFkLT5uYW1lXy5jX3N0cigpKTsKLSAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgaWYg
KGluaXQtPnJ1bm5hYmxlKSB7Ci0gICAgICBpbml0LT5ydW5uYWJsZS0+UnVuKGluaXQtPnRocmVh
ZCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGluaXQtPnRocmVhZC0+UnVuKCk7Ci0gICAgfQotICB9
Ci0gIFRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPlNldEN1cnJlbnRUaHJlYWQobnVsbHB0cik7
Ci0gIGRlbGV0ZSBpbml0OwotICByZXR1cm4gbnVsbHB0cjsKLX0KLQotYm9vbCBUaHJlYWQ6OlBy
b2Nlc3NNZXNzYWdlcyhpbnQgY21zTG9vcCkgewotICBpbnQ2NF90IG1zRW5kID0gKGtGb3JldmVy
ID09IGNtc0xvb3ApID8gMCA6IFRpbWVBZnRlcihjbXNMb29wKTsKLSAgaW50IGNtc05leHQgPSBj
bXNMb29wOwotCi0gIHdoaWxlICh0cnVlKSB7Ci0gICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAg
ICBNZXNzYWdlIG1zZzsKLSAgICAgIGlmICghR2V0KCZtc2csIGNtc05leHQpKQotICAgICAgICBy
ZXR1cm4gIUlzUXVpdHRpbmcoKTsKLSAgICAgIERpc3BhdGNoKCZtc2cpOwotCi0gICAgICBpZiAo
Y21zTG9vcCAhPSBrRm9yZXZlcikgewotICAgICAgICBjbXNOZXh0ID0gc3RhdGljX2Nhc3Q8aW50
PihUaW1lVW50aWwobXNFbmQpKTsKLSAgICAgICAgaWYgKGNtc05leHQgPCAwKQotICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgfQotfQotfSAgLy8gbmFtZXNwYWNlIHJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvdGhyZWFkX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkX3VuaXR0ZXN0LmNjCmluZGV4IGQ1YzUzZjhh
N2NjMGEyN2ZjNGZhNjQ3YmY5N2QxY2Y2ZjI5Y2MyZWMuLjdlMzkyYWZmZDk0YTViMGE3YmRiZTM4
MDllM2I2YTY4ZDcxZDNkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZF91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aHJlYWRfdW5pdHRl
c3QuY2MKQEAgLTY5LDcgKzY5LDcgQEAgY2xhc3MgU29ja2V0Q2xpZW50IDogcHVibGljIFRlc3RH
ZW5lcmF0b3IsIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYnVmLAogICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAg
ICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAg
IGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgY29uc3Qg
aW50NjRfdCYgcGFja2V0X3RpbWVfdXMpIHsKICAgICBFWFBFQ1RfRVEoc2l6ZSwgc2l6ZW9mKHVp
bnQzMl90KSk7CiAgICAgdWludDMyX3QgcHJldiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPihidWYpWzBdOwogICAgIHVpbnQzMl90IHJlc3VsdCA9IE5leHQocHJldik7CkBAIC00
NzAsOSArNDcwLDkgQEAgVEVTVF9GKEFzeW5jSW52b2tlVGVzdCwgS2lsbEludm9rZXJEdXJpbmdF
eGVjdXRlKSB7CiAgIC8vIFVzZSB0aGVzZSBldmVudHMgdG8gZ2V0IGluIGEgc3RhdGUgd2hlcmUg
dGhlIGZ1bmN0b3IgaXMgaW4gdGhlIG1pZGRsZSBvZgogICAvLyBleGVjdXRpbmcsIGFuZCB0aGVu
IHRvIHdhaXQgZm9yIGl0IHRvIGZpbmlzaCwgZW5zdXJpbmcgdGhlICJFWFBFQ1RfRkFMU0UiCiAg
IC8vIGlzIHJ1bi4KLSAgRXZlbnQgZnVuY3Rvcl9zdGFydGVkKGZhbHNlLCBmYWxzZSk7Ci0gIEV2
ZW50IGZ1bmN0b3JfY29udGludWUoZmFsc2UsIGZhbHNlKTsKLSAgRXZlbnQgZnVuY3Rvcl9maW5p
c2hlZChmYWxzZSwgZmFsc2UpOworICBFdmVudCBmdW5jdG9yX3N0YXJ0ZWQ7CisgIEV2ZW50IGZ1
bmN0b3JfY29udGludWU7CisgIEV2ZW50IGZ1bmN0b3JfZmluaXNoZWQ7CiAKICAgYXV0byB0aHJl
YWQgPSBUaHJlYWQ6OkNyZWF0ZVdpdGhTb2NrZXRTZXJ2ZXIoKTsKICAgdGhyZWFkLT5TdGFydCgp
OwpAQCAtNTA3LDcgKzUwNyw3IEBAIFRFU1RfRihBc3luY0ludm9rZVRlc3QsIEtpbGxJbnZva2Vy
RHVyaW5nRXhlY3V0ZSkgewogLy8gZGVzdHJveWVkLiBUaGlzIHNob3VsZG4ndCBkZWFkbG9jayBv
ciBjcmFzaDsgdGhpcyBzZWNvbmQgaW52b2NhdGlvbiBzaG91bGQKIC8vIGp1c3QgYmUgaWdub3Jl
ZC4KIFRFU1RfRihBc3luY0ludm9rZVRlc3QsIEtpbGxJbnZva2VyRHVyaW5nRXhlY3V0ZVdpdGhS
ZWVudHJhbnRJbnZva2UpIHsKLSAgRXZlbnQgZnVuY3Rvcl9zdGFydGVkKGZhbHNlLCBmYWxzZSk7
CisgIEV2ZW50IGZ1bmN0b3Jfc3RhcnRlZDsKICAgLy8gRmxhZyB1c2VkIHRvIHZlcmlmeSB0aGF0
IHRoZSByZWN1cnNpdmVseSBpbnZva2VkIHRhc2sgbmV2ZXIgYWN0dWFsbHkgcnVucy4KICAgYm9v
bCByZWVudHJhbnRfZnVuY3Rvcl9ydW4gPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGltZXN0YW1wYWxpZ25l
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3RpbWVzdGFtcGFsaWduZXIuY2MKaW5kZXggYTliY2FmYmRjNWY1YWRjYmQyZjZlNjVlNmU4NWEz
OWVjOGE4NjhlOC4uZjJkYTEwMTcyNzExMGQ0N2FlYjk5YzBkZTJjYzQzYjQzNGNlNjFhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvdGltZXN0YW1wYWxpZ25lci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aW1lc3RhbXBhbGlnbmVyLmNjCkBAIC04LDYgKzgsNyBA
QAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgogICovCiAKKyNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPGxpbWl0cz4K
IAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGltZXV0aWxzLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGltZXV0aWxz
LmNjCmluZGV4IGRlOGZjMzI1OWMyOGVjNGU3YzA3ZGY1YTU2ZjhlNDk3MzM2MDk3MzcuLmRjNWI2
MTFmNjQ3YmVjOTQ1MjIwNmRlMDUyZDdlNWZiNjlmNDU5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlscy5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90
aW1ldXRpbHMuY2MKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlIDxzeXMvdGltZS5oPgogI2lm
IGRlZmluZWQoV0VCUlRDX01BQykKICNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgorI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNlbmRpZgogI2VuZGlm
CiAKQEAgLTI4LDcgKzI5LDYgQEAKICNlbmRpZgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKQEAgLTE1NCw3
ICsxNTQsNyBAQCBpbnQ2NF90IFRpbWVzdGFtcFdyYXBBcm91bmRIYW5kbGVyOjpVbndyYXAodWlu
dDMyX3QgdHMpIHsKICAgcmV0dXJuIHRzICsgKG51bV93cmFwXyA8PCAzMik7CiB9CiAKLWludDY0
X3QgVG1Ub1NlY29uZHMoY29uc3Qgc3RkOjp0bSYgdG0pIHsKK2ludDY0X3QgVG1Ub1NlY29uZHMo
Y29uc3QgdG0mIHRtKSB7CiAgIHN0YXRpYyBzaG9ydCBpbnQgbWRheXNbMTJdID0gezMxLCAyOCwg
MzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzF9OwogICBzdGF0aWMgc2hvcnQg
aW50IGN1bXVsX21kYXlzWzEyXSA9IHswLCAgIDMxLCAgNTksICA5MCwgIDEyMCwgMTUxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxODEsIDIxMiwgMjQzLCAyNzMsIDMw
NCwgMzM0fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3RpbWV1dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGltZXV0aWxzLmgKaW5kZXggM2E0MTJhNDdjZjg0MjVi
YzlmMWE0ZTMzMDBkNTZkNDUwMWNjYTVhYy4uNGUzOGEwMzE0MDlmMGYwNWFiNTgzODc3NGJjN2Vl
ZjEwYTY5MDdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvdGltZXV0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGltZXV0aWxzLmgKQEAgLTEzLDggKzEzLDYg
QEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHRpbWUuaD4KLQotI2luY2x1ZGUg
PGN0aW1lPgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgpAQCAtMTEwLDEwICsxMDgsMTAgQEAgY2xhc3MgVGltZXN0YW1wV3JhcEFyb3VuZEhhbmRsZXIg
ewogICBpbnQ2NF90IG51bV93cmFwXzsKIH07CiAKLS8vIENvbnZlcnQgZnJvbSBzdGQ6OnRtLCB3
aGljaCBpcyByZWxhdGl2ZSB0byAxOTAwLTAxLTAxIDAwOjAwIHRvIG51bWJlciBvZgotLy8gc2Vj
b25kcyBmcm9tIDE5NzAtMDEtMDEgMDA6MDAgKCJlcG9jaCIpLiAgRG9uJ3QgcmV0dXJuIHRpbWVf
dCBzaW5jZSB0aGF0CisvLyBDb252ZXJ0IGZyb20gdG0sIHdoaWNoIGlzIHJlbGF0aXZlIHRvIDE5
MDAtMDEtMDEgMDA6MDAgdG8gbnVtYmVyIG9mCisvLyBzZWNvbmRzIGZyb20gMTk3MC0wMS0wMSAw
MDowMCAoImVwb2NoIikuIERvbid0IHJldHVybiB0aW1lX3Qgc2luY2UgdGhhdAogLy8gaXMgc3Rp
bGwgMzIgYml0cyBvbiBtYW55IHN5c3RlbXMuCi1pbnQ2NF90IFRtVG9TZWNvbmRzKGNvbnN0IHN0
ZDo6dG0mIHRtKTsKK2ludDY0X3QgVG1Ub1NlY29uZHMoY29uc3QgdG0mIHRtKTsKIAogLy8gUmV0
dXJuIHRoZSBudW1iZXIgb2YgbWljcm9zZWNvbmRzIHNpbmNlIEphbnVhcnkgMSwgMTk3MCwgVVRD
LgogLy8gVXNlZnVsIG1haW5seSB3aGVuIHByb2R1Y2luZyBsb2dzIHRvIGJlIGNvcnJlbGF0ZWQg
d2l0aCBvdGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvdGltZXV0aWxzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGltZXV0aWxzX3VuaXR0ZXN0LmNj
CmluZGV4IDBlMTk0OWFlZTMxMTI1YmQzNmE3MjEyMDAzMzg0MTZlMDJiMDdjOTYuLjU3N2VmZGEw
MjU1YjAzY2I2NzlmNDU5NWJkZWJjNTU1OWNmNDgyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlsc191bml0dGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS90aW1ldXRpbHNfdW5pdHRlc3QuY2MKQEAgLTI2Miw3ICsyNjIsNyBAQCBURVNUKEZha2VD
bG9jaywgU2V0dGluZ1RpbWVXYWtlc1RocmVhZHMpIHsKICAgd29ya2VyLT5TdGFydCgpOwogCiAg
IC8vIFBvc3QgYW4gZXZlbnQgdGhhdCB3b24ndCBiZSBleGVjdXRlZCBmb3IgMTAgc2Vjb25kcy4K
LSAgRXZlbnQgbWVzc2FnZV9oYW5kbGVyX2Rpc3BhdGNoZWQoZmFsc2UsIGZhbHNlKTsKKyAgRXZl
bnQgbWVzc2FnZV9oYW5kbGVyX2Rpc3BhdGNoZWQ7CiAgIGF1dG8gZnVuY3RvciA9IFsmbWVzc2Fn
ZV9oYW5kbGVyX2Rpc3BhdGNoZWRdIHsKICAgICBtZXNzYWdlX2hhbmRsZXJfZGlzcGF0Y2hlZC5T
ZXQoKTsKICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3VuaXRzL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHMvQlVJTEQuZ24KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGM3MjJiYmM3YjhlNzBmYjIwNmY4MDZjMTEyYjYxZGRiZmU5ODViMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Vu
aXRzL0JVSUxELmduCkBAIC0wLDAgKzEsMzcgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisjIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQorIyB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCisjIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisKK2ltcG9ydCgiLi4vLi4vd2VicnRjLmdu
aSIpCisKK3J0Y19zb3VyY2Vfc2V0KCJ1bml0X2Jhc2UiKSB7CisgIHZpc2liaWxpdHkgPSBbCisg
ICAgIi4uLy4uL2FwaS91bml0czoqIiwKKyAgICAiOioiLAorICBdCisgIHNvdXJjZXMgPSBbCisg
ICAgInVuaXRfYmFzZS5oIiwKKyAgXQorCisgIGRlcHMgPSBbCisgICAgIi4uLy4uL3J0Y19iYXNl
OmNoZWNrcyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfY29udmVyc2lvbnMiLAorICBdCit9
CisKK2lmIChydGNfaW5jbHVkZV90ZXN0cykgeworICBydGNfc291cmNlX3NldCgidW5pdHNfdW5p
dHRlc3RzIikgeworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAgIHNvdXJjZXMgPSBbCisgICAgICAi
dW5pdF9iYXNlX3VuaXR0ZXN0LmNjIiwKKyAgICBdCisgICAgZGVwcyA9IFsKKyAgICAgICI6dW5p
dF9iYXNlIiwKKyAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgXQorICB9Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS91bml0cy91bml0X2Jhc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3VuaXRzL3VuaXRfYmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1MDNh
MzI5OTM3NjY3NjQyY2ZhNzBmN2ExN2QyOWUzMzNiNGYwNjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy91
bml0X2Jhc2UuaApAQCAtMCwwICsxLDMwNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKyNpZm5kZWYg
UlRDX0JBU0VfVU5JVFNfVU5JVF9CQVNFX0hfCisjZGVmaW5lIFJUQ19CQVNFX1VOSVRTX1VOSVRf
QkFTRV9IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2lu
Y2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4K
KworI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVy
aWNzL3NhZmVfY29udmVyc2lvbnMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2Ug
cnRjX3VuaXRzX2ltcGwgeworCisvLyBVbml0QmFzZSBpcyBhIGJhc2UgY2xhc3MgZm9yIGltcGxl
bWVudGluZyBjdXN0b20gdmFsdWUgdHlwZXMgd2l0aCBhIHNwZWNpZmljCisvLyB1bml0LiBJdCBw
cm92aWRlcyB0eXBlIHNhZmV0eSBhbmQgc29tbW9ubHkgdXNlZnVsIG9wZXJhdGlvbnMuIFRoZSB1
bmRlbHlpbmcKKy8vIHN0b3JhZ2UgaXMgYWx3YXlzIGFuIGludDY0X3QsIGl0J3MgdXAgdG8gdGhl
IHVuaXQgaW1wbGVtZW50YXRpb24gdG8gY2hvb3NlCisvLyB3aGF0IHNjYWxlIGl0IHJlcHJlc2Vu
dHMuCisvLworLy8gSXQncyB1c2VkIGxpa2U6CisvLyBjbGFzcyBNeVVuaXQ6IHB1YmxpYyBVbml0
QmFzZTxNeVVuaXQ+IHsuLi59OworLy8KKy8vIFVuaXRfVCBpcyB0aGUgc3ViY2xhc3MgcmVwcmVz
ZW50aW5nIHRoZSBzcGVjaWZpYyB1bml0LgordGVtcGxhdGUgPGNsYXNzIFVuaXRfVD4KK2NsYXNz
IFVuaXRCYXNlIHsKKyBwdWJsaWM6CisgIFVuaXRCYXNlKCkgPSBkZWxldGU7CisgIHN0YXRpYyBj
b25zdGV4cHIgVW5pdF9UIFplcm8oKSB7IHJldHVybiBVbml0X1QoMCk7IH0KKyAgc3RhdGljIGNv
bnN0ZXhwciBVbml0X1QgUGx1c0luZmluaXR5KCkgeyByZXR1cm4gVW5pdF9UKFBsdXNJbmZpbml0
eVZhbCgpKTsgfQorICBzdGF0aWMgY29uc3RleHByIFVuaXRfVCBNaW51c0luZmluaXR5KCkgeyBy
ZXR1cm4gVW5pdF9UKE1pbnVzSW5maW5pdHlWYWwoKSk7IH0KKworICBjb25zdGV4cHIgYm9vbCBJ
c1plcm8oKSBjb25zdCB7IHJldHVybiB2YWx1ZV8gPT0gMDsgfQorICBjb25zdGV4cHIgYm9vbCBJ
c0Zpbml0ZSgpIGNvbnN0IHsgcmV0dXJuICFJc0luZmluaXRlKCk7IH0KKyAgY29uc3RleHByIGJv
b2wgSXNJbmZpbml0ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gdmFsdWVfID09IFBsdXNJbmZpbml0
eVZhbCgpIHx8IHZhbHVlXyA9PSBNaW51c0luZmluaXR5VmFsKCk7CisgIH0KKyAgY29uc3RleHBy
IGJvb2wgSXNQbHVzSW5maW5pdHkoKSBjb25zdCB7IHJldHVybiB2YWx1ZV8gPT0gUGx1c0luZmlu
aXR5VmFsKCk7IH0KKyAgY29uc3RleHByIGJvb2wgSXNNaW51c0luZmluaXR5KCkgY29uc3Qgewor
ICAgIHJldHVybiB2YWx1ZV8gPT0gTWludXNJbmZpbml0eVZhbCgpOworICB9CisKKyAgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbml0X1QmIG90aGVyKSBjb25zdCB7CisgICAgcmV0
dXJuIHZhbHVlXyA9PSBvdGhlci52YWx1ZV87CisgIH0KKyAgY29uc3RleHByIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBVbml0X1QmIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyAhPSBv
dGhlci52YWx1ZV87CisgIH0KKyAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBVbml0
X1QmIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyA8PSBvdGhlci52YWx1ZV87Cisg
IH0KKyAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVbml0X1QmIG90aGVyKSBjb25z
dCB7CisgICAgcmV0dXJuIHZhbHVlXyA+PSBvdGhlci52YWx1ZV87CisgIH0KKyAgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I+KGNvbnN0IFVuaXRfVCYgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4g
dmFsdWVfID4gb3RoZXIudmFsdWVfOworICB9CisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChj
b25zdCBVbml0X1QmIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyA8IG90aGVyLnZh
bHVlXzsKKyAgfQorCisgcHJvdGVjdGVkOgorICB0ZW1wbGF0ZSA8aW50NjRfdCB2YWx1ZT4KKyAg
c3RhdGljIGNvbnN0ZXhwciBVbml0X1QgRnJvbVN0YXRpY1ZhbHVlKCkgeworICAgIHN0YXRpY19h
c3NlcnQodmFsdWUgPj0gMCB8fCAhVW5pdF9UOjpvbmVfc2lkZWQsICIiKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHZhbHVlID4gTWludXNJbmZpbml0eVZhbCgpLCAiIik7CisgICAgc3RhdGljX2Fzc2Vy
dCh2YWx1ZSA8IFBsdXNJbmZpbml0eVZhbCgpLCAiIik7CisgICAgcmV0dXJuIFVuaXRfVCh2YWx1
ZSk7CisgIH0KKworICB0ZW1wbGF0ZSA8aW50NjRfdCBmcmFjdGlvbl92YWx1ZSwgaW50NjRfdCBE
ZW5vbWluYXRvcj4KKyAgc3RhdGljIGNvbnN0ZXhwciBVbml0X1QgRnJvbVN0YXRpY0ZyYWN0aW9u
KCkgeworICAgIHN0YXRpY19hc3NlcnQoZnJhY3Rpb25fdmFsdWUgPj0gMCB8fCAhVW5pdF9UOjpv
bmVfc2lkZWQsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGZyYWN0aW9uX3ZhbHVlID4gTWludXNJ
bmZpbml0eVZhbCgpIC8gRGVub21pbmF0b3IsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGZyYWN0
aW9uX3ZhbHVlIDwgUGx1c0luZmluaXR5VmFsKCkgLyBEZW5vbWluYXRvciwgIiIpOworICAgIHJl
dHVybiBVbml0X1QoZnJhY3Rpb25fdmFsdWUgKiBEZW5vbWluYXRvcik7CisgIH0KKworICB0ZW1w
bGF0ZSA8CisgICAgICB0eXBlbmFtZSBULAorICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+CisgIHN0YXRpYyBV
bml0X1QgRnJvbVZhbHVlKFQgdmFsdWUpIHsKKyAgICBpZiAoVW5pdF9UOjpvbmVfc2lkZWQpCisg
ICAgICBSVENfRENIRUNLX0dFKHZhbHVlLCAwKTsKKyAgICBSVENfRENIRUNLX0dUKHZhbHVlLCBN
aW51c0luZmluaXR5VmFsKCkpOworICAgIFJUQ19EQ0hFQ0tfTFQodmFsdWUsIFBsdXNJbmZpbml0
eVZhbCgpKTsKKyAgICByZXR1cm4gVW5pdF9UKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90Pih2
YWx1ZSkpOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBULAorICAgICAgICAgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBl
KiA9CisgICAgICAgICAgICAgICAgbnVsbHB0cj4KKyAgc3RhdGljIFVuaXRfVCBGcm9tVmFsdWUo
VCB2YWx1ZSkgeworICAgIGlmICh2YWx1ZSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZp
bml0eSgpKSB7CisgICAgICByZXR1cm4gUGx1c0luZmluaXR5KCk7CisgICAgfSBlbHNlIGlmICh2
YWx1ZSA9PSAtc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKSkgeworICAgICAgcmV0
dXJuIE1pbnVzSW5maW5pdHkoKTsKKyAgICB9IGVsc2UgeworICAgICAgUlRDX0RDSEVDSyghc3Rk
Ojppc25hbih2YWx1ZSkpOworICAgICAgcmV0dXJuIEZyb21WYWx1ZShydGM6OmRjaGVja2VkX2Nh
c3Q8aW50NjRfdD4odmFsdWUpKTsKKyAgICB9CisgIH0KKworICB0ZW1wbGF0ZSA8CisgICAgICBp
bnQ2NF90IERlbm9taW5hdG9yLAorICAgICAgdHlwZW5hbWUgVCwKKyAgICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRy
PgorICBzdGF0aWMgVW5pdF9UIEZyb21GcmFjdGlvbihUIHZhbHVlKSB7CisgICAgaWYgKFVuaXRf
VDo6b25lX3NpZGVkKQorICAgICAgUlRDX0RDSEVDS19HRSh2YWx1ZSwgMCk7CisgICAgUlRDX0RD
SEVDS19HVCh2YWx1ZSwgTWludXNJbmZpbml0eVZhbCgpIC8gRGVub21pbmF0b3IpOworICAgIFJU
Q19EQ0hFQ0tfTFQodmFsdWUsIFBsdXNJbmZpbml0eVZhbCgpIC8gRGVub21pbmF0b3IpOworICAg
IHJldHVybiBVbml0X1QocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KHZhbHVlICogRGVub21p
bmF0b3IpKTsKKyAgfQorICB0ZW1wbGF0ZSA8aW50NjRfdCBEZW5vbWluYXRvciwKKyAgICAgICAg
ICAgIHR5cGVuYW1lIFQsCisgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KKyAgICAgICAgICAgICAgICBu
dWxscHRyPgorICBzdGF0aWMgVW5pdF9UIEZyb21GcmFjdGlvbihUIHZhbHVlKSB7CisgICAgcmV0
dXJuIEZyb21WYWx1ZSh2YWx1ZSAqIERlbm9taW5hdG9yKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUID0gaW50NjRfdD4KKyAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19p
bnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIFRvVmFsdWUoKSBjb25zdCB7CisgICAgUlRDX0RD
SEVDSyhJc0Zpbml0ZSgpKTsKKyAgICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KHZhbHVl
Xyk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGNvbnN0ZXhwciB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZSwgVD46OnR5cGUK
KyAgVG9WYWx1ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gSXNQbHVzSW5maW5pdHkoKQorICAgICAg
ICAgICAgICAgPyBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpCisgICAgICAgICAg
ICAgICA6IElzTWludXNJbmZpbml0eSgpID8gLXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmlu
aXR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZV87CisgIH0K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGNvbnN0ZXhwciBUIFRvVmFsdWVPcihUIGZhbGxi
YWNrX3ZhbHVlKSBjb25zdCB7CisgICAgcmV0dXJuIElzRmluaXRlKCkgPyB2YWx1ZV8gOiBmYWxs
YmFja192YWx1ZTsKKyAgfQorCisgIHRlbXBsYXRlIDxpbnQ2NF90IERlbm9taW5hdG9yLCB0eXBl
bmFtZSBUID0gaW50NjRfdD4KKyAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRl
Z3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIFRvRnJhY3Rpb24oKQorICAgICAgY29uc3QgeworICAg
IFJUQ19EQ0hFQ0soSXNGaW5pdGUoKSk7CisgICAgaWYgKFVuaXRfVDo6b25lX3NpZGVkKSB7Cisg
ICAgICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KAorICAgICAgICAgIERpdlJvdW5kUG9z
aXRpdmVUb05lYXJlc3QodmFsdWVfLCBEZW5vbWluYXRvcikpOworICAgIH0gZWxzZSB7CisgICAg
ICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KERpdlJvdW5kVG9OZWFyZXN0KHZhbHVlXywg
RGVub21pbmF0b3IpKTsKKyAgICB9CisgIH0KKyAgdGVtcGxhdGUgPGludDY0X3QgRGVub21pbmF0
b3IsIHR5cGVuYW1lIFQ+CisgIGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZSwgVD46OnR5cGUKKyAgVG9GcmFjdGlvbigpIGNv
bnN0IHsKKyAgICByZXR1cm4gVG9WYWx1ZTxUPigpICogKDEgLyBzdGF0aWNfY2FzdDxUPihEZW5v
bWluYXRvcikpOworICB9CisKKyAgdGVtcGxhdGUgPGludDY0X3QgRGVub21pbmF0b3I+CisgIGNv
bnN0ZXhwciBpbnQ2NF90IFRvRnJhY3Rpb25PcihpbnQ2NF90IGZhbGxiYWNrX3ZhbHVlKSBjb25z
dCB7CisgICAgcmV0dXJuIElzRmluaXRlKCkgPyBVbml0X1Q6Om9uZV9zaWRlZAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID8gRGl2Um91bmRQb3NpdGl2ZVRvTmVhcmVzdCh2YWx1ZV8sIERl
bm9taW5hdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRGl2Um91bmRUb05lYXJl
c3QodmFsdWVfLCBEZW5vbWluYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICA6IGZhbGxiYWNr
X3ZhbHVlOworICB9CisKKyAgdGVtcGxhdGUgPGludDY0X3QgRmFjdG9yLCB0eXBlbmFtZSBUID0g
aW50NjRfdD4KKyAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6
dmFsdWUsIFQ+Ojp0eXBlIFRvTXVsdGlwbGUoKQorICAgICAgY29uc3QgeworICAgIFJUQ19EQ0hF
Q0tfR0UoVG9WYWx1ZSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSAvIEZhY3Rvcik7
CisgICAgUlRDX0RDSEVDS19MRShUb1ZhbHVlKCksIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1h
eCgpIC8gRmFjdG9yKTsKKyAgICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KFRvVmFsdWUo
KSAqIEZhY3Rvcik7CisgIH0KKyAgdGVtcGxhdGUgPGludDY0X3QgRmFjdG9yLCB0eXBlbmFtZSBU
PgorICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19w
b2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCisgIFRvTXVsdGlwbGUoKSBjb25zdCB7CisgICAgcmV0
dXJuIFRvVmFsdWU8VD4oKSAqIEZhY3RvcjsKKyAgfQorCisgIGV4cGxpY2l0IGNvbnN0ZXhwciBV
bml0QmFzZShpbnQ2NF90IHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKworIHByaXZhdGU6Cisg
IHRlbXBsYXRlIDxjbGFzcyBSZWxhdGl2ZVVuaXRfVD4KKyAgZnJpZW5kIGNsYXNzIFJlbGF0aXZl
VW5pdDsKKworICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBpbnQ2NF90IFBsdXNJbmZpbml0eVZh
bCgpIHsKKyAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7Cisg
IH0KKyAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgaW50NjRfdCBNaW51c0luZmluaXR5VmFsKCkg
eworICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKTsKKyAgfQor
CisgIFVuaXRfVCYgQXNTdWJDbGFzc1JlZigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VW5p
dF9UJj4oKnRoaXMpOyB9CisgIGNvbnN0ZXhwciBjb25zdCBVbml0X1QmIEFzU3ViQ2xhc3NSZWYo
KSBjb25zdCB7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pdF9UJj4oKnRo
aXMpOworICB9CisgIC8vIEFzc3VtZXMgdGhhdCBuID49IDAgYW5kIGQgPiAwLgorICBzdGF0aWMg
Y29uc3RleHByIGludDY0X3QgRGl2Um91bmRQb3NpdGl2ZVRvTmVhcmVzdChpbnQ2NF90IG4sIGlu
dDY0X3QgZCkgeworICAgIHJldHVybiAobiArIGQgLyAyKSAvIGQ7CisgIH0KKyAgLy8gQXNzdW1l
cyB0aGF0IGQgPiAwLgorICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgRGl2Um91bmRUb05lYXJl
c3QoaW50NjRfdCBuLCBpbnQ2NF90IGQpIHsKKyAgICByZXR1cm4gKG4gKyAobiA+PSAwID8gZCAv
IDIgOiAtZCAvIDIpKSAvIGQ7CisgIH0KKworICBpbnQ2NF90IHZhbHVlXzsKK307CisKKy8vIEV4
dGVuZHMgVW5pdEJhc2UgdG8gcHJvdmlkZSBvcGVyYXRpb25zIGZvciByZWxhdGl2ZSB1bml0cywg
dGhhdCBpcywgdW5pdHMKKy8vIHRoYXQgaGF2ZSBhIG1lYW5pbmdmdWwgcmVsYXRpb24gYmV0d2Vl
biB2YWx1ZXMgc3VjaCB0aGF0IGEgKz0gYiBpcyBhCisvLyBzZW5zaWJsZSB0aGluZyB0byBkby4g
Rm9yIGEsYiA8LSBzYW1lIHVuaXQuCit0ZW1wbGF0ZSA8Y2xhc3MgVW5pdF9UPgorY2xhc3MgUmVs
YXRpdmVVbml0IDogcHVibGljIFVuaXRCYXNlPFVuaXRfVD4geworIHB1YmxpYzoKKyAgVW5pdF9U
IENsYW1wZWQoVW5pdF9UIG1pbl92YWx1ZSwgVW5pdF9UIG1heF92YWx1ZSkgY29uc3QgeworICAg
IHJldHVybiBzdGQ6Om1heChtaW5fdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWlu
KFVuaXRCYXNlPFVuaXRfVD46OkFzU3ViQ2xhc3NSZWYoKSwgbWF4X3ZhbHVlKSk7CisgIH0KKyAg
dm9pZCBDbGFtcChVbml0X1QgbWluX3ZhbHVlLCBVbml0X1QgbWF4X3ZhbHVlKSB7CisgICAgKnRo
aXMgPSBDbGFtcGVkKG1pbl92YWx1ZSwgbWF4X3ZhbHVlKTsKKyAgfQorICBVbml0X1Qgb3BlcmF0
b3IrKGNvbnN0IFVuaXRfVCBvdGhlcikgY29uc3QgeworICAgIGlmICh0aGlzLT5Jc1BsdXNJbmZp
bml0eSgpIHx8IG90aGVyLklzUGx1c0luZmluaXR5KCkpIHsKKyAgICAgIFJUQ19EQ0hFQ0soIXRo
aXMtPklzTWludXNJbmZpbml0eSgpKTsKKyAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklzTWludXNJ
bmZpbml0eSgpKTsKKyAgICAgIHJldHVybiB0aGlzLT5QbHVzSW5maW5pdHkoKTsKKyAgICB9IGVs
c2UgaWYgKHRoaXMtPklzTWludXNJbmZpbml0eSgpIHx8IG90aGVyLklzTWludXNJbmZpbml0eSgp
KSB7CisgICAgICBSVENfRENIRUNLKCF0aGlzLT5Jc1BsdXNJbmZpbml0eSgpKTsKKyAgICAgIFJU
Q19EQ0hFQ0soIW90aGVyLklzUGx1c0luZmluaXR5KCkpOworICAgICAgcmV0dXJuIHRoaXMtPk1p
bnVzSW5maW5pdHkoKTsKKyAgICB9CisgICAgcmV0dXJuIFVuaXRCYXNlPFVuaXRfVD46OkZyb21W
YWx1ZSh0aGlzLT5Ub1ZhbHVlKCkgKyBvdGhlci5Ub1ZhbHVlKCkpOworICB9CisgIFVuaXRfVCBv
cGVyYXRvci0oY29uc3QgVW5pdF9UIG90aGVyKSBjb25zdCB7CisgICAgaWYgKHRoaXMtPklzUGx1
c0luZmluaXR5KCkgfHwgb3RoZXIuSXNNaW51c0luZmluaXR5KCkpIHsKKyAgICAgIFJUQ19EQ0hF
Q0soIXRoaXMtPklzTWludXNJbmZpbml0eSgpKTsKKyAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklz
UGx1c0luZmluaXR5KCkpOworICAgICAgcmV0dXJuIHRoaXMtPlBsdXNJbmZpbml0eSgpOworICAg
IH0gZWxzZSBpZiAodGhpcy0+SXNNaW51c0luZmluaXR5KCkgfHwgb3RoZXIuSXNQbHVzSW5maW5p
dHkoKSkgeworICAgICAgUlRDX0RDSEVDSyghdGhpcy0+SXNQbHVzSW5maW5pdHkoKSk7CisgICAg
ICBSVENfRENIRUNLKCFvdGhlci5Jc01pbnVzSW5maW5pdHkoKSk7CisgICAgICByZXR1cm4gdGhp
cy0+TWludXNJbmZpbml0eSgpOworICAgIH0KKyAgICByZXR1cm4gVW5pdEJhc2U8VW5pdF9UPjo6
RnJvbVZhbHVlKHRoaXMtPlRvVmFsdWUoKSAtIG90aGVyLlRvVmFsdWUoKSk7CisgIH0KKyAgVW5p
dF9UJiBvcGVyYXRvcis9KGNvbnN0IFVuaXRfVCBvdGhlcikgeworICAgICp0aGlzID0gKnRoaXMg
KyBvdGhlcjsKKyAgICByZXR1cm4gdGhpcy0+QXNTdWJDbGFzc1JlZigpOworICB9CisgIFVuaXRf
VCYgb3BlcmF0b3ItPShjb25zdCBVbml0X1Qgb3RoZXIpIHsKKyAgICAqdGhpcyA9ICp0aGlzIC0g
b3RoZXI7CisgICAgcmV0dXJuIHRoaXMtPkFzU3ViQ2xhc3NSZWYoKTsKKyAgfQorICBjb25zdGV4
cHIgZG91YmxlIG9wZXJhdG9yLyhjb25zdCBVbml0X1Qgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1
cm4gVW5pdEJhc2U8VW5pdF9UPjo6dGVtcGxhdGUgVG9WYWx1ZTxkb3VibGU+KCkgLworICAgICAg
ICAgICBvdGhlci50ZW1wbGF0ZSBUb1ZhbHVlPGRvdWJsZT4oKTsKKyAgfQorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19hcml0aG1ldGlj
PFQ+Ojp2YWx1ZSwgVW5pdF9UPjo6dHlwZSBvcGVyYXRvci8oCisgICAgICBjb25zdCBUJiBzY2Fs
YXIpIGNvbnN0IHsKKyAgICByZXR1cm4gVW5pdEJhc2U8VW5pdF9UPjo6RnJvbVZhbHVlKAorICAg
ICAgICBzdGQ6OnJvdW5kKFVuaXRCYXNlPFVuaXRfVD46OnRlbXBsYXRlIFRvVmFsdWU8aW50NjRf
dD4oKSAvIHNjYWxhcikpOworICB9CisgIFVuaXRfVCBvcGVyYXRvciooY29uc3QgZG91YmxlIHNj
YWxhcikgY29uc3QgeworICAgIHJldHVybiBVbml0QmFzZTxVbml0X1Q+OjpGcm9tVmFsdWUoc3Rk
Ojpyb3VuZCh0aGlzLT5Ub1ZhbHVlKCkgKiBzY2FsYXIpKTsKKyAgfQorICBVbml0X1Qgb3BlcmF0
b3IqKGNvbnN0IGludDY0X3Qgc2NhbGFyKSBjb25zdCB7CisgICAgcmV0dXJuIFVuaXRCYXNlPFVu
aXRfVD46OkZyb21WYWx1ZSh0aGlzLT5Ub1ZhbHVlKCkgKiBzY2FsYXIpOworICB9CisgIFVuaXRf
VCBvcGVyYXRvciooY29uc3QgaW50MzJfdCBzY2FsYXIpIGNvbnN0IHsKKyAgICByZXR1cm4gVW5p
dEJhc2U8VW5pdF9UPjo6RnJvbVZhbHVlKHRoaXMtPlRvVmFsdWUoKSAqIHNjYWxhcik7CisgIH0K
KworIHByb3RlY3RlZDoKKyAgdXNpbmcgVW5pdEJhc2U8VW5pdF9UPjo6VW5pdEJhc2U7Cit9Owor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVW5pdF9UPgoraW5saW5lIFVuaXRfVCBvcGVyYXRvciooY29uc3Qg
ZG91YmxlIHNjYWxhciwgY29uc3QgUmVsYXRpdmVVbml0PFVuaXRfVD4gb3RoZXIpIHsKKyAgcmV0
dXJuIG90aGVyICogc2NhbGFyOworfQordGVtcGxhdGUgPGNsYXNzIFVuaXRfVD4KK2lubGluZSBV
bml0X1Qgb3BlcmF0b3IqKGNvbnN0IGludDY0X3Qgc2NhbGFyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUmVsYXRpdmVVbml0PFVuaXRfVD4gb3RoZXIpIHsKKyAgcmV0dXJuIG90aGVy
ICogc2NhbGFyOworfQordGVtcGxhdGUgPGNsYXNzIFVuaXRfVD4KK2lubGluZSBVbml0X1Qgb3Bl
cmF0b3IqKGNvbnN0IGludDMyX3QmIHNjYWxhciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJlbGF0aXZlVW5pdDxVbml0X1Q+IG90aGVyKSB7CisgIHJldHVybiBvdGhlciAqIHNjYWxh
cjsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ0Y191bml0c19pbXBsCisKK30gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKKworI2VuZGlmICAvLyBSVENfQkFTRV9VTklUU19VTklUX0JBU0VfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3VuaXRzL3VuaXRfYmFzZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3VuaXRzL3VuaXRfYmFzZV91bml0dGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mOGM4NTAzZGVjYjQ3ODMzZTQ5ZDBkZjE2ZDIwMzljYjBhYzA0Y2ZkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvdW5pdHMvdW5pdF9iYXNlX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsMjM0IEBACisvKgor
ICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInJ0Y19iYXNlL3VuaXRzL3VuaXRfYmFzZS5o
IgorCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVz
cGFjZSB7CitjbGFzcyBUZXN0VW5pdCBmaW5hbCA6IHB1YmxpYyBydGNfdW5pdHNfaW1wbDo6UmVs
YXRpdmVVbml0PFRlc3RVbml0PiB7CisgcHVibGljOgorICBUZXN0VW5pdCgpID0gZGVsZXRlOwor
CisgIHVzaW5nIFVuaXRCYXNlOjpGcm9tU3RhdGljVmFsdWU7CisgIHVzaW5nIFVuaXRCYXNlOjpG
cm9tVmFsdWU7CisgIHVzaW5nIFVuaXRCYXNlOjpUb1ZhbHVlOworICB1c2luZyBVbml0QmFzZTo6
VG9WYWx1ZU9yOworCisgIHRlbXBsYXRlIDxpbnQ2NF90IGtpbG8+CisgIHN0YXRpYyBjb25zdGV4
cHIgVGVzdFVuaXQgRnJvbVN0YXRpY0tpbG8oKSB7CisgICAgcmV0dXJuIEZyb21TdGF0aWNGcmFj
dGlvbjxraWxvLCAxMDAwPigpOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0
aWMgVGVzdFVuaXQgRnJvbUtpbG8oVCBraWxvKSB7CisgICAgcmV0dXJuIEZyb21GcmFjdGlvbjwx
MDAwPihraWxvKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+CisgIFQg
VG9LaWxvKCkgY29uc3QgeworICAgIHJldHVybiBVbml0QmFzZTo6VG9GcmFjdGlvbjwxMDAwLCBU
PigpOworICB9CisgIGNvbnN0ZXhwciBpbnQ2NF90IFRvS2lsb09yKGludDY0X3QgZmFsbGJhY2sp
IGNvbnN0IHsKKyAgICByZXR1cm4gVW5pdEJhc2U6OlRvRnJhY3Rpb25PcjwxMDAwPihmYWxsYmFj
ayk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGNvbnN0ZXhwciBUIFRvTWlsbGko
KSBjb25zdCB7CisgICAgcmV0dXJuIFVuaXRCYXNlOjpUb011bHRpcGxlPDEwMDAsIFQ+KCk7Cisg
IH0KKworIHByaXZhdGU6CisgIGZyaWVuZCBjbGFzcyBVbml0QmFzZTxUZXN0VW5pdD47CisgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBvbmVfc2lkZWQgPSBmYWxzZTsKKyAgdXNpbmcgUmVsYXRpdmVV
bml0PFRlc3RVbml0Pjo6UmVsYXRpdmVVbml0OworfTsKK30gIC8vIG5hbWVzcGFjZQorbmFtZXNw
YWNlIHRlc3QgeworVEVTVChVbml0QmFzZVRlc3QsIENvbnN0RXhwcikgeworICBjb25zdGV4cHIg
aW50NjRfdCBrVmFsdWUgPSAtMTIzNDU7CisgIGNvbnN0ZXhwciBUZXN0VW5pdCBrVGVzdFVuaXRa
ZXJvID0gVGVzdFVuaXQ6Olplcm8oKTsKKyAgY29uc3RleHByIFRlc3RVbml0IGtUZXN0VW5pdFBs
dXNJbmYgPSBUZXN0VW5pdDo6UGx1c0luZmluaXR5KCk7CisgIGNvbnN0ZXhwciBUZXN0VW5pdCBr
VGVzdFVuaXRNaW51c0luZiA9IFRlc3RVbml0OjpNaW51c0luZmluaXR5KCk7CisgIHN0YXRpY19h
c3NlcnQoa1Rlc3RVbml0WmVyby5Jc1plcm8oKSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KGtUZXN0
VW5pdFBsdXNJbmYuSXNQbHVzSW5maW5pdHkoKSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KGtUZXN0
VW5pdE1pbnVzSW5mLklzTWludXNJbmZpbml0eSgpLCAiIik7CisgIHN0YXRpY19hc3NlcnQoa1Rl
c3RVbml0UGx1c0luZi5Ub0tpbG9PcigtMSkgPT0gLTEsICIiKTsKKworICBzdGF0aWNfYXNzZXJ0
KGtUZXN0VW5pdFBsdXNJbmYgPiBrVGVzdFVuaXRaZXJvLCAiIik7CisKKyAgY29uc3RleHByIFRl
c3RVbml0IGtUZXN0VW5pdEtpbG8gPSBUZXN0VW5pdDo6RnJvbVN0YXRpY0tpbG88a1ZhbHVlPigp
OworICBjb25zdGV4cHIgVGVzdFVuaXQga1Rlc3RVbml0VmFsdWUgPSBUZXN0VW5pdDo6RnJvbVN0
YXRpY1ZhbHVlPGtWYWx1ZT4oKTsKKworICBzdGF0aWNfYXNzZXJ0KGtUZXN0VW5pdEtpbG8uVG9L
aWxvT3IoMCkgPT0ga1ZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoa1Rlc3RVbml0VmFsdWUu
VG9WYWx1ZU9yKDApID09IGtWYWx1ZSwgIiIpOworfQorCitURVNUKFVuaXRCYXNlVGVzdCwgR2V0
QmFja1NhbWVWYWx1ZXMpIHsKKyAgY29uc3QgaW50NjRfdCBrVmFsdWUgPSA0OTk7CisgIGZvciAo
aW50IHNpZ24gPSAtMTsgc2lnbiA8PSAxOyArK3NpZ24pIHsKKyAgICBpbnQ2NF90IHZhbHVlID0g
a1ZhbHVlICogc2lnbjsKKyAgICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OkZyb21LaWxvKHZhbHVlKS5U
b0tpbG8oKSwgdmFsdWUpOworICAgIEVYUEVDVF9FUShUZXN0VW5pdDo6RnJvbVZhbHVlKHZhbHVl
KS5Ub1ZhbHVlPGludDY0X3Q+KCksIHZhbHVlKTsKKyAgfQorICBFWFBFQ1RfRVEoVGVzdFVuaXQ6
Olplcm8oKS5Ub1ZhbHVlPGludDY0X3Q+KCksIDApOworfQorCitURVNUKFVuaXRCYXNlVGVzdCwg
R2V0RGlmZmVyZW50UHJlZml4KSB7CisgIGNvbnN0IGludDY0X3Qga1ZhbHVlID0gMzAwMDAwMDsK
KyAgRVhQRUNUX0VRKFRlc3RVbml0OjpGcm9tVmFsdWUoa1ZhbHVlKS5Ub0tpbG8oKSwga1ZhbHVl
IC8gMTAwMCk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6RnJvbUtpbG8oa1ZhbHVlKS5Ub1ZhbHVl
PGludDY0X3Q+KCksIGtWYWx1ZSAqIDEwMDApOworfQorCitURVNUKFVuaXRCYXNlVGVzdCwgSWRl
bnRpdHlDaGVja3MpIHsKKyAgY29uc3QgaW50NjRfdCBrVmFsdWUgPSAzMDAwOworICBFWFBFQ1Rf
VFJVRShUZXN0VW5pdDo6WmVybygpLklzWmVybygpKTsKKyAgRVhQRUNUX0ZBTFNFKFRlc3RVbml0
OjpGcm9tS2lsbyhrVmFsdWUpLklzWmVybygpKTsKKworICBFWFBFQ1RfVFJVRShUZXN0VW5pdDo6
UGx1c0luZmluaXR5KCkuSXNJbmZpbml0ZSgpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6Ok1p
bnVzSW5maW5pdHkoKS5Jc0luZmluaXRlKCkpOworICBFWFBFQ1RfRkFMU0UoVGVzdFVuaXQ6Olpl
cm8oKS5Jc0luZmluaXRlKCkpOworICBFWFBFQ1RfRkFMU0UoVGVzdFVuaXQ6OkZyb21LaWxvKC1r
VmFsdWUpLklzSW5maW5pdGUoKSk7CisgIEVYUEVDVF9GQUxTRShUZXN0VW5pdDo6RnJvbUtpbG8o
a1ZhbHVlKS5Jc0luZmluaXRlKCkpOworCisgIEVYUEVDVF9GQUxTRShUZXN0VW5pdDo6UGx1c0lu
ZmluaXR5KCkuSXNGaW5pdGUoKSk7CisgIEVYUEVDVF9GQUxTRShUZXN0VW5pdDo6TWludXNJbmZp
bml0eSgpLklzRmluaXRlKCkpOworICBFWFBFQ1RfVFJVRShUZXN0VW5pdDo6RnJvbUtpbG8oLWtW
YWx1ZSkuSXNGaW5pdGUoKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RVbml0OjpGcm9tS2lsbyhrVmFs
dWUpLklzRmluaXRlKCkpOworICBFWFBFQ1RfVFJVRShUZXN0VW5pdDo6WmVybygpLklzRmluaXRl
KCkpOworCisgIEVYUEVDVF9UUlVFKFRlc3RVbml0OjpQbHVzSW5maW5pdHkoKS5Jc1BsdXNJbmZp
bml0eSgpKTsKKyAgRVhQRUNUX0ZBTFNFKFRlc3RVbml0OjpNaW51c0luZmluaXR5KCkuSXNQbHVz
SW5maW5pdHkoKSk7CisKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6Ok1pbnVzSW5maW5pdHkoKS5J
c01pbnVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9GQUxTRShUZXN0VW5pdDo6UGx1c0luZmluaXR5
KCkuSXNNaW51c0luZmluaXR5KCkpOworfQorCitURVNUKFVuaXRCYXNlVGVzdCwgQ29tcGFyaXNv
bk9wZXJhdG9ycykgeworICBjb25zdCBpbnQ2NF90IGtTbWFsbCA9IDQ1MDsKKyAgY29uc3QgaW50
NjRfdCBrTGFyZ2UgPSA0NTE7CisgIGNvbnN0IFRlc3RVbml0IHNtYWxsID0gVGVzdFVuaXQ6OkZy
b21LaWxvKGtTbWFsbCk7CisgIGNvbnN0IFRlc3RVbml0IGxhcmdlID0gVGVzdFVuaXQ6OkZyb21L
aWxvKGtMYXJnZSk7CisKKyAgRVhQRUNUX0VRKFRlc3RVbml0OjpaZXJvKCksIFRlc3RVbml0OjpG
cm9tS2lsbygwKSk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6UGx1c0luZmluaXR5KCksIFRlc3RV
bml0OjpQbHVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9FUShzbWFsbCwgVGVzdFVuaXQ6OkZyb21L
aWxvKGtTbWFsbCkpOworICBFWFBFQ1RfTEUoc21hbGwsIFRlc3RVbml0OjpGcm9tS2lsbyhrU21h
bGwpKTsKKyAgRVhQRUNUX0dFKHNtYWxsLCBUZXN0VW5pdDo6RnJvbUtpbG8oa1NtYWxsKSk7Cisg
IEVYUEVDVF9ORShzbWFsbCwgVGVzdFVuaXQ6OkZyb21LaWxvKGtMYXJnZSkpOworICBFWFBFQ1Rf
TEUoc21hbGwsIFRlc3RVbml0OjpGcm9tS2lsbyhrTGFyZ2UpKTsKKyAgRVhQRUNUX0xUKHNtYWxs
LCBUZXN0VW5pdDo6RnJvbUtpbG8oa0xhcmdlKSk7CisgIEVYUEVDVF9HRShsYXJnZSwgVGVzdFVu
aXQ6OkZyb21LaWxvKGtTbWFsbCkpOworICBFWFBFQ1RfR1QobGFyZ2UsIFRlc3RVbml0OjpGcm9t
S2lsbyhrU21hbGwpKTsKKyAgRVhQRUNUX0xUKFRlc3RVbml0OjpaZXJvKCksIHNtYWxsKTsKKyAg
RVhQRUNUX0dUKFRlc3RVbml0OjpaZXJvKCksIFRlc3RVbml0OjpGcm9tS2lsbygta1NtYWxsKSk7
CisgIEVYUEVDVF9HVChUZXN0VW5pdDo6WmVybygpLCBUZXN0VW5pdDo6RnJvbUtpbG8oLWtTbWFs
bCkpOworCisgIEVYUEVDVF9HVChUZXN0VW5pdDo6UGx1c0luZmluaXR5KCksIGxhcmdlKTsKKyAg
RVhQRUNUX0xUKFRlc3RVbml0OjpNaW51c0luZmluaXR5KCksIFRlc3RVbml0OjpaZXJvKCkpOwor
fQorCitURVNUKFVuaXRCYXNlVGVzdCwgQ2xhbXBpbmcpIHsKKyAgY29uc3QgVGVzdFVuaXQgdXBw
ZXIgPSBUZXN0VW5pdDo6RnJvbUtpbG8oODAwKTsKKyAgY29uc3QgVGVzdFVuaXQgbG93ZXIgPSBU
ZXN0VW5pdDo6RnJvbUtpbG8oMTAwKTsKKyAgY29uc3QgVGVzdFVuaXQgdW5kZXIgPSBUZXN0VW5p
dDo6RnJvbUtpbG8oMTAwKTsKKyAgY29uc3QgVGVzdFVuaXQgaW5zaWRlID0gVGVzdFVuaXQ6OkZy
b21LaWxvKDUwMCk7CisgIGNvbnN0IFRlc3RVbml0IG92ZXIgPSBUZXN0VW5pdDo6RnJvbUtpbG8o
MTAwMCk7CisgIEVYUEVDVF9FUSh1bmRlci5DbGFtcGVkKGxvd2VyLCB1cHBlciksIGxvd2VyKTsK
KyAgRVhQRUNUX0VRKGluc2lkZS5DbGFtcGVkKGxvd2VyLCB1cHBlciksIGluc2lkZSk7CisgIEVY
UEVDVF9FUShvdmVyLkNsYW1wZWQobG93ZXIsIHVwcGVyKSwgdXBwZXIpOworCisgIFRlc3RVbml0
IG11dGFibGVfZGVsdGEgPSBsb3dlcjsKKyAgbXV0YWJsZV9kZWx0YS5DbGFtcChsb3dlciwgdXBw
ZXIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9kZWx0YSwgbG93ZXIpOworICBtdXRhYmxlX2RlbHRh
ID0gaW5zaWRlOworICBtdXRhYmxlX2RlbHRhLkNsYW1wKGxvd2VyLCB1cHBlcik7CisgIEVYUEVD
VF9FUShtdXRhYmxlX2RlbHRhLCBpbnNpZGUpOworICBtdXRhYmxlX2RlbHRhID0gb3ZlcjsKKyAg
bXV0YWJsZV9kZWx0YS5DbGFtcChsb3dlciwgdXBwZXIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9k
ZWx0YSwgdXBwZXIpOworfQorCitURVNUKFVuaXRCYXNlVGVzdCwgQ2FuQmVJbml0aXRpYWxpemVk
RnJvbUxhcmdlSW50KSB7CisgIGNvbnN0IGludCBrTWF4SW50ID0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ+OjptYXgoKTsKKyAgRVhQRUNUX0VRKFRlc3RVbml0OjpGcm9tS2lsbyhrTWF4SW50KS5U
b1ZhbHVlPGludDY0X3Q+KCksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ2NF90PihrTWF4
SW50KSAqIDEwMDApOworfQorCitURVNUKFVuaXRCYXNlVGVzdCwgQ29udmVydHNUb0FuZEZyb21E
b3VibGUpIHsKKyAgY29uc3QgaW50NjRfdCBrVmFsdWUgPSAxNzAxNzsKKyAgY29uc3QgZG91Ymxl
IGtNaWxsaURvdWJsZSA9IGtWYWx1ZSAqIDFlMzsKKyAgY29uc3QgZG91YmxlIGtWYWx1ZURvdWJs
ZSA9IGtWYWx1ZTsKKyAgY29uc3QgZG91YmxlIGtLaWxvRG91YmxlID0ga1ZhbHVlICogMWUtMzsK
KworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OkZyb21WYWx1ZShrVmFsdWUpLlRvS2lsbzxkb3VibGU+
KCksIGtLaWxvRG91YmxlKTsKKyAgRVhQRUNUX0VRKFRlc3RVbml0OjpGcm9tS2lsbyhrS2lsb0Rv
dWJsZSkuVG9WYWx1ZTxpbnQ2NF90PigpLCBrVmFsdWUpOworCisgIEVYUEVDVF9FUShUZXN0VW5p
dDo6RnJvbVZhbHVlKGtWYWx1ZSkuVG9WYWx1ZTxkb3VibGU+KCksIGtWYWx1ZURvdWJsZSk7Cisg
IEVYUEVDVF9FUShUZXN0VW5pdDo6RnJvbVZhbHVlKGtWYWx1ZURvdWJsZSkuVG9WYWx1ZTxpbnQ2
NF90PigpLCBrVmFsdWUpOworCisgIEVYUEVDVF9ORUFSKFRlc3RVbml0OjpGcm9tVmFsdWUoa1Zh
bHVlKS5Ub01pbGxpPGRvdWJsZT4oKSwga01pbGxpRG91YmxlLCAxKTsKKworICBjb25zdCBkb3Vi
bGUga1BsdXNJbmZpbml0eSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KTsKKyAgY29uc3QgZG91YmxlIGtNaW51c0luZmluaXR5ID0gLWtQbHVzSW5maW5pdHk7CisKKyAg
RVhQRUNUX0VRKFRlc3RVbml0OjpQbHVzSW5maW5pdHkoKS5Ub0tpbG88ZG91YmxlPigpLCBrUGx1
c0luZmluaXR5KTsKKyAgRVhQRUNUX0VRKFRlc3RVbml0OjpNaW51c0luZmluaXR5KCkuVG9LaWxv
PGRvdWJsZT4oKSwga01pbnVzSW5maW5pdHkpOworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OlBsdXNJ
bmZpbml0eSgpLlRvVmFsdWU8ZG91YmxlPigpLCBrUGx1c0luZmluaXR5KTsKKyAgRVhQRUNUX0VR
KFRlc3RVbml0OjpNaW51c0luZmluaXR5KCkuVG9WYWx1ZTxkb3VibGU+KCksIGtNaW51c0luZmlu
aXR5KTsKKyAgRVhQRUNUX0VRKFRlc3RVbml0OjpQbHVzSW5maW5pdHkoKS5Ub01pbGxpPGRvdWJs
ZT4oKSwga1BsdXNJbmZpbml0eSk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6TWludXNJbmZpbml0
eSgpLlRvTWlsbGk8ZG91YmxlPigpLCBrTWludXNJbmZpbml0eSk7CisKKyAgRVhQRUNUX1RSVUUo
VGVzdFVuaXQ6OkZyb21LaWxvKGtQbHVzSW5maW5pdHkpLklzUGx1c0luZmluaXR5KCkpOworICBF
WFBFQ1RfVFJVRShUZXN0VW5pdDo6RnJvbUtpbG8oa01pbnVzSW5maW5pdHkpLklzTWludXNJbmZp
bml0eSgpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6OkZyb21WYWx1ZShrUGx1c0luZmluaXR5
KS5Jc1BsdXNJbmZpbml0eSgpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6OkZyb21WYWx1ZShr
TWludXNJbmZpbml0eSkuSXNNaW51c0luZmluaXR5KCkpOworfQorCitURVNUKFVuaXRCYXNlVGVz
dCwgTWF0aE9wZXJhdGlvbnMpIHsKKyAgY29uc3QgaW50NjRfdCBrVmFsdWVBID0gMjY3OworICBj
b25zdCBpbnQ2NF90IGtWYWx1ZUIgPSA0NTA7CisgIGNvbnN0IFRlc3RVbml0IGRlbHRhX2EgPSBU
ZXN0VW5pdDo6RnJvbUtpbG8oa1ZhbHVlQSk7CisgIGNvbnN0IFRlc3RVbml0IGRlbHRhX2IgPSBU
ZXN0VW5pdDo6RnJvbUtpbG8oa1ZhbHVlQik7CisgIEVYUEVDVF9FUSgoZGVsdGFfYSArIGRlbHRh
X2IpLlRvS2lsbygpLCBrVmFsdWVBICsga1ZhbHVlQik7CisgIEVYUEVDVF9FUSgoZGVsdGFfYSAt
IGRlbHRhX2IpLlRvS2lsbygpLCBrVmFsdWVBIC0ga1ZhbHVlQik7CisKKyAgY29uc3QgaW50MzJf
dCBrSW50MzJWYWx1ZSA9IDEyMzsKKyAgY29uc3QgZG91YmxlIGtGbG9hdFZhbHVlID0gMTIzLjA7
CisgIEVYUEVDVF9FUSgoVGVzdFVuaXQ6OkZyb21WYWx1ZShrVmFsdWVBKSAqIGtWYWx1ZUIpLlRv
VmFsdWU8aW50NjRfdD4oKSwKKyAgICAgICAgICAgIGtWYWx1ZUEgKiBrVmFsdWVCKTsKKyAgRVhQ
RUNUX0VRKChUZXN0VW5pdDo6RnJvbVZhbHVlKGtWYWx1ZUEpICoga0ludDMyVmFsdWUpLlRvVmFs
dWU8aW50NjRfdD4oKSwKKyAgICAgICAgICAgIGtWYWx1ZUEgKiBrSW50MzJWYWx1ZSk7CisgIEVY
UEVDVF9FUSgoVGVzdFVuaXQ6OkZyb21WYWx1ZShrVmFsdWVBKSAqIGtGbG9hdFZhbHVlKS5Ub1Zh
bHVlPGludDY0X3Q+KCksCisgICAgICAgICAgICBrVmFsdWVBICoga0Zsb2F0VmFsdWUpOworCisg
IEVYUEVDVF9FUSgoZGVsdGFfYiAvIDEwKS5Ub0tpbG8oKSwga1ZhbHVlQiAvIDEwKTsKKyAgRVhQ
RUNUX0VRKGRlbHRhX2IgLyBkZWx0YV9hLCBzdGF0aWNfY2FzdDxkb3VibGU+KGtWYWx1ZUIpIC8g
a1ZhbHVlQSk7CisKKyAgVGVzdFVuaXQgbXV0YWJsZV9kZWx0YSA9IFRlc3RVbml0OjpGcm9tS2ls
byhrVmFsdWVBKTsKKyAgbXV0YWJsZV9kZWx0YSArPSBUZXN0VW5pdDo6RnJvbUtpbG8oa1ZhbHVl
Qik7CisgIEVYUEVDVF9FUShtdXRhYmxlX2RlbHRhLCBUZXN0VW5pdDo6RnJvbUtpbG8oa1ZhbHVl
QSArIGtWYWx1ZUIpKTsKKyAgbXV0YWJsZV9kZWx0YSAtPSBUZXN0VW5pdDo6RnJvbUtpbG8oa1Zh
bHVlQik7CisgIEVYUEVDVF9FUShtdXRhYmxlX2RlbHRhLCBUZXN0VW5pdDo6RnJvbUtpbG8oa1Zh
bHVlQSkpOworfQorCitURVNUKFVuaXRCYXNlVGVzdCwgSW5maW5pdHlPcGVyYXRpb25zKSB7Cisg
IGNvbnN0IGludDY0X3Qga1ZhbHVlID0gMjY3OworICBjb25zdCBUZXN0VW5pdCBmaW5pdGUgPSBU
ZXN0VW5pdDo6RnJvbUtpbG8oa1ZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoKFRlc3RVbml0OjpQbHVz
SW5maW5pdHkoKSArIGZpbml0ZSkuSXNQbHVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9UUlVFKChU
ZXN0VW5pdDo6UGx1c0luZmluaXR5KCkgLSBmaW5pdGUpLklzUGx1c0luZmluaXR5KCkpOworICBF
WFBFQ1RfVFJVRSgoZmluaXRlICsgVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpKS5Jc1BsdXNJbmZp
bml0eSgpKTsKKyAgRVhQRUNUX1RSVUUoKGZpbml0ZSAtIFRlc3RVbml0OjpNaW51c0luZmluaXR5
KCkpLklzUGx1c0luZmluaXR5KCkpOworCisgIEVYUEVDVF9UUlVFKChUZXN0VW5pdDo6TWludXNJ
bmZpbml0eSgpICsgZmluaXRlKS5Jc01pbnVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9UUlVFKChU
ZXN0VW5pdDo6TWludXNJbmZpbml0eSgpIC0gZmluaXRlKS5Jc01pbnVzSW5maW5pdHkoKSk7Cisg
IEVYUEVDVF9UUlVFKChmaW5pdGUgKyBUZXN0VW5pdDo6TWludXNJbmZpbml0eSgpKS5Jc01pbnVz
SW5maW5pdHkoKSk7CisgIEVYUEVDVF9UUlVFKChmaW5pdGUgLSBUZXN0VW5pdDo6UGx1c0luZmlu
aXR5KCkpLklzTWludXNJbmZpbml0eSgpKTsKK30KK30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0dGVzdF9tYWluLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHRlc3RfbWFpbi5jYwpp
bmRleCA4ZDRmZjJkZjJkMzkzMGNmN2VkNGM4NTllMTk3ZjkxZjQzY2UwODNjLi41ZmQzYTk5Njg3
NmY4ZGNhMzU0NGQwODg0NDEyNTQ3NzQ3MDA5OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0dGVzdF9tYWluLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Vu
aXR0ZXN0X21haW4uY2MKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBl
cnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNs
dWRlL21ldHJpY3MuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCi0jaW5jbHVkZSAi
dGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKIAogI2lmIGRlZmluZWQoV0VCUlRDX1dJTikK
ICNpbmNsdWRlICJydGNfYmFzZS93aW4zMnNvY2tldGluaXQuaCIKQEAgLTMyLDE5ICszMSwyMCBA
QAogI2luY2x1ZGUgInRlc3QvaW9zL3Rlc3Rfc3VwcG9ydC5oIgogI2VuZGlmCiAKLURFRklORV9i
b29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOwotREVGSU5FX3N0cmluZyhs
b2csICIiLCAibG9nZ2luZyBvcHRpb25zIHRvIHVzZSIpOwotREVGSU5FX3N0cmluZygKK1dFQlJU
Q19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJU
Q19ERUZJTkVfc3RyaW5nKGxvZywgIiIsICJsb2dnaW5nIG9wdGlvbnMgdG8gdXNlIik7CitXRUJS
VENfREVGSU5FX3N0cmluZygKICAgICBmb3JjZV9maWVsZHRyaWFscywKICAgICAiIiwKICAgICAi
RmllbGQgdHJpYWxzIGNvbnRyb2wgZXhwZXJpbWVudGFsIGZlYXR1cmUgY29kZSB3aGljaCBjYW4g
YmUgZm9yY2VkLiAiCiAgICAgIkUuZy4gcnVubmluZyB3aXRoIC0tZm9yY2VfZmllbGR0cmlhbHM9
V2ViUlRDLUZvb0ZlYXR1cmUvRW5hYmxlLyIKICAgICAiIHdpbGwgYXNzaWduIHRoZSBncm91cCBF
bmFibGUgdG8gZmllbGQgdHJpYWwgV2ViUlRDLUZvb0ZlYXR1cmUuIik7CiAjaWYgZGVmaW5lZChX
RUJSVENfV0lOKQotREVGSU5FX2ludChjcnRfYnJlYWtfYWxsb2MsIC0xLCAibWVtb3J5IGFsbG9j
YXRpb24gdG8gYnJlYWsgb24iKTsKLURFRklORV9ib29sKGRlZmF1bHRfZXJyb3JfaGFuZGxlcnMs
Ci0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJsZWF2ZSB0aGUgZGVmYXVsdCBleGNl
cHRpb24vZGJnIGhhbmRsZXIgZnVuY3Rpb25zIGluIHBsYWNlIik7CitXRUJSVENfREVGSU5FX2lu
dChjcnRfYnJlYWtfYWxsb2MsIC0xLCAibWVtb3J5IGFsbG9jYXRpb24gdG8gYnJlYWsgb24iKTsK
K1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBkZWZhdWx0X2Vycm9yX2hhbmRsZXJzLAorICAgIGZh
bHNlLAorICAgICJsZWF2ZSB0aGUgZGVmYXVsdCBleGNlcHRpb24vZGJnIGhhbmRsZXIgZnVuY3Rp
b25zIGluIHBsYWNlIik7CiAKIHZvaWQgVGVzdEludmFsaWRQYXJhbWV0ZXJIYW5kbGVyKGNvbnN0
IHdjaGFyX3QqIGV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB3Y2hhcl90KiBmdW5jdGlvbiwKQEAgLTgxLDcgKzgxLDYgQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgIHJldHVybiAwOwogICB9CiAKLSAgd2VicnRjOjp0ZXN0
OjpTZXRFeGVjdXRhYmxlUGF0aChhcmd2WzBdKTsKICAgd2VicnRjOjp0ZXN0OjpWYWxpZGF0ZUZp
ZWxkVHJpYWxzU3RyaW5nT3JEaWUoRkxBR19mb3JjZV9maWVsZHRyaWFscyk7CiAgIC8vIEluaXRG
aWVsZFRyaWFsc0Zyb21TdHJpbmcgc3RvcmVzIHRoZSBjaGFyKiwgc28gdGhlIGNoYXIgYXJyYXkg
bXVzdCBvdXRsaXZlCiAgIC8vIHRoZSBhcHBsaWNhdGlvbi4KQEAgLTExOCw3ICsxMTcsNyBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAKICAgLy8gSW5pdGlhbGl6ZSBTU0wg
d2hpY2ggYXJlIHVzZWQgYnkgc2V2ZXJhbCB0ZXN0cy4KICAgcnRjOjpJbml0aWFsaXplU1NMKCk7
Ci0gIHJ0Yzo6U1NMU3RyZWFtQWRhcHRlcjo6ZW5hYmxlX3RpbWVfY2FsbGJhY2tfZm9yX3Rlc3Rp
bmcoKTsKKyAgcnRjOjpTU0xTdHJlYW1BZGFwdGVyOjpFbmFibGVUaW1lQ2FsbGJhY2tGb3JUZXN0
aW5nKCk7CiAKICNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCiAgIHJ0Yzo6dGVzdDo6SW5pdFRlc3RT
dWl0ZShSVU5fQUxMX1RFU1RTLCBhcmdjLCBhcmd2LCBmYWxzZSk7CkBAIC0xMzgsNSArMTM3LDEz
IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICBfQ3J0U2V0UmVwb3J0
SG9vazIoX0NSVF9SUFRIT09LX1JFTU9WRSwgVGVzdENydFJlcG9ydEhhbmRsZXIpOwogI2VuZGlm
CiAKKyNpZiBkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVSKSB8fCBkZWZpbmVkKExFQUtfU0FOSVRJ
WkVSKSB8fCAgXAorICAgIGRlZmluZWQoTUVNT1JZX1NBTklUSVpFUikgfHwgZGVmaW5lZChUSFJF
QURfU0FOSVRJWkVSKSB8fCBcCisgICAgZGVmaW5lZChVTkRFRklORURfU0FOSVRJWkVSKQorICAv
LyBXZSB3YW50IHRoZSB0ZXN0IGZsYWdnZWQgYXMgZmFpbGVkIG9ubHkgZm9yIHNhbml0aXplciBk
ZWZlY3RzLAorICAvLyBpbiB3aGljaCBjYXNlIHRoZSBzYW5pdGl6ZXIgd2lsbCBvdmVycmlkZSBl
eGl0IGNvZGUgd2l0aCA2Ni4KKyAgcmV0dXJuIDA7CisjZW5kaWYKKwogICByZXR1cm4gcmVzOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml4ZmlsZXN5c3RlbS5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDIzYzM0YzhjOTQzZjg3M2Q4Y2JmYWYxMjVmNWQ3MWI4OWM4NTMwZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml4ZmlsZXN5c3RlbS5j
YworKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDA0
IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0j
aW5jbHVkZSAicnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uaCIKLQotI2luY2x1ZGUgPGVycm5vLmg+
Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzeXMv
c3RhdC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0jaWYgZGVmaW5lZChXRUJSVENfTUFDKSAm
JiAhZGVmaW5lZChXRUJSVENfSU9TKQotI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2Vydmlj
ZXMuaD4KLSNpbmNsdWRlIDxJT0tpdC9JT0NGQnVuZGxlLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXR2
ZnMuaD4KLSNpbmNsdWRlICJydGNfYmFzZS9tYWN1dGlscy5oIgotI2VuZGlmICAvLyBXRUJSVENf
TUFDICYmICFkZWZpbmVkKFdFQlJUQ19JT1MpCi0KLSNpZiBkZWZpbmVkKFdFQlJUQ19QT1NJWCkg
JiYgIWRlZmluZWQoV0VCUlRDX01BQykgfHwgZGVmaW5lZChXRUJSVENfSU9TKQotI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgotI2lmIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCi0jaW5jbHVkZSA8c3lz
L3N0YXRmcy5oPgotI2VsaWYgIWRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pCi0jaW5jbHVkZSA8
c3lzL3N0YXR2ZnMuaD4KLSNlbmRpZiAgLy8gICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQot
I2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHB3ZC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+
Ci0jZW5kaWYgIC8vIFdFQlJUQ19QT1NJWCAmJiAhV0VCUlRDX01BQyB8fCBXRUJSVENfSU9TCi0K
LSNpZiBkZWZpbmVkKFdFQlJUQ19MSU5VWCkgJiYgIWRlZmluZWQoV0VCUlRDX0FORFJPSUQpCi0j
aW5jbHVkZSA8Y3R5cGUuaD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jZW5kaWYKLQotI2lmIGRl
ZmluZWQoX19uYXRpdmVfY2xpZW50X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykKLSNpbmNsdWRl
IDxzeXMvc3lzbGltaXRzLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6
ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Zp
bGV1dGlscy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3BhdGh1dGlscy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL3N0cmVhbS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCi0KLW5h
bWVzcGFjZSBydGMgewotCi1Vbml4RmlsZXN5c3RlbTo6VW5peEZpbGVzeXN0ZW0oKSB7fQotCi1V
bml4RmlsZXN5c3RlbTo6flVuaXhGaWxlc3lzdGVtKCkge30KLQotYm9vbCBVbml4RmlsZXN5c3Rl
bTo6RGVsZXRlRmlsZShjb25zdCBQYXRobmFtZSYgZmlsZW5hbWUpIHsKLSAgUlRDX0xPRyhMU19J
TkZPKSA8PCAiRGVsZXRpbmcgZmlsZToiIDw8IGZpbGVuYW1lLnBhdGhuYW1lKCk7Ci0KLSAgaWYg
KCFJc0ZpbGUoZmlsZW5hbWUpKSB7Ci0gICAgUlRDX0RDSEVDSyhJc0ZpbGUoZmlsZW5hbWUpKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgcmV0dXJuIDo6dW5saW5rKGZpbGVuYW1lLnBhdGhu
YW1lKCkuY19zdHIoKSkgPT0gMDsKLX0KLQotYm9vbCBVbml4RmlsZXN5c3RlbTo6TW92ZUZpbGUo
Y29uc3QgUGF0aG5hbWUmIG9sZF9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUGF0aG5hbWUmIG5ld19wYXRoKSB7Ci0gIGlmICghSXNGaWxlKG9sZF9wYXRoKSkgewot
ICAgIFJUQ19EQ0hFQ0soSXNGaWxlKG9sZF9wYXRoKSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9
Ci0gIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIk1vdmluZyAiIDw8IG9sZF9wYXRoLnBhdGhuYW1l
KCkgPDwgIiB0byAiCi0gICAgICAgICAgICAgICAgICAgICAgPDwgbmV3X3BhdGgucGF0aG5hbWUo
KTsKLSAgaWYgKHJlbmFtZShvbGRfcGF0aC5wYXRobmFtZSgpLmNfc3RyKCksIG5ld19wYXRoLnBh
dGhuYW1lKCkuY19zdHIoKSkgIT0gMCkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBVbml4RmlsZXN5c3RlbTo6SXNGb2xkZXIoY29uc3QgUGF0aG5h
bWUmIHBhdGgpIHsKLSAgc3RydWN0IHN0YXQgc3Q7Ci0gIGlmIChzdGF0KHBhdGgucGF0aG5hbWUo
KS5jX3N0cigpLCAmc3QpIDwgMCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiBTX0lTRElS
KHN0LnN0X21vZGUpOwotfQotCi1ib29sIFVuaXhGaWxlc3lzdGVtOjpJc0ZpbGUoY29uc3QgUGF0
aG5hbWUmIHBhdGhuYW1lKSB7Ci0gIHN0cnVjdCBzdGF0IHN0OwotICBpbnQgcmVzID0gOjpzdGF0
KHBhdGhuYW1lLnBhdGhuYW1lKCkuY19zdHIoKSwgJnN0KTsKLSAgLy8gVHJlYXQgc3ltbGlua3Ms
IG5hbWVkIHBpcGVzLCBldGMuIGFsbCBhcyBmaWxlcy4KLSAgcmV0dXJuIHJlcyA9PSAwICYmICFT
X0lTRElSKHN0LnN0X21vZGUpOwotfQotCi1ib29sIFVuaXhGaWxlc3lzdGVtOjpHZXRGaWxlU2l6
ZShjb25zdCBQYXRobmFtZSYgcGF0aG5hbWUsIHNpemVfdCogc2l6ZSkgewotICBzdHJ1Y3Qgc3Rh
dCBzdDsKLSAgaWYgKDo6c3RhdChwYXRobmFtZS5wYXRobmFtZSgpLmNfc3RyKCksICZzdCkgIT0g
MCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gICpzaXplID0gc3Quc3Rfc2l6ZTsKLSAgcmV0dXJuIHRy
dWU7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBydGMKLQotI2lmIGRlZmluZWQoX19uYXRpdmVfY2xp
ZW50X18pCi1leHRlcm4gIkMiIGludCBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkKLWxpbmsoY29uc3Qg
Y2hhciogb2xkcGF0aCwgY29uc3QgY2hhciogbmV3cGF0aCkgewotICBlcnJubyA9IEVBQ0NFUzsK
LSAgcmV0dXJuIC0xOwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml4ZmlsZXN5c3RlbS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5peGZpbGVzeXN0
ZW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzExZDdiM2VhMTkyZTE0OWM5MTEx
YTBkOTRiOWU4ZmRjZWVkYTI3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS91bml4ZmlsZXN5c3RlbS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoK
LSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBSVENfQkFTRV9VTklYRklMRVNZU1RFTV9IXwotI2Rl
ZmluZSBSVENfQkFTRV9VTklYRklMRVNZU1RFTV9IXwotCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+
Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9maWxldXRpbHMuaCIKLQotbmFtZXNwYWNlIHJ0YyB7Ci0K
LWNsYXNzIFVuaXhGaWxlc3lzdGVtIDogcHVibGljIEZpbGVzeXN0ZW1JbnRlcmZhY2UgewotIHB1
YmxpYzoKLSAgVW5peEZpbGVzeXN0ZW0oKTsKLSAgflVuaXhGaWxlc3lzdGVtKCkgb3ZlcnJpZGU7
Ci0KLSAgLy8gVGhpcyB3aWxsIGF0dGVtcHQgdG8gZGVsZXRlIHRoZSBmaWxlIGxvY2F0ZWQgYXQg
ZmlsZW5hbWUuCi0gIC8vIEl0IHdpbGwgZmFpbCB3aXRoIFZFUklZIGlmIHlvdSBwYXNzIGl0IGEg
bm9uLWV4aXN0YW50IGZpbGUsIG9yIGEgZGlyZWN0b3J5LgotICBib29sIERlbGV0ZUZpbGUoY29u
c3QgUGF0aG5hbWUmIGZpbGVuYW1lKSBvdmVycmlkZTsKLQotICAvLyBUaGlzIG1vdmVzIGEgZmls
ZSBmcm9tIG9sZF9wYXRoIHRvIG5ld19wYXRoLCB3aGVyZSAiZmlsZSIgY2FuIGJlIGEgcGxhaW4K
LSAgLy8gZmlsZSBvciBkaXJlY3RvcnksIHdoaWNoIHdpbGwgYmUgbW92ZWQgcmVjdXJzaXZlbHku
Ci0gIC8vIFJldHVybnMgdHJ1ZSBpZiBmdW5jdGlvbiBzdWNjZWVkcy4KLSAgYm9vbCBNb3ZlRmls
ZShjb25zdCBQYXRobmFtZSYgb2xkX3BhdGgsIGNvbnN0IFBhdGhuYW1lJiBuZXdfcGF0aCkgb3Zl
cnJpZGU7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIGEgcGF0aG5hbWUgaXMgYSBkaXJlY3RvcnkK
LSAgYm9vbCBJc0ZvbGRlcihjb25zdCBQYXRobmFtZSYgcGF0aG5hbWUpIG92ZXJyaWRlOwotCi0g
IC8vIFJldHVybnMgdHJ1ZSBvZiBwYXRobmFtZSByZXByZXNlbnRzIGFuIGV4aXN0aW5nIGZpbGUK
LSAgYm9vbCBJc0ZpbGUoY29uc3QgUGF0aG5hbWUmIHBhdGhuYW1lKSBvdmVycmlkZTsKLQotICBi
b29sIEdldEZpbGVTaXplKGNvbnN0IFBhdGhuYW1lJiBwYXRoLCBzaXplX3QqIHNpemUpIG92ZXJy
aWRlOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHJ0YwotCi0jZW5kaWYgIC8vIFJUQ19CQVNFX1VO
SVhGSUxFU1lTVEVNX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0X3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tl
dF91bml0dGVzdC5jYwppbmRleCBkMmJmZjU0Njg4MzdiZDE2ZDkzMDM4MzFiNTg0MzZmYzM3YWQ3
NTdiLi5kNDRmNDZhNjVlNWMxNDgzZDU1Y2NkYzEwODJjM2Y1MzVkZmI5ZmMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0
dWFsc29ja2V0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRfdW5pdHRlc3QuY2MKQEAgLTEwNCw3
ICsxMDQsNyBAQCBzdHJ1Y3QgUmVjZWl2ZXIgOiBwdWJsaWMgTWVzc2FnZUhhbmRsZXIsIHB1Ymxp
YyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAgICBBU1NFUlRfRVEoc29j
a2V0LmdldCgpLCBzKTsKICAgICBBU1NFUlRfR0Uoc2l6ZSwgNFUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFs
c29ja2V0c2VydmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYwppbmRleCBhZTQwZDc4ODhmNTUxYmY3
YzVhYmNiODhiYTRhNzdmNjZjNDBiNzZhLi5iZmNlMGY1NDU0MWU5ZDE4MTZjNmQxMzJiNjZlMzcy
OTY0MTcwMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2
ZXIuY2MKQEAgLTUyNSw3ICs1MjUsNiBAQCBWaXJ0dWFsU29ja2V0U2VydmVyOjpWaXJ0dWFsU29j
a2V0U2VydmVyKCkgOiBWaXJ0dWFsU29ja2V0U2VydmVyKG51bGxwdHIpIHt9CiAKIFZpcnR1YWxT
b2NrZXRTZXJ2ZXI6OlZpcnR1YWxTb2NrZXRTZXJ2ZXIoRmFrZUNsb2NrKiBmYWtlX2Nsb2NrKQog
ICAgIDogZmFrZV9jbG9ja18oZmFrZV9jbG9jayksCi0gICAgICB3YWtldXBfKC8qbWFudWFsX3Jl
c2V0PSovZmFsc2UsIC8qaW5pdGlhbGx5X3NpZ25hbGVkPSovZmFsc2UpLAogICAgICAgbXNnX3F1
ZXVlXyhudWxscHRyKSwKICAgICAgIHN0b3Bfb25faWRsZV8oZmFsc2UpLAogICAgICAgbmV4dF9p
cHY0XyhrSW5pdGlhbE5leHRJUHY0KSwKQEAgLTEwMjcsOCArMTAyNiw5IEBAIHZvaWQgVmlydHVh
bFNvY2tldFNlcnZlcjo6VXBkYXRlRGVsYXlEaXN0cmlidXRpb24oKSB7CiAgIH0KIH0KIAorCiBz
dGF0aWMgZG91YmxlIE5vcm1hbChkb3VibGUgeCwgZG91YmxlIG1lYW4sIGRvdWJsZSBzdGRkZXYp
IHsKLSAgc3RhdGljIGNvbnN0IGRvdWJsZSBQSSA9IDQgKiBhdGFuKDEuMCk7CisgIHN0YXRpYyBk
b3VibGUgUEkgPSA0ICogYXRhbigxLjApOwogICBkb3VibGUgYSA9ICh4IC0gbWVhbikgKiAoeCAt
IG1lYW4pIC8gKDIgKiBzdGRkZXYgKiBzdGRkZXYpOwogICByZXR1cm4gZXhwKC1hKSAvIChzdGRk
ZXYgKiBzcXJ0KDIgKiBQSSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2Vha19wdHJfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93ZWFrX3B0cl91
bml0dGVzdC5jYwppbmRleCA5NTQxNzE4MzRlNjdiMjkwNDRlNjc0NDhiYjg4ZWY1MjQ5YjA3NGYy
Li42NmYyYjRkZjViMThmZDhmNjI5OWI1ODMzNGQ2MTk0YzI1YzU0YjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93ZWFrX3B0
cl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS93ZWFrX3B0cl91bml0dGVzdC5jYwpAQCAtMjAyLDcgKzIwMiw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUPgogc3RkOjp1bmlxdWVfcHRyPFQ+IE5ld09iamVjdENyZWF0ZWRPblRh
c2tRdWV1ZSgpIHsKICAgc3RkOjp1bmlxdWVfcHRyPFQ+IG9iajsKICAgVGFza1F1ZXVlIHF1ZXVl
KCJOZXdPYmplY3RDcmVhdGVkT25UYXNrUXVldWUiKTsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZh
bHNlKTsKKyAgRXZlbnQgZXZlbnQ7CiAgIHF1ZXVlLlBvc3RUYXNrKFsmZXZlbnQsICZvYmpdIHsK
ICAgICBvYmoucmVzZXQobmV3IFQoKSk7CiAgICAgZXZlbnQuU2V0KCk7CkBAIC0yMjksNyArMjI5
LDcgQEAgVEVTVChXZWFrUHRyVGVzdCwgV2Vha1B0ckluaXRpYXRlQW5kVXNlT25EaWZmZXJlbnRU
aHJlYWRzKSB7CiAgIC8vIENyZWF0ZSB3ZWFrIHB0ciBvbiBtYWluIHRocmVhZAogICBXZWFrUHRy
PFRhcmdldD4gd2Vha19wdHIgPSB0YXJnZXQtPmZhY3RvcnkuR2V0V2Vha1B0cigpOwogICBydGM6
OlRhc2tRdWV1ZSBxdWV1ZSgicXVldWUiKTsKLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxz
ZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgcXVldWUuUG9zdFRhc2soWyZdIHsKICAgICAvLyBE
ZXJlZmVyZW5jZSBhbmQgaW52YWxpZGUgd2Vha19wdHIgb24gYW5vdGhlciB0aHJlYWQuCiAgICAg
RVhQRUNUX0VRKHdlYWtfcHRyLmdldCgpLCB0YXJnZXQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2luMzIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4z
Mi5jYwppbmRleCBkODFkNjg1ZjE2YzBmMjhjMGRjZDNlOGE3NWVjN2M5ZWJkYThlMDEwLi5lMzQ4
MmUzMjM4NDQ4ZjZlNWYyNjE0ZTQ2NTk5NTZjOGIyYTVkMmNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMi5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4z
Mi5jYwpAQCAtNzIsOSArNzIsOSBAQCBjb25zdCBjaGFyKiBpbmV0X250b3BfdjQoY29uc3Qgdm9p
ZCogc3JjLCBjaGFyKiBkc3QsIHNvY2tsZW5fdCBzaXplKSB7CiAgIH0KICAgY29uc3Qgc3RydWN0
IGluX2FkZHIqIGFzX2luX2FkZHIgPQogICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1
Y3QgaW5fYWRkcio+KHNyYyk7Ci0gIHJ0Yzo6c3ByaW50Zm4oZHN0LCBzaXplLCAiJWQuJWQuJWQu
JWQiLCBhc19pbl9hZGRyLT5TX3VuLlNfdW5fYi5zX2IxLAotICAgICAgICAgICAgICAgIGFzX2lu
X2FkZHItPlNfdW4uU191bl9iLnNfYjIsIGFzX2luX2FkZHItPlNfdW4uU191bl9iLnNfYjMsCi0g
ICAgICAgICAgICAgICAgYXNfaW5fYWRkci0+U191bi5TX3VuX2Iuc19iNCk7CisgIHNucHJpbnRm
KGRzdCwgc2l6ZSwgIiVkLiVkLiVkLiVkIiwgYXNfaW5fYWRkci0+U191bi5TX3VuX2Iuc19iMSwK
KyAgICAgICAgICAgYXNfaW5fYWRkci0+U191bi5TX3VuX2Iuc19iMiwgYXNfaW5fYWRkci0+U191
bi5TX3VuX2Iuc19iMywKKyAgICAgICAgICAgYXNfaW5fYWRkci0+U191bi5TX3VuX2Iuc19iNCk7
CiAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBjb25zdCBjaGFyKiBpbmV0
X250b3BfdjYoY29uc3Qgdm9pZCogc3JjLCBjaGFyKiBkc3QsIHNvY2tsZW5fdCBzaXplKSB7CiAg
ICAgKmN1cnNvcisrID0gJzonOwogICAgICpjdXJzb3IrKyA9ICc6JzsKICAgICBpZiAobWF4cG9z
ID09IDQpIHsKLSAgICAgIGN1cnNvciArPSBydGM6OnNwcmludGZuKGN1cnNvciwgSU5FVDZfQURE
UlNUUkxFTiAtIDIsICJmZmZmOiIpOworICAgICAgY3Vyc29yICs9IHNucHJpbnRmKGN1cnNvciwg
SU5FVDZfQUREUlNUUkxFTiAtIDIsICJmZmZmOiIpOwogICAgIH0KICAgICBjb25zdCBzdHJ1Y3Qg
aW5fYWRkciogYXNfdjQgPQogICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBp
bl9hZGRyKj4oJihhc19zaG9ydHNbNl0pKTsKQEAgLTEzNiw4ICsxMzYsOCBAQCBjb25zdCBjaGFy
KiBpbmV0X250b3BfdjYoY29uc3Qgdm9pZCogc3JjLCBjaGFyKiBkc3QsIHNvY2tsZW5fdCBzaXpl
KSB7CiAgIH0gZWxzZSB7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBydW5fYXJyYXlfc2l6ZTsg
KytpKSB7CiAgICAgICBpZiAocnVucG9zW2ldID09IC0xKSB7Ci0gICAgICAgIGN1cnNvciArPSBy
dGM6OnNwcmludGZuKGN1cnNvciwgSU5FVDZfQUREUlNUUkxFTiAtIChjdXJzb3IgLSBkc3QpLCAi
JXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXR3b3JrVG9Ib3N0MTYoYXNf
c2hvcnRzW2ldKSk7CisgICAgICAgIGN1cnNvciArPSBzbnByaW50ZihjdXJzb3IsIElORVQ2X0FE
RFJTVFJMRU4gLSAoY3Vyc29yIC0gZHN0KSwgIiV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5ldHdvcmtUb0hvc3QxNihhc19zaG9ydHNbaV0pKTsKICAgICAgICAgaWYgKGkgIT0gNyAm
JiBydW5wb3NbaSArIDFdICE9IDEpIHsKICAgICAgICAgICAqY3Vyc29yKysgPSAnOic7CiAgICAg
ICAgIH0KQEAgLTIyNCw4ICsyMjQsOCBAQCBpbnQgaW5ldF9wdG9uX3Y2KGNvbnN0IGNoYXIqIHNy
Yywgdm9pZCogZHN0KSB7CiAgICAgICAqKHJlYWRjdXJzb3IgKyAyKSAhPSAwKSB7CiAgICAgLy8g
Q2hlY2sgZm9yIHBlcmlvZHMsIHdoaWNoIHdlJ2xsIHRha2UgYXMgYSBzaWduIG9mIHY0IGFkZHJl
c3Nlcy4KICAgICBjb25zdCBjaGFyKiBhZGRyc3RhcnQgPSByZWFkY3Vyc29yICsgMjsKLSAgICBp
ZiAocnRjOjpzdHJjaHIoYWRkcnN0YXJ0LCAiLiIpKSB7Ci0gICAgICBjb25zdCBjaGFyKiBjb2xv
biA9IHJ0Yzo6c3RyY2hyKGFkZHJzdGFydCwgIjo6Iik7CisgICAgaWYgKHN0cmNocihhZGRyc3Rh
cnQsICcuJykpIHsKKyAgICAgIGNvbnN0IGNoYXIqIGNvbG9uID0gc3RyY2hyKGFkZHJzdGFydCwg
JzonKTsKICAgICAgIGlmIChjb2xvbikgewogICAgICAgICB1aW50MTZfdCBhX3Nob3J0OwogICAg
ICAgICBpbnQgYnl0ZXNyZWFkID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dpbjMyZmlsZXN5c3RlbS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dpbjMyZmlsZXN5
c3RlbS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwMGU1ZTYyOWI4YTZmYzUw
N2E2MjJmZmE3ZWQ1ZDkyYzZjZDkzOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS93aW4zMmZpbGVzeXN0ZW0uY2MKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAyMDA0IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAot
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAicnRjX2Jhc2Uvd2luMzJmaWxlc3lzdGVt
LmgiCi0KLSNpbmNsdWRlIDxzaGVsbGFwaS5oPgotI2luY2x1ZGUgPHNobG9iai5oPgotI2luY2x1
ZGUgPHRjaGFyLmg+Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvd2luMzIuaCIKLQotI2luY2x1ZGUgPG1l
bW9yeT4KLQotI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2ZpbGV1dGlscy5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL3BhdGh1dGlscy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCi0KLS8vIEluIHNldmVyYWwgcGxhY2VzIGlu
IHRoaXMgZmlsZSwgd2UgdGVzdCB0aGUgaW50ZWdyaXR5IGxldmVsIG9mIHRoZSBwcm9jZXNzCi0v
LyBiZWZvcmUgY2FsbGluZyBHZXRMb25nUGF0aE5hbWUuIFdlIGRvIHRoaXMgYmVjYXVzZSBjYWxs
aW5nIEdldExvbmdQYXRoTmFtZQotLy8gd2hlbiBydW5uaW5nIHVuZGVyIHByb3RlY3RlZCBtb2Rl
IElFIChhIGxvdyBpbnRlZ3JpdHkgcHJvY2VzcykgY2FuIHJlc3VsdCBpbgotLy8gYSB2aXJ0dWFs
aXplZCBwYXRoIGJlaW5nIHJldHVybmVkLCB3aGljaCBpcyB3cm9uZyBpZiB5b3Ugb25seSBwbGFu
IHRvIHJlYWQuCi0vLyBUT0RPOiBXYWl0aW5nIHRvIGhlYXIgYmFjayBmcm9tIElFIHRlYW0gb24g
d2hldGhlciB0aGlzIGlzIHRoZQotLy8gYmVzdCBhcHByb2FjaDsgSUVJc1Byb3RlY3RlZE1vZGVQ
cm9jZXNzIGlzIGFub3RoZXIgcG9zc2libGUgc29sdXRpb24uCi0KLW5hbWVzcGFjZSBydGMgewot
Ci1ib29sIFdpbjMyRmlsZXN5c3RlbTo6RGVsZXRlRmlsZShjb25zdCBQYXRobmFtZSYgZmlsZW5h
bWUpIHsKLSAgUlRDX0xPRyhMU19JTkZPKSA8PCAiRGVsZXRpbmcgZmlsZSAiIDw8IGZpbGVuYW1l
LnBhdGhuYW1lKCk7Ci0gIGlmICghSXNGaWxlKGZpbGVuYW1lKSkgewotICAgIFJUQ19EQ0hFQ0so
SXNGaWxlKGZpbGVuYW1lKSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHJldHVybiA6OkRl
bGV0ZUZpbGUoVG9VdGYxNihmaWxlbmFtZS5wYXRobmFtZSgpKS5jX3N0cigpKSAhPSAwOwotfQot
Ci1ib29sIFdpbjMyRmlsZXN5c3RlbTo6TW92ZUZpbGUoY29uc3QgUGF0aG5hbWUmIG9sZF9wYXRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhdGhuYW1lJiBuZXdfcGF0
aCkgewotICBpZiAoIUlzRmlsZShvbGRfcGF0aCkpIHsKLSAgICBSVENfRENIRUNLKElzRmlsZShv
bGRfcGF0aCkpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBSVENfTE9HKExTX0lORk8pIDw8
ICJNb3ZpbmcgIiA8PCBvbGRfcGF0aC5wYXRobmFtZSgpIDw8ICIgdG8gIgotICAgICAgICAgICAg
ICAgICAgIDw8IG5ld19wYXRoLnBhdGhuYW1lKCk7Ci0gIHJldHVybiA6Ok1vdmVGaWxlKFRvVXRm
MTYob2xkX3BhdGgucGF0aG5hbWUoKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgVG9V
dGYxNihuZXdfcGF0aC5wYXRobmFtZSgpKS5jX3N0cigpKSAhPSAwOwotfQotCi1ib29sIFdpbjMy
RmlsZXN5c3RlbTo6SXNGb2xkZXIoY29uc3QgUGF0aG5hbWUmIHBhdGgpIHsKLSAgV0lOMzJfRklM
RV9BVFRSSUJVVEVfREFUQSBkYXRhID0gezB9OwotICBpZiAoMCA9PSA6OkdldEZpbGVBdHRyaWJ1
dGVzRXgoVG9VdGYxNihwYXRoLnBhdGhuYW1lKCkpLmNfc3RyKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZkYXRhKSkKLSAgICByZXR1
cm4gZmFsc2U7Ci0gIHJldHVybiAoZGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJV
VEVfRElSRUNUT1JZKSA9PQotICAgICAgICAgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZOwotfQot
Ci1ib29sIFdpbjMyRmlsZXN5c3RlbTo6SXNGaWxlKGNvbnN0IFBhdGhuYW1lJiBwYXRoKSB7Ci0g
IFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgZGF0YSA9IHswfTsKLSAgaWYgKDAgPT0gOjpHZXRG
aWxlQXR0cmlidXRlc0V4KFRvVXRmMTYocGF0aC5wYXRobmFtZSgpKS5jX3N0cigpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmZGF0YSkp
Ci0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gKGRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJ
TEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgPT0gMDsKLX0KLQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06
OkdldEZpbGVTaXplKGNvbnN0IFBhdGhuYW1lJiBwYXRobmFtZSwgc2l6ZV90KiBzaXplKSB7Ci0g
IFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgZGF0YSA9IHswfTsKLSAgaWYgKDo6R2V0RmlsZUF0
dHJpYnV0ZXNFeChUb1V0ZjE2KHBhdGhuYW1lLnBhdGhuYW1lKCkpLmNfc3RyKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmZGF0YSkgPT0gMCkK
LSAgICByZXR1cm4gZmFsc2U7Ci0gICpzaXplID0gZGF0YS5uRmlsZVNpemVMb3c7Ci0gIHJldHVy
biB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMmZpbGVzeXN0ZW0u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dp
bjMyZmlsZXN5c3RlbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjY3NDFlNjdi
ODcwNDhlMTgxZmNmMDExMzIwOGFmNWZhZDg3M2RhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3dpbjMyZmlsZXN5c3RlbS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDEg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBSVENfQkFTRV9XSU4zMkZJTEVT
WVNURU1fSF8KLSNkZWZpbmUgUlRDX0JBU0VfV0lOMzJGSUxFU1lTVEVNX0hfCi0KLSNpbmNsdWRl
ICJmaWxldXRpbHMuaCIKLQotbmFtZXNwYWNlIHJ0YyB7Ci0KLWNsYXNzIFdpbjMyRmlsZXN5c3Rl
bSA6IHB1YmxpYyBGaWxlc3lzdGVtSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC8vIFRoaXMgd2ls
bCBhdHRlbXB0IHRvIGRlbGV0ZSB0aGUgcGF0aCBsb2NhdGVkIGF0IGZpbGVuYW1lLgotICAvLyBJ
ZiB0aGUgcGF0aCBwb2ludHMgdG8gYSBmb2xkZXIsIGl0IHdpbGwgZmFpbCB3aXRoIFZFUklGWQot
ICBib29sIERlbGV0ZUZpbGUoY29uc3QgUGF0aG5hbWUmIGZpbGVuYW1lKSBvdmVycmlkZTsKLQot
ICAvLyBUaGlzIG1vdmVzIGEgZmlsZSBmcm9tIG9sZF9wYXRoIHRvIG5ld19wYXRoLiBJZiB0aGUg
bmV3IHBhdGggaXMgb24gYQotICAvLyBkaWZmZXJlbnQgdm9sdW1lIHRoYW4gdGhlIG9sZCwgaXQg
d2lsbCBhdHRlbXB0IHRvIGNvcHkgYW5kIHRoZW4gZGVsZXRlCi0gIC8vIHRoZSBmb2xkZXIKLSAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBmaWxlIGlzIHN1Y2Nlc3NmdWxseSBtb3ZlZAotICBib29s
IE1vdmVGaWxlKGNvbnN0IFBhdGhuYW1lJiBvbGRfcGF0aCwgY29uc3QgUGF0aG5hbWUmIG5ld19w
YXRoKSBvdmVycmlkZTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWYgYSBwYXRobmFtZSBpcyBhIGRp
cmVjdG9yeQotICBib29sIElzRm9sZGVyKGNvbnN0IFBhdGhuYW1lJiBwYXRobmFtZSkgb3ZlcnJp
ZGU7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIGEgZmlsZSBleGlzdHMgYXQgcGF0aAotICBib29s
IElzRmlsZShjb25zdCBQYXRobmFtZSYgcGF0aCkgb3ZlcnJpZGU7Ci0KLSAgYm9vbCBHZXRGaWxl
U2l6ZShjb25zdCBQYXRobmFtZSYgcGF0aCwgc2l6ZV90KiBzaXplKSBvdmVycmlkZTsKLX07Ci0K
LX0gIC8vIG5hbWVzcGFjZSBydGMKLQotI2VuZGlmICAvLyBSVENfQkFTRV9XSU4zMkZJTEVTWVNU
RU1fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3dpbjMyc29ja2V0c2VydmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2luMzJzb2NrZXRzZXJ2ZXIuY2MKaW5kZXgg
Y2FiNzUxYTYzMTczYWJmZGM5NzlmZWNhMmEzODA2Y2Q3NjFmZjcyMy4uMjMwZjNlZDQ2ZjkwNTdl
OGVkNjc4OGVlNjI4OWZmNmVhY2FlMTg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2luMzJzb2NrZXRzZXJ2ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2lu
MzJzb2NrZXRzZXJ2ZXIuY2MKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9i
eXRlb3JkZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiICAvLyBGb3Ig
VGltZSwgVGltZVNpbmNlCiAjaW5jbHVkZSAicnRjX2Jhc2Uvd2luMzJ3aW5kb3cuaCIKIAogbmFt
ZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS96ZXJvX21lbW9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvemVyb19tZW1vcnkuaAppbmRleCBjYjQ2NDZj
MWZlNGIzNTlmNzFhY2JhN2NkMDgwOGY0OTRlNDYzNGM5Li5mNjk3YmNiZDZiODFjNzYyYjE1Njdi
YmNlNmM1NjE1ZjI1ZTMyZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS96ZXJvX21lbW9yeS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3plcm9fbWVtb3J5LmgKQEAg
LTExLDYgKzExLDcgQEAKICNpZm5kZWYgUlRDX0JBU0VfWkVST19NRU1PUllfSF8KICNkZWZpbmUg
UlRDX0JBU0VfWkVST19NRU1PUllfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUg
PHR5cGVfdHJhaXRzPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9CVUlM
RC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29s
cy9CVUlMRC5nbgppbmRleCAyNTJhZWM0NTQ3ZjQzYTEyY2QxYWU1OTA5MDg0MDRjNjFkODZmNzMy
Li41MjE0YmMzYmQwZjI0ZmJmOTQyZGNiZDBiNGE5MmFmN2UzMDgxNjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvQlVJTEQu
Z24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rv
b2xzL0JVSUxELmduCkBAIC0yNSw5ICsyNSw2IEBAIGdyb3VwKCJydGNfdG9vbHMiKSB7CiAgICAg
ICAiOnBzbnJfc3NpbV9hbmFseXplciIsCiAgICAgICAiOnJnYmFfdG9faTQyMF9jb252ZXJ0ZXIi
LAogICAgIF0KLSAgICBpZiAocnRjX2luY2x1ZGVfaW50ZXJuYWxfYXVkaW9fZGV2aWNlKSB7Ci0g
ICAgICBkZXBzICs9IFsgIjpmb3JjZV9taWNfdm9sdW1lX21heCIgXQotICAgIH0KICAgICBpZiAo
cnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgICAgZGVwcyArPSBbICI6Y2hhcnRfcHJvdG8iIF0K
ICAgICB9CkBAIC0zOSw4ICszNiwxMCBAQCBncm91cCgicnRjX3Rvb2xzIikgewogICAgICAgIjp0
b29sc191bml0dGVzdHMiLAogICAgIF0KICAgICBpZiAocnRjX2VuYWJsZV9wcm90b2J1Zikgewor
ICAgICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtKSB7CisgICAgICAgIGRlcHMgKz0gWyAiOmV2
ZW50X2xvZ192aXN1YWxpemVyIiBdCisgICAgICB9CiAgICAgICBkZXBzICs9IFsKLSAgICAgICAg
IjpldmVudF9sb2dfdmlzdWFsaXplciIsCiAgICAgICAgICI6cnRwX2FuYWx5emVyIiwKICAgICAg
ICAgIjp1bnBhY2tfYWVjZHVtcCIsCiAgICAgICAgICJuZXR3b3JrX3Rlc3RlciIsCkBAIC04OSw2
ICs4OCwxMiBAQCBydGNfc3RhdGljX2xpYnJhcnkoInZpZGVvX2ZpbGVfd3JpdGVyIikgewogCiBy
dGNfc3RhdGljX2xpYnJhcnkoInZpZGVvX3F1YWxpdHlfYW5hbHlzaXMiKSB7CiAgIHNvdXJjZXMg
PSBbCisgICAgImZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzLmNjIiwKKyAgICAi
ZnJhbWVfYW5hbHl6ZXIvbGluZWFyX2xlYXN0X3NxdWFyZXMuaCIsCisgICAgImZyYW1lX2FuYWx5
emVyL3ZpZGVvX2NvbG9yX2FsaWduZXIuY2MiLAorICAgICJmcmFtZV9hbmFseXplci92aWRlb19j
b2xvcl9hbGlnbmVyLmgiLAorICAgICJmcmFtZV9hbmFseXplci92aWRlb19nZW9tZXRyeV9hbGln
bmVyLmNjIiwKKyAgICAiZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lci5oIiwK
ICAgICAiZnJhbWVfYW5hbHl6ZXIvdmlkZW9fcXVhbGl0eV9hbmFseXNpcy5jYyIsCiAgICAgImZy
YW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuaCIsCiAgICAgImZyYW1lX2FuYWx5
emVyL3ZpZGVvX3RlbXBvcmFsX2FsaWduZXIuY2MiLApAQCAtOTYsNiArMTAxLDggQEAgcnRjX3N0
YXRpY19saWJyYXJ5KCJ2aWRlb19xdWFsaXR5X2FuYWx5c2lzIikgewogICBdCiAgIGRlcHMgPSBb
CiAgICAgIjp2aWRlb19maWxlX3JlYWRlciIsCisgICAgIi4uL2FwaTphcnJheV92aWV3IiwKKyAg
ICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2Zy
YW1lX2k0MjAiLAogICAgICIuLi9jb21tb25fdmlkZW8iLAogICAgICIuLi9ydGNfYmFzZTpjaGVj
a3MiLApAQCAtMjExLDIwICsyMTgsNiBAQCBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAg
ICBdCiAgIH0KIAotICAjIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBidWlsZCB0aGlzIHRvb2wg
d2l0aG91dCB0aGUgQURNIGVuYWJsZWQuCi0gIGlmIChydGNfaW5jbHVkZV9pbnRlcm5hbF9hdWRp
b19kZXZpY2UpIHsKLSAgICBydGNfZXhlY3V0YWJsZSgiZm9yY2VfbWljX3ZvbHVtZV9tYXgiKSB7
Ci0gICAgICBzb3VyY2VzID0gWwotICAgICAgICAiZm9yY2VfbWljX3ZvbHVtZV9tYXgvZm9yY2Vf
bWljX3ZvbHVtZV9tYXguY2MiLAotICAgICAgXQotCi0gICAgICBkZXBzID0gWwotICAgICAgICAi
Li4vbW9kdWxlcy9hdWRpb19kZXZpY2UiLAotICAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19kZXZp
Y2U6YXVkaW9fZGV2aWNlX2ltcGwiLAotICAgICAgXQotICAgIH0KLSAgfQotCiAgIGlmIChydGNf
ZW5hYmxlX3Byb3RvYnVmKSB7CiAgICAgcHJvdG9fbGlicmFyeSgiY2hhcnRfcHJvdG8iKSB7CiAg
ICAgICBzb3VyY2VzID0gWwpAQCAtMjcyLDEwICsyNjUsMTMgQEAgaWYgKCFidWlsZF93aXRoX2No
cm9taXVtKSB7CiAKICAgICAgICAgIyBUT0RPKGt3aWJlcmcpOiBSZW1vdmUgdGhpcyBkZXBlbmRl
bmN5LgogICAgICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKKyAg
ICAgICAgIi4uL2FwaS90cmFuc3BvcnQ6Z29vZ19jYyIsCiAgICAgICAgICIuLi9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlciIsCiAgICAgICAgICIuLi9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjOmRlbGF5X2Jhc2VkX2J3ZSIsCiAgICAgICAgICIuLi9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjOmVzdGltYXRvcnMiLAorICAgICAgICAiLi4vbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwOnRyYW5zcG9ydF9mZWVkYmFjayIsCiAgICAg
ICAgICIuLi9tb2R1bGVzL3BhY2luZyIsCisgICAgICAgICIuLi9tb2R1bGVzL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvciIsCiAgICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwIiwKICAgICAgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgICAgICBdCkBAIC0yODQs
NyArMjgwLDcgQEAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtKSB7CiB9CiAKIGlmIChydGNfaW5j
bHVkZV90ZXN0cykgewotICBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgeworICBpZiAocnRjX2Vu
YWJsZV9wcm90b2J1ZiAmJiAhYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICAgIHJ0Y19leGVjdXRh
YmxlKCJldmVudF9sb2dfdmlzdWFsaXplciIpIHsKICAgICAgIHRlc3Rvbmx5ID0gdHJ1ZQogICAg
ICAgc291cmNlcyA9IFsKQEAgLTM0Nyw3ICszNDMsMTAgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3Rz
KSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAKICAgICBzb3VyY2VzID0gWworICAgICAgImZyYW1l
X2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzX3VuaXR0ZXN0LmNjIiwKICAgICAgICJmcmFt
ZV9hbmFseXplci9yZWZlcmVuY2VfbGVzc192aWRlb19hbmFseXNpc191bml0dGVzdC5jYyIsCisg
ICAgICAiZnJhbWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lcl91bml0dGVzdC5jYyIsCisg
ICAgICAiZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lcl91bml0dGVzdC5jYyIs
CiAgICAgICAiZnJhbWVfYW5hbHl6ZXIvdmlkZW9fcXVhbGl0eV9hbmFseXNpc191bml0dGVzdC5j
YyIsCiAgICAgICAiZnJhbWVfYW5hbHl6ZXIvdmlkZW9fdGVtcG9yYWxfYWxpZ25lcl91bml0dGVz
dC5jYyIsCiAgICAgICAiZnJhbWVfZWRpdGluZy9mcmFtZV9lZGl0aW5nX3VuaXR0ZXN0LmNjIiwK
QEAgLTM2NCw4ICszNjMsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKIAogICAgIGRlcHMg
PSBbCiAgICAgICAiOmNvbW1hbmRfbGluZV9wYXJzZXIiLAotICAgICAgIjpmcmFtZV9lZGl0aW5n
X2xpYiIsCi0gICAgICAiOnJlZmVyZW5jZV9sZXNzX3ZpZGVvX2FuYWx5c2lzX2xpYiIsCiAgICAg
ICAiOnZpZGVvX2ZpbGVfcmVhZGVyIiwKICAgICAgICI6dmlkZW9fZmlsZV93cml0ZXIiLAogICAg
ICAgIjp2aWRlb19xdWFsaXR5X2FuYWx5c2lzIiwKQEAgLTM3NCwxMCArMzcxLDE5IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgICAi
Li4vdGVzdDpmaWxldXRpbHMiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIu
Li90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICAgIi8vdGhpcmRfcGFy
dHkvbGlieXV2IiwKICAgICBdCiAKKyAgICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKKyAg
ICAgIGRlcHMgKz0gWworICAgICAgICAiOmZyYW1lX2VkaXRpbmdfbGliIiwKKyAgICAgICAgIjpy
ZWZlcmVuY2VfbGVzc192aWRlb19hbmFseXNpc19saWIiLAorICAgICAgXQorICAgIH0KKwogICAg
IGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAgICAgICBkZXBzICs9IFsgIm5ldHdvcmtfdGVz
dGVyOm5ldHdvcmtfdGVzdGVyX3VuaXR0ZXN0cyIgXQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ERVBTIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL0RFUFMKaW5k
ZXggZDliMTYyY2QxNWZiMmM3MDQ1OTdiYWFkMWFhMjBmNGZkM2I4OTJjZS4uNDAxNWFlMjY1YWM4
ZTQ5MjA4Nzc0ZTdiOTZiYjFmYWJhYjg0ZDU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL0RFUFMKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL0RFUFMKQEAgLTcsNiAr
Nyw3IEBAIGluY2x1ZGVfcnVsZXMgPSBbCiAgICIrbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
dG9vbHMiLAogICAiK21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZyIsCiAgICIrbW9kdWxlcy9iaXRy
YXRlX2NvbnRyb2xsZXIiLAorICAiK21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yIiwK
ICAgIittb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlciIsCiAgICIrbW9kdWxlcy9wYWNpbmci
LAogICAiK21vZHVsZXMvcnRwX3J0Y3AiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9PV05FUlMKaW5kZXggYzFiODdj
OWJkY2EzN2UwODgxZDAzYmM2ODFiMzBlN2JlNzg2NzBiOC4uNzczODVmY2QzMTYxNzdhN2MxYzU2
NTg0ZTFiMTQ5MjMwNWFkYWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvT1dORVJTCkBAIC0zLDMgKzMsNiBA
QCBwZXItZmlsZSBCVUlMRC5nbj0qCiBwaG9nbHVuZEB3ZWJydGMub3JnCiBvcHJ5cGluQHdlYnJ0
Yy5vcmcKIG1ib25hZGVpQHdlYnJ0Yy5vcmcKKworIyBGb3IgdmlkZW8gYW5hbHlzaXMgdG9vbHMK
K21hZ2plZEB3ZWJydGMub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYWdjL2FjdGl2aXR5X21ldHJpYy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9hZ2MvYWN0aXZp
dHlfbWV0cmljLmNjCmluZGV4IGI0ZWQzZmFjYjM1OWI1YTgxYmE4M2IzZDRlNTJmY2E3NTM0Y2Qz
ZmEuLjliMjI3NmYxNmYxZjVlMjc1MzZmOTU4ZDlkOWU5NzJmODU5OWVlNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9hZ2Mv
YWN0aXZpdHlfbWV0cmljLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y190b29scy9hZ2MvYWN0aXZpdHlfbWV0cmljLmNjCkBAIC0zMCwzMiArMzAs
MzQgQEAKIHN0YXRpYyBjb25zdCBpbnQga0FnY0FuYWxXaW5kb3dTYW1wbGVzID0gMTAwOwogc3Rh
dGljIGNvbnN0IGZsb2F0IGtEZWZhdWx0QWN0aXZpdHlUaHJlc2hvbGQgPSAwLjNmOwogCi1ERUZJ
TkVfYm9vbChzdGFuZGFsb25lX3ZhZCwgdHJ1ZSwgImVuYWJsZSBzdGFuZC1hbG9uZSBWQUQiKTsK
LURFRklORV9zdHJpbmcodHJ1ZV92YWQsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAg
ICAibmFtZSBvZiBhIGZpbGUgY29udGFpbmluZyB0cnVlIFZBRCBpbiAnaW50JyIKLSAgICAgICAg
ICAgICAgIiBmb3JtYXQiKTsKLURFRklORV9zdHJpbmcodmlkZW9fdmFkLAotICAgICAgICAgICAg
ICAiIiwKLSAgICAgICAgICAgICAgIm5hbWUgb2YgYSBmaWxlIGNvbnRhaW5pbmcgdmlkZW8gVkFE
IChhY3Rpdml0eSIKLSAgICAgICAgICAgICAgIiBwcm9iYWJpbGl0aWVzKSBpbiBkb3VibGUgZm9y
bWF0LiBPbmUgYWN0aXZpdHkgcGVyIDEwbXMgaXMiCi0gICAgICAgICAgICAgICIgcmVxdWlyZWQu
IElmIG5vIGZpbGUgaXMgZ2l2ZW4gdGhlIHZpZGVvIGluZm9ybWF0aW9uIGlzIG5vdCIKLSAgICAg
ICAgICAgICAgIiBpbmNvcnBvcmF0ZWQuIE5lZ2F0aXZlIGFjdGl2aXR5IGlzIGludGVycHJldGVk
IGFzIHZpZGVvIGlzIgotICAgICAgICAgICAgICAiIG5vdCBhZGFwdGVkIGFuZCB0aGUgc3RhdGlz
dGljcyBhcmUgbm90IGNvbXB1dGVkIGR1cmluZyIKLSAgICAgICAgICAgICAgIiB0aGUgbGVhcm5p
bmcgcGhhc2UuIE5vdGUgdGhhdCB0aGUgbmVnYXRpdmUgdmlkZW8gYWN0aXZpdGllcyIKLSAgICAg
ICAgICAgICAgIiBhcmUgT05MWSBhbGxvd2VkIGF0IHRoZSBiZWdpbm5pbmcuIik7Ci1ERUZJTkVf
c3RyaW5nKHJlc3VsdCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJuYW1lIG9m
IGEgZmlsZSB0byB3cml0ZSB0aGUgcmVzdWx0cy4gVGhlIHJlc3VsdHMiCi0gICAgICAgICAgICAg
ICIgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLiBUaGlzIGlzIG9wdGlv
bmFsLiIpOwotREVGSU5FX3N0cmluZyhhdWRpb19jb250ZW50LAotICAgICAgICAgICAgICAiIiwK
LSAgICAgICAgICAgICAgIm5hbWUgb2YgYSBmaWxlIHdoZXJlIGF1ZGlvIGNvbnRlbnQgaXMgd3Jp
dHRlbiIKLSAgICAgICAgICAgICAgIiB0bywgaW4gZG91YmxlIGZvcm1hdC4iKTsKLURFRklORV9m
bG9hdChhY3Rpdml0eV90aHJlc2hvbGQsCi0gICAgICAgICAgICAga0RlZmF1bHRBY3Rpdml0eVRo
cmVzaG9sZCwKLSAgICAgICAgICAgICAiQWN0aXZpdHkgdGhyZXNob2xkIik7Ci1ERUZJTkVfYm9v
bChoZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfYm9v
bChzdGFuZGFsb25lX3ZhZCwgdHJ1ZSwgImVuYWJsZSBzdGFuZC1hbG9uZSBWQUQiKTsKK1dFQlJU
Q19ERUZJTkVfc3RyaW5nKHRydWVfdmFkLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAg
ICAgICAgICAgICAgICAgICAibmFtZSBvZiBhIGZpbGUgY29udGFpbmluZyB0cnVlIFZBRCBpbiAn
aW50JyIKKyAgICAgICAgICAgICAgICAgICAgICIgZm9ybWF0Iik7CitXRUJSVENfREVGSU5FX3N0
cmluZygKKyAgICB2aWRlb192YWQsCisgICAgIiIsCisgICAgIm5hbWUgb2YgYSBmaWxlIGNvbnRh
aW5pbmcgdmlkZW8gVkFEIChhY3Rpdml0eSIKKyAgICAiIHByb2JhYmlsaXRpZXMpIGluIGRvdWJs
ZSBmb3JtYXQuIE9uZSBhY3Rpdml0eSBwZXIgMTBtcyBpcyIKKyAgICAiIHJlcXVpcmVkLiBJZiBu
byBmaWxlIGlzIGdpdmVuIHRoZSB2aWRlbyBpbmZvcm1hdGlvbiBpcyBub3QiCisgICAgIiBpbmNv
cnBvcmF0ZWQuIE5lZ2F0aXZlIGFjdGl2aXR5IGlzIGludGVycHJldGVkIGFzIHZpZGVvIGlzIgor
ICAgICIgbm90IGFkYXB0ZWQgYW5kIHRoZSBzdGF0aXN0aWNzIGFyZSBub3QgY29tcHV0ZWQgZHVy
aW5nIgorICAgICIgdGhlIGxlYXJuaW5nIHBoYXNlLiBOb3RlIHRoYXQgdGhlIG5lZ2F0aXZlIHZp
ZGVvIGFjdGl2aXRpZXMiCisgICAgIiBhcmUgT05MWSBhbGxvd2VkIGF0IHRoZSBiZWdpbm5pbmcu
Iik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICByZXN1bHQsCisgICAgIiIsCisgICAgIm5h
bWUgb2YgYSBmaWxlIHRvIHdyaXRlIHRoZSByZXN1bHRzLiBUaGUgcmVzdWx0cyIKKyAgICAiIHdp
bGwgYmUgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4gVGhpcyBpcyBvcHRpb25hbC4i
KTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGF1ZGlvX2NvbnRlbnQsCisgICAgICAgICAgICAgICAg
ICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJuYW1lIG9mIGEgZmlsZSB3aGVyZSBhdWRp
byBjb250ZW50IGlzIHdyaXR0ZW4iCisgICAgICAgICAgICAgICAgICAgICAiIHRvLCBpbiBkb3Vi
bGUgZm9ybWF0LiIpOworV0VCUlRDX0RFRklORV9mbG9hdChhY3Rpdml0eV90aHJlc2hvbGQsCisg
ICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0QWN0aXZpdHlUaHJlc2hvbGQsCisgICAgICAgICAg
ICAgICAgICAgICJBY3Rpdml0eSB0aHJlc2hvbGQiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChoZWxw
LCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKTsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y190b29scy9iYXJjb2RlX3Rvb2xzL0RFUFMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9ERVBTCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkMDMyNWE2NWFhMWUzNDQ5OTAxMjBjZjIyZjJkMzRhMjM4MDhlMjA1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xz
L0RFUFMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0jIFRoaXMgaXMgdHJpbW1lZCBk
b3duIHZlcnNpb24gb2YgdGhlIG1haW4gdG9vbHMgREVQUyBmaWxlIHdoaWNoIGlzIHRvIGJlIHVz
ZWQKLSMgaW4gQ2hyb21pdW1zIFB5QXV0byBXZWJSVEMgdmlkZW8gcXVhbGl0eSBtZWFzdXJlbWVu
dCB0ZXN0LiBXZSB3aWxsIG9ubHkKLSMgbmVlZCB0aGUgWnhpbmcgZGVwZW5kZW5jaWVzIGFzIHdl
IG9ubHkgdXNlIHRoZSBiYXJjb2RlIHRvb2xzIGluIHRoaXMgdGVzdC4KLQotZGVwcyA9IHsKLSAg
IyBVc2VkIGJ5IGJhcmNvZGVfdG9vbHMKLSAgImJhcmNvZGVfdG9vbHMvdGhpcmRfcGFydHkvenhp
bmcvY29yZSI6Ci0gICAgImh0dHA6Ly96eGluZy5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvY29y
ZUAyMzQ5IiwKLQotICAjIFVzZWQgYnkgYmFyY29kZV90b29scwotICAiYmFyY29kZV90b29scy90
aGlyZF9wYXJ0eS96eGluZy9qYXZhc2UiOgotICAgICJodHRwOi8venhpbmcuZ29vZ2xlY29kZS5j
b20vc3ZuL3RydW5rL2phdmFzZUAyMzQ5IiwKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL1JFQURN
RSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9i
YXJjb2RlX3Rvb2xzL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIzZTc5
ODA2NGRlZjIyYzk5ZDY2ODM4M2ZiZDhkZGNjYzQzNTc2OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9SRUFETUUKKysrIC9kZXYvbnVsbApA
QCAtMSwzNCArMCwwIEBACi1UaGlzIGZpbGUgZXhwbGFpbnMgaG93IHRvIGdldCB0aGUgZGVwZW5k
ZW5jaWVzIG5lZWRlZCBmb3IgdGhlIGJhcmNvZGUgdG9vbHMuCi0KLWJhcmNvZGVfZW5jb2Rlci5w
eQotPT09PT09PT09PT09PT09PT09Ci1UaGlzIHNjcmlwdCBkZXBlbmRzIG9uOgotKiBaeGluZyAo
SmF2YSB2ZXJzaW9uKQotKiBBbnQgKG11c3QgYmUgaW5zdGFsbGVkIG1hbnVhbGx5KQotKiBKYXZh
Ci0KLVRvIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgWnhpbmcgZm9yIHRoZSBlbmNvZGVyIHNjcmlw
dCwgY2hlY2tvdXQgdGhpcyBkaXJlY3RvcnkKLWFzIGEgc2VwYXJhdGUgZ2NsaWVudCBzb2x1dGlv
biwgbGlrZSB0aGlzOgotZ2NsaWVudCBjb25maWcgaHR0cDovL3dlYnJ0Yy5nb29nbGVjb2RlLmNv
bS9zdm4vdHJ1bmsvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzCi1nY2xpZW50IHN5bmMK
LVRoZW4gdGhlIFp4aW5nIEphdmEgc291cmNlIGNvZGUgd2lsbCBiZSBwdXQgaW4gdGhpcmRfcGFy
dHkvenhpbmcuCi0KLUluIG9yZGVyIHRvIHJ1biBiYXJjb2RlX2VuY29kZXIucHkgeW91IHRoZW4g
bmVlZCB0byBidWlsZDoKLSogenhpbmcvY29yZS9jb3JlLmphcgotKiB6eGluZy9qYXZhc2UvamF2
YXNlLmphcgotVGhlc2UgYXJlIGNvbXBpbGVkIHVzaW5nIEFudCBieSBydW5uaW5nIGJ1aWxkX3p4
aW5nLnB5OgotcHl0aG9uIGJ1aWxkX3p4aW5nLnB5Ci0KLUZvciBtb3JlIGluZm8gYWJvdXQgWnhp
bmcsIHNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3p4aW5nLwotCi0KLWJhcmNvZGVfZGVj
b2Rlci5weQotPT09PT09PT09PT09PT09PT09Ci1UaGlzIHNjcmlwdCBkZXBlbmRzIG9uOgotKiBa
eGluZyAoQysrIHZlcnNpb24pLiBZb3UgbmVlZCB0byBjaGVja291dCBmcm9tIFN1YnZlcnNpb24g
YW5kIGJ1aWxkIHRoZSBsaWJzCi0gIGFuZCB6eGluZyBTQ29ucyB0YXJnZXRzLiBTVk4gVVJMOiBo
dHRwOi8venhpbmcuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcAotKiBGRk1QRUcgZm1wZWcg
MC4xMS4xCi0KLVRoZXNlIGRlcGVuZGVuY2llcyBtdXN0IGJlIHByZWNvbXBpbGVkIHNlcGFyYXRl
bHkgYmVmb3JlIHJ1bm5pbmcgdGhlIHNjcmlwdC4KLU1ha2Ugc3VyZSB0byBhZGQgRkZNUEVHIHRv
IHRoZSBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBwcm92aWRlIHRoZSBwYXRoCi10byB0
aGUgenhpbmcgZXhlY3V0YWJsZSB1c2luZyB0aGUgbWFuZGF0b3J5IGNvbW1hbmQgbGluZSBmbGFn
IHRvIHRoZSBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9iYXJjb2RlX2RlY29kZXIucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFy
Y29kZV90b29scy9iYXJjb2RlX2RlY29kZXIucHkKaW5kZXggMDc4ZTQ3ZjFiYWM3MjQzMDc5Mzll
MzhlZjg0Njg3OGUwZWIxNGJjZS4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhj
NTM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvYmFyY29kZV9kZWNvZGVyLnB5CisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rv
b2xzL2JhcmNvZGVfZGVjb2Rlci5weQpAQCAtMSwyOTUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jIENvcHlyaWdodCAoYykgMjAxMiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSMgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotIyBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
Ci0jIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgotCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1pZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgotICAjIE1ha2Ugc3VyZSB3ZSBhbHdheXMgY2FuIGltcG9y
dCBoZWxwZXJfZnVuY3Rpb25zLgotICBzeXMucGF0aC5hcHBlbmQob3MucGF0aC5kaXJuYW1lKF9f
ZmlsZV9fKSkKLQotaW1wb3J0IGhlbHBlcl9mdW5jdGlvbnMKLQotIyBDaHJvbWUgYnJvd3NlcnRl
c3RzIHdpbGwgdGhyb3cgYXdheSBzdGRlcnI7IGF2b2lkIHRoYXQgb3V0cHV0IGdldHMgbG9zdC4K
LXN5cy5zdGRlcnIgPSBzeXMuc3Rkb3V0Ci0KLQotZGVmIENvbnZlcnRZdXZUb1BuZ0ZpbGVzKHl1
dl9maWxlX25hbWUsIHl1dl9mcmFtZV93aWR0aCwgeXV2X2ZyYW1lX2hlaWdodCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRwdXRfZGlyZWN0b3J5LCBmZm1wZWdfcGF0aCk6Ci0gICIiIkNv
bnZlcnRzIGEgWVVWIHZpZGVvIGZpbGUgaW50byBQTkcgZnJhbWVzLgotCi0gIFRoZSBmdW5jdGlv
biB1c2VzIGZmbXBlZyB0byBjb252ZXJ0IHRoZSBZVVYgZmlsZS4gVGhlIG91dHB1dCBvZiBmZm1w
ZWcgaXMgaW4KLSAgdGhlIGZvcm0gZnJhbWVfeHh4eC5wbmcsIHdoZXJlIHh4eHggaXMgdGhlIGZy
YW1lIG51bWJlciwgc3RhcnRpbmcgZnJvbSAwMDAxLgotCi0gIEFyZ3M6Ci0gICAgeXV2X2ZpbGVf
bmFtZShzdHJpbmcpOiBUaGUgbmFtZSBvZiB0aGUgWVVWIGZpbGUuCi0gICAgeXV2X2ZyYW1lX3dp
ZHRoKGludCk6IFRoZSB3aWR0aCBvZiBvbmUgWVVWIGZyYW1lLgotICAgIHl1dl9mcmFtZV9oZWln
aHQoaW50KTogVGhlIGhlaWdodCBvZiBvbmUgWVVWIGZyYW1lLgotICAgIG91dHB1dF9kaXJlY3Rv
cnkoc3RyaW5nKTogVGhlIG91dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIFBORyBmcmFtZXMgd2ls
bCBiZQotICAgICAgc3RvcmVkLgotICAgIGZmbXBlZ19wYXRoKHN0cmluZyk6IFRoZSBwYXRoIHRv
IHRoZSBmZm1wZWcgZXhlY3V0YWJsZS4gSWYgTm9uZSwgdGhlIFBBVEgKLSAgICAgIHdpbGwgYmUg
c2VhcmNoZWQgZm9yIGl0LgotCi0gIFJldHVybjoKLSAgICAoYm9vbCk6IFRydWUgaWYgdGhlIGNv
bnZlcnNpb24gd2FzIE9LLgotICAiIiIKLSAgc2l6ZV9zdHJpbmcgPSBzdHIoeXV2X2ZyYW1lX3dp
ZHRoKSArICd4JyArIHN0cih5dXZfZnJhbWVfaGVpZ2h0KQotICBvdXRwdXRfZmlsZXNfcGF0dGVy
biA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyZWN0b3J5LCAnZnJhbWVfJTA0ZC5wbmcnKQotICBp
ZiBub3QgZmZtcGVnX3BhdGg6Ci0gICAgZmZtcGVnX3BhdGggPSAnZmZtcGVnLmV4ZScgaWYgc3lz
LnBsYXRmb3JtID09ICd3aW4zMicgZWxzZSAnZmZtcGVnJwotICBpZiB5dXZfZmlsZV9uYW1lLmVu
ZHN3aXRoKCcueXV2Jyk6Ci0gICAgY29tbWFuZCA9IFtmZm1wZWdfcGF0aCwgJy1zJywgJyVzJyAl
IHNpemVfc3RyaW5nLCAnLWknLCAnJXMnCi0gICAgICAgICAgICAgICAlIHl1dl9maWxlX25hbWUs
ICctZicsICdpbWFnZTInLCAnLXZjb2RlYycsICdwbmcnLAotICAgICAgICAgICAgICAgJyVzJyAl
IG91dHB1dF9maWxlc19wYXR0ZXJuXQotICBlbHNlOgotICAgIGNvbW1hbmQgPSBbZmZtcGVnX3Bh
dGgsICctaScsICclcycgJSB5dXZfZmlsZV9uYW1lLCAnLWYnLCAnaW1hZ2UyJywKLSAgICAgICAg
ICAgICAgICctdmNvZGVjJywgJ3BuZycsICclcycgJSBvdXRwdXRfZmlsZXNfcGF0dGVybl0KLSAg
dHJ5OgotICAgIHByaW50ICdDb252ZXJ0aW5nIFlVViBmaWxlIHRvIFBORyBpbWFnZXMgKG1heSB0
YWtlIGEgd2hpbGUpLi4uJwotICAgIHByaW50ICcgJy5qb2luKGNvbW1hbmQpCi0gICAgaGVscGVy
X2Z1bmN0aW9ucy5SdW5TaGVsbENvbW1hbmQoCi0gICAgICAgIGNvbW1hbmQsIGZhaWxfbXNnPSdF
cnJvciBkdXJpbmcgWVVWIHRvIFBORyBjb252ZXJzaW9uJykKLSAgZXhjZXB0IGhlbHBlcl9mdW5j
dGlvbnMuSGVscGVyRXJyb3IsIGVycjoKLSAgICBwcmludCAnRXJyb3IgZXhlY3V0aW5nIGNvbW1h
bmQ6ICVzLiBFcnJvcjogJXMnICUgKGNvbW1hbmQsIGVycikKLSAgICByZXR1cm4gRmFsc2UKLSAg
ZXhjZXB0IE9TRXJyb3I6Ci0gICAgcHJpbnQgJ0RpZCBub3QgZmluZCAlcy4gSGF2ZSB5b3UgaW5z
dGFsbGVkIGl0PycgJSBmZm1wZWdfcGF0aAotICAgIHJldHVybiBGYWxzZQotICByZXR1cm4gVHJ1
ZQotCi0KLWRlZiBEZWNvZGVGcmFtZXMoaW5wdXRfZGlyZWN0b3J5LCB6eGluZ19wYXRoKToKLSAg
IiIiRGVjb2RlcyB0aGUgYmFyY29kZXMgb3ZlcmxhaWQgaW4gZWFjaCBmcmFtZS4KLQotICBUaGUg
ZnVuY3Rpb24gdXNlcyB0aGUgWnhpbmcgY29tbWFuZC1saW5lIHRvb2wgZnJvbSB0aGUgWnhpbmcg
QysrIGRpc3RyaWJ1dGlvbgotICB0byBkZWNvZGUgdGhlIGJhcmNvZGUgaW4gZXZlcnkgUE5HIGZy
YW1lIGZyb20gdGhlIGlucHV0IGRpcmVjdG9yeS4gVGhlIGZyYW1lcwotICBzaG91bGQgYmUgbmFt
ZWQgZnJhbWVfeHh4eC5wbmcsIHdoZXJlIHh4eHggaXMgdGhlIGZyYW1lIG51bWJlci4gVGhlIGZy
YW1lCi0gIG51bWJlcnMgc2hvdWxkIGJlIGNvbnNlY3V0aXZlIGFuZCBzaG91bGQgc3RhcnQgZnJv
bSAwMDAxLgotICBUaGUgZGVjb2RpbmcgcmVzdWx0cyBpbiBhIGZyYW1lX3h4eHgudHh0IGZpbGUg
Zm9yIGV2ZXJ5IHN1Y2Nlc3NmdWxseSBkZWNvZGVkCi0gIGJhcmNvZGUuIFRoaXMgZmlsZSBjb250
YWlucyB0aGUgZGVjb2RlZCBiYXJjb2RlIGFzIDEyLWRpZ2l0IHN0cmluZyAoVVBDLUEKLSAgZm9y
bWF0OiAxMSBkaWdpdHMgY29udGVudCArIG9uZSBjaGVjayBkaWdpdCkuCi0KLSAgQXJnczoKLSAg
ICBpbnB1dF9kaXJlY3Rvcnkoc3RyaW5nKTogVGhlIGlucHV0IGRpcmVjdG9yeSBmcm9tIHdoZXJl
IHRoZSBQTkcgZnJhbWVzIGFyZQotICAgICAgcmVhZC4KLSAgICB6eGluZ19wYXRoKHN0cmluZyk6
IFRoZSBwYXRoIHRvIHRoZSB6eGluZyBiaW5hcnkuIElmIHNwZWNpZmllZCBhcyBOb25lLAotICAg
ICAgdGhlIFBBVEggd2lsbCBiZSBzZWFyY2hlZCBmb3IgaXQuCi0gIFJldHVybjoKLSAgICAoYm9v
bCk6IFRydWUgaWYgdGhlIGRlY29kaW5nIHN1Y2NlZWRlZC4KLSAgIiIiCi0gIGlmIG5vdCB6eGlu
Z19wYXRoOgotICAgIHp4aW5nX3BhdGggPSAnenhpbmcuZXhlJyBpZiBzeXMucGxhdGZvcm0gPT0g
J3dpbjMyJyBlbHNlICd6eGluZycKLSAgcHJpbnQgJ0RlY29kaW5nIGJhcmNvZGVzIGZyb20gUE5H
IGZpbGVzIHdpdGggJXMuLi4nICUgenhpbmdfcGF0aAotICByZXR1cm4gaGVscGVyX2Z1bmN0aW9u
cy5QZXJmb3JtQWN0aW9uT25BbGxGaWxlcygKLSAgICAgIGRpcmVjdG9yeT1pbnB1dF9kaXJlY3Rv
cnksIGZpbGVfcGF0dGVybj0nZnJhbWVfJywKLSAgICAgIGZpbGVfZXh0ZW5zaW9uPSdwbmcnLCBz
dGFydF9udW1iZXI9MSwgYWN0aW9uPV9EZWNvZGVCYXJjb2RlSW5GaWxlLAotICAgICAgY29tbWFu
ZF9saW5lX2RlY29kZXI9enhpbmdfcGF0aCkKLQotCi1kZWYgX0RlY29kZUJhcmNvZGVJbkZpbGUo
ZmlsZV9uYW1lLCBjb21tYW5kX2xpbmVfZGVjb2Rlcik6Ci0gICIiIkRlY29kZXMgdGhlIGJhcmNv
ZGUgaW4gdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIGEgUE5HIGZpbGUuCi0KLSAgQXJnczoKLSAg
ICBmaWxlX25hbWUoc3RyaW5nKTogRmlsZSBuYW1lIG9mIHRoZSBQTkcgZmlsZS4KLSAgICBjb21t
YW5kX2xpbmVfZGVjb2RlcihzdHJpbmcpOiBUaGUgWlhpbmcgY29tbWFuZC1saW5lIGRlY29kaW5n
IHRvb2wuCi0KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1ZSB1cG9uIHN1Y2Nlc3MsIEZhbHNl
IG90aGVyd2lzZS4KLSAgIiIiCi0gIGNvbW1hbmQgPSBbY29tbWFuZF9saW5lX2RlY29kZXIsICct
LXRyeS1oYXJkZXInLCAnLS1kdW1wLXJhdycsIGZpbGVfbmFtZV0KLSAgdHJ5OgotICAgIG91dCA9
IGhlbHBlcl9mdW5jdGlvbnMuUnVuU2hlbGxDb21tYW5kKAotICAgICAgICBjb21tYW5kLCBmYWls
X21zZz0nRXJyb3IgZHVyaW5nIGRlY29kaW5nIG9mICVzJyAlIGZpbGVfbmFtZSkKLSAgICB0ZXh0
X2ZpbGUgPSBvcGVuKCclcy50eHQnICUgZmlsZV9uYW1lWzotNF0sICd3JykKLSAgICB0ZXh0X2Zp
bGUud3JpdGUob3V0KQotICAgIHRleHRfZmlsZS5jbG9zZSgpCi0gIGV4Y2VwdCBoZWxwZXJfZnVu
Y3Rpb25zLkhlbHBlckVycm9yLCBlcnI6Ci0gICAgcHJpbnQgJ0JhcmNvZGUgaW4gJXMgY2Fubm90
IGJlIGRlY29kZWQuJyAlIGZpbGVfbmFtZQotICAgIHByaW50IGVycgotICAgIHJldHVybiBGYWxz
ZQotICBleGNlcHQgT1NFcnJvcjoKLSAgICBwcmludCAnRGlkIG5vdCBmaW5kICVzLiBIYXZlIHlv
dSBpbnN0YWxsZWQgaXQ/JyAlIGNvbW1hbmRfbGluZV9kZWNvZGVyCi0gICAgcmV0dXJuIEZhbHNl
Ci0gIHJldHVybiBUcnVlCi0KLQotZGVmIF9HZW5lcmF0ZVN0YXRzRmlsZShzdGF0c19maWxlX25h
bWUsIGlucHV0X2RpcmVjdG9yeT0nLicpOgotICAiIiJHZW5lcmF0ZSBzdGF0aXN0aWNzIGZpbGUu
Ci0KLSAgVGhlIGZ1bmN0aW9uIGdlbmVyYXRlcyBhIHN0YXRpc3RpY3MgZmlsZS4gVGhlIGNvbnRl
bnRzIG9mIHRoZSBmaWxlIGFyZSBpbiB0aGUKLSAgZm9ybWF0IDxmcmFtZV9uYW1lPiA8YmFyY29k
ZT4sIHdoZXJlIGZyYW1lIG5hbWUgaXMgdGhlIG5hbWUgb2YgZXZlcnkgZnJhbWUKLSAgKGVmZmVj
dGl2ZWx5IHRoZSBmcmFtZSBudW1iZXIpIGFuZCBiYXJjb2RlIGlzIHRoZSBkZWNvZGVkIGJhcmNv
ZGUuIFRoZSBmcmFtZXMKLSAgYW5kIHRoZSBoZWxwZXIgLnR4dCBmaWxlcyBhcmUgcmVtb3ZlZCBh
ZnRlciB0aGV5IGhhdmUgYmVlbiB1c2VkLgotICAiIiIKLSAgZmlsZV9wcmVmaXggPSBvcy5wYXRo
LmpvaW4oaW5wdXRfZGlyZWN0b3J5LCAnZnJhbWVfJykKLSAgc3RhdHNfZmlsZSA9IG9wZW4oc3Rh
dHNfZmlsZV9uYW1lLCAndycpCi0KLSAgcHJpbnQgJ0dlbmVyYXRpbmcgc3RhdHMgZmlsZTogJXMn
ICUgc3RhdHNfZmlsZV9uYW1lCi0gIGZvciBpIGluIHJhbmdlKDEsIF9Db3VudEZyYW1lc0luKGlu
cHV0X2RpcmVjdG9yeT1pbnB1dF9kaXJlY3RvcnkpICsgMSk6Ci0gICAgZnJhbWVfbnVtYmVyID0g
aGVscGVyX2Z1bmN0aW9ucy5aZXJvUGFkKGkpCi0gICAgYmFyY29kZV9maWxlX25hbWUgPSBmaWxl
X3ByZWZpeCArIGZyYW1lX251bWJlciArICcudHh0JwotICAgIHBuZ19mcmFtZSA9IGZpbGVfcHJl
Zml4ICsgZnJhbWVfbnVtYmVyICsgJy5wbmcnCi0gICAgZW50cnlfZnJhbWVfbnVtYmVyID0gaGVs
cGVyX2Z1bmN0aW9ucy5aZXJvUGFkKGktMSkKLSAgICBlbnRyeSA9ICdmcmFtZV8nICsgZW50cnlf
ZnJhbWVfbnVtYmVyICsgJyAnCi0KLSAgICBpZiBvcy5wYXRoLmlzZmlsZShiYXJjb2RlX2ZpbGVf
bmFtZSk6Ci0gICAgICBiYXJjb2RlID0gX1JlYWRCYXJjb2RlRnJvbVRleHRGaWxlKGJhcmNvZGVf
ZmlsZV9uYW1lKQotICAgICAgb3MucmVtb3ZlKGJhcmNvZGVfZmlsZV9uYW1lKQotCi0gICAgICBp
ZiBfQ2hlY2tCYXJjb2RlKGJhcmNvZGUpOgotICAgICAgICBlbnRyeSArPSAoaGVscGVyX2Z1bmN0
aW9ucy5aZXJvUGFkKGludChiYXJjb2RlWzA6MTFdKSkgKyAnXG4nKQotICAgICAgZWxzZToKLSAg
ICAgICAgZW50cnkgKz0gJ0JhcmNvZGUgZXJyb3JcbicgICMgQmFyY29kZSBpcyB3cm9uZ2x5IGRl
dGVjdGVkLgotICAgIGVsc2U6ICAjIEJhcmNvZGUgZmlsZSBkb2Vzbid0IGV4aXN0LgotICAgICAg
ZW50cnkgKz0gJ0JhcmNvZGUgZXJyb3JcbicKLQotICAgIHN0YXRzX2ZpbGUud3JpdGUoZW50cnkp
Ci0gICAgb3MucmVtb3ZlKHBuZ19mcmFtZSkKLQotICBzdGF0c19maWxlLmNsb3NlKCkKLQotCi1k
ZWYgX1JlYWRCYXJjb2RlRnJvbVRleHRGaWxlKGJhcmNvZGVfZmlsZV9uYW1lKToKLSAgIiIiUmVh
ZHMgdGhlIGRlY29kZWQgYmFyY29kZSBmb3IgYSAudHh0IGZpbGUuCi0KLSAgQXJnczoKLSAgICBi
YXJjb2RlX2ZpbGVfbmFtZShzdHJpbmcpOiBUaGUgbmFtZSBvZiB0aGUgLnR4dCBmaWxlLgotICBS
ZXR1cm46Ci0gICAgKHN0cmluZyk6IFRoZSBkZWNvZGVkIGJhcmNvZGUuCi0gICIiIgotICBiYXJj
b2RlX2ZpbGUgPSBvcGVuKGJhcmNvZGVfZmlsZV9uYW1lLCAncicpCi0gIGJhcmNvZGUgPSBiYXJj
b2RlX2ZpbGUucmVhZCgpCi0gIGJhcmNvZGVfZmlsZS5jbG9zZSgpCi0gIHJldHVybiBiYXJjb2Rl
Ci0KLQotZGVmIF9DaGVja0JhcmNvZGUoYmFyY29kZSk6Ci0gICIiIkNoZWNrIHdlYXRoZXIgdGhl
IFVQQy1BIGJhcmNvZGUgd2FzIGRlY29kZWQgY29ycmVjdGx5LgotCi0gIFRoaXMgZnVuY3Rpb24g
Y2FsY3VsYXRlcyB0aGUgY2hlY2sgZGlnaXQgb2YgdGhlIHByb3ZpZGVkIGJhcmNvZGUgYW5kIGNv
bXBhcmVzCi0gIGl0IHRvIHRoZSBjaGVjayBkaWdpdCB0aGF0IHdhcyBkZWNvZGVkLgotCi0gIEFy
Z3M6Ci0gICAgYmFyY29kZShzdHJpbmcpOiBUaGUgYmFyY29kZSAoMTItZGlnaXQpLgotICBSZXR1
cm46Ci0gICAgKGJvb2wpOiBUcnVlIGlmIHRoZSBiYXJjb2RlIHdhcyBkZWNvZGVkIGNvcnJlY3Rs
eS4KLSAgIiIiCi0gIGlmIGxlbihiYXJjb2RlKSAhPSAxMjoKLSAgICByZXR1cm4gRmFsc2UKLQot
ICByMSA9IHJhbmdlKDAsIDExLCAyKSAgIyBPZGQgZGlnaXRzCi0gIHIyID0gcmFuZ2UoMSwgMTAs
IDIpICAjIEV2ZW4gZGlnaXRzIGV4Y2VwdCBsYXN0Ci0gIGRzdW0gPSAwCi0gICMgU3VtIGFsbCB0
aGUgZXZlbiBkaWdpdHMKLSAgZm9yIGkgaW4gcjE6Ci0gICAgZHN1bSArPSBpbnQoYmFyY29kZVtp
XSkKLSAgIyBNdWx0aXBseSB0aGUgc3VtIGJ5IDMKLSAgZHN1bSAqPSAzCi0gICMgQWRkIGFsbCB0
aGUgZXZlbiBkaWdpdHMgZXhjZXB0IHRoZSBjaGVjayBkaWdpdCAoMTJ0aCBkaWdpdCkKLSAgZm9y
IGkgaW4gcjI6Ci0gICAgZHN1bSArPSBpbnQoYmFyY29kZVtpXSkKLSAgIyBHZXQgdGhlIG1vZHVs
byAxMAotICBkc3VtID0gZHN1bSAlIDEwCi0gICMgSWYgbm90IDAgc3Vic3RyYWN0IGZyb20gMTAK
LSAgaWYgZHN1bSAhPSAwOgotICAgIGRzdW0gPSAxMCAtIGRzdW0KLSAgIyBDb21wYXJlIHJlc3Vs
dCBhbmQgY2hlY2sgZGlnaXQKLSAgcmV0dXJuIGRzdW0gPT0gaW50KGJhcmNvZGVbMTFdKQotCi0K
LWRlZiBfQ291bnRGcmFtZXNJbihpbnB1dF9kaXJlY3Rvcnk9Jy4nKToKLSAgIiIiQ2FsY3VsYXRl
cyB0aGUgbnVtYmVyIG9mIGZyYW1lcyBpbiB0aGUgaW5wdXQgZGlyZWN0b3J5LgotCi0gIFRoZSBm
dW5jdGlvbiBjYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgZnJhbWVzIGluIHRoZSBpbnB1dCBkaXJl
Y3RvcnkuIFRoZQotICBmcmFtZXMgc2hvdWxkIGJlIG5hbWVkIGZyYW1lX3h4eHgucG5nLCB3aGVy
ZSB4eHh4IGlzIHRoZSBudW1iZXIgb2YgdGhlIGZyYW1lLgotICBUaGUgbnVtYmVycyBzaG91bGQg
c3RhcnQgZnJvbSAxIGFuZCBzaG91bGQgYmUgY29uc2VjdXRpdmUuCi0KLSAgQXJnczoKLSAgICBp
bnB1dF9kaXJlY3Rvcnkoc3RyaW5nKTogVGhlIGlucHV0IGRpcmVjdG9yeS4KLSAgUmV0dXJuOgot
ICAgIChpbnQpOiBUaGUgbnVtYmVyIG9mIGZyYW1lcy4KLSAgIiIiCi0gIGZpbGVfcHJlZml4ID0g
b3MucGF0aC5qb2luKGlucHV0X2RpcmVjdG9yeSwgJ2ZyYW1lXycpCi0gIGZpbGVfZXhpc3RzID0g
VHJ1ZQotICBudW0gPSAxCi0KLSAgd2hpbGUgZmlsZV9leGlzdHM6Ci0gICAgZmlsZV9uYW1lID0g
KGZpbGVfcHJlZml4ICsgaGVscGVyX2Z1bmN0aW9ucy5aZXJvUGFkKG51bSkgKyAnLnBuZycpCi0g
ICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZV9uYW1lKToKLSAgICAgIG51bSArPSAxCi0gICAgZWxz
ZToKLSAgICAgIGZpbGVfZXhpc3RzID0gRmFsc2UKLSAgcmV0dXJuIG51bSAtIDEKLQotCi1kZWYg
X1BhcnNlQXJncygpOgotICAiIiJSZWdpc3RlcnMgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zLiIi
IgotICB1c2FnZSA9ICJ1c2FnZTogJXByb2cgW29wdGlvbnNdIgotICBwYXJzZXIgPSBvcHRwYXJz
ZS5PcHRpb25QYXJzZXIodXNhZ2U9dXNhZ2UpCi0KLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0tenhp
bmdfcGF0aCcsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdUaGUg
cGF0aCB0byB3aGVyZSB0aGUgenhpbmcgZXhlY3V0YWJsZSBpcyBsb2NhdGVkLiAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICdJZiBvbWl0dGVkLCBpdCB3aWxsIGJlIGFzc3VtZWQgdG8gYmUg
cHJlc2VudCBpbiB0aGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnUEFUSCB3aXRoIHRo
ZSBuYW1lIHp4aW5nWy5leGVdLicpKQotICBwYXJzZXIuYWRkX29wdGlvbignLS1mZm1wZWdfcGF0
aCcsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdUaGUgcGF0aCB0
byB3aGVyZSB0aGUgZmZtcGVnIGV4ZWN1dGFibGUgaXMgbG9jYXRlZC4gJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAnSWYgb21pdHRlZCwgaXQgd2lsbCBiZSBhc3N1bWVkIHRvIGJlIHByZXNl
bnQgaW4gdGhlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BBVEggd2l0aCB0aGUgbmFt
ZSBmZm1wZWdbLmV4ZV0uJykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLXl1dl9mcmFtZV93aWR0
aCcsIHR5cGU9J2ludCcsIGRlZmF1bHQ9NjQwLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSdX
aWR0aCBvZiB0aGUgWVVWIGZpbGVcJ3MgZnJhbWVzLiBEZWZhdWx0OiAlZGVmYXVsdCcpCi0gIHBh
cnNlci5hZGRfb3B0aW9uKCctLXl1dl9mcmFtZV9oZWlnaHQnLCB0eXBlPSdpbnQnLCBkZWZhdWx0
PTQ4MCwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0nSGVpZ2h0IG9mIHRoZSBZVVYgZmlsZVwn
cyBmcmFtZXMuIERlZmF1bHQ6ICVkZWZhdWx0JykKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0teXV2
X2ZpbGUnLCB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PSdvdXRwdXQueXV2JywKLSAgICAgICAgICAg
ICAgICAgICAgaGVscD0nVGhlIFlVViBmaWxlIHRvIGJlIGRlY29kZWQuIERlZmF1bHQ6ICVkZWZh
dWx0JykKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0tc3RhdHNfZmlsZScsIHR5cGU9J3N0cmluZycs
IGRlZmF1bHQ9J3N0YXRzLnR4dCcsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9J1RoZSBvdXRw
dXQgc3RhdHMgZmlsZS4gRGVmYXVsdDogJWRlZmF1bHQnKQotICBwYXJzZXIuYWRkX29wdGlvbign
LS1wbmdfd29ya2luZ19kaXInLCB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PScuJywKLSAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ1RoZSBkaXJlY3RvcnkgZm9yIHRlbXBvcmFyeSBQTkcgaW1hZ2Vz
IHRvIGJlIHN0b3JlZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdpbiB3aGVuIGRlY29k
aW5nIGZyb20gWVVWIGJlZm9yZSB0aGV5XCdyZSBiYXJjb2RlICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2RlY29kZWQuIElmIHVzaW5nIFdpbmRvd3MgYW5kIGEgQ3lnd2luLWNvbXBpbGVk
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3p4aW5nLmV4ZSwgeW91IHNob3VsZCBrZWVw
IHRoZSBkZWZhdWx0IHZhbHVlIHRvICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F2b2lk
IHByb2JsZW1zLiBEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBvcHRpb25zLCBfID0gcGFyc2VyLnBh
cnNlX2FyZ3MoKQotICByZXR1cm4gb3B0aW9ucwotCi0KLWRlZiBtYWluKCk6Ci0gICIiIlRoZSBt
YWluIGZ1bmN0aW9uLgotCi0gIEEgc2ltcGxlIGludm9jYXRpb24gaXM6Ci0gIC4vd2VicnRjL3J0
Y190b29scy9iYXJjb2RlX3Rvb2xzL2JhcmNvZGVfZGVjb2Rlci5weQotICAtLXl1dl9maWxlPTxw
YXRoX2FuZF9uYW1lX29mX292ZXJsYWlkX3l1dl92aWRlbz4KLSAgLS15dXZfZnJhbWVfd2lkdGg9
NjQwIC0teXV2X2ZyYW1lX2hlaWdodD00ODAKLSAgLS1zdGF0c19maWxlPTxwYXRoX2FuZF9uYW1l
X3RvX3N0YXRzX2ZpbGU+Ci0gICIiIgotICBvcHRpb25zID0gX1BhcnNlQXJncygpCi0KLSAgIyBD
b252ZXJ0IHRoZSBvdmVybGFpZCBZVVYgdmlkZW8gaW50byBhIHNldCBvZiBQTkcgZnJhbWVzLgot
ICBpZiBub3QgQ29udmVydFl1dlRvUG5nRmlsZXMob3B0aW9ucy55dXZfZmlsZSwgb3B0aW9ucy55
dXZfZnJhbWVfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnl1
dl9mcmFtZV9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZGly
ZWN0b3J5PW9wdGlvbnMucG5nX3dvcmtpbmdfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmZtcGVnX3BhdGg9b3B0aW9ucy5mZm1wZWdfcGF0aCk6Ci0gICAgcHJpbnQgJ0FuIGVy
cm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgZnJvbSBZVVYgdG8gUE5HIGZyYW1lcy4nCi0gICAgcmV0
dXJuIC0xCi0KLSAgIyBEZWNvZGUgdGhlIGJhcmNvZGVzIGZyb20gdGhlIFBORyBmcmFtZXMuCi0g
IGlmIG5vdCBEZWNvZGVGcmFtZXMoaW5wdXRfZGlyZWN0b3J5PW9wdGlvbnMucG5nX3dvcmtpbmdf
ZGlyLAotICAgICAgICAgICAgICAgICAgICAgIHp4aW5nX3BhdGg9b3B0aW9ucy56eGluZ19wYXRo
KToKLSAgICBwcmludCAnQW4gZXJyb3Igb2NjdXJyZWQgZGVjb2RpbmcgYmFyY29kZXMgZnJvbSBQ
TkcgZnJhbWVzLicKLSAgICByZXR1cm4gLTIKLQotICAjIEdlbmVyYXRlIHN0YXRpc3RpY3MgZmls
ZS4KLSAgX0dlbmVyYXRlU3RhdHNGaWxlKG9wdGlvbnMuc3RhdHNfZmlsZSwKLSAgICAgICAgICAg
ICAgICAgICAgIGlucHV0X2RpcmVjdG9yeT1vcHRpb25zLnBuZ193b3JraW5nX2RpcikKLSAgcHJp
bnQgJ0NvbXBsZXRlZCBiYXJjb2RlIGRlY29kaW5nLicKLSAgcmV0dXJuIDAKLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9v
bHMvYmFyY29kZV9lbmNvZGVyLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvYmFyY29kZV9lbmNvZGVyLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWI4YjUwNzU0MjM5OTJmOTJiOGM3Zjg3MzkzY2Uw
MmNlOWU2YjkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJj
b2RlX3Rvb2xzL2JhcmNvZGVfZW5jb2Rlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDM3MiArMCww
IEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0jIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQotIyB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCi0jIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9z
Ci1pbXBvcnQgc3lzCi0KLWltcG9ydCBoZWxwZXJfZnVuY3Rpb25zCi0KLV9ERUZBVUxUX0JBUkNP
REVfV0lEVEggPSAzNTIKLV9ERUZBVUxUX0JBUkNPREVTX0ZJTEUgPSAnYmFyY29kZXMueXV2Jwot
Ci0KLWRlZiBHZW5lcmF0ZVVwY2FCYXJjb2RlcyhudW1iZXJfb2ZfYmFyY29kZXMsIGJhcmNvZGVf
d2lkdGgsIGJhcmNvZGVfaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9k
aXJlY3Rvcnk9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfdG9fenhpbmc9J3p4
aW5nLXJlYWQtb25seScpOgotICAiIiJHZW5lcmF0ZXMgVVBDLUEgYmFyY29kZXMuCi0KLSAgVGhp
cyBmdW5jdGlvbiBnZW5lcmF0ZXMgYSBudW1iZXJfb2ZfYmFyY29kZXMgVVBDLUEgYmFyY29kZXMu
IFRoZSBmdW5jdGlvbgotICBjYWxscyBhbiBleGFtcGxlIEphdmEgZW5jb2RlciBmcm9tIHRoZSBa
eGluZyBsaWJyYXJ5LiBUaGUgYmFyY29kZXMgYXJlCi0gIGdlbmVyYXRlZCBhcyBQTkcgaW1hZ2Vz
LiBUaGUgd2lkdGggb2YgdGhlIGJhcmNvZGVzIHNob3VsZG4ndCBiZSBsZXNzIHRoYW4gMTAyCi0g
IHBpeGVscyBiZWNhdXNlIG90aGVyd2lzZSBaeGluZyBjYW4ndCBwcm9wZXJseSBnZW5lcmF0ZSB0
aGUgYmFyY29kZXMuCi0KLSAgQXJnczoKLSAgICBudW1iZXJfb2ZfYmFyY29kZXMoaW50KTogVGhl
IG51bWJlciBvZiBiYXJjb2RlcyB0byBnZW5lcmF0ZS4KLSAgICBiYXJjb2RlX3dpZHRoKGludCk6
IFdpZHRoIG9mIGJhcmNvZGUgaW4gcGl4ZWxzLgotICAgIGJhcmNvZGVfaGVpZ2h0KGludCk6IEhl
aWdodCBvZiBiYXJjb2RlIGluIHBpeGVscy4KLSAgICBvdXRwdXRfZGlyZWN0b3J5KHN0cmluZyk6
IE91dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdG8gc3RvcmUgZ2VuZXJhdGVkCi0gICAgICBiYXJjb2Rl
cy4KLSAgICBwYXRoX3RvX3p4aW5nKHN0cmluZyk6IFRoZSBwYXRoIHRvIFp4aW5nLgotCi0gIFJl
dHVybjoKLSAgICAoYm9vbCk6IFRydWUgaWYgdGhlIGNvbnZlcnNpb24gaXMgc3VjY2Vzc2Z1bC4K
LSAgIiIiCi0gIGJhc2VfZmlsZV9uYW1lID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXJlY3Rvcnks
ICJiYXJjb2RlXyIpCi0gIGphcnMgPSBfRm9ybUphcnNTdHJpbmcocGF0aF90b196eGluZykKLSAg
Y29tbWFuZF9saW5lX2VuY29kZXIgPSAnY29tLmdvb2dsZS56eGluZy5jbGllbnQuajJzZS5Db21t
YW5kTGluZUVuY29kZXInCi0gIGJhcmNvZGVfd2lkdGggPSBzdHIoYmFyY29kZV93aWR0aCkKLSAg
YmFyY29kZV9oZWlnaHQgPSBzdHIoYmFyY29kZV9oZWlnaHQpCi0KLSAgZXJyb3JzID0gRmFsc2UK
LSAgZm9yIGkgaW4gcmFuZ2UobnVtYmVyX29mX2JhcmNvZGVzKToKLSAgICBzdWZmaXggPSBoZWxw
ZXJfZnVuY3Rpb25zLlplcm9QYWQoaSkKLSAgICAjIEJhcmNvZGVzIHN0YXJ0aW5nIGZyb20gMAot
ICAgIGNvbnRlbnQgPSBoZWxwZXJfZnVuY3Rpb25zLlplcm9QYWQoaSwgMTEpCi0gICAgb3V0cHV0
X2ZpbGVfbmFtZSA9IGJhc2VfZmlsZV9uYW1lICsgc3VmZml4ICsgIi5wbmciCi0KLSAgICBjb21t
YW5kID0gWyJqYXZhIiwgIi1jcCIsIGphcnMsIGNvbW1hbmRfbGluZV9lbmNvZGVyLAotICAgICAg
ICAgICAgICAgIi0tYmFyY29kZV9mb3JtYXQ9VVBDX0EiLCAiLS1oZWlnaHQ9JXMiICUgYmFyY29k
ZV9oZWlnaHQsCi0gICAgICAgICAgICAgICAiLS13aWR0aD0lcyIgJSBiYXJjb2RlX3dpZHRoLAot
ICAgICAgICAgICAgICAgIi0tb3V0cHV0PSVzIiAlIChvdXRwdXRfZmlsZV9uYW1lKSwgIiVzIiAl
IChjb250ZW50KV0KLSAgICB0cnk6Ci0gICAgICBoZWxwZXJfZnVuY3Rpb25zLlJ1blNoZWxsQ29t
bWFuZCgKLSAgICAgICAgICBjb21tYW5kLCBmYWlsX21zZz0oJ0Vycm9yIGR1cmluZyBiYXJjb2Rl
ICVzIGdlbmVyYXRpb24nICUgY29udGVudCkpCi0gICAgZXhjZXB0IGhlbHBlcl9mdW5jdGlvbnMu
SGVscGVyRXJyb3IgYXMgZXJyOgotICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgZXJyCi0gICAg
ICBlcnJvcnMgPSBUcnVlCi0gIHJldHVybiBub3QgZXJyb3JzCi0KLQotZGVmIENvbnZlcnRQbmdU
b1l1dkJhcmNvZGVzKGlucHV0X2RpcmVjdG9yeT0nLicsIG91dHB1dF9kaXJlY3Rvcnk9Jy4nKToK
LSAgIiIiQ29udmVydHMgUE5HIGJhcmNvZGVzIHRvIFlVViBiYXJjb2RlIGltYWdlcy4KLQotICBU
aGlzIGZ1bmN0aW9uIHJlYWRzIGFsbCB0aGUgUE5HIGZpbGVzIGZyb20gdGhlIGlucHV0IGRpcmVj
dG9yeSB3aGljaCBhcmUgaW4KLSAgdGhlIGZvcm1hdCBmcmFtZV94eHh4LnBuZywgd2hlcmUgeHh4
eCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBmcmFtZSwgc3RhcnRpbmcKLSAgZnJvbSAwMDAwLiBUaGUg
ZnJhbWVzIHNob3VsZCBiZSBjb25zZWN1dGl2ZSBudW1iZXJzLiBUaGUgb3V0cHV0IFlVViBmaWxl
IGlzCi0gIG5hbWVkIGZyYW1lX3h4eHgueXV2LiBUaGUgZnVuY3Rpb24gdXNlcyBmZm1wZWcgdG8g
ZG8gdGhlIGNvbnZlcnNpb24uCi0KLSAgQXJnczoKLSAgICBpbnB1dF9kaXJlY3Rvcnkoc3RyaW5n
KTogVGhlIGlucHV0IGRpcmVjb3RyeSB0byByZWFkIHRoZSBQTkcgYmFyY29kZXMgZnJvbS4KLSAg
ICBvdXRwdXRfZGlyZWN0b3J5KHN0cmluZyk6IFRoZSBwdXRwdXQgZGlyZWN0b3J5IHRvIHdyaXRl
IHRoZSBZVVYgZmlsZXMgdG8uCi0gIFJldHVybjoKLSAgICAoYm9vbCk6IFRydWUgaWYgdGhlIGNv
bnZlcnNpb24gd2FzIHdpdGhvdXQgZXJyb3JzLgotICAiIiIKLSAgcmV0dXJuIGhlbHBlcl9mdW5j
dGlvbnMuUGVyZm9ybUFjdGlvbk9uQWxsRmlsZXMoCi0gICAgICBpbnB1dF9kaXJlY3RvcnksICdi
YXJjb2RlXycsICdwbmcnLCAwLCBfQ29udmVydFRvWXV2QW5kRGVsZXRlLAotICAgICAgb3V0cHV0
X2RpcmVjdG9yeT1vdXRwdXRfZGlyZWN0b3J5LCBwYXR0ZXJuPSdiYXJjb2RlXycpCi0KLQotZGVm
IF9Db252ZXJ0VG9ZdXZBbmREZWxldGUob3V0cHV0X2RpcmVjdG9yeSwgZmlsZV9uYW1lLCBwYXR0
ZXJuKToKLSAgIiIiQ29udmVydHMgYSBQTkcgZmlsZSB0byBhIFlVViBmaWxlIGFuZCBkZWxldGVz
IHRoZSBQTkcgZmlsZS4KLQotICBBcmdzOgotICAgIG91dHB1dF9kaXJlY3Rvcnkoc3RyaW5nKTog
VGhlIG91dHB1dCBkaXJlY3RvcnkgZm9yIHRoZSBZVVYgZmlsZS4KLSAgICBmaWxlX25hbWUoc3Ry
aW5nKTogVGhlIFBORyBmaWxlIG5hbWUuCi0gICAgcGF0dGVybihzdHJpbmcpOiBUaGUgZmlsZSBw
YXR0ZXJuIG9mIHRoZSBQTkcvWVVWIGZpbGUuIFRoZSBQTkcvWVVWIGZpbGVzIGFyZQotICAgICAg
bmFtZWQgcGF0dGVybnh4Li54LnBuZy95dXYsIHdoZXJlIHh4Li54IGFyZSBkaWdpdHMgc3RhcnRp
bmcgZnJvbSAwMC4uMC4KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1ZSB1cG9uIHN1Y2Nlc3Nm
dWwgY29udmVyc2lvbiwgZmFsc2Ugb3RoZXJ3aXNlLgotICAiIiIKLSAgIyBQYXR0ZXJuIHNob3Vs
ZCBiZSBpbiBmaWxlIG5hbWUKLSAgaWYgbm90IHBhdHRlcm4gaW4gZmlsZV9uYW1lOgotICAgIHJl
dHVybiBGYWxzZQotICBwYXR0ZXJuX3Bvc2l0aW9uID0gZmlsZV9uYW1lLnJmaW5kKHBhdHRlcm4p
Ci0KLSAgIyBTdHJpcCB0aGUgcGF0aCB0byB0aGUgUE5HIGZpbGUgYW5kIHJlcGxhY2UgdGhlIHBu
ZyBleHRlbnNpb24gd2l0aCB5dXYKLSAgeXV2X2ZpbGVfbmFtZSA9IGZpbGVfbmFtZVtwYXR0ZXJu
X3Bvc2l0aW9uOi0zXSArICd5dXYnCi0gIHl1dl9maWxlX25hbWUgPSBvcy5wYXRoLmpvaW4ob3V0
cHV0X2RpcmVjdG9yeSwgeXV2X2ZpbGVfbmFtZSkKLQotICBjb21tYW5kID0gWydmZm1wZWcnLCAn
LWknLCAnJXMnICUgKGZpbGVfbmFtZSksICctcGl4X2ZtdCcsICd5dXY0MjBwJywKLSAgICAgICAg
ICAgICAnJXMnICUgKHl1dl9maWxlX25hbWUpXQotICB0cnk6Ci0gICAgaGVscGVyX2Z1bmN0aW9u
cy5SdW5TaGVsbENvbW1hbmQoCi0gICAgICAgIGNvbW1hbmQsIGZhaWxfbXNnPSgnRXJyb3IgZHVy
aW5nIFBORyB0byBZVVYgY29udmVyc2lvbiBvZiAlcycgJQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmlsZV9uYW1lKSkKLSAgICBvcy5yZW1vdmUoZmlsZV9uYW1lKQotICBleGNlcHQgaGVs
cGVyX2Z1bmN0aW9ucy5IZWxwZXJFcnJvciBhcyBlcnI6Ci0gICAgcHJpbnQgPj4gc3lzLnN0ZGVy
ciwgZXJyCi0gICAgcmV0dXJuIEZhbHNlCi0gIHJldHVybiBUcnVlCi0KLQotZGVmIENvbWJpbmVZ
dXZGcmFtZXNJbnRvT25lRmlsZShvdXRwdXRfZmlsZV9uYW1lLCBpbnB1dF9kaXJlY3Rvcnk9Jy4n
KToKLSAgIiIiQ29tYmluZXMgc2V2ZXJhbCBZVVYgZnJhbWVzIGludG8gb25lIFlVViB2aWRlbyBm
aWxlLgotCi0gIFRoZSBmdW5jdGlvbiBjb21iaW5lcyB0aGUgWVVWIGZyYW1lcyBmcm9tIGlucHV0
X2RpcmVjdG9yeSBpbnRvIG9uZSBZVVYgdmlkZW8KLSAgZmlsZS4gVGhlIGZyYW1lcyBzaG91bGQg
YmUgbmFtZWQgaW4gdGhlIGZvcm1hdCBmcmFtZV94eHh4Lnl1diB3aGVyZSB4eHh4Ci0gIHN0YW5k
cyBmb3IgdGhlIGZyYW1lIG51bWJlci4gVGhlIG51bWJlcnMgaGF2ZSB0byBiZSBjb25zZWN1dGl2
ZSBhbmQgc3RhcnQgZnJvbQotICAwMDAwLiBUaGUgWVVWIGZyYW1lcyBhcmUgcmVtb3ZlZCBhZnRl
ciB0aGV5IGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgdmlkZW8uCi0KLSAgQXJnczoKLSAgICBvdXRw
dXRfZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHByb2R1Y2UuCi0g
ICAgaW5wdXRfZGlyZWN0b3J5KHN0cmluZyk6IFRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCB0aGUg
WVVWIGZyYW1lcyBhcmUgcmVhZC4KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1ZSBpZiB0aGUg
ZnJhbWUgc3RpdGNoaW5nIHdlbnQgT0suCi0gICIiIgotICBvdXRwdXRfZmlsZSA9IG9wZW4ob3V0
cHV0X2ZpbGVfbmFtZSwgIndiIikKLSAgc3VjY2VzcyA9IGhlbHBlcl9mdW5jdGlvbnMuUGVyZm9y
bUFjdGlvbk9uQWxsRmlsZXMoCi0gICAgICBpbnB1dF9kaXJlY3RvcnksICdiYXJjb2RlXycsICd5
dXYnLCAwLCBfQWRkVG9GaWxlQW5kRGVsZXRlLAotICAgICAgb3V0cHV0X2ZpbGU9b3V0cHV0X2Zp
bGUpCi0gIG91dHB1dF9maWxlLmNsb3NlKCkKLSAgcmV0dXJuIHN1Y2Nlc3MKLQotZGVmIF9BZGRU
b0ZpbGVBbmREZWxldGUob3V0cHV0X2ZpbGUsIGZpbGVfbmFtZSk6Ci0gICIiIkFkZHMgdGhlIGNv
bnRlbnRzIG9mIGEgZmlsZSB0byBhIHByZXZpb3VzbHkgb3BlbmVkIGZpbGUuCi0KLSAgQXJnczoK
LSAgICBvdXRwdXRfZmlsZShmaWxlKTogVGhlIG91cHV0IGZpbGUsIHByZXZpb3VzbHkgb3BlbmVk
LgotICAgIGZpbGVfbmFtZShzdHJpbmcpOiBUaGUgZmlsZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGFk
ZCB0byB0aGUgb3V0cHV0IGZpbGUuCi0KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1ZSBpZiBz
dWNjZXNzZnVsLCBGYWxzZSBvdGhlcndpc2UuCi0gICIiIgotICBpbnB1dF9maWxlID0gb3Blbihm
aWxlX25hbWUsICJyYiIpCi0gIGlucHV0X2ZpbGVfY29udGVudHMgPSBpbnB1dF9maWxlLnJlYWQo
KQotICBvdXRwdXRfZmlsZS53cml0ZShpbnB1dF9maWxlX2NvbnRlbnRzKQotICBpbnB1dF9maWxl
LmNsb3NlKCkKLSAgdHJ5OgotICAgIG9zLnJlbW92ZShmaWxlX25hbWUpCi0gIGV4Y2VwdCBPU0Vy
cm9yIGFzIGU6Ci0gICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgJ0Vycm9yIGRlbGV0aW5nIGZpbGUg
JXMuXG5FcnJvcjogJXMnICUgKGZpbGVfbmFtZSwgZSkKLSAgICByZXR1cm4gRmFsc2UKLSAgcmV0
dXJuIFRydWUKLQotCi1kZWYgX092ZXJsYXlCYXJjb2RlQW5kQmFzZUZyYW1lcyhiYXJjb2Rlc19m
aWxlLCBiYXNlX2ZpbGUsIG91dHB1dF9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFyY29kZXNfY29tcG9uZW50X3NpemVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYmFzZV9jb21wb25lbnRfc2l6ZXMpOgotICAiIiJPdmVybGF5cyB0aGUgbmV4dCBZ
VVYgZnJhbWUgZnJvbSBhIGZpbGUgd2l0aCBhIGJhcmNvZGUuCi0KLSAgQXJnczoKLSAgICBiYXJj
b2Rlc19maWxlKEZpbGVPYmplY3QpOiBUaGUgWVVWIGZpbGUgY29udGFpbmluZyB0aGUgYmFyY29k
ZXMgKG9wZW5lZCkuCi0gICAgYmFzZV9maWxlKEZpbGVPYmplY3QpOiBUaGUgYmFzZSBZVVYgZmls
ZSAob3BlbmVkKS4KLSAgICBvdXRwdXRfZmlsZShGaWxlT2JqZWN0KTogVGhlIG91dHB1dCBvdmVy
bGFpZCBmaWxlIChvcGVuZWQpLgotICAgIGJhcmNvZGVzX2NvbXBvbmVudF9zaXplcyhsaXN0IG9m
IHR1cGxlcyk6IFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGVhY2ggWSwgVQotICAgICAgYW5kIFYg
cGxhbmUgb2YgdGhlIGJhcmNvZGVzIFlVViBmaWxlLgotICAgIGJhc2VfY29tcG9uZW50X3NpemVz
KGxpc3Qgb2YgdHVwbGVzKTogVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgZWFjaCBZLCBVIGFuZAot
ICAgICAgViBwbGFuZSBvZiB0aGUgYmFzZSBZVVYgZmlsZS4KLSAgUmV0dXJuOgotICAgIChib29s
KTogVHJ1ZSBpZiB0aGVyZSBhcmUgbW9yZSBwbGFuZXMgKGkuZS4gZnJhbWVzKSBpbiB0aGUgYmFz
ZSBmaWxlLCBmYWxzZQotICAgICAgb3RoZXJ3aXNlLgotICAiIiIKLSAgIyBXZSB3aWxsIGxvb3Ag
dGhyZWUgdGltZXMgLSBvbmNlIGZvciB0aGUgWSwgVSBhbmQgViBwbGFuZXMKLSAgZm9yICgoYmFy
Y29kZV9jb21wX3dpZHRoLCBiYXJjb2RlX2NvbXBfaGVpZ2h0KSwKLSAgICAgIChiYXNlX2NvbXBf
d2lkdGgsIGJhc2VfY29tcF9oZWlnaHQpKSBpbiB6aXAoYmFyY29kZXNfY29tcG9uZW50X3NpemVz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
X2NvbXBvbmVudF9zaXplcyk6Ci0gICAgZm9yIGJhc2Vfcm93IGluIHJhbmdlKGJhc2VfY29tcF9o
ZWlnaHQpOgotICAgICAgYmFyY29kZV9wbGFuZV90cmF2ZXJzZWQgPSBGYWxzZQotICAgICAgaWYg
KGJhc2Vfcm93IDwgYmFyY29kZV9jb21wX2hlaWdodCkgYW5kIG5vdCBiYXJjb2RlX3BsYW5lX3Ry
YXZlcnNlZDoKLSAgICAgICAgYmFyY29kZV9wbGFuZSA9IGJhcmNvZGVzX2ZpbGUucmVhZChiYXJj
b2RlX2NvbXBfd2lkdGgpCi0gICAgICAgIGlmIGJhcmNvZGVfcGxhbmUgPT0gIiI6Ci0gICAgICAg
ICAgYmFyY29kZV9wbGFuZV90cmF2ZXJzZWQgPSBUcnVlCi0gICAgICBlbHNlOgotICAgICAgICBi
YXJjb2RlX3BsYW5lX3RyYXZlcnNlZCA9IFRydWUKLSAgICAgIGJhc2VfcGxhbmUgPSBiYXNlX2Zp
bGUucmVhZChiYXNlX2NvbXBfd2lkdGgpCi0KLSAgICAgIGlmIGJhc2VfcGxhbmUgPT0gIiI6Ci0g
ICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICBpZiBub3QgYmFyY29kZV9wbGFuZV90cmF2ZXJz
ZWQ6Ci0gICAgICAgICMgU3Vic3RpdHV0ZSBwYXJ0IG9mIHRoZSBiYXNlIGNvbXBvbmVudCB3aXRo
IHRoZSB0b3AgY29tcG9uZW50Ci0gICAgICAgIG91dHB1dF9maWxlLndyaXRlKGJhcmNvZGVfcGxh
bmUpCi0gICAgICAgIGJhc2VfcGxhbmUgPSBiYXNlX3BsYW5lW2JhcmNvZGVfY29tcF93aWR0aDpd
Ci0gICAgICBvdXRwdXRfZmlsZS53cml0ZShiYXNlX3BsYW5lKQotICByZXR1cm4gVHJ1ZQotCi0K
LWRlZiBPdmVybGF5WXV2RmlsZXMoYmFyY29kZV93aWR0aCwgYmFyY29kZV9oZWlnaHQsIGJhc2Vf
d2lkdGgsIGJhc2VfaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICBiYXJjb2Rlc19maWxlX25h
bWUsIGJhc2VfZmlsZV9uYW1lLCBvdXRwdXRfZmlsZV9uYW1lKToKLSAgIiIiT3ZlcmxheXMgdHdv
IFlVViBmaWxlcyBzdGFydGluZyBmcm9tIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiBib3RoLgot
Ci0gIEFyZ3M6Ci0gICAgYmFyY29kZV93aWR0aChpbnQpOiBUaGUgd2lkdGggb2YgdGhlIGJhcmNv
ZGUgKHRvIGJlIG92ZXJsYWlkKS4KLSAgICBiYXJjb2RlX2hlaWdodChpbnQpOiBUaGUgaGVpZ2h0
IG9mIHRoZSBiYXJjb2RlICh0byBiZSBvdmVybGFpZCkuCi0gICAgYmFzZV93aWR0aChpbnQpOiBU
aGUgd2lkdGggb2YgYSBmcmFtZSBvZiB0aGUgYmFzZSBmaWxlLgotICAgIGJhc2VfaGVpZ2h0KGlu
dCk6IFRoZSBoZWlnaHQgb2YgYSBmcmFtZSBvZiB0aGUgYmFzZSBmaWxlLgotICAgIGJhcmNvZGVz
X2ZpbGVfbmFtZShzdHJpbmcpOiBUaGUgbmFtZSBvZiB0aGUgWVVWIGZpbGUgY29udGFpbmluZyB0
aGUgWVVWCi0gICAgICBiYXJjb2Rlcy4KLSAgICBiYXNlX2ZpbGVfbmFtZShzdHJpbmcpOiBUaGUg
bmFtZSBvZiB0aGUgYmFzZSBZVVYgZmlsZS4KLSAgICBvdXRwdXRfZmlsZV9uYW1lKHN0cmluZyk6
IFRoZSBuYW1lIG9mIHRoZSBvdXRwdXQgZmlsZSB3aGVyZSB0aGUgb3ZlcmxhaWQKLSAgICAgIHZp
ZGVvIHdpbGwgYmUgd3JpdHRlbi4KLSAgIiIiCi0gICMgQ29tcG9uZW50IHNpemVzID0gW1lfc2l6
ZXMsIFVfc2l6ZXMsIFZfc2l6ZXNdCi0gIGJhcmNvZGVzX2NvbXBvbmVudF9zaXplcyA9IFsoYmFy
Y29kZV93aWR0aCwgYmFyY29kZV9oZWlnaHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGJhcmNvZGVfd2lkdGgvMiwgYmFyY29kZV9oZWlnaHQvMiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoYmFyY29kZV93aWR0aC8yLCBiYXJjb2RlX2hlaWdodC8yKV0KLSAgYmFz
ZV9jb21wb25lbnRfc2l6ZXMgPSBbKGJhc2Vfd2lkdGgsIGJhc2VfaGVpZ2h0KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGJhc2Vfd2lkdGgvMiwgYmFzZV9oZWlnaHQvMiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIChiYXNlX3dpZHRoLzIsIGJhc2VfaGVpZ2h0LzIpXQotCi0gIGJh
cmNvZGVzX2ZpbGUgPSBvcGVuKGJhcmNvZGVzX2ZpbGVfbmFtZSwgJ3JiJykKLSAgYmFzZV9maWxl
ID0gb3BlbihiYXNlX2ZpbGVfbmFtZSwgJ3JiJykKLSAgb3V0cHV0X2ZpbGUgPSBvcGVuKG91dHB1
dF9maWxlX25hbWUsICd3YicpCi0KLSAgZGF0YV9sZWZ0ID0gVHJ1ZQotICB3aGlsZSBkYXRhX2xl
ZnQ6Ci0gICAgZGF0YV9sZWZ0ID0gX092ZXJsYXlCYXJjb2RlQW5kQmFzZUZyYW1lcyhiYXJjb2Rl
c19maWxlLCBiYXNlX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvdXRwdXRfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJhcmNvZGVzX2NvbXBvbmVudF9zaXplcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfY29tcG9uZW50X3NpemVzKQotCi0gIGJhcmNv
ZGVzX2ZpbGUuY2xvc2UoKQotICBiYXNlX2ZpbGUuY2xvc2UoKQotICBvdXRwdXRfZmlsZS5jbG9z
ZSgpCi0KLQotZGVmIENhbGN1bGF0ZUZyYW1lc051bWJlckZyb21ZdXYoeXV2X3dpZHRoLCB5dXZf
aGVpZ2h0LCBmaWxlX25hbWUpOgotICAiIiJDYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgZnJhbWVz
IG9mIGEgWVVWIHZpZGVvLgotCi0gIEFyZ3M6Ci0gICAgeXV2X3dpZHRoKGludCk6IFdpZHRoIG9m
IGEgZnJhbWUgb2YgdGhlIHl1diBmaWxlLgotICAgIHl1dl9oZWlnaHQoaW50KTogSGVpZ2h0IG9m
IGEgZnJhbWUgb2YgdGhlIFlVViBmaWxlLgotICAgIGZpbGVfbmFtZShzdHJpbmcpOiBUaGUgbmFt
ZSBvZiB0aGUgWVVWIGZpbGUuCi0gIFJldHVybjoKLSAgICAoaW50KTogVGhlIG51bWJlciBvZiBm
cmFtZXMgaW4gdGhlIFlVViBmaWxlLgotICAiIiIKLSAgZmlsZV9zaXplID0gb3MucGF0aC5nZXRz
aXplKGZpbGVfbmFtZSkKLQotICB5X3BsYW5lX3NpemUgPSB5dXZfd2lkdGggKiB5dXZfaGVpZ2h0
Ci0gIHVfcGxhbmVfc2l6ZSA9ICh5dXZfd2lkdGgvMikgKiAoeXV2X2hlaWdodC8yKSAgIyBFcXVh
bHMgdG8gViBwbGFuZSBzaXplIHRvbwotICBmcmFtZV9zaXplID0geV9wbGFuZV9zaXplICsgKDIg
KiB1X3BsYW5lX3NpemUpCi0gIHJldHVybiBpbnQoZmlsZV9zaXplL2ZyYW1lX3NpemUpICAjIFNo
b3VsZCBiZSBpbnQgYW55d2F5Ci0KLQotZGVmIF9Gb3JtSmFyc1N0cmluZyhwYXRoX3RvX3p4aW5n
KToKLSAgIiIiRm9ybXMgdGhlIHRoZSBaeGluZyBjb3JlIGFuZCBqYXZhc2UgamFycyBhcmd1bWVu
dC4KLQotICBBcmdzOgotICAgIHBhdGhfdG9fenhpbmcoc3RyaW5nKTogVGhlIHBhdGggdG8gdGhl
IFp4aW5nIGNoZWNrb3V0IGZvbGRlci4KLSAgUmV0dXJuOgotICAgIChzdHJpbmcpOiBUaGUgbmV3
bHkgZm9ybWVkIGphcnMgYXJndW1lbnQuCi0gICIiIgotICBqYXZhc2VfamFyID0gb3MucGF0aC5q
b2luKHBhdGhfdG9fenhpbmcsICJqYXZhc2UiLCAiamF2YXNlLmphciIpCi0gIGNvcmVfamFyID0g
b3MucGF0aC5qb2luKHBhdGhfdG9fenhpbmcsICJjb3JlIiwgImNvcmUuamFyIikKLSAgZGVsaW1p
dGVyID0gJzonCi0gIGlmIG9zLm5hbWUgIT0gJ3Bvc2l4JzoKLSAgICBkZWxpbWl0ZXIgPSAnOycK
LSAgcmV0dXJuIGphdmFzZV9qYXIgKyBkZWxpbWl0ZXIgKyBjb3JlX2phcgotCi1kZWYgX1BhcnNl
QXJncygpOgotICAiIiJSZWdpc3RlcnMgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zLiIiIgotICB1
c2FnZSA9ICJ1c2FnZTogJXByb2cgW29wdGlvbnNdIgotICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRp
b25QYXJzZXIodXNhZ2U9dXNhZ2UpCi0KLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYmFyY29kZV93
aWR0aCcsIHR5cGU9J2ludCcsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRf
QkFSQ09ERV9XSURUSCwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1dpZHRoIG9mIHRoZSBi
YXJjb2RlcyB0byBiZSBvdmVybGFpZCBvbiB0b3Agb2YgdGhlJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAnIGJhc2UgZmlsZS4gRGVmYXVsdDogJWRlZmF1bHQnKSkKLSAgcGFyc2VyLmFkZF9v
cHRpb24oJy0tYmFyY29kZV9oZWlnaHQnLCB0eXBlPSdpbnQnLCBkZWZhdWx0PTMyLAotICAgICAg
ICAgICAgICAgICAgICBoZWxwPSgnSGVpZ2h0IG9mIHRoZSBiYXJjb2RlcyB0byBiZSBvdmVybGFp
ZCBvbiB0b3Agb2YgdGhlJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnIGJhc2UgZmlsZS4g
RGVmYXVsdDogJWRlZmF1bHQnKSkKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYmFzZV9mcmFtZV93
aWR0aCcsIHR5cGU9J2ludCcsIGRlZmF1bHQ9MzUyLAotICAgICAgICAgICAgICAgICAgICBoZWxw
PSgnV2lkdGggb2YgdGhlIGJhc2UgWVVWIGZpbGVcJ3MgZnJhbWVzLiAnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBwYXJzZXIuYWRkX29wdGlvbign
LS1iYXNlX2ZyYW1lX2hlaWdodCcsIHR5cGU9J2ludCcsIGRlZmF1bHQ9Mjg4LAotICAgICAgICAg
ICAgICAgICAgICBoZWxwPSgnSGVpZ2h0IG9mIHRoZSB0b3AgWVVWIGZpbGVcJ3MgZnJhbWVzLiAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBwYXJz
ZXIuYWRkX29wdGlvbignLS1iYXJjb2Rlc195dXYnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX0JBUkNPREVTX0ZJTEUsCi0gICAgICAgICAgICAg
ICAgICAgIGhlbHA9KCdUaGUgWVVWIGZpbGUgd2l0aCB0aGUgYmFyY29kZXMgaW4gWVVWLiAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBwYXJzZXIu
YWRkX29wdGlvbignLS1iYXNlX3l1dicsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9J2Jhc2UueXV2
JywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1RoZSBiYXNlIFlVViBmaWxlIHRvIGJlIG92
ZXJsYWlkLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVsdCcp
KQotICBwYXJzZXIuYWRkX29wdGlvbignLS1vdXRwdXRfeXV2JywgdHlwZT0nc3RyaW5nJywgZGVm
YXVsdD0nb3V0cHV0Lnl1dicsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdUaGUgb3V0cHV0
IFlVViBmaWxlIGNvbnRhaW5pbmcgdGhlIGJhc2Ugb3ZlcmxhaWQnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICcgd2l0aCB0aGUgYmFyY29kZXMuIERlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBh
cnNlci5hZGRfb3B0aW9uKCctLXBuZ19iYXJjb2Rlc19vdXRwdXRfZGlyJywgdHlwZT0nc3RyaW5n
JywgZGVmYXVsdD0nLicsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdPdXRwdXQgZGlyZWN0
b3J5IHdoZXJlIHRoZSBQTkcgYmFyY29kZXMgd2lsbCBiZSAnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICdnZW5lcmF0ZWQuIERlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0
aW9uKCctLXBuZ19iYXJjb2Rlc19pbnB1dF9kaXInLCB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PScu
JywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0lucHV0IGRpcmVjdG9yeSBmcm9tIHdoZXJl
IHRoZSBQTkcgYmFyY29kZXMgd2lsbCBiZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdy
ZWFkLiBEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBwYXJzZXIuYWRkX29wdGlvbignLS15dXZfYmFy
Y29kZXNfb3V0cHV0X2RpcicsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9Jy4nLAotICAgICAgICAg
ICAgICAgICAgICBoZWxwPSgnT3V0cHV0IGRpcmVjdG9yeSB3aGVyZSB0aGUgWVVWIGJhcmNvZGVz
IHdpbGwgYmUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2VuZXJhdGVkLiBEZWZhdWx0
OiAlZGVmYXVsdCcpKQotICBwYXJzZXIuYWRkX29wdGlvbignLS15dXZfZnJhbWVzX2lucHV0X2Rp
cicsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9Jy4nLAotICAgICAgICAgICAgICAgICAgICBoZWxw
PSgnSW5wdXQgZGlyZWN0b3J5IGZyb20gd2hlcmUgdGhlIFlVViB3aWxsIGJlICcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3JlYWQgYmVmb3JlIGNvbWJpbmF0aW9uLiBEZWZhdWx0OiAlZGVm
YXVsdCcpKQotICBwYXJzZXIuYWRkX29wdGlvbignLS16eGluZ19kaXInLCB0eXBlPSdzdHJpbmcn
LCBkZWZhdWx0PSd6eGluZycsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdQYXRoIHRvIHRo
ZSBaeGluZyBiYXJjb2RlcyBsaWJyYXJ5LiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdE
ZWZhdWx0OiAlZGVmYXVsdCcpKQotICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKVswXQot
ICByZXR1cm4gb3B0aW9ucwotCi0KLWRlZiBtYWluKCk6Ci0gICIiIlRoZSBtYWluIGZ1bmN0aW9u
LgotCi0gIEEgc2ltcGxlIGludm9jYXRpb24gd2lsbCBiZToKLSAgLi93ZWJydGMvcnRjX3Rvb2xz
L2JhcmNvZGVfdG9vbHMvYmFyY29kZV9lbmNvZGVyLnB5IC0tYmFyY29kZV9oZWlnaHQ9MzIKLSAg
LS1iYXNlX2ZyYW1lX3dpZHRoPTM1MiAtLWJhc2VfZnJhbWVfaGVpZ2h0PTI4OAotICAtLWJhc2Vf
eXV2PTxwYXRoX2FuZF9uYW1lX29mX2Jhc2VfZmlsZT4KLSAgLS1vdXRwdXRfeXV2PTxwYXRoIGFu
ZCBuYW1lX29mX291dHB1dF9maWxlPgotICAiIiIKLSAgb3B0aW9ucyA9IF9QYXJzZUFyZ3MoKQot
ICAjIFRoZSBiYXJjb2RlcyB3aXRoIHdpbGwgYmUgZGlmZmVyZW50IHRoYW4gdGhlIGJhc2UgZnJh
bWUgd2lkdGggb25seSBpZgotICAjIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGF0IHRoZSBjb21tYW5k
IGxpbmUuCi0gIGlmIG9wdGlvbnMuYmFyY29kZV93aWR0aCA9PSBfREVGQVVMVF9CQVJDT0RFX1dJ
RFRIOgotICAgIG9wdGlvbnMuYmFyY29kZV93aWR0aCA9IG9wdGlvbnMuYmFzZV9mcmFtZV93aWR0
aAotICAjIElmIHRoZSB1c2VyIHByb3ZpZGVzIGEgdmFsdWUgZm9yIHRoZSBiYXJjb2RlcyBZVVYg
dmlkZW8gZmlsZSwgd2Ugd2lsbCBrZWVwCi0gICMgaXQuIE90aGVyd2lzZSB3ZSBjcmVhdGUgYSB0
ZW1wIGZpbGUgd2hpY2ggaXMgcmVtb3ZlZCBhZnRlciBpdCBoYXMgYmVlbiB1c2VkLgotICBrZWVw
X2JhcmNvZGVzX3l1dl9maWxlID0gRmFsc2UKLSAgaWYgb3B0aW9ucy5iYXJjb2Rlc195dXYgIT0g
X0RFRkFVTFRfQkFSQ09ERVNfRklMRToKLSAgICBrZWVwX2JhcmNvZGVzX3l1dl9maWxlID0gVHJ1
ZQotCi0gICMgQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgYmFyY29kZXMgLSBpdCBpcyBlcXVhbCB0
byB0aGUgbnVtYmVyIG9mIGZyYW1lcyBpbgotICAjIHRoZSBiYXNlIGZpbGUuCi0gIG51bWJlcl9v
Zl9iYXJjb2RlcyA9IENhbGN1bGF0ZUZyYW1lc051bWJlckZyb21ZdXYoCi0gICAgICBvcHRpb25z
LmJhc2VfZnJhbWVfd2lkdGgsIG9wdGlvbnMuYmFzZV9mcmFtZV9oZWlnaHQsIG9wdGlvbnMuYmFz
ZV95dXYpCi0KLSAgc2NyaXB0X2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgo
c3lzLmFyZ3ZbMF0pKQotICB6eGluZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Ro
aXJkX3BhcnR5JywgJ3p4aW5nJykKLSAgIyBHZW5lcmF0ZSBiYXJjb2RlcyAtIHdpbGwgZ2VuZXJh
dGUgdGhlbSBpbiBQTkcuCi0gIEdlbmVyYXRlVXBjYUJhcmNvZGVzKG51bWJlcl9vZl9iYXJjb2Rl
cywgb3B0aW9ucy5iYXJjb2RlX3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25z
LmJhcmNvZGVfaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZGlyZWN0b3J5
PW9wdGlvbnMucG5nX2JhcmNvZGVzX291dHB1dF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAg
IHBhdGhfdG9fenhpbmc9enhpbmdfZGlyKQotICAjIENvbnZlcnQgdGhlIFBORyBiYXJjb2RlcyB0
byB0byBZVVYgZm9ybWF0LgotICBDb252ZXJ0UG5nVG9ZdXZCYXJjb2RlcyhvcHRpb25zLnBuZ19i
YXJjb2Rlc19pbnB1dF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMueXV2
X2JhcmNvZGVzX291dHB1dF9kaXIpCi0gICMgQ29tYmluZSB0aGUgWVVWIGJhcmNvZGVzIGludG8g
b25lIFlVViBmaWxlLgotICBDb21iaW5lWXV2RnJhbWVzSW50b09uZUZpbGUob3B0aW9ucy5iYXJj
b2Rlc195dXYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9kaXJlY3Rvcnk9
b3B0aW9ucy55dXZfZnJhbWVzX2lucHV0X2RpcikKLSAgIyBPdmVybGF5IHRoZSBiYXJjb2RlcyBv
dmVyIHRoZSBiYXNlIGZpbGUuCi0gIE92ZXJsYXlZdXZGaWxlcyhvcHRpb25zLmJhcmNvZGVfd2lk
dGgsIG9wdGlvbnMuYmFyY29kZV9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICBvcHRpb25zLmJh
c2VfZnJhbWVfd2lkdGgsIG9wdGlvbnMuYmFzZV9mcmFtZV9oZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICBvcHRpb25zLmJhcmNvZGVzX3l1diwgb3B0aW9ucy5iYXNlX3l1diwgb3B0aW9ucy5vdXRw
dXRfeXV2KQotCi0gIGlmIG5vdCBrZWVwX2JhcmNvZGVzX3l1dl9maWxlOgotICAgICMgUmVtb3Zl
IHRoZSB0ZW1wb3JhcnkgYmFyY29kZXMgWVVWIGZpbGUKLSAgICBvcy5yZW1vdmUob3B0aW9ucy5i
YXJjb2Rlc195dXYpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgc3lzLmV4aXQo
bWFpbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvYnVpbGRfenhpbmcucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9i
dWlsZF96eGluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI2OTZhNzhjMmMz
NmZkMTIzYTlmYzEyNTMxZGMzNGMyZWQwZTlkNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9idWlsZF96eGluZy5weQorKysgL2Rldi9udWxs
CkBAIC0xLDQ0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKGMp
IDIwMTIgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0j
Ci0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCi0jIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSMgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotIyBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLQotaW1wb3J0IG9zCi1p
bXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotCi0KLWRlZiBSdW5BbnRCdWlsZENvbW1hbmQo
cGF0aF90b19hbnRfYnVpbGRfZmlsZSk6Ci0gICIiIlRyaWVzIHRvIGJ1aWxkIHRoZSBwYXNzZWQg
YnVpbGQgZmlsZSB3aXRoIGFudC4iIiIKLSAgYW50X2V4ZWN1dGFibGUgPSAnYW50JwotICBpZiBz
eXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICBpZiBvcy5nZXRlbnYoJ0FOVF9IT01FJyk6Ci0g
ICAgICBhbnRfZXhlY3V0YWJsZSA9IG9zLnBhdGguam9pbihvcy5nZXRlbnYoJ0FOVF9IT01FJyks
ICdiaW4nLCAnYW50LmJhdCcpCi0gICAgZWxzZToKLSAgICAgIGFudF9leGVjdXRhYmxlID0gJ2Fu
dC5iYXQnCi0gIGNtZCA9IFthbnRfZXhlY3V0YWJsZSwgJy1idWlsZGZpbGUnLCBwYXRoX3RvX2Fu
dF9idWlsZF9maWxlXQotICB0cnk6Ci0gICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21k
LCBzdGRvdXQ9c3lzLnN0ZG91dCwgc3RkZXJyPXN5cy5zdGRlcnIpCi0gICAgcHJvY2Vzcy53YWl0
KCkKLSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgIHByaW50ID4+IHN5cy5z
dGRlcnIsICdGYWlsZWQgdG8gZXhlY3V0ZTogJXMnICUgJyAnLmpvaW4oY21kKQotICAgIHJldHVy
biBwcm9jZXNzLnJldHVybmNvZGUKLSAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vy
cm9yIGFzIGU6Ci0gICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgJ0ZhaWxlZCB0byBleGVjdXRlOiAl
cy5cbkNhdXNlOiAlcycgJSAoJyAnLmpvaW4oY21kKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKQotICAgIHJldHVybiAt
MQotCi1kZWYgbWFpbigpOgotICBjb3JlX2J1aWxkID0gb3MucGF0aC5qb2luKCd0aGlyZF9wYXJ0
eScsICd6eGluZycsICdjb3JlJywgJ2J1aWxkLnhtbCcpCi0gIFJ1bkFudEJ1aWxkQ29tbWFuZChj
b3JlX2J1aWxkKQotCi0gIGphdmFzZV9idWlsZCA9IG9zLnBhdGguam9pbigndGhpcmRfcGFydHkn
LCAnenhpbmcnLCAnamF2YXNlJywgJ2J1aWxkLnhtbCcpCi0gIHJldHVybiBSdW5BbnRCdWlsZENv
bW1hbmQoamF2YXNlX2J1aWxkKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIHN5
cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL2hlbHBlcl9mdW5jdGlvbnMucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFy
Y29kZV90b29scy9oZWxwZXJfZnVuY3Rpb25zLnB5CmluZGV4IGUyNzMyMmY0MWY5MjY3MGI3MTFh
ZTVmOGE4YTdiNjA3MWUxNDA3YzMuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4
YzUzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL2hlbHBlcl9mdW5jdGlvbnMucHkKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVf
dG9vbHMvaGVscGVyX2Z1bmN0aW9ucy5weQpAQCAtMSwxMDUgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jIENvcHlyaWdodCAoYykgMjAxMiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSMgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAot
IyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5Ci0jIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgotCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi1pbXBvcnQgb3MKLWltcG9ydCBz
dWJwcm9jZXNzCi1pbXBvcnQgc3lzCi0KLV9ERUZBVUxUX1BBRERJTkcgPSA0Ci0KLQotY2xhc3Mg
SGVscGVyRXJyb3IoRXhjZXB0aW9uKToKLSAgIiIiRXhjZXB0aW9uIHJhaXNlZCBmb3IgZXJyb3Jz
IGluIHRoZSBoZWxwZXIuIiIiCi0gIHBhc3MKLQotCi1kZWYgWmVyb1BhZChudW1iZXIsIHBhZGRp
bmc9X0RFRkFVTFRfUEFERElORyk6Ci0gICIiIkNvbnZlcnRzIGFuIGludCBpbnRvIGEgemVybyBw
YWRkZWQgc3RyaW5nLgotCi0gIEFyZ3M6Ci0gICAgbnVtYmVyKGludCk6IFRoZSBudW1iZXIgdG8g
Y29udmVydC4KLSAgICBwYWRkaW5nKGludCk6IFRoZSBudW1iZXIgb2YgY2hhcnMgaW4gdGhlIG91
dHB1dC4gTm90ZSB0aGF0IGlmIHlvdSBwYXNzIGZvcgotICAgICAgZXhhbXBsZSBudW1iZXI9MjM0
NTYgYW5kIHBhZGRpbmc9NCwgdGhlIG91dHB1dCB3aWxsIHN0aWxsIGJlICcyMzQ1NicsCi0gICAg
ICBpLmUuIGl0IHdpbGwgbm90IGJlIGNyb3BwZWQuIElmIHlvdSBwYXNzIG51bWJlcj0yIGFuZCBw
YWRkaW5nPTQsIHRoZQotICAgICAgcmV0dXJuIHZhbHVlIHdpbGwgYmUgJzAwMDInLgotICBSZXR1
cm46Ci0gICAgKHN0cmluZyk6IFRoZSB6ZXJvIHBhZGRlZCBudW1iZXIgY29udmVydGVkIHRvIHN0
cmluZy4KLSAgIiIiCi0gIHJldHVybiBzdHIobnVtYmVyKS56ZmlsbChwYWRkaW5nKQotCi0KLWRl
ZiBSdW5TaGVsbENvbW1hbmQoY21kX2xpc3QsIGZhaWxfbXNnPU5vbmUpOgotICAiIiJFeGVjdXRl
cyBhIGNvbW1hbmQuCi0KLSAgQXJnczoKLSAgICBjbWRfbGlzdChsaXN0KTogQ29tbWFuZCBsaXN0
IHRvIGV4ZWN1dGUuCi0gICAgZmFpbF9tc2coc3RyaW5nKTogTWVzc2FnZSBkZXNjcmliaW5nIHRo
ZSBlcnJvciBpbiBjYXNlIHRoZSBjb21tYW5kIGZhaWxzLgotCi0gIFJldHVybjoKLSAgICAoc3Ry
aW5nKTogVGhlIHN0YW5kYXJkIG91dHB1dCBmcm9tIHJ1bm5pbmcgdGhlIGNvbW1hbmQuCi0KLSAg
UmFpc2U6Ci0gICAgSGVscGVyRXJyb3I6IElmIGNvbW1hbmQgZmFpbHMuCi0gICIiIgotICBwcm9j
ZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWRfbGlzdCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKLSAg
b3V0cHV0LCBlcnJvciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICBpZiBwcm9jZXNzLnJldHVy
bmNvZGUgIT0gMDoKLSAgICBpZiBmYWlsX21zZzoKLSAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIs
IGZhaWxfbXNnCi0gICAgcmFpc2UgSGVscGVyRXJyb3IoJ0ZhaWxlZCB0byBydW4gJXM6IGNvbW1h
bmQgcmV0dXJuZWQgJWQgYW5kIHByaW50ZWQgJwotICAgICAgICAgICAgICAgICAgICAgICclcyBh
bmQgJXMnICUgKCcgJy5qb2luKGNtZF9saXN0KSwgcHJvY2Vzcy5yZXR1cm5jb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwgZXJyb3IpKQotICByZXR1cm4g
b3V0cHV0LnN0cmlwKCkKLQotCi1kZWYgUGVyZm9ybUFjdGlvbk9uQWxsRmlsZXMoZGlyZWN0b3J5
LCBmaWxlX3BhdHRlcm4sIGZpbGVfZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0X251bWJlciwgYWN0aW9uLCAqKmt3YXJncyk6Ci0gICIiIkZ1bmN0aW9uIHRoYXQg
cGVyZm9ybXMgYSBnaXZlbiBhY3Rpb24gb24gYWxsIGZpbGVzIG1hdGNoaW5nIGEgcGF0dGVybi4K
LQotICBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGZpbGVzIGFyZSBuYW1lZCBmaWxlX3BhdHRlcm54
eHh4LmZpbGVfZXh0ZW5zaW9uLCB3aGVyZQotICB4eHh4IGFyZSBkaWdpdHMgc3RhcnRpbmcgZnJv
bSBzdGFydF9udW1iZXIuCi0KLSAgQXJnczoKLSAgICBkaXJlY3Rvcnkoc3RyaW5nKTogVGhlIGRp
cmVjdG9yeSB3aGVyZSB0aGUgZmlsZXMgbGl2ZS4KLSAgICBmaWxlX3BhdHRlcm4oc3RyaW5nKTog
VGhlIG5hbWUgcGF0dGVybiBvZiB0aGUgZmlsZXMuCi0gICAgZmlsZV9leHRlbnNpb24oc3RyaW5n
KTogVGhlIGZpbGVzJyBleHRlbnNpb24uCi0gICAgc3RhcnRfbnVtYmVyKGludCk6IEZyb20gd2hl
cmUgdG8gc3RhcnQgdG8gY291bnQgZnJhbWVzLgotICAgIGFjdGlvbihmdW5jdGlvbik6IFRoZSBh
Y3Rpb24gdG8gYmUgcGVyZm9ybWVkIG92ZXIgdGhlIGZpbGVzLiBNdXN0IHJldHVybgotICAgICAg
ICBGYWxzZSBpZiB0aGUgYWN0aW9uIGZhaWxlZCwgVHJ1ZSBvdGhlcndpc2UuIEl0IHNob3VsZCB0
YWtlIGEgZmlsZSBuYW1lCi0gICAgICAgIGFzIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgKiprd2Fy
Z3MgYXMgYXJndW1lbnRzLiBUaGUgZnVuY3Rpb24gbXVzdCBiZQotICAgICAgICBwb3NzaWJsZSB0
byBwaWNrbGUsIHNvIGl0IGNhbm5vdCBiZSBhIGJvdW5kIGZ1bmN0aW9uIChmb3IgaW5zdGFuY2Up
LgotCi0gIFJldHVybjoKLSAgICAoYm9vbCk6IFdoZXRoZXIgcGVyZm9ybWluZyB0aGUgYWN0aW9u
IG92ZXIgYWxsIGZpbGVzIHdhcyBzdWNjZXNzZnVsIG9yIG5vdC4KLSAgIiIiCi0gIGZpbGVfcHJl
Zml4ID0gb3MucGF0aC5qb2luKGRpcmVjdG9yeSwgZmlsZV9wYXR0ZXJuKQotICBmaWxlX251bWJl
ciA9IHN0YXJ0X251bWJlcgotCi0gIHByb2Nlc3NfcG9vbCA9IG11bHRpcHJvY2Vzc2luZy5Qb29s
KHByb2Nlc3Nlcz1tdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkpCi0gIHJlc3VsdHMgPSBbXQot
ICB3aGlsZSBUcnVlOgotICAgIHplcm9fcGFkZGVkX2ZpbGVfbnVtYmVyID0gWmVyb1BhZChmaWxl
X251bWJlcikKLSAgICBmaWxlX25hbWUgPSBmaWxlX3ByZWZpeCArIHplcm9fcGFkZGVkX2ZpbGVf
bnVtYmVyICsgJy4nICsgZmlsZV9leHRlbnNpb24KLSAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUo
ZmlsZV9uYW1lKToKLSAgICAgIGJyZWFrCi0gICAgZnV0dXJlID0gcHJvY2Vzc19wb29sLmFwcGx5
X2FzeW5jKGFjdGlvbiwgYXJncz0oZmlsZV9uYW1lLCksIGt3ZHM9a3dhcmdzKQotICAgIHJlc3Vs
dHMuYXBwZW5kKGZ1dHVyZSkKLSAgICBmaWxlX251bWJlciArPSAxCi0KLSAgc3VjY2Vzc2Z1bCA9
IFRydWUKLSAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgotICAgIGlmIG5vdCByZXN1bHQuZ2V0KCk6
Ci0gICAgICBwcmludCAiQXQgbGVhc3Qgb25lIGFjdGlvbiAlcyBmYWlsZWQgZm9yIGZpbGVzICVz
eHh4eC4lcy4iICUgKAotICAgICAgICAgIGFjdGlvbiwgZmlsZV9wYXR0ZXJuLCBmaWxlX2V4dGVu
c2lvbikKLSAgICAgIHN1Y2Nlc3NmdWwgPSBGYWxzZQotCi0gIHByb2Nlc3NfcG9vbC5jbG9zZSgp
Ci0gIHJldHVybiBzdWNjZXNzZnVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy95dXZfY3JvcHBlci5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9i
YXJjb2RlX3Rvb2xzL3l1dl9jcm9wcGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2MDlmMDdkYzljYzdhZDkwZWMyZDQyOTE2N2Y5MmI1M2E3ODJjZjNhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL3l1dl9jcm9wcGVyLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgot
IyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0jCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0jIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSMgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotIyBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
LQotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotCi1kZWYgX0Nyb3BP
bmVGcmFtZSh5dXZfZmlsZSwgb3V0cHV0X2ZpbGUsIGNvbXBvbmVudF9zaXplcyk6Ci0gICIiIkNy
b3BzIG9uZSBmcmFtZS4KLQotICBUaGlzIGZ1bmN0aW9uIGNyb3BzIG9uZSBmcmFtZSBnb2luZyB0
aHJvdWdoIGFsbCB0aGUgWVVWIHBsYW5lcyBhbmQgY3JvcHBpbmcKLSAgcmVzcGVjdGl2ZSBhbW91
bnQgb2Ygcm93cy4KLQotICBBcmdzOgotICAgIHl1dl9maWxlKGZpbGUpOiBUaGUgb3BlbmVkIChm
b3IgYmluYXJ5IHJlYWRpbmcpIFlVViBmaWxlLgotICAgIG91dHB1dF9maWxlKGZpbGUpOiBUaGUg
b3BlbmVkIChmb3IgYmluYXJ5IHdyaXRpbmcpIGZpbGUuCi0gICAgY29tcG9uZW50X3NpemVzKGxp
c3Qgb2YgMyAzLXBsZXMpOiBUaGUgbGlzdCBjb250YWlucyB0aGUgc2l6ZXMgZm9yIGFsbCB0aGUK
LSAgICAgIHBsYW5lcyAoWSwgVSwgVikgb2YgdGhlIFlVViBmaWxlIHBsdXMgdGhlIGNyb3BfaGVp
Z2h0IHNjYWxlZCBmb3IgZXZlcnkKLSAgICAgIHBsYW5lLiBUaGUgc2l6ZXMgZXF1YWwgd2lkdGgs
IGhlaWdodCBhbmQgY3JvcF9oZWlnaHQgZm9yIHRoZSBZIHBsYW5lLAotICAgICAgYW5kIGFyZSBl
cXVhbCB0byB3aWR0aC8yLCBoZWlnaHQvMiBhbmQgY3JvcF9oZWlnaHQvMiBmb3IgdGhlIFUgYW5k
IFYKLSAgICAgIHBsYW5lcy4KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1ZSBpZiB0aGVyZSBh
cmUgbW9yZSBmcmFtZXMgdG8gY3JvcCwgRmFsc2Ugb3RoZXJ3aXNlLgotICAiIiIKLSAgZm9yIGNv
bXBfd2lkdGgsIGNvbXBfaGVpZ2h0LCBjb21wX2Nyb3BfaGVpZ2h0IGluIGNvbXBvbmVudF9zaXpl
czoKLSAgICBmb3Igcm93IGluIHJhbmdlKGNvbXBfaGVpZ2h0KToKLSAgICAgICMgUmVhZCB0aGUg
cGxhbmUgZGF0YSBmb3IgdGhpcyByb3cuCi0gICAgICB5dXZfcGxhbmUgPSB5dXZfZmlsZS5yZWFk
KGNvbXBfd2lkdGgpCi0KLSAgICAgICMgSWYgdGhlIHBsYW5lIGlzIGVtcHR5LCB3ZSBoYXZlIHJl
YWNoZWQgdGhlIGVuZCBvZiB0aGUgZmlsZS4KLSAgICAgIGlmIHl1dl9wbGFuZSA9PSAiIjoKLSAg
ICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICMgT25seSB3cml0ZSB0aGUgcGxhbmUgZGF0YSBm
b3IgdGhlIHJvd3MgYmlnZ2VyIHRoYW4gY3JvcF9oZWlnaHQuCi0gICAgICBpZiByb3cgPj0gY29t
cF9jcm9wX2hlaWdodDoKLSAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoeXV2X3BsYW5lKQotICBy
ZXR1cm4gVHJ1ZQotCi0KLWRlZiBDcm9wRnJhbWVzKHl1dl9maWxlX25hbWUsIG91dHB1dF9maWxl
X25hbWUsIHdpZHRoLCBoZWlnaHQsIGNyb3BfaGVpZ2h0KToKLSAgIiIiQ3JvcHMgcm93cyBvZiBw
aXhlbHMgZnJvbSB0aGUgdG9wIG9mIHRoZSBZVVYgZnJhbWVzLgotCi0gIFRoaXMgZnVuY3Rpb24g
Z29lcyB0aHJvdWdoIGFsbCB0aGUgZnJhbWVzIGluIGEgdmlkZW8gYW5kIGNyb3BzIHRoZSBjcm9w
X2hlaWdodAotICB0b3AgcGl4ZWwgcm93cyBvZiBldmVyeSBmcmFtZS4KLQotICBBcmdzOgotICAg
IHl1dl9maWxlX25hbWUoc3RyaW5nKTogVGhlIG5hbWUgb2YgdGhlIFlVViBmaWxlIHRvIGJlIGNy
b3BwZWQuCi0gICAgb3V0cHV0X2ZpbGVfbmFtZShzdHJpbmcpOiBUaGUgbmFtZSBvZiB0aGUgb3V0
cHV0IGZpbGUgd2hlcmUgdGhlIHJlc3VsdCB3aWxsCi0gICAgICBiZSB3cml0dGVuLgotICAgIHdp
ZHRoKGludCk6IFRoZSB3aWR0aCBvZiB0aGUgb3JpZ2luYWwgWVVWIGZpbGUuCi0gICAgaGVpZ2h0
KGludCk6IFRoZSBoZWlnaHQgb2YgdGhlIG9yaWdpbmFsIFlVViBmaWxlLgotICAgIGNyb3BfaGVp
Z2h0KGludCk6IFRoZSBoZWlnaHQgKHRoZSBudW1iZXIgb2YgcGl4ZWwgcm93cykgdG8gYmUgY3Jv
cHBlZCBmcm9tCi0gICAgICB0aGUgZnJhbWVzLgotICAiIiIKLSAgIyBDb21wb25lbnQgc2l6ZXMg
PSBbWV9zaXplcywgVV9zaXplcywgVl9zaXplc10uCi0gIGNvbXBvbmVudF9zaXplcyA9IFsod2lk
dGgsIGhlaWdodCwgY3JvcF9oZWlnaHQpLAotICAgICAgICAgICAgICAgICAgICAgKHdpZHRoLzIs
IGhlaWdodC8yLCBjcm9wX2hlaWdodC8yKSwKLSAgICAgICAgICAgICAgICAgICAgICh3aWR0aC8y
LCBoZWlnaHQvMiwgY3JvcF9oZWlnaHQvMildCi0KLSAgeXV2X2ZpbGUgPSBvcGVuKHl1dl9maWxl
X25hbWUsICdyYicpCi0gIG91dHB1dF9maWxlID0gb3BlbihvdXRwdXRfZmlsZV9uYW1lLCAnd2In
KQotCi0gIGRhdGFfbGVmdCA9IFRydWUKLSAgd2hpbGUgZGF0YV9sZWZ0OgotICAgIGRhdGFfbGVm
dCA9IF9Dcm9wT25lRnJhbWUoeXV2X2ZpbGUsIG91dHB1dF9maWxlLCBjb21wb25lbnRfc2l6ZXMp
Ci0KLSAgeXV2X2ZpbGUuY2xvc2UoKQotICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLQotZGVmIF9Q
YXJzZUFyZ3MoKToKLSAgIiIiUmVnaXN0ZXJzIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucy4iIiIK
LSAgdXNhZ2UgPSAidXNhZ2U6ICVwcm9nIFtvcHRpb25zXSIKLSAgcGFyc2VyID0gb3B0cGFyc2Uu
T3B0aW9uUGFyc2VyKHVzYWdlPXVzYWdlKQotCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLXdpZHRo
JywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0zNTIsCi0gICAgICAg
ICAgICAgICAgICAgIGhlbHA9KCdXaWR0aCBvZiB0aGUgWVVWIGZpbGVcJ3MgZnJhbWVzLiAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBwYXJzZXIu
YWRkX29wdGlvbignLS1oZWlnaHQnLCB0eXBlPSdpbnQnLCBkZWZhdWx0PTI4OCwKLSAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ0hlaWdodCBvZiB0aGUgWVVWIGZpbGVcJ3MgZnJhbWVzLiAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBwYXJzZXIu
YWRkX29wdGlvbignLS1jcm9wX2hlaWdodCcsIHR5cGU9J2ludCcsIGRlZmF1bHQ9MzIsCi0gICAg
ICAgICAgICAgICAgICAgIGhlbHA9KCdIb3cgbXVjaCBvZiB0aGUgdG9wIG9mIHRoZSBZVVYgZmls
ZSB0byBjcm9wLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdIYXMgdG8gYmUgbW9kdWxl
IG9mIDIuIERlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLXl1dl9m
aWxlJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1RoZSBZVVYg
ZmlsZSB0byBiZSBjcm9wcGVkLicpKQotICBwYXJzZXIuYWRkX29wdGlvbignLS1vdXRwdXRfZmls
ZScsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9J291dHB1dC55dXYnLAotICAgICAgICAgICAgICAg
ICAgICBoZWxwPSgnVGhlIG91dHB1dCBZVVYgZmlsZSBjb250YWluaW5nIHRoZSBjcm9wcGVkIFlV
Vi4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnRGVmYXVsdDogJWRlZmF1bHQnKSkKLSAg
b3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKClbMF0KLSAgaWYgbm90IG9wdGlvbnMueXV2X2Zp
bGU6Ci0gICAgcGFyc2VyLmVycm9yKCd5dXZfZmlsZSBhcmd1bWVudCBtaXNzaW5nLiBQbGVhc2Ug
c3BlY2lmeSBpbnB1dCBZVVYgZmlsZSEnKQotICByZXR1cm4gb3B0aW9ucwotCi0KLWRlZiBtYWlu
KCk6Ci0gICIiIkEgdG9vbCB0byBjcm9wIHJvd3Mgb2YgcGl4ZWxzIGZyb20gdGhlIHRvcCBwYXJ0
IG9mIGEgWVVWIGZpbGUuCi0KLSAgQSBzaW1wbGUgaW52b2NhdGlvbiB3aWxsIGJlOgotICAuL3l1
dl9jcm9wcGVyLnB5IC0td2lkdGg9NjQwIC0taGVpZ2h0PTQ4MCAtLWNyb3BfaGVpZ2h0PTMyCi0g
IC0teXV2X2ZpbGU9PHBhdGhfYW5kX25hbWVfb2ZfeXV2X2ZpbGU+Ci0gIC0tb3V0cHV0X3l1dj08
cGF0aCBhbmQgbmFtZV9vZl9vdXRwdXRfZmlsZT4KLSAgIiIiCi0gIG9wdGlvbnMgPSBfUGFyc2VB
cmdzKCkKLQotICBpZiBvcy5wYXRoLmdldHNpemUob3B0aW9ucy55dXZfZmlsZSkgPT0gMDoKLSAg
ICBzeXMuc3RkZXJyLndyaXRlKCdFcnJvcjogVGhlIFlVViBmaWxlIHlvdSBoYXZlIHBhc3NlZCBo
YXMgc2l6ZSAwLiBUaGUgJwotICAgICAgICAgICAgICAgICAgICAgJ3Byb2R1Y2VkIG91dHB1dCB3
aWxsIGFsc28gaGF2ZSBzaXplIDAuXG4nKQotICAgIHJldHVybiAtMQotCi0gIENyb3BGcmFtZXMo
b3B0aW9ucy55dXZfZmlsZSwgb3B0aW9ucy5vdXRwdXRfZmlsZSwgb3B0aW9ucy53aWR0aCwKLSAg
ICAgICAgICAgICBvcHRpb25zLmhlaWdodCwgb3B0aW9ucy5jcm9wX2hlaWdodCkKLSAgcmV0dXJu
IDAKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBzeXMuZXhpdChtYWluKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
dG9vbHMvY29tcGFyZV92aWRlb3MucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvY29tcGFyZV92aWRlb3MucHkKaW5kZXggNzk3OTA0MzliMTc2
ZGFhYzE5MTcyN2NkMGMyMTdjOTQ2ZDUyNTc5ZC4uMGNiNGE2ZGRiMTk5ZjU2MGY0NjdjNGRkZDli
MjU1MWNmNDQzYzYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX3Rvb2xzL2NvbXBhcmVfdmlkZW9zLnB5CisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9jb21wYXJlX3ZpZGVvcy5w
eQpAQCAtNyw2ICs3LDcgQEAKICMgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQogIyBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KIAoraW1wb3J0IGpzb24KIGltcG9ydCBvcHRw
YXJzZQogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCkBAIC00NSwyNSArNDYsMTUgQEAgZGVmIF9Q
YXJzZUFyZ3MoKToKICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdm1hZl9waG9uZV9tb2RlbCcsIGFj
dGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1doZXRoZXIgdG8g
dXNlIHBob25lIG1vZGVsIGluIFZNQUYuJykKICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYmFyY29k
ZV9kZWNvZGVyJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1Bh
dGggdG8gdGhlIGJhcmNvZGUgZGVjb2RlciBzY3JpcHQuIEJ5IGRlZmF1bHQsIHdlICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3dpbGwgYXNzdW1lIHdlIGNhbiBmaW5kIGl0IGluIGJhcmNv
ZGVfdG9vbHMvJwotICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsYXRpdmUgdG8gdGhpcyBk
aXJlY3RvcnkuJykpCisgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdERVBSRUNBVEVEJykpCiAg
IHBhcnNlci5hZGRfb3B0aW9uKCctLWZmbXBlZ19wYXRoJywgdHlwZT0nc3RyaW5nJywKLSAgICAg
ICAgICAgICAgICAgICAgaGVscD0oJ1RoZSBwYXRoIHRvIHdoZXJlIHRoZSBmZm1wZWcgZXhlY3V0
YWJsZSBpcyBsb2NhdGVkLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdJZiBvbWl0dGVk
LCBpdCB3aWxsIGJlIGFzc3VtZWQgdG8gYmUgcHJlc2VudCBpbiB0aGUgJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAnUEFUSCB3aXRoIHRoZSBuYW1lIGZmbXBlZ1suZXhlXS4nKSkKKyAgICAg
ICAgICAgICAgICAgICAgaGVscD0oJ0RFUFJFQ0FURUQnKSkKICAgcGFyc2VyLmFkZF9vcHRpb24o
Jy0tenhpbmdfcGF0aCcsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9
KCdUaGUgcGF0aCB0byB3aGVyZSB0aGUgenhpbmcgZXhlY3V0YWJsZSBpcyBsb2NhdGVkLiAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICdJZiBvbWl0dGVkLCBpdCB3aWxsIGJlIGFzc3VtZWQg
dG8gYmUgcHJlc2VudCBpbiB0aGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnUEFUSCB3
aXRoIHRoZSBuYW1lIHp4aW5nWy5leGVdLicpKQorICAgICAgICAgICAgICAgICAgICBoZWxwPSgn
REVQUkVDQVRFRCcpKQogICBwYXJzZXIuYWRkX29wdGlvbignLS1zdGF0c19maWxlX3JlZicsIHR5
cGU9J3N0cmluZycsIGRlZmF1bHQ9J3N0YXRzX3JlZi50eHQnLAotICAgICAgICAgICAgICAgICAg
ICBoZWxwPSgnUGF0aCB0byB0aGUgdGVtcG9yYXJ5IHN0YXRzIGZpbGUgdG8gYmUgY3JlYXRlZCBh
bmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlZCBmb3IgdGhlIHJlZmVyZW5jZSB2
aWRlbyBmaWxlLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVs
dCcpKQorICAgICAgICAgICAgICAgICAgICBoZWxwPSgnREVQUkVDQVRFRCcpKQogICBwYXJzZXIu
YWRkX29wdGlvbignLS1zdGF0c19maWxlX3Rlc3QnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PSdzdGF0c190ZXN0LnR4dCcsCi0gICAgICAgICAgICAgICAgICAg
IGhlbHA9KCdQYXRoIHRvIHRoZSB0ZW1wb3Jhcnkgc3RhdHMgZmlsZSB0byBiZSBjcmVhdGVkIGFu
ZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd1c2VkIGZvciB0aGUgdGVzdCB2aWRlbyBm
aWxlLiBEZWZhdWx0OiAlZGVmYXVsdCcpKQorICAgICAgICAgICAgICAgICAgICBoZWxwPSgnREVQ
UkVDQVRFRCcpKQogICBwYXJzZXIuYWRkX29wdGlvbignLS1zdGF0c19maWxlJywgdHlwZT0nc3Ry
aW5nJywKICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0RFUFJFQ0FURUQnKSkKICAgcGFyc2Vy
LmFkZF9vcHRpb24oJy0teXV2X2ZyYW1lX3dpZHRoJywgdHlwZT0naW50JywgZGVmYXVsdD02NDAs
CkBAIC03NCwxMSArNjUsNiBAQCBkZWYgX1BhcnNlQXJncygpOgogICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdXaGVyZSB0byBzdG9yZSBwZXJmIHJlc3VsdHMgaW4gY2hhcnRqc29uIGZvcm1hdC4n
KQogICBvcHRpb25zLCBfID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCi0gIGlmIG9wdGlvbnMuc3Rh
dHNfZmlsZToKLSAgICBvcHRpb25zLnN0YXRzX2ZpbGVfdGVzdCA9IG9wdGlvbnMuc3RhdHNfZmls
ZQotICAgIHByaW50ICgnV0FSTklORzogVXNpbmcgZGVwcmVjYXRlZCBzd2l0Y2ggLS1zdGF0c19m
aWxlLiAnCi0gICAgICAgICAgICdUaGUgbmV3IGZsYWcgaXMgLS1zdGF0c19maWxlX3Rlc3QuJykK
LQogICBpZiBub3Qgb3B0aW9ucy5yZWZfdmlkZW86CiAgICAgcGFyc2VyLmVycm9yKCdZb3UgbXVz
dCBwcm92aWRlIGEgcGF0aCB0byB0aGUgcmVmZXJlbmNlIHZpZGVvIScpCiAgIGlmIG5vdCBvcy5w
YXRoLmV4aXN0cyhvcHRpb25zLnJlZl92aWRlbyk6CkBAIC0xMDcsMzQgKzkzLDYgQEAgZGVmIF9E
ZXZOdWxsKCk6CiAgICIiIgogICByZXR1cm4gb3Blbihvcy5kZXZudWxsLCAncicpCiAKLWRlZiBE
ZWNvZGVCYXJjb2Rlc0luVmlkZW8ob3B0aW9ucywgcGF0aF90b19kZWNvZGVyLCB2aWRlbywgc3Rh
dF9maWxlKToKLSAgIyBSdW4gYmFyY29kZSBkZWNvZGVyIG9uIHRoZSB0ZXN0IHZpZGVvIHRvIGlk
ZW50aWZ5IGZyYW1lIG51bWJlcnMuCi0gIHBuZ193b3JraW5nX2RpcmVjdG9yeSA9IHRlbXBmaWxl
Lm1rZHRlbXAoKQotICBjbWQgPSBbCi0gICAgc3lzLmV4ZWN1dGFibGUsCi0gICAgcGF0aF90b19k
ZWNvZGVyLAotICAgICctLXl1dl9maWxlPSVzJyAlIHZpZGVvLAotICAgICctLXl1dl9mcmFtZV93
aWR0aD0lZCcgJSBvcHRpb25zLnl1dl9mcmFtZV93aWR0aCwKLSAgICAnLS15dXZfZnJhbWVfaGVp
Z2h0PSVkJyAlIG9wdGlvbnMueXV2X2ZyYW1lX2hlaWdodCwKLSAgICAnLS1zdGF0c19maWxlPSVz
JyAlIHN0YXRfZmlsZSwKLSAgICAnLS1wbmdfd29ya2luZ19kaXI9JXMnICUgcG5nX3dvcmtpbmdf
ZGlyZWN0b3J5LAotICBdCi0gIGlmIG9wdGlvbnMuenhpbmdfcGF0aDoKLSAgICBjbWQuYXBwZW5k
KCctLXp4aW5nX3BhdGg9JXMnICUgb3B0aW9ucy56eGluZ19wYXRoKQotICBpZiBvcHRpb25zLmZm
bXBlZ19wYXRoOgotICAgIGNtZC5hcHBlbmQoJy0tZmZtcGVnX3BhdGg9JXMnICUgb3B0aW9ucy5m
Zm1wZWdfcGF0aCkKLQotCi0gIGJhcmNvZGVfZGVjb2RlciA9IHN1YnByb2Nlc3MuUG9wZW4oY21k
LCBzdGRpbj1fRGV2TnVsbCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZG91dD1zeXMuc3Rkb3V0LCBzdGRlcnI9c3lzLnN0ZGVycikKLSAgYmFyY29kZV9kZWNvZGVy
LndhaXQoKQotCi0gIHNodXRpbC5ybXRyZWUocG5nX3dvcmtpbmdfZGlyZWN0b3J5KQotICBpZiBi
YXJjb2RlX2RlY29kZXIucmV0dXJuY29kZSAhPSAwOgotICAgIHByaW50ICdGYWlsZWQgdG8gcnVu
IGJhcmNvZGUgZGVjb2RlciBzY3JpcHQuJwotICAgIHJldHVybiAxCi0gIHJldHVybiAwCi0KIAog
ZGVmIF9SdW5GcmFtZUFuYWx5emVyKG9wdGlvbnMsIHl1dl9kaXJlY3Rvcnk9Tm9uZSk6CiAgICIi
IlJ1biBmcmFtZSBhbmFseXplciB0byBjb21wYXJlIHRoZSB2aWRlb3MgYW5kIHByaW50IG91dHB1
dC4iIiIKQEAgLTE2MiwxMiArMTIwLDkgQEAgZGVmIF9SdW5GcmFtZUFuYWx5emVyKG9wdGlvbnMs
IHl1dl9kaXJlY3Rvcnk9Tm9uZSk6CiAgIHJldHVybiBmcmFtZV9hbmFseXplci5yZXR1cm5jb2Rl
CiAKIAotZGVmIF9SdW5WbWFmKG9wdGlvbnMsIHl1dl9kaXJlY3RvcnkpOgorZGVmIF9SdW5WbWFm
KG9wdGlvbnMsIHl1dl9kaXJlY3RvcnksIGxvZ2ZpbGUpOgogICAiIiIgUnVuIFZNQUYgdG8gY29t
cGFyZSB2aWRlb3MgYW5kIHByaW50IG91dHB1dC4KIAotICBUaGUgcHJvdmlkZWQgdm1hZiBkaXJl
Y3RvcnkgaXMgYXNzdW1lZCB0byBjb250YWluIGEgYysrIHdyYXBwZXIgZXhlY3V0YWJsZQotICBh
bmQgYSBtb2RlbC4KLQogICBUaGUgeXV2X2RpcmVjdG9yeSBpcyBhc3N1bWVkIHRvIGhhdmUgYmVl
biBwb3B1bGF0ZWQgd2l0aCBhIHJlZmVyZW5jZSBhbmQgdGVzdAogICB2aWRlbyBpbiAueXV2IGZv
cm1hdCwgd2l0aCBuYW1lcyBhY2NvcmRpbmcgdG8gdGhlIGxhYmVsLgogICAiIiIKQEAgLTE3OSwy
NiArMTM0LDI5IEBAIGRlZiBfUnVuVm1hZihvcHRpb25zLCB5dXZfZGlyZWN0b3J5KToKICAgICBv
cy5wYXRoLmpvaW4oeXV2X2RpcmVjdG9yeSwgInJlZi55dXYiKSwKICAgICBvcy5wYXRoLmpvaW4o
eXV2X2RpcmVjdG9yeSwgInRlc3QueXV2IiksCiAgICAgb3B0aW9ucy52bWFmX21vZGVsLAorICAg
ICctLWxvZycsCisgICAgbG9nZmlsZSwKKyAgICAnLS1sb2ctZm10JywKKyAgICAnanNvbicsCiAg
IF0KICAgaWYgb3B0aW9ucy52bWFmX3Bob25lX21vZGVsOgogICAgIGNtZC5hcHBlbmQoJy0tcGhv
bmUtbW9kZWwnKQogCiAgIHZtYWYgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3RkaW49X0Rldk51
bGwoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwg
c3RkZXJyPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zeXMu
c3Rkb3V0LCBzdGRlcnI9c3lzLnN0ZGVycikKICAgdm1hZi53YWl0KCkKICAgaWYgdm1hZi5yZXR1
cm5jb2RlICE9IDA6CiAgICAgcHJpbnQgJ0ZhaWxlZCB0byBydW4gVk1BRi4nCiAgICAgcmV0dXJu
IDEKLSAgb3V0cHV0ID0gdm1hZi5zdGRvdXQucmVhZCgpCi0gICMgRXh0cmFjdCBzY29yZSBmcm9t
IFZNQUYgb3V0cHV0LgotICB0cnk6Ci0gICAgc2NvcmUgPSBmbG9hdChvdXRwdXQuc3BsaXQoJ1xu
JylbMl0uc3BsaXQoKVszXSkKLSAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbmRleEVycm9yKToKLSAg
ICBwcmludCAnRXJyb3IgaW4gVk1BRiBvdXRwdXQgKGV4cGVjdGVkICJWTUFGIHNjb3JlID0gW2Zs
b2F0XSIgb24gbGluZSAzKTonCi0gICAgcHJpbnQgb3V0cHV0Ci0gICAgcmV0dXJuIDEKIAotICBw
cmludCAnUkVTVUxUIFZtYWY6ICVzPSAlZicgJSAob3B0aW9ucy5sYWJlbCwgc2NvcmUpCisgICMg
UmVhZCBwZXItZnJhbWUgc2NvcmVzIGZyb20gVk1BRiBvdXRwdXQgYW5kIHByaW50LgorICB3aXRo
IG9wZW4obG9nZmlsZSkgYXMgZjoKKyAgICB2bWFmX2RhdGEgPSBqc29uLmxvYWQoZikKKyAgICB2
bWFmX3Njb3JlcyA9IFtdCisgICAgZm9yIGZyYW1lIGluIHZtYWZfZGF0YVsnZnJhbWVzJ106Cisg
ICAgICB2bWFmX3Njb3Jlcy5hcHBlbmQoZnJhbWVbJ21ldHJpY3MnXVsndm1hZiddKQorICAgIHBy
aW50ICdSRVNVTFQgVk1BRjogJXM9JyAlIG9wdGlvbnMubGFiZWwsIHZtYWZfc2NvcmVzCisKICAg
cmV0dXJuIDAKIAogCkBAIC0yMTMsNDAgKzE3MSwyNCBAQCBkZWYgbWFpbigpOgogCiAgIFJ1bm5p
bmcgdm1hZiByZXF1aXJlcyB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czoKICAgLS12bWFmLCAtLXZt
YWZfbW9kZWwsIC0teXV2X2ZyYW1lX3dpZHRoLCAtLXl1dl9mcmFtZV9oZWlnaHQKLQotICBOb3Rp
Y2UgdGhhdCB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgYmFyY29kZV9kZWNvZGVyLnB5IGFsc28gYXBw
bGllcyB0byB0aGlzCi0gIHNjcmlwdC4gVGhlIG1lYW5zIHRoZSBmb2xsb3dpbmcgZXhlY3V0YWJs
ZXMgaGF2ZSB0byBiZSBhdmFpbGFibGUgaW4gdGhlIFBBVEg6Ci0gICogenhpbmcKLSAgKiBmZm1w
ZWcKICAgIiIiCiAgIG9wdGlvbnMgPSBfUGFyc2VBcmdzKCkKIAotICBpZiBvcHRpb25zLmJhcmNv
ZGVfZGVjb2RlcjoKLSAgICBwYXRoX3RvX2RlY29kZXIgPSBvcHRpb25zLmJhcmNvZGVfZGVjb2Rl
cgotICBlbHNlOgotICAgIHBhdGhfdG9fZGVjb2RlciA9IG9zLnBhdGguam9pbihTQ1JJUFRfRElS
LCAnYmFyY29kZV90b29scycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdi
YXJjb2RlX2RlY29kZXIucHknKQotCi0gIGlmIERlY29kZUJhcmNvZGVzSW5WaWRlbyhvcHRpb25z
LCBwYXRoX3RvX2RlY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnJl
Zl92aWRlbywgb3B0aW9ucy5zdGF0c19maWxlX3JlZikgIT0gMDoKLSAgICByZXR1cm4gMQotICBp
ZiBEZWNvZGVCYXJjb2Rlc0luVmlkZW8ob3B0aW9ucywgcGF0aF90b19kZWNvZGVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50ZXN0X3ZpZGVvLCBvcHRpb25zLnN0YXRzX2Zp
bGVfdGVzdCkgIT0gMDoKLSAgICByZXR1cm4gMQotCiAgIGlmIG9wdGlvbnMudm1hZjoKICAgICB0
cnk6CiAgICAgICAjIERpcmVjdG9yeSB0byBzYXZlIHRlbXBvcmFyeSBZVVYgZmlsZXMgZm9yIFZN
QUYgaW4gZnJhbWVfYW5hbHl6ZXIuCiAgICAgICB5dXZfZGlyZWN0b3J5ID0gdGVtcGZpbGUubWtk
dGVtcCgpCisgICAgICBfLCB2bWFmX2xvZ2ZpbGUgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKIAogICAg
ICAgIyBSdW4gZnJhbWUgYW5hbHl6ZXIgdG8gY29tcGFyZSB0aGUgdmlkZW9zIGFuZCBwcmludCBv
dXRwdXQuCiAgICAgICBpZiBfUnVuRnJhbWVBbmFseXplcihvcHRpb25zLCB5dXZfZGlyZWN0b3J5
PXl1dl9kaXJlY3RvcnkpICE9IDA6CiAgICAgICAgIHJldHVybiAxCiAKICAgICAgICMgUnVuIFZN
QUYgZm9yIGZ1cnRoZXIgdmlkZW8gY29tcGFyaXNvbiBhbmQgcHJpbnQgb3V0cHV0LgotICAgICAg
cmV0dXJuIF9SdW5WbWFmKG9wdGlvbnMsIHl1dl9kaXJlY3RvcnkpCisgICAgICByZXR1cm4gX1J1
blZtYWYob3B0aW9ucywgeXV2X2RpcmVjdG9yeSwgdm1hZl9sb2dmaWxlKQogICAgIGZpbmFsbHk6
CiAgICAgICBzaHV0aWwucm10cmVlKHl1dl9kaXJlY3RvcnkpCisgICAgICBvcy5yZW1vdmUodm1h
Zl9sb2dmaWxlKQogICBlbHNlOgogICAgIHJldHVybiBfUnVuRnJhbWVBbmFseXplcihvcHRpb25z
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfdG9vbHMvZXZlbnRfbG9nX3Zpc3VhbGl6ZXIvYW5hbHl6ZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZXZlbnRfbG9nX3Zpc3Vh
bGl6ZXIvYW5hbHl6ZXIuY2MKaW5kZXggNDNjYmQ2OWZjOGUxOGM5NDYxNzI5ZDM1MmZkYWViMGIw
ZDMxODVlNS4uM2JkZmJmMzJhMGUxYjUxNmE1NDk3ODQ1MTI0MzI1MmMwOTM0YzAxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xz
L2V2ZW50X2xvZ192aXN1YWxpemVyL2FuYWx5emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9h
bmFseXplci5jYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNs
dWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L2dvb2df
Y2NfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwvYXVkaW9fcmVjZWl2ZV9zdHJlYW0uaCIKICNp
bmNsdWRlICJjYWxsL2F1ZGlvX3NlbmRfc3RyZWFtLmgiCiAjaW5jbHVkZSAiY2FsbC9jYWxsLmgi
CkBAIC0zNiw4ICszNyw5IEBACiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy9iaXRyYXRlX2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvaW5jbHVkZS9yZWNlaXZlX3NpZGVfY29uZ2VzdGlv
bl9jb250cm9sbGVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
aW5jbHVkZS9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVy
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9wYWNpbmcvcGFja2V0X3JvdXRlci5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3AuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0LmgiCkBAIC0xNzUsMTMgKzE3Nywx
MyBAQCBjb25zdGV4cHIgZmxvYXQga0JvdHRvbU1hcmdpbiA9IDAuMDJmOwogY29uc3RleHByIGZs
b2F0IGtUb3BNYXJnaW4gPSAwLjA1ZjsKIAogYWJzbDo6b3B0aW9uYWw8ZG91YmxlPiBOZXR3b3Jr
RGVsYXlEaWZmX0Fic1NlbmRUaW1lKAotICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldCYgb2xkX3Bh
Y2tldCwKLSAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXQmIG5ld19wYWNrZXQpIHsKLSAgaWYgKG9s
ZF9wYWNrZXQuaGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0ZVNlbmRUaW1lICYmCi0gICAgICBu
ZXdfcGFja2V0LmhlYWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5kVGltZSkgeworICAgIGNv
bnN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBvbGRfcGFja2V0LAorICAgIGNvbnN0IExvZ2dl
ZFJ0cFBhY2tldEluY29taW5nJiBuZXdfcGFja2V0KSB7CisgIGlmIChvbGRfcGFja2V0LnJ0cC5o
ZWFkZXIuZXh0ZW5zaW9uLmhhc0Fic29sdXRlU2VuZFRpbWUgJiYKKyAgICAgIG5ld19wYWNrZXQu
cnRwLmhlYWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5kVGltZSkgewogICAgIGludDY0X3Qg
c2VuZF90aW1lX2RpZmYgPSBXcmFwcGluZ0RpZmZlcmVuY2UoCi0gICAgICAgIG5ld19wYWNrZXQu
aGVhZGVyLmV4dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1lLAotICAgICAgICBvbGRfcGFja2V0Lmhl
YWRlci5leHRlbnNpb24uYWJzb2x1dGVTZW5kVGltZSwgMXVsIDw8IDI0KTsKKyAgICAgICAgbmV3
X3BhY2tldC5ydHAuaGVhZGVyLmV4dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1lLAorICAgICAgICBv
bGRfcGFja2V0LnJ0cC5oZWFkZXIuZXh0ZW5zaW9uLmFic29sdXRlU2VuZFRpbWUsIDF1bCA8PCAy
NCk7CiAgICAgaW50NjRfdCByZWN2X3RpbWVfZGlmZiA9CiAgICAgICAgIG5ld19wYWNrZXQubG9n
X3RpbWVfdXMoKSAtIG9sZF9wYWNrZXQubG9nX3RpbWVfdXMoKTsKICAgICBkb3VibGUgZGVsYXlf
Y2hhbmdlX3VzID0KQEAgLTE5MywzNCArMTk1LDMxIEBAIGFic2w6Om9wdGlvbmFsPGRvdWJsZT4g
TmV0d29ya0RlbGF5RGlmZl9BYnNTZW5kVGltZSgKIH0KIAogYWJzbDo6b3B0aW9uYWw8ZG91Ymxl
PiBOZXR3b3JrRGVsYXlEaWZmX0NhcHR1cmVUaW1lKAotICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tl
dCYgb2xkX3BhY2tldCwKLSAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXQmIG5ld19wYWNrZXQpIHsK
LSAgaW50NjRfdCBzZW5kX3RpbWVfZGlmZiA9IFdyYXBwaW5nRGlmZmVyZW5jZSgKLSAgICAgIG5l
d19wYWNrZXQuaGVhZGVyLnRpbWVzdGFtcCwgb2xkX3BhY2tldC5oZWFkZXIudGltZXN0YW1wLCAx
dWxsIDw8IDMyKTsKKyAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyYgb2xkX3BhY2tl
dCwKKyAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyYgbmV3X3BhY2tldCwKKyAgICBj
b25zdCBkb3VibGUgc2FtcGxlX3JhdGUpIHsKKyAgaW50NjRfdCBzZW5kX3RpbWVfZGlmZiA9Cisg
ICAgICBXcmFwcGluZ0RpZmZlcmVuY2UobmV3X3BhY2tldC5ydHAuaGVhZGVyLnRpbWVzdGFtcCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfcGFja2V0LnJ0cC5oZWFkZXIudGltZXN0YW1w
LCAxdWxsIDw8IDMyKTsKICAgaW50NjRfdCByZWN2X3RpbWVfZGlmZiA9IG5ld19wYWNrZXQubG9n
X3RpbWVfdXMoKSAtIG9sZF9wYWNrZXQubG9nX3RpbWVfdXMoKTsKIAotICBjb25zdCBkb3VibGUg
a1ZpZGVvU2FtcGxlUmF0ZSA9IDkwMDAwOwotICAvLyBUT0RPKHRlcmVsaXVzKTogV2UgdHJlYXQg
YWxsIHN0cmVhbXMgYXMgdmlkZW8gZm9yIG5vdywgZXZlbiB0aG91Z2gKLSAgLy8gYXVkaW8gbWln
aHQgYmUgc2FtcGxlZCBhdCBlLmcuIDE2a0h6LCBiZWNhdXNlIGl0IGlzIHJlYWxseSBkaWZmaWN1
bHQgdG8KLSAgLy8gZmlndXJlIG91dCB0aGUgdHJ1ZSBzYW1wbGluZyByYXRlIG9mIGEgc3RyZWFt
LiBUaGUgZWZmZWN0IGlzIHRoYXQgdGhlCi0gIC8vIGRlbGF5IHdpbGwgYmUgc2NhbGVkIGluY29y
cmVjdGx5IGZvciBub24tdmlkZW8gc3RyZWFtcy4KLQogICBkb3VibGUgZGVsYXlfY2hhbmdlID0K
ICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjdl90aW1lX2RpZmYpIC8gMTAwMCAtCi0gICAg
ICBzdGF0aWNfY2FzdDxkb3VibGU+KHNlbmRfdGltZV9kaWZmKSAvIGtWaWRlb1NhbXBsZVJhdGUg
KiAxMDAwOworICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihzZW5kX3RpbWVfZGlmZikgLyBzYW1w
bGVfcmF0ZSAqIDEwMDA7CiAgIGlmIChkZWxheV9jaGFuZ2UgPCAtMTAwMDAgfHwgMTAwMDAgPCBk
ZWxheV9jaGFuZ2UpIHsKICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJWZXJ5IGxhcmdlIGRl
bGF5IGNoYW5nZS4gVGltZXN0YW1wcyBjb3JyZWN0PyI7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5H
KSA8PCAiT2xkIGNhcHR1cmUgdGltZSAiIDw8IG9sZF9wYWNrZXQuaGVhZGVyLnRpbWVzdGFtcAot
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgcmVjZWl2ZWQgdGltZSAiIDw8IG9sZF9wYWNr
ZXQubG9nX3RpbWVfdXMoKTsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJOZXcgY2FwdHVy
ZSB0aW1lICIgPDwgbmV3X3BhY2tldC5oZWFkZXIudGltZXN0YW1wCi0gICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiLCByZWNlaXZlZCB0aW1lICIgPDwgbmV3X3BhY2tldC5sb2dfdGltZV91cygp
OworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIk9sZCBjYXB0dXJlIHRpbWUgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgb2xkX3BhY2tldC5ydHAuaGVhZGVyLnRpbWVzdGFtcCA8PCAi
LCByZWNlaXZlZCB0aW1lICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IG9sZF9wYWNrZXQu
bG9nX3RpbWVfdXMoKTsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJOZXcgY2FwdHVyZSB0
aW1lICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IG5ld19wYWNrZXQucnRwLmhlYWRlci50
aW1lc3RhbXAgPDwgIiwgcmVjZWl2ZWQgdGltZSAiCisgICAgICAgICAgICAgICAgICAgICAgICA8
PCBuZXdfcGFja2V0LmxvZ190aW1lX3VzKCk7CiAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
UmVjZWl2ZSB0aW1lIGRpZmZlcmVuY2UgIiA8PCByZWN2X3RpbWVfZGlmZiA8PCAiID0gIgogICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8ZG91YmxlPihyZWN2X3RpbWVfZGlm
ZikgLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtOdW1NaWNyb3NlY3NQZXJTZWMK
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJzIjsKICAgICBSVENfTE9HKExTX1dBUk5JTkcp
IDw8ICJTZW5kIHRpbWUgZGlmZmVyZW5jZSAiIDw8IHNlbmRfdGltZV9kaWZmIDw8ICIgPSAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxkb3VibGU+KHNlbmRfdGltZV9k
aWZmKSAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1ZpZGVvU2FtcGxlUmF0ZQor
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzZW5kX3RpbWVf
ZGlmZikgLyBzYW1wbGVfcmF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgPDwgInMiOwogICB9
CiAgIHJldHVybiBkZWxheV9jaGFuZ2U7CkBAIC0yNzQsOSArMjczLDEwIEBAIHZvaWQgQWNjdW11
bGF0ZVBhaXJzKAogICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGRhdGEuc2l6ZSgpOyBpKyspIHsK
ICAgICBmbG9hdCB4ID0gZngoZGF0YVtpXSk7CiAgICAgYWJzbDo6b3B0aW9uYWw8UmVzdWx0VHlw
ZT4geSA9IGZ5KGRhdGFbaSAtIDFdLCBkYXRhW2ldKTsKLSAgICBpZiAoeSkKKyAgICBpZiAoeSkg
ewogICAgICAgc3VtICs9ICp5OwotICAgIHJlc3VsdC0+cG9pbnRzLmVtcGxhY2VfYmFjayh4LCBz
dGF0aWNfY2FzdDxmbG9hdD4oc3VtKSk7CisgICAgICByZXN1bHQtPnBvaW50cy5lbXBsYWNlX2Jh
Y2soeCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN1bSkpOworICAgIH0KICAgfQogfQogCkBAIC00ODYs
MTcgKzQ4NiwxNSBAQCBFdmVudExvZ0FuYWx5emVyOjpFdmVudExvZ0FuYWx5emVyKGNvbnN0IFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3JiBsb2csCiAgICAgICAgICAgICAgICAgICAgPDwgIiAoTE9HX1NU
QVJULCBMT0dfRU5EKSBzZWdtZW50cyBpbiBsb2cuIjsKIH0KIAotY2xhc3MgQml0cmF0ZU9ic2Vy
dmVyIDogcHVibGljIE5ldHdvcmtDaGFuZ2VkT2JzZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgUmVtb3RlQml0cmF0ZU9ic2VydmVyIHsKK2NsYXNzIEJpdHJhdGVPYnNlcnZl
ciA6IHB1YmxpYyBSZW1vdGVCaXRyYXRlT2JzZXJ2ZXIgewogIHB1YmxpYzoKICAgQml0cmF0ZU9i
c2VydmVyKCkgOiBsYXN0X2JpdHJhdGVfYnBzXygwKSwgYml0cmF0ZV91cGRhdGVkXyhmYWxzZSkg
e30KIAotICB2b2lkIE9uTmV0d29ya0NoYW5nZWQodWludDMyX3QgYml0cmF0ZV9icHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZyYWN0aW9uX2xvc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90IHJ0dF9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgcHJvYmluZ19pbnRlcnZhbF9tcykgb3ZlcnJpZGUgewotICAgIGxhc3RfYml0cmF0ZV9icHNf
ID0gYml0cmF0ZV9icHM7Ci0gICAgYml0cmF0ZV91cGRhdGVkXyA9IHRydWU7CisgIHZvaWQgVXBk
YXRlKE5ldHdvcmtDb250cm9sVXBkYXRlIHVwZGF0ZSkgeworICAgIGlmICh1cGRhdGUudGFyZ2V0
X3JhdGUpIHsKKyAgICAgIGxhc3RfYml0cmF0ZV9icHNfID0gdXBkYXRlLnRhcmdldF9yYXRlLT50
YXJnZXRfcmF0ZS5icHMoKTsKKyAgICAgIGJpdHJhdGVfdXBkYXRlZF8gPSB0cnVlOworICAgIH0K
ICAgfQogCiAgIHZvaWQgT25SZWNlaXZlQml0cmF0ZUNoYW5nZWQoY29uc3Qgc3RkOjp2ZWN0b3I8
dWludDMyX3Q+JiBzc3JjcywKQEAgLTczNyw3MSArNzM1LDU4IEBAIHZvaWQgRXZlbnRMb2dBbmFs
eXplcjo6Q3JlYXRlSW5jb21pbmdQYWNrZXRMb3NzR3JhcGgoUGxvdCogcGxvdCkgewogICBwbG90
LT5TZXRUaXRsZSgiRXN0aW1hdGVkIGluY29taW5nIGxvc3MgcmF0ZSIpOwogfQogCi12b2lkIEV2
ZW50TG9nQW5hbHl6ZXI6OkNyZWF0ZUluY29taW5nRGVsYXlEZWx0YUdyYXBoKFBsb3QqIHBsb3Qp
IHsKLSAgZm9yIChjb25zdCBhdXRvJiBzdHJlYW0gOiBwYXJzZWRfbG9nXy5ydHBfcGFja2V0c19i
eV9zc3JjKGtJbmNvbWluZ1BhY2tldCkpIHsKK3ZvaWQgRXZlbnRMb2dBbmFseXplcjo6Q3JlYXRl
SW5jb21pbmdEZWxheUdyYXBoKFBsb3QqIHBsb3QpIHsKKyAgZm9yIChjb25zdCBhdXRvJiBzdHJl
YW0gOiBwYXJzZWRfbG9nXy5pbmNvbWluZ19ydHBfcGFja2V0c19ieV9zc3JjKCkpIHsKICAgICAv
LyBGaWx0ZXIgb24gU1NSQy4KICAgICBpZiAoIU1hdGNoaW5nU3NyYyhzdHJlYW0uc3NyYywgZGVz
aXJlZF9zc3JjXykgfHwKLSAgICAgICAgSXNBdWRpb1NzcmMoa0luY29taW5nUGFja2V0LCBzdHJl
YW0uc3NyYykgfHwKLSAgICAgICAgIUlzVmlkZW9Tc3JjKGtJbmNvbWluZ1BhY2tldCwgc3RyZWFt
LnNzcmMpIHx8CiAgICAgICAgIElzUnR4U3NyYyhrSW5jb21pbmdQYWNrZXQsIHN0cmVhbS5zc3Jj
KSkgewogICAgICAgY29udGludWU7CiAgICAgfQogCi0gICAgVGltZVNlcmllcyBjYXB0dXJlX3Rp
bWVfZGF0YSgKLSAgICAgICAgR2V0U3RyZWFtTmFtZShrSW5jb21pbmdQYWNrZXQsIHN0cmVhbS5z
c3JjKSArICIgY2FwdHVyZS10aW1lIiwKLSAgICAgICAgTGluZVN0eWxlOjprQmFyKTsKLSAgICBh
dXRvIFRvQ2FsbFRpbWUgPSBbdGhpc10oY29uc3QgTG9nZ2VkUnRwUGFja2V0JiBwYWNrZXQpIHsK
LSAgICAgIHJldHVybiB0aGlzLT5Ub0NhbGxUaW1lU2VjKHBhY2tldC5sb2dfdGltZV91cygpKTsK
LSAgICB9OwotICAgIFByb2Nlc3NQYWlyczxMb2dnZWRSdHBQYWNrZXQsIGRvdWJsZT4oCi0gICAg
ICAgIFRvQ2FsbFRpbWUsIE5ldHdvcmtEZWxheURpZmZfQ2FwdHVyZVRpbWUsIHN0cmVhbS5wYWNr
ZXRfdmlldywKLSAgICAgICAgJmNhcHR1cmVfdGltZV9kYXRhKTsKLSAgICBwbG90LT5BcHBlbmRU
aW1lU2VyaWVzKHN0ZDo6bW92ZShjYXB0dXJlX3RpbWVfZGF0YSkpOwotCi0gICAgVGltZVNlcmll
cyBzZW5kX3RpbWVfZGF0YSgKLSAgICAgICAgR2V0U3RyZWFtTmFtZShrSW5jb21pbmdQYWNrZXQs
IHN0cmVhbS5zc3JjKSArICIgYWJzLXNlbmQtdGltZSIsCi0gICAgICAgIExpbmVTdHlsZTo6a0Jh
cik7Ci0gICAgUHJvY2Vzc1BhaXJzPExvZ2dlZFJ0cFBhY2tldCwgZG91YmxlPihUb0NhbGxUaW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0d29ya0RlbGF5
RGlmZl9BYnNTZW5kVGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbS5wYWNrZXRfdmlldywgJnNlbmRfdGltZV9kYXRhKTsKLSAgICBwbG90LT5BcHBl
bmRUaW1lU2VyaWVzKHN0ZDo6bW92ZShzZW5kX3RpbWVfZGF0YSkpOwotICB9Ci0KLSAgcGxvdC0+
U2V0WEF4aXMoVG9DYWxsVGltZVNlYyhiZWdpbl90aW1lXyksIGNhbGxfZHVyYXRpb25fc18sICJU
aW1lIChzKSIsCi0gICAgICAgICAgICAgICAgIGtMZWZ0TWFyZ2luLCBrUmlnaHRNYXJnaW4pOwot
ICBwbG90LT5TZXRTdWdnZXN0ZWRZQXhpcygwLCAxLCAiTGF0ZW5jeSBjaGFuZ2UgKG1zKSIsIGtC
b3R0b21NYXJnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGtUb3BNYXJnaW4pOwotICBw
bG90LT5TZXRUaXRsZSgiTmV0d29yayBsYXRlbmN5IGRpZmZlcmVuY2UgYmV0d2VlbiBjb25zZWN1
dGl2ZSBwYWNrZXRzIik7Ci19Ci0KLXZvaWQgRXZlbnRMb2dBbmFseXplcjo6Q3JlYXRlSW5jb21p
bmdEZWxheUdyYXBoKFBsb3QqIHBsb3QpIHsKLSAgZm9yIChjb25zdCBhdXRvJiBzdHJlYW0gOiBw
YXJzZWRfbG9nXy5ydHBfcGFja2V0c19ieV9zc3JjKGtJbmNvbWluZ1BhY2tldCkpIHsKLSAgICAv
LyBGaWx0ZXIgb24gU1NSQy4KLSAgICBpZiAoIU1hdGNoaW5nU3NyYyhzdHJlYW0uc3NyYywgZGVz
aXJlZF9zc3JjXykgfHwKLSAgICAgICAgSXNBdWRpb1NzcmMoa0luY29taW5nUGFja2V0LCBzdHJl
YW0uc3NyYykgfHwKLSAgICAgICAgIUlzVmlkZW9Tc3JjKGtJbmNvbWluZ1BhY2tldCwgc3RyZWFt
LnNzcmMpIHx8Ci0gICAgICAgIElzUnR4U3NyYyhrSW5jb21pbmdQYWNrZXQsIHN0cmVhbS5zc3Jj
KSkgeworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPExvZ2dlZFJ0cFBhY2tldEluY29taW5nPiYgcGFj
a2V0cyA9CisgICAgICAgIHN0cmVhbS5pbmNvbWluZ19wYWNrZXRzOworICAgIGlmIChwYWNrZXRz
LnNpemUoKSA8IDEwMCkgeworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ2FuJ3QgZXN0
aW1hdGUgdGhlIFJUUCBjbG9jayBmcmVxdWVuY3kgd2l0aCAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IHBhY2tldHMuc2l6ZSgpIDw8ICIgcGFja2V0cyBpbiB0aGUgc3RyZWFtLiI7Cisg
ICAgICBjb250aW51ZTsKKyAgICB9CisgICAgaW50NjRfdCBlbmRfdGltZV91cyA9IGxvZ19zZWdt
ZW50c18uZW1wdHkoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptYXgoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiBsb2dfc2VnbWVudHNfLmZyb250KCkuc2Vjb25kOworICAgIGFic2w6Om9wdGlvbmFsPHVpbnQz
Ml90PiBlc3RpbWF0ZWRfZnJlcXVlbmN5ID0KKyAgICAgICAgRXN0aW1hdGVSdHBDbG9ja0ZyZXF1
ZW5jeShwYWNrZXRzLCBlbmRfdGltZV91cyk7CisgICAgaWYgKCFlc3RpbWF0ZWRfZnJlcXVlbmN5
KQorICAgICAgY29udGludWU7CisgICAgY29uc3QgZG91YmxlIGZyZXF1ZW5jeV9oeiA9ICplc3Rp
bWF0ZWRfZnJlcXVlbmN5OworICAgIGlmIChJc1ZpZGVvU3NyYyhrSW5jb21pbmdQYWNrZXQsIHN0
cmVhbS5zc3JjKSAmJiBmcmVxdWVuY3lfaHogIT0gOTAwMDApIHsKKyAgICAgIFJUQ19MT0coTFNf
V0FSTklORykKKyAgICAgICAgICA8PCAiVmlkZW8gc3RyZWFtIHNob3VsZCB1c2UgYSA5MCBrSHog
Y2xvY2sgYnV0IGFwcGVhcnMgdG8gdXNlICIKKyAgICAgICAgICA8PCBmcmVxdWVuY3lfaHogLyAx
MDAwIDw8ICIuIERpc2NhcmRpbmcuIjsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KIAorICAgIGF1
dG8gVG9DYWxsVGltZSA9IFt0aGlzXShjb25zdCBMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyYgcGFj
a2V0KSB7CisgICAgICByZXR1cm4gdGhpcy0+VG9DYWxsVGltZVNlYyhwYWNrZXQubG9nX3RpbWVf
dXMoKSk7CisgICAgfTsKKyAgICBhdXRvIFRvTmV0d29ya0RlbGF5ID0gW2ZyZXF1ZW5jeV9oel0o
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRJbmNv
bWluZyYgb2xkX3BhY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExv
Z2dlZFJ0cFBhY2tldEluY29taW5nJiBuZXdfcGFja2V0KSB7CisgICAgICByZXR1cm4gTmV0d29y
a0RlbGF5RGlmZl9DYXB0dXJlVGltZShvbGRfcGFja2V0LCBuZXdfcGFja2V0LCBmcmVxdWVuY3lf
aHopOworICAgIH07CisKICAgICBUaW1lU2VyaWVzIGNhcHR1cmVfdGltZV9kYXRhKAogICAgICAg
ICBHZXRTdHJlYW1OYW1lKGtJbmNvbWluZ1BhY2tldCwgc3RyZWFtLnNzcmMpICsgIiBjYXB0dXJl
LXRpbWUiLAogICAgICAgICBMaW5lU3R5bGU6OmtMaW5lKTsKLSAgICBhdXRvIFRvQ2FsbFRpbWUg
PSBbdGhpc10oY29uc3QgTG9nZ2VkUnRwUGFja2V0JiBwYWNrZXQpIHsKLSAgICAgIHJldHVybiB0
aGlzLT5Ub0NhbGxUaW1lU2VjKHBhY2tldC5sb2dfdGltZV91cygpKTsKLSAgICB9OwotICAgIEFj
Y3VtdWxhdGVQYWlyczxMb2dnZWRSdHBQYWNrZXQsIGRvdWJsZT4oCi0gICAgICAgIFRvQ2FsbFRp
bWUsIE5ldHdvcmtEZWxheURpZmZfQ2FwdHVyZVRpbWUsIHN0cmVhbS5wYWNrZXRfdmlldywKLSAg
ICAgICAgJmNhcHR1cmVfdGltZV9kYXRhKTsKKyAgICBBY2N1bXVsYXRlUGFpcnM8TG9nZ2VkUnRw
UGFja2V0SW5jb21pbmcsIGRvdWJsZT4oCisgICAgICAgIFRvQ2FsbFRpbWUsIFRvTmV0d29ya0Rl
bGF5LCBwYWNrZXRzLCAmY2FwdHVyZV90aW1lX2RhdGEpOwogICAgIHBsb3QtPkFwcGVuZFRpbWVT
ZXJpZXMoc3RkOjptb3ZlKGNhcHR1cmVfdGltZV9kYXRhKSk7CiAKICAgICBUaW1lU2VyaWVzIHNl
bmRfdGltZV9kYXRhKAogICAgICAgICBHZXRTdHJlYW1OYW1lKGtJbmNvbWluZ1BhY2tldCwgc3Ry
ZWFtLnNzcmMpICsgIiBhYnMtc2VuZC10aW1lIiwKICAgICAgICAgTGluZVN0eWxlOjprTGluZSk7
Ci0gICAgQWNjdW11bGF0ZVBhaXJzPExvZ2dlZFJ0cFBhY2tldCwgZG91YmxlPigKLSAgICAgICAg
VG9DYWxsVGltZSwgTmV0d29ya0RlbGF5RGlmZl9BYnNTZW5kVGltZSwgc3RyZWFtLnBhY2tldF92
aWV3LAotICAgICAgICAmc2VuZF90aW1lX2RhdGEpOwotICAgIHBsb3QtPkFwcGVuZFRpbWVTZXJp
ZXMoc3RkOjptb3ZlKHNlbmRfdGltZV9kYXRhKSk7CisgICAgQWNjdW11bGF0ZVBhaXJzPExvZ2dl
ZFJ0cFBhY2tldEluY29taW5nLCBkb3VibGU+KAorICAgICAgICBUb0NhbGxUaW1lLCBOZXR3b3Jr
RGVsYXlEaWZmX0Fic1NlbmRUaW1lLCBwYWNrZXRzLCAmc2VuZF90aW1lX2RhdGEpOworICAgIHBs
b3QtPkFwcGVuZFRpbWVTZXJpZXNJZk5vdEVtcHR5KHN0ZDo6bW92ZShzZW5kX3RpbWVfZGF0YSkp
OwogICB9CiAKICAgcGxvdC0+U2V0WEF4aXMoVG9DYWxsVGltZVNlYyhiZWdpbl90aW1lXyksIGNh
bGxfZHVyYXRpb25fc18sICJUaW1lIChzKSIsCkBAIC0xMDgxLDEwICsxMDY2LDE1IEBAIHZvaWQg
RXZlbnRMb2dBbmFseXplcjo6Q3JlYXRlU2VuZFNpZGVCd2VTaW11bGF0aW9uR3JhcGgoUGxvdCog
cGxvdCkgewogICBSdGNFdmVudExvZ051bGxJbXBsIG51bGxfZXZlbnRfbG9nOwogICBQYWNrZXRS
b3V0ZXIgcGFja2V0X3JvdXRlcjsKICAgUGFjZWRTZW5kZXIgcGFjZXIoJmNsb2NrLCAmcGFja2V0
X3JvdXRlciwgJm51bGxfZXZlbnRfbG9nKTsKLSAgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxl
ciBjYygmY2xvY2ssICZvYnNlcnZlciwgJm51bGxfZXZlbnRfbG9nLCAmcGFjZXIpOworICBUcmFu
c3BvcnRGZWVkYmFja0FkYXB0ZXIgdHJhbnNwb3J0X2ZlZWRiYWNrKCZjbG9jayk7CisgIGF1dG8g
ZmFjdG9yeSA9IEdvb2dDY05ldHdvcmtDb250cm9sbGVyRmFjdG9yeSgmbnVsbF9ldmVudF9sb2cp
OworICBUaW1lRGVsdGEgcHJvY2Vzc19pbnRlcnZhbCA9IGZhY3RvcnkuR2V0UHJvY2Vzc0ludGVy
dmFsKCk7CiAgIC8vIFRPRE8oaG9sbWVyKTogTG9nIHRoZSBjYWxsIGNvbmZpZyBhbmQgdXNlIHRo
YXQgaGVyZSBpbnN0ZWFkLgogICBzdGF0aWMgY29uc3QgdWludDMyX3Qga0RlZmF1bHRTdGFydEJp
dHJhdGVCcHMgPSAzMDAwMDA7Ci0gIGNjLlNldEJ3ZUJpdHJhdGVzKDAsIGtEZWZhdWx0U3RhcnRC
aXRyYXRlQnBzLCAtMSk7CisgIE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGNjX2NvbmZpZzsKKyAg
Y2NfY29uZmlnLmNvbnN0cmFpbnRzLmF0X3RpbWUgPSBUaW1lc3RhbXA6OnVzKGNsb2NrLlRpbWVJ
bk1pY3Jvc2Vjb25kcygpKTsKKyAgY2NfY29uZmlnLmNvbnN0cmFpbnRzLnN0YXJ0aW5nX3JhdGUg
PSBEYXRhUmF0ZTo6YnBzKGtEZWZhdWx0U3RhcnRCaXRyYXRlQnBzKTsKKyAgYXV0byBnb29nX2Nj
ID0gZmFjdG9yeS5DcmVhdGUoY2NfY29uZmlnKTsKIAogICBUaW1lU2VyaWVzIHRpbWVfc2VyaWVz
KCJEZWxheS1iYXNlZCBlc3RpbWF0ZSIsIExpbmVTdHlsZTo6a1N0ZXAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgUG9pbnRTdHlsZTo6a0hpZ2hsaWdodCk7CkBAIC0xMTA3LDEyICsxMDk3LDEy
IEBAIHZvaWQgRXZlbnRMb2dBbmFseXplcjo6Q3JlYXRlU2VuZFNpZGVCd2VTaW11bGF0aW9uR3Jh
cGgoUGxvdCogcGxvdCkgewogICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KHJ0Y3Bf
aXRlcmF0b3ItPmxvZ190aW1lX3VzKCkpOwogICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDY0X3Q+OjptYXgoKTsKICAgfTsKKyAgaW50NjRfdCBuZXh0X3Byb2Nlc3NfdGltZV91c18g
PSBjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKTsKIAogICBhdXRvIE5leHRQcm9jZXNzVGltZSA9
IFsmXSgpIHsKICAgICBpZiAocnRjcF9pdGVyYXRvciAhPSBpbmNvbWluZ19ydGNwLmVuZCgpIHx8
CiAgICAgICAgIHJ0cF9pdGVyYXRvciAhPSBvdXRnb2luZ19ydHAuZW5kKCkpIHsKLSAgICAgIHJl
dHVybiBjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSArCi0gICAgICAgICAgICAgc3RkOjptYXg8
aW50NjRfdD4oY2MuVGltZVVudGlsTmV4dFByb2Nlc3MoKSAqIDEwMDAsIDApOworICAgICAgcmV0
dXJuIG5leHRfcHJvY2Vzc190aW1lX3VzXzsKICAgICB9CiAgICAgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1heCgpOwogICB9OwpAQCAtMTEyOSwyNCArMTExOSwzMiBAQCB2
b2lkIEV2ZW50TG9nQW5hbHl6ZXI6OkNyZWF0ZVNlbmRTaWRlQndlU2ltdWxhdGlvbkdyYXBoKFBs
b3QqIHBsb3QpIHsKICAgQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvciBhY2tub3dsZWRnZWRf
Yml0cmF0ZV9lc3RpbWF0b3IoCiAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxCaXRyYXRlRXN0aW1h
dG9yPigpKTsKICNlbmRpZiAgLy8gIShCV0VfVEVTVF9MT0dHSU5HX0NPTVBJTEVfVElNRV9FTkFC
TEUpCi0gIGludDY0X3QgdGltZV91cyA9IHN0ZDo6bWluKE5leHRSdHBUaW1lKCksIE5leHRSdGNw
VGltZSgpKTsKKyAgaW50NjRfdCB0aW1lX3VzID0KKyAgICAgIHN0ZDo6bWluKHtOZXh0UnRwVGlt
ZSgpLCBOZXh0UnRjcFRpbWUoKSwgTmV4dFByb2Nlc3NUaW1lKCl9KTsKICAgaW50NjRfdCBsYXN0
X3VwZGF0ZV91cyA9IDA7CiAgIHdoaWxlICh0aW1lX3VzICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1heCgpKSB7CiAgICAgY2xvY2suQWR2YW5jZVRpbWVNaWNyb3NlY29uZHModGlt
ZV91cyAtIGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKICAgICBpZiAoY2xvY2suVGltZUlu
TWljcm9zZWNvbmRzKCkgPj0gTmV4dFJ0Y3BUaW1lKCkpIHsKICAgICAgIFJUQ19EQ0hFQ0tfRVEo
Y2xvY2suVGltZUluTWljcm9zZWNvbmRzKCksIE5leHRSdGNwVGltZSgpKTsKLSAgICAgIGNjLk9u
VHJhbnNwb3J0RmVlZGJhY2socnRjcF9pdGVyYXRvci0+dHJhbnNwb3J0X2ZlZWRiYWNrKTsKLSAg
ICAgIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBmZWVkYmFjayA9IGNjLkdldFRyYW5zcG9y
dEZlZWRiYWNrVmVjdG9yKCk7Ci0gICAgICBTb3J0UGFja2V0RmVlZGJhY2tWZWN0b3IoJmZlZWRi
YWNrKTsKKworICAgICAgYXV0byBmZWVkYmFja19tc2cgPSB0cmFuc3BvcnRfZmVlZGJhY2suUHJv
Y2Vzc1RyYW5zcG9ydEZlZWRiYWNrKAorICAgICAgICAgIHJ0Y3BfaXRlcmF0b3ItPnRyYW5zcG9y
dF9mZWVkYmFjayk7CiAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gYml0cmF0ZV9icHM7
Ci0gICAgICBpZiAoIWZlZWRiYWNrLmVtcHR5KCkpIHsKKyAgICAgIGlmIChmZWVkYmFja19tc2cp
IHsKKyAgICAgICAgb2JzZXJ2ZXIuVXBkYXRlKGdvb2dfY2MtPk9uVHJhbnNwb3J0UGFja2V0c0Zl
ZWRiYWNrKCpmZWVkYmFja19tc2cpKTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJh
Y2s+IGZlZWRiYWNrID0KKyAgICAgICAgICAgIHRyYW5zcG9ydF9mZWVkYmFjay5HZXRUcmFuc3Bv
cnRGZWVkYmFja1ZlY3RvcigpOworICAgICAgICBTb3J0UGFja2V0RmVlZGJhY2tWZWN0b3IoJmZl
ZWRiYWNrKTsKKyAgICAgICAgaWYgKCFmZWVkYmFjay5lbXB0eSgpKSB7CiAjaWYgIShCV0VfVEVT
VF9MT0dHSU5HX0NPTVBJTEVfVElNRV9FTkFCTEUpCi0gICAgICAgIGFja25vd2xlZGdlZF9iaXRy
YXRlX2VzdGltYXRvci5JbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKGZlZWRiYWNrKTsKKyAg
ICAgICAgICBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuSW5jb21pbmdQYWNrZXRGZWVk
YmFja1ZlY3RvcihmZWVkYmFjayk7CiAjZW5kaWYgIC8vICEoQldFX1RFU1RfTE9HR0lOR19DT01Q
SUxFX1RJTUVfRU5BQkxFKQotICAgICAgICBmb3IgKGNvbnN0IFBhY2tldEZlZWRiYWNrJiBwYWNr
ZXQgOiBmZWVkYmFjaykKLSAgICAgICAgICBhY2tlZF9iaXRyYXRlLlVwZGF0ZShwYWNrZXQucGF5
bG9hZF9zaXplLCBwYWNrZXQuYXJyaXZhbF90aW1lX21zKTsKLSAgICAgICAgYml0cmF0ZV9icHMg
PSBhY2tlZF9iaXRyYXRlLlJhdGUoZmVlZGJhY2suYmFjaygpLmFycml2YWxfdGltZV9tcyk7Cisg
ICAgICAgICAgZm9yIChjb25zdCBQYWNrZXRGZWVkYmFjayYgcGFja2V0IDogZmVlZGJhY2spCisg
ICAgICAgICAgICBhY2tlZF9iaXRyYXRlLlVwZGF0ZShwYWNrZXQucGF5bG9hZF9zaXplLCBwYWNr
ZXQuYXJyaXZhbF90aW1lX21zKTsKKyAgICAgICAgICBiaXRyYXRlX2JwcyA9IGFja2VkX2JpdHJh
dGUuUmF0ZShmZWVkYmFjay5iYWNrKCkuYXJyaXZhbF90aW1lX21zKTsKKyAgICAgICAgfQogICAg
ICAgfQorCiAgICAgICBmbG9hdCB4ID0gVG9DYWxsVGltZVNlYyhjbG9jay5UaW1lSW5NaWNyb3Nl
Y29uZHMoKSk7CiAgICAgICBmbG9hdCB5ID0gYml0cmF0ZV9icHMudmFsdWVfb3IoMCkgLyAxMDAw
OwogICAgICAgYWNrZWRfdGltZV9zZXJpZXMucG9pbnRzLmVtcGxhY2VfYmFjayh4LCB5KTsKQEAg
LTExNjEsMTkgKzExNTksMjUgQEAgdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVTZW5kU2lk
ZUJ3ZVNpbXVsYXRpb25HcmFwaChQbG90KiBwbG90KSB7CiAgICAgICBjb25zdCBSdHBQYWNrZXRU
eXBlJiBydHBfcGFja2V0ID0gKnJ0cF9pdGVyYXRvci0+c2Vjb25kOwogICAgICAgaWYgKHJ0cF9w
YWNrZXQucnRwLmhlYWRlci5leHRlbnNpb24uaGFzVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsK
ICAgICAgICAgUlRDX0RDSEVDSyhydHBfcGFja2V0LnJ0cC5oZWFkZXIuZXh0ZW5zaW9uLmhhc1Ry
YW5zcG9ydFNlcXVlbmNlTnVtYmVyKTsKLSAgICAgICAgY2MuQWRkUGFja2V0KHJ0cF9wYWNrZXQu
cnRwLmhlYWRlci5zc3JjLAotICAgICAgICAgICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAuaGVh
ZGVyLmV4dGVuc2lvbi50cmFuc3BvcnRTZXF1ZW5jZU51bWJlciwKLSAgICAgICAgICAgICAgICAg
ICAgIHJ0cF9wYWNrZXQucnRwLnRvdGFsX2xlbmd0aCwgUGFjZWRQYWNrZXRJbmZvKCkpOworICAg
ICAgICB0cmFuc3BvcnRfZmVlZGJhY2suQWRkUGFja2V0KAorICAgICAgICAgICAgcnRwX3BhY2tl
dC5ydHAuaGVhZGVyLnNzcmMsCisgICAgICAgICAgICBydHBfcGFja2V0LnJ0cC5oZWFkZXIuZXh0
ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyLAorICAgICAgICAgICAgcnRwX3BhY2tldC5y
dHAudG90YWxfbGVuZ3RoLCBQYWNlZFBhY2tldEluZm8oKSk7CiAgICAgICAgIHJ0Yzo6U2VudFBh
Y2tldCBzZW50X3BhY2tldCgKICAgICAgICAgICAgIHJ0cF9wYWNrZXQucnRwLmhlYWRlci5leHRl
bnNpb24udHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIsCiAgICAgICAgICAgICBydHBfcGFja2V0LnJ0
cC5sb2dfdGltZV91cygpIC8gMTAwMCk7Ci0gICAgICAgIGNjLk9uU2VudFBhY2tldChzZW50X3Bh
Y2tldCk7CisgICAgICAgIGF1dG8gc2VudF9tc2cgPSB0cmFuc3BvcnRfZmVlZGJhY2suUHJvY2Vz
c1NlbnRQYWNrZXQoc2VudF9wYWNrZXQpOworICAgICAgICBpZiAoc2VudF9tc2cpCisgICAgICAg
ICAgb2JzZXJ2ZXIuVXBkYXRlKGdvb2dfY2MtPk9uU2VudFBhY2tldCgqc2VudF9tc2cpKTsKICAg
ICAgIH0KICAgICAgICsrcnRwX2l0ZXJhdG9yOwogICAgIH0KICAgICBpZiAoY2xvY2suVGltZUlu
TWljcm9zZWNvbmRzKCkgPj0gTmV4dFByb2Nlc3NUaW1lKCkpIHsKICAgICAgIFJUQ19EQ0hFQ0tf
RVEoY2xvY2suVGltZUluTWljcm9zZWNvbmRzKCksIE5leHRQcm9jZXNzVGltZSgpKTsKLSAgICAg
IGNjLlByb2Nlc3MoKTsKKyAgICAgIFByb2Nlc3NJbnRlcnZhbCBtc2c7CisgICAgICBtc2cuYXRf
dGltZSA9IFRpbWVzdGFtcDo6dXMoY2xvY2suVGltZUluTWljcm9zZWNvbmRzKCkpOworICAgICAg
b2JzZXJ2ZXIuVXBkYXRlKGdvb2dfY2MtPk9uUHJvY2Vzc0ludGVydmFsKG1zZykpOworICAgICAg
bmV4dF9wcm9jZXNzX3RpbWVfdXNfICs9IHByb2Nlc3NfaW50ZXJ2YWwudXMoKTsKICAgICB9CiAg
ICAgaWYgKG9ic2VydmVyLkdldEFuZFJlc2V0Qml0cmF0ZVVwZGF0ZWQoKSB8fAogICAgICAgICB0
aW1lX3VzIC0gbGFzdF91cGRhdGVfdXMgPj0gMWU2KSB7CkBAIC0xMjc3LDkgKzEyODEsMTAgQEAg
dm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVSZWNlaXZlU2lkZUJ3ZVNpbXVsYXRpb25HcmFw
aChQbG90KiBwbG90KSB7CiB2b2lkIEV2ZW50TG9nQW5hbHl6ZXI6OkNyZWF0ZU5ldHdvcmtEZWxh
eUZlZWRiYWNrR3JhcGgoUGxvdCogcGxvdCkgewogICBUaW1lU2VyaWVzIGxhdGVfZmVlZGJhY2tf
c2VyaWVzKCJMYXRlIGZlZWRiYWNrIHJlc3VsdHMuIiwgTGluZVN0eWxlOjprTm9uZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludFN0eWxlOjprSGlnaGxpZ2h0KTsKLSAg
VGltZVNlcmllcyB0aW1lX3NlcmllcygiTmV0d29yayBEZWxheSBDaGFuZ2UiLCBMaW5lU3R5bGU6
OmtMaW5lLAorICBUaW1lU2VyaWVzIHRpbWVfc2VyaWVzKCJOZXR3b3JrIGRlbGF5IiwgTGluZVN0
eWxlOjprTGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludFN0eWxlOjprSGlnaGxp
Z2h0KTsKLSAgaW50NjRfdCBlc3RpbWF0ZWRfYmFzZV9kZWxheV9tcyA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50NjRfdD46Om1heCgpOworICBpbnQ2NF90IG1pbl9zZW5kX3JlY2VpdmVfZGlmZl9t
cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOworICBpbnQ2NF90IG1pbl9y
dHRfbXMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsKIAogICBpbnQ2NF90
IHByZXZfeSA9IDA7CiAgIGZvciAoYXV0byBwYWNrZXQgOiBHZXROZXR3b3JrVHJhY2UocGFyc2Vk
X2xvZ18pKSB7CkBAIC0xMjkyLDE2ICsxMjk3LDIyIEBAIHZvaWQgRXZlbnRMb2dBbmFseXplcjo6
Q3JlYXRlTmV0d29ya0RlbGF5RmVlZGJhY2tHcmFwaChQbG90KiBwbG90KSB7CiAgICAgfQogICAg
IGludDY0X3QgeSA9IHBhY2tldC5hcnJpdmFsX3RpbWVfbXMgLSBwYWNrZXQuc2VuZF90aW1lX21z
OwogICAgIHByZXZfeSA9IHk7Ci0gICAgZXN0aW1hdGVkX2Jhc2VfZGVsYXlfbXMgPSBzdGQ6Om1p
bih5LCBlc3RpbWF0ZWRfYmFzZV9kZWxheV9tcyk7CisgICAgaW50NjRfdCBydHRfbXMgPSBwYWNr
ZXQuZmVlZGJhY2tfYXJyaXZhbF90aW1lX21zIC0gcGFja2V0LnNlbmRfdGltZV9tczsKKyAgICBt
aW5fcnR0X21zID0gc3RkOjptaW4ocnR0X21zLCBtaW5fcnR0X21zKTsKKyAgICBtaW5fc2VuZF9y
ZWNlaXZlX2RpZmZfbXMgPSBzdGQ6Om1pbih5LCBtaW5fc2VuZF9yZWNlaXZlX2RpZmZfbXMpOwog
ICAgIHRpbWVfc2VyaWVzLnBvaW50cy5lbXBsYWNlX2JhY2soeCwgeSk7CiAgIH0KIAotICAvLyBX
ZSBhc3N1bWUgdGhhdCB0aGUgYmFzZSBuZXR3b3JrIGRlbGF5ICh3L28gcXVldWVzKSBpcyB0aGUg
bWluIGRlbGF5Ci0gIC8vIG9ic2VydmVkIGR1cmluZyB0aGUgY2FsbC4KKyAgLy8gV2UgYXNzdW1l
IHRoYXQgdGhlIGJhc2UgbmV0d29yayBkZWxheSAody9vIHF1ZXVlcykgaXMgZXF1YWwgdG8gaGFs
ZgorICAvLyB0aGUgbWluaW11bSBSVFQuIFRoZXJlZm9yZSByZXNjYWxlIHRoZSBkZWxheXMgYnkg
c3VidHJhY3RpbmcgdGhlIG1pbmltdW0KKyAgLy8gb2JzZXJ2ZWQgMS13YXlzIGRlbGF5IGFuZCBh
ZGQgaGFsZiB0aGUgbWludW11bSBSVFQuCisgIGNvbnN0IGludDY0X3QgZXN0aW1hdGVkX2Nsb2Nr
X29mZnNldF9tcyA9CisgICAgICBtaW5fc2VuZF9yZWNlaXZlX2RpZmZfbXMgLSBtaW5fcnR0X21z
IC8gMjsKICAgZm9yIChUaW1lU2VyaWVzUG9pbnQmIHBvaW50IDogdGltZV9zZXJpZXMucG9pbnRz
KQotICAgIHBvaW50LnkgLT0gZXN0aW1hdGVkX2Jhc2VfZGVsYXlfbXM7CisgICAgcG9pbnQueSAt
PSBlc3RpbWF0ZWRfY2xvY2tfb2Zmc2V0X21zOwogICBmb3IgKFRpbWVTZXJpZXNQb2ludCYgcG9p
bnQgOiBsYXRlX2ZlZWRiYWNrX3Nlcmllcy5wb2ludHMpCi0gICAgcG9pbnQueSAtPSBlc3RpbWF0
ZWRfYmFzZV9kZWxheV9tczsKKyAgICBwb2ludC55IC09IGVzdGltYXRlZF9jbG9ja19vZmZzZXRf
bXM7CisKICAgLy8gQWRkIHRoZSBkYXRhIHNldCB0byB0aGUgcGxvdC4KICAgcGxvdC0+QXBwZW5k
VGltZVNlcmllc0lmTm90RW1wdHkoc3RkOjptb3ZlKHRpbWVfc2VyaWVzKSk7CiAgIHBsb3QtPkFw
cGVuZFRpbWVTZXJpZXNJZk5vdEVtcHR5KHN0ZDo6bW92ZShsYXRlX2ZlZWRiYWNrX3Nlcmllcykp
OwpAQCAtMTMwOSw3ICsxMzIwLDcgQEAgdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVOZXR3
b3JrRGVsYXlGZWVkYmFja0dyYXBoKFBsb3QqIHBsb3QpIHsKICAgcGxvdC0+U2V0WEF4aXMoVG9D
YWxsVGltZVNlYyhiZWdpbl90aW1lXyksIGNhbGxfZHVyYXRpb25fc18sICJUaW1lIChzKSIsCiAg
ICAgICAgICAgICAgICAgIGtMZWZ0TWFyZ2luLCBrUmlnaHRNYXJnaW4pOwogICBwbG90LT5TZXRT
dWdnZXN0ZWRZQXhpcygwLCAxMCwgIkRlbGF5IChtcykiLCBrQm90dG9tTWFyZ2luLCBrVG9wTWFy
Z2luKTsKLSAgcGxvdC0+U2V0VGl0bGUoIk5ldHdvcmsgRGVsYXkgQ2hhbmdlLiIpOworICBwbG90
LT5TZXRUaXRsZSgiTmV0d29yayBkZWxheSAoYmFzZWQgb24gcGVyLXBhY2tldCBmZWVkYmFjayki
KTsKIH0KIAogdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVQYWNlckRlbGF5R3JhcGgoUGxv
dCogcGxvdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX3Rvb2xzL2V2ZW50X2xvZ192aXN1YWxpemVyL2FuYWx5emVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZXZlbnRfbG9n
X3Zpc3VhbGl6ZXIvYW5hbHl6ZXIuaAppbmRleCA0YjhjMjdjOTUxN2QwY2JjYzA0MDFkNDhhYjEx
OGNjMjNkOTAxMjhhLi5jNjYwNmMyYjFmMTZiMTIyZDM1YjJlMWZkNmYzY2VkM2ViZjllNjBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
dG9vbHMvZXZlbnRfbG9nX3Zpc3VhbGl6ZXIvYW5hbHl6ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZXZlbnRfbG9nX3Zpc3VhbGl6
ZXIvYW5hbHl6ZXIuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBFdmVudExvZ0FuYWx5emVyIHsK
IAogICB2b2lkIENyZWF0ZUluY29taW5nUGFja2V0TG9zc0dyYXBoKFBsb3QqIHBsb3QpOwogCi0g
IHZvaWQgQ3JlYXRlSW5jb21pbmdEZWxheURlbHRhR3JhcGgoUGxvdCogcGxvdCk7CiAgIHZvaWQg
Q3JlYXRlSW5jb21pbmdEZWxheUdyYXBoKFBsb3QqIHBsb3QpOwogCiAgIHZvaWQgQ3JlYXRlRnJh
Y3Rpb25Mb3NzR3JhcGgoUGxvdCogcGxvdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZXZlbnRfbG9nX3Zpc3VhbGl6ZXIv
bWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190
b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9tYWluLmNjCmluZGV4IDBjMzY4OWMxYmNhZTNhMGZk
ZDAwMzg2MmIxZDhkZmY0NGRhYjJlZTEuLjBiNGU3NjE3ZTYwNjhkNzU2ZjM5MGY0YmUyYzc0Y2M5
MWViY2E2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9tYWluLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9sb2df
dmlzdWFsaXplci9tYWluLmNjCkBAIC0yMCwxNTEgKzIwLDE2OSBAQAogI2luY2x1ZGUgInRlc3Qv
ZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgog
Ci1ERUZJTkVfc3RyaW5nKHBsb3RfcHJvZmlsZSwKLSAgICAgICAgICAgICAgImRlZmF1bHQiLAot
ICAgICAgICAgICAgICAiQSBwcm9maWxlIHRoYXQgc2VsZWN0cyBhIGNlcnRhaW4gc3Vic2V0IG9m
IHRoZSBwbG90cy4gQ3VycmVudGx5ICIKLSAgICAgICAgICAgICAgImRlZmluZWQgcHJvZmlsZXMg
YXJlIFwiYWxsXCIsIFwibm9uZVwiLCBcInNlbmRzaWRlX2J3ZVwiLCIKLSAgICAgICAgICAgICAg
IlwicmVjZWl2ZXNpZGVfYndlXCIgYW5kIFwiZGVmYXVsdFwiIik7CitXRUJSVENfREVGSU5FX3N0
cmluZygKKyAgICBwbG90X3Byb2ZpbGUsCisgICAgImRlZmF1bHQiLAorICAgICJBIHByb2ZpbGUg
dGhhdCBzZWxlY3RzIGEgY2VydGFpbiBzdWJzZXQgb2YgdGhlIHBsb3RzLiBDdXJyZW50bHkgIgor
ICAgICJkZWZpbmVkIHByb2ZpbGVzIGFyZSBcImFsbFwiLCBcIm5vbmVcIiwgXCJzZW5kc2lkZV9i
d2VcIiwiCisgICAgIlwicmVjZWl2ZXNpZGVfYndlXCIgYW5kIFwiZGVmYXVsdFwiIik7CiAKLURF
RklORV9ib29sKHBsb3RfaW5jb21pbmdfcGFja2V0X3NpemVzLAotICAgICAgICAgICAgZmFsc2Us
Ci0gICAgICAgICAgICAiUGxvdCBiYXIgZ3JhcGggc2hvd2luZyB0aGUgc2l6ZSBvZiBlYWNoIGlu
Y29taW5nIHBhY2tldC4iKTsKLURFRklORV9ib29sKHBsb3Rfb3V0Z29pbmdfcGFja2V0X3NpemVz
LAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUGxvdCBiYXIgZ3JhcGggc2hvd2lu
ZyB0aGUgc2l6ZSBvZiBlYWNoIG91dGdvaW5nIHBhY2tldC4iKTsKLURFRklORV9ib29sKHBsb3Rf
aW5jb21pbmdfcGFja2V0X2NvdW50LAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAi
UGxvdCB0aGUgYWNjdW11bGF0ZWQgbnVtYmVyIG9mIHBhY2tldHMgZm9yIGVhY2ggaW5jb21pbmcg
c3RyZWFtLiIpOwotREVGSU5FX2Jvb2wocGxvdF9vdXRnb2luZ19wYWNrZXRfY291bnQsCi0gICAg
ICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IHRoZSBhY2N1bXVsYXRlZCBudW1iZXIg
b2YgcGFja2V0cyBmb3IgZWFjaCBvdXRnb2luZyBzdHJlYW0uIik7Ci1ERUZJTkVfYm9vbChwbG90
X2F1ZGlvX3BsYXlvdXQsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IGJh
ciBncmFwaCBzaG93aW5nIHRoZSB0aW1lIGJldHdlZW4gZWFjaCBhdWRpbyBwbGF5b3V0LiIpOwot
REVGSU5FX2Jvb2wocGxvdF9hdWRpb19sZXZlbCwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAg
ICAgICAgIlBsb3QgbGluZSBncmFwaCBzaG93aW5nIHRoZSBhdWRpbyBsZXZlbCBvZiBpbmNvbWlu
ZyBhdWRpby4iKTsKLURFRklORV9ib29sKHBsb3RfaW5jb21pbmdfc2VxdWVuY2VfbnVtYmVyX2Rl
bHRhLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUGxvdCB0aGUgc2VxdWVuY2Ug
bnVtYmVyIGRpZmZlcmVuY2UgYmV0d2VlbiBjb25zZWN1dGl2ZSBpbmNvbWluZyAiCi0gICAgICAg
ICAgICAicGFja2V0cy4iKTsKLURFRklORV9ib29sKAotICAgIHBsb3RfaW5jb21pbmdfZGVsYXlf
ZGVsdGEsCitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9pbmNvbWluZ19wYWNrZXRfc2l6ZXMsCisg
ICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlBsb3QgYmFyIGdy
YXBoIHNob3dpbmcgdGhlIHNpemUgb2YgZWFjaCBpbmNvbWluZyBwYWNrZXQuIik7CitXRUJSVENf
REVGSU5FX2Jvb2wocGxvdF9vdXRnb2luZ19wYWNrZXRfc2l6ZXMsCisgICAgICAgICAgICAgICAg
ICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlBsb3QgYmFyIGdyYXBoIHNob3dpbmcgdGhl
IHNpemUgb2YgZWFjaCBvdXRnb2luZyBwYWNrZXQuIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisg
ICAgcGxvdF9pbmNvbWluZ19wYWNrZXRfY291bnQsCiAgICAgZmFsc2UsCi0gICAgIlBsb3QgdGhl
IGRpZmZlcmVuY2UgaW4gMS13YXkgcGF0aCBkZWxheSBiZXR3ZWVuIGNvbnNlY3V0aXZlIHBhY2tl
dHMuIik7Ci1ERUZJTkVfYm9vbChwbG90X2luY29taW5nX2RlbGF5LAotICAgICAgICAgICAgdHJ1
ZSwKLSAgICAgICAgICAgICJQbG90IHRoZSAxLXdheSBwYXRoIGRlbGF5IGZvciBpbmNvbWluZyBw
YWNrZXRzLCBub3JtYWxpemVkIHNvICIKLSAgICAgICAgICAgICJ0aGF0IHRoZSBmaXJzdCBwYWNr
ZXQgaGFzIGRlbGF5IDAuIik7Ci1ERUZJTkVfYm9vbChwbG90X2luY29taW5nX2xvc3NfcmF0ZSwK
LSAgICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAiQ29tcHV0ZSB0aGUgbG9zcyByYXRlIGZv
ciBpbmNvbWluZyBwYWNrZXRzIHVzaW5nIGEgbWV0aG9kIHRoYXQncyAiCi0gICAgICAgICAgICAi
c2ltaWxhciB0byB0aGUgb25lIHVzZWQgZm9yIFJUQ1AgU1IgYW5kIFJSIGZyYWN0aW9uIGxvc3Qu
IE5vdGUgIgotICAgICAgICAgICAgInRoYXQgdGhlIGxvc3MgcmF0ZSBjYW4gYmUgbmVnYXRpdmUg
aWYgcGFja2V0cyBhcmUgZHVwbGljYXRlZCBvciAiCi0gICAgICAgICAgICAicmVvcmRlcmVkLiIp
OwotREVGSU5FX2Jvb2wocGxvdF9pbmNvbWluZ19iaXRyYXRlLAotICAgICAgICAgICAgdHJ1ZSwK
LSAgICAgICAgICAgICJQbG90IHRoZSB0b3RhbCBiaXRyYXRlIHVzZWQgYnkgYWxsIGluY29taW5n
IHN0cmVhbXMuIik7Ci1ERUZJTkVfYm9vbChwbG90X291dGdvaW5nX2JpdHJhdGUsCi0gICAgICAg
ICAgICB0cnVlLAotICAgICAgICAgICAgIlBsb3QgdGhlIHRvdGFsIGJpdHJhdGUgdXNlZCBieSBh
bGwgb3V0Z29pbmcgc3RyZWFtcy4iKTsKLURFRklORV9ib29sKHBsb3RfaW5jb21pbmdfc3RyZWFt
X2JpdHJhdGUsCi0gICAgICAgICAgICB0cnVlLAotICAgICAgICAgICAgIlBsb3QgdGhlIGJpdHJh
dGUgdXNlZCBieSBlYWNoIGluY29taW5nIHN0cmVhbS4iKTsKLURFRklORV9ib29sKHBsb3Rfb3V0
Z29pbmdfc3RyZWFtX2JpdHJhdGUsCi0gICAgICAgICAgICB0cnVlLAotICAgICAgICAgICAgIlBs
b3QgdGhlIGJpdHJhdGUgdXNlZCBieSBlYWNoIG91dGdvaW5nIHN0cmVhbS4iKTsKLURFRklORV9i
b29sKHBsb3Rfc2ltdWxhdGVkX3JlY2VpdmVzaWRlX2J3ZSwKLSAgICAgICAgICAgIGZhbHNlLAot
ICAgICAgICAgICAgIlJ1biB0aGUgcmVjZWl2ZS1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0b3Igd2l0
aCB0aGUgaW5jb21pbmcgcnRwICIKLSAgICAgICAgICAgICJwYWNrZXRzIGFuZCBwbG90IHRoZSBy
ZXN1bHRpbmcgZXN0aW1hdGUuIik7Ci1ERUZJTkVfYm9vbChwbG90X3NpbXVsYXRlZF9zZW5kc2lk
ZV9id2UsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJSdW4gdGhlIHNlbmQtc2lk
ZSBiYW5kd2lkdGggZXN0aW1hdG9yIHdpdGggdGhlIG91dGdvaW5nIHJ0cCBhbmQgIgotICAgICAg
ICAgICAgImluY29taW5nIHJ0Y3AgYW5kIHBsb3QgdGhlIHJlc3VsdGluZyBlc3RpbWF0ZS4iKTsK
LURFRklORV9ib29sKHBsb3RfbmV0d29ya19kZWxheV9mZWVkYmFjaywKLSAgICAgICAgICAgIHRy
dWUsCi0gICAgICAgICAgICAiQ29tcHV0ZSBuZXR3b3JrIGRlbGF5IGJhc2VkIG9uIHNlbnQgcGFj
a2V0cyBhbmQgdGhlIHJlY2VpdmVkICIKLSAgICAgICAgICAgICJ0cmFuc3BvcnQgZmVlZGJhY2su
Iik7Ci1ERUZJTkVfYm9vbChwbG90X2ZyYWN0aW9uX2xvc3NfZmVlZGJhY2ssCi0gICAgICAgICAg
ICB0cnVlLAotICAgICAgICAgICAgIlBsb3QgcGFja2V0IGxvc3MgaW4gcGVyY2VudCBmb3Igb3V0
Z29pbmcgcGFja2V0cyAoYXMgcGVyY2VpdmVkIGJ5ICIKLSAgICAgICAgICAgICJ0aGUgc2VuZC1z
aWRlIGJhbmR3aWR0aCBlc3RpbWF0b3IpLiIpOwotREVGSU5FX2Jvb2wocGxvdF9wYWNlcl9kZWxh
eSwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBsb3QgdGhlIHRpbWUgZWFjaCBz
ZW50IHBhY2tldCBoYXMgc3BlbnQgaW4gdGhlIHBhY2VyIChiYXNlZCBvbiAiCi0gICAgICAgICAg
ICAidGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgUlRQIHRpbWVzdGFtcCBhbmQgdGhlIHNlbmQg
IgotICAgICAgICAgICAgInRpbWVzdGFtcCkuIik7Ci1ERUZJTkVfYm9vbChwbG90X3RpbWVzdGFt
cHMsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IHRoZSBydHAgdGltZXN0
YW1wcyBvZiBhbGwgcnRwIGFuZCBydGNwIHBhY2tldHMgb3ZlciB0aW1lLiIpOwotREVGSU5FX2Jv
b2wocGxvdF9ydGNwX2RldGFpbHMsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQ
bG90IHRoZSBjb250ZW50cyBvZiBhbGwgcmVwb3J0IGJsb2NrcyBpbiBhbGwgc2VuZGVyIGFuZCBy
ZWNlaXZlciAiCi0gICAgICAgICAgICAicmVwb3J0cy4gVGhpcyBpbmNsdWRlcyBmcmFjdGlvbiBs
b3N0LCBjdW11bGF0aXZlIG51bWJlciBvZiBsb3N0ICIKLSAgICAgICAgICAgICJwYWNrZXRzLCBl
eHRlbmRlZCBoaWdoZXN0IHNlcXVlbmNlIG51bWJlciBhbmQgdGltZSBzaW5jZSBsYXN0ICIKLSAg
ICAgICAgICAgICJyZWNlaXZlZCBTUi4iKTsKLURFRklORV9ib29sKHBsb3RfYXVkaW9fZW5jb2Rl
cl9iaXRyYXRlX2JwcywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBsb3QgdGhl
IGF1ZGlvIGVuY29kZXIgdGFyZ2V0IGJpdHJhdGUuIik7Ci1ERUZJTkVfYm9vbChwbG90X2F1ZGlv
X2VuY29kZXJfZnJhbWVfbGVuZ3RoX21zLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAg
ICAiUGxvdCB0aGUgYXVkaW8gZW5jb2RlciBmcmFtZSBsZW5ndGguIik7Ci1ERUZJTkVfYm9vbCgK
KyAgICAiUGxvdCB0aGUgYWNjdW11bGF0ZWQgbnVtYmVyIG9mIHBhY2tldHMgZm9yIGVhY2ggaW5j
b21pbmcgc3RyZWFtLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHBsb3Rfb3V0Z29pbmdf
cGFja2V0X2NvdW50LAorICAgIGZhbHNlLAorICAgICJQbG90IHRoZSBhY2N1bXVsYXRlZCBudW1i
ZXIgb2YgcGFja2V0cyBmb3IgZWFjaCBvdXRnb2luZyBzdHJlYW0uIik7CitXRUJSVENfREVGSU5F
X2Jvb2woCisgICAgcGxvdF9hdWRpb19wbGF5b3V0LAorICAgIGZhbHNlLAorICAgICJQbG90IGJh
ciBncmFwaCBzaG93aW5nIHRoZSB0aW1lIGJldHdlZW4gZWFjaCBhdWRpbyBwbGF5b3V0LiIpOwor
V0VCUlRDX0RFRklORV9ib29sKAorICAgIHBsb3RfYXVkaW9fbGV2ZWwsCisgICAgZmFsc2UsCisg
ICAgIlBsb3QgbGluZSBncmFwaCBzaG93aW5nIHRoZSBhdWRpbyBsZXZlbCBvZiBpbmNvbWluZyBh
dWRpby4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBwbG90X2luY29taW5nX3NlcXVlbmNl
X251bWJlcl9kZWx0YSwKKyAgICBmYWxzZSwKKyAgICAiUGxvdCB0aGUgc2VxdWVuY2UgbnVtYmVy
IGRpZmZlcmVuY2UgYmV0d2VlbiBjb25zZWN1dGl2ZSBpbmNvbWluZyAiCisgICAgInBhY2tldHMu
Iik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF9pbmNvbWluZ19kZWxheSwKKyAgICB0
cnVlLAorICAgICJQbG90IHRoZSAxLXdheSBwYXRoIGRlbGF5IGZvciBpbmNvbWluZyBwYWNrZXRz
LCBub3JtYWxpemVkIHNvICIKKyAgICAidGhhdCB0aGUgZmlyc3QgcGFja2V0IGhhcyBkZWxheSAw
LiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHBsb3RfaW5jb21pbmdfbG9zc19yYXRlLAor
ICAgIHRydWUsCisgICAgIkNvbXB1dGUgdGhlIGxvc3MgcmF0ZSBmb3IgaW5jb21pbmcgcGFja2V0
cyB1c2luZyBhIG1ldGhvZCB0aGF0J3MgIgorICAgICJzaW1pbGFyIHRvIHRoZSBvbmUgdXNlZCBm
b3IgUlRDUCBTUiBhbmQgUlIgZnJhY3Rpb24gbG9zdC4gTm90ZSAiCisgICAgInRoYXQgdGhlIGxv
c3MgcmF0ZSBjYW4gYmUgbmVnYXRpdmUgaWYgcGFja2V0cyBhcmUgZHVwbGljYXRlZCBvciAiCisg
ICAgInJlb3JkZXJlZC4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X2luY29taW5nX2JpdHJh
dGUsCisgICAgICAgICAgICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAiUGxvdCB0
aGUgdG90YWwgYml0cmF0ZSB1c2VkIGJ5IGFsbCBpbmNvbWluZyBzdHJlYW1zLiIpOworV0VCUlRD
X0RFRklORV9ib29sKHBsb3Rfb3V0Z29pbmdfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICB0
cnVlLAorICAgICAgICAgICAgICAgICAgICJQbG90IHRoZSB0b3RhbCBiaXRyYXRlIHVzZWQgYnkg
YWxsIG91dGdvaW5nIHN0cmVhbXMuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9pbmNvbWlu
Z19zdHJlYW1fYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAg
ICAgICAgICJQbG90IHRoZSBiaXRyYXRlIHVzZWQgYnkgZWFjaCBpbmNvbWluZyBzdHJlYW0uIik7
CitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9vdXRnb2luZ19zdHJlYW1fYml0cmF0ZSwKKyAgICAg
ICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICJQbG90IHRoZSBiaXRyYXRl
IHVzZWQgYnkgZWFjaCBvdXRnb2luZyBzdHJlYW0uIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisg
ICAgcGxvdF9zaW11bGF0ZWRfcmVjZWl2ZXNpZGVfYndlLAorICAgIGZhbHNlLAorICAgICJSdW4g
dGhlIHJlY2VpdmUtc2lkZSBiYW5kd2lkdGggZXN0aW1hdG9yIHdpdGggdGhlIGluY29taW5nIHJ0
cCAiCisgICAgInBhY2tldHMgYW5kIHBsb3QgdGhlIHJlc3VsdGluZyBlc3RpbWF0ZS4iKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbCgKKyAgICBwbG90X3NpbXVsYXRlZF9zZW5kc2lkZV9id2UsCisgICAg
ZmFsc2UsCisgICAgIlJ1biB0aGUgc2VuZC1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0b3Igd2l0aCB0
aGUgb3V0Z29pbmcgcnRwIGFuZCAiCisgICAgImluY29taW5nIHJ0Y3AgYW5kIHBsb3QgdGhlIHJl
c3VsdGluZyBlc3RpbWF0ZS4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBwbG90X25ldHdv
cmtfZGVsYXlfZmVlZGJhY2ssCisgICAgdHJ1ZSwKKyAgICAiQ29tcHV0ZSBuZXR3b3JrIGRlbGF5
IGJhc2VkIG9uIHNlbnQgcGFja2V0cyBhbmQgdGhlIHJlY2VpdmVkICIKKyAgICAidHJhbnNwb3J0
IGZlZWRiYWNrLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHBsb3RfZnJhY3Rpb25fbG9z
c19mZWVkYmFjaywKKyAgICB0cnVlLAorICAgICJQbG90IHBhY2tldCBsb3NzIGluIHBlcmNlbnQg
Zm9yIG91dGdvaW5nIHBhY2tldHMgKGFzIHBlcmNlaXZlZCBieSAiCisgICAgInRoZSBzZW5kLXNp
ZGUgYmFuZHdpZHRoIGVzdGltYXRvcikuIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxv
dF9wYWNlcl9kZWxheSwKKyAgICBmYWxzZSwKKyAgICAiUGxvdCB0aGUgdGltZSBlYWNoIHNlbnQg
cGFja2V0IGhhcyBzcGVudCBpbiB0aGUgcGFjZXIgKGJhc2VkIG9uICIKKyAgICAidGhlIGRpZmZl
cmVuY2UgYmV0d2VlbiB0aGUgUlRQIHRpbWVzdGFtcCBhbmQgdGhlIHNlbmQgIgorICAgICJ0aW1l
c3RhbXApLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHBsb3RfdGltZXN0YW1wcywKKyAg
ICBmYWxzZSwKKyAgICAiUGxvdCB0aGUgcnRwIHRpbWVzdGFtcHMgb2YgYWxsIHJ0cCBhbmQgcnRj
cCBwYWNrZXRzIG92ZXIgdGltZS4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBwbG90X3J0
Y3BfZGV0YWlscywKKyAgICBmYWxzZSwKKyAgICAiUGxvdCB0aGUgY29udGVudHMgb2YgYWxsIHJl
cG9ydCBibG9ja3MgaW4gYWxsIHNlbmRlciBhbmQgcmVjZWl2ZXIgIgorICAgICJyZXBvcnRzLiBU
aGlzIGluY2x1ZGVzIGZyYWN0aW9uIGxvc3QsIGN1bXVsYXRpdmUgbnVtYmVyIG9mIGxvc3QgIgor
ICAgICJwYWNrZXRzLCBleHRlbmRlZCBoaWdoZXN0IHNlcXVlbmNlIG51bWJlciBhbmQgdGltZSBz
aW5jZSBsYXN0ICIKKyAgICAicmVjZWl2ZWQgU1IuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocGxv
dF9hdWRpb19lbmNvZGVyX2JpdHJhdGVfYnBzLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAor
ICAgICAgICAgICAgICAgICAgICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIHRhcmdldCBiaXRyYXRl
LiIpOworV0VCUlRDX0RFRklORV9ib29sKHBsb3RfYXVkaW9fZW5jb2Rlcl9mcmFtZV9sZW5ndGhf
bXMsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlBsb3Qg
dGhlIGF1ZGlvIGVuY29kZXIgZnJhbWUgbGVuZ3RoLiIpOworV0VCUlRDX0RFRklORV9ib29sKAog
ICAgIHBsb3RfYXVkaW9fZW5jb2Rlcl9wYWNrZXRfbG9zcywKICAgICBmYWxzZSwKICAgICAiUGxv
dCB0aGUgdXBsaW5rIHBhY2tldCBsb3NzIGZyYWN0aW9uIHdoaWNoIGlzIHNlbnQgdG8gdGhlIGF1
ZGlvIGVuY29kZXIuIik7Ci1ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2VuY29kZXJfZmVjLCBmYWxz
ZSwgIlBsb3QgdGhlIGF1ZGlvIGVuY29kZXIgRkVDLiIpOwotREVGSU5FX2Jvb2wocGxvdF9hdWRp
b19lbmNvZGVyX2R0eCwgZmFsc2UsICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIERUWC4iKTsKLURF
RklORV9ib29sKHBsb3RfYXVkaW9fZW5jb2Rlcl9udW1fY2hhbm5lbHMsCi0gICAgICAgICAgICBm
YWxzZSwKLSAgICAgICAgICAgICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIG51bWJlciBvZiBjaGFu
bmVscy4iKTsKLURFRklORV9ib29sKHBsb3RfbmV0ZXFfc3RhdHMsIGZhbHNlLCAiUGxvdCB0aGUg
TmV0RXEgc3RhdGlzdGljcy4iKTsKLURFRklORV9ib29sKHBsb3RfaWNlX2NhbmRpZGF0ZV9wYWly
X2NvbmZpZywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBsb3QgdGhlIElDRSBj
YW5kaWRhdGUgcGFpciBjb25maWcgZXZlbnRzLiIpOwotREVGSU5FX2Jvb2wocGxvdF9pY2VfY29u
bmVjdGl2aXR5X2NoZWNrLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUGxvdCB0
aGUgSUNFIGNhbmRpZGF0ZSBwYWlyIGNvbm5lY3Rpdml0eSBjaGVja3MuIik7CitXRUJSVENfREVG
SU5FX2Jvb2wocGxvdF9hdWRpb19lbmNvZGVyX2ZlYywKKyAgICAgICAgICAgICAgICAgICBmYWxz
ZSwKKyAgICAgICAgICAgICAgICAgICAiUGxvdCB0aGUgYXVkaW8gZW5jb2RlciBGRUMuIik7CitX
RUJSVENfREVGSU5FX2Jvb2wocGxvdF9hdWRpb19lbmNvZGVyX2R0eCwKKyAgICAgICAgICAgICAg
ICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUGxvdCB0aGUgYXVkaW8gZW5jb2RlciBE
VFguIik7CitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9hdWRpb19lbmNvZGVyX251bV9jaGFubmVs
cywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUGxvdCB0
aGUgYXVkaW8gZW5jb2RlciBudW1iZXIgb2YgY2hhbm5lbHMuIik7CitXRUJSVENfREVGSU5FX2Jv
b2wocGxvdF9uZXRlcV9zdGF0cywgZmFsc2UsICJQbG90IHRoZSBOZXRFcSBzdGF0aXN0aWNzLiIp
OworV0VCUlRDX0RFRklORV9ib29sKHBsb3RfaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZywKKyAg
ICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUGxvdCB0aGUgSUNF
IGNhbmRpZGF0ZSBwYWlyIGNvbmZpZyBldmVudHMuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocGxv
dF9pY2VfY29ubmVjdGl2aXR5X2NoZWNrLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICJQbG90IHRoZSBJQ0UgY2FuZGlkYXRlIHBhaXIgY29ubmVjdGl2aXR5
IGNoZWNrcy4iKTsKIAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAg
IGZvcmNlX2ZpZWxkdHJpYWxzLAogICAgICIiLAogICAgICJGaWVsZCB0cmlhbHMgY29udHJvbCBl
eHBlcmltZW50YWwgZmVhdHVyZSBjb2RlIHdoaWNoIGNhbiBiZSBmb3JjZWQuICIKICAgICAiRS5n
LiBydW5uaW5nIHdpdGggLS1mb3JjZV9maWVsZHRyaWFscz1XZWJSVEMtRm9vRmVhdHVyZS9FbmFi
bGVkLyIKICAgICAiIHdpbGwgYXNzaWduIHRoZSBncm91cCBFbmFibGVkIHRvIGZpZWxkIHRyaWFs
IFdlYlJUQy1Gb29GZWF0dXJlLiBNdWx0aXBsZSAiCiAgICAgInRyaWFscyBhcmUgc2VwYXJhdGVk
IGJ5IFwiL1wiIik7Ci1ERUZJTkVfc3RyaW5nKHdhdl9maWxlbmFtZSwKLSAgICAgICAgICAgICAg
IiIsCi0gICAgICAgICAgICAgICJQYXRoIHRvIHdhdiBmaWxlIHVzZWQgZm9yIHNpbXVsYXRpb24g
b2Ygaml0dGVyIGJ1ZmZlciIpOwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhp
cyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX3N0cmluZyh3YXZfZmlsZW5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJQYXRoIHRvIHdhdiBmaWxl
IHVzZWQgZm9yIHNpbXVsYXRpb24gb2Ygaml0dGVyIGJ1ZmZlciIpOworV0VCUlRDX0RFRklORV9i
b29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOwogCi1ERUZJTkVfYm9vbChz
aG93X2RldGVjdG9yX3N0YXRlLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiU2hv
dyB0aGUgc3RhdGUgb2YgdGhlIGRlbGF5IGJhc2VkIEJXRSBkZXRlY3RvciBvbiB0aGUgdG90YWwg
IgotICAgICAgICAgICAgImJpdHJhdGUgZ3JhcGgiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAg
ICBzaG93X2RldGVjdG9yX3N0YXRlLAorICAgIGZhbHNlLAorICAgICJTaG93IHRoZSBzdGF0ZSBv
ZiB0aGUgZGVsYXkgYmFzZWQgQldFIGRldGVjdG9yIG9uIHRoZSB0b3RhbCAiCisgICAgImJpdHJh
dGUgZ3JhcGgiKTsKIAotREVGSU5FX2Jvb2woc2hvd19hbHJfc3RhdGUsCi0gICAgICAgICAgICBm
YWxzZSwKLSAgICAgICAgICAgICJTaG93IHRoZSBzdGF0ZSBBTFIgc3RhdGUgb24gdGhlIHRvdGFs
IGJpdHJhdGUgZ3JhcGgiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChzaG93X2Fscl9zdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiU2hvdyB0aGUgc3Rh
dGUgQUxSIHN0YXRlIG9uIHRoZSB0b3RhbCBiaXRyYXRlIGdyYXBoIik7CiAKLURFRklORV9ib29s
KHBhcnNlX3VuY29uZmlndXJlZF9oZWFkZXJfZXh0ZW5zaW9ucywKLSAgICAgICAgICAgIHRydWUs
Ci0gICAgICAgICAgICAiQXR0ZW1wdCB0byBwYXJzZSB1bmNvbmZpZ3VyZWQgaGVhZGVyIGV4dGVu
c2lvbnMgdXNpbmcgdGhlIGRlZmF1bHQgIgotICAgICAgICAgICAgIldlYlJUQyBtYXBwaW5nLiBU
aGlzIGNhbiBnaXZlIHZlcnkgbWlzbGVhZGluZyByZXN1bHRzIGlmIHRoZSAiCi0gICAgICAgICAg
ICAiYXBwbGljYXRpb24gbmVnb3RpYXRlcyBhIGRpZmZlcmVudCBtYXBwaW5nLiIpOworV0VCUlRD
X0RFRklORV9ib29sKAorICAgIHBhcnNlX3VuY29uZmlndXJlZF9oZWFkZXJfZXh0ZW5zaW9ucywK
KyAgICB0cnVlLAorICAgICJBdHRlbXB0IHRvIHBhcnNlIHVuY29uZmlndXJlZCBoZWFkZXIgZXh0
ZW5zaW9ucyB1c2luZyB0aGUgZGVmYXVsdCAiCisgICAgIldlYlJUQyBtYXBwaW5nLiBUaGlzIGNh
biBnaXZlIHZlcnkgbWlzbGVhZGluZyByZXN1bHRzIGlmIHRoZSAiCisgICAgImFwcGxpY2F0aW9u
IG5lZ290aWF0ZXMgYSBkaWZmZXJlbnQgbWFwcGluZy4iKTsKIAotREVGSU5FX2Jvb2wocHJpbnRf
dHJpYWdlX2FsZXJ0cywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlByaW50IHRy
aWFnZSBhbGVydHMsIGkuZS4gYSBsaXN0IG9mIHBvdGVudGlhbCBwcm9ibGVtcy4iKTsKK1dFQlJU
Q19ERUZJTkVfYm9vbChwcmludF90cmlhZ2VfYWxlcnRzLAorICAgICAgICAgICAgICAgICAgIGZh
bHNlLAorICAgICAgICAgICAgICAgICAgICJQcmludCB0cmlhZ2UgYWxlcnRzLCBpLmUuIGEgbGlz
dCBvZiBwb3RlbnRpYWwgcHJvYmxlbXMuIik7CiAKLURFRklORV9ib29sKG5vcm1hbGl6ZV90aW1l
LAotICAgICAgICAgICAgdHJ1ZSwKLSAgICAgICAgICAgICJOb3JtYWxpemUgdGhlIGxvZyB0aW1l
c3RhbXBzIHNvIHRoYXQgdGhlIGNhbGwgc3RhcnRzIGF0IHRpbWUgMC4iKTsKK1dFQlJUQ19ERUZJ
TkVfYm9vbCgKKyAgICBub3JtYWxpemVfdGltZSwKKyAgICB0cnVlLAorICAgICJOb3JtYWxpemUg
dGhlIGxvZyB0aW1lc3RhbXBzIHNvIHRoYXQgdGhlIGNhbGwgc3RhcnRzIGF0IHRpbWUgMC4iKTsK
IAotREVGSU5FX2Jvb2wocHJvdG9idWZfb3V0cHV0LAotICAgICAgICAgICAgZmFsc2UsCi0gICAg
ICAgICAgICAiT3V0cHV0IGNoYXJ0cyBhcyBwcm90b2J1ZiBpbnN0ZWFkIG9mIHB5dGhvbiBjb2Rl
LiIpOworV0VCUlRDX0RFRklORV9ib29sKHByb3RvYnVmX291dHB1dCwKKyAgICAgICAgICAgICAg
ICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiT3V0cHV0IGNoYXJ0cyBhcyBwcm90b2J1
ZiBpbnN0ZWFkIG9mIHB5dGhvbiBjb2RlLiIpOwogCiB2b2lkIFNldEFsbFBsb3RGbGFncyhib29s
IHNldHRpbmcpOwogCkBAIC0xOTQsNyArMjEyLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
IGFyZ3ZbXSkgewogICB9IGVsc2UgaWYgKHN0cmNtcChGTEFHX3Bsb3RfcHJvZmlsZSwgInJlY2Vp
dmVzaWRlX2J3ZSIpID09IDApIHsKICAgICBTZXRBbGxQbG90RmxhZ3MoZmFsc2UpOwogICAgIEZM
QUdfcGxvdF9pbmNvbWluZ19wYWNrZXRfc2l6ZXMgPSB0cnVlOwotICAgIEZMQUdfcGxvdF9pbmNv
bWluZ19kZWxheV9kZWx0YSA9IHRydWU7CiAgICAgRkxBR19wbG90X2luY29taW5nX2RlbGF5ID0g
dHJ1ZTsKICAgICBGTEFHX3Bsb3RfaW5jb21pbmdfbG9zc19yYXRlID0gdHJ1ZTsKICAgICBGTEFH
X3Bsb3RfaW5jb21pbmdfYml0cmF0ZSA9IHRydWU7CkBAIC0yMTgsNyArMjM1LDYgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgIHJldHVybiAwOwogICB9CiAKLSAgd2Vi
cnRjOjp0ZXN0OjpTZXRFeGVjdXRhYmxlUGF0aChhcmd2WzBdKTsKICAgd2VicnRjOjp0ZXN0OjpW
YWxpZGF0ZUZpZWxkVHJpYWxzU3RyaW5nT3JEaWUoRkxBR19mb3JjZV9maWVsZHRyaWFscyk7CiAg
IC8vIEluaXRGaWVsZFRyaWFsc0Zyb21TdHJpbmcgc3RvcmVzIHRoZSBjaGFyKiwgc28gdGhlIGNo
YXIgYXJyYXkgbXVzdCBvdXRsaXZlCiAgIC8vIHRoZSBhcHBsaWNhdGlvbi4KQEAgLTIzNiw5ICsy
NTIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAKICAgaWYgKCFwYXJz
ZWRfbG9nLlBhcnNlRmlsZShmaWxlbmFtZSkpIHsKICAgICBzdGQ6OmNlcnIgPDwgIkNvdWxkIG5v
dCBwYXJzZSB0aGUgZW50aXJlIGxvZyBmaWxlLiIgPDwgc3RkOjplbmRsOwotICAgIHN0ZDo6Y2Vy
ciA8PCAiUHJvY2VlZGluZyB0byBhbmFseXplIHRoZSBmaXJzdCAiCi0gICAgICAgICAgICAgIDw8
IHBhcnNlZF9sb2cuR2V0TnVtYmVyT2ZFdmVudHMoKSA8PCAiIGV2ZW50cyBpbiB0aGUgZmlsZS4i
Ci0gICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICBzdGQ6OmNlcnIgPDwgIk9ubHkgdGhl
IHBhcnNhYmxlIGV2ZW50cyB3aWxsIGJlIGFuYWx5emVkLiIgPDwgc3RkOjplbmRsOwogICB9CiAK
ICAgd2VicnRjOjpFdmVudExvZ0FuYWx5emVyIGFuYWx5emVyKHBhcnNlZF9sb2csIEZMQUdfbm9y
bWFsaXplX3RpbWUpOwpAQCAtMjc3LDkgKzI5MSw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiBhcmd2W10pIHsKICAgaWYgKEZMQUdfcGxvdF9pbmNvbWluZ19zZXF1ZW5jZV9udW1iZXJfZGVs
dGEpIHsKICAgICBhbmFseXplci5DcmVhdGVTZXF1ZW5jZU51bWJlckdyYXBoKGNvbGxlY3Rpb24t
PkFwcGVuZE5ld1Bsb3QoKSk7CiAgIH0KLSAgaWYgKEZMQUdfcGxvdF9pbmNvbWluZ19kZWxheV9k
ZWx0YSkgewotICAgIGFuYWx5emVyLkNyZWF0ZUluY29taW5nRGVsYXlEZWx0YUdyYXBoKGNvbGxl
Y3Rpb24tPkFwcGVuZE5ld1Bsb3QoKSk7Ci0gIH0KICAgaWYgKEZMQUdfcGxvdF9pbmNvbWluZ19k
ZWxheSkgewogICAgIGFuYWx5emVyLkNyZWF0ZUluY29taW5nRGVsYXlHcmFwaChjb2xsZWN0aW9u
LT5BcHBlbmROZXdQbG90KCkpOwogICB9CkBAIC00NjYsNyArNDc3LDYgQEAgdm9pZCBTZXRBbGxQ
bG90RmxhZ3MoYm9vbCBzZXR0aW5nKSB7CiAgIEZMQUdfcGxvdF9hdWRpb19wbGF5b3V0ID0gc2V0
dGluZzsKICAgRkxBR19wbG90X2F1ZGlvX2xldmVsID0gc2V0dGluZzsKICAgRkxBR19wbG90X2lu
Y29taW5nX3NlcXVlbmNlX251bWJlcl9kZWx0YSA9IHNldHRpbmc7Ci0gIEZMQUdfcGxvdF9pbmNv
bWluZ19kZWxheV9kZWx0YSA9IHNldHRpbmc7CiAgIEZMQUdfcGxvdF9pbmNvbWluZ19kZWxheSA9
IHNldHRpbmc7CiAgIEZMQUdfcGxvdF9pbmNvbWluZ19sb3NzX3JhdGUgPSBzZXR0aW5nOwogICBG
TEFHX3Bsb3RfaW5jb21pbmdfYml0cmF0ZSA9IHNldHRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZm9yY2VfbWljX3Zv
bHVtZV9tYXgvZm9yY2VfbWljX3ZvbHVtZV9tYXguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZm9yY2VfbWljX3ZvbHVtZV9tYXgvZm9yY2Vf
bWljX3ZvbHVtZV9tYXguY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjZDFiMzZk
OTA0N2I4OWNlOTU5YTY4YmZjNjU5YjFlZjk0ZmRiMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX3Rvb2xzL2ZvcmNlX21pY192b2x1bWVfbWF4L2ZvcmNlX21pY192b2x1bWVf
bWF4LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
KGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
ICovCi0KLS8vIFRoaXMgdXRpbGl0eSB3aWxsIHBvcnRhYmx5IGZvcmNlIHRoZSB2b2x1bWUgb2Yg
dGhlIGRlZmF1bHQgbWljcm9waG9uZSB0byBtYXguCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0j
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKLQot
dXNpbmcgd2VicnRjOjpBdWRpb0RldmljZU1vZHVsZTsKLQotI2lmIGRlZmluZWQoX1dJTjMyKQot
I2RlZmluZSBERUZBVUxUX0lOUFVUX0RFVklDRSAoQXVkaW9EZXZpY2VNb2R1bGU6OmtEZWZhdWx0
Q29tbXVuaWNhdGlvbkRldmljZSkKLSNlbHNlCi0jZGVmaW5lIERFRkFVTFRfSU5QVVRfREVWSUNF
ICgwKQotI2VuZGlmCi0KLWludCBtYWluKGludCAvKmFyZ2MqLywgY2hhciogLyphcmd2Ki8gW10p
IHsKLSAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBBRE0uCi0gIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb0RldmljZU1vZHVsZT4gYWRtKAotICAgICAgQXVkaW9EZXZpY2VNb2R1bGU6OkNy
ZWF0ZShBdWRpb0RldmljZU1vZHVsZTo6a1BsYXRmb3JtRGVmYXVsdEF1ZGlvKSk7Ci0gIGlmICgh
YWRtLmdldCgpKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gY3JlYXRlIEF1ZGlv
IERldmljZSBNb2R1bGUuXG4iKTsKLSAgICByZXR1cm4gMTsKLSAgfQotICBpZiAoYWRtLT5Jbml0
KCkgIT0gMCkgewotICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgQXVk
aW8gRGV2aWNlIE1vZHVsZS5cbiIpOwotICAgIHJldHVybiAxOwotICB9Ci0gIGlmIChhZG0tPlNl
dFJlY29yZGluZ0RldmljZShERUZBVUxUX0lOUFVUX0RFVklDRSkgIT0gMCkgewotICAgIGZwcmlu
dGYoc3RkZXJyLCAiRmFpbGVkIHRvIHNldCB0aGUgZGVmYXVsdCBpbnB1dCBkZXZpY2UuXG4iKTsK
LSAgICByZXR1cm4gMTsKLSAgfQotICBpZiAoYWRtLT5Jbml0TWljcm9waG9uZSgpICE9IDApIHsK
LSAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byB0byBpbml0aWFsaXplIHRoZSBtaWNyb3Bo
b25lLlxuIik7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICAvLyBTZXQgbWljIHZvbHVtZSB0byBt
YXguCi0gIHVpbnQzMl90IG1heF92b2wgPSAwOwotICBpZiAoYWRtLT5NYXhNaWNyb3Bob25lVm9s
dW1lKCZtYXhfdm9sKSAhPSAwKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZ2V0
IG1heCB2b2x1bWUuXG4iKTsKLSAgICByZXR1cm4gMTsKLSAgfQotICBpZiAoYWRtLT5TZXRNaWNy
b3Bob25lVm9sdW1lKG1heF92b2wpICE9IDApIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl
ZCB0byBzZXQgbWljIHZvbHVtZS5cbiIpOwotICAgIHJldHVybiAxOwotICB9Ci0KLSAgcmV0dXJu
IDA7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvZnJhbWVfYW5hbHl6ZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6
ZXIvZnJhbWVfYW5hbHl6ZXIuY2MKaW5kZXggODk0NDBlYTk4NDVhMjVlZjE1ODk4ODExZGI2N2Qz
MDFhZmZiY2FmMS4uZmI1ZjhkZTIyN2FmYmMyMjk0OWQwNWRkZWY0ZTBhZWFjYTA0OTA5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rv
b2xzL2ZyYW1lX2FuYWx5emVyL2ZyYW1lX2FuYWx5emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci9mcmFt
ZV9hbmFseXplci5jYwpAQCAtMTUsNyArMTUsMTAgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5j
bHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCisjaW5jbHVkZSAicnRjX3Rv
b2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXIuaCIKKyNpbmNsdWRlICJydGNf
dG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lci5oIgogI2luY2x1ZGUg
InJ0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lzLmgiCiAjaW5j
bHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3RlbXBvcmFsX2FsaWduZXIuaCIK
ICNpbmNsdWRlICJydGNfdG9vbHMvc2ltcGxlX2NvbW1hbmRfbGluZV9wYXJzZXIuaCIKQEAgLTEz
Myw4ICsxMzYsMzUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBjb25z
dCBzdGQ6OnZlY3RvcjxzaXplX3Q+IG1hdGNoaW5nX2luZGljZXMgPQogICAgICAgd2VicnRjOjp0
ZXN0OjpGaW5kTWF0Y2hpbmdGcmFtZUluZGljZXMocmVmZXJlbmNlX3ZpZGVvLCB0ZXN0X3ZpZGVv
KTsKIAotICByZXN1bHRzLmZyYW1lcyA9Ci0gICAgICB3ZWJydGM6OnRlc3Q6OlJ1bkFuYWx5c2lz
KHJlZmVyZW5jZV92aWRlbywgdGVzdF92aWRlbywgbWF0Y2hpbmdfaW5kaWNlcyk7CisgIC8vIEFs
aWduIHRoZSByZWZlcmVuY2UgdmlkZW8gYm90aCB0ZW1wb3JhbGx5IGFuZCBnZW9tZXRyaWNhbGx5
LiBJLmUuIGFsaWduIHRoZQorICAvLyBmcmFtZXMgdG8gbWF0Y2ggdXAgaW4gb3JkZXIgdG8gdGhl
IHRlc3QgdmlkZW8sIGFuZCBhbGlnbiBhIGNyb3AgcmVnaW9uIG9mCisgIC8vIHRoZSByZWZlcmVu
Y2UgdmlkZW8gdG8gbWF0Y2ggdXAgdG8gdGhlIHRlc3QgdmlkZW8uCisgIGNvbnN0IHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OnRlc3Q6OlZpZGVvPiBhbGlnbmVkX3JlZmVyZW5jZV92aWRlbyA9
CisgICAgICBBZGp1c3RDcm9wcGluZyhSZW9yZGVyVmlkZW8ocmVmZXJlbmNlX3ZpZGVvLCBtYXRj
aGluZ19pbmRpY2VzKSwKKyAgICAgICAgICAgICAgICAgICAgIHRlc3RfdmlkZW8pOworCisgIC8v
IENhbGN1bGF0ZSBpZiB0aGVyZSBpcyBhbnkgc3lzdGVtYXRpYyBjb2xvciBkaWZmZXJlbmNlIGJl
dHdlZW4gdGhlIHJlZmVyZW5jZQorICAvLyBhbmQgdGVzdCB2aWRlby4KKyAgY29uc3Qgd2VicnRj
Ojp0ZXN0OjpDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbG9yX3RyYW5zZm9ybWF0aW9uID0K
KyAgICAgIENhbGN1bGF0ZUNvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXgoYWxpZ25lZF9yZWZlcmVu
Y2VfdmlkZW8sIHRlc3RfdmlkZW8pOworCisgIGNoYXIgYnVmWzI1Nl07CisgIHJ0Yzo6U2ltcGxl
U3RyaW5nQnVpbGRlciBzdHJpbmdfYnVpbGRlcihidWYpOworICBmb3IgKGludCBpID0gMDsgaSA8
IDM7ICsraSkgeworICAgIHN0cmluZ19idWlsZGVyIDw8ICJcbiI7CisgICAgZm9yIChpbnQgaiA9
IDA7IGogPCA0OyArK2opCisgICAgICBzdHJpbmdfYnVpbGRlci5BcHBlbmRGb3JtYXQoIiU2LjJm
ICIsIGNvbG9yX3RyYW5zZm9ybWF0aW9uW2ldW2pdKTsKKyAgfQorICBwcmludGYoIkFkanVzdGlu
ZyB0ZXN0IHZpZGVvIHdpdGggY29sb3IgdHJhbnNmb3JtYXRpb246ICVzXG4iLAorICAgICAgICAg
c3RyaW5nX2J1aWxkZXIuc3RyKCkpOworCisgIC8vIEFkanVzdCBhbGwgZnJhbWVzIGluIHRoZSB0
ZXN0IHZpZGVvIHdpdGggdGhlIGNhbGN1bGF0ZWQgY29sb3IKKyAgLy8gdHJhbnNmb3JtYXRpb24u
CisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OnRlc3Q6OlZpZGVvPiBjb2xvcl9h
ZGp1c3RlZF90ZXN0X3ZpZGVvID0KKyAgICAgIEFkanVzdENvbG9ycyhjb2xvcl90cmFuc2Zvcm1h
dGlvbiwgdGVzdF92aWRlbyk7CisKKyAgcmVzdWx0cy5mcmFtZXMgPSB3ZWJydGM6OnRlc3Q6OlJ1
bkFuYWx5c2lzKAorICAgICAgYWxpZ25lZF9yZWZlcmVuY2VfdmlkZW8sIGNvbG9yX2FkanVzdGVk
X3Rlc3RfdmlkZW8sIG1hdGNoaW5nX2luZGljZXMpOwogCiAgIGNvbnN0IHN0ZDo6dmVjdG9yPHdl
YnJ0Yzo6dGVzdDo6Q2x1c3Rlcj4gY2x1c3RlcnMgPQogICAgICAgd2VicnRjOjp0ZXN0OjpDYWxj
dWxhdGVGcmFtZUNsdXN0ZXJzKG1hdGNoaW5nX2luZGljZXMpOwpAQCAtMTUxLDIwICsxODEsMTcg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBpZiAoIWNoYXJ0anNvbl9y
ZXN1bHRfZmlsZS5lbXB0eSgpKSB7CiAgICAgd2VicnRjOjp0ZXN0OjpXcml0ZVBlcmZSZXN1bHRz
KGNoYXJ0anNvbl9yZXN1bHRfZmlsZSk7CiAgIH0KLSAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6dGVzdDo6VmlkZW8+IHJlb3JkZXJlZF92aWRlbyA9Ci0gICAgICB3ZWJydGM6OnRlc3Q6Okdl
bmVyYXRlQWxpZ25lZFJlZmVyZW5jZVZpZGVvKHJlZmVyZW5jZV92aWRlbywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdfaW5kaWNlcyk7
CiAgIHN0ZDo6c3RyaW5nIGFsaWduZWRfb3V0cHV0X2ZpbGUgPSBwYXJzZXIuR2V0RmxhZygiYWxp
Z25lZF9vdXRwdXRfZmlsZSIpOwogICBpZiAoIWFsaWduZWRfb3V0cHV0X2ZpbGUuZW1wdHkoKSkg
ewotICAgIHdlYnJ0Yzo6dGVzdDo6V3JpdGVWaWRlb1RvRmlsZShyZW9yZGVyZWRfdmlkZW8sIGFs
aWduZWRfb3V0cHV0X2ZpbGUsCisgICAgd2VicnRjOjp0ZXN0OjpXcml0ZVZpZGVvVG9GaWxlKGFs
aWduZWRfcmVmZXJlbmNlX3ZpZGVvLCBhbGlnbmVkX291dHB1dF9maWxlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKmZwcz0qLzMwKTsKICAgfQogICBzdGQ6OnN0cmluZyB5
dXZfZGlyZWN0b3J5ID0gcGFyc2VyLkdldEZsYWcoInl1dl9kaXJlY3RvcnkiKTsKICAgaWYgKCF5
dXZfZGlyZWN0b3J5LmVtcHR5KCkpIHsKLSAgICB3ZWJydGM6OnRlc3Q6OldyaXRlVmlkZW9Ub0Zp
bGUocmVvcmRlcmVkX3ZpZGVvLAorICAgIHdlYnJ0Yzo6dGVzdDo6V3JpdGVWaWRlb1RvRmlsZShh
bGlnbmVkX3JlZmVyZW5jZV92aWRlbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSm9pbkZpbGVuYW1lKHl1dl9kaXJlY3RvcnksICJyZWYueXV2IiksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qZnBzPSovMzApOwotICAgIHdlYnJ0Yzo6dGVzdDo6V3Jp
dGVWaWRlb1RvRmlsZSh0ZXN0X3ZpZGVvLAorICAgIHdlYnJ0Yzo6dGVzdDo6V3JpdGVWaWRlb1Rv
RmlsZShjb2xvcl9hZGp1c3RlZF90ZXN0X3ZpZGVvLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBKb2luRmlsZW5hbWUoeXV2X2RpcmVjdG9yeSwgInRlc3QueXV2IiksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZnBzPSovMzApOwogICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMv
ZnJhbWVfYW5hbHl6ZXIvbGluZWFyX2xlYXN0X3NxdWFyZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvbGluZWFy
X2xlYXN0X3NxdWFyZXMuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA2ZDIxMmQxNzRhYmU5ZDc2Y2UyMDAzOWEw
YmE4M2UzZmU4NDJkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rf
c3F1YXJlcy5jYwpAQCAtMCwwICsxLDIwMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvbGluZWFyX2xlYXN0X3NxdWFyZXMuaCIK
KworI2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKworbmFtZXNw
YWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgordXNp
bmcgTWF0cml4ID0gc3RkOjp2YWxhcnJheTxzdGQ6OnZhbGFycmF5PFQ+PjsKKworbmFtZXNwYWNl
IHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQ+CitSIERvdFByb2R1Y3QoY29u
c3Qgc3RkOjp2YWxhcnJheTxUPiYgYSwgY29uc3Qgc3RkOjp2YWxhcnJheTxUPiYgYikgeworICBS
VENfQ0hFQ0tfRVEoYS5zaXplKCksIGIuc2l6ZSgpKTsKKyAgcmV0dXJuIHN0ZDo6aW5uZXJfcHJv
ZHVjdChzdGQ6OmJlZ2luKGEpLCBzdGQ6OmVuZChhKSwgc3RkOjpiZWdpbihiKSwgUigwKSk7Cit9
CisKKy8vIENhbGN1bGF0ZXMgYV5UICogYi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFt
ZSBUPgorTWF0cml4PFI+IE1hdHJpeE11bHRpcGx5KGNvbnN0IE1hdHJpeDxUPiYgYSwgY29uc3Qg
TWF0cml4PFQ+JiBiKSB7CisgIE1hdHJpeDxSPiByZXN1bHQoc3RkOjp2YWxhcnJheTxSPihhLnNp
emUoKSksIGIuc2l6ZSgpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhLnNpemUoKTsgKytp
KSB7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBiLnNpemUoKTsgKytqKQorICAgICAgcmVz
dWx0W2pdW2ldID0gRG90UHJvZHVjdDxSPihhW2ldLCBiW2pdKTsKKyAgfQorCisgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorTWF0cml4PFQ+IFRyYW5zcG9zZShj
b25zdCBNYXRyaXg8VD4mIG1hdHJpeCkgeworICBpZiAobWF0cml4LnNpemUoKSA9PSAwKQorICAg
IHJldHVybiBNYXRyaXg8VD4oKTsKKyAgY29uc3Qgc2l6ZV90IHJvd3MgPSBtYXRyaXguc2l6ZSgp
OworICBjb25zdCBzaXplX3QgY29sdW1ucyA9IG1hdHJpeFswXS5zaXplKCk7CisgIE1hdHJpeDxU
PiByZXN1bHQoc3RkOjp2YWxhcnJheTxUPihyb3dzKSwgY29sdW1ucyk7CisKKyAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByb3dzOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNv
bHVtbnM7ICsraikKKyAgICAgIHJlc3VsdFtqXVtpXSA9IG1hdHJpeFtpXVtqXTsKKyAgfQorCisg
IHJldHVybiByZXN1bHQ7Cit9CisKKy8vIENvbnZlcnQgdmFsYXJyYXkgZnJvbSB0eXBlIFQgdG8g
dHlwZSBSLgordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQ+CitzdGQ6OnZhbGFycmF5
PFI+IENvbnZlcnRUbyhjb25zdCBzdGQ6OnZhbGFycmF5PFQ+JiB2KSB7CisgIHN0ZDo6dmFsYXJy
YXk8Uj4gcmVzdWx0KHYuc2l6ZSgpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2LnNpemUo
KTsgKytpKQorICAgIHJlc3VsdFtpXSA9IHN0YXRpY19jYXN0PFI+KHZbaV0pOworICByZXR1cm4g
cmVzdWx0OworfQorCisvLyBDb252ZXJ0IHZhbGFycmF5IE1hdHJpeCBmcm9tIHR5cGUgVCB0byB0
eXBlIFIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVD4KK01hdHJpeDxSPiBDb252
ZXJ0VG8oY29uc3QgTWF0cml4PFQ+JiBtYXQpIHsKKyAgTWF0cml4PFI+IHJlc3VsdChtYXQuc2l6
ZSgpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXQuc2l6ZSgpOyArK2kpCisgICAgcmVz
dWx0W2ldID0gQ29udmVydFRvPFI+KG1hdFtpXSk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8v
IENvbnZlcnQgZnJvbSB2YWxhcnJheSBNYXRyaXggYmFjayB0byB0aGUgbW9yZSBjb252ZW50aW9u
YWwgc3RkOjp2ZWN0b3IuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6dmVjdG9yPHN0ZDo6
dmVjdG9yPFQ+PiBUb1ZlY3Rvck1hdHJpeChjb25zdCBNYXRyaXg8VD4mIG0pIHsKKyAgc3RkOjp2
ZWN0b3I8c3RkOjp2ZWN0b3I8VD4+IHJlc3VsdDsKKyAgZm9yIChjb25zdCBzdGQ6OnZhbGFycmF5
PFQ+JiB2IDogbSkKKyAgICByZXN1bHQuZW1wbGFjZV9iYWNrKHN0ZDo6YmVnaW4odiksIHN0ZDo6
ZW5kKHYpKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gQ3JlYXRlIGEgdmFsYXJyYXkgTWF0
cml4IGZyb20gYSBjb252ZW50aW9uYWwgc3RkOjp2ZWN0b3IuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK01hdHJpeDxUPiBGcm9tVmVjdG9yTWF0cml4KGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVj
dG9yPFQ+PiYgbWF0KSB7CisgIE1hdHJpeDxUPiByZXN1bHQobWF0LnNpemUoKSk7CisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWF0LnNpemUoKTsgKytpKQorICAgIHJlc3VsdFtpXSA9IHN0ZDo6
dmFsYXJyYXk8VD4obWF0W2ldLmRhdGEoKSwgbWF0W2ldLnNpemUoKSk7CisgIHJldHVybiByZXN1
bHQ7Cit9CisKKy8vIFJldHVybnMgfG1hdHJpeF90b19pbnZlcnR8Xi0xICogfHJpZ2h0X2hhbmRf
bWF0cml4fC4gfG1hdHJpeF90b19pbnZlcnR8IG11c3QKKy8vIGhhdmUgc3F1YXJlIHNpemUuCitN
YXRyaXg8ZG91YmxlPiBHYXVzc2lhbkVsaW1pbmF0aW9uKE1hdHJpeDxkb3VibGU+IG1hdHJpeF90
b19pbnZlcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdHJpeDxkb3Vi
bGU+IHJpZ2h0X2hhbmRfbWF0cml4KSB7CisgIC8vIHxufCBpcyB0aGUgd2lkdGgvaGVpZ2h0IG9m
IHxtYXRyaXhfdG9faW52ZXJ0fC4KKyAgY29uc3Qgc2l6ZV90IG4gPSBtYXRyaXhfdG9faW52ZXJ0
LnNpemUoKTsKKyAgLy8gTWFrZSBzdXJlIHxtYXRyaXhfdG9faW52ZXJ0fCBoYXMgc3F1YXJlIHNp
emUuCisgIGZvciAoY29uc3Qgc3RkOjp2YWxhcnJheTxkb3VibGU+JiBjb2x1bW4gOiBtYXRyaXhf
dG9faW52ZXJ0KQorICAgIFJUQ19DSEVDS19FUShuLCBjb2x1bW4uc2l6ZSgpKTsKKyAgLy8gTWFr
ZSBzdXJlIHxyaWdodF9oYW5kX21hdHJpeHwgaGFzIGNvcnJlY3Qgc2l6ZS4KKyAgZm9yIChjb25z
dCBzdGQ6OnZhbGFycmF5PGRvdWJsZT4mIGNvbHVtbiA6IHJpZ2h0X2hhbmRfbWF0cml4KQorICAg
IFJUQ19DSEVDS19FUShuLCBjb2x1bW4uc2l6ZSgpKTsKKworICAvLyBUcmFuc3Bvc2UgdGhlIG1h
dHJpY2VzIGJlZm9yZSBhbmQgYWZ0ZXIgc28gdGhhdCB3ZSBjYW4gcGVyZm9ybSBHYXVzc2lhbgor
ICAvLyBlbGltaW5hdGlvbiBvbiB0aGUgY29sdW1ucyBpbnN0ZWFkIG9mIHRoZSByb3dzLCBzaW5j
ZSB0aGF0IGlzIGVhc2llciB3aXRoCisgIC8vIG91ciByZXByZXNlbnRhdGlvbi4KKyAgbWF0cml4
X3RvX2ludmVydCA9IFRyYW5zcG9zZShtYXRyaXhfdG9faW52ZXJ0KTsKKyAgcmlnaHRfaGFuZF9t
YXRyaXggPSBUcmFuc3Bvc2UocmlnaHRfaGFuZF9tYXRyaXgpOworCisgIC8vIExvb3Agb3ZlciB0
aGUgZGlhZ29uYWwgb2YgfG1hdHJpeF90b19pbnZlcnR8IGFuZCBwZXJmb3JtIGNvbHVtbiByZWR1
Y3Rpb24uCisgIC8vIENvbHVtbiByZWR1Y3Rpb24gaXMgYSBzZXF1ZW5jZSBvZiBlbGVtZW50YXJ5
IGNvbHVtbiBvcGVyYXRpb25zIHRoYXQgaXMKKyAgLy8gcGVyZm9ybWVkIG9uIGJvdGggfG1hdHJp
eF90b19pbnZlcnR8IGFuZCB8cmlnaHRfaGFuZF9tYXRyaXh8IHVudGlsCisgIC8vIHxtYXRyaXhf
dG9faW52ZXJ0fCBoYXMgYmVlbiB0cmFuc2Zvcm1lZCB0byB0aGUgaWRlbnRpdHkgbWF0cml4Lgor
ICBmb3IgKHNpemVfdCBkaWFnb25hbF9pbmRleCA9IDA7IGRpYWdvbmFsX2luZGV4IDwgbjsgKytk
aWFnb25hbF9pbmRleCkgeworICAgIC8vIE1ha2Ugc3VyZSB0aGUgZGlhZ29uYWwgZWxlbWVudCBo
YXMgdGhlIGhpZ2hlc3QgYWJzb2x1dGUgdmFsdWUgYnkKKyAgICAvLyBzd2FwcGluZyBjb2x1bW5z
IGlmIG5lY2Vzc2FyeS4KKyAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSBkaWFnb25hbF9pbmRleCAr
IDE7IGNvbHVtbiA8IG47ICsrY29sdW1uKSB7CisgICAgICBpZiAoc3RkOjphYnMobWF0cml4X3Rv
X2ludmVydFtjb2x1bW5dW2RpYWdvbmFsX2luZGV4XSkgPgorICAgICAgICAgIHN0ZDo6YWJzKG1h
dHJpeF90b19pbnZlcnRbZGlhZ29uYWxfaW5kZXhdW2RpYWdvbmFsX2luZGV4XSkpIHsKKyAgICAg
ICAgc3RkOjpzd2FwKG1hdHJpeF90b19pbnZlcnRbY29sdW1uXSwgbWF0cml4X3RvX2ludmVydFtk
aWFnb25hbF9pbmRleF0pOworICAgICAgICBzdGQ6OnN3YXAocmlnaHRfaGFuZF9tYXRyaXhbY29s
dW1uXSwgcmlnaHRfaGFuZF9tYXRyaXhbZGlhZ29uYWxfaW5kZXhdKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBSZWR1Y2UgdGhlIGRpYWdvbmFsIGVsZW1lbnQgdG8gYmUgMSwgYnkgZGl2aWRp
bmcgdGhlIGNvbHVtbiB3aXRoIHRoYXQKKyAgICAvLyB2YWx1ZS4gSWYgdGhlIGRpYWdvbmFsIGVs
ZW1lbnQgaXMgMCwgaXQgbWVhbnMgdGhlIHN5c3RlbSBvZiBlcXVhdGlvbnMgaGFzCisgICAgLy8g
bWFueSBzb2x1dGlvbnMsIGFuZCBpbiB0aGF0IGNhc2Ugd2Ugd2lsbCByZXR1cm4gYW4gYXJiaXRy
YXJ5IHNvbHV0aW9uLgorICAgIGlmIChtYXRyaXhfdG9faW52ZXJ0W2RpYWdvbmFsX2luZGV4XVtk
aWFnb25hbF9pbmRleF0gPT0gMC4wKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJN
YXRyaXggaXMgbm90IGludmVydGlibGUsIGlnbm9yaW5nLiI7CisgICAgICBjb250aW51ZTsKKyAg
ICB9CisgICAgY29uc3QgZG91YmxlIGRpYWdvbmFsX2VsZW1lbnQgPQorICAgICAgICBtYXRyaXhf
dG9faW52ZXJ0W2RpYWdvbmFsX2luZGV4XVtkaWFnb25hbF9pbmRleF07CisgICAgbWF0cml4X3Rv
X2ludmVydFtkaWFnb25hbF9pbmRleF0gLz0gZGlhZ29uYWxfZWxlbWVudDsKKyAgICByaWdodF9o
YW5kX21hdHJpeFtkaWFnb25hbF9pbmRleF0gLz0gZGlhZ29uYWxfZWxlbWVudDsKKworICAgIC8v
IEVsaW1pbmF0ZSB0aGUgb3RoZXIgZW50cmllcyBpbiByb3cgfGRpYWdvbmFsX2luZGV4fCBieSBt
YWtpbmcgdGhlbSB6ZXJvLgorICAgIGZvciAoc2l6ZV90IGNvbHVtbiA9IDA7IGNvbHVtbiA8IG47
ICsrY29sdW1uKSB7CisgICAgICBpZiAoY29sdW1uID09IGRpYWdvbmFsX2luZGV4KQorICAgICAg
ICBjb250aW51ZTsKKyAgICAgIGNvbnN0IGRvdWJsZSByb3dfZWxlbWVudCA9IG1hdHJpeF90b19p
bnZlcnRbY29sdW1uXVtkaWFnb25hbF9pbmRleF07CisgICAgICBtYXRyaXhfdG9faW52ZXJ0W2Nv
bHVtbl0gLT0KKyAgICAgICAgICByb3dfZWxlbWVudCAqIG1hdHJpeF90b19pbnZlcnRbZGlhZ29u
YWxfaW5kZXhdOworICAgICAgcmlnaHRfaGFuZF9tYXRyaXhbY29sdW1uXSAtPQorICAgICAgICAg
IHJvd19lbGVtZW50ICogcmlnaHRfaGFuZF9tYXRyaXhbZGlhZ29uYWxfaW5kZXhdOworICAgIH0K
KyAgfQorCisgIC8vIFRyYW5zcG9zZSB0aGUgcmVzdWx0IGJlZm9yZSByZXR1cm5pbmcgaXQsIGV4
cGxhaW5lZCBpbiBjb21tZW50IGFib3ZlLgorICByZXR1cm4gVHJhbnNwb3NlKHJpZ2h0X2hhbmRf
bWF0cml4KTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK0luY3JlbWVudGFsTGluZWFyTGVhc3RT
cXVhcmVzOjpJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlcygpID0gZGVmYXVsdDsKK0luY3Jl
bWVudGFsTGluZWFyTGVhc3RTcXVhcmVzOjp+SW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMo
KSA9IGRlZmF1bHQ7CisKK3ZvaWQgSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXM6OkFkZE9i
c2VydmF0aW9ucygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjx1aW50OF90Pj4m
IHgsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8dWludDhfdD4+JiB5KSB7Cisg
IGlmICh4LmVtcHR5KCkgfHwgeS5lbXB0eSgpKQorICAgIHJldHVybjsKKyAgLy8gTWFrZSBzdXJl
IGFsbCBjb2x1bW5zIGFyZSB0aGUgc2FtZSBzaXplLgorICBjb25zdCBzaXplX3QgbiA9IHhbMF0u
c2l6ZSgpOworICBmb3IgKGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBjb2x1bW4gOiB4KQor
ICAgIFJUQ19DSEVDS19FUShuLCBjb2x1bW4uc2l6ZSgpKTsKKyAgZm9yIChjb25zdCBzdGQ6OnZl
Y3Rvcjx1aW50OF90PiYgY29sdW1uIDogeSkKKyAgICBSVENfQ0hFQ0tfRVEobiwgY29sdW1uLnNp
emUoKSk7CisKKyAgLy8gV2Ugd2lsbCBtdWx0aXBseSB0aGUgdWludDhfdCB2YWx1ZXMgdG9nZXRo
ZXIsIHNvIHdlIG5lZWQgdG8gZXhwYW5kIHRvIGEKKyAgLy8gdHlwZSB0aGF0IGNhbiBzYWZlbHkg
c3RvcmUgdGhvc2UgdmFsdWVzLCBpLmUuIHVpbnQxNl90LgorICBjb25zdCBNYXRyaXg8dWludDE2
X3Q+IHVucGFja2VkX3ggPSBDb252ZXJ0VG88dWludDE2X3Q+KEZyb21WZWN0b3JNYXRyaXgoeCkp
OworICBjb25zdCBNYXRyaXg8dWludDE2X3Q+IHVucGFja2VkX3kgPSBDb252ZXJ0VG88dWludDE2
X3Q+KEZyb21WZWN0b3JNYXRyaXgoeSkpOworCisgIGNvbnN0IE1hdHJpeDx1aW50NjRfdD4geHgg
PSBNYXRyaXhNdWx0aXBseTx1aW50NjRfdD4odW5wYWNrZWRfeCwgdW5wYWNrZWRfeCk7CisgIGNv
bnN0IE1hdHJpeDx1aW50NjRfdD4geHkgPSBNYXRyaXhNdWx0aXBseTx1aW50NjRfdD4odW5wYWNr
ZWRfeCwgdW5wYWNrZWRfeSk7CisgIGlmIChzdW1feHggJiYgc3VtX3h5KSB7CisgICAgKnN1bV94
eCArPSB4eDsKKyAgICAqc3VtX3h5ICs9IHh5OworICB9IGVsc2UgeworICAgIHN1bV94eCA9IHh4
OworICAgIHN1bV94eSA9IHh5OworICB9Cit9CisKK3N0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRv
dWJsZT4+CitJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlczo6R2V0QmVzdFNvbHV0aW9uKCkg
Y29uc3QgeworICBSVENfQ0hFQ0soc3VtX3h4ICYmIHN1bV94eSkgPDwgIk5vIG9ic2VydmF0aW9u
cyBoYXZlIGJlZW4gYWRkZWQiOworICByZXR1cm4gVG9WZWN0b3JNYXRyaXgoR2F1c3NpYW5FbGlt
aW5hdGlvbihDb252ZXJ0VG88ZG91YmxlPigqc3VtX3h4KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydFRvPGRvdWJsZT4oKnN1bV94eSkpKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9m
cmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJlcy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9s
ZWFzdF9zcXVhcmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIwN2RjMWJkZTY0MGFmYjc5MmYxZGM3NjI1YjNl
NjNkOGI1ODJiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1
YXJlcy5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVm
IFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9MSU5FQVJfTEVBU1RfU1FVQVJFU19IXworI2RlZmlu
ZSBSVENfVE9PTFNfRlJBTUVfQU5BTFlaRVJfTElORUFSX0xFQVNUX1NRVUFSRVNfSF8KKworI2lu
Y2x1ZGUgPHZhbGFycmF5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCisv
LyBUaGlzIGNsYXNzIGlzIHVzZWQgZm9yIGZpbmRpbmcgYSBtYXRyaXggYiB0aGF0IHJvdWdobHkg
c29sdmVzIHRoZSBlcXVhdGlvbjoKKy8vIHkgPSB4ICogYi4gVGhpcyBpcyBnZW5lcmFsbHkgaW1w
b3NzaWJsZSB0byBkbyBleGFjdGx5LCBzbyB0aGUgcHJvYmxlbSBpcworLy8gcmVwaHJhc2VkIGFz
IGZpbmRpbmcgdGhlIG1hdHJpeCBiIHRoYXQgbWluaW1pemVzIHRoZSBkaWZmZXJlbmNlOgorLy8g
fHkgLSB4ICogYnxeMi4gQ2FsbGluZyBtdWx0aXBsZSBBZGRPYnNlcnZhdGlvbnMoKSBpcyBlcXVp
dmFsZW50IHRvCisvLyBjb25jYXRlbmF0aW5nIHRoZSBvYnNlcnZhdGlvbiB2ZWN0b3JzIGFuZCBj
YWxsaW5nIEFkZE9ic2VydmF0aW9ucygpIG9uY2UuIFRoZQorLy8gcmVhc29uIGZvciBkb2luZyBp
dCBpbmNyZW1lbnRhbGx5IGlzIHRoYXQgd2UgY2FuJ3Qgc3RvcmUgdGhlIHJhdyBZVVYgdmFsdWVz
CisvLyBmb3IgYSB3aG9sZSB2aWRlbyBmaWxlIGluIG1lbW9yeSBhdCBvbmNlLiBUaGlzIGNsYXNz
IGhhcyBhIGNvbnN0YW50IG1lbW9yeQorLy8gZm9vdHByaW50LCByZWdhcmRsZXNzIGhvdyBtYXkg
dGltZXMgQWRkT2JzZXJ2YXRpb25zKCkgaXMgY2FsbGVkLgorY2xhc3MgSW5jcmVtZW50YWxMaW5l
YXJMZWFzdFNxdWFyZXMgeworIHB1YmxpYzoKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFy
ZXMoKTsKKyAgfkluY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVzKCk7CisKKyAgLy8gQWRkIGEg
bnVtYmVyIG9mIG9ic2VydmF0aW9ucy4gVGhlIHN1YnZlY3RvcnMgb2YgeCBhbmQgeSBtdXN0IGhh
dmUgdGhlIHNhbWUKKyAgLy8gbGVuZ3RoLgorICB2b2lkIEFkZE9ic2VydmF0aW9ucyhjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjx1aW50OF90Pj4mIHgsCisgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+PiYgeSk7CisKKyAgLy8g
Q2FsY3VsYXRlIGFuZCByZXR1cm4gdGhlIGJlc3QgbGluZWFyIHNvbHV0aW9uLCBnaXZlbiB0aGUg
b2JzZXJ2YXRpb25zIHNvCisgIC8vIGZhci4KKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZG91
YmxlPj4gR2V0QmVzdFNvbHV0aW9uKCkgY29uc3Q7CisKKyBwcml2YXRlOgorICAvLyBSdW5uaW5n
IHN1bSBvZiB4XlQgKiB4LgorICBhYnNsOjpvcHRpb25hbDxzdGQ6OnZhbGFycmF5PHN0ZDo6dmFs
YXJyYXk8dWludDY0X3Q+Pj4gc3VtX3h4OworICAvLyBSdW5uaW5nIHN1bSBvZiB4XlQgKiB5Lgor
ICBhYnNsOjpvcHRpb25hbDxzdGQ6OnZhbGFycmF5PHN0ZDo6dmFsYXJyYXk8dWludDY0X3Q+Pj4g
c3VtX3h5OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKKworI2VuZGlmICAvLyBSVENfVE9PTFNfRlJBTUVfQU5BTFlaRVJfTElORUFSX0xFQVNUX1NR
VUFSRVNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJlc191bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190
b29scy9mcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJlc191bml0dGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMDc0YWFjY2U4NTZhOGZmNjM5Njk2Yjg4NjA2MjRhOWVkOTljN2NmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzX3VuaXR0ZXN0LmNjCkBA
IC0wLDAgKzEsOTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX3Rv
b2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzLmgiCisKKyNpbmNsdWRlICJ0
ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCitU
RVNUKExpbmVhckxlYXN0U3F1YXJlcywgU2NhbGFySWRlbnRpdHlPbmVPYnNlcnZhdGlvbikgewor
ICBJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlcyBsbHM7CisgIGxscy5BZGRPYnNlcnZhdGlv
bnMoe3sxfX0sIHt7MX19KTsKKyAgRVhQRUNUX0VRKHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRv
dWJsZT4+KHt7MS4wfX0pLCBsbHMuR2V0QmVzdFNvbHV0aW9uKCkpOworfQorCitURVNUKExpbmVh
ckxlYXN0U3F1YXJlcywgU2NhbGFySWRlbnRpdHlUd29PYnNlcnZhdGlvbnNPbmVDYWxsKSB7Cisg
IEluY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVzIGxsczsKKyAgbGxzLkFkZE9ic2VydmF0aW9u
cyh7ezEsIDJ9fSwge3sxLCAyfX0pOworICBFWFBFQ1RfRVEoc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0
b3I8ZG91YmxlPj4oe3sxLjB9fSksIGxscy5HZXRCZXN0U29sdXRpb24oKSk7Cit9CisKK1RFU1Qo
TGluZWFyTGVhc3RTcXVhcmVzLCBTY2FsYXJJZGVudGl0eVR3b09ic2VydmF0aW9uc1R3b0NhbGxz
KSB7CisgIEluY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVzIGxsczsKKyAgbGxzLkFkZE9ic2Vy
dmF0aW9ucyh7ezF9fSwge3sxfX0pOworICBsbHMuQWRkT2JzZXJ2YXRpb25zKHt7Mn19LCB7ezJ9
fSk7CisgIEVYUEVDVF9FUShzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjxkb3VibGU+Pih7ezEuMH19
KSwgbGxzLkdldEJlc3RTb2x1dGlvbigpKTsKK30KKworVEVTVChMaW5lYXJMZWFzdFNxdWFyZXMs
IE1hdHJpeElkZW50aXR5T25lT2JzZXJ2YXRpb24pIHsKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFz
dFNxdWFyZXMgbGxzOworICBsbHMuQWRkT2JzZXJ2YXRpb25zKHt7MSwgMn0sIHszLCA0fX0sIHt7
MSwgMn0sIHszLCA0fX0pOworICBFWFBFQ1RfRVEoc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZG91
YmxlPj4oe3sxLjAsIDAuMH0sIHswLjAsIDEuMH19KSwKKyAgICAgICAgICAgIGxscy5HZXRCZXN0
U29sdXRpb24oKSk7Cit9CisKK1RFU1QoTGluZWFyTGVhc3RTcXVhcmVzLCBNYXRyaXhNYW55T2Jz
ZXJ2YXRpb25zKSB7CisgIEluY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVzIGxsczsKKyAgLy8g
VGVzdCB0aGF0IHdlIGNhbiBmaW5kIHRoZSBzb2x1dGlvbiBvZiB0aGUgb3ZlcnNwZWNpZmllZCBl
cXVhdGlvbiBzeXN0ZW06CisgIC8vIFsxLCAyXSBbMSwgM10gPSBbNSwgIDExXQorICAvLyBbMywg
NF0gWzIsIDRdICAgWzExLCAyNV0KKyAgLy8gWzUsIDZdICAgICAgICAgIFsxNywgMzldCisgIGxs
cy5BZGRPYnNlcnZhdGlvbnMoe3sxfSwgezJ9fSwge3s1fSwgezExfX0pOworICBsbHMuQWRkT2Jz
ZXJ2YXRpb25zKHt7M30sIHs0fX0sIHt7MTF9LCB7MjV9fSk7CisgIGxscy5BZGRPYnNlcnZhdGlv
bnMoe3s1fSwgezZ9fSwge3sxN30sIHszOX19KTsKKworICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnZlY3Rvcjxkb3VibGU+PiByZXN1bHQgPSBsbHMuR2V0QmVzdFNvbHV0aW9uKCk7CisgIC8vIFdl
IGFsbG93IHNvbWUgbnVtZXJpY2FsIGZsZXhpYmlsaXR5IGhlcmUuCisgIEVYUEVDVF9ET1VCTEVf
RVEoMS4wLCByZXN1bHRbMF1bMF0pOworICBFWFBFQ1RfRE9VQkxFX0VRKDIuMCwgcmVzdWx0WzBd
WzFdKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSgzLjAsIHJlc3VsdFsxXVswXSk7CisgIEVYUEVDVF9E
T1VCTEVfRVEoNC4wLCByZXN1bHRbMV1bMV0pOworfQorCitURVNUKExpbmVhckxlYXN0U3F1YXJl
cywgTWF0cml4VmVjdG9yT25lT2JzZXJ2YXRpb24pIHsKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFz
dFNxdWFyZXMgbGxzOworICAvLyBUZXN0IHRoYXQgd2UgY2FuIGZpbmQgdGhlIHNvbHV0aW9uIG9m
IHRoZSBvdmVyc3BlY2lmaWVkIGVxdWF0aW9uIHN5c3RlbToKKyAgLy8gWzEsIDJdIFsxXSA9IFs1
XQorICAvLyBbMywgNF0gWzJdICAgWzExXQorICAvLyBbNSwgNl0gICAgICAgWzE3XQorICBsbHMu
QWRkT2JzZXJ2YXRpb25zKHt7MSwgMywgNX0sIHsyLCA0LCA2fX0sIHt7NSwgMTEsIDE3fX0pOwor
CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4+IHJlc3VsdCA9IGxscy5H
ZXRCZXN0U29sdXRpb24oKTsKKyAgLy8gV2UgYWxsb3cgc29tZSBudW1lcmljYWwgZmxleGliaWxp
dHkgaGVyZS4KKyAgRVhQRUNUX0RPVUJMRV9FUSgxLjAsIHJlc3VsdFswXVswXSk7CisgIEVYUEVD
VF9ET1VCTEVfRVEoMi4wLCByZXN1bHRbMF1bMV0pOworfQorCitURVNUKExpbmVhckxlYXN0U3F1
YXJlcywgTGluZWFyTGVhc3RTcXVhcmVzTm9uUGVyZmVjdFNvbHV0aW9uKSB7CisgIEluY3JlbWVu
dGFsTGluZWFyTGVhc3RTcXVhcmVzIGxsczsKKyAgLy8gVGVzdCB0aGF0IHdlIGNhbiBmaW5kIHRo
ZSBub24tcGVyZmVjdCBzb2x1dGlvbiBvZiB0aGUgb3ZlcnNwZWNpZmllZAorICAvLyBlcXVhdGlv
biBzeXN0ZW06CisgIC8vIFsxXSBbMjBdID0gWzIxXQorICAvLyBbMl0gICAgICAgIFszOV0KKyAg
Ly8gWzNdICAgICAgICBbNjBdCisgIC8vIFsyXSAgICAgICAgWzQxXQorICAvLyBbMV0gICAgICAg
IFsxOV0KKyAgbGxzLkFkZE9ic2VydmF0aW9ucyh7ezEsIDIsIDMsIDIsIDF9fSwge3syMSwgMzks
IDYwLCA0MSwgMTl9fSk7CisKKyAgRVhQRUNUX0RPVUJMRV9FUSgyMC4wLCBsbHMuR2V0QmVzdFNv
bHV0aW9uKClbMF1bMF0pOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJh
bWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWZiMWU0Njk1
MGY5OTIxZjkwMGFhYTZhMWQxODllMGEyYTVkMjJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5
emVyL3ZpZGVvX2NvbG9yX2FsaWduZXIuY2MKQEAgLTAsMCArMSwyMzkgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2Nv
bG9yX2FsaWduZXIuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjbWF0aD4K
KyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dmVjdG9yPgor
CisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9i
dWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgorI2lu
Y2x1ZGUgInJ0Y190b29scy9mcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJlcy5oIgor
I2luY2x1ZGUgInJ0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lz
LmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbXBhcmUu
aCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvcGxhbmFyX2Z1
bmN0aW9ucy5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9z
Y2FsZS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworbmFtZXNw
YWNlIHsKKworLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBBZGp1c3RDb2xvcnMoKS4gVGhpcyBmdW5j
dGlvbnMgY2FsY3VsYXRlcyBhIHNpbmdsZSBvdXRwdXQKKy8vIHJvdyBmb3IgeSB3aXRoIHRoZSBn
aXZlbiBjb2xvciBjb2VmZmljaWVudHMuIFRoZSB1L3YgY2hhbm5lbHMgYXJlIGFzc3VtZWQgdG8K
Ky8vIGJlIHN1YnNhbXBsZWQgYnkgYSBmYWN0b3Igb2YgMiwgd2hpY2ggaXMgdGhlIGNhc2Ugb2Yg
STQyMC4KK3ZvaWQgQ2FsY3VsYXRlWUNoYW5uZWwocnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhf
dD4geV9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1
aW50OF90PiB1X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IHVpbnQ4X3Q+IHZfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjph
cnJheTxmbG9hdCwgND4mIGNvZWZmLAorICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5
Vmlldzx1aW50OF90PiBvdXRwdXQpIHsKKyAgUlRDX0NIRUNLX0VRKHlfZGF0YS5zaXplKCksIG91
dHB1dC5zaXplKCkpOworICAvLyBFYWNoIHUvdiBlbGVtZW50IHJlcHJlc2VudHMgdHdvIHkgZWxl
bWVudHMuIE1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCB0bworICAvLyBjb3ZlciB0aGUgWSB2YWx1
ZXMuCisgIFJUQ19DSEVDS19HRSh1X2RhdGEuc2l6ZSgpICogMiwgeV9kYXRhLnNpemUoKSk7Cisg
IFJUQ19DSEVDS19HRSh2X2RhdGEuc2l6ZSgpICogMiwgeV9kYXRhLnNpemUoKSk7CisKKyAgLy8g
RG8gdHdvIHBpeGVscyBhdCBhIHRpbWUgc2luY2UgdS92IGFyZSBzdWJzYW1wbGVkLgorICBmb3Ig
KHNpemVfdCBpID0gMDsgaSAqIDIgPCB5X2RhdGEuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgY29u
c3QgZmxvYXQgdXZfY29udHJpYnV0aW9uID0KKyAgICAgICAgY29lZmZbMV0gKiB1X2RhdGFbaV0g
KyBjb2VmZlsyXSAqIHZfZGF0YVtpXSArIGNvZWZmWzNdOworCisgICAgY29uc3QgZmxvYXQgdmFs
MCA9IGNvZWZmWzBdICogeV9kYXRhW2kgKiAyICsgMF0gKyB1dl9jb250cmlidXRpb247CisgICAg
Y29uc3QgZmxvYXQgdmFsMSA9IGNvZWZmWzBdICogeV9kYXRhW2kgKiAyICsgMV0gKyB1dl9jb250
cmlidXRpb247CisKKyAgICAvLyBDbGFtcCByZXN1bHQgdG8gYSBieXRlLgorICAgIG91dHB1dFtp
ICogMiArIDBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oCisgICAgICAgIHN0ZDo6cm91bmQoc3Rk
OjptYXgoMC4wZiwgc3RkOjptaW4odmFsMCwgMjU1LjBmKSkpKTsKKyAgICBvdXRwdXRbaSAqIDIg
KyAxXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KAorICAgICAgICBzdGQ6OnJvdW5kKHN0ZDo6bWF4
KDAuMGYsIHN0ZDo6bWluKHZhbDEsIDI1NS4wZikpKSk7CisgIH0KKworICAvLyBIYW5kbGUgdGhl
IGxhc3QgcGl4ZWwgZm9yIG9kZCB3aWR0aHMuCisgIGlmICh5X2RhdGEuc2l6ZSgpICUgMiA9PSAx
KSB7CisgICAgY29uc3QgZmxvYXQgdmFsID0gY29lZmZbMF0gKiB5X2RhdGFbeV9kYXRhLnNpemUo
KSAtIDFdICsKKyAgICAgICAgICAgICAgICAgICAgICBjb2VmZlsxXSAqIHVfZGF0YVsoeV9kYXRh
LnNpemUoKSAtIDEpIC8gMl0gKworICAgICAgICAgICAgICAgICAgICAgIGNvZWZmWzJdICogdl9k
YXRhWyh5X2RhdGEuc2l6ZSgpIC0gMSkgLyAyXSArIGNvZWZmWzNdOworICAgIG91dHB1dFt5X2Rh
dGEuc2l6ZSgpIC0gMV0gPQorICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OnJvdW5k
KHN0ZDo6bWF4KDAuMGYsIHN0ZDo6bWluKHZhbCwgMjU1LjBmKSkpKTsKKyAgfQorfQorCisvLyBI
ZWxwZXIgZnVuY3Rpb24gZm9yIEFkanVzdENvbG9ycygpLiBUaGlzIGZ1bmN0aW9ucyBjYWxjdWxh
dGVzIGEgc2luZ2xlIG91dHB1dAorLy8gcm93IGZvciBlaXRoZXIgdSBvciB2LCB3aXRoIHRoZSBn
aXZlbiBjb2xvciBjb2VmZmljaWVudHMuIFksIFUsIGFuZCBWIGFyZQorLy8gYXNzdW1lZCB0byBi
ZSB0aGUgc2FtZSBzaXplLCBpLmUuIG5vIHN1YnNhbXBsaW5nLgordm9pZCBDYWxjdWxhdGVVVkNo
YW5uZWwocnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4geV9kYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gdV9kYXRhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gdl9kYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwgND4mIGNvZWZm
LAorICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8dWludDhfdD4gb3V0cHV0
KSB7CisgIFJUQ19DSEVDS19FUSh5X2RhdGEuc2l6ZSgpLCB1X2RhdGEuc2l6ZSgpKTsKKyAgUlRD
X0NIRUNLX0VRKHlfZGF0YS5zaXplKCksIHZfZGF0YS5zaXplKCkpOworICBSVENfQ0hFQ0tfRVEo
eV9kYXRhLnNpemUoKSwgb3V0cHV0LnNpemUoKSk7CisKKyAgZm9yIChzaXplX3QgeCA9IDA7IHgg
PCB5X2RhdGEuc2l6ZSgpOyArK3gpIHsKKyAgICBjb25zdCBmbG9hdCB2YWwgPSBjb2VmZlswXSAq
IHlfZGF0YVt4XSArIGNvZWZmWzFdICogdV9kYXRhW3hdICsKKyAgICAgICAgICAgICAgICAgICAg
ICBjb2VmZlsyXSAqIHZfZGF0YVt4XSArIGNvZWZmWzNdOworICAgIC8vIENsYW1wIHJlc3VsdCB0
byBhIGJ5dGUuCisgICAgb3V0cHV0W3hdID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4o
c3RkOjpyb3VuZChzdGQ6Om1heCgwLjBmLCBzdGQ6Om1pbih2YWwsIDI1NS4wZikpKSk7CisgIH0K
K30KKworLy8gQ29udmVydCBhIGZyYW1lIHRvIGZvdXIgdmVjdG9ycyBjb25zaXN0aW5nIG9mIFt5
LCB1LCB2LCAxXS4KK3N0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+PiBGbGF0dGVuWXV2
RGF0YSgKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4m
IGZyYW1lKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+PiByZXN1bHQoCisg
ICAgICA0LCBzdGQ6OnZlY3Rvcjx1aW50OF90PihmcmFtZS0+Q2hyb21hV2lkdGgoKSAqIGZyYW1l
LT5DaHJvbWFIZWlnaHQoKSkpOworCisgIC8vIERvd25zY2FsZSB0aGUgWSBwbGFuZSBzbyB0aGF0
IGFsbCBZVVYgcGxhbmVzIGFyZSB0aGUgc2FtZSBzaXplLgorICBsaWJ5dXY6OlNjYWxlUGxhbmUo
ZnJhbWUtPkRhdGFZKCksIGZyYW1lLT5TdHJpZGVZKCksIGZyYW1lLT53aWR0aCgpLAorICAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmhlaWdodCgpLCByZXN1bHRbMF0uZGF0YSgpLCBmcmFtZS0+
Q2hyb21hV2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5DaHJvbWFXaWR0aCgp
LCBmcmFtZS0+Q2hyb21hSGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICBsaWJ5dXY6OmtG
aWx0ZXJCb3gpOworCisgIGxpYnl1djo6Q29weVBsYW5lKGZyYW1lLT5EYXRhVSgpLCBmcmFtZS0+
U3RyaWRlVSgpLCByZXN1bHRbMV0uZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICBmcmFtZS0+
Q2hyb21hV2lkdGgoKSwgZnJhbWUtPkNocm9tYVdpZHRoKCksCisgICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5DaHJvbWFIZWlnaHQoKSk7CisKKyAgbGlieXV2OjpDb3B5UGxhbmUoZnJhbWUtPkRh
dGFWKCksIGZyYW1lLT5TdHJpZGVWKCksIHJlc3VsdFsyXS5kYXRhKCksCisgICAgICAgICAgICAg
ICAgICAgIGZyYW1lLT5DaHJvbWFXaWR0aCgpLCBmcmFtZS0+Q2hyb21hV2lkdGgoKSwKKyAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPkNocm9tYUhlaWdodCgpKTsKKworICBzdGQ6OmZpbGwocmVz
dWx0WzNdLmJlZ2luKCksIHJlc3VsdFszXS5lbmQoKSwgMXUpOworCisgIHJldHVybiByZXN1bHQ7
Cit9CisKK0NvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggVmVjdG9yVG9Db2xvck1hdHJpeCgKKyAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjxkb3VibGU+PiYgdikgeworICBDb2xvclRy
YW5zZm9ybWF0aW9uTWF0cml4IGNvbG9yX3RyYW5zZm9ybWF0aW9uOworICBmb3IgKGludCBpID0g
MDsgaSA8IDM7ICsraSkgeworICAgIGZvciAoaW50IGogPSAwOyBqIDwgNDsgKytqKQorICAgICAg
Y29sb3JfdHJhbnNmb3JtYXRpb25baV1bal0gPSB2W2ldW2pdOworICB9CisgIHJldHVybiBjb2xv
cl90cmFuc2Zvcm1hdGlvbjsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK0NvbG9yVHJhbnNmb3Jt
YXRpb25NYXRyaXggQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICBjb25z
dCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHJlZmVyZW5jZV9mcmFt
ZSwKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHRl
c3RfZnJhbWUpIHsKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMgaW5jcmVtZW50YWxf
bGxzOworICBpbmNyZW1lbnRhbF9sbHMuQWRkT2JzZXJ2YXRpb25zKEZsYXR0ZW5ZdXZEYXRhKHRl
c3RfZnJhbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYXR0ZW5ZdXZE
YXRhKHJlZmVyZW5jZV9mcmFtZSkpOworICByZXR1cm4gVmVjdG9yVG9Db2xvck1hdHJpeChpbmNy
ZW1lbnRhbF9sbHMuR2V0QmVzdFNvbHV0aW9uKCkpOworfQorCitDb2xvclRyYW5zZm9ybWF0aW9u
TWF0cml4IENhbGN1bGF0ZUNvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXgoCisgICAgY29uc3QgcnRj
OjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgcmVmZXJlbmNlX3ZpZGVvLAorICAgIGNvbnN0IHJ0Yzo6
c2NvcGVkX3JlZnB0cjxWaWRlbz4mIHRlc3RfdmlkZW8pIHsKKyAgUlRDX0NIRUNLX0dFKHJlZmVy
ZW5jZV92aWRlby0+bnVtYmVyX29mX2ZyYW1lcygpLAorICAgICAgICAgICAgICAgdGVzdF92aWRl
by0+bnVtYmVyX29mX2ZyYW1lcygpKTsKKworICBJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJl
cyBpbmNyZW1lbnRhbF9sbHM7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdF92aWRlby0+
bnVtYmVyX29mX2ZyYW1lcygpOyArK2kpIHsKKyAgICBpbmNyZW1lbnRhbF9sbHMuQWRkT2JzZXJ2
YXRpb25zKAorICAgICAgICBGbGF0dGVuWXV2RGF0YSh0ZXN0X3ZpZGVvLT5HZXRGcmFtZShpKSks
CisgICAgICAgIEZsYXR0ZW5ZdXZEYXRhKHJlZmVyZW5jZV92aWRlby0+R2V0RnJhbWUoaSkpKTsK
KyAgfQorCisgIHJldHVybiBWZWN0b3JUb0NvbG9yTWF0cml4KGluY3JlbWVudGFsX2xscy5HZXRC
ZXN0U29sdXRpb24oKSk7Cit9CisKK3J0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4gQWRqdXN0Q29s
b3JzKAorICAgIGNvbnN0IENvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbG9yX3RyYW5zZm9y
bWF0aW9uLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4mIHZpZGVvKSB7Cisg
IGNsYXNzIENvbG9yQWRqdXN0ZWRWaWRlbyA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8
VmlkZW8+IHsKKyAgIHB1YmxpYzoKKyAgICBDb2xvckFkanVzdGVkVmlkZW8oY29uc3QgQ29sb3JU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29sb3JfdHJhbnNmb3JtYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4mIHZpZGVvKQorICAgICAg
ICA6IGNvbG9yX3RyYW5zZm9ybWF0aW9uXyhjb2xvcl90cmFuc2Zvcm1hdGlvbiksIHZpZGVvXyh2
aWRlbykge30KKworICAgIGludCB3aWR0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpZGVv
Xy0+d2lkdGgoKTsgfQorICAgIGludCBoZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2
aWRlb18tPmhlaWdodCgpOyB9CisgICAgc2l6ZV90IG51bWJlcl9vZl9mcmFtZXMoKSBjb25zdCBv
dmVycmlkZSB7CisgICAgICByZXR1cm4gdmlkZW9fLT5udW1iZXJfb2ZfZnJhbWVzKCk7CisgICAg
fQorCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IEdldEZyYW1l
KAorICAgICAgICBzaXplX3QgaW5kZXgpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICAgIHJldHVybiBB
ZGp1c3RDb2xvcnMoY29sb3JfdHJhbnNmb3JtYXRpb25fLCB2aWRlb18tPkdldEZyYW1lKGluZGV4
KSk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0IENvbG9yVHJhbnNmb3JtYXRpb25N
YXRyaXggY29sb3JfdHJhbnNmb3JtYXRpb25fOworICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0
cjxWaWRlbz4gdmlkZW9fOworICB9OworCisgIHJldHVybiBuZXcgQ29sb3JBZGp1c3RlZFZpZGVv
KGNvbG9yX3RyYW5zZm9ybWF0aW9uLCB2aWRlbyk7Cit9CisKK3J0Yzo6c2NvcGVkX3JlZnB0cjxJ
NDIwQnVmZmVySW50ZXJmYWNlPiBBZGp1c3RDb2xvcnMoCisgICAgY29uc3QgQ29sb3JUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgY29sb3JfbWF0cml4LAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0
cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgZnJhbWUpIHsKKyAgLy8gQWxsb2NhdGUgSTQyMCBidWZm
ZXIgdGhhdCB3aWxsIGhvbGQgdGhlIGNvbG9yIGFkanVzdGVkIGZyYW1lLgorICBydGM6OnNjb3Bl
ZF9yZWZwdHI8STQyMEJ1ZmZlcj4gYWRqdXN0ZWRfZnJhbWUgPQorICAgICAgSTQyMEJ1ZmZlcjo6
Q3JlYXRlKGZyYW1lLT53aWR0aCgpLCBmcmFtZS0+aGVpZ2h0KCkpOworCisgIC8vIENyZWF0ZSBh
IGRvd25zY2FsZWQgWSBwbGFuZSB3aXRoIHRoZSBzYW1lIHNpemUgYXMgdGhlIFUvViBwbGFuZXMg
dG8KKyAgLy8gc2ltcGxpZnkgY29udmVydGluZyB0aGUgVS9WIHBsYW5lcy4KKyAgc3RkOjp2ZWN0
b3I8dWludDhfdD4gZG93bnNjYWxlZF95X3BsYW5lKGZyYW1lLT5DaHJvbWFXaWR0aCgpICoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5DaHJvbWFIZWln
aHQoKSk7CisgIGxpYnl1djo6U2NhbGVQbGFuZShmcmFtZS0+RGF0YVkoKSwgZnJhbWUtPlN0cmlk
ZVkoKSwgZnJhbWUtPndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+aGVpZ2h0
KCksIGRvd25zY2FsZWRfeV9wbGFuZS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+Q2hyb21hV2lkdGgoKSwgZnJhbWUtPkNocm9tYVdpZHRoKCksCisgICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+Q2hyb21hSGVpZ2h0KCksIGxpYnl1djo6a0ZpbHRlckJveCk7CisKKyAgLy8g
RmlsbCBpbiB0aGUgYWRqdXN0ZWQgZGF0YSByb3cgYnkgcm93LgorICBmb3IgKGludCB5ID0gMDsg
eSA8IGZyYW1lLT5oZWlnaHQoKTsgKyt5KSB7CisgICAgY29uc3QgaW50IGhhbGZfeSA9IHkgLyAy
OworICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IHlfcm93KGZyYW1lLT5EYXRhWSgp
ICsgZnJhbWUtPlN0cmlkZVkoKSAqIHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPndpZHRoKCkpOworICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4
X3Q+IHVfcm93KAorICAgICAgICBmcmFtZS0+RGF0YVUoKSArIGZyYW1lLT5TdHJpZGVVKCkgKiBo
YWxmX3ksIGZyYW1lLT5DaHJvbWFXaWR0aCgpKTsKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1
aW50OF90PiB2X3JvdygKKyAgICAgICAgZnJhbWUtPkRhdGFWKCkgKyBmcmFtZS0+U3RyaWRlVigp
ICogaGFsZl95LCBmcmFtZS0+Q2hyb21hV2lkdGgoKSk7CisgICAgcnRjOjpBcnJheVZpZXc8dWlu
dDhfdD4gb3V0cHV0X3lfcm93KAorICAgICAgICBhZGp1c3RlZF9mcmFtZS0+TXV0YWJsZURhdGFZ
KCkgKyBhZGp1c3RlZF9mcmFtZS0+U3RyaWRlWSgpICogeSwKKyAgICAgICAgZnJhbWUtPndpZHRo
KCkpOworCisgICAgQ2FsY3VsYXRlWUNoYW5uZWwoeV9yb3csIHVfcm93LCB2X3JvdywgY29sb3Jf
bWF0cml4WzBdLCBvdXRwdXRfeV9yb3cpOworCisgICAgLy8gQ2hyb21hIGNoYW5uZWxzIG9ubHkg
ZXhpc3QgZXZlcnkgc2Vjb25kIHJvdyBmb3IgSTQyMC4KKyAgICBpZiAoeSAlIDIgPT0gMCkgewor
ICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gZG93bnNjYWxlZF95X3JvdygKKyAg
ICAgICAgICBkb3duc2NhbGVkX3lfcGxhbmUuZGF0YSgpICsgZnJhbWUtPkNocm9tYVdpZHRoKCkg
KiBoYWxmX3ksCisgICAgICAgICAgZnJhbWUtPkNocm9tYVdpZHRoKCkpOworICAgICAgcnRjOjpB
cnJheVZpZXc8dWludDhfdD4gb3V0cHV0X3Vfcm93KAorICAgICAgICAgIGFkanVzdGVkX2ZyYW1l
LT5NdXRhYmxlRGF0YVUoKSArIGFkanVzdGVkX2ZyYW1lLT5TdHJpZGVVKCkgKiBoYWxmX3ksCisg
ICAgICAgICAgZnJhbWUtPkNocm9tYVdpZHRoKCkpOworICAgICAgcnRjOjpBcnJheVZpZXc8dWlu
dDhfdD4gb3V0cHV0X3Zfcm93KAorICAgICAgICAgIGFkanVzdGVkX2ZyYW1lLT5NdXRhYmxlRGF0
YVYoKSArIGFkanVzdGVkX2ZyYW1lLT5TdHJpZGVWKCkgKiBoYWxmX3ksCisgICAgICAgICAgZnJh
bWUtPkNocm9tYVdpZHRoKCkpOworCisgICAgICBDYWxjdWxhdGVVVkNoYW5uZWwoZG93bnNjYWxl
ZF95X3JvdywgdV9yb3csIHZfcm93LCBjb2xvcl9tYXRyaXhbMV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0cHV0X3Vfcm93KTsKKyAgICAgIENhbGN1bGF0ZVVWQ2hhbm5lbChkb3duc2Nh
bGVkX3lfcm93LCB1X3Jvdywgdl9yb3csIGNvbG9yX21hdHJpeFsyXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRfdl9yb3cpOworICAgIH0KKyAgfQorCisgIHJldHVybiBhZGp1c3Rl
ZF9mcmFtZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19jb2xvcl9hbGlnbmVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6
ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5N2NiZjY1ODI5ZjY4MjZmNmUy
MWNiODI5MWMzMzZiZmI3YTRkYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9f
Y29sb3JfYWxpZ25lci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAy
MDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaWZuZGVmIFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9WSURFT19DT0xPUl9BTElHTkVSX0hf
CisjZGVmaW5lIFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9WSURFT19DT0xPUl9BTElHTkVSX0hf
CisKKyNpbmNsdWRlIDxhcnJheT4KKworI2luY2x1ZGUgInJ0Y190b29scy92aWRlb19maWxlX3Jl
YWRlci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworLy8gUmVw
cmVzZW50cyBhIGxpbmVhciBjb2xvciB0cmFuc2Zvcm1hdGlvbiBmcm9tIFt5LCB1LCB2XSB0byBb
eScsIHUnLCB2J10KKy8vIHRocm91Z2ggdGhlIGVxdWF0aW9uOiBbeScsIHUnLCB2J10gPSBbeSwg
dSwgdiwgMV0gKiBtYXRyaXguCit1c2luZyBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4ID0gc3Rk
OjphcnJheTxzdGQ6OmFycmF5PGZsb2F0LCA0PiwgMz47CisKKy8vIENhbGN1bGF0ZSB0aGUgb3B0
aW1hbCBjb2xvciB0cmFuc2Zvcm1hdGlvbiB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSB0
ZXN0CisvLyB2aWRlbyB0byBtYXRjaCBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlIHRvIHRoZSByZWZl
cmVuY2UgdmlkZW8uCitDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4IENhbGN1bGF0ZUNvbG9yVHJh
bnNmb3JtYXRpb25NYXRyaXgoCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYg
cmVmZXJlbmNlX3ZpZGVvLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4mIHRl
c3RfdmlkZW8pOworCisvLyBDYWxjdWxhdGUgY29sb3IgdHJhbnNmb3JtYXRpb24gZm9yIGEgc2lu
Z2xlIEk0MjAgZnJhbWUuCitDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4IENhbGN1bGF0ZUNvbG9y
VHJhbnNmb3JtYXRpb25NYXRyaXgoCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBC
dWZmZXJJbnRlcmZhY2U+JiByZWZlcmVuY2VfZnJhbWUsCisgICAgY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+JiB0ZXN0X2ZyYW1lKTsKKworLy8gQXBwbHkgYSBj
b2xvciB0cmFuc2Zvcm1hdGlvbiB0byBhIHZpZGVvLgorcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVv
PiBBZGp1c3RDb2xvcnMoCisgICAgY29uc3QgQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29s
b3JfbWF0cml4LAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4mIHZpZGVvKTsK
KworLy8gQXBwbHkgYSBjb2xvciB0cmFuc2Zvcm1hdGlvbiB0byBhIHNpbmdsZSBJNDIwIGZyYW1l
LgorcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IEFkanVzdENvbG9ycygK
KyAgICBjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb2xvcl9tYXRyaXgsCisgICAg
Y29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+JiBmcmFtZSk7CisK
K30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAg
Ly8gUlRDX1RPT0xTX0ZSQU1FX0FOQUxZWkVSX1ZJREVPX0NPTE9SX0FMSUdORVJfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29s
cy9mcmFtZV9hbmFseXplci92aWRlb19jb2xvcl9hbGlnbmVyX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5
emVyL3ZpZGVvX2NvbG9yX2FsaWduZXJfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIwZDZmNDU5
ZTcwNTJiNWZhZGIwYTRhYWJmOWRmYTQ2NWFjYzkwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFs
eXplci92aWRlb19jb2xvcl9hbGlnbmVyX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsMTc0IEBACisv
KgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInJ0Y190b29scy9mcmFtZV9hbmFseXpl
ci92aWRlb19jb2xvcl9hbGlnbmVyLmgiCisKKyNpbmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5h
bHl6ZXIvdmlkZW9fcXVhbGl0eV9hbmFseXNpcy5oIgorI2luY2x1ZGUgInJ0Y190b29scy92aWRl
b19maWxlX3JlYWRlci5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0
L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9p
bmNsdWRlL2xpYnl1di9zY2FsZS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0
ZXN0IHsKKworbmFtZXNwYWNlIHsKKworY29uc3QgQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCBr
SWRlbnRpdHlDb2xvck1hdHJpeCA9IHsKKyAgICB7ezEsIDAsIDAsIDB9LCB7MCwgMSwgMCwgMH0s
IHswLCAwLCAxLCAwfX19OworCit2b2lkIEV4cGVjdE5lYXIoY29uc3QgQ29sb3JUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgY29uc3QgQ29sb3JUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgYWN0dWFsKSB7CisgIC8vIFRoZSBzY2FsaW5nIGZhY3RvciBvbiB5L3Uv
diBzaG91bGQgYmUgcHJldHR5IHByZWNpc2UuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytp
KSB7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCAzOyArK2opCisgICAgICBFWFBFQ1RfTkVBUihl
eHBlY3RlZFtpXVtqXSwgYWN0dWFsW2ldW2pdLCAvKiBhYnNfZXJyb3I9ICovIDEuMGUtMykKKyAg
ICAgICAgICA8PCAiYXQgZWxlbWVudCBpOiAiIDw8IGkgPDwgIiwgajogIiA8PCBqOworICB9Cisg
IC8vIFRoZSBvZmZzZXQgY2FuIGJlIGxlc3MgcHJlY2lzZSBzaW5jZSB0aGUgcmFuZ2UgaXMgWzAs
IDI1NV0uCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKQorICAgIEVYUEVDVF9ORUFSKGV4
cGVjdGVkW2ldWzNdLCBhY3R1YWxbaV1bM10sIC8qIGFic19lcnJvcj0gKi8gMC4xKQorICAgICAg
ICA8PCAiYXQgZWxlbWVudCBpOiAiIDw8IGk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitjbGFz
cyBWaWRlb0NvbG9yQWxpZ25lclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90
ZWN0ZWQ6CisgIHZvaWQgU2V0VXAoKSB7CisgICAgcmVmZXJlbmNlX3ZpZGVvXyA9CisgICAgICAg
IE9wZW5ZdXZGaWxlKFJlc291cmNlUGF0aCgiZm9yZW1hbl8xMjh4OTYiLCAieXV2IiksIDEyOCwg
OTYpOworICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZV92aWRlb18pOworICB9CisKKyAgcnRjOjpz
Y29wZWRfcmVmcHRyPFZpZGVvPiByZWZlcmVuY2VfdmlkZW9fOworfTsKKworVEVTVF9GKFZpZGVv
Q29sb3JBbGlnbmVyVGVzdCwgQWRqdXN0Q29sb3JzRnJhbWVJZGVudGl0eSkgeworICBjb25zdCBy
dGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gdGVzdF9mcmFtZSA9CisgICAg
ICByZWZlcmVuY2VfdmlkZW9fLT5HZXRGcmFtZSgwKTsKKworICAvLyBBc3N1bWUgcGVyZmVjdCBt
YXRjaCwgaS5lLiBzc2ltID09IDEuCisgIEVYUEVDVF9FUSgxLjAsCisgICAgICAgICAgICBTc2lt
KHRlc3RfZnJhbWUsIEFkanVzdENvbG9ycyhrSWRlbnRpdHlDb2xvck1hdHJpeCwgdGVzdF9mcmFt
ZSkpKTsKK30KKworVEVTVF9GKFZpZGVvQ29sb3JBbGlnbmVyVGVzdCwgQWRqdXN0Q29sb3JzRnJh
bWUxeDEpIHsKKyAgY29uc3QgQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb2xvcl9tYXRyaXgg
PSB7CisgICAgICB7ezEsIDIsIDMsIDR9LCB7NSwgNiwgNywgOH0sIHs5LCAxMCwgMTEsIDEyfX19
OworCisgIGNvbnN0IHVpbnQ4X3QgZGF0YV95W10gPSB7Mn07CisgIGNvbnN0IHVpbnQ4X3QgZGF0
YV91W10gPSB7Nn07CisgIGNvbnN0IHVpbnQ4X3QgZGF0YV92W10gPSB7N307CisgIGNvbnN0IHJ0
Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBpNDIwX2J1ZmZlciA9IEk0MjBC
dWZmZXI6OkNvcHkoCisgICAgICAvKiB3aWR0aD0gKi8gMSwgLyogaGVpZ2h0PSAqLyAxLCBkYXRh
X3ksIC8qIHN0cmlkZV95PSAqLyAxLCBkYXRhX3UsCisgICAgICAvKiBzdHJpZGVfdT0gKi8gMSwg
ZGF0YV92LCAvKiBzdHJpZGVfdj0gKi8gMSk7CisKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRy
PEk0MjBCdWZmZXJJbnRlcmZhY2U+IGFkanVzdGVkX2J1ZmZlciA9CisgICAgICBBZGp1c3RDb2xv
cnMoY29sb3JfbWF0cml4LCBpNDIwX2J1ZmZlcik7CisKKyAgRVhQRUNUX0VRKDIgKiAxICsgNiAq
IDIgKyA3ICogMyArIDQsIGFkanVzdGVkX2J1ZmZlci0+RGF0YVkoKVswXSk7CisgIEVYUEVDVF9F
USgyICogNSArIDYgKiA2ICsgNyAqIDcgKyA4LCBhZGp1c3RlZF9idWZmZXItPkRhdGFVKClbMF0p
OworICBFWFBFQ1RfRVEoMiAqIDkgKyA2ICogMTAgKyA3ICogMTEgKyAxMiwgYWRqdXN0ZWRfYnVm
ZmVyLT5EYXRhVigpWzBdKTsKK30KKworVEVTVF9GKFZpZGVvQ29sb3JBbGlnbmVyVGVzdCwgQWRq
dXN0Q29sb3JzRnJhbWUxeDFOZWdhdGl2ZSkgeworICBjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9u
TWF0cml4IGNvbG9yX21hdHJpeCA9IHsKKyAgICAgIHt7LTEsIDAsIDAsIDI1NX0sIHswLCAtMSwg
MCwgMjU1fSwgezAsIDAsIC0xLCAyNTV9fX07CisKKyAgY29uc3QgdWludDhfdCBkYXRhX3lbXSA9
IHsyfTsKKyAgY29uc3QgdWludDhfdCBkYXRhX3VbXSA9IHs2fTsKKyAgY29uc3QgdWludDhfdCBk
YXRhX3ZbXSA9IHs3fTsKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRl
cmZhY2U+IGk0MjBfYnVmZmVyID0gSTQyMEJ1ZmZlcjo6Q29weSgKKyAgICAgIC8qIHdpZHRoPSAq
LyAxLCAvKiBoZWlnaHQ9ICovIDEsIGRhdGFfeSwgLyogc3RyaWRlX3k9ICovIDEsIGRhdGFfdSwK
KyAgICAgIC8qIHN0cmlkZV91PSAqLyAxLCBkYXRhX3YsIC8qIHN0cmlkZV92PSAqLyAxKTsKKwor
ICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gYWRqdXN0ZWRf
YnVmZmVyID0KKyAgICAgIEFkanVzdENvbG9ycyhjb2xvcl9tYXRyaXgsIGk0MjBfYnVmZmVyKTsK
KworICBFWFBFQ1RfRVEoMjU1IC0gMiwgYWRqdXN0ZWRfYnVmZmVyLT5EYXRhWSgpWzBdKTsKKyAg
RVhQRUNUX0VRKDI1NSAtIDYsIGFkanVzdGVkX2J1ZmZlci0+RGF0YVUoKVswXSk7CisgIEVYUEVD
VF9FUSgyNTUgLSA3LCBhZGp1c3RlZF9idWZmZXItPkRhdGFWKClbMF0pOworfQorCitURVNUX0Yo
VmlkZW9Db2xvckFsaWduZXJUZXN0LCBBZGp1c3RDb2xvcnNGcmFtZTJ4MikgeworICBjb25zdCBD
b2xvclRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbG9yX21hdHJpeCA9IHsKKyAgICAgIHt7MSwgMiwg
MywgNH0sIHs1LCA2LCA3LCA4fSwgezksIDEwLCAxMSwgMTJ9fX07CisKKyAgY29uc3QgdWludDhf
dCBkYXRhX3lbXSA9IHswLCAxLCAzLCA0fTsKKyAgY29uc3QgdWludDhfdCBkYXRhX3VbXSA9IHs2
fTsKKyAgY29uc3QgdWludDhfdCBkYXRhX3ZbXSA9IHs3fTsKKyAgY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGk0MjBfYnVmZmVyID0gSTQyMEJ1ZmZlcjo6Q29w
eSgKKyAgICAgIC8qIHdpZHRoPSAqLyAyLCAvKiBoZWlnaHQ9ICovIDIsIGRhdGFfeSwgLyogc3Ry
aWRlX3k9ICovIDIsIGRhdGFfdSwKKyAgICAgIC8qIHN0cmlkZV91PSAqLyAxLCBkYXRhX3YsIC8q
IHN0cmlkZV92PSAqLyAxKTsKKworICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZl
ckludGVyZmFjZT4gYWRqdXN0ZWRfYnVmZmVyID0KKyAgICAgIEFkanVzdENvbG9ycyhjb2xvcl9t
YXRyaXgsIGk0MjBfYnVmZmVyKTsKKworICBFWFBFQ1RfRVEoMCAqIDEgKyA2ICogMiArIDcgKiAz
ICsgNCwgYWRqdXN0ZWRfYnVmZmVyLT5EYXRhWSgpWzBdKTsKKyAgRVhQRUNUX0VRKDEgKiAxICsg
NiAqIDIgKyA3ICogMyArIDQsIGFkanVzdGVkX2J1ZmZlci0+RGF0YVkoKVsxXSk7CisgIEVYUEVD
VF9FUSgzICogMSArIDYgKiAyICsgNyAqIDMgKyA0LCBhZGp1c3RlZF9idWZmZXItPkRhdGFZKClb
Ml0pOworICBFWFBFQ1RfRVEoNCAqIDEgKyA2ICogMiArIDcgKiAzICsgNCwgYWRqdXN0ZWRfYnVm
ZmVyLT5EYXRhWSgpWzNdKTsKKworICBFWFBFQ1RfRVEoMiAqIDUgKyA2ICogNiArIDcgKiA3ICsg
OCwgYWRqdXN0ZWRfYnVmZmVyLT5EYXRhVSgpWzBdKTsKKyAgRVhQRUNUX0VRKDIgKiA5ICsgNiAq
IDEwICsgNyAqIDExICsgMTIsIGFkanVzdGVkX2J1ZmZlci0+RGF0YVYoKVswXSk7Cit9CisKK1RF
U1RfRihWaWRlb0NvbG9yQWxpZ25lclRlc3QsIENhbGN1bGF0ZUNvbG9yVHJhbnNmb3JtYXRpb25N
YXRyaXhJZGVudGl0eSkgeworICBFWFBFQ1RfRVEoa0lkZW50aXR5Q29sb3JNYXRyaXgsIENhbGN1
bGF0ZUNvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXgoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZmVyZW5jZV92aWRlb18sIHJlZmVyZW5jZV92aWRlb18pKTsKK30KKwor
VEVTVF9GKFZpZGVvQ29sb3JBbGlnbmVyVGVzdCwgQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlv
bk1hdHJpeE9mZnNldCkgeworICBjb25zdCB1aW50OF90IHNtYWxsX2RhdGFfeVtdID0gezAsIDEs
IDIsICAzLCAgNCwgIDUsICA2LCAgNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1fTsKKyAgY29uc3QgdWludDhfdCBzbWFsbF9k
YXRhX3VbXSA9IHsxNSwgMTMsIDE3LCAyOX07CisgIGNvbnN0IHVpbnQ4X3Qgc21hbGxfZGF0YV92
W10gPSB7MywgMjAwLCAxNzAsIDI5fTsKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBC
dWZmZXJJbnRlcmZhY2U+IHNtYWxsX2k0MjBfYnVmZmVyID0KKyAgICAgIEk0MjBCdWZmZXI6OkNv
cHkoCisgICAgICAgICAgLyogd2lkdGg9ICovIDQsIC8qIGhlaWdodD0gKi8gNCwgc21hbGxfZGF0
YV95LCAvKiBzdHJpZGVfeT0gKi8gNCwKKyAgICAgICAgICBzbWFsbF9kYXRhX3UsIC8qIHN0cmlk
ZV91PSAqLyAyLCBzbWFsbF9kYXRhX3YsIC8qIHN0cmlkZV92PSAqLyAyKTsKKworICB1aW50OF90
IGJpZ19kYXRhX3lbMTZdOworICB1aW50OF90IGJpZ19kYXRhX3VbNF07CisgIHVpbnQ4X3QgYmln
X2RhdGFfdls0XTsKKyAgLy8gQ3JlYXRlIGFub3RoZXIgSTQyMCBmcmFtZSB3aGVyZSBhbGwgdmFs
dWVzIGFyZSAxMCBiaWdnZXIuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7ICsraSkKKyAgICBi
aWdfZGF0YV95W2ldID0gc21hbGxfZGF0YV95W2ldICsgMTA7CisgIGZvciAoaW50IGkgPSAwOyBp
IDwgNDsgKytpKQorICAgIGJpZ19kYXRhX3VbaV0gPSBzbWFsbF9kYXRhX3VbaV0gKyAxMDsKKyAg
Zm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgYmlnX2RhdGFfdltpXSA9IHNtYWxsX2Rh
dGFfdltpXSArIDEwOworCisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50
ZXJmYWNlPiBiaWdfaTQyMF9idWZmZXIgPQorICAgICAgSTQyMEJ1ZmZlcjo6Q29weSgKKyAgICAg
ICAgICAvKiB3aWR0aD0gKi8gNCwgLyogaGVpZ2h0PSAqLyA0LCBiaWdfZGF0YV95LCAvKiBzdHJp
ZGVfeT0gKi8gNCwKKyAgICAgICAgICBiaWdfZGF0YV91LCAvKiBzdHJpZGVfdT0gKi8gMiwgYmln
X2RhdGFfdiwgLyogc3RyaWRlX3Y9ICovIDIpOworCisgIGNvbnN0IENvbG9yVHJhbnNmb3JtYXRp
b25NYXRyaXggY29sb3JfbWF0cml4ID0KKyAgICAgIENhbGN1bGF0ZUNvbG9yVHJhbnNmb3JtYXRp
b25NYXRyaXgoYmlnX2k0MjBfYnVmZmVyLCBzbWFsbF9pNDIwX2J1ZmZlcik7CisKKyAgRXhwZWN0
TmVhcih7e3sxLCAwLCAwLCAxMH0sIHswLCAxLCAwLCAxMH0sIHswLCAwLCAxLCAxMH19fSwgY29s
b3JfbWF0cml4KTsKK30KKworVEVTVF9GKFZpZGVvQ29sb3JBbGlnbmVyVGVzdCwgQ2FsY3VsYXRl
Q29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCkgeworICAvLyBBcmJpdHJhcnkgY29sb3IgdHJhbnNm
b3JtYXRpb24gbWF0cml4LgorICBjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4IG9yZ19j
b2xvcl9tYXRyaXggPSB7CisgICAgICB7ezAuOCwgMC4wNSwgMC4wNCwgLTR9LCB7LTAuMiwgMC43
LCAwLjEsIDEwfSwgezAuMSwgMC4yLCAwLjQsIDIwfX19OworCisgIGNvbnN0IENvbG9yVHJhbnNm
b3JtYXRpb25NYXRyaXggcmVzdWx0X2NvbG9yX21hdHJpeCA9CisgICAgICBDYWxjdWxhdGVDb2xv
clRyYW5zZm9ybWF0aW9uTWF0cml4KAorICAgICAgICAgIEFkanVzdENvbG9ycyhvcmdfY29sb3Jf
bWF0cml4LCByZWZlcmVuY2VfdmlkZW9fKSwgcmVmZXJlbmNlX3ZpZGVvXyk7CisKKyAgRXhwZWN0
TmVhcihvcmdfY29sb3JfbWF0cml4LCByZXN1bHRfY29sb3JfbWF0cml4KTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFs
eXplci92aWRlb19nZW9tZXRyeV9hbGlnbmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5
X2FsaWduZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNjYmMwNTFjOWJmMTMzYzFmZGYxZTljYjdmNTJmNTA2
YzA2Y2M1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19nZW9tZXRyeV9hbGln
bmVyLmNjCkBAIC0wLDAgKzEsMTc4IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1
ZGUgInJ0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19nZW9tZXRyeV9hbGlnbmVyLmgiCisK
KyNpbmNsdWRlIDxtYXA+CisKKyNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVk
b2JqZWN0LmgiCisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxp
dHlfYW5hbHlzaXMuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5
dXYvc2NhbGUuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKK25h
bWVzcGFjZSB7CisKK2Jvb2wgSXNWYWxpZFJlZ2lvbihjb25zdCBDcm9wUmVnaW9uJiByZWdpb24s
CisgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJ
bnRlcmZhY2U+JiBmcmFtZSkgeworICByZXR1cm4gcmVnaW9uLmxlZnQgPj0gMCAmJiByZWdpb24u
cmlnaHQgPj0gMCAmJiByZWdpb24udG9wID49IDAgJiYKKyAgICAgICAgIHJlZ2lvbi5ib3R0b20g
Pj0gMCAmJiByZWdpb24ubGVmdCArIHJlZ2lvbi5yaWdodCA8IGZyYW1lLT53aWR0aCgpICYmCisg
ICAgICAgICByZWdpb24udG9wICsgcmVnaW9uLmJvdHRvbSA8IGZyYW1lLT5oZWlnaHQoKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlCisKK3J0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJm
YWNlPiBDcm9wQW5kWm9vbSgKKyAgICBjb25zdCBDcm9wUmVnaW9uJiBjcm9wX3JlZ2lvbiwKKyAg
ICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIGZyYW1lKSB7
CisgIFJUQ19DSEVDSyhJc1ZhbGlkUmVnaW9uKGNyb3BfcmVnaW9uLCBmcmFtZSkpOworCisgIGNv
bnN0IGludCB1dl9jcm9wX2xlZnQgPSBjcm9wX3JlZ2lvbi5sZWZ0IC8gMjsKKyAgY29uc3QgaW50
IHV2X2Nyb3BfdG9wID0gY3JvcF9yZWdpb24udG9wIC8gMjsKKworICBjb25zdCBpbnQgY3JvcHBl
ZF93aWR0aCA9CisgICAgICBmcmFtZS0+d2lkdGgoKSAtIGNyb3BfcmVnaW9uLmxlZnQgLSBjcm9w
X3JlZ2lvbi5yaWdodDsKKyAgY29uc3QgaW50IGNyb3BwZWRfaGVpZ2h0ID0KKyAgICAgIGZyYW1l
LT5oZWlnaHQoKSAtIGNyb3BfcmVnaW9uLnRvcCAtIGNyb3BfcmVnaW9uLmJvdHRvbTsKKworICAv
LyBDcm9wIGJ5IG9ubHkgYWRqdXN0aW5nIHBvaW50ZXJzLgorICBjb25zdCB1aW50OF90KiB5X3Bs
YW5lID0KKyAgICAgIGZyYW1lLT5EYXRhWSgpICsgZnJhbWUtPlN0cmlkZVkoKSAqIGNyb3BfcmVn
aW9uLnRvcCArIGNyb3BfcmVnaW9uLmxlZnQ7CisgIGNvbnN0IHVpbnQ4X3QqIHVfcGxhbmUgPQor
ICAgICAgZnJhbWUtPkRhdGFVKCkgKyBmcmFtZS0+U3RyaWRlVSgpICogdXZfY3JvcF90b3AgKyB1
dl9jcm9wX2xlZnQ7CisgIGNvbnN0IHVpbnQ4X3QqIHZfcGxhbmUgPQorICAgICAgZnJhbWUtPkRh
dGFWKCkgKyBmcmFtZS0+U3RyaWRlVigpICogdXZfY3JvcF90b3AgKyB1dl9jcm9wX2xlZnQ7CisK
KyAgLy8gU3RyZXRjaCB0aGUgY3JvcHBlZCBmcmFtZSB0byB0aGUgb3JpZ2luYWwgc2l6ZSB1c2lu
ZyBsaWJ5dXYuCisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVyPiBhZGp1c3RlZF9mcmFt
ZSA9CisgICAgICBJNDIwQnVmZmVyOjpDcmVhdGUoZnJhbWUtPndpZHRoKCksIGZyYW1lLT5oZWln
aHQoKSk7CisgIGxpYnl1djo6STQyMFNjYWxlKHlfcGxhbmUsIGZyYW1lLT5TdHJpZGVZKCksIHVf
cGxhbmUsIGZyYW1lLT5TdHJpZGVVKCksCisgICAgICAgICAgICAgICAgICAgIHZfcGxhbmUsIGZy
YW1lLT5TdHJpZGVWKCksIGNyb3BwZWRfd2lkdGgsIGNyb3BwZWRfaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICBhZGp1c3RlZF9mcmFtZS0+TXV0YWJsZURhdGFZKCksIGFkanVzdGVkX2ZyYW1l
LT5TdHJpZGVZKCksCisgICAgICAgICAgICAgICAgICAgIGFkanVzdGVkX2ZyYW1lLT5NdXRhYmxl
RGF0YVUoKSwgYWRqdXN0ZWRfZnJhbWUtPlN0cmlkZVUoKSwKKyAgICAgICAgICAgICAgICAgICAg
YWRqdXN0ZWRfZnJhbWUtPk11dGFibGVEYXRhVigpLCBhZGp1c3RlZF9mcmFtZS0+U3RyaWRlVigp
LAorICAgICAgICAgICAgICAgICAgICBmcmFtZS0+d2lkdGgoKSwgZnJhbWUtPmhlaWdodCgpLCBs
aWJ5dXY6OmtGaWx0ZXJCaWxpbmVhcik7CisKKyAgcmV0dXJuIGFkanVzdGVkX2ZyYW1lOworfQor
CitDcm9wUmVnaW9uIENhbGN1bGF0ZUNyb3BSZWdpb24oCisgICAgY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+JiByZWZlcmVuY2VfZnJhbWUsCisgICAgY29uc3Qg
cnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+JiB0ZXN0X2ZyYW1lKSB7Cisg
IFJUQ19DSEVDS19FUShyZWZlcmVuY2VfZnJhbWUtPndpZHRoKCksIHRlc3RfZnJhbWUtPndpZHRo
KCkpOworICBSVENfQ0hFQ0tfRVEocmVmZXJlbmNlX2ZyYW1lLT5oZWlnaHQoKSwgdGVzdF9mcmFt
ZS0+aGVpZ2h0KCkpOworCisgIENyb3BSZWdpb24gYmVzdF9yZWdpb247CisgIGRvdWJsZSBiZXN0
X3NzaW0gPSBTc2ltKHJlZmVyZW5jZV9mcmFtZSwgdGVzdF9mcmFtZSk7CisKKyAgdHlwZWRlZiBp
bnQgQ3JvcFJlZ2lvbjo6KkNyb3BQYXJhbWV0ZXI7CisgIENyb3BQYXJhbWV0ZXIgY3JvcF9wYXJh
bWV0ZXJzWzRdID0geyZDcm9wUmVnaW9uOjpsZWZ0LCAmQ3JvcFJlZ2lvbjo6dG9wLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ3JvcFJlZ2lvbjo6cmlnaHQsICZDcm9w
UmVnaW9uOjpib3R0b219OworCisgIHdoaWxlICh0cnVlKSB7CisgICAgLy8gRmluZCB0aGUgcGFy
YW1ldGVyIGluIHdoaWNoIGRpcmVjdGlvbiBTU0lNIGltcHJvdmVzIHRoZSBtb3N0LgorICAgIENy
b3BQYXJhbWV0ZXIgYmVzdF9wYXJhbWV0ZXIgPSBudWxscHRyOworICAgIGNvbnN0IENyb3BSZWdp
b24gcHJldl9iZXN0X3JlZ2lvbiA9IGJlc3RfcmVnaW9uOworCisgICAgZm9yIChDcm9wUGFyYW1l
dGVyIGNyb3BfcGFyYW1ldGVyIDogY3JvcF9wYXJhbWV0ZXJzKSB7CisgICAgICBDcm9wUmVnaW9u
IHRlc3RfcmVnaW9uID0gcHJldl9iZXN0X3JlZ2lvbjsKKyAgICAgICsrKHRlc3RfcmVnaW9uLipj
cm9wX3BhcmFtZXRlcik7CisKKyAgICAgIGlmICghSXNWYWxpZFJlZ2lvbih0ZXN0X3JlZ2lvbiwg
cmVmZXJlbmNlX2ZyYW1lKSkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGNvbnN0IGRvdWJs
ZSBzc2ltID0KKyAgICAgICAgICBTc2ltKENyb3BBbmRab29tKHRlc3RfcmVnaW9uLCByZWZlcmVu
Y2VfZnJhbWUpLCB0ZXN0X2ZyYW1lKTsKKworICAgICAgaWYgKHNzaW0gPiBiZXN0X3NzaW0pIHsK
KyAgICAgICAgYmVzdF9zc2ltID0gc3NpbTsKKyAgICAgICAgYmVzdF9wYXJhbWV0ZXIgPSBjcm9w
X3BhcmFtZXRlcjsKKyAgICAgICAgYmVzdF9yZWdpb24gPSB0ZXN0X3JlZ2lvbjsKKyAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBObyBpbXByb3ZlbWVudCBhbW9uZyBhbnkgZGlyZWN0aW9uLCBzdG9w
IGl0ZXJhdGlvbi4KKyAgICBpZiAoYmVzdF9wYXJhbWV0ZXIgPT0gbnVsbHB0cikKKyAgICAgIGJy
ZWFrOworCisgICAgLy8gSXRlcmF0ZSBpbiB0aGUgYmVzdCBkaXJlY3Rpb24gYXMgbG9uZyBhcyBp
dCBpbXByb3ZlcyBTU0lNLgorICAgIGZvciAoQ3JvcFJlZ2lvbiB0ZXN0X3JlZ2lvbiA9IGJlc3Rf
cmVnaW9uOworICAgICAgICAgSXNWYWxpZFJlZ2lvbih0ZXN0X3JlZ2lvbiwgcmVmZXJlbmNlX2Zy
YW1lKTsKKyAgICAgICAgICsrKHRlc3RfcmVnaW9uLipiZXN0X3BhcmFtZXRlcikpIHsKKyAgICAg
IGNvbnN0IGRvdWJsZSBzc2ltID0KKyAgICAgICAgICBTc2ltKENyb3BBbmRab29tKHRlc3RfcmVn
aW9uLCByZWZlcmVuY2VfZnJhbWUpLCB0ZXN0X2ZyYW1lKTsKKyAgICAgIGlmIChzc2ltIDw9IGJl
c3Rfc3NpbSkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGJlc3Rfc3NpbSA9IHNzaW07CisgICAg
ICBiZXN0X3JlZ2lvbiA9IHRlc3RfcmVnaW9uOworICAgIH0KKyAgfQorCisgIHJldHVybiBiZXN0
X3JlZ2lvbjsKK30KKworcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IEFk
anVzdENyb3BwaW5nKAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50
ZXJmYWNlPiYgcmVmZXJlbmNlX2ZyYW1lLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJ
NDIwQnVmZmVySW50ZXJmYWNlPiYgdGVzdF9mcmFtZSkgeworICByZXR1cm4gQ3JvcEFuZFpvb20o
Q2FsY3VsYXRlQ3JvcFJlZ2lvbihyZWZlcmVuY2VfZnJhbWUsIHRlc3RfZnJhbWUpLAorICAgICAg
ICAgICAgICAgICAgICAgcmVmZXJlbmNlX2ZyYW1lKTsKK30KKworcnRjOjpzY29wZWRfcmVmcHRy
PFZpZGVvPiBBZGp1c3RDcm9wcGluZygKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8Vmlk
ZW8+JiByZWZlcmVuY2VfdmlkZW8sCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVv
PiYgdGVzdF92aWRlbykgeworICBjbGFzcyBDcm9wcGVkVmlkZW8gOiBwdWJsaWMgcnRjOjpSZWZD
b3VudGVkT2JqZWN0PFZpZGVvPiB7CisgICBwdWJsaWM6CisgICAgQ3JvcHBlZFZpZGVvKGNvbnN0
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4mIHJlZmVyZW5jZV92aWRlbywKKyAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgdGVzdF92aWRlbykKKyAgICAg
ICAgOiByZWZlcmVuY2VfdmlkZW9fKHJlZmVyZW5jZV92aWRlbyksIHRlc3RfdmlkZW9fKHRlc3Rf
dmlkZW8pIHsKKyAgICAgIFJUQ19DSEVDS19FUShyZWZlcmVuY2VfdmlkZW8tPm51bWJlcl9vZl9m
cmFtZXMoKSwKKyAgICAgICAgICAgICAgICAgICB0ZXN0X3ZpZGVvLT5udW1iZXJfb2ZfZnJhbWVz
KCkpOworICAgICAgUlRDX0NIRUNLX0VRKHJlZmVyZW5jZV92aWRlby0+d2lkdGgoKSwgdGVzdF92
aWRlby0+d2lkdGgoKSk7CisgICAgICBSVENfQ0hFQ0tfRVEocmVmZXJlbmNlX3ZpZGVvLT5oZWln
aHQoKSwgdGVzdF92aWRlby0+aGVpZ2h0KCkpOworICAgIH0KKworICAgIGludCB3aWR0aCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRlc3RfdmlkZW9fLT53aWR0aCgpOyB9CisgICAgaW50IGhl
aWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRlc3RfdmlkZW9fLT5oZWlnaHQoKTsgfQor
ICAgIHNpemVfdCBudW1iZXJfb2ZfZnJhbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgICAgcmV0
dXJuIHRlc3RfdmlkZW9fLT5udW1iZXJfb2ZfZnJhbWVzKCk7CisgICAgfQorCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IEdldEZyYW1lKAorICAgICAgICBzaXpl
X3QgaW5kZXgpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0
cjxJNDIwQnVmZmVySW50ZXJmYWNlPiByZWZlcmVuY2VfZnJhbWUgPQorICAgICAgICAgIHJlZmVy
ZW5jZV92aWRlb18tPkdldEZyYW1lKGluZGV4KTsKKworICAgICAgLy8gT25seSBjYWxjdWxhdGUg
Y3JvcHBpbmcgcmVnaW9uIG9uY2UgcGVyIGZyYW1lIHNpbmNlIGl0J3MgZXhwZW5zaXZlLgorICAg
ICAgaWYgKCFjcm9wX3JlZ2lvbnNfLmNvdW50KGluZGV4KSkgeworICAgICAgICBjcm9wX3JlZ2lv
bnNfW2luZGV4XSA9CisgICAgICAgICAgICBDYWxjdWxhdGVDcm9wUmVnaW9uKHJlZmVyZW5jZV9m
cmFtZSwgdGVzdF92aWRlb18tPkdldEZyYW1lKGluZGV4KSk7CisgICAgICB9CisKKyAgICAgIHJl
dHVybiBDcm9wQW5kWm9vbShjcm9wX3JlZ2lvbnNfW2luZGV4XSwgcmVmZXJlbmNlX2ZyYW1lKTsK
KyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVv
PiByZWZlcmVuY2VfdmlkZW9fOworICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4g
dGVzdF92aWRlb187CisgICAgLy8gTXV0YWJsZSBzaW5jZSB0aGlzIGlzIGEgY2FjaGUgdGhhdCBh
ZmZlY3RzIHBlcmZvcm1hbmNlIGFuZCBub3QgbG9naWNhbAorICAgIC8vIGJlaGF2aW9yLgorICAg
IG11dGFibGUgc3RkOjptYXA8c2l6ZV90LCBDcm9wUmVnaW9uPiBjcm9wX3JlZ2lvbnNfOworICB9
OworCisgIHJldHVybiBuZXcgQ3JvcHBlZFZpZGVvKHJlZmVyZW5jZV92aWRlbywgdGVzdF92aWRl
byk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
dG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVy
L3ZpZGVvX2dlb21ldHJ5X2FsaWduZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzY2N2IwZDEzNWRhMjYzZWU0
MGQwMDAyZjBiNDkzN2YxZGE2ZTZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVv
X2dlb21ldHJ5X2FsaWduZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogIENvcHlyaWdodCAo
YykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2lmbmRlZiBSVENfVE9PTFNfRlJBTUVfQU5BTFlaRVJfVklERU9fR0VPTUVUUllfQUxJ
R05FUl9IXworI2RlZmluZSBSVENfVE9PTFNfRlJBTUVfQU5BTFlaRVJfVklERU9fR0VPTUVUUllf
QUxJR05FUl9IXworCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oIgor
I2luY2x1ZGUgInJ0Y190b29scy92aWRlb19maWxlX3JlYWRlci5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworc3RydWN0IENyb3BSZWdpb24geworICAvLyBFYWNo
IHZhbHVlIHJlcHJlc2VudHMgaG93IG11Y2ggdG8gY3JvcCBmcm9tIGVhY2ggc2lkZS4gTGVmdCBp
cyB3aGVyZSB4PTAsCisgIC8vIGFuZCB0b3AgaXMgd2hlcmUgeT0wLiBBbGwgdmFsdWVzIGVxdWFs
IHRvIHplcm8gcmVwcmVzZW50cyBubyBjcm9wcGluZy4KKyAgaW50IGxlZnQgPSAwOworICBpbnQg
cmlnaHQgPSAwOworICBpbnQgdG9wID0gMDsKKyAgaW50IGJvdHRvbSA9IDA7Cit9OworCisvLyBD
cm9wcyBhbmQgem9vbXMgaW4gb24gdGhlIGNyb3BwZWQgcmVnaW9uIHNvIHRoYXQgdGhlIHJldHVy
bmVkIGZyYW1lIGhhcyB0aGUKKy8vIHNhbWUgcmVzb2x1dGlvbiBhcyB0aGUgaW5wdXQgZnJhbWUu
CitydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gQ3JvcEFuZFpvb20oCisg
ICAgY29uc3QgQ3JvcFJlZ2lvbiYgY3JvcF9yZWdpb24sCisgICAgY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+JiBmcmFtZSk7CisKKy8vIENhbGN1bGF0ZSB0aGUg
b3B0aW1hbCBjcm9wcGluZyByZWdpb24gb24gdGhlIHJlZmVyZW5jZSBmcmFtZSB0byBtYXhpbWl6
ZSBTU0lNCisvLyB0byB0aGUgdGVzdCBmcmFtZS4KK0Nyb3BSZWdpb24gQ2FsY3VsYXRlQ3JvcFJl
Z2lvbigKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4m
IHJlZmVyZW5jZV9mcmFtZSwKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZl
ckludGVyZmFjZT4mIHRlc3RfZnJhbWUpOworCisvLyBSZXR1cm5zIGEgY3JvcHBlZCBhbmQgem9v
bWVkIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jZSBmcmFtZSB0aGF0IG1hdGNoZXMgdXAKKy8vIHRv
IHRoZSB0ZXN0IGZyYW1lLiBUaGlzIGlzIGEgc2ltcGxlIGhlbHBlciBmdW5jdGlvbiBvbiB0b3Ag
b2YKKy8vIENhbGN1bGF0ZUNyb3BSZWdpb24oKSBhbmQgQ3JvcEFuZFpvb20oKS4KK3J0Yzo6c2Nv
cGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBBZGp1c3RDcm9wcGluZygKKyAgICBjb25z
dCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHJlZmVyZW5jZV9mcmFt
ZSwKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHRl
c3RfZnJhbWUpOworCisvLyBSZXR1cm5zIGEgY3JvcHBlZCBhbmQgem9vbWVkIHZlcnNpb24gb2Yg
dGhlIHJlZmVyZW5jZSB2aWRlbyB0aGF0IG1hdGNoZXMgdXAKKy8vIHRvIHRoZSB0ZXN0IHZpZGVv
LiBGcmFtZXMgYXJlIGluZGl2aWR1YWxseSBhZGp1c3RlZCBmb3IgY3JvcHBpbmcuCitydGM6OnNj
b3BlZF9yZWZwdHI8VmlkZW8+IEFkanVzdENyb3BwaW5nKAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVk
X3JlZnB0cjxWaWRlbz4mIHJlZmVyZW5jZV92aWRlbywKKyAgICBjb25zdCBydGM6OnNjb3BlZF9y
ZWZwdHI8VmlkZW8+JiB0ZXN0X3ZpZGVvKTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBSVENfVE9PTFNfRlJBTUVfQU5BTFlaRVJf
VklERU9fR0VPTUVUUllfQUxJR05FUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2dl
b21ldHJ5X2FsaWduZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxp
Z25lcl91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjZmNzc3MmUxYjkyMDQ2ZTkwMGRmYjQwYTNh
ZmM2YTVmN2JkMTViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5
X2FsaWduZXJfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5
X2FsaWduZXIuaCIKKworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgInJ0Y190b29scy9m
cmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lzLmgiCisjaW5jbHVkZSAicnRjX3Rv
b2xzL3ZpZGVvX2ZpbGVfcmVhZGVyLmgiCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorI2luY2x1
ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
bmFtZXNwYWNlIHRlc3QgeworCitjbGFzcyBWaWRlb0dlb21ldHJ5QWxpZ25lclRlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZvaWQgU2V0VXAoKSB7CisgICAg
cmVmZXJlbmNlX3ZpZGVvXyA9CisgICAgICAgIE9wZW5ZdXZGaWxlKFJlc291cmNlUGF0aCgiZm9y
ZW1hbl8xMjh4OTYiLCAieXV2IiksIDEyOCwgOTYpOworICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5j
ZV92aWRlb18pOworCisgICAgLy8gVmVyeSBzaW1wbGUgNHg0IGZyYW1lIHVzZWQgZm9yIHZlcnlp
bmcgQ3JvcEFuZFpvb20uCisgICAgY29uc3QgdWludDhfdCBkYXRhX3lbXSA9IHswLCAxLCAyLCAg
MywgIDQsICA1LCAgNiwgIDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA5LCAx
MCwgMTEsIDEyLCAxMywgMTQsIDE1fTsKKyAgICBjb25zdCB1aW50OF90IGRhdGFfdVtdID0gezAs
IDEsIDIsIDN9OworICAgIGNvbnN0IHVpbnQ4X3QgZGF0YV92W10gPSB7MCwgMSwgMiwgM307Cisg
ICAgdGVzdF9mcmFtZV8gPSBJNDIwQnVmZmVyOjpDb3B5KAorICAgICAgICAvKiB3aWR0aD0gKi8g
NCwgLyogaGVpZ2h0PSAqLyA0LCBkYXRhX3ksIC8qIHN0cmlkZV95PSAqLyA0LCBkYXRhX3UsCisg
ICAgICAgIC8qIHN0cmlkZV91PSAqLyAyLCBkYXRhX3YsIC8qIHN0cmlkZV92PSAqLyAyKTsKKyAg
fQorCisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4gcmVmZXJlbmNlX3ZpZGVvXzsKKyAgcnRj
OjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IHRlc3RfZnJhbWVfOworfTsKKwor
Ly8gVGVhY2ggZ3Rlc3QgaG93IHRvIGNvbXBhcmUgQ3JvcFJlZ2lvbnMuCitib29sIG9wZXJhdG9y
PT0oY29uc3QgQ3JvcFJlZ2lvbiYgYSwgY29uc3QgQ3JvcFJlZ2lvbiYgYikgeworICByZXR1cm4g
YS5sZWZ0ID09IGIubGVmdCAmJiBhLnRvcCA9PSBiLnRvcCAmJiBhLnJpZ2h0ID09IGIucmlnaHQg
JiYKKyAgICAgICAgIGEuYm90dG9tID09IGIuYm90dG9tOworfQorCitURVNUX0YoVmlkZW9HZW9t
ZXRyeUFsaWduZXJUZXN0LCBDcm9wQW5kWm9vbUlkZW50aXR5KSB7CisgIGNvbnN0IHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBmcmFtZSA9CisgICAgICByZWZlcmVuY2Vf
dmlkZW9fLT5HZXRGcmFtZSgwKTsKKworICAvLyBBc3N1bWUgcGVyZmVjdCBtYXRjaCwgaS5lLiBT
U0lNID09IDEuCisgIENyb3BSZWdpb24gaWRlbnRpdHlfcmVnaW9uOworICBFWFBFQ1RfRVEoMS4w
LCBTc2ltKGZyYW1lLCBDcm9wQW5kWm9vbShpZGVudGl0eV9yZWdpb24sIGZyYW1lKSkpOworfQor
CitURVNUX0YoVmlkZW9HZW9tZXRyeUFsaWduZXJUZXN0LCBDcm9wQW5kWm9vbUxlZnQpIHsKKyAg
Q3JvcFJlZ2lvbiByZWdpb247CisgIHJlZ2lvbi5sZWZ0ID0gMjsKKyAgY29uc3QgcnRjOjpzY29w
ZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGNyb3BwZWRfZnJhbWUgPQorICAgICAgQ3Jv
cEFuZFpvb20ocmVnaW9uLCB0ZXN0X2ZyYW1lXyk7CisgIEVYUEVDVF9FUShzdGQ6OnZlY3Rvcjx1
aW50OF90PigKKyAgICAgICAgICAgICAgICB7MiwgMiwgMywgMywgNiwgNiwgNywgNywgMTAsIDEw
LCAxMSwgMTEsIDE0LCAxNCwgMTUsIDE1fSksCisgICAgICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50
OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhWSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JvcHBlZF9mcmFtZS0+RGF0YVkoKSArIDE2KSk7CisgIEVYUEVDVF9FUSgKKyAgICAg
IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHsxLCAxLCAzLCAzfSksCisgICAgICBzdGQ6OnZlY3Rvcjx1
aW50OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhVSgpLCBjcm9wcGVkX2ZyYW1lLT5EYXRhVSgpICsg
NCkpOworICBFWFBFQ1RfRVEoCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pih7MSwgMSwgMywg
M30pLAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oY3JvcHBlZF9mcmFtZS0+RGF0YVYoKSwg
Y3JvcHBlZF9mcmFtZS0+RGF0YVYoKSArIDQpKTsKK30KKworVEVTVF9GKFZpZGVvR2VvbWV0cnlB
bGlnbmVyVGVzdCwgQ3JvcEFuZFpvb21Ub3ApIHsKKyAgQ3JvcFJlZ2lvbiByZWdpb247CisgIHJl
Z2lvbi50b3AgPSAyOworICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVy
ZmFjZT4gY3JvcHBlZF9mcmFtZSA9CisgICAgICBDcm9wQW5kWm9vbShyZWdpb24sIHRlc3RfZnJh
bWVfKTsKKyAgRVhQRUNUX0VRKHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KAorICAgICAgICAgICAgICAg
IHs4LCA5LCAxMCwgMTEsIDEwLCAxMSwgMTIsIDEzLCAxMiwgMTMsIDE0LCAxNSwgMTIsIDEzLCAx
NCwgMTV9KSwKKyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUt
PkRhdGFZKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9wcGVkX2ZyYW1l
LT5EYXRhWSgpICsgMTYpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhf
dD4oezIsIDMsIDIsIDN9KSwKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJh
bWUtPkRhdGFVKCksIGNyb3BwZWRfZnJhbWUtPkRhdGFVKCkgKyA0KSk7CisgIEVYUEVDVF9FUSgK
KyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHsyLCAzLCAyLCAzfSksCisgICAgICBzdGQ6OnZl
Y3Rvcjx1aW50OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhVigpLCBjcm9wcGVkX2ZyYW1lLT5EYXRh
VigpICsgNCkpOworfQorCitURVNUX0YoVmlkZW9HZW9tZXRyeUFsaWduZXJUZXN0LCBDcm9wQW5k
Wm9vbVJpZ2h0KSB7CisgIENyb3BSZWdpb24gcmVnaW9uOworICByZWdpb24ucmlnaHQgPSAyOwor
ICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gY3JvcHBlZF9m
cmFtZSA9CisgICAgICBDcm9wQW5kWm9vbShyZWdpb24sIHRlc3RfZnJhbWVfKTsKKyAgRVhQRUNU
X0VRKHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KAorICAgICAgICAgICAgICAgIHswLCAwLCAxLCAxLCA0
LCA0LCA1LCA1LCA4LCA4LCA5LCA5LCAxMiwgMTIsIDEzLCAxM30pLAorICAgICAgICAgICAgc3Rk
Ojp2ZWN0b3I8dWludDhfdD4oY3JvcHBlZF9mcmFtZS0+RGF0YVkoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyb3BwZWRfZnJhbWUtPkRhdGFZKCkgKyAxNikpOworICBFWFBF
Q1RfRVEoCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pih7MCwgMCwgMiwgMn0pLAorICAgICAg
c3RkOjp2ZWN0b3I8dWludDhfdD4oY3JvcHBlZF9mcmFtZS0+RGF0YVUoKSwgY3JvcHBlZF9mcmFt
ZS0+RGF0YVUoKSArIDQpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhf
dD4oezAsIDAsIDIsIDJ9KSwKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJh
bWUtPkRhdGFWKCksIGNyb3BwZWRfZnJhbWUtPkRhdGFWKCkgKyA0KSk7Cit9CisKK1RFU1RfRihW
aWRlb0dlb21ldHJ5QWxpZ25lclRlc3QsIENyb3BBbmRab29tQm90dG9tKSB7CisgIENyb3BSZWdp
b24gcmVnaW9uOworICByZWdpb24uYm90dG9tID0gMjsKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVm
cHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGNyb3BwZWRfZnJhbWUgPQorICAgICAgQ3JvcEFuZFpv
b20ocmVnaW9uLCB0ZXN0X2ZyYW1lXyk7CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0ZDo6dmVjdG9y
PHVpbnQ4X3Q+KHswLCAxLCAyLCAzLCAyLCAzLCA0LCA1LCA0LCA1LCA2LCA3LCA0LCA1LCA2LCA3
fSksCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhWSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JvcHBlZF9mcmFtZS0+RGF0YVkoKSArIDE2KSk7
CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHswLCAxLCAwLCAxfSks
CisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhVSgpLCBjcm9w
cGVkX2ZyYW1lLT5EYXRhVSgpICsgNCkpOworICBFWFBFQ1RfRVEoCisgICAgICBzdGQ6OnZlY3Rv
cjx1aW50OF90Pih7MCwgMSwgMCwgMX0pLAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oY3Jv
cHBlZF9mcmFtZS0+RGF0YVYoKSwgY3JvcHBlZF9mcmFtZS0+RGF0YVYoKSArIDQpKTsKK30KKwor
VEVTVF9GKFZpZGVvR2VvbWV0cnlBbGlnbmVyVGVzdCwgQ2FsY3VsYXRlQ3JvcFJlZ2lvbklkZW50
aXR5KSB7CisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBm
cmFtZSA9CisgICAgICByZWZlcmVuY2VfdmlkZW9fLT5HZXRGcmFtZSgwKTsKKyAgQ3JvcFJlZ2lv
biBpZGVudGl0eV9yZWdpb247CisgIEVYUEVDVF9FUShpZGVudGl0eV9yZWdpb24sIENhbGN1bGF0
ZUNyb3BSZWdpb24oZnJhbWUsIGZyYW1lKSk7Cit9CisKK1RFU1RfRihWaWRlb0dlb21ldHJ5QWxp
Z25lclRlc3QsIENhbGN1bGF0ZUNyb3BSZWdpb25BcmJpdHJhcnkpIHsKKyAgLy8gQXJiaXRyYXJ5
IGNyb3AgcmVnaW9uLgorICBDcm9wUmVnaW9uIGNyb3BfcmVnaW9uOworICBjcm9wX3JlZ2lvbi5s
ZWZ0ID0gMjsKKyAgY3JvcF9yZWdpb24udG9wID0gNDsKKyAgY3JvcF9yZWdpb24ucmlnaHQgPSA1
OworICBjcm9wX3JlZ2lvbi5ib3R0b20gPSAzOworCisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0
cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBmcmFtZSA9CisgICAgICByZWZlcmVuY2VfdmlkZW9fLT5H
ZXRGcmFtZSgwKTsKKworICBFWFBFQ1RfRVEoY3JvcF9yZWdpb24sCisgICAgICAgICAgICBDYWxj
dWxhdGVDcm9wUmVnaW9uKGZyYW1lLCBDcm9wQW5kWm9vbShjcm9wX3JlZ2lvbiwgZnJhbWUpKSk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9v
bHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fcXVhbGl0eV9hbmFseXNpcy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci92
aWRlb19xdWFsaXR5X2FuYWx5c2lzLmNjCmluZGV4IDFjMzBkMDhjNTY1NTFiYTM5NTFjZGMzY2Zm
NGYwZWQzNzYxNmIzMjkuLjQwMDI2ODAyYzc3NDNkYTg0MTI5NDIwOWJkYWFiZjFlZTgyMjBhYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lzLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9h
bmFseXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lzLmNjCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPG51bWVyaWM+CiAKKyNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9wZXJmX3Rlc3QuaCIKICNp
bmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvY29tcGFyZS5oIgogI2lu
Y2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9jb252ZXJ0LmgiCkBAIC01
NiwxNiArNTcsMTEgQEAgc3RkOjp2ZWN0b3I8QW5hbHlzaXNSZXN1bHQ+IFJ1bkFuYWx5c2lzKAog
ICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OnRlc3Q6OlZpZGVvPiYgdGVzdF92
aWRlbywKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiB0ZXN0X2ZyYW1lX2luZGljZXMp
IHsKICAgc3RkOjp2ZWN0b3I8QW5hbHlzaXNSZXN1bHQ+IHJlc3VsdHM7Ci0gIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdGVzdF9mcmFtZV9pbmRpY2VzLnNpemUoKTsgKytpKSB7Ci0gICAgLy8gSWdu
b3JlIGR1cGxpY2F0ZWQgZnJhbWVzIGluIHRoZSB0ZXN0IHZpZGVvLgotICAgIGlmIChpID4gMCAm
JiB0ZXN0X2ZyYW1lX2luZGljZXNbaV0gPT0gdGVzdF9mcmFtZV9pbmRpY2VzW2kgLSAxXSkKLSAg
ICAgIGNvbnRpbnVlOwotCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdF92aWRlby0+bnVt
YmVyX29mX2ZyYW1lcygpOyArK2kpIHsKICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQy
MEJ1ZmZlckludGVyZmFjZT4mIHRlc3RfZnJhbWUgPQogICAgICAgICB0ZXN0X3ZpZGVvLT5HZXRG
cmFtZShpKTsKICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFj
ZT4mIHJlZmVyZW5jZV9mcmFtZSA9Ci0gICAgICAgIHJlZmVyZW5jZV92aWRlby0+R2V0RnJhbWUo
dGVzdF9mcmFtZV9pbmRpY2VzW2ldICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWZlcmVuY2VfdmlkZW8tPm51bWJlcl9vZl9mcmFtZXMoKSk7CisgICAgICAgIHJlZmVyZW5j
ZV92aWRlby0+R2V0RnJhbWUoaSk7CiAKICAgICAvLyBGaWxsIGluIHRoZSByZXN1bHQgc3RydWN0
LgogICAgIEFuYWx5c2lzUmVzdWx0IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRl
b190ZW1wb3JhbF9hbGlnbmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3RlbXBvcmFsX2FsaWduZXIu
Y2MKaW5kZXggMmViZmZiYzRlNzViM2JlNDAwZDllZDhkNGQ2ODQ0ODFkYWIxY2U4MC4uZmEyNWY3
M2Y4ZTE0NDhjODdkNDBkNzc5OWUyZDkwMTFlOGQwNDNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVy
L3ZpZGVvX3RlbXBvcmFsX2FsaWduZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3RlbXBvcmFs
X2FsaWduZXIuY2MKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGQ6OnZlY3RvcjxzaXplX3Q+IEZpbmRN
YXRjaGluZ0ZyYW1lSW5kaWNlcygKIAogcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiBSZW9yZGVy
VmlkZW8oY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgdmlkZW8sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiBp
bmRpY2VzKSB7Ci0gIHJldHVybiBuZXcgUmVvcmRlcmVkVmlkZW8odmlkZW8sIGluZGljZXMpOwor
ICByZXR1cm4gbmV3IFJlb3JkZXJlZFZpZGVvKG5ldyBMb29waW5nVmlkZW8odmlkZW8pLCBpbmRp
Y2VzKTsKIH0KIAogcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiBHZW5lcmF0ZUFsaWduZWRSZWZl
cmVuY2VWaWRlbygKQEAgLTIyOCw3ICsyMjgsNyBAQCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+
IEdlbmVyYXRlQWxpZ25lZFJlZmVyZW5jZVZpZGVvKAogcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVv
PiBHZW5lcmF0ZUFsaWduZWRSZWZlcmVuY2VWaWRlbygKICAgICBjb25zdCBydGM6OnNjb3BlZF9y
ZWZwdHI8VmlkZW8+JiByZWZlcmVuY2VfdmlkZW8sCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2l6
ZV90PiYgaW5kaWNlcykgewotICByZXR1cm4gUmVvcmRlclZpZGVvKG5ldyBMb29waW5nVmlkZW8o
cmVmZXJlbmNlX3ZpZGVvKSwgaW5kaWNlcyk7CisgIHJldHVybiBSZW9yZGVyVmlkZW8ocmVmZXJl
bmNlX3ZpZGVvLCBpbmRpY2VzKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHRlc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9u
ZXR3b3JrX3Rlc3Rlci9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci9CVUlMRC5nbgppbmRleCBhNTAzNmRj
ZWE5Y2QxODYwMDFkOGQ0OTNmNDEyNTc1MDA5MmU3MmI2Li40N2I4MTQzMDQ3MmIxNzk1NzRiMDU2
YTMzZmFlZDhiMDY2MjRkYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvbmV0d29ya190ZXN0ZXIvQlVJTEQuZ24KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdv
cmtfdGVzdGVyL0JVSUxELmduCkBAIC02LDggKzYsOCBAQAogIyBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CiAjIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogCi1pbXBvcnQo
Ii4uLy4uL3dlYnJ0Yy5nbmkiKQogaW1wb3J0KCIvL3RoaXJkX3BhcnR5L3Byb3RvYnVmL3Byb3Rv
X2xpYnJhcnkuZ25pIikKK2ltcG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCiAKIGlmIChydGNfZW5h
YmxlX3Byb3RvYnVmKSB7CiAgIHByb3RvX2xpYnJhcnkoIm5ldHdvcmtfdGVzdGVyX2NvbmZpZ19w
cm90byIpIHsKQEAgLTQ0LDYgKzQ0LDcgQEAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAg
ICAgICIuLi8uLi9wMnAiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgICAi
Li4vLi4vcnRjX2Jhc2U6cHJvdG9idWZfdXRpbHMiLAorICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0
Y19iYXNlIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAg
ICAiLi4vLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAogICAgICAgIi4uLy4uL3J0Y19iYXNl
OnNlcXVlbmNlZF90YXNrX2NoZWNrZXIiLApAQCAtODAsNyArODEsNyBAQCBpZiAocnRjX2VuYWJs
ZV9wcm90b2J1ZikgewogCiAgICAgZGVwcyA9IFsKICAgICAgICI6bmV0d29ya190ZXN0ZXIiLAot
ICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKKyAgICAgICIuLi8u
Li9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgICAgICIuLi8uLi90ZXN0OmZpbGV1dGlscyIs
CiAgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGluZy9ndGVz
dCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfdG9vbHMvbmV0d29ya190ZXN0ZXIvdGVzdF9jb250cm9sbGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVy
L3Rlc3RfY29udHJvbGxlci5jYwppbmRleCBlNWJkOTJlZmE5M2M2ZGIxNTUwNTQ4YWI2Mjg4NzVm
MjU5YjViMDgxLi45YmZkZmE3NzMyYzgyMGU4NjAxOWZkOTEzMTgwODM0YzE4ODRjMGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9v
bHMvbmV0d29ya190ZXN0ZXIvdGVzdF9jb250cm9sbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci90ZXN0
X2NvbnRyb2xsZXIuY2MKQEAgLTEwLDYgKzEwLDkgQEAKIAogI2luY2x1ZGUgInJ0Y190b29scy9u
ZXR3b3JrX3Rlc3Rlci90ZXN0X2NvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgImFic2wvdHlwZXMv
b3B0aW9uYWwuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKKwogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKIFRlc3RDb250cm9sbGVyOjpUZXN0Q29udHJvbGxlcihpbnQgbWluX3BvcnQsCkBA
IC0yNCwxNyArMjcsMTUgQEAgVGVzdENvbnRyb2xsZXI6OlRlc3RDb250cm9sbGVyKGludCBtaW5f
cG9ydCwKICAgUlRDX0RDSEVDS19SVU5fT04oJnRlc3RfY29udHJvbGxlcl90aHJlYWRfY2hlY2tl
cl8pOwogICBwYWNrZXRfc2VuZGVyX2NoZWNrZXJfLkRldGFjaCgpOwogICBzZW5kX2RhdGFfLmZp
bGwoNDIpOwotICBhdXRvIHNvY2tldCA9CisgIHVkcF9zb2NrZXRfID0KICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0Pihzb2NrZXRfZmFjdG9yeV8uQ3JlYXRlVWRw
U29ja2V0KAogICAgICAgICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyhydGM6OkdldEFueUlQKEFGX0lO
RVQpLCAwKSwgbWluX3BvcnQsIG1heF9wb3J0KSk7Ci0gIHNvY2tldC0+U2lnbmFsUmVhZFBhY2tl
dC5jb25uZWN0KHRoaXMsICZUZXN0Q29udHJvbGxlcjo6T25SZWFkUGFja2V0KTsKLSAgdWRwX3Ry
YW5zcG9ydF8ucmVzZXQoCi0gICAgICBuZXcgY3JpY2tldDo6VWRwVHJhbnNwb3J0KCJuZXR3b3Jr
IHRlc3RlciB0cmFuc3BvcnQiLCBzdGQ6Om1vdmUoc29ja2V0KSkpOworICB1ZHBfc29ja2V0Xy0+
U2lnbmFsUmVhZFBhY2tldC5jb25uZWN0KHRoaXMsICZUZXN0Q29udHJvbGxlcjo6T25SZWFkUGFj
a2V0KTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6U2VuZENvbm5lY3RUbyhjb25zdCBzdGQ6
OnN0cmluZyYgaG9zdG5hbWUsIGludCBwb3J0KSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ0ZXN0
X2NvbnRyb2xsZXJfdGhyZWFkX2NoZWNrZXJfKTsKLSAgdWRwX3RyYW5zcG9ydF8tPlNldFJlbW90
ZUFkZHJlc3MocnRjOjpTb2NrZXRBZGRyZXNzKGhvc3RuYW1lLCBwb3J0KSk7CisgIHJlbW90ZV9h
ZGRyZXNzXyA9IHJ0Yzo6U29ja2V0QWRkcmVzcyhob3N0bmFtZSwgcG9ydCk7CiAgIE5ldHdvcmtU
ZXN0ZXJQYWNrZXQgcGFja2V0OwogICBwYWNrZXQuc2V0X3R5cGUoTmV0d29ya1Rlc3RlclBhY2tl
dDo6SEFORF9TSEFLSU5HKTsKICAgU2VuZERhdGEocGFja2V0LCBhYnNsOjpudWxsb3B0KTsKQEAg
LTU3LDggKzU4LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6U2VuZERhdGEoY29uc3QgTmV0d29y
a1Rlc3RlclBhY2tldCYgcGFja2V0LAogICBwYWNrZXQuU2VyaWFsaXplVG9BcnJheSgmc2VuZF9k
YXRhX1sxXSwgc3RkOjpudW1lcmljX2xpbWl0czxjaGFyPjo6bWF4KCkpOwogICBpZiAoZGF0YV9z
aXplICYmICpkYXRhX3NpemUgPiBwYWNrZXRfc2l6ZSkKICAgICBwYWNrZXRfc2l6ZSA9ICpkYXRh
X3NpemU7Ci0gIHVkcF90cmFuc3BvcnRfLT5TZW5kUGFja2V0KHNlbmRfZGF0YV8uZGF0YSgpLCBw
YWNrZXRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRPcHRp
b25zKCksIDApOworICB1ZHBfc29ja2V0Xy0+U2VuZFRvKChjb25zdCB2b2lkKilzZW5kX2RhdGFf
LmRhdGEoKSwgcGFja2V0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2FkZHJl
c3NfLCBydGM6OlBhY2tldE9wdGlvbnMoKSk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6Ok9u
VGVzdERvbmUoKSB7CkBAIC04MCw3ICs4MSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6Ok9uUmVh
ZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tl
dF90aW1lX3VzKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ0ZXN0X2NvbnRyb2xsZXJfdGhyZWFk
X2NoZWNrZXJfKTsKICAgc2l6ZV90IHBhY2tldF9zaXplID0gZGF0YVswXTsKICAgc3RkOjpzdHJp
bmcgcmVjZWl2ZV9kYXRhKCZkYXRhWzFdLCBwYWNrZXRfc2l6ZSk7CkBAIC05MSw3ICs5Miw3IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0
KiBzb2NrZXQsCiAgICAgY2FzZSBOZXR3b3JrVGVzdGVyUGFja2V0OjpIQU5EX1NIQUtJTkc6IHsK
ICAgICAgIE5ldHdvcmtUZXN0ZXJQYWNrZXQgcGFja2V0OwogICAgICAgcGFja2V0LnNldF90eXBl
KE5ldHdvcmtUZXN0ZXJQYWNrZXQ6OlRFU1RfU1RBUlQpOwotICAgICAgdWRwX3RyYW5zcG9ydF8t
PlNldFJlbW90ZUFkZHJlc3MocmVtb3RlX2FkZHIpOworICAgICAgcmVtb3RlX2FkZHJlc3NfID0g
cmVtb3RlX2FkZHI7CiAgICAgICBTZW5kRGF0YShwYWNrZXQsIGFic2w6Om51bGxvcHQpOwogICAg
ICAgcGFja2V0X3NlbmRlcl8ucmVzZXQobmV3IFBhY2tldFNlbmRlcih0aGlzLCBjb25maWdfZmls
ZV9wYXRoXykpOwogICAgICAgcGFja2V0X3NlbmRlcl8tPlN0YXJ0U2VuZGluZygpOwpAQCAtMTA5
LDcgKzExMCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6Ok9uUmVhZFBhY2tldChydGM6OkFzeW5j
UGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOZXR3
b3JrVGVzdGVyUGFja2V0OjpURVNUX0RBVEE6IHsKLSAgICAgIHBhY2tldC5zZXRfYXJyaXZhbF90
aW1lc3RhbXAocGFja2V0X3RpbWUudGltZXN0YW1wKTsKKyAgICAgIHBhY2tldC5zZXRfYXJyaXZh
bF90aW1lc3RhbXAocGFja2V0X3RpbWVfdXMpOwogICAgICAgcGFja2V0LnNldF9wYWNrZXRfc2l6
ZShsZW4pOwogICAgICAgcGFja2V0X2xvZ2dlcl8uTG9nUGFja2V0KHBhY2tldCk7CiAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci90ZXN0X2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9uZXR3b3JrX3Rlc3Rl
ci90ZXN0X2NvbnRyb2xsZXIuaAppbmRleCBjZjY1ZTE3NDU5NTYxNjk5NWYzZmQzODczMjM0ZTA5
MmIwOGZjMzhkLi5hNjUyNzJhMDlkMWViNDBhNWYwYjkwZjUzN2VmN2I4YmI2MjIyMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9v
bHMvbmV0d29ya190ZXN0ZXIvdGVzdF9jb250cm9sbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVyL3Rlc3Rf
Y29udHJvbGxlci5oCkBAIC0xOCw3ICsxOCw3IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2lu
Y2x1ZGUgInAycC9iYXNlL2Jhc2ljcGFja2V0c29ja2V0ZmFjdG9yeS5oIgotI2luY2x1ZGUgInAy
cC9iYXNlL3VkcHRyYW5zcG9ydC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcGFja2V0c29j
a2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2lnbm9yZV93dW5kZWYuaCIKICNpbmNsdWRlICJydGNfdG9vbHMvbmV0d29ya190
ZXN0ZXIvcGFja2V0X2xvZ2dlci5oIgpAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBUZXN0Q29udHJv
bGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOwor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAgIHJ0
Yzo6VGhyZWFkQ2hlY2tlciB0ZXN0X2NvbnRyb2xsZXJfdGhyZWFkX2NoZWNrZXJfOwogICBydGM6
OlNlcXVlbmNlZFRhc2tDaGVja2VyIHBhY2tldF9zZW5kZXJfY2hlY2tlcl87CiAgIHJ0Yzo6QmFz
aWNQYWNrZXRTb2NrZXRGYWN0b3J5IHNvY2tldF9mYWN0b3J5XzsKQEAgLTcwLDcgKzcwLDggQEAg
Y2xhc3MgVGVzdENvbnRyb2xsZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICBi
b29sIGxvY2FsX3Rlc3RfZG9uZV8gUlRDX0dVQVJERURfQlkobG9jYWxfdGVzdF9kb25lX2xvY2tf
KTsKICAgYm9vbCByZW1vdGVfdGVzdF9kb25lXzsKICAgc3RkOjphcnJheTxjaGFyLCBrRXRoZXJu
ZXRNdHU+IHNlbmRfZGF0YV87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpVZHBUcmFuc3Bv
cnQ+IHVkcF90cmFuc3BvcnRfOworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNv
Y2tldD4gdWRwX3NvY2tldF87CisgIHJ0Yzo6U29ja2V0QWRkcmVzcyByZW1vdGVfYWRkcmVzc187
CiAgIHN0ZDo6dW5pcXVlX3B0cjxQYWNrZXRTZW5kZXI+IHBhY2tldF9zZW5kZXJfOwogCiAgIFJU
Q19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGVzdENvbnRyb2xsZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL3VucGFj
a19hZWNkdW1wL3VucGFjay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y190b29scy91bnBhY2tfYWVjZHVtcC91bnBhY2suY2MKaW5kZXggNGM3NTYwOGU3
NDg4YTYwNDM1ZmMxMWNmMTQ0ODk2NjZhMjhjNjNjYS4uMTQyYjQ5NzMwYTM2MTcwYjY1NzYxNzRh
NWI3MzEyMjhmZDY1N2JhMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL3VucGFja19hZWNkdW1wL3VucGFjay5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvdW5wYWNr
X2FlY2R1bXAvdW5wYWNrLmNjCkBAIC0yOSwyNyArMjksMzQgQEAgUlRDX1BVU0hfSUdOT1JJTkdf
V1VOREVGKCkKIFJUQ19QT1BfSUdOT1JJTkdfV1VOREVGKCkKIAogLy8gVE9ETyhhbmRyZXcpOiB1
bnBhY2sgbW9yZSBvZiB0aGUgZGF0YS4KLURFRklORV9zdHJpbmcoaW5wdXRfZmlsZSwgImlucHV0
IiwgIlRoZSBuYW1lIG9mIHRoZSBpbnB1dCBzdHJlYW0gZmlsZS4iKTsKLURFRklORV9zdHJpbmco
b3V0cHV0X2ZpbGUsCi0gICAgICAgICAgICAgICJyZWZfb3V0IiwKLSAgICAgICAgICAgICAgIlRo
ZSBuYW1lIG9mIHRoZSByZWZlcmVuY2Ugb3V0cHV0IHN0cmVhbSBmaWxlLiIpOwotREVGSU5FX3N0
cmluZyhyZXZlcnNlX2ZpbGUsCi0gICAgICAgICAgICAgICJyZXZlcnNlIiwKLSAgICAgICAgICAg
ICAgIlRoZSBuYW1lIG9mIHRoZSByZXZlcnNlIGlucHV0IHN0cmVhbSBmaWxlLiIpOwotREVGSU5F
X3N0cmluZyhkZWxheV9maWxlLCAiZGVsYXkuaW50MzIiLCAiVGhlIG5hbWUgb2YgdGhlIGRlbGF5
IGZpbGUuIik7Ci1ERUZJTkVfc3RyaW5nKGRyaWZ0X2ZpbGUsICJkcmlmdC5pbnQzMiIsICJUaGUg
bmFtZSBvZiB0aGUgZHJpZnQgZmlsZS4iKTsKLURFRklORV9zdHJpbmcobGV2ZWxfZmlsZSwgImxl
dmVsLmludDMyIiwgIlRoZSBuYW1lIG9mIHRoZSBsZXZlbCBmaWxlLiIpOwotREVGSU5FX3N0cmlu
ZyhrZXlwcmVzc19maWxlLCAia2V5cHJlc3MuYm9vbCIsICJUaGUgbmFtZSBvZiB0aGUga2V5cHJl
c3MgZmlsZS4iKTsKLURFRklORV9zdHJpbmcoY2FsbG9yZGVyX2ZpbGUsCi0gICAgICAgICAgICAg
ICJjYWxsb3JkZXIiLAotICAgICAgICAgICAgICAiVGhlIG5hbWUgb2YgdGhlIHJlbmRlci9jYXB0
dXJlIGNhbGwgb3JkZXIgZmlsZS4iKTsKLURFRklORV9zdHJpbmcoc2V0dGluZ3NfZmlsZSwgInNl
dHRpbmdzLnR4dCIsICJUaGUgbmFtZSBvZiB0aGUgc2V0dGluZ3MgZmlsZS4iKTsKLURFRklORV9i
b29sKGZ1bGwsIGZhbHNlLCAiVW5wYWNrIHRoZSBmdWxsIHNldCBvZiBmaWxlcyAobm9ybWFsbHkg
bm90IG5lZWRlZCkuIik7Ci1ERUZJTkVfYm9vbChyYXcsIGZhbHNlLCAiV3JpdGUgcmF3IGRhdGEg
aW5zdGVhZCBvZiBhIFdBViBmaWxlLiIpOwotREVGSU5FX2Jvb2wodGV4dCwKLSAgICAgICAgICAg
IGZhbHNlLAotICAgICAgICAgICAgIldyaXRlIG5vbi1hdWRpbyBmaWxlcyBhcyB0ZXh0IGZpbGVz
IGluc3RlYWQgb2YgYmluYXJ5IGZpbGVzLiIpOwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQ
cmludCB0aGlzIG1lc3NhZ2UuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhpbnB1dF9maWxlLCAi
aW5wdXQiLCAiVGhlIG5hbWUgb2YgdGhlIGlucHV0IHN0cmVhbSBmaWxlLiIpOworV0VCUlRDX0RF
RklORV9zdHJpbmcob3V0cHV0X2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAicmVmX291dCIs
CisgICAgICAgICAgICAgICAgICAgICAiVGhlIG5hbWUgb2YgdGhlIHJlZmVyZW5jZSBvdXRwdXQg
c3RyZWFtIGZpbGUuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhyZXZlcnNlX2ZpbGUsCisgICAg
ICAgICAgICAgICAgICAgICAicmV2ZXJzZSIsCisgICAgICAgICAgICAgICAgICAgICAiVGhlIG5h
bWUgb2YgdGhlIHJldmVyc2UgaW5wdXQgc3RyZWFtIGZpbGUuIik7CitXRUJSVENfREVGSU5FX3N0
cmluZyhkZWxheV9maWxlLCAiZGVsYXkuaW50MzIiLCAiVGhlIG5hbWUgb2YgdGhlIGRlbGF5IGZp
bGUuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhkcmlmdF9maWxlLCAiZHJpZnQuaW50MzIiLCAi
VGhlIG5hbWUgb2YgdGhlIGRyaWZ0IGZpbGUuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhsZXZl
bF9maWxlLCAibGV2ZWwuaW50MzIiLCAiVGhlIG5hbWUgb2YgdGhlIGxldmVsIGZpbGUuIik7CitX
RUJSVENfREVGSU5FX3N0cmluZyhrZXlwcmVzc19maWxlLAorICAgICAgICAgICAgICAgICAgICAg
ImtleXByZXNzLmJvb2wiLAorICAgICAgICAgICAgICAgICAgICAgIlRoZSBuYW1lIG9mIHRoZSBr
ZXlwcmVzcyBmaWxlLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoY2FsbG9yZGVyX2ZpbGUsCisg
ICAgICAgICAgICAgICAgICAgICAiY2FsbG9yZGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICJU
aGUgbmFtZSBvZiB0aGUgcmVuZGVyL2NhcHR1cmUgY2FsbCBvcmRlciBmaWxlLiIpOworV0VCUlRD
X0RFRklORV9zdHJpbmcoc2V0dGluZ3NfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICJzZXR0
aW5ncy50eHQiLAorICAgICAgICAgICAgICAgICAgICAgIlRoZSBuYW1lIG9mIHRoZSBzZXR0aW5n
cyBmaWxlLiIpOworV0VCUlRDX0RFRklORV9ib29sKGZ1bGwsCisgICAgICAgICAgICAgICAgICAg
ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlVucGFjayB0aGUgZnVsbCBzZXQgb2YgZmlsZXMg
KG5vcm1hbGx5IG5vdCBuZWVkZWQpLiIpOworV0VCUlRDX0RFRklORV9ib29sKHJhdywgZmFsc2Us
ICJXcml0ZSByYXcgZGF0YSBpbnN0ZWFkIG9mIGEgV0FWIGZpbGUuIik7CitXRUJSVENfREVGSU5F
X2Jvb2woCisgICAgdGV4dCwKKyAgICBmYWxzZSwKKyAgICAiV3JpdGUgbm9uLWF1ZGlvIGZpbGVz
IGFzIHRleHQgZmlsZXMgaW5zdGVhZCBvZiBiaW5hcnkgZmlsZXMuIik7CitXRUJSVENfREVGSU5F
X2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CiAKICNkZWZpbmUgUFJJ
TlRfQ09ORklHKGZpZWxkX25hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgIGlmIChtc2cuaGFzXyMjZmllbGRfbmFtZSgpKSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtODcsNiArOTQsMTAgQEAgdm9pZCBXcml0ZUNh
bGxPcmRlckRhdGEoY29uc3QgYm9vbCByZW5kZXJfY2FsbCwKICAgV3JpdGVEYXRhKCZjYWxsX3R5
cGUsIHNpemVvZihjYWxsX3R5cGUpLCBmaWxlLCBmaWxlbmFtZS5jX3N0cigpKTsKIH0KIAorYm9v
bCBXcml0aW5nQ2FsbE9yZGVyRmlsZSgpIHsKKyAgcmV0dXJuIEZMQUdfZnVsbDsKK30KKwogfSAg
Ly8gbmFtZXNwYWNlCiAKIGludCBkb19tYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKQEAg
LTEyNSw3ICsxMzYsOSBAQCBpbnQgZG9fbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAK
ICAgcnRjOjpTdHJpbmdCdWlsZGVyIGNhbGxvcmRlcl9yYXdfbmFtZTsKICAgY2FsbG9yZGVyX3Jh
d19uYW1lIDw8IEZMQUdfY2FsbG9yZGVyX2ZpbGUgPDwgIi5jaGFyIjsKLSAgRklMRSogY2FsbG9y
ZGVyX2NoYXJfZmlsZSA9IE9wZW5GaWxlKGNhbGxvcmRlcl9yYXdfbmFtZS5zdHIoKSwgIndiIik7
CisgIEZJTEUqIGNhbGxvcmRlcl9jaGFyX2ZpbGUgPSBXcml0aW5nQ2FsbE9yZGVyRmlsZSgpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBPcGVuRmlsZShjYWxsb3JkZXJfcmF3
X25hbWUuc3RyKCksICJ3YiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBu
dWxscHRyOwogICBGSUxFKiBzZXR0aW5nc19maWxlID0gT3BlbkZpbGUoRkxBR19zZXR0aW5nc19m
aWxlLCAid2IiKTsKIAogICB3aGlsZSAoUmVhZE1lc3NhZ2VGcm9tRmlsZShkZWJ1Z19maWxlLCAm
ZXZlbnRfbXNnKSkgewpAQCAtMTYzLDggKzE3NiwxMCBAQCBpbnQgZG9fbWFpbihpbnQgYXJnYywg
Y2hhciogYXJndltdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyc2VfcmF3X2ZpbGUu
Z2V0KCkpOwogICAgICAgfQogICAgICAgaWYgKEZMQUdfZnVsbCkgewotICAgICAgICBXcml0ZUNh
bGxPcmRlckRhdGEodHJ1ZSAvKiByZW5kZXJfY2FsbCAqLywgY2FsbG9yZGVyX2NoYXJfZmlsZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQUdfY2FsbG9yZGVyX2ZpbGUpOworICAgICAg
ICBpZiAoV3JpdGluZ0NhbGxPcmRlckZpbGUoKSkgeworICAgICAgICAgIFdyaXRlQ2FsbE9yZGVy
RGF0YSh0cnVlIC8qIHJlbmRlcl9jYWxsICovLCBjYWxsb3JkZXJfY2hhcl9maWxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGTEFHX2NhbGxvcmRlcl9maWxlKTsKKyAgICAgICAgfQog
ICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXZlbnRfbXNnLnR5cGUoKSA9PSBFdmVudDo6U1RSRUFN
KSB7CiAgICAgICBmcmFtZV9jb3VudCsrOwpAQCAtMjIyLDggKzIzNywxMCBAQCBpbnQgZG9fbWFp
bihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgICB9CiAKICAgICAgIGlmIChGTEFHX2Z1
bGwpIHsKLSAgICAgICAgV3JpdGVDYWxsT3JkZXJEYXRhKGZhbHNlIC8qIHJlbmRlcl9jYWxsICov
LCBjYWxsb3JkZXJfY2hhcl9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxBR19j
YWxsb3JkZXJfZmlsZSk7CisgICAgICAgIGlmIChXcml0aW5nQ2FsbE9yZGVyRmlsZSgpKSB7Cisg
ICAgICAgICAgV3JpdGVDYWxsT3JkZXJEYXRhKGZhbHNlIC8qIHJlbmRlcl9jYWxsICovLCBjYWxs
b3JkZXJfY2hhcl9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTEFHX2NhbGxv
cmRlcl9maWxlKTsKKyAgICAgICAgfQogICAgICAgICBpZiAobXNnLmhhc19kZWxheSgpKSB7CiAg
ICAgICAgICAgc3RhdGljIEZJTEUqIGRlbGF5X2ZpbGUgPSBPcGVuRmlsZShGTEFHX2RlbGF5X2Zp
bGUsICJ3YiIpOwogICAgICAgICAgIGludDMyX3QgZGVsYXkgPSBtc2cuZGVsYXkoKTsKQEAgLTM1
OSw5ICszNzYsMTEgQEAgaW50IGRvX21haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAg
ICAgICBvdXRwdXRfd2F2X2ZpbGUucmVzZXQobmV3IFdhdldyaXRlcigKICAgICAgICAgICAgIG91
dHB1dF9uYW1lLnN0cigpLCBvdXRwdXRfc2FtcGxlX3JhdGUsIG51bV9vdXRwdXRfY2hhbm5lbHMp
KTsKIAotICAgICAgICBydGM6OlN0cmluZ0J1aWxkZXIgY2FsbG9yZGVyX25hbWU7Ci0gICAgICAg
IGNhbGxvcmRlcl9uYW1lIDw8IEZMQUdfY2FsbG9yZGVyX2ZpbGUgPDwgZnJhbWVfY291bnQgPDwg
Ii5jaGFyIjsKLSAgICAgICAgY2FsbG9yZGVyX2NoYXJfZmlsZSA9IE9wZW5GaWxlKGNhbGxvcmRl
cl9uYW1lLnN0cigpLCAid2IiKTsKKyAgICAgICAgaWYgKFdyaXRpbmdDYWxsT3JkZXJGaWxlKCkp
IHsKKyAgICAgICAgICBydGM6OlN0cmluZ0J1aWxkZXIgY2FsbG9yZGVyX25hbWU7CisgICAgICAg
ICAgY2FsbG9yZGVyX25hbWUgPDwgRkxBR19jYWxsb3JkZXJfZmlsZSA8PCBmcmFtZV9jb3VudCA8
PCAiLmNoYXIiOworICAgICAgICAgIGNhbGxvcmRlcl9jaGFyX2ZpbGUgPSBPcGVuRmlsZShjYWxs
b3JkZXJfbmFtZS5zdHIoKSwgIndiIik7CisgICAgICAgIH0KICAgICAgIH0KICAgICB9CiAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y190b29scy92aWRlb19hbmFseXNpcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y190b29scy92aWRlb19hbmFseXNpcy5weQppbmRleCBhNWQyNjdiMGIy
OWEzYTMwNmNlNjk2YjVkY2U3YmZhOTY0ODA4ZWNkLi4wYzIyNjE3ZWNmMjEwYmE3ODdhZTk5ODI1
Y2I1NzQ3MDYzMTM0MzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvdmlkZW9fYW5hbHlzaXMucHkKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL3ZpZGVvX2FuYWx5c2lz
LnB5CkBAIC03OSw3ICs3OSw3IEBAIGRlZiBfUGFyc2VBcmdzKCk6CiAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J1BhdGggdG8gdGhlIGZyYW1lIGFuYWx5emVyIGV4ZWN1dGFibGUuJwogICAgICAg
ICAgICAgICAgICAgICAnRGVmYXVsdDogJWRlZmF1bHQnKQogICBwYXJzZXIuYWRkX29wdGlvbign
LS16eGluZ19wYXRoJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0n
UGF0aCB0byB0aGUgemVicmEgeGluZyBiYXJjb2RlIGFuYWx5emVyLicpCisgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J0RFUFJFQ0FURUQuJykKICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tcmVmX3Jl
Y19kaXInLCB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PSdyZWYnLAogICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdQYXRoIHRvIHdoZXJlIHJlZmVyZW5jZSByZWNvcmRpbmdzIHdpbGwgYmUgY3JlYXRl
ZC4nCiAgICAgICAgICAgICAgICAgICAgICdJZGVhbGx5IGtlZXAgdGhlIHJlZiBhbmQgdGVzdCBk
aXJlY3RvcmllcyBvbiBzZXBhcmF0ZScKQEAgLTExOCw4ICsxMTgsNiBAQCBkZWYgX1BhcnNlQXJn
cygpOgogICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQhJykKICAgaWYgbm90IG9zLnBhdGgu
aXNmaWxlKG9wdGlvbnMuZnJhbWVfYW5hbHl6ZXIpOgogICAgIHBhcnNlci53YXJuaW5nKCdDYW5u
b3QgZmluZCBmcmFtZV9hbmFseXplciwgbm8gbWV0cmljcyB3aWxsIGJlIGdlbmVyYXRlZCEnKQot
ICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3B0aW9ucy56eGluZ19wYXRoKToKLSAgICBwYXJzZXIu
d2FybmluZygnQ2Fubm90IGZpbmQgWmVicmEgWGluZywgbm8gbWV0cmljcyB3aWxsIGJlIGdlbmVy
YXRlZCEnKQogCiAgIHJldHVybiBvcHRpb25zCiAKQEAgLTQ0MiwxMiArNDQwLDYgQEAgZGVmIENv
bXBhcmVWaWRlb3Mob3B0aW9ucywgY3JvcHBlZF9yZWZfZmlsZSwgY3JvcHBlZF90ZXN0X2ZpbGUp
OgogICAgICctLXJlZl92aWRlbz0lcycgJSBjcm9wcGVkX3JlZl9maWxlLAogICAgICctLXRlc3Rf
dmlkZW89JXMnICUgY3JvcHBlZF90ZXN0X2ZpbGUsCiAgICAgJy0tZnJhbWVfYW5hbHl6ZXI9JXMn
ICUgb3MucGF0aC5hYnNwYXRoKG9wdGlvbnMuZnJhbWVfYW5hbHl6ZXIpLAotICAgICctLXp4aW5n
X3BhdGg9JXMnICUgb3B0aW9ucy56eGluZ19wYXRoLAotICAgICctLWZmbXBlZ19wYXRoPSVzJyAl
IG9wdGlvbnMuZmZtcGVnLAotICAgICctLXN0YXRzX2ZpbGVfcmVmPSVzX3N0YXRzLnR4dCcgJQot
ICAgICAgICBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGNyb3BwZWRfcmVmX2ZpbGUpLCBj
cm9wcGVkX3JlZl9maWxlKSwKLSAgICAnLS1zdGF0c19maWxlX3Rlc3Q9JXNfc3RhdHMudHh0JyAl
Ci0gICAgICAgIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoY3JvcHBlZF90ZXN0X2ZpbGUp
LCBjcm9wcGVkX3Rlc3RfZmlsZSksCiAgICAgJy0teXV2X2ZyYW1lX2hlaWdodD0lZCcgJSBjcm9w
X2hlaWdodCwKICAgICAnLS15dXZfZnJhbWVfd2lkdGg9JWQnICUgY3JvcF93aWR0aAogICBdCkBA
IC00NzIsNyArNDY0LDYgQEAgZGVmIG1haW4oKToKICAgICAtLWFwcF9uYW1lIEFwcFJUQ01vYmls
ZSBcCiAgICAgLS1mZm1wZWcgLi9mZm1wZWcgLS1yZWZfdmlkZW9fZGV2aWNlPS9kZXYvdmlkZW8w
IFwKICAgICAtLXRlc3RfdmlkZW9fZGV2aWNlPS9kZXYvdmlkZW8xIFwKLSAgICAtLXp4aW5nX3Bh
dGggLi96eGluZyBcCiAgICAgLS10ZXN0X2Nyb3BfcGFyYW1ldGVycyAnY3JvcD05NTA6NDIwOjEz
MDo1NicgXAogICAgIC0tcmVmX2Nyb3BfcGFyYW1ldGVycyAnaGZsaXAsIGNyb3A9OTUwOjQyMDox
MzA6NTYnIFwKICAgICAtLXJlZl9yZWNfZGlyIC90bXAvcmVmIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9CVUlMRC5nbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9CVUlMRC5nbgppbmRleCBi
NGYxOTNkMWYzMjZhNmE1NTBiMzIxMTFhNTBhOTljNGU5MDJiNjg1Li42MGVhNDczNGU5NTIwYzE4
MWRiNTFhY2U0YTdlMzdhMDA2MjFlMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL0JVSUxELmduCkBAIC04LDggKzgsOCBAQAog
CiBpbXBvcnQoIi4uL3dlYnJ0Yy5nbmkiKQogaWYgKGlzX2lvcykgewotICBpbXBvcnQoIi8vYnVp
bGQvY29uZmlnL2lvcy9ydWxlcy5nbmkiKQogICBpbXBvcnQoIi8vYnVpbGQvY29uZmlnL2lvcy9p
b3Nfc2RrLmduaSIpCisgIGltcG9ydCgiLy9idWlsZC9jb25maWcvaW9zL3J1bGVzLmduaSIpCiB9
CiBpZiAoaXNfbWFjKSB7CiAgIGltcG9ydCgiLy9idWlsZC9jb25maWcvbWFjL3J1bGVzLmduaSIp
CkBAIC00MCw2ICs0MCw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAib2JqYy9G
cmFtZXdvcmsvSGVhZGVycyIsICAjIFRPRE8oYnVncy53ZWJydGMub3JnLzk2MjcpOiBSZW1vdmUg
dGhpcy4KICAgICBdCiAgICAgY2ZsYWdzID0gWworICAgICAgIi1XaW1wbGljaXQtcmV0YWluLXNl
bGYiLAogICAgICAgIi1Xc3RyaWN0LW92ZXJmbG93IiwKICAgICAgICItV21pc3NpbmctZmllbGQt
aW5pdGlhbGl6ZXJzIiwKICAgICBdCkBAIC0yNjIsNiArMjYzLDggQEAgaWYgKGlzX2lvcyB8fCBp
c19tYWMpIHsKICAgICAgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3MiLAogICAgICAg
ICBdCiAKKyAgICAgICAgbGlicyA9IFsgIkF1ZGlvVG9vbGJveC5mcmFtZXdvcmsiIF0KKwogICAg
ICAgICBpZiAoaXNfY2xhbmcpIHsKICAgICAgICAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20g
dGhlIENocm9taXVtIENsYW5nIHBsdWdpbgogICAgICAgICAgICMgKGJ1Z3Mud2VicnRjLm9yZy8x
NjMpLgpAQCAtMjg3LDYgKzI5MCw4IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAKICAgICAg
ICAgcHVibGljX2NvbmZpZ3MgPSBbICI6Y29tbW9uX2NvbmZpZ19vYmpjIiBdCiAKKyAgICAgICAg
bGlicyA9IFsgIkFWRm91bmRhdGlvbi5mcmFtZXdvcmsiIF0KKwogICAgICAgICBkZXBzID0gWwog
ICAgICAgICAgICI6YXVkaW9fc2Vzc2lvbl9vYnNlcnZlciIsCiAgICAgICAgICAgIjpiYXNlX29i
amMiLApAQCAtNzU2LDggKzc2MSw4IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICBk
ZXBzID0gWwogICAgICAgICAiOmJhc2Vfb2JqYyIsCiAgICAgICAgICI6aGVscGVyc19vYmpjIiwK
KyAgICAgICAgIi4uL2FwaS92aWRlbzplbmNvZGVkX2ltYWdlIiwKICAgICAgICAgIi4uL2FwaS92
aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCi0gICAgICAgICIuLi9jb21tb25fdmlkZW8i
LAogICAgICAgICAiLi4vbW9kdWxlczptb2R1bGVfYXBpIiwKICAgICAgICAgIi4uL21vZHVsZXMv
dmlkZW9fY29kaW5nOnZpZGVvX2NvZGVjX2ludGVyZmFjZSIsCiAgICAgICAgICIuLi9ydGNfYmFz
ZTpydGNfYmFzZSIsCkBAIC03OTMsNiArNzk4LDggQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsK
ICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24rUHJpdmF0
ZS5oIiwKICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24u
aCIsCiAgICAgICAgICJvYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENDb25maWd1cmF0aW9uLm1t
IiwKKyAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlvbnMuaCIs
CisgICAgICAgICJvYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENDcnlwdG9PcHRpb25zLm1tIiwK
ICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0RhdGFDaGFubmVsK1ByaXZhdGUu
aCIsCiAgICAgICAgICJvYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENEYXRhQ2hhbm5lbC5oIiwK
ICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0RhdGFDaGFubmVsLm1tIiwKQEAg
LTkwMyw2ICs5MTAsNyBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgICAgICAiOnZpZGVv
cmVuZGVyZXJhZGFwdGVyX29iamMiLAogICAgICAgICAiOnZpZGVvc291cmNlX29iamMiLAogICAg
ICAgICAiOnZpZGVvdG9vbGJveF9vYmpjIiwKKyAgICAgICAgIi4uL2FwaTpjcmVhdGVfcGVlcmNv
bm5lY3Rpb25fZmFjdG9yeSIsCiAgICAgICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0
aW9uX2FwaSIsCiAgICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGki
LAogICAgICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2RlY29kZXJfZmFj
dG9yeSIsCkBAIC05MTMsOSArOTIxLDkgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICAg
ICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKICAgICAgICAgIi4uL21vZHVsZXM6bW9kdWxl
X2FwaSIsCiAgICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfYXBp
IiwKKyAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAgICAi
Li4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgICAi
Li4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKLSAgICAgICAg
Ii4uL3BjOmNyZWF0ZV9wY19mYWN0b3J5IiwKICAgICAgICAgIi4uL3BjOnBlZXJjb25uZWN0aW9u
IiwKICAgICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgICAgICIuLi9ydGNfYmFzZTpy
dGNfYmFzZSIsCkBAIC0xMDMxLDYgKzEwMzksNyBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewog
ICAgICAgICAgICAgIm9iamMvdW5pdHRlc3RzL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeV94Y3Rl
c3QubSIsCiAgICAgICAgICAgICAib2JqYy91bml0dGVzdHMvZnJhbWVfYnVmZmVyX2hlbHBlcnMu
aCIsCiAgICAgICAgICAgICAib2JqYy91bml0dGVzdHMvZnJhbWVfYnVmZmVyX2hlbHBlcnMubW0i
LAorICAgICAgICAgICAgIm9iamMvdW5pdHRlc3RzL25hbHVfcmV3cml0ZXJfeGN0ZXN0Lm1tIiwK
ICAgICAgICAgICBdCiAKICAgICAgICAgICAjIFRPRE8ocGV0ZXJoYW5zcGVycyk6IFJlZW5hYmxl
IHRoZXNlIHRlc3RzIG9uIHNpbXVsYXRvci4KQEAgLTEwNTMsNiArMTA2Miw3IEBAIGlmIChpc19p
b3MgfHwgaXNfbWFjKSB7CiAgICAgICAgICAgICAiOm5hdGl2ZV9hcGlfYXVkaW9fZGV2aWNlX21v
ZHVsZSIsCiAgICAgICAgICAgICAiOm5hdGl2ZV92aWRlbyIsCiAgICAgICAgICAgICAiOnBlZXJj
b25uZWN0aW9uZmFjdG9yeV9iYXNlX29iamMiLAorICAgICAgICAgICAgIjp2aWRlb190b29sYm94
X2NjIiwKICAgICAgICAgICAgICI6dmlkZW9jYXB0dXJlX29iamMiLAogICAgICAgICAgICAgIjp2
aWRlb2NvZGVjX29iamMiLAogICAgICAgICAgICAgIjp2aWRlb2ZyYW1lYnVmZmVyX29iamMiLApA
QCAtMTA2Myw4ICsxMDczLDggQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICAgICAgICAg
ICIuLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCiAgICAgICAgICAgICAiLi4vbWVkaWE6cnRjX21l
ZGlhX3Rlc3RzX3V0aWxzIiwKICAgICAgICAgICAgICIuLi9tb2R1bGVzOm1vZHVsZV9hcGkiLAor
ICAgICAgICAgICAgIi4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICAgICAgICAgIi4u
L3J0Y19iYXNlOnJ0Y19iYXNlIiwKLSAgICAgICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90
ZXN0c191dGlscyIsCiAgICAgICAgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOnN5c3RlbV93cmFw
cGVycyIsCiAgICAgICAgICAgICAiLy90aGlyZF9wYXJ0eS9saWJ5dXYiLAogICAgICAgICAgIF0K
QEAgLTEwOTgsNyArMTEwOCw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAgIHJ0
Y19pb3NfeGN0ZXN0X3Rlc3QoInNka191bml0dGVzdHMiKSB7CiAgICAgICAgICAgaW5mb19wbGlz
dCA9ICIvL3Rlc3QvaW9zL0luZm8ucGxpc3QiCiAgICAgICAgICAgc291cmNlcyA9IFsKLSAgICAg
ICAgICAgICJvYmpjL3VuaXR0ZXN0cy9tYWluLm0iLAorICAgICAgICAgICAgIm9iamMvdW5pdHRl
c3RzL21haW4ubW0iLAogICAgICAgICAgIF0KIAogICAgICAgICAgIF9idW5kbGVfaWRfc3VmZml4
ID0gaW9zX2dlbmVyaWNfdGVzdF9idW5kbGVfaWRfc3VmZml4CkBAIC0xMTA3LDYgKzExMTcsNyBA
QCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgICAgICAgICAgIjpwZWVyY29ubmVjdGlvbmZh
Y3RvcnlfYmFzZV9vYmpjIiwKICAgICAgICAgICAgICI6c2RrX3VuaXR0ZXN0c19idW5kbGVfZGF0
YSIsCiAgICAgICAgICAgICAiOnNka191bml0dGVzdHNfc291cmNlcyIsCisgICAgICAgICAgICAi
Ly90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAgICAgXQogICAgICAgICAgIGxkZmxhZ3MgPSBb
ICItYWxsX2xvYWQiIF0KICAgICAgICAgfQpAQCAtMTExNiw3ICsxMTI3LDcgQEAgaWYgKGlzX2lv
cyB8fCBpc19tYWMpIHsKICAgICAgICAgICBpbmZvX3BsaXN0ID0gIi8vdGVzdC9pb3MvSW5mby5w
bGlzdCIKICAgICAgICAgICBzb3VyY2VzID0gWwogICAgICAgICAgICAgIm9iamMvdW5pdHRlc3Rz
L1JUQ0RvTm90UHV0Q1BsdXNQbHVzSW5GcmFtZXdvcmtIZWFkZXJzX3hjdGVzdC5tIiwKLSAgICAg
ICAgICAgICJvYmpjL3VuaXR0ZXN0cy9tYWluLm0iLAorICAgICAgICAgICAgIm9iamMvdW5pdHRl
c3RzL21haW4ubW0iLAogICAgICAgICAgIF0KIAogICAgICAgICAgIF9idW5kbGVfaWRfc3VmZml4
ID0gaW9zX2dlbmVyaWNfdGVzdF9idW5kbGVfaWRfc3VmZml4CkBAIC0xMTI0LDYgKzExMzUsNyBA
QCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgICAgICAgIGRlcHMgPSBbCiAgICAgICAgICAg
ICAiOmZyYW1ld29ya19vYmpjK2xpbmsiLAogICAgICAgICAgICAgIjppb3NfZnJhbWV3b3JrX2J1
bmRsZSIsCisgICAgICAgICAgICAiLy90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAgICAgXQog
ICAgICAgICB9CiAgICAgICB9CkBAIC0xMTcwLDYgKzExODIsNyBAQCBpZiAoaXNfaW9zIHx8IGlz
X21hYykgewogICAgICAgICAgICI6dmlkZW9mcmFtZWJ1ZmZlcl9vYmpjIiwKICAgICAgICAgICAi
OnZpZGVvc291cmNlX29iamMiLAogICAgICAgICAgICI6dmlkZW90b29sYm94X29iamMiLAorICAg
ICAgICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgICAgICAg
Ii4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCiAgICAgICAgICAgIi4uL2Fw
aS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkiLAogICAgICAgICAg
ICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5IiwKQEAg
LTExNzcsMTEgKzExOTAsMTIgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICAgICAgICAi
Li4vbWVkaWE6cnRjX21lZGlhX2Jhc2UiLAogICAgICAgICAgICIuLi9tb2R1bGVzOm1vZHVsZV9h
cGkiLAogICAgICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfYXBp
IiwKKyAgICAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgICAg
ICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKICAgICAg
ICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKLSAg
ICAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAorICAgICAgICAgICIu
Li9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgICAgICAgICAiLi4vcnRjX2Jhc2Uvc3lzdGVt
OnVudXNlZCIsCi0gICAgICAgICAgIi8vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgICAgICAgICIu
Li90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAgICAgIi8vdGhpcmRfcGFydHkvb2Ntb2NrIiwK
ICAgICAgICAgXQogCkBAIC0xMjY5LDYgKzEyODMsNyBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykg
ewogICAgICAgICAgICJvYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENTZXNzaW9uRGVzY3JpcHRp
b24uaCIsCiAgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1RyYWNpbmcuaCIs
CiAgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NlcnRpZmljYXRlLmgiLAor
ICAgICAgICAgICJvYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENDcnlwdG9PcHRpb25zLmgiLAog
ICAgICAgICAgICJvYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb1NvdXJjZS5oIiwKICAg
ICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9UcmFjay5oIiwKICAgICAg
ICAgICAib2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5oIiwKQEAg
LTEzNTcsNiArMTM3Miw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAgICAgIm9i
amMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0F1ZGlvVHJhY2suaCIsCiAgICAgICAgICAgIm9iamMv
YXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NlcnRpZmljYXRlLmgiLAogICAgICAgICAgICJvYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENDb25maWd1cmF0aW9uLmgiLAorICAgICAgICAgICJvYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENDcnlwdG9PcHRpb25zLmgiLAogICAgICAgICAgICJvYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENEYXRhQ2hhbm5lbC5oIiwKICAgICAgICAgICAib2JqYy9hcGkv
cGVlcmNvbm5lY3Rpb24vUlRDRGF0YUNoYW5uZWxDb25maWd1cmF0aW9uLmgiLAogICAgICAgICAg
ICJvYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENEdG1mU2VuZGVyLmgiLApAQCAtMTU5MCw3ICsx
NjA2LDEwIEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgfQogCiAgICAgcnRjX3N0YXRp
Y19saWJyYXJ5KCJ2aWRlb190b29sYm94X2NjIikgewotICAgICAgdmlzaWJpbGl0eSA9IFsgIjp2
aWRlb3Rvb2xib3hfb2JqYyIgXQorICAgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIjp2aWRl
b3Rvb2xib3hfb2JqYyIsCisgICAgICAgICI6c2RrX3VuaXR0ZXN0c19zb3VyY2VzIiwKKyAgICAg
IF0KICAgICAgIHNvdXJjZXMgPSBbCiAgICAgICAgICJvYmpjL2NvbXBvbmVudHMvdmlkZW9fY29k
ZWMvaGVscGVycy5jYyIsCiAgICAgICAgICJvYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVs
cGVycy5oIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KaW5k
ZXggMmQ5NThiNzZkYmU3ODMxNzI3OWI0NzBmNGVmYjNmY2FkOGI4M2JkOS4uNjVlZWZhMzZmMmRm
YjIwNjllY2NhN2NhYTQ5MjI0YjI2Mjk1NWJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMubW0KQEAgLTI5LDggKzI5LDkgQEAKICNpbXBvcnQgIldlYlJUQy9S
VENWaWRlb0NvZGVjSDI2NC5oIgogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmgi
Ci0jaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJv
bS5oIgogI2luY2x1ZGUgIm5hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIuaCIKKyNpbmNsdWRl
ICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvY29udmVydF9mcm9tLmgiCisjaW5j
bHVkZSAid2VicnRjL3J0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgIkZyYW1ld29yay9IZWFk
ZXJzL1dlYlJUQy9SVENWaWRlb0NvZGVjRmFjdG9yeS5oIgogI2luY2x1ZGUgIkZyYW1ld29yay9I
ZWFkZXJzL1dlYlJUQy9SVENWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWV3b3JrL0hlYWRl
cnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL0JVSUxELmduIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvQlVJTEQu
Z24KaW5kZXggNjNjNWJkMjBjMTA0MzZiMDAwMDMyYjEwMjVlZjY5MzU5N2JhYjg2Yy4uZWRjNWRh
MzBiNzlkYTc2M2RiYzc0MzA0ZGYzOWFjYjc5N2NjZjA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvQlVJTEQuZ24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
QlVJTEQuZ24KQEAgLTcsOSArNyw5IEBACiAjIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogCiBpZiAoaXNfYW5kcm9pZCkgewotICBp
bXBvcnQoIi4uLy4uL3dlYnJ0Yy5nbmkiKQogICBpbXBvcnQoIi8vYnVpbGQvY29uZmlnL2FuZHJv
aWQvY29uZmlnLmduaSIpCiAgIGltcG9ydCgiLy9idWlsZC9jb25maWcvYW5kcm9pZC9ydWxlcy5n
bmkiKQorICBpbXBvcnQoIi4uLy4uL3dlYnJ0Yy5nbmkiKQogCiAgIGdyb3VwKCJhbmRyb2lkIikg
ewogICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19hbmRyb2lkKSB7CkBAIC0zOCw2
ICszOCw3IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgZGVwcyA9IFsKICAgICAgICI6YXVkaW9f
YXBpX2phdmEiLAogICAgICAgIjpiYXNlX2phdmEiLAorICAgICAgIjpidWlsdGluX2F1ZGlvX2Nv
ZGVjc19qYXZhIiwKICAgICAgICI6Y2FtZXJhX2phdmEiLAogICAgICAgIjpkZWZhdWx0X3ZpZGVv
X2NvZGVjX2ZhY3RvcnlfamF2YSIsCiAgICAgICAiOmZpbGV2aWRlb19qYXZhIiwKQEAgLTExMCwy
MyArMTExLDIyIEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgcHVibGljX2RlcHMgPSBbICAjIG5v
LXByZXN1Ym1pdC1jaGVjayBUT0RPKHdlYnJ0Yzo4NjAzKQogICAgICAgIjphdWRpb19qbmkiLAog
ICAgICAgIjpiYXNlX2puaSIsCisgICAgICAiOmJ1aWx0aW5fYXVkaW9fY29kZWNzX2puaSIsCisg
ICAgICAiOmRlZmF1bHRfdmlkZW9fY29kZWNfZmFjdG9yeV9qbmkiLAogICAgICAgIjpqYXZhX2F1
ZGlvX2RldmljZV9tb2R1bGVfam5pIiwKKyAgICAgICI6bGVnYWN5X2h3Y29kZWNzX2puaSIsCiAg
ICAgICAiOm1lZGlhX2puaSIsCiAgICAgICAiOnBlZXJjb25uZWN0aW9uX2puaSIsCiAgICAgICAi
OnZpZGVvX2puaSIsCi0gICAgICAiLi4vLi4vcGM6Y3JlYXRlX3BjX2ZhY3RvcnkiLAorICAgICAg
Ii4uLy4uL2FwaTpjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeSIsCiAgICAgXQogICB9CiAK
ICAgcnRjX3N0YXRpY19saWJyYXJ5KCJsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fbWV0cmljc19k
ZWZhdWx0X2puaSIpIHsKICAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQotCi0gICAgYWxsb3dfcG9p
c29uID0gWyAic29mdHdhcmVfdmlkZW9fY29kZWNzIiBdICAjIFRPRE8oYnVncy53ZWJydGMub3Jn
Lzc5MjUpOiBSZW1vdmUuCi0KICAgICBzb3VyY2VzID0gWwogICAgICAgInNyYy9qbmkvYW5kcm9p
ZG1ldHJpY3MuY2MiLAogICAgIF0KLQogICAgIGRlcHMgPSBbCiAgICAgICAiOmJhc2Vfam5pIiwK
ICAgICAgICI6Z2VuZXJhdGVkX21ldHJpY3Nfam5pIiwKQEAgLTIwNCw3ICsyMDQsMTEgQEAgaWYg
KGlzX2FuZHJvaWQpIHsKICAgfQogCiAgIHJ0Y19hbmRyb2lkX2xpYnJhcnkoImF1ZGlvX2FwaV9q
YXZhIikgewotICAgIGphdmFfZmlsZXMgPSBbICJhcGkvb3JnL3dlYnJ0Yy9hdWRpby9BdWRpb0Rl
dmljZU1vZHVsZS5qYXZhIiBdCisgICAgamF2YV9maWxlcyA9IFsKKyAgICAgICJhcGkvb3JnL3dl
YnJ0Yy9hdWRpby9BdWRpb0RldmljZU1vZHVsZS5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0
Yy9BdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeS5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0
Yy9BdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeS5qYXZhIiwKKyAgICBdCiAKICAgICBkZXBzID0g
WwogICAgICAgIjpiYXNlX2phdmEiLApAQCAtMjUwLDYgKzI1NCw3IEBAIGlmIChpc19hbmRyb2lk
KSB7CiAgICAgICAiYXBpL29yZy93ZWJydGMvVmlkZW9GcmFtZURyYXdlci5qYXZhIiwKICAgICAg
ICJhcGkvb3JnL3dlYnJ0Yy9ZdXZDb252ZXJ0ZXIuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJy
dGMvWXV2SGVscGVyLmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL1RpbWVzdGFtcEFsaWdu
ZXIuamF2YSIsCiAgICAgICAic3JjL2phdmEvb3JnL3dlYnJ0Yy9FZ2xCYXNlMTAuamF2YSIsCiAg
ICAgICAic3JjL2phdmEvb3JnL3dlYnJ0Yy9FZ2xCYXNlMTQuamF2YSIsCiAgICAgICAic3JjL2ph
dmEvb3JnL3dlYnJ0Yy9HbEdlbmVyaWNEcmF3ZXIuamF2YSIsCkBAIC0yNzYsOSArMjgxLDExIEBA
IGlmIChpc19hbmRyb2lkKSB7CiAgICAgICAiYXBpL29yZy93ZWJydGMvQXVkaW9Tb3VyY2UuamF2
YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvQXVkaW9UcmFjay5qYXZhIiwKICAgICAgICJhcGkv
b3JnL3dlYnJ0Yy9DYWxsU2Vzc2lvbkZpbGVSb3RhdGluZ0xvZ1NpbmsuamF2YSIsCisgICAgICAi
YXBpL29yZy93ZWJydGMvQ3J5cHRvT3B0aW9ucy5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0
Yy9EYXRhQ2hhbm5lbC5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9EdG1mU2VuZGVyLmph
dmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0ZlY0NvbnRyb2xsZXJGYWN0b3J5RmFjdG9yeUlu
dGVyZmFjZS5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9NZWRpYVRyYW5zcG9ydEZhY3Rv
cnlGYWN0b3J5LmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0ZyYW1lRGVjcnlwdG9yLmph
dmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0ZyYW1lRW5jcnlwdG9yLmphdmEiLAogICAgICAg
ImFwaS9vcmcvd2VicnRjL0ljZUNhbmRpZGF0ZS5qYXZhIiwKQEAgLTI5NSw2ICszMDIsNyBAQCBp
ZiAoaXNfYW5kcm9pZCkgewogICAgICAgImFwaS9vcmcvd2VicnRjL1BlZXJDb25uZWN0aW9uLmph
dmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL1BlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzLmph
dmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL1BlZXJDb25uZWN0aW9uRmFjdG9yeS5qYXZhIiwK
KyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9SdGNDZXJ0aWZpY2F0ZVBlbS5qYXZhIiwKICAgICAgICJh
cGkvb3JnL3dlYnJ0Yy9SVENTdGF0cy5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9SVENT
dGF0c0NvbGxlY3RvckNhbGxiYWNrLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL1JUQ1N0
YXRzUmVwb3J0LmphdmEiLApAQCAtMzE3LDYgKzMyNSw3IEBAIGlmIChpc19hbmRyb2lkKSB7CiAg
ICAgZGVwcyA9IFsKICAgICAgICI6YXVkaW9fYXBpX2phdmEiLAogICAgICAgIjpiYXNlX2phdmEi
LAorICAgICAgIjpidWlsdGluX2F1ZGlvX2NvZGVjc19qYXZhIiwKICAgICAgICI6ZGVmYXVsdF92
aWRlb19jb2RlY19mYWN0b3J5X2phdmEiLAogICAgICAgIjpsb2dnaW5nX2phdmEiLAogICAgICAg
Ijpzd2NvZGVjc19qYXZhIiwKQEAgLTQyNiw2ICs0MzUsMTcgQEAgaWYgKGlzX2FuZHJvaWQpIHsK
ICAgICBdCiAgIH0KIAorICBydGNfYW5kcm9pZF9saWJyYXJ5KCJidWlsdGluX2F1ZGlvX2NvZGVj
c19qYXZhIikgeworICAgIGphdmFfZmlsZXMgPSBbCisgICAgICAiYXBpL29yZy93ZWJydGMvQnVp
bHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5LmphdmEiLAorICAgICAgImFwaS9vcmcvd2Vi
cnRjL0J1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeS5qYXZhIiwKKyAgICBdCisKKyAg
ICBkZXBzID0gWworICAgICAgIjphdWRpb19hcGlfamF2YSIsCisgICAgXQorICB9CisKICAgcnRj
X2FuZHJvaWRfbGlicmFyeSgic2NyZWVuY2FwdHVyZXJfamF2YSIpIHsKICAgICBqYXZhX2ZpbGVz
ID0gWyAiYXBpL29yZy93ZWJydGMvU2NyZWVuQ2FwdHVyZXJBbmRyb2lkLmphdmEiIF0KIApAQCAt
NDQ5LDE4ICs0NjksNDQgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBdCiAgIH0KIAorICBydGNf
YW5kcm9pZF9saWJyYXJ5KCJsaWJ2cHhfdnA4X2phdmEiKSB7CisgICAgdmlzaWJpbGl0eSA9IFsg
IioiIF0KKyAgICBqYXZhX2ZpbGVzID0gWworICAgICAgImFwaS9vcmcvd2VicnRjL0xpYnZweFZw
OERlY29kZXIuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvTGlidnB4VnA4RW5jb2Rlci5q
YXZhIiwKKyAgICBdCisgICAgZGVwcyA9IFsKKyAgICAgICI6YmFzZV9qYXZhIiwKKyAgICAgICI6
dmlkZW9fYXBpX2phdmEiLAorICAgICAgIjp2aWRlb19qYXZhIiwKKyAgICAgICIvL3J0Y19iYXNl
OmJhc2VfamF2YSIsCisgICAgXQorICB9CisKKyAgcnRjX2FuZHJvaWRfbGlicmFyeSgibGlidnB4
X3ZwOV9qYXZhIikgeworICAgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgICAgamF2YV9maWxlcyA9
IFsKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDlEZWNvZGVyLmphdmEiLAorICAgICAg
ImFwaS9vcmcvd2VicnRjL0xpYnZweFZwOUVuY29kZXIuamF2YSIsCisgICAgXQorICAgIGRlcHMg
PSBbCisgICAgICAiOmJhc2VfamF2YSIsCisgICAgICAiOnZpZGVvX2FwaV9qYXZhIiwKKyAgICAg
ICI6dmlkZW9famF2YSIsCisgICAgICAiLy9ydGNfYmFzZTpiYXNlX2phdmEiLAorICAgIF0KKyAg
fQorCiAgIHJ0Y19hbmRyb2lkX2xpYnJhcnkoInN3Y29kZWNzX2phdmEiKSB7CiAgICAgamF2YV9m
aWxlcyA9IFsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9Tb2Z0d2FyZVZpZGVvRGVjb2RlckZhY3Rv
cnkuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0VuY29kZXJGYWN0
b3J5LmphdmEiLAotICAgICAgInNyYy9qYXZhL29yZy93ZWJydGMvVlA4RW5jb2Rlci5qYXZhIiwK
LSAgICAgICJzcmMvamF2YS9vcmcvd2VicnRjL1ZQOERlY29kZXIuamF2YSIsCi0gICAgICAic3Jj
L2phdmEvb3JnL3dlYnJ0Yy9WUDlFbmNvZGVyLmphdmEiLAotICAgICAgInNyYy9qYXZhL29yZy93
ZWJydGMvVlA5RGVjb2Rlci5qYXZhIiwKICAgICBdCiAKICAgICBkZXBzID0gWwogICAgICAgIjpi
YXNlX2phdmEiLAorICAgICAgIjpsaWJ2cHhfdnA4X2phdmEiLAorICAgICAgIjpsaWJ2cHhfdnA5
X2phdmEiLAogICAgICAgIjp2aWRlb19hcGlfamF2YSIsCiAgICAgICAiOnZpZGVvX2phdmEiLAog
ICAgICAgIi8vcnRjX2Jhc2U6YmFzZV9qYXZhIiwKQEAgLTUxMSwyMyArNTU3LDY2IEBAIGlmIChp
c19hbmRyb2lkKSB7CiAKICAgICBkZXBzID0gWwogICAgICAgIjpiYXNlX2puaSIsCisgICAgICAi
OmJ1aWx0aW5fYXVkaW9fY29kZWNzX2puaSIsCiAgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVj
czpidWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeSIsCiAgICAgICAiLi4vLi4vYXBpL2F1ZGlv
X2NvZGVjczpidWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeSIsCisgICAgICAiLi4vLi4vbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKICAgICBdCiAgIH0KIAotICBydGNfc3RhdGljX2xpYnJhcnkoInZpZGVv
X2puaSIpIHsKLSAgICBzb3VyY2VzID0gW10KKyAgcnRjX3N0YXRpY19saWJyYXJ5KCJidWlsdGlu
X2F1ZGlvX2NvZGVjc19qbmkiKSB7CisgICAgc291cmNlcyA9IFsKKyAgICAgICJzcmMvam5pL2J1
aWx0aW5hdWRpb2RlY29kZXJmYWN0b3J5ZmFjdG9yeS5jYyIsCisgICAgICAic3JjL2puaS9idWls
dGluYXVkaW9lbmNvZGVyZmFjdG9yeWZhY3RvcnkuY2MiLAorICAgIF0KKwogICAgIGRlcHMgPSBb
Ci0gICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAgICI6YmFz
ZV9qbmkiLAorICAgICAgIjpnZW5lcmF0ZWRfYnVpbHRpbl9hdWRpb19jb2RlY3Nfam5pIiwKKyAg
ICAgICI6bmF0aXZlX2FwaV9qbmkiLAorICAgICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YnVp
bHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkiLAorICAgICAgIi4uLy4uL2FwaS9hdWRpb19jb2Rl
Y3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLAorICAgICAgIi4uLy4uL3J0Y19iYXNl
OnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICBdCisgIH0KIAotICAgIHNvdXJjZXMgKz0gWworICAj
IENvcnJlc3BvbmRzIHRvIE1lZGlhQ29kZWNWaWRlb0VuY29kZXIvRGVjb2RlciBpbiBKYXZhLgor
ICBydGNfc3RhdGljX2xpYnJhcnkoImxlZ2FjeV9od2NvZGVjc19qbmkiKSB7CisgICAgdmlzaWJp
bGl0eSA9IFsgIioiIF0KKyAgICBhbGxvd19wb2lzb24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2Rl
Y3MiIF0KKyAgICBzb3VyY2VzID0gWwogICAgICAgInNyYy9qbmkvYW5kcm9pZG1lZGlhY29kZWNj
b21tb24uaCIsCiAgICAgICAic3JjL2puaS9hbmRyb2lkbWVkaWFkZWNvZGVyLmNjIiwKICAgICAg
ICJzcmMvam5pL2FuZHJvaWRtZWRpYWVuY29kZXIuY2MiLAorICAgIF0KKyAgICBkZXBzID0gWwor
ICAgICAgIjpiYXNlX2puaSIsCisgICAgICAiOmRlZmF1bHRfdmlkZW9fY29kZWNfZmFjdG9yeV9q
bmkiLAorICAgICAgIjpnZW5lcmF0ZWRfdmlkZW9fam5pIiwKKyAgICAgICI6bmF0aXZlX2FwaV9q
bmkiLAorICAgICAgIjp2aWRlb19qbmkiLAorICAgICAgIjp2aWRlb2ZyYW1lX2puaSIsCisgICAg
ICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczp2
aWRlb19jb2RlY3NfYXBpIiwKKyAgICAgICIuLi8uLi9jb21tb25fdmlkZW86Y29tbW9uX3ZpZGVv
IiwKKyAgICAgICIuLi8uLi9tZWRpYTpydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIiwKKyAgICAg
ICIuLi8uLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCisgICAgICAiLi4vLi4vbW9kdWxlcy92aWRl
b19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKKyAgICAgICIuLi8uLi9tb2R1bGVzL3Zp
ZGVvX2NvZGluZzp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCisgICAgICAiLi4vLi4vcnRjX2Jhc2U6
Y2hlY2tzIiwKKyAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZSIsCisgICAgICAiLi4vLi4v
cnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWVfYXBpIiwKKyAgICAgICIuLi8uLi9ydGNfYmFzZTpzZXF1
ZW5jZWRfdGFza19jaGVja2VyIiwKKyAgICAgICIuLi8uLi9ydGNfYmFzZTp3ZWFrX3B0ciIsCisg
ICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAgICIvL3RoaXJk
X3BhcnR5L2xpYnl1diIsCisgICAgXQorICB9CisKKyAgcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRl
b19qbmkiKSB7CisgICAgc291cmNlcyA9IFsKICAgICAgICJzcmMvam5pL2FuZHJvaWR2aWRlb3Ry
YWNrc291cmNlLmNjIiwKICAgICAgICJzcmMvam5pL2FuZHJvaWR2aWRlb3RyYWNrc291cmNlLmgi
LAogICAgICAgInNyYy9qbmkvZW5jb2RlZGltYWdlLmNjIiwKQEAgLTU0MCw2ICs2MjksNyBAQCBp
ZiAoaXNfYW5kcm9pZCkgewogICAgICAgInNyYy9qbmkvbnYxMmJ1ZmZlci5jYyIsCiAgICAgICAi
c3JjL2puaS9udjIxYnVmZmVyLmNjIiwKICAgICAgICJzcmMvam5pL3BjL3ZpZGVvLmNjIiwKKyAg
ICAgICJzcmMvam5pL3RpbWVzdGFtcGFsaWduZXIuY2MiLAogICAgICAgInNyYy9qbmkvdmlkZW9j
b2RlY2luZm8uY2MiLAogICAgICAgInNyYy9qbmkvdmlkZW9jb2RlY2luZm8uaCIsCiAgICAgICAi
c3JjL2puaS92aWRlb2NvZGVjc3RhdHVzLmNjIiwKQEAgLTU2MSwzNiArNjUxLDI1IEBAIGlmIChp
c19hbmRyb2lkKSB7CiAgICAgICAic3JjL2puaS95dXZoZWxwZXIuY2MiLAogICAgIF0KIAotICAg
IGRlcHMgKz0gWworICAgIGRlcHMgPSBbCiAgICAgICAiOmJhc2Vfam5pIiwKICAgICAgICI6Z2Vu
ZXJhdGVkX3ZpZGVvX2puaSIsCiAgICAgICAiOm5hdGl2ZV9hcGlfam5pIiwKICAgICAgICI6dmlk
ZW9mcmFtZV9qbmkiLAotICAgICAgIjp2cDhfam5pIiwgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcv
NzkyNSk6IFJlbW92ZS4KLSAgICAgICI6dnA5X2puaSIsICAjIFRPRE8oYnVncy53ZWJydGMub3Jn
Lzc5MjUpOiBSZW1vdmUuCiAgICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4v
Li4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAorICAgICAgIi4uLy4uL2FwaS92
aWRlbzplbmNvZGVkX2ltYWdlIiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUi
LAotICAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6YnVpbHRpbl92aWRlb19kZWNvZGVyX2Zh
Y3RvcnkiLAotICAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6YnVpbHRpbl92aWRlb19lbmNv
ZGVyX2ZhY3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6cnRjX3NvZnR3YXJl
X2ZhbGxiYWNrX3dyYXBwZXJzIiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVv
X2NvZGVjc19hcGkiLAogICAgICAgIi4uLy4uL2NvbW1vbl92aWRlbzpjb21tb25fdmlkZW8iLAot
ICAgICAgIi4uLy4uL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCi0gICAgICAiLi4vLi4vbWVkaWE6
cnRjX2gyNjRfcHJvZmlsZV9pZCIsCi0gICAgICAiLi4vLi4vbWVkaWE6cnRjX2ludGVybmFsX3Zp
ZGVvX2NvZGVjcyIsCiAgICAgICAiLi4vLi4vbWVkaWE6cnRjX21lZGlhX2Jhc2UiLAotICAgICAg
Ii4uLy4uL21vZHVsZXMvdXRpbGl0eTp1dGlsaXR5IiwKICAgICAgICIuLi8uLi9tb2R1bGVzL3Zp
ZGVvX2NvZGluZzpjb2RlY19nbG9iYWxzX2hlYWRlcnMiLAogICAgICAgIi4uLy4uL21vZHVsZXMv
dmlkZW9fY29kaW5nOnZpZGVvX2NvZGVjX2ludGVyZmFjZSIsCiAgICAgICAiLi4vLi4vbW9kdWxl
cy92aWRlb19jb2Rpbmc6dmlkZW9fY29kaW5nX3V0aWxpdHkiLAogICAgICAgIi4uLy4uL3J0Y19i
YXNlOmNoZWNrcyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAotICAgICAgIi4u
Ly4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi8uLi9ydGNfYmFzZTpy
dGNfdGFza19xdWV1ZSIsCi0gICAgICAiLi4vLi4vcnRjX2Jhc2U6c2VxdWVuY2VkX3Rhc2tfY2hl
Y2tlciIsCi0gICAgICAiLi4vLi4vcnRjX2Jhc2U6d2Vha19wdHIiLAotICAgICAgIi4uLy4uL3J0
Y19iYXNlL21lbW9yeTphbGlnbmVkX21hbGxvYyIsCisgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRj
X3Rhc2tfcXVldWVfYXBpIiwKICAgICAgICIvL3RoaXJkX3BhcnR5L2xpYnl1diIsCiAgICAgXQog
ICB9CkBAIC02MDYsNiArNjg1LDggQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICJzcmMvam5p
L3BjL2FuZHJvaWRuZXR3b3JrbW9uaXRvci5oIiwKICAgICAgICJzcmMvam5pL3BjL2F1ZGlvdHJh
Y2suY2MiLAogICAgICAgInNyYy9qbmkvcGMvY2FsbHNlc3Npb25maWxlcm90YXRpbmdsb2dzaW5r
LmNjIiwKKyAgICAgICJzcmMvam5pL3BjL2NyeXB0b29wdGlvbnMuY2MiLAorICAgICAgInNyYy9q
bmkvcGMvY3J5cHRvb3B0aW9ucy5oIiwKICAgICAgICJzcmMvam5pL3BjL2RhdGFjaGFubmVsLmNj
IiwKICAgICAgICJzcmMvam5pL3BjL2RhdGFjaGFubmVsLmgiLAogICAgICAgInNyYy9qbmkvcGMv
ZHRtZnNlbmRlci5jYyIsCkBAIC02MjQsNiArNzA1LDggQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAg
ICAgICJzcmMvam5pL3BjL3BlZXJjb25uZWN0aW9uLmgiLAogICAgICAgInNyYy9qbmkvcGMvcGVl
cmNvbm5lY3Rpb25mYWN0b3J5LmNjIiwKICAgICAgICJzcmMvam5pL3BjL3BlZXJjb25uZWN0aW9u
ZmFjdG9yeS5oIiwKKyAgICAgICJzcmMvam5pL3BjL3J0Y2NlcnRpZmljYXRlLmNjIiwKKyAgICAg
ICJzcmMvam5pL3BjL3J0Y2NlcnRpZmljYXRlLmgiLAogICAgICAgInNyYy9qbmkvcGMvcnRjc3Rh
dHNjb2xsZWN0b3JjYWxsYmFja3dyYXBwZXIuY2MiLAogICAgICAgInNyYy9qbmkvcGMvcnRjc3Rh
dHNjb2xsZWN0b3JjYWxsYmFja3dyYXBwZXIuaCIsCiAgICAgICAic3JjL2puaS9wYy9ydHBwYXJh
bWV0ZXJzLmNjIiwKQEAgLTY2OSw2ICs3NTIsNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAg
Ii4uLy4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKICAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBl
cnM6ZmllbGRfdHJpYWwiLAogICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21l
bW9yeSIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9u
YWwiLAogICAgIF0KICAgfQogCkBAIC02ODUsNiArNzY5LDUwIEBAIGlmIChpc19hbmRyb2lkKSB7
CiAgICAgXQogICB9CiAKKyAgcnRjX3N0YXRpY19saWJyYXJ5KCJkZWZhdWx0X3ZpZGVvX2NvZGVj
X2ZhY3Rvcnlfam5pIikgeworICAgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgICAgYWxsb3dfcG9p
c29uID0gWyAic29mdHdhcmVfdmlkZW9fY29kZWNzIiBdCisgICAgZGVwcyA9IFsKKyAgICAgICI6
c3djb2RlY3Nfam5pIiwKKyAgICAgICI6dmlkZW9fam5pIiwKKyAgICBdCisgIH0KKworICBydGNf
c3RhdGljX2xpYnJhcnkoImxpYnZweF92cDhfam5pIikgeworICAgIHZpc2liaWxpdHkgPSBbICIq
IiBdCisgICAgYWxsb3dfcG9pc29uID0gWyAic29mdHdhcmVfdmlkZW9fY29kZWNzIiBdCisgICAg
c291cmNlcyA9IFsKKyAgICAgICJzcmMvam5pL3ZwOGNvZGVjLmNjIiwKKyAgICBdCisgICAgZGVw
cyA9IFsKKyAgICAgICI6YmFzZV9qbmkiLAorICAgICAgIjpnZW5lcmF0ZWRfbGlidnB4X3ZwOF9q
bmkiLAorICAgICAgIjp2aWRlb19qbmkiLAorICAgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29k
aW5nOndlYnJ0Y192cDgiLAorICAgIF0KKyAgfQorCisgIHJ0Y19zdGF0aWNfbGlicmFyeSgibGli
dnB4X3ZwOV9qbmkiKSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgICBhbGxvd19wb2lz
b24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0KKyAgICBzb3VyY2VzID0gWworICAgICAg
InNyYy9qbmkvdnA5Y29kZWMuY2MiLAorICAgIF0KKyAgICBkZXBzID0gWworICAgICAgIjpiYXNl
X2puaSIsCisgICAgICAiOmdlbmVyYXRlZF9saWJ2cHhfdnA5X2puaSIsCisgICAgICAiOnZpZGVv
X2puaSIsCisgICAgICAiLi4vLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6d2VicnRjX3ZwOSIsCisg
ICAgXQorICB9CisKKyAgcnRjX3N0YXRpY19saWJyYXJ5KCJzd2NvZGVjc19qbmkiKSB7CisgICAg
ZGVwcyA9IFsKKyAgICAgICI6bGlidnB4X3ZwOF9qbmkiLAorICAgICAgIjpsaWJ2cHhfdnA5X2pu
aSIsCisgICAgXQorICB9CisKICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAjIE5hdGl2ZSBB
UEkgdGFyZ2V0cyAjCiAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTc2OSwxMCArODk3LDcg
QEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgIyBvYmplY3RzLgogICBydGNfc3RhdGljX2xpYnJhcnko
Im5hdGl2ZV9hcGlfY29kZWNzIikgewogICAgIHZpc2liaWxpdHkgPSBbICIqIiBdCi0gICAgYWxs
b3dfcG9pc29uID0gWwotICAgICAgImF1ZGlvX2NvZGVjcyIsICAjIFRPRE8oYnVncy53ZWJydGMu
b3JnLzgzOTYpOiBSZW1vdmUuCi0gICAgICAic29mdHdhcmVfdmlkZW9fY29kZWNzIiwgICMgVE9E
TyhidWdzLndlYnJ0Yy5vcmcvNzkyNSk6IFJlbW92ZS4KLSAgICBdCisgICAgYWxsb3dfcG9pc29u
ID0gWyAiYXVkaW9fY29kZWNzIiBdICAjIFRPRE8oYnVncy53ZWJydGMub3JnLzgzOTYpOiBSZW1v
dmUuCiAgICAgc291cmNlcyA9IFsKICAgICAgICJuYXRpdmVfYXBpL2NvZGVjcy93cmFwcGVyLmNj
IiwKICAgICAgICJuYXRpdmVfYXBpL2NvZGVjcy93cmFwcGVyLmgiLApAQCAtNzkyLDE0ICs5MTcs
MTAgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgIyBBUEkgZm9yIGNyZWF0aW5nIEphdmEgUGVlckNv
bm5lY3Rpb25GYWN0b3J5IGZyb20gQysrIGVxdWl2YWxlbnRzLgogICBydGNfc3RhdGljX2xpYnJh
cnkoIm5hdGl2ZV9hcGlfcGVlcmNvbm5lY3Rpb24iKSB7CiAgICAgdmlzaWJpbGl0eSA9IFsgIioi
IF0KLQotICAgIGFsbG93X3BvaXNvbiA9IFsgInNvZnR3YXJlX3ZpZGVvX2NvZGVjcyIgXSAgIyBU
T0RPKGJ1Z3Mud2VicnRjLm9yZy83OTI1KTogUmVtb3ZlLgotCiAgICAgc291cmNlcyA9IFsKICAg
ICAgICJuYXRpdmVfYXBpL3BlZXJjb25uZWN0aW9uL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyIs
CiAgICAgICAibmF0aXZlX2FwaS9wZWVyY29ubmVjdGlvbi9wZWVyY29ubmVjdGlvbmZhY3Rvcnku
aCIsCiAgICAgXQotCiAgICAgZGVwcyA9IFsKICAgICAgICI6YmFzZV9qbmkiLAogICAgICAgIjpw
ZWVyY29ubmVjdGlvbl9qbmkiLApAQCAtODEzLDEwICs5MzQsNyBAQCBpZiAoaXNfYW5kcm9pZCkg
ewogICAjIHZpZGVvIGludGVyZmFjZXMgZnJvbSB0aGVpciBKYXZhIGVxdWl2YWxlbnRzLgogICBy
dGNfc3RhdGljX2xpYnJhcnkoIm5hdGl2ZV9hcGlfdmlkZW8iKSB7CiAgICAgdmlzaWJpbGl0eSA9
IFsgIioiIF0KLSAgICBhbGxvd19wb2lzb24gPSBbCi0gICAgICAiYXVkaW9fY29kZWNzIiwgICMg
VE9ETyhidWdzLndlYnJ0Yy5vcmcvODM5Nik6IFJlbW92ZS4KLSAgICAgICJzb2Z0d2FyZV92aWRl
b19jb2RlY3MiLCAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy83OTI1KTogUmVtb3ZlLgotICAgIF0K
KyAgICBhbGxvd19wb2lzb24gPSBbICJhdWRpb19jb2RlY3MiIF0gICMgVE9ETyhidWdzLndlYnJ0
Yy5vcmcvODM5Nik6IFJlbW92ZS4KICAgICBzb3VyY2VzID0gWwogICAgICAgIm5hdGl2ZV9hcGkv
dmlkZW8vdmlkZW9zb3VyY2UuY2MiLAogICAgICAgIm5hdGl2ZV9hcGkvdmlkZW8vdmlkZW9zb3Vy
Y2UuaCIsCkBAIC04MjksNiArOTQ3LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICI6dmlk
ZW9mcmFtZV9qbmkiLAogICAgICAgIi8vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGki
LAogICAgICAgIi8vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKKyAgICAgICIvL3J0Y19iYXNlOnJ0
Y19iYXNlIiwKICAgICAgICIvL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICAgIF0KQEAgLTg5MSw2ICsx
MDEwLDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICIuLi8uLi9sb2dnaW5nOnJ0Y19ldmVu
dF9sb2dfYXBpIiwKICAgICAgICIuLi8uLi9tZWRpYTpydGNfYXVkaW9fdmlkZW8iLAogICAgICAg
Ii4uLy4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZSIsCisgICAgICAiLi4vLi4v
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgICAiLi4vLi4vbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgIF0KICAgfQpAQCAtOTI5LDMwICsx
MDQ5LDYgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBdCiAgIH0KIAotICBydGNfc3RhdGljX2xp
YnJhcnkoInZwOF9qbmkiKSB7Ci0gICAgc291cmNlcyA9IFsKLSAgICAgICJzcmMvam5pL3ZwOGNv
ZGVjLmNjIiwKLSAgICBdCi0KLSAgICBkZXBzID0gWwotICAgICAgIjpiYXNlX2puaSIsCi0gICAg
ICAiOmdlbmVyYXRlZF92cDhfam5pIiwKLSAgICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zzp3ZWJydGNfdnA4IiwKLSAgICBdCi0gIH0KLQotICBydGNfc3RhdGljX2xpYnJhcnkoInZwOV9q
bmkiKSB7Ci0gICAgc291cmNlcyA9IFsKLSAgICAgICJzcmMvam5pL3ZwOWNvZGVjLmNjIiwKLSAg
ICBdCi0KLSAgICBkZXBzID0gWwotICAgICAgIjpiYXNlX2puaSIsCi0gICAgICAiOmdlbmVyYXRl
ZF92cDlfam5pIiwKLSAgICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp3ZWJydGNfdnA5
IiwKLSAgICBdCi0gIH0KLQogICBydGNfc3RhdGljX2xpYnJhcnkoImxvZ2dpbmdfam5pIikgewog
ICAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgICAgc291cmNlcyA9IFsKQEAgLTk4MSw2ICsxMDc3
LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICI6YmFzZV9qbmkiLAogICAgICAgIjpnZW5l
cmF0ZWRfYXVkaW9fZGV2aWNlX21vZHVsZV9iYXNlX2puaSIsCiAgICAgICAiOm5hdGl2ZV9hcGlf
am5pIiwKKyAgICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfYXBp
IiwKICAgICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfYnVmZmVy
IiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICAgIi4uLy4uL3J0Y19iYXNl
OnJ0Y19iYXNlX2FwcHJvdmVkIiwKQEAgLTExMTQsNiArMTIxMSw3IEBAIGlmIChpc19hbmRyb2lk
KSB7CiAgICAgICAiYXBpL29yZy93ZWJydGMvSmF2YUk0MjBCdWZmZXIuamF2YSIsCiAgICAgICAi
YXBpL29yZy93ZWJydGMvTWVkaWFDb2RlY1ZpZGVvRGVjb2Rlci5qYXZhIiwKICAgICAgICJhcGkv
b3JnL3dlYnJ0Yy9NZWRpYUNvZGVjVmlkZW9FbmNvZGVyLmphdmEiLAorICAgICAgImFwaS9vcmcv
d2VicnRjL1RpbWVzdGFtcEFsaWduZXIuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvVmlk
ZW9Db2RlY0luZm8uamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvVmlkZW9Db2RlY1N0YXR1
cy5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9WaWRlb0RlY29kZXIuamF2YSIsCkBAIC0x
MTQwLDEwICsxMjM4LDEwIEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgam5pX2dlbmVyYXRvcl9p
bmNsdWRlID0gIi8vc2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfZ2VuZXJhdG9yX2hlbHBlci5oIgog
ICB9CiAKLSAgZ2VuZXJhdGVfam5pKCJnZW5lcmF0ZWRfdnA4X2puaSIpIHsKKyAgZ2VuZXJhdGVf
am5pKCJnZW5lcmF0ZWRfbGlidnB4X3ZwOF9qbmkiKSB7CiAgICAgc291cmNlcyA9IFsKLSAgICAg
ICJzcmMvamF2YS9vcmcvd2VicnRjL1ZQOERlY29kZXIuamF2YSIsCi0gICAgICAic3JjL2phdmEv
b3JnL3dlYnJ0Yy9WUDhFbmNvZGVyLmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL0xpYnZw
eFZwOERlY29kZXIuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvTGlidnB4VnA4RW5jb2Rl
ci5qYXZhIiwKICAgICBdCiAKICAgICBqbmlfcGFja2FnZSA9ICIiCkBAIC0xMTUxLDEwICsxMjQ5
LDEwIEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgam5pX2dlbmVyYXRvcl9pbmNsdWRlID0gIi8v
c2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfZ2VuZXJhdG9yX2hlbHBlci5oIgogICB9CiAKLSAgZ2Vu
ZXJhdGVfam5pKCJnZW5lcmF0ZWRfdnA5X2puaSIpIHsKKyAgZ2VuZXJhdGVfam5pKCJnZW5lcmF0
ZWRfbGlidnB4X3ZwOV9qbmkiKSB7CiAgICAgc291cmNlcyA9IFsKLSAgICAgICJzcmMvamF2YS9v
cmcvd2VicnRjL1ZQOURlY29kZXIuamF2YSIsCi0gICAgICAic3JjL2phdmEvb3JnL3dlYnJ0Yy9W
UDlFbmNvZGVyLmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL0xpYnZweFZwOURlY29kZXIu
amF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvTGlidnB4VnA5RW5jb2Rlci5qYXZhIiwKICAg
ICBdCiAKICAgICBqbmlfcGFja2FnZSA9ICIiCkBAIC0xMTY2LDYgKzEyNjQsNyBAQCBpZiAoaXNf
YW5kcm9pZCkgewogICAgIHNvdXJjZXMgPSBbCiAgICAgICAiYXBpL29yZy93ZWJydGMvQXVkaW9U
cmFjay5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9DYWxsU2Vzc2lvbkZpbGVSb3RhdGlu
Z0xvZ1NpbmsuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvQ3J5cHRvT3B0aW9ucy5qYXZh
IiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9EYXRhQ2hhbm5lbC5qYXZhIiwKICAgICAgICJhcGkv
b3JnL3dlYnJ0Yy9EdG1mU2VuZGVyLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0ljZUNh
bmRpZGF0ZS5qYXZhIiwKQEAgLTExNzgsNiArMTI3Nyw3IEBAIGlmIChpc19hbmRyb2lkKSB7CiAg
ICAgICAiYXBpL29yZy93ZWJydGMvUlRDU3RhdHMuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJy
dGMvUlRDU3RhdHNDb2xsZWN0b3JDYWxsYmFjay5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0
Yy9SVENTdGF0c1JlcG9ydC5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9SdGNDZXJ0aWZp
Y2F0ZVBlbS5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9SdHBQYXJhbWV0ZXJzLmphdmEi
LAogICAgICAgImFwaS9vcmcvd2VicnRjL1J0cFJlY2VpdmVyLmphdmEiLAogICAgICAgImFwaS9v
cmcvd2VicnRjL1J0cFNlbmRlci5qYXZhIiwKQEAgLTEyMDMsNiArMTMwMywxNiBAQCBpZiAoaXNf
YW5kcm9pZCkgewogICAgIGpuaV9nZW5lcmF0b3JfaW5jbHVkZSA9ICIvL3Nkay9hbmRyb2lkL3Ny
Yy9qbmkvam5pX2dlbmVyYXRvcl9oZWxwZXIuaCIKICAgfQogCisgIGdlbmVyYXRlX2puaSgiZ2Vu
ZXJhdGVkX2J1aWx0aW5fYXVkaW9fY29kZWNzX2puaSIpIHsKKyAgICBzb3VyY2VzID0gWworICAg
ICAgImFwaS9vcmcvd2VicnRjL0J1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeS5qYXZh
IiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3Rv
cnkuamF2YSIsCisgICAgXQorICAgIGpuaV9wYWNrYWdlID0gIiIKKyAgICBuYW1lc3BhY2UgPSAi
d2VicnRjOjpqbmkiCisgICAgam5pX2dlbmVyYXRvcl9pbmNsdWRlID0gIi8vc2RrL2FuZHJvaWQv
c3JjL2puaS9qbmlfZ2VuZXJhdG9yX2hlbHBlci5oIgorICB9CisKICAgIyBHZW5lcmF0ZWQgSk5J
IGZvciBuYXRpdmUgQVBJIHRhcmdldHMKIAogICBnZW5lcmF0ZV9qbmkoImdlbmVyYXRlZF9uYXRp
dmVfYXBpX2puaSIpIHsKQEAgLTEyNTUsNiArMTM2NSw3IEBAIGlmIChpc19hbmRyb2lkKSB7CiAK
ICAgICAgIGphdmFfZmlsZXMgPSBbCiAgICAgICAgICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMv
b3JnL3dlYnJ0Yy9BbmRyb2lkVmlkZW9EZWNvZGVySW5zdHJ1bWVudGF0aW9uVGVzdC5qYXZhIiwK
KyAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0J1aWx0aW5BdWRp
b0NvZGVjc0ZhY3RvcnlGYWN0b3J5VGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlv
bnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYTFDYXB0dXJlclVzaW5nQnl0ZUJ1ZmZlclRlc3Qu
amF2YSIsCiAgICAgICAgICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1l
cmExQ2FwdHVyZXJVc2luZ1RleHR1cmVUZXN0LmphdmEiLAogICAgICAgICAiaW5zdHJ1bWVudGF0
aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMkNhcHR1cmVyVGVzdC5qYXZhIiwKQEAgLTEy
NzAsMTEgKzEzODEsMTMgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICAgImluc3RydW1lbnRh
dGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1BlZXJDb25uZWN0aW9uRmFjdG9yeVRlc3QuamF2YSIs
CiAgICAgICAgICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVj
dGlvblRlc3QuamF2YSIsCiAgICAgICAgICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dl
YnJ0Yy9SZW5kZXJlckNvbW1vblRlc3QuamF2YSIsCisgICAgICAgICJpbnN0cnVtZW50YXRpb250
ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9SdGNDZXJ0aWZpY2F0ZVBlbVRlc3QuamF2YSIsCiAgICAgICAg
ICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9TdXJmYWNlVGV4dHVyZUhlbHBl
clRlc3QuamF2YSIsCiAgICAgICAgICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0
Yy9TdXJmYWNlVmlld1JlbmRlcmVyT25NZWFzdXJlVGVzdC5qYXZhIiwKICAgICAgICAgImluc3Ry
dW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1Rlc3RDb25zdGFudHMuamF2YSIsCiAgICAg
ICAgICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9WaWRlb0ZpbGVSZW5kZXJl
clRlc3QuamF2YSIsCiAgICAgICAgICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0
Yy9WaWRlb0ZyYW1lQnVmZmVyVGVzdC5qYXZhIiwKKyAgICAgICAgImluc3RydW1lbnRhdGlvbnRl
c3RzL3NyYy9vcmcvd2VicnRjL1RpbWVzdGFtcEFsaWduZXJUZXN0LmphdmEiLAogICAgICAgICAi
aW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvV2ViUnRjSm5pQm9vdFRlc3QuamF2
YSIsCiAgICAgICAgICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9ZdXZIZWxw
ZXJUZXN0LmphdmEiLAogICAgICAgXQpAQCAtMTI5NCw2ICsxNDA3LDcgQEAgaWYgKGlzX2FuZHJv
aWQpIHsKICAgICAgICAgIi8vcnRjX2Jhc2U6YmFzZV9qYXZhIiwKICAgICAgICAgIi8vdGhpcmRf
cGFydHkvYW5kcm9pZF9zdXBwb3J0X3Rlc3RfcnVubmVyOnJ1bGVzX2phdmEiLAogICAgICAgICAi
Ly90aGlyZF9wYXJ0eS9hbmRyb2lkX3N1cHBvcnRfdGVzdF9ydW5uZXI6cnVubmVyX2phdmEiLAor
ICAgICAgICAiLy90aGlyZF9wYXJ0eS9nb29nbGUtdHJ1dGg6Z29vZ2xlX3RydXRoX2phdmEiLAog
ICAgICAgICAiLy90aGlyZF9wYXJ0eS9qdW5pdCIsCiAgICAgICBdCiAKQEAgLTEzNzEsMjMgKzE0
ODUsMjMgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICI6bmF0aXZlX2FwaV92aWRlbyIsCiAg
ICAgICAiOm9wZW5zbGVzX2F1ZGlvX2RldmljZV9tb2R1bGUiLAogICAgICAgIjp2aWRlb19qbmki
LAotICAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpzeXN0ZW1fd3JhcHBlcnMiLAotICAgICAg
Ii8vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeSIsCi0gICAg
ICAiLy9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5IiwKLSAg
ICAgICIvL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCi0gICAgICAiLy9tZWRpYTpydGNfYXVkaW9f
dmlkZW8iLAotICAgICAgIi8vbWVkaWE6cnRjX2ludGVybmFsX3ZpZGVvX2NvZGVjcyIsCi0gICAg
ICAiLy9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCi0gICAgICAiLy9tb2R1bGVzL2F1ZGlvX2Rldmlj
ZTphdWRpb19kZXZpY2UiLAotICAgICAgIi8vbW9kdWxlcy9hdWRpb19kZXZpY2U6bW9ja19hdWRp
b19kZXZpY2UiLAotICAgICAgIi8vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nl
c3NpbmciLAotICAgICAgIi8vbW9kdWxlcy91dGlsaXR5OnV0aWxpdHkiLAotICAgICAgIi8vcGM6
bGliamluZ2xlX3BlZXJjb25uZWN0aW9uIiwKLSAgICAgICIvL3J0Y19iYXNlOmNoZWNrcyIsCi0g
ICAgICAiLy9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgICAiLy90ZXN0OmZpbGV1
dGlscyIsCi0gICAgICAiLy90ZXN0OnRlc3Rfc3VwcG9ydCIsCi0gICAgICAiLy90ZXN0aW5nL2d0
ZXN0IiwKKyAgICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5IiwKKyAgICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAor
ICAgICAgIi4uLy4uL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCisgICAgICAiLi4vLi4vbWVkaWE6
cnRjX2ludGVybmFsX3ZpZGVvX2NvZGVjcyIsCisgICAgICAiLi4vLi4vbWVkaWE6cnRjX21lZGlh
X2Jhc2UiLAorICAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZSIs
CisgICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6bW9ja19hdWRpb19kZXZpY2UiLAor
ICAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAorICAgICAgIi4uLy4u
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKKyAgICAgICIuLi8u
Li9tb2R1bGVzL3V0aWxpdHk6dXRpbGl0eSIsCisgICAgICAiLi4vLi4vcGM6bGliamluZ2xlX3Bl
ZXJjb25uZWN0aW9uIiwKKyAgICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICAgIi4u
Ly4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAgICIuLi8uLi90ZXN0OmZpbGV1
dGlscyIsCisgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgICAgIi4uLy4uL3Rl
c3RpbmcvZ3Rlc3QiLAogICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9y
eSIsCiAgICAgXQogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9BdWRpb0RlY29kZXJGYWN0
b3J5RmFjdG9yeS5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3Rvcnku
amF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZDNlMjYyODk2Y2FiODQ0NDFlNGE3ZDJiN2Y4MzhmYjU5YzNhYjgz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3Rv
cnkuamF2YQpAQCAtMCwwICsxLDIxIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9y
Zy53ZWJydGM7CisKKy8qKgorICogSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgaW50ZXJmYWNlIGNh
biBjcmVhdGUgYSBuYXRpdmUge0Bjb2RlIHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeX0uCisg
Ki8KK3B1YmxpYyBpbnRlcmZhY2UgQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkgeworICAvKioK
KyAgICogUmV0dXJucyBhIHBvaW50ZXIgdG8gYSB7QGNvZGUgd2VicnRjOjpBdWRpb0RlY29kZXJG
YWN0b3J5fS4gVGhlIGNhbGxlciB0YWtlcyBvd25lcnNoaXAuCisgICAqLworICBsb25nIGNyZWF0
ZU5hdGl2ZUF1ZGlvRGVjb2RlckZhY3RvcnkoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRj
L0F1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9BdWRpb0VuY29k
ZXJGYWN0b3J5RmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNGI3MWFiYTFmMDYwZDY2ZWUwYzNh
MzA0Zjg0YzQzZWIzOWU2NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9BdWRpb0Vu
Y29kZXJGYWN0b3J5RmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKK3BhY2thZ2Ugb3JnLndlYnJ0YzsKKworLyoqCisgKiBJbXBsZW1lbnRhdGlvbnMgb2Yg
dGhpcyBpbnRlcmZhY2UgY2FuIGNyZWF0ZSBhIG5hdGl2ZSB7QGNvZGUgd2VicnRjOjpBdWRpb0Vu
Y29kZXJGYWN0b3J5fS4KKyAqLworcHVibGljIGludGVyZmFjZSBBdWRpb0VuY29kZXJGYWN0b3J5
RmFjdG9yeSB7CisgIC8qKgorICAgKiBSZXR1cm5zIGEgcG9pbnRlciB0byBhIHtAY29kZSB3ZWJy
dGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnl9LiBUaGUgY2FsbGVyIHRha2VzIG93bmVyc2hpcC4KKyAg
ICovCisgIGxvbmcgY3JlYXRlTmF0aXZlQXVkaW9FbmNvZGVyRmFjdG9yeSgpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvYXBpL29yZy93ZWJydGMvQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5LmphdmEg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9h
cGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkuamF2YQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZWJjMTlmMjVkY2VlYTNiZmE0ZWZhODgxMTU4NTA0NDU5ZWJlZjJlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvYXBpL29yZy93ZWJydGMvQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5
LmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworcGFja2FnZSBvcmcu
d2VicnRjOworCisvKioKKyAqIENyZWF0ZXMgYSBuYXRpdmUge0Bjb2RlIHdlYnJ0Yzo6QXVkaW9E
ZWNvZGVyRmFjdG9yeX0gd2l0aCB0aGUgYnVpbHRpbiBhdWRpbyBkZWNvZGVycy4KKyAqLworcHVi
bGljIGNsYXNzIEJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeSBpbXBsZW1lbnRzIEF1
ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5IHsKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBsb25nIGNy
ZWF0ZU5hdGl2ZUF1ZGlvRGVjb2RlckZhY3RvcnkoKSB7CisgICAgcmV0dXJuIG5hdGl2ZUNyZWF0
ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5KCk7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyBu
YXRpdmUgbG9uZyBuYXRpdmVDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvYXBpL29yZy93ZWJydGMvQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5
LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkuamF2
YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lODg0ZDRjM2I5OGQ2Y2Q3ZDNjMmJiNWQ1YTRhMDFiOTNiMzBjMmU3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlG
YWN0b3J5LmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworcGFja2Fn
ZSBvcmcud2VicnRjOworCisvKioKKyAqIFRoaXMgY2xhc3MgY3JlYXRlcyBhIG5hdGl2ZSB7QGNv
ZGUgd2VicnRjOjpBdWRpb0VuY29kZXJGYWN0b3J5fSB3aXRoIHRoZSBidWlsdGluIGF1ZGlvIGVu
Y29kZXJzLgorICovCitwdWJsaWMgY2xhc3MgQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0
b3J5IGltcGxlbWVudHMgQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkgeworICBAT3ZlcnJpZGUK
KyAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZlQXVkaW9FbmNvZGVyRmFjdG9yeSgpIHsKKyAgICBy
ZXR1cm4gbmF0aXZlQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKTsKKyAgfQorCisg
IHByaXZhdGUgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29k
ZXJGYWN0b3J5KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9DcnlwdG9PcHRpb25zLmph
dmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9hcGkvb3JnL3dlYnJ0Yy9DcnlwdG9PcHRpb25zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdiOTU1MmFh
ZDg3YTcxOGQ2MjEyODgxMDg2MThkZGY4NTYzMWU5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcv
d2VicnRjL0NyeXB0b09wdGlvbnMuamF2YQpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworcGFja2FnZSBvcmcud2VicnRjOworCisvKioKKyAqIENyeXB0b09wdGlvbnMgZGVm
aW5lcyBhZHZhbmNlZCBjcnlwdG9ncmFwaGljIHNldHRpbmdzIGZvciBuYXRpdmUgV2ViUlRDLgor
ICogVGhlc2Ugc2V0dGluZ3MgbXVzdCBiZSBwYXNzZWQgaW50byBSVENDb25maWd1cmF0aW9uLiBX
ZWJSVEMgaXMgc2VjdXIgYnkKKyAqIGRlZmF1bHQgYW5kIHlvdSBzaG91bGQgbm90IG5lZWQgdG8g
c2V0IGFueSBvZiB0aGVzZSBvcHRpb25zIHVubGVzcyB5b3UgYXJlCisgKiBzcGVjaWZpY2FsbHkg
bG9va2luZyBmb3IgYW4gYWRkaXRpb25hbCBjcnlwdG8gZmVhdHVyZSBzdWNoIGFzIEFFU19HQ00K
KyAqIHN1cHBvcnQuIFRoaXMgY2xhc3MgaXMgdGhlIEphdmEgYmluZGluZyBvZiBuYXRpdmUgYXBp
L2NyeXB0by9jcnlwdG9vcHRpb25zLmgKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIENyeXB0b09w
dGlvbnMgeworICAvKioKKyAgICogU1JUUCBSZWxhdGVkIFBlZXIgQ29ubmVjdGlvbiBPcHRpb25z
LgorICAgKi8KKyAgcHVibGljIGZpbmFsIGNsYXNzIFNydHAgeworICAgIC8qKgorICAgICAqIEVu
YWJsZSBHQ00gY3J5cHRvIHN1aXRlcyBmcm9tIFJGQyA3NzE0IGZvciBTUlRQLiBHQ00gd2lsbCBv
bmx5IGJlIHVzZWQKKyAgICAgKiBpZiBib3RoIHNpZGVzIGVuYWJsZSBpdAorICAgICAqLworICAg
IHByaXZhdGUgZmluYWwgYm9vbGVhbiBlbmFibGVHY21DcnlwdG9TdWl0ZXM7CisgICAgLyoqCisg
ICAgICogSWYgc2V0IHRvIHRydWUsIHRoZSAocG90ZW50aWFsbHkgaW5zZWN1cmUpIGNyeXB0byBj
aXBoZXIKKyAgICAgKiBTUlRQX0FFUzEyOF9DTV9TSEExXzMyIHdpbGwgYmUgaW5jbHVkZWQgaW4g
dGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGNpcGhlcnMKKyAgICAgKiBkdXJpbmcgbmVnb3RpYXRpb24u
IEl0IHdpbGwgb25seSBiZSB1c2VkIGlmIGJvdGggcGVlcnMgc3VwcG9ydCBpdCBhbmQgbm8KKyAg
ICAgKiBvdGhlciBjaXBoZXJzIGdldCBwcmVmZXJyZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBm
aW5hbCBib29sZWFuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7CisgICAgLyoqCisg
ICAgICogSWYgc2V0IHRvIHRydWUsIGVuY3J5cHRlZCBSVFAgaGVhZGVyIGV4dGVuc2lvbnMgYXMg
ZGVmaW5lZCBpbiBSRkMgNjkwNAorICAgICAqIHdpbGwgYmUgbmVnb3RpYXRlZC4gVGhleSB3aWxs
IG9ubHkgYmUgdXNlZCBpZiBib3RoIHBlZXJzIHN1cHBvcnQgdGhlbS4KKyAgICAgKi8KKyAgICBw
cml2YXRlIGZpbmFsIGJvb2xlYW4gZW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczsK
KworICAgIHByaXZhdGUgU3J0cChib29sZWFuIGVuYWJsZUdjbUNyeXB0b1N1aXRlcywgYm9vbGVh
biBlbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyLAorICAgICAgICBib29sZWFuIGVuYWJs
ZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMpIHsKKyAgICAgIHRoaXMuZW5hYmxlR2NtQ3J5
cHRvU3VpdGVzID0gZW5hYmxlR2NtQ3J5cHRvU3VpdGVzOworICAgICAgdGhpcy5lbmFibGVBZXMx
MjhTaGExXzMyQ3J5cHRvQ2lwaGVyID0gZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjsK
KyAgICAgIHRoaXMuZW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucyA9IGVuYWJsZUVu
Y3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnM7CisgICAgfQorCisgICAgQENhbGxlZEJ5TmF0aXZl
KCJTcnRwIikKKyAgICBwdWJsaWMgYm9vbGVhbiBnZXRFbmFibGVHY21DcnlwdG9TdWl0ZXMoKSB7
CisgICAgICByZXR1cm4gZW5hYmxlR2NtQ3J5cHRvU3VpdGVzOworICAgIH0KKworICAgIEBDYWxs
ZWRCeU5hdGl2ZSgiU3J0cCIpCisgICAgcHVibGljIGJvb2xlYW4gZ2V0RW5hYmxlQWVzMTI4U2hh
MV8zMkNyeXB0b0NpcGhlcigpIHsKKyAgICAgIHJldHVybiBlbmFibGVBZXMxMjhTaGExXzMyQ3J5
cHRvQ2lwaGVyOworICAgIH0KKworICAgIEBDYWxsZWRCeU5hdGl2ZSgiU3J0cCIpCisgICAgcHVi
bGljIGJvb2xlYW4gZ2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucygpIHsKKyAg
ICAgIHJldHVybiBlbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zOworICAgIH0KKyAg
fQorCisgIC8qKgorICAgKiBPcHRpb25zIHRvIGJlIHVzZWQgd2hlbiB0aGUgRnJhbWVFbmNyeXB0
b3IgLyBGcmFtZURlY3J5cHRvciBBUElzIGFyZSB1c2VkLgorICAgKi8KKyAgcHVibGljIGZpbmFs
IGNsYXNzIFNGcmFtZSB7CisgICAgLyoqCisgICAgICogSWYgc2V0IGFsbCBSdHBTZW5kZXJzIG11
c3QgaGF2ZSBhbiBGcmFtZUVuY3J5cHRvciBhdHRhY2hlZCB0byB0aGVtIGJlZm9yZQorICAgICAq
IHRoZXkgYXJlIGFsbG93ZWQgdG8gc2VuZCBwYWNrZXRzLiBBbGwgUnRwUmVjZWl2ZXJzIG11c3Qg
aGF2ZSBhCisgICAgICogRnJhbWVEZWNyeXB0b3IgYXR0YWNoZWQgdG8gdGhlbSBiZWZvcmUgdGhl
eSBhcmUgYWJsZSB0byByZWNlaXZlIHBhY2tldHMuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5h
bCBib29sZWFuIHJlcXVpcmVGcmFtZUVuY3J5cHRpb247CisKKyAgICBwcml2YXRlIFNGcmFtZShi
b29sZWFuIHJlcXVpcmVGcmFtZUVuY3J5cHRpb24pIHsKKyAgICAgIHRoaXMucmVxdWlyZUZyYW1l
RW5jcnlwdGlvbiA9IHJlcXVpcmVGcmFtZUVuY3J5cHRpb247CisgICAgfQorCisgICAgQENhbGxl
ZEJ5TmF0aXZlKCJTRnJhbWUiKQorICAgIHB1YmxpYyBib29sZWFuIGdldFJlcXVpcmVGcmFtZUVu
Y3J5cHRpb24oKSB7CisgICAgICByZXR1cm4gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbjsKKyAgICB9
CisgIH0KKworICBwcml2YXRlIGZpbmFsIFNydHAgc3J0cDsKKyAgcHJpdmF0ZSBmaW5hbCBTRnJh
bWUgc2ZyYW1lOworCisgIHByaXZhdGUgQ3J5cHRvT3B0aW9ucyhib29sZWFuIGVuYWJsZUdjbUNy
eXB0b1N1aXRlcywgYm9vbGVhbiBlbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyLAorICAg
ICAgYm9vbGVhbiBlbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zLCBib29sZWFuIHJl
cXVpcmVGcmFtZUVuY3J5cHRpb24pIHsKKyAgICB0aGlzLnNydHAgPSBuZXcgU3J0cCgKKyAgICAg
ICAgZW5hYmxlR2NtQ3J5cHRvU3VpdGVzLCBlbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVy
LCBlbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zKTsKKyAgICB0aGlzLnNmcmFtZSA9
IG5ldyBTRnJhbWUocmVxdWlyZUZyYW1lRW5jcnlwdGlvbik7CisgIH0KKworICBwdWJsaWMgc3Rh
dGljIEJ1aWxkZXIgYnVpbGRlcigpIHsKKyAgICByZXR1cm4gbmV3IEJ1aWxkZXIoKTsKKyAgfQor
CisgIEBDYWxsZWRCeU5hdGl2ZQorICBwdWJsaWMgU3J0cCBnZXRTcnRwKCkgeworICAgIHJldHVy
biBzcnRwOworICB9CisKKyAgQENhbGxlZEJ5TmF0aXZlCisgIHB1YmxpYyBTRnJhbWUgZ2V0U0Zy
YW1lKCkgeworICAgIHJldHVybiBzZnJhbWU7CisgIH0KKworICBwdWJsaWMgc3RhdGljIGNsYXNz
IEJ1aWxkZXIgeworICAgIHByaXZhdGUgYm9vbGVhbiBlbmFibGVHY21DcnlwdG9TdWl0ZXM7Cisg
ICAgcHJpdmF0ZSBib29sZWFuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7CisgICAg
cHJpdmF0ZSBib29sZWFuIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnM7CisgICAg
cHJpdmF0ZSBib29sZWFuIHJlcXVpcmVGcmFtZUVuY3J5cHRpb247CisKKyAgICBwcml2YXRlIEJ1
aWxkZXIoKSB7fQorCisgICAgcHVibGljIEJ1aWxkZXIgc2V0RW5hYmxlR2NtQ3J5cHRvU3VpdGVz
KGJvb2xlYW4gZW5hYmxlR2NtQ3J5cHRvU3VpdGVzKSB7CisgICAgICB0aGlzLmVuYWJsZUdjbUNy
eXB0b1N1aXRlcyA9IGVuYWJsZUdjbUNyeXB0b1N1aXRlczsKKyAgICAgIHJldHVybiB0aGlzOwor
ICAgIH0KKworICAgIHB1YmxpYyBCdWlsZGVyIHNldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9D
aXBoZXIoYm9vbGVhbiBlbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKSB7CisgICAgICB0
aGlzLmVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIgPSBlbmFibGVBZXMxMjhTaGExXzMy
Q3J5cHRvQ2lwaGVyOworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIEJ1
aWxkZXIgc2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucygKKyAgICAgICAgYm9v
bGVhbiBlbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zKSB7CisgICAgICB0aGlzLmVu
YWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMgPSBlbmFibGVFbmNyeXB0ZWRSdHBIZWFk
ZXJFeHRlbnNpb25zOworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIEJ1
aWxkZXIgc2V0UmVxdWlyZUZyYW1lRW5jcnlwdGlvbihib29sZWFuIHJlcXVpcmVGcmFtZUVuY3J5
cHRpb24pIHsKKyAgICAgIHRoaXMucmVxdWlyZUZyYW1lRW5jcnlwdGlvbiA9IHJlcXVpcmVGcmFt
ZUVuY3J5cHRpb247CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBwdWJsaWMgQ3J5
cHRvT3B0aW9ucyBjcmVhdGVDcnlwdG9PcHRpb25zKCkgeworICAgICAgcmV0dXJuIG5ldyBDcnlw
dG9PcHRpb25zKGVuYWJsZUdjbUNyeXB0b1N1aXRlcywgZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0
b0NpcGhlciwKKyAgICAgICAgICBlbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zLCBy
ZXF1aXJlRnJhbWVFbmNyeXB0aW9uKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcv
d2VicnRjL0VnbFJlbmRlcmVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9FZ2xSZW5kZXJlci5qYXZhCmlu
ZGV4IGQwYTFkOThiMmJkZWZjYTk1OWRjYzRkODU0YzFmNjk0MjcwNTdjMGMuLmU4MTAwNTMwMDM2
MTgzY2YzM2E3ODFkY2FjMmUyZDM3MWY5ZDAyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0Vn
bFJlbmRlcmVyLmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvRWdsUmVuZGVyZXIuamF2YQpAQCAtMTcs
NiArMTcsNyBAQCBpbXBvcnQgYW5kcm9pZC5vcGVuZ2wuR0xFUzIwOwogaW1wb3J0IGFuZHJvaWQu
b3MuSGFuZGxlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXJUaHJlYWQ7CiBpbXBvcnQgYW5k
cm9pZC5vcy5Mb29wZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOwogaW1wb3J0IGFuZHJv
aWQudmlldy5TdXJmYWNlOwogaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CiBpbXBvcnQgamF2
YS50ZXh0LkRlY2ltYWxGb3JtYXQ7CkBAIC03OSw2ICs4MCwyOSBAQCBwdWJsaWMgY2xhc3MgRWds
UmVuZGVyZXIgaW1wbGVtZW50cyBWaWRlb1NpbmsgewogICAgIH0KICAgfQogCisgIC8qKgorICAg
KiBIYW5kbGVyIHRoYXQgdHJpZ2dlcnMgYSBjYWxsYmFjayB3aGVuIGFuIHVuY2F1Z2h0IGV4Y2Vw
dGlvbiBoYXBwZW5zIHdoZW4gaGFuZGxpbmcgYSBtZXNzYWdlLgorICAgKi8KKyAgcHJpdmF0ZSBz
dGF0aWMgY2xhc3MgSGFuZGxlcldpdGhFeGNlcHRpb25DYWxsYmFjayBleHRlbmRzIEhhbmRsZXIg
eworICAgIHByaXZhdGUgZmluYWwgUnVubmFibGUgZXhjZXB0aW9uQ2FsbGJhY2s7CisKKyAgICBw
dWJsaWMgSGFuZGxlcldpdGhFeGNlcHRpb25DYWxsYmFjayhMb29wZXIgbG9vcGVyLCBSdW5uYWJs
ZSBleGNlcHRpb25DYWxsYmFjaykgeworICAgICAgc3VwZXIobG9vcGVyKTsKKyAgICAgIHRoaXMu
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBleGNlcHRpb25DYWxsYmFjazsKKyAgICB9CisKKyAgICBAT3Zl
cnJpZGUKKyAgICBwdWJsaWMgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAg
ICAgIHRyeSB7CisgICAgICAgIHN1cGVyLmRpc3BhdGNoTWVzc2FnZShtc2cpOworICAgICAgfSBj
YXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgTG9nZ2luZy5lKFRBRywgIkV4Y2VwdGlvbiBv
biBFZ2xSZW5kZXJlciB0aHJlYWQiLCBlKTsKKyAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2sucnVu
KCk7CisgICAgICAgIHRocm93IGU7CisgICAgICB9CisgICAgfQorICB9CisKICAgcHJvdGVjdGVk
IGZpbmFsIFN0cmluZyBuYW1lOwogCiAgIC8vIHxyZW5kZXJUaHJlYWRIYW5kbGVyfCBpcyBhIGhh
bmRsZXIgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB8cmVuZGVyVGhyZWFkfCwgYW5kIGlzIHN5bmNo
cm9uaXplZApAQCAtMTAxLDYgKzEyNSw3IEBAIHB1YmxpYyBjbGFzcyBFZ2xSZW5kZXJlciBpbXBs
ZW1lbnRzIFZpZGVvU2luayB7CiAgIEBOdWxsYWJsZSBwcml2YXRlIEVnbEJhc2UgZWdsQmFzZTsK
ICAgcHJpdmF0ZSBmaW5hbCBWaWRlb0ZyYW1lRHJhd2VyIGZyYW1lRHJhd2VyID0gbmV3IFZpZGVv
RnJhbWVEcmF3ZXIoKTsKICAgQE51bGxhYmxlIHByaXZhdGUgUmVuZGVyZXJDb21tb24uR2xEcmF3
ZXIgZHJhd2VyOworICBwcml2YXRlIGJvb2xlYW4gdXNlUHJlc2VudGF0aW9uVGltZVN0YW1wOwog
ICBwcml2YXRlIGZpbmFsIE1hdHJpeCBkcmF3TWF0cml4ID0gbmV3IE1hdHJpeCgpOwogCiAgIC8v
IFBlbmRpbmcgZnJhbWUgdG8gcmVuZGVyLiBTZXJ2ZXMgYXMgYSBxdWV1ZSB3aXRoIHNpemUgMS4g
U3luY2hyb25pemVkIG9uIHxmcmFtZUxvY2t8LgpAQCAtMTYxLDIwICsxODYsMzEgQEAgcHVibGlj
IGNsYXNzIEVnbFJlbmRlcmVyIGltcGxlbWVudHMgVmlkZW9TaW5rIHsKICAgICogSW5pdGlhbGl6
ZSB0aGlzIGNsYXNzLCBzaGFyaW5nIHJlc291cmNlcyB3aXRoIHxzaGFyZWRDb250ZXh0fC4gVGhl
IGN1c3RvbSB8ZHJhd2VyfCB3aWxsIGJlIHVzZWQKICAgICogZm9yIGRyYXdpbmcgZnJhbWVzIG9u
IHRoZSBFR0xTdXJmYWNlLiBUaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIHJl
bGVhc2UoKSBvbgogICAgKiB8ZHJhd2VyfC4gSXQgaXMgYWxsb3dlZCB0byBjYWxsIGluaXQoKSB0
byByZWluaXRpYWxpemUgdGhlIHJlbmRlcmVyIGFmdGVyIGEgcHJldmlvdXMKLSAgICogaW5pdCgp
L3JlbGVhc2UoKSBjeWNsZS4KKyAgICogaW5pdCgpL3JlbGVhc2UoKSBjeWNsZS4gSWYgdXNlUHJl
c2VudGF0aW9uVGltZVN0YW1wIGlzIHRydWUsIGVnbFByZXNlbnRhdGlvblRpbWVBTkRST0lEIHdp
bGwgYmUKKyAgICogc2V0IHdpdGggdGhlIGZyYW1lIHRpbWVzdGFtcHMsIHdoaWNoIHNwZWNpZmll
cyBkZXNpcmVkIHByZXNlbnRhdGlvbiB0aW1lIGFuZCBtaWdodCBiZSB1c2VmdWwKKyAgICogZm9y
IGUuZy4gc3luY2luZyBhdWRpbyBhbmQgdmlkZW8uCiAgICAqLwogICBwdWJsaWMgdm9pZCBpbml0
KEBOdWxsYWJsZSBmaW5hbCBFZ2xCYXNlLkNvbnRleHQgc2hhcmVkQ29udGV4dCwgZmluYWwgaW50
W10gY29uZmlnQXR0cmlidXRlcywKLSAgICAgIFJlbmRlcmVyQ29tbW9uLkdsRHJhd2VyIGRyYXdl
cikgeworICAgICAgUmVuZGVyZXJDb21tb24uR2xEcmF3ZXIgZHJhd2VyLCBib29sZWFuIHVzZVBy
ZXNlbnRhdGlvblRpbWVTdGFtcCkgewogICAgIHN5bmNocm9uaXplZCAoaGFuZGxlckxvY2spIHsK
ICAgICAgIGlmIChyZW5kZXJUaHJlYWRIYW5kbGVyICE9IG51bGwpIHsKICAgICAgICAgdGhyb3cg
bmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihuYW1lICsgIkFscmVhZHkgaW5pdGlhbGl6ZWQiKTsK
ICAgICAgIH0KICAgICAgIGxvZ0QoIkluaXRpYWxpemluZyBFZ2xSZW5kZXJlciIpOwogICAgICAg
dGhpcy5kcmF3ZXIgPSBkcmF3ZXI7CisgICAgICB0aGlzLnVzZVByZXNlbnRhdGlvblRpbWVTdGFt
cCA9IHVzZVByZXNlbnRhdGlvblRpbWVTdGFtcDsKIAogICAgICAgZmluYWwgSGFuZGxlclRocmVh
ZCByZW5kZXJUaHJlYWQgPSBuZXcgSGFuZGxlclRocmVhZChuYW1lICsgIkVnbFJlbmRlcmVyIik7
CiAgICAgICByZW5kZXJUaHJlYWQuc3RhcnQoKTsKLSAgICAgIHJlbmRlclRocmVhZEhhbmRsZXIg
PSBuZXcgSGFuZGxlcihyZW5kZXJUaHJlYWQuZ2V0TG9vcGVyKCkpOworICAgICAgcmVuZGVyVGhy
ZWFkSGFuZGxlciA9CisgICAgICAgICAgbmV3IEhhbmRsZXJXaXRoRXhjZXB0aW9uQ2FsbGJhY2so
cmVuZGVyVGhyZWFkLmdldExvb3BlcigpLCBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBA
T3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAg
c3luY2hyb25pemVkIChoYW5kbGVyTG9jaykgeworICAgICAgICAgICAgICAgIHJlbmRlclRocmVh
ZEhhbmRsZXIgPSBudWxsOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfSk7CiAgICAgICAvLyBDcmVhdGUgRUdMIGNvbnRleHQgb24gdGhlIG5ld2x5IGNyZWF0ZWQg
cmVuZGVyIHRocmVhZC4gSXQgc2hvdWxkIGJlIHBvc3NpYmx5IHRvIGNyZWF0ZSB0aGUKICAgICAg
IC8vIGNvbnRleHQgb24gdGhpcyB0aHJlYWQgYW5kIG1ha2UgaXQgY3VycmVudCBvbiB0aGUgcmVu
ZGVyIHRocmVhZCwgYnV0IHRoaXMgY2F1c2VzIGZhaWx1cmUgb24KICAgICAgIC8vIHNvbWUgTWFy
dmVsIGJhc2VkIEpCIGRldmljZXMuIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC93ZWJydGMv
aXNzdWVzL2RldGFpbD9pZD02MzUwLgpAQCAtMTk4LDYgKzIzNCwxNiBAQCBwdWJsaWMgY2xhc3Mg
RWdsUmVuZGVyZXIgaW1wbGVtZW50cyBWaWRlb1NpbmsgewogICAgIH0KICAgfQogCisgIC8qKgor
ICAgKiBTYW1lIGFzIGFib3ZlIHdpdGggdXNlUHJlc2VudGF0aW9uVGltZVN0YW1wIHNldCB0byBm
YWxzZS4KKyAgICoKKyAgICogQHNlZSAjaW5pdChFZ2xCYXNlLkNvbnRleHQsIGludFtdLCBSZW5k
ZXJlckNvbW1vbi5HbERyYXdlciwgYm9vbGVhbikKKyAgICovCisgIHB1YmxpYyB2b2lkIGluaXQo
QE51bGxhYmxlIGZpbmFsIEVnbEJhc2UuQ29udGV4dCBzaGFyZWRDb250ZXh0LCBmaW5hbCBpbnRb
XSBjb25maWdBdHRyaWJ1dGVzLAorICAgICAgUmVuZGVyZXJDb21tb24uR2xEcmF3ZXIgZHJhd2Vy
KSB7CisgICAgaW5pdChzaGFyZWRDb250ZXh0LCBjb25maWdBdHRyaWJ1dGVzLCBkcmF3ZXIsIC8q
IHVzZVByZXNlbnRhdGlvblRpbWVTdGFtcD0gKi8gZmFsc2UpOworICB9CisKICAgcHVibGljIHZv
aWQgY3JlYXRlRWdsU3VyZmFjZShTdXJmYWNlIHN1cmZhY2UpIHsKICAgICBjcmVhdGVFZ2xTdXJm
YWNlSW50ZXJuYWwoc3VyZmFjZSk7CiAgIH0KQEAgLTU4NSw3ICs2MzEsMTEgQEAgcHVibGljIGNs
YXNzIEVnbFJlbmRlcmVyIGltcGxlbWVudHMgVmlkZW9TaW5rIHsKICAgICAgICAgICBlZ2xCYXNl
LnN1cmZhY2VXaWR0aCgpLCBlZ2xCYXNlLnN1cmZhY2VIZWlnaHQoKSk7CiAKICAgICAgIGZpbmFs
IGxvbmcgc3dhcEJ1ZmZlcnNTdGFydFRpbWVOcyA9IFN5c3RlbS5uYW5vVGltZSgpOwotICAgICAg
ZWdsQmFzZS5zd2FwQnVmZmVycygpOworICAgICAgaWYgKHVzZVByZXNlbnRhdGlvblRpbWVTdGFt
cCkgeworICAgICAgICBlZ2xCYXNlLnN3YXBCdWZmZXJzKGZyYW1lLmdldFRpbWVzdGFtcE5zKCkp
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZWdsQmFzZS5zd2FwQnVmZmVycygpOworICAgICAg
fQogCiAgICAgICBmaW5hbCBsb25nIGN1cnJlbnRUaW1lTnMgPSBTeXN0ZW0ubmFub1RpbWUoKTsK
ICAgICAgIHN5bmNocm9uaXplZCAoc3RhdGlzdGljc0xvY2spIHsKQEAgLTY1Miw3ICs3MDIsNyBA
QCBwdWJsaWMgY2xhc3MgRWdsUmVuZGVyZXIgaW1wbGVtZW50cyBWaWRlb1NpbmsgewogICB9CiAK
ICAgcHJpdmF0ZSBTdHJpbmcgYXZlcmFnZVRpbWVBc1N0cmluZyhsb25nIHN1bVRpbWVOcywgaW50
IGNvdW50KSB7Ci0gICAgcmV0dXJuIChjb3VudCA8PSAwKSA/ICJOQSIgOiBUaW1lVW5pdC5OQU5P
U0VDT05EUy50b01pY3JvcyhzdW1UaW1lTnMgLyBjb3VudCkgKyAiIM68cyI7CisgICAgcmV0dXJu
IChjb3VudCA8PSAwKSA/ICJOQSIgOiBUaW1lVW5pdC5OQU5PU0VDT05EUy50b01pY3JvcyhzdW1U
aW1lTnMgLyBjb3VudCkgKyAiIHVzIjsKICAgfQogCiAgIHByaXZhdGUgdm9pZCBsb2dTdGF0aXN0
aWNzKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTGlidnB4VnA4RGVjb2Rlci5qYXZhIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBp
L29yZy93ZWJydGMvTGlidnB4VnA4RGVjb2Rlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0YWQwYWExMzdj
NzUyMGViYjU5MDllMGVlMzRhYjJkYTVjZjVkZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dl
YnJ0Yy9MaWJ2cHhWcDhEZWNvZGVyLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgorICovCisKK3BhY2thZ2Ugb3JnLndlYnJ0YzsKKworcHVibGljIGNsYXNzIExpYnZweFZw
OERlY29kZXIgZXh0ZW5kcyBXcmFwcGVkTmF0aXZlVmlkZW9EZWNvZGVyIHsKKyAgQE92ZXJyaWRl
CisgIHB1YmxpYyBsb25nIGNyZWF0ZU5hdGl2ZVZpZGVvRGVjb2RlcigpIHsKKyAgICByZXR1cm4g
bmF0aXZlQ3JlYXRlRGVjb2RlcigpOworICB9CisKKyAgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2
ZUNyZWF0ZURlY29kZXIoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0xpYnZweFZwOEVu
Y29kZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0xpYnZweFZwOEVuY29kZXIuamF2YQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40YmU5ZTUyYzE0MjFmMjQxYzRjY2M5MTg5OWJlMTU5MjAzZTNhNjgxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvYXBpL29yZy93ZWJydGMvTGlidnB4VnA4RW5jb2Rlci5qYXZhCkBAIC0wLDAgKzEsMjUgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisKK3B1YmxpYyBj
bGFzcyBMaWJ2cHhWcDhFbmNvZGVyIGV4dGVuZHMgV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2RlciB7
CisgIEBPdmVycmlkZQorICBwdWJsaWMgbG9uZyBjcmVhdGVOYXRpdmVWaWRlb0VuY29kZXIoKSB7
CisgICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsKKyAgfQorCisgIHN0YXRpYyBuYXRp
dmUgbG9uZyBuYXRpdmVDcmVhdGVFbmNvZGVyKCk7CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBi
b29sZWFuIGlzSGFyZHdhcmVFbmNvZGVyKCkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTGlidnB4VnA5RGVjb2Rlci5qYXZhIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJy
dGMvTGlidnB4VnA5RGVjb2Rlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwYTI0NDMzYTNlZjc0MWNjOWI4
MWQ0NWUwNzZlYzIyOGJjNGRiNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2
cHhWcDlEZWNvZGVyLmphdmEKQEAgLTAsMCArMSwyMiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMp
IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKK3BhY2thZ2Ugb3JnLndlYnJ0YzsKKworcHVibGljIGNsYXNzIExpYnZweFZwOURlY29kZXIg
ZXh0ZW5kcyBXcmFwcGVkTmF0aXZlVmlkZW9EZWNvZGVyIHsKKyAgQE92ZXJyaWRlCisgIHB1Ymxp
YyBsb25nIGNyZWF0ZU5hdGl2ZVZpZGVvRGVjb2RlcigpIHsKKyAgICByZXR1cm4gbmF0aXZlQ3Jl
YXRlRGVjb2RlcigpOworICB9CisKKyAgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZURl
Y29kZXIoKTsKKworICBzdGF0aWMgbmF0aXZlIGJvb2xlYW4gbmF0aXZlSXNTdXBwb3J0ZWQoKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0xpYnZweFZwOUVuY29kZXIuamF2YSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcv
d2VicnRjL0xpYnZweFZwOUVuY29kZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjExYWU5M2ZiOGFjNWEx
NzlkM2Y3N2RhYmY3ZTNjOWYyNjg1ZjMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMv
TGlidnB4VnA5RW5jb2Rlci5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisKK3B1YmxpYyBjbGFzcyBMaWJ2cHhWcDlFbmNv
ZGVyIGV4dGVuZHMgV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2RlciB7CisgIEBPdmVycmlkZQorICBw
dWJsaWMgbG9uZyBjcmVhdGVOYXRpdmVWaWRlb0VuY29kZXIoKSB7CisgICAgcmV0dXJuIG5hdGl2
ZUNyZWF0ZUVuY29kZXIoKTsKKyAgfQorCisgIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVDcmVh
dGVFbmNvZGVyKCk7CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBib29sZWFuIGlzSGFyZHdhcmVF
bmNvZGVyKCkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHN0YXRpYyBuYXRpdmUgYm9v
bGVhbiBuYXRpdmVJc1N1cHBvcnRlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTWVk
aWFUcmFuc3BvcnRGYWN0b3J5RmFjdG9yeS5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTWVkaWFUcmFuc3Bv
cnRGYWN0b3J5RmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxNmEzN2E2ZDc3NzUzOWE0NjBmYzI5
NDZkZjFhMjIwYWZmYTIzNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9NZWRpYVRy
YW5zcG9ydEZhY3RvcnlGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwyMiBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworcGFja2FnZSBvcmcud2VicnRjOworCisvKioKKyAqIEZhY3RvcnkgZm9yIGNyZWF0
aW5nIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRGYWN0b3J5IGluc3RhbmNlcy4KKyAqLworcHVibGlj
IGludGVyZmFjZSBNZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5IHsKKyAgLyoqCisgICAqIER5
bmFtaWNhbGx5IGFsbG9jYXRlcyBhIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRGYWN0b3J5IGluc3Rh
bmNlIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBpdC4KKyAgICogVGhlIGNhbGxlciB0YWtlcyBv
d25lcnNoaXAgb2YgdGhlIG9iamVjdC4KKyAgICovCisgIHB1YmxpYyBsb25nIGNyZWF0ZU5hdGl2
ZU1lZGlhVHJhbnNwb3J0RmFjdG9yeSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTmV0
d29ya01vbml0b3IuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL05ldHdvcmtNb25pdG9yLmphdmEKaW5kZXgg
YmE2YmFlMGVkODM0OTgzMjE2NTZkZWI4MjUxZmQxNmI1ZDI1ODc1MS4uOTc2NGEwY2IzNTRmZjc3
MmFhM2EzNTU1NDc5ZDQxYWI4MDJlZjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTmV0d29y
a01vbml0b3IuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9OZXR3b3JrTW9uaXRvci5qYXZhCkBAIC0x
NCwxMSArMTQsMTAgQEAgaW1wb3J0IHN0YXRpYyBvcmcud2VicnRjLk5ldHdvcmtNb25pdG9yQXV0
b0RldGVjdC5JTlZBTElEX05FVF9JRDsKIAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0
OwogaW1wb3J0IGFuZHJvaWQub3MuQnVpbGQ7Ci1pbXBvcnQgamF2YXguYW5ub3RhdGlvbi5OdWxs
YWJsZTsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5MaXN0
OwotaW1wb3J0IG9yZy53ZWJydGMuTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25U
eXBlOwotaW1wb3J0IG9yZy53ZWJydGMuTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0Lk5ldHdvcmtJ
bmZvcm1hdGlvbjsKK2ltcG9ydCBqYXZheC5hbm5vdGF0aW9uLk51bGxhYmxlOworaW1wb3J0IG9y
Zy53ZWJydGMuTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0OwogCiAvKioKICAqIEJvcnJvd2VkIGZy
b20gQ2hyb21pdW0ncwpAQCAtMzMsNyArMzIsNyBAQCBwdWJsaWMgY2xhc3MgTmV0d29ya01vbml0
b3IgewogICAgKiBBbGVydGVkIHdoZW4gdGhlIGNvbm5lY3Rpb24gdHlwZSBvZiB0aGUgbmV0d29y
ayBjaGFuZ2VzLiBUaGUgYWxlcnQgaXMgZmlyZWQgb24gdGhlIFVJIHRocmVhZC4KICAgICovCiAg
IHB1YmxpYyBpbnRlcmZhY2UgTmV0d29ya09ic2VydmVyIHsKLSAgICBwdWJsaWMgdm9pZCBvbkNv
bm5lY3Rpb25UeXBlQ2hhbmdlZChDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSk7CisgICAg
cHVibGljIHZvaWQgb25Db25uZWN0aW9uVHlwZUNoYW5nZWQoTmV0d29ya01vbml0b3JBdXRvRGV0
ZWN0LkNvbm5lY3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBlKTsKICAgfQogCiAgIHByaXZhdGUgc3Rh
dGljIGZpbmFsIFN0cmluZyBUQUcgPSAiTmV0d29ya01vbml0b3IiOwpAQCAtNTUsMTMgKzU0LDEz
IEBAIHB1YmxpYyBjbGFzcyBOZXR3b3JrTW9uaXRvciB7CiAgIC8vIEFsc28gZ3VhcmRlZCBieSBh
dXRvRGV0ZWN0TG9jay4KICAgcHJpdmF0ZSBpbnQgbnVtT2JzZXJ2ZXJzOwogCi0gIHByaXZhdGUg
dm9sYXRpbGUgQ29ubmVjdGlvblR5cGUgY3VycmVudENvbm5lY3Rpb25UeXBlOworICBwcml2YXRl
IHZvbGF0aWxlIE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5Db25uZWN0aW9uVHlwZSBjdXJyZW50
Q29ubmVjdGlvblR5cGU7CiAKICAgcHJpdmF0ZSBOZXR3b3JrTW9uaXRvcigpIHsKICAgICBuYXRp
dmVOZXR3b3JrT2JzZXJ2ZXJzID0gbmV3IEFycmF5TGlzdDxMb25nPigpOwogICAgIG5ldHdvcmtP
YnNlcnZlcnMgPSBuZXcgQXJyYXlMaXN0PE5ldHdvcmtPYnNlcnZlcj4oKTsKICAgICBudW1PYnNl
cnZlcnMgPSAwOwotICAgIGN1cnJlbnRDb25uZWN0aW9uVHlwZSA9IENvbm5lY3Rpb25UeXBlLkNP
Tk5FQ1RJT05fVU5LTk9XTjsKKyAgICBjdXJyZW50Q29ubmVjdGlvblR5cGUgPSBOZXR3b3JrTW9u
aXRvckF1dG9EZXRlY3QuQ29ubmVjdGlvblR5cGUuQ09OTkVDVElPTl9VTktOT1dOOwogICB9CiAK
ICAgLy8gVE9ETyhzYWthbCk6IFJlbW92ZSBvbmNlIGRvd25zdHJlYW0gZGVwZW5kZW5jaWVzIGhh
dmUgYmVlbiB1cGRhdGVkLgpAQCAtMTU1LDcgKzE1NCw3IEBAIHB1YmxpYyBjbGFzcyBOZXR3b3Jr
TW9uaXRvciB7CiAgICAgcmV0dXJuIEJ1aWxkLlZFUlNJT04uU0RLX0lOVDsKICAgfQogCi0gIHBy
aXZhdGUgQ29ubmVjdGlvblR5cGUgZ2V0Q3VycmVudENvbm5lY3Rpb25UeXBlKCkgeworICBwcml2
YXRlIE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5Db25uZWN0aW9uVHlwZSBnZXRDdXJyZW50Q29u
bmVjdGlvblR5cGUoKSB7CiAgICAgcmV0dXJuIGN1cnJlbnRDb25uZWN0aW9uVHlwZTsKICAgfQog
CkBAIC0xNjksMTIgKzE2OCwxMyBAQCBwdWJsaWMgY2xhc3MgTmV0d29ya01vbml0b3IgewogICAg
IHJldHVybiBuZXcgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0KG5ldyBOZXR3b3JrTW9uaXRvckF1
dG9EZXRlY3QuT2JzZXJ2ZXIoKSB7CiAKICAgICAgIEBPdmVycmlkZQotICAgICAgcHVibGljIHZv
aWQgb25Db25uZWN0aW9uVHlwZUNoYW5nZWQoQ29ubmVjdGlvblR5cGUgbmV3Q29ubmVjdGlvblR5
cGUpIHsKKyAgICAgIHB1YmxpYyB2b2lkIG9uQ29ubmVjdGlvblR5cGVDaGFuZ2VkKAorICAgICAg
ICAgIE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5Db25uZWN0aW9uVHlwZSBuZXdDb25uZWN0aW9u
VHlwZSkgewogICAgICAgICB1cGRhdGVDdXJyZW50Q29ubmVjdGlvblR5cGUobmV3Q29ubmVjdGlv
blR5cGUpOwogICAgICAgfQogCiAgICAgICBAT3ZlcnJpZGUKLSAgICAgIHB1YmxpYyB2b2lkIG9u
TmV0d29ya0Nvbm5lY3QoTmV0d29ya0luZm9ybWF0aW9uIG5ldHdvcmtJbmZvKSB7CisgICAgICBw
dWJsaWMgdm9pZCBvbk5ldHdvcmtDb25uZWN0KE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5OZXR3
b3JrSW5mb3JtYXRpb24gbmV0d29ya0luZm8pIHsKICAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzT2ZO
ZXR3b3JrQ29ubmVjdChuZXR3b3JrSW5mbyk7CiAgICAgICB9CiAKQEAgLTE4NSwxMyArMTg1LDE1
IEBAIHB1YmxpYyBjbGFzcyBOZXR3b3JrTW9uaXRvciB7CiAgICAgfSwgYXBwQ29udGV4dCk7CiAg
IH0KIAotICBwcml2YXRlIHZvaWQgdXBkYXRlQ3VycmVudENvbm5lY3Rpb25UeXBlKENvbm5lY3Rp
b25UeXBlIG5ld0Nvbm5lY3Rpb25UeXBlKSB7CisgIHByaXZhdGUgdm9pZCB1cGRhdGVDdXJyZW50
Q29ubmVjdGlvblR5cGUoCisgICAgICBOZXR3b3JrTW9uaXRvckF1dG9EZXRlY3QuQ29ubmVjdGlv
blR5cGUgbmV3Q29ubmVjdGlvblR5cGUpIHsKICAgICBjdXJyZW50Q29ubmVjdGlvblR5cGUgPSBu
ZXdDb25uZWN0aW9uVHlwZTsKICAgICBub3RpZnlPYnNlcnZlcnNPZkNvbm5lY3Rpb25UeXBlQ2hh
bmdlKG5ld0Nvbm5lY3Rpb25UeXBlKTsKICAgfQogCiAgIC8qKiBBbGVydHMgYWxsIG9ic2VydmVy
cyBvZiBhIGNvbm5lY3Rpb24gY2hhbmdlLiAqLwotICBwcml2YXRlIHZvaWQgbm90aWZ5T2JzZXJ2
ZXJzT2ZDb25uZWN0aW9uVHlwZUNoYW5nZShDb25uZWN0aW9uVHlwZSBuZXdDb25uZWN0aW9uVHlw
ZSkgeworICBwcml2YXRlIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzT2ZDb25uZWN0aW9uVHlwZUNoYW5n
ZSgKKyAgICAgIE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5Db25uZWN0aW9uVHlwZSBuZXdDb25u
ZWN0aW9uVHlwZSkgewogICAgIExpc3Q8TG9uZz4gbmF0aXZlT2JzZXJ2ZXJzID0gZ2V0TmF0aXZl
TmV0d29ya09ic2VydmVyc1N5bmMoKTsKICAgICBmb3IgKExvbmcgbmF0aXZlT2JzZXJ2ZXIgOiBu
YXRpdmVPYnNlcnZlcnMpIHsKICAgICAgIG5hdGl2ZU5vdGlmeUNvbm5lY3Rpb25UeXBlQ2hhbmdl
ZChuYXRpdmVPYnNlcnZlcik7CkBAIC0yMDYsNyArMjA4LDggQEAgcHVibGljIGNsYXNzIE5ldHdv
cmtNb25pdG9yIHsKICAgICB9CiAgIH0KIAotICBwcml2YXRlIHZvaWQgbm90aWZ5T2JzZXJ2ZXJz
T2ZOZXR3b3JrQ29ubmVjdChOZXR3b3JrSW5mb3JtYXRpb24gbmV0d29ya0luZm8pIHsKKyAgcHJp
dmF0ZSB2b2lkIG5vdGlmeU9ic2VydmVyc09mTmV0d29ya0Nvbm5lY3QoCisgICAgICBOZXR3b3Jr
TW9uaXRvckF1dG9EZXRlY3QuTmV0d29ya0luZm9ybWF0aW9uIG5ldHdvcmtJbmZvKSB7CiAgICAg
TGlzdDxMb25nPiBuYXRpdmVPYnNlcnZlcnMgPSBnZXROYXRpdmVOZXR3b3JrT2JzZXJ2ZXJzU3lu
YygpOwogICAgIGZvciAoTG9uZyBuYXRpdmVPYnNlcnZlciA6IG5hdGl2ZU9ic2VydmVycykgewog
ICAgICAgbmF0aXZlTm90aWZ5T2ZOZXR3b3JrQ29ubmVjdChuYXRpdmVPYnNlcnZlciwgbmV0d29y
a0luZm8pOwpAQCAtMjIxLDcgKzIyNCw3IEBAIHB1YmxpYyBjbGFzcyBOZXR3b3JrTW9uaXRvciB7
CiAgIH0KIAogICBwcml2YXRlIHZvaWQgdXBkYXRlT2JzZXJ2ZXJBY3RpdmVOZXR3b3JrTGlzdChs
b25nIG5hdGl2ZU9ic2VydmVyKSB7Ci0gICAgTGlzdDxOZXR3b3JrSW5mb3JtYXRpb24+IG5ldHdv
cmtJbmZvTGlzdDsKKyAgICBMaXN0PE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5OZXR3b3JrSW5m
b3JtYXRpb24+IG5ldHdvcmtJbmZvTGlzdDsKICAgICBzeW5jaHJvbml6ZWQgKGF1dG9EZXRlY3RM
b2NrKSB7CiAgICAgICBuZXR3b3JrSW5mb0xpc3QgPSAoYXV0b0RldGVjdCA9PSBudWxsKSA/IG51
bGwgOiBhdXRvRGV0ZWN0LmdldEFjdGl2ZU5ldHdvcmtMaXN0KCk7CiAgICAgfQpAQCAtMjI5LDcg
KzIzMiw4IEBAIHB1YmxpYyBjbGFzcyBOZXR3b3JrTW9uaXRvciB7CiAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgTmV0d29ya0luZm9ybWF0aW9uW10gbmV0d29ya0luZm9zID0gbmV3IE5ldHdv
cmtJbmZvcm1hdGlvbltuZXR3b3JrSW5mb0xpc3Quc2l6ZSgpXTsKKyAgICBOZXR3b3JrTW9uaXRv
ckF1dG9EZXRlY3QuTmV0d29ya0luZm9ybWF0aW9uW10gbmV0d29ya0luZm9zID0KKyAgICAgICAg
bmV3IE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5OZXR3b3JrSW5mb3JtYXRpb25bbmV0d29ya0lu
Zm9MaXN0LnNpemUoKV07CiAgICAgbmV0d29ya0luZm9zID0gbmV0d29ya0luZm9MaXN0LnRvQXJy
YXkobmV0d29ya0luZm9zKTsKICAgICBuYXRpdmVOb3RpZnlPZkFjdGl2ZU5ldHdvcmtMaXN0KG5h
dGl2ZU9ic2VydmVyLCBuZXR3b3JrSW5mb3MpOwogICB9CkBAIC0yNzQsMTcgKzI3OCwxOCBAQCBw
dWJsaWMgY2xhc3MgTmV0d29ya01vbml0b3IgewogCiAgIC8qKiBDaGVja3MgaWYgdGhlcmUgY3Vy
cmVudGx5IGlzIGNvbm5lY3Rpdml0eS4gKi8KICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzT25s
aW5lKCkgewotICAgIENvbm5lY3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBlID0gZ2V0SW5zdGFuY2Uo
KS5nZXRDdXJyZW50Q29ubmVjdGlvblR5cGUoKTsKLSAgICByZXR1cm4gY29ubmVjdGlvblR5cGUg
IT0gQ29ubmVjdGlvblR5cGUuQ09OTkVDVElPTl9OT05FOworICAgIE5ldHdvcmtNb25pdG9yQXV0
b0RldGVjdC5Db25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSA9CisgICAgICAgIGdldEluc3Rh
bmNlKCkuZ2V0Q3VycmVudENvbm5lY3Rpb25UeXBlKCk7CisgICAgcmV0dXJuIGNvbm5lY3Rpb25U
eXBlICE9IE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5Db25uZWN0aW9uVHlwZS5DT05ORUNUSU9O
X05PTkU7CiAgIH0KIAogICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZU5vdGlmeUNvbm5lY3Rp
b25UeXBlQ2hhbmdlZChsb25nIG5hdGl2ZUFuZHJvaWROZXR3b3JrTW9uaXRvcik7CiAgIHByaXZh
dGUgbmF0aXZlIHZvaWQgbmF0aXZlTm90aWZ5T2ZOZXR3b3JrQ29ubmVjdCgKLSAgICAgIGxvbmcg
bmF0aXZlQW5kcm9pZE5ldHdvcmtNb25pdG9yLCBOZXR3b3JrSW5mb3JtYXRpb24gbmV0d29ya0lu
Zm8pOworICAgICAgbG9uZyBuYXRpdmVBbmRyb2lkTmV0d29ya01vbml0b3IsIE5ldHdvcmtNb25p
dG9yQXV0b0RldGVjdC5OZXR3b3JrSW5mb3JtYXRpb24gbmV0d29ya0luZm8pOwogICBwcml2YXRl
IG5hdGl2ZSB2b2lkIG5hdGl2ZU5vdGlmeU9mTmV0d29ya0Rpc2Nvbm5lY3QoCiAgICAgICBsb25n
IG5hdGl2ZUFuZHJvaWROZXR3b3JrTW9uaXRvciwgbG9uZyBuZXR3b3JrSGFuZGxlKTsKICAgcHJp
dmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVOb3RpZnlPZkFjdGl2ZU5ldHdvcmtMaXN0KAotICAgICAg
bG9uZyBuYXRpdmVBbmRyb2lkTmV0d29ya01vbml0b3IsIE5ldHdvcmtJbmZvcm1hdGlvbltdIG5l
dHdvcmtJbmZvcyk7CisgICAgICBsb25nIG5hdGl2ZUFuZHJvaWROZXR3b3JrTW9uaXRvciwgTmV0
d29ya01vbml0b3JBdXRvRGV0ZWN0Lk5ldHdvcmtJbmZvcm1hdGlvbltdIG5ldHdvcmtJbmZvcyk7
CiAKICAgLy8gRm9yIHRlc3Rpbmcgb25seS4KICAgQE51bGxhYmxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3Jn
L3dlYnJ0Yy9OZXR3b3JrTW9uaXRvckF1dG9EZXRlY3QuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL05ldHdv
cmtNb25pdG9yQXV0b0RldGVjdC5qYXZhCmluZGV4IDNkNzRmNWZkN2M1ZGE0ZDgyYzk0YzJlOWNk
ZWNkZjRhMDFiOWFjZDEuLjE3OWY4M2QzNzYxYmUxYmM1MDhiMjZkZGMzZDFiZTZmYzc3ZmQzZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL05ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5qYXZhCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L2FwaS9vcmcvd2VicnRjL05ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5qYXZhCkBAIC0yOTcsNyAr
Mjk3LDggQEAgcHVibGljIGNsYXNzIE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdCBleHRlbmRzIEJy
b2FkY2FzdFJlY2VpdmVyIHsKICAgICAgICAgICAvLyBodHRwczovL2FuZHJvaWQuZ29vZ2xlc291
cmNlLmNvbS9wbGF0Zm9ybS9mcmFtZXdvcmtzL2Jhc2UvKy9kNmE3OTgwZAogICAgICAgICAgIE5l
dHdvcmtJbmZvIHVuZGVybHlpbmdBY3RpdmVOZXR3b3JrSW5mbyA9IGNvbm5lY3Rpdml0eU1hbmFn
ZXIuZ2V0QWN0aXZlTmV0d29ya0luZm8oKTsKICAgICAgICAgICAvLyBXZSB1c2UgdGhlIE5ldHdv
cmtJbmZvIG9mIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgaWYgaXQgaXMgbm90IG9mIFRZUEVfVlBO
IGl0c2VsZi4KLSAgICAgICAgICBpZiAodW5kZXJseWluZ0FjdGl2ZU5ldHdvcmtJbmZvLmdldFR5
cGUoKSAhPSBDb25uZWN0aXZpdHlNYW5hZ2VyLlRZUEVfVlBOKSB7CisgICAgICAgICAgaWYgKHVu
ZGVybHlpbmdBY3RpdmVOZXR3b3JrSW5mbyAhPSBudWxsCisgICAgICAgICAgICAgICYmIHVuZGVy
bHlpbmdBY3RpdmVOZXR3b3JrSW5mby5nZXRUeXBlKCkgIT0gQ29ubmVjdGl2aXR5TWFuYWdlci5U
WVBFX1ZQTikgewogICAgICAgICAgICAgcmV0dXJuIG5ldyBOZXR3b3JrU3RhdGUobmV0d29ya0lu
Zm8uaXNDb25uZWN0ZWQoKSwgQ29ubmVjdGl2aXR5TWFuYWdlci5UWVBFX1ZQTiwgLTEsCiAgICAg
ICAgICAgICAgICAgdW5kZXJseWluZ0FjdGl2ZU5ldHdvcmtJbmZvLmdldFR5cGUoKSwgdW5kZXJs
eWluZ0FjdGl2ZU5ldHdvcmtJbmZvLmdldFN1YnR5cGUoKSk7CiAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvYXBpL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb24uamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1BlZXJD
b25uZWN0aW9uLmphdmEKaW5kZXggODRkNDllYmI4YTdkY2Q0MTJkNDA5NmI5YzJjYjBhMTcyZDM5
YjJjYS4uNDdjNTRlZTU0OWM0Zjk4YTg2MGUzNDAxMzA2N2RmYmU4ZDk2OGIwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
YXBpL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb24uamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9QZWVy
Q29ubmVjdGlvbi5qYXZhCkBAIC0xNCw2ICsxNCw5IEBAIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlM
aXN0OwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuTGlz
dDsKIGltcG9ydCBqYXZheC5hbm5vdGF0aW9uLk51bGxhYmxlOworaW1wb3J0IG9yZy53ZWJydGMu
RGF0YUNoYW5uZWw7CitpbXBvcnQgb3JnLndlYnJ0Yy5NZWRpYVN0cmVhbVRyYWNrOworaW1wb3J0
IG9yZy53ZWJydGMuUnRwVHJhbnNjZWl2ZXI7CiAKIC8qKgogICogSmF2YS1sYW5kIHZlcnNpb24g
b2YgdGhlIFBlZXJDb25uZWN0aW9uIEFQSXM7IHdyYXBzIHRoZSBDKysgQVBJCkBAIC01MCw2ICs1
MywyMSBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb24gewogICAgIH0KICAgfQogCisgIC8q
KiBUcmFja3MgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUgKi8K
KyAgcHVibGljIGVudW0gUGVlckNvbm5lY3Rpb25TdGF0ZSB7CisgICAgTkVXLAorICAgIENPTk5F
Q1RJTkcsCisgICAgQ09OTkVDVEVELAorICAgIERJU0NPTk5FQ1RFRCwKKyAgICBGQUlMRUQsCisg
ICAgQ0xPU0VEOworCisgICAgQENhbGxlZEJ5TmF0aXZlKCJQZWVyQ29ubmVjdGlvblN0YXRlIikK
KyAgICBzdGF0aWMgUGVlckNvbm5lY3Rpb25TdGF0ZSBmcm9tTmF0aXZlSW5kZXgoaW50IG5hdGl2
ZUluZGV4KSB7CisgICAgICByZXR1cm4gdmFsdWVzKClbbmF0aXZlSW5kZXhdOworICAgIH0KKyAg
fQorCiAgIC8qKiBUcmFja3MgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlRsc0NlcnRQb2xpY3kg
Ki8KICAgcHVibGljIGVudW0gVGxzQ2VydFBvbGljeSB7CiAgICAgVExTX0NFUlRfUE9MSUNZX1NF
Q1VSRSwKQEAgLTc5LDYgKzk3LDEwIEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbiB7CiAg
ICAgLyoqIFRyaWdnZXJlZCB3aGVuIHRoZSBJY2VDb25uZWN0aW9uU3RhdGUgY2hhbmdlcy4gKi8K
ICAgICBAQ2FsbGVkQnlOYXRpdmUoIk9ic2VydmVyIikgdm9pZCBvbkljZUNvbm5lY3Rpb25DaGFu
Z2UoSWNlQ29ubmVjdGlvblN0YXRlIG5ld1N0YXRlKTsKIAorICAgIC8qKiBUcmlnZ2VyZWQgd2hl
biB0aGUgUGVlckNvbm5lY3Rpb25TdGF0ZSBjaGFuZ2VzLiAqLworICAgIEBDYWxsZWRCeU5hdGl2
ZSgiT2JzZXJ2ZXIiKQorICAgIGRlZmF1bHQgdm9pZCBvbkNvbm5lY3Rpb25DaGFuZ2UoUGVlckNv
bm5lY3Rpb25TdGF0ZSBuZXdTdGF0ZSkge30KKwogICAgIC8qKiBUcmlnZ2VyZWQgd2hlbiB0aGUg
SUNFIGNvbm5lY3Rpb24gcmVjZWl2aW5nIHN0YXR1cyBjaGFuZ2VzLiAqLwogICAgIEBDYWxsZWRC
eU5hdGl2ZSgiT2JzZXJ2ZXIiKSB2b2lkIG9uSWNlQ29ubmVjdGlvblJlY2VpdmluZ0NoYW5nZShi
b29sZWFuIHJlY2VpdmluZyk7CiAKQEAgLTM4NSw2ICs0MDcsNyBAQCBwdWJsaWMgY2xhc3MgUGVl
ckNvbm5lY3Rpb24gewogICAgIHB1YmxpYyBJY2VUcmFuc3BvcnRzVHlwZSBpY2VUcmFuc3BvcnRz
VHlwZTsKICAgICBwdWJsaWMgTGlzdDxJY2VTZXJ2ZXI+IGljZVNlcnZlcnM7CiAgICAgcHVibGlj
IEJ1bmRsZVBvbGljeSBidW5kbGVQb2xpY3k7CisgICAgQE51bGxhYmxlIHB1YmxpYyBSdGNDZXJ0
aWZpY2F0ZVBlbSBjZXJ0aWZpY2F0ZTsKICAgICBwdWJsaWMgUnRjcE11eFBvbGljeSBydGNwTXV4
UG9saWN5OwogICAgIHB1YmxpYyBUY3BDYW5kaWRhdGVQb2xpY3kgdGNwQ2FuZGlkYXRlUG9saWN5
OwogICAgIHB1YmxpYyBDYW5kaWRhdGVOZXR3b3JrUG9saWN5IGNhbmRpZGF0ZU5ldHdvcmtQb2xp
Y3k7CkBAIC00NjEsNiArNDg0LDI1IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbiB7CiAg
ICAgLy8gZXZlcnkgb2ZmZXIvYW5zd2VyIG5lZ290aWF0aW9uLlRoaXMgaXMgb25seSBpbnRlbmRl
ZCB0byBiZSBhIHdvcmthcm91bmQgZm9yIGNyYnVnLmNvbS84MzU5NTgKICAgICBwdWJsaWMgYm9v
bGVhbiBhY3RpdmVSZXNldFNydHBQYXJhbXM7CiAKKyAgICAvKgorICAgICAqIEV4cGVyaW1lbnRh
bCBmbGFnIHRoYXQgZW5hYmxlcyBhIHVzZSBvZiBtZWRpYSB0cmFuc3BvcnQuIElmIHRoaXMgaXMg
dHJ1ZSwgdGhlIG1lZGlhIHRyYW5zcG9ydAorICAgICAqIGZhY3RvcnkgTVVTVCBiZSBwcm92aWRl
ZCB0byB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5LgorICAgICAqLworICAgIHB1YmxpYyBib29s
ZWFuIHVzZU1lZGlhVHJhbnNwb3J0OworCisgICAgLyoKKyAgICAgKiBFeHBlcmltZW50YWwgZmxh
ZyB0aGF0IGVuYWJsZXMgYSB1c2Ugb2YgbWVkaWEgdHJhbnNwb3J0IGZvciBkYXRhIGNoYW5uZWxz
LiBJZiB0aGlzIGlzIHRydWUsCisgICAgICogdGhlIG1lZGlhIHRyYW5zcG9ydCBmYWN0b3J5IE1V
U1QgYmUgcHJvdmlkZWQgdG8gdGhlIFBlZXJDb25uZWN0aW9uRmFjdG9yeS4KKyAgICAgKi8KKyAg
ICBwdWJsaWMgYm9vbGVhbiB1c2VNZWRpYVRyYW5zcG9ydEZvckRhdGFDaGFubmVsczsKKworICAg
IC8qKgorICAgICAqIERlZmluZXMgYWR2YW5jZWQgb3B0aW9uYWwgY3J5cHRvZ3JhcGhpYyBzZXR0
aW5ncyByZWxhdGVkIHRvIFNSVFAgYW5kCisgICAgICogZnJhbWUgZW5jcnlwdGlvbiBmb3IgbmF0
aXZlIFdlYlJUQy4gU2V0dGluZyB0aGlzIHdpbGwgb3ZlcndyaXRlIGFueQorICAgICAqIG9wdGlv
bnMgc2V0IHRocm91Z2ggdGhlIFBlZXJDb25uZWN0aW9uRmFjdG9yeSAod2hpY2ggaXMgZGVwcmVj
YXRlZCkuCisgICAgICovCisgICAgQE51bGxhYmxlIHB1YmxpYyBDcnlwdG9PcHRpb25zIGNyeXB0
b09wdGlvbnM7CisKICAgICAvLyBUT0RPKGRlYWRiZWVmKTogSW5zdGVhZCBvZiBkdXBsaWNhdGlu
ZyB0aGUgZGVmYXVsdHMgaGVyZSwgd2Ugc2hvdWxkIGRvCiAgICAgLy8gc29tZXRoaW5nIHRvIHBp
Y2sgdXAgdGhlIGRlZmF1bHRzIGZyb20gQysrLiBUaGUgT2JqZWN0aXZlLUMgZXF1aXZhbGVudAog
ICAgIC8vIG9mIFJUQ0NvbmZpZ3VyYXRpb24gZG9lcyB0aGF0LgpAQCAtNTAwLDYgKzU0Miw5IEBA
IHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbiB7CiAgICAgICBuZXR3b3JrUHJlZmVyZW5jZSA9
IEFkYXB0ZXJUeXBlLlVOS05PV047CiAgICAgICBzZHBTZW1hbnRpY3MgPSBTZHBTZW1hbnRpY3Mu
UExBTl9COwogICAgICAgYWN0aXZlUmVzZXRTcnRwUGFyYW1zID0gZmFsc2U7CisgICAgICB1c2VN
ZWRpYVRyYW5zcG9ydCA9IGZhbHNlOworICAgICAgdXNlTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hh
bm5lbHMgPSBmYWxzZTsKKyAgICAgIGNyeXB0b09wdGlvbnMgPSBudWxsOwogICAgIH0KIAogICAg
IEBDYWxsZWRCeU5hdGl2ZSgiUlRDQ29uZmlndXJhdGlvbiIpCkBAIC01MTcsNiArNTYyLDEyIEBA
IHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbiB7CiAgICAgICByZXR1cm4gYnVuZGxlUG9saWN5
OwogICAgIH0KIAorICAgIEBOdWxsYWJsZQorICAgIEBDYWxsZWRCeU5hdGl2ZSgiUlRDQ29uZmln
dXJhdGlvbiIpCisgICAgUnRjQ2VydGlmaWNhdGVQZW0gZ2V0Q2VydGlmaWNhdGUoKSB7CisgICAg
ICByZXR1cm4gY2VydGlmaWNhdGU7CisgICAgfQorCiAgICAgQENhbGxlZEJ5TmF0aXZlKCJSVEND
b25maWd1cmF0aW9uIikKICAgICBSdGNwTXV4UG9saWN5IGdldFJ0Y3BNdXhQb2xpY3koKSB7CiAg
ICAgICByZXR1cm4gcnRjcE11eFBvbGljeTsKQEAgLTY5Miw2ICs3NDMsMjIgQEAgcHVibGljIGNs
YXNzIFBlZXJDb25uZWN0aW9uIHsKICAgICBib29sZWFuIGdldEFjdGl2ZVJlc2V0U3J0cFBhcmFt
cygpIHsKICAgICAgIHJldHVybiBhY3RpdmVSZXNldFNydHBQYXJhbXM7CiAgICAgfQorCisgICAg
QENhbGxlZEJ5TmF0aXZlKCJSVENDb25maWd1cmF0aW9uIikKKyAgICBib29sZWFuIGdldFVzZU1l
ZGlhVHJhbnNwb3J0KCkgeworICAgICAgcmV0dXJuIHVzZU1lZGlhVHJhbnNwb3J0OworICAgIH0K
KworICAgIEBDYWxsZWRCeU5hdGl2ZSgiUlRDQ29uZmlndXJhdGlvbiIpCisgICAgYm9vbGVhbiBn
ZXRVc2VNZWRpYVRyYW5zcG9ydEZvckRhdGFDaGFubmVscygpIHsKKyAgICAgIHJldHVybiB1c2VN
ZWRpYVRyYW5zcG9ydEZvckRhdGFDaGFubmVsczsKKyAgICB9CisKKyAgICBATnVsbGFibGUKKyAg
ICBAQ2FsbGVkQnlOYXRpdmUoIlJUQ0NvbmZpZ3VyYXRpb24iKQorICAgIENyeXB0b09wdGlvbnMg
Z2V0Q3J5cHRvT3B0aW9ucygpIHsKKyAgICAgIHJldHVybiBjcnlwdG9PcHRpb25zOworICAgIH0K
ICAgfTsKIAogICBwcml2YXRlIGZpbmFsIExpc3Q8TWVkaWFTdHJlYW0+IGxvY2FsU3RyZWFtcyA9
IG5ldyBBcnJheUxpc3Q8PigpOwpAQCAtNzIxLDYgKzc4OCwxMCBAQCBwdWJsaWMgY2xhc3MgUGVl
ckNvbm5lY3Rpb24gewogICAgIHJldHVybiBuYXRpdmVHZXRSZW1vdGVEZXNjcmlwdGlvbigpOwog
ICB9CiAKKyAgcHVibGljIFJ0Y0NlcnRpZmljYXRlUGVtIGdldENlcnRpZmljYXRlKCkgeworICAg
IHJldHVybiBuYXRpdmVHZXRDZXJ0aWZpY2F0ZSgpOworICB9CisKICAgcHVibGljIERhdGFDaGFu
bmVsIGNyZWF0ZURhdGFDaGFubmVsKFN0cmluZyBsYWJlbCwgRGF0YUNoYW5uZWwuSW5pdCBpbml0
KSB7CiAgICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZURhdGFDaGFubmVsKGxhYmVsLCBpbml0KTsKICAg
fQpAQCAtMTA0NCw2ICsxMTE1LDEwIEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbiB7CiAg
ICAgcmV0dXJuIG5hdGl2ZUljZUNvbm5lY3Rpb25TdGF0ZSgpOwogICB9CiAKKyAgcHVibGljIFBl
ZXJDb25uZWN0aW9uU3RhdGUgY29ubmVjdGlvblN0YXRlKCkgeworICAgIHJldHVybiBuYXRpdmVD
b25uZWN0aW9uU3RhdGUoKTsKKyAgfQorCiAgIHB1YmxpYyBJY2VHYXRoZXJpbmdTdGF0ZSBpY2VH
YXRoZXJpbmdTdGF0ZSgpIHsKICAgICByZXR1cm4gbmF0aXZlSWNlR2F0aGVyaW5nU3RhdGUoKTsK
ICAgfQpAQCAtMTEwNyw2ICsxMTgyLDcgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uIHsK
ICAgcHJpdmF0ZSBuYXRpdmUgbG9uZyBuYXRpdmVHZXROYXRpdmVQZWVyQ29ubmVjdGlvbigpOwog
ICBwcml2YXRlIG5hdGl2ZSBTZXNzaW9uRGVzY3JpcHRpb24gbmF0aXZlR2V0TG9jYWxEZXNjcmlw
dGlvbigpOwogICBwcml2YXRlIG5hdGl2ZSBTZXNzaW9uRGVzY3JpcHRpb24gbmF0aXZlR2V0UmVt
b3RlRGVzY3JpcHRpb24oKTsKKyAgcHJpdmF0ZSBuYXRpdmUgUnRjQ2VydGlmaWNhdGVQZW0gbmF0
aXZlR2V0Q2VydGlmaWNhdGUoKTsKICAgcHJpdmF0ZSBuYXRpdmUgRGF0YUNoYW5uZWwgbmF0aXZl
Q3JlYXRlRGF0YUNoYW5uZWwoU3RyaW5nIGxhYmVsLCBEYXRhQ2hhbm5lbC5Jbml0IGluaXQpOwog
ICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZUNyZWF0ZU9mZmVyKFNkcE9ic2VydmVyIG9ic2Vy
dmVyLCBNZWRpYUNvbnN0cmFpbnRzIGNvbnN0cmFpbnRzKTsKICAgcHJpdmF0ZSBuYXRpdmUgdm9p
ZCBuYXRpdmVDcmVhdGVBbnN3ZXIoU2RwT2JzZXJ2ZXIgb2JzZXJ2ZXIsIE1lZGlhQ29uc3RyYWlu
dHMgY29uc3RyYWludHMpOwpAQCAtMTExNyw2ICsxMTkzLDcgQEAgcHVibGljIGNsYXNzIFBlZXJD
b25uZWN0aW9uIHsKICAgcHJpdmF0ZSBuYXRpdmUgYm9vbGVhbiBuYXRpdmVTZXRCaXRyYXRlKElu
dGVnZXIgbWluLCBJbnRlZ2VyIGN1cnJlbnQsIEludGVnZXIgbWF4KTsKICAgcHJpdmF0ZSBuYXRp
dmUgU2lnbmFsaW5nU3RhdGUgbmF0aXZlU2lnbmFsaW5nU3RhdGUoKTsKICAgcHJpdmF0ZSBuYXRp
dmUgSWNlQ29ubmVjdGlvblN0YXRlIG5hdGl2ZUljZUNvbm5lY3Rpb25TdGF0ZSgpOworICBwcml2
YXRlIG5hdGl2ZSBQZWVyQ29ubmVjdGlvblN0YXRlIG5hdGl2ZUNvbm5lY3Rpb25TdGF0ZSgpOwog
ICBwcml2YXRlIG5hdGl2ZSBJY2VHYXRoZXJpbmdTdGF0ZSBuYXRpdmVJY2VHYXRoZXJpbmdTdGF0
ZSgpOwogICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZUNsb3NlKCk7CiAgIHByaXZhdGUgc3Rh
dGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIoT2JzZXJ2
ZXIgb2JzZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25GYWN0
b3J5LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvbkZhY3RvcnkuamF2YQppbmRleCBl
Yjk4ZTkyM2Y2Y2M4NTZjZjgwNjBlNWRlYzY3ZTkwM2I4ZWM5ZGUwLi4wMThmYjc2ZTg1NzBjNDM3
OWM0ZjMxYTNkYTY2ZWY5ZmI3MjM0YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9QZWVyQ29u
bmVjdGlvbkZhY3RvcnkuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvbkZhY3Rv
cnkuamF2YQpAQCAtMTQsNiArMTQsNyBAQCBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7
CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YXguYW5ub3RhdGlvbi5OdWxsYWJs
ZTsKIGltcG9ydCBvcmcud2VicnRjLkxvZ2dpbmcuU2V2ZXJpdHk7CitpbXBvcnQgb3JnLndlYnJ0
Yy5QZWVyQ29ubmVjdGlvbjsKIGltcG9ydCBvcmcud2VicnRjLmF1ZGlvLkF1ZGlvRGV2aWNlTW9k
dWxlOwogaW1wb3J0IG9yZy53ZWJydGMuYXVkaW8uTGVnYWN5QXVkaW9EZXZpY2VNb2R1bGU7CiAK
QEAgLTEyMiw4ICsxMjMsNiBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsK
ICAgICBwdWJsaWMgaW50IG5ldHdvcmtJZ25vcmVNYXNrOwogICAgIHB1YmxpYyBib29sZWFuIGRp
c2FibGVFbmNyeXB0aW9uOwogICAgIHB1YmxpYyBib29sZWFuIGRpc2FibGVOZXR3b3JrTW9uaXRv
cjsKLSAgICBwdWJsaWMgYm9vbGVhbiBlbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOwot
ICAgIHB1YmxpYyBib29sZWFuIGVuYWJsZUdjbUNyeXB0b1N1aXRlczsKIAogICAgIEBDYWxsZWRC
eU5hdGl2ZSgiT3B0aW9ucyIpCiAgICAgaW50IGdldE5ldHdvcmtJZ25vcmVNYXNrKCkgewpAQCAt
MTM5LDI1ICsxMzgsMjAgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uRmFjdG9yeSB7CiAg
ICAgYm9vbGVhbiBnZXREaXNhYmxlTmV0d29ya01vbml0b3IoKSB7CiAgICAgICByZXR1cm4gZGlz
YWJsZU5ldHdvcmtNb25pdG9yOwogICAgIH0KLQotICAgIEBDYWxsZWRCeU5hdGl2ZSgiT3B0aW9u
cyIpCi0gICAgYm9vbGVhbiBnZXRFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKCkgewot
ICAgICAgcmV0dXJuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7Ci0gICAgfQotCi0g
ICAgQENhbGxlZEJ5TmF0aXZlKCJPcHRpb25zIikKLSAgICBib29sZWFuIGdldEVuYWJsZUdjbUNy
eXB0b1N1aXRlcygpIHsKLSAgICAgIHJldHVybiBlbmFibGVHY21DcnlwdG9TdWl0ZXM7Ci0gICAg
fQogICB9CiAKICAgcHVibGljIHN0YXRpYyBjbGFzcyBCdWlsZGVyIHsKLSAgICBwcml2YXRlIEBO
dWxsYWJsZSBPcHRpb25zIG9wdGlvbnM7Ci0gICAgcHJpdmF0ZSBATnVsbGFibGUgQXVkaW9EZXZp
Y2VNb2R1bGUgYXVkaW9EZXZpY2VNb2R1bGUgPSBuZXcgTGVnYWN5QXVkaW9EZXZpY2VNb2R1bGUo
KTsKLSAgICBwcml2YXRlIEBOdWxsYWJsZSBWaWRlb0VuY29kZXJGYWN0b3J5IGVuY29kZXJGYWN0
b3J5OwotICAgIHByaXZhdGUgQE51bGxhYmxlIFZpZGVvRGVjb2RlckZhY3RvcnkgZGVjb2RlckZh
Y3Rvcnk7Ci0gICAgcHJpdmF0ZSBATnVsbGFibGUgQXVkaW9Qcm9jZXNzaW5nRmFjdG9yeSBhdWRp
b1Byb2Nlc3NpbmdGYWN0b3J5OwotICAgIHByaXZhdGUgQE51bGxhYmxlIEZlY0NvbnRyb2xsZXJG
YWN0b3J5RmFjdG9yeUludGVyZmFjZSBmZWNDb250cm9sbGVyRmFjdG9yeUZhY3Rvcnk7CisgICAg
QE51bGxhYmxlIHByaXZhdGUgT3B0aW9ucyBvcHRpb25zOworICAgIEBOdWxsYWJsZSBwcml2YXRl
IEF1ZGlvRGV2aWNlTW9kdWxlIGF1ZGlvRGV2aWNlTW9kdWxlID0gbmV3IExlZ2FjeUF1ZGlvRGV2
aWNlTW9kdWxlKCk7CisgICAgcHJpdmF0ZSBBdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSBhdWRp
b0VuY29kZXJGYWN0b3J5RmFjdG9yeSA9CisgICAgICAgIG5ldyBCdWlsdGluQXVkaW9FbmNvZGVy
RmFjdG9yeUZhY3RvcnkoKTsKKyAgICBwcml2YXRlIEF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5
IGF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5ID0KKyAgICAgICAgbmV3IEJ1aWx0aW5BdWRpb0Rl
Y29kZXJGYWN0b3J5RmFjdG9yeSgpOworICAgIEBOdWxsYWJsZSBwcml2YXRlIFZpZGVvRW5jb2Rl
ckZhY3RvcnkgdmlkZW9FbmNvZGVyRmFjdG9yeTsKKyAgICBATnVsbGFibGUgcHJpdmF0ZSBWaWRl
b0RlY29kZXJGYWN0b3J5IHZpZGVvRGVjb2RlckZhY3Rvcnk7CisgICAgQE51bGxhYmxlIHByaXZh
dGUgQXVkaW9Qcm9jZXNzaW5nRmFjdG9yeSBhdWRpb1Byb2Nlc3NpbmdGYWN0b3J5OworICAgIEBO
dWxsYWJsZSBwcml2YXRlIEZlY0NvbnRyb2xsZXJGYWN0b3J5RmFjdG9yeUludGVyZmFjZSBmZWND
b250cm9sbGVyRmFjdG9yeUZhY3Rvcnk7CisgICAgQE51bGxhYmxlIHByaXZhdGUgTWVkaWFUcmFu
c3BvcnRGYWN0b3J5RmFjdG9yeSBtZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5OwogCiAgICAg
cHJpdmF0ZSBCdWlsZGVyKCkge30KIApAQCAtMTcxLDEzICsxNjUsMzMgQEAgcHVibGljIGNsYXNz
IFBlZXJDb25uZWN0aW9uRmFjdG9yeSB7CiAgICAgICByZXR1cm4gdGhpczsKICAgICB9CiAKLSAg
ICBwdWJsaWMgQnVpbGRlciBzZXRWaWRlb0VuY29kZXJGYWN0b3J5KFZpZGVvRW5jb2RlckZhY3Rv
cnkgZW5jb2RlckZhY3RvcnkpIHsKLSAgICAgIHRoaXMuZW5jb2RlckZhY3RvcnkgPSBlbmNvZGVy
RmFjdG9yeTsKKyAgICBwdWJsaWMgQnVpbGRlciBzZXRBdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9y
eSgKKyAgICAgICAgQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkgYXVkaW9FbmNvZGVyRmFjdG9y
eUZhY3RvcnkpIHsKKyAgICAgIGlmIChhdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSA9PSBudWxs
KSB7CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAg
ICAgICAiUGVlckNvbm5lY3Rpb25GYWN0b3J5LkJ1aWxkZXIgZG9lcyBub3QgYWNjZXB0IGEgbnVs
bCBBdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeS4iKTsKKyAgICAgIH0KKyAgICAgIHRoaXMuYXVk
aW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkgPSBhdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeTsKKyAg
ICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHB1YmxpYyBCdWlsZGVyIHNldEF1ZGlvRGVj
b2RlckZhY3RvcnlGYWN0b3J5KAorICAgICAgICBBdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeSBh
dWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeSkgeworICAgICAgaWYgKGF1ZGlvRGVjb2RlckZhY3Rv
cnlGYWN0b3J5ID09IG51bGwpIHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4
Y2VwdGlvbigKKyAgICAgICAgICAgICJQZWVyQ29ubmVjdGlvbkZhY3RvcnkuQnVpbGRlciBkb2Vz
IG5vdCBhY2NlcHQgYSBudWxsIEF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5LiIpOworICAgICAg
fQorICAgICAgdGhpcy5hdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeSA9IGF1ZGlvRGVjb2RlckZh
Y3RvcnlGYWN0b3J5OworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIEJ1
aWxkZXIgc2V0VmlkZW9FbmNvZGVyRmFjdG9yeShWaWRlb0VuY29kZXJGYWN0b3J5IHZpZGVvRW5j
b2RlckZhY3RvcnkpIHsKKyAgICAgIHRoaXMudmlkZW9FbmNvZGVyRmFjdG9yeSA9IHZpZGVvRW5j
b2RlckZhY3Rvcnk7CiAgICAgICByZXR1cm4gdGhpczsKICAgICB9CiAKLSAgICBwdWJsaWMgQnVp
bGRlciBzZXRWaWRlb0RlY29kZXJGYWN0b3J5KFZpZGVvRGVjb2RlckZhY3RvcnkgZGVjb2RlckZh
Y3RvcnkpIHsKLSAgICAgIHRoaXMuZGVjb2RlckZhY3RvcnkgPSBkZWNvZGVyRmFjdG9yeTsKKyAg
ICBwdWJsaWMgQnVpbGRlciBzZXRWaWRlb0RlY29kZXJGYWN0b3J5KFZpZGVvRGVjb2RlckZhY3Rv
cnkgdmlkZW9EZWNvZGVyRmFjdG9yeSkgeworICAgICAgdGhpcy52aWRlb0RlY29kZXJGYWN0b3J5
ID0gdmlkZW9EZWNvZGVyRmFjdG9yeTsKICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KIApAQCAt
MTk2LDkgKzIxMCwxNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKICAg
ICAgIHJldHVybiB0aGlzOwogICAgIH0KIAorICAgIC8qKiBTZXRzIGEgTWVkaWFUcmFuc3BvcnRG
YWN0b3J5RmFjdG9yeSBmb3IgYSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkuICovCisgICAgcHVibGlj
IEJ1aWxkZXIgc2V0TWVkaWFUcmFuc3BvcnRGYWN0b3J5RmFjdG9yeSgKKyAgICAgICAgTWVkaWFU
cmFuc3BvcnRGYWN0b3J5RmFjdG9yeSBtZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5KSB7Cisg
ICAgICB0aGlzLm1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkgPSBtZWRpYVRyYW5zcG9ydEZh
Y3RvcnlGYWN0b3J5OworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCiAgICAgcHVibGljIFBl
ZXJDb25uZWN0aW9uRmFjdG9yeSBjcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSB7Ci0gICAg
ICByZXR1cm4gbmV3IFBlZXJDb25uZWN0aW9uRmFjdG9yeShvcHRpb25zLCBhdWRpb0RldmljZU1v
ZHVsZSwgZW5jb2RlckZhY3RvcnksIGRlY29kZXJGYWN0b3J5LAotICAgICAgICAgIGF1ZGlvUHJv
Y2Vzc2luZ0ZhY3RvcnksIGZlY0NvbnRyb2xsZXJGYWN0b3J5RmFjdG9yeSk7CisgICAgICByZXR1
cm4gbmV3IFBlZXJDb25uZWN0aW9uRmFjdG9yeShvcHRpb25zLCBhdWRpb0RldmljZU1vZHVsZSwg
YXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnksCisgICAgICAgICAgYXVkaW9EZWNvZGVyRmFjdG9y
eUZhY3RvcnksIHZpZGVvRW5jb2RlckZhY3RvcnksIHZpZGVvRGVjb2RlckZhY3RvcnksCisgICAg
ICAgICAgYXVkaW9Qcm9jZXNzaW5nRmFjdG9yeSwgZmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5
LCBtZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5KTsKICAgICB9CiAgIH0KIApAQCAtMjc3LDE1
ICsyOTksMjQgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uRmFjdG9yeSB7CiAgIH0KIAog
ICBwcml2YXRlIFBlZXJDb25uZWN0aW9uRmFjdG9yeShPcHRpb25zIG9wdGlvbnMsIEBOdWxsYWJs
ZSBBdWRpb0RldmljZU1vZHVsZSBhdWRpb0RldmljZU1vZHVsZSwKLSAgICAgIEBOdWxsYWJsZSBW
aWRlb0VuY29kZXJGYWN0b3J5IGVuY29kZXJGYWN0b3J5LCBATnVsbGFibGUgVmlkZW9EZWNvZGVy
RmFjdG9yeSBkZWNvZGVyRmFjdG9yeSwKKyAgICAgIEF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5
IGF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LAorICAgICAgQXVkaW9EZWNvZGVyRmFjdG9yeUZh
Y3RvcnkgYXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnksCisgICAgICBATnVsbGFibGUgVmlkZW9F
bmNvZGVyRmFjdG9yeSB2aWRlb0VuY29kZXJGYWN0b3J5LAorICAgICAgQE51bGxhYmxlIFZpZGVv
RGVjb2RlckZhY3RvcnkgdmlkZW9EZWNvZGVyRmFjdG9yeSwKICAgICAgIEBOdWxsYWJsZSBBdWRp
b1Byb2Nlc3NpbmdGYWN0b3J5IGF1ZGlvUHJvY2Vzc2luZ0ZhY3RvcnksCi0gICAgICBATnVsbGFi
bGUgRmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5SW50ZXJmYWNlIGZlY0NvbnRyb2xsZXJGYWN0
b3J5RmFjdG9yeSkgeworICAgICAgQE51bGxhYmxlIEZlY0NvbnRyb2xsZXJGYWN0b3J5RmFjdG9y
eUludGVyZmFjZSBmZWNDb250cm9sbGVyRmFjdG9yeUZhY3RvcnksCisgICAgICBATnVsbGFibGUg
TWVkaWFUcmFuc3BvcnRGYWN0b3J5RmFjdG9yeSBtZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5
KSB7CiAgICAgY2hlY2tJbml0aWFsaXplSGFzQmVlbkNhbGxlZCgpOwogICAgIG5hdGl2ZUZhY3Rv
cnkgPSBuYXRpdmVDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoQ29udGV4dFV0aWxzLmdldEFw
cGxpY2F0aW9uQ29udGV4dCgpLCBvcHRpb25zLAogICAgICAgICBhdWRpb0RldmljZU1vZHVsZSA9
PSBudWxsID8gMCA6IGF1ZGlvRGV2aWNlTW9kdWxlLmdldE5hdGl2ZUF1ZGlvRGV2aWNlTW9kdWxl
UG9pbnRlcigpLAotICAgICAgICBlbmNvZGVyRmFjdG9yeSwgZGVjb2RlckZhY3RvcnksCisgICAg
ICAgIGF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LmNyZWF0ZU5hdGl2ZUF1ZGlvRW5jb2RlckZh
Y3RvcnkoKSwKKyAgICAgICAgYXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkuY3JlYXRlTmF0aXZl
QXVkaW9EZWNvZGVyRmFjdG9yeSgpLCB2aWRlb0VuY29kZXJGYWN0b3J5LAorICAgICAgICB2aWRl
b0RlY29kZXJGYWN0b3J5LAogICAgICAgICBhdWRpb1Byb2Nlc3NpbmdGYWN0b3J5ID09IG51bGwg
PyAwIDogYXVkaW9Qcm9jZXNzaW5nRmFjdG9yeS5jcmVhdGVOYXRpdmUoKSwKLSAgICAgICAgZmVj
Q29udHJvbGxlckZhY3RvcnlGYWN0b3J5ID09IG51bGwgPyAwIDogZmVjQ29udHJvbGxlckZhY3Rv
cnlGYWN0b3J5LmNyZWF0ZU5hdGl2ZSgpKTsKKyAgICAgICAgZmVjQ29udHJvbGxlckZhY3RvcnlG
YWN0b3J5ID09IG51bGwgPyAwIDogZmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5LmNyZWF0ZU5h
dGl2ZSgpLAorICAgICAgICBtZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5ID09IG51bGwKKyAg
ICAgICAgICAgID8gMAorICAgICAgICAgICAgOiBtZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5
LmNyZWF0ZU5hdGl2ZU1lZGlhVHJhbnNwb3J0RmFjdG9yeSgpKTsKICAgICBpZiAobmF0aXZlRmFj
dG9yeSA9PSAwKSB7CiAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiRmFpbGVkIHRv
IGluaXRpYWxpemUgUGVlckNvbm5lY3Rpb25GYWN0b3J5ISIpOwogICAgIH0KQEAgLTM2OSw5ICs0
MDAsMjUgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uRmFjdG9yeSB7CiAgICAgcmV0dXJu
IG5ldyBNZWRpYVN0cmVhbShuYXRpdmVDcmVhdGVMb2NhbE1lZGlhU3RyZWFtKG5hdGl2ZUZhY3Rv
cnksIGxhYmVsKSk7CiAgIH0KIAotICBwdWJsaWMgVmlkZW9Tb3VyY2UgY3JlYXRlVmlkZW9Tb3Vy
Y2UoYm9vbGVhbiBpc1NjcmVlbmNhc3QpIHsKKyAgLyoqCisgICAqIENyZWF0ZSB2aWRlbyBzb3Vy
Y2Ugd2l0aCBnaXZlbiBwYXJhbWV0ZXJzLiBJZiBhbGlnblRpbWVzdGFtcHMgaXMgZmFsc2UsIHRo
ZSBjYWxsZXIgaXMKKyAgICogcmVzcG9uc2libGUgZm9yIGFsaWduaW5nIHRoZSBmcmFtZSB0aW1l
c3RhbXBzIHRvIHJ0Yzo6VGltZU5hbm9zKCkuIFRoaXMgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZQor
ICAgKiBoaWdoZXIgYWNjdXJhY3kgaWYgdGhlcmUgaXMgYSBiaWcgZGVsYXkgYmV0d2VlbiBmcmFt
ZSBjcmVhdGlvbiBhbmQgZnJhbWVzIGJlaW5nIGRlbGl2ZXJlZCB0bworICAgKiB0aGUgcmV0dXJu
ZWQgdmlkZW8gc291cmNlLiBJZiBhbGlnblRpbWVzdGFtcHMgaXMgdHJ1ZSwgdGltZXN0YW1wcyB3
aWxsIGJlIGFsaWduZWQgdG8KKyAgICogcnRjOjpUaW1lTmFub3MoKSB3aGVuIHRoZXkgYXJyaXZl
IHRvIHRoZSByZXR1cm5lZCB2aWRlbyBzb3VyY2UuCisgICAqLworICBwdWJsaWMgVmlkZW9Tb3Vy
Y2UgY3JlYXRlVmlkZW9Tb3VyY2UoYm9vbGVhbiBpc1NjcmVlbmNhc3QsIGJvb2xlYW4gYWxpZ25U
aW1lc3RhbXBzKSB7CiAgICAgY2hlY2tQZWVyQ29ubmVjdGlvbkZhY3RvcnlFeGlzdHMoKTsKLSAg
ICByZXR1cm4gbmV3IFZpZGVvU291cmNlKG5hdGl2ZUNyZWF0ZVZpZGVvU291cmNlKG5hdGl2ZUZh
Y3RvcnksIGlzU2NyZWVuY2FzdCkpOworICAgIHJldHVybiBuZXcgVmlkZW9Tb3VyY2UobmF0aXZl
Q3JlYXRlVmlkZW9Tb3VyY2UobmF0aXZlRmFjdG9yeSwgaXNTY3JlZW5jYXN0LCBhbGlnblRpbWVz
dGFtcHMpKTsKKyAgfQorCisgIC8qKgorICAgKiBTYW1lIGFzIGFib3ZlIHdpdGggYWxpZ25UaW1l
c3RhbXBzIHNldCB0byB0cnVlLgorICAgKgorICAgKiBAc2VlICNjcmVhdGVWaWRlb1NvdXJjZShi
b29sZWFuLCBib29sZWFuKQorICAgKi8KKyAgcHVibGljIFZpZGVvU291cmNlIGNyZWF0ZVZpZGVv
U291cmNlKGJvb2xlYW4gaXNTY3JlZW5jYXN0KSB7CisgICAgcmV0dXJuIGNyZWF0ZVZpZGVvU291
cmNlKGlzU2NyZWVuY2FzdCwgLyogYWxpZ25UaW1lc3RhbXBzPSAqLyB0cnVlKTsKICAgfQogCiAg
IHB1YmxpYyBWaWRlb1RyYWNrIGNyZWF0ZVZpZGVvVHJhY2soU3RyaW5nIGlkLCBWaWRlb1NvdXJj
ZSBzb3VyY2UpIHsKQEAgLTQ4NiwxNSArNTMzLDE4IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVj
dGlvbkZhY3RvcnkgewogICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVTaHV0ZG93
bkludGVybmFsVHJhY2VyKCk7CiAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBib29sZWFuIG5hdGl2
ZVN0YXJ0SW50ZXJuYWxUcmFjaW5nQ2FwdHVyZShTdHJpbmcgdHJhY2luZ0ZpbGVuYW1lKTsKICAg
cHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlU3RvcEludGVybmFsVHJhY2luZ0NhcHR1
cmUoKTsKKwogICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVDcmVhdGVQZWVyQ29u
bmVjdGlvbkZhY3RvcnkoQ29udGV4dCBjb250ZXh0LCBPcHRpb25zIG9wdGlvbnMsCi0gICAgICBs
b25nIG5hdGl2ZUF1ZGlvRGV2aWNlTW9kdWxlLCBWaWRlb0VuY29kZXJGYWN0b3J5IGVuY29kZXJG
YWN0b3J5LAotICAgICAgVmlkZW9EZWNvZGVyRmFjdG9yeSBkZWNvZGVyRmFjdG9yeSwgbG9uZyBu
YXRpdmVBdWRpb1Byb2Nlc3NvciwKLSAgICAgIGxvbmcgbmF0aXZlRmVjQ29udHJvbGxlckZhY3Rv
cnkpOworICAgICAgbG9uZyBuYXRpdmVBdWRpb0RldmljZU1vZHVsZSwgbG9uZyBhdWRpb0VuY29k
ZXJGYWN0b3J5LCBsb25nIGF1ZGlvRGVjb2RlckZhY3RvcnksCisgICAgICBWaWRlb0VuY29kZXJG
YWN0b3J5IGVuY29kZXJGYWN0b3J5LCBWaWRlb0RlY29kZXJGYWN0b3J5IGRlY29kZXJGYWN0b3J5
LAorICAgICAgbG9uZyBuYXRpdmVBdWRpb1Byb2Nlc3NvciwgbG9uZyBuYXRpdmVGZWNDb250cm9s
bGVyRmFjdG9yeSwgbG9uZyBtZWRpYVRyYW5zcG9ydEZhY3RvcnkpOworCiAgIHByaXZhdGUgc3Rh
dGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZVBlZXJDb25uZWN0aW9uKGxvbmcgZmFjdG9yeSwK
ICAgICAgIFBlZXJDb25uZWN0aW9uLlJUQ0NvbmZpZ3VyYXRpb24gcnRjQ29uZmlnLCBNZWRpYUNv
bnN0cmFpbnRzIGNvbnN0cmFpbnRzLCBsb25nIG5hdGl2ZU9ic2VydmVyLAogICAgICAgU1NMQ2Vy
dGlmaWNhdGVWZXJpZmllciBzc2xDZXJ0aWZpY2F0ZVZlcmlmaWVyKTsKICAgcHJpdmF0ZSBzdGF0
aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlTG9jYWxNZWRpYVN0cmVhbShsb25nIGZhY3Rvcnks
IFN0cmluZyBsYWJlbCk7Ci0gIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0
ZVZpZGVvU291cmNlKGxvbmcgZmFjdG9yeSwgYm9vbGVhbiBpc19zY3JlZW5jYXN0KTsKKyAgcHJp
dmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlVmlkZW9Tb3VyY2UoCisgICAgICBs
b25nIGZhY3RvcnksIGJvb2xlYW4gaXNfc2NyZWVuY2FzdCwgYm9vbGVhbiBhbGlnblRpbWVzdGFt
cHMpOwogICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVDcmVhdGVWaWRlb1RyYWNr
KAogICAgICAgbG9uZyBmYWN0b3J5LCBTdHJpbmcgaWQsIGxvbmcgbmF0aXZlVmlkZW9Tb3VyY2Up
OwogICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVDcmVhdGVBdWRpb1NvdXJjZShs
b25nIGZhY3RvcnksIE1lZGlhQ29uc3RyYWludHMgY29uc3RyYWludHMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBp
L29yZy93ZWJydGMvUnRjQ2VydGlmaWNhdGVQZW0uamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1J0Y0NlcnRp
ZmljYXRlUGVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA3MDEzNWIzZTEyZjI3ZWY3NTM1OTZiNDVmOWNl
OWRkZjk0MTVmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1J0Y0NlcnRpZmljYXRl
UGVtLmphdmEKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworcGFja2FnZSBv
cmcud2VicnRjOworCitpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbjsKKworLyoqCisg
KiBFYXNpbHkgc3RvcmFibGUvc2VyaWFsaXphYmxlIHZlcnNpb24gb2YgYSBuYXRpdmUgQysrIFJU
Q0NlcnRpZmljYXRlUEVNLgorICovCitwdWJsaWMgY2xhc3MgUnRjQ2VydGlmaWNhdGVQZW0gewor
ICAvKiogUEVNIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHJpdmF0ZSBrZXkuICovCisg
IHB1YmxpYyBmaW5hbCBTdHJpbmcgcHJpdmF0ZUtleTsKKyAgLyoqIFBFTSBzdHJpbmcgcmVwcmVz
ZW50YXRpb24gb2YgdGhlIGNlcnRpZmljYXRlLiAqLworICBwdWJsaWMgZmluYWwgU3RyaW5nIGNl
cnRpZmljYXRlOworICAvKiogRGVmYXVsdCBleHBpcmF0aW9uIHRpbWUgb2YgMzAgZGF5cy4gKi8K
KyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBERUZBVUxUX0VYUElSWSA9IDYwICogNjAgKiAy
NCAqIDMwOworCisgIC8qKiBJbnN0YW50aWF0ZSBhbiBSdGNDZXJ0aWZpY2F0ZVBlbSBvYmplY3Qg
ZnJvbSBzdG9yZWQgc3RyaW5ncy4gKi8KKyAgQENhbGxlZEJ5TmF0aXZlCisgIHB1YmxpYyBSdGND
ZXJ0aWZpY2F0ZVBlbShTdHJpbmcgcHJpdmF0ZUtleSwgU3RyaW5nIGNlcnRpZmljYXRlKSB7Cisg
ICAgdGhpcy5wcml2YXRlS2V5ID0gcHJpdmF0ZUtleTsKKyAgICB0aGlzLmNlcnRpZmljYXRlID0g
Y2VydGlmaWNhdGU7CisgIH0KKworICBAQ2FsbGVkQnlOYXRpdmUKKyAgU3RyaW5nIGdldFByaXZh
dGVLZXkoKSB7CisgICAgcmV0dXJuIHByaXZhdGVLZXk7CisgIH0KKworICBAQ2FsbGVkQnlOYXRp
dmUKKyAgU3RyaW5nIGdldENlcnRpZmljYXRlKCkgeworICAgIHJldHVybiBjZXJ0aWZpY2F0ZTsK
KyAgfQorCisgIC8qKgorICAgKiBHZW5lcmF0ZSBhIG5ldyBSdGNDZXJ0aWZpY2F0ZVBlbSB3aXRo
IHRoZSBkZWZhdWx0IHNldHRpbmdzIG9mIEtleVR5cGUgPSBFQ0RTQSBhbmQKKyAgICogZXhwaXJl
cyA9IDMwIGRheXMuCisgICAqLworICBwdWJsaWMgc3RhdGljIFJ0Y0NlcnRpZmljYXRlUGVtIGdl
bmVyYXRlQ2VydGlmaWNhdGUoKSB7CisgICAgcmV0dXJuIG5hdGl2ZUdlbmVyYXRlQ2VydGlmaWNh
dGUoUGVlckNvbm5lY3Rpb24uS2V5VHlwZS5FQ0RTQSwgREVGQVVMVF9FWFBJUlkpOworICB9CisK
KyAgLyoqCisgICAqIEdlbmVyYXRlIGEgbmV3IFJ0Y0NlcnRpZmljYXRlUGVtIHdpdGggYSBjdXN0
b20gS2V5VHlwZSBhbmQgdGhlIGRlZmF1bHQgc2V0dGluZyBvZgorICAgKiBleHBpcmVzID0gMzAg
ZGF5cy4KKyAgICovCisgIHB1YmxpYyBzdGF0aWMgUnRjQ2VydGlmaWNhdGVQZW0gZ2VuZXJhdGVD
ZXJ0aWZpY2F0ZShQZWVyQ29ubmVjdGlvbi5LZXlUeXBlIGtleVR5cGUpIHsKKyAgICByZXR1cm4g
bmF0aXZlR2VuZXJhdGVDZXJ0aWZpY2F0ZShrZXlUeXBlLCBERUZBVUxUX0VYUElSWSk7CisgIH0K
KworICAvKioKKyAgICogR2VuZXJhdGUgYSBuZXcgUnRjQ2VydGlmaWNhdGVQZW0gd2l0aCBhIGN1
c3RvbSBleHBpcmVzIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5nIG9mCisgICAqIEtleVR5cGUgPSBF
Q0RTQS4KKyAgICovCisgIHB1YmxpYyBzdGF0aWMgUnRjQ2VydGlmaWNhdGVQZW0gZ2VuZXJhdGVD
ZXJ0aWZpY2F0ZShsb25nIGV4cGlyZXMpIHsKKyAgICByZXR1cm4gbmF0aXZlR2VuZXJhdGVDZXJ0
aWZpY2F0ZShQZWVyQ29ubmVjdGlvbi5LZXlUeXBlLkVDRFNBLCBleHBpcmVzKTsKKyAgfQorCisg
IC8qKiBHZW5lcmF0ZSBhIG5ldyBSdGNDZXJ0aWZpY2F0ZVBlbSB3aXRoIGEgY3VzdG9tIEtleVR5
cGUgYW5kIGEgY3VzdG9tIGV4cGlyZXMuICovCisgIHB1YmxpYyBzdGF0aWMgUnRjQ2VydGlmaWNh
dGVQZW0gZ2VuZXJhdGVDZXJ0aWZpY2F0ZSgKKyAgICAgIFBlZXJDb25uZWN0aW9uLktleVR5cGUg
a2V5VHlwZSwgbG9uZyBleHBpcmVzKSB7CisgICAgcmV0dXJuIG5hdGl2ZUdlbmVyYXRlQ2VydGlm
aWNhdGUoa2V5VHlwZSwgZXhwaXJlcyk7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUg
UnRjQ2VydGlmaWNhdGVQZW0gbmF0aXZlR2VuZXJhdGVDZXJ0aWZpY2F0ZSgKKyAgICAgIFBlZXJD
b25uZWN0aW9uLktleVR5cGUga2V5VHlwZSwgbG9uZyBleHBpcmVzKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2Fw
aS9vcmcvd2VicnRjL1J0cFRyYW5zY2VpdmVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9SdHBUcmFuc2Nl
aXZlci5qYXZhCmluZGV4IGE0YTVhYTA1NDA1ODFjNjExYjAxN2FhZWRmNjliYTA1NDJjZDBmZmYu
LjdmODc1ZTZjOGVhZDQ2ZDI4MWMzMTMxZTk2YzcyYmE1NTQ5Mjc4ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9v
cmcvd2VicnRjL1J0cFRyYW5zY2VpdmVyLmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvUnRwVHJhbnNj
ZWl2ZXIuamF2YQpAQCAtMTMsNiArMTMsNyBAQCBwYWNrYWdlIG9yZy53ZWJydGM7CiBpbXBvcnQg
amF2YS51dGlsLkFycmF5TGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CiBpbXBv
cnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgb3JnLndlYnJ0Yy5NZWRpYVN0cmVhbVRyYWNrOwog
CiAvKioKICAqIEphdmEgd3JhcHBlciBmb3IgYSBDKysgUnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9Tb2Z0d2FyZVZpZGVvRGVjb2RlckZhY3RvcnkuamF2
YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L2FwaS9vcmcvd2VicnRjL1NvZnR3YXJlVmlkZW9EZWNvZGVyRmFjdG9yeS5qYXZhCmluZGV4IDg2
ZGZiN2EyYzZmMjExZWNhNDFmYmMzYTljNDFhNjNlYTIwMDczMzMuLmY0MjFmMTZiMWExZjhiOTdi
ZmYwN2UzYjljNzM4MGE2YjljZTkxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1NvZnR3YXJl
VmlkZW9EZWNvZGVyRmFjdG9yeS5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1NvZnR3YXJlVmlkZW9E
ZWNvZGVyRmFjdG9yeS5qYXZhCkBAIC0yNywxMCArMjcsMTAgQEAgcHVibGljIGNsYXNzIFNvZnR3
YXJlVmlkZW9EZWNvZGVyRmFjdG9yeSBpbXBsZW1lbnRzIFZpZGVvRGVjb2RlckZhY3Rvcnkgewog
ICBAT3ZlcnJpZGUKICAgcHVibGljIFZpZGVvRGVjb2RlciBjcmVhdGVEZWNvZGVyKFZpZGVvQ29k
ZWNJbmZvIGNvZGVjVHlwZSkgewogICAgIGlmIChjb2RlY1R5cGUuZ2V0TmFtZSgpLmVxdWFsc0ln
bm9yZUNhc2UoIlZQOCIpKSB7Ci0gICAgICByZXR1cm4gbmV3IFZQOERlY29kZXIoKTsKKyAgICAg
IHJldHVybiBuZXcgTGlidnB4VnA4RGVjb2RlcigpOwogICAgIH0KLSAgICBpZiAoY29kZWNUeXBl
LmdldE5hbWUoKS5lcXVhbHNJZ25vcmVDYXNlKCJWUDkiKSAmJiBWUDlEZWNvZGVyLm5hdGl2ZUlz
U3VwcG9ydGVkKCkpIHsKLSAgICAgIHJldHVybiBuZXcgVlA5RGVjb2RlcigpOworICAgIGlmIChj
b2RlY1R5cGUuZ2V0TmFtZSgpLmVxdWFsc0lnbm9yZUNhc2UoIlZQOSIpICYmIExpYnZweFZwOURl
Y29kZXIubmF0aXZlSXNTdXBwb3J0ZWQoKSkgeworICAgICAgcmV0dXJuIG5ldyBMaWJ2cHhWcDlE
ZWNvZGVyKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGw7CkBAIC00NSw3ICs0NSw3IEBAIHB1
YmxpYyBjbGFzcyBTb2Z0d2FyZVZpZGVvRGVjb2RlckZhY3RvcnkgaW1wbGVtZW50cyBWaWRlb0Rl
Y29kZXJGYWN0b3J5IHsKICAgICBMaXN0PFZpZGVvQ29kZWNJbmZvPiBjb2RlY3MgPSBuZXcgQXJy
YXlMaXN0PFZpZGVvQ29kZWNJbmZvPigpOwogCiAgICAgY29kZWNzLmFkZChuZXcgVmlkZW9Db2Rl
Y0luZm8oIlZQOCIsIG5ldyBIYXNoTWFwPD4oKSkpOwotICAgIGlmIChWUDlEZWNvZGVyLm5hdGl2
ZUlzU3VwcG9ydGVkKCkpIHsKKyAgICBpZiAoTGlidnB4VnA5RGVjb2Rlci5uYXRpdmVJc1N1cHBv
cnRlZCgpKSB7CiAgICAgICBjb2RlY3MuYWRkKG5ldyBWaWRlb0NvZGVjSW5mbygiVlA5IiwgbmV3
IEhhc2hNYXA8PigpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9Tb2Z0d2Fy
ZVZpZGVvRW5jb2RlckZhY3RvcnkuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1NvZnR3YXJlVmlkZW9FbmNv
ZGVyRmFjdG9yeS5qYXZhCmluZGV4IGEyZGRmMzZjMzg5ZDdjMTQyOTM5YWNiZDYzODYyN2ZjYWJm
NmNhZWIuLjNjMzZjNGQ1NmEyODMzMTMxNTFmZDlmZWRhZjg4Mzc2NzQ3YTIzNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L2FwaS9vcmcvd2VicnRjL1NvZnR3YXJlVmlkZW9FbmNvZGVyRmFjdG9yeS5qYXZhCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9v
cmcvd2VicnRjL1NvZnR3YXJlVmlkZW9FbmNvZGVyRmFjdG9yeS5qYXZhCkBAIC0yMCwxMCArMjAs
MTAgQEAgcHVibGljIGNsYXNzIFNvZnR3YXJlVmlkZW9FbmNvZGVyRmFjdG9yeSBpbXBsZW1lbnRz
IFZpZGVvRW5jb2RlckZhY3RvcnkgewogICBAT3ZlcnJpZGUKICAgcHVibGljIFZpZGVvRW5jb2Rl
ciBjcmVhdGVFbmNvZGVyKFZpZGVvQ29kZWNJbmZvIGluZm8pIHsKICAgICBpZiAoaW5mby5uYW1l
LmVxdWFsc0lnbm9yZUNhc2UoIlZQOCIpKSB7Ci0gICAgICByZXR1cm4gbmV3IFZQOEVuY29kZXIo
KTsKKyAgICAgIHJldHVybiBuZXcgTGlidnB4VnA4RW5jb2RlcigpOwogICAgIH0KLSAgICBpZiAo
aW5mby5uYW1lLmVxdWFsc0lnbm9yZUNhc2UoIlZQOSIpICYmIFZQOUVuY29kZXIubmF0aXZlSXNT
dXBwb3J0ZWQoKSkgewotICAgICAgcmV0dXJuIG5ldyBWUDlFbmNvZGVyKCk7CisgICAgaWYgKGlu
Zm8ubmFtZS5lcXVhbHNJZ25vcmVDYXNlKCJWUDkiKSAmJiBMaWJ2cHhWcDlFbmNvZGVyLm5hdGl2
ZUlzU3VwcG9ydGVkKCkpIHsKKyAgICAgIHJldHVybiBuZXcgTGlidnB4VnA5RW5jb2RlcigpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxsOwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWMgY2xhc3Mg
U29mdHdhcmVWaWRlb0VuY29kZXJGYWN0b3J5IGltcGxlbWVudHMgVmlkZW9FbmNvZGVyRmFjdG9y
eSB7CiAgICAgTGlzdDxWaWRlb0NvZGVjSW5mbz4gY29kZWNzID0gbmV3IEFycmF5TGlzdDxWaWRl
b0NvZGVjSW5mbz4oKTsKIAogICAgIGNvZGVjcy5hZGQobmV3IFZpZGVvQ29kZWNJbmZvKCJWUDgi
LCBuZXcgSGFzaE1hcDw+KCkpKTsKLSAgICBpZiAoVlA5RW5jb2Rlci5uYXRpdmVJc1N1cHBvcnRl
ZCgpKSB7CisgICAgaWYgKExpYnZweFZwOUVuY29kZXIubmF0aXZlSXNTdXBwb3J0ZWQoKSkgewog
ICAgICAgY29kZWNzLmFkZChuZXcgVmlkZW9Db2RlY0luZm8oIlZQOSIsIG5ldyBIYXNoTWFwPD4o
KSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU3VyZmFjZVRleHR1cmVIZWxw
ZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL2FwaS9vcmcvd2VicnRjL1N1cmZhY2VUZXh0dXJlSGVscGVyLmphdmEKaW5kZXggYmI2
N2QxZjlmZTBhNjJjNzAxMDlhOTI0ODIyNTJjNGM0NGRlMGUwYi4uMjlkZjY4ODkwMWUxNjI2ZDFm
M2UwNDZhNmQ0MWY5OWQ3NDg2YmQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU3VyZmFjZVRl
eHR1cmVIZWxwZXIuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9TdXJmYWNlVGV4dHVyZUhlbHBlci5q
YXZhCkBAIC0zNiwxMCArMzYsMTQgQEAgcHVibGljIGNsYXNzIFN1cmZhY2VUZXh0dXJlSGVscGVy
IHsKICAgLyoqCiAgICAqIENvbnN0cnVjdCBhIG5ldyBTdXJmYWNlVGV4dHVyZUhlbHBlciBzaGFy
aW5nIE9wZW5HTCByZXNvdXJjZXMgd2l0aCB8c2hhcmVkQ29udGV4dHwuIEEgZGVkaWNhdGVkCiAg
ICAqIHRocmVhZCBhbmQgaGFuZGxlciBpcyBjcmVhdGVkIGZvciBoYW5kbGluZyB0aGUgU3VyZmFj
ZVRleHR1cmUuIE1heSByZXR1cm4gbnVsbCBpZiBFR0wgZmFpbHMgdG8KLSAgICogaW5pdGlhbGl6
ZSBhIHBpeGVsIGJ1ZmZlciBzdXJmYWNlIGFuZCBtYWtlIGl0IGN1cnJlbnQuCisgICAqIGluaXRp
YWxpemUgYSBwaXhlbCBidWZmZXIgc3VyZmFjZSBhbmQgbWFrZSBpdCBjdXJyZW50LiBJZiBhbGln
blRpbWVzdGFtcHMgaXMgdHJ1ZSwgdGhlIGZyYW1lCisgICAqIHRpbWVzdGFtcHMgd2lsbCBiZSBh
bGlnbmVkIHRvIHJ0Yzo6VGltZU5hbm9zKCkuIElmIGZyYW1lIHRpbWVzdGFtcHMgYXJlIGFsaWdu
ZWQgdG8KKyAgICogcnRjOjpUaW1lTmFub3MoKSB0aGVyZSBpcyBubyBuZWVkIGZvciBhbGlnbmlu
ZyB0aW1lc3RhbXBzIGFnYWluIGluCisgICAqIFBlZXJDb25uZWN0aW9uRmFjdG9yeS5jcmVhdGVW
aWRlb1NvdXJjZSgpLiBUaGlzIG1ha2VzIHRoZSB0aW1lc3RhbXBzIG1vcmUgYWNjdXJhdGUgYW5k
CisgICAqIGNsb3NlciB0byBhY3R1YWwgY3JlYXRpb24gdGltZS4KICAgICovCiAgIHB1YmxpYyBz
dGF0aWMgU3VyZmFjZVRleHR1cmVIZWxwZXIgY3JlYXRlKAotICAgICAgZmluYWwgU3RyaW5nIHRo
cmVhZE5hbWUsIGZpbmFsIEVnbEJhc2UuQ29udGV4dCBzaGFyZWRDb250ZXh0KSB7CisgICAgICBm
aW5hbCBTdHJpbmcgdGhyZWFkTmFtZSwgZmluYWwgRWdsQmFzZS5Db250ZXh0IHNoYXJlZENvbnRl
eHQsIGJvb2xlYW4gYWxpZ25UaW1lc3RhbXBzKSB7CiAgICAgZmluYWwgSGFuZGxlclRocmVhZCB0
aHJlYWQgPSBuZXcgSGFuZGxlclRocmVhZCh0aHJlYWROYW1lKTsKICAgICB0aHJlYWQuc3RhcnQo
KTsKICAgICBmaW5hbCBIYW5kbGVyIGhhbmRsZXIgPSBuZXcgSGFuZGxlcih0aHJlYWQuZ2V0TG9v
cGVyKCkpOwpAQCAtNTMsNyArNTcsNyBAQCBwdWJsaWMgY2xhc3MgU3VyZmFjZVRleHR1cmVIZWxw
ZXIgewogICAgICAgQE92ZXJyaWRlCiAgICAgICBwdWJsaWMgU3VyZmFjZVRleHR1cmVIZWxwZXIg
Y2FsbCgpIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICByZXR1cm4gbmV3IFN1cmZhY2VUZXh0
dXJlSGVscGVyKHNoYXJlZENvbnRleHQsIGhhbmRsZXIpOworICAgICAgICAgIHJldHVybiBuZXcg
U3VyZmFjZVRleHR1cmVIZWxwZXIoc2hhcmVkQ29udGV4dCwgaGFuZGxlciwgYWxpZ25UaW1lc3Rh
bXBzKTsKICAgICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAg
TG9nZ2luZy5lKFRBRywgdGhyZWFkTmFtZSArICIgY3JlYXRlIGZhaWx1cmUiLCBlKTsKICAgICAg
ICAgICByZXR1cm4gbnVsbDsKQEAgLTYyLDExICs2NiwyMiBAQCBwdWJsaWMgY2xhc3MgU3VyZmFj
ZVRleHR1cmVIZWxwZXIgewogICAgIH0pOwogICB9CiAKKyAgLyoqCisgICAqIFNhbWUgYXMgYWJv
dmUgd2l0aCBhbGlnblRpbWVzdGFtcHMgc2V0IHRvIGZhbHNlLgorICAgKgorICAgKiBAc2VlICNj
cmVhdGUoU3RyaW5nLCBFZ2xCYXNlLkNvbnRleHQsIGJvb2xlYW4pCisgICAqLworICBwdWJsaWMg
c3RhdGljIFN1cmZhY2VUZXh0dXJlSGVscGVyIGNyZWF0ZSgKKyAgICAgIGZpbmFsIFN0cmluZyB0
aHJlYWROYW1lLCBmaW5hbCBFZ2xCYXNlLkNvbnRleHQgc2hhcmVkQ29udGV4dCkgeworICAgIHJl
dHVybiBjcmVhdGUodGhyZWFkTmFtZSwgc2hhcmVkQ29udGV4dCwgLyogYWxpZ25UaW1lc3RhbXBz
PSAqLyBmYWxzZSk7CisgIH0KKwogICBwcml2YXRlIGZpbmFsIEhhbmRsZXIgaGFuZGxlcjsKICAg
cHJpdmF0ZSBmaW5hbCBFZ2xCYXNlIGVnbEJhc2U7CiAgIHByaXZhdGUgZmluYWwgU3VyZmFjZVRl
eHR1cmUgc3VyZmFjZVRleHR1cmU7CiAgIHByaXZhdGUgZmluYWwgaW50IG9lc1RleHR1cmVJZDsK
ICAgcHJpdmF0ZSBmaW5hbCBZdXZDb252ZXJ0ZXIgeXV2Q29udmVydGVyID0gbmV3IFl1dkNvbnZl
cnRlcigpOworICBATnVsbGFibGUgcHJpdmF0ZSBmaW5hbCBUaW1lc3RhbXBBbGlnbmVyIHRpbWVz
dGFtcEFsaWduZXI7CiAKICAgLy8gVGhlc2UgdmFyaWFibGVzIGFyZSBvbmx5IGFjY2Vzc2VkIGZy
b20gdGhlIHxoYW5kbGVyfCB0aHJlYWQuCiAgIEBOdWxsYWJsZSBwcml2YXRlIFZpZGVvU2luayBs
aXN0ZW5lcjsKQEAgLTk1LDExICsxMTAsMTMgQEAgcHVibGljIGNsYXNzIFN1cmZhY2VUZXh0dXJl
SGVscGVyIHsKICAgICB9CiAgIH07CiAKLSAgcHJpdmF0ZSBTdXJmYWNlVGV4dHVyZUhlbHBlcihF
Z2xCYXNlLkNvbnRleHQgc2hhcmVkQ29udGV4dCwgSGFuZGxlciBoYW5kbGVyKSB7CisgIHByaXZh
dGUgU3VyZmFjZVRleHR1cmVIZWxwZXIoCisgICAgICBFZ2xCYXNlLkNvbnRleHQgc2hhcmVkQ29u
dGV4dCwgSGFuZGxlciBoYW5kbGVyLCBib29sZWFuIGFsaWduVGltZXN0YW1wcykgewogICAgIGlm
IChoYW5kbGVyLmdldExvb3BlcigpLmdldFRocmVhZCgpICE9IFRocmVhZC5jdXJyZW50VGhyZWFk
KCkpIHsKICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlN1cmZhY2VUZXh0
dXJlSGVscGVyIG11c3QgYmUgY3JlYXRlZCBvbiB0aGUgaGFuZGxlciB0aHJlYWQiKTsKICAgICB9
CiAgICAgdGhpcy5oYW5kbGVyID0gaGFuZGxlcjsKKyAgICB0aGlzLnRpbWVzdGFtcEFsaWduZXIg
PSBhbGlnblRpbWVzdGFtcHMgPyBuZXcgVGltZXN0YW1wQWxpZ25lcigpIDogbnVsbDsKIAogICAg
IGVnbEJhc2UgPSBFZ2xCYXNlLmNyZWF0ZShzaGFyZWRDb250ZXh0LCBFZ2xCYXNlLkNPTkZJR19Q
SVhFTF9CVUZGRVIpOwogICAgIHRyeSB7CkBAIC0yNjQsNyArMjgxLDEwIEBAIHB1YmxpYyBjbGFz
cyBTdXJmYWNlVGV4dHVyZUhlbHBlciB7CiAKICAgICBmaW5hbCBmbG9hdFtdIHRyYW5zZm9ybU1h
dHJpeCA9IG5ldyBmbG9hdFsxNl07CiAgICAgc3VyZmFjZVRleHR1cmUuZ2V0VHJhbnNmb3JtTWF0
cml4KHRyYW5zZm9ybU1hdHJpeCk7Ci0gICAgZmluYWwgbG9uZyB0aW1lc3RhbXBOcyA9IHN1cmZh
Y2VUZXh0dXJlLmdldFRpbWVzdGFtcCgpOworICAgIGxvbmcgdGltZXN0YW1wTnMgPSBzdXJmYWNl
VGV4dHVyZS5nZXRUaW1lc3RhbXAoKTsKKyAgICBpZiAodGltZXN0YW1wQWxpZ25lciAhPSBudWxs
KSB7CisgICAgICB0aW1lc3RhbXBOcyA9IHRpbWVzdGFtcEFsaWduZXIudHJhbnNsYXRlVGltZXN0
YW1wKHRpbWVzdGFtcE5zKTsKKyAgICB9CiAgICAgaWYgKHRleHR1cmVXaWR0aCA9PSAwIHx8IHRl
eHR1cmVIZWlnaHQgPT0gMCkgewogICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlRl
eHR1cmUgc2l6ZSBoYXMgbm90IGJlZW4gc2V0LiIpOwogICAgIH0KQEAgLTI4OSw1ICszMDksOCBA
QCBwdWJsaWMgY2xhc3MgU3VyZmFjZVRleHR1cmVIZWxwZXIgewogICAgIHN1cmZhY2VUZXh0dXJl
LnJlbGVhc2UoKTsKICAgICBlZ2xCYXNlLnJlbGVhc2UoKTsKICAgICBoYW5kbGVyLmdldExvb3Bl
cigpLnF1aXQoKTsKKyAgICBpZiAodGltZXN0YW1wQWxpZ25lciAhPSBudWxsKSB7CisgICAgICB0
aW1lc3RhbXBBbGlnbmVyLmRpc3Bvc2UoKTsKKyAgICB9CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9v
cmcvd2VicnRjL1RpbWVzdGFtcEFsaWduZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1RpbWVzdGFtcEFs
aWduZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzRiZWQ0ZDhmYmE0NDg0ZDVkMWVhNWU4NGEwYTFhMjhm
Mjk5NTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25lci5q
YXZhCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBw
cm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKK3BhY2thZ2Ugb3JnLndl
YnJ0YzsKKworLyoqCisgKiBUaGUgVGltZXN0YW1wQWxpZ25lciBjbGFzcyBoZWxwcyB0cmFuc2xh
dGluZyBjYW1lcmEgdGltZXN0YW1wcyBpbnRvIHRoZSBzYW1lIHRpbWVzY2FsZSBhcyBpcworICog
dXNlZCBieSBydGM6OlRpbWVOYW5vcygpLiBTb21lIGNhbWVyYXMgaGF2ZSBidWlsdCBpbiB0aW1l
c3RhbXBpbmcgd2hpY2ggaXMgbW9yZSBhY2N1cmF0ZSB0aGFuCisgKiByZWFkaW5nIHRoZSBzeXN0
ZW0gY2xvY2ssIGJ1dCB1c2luZyBhIGRpZmZlcmVudCBlcG9jaCBhbmQgdW5rbm93biBjbG9jayBk
cmlmdC4gRnJhbWUgdGltZXN0YW1wcworICogaW4gd2VicnRjIHNob3VsZCB1c2UgcnRjOjpUaW1l
TmFub3MgKHN5c3RlbSBtb25vdG9uaWMgdGltZSksIGFuZCB0aGlzIGNsYXNzIHByb3ZpZGVzIGEg
ZmlsdGVyCisgKiB3aGljaCBsZXRzIHVzIHVzZSB0aGUgcnRjOjpUaW1lTmFub3MgdGltZXNjYWxl
LCBhbmQgYXQgdGhlIHNhbWUgdGltZSB0YWtlIGFkdmFudGFnZSBvZiBoaWdoZXIKKyAqIGFjY3Vy
YWN5IG9mIHRoZSBjYW1lcmEgY2xvY2suIFRoaXMgY2xhc3MgaXMgYSB3cmFwcGVyIG9uIHRvcCBv
ZiBydGM6OlRpbWVzdGFtcEFsaWduZXIuCisgKi8KK3B1YmxpYyBjbGFzcyBUaW1lc3RhbXBBbGln
bmVyIHsKKyAgLyoqCisgICAqIFdyYXBwZXIgYXJvdW5kIHJ0Yzo6VGltZU5hbm9zKCkuIFRoaXMg
aXMgbm9ybWFsbHkgc2FtZSBhcyBTeXN0ZW0ubmFub1RpbWUoKSwgYnV0IGNhbGwgdGhpcworICAg
KiBmdW5jdGlvbiB0byBiZSBzYWZlLgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBsb25nIGdldFJ0
Y1RpbWVOYW5vcygpIHsKKyAgICByZXR1cm4gbmF0aXZlUnRjVGltZU5hbm9zKCk7CisgIH0KKwor
ICBwcml2YXRlIHZvbGF0aWxlIGxvbmcgbmF0aXZlVGltZXN0YW1wQWxpZ25lciA9IG5hdGl2ZUNy
ZWF0ZVRpbWVzdGFtcEFsaWduZXIoKTsKKworICAvKioKKyAgICogVHJhbnNsYXRlcyBjYW1lcmEg
dGltZXN0YW1wcyB0byB0aGUgc2FtZSB0aW1lc2NhbGUgYXMgaXMgdXNlZCBieSBydGM6OlRpbWVO
YW5vcygpLgorICAgKiB8Y2FtZXJhVGltZU5zfCBpcyBhc3N1bWVkIHRvIGJlIGFjY3VyYXRlLCBi
dXQgd2l0aCBhbiB1bmtub3duIGVwb2NoIGFuZCBjbG9jayBkcmlmdC4gUmV0dXJucworICAgKiB0
aGUgdHJhbnNsYXRlZCB0aW1lc3RhbXAuCisgICAqLworICBwdWJsaWMgbG9uZyB0cmFuc2xhdGVU
aW1lc3RhbXAobG9uZyBjYW1lcmFUaW1lTnMpIHsKKyAgICBjaGVja05hdGl2ZUFsaWduZXJFeGlz
dHMoKTsKKyAgICByZXR1cm4gbmF0aXZlVHJhbnNsYXRlVGltZXN0YW1wKG5hdGl2ZVRpbWVzdGFt
cEFsaWduZXIsIGNhbWVyYVRpbWVOcyk7CisgIH0KKworICAvKiogRGlzcG9zZSBuYXRpdmUgdGlt
ZXN0YW1wIGFsaWduZXIuICovCisgIHB1YmxpYyB2b2lkIGRpc3Bvc2UoKSB7CisgICAgY2hlY2tO
YXRpdmVBbGlnbmVyRXhpc3RzKCk7CisgICAgbmF0aXZlUmVsZWFzZVRpbWVzdGFtcEFsaWduZXIo
bmF0aXZlVGltZXN0YW1wQWxpZ25lcik7CisgICAgbmF0aXZlVGltZXN0YW1wQWxpZ25lciA9IDA7
CisgIH0KKworICBwcml2YXRlIHZvaWQgY2hlY2tOYXRpdmVBbGlnbmVyRXhpc3RzKCkgeworICAg
IGlmIChuYXRpdmVUaW1lc3RhbXBBbGlnbmVyID09IDApIHsKKyAgICAgIHRocm93IG5ldyBJbGxl
Z2FsU3RhdGVFeGNlcHRpb24oIlRpbWVzdGFtcEFsaWduZXIgaGFzIGJlZW4gZGlzcG9zZWQuIik7
CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlUnRjVGlt
ZU5hbm9zKCk7CisgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZVRpbWVz
dGFtcEFsaWduZXIoKTsKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlUmVsZWFz
ZVRpbWVzdGFtcEFsaWduZXIobG9uZyB0aW1lc3RhbXBBbGlnbmVyKTsKKyAgcHJpdmF0ZSBzdGF0
aWMgbmF0aXZlIGxvbmcgbmF0aXZlVHJhbnNsYXRlVGltZXN0YW1wKGxvbmcgdGltZXN0YW1wQWxp
Z25lciwgbG9uZyBjYW1lcmFUaW1lTnMpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvVmlk
ZW9FbmNvZGVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9WaWRlb0VuY29kZXIuamF2YQppbmRleCA4ZGM3
NTgyOTI2YjI0M2FiOWQ2MGQyMjhlNjZiNWMwMzZjZmFmZTJiLi5hZmM1Y2QwMjM5ZDFhNWEyZTIw
ODJjYTkxZGQ3YzhhMzRmNThlMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9WaWRlb0VuY29k
ZXIuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9WaWRlb0VuY29kZXIuamF2YQpAQCAtMjEwLDE0ICsy
MTAsNiBAQCBwdWJsaWMgaW50ZXJmYWNlIFZpZGVvRW5jb2RlciB7CiAgICAqLwogICBAQ2FsbGVk
QnlOYXRpdmUgVmlkZW9Db2RlY1N0YXR1cyBlbmNvZGUoVmlkZW9GcmFtZSBmcmFtZSwgRW5jb2Rl
SW5mbyBpbmZvKTsKIAotICAvKioKLSAgICogSW5mb3JtcyB0aGUgZW5jb2RlciBvZiB0aGUgcGFj
a2V0IGxvc3MgYW5kIHRoZSByb3VuZC10cmlwIHRpbWUgb2YgdGhlIG5ldHdvcmsuCi0gICAqCi0g
ICAqIEBwYXJhbSBwYWNrZXRMb3NzIEhvdyBtYW55IHBhY2tldHMgYXJlIGxvc3Qgb24gYXZlcmFn
ZSBwZXIgMjU1IHBhY2tldHMuCi0gICAqIEBwYXJhbSByb3VuZFRyaXBUaW1lTXMgUm91bmQtdHJp
cCB0aW1lIG9mIHRoZSBuZXR3b3JrIGluIG1pbGxpc2Vjb25kcy4KLSAgICovCi0gIEBDYWxsZWRC
eU5hdGl2ZSBWaWRlb0NvZGVjU3RhdHVzIHNldENoYW5uZWxQYXJhbWV0ZXJzKHNob3J0IHBhY2tl
dExvc3MsIGxvbmcgcm91bmRUcmlwVGltZU1zKTsKLQogICAvKiogU2V0cyB0aGUgYml0cmF0ZSBh
bGxvY2F0aW9uIGFuZCB0aGUgdGFyZ2V0IGZyYW1lcmF0ZSBmb3IgdGhlIGVuY29kZXIuICovCiAg
IEBDYWxsZWRCeU5hdGl2ZSBWaWRlb0NvZGVjU3RhdHVzIHNldFJhdGVBbGxvY2F0aW9uKEJpdHJh
dGVBbGxvY2F0aW9uIGFsbG9jYXRpb24sIGludCBmcmFtZXJhdGUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkv
b3JnL3dlYnJ0Yy9WaWRlb1NvdXJjZS5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvVmlkZW9Tb3VyY2UuamF2
YQppbmRleCA3ZjlmM2U1MzIzZmY1MzBmODNmMTcxYjU3Yjk3ZmU0MWZhMzNjYWM3Li5hOGVmNjYy
MGFjZmNiNGE0M2M5YmNkZWY2YWZkMjg0ZWQ5ZDkwODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0
Yy9WaWRlb1NvdXJjZS5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1ZpZGVvU291cmNlLmphdmEKQEAg
LTMwLDcgKzMwLDIwIEBAIHB1YmxpYyBjbGFzcyBWaWRlb1NvdXJjZSBleHRlbmRzIE1lZGlhU291
cmNlIHsKICAgICogbWFpbnRhaW4gdGhlIGlucHV0IG9yaWVudGF0aW9uLCBzbyBpdCBkb2Vzbid0
IG1hdHRlciBpZiBlLmcuIDEyODB4NzIwIG9yIDcyMHgxMjgwIGlzIHJlcXVlc3RlZC4KICAgICov
CiAgIHB1YmxpYyB2b2lkIGFkYXB0T3V0cHV0Rm9ybWF0KGludCB3aWR0aCwgaW50IGhlaWdodCwg
aW50IGZwcykgewotICAgIG5hdGl2ZUFkYXB0T3V0cHV0Rm9ybWF0KGdldE5hdGl2ZVZpZGVvVHJh
Y2tTb3VyY2UoKSwgd2lkdGgsIGhlaWdodCwgZnBzKTsKKyAgICBmaW5hbCBpbnQgbWF4U2lkZSA9
IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpOworICAgIGZpbmFsIGludCBtaW5TaWRlID0gTWF0aC5t
aW4od2lkdGgsIGhlaWdodCk7CisgICAgYWRhcHRPdXRwdXRGb3JtYXQobWF4U2lkZSwgbWluU2lk
ZSwgbWluU2lkZSwgbWF4U2lkZSwgZnBzKTsKKyAgfQorCisgIC8qKgorICAgKiBTYW1lIGFzIGFi
b3ZlLCBidXQgYWxsb3dzIHNldHRpbmcgdHdvIGRpZmZlcmVudCB0YXJnZXQgcmVzb2x1dGlvbnMg
ZGVwZW5kaW5nIG9uIGluY29taW5nCisgICAqIGZyYW1lIG9yaWVudGF0aW9uLiBUaGlzIGdpdmVz
IG1vcmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgYW5kIGNhbiBlLmcuIGJlIHVzZWQgdG8gZm9yY2Ug
bGFuZHNjYXBlCisgICAqIHZpZGVvIHRvIGJlIGNyb3BwZWQgdG8gcG9ydHJhaXQgdmlkZW8uCisg
ICAqLworICBwdWJsaWMgdm9pZCBhZGFwdE91dHB1dEZvcm1hdCgKKyAgICAgIGludCBsYW5kc2Nh
cGVXaWR0aCwgaW50IGxhbmRzY2FwZUhlaWdodCwgaW50IHBvcnRyYWl0V2lkdGgsIGludCBwb3J0
cmFpdEhlaWdodCwgaW50IGZwcykgeworICAgIG5hdGl2ZUFkYXB0T3V0cHV0Rm9ybWF0KGdldE5h
dGl2ZVZpZGVvVHJhY2tTb3VyY2UoKSwgbGFuZHNjYXBlV2lkdGgsIGxhbmRzY2FwZUhlaWdodCwK
KyAgICAgICAgcG9ydHJhaXRXaWR0aCwgcG9ydHJhaXRIZWlnaHQsIGZwcyk7CiAgIH0KIAogICBw
dWJsaWMgQ2FwdHVyZXJPYnNlcnZlciBnZXRDYXB0dXJlck9ic2VydmVyKCkgewpAQCAtNDQsNSAr
NTcsNiBAQCBwdWJsaWMgY2xhc3MgVmlkZW9Tb3VyY2UgZXh0ZW5kcyBNZWRpYVNvdXJjZSB7CiAK
ICAgLy8gUmV0dXJucyBzb3VyY2UtPmludGVybmFsKCkgZnJvbSB3ZWJydGM6OlZpZGVvVHJhY2tT
b3VyY2VQcm94eS4KICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlR2V0SW50ZXJu
YWxTb3VyY2UobG9uZyBzb3VyY2UpOwotICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRp
dmVBZGFwdE91dHB1dEZvcm1hdChsb25nIHNvdXJjZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBp
bnQgZnBzKTsKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlQWRhcHRPdXRwdXRG
b3JtYXQobG9uZyBzb3VyY2UsIGludCBsYW5kc2NhcGVXaWR0aCwKKyAgICAgIGludCBsYW5kc2Nh
cGVIZWlnaHQsIGludCBwb3J0cmFpdFdpZHRoLCBpbnQgcG9ydHJhaXRIZWlnaHQsIGludCBmcHMp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQnVpbHRp
bkF1ZGlvQ29kZWNzRmFjdG9yeUZhY3RvcnlUZXN0LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9z
cmMvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9Db2RlY3NGYWN0b3J5RmFjdG9yeVRlc3QuamF2YQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNmVlMGU5MzJlMWNjMjAyYWZkZGQxZDliYTdmZTM0ZWU1Nzc1MTc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQnVpbHRpbkF1
ZGlvQ29kZWNzRmFjdG9yeUZhY3RvcnlUZXN0LmphdmEKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKworcGFja2FnZSBvcmcud2VicnRjOworCitpbXBvcnQgc3RhdGljIGNvbS5n
b29nbGUuY29tbW9uLnRydXRoLlRydXRoLmFzc2VydFRoYXQ7CisKK2ltcG9ydCBhbmRyb2lkLnN1
cHBvcnQudGVzdC5maWx0ZXJzLlNtYWxsVGVzdDsKKworaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7
CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRo
OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLkpVbml0NDsKKworQFJ1bldpdGgoSlVuaXQ0LmNs
YXNzKQorcHVibGljIGZpbmFsIGNsYXNzIEJ1aWx0aW5BdWRpb0NvZGVjc0ZhY3RvcnlGYWN0b3J5
VGVzdCB7CisgIEBCZWZvcmUKKyAgcHVibGljIHZvaWQgc2V0VXAoKSB7CisgICAgU3lzdGVtLmxv
YWRMaWJyYXJ5KFRlc3RDb25zdGFudHMuTkFUSVZFX0xJQlJBUlkpOworICB9CisKKyAgQFRlc3QK
KyAgQFNtYWxsVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0QXVkaW9FbmNvZGVyRmFjdG9yeUZhY3Rv
cnlUZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3Rv
cnlGYWN0b3J5IGZhY3RvcnkgPSBuZXcgQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5
KCk7CisgICAgbG9uZyBhZWYgPSAwOworICAgIHRyeSB7CisgICAgICBhZWYgPSBmYWN0b3J5LmNy
ZWF0ZU5hdGl2ZUF1ZGlvRW5jb2RlckZhY3RvcnkoKTsKKyAgICAgIGFzc2VydFRoYXQoYWVmKS5p
c05vdEVxdWFsVG8oMCk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgIGlmIChhZWYgIT0gMCkgewor
ICAgICAgICBKbmlDb21tb24ubmF0aXZlUmVsZWFzZVJlZihhZWYpOworICAgICAgfQorICAgIH0K
KyAgfQorCisgIEBUZXN0CisgIEBTbWFsbFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEF1ZGlvRGVj
b2RlckZhY3RvcnlGYWN0b3J5VGVzdCgpIHRocm93cyBFeGNlcHRpb24geworICAgIEJ1aWx0aW5B
dWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeSBmYWN0b3J5ID0gbmV3IEJ1aWx0aW5BdWRpb0RlY29k
ZXJGYWN0b3J5RmFjdG9yeSgpOworICAgIGxvbmcgYWRmID0gMDsKKyAgICB0cnkgeworICAgICAg
YWRmID0gZmFjdG9yeS5jcmVhdGVOYXRpdmVBdWRpb0RlY29kZXJGYWN0b3J5KCk7CisgICAgICBh
c3NlcnRUaGF0KGFkZikuaXNOb3RFcXVhbFRvKDApOworICAgIH0gZmluYWxseSB7CisgICAgICBp
ZiAoYWRmICE9IDApIHsKKyAgICAgICAgSm5pQ29tbW9uLm5hdGl2ZVJlbGVhc2VSZWYoYWRmKTsK
KyAgICAgIH0KKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3Ny
Yy9vcmcvd2VicnRjL0NhbWVyYTFDYXB0dXJlclVzaW5nQnl0ZUJ1ZmZlclRlc3QuamF2YSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3Ry
dW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYTFDYXB0dXJlclVzaW5nQnl0ZUJ1
ZmZlclRlc3QuamF2YQppbmRleCBlZjc2NjkxMDJmOWJiNjQ4YjZkYjE1NDIxMTA0YzliMDY2ZTli
MzVkLi4xN2IwOTc3ZDU5NWZkMjdhZmY1ODY2MWVmOWFhN2QxY2M3ZDg3NTlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9p
bnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmExQ2FwdHVyZXJVc2luZ0J5
dGVCdWZmZXJUZXN0LmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMv
Q2FtZXJhMUNhcHR1cmVyVXNpbmdCeXRlQnVmZmVyVGVzdC5qYXZhCkBAIC0xNjksNiArMTY5LDE0
IEBAIHB1YmxpYyBjbGFzcyBDYW1lcmExQ2FwdHVyZXJVc2luZ0J5dGVCdWZmZXJUZXN0IHsKICAg
ICBmaXh0dXJlcy5zY2FsZUNhbWVyYU91dHB1dCgpOwogICB9CiAKKyAgLy8gVGhpcyB0ZXN0IHRo
YXQgZnJhbWVzIGZvcndhcmRlZCB0byBhIHJlbmRlcmVyIGlzIGNyb3BwZWQgdG8gYSBuZXcgb3Jp
ZW50YXRpb24gaWYKKyAgLy8gYWRhcHRPdXRwdXRGb3JtYXQgaXMgY2FsbGVkIGluIHN1Y2ggYSB3
YXkuIFRoaXMgdGVzdCBib3RoIEphdmEgYW5kIEMrKyBwYXJ0cyBvZiBvZiB0aGUgc3RhY2suCisg
IEBUZXN0CisgIEBNZWRpdW1UZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDcm9wQ2FtZXJhT3V0cHV0
KCkgdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uIHsKKyAgICBmaXh0dXJlcy5jcm9wQ2FtZXJh
T3V0cHV0KCk7CisgIH0KKwogICAvLyBUaGlzIHRlc3QgdGhhdCBhbiBlcnJvciBpcyByZXBvcnRl
ZCBpZiB0aGUgY2FtZXJhIGlzIGFscmVhZHkgb3BlbmVkCiAgIC8vIHdoZW4gQ2FtZXJhVmlkZW9D
YXB0dXJlciBpcyBzdGFydGVkLgogICBAVGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVz
dHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMUNhcHR1cmVyVXNpbmdUZXh0dXJlVGVzdC5qYXZhIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5z
dHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMUNhcHR1cmVyVXNpbmdUZXh0
dXJlVGVzdC5qYXZhCmluZGV4IDI4ZmE4MjVhZDc0ZTYxY2M5NDA2YjMyZDI0YjliNmRiZTYwYzg4
NTUuLjRkYzAwMzcyNmE3MTk2YzYyNmE0NzU2MGY5NDkxOGM0MTUxMTU1ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2lu
c3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYTFDYXB0dXJlclVzaW5nVGV4
dHVyZVRlc3QuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1l
cmExQ2FwdHVyZXJVc2luZ1RleHR1cmVUZXN0LmphdmEKQEAgLTE3Miw2ICsxNzIsMTQgQEAgcHVi
bGljIGNsYXNzIENhbWVyYTFDYXB0dXJlclVzaW5nVGV4dHVyZVRlc3QgewogICAgIGZpeHR1cmVz
LnNjYWxlQ2FtZXJhT3V0cHV0KCk7CiAgIH0KIAorICAvLyBUaGlzIHRlc3QgdGhhdCBmcmFtZXMg
Zm9yd2FyZGVkIHRvIGEgcmVuZGVyZXIgaXMgY3JvcHBlZCB0byBhIG5ldyBvcmllbnRhdGlvbiBp
ZgorICAvLyBhZGFwdE91dHB1dEZvcm1hdCBpcyBjYWxsZWQgaW4gc3VjaCBhIHdheS4gVGhpcyB0
ZXN0IGJvdGggSmF2YSBhbmQgQysrIHBhcnRzIG9mIG9mIHRoZSBzdGFjay4KKyAgQFRlc3QKKyAg
QE1lZGl1bVRlc3QKKyAgcHVibGljIHZvaWQgdGVzdENyb3BDYW1lcmFPdXRwdXQoKSB0aHJvd3Mg
SW50ZXJydXB0ZWRFeGNlcHRpb24geworICAgIGZpeHR1cmVzLmNyb3BDYW1lcmFPdXRwdXQoKTsK
KyAgfQorCiAgIC8vIFRoaXMgdGVzdCB0aGF0IGFuIGVycm9yIGlzIHJlcG9ydGVkIGlmIHRoZSBj
YW1lcmEgaXMgYWxyZWFkeSBvcGVuZWQKICAgLy8gd2hlbiBDYW1lcmFWaWRlb0NhcHR1cmVyIGlz
IHN0YXJ0ZWQuCiAgIEBUZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3Jn
L3dlYnJ0Yy9DYW1lcmEyQ2FwdHVyZXJUZXN0LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMv
b3JnL3dlYnJ0Yy9DYW1lcmEyQ2FwdHVyZXJUZXN0LmphdmEKaW5kZXggNzdlOGQ3N2YwYWVmMWQ2
NTY4YjFjN2FkYTUzNGRjYjhjNjQxMWJjMS4uZmJhOTQzMTc2YTg1ODZjMjhlY2Y0OTE4NzEzOTIy
YjRiZmE0ZjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMv
Q2FtZXJhMkNhcHR1cmVyVGVzdC5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcv
d2VicnRjL0NhbWVyYTJDYXB0dXJlclRlc3QuamF2YQpAQCAtMzAyLDYgKzMwMiwxNCBAQCBwdWJs
aWMgY2xhc3MgQ2FtZXJhMkNhcHR1cmVyVGVzdCB7CiAgICAgZml4dHVyZXMuc2NhbGVDYW1lcmFP
dXRwdXQoKTsKICAgfQogCisgIC8vIFRoaXMgdGVzdCB0aGF0IGZyYW1lcyBmb3J3YXJkZWQgdG8g
YSByZW5kZXJlciBpcyBjcm9wcGVkIHRvIGEgbmV3IG9yaWVudGF0aW9uIGlmCisgIC8vIGFkYXB0
T3V0cHV0Rm9ybWF0IGlzIGNhbGxlZCBpbiBzdWNoIGEgd2F5LiBUaGlzIHRlc3QgYm90aCBKYXZh
IGFuZCBDKysgcGFydHMgb2Ygb2YgdGhlIHN0YWNrLgorICBAVGVzdAorICBATWVkaXVtVGVzdAor
ICBwdWJsaWMgdm9pZCB0ZXN0Q3JvcENhbWVyYU91dHB1dCgpIHRocm93cyBJbnRlcnJ1cHRlZEV4
Y2VwdGlvbiB7CisgICAgZml4dHVyZXMuY3JvcENhbWVyYU91dHB1dCgpOworICB9CisKICAgLy8g
VGhpcyB0ZXN0IHRoYXQgYW4gZXJyb3IgaXMgcmVwb3J0ZWQgaWYgdGhlIGNhbWVyYSBpcyBhbHJl
YWR5IG9wZW5lZAogICAvLyB3aGVuIENhbWVyYVZpZGVvQ2FwdHVyZXIgaXMgc3RhcnRlZC4KICAg
QFRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVy
YVZpZGVvQ2FwdHVyZXJUZXN0Rml4dHVyZXMuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9v
cmcvd2VicnRjL0NhbWVyYVZpZGVvQ2FwdHVyZXJUZXN0Rml4dHVyZXMuamF2YQppbmRleCBkZDBk
NzgwZGYwOGM3MTk2MjYwMjYxZWQxODJkOWI4M2NjOWU1YjZkLi5iNDdmZWUwOGQxNTc5NmYyMzQ5
ODk2MTIzZGNhMGFjNDNjM2JlZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMv
b3JnL3dlYnJ0Yy9DYW1lcmFWaWRlb0NhcHR1cmVyVGVzdEZpeHR1cmVzLmphdmEKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1
bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhVmlkZW9DYXB0dXJlclRlc3RGaXh0
dXJlcy5qYXZhCkBAIC02ODgsNiArNjg4LDQ5IEBAIGNsYXNzIENhbWVyYVZpZGVvQ2FwdHVyZXJU
ZXN0Rml4dHVyZXMgewogICAgIGFzc2VydFRydWUoZ290RXhwZWN0ZWRSZXNvbHV0aW9uKTsKICAg
fQogCisgIHB1YmxpYyB2b2lkIGNyb3BDYW1lcmFPdXRwdXQoKSB0aHJvd3MgSW50ZXJydXB0ZWRF
eGNlcHRpb24geworICAgIGZpbmFsIENhcHR1cmVySW5zdGFuY2UgY2FwdHVyZXJJbnN0YW5jZSA9
IGNyZWF0ZUNhcHR1cmVyKGZhbHNlIC8qIGluaXRpYWxpemUgKi8pOworICAgIGZpbmFsIFZpZGVv
VHJhY2tXaXRoUmVuZGVyZXIgdmlkZW9UcmFja1dpdGhSZW5kZXJlciA9CisgICAgICAgIGNyZWF0
ZVZpZGVvVHJhY2tXaXRoUmVuZGVyZXIoY2FwdHVyZXJJbnN0YW5jZS5jYXB0dXJlcik7CisgICAg
YXNzZXJ0VHJ1ZSh2aWRlb1RyYWNrV2l0aFJlbmRlcmVyLnJlbmRlcmVyQ2FsbGJhY2tzLndhaXRG
b3JOZXh0RnJhbWVUb1JlbmRlcigpID4gMCk7CisKKyAgICBmaW5hbCBpbnQgc3RhcnRXaWR0aCA9
IHZpZGVvVHJhY2tXaXRoUmVuZGVyZXIucmVuZGVyZXJDYWxsYmFja3MuZnJhbWVXaWR0aCgpOwor
ICAgIGZpbmFsIGludCBzdGFydEhlaWdodCA9IHZpZGVvVHJhY2tXaXRoUmVuZGVyZXIucmVuZGVy
ZXJDYWxsYmFja3MuZnJhbWVIZWlnaHQoKTsKKyAgICBmaW5hbCBpbnQgZnJhbWVSYXRlID0gMzA7
CisgICAgZmluYWwgaW50IGNyb3BXaWR0aDsKKyAgICBmaW5hbCBpbnQgY3JvcEhlaWdodDsKKyAg
ICBpZiAoc3RhcnRXaWR0aCA+IHN0YXJ0SGVpZ2h0KSB7CisgICAgICAvLyBMYW5kc2NhcGUgaW5w
dXQsIHJlcXVlc3QgcG9ydHJhaXQgb3V0cHV0LgorICAgICAgY3JvcFdpZHRoID0gMzYwOworICAg
ICAgY3JvcEhlaWdodCA9IDY0MDsKKyAgICB9IGVsc2UgeworICAgICAgLy8gUG9ydHJhaXQgaW5w
dXQsIHJlcXVlc3QgbGFuZHNjYXBlIG91dHB1dC4KKyAgICAgIGNyb3BXaWR0aCA9IDY0MDsKKyAg
ICAgIGNyb3BIZWlnaHQgPSA2MzA7CisgICAgfQorCisgICAgLy8gUmVxdWVzdCBkaWZmZXJlbnQg
b3V0cHV0IG9yaWVudGF0aW9uIHRoYW4gaW5wdXQuCisgICAgdmlkZW9UcmFja1dpdGhSZW5kZXJl
ci5zb3VyY2UuYWRhcHRPdXRwdXRGb3JtYXQoCisgICAgICAgIGNyb3BXaWR0aCwgY3JvcEhlaWdo
dCwgY3JvcFdpZHRoLCBjcm9wSGVpZ2h0LCBmcmFtZVJhdGUpOworCisgICAgYm9vbGVhbiBnb3RF
eHBlY3RlZE9yaWVudGF0aW9uID0gZmFsc2U7CisgICAgaW50IG51bWJlck9mSW5zcGVjdGVkRnJh
bWVzID0gMDsKKworICAgIGRvIHsKKyAgICAgIHZpZGVvVHJhY2tXaXRoUmVuZGVyZXIucmVuZGVy
ZXJDYWxsYmFja3Mud2FpdEZvck5leHRGcmFtZVRvUmVuZGVyKCk7CisgICAgICArK251bWJlck9m
SW5zcGVjdGVkRnJhbWVzOworCisgICAgICBnb3RFeHBlY3RlZE9yaWVudGF0aW9uID0gKGNyb3BX
aWR0aCA+IGNyb3BIZWlnaHQpCisgICAgICAgICAgPT0gKHZpZGVvVHJhY2tXaXRoUmVuZGVyZXIu
cmVuZGVyZXJDYWxsYmFja3MuZnJhbWVXaWR0aCgpCisgICAgICAgICAgICAgICAgID4gdmlkZW9U
cmFja1dpdGhSZW5kZXJlci5yZW5kZXJlckNhbGxiYWNrcy5mcmFtZUhlaWdodCgpKTsKKyAgICB9
IHdoaWxlICghZ290RXhwZWN0ZWRPcmllbnRhdGlvbiAmJiBudW1iZXJPZkluc3BlY3RlZEZyYW1l
cyA8IDMwKTsKKworICAgIGRpc3Bvc2VDYXB0dXJlcihjYXB0dXJlckluc3RhbmNlKTsKKyAgICBk
aXNwb3NlVmlkZW9UcmFja1dpdGhSZW5kZXJlcih2aWRlb1RyYWNrV2l0aFJlbmRlcmVyKTsKKwor
ICAgIGFzc2VydFRydWUoZ290RXhwZWN0ZWRPcmllbnRhdGlvbik7CisgIH0KKwogICBwdWJsaWMg
dm9pZCBzdGFydFdoaWxlQ2FtZXJhSXNBbHJlYWR5T3BlbigpIHRocm93cyBJbnRlcnJ1cHRlZEV4
Y2VwdGlvbiB7CiAgICAgZmluYWwgU3RyaW5nIGNhbWVyYU5hbWUgPSB0ZXN0T2JqZWN0RmFjdG9y
eS5nZXROYW1lT2ZCYWNrRmFjaW5nRGV2aWNlKCk7CiAgICAgLy8gQXQgdGhpcyBwb2ludCBjYW1l
cmEgaXMgbm90IGFjdHVhbGx5IG9wZW5lZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3Rz
L3NyYy9vcmcvd2VicnRjL1BlZXJDb25uZWN0aW9uVGVzdC5qYXZhIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVz
dHMvc3JjL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25UZXN0LmphdmEKaW5kZXggN2QwZWRjNTk4
ZTZjNjY4YzkwYjRkYjIyNTkxNjNiNjE5Yzc2ZDQ1MS4uMjA2MzE5OWU3MmRlYTg1MDczMjY5MDhl
NjVhY2JmMjdlMjViMmFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93
ZWJydGMvUGVlckNvbm5lY3Rpb25UZXN0LmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3Jj
L29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25UZXN0LmphdmEKQEAgLTExLDYgKzExLDcgQEAKIHBh
Y2thZ2Ugb3JnLndlYnJ0YzsKIAogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2Vy
dEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3RFcXVhbHM7
CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RmFsc2U7CiBpbXBvcnQgc3Rh
dGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0Tm90TnVsbDsKIGltcG9ydCBzdGF0aWMgb3JnLmp1
bml0LkFzc2VydC5hc3NlcnROdWxsOwpAQCAtNDQsNiArNDUsNyBAQCBpbXBvcnQgb3JnLmp1bml0
LnJ1bm5lci5SdW5XaXRoOwogaW1wb3J0IG9yZy53ZWJydGMuTWV0cmljcy5IaXN0b2dyYW1JbmZv
OwogaW1wb3J0IG9yZy53ZWJydGMuUGVlckNvbm5lY3Rpb24uSWNlQ29ubmVjdGlvblN0YXRlOwog
aW1wb3J0IG9yZy53ZWJydGMuUGVlckNvbm5lY3Rpb24uSWNlR2F0aGVyaW5nU3RhdGU7CitpbXBv
cnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbi5QZWVyQ29ubmVjdGlvblN0YXRlOwogaW1wb3J0
IG9yZy53ZWJydGMuUGVlckNvbm5lY3Rpb24uU2lnbmFsaW5nU3RhdGU7CiAKIC8qKiBFbmQtdG8t
ZW5kIHRlc3RzIGZvciBQZWVyQ29ubmVjdGlvbi5qYXZhLiAqLwpAQCAtNzMsNiArNzUsNyBAQCBw
dWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKICAgICBwcml2YXRlIGludCBleHBlY3Rl
ZFRyYWNrc0FkZGVkOwogICAgIHByaXZhdGUgUXVldWU8U2lnbmFsaW5nU3RhdGU+IGV4cGVjdGVk
U2lnbmFsaW5nQ2hhbmdlcyA9IG5ldyBBcnJheURlcXVlPD4oKTsKICAgICBwcml2YXRlIFF1ZXVl
PEljZUNvbm5lY3Rpb25TdGF0ZT4gZXhwZWN0ZWRJY2VDb25uZWN0aW9uQ2hhbmdlcyA9IG5ldyBB
cnJheURlcXVlPD4oKTsKKyAgICBwcml2YXRlIFF1ZXVlPFBlZXJDb25uZWN0aW9uU3RhdGU+IGV4
cGVjdGVkQ29ubmVjdGlvbkNoYW5nZXMgPSBuZXcgQXJyYXlEZXF1ZTw+KCk7CiAgICAgcHJpdmF0
ZSBRdWV1ZTxJY2VHYXRoZXJpbmdTdGF0ZT4gZXhwZWN0ZWRJY2VHYXRoZXJpbmdDaGFuZ2VzID0g
bmV3IEFycmF5RGVxdWU8PigpOwogICAgIHByaXZhdGUgUXVldWU8U3RyaW5nPiBleHBlY3RlZEFk
ZFN0cmVhbUxhYmVscyA9IG5ldyBBcnJheURlcXVlPD4oKTsKICAgICBwcml2YXRlIFF1ZXVlPFN0
cmluZz4gZXhwZWN0ZWRSZW1vdmVTdHJlYW1MYWJlbHMgPSBuZXcgQXJyYXlEZXF1ZTw+KCk7CkBA
IC0xODcsMTEgKzE5MCwyOSBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKICAg
ICAgIGFzc2VydEVxdWFscyhleHBlY3RlZEljZUNvbm5lY3Rpb25DaGFuZ2VzLnJlbW92ZSgpLCBu
ZXdTdGF0ZSk7CiAgICAgfQogCisgICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODQ5MSk6IFJl
bW92ZSBOb1N5bmNocm9uaXplZE1ldGhvZENoZWNrIHN1cHByZXNzaW9uLgorICAgIEBTdXBwcmVz
c1dhcm5pbmdzKCJOb1N5bmNocm9uaXplZE1ldGhvZENoZWNrIikKKyAgICBwdWJsaWMgc3luY2hy
b25pemVkIHZvaWQgZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlIG5l
d1N0YXRlKSB7CisgICAgICBleHBlY3RlZENvbm5lY3Rpb25DaGFuZ2VzLmFkZChuZXdTdGF0ZSk7
CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODQ5
MSk6IFJlbW92ZSBOb1N5bmNocm9uaXplZE1ldGhvZENoZWNrIHN1cHByZXNzaW9uLgorICAgIEBT
dXBwcmVzc1dhcm5pbmdzKCJOb1N5bmNocm9uaXplZE1ldGhvZENoZWNrIikKKyAgICBwdWJsaWMg
c3luY2hyb25pemVkIHZvaWQgb25Db25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUg
bmV3U3RhdGUpIHsKKyAgICAgIGlmIChleHBlY3RlZENvbm5lY3Rpb25DaGFuZ2VzLmlzRW1wdHko
KSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmFtZSArICIgZ290IGFuIHVuZXhwZWN0
ZWQgRFRMUyBjb25uZWN0aW9uIGNoYW5nZSAiICsgbmV3U3RhdGUpOworICAgICAgICByZXR1cm47
CisgICAgICB9CisKKyAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZENvbm5lY3Rpb25DaGFuZ2Vz
LnJlbW92ZSgpLCBuZXdTdGF0ZSk7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgLy8gVE9E
TyhidWdzLndlYnJ0Yy5vcmcvODQ5MSk6IFJlbW92ZSBOb1N5bmNocm9uaXplZE1ldGhvZENoZWNr
IHN1cHByZXNzaW9uLgogICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJOb1N5bmNocm9uaXplZE1ldGhv
ZENoZWNrIikKICAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgb25JY2VDb25uZWN0aW9uUmVj
ZWl2aW5nQ2hhbmdlKGJvb2xlYW4gcmVjZWl2aW5nKSB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50
bG4obmFtZSArICJHb3QgYW4gSUNFIGNvbm5lY3Rpb24gcmVjZWl2aW5nIGNoYW5nZSAiICsgcmVj
ZWl2aW5nKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuYW1lICsgIiBnb3QgYW4gSUNFIGNv
bm5lY3Rpb24gcmVjZWl2aW5nIGNoYW5nZSAiICsgcmVjZWl2aW5nKTsKICAgICB9CiAKICAgICAv
LyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NDkxKTogUmVtb3ZlIE5vU3luY2hyb25pemVkTWV0aG9k
Q2hlY2sgc3VwcHJlc3Npb24uCkBAIC02NjMsNiArNjg0LDQ1IEBAIHB1YmxpYyBjbGFzcyBQZWVy
Q29ubmVjdGlvblRlc3QgewogICAgIGFzc2VydE5vdE51bGwob2ZmZXJpbmdQQyk7CiAgIH0KIAor
ICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDcmVhdGlvbldpdGhDZXJ0
aWZpY2F0ZSgpIHRocm93cyBFeGNlcHRpb24geworICAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeSBm
YWN0b3J5ID0gUGVlckNvbm5lY3Rpb25GYWN0b3J5LmJ1aWxkZXIoKS5jcmVhdGVQZWVyQ29ubmVj
dGlvbkZhY3RvcnkoKTsKKyAgICBQZWVyQ29ubmVjdGlvbi5SVENDb25maWd1cmF0aW9uIGNvbmZp
ZyA9IG5ldyBQZWVyQ29ubmVjdGlvbi5SVENDb25maWd1cmF0aW9uKEFycmF5cy5hc0xpc3QoKSk7
CisKKyAgICAvLyBUZXN0IGNlcnRpZmljYXRlLgorICAgIFJ0Y0NlcnRpZmljYXRlUGVtIG9yaWdp
bmFsQ2VydCA9IFJ0Y0NlcnRpZmljYXRlUGVtLmdlbmVyYXRlQ2VydGlmaWNhdGUoKTsKKyAgICBj
b25maWcuY2VydGlmaWNhdGUgPSBvcmlnaW5hbENlcnQ7CisKKyAgICBPYnNlcnZlckV4cGVjdGF0
aW9ucyBvZmZlcmluZ0V4cGVjdGF0aW9ucyA9IG5ldyBPYnNlcnZlckV4cGVjdGF0aW9ucygiUENU
ZXN0Om9mZmVyZXIiKTsKKyAgICBQZWVyQ29ubmVjdGlvbiBvZmZlcmluZ1BDID0gZmFjdG9yeS5j
cmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWcsIG9mZmVyaW5nRXhwZWN0YXRpb25zKTsKKworICAg
IFJ0Y0NlcnRpZmljYXRlUGVtIHJlc3RvcmVkQ2VydCA9IG9mZmVyaW5nUEMuZ2V0Q2VydGlmaWNh
dGUoKTsKKyAgICBhc3NlcnRFcXVhbHMob3JpZ2luYWxDZXJ0LnByaXZhdGVLZXksIHJlc3RvcmVk
Q2VydC5wcml2YXRlS2V5KTsKKyAgICBhc3NlcnRFcXVhbHMob3JpZ2luYWxDZXJ0LmNlcnRpZmlj
YXRlLCByZXN0b3JlZENlcnQuY2VydGlmaWNhdGUpOworICB9CisKKyAgQFRlc3QKKyAgQFNtYWxs
VGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0Q3JlYXRpb25XaXRoQ3J5cHRvT3B0aW9ucygpIHRocm93
cyBFeGNlcHRpb24geworICAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeSBmYWN0b3J5ID0gUGVlckNv
bm5lY3Rpb25GYWN0b3J5LmJ1aWxkZXIoKS5jcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTsK
KyAgICBQZWVyQ29ubmVjdGlvbi5SVENDb25maWd1cmF0aW9uIGNvbmZpZyA9IG5ldyBQZWVyQ29u
bmVjdGlvbi5SVENDb25maWd1cmF0aW9uKEFycmF5cy5hc0xpc3QoKSk7CisKKyAgICBhc3NlcnRO
dWxsKGNvbmZpZy5jcnlwdG9PcHRpb25zKTsKKworICAgIENyeXB0b09wdGlvbnMgY3J5cHRvT3B0
aW9ucyA9IENyeXB0b09wdGlvbnMuYnVpbGRlcigpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5zZXRFbmFibGVHY21DcnlwdG9TdWl0ZXModHJ1ZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9D
aXBoZXIodHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldEVu
YWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnModHJ1ZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLnNldFJlcXVpcmVGcmFtZUVuY3J5cHRpb24odHJ1ZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZUNyeXB0b09wdGlvbnMo
KTsKKyAgICBjb25maWcuY3J5cHRvT3B0aW9ucyA9IGNyeXB0b09wdGlvbnM7CisKKyAgICBPYnNl
cnZlckV4cGVjdGF0aW9ucyBvZmZlcmluZ0V4cGVjdGF0aW9ucyA9IG5ldyBPYnNlcnZlckV4cGVj
dGF0aW9ucygiUENUZXN0Om9mZmVyZXIiKTsKKyAgICBQZWVyQ29ubmVjdGlvbiBvZmZlcmluZ1BD
ID0gZmFjdG9yeS5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWcsIG9mZmVyaW5nRXhwZWN0YXRp
b25zKTsKKyAgICBhc3NlcnROb3ROdWxsKG9mZmVyaW5nUEMpOworICB9CisKICAgQFRlc3QKICAg
QE1lZGl1bVRlc3QKICAgcHVibGljIHZvaWQgdGVzdENvbXBsZXRlU2Vzc2lvbigpIHRocm93cyBF
eGNlcHRpb24gewpAQCAtNzU5LDEyICs4MTksMTQgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0
aW9uVGVzdCB7CiAKICAgICBzZHBMYXRjaCA9IG5ldyBTZHBPYnNlcnZlckxhdGNoKCk7CiAgICAg
YW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdFNpZ25hbGluZ0NoYW5nZShTaWduYWxpbmdTdGF0
ZS5TVEFCTEUpOworICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hh
bmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7CiAgICAgYW5zd2VyaW5nUEMuc2V0
TG9jYWxEZXNjcmlwdGlvbihzZHBMYXRjaCwgYW5zd2VyU2RwKTsKICAgICBhc3NlcnRUcnVlKHNk
cExhdGNoLmF3YWl0KCkpOwogICAgIGFzc2VydE51bGwoc2RwTGF0Y2guZ2V0U2RwKCkpOwogCiAg
ICAgc2RwTGF0Y2ggPSBuZXcgU2RwT2JzZXJ2ZXJMYXRjaCgpOwogICAgIG9mZmVyaW5nRXhwZWN0
YXRpb25zLmV4cGVjdFNpZ25hbGluZ0NoYW5nZShTaWduYWxpbmdTdGF0ZS5IQVZFX0xPQ0FMX09G
RkVSKTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBl
ZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7CiAgICAgb2ZmZXJpbmdQQy5zZXRMb2NhbERl
c2NyaXB0aW9uKHNkcExhdGNoLCBvZmZlclNkcCk7CiAgICAgYXNzZXJ0VHJ1ZShzZHBMYXRjaC5h
d2FpdCgpKTsKICAgICBhc3NlcnROdWxsKHNkcExhdGNoLmdldFNkcCgpKTsKQEAgLTc3NCw2ICs4
MzYsOSBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKIAogICAgIG9mZmVyaW5n
RXhwZWN0YXRpb25zLmV4cGVjdEljZUNvbm5lY3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRl
LkNIRUNLSU5HKTsKICAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25uZWN0aW9u
Q2hhbmdlKEljZUNvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpOworICAgIG9mZmVyaW5nRXhwZWN0
YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5ORVcpOwor
ICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5l
Y3Rpb25TdGF0ZS5DT05ORUNUSU5HKTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RD
b25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKTsKICAgICAvLyBU
T0RPKGJlbWFzYyk6IHVuY29tbWVudCBvbmNlIGRlbGl2ZXJ5IG9mIElDRUNvbXBsZXRlZCBpcyBy
ZWxpYWJsZQogICAgIC8vIChodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3dlYnJ0Yy9pc3N1ZXMv
ZGV0YWlsP2lkPTMwMjEpLgogICAgIC8vCkBAIC03ODEsNiArODQ2LDcgQEAgcHVibGljIGNsYXNz
IFBlZXJDb25uZWN0aW9uVGVzdCB7CiAgICAgLy8gICAgIEljZUNvbm5lY3Rpb25TdGF0ZS5DT01Q
TEVURUQpOwogICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25uZWN0aW9uQ2hh
bmdlKEljZUNvbm5lY3Rpb25TdGF0ZS5DSEVDS0lORyk7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRp
b25zLmV4cGVjdEljZUNvbm5lY3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RF
RCk7CisgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVl
ckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpOwogCiAgICAgb2ZmZXJpbmdQQy5zZXRSZW1vdGVE
ZXNjcmlwdGlvbihzZHBMYXRjaCwgYW5zd2VyU2RwKTsKICAgICBhc3NlcnRUcnVlKHNkcExhdGNo
LmF3YWl0KCkpOwpAQCAtOTg5LDEyICsxMDU1LDE0IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVj
dGlvblRlc3QgewogCiAgICAgc2RwTGF0Y2ggPSBuZXcgU2RwT2JzZXJ2ZXJMYXRjaCgpOwogICAg
IGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RTaWduYWxpbmdDaGFuZ2UoU2lnbmFsaW5nU3Rh
dGUuU1RBQkxFKTsKKyAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNo
YW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RJTkcpOwogICAgIGFuc3dlcmluZ1BDLnNl
dExvY2FsRGVzY3JpcHRpb24oc2RwTGF0Y2gsIGFuc3dlclNkcCk7CiAgICAgYXNzZXJ0VHJ1ZShz
ZHBMYXRjaC5hd2FpdCgpKTsKICAgICBhc3NlcnROdWxsKHNkcExhdGNoLmdldFNkcCgpKTsKIAog
ICAgIHNkcExhdGNoID0gbmV3IFNkcE9ic2VydmVyTGF0Y2goKTsKICAgICBvZmZlcmluZ0V4cGVj
dGF0aW9ucy5leHBlY3RTaWduYWxpbmdDaGFuZ2UoU2lnbmFsaW5nU3RhdGUuSEFWRV9MT0NBTF9P
RkZFUik7CisgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQ
ZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RJTkcpOwogICAgIG9mZmVyaW5nUEMuc2V0TG9jYWxE
ZXNjcmlwdGlvbihzZHBMYXRjaCwgb2ZmZXJTZHApOwogICAgIGFzc2VydFRydWUoc2RwTGF0Y2gu
YXdhaXQoKSk7CiAgICAgYXNzZXJ0TnVsbChzZHBMYXRjaC5nZXRTZHAoKSk7CkBAIC0xMDAzLDEw
ICsxMDcxLDE0IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3QgewogCiAgICAgb2Zm
ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9u
U3RhdGUuQ0hFQ0tJTkcpOwogICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUNvbm5l
Y3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCk7CisgICAgb2ZmZXJpbmdF
eHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLk5F
Vyk7CisgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVy
Q29ubmVjdGlvblN0YXRlLkNPTk5FQ1RJTkcpOworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4
cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpOwogICAg
IC8vIFRPRE8oYmVtYXNjKTogdW5jb21tZW50IG9uY2UgZGVsaXZlcnkgb2YgSUNFQ29tcGxldGVk
IGlzIHJlbGlhYmxlCiAgICAgLy8gKGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Avd2VicnRjL2lz
c3Vlcy9kZXRhaWw/aWQ9MzAyMSkuCiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdElj
ZUNvbm5lY3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNIRUNLSU5HKTsKICAgICBhbnN3
ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9u
U3RhdGUuQ09OTkVDVEVEKTsKKyAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVj
dGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCk7CiAKICAgICBvZmZlcmlu
Z1BDLnNldFJlbW90ZURlc2NyaXB0aW9uKHNkcExhdGNoLCBhbnN3ZXJTZHApOwogICAgIGFzc2Vy
dFRydWUoc2RwTGF0Y2guYXdhaXQoKSk7CkBAIC0xMTM5LDYgKzEyMTEsNyBAQCBwdWJsaWMgY2xh
c3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKICAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RT
aWduYWxpbmdDaGFuZ2UoU2lnbmFsaW5nU3RhdGUuSEFWRV9MT0NBTF9PRkZFUik7CiAgICAgb2Zm
ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0SWNlQ2FuZGlkYXRlcygyKTsKICAgICBvZmZlcmluZ0V4
cGVjdGF0aW9ucy5leHBlY3RJY2VHYXRoZXJpbmdDaGFuZ2UoSWNlR2F0aGVyaW5nU3RhdGUuQ09N
UExFVEUpOworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFuZ2Uo
UGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNUSU5HKTsKICAgICBvZmZlcmluZ1BDLnNldExvY2Fs
RGVzY3JpcHRpb24oc2RwTGF0Y2gsIG9mZmVyU2RwKTsKICAgICBhc3NlcnRUcnVlKHNkcExhdGNo
LmF3YWl0KCkpOwogICAgIGFzc2VydE51bGwoc2RwTGF0Y2guZ2V0U2RwKCkpOwpAQCAtMTE3MCw2
ICsxMjQzLDcgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uVGVzdCB7CiAgICAgYW5zd2Vy
aW5nRXhwZWN0YXRpb25zLmV4cGVjdFNpZ25hbGluZ0NoYW5nZShTaWduYWxpbmdTdGF0ZS5TVEFC
TEUpOwogICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDYW5kaWRhdGVzKDIpOwog
ICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VHYXRoZXJpbmdDaGFuZ2UoSWNlR2F0
aGVyaW5nU3RhdGUuQ09NUExFVEUpOworICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RD
b25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7CiAgICAgYW5z
d2VyaW5nUEMuc2V0TG9jYWxEZXNjcmlwdGlvbihzZHBMYXRjaCwgYW5zd2VyU2RwKTsKICAgICBh
c3NlcnRUcnVlKHNkcExhdGNoLmF3YWl0KCkpOwogICAgIGFzc2VydE51bGwoc2RwTGF0Y2guZ2V0
U2RwKCkpOwpAQCAtMTE4MSw2ICsxMjU1LDkgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9u
VGVzdCB7CiAKICAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25uZWN0aW9uQ2hh
bmdlKEljZUNvbm5lY3Rpb25TdGF0ZS5DSEVDS0lORyk7CiAgICAgb2ZmZXJpbmdFeHBlY3RhdGlv
bnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVE
KTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJD
b25uZWN0aW9uU3RhdGUuTkVXKTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25u
ZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7CisgICAgb2ZmZXJp
bmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRl
LkNPTk5FQ1RFRCk7CiAgICAgLy8gVE9ETyhiZW1hc2MpOiB1bmNvbW1lbnQgb25jZSBkZWxpdmVy
eSBvZiBJQ0VDb21wbGV0ZWQgaXMgcmVsaWFibGUKICAgICAvLyAoaHR0cHM6Ly9jb2RlLmdvb2ds
ZS5jb20vcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD0zMDIxKS4KICAgICAvLwpAQCAtMTE4OCw2
ICsxMjY1LDcgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uVGVzdCB7CiAgICAgLy8gICAg
IEljZUNvbm5lY3Rpb25TdGF0ZS5DT01QTEVURUQpOwogICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9u
cy5leHBlY3RJY2VDb25uZWN0aW9uQ2hhbmdlKEljZUNvbm5lY3Rpb25TdGF0ZS5DSEVDS0lORyk7
CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUNvbm5lY3Rpb25DaGFuZ2UoSWNl
Q29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCk7CisgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4
cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpOwogCiAg
ICAgb2ZmZXJpbmdQQy5zZXRSZW1vdGVEZXNjcmlwdGlvbihzZHBMYXRjaCwgYW5zd2VyU2RwKTsK
ICAgICBhc3NlcnRUcnVlKHNkcExhdGNoLmF3YWl0KCkpOwpAQCAtMTU3Myw2ICsxNjUxLDcgQEAg
cHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uVGVzdCB7CiAgICAgYXNzZXJ0VHJ1ZShleHBlY3Rh
dGlvbnMud2FpdEZvckFsbEV4cGVjdGF0aW9uc1RvQmVTYXRpc2ZpZWQoVElNRU9VVF9TRUNPTkRT
KSk7CiAKICAgICBleHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25u
ZWN0aW9uU3RhdGUuQ0xPU0VEKTsKKyAgICBleHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNo
YW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNMT1NFRCk7CiAgICAgZXhwZWN0YXRpb25zLmV4cGVj
dFNpZ25hbGluZ0NoYW5nZShTaWduYWxpbmdTdGF0ZS5DTE9TRUQpOwogICAgIHBjLmNsb3NlKCk7
CiAgICAgYXNzZXJ0VHJ1ZShleHBlY3RhdGlvbnMud2FpdEZvckFsbEV4cGVjdGF0aW9uc1RvQmVT
YXRpc2ZpZWQoVElNRU9VVF9TRUNPTkRTKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0
cy9zcmMvb3JnL3dlYnJ0Yy9SdGNDZXJ0aWZpY2F0ZVBlbVRlc3QuamF2YSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlv
bnRlc3RzL3NyYy9vcmcvd2VicnRjL1J0Y0NlcnRpZmljYXRlUGVtVGVzdC5qYXZhCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAwZjI5NWM5NDJmNTdmZjRmOGJkM2JhZGM2N2MxMjg3ZDkxMzBkYjUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9SdGNDZXJ0aWZpY2F0ZVBl
bVRlc3QuamF2YQpAQCAtMCwwICsxLDczIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdl
IG9yZy53ZWJydGM7CisKK2ltcG9ydCBzdGF0aWMgY29tLmdvb2dsZS5jb21tb24udHJ1dGguVHJ1
dGguYXNzZXJ0VGhhdDsKKworaW1wb3J0IGFuZHJvaWQuc3VwcG9ydC50ZXN0LmZpbHRlcnMuU21h
bGxUZXN0OworaW1wb3J0IG9yZy5jaHJvbWl1bS5iYXNlLnRlc3QuQmFzZUpVbml0NENsYXNzUnVu
bmVyOworaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7Citp
bXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworaW1wb3J0IG9yZy53ZWJydGMuUGVlckNv
bm5lY3Rpb247CitpbXBvcnQgb3JnLndlYnJ0Yy5SdGNDZXJ0aWZpY2F0ZVBlbTsKKworLyoqIFRl
c3RzIGZvciBSdGNDZXJ0aWZpY2F0ZVBlbS5qYXZhLiAqLworQFJ1bldpdGgoQmFzZUpVbml0NENs
YXNzUnVubmVyLmNsYXNzKQorcHVibGljIGNsYXNzIFJ0Y0NlcnRpZmljYXRlUGVtVGVzdCB7Cisg
IEBCZWZvcmUKKyAgcHVibGljIHZvaWQgc2V0VXAoKSB7CisgICAgU3lzdGVtLmxvYWRMaWJyYXJ5
KFRlc3RDb25zdGFudHMuTkFUSVZFX0xJQlJBUlkpOworICB9CisKKyAgQFRlc3QKKyAgQFNtYWxs
VGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3IoKSB7CisgICAgUnRjQ2VydGlmaWNh
dGVQZW0gb3JpZ2luYWwgPSBSdGNDZXJ0aWZpY2F0ZVBlbS5nZW5lcmF0ZUNlcnRpZmljYXRlKCk7
CisgICAgUnRjQ2VydGlmaWNhdGVQZW0gcmVjcmVhdGVkID0gbmV3IFJ0Y0NlcnRpZmljYXRlUGVt
KG9yaWdpbmFsLnByaXZhdGVLZXksIG9yaWdpbmFsLmNlcnRpZmljYXRlKTsKKyAgICBhc3NlcnRU
aGF0KG9yaWdpbmFsLnByaXZhdGVLZXkpLmlzRXF1YWxUbyhyZWNyZWF0ZWQucHJpdmF0ZUtleSk7
CisgICAgYXNzZXJ0VGhhdChvcmlnaW5hbC5jZXJ0aWZpY2F0ZSkuaXNFcXVhbFRvKHJlY3JlYXRl
ZC5jZXJ0aWZpY2F0ZSk7CisgIH0KKworICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2
b2lkIHRlc3RHZW5lcmF0ZUNlcnRpZmljYXRlRGVmYXVsdHMoKSB7CisgICAgUnRjQ2VydGlmaWNh
dGVQZW0gcnRjQ2VydGlmaWNhdGUgPSBSdGNDZXJ0aWZpY2F0ZVBlbS5nZW5lcmF0ZUNlcnRpZmlj
YXRlKCk7CisgICAgYXNzZXJ0VGhhdChydGNDZXJ0aWZpY2F0ZS5wcml2YXRlS2V5KS5pc05vdEVt
cHR5KCk7CisgICAgYXNzZXJ0VGhhdChydGNDZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZSkuaXNOb3RF
bXB0eSgpOworICB9CisKKyAgQFRlc3QKKyAgQFNtYWxsVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0
R2VuZXJhdGVDZXJ0aWZpY2F0ZUN1c3RvbUtleVR5cGVEZWZhdWx0RXhwaXJlcygpIHsKKyAgICBS
dGNDZXJ0aWZpY2F0ZVBlbSBydGNDZXJ0aWZpY2F0ZSA9CisgICAgICAgIFJ0Y0NlcnRpZmljYXRl
UGVtLmdlbmVyYXRlQ2VydGlmaWNhdGUoUGVlckNvbm5lY3Rpb24uS2V5VHlwZS5SU0EpOworICAg
IGFzc2VydFRoYXQocnRjQ2VydGlmaWNhdGUucHJpdmF0ZUtleSkuaXNOb3RFbXB0eSgpOworICAg
IGFzc2VydFRoYXQocnRjQ2VydGlmaWNhdGUuY2VydGlmaWNhdGUpLmlzTm90RW1wdHkoKTsKKyAg
fQorCisgIEBUZXN0CisgIEBTbWFsbFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEdlbmVyYXRlQ2Vy
dGlmaWNhdGVDdXN0b21FeHBpcmVzRGVmYXVsdEtleVR5cGUoKSB7CisgICAgUnRjQ2VydGlmaWNh
dGVQZW0gcnRjQ2VydGlmaWNhdGUgPSBSdGNDZXJ0aWZpY2F0ZVBlbS5nZW5lcmF0ZUNlcnRpZmlj
YXRlKDYwICogNjAgKiAyNCk7CisgICAgYXNzZXJ0VGhhdChydGNDZXJ0aWZpY2F0ZS5wcml2YXRl
S2V5KS5pc05vdEVtcHR5KCk7CisgICAgYXNzZXJ0VGhhdChydGNDZXJ0aWZpY2F0ZS5jZXJ0aWZp
Y2F0ZSkuaXNOb3RFbXB0eSgpOworICB9CisKKyAgQFRlc3QKKyAgQFNtYWxsVGVzdAorICBwdWJs
aWMgdm9pZCB0ZXN0R2VuZXJhdGVDZXJ0aWZpY2F0ZUN1c3RvbUtleVR5cGVBbmRFeHBpcmVzKCkg
eworICAgIFJ0Y0NlcnRpZmljYXRlUGVtIHJ0Y0NlcnRpZmljYXRlID0KKyAgICAgICAgUnRjQ2Vy
dGlmaWNhdGVQZW0uZ2VuZXJhdGVDZXJ0aWZpY2F0ZShQZWVyQ29ubmVjdGlvbi5LZXlUeXBlLlJT
QSwgNjAgKiA2MCAqIDI0KTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRpZmljYXRlLnByaXZhdGVL
ZXkpLmlzTm90RW1wdHkoKTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRpZmljYXRlLmNlcnRpZmlj
YXRlKS5pc05vdEVtcHR5KCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3Rz
L3NyYy9vcmcvd2VicnRjL1RpbWVzdGFtcEFsaWduZXJUZXN0LmphdmEgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250
ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9UaW1lc3RhbXBBbGlnbmVyVGVzdC5qYXZhCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFkOTQ0YjU3ZjlkNjU0ZDg5ZGIwMDdlNDg0MDdhNjE4MGM2N2I0YTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9UaW1lc3RhbXBBbGlnbmVyVGVz
dC5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKK3BhY2thZ2Ugb3Jn
LndlYnJ0YzsKKworaW1wb3J0IGFuZHJvaWQuc3VwcG9ydC50ZXN0LmZpbHRlcnMuU21hbGxUZXN0
OworaW1wb3J0IG9yZy5jaHJvbWl1bS5iYXNlLnRlc3QucGFyYW1zLkJhc2VKVW5pdDRSdW5uZXJE
ZWxlZ2F0ZTsKK2ltcG9ydCBvcmcuY2hyb21pdW0uYmFzZS50ZXN0LnBhcmFtcy5QYXJhbWV0ZXJB
bm5vdGF0aW9ucy5Vc2VSdW5uZXJEZWxlZ2F0ZTsKK2ltcG9ydCBvcmcuanVuaXQuQmVmb3JlQ2xh
c3M7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK0BVc2VSdW5uZXJEZWxlZ2F0ZShCYXNlSlVu
aXQ0UnVubmVyRGVsZWdhdGUuY2xhc3MpCitwdWJsaWMgY2xhc3MgVGltZXN0YW1wQWxpZ25lclRl
c3QgeworICBAQmVmb3JlQ2xhc3MKKyAgcHVibGljIHN0YXRpYyB2b2lkIHNldFVwKCkgeworICAg
IFN5c3RlbS5sb2FkTGlicmFyeShUZXN0Q29uc3RhbnRzLk5BVElWRV9MSUJSQVJZKTsKKyAgfQor
CisgIEBUZXN0CisgIEBTbWFsbFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEdldFJ0Y1RpbWVOYW5v
cygpIHsKKyAgICBUaW1lc3RhbXBBbGlnbmVyLmdldFJ0Y1RpbWVOYW5vcygpOworICB9CisKKyAg
QFRlc3QKKyAgQFNtYWxsVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0RGlzcG9zZSgpIHsKKyAgICBm
aW5hbCBUaW1lc3RhbXBBbGlnbmVyIHRpbWVzdGFtcEFsaWduZXIgPSBuZXcgVGltZXN0YW1wQWxp
Z25lcigpOworICAgIHRpbWVzdGFtcEFsaWduZXIuZGlzcG9zZSgpOworICB9CisKKyAgQFRlc3QK
KyAgQFNtYWxsVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0VHJhbnNsYXRlVGltZXN0YW1wKCkgewor
ICAgIGZpbmFsIFRpbWVzdGFtcEFsaWduZXIgdGltZXN0YW1wQWxpZ25lciA9IG5ldyBUaW1lc3Rh
bXBBbGlnbmVyKCk7CisgICAgdGltZXN0YW1wQWxpZ25lci50cmFuc2xhdGVUaW1lc3RhbXAoLyog
Y2FtZXJhVGltZU5zPSAqLyAxMjMpOworICAgIHRpbWVzdGFtcEFsaWduZXIuZGlzcG9zZSgpOwor
ICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfYXBpL3ZpZGVvL3ZpZGVvc291cmNlLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX2Fw
aS92aWRlby92aWRlb3NvdXJjZS5jYwppbmRleCA0YzMwMmRhMGVkOWViMGIzOGMzMTFmMDEzZjY0
NDNlNGZmNjkyMjM2Li5hYWUxZGU3ZmYwMzQyYTBlYjVjY2M3MTVkYzdmYWVhN2M0ZTRkOWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9uYXRpdmVfYXBpL3ZpZGVvL3ZpZGVvc291cmNlLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV9hcGkvdmlk
ZW8vdmlkZW9zb3VyY2UuY2MKQEAgLTI1LDEyICsyNSwxNCBAQCBjbGFzcyBKYXZhVmlkZW9UcmFj
a1NvdXJjZUltcGwgOiBwdWJsaWMgSmF2YVZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2UgewogIHB1
YmxpYzoKICAgSmF2YVZpZGVvVHJhY2tTb3VyY2VJbXBsKEpOSUVudiogZW52LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzX3NjcmVlbmNhc3QpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzX3NjcmVlbmNhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGFsaWduX3RpbWVzdGFtcHMpCiAgICAgICA6IGFuZHJvaWRfdmlkZW9fdHJhY2tfc291
cmNlXygKICAgICAgICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8am5pOjpBbmRyb2lk
VmlkZW9UcmFja1NvdXJjZT4oCiAgICAgICAgICAgICAgICAgc2lnbmFsaW5nX3RocmVhZCwKICAg
ICAgICAgICAgICAgICBlbnYsCi0gICAgICAgICAgICAgICAgaXNfc2NyZWVuY2FzdCkpLAorICAg
ICAgICAgICAgICAgIGlzX3NjcmVlbmNhc3QsCisgICAgICAgICAgICAgICAgYWxpZ25fdGltZXN0
YW1wcykpLAogICAgICAgICBuYXRpdmVfY2FwdHVyZXJfb2JzZXJ2ZXJfKGpuaTo6Q3JlYXRlSmF2
YU5hdGl2ZUNhcHR1cmVyT2JzZXJ2ZXIoCiAgICAgICAgICAgICBlbnYsCiAgICAgICAgICAgICBh
bmRyb2lkX3ZpZGVvX3RyYWNrX3NvdXJjZV8pKSB7fQpAQCAtOTYsOSArOTgsMTAgQEAgY2xhc3Mg
SmF2YVZpZGVvVHJhY2tTb3VyY2VJbXBsIDogcHVibGljIEphdmFWaWRlb1RyYWNrU291cmNlSW50
ZXJmYWNlIHsKIHJ0Yzo6c2NvcGVkX3JlZnB0cjxKYXZhVmlkZW9UcmFja1NvdXJjZUludGVyZmFj
ZT4gQ3JlYXRlSmF2YVZpZGVvU291cmNlKAogICAgIEpOSUVudiogam5pLAogICAgIHJ0Yzo6VGhy
ZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgIGJvb2wgaXNfc2NyZWVuY2FzdCkgeworICAgIGJv
b2wgaXNfc2NyZWVuY2FzdCwKKyAgICBib29sIGFsaWduX3RpbWVzdGFtcHMpIHsKICAgcmV0dXJu
IG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8SmF2YVZpZGVvVHJhY2tTb3VyY2VJbXBsPigKLSAg
ICAgIGpuaSwgc2lnbmFsaW5nX3RocmVhZCwgaXNfc2NyZWVuY2FzdCk7CisgICAgICBqbmksIHNp
Z25hbGluZ190aHJlYWQsIGlzX3NjcmVlbmNhc3QsIGFsaWduX3RpbWVzdGFtcHMpOwogfQogCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfYXBpL3ZpZGVvL3ZpZGVvc291
cmNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9uYXRpdmVfYXBpL3ZpZGVvL3ZpZGVvc291cmNlLmgKaW5kZXggMGM0ZjMzMzQyZWJhZDZk
NGI1OTc5ZGFmM2NhZWU5NzYwM2IwNmY4Ny4uNzVlYmRiY2UzMDI2M2UzMDg1NTQwNDE0ZjEyODNm
NjEwMzYxYTAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX2FwaS92aWRlby92aWRlb3NvdXJjZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25h
dGl2ZV9hcGkvdmlkZW8vdmlkZW9zb3VyY2UuaApAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUg
PGpuaS5oPgogCiAjaW5jbHVkZSAiYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvdGhyZWFkLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvbmF0aXZlX2FwaS9q
bmkvc2NvcGVkX2phdmFfcmVmLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMzIsNyArMzMs
OCBAQCBjbGFzcyBKYXZhVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZSA6IHB1YmxpYyBWaWRlb1Ry
YWNrU291cmNlSW50ZXJmYWNlIHsKIHJ0Yzo6c2NvcGVkX3JlZnB0cjxKYXZhVmlkZW9UcmFja1Nv
dXJjZUludGVyZmFjZT4gQ3JlYXRlSmF2YVZpZGVvU291cmNlKAogICAgIEpOSUVudiogZW52LAog
ICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgIGJvb2wgaXNfc2NyZWVuY2Fz
dCk7CisgICAgYm9vbCBpc19zY3JlZW5jYXN0LAorICAgIGJvb2wgYWxpZ25fdGltZXN0YW1wcyk7
CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0ZXN0cy9h
dWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0ZXN0cy9hdWRp
b19kZXZpY2UvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjCmluZGV4IDVlNDYwNTJiOTAwNDgxNTZi
ZjFjM2Q2OThhMjUxMzY4NGRmOGQzNjkuLjk4ZDU4NTM4N2EwNGQ4YjY2NDY3ZmUyZWFjZWU0NjBm
ZDk3YjJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVzdHMvYXVkaW9fZGV2aWNlL2F1ZGlvX2Rl
dmljZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfdW5pdHRlc3RzL2F1ZGlvX2RldmljZS9hdWRpb19k
ZXZpY2VfdW5pdHRlc3QuY2MKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2RldmljZS9pbmNsdWRlL21vY2tfYXVkaW9fdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9mb3JtYXRf
bWFjcm9zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS90aW1ldXRpbHMuaCIKQEAgLTI1LDcgKzI2LDYgQEAKICNpbmNsdWRlICJzZGsv
YW5kcm9pZC9zcmMvam5pL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfbW9kdWxlLmgiCiAjaW5j
bHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9hdWRpb19kZXZpY2Uvb3BlbnNsZXNfY29tbW9uLmgi
CiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfaGVscGVycy5oIgotI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCIKICNpbmNsdWRlICJ0ZXN0
L2dtb2NrLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3QvdGVzdHN1
cHBvcnQvZmlsZXV0aWxzLmgiCkBAIC0zNjQsNyArMzY0LDcgQEAgY2xhc3MgTW9ja0F1ZGlvVHJh
bnNwb3J0QW5kcm9pZCA6IHB1YmxpYyB0ZXN0OjpNb2NrQXVkaW9UcmFuc3BvcnQgewogCiAgIC8v
IFNldCBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1vY2sgb2JqZWN0LiBXZSBhcmUgZGVsZWdhdGlu
ZyB0byBmYWtlCiAgIC8vIGltcGxlbWVudGF0aW9ucyAob2YgQXVkaW9TdHJlYW1JbnRlcmZhY2Up
IGhlcmUuCi0gIHZvaWQgSGFuZGxlQ2FsbGJhY2tzKEV2ZW50V3JhcHBlciogdGVzdF9pc19kb25l
LAorICB2b2lkIEhhbmRsZUNhbGxiYWNrcyhydGM6OkV2ZW50KiB0ZXN0X2lzX2RvbmUsCiAgICAg
ICAgICAgICAgICAgICAgICAgIEF1ZGlvU3RyZWFtSW50ZXJmYWNlKiBhdWRpb19zdHJlYW0sCiAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBudW1fY2FsbGJhY2tzKSB7CiAgICAgdGVzdF9pc19k
b25lXyA9IHRlc3RfaXNfZG9uZTsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBjbGFzcyBNb2NrQXVkaW9U
cmFuc3BvcnRBbmRyb2lkIDogcHVibGljIHRlc3Q6Ok1vY2tBdWRpb1RyYW5zcG9ydCB7CiAgIGJv
b2wgcmVjX21vZGUoKSBjb25zdCB7IHJldHVybiB0eXBlXyAmIGtSZWNvcmRpbmc7IH0KIAogIHBy
aXZhdGU6Ci0gIEV2ZW50V3JhcHBlciogdGVzdF9pc19kb25lXzsKKyAgcnRjOjpFdmVudCogdGVz
dF9pc19kb25lXzsKICAgc2l6ZV90IG51bV9jYWxsYmFja3NfOwogICBpbnQgdHlwZV87CiAgIHNp
emVfdCBwbGF5X2NvdW50XzsKQEAgLTQ1OSw3ICs0NTksNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFu
c3BvcnRBbmRyb2lkIDogcHVibGljIHRlc3Q6Ok1vY2tBdWRpb1RyYW5zcG9ydCB7CiAvLyBBdWRp
b0RldmljZVRlc3QgdGVzdCBmaXh0dXJlLgogY2xhc3MgQXVkaW9EZXZpY2VUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgotICBBdWRpb0RldmljZVRlc3QoKSA6IHRl
c3RfaXNfZG9uZV8oRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSkgeworICBBdWRpb0RldmljZVRlc3Qo
KSB7CiAgICAgLy8gT25lLXRpbWUgaW5pdGlhbGl6YXRpb24gb2YgSlZNIGFuZCBhcHBsaWNhdGlv
biBjb250ZXh0LiBFbnN1cmVzIHRoYXQgd2UKICAgICAvLyBjYW4gZG8gY2FsbHMgYmV0d2VlbiBD
KysgYW5kIEphdmEuIEluaXRpYWxpemVzIGJvdGggSmF2YSBhbmQgT3BlblNMIEVTCiAgICAgLy8g
aW1wbGVtZW50YXRpb25zLgpAQCAtNjgzLDcgKzY4Myw3IEBAIGNsYXNzIEF1ZGlvRGV2aWNlVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogCiAgIEpOSUVudiogam5pXzsKICAgc3RkOjp1
bmlxdWVfcHRyPEphdmFQYXJhbVJlZjxqb2JqZWN0Pj4gY29udGV4dF87Ci0gIHN0ZDo6dW5pcXVl
X3B0cjxFdmVudFdyYXBwZXI+IHRlc3RfaXNfZG9uZV87CisgIHJ0Yzo6RXZlbnQgdGVzdF9pc19k
b25lXzsKICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBhdWRpb19kZXZp
Y2VfOwogICBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gYXVkaW9fbWFuYWdlcl87CiAgIEF1
ZGlvUGFyYW1ldGVycyBvdXRwdXRfcGFyYW1ldGVyc187CkBAIC04ODAsMTQgKzg4MCwxNCBAQCBU
RVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdG9wUmVjb3JkaW5nUmVxdWlyZXNJbml0VG9SZXN0YXJ0
KSB7CiAvLyBhdWRpbyBzYW1wbGVzIHRvIHBsYXkgb3V0IHVzaW5nIHRoZSBOZWVkTW9yZVBsYXlE
YXRhIGNhbGxiYWNrLgogVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0VmVyaWZ5
Q2FsbGJhY2tzKSB7CiAgIE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQgbW9jayhrUGxheW91dCk7
Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtO
dW1DYWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVs
bHB0ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIE5lZWRNb3JlUGxheURh
dGEocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0J5dGVzUGVyU2FtcGxlLCBwbGF5b3V0X2NoYW5uZWxzKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheW91dF9zYW1wbGVfcmF0ZSgp
LCBOb3ROdWxsKCksIF8sIF8sIF8pKQogICAgICAgLlRpbWVzKEF0TGVhc3Qoa051bUNhbGxiYWNr
cykpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFj
aygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChrVGVz
dFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRpbWVP
dXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BQbGF5b3V0KCk7CiB9CiAKQEAgLTg5NSw3ICs4OTUs
NyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRWZXJpZnlDYWxsYmFja3Mp
IHsKIC8vIGF1ZGlvIHNhbXBsZXMgdmlhIHRoZSBSZWNvcmRlZERhdGFJc0F2YWlsYWJsZSBjYWxs
YmFjay4KIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UmVjb3JkaW5nVmVyaWZ5Q2FsbGJh
Y2tzKSB7CiAgIE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQgbW9jayhrUmVjb3JkaW5nKTsKLSAg
bW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgbnVsbHB0ciwga051bUNh
bGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBudWxscHRy
LCBrTnVtQ2FsbGJhY2tzKTsKICAgRVhQRUNUX0NBTEwoCiAgICAgICBtb2NrLCBSZWNvcmRlZERh
dGFJc0F2YWlsYWJsZShOb3ROdWxsKCksIHJlY29yZF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQnl0ZXNQZXJTYW1wbGUsIHJl
Y29yZF9jaGFubmVscygpLApAQCAtOTA0LDcgKzkwNCw3IEBAIFRFU1RfRihBdWRpb0RldmljZVRl
c3QsIFN0YXJ0UmVjb3JkaW5nVmVyaWZ5Q2FsbGJhY2tzKSB7CiAKICAgRVhQRUNUX0VRKDAsIGF1
ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3RhcnRSZWNv
cmRpbmcoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25k
cyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAg
IFN0b3BSZWNvcmRpbmcoKTsKIH0KIApAQCAtOTEyLDcgKzkxMiw3IEBAIFRFU1RfRihBdWRpb0Rl
dmljZVRlc3QsIFN0YXJ0UmVjb3JkaW5nVmVyaWZ5Q2FsbGJhY2tzKSB7CiAvLyBhY3RpdmUgaW4g
Ym90aCBkaXJlY3Rpb25zLgogVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0QW5k
UmVjb3JkaW5nVmVyaWZ5Q2FsbGJhY2tzKSB7CiAgIE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQg
bW9jayhrUGxheW91dCB8IGtSZWNvcmRpbmcpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0
X2lzX2RvbmVfLmdldCgpLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKKyAgbW9jay5IYW5kbGVD
YWxsYmFja3MoJnRlc3RfaXNfZG9uZV8sIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOwogICBFWFBF
Q1RfQ0FMTChtb2NrLCBOZWVkTW9yZVBsYXlEYXRhKHBsYXlvdXRfZnJhbWVzX3Blcl8xMG1zX2J1
ZmZlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtCeXRlc1BlclNh
bXBsZSwgcGxheW91dF9jaGFubmVscygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBsYXlvdXRfc2FtcGxlX3JhdGUoKSwgTm90TnVsbCgpLCBfLCBfLCBfKSkKQEAgLTky
NSw3ICs5MjUsNyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRBbmRSZWNv
cmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKICAgRVhQRUNUX0VRKDAsIGF1ZGlvX2RldmljZSgpLT5S
ZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3RhcnRQbGF5b3V0KCk7CiAgIFN0YXJ0
UmVjb3JkaW5nKCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNl
Y29uZHMpOworICB0ZXN0X2lzX2RvbmVfLldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMp
OwogICBTdG9wUmVjb3JkaW5nKCk7CiAgIFN0b3BQbGF5b3V0KCk7CiB9CkBAIC05NDEsMTIgKzk0
MSwxMSBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBSdW5QbGF5b3V0V2l0aEZpbGVBc1NvdXJj
ZSkgewogICBzdGQ6OnN0cmluZyBmaWxlX25hbWUgPSBHZXRGaWxlTmFtZShwbGF5b3V0X3NhbXBs
ZV9yYXRlKCkpOwogICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZUF1ZGlvU3RyZWFtPiBmaWxlX2F1ZGlv
X3N0cmVhbSgKICAgICAgIG5ldyBGaWxlQXVkaW9TdHJlYW0obnVtX2NhbGxiYWNrcywgZmlsZV9u
YW1lLCBwbGF5b3V0X3NhbXBsZV9yYXRlKCkpKTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVz
dF9pc19kb25lXy5nZXQoKSwgZmlsZV9hdWRpb19zdHJlYW0uZ2V0KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIG51bV9jYWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9p
c19kb25lXywgZmlsZV9hdWRpb19zdHJlYW0uZ2V0KCksIG51bV9jYWxsYmFja3MpOwogICAvLyBT
ZXRNYXhQbGF5b3V0Vm9sdW1lKCk7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+UmVn
aXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UGxheW91dCgpOwotICB0ZXN0X2lz
X2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKKyAgdGVzdF9pc19kb25l
Xy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAgU3RvcFBsYXlvdXQoKTsKIH0K
IApAQCAtMTA4NCwxMyArMTA4MywxMyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBESVNBQkxF
RF9SdW5QbGF5b3V0QW5kUmVjb3JkaW5nSW5GdWxsRHVwbGV4KSB7CiAgIE5pY2VNb2NrPE1vY2tB
dWRpb1RyYW5zcG9ydEFuZHJvaWQ+IG1vY2soa1BsYXlvdXQgfCBrUmVjb3JkaW5nKTsKICAgc3Rk
Ojp1bmlxdWVfcHRyPEZpZm9BdWRpb1N0cmVhbT4gZmlmb19hdWRpb19zdHJlYW0oCiAgICAgICBu
ZXcgRmlmb0F1ZGlvU3RyZWFtKHBsYXlvdXRfZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKSk7Ci0g
IG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIGZpZm9fYXVkaW9fc3Ry
ZWFtLmdldCgpLAorICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgZmlmb19h
dWRpb19zdHJlYW0uZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGtGdWxsRHVwbGV4VGlt
ZUluU2VjICoga051bUNhbGxiYWNrc1BlclNlY29uZCk7CiAgIFNldE1heFBsYXlvdXRWb2x1bWUo
KTsKICAgRVhQRUNUX0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2so
Jm1vY2spKTsKICAgU3RhcnRSZWNvcmRpbmcoKTsKICAgU3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3Rf
aXNfZG9uZV8tPldhaXQoCisgIHRlc3RfaXNfZG9uZV8uV2FpdCgKICAgICAgIHN0ZDo6bWF4KGtU
ZXN0VGltZU91dEluTWlsbGlzZWNvbmRzLCAxMDAwICoga0Z1bGxEdXBsZXhUaW1lSW5TZWMpKTsK
ICAgU3RvcFBsYXlvdXQoKTsKICAgU3RvcFJlY29yZGluZygpOwpAQCAtMTExNywxNCArMTExNiwx
NCBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBESVNBQkxFRF9NZWFzdXJlTG9vcGJhY2tMYXRl
bmN5KSB7CiAgIE5pY2VNb2NrPE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQ+IG1vY2soa1BsYXlv
dXQgfCBrUmVjb3JkaW5nKTsKICAgc3RkOjp1bmlxdWVfcHRyPExhdGVuY3lNZWFzdXJpbmdBdWRp
b1N0cmVhbT4gbGF0ZW5jeV9hdWRpb19zdHJlYW0oCiAgICAgICBuZXcgTGF0ZW5jeU1lYXN1cmlu
Z0F1ZGlvU3RyZWFtKHBsYXlvdXRfZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKSk7Ci0gIG1vY2su
SGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIGxhdGVuY3lfYXVkaW9fc3RyZWFt
LmdldCgpLAorICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbGF0ZW5jeV9h
dWRpb19zdHJlYW0uZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGtNZWFzdXJlTGF0ZW5j
eVRpbWVJblNlYyAqIGtOdW1DYWxsYmFja3NQZXJTZWNvbmQpOwogICBFWFBFQ1RfRVEoMCwgYXVk
aW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTZXRNYXhQbGF5
b3V0Vm9sdW1lKCk7CiAgIERpc2FibGVCdWlsdEluQUVDSWZBdmFpbGFibGUoKTsKICAgU3RhcnRS
ZWNvcmRpbmcoKTsKICAgU3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoCisg
IHRlc3RfaXNfZG9uZV8uV2FpdCgKICAgICAgIHN0ZDo6bWF4KGtUZXN0VGltZU91dEluTWlsbGlz
ZWNvbmRzLCAxMDAwICoga01lYXN1cmVMYXRlbmN5VGltZUluU2VjKSk7CiAgIFN0b3BQbGF5b3V0
KCk7CiAgIFN0b3BSZWNvcmRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVzdHMvb3JnL3dl
YnJ0Yy9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfdW5pdHRlc3RzL29yZy93
ZWJydGMvSmF2YVZpZGVvU291cmNlVGVzdEhlbHBlci5qYXZhCmluZGV4IGJkZTM0ZTk1Y2Y2MzMz
YjBkOTI1MDFlNjZhMjIwZTk4MDM1OTU1ZTQuLjMwOWM3ODY1NGVmMzY2ZDY1NWM1ODFkNWI5M2Iz
NmRlNTAwNDlhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVzdHMvb3JnL3dlYnJ0Yy9KYXZhVmlk
ZW9Tb3VyY2VUZXN0SGVscGVyLmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0ZXN0cy9vcmcvd2VicnRjL0ph
dmFWaWRlb1NvdXJjZVRlc3RIZWxwZXIuamF2YQpAQCAtMjQsOCArMjQsOSBAQCBwdWJsaWMgY2xh
c3MgSmF2YVZpZGVvU291cmNlVGVzdEhlbHBlciB7CiAgIH0KIAogICBAQ2FsbGVkQnlOYXRpdmUK
LSAgcHVibGljIHN0YXRpYyB2b2lkIGRlbGl2ZXJGcmFtZShpbnQgd2lkdGgsIGludCBoZWlnaHQs
IGludCByb3RhdGlvbiwgQ2FwdHVyZXJPYnNlcnZlciBvYnNlcnZlcikgeworICBwdWJsaWMgc3Rh
dGljIHZvaWQgZGVsaXZlckZyYW1lKAorICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQg
cm90YXRpb24sIGxvbmcgdGltZXN0YW1wTnMsIENhcHR1cmVyT2JzZXJ2ZXIgb2JzZXJ2ZXIpIHsK
ICAgICBvYnNlcnZlci5vbkZyYW1lQ2FwdHVyZWQoCi0gICAgICAgIG5ldyBWaWRlb0ZyYW1lKEph
dmFJNDIwQnVmZmVyLmFsbG9jYXRlKHdpZHRoLCBoZWlnaHQpLCByb3RhdGlvbiwgMCAvKiB0aW1l
c3RhbXBOcz0gKi8pKTsKKyAgICAgICAgbmV3IFZpZGVvRnJhbWUoSmF2YUk0MjBCdWZmZXIuYWxs
b2NhdGUod2lkdGgsIGhlaWdodCksIHJvdGF0aW9uLCB0aW1lc3RhbXBOcykpOwogICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9uYXRpdmVfdW5pdHRlc3RzL3ZpZGVvL3ZpZGVvc291cmNlX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0
aXZlX3VuaXR0ZXN0cy92aWRlby92aWRlb3NvdXJjZV91bml0dGVzdC5jYwppbmRleCBiNThlZDFh
NDVhNTRlZDA3YjlkODdmYzI0MzA4MmJkOWRlMDcwYzdiLi43ZWNmOWY4ZWI0YjhhMGY3ODk2NTNh
ZWY2ZWQ2NzljMzM1NDhiMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfdW5pdHRlc3RzL3ZpZGVvL3ZpZGVv
c291cmNlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVzdHMvdmlkZW8vdmlkZW9zb3VyY2Vf
dW5pdHRlc3QuY2MKQEAgLTQwLDkgKzQwLDkgQEAgVEVTVChKYXZhVmlkZW9Tb3VyY2VUZXN0LCBD
cmVhdGVKYXZhVmlkZW9Tb3VyY2UpIHsKICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgp
LT5XcmFwQ3VycmVudFRocmVhZCgpOwogCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxKYXZhVmlkZW9U
cmFja1NvdXJjZUludGVyZmFjZT4gdmlkZW9fdHJhY2tfc291cmNlID0KLSAgICAgIENyZWF0ZUph
dmFWaWRlb1NvdXJjZShlbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJl
YWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmFsc2UgLyogaXNfc2NyZWVuY2FzdCAqLyk7CisgICAgICBDcmVhdGVKYXZh
VmlkZW9Tb3VyY2UoCisgICAgICAgICAgZW52LCBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNl
KCktPkN1cnJlbnRUaHJlYWQoKSwKKyAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICov
LCB0cnVlIC8qIGFsaWduX3RpbWVzdGFtcHMgKi8pOwogCiAgIEFTU0VSVF9ORShudWxscHRyLCB2
aWRlb190cmFja19zb3VyY2UpOwogICBFWFBFQ1RfTkUobnVsbHB0ciwKQEAgLTU3LDkgKzU3LDkg
QEAgVEVTVChKYXZhVmlkZW9Tb3VyY2VUZXN0LCBPbkZyYW1lQ2FwdHVyZWRGcmFtZUlzRGVsaXZl
cmVkVG9TaW5rKSB7CiAgIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+V3JhcEN1cnJl
bnRUaHJlYWQoKTsKIAogICBydGM6OnNjb3BlZF9yZWZwdHI8SmF2YVZpZGVvVHJhY2tTb3VyY2VJ
bnRlcmZhY2U+IHZpZGVvX3RyYWNrX3NvdXJjZSA9Ci0gICAgICBDcmVhdGVKYXZhVmlkZW9Tb3Vy
Y2UoZW52LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6
SW5zdGFuY2UoKS0+Q3VycmVudFRocmVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZhbHNlIC8qIGlzX3NjcmVlbmNhc3QgKi8pOworICAgICAgQ3JlYXRlSmF2YVZpZGVvU291cmNl
KAorICAgICAgICAgIGVudiwgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5DdXJyZW50
VGhyZWFkKCksCisgICAgICAgICAgZmFsc2UgLyogaXNfc2NyZWVuY2FzdCAqLywgdHJ1ZSAvKiBh
bGlnbl90aW1lc3RhbXBzICovKTsKICAgdmlkZW9fdHJhY2tfc291cmNlLT5BZGRPclVwZGF0ZVNp
bmsoJnRlc3RfdmlkZW9fc2luaywgcnRjOjpWaWRlb1NpbmtXYW50cygpKTsKIAogICBqbmk6Okph
dmFfSmF2YVZpZGVvU291cmNlVGVzdEhlbHBlcl9zdGFydENhcHR1cmUoCkBAIC02OCw4ICs2OCw5
IEBAIFRFU1QoSmF2YVZpZGVvU291cmNlVGVzdCwgT25GcmFtZUNhcHR1cmVkRnJhbWVJc0RlbGl2
ZXJlZFRvU2luaykgewogICBjb25zdCBpbnQgd2lkdGggPSAyMDsKICAgY29uc3QgaW50IGhlaWdo
dCA9IDMyOwogICBjb25zdCBpbnQgcm90YXRpb24gPSAxODA7CisgIGNvbnN0IGludDY0X3QgdGlt
ZXN0YW1wID0gOTg3NjU0MzIxOwogICBqbmk6OkphdmFfSmF2YVZpZGVvU291cmNlVGVzdEhlbHBl
cl9kZWxpdmVyRnJhbWUoCi0gICAgICBlbnYsIHdpZHRoLCBoZWlnaHQsIHJvdGF0aW9uLAorICAg
ICAgZW52LCB3aWR0aCwgaGVpZ2h0LCByb3RhdGlvbiwgdGltZXN0YW1wLAogICAgICAgdmlkZW9f
dHJhY2tfc291cmNlLT5HZXRKYXZhVmlkZW9DYXB0dXJlck9ic2VydmVyKGVudikpOwogCiAgIHN0
ZDo6dmVjdG9yPFZpZGVvRnJhbWU+IGZyYW1lcyA9IHRlc3RfdmlkZW9fc2luay5HZXRGcmFtZXMo
KTsKQEAgLTgwLDE1ICs4MSw0OSBAQCBURVNUKEphdmFWaWRlb1NvdXJjZVRlc3QsIE9uRnJhbWVD
YXB0dXJlZEZyYW1lSXNEZWxpdmVyZWRUb1NpbmspIHsKICAgRVhQRUNUX0VRKHJvdGF0aW9uLCBm
cmFtZS5yb3RhdGlvbigpKTsKIH0KIAorVEVTVChKYXZhVmlkZW9Tb3VyY2VUZXN0LAorICAgICBP
bkZyYW1lQ2FwdHVyZWRGcmFtZUlzRGVsaXZlcmVkVG9TaW5rV2l0aFByZXNlcnZlZFRpbWVzdGFt
cCkgeworICBUZXN0VmlkZW9TaW5rIHRlc3RfdmlkZW9fc2luazsKKworICBKTklFbnYqIGVudiA9
IEF0dGFjaEN1cnJlbnRUaHJlYWRJZk5lZWRlZCgpOworICAvLyBXcmFwIHRlc3QgdGhyZWFkIHNv
IGl0IGNhbiBiZSB1c2VkIGFzIHRoZSBzaWduYWxpbmcgdGhyZWFkLgorICBydGM6OlRocmVhZE1h
bmFnZXI6Okluc3RhbmNlKCktPldyYXBDdXJyZW50VGhyZWFkKCk7CisKKyAgcnRjOjpzY29wZWRf
cmVmcHRyPEphdmFWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlPiB2aWRlb190cmFja19zb3VyY2Ug
PQorICAgICAgQ3JlYXRlSmF2YVZpZGVvU291cmNlKAorICAgICAgICAgIGVudiwgcnRjOjpUaHJl
YWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCisgICAgICAgICAgZmFsc2Ug
LyogaXNfc2NyZWVuY2FzdCAqLywgZmFsc2UgLyogYWxpZ25fdGltZXN0YW1wcyAqLyk7CisgIHZp
ZGVvX3RyYWNrX3NvdXJjZS0+QWRkT3JVcGRhdGVTaW5rKCZ0ZXN0X3ZpZGVvX3NpbmssIHJ0Yzo6
VmlkZW9TaW5rV2FudHMoKSk7CisKKyAgam5pOjpKYXZhX0phdmFWaWRlb1NvdXJjZVRlc3RIZWxw
ZXJfc3RhcnRDYXB0dXJlKAorICAgICAgZW52LCB2aWRlb190cmFja19zb3VyY2UtPkdldEphdmFW
aWRlb0NhcHR1cmVyT2JzZXJ2ZXIoZW52KSwKKyAgICAgIHRydWUgLyogc3VjY2VzcyAqLyk7Cisg
IGNvbnN0IGludCB3aWR0aCA9IDIwOworICBjb25zdCBpbnQgaGVpZ2h0ID0gMzI7CisgIGNvbnN0
IGludCByb3RhdGlvbiA9IDE4MDsKKyAgY29uc3QgaW50NjRfdCB0aW1lc3RhbXAgPSA5ODc2NTQz
MjE7CisgIGpuaTo6SmF2YV9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyX2RlbGl2ZXJGcmFtZSgK
KyAgICAgIGVudiwgd2lkdGgsIGhlaWdodCwgcm90YXRpb24sIDk4NzY1NDMyMSwKKyAgICAgIHZp
ZGVvX3RyYWNrX3NvdXJjZS0+R2V0SmF2YVZpZGVvQ2FwdHVyZXJPYnNlcnZlcihlbnYpKTsKKwor
ICBzdGQ6OnZlY3RvcjxWaWRlb0ZyYW1lPiBmcmFtZXMgPSB0ZXN0X3ZpZGVvX3NpbmsuR2V0RnJh
bWVzKCk7CisgIEFTU0VSVF9FUSgxdSwgZnJhbWVzLnNpemUoKSk7CisgIHdlYnJ0Yzo6VmlkZW9G
cmFtZSBmcmFtZSA9IGZyYW1lc1swXTsKKyAgRVhQRUNUX0VRKHdpZHRoLCBmcmFtZS53aWR0aCgp
KTsKKyAgRVhQRUNUX0VRKGhlaWdodCwgZnJhbWUuaGVpZ2h0KCkpOworICBFWFBFQ1RfRVEocm90
YXRpb24sIGZyYW1lLnJvdGF0aW9uKCkpOworICBFWFBFQ1RfRVEodGltZXN0YW1wIC8gMTAwMCwg
ZnJhbWUudGltZXN0YW1wX3VzKCkpOworfQorCiBURVNUKEphdmFWaWRlb1NvdXJjZVRlc3QsIENh
cHR1cmVyU3RhcnRlZFN1Y2Nlc3NTdGF0ZUJlY29tZXNMaXZlKSB7CiAgIEpOSUVudiogZW52ID0g
QXR0YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7CiAgIC8vIFdyYXAgdGVzdCB0aHJlYWQgc28g
aXQgY2FuIGJlIHVzZWQgYXMgdGhlIHNpZ25hbGluZyB0aHJlYWQuCiAgIHJ0Yzo6VGhyZWFkTWFu
YWdlcjo6SW5zdGFuY2UoKS0+V3JhcEN1cnJlbnRUaHJlYWQoKTsKIAogICBydGM6OnNjb3BlZF9y
ZWZwdHI8SmF2YVZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2U+IHZpZGVvX3RyYWNrX3NvdXJjZSA9
Ci0gICAgICBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoZW52LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+Q3VycmVudFRocmVhZCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIGlzX3NjcmVlbmNhc3QgKi8pOwor
ICAgICAgQ3JlYXRlSmF2YVZpZGVvU291cmNlKAorICAgICAgICAgIGVudiwgcnRjOjpUaHJlYWRN
YW5hZ2VyOjpJbnN0YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCisgICAgICAgICAgZmFsc2UgLyog
aXNfc2NyZWVuY2FzdCAqLywgdHJ1ZSAvKiBhbGlnbl90aW1lc3RhbXBzICovKTsKIAogICBqbmk6
OkphdmFfSmF2YVZpZGVvU291cmNlVGVzdEhlbHBlcl9zdGFydENhcHR1cmUoCiAgICAgICBlbnYs
IHZpZGVvX3RyYWNrX3NvdXJjZS0+R2V0SmF2YVZpZGVvQ2FwdHVyZXJPYnNlcnZlcihlbnYpLApA
QCAtMTA0LDkgKzEzOSw5IEBAIFRFU1QoSmF2YVZpZGVvU291cmNlVGVzdCwgQ2FwdHVyZXJTdGFy
dGVkRmFpbHVyZVN0YXRlQmVjb21lc0VuZGVkKSB7CiAgIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6SW5z
dGFuY2UoKS0+V3JhcEN1cnJlbnRUaHJlYWQoKTsKIAogICBydGM6OnNjb3BlZF9yZWZwdHI8SmF2
YVZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2U+IHZpZGVvX3RyYWNrX3NvdXJjZSA9Ci0gICAgICBD
cmVhdGVKYXZhVmlkZW9Tb3VyY2UoZW52LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+Q3VycmVudFRocmVhZCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIGlzX3NjcmVlbmNhc3QgKi8pOworICAgICAgQ3Jl
YXRlSmF2YVZpZGVvU291cmNlKAorICAgICAgICAgIGVudiwgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJ
bnN0YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCisgICAgICAgICAgZmFsc2UgLyogaXNfc2NyZWVu
Y2FzdCAqLywgdHJ1ZSAvKiBhbGlnbl90aW1lc3RhbXBzICovKTsKIAogICBqbmk6OkphdmFfSmF2
YVZpZGVvU291cmNlVGVzdEhlbHBlcl9zdGFydENhcHR1cmUoCiAgICAgICBlbnYsIHZpZGVvX3Ry
YWNrX3NvdXJjZS0+R2V0SmF2YVZpZGVvQ2FwdHVyZXJPYnNlcnZlcihlbnYpLApAQCAtMTIyLDkg
KzE1Nyw5IEBAIFRFU1QoSmF2YVZpZGVvU291cmNlVGVzdCwgQ2FwdHVyZXJTdG9wcGVkU3RhdGVC
ZWNvbWVzRW5kZWQpIHsKICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3Vy
cmVudFRocmVhZCgpOwogCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxKYXZhVmlkZW9UcmFja1NvdXJj
ZUludGVyZmFjZT4gdmlkZW9fdHJhY2tfc291cmNlID0KLSAgICAgIENyZWF0ZUphdmFWaWRlb1Nv
dXJjZShlbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWRNYW5hZ2Vy
OjpJbnN0YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmFsc2UgLyogaXNfc2NyZWVuY2FzdCAqLyk7CisgICAgICBDcmVhdGVKYXZhVmlkZW9Tb3Vy
Y2UoCisgICAgICAgICAgZW52LCBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJl
bnRUaHJlYWQoKSwKKyAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovLCB0cnVlIC8q
IGFsaWduX3RpbWVzdGFtcHMgKi8pOwogCiAgIGpuaTo6SmF2YV9KYXZhVmlkZW9Tb3VyY2VUZXN0
SGVscGVyX3N0YXJ0Q2FwdHVyZSgKICAgICAgIGVudiwgdmlkZW9fdHJhY2tfc291cmNlLT5HZXRK
YXZhVmlkZW9DYXB0dXJlck9ic2VydmVyKGVudiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2Vi
cnRjL0hhcmR3YXJlVmlkZW9FbmNvZGVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL0hhcmR3YXJl
VmlkZW9FbmNvZGVyLmphdmEKaW5kZXggZWJmOWRlMzc0ZjE0YjAxZDkzYTE4MWNmN2JlMjc2NWY2
ZDQzODdkOS4uYzM2YTY4Y2QyMWI3ZjFiNTMwZmUxNDgzODFmODgzNjVmNGYyOTBjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9IYXJkd2FyZVZpZGVvRW5jb2Rlci5qYXZhCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9q
YXZhL29yZy93ZWJydGMvSGFyZHdhcmVWaWRlb0VuY29kZXIuamF2YQpAQCAtNDAzLDEyICs0MDMs
NiBAQCBjbGFzcyBIYXJkd2FyZVZpZGVvRW5jb2RlciBpbXBsZW1lbnRzIFZpZGVvRW5jb2RlciB7
CiAgICAgcmV0dXJuIFZpZGVvQ29kZWNTdGF0dXMuT0s7CiAgIH0KIAotICBAT3ZlcnJpZGUKLSAg
cHVibGljIFZpZGVvQ29kZWNTdGF0dXMgc2V0Q2hhbm5lbFBhcmFtZXRlcnMoc2hvcnQgcGFja2V0
TG9zcywgbG9uZyByb3VuZFRyaXBUaW1lTXMpIHsKLSAgICBlbmNvZGVUaHJlYWRDaGVja2VyLmNo
ZWNrSXNPblZhbGlkVGhyZWFkKCk7Ci0gICAgcmV0dXJuIFZpZGVvQ29kZWNTdGF0dXMuT0s7IC8v
IE5vIG9wLgotICB9Ci0KICAgQE92ZXJyaWRlCiAgIHB1YmxpYyBWaWRlb0NvZGVjU3RhdHVzIHNl
dFJhdGVBbGxvY2F0aW9uKEJpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVBbGxvY2F0aW9uLCBpbnQg
ZnJhbWVyYXRlKSB7CiAgICAgZW5jb2RlVGhyZWFkQ2hlY2tlci5jaGVja0lzT25WYWxpZFRocmVh
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9OYXRpdmVDYXB0dXJlck9ic2VydmVy
LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL05hdGl2ZUNhcHR1cmVyT2JzZXJ2ZXIuamF2YQppbmRl
eCAyNDg2OTgxOGE2NmEzOGU5YzAzZTEyMmEwYTNhOTA0MjM4MGMzYzhlLi5mNjczYjI0ODg1YjJi
NjJlZWRjMjBhYjIwZWI2NWZlMThhMTM4Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRj
L05hdGl2ZUNhcHR1cmVyT2JzZXJ2ZXIuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL05hdGl2
ZUNhcHR1cmVyT2JzZXJ2ZXIuamF2YQpAQCAtMTEsNiArMTEsNyBAQAogcGFja2FnZSBvcmcud2Vi
cnRjOwogCiBpbXBvcnQgamF2YXguYW5ub3RhdGlvbi5OdWxsYWJsZTsKK2ltcG9ydCBvcmcud2Vi
cnRjLlZpZGVvRnJhbWU7CiAKIC8qKgogICogSW1wbGVtZW50cyBWaWRlb0NhcHR1cmVyLkNhcHR1
cmVyT2JzZXJ2ZXIgYW5kIGZlZWRzIGZyYW1lcyB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2phdmEvb3JnL3dl
YnJ0Yy9WUDhEZWNvZGVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOERlY29kZXIuamF2YQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIyOWMzNDljN2ExMDIxODcxN2I5ZmM2OTRm
ZTA0MDU2YWIxM2VjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOERlY29kZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0x
LDIwICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi1wYWNrYWdlIG9yZy53ZWJydGM7
Ci0KLWNsYXNzIFZQOERlY29kZXIgZXh0ZW5kcyBXcmFwcGVkTmF0aXZlVmlkZW9EZWNvZGVyIHsK
LSAgQE92ZXJyaWRlCi0gIHB1YmxpYyBsb25nIGNyZWF0ZU5hdGl2ZVZpZGVvRGVjb2RlcigpIHsK
LSAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRGVjb2RlcigpOwotICB9Ci0KLSAgc3RhdGljIG5hdGl2
ZSBsb25nIG5hdGl2ZUNyZWF0ZURlY29kZXIoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93
ZWJydGMvVlA4RW5jb2Rlci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9WUDhFbmNvZGVyLmphdmEK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyZjhmNTA0MTc3ZGVlZWY5YzNlYTdjNzc1
ODUyZGEyOGU0M2I0ZTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9WUDhFbmNvZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAt
MSwyNSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQot
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotcGFja2FnZSBvcmcud2VicnRj
OwotCi1jbGFzcyBWUDhFbmNvZGVyIGV4dGVuZHMgV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2RlciB7
Ci0gIEBPdmVycmlkZQotICBwdWJsaWMgbG9uZyBjcmVhdGVOYXRpdmVWaWRlb0VuY29kZXIoKSB7
Ci0gICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsKLSAgfQotCi0gIHN0YXRpYyBuYXRp
dmUgbG9uZyBuYXRpdmVDcmVhdGVFbmNvZGVyKCk7Ci0KLSAgQE92ZXJyaWRlCi0gIHB1YmxpYyBi
b29sZWFuIGlzSGFyZHdhcmVFbmNvZGVyKCkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9WUDlEZWNvZGVyLmphdmEgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcv
d2VicnRjL1ZQOURlY29kZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZm
ZWUyZDM2MmIyYWU1ODM3NThjYmViOWRjZDFhZDdkYTllZTFiNi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOURlY29kZXIu
amF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChj
KSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAq
LwotCi1wYWNrYWdlIG9yZy53ZWJydGM7Ci0KLWNsYXNzIFZQOURlY29kZXIgZXh0ZW5kcyBXcmFw
cGVkTmF0aXZlVmlkZW9EZWNvZGVyIHsKLSAgQE92ZXJyaWRlCi0gIHB1YmxpYyBsb25nIGNyZWF0
ZU5hdGl2ZVZpZGVvRGVjb2RlcigpIHsKLSAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRGVjb2Rlcigp
OwotICB9Ci0KLSAgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZURlY29kZXIoKTsKLQot
ICBzdGF0aWMgbmF0aXZlIGJvb2xlYW4gbmF0aXZlSXNTdXBwb3J0ZWQoKTsKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L3NyYy9qYXZhL29yZy93ZWJydGMvVlA5RW5jb2Rlci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9W
UDlFbmNvZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNzA1YmQ5YzYw
MTdlYjY2NDQ5YzcyN2YzNjQwNzE1ZjcxOTEzZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9WUDlFbmNvZGVyLmphdmEKKysr
IC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotcGFj
a2FnZSBvcmcud2VicnRjOwotCi1jbGFzcyBWUDlFbmNvZGVyIGV4dGVuZHMgV3JhcHBlZE5hdGl2
ZVZpZGVvRW5jb2RlciB7Ci0gIEBPdmVycmlkZQotICBwdWJsaWMgbG9uZyBjcmVhdGVOYXRpdmVW
aWRlb0VuY29kZXIoKSB7Ci0gICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsKLSAgfQot
Ci0gIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVDcmVhdGVFbmNvZGVyKCk7Ci0KLSAgQE92ZXJy
aWRlCi0gIHB1YmxpYyBib29sZWFuIGlzSGFyZHdhcmVFbmNvZGVyKCkgewotICAgIHJldHVybiBm
YWxzZTsKLSAgfQotCi0gIHN0YXRpYyBuYXRpdmUgYm9vbGVhbiBuYXRpdmVJc1N1cHBvcnRlZCgp
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9XcmFwcGVkTmF0aXZlVmlkZW9FbmNv
ZGVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIuamF2
YQppbmRleCAwN2U4NDI4NjIxMDEyMDcxMDdjZmQ0Mjc4M2JiOWQ2MDUwYTUxZDViLi45NTljYWZj
YTU2OTA3YzBhMThiZjUxYzY2ZjhiZmFiMjYxY2NjMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcv
d2VicnRjL1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2Vi
cnRjL1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIuamF2YQpAQCAtMzIsMTEgKzMyLDYgQEAgYWJz
dHJhY3QgY2xhc3MgV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2RlciBpbXBsZW1lbnRzIFZpZGVvRW5j
b2RlciB7CiAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJOb3Qg
aW1wbGVtZW50ZWQuIik7CiAgIH0KIAotICBAT3ZlcnJpZGUKLSAgcHVibGljIFZpZGVvQ29kZWNT
dGF0dXMgc2V0Q2hhbm5lbFBhcmFtZXRlcnMoc2hvcnQgcGFja2V0TG9zcywgbG9uZyByb3VuZFRy
aXBUaW1lTXMpIHsKLSAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24o
Ik5vdCBpbXBsZW1lbnRlZC4iKTsKLSAgfQotCiAgIEBPdmVycmlkZQogICBwdWJsaWMgVmlkZW9D
b2RlY1N0YXR1cyBzZXRSYXRlQWxsb2NhdGlvbihCaXRyYXRlQWxsb2NhdGlvbiBhbGxvY2F0aW9u
LCBpbnQgZnJhbWVyYXRlKSB7CiAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhj
ZXB0aW9uKCJOb3QgaW1wbGVtZW50ZWQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRtZWRp
YWRlY29kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRtZWRpYWRlY29kZXIuY2MKaW5kZXggNDdkZGFhYzQ2
NzJlYjAxZGEwYzI0MTQ3NDc5ZDVhM2NiMWUxY2Y0MS4uNGRmNTA4MjljMzZiMTBlMWMwZTAwOTky
MTIzYzUzNjhkOWZkOGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkbWVkaWFkZWNvZGVyLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qbmkvYW5kcm9pZG1lZGlhZGVjb2Rlci5jYwpAQCAtMzUsNyArMzUsNiBAQAogI2lu
Y2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di92aWRlb19jb21tb24uaCIK
IAogdXNpbmcgcnRjOjpCaW5kOwotdXNpbmcgcnRjOjpUaHJlYWQ7CiB1c2luZyBydGM6OlRocmVh
ZE1hbmFnZXI7CiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBqbmkgewpAQCAtMTIxLDcg
KzEyMCw3IEBAIGNsYXNzIE1lZGlhQ29kZWNWaWRlb0RlY29kZXIgOiBwdWJsaWMgVmlkZW9EZWNv
ZGVyLCBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciB7CiAKICAgLy8gU3RhdGUgdGhhdCBpcyBj
b25zdGFudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoaXMgb2JqZWN0IG9uY2UgdGhlIGN0b3IKICAg
Ly8gcmV0dXJucy4KLSAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZD4KKyAgc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6VGhyZWFkPgogICAgICAgY29kZWNfdGhyZWFkXzsgIC8vIFRocmVhZCBvbiB3aGljaCB0
byBvcGVyYXRlIE1lZGlhQ29kZWMuCiAgIFNjb3BlZEphdmFHbG9iYWxSZWY8am9iamVjdD4gal9t
ZWRpYV9jb2RlY192aWRlb19kZWNvZGVyXzsKIApAQCAtMTM3LDcgKzEzNiw3IEBAIE1lZGlhQ29k
ZWNWaWRlb0RlY29kZXI6Ok1lZGlhQ29kZWNWaWRlb0RlY29kZXIoSk5JRW52KiBqbmksCiAgICAg
ICBpbml0ZWRfKGZhbHNlKSwKICAgICAgIHN3X2ZhbGxiYWNrX3JlcXVpcmVkXyhmYWxzZSksCiAg
ICAgICB1c2Vfc3VyZmFjZV8odXNlX3N1cmZhY2UpLAotICAgICAgY29kZWNfdGhyZWFkXyhUaHJl
YWQ6OkNyZWF0ZSgpKSwKKyAgICAgIGNvZGVjX3RocmVhZF8ocnRjOjpUaHJlYWQ6OkNyZWF0ZSgp
KSwKICAgICAgIGpfbWVkaWFfY29kZWNfdmlkZW9fZGVjb2Rlcl8oCiAgICAgICAgICAgam5pLAog
ICAgICAgICAgIEphdmFfTWVkaWFDb2RlY1ZpZGVvRGVjb2Rlcl9Db25zdHJ1Y3RvcihqbmkpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRtZWRpYWVuY29kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRt
ZWRpYWVuY29kZXIuY2MKaW5kZXggNDM1YmM3MTNhODU4MGNkOWFiNGYxYTk2NzE2ODBlMTRhODk4
NDliYy4uMDliMmNjZjQzZjQwY2Q0OTFiZWEwNTYxOGJiMmJhYmJlMTE2NzIzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
c3JjL2puaS9hbmRyb2lkbWVkaWFlbmNvZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZG1lZGlhZW5j
b2Rlci5jYwpAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9p
bmNsdWRlL2xpYnl1di92aWRlb19jb21tb24uaCIKIAogdXNpbmcgcnRjOjpCaW5kOwotdXNpbmcg
cnRjOjpUaHJlYWQ7CiB1c2luZyBydGM6OlRocmVhZE1hbmFnZXI7CiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewpAQCAtMTA1LDEzICsxMDQsOSBAQCBjbGFzcyBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyIDog
cHVibGljIFZpZGVvRW5jb2RlciB7CiAgIGludDMyX3QgUmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNh
bGxiYWNrKAogICAgICAgRW5jb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsK
ICAgaW50MzJfdCBSZWxlYXNlKCkgb3ZlcnJpZGU7Ci0gIGludDMyX3QgU2V0Q2hhbm5lbFBhcmFt
ZXRlcnModWludDMyX3QgLyogcGFja2V0X2xvc3MgKi8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50NjRfdCAvKiBydHQgKi8pIG92ZXJyaWRlOwogICBpbnQzMl90IFNldFJhdGVB
bGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIHJhdGVfYWxsb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZV9yYXRlKSBvdmVycmlk
ZTsKLQotICBib29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gaGFzX2VnbF9jb250ZXh0XzsgfQotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUo
KSBjb25zdCBvdmVycmlkZTsKKyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBv
dmVycmlkZTsKIAogICAvLyBGaWxscyB0aGUgaW5wdXQgYnVmZmVyIHdpdGggZGF0YSBmcm9tIHRo
ZSBidWZmZXJzIHBhc3NlZCBhcyBwYXJhbWV0ZXJzLgogICBib29sIEZpbGxJbnB1dEJ1ZmZlcihK
TklFbnYqIGpuaSwKQEAgLTE4MCw3ICsxNzUsNyBAQCBjbGFzcyBNZWRpYUNvZGVjVmlkZW9FbmNv
ZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgIC8vIHRydWUgb24gc3VjY2Vzcy4KICAgYm9v
bCBEZWxpdmVyUGVuZGluZ091dHB1dHMoSk5JRW52KiBqbmkpOwogCi0gIFZpZGVvRW5jb2Rlcjo6
U2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IG92ZXJyaWRlOworICBW
aWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3NJbnRlcm5hbCgp
IGNvbnN0OwogCiAgIC8vIERpc3BsYXlzIGVuY29kZXIgc3RhdGlzdGljcy4KICAgdm9pZCBMb2dT
dGF0aXN0aWNzKGJvb2wgZm9yY2VfbG9nKTsKQEAgLTI3MSw2ICsyNjYsNyBAQCBjbGFzcyBNZWRp
YUNvZGVjVmlkZW9FbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgIHNpemVfdCBnb2Zf
aWR4XzsKIAogICBjb25zdCBib29sIGhhc19lZ2xfY29udGV4dF87CisgIEVuY29kZXJJbmZvIGVu
Y29kZXJfaW5mb187CiAKICAgLy8gVGVtcG9yYXJ5IGZpeCBmb3IgVlA4LgogICAvLyBTZW5kcyBh
IGtleSBmcmFtZSBpZiBmcmFtZXMgYXJlIGxhcmdlbHkgc3BhY2VkIGFwYXJ0IChwb3NzaWJseQpA
QCAtMzU4LDE3ICszNTQsMTYgQEAgaW50MzJfdCBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpJbml0
RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNvZGVjX3NldHRpbmdzLAogICAgIEFMT0dEIDw8ICJI
LjI2NCBwcm9maWxlOiAiIDw8IHByb2ZpbGVfOwogICB9CiAKKyAgZW5jb2Rlcl9pbmZvXy5zdXBw
b3J0c19uYXRpdmVfaGFuZGxlID0gaGFzX2VnbF9jb250ZXh0XzsKKyAgZW5jb2Rlcl9pbmZvXy5p
bXBsZW1lbnRhdGlvbl9uYW1lID0gIk1lZGlhQ29kZWMiOworICBlbmNvZGVyX2luZm9fLnNjYWxp
bmdfc2V0dGluZ3MgPSBHZXRTY2FsaW5nU2V0dGluZ3NJbnRlcm5hbCgpOworCiAgIHJldHVybiBJ
bml0RW5jb2RlSW50ZXJuYWwoCiAgICAgICBpbml0X3dpZHRoLCBpbml0X2hlaWdodCwgY29kZWNf
c2V0dGluZ3MtPnN0YXJ0Qml0cmF0ZSwKICAgICAgIGNvZGVjX3NldHRpbmdzLT5tYXhGcmFtZXJh
dGUsCiAgICAgICBjb2RlY19zZXR0aW5ncy0+ZXhwZWN0X2VuY29kZV9mcm9tX3RleHR1cmUgJiYg
aGFzX2VnbF9jb250ZXh0Xyk7CiB9CiAKLWludDMyX3QgTWVkaWFDb2RlY1ZpZGVvRW5jb2Rlcjo6
U2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgLyogcGFja2V0X2xvc3MgKi8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgLyog
cnR0ICovKSB7Ci0gIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Ci19Ci0KIGJvb2wgTWVk
aWFDb2RlY1ZpZGVvRW5jb2Rlcjo6UmVzZXRDb2RlYygpIHsKICAgUlRDX0RDSEVDS19DQUxMRURf
U0VRVUVOVElBTExZKCZlbmNvZGVyX3F1ZXVlX2NoZWNrZXJfKTsKICAgQUxPR0UgPDwgIlJlc2V0
IjsKQEAgLTkzMCw2ICs5MjUsMTAgQEAgaW50MzJfdCBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpT
ZXRSYXRlQWxsb2NhdGlvbigKICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKIH0KIAor
VmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpHZXRFbmNv
ZGVySW5mbygpIGNvbnN0IHsKKyAgcmV0dXJuIGVuY29kZXJfaW5mb187Cit9CisKIGJvb2wgTWVk
aWFDb2RlY1ZpZGVvRW5jb2Rlcjo6RGVsaXZlclBlbmRpbmdPdXRwdXRzKEpOSUVudiogam5pKSB7
CiAgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmZW5jb2Rlcl9xdWV1ZV9jaGVja2Vy
Xyk7CiAKQEAgLTExNDgsOCArMTE0Nyw4IEBAIHZvaWQgTWVkaWFDb2RlY1ZpZGVvRW5jb2Rlcjo6
TG9nU3RhdGlzdGljcyhib29sIGZvcmNlX2xvZykgewogICB9CiB9CiAKLVZpZGVvRW5jb2Rlcjo6
U2NhbGluZ1NldHRpbmdzIE1lZGlhQ29kZWNWaWRlb0VuY29kZXI6OkdldFNjYWxpbmdTZXR0aW5n
cygpCi0gICAgY29uc3QgeworVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MKK01lZGlhQ29k
ZWNWaWRlb0VuY29kZXI6OkdldFNjYWxpbmdTZXR0aW5nc0ludGVybmFsKCkgY29uc3QgewogICBp
ZiAoIXNjYWxlXykKICAgICByZXR1cm4gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtP
ZmY7CiAKQEAgLTEyMDYsMTAgKzEyMDUsNiBAQCBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5n
cyBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpHZXRTY2FsaW5nU2V0dGluZ3MoKQogICByZXR1cm4g
VmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtPZmY7CiB9CiAKLWNvbnN0IGNoYXIqIE1l
ZGlhQ29kZWNWaWRlb0VuY29kZXI6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsKLSAgcmV0
dXJuICJNZWRpYUNvZGVjIjsKLX0KLQogc3RhdGljIHZvaWQgSk5JX01lZGlhQ29kZWNWaWRlb0Vu
Y29kZXJfRmlsbElucHV0QnVmZmVyKAogICAgIEpOSUVudiogam5pLAogICAgIGNvbnN0IEphdmFQ
YXJhbVJlZjxqY2xhc3M+JiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZG5ldHdvcmttb25pdG9y
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS9hbmRyb2lkbmV0d29ya21vbml0b3IuY2MKaW5kZXggYjEzNTFlZjFlMWI3NDU1
NTA0OTc1NjFmOWJjMGQxOTJmOTUxMmY3Ni4uN2FjMTcyODFmOTdjYWY5ZmNlNzM2MWU1NDdlNmQ5
YmUyZDcwYzhlYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkbmV0d29ya21vbml0b3IuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
c3JjL2puaS9hbmRyb2lkbmV0d29ya21vbml0b3IuY2MKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNs
dWRlICJydGNfYmFzZS9iaW5kLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvaXBhZGRyZXNzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKICNpbmNsdWRl
ICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRfYmFzZV9qbmkvam5pL05ldHdvcmtNb25pdG9yQXV0b0Rl
dGVjdF9qbmkuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRfYmFzZV9qbmkvam5p
L05ldHdvcmtNb25pdG9yX2puaS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkdmlkZW90cmFj
a3NvdXJjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZHZpZGVvdHJhY2tzb3VyY2UuY2MKaW5kZXggNDFkNDI3
OGFjOWNmM2FhZDQ3YzFmYWE2ZDZkMjgzNjAwNWMxZjg5Zi4uZTcyODUwZjI0OTg4YjA0ODdhODg1
MGJhMDUxMWM3YzRiNWIxZTRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkdmlkZW90cmFja3Nv
dXJjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWR2aWRlb3RyYWNrc291cmNlLmNjCkBAIC0yNSwxMCAr
MjUsMTIgQEAgY29uc3QgaW50IGtSZXF1aXJlZFJlc29sdXRpb25BbGlnbm1lbnQgPSAyOwogCiBB
bmRyb2lkVmlkZW9UcmFja1NvdXJjZTo6QW5kcm9pZFZpZGVvVHJhY2tTb3VyY2UocnRjOjpUaHJl
YWQqIHNpZ25hbGluZ190aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSk5JRW52KiBqbmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19zY3JlZW5jYXN0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfc2NyZWVuY2FzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFsaWdu
X3RpbWVzdGFtcHMpCiAgICAgOiBBZGFwdGVkVmlkZW9UcmFja1NvdXJjZShrUmVxdWlyZWRSZXNv
bHV0aW9uQWxpZ25tZW50KSwKICAgICAgIHNpZ25hbGluZ190aHJlYWRfKHNpZ25hbGluZ190aHJl
YWQpLAotICAgICAgaXNfc2NyZWVuY2FzdF8oaXNfc2NyZWVuY2FzdCkgeworICAgICAgaXNfc2Ny
ZWVuY2FzdF8oaXNfc2NyZWVuY2FzdCksCisgICAgICBhbGlnbl90aW1lc3RhbXBzXyhhbGlnbl90
aW1lc3RhbXBzKSB7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkFuZHJvaWRWaWRlb1RyYWNrU291
cmNlIGN0b3IiOwogICBjYW1lcmFfdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZyb21UaHJlYWQoKTsK
IH0KQEAgLTc1LDcgKzc3LDkgQEAgdm9pZCBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZTo6T25GcmFt
ZUNhcHR1cmVkKAogCiAgIGludDY0X3QgY2FtZXJhX3RpbWVfdXMgPSB0aW1lc3RhbXBfbnMgLyBy
dGM6OmtOdW1OYW5vc2Vjc1Blck1pY3Jvc2VjOwogICBpbnQ2NF90IHRyYW5zbGF0ZWRfY2FtZXJh
X3RpbWVfdXMgPQotICAgICAgdGltZXN0YW1wX2FsaWduZXJfLlRyYW5zbGF0ZVRpbWVzdGFtcChj
YW1lcmFfdGltZV91cywgcnRjOjpUaW1lTWljcm9zKCkpOworICAgICAgYWxpZ25fdGltZXN0YW1w
c18gPyB0aW1lc3RhbXBfYWxpZ25lcl8uVHJhbnNsYXRlVGltZXN0YW1wKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FtZXJhX3RpbWVfdXMsIHJ0Yzo6VGltZU1pY3JvcygpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgOiBjYW1lcmFfdGltZV91czsKIAogICBpbnQgYWRhcHRlZF93
aWR0aDsKICAgaW50IGFkYXB0ZWRfaGVpZ2h0OwpAQCAtODQsMTAgKzg4LDE5IEBAIHZvaWQgQW5k
cm9pZFZpZGVvVHJhY2tTb3VyY2U6Ok9uRnJhbWVDYXB0dXJlZCgKICAgaW50IGNyb3BfeDsKICAg
aW50IGNyb3BfeTsKIAotICBpZiAoIUFkYXB0RnJhbWUod2lkdGgsIGhlaWdodCwgY2FtZXJhX3Rp
bWVfdXMsICZhZGFwdGVkX3dpZHRoLAotICAgICAgICAgICAgICAgICAgJmFkYXB0ZWRfaGVpZ2h0
LCAmY3JvcF93aWR0aCwgJmNyb3BfaGVpZ2h0LCAmY3JvcF94LAotICAgICAgICAgICAgICAgICAg
JmNyb3BfeSkpIHsKLSAgICByZXR1cm47CisgIGlmIChyb3RhdGlvbiAlIDE4MCA9PSAwKSB7Cisg
ICAgaWYgKCFBZGFwdEZyYW1lKHdpZHRoLCBoZWlnaHQsIGNhbWVyYV90aW1lX3VzLCAmYWRhcHRl
ZF93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgJmFkYXB0ZWRfaGVpZ2h0LCAmY3JvcF93aWR0
aCwgJmNyb3BfaGVpZ2h0LCAmY3JvcF94LAorICAgICAgICAgICAgICAgICAgICAmY3JvcF95KSkg
eworICAgICAgcmV0dXJuOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICAvLyBTd2FwIGFsbCB3aWR0
aC9oZWlnaHQgYW5kIHgveS4KKyAgICBpZiAoIUFkYXB0RnJhbWUoaGVpZ2h0LCB3aWR0aCwgY2Ft
ZXJhX3RpbWVfdXMsICZhZGFwdGVkX2hlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgJmFkYXB0
ZWRfd2lkdGgsICZjcm9wX2hlaWdodCwgJmNyb3Bfd2lkdGgsICZjcm9wX3ksCisgICAgICAgICAg
ICAgICAgICAgICZjcm9wX3gpKSB7CisgICAgICByZXR1cm47CisgICAgfQogICB9CiAKICAgcnRj
OjpzY29wZWRfcmVmcHRyPFZpZGVvRnJhbWVCdWZmZXI+IGJ1ZmZlciA9CkBAIC0xMDMsMTIgKzEx
NiwxNiBAQCB2b2lkIEFuZHJvaWRWaWRlb1RyYWNrU291cmNlOjpPbkZyYW1lQ2FwdHVyZWQoCiAg
IE9uRnJhbWUoVmlkZW9GcmFtZShidWZmZXIsIHJvdGF0aW9uLCB0cmFuc2xhdGVkX2NhbWVyYV90
aW1lX3VzKSk7CiB9CiAKLXZvaWQgQW5kcm9pZFZpZGVvVHJhY2tTb3VyY2U6Ok9uT3V0cHV0Rm9y
bWF0UmVxdWVzdChpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwKK3ZvaWQgQW5kcm9pZFZpZGVvVHJhY2tTb3Vy
Y2U6Ok9uT3V0cHV0Rm9ybWF0UmVxdWVzdChpbnQgbGFuZHNjYXBlX3dpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsYW5kc2NhcGVf
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBwb3J0cmFpdF93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgcG9ydHJhaXRfaGVpZ2h0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcHMpIHsKLSAgY3JpY2tl
dDo6VmlkZW9Gb3JtYXQgZm9ybWF0KHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmlja2V0OjpWaWRlb0Zvcm1hdDo6RnBzVG9JbnRlcnZhbChmcHMpLCAwKTsK
LSAgdmlkZW9fYWRhcHRlcigpLT5Pbk91dHB1dEZvcm1hdFJlcXVlc3QoZm9ybWF0KTsKKyAgdmlk
ZW9fYWRhcHRlcigpLT5Pbk91dHB1dEZvcm1hdFJlcXVlc3QoCisgICAgICBzdGQ6Om1ha2VfcGFp
cihsYW5kc2NhcGVfd2lkdGgsIGxhbmRzY2FwZV9oZWlnaHQpLAorICAgICAgbGFuZHNjYXBlX3dp
ZHRoICogbGFuZHNjYXBlX2hlaWdodCwKKyAgICAgIHN0ZDo6bWFrZV9wYWlyKHBvcnRyYWl0X3dp
ZHRoLCBwb3J0cmFpdF9oZWlnaHQpLAorICAgICAgcG9ydHJhaXRfd2lkdGggKiBwb3J0cmFpdF9o
ZWlnaHQsIGZwcyk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBqbmkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
YW5kcm9pZHZpZGVvdHJhY2tzb3VyY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZHZpZGVvdHJhY2tzb3VyY2Uu
aAppbmRleCA4ZjA5MmMxYjA0MWQ2YWVhM2I0OTUyYjYwN2IyYzlhNzIxODJkZTRjLi40Zjg0NDJl
NTc3ODE1ODBmZGQxOWIyODdjNGI4ZTcwM2M1YzU0ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJv
aWR2aWRlb3RyYWNrc291cmNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkdmlkZW90cmFja3NvdXJjZS5o
CkBAIC0yOSw3ICsyOSw4IEBAIGNsYXNzIEFuZHJvaWRWaWRlb1RyYWNrU291cmNlIDogcHVibGlj
IHJ0Yzo6QWRhcHRlZFZpZGVvVHJhY2tTb3VyY2UgewogIHB1YmxpYzoKICAgQW5kcm9pZFZpZGVv
VHJhY2tTb3VyY2UocnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEpOSUVudiogam5pLAotICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzX3NjcmVlbmNhc3QgPSBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNfc2NyZWVuY2FzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGlnbl90aW1l
c3RhbXBzKTsKICAgfkFuZHJvaWRWaWRlb1RyYWNrU291cmNlKCkgb3ZlcnJpZGU7CiAKICAgYm9v
bCBpc19zY3JlZW5jYXN0KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01MywxNSArNTQsMjAgQEAgY2xh
c3MgQW5kcm9pZFZpZGVvVHJhY2tTb3VyY2UgOiBwdWJsaWMgcnRjOjpBZGFwdGVkVmlkZW9UcmFj
a1NvdXJjZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvUm90YXRpb24gcm90YXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFSZWY8am9iamVjdD4mIGpfdmlkZW9f
ZnJhbWVfYnVmZmVyKTsKIAotICB2b2lkIE9uT3V0cHV0Rm9ybWF0UmVxdWVzdChpbnQgd2lkdGgs
IGludCBoZWlnaHQsIGludCBmcHMpOworICB2b2lkIE9uT3V0cHV0Rm9ybWF0UmVxdWVzdChpbnQg
bGFuZHNjYXBlX3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGFuZHNj
YXBlX2hlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcnRyYWl0X3dp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9ydHJhaXRfaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnBzKTsKIAogIHByaXZhdGU6CiAgIHJ0
Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkXzsKICAgcnRjOjpBc3luY0ludm9rZXIgaW52b2tl
cl87CiAgIHJ0Yzo6VGhyZWFkQ2hlY2tlciBjYW1lcmFfdGhyZWFkX2NoZWNrZXJfOwogICBTb3Vy
Y2VTdGF0ZSBzdGF0ZV87Ci0gIHJ0Yzo6VGltZXN0YW1wQWxpZ25lciB0aW1lc3RhbXBfYWxpZ25l
cl87CiAgIGNvbnN0IGJvb2wgaXNfc2NyZWVuY2FzdF87CisgIHJ0Yzo6VGltZXN0YW1wQWxpZ25l
ciB0aW1lc3RhbXBfYWxpZ25lcl87CisgIGNvbnN0IGJvb2wgYWxpZ25fdGltZXN0YW1wc187CiB9
OwogCiB9ICAvLyBuYW1lc3BhY2Ugam5pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2F1ZGlvX2RldmljZS9h
dWRpb19kZXZpY2VfbW9kdWxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX21v
ZHVsZS5jYwppbmRleCBkYzNhOGZlNGJhNTUzYTdkYWUxNDI4YzMyZTA0NDFhNjY0YzI2YTdlLi5l
MDRhMDFmYWVhZDFiZjYwYzNjNmY0ZTFjMThjYmQ1MmVmOGRkZWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5p
L2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfbW9kdWxlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYXVkaW9fZGV2
aWNlL2F1ZGlvX2RldmljZV9tb2R1bGUuY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2Vf
YnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL3NyYy9qbmkvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9tb2R1bGUuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
YXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9tb2R1bGUuaAppbmRleCBjZGRkM2UwNjc2OTc4NTU1
OTQwMzg5YjM0OTJlNjEwMjJlYmUxZjAyLi40NzZkYTE0Y2ViOTI4MjVlOWMzMzQ4OTI0NDFlYmY0
MDVjZDhiZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfbW9k
dWxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvc3JjL2puaS9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX21vZHVsZS5oCkBAIC0x
NCwxMCArMTQsMTMgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNl
X2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9f
ZGV2aWNlLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvbmF0aXZlX2FwaS9qbmkvc2NvcGVkX2ph
dmFfcmVmLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBBdWRpb0RldmljZUJ1ZmZl
cjsKKwogbmFtZXNwYWNlIGpuaSB7CiAKIGNsYXNzIEF1ZGlvSW5wdXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3Jj
L2puaS9idWlsdGluYXVkaW9kZWNvZGVyZmFjdG9yeWZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2J1aWx0aW5h
dWRpb2RlY29kZXJmYWN0b3J5ZmFjdG9yeS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OGEyODQzNjM3NDk2NzY0
ZDQxODQxMmMzYzlmNDRkZjQ2OTkyNjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9idWlsdGlu
YXVkaW9kZWNvZGVyZmFjdG9yeWZhY3RvcnkuY2MKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqICBD
b3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworI2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF9idWlsdGluX2F1ZGlv
X2NvZGVjc19qbmkvam5pL0J1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeV9qbmkuaCIK
KyNpbmNsdWRlICJzZGsvYW5kcm9pZC9uYXRpdmVfYXBpL2puaS9qYXZhX3R5cGVzLmgiCisjaW5j
bHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfaGVscGVycy5oIgorCisjaW5jbHVkZSAiYXBp
L2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgorCituYW1lc3Bh
Y2Ugd2VicnRjIHsKK25hbWVzcGFjZSBqbmkgeworCitzdGF0aWMgamxvbmcKK0pOSV9CdWlsdGlu
QXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnlfQ3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3Rv
cnkoCisgICAgSk5JRW52KiBlbnYsCisgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mIGpj
YWxsZXIpIHsKKyAgcmV0dXJuIE5hdGl2ZVRvSmF2YVBvaW50ZXIoQ3JlYXRlQnVpbHRpbkF1ZGlv
RGVjb2RlckZhY3RvcnkoKS5yZWxlYXNlKCkpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugam5pCit9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2J1aWx0aW5hdWRpb2VuY29k
ZXJmYWN0b3J5ZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYnVpbHRpbmF1ZGlvZW5jb2RlcmZhY3RvcnlmYWN0
b3J5LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMxYWVmYmE5YWIyNzhlZjY0M2RiMDIyZDYwZTI3OWU5MWFjZTgy
YmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2J1aWx0aW5hdWRpb2VuY29kZXJmYWN0b3J5ZmFj
dG9yeS5jYwpAQCAtMCwwICsxLDI4IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAi
c2RrL2FuZHJvaWQvZ2VuZXJhdGVkX2J1aWx0aW5fYXVkaW9fY29kZWNzX2puaS9qbmkvQnVpbHRp
bkF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5X2puaS5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lk
L25hdGl2ZV9hcGkvam5pL2phdmFfdHlwZXMuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMv
am5pL2puaV9oZWxwZXJzLmgiCisKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5f
YXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNl
IGpuaSB7CisKK3N0YXRpYyBqbG9uZworSk5JX0J1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5RmFj
dG9yeV9DcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgKKyAgICBKTklFbnYqIGVudiwK
KyAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNzPiYgamNhbGxlcikgeworICByZXR1cm4gTmF0
aXZlVG9KYXZhUG9pbnRlcihDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLnJlbGVh
c2UoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBqbmkKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qbmkvZW5jb2RlZGltYWdlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9lbmNvZGVkaW1hZ2UuY2MK
aW5kZXggYzBlYTI4ZTJkYzMyMzkyN2E4ZTI3YjAwZDczZGY3YzdlNWQzZGM2MS4uMjFmODMzNjRk
OTdkNjdhNWY1OTQ5Nzg0YzU1ZGRhYTA2YWExNWZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9lbmNvZGVk
aW1hZ2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvc3JjL2puaS9lbmNvZGVkaW1hZ2UuY2MKQEAgLTEwLDcgKzEwLDcgQEAKIAog
I2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvZW5jb2RlZGltYWdlLmgiCiAKLSNpbmNsdWRl
ICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUgImFwaS92aWRl
by9lbmNvZGVkX2ltYWdlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5j
bHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3ZpZGVvX2puaS9qbmkvRW5jb2RlZEltYWdlX2pu
aS5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL25hdGl2ZV9hcGkvam5pL2phdmFfdHlwZXMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qbmkvam5pX2dlbmVyYXRvcl9oZWxwZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvam5pX2dlbmVy
YXRvcl9oZWxwZXIuaAppbmRleCA1M2UxZDg0MTI3ZDdiNjFiMjc2YmMzMTYwNjYyMTQ5ZTJiMTgw
ZTJiLi5lNmQ2ZjdlZjE1OWQ2OGFhNTQyNTQwZjEzMWUwNDdlNTM0ZGE0MTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL2puaV9nZW5lcmF0b3JfaGVscGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfZ2VuZXJhdG9yX2hl
bHBlci5oCkBAIC0zMywxMiArMzMsNiBAQAogICBSVENfQ0hFQ0soIWpuaS0+RXhjZXB0aW9uQ2hl
Y2soKSkgXAogICAgICAgPDwgKGpuaS0+RXhjZXB0aW9uRGVzY3JpYmUoKSwgam5pLT5FeGNlcHRp
b25DbGVhcigpLCAiIikKIAotbmFtZXNwYWNlIGpuaV9nZW5lcmF0b3IgewotaW5saW5lIHZvaWQg
Q2hlY2tFeGNlcHRpb24oSk5JRW52KiBlbnYpIHsKLSAgQ0hFQ0tfRVhDRVBUSU9OKGVudik7Ci19
Ci19ICAvLyBuYW1lc3BhY2Ugam5pX2dlbmVyYXRvcgotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAog
Ly8gVGhpcyBmdW5jdGlvbiB3aWxsIGluaXRpYWxpemUgfGF0b21pY19jbGFzc19pZHwgdG8gY29u
dGFpbiBhIGdsb2JhbCByZWYgdG8KQEAgLTg2LDQgKzgwLDgwIEBAIHVzaW5nIHdlYnJ0Yzo6TWV0
aG9kSUQ7CiB9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAogfSAgLy8gbmFtZXNwYWNlIGJhc2UKIAor
bmFtZXNwYWNlIGpuaV9nZW5lcmF0b3IgeworaW5saW5lIHZvaWQgQ2hlY2tFeGNlcHRpb24oSk5J
RW52KiBlbnYpIHsKKyAgQ0hFQ0tfRVhDRVBUSU9OKGVudik7Cit9CisKKy8vIEEgMzIgYml0IG51
bWJlciBjb3VsZCBiZSBhbiBhZGRyZXNzIG9uIHN0YWNrLiBSYW5kb20gNjQgYml0IG1hcmtlciBv
biB0aGUKKy8vIHN0YWNrIGlzIG11Y2ggbGVzcyBsaWtlbHkgdG8gYmUgcHJlc2VudCBvbiBzdGFj
ay4KK2NvbnN0ZXhwciB1aW50NjRfdCBrSm5pU3RhY2tNYXJrZXJWYWx1ZSA9IDB4YmRiZGVmMWJl
YmNhZGUxYjsKKworLy8gQ29udGV4dCBhYm91dCB0aGUgSk5JIGNhbGwgd2l0aCBleGNlcHRpb24g
Y2hlY2tlZCB0byBiZSBzdG9yZWQgaW4gc3RhY2suCitzdHJ1Y3QgQkFTRV9FWFBPUlQgSm5pSmF2
YUNhbGxDb250ZXh0VW5jaGVja2VkIHsKKyAgaW5saW5lIEpuaUphdmFDYWxsQ29udGV4dFVuY2hl
Y2tlZCgpIHsKKy8vIFRPRE8oc3NpZCk6IEltcGxlbWVudCBmb3Igb3RoZXIgYXJjaGl0ZWN0dXJl
cy4KKyNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pCisgICAgLy8g
VGhpcyBhc3N1bWVzIHRoYXQgdGhpcyBtZXRob2QgZG9lcyBub3QgaW5jcmVtZW50IHRoZSBzdGFj
ayBwb2ludGVyLgorICAgIGFzbSB2b2xhdGlsZSgibW92ICUwLCBzcCIgOiAiPXIiKHNwKSk7Cisj
ZWxzZQorICAgIHNwID0gMDsKKyNlbmRpZgorICB9CisKKyAgLy8gRm9yY2Ugbm8gaW5saW5lIHRv
IHJlZHVjZSBjb2RlIHNpemUuCisgIHRlbXBsYXRlIDxiYXNlOjphbmRyb2lkOjpNZXRob2RJRDo6
VHlwZSB0eXBlPgorICB2b2lkIEluaXQoSk5JRW52KiBlbnYsCisgICAgICAgICAgICBqY2xhc3Mg
Y2xhenosCisgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXRob2RfbmFtZSwKKyAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGpuaV9zaWduYXR1cmUsCisgICAgICAgICAgICBzdGQ6OmF0b21pYzxqbWV0
aG9kSUQ+KiBhdG9taWNfbWV0aG9kX2lkKSB7CisgICAgZW52MSA9IGVudjsKKworICAgIC8vIE1h
a2Ugc3VyZSBjb21waWxlciBkb2Vzbid0IG9wdGltaXplIG91dCB0aGUgYXNzaWdubWVudC4KKyAg
ICBtZW1jcHkoJm1hcmtlciwgJmtKbmlTdGFja01hcmtlclZhbHVlLCBzaXplb2Yoa0puaVN0YWNr
TWFya2VyVmFsdWUpKTsKKyAgICAvLyBHZXRzIFBDIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLgor
ICAgIHBjID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KF9fYnVpbHRpbl9yZXR1cm5fYWRk
cmVzcygwKSk7CisKKyAgICBtZXRob2RfaWQgPSBiYXNlOjphbmRyb2lkOjpNZXRob2RJRDo6TGF6
eUdldDx0eXBlPigKKyAgICAgICAgZW52LCBjbGF6eiwgbWV0aG9kX25hbWUsIGpuaV9zaWduYXR1
cmUsIGF0b21pY19tZXRob2RfaWQpOworICB9CisKKyAgfkpuaUphdmFDYWxsQ29udGV4dFVuY2hl
Y2tlZCgpIHsKKyAgICAvLyBSZXNldCBzbyB0aGF0IHNwdXJpb3VzIG1hcmtlciBmaW5kcyBhcmUg
YXZvaWRlZC4KKyAgICBtZW1zZXQoJm1hcmtlciwgMCwgc2l6ZW9mKG1hcmtlcikpOworICB9CisK
KyAgdWludDY0X3QgbWFya2VyOworICB1aW50cHRyX3Qgc3A7CisgIHVpbnRwdHJfdCBwYzsKKwor
ICBKTklFbnYqIGVudjE7CisgIGptZXRob2RJRCBtZXRob2RfaWQ7Cit9OworCisvLyBDb250ZXh0
IGFib3V0IHRoZSBKTkkgY2FsbCB3aXRoIGV4Y2VwdGlvbiB1bmNoZWNrZWQgdG8gYmUgc3RvcmVk
IGluIHN0YWNrLgorc3RydWN0IEJBU0VfRVhQT1JUIEpuaUphdmFDYWxsQ29udGV4dENoZWNrZWQg
eworICAvLyBGb3JjZSBubyBpbmxpbmUgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KKyAgdGVtcGxhdGUg
PGJhc2U6OmFuZHJvaWQ6Ok1ldGhvZElEOjpUeXBlIHR5cGU+CisgIHZvaWQgSW5pdChKTklFbnYq
IGVudiwKKyAgICAgICAgICAgIGpjbGFzcyBjbGF6eiwKKyAgICAgICAgICAgIGNvbnN0IGNoYXIq
IG1ldGhvZF9uYW1lLAorICAgICAgICAgICAgY29uc3QgY2hhciogam5pX3NpZ25hdHVyZSwKKyAg
ICAgICAgICAgIHN0ZDo6YXRvbWljPGptZXRob2RJRD4qIGF0b21pY19tZXRob2RfaWQpIHsKKyAg
ICBiYXNlLkluaXQ8dHlwZT4oZW52LCBjbGF6eiwgbWV0aG9kX25hbWUsIGpuaV9zaWduYXR1cmUs
IGF0b21pY19tZXRob2RfaWQpOworICAgIC8vIFJlc2V0IHxwY3wgdG8gY29ycmVjdCBjYWxsZXIu
CisgICAgYmFzZS5wYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihfX2J1aWx0aW5fcmV0
dXJuX2FkZHJlc3MoMCkpOworICB9CisKKyAgfkpuaUphdmFDYWxsQ29udGV4dENoZWNrZWQoKSB7
IGpuaV9nZW5lcmF0b3I6OkNoZWNrRXhjZXB0aW9uKGJhc2UuZW52MSk7IH0KKworICBKbmlKYXZh
Q2FsbENvbnRleHRVbmNoZWNrZWQgYmFzZTsKK307CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEpu
aUphdmFDYWxsQ29udGV4dENoZWNrZWQpID09CisgICAgICAgICAgICAgICAgICBzaXplb2YoSm5p
SmF2YUNhbGxDb250ZXh0VW5jaGVja2VkKSwKKyAgICAgICAgICAgICAgIlN0YWNrIHVud2luZGVy
IGNhbm5vdCB3b3JrIHdpdGggc3RydWN0cyBvZiBkaWZmZXJlbnQgc2l6ZXMuIik7Cit9ICAvLyBu
YW1lc3BhY2Ugam5pX2dlbmVyYXRvcgorCiAjZW5kaWYgIC8vIFNES19BTkRST0lEX1NSQ19KTklf
Sk5JX0dFTkVSQVRPUl9IRUxQRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvY3J5cHRvb3B0aW9u
cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qbmkvcGMvY3J5cHRvb3B0aW9ucy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjM4YjEzZjc4YmRk
NzMzZTk2MmI4NWFmNjk4NzlkMjE0OTFmN2U3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9j
cnlwdG9vcHRpb25zLmNjCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL2NyeXB0b29wdGlvbnMuaCIKKworI2luY2x1
ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF9wZWVyY29ubmVjdGlvbl9qbmkvam5pL0NyeXB0b09w
dGlvbnNfam5pLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIGpuaSB7CisKK2Fi
c2w6Om9wdGlvbmFsPENyeXB0b09wdGlvbnM+IEphdmFUb05hdGl2ZU9wdGlvbmFsQ3J5cHRvT3B0
aW9ucygKKyAgICBKTklFbnYqIGpuaSwKKyAgICBjb25zdCBKYXZhUmVmPGpvYmplY3Q+JiBqX2Ny
eXB0b19vcHRpb25zKSB7CisgIGlmIChqX2NyeXB0b19vcHRpb25zLmlzX251bGwoKSkgeworICAg
IHJldHVybiBhYnNsOjpudWxsb3B0OworICB9CisKKyAgU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmpl
Y3Q+IGpfc3J0cCA9CisgICAgICBKYXZhX0NyeXB0b09wdGlvbnNfZ2V0U3J0cChqbmksIGpfY3J5
cHRvX29wdGlvbnMpOworICBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gal9zZnJhbWUgPQor
ICAgICAgSmF2YV9DcnlwdG9PcHRpb25zX2dldFNGcmFtZShqbmksIGpfY3J5cHRvX29wdGlvbnMp
OworCisgIENyeXB0b09wdGlvbnMgbmF0aXZlX2NyeXB0b19vcHRpb25zOworICBuYXRpdmVfY3J5
cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPQorICAgICAgSmF2YV9T
cnRwX2dldEVuYWJsZUdjbUNyeXB0b1N1aXRlcyhqbmksIGpfc3J0cCk7CisgIG5hdGl2ZV9jcnlw
dG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0KKyAg
ICAgIEphdmFfU3J0cF9nZXRFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKGpuaSwgal9z
cnRwKTsKKyAgbmF0aXZlX2NyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2VuY3J5cHRlZF9ydHBf
aGVhZGVyX2V4dGVuc2lvbnMgPQorICAgICAgSmF2YV9TcnRwX2dldEVuYWJsZUVuY3J5cHRlZFJ0
cEhlYWRlckV4dGVuc2lvbnMoam5pLCBqX3NydHApOworICBuYXRpdmVfY3J5cHRvX29wdGlvbnMu
c2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbiA9CisgICAgICBKYXZhX1NGcmFtZV9nZXRS
ZXF1aXJlRnJhbWVFbmNyeXB0aW9uKGpuaSwgal9zZnJhbWUpOworICByZXR1cm4gYWJzbDo6b3B0
aW9uYWw8Q3J5cHRvT3B0aW9ucz4obmF0aXZlX2NyeXB0b19vcHRpb25zKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIGpuaQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9w
Yy9jcnlwdG9vcHRpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL2NyeXB0b29wdGlvbnMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ODkwMjY0YTU1YzZmMmMzODgwMjc5MThlYmQ5MTJiNzRjMzcyMGU3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
c3JjL2puaS9wYy9jcnlwdG9vcHRpb25zLmgKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2lmbmRlZiBTREtfQU5EUk9JRF9TUkNfSk5JX1BDX0NSWVBUT09QVElPTlNfSF8K
KyNkZWZpbmUgU0RLX0FORFJPSURfU1JDX0pOSV9QQ19DUllQVE9PUFRJT05TX0hfCisKKyNpbmNs
dWRlIDxqbmkuaD4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRl
ICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9uYXRp
dmVfYXBpL2puaS9zY29wZWRfamF2YV9yZWYuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1l
c3BhY2Ugam5pIHsKKworYWJzbDo6b3B0aW9uYWw8Q3J5cHRvT3B0aW9ucz4gSmF2YVRvTmF0aXZl
T3B0aW9uYWxDcnlwdG9PcHRpb25zKAorICAgIEpOSUVudiogam5pLAorICAgIGNvbnN0IEphdmFS
ZWY8am9iamVjdD4mIGpfY3J5cHRvX29wdGlvbnMpOworCit9ICAvLyBuYW1lc3BhY2Ugam5pCit9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gU0RLX0FORFJPSURfU1JDX0pOSV9Q
Q19DUllQVE9PUFRJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL251bGxfdmlkZW8uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMv
am5pL3BjL251bGxfdmlkZW8uY2MKaW5kZXggMGUwYjgwZDQ2MTJmMjVlODc0YjkwZDhlYTVhNzIy
NDAzMTY0Njc0YS4uNTRhNDAxZDYwNWMxOTEyODNhZTdmY2ZmZTQ2NDcyOTQyMDIxMWNjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvc3JjL2puaS9wYy9udWxsX3ZpZGVvLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvbnVsbF92aWRlby5j
YwpAQCAtMzEsNyArMzEsOCBAQCBWaWRlb0RlY29kZXJGYWN0b3J5KiBDcmVhdGVWaWRlb0RlY29k
ZXJGYWN0b3J5KAogdm9pZCogQ3JlYXRlVmlkZW9Tb3VyY2UoSk5JRW52KiBlbnYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgamJvb2xlYW4gaXNfc2NyZWVuY2FzdCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgamJvb2xlYW4gaXNfc2NyZWVuY2FzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGpi
b29sZWFuIGFsaWduX3RpbWVzdGFtcHMpIHsKICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qbmkvcGMvb3duZWRmYWN0b3J5YW5kdGhyZWFkcy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvb3duZWRm
YWN0b3J5YW5kdGhyZWFkcy5jYwppbmRleCA5OTg3ZjI1MjI3NWUzMjdjMmRkYWQ0ZjM4MDQ5ZDBj
ODg5ZTk0OTllLi4yZDYyZWEzMmExMzFjYzVlMTM2YjgyYTE0N2IzMGYwZDc5NzcyYWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9zcmMvam5pL3BjL293bmVkZmFjdG9yeWFuZHRocmVhZHMuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9v
d25lZGZhY3RvcnlhbmR0aHJlYWRzLmNjCkBAIC0yMSw5ICsyMSw5IEBAIFBlZXJDb25uZWN0aW9u
RmFjdG9yeUludGVyZmFjZSogZmFjdG9yeUZyb21KYXZhKGpsb25nIGpfcCkgewogfQogCiBPd25l
ZEZhY3RvcnlBbmRUaHJlYWRzOjpPd25lZEZhY3RvcnlBbmRUaHJlYWRzKAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxUaHJlYWQ+IG5ldHdvcmtfdGhyZWFkLAotICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJl
YWQ+IHdvcmtlcl90aHJlYWQsCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZD4gc2lnbmFsaW5n
X3RocmVhZCwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IG5ldHdvcmtfdGhyZWFk
LAorICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gd29ya2VyX3RocmVhZCwKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHNpZ25hbGluZ190aHJlYWQsCiAgICAgcnRjOjpO
ZXR3b3JrTW9uaXRvckZhY3RvcnkqIG5ldHdvcmtfbW9uaXRvcl9mYWN0b3J5LAogICAgIFBlZXJD
b25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9yeSkKICAgICA6IG5ldHdvcmtfdGhyZWFk
XyhzdGQ6Om1vdmUobmV0d29ya190aHJlYWQpKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvb3duZWRm
YWN0b3J5YW5kdGhyZWFkcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9vd25lZGZhY3RvcnlhbmR0aHJlYWRzLmgKaW5k
ZXggMmVhODU3MDI4MmQ5NTVjYTAwMDYxOGYxMDNjMzA5NzRjNDRjYzllOC4uYmFjZDQyZGZjZDZj
MTdmNzkwY2VhYjVkZmU4NGY5MGIzNDkzMzZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9vd25lZGZh
Y3RvcnlhbmR0aHJlYWRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9vd25lZGZhY3RvcnlhbmR0aHJlYWRzLmgK
QEAgLTE4LDggKzE4LDYgQEAKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKIAotdXNpbmcgcnRjOjpUaHJlYWQ7Ci0K
IG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIGpuaSB7CiAKQEAgLTMzLDE4ICszMSwxOCBA
QCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UqIGZhY3RvcnlGcm9tSmF2YShqbG9uZyBq
X3ApOwogLy8gc2luZ2xlIHRoaW5nIGZvciBKYXZhIHRvIGhvbGQgYW5kIGV2ZW50dWFsbHkgZnJl
ZS4KIGNsYXNzIE93bmVkRmFjdG9yeUFuZFRocmVhZHMgewogIHB1YmxpYzoKLSAgT3duZWRGYWN0
b3J5QW5kVGhyZWFkcyhzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkPiBuZXR3b3JrX3RocmVhZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkPiB3b3JrZXJfdGhy
ZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWQ+IHNp
Z25hbGluZ190aHJlYWQsCisgIE93bmVkRmFjdG9yeUFuZFRocmVhZHMoc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6VGhyZWFkPiBuZXR3b3JrX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHdvcmtlcl90aHJlYWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBzaWduYWxpbmdfdGhyZWFk
LAogICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29ya01vbml0b3JGYWN0b3J5KiBu
ZXR3b3JrX21vbml0b3JfZmFjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICBQZWVyQ29u
bmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UqIGZhY3RvcnkpOwogCiAgIH5Pd25lZEZhY3RvcnlBbmRU
aHJlYWRzKCk7CiAKICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBmYWN0b3J5KCkg
eyByZXR1cm4gZmFjdG9yeV87IH0KLSAgVGhyZWFkKiBuZXR3b3JrX3RocmVhZCgpIHsgcmV0dXJu
IG5ldHdvcmtfdGhyZWFkXy5nZXQoKTsgfQotICBUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQoKSB7
IHJldHVybiBzaWduYWxpbmdfdGhyZWFkXy5nZXQoKTsgfQotICBUaHJlYWQqIHdvcmtlcl90aHJl
YWQoKSB7IHJldHVybiB3b3JrZXJfdGhyZWFkXy5nZXQoKTsgfQorICBydGM6OlRocmVhZCogbmV0
d29ya190aHJlYWQoKSB7IHJldHVybiBuZXR3b3JrX3RocmVhZF8uZ2V0KCk7IH0KKyAgcnRjOjpU
aHJlYWQqIHNpZ25hbGluZ190aHJlYWQoKSB7IHJldHVybiBzaWduYWxpbmdfdGhyZWFkXy5nZXQo
KTsgfQorICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCgpIHsgcmV0dXJuIHdvcmtlcl90aHJl
YWRfLmdldCgpOyB9CiAgIHJ0Yzo6TmV0d29ya01vbml0b3JGYWN0b3J5KiBuZXR3b3JrX21vbml0
b3JfZmFjdG9yeSgpIHsKICAgICByZXR1cm4gbmV0d29ya19tb25pdG9yX2ZhY3RvcnlfOwogICB9
CkBAIC01Miw5ICs1MCw5IEBAIGNsYXNzIE93bmVkRmFjdG9yeUFuZFRocmVhZHMgewogICB2b2lk
IEludm9rZUphdmFDYWxsYmFja3NPbkZhY3RvcnlUaHJlYWRzKCk7CiAKICBwcml2YXRlOgotICBj
b25zdCBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkPiBuZXR3b3JrX3RocmVhZF87Ci0gIGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxUaHJlYWQ+IHdvcmtlcl90aHJlYWRfOwotICBjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8VGhyZWFkPiBzaWduYWxpbmdfdGhyZWFkXzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6VGhyZWFkPiBuZXR3b3JrX3RocmVhZF87CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OlRocmVhZD4gd29ya2VyX3RocmVhZF87CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxydGM6
OlRocmVhZD4gc2lnbmFsaW5nX3RocmVhZF87CiAgIHJ0Yzo6TmV0d29ya01vbml0b3JGYWN0b3J5
KiBuZXR3b3JrX21vbml0b3JfZmFjdG9yeV87CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVy
ZmFjZSogZmFjdG9yeV87ICAvLyBDb25zdCBhZnRlciBjdG9yIGV4Y2VwdCBkdG9yLgogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL3NyYy9qbmkvcGMvcGVlcmNvbm5lY3Rpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJjb25uZWN0
aW9uLmNjCmluZGV4IDc5ZGE3OTdlMzg4NzdkOGJmZWU0MGIzZDI4OWU4ZTU3ODIwNjI5ZWYuLjA1
MTVjZTI2NGU3MzlkN2NmNTMxNWRlYzk5MDVmOTE3ODVlMDFmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
cGMvcGVlcmNvbm5lY3Rpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbi5jYwpAQCAt
NDMsMTAgKzQzLDEyIEBACiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3BlZXJjb25u
ZWN0aW9uX2puaS9qbmkvUGVlckNvbm5lY3Rpb25fam5pLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJv
aWQvbmF0aXZlX2FwaS9qbmkvamF2YV90eXBlcy5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL3Ny
Yy9qbmkvam5pX2hlbHBlcnMuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL2Ny
eXB0b29wdGlvbnMuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL2RhdGFjaGFu
bmVsLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9wYy9pY2VjYW5kaWRhdGUuaCIK
ICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL21lZGlhY29uc3RyYWludHMuaCIKICNp
bmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL21lZGlhc3RyZWFtdHJhY2suaCIKKyNpbmNs
dWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL3J0Y2NlcnRpZmljYXRlLmgiCiAjaW5jbHVkZSAi
c2RrL2FuZHJvaWQvc3JjL2puaS9wYy9ydGNzdGF0c2NvbGxlY3RvcmNhbGxiYWNrd3JhcHBlci5o
IgogI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRwc2VuZGVyLmgiCiAjaW5jbHVk
ZSAic2RrL2FuZHJvaWQvc3JjL2puaS9wYy9zZHBvYnNlcnZlci5oIgpAQCAtMTI5LDYgKzEzMSw4
IEBAIHZvaWQgSmF2YVRvTmF0aXZlUlRDQ29uZmlndXJhdGlvbigKICAgICAgIEphdmFfUlRDQ29u
ZmlndXJhdGlvbl9nZXRCdW5kbGVQb2xpY3koam5pLCBqX3J0Y19jb25maWcpOwogICBTY29wZWRK
YXZhTG9jYWxSZWY8am9iamVjdD4gal9ydGNwX211eF9wb2xpY3kgPQogICAgICAgSmF2YV9SVEND
b25maWd1cmF0aW9uX2dldFJ0Y3BNdXhQb2xpY3koam5pLCBqX3J0Y19jb25maWcpOworICBTY29w
ZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gal9ydGNfY2VydGlmaWNhdGUgPQorICAgICAgSmF2YV9S
VENDb25maWd1cmF0aW9uX2dldENlcnRpZmljYXRlKGpuaSwgal9ydGNfY29uZmlnKTsKICAgU2Nv
cGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IGpfdGNwX2NhbmRpZGF0ZV9wb2xpY3kgPQogICAgICAg
SmF2YV9SVENDb25maWd1cmF0aW9uX2dldFRjcENhbmRpZGF0ZVBvbGljeShqbmksIGpfcnRjX2Nv
bmZpZyk7CiAgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX2NhbmRpZGF0ZV9uZXR3b3Jr
X3BvbGljeSA9CkBAIC0xNDMsMTEgKzE0NywyMCBAQCB2b2lkIEphdmFUb05hdGl2ZVJUQ0NvbmZp
Z3VyYXRpb24oCiAgICAgICBKYXZhX1JUQ0NvbmZpZ3VyYXRpb25fZ2V0TmV0d29ya1ByZWZlcmVu
Y2Uoam5pLCBqX3J0Y19jb25maWcpOwogICBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gal9z
ZHBfc2VtYW50aWNzID0KICAgICAgIEphdmFfUlRDQ29uZmlndXJhdGlvbl9nZXRTZHBTZW1hbnRp
Y3Moam5pLCBqX3J0Y19jb25maWcpOworICBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gal9j
cnlwdG9fb3B0aW9ucyA9CisgICAgICBKYXZhX1JUQ0NvbmZpZ3VyYXRpb25fZ2V0Q3J5cHRvT3B0
aW9ucyhqbmksIGpfcnRjX2NvbmZpZyk7CiAKICAgcnRjX2NvbmZpZy0+dHlwZSA9IEphdmFUb05h
dGl2ZUljZVRyYW5zcG9ydHNUeXBlKGpuaSwgal9pY2VfdHJhbnNwb3J0c190eXBlKTsKICAgcnRj
X2NvbmZpZy0+YnVuZGxlX3BvbGljeSA9IEphdmFUb05hdGl2ZUJ1bmRsZVBvbGljeShqbmksIGpf
YnVuZGxlX3BvbGljeSk7CiAgIHJ0Y19jb25maWctPnJ0Y3BfbXV4X3BvbGljeSA9CiAgICAgICBK
YXZhVG9OYXRpdmVSdGNwTXV4UG9saWN5KGpuaSwgal9ydGNwX211eF9wb2xpY3kpOworICBpZiAo
IWpfcnRjX2NlcnRpZmljYXRlLmlzX251bGwoKSkgeworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxy
dGM6OlJUQ0NlcnRpZmljYXRlPiBjZXJ0aWZpY2F0ZSA9CisgICAgICAgIHJ0Yzo6UlRDQ2VydGlm
aWNhdGU6OkZyb21QRU0oCisgICAgICAgICAgICBKYXZhVG9OYXRpdmVSVENDZXJ0aWZpY2F0ZVBF
TShqbmksIGpfcnRjX2NlcnRpZmljYXRlKSk7CisgICAgUlRDX0NIRUNLKGNlcnRpZmljYXRlICE9
IG51bGxwdHIpIDw8ICJzdXBwbGllZCBjZXJ0aWZpY2F0ZSBpcyBtYWxmb3JtZWQuIjsKKyAgICBy
dGNfY29uZmlnLT5jZXJ0aWZpY2F0ZXMucHVzaF9iYWNrKGNlcnRpZmljYXRlKTsKKyAgfQogICBy
dGNfY29uZmlnLT50Y3BfY2FuZGlkYXRlX3BvbGljeSA9CiAgICAgICBKYXZhVG9OYXRpdmVUY3BD
YW5kaWRhdGVQb2xpY3koam5pLCBqX3RjcF9jYW5kaWRhdGVfcG9saWN5KTsKICAgcnRjX2NvbmZp
Zy0+Y2FuZGlkYXRlX25ldHdvcmtfcG9saWN5ID0KQEAgLTIzNCw2ICsyNDcsMTMgQEAgdm9pZCBK
YXZhVG9OYXRpdmVSVENDb25maWd1cmF0aW9uKAogICBydGNfY29uZmlnLT5zZHBfc2VtYW50aWNz
ID0gSmF2YVRvTmF0aXZlU2RwU2VtYW50aWNzKGpuaSwgal9zZHBfc2VtYW50aWNzKTsKICAgcnRj
X2NvbmZpZy0+YWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zID0KICAgICAgIEphdmFfUlRDQ29uZmln
dXJhdGlvbl9nZXRBY3RpdmVSZXNldFNydHBQYXJhbXMoam5pLCBqX3J0Y19jb25maWcpOworICBy
dGNfY29uZmlnLT51c2VfbWVkaWFfdHJhbnNwb3J0ID0KKyAgICAgIEphdmFfUlRDQ29uZmlndXJh
dGlvbl9nZXRVc2VNZWRpYVRyYW5zcG9ydChqbmksIGpfcnRjX2NvbmZpZyk7CisgIHJ0Y19jb25m
aWctPnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPQorICAgICAgSmF2YV9S
VENDb25maWd1cmF0aW9uX2dldFVzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzKGpuaSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqX3J0Y19jb25maWcpOworICBydGNfY29uZmlnLT5jcnlwdG9fb3B0aW9ucyA9Cisg
ICAgICBKYXZhVG9OYXRpdmVPcHRpb25hbENyeXB0b09wdGlvbnMoam5pLCBqX2NyeXB0b19vcHRp
b25zKTsKIH0KIAogcnRjOjpLZXlUeXBlIEdldFJ0Y0NvbmZpZ0tleVR5cGUoSk5JRW52KiBlbnYs
CkBAIC0yNzksNiArMjk5LDE0IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25PYnNlcnZlckpuaTo6T25J
Y2VDb25uZWN0aW9uQ2hhbmdlKAogICAgICAgSmF2YV9JY2VDb25uZWN0aW9uU3RhdGVfZnJvbU5h
dGl2ZUluZGV4KGVudiwgbmV3X3N0YXRlKSk7CiB9CiAKK3ZvaWQgUGVlckNvbm5lY3Rpb25PYnNl
cnZlckpuaTo6T25Db25uZWN0aW9uQ2hhbmdlKAorICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpQZWVyQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0ZSkgeworICBKTklFbnYqIGVudiA9IEF0dGFj
aEN1cnJlbnRUaHJlYWRJZk5lZWRlZCgpOworICBKYXZhX09ic2VydmVyX29uQ29ubmVjdGlvbkNo
YW5nZShlbnYsIGpfb2JzZXJ2ZXJfZ2xvYmFsXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSmF2YV9QZWVyQ29ubmVjdGlvblN0YXRlX2Zyb21OYXRpdmVJbmRleCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudiwgc3RhdGljX2Nhc3Q8aW50Pihu
ZXdfc3RhdGUpKSk7Cit9CisKIHZvaWQgUGVlckNvbm5lY3Rpb25PYnNlcnZlckpuaTo6T25JY2VD
b25uZWN0aW9uUmVjZWl2aW5nQ2hhbmdlKGJvb2wgcmVjZWl2aW5nKSB7CiAgIEpOSUVudiogZW52
ID0gQXR0YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7CiAgIEphdmFfT2JzZXJ2ZXJfb25JY2VD
b25uZWN0aW9uUmVjZWl2aW5nQ2hhbmdlKGVudiwgal9vYnNlcnZlcl9nbG9iYWxfLApAQCAtNDI5
LDYgKzQ1NywxNiBAQCBzdGF0aWMgU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IEpOSV9QZWVy
Q29ubmVjdGlvbl9HZXRSZW1vdGVEZXNjcmlwdGlvbigKICAgcmV0dXJuIHNkcCA/IE5hdGl2ZVRv
SmF2YVNlc3Npb25EZXNjcmlwdGlvbihqbmksIHNkcCkgOiBudWxscHRyOwogfQogCitzdGF0aWMg
U2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IEpOSV9QZWVyQ29ubmVjdGlvbl9HZXRDZXJ0aWZp
Y2F0ZSgKKyAgICBKTklFbnYqIGpuaSwKKyAgICBjb25zdCBKYXZhUGFyYW1SZWY8am9iamVjdD4m
IGpfcGMpIHsKKyAgY29uc3QgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRp
b24gcnRjX2NvbmZpZyA9CisgICAgICBFeHRyYWN0TmF0aXZlUEMoam5pLCBqX3BjKS0+R2V0Q29u
ZmlndXJhdGlvbigpOworICBydGM6OnNjb3BlZF9yZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4g
Y2VydGlmaWNhdGUgPQorICAgICAgcnRjX2NvbmZpZy5jZXJ0aWZpY2F0ZXNbMF07CisgIHJldHVy
biBOYXRpdmVUb0phdmFSVENDZXJ0aWZpY2F0ZVBFTShqbmksIGNlcnRpZmljYXRlLT5Ub1BFTSgp
KTsKK30KKwogc3RhdGljIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBKTklfUGVlckNvbm5l
Y3Rpb25fQ3JlYXRlRGF0YUNoYW5uZWwoCiAgICAgSk5JRW52KiBqbmksCiAgICAgY29uc3QgSmF2
YVBhcmFtUmVmPGpvYmplY3Q+JiBqX3BjLApAQCAtNzIyLDYgKzc2MCwxNCBAQCBzdGF0aWMgU2Nv
cGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IEpOSV9QZWVyQ29ubmVjdGlvbl9JY2VDb25uZWN0aW9u
U3RhdGUoCiAgICAgICBlbnYsIEV4dHJhY3ROYXRpdmVQQyhlbnYsIGpfcGMpLT5pY2VfY29ubmVj
dGlvbl9zdGF0ZSgpKTsKIH0KIAorc3RhdGljIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBK
TklfUGVlckNvbm5lY3Rpb25fQ29ubmVjdGlvblN0YXRlKAorICAgIEpOSUVudiogZW52LAorICAg
IGNvbnN0IEphdmFQYXJhbVJlZjxqb2JqZWN0PiYgal9wYykgeworICByZXR1cm4gSmF2YV9QZWVy
Q29ubmVjdGlvblN0YXRlX2Zyb21OYXRpdmVJbmRleCgKKyAgICAgIGVudiwKKyAgICAgIHN0YXRp
Y19jYXN0PGludD4oRXh0cmFjdE5hdGl2ZVBDKGVudiwgal9wYyktPnBlZXJfY29ubmVjdGlvbl9z
dGF0ZSgpKSk7Cit9CisKIHN0YXRpYyBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gSk5JX1Bl
ZXJDb25uZWN0aW9uX0ljZUdhdGhlcmluZ1N0YXRlKAogICAgIEpOSUVudiogZW52LAogICAgIGNv
bnN0IEphdmFQYXJhbVJlZjxqb2JqZWN0PiYgal9wYykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9w
ZWVyY29ubmVjdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbi5oCmluZGV4IGYyMDE2Njcy
N2VhMGI0OTU0YjA2YTEyMWVjY2M5M2NjNmNhYzc1YzAuLmE5ZDdiMzljM2Q0MjE3Y2UyZWM4MjU3
YTEzOTdmYjY4NzIzZTI5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvcGVlcmNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9zcmMvam5pL3BjL3BlZXJjb25uZWN0aW9uLmgKQEAgLTUxLDYgKzUxLDggQEAgY2xhc3MgUGVl
ckNvbm5lY3Rpb25PYnNlcnZlckpuaSA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbk9ic2VydmVyIHsK
ICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpTaWduYWxpbmdTdGF0ZSBuZXdfc3RhdGUp
IG92ZXJyaWRlOwogICB2b2lkIE9uSWNlQ29ubmVjdGlvbkNoYW5nZSgKICAgICAgIFBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSBvdmVycmlkZTsK
KyAgdm9pZCBPbkNvbm5lY3Rpb25DaGFuZ2UoCisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpIG92ZXJyaWRlOwogICB2b2lkIE9uSWNl
Q29ubmVjdGlvblJlY2VpdmluZ0NoYW5nZShib29sIHJlY2VpdmluZykgb3ZlcnJpZGU7CiAgIHZv
aWQgT25JY2VHYXRoZXJpbmdDaGFuZ2UoCiAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
SWNlR2F0aGVyaW5nU3RhdGUgbmV3X3N0YXRlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
cGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbmZhY3Rv
cnkuY2MKaW5kZXggM2RlNzk1NTVhNjNjMWRkODA1Y2FlMTM1MzM4ZGI0YWFlMzhlY2M5OS4uYzJi
OGI5YzVkN2RmYTdiZmUyZWI4NDE2YThlMTIyZjQwMTY2NzI4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9w
Yy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbmZh
Y3RvcnkuY2MKQEAgLTUwLDEwICs1MCw2IEBAIEphdmFUb05hdGl2ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeU9wdGlvbnMoSk5JRW52KiBqbmksCiAgIGJvb2wgZGlzYWJsZV9lbmNyeXB0aW9uID0gSmF2
YV9PcHRpb25zX2dldERpc2FibGVFbmNyeXB0aW9uKGpuaSwgb3B0aW9ucyk7CiAgIGJvb2wgZGlz
YWJsZV9uZXR3b3JrX21vbml0b3IgPQogICAgICAgSmF2YV9PcHRpb25zX2dldERpc2FibGVOZXR3
b3JrTW9uaXRvcihqbmksIG9wdGlvbnMpOwotICBib29sIGVuYWJsZV9hZXMxMjhfc2hhMV8zMl9j
cnlwdG9fY2lwaGVyID0KLSAgICAgIEphdmFfT3B0aW9uc19nZXRFbmFibGVBZXMxMjhTaGExXzMy
Q3J5cHRvQ2lwaGVyKGpuaSwgb3B0aW9ucyk7Ci0gIGJvb2wgZW5hYmxlX2djbV9jcnlwdG9fc3Vp
dGVzID0KLSAgICAgIEphdmFfT3B0aW9uc19nZXRFbmFibGVHY21DcnlwdG9TdWl0ZXMoam5pLCBv
cHRpb25zKTsKIAogICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U6Ok9wdGlvbnMgbmF0
aXZlX29wdGlvbnM7CiAKQEAgLTYzLDEwICs1OSw2IEBAIEphdmFUb05hdGl2ZVBlZXJDb25uZWN0
aW9uRmFjdG9yeU9wdGlvbnMoSk5JRW52KiBqbmksCiAgIG5hdGl2ZV9vcHRpb25zLmRpc2FibGVf
ZW5jcnlwdGlvbiA9IGRpc2FibGVfZW5jcnlwdGlvbjsKICAgbmF0aXZlX29wdGlvbnMuZGlzYWJs
ZV9uZXR3b3JrX21vbml0b3IgPSBkaXNhYmxlX25ldHdvcmtfbW9uaXRvcjsKIAotICBuYXRpdmVf
b3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhl
ciA9Ci0gICAgICBlbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlcjsKLSAgbmF0aXZl
X29wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0KLSAgICAg
IGVuYWJsZV9nY21fY3J5cHRvX3N1aXRlczsKICAgcmV0dXJuIG5hdGl2ZV9vcHRpb25zOwogfQog
CkBAIC0xOTksMTUgKzE5MSwyMSBAQCBzdGF0aWMgdm9pZCBKTklfUGVlckNvbm5lY3Rpb25GYWN0
b3J5X1NodXRkb3duSW50ZXJuYWxUcmFjZXIoCiAgIHJ0Yzo6dHJhY2luZzo6U2h1dGRvd25JbnRl
cm5hbFRyYWNlcigpOwogfQogCisvLyBGb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgb3B0aW9uYWw6
CisvLyB8YXVkaW9fZGV2aWNlX21vZHVsZXwsIHxqZW5jb2Rlcl9mYWN0b3J5fCwgfGpkZWNvZGVy
X2ZhY3Rvcnl8LAorLy8gfGF1ZGlvX3Byb2Nlc3NvcnwsIHxtZWRpYV90cmFuc3BvcnRfZmFjdG9y
eXwsIHxmZWNfY29udHJvbGxlcl9mYWN0b3J5fC4KIGpsb25nIENyZWF0ZVBlZXJDb25uZWN0aW9u
RmFjdG9yeUZvckphdmEoCiAgICAgSk5JRW52KiBqbmksCiAgICAgY29uc3QgSmF2YVBhcmFtUmVm
PGpvYmplY3Q+JiBqY29udGV4dCwKICAgICBjb25zdCBKYXZhUGFyYW1SZWY8am9iamVjdD4mIGpv
cHRpb25zLAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RldmljZU1vZHVsZT4gYXVkaW9f
ZGV2aWNlX21vZHVsZSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9y
eT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0Rl
Y29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCiAgICAgY29uc3QgSmF2YVBhcmFt
UmVmPGpvYmplY3Q+JiBqZW5jb2Rlcl9mYWN0b3J5LAogICAgIGNvbnN0IEphdmFQYXJhbVJlZjxq
b2JqZWN0PiYgamRlY29kZXJfZmFjdG9yeSwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Q
cm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzb3IsCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRy
b2xsZXJGYWN0b3J5SW50ZXJmYWNlPiBmZWNfY29udHJvbGxlcl9mYWN0b3J5KSB7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlPiBmZWNfY29udHJvbGxl
cl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IG1l
ZGlhX3RyYW5zcG9ydF9mYWN0b3J5KSB7CiAgIC8vIHRhbGsvIGFzc3VtZXMgcHJldHR5IHdpZGVs
eSB0aGF0IHRoZSBjdXJyZW50IFRocmVhZCBpcyBUaHJlYWRNYW5hZ2VyJ2QsIGJ1dAogICAvLyBU
aHJlYWRNYW5hZ2VyIG9ubHkgV3JhcEN1cnJlbnRUaHJlYWQoKXMgdGhlIHRocmVhZCB3aGVyZSBp
dCBpcyBmaXJzdAogICAvLyBjcmVhdGVkLiAgU2luY2UgdGhlIHNlbWFudGljcyBhcm91bmQgd2hl
biBhdXRvLXdyYXBwaW5nIGhhcHBlbnMgaW4KQEAgLTIyOSw4ICsyMjcsNiBAQCBqbG9uZyBDcmVh
dGVQZWVyQ29ubmVjdGlvbkZhY3RvcnlGb3JKYXZhKAogICBSVENfQ0hFQ0soc2lnbmFsaW5nX3Ro
cmVhZC0+U3RhcnQoKSkgPDwgIkZhaWxlZCB0byBzdGFydCB0aHJlYWQiOwogCiAgIHJ0Yzo6TmV0
d29ya01vbml0b3JGYWN0b3J5KiBuZXR3b3JrX21vbml0b3JfZmFjdG9yeSA9IG51bGxwdHI7Ci0g
IGF1dG8gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5ID0gQ3JlYXRlQXVkaW9FbmNvZGVyRmFjdG9yeSgp
OwotICBhdXRvIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSA9IENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rv
cnkoKTsKIAogICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U6Ok9wdGlvbnMgb3B0aW9u
czsKICAgYm9vbCBoYXNfb3B0aW9ucyA9ICFqb3B0aW9ucy5pc19udWxsKCk7CkBAIC0yNTcsMTIg
KzI1MywxOSBAQCBqbG9uZyBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnlGb3JKYXZhKAogICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2RlckZhY3Rvcnk+KAogICAgICAgICAgIENyZWF0
ZVZpZGVvRGVjb2RlckZhY3Rvcnkoam5pLCBqZGVjb2Rlcl9mYWN0b3J5KSksCiAgICAgICBhdWRp
b19taXhlciwgYXVkaW9fcHJvY2Vzc29yKSk7CisgIFBlZXJDb25uZWN0aW9uRmFjdG9yeURlcGVu
ZGVuY2llcyBkZXBlbmRlbmNpZXM7CisgIGRlcGVuZGVuY2llcy5uZXR3b3JrX3RocmVhZCA9IG5l
dHdvcmtfdGhyZWFkLmdldCgpOworICBkZXBlbmRlbmNpZXMud29ya2VyX3RocmVhZCA9IHdvcmtl
cl90aHJlYWQuZ2V0KCk7CisgIGRlcGVuZGVuY2llcy5zaWduYWxpbmdfdGhyZWFkID0gc2lnbmFs
aW5nX3RocmVhZC5nZXQoKTsKKyAgZGVwZW5kZW5jaWVzLm1lZGlhX2VuZ2luZSA9IHN0ZDo6bW92
ZShtZWRpYV9lbmdpbmUpOworICBkZXBlbmRlbmNpZXMuY2FsbF9mYWN0b3J5ID0gc3RkOjptb3Zl
KGNhbGxfZmFjdG9yeSk7CisgIGRlcGVuZGVuY2llcy5ldmVudF9sb2dfZmFjdG9yeSA9IHN0ZDo6
bW92ZShydGNfZXZlbnRfbG9nX2ZhY3RvcnkpOworICBkZXBlbmRlbmNpZXMuZmVjX2NvbnRyb2xs
ZXJfZmFjdG9yeSA9IHN0ZDo6bW92ZShmZWNfY29udHJvbGxlcl9mYWN0b3J5KTsKKyAgZGVwZW5k
ZW5jaWVzLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gc3RkOjptb3ZlKG1lZGlhX3RyYW5zcG9y
dF9mYWN0b3J5KTsKIAogICBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlPiBmYWN0b3J5KAotICAgICAgQ3JlYXRlTW9kdWxhclBlZXJDb25uZWN0aW9uRmFj
dG9yeSgKLSAgICAgICAgICBuZXR3b3JrX3RocmVhZC5nZXQoKSwgd29ya2VyX3RocmVhZC5nZXQo
KSwgc2lnbmFsaW5nX3RocmVhZC5nZXQoKSwKLSAgICAgICAgICBzdGQ6Om1vdmUobWVkaWFfZW5n
aW5lKSwgc3RkOjptb3ZlKGNhbGxfZmFjdG9yeSksCi0gICAgICAgICAgc3RkOjptb3ZlKHJ0Y19l
dmVudF9sb2dfZmFjdG9yeSksIHN0ZDo6bW92ZShmZWNfY29udHJvbGxlcl9mYWN0b3J5KSkpOwor
ICAgICAgQ3JlYXRlTW9kdWxhclBlZXJDb25uZWN0aW9uRmFjdG9yeShzdGQ6Om1vdmUoZGVwZW5k
ZW5jaWVzKSkpOworCiAgIFJUQ19DSEVDSyhmYWN0b3J5KSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSB0
aGUgcGVlciBjb25uZWN0aW9uIGZhY3Rvcnk7ICIKICAgICAgICAgICAgICAgICAgICAgIDw8ICJX
ZWJSVEMvbGliamluZ2xlIGluaXQgbGlrZWx5IGZhaWxlZCBvbiB0aGlzIGRldmljZSI7CiAgIC8v
IFRPRE8oaG9uZ2hhaXopOiBNYXliZSBwdXQgdGhlIG9wdGlvbnMgYXMgdGhlIGFyZ3VtZW50IG9m
CkBAIC0yODMsMjEgKzI4NiwzOSBAQCBzdGF0aWMgamxvbmcgSk5JX1BlZXJDb25uZWN0aW9uRmFj
dG9yeV9DcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCiAgICAgY29uc3QgSmF2YVBhcmFtUmVm
PGpvYmplY3Q+JiBqY29udGV4dCwKICAgICBjb25zdCBKYXZhUGFyYW1SZWY8am9iamVjdD4mIGpv
cHRpb25zLAogICAgIGpsb25nIG5hdGl2ZV9hdWRpb19kZXZpY2VfbW9kdWxlLAorICAgIGpsb25n
IG5hdGl2ZV9hdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgamxvbmcgbmF0aXZlX2F1ZGlvX2Rl
Y29kZXJfZmFjdG9yeSwKICAgICBjb25zdCBKYXZhUGFyYW1SZWY8am9iamVjdD4mIGplbmNvZGVy
X2ZhY3RvcnksCiAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpvYmplY3Q+JiBqZGVjb2Rlcl9mYWN0
b3J5LAogICAgIGpsb25nIG5hdGl2ZV9hdWRpb19wcm9jZXNzb3IsCi0gICAgamxvbmcgbmF0aXZl
X2ZlY19jb250cm9sbGVyX2ZhY3RvcnkpIHsKKyAgICBqbG9uZyBuYXRpdmVfZmVjX2NvbnRyb2xs
ZXJfZmFjdG9yeSwKKyAgICBqbG9uZyBuYXRpdmVfbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpIHsK
ICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc29yID0K
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9Qcm9jZXNzaW5nKj4obmF0aXZlX2F1ZGlvX3By
b2Nlc3Nvcik7CisgIEF1ZGlvRW5jb2RlckZhY3RvcnkqIGF1ZGlvX2VuY29kZXJfZmFjdG9yeV9w
dHIgPQorICAgICAgcmVpbnRlcnByZXRfY2FzdDxBdWRpb0VuY29kZXJGYWN0b3J5Kj4obmF0aXZl
X2F1ZGlvX2VuY29kZXJfZmFjdG9yeSk7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29k
ZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnkoCisgICAgICBhdWRpb19lbmNvZGVyX2Zh
Y3RvcnlfcHRyKTsKKyAgLy8gUmVsZWFzZSB0aGUgY2FsbGVyJ3MgcmVmZXJlbmNlIGNvdW50Lgor
ICBhdWRpb19lbmNvZGVyX2ZhY3RvcnktPlJlbGVhc2UoKTsKKyAgQXVkaW9EZWNvZGVyRmFjdG9y
eSogYXVkaW9fZGVjb2Rlcl9mYWN0b3J5X3B0ciA9CisgICAgICByZWludGVycHJldF9jYXN0PEF1
ZGlvRGVjb2RlckZhY3RvcnkqPihuYXRpdmVfYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KTsKKyAgcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9y
eSgKKyAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeV9wdHIpOworICAvLyBSZWxlYXNlIHRoZSBj
YWxsZXIncyByZWZlcmVuY2UgY291bnQuCisgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeS0+UmVsZWFz
ZSgpOwogICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+IGZl
Y19jb250cm9sbGVyX2ZhY3RvcnkoCiAgICAgICByZWludGVycHJldF9jYXN0PEZlY0NvbnRyb2xs
ZXJGYWN0b3J5SW50ZXJmYWNlKj4oCiAgICAgICAgICAgbmF0aXZlX2ZlY19jb250cm9sbGVyX2Zh
Y3RvcnkpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gbWVkaWFf
dHJhbnNwb3J0X2ZhY3RvcnkoCisgICAgICByZWludGVycHJldF9jYXN0PE1lZGlhVHJhbnNwb3J0
RmFjdG9yeSo+KG5hdGl2ZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSkpOwogICByZXR1cm4gQ3Jl
YXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5Rm9ySmF2YSgKICAgICAgIGpuaSwgamNvbnRleHQsIGpv
cHRpb25zLAogICAgICAgcmVpbnRlcnByZXRfY2FzdDxBdWRpb0RldmljZU1vZHVsZSo+KG5hdGl2
ZV9hdWRpb19kZXZpY2VfbW9kdWxlKSwKLSAgICAgIGplbmNvZGVyX2ZhY3RvcnksIGpkZWNvZGVy
X2ZhY3RvcnksCisgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFj
dG9yeSwgamVuY29kZXJfZmFjdG9yeSwKKyAgICAgIGpkZWNvZGVyX2ZhY3RvcnksCiAgICAgICBh
dWRpb19wcm9jZXNzb3IgPyBhdWRpb19wcm9jZXNzb3IgOiBDcmVhdGVBdWRpb1Byb2Nlc3Npbmco
KSwKLSAgICAgIHN0ZDo6bW92ZShmZWNfY29udHJvbGxlcl9mYWN0b3J5KSk7CisgICAgICBzdGQ6
Om1vdmUoZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSksIHN0ZDo6bW92ZShtZWRpYV90cmFuc3BvcnRf
ZmFjdG9yeSkpOwogfQogCiBzdGF0aWMgdm9pZCBKTklfUGVlckNvbm5lY3Rpb25GYWN0b3J5X0Zy
ZWVGYWN0b3J5KEpOSUVudiosCkBAIC0zOTYsMTggKzQxNywyMCBAQCBzdGF0aWMgamxvbmcgSk5J
X1BlZXJDb25uZWN0aW9uRmFjdG9yeV9DcmVhdGVQZWVyQ29ubmVjdGlvbigKICAgICAgIFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uVHlwZTo6a0FnZ3Jlc3NpdmUpOwog
ICBKYXZhVG9OYXRpdmVSVENDb25maWd1cmF0aW9uKGpuaSwgal9ydGNfY29uZmlnLCAmcnRjX2Nv
bmZpZyk7CiAKLSAgLy8gR2VuZXJhdGUgbm9uLWRlZmF1bHQgY2VydGlmaWNhdGUuCi0gIHJ0Yzo6
S2V5VHlwZSBrZXlfdHlwZSA9IEdldFJ0Y0NvbmZpZ0tleVR5cGUoam5pLCBqX3J0Y19jb25maWcp
OwotICBpZiAoa2V5X3R5cGUgIT0gcnRjOjpLVF9ERUZBVUxUKSB7Ci0gICAgcnRjOjpzY29wZWRf
cmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRlID0KLSAgICAgICAgcnRjOjpS
VENDZXJ0aWZpY2F0ZUdlbmVyYXRvcjo6R2VuZXJhdGVDZXJ0aWZpY2F0ZSgKLSAgICAgICAgICAg
IHJ0Yzo6S2V5UGFyYW1zKGtleV90eXBlKSwgYWJzbDo6bnVsbG9wdCk7Ci0gICAgaWYgKCFjZXJ0
aWZpY2F0ZSkgewotICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBnZW5lcmF0
ZSBjZXJ0aWZpY2F0ZS4gS2V5VHlwZTogIgotICAgICAgICAgICAgICAgICAgICAgICAgPDwga2V5
X3R5cGU7Ci0gICAgICByZXR1cm4gMDsKKyAgaWYgKHJ0Y19jb25maWcuY2VydGlmaWNhdGVzLmVt
cHR5KCkpIHsKKyAgICAvLyBHZW5lcmF0ZSBub24tZGVmYXVsdCBjZXJ0aWZpY2F0ZS4KKyAgICBy
dGM6OktleVR5cGUga2V5X3R5cGUgPSBHZXRSdGNDb25maWdLZXlUeXBlKGpuaSwgal9ydGNfY29u
ZmlnKTsKKyAgICBpZiAoa2V5X3R5cGUgIT0gcnRjOjpLVF9ERUZBVUxUKSB7CisgICAgICBydGM6
OnNjb3BlZF9yZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGUgPQorICAgICAg
ICAgIHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I6OkdlbmVyYXRlQ2VydGlmaWNhdGUoCisg
ICAgICAgICAgICAgIHJ0Yzo6S2V5UGFyYW1zKGtleV90eXBlKSwgYWJzbDo6bnVsbG9wdCk7Cisg
ICAgICBpZiAoIWNlcnRpZmljYXRlKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJG
YWlsZWQgdG8gZ2VuZXJhdGUgY2VydGlmaWNhdGUuIEtleVR5cGU6ICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwga2V5X3R5cGU7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAg
ICAgcnRjX2NvbmZpZy5jZXJ0aWZpY2F0ZXMucHVzaF9iYWNrKGNlcnRpZmljYXRlKTsKICAgICB9
Ci0gICAgcnRjX2NvbmZpZy5jZXJ0aWZpY2F0ZXMucHVzaF9iYWNrKGNlcnRpZmljYXRlKTsKICAg
fQogCiAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYUNvbnN0cmFpbnRzSW50ZXJmYWNlPiBjb25zdHJh
aW50czsKQEAgLTQzNywxMiArNDYwLDEzIEBAIHN0YXRpYyBqbG9uZyBKTklfUGVlckNvbm5lY3Rp
b25GYWN0b3J5X0NyZWF0ZVZpZGVvU291cmNlKAogICAgIEpOSUVudiogam5pLAogICAgIGNvbnN0
IEphdmFQYXJhbVJlZjxqY2xhc3M+JiwKICAgICBqbG9uZyBuYXRpdmVfZmFjdG9yeSwKLSAgICBq
Ym9vbGVhbiBpc19zY3JlZW5jYXN0KSB7CisgICAgamJvb2xlYW4gaXNfc2NyZWVuY2FzdCwKKyAg
ICBqYm9vbGVhbiBhbGlnbl90aW1lc3RhbXBzKSB7CiAgIE93bmVkRmFjdG9yeUFuZFRocmVhZHMq
IGZhY3RvcnkgPQogICAgICAgcmVpbnRlcnByZXRfY2FzdDxPd25lZEZhY3RvcnlBbmRUaHJlYWRz
Kj4obmF0aXZlX2ZhY3RvcnkpOwogICByZXR1cm4gamxvbmdGcm9tUG9pbnRlcihDcmVhdGVWaWRl
b1NvdXJjZShqbmksIGZhY3RvcnktPnNpZ25hbGluZ190aHJlYWQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yeS0+d29ya2VyX3RocmVhZCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19zY3JlZW5jYXN0
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NjcmVl
bmNhc3QsIGFsaWduX3RpbWVzdGFtcHMpKTsKIH0KIAogc3RhdGljIGpsb25nIEpOSV9QZWVyQ29u
bmVjdGlvbkZhY3RvcnlfQ3JlYXRlVmlkZW9UcmFjaygKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRj
Y2VydGlmaWNhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3J0Y2NlcnRpZmljYXRlLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhj
NTk4Y2NlMDllMzVjNmE0YWMyZjExZjBkZDVmY2ZkMWFmOWUxNjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL3BjL3J0Y2NlcnRpZmljYXRlLmNjCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL3J0Y2NlcnRpZmljYXRl
LmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9wYy9pY2VjYW5kaWRhdGUuaCIKKwor
I2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2Vy
dGlmaWNhdGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZWdlbmVyYXRvci5o
IgorI2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF9wZWVyY29ubmVjdGlvbl9qbmkvam5p
L1J0Y0NlcnRpZmljYXRlUGVtX2puaS5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL25hdGl2ZV9h
cGkvam5pL2phdmFfdHlwZXMuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL2puaV9o
ZWxwZXJzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIGpuaSB7CisKK3J0Yzo6
UlRDQ2VydGlmaWNhdGVQRU0gSmF2YVRvTmF0aXZlUlRDQ2VydGlmaWNhdGVQRU0oCisgICAgSk5J
RW52KiBqbmksCisgICAgY29uc3QgSmF2YVJlZjxqb2JqZWN0PiYgal9ydGNfY2VydGlmaWNhdGUp
IHsKKyAgU2NvcGVkSmF2YUxvY2FsUmVmPGpzdHJpbmc+IHByaXZhdGVrZXlfZmllbGQgPQorICAg
ICAgSmF2YV9SdGNDZXJ0aWZpY2F0ZVBlbV9nZXRQcml2YXRlS2V5KGpuaSwgal9ydGNfY2VydGlm
aWNhdGUpOworICBTY29wZWRKYXZhTG9jYWxSZWY8anN0cmluZz4gY2VydGlmaWNhdGVfZmllbGQg
PQorICAgICAgSmF2YV9SdGNDZXJ0aWZpY2F0ZVBlbV9nZXRDZXJ0aWZpY2F0ZShqbmksIGpfcnRj
X2NlcnRpZmljYXRlKTsKKyAgcmV0dXJuIHJ0Yzo6UlRDQ2VydGlmaWNhdGVQRU0oSmF2YVRvTmF0
aXZlU3RyaW5nKGpuaSwgcHJpdmF0ZWtleV9maWVsZCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEphdmFUb05hdGl2ZVN0cmluZyhqbmksIGNlcnRpZmljYXRlX2ZpZWxkKSk7Cit9
CisKK1Njb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBOYXRpdmVUb0phdmFSVENDZXJ0aWZpY2F0
ZVBFTSgKKyAgICBKTklFbnYqIGpuaSwKKyAgICBjb25zdCBydGM6OlJUQ0NlcnRpZmljYXRlUEVN
JiBjZXJ0aWZpY2F0ZSkgeworICByZXR1cm4gSmF2YV9SdGNDZXJ0aWZpY2F0ZVBlbV9Db25zdHJ1
Y3RvcigKKyAgICAgIGpuaSwgTmF0aXZlVG9KYXZhU3RyaW5nKGpuaSwgY2VydGlmaWNhdGUucHJp
dmF0ZV9rZXkoKSksCisgICAgICBOYXRpdmVUb0phdmFTdHJpbmcoam5pLCBjZXJ0aWZpY2F0ZS5j
ZXJ0aWZpY2F0ZSgpKSk7Cit9CisKK3N0YXRpYyBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4g
Sk5JX1J0Y0NlcnRpZmljYXRlUGVtX0dlbmVyYXRlQ2VydGlmaWNhdGUoCisgICAgSk5JRW52KiBq
bmksCisgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mLAorICAgIGNvbnN0IEphdmFQYXJh
bVJlZjxqb2JqZWN0PiYgal9rZXlfdHlwZSwKKyAgICBqbG9uZyBqX2V4cGlyZXMpIHsKKyAgcnRj
OjpLZXlUeXBlIGtleV90eXBlID0gSmF2YVRvTmF0aXZlS2V5VHlwZShqbmksIGpfa2V5X3R5cGUp
OworICB1aW50NjRfdCBleHBpcmVzID0gKHVpbnQ2NF90KWpfZXhwaXJlczsKKyAgcnRjOjpzY29w
ZWRfcmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRlID0KKyAgICAgIHJ0Yzo6
UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I6OkdlbmVyYXRlQ2VydGlmaWNhdGUoCisgICAgICAgICAg
cnRjOjpLZXlQYXJhbXMoa2V5X3R5cGUpLCBleHBpcmVzKTsKKyAgcnRjOjpSVENDZXJ0aWZpY2F0
ZVBFTSBwZW0gPSBjZXJ0aWZpY2F0ZS0+VG9QRU0oKTsKKyAgcmV0dXJuIEphdmFfUnRjQ2VydGlm
aWNhdGVQZW1fQ29uc3RydWN0b3IoCisgICAgICBqbmksIE5hdGl2ZVRvSmF2YVN0cmluZyhqbmks
IHBlbS5wcml2YXRlX2tleSgpKSwKKyAgICAgIE5hdGl2ZVRvSmF2YVN0cmluZyhqbmksIHBlbS5j
ZXJ0aWZpY2F0ZSgpKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBqbmkKK30gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMv
cnRjY2VydGlmaWNhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2QxZjc1ZDEzOTkzZDUwY2JlYWE2ZWQ3ZjYx
NTZjODI5NjU5YWRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9ydGNjZXJ0aWZpY2F0ZS5o
CkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgU0RLX0FORFJP
SURfU1JDX0pOSV9QQ19SVENDRVJUSUZJQ0FURV9IXworI2RlZmluZSBTREtfQU5EUk9JRF9TUkNf
Sk5JX1BDX1JUQ0NFUlRJRklDQVRFX0hfCisKKyNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3J0Y2NlcnRpZmljYXRlLmgiCisjaW5jbHVkZSAic2RrL2Fu
ZHJvaWQvbmF0aXZlX2FwaS9qbmkvamF2YV90eXBlcy5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lk
L3NyYy9qbmkvam5pX2hlbHBlcnMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2Ug
am5pIHsKKworcnRjOjpSVENDZXJ0aWZpY2F0ZVBFTSBKYXZhVG9OYXRpdmVSVENDZXJ0aWZpY2F0
ZVBFTSgKKyAgICBKTklFbnYqIGpuaSwKKyAgICBjb25zdCBKYXZhUmVmPGpvYmplY3Q+JiBqX3J0
Y19jZXJ0aWZpY2F0ZSk7CisKK1Njb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBOYXRpdmVUb0ph
dmFSVENDZXJ0aWZpY2F0ZVBFTSgKKyAgICBKTklFbnYqIGVudiwKKyAgICBjb25zdCBydGM6OlJU
Q0NlcnRpZmljYXRlUEVNJiBjZXJ0aWZpY2F0ZSk7CisKK30gIC8vIG5hbWVzcGFjZSBqbmkKK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBTREtfQU5EUk9JRF9TUkNfSk5JX1BD
X1JUQ0NFUlRJRklDQVRFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3ZpZGVvLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9w
Yy92aWRlby5jYwppbmRleCBkZDEwZmQ1MWNiNmFkNWY0Zjc3MGYyODhiMjdmYWZiZDdmYzA4M2Rk
Li5jN2M2ZTc2ZDVkOWJhNzNlMDViOTAwZDNiZjVlMGMwYzEwZTU1YmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMv
am5pL3BjL3ZpZGVvLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvdmlkZW8uY2MKQEAgLTQ0LDEwICs0NCwxMSBA
QCBWaWRlb0RlY29kZXJGYWN0b3J5KiBDcmVhdGVWaWRlb0RlY29kZXJGYWN0b3J5KAogdm9pZCog
Q3JlYXRlVmlkZW9Tb3VyY2UoSk5JRW52KiBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICBy
dGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgamJvb2xl
YW4gaXNfc2NyZWVuY2FzdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgamJvb2xlYW4gaXNf
c2NyZWVuY2FzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGpib29sZWFuIGFsaWduX3RpbWVz
dGFtcHMpIHsKICAgcnRjOjpzY29wZWRfcmVmcHRyPEFuZHJvaWRWaWRlb1RyYWNrU291cmNlPiBz
b3VyY2UoCi0gICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PEFuZHJvaWRWaWRlb1RyYWNr
U291cmNlPihzaWduYWxpbmdfdGhyZWFkLCBlbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19zY3JlZW5jYXN0KSk7CisgICAgICBu
ZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PEFuZHJvaWRWaWRlb1RyYWNrU291cmNlPigKKyAgICAg
ICAgICBzaWduYWxpbmdfdGhyZWFkLCBlbnYsIGlzX3NjcmVlbmNhc3QsIGFsaWduX3RpbWVzdGFt
cHMpKTsKICAgcmV0dXJuIFZpZGVvVHJhY2tTb3VyY2VQcm94eTo6Q3JlYXRlKHNpZ25hbGluZ190
aHJlYWQsIHdvcmtlcl90aHJlYWQsIHNvdXJjZSkKICAgICAgIC5yZWxlYXNlKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9zcmMvam5pL3BjL3ZpZGVvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3ZpZGVvLmgKaW5kZXggMTgzNzcwYjgy
MDYyODM5MDJmNzliMzVmNjA3M2I2ZWFmNzllOThmYi4uMDQzOTBlYTQ1M2VhMGEzYjhjZTEyYjFi
NGUzNWZjYjhlN2U2NTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy92aWRlby5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
cGMvdmlkZW8uaApAQCAtMzYsNyArMzYsOCBAQCBWaWRlb0RlY29kZXJGYWN0b3J5KiBDcmVhdGVW
aWRlb0RlY29kZXJGYWN0b3J5KAogdm9pZCogQ3JlYXRlVmlkZW9Tb3VyY2UoSk5JRW52KiBlbnYs
CiAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgamJvb2xlYW4gaXNfc2NyZWVuY2FzdCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgamJvb2xlYW4gYWxpZ25fdGltZXN0YW1wcyk7CiAKIH0gIC8vIG5hbWVzcGFjZSBqbmkK
IH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdGltZXN0YW1wYWxpZ25l
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qbmkvdGltZXN0YW1wYWxpZ25lci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmU5YjBmZGM1MTM0
NTRmNTBkY2IyYjZiZmQxMmI3YmFjMTBiYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS90aW1l
c3RhbXBhbGlnbmVyLmNjCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bmNsdWRlIDxqbmkuaD4KKworI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWVzdGFtcGFsaWduZXIuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9n
ZW5lcmF0ZWRfdmlkZW9fam5pL2puaS9UaW1lc3RhbXBBbGlnbmVyX2puaS5oIgorI2luY2x1ZGUg
InNkay9hbmRyb2lkL3NyYy9qbmkvam5pX2hlbHBlcnMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CituYW1lc3BhY2Ugam5pIHsKKworc3RhdGljIGpsb25nIEpOSV9UaW1lc3RhbXBBbGlnbmVyX1J0
Y1RpbWVOYW5vcygKKyAgICBKTklFbnYqIGVudiwKKyAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNs
YXNzPiYgal9jYWxsZXIpIHsKKyAgcmV0dXJuIHJ0Yzo6VGltZU5hbm9zKCk7Cit9CisKK3N0YXRp
YyBqbG9uZyBKTklfVGltZXN0YW1wQWxpZ25lcl9DcmVhdGVUaW1lc3RhbXBBbGlnbmVyKAorICAg
IEpOSUVudiogZW52LAorICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+JiBqX2NhbGxlcikg
eworICByZXR1cm4gamxvbmdGcm9tUG9pbnRlcihuZXcgcnRjOjpUaW1lc3RhbXBBbGlnbmVyKCkp
OworfQorCitzdGF0aWMgdm9pZCBKTklfVGltZXN0YW1wQWxpZ25lcl9SZWxlYXNlVGltZXN0YW1w
QWxpZ25lcigKKyAgICBKTklFbnYqIGVudiwKKyAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNz
PiYgal9jYWxsZXIsCisgICAgamxvbmcgdGltZXN0YW1wX2FsaWduZXIpIHsKKyAgZGVsZXRlIHJl
aW50ZXJwcmV0X2Nhc3Q8cnRjOjpUaW1lc3RhbXBBbGlnbmVyKj4odGltZXN0YW1wX2FsaWduZXIp
OworfQorCitzdGF0aWMgamxvbmcgSk5JX1RpbWVzdGFtcEFsaWduZXJfVHJhbnNsYXRlVGltZXN0
YW1wKAorICAgIEpOSUVudiogZW52LAorICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+JiBq
X2NhbGxlciwKKyAgICBqbG9uZyB0aW1lc3RhbXBfYWxpZ25lciwKKyAgICBqbG9uZyBjYW1lcmFf
dGltZV9ucykgeworICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxydGM6OlRpbWVzdGFtcEFsaWdu
ZXIqPih0aW1lc3RhbXBfYWxpZ25lcikKKyAgICAgICAgICAgICAtPlRyYW5zbGF0ZVRpbWVzdGFt
cChjYW1lcmFfdGltZV9ucyAvIHJ0Yzo6a051bU5hbm9zZWNzUGVyTWljcm9zZWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaW1lTWljcm9zKCkpICoKKyAgICAgICAg
IHJ0Yzo6a051bU5hbm9zZWNzUGVyTWljcm9zZWM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBqbmkK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdmlkZW9lbmNvZGVyd3Jh
cHBlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL3NyYy9qbmkvdmlkZW9lbmNvZGVyd3JhcHBlci5jYwppbmRleCA2MzgxYzYzY2IwNmY5
MDcyOTY4MTc4ZGNhMDliMTQ0ZTkwZGM5MDBkLi4xZTRiODRlYWM2MGYyYjdjOWJhZGVmMWFjMWNi
ZTA1MmI5YWFlOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZpZGVvZW5jb2RlcndyYXBwZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
c3JjL2puaS92aWRlb2VuY29kZXJ3cmFwcGVyLmNjCkBAIC0zMiw4ICszMiw2IEBAIG5hbWVzcGFj
ZSBqbmkgewogVmlkZW9FbmNvZGVyV3JhcHBlcjo6VmlkZW9FbmNvZGVyV3JhcHBlcihKTklFbnYq
IGpuaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2
YVJlZjxqb2JqZWN0PiYgal9lbmNvZGVyKQogICAgIDogZW5jb2Rlcl8oam5pLCBqX2VuY29kZXIp
LCBpbnRfYXJyYXlfY2xhc3NfKEdldENsYXNzKGpuaSwgIltJIikpIHsKLSAgaW1wbGVtZW50YXRp
b25fbmFtZV8gPSBHZXRJbXBsZW1lbnRhdGlvbk5hbWUoam5pKTsKLQogICBpbml0aWFsaXplZF8g
PSBmYWxzZTsKICAgbnVtX3Jlc2V0c18gPSAwOwogfQpAQCAtODIsNiArODAsMTAgQEAgaW50MzJf
dCBWaWRlb0VuY29kZXJXcmFwcGVyOjpJbml0RW5jb2RlSW50ZXJuYWwoSk5JRW52KiBqbmkpIHsK
ICAgICAgIGpuaSwgSmF2YV9WaWRlb0VuY29kZXJfaW5pdEVuY29kZShqbmksIGVuY29kZXJfLCBz
ZXR0aW5ncywgY2FsbGJhY2spKTsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiaW5pdEVuY29kZTog
IiA8PCBzdGF0dXM7CiAKKyAgZW5jb2Rlcl9pbmZvXy5zdXBwb3J0c19uYXRpdmVfaGFuZGxlID0g
dHJ1ZTsKKyAgZW5jb2Rlcl9pbmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lID0gR2V0SW1wbGVtZW50
YXRpb25OYW1lKGpuaSk7CisgIGVuY29kZXJfaW5mb18uc2NhbGluZ19zZXR0aW5ncyA9IEdldFNj
YWxpbmdTZXR0aW5nc0ludGVybmFsKGpuaSk7CisKICAgaWYgKHN0YXR1cyA9PSBXRUJSVENfVklE
RU9fQ09ERUNfT0spIHsKICAgICBpbml0aWFsaXplZF8gPSB0cnVlOwogICB9CkBAIC0xMzYsMTQg
KzEzOCw2IEBAIGludDMyX3QgVmlkZW9FbmNvZGVyV3JhcHBlcjo6RW5jb2RlKAogICByZXR1cm4g
SGFuZGxlUmV0dXJuQ29kZShqbmksIHJldCwgImVuY29kZSIpOwogfQogCi1pbnQzMl90IFZpZGVv
RW5jb2RlcldyYXBwZXI6OlNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3Nz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2
NF90IHJ0dCkgewotICBKTklFbnYqIGpuaSA9IEF0dGFjaEN1cnJlbnRUaHJlYWRJZk5lZWRlZCgp
OwotICBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gcmV0ID0gSmF2YV9WaWRlb0VuY29kZXJf
c2V0Q2hhbm5lbFBhcmFtZXRlcnMoCi0gICAgICBqbmksIGVuY29kZXJfLCAoanNob3J0KXBhY2tl
dF9sb3NzLCAoamxvbmcpcnR0KTsKLSAgcmV0dXJuIEhhbmRsZVJldHVybkNvZGUoam5pLCByZXQs
ICJzZXRDaGFubmVsUGFyYW1ldGVycyIpOwotfQotCiBpbnQzMl90IFZpZGVvRW5jb2RlcldyYXBw
ZXI6OlNldFJhdGVBbGxvY2F0aW9uKAogICAgIGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24m
IGFsbG9jYXRpb24sCiAgICAgdWludDMyX3QgZnJhbWVyYXRlKSB7CkBAIC0xNTYsOSArMTUwLDEy
IEBAIGludDMyX3QgVmlkZW9FbmNvZGVyV3JhcHBlcjo6U2V0UmF0ZUFsbG9jYXRpb24oCiAgIHJl
dHVybiBIYW5kbGVSZXR1cm5Db2RlKGpuaSwgcmV0LCAic2V0UmF0ZUFsbG9jYXRpb24iKTsKIH0K
IAotVmlkZW9FbmNvZGVyV3JhcHBlcjo6U2NhbGluZ1NldHRpbmdzIFZpZGVvRW5jb2RlcldyYXBw
ZXI6OkdldFNjYWxpbmdTZXR0aW5ncygpCi0gICAgY29uc3QgewotICBKTklFbnYqIGpuaSA9IEF0
dGFjaEN1cnJlbnRUaHJlYWRJZk5lZWRlZCgpOworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBW
aWRlb0VuY29kZXJXcmFwcGVyOjpHZXRFbmNvZGVySW5mbygpIGNvbnN0IHsKKyAgcmV0dXJuIGVu
Y29kZXJfaW5mb187Cit9CisKK1ZpZGVvRW5jb2RlcldyYXBwZXI6OlNjYWxpbmdTZXR0aW5ncwor
VmlkZW9FbmNvZGVyV3JhcHBlcjo6R2V0U2NhbGluZ1NldHRpbmdzSW50ZXJuYWwoSk5JRW52KiBq
bmkpIGNvbnN0IHsKICAgU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IGpfc2NhbGluZ19zZXR0
aW5ncyA9CiAgICAgICBKYXZhX1ZpZGVvRW5jb2Rlcl9nZXRTY2FsaW5nU2V0dGluZ3Moam5pLCBl
bmNvZGVyXyk7CiAgIGJvb2wgaXNPbiA9CkBAIC0yMDYsMTQgKzIwMyw2IEBAIFZpZGVvRW5jb2Rl
cldyYXBwZXI6OlNjYWxpbmdTZXR0aW5ncyBWaWRlb0VuY29kZXJXcmFwcGVyOjpHZXRTY2FsaW5n
U2V0dGluZ3MoKQogICB9CiB9CiAKLWJvb2wgVmlkZW9FbmNvZGVyV3JhcHBlcjo6U3VwcG9ydHNO
YXRpdmVIYW5kbGUoKSBjb25zdCB7Ci0gIHJldHVybiB0cnVlOwotfQotCi1jb25zdCBjaGFyKiBW
aWRlb0VuY29kZXJXcmFwcGVyOjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7Ci0gIHJldHVy
biBpbXBsZW1lbnRhdGlvbl9uYW1lXy5jX3N0cigpOwotfQotCiB2b2lkIFZpZGVvRW5jb2Rlcldy
YXBwZXI6Ok9uRW5jb2RlZEZyYW1lKEpOSUVudiogam5pLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBKYXZhUmVmPGpvYmplY3Q+JiBqX2NhbGxlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVJlZjxqb2Jq
ZWN0PiYgal9idWZmZXIsCkBAIC0zODUsNyArMzc0LDYgQEAgQ29kZWNTcGVjaWZpY0luZm8gVmlk
ZW9FbmNvZGVyV3JhcHBlcjo6UGFyc2VDb2RlY1NwZWNpZmljSW5mbygKICAgQ29kZWNTcGVjaWZp
Y0luZm8gaW5mbzsKICAgbWVtc2V0KCZpbmZvLCAwLCBzaXplb2YoaW5mbykpOwogICBpbmZvLmNv
ZGVjVHlwZSA9IGNvZGVjX3NldHRpbmdzXy5jb2RlY1R5cGU7Ci0gIGluZm8uY29kZWNfbmFtZSA9
IGltcGxlbWVudGF0aW9uX25hbWVfLmNfc3RyKCk7CiAKICAgc3dpdGNoIChjb2RlY19zZXR0aW5n
c18uY29kZWNUeXBlKSB7CiAgICAgY2FzZSBrVmlkZW9Db2RlY1ZQODoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9q
bmkvdmlkZW9lbmNvZGVyd3JhcHBlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb2VuY29kZXJ3cmFwcGVyLmgKaW5k
ZXggYzMwNTYwNTAzY2I3NWVmOWFhNTQyZDE4MTkwNTUzOWFlNjRkNGRkOC4uMzYxOGY3ODQ3Mzc1
ZTU5MDM0NWNmNzdjMzA4OWVjMGQ2N2NmZDEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb2VuY29k
ZXJ3cmFwcGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb2VuY29kZXJ3cmFwcGVyLmgKQEAgLTQ1LDE0ICs0
NSwxMCBAQCBjbGFzcyBWaWRlb0VuY29kZXJXcmFwcGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7
CiAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZp
Y19pbmZvLAogICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+KiBm
cmFtZV90eXBlcykgb3ZlcnJpZGU7CiAKLSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1
aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwotCiAgIGludDMyX3Qg
U2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYWxsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIG92ZXJy
aWRlOwogCi0gIFNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25zdCBvdmVy
cmlkZTsKLQotICBib29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
IEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgLy8gU2hv
dWxkIG9ubHkgYmUgY2FsbGVkIGJ5IEpOSS4KICAgdm9pZCBPbkVuY29kZWRGcmFtZShKTklFbnYq
IGpuaSwKQEAgLTY2LDggKzYyLDYgQEAgY2xhc3MgVmlkZW9FbmNvZGVyV3JhcHBlciA6IHB1Ymxp
YyBWaWRlb0VuY29kZXIgewogICAgICAgICAgICAgICAgICAgICAgIGpib29sZWFuIGNvbXBsZXRl
X2ZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFSZWY8am9iamVjdD4mIGpf
cXApOwogCi0gIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRl
OwotCiAgcHJpdmF0ZToKICAgc3RydWN0IEZyYW1lRXh0cmFJbmZvIHsKICAgICBpbnQ2NF90IGNh
cHR1cmVfdGltZV9uczsgIC8vIFVzZWQgYXMgYW4gaWRlbnRpZmllciBvZiB0aGUgZnJhbWUuCkBA
IC05MiwxMSArODYsMTEgQEAgY2xhc3MgVmlkZW9FbmNvZGVyV3JhcHBlciA6IHB1YmxpYyBWaWRl
b0VuY29kZXIgewogICAgICAgY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYWxsb2NhdGlv
bik7CiAgIHN0ZDo6c3RyaW5nIEdldEltcGxlbWVudGF0aW9uTmFtZShKTklFbnYqIGpuaSkgY29u
c3Q7CiAKKyAgU2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5nc0ludGVybmFsKEpOSUVu
diogam5pKSBjb25zdDsKKwogICBjb25zdCBTY29wZWRKYXZhR2xvYmFsUmVmPGpvYmplY3Q+IGVu
Y29kZXJfOwogICBjb25zdCBTY29wZWRKYXZhR2xvYmFsUmVmPGpjbGFzcz4gaW50X2FycmF5X2Ns
YXNzXzsKIAotICBzdGQ6OnN0cmluZyBpbXBsZW1lbnRhdGlvbl9uYW1lXzsKLQogICBydGM6OlRh
c2tRdWV1ZSogZW5jb2Rlcl9xdWV1ZV87CiAgIHN0ZDo6ZGVxdWU8RnJhbWVFeHRyYUluZm8+IGZy
YW1lX2V4dHJhX2luZm9zXzsKICAgRW5jb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrXzsKQEAg
LTEwNCw2ICs5OCw3IEBAIGNsYXNzIFZpZGVvRW5jb2RlcldyYXBwZXIgOiBwdWJsaWMgVmlkZW9F
bmNvZGVyIHsKICAgaW50IG51bV9yZXNldHNfOwogICBpbnQgbnVtYmVyX29mX2NvcmVzXzsKICAg
VmlkZW9Db2RlYyBjb2RlY19zZXR0aW5nc187CisgIEVuY29kZXJJbmZvIGVuY29kZXJfaW5mb187
CiAgIEgyNjRCaXRzdHJlYW1QYXJzZXIgaDI2NF9iaXRzdHJlYW1fcGFyc2VyXzsKIAogICAvLyBW
UDkgdmFyaWFibGVzIHRvIHBvcHVsYXRlIGNvZGVjIHNwZWNpZmljIHN0cnVjdHVyZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qbmkvdmlkZW9zb3VyY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZpZGVvc291cmNlLmNjCmluZGV4IDA5
YjUzOGViYzI2NWJhOTg3ZTBjMjJjNmJjYzM5NTEzMWU4NTUwN2YuLjM3YmEwYjA0YjExNTEwMTU0
N2UzMTY0NTdmYmNhOTY4YzVhOTUzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdmlkZW9zb3VyY2UuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS92aWRlb3NvdXJjZS5jYwpAQCAtMzMsMTMgKzMzLDE2IEBAIHN0YXRpYyBqbG9u
ZyBKTklfVmlkZW9Tb3VyY2VfR2V0SW50ZXJuYWxTb3VyY2UoSk5JRW52KiBqbmksCiBzdGF0aWMg
dm9pZCBKTklfVmlkZW9Tb3VyY2VfQWRhcHRPdXRwdXRGb3JtYXQoSk5JRW52KiBqbmksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVBhcmFt
UmVmPGpjbGFzcz4mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGpsb25nIGpfc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppbnQgal93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaW50IGpfaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppbnQgal9sYW5kc2NhcGVfd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBqX2xhbmRzY2FwZV9oZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBqX3Bv
cnRyYWl0X3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppbnQgal9wb3J0cmFpdF9oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgamludCBqX2ZwcykgewogICBSVENfTE9HKExTX0lORk8pIDw8ICJW
aWRlb1NvdXJjZV9uYXRpdmVBZGFwdE91dHB1dEZvcm1hdCI7CiAgIEFuZHJvaWRWaWRlb1RyYWNr
U291cmNlKiBzb3VyY2UgPQogICAgICAgQW5kcm9pZFZpZGVvVHJhY2tTb3VyY2VGcm9tSmF2YVBy
b3h5KGpfc291cmNlKTsKLSAgc291cmNlLT5Pbk91dHB1dEZvcm1hdFJlcXVlc3Qoal93aWR0aCwg
al9oZWlnaHQsIGpfZnBzKTsKKyAgc291cmNlLT5Pbk91dHB1dEZvcm1hdFJlcXVlc3Qoal9sYW5k
c2NhcGVfd2lkdGgsIGpfbGFuZHNjYXBlX2hlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgal9wb3J0cmFpdF93aWR0aCwgal9wb3J0cmFpdF9oZWlnaHQsIGpfZnBzKTsKIH0K
IAogfSAgLy8gbmFtZXNwYWNlIGpuaQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92cDhjb2RlYy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9q
bmkvdnA4Y29kZWMuY2MKaW5kZXggMjk1YTAzYTYxMDc3MGYwNmI5NDQ1MTFjZmUwMDNhMmMyNzVj
OWZjNS4uMjc1NmIxMDJmYWYxOTMyNGVjMGQ2YjRlMDkxYzNmYmQ2YzQxN2YyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
c3JjL2puaS92cDhjb2RlYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZwOGNvZGVjLmNjCkBAIC0xMSwyMCArMTEs
MjAgQEAKICNpbmNsdWRlIDxqbmkuaD4KIAogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKLSNpbmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0
ZWRfdnA4X2puaS9qbmkvVlA4RGVjb2Rlcl9qbmkuaCIKLSNpbmNsdWRlICJzZGsvYW5kcm9pZC9n
ZW5lcmF0ZWRfdnA4X2puaS9qbmkvVlA4RW5jb2Rlcl9qbmkuaCIKKyNpbmNsdWRlICJzZGsvYW5k
cm9pZC9nZW5lcmF0ZWRfbGlidnB4X3ZwOF9qbmkvam5pL0xpYnZweFZwOERlY29kZXJfam5pLmgi
CisjaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX2xpYnZweF92cDhfam5pL2puaS9MaWJ2
cHhWcDhFbmNvZGVyX2puaS5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvam5pX2hl
bHBlcnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2Ugam5pIHsKIAotc3RhdGlj
IGpsb25nIEpOSV9WUDhFbmNvZGVyX0NyZWF0ZUVuY29kZXIoSk5JRW52KiBqbmksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNs
YXNzPiYpIHsKK3N0YXRpYyBqbG9uZyBKTklfTGlidnB4VnA4RW5jb2Rlcl9DcmVhdGVFbmNvZGVy
KEpOSUVudiogam5pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mKSB7CiAgIHJldHVybiBqbG9uZ0Zyb21Q
b2ludGVyKFZQOEVuY29kZXI6OkNyZWF0ZSgpLnJlbGVhc2UoKSk7CiB9CiAKLXN0YXRpYyBqbG9u
ZyBKTklfVlA4RGVjb2Rlcl9DcmVhdGVEZWNvZGVyKEpOSUVudiogam5pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4m
KSB7CitzdGF0aWMgamxvbmcgSk5JX0xpYnZweFZwOERlY29kZXJfQ3JlYXRlRGVjb2RlcihKTklF
bnYqIGpuaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+JikgewogICByZXR1cm4gamxvbmdGcm9tUG9pbnRl
cihWUDhEZWNvZGVyOjpDcmVhdGUoKS5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5p
L3ZwOWNvZGVjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvc3JjL2puaS92cDljb2RlYy5jYwppbmRleCBjYTcxMmU2ZDg2NTRkMWVjNWU5
MDIzOGQ4ZjJiN2I3YjdmNTk0MmZhLi45MmY5NzU0ZDU2MzMxMWEwNzNlYzJiOGEzMTRjNjZlMWEz
MGZkNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZwOWNvZGVjLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdnA5Y29kZWMu
Y2MKQEAgLTExLDMwICsxMSwzMCBAQAogI2luY2x1ZGUgPGpuaS5oPgogCiAjaW5jbHVkZSAibW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9pbmNsdWRlL3ZwOS5oIgotI2luY2x1ZGUgInNk
ay9hbmRyb2lkL2dlbmVyYXRlZF92cDlfam5pL2puaS9WUDlEZWNvZGVyX2puaS5oIgotI2luY2x1
ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF92cDlfam5pL2puaS9WUDlFbmNvZGVyX2puaS5oIgor
I2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF9saWJ2cHhfdnA5X2puaS9qbmkvTGlidnB4
VnA5RGVjb2Rlcl9qbmkuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRfbGlidnB4
X3ZwOV9qbmkvam5pL0xpYnZweFZwOUVuY29kZXJfam5pLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJv
aWQvc3JjL2puaS9qbmlfaGVscGVycy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFj
ZSBqbmkgewogCi1zdGF0aWMgamxvbmcgSk5JX1ZQOUVuY29kZXJfQ3JlYXRlRW5jb2RlcihKTklF
bnYqIGpuaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEphdmFQYXJhbVJlZjxqY2xhc3M+JiB3KSB7CitzdGF0aWMgamxvbmcgSk5JX0xpYnZweFZwOUVu
Y29kZXJfQ3JlYXRlRW5jb2RlcihKTklFbnYqIGpuaSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+JiB3KSB7
CiAgIHJldHVybiBqbG9uZ0Zyb21Qb2ludGVyKFZQOUVuY29kZXI6OkNyZWF0ZSgpLnJlbGVhc2Uo
KSk7CiB9CiAKLXN0YXRpYyBqYm9vbGVhbiBKTklfVlA5RW5jb2Rlcl9Jc1N1cHBvcnRlZChKTklF
bnYqIGpuaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBKYXZhUGFyYW1SZWY8amNsYXNzPiYpIHsKK3N0YXRpYyBqYm9vbGVhbiBKTklfTGlidnB4VnA5
RW5jb2Rlcl9Jc1N1cHBvcnRlZChKTklFbnYqIGpuaSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNzPiYpIHsK
ICAgcmV0dXJuICFTdXBwb3J0ZWRWUDlDb2RlY3MoKS5lbXB0eSgpOwogfQogCi1zdGF0aWMgamxv
bmcgSk5JX1ZQOURlY29kZXJfQ3JlYXRlRGVjb2RlcihKTklFbnYqIGpuaSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+
JiB3KSB7CitzdGF0aWMgamxvbmcgSk5JX0xpYnZweFZwOURlY29kZXJfQ3JlYXRlRGVjb2RlcihK
TklFbnYqIGpuaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+JiB3KSB7CiAgIHJldHVybiBqbG9uZ0Zyb21Q
b2ludGVyKFZQOURlY29kZXI6OkNyZWF0ZSgpLnJlbGVhc2UoKSk7CiB9CiAKLXN0YXRpYyBqYm9v
bGVhbiBKTklfVlA5RGVjb2Rlcl9Jc1N1cHBvcnRlZChKTklFbnYqIGpuaSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNz
PiYpIHsKK3N0YXRpYyBqYm9vbGVhbiBKTklfTGlidnB4VnA5RGVjb2Rlcl9Jc1N1cHBvcnRlZChK
TklFbnYqIGpuaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNzPiYpIHsKICAgcmV0dXJuICFTdXBwb3J0ZWRW
UDlDb2RlY3MoKS5lbXB0eSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC90ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9D
cnlwdG9PcHRpb25zVGVzdC5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvdGVzdHMvc3JjL29yZy93ZWJydGMvQ3J5cHRvT3B0aW9uc1Rl
c3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMDM4MTFlNmZjYWQ1MmM4NTA0ZDY4YzY3ZTkyNTc5Y2IyMmY0
OWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvdGVzdHMvc3JjL29yZy93ZWJydGMvQ3J5cHRvT3B0aW9uc1Rl
c3QuamF2YQpAQCAtMCwwICsxLDc0IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJS
VEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9y
Zy53ZWJydGM7CisKK2ltcG9ydCBzdGF0aWMgY29tLmdvb2dsZS5jb21tb24udHJ1dGguVHJ1dGgu
YXNzZXJ0VGhhdDsKKworaW1wb3J0IG9yZy5jaHJvbWl1bS50ZXN0aW5nLmxvY2FsLkxvY2FsUm9i
b2xlY3RyaWNUZXN0UnVubmVyOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5q
dW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcucm9ib2xlY3RyaWMuYW5ub3RhdGlvbi5D
b25maWc7CitpbXBvcnQgb3JnLndlYnJ0Yy5DcnlwdG9PcHRpb25zOworCitAUnVuV2l0aChMb2Nh
bFJvYm9sZWN0cmljVGVzdFJ1bm5lci5jbGFzcykKK0BDb25maWcobWFuaWZlc3QgPSBDb25maWcu
Tk9ORSkKK3B1YmxpYyBjbGFzcyBDcnlwdG9PcHRpb25zVGVzdCB7CisgIC8vIFZhbGlkYXRlcyB0
aGUgYnVpbGRlciBidWlsZHMgYnkgZGVmYXVsdCBhbGwgZmFsc2Ugb3B0aW9ucy4KKyAgQFRlc3QK
KyAgcHVibGljIHZvaWQgdGVzdEJ1aWxkZXJEZWZhdWx0c0FyZUZhbHNlKCkgeworICAgIENyeXB0
b09wdGlvbnMgY3J5cHRvT3B0aW9ucyA9IENyeXB0b09wdGlvbnMuYnVpbGRlcigpLmNyZWF0ZUNy
eXB0b09wdGlvbnMoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdl
dEVuYWJsZUdjbUNyeXB0b1N1aXRlcygpKS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0VGhhdChjcnlw
dG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKCkp
LmlzRmFsc2UoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVu
YWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMoKSkuaXNGYWxzZSgpOworICAgIGFzc2Vy
dFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTRnJhbWUoKS5nZXRSZXF1aXJlRnJhbWVFbmNyeXB0aW9u
KCkpLmlzRmFsc2UoKTsKKyAgfQorCisgIC8vIFZhbGlkYXRlcyB0aGUgYnVpbGRlciBzZXRzIHRo
ZSBjb3JyZWN0IHBhcmFtZXRlcnMuCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RCdWlsZGVy
Q29ycmVjdGx5SW5pdGlhbGl6aW5nR2NtQ3J5cHRvKCkgeworICAgIENyeXB0b09wdGlvbnMgY3J5
cHRvT3B0aW9ucyA9CisgICAgICAgIENyeXB0b09wdGlvbnMuYnVpbGRlcigpLnNldEVuYWJsZUdj
bUNyeXB0b1N1aXRlcyh0cnVlKS5jcmVhdGVDcnlwdG9PcHRpb25zKCk7CisgICAgYXNzZXJ0VGhh
dChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVHY21DcnlwdG9TdWl0ZXMoKSkuaXNU
cnVlKCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVB
ZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKCkpLmlzRmFsc2UoKTsKKyAgICBhc3NlcnRUaGF0KGNy
eXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lv
bnMoKSkuaXNGYWxzZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTRnJhbWUo
KS5nZXRSZXF1aXJlRnJhbWVFbmNyeXB0aW9uKCkpLmlzRmFsc2UoKTsKKyAgfQorCisgIEBUZXN0
CisgIHB1YmxpYyB2b2lkIHRlc3RCdWlsZGVyQ29ycmVjdGx5SW5pdGlhbGl6aW5nQWVzMTI4U2hh
MV8zMkNyeXB0b0NpcGhlcigpIHsKKyAgICBDcnlwdG9PcHRpb25zIGNyeXB0b09wdGlvbnMgPQor
ICAgICAgICBDcnlwdG9PcHRpb25zLmJ1aWxkZXIoKS5zZXRFbmFibGVBZXMxMjhTaGExXzMyQ3J5
cHRvQ2lwaGVyKHRydWUpLmNyZWF0ZUNyeXB0b09wdGlvbnMoKTsKKyAgICBhc3NlcnRUaGF0KGNy
eXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUdjbUNyeXB0b1N1aXRlcygpKS5pc0ZhbHNl
KCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVBZXMx
MjhTaGExXzMyQ3J5cHRvQ2lwaGVyKCkpLmlzVHJ1ZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRv
T3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucygp
KS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNGcmFtZSgpLmdl
dFJlcXVpcmVGcmFtZUVuY3J5cHRpb24oKSkuaXNGYWxzZSgpOworICB9CisKKyAgQFRlc3QKKyAg
cHVibGljIHZvaWQgdGVzdEJ1aWxkZXJDb3JyZWN0bHlJbml0aWFsaXppbmdFbmNyeXB0ZWRSdHBI
ZWFkZXJFeHRlbnNpb25zKCkgeworICAgIENyeXB0b09wdGlvbnMgY3J5cHRvT3B0aW9ucyA9Cisg
ICAgICAgIENyeXB0b09wdGlvbnMuYnVpbGRlcigpLnNldEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRl
ckV4dGVuc2lvbnModHJ1ZSkuY3JlYXRlQ3J5cHRvT3B0aW9ucygpOworICAgIGFzc2VydFRoYXQo
Y3J5cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKCkpLmlzRmFs
c2UoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUFl
czEyOFNoYTFfMzJDcnlwdG9DaXBoZXIoKSkuaXNGYWxzZSgpOworICAgIGFzc2VydFRoYXQoY3J5
cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9u
cygpKS5pc1RydWUoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U0ZyYW1lKCku
Z2V0UmVxdWlyZUZyYW1lRW5jcnlwdGlvbigpKS5pc0ZhbHNlKCk7CisgIH0KKworICBAVGVzdAor
ICBwdWJsaWMgdm9pZCB0ZXN0QnVpbGRlckNvcnJlY3RseUluaXRpYWxpemluZ1JlcXVpcmVGcmFt
ZUVuY3J5cHRpb24oKSB7CisgICAgQ3J5cHRvT3B0aW9ucyBjcnlwdG9PcHRpb25zID0KKyAgICAg
ICAgQ3J5cHRvT3B0aW9ucy5idWlsZGVyKCkuc2V0UmVxdWlyZUZyYW1lRW5jcnlwdGlvbih0cnVl
KS5jcmVhdGVDcnlwdG9PcHRpb25zKCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdl
dFNydHAoKS5nZXRFbmFibGVHY21DcnlwdG9TdWl0ZXMoKSkuaXNGYWxzZSgpOworICAgIGFzc2Vy
dFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0
b0NpcGhlcigpKS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNy
dHAoKS5nZXRFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zKCkpLmlzRmFsc2UoKTsK
KyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U0ZyYW1lKCkuZ2V0UmVxdWlyZUZyYW1l
RW5jcnlwdGlvbigpKS5pc1RydWUoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0NsYXNzZXMv
UGVlckNvbm5lY3Rpb24vUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0NsYXNzZXMvUGVl
ckNvbm5lY3Rpb24vUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwNGE1Njg5NDE3YzIwNzM3Mjc4YThiMmIwMjJmMTIxZmZlOTk2NjJhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL0ZyYW1ld29yay9DbGFzc2VzL1Bl
ZXJDb25uZWN0aW9uL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDU4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICoKLSAqLwotCi0jaW1wb3J0ICJXZWJSVEMvUlRD
VmlkZW9Db2RlY0gyNjQuaCIKLQotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvaDI2NF9wcm9maWxlX2xl
dmVsX2lkLmgiCi0KLUBpbnRlcmZhY2UgUlRDSDI2NFByb2ZpbGVMZXZlbElkICgpCi0KLUBwcm9w
ZXJ0eShub25hdG9taWMsIGFzc2lnbikgUlRDSDI2NFByb2ZpbGUgcHJvZmlsZTsKLUBwcm9wZXJ0
eShub25hdG9taWMsIGFzc2lnbikgUlRDSDI2NExldmVsIGxldmVsOwotQHByb3BlcnR5KG5vbmF0
b21pYywgc3Ryb25nKSBOU1N0cmluZyAqaGV4U3RyaW5nOwotCi1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBSVENIMjY0UHJvZmlsZUxldmVsSWQKLQotQHN5bnRoZXNpemUgcHJvZmlsZSA9IF9wcm9m
aWxlOwotQHN5bnRoZXNpemUgbGV2ZWwgPSBfbGV2ZWw7Ci1Ac3ludGhlc2l6ZSBoZXhTdHJpbmcg
PSBfaGV4U3RyaW5nOwotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhIZXhTdHJpbmc6KE5TU3Ry
aW5nICopaGV4U3RyaW5nIHsKLSAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSAgICBzZWxm
LmhleFN0cmluZyA9IGhleFN0cmluZzsKLQotICAgIGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6SDI2
NDo6UHJvZmlsZUxldmVsSWQ+IHByb2ZpbGVfbGV2ZWxfaWQgPQotICAgICAgICB3ZWJydGM6Okgy
NjQ6OlBhcnNlUHJvZmlsZUxldmVsSWQoW2hleFN0cmluZyBjU3RyaW5nVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10pOwotICAgIGlmIChwcm9maWxlX2xldmVsX2lkLmhhc192YWx1
ZSgpKSB7Ci0gICAgICBzZWxmLnByb2ZpbGUgPSBzdGF0aWNfY2FzdDxSVENIMjY0UHJvZmlsZT4o
cHJvZmlsZV9sZXZlbF9pZC0+cHJvZmlsZSk7Ci0gICAgICBzZWxmLmxldmVsID0gc3RhdGljX2Nh
c3Q8UlRDSDI2NExldmVsPihwcm9maWxlX2xldmVsX2lkLT5sZXZlbCk7Ci0gICAgfQotICB9Ci0g
IHJldHVybiBzZWxmOwotfQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm9maWxlOihSVENI
MjY0UHJvZmlsZSlwcm9maWxlIGxldmVsOihSVENIMjY0TGV2ZWwpbGV2ZWwgewotICBpZiAoc2Vs
ZiA9IFtzdXBlciBpbml0XSkgewotICAgIHNlbGYucHJvZmlsZSA9IHByb2ZpbGU7Ci0gICAgc2Vs
Zi5sZXZlbCA9IGxldmVsOwotCi0gICAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IGhleF9z
dHJpbmcgPQotICAgICAgICB3ZWJydGM6OkgyNjQ6OlByb2ZpbGVMZXZlbElkVG9TdHJpbmcod2Vi
cnRjOjpIMjY0OjpQcm9maWxlTGV2ZWxJZCgKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHdlYnJ0
Yzo6SDI2NDo6UHJvZmlsZT4ocHJvZmlsZSksIHN0YXRpY19jYXN0PHdlYnJ0Yzo6SDI2NDo6TGV2
ZWw+KGxldmVsKSkpOwotICAgIHNlbGYuaGV4U3RyaW5nID0KLSAgICAgICAgW05TU3RyaW5nIHN0
cmluZ1dpdGhDU3RyaW5nOmhleF9zdHJpbmcudmFsdWVfb3IoIiIpLmNfc3RyKCkgZW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICB9Ci0gIHJldHVybiBzZWxmOwotfQotCi1AZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9hcGkvbG9nZ2luZy9SVENDYWxsYmFja0xvZ2dlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL2xvZ2dpbmcvUlRDQ2FsbGJhY2tM
b2dnZXIuaAppbmRleCA0ODY3YjMxZTM2NWNjMWI4M2I0N2MwOTY2Nzc0YjY1NTA0OWVlZDhjLi4y
YmNlMDNmZTBmOGFjNWUwOTQ2ZTE2OThmZDVkMjdlYmVlMTVjZjJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvbG9nZ2lu
Zy9SVENDYWxsYmFja0xvZ2dlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2VyLmgKQEAg
LTE1LDYgKzE1LDEwIEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK3R5cGVkZWYgdm9p
ZCAoXlJUQ0NhbGxiYWNrTG9nZ2VyTWVzc2FnZUhhbmRsZXIpKE5TU3RyaW5nICptZXNzYWdlKTsK
K3R5cGVkZWYgdm9pZCAoXlJUQ0NhbGxiYWNrTG9nZ2VyTWVzc2FnZUFuZFNldmVyaXR5SGFuZGxl
cikoTlNTdHJpbmcgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ0xvZ2dpbmdTZXZlcml0eSBzZXZlcml0eSk7CisK
IC8vIFRoaXMgY2xhc3MgaW50ZXJjZXB0cyBXZWJSVEMgbG9ncyBhbmQgZm9yd2FyZHMgdGhlbSB0
byBhIHJlZ2lzdGVyZWQgYmxvY2suCiAvLyBUaGlzIGNsYXNzIGlzIG5vdCB0aHJlYWRzYWZlLgog
UlRDX09CSkNfRVhQT1JUCkBAIC0yMywxMCArMjcsMTIgQEAgUlRDX09CSkNfRVhQT1JUCiAvLyBU
aGUgc2V2ZXJpdHkgbGV2ZWwgdG8gY2FwdHVyZS4gVGhlIGRlZmF1bHQgaXMga1JUQ0xvZ2dpbmdT
ZXZlcml0eUluZm8uCiBAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIFJUQ0xvZ2dpbmdTZXZl
cml0eSBzZXZlcml0eTsKIAotLy8gVGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBz
YW1lIHRocmVhZCB0aGF0IGRvZXMgdGhlIGxvZ2dpbmcsIHNvCi0vLyBpZiB0aGUgbG9nZ2luZyBj
YWxsYmFjayBjYW4gYmUgc2xvdyBpdCBtYXkgYmUgYSBnb29kIGlkZWEgdG8gaW1wbGVtZW50Ci0v
LyBkaXNwYXRjaGluZyB0byBzb21lIG90aGVyIHF1ZXVlLgotLSAodm9pZClzdGFydDoobnVsbGFi
bGUgdm9pZCAoXikoTlNTdHJpbmcqKSljYWxsYmFjazsKKy8vIFRoZSBjYWxsYmFjayBoYW5kbGVy
IHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBzYW1lIHRocmVhZCB0aGF0IGRvZXMgdGhlCisvLyBsb2dn
aW5nLCBzbyBpZiB0aGUgbG9nZ2luZyBjYWxsYmFjayBjYW4gYmUgc2xvdyBpdCBtYXkgYmUgYSBn
b29kIGlkZWEKKy8vIHRvIGltcGxlbWVudCBkaXNwYXRjaGluZyB0byBzb21lIG90aGVyIHF1ZXVl
LgorLSAodm9pZClzdGFydDoobnVsbGFibGUgUlRDQ2FsbGJhY2tMb2dnZXJNZXNzYWdlSGFuZGxl
ciloYW5kbGVyOworLSAodm9pZClzdGFydFdpdGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyOgor
ICAgICAgICAobnVsbGFibGUgUlRDQ2FsbGJhY2tMb2dnZXJNZXNzYWdlQW5kU2V2ZXJpdHlIYW5k
bGVyKWhhbmRsZXI7CiAKIC0gKHZvaWQpc3RvcDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL2xvZ2dpbmcvUlRDQ2Fs
bGJhY2tMb2dnZXIubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9hcGkvbG9nZ2luZy9SVENDYWxsYmFja0xvZ2dlci5tbQppbmRleCA4NDQwZDYz
NzkxZWY1MmFkMjIwNjE0MjU3ODVjNGU0NDgwMGM0NjUwLi45YmJiNTMwNDM0MDlhMjdjNTZhNjRj
NWExN2NiODRhOWRjMGZiODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvbG9nZ2luZy9SVENDYWxsYmFja0xvZ2dlci5t
bQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9hcGkvbG9nZ2luZy9SVENDYWxsYmFja0xvZ2dlci5tbQpAQCAtMTgsMTEgKzE4LDggQEAKIAog
Y2xhc3MgQ2FsbGJhY2tMb2dTaW5rIDogcHVibGljIHJ0Yzo6TG9nU2luayB7CiAgcHVibGljOgot
ICBDYWxsYmFja0xvZ1Npbmsodm9pZCAoXmNhbGxiYWNrSGFuZGxlcikoTlNTdHJpbmcgKm1lc3Nh
Z2UpKSB7Ci0gICAgY2FsbGJhY2tfaGFuZGxlcl8gPSBjYWxsYmFja0hhbmRsZXI7Ci0gIH0KLQot
ICB+Q2FsbGJhY2tMb2dTaW5rKCkgb3ZlcnJpZGUgeyBjYWxsYmFja19oYW5kbGVyXyA9IG5pbDsg
fQorICBDYWxsYmFja0xvZ1NpbmsoUlRDQ2FsbGJhY2tMb2dnZXJNZXNzYWdlSGFuZGxlciBjYWxs
YmFja0hhbmRsZXIpCisgICAgICA6IGNhbGxiYWNrX2hhbmRsZXJfKGNhbGxiYWNrSGFuZGxlcikg
e30KIAogICB2b2lkIE9uTG9nTWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkgb3Zl
cnJpZGUgewogICAgIGlmIChjYWxsYmFja19oYW5kbGVyXykgewpAQCAtMzEsMTIgKzI4LDQ3IEBA
IGNsYXNzIENhbGxiYWNrTG9nU2luayA6IHB1YmxpYyBydGM6OkxvZ1NpbmsgewogICB9CiAKICBw
cml2YXRlOgotICB2b2lkICheY2FsbGJhY2tfaGFuZGxlcl8pKE5TU3RyaW5nICptZXNzYWdlKTsK
KyAgUlRDQ2FsbGJhY2tMb2dnZXJNZXNzYWdlSGFuZGxlciBjYWxsYmFja19oYW5kbGVyXzsKK307
CisKK2NsYXNzIENhbGxiYWNrV2l0aFNldmVyaXR5TG9nU2luayA6IHB1YmxpYyBydGM6OkxvZ1Np
bmsgeworIHB1YmxpYzoKKyAgQ2FsbGJhY2tXaXRoU2V2ZXJpdHlMb2dTaW5rKFJUQ0NhbGxiYWNr
TG9nZ2VyTWVzc2FnZUFuZFNldmVyaXR5SGFuZGxlciBjYWxsYmFja0hhbmRsZXIpCisgICAgICA6
IGNhbGxiYWNrX2hhbmRsZXJfKGNhbGxiYWNrSGFuZGxlcikge30KKworICB2b2lkIE9uTG9nTWVz
c2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGUgeyBSVENfTk9UUkVBQ0hF
RCgpOyB9CisKKyAgdm9pZCBPbkxvZ01lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2Us
IHJ0Yzo6TG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5KSBvdmVycmlkZSB7CisgICAgaWYgKGNhbGxi
YWNrX2hhbmRsZXJfKSB7CisgICAgICBSVENMb2dnaW5nU2V2ZXJpdHkgbG9nZ2luZ1NldmVyaXR5
ID0gTmF0aXZlU2V2ZXJpdHlUb09iamNTZXZlcml0eShzZXZlcml0eSk7CisgICAgICBjYWxsYmFj
a19oYW5kbGVyXyhbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6bWVzc2FnZS5jX3N0cigp
XSwgbG9nZ2luZ1NldmVyaXR5KTsKKyAgICB9CisgIH0KKworIHByaXZhdGU6CisgIHN0YXRpYyBS
VENMb2dnaW5nU2V2ZXJpdHkgTmF0aXZlU2V2ZXJpdHlUb09iamNTZXZlcml0eShydGM6OkxvZ2dp
bmdTZXZlcml0eSBzZXZlcml0eSkgeworICAgIHN3aXRjaCAoc2V2ZXJpdHkpIHsKKyAgICAgIGNh
c2UgcnRjOjpMU19TRU5TSVRJVkU6CisgICAgICAgIHJldHVybiBSVENMb2dnaW5nU2V2ZXJpdHlT
ZW5zaXRpdmU7CisgICAgICBjYXNlIHJ0Yzo6TFNfVkVSQk9TRToKKyAgICAgICAgcmV0dXJuIFJU
Q0xvZ2dpbmdTZXZlcml0eVZlcmJvc2U7CisgICAgICBjYXNlIHJ0Yzo6TFNfSU5GTzoKKyAgICAg
ICAgcmV0dXJuIFJUQ0xvZ2dpbmdTZXZlcml0eUluZm87CisgICAgICBjYXNlIHJ0Yzo6TFNfV0FS
TklORzoKKyAgICAgICAgcmV0dXJuIFJUQ0xvZ2dpbmdTZXZlcml0eVdhcm5pbmc7CisgICAgICBj
YXNlIHJ0Yzo6TFNfRVJST1I6CisgICAgICAgIHJldHVybiBSVENMb2dnaW5nU2V2ZXJpdHlFcnJv
cjsKKyAgICAgIGNhc2UgcnRjOjpMU19OT05FOgorICAgICAgICByZXR1cm4gUlRDTG9nZ2luZ1Nl
dmVyaXR5Tm9uZTsKKyAgICB9CisgIH0KKworICBSVENDYWxsYmFja0xvZ2dlck1lc3NhZ2VBbmRT
ZXZlcml0eUhhbmRsZXIgY2FsbGJhY2tfaGFuZGxlcl87CiB9OwogCiBAaW1wbGVtZW50YXRpb24g
UlRDQ2FsbGJhY2tMb2dnZXIgewogICBCT09MIF9oYXNTdGFydGVkOwotICBzdGQ6OnVuaXF1ZV9w
dHI8Q2FsbGJhY2tMb2dTaW5rPiBfbG9nU2luazsKKyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6TG9n
U2luaz4gX2xvZ1Npbms7CiB9CiAKIEBzeW50aGVzaXplIHNldmVyaXR5ID0gX3NldmVyaXR5OwpA
QCAtNTMsMTIgKzg1LDI0IEBAIC0gKHZvaWQpZGVhbGxvYyB7CiAgIFtzZWxmIHN0b3BdOwogfQog
Ci0tICh2b2lkKXN0YXJ0OihudWxsYWJsZSB2b2lkICheKShOU1N0cmluZyAqKSljYWxsYmFjayB7
CistICh2b2lkKXN0YXJ0OihudWxsYWJsZSBSVENDYWxsYmFja0xvZ2dlck1lc3NhZ2VIYW5kbGVy
KWhhbmRsZXIgeworICBpZiAoX2hhc1N0YXJ0ZWQpIHsKKyAgICByZXR1cm47CisgIH0KKworICBf
bG9nU2luay5yZXNldChuZXcgQ2FsbGJhY2tMb2dTaW5rKGhhbmRsZXIpKTsKKworICBydGM6Okxv
Z01lc3NhZ2U6OkFkZExvZ1RvU3RyZWFtKF9sb2dTaW5rLmdldCgpLCBbc2VsZiBydGNTZXZlcml0
eV0pOworICBfaGFzU3RhcnRlZCA9IFlFUzsKK30KKworLSAodm9pZClzdGFydFdpdGhNZXNzYWdl
QW5kU2V2ZXJpdHlIYW5kbGVyOgorICAgICAgICAobnVsbGFibGUgUlRDQ2FsbGJhY2tMb2dnZXJN
ZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyKWhhbmRsZXIgewogICBpZiAoX2hhc1N0YXJ0ZWQpIHsK
ICAgICByZXR1cm47CiAgIH0KIAotICBfbG9nU2luay5yZXNldChuZXcgQ2FsbGJhY2tMb2dTaW5r
KGNhbGxiYWNrKSk7CisgIF9sb2dTaW5rLnJlc2V0KG5ldyBDYWxsYmFja1dpdGhTZXZlcml0eUxv
Z1NpbmsoaGFuZGxlcikpOwogCiAgIHJ0Yzo6TG9nTWVzc2FnZTo6QWRkTG9nVG9TdHJlYW0oX2xv
Z1NpbmsuZ2V0KCksIFtzZWxmIHJ0Y1NldmVyaXR5XSk7CiAgIF9oYXNTdGFydGVkID0gWUVTOwpA
QCAtNzgsNiArMTIyLDggQEAgLSAodm9pZClzdG9wIHsKIAogLSAocnRjOjpMb2dnaW5nU2V2ZXJp
dHkpcnRjU2V2ZXJpdHkgewogICBzd2l0Y2ggKF9zZXZlcml0eSkgeworICAgIGNhc2UgUlRDTG9n
Z2luZ1NldmVyaXR5U2Vuc2l0aXZlOgorICAgICAgcmV0dXJuIHJ0Yzo6TFNfU0VOU0lUSVZFOwog
ICAgIGNhc2UgUlRDTG9nZ2luZ1NldmVyaXR5VmVyYm9zZToKICAgICAgIHJldHVybiBydGM6OkxT
X1ZFUkJPU0U7CiAgICAgY2FzZSBSVENMb2dnaW5nU2V2ZXJpdHlJbmZvOgpAQCAtODYsNiArMTMy
LDggQEAgLSAocnRjOjpMb2dnaW5nU2V2ZXJpdHkpcnRjU2V2ZXJpdHkgewogICAgICAgcmV0dXJu
IHJ0Yzo6TFNfV0FSTklORzsKICAgICBjYXNlIFJUQ0xvZ2dpbmdTZXZlcml0eUVycm9yOgogICAg
ICAgcmV0dXJuIHJ0Yzo6TFNfRVJST1I7CisgICAgY2FzZSBSVENMb2dnaW5nU2V2ZXJpdHlOb25l
OgorICAgICAgcmV0dXJuIHJ0Yzo6TFNfTk9ORTsKICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNv
bm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRp
b24uaAppbmRleCA5ZmI4YjRkZjM1OTFkN2E2N2ExNWQ3NGVhOWUxNzVhNWVhYzBiZjhhLi5mOWU2
ZWRmZDk3NDE1YTgyMTkwYjM3OTM5OTliMzE3ZTA3ZDI1NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5l
Y3Rpb24vUlRDQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENDb25maWd1cmF0
aW9uLmgKQEAgLTExLDYgKzExLDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgogCiAjaW1wb3J0ICJSVENDZXJ0aWZpY2F0ZS5oIgorI2ltcG9ydCAiUlRDQ3J5cHRvT3B0aW9u
cy5oIgogI2ltcG9ydCAiUlRDTWFjcm9zLmgiCiAKIEBjbGFzcyBSVENJY2VTZXJ2ZXI7CkBAIC05
MSw2ICs5MiwxOSBAQCBSVENfT0JKQ19FWFBPUlQKIEBwcm9wZXJ0eShub25hdG9taWMsIGFzc2ln
bikgUlRDQ2FuZGlkYXRlTmV0d29ya1BvbGljeSBjYW5kaWRhdGVOZXR3b3JrUG9saWN5OwogQHBy
b3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENDb250aW51YWxHYXRoZXJpbmdQb2xpY3kgY29u
dGludWFsR2F0aGVyaW5nUG9saWN5OwogCisvKiogSWYgc2V0IHRvIFlFUywgZG9uJ3QgZ2F0aGVy
IElQdjYgSUNFIGNhbmRpZGF0ZXMuCisgKiAgRGVmYXVsdCBpcyBOTy4KKyAqLworQHByb3BlcnR5
KG5vbmF0b21pYywgYXNzaWduKSBCT09MIGRpc2FibGVJUFY2OworCisvKiogSWYgc2V0IHRvIFlF
UywgZG9uJ3QgZ2F0aGVyIElQdjYgSUNFIGNhbmRpZGF0ZXMgb24gV2ktRmkuCisgKiAgT25seSBp
bnRlbmRlZCB0byBiZSB1c2VkIG9uIHNwZWNpZmljIGRldmljZXMuIENlcnRhaW4gcGhvbmVzIGRp
c2FibGUgSVB2NgorICogIHdoZW4gdGhlIHNjcmVlbiBpcyB0dXJuZWQgb2ZmIGFuZCBpdCB3b3Vs
ZCBiZSBiZXR0ZXIgdG8ganVzdCBkaXNhYmxlIHRoZQorICogIElQdjYgSUNFIGNhbmRpZGF0ZXMg
b24gV2ktRmkgaW4gdGhvc2UgY2FzZXMuCisgKiAgRGVmYXVsdCBpcyBOTy4KKyAqLworQHByb3Bl
cnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIGRpc2FibGVJUFY2T25XaUZpOworCiAvKiogQnkg
ZGVmYXVsdCwgdGhlIFBlZXJDb25uZWN0aW9uIHdpbGwgdXNlIGEgbGltaXRlZCBudW1iZXIgb2Yg
SVB2NiBuZXR3b3JrCiAgKiAgaW50ZXJmYWNlcywgaW4gb3JkZXIgdG8gYXZvaWQgdG9vIG1hbnkg
SUNFIGNhbmRpZGF0ZSBwYWlycyBiZWluZyBjcmVhdGVkCiAgKiAgYW5kIGRlbGF5aW5nIElDRSBj
b21wbGV0aW9uLgpAQCAtMTY4LDYgKzE4MiwzNSBAQCBSVENfT0JKQ19FWFBPUlQKICAqLwogQHBy
b3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIGFjdGl2ZVJlc2V0U3J0cFBhcmFtczsKIAor
LyoqCisgKiBJZiBNZWRpYVRyYW5zcG9ydEZhY3RvcnkgaXMgcHJvdmlkZWQgaW4gUGVlckNvbm5l
Y3Rpb25GYWN0b3J5LCB0aGlzIGZsYWcgaW5mb3JtcyBQZWVyQ29ubmVjdGlvbgorICogdGhhdCBp
dCBzaG91bGQgdXNlIHRoZSBNZWRpYVRyYW5zcG9ydEludGVyZmFjZS4KKyAqLworQHByb3BlcnR5
KG5vbmF0b21pYywgYXNzaWduKSBCT09MIHVzZU1lZGlhVHJhbnNwb3J0OworCisvKioKKyAqIElm
IE1lZGlhVHJhbnNwb3J0RmFjdG9yeSBpcyBwcm92aWRlZCBpbiBQZWVyQ29ubmVjdGlvbkZhY3Rv
cnksIHRoaXMgZmxhZyBpbmZvcm1zIFBlZXJDb25uZWN0aW9uCisgKiB0aGF0IGl0IHNob3VsZCB1
c2UgdGhlIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlIGZvciBkYXRhIGNoYW5uZWxzLgorICovCitA
cHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgdXNlTWVkaWFUcmFuc3BvcnRGb3JEYXRh
Q2hhbm5lbHM7CisKKy8qKgorICogRGVmaW5lcyBhZHZhbmNlZCBvcHRpb25hbCBjcnlwdG9ncmFw
aGljIHNldHRpbmdzIHJlbGF0ZWQgdG8gU1JUUCBhbmQKKyAqIGZyYW1lIGVuY3J5cHRpb24gZm9y
IG5hdGl2ZSBXZWJSVEMuIFNldHRpbmcgdGhpcyB3aWxsIG92ZXJ3cml0ZSBhbnkKKyAqIG9wdGlv
bnMgc2V0IHRocm91Z2ggdGhlIFBlZXJDb25uZWN0aW9uRmFjdG9yeSAod2hpY2ggaXMgZGVwcmVj
YXRlZCkuCisgKi8KK0Bwcm9wZXJ0eShub25hdG9taWMsIG51bGxhYmxlKSBSVENDcnlwdG9PcHRp
b25zICpjcnlwdG9PcHRpb25zOworCisvKioKKyAqIFRpbWUgaW50ZXJ2YWwgYmV0d2VlbiBhdWRp
byBSVENQIHJlcG9ydHMuCisgKi8KK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgaW50IHJ0
Y3BBdWRpb1JlcG9ydEludGVydmFsTXM7CisKKy8qKgorICogVGltZSBpbnRlcnZhbCBiZXR3ZWVu
IHZpZGVvIFJUQ1AgcmVwb3J0cy4KKyAqLworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBp
bnQgcnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxNczsKKwogLSAoaW5zdGFuY2V0eXBlKWluaXQ7CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENDb25maWd1cmF0aW9uLm1tIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJj
b25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggNzNhMGZhOWFhNWZkODBkYjRjZDI3
Y2QyOTNiNjUwYjdiODAwNjk1Zi4uNDA0MWY4Mzk5ZmM4YjM1NTY3Y2JkOTg5YTI1NDI3ZWViNGJh
MWViYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24ubW0KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3Bl
ZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24ubW0KQEAgLTMxLDYgKzMxLDggQEAgQHN5bnRo
ZXNpemUgcnRjcE11eFBvbGljeSA9IF9ydGNwTXV4UG9saWN5OwogQHN5bnRoZXNpemUgdGNwQ2Fu
ZGlkYXRlUG9saWN5ID0gX3RjcENhbmRpZGF0ZVBvbGljeTsKIEBzeW50aGVzaXplIGNhbmRpZGF0
ZU5ldHdvcmtQb2xpY3kgPSBfY2FuZGlkYXRlTmV0d29ya1BvbGljeTsKIEBzeW50aGVzaXplIGNv
bnRpbnVhbEdhdGhlcmluZ1BvbGljeSA9IF9jb250aW51YWxHYXRoZXJpbmdQb2xpY3k7CitAc3lu
dGhlc2l6ZSBkaXNhYmxlSVBWNiA9IF9kaXNhYmxlSVBWNjsKK0BzeW50aGVzaXplIGRpc2FibGVJ
UFY2T25XaUZpID0gX2Rpc2FibGVJUFY2T25XaUZpOwogQHN5bnRoZXNpemUgbWF4SVB2Nk5ldHdv
cmtzID0gX21heElQdjZOZXR3b3JrczsKIEBzeW50aGVzaXplIGRpc2FibGVMaW5rTG9jYWxOZXR3
b3JrcyA9IF9kaXNhYmxlTGlua0xvY2FsTmV0d29ya3M7CiBAc3ludGhlc2l6ZSBhdWRpb0ppdHRl
ckJ1ZmZlck1heFBhY2tldHMgPSBfYXVkaW9KaXR0ZXJCdWZmZXJNYXhQYWNrZXRzOwpAQCAtNDgs
NiArNTAsMTEgQEAgQHN5bnRoZXNpemUgaWNlUmVnYXRoZXJJbnRlcnZhbFJhbmdlID0gX2ljZVJl
Z2F0aGVySW50ZXJ2YWxSYW5nZTsKIEBzeW50aGVzaXplIHNkcFNlbWFudGljcyA9IF9zZHBTZW1h
bnRpY3M7CiBAc3ludGhlc2l6ZSB0dXJuQ3VzdG9taXplciA9IF90dXJuQ3VzdG9taXplcjsKIEBz
eW50aGVzaXplIGFjdGl2ZVJlc2V0U3J0cFBhcmFtcyA9IF9hY3RpdmVSZXNldFNydHBQYXJhbXM7
CitAc3ludGhlc2l6ZSB1c2VNZWRpYVRyYW5zcG9ydCA9IF91c2VNZWRpYVRyYW5zcG9ydDsKK0Bz
eW50aGVzaXplIHVzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzID0gX3VzZU1lZGlhVHJh
bnNwb3J0Rm9yRGF0YUNoYW5uZWxzOworQHN5bnRoZXNpemUgY3J5cHRvT3B0aW9ucyA9IF9jcnlw
dG9PcHRpb25zOworQHN5bnRoZXNpemUgcnRjcEF1ZGlvUmVwb3J0SW50ZXJ2YWxNcyA9IF9ydGNw
QXVkaW9SZXBvcnRJbnRlcnZhbE1zOworQHN5bnRoZXNpemUgcnRjcFZpZGVvUmVwb3J0SW50ZXJ2
YWxNcyA9IF9ydGNwVmlkZW9SZXBvcnRJbnRlcnZhbE1zOwogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dCB7CiAgIC8vIENvcHkgZGVmYXVsdHMuCkBAIC04Niw2ICs5Myw4IEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aE5hdGl2ZUNvbmZpZ3VyYXRpb246CiAgICAgY29uZmlnLmNvbnRpbnVhbF9nYXRo
ZXJpbmdfcG9saWN5OwogICAgIF9jb250aW51YWxHYXRoZXJpbmdQb2xpY3kgPQogICAgICAgICBb
W3NlbGYgY2xhc3NdIGNvbnRpbnVhbEdhdGhlcmluZ1BvbGljeUZvck5hdGl2ZVBvbGljeTpuYXRp
dmVQb2xpY3ldOworICAgIF9kaXNhYmxlSVBWNiA9IGNvbmZpZy5kaXNhYmxlX2lwdjY7CisgICAg
X2Rpc2FibGVJUFY2T25XaUZpID0gY29uZmlnLmRpc2FibGVfaXB2Nl9vbl93aWZpOwogICAgIF9t
YXhJUHY2TmV0d29ya3MgPSBjb25maWcubWF4X2lwdjZfbmV0d29ya3M7CiAgICAgX2Rpc2FibGVM
aW5rTG9jYWxOZXR3b3JrcyA9IGNvbmZpZy5kaXNhYmxlX2xpbmtfbG9jYWxfbmV0d29ya3M7CiAg
ICAgX2F1ZGlvSml0dGVyQnVmZmVyTWF4UGFja2V0cyA9IGNvbmZpZy5hdWRpb19qaXR0ZXJfYnVm
ZmVyX21heF9wYWNrZXRzOwpAQCAtOTMsNiArMTAyLDggQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoTmF0aXZlQ29uZmlndXJhdGlvbjoKICAgICBfaWNlQ29ubmVjdGlvblJlY2VpdmluZ1RpbWVv
dXQgPSBjb25maWcuaWNlX2Nvbm5lY3Rpb25fcmVjZWl2aW5nX3RpbWVvdXQ7CiAgICAgX2ljZUJh
Y2t1cENhbmRpZGF0ZVBhaXJQaW5nSW50ZXJ2YWwgPQogICAgICAgICBjb25maWcuaWNlX2JhY2t1
cF9jYW5kaWRhdGVfcGFpcl9waW5nX2ludGVydmFsOworICAgIF91c2VNZWRpYVRyYW5zcG9ydCA9
IGNvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0OworICAgIF91c2VNZWRpYVRyYW5zcG9ydEZvckRh
dGFDaGFubmVscyA9IGNvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxz
OwogICAgIF9rZXlUeXBlID0gUlRDRW5jcnlwdGlvbktleVR5cGVFQ0RTQTsKICAgICBfaWNlQ2Fu
ZGlkYXRlUG9vbFNpemUgPSBjb25maWcuaWNlX2NhbmRpZGF0ZV9wb29sX3NpemU7CiAgICAgX3No
b3VsZFBydW5lVHVyblBvcnRzID0gY29uZmlnLnBydW5lX3R1cm5fcG9ydHM7CkBAIC0xMTAsMTQg
KzEyMSwyNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOYXRpdmVDb25maWd1cmF0aW9uOgog
ICAgIF9zZHBTZW1hbnRpY3MgPSBbW3NlbGYgY2xhc3NdIHNkcFNlbWFudGljc0Zvck5hdGl2ZVNk
cFNlbWFudGljczpjb25maWcuc2RwX3NlbWFudGljc107CiAgICAgX3R1cm5DdXN0b21pemVyID0g
Y29uZmlnLnR1cm5fY3VzdG9taXplcjsKICAgICBfYWN0aXZlUmVzZXRTcnRwUGFyYW1zID0gY29u
ZmlnLmFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtczsKKyAgICBpZiAoY29uZmlnLmNyeXB0b19vcHRp
b25zKSB7CisgICAgICBfY3J5cHRvT3B0aW9ucyA9IFtbUlRDQ3J5cHRvT3B0aW9ucyBhbGxvY10K
KyAgICAgICAgICAgICAgIGluaXRXaXRoU3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlczpjb25maWcu
Y3J5cHRvX29wdGlvbnMtPnNydHAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcworICAgICAgICAgICAg
IHNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOmNvbmZpZy5jcnlwdG9fb3B0aW9u
cy0+c3J0cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIKKyAgICAgICAgICBzcnRw
RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczpjb25maWcuY3J5cHRvX29wdGlvbnMt
PnNydHAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLmVuYWJsZV9lbmNyeXB0ZWRfcnRwX2hlYWRlcl9leHRlbnNpb25zCisgICAgICAgICAgICAg
ICAgICAgIHNmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb246Y29uZmlnLmNyeXB0b19vcHRpb25z
LT5zZnJhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbl07CisgICAgfQorICAgIF9ydGNwQXVkaW9S
ZXBvcnRJbnRlcnZhbE1zID0gY29uZmlnLmF1ZGlvX3J0Y3BfcmVwb3J0X2ludGVydmFsX21zKCk7
CisgICAgX3J0Y3BWaWRlb1JlcG9ydEludGVydmFsTXMgPSBjb25maWcudmlkZW9fcnRjcF9yZXBv
cnRfaW50ZXJ2YWxfbXMoKTsKICAgfQogICByZXR1cm4gc2VsZjsKIH0KIAogLSAoTlNTdHJpbmcg
KilkZXNjcmlwdGlvbiB7Ci0gIHN0YXRpYyBOU1N0cmluZyAqZm9ybWF0U3RyaW5nID0KLSAgICAg
IEAiUlRDQ29uZmlndXJhdGlvbjogIgotICAgICAgQCJ7XG4lQFxuJUBcbiVAXG4lQFxuJUBcbiVA
XG4lQFxuJUBcbiVkXG4lZFxuJWRcbiVkXG4lZFxuJWRcbiVkXG4lQFxuJUBcbiVkXG4lZFxuJWRc
bn1cbiI7CisgIHN0YXRpYyBOU1N0cmluZyAqZm9ybWF0U3RyaW5nID0gQCJSVENDb25maWd1cmF0
aW9uOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJ7XG4lQFxuJUBcbiVA
XG4lQFxuJUBcbiVAXG4lQFxuJUBcbiVkXG4lZFxuJWRcbiVkXG4lZFxuJWRcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBAIiVkXG4lQFxuJUBcbiVkXG4lZFxuJWRcbiVkXG4l
ZFxuJUBcbn1cbiI7CiAKICAgcmV0dXJuIFtOU1N0cmluZwogICAgICAgc3RyaW5nV2l0aEZvcm1h
dDpmb3JtYXRTdHJpbmcsCkBAIC0xMzksOCArMTYzLDExIEBAIC0gKE5TU3RyaW5nICopZGVzY3Jp
cHRpb24gewogICAgICAgICAgICAgICAgICAgICAgICBfaWNlQ2hlY2tNaW5JbnRlcnZhbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgX2ljZVJlZ2F0aGVySW50ZXJ2YWxSYW5nZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgX2Rpc2FibGVMaW5rTG9jYWxOZXR3b3JrcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgX2Rpc2FibGVJUFY2LAorICAgICAgICAgICAgICAgICAgICAgICBfZGlzYWJsZUlQ
VjZPbldpRmksCiAgICAgICAgICAgICAgICAgICAgICAgIF9tYXhJUHY2TmV0d29ya3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgIF9hY3RpdmVSZXNldFNydHBQYXJhbXNdOworICAgICAgICAgICAg
ICAgICAgICAgICBfYWN0aXZlUmVzZXRTcnRwUGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAg
ICBfdXNlTWVkaWFUcmFuc3BvcnRdOwogfQogCiAjcHJhZ21hIG1hcmsgLSBQcml2YXRlCkBAIC0x
NjYsNiArMTkzLDggQEAgLSAod2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29u
ZmlndXJhdGlvbiAqKQogICAgICAgbmF0aXZlQ2FuZGlkYXRlTmV0d29ya1BvbGljeUZvclBvbGlj
eTpfY2FuZGlkYXRlTmV0d29ya1BvbGljeV07CiAgIG5hdGl2ZUNvbmZpZy0+Y29udGludWFsX2dh
dGhlcmluZ19wb2xpY3kgPSBbW3NlbGYgY2xhc3NdCiAgICAgICBuYXRpdmVDb250aW51YWxHYXRo
ZXJpbmdQb2xpY3lGb3JQb2xpY3k6X2NvbnRpbnVhbEdhdGhlcmluZ1BvbGljeV07CisgIG5hdGl2
ZUNvbmZpZy0+ZGlzYWJsZV9pcHY2ID0gX2Rpc2FibGVJUFY2OworICBuYXRpdmVDb25maWctPmRp
c2FibGVfaXB2Nl9vbl93aWZpID0gX2Rpc2FibGVJUFY2T25XaUZpOwogICBuYXRpdmVDb25maWct
Pm1heF9pcHY2X25ldHdvcmtzID0gX21heElQdjZOZXR3b3JrczsKICAgbmF0aXZlQ29uZmlnLT5k
aXNhYmxlX2xpbmtfbG9jYWxfbmV0d29ya3MgPSBfZGlzYWJsZUxpbmtMb2NhbE5ldHdvcmtzOwog
ICBuYXRpdmVDb25maWctPmF1ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMgPSBfYXVkaW9K
aXR0ZXJCdWZmZXJNYXhQYWNrZXRzOwpAQCAtMTc1LDYgKzIwNCw4IEBAIC0gKHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gKikKICAgICAgIF9pY2VDb25u
ZWN0aW9uUmVjZWl2aW5nVGltZW91dDsKICAgbmF0aXZlQ29uZmlnLT5pY2VfYmFja3VwX2NhbmRp
ZGF0ZV9wYWlyX3BpbmdfaW50ZXJ2YWwgPQogICAgICAgX2ljZUJhY2t1cENhbmRpZGF0ZVBhaXJQ
aW5nSW50ZXJ2YWw7CisgIG5hdGl2ZUNvbmZpZy0+dXNlX21lZGlhX3RyYW5zcG9ydCA9IF91c2VN
ZWRpYVRyYW5zcG9ydDsKKyAgbmF0aXZlQ29uZmlnLT51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9k
YXRhX2NoYW5uZWxzID0gX3VzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzOwogICBydGM6
OktleVR5cGUga2V5VHlwZSA9CiAgICAgICBbW3NlbGYgY2xhc3NdIG5hdGl2ZUVuY3J5cHRpb25L
ZXlUeXBlRm9yS2V5VHlwZTpfa2V5VHlwZV07CiAgIGlmIChfY2VydGlmaWNhdGUgIT0gbnVsbHB0
cikgewpAQCAtMjIyLDYgKzI1MywyMCBAQCAtICh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpSVENDb25maWd1cmF0aW9uICopCiAgICAgbmF0aXZlQ29uZmlnLT50dXJuX2N1c3RvbWl6
ZXIgPSBfdHVybkN1c3RvbWl6ZXI7CiAgIH0KICAgbmF0aXZlQ29uZmlnLT5hY3RpdmVfcmVzZXRf
c3J0cF9wYXJhbXMgPSBfYWN0aXZlUmVzZXRTcnRwUGFyYW1zID8gdHJ1ZSA6IGZhbHNlOworICBp
ZiAoX2NyeXB0b09wdGlvbnMpIHsKKyAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgbmF0aXZlQ3J5
cHRvT3B0aW9uczsKKyAgICBuYXRpdmVDcnlwdG9PcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlw
dG9fc3VpdGVzID0KKyAgICAgICAgX2NyeXB0b09wdGlvbnMuc3J0cEVuYWJsZUdjbUNyeXB0b1N1
aXRlcyA/IHRydWUgOiBmYWxzZTsKKyAgICBuYXRpdmVDcnlwdG9PcHRpb25zLnNydHAuZW5hYmxl
X2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPQorICAgICAgICBfY3J5cHRvT3B0aW9ucy5z
cnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlciA/IHRydWUgOiBmYWxzZTsKKyAgICBu
YXRpdmVDcnlwdG9PcHRpb25zLnNydHAuZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVu
c2lvbnMgPQorICAgICAgICBfY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVh
ZGVyRXh0ZW5zaW9ucyA/IHRydWUgOiBmYWxzZTsKKyAgICBuYXRpdmVDcnlwdG9PcHRpb25zLnNm
cmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24gPQorICAgICAgICBfY3J5cHRvT3B0aW9ucy5z
ZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uID8gdHJ1ZSA6IGZhbHNlOworICAgIG5hdGl2ZUNv
bmZpZy0+Y3J5cHRvX29wdGlvbnMgPSBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkNyeXB0b09wdGlv
bnM+KG5hdGl2ZUNyeXB0b09wdGlvbnMpOworICB9CisgIG5hdGl2ZUNvbmZpZy0+c2V0X2F1ZGlv
X3J0Y3BfcmVwb3J0X2ludGVydmFsX21zKF9ydGNwQXVkaW9SZXBvcnRJbnRlcnZhbE1zKTsKKyAg
bmF0aXZlQ29uZmlnLT5zZXRfdmlkZW9fcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMoX3J0Y3BWaWRl
b1JlcG9ydEludGVydmFsTXMpOwogICByZXR1cm4gbmF0aXZlQ29uZmlnLnJlbGVhc2UoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlvbnMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENDcnlwdG9PcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ2NWJiNWE3M2JkZmI4ZTM3Zjg4
MjUxNGE5Y2IxNjk2YzAzY2ZjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVEND
cnlwdG9PcHRpb25zLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgIlJUQ01hY3Jvcy5oIgor
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCisvKioKKyAqIE9iamVjdGl2ZS1DIGJpbmRpbmdz
IGZvciB3ZWJydGM6OkNyeXB0b09wdGlvbnMuIFRoaXMgQVBJIGhhZCB0byBiZSBmbGF0dGVuZWQK
KyAqIGFzIE9iamVjdGl2ZS1DIGRvZXNuJ3Qgc3VwcG9ydCBuZXN0ZWQgc3RydWN0dXJlcy4KKyAq
LworUlRDX09CSkNfRVhQT1JUCitAaW50ZXJmYWNlIFJUQ0NyeXB0b09wdGlvbnMgOiBOU09iamVj
dAorCisvKioKKyAqIEVuYWJsZSBHQ00gY3J5cHRvIHN1aXRlcyBmcm9tIFJGQyA3NzE0IGZvciBT
UlRQLiBHQ00gd2lsbCBvbmx5IGJlIHVzZWQKKyAqIGlmIGJvdGggc2lkZXMgZW5hYmxlIGl0Cisg
Ki8KK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9PTCBzcnRwRW5hYmxlR2NtQ3J5cHRv
U3VpdGVzOworLyoqCisgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIChwb3RlbnRpYWxseSBpbnNlY3Vy
ZSkgY3J5cHRvIGNpcGhlcgorICogU1JUUF9BRVMxMjhfQ01fU0hBMV8zMiB3aWxsIGJlIGluY2x1
ZGVkIGluIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBjaXBoZXJzCisgKiBkdXJpbmcgbmVnb3RpYXRp
b24uIEl0IHdpbGwgb25seSBiZSB1c2VkIGlmIGJvdGggcGVlcnMgc3VwcG9ydCBpdCBhbmQgbm8K
KyAqIG90aGVyIGNpcGhlcnMgZ2V0IHByZWZlcnJlZC4KKyAqLworQHByb3BlcnR5KG5vbmF0b21p
YywgYXNzaWduKSBCT09MIHNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOworLyoq
CisgKiBJZiBzZXQgdG8gdHJ1ZSwgZW5jcnlwdGVkIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyBhcyBk
ZWZpbmVkIGluIFJGQyA2OTA0CisgKiB3aWxsIGJlIG5lZ290aWF0ZWQuIFRoZXkgd2lsbCBvbmx5
IGJlIHVzZWQgaWYgYm90aCBwZWVycyBzdXBwb3J0IHRoZW0uCisgKi8KK0Bwcm9wZXJ0eShub25h
dG9taWMsIGFzc2lnbikgQk9PTCBzcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9u
czsKKworLyoqCisgKiBJZiBzZXQgYWxsIFJ0cFNlbmRlcnMgbXVzdCBoYXZlIGFuIEZyYW1lRW5j
cnlwdG9yIGF0dGFjaGVkIHRvIHRoZW0gYmVmb3JlCisgKiB0aGV5IGFyZSBhbGxvd2VkIHRvIHNl
bmQgcGFja2V0cy4gQWxsIFJ0cFJlY2VpdmVycyBtdXN0IGhhdmUgYQorICogRnJhbWVEZWNyeXB0
b3IgYXR0YWNoZWQgdG8gdGhlbSBiZWZvcmUgdGhleSBhcmUgYWJsZSB0byByZWNlaXZlIHBhY2tl
dHMuCisgKi8KK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9PTCBzZnJhbWVSZXF1aXJl
RnJhbWVFbmNyeXB0aW9uOworCisvKioKKyAqIEluaXRpYWxpemVzIENyeXB0b09wdGlvbnMgd2l0
aCBhbGwgcG9zc2libGUgb3B0aW9ucyBzZXQgZXhwbGljaXRseS4gVGhpcworICogaXMgZG9uZSB3
aGVuIGNvbnZlcnRpbmcgZnJvbSBhIG5hdGl2ZSBSVENDb25maWd1cmF0aW9uLmNyeXB0b19vcHRp
b25zLgorICovCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTcnRwRW5hYmxlR2NtQ3J5cHRvU3Vp
dGVzOihCT09MKXNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXMKKyAgICAgICAgICAgICAgc3J0cEVu
YWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI6KEJPT0wpc3J0cEVuYWJsZUFlczEyOFNoYTFf
MzJDcnlwdG9DaXBoZXIKKyAgICAgICAgICAgc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4
dGVuc2lvbnM6KEJPT0wpc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMKKyAg
ICAgICAgICAgICAgICAgICAgIHNmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb246KEJPT0wpc2Zy
YW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbgorICAgIE5TX0RFU0lHTkFURURfSU5JVElBTElaRVI7
CisKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCitAZW5kCisKK05TX0FT
U1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlv
bnMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ3J5cHRvT3B0aW9ucy5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDU5
Zjc1NTk5NGU3NDMwMzAzMjFkYTVmMmUwNDMyZjBiMjExZmY5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3Bl
ZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlvbnMubW0KQEAgLTAsMCArMSwzMyBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKworI2ltcG9ydCAiUlRDQ3J5cHRvT3B0aW9ucy5oIgorCitAaW1wbGVtZW50
YXRpb24gUlRDQ3J5cHRvT3B0aW9ucworCitAc3ludGhlc2l6ZSBzcnRwRW5hYmxlR2NtQ3J5cHRv
U3VpdGVzID0gX3NydHBFbmFibGVHY21DcnlwdG9TdWl0ZXM7CitAc3ludGhlc2l6ZSBzcnRwRW5h
YmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlciA9IF9zcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNy
eXB0b0NpcGhlcjsKK0BzeW50aGVzaXplIHNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRl
bnNpb25zID0gX3NydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zOworQHN5bnRo
ZXNpemUgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbiA9IF9zZnJhbWVSZXF1aXJlRnJhbWVF
bmNyeXB0aW9uOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTcnRwRW5hYmxlR2NtQ3J5cHRv
U3VpdGVzOihCT09MKXNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXMKKyAgICAgICAgICAgICAgc3J0
cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI6KEJPT0wpc3J0cEVuYWJsZUFlczEyOFNo
YTFfMzJDcnlwdG9DaXBoZXIKKyAgICAgICAgICAgc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRl
ckV4dGVuc2lvbnM6KEJPT0wpc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMK
KyAgICAgICAgICAgICAgICAgICAgIHNmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb246KEJPT0wp
c2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbiB7CisgIGlmIChzZWxmID0gW3N1cGVyIGluaXRd
KSB7CisgICAgX3NydHBFbmFibGVHY21DcnlwdG9TdWl0ZXMgPSBzcnRwRW5hYmxlR2NtQ3J5cHRv
U3VpdGVzOworICAgIF9zcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlciA9IHNydHBF
bmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOworICAgIF9zcnRwRW5hYmxlRW5jcnlwdGVk
UnRwSGVhZGVyRXh0ZW5zaW9ucyA9IHNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNp
b25zOworICAgIF9zZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uID0gc2ZyYW1lUmVxdWlyZUZy
YW1lRW5jcnlwdGlvbjsKKyAgfQorICByZXR1cm4gc2VsZjsKK30KKworQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBp
L3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24v
UlRDRW5jb2RlZEltYWdlK1ByaXZhdGUuaAppbmRleCAxYjEyNWYxMDM5YTIyZjIyOWYwOTJiOWE3
NmNmMzQyYjA4YzZiYzQxLi5jNzdhN2FkODVkN2JiN2E4ZGJiNWYwYThjZDcxMDk1NzdkNTgyZWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
cGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUuaApAQCAtMTAsNyArMTAsNyBA
QAogCiAjaW1wb3J0ICJiYXNlL1JUQ0VuY29kZWRJbWFnZS5oIgogCi0jaW5jbHVkZSAiY29tbW9u
X3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vZW5jb2Rl
ZF9pbWFnZS5oIgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNv
bm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5j
b2RlZEltYWdlK1ByaXZhdGUubW0KaW5kZXggOTRjYjFmMTEwZjk2Y2YwM2NkNTFhZDdiZWQ0NTBl
MTViODIxODk0Ny4uZjk5MDFiZDMyN2U4ZjI0YmNmMGJmMTc2YjAwNGZmOWUxYWY1YTc0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1tCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVy
Y29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbQpAQCAtMzUsNyArMzUsNiBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOYXRpdmVFbmNvZGVkSW1hZ2U6KHdlYnJ0Yzo6RW5jb2Rl
ZEltYWdlKWVuY29kZWRJbWFnZSB7CiAgICAgc2VsZi5jb250ZW50VHlwZSA9IChlbmNvZGVkSW1h
Z2UuY29udGVudF90eXBlXyA9PSB3ZWJydGM6OlZpZGVvQ29udGVudFR5cGU6OlNDUkVFTlNIQVJF
KSA/CiAgICAgICAgIFJUQ1ZpZGVvQ29udGVudFR5cGVTY3JlZW5zaGFyZSA6CiAgICAgICAgIFJU
Q1ZpZGVvQ29udGVudFR5cGVVbnNwZWNpZmllZDsKLSAgICBzZWxmLnNwYXRpYWxJbmRleCA9IGVu
Y29kZWRJbWFnZS5TcGF0aWFsSW5kZXgoKSA/ICplbmNvZGVkSW1hZ2UuU3BhdGlhbEluZGV4KCkg
OiAwOwogICB9CiAKICAgcmV0dXJuIHNlbGY7CkBAIC01NywxMSArNTYsMTEgQEAgLSAod2VicnRj
OjpFbmNvZGVkSW1hZ2UpbmF0aXZlRW5jb2RlZEltYWdlIHsKICAgZW5jb2RlZEltYWdlLnJvdGF0
aW9uXyA9IHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbihzZWxmLnJvdGF0aW9uKTsKICAgZW5jb2RlZElt
YWdlLl9jb21wbGV0ZUZyYW1lID0gc2VsZi5jb21wbGV0ZUZyYW1lOwogICBlbmNvZGVkSW1hZ2Uu
cXBfID0gc2VsZi5xcCA/IHNlbGYucXAuaW50VmFsdWUgOiAtMTsKKyAgZW5jb2RlZEltYWdlLlNl
dFNwYXRpYWxJbmRleChzZWxmLnNwYXRpYWxJbmRleCk7CiAgIGVuY29kZWRJbWFnZS5jb250ZW50
X3R5cGVfID0gKHNlbGYuY29udGVudFR5cGUgPT0gUlRDVmlkZW9Db250ZW50VHlwZVNjcmVlbnNo
YXJlKSA/CiAgICAgICB3ZWJydGM6OlZpZGVvQ29udGVudFR5cGU6OlNDUkVFTlNIQVJFIDoKICAg
ICAgIHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6VU5TUEVDSUZJRUQ7Ci0gIGlmIChzZWxmLnNw
YXRpYWxJbmRleCkKLSAgICBlbmNvZGVkSW1hZ2UuU2V0U3BhdGlhbEluZGV4KHNlbGYuc3BhdGlh
bEluZGV4KTsKKwogICByZXR1cm4gZW5jb2RlZEltYWdlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNv
bm5lY3Rpb24vUlRDRmllbGRUcmlhbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENGaWVsZFRyaWFscy5o
CmluZGV4IGVmZmM0NzA2ODZmODEwYjQwMTVmMjNiNTFjNGE0YzFmMzkxNzQwZWIuLmNmNjQ4ZDMy
YzNhOTEwODFiZWIxZDI3MWY1NWM5ZDJiYTIyMTcyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlv
bi9SVENGaWVsZFRyaWFscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENGaWVsZFRyaWFscy5oCkBA
IC0yMCwyNCArMjAsMTIgQEAgUlRDX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IGtSVENGaWVsZFRy
aWFsQXVkaW9Gb3JjZUFCV0VOb1RXQ0NLZXk7CiBSVENfRVhURVJOIE5TU3RyaW5nICogY29uc3Qg
a1JUQ0ZpZWxkVHJpYWxTZW5kU2lkZUJ3ZVdpdGhPdmVyaGVhZEtleTsKIFJUQ19FWFRFUk4gTlNT
dHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEZsZXhGZWMwM0FkdmVydGlzZWRLZXk7CiBSVENf
RVhURVJOIE5TU3RyaW5nICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxGbGV4RmVjMDNLZXk7Ci1SVENf
RVhURVJOIE5TU3RyaW5nICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxJbXByb3ZlZEJpdHJhdGVFc3Rp
bWF0ZUtleTsKIFJUQ19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEgyNjRI
aWdoUHJvZmlsZUtleTsKIFJUQ19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlh
bE1pbmltaXplUmVzYW1wbGluZ09uTW9iaWxlS2V5OwogCiAvKiogVGhlIHZhbGlkIHZhbHVlIGZv
ciBmaWVsZCB0cmlhbHMgYWJvdmUuICovCiBSVENfRVhURVJOIE5TU3RyaW5nICogY29uc3Qga1JU
Q0ZpZWxkVHJpYWxFbmFibGVkVmFsdWU7CiAKLS8qKiBVc2UgYSBzdHJpbmcgcmV0dXJuZWQgYnkg
UlRDRmllbGRUcmlhbE1lZGlhblNsb3BlRmlsdGVyVmFsdWUgYXMgdGhlIHZhbHVlLiAqLwotUlRD
X0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IGtSVENGaWVsZFRyaWFsTWVkaWFuU2xvcGVGaWx0ZXJL
ZXk7Ci1SVENfRVhURVJOIE5TU3RyaW5nICpSVENGaWVsZFRyaWFsTWVkaWFuU2xvcGVGaWx0ZXJW
YWx1ZSgKLSAgICBzaXplX3Qgd2luZG93U2l6ZSwgZG91YmxlIHRocmVzaG9sZEdhaW4pOwotCi0v
KiogVXNlIGEgc3RyaW5nIHJldHVybmVkIGJ5IFJUQ0ZpZWxkVHJpYWxUcmVuZGxpbmVGaWx0ZXJW
YWx1ZSBhcyB0aGUgdmFsdWUuICovCi1SVENfRVhURVJOIE5TU3RyaW5nICogY29uc3Qga1JUQ0Zp
ZWxkVHJpYWxUcmVuZGxpbmVGaWx0ZXJLZXk7Ci0vKiogUmV0dXJucyBhIHZhbGlkIHZhbHVlIGZv
ciBrUlRDRmllbGRUcmlhbFRyZW5kbGluZUZpbHRlcktleS4gKi8KLVJUQ19FWFRFUk4gTlNTdHJp
bmcgKlJUQ0ZpZWxkVHJpYWxUcmVuZGxpbmVGaWx0ZXJWYWx1ZSgKLSAgICBzaXplX3Qgd2luZG93
U2l6ZSwgZG91YmxlIHNtb290aGluZ0NvZWZmLCBkb3VibGUgdGhyZXNob2xkR2Fpbik7Ci0KIC8q
KiBJbml0aWFsaXplIGZpZWxkIHRyaWFscyB1c2luZyBhIGRpY3Rpb25hcnkgbWFwcGluZyBmaWVs
ZCB0cmlhbCBrZXlzIHRvIHRoZWlyCiAgKiB2YWx1ZXMuIFNlZSBhYm92ZSBmb3IgdmFsaWQga2V5
cyBhbmQgdmFsdWVzLiBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyCiAgKiBjYWxsIGlu
dG8gV2ViUlRDLiBTZWU6IHdlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlh
bC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRmllbGRUcmlhbHMubW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5l
Y3Rpb24vUlRDRmllbGRUcmlhbHMubW0KaW5kZXggMjIxMmM3ZGVjOTcxNGI3OTliZDI5MWY1N2Zm
MTM2ZmQ4NTRjNjIwNi4uMTI3Y2U2ZmViODlmMzdkM2E0MTRiNTVjOTA3MzE4YTRjZDU0MzBhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0ZpZWxkVHJpYWxzLm1tCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENGaWVsZFRyaWFscy5tbQpAQCAtMjMsOSArMjMsNiBAQCBOU1N0cmluZyAqIGNvbnN0
IGtSVENGaWVsZFRyaWFsQXVkaW9Gb3JjZUFCV0VOb1RXQ0NLZXkgPSBAIldlYlJUQy1BdWRpby1B
QldFTm9UVwogTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbFNlbmRTaWRlQndlV2l0aE92
ZXJoZWFkS2V5ID0gQCJXZWJSVEMtU2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIjsKIE5TU3RyaW5n
ICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxGbGV4RmVjMDNBZHZlcnRpc2VkS2V5ID0gQCJXZWJSVEMt
RmxleEZFQy0wMy1BZHZlcnRpc2VkIjsKIE5TU3RyaW5nICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxG
bGV4RmVjMDNLZXkgPSBAIldlYlJUQy1GbGV4RkVDLTAzIjsKLU5TU3RyaW5nICogY29uc3Qga1JU
Q0ZpZWxkVHJpYWxJbXByb3ZlZEJpdHJhdGVFc3RpbWF0ZUtleSA9IEAiV2ViUlRDLUltcHJvdmVk
Qml0cmF0ZUVzdGltYXRlIjsKLU5TU3RyaW5nICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxNZWRpYW5T
bG9wZUZpbHRlcktleSA9IEAiV2ViUlRDLUJ3ZU1lZGlhblNsb3BlRmlsdGVyIjsKLU5TU3RyaW5n
ICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxUcmVuZGxpbmVGaWx0ZXJLZXkgPSBAIldlYlJUQy1Cd2VU
cmVuZGxpbmVGaWx0ZXIiOwogTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEgyNjRIaWdo
UHJvZmlsZUtleSA9IEAiV2ViUlRDLUgyNjRIaWdoUHJvZmlsZSI7CiBOU1N0cmluZyAqIGNvbnN0
IGtSVENGaWVsZFRyaWFsTWluaW1pemVSZXNhbXBsaW5nT25Nb2JpbGVLZXkgPQogICAgIEAiV2Vi
UlRDLUF1ZGlvLU1pbmltaXplUmVzYW1wbGluZ09uTW9iaWxlIjsKQEAgLTMzLDE4ICszMCw2IEBA
IE5TU3RyaW5nICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxFbmFibGVkVmFsdWUgPSBAIkVuYWJsZWQi
OwogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gZ0ZpZWxkVHJpYWxJbml0U3RyaW5n
OwogCi1OU1N0cmluZyAqUlRDRmllbGRUcmlhbE1lZGlhblNsb3BlRmlsdGVyVmFsdWUoCi0gICAg
c2l6ZV90IHdpbmRvd1NpemUsIGRvdWJsZSB0aHJlc2hvbGRHYWluKSB7Ci0gIE5TU3RyaW5nICpm
b3JtYXQgPSBAIkVuYWJsZWQtJXp1LCVsZiI7Ci0gIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpmb3JtYXQsIHdpbmRvd1NpemUsIHRocmVzaG9sZEdhaW5dOwotfQotCi1OU1N0cmlu
ZyAqUlRDRmllbGRUcmlhbFRyZW5kbGluZUZpbHRlclZhbHVlKAotICAgIHNpemVfdCB3aW5kb3dT
aXplLCBkb3VibGUgc21vb3RoaW5nQ29lZmYsIGRvdWJsZSB0aHJlc2hvbGRHYWluKSB7Ci0gIE5T
U3RyaW5nICpmb3JtYXQgPSBAIkVuYWJsZWQtJXp1LCVsZiwlbGYiOwotICByZXR1cm4gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCB3aW5kb3dTaXplLCBzbW9vdGhpbmdDb2VmZiwg
dGhyZXNob2xkR2Fpbl07Ci19Ci0KIHZvaWQgUlRDSW5pdEZpZWxkVHJpYWxEaWN0aW9uYXJ5KE5T
RGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqZmllbGRUcmlhbHMpIHsKICAgaWYg
KCFmaWVsZFRyaWFscykgewogICAgIFJUQ0xvZ1dhcm5pbmcoQCJObyBmaWVsZFRyaWFscyBwcm92
aWRlZC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbitQcml2
YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb24rUHJpdmF0ZS5oCmluZGV4IGI2
NDQwY2Q0MzRhODU3ZWJkN2EzMjE2ZjgyZmIzMzNiOTc3YjI0YzEuLmQyNmViMmU1OTI1NTRiZDIz
Y2ZiNGRiOGExODcxM2RjYzczMjExMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVy
Q29ubmVjdGlvbitQcml2YXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9u
K1ByaXZhdGUuaApAQCAtMzksNiArMzksOCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkRlbGVnYXRl
QWRhcHRlciA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbk9ic2VydmVyIHsKIAogICB2b2lkIE9uSWNl
Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0
YXRlIG5ld19zdGF0ZSkgb3ZlcnJpZGU7CiAKKyAgdm9pZCBPbkNvbm5lY3Rpb25DaGFuZ2UoUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSBvdmVy
cmlkZTsKKwogICB2b2lkIE9uSWNlR2F0aGVyaW5nQ2hhbmdlKFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpJY2VHYXRoZXJpbmdTdGF0ZSBuZXdfc3RhdGUpIG92ZXJyaWRlOwogCiAgIHZvaWQgT25J
Y2VDYW5kaWRhdGUoY29uc3QgSWNlQ2FuZGlkYXRlSW50ZXJmYWNlICpjYW5kaWRhdGUpIG92ZXJy
aWRlOwpAQCAtODUsMTEgKzg3LDE5IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uRGVsZWdhdGVBZGFw
dGVyIDogcHVibGljIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgewogKyAod2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlKW5hdGl2ZUljZUNvbm5lY3Rpb25T
dGF0ZUZvclN0YXRlOgogICAgICAgICAoUlRDSWNlQ29ubmVjdGlvblN0YXRlKXN0YXRlOwogCisr
ICh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlKW5h
dGl2ZUNvbm5lY3Rpb25TdGF0ZUZvclN0YXRlOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb25T
dGF0ZSlzdGF0ZTsKKwogKyAoUlRDSWNlQ29ubmVjdGlvblN0YXRlKWljZUNvbm5lY3Rpb25TdGF0
ZUZvck5hdGl2ZVN0YXRlOgogICAgICAgICAod2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6SWNlQ29ubmVjdGlvblN0YXRlKW5hdGl2ZVN0YXRlOwogCisrIChSVENQZWVyQ29ubmVjdGlv
blN0YXRlKWNvbm5lY3Rpb25TdGF0ZUZvck5hdGl2ZVN0YXRlOgorICAgICAgICAod2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSluYXRpdmVTdGF0ZTsK
KwogKyAoTlNTdHJpbmcgKilzdHJpbmdGb3JJY2VDb25uZWN0aW9uU3RhdGU6KFJUQ0ljZUNvbm5l
Y3Rpb25TdGF0ZSlzdGF0ZTsKIAorKyAoTlNTdHJpbmcgKilzdHJpbmdGb3JDb25uZWN0aW9uU3Rh
dGU6KFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUpc3RhdGU7CisKICsgKHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OkljZUdhdGhlcmluZ1N0YXRlKW5hdGl2ZUljZUdhdGhlcmluZ1N0YXRl
Rm9yU3RhdGU6CiAgICAgICAgIChSVENJY2VHYXRoZXJpbmdTdGF0ZSlzdGF0ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRD
UGVlckNvbm5lY3Rpb24uaAppbmRleCAwMTc5ZWMwZTI2ZGY5M2FiNTFlZTJiN2RmNTcyMmMxZjJm
ZjRjYmExLi4zOTNhNTBiYzg5ODRlYzk5YzAxNGI3NGU2MzQxZTVlN2FmMjZjNTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9h
cGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24v
UlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNTcsNiArNTcsMTYgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgUlRDSWNlQ29ubmVjdGlvblN0YXRlKSB7CiAgIFJUQ0ljZUNvbm5lY3Rpb25TdGF0
ZUNvdW50LAogfTsKIAorLyoqIFJlcHJlc2VudHMgdGhlIGNvbWJpbmVkIGljZStkdGxzIGNvbm5l
Y3Rpb24gc3RhdGUgb2YgdGhlIHBlZXIgY29ubmVjdGlvbi4gKi8KK3R5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUpIHsKKyAgUlRDUGVlckNvbm5lY3Rpb25T
dGF0ZU5ldywKKyAgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNvbm5lY3RpbmcsCisgIFJUQ1BlZXJD
b25uZWN0aW9uU3RhdGVDb25uZWN0ZWQsCisgIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVEaXNjb25u
ZWN0ZWQsCisgIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVGYWlsZWQsCisgIFJUQ1BlZXJDb25uZWN0
aW9uU3RhdGVDbG9zZWQsCit9OworCiAvKiogUmVwcmVzZW50cyB0aGUgaWNlIGdhdGhlcmluZyBz
dGF0ZSBvZiB0aGUgcGVlciBjb25uZWN0aW9uLiAqLwogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgUlRDSWNlR2F0aGVyaW5nU3RhdGUpIHsKICAgUlRDSWNlR2F0aGVyaW5nU3RhdGVOZXcsCkBA
IC0xMTUsMTEgKzEyNSwxNCBAQCBSVENfT0JKQ19FWFBPUlQKICAqICBUaGlzIGlzIG9ubHkgY2Fs
bGVkIHdpdGggUlRDU2RwU2VtYW50aWNzVW5pZmllZFBsYW4gc3BlY2lmaWVkLgogICovCiBAb3B0
aW9uYWwKKy8qKiBDYWxsZWQgYW55IHRpbWUgdGhlIFBlZXJDb25uZWN0aW9uU3RhdGUgY2hhbmdl
cy4gKi8KKy0gKHZvaWQpcGVlckNvbm5lY3Rpb246KFJUQ1BlZXJDb25uZWN0aW9uICopcGVlckNv
bm5lY3Rpb24KKyAgICBkaWRDaGFuZ2VDb25uZWN0aW9uU3RhdGU6KFJUQ1BlZXJDb25uZWN0aW9u
U3RhdGUpbmV3U3RhdGU7CisKIC0gKHZvaWQpcGVlckNvbm5lY3Rpb246KFJUQ1BlZXJDb25uZWN0
aW9uICopcGVlckNvbm5lY3Rpb24KICAgICBkaWRTdGFydFJlY2VpdmluZ09uVHJhbnNjZWl2ZXI6
KFJUQ1J0cFRyYW5zY2VpdmVyICopdHJhbnNjZWl2ZXI7CiAKIC8qKiBDYWxsZWQgd2hlbiBhIHJl
Y2VpdmVyIGFuZCBpdHMgdHJhY2sgYXJlIGNyZWF0ZWQuICovCi1Ab3B0aW9uYWwKIC0gKHZvaWQp
cGVlckNvbm5lY3Rpb246KFJUQ1BlZXJDb25uZWN0aW9uICopcGVlckNvbm5lY3Rpb24KICAgICAg
ICAgZGlkQWRkUmVjZWl2ZXI6KFJUQ1J0cFJlY2VpdmVyICopcnRwUmVjZWl2ZXIKICAgICAgICAg
ICAgICAgIHN0cmVhbXM6KE5TQXJyYXk8UlRDTWVkaWFTdHJlYW0gKj4gKiltZWRpYVN0cmVhbXM7
CkBAIC0xNDUsNiArMTU4LDcgQEAgUlRDX09CSkNfRVhQT1JUCiBAcHJvcGVydHkobm9uYXRvbWlj
LCByZWFkb25seSwgbnVsbGFibGUpIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiAqcmVtb3RlRGVzY3Jp
cHRpb247CiBAcHJvcGVydHkobm9uYXRvbWljLCByZWFkb25seSkgUlRDU2lnbmFsaW5nU3RhdGUg
c2lnbmFsaW5nU3RhdGU7CiBAcHJvcGVydHkobm9uYXRvbWljLCByZWFkb25seSkgUlRDSWNlQ29u
bmVjdGlvblN0YXRlIGljZUNvbm5lY3Rpb25TdGF0ZTsKK0Bwcm9wZXJ0eShub25hdG9taWMsIHJl
YWRvbmx5KSBSVENQZWVyQ29ubmVjdGlvblN0YXRlIGNvbm5lY3Rpb25TdGF0ZTsKIEBwcm9wZXJ0
eShub25hdG9taWMsIHJlYWRvbmx5KSBSVENJY2VHYXRoZXJpbmdTdGF0ZSBpY2VHYXRoZXJpbmdT
dGF0ZTsKIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBSVENDb25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNv
bm5lY3Rpb24ubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb24ubW0KaW5kZXggNTI3
NzQ4OTc0N2IwYjlkMzg4YTAzOWMwZjNjODA3MDI1Mjc3MmUyYy4uYjU5ZGFmZWMzNWZmOTIyNTQ5
MzNhNzRlOWJhMTUwZDc3NTU0ZDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJD
b25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbi5tbQpAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFwaS9qc2VwaWNl
Y2FuZGlkYXRlLmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogTlNTdHJpbmcgKiBjb25zdCBrUlRDUGVl
ckNvbm5lY3Rpb25FcnJvckRvbWFpbiA9CkBAIC0xNzQsMTEgKzE3NSwxNyBAQCB2b2lkIFBlZXJD
b25uZWN0aW9uRGVsZWdhdGVBZGFwdGVyOjpPblJlbmVnb3RpYXRpb25OZWVkZWQoKSB7CiAKIHZv
aWQgUGVlckNvbm5lY3Rpb25EZWxlZ2F0ZUFkYXB0ZXI6Ok9uSWNlQ29ubmVjdGlvbkNoYW5nZSgK
ICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0
ZSkgewotICBSVENJY2VDb25uZWN0aW9uU3RhdGUgc3RhdGUgPQotICAgICAgW1tSVENQZWVyQ29u
bmVjdGlvbiBjbGFzc10gaWNlQ29ubmVjdGlvblN0YXRlRm9yTmF0aXZlU3RhdGU6bmV3X3N0YXRl
XTsKLSAgUlRDUGVlckNvbm5lY3Rpb24gKnBlZXJfY29ubmVjdGlvbiA9IHBlZXJfY29ubmVjdGlv
bl87Ci0gIFtwZWVyX2Nvbm5lY3Rpb24uZGVsZWdhdGUgcGVlckNvbm5lY3Rpb246cGVlcl9jb25u
ZWN0aW9uCi0gICAgICAgICAgICAgICBkaWRDaGFuZ2VJY2VDb25uZWN0aW9uU3RhdGU6c3RhdGVd
OworICBSVENJY2VDb25uZWN0aW9uU3RhdGUgc3RhdGUgPSBbUlRDUGVlckNvbm5lY3Rpb24gaWNl
Q29ubmVjdGlvblN0YXRlRm9yTmF0aXZlU3RhdGU6bmV3X3N0YXRlXTsKKyAgW3BlZXJfY29ubmVj
dGlvbl8uZGVsZWdhdGUgcGVlckNvbm5lY3Rpb246cGVlcl9jb25uZWN0aW9uXyBkaWRDaGFuZ2VJ
Y2VDb25uZWN0aW9uU3RhdGU6c3RhdGVdOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uRGVsZWdh
dGVBZGFwdGVyOjpPbkNvbm5lY3Rpb25DaGFuZ2UoCisgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OlBlZXJDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSB7CisgIGlmIChbcGVlcl9jb25uZWN0
aW9uXy5kZWxlZ2F0ZQorICAgICAgICAgIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGVl
ckNvbm5lY3Rpb246ZGlkQ2hhbmdlQ29ubmVjdGlvblN0YXRlOildKSB7CisgICAgUlRDUGVlckNv
bm5lY3Rpb25TdGF0ZSBzdGF0ZSA9IFtSVENQZWVyQ29ubmVjdGlvbiBjb25uZWN0aW9uU3RhdGVG
b3JOYXRpdmVTdGF0ZTpuZXdfc3RhdGVdOworICAgIFtwZWVyX2Nvbm5lY3Rpb25fLmRlbGVnYXRl
IHBlZXJDb25uZWN0aW9uOnBlZXJfY29ubmVjdGlvbl8gZGlkQ2hhbmdlQ29ubmVjdGlvblN0YXRl
OnN0YXRlXTsKKyAgfQogfQogCiB2b2lkIFBlZXJDb25uZWN0aW9uRGVsZWdhdGVBZGFwdGVyOjpP
bkljZUdhdGhlcmluZ0NoYW5nZSgKQEAgLTMyMSw2ICszMjgsMTAgQEAgLSAoUlRDSWNlQ29ubmVj
dGlvblN0YXRlKWljZUNvbm5lY3Rpb25TdGF0ZSB7CiAgICAgICBfcGVlckNvbm5lY3Rpb24tPmlj
ZV9jb25uZWN0aW9uX3N0YXRlKCldOwogfQogCistIChSVENQZWVyQ29ubmVjdGlvblN0YXRlKWNv
bm5lY3Rpb25TdGF0ZSB7CisgIHJldHVybiBbW3NlbGYgY2xhc3NdIGNvbm5lY3Rpb25TdGF0ZUZv
ck5hdGl2ZVN0YXRlOl9wZWVyQ29ubmVjdGlvbi0+cGVlcl9jb25uZWN0aW9uX3N0YXRlKCldOwor
fQorCiAtIChSVENJY2VHYXRoZXJpbmdTdGF0ZSlpY2VHYXRoZXJpbmdTdGF0ZSB7CiAgIHJldHVy
biBbW3NlbGYgY2xhc3NdIGljZUdhdGhlcmluZ1N0YXRlRm9yTmF0aXZlU3RhdGU6CiAgICAgICBf
cGVlckNvbm5lY3Rpb24tPmljZV9nYXRoZXJpbmdfc3RhdGUoKV07CkBAIC02MzEsNiArNjQyLDU5
IEBAICsgKE5TU3RyaW5nICopc3RyaW5nRm9yU2lnbmFsaW5nU3RhdGU6KFJUQ1NpZ25hbGluZ1N0
YXRlKXN0YXRlIHsKICAgfQogfQogCisrICh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpQZWVyQ29ubmVjdGlvblN0YXRlKW5hdGl2ZUNvbm5lY3Rpb25TdGF0ZUZvclN0YXRlOgorICAg
ICAgICAoUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSlzdGF0ZSB7CisgIHN3aXRjaCAoc3RhdGUpIHsK
KyAgICBjYXNlIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVOZXc6CisgICAgICByZXR1cm4gd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a05ldzsKKyAg
ICBjYXNlIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVDb25uZWN0aW5nOgorICAgICAgcmV0dXJuIHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDb25u
ZWN0aW5nOworICAgIGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNvbm5lY3RlZDoKKyAgICAg
IHJldHVybiB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0
YXRlOjprQ29ubmVjdGVkOworICAgIGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUZhaWxlZDoK
KyAgICAgIHJldHVybiB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVj
dGlvblN0YXRlOjprRmFpbGVkOworICAgIGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZURpc2Nv
bm5lY3RlZDoKKyAgICAgIHJldHVybiB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQ
ZWVyQ29ubmVjdGlvblN0YXRlOjprRGlzY29ubmVjdGVkOworICAgIGNhc2UgUlRDUGVlckNvbm5l
Y3Rpb25TdGF0ZUNsb3NlZDoKKyAgICAgIHJldHVybiB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ2xvc2VkOworICB9Cit9CisKKysgKFJUQ1Bl
ZXJDb25uZWN0aW9uU3RhdGUpY29ubmVjdGlvblN0YXRlRm9yTmF0aXZlU3RhdGU6CisgICAgICAg
ICh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlKW5h
dGl2ZVN0YXRlIHsKKyAgc3dpdGNoIChuYXRpdmVTdGF0ZSkgeworICAgIGNhc2Ugd2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a05ldzoKKyAgICAg
IHJldHVybiBSVENQZWVyQ29ubmVjdGlvblN0YXRlTmV3OworICAgIGNhc2Ugd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3Rpbmc6Cisg
ICAgICByZXR1cm4gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNvbm5lY3Rpbmc7CisgICAgY2FzZSB3
ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29u
bmVjdGVkOgorICAgICAgcmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVDb25uZWN0ZWQ7Cisg
ICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0
YXRlOjprRmFpbGVkOgorICAgICAgcmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVGYWlsZWQ7
CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlv
blN0YXRlOjprRGlzY29ubmVjdGVkOgorICAgICAgcmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uU3Rh
dGVEaXNjb25uZWN0ZWQ7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ2xvc2VkOgorICAgICAgcmV0dXJuIFJUQ1BlZXJDb25u
ZWN0aW9uU3RhdGVDbG9zZWQ7CisgIH0KK30KKworKyAoTlNTdHJpbmcgKilzdHJpbmdGb3JDb25u
ZWN0aW9uU3RhdGU6KFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUpc3RhdGUgeworICBzd2l0Y2ggKHN0
YXRlKSB7CisgICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0YXRlTmV3OgorICAgICAgcmV0dXJu
IEAiTkVXIjsKKyAgICBjYXNlIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVDb25uZWN0aW5nOgorICAg
ICAgcmV0dXJuIEAiQ09OTkVDVElORyI7CisgICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0YXRl
Q29ubmVjdGVkOgorICAgICAgcmV0dXJuIEAiQ09OTkVDVEVEIjsKKyAgICBjYXNlIFJUQ1BlZXJD
b25uZWN0aW9uU3RhdGVGYWlsZWQ6CisgICAgICByZXR1cm4gQCJGQUlMRUQiOworICAgIGNhc2Ug
UlRDUGVlckNvbm5lY3Rpb25TdGF0ZURpc2Nvbm5lY3RlZDoKKyAgICAgIHJldHVybiBAIkRJU0NP
Tk5FQ1RFRCI7CisgICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0YXRlQ2xvc2VkOgorICAgICAg
cmV0dXJuIEAiQ0xPU0VEIjsKKyAgfQorfQorCiArICh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUpCiAgICAgbmF0aXZlSWNlQ29ubmVjdGlvblN0YXRl
Rm9yU3RhdGU6KFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSlzdGF0ZSB7CiAgIHN3aXRjaCAoc3RhdGUp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnkrTmF0
aXZlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5K05hdGl2ZS5oCmlu
ZGV4IDYwYWEwOGY3Y2EzYTAyM2ZhYTAzYzMzMjlmYmNlYWMxZTcxYTRlMmEuLjI3NTJjZjQxMTc2
NmI5MDQ2ZjQxMjMyMzJmMzRmNGE0NWE3MDFhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENQZWVyQ29ubmVjdGlvbkZhY3RvcnkrTmF0aXZlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1Bl
ZXJDb25uZWN0aW9uRmFjdG9yeStOYXRpdmUuaApAQCAtMTcsNiArMTcsNyBAQCBuYW1lc3BhY2Ug
d2VicnRjIHsKIGNsYXNzIEF1ZGlvRGV2aWNlTW9kdWxlOwogY2xhc3MgQXVkaW9FbmNvZGVyRmFj
dG9yeTsKIGNsYXNzIEF1ZGlvRGVjb2RlckZhY3Rvcnk7CitjbGFzcyBNZWRpYVRyYW5zcG9ydEZh
Y3Rvcnk7CiBjbGFzcyBWaWRlb0VuY29kZXJGYWN0b3J5OwogY2xhc3MgVmlkZW9EZWNvZGVyRmFj
dG9yeTsKIGNsYXNzIEF1ZGlvUHJvY2Vzc2luZzsKQEAgLTQ5LDYgKzUwLDI1IEBAIE5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9Qcm9jZXNz
aW5nTW9kdWxlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPilhdWRpb1Byb2Nlc3NpbmdNb2R1bGU7CiAK
Ky0gKGluc3RhbmNldHlwZSkKKyAgICBpbml0V2l0aE5hdGl2ZUF1ZGlvRW5jb2RlckZhY3Rvcnk6
CisgICAgICAgIChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0VuY29kZXJGYWN0b3J5
PilhdWRpb0VuY29kZXJGYWN0b3J5CisgICAgICAgICAgICBuYXRpdmVBdWRpb0RlY29kZXJGYWN0
b3J5OgorICAgICAgICAgICAgICAgIChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0Rl
Y29kZXJGYWN0b3J5PilhdWRpb0RlY29kZXJGYWN0b3J5CisgICAgICAgICAgICBuYXRpdmVWaWRl
b0VuY29kZXJGYWN0b3J5OgorICAgICAgICAgICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRj
OjpWaWRlb0VuY29kZXJGYWN0b3J5Pil2aWRlb0VuY29kZXJGYWN0b3J5CisgICAgICAgICAgICBu
YXRpdmVWaWRlb0RlY29kZXJGYWN0b3J5OgorICAgICAgICAgICAgICAgIChzdGQ6OnVuaXF1ZV9w
dHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5Pil2aWRlb0RlY29kZXJGYWN0b3J5CisgICAg
ICAgICAgICAgICAgICAgIGF1ZGlvRGV2aWNlTW9kdWxlOihudWxsYWJsZSB3ZWJydGM6OkF1ZGlv
RGV2aWNlTW9kdWxlICopYXVkaW9EZXZpY2VNb2R1bGUKKyAgICAgICAgICAgICAgICBhdWRpb1By
b2Nlc3NpbmdNb2R1bGU6CisgICAgICAgICAgICAgICAgICAgIChydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+KWF1ZGlvUHJvY2Vzc2luZ01vZHVsZQorICAgICAgICAg
ICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgKHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0RmFjdG9yeT4pbWVkaWFUcmFuc3BvcnRG
YWN0b3J5OworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbmNvZGVyRmFjdG9yeToobnVsbGFi
bGUgaWQ8UlRDVmlkZW9FbmNvZGVyRmFjdG9yeT4pZW5jb2RlckZhY3RvcnkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlY29kZXJGYWN0b3J5OihudWxsYWJsZSBpZDxSVENWaWRlb0RlY29kZXJG
YWN0b3J5PilkZWNvZGVyRmFjdG9yeQorICAgICAgICAgICAgICAgICBtZWRpYVRyYW5zcG9ydEZh
Y3Rvcnk6CisgICAgICAgICAgICAgICAgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVk
aWFUcmFuc3BvcnRGYWN0b3J5PiltZWRpYVRyYW5zcG9ydEZhY3Rvcnk7CiBAZW5kCiAKIE5TX0FT
U1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0
aW9uRmFjdG9yeS5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnkubW0K
aW5kZXggNDAzZGIwNDBmYjg2MjI2NDhkNDgzMmEwZWMyMDg2MDk3YWIzN2Q3OC4uNDg0NzZmMjM2
OGYwMTQ1MjQwZGViNTBlNDU0Y2U2OTM4OTc5Y2ZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9u
L1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeS5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNv
bm5lY3Rpb25GYWN0b3J5Lm1tCkBAIC01MCw2ICs1MCw3IEBACiAvLyBUT0RPKHpoaWh1YW5nKTog
UmVtb3ZlIG5vZ25jaGVjayBvbmNlIE1lZGlhRW5naW5lSW50ZXJmYWNlIGlzIG1vdmVkIHRvIEMr
KwogLy8gQVBJIGxheWVyLgogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1
ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5n
aW5lL3dlYnJ0Y21lZGlhZW5naW5lLmgiICAvLyBub2duY2hlY2sKIAogQGltcGxlbWVudGF0aW9u
IFJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeSB7CkBAIC04MCwxMiArODEsMTUgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXQgewogICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVWaWRlb0RlY29kZXJG
YWN0b3J5OndlYnJ0Yzo6T2JqQ1RvTmF0aXZlVmlkZW9EZWNvZGVyRmFjdG9yeSgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tSVENWaWRlb0Rl
Y29kZXJGYWN0b3J5SDI2NCBhbGxvY10gaW5pdF0pCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXVkaW9EZXZpY2VNb2R1bGU6W3NlbGYgYXVkaW9EZXZpY2VNb2R1bGVdCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6bnVsbHB0cl07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6bnVsbHB0cgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5Om51bGxwdHJdOwog
I2VuZGlmCiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVuY29kZXJGYWN0b3J5OihudWxs
YWJsZSBpZDxSVENWaWRlb0VuY29kZXJGYWN0b3J5PillbmNvZGVyRmFjdG9yeQotICAgICAgICAg
ICAgICAgICAgICAgICAgZGVjb2RlckZhY3Rvcnk6KG51bGxhYmxlIGlkPFJUQ1ZpZGVvRGVjb2Rl
ckZhY3Rvcnk+KWRlY29kZXJGYWN0b3J5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY29k
ZXJGYWN0b3J5OihudWxsYWJsZSBpZDxSVENWaWRlb0RlY29kZXJGYWN0b3J5PilkZWNvZGVyRmFj
dG9yeQorICAgICAgICAgICAgICAgICBtZWRpYVRyYW5zcG9ydEZhY3Rvcnk6CisgICAgICAgICAg
ICAgICAgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRGYWN0b3J5
PiltZWRpYVRyYW5zcG9ydEZhY3RvcnkgewogI2lmZGVmIEhBVkVfTk9fTUVESUEKICAgcmV0dXJu
IFtzZWxmIGluaXRXaXRoTm9NZWRpYV07CiAjZWxzZQpAQCAtMTAyLDkgKzEwNiwxNiBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhFbmNvZGVyRmFjdG9yeToobnVsbGFibGUgaWQ8UlRDVmlkZW9F
bmNvZGVyRmFjdG9yeT4pZW5jbwogICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVWaWRlb0Vu
Y29kZXJGYWN0b3J5OnN0ZDo6bW92ZShuYXRpdmVfZW5jb2Rlcl9mYWN0b3J5KQogICAgICAgICAg
ICAgICAgICAgICAgICBuYXRpdmVWaWRlb0RlY29kZXJGYWN0b3J5OnN0ZDo6bW92ZShuYXRpdmVf
ZGVjb2Rlcl9mYWN0b3J5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGV2
aWNlTW9kdWxlOltzZWxmIGF1ZGlvRGV2aWNlTW9kdWxlXQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOm51bGxwdHJdOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOm51bGxwdHIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9yeTpzdGQ6Om1vdmUobWVkaWFUcmFuc3BvcnRG
YWN0b3J5KV07CiAjZW5kaWYKIH0KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVuY29kZXJGYWN0
b3J5OihudWxsYWJsZSBpZDxSVENWaWRlb0VuY29kZXJGYWN0b3J5PillbmNvZGVyRmFjdG9yeQor
ICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlckZhY3Rvcnk6KG51bGxhYmxlIGlkPFJUQ1Zp
ZGVvRGVjb2RlckZhY3Rvcnk+KWRlY29kZXJGYWN0b3J5IHsKKyAgcmV0dXJuIFtzZWxmIGluaXRX
aXRoRW5jb2RlckZhY3Rvcnk6ZW5jb2RlckZhY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAg
ZGVjb2RlckZhY3Rvcnk6ZGVjb2RlckZhY3RvcnkKKyAgICAgICAgICAgICAgICBtZWRpYVRyYW5z
cG9ydEZhY3Rvcnk6bnVsbHB0cl07Cit9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0TmF0aXZlIHsK
ICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKQEAgLTE1MiwyMCArMTYzLDU3IEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZUF1ZGlvRW5jb2RlckZhY3Rvcnk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobnVsbGFibGUgd2VicnRjOjpBdWRpb0RldmljZU1v
ZHVsZSAqKWF1ZGlvRGV2aWNlTW9kdWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVk
aW9Qcm9jZXNzaW5nTW9kdWxlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPilhdWRpb1Byb2Nlc3NpbmdN
b2R1bGUgeworICByZXR1cm4gW3NlbGYgaW5pdFdpdGhOYXRpdmVBdWRpb0VuY29kZXJGYWN0b3J5
OmF1ZGlvRW5jb2RlckZhY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlQXVkaW9E
ZWNvZGVyRmFjdG9yeTphdWRpb0RlY29kZXJGYWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAg
IG5hdGl2ZVZpZGVvRW5jb2RlckZhY3Rvcnk6c3RkOjptb3ZlKHZpZGVvRW5jb2RlckZhY3Rvcnkp
CisgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRGVjb2RlckZhY3Rvcnk6c3RkOjpt
b3ZlKHZpZGVvRGVjb2RlckZhY3RvcnkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXVkaW9EZXZpY2VNb2R1bGU6YXVkaW9EZXZpY2VNb2R1bGUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF1ZGlvUHJvY2Vzc2luZ01vZHVsZTphdWRpb1Byb2Nlc3NpbmdNb2R1bGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9yeTpudWxscHRyXTsKK30K
KworLSAoaW5zdGFuY2V0eXBlKQorICAgIGluaXRXaXRoTmF0aXZlQXVkaW9FbmNvZGVyRmFjdG9y
eToKKyAgICAgICAgKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rv
cnk+KWF1ZGlvRW5jb2RlckZhY3RvcnkKKyAgICAgICAgICAgIG5hdGl2ZUF1ZGlvRGVjb2RlckZh
Y3Rvcnk6CisgICAgICAgICAgICAgICAgKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlv
RGVjb2RlckZhY3Rvcnk+KWF1ZGlvRGVjb2RlckZhY3RvcnkKKyAgICAgICAgICAgIG5hdGl2ZVZp
ZGVvRW5jb2RlckZhY3Rvcnk6CisgICAgICAgICAgICAgICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+KXZpZGVvRW5jb2RlckZhY3RvcnkKKyAgICAgICAgICAg
IG5hdGl2ZVZpZGVvRGVjb2RlckZhY3Rvcnk6CisgICAgICAgICAgICAgICAgKHN0ZDo6dW5pcXVl
X3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+KXZpZGVvRGVjb2RlckZhY3RvcnkKKyAg
ICAgICAgICAgICAgICAgICAgYXVkaW9EZXZpY2VNb2R1bGU6KG51bGxhYmxlIHdlYnJ0Yzo6QXVk
aW9EZXZpY2VNb2R1bGUgKilhdWRpb0RldmljZU1vZHVsZQorICAgICAgICAgICAgICAgIGF1ZGlv
UHJvY2Vzc2luZ01vZHVsZToKKyAgICAgICAgICAgICAgICAgICAgKHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4pYXVkaW9Qcm9jZXNzaW5nTW9kdWxlCisgICAgICAg
ICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAoc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRGYWN0b3J5PiltZWRpYVRyYW5zcG9y
dEZhY3RvcnkgewogI2lmZGVmIEhBVkVfTk9fTUVESUEKICAgcmV0dXJuIFtzZWxmIGluaXRXaXRo
Tm9NZWRpYV07CiAjZWxzZQogICBpZiAoc2VsZiA9IFtzZWxmIGluaXROYXRpdmVdKSB7Ci0gICAg
X25hdGl2ZUZhY3RvcnkgPSB3ZWJydGM6OkNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeShfbmV0
d29ya1RocmVhZC5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF93b3JrZXJUaHJlYWQuZ2V0KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2lnbmFsaW5nVGhyZWFk
LmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXVkaW9EZXZpY2VNb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0VuY29kZXJGYWN0b3J5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9E
ZWNvZGVyRmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh2aWRlb0VuY29kZXJGYWN0b3J5KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92
ZSh2aWRlb0RlY29kZXJGYWN0b3J5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsICAvLyBhdWRpbyBtaXhlcgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9Q
cm9jZXNzaW5nTW9kdWxlKTsKKyAgICBpZiAoIWF1ZGlvUHJvY2Vzc2luZ01vZHVsZSkgYXVkaW9Q
cm9jZXNzaW5nTW9kdWxlID0gd2VicnRjOjpBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRl
KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+
IG1lZGlhX2VuZ2luZSA9CisgICAgICAgIGNyaWNrZXQ6OldlYlJ0Y01lZGlhRW5naW5lRmFjdG9y
eTo6Q3JlYXRlKGF1ZGlvRGV2aWNlTW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0VuY29kZXJGYWN0b3J5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0RlY29kZXJGYWN0b3J5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1vdmUodmlkZW9FbmNvZGVyRmFjdG9yeSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh2aWRlb0RlY29kZXJGYWN0b3J5KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwg
IC8vIGF1ZGlvIG1peGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF1ZGlvUHJvY2Vzc2luZ01vZHVsZSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpDYWxsRmFjdG9yeUludGVyZmFjZT4gY2FsbF9mYWN0b3J5ID0gd2VicnRjOjpDcmVh
dGVDYWxsRmFjdG9yeSgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6UnRjRXZlbnRM
b2dGYWN0b3J5SW50ZXJmYWNlPiBldmVudF9sb2dfZmFjdG9yeSA9CisgICAgICAgIHdlYnJ0Yzo6
Q3JlYXRlUnRjRXZlbnRMb2dGYWN0b3J5KCk7CisgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkZh
Y3RvcnlEZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzOworICAgIGRlcGVuZGVuY2llcy5uZXR3b3Jr
X3RocmVhZCA9IF9uZXR3b3JrVGhyZWFkLmdldCgpOworICAgIGRlcGVuZGVuY2llcy53b3JrZXJf
dGhyZWFkID0gX3dvcmtlclRocmVhZC5nZXQoKTsKKyAgICBkZXBlbmRlbmNpZXMuc2lnbmFsaW5n
X3RocmVhZCA9IF9zaWduYWxpbmdUaHJlYWQuZ2V0KCk7CisgICAgZGVwZW5kZW5jaWVzLm1lZGlh
X2VuZ2luZSA9IHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpOworICAgIGRlcGVuZGVuY2llcy5jYWxs
X2ZhY3RvcnkgPSBzdGQ6Om1vdmUoY2FsbF9mYWN0b3J5KTsKKyAgICBkZXBlbmRlbmNpZXMuZXZl
bnRfbG9nX2ZhY3RvcnkgPSBzdGQ6Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpOworICAgIGRlcGVu
ZGVuY2llcy5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9IHN0ZDo6bW92ZShtZWRpYVRyYW5zcG9y
dEZhY3RvcnkpOworICAgIF9uYXRpdmVGYWN0b3J5ID0gd2VicnRjOjpDcmVhdGVNb2R1bGFyUGVl
ckNvbm5lY3Rpb25GYWN0b3J5KHN0ZDo6bW92ZShkZXBlbmRlbmNpZXMpKTsKICAgICBOU0Fzc2Vy
dChfbmF0aXZlRmFjdG9yeSwgQCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBQZWVyQ29ubmVjdGlvbkZh
Y3RvcnkhIik7CiAgIH0KICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24v
UlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlci5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVy
Q29ubmVjdGlvbkZhY3RvcnlCdWlsZGVyLm1tCmluZGV4IGEyNmE2MzllMjhlNDRmMjFiOGMyNzU2
ZDRmZDBjMjEzN2QyNzExNWMuLjBhZGFhMzBlNGYwODg5NDZiNmRmNDc1MDRmYzViOTExODlmYmVh
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlCdWls
ZGVyLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlCdWlsZGVy
Lm1tCkBAIC0xMyw2ICsxMyw3IEBACiAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlv
X2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5j
b2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgog
I2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKQEAgLTI1
LDYgKzI2LDcgQEAgQGltcGxlbWVudGF0aW9uIFJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxk
ZXIgewogICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiBf
YXVkaW9EZWNvZGVyRmFjdG9yeTsKICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9E
ZXZpY2VNb2R1bGU+IF9hdWRpb0RldmljZU1vZHVsZTsKICAgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPiBfYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOworICBzdGQ6OnVu
aXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IF9tZWRpYVRyYW5zcG9ydEZh
Y3Rvcnk7CiB9CiAKICsgKFJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIgKilidWlsZGVy
IHsKQEAgLTM4LDcgKzQwLDggQEAgLSAoUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5ICopY3JlYXRl
UGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZl
VmlkZW9FbmNvZGVyRmFjdG9yeTpzdGQ6Om1vdmUoX3ZpZGVvRW5jb2RlckZhY3RvcnkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRGVjb2RlckZhY3Rvcnk6c3RkOjptb3Zl
KF92aWRlb0RlY29kZXJGYWN0b3J5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1ZGlvRGV2aWNlTW9kdWxlOl9hdWRpb0RldmljZU1vZHVsZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOl9hdWRpb1Byb2Nlc3NpbmdNb2R1bGVd
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOl9h
dWRpb1Byb2Nlc3NpbmdNb2R1bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlh
VHJhbnNwb3J0RmFjdG9yeTpzdGQ6Om1vdmUoX21lZGlhVHJhbnNwb3J0RmFjdG9yeSldOwogfQog
CiAtICh2b2lkKXNldFZpZGVvRW5jb2RlckZhY3Rvcnk6KHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6
OlZpZGVvRW5jb2RlckZhY3Rvcnk+KXZpZGVvRW5jb2RlckZhY3RvcnkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3Bl
ZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeU9wdGlvbnMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlPcHRpb25zLmgKaW5kZXggYWYzMjdmOTg3YjI3
YmNhNzdiMTQ4ZDMwZjk4MGQ5NjI2NDZiM2RmNy4uNGJlYzg2OTViZGJmMTk3OWY1MDczOWVmOTVj
NjRhZGUxMzU5MGIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9u
RmFjdG9yeU9wdGlvbnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb25GYWN0
b3J5T3B0aW9ucy5oCkBAIC0zMSwxMCArMzEsNiBAQCBSVENfT0JKQ19FWFBPUlQKIAogQHByb3Bl
cnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIGlnbm9yZUV0aGVybmV0TmV0d29ya0FkYXB0ZXI7
CiAKLUBwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9PTCBlbmFibGVBZXMxMjhTaGExXzMy
Q3J5cHRvQ2lwaGVyOwotCi1AcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgZW5hYmxl
R2NtQ3J5cHRvU3VpdGVzOwotCiAtIChpbnN0YW5jZXR5cGUpaW5pdCBOU19ERVNJR05BVEVEX0lO
SVRJQUxJWkVSOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5l
Y3Rpb25GYWN0b3J5T3B0aW9ucy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZh
Y3RvcnlPcHRpb25zLm1tCmluZGV4IDEwM2ExMzAzOTBjMDYyYmM2ZWM3NmNhMGFlNzdjMGY1MmZl
YzNmZTkuLmYwY2M2YTZjODFmMGMxMWVmNjIyY2UyYjNlMjgzZTI5M2JkMjBhMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlPcHRpb25zLm1tCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9w
ZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlPcHRpb25zLm1tCkBAIC0zNCw4
ICszNCw2IEBAIEBzeW50aGVzaXplIGlnbm9yZVZQTk5ldHdvcmtBZGFwdGVyID0gX2lnbm9yZVZQ
Tk5ldHdvcmtBZGFwdGVyOwogQHN5bnRoZXNpemUgaWdub3JlQ2VsbHVsYXJOZXR3b3JrQWRhcHRl
ciA9IF9pZ25vcmVDZWxsdWxhck5ldHdvcmtBZGFwdGVyOwogQHN5bnRoZXNpemUgaWdub3JlV2lG
aU5ldHdvcmtBZGFwdGVyID0gX2lnbm9yZVdpRmlOZXR3b3JrQWRhcHRlcjsKIEBzeW50aGVzaXpl
IGlnbm9yZUV0aGVybmV0TmV0d29ya0FkYXB0ZXIgPSBfaWdub3JlRXRoZXJuZXROZXR3b3JrQWRh
cHRlcjsKLUBzeW50aGVzaXplIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIgPSBfZW5h
YmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjsKLUBzeW50aGVzaXplIGVuYWJsZUdjbUNyeXB0
b1N1aXRlcyA9IF9lbmFibGVHY21DcnlwdG9TdWl0ZXM7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0
IHsKICAgcmV0dXJuIFtzdXBlciBpbml0XTsKQEAgLTUyLDkgKzUwLDYgQEAgLSAod2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U6Ok9wdGlvbnMpbmF0aXZlT3B0aW9ucyB7CiAg
IHNldE5ldHdvcmtCaXQoJm9wdGlvbnMsIHJ0Yzo6QURBUFRFUl9UWVBFX1dJRkksIHNlbGYuaWdu
b3JlV2lGaU5ldHdvcmtBZGFwdGVyKTsKICAgc2V0TmV0d29ya0JpdCgmb3B0aW9ucywgcnRjOjpB
REFQVEVSX1RZUEVfRVRIRVJORVQsIHNlbGYuaWdub3JlRXRoZXJuZXROZXR3b3JrQWRhcHRlcik7
CiAKLSAgb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRv
X2NpcGhlciA9IHNlbGYuZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjsKLSAgb3B0aW9u
cy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSBzZWxmLmVuYWJsZUdj
bUNyeXB0b1N1aXRlczsKLQogICByZXR1cm4gb3B0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJj
b25uZWN0aW9uL1JUQ1J0cFRyYW5zY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUnRwVHJhbnNj
ZWl2ZXIuaAppbmRleCA4Yjk2MmU0ODg0YjE0MmYyOWI0NjI2YmE3MGQ0ODZlMmIyZjliNjc1Li44
ZWYzZmMxZDQyZTdhMzAxNzg2MDhlMzY0MWFlOThkZWM3YmE3Zjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNv
bm5lY3Rpb24vUlRDUnRwVHJhbnNjZWl2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUnRwVHJh
bnNjZWl2ZXIuaApAQCAtMjgsNiArMjgsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBS
VENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbikgewogICogIFJUQ1BlZXJDb25uZWN0aW9uLmFkZFRy
YW5zY2VpdmVyLgogICogIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvI2RvbS1ydGNy
dHB0cmFuc2NlaXZlcmluaXQKICAqLworUlRDX09CSkNfRVhQT1JUCiBAaW50ZXJmYWNlIFJUQ1J0
cFRyYW5zY2VpdmVySW5pdCA6IE5TT2JqZWN0CiAKIC8qKiBEaXJlY3Rpb24gb2YgdGhlIFJUQ1J0
cFRyYW5zY2VpdmVyLiBTZWUgUlRDUnRwVHJhbnNjZWl2ZXIuZGlyZWN0aW9uLiAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvU291cmNlK1ByaXZhdGUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlv
bi9SVENWaWRlb1NvdXJjZStQcml2YXRlLmgKaW5kZXggMjQ0MWUwY2RiZTYyNDhhYWViYjNlODhl
ZTQwOTI1N2Q0NGQwZWZlNi4uODI4YWFkODdiZDA3NDk4Y2U5NDJlMjg1MWRkOTVhMGJkOTFhYjk2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvU291cmNlK1ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
cGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9Tb3VyY2UrUHJpdmF0ZS5oCkBAIC0xMyw2ICsxMyw3IEBA
CiAjaW1wb3J0ICJSVENNZWRpYVNvdXJjZStQcml2YXRlLmgiCiAKICNpbmNsdWRlICJhcGkvbWVk
aWFzdHJlYW1pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKIAogTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENMb2dnaW5nLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0xvZ2dp
bmcuaAppbmRleCBiZTYyZGIyNWI1NjljODQ0M2VlMDUyNWNiMjg1YWZkYzU2YzYxZmZjLi5iMjBh
NGI0ZDQyOGI1ODA2MDBlMDc0NjRjMzY2MDI0MWVlZDEzM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0xvZ2dp
bmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9iYXNlL1JUQ0xvZ2dpbmcuaApAQCAtMTQsMTAgKzE0LDEyIEBACiAKIC8vIFN1YnNldCBv
ZiBydGM6OkxvZ2dpbmdTZXZlcml0eS4KIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFJUQ0xv
Z2dpbmdTZXZlcml0eSkgeworICBSVENMb2dnaW5nU2V2ZXJpdHlTZW5zaXRpdmUsCiAgIFJUQ0xv
Z2dpbmdTZXZlcml0eVZlcmJvc2UsCiAgIFJUQ0xvZ2dpbmdTZXZlcml0eUluZm8sCiAgIFJUQ0xv
Z2dpbmdTZXZlcml0eVdhcm5pbmcsCiAgIFJUQ0xvZ2dpbmdTZXZlcml0eUVycm9yLAorICBSVENM
b2dnaW5nU2V2ZXJpdHlOb25lLAogfTsKIAogLy8gV3JhcHBlciBmb3IgQysrIFJUQ19MT0coc2V2
KSBtYWNyb3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0xvZ2dpbmcubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0xvZ2dpbmcubW0KaW5kZXgg
NWM4ZjlmYjRmOGJmOTQ0ZjE4MThmNDQ4NGRhZmNhNTQzMGY2MWE5YS4uM2FhZTQ3YTI0MGNjNDAw
YTJiMmZmMGIwYmYxYmYwMzQ1NDM2OTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENMb2dnaW5nLm1tCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2Uv
UlRDTG9nZ2luZy5tbQpAQCAtMTQsNiArMTQsOCBAQAogCiBydGM6OkxvZ2dpbmdTZXZlcml0eSBS
VENHZXROYXRpdmVMb2dnaW5nU2V2ZXJpdHkoUlRDTG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5KSB7
CiAgIHN3aXRjaCAoc2V2ZXJpdHkpIHsKKyAgICBjYXNlIFJUQ0xvZ2dpbmdTZXZlcml0eVNlbnNp
dGl2ZToKKyAgICAgIHJldHVybiBydGM6OkxTX1NFTlNJVElWRTsKICAgICBjYXNlIFJUQ0xvZ2dp
bmdTZXZlcml0eVZlcmJvc2U6CiAgICAgICByZXR1cm4gcnRjOjpMU19WRVJCT1NFOwogICAgIGNh
c2UgUlRDTG9nZ2luZ1NldmVyaXR5SW5mbzoKQEAgLTIyLDYgKzI0LDggQEAgcnRjOjpMb2dnaW5n
U2V2ZXJpdHkgUlRDR2V0TmF0aXZlTG9nZ2luZ1NldmVyaXR5KFJUQ0xvZ2dpbmdTZXZlcml0eSBz
ZXZlcml0eSkgewogICAgICAgcmV0dXJuIHJ0Yzo6TFNfV0FSTklORzsKICAgICBjYXNlIFJUQ0xv
Z2dpbmdTZXZlcml0eUVycm9yOgogICAgICAgcmV0dXJuIHJ0Yzo6TFNfRVJST1I7CisgICAgY2Fz
ZSBSVENMb2dnaW5nU2V2ZXJpdHlOb25lOgorICAgICAgcmV0dXJuIHJ0Yzo6TFNfTk9ORTsKICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL2NhcHR1cmVyL1JUQ0NhbWVyYVZpZGVvQ2FwdHVyZXIu
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvY2FwdHVyZXIvUlRDQ2FtZXJhVmlkZW9DYXB0dXJlci5tCmluZGV4IDI5MDk0MDVl
N2Q4YzUxMWM1ODAwNDhjMzgxZGJmM2ZiYTMyZWRlOTcuLmRiODMzYjM5OGNiZjFjYzEyMTFkOTk2
ZDNiMjFmOTc1NzIyNDg4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvY2FwdHVyZXIvUlRDQ2FtZXJhVmlk
ZW9DYXB0dXJlci5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvY2FwdHVyZXIvUlRDQ2FtZXJhVmlkZW9DYXB0dXJlci5t
CkBAIC0yNiwxOCArMjYsMTggQEAKIAogQGludGVyZmFjZSBSVENDYW1lcmFWaWRlb0NhcHR1cmVy
ICgpPEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFNhbXBsZUJ1ZmZlckRlbGVnYXRlPgogQHByb3Bl
cnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIGRpc3BhdGNoX3F1ZXVlX3QgZnJhbWVRdWV1ZTsKK0Bw
cm9wZXJ0eShub25hdG9taWMsIHN0cm9uZykgQVZDYXB0dXJlRGV2aWNlICpjdXJyZW50RGV2aWNl
OworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIGhhc1JldHJpZWRPbkZhdGFsRXJy
b3I7CitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgaXNSdW5uaW5nOworLy8gV2ls
bCB0aGUgc2Vzc2lvbiBiZSBydW5uaW5nIG9uY2UgYWxsIGFzeW5jaHJvbm91cyBvcGVyYXRpb25z
IGhhdmUgYmVlbiBjb21wbGV0ZWQ/CitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wg
d2lsbEJlUnVubmluZzsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFJUQ0NhbWVyYVZpZGVvQ2Fw
dHVyZXIgewogICBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQgKl92aWRlb0RhdGFPdXRwdXQ7CiAg
IEFWQ2FwdHVyZVNlc3Npb24gKl9jYXB0dXJlU2Vzc2lvbjsKLSAgQVZDYXB0dXJlRGV2aWNlICpf
Y3VycmVudERldmljZTsKICAgRm91ckNoYXJDb2RlIF9wcmVmZXJyZWRPdXRwdXRQaXhlbEZvcm1h
dDsKICAgRm91ckNoYXJDb2RlIF9vdXRwdXRQaXhlbEZvcm1hdDsKLSAgQk9PTCBfaGFzUmV0cmll
ZE9uRmF0YWxFcnJvcjsKLSAgQk9PTCBfaXNSdW5uaW5nOwotICAvLyBXaWxsIHRoZSBzZXNzaW9u
IGJlIHJ1bm5pbmcgb25jZSBhbGwgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMgaGF2ZSBiZWVuIGNv
bXBsZXRlZD8KLSAgQk9PTCBfd2lsbEJlUnVubmluZzsKICAgUlRDVmlkZW9Sb3RhdGlvbiBfcm90
YXRpb247CiAjaWYgVEFSR0VUX09TX0lQSE9ORQogICBVSURldmljZU9yaWVudGF0aW9uIF9vcmll
bnRhdGlvbjsKQEAgLTQ2LDYgKzQ2LDEwIEBAIEBpbXBsZW1lbnRhdGlvbiBSVENDYW1lcmFWaWRl
b0NhcHR1cmVyIHsKIAogQHN5bnRoZXNpemUgZnJhbWVRdWV1ZSA9IF9mcmFtZVF1ZXVlOwogQHN5
bnRoZXNpemUgY2FwdHVyZVNlc3Npb24gPSBfY2FwdHVyZVNlc3Npb247CitAc3ludGhlc2l6ZSBj
dXJyZW50RGV2aWNlID0gX2N1cnJlbnREZXZpY2U7CitAc3ludGhlc2l6ZSBoYXNSZXRyaWVkT25G
YXRhbEVycm9yID0gX2hhc1JldHJpZWRPbkZhdGFsRXJyb3I7CitAc3ludGhlc2l6ZSBpc1J1bm5p
bmcgPSBfaXNSdW5uaW5nOworQHN5bnRoZXNpemUgd2lsbEJlUnVubmluZyA9IF93aWxsQmVSdW5u
aW5nOwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdCB7CiAgIHJldHVybiBbc2VsZiBpbml0V2l0aERl
bGVnYXRlOm5pbCBjYXB0dXJlU2Vzc2lvbjpbW0FWQ2FwdHVyZVNlc3Npb24gYWxsb2NdIGluaXRd
XTsKQEAgLTE1NywyNSArMTYxLDI2IEBAIC0gKHZvaWQpc3RhcnRDYXB0dXJlV2l0aERldmljZToo
QVZDYXB0dXJlRGV2aWNlICopZGV2aWNlCiAgICAgICAgICAgICAgICAgICAgICAgW1tVSURldmlj
ZSBjdXJyZW50RGV2aWNlXSBiZWdpbkdlbmVyYXRpbmdEZXZpY2VPcmllbnRhdGlvbk5vdGlmaWNh
dGlvbnNdOwogI2VuZGlmCiAKLSAgICAgICAgICAgICAgICAgICAgICBfY3VycmVudERldmljZSA9
IGRldmljZTsKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnREZXZpY2UgPSBkZXZp
Y2U7CiAKICAgICAgICAgICAgICAgICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIVtfY3VycmVudERldmljZSBsb2NrRm9yQ29uZmlndXJhdGlv
bjomZXJyb3JdKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSVENMb2dFcnJvcigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAIkZhaWxlZCB0byBsb2NrIGRldmljZSAlQC4gRXJyb3I6
ICVAIiwgX2N1cnJlbnREZXZpY2UsIGVycm9yLnVzZXJJbmZvKTsKKyAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIVtzZWxmLmN1cnJlbnREZXZpY2UgbG9ja0ZvckNvbmZpZ3VyYXRpb246JmVycm9y
XSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUlRDTG9nRXJyb3IoQCJGYWlsZWQgdG8gbG9j
ayBkZXZpY2UgJUAuIEVycm9yOiAlQCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmN1cnJlbnREZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvci51c2VySW5mbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGxl
dGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXJyb3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgX3dpbGxCZVJ1bm5pbmcgPSBOTzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
d2lsbEJlUnVubmluZyA9IE5POwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICBbc2VsZiByZWNvbmZp
Z3VyZUNhcHR1cmVTZXNzaW9uSW5wdXRdOwogICAgICAgICAgICAgICAgICAgICAgIFtzZWxmIHVw
ZGF0ZU9yaWVudGF0aW9uXTsKICAgICAgICAgICAgICAgICAgICAgICBbc2VsZiB1cGRhdGVEZXZp
Y2VDYXB0dXJlRm9ybWF0OmZvcm1hdCBmcHM6ZnBzXTsKICAgICAgICAgICAgICAgICAgICAgICBb
c2VsZiB1cGRhdGVWaWRlb0RhdGFPdXRwdXRQaXhlbEZvcm1hdDpmb3JtYXRdOwotICAgICAgICAg
ICAgICAgICAgICAgIFtfY2FwdHVyZVNlc3Npb24gc3RhcnRSdW5uaW5nXTsKLSAgICAgICAgICAg
ICAgICAgICAgICBbX2N1cnJlbnREZXZpY2UgdW5sb2NrRm9yQ29uZmlndXJhdGlvbl07Ci0gICAg
ICAgICAgICAgICAgICAgICAgX2lzUnVubmluZyA9IFlFUzsKKyAgICAgICAgICAgICAgICAgICAg
ICBbc2VsZi5jYXB0dXJlU2Vzc2lvbiBzdGFydFJ1bm5pbmddOworICAgICAgICAgICAgICAgICAg
ICAgIFtzZWxmLmN1cnJlbnREZXZpY2UgdW5sb2NrRm9yQ29uZmlndXJhdGlvbl07CisgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5pc1J1bm5pbmcgPSBZRVM7CiAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihuaWwpOwogICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE4OCwxNiAr
MTkzLDE2IEBAIC0gKHZvaWQpc3RvcENhcHR1cmVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KG51bGxh
YmxlIHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kCiAgICAgICBkaXNwYXRjaEFzeW5jT25U
eXBlOlJUQ0Rpc3BhdGNoZXJUeXBlQ2FwdHVyZVNlc3Npb24KICAgICAgICAgICAgICAgICAgICAg
YmxvY2s6XnsKICAgICAgICAgICAgICAgICAgICAgICBSVENMb2dJbmZvKCJTdG9wIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgX2N1cnJlbnREZXZpY2UgPSBuaWw7Ci0gICAgICAgICAgICAgICAg
ICAgICAgZm9yIChBVkNhcHR1cmVEZXZpY2VJbnB1dCAqb2xkSW5wdXQgaW4gW19jYXB0dXJlU2Vz
c2lvbi5pbnB1dHMgY29weV0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFtfY2FwdHVyZVNl
c3Npb24gcmVtb3ZlSW5wdXQ6b2xkSW5wdXRdOworICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
Y3VycmVudERldmljZSA9IG5pbDsKKyAgICAgICAgICAgICAgICAgICAgICBmb3IgKEFWQ2FwdHVy
ZURldmljZUlucHV0ICpvbGRJbnB1dCBpbiBbc2VsZi5jYXB0dXJlU2Vzc2lvbi5pbnB1dHMgY29w
eV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmNhcHR1cmVTZXNzaW9uIHJlbW92
ZUlucHV0Om9sZElucHV0XTsKICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgW19jYXB0dXJlU2Vzc2lvbiBzdG9wUnVubmluZ107CisgICAgICAgICAgICAgICAg
ICAgICAgW3NlbGYuY2FwdHVyZVNlc3Npb24gc3RvcFJ1bm5pbmddOwogCiAjaWYgVEFSR0VUX09T
X0lQSE9ORQogICAgICAgICAgICAgICAgICAgICAgIFtbVUlEZXZpY2UgY3VycmVudERldmljZV0g
ZW5kR2VuZXJhdGluZ0RldmljZU9yaWVudGF0aW9uTm90aWZpY2F0aW9uc107CiAjZW5kaWYKLSAg
ICAgICAgICAgICAgICAgICAgICBfaXNSdW5uaW5nID0gTk87CisgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5pc1J1bm5pbmcgPSBOTzsKICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGxl
dGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzQwLDcgKzM0NSw3IEBAIC0gKHZvaWQp
aGFuZGxlQ2FwdHVyZVNlc3Npb25EaWRTdGFydFJ1bm5pbmc6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jazpeewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2Ugc3VjY2Vzc2Z1bGx5IHJlc3Rh
cnRlZCBhZnRlciBhbiB1bmtub3duIGVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYWxsb3cgZnV0dXJlIHJldHJpZXMgb24gZmF0YWwgZXJyb3JzLgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX2hhc1JldHJpZWRPbkZhdGFsRXJyb3IgPSBOTzsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFzUmV0cmllZE9uRmF0YWxFcnJv
ciA9IE5POwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dOwogfQogCkBAIC0zNTIs
MTAgKzM1NywxMCBAQCAtICh2b2lkKWhhbmRsZUZhdGFsRXJyb3IgewogICBbUlRDRGlzcGF0Y2hl
cgogICAgICAgZGlzcGF0Y2hBc3luY09uVHlwZTpSVENEaXNwYXRjaGVyVHlwZUNhcHR1cmVTZXNz
aW9uCiAgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57Ci0gICAgICAgICAgICAgICAgICAgICAg
aWYgKCFfaGFzUmV0cmllZE9uRmF0YWxFcnJvcikgeworICAgICAgICAgICAgICAgICAgICAgIGlm
ICghc2VsZi5oYXNSZXRyaWVkT25GYXRhbEVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBSVENMb2dXYXJuaW5nKEAiQXR0ZW1wdGluZyB0byByZWNvdmVyIGZyb20gZmF0YWwgY2FwdHVy
ZSBlcnJvci4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmIGhhbmRsZU5vbkZhdGFs
RXJyb3JdOwotICAgICAgICAgICAgICAgICAgICAgICAgX2hhc1JldHJpZWRPbkZhdGFsRXJyb3Ig
PSBZRVM7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhhc1JldHJpZWRPbkZhdGFsRXJy
b3IgPSBZRVM7CiAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIFJUQ0xvZ0Vycm9yKEAiUHJldmlvdXMgZmF0YWwgZXJyb3IgcmVjb3ZlcnkgZmFp
bGVkLiIpOwogICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM2Niw4ICszNzEsOCBAQCAtICh2
b2lkKWhhbmRsZU5vbkZhdGFsRXJyb3IgewogICBbUlRDRGlzcGF0Y2hlciBkaXNwYXRjaEFzeW5j
T25UeXBlOlJUQ0Rpc3BhdGNoZXJUeXBlQ2FwdHVyZVNlc3Npb24KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBibG9jazpeewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UlRDTG9nKEAiUmVzdGFydGluZyBjYXB0dXJlIHNlc3Npb24gYWZ0ZXIgZXJyb3IuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2lzUnVubmluZykgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbX2NhcHR1cmVTZXNzaW9uIHN0YXJ0UnVubmluZ107
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5pc1J1bm5pbmcpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY2FwdHVyZVNlc3Npb24g
c3RhcnRSdW5uaW5nXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9XTsKIH0KQEAgLTM3OSw5ICszODQsOSBAQCAtICh2
b2lkKWhhbmRsZU5vbkZhdGFsRXJyb3IgewogLSAodm9pZCloYW5kbGVBcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24gewogICBbUlRDRGlzcGF0
Y2hlciBkaXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3BhdGNoZXJUeXBlQ2FwdHVyZVNlc3Npb24K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jazpeewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKF9pc1J1bm5pbmcgJiYgIV9jYXB0dXJlU2Vzc2lvbi5pc1J1
bm5pbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmlzUnVu
bmluZyAmJiAhc2VsZi5jYXB0dXJlU2Vzc2lvbi5pc1J1bm5pbmcpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUlRDTG9nKEAiUmVzdGFydGluZyBjYXB0dXJlIHNlc3Npb24g
b24gYWN0aXZlLiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX2NhcHR1
cmVTZXNzaW9uIHN0YXJ0UnVubmluZ107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtzZWxmLmNhcHR1cmVTZXNzaW9uIHN0YXJ0UnVubmluZ107CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9jb21wb25lbnRzL2NhcHR1cmVyL1JUQ0ZpbGVWaWRlb0NhcHR1cmVyLm0gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L2NhcHR1cmVyL1JUQ0ZpbGVWaWRlb0NhcHR1cmVyLm0KaW5kZXggMDAxNDNlOTA5ZmQwYWEwMmZl
NzcxZjgwZDc5MGU5Njc3ODQ4Nzk5YS4uMjA3YTIxZDhjMGQzZjY5MTVkMjI4YWY0Y2MyMWQyYmQ4
MDUwMGExNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9jYXB0dXJlci9SVENGaWxlVmlkZW9DYXB0dXJlci5t
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2NvbXBvbmVudHMvY2FwdHVyZXIvUlRDRmlsZVZpZGVvQ2FwdHVyZXIubQpAQCAtMjcsMTUgKzI3
LDIxIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFJUQ0ZpbGVWaWRlb0NhcHR1cmVyU3Rh
dHVzKSB7CiAgIFJUQ0ZpbGVWaWRlb0NhcHR1cmVyU3RhdHVzU3RvcHBlZAogfTsKIAorQGludGVy
ZmFjZSBSVENGaWxlVmlkZW9DYXB0dXJlciAoKQorQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWdu
KSBDTVRpbWUgbGFzdFByZXNlbnRhdGlvblRpbWU7CitAcHJvcGVydHkobm9uYXRvbWljLCBzdHJv
bmcpIE5TVVJMICpmaWxlVVJMOworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gUlRDRmlsZVZpZGVv
Q2FwdHVyZXIgewogICBBVkFzc2V0UmVhZGVyICpfcmVhZGVyOwogICBBVkFzc2V0UmVhZGVyVHJh
Y2tPdXRwdXQgKl9vdXRUcmFjazsKICAgUlRDRmlsZVZpZGVvQ2FwdHVyZXJTdGF0dXMgX3N0YXR1
czsKLSAgQ01UaW1lIF9sYXN0UHJlc2VudGF0aW9uVGltZTsKICAgZGlzcGF0Y2hfcXVldWVfdCBf
ZnJhbWVRdWV1ZTsKLSAgTlNVUkwgKl9maWxlVVJMOwogfQogCitAc3ludGhlc2l6ZSBsYXN0UHJl
c2VudGF0aW9uVGltZSA9IF9sYXN0UHJlc2VudGF0aW9uVGltZTsKK0BzeW50aGVzaXplIGZpbGVV
UkwgPSBfZmlsZVVSTDsKKwogLSAodm9pZClzdGFydENhcHR1cmluZ0Zyb21GaWxlTmFtZWQ6KE5T
U3RyaW5nICopbmFtZU9mRmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3I6
KFJUQ0ZpbGVWaWRlb0NhcHR1cmVyRXJyb3JCbG9jayllcnJvckJsb2NrIHsKICAgaWYgKF9zdGF0
dXMgPT0gUlRDRmlsZVZpZGVvQ2FwdHVyZXJTdGF0dXNTdGFydGVkKSB7CkBAIC02Miw5ICs2OCw5
IEBAIC0gKHZvaWQpc3RhcnRDYXB0dXJpbmdGcm9tRmlsZU5hbWVkOihOU1N0cmluZyAqKW5hbWVP
ZkZpbGUKICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfbGFzdFByZXNlbnRhdGlvblRpbWUg
PSBDTVRpbWVNYWtlKDAsIDApOworICAgIHNlbGYubGFzdFByZXNlbnRhdGlvblRpbWUgPSBDTVRp
bWVNYWtlKDAsIDApOwogCi0gICAgX2ZpbGVVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBh
dGhGb3JGaWxlXTsKKyAgICBzZWxmLmZpbGVVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBh
dGhGb3JGaWxlXTsKICAgICBbc2VsZiBzZXR1cFJlYWRlck9uRXJyb3I6ZXJyb3JCbG9ja107CiAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9yZW5kZXJlci9tZXRhbC9SVENNVExSZW5kZXJlci5t
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvcmVuZGVyZXIvbWV0YWwvUlRDTVRMUmVuZGVyZXIubW0KaW5kZXggOGYzNzJiY2Ri
ZDgxNTJmYmQyNWNjZDRiYTNlYmVjZjExZjFhZGU1YS4uZmI0NzhkMjUzMzFlOWNjZWMxNDk0MDEy
ZjYwMjA5Njc3ZjkxZjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9yZW5kZXJlci9tZXRhbC9SVENNVExS
ZW5kZXJlci5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRlcmVyL21ldGFsL1JUQ01UTFJlbmRlcmVyLm1tCkBA
IC0xNzYsNyArMTc2LDggQEAgLSAoQk9PTClzZXR1cFRleHR1cmVzRm9yRnJhbWU6KG5vbm51bGwg
UlRDVmlkZW9GcmFtZSAqKWZyYW1lIHsKICAgUlRDVmlkZW9Sb3RhdGlvbiByb3RhdGlvbjsKICAg
TlNWYWx1ZSAqcm90YXRpb25PdmVycmlkZSA9IHNlbGYucm90YXRpb25PdmVycmlkZTsKICAgaWYg
KHJvdGF0aW9uT3ZlcnJpZGUpIHsKLSNpZiBkZWZpbmVkKF9fSVBIT05FXzExXzApICYmIChfX0lQ
SE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IF9fSVBIT05FXzExXzApCisjaWYgZGVmaW5l
ZChfX0lQSE9ORV8xMV8wKSAmJiBkZWZpbmVkKF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9X
RUQpICYmIFwKKyAgICAoX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSBfX0lQSE9O
RV8xMV8wKQogICAgIGlmIChAYXZhaWxhYmxlKGlPUyAxMSwgKikpIHsKICAgICAgIFtyb3RhdGlv
bk92ZXJyaWRlIGdldFZhbHVlOiZyb3RhdGlvbiBzaXplOnNpemVvZihyb3RhdGlvbildOwogICAg
IH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9yZW5kZXJlci9tZXRhbC9SVENNVExWaWRlb1ZpZXcu
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvcmVuZGVyZXIvbWV0YWwvUlRDTVRMVmlkZW9WaWV3Lm0KaW5kZXggN2FkMWQ3OWQz
ZTNmNmQ2M2JlNDZkZmUwODYxMTYxODExYTlhYTU0My4uZjg1NzVjMGNmZWQ1MmZjNGE1NWI4ZjYy
MTVmZThiM2NiNTg2NTY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9yZW5kZXJlci9tZXRhbC9SVENNVExW
aWRlb1ZpZXcubQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRlcmVyL21ldGFsL1JUQ01UTFZpZGVvVmlldy5tCkBA
IC0xNDEsNiArMTQxLDEwIEBAIC0gKHZvaWQpZHJhd0luTVRLVmlldzoobm9ubnVsbCBNVEtWaWV3
ICopdmlldyB7CiAgICAgcmV0dXJuOwogICB9CiAKKyAgaWYgKENHUmVjdElzRW1wdHkodmlldy5i
b3VuZHMpKSB7CisgICAgcmV0dXJuOworICB9CisKICAgUlRDTVRMUmVuZGVyZXIgKnJlbmRlcmVy
OwogICBpZiAoW3ZpZGVvRnJhbWUuYnVmZmVyIGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4ZWxCdWZm
ZXIgY2xhc3NdXSkgewogICAgIFJUQ0NWUGl4ZWxCdWZmZXIgKmJ1ZmZlciA9IChSVENDVlBpeGVs
QnVmZmVyKil2aWRlb0ZyYW1lLmJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMv
UlRDVmlkZW9EZWNvZGVySDI2NC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVy
SDI2NC5tbQppbmRleCA2MzE3MDEzMTgwZGFhMzcxMmFkNzIyMjVlMGQ2ZjhhNjA1OWM1MTc3Li4x
YzE4ZmFiMTdkZjk2NDU2M2VlY2Q4ZTJlNDJlZGQwZjA4MGVlNGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQubW0KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENWaWRlb0RlY29kZXJIMjY0Lm1tCkBAIC02NywxMiArNjcsMjMgQEAgdm9pZCBkZWNvbXBy
ZXNzaW9uT3V0cHV0Q2FsbGJhY2sodm9pZCAqZGVjb2RlclJlZiwKIC8vIERlY29kZXIuCiBAaW1w
bGVtZW50YXRpb24gUlRDVmlkZW9EZWNvZGVySDI2NCB7CiAgIENNVmlkZW9Gb3JtYXREZXNjcmlw
dGlvblJlZiBfdmlkZW9Gb3JtYXQ7CisgIENNTWVtb3J5UG9vbFJlZiBfbWVtb3J5UG9vbDsKICAg
VlREZWNvbXByZXNzaW9uU2Vzc2lvblJlZiBfZGVjb21wcmVzc2lvblNlc3Npb247CiAgIFJUQ1Zp
ZGVvRGVjb2RlckNhbGxiYWNrIF9jYWxsYmFjazsKICAgT1NTdGF0dXMgX2Vycm9yOwogfQogCist
IChpbnN0YW5jZXR5cGUpaW5pdCB7CisgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgIGlmIChzZWxm
KSB7CisgICAgX21lbW9yeVBvb2wgPSBDTU1lbW9yeVBvb2xDcmVhdGUobmlsKTsKKyAgfQorICBy
ZXR1cm4gc2VsZjsKK30KKwogLSAodm9pZClkZWFsbG9jIHsKKyAgQ01NZW1vcnlQb29sSW52YWxp
ZGF0ZShfbWVtb3J5UG9vbCk7CisgIENGUmVsZWFzZShfbWVtb3J5UG9vbCk7CiAgIFtzZWxmIGRl
c3Ryb3lEZWNvbXByZXNzaW9uU2Vzc2lvbl07CiAgIFtzZWxmIHNldFZpZGVvRm9ybWF0Om51bGxw
dHJdOwogfQpAQCAtMTI1LDcgKzEzNiw4IEBAIC0gKE5TSW50ZWdlcilkZWNvZGU6KFJUQ0VuY29k
ZWRJbWFnZSAqKWlucHV0SW1hZ2UKICAgaWYgKCF3ZWJydGM6OkgyNjRBbm5leEJCdWZmZXJUb0NN
U2FtcGxlQnVmZmVyKCh1aW50OF90ICopaW5wdXRJbWFnZS5idWZmZXIuYnl0ZXMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dEltYWdlLmJ1ZmZl
ci5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfdmlkZW9Gb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmc2FtcGxlQnVmZmVyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnNhbXBsZUJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9tZW1vcnlQb29sKSkgewogICAgIHJldHVybiBXRUJS
VENfVklERU9fQ09ERUNfRVJST1I7CiAgIH0KICAgUlRDX0RDSEVDSyhzYW1wbGVCdWZmZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRl
b19jb2RlYy9uYWx1X3Jld3JpdGVyLmNjCmluZGV4IGE4NDlkM2YwNTNlMzlkMjFlMzkwMWVkNDU1
OWE3NTA4NjJkNDZjZmEuLjU1ZWQxYzJiNGNhMzcwMGUwODA0YWRlMmNiYmVhMGU4MDdiMWU1YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvbmFsdV9yZXdyaXRlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL25hbHVfcmV3cml0ZXIuY2MKQEAgLTE2MCw3ICsxNjAsOCBAQCBib29sIEgy
NjRDTVNhbXBsZUJ1ZmZlclRvQW5uZXhCQnVmZmVyKAogYm9vbCBIMjY0QW5uZXhCQnVmZmVyVG9D
TVNhbXBsZUJ1ZmZlcihjb25zdCB1aW50OF90KiBhbm5leGJfYnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYW5uZXhiX2J1ZmZlcl9zaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRp
b25SZWYgdmlkZW9fZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDTVNhbXBsZUJ1ZmZlclJlZiogb3V0X3NhbXBsZV9idWZmZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYqIG91dF9zYW1wbGVfYnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTU1lbW9yeVBvb2xS
ZWYgbWVtb3J5X3Bvb2wpIHsKICAgUlRDX0RDSEVDSyhhbm5leGJfYnVmZmVyKTsKICAgUlRDX0RD
SEVDSyhvdXRfc2FtcGxlX2J1ZmZlcik7CiAgIFJUQ19EQ0hFQ0sodmlkZW9fZm9ybWF0KTsKQEAg
LTE4NSwxMSArMTg2LDExIEBAIGJvb2wgSDI2NEFubmV4QkJ1ZmZlclRvQ01TYW1wbGVCdWZmZXIo
Y29uc3QgdWludDhfdCogYW5uZXhiX2J1ZmZlciwKICAgfQogCiAgIC8vIEFsbG9jYXRlIG1lbW9y
eSBhcyBhIGJsb2NrIGJ1ZmZlci4KLSAgLy8gVE9ETyh0a2NoaW4pOiBmaWd1cmUgb3V0IGhvdyB0
byB1c2UgYSBwb29sLgogICBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrX2J1ZmZlciA9IG51bGxwdHI7
CisgIENGQWxsb2NhdG9yUmVmIGJsb2NrX2FsbG9jYXRvciA9IENNTWVtb3J5UG9vbEdldEFsbG9j
YXRvcihtZW1vcnlfcG9vbCk7CiAgIE9TU3RhdHVzIHN0YXR1cyA9IENNQmxvY2tCdWZmZXJDcmVh
dGVXaXRoTWVtb3J5QmxvY2soCi0gICAgICBudWxscHRyLCBudWxscHRyLCByZWFkZXIuQnl0ZXNS
ZW1haW5pbmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwKLSAgICAgIHJlYWRlci5CeXRlc1JlbWFp
bmluZygpLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0ZsYWcsCisgICAgICBrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBudWxscHRyLCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSwgYmxvY2tfYWxs
b2NhdG9yLAorICAgICAgbnVsbHB0ciwgMCwgcmVhZGVyLkJ5dGVzUmVtYWluaW5nKCksIGtDTUJs
b2NrQnVmZmVyQXNzdXJlTWVtb3J5Tm93RmxhZywKICAgICAgICZibG9ja19idWZmZXIpOwogICBp
ZiAoc3RhdHVzICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIpIHsKICAgICBSVENfTE9HKExTX0VSUk9S
KSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBibG9jayBidWZmZXIuIjsKQEAgLTE5OSw4ICsyMDAsOSBA
QCBib29sIEgyNjRBbm5leEJCdWZmZXJUb0NNU2FtcGxlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGFu
bmV4Yl9idWZmZXIsCiAgIC8vIE1ha2Ugc3VyZSBibG9jayBidWZmZXIgaXMgY29udGlndW91cy4K
ICAgQ01CbG9ja0J1ZmZlclJlZiBjb250aWd1b3VzX2J1ZmZlciA9IG51bGxwdHI7CiAgIGlmICgh
Q01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKGJsb2NrX2J1ZmZlciwgMCwgMCkpIHsKLSAg
ICBzdGF0dXMgPSBDTUJsb2NrQnVmZmVyQ3JlYXRlQ29udGlndW91cygKLSAgICAgICAgbnVsbHB0
ciwgYmxvY2tfYnVmZmVyLCBudWxscHRyLCBudWxscHRyLCAwLCAwLCAwLCAmY29udGlndW91c19i
dWZmZXIpOworICAgIHN0YXR1cyA9IENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGJsb2NrX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBibG9ja19hbGxvY2F0b3IsIG51bGxwdHIsIDAsIDAsIDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRpZ3VvdXNfYnVmZmVy
KTsKICAgICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CiAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8
PCAiRmFpbGVkIHRvIGZsYXR0ZW4gbm9uLWNvbnRpZ3VvdXMgYmxvY2sgYnVmZmVyOiAiCiAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBzdGF0dXM7CkBAIC0yMzYsOSArMjM4LDkgQEAgYm9vbCBI
MjY0QW5uZXhCQnVmZmVyVG9DTVNhbXBsZUJ1ZmZlcihjb25zdCB1aW50OF90KiBhbm5leGJfYnVm
ZmVyLAogICB9CiAKICAgLy8gQ3JlYXRlIHNhbXBsZSBidWZmZXIuCi0gIHN0YXR1cyA9IENNU2Ft
cGxlQnVmZmVyQ3JlYXRlKG51bGxwdHIsIGNvbnRpZ3VvdXNfYnVmZmVyLCB0cnVlLCBudWxscHRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCB2aWRlb19mb3JtYXQs
IDEsIDAsIG51bGxwdHIsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsIG91dF9zYW1wbGVfYnVmZmVyKTsKKyAgc3RhdHVzID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgY29udGlndW91c19idWZmZXIsIHRydWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIHZpZGVvX2Zvcm1hdCwgMSwg
MCwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbnVsbHB0ciwg
b3V0X3NhbXBsZV9idWZmZXIpOwogICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CiAgICAgUlRDX0xP
RyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBjcmVhdGUgc2FtcGxlIGJ1ZmZlci4iOwogICAgIENG
UmVsZWFzZShjb250aWd1b3VzX2J1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L25hbHVfcmV3cml0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvbmFsdV9yZXdyaXRlci5oCmluZGV4
IGNkNWE1MTA3OWFiNWIyMjU4NzdkMDBjZTIzNWM2N2QwYjFlYjBlOTguLmEwYzFhYTkwYWY1NzU5
ZGUzOWI1ZDA2YzIyMWQyODQyOTQzODk4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMv
bmFsdV9yZXdyaXRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvbmFsdV9yZXdyaXRlci5oCkBA
IC00NCw3ICs0NCw4IEBAIGJvb2wgSDI2NENNU2FtcGxlQnVmZmVyVG9Bbm5leEJCdWZmZXIoCiBi
b29sIEgyNjRBbm5leEJCdWZmZXJUb0NNU2FtcGxlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGFubmV4
Yl9idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBh
bm5leGJfYnVmZmVyX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiB2aWRlb19mb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENNU2FtcGxlQnVmZmVyUmVmKiBvdXRfc2FtcGxlX2J1
ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENNU2FtcGxlQnVm
ZmVyUmVmKiBvdXRfc2FtcGxlX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ01NZW1vcnlQb29sUmVmIG1lbW9yeV9wb29sKTsKIAogLy8gUmV0dXJucyBhIHZp
ZGVvIGZvcm1hdCBkZXNjcmlwdGlvbiBjcmVhdGVkIGZyb20gdGhlIHNwcy9wcHMgaW5mb3JtYXRp
b24gaW4KIC8vIHRoZSBBbm5leCBCIGJ1ZmZlci4gSWYgdGhlcmUgaXMgbm8gc3VjaCBpbmZvcm1h
dGlvbiwgbnVsbHB0ciBpcyByZXR1cm5lZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fZnJhbWVf
YnVmZmVyL1JUQ0NWUGl4ZWxCdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ0NW
UGl4ZWxCdWZmZXIuaAppbmRleCBhYmU5ZGZjYTkzYjA0YmY1NTJlYzAzMDJiODA3NTk3ZGYyNjFl
ZGIxLi40MzJhMzgyNTc0NjRiMjZjYjUzMjM0YzhhMzdhZjY3ZDU4ZWY4MGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVmZmVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oCkBAIC0xNyw3ICsxNyw2IEBAIE5T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIC8qKiBSVENWaWRlb0ZyYW1lQnVmZmVyIGNvbnRhaW5p
bmcgYSBDVlBpeGVsQnVmZmVyUmVmICovCiBSVENfT0JKQ19FWFBPUlQKLV9fYXR0cmlidXRlX18o
KG9iamNfcnVudGltZV9uYW1lKCJXS19SVENDVlBpeGVsQnVmZmVyIikpKQogQGludGVyZmFjZSBS
VENDVlBpeGVsQnVmZmVyIDogTlNPYmplY3QgPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+CiAKIEBwcm9w
ZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvaGVscGVycy9SVENDYW1lcmFQcmV2aWV3Vmlldy5tIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvaGVscGVycy9SVENDYW1lcmFQcmV2aWV3
Vmlldy5tCmluZGV4IDJhZGQ0NmNmNzFmNmE0N2RiMDVmOTgzYzQ2OWUzZjQwMWIwZTM2ZmYuLmFk
YzYyY2MzMGFmNDk3YmRjMTY2NDRhMzE4MWU1OWE0NWM4ZGQzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2hlbHBlcnMvUlRD
Q2FtZXJhUHJldmlld1ZpZXcubQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1JUQ0NhbWVyYVByZXZpZXdWaWV3Lm0KQEAgLTQ3
LDE5ICs0NywyMiBAQCAtICh2b2lkKXNldENhcHR1cmVTZXNzaW9uOihBVkNhcHR1cmVTZXNzaW9u
ICopY2FwdHVyZVNlc3Npb24gewogICBpZiAoX2NhcHR1cmVTZXNzaW9uID09IGNhcHR1cmVTZXNz
aW9uKSB7CiAgICAgcmV0dXJuOwogICB9Ci0gIFtSVENEaXNwYXRjaGVyIGRpc3BhdGNoQXN5bmNP
blR5cGU6UlRDRGlzcGF0Y2hlclR5cGVNYWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmxvY2s6XnsKLSAgICBfY2FwdHVyZVNlc3Npb24gPSBjYXB0dXJlU2Vzc2lvbjsKLSAgICBB
VkNhcHR1cmVWaWRlb1ByZXZpZXdMYXllciAqcHJldmlld0xheWVyID0gW3NlbGYgcHJldmlld0xh
eWVyXTsKLSAgICBbUlRDRGlzcGF0Y2hlciBkaXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3BhdGNo
ZXJUeXBlQ2FwdHVyZVNlc3Npb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJs
b2NrOl57Ci0gICAgICBwcmV2aWV3TGF5ZXIuc2Vzc2lvbiA9IGNhcHR1cmVTZXNzaW9uOwotICAg
ICAgW1JUQ0Rpc3BhdGNoZXIgZGlzcGF0Y2hBc3luY09uVHlwZTpSVENEaXNwYXRjaGVyVHlwZU1h
aW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jazpeewotICAgICAgICBbc2Vs
ZiBzZXRDb3JyZWN0VmlkZW9PcmllbnRhdGlvbl07Ci0gICAgICB9XTsKLSAgICB9XTsKLSAgfV07
CisgIFtSVENEaXNwYXRjaGVyCisgICAgICBkaXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3BhdGNo
ZXJUeXBlTWFpbgorICAgICAgICAgICAgICAgICAgICBibG9jazpeeworICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuY2FwdHVyZVNlc3Npb24gPSBjYXB0dXJlU2Vzc2lvbjsKKyAgICAgICAgICAg
ICAgICAgICAgICBBVkNhcHR1cmVWaWRlb1ByZXZpZXdMYXllciAqcHJldmlld0xheWVyID0gW3Nl
bGYgcHJldmlld0xheWVyXTsKKyAgICAgICAgICAgICAgICAgICAgICBbUlRDRGlzcGF0Y2hlcgor
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3BhdGNo
ZXJUeXBlQ2FwdHVyZVNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBibG9jazpeeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJldmlld0xheWVyLnNlc3Npb24gPSBjYXB0dXJlU2Vzc2lvbjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtSVENEaXNwYXRjaGVyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hBc3luY09uVHlwZTpSVENEaXNw
YXRjaGVyVHlwZU1haW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsb2NrOl57CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmIHNldENvcnJlY3RWaWRlb09y
aWVudGF0aW9uXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH1dOworICAgICAgICAgICAgICAgICAgICB9XTsKIH0KIAogLSAodm9pZClsYXlvdXRTdWJ2
aWV3cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1VJRGV2aWNlK1JUQ0RldmljZS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvaGVscGVycy9VSURldmljZStS
VENEZXZpY2UuaAppbmRleCBlYjM5ZWE5Y2M0ZDc2NzM0MWEzZjdhYTM5NmI5OGU3MDZmYjEzZTA0
Li43MzYyMzc1ODJmZTgyOGJkNzM2ZTVjOGMwYmRkZWFlNGU4YmViYTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJz
L1VJRGV2aWNlK1JUQ0RldmljZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2hlbHBlcnMvVUlEZXZpY2UrUlRDRGV2aWNlLmgKQEAgLTM0
LDYgKzM0LDkgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUlRDRGV2aWNlVHlwZSkgewog
ICBSVENEZXZpY2VUeXBlSVBob25lOCwKICAgUlRDRGV2aWNlVHlwZUlQaG9uZThQbHVzLAogICBS
VENEZXZpY2VUeXBlSVBob25lWCwKKyAgUlRDRGV2aWNlVHlwZUlQaG9uZVhTLAorICBSVENEZXZp
Y2VUeXBlSVBob25lWFNNYXgsCisgIFJUQ0RldmljZVR5cGVJUGhvbmVYUiwKICAgUlRDRGV2aWNl
VHlwZUlQb2RUb3VjaDFHLAogICBSVENEZXZpY2VUeXBlSVBvZFRvdWNoMkcsCiAgIFJUQ0Rldmlj
ZVR5cGVJUG9kVG91Y2gzRywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2hlbHBlcnMvVUlEZXZpY2UrUlRDRGV2aWNlLm1tIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvaGVscGVy
cy9VSURldmljZStSVENEZXZpY2UubW0KaW5kZXggOTZhZGI5YWY3ODBlMTNmMDk4ODJlYWQ3ZDg0
OGFlZTdjNjE2YzA5MC4uNmY2OGU5ZjdhMGRhNDZiMDRlNWE5Nzk1MDk4NzRkNmQyYTNhYTJmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvaGVscGVycy9VSURldmljZStSVENEZXZpY2UubW0KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvaGVscGVycy9VSURldmljZStSVENE
ZXZpY2UubW0KQEAgLTE3LDgxICsxNyw4NSBAQCBAaW1wbGVtZW50YXRpb24gVUlEZXZpY2UgKFJU
Q0RldmljZSkKIAogKyAoUlRDRGV2aWNlVHlwZSlkZXZpY2VUeXBlIHsKICAgTlNEaWN0aW9uYXJ5
ICptYWNoaW5lTmFtZVRvVHlwZSA9IEB7Ci0gICAgQCJpUGhvbmUxLDEiOiBAKFJUQ0RldmljZVR5
cGVJUGhvbmUxRyksCi0gICAgQCJpUGhvbmUxLDIiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmUzRyks
Ci0gICAgQCJpUGhvbmUyLDEiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmUzR1MpLAotICAgIEAiaVBo
b25lMywxIjogQChSVENEZXZpY2VUeXBlSVBob25lNCksCi0gICAgQCJpUGhvbmUzLDIiOiBAKFJU
Q0RldmljZVR5cGVJUGhvbmU0KSwKLSAgICBAImlQaG9uZTMsMyI6IEAoUlRDRGV2aWNlVHlwZUlQ
aG9uZTRWZXJpem9uKSwKLSAgICBAImlQaG9uZTQsMSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTRT
KSwKLSAgICBAImlQaG9uZTUsMSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTVHU00pLAotICAgIEAi
aVBob25lNSwyIjogQChSVENEZXZpY2VUeXBlSVBob25lNUdTTV9DRE1BKSwKLSAgICBAImlQaG9u
ZTUsMyI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTVDR1NNKSwKLSAgICBAImlQaG9uZTUsNCI6IEAo
UlRDRGV2aWNlVHlwZUlQaG9uZTVDR1NNX0NETUEpLAotICAgIEAiaVBob25lNiwxIjogQChSVENE
ZXZpY2VUeXBlSVBob25lNVNHU00pLAotICAgIEAiaVBob25lNiwyIjogQChSVENEZXZpY2VUeXBl
SVBob25lNVNHU01fQ0RNQSksCi0gICAgQCJpUGhvbmU3LDEiOiBAKFJUQ0RldmljZVR5cGVJUGhv
bmU2UGx1cyksCi0gICAgQCJpUGhvbmU3LDIiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU2KSwKLSAg
ICBAImlQaG9uZTgsMSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTZTKSwKLSAgICBAImlQaG9uZTgs
MiI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTZTUGx1cyksCi0gICAgQCJpUGhvbmU4LDQiOiBAKFJU
Q0RldmljZVR5cGVJUGhvbmVTRSksCi0gICAgQCJpUGhvbmU5LDEiOiBAKFJUQ0RldmljZVR5cGVJ
UGhvbmU3KSwKLSAgICBAImlQaG9uZTksMiI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTdQbHVzKSwK
LSAgICBAImlQaG9uZTksMyI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTcpLAotICAgIEAiaVBob25l
OSw0IjogQChSVENEZXZpY2VUeXBlSVBob25lN1BsdXMpLAotICAgIEAiaVBob25lMTAsMSI6IEAo
UlRDRGV2aWNlVHlwZUlQaG9uZTgpLAotICAgIEAiaVBob25lMTAsMiI6IEAoUlRDRGV2aWNlVHlw
ZUlQaG9uZThQbHVzKSwKLSAgICBAImlQaG9uZTEwLDMiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmVY
KSwKLSAgICBAImlQaG9uZTEwLDQiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU4KSwKLSAgICBAImlQ
aG9uZTEwLDUiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU4UGx1cyksCi0gICAgQCJpUGhvbmUxMCw2
IjogQChSVENEZXZpY2VUeXBlSVBob25lWCksCi0gICAgQCJpUG9kMSwxIjogQChSVENEZXZpY2VU
eXBlSVBvZFRvdWNoMUcpLAotICAgIEAiaVBvZDIsMSI6IEAoUlRDRGV2aWNlVHlwZUlQb2RUb3Vj
aDJHKSwKLSAgICBAImlQb2QzLDEiOiBAKFJUQ0RldmljZVR5cGVJUG9kVG91Y2gzRyksCi0gICAg
QCJpUG9kNCwxIjogQChSVENEZXZpY2VUeXBlSVBvZFRvdWNoNEcpLAotICAgIEAiaVBvZDUsMSI6
IEAoUlRDRGV2aWNlVHlwZUlQb2RUb3VjaDVHKSwKLSAgICBAImlQb2Q3LDEiOiBAKFJUQ0Rldmlj
ZVR5cGVJUG9kVG91Y2g2RyksCi0gICAgQCJpUGFkMSwxIjogQChSVENEZXZpY2VUeXBlSVBhZCks
Ci0gICAgQCJpUGFkMiwxIjogQChSVENEZXZpY2VUeXBlSVBhZDJXaWZpKSwKLSAgICBAImlQYWQy
LDIiOiBAKFJUQ0RldmljZVR5cGVJUGFkMkdTTSksCi0gICAgQCJpUGFkMiwzIjogQChSVENEZXZp
Y2VUeXBlSVBhZDJDRE1BKSwKLSAgICBAImlQYWQyLDQiOiBAKFJUQ0RldmljZVR5cGVJUGFkMldp
ZmkyKSwKLSAgICBAImlQYWQyLDUiOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaVdpZmkpLAotICAg
IEAiaVBhZDIsNiI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pR1NNKSwKLSAgICBAImlQYWQyLDci
OiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaUdTTV9DRE1BKSwKLSAgICBAImlQYWQzLDEiOiBAKFJU
Q0RldmljZVR5cGVJUGFkM1dpZmkpLAotICAgIEAiaVBhZDMsMiI6IEAoUlRDRGV2aWNlVHlwZUlQ
YWQzR1NNX0NETUEpLAotICAgIEAiaVBhZDMsMyI6IEAoUlRDRGV2aWNlVHlwZUlQYWQzR1NNKSwK
LSAgICBAImlQYWQzLDQiOiBAKFJUQ0RldmljZVR5cGVJUGFkNFdpZmkpLAotICAgIEAiaVBhZDMs
NSI6IEAoUlRDRGV2aWNlVHlwZUlQYWQ0R1NNKSwKLSAgICBAImlQYWQzLDYiOiBAKFJUQ0Rldmlj
ZVR5cGVJUGFkNEdTTV9DRE1BKSwKLSAgICBAImlQYWQ0LDEiOiBAKFJUQ0RldmljZVR5cGVJUGFk
QWlyV2lmaSksCi0gICAgQCJpUGFkNCwyIjogQChSVENEZXZpY2VUeXBlSVBhZEFpckNlbGx1bGFy
KSwKLSAgICBAImlQYWQ0LDMiOiBAKFJUQ0RldmljZVR5cGVJUGFkQWlyV2lmaUNlbGx1bGFyKSwK
LSAgICBAImlQYWQ0LDQiOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaTJHV2lmaSksCi0gICAgQCJp
UGFkNCw1IjogQChSVENEZXZpY2VUeXBlSVBhZE1pbmkyR0NlbGx1bGFyKSwKLSAgICBAImlQYWQ0
LDYiOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaTJHV2lmaUNlbGx1bGFyKSwKLSAgICBAImlQYWQ0
LDciOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaTMpLAotICAgIEAiaVBhZDQsOCI6IEAoUlRDRGV2
aWNlVHlwZUlQYWRNaW5pMyksCi0gICAgQCJpUGFkNCw5IjogQChSVENEZXZpY2VUeXBlSVBhZE1p
bmkzKSwKLSAgICBAImlQYWQ1LDEiOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaTQpLAotICAgIEAi
aVBhZDUsMiI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pNCksCi0gICAgQCJpUGFkNSwzIjogQChS
VENEZXZpY2VUeXBlSVBhZEFpcjIpLAotICAgIEAiaVBhZDUsNCI6IEAoUlRDRGV2aWNlVHlwZUlQ
YWRBaXIyKSwKLSAgICBAImlQYWQ2LDMiOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvOUluY2gpLAot
ICAgIEAiaVBhZDYsNCI6IEAoUlRDRGV2aWNlVHlwZUlQYWRQcm85SW5jaCksCi0gICAgQCJpUGFk
Niw3IjogQChSVENEZXZpY2VUeXBlSVBhZFBybzEySW5jaCksCi0gICAgQCJpUGFkNiw4IjogQChS
VENEZXZpY2VUeXBlSVBhZFBybzEySW5jaCksCi0gICAgQCJpUGFkNiwxMSI6IEAoUlRDRGV2aWNl
VHlwZUlQYWQ1KSwKLSAgICBAImlQYWQ2LDEyIjogQChSVENEZXZpY2VUeXBlSVBhZDUpLAotICAg
IEAiaVBhZDcsMSI6IEAoUlRDRGV2aWNlVHlwZUlQYWRQcm8xMkluY2gyKSwKLSAgICBAImlQYWQ3
LDIiOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTJJbmNoMiksCi0gICAgQCJpUGFkNywzIjogQChS
VENEZXZpY2VUeXBlSVBhZFBybzEwSW5jaCksCi0gICAgQCJpUGFkNyw0IjogQChSVENEZXZpY2VU
eXBlSVBhZFBybzEwSW5jaCksCi0gICAgQCJpUGFkNyw1IjogQChSVENEZXZpY2VUeXBlSVBhZDYp
LAotICAgIEAiaVBhZDcsNiI6IEAoUlRDRGV2aWNlVHlwZUlQYWQ2KSwKLSAgICBAImkzODYiOiBA
KFJUQ0RldmljZVR5cGVTaW11bGF0b3JpMzg2KSwKLSAgICBAIng4Nl82NCI6IEAoUlRDRGV2aWNl
VHlwZVNpbXVsYXRvcng4Nl82NCksCisgICAgQCJpUGhvbmUxLDEiIDogQChSVENEZXZpY2VUeXBl
SVBob25lMUcpLAorICAgIEAiaVBob25lMSwyIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTNHKSwK
KyAgICBAImlQaG9uZTIsMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmUzR1MpLAorICAgIEAiaVBo
b25lMywxIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTQpLAorICAgIEAiaVBob25lMywyIiA6IEAo
UlRDRGV2aWNlVHlwZUlQaG9uZTQpLAorICAgIEAiaVBob25lMywzIiA6IEAoUlRDRGV2aWNlVHlw
ZUlQaG9uZTRWZXJpem9uKSwKKyAgICBAImlQaG9uZTQsMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhv
bmU0UyksCisgICAgQCJpUGhvbmU1LDEiIDogQChSVENEZXZpY2VUeXBlSVBob25lNUdTTSksCisg
ICAgQCJpUGhvbmU1LDIiIDogQChSVENEZXZpY2VUeXBlSVBob25lNUdTTV9DRE1BKSwKKyAgICBA
ImlQaG9uZTUsMyIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1Q0dTTSksCisgICAgQCJpUGhvbmU1
LDQiIDogQChSVENEZXZpY2VUeXBlSVBob25lNUNHU01fQ0RNQSksCisgICAgQCJpUGhvbmU2LDEi
IDogQChSVENEZXZpY2VUeXBlSVBob25lNVNHU00pLAorICAgIEAiaVBob25lNiwyIiA6IEAoUlRD
RGV2aWNlVHlwZUlQaG9uZTVTR1NNX0NETUEpLAorICAgIEAiaVBob25lNywxIiA6IEAoUlRDRGV2
aWNlVHlwZUlQaG9uZTZQbHVzKSwKKyAgICBAImlQaG9uZTcsMiIgOiBAKFJUQ0RldmljZVR5cGVJ
UGhvbmU2KSwKKyAgICBAImlQaG9uZTgsMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU2UyksCisg
ICAgQCJpUGhvbmU4LDIiIDogQChSVENEZXZpY2VUeXBlSVBob25lNlNQbHVzKSwKKyAgICBAImlQ
aG9uZTgsNCIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmVTRSksCisgICAgQCJpUGhvbmU5LDEiIDog
QChSVENEZXZpY2VUeXBlSVBob25lNyksCisgICAgQCJpUGhvbmU5LDIiIDogQChSVENEZXZpY2VU
eXBlSVBob25lN1BsdXMpLAorICAgIEAiaVBob25lOSwzIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9u
ZTcpLAorICAgIEAiaVBob25lOSw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTdQbHVzKSwKKyAg
ICBAImlQaG9uZTEwLDEiIDogQChSVENEZXZpY2VUeXBlSVBob25lOCksCisgICAgQCJpUGhvbmUx
MCwyIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZThQbHVzKSwKKyAgICBAImlQaG9uZTEwLDMiIDog
QChSVENEZXZpY2VUeXBlSVBob25lWCksCisgICAgQCJpUGhvbmUxMCw0IiA6IEAoUlRDRGV2aWNl
VHlwZUlQaG9uZTgpLAorICAgIEAiaVBob25lMTAsNSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU4
UGx1cyksCisgICAgQCJpUGhvbmUxMCw2IiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVgpLAorICAg
IEAiaVBob25lMTEsMiIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmVYUyksCisgICAgQCJpUGhvbmUx
MSw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVhTTWF4KSwKKyAgICBAImlQaG9uZTExLDYiIDog
QChSVENEZXZpY2VUeXBlSVBob25lWFNNYXgpLAorICAgIEAiaVBob25lMTEsOCIgOiBAKFJUQ0Rl
dmljZVR5cGVJUGhvbmVYUiksCisgICAgQCJpUG9kMSwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQb2RU
b3VjaDFHKSwKKyAgICBAImlQb2QyLDEiIDogQChSVENEZXZpY2VUeXBlSVBvZFRvdWNoMkcpLAor
ICAgIEAiaVBvZDMsMSIgOiBAKFJUQ0RldmljZVR5cGVJUG9kVG91Y2gzRyksCisgICAgQCJpUG9k
NCwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQb2RUb3VjaDRHKSwKKyAgICBAImlQb2Q1LDEiIDogQChS
VENEZXZpY2VUeXBlSVBvZFRvdWNoNUcpLAorICAgIEAiaVBvZDcsMSIgOiBAKFJUQ0RldmljZVR5
cGVJUG9kVG91Y2g2RyksCisgICAgQCJpUGFkMSwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQpLAor
ICAgIEAiaVBhZDIsMSIgOiBAKFJUQ0RldmljZVR5cGVJUGFkMldpZmkpLAorICAgIEAiaVBhZDIs
MiIgOiBAKFJUQ0RldmljZVR5cGVJUGFkMkdTTSksCisgICAgQCJpUGFkMiwzIiA6IEAoUlRDRGV2
aWNlVHlwZUlQYWQyQ0RNQSksCisgICAgQCJpUGFkMiw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQy
V2lmaTIpLAorICAgIEAiaVBhZDIsNSIgOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaVdpZmkpLAor
ICAgIEAiaVBhZDIsNiIgOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaUdTTSksCisgICAgQCJpUGFk
Miw3IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pR1NNX0NETUEpLAorICAgIEAiaVBhZDMsMSIg
OiBAKFJUQ0RldmljZVR5cGVJUGFkM1dpZmkpLAorICAgIEAiaVBhZDMsMiIgOiBAKFJUQ0Rldmlj
ZVR5cGVJUGFkM0dTTV9DRE1BKSwKKyAgICBAImlQYWQzLDMiIDogQChSVENEZXZpY2VUeXBlSVBh
ZDNHU00pLAorICAgIEAiaVBhZDMsNCIgOiBAKFJUQ0RldmljZVR5cGVJUGFkNFdpZmkpLAorICAg
IEAiaVBhZDMsNSIgOiBAKFJUQ0RldmljZVR5cGVJUGFkNEdTTSksCisgICAgQCJpUGFkMyw2IiA6
IEAoUlRDRGV2aWNlVHlwZUlQYWQ0R1NNX0NETUEpLAorICAgIEAiaVBhZDQsMSIgOiBAKFJUQ0Rl
dmljZVR5cGVJUGFkQWlyV2lmaSksCisgICAgQCJpUGFkNCwyIiA6IEAoUlRDRGV2aWNlVHlwZUlQ
YWRBaXJDZWxsdWxhciksCisgICAgQCJpUGFkNCwzIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRBaXJX
aWZpQ2VsbHVsYXIpLAorICAgIEAiaVBhZDQsNCIgOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaTJH
V2lmaSksCisgICAgQCJpUGFkNCw1IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMkdDZWxsdWxh
ciksCisgICAgQCJpUGFkNCw2IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMkdXaWZpQ2VsbHVs
YXIpLAorICAgIEAiaVBhZDQsNyIgOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaTMpLAorICAgIEAi
aVBhZDQsOCIgOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaTMpLAorICAgIEAiaVBhZDQsOSIgOiBA
KFJUQ0RldmljZVR5cGVJUGFkTWluaTMpLAorICAgIEAiaVBhZDUsMSIgOiBAKFJUQ0RldmljZVR5
cGVJUGFkTWluaTQpLAorICAgIEAiaVBhZDUsMiIgOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaTQp
LAorICAgIEAiaVBhZDUsMyIgOiBAKFJUQ0RldmljZVR5cGVJUGFkQWlyMiksCisgICAgQCJpUGFk
NSw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRBaXIyKSwKKyAgICBAImlQYWQ2LDMiIDogQChSVENE
ZXZpY2VUeXBlSVBhZFBybzlJbmNoKSwKKyAgICBAImlQYWQ2LDQiIDogQChSVENEZXZpY2VUeXBl
SVBhZFBybzlJbmNoKSwKKyAgICBAImlQYWQ2LDciIDogQChSVENEZXZpY2VUeXBlSVBhZFBybzEy
SW5jaCksCisgICAgQCJpUGFkNiw4IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRQcm8xMkluY2gpLAor
ICAgIEAiaVBhZDYsMTEiIDogQChSVENEZXZpY2VUeXBlSVBhZDUpLAorICAgIEAiaVBhZDYsMTIi
IDogQChSVENEZXZpY2VUeXBlSVBhZDUpLAorICAgIEAiaVBhZDcsMSIgOiBAKFJUQ0RldmljZVR5
cGVJUGFkUHJvMTJJbmNoMiksCisgICAgQCJpUGFkNywyIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRQ
cm8xMkluY2gyKSwKKyAgICBAImlQYWQ3LDMiIDogQChSVENEZXZpY2VUeXBlSVBhZFBybzEwSW5j
aCksCisgICAgQCJpUGFkNyw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRQcm8xMEluY2gpLAorICAg
IEAiaVBhZDcsNSIgOiBAKFJUQ0RldmljZVR5cGVJUGFkNiksCisgICAgQCJpUGFkNyw2IiA6IEAo
UlRDRGV2aWNlVHlwZUlQYWQ2KSwKKyAgICBAImkzODYiIDogQChSVENEZXZpY2VUeXBlU2ltdWxh
dG9yaTM4NiksCisgICAgQCJ4ODZfNjQiIDogQChSVENEZXZpY2VUeXBlU2ltdWxhdG9yeDg2XzY0
KSwKICAgfTsKIAogICBSVENEZXZpY2VUeXBlIGRldmljZVR5cGUgPSBSVENEZXZpY2VUeXBlVW5r
bm93bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL25hdGl2ZS9hcGkvdmlkZW9fY2FwdHVyZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9hcGkvdmlkZW9fY2Fw
dHVyZXIuaAppbmRleCA1YjZmM2Y5MzliYWE3YzY2MjMzNWQ3OTFlNjg4MDY5MzM4OWExZDUxLi5k
NmYzOTZiNDcwMWNhYzU3MDhiMGY2NzZkYTQ2NjM2NjU0ZjM2YTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvYXBp
L3ZpZGVvX2NhcHR1cmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL2FwaS92aWRlb19jYXB0dXJlci5oCkBAIC0xNSw2ICsx
NSw3IEBACiAKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX3ZpZGVvX2Vu
Y29kZXJfZmFjdG9yeS5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KaW5k
ZXggYzRjODVjYzZhYjkwMzUzNWU1ZWYwMWU3Y2Y1YTgxNTMxZDE3MGU2Zi4uYWU0NTAzM2E1NzBm
MWMxOTg5ZGIzMWM1NGUxZmJlZjE5ZWZjNGExNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX3ZpZGVv
X2VuY29kZXJfZmFjdG9yeS5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
Lm1tCkBAIC04NiwyOCArODYsMjYgQEAgY2xhc3MgT2JqQ1ZpZGVvRW5jb2RlciA6IHB1YmxpYyBW
aWRlb0VuY29kZXIgewogICAgICAgICAgICAgICAgICBmcmFtZVR5cGVzOnJ0Y0ZyYW1lVHlwZXNd
OwogICB9CiAKLSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRf
bG9zcywgaW50NjRfdCBydHQpIHsgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsgfQotCiAg
IGludDMyX3QgU2V0UmF0ZXModWludDMyX3QgYml0cmF0ZSwgdWludDMyX3QgZnJhbWVyYXRlKSB7
CiAgICAgcmV0dXJuIFtlbmNvZGVyXyBzZXRCaXRyYXRlOmJpdHJhdGUgZnJhbWVyYXRlOmZyYW1l
cmF0ZV07CiAgIH0KIAogICBpbnQzMl90IFNldFJhdGVBbGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0
cmF0ZUFsbG9jYXRpb24mIGFsbG9jYXRpb24sIHVpbnQzMl90IGZyYW1lcmF0ZSkgewotICAgIFJU
Q1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gKmJpdHJhdGVBbGxvY2F0aW9uID0KLSAgICAgIFtbUlRD
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBhbGxvY10gaW5pdFdpdGhOYXRpdmVWaWRlb0JpdHJhdGVB
bGxvY2F0aW9uOiZhbGxvY2F0aW9uXTsKLSAgICByZXR1cm4gW2VuY29kZXJfIHNldFJhdGVBbGxv
Y2F0aW9uOiBiaXRyYXRlQWxsb2NhdGlvbiBmcmFtZXJhdGU6ZnJhbWVyYXRlXTsKKyAgICBhdXRv
ICpydGNBbGxvY2F0aW9uID0gW1tSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGFsbG9jXSBpbml0
V2l0aE5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb246JmFsbG9jYXRpb25dOworICAgIHJldHVy
biBbZW5jb2Rlcl8gc2V0UmF0ZUFsbG9jYXRpb246IHJ0Y0FsbG9jYXRpb24gZnJhbWVyYXRlOmZy
YW1lcmF0ZV07CiAgIH0KIAotICBib29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICBWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZv
KCkgY29uc3QgeworICAgIEVuY29kZXJJbmZvIGluZm87CisgICAgaW5mby5zdXBwb3J0c19uYXRp
dmVfaGFuZGxlID0gdHJ1ZTsKKyAgICBpbmZvLmltcGxlbWVudGF0aW9uX25hbWUgPSBpbXBsZW1l
bnRhdGlvbl9uYW1lXzsKIAotICBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBHZXRTY2Fs
aW5nU2V0dGluZ3MoKSBjb25zdCB7CiAgICAgUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzICpx
cF90aHJlc2hvbGRzID0gW2VuY29kZXJfIHNjYWxpbmdTZXR0aW5nc107Ci0gICAgcmV0dXJuIHFw
X3RocmVzaG9sZHMgPyBTY2FsaW5nU2V0dGluZ3MocXBfdGhyZXNob2xkcy5sb3csIHFwX3RocmVz
aG9sZHMuaGlnaCkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NhbGluZ1NldHRpbmdz
OjprT2ZmOworICAgIGluZm8uc2NhbGluZ19zZXR0aW5ncyA9IHFwX3RocmVzaG9sZHMgPyBTY2Fs
aW5nU2V0dGluZ3MocXBfdGhyZXNob2xkcy5sb3csIHFwX3RocmVzaG9sZHMuaGlnaCkgOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2FsaW5nU2V0dGluZ3M6
OmtPZmY7CisgICAgcmV0dXJuIGluZm87CiAgIH0KIAotICBjb25zdCBjaGFyICpJbXBsZW1lbnRh
dGlvbk5hbWUoKSBjb25zdCB7IHJldHVybiBpbXBsZW1lbnRhdGlvbl9uYW1lXy5jX3N0cigpOyB9
Ci0KICBwcml2YXRlOgogICBpZDxSVENWaWRlb0VuY29kZXI+IGVuY29kZXJfOwogICBjb25zdCBz
dGQ6OnN0cmluZyBpbXBsZW1lbnRhdGlvbl9uYW1lXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENBdWRp
b0RldmljZU1vZHVsZV94Y3Rlc3QubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQXVkaW9EZXZpY2VNb2R1bGVfeGN0ZXN0
Lm1tCmluZGV4IDY4OWRlNTgxZDA0ZWFmNThhZTQ3M2NjZGZlNTIxODNiMDI1NjQzN2UuLjU1ZDQ4
YzI4YmE3MWU5M2YwM2Y5ZGViNzg3M2Y1NDExM2MwYzFlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENB
dWRpb0RldmljZU1vZHVsZV94Y3Rlc3QubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0F1ZGlvRGV2aWNlTW9kdWxl
X3hjdGVzdC5tbQpAQCAtMTI4LDE3ICsxMjgsMjAgQEAgc3RhdGljIGNvbnN0IE5TVUludGVnZXIg
a0Z1bGxEdXBsZXhUaW1lSW5TZWMgPSAxMDsKIHN0YXRpYyBjb25zdCBOU1VJbnRlZ2VyIGtOdW1J
Z25vcmVGaXJzdENhbGxiYWNrcyA9IDUwOwogCiBAaW50ZXJmYWNlIFJUQ0F1ZGlvRGV2aWNlTW9k
dWxlVGVzdHMgOiBYQ1Rlc3RDYXNlIHsKLQogICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb0RldmljZU1vZHVsZT4gYXVkaW9EZXZpY2VNb2R1bGU7Ci0gIHdlYnJ0Yzo6QXVkaW9QYXJh
bWV0ZXJzIHBsYXlvdXRQYXJhbWV0ZXJzOwotICB3ZWJydGM6OkF1ZGlvUGFyYW1ldGVycyByZWNv
cmRQYXJhbWV0ZXJzOwogICBNb2NrQXVkaW9UcmFuc3BvcnQgbW9jazsKIH0KIAorQHByb3BlcnR5
KG5vbmF0b21pYywgYXNzaWduKSB3ZWJydGM6OkF1ZGlvUGFyYW1ldGVycyBwbGF5b3V0UGFyYW1l
dGVyczsKK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgd2VicnRjOjpBdWRpb1BhcmFtZXRl
cnMgcmVjb3JkUGFyYW1ldGVyczsKKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gUlRDQXVkaW9E
ZXZpY2VNb2R1bGVUZXN0cwogCitAc3ludGhlc2l6ZSBwbGF5b3V0UGFyYW1ldGVyczsKK0BzeW50
aGVzaXplIHJlY29yZFBhcmFtZXRlcnM7CisKIC0gKHZvaWQpc2V0VXAgewogICBbc3VwZXIgc2V0
VXBdOwogICBhdWRpb0RldmljZU1vZHVsZSA9IHdlYnJ0Yzo6Q3JlYXRlQXVkaW9EZXZpY2VNb2R1
bGUoKTsKQEAgLTI1NCwxMCArMjU3LDEwIEBAIC0gKHZvaWQpdGVzdFN0YXJ0UGxheW91dE9uVHdv
SW5zdGFuY2VzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgKmVsYXBzZWRfdGltZV9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgKm50cF90aW1lX21zKSB7CiAgICAgblNhbXBsZXNPdXQgPSBuU2FtcGxlczsK
LSAgICBYQ1RBc3NlcnRFcXVhbChuU2FtcGxlcywgcGxheW91dFBhcmFtZXRlcnMuZnJhbWVzX3Bl
cl8xMG1zX2J1ZmZlcigpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbChuU2FtcGxlcywgc2VsZi5wbGF5
b3V0UGFyYW1ldGVycy5mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpOwogICAgIFhDVEFzc2VydEVx
dWFsKG5CeXRlc1BlclNhbXBsZSwga0J5dGVzUGVyU2FtcGxlKTsKLSAgICBYQ1RBc3NlcnRFcXVh
bChuQ2hhbm5lbHMsIHBsYXlvdXRQYXJhbWV0ZXJzLmNoYW5uZWxzKCkpOwotICAgIFhDVEFzc2Vy
dEVxdWFsKChpbnQpIHNhbXBsZXNQZXJTZWMsIHBsYXlvdXRQYXJhbWV0ZXJzLnNhbXBsZV9yYXRl
KCkpOworICAgIFhDVEFzc2VydEVxdWFsKG5DaGFubmVscywgc2VsZi5wbGF5b3V0UGFyYW1ldGVy
cy5jaGFubmVscygpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbCgoaW50KXNhbXBsZXNQZXJTZWMsIHNl
bGYucGxheW91dFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7CiAgICAgWENUQXNzZXJ0Tm90RXF1
YWwoKHZvaWQqKU5VTEwsIGF1ZGlvU2FtcGxlcyk7CiAKICAgICByZXR1cm4gMDsKQEAgLTI5MSwx
MCArMjk0LDEwIEBAIC0gKHZvaWQpdGVzdFN0YXJ0UGxheW91dE9uVHdvSW5zdGFuY2VzIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90ICplbGFwc2VkX3Rp
bWVfbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCAq
bnRwX3RpbWVfbXMpIHsKICAgICBuU2FtcGxlc091dCA9IG5TYW1wbGVzOwotICAgIFhDVEFzc2Vy
dEVxdWFsKG5TYW1wbGVzLCBwbGF5b3V0UGFyYW1ldGVycy5mcmFtZXNfcGVyXzEwbXNfYnVmZmVy
KCkpOworICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJz
LmZyYW1lc19wZXJfMTBtc19idWZmZXIoKSk7CiAgICAgWENUQXNzZXJ0RXF1YWwobkJ5dGVzUGVy
U2FtcGxlLCBrQnl0ZXNQZXJTYW1wbGUpOwotICAgIFhDVEFzc2VydEVxdWFsKG5DaGFubmVscywg
cGxheW91dFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwoKGludCkg
c2FtcGxlc1BlclNlYywgcGxheW91dFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7CisgICAgWENU
QXNzZXJ0RXF1YWwobkNoYW5uZWxzLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLmNoYW5uZWxzKCkp
OworICAgIFhDVEFzc2VydEVxdWFsKChpbnQpc2FtcGxlc1BlclNlYywgc2VsZi5wbGF5b3V0UGFy
YW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKICAgICBYQ1RBc3NlcnROb3RFcXVhbCgodm9pZCopTlVM
TCwgYXVkaW9TYW1wbGVzKTsKICAgICBpZiAoKytudW1fY2FsbGJhY2tzID09IGtOdW1DYWxsYmFj
a3MpIHsKICAgICAgIFtwbGF5b3V0RXhwZWN0YXRpb24gZnVsZmlsbF07CkBAIC0zMzAsMTAgKzMz
MywxMCBAQCAtICh2b2lkKXRlc3RTdGFydFBsYXlvdXRWZXJpZnlDYWxsYmFja3MgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCAqZWxhcHNlZF90aW1lX21z
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCAqbnRwX3Rp
bWVfbXMpIHsKICAgICBuU2FtcGxlc091dCA9IG5TYW1wbGVzOwotICAgIFhDVEFzc2VydEVxdWFs
KG5TYW1wbGVzLCBwbGF5b3V0UGFyYW1ldGVycy5mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpOwor
ICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLmZyYW1l
c19wZXJfMTBtc19idWZmZXIoKSk7CiAgICAgWENUQXNzZXJ0RXF1YWwobkJ5dGVzUGVyU2FtcGxl
LCBrQnl0ZXNQZXJTYW1wbGUpOwotICAgIFhDVEFzc2VydEVxdWFsKG5DaGFubmVscywgcGxheW91
dFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwoKGludCkgc2FtcGxl
c1BlclNlYywgcGxheW91dFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7CisgICAgWENUQXNzZXJ0
RXF1YWwobkNoYW5uZWxzLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLmNoYW5uZWxzKCkpOworICAg
IFhDVEFzc2VydEVxdWFsKChpbnQpc2FtcGxlc1BlclNlYywgc2VsZi5wbGF5b3V0UGFyYW1ldGVy
cy5zYW1wbGVfcmF0ZSgpKTsKICAgICBYQ1RBc3NlcnROb3RFcXVhbCgodm9pZCopTlVMTCwgYXVk
aW9TYW1wbGVzKTsKICAgICBpZiAoKytudW1fY2FsbGJhY2tzID09IGtOdW1DYWxsYmFja3MpIHsK
ICAgICAgIFtwbGF5b3V0RXhwZWN0YXRpb24gZnVsZmlsbF07CkBAIC0zNjYsMTAgKzM2OSwxMCBA
QCAtICh2b2lkKXRlc3RTdGFydFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcyB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIGtleVByZXNzZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCYgbmV3TWljTGV2ZWwp
IHsKICAgICBYQ1RBc3NlcnROb3RFcXVhbCgodm9pZCopTlVMTCwgYXVkaW9TYW1wbGVzKTsKLSAg
ICBYQ1RBc3NlcnRFcXVhbChuU2FtcGxlcywgcmVjb3JkUGFyYW1ldGVycy5mcmFtZXNfcGVyXzEw
bXNfYnVmZmVyKCkpOworICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCBzZWxmLnJlY29yZFBh
cmFtZXRlcnMuZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKTsKICAgICBYQ1RBc3NlcnRFcXVhbChu
Qnl0ZXNQZXJTYW1wbGUsIGtCeXRlc1BlclNhbXBsZSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwobkNo
YW5uZWxzLCByZWNvcmRQYXJhbWV0ZXJzLmNoYW5uZWxzKCkpOwotICAgIFhDVEFzc2VydEVxdWFs
KChpbnQpIHNhbXBsZXNQZXJTZWMsIHJlY29yZFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7Cisg
ICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxzLCBzZWxmLnJlY29yZFBhcmFtZXRlcnMuY2hhbm5l
bHMoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoKGludClzYW1wbGVzUGVyU2VjLCBzZWxmLnJlY29y
ZFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7CiAgICAgWENUQXNzZXJ0RXF1YWwoMCwgY2xvY2tE
cmlmdCk7CiAgICAgWENUQXNzZXJ0RXF1YWwoMHUsIGN1cnJlbnRNaWNMZXZlbCk7CiAgICAgWENU
QXNzZXJ0RmFsc2Uoa2V5UHJlc3NlZCk7CkBAIC00MDUsMTAgKzQwOCwxMCBAQCAtICh2b2lkKXRl
c3RTdGFydFBsYXlvdXRBbmRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCAqZWxhcHNlZF90aW1lX21zLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCAqbnRwX3RpbWVfbXMp
IHsKICAgICBuU2FtcGxlc091dCA9IG5TYW1wbGVzOwotICAgIFhDVEFzc2VydEVxdWFsKG5TYW1w
bGVzLCBwbGF5b3V0UGFyYW1ldGVycy5mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpOworICAgIFhD
VEFzc2VydEVxdWFsKG5TYW1wbGVzLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLmZyYW1lc19wZXJf
MTBtc19idWZmZXIoKSk7CiAgICAgWENUQXNzZXJ0RXF1YWwobkJ5dGVzUGVyU2FtcGxlLCBrQnl0
ZXNQZXJTYW1wbGUpOwotICAgIFhDVEFzc2VydEVxdWFsKG5DaGFubmVscywgcGxheW91dFBhcmFt
ZXRlcnMuY2hhbm5lbHMoKSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwoKGludCkgc2FtcGxlc1BlclNl
YywgcGxheW91dFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwo
bkNoYW5uZWxzLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLmNoYW5uZWxzKCkpOworICAgIFhDVEFz
c2VydEVxdWFsKChpbnQpc2FtcGxlc1BlclNlYywgc2VsZi5wbGF5b3V0UGFyYW1ldGVycy5zYW1w
bGVfcmF0ZSgpKTsKICAgICBYQ1RBc3NlcnROb3RFcXVhbCgodm9pZCopTlVMTCwgYXVkaW9TYW1w
bGVzKTsKICAgICBpZiAoY2FsbGJhY2tDb3VudCsrID49IGtOdW1DYWxsYmFja3MpIHsKICAgICAg
IFtwbGF5b3V0RXhwZWN0YXRpb24gZnVsZmlsbF07CkBAIC00MjgsMTAgKzQzMSwxMCBAQCAtICh2
b2lkKXRlc3RTdGFydFBsYXlvdXRBbmRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBrZXlQcmVzc2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QmIG5ld01pY0xl
dmVsKSB7CiAgICAgWENUQXNzZXJ0Tm90RXF1YWwoKHZvaWQqKU5VTEwsIGF1ZGlvU2FtcGxlcyk7
Ci0gICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHJlY29yZFBhcmFtZXRlcnMuZnJhbWVzX3Bl
cl8xMG1zX2J1ZmZlcigpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbChuU2FtcGxlcywgc2VsZi5yZWNv
cmRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBtc19idWZmZXIoKSk7CiAgICAgWENUQXNzZXJ0RXF1
YWwobkJ5dGVzUGVyU2FtcGxlLCBrQnl0ZXNQZXJTYW1wbGUpOwotICAgIFhDVEFzc2VydEVxdWFs
KG5DaGFubmVscywgcmVjb3JkUGFyYW1ldGVycy5jaGFubmVscygpKTsKLSAgICBYQ1RBc3NlcnRF
cXVhbCgoaW50KSBzYW1wbGVzUGVyU2VjLCByZWNvcmRQYXJhbWV0ZXJzLnNhbXBsZV9yYXRlKCkp
OworICAgIFhDVEFzc2VydEVxdWFsKG5DaGFubmVscywgc2VsZi5yZWNvcmRQYXJhbWV0ZXJzLmNo
YW5uZWxzKCkpOworICAgIFhDVEFzc2VydEVxdWFsKChpbnQpc2FtcGxlc1BlclNlYywgc2VsZi5y
ZWNvcmRQYXJhbWV0ZXJzLnNhbXBsZV9yYXRlKCkpOwogICAgIFhDVEFzc2VydEVxdWFsKDAsIGNs
b2NrRHJpZnQpOwogICAgIFhDVEFzc2VydEVxdWFsKDB1LCBjdXJyZW50TWljTGV2ZWwpOwogICAg
IFhDVEFzc2VydEZhbHNlKGtleVByZXNzZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0NhbGxiYWNr
TG9nZ2VyX3hjdGVzdC5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0NhbGxiYWNrTG9nZ2VyX3hjdGVzdC5tCmluZGV4IDRh
MGEyYjNlNmQxNWJkNzFkOTZhNTkyMjIyYWNkNWEzNDc0YzJhOWUuLmNlYWE3NjJmMWY4YTFmMDk3
ZDUxYzU1ZTA5MjUyZDkyZWQ5OWI3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENDYWxsYmFja0xvZ2dl
cl94Y3Rlc3QubQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQ2FsbGJhY2tMb2dnZXJfeGN0ZXN0Lm0KQEAgLTQ5LDYg
KzQ5LDIzIEBAIC0gKHZvaWQpdGVzdENhbGxiYWNrR2V0c0NhbGxlZEZvckFwcHJvcHJpYXRlTGV2
ZWwgewogICBbc2VsZiB3YWl0Rm9yRXhwZWN0YXRpb25zOkBbIGNhbGxiYWNrRXhwZWN0YXRpb24g
XSB0aW1lb3V0OjEwLjBdOwogfQogCistICh2b2lkKXRlc3RDYWxsYmFja1dpdGhTZXZlcml0eUdl
dHNDYWxsZWRGb3JBcHByb3ByaWF0ZUxldmVsIHsKKyAgc2VsZi5sb2dnZXIuc2V2ZXJpdHkgPSBS
VENMb2dnaW5nU2V2ZXJpdHlXYXJuaW5nOworCisgIFhDVGVzdEV4cGVjdGF0aW9uICpjYWxsYmFj
a0V4cGVjdGF0aW9uID0gW3NlbGYgZXhwZWN0YXRpb25XaXRoRGVzY3JpcHRpb246QCJjYWxsYmFj
a1dhcm5pbmciXTsKKworICBbc2VsZi5sb2dnZXIKKyAgICAgIHN0YXJ0V2l0aE1lc3NhZ2VBbmRT
ZXZlcml0eUhhbmRsZXI6XihOU1N0cmluZyAqbWVzc2FnZSwgUlRDTG9nZ2luZ1NldmVyaXR5IHNl
dmVyaXR5KSB7CisgICAgICAgIFhDVEFzc2VydFRydWUoW21lc3NhZ2UgaGFzU3VmZml4OkAiSG9y
cmlibGUgZXJyb3JcbiJdKTsKKyAgICAgICAgWENUQXNzZXJ0RXF1YWwoc2V2ZXJpdHksIFJUQ0xv
Z2dpbmdTZXZlcml0eUVycm9yKTsKKyAgICAgICAgW2NhbGxiYWNrRXhwZWN0YXRpb24gZnVsZmls
bF07CisgICAgICB9XTsKKworICBSVENMb2dFcnJvcigiSG9ycmlibGUgZXJyb3IiKTsKKworICBb
c2VsZiB3YWl0Rm9yRXhwZWN0YXRpb25zOkBbIGNhbGxiYWNrRXhwZWN0YXRpb24gXSB0aW1lb3V0
OjEwLjBdOworfQorCiAtICh2b2lkKXRlc3RDYWxsYmFja0RvZXNOb3RHZXRDYWxsZWRGb3JPdGhl
ckxldmVscyB7CiAgIHNlbGYubG9nZ2VyLnNldmVyaXR5ID0gUlRDTG9nZ2luZ1NldmVyaXR5RXJy
b3I7CiAKQEAgLTY2LDEyICs4Myw3NiBAQCAtICh2b2lkKXRlc3RDYWxsYmFja0RvZXNOb3RHZXRD
YWxsZWRGb3JPdGhlckxldmVscyB7CiAgIFtzZWxmIHdhaXRGb3JFeHBlY3RhdGlvbnM6QFsgY2Fs
bGJhY2tFeHBlY3RhdGlvbiBdIHRpbWVvdXQ6MTAuMF07CiB9CiAKKy0gKHZvaWQpdGVzdENhbGxi
YWNrV2l0aFNldmVyaXR5RG9lc05vdEdldENhbGxlZEZvck90aGVyTGV2ZWxzIHsKKyAgc2VsZi5s
b2dnZXIuc2V2ZXJpdHkgPSBSVENMb2dnaW5nU2V2ZXJpdHlFcnJvcjsKKworICBYQ1Rlc3RFeHBl
Y3RhdGlvbiAqY2FsbGJhY2tFeHBlY3RhdGlvbiA9IFtzZWxmIGV4cGVjdGF0aW9uV2l0aERlc2Ny
aXB0aW9uOkAiY2FsbGJhY2tFcnJvciJdOworCisgIFtzZWxmLmxvZ2dlcgorICAgICAgc3RhcnRX
aXRoTWVzc2FnZUFuZFNldmVyaXR5SGFuZGxlcjpeKE5TU3RyaW5nICptZXNzYWdlLCBSVENMb2dn
aW5nU2V2ZXJpdHkgc2V2ZXJpdHkpIHsKKyAgICAgICAgWENUQXNzZXJ0VHJ1ZShbbWVzc2FnZSBo
YXNTdWZmaXg6QCJIb3JyaWJsZSBlcnJvclxuIl0pOworICAgICAgICBYQ1RBc3NlcnRFcXVhbChz
ZXZlcml0eSwgUlRDTG9nZ2luZ1NldmVyaXR5RXJyb3IpOworICAgICAgICBbY2FsbGJhY2tFeHBl
Y3RhdGlvbiBmdWxmaWxsXTsKKyAgICAgIH1dOworCisgIFJUQ0xvZ0luZm8oIkp1c3Qgc29tZSBp
bmZvIik7CisgIFJUQ0xvZ1dhcm5pbmcoIldhcm5pbmcgd2FybmluZyIpOworICBSVENMb2dFcnJv
cigiSG9ycmlibGUgZXJyb3IiKTsKKworICBbc2VsZiB3YWl0Rm9yRXhwZWN0YXRpb25zOkBbIGNh
bGxiYWNrRXhwZWN0YXRpb24gXSB0aW1lb3V0OjEwLjBdOworfQorCistICh2b2lkKXRlc3RDYWxs
YmFja0RvZXNOb3RnZXRDYWxsZWRGb3JTZXZlcml0eU5vbmUgeworICBzZWxmLmxvZ2dlci5zZXZl
cml0eSA9IFJUQ0xvZ2dpbmdTZXZlcml0eU5vbmU7CisKKyAgWENUZXN0RXhwZWN0YXRpb24gKmNh
bGxiYWNrRXhwZWN0YXRpb24gPSBbc2VsZiBleHBlY3RhdGlvbldpdGhEZXNjcmlwdGlvbjpAInVu
ZXhwZWN0ZWRDYWxsYmFjayJdOworCisgIFtzZWxmLmxvZ2dlciBzdGFydDpeKE5TU3RyaW5nICpt
ZXNzYWdlKSB7CisgICAgW2NhbGxiYWNrRXhwZWN0YXRpb24gZnVsZmlsbF07CisgICAgWENUQXNz
ZXJ0VHJ1ZShmYWxzZSk7CisgIH1dOworCisgIFJUQ0xvZ0luZm8oIkp1c3Qgc29tZSBpbmZvIik7
CisgIFJUQ0xvZ1dhcm5pbmcoIldhcm5pbmcgd2FybmluZyIpOworICBSVENMb2dFcnJvcigiSG9y
cmlibGUgZXJyb3IiKTsKKworICBYQ1RXYWl0ZXIgKndhaXRlciA9IFtbWENUV2FpdGVyIGFsbG9j
XSBpbml0XTsKKyAgWENUV2FpdGVyUmVzdWx0IHJlc3VsdCA9IFt3YWl0ZXIgd2FpdEZvckV4cGVj
dGF0aW9uczpAWyBjYWxsYmFja0V4cGVjdGF0aW9uIF0gdGltZW91dDoxLjBdOworICBYQ1RBc3Nl
cnRFcXVhbChyZXN1bHQsIFhDVFdhaXRlclJlc3VsdFRpbWVkT3V0KTsKK30KKworLSAodm9pZCl0
ZXN0Q2FsbGJhY2tXaXRoU2V2ZXJpdHlEb2VzTm90Z2V0Q2FsbGVkRm9yU2V2ZXJpdHlOb25lIHsK
KyAgc2VsZi5sb2dnZXIuc2V2ZXJpdHkgPSBSVENMb2dnaW5nU2V2ZXJpdHlOb25lOworCisgIFhD
VGVzdEV4cGVjdGF0aW9uICpjYWxsYmFja0V4cGVjdGF0aW9uID0gW3NlbGYgZXhwZWN0YXRpb25X
aXRoRGVzY3JpcHRpb246QCJ1bmV4cGVjdGVkQ2FsbGJhY2siXTsKKworICBbc2VsZi5sb2dnZXIK
KyAgICAgIHN0YXJ0V2l0aE1lc3NhZ2VBbmRTZXZlcml0eUhhbmRsZXI6XihOU1N0cmluZyAqbWVz
c2FnZSwgUlRDTG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5KSB7CisgICAgICAgIFtjYWxsYmFja0V4
cGVjdGF0aW9uIGZ1bGZpbGxdOworICAgICAgICBYQ1RBc3NlcnRUcnVlKGZhbHNlKTsKKyAgICAg
IH1dOworCisgIFJUQ0xvZ0luZm8oIkp1c3Qgc29tZSBpbmZvIik7CisgIFJUQ0xvZ1dhcm5pbmco
Ildhcm5pbmcgd2FybmluZyIpOworICBSVENMb2dFcnJvcigiSG9ycmlibGUgZXJyb3IiKTsKKwor
ICBYQ1RXYWl0ZXIgKndhaXRlciA9IFtbWENUV2FpdGVyIGFsbG9jXSBpbml0XTsKKyAgWENUV2Fp
dGVyUmVzdWx0IHJlc3VsdCA9IFt3YWl0ZXIgd2FpdEZvckV4cGVjdGF0aW9uczpAWyBjYWxsYmFj
a0V4cGVjdGF0aW9uIF0gdGltZW91dDoxLjBdOworICBYQ1RBc3NlcnRFcXVhbChyZXN1bHQsIFhD
VFdhaXRlclJlc3VsdFRpbWVkT3V0KTsKK30KKwogLSAodm9pZCl0ZXN0U3RhcnRpbmdXaXRoTmls
Q2FsbGJhY2tEb2VzTm90Q3Jhc2ggewogICBbc2VsZi5sb2dnZXIgc3RhcnQ6bmlsXTsKIAogICBS
VENMb2dFcnJvcigiSG9ycmlibGUgZXJyb3IiKTsKIH0KIAorLSAodm9pZCl0ZXN0U3RhcnRpbmdX
aXRoTmlsQ2FsbGJhY2tXaXRoU2V2ZXJpdHlEb2VzTm90Q3Jhc2ggeworICBbc2VsZi5sb2dnZXIg
c3RhcnRXaXRoTWVzc2FnZUFuZFNldmVyaXR5SGFuZGxlcjpuaWxdOworCisgIFJUQ0xvZ0Vycm9y
KCJIb3JyaWJsZSBlcnJvciIpOworfQorCiAtICh2b2lkKXRlc3RTdG9wQ2FsbGJhY2tMb2dnZXIg
ewogICBYQ1Rlc3RFeHBlY3RhdGlvbiAqY2FsbGJhY2tFeHBlY3RhdGlvbiA9IFtzZWxmIGV4cGVj
dGF0aW9uV2l0aERlc2NyaXB0aW9uOkAic3RvcHBlZCJdOwogCkBAIC04OCw2ICsxNjksMjMgQEAg
LSAodm9pZCl0ZXN0U3RvcENhbGxiYWNrTG9nZ2VyIHsKICAgWENUQXNzZXJ0RXF1YWwocmVzdWx0
LCBYQ1RXYWl0ZXJSZXN1bHRUaW1lZE91dCk7CiB9CiAKKy0gKHZvaWQpdGVzdFN0b3BDYWxsYmFj
a1dpdGhTZXZlcml0eUxvZ2dlciB7CisgIFhDVGVzdEV4cGVjdGF0aW9uICpjYWxsYmFja0V4cGVj
dGF0aW9uID0gW3NlbGYgZXhwZWN0YXRpb25XaXRoRGVzY3JpcHRpb246QCJzdG9wcGVkIl07CisK
KyAgW3NlbGYubG9nZ2VyCisgICAgICBzdGFydFdpdGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVy
Ol4oTlNTdHJpbmcgKm1lc3NhZ2UsIFJUQ0xvZ2dpbmdTZXZlcml0eSBsb2dnaW5nU2VydmVyaXR5
KSB7CisgICAgICAgIFtjYWxsYmFja0V4cGVjdGF0aW9uIGZ1bGZpbGxdOworICAgICAgfV07CisK
KyAgW3NlbGYubG9nZ2VyIHN0b3BdOworCisgIFJUQ0xvZ0luZm8oIkp1c3Qgc29tZSBpbmZvIik7
CisKKyAgWENUV2FpdGVyICp3YWl0ZXIgPSBbW1hDVFdhaXRlciBhbGxvY10gaW5pdF07CisgIFhD
VFdhaXRlclJlc3VsdCByZXN1bHQgPSBbd2FpdGVyIHdhaXRGb3JFeHBlY3RhdGlvbnM6QFsgY2Fs
bGJhY2tFeHBlY3RhdGlvbiBdIHRpbWVvdXQ6MS4wXTsKKyAgWENUQXNzZXJ0RXF1YWwocmVzdWx0
LCBYQ1RXYWl0ZXJSZXN1bHRUaW1lZE91dCk7Cit9CisKIC0gKHZvaWQpdGVzdERlc3Ryb3lpbmdD
YWxsYmFja0xvZ2dlciB7CiAgIFhDVGVzdEV4cGVjdGF0aW9uICpjYWxsYmFja0V4cGVjdGF0aW9u
ID0gW3NlbGYgZXhwZWN0YXRpb25XaXRoRGVzY3JpcHRpb246QCJkZXN0cm95ZWQiXTsKIApAQCAt
MTA0LDQgKzIwMiw0MyBAQCAtICh2b2lkKXRlc3REZXN0cm95aW5nQ2FsbGJhY2tMb2dnZXIgewog
ICBYQ1RBc3NlcnRFcXVhbChyZXN1bHQsIFhDVFdhaXRlclJlc3VsdFRpbWVkT3V0KTsKIH0KIAor
LSAodm9pZCl0ZXN0RGVzdHJveWluZ0NhbGxiYWNrV2l0aFNldmVyaXR5TG9nZ2VyIHsKKyAgWENU
ZXN0RXhwZWN0YXRpb24gKmNhbGxiYWNrRXhwZWN0YXRpb24gPSBbc2VsZiBleHBlY3RhdGlvbldp
dGhEZXNjcmlwdGlvbjpAImRlc3Ryb3llZCJdOworCisgIFtzZWxmLmxvZ2dlcgorICAgICAgc3Rh
cnRXaXRoTWVzc2FnZUFuZFNldmVyaXR5SGFuZGxlcjpeKE5TU3RyaW5nICptZXNzYWdlLCBSVENM
b2dnaW5nU2V2ZXJpdHkgbG9nZ2luZ1NlcnZlcml0eSkgeworICAgICAgICBbY2FsbGJhY2tFeHBl
Y3RhdGlvbiBmdWxmaWxsXTsKKyAgICAgIH1dOworCisgIHNlbGYubG9nZ2VyID0gbmlsOworCisg
IFJUQ0xvZ0luZm8oIkp1c3Qgc29tZSBpbmZvIik7CisKKyAgWENUV2FpdGVyICp3YWl0ZXIgPSBb
W1hDVFdhaXRlciBhbGxvY10gaW5pdF07CisgIFhDVFdhaXRlclJlc3VsdCByZXN1bHQgPSBbd2Fp
dGVyIHdhaXRGb3JFeHBlY3RhdGlvbnM6QFsgY2FsbGJhY2tFeHBlY3RhdGlvbiBdIHRpbWVvdXQ6
MS4wXTsKKyAgWENUQXNzZXJ0RXF1YWwocmVzdWx0LCBYQ1RXYWl0ZXJSZXN1bHRUaW1lZE91dCk7
Cit9CisKKy0gKHZvaWQpdGVzdENhbGxiYWNrV2l0aFNldmVyaXR5TG9nZ2VyQ2Fubm90U3RhcnRU
d2ljZSB7CisgIHNlbGYubG9nZ2VyLnNldmVyaXR5ID0gUlRDTG9nZ2luZ1NldmVyaXR5V2Fybmlu
ZzsKKworICBYQ1Rlc3RFeHBlY3RhdGlvbiAqY2FsbGJhY2tFeHBlY3RhdGlvbiA9IFtzZWxmIGV4
cGVjdGF0aW9uV2l0aERlc2NyaXB0aW9uOkAiY2FsbGJhY2tXYXJuaW5nIl07CisKKyAgW3NlbGYu
bG9nZ2VyCisgICAgICBzdGFydFdpdGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyOl4oTlNTdHJp
bmcgKm1lc3NhZ2UsIFJUQ0xvZ2dpbmdTZXZlcml0eSBsb2dnaW5nU2VydmVyaXR5KSB7CisgICAg
ICAgIFhDVEFzc2VydFRydWUoW21lc3NhZ2UgaGFzU3VmZml4OkAiSG9ycmlibGUgZXJyb3JcbiJd
KTsKKyAgICAgICAgWENUQXNzZXJ0RXF1YWwobG9nZ2luZ1NlcnZlcml0eSwgUlRDTG9nZ2luZ1Nl
dmVyaXR5RXJyb3IpOworICAgICAgICBbY2FsbGJhY2tFeHBlY3RhdGlvbiBmdWxmaWxsXTsKKyAg
ICAgIH1dOworCisgIFtzZWxmLmxvZ2dlciBzdGFydDpeKE5TU3RyaW5nICptZXNzYWdlKSB7Cisg
ICAgW2NhbGxiYWNrRXhwZWN0YXRpb24gZnVsZmlsbF07CisgICAgWENUQXNzZXJ0VHJ1ZShmYWxz
ZSk7CisgIH1dOworCisgIFJUQ0xvZ0Vycm9yKCJIb3JyaWJsZSBlcnJvciIpOworCisgIFtzZWxm
IHdhaXRGb3JFeHBlY3RhdGlvbnM6QFsgY2FsbGJhY2tFeHBlY3RhdGlvbiBdIHRpbWVvdXQ6MTAu
MF07Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENDZXJ0aWZpY2F0ZVRlc3QubW0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVz
dHMvUlRDQ2VydGlmaWNhdGVUZXN0Lm1tCmluZGV4IDI1ODVhMjc4MTE4ZTk5YmYzNzViNDAxYjEz
Yjg0ZjA2MjVkNGUwNWYuLjViZjFlYjNmZTQ3MDc0NzdmZmI4NDIyM2I1NTRmNDZhZTg0ZDU2Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL3VuaXR0ZXN0cy9SVENDZXJ0aWZpY2F0ZVRlc3QubW0KKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0NlcnRp
ZmljYXRlVGVzdC5tbQpAQCAtNzEsNyArNzEsNyBAQCAtICh2b2lkKXRlc3RDZXJ0aWZpY2F0ZUlz
VXNlZEluQ29uZmlnIHsKIAogQGVuZAogCi1URVNUKENlcnRpZmljYXRlVGVzdCwgQ2VydGlmaWNh
dGVJc1VzZWRJbkNvbmZpZykgeworVEVTVChDZXJ0aWZpY2F0ZVRlc3QsIERJU0FCTEVEX0NlcnRp
ZmljYXRlSXNVc2VkSW5Db25maWcpIHsKICAgUlRDQ2VydGlmaWNhdGVUZXN0ICp0ZXN0ID0gW1tS
VENDZXJ0aWZpY2F0ZVRlc3QgYWxsb2NdIGluaXRdOwogICBbdGVzdCB0ZXN0Q2VydGlmaWNhdGVJ
c1VzZWRJbkNvbmZpZ107CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQ29uZmlndXJhdGlvblRlc3Qu
bW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91
bml0dGVzdHMvUlRDQ29uZmlndXJhdGlvblRlc3QubW0KaW5kZXggMWVmNzE4YWQ0OTU4ZGU3ZDc3
NmZmNTliYjc0MzNkMDU3MDNhOTlmYy4uZjMxZmNmZDg1OGQ5MjlmNjA2NGY4N2M0OGVmMTA3YTQ2
ZThiZjhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0NvbmZpZ3VyYXRpb25UZXN0Lm1tCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0
cy9SVENDb25maWd1cmF0aW9uVGVzdC5tbQpAQCAtNTAsNiArNTAsMTIgQEAgLSAodm9pZCl0ZXN0
Q29udmVyc2lvblRvTmF0aXZlQ29uZmlndXJhdGlvbiB7CiAgICAgICBSVENDb250aW51YWxHYXRo
ZXJpbmdQb2xpY3lHYXRoZXJDb250aW51YWxseTsKICAgY29uZmlnLnNob3VsZFBydW5lVHVyblBv
cnRzID0gWUVTOwogICBjb25maWcuaWNlUmVnYXRoZXJJbnRlcnZhbFJhbmdlID0gcmFuZ2U7Cisg
IGNvbmZpZy5jcnlwdG9PcHRpb25zID0gW1tSVENDcnlwdG9PcHRpb25zIGFsbG9jXSBpbml0V2l0
aFNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXM6WUVTCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBo
ZXI6WUVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3J0
cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnM6WUVTCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNmcmFtZVJlcXVpcmVGcmFt
ZUVuY3J5cHRpb246WUVTXTsKKyAgY29uZmlnLnJ0Y3BBdWRpb1JlcG9ydEludGVydmFsTXMgPSAy
NTAwOworICBjb25maWcucnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxNcyA9IDM3NTA7CiAKICAgc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3Vy
YXRpb24+CiAgICAgICBuYXRpdmVDb25maWcoW2NvbmZpZyBjcmVhdGVOYXRpdmVDb25maWd1cmF0
aW9uXSk7CkBAIC03OCw2ICs4NCwxMiBAQCAtICh2b2lkKXRlc3RDb252ZXJzaW9uVG9OYXRpdmVD
b25maWd1cmF0aW9uIHsKICAgRVhQRUNUX0VRKHRydWUsIG5hdGl2ZUNvbmZpZy0+cHJ1bmVfdHVy
bl9wb3J0cyk7CiAgIEVYUEVDVF9FUShyYW5nZS5taW4sIG5hdGl2ZUNvbmZpZy0+aWNlX3JlZ2F0
aGVyX2ludGVydmFsX3JhbmdlLT5taW4oKSk7CiAgIEVYUEVDVF9FUShyYW5nZS5tYXgsIG5hdGl2
ZUNvbmZpZy0+aWNlX3JlZ2F0aGVyX2ludGVydmFsX3JhbmdlLT5tYXgoKSk7CisgIEVYUEVDVF9F
USh0cnVlLCBuYXRpdmVDb25maWctPmNyeXB0b19vcHRpb25zLT5zcnRwLmVuYWJsZV9nY21fY3J5
cHRvX3N1aXRlcyk7CisgIEVYUEVDVF9FUSh0cnVlLCBuYXRpdmVDb25maWctPmNyeXB0b19vcHRp
b25zLT5zcnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyKTsKKyAgRVhQRUNU
X0VRKHRydWUsIG5hdGl2ZUNvbmZpZy0+Y3J5cHRvX29wdGlvbnMtPnNydHAuZW5hYmxlX2VuY3J5
cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMpOworICBFWFBFQ1RfRVEodHJ1ZSwgbmF0aXZlQ29u
ZmlnLT5jcnlwdG9fb3B0aW9ucy0+c2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbik7Cisg
IEVYUEVDVF9FUSgyNTAwLCBuYXRpdmVDb25maWctPmF1ZGlvX3J0Y3BfcmVwb3J0X2ludGVydmFs
X21zKCkpOworICBFWFBFQ1RfRVEoMzc1MCwgbmF0aXZlQ29uZmlnLT52aWRlb19ydGNwX3JlcG9y
dF9pbnRlcnZhbF9tcygpKTsKIH0KIAogLSAodm9pZCl0ZXN0TmF0aXZlQ29udmVyc2lvblRvQ29u
ZmlndXJhdGlvbiB7CkBAIC0xMDMsNiArMTE1LDEyIEBAIC0gKHZvaWQpdGVzdE5hdGl2ZUNvbnZl
cnNpb25Ub0NvbmZpZ3VyYXRpb24gewogICAgICAgUlRDQ29udGludWFsR2F0aGVyaW5nUG9saWN5
R2F0aGVyQ29udGludWFsbHk7CiAgIGNvbmZpZy5zaG91bGRQcnVuZVR1cm5Qb3J0cyA9IFlFUzsK
ICAgY29uZmlnLmljZVJlZ2F0aGVySW50ZXJ2YWxSYW5nZSA9IHJhbmdlOworICBjb25maWcuY3J5
cHRvT3B0aW9ucyA9IFtbUlRDQ3J5cHRvT3B0aW9ucyBhbGxvY10gaW5pdFdpdGhTcnRwRW5hYmxl
R2NtQ3J5cHRvU3VpdGVzOllFUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOk5PCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3J0cEVuYWJsZUVuY3J5
cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnM6Tk8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbjpO
T107CisgIGNvbmZpZy5ydGNwQXVkaW9SZXBvcnRJbnRlcnZhbE1zID0gMTUwMDsKKyAgY29uZmln
LnJ0Y3BWaWRlb1JlcG9ydEludGVydmFsTXMgPSAyMTUwOwogCiAgIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gKm5hdGl2ZUNvbmZpZyA9CiAgICAgICBb
Y29uZmlnIGNyZWF0ZU5hdGl2ZUNvbmZpZ3VyYXRpb25dOwpAQCAtMTMwLDYgKzE0OCwyMSBAQCAt
ICh2b2lkKXRlc3ROYXRpdmVDb252ZXJzaW9uVG9Db25maWd1cmF0aW9uIHsKICAgRVhQRUNUX0VR
KGNvbmZpZy5zaG91bGRQcnVuZVR1cm5Qb3J0cywgbmV3Q29uZmlnLnNob3VsZFBydW5lVHVyblBv
cnRzKTsKICAgRVhQRUNUX0VRKGNvbmZpZy5pY2VSZWdhdGhlckludGVydmFsUmFuZ2UubWluLCBu
ZXdDb25maWcuaWNlUmVnYXRoZXJJbnRlcnZhbFJhbmdlLm1pbik7CiAgIEVYUEVDVF9FUShjb25m
aWcuaWNlUmVnYXRoZXJJbnRlcnZhbFJhbmdlLm1heCwgbmV3Q29uZmlnLmljZVJlZ2F0aGVySW50
ZXJ2YWxSYW5nZS5tYXgpOworICBFWFBFQ1RfRVEoY29uZmlnLmNyeXB0b09wdGlvbnMuc3J0cEVu
YWJsZUdjbUNyeXB0b1N1aXRlcywKKyAgICAgICAgICAgIG5ld0NvbmZpZy5jcnlwdG9PcHRpb25z
LnNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXMpOworICBFWFBFQ1RfRVEoY29uZmlnLmNyeXB0b09w
dGlvbnMuc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIsCisgICAgICAgICAgICBu
ZXdDb25maWcuY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhl
cik7CisgIEVYUEVDVF9FUShjb25maWcuY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxlRW5jcnlwdGVk
UnRwSGVhZGVyRXh0ZW5zaW9ucywKKyAgICAgICAgICAgIG5ld0NvbmZpZy5jcnlwdG9PcHRpb25z
LnNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zKTsKKyAgRVhQRUNUX0VRKGNv
bmZpZy5jcnlwdG9PcHRpb25zLnNmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb24sCisgICAgICAg
ICAgICBuZXdDb25maWcuY3J5cHRvT3B0aW9ucy5zZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9u
KTsKKyAgRVhQRUNUX0VRKGNvbmZpZy5ydGNwQXVkaW9SZXBvcnRJbnRlcnZhbE1zLCBuZXdDb25m
aWcucnRjcEF1ZGlvUmVwb3J0SW50ZXJ2YWxNcyk7CisgIEVYUEVDVF9FUShjb25maWcucnRjcFZp
ZGVvUmVwb3J0SW50ZXJ2YWxNcywgbmV3Q29uZmlnLnJ0Y3BWaWRlb1JlcG9ydEludGVydmFsTXMp
OworfQorCistICh2b2lkKXRlc3REZWZhdWx0VmFsdWVzIHsKKyAgUlRDQ29uZmlndXJhdGlvbiAq
Y29uZmlnID0gW1tSVENDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgRVhQRUNUX0VRKGNv
bmZpZy5jcnlwdG9PcHRpb25zLCBuaWwpOwogfQogCiBAZW5kCkBAIC0xMzksNSArMTcyLDYgQEAg
VEVTVChSVENDb25maWd1cmF0aW9uVGVzdCwgTmF0aXZlQ29uZmlndXJhdGlvbkNvbnZlcnNpb25U
ZXN0KSB7CiAgICAgUlRDQ29uZmlndXJhdGlvblRlc3QgKnRlc3QgPSBbW1JUQ0NvbmZpZ3VyYXRp
b25UZXN0IGFsbG9jXSBpbml0XTsKICAgICBbdGVzdCB0ZXN0Q29udmVyc2lvblRvTmF0aXZlQ29u
ZmlndXJhdGlvbl07CiAgICAgW3Rlc3QgdGVzdE5hdGl2ZUNvbnZlcnNpb25Ub0NvbmZpZ3VyYXRp
b25dOworICAgIFt0ZXN0IHRlc3REZWZhdWx0VmFsdWVzXTsKICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRl
c3RzL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXJUZXN0Lm1tIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ1BlZXJD
b25uZWN0aW9uRmFjdG9yeUJ1aWxkZXJUZXN0Lm1tCmluZGV4IDliYjUxNzk1MjFmMzRhMTYxY2Nl
M2UxNWY3NjIzZmZkNTdlZDU4MDQuLjVmODg5YTY5OWRhNjEwODUxMTkwMDQzZTNhY2ZkZmQ3Njdi
ZDlhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlCdWlsZGVyVGVz
dC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy91bml0dGVzdHMvUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlclRlc3QubW0KQEAg
LTIyLDYgKzIyLDcgQEAgZXh0ZXJuICJDIiB7CiAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2Nv
ZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9tZWRp
YV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRl
b19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2Vu
Y29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUv
YXVkaW9fZGV2aWNlLmgiCkBAIC00OSw3ICs1MCw4IEBAIC0gKHZvaWQpdGVzdEJ1aWxkZXIgewog
ICAgICAgICAgICAgICBuYXRpdmVWaWRlb0VuY29kZXJGYWN0b3J5Om51bGxwdHIKICAgICAgICAg
ICAgICAgbmF0aXZlVmlkZW9EZWNvZGVyRmFjdG9yeTpudWxscHRyCiAgICAgICAgICAgICAgICAg
ICAgICAgYXVkaW9EZXZpY2VNb2R1bGU6bnVsbHB0cgotICAgICAgICAgICAgICAgICAgYXVkaW9Q
cm9jZXNzaW5nTW9kdWxlOm51bGxwdHJdKTsKKyAgICAgICAgICAgICAgICAgIGF1ZGlvUHJvY2Vz
c2luZ01vZHVsZTpudWxscHRyCisgICAgICAgICAgICAgICAgICBtZWRpYVRyYW5zcG9ydEZhY3Rv
cnk6bnVsbHB0cl0pOwogI2VuZGlmCiAgIFJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIq
IGJ1aWxkZXIgPSBbW1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIgYWxsb2NdIGluaXRd
OwogICBSVENQZWVyQ29ubmVjdGlvbkZhY3RvcnkqIHBlZXJDb25uZWN0aW9uRmFjdG9yeSA9IFti
dWlsZGVyIGNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeV07CkBAIC02OSw3ICs3MSw4IEBAIC0g
KHZvaWQpdGVzdERlZmF1bHRDb21wb25lbnRzQnVpbGRlciB7CiAgICAgICAgICAgICAgIG5hdGl2
ZVZpZGVvRW5jb2RlckZhY3Rvcnk6bnVsbHB0cgogICAgICAgICAgICAgICBuYXRpdmVWaWRlb0Rl
Y29kZXJGYWN0b3J5Om51bGxwdHIKICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0RldmljZU1v
ZHVsZTpudWxscHRyCi0gICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6bnVs
bHB0cl0pOworICAgICAgICAgICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOm51bGxwdHIK
KyAgICAgICAgICAgICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9yeTpudWxscHRyXSk7CiAjZW5k
aWYKICAgUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlciogYnVpbGRlciA9IFtSVENQZWVy
Q29ubmVjdGlvbkZhY3RvcnlCdWlsZGVyIGRlZmF1bHRCdWlsZGVyXTsKICAgUlRDUGVlckNvbm5l
Y3Rpb25GYWN0b3J5KiBwZWVyQ29ubmVjdGlvbkZhY3RvcnkgPSBbYnVpbGRlciBjcmVhdGVQZWVy
Q29ubmVjdGlvbkZhY3RvcnldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ1BlZXJDb25uZWN0aW9uVGVz
dC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L3VuaXR0ZXN0cy9SVENQZWVyQ29ubmVjdGlvblRlc3QubW0KaW5kZXggMjhmZGVlNmEyYmQ2ZWQ4
MWUwNzAwYjRlYzExMGEyNGIyY2EwYTNjZC4uMzUzMjI1ODc5OTZkOThhYzY3NjliMDY1NWE2NDhi
MTlhM2FkOWQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ1BlZXJDb25uZWN0aW9uVGVzdC5tbQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0
dGVzdHMvUlRDUGVlckNvbm5lY3Rpb25UZXN0Lm1tCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbXBv
cnQgImFwaS9wZWVyY29ubmVjdGlvbi9SVENDb25maWd1cmF0aW9uK1ByaXZhdGUuaCIKICNpbXBv
cnQgImFwaS9wZWVyY29ubmVjdGlvbi9SVENDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJhcGkv
cGVlcmNvbm5lY3Rpb24vUlRDQ3J5cHRvT3B0aW9ucy5oIgogI2ltcG9ydCAiYXBpL3BlZXJjb25u
ZWN0aW9uL1JUQ0ljZVNlcnZlci5oIgogI2ltcG9ydCAiYXBpL3BlZXJjb25uZWN0aW9uL1JUQ01l
ZGlhQ29uc3RyYWludHMuaCIKICNpbXBvcnQgImFwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29u
bmVjdGlvbi5oIgpAQCAtNTAsNiArNTEsMTAgQEAgLSAodm9pZCl0ZXN0Q29uZmlndXJhdGlvbkdl
dHRlciB7CiAgICAgICBSVENDb250aW51YWxHYXRoZXJpbmdQb2xpY3lHYXRoZXJDb250aW51YWxs
eTsKICAgY29uZmlnLnNob3VsZFBydW5lVHVyblBvcnRzID0gWUVTOwogICBjb25maWcuYWN0aXZl
UmVzZXRTcnRwUGFyYW1zID0gWUVTOworICBjb25maWcuY3J5cHRvT3B0aW9ucyA9IFtbUlRDQ3J5
cHRvT3B0aW9ucyBhbGxvY10gaW5pdFdpdGhTcnRwRW5hYmxlR2NtQ3J5cHRvU3VpdGVzOllFUwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNydHBFbmFi
bGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOllFUworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNp
b25zOk5PCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb246Tk9dOwogCiAgIFJUQ01lZGlhQ29u
c3RyYWludHMgKmNvbnRyYWludHMgPSBbW1JUQ01lZGlhQ29uc3RyYWludHMgYWxsb2NdIGluaXRX
aXRoTWFuZGF0b3J5Q29uc3RyYWludHM6QHt9CiAgICAgICBvcHRpb25hbENvbnN0cmFpbnRzOm5p
bF07CkBAIC04OSw2ICs5NCwxNCBAQCAtICh2b2lkKXRlc3RDb25maWd1cmF0aW9uR2V0dGVyIHsK
ICAgRVhQRUNUX0VRKGNvbmZpZy5jb250aW51YWxHYXRoZXJpbmdQb2xpY3ksIG5ld0NvbmZpZy5j
b250aW51YWxHYXRoZXJpbmdQb2xpY3kpOwogICBFWFBFQ1RfRVEoY29uZmlnLnNob3VsZFBydW5l
VHVyblBvcnRzLCBuZXdDb25maWcuc2hvdWxkUHJ1bmVUdXJuUG9ydHMpOwogICBFWFBFQ1RfRVEo
Y29uZmlnLmFjdGl2ZVJlc2V0U3J0cFBhcmFtcywgbmV3Q29uZmlnLmFjdGl2ZVJlc2V0U3J0cFBh
cmFtcyk7CisgIEVYUEVDVF9FUShjb25maWcuY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxlR2NtQ3J5
cHRvU3VpdGVzLAorICAgICAgICAgICAgbmV3Q29uZmlnLmNyeXB0b09wdGlvbnMuc3J0cEVuYWJs
ZUdjbUNyeXB0b1N1aXRlcyk7CisgIEVYUEVDVF9FUShjb25maWcuY3J5cHRvT3B0aW9ucy5zcnRw
RW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlciwKKyAgICAgICAgICAgIG5ld0NvbmZpZy5j
cnlwdG9PcHRpb25zLnNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKTsKKyAgRVhQ
RUNUX0VRKGNvbmZpZy5jcnlwdG9PcHRpb25zLnNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJF
eHRlbnNpb25zLAorICAgICAgICAgICAgbmV3Q29uZmlnLmNyeXB0b09wdGlvbnMuc3J0cEVuYWJs
ZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMpOworICBFWFBFQ1RfRVEoY29uZmlnLmNyeXB0
b09wdGlvbnMuc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbiwKKyAgICAgICAgICAgIG5ld0Nv
bmZpZy5jcnlwdG9PcHRpb25zLnNmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb24pOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy91bml0dGVzdHMvbWFpbi5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL21haW4ubQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjE3ZmI0ZjQ3OWMwNTZlN2MyYTNmYTI4ZDhjYTU3ZjU4NmRjYTRhYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvbWFpbi5t
CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7Ci0gIEBhdXRvcmVsZWFzZXBvb2wg
ewotICAgIHJldHVybiBVSUFwcGxpY2F0aW9uTWFpbihhcmdjLCBhcmd2LCBuaWwsIG5pbCk7Ci0g
IH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9tYWluLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL21haW4ubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzdhODhhNjRkM2Q3NGUzNWRhOGVlMDU1ZTc4ODAxMDgyM2Q2ZmE2ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3Vu
aXR0ZXN0cy9tYWluLm1tCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTcg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4K
KyNpbmNsdWRlICJ0ZXN0L2lvcy9jb3ZlcmFnZV91dGlsX2lvcy5oIgorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhciogYXJndltdKSB7CisgIHJ0Yzo6dGVzdDo6Q29uZmlndXJlQ292ZXJhZ2VSZXBv
cnRQYXRoKCk7CisKKyAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgcmV0dXJuIFVJQXBwbGljYXRp
b25NYWluKGFyZ2MsIGFyZ3YsIG5pbCwgbmlsKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL25h
bHVfcmV3cml0ZXJfeGN0ZXN0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL25hbHVfcmV3cml0ZXJfeGN0ZXN0Lm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRiMDQ5OTAxYzUxYWI3NzY1NmI5MzQ3YjJlZDMwMWYwZDM0MjA2MWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy91bml0dGVzdHMvbmFsdV9yZXdyaXRlcl94Y3Rlc3QubW0KQEAgLTAsMCArMSw0MTQgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9oMjY0X2Nv
bW1vbi5oIgorI2luY2x1ZGUgImNvbXBvbmVudHMvdmlkZW9fY29kZWMvbmFsdV9yZXdyaXRlci5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2d1
bml0LmgiCisKKyNpbXBvcnQgPFhDVGVzdC9YQ1Rlc3QuaD4KKworI2lmIFRBUkdFVF9PU19JUEhP
TkUKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFVJS2l0
L1VJS2l0Lmg+CisjZW5kaWYKKworQGludGVyZmFjZSBOYWx1UmV3cml0ZXJUZXN0cyA6IFhDVGVz
dENhc2UKKworQGVuZAorCitzdGF0aWMgY29uc3QgdWludDhfdCBOQUxVX1RFU1RfREFUQV8wW10g
PSB7MHhBQSwgMHhCQiwgMHhDQ307CitzdGF0aWMgY29uc3QgdWludDhfdCBOQUxVX1RFU1RfREFU
QV8xW10gPSB7MHhERSwgMHhBRCwgMHhCRSwgMHhFRn07CisKKy8vIGNsYW5nLWZvcm1hdCBvZmYK
K3N0YXRpYyBjb25zdCB1aW50OF90IFNQU19QUFNfQlVGRkVSW10gPSB7CisgIC8vIFNQUyBuYWx1
LgorICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDI3LCAweDQyLCAweDAwLCAweDFFLCAweEFC
LCAweDQwLCAweEYwLCAweDI4LAorICAweEQzLCAweDcwLCAweDIwLCAweDIwLCAweDIwLCAweDIw
LAorICAvLyBQUFMgbmFsdS4KKyAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyOCwgMHhDRSwg
MHgzQywgMHgzMH07CisvLyBjbGFuZy1mb3JtYXQgb24KKworQGltcGxlbWVudGF0aW9uIE5hbHVS
ZXdyaXRlclRlc3RzCisKKy0gKHZvaWQpdGVzdENyZWF0ZVZpZGVvRm9ybWF0RGVzY3JpcHRpb24g
eworICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPQorICAgICAgd2Vi
cnRjOjpDcmVhdGVWaWRlb0Zvcm1hdERlc2NyaXB0aW9uKFNQU19QUFNfQlVGRkVSLCBhcnJheXNp
emUoU1BTX1BQU19CVUZGRVIpKTsKKyAgWENUQXNzZXJ0VHJ1ZShkZXNjcmlwdGlvbik7CisgIGlm
IChkZXNjcmlwdGlvbikgeworICAgIENGUmVsZWFzZShkZXNjcmlwdGlvbik7CisgICAgZGVzY3Jp
cHRpb24gPSBudWxscHRyOworICB9CisKKyAgLy8gY2xhbmctZm9ybWF0IG9mZgorICBjb25zdCB1
aW50OF90IHNwc19wcHNfbm90X2F0X3N0YXJ0X2J1ZmZlcltdID0geworICAgIC8vIEFkZCBzb21l
IG5vbi1TUFMvUFBTIE5BTFVzIGF0IHRoZSBiZWdpbm5pbmcKKyAgICAweDAwLCAweDAwLCAweDAw
LCAweDAxLCAweDAwLCAweDAwLCAweDAxLCAweEZGLCAweDAwLCAweDAwLCAweDAwLCAweDAxLAor
ICAgIDB4QUIsIDB4MzMsIDB4MjEsCisgICAgLy8gU1BTIG5hbHUuCisgICAgMHgwMCwgMHgwMCwg
MHgwMSwgMHgyNywgMHg0MiwgMHgwMCwgMHgxRSwgMHhBQiwgMHg0MCwgMHhGMCwgMHgyOCwgMHhE
MywKKyAgICAweDcwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgIC8vIFBQUyBuYWx1Lgor
ICAgIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjgsIDB4Q0UsIDB4M0MsIDB4MzB9OworICAvLyBjbGFu
Zy1mb3JtYXQgb24KKyAgZGVzY3JpcHRpb24gPSB3ZWJydGM6OkNyZWF0ZVZpZGVvRm9ybWF0RGVz
Y3JpcHRpb24oc3BzX3Bwc19ub3RfYXRfc3RhcnRfYnVmZmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheXNpemUoc3BzX3Bwc19ub3Rf
YXRfc3RhcnRfYnVmZmVyKSk7CisKKyAgWENUQXNzZXJ0VHJ1ZShkZXNjcmlwdGlvbik7CisKKyAg
aWYgKGRlc2NyaXB0aW9uKSB7CisgICAgQ0ZSZWxlYXNlKGRlc2NyaXB0aW9uKTsKKyAgICBkZXNj
cmlwdGlvbiA9IG51bGxwdHI7CisgIH0KKworICBjb25zdCB1aW50OF90IG90aGVyX2J1ZmZlcltd
ID0gezB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4Mjh9OworICBYQ1RBc3NlcnRGYWxzZSh3ZWJy
dGM6OkNyZWF0ZVZpZGVvRm9ybWF0RGVzY3JpcHRpb24ob3RoZXJfYnVmZmVyLCBhcnJheXNpemUo
b3RoZXJfYnVmZmVyKSkpOworfQorCistICh2b2lkKXRlc3RSZWFkRW1wdHlJbnB1dCB7CisgIGNv
bnN0IHVpbnQ4X3QgYW5uZXhfYl90ZXN0X2RhdGFbXSA9IHsweDAwfTsKKyAgd2VicnRjOjpBbm5l
eEJCdWZmZXJSZWFkZXIgcmVhZGVyKGFubmV4X2JfdGVzdF9kYXRhLCAwKTsKKyAgY29uc3QgdWlu
dDhfdCogbmFsdSA9IG51bGxwdHI7CisgIHNpemVfdCBuYWx1X2xlbmd0aCA9IDA7CisgIFhDVEFz
c2VydEVxdWFsKDB1LCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydEZhbHNl
KHJlYWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2VydEVxdWFs
KG51bGxwdHIsIG5hbHUpOworICBYQ1RBc3NlcnRFcXVhbCgwdSwgbmFsdV9sZW5ndGgpOworfQor
CistICh2b2lkKXRlc3RSZWFkU2luZ2xlTmFsdSB7CisgIGNvbnN0IHVpbnQ4X3QgYW5uZXhfYl90
ZXN0X2RhdGFbXSA9IHsweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEFBfTsKKyAgd2VicnRjOjpB
bm5leEJCdWZmZXJSZWFkZXIgcmVhZGVyKGFubmV4X2JfdGVzdF9kYXRhLCBhcnJheXNpemUoYW5u
ZXhfYl90ZXN0X2RhdGEpKTsKKyAgY29uc3QgdWludDhfdCogbmFsdSA9IG51bGxwdHI7CisgIHNp
emVfdCBuYWx1X2xlbmd0aCA9IDA7CisgIFhDVEFzc2VydEVxdWFsKGFycmF5c2l6ZShhbm5leF9i
X3Rlc3RfZGF0YSksIHJlYWRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0VHJ1ZShy
ZWFkZXIuUmVhZE5hbHUoJm5hbHUsICZuYWx1X2xlbmd0aCkpOworICBYQ1RBc3NlcnRFcXVhbChh
bm5leF9iX3Rlc3RfZGF0YSArIDQsIG5hbHUpOworICBYQ1RBc3NlcnRFcXVhbCgxdSwgbmFsdV9s
ZW5ndGgpOworICBYQ1RBc3NlcnRFcXVhbCgwdSwgcmVhZGVyLkJ5dGVzUmVtYWluaW5nKCkpOwor
ICBYQ1RBc3NlcnRGYWxzZShyZWFkZXIuUmVhZE5hbHUoJm5hbHUsICZuYWx1X2xlbmd0aCkpOwor
ICBYQ1RBc3NlcnRFcXVhbChudWxscHRyLCBuYWx1KTsKKyAgWENUQXNzZXJ0RXF1YWwoMHUsIG5h
bHVfbGVuZ3RoKTsKK30KKworLSAodm9pZCl0ZXN0UmVhZFNpbmdsZU5hbHUzQnl0ZUhlYWRlciB7
CisgIGNvbnN0IHVpbnQ4X3QgYW5uZXhfYl90ZXN0X2RhdGFbXSA9IHsweDAwLCAweDAwLCAweDAx
LCAweEFBfTsKKyAgd2VicnRjOjpBbm5leEJCdWZmZXJSZWFkZXIgcmVhZGVyKGFubmV4X2JfdGVz
dF9kYXRhLCBhcnJheXNpemUoYW5uZXhfYl90ZXN0X2RhdGEpKTsKKyAgY29uc3QgdWludDhfdCog
bmFsdSA9IG51bGxwdHI7CisgIHNpemVfdCBuYWx1X2xlbmd0aCA9IDA7CisgIFhDVEFzc2VydEVx
dWFsKGFycmF5c2l6ZShhbm5leF9iX3Rlc3RfZGF0YSksIHJlYWRlci5CeXRlc1JlbWFpbmluZygp
KTsKKyAgWENUQXNzZXJ0VHJ1ZShyZWFkZXIuUmVhZE5hbHUoJm5hbHUsICZuYWx1X2xlbmd0aCkp
OworICBYQ1RBc3NlcnRFcXVhbChhbm5leF9iX3Rlc3RfZGF0YSArIDMsIG5hbHUpOworICBYQ1RB
c3NlcnRFcXVhbCgxdSwgbmFsdV9sZW5ndGgpOworICBYQ1RBc3NlcnRFcXVhbCgwdSwgcmVhZGVy
LkJ5dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3NlcnRGYWxzZShyZWFkZXIuUmVhZE5hbHUoJm5h
bHUsICZuYWx1X2xlbmd0aCkpOworICBYQ1RBc3NlcnRFcXVhbChudWxscHRyLCBuYWx1KTsKKyAg
WENUQXNzZXJ0RXF1YWwoMHUsIG5hbHVfbGVuZ3RoKTsKK30KKworLSAodm9pZCl0ZXN0UmVhZE1p
c3NpbmdOYWx1IHsKKyAgLy8gY2xhbmctZm9ybWF0IG9mZgorICBjb25zdCB1aW50OF90IGFubmV4
X2JfdGVzdF9kYXRhW10gPSB7MHgwMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4MDAsIDB4MDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDAwLCAweDAwLCAweDAwLCAweEZGfTsKKyAgLy8gY2xhbmctZm9ybWF0IG9uCisgIHdlYnJ0
Yzo6QW5uZXhCQnVmZmVyUmVhZGVyIHJlYWRlcihhbm5leF9iX3Rlc3RfZGF0YSwgYXJyYXlzaXpl
KGFubmV4X2JfdGVzdF9kYXRhKSk7CisgIGNvbnN0IHVpbnQ4X3QqIG5hbHUgPSBudWxscHRyOwor
ICBzaXplX3QgbmFsdV9sZW5ndGggPSAwOworICBYQ1RBc3NlcnRFcXVhbCgwdSwgcmVhZGVyLkJ5
dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3NlcnRGYWxzZShyZWFkZXIuUmVhZE5hbHUoJm5hbHUs
ICZuYWx1X2xlbmd0aCkpOworICBYQ1RBc3NlcnRFcXVhbChudWxscHRyLCBuYWx1KTsKKyAgWENU
QXNzZXJ0RXF1YWwoMHUsIG5hbHVfbGVuZ3RoKTsKK30KKworLSAodm9pZCl0ZXN0UmVhZE11bHRp
cGxlTmFsdXMgeworICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgIGNvbnN0IHVpbnQ4X3QgYW5uZXhf
Yl90ZXN0X2RhdGFbXSA9IHsweDAwLCAweDAwLCAweDAwLCAweDAxLCAweEZGLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MDAsIDB4MDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweEZGLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMSwgMHhBQSwgMHhCQn07CisgIC8v
IGNsYW5nLWZvcm1hdCBvbgorICB3ZWJydGM6OkFubmV4QkJ1ZmZlclJlYWRlciByZWFkZXIoYW5u
ZXhfYl90ZXN0X2RhdGEsIGFycmF5c2l6ZShhbm5leF9iX3Rlc3RfZGF0YSkpOworICBjb25zdCB1
aW50OF90KiBuYWx1ID0gbnVsbHB0cjsKKyAgc2l6ZV90IG5hbHVfbGVuZ3RoID0gMDsKKyAgWENU
QXNzZXJ0RXF1YWwoYXJyYXlzaXplKGFubmV4X2JfdGVzdF9kYXRhKSwgcmVhZGVyLkJ5dGVzUmVt
YWluaW5nKCkpOworICBYQ1RBc3NlcnRUcnVlKHJlYWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVf
bGVuZ3RoKSk7CisgIFhDVEFzc2VydEVxdWFsKGFubmV4X2JfdGVzdF9kYXRhICsgNCwgbmFsdSk7
CisgIFhDVEFzc2VydEVxdWFsKDh1LCBuYWx1X2xlbmd0aCk7CisgIFhDVEFzc2VydEVxdWFsKDV1
LCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydFRydWUocmVhZGVyLlJlYWRO
YWx1KCZuYWx1LCAmbmFsdV9sZW5ndGgpKTsKKyAgWENUQXNzZXJ0RXF1YWwoYW5uZXhfYl90ZXN0
X2RhdGEgKyAxNSwgbmFsdSk7CisgIFhDVEFzc2VydEVxdWFsKDJ1LCBuYWx1X2xlbmd0aCk7Cisg
IFhDVEFzc2VydEVxdWFsKDB1LCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2Vy
dEZhbHNlKHJlYWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2Vy
dEVxdWFsKG51bGxwdHIsIG5hbHUpOworICBYQ1RBc3NlcnRFcXVhbCgwdSwgbmFsdV9sZW5ndGgp
OworfQorCistICh2b2lkKXRlc3RFbXB0eU91dHB1dEJ1ZmZlciB7CisgIGNvbnN0IHVpbnQ4X3Qg
ZXhwZWN0ZWRfYnVmZmVyW10gPSB7MHgwMH07CisgIGNvbnN0IHNpemVfdCBidWZmZXJfc2l6ZSA9
IDE7CisgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IGJ1ZmZlcihuZXcgdWludDhfdFtidWZm
ZXJfc2l6ZV0pOworICBtZW1zZXQoYnVmZmVyLmdldCgpLCAwLCBidWZmZXJfc2l6ZSk7CisgIHdl
YnJ0Yzo6QXZjY0J1ZmZlcldyaXRlciB3cml0ZXIoYnVmZmVyLmdldCgpLCAwKTsKKyAgWENUQXNz
ZXJ0RXF1YWwoMHUsIHdyaXRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0RmFsc2Uo
d3JpdGVyLldyaXRlTmFsdShOQUxVX1RFU1RfREFUQV8wLCBhcnJheXNpemUoTkFMVV9URVNUX0RB
VEFfMCkpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMCwgbWVtY21wKGV4cGVjdGVkX2J1ZmZlciwgYnVm
ZmVyLmdldCgpLCBhcnJheXNpemUoZXhwZWN0ZWRfYnVmZmVyKSkpOworfQorCistICh2b2lkKXRl
c3RXcml0ZVNpbmdsZU5hbHUgeworICBjb25zdCB1aW50OF90IGV4cGVjdGVkX2J1ZmZlcltdID0g
eworICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhBQSwgMHhCQiwgMHhDQywKKyAgfTsK
KyAgY29uc3Qgc2l6ZV90IGJ1ZmZlcl9zaXplID0gYXJyYXlzaXplKE5BTFVfVEVTVF9EQVRBXzAp
ICsgNDsKKyAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gYnVmZmVyKG5ldyB1aW50OF90W2J1
ZmZlcl9zaXplXSk7CisgIHdlYnJ0Yzo6QXZjY0J1ZmZlcldyaXRlciB3cml0ZXIoYnVmZmVyLmdl
dCgpLCBidWZmZXJfc2l6ZSk7CisgIFhDVEFzc2VydEVxdWFsKGJ1ZmZlcl9zaXplLCB3cml0ZXIu
Qnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydFRydWUod3JpdGVyLldyaXRlTmFsdShOQUxV
X1RFU1RfREFUQV8wLCBhcnJheXNpemUoTkFMVV9URVNUX0RBVEFfMCkpKTsKKyAgWENUQXNzZXJ0
RXF1YWwoMHUsIHdyaXRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0RmFsc2Uod3Jp
dGVyLldyaXRlTmFsdShOQUxVX1RFU1RfREFUQV8xLCBhcnJheXNpemUoTkFMVV9URVNUX0RBVEFf
MSkpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMCwgbWVtY21wKGV4cGVjdGVkX2J1ZmZlciwgYnVmZmVy
LmdldCgpLCBhcnJheXNpemUoZXhwZWN0ZWRfYnVmZmVyKSkpOworfQorCistICh2b2lkKXRlc3RX
cml0ZU11bHRpcGxlTmFsdXMgeworICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgIGNvbnN0IHVpbnQ4
X3QgZXhwZWN0ZWRfYnVmZmVyW10gPSB7CisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHhB
QSwgMHhCQiwgMHhDQywKKyAgICAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweERFLCAweEFELCAw
eEJFLCAweEVGCisgIH07CisgIC8vIGNsYW5nLWZvcm1hdCBvbgorICBjb25zdCBzaXplX3QgYnVm
ZmVyX3NpemUgPSBhcnJheXNpemUoTkFMVV9URVNUX0RBVEFfMCkgKyBhcnJheXNpemUoTkFMVV9U
RVNUX0RBVEFfMSkgKyA4OworICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBidWZmZXIobmV3
IHVpbnQ4X3RbYnVmZmVyX3NpemVdKTsKKyAgd2VicnRjOjpBdmNjQnVmZmVyV3JpdGVyIHdyaXRl
cihidWZmZXIuZ2V0KCksIGJ1ZmZlcl9zaXplKTsKKyAgWENUQXNzZXJ0RXF1YWwoYnVmZmVyX3Np
emUsIHdyaXRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0VHJ1ZSh3cml0ZXIuV3Jp
dGVOYWx1KE5BTFVfVEVTVF9EQVRBXzAsIGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8wKSkpOwor
ICBYQ1RBc3NlcnRFcXVhbChidWZmZXJfc2l6ZSAtIChhcnJheXNpemUoTkFMVV9URVNUX0RBVEFf
MCkgKyA0KSwgd3JpdGVyLkJ5dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3NlcnRUcnVlKHdyaXRl
ci5Xcml0ZU5hbHUoTkFMVV9URVNUX0RBVEFfMSwgYXJyYXlzaXplKE5BTFVfVEVTVF9EQVRBXzEp
KSk7CisgIFhDVEFzc2VydEVxdWFsKDB1LCB3cml0ZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhD
VEFzc2VydEVxdWFsKDAsIG1lbWNtcChleHBlY3RlZF9idWZmZXIsIGJ1ZmZlci5nZXQoKSwgYXJy
YXlzaXplKGV4cGVjdGVkX2J1ZmZlcikpKTsKK30KKworLSAodm9pZCl0ZXN0T3ZlcmZsb3cgewor
ICBjb25zdCB1aW50OF90IGV4cGVjdGVkX2J1ZmZlcltdID0gezB4MDAsIDB4MDAsIDB4MDB9Owor
ICBjb25zdCBzaXplX3QgYnVmZmVyX3NpemUgPSBhcnJheXNpemUoTkFMVV9URVNUX0RBVEFfMCk7
CisgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IGJ1ZmZlcihuZXcgdWludDhfdFtidWZmZXJf
c2l6ZV0pOworICBtZW1zZXQoYnVmZmVyLmdldCgpLCAwLCBidWZmZXJfc2l6ZSk7CisgIHdlYnJ0
Yzo6QXZjY0J1ZmZlcldyaXRlciB3cml0ZXIoYnVmZmVyLmdldCgpLCBidWZmZXJfc2l6ZSk7Cisg
IFhDVEFzc2VydEVxdWFsKGJ1ZmZlcl9zaXplLCB3cml0ZXIuQnl0ZXNSZW1haW5pbmcoKSk7Cisg
IFhDVEFzc2VydEZhbHNlKHdyaXRlci5Xcml0ZU5hbHUoTkFMVV9URVNUX0RBVEFfMCwgYXJyYXlz
aXplKE5BTFVfVEVTVF9EQVRBXzApKSk7CisgIFhDVEFzc2VydEVxdWFsKGJ1ZmZlcl9zaXplLCB3
cml0ZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIG1lbWNtcChleHBl
Y3RlZF9idWZmZXIsIGJ1ZmZlci5nZXQoKSwgYXJyYXlzaXplKGV4cGVjdGVkX2J1ZmZlcikpKTsK
K30KKworLSAodm9pZCl0ZXN0SDI2NEFubmV4QkJ1ZmZlclRvQ01TYW1wbGVCdWZmZXIgeworICAv
LyBjbGFuZy1mb3JtYXQgb2ZmCisgIGNvbnN0IHVpbnQ4X3QgYW5uZXhfYl90ZXN0X2RhdGFbXSA9
IHsKKyAgICAweDAwLAorICAgIDB4MDAsIDB4MDAsIDB4MDEsCisgICAgMHgwMSwgMHgwMCwgMHgw
MCwgMHhGRiwgLy8gZmlyc3QgY2h1bmssIDQgYnl0ZXMKKyAgICAweDAwLCAweDAwLCAweDAxLAor
ICAgIDB4QUEsIDB4RkYsIC8vIHNlY29uZCBjaHVuaywgMiBieXRlcworICAgIDB4MDAsIDB4MDAs
IDB4MDEsCisgICAgMHhCQn07ICAvLyB0aGlyZCBjaHVuaywgMSBieXRlLCB3aWxsIG5vdCBmaXQg
aW50byBvdXRwdXQgYXJyYXkKKworICBjb25zdCB1aW50OF90IGV4cGVjdGVkX2Ntc2FtcGxlX2Rh
dGFbXSA9IHsKKyAgICAweDAwLCAweDAwLCAweDAwLCAweDA0LAorICAgIDB4MDEsIDB4MDAsIDB4
MDAsIDB4RkYsIC8vIGZpcnN0IGNodW5rLCA0IGJ5dGVzCisgICAgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMiwKKyAgICAweEFBLCAweEZGfTsgLy8gc2Vjb25kIGNodW5rLCAyIGJ5dGVzCisgIC8vIGNs
YW5nLWZvcm1hdCBvbgorCisgIENNTWVtb3J5UG9vbFJlZiBtZW1vcnlfcG9vbCA9IENNTWVtb3J5
UG9vbENyZWF0ZShuaWwpOworICBDTVNhbXBsZUJ1ZmZlclJlZiBvdXRfc2FtcGxlX2J1ZmZlciA9
IG5pbDsKKyAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2NyaXB0aW9uID0gW3NlbGYg
Y3JlYXRlRGVzY3JpcHRpb25dOworCisgIEJvb2xlYW4gcmVzdWx0ID0gd2VicnRjOjpIMjY0QW5u
ZXhCQnVmZmVyVG9DTVNhbXBsZUJ1ZmZlcihhbm5leF9iX3Rlc3RfZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5c2l6
ZShhbm5leF9iX3Rlc3RfZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRfc2FtcGxlX2J1
ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lbW9yeV9wb29sKTsKKworICBYQ1RBc3NlcnRUcnVlKHJlc3VsdCk7CisKKyAg
WENUQXNzZXJ0RXF1YWwoZGVzY3JpcHRpb24sIENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3Jp
cHRpb24ob3V0X3NhbXBsZV9idWZmZXIpKTsKKworICBjaGFyKiBkYXRhX3B0ciA9IG51bGxwdHI7
CisgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tfYnVmZmVyID0gQ01TYW1wbGVCdWZmZXJHZXREYXRh
QnVmZmVyKG91dF9zYW1wbGVfYnVmZmVyKTsKKyAgc2l6ZV90IGJsb2NrX2J1ZmZlcl9zaXplID0g
Q01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoYmxvY2tfYnVmZmVyKTsKKyAgQ01CbG9ja0J1ZmZl
ckdldERhdGFQb2ludGVyKGJsb2NrX2J1ZmZlciwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgJmRhdGFf
cHRyKTsKKyAgWENUQXNzZXJ0RXF1YWwoYmxvY2tfYnVmZmVyX3NpemUsIGFycmF5c2l6ZShhbm5l
eF9iX3Rlc3RfZGF0YSkpOworCisgIGludCBkYXRhX2NvbXBhcmlzb25fcmVzdWx0ID0KKyAgICAg
IG1lbWNtcChleHBlY3RlZF9jbXNhbXBsZV9kYXRhLCBkYXRhX3B0ciwgYXJyYXlzaXplKGV4cGVj
dGVkX2Ntc2FtcGxlX2RhdGEpKTsKKworICBYQ1RBc3NlcnRFcXVhbCgwLCBkYXRhX2NvbXBhcmlz
b25fcmVzdWx0KTsKKworICBpZiAoZGVzY3JpcHRpb24pIHsKKyAgICBDRlJlbGVhc2UoZGVzY3Jp
cHRpb24pOworICAgIGRlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgfQorCisgIENNTWVtb3J5UG9v
bEludmFsaWRhdGUobWVtb3J5X3Bvb2wpOworICBDRlJlbGVhc2UobWVtb3J5X3Bvb2wpOworfQor
CistICh2b2lkKXRlc3RIMjY0Q01TYW1wbGVCdWZmZXJUb0FubmV4QkJ1ZmZlciB7CisgIC8vIGNs
YW5nLWZvcm1hdCBvZmYKKyAgY29uc3QgdWludDhfdCBjbXNhbXBsZV9kYXRhW10gPSB7CisgICAg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwKKyAgICAweDAxLCAweDAwLCAweDAwLCAweEZGLCAvLyBm
aXJzdCBjaHVuaywgNCBieXRlcworICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisgICAgMHhB
QSwgMHhGRn07IC8vIHNlY29uZCBjaHVuaywgMiBieXRlcworCisgIGNvbnN0IHVpbnQ4X3QgZXhw
ZWN0ZWRfYW5uZXhfYl9kYXRhW10gPSB7CisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKyAg
ICAweDAxLCAweDAwLCAweDAwLCAweEZGLCAvLyBmaXJzdCBjaHVuaywgNCBieXRlcworICAgIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisgICAgMHhBQSwgMHhGRn07IC8vIHNlY29uZCBjaHVuaywg
MiBieXRlcworICAvLyBjbGFuZy1mb3JtYXQgb24KKworICBydGM6OkJ1ZmZlciBhbm5leGJfYnVm
ZmVyKGFycmF5c2l6ZShjbXNhbXBsZV9kYXRhKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6
OlJUUEZyYWdtZW50YXRpb25IZWFkZXI+IG91dF9oZWFkZXJfcHRyOworICBDTVNhbXBsZUJ1ZmZl
clJlZiBzYW1wbGVfYnVmZmVyID0KKyAgICAgIFtzZWxmIGNyZWF0ZUNNU2FtcGxlQnVmZmVyUmVm
Oih2b2lkKiljbXNhbXBsZV9kYXRhIGNtc2FtcGxlU2l6ZTphcnJheXNpemUoY21zYW1wbGVfZGF0
YSldOworCisgIEJvb2xlYW4gcmVzdWx0ID0gd2VicnRjOjpIMjY0Q01TYW1wbGVCdWZmZXJUb0Fu
bmV4QkJ1ZmZlcihzYW1wbGVfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXNfa2V5ZnJhbWUgKi8gZmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmYW5uZXhiX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZvdXRfaGVhZGVyX3B0cik7CisKKyAgWENUQXNzZXJ0VHJ1
ZShyZXN1bHQpOworCisgIFhDVEFzc2VydEVxdWFsKGFycmF5c2l6ZShleHBlY3RlZF9hbm5leF9i
X2RhdGEpLCBhbm5leGJfYnVmZmVyLnNpemUoKSk7CisKKyAgaW50IGRhdGFfY29tcGFyaXNvbl9y
ZXN1bHQgPQorICAgICAgbWVtY21wKGV4cGVjdGVkX2FubmV4X2JfZGF0YSwgYW5uZXhiX2J1ZmZl
ci5kYXRhKCksIGFycmF5c2l6ZShleHBlY3RlZF9hbm5leF9iX2RhdGEpKTsKKworICBYQ1RBc3Nl
cnRFcXVhbCgwLCBkYXRhX2NvbXBhcmlzb25fcmVzdWx0KTsKKworICB3ZWJydGM6OlJUUEZyYWdt
ZW50YXRpb25IZWFkZXIqIG91dF9oZWFkZXIgPSBvdXRfaGVhZGVyX3B0ci5nZXQoKTsKKworICBY
Q1RBc3NlcnRFcXVhbCgyLCAoaW50KW91dF9oZWFkZXItPlNpemUoKSk7CisKKyAgWENUQXNzZXJ0
RXF1YWwoNCwgKGludClvdXRfaGVhZGVyLT5PZmZzZXQoMCkpOworICBYQ1RBc3NlcnRFcXVhbCg0
LCAoaW50KW91dF9oZWFkZXItPkxlbmd0aCgwKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQp
b3V0X2hlYWRlci0+VGltZURpZmYoMCkpOworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9o
ZWFkZXItPlBheWxvYWRUeXBlKDApKTsKKworICBYQ1RBc3NlcnRFcXVhbCgxMiwgKGludClvdXRf
aGVhZGVyLT5PZmZzZXQoMSkpOworICBYQ1RBc3NlcnRFcXVhbCgyLCAoaW50KW91dF9oZWFkZXIt
Pkxlbmd0aCgxKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+VGltZURp
ZmYoMSkpOworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFkZXItPlBheWxvYWRUeXBl
KDEpKTsKK30KKworLSAodm9pZCl0ZXN0SDI2NENNU2FtcGxlQnVmZmVyVG9Bbm5leEJCdWZmZXJX
aXRoS2V5ZnJhbWUgeworICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgIGNvbnN0IHVpbnQ4X3QgY21z
YW1wbGVfZGF0YVtdID0geworICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisgICAgMHgwMSwg
MHgwMCwgMHgwMCwgMHhGRiwgLy8gZmlyc3QgY2h1bmssIDQgYnl0ZXMKKyAgICAweDAwLCAweDAw
LCAweDAwLCAweDAyLAorICAgIDB4QUEsIDB4RkZ9OyAvLyBzZWNvbmQgY2h1bmssIDIgYnl0ZXMK
KworICBjb25zdCB1aW50OF90IGV4cGVjdGVkX2FubmV4X2JfZGF0YVtdID0geworICAgIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDEsCisgICAgMHgwMSwgMHgwMCwgMHgwMCwgMHhGRiwgLy8gZmlyc3Qg
Y2h1bmssIDQgYnl0ZXMKKyAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLAorICAgIDB4QUEsIDB4
RkZ9OyAvLyBzZWNvbmQgY2h1bmssIDIgYnl0ZXMKKyAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAg
cnRjOjpCdWZmZXIgYW5uZXhiX2J1ZmZlcihhcnJheXNpemUoY21zYW1wbGVfZGF0YSkpOworICBz
dGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyPiBvdXRfaGVhZGVy
X3B0cjsKKyAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlX2J1ZmZlciA9CisgICAgICBbc2VsZiBj
cmVhdGVDTVNhbXBsZUJ1ZmZlclJlZjoodm9pZCopY21zYW1wbGVfZGF0YSBjbXNhbXBsZVNpemU6
YXJyYXlzaXplKGNtc2FtcGxlX2RhdGEpXTsKKworICBCb29sZWFuIHJlc3VsdCA9IHdlYnJ0Yzo6
SDI2NENNU2FtcGxlQnVmZmVyVG9Bbm5leEJCdWZmZXIoc2FtcGxlX2J1ZmZlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlz
X2tleWZyYW1lICovIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmYW5uZXhiX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRfaGVhZGVyX3B0
cik7CisKKyAgWENUQXNzZXJ0VHJ1ZShyZXN1bHQpOworCisgIFhDVEFzc2VydEVxdWFsKGFycmF5
c2l6ZShTUFNfUFBTX0JVRkZFUikgKyBhcnJheXNpemUoZXhwZWN0ZWRfYW5uZXhfYl9kYXRhKSwK
KyAgICAgICAgICAgICAgICAgYW5uZXhiX2J1ZmZlci5zaXplKCkpOworCisgIFhDVEFzc2VydEVx
dWFsKDAsIG1lbWNtcChTUFNfUFBTX0JVRkZFUiwgYW5uZXhiX2J1ZmZlci5kYXRhKCksIGFycmF5
c2l6ZShTUFNfUFBTX0JVRkZFUikpKTsKKworICBYQ1RBc3NlcnRFcXVhbCgwLAorICAgICAgICAg
ICAgICAgICBtZW1jbXAoZXhwZWN0ZWRfYW5uZXhfYl9kYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgYW5uZXhiX2J1ZmZlci5kYXRhKCkgKyBhcnJheXNpemUoU1BTX1BQU19CVUZGRVIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlzaXplKGV4cGVjdGVkX2FubmV4X2JfZGF0YSkp
KTsKKworICB3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXIqIG91dF9oZWFkZXIgPSBvdXRf
aGVhZGVyX3B0ci5nZXQoKTsKKworICBYQ1RBc3NlcnRFcXVhbCg0LCAoaW50KW91dF9oZWFkZXIt
PlNpemUoKSk7CisKKyAgWENUQXNzZXJ0RXF1YWwoNCwgKGludClvdXRfaGVhZGVyLT5PZmZzZXQo
MCkpOworICBYQ1RBc3NlcnRFcXVhbCgxNCwgKGludClvdXRfaGVhZGVyLT5MZW5ndGgoMCkpOwor
ICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFkZXItPlRpbWVEaWZmKDApKTsKKyAgWENU
QXNzZXJ0RXF1YWwoMCwgKGludClvdXRfaGVhZGVyLT5QYXlsb2FkVHlwZSgwKSk7CisKKyAgWENU
QXNzZXJ0RXF1YWwoMjIsIChpbnQpb3V0X2hlYWRlci0+T2Zmc2V0KDEpKTsKKyAgWENUQXNzZXJ0
RXF1YWwoNCwgKGludClvdXRfaGVhZGVyLT5MZW5ndGgoMSkpOworICBYQ1RBc3NlcnRFcXVhbCgw
LCAoaW50KW91dF9oZWFkZXItPlRpbWVEaWZmKDEpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMCwgKGlu
dClvdXRfaGVhZGVyLT5QYXlsb2FkVHlwZSgxKSk7CisKKyAgWENUQXNzZXJ0RXF1YWwoMzAsIChp
bnQpb3V0X2hlYWRlci0+T2Zmc2V0KDIpKTsKKyAgWENUQXNzZXJ0RXF1YWwoNCwgKGludClvdXRf
aGVhZGVyLT5MZW5ndGgoMikpOworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFkZXIt
PlRpbWVEaWZmKDIpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMCwgKGludClvdXRfaGVhZGVyLT5QYXls
b2FkVHlwZSgyKSk7CisKKyAgWENUQXNzZXJ0RXF1YWwoMzgsIChpbnQpb3V0X2hlYWRlci0+T2Zm
c2V0KDMpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMiwgKGludClvdXRfaGVhZGVyLT5MZW5ndGgoMykp
OworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFkZXItPlRpbWVEaWZmKDMpKTsKKyAg
WENUQXNzZXJ0RXF1YWwoMCwgKGludClvdXRfaGVhZGVyLT5QYXlsb2FkVHlwZSgzKSk7Cit9CisK
Ky0gKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiljcmVhdGVEZXNjcmlwdGlvbiB7CisgIENN
VmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjcmlwdGlvbiA9CisgICAgICB3ZWJydGM6OkNy
ZWF0ZVZpZGVvRm9ybWF0RGVzY3JpcHRpb24oU1BTX1BQU19CVUZGRVIsIGFycmF5c2l6ZShTUFNf
UFBTX0JVRkZFUikpOworICBYQ1RBc3NlcnRUcnVlKGRlc2NyaXB0aW9uKTsKKyAgcmV0dXJuIGRl
c2NyaXB0aW9uOworfQorCistIChDTVNhbXBsZUJ1ZmZlclJlZiljcmVhdGVDTVNhbXBsZUJ1ZmZl
clJlZjoodm9pZCopY21zYW1wbGVEYXRhIGNtc2FtcGxlU2l6ZTooc2l6ZV90KWNtc2FtcGxlU2l6
ZSB7CisgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZV9idWZmZXIgPSBuaWw7CisgIE9TU3RhdHVz
IHN0YXR1czsKKworICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBb
c2VsZiBjcmVhdGVEZXNjcmlwdGlvbl07CisgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tfYnVmZmVy
ID0gbnVsbHB0cjsKKworICBzdGF0dXMgPSBDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJs
b2NrKG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY21zYW1wbGVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNtc2FtcGxlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbXNhbXBsZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga0NNQmxvY2tCdWZmZXJBc3N1cmVNZW1vcnlOb3dGbGFnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZibG9ja19idWZmZXIpOworCisgIHN0YXR1
cyA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlKG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJsb2NrX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZzYW1wbGVfYnVmZmVyKTsKKworICByZXR1cm4gc2FtcGxlX2J1
ZmZlcjsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5X3Rlc3RzLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvdW5pdHRlc3RzL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5X3Rlc3RzLm1tCmlu
ZGV4IGQwMDlkNTFiYmEzMTU0NTQ3YzJiYzE0ZWVkMmNhZjYzMDY2MjY1YjAuLjUwYzMwYzBjNzQ0
Mjc1MzM3MTYwN2EwMWZiMGZlNWRlZWEyZmU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9vYmpjX3ZpZGVv
X2VuY29kZXJfZmFjdG9yeV90ZXN0cy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvb2JqY192aWRlb19lbmNvZGVyX2Zh
Y3RvcnlfdGVzdHMubW0KQEAgLTgyLDcgKzgyLDYgQEAgVEVTVChPYmpDVmlkZW9FbmNvZGVyRmFj
dG9yeVRlc3QsIEVuY29kZVJldHVybnNPS09uU3VjY2VzcykgewogICB3ZWJydGM6OlZpZGVvRnJh
bWUgZnJhbWUoYnVmZmVyLCB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAsIDApOwogICB3ZWJydGM6
OkNvZGVjU3BlY2lmaWNJbmZvIGluZm87CiAgIGluZm8uY29kZWNUeXBlID0gd2VicnRjOjprVmlk
ZW9Db2RlY0gyNjQ7Ci0gIGluZm8uY29kZWNfbmFtZSA9ICJIMjY0IjsKICAgc3RkOjp2ZWN0b3I8
d2VicnRjOjpGcmFtZVR5cGU+IGZyYW1lX3R5cGVzOwogCiAgIEVYUEVDVF9FUShlbmNvZGVyLT5F
bmNvZGUoZnJhbWUsICZpbmZvLCAmZnJhbWVfdHlwZXMpLCBXRUJSVENfVklERU9fQ09ERUNfT0sp
OwpAQCAtOTksNyArOTgsNiBAQCBURVNUKE9iakNWaWRlb0VuY29kZXJGYWN0b3J5VGVzdCwgRW5j
b2RlUmV0dXJuc0Vycm9yT25GYWlsKSB7CiAgIHdlYnJ0Yzo6VmlkZW9GcmFtZSBmcmFtZShidWZm
ZXIsIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCwgMCk7CiAgIHdlYnJ0Yzo6Q29kZWNTcGVjaWZp
Y0luZm8gaW5mbzsKICAgaW5mby5jb2RlY1R5cGUgPSB3ZWJydGM6OmtWaWRlb0NvZGVjSDI2NDsK
LSAgaW5mby5jb2RlY19uYW1lID0gIkgyNjQiOwogICBzdGQ6OnZlY3Rvcjx3ZWJydGM6OkZyYW1l
VHlwZT4gZnJhbWVfdHlwZXM7CiAKICAgRVhQRUNUX0VRKGVuY29kZXItPkVuY29kZShmcmFtZSwg
JmluZm8sICZmcmFtZV90eXBlcyksIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUik7CkBAIC0xMTcs
MTIgKzExNSw2IEBAIFRFU1QoT2JqQ1ZpZGVvRW5jb2RlckZhY3RvcnlUZXN0LCBSZWxlYXNlRW5j
b2RlUmV0dXJuc0Vycm9yT25GYWlsKSB7CiAgIEVYUEVDVF9FUShlbmNvZGVyLT5SZWxlYXNlKCks
IFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUik7CiB9CiAKLVRFU1QoT2JqQ1ZpZGVvRW5jb2RlckZh
Y3RvcnlUZXN0LCBTZXRDaGFubmVsUGFyYW1ldGVyc0Fsd2F5c1JldHVybnNPSykgewotICBzdGQ6
OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXI+IGVuY29kZXIgPSBHZXRPYmpDRW5jb2Rl
cihDcmVhdGVFcnJvckVuY29kZXJGYWN0b3J5KCkpOwotCi0gIEVYUEVDVF9FUShlbmNvZGVyLT5T
ZXRDaGFubmVsUGFyYW1ldGVycygxLCAxKSwgV0VCUlRDX1ZJREVPX0NPREVDX09LKTsKLX0KLQog
VEVTVChPYmpDVmlkZW9FbmNvZGVyRmFjdG9yeVRlc3QsIFNldFJhdGVzUmV0dXJuc09LT25TdWNj
ZXNzKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rlcj4gZW5jb2RlciA9
IEdldE9iakNFbmNvZGVyKENyZWF0ZU9LRW5jb2RlckZhY3RvcnkoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0YXRzL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3RhdHMvQlVJTEQu
Z24KaW5kZXggZGUzMDBmMThjZjJmYWYzYjk0YjZmNTkwMGZlZDVmN2JiZDE1Mjc3OC4uYzY3YTVi
ZTM2NTRkZTYyMjQ0NDJlYTEzZjk1NDhhNzBjYzM1NThmNiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3RhdHMvQlVJTEQuZ24KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3RhdHMvQlVJTEQuZ24KQEAg
LTQwLDYgKzQwLDcgQEAgcnRjX3NvdXJjZV9zZXQoInJ0Y19zdGF0c190ZXN0X3V0aWxzIikgewog
ICBkZXBzID0gWwogICAgICI6cnRjX3N0YXRzIiwKICAgICAiLi4vYXBpOnJ0Y19zdGF0c19hcGki
LAorICAgICIuLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgIF0KIH0KIApAQCAtNTYs
OSArNTcsOSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6cnRjX3N0YXRzX3Rl
c3RfdXRpbHMiLAogICAgICAgIi4uL2FwaTpydGNfc3RhdHNfYXBpIiwKICAgICAgICIuLi9ydGNf
YmFzZTpjaGVja3MiLAorICAgICAgIi4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICAg
Ii4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZV90ZXN0c19tYWluIiwKLSAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGls
cyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2pzb24iLAogICAgIF0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3RhdHMvcnRjc3RhdHNf
b2JqZWN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0
YXRzL3J0Y3N0YXRzX29iamVjdHMuY2MKaW5kZXggZGNjMTE4MGYxNmYxMGZmYzI4NWFkYmZlNjcw
MmYxNjZjNzFlYTg1MS4uY2Q1MmE1NTk3MWJlYmEzZWZmZjY5MDU3YWFlMmU2MjA2ZmQ1NzIzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3Rh
dHMvcnRjc3RhdHNfb2JqZWN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zdGF0cy9ydGNzdGF0c19vYmplY3RzLmNjCkBAIC0zNzQsNyArMzc0LDkg
QEAgV0VCUlRDX1JUQ1NUQVRTX0lNUEwoUlRDTWVkaWFTdHJlYW1UcmFja1N0YXRzLCBSVENTdGF0
cywgInRyYWNrIiwKICAgICAgICAgICAgICAgICAgICAgICZ0b3RhbF9zYW1wbGVzX3JlY2VpdmVk
LAogICAgICAgICAgICAgICAgICAgICAgJnRvdGFsX3NhbXBsZXNfZHVyYXRpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAmY29uY2VhbGVkX3NhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAm
Y29uY2VhbG1lbnRfZXZlbnRzKTsKKyAgICAgICAgICAgICAgICAgICAgICZjb25jZWFsbWVudF9l
dmVudHMsCisgICAgICAgICAgICAgICAgICAgICAmaml0dGVyX2J1ZmZlcl9mbHVzaGVzLAorICAg
ICAgICAgICAgICAgICAgICAgJmRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzKTsKIC8vIGNs
YW5nLWZvcm1hdCBvbgogCiBSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHM6OlJUQ01lZGlhU3RyZWFt
VHJhY2tTdGF0cyhjb25zdCBzdGQ6OnN0cmluZyYgaWQsCkBAIC00MTAsNyArNDEyLDkgQEAgUlRD
TWVkaWFTdHJlYW1UcmFja1N0YXRzOjpSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHMoc3RkOjpzdHJp
bmcmJiBpZCwKICAgICAgIHRvdGFsX3NhbXBsZXNfcmVjZWl2ZWQoInRvdGFsU2FtcGxlc1JlY2Vp
dmVkIiksCiAgICAgICB0b3RhbF9zYW1wbGVzX2R1cmF0aW9uKCJ0b3RhbFNhbXBsZXNEdXJhdGlv
biIpLAogICAgICAgY29uY2VhbGVkX3NhbXBsZXMoImNvbmNlYWxlZFNhbXBsZXMiKSwKLSAgICAg
IGNvbmNlYWxtZW50X2V2ZW50cygiY29uY2VhbG1lbnRFdmVudHMiKSB7CisgICAgICBjb25jZWFs
bWVudF9ldmVudHMoImNvbmNlYWxtZW50RXZlbnRzIiksCisgICAgICBqaXR0ZXJfYnVmZmVyX2Zs
dXNoZXMoImppdHRlckJ1ZmZlckZsdXNoZXMiKSwKKyAgICAgIGRlbGF5ZWRfcGFja2V0X291dGFn
ZV9zYW1wbGVzKCJkZWxheWVkUGFja2V0T3V0YWdlU2FtcGxlcyIpIHsKICAgUlRDX0RDSEVDSyhr
aW5kID09IFJUQ01lZGlhU3RyZWFtVHJhY2tLaW5kOjprQXVkaW8gfHwKICAgICAgICAgICAgICBr
aW5kID09IFJUQ01lZGlhU3RyZWFtVHJhY2tLaW5kOjprVmlkZW8pOwogfQpAQCAtNDQyLDcgKzQ0
Niw5IEBAIFJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0czo6UlRDTWVkaWFTdHJlYW1UcmFja1N0YXRz
KAogICAgICAgdG90YWxfc2FtcGxlc19yZWNlaXZlZChvdGhlci50b3RhbF9zYW1wbGVzX3JlY2Vp
dmVkKSwKICAgICAgIHRvdGFsX3NhbXBsZXNfZHVyYXRpb24ob3RoZXIudG90YWxfc2FtcGxlc19k
dXJhdGlvbiksCiAgICAgICBjb25jZWFsZWRfc2FtcGxlcyhvdGhlci5jb25jZWFsZWRfc2FtcGxl
cyksCi0gICAgICBjb25jZWFsbWVudF9ldmVudHMob3RoZXIuY29uY2VhbG1lbnRfZXZlbnRzKSB7
fQorICAgICAgY29uY2VhbG1lbnRfZXZlbnRzKG90aGVyLmNvbmNlYWxtZW50X2V2ZW50cyksCisg
ICAgICBqaXR0ZXJfYnVmZmVyX2ZsdXNoZXMob3RoZXIuaml0dGVyX2J1ZmZlcl9mbHVzaGVzKSwK
KyAgICAgIGRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzKG90aGVyLmRlbGF5ZWRfcGFja2V0
X291dGFnZV9zYW1wbGVzKSB7fQogCiBSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHM6On5SVENNZWRp
YVN0cmVhbVRyYWNrU3RhdHMoKSB7fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy90ZXN0L3J0Y3Rlc3RzdGF0cy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3RhdHMvdGVzdC9ydGN0ZXN0c3Rh
dHMuaAppbmRleCA3YzhlMTA1MWZmMTBhY2U0NTY4YzI1NzQ5YTkyZDc5NmJiY2FkOGE1Li5hN2Qy
YzkxZGEwNjFkMjQ1MjI1MWI4NjBmZjAyYzBhNWQxMjljN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy90ZXN0L3J0Y3Rlc3RzdGF0
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0YXRz
L3Rlc3QvcnRjdGVzdHN0YXRzLmgKQEAgLTE1LDEwICsxNSwxMSBAQAogI2luY2x1ZGUgPHZlY3Rv
cj4KIAogI2luY2x1ZGUgImFwaS9zdGF0cy9ydGNzdGF0cy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBSVENU
ZXN0U3RhdHMgOiBwdWJsaWMgUlRDU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENUZXN0U3Rh
dHMgOiBwdWJsaWMgUlRDU3RhdHMgewogIHB1YmxpYzoKICAgV0VCUlRDX1JUQ1NUQVRTX0RFQ0wo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc3R5bGUtZ3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zdHlsZS1ndWlkZS5tZAppbmRleCAyYTM1ZmRjNWQxYTQ3NmVkNzU2OTJlMjEwMTQ4MWUz
Njc2ODNlN2FiLi4zOTFjNDViNjQ0ZDA0MWE4OTQyNDAxYWQzZGViZDZkZTg0MTYxY2I0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdHlsZS1n
dWlkZS5tZAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
dHlsZS1ndWlkZS5tZApAQCAtNzcsNiArNzcsMTggQEAgaW5zdGVhZCBvZiAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCB1c2UKIAogU2VlIFt0aGUgc291cmNlXShhcGkvYXJyYXlfdmlldy5oKSBm
b3IgbW9yZSBkZXRhaWxlZCBkb2NzLgogCisjIyMgYGFic2w6Om9wdGlvbmFsPFQ+YCBhcyBmdW5j
dGlvbiBhcmd1bWVudAorCitgYWJzbDo6b3B0aW9uYWw8VD5gIGlzIGdlbmVyYWxseSBhIGdvb2Qg
Y2hvaWNlIHdoZW4geW91IHdhbnQgdG8gcGFzcyBhCitwb3NzaWJseSBtaXNzaW5nIGBUYCB0byBh
IGZ1bmN0aW9uJm1kYXNoO3Byb3ZpZGVkIG9mIGNvdXJzZSB0aGF0IGBUYAoraXMgYSB0eXBlIHRo
YXQgaXQgbWFrZXMgc2Vuc2UgdG8gcGFzcyBieSB2YWx1ZS4KKworSG93ZXZlciwgd2hlbiB5b3Ug
d2FudCB0byBhdm9pZCBwYXNzLWJ5LXZhbHVlLCBnZW5lcmFsbHkgKipkbyBub3QgcGFzcworYGNv
bnN0IGFic2w6Om9wdGlvbmFsPFQ+JmA7IHVzZSBgY29uc3QgVCpgIGluc3RlYWQuKiogYGNvbnN0
CithYnNsOjpvcHRpb25hbDxUPiZgIGZvcmNlcyB0aGUgY2FsbGVyIHRvIHN0b3JlIHRoZSBgVGAg
aW4gYW4KK2BhYnNsOjpvcHRpb25hbDxUPmA7IGBjb25zdCBUKmAsIG9uIHRoZSBvdGhlciBoYW5k
LCBtYWtlcyBubworYXNzdW1wdGlvbnMgYWJvdXQgaG93IHRoZSBgVGAgaXMgc3RvcmVkLgorCiAj
IyMgc2lnc2xvdAogCiBzaWdzbG90IGlzIGEgbGlnaHR3ZWlnaHQgbGlicmFyeSB0aGF0IGFkZHMg
YSBzaWduYWwvc2xvdCBsYW5ndWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL0JVSUxELmduIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL0JVSUxELmdu
CmluZGV4IGViNjAwNTIyNjU5M2I0ZWVhNDRiMTlmZDk0YWZlODMwYjgzOTFkYmMuLmRhODNkMTJl
OGRiMTkxOTQyOGE0OTM5MWFiMTE0NmE0MGY4ZWYzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9CVUlMRC5nbgor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3Jh
cHBlcnMvQlVJTEQuZ24KQEAgLTMzLDcgKzMzLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJzeXN0
ZW1fd3JhcHBlcnMiKSB7CiAgIGxpYnMgPSBbXQogICBkZXBzID0gWwogICAgICI6Y3B1X2ZlYXR1
cmVzX2FwaSIsCi0gICAgIi4uOndlYnJ0Y19jb21tb24iLAorICAgICIuLi9hcGk6YXJyYXlfdmll
dyIsCiAgICAgIi4uL21vZHVsZXM6bW9kdWxlX2FwaV9wdWJsaWMiLAogICAgICIuLi9ydGNfYmFz
ZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZS9zeW5jaHJvbml6YXRpb246cndfbG9ja193cmFw
cGVyIiwKQEAgLTg5LDkgKzg5LDYgQEAgcnRjX3NvdXJjZV9zZXQoImNwdV9mZWF0dXJlc19hcGki
KSB7CiAgIHNvdXJjZXMgPSBbCiAgICAgImluY2x1ZGUvY3B1X2ZlYXR1cmVzX3dyYXBwZXIuaCIs
CiAgIF0KLSAgZGVwcyA9IFsKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCi0gIF0KIH0KIAogcnRj
X3NvdXJjZV9zZXQoImZpZWxkX3RyaWFsIikgewpAQCAtMTA1LDYgKzEwMiwxNiBAQCBydGNfc291
cmNlX3NldCgiZmllbGRfdHJpYWwiKSB7CiAgIGlmIChydGNfZXhjbHVkZV9maWVsZF90cmlhbF9k
ZWZhdWx0KSB7CiAgICAgZGVmaW5lcyA9IFsgIldFQlJUQ19FWENMVURFX0ZJRUxEX1RSSUFMX0RF
RkFVTFQiIF0KICAgfQorICBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkgeworICAgICMgV2hlbiBX
ZWJSVEMgaXMgYnVpbHQgYXMgcGFydCBvZiBDaHJvbWl1bSBpdCBzaG91bGQgZXhjbHVkZSB0aGUg
ZGVmYXVsdAorICAgICMgaW1wbGVtZW50YXRpb24gb2YgZmllbGRfdHJpYWwgdW5sZXNzIGl0IGlz
IGJ1aWxkaW5nIGZvciBOQUNMIG9yCisgICAgIyBDaHJvbWVjYXN0LgorICAgIGlmICghaXNfbmFj
bCAmJiAhaXNfY2hyb21lY2FzdCkgeworICAgICAgZGVwcyA9IFsKKyAgICAgICAgIi4uLy4uL3dl
YnJ0Y19vdmVycmlkZXM6ZmllbGRfdHJpYWwiLAorICAgICAgXQorICAgIH0KKyAgfQogfQogCiBy
dGNfc291cmNlX3NldCgibWV0cmljcyIpIHsKQEAgLTEyMyw2ICsxMzAsOSBAQCBydGNfc291cmNl
X3NldCgibWV0cmljcyIpIHsKICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vcnRj
X2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICBdCisgIGlmIChidWlsZF93aXRoX2Nocm9taXVt
KSB7CisgICAgZGVwcyArPSBbICIuLi8uLi93ZWJydGNfb3ZlcnJpZGVzOm1ldHJpY3MiIF0KKyAg
fQogfQogCiBpZiAoaXNfYW5kcm9pZCAmJiAhYnVpbGRfd2l0aF9tb3ppbGxhKSB7CkBAIC0xNjYs
NiArMTc2LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi46d2VicnRjX2Nv
bW1vbiIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4u
L3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAi
Ly90ZXN0aW5nL2d0ZXN0IiwKICAgICBdCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9PV05FUlMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvT1dORVJT
CmluZGV4IDEzYjA4YTM2ZWY4ZjQ4MmI0OWI2YWZmMmEyODRhZjBkMzEwMjc1ZmQuLmEwOGY2MTE0
YjkyNzVkZjEyZGU0NWMxNWVmZWYyNGZlZjk5ZDgzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9PV05FUlMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBw
ZXJzL09XTkVSUwpAQCAtMiw3ICsyLDYgQEAgaGVucmlrYUB3ZWJydGMub3JnCiBtZmxvZG1hbkB3
ZWJydGMub3JnCiBuaWtsYXMuZW5ib21Ad2VicnRjLm9yZwogbmlzc2VAd2VicnRjLm9yZwotcGVy
a2pAd2VicnRjLm9yZwogCiAjIFRoZXNlIGFyZSBmb3IgdGhlIGNvbW1vbiBjYXNlIG9mIGFkZGlu
ZyBvciByZW5hbWluZyBmaWxlcy4gSWYgeW91J3JlIGRvaW5nCiAjIHN0cnVjdHVyYWwgY2hhbmdl
cywgcGxlYXNlIGdldCBhIHJldmlldyBmcm9tIGEgcmV2aWV3ZXIgaW4gdGhpcyBmaWxlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgKaW5kZXggNGI2ZWFi
OGVkY2ViZTU5OGEzYjhkY2FkODMwODFhYjI0M2IyZjJjNS4uZjFmYzExZjE3Mjk4ZTg3NjJjOTNj
Y2JkYzY4NDYwNDNhMjFiMTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9jbG9jay5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFNZU1RFTV9XUkFQUEVS
U19JTkNMVURFX0NMT0NLX0hfCiAjZGVmaW5lIFNZU1RFTV9XUkFQUEVSU19JTkNMVURFX0NMT0NL
X0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRl
ICJydGNfYmFzZS9zeW5jaHJvbml6YXRpb24vcndfbG9ja193cmFwcGVyLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBl
cnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmgKaW5k
ZXggMDUzMWRkYjU2MzhiZTBlY2U4NDU2ZTk4ZjZjM2Y0MjFkNTlmNTcwZS4uOTg5ZTc5MjliMzlh
MDgxODIzMDExMTBhZTRmMmI1MjJmOTkxYjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRf
d3JhcHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaApAQCAtMTIsMTEgKzEyLDcg
QEAKICNkZWZpbmUgU1lTVEVNX1dSQVBQRVJTX0lOQ0xVREVfRVZFTlRfV1JBUFBFUl9IXwogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKLWVudW0gRXZlbnRUeXBlV3JhcHBlciB7Ci0gIGtFdmVudFNpZ25h
bGVkID0gMSwKLSAga0V2ZW50RXJyb3IgPSAyLAotICBrRXZlbnRUaW1lb3V0ID0gMwotfTsKK2Vu
dW0gRXZlbnRUeXBlV3JhcHBlciB7IGtFdmVudFNpZ25hbGVkID0gMSwga0V2ZW50VGltZW91dCA9
IDIgfTsKIAogI2RlZmluZSBXRUJSVENfRVZFTlRfSU5GSU5JVEUgMHhmZmZmZmZmZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1f
d3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgKaW5kZXggMmEy
Y2RhMDJkMDNmNTlhMzRkNjIxMDg4ZWE4ZWE5YzA2YzQ1NTAxMi4uZjAwZWNmMjYyMmFlZmQ4MTc3
MTcwODZiNjNhYjRlYjRkOWIzMzkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFw
cGVycy9pbmNsdWRlL21ldHJpY3MuaApAQCAtMTUsNyArMTUsNiBAQAogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ydHBfdG9f
bnRwX2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvcnRwX3RvX250cF9lc3RpbWF0b3IuaAppbmRleCBk
NzAwOWQ4YjFmNDUwNGRiNWQ3MjgzYmZhNzlkOTJlMjg4OWY0NDVjLi5jMjQ0YzRmZjI3NDUyMDli
ZmQ0OGVjNDVkOWM4YjY0MzRhZWZjZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ydHBfdG9fbnRw
X2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL3J0cF90b19udHBfZXN0aW1hdG9yLmgKQEAgLTEx
LDEwICsxMSwxMiBAQAogI2lmbmRlZiBTWVNURU1fV1JBUFBFUlNfSU5DTFVERV9SVFBfVE9fTlRQ
X0VTVElNQVRPUl9IXwogI2RlZmluZSBTWVNURU1fV1JBUFBFUlNfSU5DTFVERV9SVFBfVE9fTlRQ
X0VTVElNQVRPUl9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bGlzdD4KIAog
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1
ZGUvbW9kdWxlX2NvbW1vbl90eXBlc19wdWJsaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfbWVkaWFuX2ZpbHRlci5o
IgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL250cF90aW1lLmgiCiAKQEAgLTQw
LDIzICs0MiwxMyBAQCBjbGFzcyBSdHBUb050cEVzdGltYXRvciB7CiAKICAgLy8gRXN0aW1hdGVk
IHBhcmFtZXRlcnMgZnJvbSBSVFAgYW5kIE5UUCB0aW1lc3RhbXAgcGFpcnMgaW4gfG1lYXN1cmVt
ZW50c198LgogICBzdHJ1Y3QgUGFyYW1ldGVycyB7Ci0gICAgLy8gSW1wbGljaXQgY29udmVyc2lv
biBmcm9tIGludCBiZWNhdXNlIE1vdmluZ01lZGlhbkZpbHRlciByZXR1cm5zIDAKLSAgICAvLyBp
bnRlcm5hbGx5IGlmIG5vIHNhbXBsZXMgYXJlIHByZXNlbnQuIEhvd2V2ZXIsIGl0IHNob3VsZCBu
ZXZlciBoYXBwZW4gYXMKLSAgICAvLyB3ZSBkb24ndCBhc2sgc21vb3RoaW5nX2ZpbHRlcl8gdG8g
cmV0dXJuIGFueXRoaW5nIGlmIHRoZXJlIHdlcmUgbm8KLSAgICAvLyBzYW1wbGVzLgotICAgIFBh
cmFtZXRlcnMoY29uc3QgaW50JiB2YWx1ZSkgeyAgLy8gTk9MSU5UCi0gICAgICBSVENfTk9UUkVB
Q0hFRCgpOwotICAgIH0KICAgICBQYXJhbWV0ZXJzKCkgOiBmcmVxdWVuY3lfa2h6KDAuMCksIG9m
ZnNldF9tcygwLjApIHt9CiAKKyAgICBQYXJhbWV0ZXJzKGRvdWJsZSBmcmVxdWVuY3lfa2h6LCBk
b3VibGUgb2Zmc2V0X21zKQorICAgICAgICA6IGZyZXF1ZW5jeV9raHooZnJlcXVlbmN5X2toeiks
IG9mZnNldF9tcyhvZmZzZXRfbXMpIHt9CisKICAgICBkb3VibGUgZnJlcXVlbmN5X2toejsKICAg
ICBkb3VibGUgb2Zmc2V0X21zOwotCi0gICAgLy8gTmVlZGVkIHRvIG1ha2UgaXQgd29yayBpbnNp
ZGUgTW92aW5nTWVkaWFuRmlsdGVyCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUGFyYW1ldGVy
cyYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJhbWV0ZXJzJiBv
dGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBhcmFtZXRlcnMmIG90aGVy
KSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFyYW1ldGVycyYgb3RoZXIpIGNv
bnN0OwogICB9OwogCiAgIC8vIFVwZGF0ZXMgbWVhc3VyZW1lbnRzIHdpdGggUlRQL05UUCB0aW1l
c3RhbXAgcGFpciBmcm9tIGEgUlRDUCBzZW5kZXIgcmVwb3J0LgpAQCAtNjgsNyArNjAsNyBAQCBj
bGFzcyBSdHBUb050cEVzdGltYXRvciB7CiAKICAgLy8gQ29udmVydHMgYW4gUlRQIHRpbWVzdGFt
cCB0byB0aGUgTlRQIGRvbWFpbiBpbiBtaWxsaXNlY29uZHMuCiAgIC8vIFJldHVybnMgdHJ1ZSBv
biBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UuCi0gIGJvb2wgRXN0aW1hdGUoaW50NjRfdCBydHBf
dGltZXN0YW1wLCBpbnQ2NF90KiBydHBfdGltZXN0YW1wX21zKSBjb25zdDsKKyAgYm9vbCBFc3Rp
bWF0ZShpbnQ2NF90IHJ0cF90aW1lc3RhbXAsIGludDY0X3QqIG50cF90aW1lc3RhbXBfbXMpIGNv
bnN0OwogCiAgIC8vIFJldHVybnMgZXN0aW1hdGVkIHJ0cCB0byBudHAgbGluZWFyIHRyYW5zZm9y
bSBwYXJhbWV0ZXJzLgogICBjb25zdCBhYnNsOjpvcHRpb25hbDxQYXJhbWV0ZXJzPiBwYXJhbXMo
KSBjb25zdDsKQEAgLTgwLDggKzcyLDcgQEAgY2xhc3MgUnRwVG9OdHBFc3RpbWF0b3IgewogCiAg
IGludCBjb25zZWN1dGl2ZV9pbnZhbGlkX3NhbXBsZXNfOwogICBzdGQ6Omxpc3Q8UnRjcE1lYXN1
cmVtZW50PiBtZWFzdXJlbWVudHNfOwotICBNb3ZpbmdNZWRpYW5GaWx0ZXI8UGFyYW1ldGVycz4g
c21vb3RoaW5nX2ZpbHRlcl87Ci0gIGJvb2wgcGFyYW1zX2NhbGN1bGF0ZWRfOworICBhYnNsOjpv
cHRpb25hbDxQYXJhbWV0ZXJzPiBwYXJhbXNfOwogICBtdXRhYmxlIFRpbWVzdGFtcFVud3JhcHBl
ciB1bndyYXBwZXJfOwogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9z
b3VyY2UvY2xvY2suY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL2Nsb2NrLmNjCmluZGV4IDM1YWI1ZjA4NzgzNzllY2Y1
NWM1YmVhODVkOWYxYWM1NmUzMjAzNmQuLjRmNWQ5Y2ZmMWYzYTNhNzNjMzlhYmIzMmFkZjc3MTNk
YTliMGU1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvY2xvY2suY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9jbG9j
ay5jYwpAQCAtMTcsNiArMTcsOCBAQAogCiAjaW5jbHVkZSA8bW1zeXN0ZW0uaD4KIAorI2luY2x1
ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgorCiAjZWxpZiBkZWZpbmVkKFdFQlJUQ19Q
T1NJWCkKIAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CkBAIC0yNCw3ICsyNiw2IEBACiAKICNlbmRp
ZiAgLy8gZGVmaW5lZChXRUJSVENfUE9TSVgpCiAKLSNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNh
bHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9zeW5jaHJvbml6YXRpb24vcndfbG9ja193
cmFwcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVy
cy9zb3VyY2UvZXZlbnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL2V2ZW50LmNjCmluZGV4IGQxZDJjZGFmZjA3N2Nj
M2NiYjNkNGIyNzc4NGI1YTJkMTM4YzVkNWUuLjBjNGNlMTAxNTdjMjE2MTExNjlkYmJlYjczY2Qw
OTMxOGQ1OTAyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvZXZlbnQuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9l
dmVudC5jYwpAQCAtMTQsOSArMTQsNiBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbGlmIGRl
ZmluZWQoV0VCUlRDX01BQykgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKICNpbmNsdWRlIDxBcHBs
aWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KLSNpbmNsdWRlIDxwdGhyZWFk
Lmg+Ci0jZWxzZQotI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNlbmRpZgogCiAjaW5jbHVkZSAicnRj
X2Jhc2UvZXZlbnQuaCIKQEAgLTI1LDcgKzIyLDYgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNs
YXNzIEV2ZW50V3JhcHBlckltcGwgOiBwdWJsaWMgRXZlbnRXcmFwcGVyIHsKICBwdWJsaWM6Ci0g
IEV2ZW50V3JhcHBlckltcGwoKSA6IGV2ZW50XyhmYWxzZSwgZmFsc2UpIHt9CiAgIH5FdmVudFdy
YXBwZXJJbXBsKCkgb3ZlcnJpZGUge30KIAogICBib29sIFNldCgpIG92ZXJyaWRlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93
cmFwcGVycy9zb3VyY2UvZmllbGRfdHJpYWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL2ZpZWxkX3RyaWFsLmNjCmlu
ZGV4IDYwMTU4ZjQ4ODY1YmM1MWFhZmQ3YTM3MTMyMzUyNGFiNWMyZmVhYjMuLmFjNzEzMTE0NGFl
ZjJiOTcxMzUwMGZjMzYzZmE0OWJjMzYxNzU5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvZmllbGRf
dHJpYWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9maWVsZF90cmlhbC5jYwpAQCAtOSw2ICs5LDcgQEAKIAog
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKIC8vIFNpbXBsZSBmaWVsZCB0cmlh
bCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxsb3dzIGNsaWVudCB0bwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3Nv
dXJjZS9ydHBfdG9fbnRwX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvcnRwX3RvX250cF9lc3RpbWF0
b3IuY2MKaW5kZXggNzMwYzRmNjY5MWZjY2MxNGRjZjI0MDA0MWNiMjQwZmQxZjIzNTAwMi4uNGJi
ZjYwOTZkOTBjNWNjMTY0YzdlYjRjNzZmODNiM2I5MGZlNDU2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJj
ZS9ydHBfdG9fbnRwX2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL3J0cF90b19udHBfZXN0aW1h
dG9yLmNjCkBAIC0xMCwzMCArMTAsMjMgQEAKIAogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL3J0cF90b19udHBfZXN0aW1hdG9yLmgiCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNp
bmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlf
dmlldy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7Ci0vLyBOdW1iZXIgb2YgUlRDUCBTUiBy
ZXBvcnRzIHRvIHVzZSB0byBtYXAgYmV0d2VlbiBSVFAgYW5kIE5UUC4KLWNvbnN0IHNpemVfdCBr
TnVtUnRjcFJlcG9ydHNUb1VzZSA9IDI7Ci0vLyBOdW1iZXIgb2YgcGFyYW1ldGVycyBzYW1wbGVz
IHVzZWQgdG8gc21vb3RoLgotY29uc3Qgc2l6ZV90IGtOdW1TYW1wbGVzVG9TbW9vdGggPSAyMDsK
LQotLy8gQ2FsY3VsYXRlcyB0aGUgUlRQIHRpbWVzdGFtcCBmcmVxdWVuY3kgZnJvbSB0d28gcGFp
cnMgb2YgTlRQL1JUUCB0aW1lc3RhbXBzLgotYm9vbCBDYWxjdWxhdGVGcmVxdWVuY3koaW50NjRf
dCBudHBfbXMxLAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcnRwX3RpbWVzdGFt
cDEsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG50cF9tczIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBydHBfdGltZXN0YW1wMiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRvdWJsZSogZnJlcXVlbmN5X2toeikgewotICBpZiAobnRwX21zMSA8PSBudHBfbXMy
KQotICAgIHJldHVybiBmYWxzZTsKLQotICAqZnJlcXVlbmN5X2toeiA9IHN0YXRpY19jYXN0PGRv
dWJsZT4ocnRwX3RpbWVzdGFtcDEgLSBydHBfdGltZXN0YW1wMikgLwotICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obnRwX21zMSAtIG50cF9tczIpOwotICByZXR1cm4gdHJ1
ZTsKLX0KKy8vIE1heGltdW0gbnVtYmVyIG9mIFJUQ1AgU1IgcmVwb3J0cyB0byB1c2UgdG8gbWFw
IGJldHdlZW4gUlRQIGFuZCBOVFAuCitjb25zdCBzaXplX3Qga051bVJ0Y3BSZXBvcnRzVG9Vc2Ug
PSAyMDsKKy8vIERvbid0IGFsbG93IE5UUCB0aW1lc3RhbXBzIHRvIGp1bXAgbW9yZSB0aGFuIDEg
aG91ci4gQ2hvc2VuIGFyYml0cmFyeSBhcyBiaWcKKy8vIGVub3VnaCB0byBub3QgYWZmZWN0IG5v
cm1hbCB1c2UtY2FzZXMuIFlldCBpdCBpcyBzbWFsbGVyIHRoYW4gUlRQIHdyYXAtYXJvdW5kCisv
LyBoYWxmLXBlcmlvZCAoOTBraHogUlRQIGNsb2NrIHdyYXAtYXJvdW5kcyBldmVyeSAxMy4yNSBo
b3VycykuIEFmdGVyIGhhbGYgb2YKKy8vIHdyYXAtYXJvdW5kIHBlcmlvZCBpdCBpcyBpbXBvc3Np
YmxlIHRvIHVud3JhcCBSVFAgdGltZXN0YW1wcyBjb3JyZWN0bHkuCitjb25zdCBpbnQga01heEFs
bG93ZWRSdGNwTnRwSW50ZXJ2YWxNcyA9IDYwICogNjAgKiAxMDAwOwogCiBib29sIENvbnRhaW5z
KGNvbnN0IHN0ZDo6bGlzdDxSdHBUb050cEVzdGltYXRvcjo6UnRjcE1lYXN1cmVtZW50PiYgbWVh
c3VyZW1lbnRzLAogICAgICAgICAgICAgICBjb25zdCBSdHBUb050cEVzdGltYXRvcjo6UnRjcE1l
YXN1cmVtZW50JiBvdGhlcikgewpAQCAtNDMsMjkgKzM2LDQ3IEBAIGJvb2wgQ29udGFpbnMoY29u
c3Qgc3RkOjpsaXN0PFJ0cFRvTnRwRXN0aW1hdG9yOjpSdGNwTWVhc3VyZW1lbnQ+JiBtZWFzdXJl
bWVudHMsCiAgIH0KICAgcmV0dXJuIGZhbHNlOwogfQotfSAgLy8gbmFtZXNwYWNlCiAKLWJvb2wg
UnRwVG9OdHBFc3RpbWF0b3I6OlBhcmFtZXRlcnM6Om9wZXJhdG9yPChjb25zdCBQYXJhbWV0ZXJz
JiBvdGhlcikgY29uc3QgewotICBpZiAoZnJlcXVlbmN5X2toeiA8IG90aGVyLmZyZXF1ZW5jeV9r
aHogLSAxZS02KSB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0gZWxzZSBpZiAoZnJlcXVlbmN5X2to
eiA+IG90aGVyLmZyZXF1ZW5jeV9raHogKyAxZS02KSB7CisvLyBHaXZlbiB4W10gYW5kIHlbXSB3
cml0ZXMgb3V0IHN1Y2ggayBhbmQgYiB0aGF0IGxpbmUgeT1rKngrYiBhcHByb3hpbWF0ZXMKKy8v
IGdpdmVuIHBvaW50cyBpbiB0aGUgYmVzdCB3YXkgKExlYXN0IFNxdWFyZXMgTWV0aG9kKS4KK2Jv
b2wgTGluZWFyUmVncmVzc2lvbihydGM6OkFycmF5Vmlldzxjb25zdCBkb3VibGU+IHgsCisgICAg
ICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZG91YmxlPiB5LAorICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSogaywKKyAgICAgICAgICAgICAgICAgICAgICBkb3VibGUq
IGIpIHsKKyAgc2l6ZV90IG4gPSB4LnNpemUoKTsKKyAgaWYgKG4gPCAyKQorICAgIHJldHVybiBm
YWxzZTsKKworICBpZiAoeS5zaXplKCkgIT0gbikKICAgICByZXR1cm4gZmFsc2U7Ci0gIH0gZWxz
ZSB7Ci0gICAgcmV0dXJuIG9mZnNldF9tcyA8IG90aGVyLm9mZnNldF9tcyAtIDFlLTY7CisKKyAg
ZG91YmxlIGF2Z194ID0gMDsKKyAgZG91YmxlIGF2Z195ID0gMDsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBuOyArK2kpIHsKKyAgICBhdmdfeCArPSB4W2ldOworICAgIGF2Z195ICs9IHlbaV07
CisgIH0KKyAgYXZnX3ggLz0gbjsKKyAgYXZnX3kgLz0gbjsKKworICBkb3VibGUgdmFyaWFuY2Vf
eCA9IDA7CisgIGRvdWJsZSBjb3ZhcmlhbmNlX3h5ID0gMDsKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBuOyArK2kpIHsKKyAgICBkb3VibGUgbm9ybWFsaXplZF94ID0geFtpXSAtIGF2Z194Owor
ICAgIGRvdWJsZSBub3JtYWxpemVkX3kgPSB5W2ldIC0gYXZnX3k7CisgICAgdmFyaWFuY2VfeCAr
PSBub3JtYWxpemVkX3ggKiBub3JtYWxpemVkX3g7CisgICAgY292YXJpYW5jZV94eSArPSBub3Jt
YWxpemVkX3ggKiBub3JtYWxpemVkX3k7CiAgIH0KLX0KIAotYm9vbCBSdHBUb050cEVzdGltYXRv
cjo6UGFyYW1ldGVyczo6b3BlcmF0b3I9PShjb25zdCBQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3Qg
ewotICByZXR1cm4gIShvdGhlciA8ICp0aGlzIHx8ICp0aGlzIDwgb3RoZXIpOwotfQorICBpZiAo
c3RkOjpmYWJzKHZhcmlhbmNlX3gpIDwgMWUtOCkKKyAgICByZXR1cm4gZmFsc2U7CiAKLWJvb2wg
UnRwVG9OdHBFc3RpbWF0b3I6OlBhcmFtZXRlcnM6Om9wZXJhdG9yIT0oY29uc3QgUGFyYW1ldGVy
cyYgb3RoZXIpIGNvbnN0IHsKLSAgcmV0dXJuIG90aGVyIDwgKnRoaXMgfHwgKnRoaXMgPCBvdGhl
cjsKKyAgKmsgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGNvdmFyaWFuY2VfeHkgLyB2YXJpYW5jZV94
KTsKKyAgKmIgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGF2Z195IC0gKCprKSAqIGF2Z194KTsKKyAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUnRwVG9OdHBFc3RpbWF0b3I6OlBhcmFtZXRlcnM6Om9w
ZXJhdG9yPD0oY29uc3QgUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0IHsKLSAgcmV0dXJuICEob3Ro
ZXIgPCAqdGhpcyk7Ci19Cit9ICAvLyBuYW1lc3BhY2UKIAogUnRwVG9OdHBFc3RpbWF0b3I6OlJ0
Y3BNZWFzdXJlbWVudDo6UnRjcE1lYXN1cmVtZW50KHVpbnQzMl90IG50cF9zZWNzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG50
cF9mcmFjLApAQCAtODIsMzEgKzkzLDI5IEBAIGJvb2wgUnRwVG9OdHBFc3RpbWF0b3I6OlJ0Y3BN
ZWFzdXJlbWVudDo6SXNFcXVhbCgKIH0KIAogLy8gQ2xhc3MgZm9yIGNvbnZlcnRpbmcgYW4gUlRQ
IHRpbWVzdGFtcCB0byB0aGUgTlRQIGRvbWFpbi4KLVJ0cFRvTnRwRXN0aW1hdG9yOjpSdHBUb050
cEVzdGltYXRvcigpCi0gICAgOiBjb25zZWN1dGl2ZV9pbnZhbGlkX3NhbXBsZXNfKDApLAotICAg
ICAgc21vb3RoaW5nX2ZpbHRlcl8oa051bVNhbXBsZXNUb1Ntb290aCksCi0gICAgICBwYXJhbXNf
Y2FsY3VsYXRlZF8oZmFsc2UpIHt9CitSdHBUb050cEVzdGltYXRvcjo6UnRwVG9OdHBFc3RpbWF0
b3IoKSA6IGNvbnNlY3V0aXZlX2ludmFsaWRfc2FtcGxlc18oMCkge30KIAogUnRwVG9OdHBFc3Rp
bWF0b3I6On5SdHBUb050cEVzdGltYXRvcigpIHt9CiAKIHZvaWQgUnRwVG9OdHBFc3RpbWF0b3I6
OlVwZGF0ZVBhcmFtZXRlcnMoKSB7Ci0gIGlmIChtZWFzdXJlbWVudHNfLnNpemUoKSAhPSBrTnVt
UnRjcFJlcG9ydHNUb1VzZSkKKyAgaWYgKG1lYXN1cmVtZW50c18uc2l6ZSgpIDwgMikKICAgICBy
ZXR1cm47CiAKLSAgUGFyYW1ldGVycyBwYXJhbXM7Ci0gIGludDY0X3QgdGltZXN0YW1wX25ldyA9
IG1lYXN1cmVtZW50c18uZnJvbnQoKS51bndyYXBwZWRfcnRwX3RpbWVzdGFtcDsKLSAgaW50NjRf
dCB0aW1lc3RhbXBfb2xkID0gbWVhc3VyZW1lbnRzXy5iYWNrKCkudW53cmFwcGVkX3J0cF90aW1l
c3RhbXA7Ci0KLSAgaW50NjRfdCBudHBfbXNfbmV3ID0gbWVhc3VyZW1lbnRzXy5mcm9udCgpLm50
cF90aW1lLlRvTXMoKTsKLSAgaW50NjRfdCBudHBfbXNfb2xkID0gbWVhc3VyZW1lbnRzXy5iYWNr
KCkubnRwX3RpbWUuVG9NcygpOworICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHg7CisgIHN0ZDo6dmVj
dG9yPGRvdWJsZT4geTsKKyAgeC5yZXNlcnZlKG1lYXN1cmVtZW50c18uc2l6ZSgpKTsKKyAgeS5y
ZXNlcnZlKG1lYXN1cmVtZW50c18uc2l6ZSgpKTsKKyAgZm9yIChhdXRvIGl0ID0gbWVhc3VyZW1l
bnRzXy5iZWdpbigpOyBpdCAhPSBtZWFzdXJlbWVudHNfLmVuZCgpOyArK2l0KSB7CisgICAgeC5w
dXNoX2JhY2soaXQtPnVud3JhcHBlZF9ydHBfdGltZXN0YW1wKTsKKyAgICB5LnB1c2hfYmFjayhp
dC0+bnRwX3RpbWUuVG9NcygpKTsKKyAgfQorICBkb3VibGUgc2xvcGUsIG9mZnNldDsKIAotICBp
ZiAoIUNhbGN1bGF0ZUZyZXF1ZW5jeShudHBfbXNfbmV3LCB0aW1lc3RhbXBfbmV3LCBudHBfbXNf
b2xkLCB0aW1lc3RhbXBfb2xkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyYW1zLmZy
ZXF1ZW5jeV9raHopKSB7CisgIGlmICghTGluZWFyUmVncmVzc2lvbih4LCB5LCAmc2xvcGUsICZv
ZmZzZXQpKSB7CiAgICAgcmV0dXJuOwogICB9Ci0gIHBhcmFtcy5vZmZzZXRfbXMgPSB0aW1lc3Rh
bXBfbmV3IC0gcGFyYW1zLmZyZXF1ZW5jeV9raHogKiBudHBfbXNfbmV3OwotICBwYXJhbXNfY2Fs
Y3VsYXRlZF8gPSB0cnVlOwotICBzbW9vdGhpbmdfZmlsdGVyXy5JbnNlcnQocGFyYW1zKTsKKwor
ICBwYXJhbXNfLmVtcGxhY2UoMSAvIHNsb3BlLCBvZmZzZXQpOwogfQogCiBib29sIFJ0cFRvTnRw
RXN0aW1hdG9yOjpVcGRhdGVNZWFzdXJlbWVudHModWludDMyX3QgbnRwX3NlY3MsCkBAIC0xMzIs
NyArMTQxLDggQEAgYm9vbCBSdHBUb050cEVzdGltYXRvcjo6VXBkYXRlTWVhc3VyZW1lbnRzKHVp
bnQzMl90IG50cF9zZWNzLAogICBpZiAoIW1lYXN1cmVtZW50c18uZW1wdHkoKSkgewogICAgIGlu
dDY0X3Qgb2xkX3J0cF90aW1lc3RhbXAgPSBtZWFzdXJlbWVudHNfLmZyb250KCkudW53cmFwcGVk
X3J0cF90aW1lc3RhbXA7CiAgICAgaW50NjRfdCBvbGRfbnRwX21zID0gbWVhc3VyZW1lbnRzXy5m
cm9udCgpLm50cF90aW1lLlRvTXMoKTsKLSAgICBpZiAobnRwX21zX25ldyA8PSBvbGRfbnRwX21z
KSB7CisgICAgaWYgKG50cF9tc19uZXcgPD0gb2xkX250cF9tcyB8fAorICAgICAgICBudHBfbXNf
bmV3ID4gb2xkX250cF9tcyArIGtNYXhBbGxvd2VkUnRjcE50cEludGVydmFsTXMpIHsKICAgICAg
IGludmFsaWRfc2FtcGxlID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKHVud3JhcHBlZF9ydHBfdGlt
ZXN0YW1wIDw9IG9sZF9ydHBfdGltZXN0YW1wKSB7CiAgICAgICBSVENfTE9HKExTX1dBUk5JTkcp
CkBAIC0xNTIsOCArMTYyLDcgQEAgYm9vbCBSdHBUb050cEVzdGltYXRvcjo6VXBkYXRlTWVhc3Vy
ZW1lbnRzKHVpbnQzMl90IG50cF9zZWNzLAogICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIk11
bHRpcGxlIGNvbnNlY3V0aXZlbHkgaW52YWxpZCBSVENQIFNSIHJlcG9ydHMsICIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJjbGVhcmluZyBtZWFzdXJlbWVudHMuIjsKICAgICBtZWFzdXJl
bWVudHNfLmNsZWFyKCk7Ci0gICAgc21vb3RoaW5nX2ZpbHRlcl8uUmVzZXQoKTsKLSAgICBwYXJh
bXNfY2FsY3VsYXRlZF8gPSBmYWxzZTsKKyAgICBwYXJhbXNfID0gYWJzbDo6bnVsbG9wdDsKICAg
fQogICBjb25zZWN1dGl2ZV9pbnZhbGlkX3NhbXBsZXNfID0gMDsKIApAQCAtMTcwLDM1ICsxNzks
MjkgQEAgYm9vbCBSdHBUb050cEVzdGltYXRvcjo6VXBkYXRlTWVhc3VyZW1lbnRzKHVpbnQzMl90
IG50cF9zZWNzLAogfQogCiBib29sIFJ0cFRvTnRwRXN0aW1hdG9yOjpFc3RpbWF0ZShpbnQ2NF90
IHJ0cF90aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
KiBydHBfdGltZXN0YW1wX21zKSBjb25zdCB7Ci0gIGlmICghcGFyYW1zX2NhbGN1bGF0ZWRfKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCogbnRwX3RpbWVzdGFtcF9t
cykgY29uc3QgeworICBpZiAoIXBhcmFtc18pCiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIGludDY0
X3QgcnRwX3RpbWVzdGFtcF91bndyYXBwZWQgPSB1bndyYXBwZXJfLlVud3JhcChydHBfdGltZXN0
YW1wKTsKIAotICBQYXJhbWV0ZXJzIHBhcmFtcyA9IHNtb290aGluZ19maWx0ZXJfLkdldEZpbHRl
cmVkVmFsdWUoKTsKLQogICAvLyBwYXJhbXNfY2FsY3VsYXRlZF8gc2hvdWxkIG5vdCBiZSB0cnVl
IHVubGVzcyBtcyBwYXJhbXMuZnJlcXVlbmN5X2toeiBoYXMKICAgLy8gYmVlbiBjYWxjdWxhdGVk
IHRvIHNvbWV0aGluZyBub24gemVyby4KLSAgUlRDX0RDSEVDS19ORShwYXJhbXMuZnJlcXVlbmN5
X2toeiwgMC4wKTsKKyAgUlRDX0RDSEVDS19ORShwYXJhbXNfLT5mcmVxdWVuY3lfa2h6LCAwLjAp
OwogICBkb3VibGUgcnRwX21zID0KLSAgICAgIChzdGF0aWNfY2FzdDxkb3VibGU+KHJ0cF90aW1l
c3RhbXBfdW53cmFwcGVkKSAtIHBhcmFtcy5vZmZzZXRfbXMpIC8KLSAgICAgICAgICBwYXJhbXMu
ZnJlcXVlbmN5X2toeiArCi0gICAgICAwLjVmOworICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihy
dHBfdGltZXN0YW1wX3Vud3JhcHBlZCkgLyBwYXJhbXNfLT5mcmVxdWVuY3lfa2h6ICsKKyAgICAg
IHBhcmFtc18tPm9mZnNldF9tcyArIDAuNWY7CiAKICAgaWYgKHJ0cF9tcyA8IDApCiAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICpydHBfdGltZXN0YW1wX21zID0gcnRwX21zOworICAqbnRwX3RpbWVz
dGFtcF9tcyA9IHJ0cF9tczsKKwogICByZXR1cm4gdHJ1ZTsKIH0KIAogY29uc3QgYWJzbDo6b3B0
aW9uYWw8UnRwVG9OdHBFc3RpbWF0b3I6OlBhcmFtZXRlcnM+IFJ0cFRvTnRwRXN0aW1hdG9yOjpw
YXJhbXMoKQogICAgIGNvbnN0IHsKLSAgYWJzbDo6b3B0aW9uYWw8UGFyYW1ldGVycz4gcmVzOwot
ICBpZiAocGFyYW1zX2NhbGN1bGF0ZWRfKSB7Ci0gICAgcmVzLmVtcGxhY2Uoc21vb3RoaW5nX2Zp
bHRlcl8uR2V0RmlsdGVyZWRWYWx1ZSgpKTsKLSAgfQotICByZXR1cm4gcmVzOworICByZXR1cm4g
cGFyYW1zXzsKIH0KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2Uv
cnRwX3RvX250cF9lc3RpbWF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL3J0cF90b19udHBfZXN0
aW1hdG9yX3VuaXR0ZXN0LmNjCmluZGV4IDA2NDdlYzhjYWQ2Mzk4YzI2YzViYmJkYmVmNWRhYzQ1
NTdiYjNkNDAuLmIwYjgzYmJiYjFjNzY2NmI0ZTYxNTUzODI1NDgwY2MyNjljZjMzNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93
cmFwcGVycy9zb3VyY2UvcnRwX3RvX250cF9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3Nv
dXJjZS9ydHBfdG9fbnRwX2VzdGltYXRvcl91bml0dGVzdC5jYwpAQCAtOSwxMSArOSwxMyBAQAog
ICovCiAKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ydHBfdG9fbnRwX2VzdGlt
YXRvci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3JhbmRvbS5oIgogI2luY2x1ZGUgInRlc3QvZ3Rl
c3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogY29uc3QgdWludDMyX3Qg
a09uZU1zSW5OdHBGcmFjID0gNDI5NDk2NzsKK2NvbnN0IHVpbnQzMl90IGtPbmVIb3VySW5OdHBT
ZWMgPSA2MCAqIDYwOwogY29uc3QgdWludDMyX3Qga1RpbWVzdGFtcFRpY2tzUGVyTXMgPSA5MDsK
IH0gIC8vIG5hbWVzcGFjZQogCkBAIC0yMjQsNiArMjI2LDIyIEBAIFRFU1QoVXBkYXRlUnRjcE1l
YXN1cmVtZW50VGVzdHMsIEZhaWxzRm9yT2xkTnRwKSB7CiAgICAgICBlc3RpbWF0b3IuVXBkYXRl
TWVhc3VyZW1lbnRzKG50cF9zZWMsIG50cF9mcmFjLCB0aW1lc3RhbXAsICZuZXdfc3IpKTsKIH0K
IAorVEVTVChVcGRhdGVSdGNwTWVhc3VyZW1lbnRUZXN0cywgRmFpbHNGb3JUb29OZXdOdHApIHsK
KyAgUnRwVG9OdHBFc3RpbWF0b3IgZXN0aW1hdG9yOworICB1aW50MzJfdCBudHBfc2VjID0gMTsK
KyAgdWludDMyX3QgbnRwX2ZyYWMgPSA2OTk5MjUwNTA7CisgIHVpbnQzMl90IHRpbWVzdGFtcCA9
IDB4MTIzNDU2Nzg7CisgIGJvb2wgbmV3X3NyOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIGVzdGlt
YXRvci5VcGRhdGVNZWFzdXJlbWVudHMobnRwX3NlYywgbnRwX2ZyYWMsIHRpbWVzdGFtcCwgJm5l
d19zcikpOworICBFWFBFQ1RfVFJVRShuZXdfc3IpOworICAvLyBOdHAgdGltZSBmcm9tIGZhciBm
dXR1cmUsIGxpc3Qgbm90IHVwZGF0ZWQuCisgIG50cF9zZWMgKz0ga09uZUhvdXJJbk50cFNlYyAq
IDI7CisgIHRpbWVzdGFtcCArPSBrVGltZXN0YW1wVGlja3NQZXJNcyAqIDEwOworICBFWFBFQ1Rf
RkFMU0UoCisgICAgICBlc3RpbWF0b3IuVXBkYXRlTWVhc3VyZW1lbnRzKG50cF9zZWMsIG50cF9m
cmFjLCB0aW1lc3RhbXAsICZuZXdfc3IpKTsKK30KKwogVEVTVChVcGRhdGVSdGNwTWVhc3VyZW1l
bnRUZXN0cywgRmFpbHNGb3JFcXVhbFRpbWVzdGFtcCkgewogICBSdHBUb050cEVzdGltYXRvciBl
c3RpbWF0b3I7CiAgIHVpbnQzMl90IG50cF9zZWMgPSAwOwpAQCAtMjkyLDQgKzMxMCwzNyBAQCBU
RVNUKFJ0cFRvTnRwVGVzdHMsIEZhaWxzRm9yTm9QYXJhbWV0ZXJzKSB7CiAgIEVYUEVDVF9GQUxT
RShlc3RpbWF0b3IuRXN0aW1hdGUodGltZXN0YW1wLCAmdGltZXN0YW1wX21zKSk7CiB9CiAKK1RF
U1QoUnRwVG9OdHBUZXN0cywgQXZlcmFnZXNFcnJvck91dCkgeworICBSdHBUb050cEVzdGltYXRv
ciBlc3RpbWF0b3I7CisgIHVpbnQzMl90IG50cF9zZWMgPSAxOworICB1aW50MzJfdCBudHBfZnJh
YyA9IDkwMDAwMDAwOyAgLy8gTW9yZSB0aGFuIDEgbXMuCisgIHVpbnQzMl90IHRpbWVzdGFtcCA9
IDB4MTIzNDU2Nzg7CisgIGNvbnN0IGludCBrTnRwU2VjU3RlcCA9IDE7ICAvLyAxIHNlY29uZC4K
KyAgY29uc3QgaW50IGtSdHBUaWNrc1Blck1zID0gOTA7CisgIGNvbnN0IGludCBrUnRwU3RlcCA9
IGtSdHBUaWNrc1Blck1zICogMTAwMDsKKyAgYm9vbCBuZXdfc3I7CisgIEVYUEVDVF9UUlVFKAor
ICAgICAgZXN0aW1hdG9yLlVwZGF0ZU1lYXN1cmVtZW50cyhudHBfc2VjLCBudHBfZnJhYywgdGlt
ZXN0YW1wLCAmbmV3X3NyKSk7CisgIEVYUEVDVF9UUlVFKG5ld19zcik7CisKKyAgUmFuZG9tIHJh
bmQoMTEyMzUzNkwpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAg
IC8vIEFkdmFuY2UgYm90aCB0aW1lc3RhbXBzIGJ5IGV4YWN0bHkgMSBzZWNvbmQuCisgICAgbnRw
X3NlYyArPSBrTnRwU2VjU3RlcDsKKyAgICB0aW1lc3RhbXAgKz0ga1J0cFN0ZXA7CisgICAgLy8g
QWRkIHVwdG8gMW1zIG9mIGVycm9ycyB0byBOVFAgYW5kIFJUUCB0aW1lc3RhbXBzIHBhc3NlZCB0
byBlc3RpbWF0b3IuCisgICAgRVhQRUNUX1RSVUUoZXN0aW1hdG9yLlVwZGF0ZU1lYXN1cmVtZW50
cygKKyAgICAgICAgbnRwX3NlYywKKyAgICAgICAgbnRwX2ZyYWMgKyByYW5kLlJhbmQoLXN0YXRp
Y19jYXN0PGludD4oa09uZU1zSW5OdHBGcmFjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50PihrT25lTXNJbk50cEZyYWMpKSwKKyAgICAgICAgdGltZXN0YW1w
ICsgcmFuZC5SYW5kKC1rUnRwVGlja3NQZXJNcywga1J0cFRpY2tzUGVyTXMpLCAmbmV3X3NyKSk7
CisgICAgRVhQRUNUX1RSVUUobmV3X3NyKTsKKworICAgIGludDY0X3QgZXN0aW1hdGVkX250cF9t
czsKKyAgICBFWFBFQ1RfVFJVRShlc3RpbWF0b3IuRXN0aW1hdGUodGltZXN0YW1wLCAmZXN0aW1h
dGVkX250cF9tcykpOworICAgIC8vIEFsbG93IHVwdG8gMiBtcyBvZiBlcnJvci4KKyAgICBFWFBF
Q1RfTkVBUihOdHBUaW1lKG50cF9zZWMsIG50cF9mcmFjKS5Ub01zKCksIGVzdGltYXRlZF9udHBf
bXMsIDIpOworICB9Cit9CisKIH07ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L0JVSUxELmduIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9CVUlMRC5nbgpp
bmRleCAyODE0NmUwNTk5Y2RlOWI1NTIwMGIzZDZmYTllNzcxYjEwOWQ1ZjBkLi43Y2Q3YjNlYWEx
ZmI5MzcyNGEyNmQ3NGNkZDY5MjY1YTE1Y2YwNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L0JVSUxELmduCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvQlVJTEQuZ24KQEAgLTEzNyw2
ICsxMzcsOCBAQCBpZiAoaXNfaW9zKSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAgICAgdmlzaWJp
bGl0eSA9IFsgIjp0ZXN0X3N1cHBvcnQiIF0KICAgICBzb3VyY2VzID0gWworICAgICAgImlvcy9j
b3ZlcmFnZV91dGlsX2lvcy5oIiwKKyAgICAgICJpb3MvY292ZXJhZ2VfdXRpbF9pb3MubW0iLAog
ICAgICAgImlvcy90ZXN0X3N1cHBvcnQuaCIsCiAgICAgICAiaW9zL3Rlc3Rfc3VwcG9ydC5tbSIs
CiAgICAgXQpAQCAtMTQ0LDYgKzE0NiwxNSBAQCBpZiAoaXNfaW9zKSB7CiAgICAgICAiOnBlcmZf
dGVzdCIsCiAgICAgICAiLi4vc2RrOmhlbHBlcnNfb2JqYyIsCiAgICAgXQorICAgIGNvbmZpZ3Mg
Kz0gWyAiOnRlc3Rfc3VwcG9ydF9vYmpjX2NvbmZpZyIgXQorICB9CisKKyAgY29uZmlnKCJ0ZXN0
X3N1cHBvcnRfb2JqY19jb25maWciKSB7CisgICAgZGVmaW5lcyA9IFtdCisKKyAgICBpZiAodXNl
X2NsYW5nX2NvdmVyYWdlKSB7CisgICAgICBkZWZpbmVzICs9IFsgIldFQlJUQ19JT1NfRU5BQkxF
X0NPVkVSQUdFIiBdCisgICAgfQogICB9CiB9CiAKQEAgLTE5NiwyNCArMjA3LDQxIEBAIHJ0Y19z
b3VyY2Vfc2V0KCJ0ZXN0X3N1cHBvcnQiKSB7CiB9CiAKIGlmIChydGNfaW5jbHVkZV90ZXN0cykg
ewotICBydGNfc291cmNlX3NldCgidGVzdF9tYWluIikgeworICBydGNfc291cmNlX3NldCgidGVz
dF9tYWluX2xpYiIpIHsKICAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICAgIHRlc3Rvbmx5ID0g
dHJ1ZQogICAgIHNvdXJjZXMgPSBbCi0gICAgICAidGVzdF9tYWluLmNjIiwKKyAgICAgICJ0ZXN0
X21haW5fbGliLmNjIiwKKyAgICAgICJ0ZXN0X21haW5fbGliLmgiLAogICAgIF0KIAotICAgIHB1
YmxpY19kZXBzID0gWwotICAgICAgIjp0ZXN0X3N1cHBvcnQiLAotICAgIF0KICAgICBkZXBzID0g
WwogICAgICAgIjpmaWVsZF90cmlhbCIsCi0gICAgICAiOmZpbGV1dGlscyIsCiAgICAgICAiOnBl
cmZfdGVzdCIsCisgICAgICAiOnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRj
X2Jhc2UiLAogICAgICAgIi4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgICAi
Li4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3MiLAogICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCisg
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5Om1lbW9yeSIsCisKKyAg
ICAgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTc5Mik6IFRoaXMgaXMgbmVlZGVkIGZvciBkb3du
c3RyZWFtIHByb2plY3RzIG9uCisgICAgICAjIEFuZHJvaWQsIHdoZXJlIGl0J3MgcmVwbGFjZWQg
YnkgYW4gaW50ZXJuYWwgdmVyc2lvbiBvZiBmaWxldXRpbHMgdGhhdAorICAgICAgIyBoYXMgYSBj
ZXJ0YWluIGZsYWcuIFJlbW92ZSB0aGlzIG9uY2UgdGhlIGludGVybmFsIGZpbGV1dGlscyBoYXMg
YmVlbgorICAgICAgIyBlbGltaW5hdGVkLgorICAgICAgIi4uL3Rlc3Q6ZmlsZXV0aWxzIiwKKyAg
ICBdCisgIH0KKworICBydGNfc291cmNlX3NldCgidGVzdF9tYWluIikgeworICAgIHZpc2liaWxp
dHkgPSBbICIqIiBdCisgICAgdGVzdG9ubHkgPSB0cnVlCisgICAgc291cmNlcyA9IFsKKyAgICAg
ICJ0ZXN0X21haW4uY2MiLAorICAgIF0KKworICAgIGRlcHMgPSBbCisgICAgICAiOnRlc3RfbWFp
bl9saWIiLAogICAgIF0KICAgfQogCkBAIC0zMDksNiArMzM3LDggQEAgaWYgKHJ0Y19pbmNsdWRl
X3Rlc3RzKSB7CiAgICAgICAiOnZpZGVvX3Rlc3Rfc3VwcG9ydCIsCiAgICAgICAiLi4vYXBpOmNy
ZWF0ZV9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2FwaSIsCiAgICAgICAiLi4vYXBpOnNpbXVsY2Fz
dF90ZXN0X2ZpeHR1cmVfYXBpIiwKKyAgICAgICIuLi9hcGkvdGVzdC92aWRlbzpmdW5jdGlvbl92
aWRlb19mYWN0b3J5IiwKKyAgICAgICIuLi9hcGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQy
MCIsCiAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcCIsCiAgICAgICAiLi4vbW9k
dWxlcy92aWRlb19jYXB0dXJlIiwKQEAgLTM2MCw3ICszOTAsMTAgQEAgaWYgKHJ0Y19pbmNsdWRl
X3Rlc3RzKSB7CiAKIGlmIChpc19pb3MpIHsKICAgcnRjX3NvdXJjZV9zZXQoImZpbGV1dGlsc19p
b3Nfb2JqYyIpIHsKLSAgICB2aXNpYmlsaXR5ID0gWyAiOmZpbGV1dGlscyIgXQorICAgIHZpc2li
aWxpdHkgPSBbCisgICAgICAiOmZpbGV1dGlscyIsCisgICAgICAiOmZpbGV1dGlsc19vdmVycmlk
ZV9pbXBsIiwKKyAgICBdCiAgICAgc291cmNlcyA9IFsKICAgICAgICJ0ZXN0c3VwcG9ydC9pb3Nm
aWxldXRpbHMuaCIsCiAgICAgICAidGVzdHN1cHBvcnQvaW9zZmlsZXV0aWxzLm1tIiwKQEAgLTM3
Niw3ICs0MDksMTAgQEAgaWYgKGlzX2lvcykgewogCiBpZiAoaXNfbWFjKSB7CiAgIHJ0Y19zb3Vy
Y2Vfc2V0KCJmaWxldXRpbHNfbWFjX29iamMiKSB7Ci0gICAgdmlzaWJpbGl0eSA9IFsgIjpmaWxl
dXRpbHMiIF0KKyAgICB2aXNpYmlsaXR5ID0gWworICAgICAgIjpmaWxldXRpbHMiLAorICAgICAg
IjpmaWxldXRpbHNfb3ZlcnJpZGVfaW1wbCIsCisgICAgXQogICAgIHNvdXJjZXMgPSBbCiAgICAg
ICAidGVzdHN1cHBvcnQvbWFjZmlsZXV0aWxzLmgiLAogICAgICAgInRlc3RzdXBwb3J0L21hY2Zp
bGV1dGlscy5tbSIsCkBAIC0zOTUsNiArNDMxLDQyIEBAIHJ0Y19zb3VyY2Vfc2V0KCJmaWxldXRp
bHMiKSB7CiAgICAgInRlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIiwKICAgXQogICBkZXBzID0gWwor
ICAgICI6ZmlsZXV0aWxzX292ZXJyaWRlX2FwaSIsCisgICAgIjpmaWxldXRpbHNfb3ZlcnJpZGVf
aW1wbCIsCisgICAgIi4uOndlYnJ0Y19jb21tb24iLAorICAgICIuLi9ydGNfYmFzZTpjaGVja3Mi
LAorICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uL3J0Y19iYXNl
L3N5c3RlbTphcmNoIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6
b3B0aW9uYWwiLAorICBdCisgIGlmIChpc19pb3MpIHsKKyAgICBkZXBzICs9IFsgIjpmaWxldXRp
bHNfaW9zX29iamMiIF0KKyAgfQorICBpZiAoaXNfbWFjKSB7CisgICAgZGVwcyArPSBbICI6Zmls
ZXV0aWxzX21hY19vYmpjIiBdCisgIH0KKyAgaWYgKGlzX3dpbikgeworICAgIGRlcHMgKz0gWyAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2UiIF0KKyAgfQorfQorCisjIFdlIHNlcGFyYXRlIGhlYWRlciBp
bnRvIG93biB0YXJnZXQgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgZG93bnN0cmVhbQorIyBwcm9q
ZWN0cyB0byBvdmVycmlkZSBpbXBsZW1lbnRhdGlvbi4KK3J0Y19zb3VyY2Vfc2V0KCJmaWxldXRp
bHNfb3ZlcnJpZGVfYXBpIikgeworICB0ZXN0b25seSA9IHRydWUKKyAgc291cmNlcyA9IFsKKyAg
ICAidGVzdHN1cHBvcnQvZmlsZXV0aWxzX292ZXJyaWRlLmgiLAorICBdCit9CisKK3J0Y19zb3Vy
Y2Vfc2V0KCJmaWxldXRpbHNfb3ZlcnJpZGVfaW1wbCIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisg
IHZpc2liaWxpdHkgPSBbICI6ZmlsZXV0aWxzIiBdCisgIHNvdXJjZXMgPSBbCisgICAgInRlc3Rz
dXBwb3J0L2ZpbGV1dGlsc19vdmVycmlkZS5jYyIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmZp
bGV1dGlsc19vdmVycmlkZV9hcGkiLAogICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLApA
QCAtNTIzLDYgKzU5NSw4IEBAIHJ0Y19zb3VyY2Vfc2V0KCJmYWtlX3ZpZGVvX2NvZGVjcyIpIHsK
ICAgICAiZmFrZV9kZWNvZGVyLmgiLAogICAgICJmYWtlX2VuY29kZXIuY2MiLAogICAgICJmYWtl
X2VuY29kZXIuaCIsCisgICAgImZha2VfdnA4X2RlY29kZXIuY2MiLAorICAgICJmYWtlX3ZwOF9k
ZWNvZGVyLmgiLAogICAgICJmYWtlX3ZwOF9lbmNvZGVyLmNjIiwKICAgICAiZmFrZV92cDhfZW5j
b2Rlci5oIiwKICAgXQpAQCAtNTMyLDcgKzYwNiw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJmYWtlX3Zp
ZGVvX2NvZGVjcyIpIHsKICAgfQogICBkZXBzID0gWwogICAgICIuLjp3ZWJydGNfY29tbW9uIiwK
KyAgICAiLi4vYXBpL3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICIuLi9hcGkvdmlkZW86dmlk
ZW9fZnJhbWVfaTQyMCIsCisgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6Y3JlYXRlX3ZwOF90ZW1w
b3JhbF9sYXllcnMiLAogICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGki
LAogICAgICIuLi9jb21tb25fdmlkZW86Y29tbW9uX3ZpZGVvIiwKICAgICAiLi4vbW9kdWxlcy92
aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKQEAgLTU2MCw4ICs2MzYsNiBAQCBy
dGNfc291cmNlX3NldCgidGVzdF9jb21tb24iKSB7CiAgICAgImVuY29kZXJfc2V0dGluZ3MuY2Mi
LAogICAgICJlbmNvZGVyX3NldHRpbmdzLmgiLAogICAgICJmYWtlX3ZpZGVvcmVuZGVyZXIuaCIs
Ci0gICAgImZ1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIiwKLSAgICAiZnVuY3Rpb25f
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiLAogICAgICJsYXllcl9maWx0ZXJpbmdfdHJhbnNwb3J0
LmNjIiwKICAgICAibGF5ZXJfZmlsdGVyaW5nX3RyYW5zcG9ydC5oIiwKICAgICAibW9ja190cmFu
c3BvcnQuY2MiLApAQCAtNTk5LDYgKzY3Myw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ0ZXN0X2NvbW1v
biIpIHsKICAgICAiLi4vYXBpOnRyYW5zcG9ydF9hcGkiLAogICAgICIuLi9hcGkvYXVkaW9fY29k
ZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKICAgICAiLi4vYXBpL2F1ZGlvX2Nv
ZGVjczpidWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeSIsCisgICAgIi4uL2FwaS90ZXN0L3Zp
ZGVvOmZ1bmN0aW9uX3ZpZGVvX2ZhY3RvcnkiLAorICAgICIuLi9hcGkvdmlkZW86YnVpbHRpbl92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKKyAgICAiLi4vYXBpL3ZpZGVvOnZpZGVv
X2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJh
bWUiLAogICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAogICAgICIu
Li9hdWRpbyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L2NhbGxfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvY2FsbF90ZXN0LmNjCmluZGV4IGY0ZmJmMjIxYmU5MGY1NGU4N2Zk
ZDg2NTBlYTgyYjY4NGY2ODAzNWEuLjZlMjViODVhNTZjNzI1Mzg1ZTM1ZDJlOGIzZTVkYzg0YjQ2
YTEwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3QvY2FsbF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvY2FsbF90ZXN0LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVk
ZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWls
dGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3Mv
YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVp
bHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZpZy5oIgogI2luY2x1ZGUgImNhbGwvZmFrZV9u
ZXR3b3JrX3BpcGUuaCIKICNpbmNsdWRlICJjYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9z
ZW5kLmgiCkBAIC0zOSw3ICs0MCw4IEBAIENhbGxUZXN0OjpDYWxsVGVzdCgpCiAgICAgICBzZW5k
X2V2ZW50X2xvZ18oUnRjRXZlbnRMb2c6OkNyZWF0ZU51bGwoKSksCiAgICAgICByZWN2X2V2ZW50
X2xvZ18oUnRjRXZlbnRMb2c6OkNyZWF0ZU51bGwoKSksCiAgICAgICBzZW5kZXJfY2FsbF90cmFu
c3BvcnRfY29udHJvbGxlcl8obnVsbHB0ciksCi0gICAgICBhdWRpb19zZW5kX2NvbmZpZ18obnVs
bHB0ciksCisgICAgICBhdWRpb19zZW5kX2NvbmZpZ18oLypzZW5kX3RyYW5zcG9ydD0qL251bGxw
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRy
KSwKICAgICAgIGF1ZGlvX3NlbmRfc3RyZWFtXyhudWxscHRyKSwKICAgICAgIGJicl9uZXR3b3Jr
X2NvbnRyb2xsZXJfZmFjdG9yeV8obmV3IEJick5ldHdvcmtDb250cm9sbGVyRmFjdG9yeSgpKSwK
ICAgICAgIGZha2VfZW5jb2Rlcl9mYWN0b3J5XyhbdGhpc10oKSB7CkBAIC01Myw2ICs1NSw3IEBA
IENhbGxUZXN0OjpDYWxsVGVzdCgpCiAgICAgICAgIHJldHVybiBmYWtlX2VuY29kZXI7CiAgICAg
ICB9KSwKICAgICAgIGZha2VfZGVjb2Rlcl9mYWN0b3J5XyhbXSgpIHsgcmV0dXJuIGFic2w6Om1h
a2VfdW5pcXVlPEZha2VEZWNvZGVyPigpOyB9KSwKKyAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2Zh
Y3RvcnlfKENyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkpLAogICAg
ICAgbnVtX3ZpZGVvX3N0cmVhbXNfKDEpLAogICAgICAgbnVtX2F1ZGlvX3N0cmVhbXNfKDApLAog
ICAgICAgbnVtX2ZsZXhmZWNfc3RyZWFtc18oMCksCkBAIC03NSw3ICs3OCw3IEBAIHZvaWQgQ2Fs
bFRlc3Q6OlJ1bkJhc2VUZXN0KEJhc2VUZXN0KiB0ZXN0KSB7CiAgICAgbnVtX2ZsZXhmZWNfc3Ry
ZWFtc18gPSB0ZXN0LT5HZXROdW1GbGV4ZmVjU3RyZWFtcygpOwogICAgIFJUQ19EQ0hFQ0sobnVt
X3ZpZGVvX3N0cmVhbXNfID4gMCB8fCBudW1fYXVkaW9fc3RyZWFtc18gPiAwKTsKICAgICBDYWxs
OjpDb25maWcgc2VuZF9jb25maWcoc2VuZF9ldmVudF9sb2dfLmdldCgpKTsKLSAgICB0ZXN0LT5N
b2RpZnlTZW5kZXJDYWxsQ29uZmlnKCZzZW5kX2NvbmZpZyk7CisgICAgdGVzdC0+TW9kaWZ5U2Vu
ZGVyQml0cmF0ZUNvbmZpZygmc2VuZF9jb25maWcuYml0cmF0ZV9jb25maWcpOwogICAgIGlmIChu
dW1fYXVkaW9fc3RyZWFtc18gPiAwKSB7CiAgICAgICBDcmVhdGVGYWtlQXVkaW9EZXZpY2VzKHRl
c3QtPkNyZWF0ZUNhcHR1cmVyKCksIHRlc3QtPkNyZWF0ZVJlbmRlcmVyKCkpOwogICAgICAgdGVz
dC0+T25GYWtlQXVkaW9EZXZpY2VzQ3JlYXRlZChmYWtlX3NlbmRfYXVkaW9fZGV2aWNlXy5nZXQo
KSwKQEAgLTk5LDcgKzEwMiw3IEBAIHZvaWQgQ2FsbFRlc3Q6OlJ1bkJhc2VUZXN0KEJhc2VUZXN0
KiB0ZXN0KSB7CiAgICAgfQogICAgIGlmICh0ZXN0LT5TaG91bGRDcmVhdGVSZWNlaXZlcnMoKSkg
ewogICAgICAgQ2FsbDo6Q29uZmlnIHJlY3ZfY29uZmlnKHJlY3ZfZXZlbnRfbG9nXy5nZXQoKSk7
Ci0gICAgICB0ZXN0LT5Nb2RpZnlSZWNlaXZlckNhbGxDb25maWcoJnJlY3ZfY29uZmlnKTsKKyAg
ICAgIHRlc3QtPk1vZGlmeVJlY2VpdmVyQml0cmF0ZUNvbmZpZygmcmVjdl9jb25maWcuYml0cmF0
ZV9jb25maWcpOwogICAgICAgaWYgKG51bV9hdWRpb19zdHJlYW1zXyA+IDApIHsKICAgICAgICAg
QXVkaW9TdGF0ZTo6Q29uZmlnIGF1ZGlvX3N0YXRlX2NvbmZpZzsKICAgICAgICAgYXVkaW9fc3Rh
dGVfY29uZmlnLmF1ZGlvX21peGVyID0gQXVkaW9NaXhlckltcGw6OkNyZWF0ZSgpOwpAQCAtMTYz
LDYgKzE2Niw3IEBAIHZvaWQgQ2FsbFRlc3Q6OlJ1bkJhc2VUZXN0KEJhc2VUZXN0KiB0ZXN0KSB7
CiAgICAgICBpbnQgaGVpZ2h0ID0ga0RlZmF1bHRIZWlnaHQ7CiAgICAgICBpbnQgZnJhbWVfcmF0
ZSA9IGtEZWZhdWx0RnJhbWVyYXRlOwogICAgICAgdGVzdC0+TW9kaWZ5VmlkZW9DYXB0dXJlU3Rh
cnRSZXNvbHV0aW9uKCZ3aWR0aCwgJmhlaWdodCwgJmZyYW1lX3JhdGUpOworICAgICAgdGVzdC0+
TW9kaWZ5VmlkZW9EZWdyYWRhdGlvblByZWZlcmVuY2UoJmRlZ3JhZGF0aW9uX3ByZWZlcmVuY2Vf
KTsKICAgICAgIENyZWF0ZUZyYW1lR2VuZXJhdG9yQ2FwdHVyZXIoZnJhbWVfcmF0ZSwgd2lkdGgs
IGhlaWdodCk7CiAgICAgICB0ZXN0LT5PbkZyYW1lR2VuZXJhdG9yQ2FwdHVyZXJDcmVhdGVkKGZy
YW1lX2dlbmVyYXRvcl9jYXB0dXJlcl8pOwogICAgIH0KQEAgLTIzMiw2ICsyMzYsOCBAQCB2b2lk
IENhbGxUZXN0OjpDcmVhdGVWaWRlb1NlbmRDb25maWcoVmlkZW9TZW5kU3RyZWFtOjpDb25maWcq
IHZpZGVvX2NvbmZpZywKICAgUlRDX0RDSEVDS19MRShudW1fdmlkZW9fc3RyZWFtcyArIG51bV91
c2VkX3NzcmNzLCBrTnVtU3NyY3MpOwogICAqdmlkZW9fY29uZmlnID0gVmlkZW9TZW5kU3RyZWFt
OjpDb25maWcoc2VuZF90cmFuc3BvcnQpOwogICB2aWRlb19jb25maWctPmVuY29kZXJfc2V0dGlu
Z3MuZW5jb2Rlcl9mYWN0b3J5ID0gJmZha2VfZW5jb2Rlcl9mYWN0b3J5XzsKKyAgdmlkZW9fY29u
ZmlnLT5lbmNvZGVyX3NldHRpbmdzLmJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkgPQorICAgICAg
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8uZ2V0KCk7CiAgIHZpZGVvX2NvbmZpZy0+cnRwLnBh
eWxvYWRfbmFtZSA9ICJGQUtFIjsKICAgdmlkZW9fY29uZmlnLT5ydHAucGF5bG9hZF90eXBlID0g
a0Zha2VWaWRlb1NlbmRQYXlsb2FkVHlwZTsKICAgdmlkZW9fY29uZmlnLT5ydHAuZXh0ZW5zaW9u
cy5wdXNoX2JhY2soCkBAIC0yNTksNyArMjY1LDggQEAgdm9pZCBDYWxsVGVzdDo6Q3JlYXRlQXVk
aW9BbmRGZWNTZW5kQ29uZmlncyhzaXplX3QgbnVtX2F1ZGlvX3N0cmVhbXMsCiAgIFJUQ19EQ0hF
Q0tfTEUobnVtX2F1ZGlvX3N0cmVhbXMsIDEpOwogICBSVENfRENIRUNLX0xFKG51bV9mbGV4ZmVj
X3N0cmVhbXMsIDEpOwogICBpZiAobnVtX2F1ZGlvX3N0cmVhbXMgPiAwKSB7Ci0gICAgQXVkaW9T
ZW5kU3RyZWFtOjpDb25maWcgYXVkaW9fc2VuZF9jb25maWcoc2VuZF90cmFuc3BvcnQpOworICAg
IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGF1ZGlvX3NlbmRfY29uZmlnKHNlbmRfdHJhbnNwb3J0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFf
dHJhbnNwb3J0PSovbnVsbHB0cik7CiAgICAgYXVkaW9fc2VuZF9jb25maWcucnRwLnNzcmMgPSBr
QXVkaW9TZW5kU3NyYzsKICAgICBhdWRpb19zZW5kX2NvbmZpZy5zZW5kX2NvZGVjX3NwZWMgPSBB
dWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6U2VuZENvZGVjU3BlYygKICAgICAgICAga0F1ZGlvU2Vu
ZFBheWxvYWRUeXBlLCB7Im9wdXMiLCA0ODAwMCwgMiwge3sic3RlcmVvIiwgIjEifX19KTsKQEAg
LTcyNiw5ICs3MzMsMTAgQEAgdm9pZCBCYXNlVGVzdDo6T25GYWtlQXVkaW9EZXZpY2VzQ3JlYXRl
ZCgKICAgICBUZXN0QXVkaW9EZXZpY2VNb2R1bGUqIHNlbmRfYXVkaW9fZGV2aWNlLAogICAgIFRl
c3RBdWRpb0RldmljZU1vZHVsZSogcmVjdl9hdWRpb19kZXZpY2UpIHt9CiAKLXZvaWQgQmFzZVRl
c3Q6Ok1vZGlmeVNlbmRlckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpIHt9Cit2b2lk
IEJhc2VUZXN0OjpNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVDb25zdHJhaW50cyog
Yml0cmF0ZV9jb25maWcpIHt9CiAKLXZvaWQgQmFzZVRlc3Q6Ok1vZGlmeVJlY2VpdmVyQ2FsbENv
bmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZykge30KK3ZvaWQgQmFzZVRlc3Q6Ok1vZGlmeVJlY2Vp
dmVyQml0cmF0ZUNvbmZpZyhCaXRyYXRlQ29uc3RyYWludHMqIGJpdHJhdGVfY29uZmlnKSB7Cit9
CiAKIHZvaWQgQmFzZVRlc3Q6Ok9uUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRDcmVhdGVkKAog
ICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kKiBjb250cm9sbGVyKSB7fQpAQCAtNzQyLDgg
Kzc1MCw4IEBAIHRlc3Q6OlBhY2tldFRyYW5zcG9ydCogQmFzZVRlc3Q6OkNyZWF0ZVNlbmRUcmFu
c3BvcnQoCiAgICAgICB0YXNrX3F1ZXVlLCBzZW5kZXJfY2FsbCwgdGhpcywgdGVzdDo6UGFja2V0
VHJhbnNwb3J0OjprU2VuZGVyLAogICAgICAgQ2FsbFRlc3Q6OnBheWxvYWRfdHlwZV9tYXBfLAog
ICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICBDbG9j
azo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3Jr
PigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdv
cmtTaW11bGF0aW9uQ29uZmlnKCkpKSk7CisgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xv
Y2soKSwKKyAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPihCdWls
dEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSk7CiB9CiAKIHRlc3Q6OlBhY2tldFRyYW5zcG9y
dCogQmFzZVRlc3Q6OkNyZWF0ZVJlY2VpdmVUcmFuc3BvcnQoCkBAIC03NTIsOCArNzYwLDggQEAg
dGVzdDo6UGFja2V0VHJhbnNwb3J0KiBCYXNlVGVzdDo6Q3JlYXRlUmVjZWl2ZVRyYW5zcG9ydCgK
ICAgICAgIHRhc2tfcXVldWUsIG51bGxwdHIsIHRoaXMsIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6
a1JlY2VpdmVyLAogICAgICAgQ2FsbFRlc3Q6OnBheWxvYWRfdHlwZV9tYXBfLAogICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICBDbG9jazo6R2V0UmVh
bFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0
aW9uQ29uZmlnKCkpKSk7CisgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKKyAg
ICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPihCdWlsdEluTmV0d29y
a0JlaGF2aW9yQ29uZmlnKCkpKSk7CiB9CiAKIHNpemVfdCBCYXNlVGVzdDo6R2V0TnVtVmlkZW9T
dHJlYW1zKCkgY29uc3QgewpAQCAtNzc3LDYgKzc4NSw5IEBAIHZvaWQgQmFzZVRlc3Q6Ok1vZGlm
eVZpZGVvQ2FwdHVyZVN0YXJ0UmVzb2x1dGlvbihpbnQqIHdpZHRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogaGVpZ3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBmcmFtZV9yYXRlKSB7
fQogCit2b2lkIEJhc2VUZXN0OjpNb2RpZnlWaWRlb0RlZ3JhZGF0aW9uUHJlZmVyZW5jZSgKKyAg
ICBEZWdyYWRhdGlvblByZWZlcmVuY2UqIGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UpIHt9CisKIHZv
aWQgQmFzZVRlc3Q6Ok9uVmlkZW9TdHJlYW1zQ3JlYXRlZCgKICAgICBWaWRlb1NlbmRTdHJlYW0q
IHNlbmRfc3RyZWFtLAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvUmVjZWl2ZVN0cmVhbSo+
JiByZWNlaXZlX3N0cmVhbXMpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2NhbGxfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jYWxsX3Rlc3QuaAppbmRleCA3YTVjM2U5Yjhj
MWEwMGVkNzA2ZjgwNDJkMTkyMjEwNjc3MzcxNjYzLi44OTYxYjdmY2NiM2Y5MzkwZTEyNjkxMjc5
OTE0ZWJjNjQyNTM4OWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L2NhbGxfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY2FsbF90ZXN0LmgKQEAgLTEzLDYgKzEzLDkgQEAK
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL3Rl
c3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBp
L3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAi
YXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJj
YWxsL2NhbGwuaCIKICNpbmNsdWRlICJjYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5k
LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKQEAg
LTIyLDggKzI1LDYgQEAKICNpbmNsdWRlICJ0ZXN0L2Zha2VfdmlkZW9yZW5kZXJlci5oIgogI2lu
Y2x1ZGUgInRlc3QvZmFrZV92cDhfZW5jb2Rlci5oIgogI2luY2x1ZGUgInRlc3QvZnJhbWVfZ2Vu
ZXJhdG9yX2NhcHR1cmVyLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19kZWNvZGVy
X2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9y
eS5oIgogI2luY2x1ZGUgInRlc3QvcnRwX3J0Y3Bfb2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJ0ZXN0
L3NpbmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlLmgiCiAKQEAgLTIwNSw2ICsyMDYsNyBAQCBjbGFz
cyBDYWxsVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICB0ZXN0OjpGdW5jdGlvblZp
ZGVvRW5jb2RlckZhY3RvcnkgZmFrZV9lbmNvZGVyX2ZhY3RvcnlfOwogICBpbnQgZmFrZV9lbmNv
ZGVyX21heF9iaXRyYXRlXyA9IC0xOwogICB0ZXN0OjpGdW5jdGlvblZpZGVvRGVjb2RlckZhY3Rv
cnkgZmFrZV9kZWNvZGVyX2ZhY3RvcnlfOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRl
QWxsb2NhdG9yRmFjdG9yeT4gYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV87CiAgIC8vIE51bWJl
ciBvZiBzaW11bGNhc3Qgc3Vic3RyZWFtcy4KICAgc2l6ZV90IG51bV92aWRlb19zdHJlYW1zXzsK
ICAgc2l6ZV90IG51bV9hdWRpb19zdHJlYW1zXzsKQEAgLTI0MSw4ICsyNDMsOCBAQCBjbGFzcyBC
YXNlVGVzdCA6IHB1YmxpYyBSdHBSdGNwT2JzZXJ2ZXIgewogICAgICAgVGVzdEF1ZGlvRGV2aWNl
TW9kdWxlKiBzZW5kX2F1ZGlvX2RldmljZSwKICAgICAgIFRlc3RBdWRpb0RldmljZU1vZHVsZSog
cmVjdl9hdWRpb19kZXZpY2UpOwogCi0gIHZpcnR1YWwgdm9pZCBNb2RpZnlTZW5kZXJDYWxsQ29u
ZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKTsKLSAgdmlydHVhbCB2b2lkIE1vZGlmeVJlY2VpdmVy
Q2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZyk7CisgIHZpcnR1YWwgdm9pZCBNb2RpZnlT
ZW5kZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpOwor
ICB2aXJ0dWFsIHZvaWQgTW9kaWZ5UmVjZWl2ZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVDb25zdHJh
aW50cyogYml0cmF0ZV9jb25maWcpOwogCiAgIHZpcnR1YWwgdm9pZCBPblJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJTZW5kQ3JlYXRlZCgKICAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kKiBj
b250cm9sbGVyKTsKQEAgLTI2MSw2ICsyNjMsOSBAQCBjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyBS
dHBSdGNwT2JzZXJ2ZXIgewogICB2aXJ0dWFsIHZvaWQgTW9kaWZ5VmlkZW9DYXB0dXJlU3RhcnRS
ZXNvbHV0aW9uKGludCogd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50KiBoZWlndCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQqIGZyYW1lX3JhdGUpOworICB2aXJ0dWFsIHZvaWQgTW9k
aWZ5VmlkZW9EZWdyYWRhdGlvblByZWZlcmVuY2UoCisgICAgICBEZWdyYWRhdGlvblByZWZlcmVu
Y2UqIGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UpOworCiAgIHZpcnR1YWwgdm9pZCBPblZpZGVvU3Ry
ZWFtc0NyZWF0ZWQoCiAgICAgICBWaWRlb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtLAogICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9SZWNlaXZlU3RyZWFtKj4mIHJlY2VpdmVfc3RyZWFtcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2NvbmZpZ3VyYWJsZV9mcmFtZV9zaXplX2VuY29kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2NvbmZpZ3VyYWJsZV9mcmFtZV9zaXplX2Vu
Y29kZXIuY2MKaW5kZXggYzBmZTI5NjZlODVmZjIxYjcxMmFkNDgyODJhOTRhZWE5NTg4NTgzNS4u
YmRkNjFkMDMyZmM4MzRhMWQ4ZDk5ZTZjMjQxNmJmYzQzOGJkNjVmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jb25maWd1cmFibGVf
ZnJhbWVfc2l6ZV9lbmNvZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvY29uZmlndXJhYmxlX2ZyYW1lX3NpemVfZW5jb2Rlci5jYwpAQCAt
MTIsNyArMTIsNyBAQAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNsdWRlICJjb21tb25f
dmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVk
X2ltYWdlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19j
b2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApAQCAtNTQs
NyArNTQsOSBAQCBpbnQzMl90IENvbmZpZ3VyYWJsZUZyYW1lU2l6ZUVuY29kZXI6OkVuY29kZSgK
ICAgQ29kZWNTcGVjaWZpY0luZm8gc3BlY2lmaWN7fTsKICAgc3BlY2lmaWMuY29kZWNUeXBlID0g
Y29kZWNfdHlwZV87CiAgIGNhbGxiYWNrXy0+T25FbmNvZGVkSW1hZ2UoZW5jb2RlZEltYWdlLCAm
c3BlY2lmaWMsIGZyYWdtZW50YXRpb24pOwotCisgIGlmIChwb3N0X2VuY29kZV9jYWxsYmFja18p
IHsKKyAgICAoKnBvc3RfZW5jb2RlX2NhbGxiYWNrXykoKTsKKyAgfQogICByZXR1cm4gV0VCUlRD
X1ZJREVPX0NPREVDX09LOwogfQogCkBAIC02OCwxMSArNzAsNiBAQCBpbnQzMl90IENvbmZpZ3Vy
YWJsZUZyYW1lU2l6ZUVuY29kZXI6OlJlbGVhc2UoKSB7CiAgIHJldHVybiBXRUJSVENfVklERU9f
Q09ERUNfT0s7CiB9CiAKLWludDMyX3QgQ29uZmlndXJhYmxlRnJhbWVTaXplRW5jb2Rlcjo6U2V0
Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0KSB7
Ci0gIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Ci19Ci0KIGludDMyX3QgQ29uZmlndXJh
YmxlRnJhbWVTaXplRW5jb2Rlcjo6U2V0UmF0ZUFsbG9jYXRpb24oCiAgICAgY29uc3QgVmlkZW9C
aXRyYXRlQWxsb2NhdGlvbiYgYWxsb2NhdGlvbiwKICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIHsK
QEAgLTg5LDUgKzg2LDEwIEBAIHZvaWQgQ29uZmlndXJhYmxlRnJhbWVTaXplRW5jb2Rlcjo6U2V0
Q29kZWNUeXBlKFZpZGVvQ29kZWNUeXBlIGNvZGVjX3R5cGUpIHsKICAgY29kZWNfdHlwZV8gPSBj
b2RlY190eXBlOwogfQogCit2b2lkIENvbmZpZ3VyYWJsZUZyYW1lU2l6ZUVuY29kZXI6OlJlZ2lz
dGVyUG9zdEVuY29kZUNhbGxiYWNrKAorICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCh2b2lkKT4gcG9z
dF9lbmNvZGVfY2FsbGJhY2spIHsKKyAgcG9zdF9lbmNvZGVfY2FsbGJhY2tfID0gc3RkOjptb3Zl
KHBvc3RfZW5jb2RlX2NhbGxiYWNrKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY29uZmlndXJhYmxlX2ZyYW1lX3NpemVfZW5jb2Rlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jb25maWd1cmFi
bGVfZnJhbWVfc2l6ZV9lbmNvZGVyLmgKaW5kZXggMWRjOWU0OGY0N2Y1YWI3YmYwYzQ3ODAzOGU4
YmRmNTgzMWJjNTlkZC4uZjg4MTUxM2ZjYzI3MzYxZjdhMDRiNGJmNjhhZTU1NzBkM2VhODcwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9jb25maWd1cmFibGVfZnJhbWVfc2l6ZV9lbmNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jb25maWd1cmFibGVfZnJhbWVfc2l6ZV9l
bmNvZGVyLmgKQEAgLTM3LDggKzM3LDYgQEAgY2xhc3MgQ29uZmlndXJhYmxlRnJhbWVTaXplRW5j
b2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogCiAgIGludDMyX3QgUmVsZWFzZSgpIG92ZXJy
aWRlOwogCi0gIGludDMyX3QgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xv
c3MsIGludDY0X3QgcnR0KSBvdmVycmlkZTsKLQogICBpbnQzMl90IFNldFJhdGVBbGxvY2F0aW9u
KGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGFsbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVyYXRlKSBvdmVycmlkZTsKIApAQCAtNDYsOCAr
NDQsMTMgQEAgY2xhc3MgQ29uZmlndXJhYmxlRnJhbWVTaXplRW5jb2RlciA6IHB1YmxpYyBWaWRl
b0VuY29kZXIgewogCiAgIHZvaWQgU2V0Q29kZWNUeXBlKFZpZGVvQ29kZWNUeXBlIGNvZGVjX3R5
cGVfKTsKIAorICB2b2lkIFJlZ2lzdGVyUG9zdEVuY29kZUNhbGxiYWNrKAorICAgICAgc3RkOjpm
dW5jdGlvbjx2b2lkKHZvaWQpPiBwb3N0X2VuY29kZV9jYWxsYmFjayk7CisKICBwcml2YXRlOgog
ICBFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2tfOworICBhYnNsOjpvcHRpb25hbDxzdGQ6
OmZ1bmN0aW9uPHZvaWQodm9pZCk+PiBwb3N0X2VuY29kZV9jYWxsYmFja187CisKICAgY29uc3Qg
c2l6ZV90IG1heF9mcmFtZV9zaXplXzsKICAgc2l6ZV90IGN1cnJlbnRfZnJhbWVfc2l6ZV87CiAg
IHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IGJ1ZmZlcl87CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2RpcmVjdF90cmFuc3BvcnQu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2RpcmVj
dF90cmFuc3BvcnQuY2MKaW5kZXggNmFhOGM5MTU4ZjBkZTY3MjBlMjI1YmI0OGVhZTQ2M2E3OWE1
MzMxMy4uZmQ3MzY5MTcxYTIyMDBjNzE0ZDQ5NzI3ZGExZjYwZjU3Mzg1Y2I5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9kaXJlY3Rf
dHJhbnNwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3QvZGlyZWN0X3RyYW5zcG9ydC5jYwpAQCAtNzIsNiArNzIsOCBAQCBib29sIERpcmVj
dFRyYW5zcG9ydDo6U2VuZFJ0cChjb25zdCB1aW50OF90KiBkYXRhLAogICBpZiAoc2VuZF9jYWxs
XykgewogICAgIHJ0Yzo6U2VudFBhY2tldCBzZW50X3BhY2tldChvcHRpb25zLnBhY2tldF9pZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29u
ZHMoKSk7CisgICAgc2VudF9wYWNrZXQuaW5mby5pbmNsdWRlZF9pbl9mZWVkYmFjayA9IG9wdGlv
bnMuaW5jbHVkZWRfaW5fZmVlZGJhY2s7CisgICAgc2VudF9wYWNrZXQuaW5mby5pbmNsdWRlZF9p
bl9hbGxvY2F0aW9uID0gb3B0aW9ucy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uOwogICAgIHNlbnRf
cGFja2V0LmluZm8ucGFja2V0X3NpemVfYnl0ZXMgPSBsZW5ndGg7CiAgICAgc2VudF9wYWNrZXQu
aW5mby5wYWNrZXRfdHlwZSA9IHJ0Yzo6UGFja2V0VHlwZTo6a0RhdGE7CiAgICAgc2VuZF9jYWxs
Xy0+T25TZW50UGFja2V0KHNlbnRfcGFja2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZW5jb2Rlcl9zZXR0aW5ncy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZW5jb2Rlcl9zZXR0
aW5ncy5jYwppbmRleCA5NDU1NTliNGVlMDJlZTg1NTE5ZjczM2JhODVkNjg5YzcxMjk5NzBlLi5i
ZmJkMmJkZWM0N2E5ODM0OTkxYTEzN2MzZTk1MjFmZjc1OTBhZGE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2VuY29kZXJfc2V0dGlu
Z3MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9lbmNvZGVyX3NldHRpbmdzLmNjCkBAIC02MSw2ICs2MSwxNCBAQCBzdGQ6OnZlY3RvcjxWaWRl
b1N0cmVhbT4gQ3JlYXRlVmlkZW9TdHJlYW1zKAogICAgICAgICAgICAgICA/IHN0cmVhbS50YXJn
ZXRfYml0cmF0ZV9icHMKICAgICAgICAgICAgICAgOiBEZWZhdWx0VmlkZW9TdHJlYW1GYWN0b3J5
OjprTWF4Qml0cmF0ZVBlclN0cmVhbVtpXTsKICAgICAgIHRhcmdldF9iaXRyYXRlX2JwcyA9IHN0
ZDo6bWluKG1heF9iaXRyYXRlX2JwcywgdGFyZ2V0X2JpdHJhdGVfYnBzKTsKKworICAgICAgaWYg
KHN0cmVhbS5tYXhfZnJhbWVyYXRlID4gMCkgeworICAgICAgICBzdHJlYW1fc2V0dGluZ3NbaV0u
bWF4X2ZyYW1lcmF0ZSA9IHN0cmVhbS5tYXhfZnJhbWVyYXRlOworICAgICAgfQorICAgICAgaWYg
KHN0cmVhbS5udW1fdGVtcG9yYWxfbGF5ZXJzKSB7CisgICAgICAgIFJUQ19EQ0hFQ0tfR0UoKnN0
cmVhbS5udW1fdGVtcG9yYWxfbGF5ZXJzLCAxKTsKKyAgICAgICAgc3RyZWFtX3NldHRpbmdzW2ld
Lm51bV90ZW1wb3JhbF9sYXllcnMgPSBzdHJlYW0ubnVtX3RlbXBvcmFsX2xheWVyczsKKyAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgbWF4X2JpdHJhdGVfYnBzID0gc3RkOjptaW4oCiAgICAg
ICAgICAgYml0cmF0ZV9sZWZ0X2JwcywgRGVmYXVsdFZpZGVvU3RyZWFtRmFjdG9yeTo6a01heEJp
dHJhdGVQZXJTdHJlYW1baV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX2VuY29kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfZW5jb2Rlci5jYwppbmRleCBiYzNj
N2IxMDg3YjRlYTBmNmE5NTg3OWM3YWU0NzI2YTMxMTkxNzljLi5kZGFiYTc3YTRmNDVlYmExMzcw
OGRiOGFiNmU5YjlhNDQzZWVlMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfZW5jb2Rlci5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfZW5jb2Rlci5jYwpAQCAt
MTUsMTYgKzE1LDMzIEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPG1lbW9yeT4K
IAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0j
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1w
b3JhbF9sYXllcnMuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9s
YXllcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Nv
ZGVjX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL3NsZWVwLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
bmFtZXNwYWNlIHRlc3QgeworbmFtZXNwYWNlIHsKK2NvbnN0IGludCBrS2V5ZnJhbWVTaXplRmFj
dG9yID0gNTsKKworLy8gSW52ZXJzZSBvZiBwcm9wb3J0aW9uIG9mIGZyYW1lcyBhc3NpZ25lZCB0
byBlYWNoIHRlbXBvcmFsIGxheWVyIGZvciBhbGwKKy8vIHBvc3NpYmxlIHRlbXBvcmFsIGxheWVy
cyBudW1iZXJzLgorY29uc3QgaW50IGtUZW1wb3JhbExheWVyUmF0ZUZhY3Rvcls0XVs0XSA9IHsK
KyAgICB7MSwgMCwgMCwgMH0sICAvLyAxLzEKKyAgICB7MiwgMiwgMCwgMH0sICAvLyAxLzIgKyAx
LzIKKyAgICB7NCwgNCwgMiwgMH0sICAvLyAxLzQgKyAxLzQgKyAxLzIKKyAgICB7OCwgOCwgNCwg
Mn0sICAvLyAxLzggKyAxLzggKyAxLzQgKyAxLzIKK307CisKK3ZvaWQgV3JpdGVDb3VudGVyKHVu
c2lnbmVkIGNoYXIqIHBheWxvYWQsIHVpbnQzMl90IGNvdW50ZXIpIHsKKyAgcGF5bG9hZFswXSA9
IChjb3VudGVyICYgMHgwMEZGKTsKKyAgcGF5bG9hZFsxXSA9IChjb3VudGVyICYgMHhGRjAwKSA+
PiA4OworICBwYXlsb2FkWzJdID0gKGNvdW50ZXIgJiAweEZGMDAwMCkgPj4gMTY7CisgIHBheWxv
YWRbM10gPSAoY291bnRlciAmIDB4RkYwMDAwMDApID4+IDI0OworfQogCi1jb25zdCBpbnQga0tl
eWZyYW1lU2l6ZUZhY3RvciA9IDEwOworfTsgIC8vIG5hbWVzcGFjZQogCiBGYWtlRW5jb2Rlcjo6
RmFrZUVuY29kZXIoQ2xvY2sqIGNsb2NrKQogICAgIDogY2xvY2tfKGNsb2NrKSwKQEAgLTMyLDYg
KzQ5LDcgQEAgRmFrZUVuY29kZXI6OkZha2VFbmNvZGVyKENsb2NrKiBjbG9jaykKICAgICAgIGNv
bmZpZ3VyZWRfaW5wdXRfZnJhbWVyYXRlXygtMSksCiAgICAgICBtYXhfdGFyZ2V0X2JpdHJhdGVf
a2Jwc18oLTEpLAogICAgICAgcGVuZGluZ19rZXlmcmFtZV8odHJ1ZSksCisgICAgICBjb3VudGVy
XygwKSwKICAgICAgIGRlYnRfYnl0ZXNfKDApIHsKICAgLy8gR2VuZXJhdGUgc29tZSBhcmJpdHJh
cnkgbm90LWFsbC16ZXJvIGRhdGEKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YoZW5j
b2RlZF9idWZmZXJfKTsgKytpKSB7CkBAIC00Niw2ICs2NCw3IEBAIHZvaWQgRmFrZUVuY29kZXI6
OlNldE1heEJpdHJhdGUoaW50IG1heF9rYnBzKSB7CiAgIFJUQ19EQ0hFQ0tfR0UobWF4X2ticHMs
IC0xKTsgIC8vIG1heF9rYnBzID09IC0xIGRpc2FibGVzIGl0LgogICBydGM6OkNyaXRTY29wZSBj
cygmY3JpdF9zZWN0Xyk7CiAgIG1heF90YXJnZXRfYml0cmF0ZV9rYnBzXyA9IG1heF9rYnBzOwor
ICBTZXRSYXRlQWxsb2NhdGlvbih0YXJnZXRfYml0cmF0ZV8sIGNvbmZpZ3VyZWRfaW5wdXRfZnJh
bWVyYXRlXyk7CiB9CiAKIGludDMyX3QgRmFrZUVuY29kZXI6OkluaXRFbmNvZGUoY29uc3QgVmlk
ZW9Db2RlYyogY29uZmlnLApAQCAtNzEsNiArOTAsNyBAQCBpbnQzMl90IEZha2VFbmNvZGVyOjpF
bmNvZGUoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRfaW1hZ2UsCiAgIGludCBmcmFtZXJhdGU7CiAg
IFZpZGVvQ29kZWNNb2RlIG1vZGU7CiAgIGJvb2wga2V5ZnJhbWU7CisgIHVpbnQzMl90IGNvdW50
ZXI7CiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBjcygmY3JpdF9zZWN0Xyk7CiAgICAgbWF4X2Zy
YW1lcmF0ZSA9IGNvbmZpZ18ubWF4RnJhbWVyYXRlOwpAQCAtODgsMTMgKzEwOCwxNSBAQCBpbnQz
Ml90IEZha2VFbmNvZGVyOjpFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRfaW1hZ2UsCiAg
ICAgfQogICAgIGtleWZyYW1lID0gcGVuZGluZ19rZXlmcmFtZV87CiAgICAgcGVuZGluZ19rZXlm
cmFtZV8gPSBmYWxzZTsKKyAgICBjb3VudGVyID0gY291bnRlcl8rKzsKICAgfQogCiAgIEZyYW1l
SW5mbyBmcmFtZV9pbmZvID0KICAgICAgIE5leHRGcmFtZShmcmFtZV90eXBlcywga2V5ZnJhbWUs
IG51bV9zaW11bGNhc3Rfc3RyZWFtcywgdGFyZ2V0X2JpdHJhdGUsCiAgICAgICAgICAgICAgICAg
c2ltdWxjYXN0X3N0cmVhbXMsIGZyYW1lcmF0ZSk7CiAgIGZvciAodWludDhfdCBpID0gMDsgaSA8
IGZyYW1lX2luZm8ubGF5ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgaWYgKGZyYW1lX2luZm8ubGF5
ZXJzW2ldLnNpemUgPT0gMCkgeworICAgIGNvbnN0ZXhwciBpbnQga01pblBheUxvYWRMZW5ndGgg
PSAxNDsKKyAgICBpZiAoZnJhbWVfaW5mby5sYXllcnNbaV0uc2l6ZSA8IGtNaW5QYXlMb2FkTGVu
Z3RoKSB7CiAgICAgICAvLyBEcm9wIHRoaXMgdGVtcG9yYWwgbGF5ZXIuCiAgICAgICBjb250aW51
ZTsKICAgICB9CkBAIC0xMDQsNyArMTI2LDEwIEBAIGludDMyX3QgRmFrZUVuY29kZXI6OkVuY29k
ZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9pbWFnZSwKICAgICBzcGVjaWZpY3MuY29kZWNUeXBl
ID0ga1ZpZGVvQ29kZWNHZW5lcmljOwogICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IGVu
Y29kZWRfYnVmZmVyKAogICAgICAgICBuZXcgdWludDhfdFtmcmFtZV9pbmZvLmxheWVyc1tpXS5z
aXplXSk7Ci0gICAgbWVtY3B5KGVuY29kZWRfYnVmZmVyLmdldCgpLCBlbmNvZGVkX2J1ZmZlcl8s
IGZyYW1lX2luZm8ubGF5ZXJzW2ldLnNpemUpOworICAgIG1lbWNweShlbmNvZGVkX2J1ZmZlci5n
ZXQoKSwgZW5jb2RlZF9idWZmZXJfLAorICAgICAgICAgICBmcmFtZV9pbmZvLmxheWVyc1tpXS5z
aXplIC0gNCk7CisgICAgLy8gV3JpdGUgYSBjb3VudGVyIHRvIHRoZSBpbWFnZSB0byBtYWtlIGVh
Y2ggZnJhbWUgdW5pcXVlLgorICAgIFdyaXRlQ291bnRlcihlbmNvZGVkX2J1ZmZlci5nZXQoKSAr
IGZyYW1lX2luZm8ubGF5ZXJzW2ldLnNpemUgLSA0LCBjb3VudGVyKTsKICAgICBFbmNvZGVkSW1h
Z2UgZW5jb2RlZChlbmNvZGVkX2J1ZmZlci5nZXQoKSwgZnJhbWVfaW5mby5sYXllcnNbaV0uc2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZW5jb2RlZF9idWZmZXJfKSk7CiAg
ICAgZW5jb2RlZC5TZXRUaW1lc3RhbXAoaW5wdXRfaW1hZ2UudGltZXN0YW1wKCkpOwpAQCAtMTE4
LDcgKzE0Myw2IEBAIGludDMyX3QgRmFrZUVuY29kZXI6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1l
JiBpbnB1dF9pbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBWaWRlb0Nv
bnRlbnRUeXBlOjpTQ1JFRU5TSEFSRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IFZpZGVvQ29udGVudFR5cGU6OlVOU1BFQ0lGSUVEOwogICAgIGVuY29kZWQuU2V0U3BhdGlhbElu
ZGV4KGkpOwotICAgIHNwZWNpZmljcy5jb2RlY19uYW1lID0gSW1wbGVtZW50YXRpb25OYW1lKCk7
CiAgICAgaWYgKGNhbGxiYWNrLT5PbkVuY29kZWRJbWFnZShlbmNvZGVkLCAmc3BlY2lmaWNzLCBu
dWxscHRyKS5lcnJvciAhPQogICAgICAgICBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6UmVzdWx0OjpP
SykgewogICAgICAgcmV0dXJuIC0xOwpAQCAtMTQ2LDYgKzE3MCw3IEBAIEZha2VFbmNvZGVyOjpG
cmFtZUluZm8gRmFrZUVuY29kZXI6Ok5leHRGcmFtZSgKICAgICB9CiAgIH0KIAorICBydGM6OkNy
aXRTY29wZSBjcygmY3JpdF9zZWN0Xyk7CiAgIGZvciAodWludDhfdCBpID0gMDsgaSA8IG51bV9z
aW11bGNhc3Rfc3RyZWFtczsgKytpKSB7CiAgICAgaWYgKHRhcmdldF9iaXRyYXRlLkdldEJpdHJh
dGUoaSwgMCkgPiAwKSB7CiAgICAgICBpbnQgdGVtcG9yYWxfaWQgPSBsYXN0X2ZyYW1lX2luZm9f
LmxheWVycy5zaXplKCkgPiBpCkBAIC0xNjYsNyArMTkxLDkgQEAgRmFrZUVuY29kZXI6OkZyYW1l
SW5mbyBGYWtlRW5jb2Rlcjo6TmV4dEZyYW1lKAogICAgIGlmIChmcmFtZV9pbmZvLmtleWZyYW1l
KSB7CiAgICAgICBsYXllcl9pbmZvLnRlbXBvcmFsX2lkID0gMDsKICAgICAgIHNpemVfdCBhdmdf
ZnJhbWVfc2l6ZSA9Ci0gICAgICAgICAgKHRhcmdldF9iaXRyYXRlLkdldEJpdHJhdGUoaSwgMCkg
KyA3KSAvICg4ICogZnJhbWVyYXRlKTsKKyAgICAgICAgICAodGFyZ2V0X2JpdHJhdGUuR2V0Qml0
cmF0ZShpLCAwKSArIDcpICoKKyAgICAgICAgICBrVGVtcG9yYWxMYXllclJhdGVGYWN0b3JbZnJh
bWVfaW5mby5sYXllcnMuc2l6ZSgpIC0gMV1baV0gLworICAgICAgICAgICg4ICogZnJhbWVyYXRl
KTsKIAogICAgICAgLy8gVGhlIGZpcnN0IGZyYW1lIGlzIGEga2V5IGZyYW1lIGFuZCBzaG91bGQg
YmUgbGFyZ2VyLgogICAgICAgLy8gU3RvcmUgdGhlIG92ZXJzaG9vdCBieXRlcyBhbmQgZGlzdHJp
YnV0ZSB0aGVtIG92ZXIgdGhlIGNvbWluZyBmcmFtZXMsCkBAIC0xNzUsNyArMjAyLDggQEAgRmFr
ZUVuY29kZXI6OkZyYW1lSW5mbyBGYWtlRW5jb2Rlcjo6TmV4dEZyYW1lKAogICAgICAgbGF5ZXJf
aW5mby5zaXplID0ga0tleWZyYW1lU2l6ZUZhY3RvciAqIGF2Z19mcmFtZV9zaXplOwogICAgIH0g
ZWxzZSB7CiAgICAgICBzaXplX3QgYXZnX2ZyYW1lX3NpemUgPQotICAgICAgICAgICh0YXJnZXRf
Yml0cmF0ZS5HZXRCaXRyYXRlKGksIGxheWVyX2luZm8udGVtcG9yYWxfaWQpICsgNykgLworICAg
ICAgICAgICh0YXJnZXRfYml0cmF0ZS5HZXRCaXRyYXRlKGksIGxheWVyX2luZm8udGVtcG9yYWxf
aWQpICsgNykgKgorICAgICAgICAgIGtUZW1wb3JhbExheWVyUmF0ZUZhY3RvcltmcmFtZV9pbmZv
LmxheWVycy5zaXplKCkgLSAxXVtpXSAvCiAgICAgICAgICAgKDggKiBmcmFtZXJhdGUpOwogICAg
ICAgbGF5ZXJfaW5mby5zaXplID0gYXZnX2ZyYW1lX3NpemU7CiAgICAgICBpZiAoZGVidF9ieXRl
c18gPiAwKSB7CkBAIC0yMDEsMTAgKzIyOSw2IEBAIGludDMyX3QgRmFrZUVuY29kZXI6OlJlbGVh
c2UoKSB7CiAgIHJldHVybiAwOwogfQogCi1pbnQzMl90IEZha2VFbmNvZGVyOjpTZXRDaGFubmVs
UGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpIHsKLSAgcmV0dXJu
IDA7Ci19Ci0KIGludDMyX3QgRmFrZUVuY29kZXI6OlNldFJhdGVBbGxvY2F0aW9uKAogICAgIGNv
bnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIHJhdGVfYWxsb2NhdGlvbiwKICAgICB1aW50MzJf
dCBmcmFtZXJhdGUpIHsKQEAgLTIzNiw4ICsyNjAsMTAgQEAgaW50MzJfdCBGYWtlRW5jb2Rlcjo6
U2V0UmF0ZUFsbG9jYXRpb24oCiB9CiAKIGNvbnN0IGNoYXIqIEZha2VFbmNvZGVyOjprSW1wbGVt
ZW50YXRpb25OYW1lID0gImZha2VfZW5jb2RlciI7Ci1jb25zdCBjaGFyKiBGYWtlRW5jb2Rlcjo6
SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3QgewotICByZXR1cm4ga0ltcGxlbWVudGF0aW9uTmFt
ZTsKK1ZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gRmFrZUVuY29kZXI6OkdldEVuY29kZXJJbmZv
KCkgY29uc3QgeworICBFbmNvZGVySW5mbyBpbmZvOworICBpbmZvLmltcGxlbWVudGF0aW9uX25h
bWUgPSBrSW1wbGVtZW50YXRpb25OYW1lOworICByZXR1cm4gaW5mbzsKIH0KIAogaW50IEZha2VF
bmNvZGVyOjpHZXRDb25maWd1cmVkSW5wdXRGcmFtZXJhdGUoKSBjb25zdCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfZW5j
b2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9m
YWtlX2VuY29kZXIuaAppbmRleCA2N2FjZWJlYzY5Yzk0YjcyNzBmNmZkMjg3MTNmZmVmNzhkZjM4
OTVmLi5kYTM4ZjExYjQ1NmNmYWJhYTQ3ZTQ2NDZkNTBmZmNiMzZhYmViMzljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfZW5j
b2Rlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZmFrZV9lbmNvZGVyLmgKQEAgLTE1LDcgKzE1LDYgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAK
ICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXIuaCIKLSNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgInJ0Y19i
YXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NlcXVlbmNlZF90YXNr
X2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVlLmgiCkBAIC00MSwxMSAr
NDAsMTAgQEAgY2xhc3MgRmFrZUVuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgaW50
MzJfdCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgICAgICBFbmNvZGVkSW1hZ2VD
YWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwogICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlk
ZTsKLSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywg
aW50NjRfdCBydHQpIG92ZXJyaWRlOwogICBpbnQzMl90IFNldFJhdGVBbGxvY2F0aW9uKGNvbnN0
IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIHJhdGVfYWxsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIG92ZXJyaWRlOwotICBjb25zdCBjaGFy
KiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgaW50IEdldENvbmZpZ3Vy
ZWRJbnB1dEZyYW1lcmF0ZSgpIGNvbnN0OworICBFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbygp
IGNvbnN0IG92ZXJyaWRlOwogCiAgIHN0YXRpYyBjb25zdCBjaGFyKiBrSW1wbGVtZW50YXRpb25O
YW1lOwogCkBAIC03MSw3ICs2OSw3IEBAIGNsYXNzIEZha2VFbmNvZGVyIDogcHVibGljIFZpZGVv
RW5jb2RlciB7CiAgICAgICAgICAgICAgICAgICAgICAgU2ltdWxjYXN0U3RyZWFtIHNpbXVsY2Fz
dF9zdHJlYW1zW2tNYXhTaW11bGNhc3RTdHJlYW1zXSwKICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZnJhbWVyYXRlKTsKIAotICBGcmFtZUluZm8gbGFzdF9mcmFtZV9pbmZvXzsKKyAgRnJhbWVJ
bmZvIGxhc3RfZnJhbWVfaW5mb18gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CiAgIENsb2Nr
KiBjb25zdCBjbG9ja187CiAKICAgVmlkZW9Db2RlYyBjb25maWdfIFJUQ19HVUFSREVEX0JZKGNy
aXRfc2VjdF8pOwpAQCAtODAsNiArNzgsNyBAQCBjbGFzcyBGYWtlRW5jb2RlciA6IHB1YmxpYyBW
aWRlb0VuY29kZXIgewogICBpbnQgY29uZmlndXJlZF9pbnB1dF9mcmFtZXJhdGVfIFJUQ19HVUFS
REVEX0JZKGNyaXRfc2VjdF8pOwogICBpbnQgbWF4X3RhcmdldF9iaXRyYXRlX2ticHNfIFJUQ19H
VUFSREVEX0JZKGNyaXRfc2VjdF8pOwogICBib29sIHBlbmRpbmdfa2V5ZnJhbWVfIFJUQ19HVUFS
REVEX0JZKGNyaXRfc2VjdF8pOworICB1aW50MzJfdCBjb3VudGVyXyBSVENfR1VBUkRFRF9CWShj
cml0X3NlY3RfKTsKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9zZWN0XzsKIAogICB1aW50
OF90IGVuY29kZWRfYnVmZmVyX1sxMDAwMDBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9kZWNvZGVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9kZWNv
ZGVyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYxNWJiMjE0OWRlYTRmMmVmNmVjNzllOWJiMzU4ZGIyMzhiYmIy
YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2RlY29kZXIuY2MKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJ0ZXN0L2Zha2VfdnA4X2RlY29kZXIuaCIKKwor
I2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Rp
bWV1dGlscy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworbmFt
ZXNwYWNlIHsKKy8vIFJlYWQgd2lkdGggYW5kIGhlaWdodCBmcm9tIHRoZSBwYXlsb2FkIG9mIHRo
ZSBmcmFtZSBpZiBpdCBpcyBhIGtleSBmcmFtZSB0aGUKKy8vIHNhbWUgd2F5IGFzIHRoZSByZWFs
IFZQOCBkZWNvZGVyLgorLy8gRmFrZUVuY29kZXIgd3JpdGVzIHdpZHRoLCBoZWlnaHQgYW5kIGZy
YW1lIHR5cGUuCit2b2lkIFBhcnNlRmFrZVZwOChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBp
bnQqIHdpZHRoLCBpbnQqIGhlaWdodCkgeworICBib29sIGtleV9mcmFtZSA9IGRhdGFbMF0gPT0g
MDsKKyAgaWYgKGtleV9mcmFtZSkgeworICAgICp3aWR0aCA9ICgoZGF0YVs3XSA8PCA4KSArIGRh
dGFbNl0pICYgMHgzRkZGOworICAgICpoZWlnaHQgPSAoKGRhdGFbOV0gPDwgOCkgKyBkYXRhWzhd
KSAmIDB4M0ZGRjsKKyAgfQorfQorfSAgLy8gbmFtZXNwYWNlCisKK0Zha2VWcDhEZWNvZGVyOjpG
YWtlVnA4RGVjb2RlcigpIDogY2FsbGJhY2tfKG51bGxwdHIpLCB3aWR0aF8oMCksIGhlaWdodF8o
MCkge30KKworaW50MzJfdCBGYWtlVnA4RGVjb2Rlcjo6SW5pdERlY29kZShjb25zdCBWaWRlb0Nv
ZGVjKiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
bnVtYmVyX29mX2NvcmVzKSB7CisgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Cit9CisK
K2ludDMyX3QgRmFrZVZwOERlY29kZXI6OkRlY29kZShjb25zdCBFbmNvZGVkSW1hZ2UmIGlucHV0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWlzc2luZ19mcmFtZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNv
ZGVjX3NwZWNpZmljX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCByZW5kZXJfdGltZV9tcykgeworICBjb25zdGV4cHIgc2l6ZV90IGtNaW5QYXlMb2FkSGVhZGVy
TGVuZ3RoID0gMTA7CisgIGlmIChpbnB1dC5fbGVuZ3RoIDwga01pblBheUxvYWRIZWFkZXJMZW5n
dGgpIHsKKyAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworICB9CisgIFBhcnNl
RmFrZVZwOChpbnB1dC5fYnVmZmVyLCAmd2lkdGhfLCAmaGVpZ2h0Xyk7CisKKyAgVmlkZW9GcmFt
ZSBmcmFtZShJNDIwQnVmZmVyOjpDcmVhdGUod2lkdGhfLCBoZWlnaHRfKSwKKyAgICAgICAgICAg
ICAgICAgICB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAsCisgICAgICAgICAgICAgICAgICAgcmVu
ZGVyX3RpbWVfbXMgKiBydGM6OmtOdW1NaWNyb3NlY3NQZXJNaWxsaXNlYyk7CisgIGZyYW1lLnNl
dF90aW1lc3RhbXAoaW5wdXQuVGltZXN0YW1wKCkpOworICBmcmFtZS5zZXRfbnRwX3RpbWVfbXMo
aW5wdXQubnRwX3RpbWVfbXNfKTsKKworICBjYWxsYmFja18tPkRlY29kZWQoZnJhbWUsIC8qZGVj
b2RlX3RpbWVfbXM9Ki9hYnNsOjpudWxsb3B0LAorICAgICAgICAgICAgICAgICAgICAgLypxcD0q
L2Fic2w6Om51bGxvcHQpOworCisgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Cit9CisK
K2ludDMyX3QgRmFrZVZwOERlY29kZXI6OlJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjaygK
KyAgICBEZWNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2spIHsKKyAgY2FsbGJhY2tfID0gY2Fs
bGJhY2s7CisgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Cit9CisKK2ludDMyX3QgRmFr
ZVZwOERlY29kZXI6OlJlbGVhc2UoKSB7CisgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7
Cit9CisKK2NvbnN0IGNoYXIqIEZha2VWcDhEZWNvZGVyOjprSW1wbGVtZW50YXRpb25OYW1lID0g
ImZha2VfdnA4X2RlY29kZXIiOworY29uc3QgY2hhciogRmFrZVZwOERlY29kZXI6OkltcGxlbWVu
dGF0aW9uTmFtZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGtJbXBsZW1lbnRhdGlvbk5hbWU7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4
X2RlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZmFrZV92cDhfZGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3NGFmNDAzZDY5MjA0MGQ2YTU2ZDU0
NmEyM2MwNWE2NGM1YWJhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2RlY29kZXIuaApAQCAtMCwwICsx
LDUxIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBURVNUX0ZBS0VfVlA4X0RF
Q09ERVJfSF8KKyNkZWZpbmUgVEVTVF9GQUtFX1ZQOF9ERUNPREVSX0hfCisKKyNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgorI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCisKK25hbWVzcGFjZSB3ZWJy
dGMgeworbmFtZXNwYWNlIHRlc3QgeworCitjbGFzcyBGYWtlVnA4RGVjb2RlciA6IHB1YmxpYyBW
aWRlb0RlY29kZXIgeworIHB1YmxpYzoKKyAgRmFrZVZwOERlY29kZXIoKTsKKyAgfkZha2VWcDhE
ZWNvZGVyKCkgb3ZlcnJpZGUge30KKworICBpbnQzMl90IEluaXREZWNvZGUoY29uc3QgVmlkZW9D
b2RlYyogY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBudW1iZXJfb2ZfY29y
ZXMpIG92ZXJyaWRlOworCisgIGludDMyX3QgRGVjb2RlKGNvbnN0IEVuY29kZWRJbWFnZSYgaW5w
dXQsCisgICAgICAgICAgICAgICAgIGJvb2wgbWlzc2luZ19mcmFtZXMsCisgICAgICAgICAgICAg
ICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZvLAorICAgICAg
ICAgICAgICAgICBpbnQ2NF90IHJlbmRlcl90aW1lX21zKSBvdmVycmlkZTsKKworICBpbnQzMl90
IFJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjaygKKyAgICAgIERlY29kZWRJbWFnZUNhbGxi
YWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7CisKKyAgaW50MzJfdCBSZWxlYXNlKCkgb3ZlcnJpZGU7
CisKKyAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgc3RhdGljIGNvbnN0IGNoYXIqIGtJbXBsZW1lbnRhdGlvbk5hbWU7CisKKyBwcml2YXRlOgor
ICBEZWNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2tfOworICBpbnQgd2lkdGhfOworICBpbnQg
aGVpZ2h0XzsKK307CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCisKKyNlbmRpZiAgLy8gVEVTVF9GQUtFX1ZQOF9ERUNPREVSX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2Vu
Y29kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L2Zha2VfdnA4X2VuY29kZXIuY2MKaW5kZXggNDAzODgzNzc5ODMxNTYwMWFkODEyZWNiNjNlZDlh
YWVjNWJjNGZhYy4uOTE4MGJlYzA0OTk2YjY4ODU4M2ZlYTY1NjdlMWZhMDQ3OGNhMTRkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9m
YWtlX3ZwOF9lbmNvZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhfZW5jb2Rlci5jYwpAQCAtMTAsOCArMTAsOCBAQAogCiAj
aW5jbHVkZSAidGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmgiCiAKLSNpbmNsdWRlICJjb21tb25fdHlw
ZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCisjaW5jbHVk
ZSAiYXBpL3ZpZGVvX2NvZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19lcnJvcl9jb2Rlcy5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3V0aWxpdHku
aCIKQEAgLTIwLDYgKzIwLDI2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvcmFuZG9tLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKK25hbWVzcGFjZSB7CisKKy8vIFdyaXRlIHdp
ZHRoIGFuZCBoZWlnaHQgdG8gdGhlIHBheWxvYWQgdGhlIHNhbWUgd2F5IGFzIHRoZSByZWFsIGVu
Y29kZXIgZG9lcy4KKy8vIEl0IHJlcXVpcmVzIHRoYXQgfHBheWxvYWR8IGhhcyBhIHNpemUgb2Yg
YXQgbGVhc3Qga01pblBheUxvYWRIZWFkZXJMZW5ndGguCit2b2lkIFdyaXRlRmFrZVZwOCh1bnNp
Z25lZCBjaGFyKiBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgaW50IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgIGJvb2wga2V5X2ZyYW1l
KSB7CisgIHBheWxvYWRbMF0gPSBrZXlfZnJhbWUgPyAwIDogMHgwMTsKKworICBpZiAoa2V5X2Zy
YW1lKSB7CisgICAgcGF5bG9hZFs5XSA9IChoZWlnaHQgJiAweDNGMDApID4+IDg7CisgICAgcGF5
bG9hZFs4XSA9IChoZWlnaHQgJiAweDAwRkYpOworCisgICAgcGF5bG9hZFs3XSA9ICh3aWR0aCAm
IDB4M0YwMCkgPj4gODsKKyAgICBwYXlsb2FkWzZdID0gKHdpZHRoICYgMHgwMEZGKTsKKyAgfQor
fQorfSAgLy8gbmFtZXNwYWNlCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBuYW1lc3BhY2UgdGVz
dCB7CkBAIC02MywxOCArODMsMTggQEAgdm9pZCBGYWtlVlA4RW5jb2Rlcjo6U2V0dXBUZW1wb3Jh
bExheWVycyhjb25zdCBWaWRlb0NvZGVjJiBjb2RlYykgewogCiAgIGludCBudW1fc3RyZWFtcyA9
IFNpbXVsY2FzdFV0aWxpdHk6Ok51bWJlck9mU2ltdWxjYXN0U3RyZWFtcyhjb2RlYyk7CiAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtX3N0cmVhbXM7ICsraSkgewotICAgIFRlbXBvcmFsTGF5ZXJz
VHlwZSB0eXBlOworICAgIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZSB0eXBlOwogICAgIGludCBudW1f
dGVtcG9yYWxfbGF5ZXJzID0KICAgICAgICAgU2ltdWxjYXN0VXRpbGl0eTo6TnVtYmVyT2ZUZW1w
b3JhbExheWVycyhjb2RlYywgaSk7CiAgICAgaWYgKFNpbXVsY2FzdFV0aWxpdHk6OklzQ29uZmVy
ZW5jZU1vZGVTY3JlZW5zaGFyZShjb2RlYykgJiYgaSA9PSAwKSB7Ci0gICAgICB0eXBlID0gVGVt
cG9yYWxMYXllcnNUeXBlOjprQml0cmF0ZUR5bmFtaWM7CisgICAgICB0eXBlID0gVnA4VGVtcG9y
YWxMYXllcnNUeXBlOjprQml0cmF0ZUR5bmFtaWM7CiAgICAgICAvLyBMZWdhY3kgc2NyZWVuc2hh
cmUgbGF5ZXJzIHN1cHBvcnRzIG1heCAyIGxheWVycy4KICAgICAgIG51bV90ZW1wb3JhbF9sYXll
cnMgPSBzdGQ6Om1heDxpbnQ+KDIsIG51bV90ZW1wb3JhbF9sYXllcnMpOwogICAgIH0gZWxzZSB7
Ci0gICAgICB0eXBlID0gVGVtcG9yYWxMYXllcnNUeXBlOjprRml4ZWRQYXR0ZXJuOworICAgICAg
dHlwZSA9IFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybjsKICAgICB9CiAgICAg
dGVtcG9yYWxfbGF5ZXJzXy5lbXBsYWNlX2JhY2soCi0gICAgICAgIFRlbXBvcmFsTGF5ZXJzOjpD
cmVhdGVUZW1wb3JhbExheWVycyh0eXBlLCBudW1fdGVtcG9yYWxfbGF5ZXJzKSk7CisgICAgICAg
IENyZWF0ZVZwOFRlbXBvcmFsTGF5ZXJzKHR5cGUsIG51bV90ZW1wb3JhbF9sYXllcnMpKTsKICAg
fQogfQogCkBAIC04NSw3ICsxMDUsNiBAQCB2b2lkIEZha2VWUDhFbmNvZGVyOjpQb3B1bGF0ZUNv
ZGVjU3BlY2lmaWMoQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVzdGFtcCkgewog
ICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNlcXVlbmNlX2NoZWNrZXJfKTsKICAg
Y29kZWNfc3BlY2lmaWMtPmNvZGVjVHlwZSA9IGtWaWRlb0NvZGVjVlA4OwotICBjb2RlY19zcGVj
aWZpYy0+Y29kZWNfbmFtZSA9IEltcGxlbWVudGF0aW9uTmFtZSgpOwogICBDb2RlY1NwZWNpZmlj
SW5mb1ZQOCogdnA4SW5mbyA9ICYoY29kZWNfc3BlY2lmaWMtPmNvZGVjU3BlY2lmaWMuVlA4KTsK
ICAgdnA4SW5mby0+a2V5SWR4ID0ga05vS2V5SWR4OwogICB2cDhJbmZvLT5ub25SZWZlcmVuY2Ug
PSBmYWxzZTsKQEAgLTEwNSw5ICsxMjQsMjAgQEAgRW5jb2RlZEltYWdlQ2FsbGJhY2s6OlJlc3Vs
dCBGYWtlVlA4RW5jb2Rlcjo6T25FbmNvZGVkSW1hZ2UoCiAgICAgICAgICAgICAgICAgICAgICAg
ICBlbmNvZGVkX2ltYWdlLl9mcmFtZVR5cGUsIHN0cmVhbV9pZHgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBlbmNvZGVkX2ltYWdlLlRpbWVzdGFtcCgpKTsKIAorICAvLyBXcml0ZSB3aWR0aCBh
bmQgaGVpZ2h0IHRvIHRoZSBwYXlsb2FkIHRoZSBzYW1lIHdheSBhcyB0aGUgcmVhbCBlbmNvZGVy
CisgIC8vIGRvZXMuCisgIFdyaXRlRmFrZVZwOChlbmNvZGVkX2ltYWdlLl9idWZmZXIsIGVuY29k
ZWRfaW1hZ2UuX2VuY29kZWRXaWR0aCwKKyAgICAgICAgICAgICAgIGVuY29kZWRfaW1hZ2UuX2Vu
Y29kZWRIZWlnaHQsCisgICAgICAgICAgICAgICBlbmNvZGVkX2ltYWdlLl9mcmFtZVR5cGUgPT0g
a1ZpZGVvRnJhbWVLZXkpOwogICByZXR1cm4gY2FsbGJhY2tfLT5PbkVuY29kZWRJbWFnZShlbmNv
ZGVkX2ltYWdlLCAmb3ZlcnJpZGVkX3NwZWNpZmljX2luZm8sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyYWdtZW50cyk7CiB9CiAKK1ZpZGVvRW5jb2Rlcjo6RW5jb2Rlcklu
Zm8gRmFrZVZQOEVuY29kZXI6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICBFbmNvZGVySW5m
byBpbmZvOworICBpbmZvLmltcGxlbWVudGF0aW9uX25hbWUgPSAiRmFrZVZwOEVuY29kZXIiOwor
ICByZXR1cm4gaW5mbzsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvZmFrZV92cDhfZW5jb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmgKaW5kZXggNzUxOGUzYTJk
YjVkMzU4NDA1ZmZjMTZjODZhNzNkMDI1NzFjOGNlNC4uYTRkNjNhOWFlMzBhNjcwMWNhMGJiMmE2
ZWIzOWM0OTVmMDdiMTFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmgKQEAg
LTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0j
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1w
b3JhbF9sYXllcnMuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9s
YXllcnMuaCIKICNpbmNsdWRlICJ0ZXN0L2Zha2VfZW5jb2Rlci5oIgogCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCkBAIC0zNywxMiArMzcsMTIgQEAgY2xhc3MgRmFrZVZQ
OEVuY29kZXIgOiBwdWJsaWMgRmFrZUVuY29kZXIsIHB1YmxpYyBFbmNvZGVkSW1hZ2VDYWxsYmFj
ayB7CiAKICAgaW50MzJfdCBSZWxlYXNlKCkgb3ZlcnJpZGU7CiAKLSAgY29uc3QgY2hhciogSW1w
bGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkZha2VWcDhFbmNvZGVy
IjsgfQotCiAgIFJlc3VsdCBPbkVuY29kZWRJbWFnZShjb25zdCBFbmNvZGVkSW1hZ2UmIGVuY29k
ZWRJbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZv
KiBjb2RlY1NwZWNpZmljSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJUUEZy
YWdtZW50YXRpb25IZWFkZXIqIGZyYWdtZW50cykgb3ZlcnJpZGU7CiAKKyAgRW5jb2RlckluZm8g
R2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZTsKKwogIHByaXZhdGU6CiAgIHZvaWQgU2V0
dXBUZW1wb3JhbExheWVycyhjb25zdCBWaWRlb0NvZGVjJiBjb2RlYyk7CiAgIHZvaWQgUG9wdWxh
dGVDb2RlY1NwZWNpZmljKENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpYywKQEAgLTU0
LDcgKzU0LDcgQEAgY2xhc3MgRmFrZVZQOEVuY29kZXIgOiBwdWJsaWMgRmFrZUVuY29kZXIsIHB1
YmxpYyBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7CiAgIHJ0Yzo6U2VxdWVuY2VkVGFza0NoZWNrZXIg
c2VxdWVuY2VfY2hlY2tlcl87CiAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFja18gUlRD
X0dVQVJERURfQlkoc2VxdWVuY2VfY2hlY2tlcl8pOwogCi0gIHN0ZDo6dmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxUZW1wb3JhbExheWVycz4+IHRlbXBvcmFsX2xheWVyc18KKyAgc3RkOjp2ZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFZwOFRlbXBvcmFsTGF5ZXJzPj4gdGVtcG9yYWxfbGF5ZXJzXwogICAg
ICAgUlRDX0dVQVJERURfQlkoc2VxdWVuY2VfY2hlY2tlcl8pOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9l
bmNvZGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVyX3VuaXR0ZXN0LmNjCmluZGV4IGM3OWJhMGM1NTE1
YzVmZDY1NDA0YmRhMDU4Y2VlMGM4MmRhZWI0MzguLjRlNTc2ZmU5YzljMjUzNjRmMTQ4OWM5ZjE5
OTg4NWZhYTI4OTkxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhfZW5jb2Rlcl91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29k
ZXJfdW5pdHRlc3QuY2MKQEAgLTE0LDExICsxNCwxMSBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5
L21lbW9yeS5oIgogI2luY2x1ZGUgImFwaS90ZXN0L2NyZWF0ZV9zaW11bGNhc3RfdGVzdF9maXh0
dXJlLmgiCiAjaW5jbHVkZSAiYXBpL3Rlc3Qvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oIgorI2lu
Y2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgor
I2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3Rf
Zml4dHVyZV9pbXBsLmgiCi0jaW5jbHVkZSAidGVzdC9mYWtlX2RlY29kZXIuaCIKKyNpbmNsdWRl
ICJ0ZXN0L2Zha2VfdnA4X2RlY29kZXIuaCIKICNpbmNsdWRlICJ0ZXN0L2Zha2VfdnA4X2VuY29k
ZXIuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgot
I2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewpAQCAtMzIsNyArMzIsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8U2ltdWxjYXN0VGVzdEZpeHR1cmU+IENyZWF0ZVNwZWNpZmljU2ltdWxjYXN0VGVz
dEZpeHR1cmUoKSB7CiAgICAgICB9KTsKICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2RlckZh
Y3Rvcnk+IGRlY29kZXJfZmFjdG9yeSA9CiAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGdW5jdGlv
blZpZGVvRGVjb2RlckZhY3Rvcnk+KAotICAgICAgICAgIFtdKCkgeyByZXR1cm4gYWJzbDo6bWFr
ZV91bmlxdWU8RmFrZURlY29kZXI+KCk7IH0pOworICAgICAgICAgIFtdKCkgeyByZXR1cm4gYWJz
bDo6bWFrZV91bmlxdWU8RmFrZVZwOERlY29kZXI+KCk7IH0pOwogICByZXR1cm4gQ3JlYXRlU2lt
dWxjYXN0VGVzdEZpeHR1cmUoc3RkOjptb3ZlKGVuY29kZXJfZmFjdG9yeSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoZGVjb2Rlcl9mYWN0b3J5KSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFZpZGVvRm9ybWF0KCJWUDgiKSk7
CkBAIC05OSw1ICs5OSwxMCBAQCBURVNUKFRlc3RGYWtlVnA4Q29kZWMsIFRlc3RTcGF0aW9UZW1w
b3JhbExheWVyczMzM1BhdHRlcm5FbmNvZGVyKSB7CiAgIGZpeHR1cmUtPlRlc3RTcGF0aW9UZW1w
b3JhbExheWVyczMzM1BhdHRlcm5FbmNvZGVyKCk7CiB9CiAKK1RFU1QoVGVzdEZha2VWcDhDb2Rl
YywgVGVzdERlY29kZVdpZHRoSGVpZ2h0U2V0KSB7CisgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVNw
ZWNpZmljU2ltdWxjYXN0VGVzdEZpeHR1cmUoKTsKKyAgZml4dHVyZS0+VGVzdERlY29kZVdpZHRo
SGVpZ2h0U2V0KCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiB9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L2ZyYW1lX2dlbmVyYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnJhbWVfZ2VuZXJhdG9yLmNjCmluZGV4IGFjZDYzZjkzMTIy
MGI1ODgzNmIxZjVjYmIwM2U2ZGNmNGRhNmIwNjAuLmY2ZmQyODVjMWExM2VhZWVkYWYwODUzZTMw
ODBkZDIyYWY1NTUxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZnJhbWVfZ2VuZXJhdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnJhbWVfZ2VuZXJhdG9yLmNjCkBAIC0z
OTAsMTEgKzM5MCwxMSBAQCBjbGFzcyBTY3JvbGxpbmdJbWFnZUZyYW1lR2VuZXJhdG9yIDogcHVi
bGljIEZyYW1lR2VuZXJhdG9yIHsKICAgICAgICAgICAgICAgICAgICAocGl4ZWxzX3Njcm9sbGVk
X3ggLyAyKTsKIAogICAgIGN1cnJlbnRfZnJhbWVfID0gd2VicnRjOjpWaWRlb0ZyYW1lKAotICAg
ICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PHdlYnJ0Yzo6V3JhcHBlZEk0MjBCdWZmZXI+
KAotICAgICAgICAgICAgdGFyZ2V0X3dpZHRoXywgdGFyZ2V0X2hlaWdodF8sICZpNDIwX2J1ZmZl
ci0+RGF0YVkoKVtvZmZzZXRfeV0sCi0gICAgICAgICAgICBpNDIwX2J1ZmZlci0+U3RyaWRlWSgp
LCAmaTQyMF9idWZmZXItPkRhdGFVKClbb2Zmc2V0X3VdLAotICAgICAgICAgICAgaTQyMF9idWZm
ZXItPlN0cmlkZVUoKSwgJmk0MjBfYnVmZmVyLT5EYXRhVigpW29mZnNldF92XSwKLSAgICAgICAg
ICAgIGk0MjBfYnVmZmVyLT5TdHJpZGVWKCksIEtlZXBSZWZVbnRpbERvbmUoaTQyMF9idWZmZXIp
KSwKKyAgICAgICAgV3JhcEk0MjBCdWZmZXIodGFyZ2V0X3dpZHRoXywgdGFyZ2V0X2hlaWdodF8s
CisgICAgICAgICAgICAgICAgICAgICAgICZpNDIwX2J1ZmZlci0+RGF0YVkoKVtvZmZzZXRfeV0s
IGk0MjBfYnVmZmVyLT5TdHJpZGVZKCksCisgICAgICAgICAgICAgICAgICAgICAgICZpNDIwX2J1
ZmZlci0+RGF0YVUoKVtvZmZzZXRfdV0sIGk0MjBfYnVmZmVyLT5TdHJpZGVVKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICZpNDIwX2J1ZmZlci0+RGF0YVYoKVtvZmZzZXRfdl0sIGk0MjBfYnVm
ZmVyLT5TdHJpZGVWKCksCisgICAgICAgICAgICAgICAgICAgICAgIEtlZXBSZWZVbnRpbERvbmUo
aTQyMF9idWZmZXIpKSwKICAgICAgICAga1ZpZGVvUm90YXRpb25fMCwgMCk7CiAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9m
dW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NGY4NTM0YmUwMGJiNTkwMWU5YWI3OTk0
MjMwMThmMzAzOWJlMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdW5j
dGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIFRFU1RfRlVOQ1RJT05fVklERU9f
REVDT0RFUl9GQUNUT1JZX0hfCi0jZGVmaW5lIFRFU1RfRlVOQ1RJT05fVklERU9fREVDT0RFUl9G
QUNUT1JZX0hfCi0KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPG1lbW9yeT4KLSNp
bmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImFwaS92aWRl
b19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgotI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
dmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0K
LW5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIHRlc3QgewotCi0vLyBBIGRlY29kZXIgZmFj
dG9yeSBwcm9kdWNpbmcgZGVjb2RlcnMgYnkgY2FsbGluZyBhIHN1cHBsaWVkIGNyZWF0ZSBmdW5j
dGlvbi4KLWNsYXNzIEZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBW
aWRlb0RlY29kZXJGYWN0b3J5IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEZ1bmN0aW9uVmlkZW9E
ZWNvZGVyRmFjdG9yeSgKLSAgICAgIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFZpZGVv
RGVjb2Rlcj4oKT4gY3JlYXRlKQotICAgICAgOiBjcmVhdGVfKFtjcmVhdGVdKGNvbnN0IFNkcFZp
ZGVvRm9ybWF0JikgeyByZXR1cm4gY3JlYXRlKCk7IH0pIHt9Ci0gIGV4cGxpY2l0IEZ1bmN0aW9u
VmlkZW9EZWNvZGVyRmFjdG9yeSgKLSAgICAgIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRy
PFZpZGVvRGVjb2Rlcj4oY29uc3QgU2RwVmlkZW9Gb3JtYXQmKT4KLSAgICAgICAgICBjcmVhdGUp
Ci0gICAgICA6IGNyZWF0ZV8oc3RkOjptb3ZlKGNyZWF0ZSkpIHt9Ci0KLSAgLy8gVW51c2VkIGJ5
IHRlc3RzLgotICBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gR2V0U3VwcG9ydGVkRm9ybWF0
cygpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICAgIHJldHVybiB7
fTsKLSAgfQotCi0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+IENyZWF0ZVZpZGVvRGVj
b2RlcigKLSAgICAgIGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIG92ZXJyaWRlIHsKLSAg
ICByZXR1cm4gY3JlYXRlXyhmb3JtYXQpOwotICB9Ci0KLSBwcml2YXRlOgotICBjb25zdCBzdGQ6
OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+KGNvbnN0IFNkcFZpZGVvRm9y
bWF0Jik+Ci0gICAgICBjcmVhdGVfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3QKLX0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBURVNUX0ZVTkNUSU9OX1ZJREVPX0RFQ09E
RVJfRkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnVuY3Rpb25fdmlkZW9f
ZW5jb2Rlcl9mYWN0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NzM5N2Y2
YzBjNjk3OTk0YzYwYjUxNDliMWQ2ZGMzN2FhNDBkMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIFRF
U1RfRlVOQ1RJT05fVklERU9fRU5DT0RFUl9GQUNUT1JZX0hfCi0jZGVmaW5lIFRFU1RfRlVOQ1RJ
T05fVklERU9fRU5DT0RFUl9GQUNUT1JZX0hfCi0KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2lu
Y2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQot
I2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgotI2luY2x1ZGUg
ImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIHRlc3Qgewot
Ci0vLyBBbiBlbmNvZGVyIGZhY3RvcnkgcHJvZHVjaW5nIGVuY29kZXJzIGJ5IGNhbGxpbmcgYSBz
dXBwbGllZCBjcmVhdGUKLS8vIGZ1bmN0aW9uLgotY2xhc3MgRnVuY3Rpb25WaWRlb0VuY29kZXJG
YWN0b3J5IGZpbmFsIDogcHVibGljIFZpZGVvRW5jb2RlckZhY3RvcnkgewotIHB1YmxpYzoKLSAg
ZXhwbGljaXQgRnVuY3Rpb25WaWRlb0VuY29kZXJGYWN0b3J5KAotICAgICAgc3RkOjpmdW5jdGlv
bjxzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPigpPiBjcmVhdGUpCi0gICAgICA6IGNyZWF0
ZV8oW2NyZWF0ZV0oY29uc3QgU2RwVmlkZW9Gb3JtYXQmKSB7IHJldHVybiBjcmVhdGUoKTsgfSkg
e30KLSAgZXhwbGljaXQgRnVuY3Rpb25WaWRlb0VuY29kZXJGYWN0b3J5KAotICAgICAgc3RkOjpm
dW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPihjb25zdCBTZHBWaWRlb0Zvcm1h
dCYpPgotICAgICAgICAgIGNyZWF0ZSkKLSAgICAgIDogY3JlYXRlXyhzdGQ6Om1vdmUoY3JlYXRl
KSkge30KLQotICAvLyBVbnVzZWQgYnkgdGVzdHMuCi0gIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9y
bWF0PiBHZXRTdXBwb3J0ZWRGb3JtYXRzKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIFJUQ19OT1RS
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIHt9OwotICB9Ci0KLSAgQ29kZWNJbmZvIFF1ZXJ5VmlkZW9F
bmNvZGVyKAotICAgICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQmIC8qIGZvcm1hdCAqLykgY29uc3Qg
b3ZlcnJpZGUgewotICAgIENvZGVjSW5mbyBjb2RlY19pbmZvOwotICAgIGNvZGVjX2luZm8uaXNf
aGFyZHdhcmVfYWNjZWxlcmF0ZWQgPSBmYWxzZTsKLSAgICBjb2RlY19pbmZvLmhhc19pbnRlcm5h
bF9zb3VyY2UgPSBmYWxzZTsKLSAgICByZXR1cm4gY29kZWNfaW5mbzsKLSAgfQotCi0gIHN0ZDo6
dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IENyZWF0ZVZpZGVvRW5jb2RlcigKLSAgICAgIGNvbnN0
IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIG92ZXJyaWRlIHsKLSAgICByZXR1cm4gY3JlYXRlXyhm
b3JtYXQpOwotICB9Ci0KLSBwcml2YXRlOgotICBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb0VuY29kZXI+KGNvbnN0IFNkcFZpZGVvRm9ybWF0Jik+Ci0gICAgICBjcmVh
dGVfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3QKLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
LQotI2VuZGlmICAvLyBURVNUX0ZVTkNUSU9OX1ZJREVPX0VOQ09ERVJfRkFDVE9SWV9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9m
dXp6ZXJzL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9mdXp6ZXJzL0JVSUxELmduCmluZGV4IGNjYzE1YTYxMDA1ZTlkM2FlODYyZjAwYzYy
ZDJkNWE2ODlmM2E0OTcuLjQzZGU1Zjk5OGNlZjYxMDgwMDA0MThkMGU3ZmM1Yzk1MDRkYWY2YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZnV6emVycy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvQlVJTEQuZ24KQEAgLTYsOSArNiw5IEBACiAjIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKICMg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCiAKLWltcG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCiBpbXBvcnQoIi8vYnVpbGQvY29uZmln
L2ZlYXR1cmVzLmduaSIpCiBpbXBvcnQoIi8vdGVzdGluZy9saWJmdXp6ZXIvZnV6emVyX3Rlc3Qu
Z25pIikKK2ltcG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCiAKIHJ0Y19zdGF0aWNfbGlicmFyeSgi
d2VicnRjX2Z1enplcl9tYWluIikgewogICBzb3VyY2VzID0gWwpAQCAtMTI1LDcgKzEyNSw2IEBA
IHdlYnJ0Y19mdXp6ZXJfdGVzdCgiZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2Z1enplciIpIHsK
ICAgICAiLi4vLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAogICAgICIuLi8u
Li9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgIF0KLSAgbGliZnV6emVyX29wdGlvbnMg
PSBbICJtYXhfbGVuPTUwMDAiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJmbGV4ZmVjX2hl
YWRlcl9yZWFkZXJfZnV6emVyIikgewpAQCAtMTQ4LDcgKzE0Nyw2IEBAIHdlYnJ0Y19mdXp6ZXJf
dGVzdCgiZmxleGZlY19zZW5kZXJfZnV6emVyIikgewogICAgICIuLi8uLi9tb2R1bGVzL3J0cF9y
dGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgIF0K
LSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTIwMCIgXQogfQogCiB3ZWJydGNfZnV6
emVyX3Rlc3QoInVscGZlY19oZWFkZXJfcmVhZGVyX2Z1enplciIpIHsKQEAgLTE4Niw3ICsxODQs
NiBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoInVscGZlY19yZWNlaXZlcl9mdXp6ZXIiKSB7CiAgICAg
Ii4uLy4uL21vZHVsZXMvcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAiLi4vLi4vcnRj
X2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICBdCi0gIGxpYmZ1enplcl9vcHRpb25zID0gWyAi
bWF4X2xlbj0yMDAwIiBdCiB9CiAKIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiZmxleGZlY19yZWNlaXZl
cl9mdXp6ZXIiKSB7CkBAIC0xOTgsNyArMTk1LDYgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJmbGV4
ZmVjX3JlY2VpdmVyX2Z1enplciIpIHsKICAgICAiLi4vLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBf
cnRjcF9mb3JtYXQiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAg
IF0KLSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTIwMDAiIF0KIH0KIAogd2VicnRj
X2Z1enplcl90ZXN0KCJwYWNrZXRfYnVmZmVyX2Z1enplciIpIHsKQEAgLTIwOSw3ICsyMDUsNiBA
QCB3ZWJydGNfZnV6emVyX3Rlc3QoInBhY2tldF9idWZmZXJfZnV6emVyIikgewogICAgICIuLi8u
Li9tb2R1bGVzL3ZpZGVvX2NvZGluZy8iLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAog
ICBdCi0gIGxpYmZ1enplcl9vcHRpb25zID0gWyAibWF4X2xlbj0yMDAwMDAiIF0KIH0KIAogd2Vi
cnRjX2Z1enplcl90ZXN0KCJydGNwX3JlY2VpdmVyX2Z1enplciIpIHsKQEAgLTI4Myw4ICsyNzgs
NiBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoImF1ZGlvX2RlY29kZXJfaWxiY19mdXp6ZXIiKSB7CiAg
ICAgIjphdWRpb19kZWNvZGVyX2Z1enplciIsCiAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fY29k
aW5nOmlsYmMiLAogICBdCi0KLSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTEwMDAw
IiBdCiB9CiAKIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiYXVkaW9fZGVjb2Rlcl9pc2FjX2Z1enplciIp
IHsKQEAgLTI5NSw4ICsyODgsNiBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoImF1ZGlvX2RlY29kZXJf
aXNhY19mdXp6ZXIiKSB7CiAgICAgIjphdWRpb19kZWNvZGVyX2Z1enplciIsCiAgICAgIi4uLy4u
L21vZHVsZXMvYXVkaW9fY29kaW5nOmlzYWMiLAogICBdCi0KLSAgbGliZnV6emVyX29wdGlvbnMg
PSBbICJtYXhfbGVuPTIwMDAwIiBdCiB9CiAKIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiYXVkaW9fZGVj
b2Rlcl9pc2FjX2luY29taW5nX3BhY2tldF9mdXp6ZXIiKSB7CkBAIC0zMDcsOCArMjk4LDYgQEAg
d2VicnRjX2Z1enplcl90ZXN0KCJhdWRpb19kZWNvZGVyX2lzYWNfaW5jb21pbmdfcGFja2V0X2Z1
enplciIpIHsKICAgICAiOmF1ZGlvX2RlY29kZXJfZnV6emVyIiwKICAgICAiLi4vLi4vbW9kdWxl
cy9hdWRpb19jb2Rpbmc6aXNhYyIsCiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1h
eF9sZW49MjAwMDAiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJhdWRpb19kZWNvZGVyX2lz
YWNmaXhfZnV6emVyIikgewpAQCAtMzE5LDggKzMwOCw2IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgi
YXVkaW9fZGVjb2Rlcl9pc2FjZml4X2Z1enplciIpIHsKICAgICAiOmF1ZGlvX2RlY29kZXJfZnV6
emVyIiwKICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aXNhY19maXgiLAogICBdCi0K
LSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTIwMDAwIiBdCiB9CiAKIHdlYnJ0Y19m
dXp6ZXJfdGVzdCgiYXVkaW9fZGVjb2Rlcl9vcHVzX2Z1enplciIpIHsKQEAgLTM3NywxMCArMzY0
LDcgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJuZXRlcV9ydHBfZnV6emVyIikgewogICAgICIuLi8u
Li9tb2R1bGVzL2F1ZGlvX2NvZGluZzpwY20xNmIiLAogICAgICIuLi8uLi9tb2R1bGVzL3J0cF9y
dGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKLSAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICBdCi0K
LSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTEwMDAwMCIgXQogfQogCiB3ZWJydGNf
ZnV6emVyX3Rlc3QoIm5ldGVxX3NpZ25hbF9mdXp6ZXIiKSB7CkBAIC0zOTQsMTAgKzM3OCw3IEBA
IHdlYnJ0Y19mdXp6ZXJfdGVzdCgibmV0ZXFfc2lnbmFsX2Z1enplciIpIHsKICAgICAiLi4vLi4v
bW9kdWxlcy9hdWRpb19jb2Rpbmc6bmV0ZXFfdG9vbHNfbWluaW1hbCIsCiAgICAgIi4uLy4uL21v
ZHVsZXMvYXVkaW9fY29kaW5nOnBjbTE2YiIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNl
X2FwcHJvdmVkIiwKLSAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAog
ICBdCi0KLSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTEwMDAwMCIgXQogfQogCiB3
ZWJydGNfZnV6emVyX3Rlc3QoInJlc2lkdWFsX2VjaG9fZGV0ZWN0b3JfZnV6emVyIikgewpAQCAt
NDIwLDcgKzQwMSw2IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgic2RwX3BhcnNlcl9mdXp6ZXIiKSB7
CiAgICAgIi4uLy4uL3BjOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbiIsCiAgIF0KICAgc2VlZF9j
b3JwdXMgPSAiY29ycG9yYS9zZHAtY29ycHVzIgotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1h
eF9sZW49MTYzODQiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJzdHVuX3BhcnNlcl9mdXp6
ZXIiKSB7CkBAIC00ODcsNiArNDY3LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19wcm9j
ZXNzaW5nX2Z1enplcl9oZWxwZXIiKSB7CiAgICAgIjpmdXp6X2RhdGFfaGVscGVyIiwKICAgICAi
Li4vLi4vYXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCiAgICAgIi4uLy4uL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZyIsCisgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGki
LAogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
Om9wdGlvbmFsIiwKQEAgLTUwMSwxMCArNDgyLDEzIEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiYXVk
aW9fcHJvY2Vzc2luZ19mdXp6ZXIiKSB7CiAgICAgIjphdWRpb19wcm9jZXNzaW5nX2Z1enplcl9o
ZWxwZXIiLAogICAgICIuLi8uLi9hcGkvYXVkaW86YWVjM19mYWN0b3J5IiwKICAgICAiLi4vLi4v
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nIiwKKyAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nOmFwaSIsCiAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzIiwK
LSAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wOm1vY2tfYWVjX2R1
bXAiLAorICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAiLAorICAg
ICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXA6YWVjX2R1bXBfaW1wbCIs
CiAgICAgIi4uLy4uL3J0Y19iYXNlOnB0cl91dGlsIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRj
X2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCiAg
ICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBw
ZXJzOmZpZWxkX3RyaWFsIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5IiwKQEAgLTUxOSwxMyArNTAzLDEzIEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiYWdjX2Z1enpl
ciIpIHsKICAgZGVwcyA9IFsKICAgICAiOmZ1enpfZGF0YV9oZWxwZXIiLAogICAgICIuLi8uLi9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmciLAorICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3Npbmc6YXBpIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAg
ICIuLi8uLi9ydGNfYmFzZTpzYWZlX21pbm1heCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIAogICBzZWVkX2NvcnB1cyA9ICJjb3Jwb3JhL2FnYy1j
b3JwdXMiCi0gIGxpYmZ1enplcl9vcHRpb25zID0gWyAibWF4X2xlbj0yMDAwMDAiIF0KIH0KIAog
d2VicnRjX2Z1enplcl90ZXN0KCJjb21mb3J0X25vaXNlX2RlY29kZXJfZnV6emVyIikgewpAQCAt
NTM0LDExICs1MTgsOSBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoImNvbWZvcnRfbm9pc2VfZGVjb2Rl
cl9mdXp6ZXIiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXci
LAotICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpjbmciLAorICAgICIuLi8uLi9tb2R1
bGVzL2F1ZGlvX2NvZGluZzp3ZWJydGNfY25nIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jh
c2VfYXBwcm92ZWQiLAogICBdCi0KLSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTUw
MDAiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJydHBfZnJhbWVfcmVmZXJlbmNlX2ZpbmRl
cl9mdXp6ZXIiKSB7CkBAIC01NTEsNyArNTMzLDYgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJydHBf
ZnJhbWVfcmVmZXJlbmNlX2ZpbmRlcl9mdXp6ZXIiKSB7CiAgICAgIi4uLy4uL3N5c3RlbV93cmFw
cGVycyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0K
LSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTIwMDAwIiBdCiB9CiAKIHdlYnJ0Y19m
dXp6ZXJfdGVzdCgiZnJhbWVfYnVmZmVyMl9mdXp6ZXIiKSB7CkBAIC01NjIsNSArNTQzLDQgQEAg
d2VicnRjX2Z1enplcl90ZXN0KCJmcmFtZV9idWZmZXIyX2Z1enplciIpIHsKICAgICAiLi4vLi4v
bW9kdWxlcy92aWRlb19jb2RpbmcvIiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOnN5c3Rl
bV93cmFwcGVycyIsCiAgIF0KLSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTEwMDAw
IiBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L2Z1enplcnMvYWdjX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hZ2NfZnV6emVyLmNjCmluZGV4IDViZDky
MWU3NGRhZTNiOTk4NTljY2Y1MjIxNGNjMTFmYWJhMDlmNDAuLmYyYzkwNDgwYzgzNWVhZGVlM2Ri
MjI4OTIyMmE1Y2NhZGViOTllODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hZ2NfZnV6emVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hZ2NfZnV6
emVyLmNjCkBAIC0xMDksNiArMTA5LDkgQEAgdm9pZCBGdXp6R2FpbkNvbnRyb2xsZXIodGVzdDo6
RnV6ekRhdGFIZWxwZXIqIGZ1enpfZGF0YSwgR2FpbkNvbnRyb2xJbXBsKiBnY2kpIHsKIH0gIC8v
IG5hbWVzcGFjZQogCiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+IDIwMDAwMCkgeworICAgIHJldHVybjsKKyAgfQogICB0
ZXN0OjpGdXp6RGF0YUhlbHBlciBmdXp6X2RhdGEocnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhf
dD4oZGF0YSwgc2l6ZSkpOwogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X2NhcHR1cmU7CiAg
IHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfcmVuZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX2RlY29k
ZXJfaWxiY19mdXp6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rlcl9pbGJjX2Z1enplci5jYwppbmRleCBhNjg3
MjVkNmFhY2QxNjJlMmEyZmI0MGY2OWExMTEwZmM3NDAyN2IzLi44NTQ4NjQ1YzYzZjliNzY3YTU5
NTJiNzYwMWNiMmMwZjFjM2RhYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rlcl9pbGJjX2Z1enpl
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L2Z1enplcnMvYXVkaW9fZGVjb2Rlcl9pbGJjX2Z1enplci5jYwpAQCAtMTMsNiArMTMsOSBAQAog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7CisgIGlmIChzaXplID4gMTAwMDApIHsKKyAgICByZXR1cm47Cisg
IH0KICAgQXVkaW9EZWNvZGVySWxiY0ltcGwgZGVjOwogICBzdGF0aWMgY29uc3QgaW50IGtTYW1w
bGVSYXRlSHogPSA4MDAwOwogICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtBbGxvY2F0ZWRPdXB1dFNp
emVTYW1wbGVzID0ga1NhbXBsZVJhdGVIeiAvIDEwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX2RlY29kZXJf
aXNhY19mdXp6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Z1enplci5jYwppbmRleCBlNzk5OTZl
MDViMjhhMzRiZjExZDFiODk2OTc0MDZiNDZkMTIwZTcwLi5iNTc5MDgzOTU2YzZiY2UwNjRiZTRm
OThiNzVlOTVmMDAzYjY3ZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Z1enplci5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1
enplcnMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Z1enplci5jYwpAQCAtMTMsNiArMTMsOSBAQAogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7CisgIGlmIChzaXplID4gMjAwMDApIHsKKyAgICByZXR1cm47CisgIH0K
ICAgY29uc3QgaW50IHNhbXBsZV9yYXRlX2h6ID0gc2l6ZSAlIDIgPT0gMCA/IDE2MDAwIDogMzIw
MDA7ICAgICAvLyAxNiBvciAzMiBrSHouCiAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0FsbG9jYXRl
ZE91cHV0U2l6ZVNhbXBsZXMgPSAzMjAwMCAvIDEwOyAgLy8gMTAwIG1zLgogICBpbnQxNl90IG91
dHB1dFtrQWxsb2NhdGVkT3VwdXRTaXplU2FtcGxlc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rl
cl9pc2FjX2luY29taW5nX3BhY2tldF9mdXp6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rlcl9pc2FjX2luY29t
aW5nX3BhY2tldF9mdXp6ZXIuY2MKaW5kZXggNTY0NTE0MmEwMzRmYTIzMjZjYTE1M2UyMzkzMTk0
YmVjOTQ2MjY4NC4uOWJkNjIzNGZhMTQ5NWU3MTc1ZmMwMTIyMWUzNmVhZTI0YTYzMDNhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9m
dXp6ZXJzL2F1ZGlvX2RlY29kZXJfaXNhY19pbmNvbWluZ19wYWNrZXRfZnV6emVyLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9h
dWRpb19kZWNvZGVyX2lzYWNfaW5jb21pbmdfcGFja2V0X2Z1enplci5jYwpAQCAtMTMsNiArMTMs
OSBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGlmIChzaXplID4gMjAwMDApIHsKKyAgICByZXR1
cm47CisgIH0KICAgQXVkaW9EZWNvZGVySXNhY0Zsb2F0SW1wbCBkZWMoMTYwMDApOwogICBGdXp6
QXVkaW9EZWNvZGVySW5jb21pbmdQYWNrZXQoZGF0YSwgc2l6ZSwgJmRlYyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enpl
cnMvYXVkaW9fZGVjb2Rlcl9pc2FjZml4X2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNmaXhf
ZnV6emVyLmNjCmluZGV4IDQ0NDM5NWIxN2RmMjBjNWM5ZDkwYzkyMDhlMWQwY2YyMDUyNTUzNTQu
LjY0NzdkYzM2MWJkZGQ3NzdmNjBiODMwYmFmMjEwNTBjM2RmMDdhMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRp
b19kZWNvZGVyX2lzYWNmaXhfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNmaXhfZnV6
emVyLmNjCkBAIC0xMyw2ICsxMyw5IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogdm9pZCBGdXp6
T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUg
PiAyMDAwMCkgeworICAgIHJldHVybjsKKyAgfQogICBzdGF0aWMgY29uc3QgaW50IGtTYW1wbGVS
YXRlSHogPSAxNjAwMDsKICAgc3RhdGljIGNvbnN0IHNpemVfdCBrQWxsb2NhdGVkT3VwdXRTaXpl
U2FtcGxlcyA9IDE2MDAwIC8gMTA7ICAvLyAxMDAgbXMuCiAgIGludDE2X3Qgb3V0cHV0W2tBbGxv
Y2F0ZWRPdXB1dFNpemVTYW1wbGVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19wcm9jZXNzaW5nX2NvbmZp
Z3NfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC9mdXp6ZXJzL2F1ZGlvX3Byb2Nlc3NpbmdfY29uZmlnc19mdXp6ZXIuY2MKaW5kZXggODEx
N2M1MmFhZjJiMzE1ZjdmMDY2YjRiMTkyOTE5ODkxYTQxZDMzMy4uZGQwMDEzNjg0ZWRiY2JjZjM0
MDgxZmFmMzhhZTIxNDIxYmZiMjM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX3Byb2Nlc3NpbmdfY29uZmln
c19mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX3Byb2Nlc3NpbmdfY29uZmlnc19mdXp6ZXIuY2MKQEAgLTEz
LDEwICsxMywxMSBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19mYWN0b3J5LmgiCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wL21vY2tfYWVjX2R1bXAuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvYWVjX2R1bXBfZmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmcu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9u
dW1lcmljcy9zYWZlX21pbm1heC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIK
ICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogI2luY2x1
ZGUgInRlc3QvZnV6emVycy9hdWRpb19wcm9jZXNzaW5nX2Z1enplcl9oZWxwZXIuaCIKICNpbmNs
dWRlICJ0ZXN0L2Z1enplcnMvZnV6el9kYXRhX2hlbHBlci5oIgpAQCAtMjUsMzYgKzI2LDQ1IEBA
IG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKIAogY29uc3Qgc3RkOjpzdHJpbmcga0Zp
ZWxkVHJpYWxOYW1lc1tdID0gewotICAgICJXZWJSVEMtQWVjM1RyYW5zcGFyZW50TW9kZUtpbGxT
d2l0Y2giLAotICAgICJXZWJSVEMtQWVjM1N0YXRpb25hcnlSZW5kZXJJbXByb3ZlbWVudHNLaWxs
U3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNFbmZvcmNlRGVsYXlBZnRlclJlYWxpZ25tZW50S2ls
bFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzVXNlU2hvcnREZWxheUVzdGltYXRvcldpbmRvdyIs
Ci0gICAgIldlYlJUQy1BZWMzUmV2ZXJiQmFzZWRPblJlbmRlcktpbGxTd2l0Y2giLAotICAgICJX
ZWJSVEMtQWVjM1JldmVyYk1vZGVsbGluZ0tpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM0Zp
bHRlckFuYWx5emVyUHJlcHJvY2Vzc29yS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzVHJh
bnNwYXJlbmN5SW1wcm92ZW1lbnRzS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzU29mdFRy
YW5zcGFyZW50TW9kZUtpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM092ZXJyaWRlRWNob1Bh
dGhHYWluS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzWmVyb0V4dGVybmFsRGVsYXlIZWFk
cm9vbUtpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM0Rvd25TYW1wbGluZ0ZhY3RvcjhLaWxs
U3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNBZGFwdEVybGVPbkxvd1JlbmRlcktpbGxTd2l0Y2gi
LAorICAgICJXZWJSVEMtQWVjM0FnY0dhaW5DaGFuZ2VSZXNwb25zZUtpbGxTd2l0Y2giLAorICAg
ICJXZWJSVEMtQWVjM0JvdW5kZWROZWFyZW5kS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMz
RWFybHlTaGFkb3dGaWx0ZXJKdW1wc3RhcnRLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNF
bmFibGVBZGFwdGl2ZUVjaG9SZXZlcmJFc3RpbWF0aW9uIiwKKyAgICAiV2ViUlRDLUFlYzNFbmFi
bGVMZWdhY3lEb21pbmFudE5lYXJlbmQiLAorICAgICJXZWJSVEMtQWVjM0VuYWJsZVVuaXR5SW5p
dGlhbFJhbXB1cEdhaW4iLAorICAgICJXZWJSVEMtQWVjM0VuYWJsZVVuaXR5Tm9uWmVyb1JhbXB1
cEdhaW4iLAogICAgICJXZWJSVEMtQWVjM0VuZm9yY2VTa2V3SHlzdGVyZXNpczEiLAogICAgICJX
ZWJSVEMtQWVjM0VuZm9yY2VTa2V3SHlzdGVyZXNpczIiLAotICAgICJXZWJSVEMtQWVjM05ld1N1
cHByZXNzaW9uS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzTGluZWFyTW9kZVdpdGhEaXZl
cmdlZEZpbHRlcktpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM0ZpbHRlckFuYWx5emVyUHJl
cHJvY2Vzc29yS2lsbFN3aXRjaCIsCiAgICAgIldlYlJUQy1BZWMzTWlzYWRqdXN0bWVudEVzdGlt
YXRvcktpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM05ld0ZpbHRlclBhcmFtc0tpbGxTd2l0
Y2giLAorICAgICJXZWJSVEMtQWVjM05ld1JlbmRlckJ1ZmZlcmluZ0tpbGxTd2l0Y2giLAorICAg
ICJXZWJSVEMtQWVjM092ZXJyaWRlRWNob1BhdGhHYWluS2lsbFN3aXRjaCIsCiAgICAgIldlYlJU
Qy1BZWMzUmFwaWRBZ2NHYWluUmVjb3ZlcnlLaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNT
bG93RmlsdGVyQWRhcHRhdGlvbktpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM1Ntb290aFVw
ZGF0ZXNUYWlsRnJlcVJlc3BLaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNTdXBwcmVzc29y
TmVhcmVuZEF2ZXJhZ2luZ0tpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM0FnY0dhaW5DaGFu
Z2VSZXNwb25zZUtpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM1Jlc2V0RXJsZUF0R2FpbkNo
YW5nZXNLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNSZXZlcmJCYXNlZE9uUmVuZGVyS2ls
bFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzUmV2ZXJiTW9kZWxsaW5nS2lsbFN3aXRjaCIsCisg
ICAgIldlYlJUQy1BZWMzU2hhZG93RmlsdGVyQm9vc3RlZEp1bXBzdGFydEtpbGxTd2l0Y2giLAog
ICAgICJXZWJSVEMtQWVjM1NoYWRvd0ZpbHRlckp1bXBzdGFydEtpbGxTd2l0Y2giLAotICAgICJX
ZWJSVEMtQWVjM0Vhcmx5TGluZWFyRmlsdGVyVXNhZ2VLaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRD
LUFlYzNTaG9ydEluaXRpYWxTdGF0ZUtpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM1Nob3J0
UmV2ZXJiS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzU21vb3RoU2lnbmFsVHJhbnNpdGlv
bnNLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNTbW9vdGhVcGRhdGVzVGFpbEZyZXFSZXNw
S2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzU29mdFRyYW5zcGFyZW50TW9kZUtpbGxTd2l0
Y2giLAogICAgICJXZWJSVEMtQWVjM1N0YW5kYXJkTm9ubGluZWFyUmV2ZXJiTW9kZWxLaWxsU3dp
dGNoIiwKLSAgICAiV2ViUlRDLUFlYzNFbmFibGVBZGFwdGl2ZUVjaG9SZXZlcmJFc3RpbWF0aW9u
In07CisgICAgIldlYlJUQy1BZWMzU3RyaWN0RGl2ZXJnZW5jZUNoZWNrS2lsbFN3aXRjaCIsCisg
ICAgIldlYlJUQy1BZWMzVXNlTGVnYWN5Tm9ybWFsU3VwcHJlc3NvclR1bmluZyIsCisgICAgIldl
YlJUQy1BZWMzVXNlT2Zmc2V0QmxvY2tzIiwKKyAgICAiV2ViUlRDLUFlYzNVc2VTaG9ydERlbGF5
RXN0aW1hdG9yV2luZG93IiwKKyAgICAiV2ViUlRDLUFlYzNVc2VTdGF0aW9uYXJpdHlQcm9wZXJ0
aWVzS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzVXRpbGl6ZVNoYWRvd0ZpbHRlck91dHB1
dEtpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM1plcm9FeHRlcm5hbERlbGF5SGVhZHJvb21L
aWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNFYXJseURlbGF5RGV0ZWN0aW9uS2lsbFN3aXRj
aCIsCit9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Qcm9jZXNzaW5nPiBDcmVhdGVBcG0odGVz
dDo6RnV6ekRhdGFIZWxwZXIqIGZ1enpfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZmllbGRfdHJpYWxfc3RyaW5nKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIGZpZWxk
X3RyaWFsX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydGM6OlRhc2tRdWV1ZSogd29ya2VyX3F1ZXVlKSB7CiAgIC8vIFBhcnNlIGJvb2xlYW4gdmFs
dWVzIGZvciBvcHRpb25hbGx5IGVuYWJsaW5nIGRpZmZlcmVudAogICAvLyBjb25maWd1cmFibGUg
cHVibGljIGNvbXBvbmVudHMgb2YgQVBNLgogICBib29sIGV4cF9hZ2MgPSBmdXp6X2RhdGEtPlJl
YWRPckRlZmF1bHRWYWx1ZSh0cnVlKTsKQEAgLTc5LDEyICs4OSwxMyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9Qcm9jZXNzaW5nPiBDcmVhdGVBcG0odGVzdDo6RnV6ekRhdGFIZWxwZXIqIGZ1enpf
ZGF0YSwKIAogICAvLyBSZWFkIGFuIGludDggdmFsdWUsIGJ1dCBkb24ndCBsZXQgaXQgYmUgdG9v
IGxhcmdlIG9yIHNtYWxsLgogICBjb25zdCBmbG9hdCBnYWluX2NvbnRyb2xsZXIyX2dhaW5fZGIg
PQotICAgICAgcnRjOjpTYWZlQ2xhbXA8aW50PihmdXp6X2RhdGEtPlJlYWRPckRlZmF1bHRWYWx1
ZTxpbnQ4X3Q+KDApLCAtNTAsIDUwKTsKKyAgICAgIHJ0Yzo6U2FmZUNsYW1wPGludD4oZnV6el9k
YXRhLT5SZWFkT3JEZWZhdWx0VmFsdWU8aW50OF90PigwKSwgLTQwLCA0MCk7CiAKICAgY29uc3Rl
eHByIHNpemVfdCBrTnVtRmllbGRUcmlhbHMgPSBhcnJheXNpemUoa0ZpZWxkVHJpYWxOYW1lcyk7
CiAgIC8vIFZlcmlmeSB0aGF0IHRoZSByZWFkIGRhdGEgdHlwZSBoYXMgZW5vdWdoIGJpdHMgdG8g
ZnV6eiB0aGUgZmllbGQgdHJpYWxzLgotICB1c2luZyBGaWVsZFRyaWFsQml0bWFza1R5cGUgPSB1
aW50MzJfdDsKLSAgUlRDX0RDSEVDS19MRShrTnVtRmllbGRUcmlhbHMsIHNpemVvZihGaWVsZFRy
aWFsQml0bWFza1R5cGUpICogOCk7CisgIHVzaW5nIEZpZWxkVHJpYWxCaXRtYXNrVHlwZSA9IHVp
bnQ2NF90OworICBzdGF0aWNfYXNzZXJ0KGtOdW1GaWVsZFRyaWFscyA8PSBzaXplb2YoRmllbGRU
cmlhbEJpdG1hc2tUeXBlKSAqIDgsCisgICAgICAgICAgICAgICAgIkZpZWxkVHJpYWxCaXRtYXNr
VHlwZSBpcyBub3QgbGFyZ2UgZW5vdWdoLiIpOwogICBzdGQ6OmJpdHNldDxrTnVtRmllbGRUcmlh
bHM+IGZpZWxkX3RyaWFsX2JpdG1hc2soCiAgICAgICBmdXp6X2RhdGEtPlJlYWRPckRlZmF1bHRW
YWx1ZTxGaWVsZFRyaWFsQml0bWFza1R5cGU+KDApKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBrTnVtRmllbGRUcmlhbHM7ICsraSkgewpAQCAtMTI5LDggKzE0MCw5IEBAIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb1Byb2Nlc3Npbmc+IENyZWF0ZUFwbSh0ZXN0OjpGdXp6RGF0YUhlbHBlciogZnV6
el9kYXRhLAogICAgICAgICAgIC5TZXRFY2hvQ29udHJvbEZhY3Rvcnkoc3RkOjptb3ZlKGVjaG9f
Y29udHJvbF9mYWN0b3J5KSkKICAgICAgICAgICAuQ3JlYXRlKGNvbmZpZykpOwogCi0gIGFwbS0+
QXR0YWNoQWVjRHVtcCgKLSAgICAgIGFic2w6Om1ha2VfdW5pcXVlPHRlc3Rpbmc6Ok5pY2VNb2Nr
PHdlYnJ0Yzo6dGVzdDo6TW9ja0FlY0R1bXA+PigpKTsKKyNpZmRlZiBXRUJSVENfTElOVVgKKyAg
YXBtLT5BdHRhY2hBZWNEdW1wKEFlY0R1bXBGYWN0b3J5OjpDcmVhdGUoIi9kZXYvbnVsbCIsIC0x
LCB3b3JrZXJfcXVldWUpKTsKKyNlbmRpZgogCiAgIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nOjpD
b25maWcgYXBtX2NvbmZpZzsKICAgYXBtX2NvbmZpZy5lY2hvX2NhbmNlbGxlci5lbmFibGVkID0g
dXNlX2FlYyB8fCB1c2VfYWVjbTsKQEAgLTEzOSw3ICsxNTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9Qcm9jZXNzaW5nPiBDcmVhdGVBcG0odGVzdDo6RnV6ekRhdGFIZWxwZXIqIGZ1enpfZGF0
YSwKICAgYXBtX2NvbmZpZy5oaWdoX3Bhc3NfZmlsdGVyLmVuYWJsZWQgPSBocGY7CiAgIGFwbV9j
b25maWcuZ2Fpbl9jb250cm9sbGVyMi5lbmFibGVkID0gdXNlX2FnYzJfbGltaXRlcjsKIAotICBh
cG1fY29uZmlnLmdhaW5fY29udHJvbGxlcjIuZml4ZWRfZ2Fpbl9kYiA9IGdhaW5fY29udHJvbGxl
cjJfZ2Fpbl9kYjsKKyAgYXBtX2NvbmZpZy5nYWluX2NvbnRyb2xsZXIyLmZpeGVkX2RpZ2l0YWwu
Z2Fpbl9kYiA9IGdhaW5fY29udHJvbGxlcjJfZ2Fpbl9kYjsKIAogICBhcG0tPkFwcGx5Q29uZmln
KGFwbV9jb25maWcpOwogCkBAIC0xNTgsNyArMTcwLDEwIEBAIHZvaWQgRnV6ek9uZUlucHV0KGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CiAgIC8vIFRoaXMgc3RyaW5nIG11c3Qg
YmUgaW4gc2NvcGUgZHVyaW5nIGV4ZWN1dGlvbiwgYWNjb3JkaW5nIHRvIGRvY3VtZW50YXRpb24K
ICAgLy8gZm9yIGZpZWxkX3RyaWFsLmguIEhlbmNlIGl0J3MgY3JlYXRlZCBoZXJlIGFuZCBub3Qg
aW4gQ3JlYXRlQXBtLgogICBzdGQ6OnN0cmluZyBmaWVsZF90cmlhbF9zdHJpbmcgPSAiIjsKLSAg
YXV0byBhcG0gPSBDcmVhdGVBcG0oJmZ1enpfZGF0YSwgJmZpZWxkX3RyaWFsX3N0cmluZyk7CisK
KyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGFza1F1ZXVlPiB3b3JrZXJfcXVldWUoCisgICAgICBu
ZXcgcnRjOjpUYXNrUXVldWUoInJ0Yy1sb3ctcHJpbyIsIHJ0Yzo6VGFza1F1ZXVlOjpQcmlvcml0
eTo6TE9XKSk7CisgIGF1dG8gYXBtID0gQ3JlYXRlQXBtKCZmdXp6X2RhdGEsICZmaWVsZF90cmlh
bF9zdHJpbmcsIHdvcmtlcl9xdWV1ZS5nZXQoKSk7CiAKICAgaWYgKGFwbSkgewogICAgIEZ1enpB
dWRpb1Byb2Nlc3NpbmcoJmZ1enpfZGF0YSwgc3RkOjptb3ZlKGFwbSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1
ZGlvX3Byb2Nlc3NpbmdfZnV6emVyX2hlbHBlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19wcm9jZXNzaW5nX2Z1enplcl9o
ZWxwZXIuY2MKaW5kZXggMDczYWIxN2JkOTMxYzRiYmVjMTMzZDBlOTBhZDVjMWIzY2JhZjRjMy4u
ZGVjNGUxZjA1ZTRkNDIyYTRkZmVmODZhNjgwZmE0MzBiZTA3NmY3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlv
X3Byb2Nlc3NpbmdfZnV6emVyX2hlbHBlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fcHJvY2Vzc2luZ19mdXp6ZXJf
aGVscGVyLmNjCkBAIC0xMzAsMTAgKzEzMCw4IEBAIHZvaWQgRnV6ekF1ZGlvUHJvY2Vzc2luZyh0
ZXN0OjpGdXp6RGF0YUhlbHBlciogZnV6el9kYXRhLAogICAgICAgfQogICAgIH0KIAotICAgIC8v
IE1ha2UgY2FsbHMgdG8gc3RhdHMgZ2F0aGVyaW5nIGZ1bmN0aW9ucyB0byBjb3ZlciB0aGVzZQot
ICAgIC8vIGNvZGV3YXlzLgotICAgIHN0YXRpY19jYXN0PHZvaWQ+KGFwbS0+R2V0U3RhdGlzdGlj
cygpKTsKLSAgICBzdGF0aWNfY2FzdDx2b2lkPihhcG0tPkdldFN0YXRpc3RpY3ModHJ1ZSkpOwor
ICAgIC8vIENvdmVyIHN0YXRzIGdhdGhlcmluZyBjb2RlIHBhdGhzLgorICAgIHN0YXRpY19jYXN0
PHZvaWQ+KGFwbS0+R2V0U3RhdGlzdGljcyh0cnVlIC8qaGFzX3JlbW90ZV90cmFja3MqLykpOwog
ICAgIHN0YXRpY19jYXN0PHZvaWQ+KGFwbS0+VXBkYXRlSGlzdG9ncmFtc09uQ2FsbEVuZCgpKTsK
IAogICAgIFJUQ19EQ0hFQ0tfTkUoYXBtX3JldHVybl9jb2RlLCBBdWRpb1Byb2Nlc3Npbmc6OmtC
YWREYXRhTGVuZ3RoRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2NvbWZvcnRfbm9pc2VfZGVjb2Rlcl9mdXp6
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1
enplcnMvY29tZm9ydF9ub2lzZV9kZWNvZGVyX2Z1enplci5jYwppbmRleCA1MDE2NmQ3ZGY3Nzgy
NTAwNDFlNTJkYzU3N2UxNzRiNGE0OGI5NGNlLi43ZjQ0YWY5OWZiNTMwMzVkNDNjNzI1ZmJhOTM3
Nzk4MDBiZjkyZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvY29tZm9ydF9ub2lzZV9kZWNvZGVyX2Z1enplci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enpl
cnMvY29tZm9ydF9ub2lzZV9kZWNvZGVyX2Z1enplci5jYwpAQCAtNTAsNiArNTAsOSBAQCB2b2lk
IEZ1enpPbmVJbnB1dFRlc3QocnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gZGF0YSkgewog
fSAgLy8gbmFtZXNwYWNlIHRlc3QKIAogdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUgPiA1MDAwKSB7CisgICAgcmV0dXJuOwor
ICB9CiAgIHRlc3Q6OkZ1enpPbmVJbnB1dFRlc3QocnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhf
dD4oZGF0YSwgc2l6ZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZmxleGZlY19yZWNlaXZlcl9mdXp6ZXIu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enpl
cnMvZmxleGZlY19yZWNlaXZlcl9mdXp6ZXIuY2MKaW5kZXggZDk2YTMyOGZhMmM1OGJmZWYwYTVl
YTU0YzQzMWNkMjAyYTExNWQ0Zi4uYzUwMzRiYjkzM2VlODNiNDZhMThmYzQwYTFhOGY2OWI5NTNi
OTg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9mdXp6ZXJzL2ZsZXhmZWNfcmVjZWl2ZXJfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mbGV4ZmVjX3Jl
Y2VpdmVyX2Z1enplci5jYwpAQCAtMjUsNyArMjUsNyBAQCBjbGFzcyBEdW1teUNhbGxiYWNrIDog
cHVibGljIFJlY292ZXJlZFBhY2tldFJlY2VpdmVyIHsKIAogdm9pZCBGdXp6T25lSW5wdXQoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgY29uc3RleHByIHNpemVfdCBrTWlu
RGF0YU5lZWRlZCA9IDEyOwotICBpZiAoc2l6ZSA8IGtNaW5EYXRhTmVlZGVkKSB7CisgIGlmIChz
aXplIDwga01pbkRhdGFOZWVkZWQgfHwgc2l6ZSA+IDIwMDApIHsKICAgICByZXR1cm47CiAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC9mdXp6ZXJzL2ZsZXhmZWNfc2VuZGVyX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mbGV4ZmVjX3NlbmRlcl9mdXp6
ZXIuY2MKaW5kZXggOGU3OWY5NWNmM2ZlZTMyM2FjNTAyZTNkZDJjZDAyMzFhMWFhYTBkNC4uNDg4
MmY3ZGY1MWE1YzZiZmZmMzgyNGRjMDAwNGI3MGIzNTFkNzZjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2ZsZXhmZWNf
c2VuZGVyX2Z1enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L2Z1enplcnMvZmxleGZlY19zZW5kZXJfZnV6emVyLmNjCkBAIC0zMSwxMCAr
MzEsOSBAQCBjb25zdCBzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb25TaXplPiBrTm9SdHBIZWFkZXJF
eHRlbnNpb25TaXplczsKIAogdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsKICAgc2l6ZV90IGkgPSAwOwotICBpZiAoc2l6ZSA8IDUpIHsKKyAgaWYg
KHNpemUgPCA1IHx8IHNpemUgPiAyMDApIHsKICAgICByZXR1cm47CiAgIH0KLQogICBTaW11bGF0
ZWRDbG9jayBjbG9jaygxICsgZGF0YVtpKytdKTsKICAgRmxleGZlY1NlbmRlciBzZW5kZXIoa0Zs
ZXhmZWNQYXlsb2FkVHlwZSwga0ZsZXhmZWNTc3JjLCBrTWVkaWFTc3JjLCBrTm9NaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGtOb1J0cEhlYWRlckV4dGVuc2lvbnMsIGtOb1J0cEhlYWRlckV4
dGVuc2lvblNpemVzLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9mdXp6ZXIu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enpl
cnMvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2Z1enplci5jYwppbmRleCA5ZDViODcyNDM0YWQz
MTYzYzY1OTgwOTI0Y2Q5Yzg4NzNhYmM3ZTJlLi4yZWIzNTdiNzRhODE0MjZiZDNjNWYyNmJkODQ5
YmM4YjUxNTc1YzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2Z1enplci5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1
enplcnMvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2Z1enplci5jYwpAQCAtMjYsNiArMjYsOSBA
QCBjb25zdGV4cHIgc2l6ZV90IGtNYXhQYWNrZXRzSW5CdWZmZXIgPSA0ODsKIH0gIC8vIG5hbWVz
cGFjZQogCiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeworICBpZiAoc2l6ZSA+IDUwMDApIHsKKyAgICByZXR1cm47CisgIH0KICAgLy8gT2JqZWN0
IHVuZGVyIHRlc3QuCiAgIHN0ZDo6dW5pcXVlX3B0cjxGb3J3YXJkRXJyb3JDb3JyZWN0aW9uPiBm
ZWMgPQogICAgICAgRm9yd2FyZEVycm9yQ29ycmVjdGlvbjo6Q3JlYXRlRmxleGZlYyhrRmVjU3Ny
Yywga01lZGlhU3NyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZnJhbWVfYnVmZmVyMl9mdXp6ZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZnJhbWVf
YnVmZmVyMl9mdXp6ZXIuY2MKaW5kZXggMmQ1ODMwOTc5YzEyNGU0MDljN2Y0YWExOWEyM2VmMTU3
MTkwNTNlYS4uYTU1OTEwNDFmZjY5YjA5MWEzMWEzNWRkMzViZTMyZmE0YzA0ZDk4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6
ZXJzL2ZyYW1lX2J1ZmZlcjJfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mcmFtZV9idWZmZXIyX2Z1enplci5jYwpA
QCAtNjMsNiArNjMsOSBAQCBjbGFzcyBGdXp6eUZyYW1lT2JqZWN0IDogcHVibGljIHZpZGVvX2Nv
ZGluZzo6RW5jb2RlZEZyYW1lIHsKIH0gIC8vIG5hbWVzcGFjZQogCiB2b2lkIEZ1enpPbmVJbnB1
dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+IDEwMDAw
KSB7CisgICAgcmV0dXJuOworICB9CiAgIERhdGFSZWFkZXIgcmVhZGVyKGRhdGEsIHNpemUpOwog
ICBDbG9jayogY2xvY2sgPSBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpOwogICBWQ01KaXR0ZXJF
c3RpbWF0b3Igaml0dGVyX2VzdGltYXRvcihjbG9jaywgMCwgMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvbWRuc19w
YXJzZXJfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9mdXp6ZXJzL21kbnNfcGFyc2VyX2Z1enplci5jYwppbmRleCBjM2Y3NjVlZjc4N2I0
ODJiMDk4YzBlODgxOTgyMzQ1YzNhOWRhN2U4Li4yOTRmNjgzMjI2YzA3NjAzZjhlM2ZiODg3NTA1
Yzk3NmU3YjRmYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvbWRuc19wYXJzZXJfZnV6emVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9tZG5zX3Bh
cnNlcl9mdXp6ZXIuY2MKQEAgLTE5LDcgKzE5LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIHZv
aWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CiAgIE1l
c3NhZ2VCdWZmZXJSZWFkZXIgYnVmKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKTsKLSAgYXV0byBtZG5zX21zZyA9IGFic2w6Om1ha2VfdW5pcXVlPE1EbnNNZXNzYWdl
PigpOworICBhdXRvIG1kbnNfbXNnID0gYWJzbDo6bWFrZV91bmlxdWU8TWRuc01lc3NhZ2U+KCk7
CiAgIG1kbnNfbXNnLT5SZWFkKCZidWYpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvbmV0ZXFfcnRwX2Z1enpl
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6
emVycy9uZXRlcV9ydHBfZnV6emVyLmNjCmluZGV4IDhhYTZiZTU5ZGQwZTFjOGQ3NGNmOWJjMWQ4
NzM1MTAzZTAzYjI3OTguLjk0ZGJlZjM5ZWJlNWVkZWVjNDZhM2MyZTViMGMxNDYwOTQ2YWQ4NTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZnV6emVycy9uZXRlcV9ydHBfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9uZXRlcV9ydHBfZnV6emVyLmNjCkBA
IC0xNDYsNiArMTQ2LDkgQEAgdm9pZCBGdXp6T25lSW5wdXRUZXN0KGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7CiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogCiB2b2lkIEZ1enpPbmVJ
bnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+IDEw
MDAwMCkgeworICAgIHJldHVybjsKKyAgfQogICB0ZXN0OjpGdXp6T25lSW5wdXRUZXN0KGRhdGEs
IHNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvbmV0ZXFfc2lnbmFsX2Z1enplci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9uZXRlcV9zaWdu
YWxfZnV6emVyLmNjCmluZGV4IDE2ZTc3NjA3MmJjMmYxY2M2MmU2YzExNDkwOTFiZjc0NTQ2YWQ4
OTYuLjI1MzAyYzMxYTg4NTdhMTBhYzAyMjg1ODQzODRmOTM2OGFkYjk5YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9u
ZXRlcV9zaWduYWxfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9uZXRlcV9zaWduYWxfZnV6emVyLmNjCkBAIC0xNDAs
OCArMTQwLDkgQEAgY2xhc3MgRnV6elNpZ25hbElucHV0IDogcHVibGljIE5ldEVxSW5wdXQgewog
fSAgLy8gbmFtZXNwYWNlCiAKIHZvaWQgRnV6ek9uZUlucHV0VGVzdChjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkgewotICBpZiAoc2l6ZSA8IDEpCisgIGlmIChzaXplIDwgMSB8fCBz
aXplID4gOTAwMDApIHsKICAgICByZXR1cm47CisgIH0KIAogICBGdXp6RGF0YUhlbHBlciBmdXp6
X2RhdGEocnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4oZGF0YSwgc2l6ZSkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1
enplcnMvcGFja2V0X2J1ZmZlcl9mdXp6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvcGFja2V0X2J1ZmZlcl9mdXp6ZXIuY2MKaW5k
ZXggZDIyNjc2NGNiMjVkODJiZmY4NWZkZTQ4ZGU4Nzg5NWI5NzUwYmVhZC4uNTZkMTU1NzA3MmY0
N2Y1MjUxNmYwOTVmN2U4ZDJiMDZlZmUxYjRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3BhY2tldF9idWZmZXJfZnV6
emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZnV6emVycy9wYWNrZXRfYnVmZmVyX2Z1enplci5jYwpAQCAtMjEsNiArMjEsOSBAQCBjbGFz
cyBOdWxsQ2FsbGJhY2sgOiBwdWJsaWMgdmlkZW9fY29kaW5nOjpPblJlY2VpdmVkRnJhbWVDYWxs
YmFjayB7CiB9ICAvLyBuYW1lc3BhY2UKIAogdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUgPiAyMDAwMDApIHsKKyAgICByZXR1
cm47CisgIH0KICAgVkNNUGFja2V0IHBhY2tldDsKICAgTnVsbENhbGxiYWNrIGNhbGxiYWNrOwog
ICBTaW11bGF0ZWRDbG9jayBjbG9jaygwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9ydGNwX3JlY2VpdmVyX2Z1enpl
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6
emVycy9ydGNwX3JlY2VpdmVyX2Z1enplci5jYwppbmRleCBjZDc2M2QwZjYwNTg4MDQxNjMwMmI1
MGEyYmEzMjI0ZGQyMTUyNGU5Li43ZjhjYWJhZmQ2OGVhNDhiZWI5YTRiODdlOTU3MGNjNGUzMDNk
ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Z1enplcnMvcnRjcF9yZWNlaXZlcl9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0Y3BfcmVjZWl2ZXJf
ZnV6emVyLmNjCkBAIC0xNSw2ICsxNSw4IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFj
ZSB7CiAKK2NvbnN0ZXhwciBpbnQga1J0Y3BJbnRlcnZhbE1zID0gMTAwMDsKKwogY2xhc3MgTnVs
bE1vZHVsZVJ0cFJ0Y3AgOiBwdWJsaWMgUlRDUFJlY2VpdmVyOjpNb2R1bGVSdHBSdGNwIHsKICBw
dWJsaWM6CiAgIHZvaWQgU2V0VG1tYm4oc3RkOjp2ZWN0b3I8cnRjcDo6VG1tYkl0ZW0+KSBvdmVy
cmlkZSB7fQpAQCAtMzAsNyArMzIsNyBAQCB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewogICBTaW11bGF0ZWRDbG9jayBjbG9jaygxMjM0KTsKIAog
ICBSVENQUmVjZWl2ZXIgcmVjZWl2ZXIoJmNsb2NrLCBmYWxzZSwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsICZydHBf
cnRjcF9tb2R1bGUpOworICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwga1J0Y3BJbnRl
cnZhbE1zLCAmcnRwX3J0Y3BfbW9kdWxlKTsKIAogICByZWNlaXZlci5JbmNvbWluZ1BhY2tldChk
YXRhLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9ydHBfZnJhbWVfcmVmZXJlbmNlX2ZpbmRlcl9mdXp6
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1
enplcnMvcnRwX2ZyYW1lX3JlZmVyZW5jZV9maW5kZXJfZnV6emVyLmNjCmluZGV4IGZkOTg4OTJh
MDQ4MGZkOWNmMGViNDBlZmJlOGE0ODgxNzRkMjFjMGQuLjU3ZDdhOTYyM2EwN2EwZDEyODg3ZWU3
NjE4NDMzZTJhOTRlMTc4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9ydHBfZnJhbWVfcmVmZXJlbmNlX2ZpbmRlcl9m
dXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC9mdXp6ZXJzL3J0cF9mcmFtZV9yZWZlcmVuY2VfZmluZGVyX2Z1enplci5jYwpAQCAtMTAx
LDYgKzEwMSw5IEBAIGNsYXNzIEZ1enp5UGFja2V0QnVmZmVyIDogcHVibGljIHZpZGVvX2NvZGlu
Zzo6UGFja2V0QnVmZmVyIHsKIH0gIC8vIG5hbWVzcGFjZQogCiB2b2lkIEZ1enpPbmVJbnB1dChj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+IDIwMDAwKSB7
CisgICAgcmV0dXJuOworICB9CiAgIERhdGFSZWFkZXIgcmVhZGVyKGRhdGEsIHNpemUpOwogICBy
dGM6OnNjb3BlZF9yZWZwdHI8RnV6enlQYWNrZXRCdWZmZXI+IHBiKG5ldyBGdXp6eVBhY2tldEJ1
ZmZlcigmcmVhZGVyKSk7CiAgIE51bGxDYWxsYmFjayBjYjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9ydHBfcGFja2V0
X2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZnV6emVycy9ydHBfcGFja2V0X2Z1enplci5jYwppbmRleCA4YmY4ZTc0YWJhOTRjZjczNDVh
NWRmZjFlYzE2MGJhNTllYmNjNGZjLi5mNzc0YzBjYjhiMDE4NDM0MzYwMWE4ZjJmZmJjNjIzMDkw
Mjc5NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L2Z1enplcnMvcnRwX3BhY2tldF9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0cF9wYWNrZXRfZnV6
emVyLmNjCkBAIC0xMjEsNiArMTIxLDExIEBAIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CiAgICAgICAgIHBhY2tldC5HZXRFeHRlbnNpb248UnRw
R2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbj4oJmRlc2NyaXB0b3IpOwogICAgICAgICBi
cmVhazsKICAgICAgIH0KKyAgICAgIGNhc2Uga1J0cEV4dGVuc2lvbkNvbG9yU3BhY2U6IHsKKyAg
ICAgICAgQ29sb3JTcGFjZSBjb2xvcl9zcGFjZTsKKyAgICAgICAgcGFja2V0LkdldEV4dGVuc2lv
bjxDb2xvclNwYWNlRXh0ZW5zaW9uPigmY29sb3Jfc3BhY2UpOworICAgICAgICBicmVhazsKKyAg
ICAgIH0KICAgICB9CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9zZHBfcGFyc2VyX2Z1enplci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9zZHBf
cGFyc2VyX2Z1enplci5jYwppbmRleCBlNDcxNTZjNTcxZTVjZDkwMTUzMGMwZGI2ZDhkODdmNTEw
YTc4NzE0Li43NjNkYmM1OTRhY2I3NDEyNWJjMzI4ZWNjZTg4MWFiOWFmZTZlMzY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enpl
cnMvc2RwX3BhcnNlcl9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3NkcF9wYXJzZXJfZnV6emVyLmNjCkBAIC0xNSw2
ICsxNSw5IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogdm9pZCBGdXp6T25lSW5wdXQoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUgPiAxNjM4NCkgeworICAg
IHJldHVybjsKKyAgfQogICBzdGQ6OnN0cmluZyBtZXNzYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEpLCBzaXplKTsKICAgd2VicnRjOjpTZHBQYXJzZUVycm9yIGVycm9yOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2Z1enplcnMvdWxwZmVjX3JlY2VpdmVyX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy91bHBmZWNfcmVjZWl2ZXJfZnV6
emVyLmNjCmluZGV4IDZiNzRmM2FjOTVkNGQzZmYzYWQyOTA3NGExMmY2NzQxMGMxNzQyOTguLjdj
YjBmYzYxYjVkMmYyMGJjZDVjNDJiNzA5ZDFjOGM3YmQ1ZDJjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy91bHBmZWNf
cmVjZWl2ZXJfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvZnV6emVycy91bHBmZWNfcmVjZWl2ZXJfZnV6emVyLmNjCkBAIC0yNSw3
ICsyNSw3IEBAIGNsYXNzIER1bW15Q2FsbGJhY2sgOiBwdWJsaWMgUmVjb3ZlcmVkUGFja2V0UmVj
ZWl2ZXIgewogCiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkgewogICBjb25zdGV4cHIgc2l6ZV90IGtNaW5EYXRhTmVlZGVkID0gMTI7Ci0gIGlmIChz
aXplIDwga01pbkRhdGFOZWVkZWQpIHsKKyAgaWYgKHNpemUgPCBrTWluRGF0YU5lZWRlZCB8fCBz
aXplID4gMjAwMCkgewogICAgIHJldHVybjsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lvcy9jb3ZlcmFnZV91dGlsX2lv
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9pb3Mv
Y292ZXJhZ2VfdXRpbF9pb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTdiNjlkY2E4MDExYjFkMjE2ZTNjYmI4
ZGRlODZkODc3OWZhYmJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9pb3MvY292ZXJhZ2VfdXRpbF9pb3MuaApAQCAtMCww
ICsxLDI0IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFRFU1RfSU9TX0NPVkVSQUdF
X1VUSUxfSU9TX0hfCisjZGVmaW5lIFRFU1RfSU9TX0NPVkVSQUdFX1VUSUxfSU9TX0hfCisKK25h
bWVzcGFjZSBydGMgeworbmFtZXNwYWNlIHRlc3QgeworCisvLyBJbiBkZWJ1ZyBidWlsZHMsIGlm
IElPU19FTkFCTEVfQ09WRVJBR0UgaXMgZGVmaW5lZCwgc2V0cyB0aGUgZmlsZW5hbWUgb2YgdGhl
CisvLyBjb3ZlcmFnZSBmaWxlLiBPdGhlcndpc2UsIGl0IGRvZXMgbm90aGluZy4KK3ZvaWQgQ29u
ZmlndXJlQ292ZXJhZ2VSZXBvcnRQYXRoKCk7CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAv
LyBuYW1lc3BhY2UgcnRjCisKKyNlbmRpZiAgLy8gVEVTVF9JT1NfQ09WRVJBR0VfVVRJTF9JT1Nf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvaW9zL2NvdmVyYWdlX3V0aWxfaW9zLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9pb3MvY292ZXJhZ2VfdXRpbF9pb3MubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzIxYTE2ZGVmMjQ3NDZhOGZmZDBmZDIyZDlhYzcyYjJkMjQ4NGFlMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvaW9z
L2NvdmVyYWdlX3V0aWxfaW9zLm1tCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCisjaWZkZWYgV0VCUlRDX0lP
U19FTkFCTEVfQ09WRVJBR0UKK2V4dGVybiAiQyIgdm9pZCBfX2xsdm1fcHJvZmlsZV9zZXRfZmls
ZW5hbWUoY29uc3QgY2hhciogbmFtZSk7CisjZW5kaWYKKworbmFtZXNwYWNlIHJ0YyB7CituYW1l
c3BhY2UgdGVzdCB7CisKK3ZvaWQgQ29uZmlndXJlQ292ZXJhZ2VSZXBvcnRQYXRoKCkgeworI2lm
ZGVmIFdFQlJUQ19JT1NfRU5BQkxFX0NPVkVSQUdFCisgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qg
b25jZV90b2tlbjsKKyAgZGlzcGF0Y2hfb25jZSgmb25jZV90b2tlbiwgXnsKKyAgICAvLyBXcml0
ZXMgdGhlIHByb2ZyYXcgZmlsZSB0byB0aGUgRG9jdW1lbnRzIGRpcmVjdG9yeSwgd2hlcmUgdGhl
IGFwcCBoYXMKKyAgICAvLyB3cml0ZSByaWdodHMuCisgICAgTlNBcnJheSogcGF0aHMgPQorICAg
ICAgICBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0RvY3VtZW50RGlyZWN0
b3J5LCBOU1VzZXJEb21haW5NYXNrLCBZRVMpOworICAgIE5TU3RyaW5nKiBkb2N1bWVudHNfZGly
ZWN0b3J5ID0gW3BhdGhzIGZpcnN0T2JqZWN0XTsKKyAgICBOU1N0cmluZyogZmlsZV9uYW1lID0g
W2RvY3VtZW50c19kaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiY292
ZXJhZ2UucHJvZnJhdyJdOworCisgICAgLy8gRm9yIGRvY3VtZW50YXRpb24sIHNlZToKKyAgICAv
LyBodHRwOi8vY2xhbmcubGx2bS5vcmcvZG9jcy9Tb3VyY2VCYXNlZENvZGVDb3ZlcmFnZS5odG1s
CisgICAgX19sbHZtX3Byb2ZpbGVfc2V0X2ZpbGVuYW1lKFtmaWxlX25hbWUgY1N0cmluZ1VzaW5n
RW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKworICAgIC8vIFByaW50IHRoZSBwYXRo
IGZvciBlYXNpZXIgcmV0cmlldmFsLgorICAgIE5TTG9nKEAiQ292ZXJhZ2UgZGF0YSBhdCAlQC4i
LCBmaWxlX25hbWUpOworICB9KTsKKyNlbmRpZiAgLy8gaWZkZWYgV0VCUlRDX0lPU19FTkFCTEVf
Q09WRVJBR0UKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSBydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvaW9zL3Rlc3Rfc3VwcG9ydC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvaW9zL3Rlc3Rfc3VwcG9ydC5tbQppbmRleCBmZWM1OTc4ODU0OTdkNmJh
Mjk5NmNkZWJiNmJkOTZiZDIyMGNmMDZiLi44NjAwNTk3NGZiMjIxNmM2MzY1Y2M1MGMxNjdiMzk2
OGE4MjQ0ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L2lvcy90ZXN0X3N1cHBvcnQubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9pb3MvdGVzdF9zdXBwb3J0Lm1tCkBAIC0xMCw2
ICsxMCw3IEBACiAKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CiAKKyNpbmNsdWRlICJ0ZXN0L2lv
cy9jb3ZlcmFnZV91dGlsX2lvcy5oIgogI2luY2x1ZGUgInRlc3QvaW9zL3Rlc3Rfc3VwcG9ydC5o
IgogI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvcGVyZl90ZXN0LmgiCiAKQEAgLTcwLDYgKzcx
LDggQEAgLSAoQk9PTClhcHBsaWNhdGlvbjooVUlBcHBsaWNhdGlvbiAqKWFwcGxpY2F0aW9uCiB9
CiAKIC0gKHZvaWQpcnVuVGVzdHMgeworICBydGM6OnRlc3Q6OkNvbmZpZ3VyZUNvdmVyYWdlUmVw
b3J0UGF0aCgpOworCiAgIGludCBleGl0U3RhdHVzID0gZ190ZXN0X3N1aXRlKCk7CiAKICAgaWYg
KGdfc2F2ZV9jaGFydGpzb25fcmVzdWx0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J0cF9maWxlX3JlYWRlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydHBfZmlsZV9yZWFkZXIu
aAppbmRleCA0OTEzNTIyYmE3MDFhNmFkODEwMDQ3N2I1Y2UzY2U5NTliYzgwYmYzLi44MDUwNDRm
NTJmOWY5YzczOTljODI0OTEwZjE5ZDEyMTEzZWZmOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J0cF9maWxlX3JlYWRlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnRwX2Zp
bGVfcmVhZGVyLmgKQEAgLTEzLDggKzEzLDYgQEAKICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8
c3RyaW5nPgogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5j
bHVkZSkKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnRwX2Zp
bGVfd3JpdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L3J0cF9maWxlX3dyaXRlci5oCmluZGV4IDQ0OTZjYTRhMjVmZGMwODY3ZjE3N2E0OWJiN2E1
ZTAyNTc5OTBiZTYuLjVlNTYwZDczNzU2MGE0NzcyYmUzOWQ5MzIxNWRhMTkyNWQxYzA1NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
cnRwX2ZpbGVfd3JpdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9ydHBfZmlsZV93cml0ZXIuaApAQCAtMTIsNyArMTIsNiBAQAogCiAjaW5j
bHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVp
bGQvaW5jbHVkZSkKICNpbmNsdWRlICJ0ZXN0L3J0cF9maWxlX3JlYWRlci5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvcnRwX3J0Y3Bfb2JzZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnRwX3J0Y3Bfb2JzZXJ2ZXIuaAppbmRleCBjOTc0
NDEwOTU1Mzc0MmU3ZmQ5NjUxM2NjZmFhM2JlYjBhYjRiN2UyLi5kNGFhZGZlMGRhZGFmMGY5M2Zl
MzA4NmUzOTg1NzQ2YmVhYTQ2ZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J0cF9ydGNwX29ic2VydmVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydHBfcnRjcF9vYnNlcnZl
ci5oCkBAIC03MSw5ICs3MSw3IEBAIGNsYXNzIFJ0cFJ0Y3BPYnNlcnZlciB7CiAgcHJvdGVjdGVk
OgogICBSdHBSdGNwT2JzZXJ2ZXIoKSA6IFJ0cFJ0Y3BPYnNlcnZlcigwKSB7fQogICBleHBsaWNp
dCBSdHBSdGNwT2JzZXJ2ZXIoaW50IGV2ZW50X3RpbWVvdXRfbXMpCi0gICAgICA6IG9ic2VydmF0
aW9uX2NvbXBsZXRlXyhmYWxzZSwgZmFsc2UpLAotICAgICAgICBwYXJzZXJfKFJ0cEhlYWRlclBh
cnNlcjo6Q3JlYXRlKCkpLAotICAgICAgICB0aW1lb3V0X21zXyhldmVudF90aW1lb3V0X21zKSB7
CisgICAgICA6IHBhcnNlcl8oUnRwSGVhZGVyUGFyc2VyOjpDcmVhdGUoKSksIHRpbWVvdXRfbXNf
KGV2ZW50X3RpbWVvdXRfbXMpIHsKICAgICBwYXJzZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVu
c2lvbihrUnRwRXh0ZW5zaW9uVHJhbnNtaXNzaW9uVGltZU9mZnNldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrVE9mZnNldEV4dGVuc2lvbklkKTsKICAgICBwYXJz
ZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihrUnRwRXh0ZW5zaW9uQWJzb2x1dGVTZW5k
VGltZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3QvcnVuX2xvb3AuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L3J1bl9sb29wLmNjCmluZGV4IGRjMmVjMThlZWE3OWY0ZDQ2Y2U3ZWMzOWNi
NGZiODBjZWMyNDAwOGUuLjA1MjY2MmE0NjRlOTQyMjlkNDYyMWRiNzRjZTYwNTU1YjNiZjkyYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvcnVuX2xvb3AuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9ydW5fbG9vcC5jYwpAQCAtMTQsNyArMTQsNyBAQAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiAKLXZvaWQgUHJlc3NFbnRlclRvQ29udGludWUoKSB7Cit2
b2lkIFByZXNzRW50ZXJUb0NvbnRpbnVlKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGlu
ZyYpIHsKICAgcHV0cygiPj4gUHJlc3MgRU5URVIgdG8gY29udGludWUuLi4iKTsKICAgd2hpbGUg
KGdldGMoc3RkaW4pICE9ICdcbicgJiYgIWZlb2Yoc3RkaW4pKQogICAgIDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnVuX2xvb3Au
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnVuX2xv
b3AuaAppbmRleCA5MDA2M2RjM2U4NzNkN2ZmMjQ5ODEyZmM1MGJlMDc5ZjhjZmZhNzMxLi4zNmJm
YTA2Njk3MDhhYmU4YWJiYmUwMzFlNzZjYTE3MGI5MmY4YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J1bl9sb29wLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydW5fbG9vcC5o
CkBAIC0xMCwxMSArMTAsMTMgQEAKICNpZm5kZWYgVEVTVF9SVU5fTE9PUF9IXwogI2RlZmluZSBU
RVNUX1JVTl9MT09QX0hfCiAKKyNpbmNsdWRlICJ0ZXN0L3NpbmdsZV90aHJlYWRlZF90YXNrX3F1
ZXVlLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewogCiAvLyBCbG9j
a3MgdW50aWwgdGhlIHVzZXIgcHJlc3NlcyBlbnRlci4KLXZvaWQgUHJlc3NFbnRlclRvQ29udGlu
dWUoKTsKK3ZvaWQgUHJlc3NFbnRlclRvQ29udGludWUoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVG
b3JUZXN0aW5nICZ0YXNrX3F1ZXVlKTsKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL0JVSUxELmduCmluZGV4IDM3MDNh
YTg0ZTcyZTZjNWNiNTYzOTYwN2EzYzYzM2MzMDhkZjg2MTMuLmU5YmRhNTExMmNiOGFjOWJkNjJm
ODBiNjgyNDJiOTdkYzIwMTk4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vQlVJTEQuZ24KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9CVUlMRC5nbgpA
QCAtMzcsMTQgKzM3LDE1IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uLzp0
ZXN0X2NvbW1vbiIsCiAgICAgICAiLi4vOnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLi4vOnZpZGVv
X3Rlc3RfY29tbW9uIiwKLSAgICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi8u
Li9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgICAiLi4vLi4vYXBpOnRy
YW5zcG9ydF9hcGkiLAogICAgICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRp
b19kZWNvZGVyX2ZhY3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRp
bl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLAorICAgICAgIi4uLy4uL2FwaS90ZXN0L3ZpZGVvOmZ1
bmN0aW9uX3ZpZGVvX2ZhY3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS91bml0czpkYXRhX3JhdGUi
LAogICAgICAgIi4uLy4uL2FwaS91bml0czp0aW1lX2RlbHRhIiwKICAgICAgICIuLi8uLi9hcGkv
dW5pdHM6dGltZXN0YW1wIiwKKyAgICAgICIuLi8uLi9hcGkvdmlkZW86YnVpbHRpbl92aWRlb19i
aXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9f
ZnJhbWUiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKICAgICAg
ICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLApAQCAtODIsNiArODMs
NyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRp
bHMiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKKyAgICAgICIuLi8u
Li9ydGNfYmFzZTpzYWZlX21pbm1heCIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6c2VxdWVuY2Vk
X3Rhc2tfY2hlY2tlciIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAogICAg
ICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCkBAIC05NCw2ICs5Niw5IEBAIGlmIChydGNfaW5j
bHVkZV90ZXN0cykgewogICAgIH0gZWxzZSBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgICAg
ZGVwcyArPSBbICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzpvYmpjX2NvZGVjX2ZhY3Rvcnlf
aGVscGVyIiBdCiAgICAgfQorICAgIGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CisgICAgICBk
ZXBzICs9IFsgIi4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmFuYV9jb25maWdfcHJvdG8iIF0K
KyAgICB9CiAgICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CiAgICAg
ICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRf
Y29uc3RydWN0cyIgXQogICAgIH0KQEAgLTExMSwxMSArMTE2LDEwIEBAIGlmIChydGNfaW5jbHVk
ZV90ZXN0cykgewogICAgICAgIi4uLy4uL2xvZ2dpbmc6bW9ja3MiLAogICAgICAgIi4uLy4uL3J0
Y19iYXNlOmNoZWNrcyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAotICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIu
Li8uLi9zeXN0ZW1fd3JhcHBlcnMiLAorICAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVs
ZF90cmlhbCIsCiAgICAgICAiLi4vLi4vdGVzdDpmaWVsZF90cmlhbCIsCiAgICAgICAiLi4vLi4v
dGVzdDp0ZXN0X3N1cHBvcnQiLAotICAgICAgIi8vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFs
IiwKICAgICAgICIvL3Rlc3RpbmcvZ21vY2siLAogICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL21lbW9yeSIsCiAgICAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9hdWRpb19zdHJlYW0uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2F1
ZGlvX3N0cmVhbS5jYwppbmRleCBiZDMxN2Q5N2Q4YjdjNDg4MTlhMGRmZTY1YTFjYjg2ODc4OGM2
ZTFlLi44MzU5YmQwOWVjNThlY2UxOWVmOWJjZmQyNmIwZGY1YmNhMDg3NDMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlv
L2F1ZGlvX3N0cmVhbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2F1ZGlvX3N0cmVhbS5jYwpAQCAtOSwxMCArOSw1OCBAQAog
ICovCiAjaW5jbHVkZSAidGVzdC9zY2VuYXJpby9hdWRpb19zdHJlYW0uaCIKIAorI2luY2x1ZGUg
InJ0Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuaCIKICNpbmNsdWRlICJ0ZXN0L2Nh
bGxfdGVzdC5oIgogCisjaWYgV0VCUlRDX0VOQUJMRV9QUk9UT0JVRgorUlRDX1BVU0hfSUdOT1JJ
TkdfV1VOREVGKCkKKyNpZmRlZiBXRUJSVENfQU5EUk9JRF9QTEFURk9STV9CVUlMRAorI2luY2x1
ZGUgImV4dGVybmFsL3dlYnJ0Yy93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0
d29ya19hZGFwdG9yL2NvbmZpZy5wYi5oIgorI2Vsc2UKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY29uZmlnLnBiLmgiCisjZW5kaWYKK1JUQ19Q
T1BfSUdOT1JJTkdfV1VOREVGKCkKKyNlbmRpZgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVz
cGFjZSB0ZXN0IHsKK25hbWVzcGFjZSB7CithYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gQ3Jl
YXRlQWRhcHRhdGlvblN0cmluZygKKyAgICBBdWRpb1N0cmVhbUNvbmZpZzo6TmV0d29ya0FkYXB0
YXRpb24gY29uZmlnKSB7CisjaWYgV0VCUlRDX0VOQUJMRV9QUk9UT0JVRgorCisgIGF1ZGlvX25l
dHdvcmtfYWRhcHRvcjo6Y29uZmlnOjpDb250cm9sbGVyTWFuYWdlciBjb250X2NvbmY7CisgIGlm
IChjb25maWcuZnJhbWUubWF4X3JhdGVfZm9yXzYwX21zLklzRmluaXRlKCkpIHsKKyAgICBhdXRv
IGNvbnRyb2xsZXIgPQorICAgICAgICBjb250X2NvbmYuYWRkX2NvbnRyb2xsZXJzKCktPm11dGFi
bGVfZnJhbWVfbGVuZ3RoX2NvbnRyb2xsZXIoKTsKKyAgICBjb250cm9sbGVyLT5zZXRfZmxfZGVj
cmVhc2luZ19wYWNrZXRfbG9zc19mcmFjdGlvbigKKyAgICAgICAgY29uZmlnLmZyYW1lLm1pbl9w
YWNrZXRfbG9zc19mb3JfZGVjcmVhc2UpOworICAgIGNvbnRyb2xsZXItPnNldF9mbF9pbmNyZWFz
aW5nX3BhY2tldF9sb3NzX2ZyYWN0aW9uKAorICAgICAgICBjb25maWcuZnJhbWUubWF4X3BhY2tl
dF9sb3NzX2Zvcl9pbmNyZWFzZSk7CisKKyAgICBjb250cm9sbGVyLT5zZXRfZmxfMjBtc190b182
MG1zX2JhbmR3aWR0aF9icHMoCisgICAgICAgIGNvbmZpZy5mcmFtZS5taW5fcmF0ZV9mb3JfMjBf
bXMuYnBzPGludDMyX3Q+KCkpOworICAgIGNvbnRyb2xsZXItPnNldF9mbF82MG1zX3RvXzIwbXNf
YmFuZHdpZHRoX2JwcygKKyAgICAgICAgY29uZmlnLmZyYW1lLm1heF9yYXRlX2Zvcl82MF9tcy5i
cHM8aW50MzJfdD4oKSk7CisKKyAgICBpZiAoY29uZmlnLmZyYW1lLm1heF9yYXRlX2Zvcl8xMjBf
bXMuSXNGaW5pdGUoKSkgeworICAgICAgY29udHJvbGxlci0+c2V0X2ZsXzYwbXNfdG9fMTIwbXNf
YmFuZHdpZHRoX2JwcygKKyAgICAgICAgICBjb25maWcuZnJhbWUubWluX3JhdGVfZm9yXzYwX21z
LmJwczxpbnQzMl90PigpKTsKKyAgICAgIGNvbnRyb2xsZXItPnNldF9mbF8xMjBtc190b182MG1z
X2JhbmR3aWR0aF9icHMoCisgICAgICAgICAgY29uZmlnLmZyYW1lLm1heF9yYXRlX2Zvcl8xMjBf
bXMuYnBzPGludDMyX3Q+KCkpOworICAgIH0KKyAgfQorICBjb250X2NvbmYuYWRkX2NvbnRyb2xs
ZXJzKCktPm11dGFibGVfYml0cmF0ZV9jb250cm9sbGVyKCk7CisgIHN0ZDo6c3RyaW5nIGNvbmZp
Z19zdHJpbmcgPSBjb250X2NvbmYuU2VyaWFsaXplQXNTdHJpbmcoKTsKKyAgcmV0dXJuIGNvbmZp
Z19zdHJpbmc7CisjZWxzZQorICBSVENfTE9HKExTX0VSUk9SKSA8PCAiYXVkaW9fbmV0d29ya19h
ZGFwdGF0aW9uIGlzIGVuYWJsZWQiCisgICAgICAgICAgICAgICAgICAgICAgICIgYnV0IFdFQlJU
Q19FTkFCTEVfUFJPVE9CVUYgaXMgZmFsc2UuXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJJ
Z25vcmluZyBzZXR0aW5ncy4iOworICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyNlbmRpZiAgLy8g
V0VCUlRDX0VOQUJMRV9QUk9UT0JVRgorfQorfSAgLy8gbmFtZXNwYWNlCiAKIFNlbmRBdWRpb1N0
cmVhbTo6U2VuZEF1ZGlvU3RyZWFtKAogICAgIENhbGxDbGllbnQqIHNlbmRlciwKQEAgLTIwLDcg
KzY4LDggQEAgU2VuZEF1ZGlvU3RyZWFtOjpTZW5kQXVkaW9TdHJlYW0oCiAgICAgcnRjOjpzY29w
ZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGVuY29kZXJfZmFjdG9yeSwKICAgICBUcmFu
c3BvcnQqIHNlbmRfdHJhbnNwb3J0KQogICAgIDogc2VuZGVyXyhzZW5kZXIpLCBjb25maWdfKGNv
bmZpZykgewotICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBzZW5kX2NvbmZpZyhzZW5kX3RyYW5z
cG9ydCk7CisgIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIHNlbmRfY29uZmlnKHNlbmRfdHJhbnNw
b3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5z
cG9ydD0qL251bGxwdHIpOwogICBzc3JjXyA9IHNlbmRlci0+R2V0TmV4dEF1ZGlvU3NyYygpOwog
ICBzZW5kX2NvbmZpZy5ydHAuc3NyYyA9IHNzcmNfOwogICBTZHBBdWRpb0Zvcm1hdDo6UGFyYW1l
dGVycyBzZHBfcGFyYW1zOwpAQCAtNDIsNiArOTEsMTAgQEAgU2VuZEF1ZGlvU3RyZWFtOjpTZW5k
QXVkaW9TdHJlYW0oCiAgICAgc2VuZF9jb25maWcuc2VuZF9jb2RlY19zcGVjLT50YXJnZXRfYml0
cmF0ZV9icHMgPQogICAgICAgICBjb25maWcuZW5jb2Rlci5maXhlZF9yYXRlLT5icHMoKTsKIAor
ICBpZiAoY29uZmlnLm5ldHdvcmtfYWRhcHRhdGlvbikgeworICAgIHNlbmRfY29uZmlnLmF1ZGlv
X25ldHdvcmtfYWRhcHRvcl9jb25maWcgPQorICAgICAgICBDcmVhdGVBZGFwdGF0aW9uU3RyaW5n
KGNvbmZpZy5hZGFwdCk7CisgIH0KICAgaWYgKGNvbmZpZy5lbmNvZGVyLmFsbG9jYXRlX2JpdHJh
dGUgfHwKICAgICAgIGNvbmZpZy5zdHJlYW0uaW5fYmFuZHdpZHRoX2VzdGltYXRpb24pIHsKICAg
ICBEYXRhUmF0ZSBtaW5fcmF0ZSA9IERhdGFSYXRlOjpJbmZpbml0eSgpOwpAQCAtNTQsMTEgKzEw
NywyMCBAQCBTZW5kQXVkaW9TdHJlYW06OlNlbmRBdWRpb1N0cmVhbSgKICAgICAgIG1heF9yYXRl
ID0gKmNvbmZpZy5lbmNvZGVyLm1heF9yYXRlOwogICAgIH0KICAgICBpZiAoZmllbGRfdHJpYWw6
OklzRW5hYmxlZCgiV2ViUlRDLVNlbmRTaWRlQndlLVdpdGhPdmVyaGVhZCIpKSB7Ci0gICAgICBU
aW1lRGVsdGEgZnJhbWVfbGVuZ3RoID0gY29uZmlnLmVuY29kZXIuaW5pdGlhbF9mcmFtZV9sZW5n
dGg7CisgICAgICBUaW1lRGVsdGEgbWluX2ZyYW1lX2xlbmd0aCA9IFRpbWVEZWx0YTo6bXMoMjAp
OworICAgICAgLy8gTm90ZSwgZGVwZW5kcyBvbiBXRUJSVENfT1BVU19TVVBQT1JUXzEyME1TX1BU
SU1FIGJlaW5nIHNldCwgd2hpY2ggaXMKKyAgICAgIC8vIHRoZSBkZWZhdWx0LgorICAgICAgVGlt
ZURlbHRhIG1heF9mcmFtZV9sZW5ndGggPSBUaW1lRGVsdGE6Om1zKDEyMCk7CiAgICAgICBEYXRh
U2l6ZSBydHBfb3ZlcmhlYWQgPSBEYXRhU2l6ZTo6Ynl0ZXMoMTIpOwotICAgICAgRGF0YVNpemUg
dG90YWxfb3ZlcmhlYWQgPSBjb25maWcuc3RyZWFtLnBhY2tldF9vdmVyaGVhZCArIHJ0cF9vdmVy
aGVhZDsKLSAgICAgIG1pbl9yYXRlICs9IHRvdGFsX292ZXJoZWFkIC8gZnJhbWVfbGVuZ3RoOwot
ICAgICAgbWF4X3JhdGUgKz0gdG90YWxfb3ZlcmhlYWQgLyBmcmFtZV9sZW5ndGg7CisgICAgICAv
LyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIHJ0cCBleHRlbnNpb24gb3ZlcmhlYWQg
YW5kIHdpbGwgbm90CisgICAgICAvLyBmb2xsb3cgdXBkYXRlcyBpbiB0aGUgdHJhbnNwb3J0IG92
ZXJoZWFkIG92ZXIgdGltZS4KKyAgICAgIERhdGFTaXplIHRvdGFsX292ZXJoZWFkID0KKyAgICAg
ICAgICBzZW5kZXJfLT50cmFuc3BvcnRfLnBhY2tldF9vdmVyaGVhZCgpICsgcnRwX292ZXJoZWFk
OworCisgICAgICBtaW5fcmF0ZSArPSB0b3RhbF9vdmVyaGVhZCAvIG1heF9mcmFtZV9sZW5ndGg7
CisgICAgICAvLyBJbiBXZWJSVENWb2ljZUVuZ2luZSB0aGUgbWF4IHJhdGUgaXMgYWxzbyBiYXNl
ZCBvbiB0aGUgbWF4IGZyYW1lCisgICAgICAvLyBsZW5ndGguCisgICAgICBtYXhfcmF0ZSArPSB0
b3RhbF9vdmVyaGVhZCAvIG1pbl9mcmFtZV9sZW5ndGg7CiAgICAgfQogICAgIHNlbmRfY29uZmln
Lm1pbl9iaXRyYXRlX2JwcyA9IG1pbl9yYXRlLmJwcygpOwogICAgIHNlbmRfY29uZmlnLm1heF9i
aXRyYXRlX2JwcyA9IG1heF9yYXRlLmJwcygpOwpAQCAtNzAsMTMgKzEzMiwxNyBAQCBTZW5kQXVk
aW9TdHJlYW06OlNlbmRBdWRpb1N0cmVhbSgKICAgICAgICAge1J0cEV4dGVuc2lvbjo6a1RyYW5z
cG9ydFNlcXVlbmNlTnVtYmVyVXJpLCA4fX07CiAgIH0KIAotICBpZiAoY29uZmlnLnN0cmVhbS5y
YXRlX2FsbG9jYXRpb25fcHJpb3JpdHkpIHsKKyAgaWYgKGNvbmZpZy5lbmNvZGVyLnByaW9yaXR5
X3JhdGUpIHsKICAgICBzZW5kX2NvbmZpZy50cmFja19pZCA9IHNlbmRlci0+R2V0TmV4dFByaW9y
aXR5SWQoKTsKKyAgICBzZW5kZXJfLT5jYWxsXy0+U2V0Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVn
eSgKKyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8cnRjOjpBdWRpb1ByaW9yaXR5Qml0cmF0ZUFs
bG9jYXRpb25TdHJhdGVneT4oCisgICAgICAgICAgICBzZW5kX2NvbmZpZy50cmFja19pZCwKKyAg
ICAgICAgICAgIGNvbmZpZy5lbmNvZGVyLnByaW9yaXR5X3JhdGUtPmJwczx1aW50MzJfdD4oKSkp
OwogICB9CiAgIHNlbmRfc3RyZWFtXyA9IHNlbmRlcl8tPmNhbGxfLT5DcmVhdGVBdWRpb1NlbmRT
dHJlYW0oc2VuZF9jb25maWcpOwogICBpZiAoZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRD
LVNlbmRTaWRlQndlLVdpdGhPdmVyaGVhZCIpKSB7CiAgICAgc2VuZGVyLT5jYWxsXy0+T25BdWRp
b1RyYW5zcG9ydE92ZXJoZWFkQ2hhbmdlZCgKLSAgICAgICAgY29uZmlnLnN0cmVhbS5wYWNrZXRf
b3ZlcmhlYWQuYnl0ZXMoKSk7CisgICAgICAgIHNlbmRlcl8tPnRyYW5zcG9ydF8ucGFja2V0X292
ZXJoZWFkKCkuYnl0ZXMoKSk7CiAgIH0KIH0KIApAQCAtODYsMTcgKzE1MiwxOSBAQCBTZW5kQXVk
aW9TdHJlYW06On5TZW5kQXVkaW9TdHJlYW0oKSB7CiAKIHZvaWQgU2VuZEF1ZGlvU3RyZWFtOjpT
dGFydCgpIHsKICAgc2VuZF9zdHJlYW1fLT5TdGFydCgpOworICBzZW5kZXJfLT5jYWxsXy0+U2ln
bmFsQ2hhbm5lbE5ldHdvcmtTdGF0ZShNZWRpYVR5cGU6OkFVRElPLCBrTmV0d29ya1VwKTsKIH0K
IAotYm9vbCBTZW5kQXVkaW9TdHJlYW06OlRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0
ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50NjRfdCByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRpbWVzdGFtcCBhdF90aW1lKSB7Ci0gIC8vIFJlbW92ZXMgYWRkZWQgb3ZlcmhlYWQgYmVmb3Jl
IGRlbGl2ZXJpbmcgUlRDUCBwYWNrZXQgdG8gc2VuZGVyLgotICBSVENfRENIRUNLX0dFKHBhY2tl
dC5zaXplKCksIGNvbmZpZ18uc3RyZWFtLnBhY2tldF9vdmVyaGVhZC5ieXRlcygpKTsKLSAgcGFj
a2V0LlNldFNpemUocGFja2V0LnNpemUoKSAtIGNvbmZpZ18uc3RyZWFtLnBhY2tldF9vdmVyaGVh
ZC5ieXRlcygpKTsKLSAgc2VuZGVyXy0+RGVsaXZlclBhY2tldChNZWRpYVR5cGU6OkFVRElPLCBw
YWNrZXQsIGF0X3RpbWUpOwotICByZXR1cm4gdHJ1ZTsKK0NvbHVtblByaW50ZXIgU2VuZEF1ZGlv
U3RyZWFtOjpTdGF0c1ByaW50ZXIoKSB7CisgIHJldHVybiBDb2x1bW5QcmludGVyOjpMYW1iZGEo
CisgICAgICAiYXVkaW9fdGFyZ2V0X3JhdGUiLAorICAgICAgW3RoaXNdKHJ0Yzo6U2ltcGxlU3Ry
aW5nQnVpbGRlciYgc2IpIHsKKyAgICAgICAgQXVkaW9TZW5kU3RyZWFtOjpTdGF0cyBzdGF0cyA9
IHNlbmRfc3RyZWFtXy0+R2V0U3RhdHMoKTsKKyAgICAgICAgc2IuQXBwZW5kRm9ybWF0KCIlLjBs
ZiIsIHN0YXRzLnRhcmdldF9iaXRyYXRlX2JwcyAvIDguMCk7CisgICAgICB9LAorICAgICAgNjQp
OwogfQorCiBSZWNlaXZlQXVkaW9TdHJlYW06OlJlY2VpdmVBdWRpb1N0cmVhbSgKICAgICBDYWxs
Q2xpZW50KiByZWNlaXZlciwKICAgICBBdWRpb1N0cmVhbUNvbmZpZyBjb25maWcsCkBAIC0xMDgs
MTEgKzE3NiwxMyBAQCBSZWNlaXZlQXVkaW9TdHJlYW06OlJlY2VpdmVBdWRpb1N0cmVhbSgKICAg
cmVjdl9jb25maWcucnRwLmxvY2FsX3NzcmMgPSBDYWxsVGVzdDo6a1JlY2VpdmVyTG9jYWxBdWRp
b1NzcmM7CiAgIHJlY3ZfY29uZmlnLnJ0Y3Bfc2VuZF90cmFuc3BvcnQgPSBmZWVkYmFja190cmFu
c3BvcnQ7CiAgIHJlY3ZfY29uZmlnLnJ0cC5yZW1vdGVfc3NyYyA9IHNlbmRfc3RyZWFtLT5zc3Jj
XzsKKyAgcmVjZWl2ZXItPnNzcmNfbWVkaWFfdHlwZXNfW3JlY3ZfY29uZmlnLnJ0cC5yZW1vdGVf
c3NyY10gPSBNZWRpYVR5cGU6OkFVRElPOwogICBpZiAoY29uZmlnLnN0cmVhbS5pbl9iYW5kd2lk
dGhfZXN0aW1hdGlvbikgewogICAgIHJlY3ZfY29uZmlnLnJ0cC50cmFuc3BvcnRfY2MgPSB0cnVl
OwogICAgIHJlY3ZfY29uZmlnLnJ0cC5leHRlbnNpb25zID0gewogICAgICAgICB7UnRwRXh0ZW5z
aW9uOjprVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJVcmksIDh9fTsKICAgfQorICByZWNlaXZlcl8t
PkFkZEV4dGVuc2lvbnMocmVjdl9jb25maWcucnRwLmV4dGVuc2lvbnMpOwogICByZWN2X2NvbmZp
Zy5kZWNvZGVyX2ZhY3RvcnkgPSBkZWNvZGVyX2ZhY3Rvcnk7CiAgIHJlY3ZfY29uZmlnLmRlY29k
ZXJfbWFwID0gewogICAgICAge0NhbGxUZXN0OjprQXVkaW9TZW5kUGF5bG9hZFR5cGUsIHsib3B1
cyIsIDQ4MDAwLCAyfX19OwpAQCAtMTIzLDQ5ICsxOTMsMjYgQEAgUmVjZWl2ZUF1ZGlvU3RyZWFt
Ojp+UmVjZWl2ZUF1ZGlvU3RyZWFtKCkgewogICByZWNlaXZlcl8tPmNhbGxfLT5EZXN0cm95QXVk
aW9SZWNlaXZlU3RyZWFtKHJlY2VpdmVfc3RyZWFtXyk7CiB9CiAKLWJvb2wgUmVjZWl2ZUF1ZGlv
U3RyZWFtOjpUcnlEZWxpdmVyUGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgcGFja2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVjZWl2
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAg
YXRfdGltZSkgewotICBSVENfRENIRUNLX0dFKHBhY2tldC5zaXplKCksIGNvbmZpZ18uc3RyZWFt
LnBhY2tldF9vdmVyaGVhZC5ieXRlcygpKTsKLSAgcGFja2V0LlNldFNpemUocGFja2V0LnNpemUo
KSAtIGNvbmZpZ18uc3RyZWFtLnBhY2tldF9vdmVyaGVhZC5ieXRlcygpKTsKLSAgcmVjZWl2ZXJf
LT5EZWxpdmVyUGFja2V0KE1lZGlhVHlwZTo6QVVESU8sIHBhY2tldCwgYXRfdGltZSk7Ci0gIHJl
dHVybiB0cnVlOwordm9pZCBSZWNlaXZlQXVkaW9TdHJlYW06OlN0YXJ0KCkgeworICByZWNlaXZl
X3N0cmVhbV8tPlN0YXJ0KCk7CisgIHJlY2VpdmVyXy0+Y2FsbF8tPlNpZ25hbENoYW5uZWxOZXR3
b3JrU3RhdGUoTWVkaWFUeXBlOjpBVURJTywga05ldHdvcmtVcCk7CiB9CiAKIEF1ZGlvU3RyZWFt
UGFpcjo6fkF1ZGlvU3RyZWFtUGFpcigpID0gZGVmYXVsdDsKIAogQXVkaW9TdHJlYW1QYWlyOjpB
dWRpb1N0cmVhbVBhaXIoCiAgICAgQ2FsbENsaWVudCogc2VuZGVyLAotICAgIHN0ZDo6dmVjdG9y
PE5ldHdvcmtOb2RlKj4gc2VuZF9saW5rLAotICAgIHVpbnQ2NF90IHNlbmRfcmVjZWl2ZXJfaWQs
CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGVuY29kZXJfZmFj
dG9yeSwKICAgICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3Jr
Tm9kZSo+IHJldHVybl9saW5rLAotICAgIHVpbnQ2NF90IHJldHVybl9yZWNlaXZlcl9pZCwKICAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gZGVjb2Rlcl9mYWN0b3J5
LAogICAgIEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZykKICAgICA6IGNvbmZpZ18oY29uZmlnKSwK
LSAgICAgIHNlbmRfbGlua18oc2VuZF9saW5rKSwKLSAgICAgIHJldHVybl9saW5rXyhyZXR1cm5f
bGluayksCi0gICAgICBzZW5kX3RyYW5zcG9ydF8oc2VuZGVyLAotICAgICAgICAgICAgICAgICAg
ICAgIHNlbmRfbGluay5mcm9udCgpLAotICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcmVjZWl2
ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnN0cmVhbS5wYWNrZXRfb3Zlcmhl
YWQpLAotICAgICAgcmV0dXJuX3RyYW5zcG9ydF8ocmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm5fbGluay5mcm9udCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuX3JlY2VpdmVyX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnN0cmVhbS5w
YWNrZXRfb3ZlcmhlYWQpLAotICAgICAgc2VuZF9zdHJlYW1fKHNlbmRlciwgY29uZmlnLCBlbmNv
ZGVyX2ZhY3RvcnksICZzZW5kX3RyYW5zcG9ydF8pLAorICAgICAgc2VuZF9zdHJlYW1fKHNlbmRl
ciwgY29uZmlnLCBlbmNvZGVyX2ZhY3RvcnksICZzZW5kZXItPnRyYW5zcG9ydF8pLAogICAgICAg
cmVjZWl2ZV9zdHJlYW1fKHJlY2VpdmVyLAogICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywK
ICAgICAgICAgICAgICAgICAgICAgICAmc2VuZF9zdHJlYW1fLAogICAgICAgICAgICAgICAgICAg
ICAgIGRlY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAmcmV0dXJuX3RyYW5z
cG9ydF8pIHsKLSAgTmV0d29ya05vZGU6OlJvdXRlKHNlbmRfdHJhbnNwb3J0Xy5SZWNlaXZlcklk
KCksIHNlbmRfbGlua18sCi0gICAgICAgICAgICAgICAgICAgICAmcmVjZWl2ZV9zdHJlYW1fKTsK
LSAgTmV0d29ya05vZGU6OlJvdXRlKHJldHVybl90cmFuc3BvcnRfLlJlY2VpdmVySWQoKSwgcmV0
dXJuX2xpbmtfLAotICAgICAgICAgICAgICAgICAgICAgJnNlbmRfc3RyZWFtXyk7Ci19CisgICAg
ICAgICAgICAgICAgICAgICAgJnJlY2VpdmVyLT50cmFuc3BvcnRfKSB7fQogCiB9ICAvLyBuYW1l
c3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9hdWRpb19zdHJl
YW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2Nl
bmFyaW8vYXVkaW9fc3RyZWFtLmgKaW5kZXggMTdiOGJjMzcwZWZkM2QxOTIxNTk4Yjg2MGZiMGY4
N2IzMDIzODkyNi4uM2FiMGExZjJkZWY3NGM5ZWJkODdkMzVjOWVjYjU3OGEyM2QyZmZjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9z
Y2VuYXJpby9hdWRpb19zdHJlYW0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2F1ZGlvX3N0cmVhbS5oCkBAIC0yNCwxMSArMjQs
MTIgQEAgbmFtZXNwYWNlIHRlc3QgewogCiAvLyBTZW5kQXVkaW9TdHJlYW0gcmVwcmVzZW50cyBz
ZW5kaW5nIG9mIGF1ZGlvLiBJdCBjYW4gYmUgdXNlZCBmb3Igc3RhcnRpbmcgdGhlCiAvLyBzdHJl
YW0gaWYgbmVjY2Vzc2FyeS4KLWNsYXNzIFNlbmRBdWRpb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3Jr
UmVjZWl2ZXJJbnRlcmZhY2UgeworY2xhc3MgU2VuZEF1ZGlvU3RyZWFtIHsKICBwdWJsaWM6CiAg
IFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2VuZEF1ZGlvU3RyZWFtKTsKICAgflNlbmRB
dWRpb1N0cmVhbSgpOwogICB2b2lkIFN0YXJ0KCk7CisgIENvbHVtblByaW50ZXIgU3RhdHNQcmlu
dGVyKCk7CiAKICBwcml2YXRlOgogICBmcmllbmQgY2xhc3MgU2NlbmFyaW87CkBAIC0zOCwxMSAr
MzksNiBAQCBjbGFzcyBTZW5kQXVkaW9TdHJlYW0gOiBwdWJsaWMgTmV0d29ya1JlY2VpdmVySW50
ZXJmYWNlIHsKICAgICAgICAgICAgICAgICAgIEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZywKICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBl
bmNvZGVyX2ZhY3RvcnksCiAgICAgICAgICAgICAgICAgICBUcmFuc3BvcnQqIHNlbmRfdHJhbnNw
b3J0KTsKLSAgLy8gSGFuZGxlcyBSVENQIGZlZWRiYWNrIGZvciB0aGlzIHN0cmVhbS4KLSAgYm9v
bCBUcnlEZWxpdmVyUGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgcGFja2V0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBUaW1lc3RhbXAgYXRfdGltZSkgb3ZlcnJpZGU7Ci0KICAgQXVkaW9TZW5kU3RyZWFtKiBz
ZW5kX3N0cmVhbV8gPSBudWxscHRyOwogICBDYWxsQ2xpZW50KiBjb25zdCBzZW5kZXJfOwogICBj
b25zdCBBdWRpb1N0cmVhbUNvbmZpZyBjb25maWdfOwpAQCAtNTAsMTAgKzQ2LDExIEBAIGNsYXNz
IFNlbmRBdWRpb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgewogfTsK
IAogLy8gUmVjZWl2ZUF1ZGlvU3RyZWFtIHJlcHJlc2VudHMgYW4gYXVkaW8gcmVjZWl2ZXIuIEl0
IGNhbid0IGJlIHVzZWQgZGlyZWN0bHkuCi1jbGFzcyBSZWNlaXZlQXVkaW9TdHJlYW0gOiBwdWJs
aWMgTmV0d29ya1JlY2VpdmVySW50ZXJmYWNlIHsKK2NsYXNzIFJlY2VpdmVBdWRpb1N0cmVhbSB7
CiAgcHVibGljOgogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlY2VpdmVBdWRpb1N0
cmVhbSk7CiAgIH5SZWNlaXZlQXVkaW9TdHJlYW0oKTsKKyAgdm9pZCBTdGFydCgpOwogCiAgcHJp
dmF0ZToKICAgZnJpZW5kIGNsYXNzIFNjZW5hcmlvOwpAQCAtNjMsOSArNjAsNiBAQCBjbGFzcyBS
ZWNlaXZlQXVkaW9TdHJlYW0gOiBwdWJsaWMgTmV0d29ya1JlY2VpdmVySW50ZXJmYWNlIHsKICAg
ICAgICAgICAgICAgICAgICAgIFNlbmRBdWRpb1N0cmVhbSogc2VuZF9zdHJlYW0sCiAgICAgICAg
ICAgICAgICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gZGVj
b2Rlcl9mYWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgVHJhbnNwb3J0KiBmZWVkYmFja190
cmFuc3BvcnQpOwotICBib29sIFRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZl
ciBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSBvdmVycmlkZTsKICAgQXVk
aW9SZWNlaXZlU3RyZWFtKiByZWNlaXZlX3N0cmVhbV8gPSBudWxscHRyOwogICBDYWxsQ2xpZW50
KiBjb25zdCByZWNlaXZlcl87CiAgIGNvbnN0IEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZ187CkBA
IC04NCwyMyArNzgsMTMgQEAgY2xhc3MgQXVkaW9TdHJlYW1QYWlyIHsKICBwcml2YXRlOgogICBm
cmllbmQgY2xhc3MgU2NlbmFyaW87CiAgIEF1ZGlvU3RyZWFtUGFpcihDYWxsQ2xpZW50KiBzZW5k
ZXIsCi0gICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGlu
aywKLSAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNlbmRfcmVjZWl2ZXJfaWQsCiAgICAgICAg
ICAgICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gZW5jb2Rl
cl9mYWN0b3J5LAotCiAgICAgICAgICAgICAgICAgICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAg
ICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmssCi0g
ICAgICAgICAgICAgICAgICB1aW50NjRfdCByZXR1cm5fcmVjZWl2ZXJfaWQsCiAgICAgICAgICAg
ICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gZGVjb2Rlcl9m
YWN0b3J5LAogICAgICAgICAgICAgICAgICAgQXVkaW9TdHJlYW1Db25maWcgY29uZmlnKTsKIAog
IHByaXZhdGU6CiAgIGNvbnN0IEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZ187Ci0gIHN0ZDo6dmVj
dG9yPE5ldHdvcmtOb2RlKj4gc2VuZF9saW5rXzsKLSAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUq
PiByZXR1cm5fbGlua187Ci0gIE5ldHdvcmtOb2RlVHJhbnNwb3J0IHNlbmRfdHJhbnNwb3J0XzsK
LSAgTmV0d29ya05vZGVUcmFuc3BvcnQgcmV0dXJuX3RyYW5zcG9ydF87Ci0KICAgU2VuZEF1ZGlv
U3RyZWFtIHNlbmRfc3RyZWFtXzsKICAgUmVjZWl2ZUF1ZGlvU3RyZWFtIHJlY2VpdmVfc3RyZWFt
XzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L3NjZW5hcmlvL2NhbGxfY2xpZW50LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9jYWxsX2NsaWVudC5jYwppbmRleCA0
N2NjM2JjNTdiODJkMjUzNmUyMmZjZGU5ZTYyYzM3YmE0M2QyNjBlLi44NmViNGRjMWRiNmE0MGE1
Zjg1MTY5YTM2ZmUyZTQ2NDExY2U1M2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2NhbGxfY2xpZW50LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8v
Y2FsbF9jbGllbnQuY2MKQEAgLTIxLDYgKzIxLDM5IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogbmFt
ZXNwYWNlIHRlc3QgewogbmFtZXNwYWNlIHsKIGNvbnN0IGNoYXIqIGtQcmlvcml0eVN0cmVhbUlk
ID0gInByaW9yaXR5LXRyYWNrIjsKKworQ2FsbENsaWVudEZha2VBdWRpbyBJbml0QXVkaW8oKSB7
CisgIENhbGxDbGllbnRGYWtlQXVkaW8gc2V0dXA7CisgIGF1dG8gY2FwdHVyZXIgPSBUZXN0QXVk
aW9EZXZpY2VNb2R1bGU6OkNyZWF0ZVB1bHNlZE5vaXNlQ2FwdHVyZXIoMjU2LCA0ODAwMCk7Cisg
IGF1dG8gcmVuZGVyZXIgPSBUZXN0QXVkaW9EZXZpY2VNb2R1bGU6OkNyZWF0ZURpc2NhcmRSZW5k
ZXJlcig0ODAwMCk7CisgIHNldHVwLmZha2VfYXVkaW9fZGV2aWNlID0gVGVzdEF1ZGlvRGV2aWNl
TW9kdWxlOjpDcmVhdGVUZXN0QXVkaW9EZXZpY2VNb2R1bGUoCisgICAgICBzdGQ6Om1vdmUoY2Fw
dHVyZXIpLCBzdGQ6Om1vdmUocmVuZGVyZXIpLCAxLmYpOworICBzZXR1cC5hcG0gPSBBdWRpb1By
b2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCk7CisgIHNldHVwLmZha2VfYXVkaW9fZGV2aWNlLT5J
bml0KCk7CisgIEF1ZGlvU3RhdGU6OkNvbmZpZyBhdWRpb19zdGF0ZV9jb25maWc7CisgIGF1ZGlv
X3N0YXRlX2NvbmZpZy5hdWRpb19taXhlciA9IEF1ZGlvTWl4ZXJJbXBsOjpDcmVhdGUoKTsKKyAg
YXVkaW9fc3RhdGVfY29uZmlnLmF1ZGlvX3Byb2Nlc3NpbmcgPSBzZXR1cC5hcG07CisgIGF1ZGlv
X3N0YXRlX2NvbmZpZy5hdWRpb19kZXZpY2VfbW9kdWxlID0gc2V0dXAuZmFrZV9hdWRpb19kZXZp
Y2U7CisgIHNldHVwLmF1ZGlvX3N0YXRlID0gQXVkaW9TdGF0ZTo6Q3JlYXRlKGF1ZGlvX3N0YXRl
X2NvbmZpZyk7CisgIHNldHVwLmZha2VfYXVkaW9fZGV2aWNlLT5SZWdpc3RlckF1ZGlvQ2FsbGJh
Y2soCisgICAgICBzZXR1cC5hdWRpb19zdGF0ZS0+YXVkaW9fdHJhbnNwb3J0KCkpOworICByZXR1
cm4gc2V0dXA7Cit9CisKK0NhbGwqIENyZWF0ZUNhbGwoQ2FsbENsaWVudENvbmZpZyBjb25maWcs
CisgICAgICAgICAgICAgICAgIExvZ2dpbmdOZXR3b3JrQ29udHJvbGxlckZhY3RvcnkqIG5ldHdv
cmtfY29udHJvbGxlcl9mYWN0b3J5XywKKyAgICAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvU3RhdGU+IGF1ZGlvX3N0YXRlKSB7CisgIENhbGxDb25maWcgY2FsbF9jb25maWco
bmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnlfLT5HZXRFdmVudExvZygpKTsKKyAgY2FsbF9jb25m
aWcuYml0cmF0ZV9jb25maWcubWF4X2JpdHJhdGVfYnBzID0KKyAgICAgIGNvbmZpZy50cmFuc3Bv
cnQucmF0ZXMubWF4X3JhdGUuYnBzX29yKC0xKTsKKyAgY2FsbF9jb25maWcuYml0cmF0ZV9jb25m
aWcubWluX2JpdHJhdGVfYnBzID0KKyAgICAgIGNvbmZpZy50cmFuc3BvcnQucmF0ZXMubWluX3Jh
dGUuYnBzKCk7CisgIGNhbGxfY29uZmlnLmJpdHJhdGVfY29uZmlnLnN0YXJ0X2JpdHJhdGVfYnBz
ID0KKyAgICAgIGNvbmZpZy50cmFuc3BvcnQucmF0ZXMuc3RhcnRfcmF0ZS5icHMoKTsKKyAgY2Fs
bF9jb25maWcubmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnkgPSBuZXR3b3JrX2NvbnRyb2xsZXJf
ZmFjdG9yeV87CisgIGNhbGxfY29uZmlnLmF1ZGlvX3N0YXRlID0gYXVkaW9fc3RhdGU7CisgIHJl
dHVybiBDYWxsOjpDcmVhdGUoY2FsbF9jb25maWcpOworfQogfQogCiBMb2dnaW5nTmV0d29ya0Nv
bnRyb2xsZXJGYWN0b3J5OjpMb2dnaW5nTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KApAQCAtMTA3
LDMxICsxNDAsMTcgQEAgQ2FsbENsaWVudDo6Q2FsbENsaWVudChDbG9jayogY2xvY2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGxvZ19maWxlbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgQ2FsbENsaWVudENvbmZpZyBjb25maWcpCiAgICAgOiBjbG9ja18oY2xvY2sp
LAotICAgICAgbmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnlfKGxvZ19maWxlbmFtZSwgY29uZmln
LnRyYW5zcG9ydCkgewotICBDYWxsQ29uZmlnIGNhbGxfY29uZmlnKG5ldHdvcmtfY29udHJvbGxl
cl9mYWN0b3J5Xy5HZXRFdmVudExvZygpKTsKLSAgY2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcu
bWF4X2JpdHJhdGVfYnBzID0KLSAgICAgIGNvbmZpZy50cmFuc3BvcnQucmF0ZXMubWF4X3JhdGUu
YnBzX29yKC0xKTsKLSAgY2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcubWluX2JpdHJhdGVfYnBz
ID0KLSAgICAgIGNvbmZpZy50cmFuc3BvcnQucmF0ZXMubWluX3JhdGUuYnBzKCk7Ci0gIGNhbGxf
Y29uZmlnLmJpdHJhdGVfY29uZmlnLnN0YXJ0X2JpdHJhdGVfYnBzID0KLSAgICAgIGNvbmZpZy50
cmFuc3BvcnQucmF0ZXMuc3RhcnRfcmF0ZS5icHMoKTsKLSAgY2FsbF9jb25maWcubmV0d29ya19j
b250cm9sbGVyX2ZhY3RvcnkgPSAmbmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnlfOwotICBjYWxs
X2NvbmZpZy5hdWRpb19zdGF0ZSA9IEluaXRBdWRpbygpOwotICBjYWxsXy5yZXNldChDYWxsOjpD
cmVhdGUoY2FsbF9jb25maWcpKTsKLSAgaWYgKCFjb25maWcucHJpb3JpdHlfdGFyZ2V0X3JhdGUu
SXNaZXJvKCkgJiYKLSAgICAgIGNvbmZpZy5wcmlvcml0eV90YXJnZXRfcmF0ZS5Jc0Zpbml0ZSgp
KSB7Ci0gICAgY2FsbF8tPlNldEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3koCi0gICAgICAgIGFi
c2w6Om1ha2VfdW5pcXVlPHJ0Yzo6QXVkaW9Qcmlvcml0eUJpdHJhdGVBbGxvY2F0aW9uU3RyYXRl
Z3k+KAotICAgICAgICAgICAga1ByaW9yaXR5U3RyZWFtSWQsIGNvbmZpZy5wcmlvcml0eV90YXJn
ZXRfcmF0ZS5icHMoKSkpOwotICB9CisgICAgICBuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV8o
bG9nX2ZpbGVuYW1lLCBjb25maWcudHJhbnNwb3J0KSwKKyAgICAgIGZha2VfYXVkaW9fc2V0dXBf
KEluaXRBdWRpbygpKSwKKyAgICAgIGNhbGxfKENyZWF0ZUNhbGwoY29uZmlnLAorICAgICAgICAg
ICAgICAgICAgICAgICAmbmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnlfLAorICAgICAgICAgICAg
ICAgICAgICAgICBmYWtlX2F1ZGlvX3NldHVwXy5hdWRpb19zdGF0ZSkpLAorICAgICAgdHJhbnNw
b3J0XyhjbG9ja18sIGNhbGxfLmdldCgpKSwKKyAgICAgIGhlYWRlcl9wYXJzZXJfKFJ0cEhlYWRl
clBhcnNlcjo6Q3JlYXRlKCkpIHsKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiAKLUNhbGxDbGllbnQ6
On5DYWxsQ2xpZW50KCkge30KLQotdm9pZCBDYWxsQ2xpZW50OjpEZWxpdmVyUGFja2V0KE1lZGlh
VHlwZSBtZWRpYV90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q29w
eU9uV3JpdGVCdWZmZXIgcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRp
bWVzdGFtcCBhdF90aW1lKSB7Ci0gIGNhbGxfLT5SZWNlaXZlcigpLT5EZWxpdmVyUGFja2V0KG1l
ZGlhX3R5cGUsIHBhY2tldCwgYXRfdGltZS51cygpKTsKK0NhbGxDbGllbnQ6On5DYWxsQ2xpZW50
KCkgeworICBkZWxldGUgaGVhZGVyX3BhcnNlcl87CiB9CiAKIENvbHVtblByaW50ZXIgQ2FsbENs
aWVudDo6U3RhdHNQcmludGVyKCkgewpAQCAtMTQ5LDYgKzE2OCwyNiBAQCBDYWxsOjpTdGF0cyBD
YWxsQ2xpZW50OjpHZXRTdGF0cygpIHsKICAgcmV0dXJuIGNhbGxfLT5HZXRTdGF0cygpOwogfQog
Citib29sIENhbGxDbGllbnQ6OlRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZl
ciBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVj
ZWl2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3Rp
bWUpIHsKKyAgLy8gUmVtb3ZlcyBhZGRlZCBvdmVyaGVhZCBiZWZvcmUgZGVsaXZlcmluZyBwYWNr
ZXQgdG8gc2VuZGVyLgorICBSVENfRENIRUNLX0dFKHBhY2tldC5zaXplKCksIHJvdXRlX292ZXJo
ZWFkXy5hdChyZWNlaXZlcikuYnl0ZXMoKSk7CisgIHBhY2tldC5TZXRTaXplKHBhY2tldC5zaXpl
KCkgLSByb3V0ZV9vdmVyaGVhZF8uYXQocmVjZWl2ZXIpLmJ5dGVzKCkpOworCisgIE1lZGlhVHlw
ZSBtZWRpYV90eXBlID0gTWVkaWFUeXBlOjpBTlk7CisgIGlmICghUnRwSGVhZGVyUGFyc2VyOjpJ
c1J0Y3AocGFja2V0LmNkYXRhKCksIHBhY2tldC5zaXplKCkpKSB7CisgICAgUlRQSGVhZGVyIGhl
YWRlcjsKKyAgICBib29sIHN1Y2Nlc3MgPQorICAgICAgICBoZWFkZXJfcGFyc2VyXy0+UGFyc2Uo
cGFja2V0LmNkYXRhKCksIHBhY2tldC5zaXplKCksICZoZWFkZXIpOworICAgIGlmICghc3VjY2Vz
cykKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtZWRpYV90eXBlID0gc3NyY19tZWRpYV90eXBl
c19baGVhZGVyLnNzcmNdOworICB9CisgIGNhbGxfLT5SZWNlaXZlcigpLT5EZWxpdmVyUGFja2V0
KG1lZGlhX3R5cGUsIHBhY2tldCwgYXRfdGltZS51cygpKTsKKyAgcmV0dXJuIHRydWU7Cit9CisK
IHVpbnQzMl90IENhbGxDbGllbnQ6OkdldE5leHRWaWRlb1NzcmMoKSB7CiAgIFJUQ19DSEVDS19M
VChuZXh0X3ZpZGVvX3NzcmNfaW5kZXhfLCBDYWxsVGVzdDo6a051bVNzcmNzKTsKICAgcmV0dXJu
IENhbGxUZXN0OjprVmlkZW9TZW5kU3NyY3NbbmV4dF92aWRlb19zc3JjX2luZGV4XysrXTsKQEAg
LTE3MCwyMSArMjA5LDEyIEBAIHN0ZDo6c3RyaW5nIENhbGxDbGllbnQ6OkdldE5leHRQcmlvcml0
eUlkKCkgewogICByZXR1cm4ga1ByaW9yaXR5U3RyZWFtSWQ7CiB9CiAKLXJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb1N0YXRlPiBDYWxsQ2xpZW50OjpJbml0QXVkaW8oKSB7Ci0gIGF1dG8gY2FwdHVy
ZXIgPSBUZXN0QXVkaW9EZXZpY2VNb2R1bGU6OkNyZWF0ZVB1bHNlZE5vaXNlQ2FwdHVyZXIoMjU2
LCA0ODAwMCk7Ci0gIGF1dG8gcmVuZGVyZXIgPSBUZXN0QXVkaW9EZXZpY2VNb2R1bGU6OkNyZWF0
ZURpc2NhcmRSZW5kZXJlcig0ODAwMCk7Ci0gIGZha2VfYXVkaW9fZGV2aWNlXyA9IFRlc3RBdWRp
b0RldmljZU1vZHVsZTo6Q3JlYXRlVGVzdEF1ZGlvRGV2aWNlTW9kdWxlKAotICAgICAgc3RkOjpt
b3ZlKGNhcHR1cmVyKSwgc3RkOjptb3ZlKHJlbmRlcmVyKSwgMS5mKTsKLSAgYXBtXyA9IEF1ZGlv
UHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKTsKLSAgZmFrZV9hdWRpb19kZXZpY2VfLT5Jbml0
KCk7Ci0gIEF1ZGlvU3RhdGU6OkNvbmZpZyBhdWRpb19zdGF0ZV9jb25maWc7Ci0gIGF1ZGlvX3N0
YXRlX2NvbmZpZy5hdWRpb19taXhlciA9IEF1ZGlvTWl4ZXJJbXBsOjpDcmVhdGUoKTsKLSAgYXVk
aW9fc3RhdGVfY29uZmlnLmF1ZGlvX3Byb2Nlc3NpbmcgPSBhcG1fOwotICBhdWRpb19zdGF0ZV9j
b25maWcuYXVkaW9fZGV2aWNlX21vZHVsZSA9IGZha2VfYXVkaW9fZGV2aWNlXzsKLSAgYXV0byBh
dWRpb19zdGF0ZSA9IEF1ZGlvU3RhdGU6OkNyZWF0ZShhdWRpb19zdGF0ZV9jb25maWcpOwotICBm
YWtlX2F1ZGlvX2RldmljZV8tPlJlZ2lzdGVyQXVkaW9DYWxsYmFjayhhdWRpb19zdGF0ZS0+YXVk
aW9fdHJhbnNwb3J0KCkpOwotICByZXR1cm4gYXVkaW9fc3RhdGU7Cit2b2lkIENhbGxDbGllbnQ6
OkFkZEV4dGVuc2lvbnMoc3RkOjp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiBleHRlbnNpb25zKSB7Cisg
IGZvciAoY29uc3QgYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9ucykKKyAgICBoZWFkZXJfcGFy
c2VyXy0+UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oZXh0ZW5zaW9uKTsKIH0KIAorQ2FsbENs
aWVudFBhaXI6On5DYWxsQ2xpZW50UGFpcigpID0gZGVmYXVsdDsKKwogfSAgLy8gbmFtZXNwYWNl
IHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vY2FsbF9jbGllbnQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8v
Y2FsbF9jbGllbnQuaAppbmRleCA4MGUyZmFmMTYyNmFmZDFkMGI3YWM0ZDRmN2NmODhiMWQ5OTg4
Nzc2Li5hMTJlMDZhMDY1NjQ4OTc5OTQwYmI4NDFkMjRjNjU4MDQxZWRkNjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlv
L2NhbGxfY2xpZW50LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9zY2VuYXJpby9jYWxsX2NsaWVudC5oCkBAIC0xNyw4ICsxNywxMCBAQAogI2lu
Y2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS90ZXN0X2F1ZGlvX2RldmljZS5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3Rlc3QvY29udHJvbGxlcl9wcmludGVy
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfcGFyc2Vy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInRl
c3Qvc2NlbmFyaW8vY29sdW1uX3ByaW50ZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L3NjZW5hcmlvL25l
dHdvcmtfbm9kZS5oIgogI2luY2x1ZGUgInRlc3Qvc2NlbmFyaW8vc2NlbmFyaW9fY29uZmlnLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNDUsMTAgKzQ3LDE1IEBAIGNsYXNzIExvZ2dpbmdO
ZXR3b3JrQ29udHJvbGxlckZhY3RvcnkKICAgRklMRSogY2Nfb3V0XyA9IG51bGxwdHI7CiB9Owog
CitzdHJ1Y3QgQ2FsbENsaWVudEZha2VBdWRpbyB7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b1Byb2Nlc3Npbmc+IGFwbTsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPFRlc3RBdWRpb0RldmljZU1v
ZHVsZT4gZmFrZV9hdWRpb19kZXZpY2U7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1N0YXRl
PiBhdWRpb19zdGF0ZTsKK307CiAvLyBDYWxsQ2xpZW50IHJlcHJlc2VudHMgYSBwYXJ0aWNpcGFu
dCBpbiBhIGNhbGwgc2NlbmFyaW8uIEl0IGlzIGNyZWF0ZWQgYnkgdGhlCiAvLyBTY2VuYXJpbyBj
bGFzcyBhbmQgaXMgdXNlZCBhcyBzZW5kZXIgYW5kIHJlY2VpdmVyIHdoZW4gc2V0dGluZyB1cCBh
IG1lZGlhCiAvLyBzdHJlYW0gc2Vzc2lvbi4KLWNsYXNzIENhbGxDbGllbnQgeworY2xhc3MgQ2Fs
bENsaWVudCA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgewogIHB1YmxpYzoKICAg
Q2FsbENsaWVudChDbG9jayogY2xvY2ssIHN0ZDo6c3RyaW5nIGxvZ19maWxlbmFtZSwgQ2FsbENs
aWVudENvbmZpZyBjb25maWcpOwogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKENhbGxD
bGllbnQpOwpAQCAtNTYsMzcgKzYzLDYzIEBAIGNsYXNzIENhbGxDbGllbnQgewogICB+Q2FsbENs
aWVudCgpOwogICBDb2x1bW5QcmludGVyIFN0YXRzUHJpbnRlcigpOwogICBDYWxsOjpTdGF0cyBH
ZXRTdGF0cygpOworICBEYXRhUmF0ZSBzZW5kX2JhbmR3aWR0aCgpIHsKKyAgICByZXR1cm4gRGF0
YVJhdGU6OmJwcyhHZXRTdGF0cygpLnNlbmRfYmFuZHdpZHRoX2Jwcyk7CisgIH0KKworICBib29s
IFRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFRpbWVzdGFtcCBhdF90aW1lKSBvdmVycmlkZTsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBj
bGFzcyBTY2VuYXJpbzsKKyAgZnJpZW5kIGNsYXNzIENhbGxDbGllbnRQYWlyOwogICBmcmllbmQg
Y2xhc3MgU2VuZFZpZGVvU3RyZWFtOworICBmcmllbmQgY2xhc3MgVmlkZW9TdHJlYW1QYWlyOwog
ICBmcmllbmQgY2xhc3MgUmVjZWl2ZVZpZGVvU3RyZWFtOwogICBmcmllbmQgY2xhc3MgU2VuZEF1
ZGlvU3RyZWFtOwogICBmcmllbmQgY2xhc3MgUmVjZWl2ZUF1ZGlvU3RyZWFtOworICBmcmllbmQg
Y2xhc3MgQXVkaW9TdHJlYW1QYWlyOwogICBmcmllbmQgY2xhc3MgTmV0d29ya05vZGVUcmFuc3Bv
cnQ7Ci0gIC8vIFRPRE8oc3J0ZSk6IENvbnNpZGVyIHVzaW5nIHRoZSBDb2x1bW5wcmludGVyIGlu
dGVyZmFjZSBmb3IgdGhpcy4KLSAgdm9pZCBEZWxpdmVyUGFja2V0KE1lZGlhVHlwZSBtZWRpYV90
eXBlLAotICAgICAgICAgICAgICAgICAgICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQs
Ci0gICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSk7CiAgIHVpbnQzMl90IEdl
dE5leHRWaWRlb1NzcmMoKTsKICAgdWludDMyX3QgR2V0TmV4dEF1ZGlvU3NyYygpOwogICB1aW50
MzJfdCBHZXROZXh0UnR4U3NyYygpOwogICBzdGQ6OnN0cmluZyBHZXROZXh0UHJpb3JpdHlJZCgp
OworICB2b2lkIEFkZEV4dGVuc2lvbnMoc3RkOjp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiBleHRlbnNp
b25zKTsKIAogICBDbG9jayogY2xvY2tfOwogICBMb2dnaW5nTmV0d29ya0NvbnRyb2xsZXJGYWN0
b3J5IG5ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5XzsKKyAgQ2FsbENsaWVudEZha2VBdWRpbyBm
YWtlX2F1ZGlvX3NldHVwXzsKICAgc3RkOjp1bmlxdWVfcHRyPENhbGw+IGNhbGxfOwotCi0gIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1N0YXRlPiBJbml0QXVkaW8oKTsKLQotICBydGM6OnNjb3Bl
ZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhcG1fOwotICBydGM6OnNjb3BlZF9yZWZwdHI8VGVz
dEF1ZGlvRGV2aWNlTW9kdWxlPiBmYWtlX2F1ZGlvX2RldmljZV87CisgIE5ldHdvcmtOb2RlVHJh
bnNwb3J0IHRyYW5zcG9ydF87CisgIFJ0cEhlYWRlclBhcnNlciogY29uc3QgaGVhZGVyX3BhcnNl
cl87CiAKICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlPiBm
ZWNfY29udHJvbGxlcl9mYWN0b3J5XzsKKyAgLy8gU3RvcmVzIHRoZSBjb25maWd1cmVkIG92ZXJo
ZWFkIHBlciBrbm93biBpbmNvbW1pbmcgcm91dGUuIFRoaXMgaXMgdXNlZCB0bworICAvLyBzdWJ0
cmFjdCB0aGUgb3ZlcmhlYWQgYmVmb3JlIHByb2Nlc3NpbmcuCisgIHN0ZDo6bWFwPHVpbnQ2NF90
LCBEYXRhU2l6ZT4gcm91dGVfb3ZlcmhlYWRfOwogICBpbnQgbmV4dF92aWRlb19zc3JjX2luZGV4
XyA9IDA7CiAgIGludCBuZXh0X3J0eF9zc3JjX2luZGV4XyA9IDA7CiAgIGludCBuZXh0X2F1ZGlv
X3NzcmNfaW5kZXhfID0gMDsKICAgaW50IG5leHRfcHJpb3JpdHlfaW5kZXhfID0gMDsKKyAgc3Rk
OjptYXA8dWludDMyX3QsIE1lZGlhVHlwZT4gc3NyY19tZWRpYV90eXBlc187Cit9OworCitjbGFz
cyBDYWxsQ2xpZW50UGFpciB7CisgcHVibGljOgorICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOKENhbGxDbGllbnRQYWlyKTsKKyAgfkNhbGxDbGllbnRQYWlyKCk7CisgIENhbGxDbGllbnQq
IGZpcnN0KCkgeyByZXR1cm4gZmlyc3RfOyB9CisgIENhbGxDbGllbnQqIHNlY29uZCgpIHsgcmV0
dXJuIHNlY29uZF87IH0KKyAgc3RkOjpwYWlyPENhbGxDbGllbnQqLCBDYWxsQ2xpZW50Kj4gZm9y
d2FyZCgpIHsgcmV0dXJuIHtmaXJzdCgpLCBzZWNvbmQoKX07IH0KKyAgc3RkOjpwYWlyPENhbGxD
bGllbnQqLCBDYWxsQ2xpZW50Kj4gcmV2ZXJzZSgpIHsgcmV0dXJuIHtzZWNvbmQoKSwgZmlyc3Qo
KX07IH0KKworIHByaXZhdGU6CisgIGZyaWVuZCBjbGFzcyBTY2VuYXJpbzsKKyAgQ2FsbENsaWVu
dFBhaXIoQ2FsbENsaWVudCogZmlyc3QsIENhbGxDbGllbnQqIHNlY29uZCkKKyAgICAgIDogZmly
c3RfKGZpcnN0KSwgc2Vjb25kXyhzZWNvbmQpIHt9CisgIENhbGxDbGllbnQqIGNvbnN0IGZpcnN0
XzsKKyAgQ2FsbENsaWVudCogY29uc3Qgc2Vjb25kXzsKIH07CiB9ICAvLyBuYW1lc3BhY2UgdGVz
dAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9uZXR3b3JrX25vZGUuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL25l
dHdvcmtfbm9kZS5jYwppbmRleCBmZjEzODkzOWFiYjFlZmQ1MWMxYWU0YTU4YmExNzk1MDBkZGRi
YWNhLi5iMzlkNjdiZDI1Yzg5MDlhMzIwMzVkM2FlYWE4YTNlM2RjM2UxYzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlv
L25ldHdvcmtfbm9kZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL25ldHdvcmtfbm9kZS5jYwpAQCAtMTIsNiArMTIsOCBAQAog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJydGNf
YmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVz
cGFjZSB0ZXN0IHsKIG5hbWVzcGFjZSB7CkBAIC0xNjgsMjkgKzE3MCwyOSBAQCBTaW11bGF0aW9u
Tm9kZTo6U2ltdWxhdGlvbk5vZGUoCiAgICAgICBzaW11bGF0ZWRfbmV0d29ya18oc2ltdWxhdGlv
biksCiAgICAgICBjb25maWdfKGNvbmZpZykge30KIAotTmV0d29ya05vZGVUcmFuc3BvcnQ6Ok5l
dHdvcmtOb2RlVHJhbnNwb3J0KENhbGxDbGllbnQqIHNlbmRlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOZXR3b3JrTm9kZSogc2VuZF9uZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVjZWl2ZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemUgcGFja2V0
X292ZXJoZWFkKQotICAgIDogc2VuZGVyXyhzZW5kZXIpLAotICAgICAgc2VuZF9uZXRfKHNlbmRf
bmV0KSwKLSAgICAgIHJlY2VpdmVyX2lkXyhyZWNlaXZlciksCi0gICAgICBwYWNrZXRfb3Zlcmhl
YWRfKHBhY2tldF9vdmVyaGVhZCkge30KK05ldHdvcmtOb2RlVHJhbnNwb3J0OjpOZXR3b3JrTm9k
ZVRyYW5zcG9ydChjb25zdCBDbG9jayogc2VuZGVyX2Nsb2NrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENhbGwqIHNlbmRlcl9jYWxsKQorICAgIDogc2VuZGVy
X2Nsb2NrXyhzZW5kZXJfY2xvY2spLCBzZW5kZXJfY2FsbF8oc2VuZGVyX2NhbGwpIHt9CiAKIE5l
dHdvcmtOb2RlVHJhbnNwb3J0Ojp+TmV0d29ya05vZGVUcmFuc3BvcnQoKSA9IGRlZmF1bHQ7CiAK
IGJvb2wgTmV0d29ya05vZGVUcmFuc3BvcnQ6OlNlbmRSdHAoY29uc3QgdWludDhfdCogcGFja2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRPcHRpb25zJiBvcHRp
b25zKSB7Ci0gIGludDY0X3Qgc2VuZF90aW1lX21zID0gc2VuZGVyXy0+Y2xvY2tfLT5UaW1lSW5N
aWxsaXNlY29uZHMoKTsKKyAgaW50NjRfdCBzZW5kX3RpbWVfbXMgPSBzZW5kZXJfY2xvY2tfLT5U
aW1lSW5NaWxsaXNlY29uZHMoKTsKICAgcnRjOjpTZW50UGFja2V0IHNlbnRfcGFja2V0OwogICBz
ZW50X3BhY2tldC5wYWNrZXRfaWQgPSBvcHRpb25zLnBhY2tldF9pZDsKKyAgc2VudF9wYWNrZXQu
aW5mby5pbmNsdWRlZF9pbl9mZWVkYmFjayA9IG9wdGlvbnMuaW5jbHVkZWRfaW5fZmVlZGJhY2s7
CisgIHNlbnRfcGFja2V0LmluZm8uaW5jbHVkZWRfaW5fYWxsb2NhdGlvbiA9IG9wdGlvbnMuaW5j
bHVkZWRfaW5fYWxsb2NhdGlvbjsKICAgc2VudF9wYWNrZXQuc2VuZF90aW1lX21zID0gc2VuZF90
aW1lX21zOwogICBzZW50X3BhY2tldC5pbmZvLnBhY2tldF9zaXplX2J5dGVzID0gbGVuZ3RoOwog
ICBzZW50X3BhY2tldC5pbmZvLnBhY2tldF90eXBlID0gcnRjOjpQYWNrZXRUeXBlOjprRGF0YTsK
LSAgc2VuZGVyXy0+Y2FsbF8tPk9uU2VudFBhY2tldChzZW50X3BhY2tldCk7CisgIHNlbmRlcl9j
YWxsXy0+T25TZW50UGFja2V0KHNlbnRfcGFja2V0KTsKIAogICBUaW1lc3RhbXAgc2VuZF90aW1l
ID0gVGltZXN0YW1wOjptcyhzZW5kX3RpbWVfbXMpOworICBydGM6OkNyaXRTY29wZSBjcml0KCZj
cml0X3NlY3RfKTsKKyAgaWYgKCFzZW5kX25ldF8pCisgICAgcmV0dXJuIGZhbHNlOwogICBydGM6
OkNvcHlPbldyaXRlQnVmZmVyIGJ1ZmZlcihwYWNrZXQsIGxlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGVuZ3RoICsgcGFja2V0X292ZXJoZWFkXy5ieXRlcygpKTsKICAg
YnVmZmVyLlNldFNpemUobGVuZ3RoICsgcGFja2V0X292ZXJoZWFkXy5ieXRlcygpKTsKQEAgLTE5
OSwxMyArMjAxLDI5IEBAIGJvb2wgTmV0d29ya05vZGVUcmFuc3BvcnQ6OlNlbmRSdHAoY29uc3Qg
dWludDhfdCogcGFja2V0LAogCiBib29sIE5ldHdvcmtOb2RlVHJhbnNwb3J0OjpTZW5kUnRjcChj
b25zdCB1aW50OF90KiBwYWNrZXQsIHNpemVfdCBsZW5ndGgpIHsKICAgcnRjOjpDb3B5T25Xcml0
ZUJ1ZmZlciBidWZmZXIocGFja2V0LCBsZW5ndGgpOwotICBUaW1lc3RhbXAgc2VuZF90aW1lID0g
VGltZXN0YW1wOjptcyhzZW5kZXJfLT5jbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAg
VGltZXN0YW1wIHNlbmRfdGltZSA9IFRpbWVzdGFtcDo6bXMoc2VuZGVyX2Nsb2NrXy0+VGltZUlu
TWlsbGlzZWNvbmRzKCkpOworICBydGM6OkNyaXRTY29wZSBjcml0KCZjcml0X3NlY3RfKTsKICAg
YnVmZmVyLlNldFNpemUobGVuZ3RoICsgcGFja2V0X292ZXJoZWFkXy5ieXRlcygpKTsKKyAgaWYg
KCFzZW5kX25ldF8pCisgICAgcmV0dXJuIGZhbHNlOwogICByZXR1cm4gc2VuZF9uZXRfLT5UcnlE
ZWxpdmVyUGFja2V0KGJ1ZmZlciwgcmVjZWl2ZXJfaWRfLCBzZW5kX3RpbWUpOwogfQogCi11aW50
NjRfdCBOZXR3b3JrTm9kZVRyYW5zcG9ydDo6UmVjZWl2ZXJJZCgpIGNvbnN0IHsKLSAgcmV0dXJu
IHJlY2VpdmVyX2lkXzsKK3ZvaWQgTmV0d29ya05vZGVUcmFuc3BvcnQ6OkNvbm5lY3QoTmV0d29y
a05vZGUqIHNlbmRfbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDY0X3QgcmVjZWl2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERh
dGFTaXplIHBhY2tldF9vdmVyaGVhZCkgeworICBydGM6OkNyaXRTY29wZSBjcml0KCZjcml0X3Nl
Y3RfKTsKKyAgc2VuZF9uZXRfID0gc2VuZF9ub2RlOworICByZWNlaXZlcl9pZF8gPSByZWNlaXZl
cl9pZDsKKyAgcGFja2V0X292ZXJoZWFkXyA9IHBhY2tldF9vdmVyaGVhZDsKKworICBydGM6Ok5l
dHdvcmtSb3V0ZSByb3V0ZTsKKyAgcm91dGUuY29ubmVjdGVkID0gdHJ1ZTsKKyAgcm91dGUubG9j
YWxfbmV0d29ya19pZCA9IHJlY2VpdmVyX2lkOworICByb3V0ZS5yZW1vdGVfbmV0d29ya19pZCA9
IHJlY2VpdmVyX2lkOworICBzdGQ6OnN0cmluZyB0cmFuc3BvcnRfbmFtZSA9ICJkdW1teSI7Cisg
IHNlbmRlcl9jYWxsXy0+R2V0VHJhbnNwb3J0Q29udHJvbGxlclNlbmQoKS0+T25OZXR3b3JrUm91
dGVDaGFuZ2VkKAorICAgICAgdHJhbnNwb3J0X25hbWUsIHJvdXRlKTsKIH0KIAogQ3Jvc3NUcmFm
ZmljU291cmNlOjpDcm9zc1RyYWZmaWNTb3VyY2UoTmV0d29ya1JlY2VpdmVySW50ZXJmYWNlKiB0
YXJnZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L3NjZW5hcmlvL25ldHdvcmtfbm9kZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9uZXR3b3JrX25vZGUuaAppbmRleCBh
ZjZkYjBhMDA5OWNjMzg3ZmRiNDcwOGI5OGRlMWJhNTk1ZjRjZWIyLi40ZTkwZjZmMjUyYTJjN2Nm
NWRlNzZiODhkZDA5YTdlOTA3YTg2ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL25ldHdvcmtfbm9kZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8v
bmV0d29ya19ub2RlLmgKQEAgLTE4LDEwICsxOCwxMCBAQAogCiAjaW5jbHVkZSAiYXBpL2NhbGwv
dHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAiYXBpL3VuaXRzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUg
ImNhbGwvY2FsbC5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29w
eW9ud3JpdGVidWZmZXIuaCIKLSNpbmNsdWRlICJ0ZXN0L3NjZW5hcmlvL2NhbGxfY2xpZW50Lmgi
CiAjaW5jbHVkZSAidGVzdC9zY2VuYXJpby9jb2x1bW5fcHJpbnRlci5oIgogI2luY2x1ZGUgInRl
c3Qvc2NlbmFyaW8vc2NlbmFyaW9fY29uZmlnLmgiCiAKQEAgLTExOSwyMyArMTE5LDMwIEBAIGNs
YXNzIFNpbXVsYXRpb25Ob2RlIDogcHVibGljIE5ldHdvcmtOb2RlIHsKIAogY2xhc3MgTmV0d29y
a05vZGVUcmFuc3BvcnQgOiBwdWJsaWMgVHJhbnNwb3J0IHsKICBwdWJsaWM6Ci0gIE5ldHdvcmtO
b2RlVHJhbnNwb3J0KENhbGxDbGllbnQqIHNlbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
TmV0d29ya05vZGUqIHNlbmRfbmV0LAotICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBy
ZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemUgcGFja2V0X292ZXJoZWFk
KTsKKyAgTmV0d29ya05vZGVUcmFuc3BvcnQoY29uc3QgQ2xvY2sqIHNlbmRlcl9jbG9jaywgQ2Fs
bCogc2VuZGVyX2NhbGwpOwogICB+TmV0d29ya05vZGVUcmFuc3BvcnQoKSBvdmVycmlkZTsKIAog
ICBib29sIFNlbmRSdHAoY29uc3QgdWludDhfdCogcGFja2V0LAogICAgICAgICAgICAgICAgc2l6
ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldE9wdGlvbnMmIG9wdGlvbnMp
IG92ZXJyaWRlOwogICBib29sIFNlbmRSdGNwKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90
IGxlbmd0aCkgb3ZlcnJpZGU7Ci0gIHVpbnQ2NF90IFJlY2VpdmVySWQoKSBjb25zdDsKKworICB2
b2lkIENvbm5lY3QoTmV0d29ya05vZGUqIHNlbmRfbm9kZSwKKyAgICAgICAgICAgICAgIHVpbnQ2
NF90IHJlY2VpdmVyX2lkLAorICAgICAgICAgICAgICAgRGF0YVNpemUgcGFja2V0X292ZXJoZWFk
KTsKKworICBEYXRhU2l6ZSBwYWNrZXRfb3ZlcmhlYWQoKSB7CisgICAgcnRjOjpDcml0U2NvcGUg
Y3JpdCgmY3JpdF9zZWN0Xyk7CisgICAgcmV0dXJuIHBhY2tldF9vdmVyaGVhZF87CisgIH0KIAog
IHByaXZhdGU6Ci0gIENhbGxDbGllbnQqIGNvbnN0IHNlbmRlcl87Ci0gIE5ldHdvcmtOb2RlKiBj
b25zdCBzZW5kX25ldF87Ci0gIGNvbnN0IHVpbnQ2NF90IHJlY2VpdmVyX2lkXzsKLSAgY29uc3Qg
RGF0YVNpemUgcGFja2V0X292ZXJoZWFkXzsKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9z
ZWN0XzsKKyAgY29uc3QgQ2xvY2sqIGNvbnN0IHNlbmRlcl9jbG9ja187CisgIENhbGwqIGNvbnN0
IHNlbmRlcl9jYWxsXzsKKyAgTmV0d29ya05vZGUqIHNlbmRfbmV0XyBSVENfR1VBUkRFRF9CWShj
cml0X3NlY3RfKSA9IG51bGxwdHI7CisgIHVpbnQ2NF90IHJlY2VpdmVyX2lkXyBSVENfR1VBUkRF
RF9CWShjcml0X3NlY3RfKSA9IDA7CisgIERhdGFTaXplIHBhY2tldF9vdmVyaGVhZF8gUlRDX0dV
QVJERURfQlkoY3JpdF9zZWN0XykgPSBEYXRhU2l6ZTo6WmVybygpOwogfTsKIAogLy8gQ3Jvc3NU
cmFmZmljU291cmNlIGlzIGNyZWF0ZWQgYnkgYSBTY2VuYXJpbyBhbmQgZ2VuZXJhdGVzIGNyb3Nz
IHRyYWZmaWMuIEl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpby5jYwppbmRleCA3
ZWIwOWU4YmI3YTFkMTI0ODYyNDMyN2FiNGJhYWUyZWFlYTM5MWM1Li43NTg5ODc4ZDViYTM1Mzk3
OGY1MzBjYzJmYmMwNjY5YmQ1ZTY0YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2Nl
bmFyaW8uY2MKQEAgLTE2LDcgKzE2LDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgog
I2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKLURFRklORV9ib29sKHNj
ZW5hcmlvX2xvZ3MsIGZhbHNlLCAiU2F2ZSBsb2dzIGZyb20gc2NlbmFyaW8gZnJhbWV3b3JrLiIp
OworV0VCUlRDX0RFRklORV9ib29sKHNjZW5hcmlvX2xvZ3MsIGZhbHNlLCAiU2F2ZSBsb2dzIGZy
b20gc2NlbmFyaW8gZnJhbWV3b3JrLiIpOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFj
ZSB0ZXN0IHsKQEAgLTc1LDYgKzc1LDggQEAgU2NlbmFyaW86OlNjZW5hcmlvKHN0ZDo6c3RyaW5n
IGZpbGVfbmFtZSwgYm9vbCByZWFsX3RpbWUpCiB9CiAKIFNjZW5hcmlvOjp+U2NlbmFyaW8oKSB7
CisgIGlmIChzdGFydF90aW1lXy5Jc0Zpbml0ZSgpKQorICAgIFN0b3AoKTsKICAgaWYgKCFyZWFs
X3RpbWVfbW9kZV8pCiAgICAgcnRjOjpTZXRDbG9ja0ZvclRlc3RpbmcobnVsbHB0cik7CiB9CkBA
IC0xMjMsMTQgKzEyNSw1MCBAQCBDYWxsQ2xpZW50KiBTY2VuYXJpbzo6Q3JlYXRlQ2xpZW50KAog
ICByZXR1cm4gQ3JlYXRlQ2xpZW50KG5hbWUsIGNvbmZpZyk7CiB9CiAKK0NhbGxDbGllbnRQYWly
KiBTY2VuYXJpbzo6Q3JlYXRlUm91dGVzKENhbGxDbGllbnQqIGZpcnN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5k
X2xpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsQ2xpZW50
KiBzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZl
Y3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rKSB7CisgIHJldHVybiBDcmVhdGVSb3V0ZXMo
Zmlyc3QsIHNlbmRfbGluaywKKyAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZTo6Ynl0ZXMo
UGFja2V0T3ZlcmhlYWQ6OmtEZWZhdWx0KSwgc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAg
IHJldHVybl9saW5rLCBEYXRhU2l6ZTo6Ynl0ZXMoUGFja2V0T3ZlcmhlYWQ6OmtEZWZhdWx0KSk7
Cit9CisKK0NhbGxDbGllbnRQYWlyKiBTY2VuYXJpbzo6Q3JlYXRlUm91dGVzKENhbGxDbGllbnQq
IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEYXRhU2l6ZSBmaXJzdF9vdmVyaGVhZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENhbGxDbGllbnQqIHNlY29uZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xp
bmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSBzZWNv
bmRfb3ZlcmhlYWQpIHsKKyAgQ2FsbENsaWVudFBhaXIqIGNsaWVudF9wYWlyID0gbmV3IENhbGxD
bGllbnRQYWlyKGZpcnN0LCBzZWNvbmQpOworICBDaGFuZ2VSb3V0ZShjbGllbnRfcGFpci0+Zm9y
d2FyZCgpLCBzZW5kX2xpbmssIGZpcnN0X292ZXJoZWFkKTsKKyAgQ2hhbmdlUm91dGUoY2xpZW50
X3BhaXItPnJldmVyc2UoKSwgcmV0dXJuX2xpbmssIHNlY29uZF9vdmVyaGVhZCk7CisgIGNsaWVu
dF9wYWlyc18uZW1wbGFjZV9iYWNrKGNsaWVudF9wYWlyKTsKKyAgcmV0dXJuIGNsaWVudF9wYWly
OworfQorCit2b2lkIFNjZW5hcmlvOjpDaGFuZ2VSb3V0ZShzdGQ6OnBhaXI8Q2FsbENsaWVudCos
IENhbGxDbGllbnQqPiBjbGllbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8TmV0d29ya05vZGUqPiBvdmVyX25vZGVzKSB7CisgIENoYW5nZVJvdXRlKGNsaWVudHMs
IG92ZXJfbm9kZXMsIERhdGFTaXplOjpieXRlcyhQYWNrZXRPdmVyaGVhZDo6a0RlZmF1bHQpKTsK
K30KKwordm9pZCBTY2VuYXJpbzo6Q2hhbmdlUm91dGUoc3RkOjpwYWlyPENhbGxDbGllbnQqLCBD
YWxsQ2xpZW50Kj4gY2xpZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPE5ldHdvcmtOb2RlKj4gb3Zlcl9ub2RlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IERhdGFTaXplIG92ZXJoZWFkKSB7CisgIHVpbnQ2NF90IHJvdXRlX2lkID0gbmV4dF9yb3V0ZV9p
ZF8rKzsKKyAgY2xpZW50cy5zZWNvbmQtPnJvdXRlX292ZXJoZWFkXy5pbnNlcnQoe3JvdXRlX2lk
LCBvdmVyaGVhZH0pOworICBOZXR3b3JrTm9kZTo6Um91dGUocm91dGVfaWQsIG92ZXJfbm9kZXMs
IGNsaWVudHMuc2Vjb25kKTsKKyAgY2xpZW50cy5maXJzdC0+dHJhbnNwb3J0Xy5Db25uZWN0KG92
ZXJfbm9kZXMuZnJvbnQoKSwgcm91dGVfaWQsIG92ZXJoZWFkKTsKK30KKwogU2ltdWxhdGVkVGlt
ZUNsaWVudCogU2NlbmFyaW86OkNyZWF0ZVNpbXVsYXRlZFRpbWVDbGllbnQoCiAgICAgc3RkOjpz
dHJpbmcgbmFtZSwKICAgICBTaW11bGF0ZWRUaW1lQ2xpZW50Q29uZmlnIGNvbmZpZywKICAgICBz
dGQ6OnZlY3RvcjxQYWNrZXRTdHJlYW1Db25maWc+IHN0cmVhbV9jb25maWdzLAogICAgIHN0ZDo6
dmVjdG9yPE5ldHdvcmtOb2RlKj4gc2VuZF9saW5rLAogICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtO
b2RlKj4gcmV0dXJuX2xpbmspIHsKLSAgdWludDY0X3Qgc2VuZF9pZCA9IG5leHRfcmVjZWl2ZXJf
aWRfKys7Ci0gIHVpbnQ2NF90IHJldHVybl9pZCA9IG5leHRfcmVjZWl2ZXJfaWRfKys7CisgIHVp
bnQ2NF90IHNlbmRfaWQgPSBuZXh0X3JvdXRlX2lkXysrOworICB1aW50NjRfdCByZXR1cm5faWQg
PSBuZXh0X3JvdXRlX2lkXysrOwogICBTaW11bGF0ZWRUaW1lQ2xpZW50KiBjbGllbnQgPSBuZXcg
U2ltdWxhdGVkVGltZUNsaWVudCgKICAgICAgIEdldEZ1bGxQYXRoT3JFbXB0eShuYW1lKSwgY29u
ZmlnLCBzdHJlYW1fY29uZmlncywgc2VuZF9saW5rLCByZXR1cm5fbGluaywKICAgICAgIHNlbmRf
aWQsIHJldHVybl9pZCwgTm93KCkpOwpAQCAtMTc5LDIxICsyMTcsMjEgQEAgTmV0d29ya05vZGUq
IFNjZW5hcmlvOjpDcmVhdGVOZXR3b3JrTm9kZSgKIHZvaWQgU2NlbmFyaW86OlRyaWdnZXJQYWNr
ZXRCdXJzdChzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9wYWNrZXRzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYWNrZXRfc2l6ZSkgewotICBpbnQ2NF90IHJl
Y2VpdmVyX2lkID0gbmV4dF9yZWNlaXZlcl9pZF8rKzsKLSAgTmV0d29ya05vZGU6OlJvdXRlKHJl
Y2VpdmVyX2lkLCBvdmVyX25vZGVzLCAmbnVsbF9yZWNlaXZlcl8pOworICBpbnQ2NF90IHJvdXRl
X2lkID0gbmV4dF9yb3V0ZV9pZF8rKzsKKyAgTmV0d29ya05vZGU6OlJvdXRlKHJvdXRlX2lkLCBv
dmVyX25vZGVzLCAmbnVsbF9yZWNlaXZlcl8pOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bV9wYWNrZXRzOyArK2kpCiAgICAgb3Zlcl9ub2Rlc1swXS0+VHJ5RGVsaXZlclBhY2tldChydGM6
OkNvcHlPbldyaXRlQnVmZmVyKHBhY2tldF9zaXplKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlY2VpdmVyX2lkLCBOb3coKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByb3V0ZV9pZCwgTm93KCkpOwogfQogCiB2b2lkIFNjZW5hcmlvOjpOZXR3
b3JrRGVsYXllZEFjdGlvbihzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFja2V0X3NpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
YWN0aW9uKSB7Ci0gIGludDY0X3QgcmVjZWl2ZXJfaWQgPSBuZXh0X3JlY2VpdmVyX2lkXysrOwor
ICBpbnQ2NF90IHJvdXRlX2lkID0gbmV4dF9yb3V0ZV9pZF8rKzsKICAgYWN0aW9uX3JlY2VpdmVy
c18uZW1wbGFjZV9iYWNrKG5ldyBBY3Rpb25SZWNlaXZlcihhY3Rpb24pKTsKLSAgTmV0d29ya05v
ZGU6OlJvdXRlKHJlY2VpdmVyX2lkLCBvdmVyX25vZGVzLCBhY3Rpb25fcmVjZWl2ZXJzXy5iYWNr
KCkuZ2V0KCkpOwotICBvdmVyX25vZGVzWzBdLT5UcnlEZWxpdmVyUGFja2V0KHJ0Yzo6Q29weU9u
V3JpdGVCdWZmZXIocGFja2V0X3NpemUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY2VpdmVyX2lkLCBOb3coKSk7CisgIE5ldHdvcmtOb2RlOjpSb3V0ZShyb3V0ZV9pZCwg
b3Zlcl9ub2RlcywgYWN0aW9uX3JlY2VpdmVyc18uYmFjaygpLmdldCgpKTsKKyAgb3Zlcl9ub2Rl
c1swXS0+VHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyKHBhY2tldF9zaXpl
KSwgcm91dGVfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm93KCkpOwog
fQogCiBDcm9zc1RyYWZmaWNTb3VyY2UqIFNjZW5hcmlvOjpDcmVhdGVDcm9zc1RyYWZmaWMoCkBA
IC0yMDcsNjUgKzI0NSw0NiBAQCBDcm9zc1RyYWZmaWNTb3VyY2UqIFNjZW5hcmlvOjpDcmVhdGVD
cm9zc1RyYWZmaWMoCiBDcm9zc1RyYWZmaWNTb3VyY2UqIFNjZW5hcmlvOjpDcmVhdGVDcm9zc1Ry
YWZmaWMoCiAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBvdmVyX25vZGVzLAogICAgIENy
b3NzVHJhZmZpY0NvbmZpZyBjb25maWcpIHsKLSAgaW50NjRfdCByZWNlaXZlcl9pZCA9IG5leHRf
cmVjZWl2ZXJfaWRfKys7CisgIGludDY0X3Qgcm91dGVfaWQgPSBuZXh0X3JvdXRlX2lkXysrOwog
ICBjcm9zc190cmFmZmljX3NvdXJjZXNfLmVtcGxhY2VfYmFjaygKLSAgICAgIG5ldyBDcm9zc1Ry
YWZmaWNTb3VyY2Uob3Zlcl9ub2Rlcy5mcm9udCgpLCByZWNlaXZlcl9pZCwgY29uZmlnKSk7Cisg
ICAgICBuZXcgQ3Jvc3NUcmFmZmljU291cmNlKG92ZXJfbm9kZXMuZnJvbnQoKSwgcm91dGVfaWQs
IGNvbmZpZykpOwogICBDcm9zc1RyYWZmaWNTb3VyY2UqIG5vZGUgPSBjcm9zc190cmFmZmljX3Nv
dXJjZXNfLmJhY2soKS5nZXQoKTsKLSAgTmV0d29ya05vZGU6OlJvdXRlKHJlY2VpdmVyX2lkLCBv
dmVyX25vZGVzLCAmbnVsbF9yZWNlaXZlcl8pOworICBOZXR3b3JrTm9kZTo6Um91dGUocm91dGVf
aWQsIG92ZXJfbm9kZXMsICZudWxsX3JlY2VpdmVyXyk7CiAgIEV2ZXJ5KGNvbmZpZy5taW5fcGFj
a2V0X2ludGVydmFsLAogICAgICAgICBbdGhpcywgbm9kZV0oVGltZURlbHRhIGRlbHRhKSB7IG5v
ZGUtPlByb2Nlc3MoTm93KCksIGRlbHRhKTsgfSk7CiAgIHJldHVybiBub2RlOwogfQogCiBWaWRl
b1N0cmVhbVBhaXIqIFNjZW5hcmlvOjpDcmVhdGVWaWRlb1N0cmVhbSgKLSAgICBDYWxsQ2xpZW50
KiBzZW5kZXIsCi0gICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAg
Q2FsbENsaWVudCogcmVjZWl2ZXIsCi0gICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1
cm5fbGluaywKKyAgICBzdGQ6OnBhaXI8Q2FsbENsaWVudCosIENhbGxDbGllbnQqPiBjbGllbnRz
LAogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChWaWRlb1N0cmVhbUNvbmZpZyopPiBjb25maWdfbW9k
aWZpZXIpIHsKICAgVmlkZW9TdHJlYW1Db25maWcgY29uZmlnOwogICBjb25maWdfbW9kaWZpZXIo
JmNvbmZpZyk7Ci0gIHJldHVybiBDcmVhdGVWaWRlb1N0cmVhbShzZW5kZXIsIHNlbmRfbGluaywg
cmVjZWl2ZXIsIHJldHVybl9saW5rLCBjb25maWcpOworICByZXR1cm4gQ3JlYXRlVmlkZW9TdHJl
YW0oY2xpZW50cywgY29uZmlnKTsKIH0KIAogVmlkZW9TdHJlYW1QYWlyKiBTY2VuYXJpbzo6Q3Jl
YXRlVmlkZW9TdHJlYW0oCi0gICAgQ2FsbENsaWVudCogc2VuZGVyLAotICAgIHN0ZDo6dmVjdG9y
PE5ldHdvcmtOb2RlKj4gc2VuZF9saW5rLAotICAgIENhbGxDbGllbnQqIHJlY2VpdmVyLAotICAg
IHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmssCisgICAgc3RkOjpwYWlyPENh
bGxDbGllbnQqLCBDYWxsQ2xpZW50Kj4gY2xpZW50cywKICAgICBWaWRlb1N0cmVhbUNvbmZpZyBj
b25maWcpIHsKLSAgdWludDY0X3Qgc2VuZF9yZWNlaXZlcl9pZCA9IG5leHRfcmVjZWl2ZXJfaWRf
Kys7Ci0gIHVpbnQ2NF90IHJldHVybl9yZWNlaXZlcl9pZCA9IG5leHRfcmVjZWl2ZXJfaWRfKys7
Ci0KICAgdmlkZW9fc3RyZWFtc18uZW1wbGFjZV9iYWNrKAotICAgICAgbmV3IFZpZGVvU3RyZWFt
UGFpcihzZW5kZXIsIHNlbmRfbGluaywgc2VuZF9yZWNlaXZlcl9pZCwgcmVjZWl2ZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9saW5rLCByZXR1cm5fcmVjZWl2ZXJfaWQsIGNv
bmZpZykpOworICAgICAgbmV3IFZpZGVvU3RyZWFtUGFpcihjbGllbnRzLmZpcnN0LCBjbGllbnRz
LnNlY29uZCwgY29uZmlnKSk7CiAgIHJldHVybiB2aWRlb19zdHJlYW1zXy5iYWNrKCkuZ2V0KCk7
CiB9CiAKIEF1ZGlvU3RyZWFtUGFpciogU2NlbmFyaW86OkNyZWF0ZUF1ZGlvU3RyZWFtKAotICAg
IENhbGxDbGllbnQqIHNlbmRlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRf
bGluaywKLSAgICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3Jr
Tm9kZSo+IHJldHVybl9saW5rLAorICAgIHN0ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVu
dCo+IGNsaWVudHMsCiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKEF1ZGlvU3RyZWFtQ29uZmlnKik+
IGNvbmZpZ19tb2RpZmllcikgewogICBBdWRpb1N0cmVhbUNvbmZpZyBjb25maWc7CiAgIGNvbmZp
Z19tb2RpZmllcigmY29uZmlnKTsKLSAgcmV0dXJuIENyZWF0ZUF1ZGlvU3RyZWFtKHNlbmRlciwg
c2VuZF9saW5rLCByZWNlaXZlciwgcmV0dXJuX2xpbmssIGNvbmZpZyk7CisgIHJldHVybiBDcmVh
dGVBdWRpb1N0cmVhbShjbGllbnRzLCBjb25maWcpOwogfQogCiBBdWRpb1N0cmVhbVBhaXIqIFNj
ZW5hcmlvOjpDcmVhdGVBdWRpb1N0cmVhbSgKLSAgICBDYWxsQ2xpZW50KiBzZW5kZXIsCi0gICAg
c3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAgQ2FsbENsaWVudCogcmVj
ZWl2ZXIsCi0gICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKKyAgICBz
dGQ6OnBhaXI8Q2FsbENsaWVudCosIENhbGxDbGllbnQqPiBjbGllbnRzLAogICAgIEF1ZGlvU3Ry
ZWFtQ29uZmlnIGNvbmZpZykgewotICB1aW50NjRfdCBzZW5kX3JlY2VpdmVyX2lkID0gbmV4dF9y
ZWNlaXZlcl9pZF8rKzsKLSAgdWludDY0X3QgcmV0dXJuX3JlY2VpdmVyX2lkID0gbmV4dF9yZWNl
aXZlcl9pZF8rKzsKLQotICBhdWRpb19zdHJlYW1zXy5lbXBsYWNlX2JhY2sobmV3IEF1ZGlvU3Ry
ZWFtUGFpcigKLSAgICAgIHNlbmRlciwgc2VuZF9saW5rLCBzZW5kX3JlY2VpdmVyX2lkLCBhdWRp
b19lbmNvZGVyX2ZhY3RvcnlfLCByZWNlaXZlciwKLSAgICAgIHJldHVybl9saW5rLCByZXR1cm5f
cmVjZWl2ZXJfaWQsIGF1ZGlvX2RlY29kZXJfZmFjdG9yeV8sIGNvbmZpZykpOworICBhdWRpb19z
dHJlYW1zXy5lbXBsYWNlX2JhY2soCisgICAgICBuZXcgQXVkaW9TdHJlYW1QYWlyKGNsaWVudHMu
Zmlyc3QsIGF1ZGlvX2VuY29kZXJfZmFjdG9yeV8sIGNsaWVudHMuc2Vjb25kLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnlfLCBjb25maWcpKTsKICAgcmV0
dXJuIGF1ZGlvX3N0cmVhbXNfLmJhY2soKS5nZXQoKTsKIH0KIApAQCAtMjg4LDM3ICszMDcsMjAg
QEAgdm9pZCBTY2VuYXJpbzo6QXQoVGltZURlbHRhIG9mZnNldCwgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGZ1bmN0aW9uKSB7CiB9CiAKIHZvaWQgU2NlbmFyaW86OlJ1bkZvcihUaW1lRGVsdGEgZHVy
YXRpb24pIHsKLSAgUnVuVW50aWwoZHVyYXRpb24sIFRpbWVEZWx0YTo6UGx1c0luZmluaXR5KCks
IFtdKCkgeyByZXR1cm4gZmFsc2U7IH0pOworICBSdW5VbnRpbChEdXJhdGlvbigpICsgZHVyYXRp
b24pOworfQorCit2b2lkIFNjZW5hcmlvOjpSdW5VbnRpbChUaW1lRGVsdGEgbWF4X2R1cmF0aW9u
KSB7CisgIFJ1blVudGlsKG1heF9kdXJhdGlvbiwgVGltZURlbHRhOjpQbHVzSW5maW5pdHkoKSwg
W10oKSB7IHJldHVybiBmYWxzZTsgfSk7CiB9CiAKIHZvaWQgU2NlbmFyaW86OlJ1blVudGlsKFRp
bWVEZWx0YSBtYXhfZHVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lRGVsdGEg
cG9sbF9pbnRlcnZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZnVuY3Rpb248Ym9v
bCgpPiBleGl0X2Z1bmN0aW9uKSB7Ci0gIHN0YXJ0X3RpbWVfID0gVGltZXN0YW1wOjp1cyhjbG9j
a18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKLSAgZm9yIChhdXRvJiBhY3Rpdml0eSA6IHJlcGVh
dGVkX2FjdGl2aXRpZXNfKSB7Ci0gICAgYWN0aXZpdHktPlNldFN0YXJ0VGltZShzdGFydF90aW1l
Xyk7Ci0gIH0KKyAgaWYgKHN0YXJ0X3RpbWVfLklzSW5maW5pdGUoKSkKKyAgICBTdGFydCgpOwog
Ci0gIGZvciAoYXV0byYgc3RyZWFtX3BhaXIgOiB2aWRlb19zdHJlYW1zXykKLSAgICBzdHJlYW1f
cGFpci0+cmVjZWl2ZSgpLT5yZWNlaXZlX3N0cmVhbV8tPlN0YXJ0KCk7Ci0gIGZvciAoYXV0byYg
c3RyZWFtX3BhaXIgOiBhdWRpb19zdHJlYW1zXykKLSAgICBzdHJlYW1fcGFpci0+cmVjZWl2ZSgp
LT5yZWNlaXZlX3N0cmVhbV8tPlN0YXJ0KCk7Ci0gIGZvciAoYXV0byYgc3RyZWFtX3BhaXIgOiB2
aWRlb19zdHJlYW1zXykgewotICAgIGlmIChzdHJlYW1fcGFpci0+Y29uZmlnXy5hdXRvc3RhcnQp
IHsKLSAgICAgIHN0cmVhbV9wYWlyLT5zZW5kKCktPlN0YXJ0KCk7Ci0gICAgfQotICB9Ci0gIGZv
ciAoYXV0byYgc3RyZWFtX3BhaXIgOiBhdWRpb19zdHJlYW1zXykgewotICAgIGlmIChzdHJlYW1f
cGFpci0+Y29uZmlnXy5hdXRvc3RhcnQpIHsKLSAgICAgIHN0cmVhbV9wYWlyLT5zZW5kKCktPlN0
YXJ0KCk7Ci0gICAgfQotICB9Ci0gIGZvciAoYXV0byYgY2FsbCA6IGNsaWVudHNfKSB7Ci0gICAg
Y2FsbC0+Y2FsbF8tPlNpZ25hbENoYW5uZWxOZXR3b3JrU3RhdGUoTWVkaWFUeXBlOjpBVURJTywg
a05ldHdvcmtVcCk7Ci0gICAgY2FsbC0+Y2FsbF8tPlNpZ25hbENoYW5uZWxOZXR3b3JrU3RhdGUo
TWVkaWFUeXBlOjpWSURFTywga05ldHdvcmtVcCk7Ci0gIH0KLQotICBydGM6OkV2ZW50IGRvbmVf
KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZV87CiAgIHdoaWxlICghZXhpdF9mdW5j
dGlvbigpICYmIER1cmF0aW9uKCkgPCBtYXhfZHVyYXRpb24pIHsKICAgICBUaW1lc3RhbXAgY3Vy
cmVudF90aW1lID0gTm93KCk7CiAgICAgVGltZURlbHRhIGR1cmF0aW9uID0gY3VycmVudF90aW1l
IC0gc3RhcnRfdGltZV87CkBAIC0zNDYsNiArMzQ4LDMyIEBAIHZvaWQgU2NlbmFyaW86OlJ1blVu
dGlsKFRpbWVEZWx0YSBtYXhfZHVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTAwMCk7CiAgICAgfQogICB9Cit9CisKK3ZvaWQgU2NlbmFyaW86OlN0
YXJ0KCkgeworICBzdGFydF90aW1lXyA9IFRpbWVzdGFtcDo6dXMoY2xvY2tfLT5UaW1lSW5NaWNy
b3NlY29uZHMoKSk7CisgIGZvciAoYXV0byYgYWN0aXZpdHkgOiByZXBlYXRlZF9hY3Rpdml0aWVz
XykgeworICAgIGFjdGl2aXR5LT5TZXRTdGFydFRpbWUoc3RhcnRfdGltZV8pOworICB9CisKKyAg
Zm9yIChhdXRvJiBzdHJlYW1fcGFpciA6IHZpZGVvX3N0cmVhbXNfKQorICAgIHN0cmVhbV9wYWly
LT5yZWNlaXZlKCktPlN0YXJ0KCk7CisgIGZvciAoYXV0byYgc3RyZWFtX3BhaXIgOiBhdWRpb19z
dHJlYW1zXykKKyAgICBzdHJlYW1fcGFpci0+cmVjZWl2ZSgpLT5TdGFydCgpOworICBmb3IgKGF1
dG8mIHN0cmVhbV9wYWlyIDogdmlkZW9fc3RyZWFtc18pIHsKKyAgICBpZiAoc3RyZWFtX3BhaXIt
PmNvbmZpZ18uYXV0b3N0YXJ0KSB7CisgICAgICBzdHJlYW1fcGFpci0+c2VuZCgpLT5TdGFydCgp
OworICAgIH0KKyAgfQorICBmb3IgKGF1dG8mIHN0cmVhbV9wYWlyIDogYXVkaW9fc3RyZWFtc18p
IHsKKyAgICBpZiAoc3RyZWFtX3BhaXItPmNvbmZpZ18uYXV0b3N0YXJ0KSB7CisgICAgICBzdHJl
YW1fcGFpci0+c2VuZCgpLT5TdGFydCgpOworICAgIH0KKyAgfQorfQorCit2b2lkIFNjZW5hcmlv
OjpTdG9wKCkgeworICBSVENfRENIRUNLKHN0YXJ0X3RpbWVfLklzRmluaXRlKCkpOwogICBmb3Ig
KGF1dG8mIHN0cmVhbV9wYWlyIDogdmlkZW9fc3RyZWFtc18pIHsKICAgICBzdHJlYW1fcGFpci0+
c2VuZCgpLT52aWRlb19jYXB0dXJlcl8tPlN0b3AoKTsKICAgICBzdHJlYW1fcGFpci0+c2VuZCgp
LT5zZW5kX3N0cmVhbV8tPlN0b3AoKTsKQEAgLTM1Niw2ICszODQsNyBAQCB2b2lkIFNjZW5hcmlv
OjpSdW5VbnRpbChUaW1lRGVsdGEgbWF4X2R1cmF0aW9uLAogICAgIHN0cmVhbV9wYWlyLT5yZWNl
aXZlKCktPnJlY2VpdmVfc3RyZWFtXy0+U3RvcCgpOwogICBmb3IgKGF1dG8mIHN0cmVhbV9wYWly
IDogYXVkaW9fc3RyZWFtc18pCiAgICAgc3RyZWFtX3BhaXItPnJlY2VpdmUoKS0+cmVjZWl2ZV9z
dHJlYW1fLT5TdG9wKCk7CisgIHN0YXJ0X3RpbWVfID0gVGltZXN0YW1wOjpQbHVzSW5maW5pdHko
KTsKIH0KIAogVGltZXN0YW1wIFNjZW5hcmlvOjpOb3coKSB7CkBAIC0zNjMsNiArMzkyLDggQEAg
VGltZXN0YW1wIFNjZW5hcmlvOjpOb3coKSB7CiB9CiAKIFRpbWVEZWx0YSBTY2VuYXJpbzo6RHVy
YXRpb24oKSB7CisgIGlmIChzdGFydF90aW1lXy5Jc0luZmluaXRlKCkpCisgICAgcmV0dXJuIFRp
bWVEZWx0YTo6WmVybygpOwogICByZXR1cm4gTm93KCkgLSBzdGFydF90aW1lXzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9z
Y2VuYXJpby9zY2VuYXJpby5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpby5oCmluZGV4IDA1ODc2YWM0OWMxNTYzODcyZjI2
ZWQzOGRjMDA2ODM5ZTg0OTAzNzkuLjM4YmVmNDQyZWNkZDUzMDI5NTEzNzY4ZGNlYTEyZWI1NTcz
Nzk0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW8uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmgKQEAgLTc4LDYgKzc4
LDI1IEBAIGNsYXNzIFNjZW5hcmlvIHsKICAgICAgIHN0ZDo6c3RyaW5nIG5hbWUsCiAgICAgICBz
dGQ6OmZ1bmN0aW9uPHZvaWQoQ2FsbENsaWVudENvbmZpZyopPiBjb25maWdfbW9kaWZpZXIpOwog
CisgIENhbGxDbGllbnRQYWlyKiBDcmVhdGVSb3V0ZXMoQ2FsbENsaWVudCogZmlyc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5k
X2xpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbENsaWVudCogc2Vjb25k
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2Rl
Kj4gcmV0dXJuX2xpbmspOworCisgIENhbGxDbGllbnRQYWlyKiBDcmVhdGVSb3V0ZXMoQ2FsbENs
aWVudCogZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8
TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RGF0YVNpemUgZmlyc3Rfb3ZlcmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q2FsbENsaWVudCogc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRGF0YVNpemUgc2Vjb25kX292ZXJoZWFkKTsKKworICB2b2lkIENoYW5nZVJvdXRl
KHN0ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMsCisgICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBvdmVyX25vZGVzKTsKKworICB2b2lk
IENoYW5nZVJvdXRlKHN0ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMs
CisgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBvdmVyX25vZGVz
LAorICAgICAgICAgICAgICAgICAgIERhdGFTaXplIG92ZXJoZWFkKTsKKwogICBTaW11bGF0ZWRU
aW1lQ2xpZW50KiBDcmVhdGVTaW11bGF0ZWRUaW1lQ2xpZW50KAogICAgICAgc3RkOjpzdHJpbmcg
bmFtZSwKICAgICAgIFNpbXVsYXRlZFRpbWVDbGllbnRDb25maWcgY29uZmlnLApAQCAtODYsMjgg
KzEwNSwxOCBAQCBjbGFzcyBTY2VuYXJpbyB7CiAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9k
ZSo+IHJldHVybl9saW5rKTsKIAogICBWaWRlb1N0cmVhbVBhaXIqIENyZWF0ZVZpZGVvU3RyZWFt
KAotICAgICAgQ2FsbENsaWVudCogc2VuZGVyLAotICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05v
ZGUqPiBzZW5kX2xpbmssCi0gICAgICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICAgIHN0ZDo6
dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmssCisgICAgICBzdGQ6OnBhaXI8Q2FsbENs
aWVudCosIENhbGxDbGllbnQqPiBjbGllbnRzLAogICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKFZp
ZGVvU3RyZWFtQ29uZmlnKik+IGNvbmZpZ19tb2RpZmllcik7Ci0gIFZpZGVvU3RyZWFtUGFpciog
Q3JlYXRlVmlkZW9TdHJlYW0oQ2FsbENsaWVudCogc2VuZGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gc2VuZF9saW5rLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxDbGllbnQqIHJlY2VpdmVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdv
cmtOb2RlKj4gcmV0dXJuX2xpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmlkZW9TdHJlYW1Db25maWcgY29uZmlnKTsKKyAgVmlkZW9TdHJlYW1QYWlyKiBDcmVhdGVW
aWRlb1N0cmVhbSgKKyAgICAgIHN0ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVudCo+IGNs
aWVudHMsCisgICAgICBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWcpOwogCiAgIEF1ZGlvU3RyZWFt
UGFpciogQ3JlYXRlQXVkaW9TdHJlYW0oCi0gICAgICBDYWxsQ2xpZW50KiBzZW5kZXIsCi0gICAg
ICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICAgIENhbGxDbGllbnQq
IHJlY2VpdmVyLAotICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywK
KyAgICAgIHN0ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMsCiAgICAg
ICBzdGQ6OmZ1bmN0aW9uPHZvaWQoQXVkaW9TdHJlYW1Db25maWcqKT4gY29uZmlnX21vZGlmaWVy
KTsKLSAgQXVkaW9TdHJlYW1QYWlyKiBDcmVhdGVBdWRpb1N0cmVhbShDYWxsQ2xpZW50KiBzZW5k
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0
d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ2FsbENsaWVudCogcmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb1N0cmVhbUNvbmZpZyBjb25maWcpOworICBB
dWRpb1N0cmVhbVBhaXIqIENyZWF0ZUF1ZGlvU3RyZWFtKAorICAgICAgc3RkOjpwYWlyPENhbGxD
bGllbnQqLCBDYWxsQ2xpZW50Kj4gY2xpZW50cywKKyAgICAgIEF1ZGlvU3RyZWFtQ29uZmlnIGNv
bmZpZyk7CiAKICAgQ3Jvc3NUcmFmZmljU291cmNlKiBDcmVhdGVDcm9zc1RyYWZmaWMoCiAgICAg
ICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMsCkBAIC0xMzEsOSArMTQwLDEy
IEBAIGNsYXNzIFNjZW5hcmlvIHsKICAgLy8gUnVucyB0aGUgc2NlbmFyaW8gZm9yIHRoZSBnaXZl
biB0aW1lIG9yIHVudGlsIHRoZSBleGl0IGZ1bmN0aW9uIHJldHVybnMKICAgLy8gdHJ1ZS4KICAg
dm9pZCBSdW5Gb3IoVGltZURlbHRhIGR1cmF0aW9uKTsKKyAgdm9pZCBSdW5VbnRpbChUaW1lRGVs
dGEgbWF4X2R1cmF0aW9uKTsKICAgdm9pZCBSdW5VbnRpbChUaW1lRGVsdGEgbWF4X2R1cmF0aW9u
LAogICAgICAgICAgICAgICAgIFRpbWVEZWx0YSBwcm9iZV9pbnRlcnZhbCwKICAgICAgICAgICAg
ICAgICBzdGQ6OmZ1bmN0aW9uPGJvb2woKT4gZXhpdF9mdW5jdGlvbik7CisgIHZvaWQgU3RhcnQo
KTsKKyAgdm9pZCBTdG9wKCk7CiAKICAgLy8gVHJpZ2dlcnMgc2VuZGluZyBvZiBkdW1teSBwYWNr
ZXRzIG92ZXIgdGhlIGdpdmVuIG5vZGVzLgogICB2b2lkIFRyaWdnZXJQYWNrZXRCdXJzdChzdGQ6
OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMsCkBAIC0xNjcsNiArMTc5LDcgQEAgY2xh
c3MgU2NlbmFyaW8gewogICBydGM6OkZha2VDbG9jayBldmVudF9sb2dfZmFrZV9jbG9ja187CiAK
ICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGxDbGllbnQ+PiBjbGllbnRzXzsKKyAg
c3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGxDbGllbnRQYWlyPj4gY2xpZW50X3BhaXJz
XzsKICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtOb2RlPj4gbmV0d29ya19u
b2Rlc187CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RyYWZmaWNTb3VyY2U+
PiBjcm9zc190cmFmZmljX3NvdXJjZXNfOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9TdHJlYW1QYWlyPj4gdmlkZW9fc3RyZWFtc187CkBAIC0xNzksNyArMTkyLDcgQEAgY2xh
c3MgU2NlbmFyaW8gewogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0FjdGl2
aXR5Pj4gcGVuZGluZ19hY3Rpdml0aWVzXzsKICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFN0YXRlc1ByaW50ZXI+PiBwcmludGVyc187CiAKLSAgaW50NjRfdCBuZXh0X3JlY2VpdmVyX2lk
XyA9IDQwMDAwOworICBpbnQ2NF90IG5leHRfcm91dGVfaWRfID0gNDAwMDA7CiAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnlfOwog
ICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5XzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb19jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW9fY29uZmln
LmgKaW5kZXggZTY1MmUyY2UzOTIxZGY5ZDYzNDk1N2MxZDA1YTFkYzg0NDNlOTdhMS4uODhmZGI4
YWYwMTczNWNiYzA1NjdjMWIxNTQ4YTUzMWNkM2NmZTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb19j
b25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L3NjZW5hcmlvL3NjZW5hcmlvX2NvbmZpZy5oCkBAIC0yOCw3ICsyOCwxMiBAQCBzdHJ1Y3Qg
UGFja2V0T3ZlcmhlYWQgewogICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrSXB2NiA9IDQwOwog
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrVWRwID0gODsKICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3Qga1NydHAgPSAxMDsKLSAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1R1cm4gPSA0Owor
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3R1biA9IDQ7CisgIC8vIFRVUk4gbWVzc2FnZXMg
Y2FuIGJlIHNlbnQgZWl0aGVyIHdpdGggb3Igd2l0aG91dCBhbiBlc3RhYmxpZXNoZWQgY2hhbm5l
bC4KKyAgLy8gSW4gdGhlIGxhdHRlciBjYXNlLCBhIFRVUk4gU2VuZC9EYXRhIEluZGljYXRpb24g
aXMgc2VudCB3aGljaCBoYXMKKyAgLy8gc2lnbmlmaWNhbnRseSBtb3JlIG92ZXJoZWFkLgorICBz
dGF0aWMgY29uc3RleHByIHNpemVfdCBrVHVybkNoYW5uZWxNZXNzYWdlID0gNDsKKyAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3Qga1R1cm5JbmRpY2F0aW9uTWVzc2FnZSA9IDM2OwogICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBrRGVmYXVsdCA9IGtJcHY0ICsga1VkcCArIGtTcnRwOwogfTsKIHN0
cnVjdCBUcmFuc3BvcnRDb250cm9sbGVyQ29uZmlnIHsKQEAgLTQ2LDcgKzUxLDYgQEAgc3RydWN0
IFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWcgewogCiBzdHJ1Y3QgQ2FsbENsaWVudENvbmZpZyB7
CiAgIFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWcgdHJhbnNwb3J0OwotICBEYXRhUmF0ZSBwcmlv
cml0eV90YXJnZXRfcmF0ZSA9IERhdGFSYXRlOjpaZXJvKCk7CiB9OwogCiBzdHJ1Y3QgU2ltdWxh
dGVkVGltZUNsaWVudENvbmZpZyB7CkBAIC03MSw2ICs3NSwxMCBAQCBzdHJ1Y3QgUGFja2V0U3Ry
ZWFtQ29uZmlnIHsKIHN0cnVjdCBWaWRlb1N0cmVhbUNvbmZpZyB7CiAgIGJvb2wgYXV0b3N0YXJ0
ID0gdHJ1ZTsKICAgc3RydWN0IFNvdXJjZSB7CisgICAgZW51bSBjbGFzcyBDb250ZW50VHlwZSB7
CisgICAgICBrVmlkZW8sCisgICAgICBrU2NyZWVuLAorICAgIH0gY29udGVudF90eXBlID0gQ29u
dGVudFR5cGU6OmtWaWRlbzsKICAgICBlbnVtIENhcHR1cmUgewogICAgICAga0dlbmVyYXRvciwK
ICAgICAgIGtWaWRlb0ZpbGUsCkBAIC0xMDMsNiArMTExLDcgQEAgc3RydWN0IFZpZGVvU3RyZWFt
Q29uZmlnIHsKICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IGtleV9mcmFtZV9pbnRlcnZhbCA9IDMw
MDA7CiAKICAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gbWF4X2RhdGFfcmF0ZTsKKyAgICBh
YnNsOjpvcHRpb25hbDxpbnQ+IG1heF9mcmFtZXJhdGU7CiAgICAgc2l6ZV90IG51bV9zaW11bGNh
c3Rfc3RyZWFtcyA9IDE7CiAgICAgdXNpbmcgRGVncmFkYXRpb25QcmVmZXJlbmNlID0gRGVncmFk
YXRpb25QcmVmZXJlbmNlOwogICAgIERlZ3JhZGF0aW9uUHJlZmVyZW5jZSBkZWdyYWRhdGlvbl9w
cmVmZXJlbmNlID0KQEAgLTExNCwxMCArMTIzLDEwIEBAIHN0cnVjdCBWaWRlb1N0cmVhbUNvbmZp
ZyB7CiAgICAgflN0cmVhbSgpOwogICAgIGJvb2wgcGFja2V0X2ZlZWRiYWNrID0gdHJ1ZTsKICAg
ICBib29sIHVzZV9ydHggPSB0cnVlOworICAgIERhdGFSYXRlIHBhZF90b19yYXRlID0gRGF0YVJh
dGU6Olplcm8oKTsKICAgICBUaW1lRGVsdGEgbmFja19oaXN0b3J5X3RpbWUgPSBUaW1lRGVsdGE6
Om1zKDEwMDApOwogICAgIGJvb2wgdXNlX2ZsZXhmZWMgPSBmYWxzZTsKICAgICBib29sIHVzZV91
bHBmZWMgPSBmYWxzZTsKLSAgICBEYXRhU2l6ZSBwYWNrZXRfb3ZlcmhlYWQgPSBEYXRhU2l6ZTo6
Ynl0ZXMoUGFja2V0T3ZlcmhlYWQ6OmtEZWZhdWx0KTsKICAgfSBzdHJlYW07CiAgIHN0cnVjdCBS
ZW5kZXJlciB7CiAgICAgZW51bSBUeXBlIHsga0Zha2UgfSB0eXBlID0ga0Zha2U7CkBAIC0xMzIs
NiArMTQxLDE3IEBAIHN0cnVjdCBBdWRpb1N0cmVhbUNvbmZpZyB7CiAgIHN0cnVjdCBTb3VyY2Ug
ewogICAgIGludCBjaGFubmVscyA9IDE7CiAgIH0gc291cmNlOworICBib29sIG5ldHdvcmtfYWRh
cHRhdGlvbiA9IGZhbHNlOworICBzdHJ1Y3QgTmV0d29ya0FkYXB0YXRpb24geworICAgIHN0cnVj
dCBGcmFtZUxlbmd0aCB7CisgICAgICBkb3VibGUgbWluX3BhY2tldF9sb3NzX2Zvcl9kZWNyZWFz
ZSA9IDA7CisgICAgICBkb3VibGUgbWF4X3BhY2tldF9sb3NzX2Zvcl9pbmNyZWFzZSA9IDE7Cisg
ICAgICBEYXRhUmF0ZSBtaW5fcmF0ZV9mb3JfMjBfbXMgPSBEYXRhUmF0ZTo6WmVybygpOworICAg
ICAgRGF0YVJhdGUgbWF4X3JhdGVfZm9yXzYwX21zID0gRGF0YVJhdGU6OkluZmluaXR5KCk7Cisg
ICAgICBEYXRhUmF0ZSBtaW5fcmF0ZV9mb3JfNjBfbXMgPSBEYXRhUmF0ZTo6WmVybygpOworICAg
ICAgRGF0YVJhdGUgbWF4X3JhdGVfZm9yXzEyMF9tcyA9IERhdGFSYXRlOjpJbmZpbml0eSgpOwor
ICAgIH0gZnJhbWU7CisgIH0gYWRhcHQ7CiAgIHN0cnVjdCBFbmNvZGVyIHsKICAgICBFbmNvZGVy
KCk7CiAgICAgRW5jb2Rlcihjb25zdCBFbmNvZGVyJik7CkBAIC0xNDAsNiArMTYwLDcgQEAgc3Ry
dWN0IEF1ZGlvU3RyZWFtQ29uZmlnIHsKICAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gZml4
ZWRfcmF0ZTsKICAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gbWluX3JhdGU7CiAgICAgYWJz
bDo6b3B0aW9uYWw8RGF0YVJhdGU+IG1heF9yYXRlOworICAgIGFic2w6Om9wdGlvbmFsPERhdGFS
YXRlPiBwcmlvcml0eV9yYXRlOwogICAgIFRpbWVEZWx0YSBpbml0aWFsX2ZyYW1lX2xlbmd0aCA9
IFRpbWVEZWx0YTo6bXMoMjApOwogICB9IGVuY29kZXI7CiAgIHN0cnVjdCBTdHJlYW0gewpAQCAt
MTQ3LDggKzE2OCw2IEBAIHN0cnVjdCBBdWRpb1N0cmVhbUNvbmZpZyB7CiAgICAgU3RyZWFtKGNv
bnN0IFN0cmVhbSYpOwogICAgIH5TdHJlYW0oKTsKICAgICBib29sIGluX2JhbmR3aWR0aF9lc3Rp
bWF0aW9uID0gZmFsc2U7Ci0gICAgYm9vbCByYXRlX2FsbG9jYXRpb25fcHJpb3JpdHkgPSBmYWxz
ZTsKLSAgICBEYXRhU2l6ZSBwYWNrZXRfb3ZlcmhlYWQgPSBEYXRhU2l6ZTo6Ynl0ZXMoUGFja2V0
T3ZlcmhlYWQ6OmtEZWZhdWx0KTsKICAgfSBzdHJlYW07CiAgIHN0cnVjdCBSZW5kZXIgewogICAg
IHN0ZDo6c3RyaW5nIHN5bmNfZ3JvdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvX3Rlc3RzL2Jicl9w
ZXJmb3JtYW5jZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW9fdGVzdHMvYmJyX3BlcmZvcm1hbmNlLmNjCmluZGV4IGU4
N2NjNjhkZDMxZjcwYzhmOGZjZTNmMGRkYTc1N2E2YTI3NTlkMjkuLjI4Y2FiYzA3MGZkYTA3ZmI3
NjYzYTEzMGU0Zjg3Nzk1YzE4N2Y1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW9fdGVzdHMvYmJyX3Bl
cmZvcm1hbmNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW9fdGVzdHMvYmJyX3BlcmZvcm1hbmNlLmNjCkBAIC0x
NjcsMzEgKzE2NywzMSBAQCBURVNUX1AoQmJyU2NlbmFyaW9UZXN0LCBSZWNlaXZlc1ZpZGVvKSB7
CiAgIG5ldF9jb25mLnNpbXVsYXRpb24uZGVsYXlfc3RkX2RldiA9IGNvbmZfLnNjZW5hcmlvLmRl
bGF5X25vaXNlOwogICBTaW11bGF0aW9uTm9kZSogc2VuZF9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRp
b25Ob2RlKG5ldF9jb25mKTsKICAgU2ltdWxhdGlvbk5vZGUqIHJldF9uZXQgPSBzLkNyZWF0ZVNp
bXVsYXRpb25Ob2RlKG5ldF9jb25mKTsKLSAgVmlkZW9TdHJlYW1QYWlyKiBhbGljZV92aWRlbyA9
IHMuQ3JlYXRlVmlkZW9TdHJlYW0oCi0gICAgICBhbGljZSwge3NlbmRfbmV0fSwgYm9iLCB7cmV0
X25ldH0sIFsmXShWaWRlb1N0cmVhbUNvbmZpZyogYykgeworICBhdXRvIHJvdXRlID0gcy5DcmVh
dGVSb3V0ZXMoYWxpY2UsIHtzZW5kX25ldH0sIGJvYiwge3JldF9uZXR9KTsKKworICBWaWRlb1N0
cmVhbVBhaXIqIGFsaWNlX3ZpZGVvID0KKyAgICAgIHMuQ3JlYXRlVmlkZW9TdHJlYW0ocm91dGUt
PmZvcndhcmQoKSwgWyZdKFZpZGVvU3RyZWFtQ29uZmlnKiBjKSB7CiAgICAgICAgIGMtPmVuY29k
ZXIuZmFrZS5tYXhfcmF0ZSA9IERhdGFSYXRlOjprYnBzKDE4MDApOwogICAgICAgfSk7Ci0gIHMu
Q3JlYXRlQXVkaW9TdHJlYW0oYWxpY2UsIHtzZW5kX25ldH0sIGJvYiwge3JldF9uZXR9LAotICAg
ICAgICAgICAgICAgICAgICAgIFsmXShBdWRpb1N0cmVhbUNvbmZpZyogYykgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbmZfLnR1bmluZy51c2VfYmJyKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGMtPnN0cmVhbS5pbl9iYW5kd2lkdGhfZXN0aW1hdGlvbiA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmVuY29kZXIuZml4ZWRfcmF0ZSA9IERhdGFSYXRl
OjprYnBzKDMxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgcy5DcmVhdGVBdWRpb1N0cmVhbShyb3V0ZS0+Zm9yd2FyZCgpLCBbJl0oQXVk
aW9TdHJlYW1Db25maWcqIGMpIHsKKyAgICBpZiAoY29uZl8udHVuaW5nLnVzZV9iYnIpIHsKKyAg
ICAgIGMtPnN0cmVhbS5pbl9iYW5kd2lkdGhfZXN0aW1hdGlvbiA9IHRydWU7CisgICAgICBjLT5l
bmNvZGVyLmZpeGVkX3JhdGUgPSBEYXRhUmF0ZTo6a2JwcygzMSk7CisgICAgfQorICB9KTsKIAog
ICBWaWRlb1N0cmVhbVBhaXIqIGJvYl92aWRlbyA9IG51bGxwdHI7CiAgIGlmIChjb25mXy5zY2Vu
YXJpby5yZXR1cm5fdHJhZmZpYykgewotICAgIGJvYl92aWRlbyA9IHMuQ3JlYXRlVmlkZW9TdHJl
YW0oCi0gICAgICAgIGJvYiwge3JldF9uZXR9LCBhbGljZSwge3NlbmRfbmV0fSwgWyZdKFZpZGVv
U3RyZWFtQ29uZmlnKiBjKSB7CisgICAgYm9iX3ZpZGVvID0KKyAgICAgICAgcy5DcmVhdGVWaWRl
b1N0cmVhbShyb3V0ZS0+cmV2ZXJzZSgpLCBbJl0oVmlkZW9TdHJlYW1Db25maWcqIGMpIHsKICAg
ICAgICAgICBjLT5lbmNvZGVyLmZha2UubWF4X3JhdGUgPSBEYXRhUmF0ZTo6a2JwcygxODAwKTsK
ICAgICAgICAgfSk7Ci0gICAgcy5DcmVhdGVBdWRpb1N0cmVhbShib2IsIHtyZXRfbmV0fSwgYWxp
Y2UsIHtzZW5kX25ldH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbJl0oQXVkaW9TdHJlYW1D
b25maWcqIGMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZfLnR1bmluZy51
c2VfYmJyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+c3RyZWFtLmluX2JhbmR3
aWR0aF9lc3RpbWF0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5l
bmNvZGVyLmZpeGVkX3JhdGUgPSBEYXRhUmF0ZTo6a2JwcygzMSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgIHMuQ3JlYXRlQXVk
aW9TdHJlYW0ocm91dGUtPnJldmVyc2UoKSwgWyZdKEF1ZGlvU3RyZWFtQ29uZmlnKiBjKSB7Cisg
ICAgICBpZiAoY29uZl8udHVuaW5nLnVzZV9iYnIpIHsKKyAgICAgICAgYy0+c3RyZWFtLmluX2Jh
bmR3aWR0aF9lc3RpbWF0aW9uID0gdHJ1ZTsKKyAgICAgICAgYy0+ZW5jb2Rlci5maXhlZF9yYXRl
ID0gRGF0YVJhdGU6OmticHMoMzEpOworICAgICAgfQorICAgIH0pOwogICB9CiAgIENyb3NzVHJh
ZmZpY0NvbmZpZyBjcm9zc19jb25maWc7CiAgIGNyb3NzX2NvbmZpZy5wZWFrX3JhdGUgPSBjb25m
Xy5zY2VuYXJpby5jcm9zc190cmFmZmljOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb191bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFy
aW8vc2NlbmFyaW9fdW5pdHRlc3QuY2MKaW5kZXggMzA1Zjg2NjBjY2Q3NDRlOWU3ZjU2M2Q4ZjMz
ZTJiZmRjMjRjOGNlMy4uOTcyODVkMzkxNDU5ZjJjZmM4YzNhZmM2NjViMzgxYzgxNTFmN2NjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9zY2VuYXJpby9zY2VuYXJpb191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvX3VuaXR0ZXN0LmNj
CkBAIC0yMSwxNCArMjEsMTkgQEAgVEVTVChTY2VuYXJpb1Rlc3QsIFN0YXJ0c0FuZFN0b3BzV2l0
aG91dEVycm9ycykgewogICBOZXR3b3JrTm9kZUNvbmZpZyBuZXR3b3JrX2NvbmZpZzsKICAgYXV0
byBhbGljZV9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKG5ldHdvcmtfY29uZmlnKTsKICAg
YXV0byBib2JfbmV0ID0gcy5DcmVhdGVTaW11bGF0aW9uTm9kZShuZXR3b3JrX2NvbmZpZyk7Cisg
IGF1dG8gcm91dGUgPSBzLkNyZWF0ZVJvdXRlcyhhbGljZSwge2FsaWNlX25ldH0sIGJvYiwge2Jv
Yl9uZXR9KTsKIAogICBWaWRlb1N0cmVhbUNvbmZpZyB2aWRlb19zdHJlYW1fY29uZmlnOwotICBz
LkNyZWF0ZVZpZGVvU3RyZWFtKGFsaWNlLCB7YWxpY2VfbmV0fSwgYm9iLCB7Ym9iX25ldH0sIHZp
ZGVvX3N0cmVhbV9jb25maWcpOwotICBzLkNyZWF0ZVZpZGVvU3RyZWFtKGJvYiwge2JvYl9uZXR9
LCBhbGljZSwge2FsaWNlX25ldH0sIHZpZGVvX3N0cmVhbV9jb25maWcpOworICBzLkNyZWF0ZVZp
ZGVvU3RyZWFtKHJvdXRlLT5mb3J3YXJkKCksIHZpZGVvX3N0cmVhbV9jb25maWcpOworICBzLkNy
ZWF0ZVZpZGVvU3RyZWFtKHJvdXRlLT5yZXZlcnNlKCksIHZpZGVvX3N0cmVhbV9jb25maWcpOwog
CiAgIEF1ZGlvU3RyZWFtQ29uZmlnIGF1ZGlvX3N0cmVhbV9jb25maWc7Ci0gIHMuQ3JlYXRlQXVk
aW9TdHJlYW0oYWxpY2UsIHthbGljZV9uZXR9LCBib2IsIHtib2JfbmV0fSwgYXVkaW9fc3RyZWFt
X2NvbmZpZyk7Ci0gIHMuQ3JlYXRlQXVkaW9TdHJlYW0oYm9iLCB7Ym9iX25ldH0sIGFsaWNlLCB7
YWxpY2VfbmV0fSwgYXVkaW9fc3RyZWFtX2NvbmZpZyk7CisgIGF1ZGlvX3N0cmVhbV9jb25maWcu
ZW5jb2Rlci5taW5fcmF0ZSA9IERhdGFSYXRlOjprYnBzKDYpOworICBhdWRpb19zdHJlYW1fY29u
ZmlnLmVuY29kZXIubWF4X3JhdGUgPSBEYXRhUmF0ZTo6a2Jwcyg2NCk7CisgIGF1ZGlvX3N0cmVh
bV9jb25maWcuZW5jb2Rlci5hbGxvY2F0ZV9iaXRyYXRlID0gdHJ1ZTsKKyAgYXVkaW9fc3RyZWFt
X2NvbmZpZy5zdHJlYW0uaW5fYmFuZHdpZHRoX2VzdGltYXRpb24gPSBmYWxzZTsKKyAgcy5DcmVh
dGVBdWRpb1N0cmVhbShyb3V0ZS0+Zm9yd2FyZCgpLCBhdWRpb19zdHJlYW1fY29uZmlnKTsKKyAg
cy5DcmVhdGVBdWRpb1N0cmVhbShyb3V0ZS0+cmV2ZXJzZSgpLCBhdWRpb19zdHJlYW1fY29uZmln
KTsKIAogICBDcm9zc1RyYWZmaWNDb25maWcgY3Jvc3NfdHJhZmZpY19jb25maWc7CiAgIHMuQ3Jl
YXRlQ3Jvc3NUcmFmZmljKHthbGljZV9uZXR9LCBjcm9zc190cmFmZmljX2NvbmZpZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Nj
ZW5hcmlvL3NpbXVsYXRlZF90aW1lLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zaW11bGF0ZWRfdGltZS5jYwppbmRleCBmMjlhODJj
NDU1MDI5ZjIzOTYxNGYzYzFlYWE0MmRjZDE2ZjliMzEzLi5hNTk3N2U3ZDk2NWQyMzZlOTk1NGUz
ODAxZGU0ZTE0NTFkYzk4MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NpbXVsYXRlZF90aW1lLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2lt
dWxhdGVkX3RpbWUuY2MKQEAgLTE0NCw3ICsxNDQsNyBAQCBUcmFuc3BvcnRQYWNrZXRzRmVlZGJh
Y2sgU2ltdWxhdGVkU2VuZGVyOjpQdWxsRmVlZGJhY2tSZXBvcnQoCiAgICAgICAgIH0KICAgICAg
IH0KIAotICAgICAgZGF0YV9pbl9mbGlnaHRfIC09IGZlZWRiYWNrLnNlbnRfcGFja2V0LT5zaXpl
OworICAgICAgZGF0YV9pbl9mbGlnaHRfIC09IGZlZWRiYWNrLnNlbnRfcGFja2V0LnNpemU7CiAg
ICAgICByZXBvcnQucGFja2V0X2ZlZWRiYWNrcy5wdXNoX2JhY2soZmVlZGJhY2spOwogICAgIH0K
ICAgfQpAQCAtMjUyLDExICsyNTIsMTIgQEAgU2ltdWxhdGVkVGltZUNsaWVudDo6U2ltdWxhdGVk
VGltZUNsaWVudCgKICAgICAgIHJldHVybl9saW5rXyhyZXR1cm5fbGluayksCiAgICAgICBzZW5k
ZXJfKHNlbmRfbGluay5mcm9udCgpLCBzZW5kX3JlY2VpdmVyX2lkKSwKICAgICAgIGZlZWRiYWNr
Xyhjb25maWcsIHJldHVybl9yZWNlaXZlcl9pZCwgcmV0dXJuX2xpbmsuZnJvbnQoKSkgeworICBj
dXJyZW50X2NvbnRyYWludHNfLmF0X3RpbWUgPSBhdF90aW1lOworICBjdXJyZW50X2NvbnRyYWlu
dHNfLnN0YXJ0aW5nX3JhdGUgPSBjb25maWcudHJhbnNwb3J0LnJhdGVzLnN0YXJ0X3JhdGU7Cisg
IGN1cnJlbnRfY29udHJhaW50c18ubWluX2RhdGFfcmF0ZSA9IGNvbmZpZy50cmFuc3BvcnQucmF0
ZXMubWluX3JhdGU7CisgIGN1cnJlbnRfY29udHJhaW50c18ubWF4X2RhdGFfcmF0ZSA9IGNvbmZp
Zy50cmFuc3BvcnQucmF0ZXMubWF4X3JhdGU7CiAgIE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGlu
aXRpYWxfY29uZmlnOwotICBpbml0aWFsX2NvbmZpZy5jb25zdHJhaW50cy5hdF90aW1lID0gYXRf
dGltZTsKLSAgaW5pdGlhbF9jb25maWcuY29uc3RyYWludHMuc3RhcnRpbmdfcmF0ZSA9IGNvbmZp
Zy50cmFuc3BvcnQucmF0ZXMuc3RhcnRfcmF0ZTsKLSAgaW5pdGlhbF9jb25maWcuY29uc3RyYWlu
dHMubWluX2RhdGFfcmF0ZSA9IGNvbmZpZy50cmFuc3BvcnQucmF0ZXMubWluX3JhdGU7Ci0gIGlu
aXRpYWxfY29uZmlnLmNvbnN0cmFpbnRzLm1heF9kYXRhX3JhdGUgPSBjb25maWcudHJhbnNwb3J0
LnJhdGVzLm1heF9yYXRlOworICBpbml0aWFsX2NvbmZpZy5jb25zdHJhaW50cyA9IGN1cnJlbnRf
Y29udHJhaW50c187CiAgIGNvbmdlc3Rpb25fY29udHJvbGxlcl8gPSBuZXR3b3JrX2NvbnRyb2xs
ZXJfZmFjdG9yeV8uQ3JlYXRlKGluaXRpYWxfY29uZmlnKTsKICAgZm9yIChhdXRvJiBzdHJlYW1f
Y29uZmlnIDogc3RyZWFtX2NvbmZpZ3MpCiAgICAgcGFja2V0X3N0cmVhbXNfLmVtcGxhY2VfYmFj
ayhuZXcgUGFja2V0U3RyZWFtKHN0cmVhbV9jb25maWcpKTsKQEAgLTI4Myw5ICsyODQsOSBAQCBi
b29sIFNpbXVsYXRlZFRpbWVDbGllbnQ6OlRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0
ZUJ1ZmZlciByYXdfYnVmZmVyLAogICBmb3IgKFBhY2tldFJlc3VsdCYgZmVlZGJhY2sgOiByZXBv
cnQucGFja2V0X2ZlZWRiYWNrcykgewogICAgIGlmIChwYWNrZXRfbG9nXykKICAgICAgIGZwcmlu
dGYocGFja2V0X2xvZ18sICIlIiBQUklkNjQgIiAlIiBQUklkNjQgIiAlLjNsZiAlLjNsZiAlLjNs
ZlxuIiwKLSAgICAgICAgICAgICAgZmVlZGJhY2suc2VudF9wYWNrZXQtPnNlcXVlbmNlX251bWJl
ciwKLSAgICAgICAgICAgICAgZmVlZGJhY2suc2VudF9wYWNrZXQtPnNpemUuYnl0ZXMoKSwKLSAg
ICAgICAgICAgICAgZmVlZGJhY2suc2VudF9wYWNrZXQtPnNlbmRfdGltZS5zZWNvbmRzPGRvdWJs
ZT4oKSwKKyAgICAgICAgICAgICAgZmVlZGJhY2suc2VudF9wYWNrZXQuc2VxdWVuY2VfbnVtYmVy
LAorICAgICAgICAgICAgICBmZWVkYmFjay5zZW50X3BhY2tldC5zaXplLmJ5dGVzKCksCisgICAg
ICAgICAgICAgIGZlZWRiYWNrLnNlbnRfcGFja2V0LnNlbmRfdGltZS5zZWNvbmRzPGRvdWJsZT4o
KSwKICAgICAgICAgICAgICAgZmVlZGJhY2sucmVjZWl2ZV90aW1lLnNlY29uZHM8ZG91YmxlPigp
LAogICAgICAgICAgICAgICBhdF90aW1lLnNlY29uZHM8ZG91YmxlPigpKTsKICAgfQpAQCAtMzA3
LDYgKzMwOCw3IEBAIHZvaWQgU2ltdWxhdGVkVGltZUNsaWVudDo6VXBkYXRlKE5ldHdvcmtDb250
cm9sVXBkYXRlIHVwZGF0ZSkgewogICAgIERhdGFSYXRlIHJhdGVfcGVyX3N0cmVhbSA9CiAgICAg
ICAgIHVwZGF0ZS50YXJnZXRfcmF0ZS0+dGFyZ2V0X3JhdGUgKiByYXRpb19wZXJfc3RyZWFtOwog
ICAgIHRhcmdldF9yYXRlXyA9IHVwZGF0ZS50YXJnZXRfcmF0ZS0+dGFyZ2V0X3JhdGU7CisgICAg
bGlua19jYXBhY2l0eV8gPSB1cGRhdGUudGFyZ2V0X3JhdGUtPm5ldHdvcmtfZXN0aW1hdGUuYmFu
ZHdpZHRoOwogICAgIGZvciAoYXV0byYgc3RyZWFtIDogcGFja2V0X3N0cmVhbXNfKQogICAgICAg
c3RyZWFtLT5PblRhcmdldFJhdGVVcGRhdGUocmF0ZV9wZXJfc3RyZWFtKTsKICAgfQpAQCAtMzM2
LDEwICszMzgsMjIgQEAgdm9pZCBTaW11bGF0ZWRUaW1lQ2xpZW50OjpQcm9jZXNzRnJhbWVzKFRp
bWVzdGFtcCBhdF90aW1lKSB7CiAgIH0KIH0KIAordm9pZCBTaW11bGF0ZWRUaW1lQ2xpZW50OjpU
cmlnZ2VyRmFrZVJlcm91dGUoVGltZXN0YW1wIGF0X3RpbWUpIHsKKyAgTmV0d29ya1JvdXRlQ2hh
bmdlIG1zZzsKKyAgbXNnLmF0X3RpbWUgPSBhdF90aW1lOworICBtc2cuY29uc3RyYWludHMgPSBj
dXJyZW50X2NvbnRyYWludHNfOworICBtc2cuY29uc3RyYWludHMuYXRfdGltZSA9IGF0X3RpbWU7
CisgIFVwZGF0ZShjb25nZXN0aW9uX2NvbnRyb2xsZXJfLT5Pbk5ldHdvcmtSb3V0ZUNoYW5nZSht
c2cpKTsKK30KKwogVGltZURlbHRhIFNpbXVsYXRlZFRpbWVDbGllbnQ6OkdldE5ldHdvcmtDb250
cm9sbGVyUHJvY2Vzc0ludGVydmFsKCkgY29uc3QgewogICByZXR1cm4gbmV0d29ya19jb250cm9s
bGVyX2ZhY3RvcnlfLkdldFByb2Nlc3NJbnRlcnZhbCgpOwogfQogCitEYXRhUmF0ZSBTaW11bGF0
ZWRUaW1lQ2xpZW50OjpsaW5rX2NhcGFjaXR5KCkgY29uc3QgeworICByZXR1cm4gbGlua19jYXBh
Y2l0eV87Cit9CisKIGRvdWJsZSBTaW11bGF0ZWRUaW1lQ2xpZW50Ojp0YXJnZXRfcmF0ZV9rYnBz
KCkgY29uc3QgewogICByZXR1cm4gdGFyZ2V0X3JhdGVfLmticHM8ZG91YmxlPigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9z
Y2VuYXJpby9zaW11bGF0ZWRfdGltZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zaW11bGF0ZWRfdGltZS5oCmluZGV4IGI5YzZkZTEy
NGQ0MWY1ZDUzYWJlOTI4MTliNWVhNjVkZDQxMmJkNGIuLjc5ZmRmODQ1NzM2ZDI2YTQ0MmYxN2Ux
YjYyYzY4MDI4OWUzMGQ1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2ltdWxhdGVkX3RpbWUuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NpbXVs
YXRlZF90aW1lLmgKQEAgLTEyOSw4ICsxMjksMTAgQEAgY2xhc3MgU2ltdWxhdGVkVGltZUNsaWVu
dCA6IE5ldHdvcmtSZWNlaXZlckludGVyZmFjZSB7CiAgIHZvaWQgQ29uZ2VzdGlvblByb2Nlc3Mo
VGltZXN0YW1wIGF0X3RpbWUpOwogICB2b2lkIFBhY2VyUHJvY2VzcyhUaW1lc3RhbXAgYXRfdGlt
ZSk7CiAgIHZvaWQgUHJvY2Vzc0ZyYW1lcyhUaW1lc3RhbXAgYXRfdGltZSk7CisgIHZvaWQgVHJp
Z2dlckZha2VSZXJvdXRlKFRpbWVzdGFtcCBhdF90aW1lKTsKICAgVGltZURlbHRhIEdldE5ldHdv
cmtDb250cm9sbGVyUHJvY2Vzc0ludGVydmFsKCkgY29uc3Q7CiAgIGRvdWJsZSB0YXJnZXRfcmF0
ZV9rYnBzKCkgY29uc3Q7CisgIERhdGFSYXRlIGxpbmtfY2FwYWNpdHkoKSBjb25zdDsKIAogICBi
b29sIFRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlciwKQEAgLTE0NCw3ICsxNDYsOSBA
QCBjbGFzcyBTaW11bGF0ZWRUaW1lQ2xpZW50IDogTmV0d29ya1JlY2VpdmVySW50ZXJmYWNlIHsK
ICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGlua187CiAgIFNpbXVsYXRlZFNl
bmRlciBzZW5kZXJfOwogICBTaW11bGF0ZWRGZWVkYmFjayBmZWVkYmFja187CisgIFRhcmdldFJh
dGVDb25zdHJhaW50cyBjdXJyZW50X2NvbnRyYWludHNfOwogICBEYXRhUmF0ZSB0YXJnZXRfcmF0
ZV8gPSBEYXRhUmF0ZTo6SW5maW5pdHkoKTsKKyAgRGF0YVJhdGUgbGlua19jYXBhY2l0eV8gPSBE
YXRhUmF0ZTo6SW5maW5pdHkoKTsKICAgRklMRSogcGFja2V0X2xvZ18gPSBudWxscHRyOwogCiAg
IHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQYWNrZXRTdHJlYW0+PiBwYWNrZXRfc3RyZWFt
c187CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3NjZW5hcmlvL3ZpZGVvX3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vdmlkZW9fc3RyZWFtLmNjCmluZGV4IGI4
NTAzNGZmYjIwMjIzMzAyYjY5MjMyMzU4YWViMzU5N2JkZmQwM2MuLjM2Mzk5MjM0YWRjYWY5OGQy
YWI2YzQ2ODE4NjE0YjNmNWRkNmMxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vdmlkZW9fc3RyZWFtLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8v
dmlkZW9fc3RyZWFtLmNjCkBAIC0xMiwxMyArMTIsMTQgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+
CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9u
X3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9idWlsdGluX3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21l
ZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZh
Y3RvcnkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5o
IgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZS5oIgogI2luY2x1ZGUg
InRlc3QvY2FsbF90ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9mYWtlX2VuY29kZXIuaCIKLSNpbmNs
dWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInRl
c3Qvc2NlbmFyaW8vaGFyZHdhcmVfY29kZWNzLmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9y
dC9maWxldXRpbHMuaCIKIApAQCAtMTMxLDExICsxMzIsMjAgQEAgVmlkZW9FbmNvZGVyQ29uZmln
IENyZWF0ZVZpZGVvRW5jb2RlckNvbmZpZyhWaWRlb1N0cmVhbUNvbmZpZyBjb25maWcpIHsKICAg
c2l6ZV90IG51bV9zdHJlYW1zID0gY29uZmlnLmVuY29kZXIubnVtX3NpbXVsY2FzdF9zdHJlYW1z
OwogICBWaWRlb0VuY29kZXJDb25maWcgZW5jb2Rlcl9jb25maWc7CiAgIGVuY29kZXJfY29uZmln
LmNvZGVjX3R5cGUgPSBjb25maWcuZW5jb2Rlci5jb2RlYzsKLSAgZW5jb2Rlcl9jb25maWcuY29u
dGVudF90eXBlID0gVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1JlYWx0aW1lVmlk
ZW87CisgIHN3aXRjaCAoY29uZmlnLnNvdXJjZS5jb250ZW50X3R5cGUpIHsKKyAgICBjYXNlIFZp
ZGVvU3RyZWFtQ29uZmlnOjpTb3VyY2U6OkNvbnRlbnRUeXBlOjprVmlkZW86CisgICAgICBlbmNv
ZGVyX2NvbmZpZy5jb250ZW50X3R5cGUgPQorICAgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZzo6
Q29udGVudFR5cGU6OmtSZWFsdGltZVZpZGVvOworICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRl
b1N0cmVhbUNvbmZpZzo6U291cmNlOjpDb250ZW50VHlwZTo6a1NjcmVlbjoKKyAgICAgIGVuY29k
ZXJfY29uZmlnLmNvbnRlbnRfdHlwZSA9IFZpZGVvRW5jb2RlckNvbmZpZzo6Q29udGVudFR5cGU6
OmtTY3JlZW47CisgICAgICBicmVhazsKKyAgfQogICBlbmNvZGVyX2NvbmZpZy52aWRlb19mb3Jt
YXQgPQogICAgICAgU2RwVmlkZW9Gb3JtYXQoQ29kZWNUeXBlVG9QYXlsb2FkU3RyaW5nKGNvbmZp
Zy5lbmNvZGVyLmNvZGVjKSwge30pOwogICBlbmNvZGVyX2NvbmZpZy5udW1iZXJfb2Zfc3RyZWFt
cyA9IG51bV9zdHJlYW1zOwogICBlbmNvZGVyX2NvbmZpZy5zaW11bGNhc3RfbGF5ZXJzID0gc3Rk
Ojp2ZWN0b3I8VmlkZW9TdHJlYW0+KG51bV9zdHJlYW1zKTsKKyAgZW5jb2Rlcl9jb25maWcubWlu
X3RyYW5zbWl0X2JpdHJhdGVfYnBzID0gY29uZmlnLnN0cmVhbS5wYWRfdG9fcmF0ZS5icHMoKTsK
IAogICBzdGQ6OnN0cmluZyBjcmlja2V0X2NvZGVjID0gQ29kZWNUeXBlVG9Db2RlY05hbWUoY29u
ZmlnLmVuY29kZXIuY29kZWMpOwogICBpZiAoIWNyaWNrZXRfY29kZWMuZW1wdHkoKSkgewpAQCAt
MTUzLDYgKzE2MywxMiBAQCBWaWRlb0VuY29kZXJDb25maWcgQ3JlYXRlVmlkZW9FbmNvZGVyQ29u
ZmlnKFZpZGVvU3RyZWFtQ29uZmlnIGNvbmZpZykgewogICB9CiAgIGVuY29kZXJfY29uZmlnLmVu
Y29kZXJfc3BlY2lmaWNfc2V0dGluZ3MgPQogICAgICAgQ3JlYXRlRW5jb2RlclNwZWNpZmljU2V0
dGluZ3MoY29uZmlnKTsKKyAgaWYgKGNvbmZpZy5lbmNvZGVyLm1heF9mcmFtZXJhdGUpIHsKKyAg
ICBmb3IgKGF1dG8mIGxheWVyIDogZW5jb2Rlcl9jb25maWcuc2ltdWxjYXN0X2xheWVycykgewor
ICAgICAgbGF5ZXIubWF4X2ZyYW1lcmF0ZSA9ICpjb25maWcuZW5jb2Rlci5tYXhfZnJhbWVyYXRl
OworICAgIH0KKyAgfQorCiAgIHJldHVybiBlbmNvZGVyX2NvbmZpZzsKIH0KIH0gIC8vIG5hbWVz
cGFjZQpAQCAtMTkzLDExICsyMDksMTMgQEAgU2VuZFZpZGVvU3RyZWFtOjpTZW5kVmlkZW9TdHJl
YW0oQ2FsbENsaWVudCogc2VuZGVyLAogICAgIGNhc2UgRW5jb2Rlcjo6SW1wbGVtZW50YXRpb246
OmtGYWtlOgogICAgICAgaWYgKGNvbmZpZy5lbmNvZGVyLmNvZGVjID09IENvZGVjOjprVmlkZW9D
b2RlY0dlbmVyaWMpIHsKICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5XyA9Ci0gICAgICAgICAgICBh
YnNsOjptYWtlX3VuaXF1ZTxGdW5jdGlvblZpZGVvRW5jb2RlckZhY3Rvcnk+KFt0aGlzLCBjb25m
aWddKCkgeworICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RnVuY3Rpb25WaWRlb0VuY29k
ZXJGYWN0b3J5PihbdGhpc10oKSB7CisgICAgICAgICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZj
cml0Xyk7CiAgICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9CiAgICAgICAgICAgICAgICAgICBh
YnNsOjptYWtlX3VuaXF1ZTx0ZXN0OjpGYWtlRW5jb2Rlcj4oc2VuZGVyXy0+Y2xvY2tfKTsKLSAg
ICAgICAgICAgICAgaWYgKGNvbmZpZy5lbmNvZGVyLmZha2UubWF4X3JhdGUuSXNGaW5pdGUoKSkK
LSAgICAgICAgICAgICAgICBlbmNvZGVyLT5TZXRNYXhCaXRyYXRlKGNvbmZpZy5lbmNvZGVyLmZh
a2UubWF4X3JhdGUua2JwcygpKTsKKyAgICAgICAgICAgICAgZmFrZV9lbmNvZGVyc18ucHVzaF9i
YWNrKGVuY29kZXIuZ2V0KCkpOworICAgICAgICAgICAgICBpZiAoY29uZmlnXy5lbmNvZGVyLmZh
a2UubWF4X3JhdGUuSXNGaW5pdGUoKSkKKyAgICAgICAgICAgICAgICBlbmNvZGVyLT5TZXRNYXhC
aXRyYXRlKGNvbmZpZ18uZW5jb2Rlci5mYWtlLm1heF9yYXRlLmticHMoKSk7CiAgICAgICAgICAg
ICAgIHJldHVybiBlbmNvZGVyOwogICAgICAgICAgICAgfSk7CiAgICAgICB9IGVsc2UgewpAQCAt
MjEzLDkgKzIzMSwxNSBAQCBTZW5kVmlkZW9TdHJlYW06OlNlbmRWaWRlb1N0cmVhbShDYWxsQ2xp
ZW50KiBzZW5kZXIsCiAgIH0KICAgUlRDX0NIRUNLKGVuY29kZXJfZmFjdG9yeV8pOwogCisgIGJp
dHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfID0gQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9j
YXRvckZhY3RvcnkoKTsKKyAgUlRDX0NIRUNLKGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfKTsK
KwogICBWaWRlb1NlbmRTdHJlYW06OkNvbmZpZyBzZW5kX2NvbmZpZyA9CiAgICAgICBDcmVhdGVW
aWRlb1NlbmRTdHJlYW1Db25maWcoY29uZmlnLCBzc3Jjc18sIHNlbmRfdHJhbnNwb3J0KTsKICAg
c2VuZF9jb25maWcuZW5jb2Rlcl9zZXR0aW5ncy5lbmNvZGVyX2ZhY3RvcnkgPSBlbmNvZGVyX2Zh
Y3RvcnlfLmdldCgpOworICBzZW5kX2NvbmZpZy5lbmNvZGVyX3NldHRpbmdzLmJpdHJhdGVfYWxs
b2NhdG9yX2ZhY3RvcnkgPQorICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8uZ2V0KCk7
CisKICAgVmlkZW9FbmNvZGVyQ29uZmlnIGVuY29kZXJfY29uZmlnID0gQ3JlYXRlVmlkZW9FbmNv
ZGVyQ29uZmlnKGNvbmZpZyk7CiAKICAgc2VuZF9zdHJlYW1fID0gc2VuZGVyXy0+Y2FsbF8tPkNy
ZWF0ZVZpZGVvU2VuZFN0cmVhbSgKQEAgLTIzMiwyOSArMjU2LDM0IEBAIFNlbmRWaWRlb1N0cmVh
bTo6flNlbmRWaWRlb1N0cmVhbSgpIHsKIHZvaWQgU2VuZFZpZGVvU3RyZWFtOjpTdGFydCgpIHsK
ICAgc2VuZF9zdHJlYW1fLT5TdGFydCgpOwogICB2aWRlb19jYXB0dXJlcl8tPlN0YXJ0KCk7Cisg
IHNlbmRlcl8tPmNhbGxfLT5TaWduYWxDaGFubmVsTmV0d29ya1N0YXRlKE1lZGlhVHlwZTo6VklE
RU8sIGtOZXR3b3JrVXApOwogfQogCi1ib29sIFNlbmRWaWRlb1N0cmVhbTo6VHJ5RGVsaXZlclBh
Y2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKLSAgLy8gUmVtb3ZlcyBh
ZGRlZCBvdmVyaGVhZCBiZWZvcmUgZGVsaXZlcmluZyBSVENQIHBhY2tldCB0byBzZW5kZXIuCi0g
IFJUQ19EQ0hFQ0tfR0UocGFja2V0LnNpemUoKSwgY29uZmlnXy5zdHJlYW0ucGFja2V0X292ZXJo
ZWFkLmJ5dGVzKCkpOwotICBwYWNrZXQuU2V0U2l6ZShwYWNrZXQuc2l6ZSgpIC0gY29uZmlnXy5z
dHJlYW0ucGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwotICBzZW5kZXJfLT5EZWxpdmVyUGFja2V0
KE1lZGlhVHlwZTo6VklERU8sIHBhY2tldCwgYXRfdGltZSk7Ci0gIHJldHVybiB0cnVlOwordm9p
ZCBTZW5kVmlkZW9TdHJlYW06OlVwZGF0ZUNvbmZpZygKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQo
VmlkZW9TdHJlYW1Db25maWcqKT4gbW9kaWZpZXIpIHsKKyAgcnRjOjpDcml0U2NvcGUgY3MoJmNy
aXRfKTsKKyAgVmlkZW9TdHJlYW1Db25maWcgcHJpb3JfY29uZmlnID0gY29uZmlnXzsKKyAgbW9k
aWZpZXIoJmNvbmZpZ18pOworICBpZiAocHJpb3JfY29uZmlnLmVuY29kZXIuZmFrZS5tYXhfcmF0
ZSAhPSBjb25maWdfLmVuY29kZXIuZmFrZS5tYXhfcmF0ZSkgeworICAgIGZvciAoYXV0byogZW5j
b2RlciA6IGZha2VfZW5jb2RlcnNfKSB7CisgICAgICBlbmNvZGVyLT5TZXRNYXhCaXRyYXRlKGNv
bmZpZ18uZW5jb2Rlci5mYWtlLm1heF9yYXRlLmticHMoKSk7CisgICAgfQorICB9CisgIC8vIFRP
RE8oc3J0ZSk6IEFkZCBtb3JlIGNvbmRpdGlvbnMgdGhhdCBzaG91bGQgY2F1c2UgcmVjb25maWd1
cmF0aW9uLgorICBpZiAocHJpb3JfY29uZmlnLmVuY29kZXIubWF4X2ZyYW1lcmF0ZSAhPSBjb25m
aWdfLmVuY29kZXIubWF4X2ZyYW1lcmF0ZSkgeworICAgIFZpZGVvRW5jb2RlckNvbmZpZyBlbmNv
ZGVyX2NvbmZpZyA9IENyZWF0ZVZpZGVvRW5jb2RlckNvbmZpZyhjb25maWdfKTsKKyAgICBzZW5k
X3N0cmVhbV8tPlJlY29uZmlndXJlVmlkZW9FbmNvZGVyKHN0ZDo6bW92ZShlbmNvZGVyX2NvbmZp
ZykpOworICB9CisgIGlmIChwcmlvcl9jb25maWcuc291cmNlLmZyYW1lcmF0ZSAhPSBjb25maWdf
LnNvdXJjZS5mcmFtZXJhdGUpIHsKKyAgICBTZXRDYXB0dXJlRnJhbWVyYXRlKGNvbmZpZ18uc291
cmNlLmZyYW1lcmF0ZSk7CisgIH0KIH0KIAogdm9pZCBTZW5kVmlkZW9TdHJlYW06OlNldENhcHR1
cmVGcmFtZXJhdGUoaW50IGZyYW1lcmF0ZSkgewogICBSVENfQ0hFQ0soZnJhbWVfZ2VuZXJhdG9y
XykKICAgICAgIDw8ICJGcmFtZXJhdGUgY2hhbmdlIG9ubHkgaW1wbGVtZW50ZWQgZm9yIGdlbmVy
YXRvcnMiOwogICBmcmFtZV9nZW5lcmF0b3JfLT5DaGFuZ2VGcmFtZXJhdGUoZnJhbWVyYXRlKTsK
LX0KIAotdm9pZCBTZW5kVmlkZW9TdHJlYW06OlNldE1heEZyYW1lcmF0ZShhYnNsOjpvcHRpb25h
bDxpbnQ+IG1heF9mcmFtZXJhdGUpIHsKLSAgVmlkZW9FbmNvZGVyQ29uZmlnIGVuY29kZXJfY29u
ZmlnID0gQ3JlYXRlVmlkZW9FbmNvZGVyQ29uZmlnKGNvbmZpZ18pOwotICBSVENfRENIRUNLX0VR
KGVuY29kZXJfY29uZmlnLnNpbXVsY2FzdF9sYXllcnMuc2l6ZSgpLCAxKTsKLSAgZW5jb2Rlcl9j
b25maWcuc2ltdWxjYXN0X2xheWVyc1swXS5tYXhfZnJhbWVyYXRlID0gbWF4X2ZyYW1lcmF0ZS52
YWx1ZV9vcigtMSk7Ci0gIHNlbmRfc3RyZWFtXy0+UmVjb25maWd1cmVWaWRlb0VuY29kZXIoc3Rk
Ojptb3ZlKGVuY29kZXJfY29uZmlnKSk7CiB9CiAKIFZpZGVvU2VuZFN0cmVhbTo6U3RhdHMgU2Vu
ZFZpZGVvU3RyZWFtOjpHZXRTdGF0cygpIGNvbnN0IHsKQEAgLTI4NCwxNSArMzEzLDE0IEBAIFJl
Y2VpdmVWaWRlb1N0cmVhbTo6UmVjZWl2ZVZpZGVvU3RyZWFtKENhbGxDbGllbnQqIHJlY2VpdmVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZFZpZGVvU3RyZWFt
KiBzZW5kX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBjaG9zZW5fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVHJhbnNwb3J0KiBmZWVkYmFja190cmFuc3BvcnQpCi0gICAgOiByZWNlaXZlcl8ocmVjZWl2
ZXIpLAotICAgICAgY29uZmlnXyhjb25maWcpLAotICAgICAgZGVjb2Rlcl9mYWN0b3J5XyhhYnNs
OjptYWtlX3VuaXF1ZTxJbnRlcm5hbERlY29kZXJGYWN0b3J5PigpKSB7CisgICAgOiByZWNlaXZl
cl8ocmVjZWl2ZXIpLCBjb25maWdfKGNvbmZpZykgewogICByZW5kZXJlcl8gPSBhYnNsOjptYWtl
X3VuaXF1ZTxGYWtlVmlkZW9SZW5kZXJlcj4oKTsKICAgVmlkZW9SZWNlaXZlU3RyZWFtOjpDb25m
aWcgcmVjdl9jb25maWcoZmVlZGJhY2tfdHJhbnNwb3J0KTsKICAgcmVjdl9jb25maWcucnRwLnJl
bWIgPSAhY29uZmlnLnN0cmVhbS5wYWNrZXRfZmVlZGJhY2s7CiAgIHJlY3ZfY29uZmlnLnJ0cC50
cmFuc3BvcnRfY2MgPSBjb25maWcuc3RyZWFtLnBhY2tldF9mZWVkYmFjazsKICAgcmVjdl9jb25m
aWcucnRwLmxvY2FsX3NzcmMgPSBDYWxsVGVzdDo6a1JlY2VpdmVyTG9jYWxWaWRlb1NzcmM7CiAg
IHJlY3ZfY29uZmlnLnJ0cC5leHRlbnNpb25zID0gR2V0VmlkZW9SdHBFeHRlbnNpb25zKGNvbmZp
Zyk7CisgIHJlY2VpdmVyXy0+QWRkRXh0ZW5zaW9ucyhyZWN2X2NvbmZpZy5ydHAuZXh0ZW5zaW9u
cyk7CiAgIFJUQ19EQ0hFQ0soIWNvbmZpZy5zdHJlYW0udXNlX3J0eCB8fAogICAgICAgICAgICAg
IGNvbmZpZy5zdHJlYW0ubmFja19oaXN0b3J5X3RpbWUgPiBUaW1lRGVsdGE6Olplcm8oKSk7CiAg
IHJlY3ZfY29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zID0gY29uZmlnLnN0cmVhbS5uYWNr
X2hpc3RvcnlfdGltZS5tcygpOwpAQCAtMzAwLDE0ICszMjgsMjQgQEAgUmVjZWl2ZVZpZGVvU3Ry
ZWFtOjpSZWNlaXZlVmlkZW9TdHJlYW0oQ2FsbENsaWVudCogcmVjZWl2ZXIsCiAgIHJlY3ZfY29u
ZmlnLnJlbmRlcmVyID0gcmVuZGVyZXJfLmdldCgpOwogICBpZiAoY29uZmlnLnN0cmVhbS51c2Vf
cnR4KSB7CiAgICAgcmVjdl9jb25maWcucnRwLnJ0eF9zc3JjID0gc2VuZF9zdHJlYW0tPnJ0eF9z
c3Jjc19bY2hvc2VuX3N0cmVhbV07CisgICAgcmVjZWl2ZXItPnNzcmNfbWVkaWFfdHlwZXNfW3Jl
Y3ZfY29uZmlnLnJ0cC5ydHhfc3NyY10gPSBNZWRpYVR5cGU6OlZJREVPOwogICAgIHJlY3ZfY29u
ZmlnLnJ0cAogICAgICAgICAucnR4X2Fzc29jaWF0ZWRfcGF5bG9hZF90eXBlc1tDYWxsVGVzdDo6
a1NlbmRSdHhQYXlsb2FkVHlwZV0gPQogICAgICAgICBDb2RlY1R5cGVUb1BheWxvYWRUeXBlKGNv
bmZpZy5lbmNvZGVyLmNvZGVjKTsKICAgfQogICByZWN2X2NvbmZpZy5ydHAucmVtb3RlX3NzcmMg
PSBzZW5kX3N0cmVhbS0+c3NyY3NfW2Nob3Nlbl9zdHJlYW1dOworICByZWNlaXZlci0+c3NyY19t
ZWRpYV90eXBlc19bcmVjdl9jb25maWcucnRwLnJlbW90ZV9zc3JjXSA9IE1lZGlhVHlwZTo6VklE
RU87CisKICAgVmlkZW9SZWNlaXZlU3RyZWFtOjpEZWNvZGVyIGRlY29kZXIgPQogICAgICAgQ3Jl
YXRlTWF0Y2hpbmdEZWNvZGVyKENvZGVjVHlwZVRvUGF5bG9hZFR5cGUoY29uZmlnLmVuY29kZXIu
Y29kZWMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVjVHlwZVRvUGF5bG9hZFN0
cmluZyhjb25maWcuZW5jb2Rlci5jb2RlYykpOworICBpZiAoY29uZmlnLmVuY29kZXIuY29kZWMg
PT0KKyAgICAgIFZpZGVvU3RyZWFtQ29uZmlnOjpFbmNvZGVyOjpDb2RlYzo6a1ZpZGVvQ29kZWNH
ZW5lcmljKSB7CisgICAgZGVjb2Rlcl9mYWN0b3J5XyA9IGFic2w6Om1ha2VfdW5pcXVlPEZ1bmN0
aW9uVmlkZW9EZWNvZGVyRmFjdG9yeT4oCisgICAgICAgIFtdKCkgeyByZXR1cm4gYWJzbDo6bWFr
ZV91bmlxdWU8RmFrZURlY29kZXI+KCk7IH0pOworICB9IGVsc2UgeworICAgIGRlY29kZXJfZmFj
dG9yeV8gPSBhYnNsOjptYWtlX3VuaXF1ZTxJbnRlcm5hbERlY29kZXJGYWN0b3J5PigpOworICB9
CiAgIGRlY29kZXIuZGVjb2Rlcl9mYWN0b3J5ID0gZGVjb2Rlcl9mYWN0b3J5Xy5nZXQoKTsKICAg
cmVjdl9jb25maWcuZGVjb2RlcnMucHVzaF9iYWNrKGRlY29kZXIpOwogCkBAIC0zMTYsNiArMzU0
LDcgQEAgUmVjZWl2ZVZpZGVvU3RyZWFtOjpSZWNlaXZlVmlkZW9TdHJlYW0oQ2FsbENsaWVudCog
cmVjZWl2ZXIsCiAgICAgRmxleGZlY1JlY2VpdmVTdHJlYW06OkNvbmZpZyBmbGV4ZmVjX2NvbmZp
ZyhmZWVkYmFja190cmFuc3BvcnQpOwogICAgIGZsZXhmZWNfY29uZmlnLnBheWxvYWRfdHlwZSA9
IENhbGxUZXN0OjprRmxleGZlY1BheWxvYWRUeXBlOwogICAgIGZsZXhmZWNfY29uZmlnLnJlbW90
ZV9zc3JjID0gQ2FsbFRlc3Q6OmtGbGV4ZmVjU2VuZFNzcmM7CisgICAgcmVjZWl2ZXItPnNzcmNf
bWVkaWFfdHlwZXNfW2ZsZXhmZWNfY29uZmlnLnJlbW90ZV9zc3JjXSA9IE1lZGlhVHlwZTo6VklE
RU87CiAgICAgZmxleGZlY19jb25maWcucHJvdGVjdGVkX21lZGlhX3NzcmNzID0gc2VuZF9zdHJl
YW0tPnJ0eF9zc3Jjc187CiAgICAgZmxleGZlY19jb25maWcubG9jYWxfc3NyYyA9IHJlY3ZfY29u
ZmlnLnJ0cC5sb2NhbF9zc3JjOwogICAgIGZsZWNmZWNfc3RyZWFtXyA9CkBAIC0zMzcsNDYgKzM3
NiwyMyBAQCBSZWNlaXZlVmlkZW9TdHJlYW06On5SZWNlaXZlVmlkZW9TdHJlYW0oKSB7CiAgICAg
cmVjZWl2ZXJfLT5jYWxsXy0+RGVzdHJveUZsZXhmZWNSZWNlaXZlU3RyZWFtKGZsZWNmZWNfc3Ry
ZWFtXyk7CiB9CiAKLWJvb2wgUmVjZWl2ZVZpZGVvU3RyZWFtOjpUcnlEZWxpdmVyUGFja2V0KHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIgcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDY0X3QgcmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSkgewotICBSVENfRENIRUNLX0dF
KHBhY2tldC5zaXplKCksIGNvbmZpZ18uc3RyZWFtLnBhY2tldF9vdmVyaGVhZC5ieXRlcygpKTsK
LSAgcGFja2V0LlNldFNpemUocGFja2V0LnNpemUoKSAtIGNvbmZpZ18uc3RyZWFtLnBhY2tldF9v
dmVyaGVhZC5ieXRlcygpKTsKLSAgcmVjZWl2ZXJfLT5EZWxpdmVyUGFja2V0KE1lZGlhVHlwZTo6
VklERU8sIHBhY2tldCwgYXRfdGltZSk7Ci0gIHJldHVybiB0cnVlOwordm9pZCBSZWNlaXZlVmlk
ZW9TdHJlYW06OlN0YXJ0KCkgeworICByZWNlaXZlX3N0cmVhbV8tPlN0YXJ0KCk7CisgIHJlY2Vp
dmVyXy0+Y2FsbF8tPlNpZ25hbENoYW5uZWxOZXR3b3JrU3RhdGUoTWVkaWFUeXBlOjpWSURFTywg
a05ldHdvcmtVcCk7CiB9CiAKIFZpZGVvU3RyZWFtUGFpcjo6flZpZGVvU3RyZWFtUGFpcigpID0g
ZGVmYXVsdDsKIAogVmlkZW9TdHJlYW1QYWlyOjpWaWRlb1N0cmVhbVBhaXIoQ2FsbENsaWVudCog
c2VuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0
d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50NjRfdCBzZW5kX3JlY2VpdmVyX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ2FsbENsaWVudCogcmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmV0dXJuX3JlY2VpdmVyX2lkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9TdHJlYW1Db25maWcgY29uZmlnKQogICAgIDog
Y29uZmlnXyhjb25maWcpLAotICAgICAgc2VuZF9saW5rXyhzZW5kX2xpbmspLAotICAgICAgcmV0
dXJuX2xpbmtfKHJldHVybl9saW5rKSwKLSAgICAgIHNlbmRfdHJhbnNwb3J0XyhzZW5kZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgc2VuZF9saW5rLmZyb250KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgc2VuZF9yZWNlaXZlcl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc3Ry
ZWFtLnBhY2tldF9vdmVyaGVhZCksCi0gICAgICByZXR1cm5fdHJhbnNwb3J0XyhyZWNlaXZlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9saW5rLmZyb250KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm5fcmVjZWl2ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWcuc3RyZWFtLnBhY2tldF9vdmVyaGVhZCksCi0gICAgICBzZW5kX3N0cmVhbV8oc2Vu
ZGVyLCBjb25maWcsICZzZW5kX3RyYW5zcG9ydF8pLAorICAgICAgc2VuZF9zdHJlYW1fKHNlbmRl
ciwgY29uZmlnLCAmc2VuZGVyLT50cmFuc3BvcnRfKSwKICAgICAgIHJlY2VpdmVfc3RyZWFtXyhy
ZWNlaXZlciwKICAgICAgICAgICAgICAgICAgICAgICBjb25maWcsCiAgICAgICAgICAgICAgICAg
ICAgICAgJnNlbmRfc3RyZWFtXywKICAgICAgICAgICAgICAgICAgICAgICAvKmNob3Nlbl9zdHJl
YW09Ki8wLAotICAgICAgICAgICAgICAgICAgICAgICZyZXR1cm5fdHJhbnNwb3J0XykgewotICBO
ZXR3b3JrTm9kZTo6Um91dGUoc2VuZF90cmFuc3BvcnRfLlJlY2VpdmVySWQoKSwgc2VuZF9saW5r
XywKLSAgICAgICAgICAgICAgICAgICAgICZyZWNlaXZlX3N0cmVhbV8pOwotICBOZXR3b3JrTm9k
ZTo6Um91dGUocmV0dXJuX3RyYW5zcG9ydF8uUmVjZWl2ZXJJZCgpLCByZXR1cm5fbGlua18sCi0g
ICAgICAgICAgICAgICAgICAgICAmc2VuZF9zdHJlYW1fKTsKLX0KKyAgICAgICAgICAgICAgICAg
ICAgICAmcmVjZWl2ZXItPnRyYW5zcG9ydF8pIHt9CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3ZpZGVvX3N0cmVhbS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby92aWRlb19z
dHJlYW0uaAppbmRleCBlNjY5NjE4M2E3ZWJkNTAzY2ZlZTA1MjdlNzhjYWMwNDhlYzliNjAxLi5l
YmY5Yzk1MWI3MDY5MjM1OTY1MTgwNTgwNjhkYzY0YmViYzNiZDFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3ZpZGVv
X3N0cmVhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3Qvc2NlbmFyaW8vdmlkZW9fc3RyZWFtLmgKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRl
IDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5j
bHVkZSAidGVzdC9mYWtlX2VuY29kZXIuaCIKICNpbmNsdWRlICJ0ZXN0L2ZyYW1lX2dlbmVyYXRv
cl9jYXB0dXJlci5oIgogI2luY2x1ZGUgInRlc3Qvc2NlbmFyaW8vY2FsbF9jbGllbnQuaCIKICNp
bmNsdWRlICJ0ZXN0L3NjZW5hcmlvL2NvbHVtbl9wcmludGVyLmgiCkBAIC0yNSwxNSArMjYsMTUg
QEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiAvLyBTZW5kVmlkZW9TdHJl
YW0gcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBjaGFuZ2luZyBwYXJhbWV0ZXJzIGFuZCByZXRy
aWV2aW5nCiAvLyBzdGF0ZXMgYXQgcnVuIHRpbWUuCi1jbGFzcyBTZW5kVmlkZW9TdHJlYW0gOiBw
dWJsaWMgTmV0d29ya1JlY2VpdmVySW50ZXJmYWNlIHsKK2NsYXNzIFNlbmRWaWRlb1N0cmVhbSB7
CiAgcHVibGljOgogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNlbmRWaWRlb1N0cmVh
bSk7CiAgIH5TZW5kVmlkZW9TdHJlYW0oKTsKICAgdm9pZCBTZXRDYXB0dXJlRnJhbWVyYXRlKGlu
dCBmcmFtZXJhdGUpOwotICB2b2lkIFNldE1heEZyYW1lcmF0ZShhYnNsOjpvcHRpb25hbDxpbnQ+
IG1heF9mcmFtZXJhdGUpOwogICBWaWRlb1NlbmRTdHJlYW06OlN0YXRzIEdldFN0YXRzKCkgY29u
c3Q7CiAgIENvbHVtblByaW50ZXIgU3RhdHNQcmludGVyKCk7CiAgIHZvaWQgU3RhcnQoKTsKKyAg
dm9pZCBVcGRhdGVDb25maWcoc3RkOjpmdW5jdGlvbjx2b2lkKFZpZGVvU3RyZWFtQ29uZmlnKik+
IG1vZGlmaWVyKTsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyBTY2VuYXJpbzsKQEAgLTQz
LDI1ICs0NCwyOCBAQCBjbGFzcyBTZW5kVmlkZW9TdHJlYW0gOiBwdWJsaWMgTmV0d29ya1JlY2Vp
dmVySW50ZXJmYWNlIHsKICAgU2VuZFZpZGVvU3RyZWFtKENhbGxDbGllbnQqIHNlbmRlciwKICAg
ICAgICAgICAgICAgICAgIFZpZGVvU3RyZWFtQ29uZmlnIGNvbmZpZywKICAgICAgICAgICAgICAg
ICAgIFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQpOwotICBib29sIFRyeURlbGl2ZXJQYWNrZXQo
cnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICB1
aW50NjRfdCByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90
aW1lKSBvdmVycmlkZTsKIAorICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0XzsKICAgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+IHNzcmNzXzsKICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHJ0eF9zc3Jj
c187CiAgIFZpZGVvU2VuZFN0cmVhbSogc2VuZF9zdHJlYW1fID0gbnVsbHB0cjsKICAgQ2FsbENs
aWVudCogY29uc3Qgc2VuZGVyXzsKLSAgY29uc3QgVmlkZW9TdHJlYW1Db25maWcgY29uZmlnXzsK
KyAgVmlkZW9TdHJlYW1Db25maWcgY29uZmlnXyBSVENfR1VBUkRFRF9CWShjcml0Xyk7CiAgIHN0
ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXJGYWN0b3J5PiBlbmNvZGVyX2ZhY3RvcnlfOworICBz
dGQ6OnZlY3Rvcjx0ZXN0OjpGYWtlRW5jb2Rlcio+IGZha2VfZW5jb2RlcnNfIFJUQ19HVUFSREVE
X0JZKGNyaXRfKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rv
cnk+IGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfOwogICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFZp
ZGVvQ2FwdHVyZXI+IHZpZGVvX2NhcHR1cmVyXzsKICAgRnJhbWVHZW5lcmF0b3JDYXB0dXJlciog
ZnJhbWVfZ2VuZXJhdG9yXyA9IG51bGxwdHI7CisgIGludCBuZXh0X2xvY2FsX25ldHdvcmtfaWRf
ID0gMDsKKyAgaW50IG5leHRfcmVtb3RlX25ldHdvcmtfaWRfID0gMDsKIH07CiAKIC8vIFJlY2Vp
dmVWaWRlb1N0cmVhbSByZXByZXNlbnRzIGEgdmlkZW8gcmVjZWl2ZXIuIEl0IGNhbid0IGJlIHVz
ZWQgZGlyZWN0bHkuCi1jbGFzcyBSZWNlaXZlVmlkZW9TdHJlYW0gOiBwdWJsaWMgTmV0d29ya1Jl
Y2VpdmVySW50ZXJmYWNlIHsKK2NsYXNzIFJlY2VpdmVWaWRlb1N0cmVhbSB7CiAgcHVibGljOgog
ICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlY2VpdmVWaWRlb1N0cmVhbSk7CiAgIH5S
ZWNlaXZlVmlkZW9TdHJlYW0oKTsKKyAgdm9pZCBTdGFydCgpOwogCiAgcHJpdmF0ZToKICAgZnJp
ZW5kIGNsYXNzIFNjZW5hcmlvOwpAQCAtNzEsOSArNzUsNyBAQCBjbGFzcyBSZWNlaXZlVmlkZW9T
dHJlYW0gOiBwdWJsaWMgTmV0d29ya1JlY2VpdmVySW50ZXJmYWNlIHsKICAgICAgICAgICAgICAg
ICAgICAgIFNlbmRWaWRlb1N0cmVhbSogc2VuZF9zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgY2hvc2VuX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcG9ydCog
ZmVlZGJhY2tfdHJhbnNwb3J0KTsKLSAgYm9vbCBUcnlEZWxpdmVyUGFja2V0KHJ0Yzo6Q29weU9u
V3JpdGVCdWZmZXIgcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVj
ZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSkgb3ZlcnJp
ZGU7CisKICAgVmlkZW9SZWNlaXZlU3RyZWFtKiByZWNlaXZlX3N0cmVhbV8gPSBudWxscHRyOwog
ICBGbGV4ZmVjUmVjZWl2ZVN0cmVhbSogZmxlY2ZlY19zdHJlYW1fID0gbnVsbHB0cjsKICAgc3Rk
Ojp1bmlxdWVfcHRyPHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4+
IHJlbmRlcmVyXzsKQEAgLTk1LDE4ICs5NywxMCBAQCBjbGFzcyBWaWRlb1N0cmVhbVBhaXIgewog
IHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyBTY2VuYXJpbzsKICAgVmlkZW9TdHJlYW1QYWlyKENh
bGxDbGllbnQqIHNlbmRlciwKLSAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtO
b2RlKj4gc2VuZF9saW5rLAotICAgICAgICAgICAgICAgICAgdWludDY0X3Qgc2VuZF9yZWNlaXZl
cl9pZCwKICAgICAgICAgICAgICAgICAgIENhbGxDbGllbnQqIHJlY2VpdmVyLAotICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKLSAgICAgICAg
ICAgICAgICAgIHVpbnQ2NF90IHJldHVybl9yZWNlaXZlcl9pZCwKICAgICAgICAgICAgICAgICAg
IFZpZGVvU3RyZWFtQ29uZmlnIGNvbmZpZyk7CiAKICAgY29uc3QgVmlkZW9TdHJlYW1Db25maWcg
Y29uZmlnXzsKLSAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmtfOwotICBzdGQ6
OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rXzsKLSAgTmV0d29ya05vZGVUcmFuc3Bv
cnQgc2VuZF90cmFuc3BvcnRfOwotICBOZXR3b3JrTm9kZVRyYW5zcG9ydCByZXR1cm5fdHJhbnNw
b3J0XzsKIAogICBTZW5kVmlkZW9TdHJlYW0gc2VuZF9zdHJlYW1fOwogICBSZWNlaXZlVmlkZW9T
dHJlYW0gcmVjZWl2ZV9zdHJlYW1fOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zaW5nbGVfdGhyZWFkZWRfdGFza19xdWV1ZS5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2luZ2xlX3Ro
cmVhZGVkX3Rhc2tfcXVldWUuY2MKaW5kZXggYWQ3YTUwMzI3YjkwMGJmMjUwYWIyMzEzODE0Mzdl
ZjZjNTJhOTI4OC4uNWMzNWMyZTQzYjA5MzlmOTE2YzI3ODQzMTQxNjg0ZGMyOTg1ZTQzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9z
aW5nbGVfdGhyZWFkZWRfdGFza19xdWV1ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NpbmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlLmNjCkBA
IC0zMiwxMCArMzIsNyBAQCBTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3Rpbmc6OlF1ZXVl
ZFRhc2s6On5RdWV1ZWRUYXNrKCkgPSBkZWZhdWx0OwogCiBTaW5nbGVUaHJlYWRlZFRhc2tRdWV1
ZUZvclRlc3Rpbmc6OlNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZygKICAgICBjb25z
dCBjaGFyKiBuYW1lKQotICAgIDogdGhyZWFkXyhSdW4sIHRoaXMsIG5hbWUpLAotICAgICAgcnVu
bmluZ18odHJ1ZSksCi0gICAgICBuZXh0X3Rhc2tfaWRfKDApLAotICAgICAgd2FrZV91cF8oZmFs
c2UsIGZhbHNlKSB7CisgICAgOiB0aHJlYWRfKFJ1biwgdGhpcywgbmFtZSksIHJ1bm5pbmdfKHRy
dWUpLCBuZXh0X3Rhc2tfaWRfKDApIHsKICAgdGhyZWFkXy5TdGFydCgpOwogfQogCkBAIC04Myw3
ICs4MCw3IEBAIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZzo6UG9zdERlbGF5ZWRU
YXNrKFRhc2sgdGFzaywKIH0KIAogdm9pZCBTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3Rp
bmc6OlNlbmRUYXNrKFRhc2sgdGFzaykgewotICBydGM6OkV2ZW50IGRvbmUodHJ1ZSwgZmFsc2Up
OworICBydGM6OkV2ZW50IGRvbmU7CiAgIFBvc3RUYXNrKFsmdGFzaywgJmRvbmVdKCkgewogICAg
IHRhc2soKTsKICAgICBkb25lLlNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zaW5nbGVfdGhyZWFkZWRfdGFza19xdWV1ZV91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3Qvc2luZ2xlX3RocmVhZGVkX3Rhc2tfcXVldWVfdW5pdHRlc3QuY2MKaW5kZXggMDg0ZjBkN2U4
Y2JiODIxMmNmZTI3MTY1MzIwNjZiYzk1Y2QzMTBjMy4uMDQ5NjE2NTBjNzYwZTE0YWIyY2I0MDc4
NjhiZmEyZWRlYWUwMzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9zaW5nbGVfdGhyZWFkZWRfdGFza19xdWV1ZV91bml0dGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Np
bmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlX3VuaXR0ZXN0LmNjCkBAIC0zNyw3ICszNyw3IEBAIFRF
U1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nVGVzdCwgRXhlY3V0ZXNQb3N0ZWRU
YXNrcykgewogICBTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmcgdGFza19xdWV1ZSgi
dGFza19xdWV1ZSIpOwogCiAgIHN0ZDo6YXRvbWljPGJvb2w+IGV4ZWN1dGVkKGZhbHNlKTsKLSAg
cnRjOjpFdmVudCBkb25lKHRydWUsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogCiAgIHRh
c2tfcXVldWUuUG9zdFRhc2soWyZleGVjdXRlZCwgJmRvbmVdKCkgewogICAgIGV4ZWN1dGVkLnN0
b3JlKHRydWUpOwpAQCAtNjAsMTQgKzYwLDE0IEBAIFRFU1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVl
dWVGb3JUZXN0aW5nVGVzdCwKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpF
dmVudD4+IGRvbmVfZXZlbnRzOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtDb3VudDsgaSsr
KSB7Ci0gICAgZG9uZV9ldmVudHMuZW1wbGFjZV9iYWNrKGFic2w6Om1ha2VfdW5pcXVlPHJ0Yzo6
RXZlbnQ+KGZhbHNlLCBmYWxzZSkpOworICAgIGRvbmVfZXZlbnRzLmVtcGxhY2VfYmFjayhhYnNs
OjptYWtlX3VuaXF1ZTxydGM6OkV2ZW50PigpKTsKICAgfQogCiAgIC8vIFRvIGF2b2lkIHRoZSB0
YXNrcyB3aGljaCBjb21wcmlzZSB0aGUgYWN0dWFsIHRlc3QgZnJvbSBydW5uaW5nIGJlZm9yZSB0
aGV5CiAgIC8vIGhhdmUgYWxsIGJlIHBvc3RlZCwgd2hpY2ggY291bGQgcmVzdWx0IGluIG9ubHkg
b25lIHRhc2sgZXZlciBiZWluZyBpbiB0aGUKICAgLy8gcXVldWUgYXQgYW55IGdpdmVuIHRpbWUs
IHBvc3Qgb25lIHdhaXRpbmcgdGFzayB0aGF0IHdvdWxkIGJsb2NrIHRoZQogICAvLyB0YXNrLXF1
ZXVlLCBhbmQgdW5ibG9jayBvbmx5IGFmdGVyIGFsbCB0YXNrcyBoYXZlIGJlZW4gcG9zdGVkLgot
ICBydGM6OkV2ZW50IHJlbmRlenZvdXModHJ1ZSwgZmFsc2UpOworICBydGM6OkV2ZW50IHJlbmRl
enZvdXM7CiAgIHRhc2tfcXVldWUuUG9zdFRhc2soCiAgICAgICBbJnJlbmRlenZvdXNdKCkgeyBB
U1NFUlRfVFJVRShyZW5kZXp2b3VzLldhaXQoa01heFdhaXRUaW1lTXMpKTsgfSk7CiAKQEAgLTk1
LDcgKzk1LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LCBQ
b3N0VG9UYXNrUXVldWVGcm9tT3duVGhyZWFkKSB7CiAgIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVl
Rm9yVGVzdGluZyB0YXNrX3F1ZXVlKCJ0YXNrX3F1ZXVlIik7CiAKICAgc3RkOjphdG9taWM8Ym9v
bD4gZXhlY3V0ZWQoZmFsc2UpOwotICBydGM6OkV2ZW50IGRvbmUodHJ1ZSwgZmFsc2UpOworICBy
dGM6OkV2ZW50IGRvbmU7CiAKICAgYXV0byBpbnRlcm5hbGx5X3Bvc3RlZF90YXNrID0gWyZleGVj
dXRlZCwgJmRvbmVdKCkgewogICAgIGV4ZWN1dGVkLnN0b3JlKHRydWUpOwpAQCAtMTI0LDcgKzEy
NCw3IEBAIFRFU1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nVGVzdCwgVGFza3NF
eGVjdXRlZEluU2VxdWVuY2UpIHsKIAogICAvLyBQcmV2ZW50IHRoZSBjaGFpbiBmcm9tIGJlaW5n
IHNldCBpbiBtb3Rpb24gYmVmb3JlIHdlJ3ZlIGhhZCB0aW1lIHRvCiAgIC8vIHNjaGVkdWxlIGl0
IGFsbCwgbGVzdCB0aGUgcXVldWUgb25seSBjb250YWluIG9uZSB0YXNrIGF0IGEgdGltZS4KLSAg
cnRjOjpFdmVudCByZW5kZXp2b3VzKHRydWUsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCByZW5kZXp2
b3VzOwogICB0YXNrX3F1ZXVlLlBvc3RUYXNrKAogICAgICAgWyZyZW5kZXp2b3VzXSgpIHsgQVNT
RVJUX1RSVUUocmVuZGV6dm91cy5XYWl0KGtNYXhXYWl0VGltZU1zKSk7IH0pOwogCkBAIC0xMzYs
NyArMTM2LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LCBU
YXNrc0V4ZWN1dGVkSW5TZXF1ZW5jZSkgewogICB9CiAKICAgLy8gVGhlIHRlc3Qgd2lsbCB3YWl0
IGZvciB0aGUgdGFzay1xdWV1ZSB0byBmaW5pc2guCi0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBm
YWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgdGFza19xdWV1ZS5Qb3N0VGFzayhbJmRvbmVd
KCkgeyBkb25lLlNldCgpOyB9KTsKIAogICByZW5kZXp2b3VzLlNldCgpOyAgLy8gU2V0IHRoZSBj
aGFpbiBpbiBtb3Rpb24uCkBAIC0xNTAsNyArMTUwLDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRh
c2tRdWV1ZUZvclRlc3RpbmdUZXN0LCBFeGVjdXRlc1Bvc3RlZERlbGF5ZWRUYXNrKSB7CiAgIFNp
bmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZyB0YXNrX3F1ZXVlKCJ0YXNrX3F1ZXVlIik7
CiAKICAgc3RkOjphdG9taWM8Ym9vbD4gZXhlY3V0ZWQoZmFsc2UpOwotICBydGM6OkV2ZW50IGRv
bmUodHJ1ZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAKICAgY29uc3RleHByIGludDY0
X3QgZGVsYXlfbXMgPSAyMDsKICAgc3RhdGljX2Fzc2VydChkZWxheV9tcyA8IGtNYXhXYWl0VGlt
ZU1zIC8gMiwgIkRlbGF5IHRvbyBsb25nIGZvciB0ZXN0cy4iKTsKQEAgLTE3Nyw3ICsxNzcsNyBA
QCBURVNUKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIERvZXNOb3RFeGVj
dXRlRGVsYXllZFRhc2tUb29Tb29uKSB7CiAgIHRhc2tfcXVldWUuUG9zdERlbGF5ZWRUYXNrKFsm
ZXhlY3V0ZWRdKCkgeyBleGVjdXRlZC5zdG9yZSh0cnVlKTsgfSwgZGVsYXlfbXMpOwogCiAgIC8v
IFdhaXQgbGVzcyB0aGFuIGlzIGVub3VnaCwgbWFrZSBzdXJlIHRoZSB0YXNrIHdhcyBub3QgeWV0
IGV4ZWN1dGVkLgotICBydGM6OkV2ZW50IG5vdF9kb25lKHRydWUsIGZhbHNlKTsKKyAgcnRjOjpF
dmVudCBub3RfZG9uZTsKICAgQVNTRVJUX0ZBTFNFKG5vdF9kb25lLldhaXQoZGVsYXlfbXMgLyAy
KSk7CiAgIEVYUEVDVF9GQUxTRShleGVjdXRlZC5sb2FkKCkpOwogfQpAQCAtMTk1LDcgKzE5NSw3
IEBAIFRFU1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nVGVzdCwKICAgc3RhdGlj
X2Fzc2VydChlYXJsaWVyX2RlbGF5X21zICsgbGF0ZXJfZGVsYXlfbXMgPCBrTWF4V2FpdFRpbWVN
cyAvIDIsCiAgICAgICAgICAgICAgICAgIkRlbGF5IHRvbyBsb25nIGZvciB0ZXN0cy4iKTsKIAot
ICBydGM6OkV2ZW50IGRvbmUodHJ1ZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAKICAg
YXV0byBlYXJsaWVyX3Rhc2sgPSBbJmVhcmxpZXJfZXhlY3V0ZWQsICZsYXRlcl9leGVjdXRlZF0o
KSB7CiAgICAgRVhQRUNUX0ZBTFNFKGxhdGVyX2V4ZWN1dGVkLmxvYWQoKSk7CkBAIC0yMjksNyAr
MjI5LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LAogICBz
dGF0aWNfYXNzZXJ0KGVhcmxpZXJfZGVsYXlfbXMgKyBsYXRlcl9kZWxheV9tcyA8IGtNYXhXYWl0
VGltZU1zIC8gMiwKICAgICAgICAgICAgICAgICAiRGVsYXkgdG9vIGxvbmcgZm9yIHRlc3RzLiIp
OwogCi0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsK
IAogICBhdXRvIGVhcmxpZXJfdGFzayA9IFsmZWFybGllcl9leGVjdXRlZCwgJmxhdGVyX2V4ZWN1
dGVkXSgpIHsKICAgICBFWFBFQ1RfRkFMU0UobGF0ZXJfZXhlY3V0ZWQubG9hZCgpKTsKQEAgLTI1
MywxMSArMjUzLDExIEBAIFRFU1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nVGVz
dCwKIFRFU1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nVGVzdCwgRXh0ZXJuYWxU
aHJlYWRDYW5jZWxzVGFzaykgewogICBTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3Rpbmcg
dGFza19xdWV1ZSgidGFza19xdWV1ZSIpOwogCi0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxz
ZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKIAogICAvLyBQcmV2ZW50IHRoZSB0by1iZS1jYW5jZWxs
ZWQgdGFzayBmcm9tIGJlaW5nIGV4ZWN1dGVkIGJlZm9yZSB3ZSd2ZSBoYWQKICAgLy8gdGltZSB0
byBjYW5jZWwgaXQuCi0gIHJ0Yzo6RXZlbnQgcmVuZGV6dm91cyh0cnVlLCBmYWxzZSk7CisgIHJ0
Yzo6RXZlbnQgcmVuZGV6dm91czsKICAgdGFza19xdWV1ZS5Qb3N0VGFzaygKICAgICAgIFsmcmVu
ZGV6dm91c10oKSB7IEFTU0VSVF9UUlVFKHJlbmRlenZvdXMuV2FpdChrTWF4V2FpdFRpbWVNcykp
OyB9KTsKIApAQCAtMjc5LDEwICsyNzksMTAgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1
ZUZvclRlc3RpbmdUZXN0LCBFeHRlcm5hbFRocmVhZENhbmNlbHNUYXNrKSB7CiBURVNUKFNpbmds
ZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIEludGVybmFsVGhyZWFkQ2FuY2Vsc1Rh
c2spIHsKICAgU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nIHRhc2tfcXVldWUoInRh
c2tfcXVldWUiKTsKIAotICBydGM6OkV2ZW50IGRvbmUodHJ1ZSwgZmFsc2UpOworICBydGM6OkV2
ZW50IGRvbmU7CiAKICAgLy8gUHJldmVudCB0aGUgY2hhaW4gZnJvbSBiZWluZyBzZXQtb2ZmIGJl
Zm9yZSB3ZSd2ZSBzZXQgZXZlcnl0aGluZyB1cC4KLSAgcnRjOjpFdmVudCByZW5kZXp2b3VzKHRy
dWUsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCByZW5kZXp2b3VzOwogICB0YXNrX3F1ZXVlLlBvc3RU
YXNrKAogICAgICAgWyZyZW5kZXp2b3VzXSgpIHsgQVNTRVJUX1RSVUUocmVuZGV6dm91cy5XYWl0
KGtNYXhXYWl0VGltZU1zKSk7IH0pOwogCkBAIC0zMTYsNyArMzE2LDcgQEAgVEVTVChTaW5nbGVU
aHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LCBTZW5kVGFzaykgewogICB0YXNrX3F1ZXVl
LlNlbmRUYXNrKFsmZXhlY3V0ZWRdKCkgewogICAgIC8vIEludGVudGlvbmFsbHkgZGVsYXksIHNv
IHRoYXQgaWYgU2VuZFRhc2sgZGlkbid0IGJsb2NrLCB0aGUgc2VuZGVyIHRocmVhZAogICAgIC8v
IHdvdWxkIGhhdmUgdGltZSB0byByZWFkIHxleGVjdXRlZHwuCi0gICAgcnRjOjpFdmVudCBkZWxh
eSh0cnVlLCBmYWxzZSk7CisgICAgcnRjOjpFdmVudCBkZWxheTsKICAgICBBU1NFUlRfRkFMU0Uo
ZGVsYXkuV2FpdCgxMDAwKSk7CiAgICAgZXhlY3V0ZWQuc3RvcmUodHJ1ZSk7CiAgIH0pOwpAQCAt
MzM1LDcgKzMzNSw3IEBAIFRFU1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nVGVz
dCwKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0YXNrczsgaSsrKSB7CiAgICAgdGFza19xdWV1
ZS0+UG9zdFRhc2soWyZjb3VudGVyXSgpIHsKICAgICAgIHN0ZDo6YXRvbWljX2ZldGNoX2FkZCgm
Y291bnRlciwgc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSk7Ci0gICAgICBydGM6OkV2ZW50IGRlbGF5
KHRydWUsIGZhbHNlKTsKKyAgICAgIHJ0Yzo6RXZlbnQgZGVsYXk7CiAgICAgICBBU1NFUlRfRkFM
U0UoZGVsYXkuV2FpdCg1MDApKTsKICAgICB9KTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0X21haW4uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RfbWFpbi5jYwpp
bmRleCBjOGQwYjFiNTg0ZTZhNzVjOTVmMDc2YTZkZjc1YTdjMzA5ZTA2NWNmLi4xYTMxMWY2M2My
NzljYzliODgyOWRlY2ZhOWI1Y2NkNDI5MDFhZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RfbWFpbi5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RfbWFpbi5jYwpA
QCAtOCwxMjkgKzgsMTUgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCi0jaW5jbHVkZSA8ZnN0cmVhbT4KKyNp
bmNsdWRlIDxtZW1vcnk+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKLSNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgotI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKLSNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3Ry
aWFsLmgiCi0jaW5jbHVkZSAidGVzdC9nbW9jay5oIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIK
LSNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgotI2luY2x1ZGUgInRlc3Qv
dGVzdHN1cHBvcnQvcGVyZl90ZXN0LmgiCi0KLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0jaW5j
bHVkZSAicnRjX2Jhc2Uvd2luMzJzb2NrZXRpbml0LmgiCi0jZW5kaWYKLQotI2lmIGRlZmluZWQo
V0VCUlRDX0lPUykKLSNpbmNsdWRlICJ0ZXN0L2lvcy90ZXN0X3N1cHBvcnQuaCIKLQotREVGSU5F
X3N0cmluZyhOU1RyZWF0VW5rbm93bkFyZ3VtZW50c0FzT3BlbiwKLSAgICAgICAgICAgICAgIiIs
Ci0gICAgICAgICAgICAgICJJbnRlbnRpb25hbGx5IGlnbm9yZWQgZmxhZyBpbnRlbmRlZCBmb3Ig
aU9TIHNpbXVsYXRvci4iKTsKLURFRklORV9zdHJpbmcoQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0
YXRlLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkludGVudGlvbmFsbHkgaWdu
b3JlZCBmbGFnIGludGVuZGVkIGZvciBpT1Mgc2ltdWxhdG9yLiIpOwotREVGSU5FX2Jvb2woCi0g
ICAgc2F2ZV9jaGFydGpzb25fcmVzdWx0LAotICAgIGZhbHNlLAotICAgICJTdG9yZSB0aGUgcGVy
ZiByZXN1bHRzIGluIERvY3VtZW50cy9wZXJmX3Jlc3VsdC5qc29uIGluIHRoZSBmb3JtYXQgIgot
ICAgICJkZXNjcmliZWQgYnkgIgotICAgICJodHRwczovL2dpdGh1Yi5jb20vY2F0YXB1bHQtcHJv
amVjdC9jYXRhcHVsdC9ibG9iL21hc3Rlci9kYXNoYm9hcmQvZG9jcy8iCi0gICAgImRhdGEtZm9y
bWF0Lm1kLiIpOwotCi0jZWxzZQotCi1ERUZJTkVfc3RyaW5nKAotICAgIGlzb2xhdGVkX3Njcmlw
dF90ZXN0X291dHB1dCwKLSAgICAiIiwKLSAgICAiUGF0aCB0byBvdXRwdXQgYW4gZW1wdHkgSlNP
TiBmaWxlIHdoaWNoIENocm9taXVtIGluZnJhIHJlcXVpcmVzLiIpOwotCi1ERUZJTkVfc3RyaW5n
KAotICAgIGlzb2xhdGVkX3NjcmlwdF90ZXN0X3BlcmZfb3V0cHV0LAotICAgICIiLAotICAgICJQ
YXRoIHdoZXJlIHRoZSBwZXJmIHJlc3VsdHMgc2hvdWxkIGJlIHN0b3JlZCBpbiB0aGUgSlNPTiBm
b3JtYXQgZGVzY3JpYmVkICIKLSAgICAiYnkgIgotICAgICJodHRwczovL2dpdGh1Yi5jb20vY2F0
YXB1bHQtcHJvamVjdC9jYXRhcHVsdC9ibG9iL21hc3Rlci9kYXNoYm9hcmQvZG9jcy8iCi0gICAg
ImRhdGEtZm9ybWF0Lm1kLiIpOwotCi0jZW5kaWYKLQotREVGSU5FX2Jvb2wobG9ncywgZmFsc2Us
ICJwcmludCBsb2dzIHRvIHN0ZGVyciIpOwotCi1ERUZJTkVfc3RyaW5nKAotICAgIGZvcmNlX2Zp
ZWxkdHJpYWxzLAotICAgICIiLAotICAgICJGaWVsZCB0cmlhbHMgY29udHJvbCBleHBlcmltZW50
YWwgZmVhdHVyZSBjb2RlIHdoaWNoIGNhbiBiZSBmb3JjZWQuICIKLSAgICAiRS5nLiBydW5uaW5n
IHdpdGggLS1mb3JjZV9maWVsZHRyaWFscz1XZWJSVEMtRm9vRmVhdHVyZS9FbmFibGUvIgotICAg
ICIgd2lsbCBhc3NpZ24gdGhlIGdyb3VwIEVuYWJsZSB0byBmaWVsZCB0cmlhbCBXZWJSVEMtRm9v
RmVhdHVyZS4iKTsKLQotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3Nh
Z2UuIik7CisjaW5jbHVkZSAidGVzdC90ZXN0X21haW5fbGliLmgiCiAKIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pIHsKLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywg
YXJndik7Ci0KLSAgLy8gRGVmYXVsdCB0byBMU19JTkZPLCBldmVuIGZvciByZWxlYXNlIGJ1aWxk
cyB0byBwcm92aWRlIGJldHRlciB0ZXN0IGxvZ2dpbmcuCi0gIC8vIFRPRE8ocGJvcyk6IENvbnNp
ZGVyIGFkZGluZyBhIGNvbW1hbmQtbGluZSBvdmVycmlkZS4KLSAgaWYgKHJ0Yzo6TG9nTWVzc2Fn
ZTo6R2V0TG9nVG9EZWJ1ZygpID4gcnRjOjpMU19JTkZPKQotICAgIHJ0Yzo6TG9nTWVzc2FnZTo6
TG9nVG9EZWJ1ZyhydGM6OkxTX0lORk8pOwotCi0gIGlmIChydGM6OkZsYWdMaXN0OjpTZXRGbGFn
c0Zyb21Db21tYW5kTGluZSgmYXJnYywgYXJndiwgZmFsc2UpKSB7Ci0gICAgcmV0dXJuIDE7Ci0g
IH0KLSAgaWYgKEZMQUdfaGVscCkgewotICAgIHJ0Yzo6RmxhZ0xpc3Q6OlByaW50KG51bGxwdHIs
IGZhbHNlKTsKLSAgICByZXR1cm4gMDsKKyAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VGVzdE1h
aW4+IG1haW4gPSB3ZWJydGM6OlRlc3RNYWluOjpDcmVhdGUoKTsKKyAgaW50IGVycl9jb2RlID0g
bWFpbi0+SW5pdCgmYXJnYywgYXJndik7CisgIGlmIChlcnJfY29kZSAhPSAwKSB7CisgICAgcmV0
dXJuIGVycl9jb2RlOwogICB9Ci0KLSAgd2VicnRjOjp0ZXN0OjpTZXRFeGVjdXRhYmxlUGF0aChh
cmd2WzBdKTsKLSAgd2VicnRjOjp0ZXN0OjpWYWxpZGF0ZUZpZWxkVHJpYWxzU3RyaW5nT3JEaWUo
RkxBR19mb3JjZV9maWVsZHRyaWFscyk7Ci0gIC8vIEluaXRGaWVsZFRyaWFsc0Zyb21TdHJpbmcg
c3RvcmVzIHRoZSBjaGFyKiwgc28gdGhlIGNoYXIgYXJyYXkgbXVzdCBvdXRsaXZlCi0gIC8vIHRo
ZSBhcHBsaWNhdGlvbi4KLSAgd2VicnRjOjpmaWVsZF90cmlhbDo6SW5pdEZpZWxkVHJpYWxzRnJv
bVN0cmluZyhGTEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsKLSAgd2VicnRjOjptZXRyaWNzOjpFbmFi
bGUoKTsKLQotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLSAgcnRjOjpXaW5zb2NrSW5pdGlhbGl6
ZXIgd2luc29ja19pbml0OwotI2VuZGlmCi0KLSAgcnRjOjpMb2dNZXNzYWdlOjpTZXRMb2dUb1N0
ZGVycihGTEFHX2xvZ3MpOwotCi0gIC8vIEVuc3VyZSB0aGF0IG1haW4gdGhyZWFkIGdldHMgd3Jh
cHBlZCBhcyBhbiBydGM6OlRocmVhZC4KLSAgLy8gVE9ETyhidWdzLndlYnJ0Lm9yZy85NzE0KTog
SXQgbWlnaHQgYmUgYmV0dGVyIHRvIGF2b2lkIHdyYXBwaW5nIHRoZSBtYWluCi0gIC8vIHRocmVh
ZCwgb3IgbGVhdmUgaXQgdG8gaW5kaXZpZHVhbCB0ZXN0cyB0aGF0IG5lZWQgaXQuIEJ1dCBhcyBs
b25nIGFzIHdlCi0gIC8vIGhhdmUgYXV0b21hdGljIHRocmVhZCB3cmFwcGluZywgd2UgbmVlZCB0
aGlzIHRvIGF2b2lkIHRoYXQgc29tZSBvdGhlcgotICAvLyByYW5kb20gdGhyZWFkICh3aGljaCBv
bmUgZGVwZW5kaW5nIG9uIHdoaWNoIHRlc3RzIGFyZSBydW4pIGdldHMKLSAgLy8gYXV0b21hdGlj
YWxseSB3cmFwcGVkLgotICBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPldyYXBDdXJy
ZW50VGhyZWFkKCk7Ci0gIFJUQ19DSEVDSyhydGM6OlRocmVhZDo6Q3VycmVudCgpKTsKLQotI2lm
IGRlZmluZWQoV0VCUlRDX0lPUykKLQotICBydGM6OnRlc3Q6OkluaXRUZXN0U3VpdGUoUlVOX0FM
TF9URVNUUywgYXJnYywgYXJndiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQUdfc2F2
ZV9jaGFydGpzb25fcmVzdWx0KTsKLSAgcnRjOjp0ZXN0OjpSdW5UZXN0c0Zyb21JT1NBcHAoKTsK
LQotI2Vsc2UKLQotICBpbnQgZXhpdF9jb2RlID0gUlVOX0FMTF9URVNUUygpOwotCi0gIHN0ZDo6
c3RyaW5nIGNoYXJ0anNvbl9yZXN1bHRfZmlsZSA9IEZMQUdfaXNvbGF0ZWRfc2NyaXB0X3Rlc3Rf
cGVyZl9vdXRwdXQ7Ci0gIGlmICghY2hhcnRqc29uX3Jlc3VsdF9maWxlLmVtcHR5KCkpIHsKLSAg
ICB3ZWJydGM6OnRlc3Q6OldyaXRlUGVyZlJlc3VsdHMoY2hhcnRqc29uX3Jlc3VsdF9maWxlKTsK
LSAgfQotCi0gIHN0ZDo6c3RyaW5nIHJlc3VsdF9maWxlbmFtZSA9IEZMQUdfaXNvbGF0ZWRfc2Ny
aXB0X3Rlc3Rfb3V0cHV0OwotICBpZiAoIXJlc3VsdF9maWxlbmFtZS5lbXB0eSgpKSB7Ci0gICAg
c3RkOjpvZnN0cmVhbSByZXN1bHRfZmlsZShyZXN1bHRfZmlsZW5hbWUpOwotICAgIHJlc3VsdF9m
aWxlIDw8ICJ7XCJ2ZXJzaW9uXCI6IDN9IjsKLSAgICByZXN1bHRfZmlsZS5jbG9zZSgpOwotICB9
Ci0KLSAgcmV0dXJuIGV4aXRfY29kZTsKLQotI2VuZGlmCisgIHJldHVybiBtYWluLT5SdW4oYXJn
YywgYXJndik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RfbWFpbl9saWIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RfbWFpbl9saWIuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUx
NDRjOThmY2I5MzQ3YTA3ZDY0ZmU3MTE3ODk1ZjYxMzVhYmU4NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9tYWlu
X2xpYi5jYwpAQCAtMCwwICsxLDE3NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNs
dWRlICJ0ZXN0L3Rlc3RfbWFpbl9saWIuaCIKKworI2luY2x1ZGUgPGZzdHJlYW0+CisjaW5jbHVk
ZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvZmxhZ3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvdGhyZWFkLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
ZmllbGRfdHJpYWwuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNz
LmgiCisjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgorI2luY2x1ZGUgInRlc3QvZ21vY2su
aCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9m
aWxldXRpbHMuaCIKKyNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L3BlcmZfdGVzdC5oIgorCisj
aWYgZGVmaW5lZChXRUJSVENfV0lOKQorI2luY2x1ZGUgInJ0Y19iYXNlL3dpbjMyc29ja2V0aW5p
dC5oIgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCisjaW5jbHVkZSAidGVzdC9p
b3MvdGVzdF9zdXBwb3J0LmgiCisKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKE5TVHJlYXRVbmtub3du
QXJndW1lbnRzQXNPcGVuLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAg
ICAgICAgICAiSW50ZW50aW9uYWxseSBpZ25vcmVkIGZsYWcgaW50ZW5kZWQgZm9yIGlPUyBzaW11
bGF0b3IuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhBcHBsZVBlcnNpc3RlbmNlSWdub3JlU3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJJbnRl
bnRpb25hbGx5IGlnbm9yZWQgZmxhZyBpbnRlbmRlZCBmb3IgaU9TIHNpbXVsYXRvci4iKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbCgKKyAgICBzYXZlX2NoYXJ0anNvbl9yZXN1bHQsCisgICAgZmFsc2Us
CisgICAgIlN0b3JlIHRoZSBwZXJmIHJlc3VsdHMgaW4gRG9jdW1lbnRzL3BlcmZfcmVzdWx0Lmpz
b24gaW4gdGhlIGZvcm1hdCAiCisgICAgImRlc2NyaWJlZCBieSAiCisgICAgImh0dHBzOi8vZ2l0
aHViLmNvbS9jYXRhcHVsdC1wcm9qZWN0L2NhdGFwdWx0L2Jsb2IvbWFzdGVyL2Rhc2hib2FyZC9k
b2NzLyIKKyAgICAiZGF0YS1mb3JtYXQubWQuIik7CisKKyNlbHNlCisKK1dFQlJUQ19ERUZJTkVf
c3RyaW5nKAorICAgIGlzb2xhdGVkX3NjcmlwdF90ZXN0X291dHB1dCwKKyAgICAiIiwKKyAgICAi
UGF0aCB0byBvdXRwdXQgYW4gZW1wdHkgSlNPTiBmaWxlIHdoaWNoIENocm9taXVtIGluZnJhIHJl
cXVpcmVzLiIpOworCitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBpc29sYXRlZF9zY3JpcHRf
dGVzdF9wZXJmX291dHB1dCwKKyAgICAiIiwKKyAgICAiUGF0aCB3aGVyZSB0aGUgcGVyZiByZXN1
bHRzIHNob3VsZCBiZSBzdG9yZWQgaW4gdGhlIEpTT04gZm9ybWF0IGRlc2NyaWJlZCAiCisgICAg
ImJ5ICIKKyAgICAiaHR0cHM6Ly9naXRodWIuY29tL2NhdGFwdWx0LXByb2plY3QvY2F0YXB1bHQv
YmxvYi9tYXN0ZXIvZGFzaGJvYXJkL2RvY3MvIgorICAgICJkYXRhLWZvcm1hdC5tZC4iKTsKKwor
I2VuZGlmCisKK1dFQlJUQ19ERUZJTkVfYm9vbChsb2dzLCBmYWxzZSwgInByaW50IGxvZ3MgdG8g
c3RkZXJyIik7CisKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIGZvcmNlX2ZpZWxkdHJpYWxz
LAorICAgICIiLAorICAgICJGaWVsZCB0cmlhbHMgY29udHJvbCBleHBlcmltZW50YWwgZmVhdHVy
ZSBjb2RlIHdoaWNoIGNhbiBiZSBmb3JjZWQuICIKKyAgICAiRS5nLiBydW5uaW5nIHdpdGggLS1m
b3JjZV9maWVsZHRyaWFscz1XZWJSVEMtRm9vRmVhdHVyZS9FbmFibGUvIgorICAgICIgd2lsbCBh
c3NpZ24gdGhlIGdyb3VwIEVuYWJsZSB0byBmaWVsZCB0cmlhbCBXZWJSVEMtRm9vRmVhdHVyZS4i
KTsKKworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdl
LiIpOworCituYW1lc3BhY2Ugd2VicnRjIHsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgVGVzdE1h
aW5JbXBsIDogcHVibGljIFRlc3RNYWluIHsKKyBwdWJsaWM6CisgIGludCBJbml0KGludCogYXJn
YywgY2hhciogYXJndltdKSBvdmVycmlkZSB7CisgICAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlTW9j
ayhhcmdjLCBhcmd2KTsKKworICAgIC8vIERlZmF1bHQgdG8gTFNfSU5GTywgZXZlbiBmb3IgcmVs
ZWFzZSBidWlsZHMgdG8gcHJvdmlkZSBiZXR0ZXIgdGVzdAorICAgIC8vIGxvZ2dpbmcuCisgICAg
Ly8gVE9ETyhwYm9zKTogQ29uc2lkZXIgYWRkaW5nIGEgY29tbWFuZC1saW5lIG92ZXJyaWRlLgor
ICAgIGlmIChydGM6OkxvZ01lc3NhZ2U6OkdldExvZ1RvRGVidWcoKSA+IHJ0Yzo6TFNfSU5GTykK
KyAgICAgIHJ0Yzo6TG9nTWVzc2FnZTo6TG9nVG9EZWJ1ZyhydGM6OkxTX0lORk8pOworCisgICAg
aWYgKHJ0Yzo6RmxhZ0xpc3Q6OlNldEZsYWdzRnJvbUNvbW1hbmRMaW5lKGFyZ2MsIGFyZ3YsIGZh
bHNlKSkgeworICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChGTEFHX2hlbHApIHsKKyAg
ICAgIHJ0Yzo6RmxhZ0xpc3Q6OlByaW50KG51bGxwdHIsIGZhbHNlKTsKKyAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk3OTIpOiB3ZSBuZWVkIHRv
IHJlZmVyZW5jZSBzb21ldGhpbmcgZnJvbQorICAgIC8vIGZpbGV1dGlscy5oIHNvIHRoYXQgb3Vy
IGRvd25zdHJlYW0gaGFjayB3aGVyZSB3ZSByZXBsYWNlIGZpbGV1dGlscy5jYworICAgIC8vIHdv
cmtzLiBPdGhlcndpc2UgdGhlIGRvd25zdHJlYW0gZmxhZyBpbXBsZW1lbnRhdGlvbiB3aWxsIHRh
a2Ugb3ZlciBhbmQKKyAgICAvLyBib3RjaCB0aGUgZmxhZyBpbnRyb2R1Y2VkIGJ5IHRoZSBoYWNr
LiBSZW1vdmUgdGhpcyBhd2Z1bCB0aGluZyBvbmNlIHRoZQorICAgIC8vIGRvd25zdHJlYW0gaW1w
bGVtZW50YXRpb24gaGFzIGJlZW4gZWxpbWluYXRlZC4KKyAgICAodm9pZCl3ZWJydGM6OnRlc3Q6
OkpvaW5GaWxlbmFtZSgiaG9ycmlibGUiLCAiaGFjayIpOworCisgICAgd2VicnRjOjp0ZXN0OjpW
YWxpZGF0ZUZpZWxkVHJpYWxzU3RyaW5nT3JEaWUoRkxBR19mb3JjZV9maWVsZHRyaWFscyk7Cisg
ICAgLy8gSW5pdEZpZWxkVHJpYWxzRnJvbVN0cmluZyBzdG9yZXMgdGhlIGNoYXIqLCBzbyB0aGUg
Y2hhciBhcnJheSBtdXN0CisgICAgLy8gb3V0bGl2ZSB0aGUgYXBwbGljYXRpb24uCisgICAgd2Vi
cnRjOjpmaWVsZF90cmlhbDo6SW5pdEZpZWxkVHJpYWxzRnJvbVN0cmluZyhGTEFHX2ZvcmNlX2Zp
ZWxkdHJpYWxzKTsKKyAgICB3ZWJydGM6Om1ldHJpY3M6OkVuYWJsZSgpOworCisjaWYgZGVmaW5l
ZChXRUJSVENfV0lOKQorICAgIHdpbnNvY2tfaW5pdF8gPSBhYnNsOjptYWtlX3VuaXF1ZTxydGM6
OldpbnNvY2tJbml0aWFsaXplcj4oKTsKKyNlbmRpZgorCisgICAgcnRjOjpMb2dNZXNzYWdlOjpT
ZXRMb2dUb1N0ZGVycihGTEFHX2xvZ3MpOworCisgICAgLy8gRW5zdXJlIHRoYXQgbWFpbiB0aHJl
YWQgZ2V0cyB3cmFwcGVkIGFzIGFuIHJ0Yzo6VGhyZWFkLgorICAgIC8vIFRPRE8oYnVncy53ZWJy
dC5vcmcvOTcxNCk6IEl0IG1pZ2h0IGJlIGJldHRlciB0byBhdm9pZCB3cmFwcGluZyB0aGUgbWFp
bgorICAgIC8vIHRocmVhZCwgb3IgbGVhdmUgaXQgdG8gaW5kaXZpZHVhbCB0ZXN0cyB0aGF0IG5l
ZWQgaXQuIEJ1dCBhcyBsb25nIGFzIHdlCisgICAgLy8gaGF2ZSBhdXRvbWF0aWMgdGhyZWFkIHdy
YXBwaW5nLCB3ZSBuZWVkIHRoaXMgdG8gYXZvaWQgdGhhdCBzb21lIG90aGVyCisgICAgLy8gcmFu
ZG9tIHRocmVhZCAod2hpY2ggb25lIGRlcGVuZGluZyBvbiB3aGljaCB0ZXN0cyBhcmUgcnVuKSBn
ZXRzCisgICAgLy8gYXV0b21hdGljYWxseSB3cmFwcGVkLgorICAgIHJ0Yzo6VGhyZWFkTWFuYWdl
cjo6SW5zdGFuY2UoKS0+V3JhcEN1cnJlbnRUaHJlYWQoKTsKKyAgICBSVENfQ0hFQ0socnRjOjpU
aHJlYWQ6OkN1cnJlbnQoKSk7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBpbnQgUnVuKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pIG92ZXJyaWRlIHsKKyNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCisg
ICAgcnRjOjp0ZXN0OjpJbml0VGVzdFN1aXRlKFJVTl9BTExfVEVTVFMsIGFyZ2MsIGFyZ3YsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQUdfc2F2ZV9jaGFydGpzb25fcmVzdWx0KTsK
KyAgICBydGM6OnRlc3Q6OlJ1blRlc3RzRnJvbUlPU0FwcCgpOworICAgIHJldHVybiAwOworI2Vs
c2UKKyAgICBpbnQgZXhpdF9jb2RlID0gUlVOX0FMTF9URVNUUygpOworCisgICAgc3RkOjpzdHJp
bmcgY2hhcnRqc29uX3Jlc3VsdF9maWxlID0gRkxBR19pc29sYXRlZF9zY3JpcHRfdGVzdF9wZXJm
X291dHB1dDsKKyAgICBpZiAoIWNoYXJ0anNvbl9yZXN1bHRfZmlsZS5lbXB0eSgpKSB7CisgICAg
ICB3ZWJydGM6OnRlc3Q6OldyaXRlUGVyZlJlc3VsdHMoY2hhcnRqc29uX3Jlc3VsdF9maWxlKTsK
KyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyByZXN1bHRfZmlsZW5hbWUgPSBGTEFHX2lzb2xhdGVk
X3NjcmlwdF90ZXN0X291dHB1dDsKKyAgICBpZiAoIXJlc3VsdF9maWxlbmFtZS5lbXB0eSgpKSB7
CisgICAgICBzdGQ6Om9mc3RyZWFtIHJlc3VsdF9maWxlKHJlc3VsdF9maWxlbmFtZSk7CisgICAg
ICByZXN1bHRfZmlsZSA8PCAie1widmVyc2lvblwiOiAzfSI7CisgICAgICByZXN1bHRfZmlsZS5j
bG9zZSgpOworICAgIH0KKworI2lmIGRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpIHx8IGRlZmlu
ZWQoTEVBS19TQU5JVElaRVIpIHx8ICBcCisgICAgZGVmaW5lZChNRU1PUllfU0FOSVRJWkVSKSB8
fCBkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpIHx8IFwKKyAgICBkZWZpbmVkKFVOREVGSU5FRF9T
QU5JVElaRVIpCisgICAgLy8gV2Ugd2FudCB0aGUgdGVzdCBmbGFnZ2VkIGFzIGZhaWxlZCBvbmx5
IGZvciBzYW5pdGl6ZXIgZGVmZWN0cywKKyAgICAvLyBpbiB3aGljaCBjYXNlIHRoZSBzYW5pdGl6
ZXIgd2lsbCBvdmVycmlkZSBleGl0IGNvZGUgd2l0aCA2Ni4KKyAgICByZXR1cm4gMDsKKyNlbmRp
ZgorCisgICAgcmV0dXJuIGV4aXRfY29kZTsKKyNlbmRpZgorICB9CisKKyAgflRlc3RNYWluSW1w
bCgpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworIHByaXZhdGU6CisjaWYgZGVmaW5lZChXRUJSVENf
V0lOKQorICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpXaW5zb2NrSW5pdGlhbGl6ZXI+IHdpbnNvY2tf
aW5pdF87CisjZW5kaWYKK307CisKK30gIC8vIG5hbWVzcGFjZQorCitzdGQ6OnVuaXF1ZV9wdHI8
VGVzdE1haW4+IFRlc3RNYWluOjpDcmVhdGUoKSB7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1
ZTxUZXN0TWFpbkltcGw+KCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9t
YWluX2xpYi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC90ZXN0X21haW5fbGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRkZDc2NGFlMjRkM2RmYjg2M2Y2ZWMxMzRh
NGQ2OTNlOGRkMDMwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9tYWluX2xpYi5oCkBAIC0wLDAgKzEsMzggQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworI2lmbmRlZiBURVNUX1RFU1RfTUFJTl9MSUJfSF8KKyNk
ZWZpbmUgVEVTVF9URVNUX01BSU5fTElCX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVz
cGFjZSB3ZWJydGMgeworCisvLyBDbGFzcyB0byBpbml0aWFsaXplIHRlc3QgZW52aXJvbm1lbnQg
YW5kIHJ1biB0ZXN0cy4KK2NsYXNzIFRlc3RNYWluIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgflRl
c3RNYWluKCkge30KKworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRlc3RNYWluPiBDcmVhdGUo
KTsKKworICAvLyBJbml0aWFsaXplcyB0ZXN0IGVudmlyb25tZW50LiBDbGllbnRzIGNhbiBhZGQg
dGhlaXIgb3duIGluaXRpYWxpemF0aW9uCisgIC8vIHN0ZXBzIGFmdGVyIGNhbGwgdG8gdGhpcyBt
ZXRob2QgYW5kIGJlZm9yZSBydW5uaW5nIHRlc3RzLgorICAvLyBSZXR1cm5zIDAgaWYgaW5pdGlh
bGl6YXRpb24gd2FzIHN1Y2Nlc3NmdWwgYW5kIG5vbiAwIG90aGVyd2lzZS4KKyAgdmlydHVhbCBp
bnQgSW5pdChpbnQqIGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgPSAwOworCisgIC8vIFJ1bnMgdGVzdCBl
bmQgcmV0dXJuIHJlc3VsdCBlcnJvciBjb2RlLiAwIC0gbm8gZXJyb3JzLgorICB2aXJ0dWFsIGlu
dCBSdW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgPSAwOworCisgcHJvdGVjdGVkOgorICBUZXN0
TWFpbigpID0gZGVmYXVsdDsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlm
ICAvLyBURVNUX1RFU1RfTUFJTl9MSUJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9y
dC9maWxldXRpbHMuY2MKaW5kZXggY2I4ODQ3MmU0MjViZjJhZmM2YTg5ODg2NGM5MzA5Y2JkNGVi
YjUzNS4uYTcxZDhmOGRiNTdkNTdlZTk0MDM0MTE0ZGI0YjY4ZTAyODhlNjhhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3Vw
cG9ydC9maWxldXRpbHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuY2MKQEAgLTU5LDM1ICs1OSwxNyBA
QAogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCisjaW5jbHVkZSAidGVz
dC90ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiBuYW1lc3BhY2UgdGVzdCB7CiAKLW5hbWVzcGFjZSB7Ci0KICNpZiBkZWZpbmVkKFdFQlJUQ19X
SU4pCiBjb25zdCBjaGFyKiBrUGF0aERlbGltaXRlciA9ICJcXCI7CiAjZWxzZQogY29uc3QgY2hh
cioga1BhdGhEZWxpbWl0ZXIgPSAiLyI7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoV0VCUlRDX0FO
RFJPSUQpCi0vLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIGluIENocm9tZSBpbmZyYXN0cnVjdHVy
ZS4gU2VlCi0vLyBiYXNlL3Rlc3QvdGVzdF9zdXBwb3J0X2FuZHJvaWQuY2MuCi1jb25zdCBjaGFy
KiBrQW5kcm9pZENocm9taXVtVGVzdHNSb290ID0gIi9zZGNhcmQvY2hyb21pdW1fdGVzdHNfcm9v
dC8iOwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChXRUJSVENfSU9TKQotY29uc3QgY2hhcioga1Jl
c291cmNlc0Rpck5hbWUgPSAicmVzb3VyY2VzIjsKLSNlbmRpZgotCi1jaGFyIHJlbGF0aXZlX2Rp
cl9wYXRoW0ZJTEVOQU1FX01BWF07Ci1ib29sIHJlbGF0aXZlX2Rpcl9wYXRoX3NldCA9IGZhbHNl
OwotCi19ICAvLyBuYW1lc3BhY2UKLQotY29uc3QgY2hhcioga0Nhbm5vdEZpbmRQcm9qZWN0Um9v
dERpciA9ICJFUlJPUl9DQU5OT1RfRklORF9QUk9KRUNUX1JPT1RfRElSIjsKLQogc3RkOjpzdHJp
bmcgRGlyTmFtZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCkgewogICBpZiAocGF0aC5lbXB0eSgp
KQogICAgIHJldHVybiAiIjsKQEAgLTEwMSwyNyArODMsNiBAQCBzdGQ6OnN0cmluZyBEaXJOYW1l
KGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSB7CiAgIHJldHVybiByZXN1bHQuc3Vic3RyKDAsIHJl
c3VsdC5maW5kX2xhc3Rfb2Yoa1BhdGhEZWxpbWl0ZXIpKTsKIH0KIAotdm9pZCBTZXRFeGVjdXRh
YmxlUGF0aChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCkgewotICBzdGQ6OnN0cmluZyB3b3JraW5n
X2RpciA9IFdvcmtpbmdEaXIoKTsKLSAgc3RkOjpzdHJpbmcgdGVtcF9wYXRoID0gcGF0aDsKLQot
ICAvLyBIYW5kbGUgYWJzb2x1dGUgcGF0aHM7IGNvbnZlcnQgdGhlbSB0byByZWxhdGl2ZSBwYXRo
cyB0byB0aGUgd29ya2luZyBkaXIuCi0gIGlmIChwYXRoLmZpbmQod29ya2luZ19kaXIpICE9IHN0
ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgdGVtcF9wYXRoID0gcGF0aC5zdWJzdHIod29ya2luZ19k
aXIubGVuZ3RoKCkgKyAxKTsKLSAgfQotLy8gT24gV2luZG93cywgd2hlbiB0ZXN0cyBhcmUgcnVu
IHVuZGVyIG1lbW9yeSB0b29scyBsaWtlIERyTWVtb3J5IGFuZCBUU2FuLAotLy8gc2xhc2hlcyBv
Y2N1ciBpbiB0aGUgcGF0aCBhcyBkaXJlY3Rvcnkgc2VwYXJhdG9ycy4gTWFrZSBzdXJlIHdlIHJl
cGxhY2UKLS8vIHN1Y2ggY2FzZXMgd2l0aCBiYWNrc2xhc2hlcyBpbiBvcmRlciBmb3IgdGhlIHBh
dGhzIHRvIGJlIGNvcnJlY3QuCi0jaWZkZWYgV0lOMzIKLSAgc3RkOjpyZXBsYWNlKHRlbXBfcGF0
aC5iZWdpbigpLCB0ZW1wX3BhdGguZW5kKCksICcvJywgJ1xcJyk7Ci0jZW5kaWYKLQotICAvLyBU
cmltIGF3YXkgdGhlIGV4ZWN1dGFibGUgbmFtZTsgb25seSBzdG9yZSB0aGUgcmVsYXRpdmUgZGly
IHBhdGguCi0gIHRlbXBfcGF0aCA9IERpck5hbWUodGVtcF9wYXRoKTsKLSAgc3RybmNweShyZWxh
dGl2ZV9kaXJfcGF0aCwgdGVtcF9wYXRoLmNfc3RyKCksIEZJTEVOQU1FX01BWCk7Ci0gIHJlbGF0
aXZlX2Rpcl9wYXRoX3NldCA9IHRydWU7Ci19Ci0KIGJvb2wgRmlsZUV4aXN0cyhjb25zdCBzdGQ6
OnN0cmluZyYgZmlsZV9uYW1lKSB7CiAgIHN0cnVjdCBzdGF0IGZpbGVfaW5mbyA9IHswfTsKICAg
cmV0dXJuIHN0YXQoZmlsZV9uYW1lLmNfc3RyKCksICZmaWxlX2luZm8pID09IDA7CkBAIC0xMzMs
NjkgKzk0LDEyIEBAIGJvb2wgRGlyRXhpc3RzKGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXJlY3Rvcnlf
bmFtZSkgewogICAgICAgICAgU19JU0RJUihkaXJlY3RvcnlfaW5mby5zdF9tb2RlKTsKIH0KIAot
Ly8gRmluZHMgdGhlIFdlYlJUQyBzcmMgZGlyLgotLy8gVGhlIHJldHVybmVkIHBhdGggYWx3YXlz
IGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yLgotc3RkOjpzdHJpbmcgUHJvamVjdFJvb3RQYXRo
KCkgewotI2lmIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCi0gIHJldHVybiBrQW5kcm9pZENocm9t
aXVtVGVzdHNSb290OwotI2VsaWYgZGVmaW5lZCBXRUJSVENfSU9TCi0gIHJldHVybiBJT1NSb290
UGF0aCgpOwotI2VsaWYgZGVmaW5lZChXRUJSVENfTUFDKQotICBzdGQ6OnN0cmluZyBwYXRoOwot
ICBHZXROU0V4ZWN1dGFibGVQYXRoKCZwYXRoKTsKLSAgc3RkOjpzdHJpbmcgZXhlX2RpciA9IERp
ck5hbWUocGF0aCk7Ci0gIC8vIE9uIE1hYywgdGVzdHMgZXhlY3V0ZSBpbiBvdXQvV2hhdGV2ZXIs
IHNvIHNyYyBpcyB0d28gbGV2ZWxzIHVwIGV4Y2VwdCBpZgotICAvLyB0aGUgdGVzdCBpcyBidW5k
bGVkICh3aGljaCBvdXIgdGVzdHMgYXJlIG5vdCksIGluIHdoaWNoIGNhc2UgaXQncyA1IGxldmVs
cy4KLSAgcmV0dXJuIERpck5hbWUoRGlyTmFtZShleGVfZGlyKSkgKyBrUGF0aERlbGltaXRlcjsK
LSNlbGlmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQotICBjaGFyIGJ1ZltQQVRIX01BWF07Ci0gIHNz
aXplX3QgY291bnQgPSA6OnJlYWRsaW5rKCIvcHJvYy9zZWxmL2V4ZSIsIGJ1ZiwgYXJyYXlzaXpl
KGJ1ZikpOwotICBpZiAoY291bnQgPD0gMCkgewotICAgIFJUQ19OT1RSRUFDSEVEKCkgPDwgIlVu
YWJsZSB0byByZXNvbHZlIC9wcm9jL3NlbGYvZXhlLiI7Ci0gICAgcmV0dXJuIGtDYW5ub3RGaW5k
UHJvamVjdFJvb3REaXI7Ci0gIH0KLSAgLy8gT24gUE9TSVgsIHRlc3RzIGV4ZWN1dGUgaW4gb3V0
L1doYXRldmVyLCBzbyBzcmMgaXMgdHdvIGxldmVscyB1cC4KLSAgc3RkOjpzdHJpbmcgZXhlX2Rp
ciA9IERpck5hbWUoc3RkOjpzdHJpbmcoYnVmLCBjb3VudCkpOwotICByZXR1cm4gRGlyTmFtZShE
aXJOYW1lKGV4ZV9kaXIpKSArIGtQYXRoRGVsaW1pdGVyOwotI2VsaWYgZGVmaW5lZChXRUJSVENf
V0lOKQotICB3Y2hhcl90IGJ1ZltNQVhfUEFUSF07Ci0gIGJ1ZlswXSA9IDA7Ci0gIGlmIChHZXRN
b2R1bGVGaWxlTmFtZShOVUxMLCBidWYsIE1BWF9QQVRIKSA9PSAwKQotICAgIHJldHVybiBrQ2Fu
bm90RmluZFByb2plY3RSb290RGlyOwotCi0gIHN0ZDo6c3RyaW5nIGV4ZV9wYXRoID0gcnRjOjpU
b1V0Zjgoc3RkOjp3c3RyaW5nKGJ1ZikpOwotICBzdGQ6OnN0cmluZyBleGVfZGlyID0gRGlyTmFt
ZShleGVfcGF0aCk7Ci0gIHJldHVybiBEaXJOYW1lKERpck5hbWUoZXhlX2RpcikpICsga1BhdGhE
ZWxpbWl0ZXI7Ci0jZW5kaWYKLX0KLQogc3RkOjpzdHJpbmcgT3V0cHV0UGF0aCgpIHsKLSNpZiBk
ZWZpbmVkKFdFQlJUQ19JT1MpCi0gIHJldHVybiBJT1NPdXRwdXRQYXRoKCk7Ci0jZWxpZiBkZWZp
bmVkKFdFQlJUQ19BTkRST0lEKQotICByZXR1cm4ga0FuZHJvaWRDaHJvbWl1bVRlc3RzUm9vdDsK
LSNlbHNlCi0gIHN0ZDo6c3RyaW5nIHBhdGggPSBQcm9qZWN0Um9vdFBhdGgoKTsKLSAgUlRDX0RD
SEVDS19ORShwYXRoLCBrQ2Fubm90RmluZFByb2plY3RSb290RGlyKTsKLSAgcGF0aCArPSAib3V0
IjsKLSAgaWYgKCFDcmVhdGVEaXIocGF0aCkpIHsKLSAgICByZXR1cm4gIi4vIjsKLSAgfQotICBy
ZXR1cm4gcGF0aCArIGtQYXRoRGVsaW1pdGVyOwotI2VuZGlmCisgIHJldHVybiB3ZWJydGM6OnRl
c3Q6OmludGVybmFsOjpPdXRwdXRQYXRoKCk7CiB9CiAKIHN0ZDo6c3RyaW5nIFdvcmtpbmdEaXIo
KSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKLSAgcmV0dXJuIGtBbmRyb2lkQ2hyb21p
dW1UZXN0c1Jvb3Q7Ci0jZW5kaWYKLSAgY2hhciBwYXRoX2J1ZmZlcltGSUxFTkFNRV9NQVhdOwot
ICBpZiAoIUdFVF9DVVJSRU5UX0RJUihwYXRoX2J1ZmZlciwgc2l6ZW9mKHBhdGhfYnVmZmVyKSkp
IHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBnZXQgY3VycmVudCBkaXJlY3RvcnkhXG4i
KTsKLSAgICByZXR1cm4gIi4vIjsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gc3RkOjpzdHJpbmco
cGF0aF9idWZmZXIpOwotICB9CisgIHJldHVybiB3ZWJydGM6OnRlc3Q6OmludGVybmFsOjpXb3Jr
aW5nRGlyKCk7CiB9CiAKIC8vIEdlbmVyYXRlIGEgdGVtcG9yYXJ5IGZpbGVuYW1lIGluIGEgc2Fm
ZSB3YXkuCkBAIC0zMjIsMzAgKzIyNiw3IEBAIGJvb2wgUmVtb3ZlRmlsZShjb25zdCBzdGQ6OnN0
cmluZyYgZmlsZV9uYW1lKSB7CiAKIHN0ZDo6c3RyaW5nIFJlc291cmNlUGF0aChjb25zdCBzdGQ6
OnN0cmluZyYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgZXh0ZW5zaW9uKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfSU9TKQotICByZXR1cm4gSU9TUmVz
b3VyY2VQYXRoKG5hbWUsIGV4dGVuc2lvbik7Ci0jZWxzZQotICBzdGQ6OnN0cmluZyBwbGF0Zm9y
bSA9ICJ3aW4iOwotI2lmZGVmIFdFQlJUQ19MSU5VWAotICBwbGF0Zm9ybSA9ICJsaW51eCI7Ci0j
ZW5kaWYgIC8vIFdFQlJUQ19MSU5VWAotI2lmZGVmIFdFQlJUQ19NQUMKLSAgcGxhdGZvcm0gPSAi
bWFjIjsKLSNlbmRpZiAgLy8gV0VCUlRDX01BQwotI2lmZGVmIFdFQlJUQ19BTkRST0lECi0gIHBs
YXRmb3JtID0gImFuZHJvaWQiOwotI2VuZGlmICAvLyBXRUJSVENfQU5EUk9JRAotCi0gIHN0ZDo6
c3RyaW5nIHJlc291cmNlc19wYXRoID0KLSAgICAgIFByb2plY3RSb290UGF0aCgpICsga1Jlc291
cmNlc0Rpck5hbWUgKyBrUGF0aERlbGltaXRlcjsKLSAgc3RkOjpzdHJpbmcgcmVzb3VyY2VfZmls
ZSA9Ci0gICAgICByZXNvdXJjZXNfcGF0aCArIG5hbWUgKyAiXyIgKyBwbGF0Zm9ybSArICIuIiAr
IGV4dGVuc2lvbjsKLSAgaWYgKEZpbGVFeGlzdHMocmVzb3VyY2VfZmlsZSkpIHsKLSAgICByZXR1
cm4gcmVzb3VyY2VfZmlsZTsKLSAgfQotICAvLyBGYWxsIGJhY2sgb24gbmFtZSB3aXRob3V0IHBs
YXRmb3JtLgotICByZXR1cm4gcmVzb3VyY2VzX3BhdGggKyBuYW1lICsgIi4iICsgZXh0ZW5zaW9u
OwotI2VuZGlmICAvLyBkZWZpbmVkIChXRUJSVENfSU9TKQorICByZXR1cm4gd2VicnRjOjp0ZXN0
OjppbnRlcm5hbDo6UmVzb3VyY2VQYXRoKG5hbWUsIGV4dGVuc2lvbik7CiB9CiAKIHN0ZDo6c3Ry
aW5nIEpvaW5GaWxlbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgZGlyLCBjb25zdCBzdGQ6OnN0cmlu
ZyYgbmFtZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgKaW5k
ZXggNWZmMDE5NjAwZWQ1OTgxZWNmZWYyNTQ2MTE2OWU5NzVkNDkyMjk2YS4uOGExODY5ODhkNjM4
MDg2ZDE2NDQ1YmUyMWY1ZmUxNGMxZGI1NjdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3Rz
dXBwb3J0L2ZpbGV1dGlscy5oCkBAIC0yNSw2ICsyNSw5IEBAIG5hbWVzcGFjZSB0ZXN0IHsKIC8v
IHRvIGZpbmQgdGhlIHByb2plY3Qgcm9vdC4KIGV4dGVybiBjb25zdCBjaGFyKiBrQ2Fubm90Rmlu
ZFByb2plY3RSb290RGlyOwogCisvLyBTbGFzaCBvciBiYWNrc2xhc2gsIGRlcGVuZGluZyBvbiBw
bGF0Zm9ybS4gTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLgorZXh0ZXJuIGNvbnN0IGNoYXIqIGtQYXRo
RGVsaW1pdGVyOworCiAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBvdXRwdXQg
ZGlyZWN0b3J5IHdoZXJlIGxvZyBmaWxlcyBhbmQgb3RoZXIKIC8vIHRlc3QgYXJ0aWZhY3RzIHNo
b3VsZCBiZSBwdXQuIFRoZSBvdXRwdXQgZGlyZWN0b3J5IGlzIGdlbmVyYWxseSBhIGRpcmVjdG9y
eQogLy8gbmFtZWQgIm91dCIgYXQgdGhlIHByb2plY3Qgcm9vdC4gVGhpcyByb290IGlzIGFzc3Vt
ZWQgdG8gYmUgdHdvIGxldmVscyBhYm92ZQpAQCAtNTEsMTggKzU0LDggQEAgc3RkOjpzdHJpbmcg
VGVtcEZpbGVuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBw
cmVmaXgpOwogc3RkOjpzdHJpbmcgR2VuZXJhdGVUZW1wRmlsZW5hbWUoY29uc3Qgc3RkOjpzdHJp
bmcmIGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwcmVmaXgpOwogCi0vLyBSZXR1cm5zIGEgcGF0aCB0byBhIHJlc291cmNlIGZpbGUgZm9y
IHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHBsYXRmb3JtLgotLy8gQWRhcHRzIHRvIHdoYXQgZmls
ZW5hbWVzIGFyZSBjdXJyZW50bHkgcHJlc2VudCBpbiB0aGUKLS8vIFtwcm9qZWN0LXJvb3RdL3Jl
c291cmNlcy8gZGlyLgotLy8gUmV0dXJucyBhbiBhYnNvbHV0ZSBwYXRoIGFjY29yZGluZyB0byB0
aGlzIHByaW9yaXR5IGxpc3QgKHRoZSBkaXJlY3RvcnkKLS8vIHBhcnQgb2YgdGhlIHBhdGggaXMg
bGVmdCBvdXQgZm9yIHJlYWRhYmlsaXR5KToKLS8vIDEuIFtuYW1lXV9bcGxhdGZvcm1dX1thcmNo
aXRlY3R1cmVdLltleHRlbnNpb25dCi0vLyAyLiBbbmFtZV1fW3BsYXRmb3JtXS5bZXh0ZW5zaW9u
XQotLy8gMy4gW25hbWVdX1thcmNoaXRlY3R1cmVdLltleHRlbnNpb25dCi0vLyA0LiBbbmFtZV0u
W2V4dGVuc2lvbl0KLS8vIFdoZXJlCi0vLyAqIHBsYXRmb3JtIGlzIGVpdGhlciBvZiAid2luIiwg
Im1hYyIgb3IgImxpbnV4Ii4KLS8vICogYXJjaGl0ZWN0dXJlIGlzIGVpdGhlciBvZiAiMzIiIG9y
ICI2NCIuCisvLyBSZXR1cm5zIGEgcGF0aCB0byBhIHJlc291cmNlIGZpbGUgaW4gW3Byb2plY3Qt
cm9vdF0vcmVzb3VyY2VzLyBkaXIuCisvLyBSZXR1cm5zIGFuIGFic29sdXRlIHBhdGgKIC8vCiAv
LyBBcmd1bWVudHM6CiAvLyAgICBuYW1lIC0gTmFtZSBvZiB0aGUgcmVzb3VyY2UgZmlsZS4gSWYg
YSBwbGFpbiBmaWxlbmFtZSAobm8gZGlyZWN0b3J5IHBhdGgpCkBAIC0xMTAsMTUgKzEwMyw2IEBA
IHN0ZDo6c3RyaW5nIERpck5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpOwogLy8gZW1wdHkg
b3IgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QvaXMgcmVhZGFibGUuCiBzaXplX3QgR2V0Rmls
ZVNpemUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKTsKIAotLy8gU2V0cyB0aGUgZXhlY3V0
YWJsZSBwYXRoLCBpLmUuIHRoZSBwYXRoIHRvIHRoZSBleGVjdXRhYmxlIHRoYXQgaXMgYmVpbmcg
dXNlZAotLy8gd2hlbiBsYXVuY2hpbmcgaXQuIFRoaXMgaXMgdXN1YWxseSB0aGUgcGF0aCByZWxh
dGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnkKLS8vIGJ1dCBjYW4gYWxzbyBiZSBhbiBhYnNv
bHV0ZSBwYXRoLiBUaGUgaW50ZW50aW9uIHdpdGggdGhpcyBmdW5jdGlvbiBpcyB0byBwYXNzCi0v
LyB0aGUgYXJndlswXSBiZWluZyBzZW50IGludG8gdGhlIG1haW4gZnVuY3Rpb24gdG8gbWFrZSBp
dCBwb3NzaWJsZSBmb3IKLS8vIGZpbGV1dGlscy5oIHRvIGZpbmQgdGhlIGNvcnJlY3QgcHJvamVj
dCBwYXRocyBldmVuIHdoZW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Ci0vLyBpcyBvdXRzaWRlIHRo
ZSBwcm9qZWN0IHRyZWUgKHdoaWNoIGhhcHBlbnMgaW4gc29tZSBjYXNlcykuCi0vLyBUT0RPKGJ1
Z3Mud2VicnRjLm9yZy85NzkyKTogRGVwcmVjYXRlZCAtIGdvaW5nIGF3YXkgc29vbi4KLXZvaWQg
U2V0RXhlY3V0YWJsZVBhdGgoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhfdG9fZXhlY3V0YWJsZSk7
Ci0KIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVz
dHN1cHBvcnQvZmlsZXV0aWxzX292ZXJyaWRlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODg0MDY5YzEwZGQ0ZjYxMGNkYmVhOTA2YWNmNjFhYTMyM2IyYTBhYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzX292ZXJyaWRlLmNjCkBAIC0wLDAgKzEsMTUxIEBA
CisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmls
ZXV0aWxzX292ZXJyaWRlLmgiCisKKyNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCisjaW5jbHVkZSA8
ZGlyZWN0Lmg+CisjaW5jbHVkZSA8dGNoYXIuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5j
bHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNvZGVjdnQ+CisjaW5jbHVkZSA8bG9jYWxlPgor
CisjaW5jbHVkZSAiU2hsd2FwaS5oIgorI2luY2x1ZGUgIldpbkRlZi5oIgorCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvd2luMzIuaCIKKyNkZWZpbmUgR0VUX0NVUlJFTlRfRElSIF9nZXRjd2QKKyNlbHNl
CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZGVmaW5lIEdFVF9D
VVJSRU5UX0RJUiBnZXRjd2QKKyNlbmRpZgorCisjaWYgZGVmaW5lZChXRUJSVENfSU9TKQorI2lu
Y2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvaW9zZmlsZXV0aWxzLmgiCisjZW5kaWYKKworI2lmIGRl
ZmluZWQoV0VCUlRDX01BQykKKyNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L21hY2ZpbGV1dGls
cy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7Citu
YW1lc3BhY2UgdGVzdCB7CisKK3N0ZDo6c3RyaW5nIERpck5hbWUoY29uc3Qgc3RkOjpzdHJpbmcm
IHBhdGgpOworYm9vbCBDcmVhdGVEaXIoY29uc3Qgc3RkOjpzdHJpbmcmIGRpcmVjdG9yeV9uYW1l
KTsKKworbmFtZXNwYWNlIGludGVybmFsIHsKKworbmFtZXNwYWNlIHsKKyNpZiBkZWZpbmVkKFdF
QlJUQ19XSU4pCitjb25zdCBjaGFyKiBrUGF0aERlbGltaXRlciA9ICJcXCI7CisjZWxpZiAhZGVm
aW5lZChXRUJSVENfSU9TKQorY29uc3QgY2hhcioga1BhdGhEZWxpbWl0ZXIgPSAiLyI7CisjZW5k
aWYKKworI2lmIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCisvLyBUaGlzIGlzIGEgc3BlY2lhbCBj
YXNlIGluIENocm9tZSBpbmZyYXN0cnVjdHVyZS4gU2VlCisvLyBiYXNlL3Rlc3QvdGVzdF9zdXBw
b3J0X2FuZHJvaWQuY2MuCitjb25zdCBjaGFyKiBrQW5kcm9pZENocm9taXVtVGVzdHNSb290ID0g
Ii9zZGNhcmQvY2hyb21pdW1fdGVzdHNfcm9vdC8iOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChX
RUJSVENfSU9TKQorY29uc3QgY2hhcioga1Jlc291cmNlc0Rpck5hbWUgPSAicmVzb3VyY2VzIjsK
KyNlbmRpZgorCit9ICAvLyBuYW1lc3BhY2UKKworLy8gRmluZHMgdGhlIFdlYlJUQyBzcmMgZGly
LgorLy8gVGhlIHJldHVybmVkIHBhdGggYWx3YXlzIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9y
LgorYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IFByb2plY3RSb290UGF0aCgpIHsKKyNpZiBk
ZWZpbmVkKFdFQlJUQ19BTkRST0lEKQorICByZXR1cm4ga0FuZHJvaWRDaHJvbWl1bVRlc3RzUm9v
dDsKKyNlbGlmIGRlZmluZWQgV0VCUlRDX0lPUworICByZXR1cm4gSU9TUm9vdFBhdGgoKTsKKyNl
bGlmIGRlZmluZWQoV0VCUlRDX01BQykKKyAgc3RkOjpzdHJpbmcgcGF0aDsKKyAgR2V0TlNFeGVj
dXRhYmxlUGF0aCgmcGF0aCk7CisgIHN0ZDo6c3RyaW5nIGV4ZV9kaXIgPSBEaXJOYW1lKHBhdGgp
OworICAvLyBPbiBNYWMsIHRlc3RzIGV4ZWN1dGUgaW4gb3V0L1doYXRldmVyLCBzbyBzcmMgaXMg
dHdvIGxldmVscyB1cCBleGNlcHQgaWYKKyAgLy8gdGhlIHRlc3QgaXMgYnVuZGxlZCAod2hpY2gg
b3VyIHRlc3RzIGFyZSBub3QpLCBpbiB3aGljaCBjYXNlIGl0J3MgNSBsZXZlbHMuCisgIHJldHVy
biBEaXJOYW1lKERpck5hbWUoZXhlX2RpcikpICsga1BhdGhEZWxpbWl0ZXI7CisjZWxpZiBkZWZp
bmVkKFdFQlJUQ19QT1NJWCkKKyAgY2hhciBidWZbUEFUSF9NQVhdOworICBzc2l6ZV90IGNvdW50
ID0gOjpyZWFkbGluaygiL3Byb2Mvc2VsZi9leGUiLCBidWYsIGFycmF5c2l6ZShidWYpKTsKKyAg
aWYgKGNvdW50IDw9IDApIHsKKyAgICBSVENfTk9UUkVBQ0hFRCgpIDw8ICJVbmFibGUgdG8gcmVz
b2x2ZSAvcHJvYy9zZWxmL2V4ZS4iOworICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworICB9Cisg
IC8vIE9uIFBPU0lYLCB0ZXN0cyBleGVjdXRlIGluIG91dC9XaGF0ZXZlciwgc28gc3JjIGlzIHR3
byBsZXZlbHMgdXAuCisgIHN0ZDo6c3RyaW5nIGV4ZV9kaXIgPSBEaXJOYW1lKHN0ZDo6c3RyaW5n
KGJ1ZiwgY291bnQpKTsKKyAgcmV0dXJuIERpck5hbWUoRGlyTmFtZShleGVfZGlyKSkgKyBrUGF0
aERlbGltaXRlcjsKKyNlbGlmIGRlZmluZWQoV0VCUlRDX1dJTikKKyAgd2NoYXJfdCBidWZbTUFY
X1BBVEhdOworICBidWZbMF0gPSAwOworICBpZiAoR2V0TW9kdWxlRmlsZU5hbWUoTlVMTCwgYnVm
LCBNQVhfUEFUSCkgPT0gMCkKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKworICBzdGQ6OnN0
cmluZyBleGVfcGF0aCA9IHJ0Yzo6VG9VdGY4KHN0ZDo6d3N0cmluZyhidWYpKTsKKyAgc3RkOjpz
dHJpbmcgZXhlX2RpciA9IERpck5hbWUoZXhlX3BhdGgpOworICByZXR1cm4gRGlyTmFtZShEaXJO
YW1lKGV4ZV9kaXIpKSArIGtQYXRoRGVsaW1pdGVyOworI2VuZGlmCit9CisKK3N0ZDo6c3RyaW5n
IE91dHB1dFBhdGgoKSB7CisjaWYgZGVmaW5lZChXRUJSVENfSU9TKQorICByZXR1cm4gSU9TT3V0
cHV0UGF0aCgpOworI2VsaWYgZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKKyAgcmV0dXJuIGtBbmRy
b2lkQ2hyb21pdW1UZXN0c1Jvb3Q7CisjZWxzZQorICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmlu
Zz4gcGF0aF9vcHQgPSBQcm9qZWN0Um9vdFBhdGgoKTsKKyAgUlRDX0RDSEVDSyhwYXRoX29wdCk7
CisgIHN0ZDo6c3RyaW5nIHBhdGggPSAqcGF0aF9vcHQgKyAib3V0IjsKKyAgaWYgKCFDcmVhdGVE
aXIocGF0aCkpIHsKKyAgICByZXR1cm4gIi4vIjsKKyAgfQorICByZXR1cm4gcGF0aCArIGtQYXRo
RGVsaW1pdGVyOworI2VuZGlmCit9CisKK3N0ZDo6c3RyaW5nIFdvcmtpbmdEaXIoKSB7CisjaWYg
ZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKKyAgcmV0dXJuIGtBbmRyb2lkQ2hyb21pdW1UZXN0c1Jv
b3Q7CisjZW5kaWYKKyAgY2hhciBwYXRoX2J1ZmZlcltGSUxFTkFNRV9NQVhdOworICBpZiAoIUdF
VF9DVVJSRU5UX0RJUihwYXRoX2J1ZmZlciwgc2l6ZW9mKHBhdGhfYnVmZmVyKSkpIHsKKyAgICBm
cHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBnZXQgY3VycmVudCBkaXJlY3RvcnkhXG4iKTsKKyAgICBy
ZXR1cm4gIi4vIjsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcocGF0aF9idWZm
ZXIpOworICB9Cit9CisKK3N0ZDo6c3RyaW5nIFJlc291cmNlUGF0aChjb25zdCBzdGQ6OnN0cmlu
ZyYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXh0
ZW5zaW9uKSB7CisjaWYgZGVmaW5lZChXRUJSVENfSU9TKQorICByZXR1cm4gSU9TUmVzb3VyY2VQ
YXRoKG5hbWUsIGV4dGVuc2lvbik7CisjZWxzZQorICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmlu
Zz4gcGF0aF9vcHQgPSBQcm9qZWN0Um9vdFBhdGgoKTsKKyAgUlRDX0RDSEVDSyhwYXRoX29wdCk7
CisgIHN0ZDo6c3RyaW5nIHJlc291cmNlc19wYXRoID0gKnBhdGhfb3B0ICsga1Jlc291cmNlc0Rp
ck5hbWUgKyBrUGF0aERlbGltaXRlcjsKKyAgcmV0dXJuIHJlc291cmNlc19wYXRoICsgbmFtZSAr
ICIuIiArIGV4dGVuc2lvbjsKKyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK
K30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBw
b3J0L2ZpbGV1dGlsc19vdmVycmlkZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNDFjNzY4NjA3MTZhZDc4OTJlZGRkYmQ4MzU5OTMxY2YyMGIwMjZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90
ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuaApAQCAtMCwwICsxLDU3IEBACisvKgorICog
IENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nPgor
CisjaWZuZGVmIFRFU1RfVEVTVFNVUFBPUlRfRklMRVVUSUxTX09WRVJSSURFX0hfCisjZGVmaW5l
IFRFU1RfVEVTVFNVUFBPUlRfRklMRVVUSUxTX09WRVJSSURFX0hfCisKK25hbWVzcGFjZSB3ZWJy
dGMgeworbmFtZXNwYWNlIHRlc3QgeworbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gUmV0dXJu
cyB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeSB3aGVyZSBsb2cgZmls
ZXMgYW5kIG90aGVyCisvLyB0ZXN0IGFydGlmYWN0cyBzaG91bGQgYmUgcHV0LiBUaGUgb3V0cHV0
IGRpcmVjdG9yeSBpcyBnZW5lcmFsbHkgYSBkaXJlY3RvcnkKKy8vIG5hbWVkICJvdXQiIGF0IHRo
ZSBwcm9qZWN0IHJvb3QuIFRoaXMgcm9vdCBpcyBhc3N1bWVkIHRvIGJlIHR3byBsZXZlbHMgYWJv
dmUKKy8vIHdoZXJlIHRoZSB0ZXN0IGJpbmFyeSBpcyBsb2NhdGVkOyB0aGlzIGlzIGJlY2F1c2Ug
dGVzdHMgZXhlY3V0ZSBpbiBhIGRpcgorLy8gb3V0L1doYXRldmVyIHJlbGF0aXZlIHRvIHRoZSBw
cm9qZWN0IHJvb3QuIFRoaXMgY29udmVudGlvbiBpcyBhbHNvIGZvbGxvd2VkCisvLyBpbiBDaHJv
bWl1bS4KKy8vCisvLyBUaGUgZXhjZXB0aW9uIGlzIEFuZHJvaWQgd2hlcmUgd2UgdXNlIC9zZGNh
cmQvIGluc3RlYWQuCisvLworLy8gSWYgc3ltYm9saWMgbGlua3Mgb2NjdXIgaW4gdGhlIHBhdGgg
dGhleSB3aWxsIGJlIHJlc29sdmVkIGFuZCB0aGUgYWN0dWFsCisvLyBkaXJlY3Rvcnkgd2lsbCBi
ZSByZXR1cm5lZC4KKy8vCisvLyBSZXR1cm5zIHRoZSBwYXRoIFdJVEggYSB0cmFpbGluZyBwYXRo
IGRlbGltaXRlci4gSWYgdGhlIHByb2plY3Qgcm9vdCBpcyBub3QKKy8vIGZvdW5kLCB0aGUgY3Vy
cmVudCB3b3JraW5nIGRpcmVjdG9yeSAoIi4vIikgaXMgcmV0dXJuZWQgYXMgYSBmYWxsYmFjay4K
K3N0ZDo6c3RyaW5nIE91dHB1dFBhdGgoKTsKKworLy8gR2V0cyB0aGUgY3VycmVudCB3b3JraW5n
IGRpcmVjdG9yeSBmb3IgdGhlIGV4ZWN1dGluZyBwcm9ncmFtLgorLy8gUmV0dXJucyAiLi8iIGlm
IGZvciBzb21lIHJlYXNvbiBpdCBpcyBub3QgcG9zc2libGUgdG8gZmluZCB0aGUgd29ya2luZwor
Ly8gZGlyZWN0b3J5Lgorc3RkOjpzdHJpbmcgV29ya2luZ0RpcigpOworCisvLyBSZXR1cm5zIGEg
cGF0aCB0byBhIHJlc291cmNlIGZpbGUgaW4gW3Byb2plY3Qtcm9vdF0vcmVzb3VyY2VzLyBkaXIu
CisvLyBSZXR1cm5zIGFuIGFic29sdXRlIHBhdGgKKy8vCisvLyBBcmd1bWVudHM6CisvLyAgICBu
YW1lIC0gTmFtZSBvZiB0aGUgcmVzb3VyY2UgZmlsZS4gSWYgYSBwbGFpbiBmaWxlbmFtZSAobm8g
ZGlyZWN0b3J5IHBhdGgpCisvLyAgICAgICAgICAgaXMgc3VwcGxpZWQsIHRoZSBmaWxlIGlzIGFz
c3VtZWQgdG8gYmUgbG9jYXRlZCBpbiByZXNvdXJjZXMvCisvLyAgICAgICAgICAgSWYgYSBkaXJl
Y3RvcnkgcGF0aCBpcyBwcmVwZW5kZWQgdG8gdGhlIGZpbGVuYW1lLCBhIHN1YmRpcmVjdG9yeQor
Ly8gICAgICAgICAgIGhpZXJhcmNoeSByZWZsZWN0aW5nIHRoYXQgcGF0aCBpcyBhc3N1bWVkIHRv
IGJlIHByZXNlbnQuCisvLyAgICBleHRlbnNpb24gLSBGaWxlIGV4dGVuc2lvbiwgd2l0aG91dCB0
aGUgZG90LCBpLmUuICJibXAiIG9yICJ5dXYiLgorc3RkOjpzdHJpbmcgUmVzb3VyY2VQYXRoKGNv
bnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgZXh0ZW5zaW9uKTsKKwor
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFRFU1RfVEVTVFNVUFBPUlRfRklMRVVUSUxTX09W
RVJSSURFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlsc191bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvZmlsZXV0
aWxzX3VuaXR0ZXN0LmNjCmluZGV4IGM2ZGM4NmRlYjIwMGEzYzNjMDJkMjhkMTA0ZTI2NTI2Njg3
MDk4MmEuLmQzOWY0NjgwMDQxOGRhN2MzNzY3NjhmYWQxMjNlZTcxOTY5NjA0YjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1
cHBvcnQvZmlsZXV0aWxzX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzX3VuaXR0ZXN0LmNj
CkBAIC0yNCw5ICsyNCw2IEBACiAKICNpZmRlZiBXSU4zMgogI2RlZmluZSBjaGRpciBfY2hkaXIK
LXN0YXRpYyBjb25zdCBjaGFyKiBrUGF0aERlbGltaXRlciA9ICJcXCI7Ci0jZWxzZQotc3RhdGlj
IGNvbnN0IGNoYXIqIGtQYXRoRGVsaW1pdGVyID0gIi8iOwogI2VuZGlmCiAKIHVzaW5nIDo6dGVz
dGluZzo6RW5kc1dpdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2pwZWdfZnJhbWVfd3JpdGVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9q
cGVnX2ZyYW1lX3dyaXRlci5jYwppbmRleCA1MzdlODVjZmE1ZTU1ZjEwMDI5MTE0NDMyYTI1ZTk3
N2Y2OGI1Zjk4Li44YmYxZWU0NjMwZTFmM2I4NGE3ZGE0M2ZkMTcxYzlkMWIxMjYzNDU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rl
c3RzdXBwb3J0L2pwZWdfZnJhbWVfd3JpdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvanBlZ19mcmFtZV93cml0ZXIu
Y2MKQEAgLTEwLDcgKzEwLDYgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLSNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgImNvbW1v
bl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9y
dC90ZXN0X2FydGlmYWN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvdGVzdF9hcnRpZmFjdHMuY2MKaW5kZXggMGY3ZTBjZDRm
Zjg2NjA2ZDBiOWFiMmNjZmJjY2EzNTJhMzkwZDdlZS4uOTQzOGNlZmJjNGZkN2UxODZiYmMyMmVm
YjdkYWJjYTI4NDlhNDRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC90ZXN0X2FydGlmYWN0cy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0
L3Rlc3RfYXJ0aWZhY3RzLmNjCkBAIC0yNCw5ICsyNCw5IEBAIGNvbnN0IHN0ZDo6c3RyaW5nJiBE
ZWZhdWx0QXJ0aWZhY3RQYXRoKCkgewogfQogfSAgLy8gbmFtZXNwYWNlCiAKLURFRklORV9zdHJp
bmcodGVzdF9hcnRpZmFjdHNfZGlyLAotICAgICAgICAgICAgICBEZWZhdWx0QXJ0aWZhY3RQYXRo
KCkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIlRoZSBvdXRwdXQgZm9sZGVyIHdoZXJlIHRlc3Qg
b3V0cHV0IHNob3VsZCBiZSBzYXZlZC4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHRlc3RfYXJ0
aWZhY3RzX2RpciwKKyAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRBcnRpZmFjdFBhdGgoKS5j
X3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgIlRoZSBvdXRwdXQgZm9sZGVyIHdoZXJlIHRl
c3Qgb3V0cHV0IHNob3VsZCBiZSBzYXZlZC4iKTsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1l
c3BhY2UgdGVzdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L3Rlc3RfYXJ0aWZhY3RzX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9y
dC90ZXN0X2FydGlmYWN0c191bml0dGVzdC5jYwppbmRleCBjNDIzY2Q5MGVhZGE5MDhhZjNjOTJm
ZmE5ZGUyZTFmODYxOTZkZGI5Li5kZjAyZDI3YzY3MjVkNjE2NzIyNmVmMjQxMGY1NzA0MDUxM2Mz
OTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3Rlc3RzdXBwb3J0L3Rlc3RfYXJ0aWZhY3RzX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvdGVz
dF9hcnRpZmFjdHNfdW5pdHRlc3QuY2MKQEAgLTE2LDEyICsxNiwxMSBAQAogCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvZmlsZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvcGF0aHV0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fZmlsZS5o
IgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2Zp
bGV1dGlscy5oIgogCi1ERUNMQVJFX3N0cmluZyh0ZXN0X2FydGlmYWN0c19kaXIpOworV0VCUlRD
X0RFQ0xBUkVfc3RyaW5nKHRlc3RfYXJ0aWZhY3RzX2Rpcik7CiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogbmFtZXNwYWNlIHRlc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC92Y21fY2FwdHVyZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdmNtX2NhcHR1cmVyLmgKaW5kZXggNTlkZjRj
NzFlMmFhODYzZTFiY2Q4OWY2ZjAwMTNhZmY0YWI5MzQyMC4uNWY0NzA3ZjkxMTU1MWY0NDljYjhj
ZjQyZjQ2YjY0MDM2MTgwZjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC92Y21fY2FwdHVyZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3ZjbV9jYXB0dXJlci5oCkBAIC0xMiw3
ICsxMiw2IEBACiAKICNpbmNsdWRlIDxtZW1vcnk+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMu
aCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgImNvbW1vbl92aWRlby9saWJ5
dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jYXB0
dXJlL3ZpZGVvX2NhcHR1cmUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvdmlkZW9fZW5jb2Rlcl9wcm94eV9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3ZpZGVvX2VuY29kZXJfcHJveHlfZmFjdG9yeS5o
CmluZGV4IGU3Mjg5YzAzOTllMjY2N2VlOGYxMzI1NjY0OGQ2MDM3NTVlMzQ1ZjQuLjllNWVhMTJj
ZTJiY2JiOTM4MmYzMzUzODFiNTU5Yjk1NzQwZGQ3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdmlkZW9fZW5jb2Rlcl9wcm94eV9m
YWN0b3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC92aWRlb19lbmNvZGVyX3Byb3h5X2ZhY3RvcnkuaApAQCAtNzEsMjMgKzcxLDE3IEBAIGNs
YXNzIFZpZGVvRW5jb2RlclByb3h5RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBWaWRlb0VuY29kZXJG
YWN0b3J5IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1heF9wYXlsb2FkX3NpemUp
IG92ZXJyaWRlIHsKICAgICAgIHJldHVybiBlbmNvZGVyXy0+SW5pdEVuY29kZShjb25maWcsIG51
bWJlcl9vZl9jb3JlcywgbWF4X3BheWxvYWRfc2l6ZSk7CiAgICAgfQotICAgIFZpZGVvRW5jb2Rl
cjo6U2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IG92ZXJyaWRlIHsK
LSAgICAgIHJldHVybiBlbmNvZGVyXy0+R2V0U2NhbGluZ1NldHRpbmdzKCk7Ci0gICAgfQogICAg
IGludDMyX3QgUmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKAogICAgICAgICBFbmNvZGVk
SW1hZ2VDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlIHsKICAgICAgIHJldHVybiBlbmNvZGVy
Xy0+UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKGNhbGxiYWNrKTsKICAgICB9CiAgICAg
aW50MzJfdCBSZWxlYXNlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZW5jb2Rlcl8tPlJlbGVhc2UoKTsg
fQotICAgIGludDMyX3QgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3Ms
IGludDY0X3QgcnR0KSBvdmVycmlkZSB7Ci0gICAgICByZXR1cm4gZW5jb2Rlcl8tPlNldENoYW5u
ZWxQYXJhbWV0ZXJzKHBhY2tldF9sb3NzLCBydHQpOwotICAgIH0KICAgICBpbnQzMl90IFNldFJh
dGVBbGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIHJhdGVfYWxsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgb3Zl
cnJpZGUgewogICAgICAgcmV0dXJuIGVuY29kZXJfLT5TZXRSYXRlQWxsb2NhdGlvbihyYXRlX2Fs
bG9jYXRpb24sIGZyYW1lcmF0ZSk7CiAgICAgfQotICAgIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0
aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICAgIHJldHVybiBlbmNvZGVyXy0+SW1wbGVt
ZW50YXRpb25OYW1lKCk7CisgICAgVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBHZXRFbmNvZGVy
SW5mbygpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICAgIHJldHVybiBlbmNvZGVyXy0+R2V0RW5jb2Rl
ckluZm8oKTsKICAgICB9CiAKICAgICBWaWRlb0VuY29kZXIqIGNvbnN0IGVuY29kZXJfOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC93
aW4vcnVuX2xvb3Bfd2luLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC93aW4vcnVuX2xvb3Bfd2luLmNjCmluZGV4IDI4ZGM5MzM0ZTA4NmZmNTkxOWM2
MzliZDY2MDI3NWY1Njg1MWI5ZTQuLmVlOTM2MzU4ZmE2ZDJiZTAzZmE3NTk4YmQ4NDg3MGI0N2I1
ZjkwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3Qvd2luL3J1bl9sb29wX3dpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3dpbi9ydW5fbG9vcF93aW4uY2MKQEAgLTE4LDE1ICsx
OCwxOCBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiAKLXZvaWQgUHJl
c3NFbnRlclRvQ29udGludWUoKSB7Cit2b2lkIFByZXNzRW50ZXJUb0NvbnRpbnVlKFNpbmdsZVRo
cmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZyAmdGFza19xdWV1ZSkgewogICBwdXRzKCI+PiBQcmVz
cyBFTlRFUiB0byBjb250aW51ZS4uLiIpOwogCi0gIE1TRyBtc2c7Ci0gIEJPT0wgcmV0OwotICB3
aGlsZSAoKHJldCA9IEdldE1lc3NhZ2UoJm1zZywgTlVMTCwgMCwgMCkpICE9IDApIHsKLSAgICBh
c3NlcnQocmV0ICE9IC0xKTsKLSAgICBUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOwotICAgIERpc3Bh
dGNoTWVzc2FnZSgmbXNnKTsKKyAgd2hpbGUgKCFfa2JoaXQoKSB8fCBfZ2V0Y2goKSAhPSAnXHIn
KSB7CisgICAgLy8gRHJpdmUgdGhlIG1lc3NhZ2UgbG9vcCBmb3IgdGhlIHRocmVhZCBydW5uaW5n
IHRoZSB0YXNrX3F1ZXVlCisgICAgdGFza19xdWV1ZS5TZW5kVGFzayhbJl0oKSB7CisgICAgICBN
U0cgbXNnOworICAgICAgaWYgKFBlZWtNZXNzYWdlKCZtc2csIE5VTEwsIDAsIDAsIFBNX1JFTU9W
RSkpIHsKKyAgICAgICAgVHJhbnNsYXRlTWVzc2FnZSgmbXNnKTsKKyAgICAgICAgRGlzcGF0Y2hN
ZXNzYWdlKCZtc2cpOworICAgICAgfQorICAgIH0pOwogICB9CiB9CiB9ICAvLyBuYW1lc3BhY2Ug
dGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdG9vbHNfd2VicnRjL2FuZHJvaWQvc3VwcHJlc3Npb25zLnhtbCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9hbmRyb2lkL3N1cHByZXNz
aW9ucy54bWwKaW5kZXggNjdlNWI0MTY1MzAyZmU4M2MxYmZlY2NhNmVjODZhMjM1MjJkYTE5YS4u
NDUzNzVjMmZlNzFjOGQzNjI2Y2NmOWZkMDFlNjMwNWQ1ZWNhMzIxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2FuZHJv
aWQvc3VwcHJlc3Npb25zLnhtbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvYW5kcm9pZC9zdXBwcmVzc2lvbnMueG1sCkBAIC0yMiw3
ICsyMiwxMCBAQAogCiAgIDxpc3N1ZSBpZD0iR29vZ2xlQXBwSW5kZXhpbmdXYXJuaW5nIiBzZXZl
cml0eT0iaWdub3JlIi8+CiAgIDxpc3N1ZSBpZD0iTWlzc2luZ1JlZ2lzdGVyZWQiIHNldmVyaXR5
PSJpZ25vcmUiLz4KLQorICA8aXNzdWUgaWQ9IkxpbnRFcnJvciI+CisgICAgPCEtLSBXZSBubyBs
b25nZXIgc3VwcGx5IGNsYXNzIGZpbGVzIHRvIGxpbnQuIC0tPgorICAgIDxpZ25vcmUgcmVnZXhw
PSJObyBgLmNsYXNzYCBmaWxlcyB3ZXJlIGZvdW5kIGluIHByb2plY3QiLz4KKyAgPC9pc3N1ZT4K
ICAgPCEtLSBUaGVzZSBhcmUganVzdCBmcm9tIHRoZSBkdW1teSBBbmRyb2lkTWFuaWZlc3QueG1s
IHdlIHVzZSBmb3IgbGludGluZy4KICAgICAgICBJdCdzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBh
cyB0aGlzIGZpbGUuIC0tPgogICA8aXNzdWUgaWQ9Ik1pc3NpbmdBcHBsaWNhdGlvbkljb24iIHNl
dmVyaXR5PSJpZ25vcmUiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9hdXRvcm9sbGVyL3JvbGxfZGVwcy5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9hdXRv
cm9sbGVyL3JvbGxfZGVwcy5weQppbmRleCA5OTk5YzZmNmFmYmY2ZGYxZGExMTBkMTUyMDM5ZjJk
YTIwYzM4ZGY1Li5kM2E4YmRiY2E4ZjlmYjI3ZjJmMTEzNGY4OGRkMDUxZDllZTFkZThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193
ZWJydGMvYXV0b3JvbGxlci9yb2xsX2RlcHMucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2F1dG9yb2xsZXIvcm9sbF9kZXBzLnB5
CkBAIC03MCw2ICs3MCw4IEBAIEFORFJPSURfREVQU19FTkQgPSByJz09PSBBTkRST0lEX0RFUFMg
R2VuZXJhdGVkIENvZGUgRW5kID09PScKICMgTG9jYXRpb24gb2YgYXV0b21pY2FsbHkgZ2F0aGVy
ZWQgYW5kcm9pZCBkZXBzLgogQU5EUk9JRF9ERVBTX1BBVEggPSAnc3JjL3RoaXJkX3BhcnR5L2Fu
ZHJvaWRfZGVwcy8nCiAKK05PVElGWV9FTUFJTCA9ICd3ZWJydGMtdHJvb3BlckBncm90YXRpb25z
LmFwcHNwb3RtYWlsLmNvbScKKwogCiBzeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKENIRUNL
T1VUX1NSQ19ESVIsICdidWlsZCcpKQogaW1wb3J0IGZpbmRfZGVwb3RfdG9vbHMKQEAgLTI1Niw4
ICsyNTgsOSBAQCBkZWYgQnVpbGREZXBzZW50cnlEaWN0KGRlcHNfZGljdCk6CiAKIAogZGVmIF9G
aW5kQ2hhbmdlZENpcGRQYWNrYWdlcyhwYXRoLCBvbGRfcGtncywgbmV3X3BrZ3MpOgotICBhc3Nl
cnQgKHtwWydwYWNrYWdlJ10gZm9yIHAgaW4gb2xkX3BrZ3N9ID09Ci0gICAgICAgICAge3BbJ3Bh
Y2thZ2UnXSBmb3IgcCBpbiBuZXdfcGtnc30pCisgIHBrZ3NfZXF1YWwgPSAoe3BbJ3BhY2thZ2Un
XSBmb3IgcCBpbiBvbGRfcGtnc30gPT0KKyAgICAgIHtwWydwYWNrYWdlJ10gZm9yIHAgaW4gbmV3
X3BrZ3N9KQorICBhc3NlcnQgcGtnc19lcXVhbCwgJ09sZDogJXNcbiBOZXc6ICVzJyAlIChvbGRf
cGtncywgbmV3X3BrZ3MpCiAgIGZvciBvbGRfcGtnIGluIG9sZF9wa2dzOgogICAgIGZvciBuZXdf
cGtnIGluIG5ld19wa2dzOgogICAgICAgb2xkX3ZlcnNpb24gPSBvbGRfcGtnWyd2ZXJzaW9uJ10K
QEAgLTU5MiwxMCArNTk1LDExIEBAIGRlZiBfVXBsb2FkQ0woY29tbWl0X3F1ZXVlX21vZGUpOgog
ICAgIC0gMTogUnVuIHRyeWJvdHMgYnV0IGRvIG5vdCBzdWJtaXQgdG8gQ1EuCiAgICAgLSAwOiBT
a2lwIENRLCB1cGxvYWQgb25seS4KICAgIiIiCi0gIGNtZCA9IFsnZ2l0JywgJ2NsJywgJ3VwbG9h
ZCcsICctLWZvcmNlJywgJy0tYnlwYXNzLWhvb2tzJ10KKyAgY21kID0gWydnaXQnLCAnY2wnLCAn
dXBsb2FkJywgJy0tZm9yY2UnLCAnLS1ieXBhc3MtaG9va3MnLCAnLS1zZW5kLW1haWwnXQorICBj
bWQuZXh0ZW5kKFsnLS1jYycsIE5PVElGWV9FTUFJTF0pCiAgIGlmIGNvbW1pdF9xdWV1ZV9tb2Rl
ID49IDI6CiAgICAgbG9nZ2luZy5pbmZvKCdTZW5kaW5nIHRoZSBDTCB0byB0aGUgQ1EuLi4nKQot
ICAgIGNtZC5leHRlbmQoWyctLXVzZS1jb21taXQtcXVldWUnLCAnLS1zZW5kLW1haWwnXSkKKyAg
ICBjbWQuZXh0ZW5kKFsnLS11c2UtY29tbWl0LXF1ZXVlJ10pCiAgIGVsaWYgY29tbWl0X3F1ZXVl
X21vZGUgPj0gMToKICAgICBsb2dnaW5nLmluZm8oJ1N0YXJ0aW5nIENRIGRyeSBydW4uLi4nKQog
ICAgIGNtZC5leHRlbmQoWyctLWNxLWRyeS1ydW4nXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9jb3ZlcmFnZS9nZW5l
cmF0ZV9jb3ZlcmFnZV9jb21tYW5kLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2NvdmVyYWdlL2dlbmVyYXRlX2NvdmVyYWdlX2NvbW1h
bmQucHkKaW5kZXggYTQwMmYzOGRhN2Q0NTg5M2RiYTc3ZDMyYWRjODNlYWNiMzEyZDA3My4uODU2
NjY2ODE2ZGZmMTY1OWQyZjY4MWE2MjgwN2Y0NzcyNzhjM2U5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2NvdmVyYWdl
L2dlbmVyYXRlX2NvdmVyYWdlX2NvbW1hbmQucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2NvdmVyYWdlL2dlbmVyYXRlX2NvdmVy
YWdlX2NvbW1hbmQucHkKQEAgLTIyLDEzICsyMiwxMyBAQCBURVNUUyA9IFsKICAgJ3ZpZGVvX2Vu
Z2luZV90ZXN0cycsCiAgICd0b29sc191bml0dGVzdHMnLAogICAndGVzdF9zdXBwb3J0X3VuaXR0
ZXN0cycsCisgICdzbG93X3Rlc3RzJywKICAgJ3N5c3RlbV93cmFwcGVyc191bml0dGVzdHMnLAog
ICAncnRjX3VuaXR0ZXN0cycsCiAgICdydGNfc3RhdHNfdW5pdHRlc3RzJywKICAgJ3J0Y19wY191
bml0dGVzdHMnLAogICAncnRjX21lZGlhX3VuaXR0ZXN0cycsCiAgICdwZWVyY29ubmVjdGlvbl91
bml0dGVzdHMnLAotICAnb3J0Y191bml0dGVzdHMnLAogICAnbW9kdWxlc191bml0dGVzdHMnLAog
ICAnbW9kdWxlc190ZXN0cycsCiAgICdsb3dfYmFuZHdpZHRoX2F1ZGlvX3Rlc3QnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2Vi
cnRjL2NvdmVyYWdlL2dlbmVyYXRlX2lvc19jb3ZlcmFnZV9jb21tYW5kLnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2NvdmVyYWdlL2dl
bmVyYXRlX2lvc19jb3ZlcmFnZV9jb21tYW5kLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MWVlMmM2MmIwYTc1
ZDJlOWFjZTljMmFmYzk1ZmY2ZGI2MmM4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvY292ZXJhZ2UvZ2Vu
ZXJhdGVfaW9zX2NvdmVyYWdlX2NvbW1hbmQucHkKQEAgLTAsMCArMSwxNzQgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyMgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisjIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKKyMgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorIyBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKworIiIiR2VuZXJhdGVzIGNvbW1hbmQtbGluZSBpbnN0cnVjdGlvbnMg
dG8gcHJvZHVjZSBvbmUtdGltZSBpT1MgY292ZXJhZ2UgdXNpbmcKK2NvdmVyYWdlLnB5LgorCitU
aGlzIHNjcmlwdCBpcyB1c2FibGUgZm9yIGJvdGggcmVhbCBkZXZpY2VzIGFuZCBzaW11bGF0b3Iu
CitCdXQgZm9yIHJlYWwgZGV2aWNlcyBhY3R1YWwgZXhlY3V0aW9uIHNob3VsZCBiZSBkb25lIG1h
bnVhbGx5IGZyb20gWGNvZGUKK2FuZCBjb3ZlcmFnZS5wcm9mcmF3IGZpbGVzIHNob3VsZCBiZSBh
bHNvIGNvcGllZCBtYW51YWxseSBmcm9tIHRoZSBkZXZpY2UuCisKK0FkZGl0aW9uYWwgcHJlcmVx
dWlzaXRlczoKKworMS4gWGNvZGUgMTArIHdpdGggaVBob25lIFNpbXVsYXRvciBTREsuIENhbiBi
ZSBpbnN0YWxsZWQgYnkgY29tbWFuZDoKKyAgICQgbWFjX3Rvb2xjaGFpbiBpbnN0YWxsIC1raW5k
IGlvcyAteGNvZGUtdmVyc2lvbiAxMGwyMzJtIFwKKyAgICAgLW91dHB1dC1kaXIgYnVpbGQvbWFj
X2ZpbGVzL1hjb2RlLmFwcAorCisyLiBGb3IgY29tcHV0aW5nIGNvdmVyYWdlIG9uIHJlYWwgZGV2
aWNlIHlvdSBwcm9iYWJseSBhbHNvIG5lZWQgdG8gYXBwbHkKK2ZvbGxvd2luZyBwYXRjaCB0byBj
b2RlX2NvdmVyYWdlL2NvdmVyYWdlLnB5IHNjcmlwdDoKKworPT09PT09PT09PSBCRUdJTk5JTkcg
T0YgUEFUQ0ggPT09PT09PT09PQorLS0tIGEvY29kZV9jb3ZlcmFnZS9jb3ZlcmFnZS5weQorKysr
IGIvY29kZV9jb3ZlcmFnZS9jb3ZlcmFnZS5weQorQEAgLTY5Myw4ICs2OTMsNyBAQCBkZWYgX0Fk
ZEFyY2hBcmd1bWVudEZvcklPU0lmTmVlZGVkKGNtZF9saXN0LCBudW1fYXJjaHMpOgorICAgdG8g
dXNlLCBhbmQgb25lIGFyY2hpdGVjdHVyZSBuZWVkcyB0byBiZSBzcGVjaWZpZWQgZm9yIGVhY2gg
YmluYXJ5LgorICAgIiIgIgoraWYgX0lzSU9TKCk6CistICAgIGNtZF9saXN0LmV4dGVuZChbJy1h
cmNoPXg4Nl82NCddICogbnVtX2FyY2hzKQorKyAgICBjbWRfbGlzdC5leHRlbmQoWyctYXJjaD1h
cm02NCddICogbnVtX2FyY2hzKQorCisKK2RlZiBfR2V0QmluYXJ5UGF0aChjb21tYW5kKToKK0BA
IC04MzYsOCArODM1LDggQEAgZGVmIF9HZXRCaW5hcnlQYXRoc0Zyb21UYXJnZXRzKHRhcmdldHMs
IGJ1aWxkX2Rpcik6CisgIGJpbmFyeV9wYXRoID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgdGFy
Z2V0KQorICBpZiBjb3ZlcmFnZV91dGlscy5HZXRIb3N0UGxhdGZvcm0oKSA9PSAnd2luJzoKKyAg
ICBiaW5hcnlfcGF0aCArPSAnLmV4ZScKKysgICAgZWxpZiBjb3ZlcmFnZV91dGlscy5HZXRIb3N0
UGxhdGZvcm0oKSA9PSAnbWFjJzoKKysgICAgICBiaW5hcnlfcGF0aCArPSAnLmFwcC8lcycgJSB0
YXJnZXQKKworaWYgb3MucGF0aC5leGlzdHMoYmluYXJ5X3BhdGgpOgorICBiaW5hcnlfcGF0aHMu
YXBwZW5kKGJpbmFyeV9wYXRoKQorPT09PT09PT09PSBFTkRJTkcgT0YgUEFUQ0ggPT09PT09PT09
PQorCisiIiIKKworaW1wb3J0IHN5cworCitESVJFQ1RPUlkgPSAnb3V0L2NvdmVyYWdlJworCitU
RVNUUyA9IFsKKyAgJ2F1ZGlvX2RlY29kZXJfdW5pdHRlc3RzJywKKyAgJ2NvbW1vbl9hdWRpb191
bml0dGVzdHMnLAorICAnY29tbW9uX3ZpZGVvX3VuaXR0ZXN0cycsCisgICdtb2R1bGVzX3Rlc3Rz
JywKKyAgJ21vZHVsZXNfdW5pdHRlc3RzJywKKyAgJ3J0Y19tZWRpYV91bml0dGVzdHMnLAorICAn
cnRjX3BjX3VuaXR0ZXN0cycsCisgICdydGNfc3RhdHNfdW5pdHRlc3RzJywKKyAgJ3J0Y191bml0
dGVzdHMnLAorICAnc2xvd190ZXN0cycsCisgICdzeXN0ZW1fd3JhcHBlcnNfdW5pdHRlc3RzJywK
KyAgJ3Rlc3Rfc3VwcG9ydF91bml0dGVzdHMnLAorICAndG9vbHNfdW5pdHRlc3RzJywKKyAgJ3Zp
ZGVvX2NhcHR1cmVfdGVzdHMnLAorICAndmlkZW9fZW5naW5lX3Rlc3RzJywKKyAgJ3dlYnJ0Y19u
b25wYXJhbGxlbF90ZXN0cycsCitdCisKK1hDX1RFU1RTID0gWworICAnYXBwcnRjbW9iaWxlX3Rl
c3RzJywKKyAgJ3Nka19mcmFtZXdvcmtfdW5pdHRlc3RzJywKKyAgJ3Nka191bml0dGVzdHMnLAor
XQorCisKK2RlZiBGb3JtYXRJb3NzaW1UZXN0KHRlc3RfbmFtZSwgaXNfeGN0ZXN0PUZhbHNlKToK
KyAgYXJncyA9IFsnJXMvJXMuYXBwJyAlIChESVJFQ1RPUlksIHRlc3RfbmFtZSldCisgIGlmIGlz
X3hjdGVzdDoKKyAgICBhcmdzICs9IFsnJXMvJXNfbW9kdWxlLnhjdGVzdCcgJSAoRElSRUNUT1JZ
LCB0ZXN0X25hbWUpXQorCisgIHJldHVybiAnLWMgXCclcy9pb3NzaW0gJXNcJycgJSAoRElSRUNU
T1JZLCAnICcuam9pbihhcmdzKSkKKworCitkZWYgR2V0R05BcmdzKGlzX3NpbXVsYXRvcik6Cisg
IHRhcmdldF9jcHUgPSAneDY0JyBpZiBpc19zaW11bGF0b3IgZWxzZSAnYXJtNjQnCisgIHJldHVy
biAoW10gKworICAgICAgICAgIFsndGFyZ2V0X29zPSJpb3MiJ10gKworICAgICAgICAgIFsndGFy
Z2V0X2NwdT0iJXMiJyAlIHRhcmdldF9jcHVdICsKKyAgICAgICAgICBbJ3VzZV9jbGFuZ19jb3Zl
cmFnZT10cnVlJ10gKworICAgICAgICAgIFsnaXNfY29tcG9uZW50X2J1aWxkPWZhbHNlJ10gKwor
ICAgICAgICAgIFsnZGNoZWNrX2Fsd2F5c19vbj10cnVlJ10pCisKKworZGVmIEdlbmVyYXRlSU9T
U2ltdWxhdG9yQ29tbWFuZCgpOgorICBnbl9hcmdzX3N0cmluZyA9ICcgJy5qb2luKEdldEdOQXJn
cyhpc19zaW11bGF0b3I9VHJ1ZSkpCisgIGduX2NtZCA9IFsnZ24nLCAnZ2VuJywgRElSRUNUT1JZ
LCAnLS1hcmdzPVwnJXNcJycgJSBnbl9hcmdzX3N0cmluZ10KKworICBjb3ZlcmFnZV9jbWQgPSAo
CisgICAgICBbc3lzLmV4ZWN1dGFibGUsICd0b29scy9jb2RlX2NvdmVyYWdlL2NvdmVyYWdlLnB5
J10gKworICAgICAgWyIlcy5hcHAiICUgdCBmb3IgdCBpbiBYQ19URVNUUyArIFRFU1RTXSArCisg
ICAgICBbJy1iICVzJyAlIERJUkVDVE9SWSwgJy1vIG91dC9yZXBvcnQnXSArCisgICAgICBbJy1p
PVwnLiovb3V0Ly4qfC4qL3RoaXJkX3BhcnR5Ly4qfC4qdGVzdC4qXCcnXSArCisgICAgICBbRm9y
bWF0SW9zc2ltVGVzdCh0LCBpc194Y3Rlc3Q9VHJ1ZSkgZm9yIHQgaW4gWENfVEVTVFNdICsKKyAg
ICAgIFtGb3JtYXRJb3NzaW1UZXN0KHQsIGlzX3hjdGVzdD1GYWxzZSkgZm9yIHQgaW4gVEVTVFNd
CisgICkKKworICBwcmludCAnVG8gZ2V0IGNvZGUgY292ZXJhZ2UgdXNpbmcgaU9TIHNpbXVsYXRv
ciBqdXN0IHJ1biBmb2xsb3dpbmcgY29tbWFuZHM6JworICBwcmludCAnJworICBwcmludCAnICcu
am9pbihnbl9jbWQpCisgIHByaW50ICcnCisgIHByaW50ICcgJy5qb2luKGNvdmVyYWdlX2NtZCkK
KyAgcmV0dXJuIDAKKworCitkZWYgR2VuZXJhdGVJT1NEZXZpY2VDb21tYW5kKCk6CisgIGduX2Fy
Z3Nfc3RyaW5nID0gJyAnLmpvaW4oR2V0R05BcmdzKGlzX3NpbXVsYXRvcj1GYWxzZSkpCisKKyAg
Y292ZXJhZ2VfcmVwb3J0X2NtZCA9ICgKKyAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJ3Rvb2xzL2Nv
ZGVfY292ZXJhZ2UvY292ZXJhZ2UucHknXSArCisgICAgICBbJyVzLmFwcCcgJSB0IGZvciB0IGlu
IFRFU1RTXSArCisgICAgICBbJy1iICVzJyAlIERJUkVDVE9SWV0gKworICAgICAgWyctbyBvdXQv
cmVwb3J0J10gKworICAgICAgWyctcCAlcy9tZXJnZWQucHJvZmRhdGEnICUgRElSRUNUT1JZXSAr
CisgICAgICBbJy1pPVwnLiovb3V0Ly4qfC4qL3RoaXJkX3BhcnR5Ly4qfC4qdGVzdC4qXCcnXQor
ICApCisKKyAgcHJpbnQgJ0NvbXB1dGluZyBjb2RlIGNvdmVyYWdlIGZvciByZWFsIGlPUyBkZXZp
Y2UgaXMgYSBsaXR0bGUgYml0IHRlZGlvdXMuJworICBwcmludCAnJworICBwcmludCAnWW91IHdp
bGwgbmVlZDonCisgIHByaW50ICcnCisgIHByaW50ICcxLiBHZW5lcmF0ZSB4Y29kZSBwcm9qZWN0
IGFuZCBvcGVuIGl0IHdpdGggWGNvZGUgMTArOicKKyAgcHJpbnQgJyAgZ24gZ2VuICVzIC0taWRl
PXhjb2RlIC0tYXJncz1cJyVzXCcnICUgKERJUkVDVE9SWSwgZ25fYXJnc19zdHJpbmcpCisgIHBy
aW50ICcgIG9wZW4gJXMvYWxsLnhjd29ya3NwYWNlJyAlIERJUkVDVE9SWQorICBwcmludCAnJwor
ICBwcmludCAnMi4gRXhlY3V0ZSB0aGVzZSBSdW4gdGFyZ2V0cyBtYW51YWxseSB3aXRoIFhjb2Rl
IFJ1biBidXR0b24gYW5kICcKKyAgcHJpbnQgJ21hbnVhbGx5IHNhdmUgZ2VuZXJhdGVkIGNvdmVy
YWdlLnByb2ZyYXcgZmlsZSB0byAlczonICUgRElSRUNUT1JZCisgIHByaW50ICdcbicuam9pbign
LSAlcycgJSB0IGZvciB0IGluIFRFU1RTKQorICBwcmludCAnJworICBwcmludCAnMy4gRXhlY3V0
ZSB0aGVzZSBUZXN0IHRhcmdldHMgbWFudWFsbHkgd2l0aCBYY29kZSBUZXN0IGJ1dHRvbiBhbmQg
JworICBwcmludCAnbWFudWFsbHkgc2F2ZSBnZW5lcmF0ZWQgY292ZXJhZ2UucHJvZnJhdyBmaWxl
IHRvICVzOicgJSBESVJFQ1RPUlkKKyAgcHJpbnQgJ1xuJy5qb2luKCctICVzJyAlIHQgZm9yIHQg
aW4gWENfVEVTVFMpCisgIHByaW50ICcnCisgIHByaW50ICc0LiBNZXJnZSAqLnByb2ZyYXcgZmls
ZXMgdG8gKi5wcm9mZGF0YSB1c2luZyBsbHZtLXByb2ZkYXRhIHRvb2w6JworICBwcmludCAoJyAg
YnVpbGQvbWFjX2ZpbGVzL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvVG9vbGNoYWlucy8n
ICsKKyAgICAgICAgICdYY29kZURlZmF1bHQueGN0b29sY2hhaW4vdXNyL2Jpbi9sbHZtLXByb2Zk
YXRhIG1lcmdlICcgKworICAgICAgICAgJy1vICVzL21lcmdlZC5wcm9mZGF0YSAnICUgRElSRUNU
T1JZICsKKyAgICAgICAgICctc3BhcnNlPXRydWUgJXMvKi5wcm9mcmF3JyAlIERJUkVDVE9SWSkK
KyAgcHJpbnQgJycKKyAgcHJpbnQgJzUuIEdlbmVyYXRlIGNvdmVyYWdlIHJlcG9ydDonCisgIHBy
aW50ICcgICcgKyAnICcuam9pbihjb3ZlcmFnZV9yZXBvcnRfY21kKQorICByZXR1cm4gMAorCisK
K2RlZiBNYWluKCk6CisgIGlmIGxlbihzeXMuYXJndikgPCAyOgorICAgIHByaW50ICdQbGVhc2Ug
c3BlY2lmeSB0eXBlIG9mIGNvdmVyYWdlOicKKyAgICBwcmludCAnICAlcyBzaW11bGF0b3InICUg
c3lzLmFyZ3ZbMF0KKyAgICBwcmludCAnICAlcyBkZXZpY2UnICUgc3lzLmFyZ3ZbMF0KKyAgZWxp
ZiBzeXMuYXJndlsxXSA9PSAnc2ltdWxhdG9yJzoKKyAgICBHZW5lcmF0ZUlPU1NpbXVsYXRvckNv
bW1hbmQoKQorICBlbGlmIHN5cy5hcmd2WzFdID09ICdkZXZpY2UnOgorICAgIEdlbmVyYXRlSU9T
RGV2aWNlQ29tbWFuZCgpCisgIGVsc2U6CisgICAgcHJpbnQgJ1Vuc3VwcG9ydGVkIHR5cGUgb2Yg
Y292ZXJhZ2UnCisKKyAgcmV0dXJuIDAKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
c3lzLmV4aXQoTWFpbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2duX2NoZWNrX2F1dG9maXgucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvZ25fY2hlY2tf
YXV0b2ZpeC5weQppbmRleCBiOTM5NjM2ZDBjODMxZTkyODc3MjM4OWFiNWYxOTE1NWVkZGVmYTZm
Li5lNDRmNzEyMmRmZmY5ZWYwMzdjYmM5ZDQ2MDYyY2NjOTQ2MmE3NTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvZ25f
Y2hlY2tfYXV0b2ZpeC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90b29sc193ZWJydGMvZ25fY2hlY2tfYXV0b2ZpeC5weQpAQCAtMzEsNiArMzEsOSBA
QCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogCiBTQ1JJUFRfRElSID0gb3Mu
cGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCiAKK0NIUk9NSVVNX0RJUlMg
PSBbJ2Jhc2UnLCAnYnVpbGQnLCAnYnVpbGR0b29scycsCisgICAgICAgICAgICAgICAgICd0ZXN0
aW5nJywgJ3RoaXJkX3BhcnR5JywgJ3Rvb2xzJ10KKwogVEFSR0VUX1JFID0gcmUuY29tcGlsZSgK
ICAgICByJyg/UDxpbmRlbnRhdGlvbl9sZXZlbD5ccyopXHcqXCgiKD9QPHRhcmdldF9uYW1lPlx3
KikiXCkgeyQnKQogCkBAIC04OCwyMiArOTEsNDggQEAgZGVmIEZpeEVycm9ycyhmaWxlbmFtZSwg
bWlzc2luZ19kZXBzLCBkZWxldGVkX3NvdXJjZXMpOgogCiAgIFJ1bihbJ2duJywgJ2Zvcm1hdCcs
IGZpbGVuYW1lXSkKIAorZGVmIEZpcnN0Tm9uRW1wdHkoaXRlcmFibGUpOgorICAiIiJSZXR1cm4g
Zmlyc3QgaXRlbSB3aGljaCBldmFsdWF0ZXMgdG8gVHJ1ZSwgb3IgZmFsbGJhY2sgdG8gTm9uZS4i
IiIKKyAgcmV0dXJuIG5leHQoKHggZm9yIHggaW4gaXRlcmFibGUgaWYgeCksIE5vbmUpCisKIGRl
ZiBSZWJhc2UoYmFzZV9wYXRoLCBkZXBlbmRlbmN5X3BhdGgsIGRlcGVuZGVuY3kpOgotICBiYXNl
X3BhdGggPSBiYXNlX3BhdGguc3BsaXQob3MucGF0aC5zZXApCi0gIGRlcGVuZGVuY3lfcGF0aCA9
IGRlcGVuZGVuY3lfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKLQotICBmaXJzdF9kaWZmZXJlbmNl
ID0gTm9uZQotICBzaG9ydGVzdF9sZW5ndGggPSBtaW4obGVuKGRlcGVuZGVuY3lfcGF0aCksIGxl
bihiYXNlX3BhdGgpKQotICBmb3IgaSBpbiByYW5nZShzaG9ydGVzdF9sZW5ndGgpOgotICAgIGlm
IGRlcGVuZGVuY3lfcGF0aFtpXSAhPSBiYXNlX3BhdGhbaV06Ci0gICAgICBmaXJzdF9kaWZmZXJl
bmNlID0gaQotICAgICAgYnJlYWsKLQotICBmaXJzdF9kaWZmZXJlbmNlID0gZmlyc3RfZGlmZmVy
ZW5jZSBvciBzaG9ydGVzdF9sZW5ndGgKLSAgYmFzZV9wYXRoID0gYmFzZV9wYXRoW2ZpcnN0X2Rp
ZmZlcmVuY2U6XQotICBkZXBlbmRlbmN5X3BhdGggPSBkZXBlbmRlbmN5X3BhdGhbZmlyc3RfZGlm
ZmVyZW5jZTpdCi0gIHJldHVybiAob3MucGF0aC5zZXAuam9pbigoWycuLiddICogbGVuKGJhc2Vf
cGF0aCkpICsgZGVwZW5kZW5jeV9wYXRoKSArCi0gICAgICAgICAgJzonICsgZGVwZW5kZW5jeSkK
KyAgIiIiQWRhcHQgcGF0aHMgc28gdGhleSB3b3JrIGJvdGggaW4gc3RhbmQtYWxvbmUgV2ViUlRD
IGFuZCBDaHJvbWl1bSB0cmVlLgorCisgIFRvIGNvcGUgd2l0aCB2YXJ5aW5nIHRvcC1sZXZlbCBk
aXJlY3RvcnkgKFdlYlJUQyBWUyBDaHJvbWl1bSksIHdlIHVzZToKKyAgICAqIHJlbGF0aXZlIHBh
dGhzIGZvciBXZWJSVEMgbW9kdWxlcy4KKyAgICAqIGFic29sdXRlIHBhdGhzIGZvciBzaGFyZWQg
b25lcy4KKyAgRS5nLiAnLy9jb21tb25fYXVkaW8vLi4uJyAtPiAnLi4vLi4vY29tbW9uX2F1ZGlv
LycKKyAgICAgICAnLy90aGlyZF9wYXJ0eS8uLi4nIHJlbWFpbnMgYXMgaXMuCisKKyAgQXJnczoK
KyAgICBiYXNlX3BhdGg6IGN1cnJlbnQgbW9kdWxlIHBhdGggIChFLmcuICcvL3ZpZGVvJykKKyAg
ICBkZXBlbmRlbmN5X3BhdGg6IHBhdGggZnJvbSByb290IChFLmcuICcvL3J0Y19iYXNlL3RpbWUn
KQorICAgIGRlcGVuZGVuY3k6IHRhcmdldCBpdHNlbGYgICAgICAgKEUuZy4gJ3RpbWVzdGFtcF9l
eHRyYXBvbGF0b3InKQorCisgIFJldHVybnM6CisgICAgRnVsbCB0YXJnZXQgcGF0aCAoRS5nLiAn
Li4vcnRjX2Jhc2UvdGltZTp0aW1lc3RhbXBfZXh0cmFwb2xhdG9yJykuCisgICIiIgorCisgIHJv
b3QgPSBGaXJzdE5vbkVtcHR5KGRlcGVuZGVuY3lfcGF0aC5zcGxpdCgnLycpKQorICBpZiByb290
IGluIENIUk9NSVVNX0RJUlM6CisgICAgIyBDaHJvbWl1bSBwYXRocyBtdXN0IHJlbWFpbiBhYnNv
bHV0ZS4gRS5nLiAvL3RoaXJkX3BhcnR5Ly9hYnNlaWwtY3BwLi4uCisgICAgcmViYXNlZCA9IGRl
cGVuZGVuY3lfcGF0aAorICBlbHNlOgorICAgIGJhc2VfcGF0aCA9IGJhc2VfcGF0aC5zcGxpdChv
cy5wYXRoLnNlcCkKKyAgICBkZXBlbmRlbmN5X3BhdGggPSBkZXBlbmRlbmN5X3BhdGguc3BsaXQo
b3MucGF0aC5zZXApCisKKyAgICBmaXJzdF9kaWZmZXJlbmNlID0gTm9uZQorICAgIHNob3J0ZXN0
X2xlbmd0aCA9IG1pbihsZW4oZGVwZW5kZW5jeV9wYXRoKSwgbGVuKGJhc2VfcGF0aCkpCisgICAg
Zm9yIGkgaW4gcmFuZ2Uoc2hvcnRlc3RfbGVuZ3RoKToKKyAgICAgIGlmIGRlcGVuZGVuY3lfcGF0
aFtpXSAhPSBiYXNlX3BhdGhbaV06CisgICAgICAgIGZpcnN0X2RpZmZlcmVuY2UgPSBpCisgICAg
ICAgIGJyZWFrCisKKyAgICBmaXJzdF9kaWZmZXJlbmNlID0gZmlyc3RfZGlmZmVyZW5jZSBvciBz
aG9ydGVzdF9sZW5ndGgKKyAgICBiYXNlX3BhdGggPSBiYXNlX3BhdGhbZmlyc3RfZGlmZmVyZW5j
ZTpdCisgICAgZGVwZW5kZW5jeV9wYXRoID0gZGVwZW5kZW5jeV9wYXRoW2ZpcnN0X2RpZmZlcmVu
Y2U6XQorICAgIHJlYmFzZWQgPSBvcy5wYXRoLnNlcC5qb2luKChbJy4uJ10gKiBsZW4oYmFzZV9w
YXRoKSkgKyBkZXBlbmRlbmN5X3BhdGgpCisgIHJldHVybiByZWJhc2VkICsgJzonICsgZGVwZW5k
ZW5jeQogCiBkZWYgbWFpbigpOgogICBkZWxldGVkX3NvdXJjZXMgPSBzZXQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRj
L2lvcy9jbGllbnQud2VicnRjL2lPUzMyX0RlYnVnLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9T
MzJfRGVidWcuanNvbgppbmRleCBkMjk2NmVjM2FkNGQ2N2VjZTBlODdlZGYyYmM1YmQ1YjZhYTUy
ZmFkLi5iMTQ4MDlmZjNkNGVmZmMzZGM3NzNiZTliYWU0MzNjNDU3YTM4MTM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMv
aW9zL2NsaWVudC53ZWJydGMvaU9TMzJfRGVidWcuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMv
aU9TMzJfRGVidWcuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAg
ICJCdWlsZGVyIGZvciAzMi1iaXQgZGV2aWNlcy4iCisgICAgIkJ1aWxkZXIgZm9yIDMyLWJpdCBk
ZXZpY2VzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBpbiBjci1idWlsZGJ1Y2tl
dC5jZmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwKICAgInhjb2RlIGJ1aWxk
IHZlcnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGll
bnQud2VicnRjL2lPUzMyX1JlbGVhc2UuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9SZWxl
YXNlLmpzb24KaW5kZXggZTcyYTIyOTE3ODdjNzBmOWUzMDFiNzhhNjZkZjU2YTE0Y2YzZTRhNS4u
OTcyNjMyNTZkZTk5MTljOWIxZjdlOTMyYmJmNGRkNGNkZWY4ZjEyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9j
bGllbnQud2VicnRjL2lPUzMyX1JlbGVhc2UuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9T
MzJfUmVsZWFzZS5qc29uCkBAIC0xLDYgKzEsNyBAQAogewogICAiY29tbWVudHMiOiBbCi0gICAg
IkJ1aWxkZXIgZm9yIDMyLWJpdCBkZXZpY2VzLiIKKyAgICAiQnVpbGRlciBmb3IgMzItYml0IGRl
dmljZXMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0
LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQg
dmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVu
dC53ZWJydGMvaU9TMzJfU2ltX0RlYnVnXyhpT1NfOS4wKS5qc29uIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRj
L2lPUzMyX1NpbV9EZWJ1Z18oaU9TXzkuMCkuanNvbgppbmRleCA3YTU2ZDQ2MTgwNzUwNjhjZWI3
NGIxMTQ0MThjMjRmYTY2YjdjYjZhLi4wM2IyNzJiYjUzNDdiM2NkZDI4OTA0NjllMzEzOGFkNGZh
YzkxNTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TMzJfU2ltX0RlYnVnXyhpT1Nf
OS4wKS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9TaW1fRGVidWdfKGlPU185LjAp
Lmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVzdHMgZm9y
IDMyLWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3RzIGZvciAzMi1iaXQgaU9TIHNpbXVs
YXRvcnMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0
LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQg
dmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVu
dC53ZWJydGMvaU9TNjRfRGVidWcuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9EZWJ1Zy5q
c29uCmluZGV4IDY1MzJjOTBmNTA5N2JhYjhlNmUzYzBjZDY2ZDZkNWY2Y2M3ZjVjZjIuLmYxZmI3
ZmE3MTkwMWE4MGQzMzM4OTM5ODMwNjEwNTAxOTI4YjgxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50
LndlYnJ0Yy9pT1M2NF9EZWJ1Zy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9EZWJ1
Zy5qc29uCkBAIC0xLDYgKzEsNyBAQAogewogICAiY29tbWVudHMiOiBbCi0gICAgIkJ1aWxkZXIg
Zm9yIDY0LWJpdCBkZXZpY2VzLiIKKyAgICAiQnVpbGRlciBmb3IgNjQtYml0IGRldmljZXMuIiwK
KyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVu
IGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6
ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMv
aU9TNjRfUmVsZWFzZS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1JlbGVhc2UuanNvbgpp
bmRleCA4Y2E0NjRjM2M0MzAwNTU1ZmM4YTY4OTY1OGFhOTI5OGUyZDBkYTc0Li5jMjU1NWM2YTE3
MGQ0MjBhOWNiNDZjNGZmNjAzZGUyOTE3MmQ0NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJy
dGMvaU9TNjRfUmVsZWFzZS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9SZWxlYXNl
Lmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiQnVpbGRlciBm
b3IgNjQtYml0IGRldmljZXMuIgorICAgICJCdWlsZGVyIGZvciA2NC1iaXQgZGV2aWNlcy4iLAor
ICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNrZXQuY2ZnIHdoZW4g
Y2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWlsZCB2ZXJzaW9uIjog
IjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9p
T1M2NF9TaW1fRGVidWdfKGlPU18xMC4wKS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1Np
bV9EZWJ1Z18oaU9TXzEwLjApLmpzb24KaW5kZXggZTc1OWQ5NWUzNjg2Yjk3MmM1MjRkOThjOWEy
ZDAxZDgwNzViYjU2MS4uZDhhNzFmNjY1YTM0MmFkOTEzNTM3YWY4MGI2MzBkNDg5NzY5MTI1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9v
bHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzEwLjApLmpz
b24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzEwLjApLmpzb24K
QEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVzdHMgZm9yIDY0LWJp
dCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3RzIGZvciA2NC1iaXQgaU9TIHNpbXVsYXRvcnMu
IiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3
aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lv
biI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJy
dGMvaU9TNjRfU2ltX0RlYnVnXyhpT1NfMTEuMCkuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2
NF9TaW1fRGVidWdfKGlPU18xMS4wKS5qc29uCmluZGV4IDNkYWQ5MWJhNjRmN2UzZmFmNzhkNDE4
ODYyNGFkNDgyM2U0OGJjMjUuLmMzMDMwODhiNDQ5NzdlMTA4NTZmZDM5NGVlMDk5YTU0ZWNmYzg5
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9TaW1fRGVidWdfKGlPU18xMS4w
KS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9TaW1fRGVidWdfKGlPU18xMS4wKS5q
c29uCkBAIC0xLDYgKzEsNyBAQAogewogICAiY29tbWVudHMiOiBbCi0gICAgIlRlc3RzIGZvciA2
NC1iaXQgaU9TIHNpbXVsYXRvcnMuIgorICAgICJUZXN0cyBmb3IgNjQtYml0IGlPUyBzaW11bGF0
b3JzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBpbiBjci1idWlsZGJ1Y2tldC5j
Zmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwKICAgInhjb2RlIGJ1aWxkIHZl
cnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQu
d2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzkuMCkuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9p
T1M2NF9TaW1fRGVidWdfKGlPU185LjApLmpzb24KaW5kZXggZDI3Y2RhYTQ1ZjU0MGM1NmEwODI3
Y2RhNmFhYTZmOTM5ZGZiZWQ3OS4uYmNmNTJkNzI4MzI2ZWNiMjc4YzVkMTI0NDZlN2I5MTM1OTIw
ZGUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzku
MCkuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRfU2ltX0RlYnVnXyhpT1NfOS4wKS5q
c29uCkBAIC0xLDYgKzEsNyBAQAogewogICAiY29tbWVudHMiOiBbCi0gICAgIlRlc3RzIGZvciA2
NC1iaXQgaU9TIHNpbXVsYXRvcnMuIgorICAgICJUZXN0cyBmb3IgNjQtYml0IGlPUyBzaW11bGF0
b3JzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBpbiBjci1idWlsZGJ1Y2tldC5j
Zmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwKICAgInhjb2RlIGJ1aWxkIHZl
cnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9nZW5lcmF0
ZV9tb2R1bGVtYXAucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvaW9zL2dlbmVyYXRlX21vZHVsZW1hcC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWJk
M2Q4NzVlN2NkMGEwNjJjNzVmYzBhMmZmMTNmYzdkMWZlNjZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lv
cy9nZW5lcmF0ZV9tb2R1bGVtYXAucHkKQEAgLTAsMCArMSwzMiBAQAorIyBDb3B5cmlnaHQgKGMp
IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisj
CisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisjIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyMgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorIyBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKworaW1wb3J0IGFyZ3Bh
cnNlCitpbXBvcnQgc3lzCisKK2RlZiBHZW5lcmF0ZU1vZHVsZW1hcCgpOgorICBwYXJzZXIgPSBh
cmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nR2VuZXJhdGUgbW9kdWxlbWFwJykK
KyAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLW8iLCAiLS1vdXQiLCB0eXBlPXN0ciwgaGVscD0iT3V0
cHV0IGZpbGUuIikKKyAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLW4iLCAiLS1uYW1lIiwgdHlwZT1z
dHIsIGhlbHA9Ik5hbWUgb2YgYmluYXJ5LiIpCisKKyAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdz
KCkKKworICB3aXRoIG9wZW4oYXJncy5vdXQsICJ3IikgYXMgb3V0ZmlsZToKKyAgICBtb2R1bGVf
dGVtcGxhdGUgPSAnZnJhbWV3b3JrIG1vZHVsZSAlcyB7XG4nIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAnICB1bWJyZWxsYSBoZWFkZXIgIiVzLmgiXG4nIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAnXG4nIFwKKyAgICAgICAgICAgICAgICAgICAgICAnICBleHBvcnQgKlxuJyBcCisgICAgICAg
ICAgICAgICAgICAgICAgJyAgbW9kdWxlICogeyBleHBvcnQgKiB9XG4nIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAnfVxuJyAlIChhcmdzLm5hbWUsIGFyZ3MubmFtZSkKKyAgICBvdXRmaWxlLndy
aXRlKG1vZHVsZV90ZW1wbGF0ZSkKKyAgcmV0dXJuIDAKKworCitpZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgorICBzeXMuZXhpdChHZW5lcmF0ZU1vZHVsZW1hcCgpKQorCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9z
L2ludGVybmFsLmNsaWVudC53ZWJydGMvaU9TNjRfRGVidWcuanNvbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwuY2xp
ZW50LndlYnJ0Yy9pT1M2NF9EZWJ1Zy5qc29uCmluZGV4IDdjM2IzY2VlMWRhMTI4YWRjNmIzYmNh
MDg1M2ExODRlNWU0ZTNiMzMuLmE5N2Q4YjcwNmY4MjE1MGZkMjM2ZTExODU1YWI0YmQzN2E3N2Fk
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9EZWJ1Zy5qc29u
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9EZWJ1Zy5qc29uCkBAIC0yMSw2
ICsyMSw3IEBACiAgICJ0ZXN0cyI6IFsKICAgICB7CiAgICAgICAiaW5jbHVkZSI6ICJyZWFsX2Rl
dmljZV90ZXN0cy5qc29uIiwKKyAgICAgICJkZXZpY2UgdHlwZSI6ICJpUGhvbmUgNnMiLAogICAg
ICAgIm9zIjogIjExLjQuMSIsCiAgICAgICAiZGltZW5zaW9ucyI6IFsKICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X1BlcmYuanNvbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50
ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9QZXJmLmpzb24KaW5kZXggYjUzNTc2NjFhODQyN2Iy
MWNmM2ViMzcyMjZjNzI2NzQ5OGY4ZDlhYi4uODhiZmU3NTI2NGFkNTZiMjU1MmFmZDAxYjM0YmZh
YjlhOWE0YjllZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X1Bl
cmYuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
b29sc193ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53ZWJydGMvaU9TNjRfUGVyZi5qc29uCkBA
IC0yMSwxMyArMjEsOCBAQAogICAidGVzdHMiOiBbCiAgICAgewogICAgICAgImluY2x1ZGUiOiAi
cGVyZl90ZXN0cy5qc29uIiwKKyAgICAgICJkZXZpY2UgdHlwZSI6ICJpUGhvbmUgNyIsCiAgICAg
ICAib3MiOiAiMTEuNC4xIiwKLSAgICAgICJkaW1lbnNpb25zIjogWwotICAgICAgICB7Ci0gICAg
ICAgICAgIm9zIjogIk1hYyIsCi0gICAgICAgICAgInBvb2wiOiAiQ2hyb21lIgotICAgICAgICB9
Ci0gICAgICBdCiAgICAgfQogICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53
ZWJydGMvaU9TNjRfUmVsZWFzZS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0
X1JlbGVhc2UuanNvbgppbmRleCBhYzg0ZGIxMGJmNWM2MjI4ZjM3YzBmOTkyY2Q4MDgyNmY3Nzdj
NTQ0Li5kNzVjZGUwN2ZmNjgxYmE2OWQwMjkxZTRjYjA5NjgyNjJjMGI2OTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMv
aW9zL2ludGVybmFsLmNsaWVudC53ZWJydGMvaU9TNjRfUmVsZWFzZS5qc29uCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50
ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9SZWxlYXNlLmpzb24KQEAgLTIyLDYgKzIyLDcgQEAK
ICAgInRlc3RzIjogWwogICAgIHsKICAgICAgICJpbmNsdWRlIjogInJlYWxfZGV2aWNlX3Rlc3Rz
Lmpzb24iLAorICAgICAgImRldmljZSB0eXBlIjogImlQaG9uZSA2cyIsCiAgICAgICAib3MiOiAi
MTEuNC4xIiwKICAgICAgICJkaW1lbnNpb25zIjogWwogICAgICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9z
L2ludGVybmFsLnRyeXNlcnZlci53ZWJydGMvaW9zX2FybTY0X3BlcmYuanNvbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJu
YWwudHJ5c2VydmVyLndlYnJ0Yy9pb3NfYXJtNjRfcGVyZi5qc29uCmluZGV4IDAyMzBjNzRhOTJh
ZDA3ZDE1OGVmMDQ4NDIzYTc2OTUzNzhlNmQyMzcuLjBjMzA1ODFkYTFkZjAxMDc2ZDg4YmY4Mzhi
NTA3YzQ1ZGIzZTJjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwudHJ5c2VydmVyLndlYnJ0Yy9p
b3NfYXJtNjRfcGVyZi5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwudHJ5c2VydmVyLndlYnJ0Yy9pb3Nf
YXJtNjRfcGVyZi5qc29uCkBAIC0yMywxMiArMjMsNiBAQAogICAgICAgImluY2x1ZGUiOiAicGVy
Zl90cnlib3RfdGVzdHMuanNvbiIsCiAgICAgICAiZGV2aWNlIHR5cGUiOiAiaVBob25lIDciLAog
ICAgICAgIm9zIjogIjExLjAuMyIsCi0gICAgICAiZGltZW5zaW9ucyI6IFsKLSAgICAgICAgewot
ICAgICAgICAgICJvcyI6ICJNYWMiLAotICAgICAgICAgICJwb29sIjogIkNocm9tZSIKLSAgICAg
ICAgfQotICAgICAgXQogICAgIH0KICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90ZXN0cy9jb21tb25f
dGVzdHMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9pb3MvdGVzdHMvY29tbW9uX3Rlc3RzLmpzb24KaW5kZXggNWVlYjQwODM4N2Zl
YzQ3MzcxMmQ0YzY3OWVhYmE4M2IxZTUyZjA2Yy4uNzQ1OTUwM2Q3ZjA2ODMyNTM5YmFmNDczZjQw
YzhmYWM0MzkyMmQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90ZXN0cy9jb21tb25fdGVzdHMuanNvbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMv
aW9zL3Rlc3RzL2NvbW1vbl90ZXN0cy5qc29uCkBAIC0yNyw5ICsyNyw2IEBACiAgICAgewogICAg
ICAgImFwcCI6ICJtb2R1bGVzX3VuaXR0ZXN0cyIKICAgICB9LAotICAgIHsKLSAgICAgICJhcHAi
OiAib3J0Y191bml0dGVzdHMiCi0gICAgfSwKICAgICB7CiAgICAgICAiYXBwIjogInJ0Y19tZWRp
YV91bml0dGVzdHMiCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdGVzdHMvcmVhbF9kZXZpY2VfdGVz
dHMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xz
X3dlYnJ0Yy9pb3MvdGVzdHMvcmVhbF9kZXZpY2VfdGVzdHMuanNvbgppbmRleCA4NDE3NDcwZGRi
ODgyZTI5ODUyYzkwNDhhZTBjNzliMWJiZWQ5ZTNiLi5kY2VlNTE2ODhkNmNmOWZkNTVmYWEwYWU0
NzFlZjJiZDRmNTE0MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Rlc3RzL3JlYWxfZGV2aWNlX3Rlc3RzLmpz
b24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL2lvcy90ZXN0cy9yZWFsX2RldmljZV90ZXN0cy5qc29uCkBAIC0xMiw5ICsxMiw2IEBA
CiAgICAgewogICAgICAgImFwcCI6ICJtb2R1bGVzX3VuaXR0ZXN0cyIKICAgICB9LAotICAgIHsK
LSAgICAgICJhcHAiOiAib3J0Y191bml0dGVzdHMiCi0gICAgfSwKICAgICB7CiAgICAgICAiYXBw
IjogInJ0Y19wY191bml0dGVzdHMiCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndl
YnJ0Yy9pb3MzMl9zaW1faW9zOV9kYmcuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3MzMl9z
aW1faW9zOV9kYmcuanNvbgppbmRleCAyOWExMTNkNDEzODhjN2ZlYjZlYjllYjM1OGMzNDA3NWZj
MDI1ZmYxLi4xZWFjYzkyOTVmYjFhNzJiZmNjZTM2ZWFlMjczOTI5ZGNjODI1ZGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zMzJfc2ltX2lvczlfZGJnLmpzb24KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90
cnlzZXJ2ZXIud2VicnRjL2lvczMyX3NpbV9pb3M5X2RiZy5qc29uCkBAIC0xLDYgKzEsNyBAQAog
ewogICAiY29tbWVudHMiOiBbCi0gICAgIlRlc3RzIGZvciAzMi1iaXQgaU9TIHNpbXVsYXRvcnMu
IgorICAgICJUZXN0cyBmb3IgMzItYml0IGlPUyBzaW11bGF0b3JzLiIsCisgICAgIk5PVEU6IFVw
ZGF0ZSBjYWNoZSBlbnRyeSBpbiBjci1idWlsZGJ1Y2tldC5jZmcgd2hlbiBjaGFuZ2luZyB4Y29k
ZSB2ZXJzaW9uLiIKICAgXSwKICAgInhjb2RlIGJ1aWxkIHZlcnNpb24iOiAiMTBsMjMybSIsCiAg
ICJnbl9hcmdzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczY0X3NpbV9p
b3MxMF9kYmcuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3M2NF9zaW1faW9zMTBfZGJnLmpz
b24KaW5kZXggNjQ4NGNhMTA1MGRlMGVhYTRmMTlkODEwMDViZjA1ZDBiNjdmNmEwYS4uOGNlY2Y0
YTQxZWY1OTllNTVhOGVhNjNjYjY2Y2ZkNzIxNjVmNzkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2
ZXIud2VicnRjL2lvczY0X3NpbV9pb3MxMF9kYmcuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJy
dGMvaW9zNjRfc2ltX2lvczEwX2RiZy5qc29uCkBAIC0xLDYgKzEsNyBAQAogewogICAiY29tbWVu
dHMiOiBbCi0gICAgIlRlc3RzIGZvciA2NC1iaXQgaU9TIHNpbXVsYXRvcnMuIgorICAgICJUZXN0
cyBmb3IgNjQtYml0IGlPUyBzaW11bGF0b3JzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBl
bnRyeSBpbiBjci1idWlsZGJ1Y2tldC5jZmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIK
ICAgXSwKICAgInhjb2RlIGJ1aWxkIHZlcnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjog
WwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczY0X3NpbV9pb3MxMV9kYmcuanNv
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0
Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3M2NF9zaW1faW9zMTFfZGJnLmpzb24KaW5kZXggYjU0
ZjIxMmFjYmQ2OGFkYzFlZDQyNmViNDFlOWY2YWM0OTBmOWY5Ny4uM2E1ZjdjMGNmNmIwZjdkZDA0
MTMyZDViNGZmZGI5NDIyOWU2NjI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lv
czY0X3NpbV9pb3MxMV9kYmcuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2lt
X2lvczExX2RiZy5qc29uCkBAIC0xLDYgKzEsNyBAQAogewogICAiY29tbWVudHMiOiBbCi0gICAg
IlRlc3RzIGZvciA2NC1iaXQgaU9TIHNpbXVsYXRvcnMuIgorICAgICJUZXN0cyBmb3IgNjQtYml0
IGlPUyBzaW11bGF0b3JzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBpbiBjci1i
dWlsZGJ1Y2tldC5jZmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwKICAgInhj
b2RlIGJ1aWxkIHZlcnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRj
L2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczY0X3NpbV9pb3M5X2RiZy5qc29uIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2
ZXIud2VicnRjL2lvczY0X3NpbV9pb3M5X2RiZy5qc29uCmluZGV4IGZkZmE3YjM4MmQ1YWUyYTA5
ZjI5ZjI5ZTUzMWUwM2ZmMTE5NGMzMWYuLjZjOTg0OGVlNmRkOTY4NzE1NjcyODEwY2FiMGQ1YzFl
YzViNzM4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3M2NF9zaW1faW9zOV9k
YmcuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lvczlfZGJnLmpzb24K
QEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVzdHMgZm9yIDY0LWJp
dCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3RzIGZvciA2NC1iaXQgaU9TIHNpbXVsYXRvcnMu
IiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3
aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lv
biI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53
ZWJydGMvaW9zX2FybTY0X2RiZy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9k
YmcuanNvbgppbmRleCA3NTk0Y2QyYTM2ZDY2ZTZjOGRjZWI2MDk5MjI3Y2E0NWZiZTgwZDAyLi40
M2FkZDY3MTBlNmM1NzI5YTMyMmRjOTJiYmIxODU1OTc3MDdmNjU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Ry
eXNlcnZlci53ZWJydGMvaW9zX2FybTY0X2RiZy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0
Yy9pb3NfYXJtNjRfZGJnLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsK
LSAgICAiQnVpbGRlciBmb3IgNjQtYml0IGRldmljZXMuIgorICAgICJCdWlsZGVyIGZvciA2NC1i
aXQgZGV2aWNlcy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRi
dWNrZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBi
dWlsZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3Mv
dHJ5c2VydmVyLndlYnJ0Yy9pb3NfYXJtNjRfcmVsLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMv
aW9zX2FybTY0X3JlbC5qc29uCmluZGV4IDA4YWU3ZTE5ODMzMjEyNGIzMWU0NTM2NDY3ZTdmODI2
NzM5Y2YwODAuLjk1YTU3ZTUyMjYyZTUyYWU2ZmVlZTk1YTM1Y2ZiYWQ3NmRlNWU0NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3NfYXJtNjRfcmVsLmpzb24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlz
ZXJ2ZXIud2VicnRjL2lvc19hcm02NF9yZWwuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNv
bW1lbnRzIjogWwotICAgICJCdWlsZGVyIGZvciA2NC1iaXQgZGV2aWNlcy4iCisgICAgIkJ1aWxk
ZXIgZm9yIDY0LWJpdCBkZXZpY2VzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBp
biBjci1idWlsZGJ1Y2tldC5jZmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwK
ICAgInhjb2RlIGJ1aWxkIHZlcnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19kYmcuanNvbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndl
YnJ0Yy9pb3NfZGJnLmpzb24KaW5kZXggZTlkMDZjMmE3NjE0MDA0ODgwOWViYjIzNWE0NjdmMDJk
NzAyNGY3OC4uOGJlOWU5NWMwZjBiNWFhMWNkMzJiOGM5NmU2NmFhZDUyNTJjY2Q4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2Vi
cnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19kYmcuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53
ZWJydGMvaW9zX2RiZy5qc29uCkBAIC0xLDYgKzEsNyBAQAogewogICAiY29tbWVudHMiOiBbCi0g
ICAgIkJ1aWxkZXIgZm9yIDMyLWJpdCBkZXZpY2VzLiIKKyAgICAiQnVpbGRlciBmb3IgMzItYml0
IGRldmljZXMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVj
a2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVp
bGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Ry
eXNlcnZlci53ZWJydGMvaW9zX3JlbC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19yZWwu
anNvbgppbmRleCA0NTIxZWY1MTUzNzIxNTU3NTkzNzZhNzNhYmVjYzUxZjUyMGI0MjA1Li5mNjQ0
OTQwYzdjNDAwZDhkMThmZWZjNDRhYTg0NTM1NzNhZmMwYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNl
cnZlci53ZWJydGMvaW9zX3JlbC5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3NfcmVs
Lmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiQnVpbGRlciBm
b3IgMzItYml0IGRldmljZXMuIgorICAgICJCdWlsZGVyIGZvciAzMi1iaXQgZGV2aWNlcy4iLAor
ICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNrZXQuY2ZnIHdoZW4g
Y2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWlsZCB2ZXJzaW9uIjog
IjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9saWJzL2dlbmVyYXRlX2xpY2Vu
c2VzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL2xpYnMvZ2VuZXJhdGVfbGljZW5zZXMucHkKaW5kZXggODkyZmI0NmMwNTE3OGY0ZTVi
NDk1NzZhYjRkZTRlMzc3NjJlMzY0YS4uZDFhNzZhNjRlZWMxYTM1NDY3ZjFlZGU5OGVlZjdmOTYy
NzMzOWRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdG9vbHNfd2VicnRjL2xpYnMvZ2VuZXJhdGVfbGljZW5zZXMucHkKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2xpYnMvZ2Vu
ZXJhdGVfbGljZW5zZXMucHkKQEAgLTM2LDcgKzM2LDYgQEAgTElCX1RPX0xJQ0VOU0VTX0RJQ1Qg
PSB7CiAgICAgJ2JhemVsJzogWyd0aGlyZF9wYXJ0eS9iYXplbC9MSUNFTlNFJ10sCiAgICAgJ2Jv
cmluZ3NzbCc6IFsndGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9MSUNFTlNFJ10sCiAgICAgJ2Vy
cm9ycHJvbmUnOiBbJ3RoaXJkX3BhcnR5L2Vycm9ycHJvbmUvTElDRU5TRSddLAotICAgICdleHBh
dCc6IFsndGhpcmRfcGFydHkvZXhwYXQvZmlsZXMvQ09QWUlORyddLAogICAgICdmaWF0JzogWyd0
aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL3RoaXJkX3BhcnR5L2ZpYXQvTElDRU5TRSddLAogICAg
ICdndWF2YSc6IFsndGhpcmRfcGFydHkvZ3VhdmEvTElDRU5TRSddLAogICAgICdpamFyJzogWyd0
aGlyZF9wYXJ0eS9pamFyL0xJQ0VOU0UnXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9nbl9pc29sYXRlX21hcC5w
eWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvbWIvZ25faXNvbGF0ZV9tYXAucHlsCmluZGV4IGZlY2M1NmMzOGUxZDFlYTY5NDg4OWIwMGI2
NjE1NDA3ZWNlYjBkMTMuLmQ3MmJiZGMwMDkwYWY4NDhiZjg5YzI2YzllZTNiMzJkMTdhZjU4MmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9tYi9nbl9pc29sYXRlX21hcC5weWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL2duX2lzb2xhdGVfbWFwLnB5
bApAQCAtODIsMTAgKzgyLDYgQEAKICAgICAibGFiZWwiOiAiLy9tb2R1bGVzOm1vZHVsZXNfdW5p
dHRlc3RzIiwKICAgICAidHlwZSI6ICJ3aW5kb3dlZF90ZXN0X2xhdW5jaGVyIiwKICAgfSwKLSAg
Im9ydGNfdW5pdHRlc3RzIjogewotICAgICJsYWJlbCI6ICIvL29ydGM6b3J0Y191bml0dGVzdHMi
LAotICAgICJ0eXBlIjogImNvbnNvbGVfdGVzdF9sYXVuY2hlciIsCi0gIH0sCiAgICJwZWVyY29u
bmVjdGlvbl91bml0dGVzdHMiOiB7CiAgICAgImxhYmVsIjogIi8vcGM6cGVlcmNvbm5lY3Rpb25f
dW5pdHRlc3RzIiwKICAgICAidHlwZSI6ICJjb25zb2xlX3Rlc3RfbGF1bmNoZXIiLApAQCAtMTA2
LDYgKzEwMiwxMCBAQAogICAgICJsYWJlbCI6ICIvLzpydGNfdW5pdHRlc3RzIiwKICAgICAidHlw
ZSI6ICJjb25zb2xlX3Rlc3RfbGF1bmNoZXIiLAogICB9LAorICAic2xvd190ZXN0cyI6IHsKKyAg
ICAibGFiZWwiOiAiLy86c2xvd190ZXN0cyIsCisgICAgInR5cGUiOiAiY29uc29sZV90ZXN0X2xh
dW5jaGVyIiwKKyAgfSwKICAgInN5c3RlbV93cmFwcGVyc191bml0dGVzdHMiOiB7CiAgICAgImxh
YmVsIjogIi8vc3lzdGVtX3dyYXBwZXJzOnN5c3RlbV93cmFwcGVyc191bml0dGVzdHMiLAogICAg
ICJ0eXBlIjogImNvbnNvbGVfdGVzdF9sYXVuY2hlciIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbWIvbWIucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbWIv
bWIucHkKaW5kZXggN2YxOTZiYjczMzg0NmM4Y2YwMDMxYWYxMTc4MmYyNTkzOTY5OWViOS4uNDg1
ZmNlYjg1OGM5OGFhMzlkMmU5ZmZlMjNjNjYxNGY3ZTBkZDBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL21iLnB5
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9tYi9tYi5weQpAQCAtODMzLDYgKzgzMyw3IEBAIGNsYXNzIE1ldGFCdWlsZFdyYXBwZXIo
b2JqZWN0KToKICAgICAgICcuLi8uLi90ZXN0aW5nL3Rlc3RfZW52LnB5JywKICAgICBdCiAKKyAg
ICBtdXN0X3JldHJ5ID0gRmFsc2UKICAgICBpZiB0ZXN0X3R5cGUgPT0gJ3NjcmlwdCc6CiAgICAg
ICBjbWRsaW5lID0gWycuLi8uLi8nICsgc2VsZi5Ub1NyY1JlbFBhdGgoaXNvbGF0ZV9tYXBbdGFy
Z2V0XVsnc2NyaXB0J10pXQogICAgIGVsaWYgaXNfYW5kcm9pZDoKQEAgLTg3NCwxMiArODc1LDIx
IEBAIGNsYXNzIE1ldGFCdWlsZFdyYXBwZXIob2JqZWN0KToKICAgICAgICAgICAgICMgc28gaXQg
Y2FuIGV4aXQgY2xlYW5seSBhbmQgcmVwb3J0IHJlc3VsdHMsIGluc3RlYWQgb2YgYmVpbmcKICAg
ICAgICAgICAgICMgaW50ZXJydXB0ZWQgYnkgc3dhcm1pbmcgYW5kIG5vdCByZXBvcnRpbmcgYW55
dGhpbmcuCiAgICAgICAgICAgICAnLS10aW1lb3V0PSVzJyAlIHRpbWVvdXQsCi0gICAgICAgICAg
ICAnLS1yZXRyeV9mYWlsZWQ9MycsCiAgICAgICAgIF0KICAgICAgICAgaWYgdGVzdF90eXBlID09
ICdub25fcGFyYWxsZWxfY29uc29sZV90ZXN0X2xhdW5jaGVyJzoKICAgICAgICAgICAjIFN0aWxs
IHVzZSB0aGUgZ3Rlc3QtcGFyYWxsZWwtd3JhcHBlci5weSBzY3JpcHQgc2luY2Ugd2UgbmVlZCBp
dCB0bwogICAgICAgICAgICMgcnVuIHRlc3RzIG9uIHN3YXJtaW5nLCBidXQgZG9uJ3QgZXhlY3V0
ZSB0ZXN0cyBpbiBwYXJhbGxlbC4KICAgICAgICAgICBjbWRsaW5lLmFwcGVuZCgnLS13b3JrZXJz
PTEnKQorICAgICAgICBtdXN0X3JldHJ5ID0gVHJ1ZQorCisgICAgICBhc2FuID0gJ2lzX2FzYW49
dHJ1ZScgaW4gdmFsc1snZ25fYXJncyddCisgICAgICBsc2FuID0gJ2lzX2xzYW49dHJ1ZScgaW4g
dmFsc1snZ25fYXJncyddCisgICAgICBtc2FuID0gJ2lzX21zYW49dHJ1ZScgaW4gdmFsc1snZ25f
YXJncyddCisgICAgICB0c2FuID0gJ2lzX3RzYW49dHJ1ZScgaW4gdmFsc1snZ25fYXJncyddCisg
ICAgICBzYW5pdGl6ZXIgPSBhc2FuIG9yIGxzYW4gb3IgbXNhbiBvciB0c2FuCisgICAgICBpZiBt
dXN0X3JldHJ5IGFuZCBub3Qgc2FuaXRpemVyOgorICAgICAgICAjIFJldHJ5IHdvdWxkIGhpZGUg
bW9zdCBzYW5pdGl6ZXJzIGRldGVjdGlvbnMuCisgICAgICAgIGNtZGxpbmUuYXBwZW5kKCctLXJl
dHJ5X2ZhaWxlZD0zJykKIAogICAgICAgZXhlY3V0YWJsZV9wcmVmaXggPSAnLlxcJyBpZiBzZWxm
LnBsYXRmb3JtID09ICd3aW4zMicgZWxzZSAnLi8nCiAgICAgICBleGVjdXRhYmxlX3N1ZmZpeCA9
ICcuZXhlJyBpZiBzZWxmLnBsYXRmb3JtID09ICd3aW4zMicgZWxzZSAnJwpAQCAtODg3LDExICs4
OTcsNiBAQCBjbGFzcyBNZXRhQnVpbGRXcmFwcGVyKG9iamVjdCk6CiAKICAgICAgIGNtZGxpbmUu
YXBwZW5kKGV4ZWN1dGFibGUpCiAKLSAgICAgIGFzYW4gPSAnaXNfYXNhbj10cnVlJyBpbiB2YWxz
Wydnbl9hcmdzJ10KLSAgICAgIGxzYW4gPSAnaXNfbHNhbj10cnVlJyBpbiB2YWxzWydnbl9hcmdz
J10KLSAgICAgIG1zYW4gPSAnaXNfbXNhbj10cnVlJyBpbiB2YWxzWydnbl9hcmdzJ10KLSAgICAg
IHRzYW4gPSAnaXNfdHNhbj10cnVlJyBpbiB2YWxzWydnbl9hcmdzJ10KLQogICAgICAgY21kbGlu
ZS5leHRlbmQoWwogICAgICAgICAgICctLWFzYW49JWQnICUgYXNhbiwKICAgICAgICAgICAnLS1s
c2FuPSVkJyAlIGxzYW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbWIvbWJfY29uZmlnLnB5bCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9tYl9jb25maWcu
cHlsCmluZGV4IDU2Yzg1ODM3ZmU2YTVhMTBhYjEyMTM5MTkzZmM3YzQwYzQ3ZGU4MzguLjU0OWVl
NGNiNjhlY2JlMWE4ZTlkNmE0MGQ5MzA4NjM3ZDk0MWEwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9tYl9jb25m
aWcucHlsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9tYi9tYl9jb25maWcucHlsCkBAIC0yNCw3ICsyNCw2IEBACiAgICAgICAnaU9T
MzIgUmVsZWFzZSc6ICdpb3MnLAogICAgICAgJ2lPUzY0IERlYnVnJzogJ2lvcycsCiAgICAgICAn
aU9TNjQgUmVsZWFzZSc6ICdpb3MnLAotICAgICAgJ2lPUzMyIFNpbSBEZWJ1ZyAoaU9TIDkuMCkn
OiAnaW9zJywKICAgICAgICdpT1M2NCBTaW0gRGVidWcgKGlPUyA5LjApJzogJ2lvcycsCiAgICAg
ICAnaU9TNjQgU2ltIERlYnVnIChpT1MgMTAuMCknOiAnaW9zJywKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL21i
X3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL21iL21iX3VuaXR0ZXN0LnB5CmluZGV4IDA5MDkzYzA2YmFlOTg1MTFmNWE1
ZjQwYjgyZGIwMWM1MzdkNzFjNGEuLjBlNzE3M2FiYjRjZTY2YTY3NTU2ODZlMzUxMmQ2NmEwMWE3
NDZlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rvb2xzX3dlYnJ0Yy9tYi9tYl91bml0dGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbWIvbWJfdW5pdHRlc3QucHkK
QEAgLTM4Miw4ICszODIsOCBAQCBjbGFzcyBVbml0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgICctLW91dHB1dF9kaXI9JHtJU09MQVRFRF9PVVRESVJ9L3Rlc3RfbG9ncycsCiAgICAg
ICAgICctLWd0ZXN0X2NvbG9yPW5vJywKICAgICAgICAgJy0tdGltZW91dD01MDAnLAotICAgICAg
ICAnLS1yZXRyeV9mYWlsZWQ9MycsCiAgICAgICAgICctLXdvcmtlcnM9MScsCisgICAgICAgICct
LXJldHJ5X2ZhaWxlZD0zJywKICAgICAgICAgJy4vYmFzZV91bml0dGVzdHMnLAogICAgICAgICAn
LS1hc2FuPTAnLAogICAgICAgICAnLS1sc2FuPTAnLApAQCAtNTAyLDggKzUwMiw4IEBAIGNsYXNz
IFVuaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgJy0tb3V0cHV0X2Rpcj0ke0lT
T0xBVEVEX09VVERJUn0vdGVzdF9sb2dzJywKICAgICAgICAgJy0tZ3Rlc3RfY29sb3I9bm8nLAog
ICAgICAgICAnLS10aW1lb3V0PTkwMCcsCi0gICAgICAgICctLXJldHJ5X2ZhaWxlZD0zJywKICAg
ICAgICAgJy0td29ya2Vycz0xJywKKyAgICAgICAgJy0tcmV0cnlfZmFpbGVkPTMnLAogICAgICAg
ICAnLi9iYXNlX3VuaXR0ZXN0cycsCiAgICAgICAgICctLWFzYW49MCcsCiAgICAgICAgICctLWxz
YW49MCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90b29sc193ZWJydGMvdmlkZW9fcXVhbGl0eV90b29sY2hhaW4vbGludXgvenhpbmcuc2hh
MSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0
Yy92aWRlb19xdWFsaXR5X3Rvb2xjaGFpbi9saW51eC96eGluZy5zaGExCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmNjlhNmFjNDM3MWYzY2U1Y2M3MTBjZmZlNjNhNDM5NjFhNTVmNWJi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy92aWRlb19xdWFs
aXR5X3Rvb2xjaGFpbi9saW51eC96eGluZy5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBA
QAotM2UyYTI1ZWFhMmUyMDdhMWU1NjljNjU4NWU1MGFkZGIyMGJjYTg5YQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy92aWRlb19xdWFsaXR5X3Rvb2xjaGFpbi9tYWMvenhp
bmcuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xz
X3dlYnJ0Yy92aWRlb19xdWFsaXR5X3Rvb2xjaGFpbi9tYWMvenhpbmcuc2hhMQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMWI0OTZlN2NlNmE5MDRlNjE2ODBjMjBjYjEyYmM0OTE3Mjc3
ODM3Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvdmlkZW9f
cXVhbGl0eV90b29sY2hhaW4vbWFjL3p4aW5nLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCww
IEBACi02Nzc4ZTNhYzQ4OWY0ZmMxOGExZWQxMjUyYmJkNmVjYTU0Yzk5NjBlClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL3dpbi96
eGluZy5leGUuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rvb2xzX3dlYnJ0Yy92aWRlb19xdWFsaXR5X3Rvb2xjaGFpbi93aW4venhpbmcuZXhlLnNoYTEK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNTI5MGZiMzQ2YzUzYWY4NjZmMzljNDA4
NGQ3MTdlOWQyN2ZmZDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2Vi
cnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL3dpbi96eGluZy5leGUuc2hhMQorKysgL2Rldi9u
dWxsCkBAIC0xICswLDAgQEAKLTg2Y2EzMTQ4Nzc4MDc5NjY1YWQ1Yjk0NTkzMTFkMzQzYTE4NjU5
NDMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL0JVSUxELmduCmluZGV4IDMyNzNm
ZGEyNWQ1NTI4NjhlYjk1ODA1ZjJlNTRiMjdiZTA3OWNhNWEuLmI1M2Q3MzBhZTA3ZTA2ZjgwMDRl
MzU1MzZjYWU3MjJhMWE1YTZlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL0JVSUxELmduCkBAIC01Miw3ICs1Miw3IEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgidmlkZW8iKSB7CiAgIH0KIAogICBkZXBzID0gWwotICAgICIu
Ljp3ZWJydGNfY29tbW9uIiwKKyAgICAiOmZyYW1lX2R1bXBpbmdfZGVjb2RlciIsCiAgICAgIi4u
L2FwaTpmZWNfY29udHJvbGxlcl9hcGkiLAogICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25u
ZWN0aW9uX2FwaSIsCiAgICAgIi4uL2FwaTp0cmFuc3BvcnRfYXBpIiwKQEAgLTEzMyw2ICsxMzMs
MjUgQEAgcnRjX3NvdXJjZV9zZXQoInZpZGVvX3N0cmVhbV9kZWNvZGVyX2ltcGwiKSB7CiAgIF0K
IH0KIAorcnRjX3NvdXJjZV9zZXQoImZyYW1lX2R1bXBpbmdfZGVjb2RlciIpIHsKKyAgdmlzaWJp
bGl0eSA9IFsgIioiIF0KKworICBzb3VyY2VzID0gWworICAgICJmcmFtZV9kdW1waW5nX2RlY29k
ZXIuY2MiLAorICAgICJmcmFtZV9kdW1waW5nX2RlY29kZXIuaCIsCisgIF0KKworICBkZXBzID0g
WworICAgICIuLi9hcGkvdmlkZW86ZW5jb2RlZF9mcmFtZSIsCisgICAgIi4uL2FwaS92aWRlb19j
b2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCisgICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZp
ZGVvX2NvZGVjX2ludGVyZmFjZSIsCisgICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVv
X2NvZGluZyIsCisgICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGls
aXR5IiwKKyAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICBdCit9CisKIHJ0Y19zb3VyY2Vfc2V0
KCJ2aWRlb19zdHJlYW1fZW5jb2Rlcl9pbXBsIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQog
CkBAIC0xNTIsNyArMTcxLDkgQEAgcnRjX3NvdXJjZV9zZXQoInZpZGVvX3N0cmVhbV9lbmNvZGVy
X2ltcGwiKSB7CiAgIH0KIAogICBkZXBzID0gWworICAgICIuLi9hcGkvdmlkZW86ZW5jb2RlZF9p
bWFnZSIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRvciIsCisgICAg
Ii4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAiLi4v
YXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0
MjAiLAogICAgICIuLi9hcGkvdmlkZW86dmlkZW9fc3RyZWFtX2VuY29kZXIiLApAQCAtMjAzLDE1
ICsyMjQsMTkgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAidmlkZW9fcXVhbGl0
eV90ZXN0LmgiLAogICAgIF0KICAgICBkZXBzID0gWworICAgICAgIjpmcmFtZV9kdW1waW5nX2Rl
Y29kZXIiLAogICAgICAgIi4uL2FwaTpmZWNfY29udHJvbGxlcl9hcGkiLAogICAgICAgIi4uL2Fw
aTp0ZXN0X2RlcGVuZGVuY3lfZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpOnZpZGVvX3F1YWxpdHlf
dGVzdF9maXh0dXJlX2FwaSIsCisgICAgICAiLi4vYXBpL3ZpZGVvOmJ1aWx0aW5fdmlkZW9fYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCisgICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJh
dGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICAgIi4uL2NhbGw6ZmFrZV9uZXR3b3JrIiwKICAg
ICAgICIuLi9jYWxsOnNpbXVsYXRlZF9uZXR3b3JrIiwKICAgICAgICIuLi9sb2dnaW5nOnJ0Y19l
dmVudF9sb2dfYXBpIiwKICAgICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfaW1wbF9vdXRw
dXQiLAogICAgICAgIi4uL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCiAgICAgICAiLi4vbWVkaWE6
cnRjX2ludGVybmFsX3ZpZGVvX2NvZGVjcyIsCisgICAgICAiLi4vbWVkaWE6cnRjX3ZwOF9lbmNv
ZGVyX3NpbXVsY2FzdF9wcm94eSIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6YXVk
aW9fZGV2aWNlX2FwaSIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6YXVkaW9fZGV2
aWNlX21vZHVsZV9mcm9tX2lucHV0X2FuZF9vdXRwdXQiLAogICAgICAgIi4uL21vZHVsZXMvYXVk
aW9fZGV2aWNlOndpbmRvd3NfY29yZV9hdWRpb191dGlsaXR5IiwKQEAgLTM1MCw3ICszNzUsNyBA
QCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJyZXBsYXkuY2MiLAogICAgIF0KICAg
ICBkZXBzID0gWwotICAgICAgIi4uOndlYnJ0Y19jb21tb24iLAorICAgICAgIi4uL2FwaS90ZXN0
L3ZpZGVvOmZ1bmN0aW9uX3ZpZGVvX2ZhY3RvcnkiLAogICAgICAgIi4uL2FwaS92aWRlb19jb2Rl
Y3M6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgICAiLi4vY2FsbDpjYWxsX2ludGVyZmFjZXMiLAog
ICAgICAgIi4uL2NvbW1vbl92aWRlbyIsCkBAIC0zODQsNiArNDA5LDcgQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgZGVmaW5lcyA9IFtdCiAgICAgc291cmNlcyA9IFsKICAgICAgICJj
YWxsX3N0YXRzX3VuaXR0ZXN0LmNjIiwKKyAgICAgICJjcHVfc2NhbGluZ190ZXN0cy5jYyIsCiAg
ICAgICAiZW5jb2Rlcl9ydGNwX2ZlZWRiYWNrX3VuaXR0ZXN0LmNjIiwKICAgICAgICJlbmRfdG9f
ZW5kX3Rlc3RzL2JhbmR3aWR0aF90ZXN0cy5jYyIsCiAgICAgICAiZW5kX3RvX2VuZF90ZXN0cy9j
YWxsX29wZXJhdGlvbl90ZXN0cy5jYyIsCkBAIC0zOTEsNiArNDE3LDcgQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgICAiZW5kX3RvX2VuZF90ZXN0cy9jb25maWdfdGVzdHMuY2MiLAog
ICAgICAgImVuZF90b19lbmRfdGVzdHMvZXh0ZW5kZWRfcmVwb3J0c190ZXN0cy5jYyIsCiAgICAg
ICAiZW5kX3RvX2VuZF90ZXN0cy9mZWNfdGVzdHMuY2MiLAorICAgICAgImVuZF90b19lbmRfdGVz
dHMvZnJhbWVfZW5jcnlwdGlvbl90ZXN0cy5jYyIsCiAgICAgICAiZW5kX3RvX2VuZF90ZXN0cy9o
aXN0b2dyYW1fdGVzdHMuY2MiLAogICAgICAgImVuZF90b19lbmRfdGVzdHMvbXVsdGlfY29kZWNf
cmVjZWl2ZV90ZXN0cy5jYyIsCiAgICAgICAiZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1f
dGVzdGVyLmNjIiwKQEAgLTM5OCw3ICs0MjUsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsK
ICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL211bHRpX3N0cmVhbV90ZXN0cy5jYyIsCiAgICAgICAi
ZW5kX3RvX2VuZF90ZXN0cy9uZXR3b3JrX3N0YXRlX3Rlc3RzLmNjIiwKICAgICAgICJlbmRfdG9f
ZW5kX3Rlc3RzL3Byb2JpbmdfdGVzdHMuY2MiLAotICAgICAgImVuZF90b19lbmRfdGVzdHMvcmVj
ZWl2ZV90aW1lX3Rlc3RzLmNjIiwKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL3JldHJhbnNtaXNz
aW9uX3Rlc3RzLmNjIiwKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL3J0cF9ydGNwX3Rlc3RzLmNj
IiwKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL3NzcmNfdGVzdHMuY2MiLApAQCAtNDI0LDkgKzQ1
MCwxNSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6dmlkZW8iLAogICAgICAg
Ijp2aWRlb19tb2NrcyIsCiAgICAgICAiOnZpZGVvX3N0cmVhbV9lbmNvZGVyX2ltcGwiLAorICAg
ICAgIi4uL2FwaTpmYWtlX2ZyYW1lX2RlY3J5cHRvciIsCisgICAgICAiLi4vYXBpOmZha2VfZnJh
bWVfZW5jcnlwdG9yIiwKICAgICAgICIuLi9hcGk6c2ltdWxhdGVkX25ldHdvcmtfYXBpIiwKKyAg
ICAgICIuLi9hcGkvdGVzdC92aWRlbzpmdW5jdGlvbl92aWRlb19mYWN0b3J5IiwKKyAgICAgICIu
Li9hcGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKKyAg
ICAgICIuLi9hcGkvdmlkZW86ZW5jb2RlZF9pbWFnZSIsCiAgICAgICAiLi4vYXBpL3ZpZGVvOnZp
ZGVvX2ZyYW1lIiwKICAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCisgICAg
ICAiLi4vYXBpL3ZpZGVvX2NvZGVjczpjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycyIsCiAgICAg
ICAiLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAgICIuLi9jYWxs
OmNhbGxfaW50ZXJmYWNlcyIsCiAgICAgICAiLi4vY2FsbDpmYWtlX25ldHdvcmsiLApAQCAtNDQz
LDYgKzQ3NSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL21lZGlhOnJ0
Y19tZWRpYSIsCiAgICAgICAiLi4vbWVkaWE6cnRjX21lZGlhX2Jhc2UiLAogICAgICAgIi4uL21l
ZGlhOnJ0Y19tZWRpYV90ZXN0c191dGlscyIsCisgICAgICAiLi4vbWVkaWE6cnRjX3NpbXVsY2Fz
dF9lbmNvZGVyX2FkYXB0ZXIiLAogICAgICAgIi4uL21vZHVsZXM6bW9kdWxlX2FwaSIsCiAgICAg
ICAiLi4vbW9kdWxlcy9wYWNpbmciLAogICAgICAgIi4uL21vZHVsZXMvcnRwX3J0Y3AiLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
Y2FsbF9zdGF0c191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL2NhbGxfc3RhdHNfdW5pdHRlc3QuY2MKaW5kZXggNzFmYWE2OTJhNTc4
YTk2ZWJlMzJlOWE1ZDQ0OWZkZWIwNDI1MmFiMS4uZGM2YzY5YWY5ZTk4YzcxYjU2MzhiMmRkMzRi
YjIzNTI0NWJiZTdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vY2FsbF9zdGF0c191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9jYWxsX3N0YXRzX3VuaXR0ZXN0
LmNjCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIENhbGxTdGF0c1Rlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKIH07CiAKIFRFU1RfRihDYWxsU3RhdHNUZXN0LCBBZGRBbmRUcmlnZ2VyQ2Fs
bGJhY2spIHsKLSAgcnRjOjpFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50
IGV2ZW50OwogCiAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50NjRfdCBrUnR0ID0gMjU7CiAK
QEAgLTc3LDcgKzc3LDcgQEAgVEVTVF9GKENhbGxTdGF0c1Rlc3QsIEFkZEFuZFRyaWdnZXJDYWxs
YmFjaykgewogfQogCiBURVNUX0YoQ2FsbFN0YXRzVGVzdCwgUHJvY2Vzc1RpbWUpIHsKLSAgcnRj
OjpFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGV2ZW50OwogCiAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgaW50NjRfdCBrUnR0ID0gMTAwOwogICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IGludDY0X3Qga1J0dDIgPSA4MDsKQEAgLTEyOCw4ICsxMjgsOCBAQCBURVNUX0Yo
Q2FsbFN0YXRzVGVzdCwgTXVsdGlwbGVPYnNlcnZlcnMpIHsKICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBpbnQ2NF90IGtSdHQgPSAxMDA7CiAKICAgLy8gVmVyaWZ5IGJvdGggb2JzZXJ2ZXJzIGFy
ZSB1cGRhdGVkLgotICBydGM6OkV2ZW50IGV2MShmYWxzZSwgZmFsc2UpOwotICBydGM6OkV2ZW50
IGV2MihmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGV2MTsKKyAgcnRjOjpFdmVudCBldjI7
CiAgIEVYUEVDVF9DQUxMKHN0YXRzX29ic2VydmVyXzEsIE9uUnR0VXBkYXRlKGtSdHQsIGtSdHQp
KQogICAgICAgLlRpbWVzKEFueU51bWJlcigpKQogICAgICAgLldpbGxPbmNlKEludm9rZVdpdGhv
dXRBcmdzKFsmZXYxXSB7IGV2MS5TZXQoKTsgfSkpCkBAIC0xNjcsNyArMTY3LDcgQEAgVEVTVF9G
KENhbGxTdGF0c1Rlc3QsIE11bHRpcGxlT2JzZXJ2ZXJzKSB7CiAKICAgLy8gRmx1c2ggdGhlIHF1
ZXVlIG9uIHRoZSBwcm9jZXNzIHRocmVhZCB0byBtYWtlIHN1cmUgd2UgcmV0dXJuIGFmdGVyCiAg
IC8vIFByb2Nlc3MoKSBoYXMgYmVlbiBjYWxsZWQuCi0gIHJ0Yzo6RXZlbnQgZXZlbnQoZmFsc2Us
IGZhbHNlKTsKKyAgcnRjOjpFdmVudCBldmVudDsKICAgcHJvY2Vzc190aHJlYWRfLT5Qb3N0VGFz
ayhydGM6Ok5ld0Nsb3N1cmUoWyZldmVudF0oKSB7IGV2ZW50LlNldCgpOyB9KSk7CiAgIGV2ZW50
LldhaXQocnRjOjpFdmVudDo6a0ZvcmV2ZXIpOwogfQpAQCAtMTgzLDcgKzE4Myw3IEBAIFRFU1Rf
RihDYWxsU3RhdHNUZXN0LCBDaGFuZ2VSdHQpIHsKICAgY2FsbF9zdGF0c18uUmVnaXN0ZXJTdGF0
c09ic2VydmVyKCZzdGF0c19vYnNlcnZlcik7CiAgIFJ0Y3BSdHRTdGF0cyogcnRjcF9ydHRfc3Rh
dHMgPSAmY2FsbF9zdGF0c187CiAKLSAgcnRjOjpFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOwor
ICBydGM6OkV2ZW50IGV2ZW50OwogCiAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50NjRfdCBr
Rmlyc3RSdHQgPSAxMDA7CiAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50NjRfdCBrTG93UnR0
ID0ga0ZpcnN0UnR0IC0gMjA7CkBAIC0yNDAsNyArMjQwLDcgQEAgVEVTVF9GKENhbGxTdGF0c1Rl
c3QsIENoYW5nZVJ0dCkgewogfQogCiBURVNUX0YoQ2FsbFN0YXRzVGVzdCwgTGFzdFByb2Nlc3Nl
ZFJ0dCkgewotICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQg
ZXZlbnQ7CiAgIE1vY2tTdGF0c09ic2VydmVyIHN0YXRzX29ic2VydmVyOwogICBjYWxsX3N0YXRz
Xy5SZWdpc3RlclN0YXRzT2JzZXJ2ZXIoJnN0YXRzX29ic2VydmVyKTsKICAgUnRjcFJ0dFN0YXRz
KiBydGNwX3J0dF9zdGF0cyA9ICZjYWxsX3N0YXRzXzsKQEAgLTI4OSw3ICsyODksNyBAQCBURVNU
X0YoQ2FsbFN0YXRzVGVzdCwgTGFzdFByb2Nlc3NlZFJ0dCkgewogCiBURVNUX0YoQ2FsbFN0YXRz
VGVzdCwgUHJvZHVjZXNIaXN0b2dyYW1NZXRyaWNzKSB7CiAgIG1ldHJpY3M6OlJlc2V0KCk7Ci0g
IHJ0Yzo6RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBldmVudDsKICAg
c3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQ2NF90IGtSdHQgPSAxMjM7CiAgIFJ0Y3BSdHRTdGF0
cyogcnRjcF9ydHRfc3RhdHMgPSAmY2FsbF9zdGF0c187CiAgIE1vY2tTdGF0c09ic2VydmVyIHN0
YXRzX29ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vY3B1X3NjYWxpbmdfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9jcHVfc2NhbGluZ190ZXN0cy5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MDhmMDVlMDUyNDdkYjlmMjM2YzNmMmQwODEwOGUzOWIxZDM3YmRkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vY3B1X3NjYWxpbmdfdGVzdHMuY2MKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KKyAqLworCisjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0L2Zp
ZWxkX3RyaWFsLmgiCisjaW5jbHVkZSAidGVzdC9mcmFtZV9nZW5lcmF0b3JfY2FwdHVyZXIuaCIK
KworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworY29uc3RleHByIGludCBrV2lkdGgg
PSAxMjgwOworY29uc3RleHByIGludCBrSGVpZ2h0ID0gNzIwOworY29uc3RleHByIGludCBrRnBz
ID0gMjg7Cit9ICAvLyBuYW1lc3BhY2UKKworLy8gTWluaW1hbCBub3JtYWwgdXNhZ2UgYXQgc3Rh
cnQsIHRoZW4gNjBzIG92ZXJ1c2UuCitjbGFzcyBDcHVPdmVydXNlVGVzdCA6IHB1YmxpYyB0ZXN0
OjpDYWxsVGVzdCB7CisgcHJvdGVjdGVkOgorICBDcHVPdmVydXNlVGVzdCgpCisgICAgICA6IGZp
ZWxkX3RyaWFsc18oIldlYlJUQy1Gb3JjZVNpbXVsYXRlZE92ZXJ1c2VJbnRlcnZhbE1zLzEtNjAw
MDAtNjAwMDAvIikgeworICB9CisKKyAgdm9pZCBSdW5UZXN0QW5kQ2hlY2tGb3JBZGFwdGF0aW9u
KAorICAgICAgY29uc3QgRGVncmFkYXRpb25QcmVmZXJlbmNlJiBkZWdyYWRhdGlvbl9wcmVmZXJl
bmNlLAorICAgICAgYm9vbCBleHBlY3RfYWRhcHRhdGlvbik7CisKKyAgdGVzdDo6U2NvcGVkRmll
bGRUcmlhbHMgZmllbGRfdHJpYWxzXzsKK307CisKK3ZvaWQgQ3B1T3ZlcnVzZVRlc3Q6OlJ1blRl
c3RBbmRDaGVja0ZvckFkYXB0YXRpb24oCisgICAgY29uc3QgRGVncmFkYXRpb25QcmVmZXJlbmNl
JiBkZWdyYWRhdGlvbl9wcmVmZXJlbmNlLAorICAgIGJvb2wgZXhwZWN0X2FkYXB0YXRpb24pIHsK
KyAgY2xhc3MgT3ZlcnVzZU9ic2VydmVyCisgICAgICA6IHB1YmxpYyB0ZXN0OjpTZW5kVGVzdCwK
KyAgICAgICAgcHVibGljIHRlc3Q6OkZyYW1lR2VuZXJhdG9yQ2FwdHVyZXI6OlNpbmtXYW50c09i
c2VydmVyIHsKKyAgIHB1YmxpYzoKKyAgICBPdmVydXNlT2JzZXJ2ZXIoY29uc3QgRGVncmFkYXRp
b25QcmVmZXJlbmNlJiBkZWdyYWRhdGlvbl9wcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAg
ICBib29sIGV4cGVjdF9hZGFwdGF0aW9uKQorICAgICAgICA6IFNlbmRUZXN0KGV4cGVjdF9hZGFw
dGF0aW9uID8ga0xvbmdUaW1lb3V0TXMgOiBrRGVmYXVsdFRpbWVvdXRNcyksCisgICAgICAgICAg
ZGVncmFkYXRpb25fcHJlZmVyZW5jZV8oZGVncmFkYXRpb25fcHJlZmVyZW5jZSksCisgICAgICAg
ICAgZXhwZWN0X2FkYXB0YXRpb25fKGV4cGVjdF9hZGFwdGF0aW9uKSB7fQorCisgICBwcml2YXRl
OgorICAgIHZvaWQgT25GcmFtZUdlbmVyYXRvckNhcHR1cmVyQ3JlYXRlZCgKKyAgICAgICAgdGVz
dDo6RnJhbWVHZW5lcmF0b3JDYXB0dXJlciogZnJhbWVfZ2VuZXJhdG9yX2NhcHR1cmVyKSBvdmVy
cmlkZSB7CisgICAgICBmcmFtZV9nZW5lcmF0b3JfY2FwdHVyZXItPlNldFNpbmtXYW50c09ic2Vy
dmVyKHRoaXMpOworICAgICAgLy8gU2V0IGluaXRpYWwgcmVzb2x1dGlvbi4KKyAgICAgIGZyYW1l
X2dlbmVyYXRvcl9jYXB0dXJlci0+Q2hhbmdlUmVzb2x1dGlvbihrV2lkdGgsIGtIZWlnaHQpOwor
ICAgIH0KKworICAgIC8vIENhbGxlZCB3aGVuIEZyYW1lR2VuZXJhdG9yQ2FwdHVyZXI6OkFkZE9y
VXBkYXRlU2luayBpcyBjYWxsZWQuCisgICAgdm9pZCBPblNpbmtXYW50c0NoYW5nZWQocnRjOjpW
aWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4qIHNpbmssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpWaWRlb1NpbmtXYW50cyYgd2FudHMpIG92ZXJyaWRlIHsKKyAg
ICAgIGlmICh3YW50cy5tYXhfcGl4ZWxfY291bnQgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+
OjptYXgoKSAmJgorICAgICAgICAgIHdhbnRzLm1heF9mcmFtZXJhdGVfZnBzID09IGtGcHMpIHsK
KyAgICAgICAgLy8gTWF4IGNvbmZpZ3VyZWQgZnJhbWVyYXRlIGlzIGluaXRpYWxseSBzZXQuCisg
ICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIHN3aXRjaCAoZGVncmFkYXRpb25fcHJlZmVy
ZW5jZV8pIHsKKyAgICAgICAgY2FzZSBEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX0ZS
QU1FUkFURToKKyAgICAgICAgICBFWFBFQ1RfTFQod2FudHMubWF4X3BpeGVsX2NvdW50LCBrV2lk
dGggKiBrSGVpZ2h0KTsKKyAgICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlO
VEFJTl9SRVNPTFVUSU9OOgorICAgICAgICAgIEVYUEVDVF9MVCh3YW50cy5tYXhfZnJhbWVyYXRl
X2Zwcywga0Zwcyk7CisgICAgICAgICAgb2JzZXJ2YXRpb25fY29tcGxldGVfLlNldCgpOworICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6QkFMQU5D
RUQ6CisgICAgICAgICAgaWYgKHdhbnRzLm1heF9waXhlbF9jb3VudCA9PSBzdGQ6Om51bWVyaWNf
bGltaXRzPGludD46Om1heCgpICYmCisgICAgICAgICAgICAgIHdhbnRzLm1heF9mcmFtZXJhdGVf
ZnBzID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpIHsKKyAgICAgICAgICAgIC8v
IHxhZGFwdF9jb3VudGVyc198IG1hcCBpbiBWaWRlb1N0cmVhbUVuY29kZXIgaXMgcmVzZXQgd2hl
bgorICAgICAgICAgICAgLy8gYmFsYW5jZWQgbW9kZSBpcyBzZXQuCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICB9CisgICAgICAgICAgRVhQRUNUX1RSVUUod2FudHMubWF4X3BpeGVsX2Nv
dW50IDwga1dpZHRoICoga0hlaWdodCB8fAorICAgICAgICAgICAgICAgICAgICAgIHdhbnRzLm1h
eF9mcmFtZXJhdGVfZnBzIDwga0Zwcyk7CisgICAgICAgICAgb2JzZXJ2YXRpb25fY29tcGxldGVf
LlNldCgpOworICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIFJU
Q19OT1RSRUFDSEVEKCk7CisgICAgICB9CisgICAgfQorCisgICAgdm9pZCBNb2RpZnlWaWRlb0Nv
bmZpZ3MoCisgICAgICAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnKiBzZW5kX2NvbmZpZywKKyAg
ICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9SZWNlaXZlU3RyZWFtOjpDb25maWc+KiByZWNlaXZlX2Nv
bmZpZ3MsCisgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZyogZW5jb2Rlcl9jb25maWcpIG92ZXJy
aWRlIHsKKyAgICAgIEVYUEVDVF9GQUxTRShlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0X2xheWVy
cy5lbXB0eSgpKTsKKyAgICAgIGVuY29kZXJfY29uZmlnLT5zaW11bGNhc3RfbGF5ZXJzWzBdLm1h
eF9mcmFtZXJhdGUgPSBrRnBzOworICAgIH0KKworICAgIHZvaWQgTW9kaWZ5VmlkZW9EZWdyYWRh
dGlvblByZWZlcmVuY2UoCisgICAgICAgIERlZ3JhZGF0aW9uUHJlZmVyZW5jZSogZGVncmFkYXRp
b25fcHJlZmVyZW5jZSkgb3ZlcnJpZGUgeworICAgICAgKmRlZ3JhZGF0aW9uX3ByZWZlcmVuY2Ug
PSBkZWdyYWRhdGlvbl9wcmVmZXJlbmNlXzsKKyAgICB9CisKKyAgICB2b2lkIFBlcmZvcm1UZXN0
KCkgb3ZlcnJpZGUgeworICAgICAgRVhQRUNUX0VRKGV4cGVjdF9hZGFwdGF0aW9uXywgV2FpdCgp
KQorICAgICAgICAgIDw8ICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYSBzY2FsZSBkb3du
LiI7CisgICAgfQorCisgICAgY29uc3QgRGVncmFkYXRpb25QcmVmZXJlbmNlIGRlZ3JhZGF0aW9u
X3ByZWZlcmVuY2VfOworICAgIGNvbnN0IGJvb2wgZXhwZWN0X2FkYXB0YXRpb25fOworICB9IHRl
c3QoZGVncmFkYXRpb25fcHJlZmVyZW5jZSwgZXhwZWN0X2FkYXB0YXRpb24pOworCisgIFJ1bkJh
c2VUZXN0KCZ0ZXN0KTsKK30KKworVEVTVF9GKENwdU92ZXJ1c2VUZXN0LCBBZGFwdHNEb3duSW5S
ZXNvbHV0aW9uT25PdmVydXNlKSB7CisgIFJ1blRlc3RBbmRDaGVja0ZvckFkYXB0YXRpb24oRGVn
cmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9GUkFNRVJBVEUsIHRydWUpOworfQorCitURVNU
X0YoQ3B1T3ZlcnVzZVRlc3QsIEFkYXB0c0Rvd25JbkZwc09uT3ZlcnVzZSkgeworICBSdW5UZXN0
QW5kQ2hlY2tGb3JBZGFwdGF0aW9uKERlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TUFJTlRBSU5fUkVT
T0xVVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKK30KKworVEVT
VF9GKENwdU92ZXJ1c2VUZXN0LCBBZGFwdHNEb3duSW5SZXNvbHV0aW9uT3JGcHNPbk92ZXJ1c2Up
IHsKKyAgUnVuVGVzdEFuZENoZWNrRm9yQWRhcHRhdGlvbihEZWdyYWRhdGlvblByZWZlcmVuY2U6
OkJBTEFOQ0VELCB0cnVlKTsKK30KKworVEVTVF9GKENwdU92ZXJ1c2VUZXN0LCBOb0FkYXB0RG93
bk9uT3ZlcnVzZSkgeworICBSdW5UZXN0QW5kQ2hlY2tGb3JBZGFwdGF0aW9uKERlZ3JhZGF0aW9u
UHJlZmVyZW5jZTo6RElTQUJMRUQsIGZhbHNlKTsKK30KK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL2VuZF90b19lbmRfdGVzdHMvYmFuZHdpZHRoX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9iYW5kd2lk
dGhfdGVzdHMuY2MKaW5kZXggYWI1ZTU2ODdiOTk3YmFiZWJiNDIwYzM3ZjZmNTE2NmYwNGIzOTdj
My4uYTM1ZjA4YzNmNWY2YmUzZTZiMjYyMTQxOGExOTI5MDU5YThiMmEyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2Vu
ZF90ZXN0cy9iYW5kd2lkdGhfdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9iYW5kd2lkdGhfdGVzdHMu
Y2MKQEAgLTksNiArOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsYXRlZF9u
ZXR3b3JrLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwvZmFrZV9uZXR3b3JrX3BpcGUuaCIKICNp
bmNsdWRlICJjYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9ydGNwLmgiCkBAIC0xNDUsNyArMTQ2LDYgQEAgVEVTVF9GKEJhbmR3
aWR0aEVuZFRvRW5kVGVzdCwgUmVtYldpdGhTZW5kU2lkZUJ3ZSkgewogICAgICAgICAgIHNlbmRl
cl9zc3JjXygwKSwKICAgICAgICAgICByZW1iX2JpdHJhdGVfYnBzXygxMDAwMDAwKSwKICAgICAg
ICAgICByZWNlaXZlX3RyYW5zcG9ydF8obnVsbHB0ciksCi0gICAgICAgICAgc3RvcF9ldmVudF8o
ZmFsc2UsIGZhbHNlKSwKICAgICAgICAgICBwb2xsZXJfdGhyZWFkXygmQml0cmF0ZVN0YXRzUG9s
bGluZ1RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICJCaXRyYXRlU3RhdHNQb2xsaW5nVGhyZWFkIiksCkBAIC0xNjAsMTUgKzE2
MCwxNSBAQCBURVNUX0YoQmFuZHdpZHRoRW5kVG9FbmRUZXN0LCBSZW1iV2l0aFNlbmRTaWRlQndl
KSB7CiAgICAgICAgICAgdGFza19xdWV1ZSwgbnVsbHB0ciwgdGhpcywgdGVzdDo6UGFja2V0VHJh
bnNwb3J0OjprUmVjZWl2ZXIsCiAgICAgICAgICAgcGF5bG9hZF90eXBlX21hcF8sCiAgICAgICAg
ICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICAgICAgQ2xv
Y2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKLSAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8
U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVs
YXRpb25Db25maWcoKSkpKTsKKyAgICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2so
KSwgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmln
KCkpKSk7CiAgICAgICByZXR1cm4gcmVjZWl2ZV90cmFuc3BvcnRfOwogICAgIH0KIAotICAgIHZv
aWQgTW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZykgb3ZlcnJpZGUg
eworICAgIHZvaWQgTW9kaWZ5U2VuZGVyQml0cmF0ZUNvbmZpZygKKyAgICAgICAgQml0cmF0ZUNv
bnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykgb3ZlcnJpZGUgewogICAgICAgLy8gU2V0IGEgaGln
aCBzdGFydCBiaXRyYXRlIHRvIHJlZHVjZSB0aGUgdGVzdCBjb21wbGV0aW9uIHRpbWUuCi0gICAg
ICBjb25maWctPmJpdHJhdGVfY29uZmlnLnN0YXJ0X2JpdHJhdGVfYnBzID0gcmVtYl9iaXRyYXRl
X2Jwc187CisgICAgICBiaXRyYXRlX2NvbmZpZy0+c3RhcnRfYml0cmF0ZV9icHMgPSByZW1iX2Jp
dHJhdGVfYnBzXzsKICAgICB9CiAKICAgICB2b2lkIE1vZGlmeVZpZGVvQ29uZmlncygKQEAgLTI3
NCw2ICsyNzQsOCBAQCBURVNUX0YoQmFuZHdpZHRoRW5kVG9FbmRUZXN0LCBSZXBvcnRzU2V0RW5j
b2RlclJhdGVzKSB7CiAgICAgICAgICAgdGFza19xdWV1ZV8odGFza19xdWV1ZSksCiAgICAgICAg
ICAgc2VuZF9zdHJlYW1fKG51bGxwdHIpLAogICAgICAgICAgIGVuY29kZXJfZmFjdG9yeV8odGhp
cyksCisgICAgICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8oCisgICAgICAgICAgICAg
IENyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkpLAogICAgICAgICAg
IGJpdHJhdGVfa2Jwc18oMCkge30KIAogICAgIHZvaWQgT25WaWRlb1N0cmVhbXNDcmVhdGVkKApA
QCAtMjg3LDYgKzI4OSw4IEBAIFRFU1RfRihCYW5kd2lkdGhFbmRUb0VuZFRlc3QsIFJlcG9ydHNT
ZXRFbmNvZGVyUmF0ZXMpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9SZWNlaXZlU3RyZWFt
OjpDb25maWc+KiByZWNlaXZlX2NvbmZpZ3MsCiAgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZyog
ZW5jb2Rlcl9jb25maWcpIG92ZXJyaWRlIHsKICAgICAgIHNlbmRfY29uZmlnLT5lbmNvZGVyX3Nl
dHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9ICZlbmNvZGVyX2ZhY3RvcnlfOworICAgICAgc2VuZF9j
b25maWctPmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAg
ICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8uZ2V0KCk7CiAgICAgICBSVENfRENIRUNL
X0VRKDEsIGVuY29kZXJfY29uZmlnLT5udW1iZXJfb2Zfc3RyZWFtcyk7CiAgICAgfQogCkBAIC0z
NDUsNiArMzQ5LDcgQEAgVEVTVF9GKEJhbmR3aWR0aEVuZFRvRW5kVGVzdCwgUmVwb3J0c1NldEVu
Y29kZXJSYXRlcykgewogICAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfOwogICAgIFZpZGVv
U2VuZFN0cmVhbSogc2VuZF9zdHJlYW1fOwogICAgIHRlc3Q6OlZpZGVvRW5jb2RlclByb3h5RmFj
dG9yeSBlbmNvZGVyX2ZhY3RvcnlfOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVB
bGxvY2F0b3JGYWN0b3J5PiBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XzsKICAgICB1aW50MzJf
dCBiaXRyYXRlX2ticHNfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKICAgfSB0ZXN0KCZ0YXNrX3F1
ZXVlXyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvY2FsbF9vcGVyYXRpb25fdGVzdHMuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5k
X3Rlc3RzL2NhbGxfb3BlcmF0aW9uX3Rlc3RzLmNjCmluZGV4IDJhY2QxYjlmZTgxMjkxODcwMWFk
NmY2ZjZjODBmNmQ1NzEzMmM1MWYuLmVjM2NhODRiZmI1NDdjMTBkNjQzOWM5YmMzZTMxN2MzNmIw
NjBmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvY2FsbF9vcGVyYXRpb25fdGVzdHMuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2Vu
ZF90ZXN0cy9jYWxsX29wZXJhdGlvbl90ZXN0cy5jYwpAQCAtOTIsOCArOTIsNiBAQCBURVNUX1Ao
Q2FsbE9wZXJhdGlvbkVuZFRvRW5kVGVzdCwgUmVuZGVyc1NpbmdsZURlbGF5ZWRGcmFtZSkgewog
CiAgIGNsYXNzIFJlbmRlcmVyIDogcHVibGljIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPFZpZGVv
RnJhbWU+IHsKICAgIHB1YmxpYzoKLSAgICBSZW5kZXJlcigpIDogZXZlbnRfKGZhbHNlLCBmYWxz
ZSkge30KLQogICAgIHZvaWQgT25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb19mcmFtZSkg
b3ZlcnJpZGUgewogICAgICAgU2xlZXBNcyhrUmVuZGVyRGVsYXlNcyk7CiAgICAgICBldmVudF8u
U2V0KCk7CkBAIC0xMTQsMTUgKzExMiwxNSBAQCBURVNUX1AoQ2FsbE9wZXJhdGlvbkVuZFRvRW5k
VGVzdCwgUmVuZGVyc1NpbmdsZURlbGF5ZWRGcmFtZSkgewogCiAgICAgc2VuZGVyX3RyYW5zcG9y
dCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4oCiAgICAgICAgICZ0
YXNrX3F1ZXVlXywKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigK
LSAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVl
PFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSksCisgICAgICAgIGFic2w6
Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjptYWtlX3Vu
aXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSksCiAgICAgICAg
IHNlbmRlcl9jYWxsXy5nZXQoKSwgcGF5bG9hZF90eXBlX21hcF8pOwogICAgIHJlY2VpdmVyX3Ry
YW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4oCiAgICAg
ICAgICZ0YXNrX3F1ZXVlXywKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQ
aXBlPigKLSAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2Vf
dW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSksCisgICAgICAg
IGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oQ2xvY2s6OkdldFJlYWxUaW1lQ2xv
Y2soKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpt
YWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSksCiAg
ICAgICAgIHJlY2VpdmVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiAgICAgc2Vu
ZGVyX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIocmVjZWl2ZXJfY2FsbF8tPlJlY2VpdmVyKCkpOwog
ICAgIHJlY2VpdmVyX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZl
cigpKTsKQEAgLTE2MSw4ICsxNTksNiBAQCBURVNUX1AoQ2FsbE9wZXJhdGlvbkVuZFRvRW5kVGVz
dCwgUmVuZGVyc1NpbmdsZURlbGF5ZWRGcmFtZSkgewogVEVTVF9QKENhbGxPcGVyYXRpb25FbmRU
b0VuZFRlc3QsIFRyYW5zbWl0c0ZpcnN0RnJhbWUpIHsKICAgY2xhc3MgUmVuZGVyZXIgOiBwdWJs
aWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4gewogICAgcHVibGljOgotICAg
IFJlbmRlcmVyKCkgOiBldmVudF8oZmFsc2UsIGZhbHNlKSB7fQotCiAgICAgdm9pZCBPbkZyYW1l
KGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVvX2ZyYW1lKSBvdmVycmlkZSB7IGV2ZW50Xy5TZXQoKTsg
fQogCiAgICAgYm9vbCBXYWl0KCkgeyByZXR1cm4gZXZlbnRfLldhaXQoa0RlZmF1bHRUaW1lb3V0
TXMpOyB9CkBAIC0xODIsMTUgKzE3OCwxNSBAQCBURVNUX1AoQ2FsbE9wZXJhdGlvbkVuZFRvRW5k
VGVzdCwgVHJhbnNtaXRzRmlyc3RGcmFtZSkgewogCiAgICAgc2VuZGVyX3RyYW5zcG9ydCA9IGFi
c2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4oCiAgICAgICAgICZ0YXNrX3F1
ZXVlXywKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAg
ICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVs
YXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSksCisgICAgICAgIGFic2w6Om1ha2Vf
dW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxT
aW11bGF0ZWROZXR3b3JrPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSksCiAgICAgICAgIHNlbmRl
cl9jYWxsXy5nZXQoKSwgcGF5bG9hZF90eXBlX21hcF8pOwogICAgIHJlY2VpdmVyX3RyYW5zcG9y
dCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4oCiAgICAgICAgICZ0
YXNrX3F1ZXVlXywKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigK
LSAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVl
PFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSksCisgICAgICAgIGFic2w6
Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjptYWtlX3Vu
aXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSksCiAgICAgICAg
IHJlY2VpdmVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiAgICAgc2VuZGVyX3Ry
YW5zcG9ydC0+U2V0UmVjZWl2ZXIocmVjZWl2ZXJfY2FsbF8tPlJlY2VpdmVyKCkpOwogICAgIHJl
Y2VpdmVyX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZlcigpKTsK
QEAgLTIyMSw3OSArMjE3LDQgQEAgVEVTVF9QKENhbGxPcGVyYXRpb25FbmRUb0VuZFRlc3QsIFRy
YW5zbWl0c0ZpcnN0RnJhbWUpIHsKICAgfSk7CiB9CiAKLVRFU1RfUChDYWxsT3BlcmF0aW9uRW5k
VG9FbmRUZXN0LCBPYnNlcnZlcnNFbmNvZGVkRnJhbWVzKSB7Ci0gIGNsYXNzIEVuY29kZWRGcmFt
ZVRlc3RPYnNlcnZlciA6IHB1YmxpYyBFbmNvZGVkRnJhbWVPYnNlcnZlciB7Ci0gICBwdWJsaWM6
Ci0gICAgRW5jb2RlZEZyYW1lVGVzdE9ic2VydmVyKCkKLSAgICAgICAgOiBsZW5ndGhfKDApLCBm
cmFtZV90eXBlXyhrRW1wdHlGcmFtZSksIGNhbGxlZF8oZmFsc2UsIGZhbHNlKSB7fQotICAgIHZp
cnR1YWwgfkVuY29kZWRGcmFtZVRlc3RPYnNlcnZlcigpIHt9Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
RW5jb2RlZEZyYW1lQ2FsbGJhY2soY29uc3QgRW5jb2RlZEZyYW1lJiBlbmNvZGVkX2ZyYW1lKSB7
Ci0gICAgICBmcmFtZV90eXBlXyA9IGVuY29kZWRfZnJhbWUuZnJhbWVfdHlwZV87Ci0gICAgICBs
ZW5ndGhfID0gZW5jb2RlZF9mcmFtZS5sZW5ndGhfOwotICAgICAgYnVmZmVyXy5yZXNldChuZXcg
dWludDhfdFtsZW5ndGhfXSk7Ci0gICAgICBtZW1jcHkoYnVmZmVyXy5nZXQoKSwgZW5jb2RlZF9m
cmFtZS5kYXRhXywgbGVuZ3RoXyk7Ci0gICAgICBjYWxsZWRfLlNldCgpOwotICAgIH0KLQotICAg
IGJvb2wgV2FpdCgpIHsgcmV0dXJuIGNhbGxlZF8uV2FpdChrRGVmYXVsdFRpbWVvdXRNcyk7IH0K
LQotICAgcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBidWZmZXJfOwot
ICAgIHNpemVfdCBsZW5ndGhfOwotICAgIEZyYW1lVHlwZSBmcmFtZV90eXBlXzsKLSAgICBydGM6
OkV2ZW50IGNhbGxlZF87Ci0gIH07Ci0KLSAgRW5jb2RlZEZyYW1lVGVzdE9ic2VydmVyIHBvc3Rf
ZW5jb2RlX29ic2VydmVyOwotICB0ZXN0OjpGcmFtZUZvcndhcmRlciBmb3J3YXJkZXI7Ci0gIHN0
ZDo6dW5pcXVlX3B0cjx0ZXN0OjpGcmFtZUdlbmVyYXRvcj4gZnJhbWVfZ2VuZXJhdG9yOwotCi0g
IHN0ZDo6dW5pcXVlX3B0cjx0ZXN0OjpEaXJlY3RUcmFuc3BvcnQ+IHNlbmRlcl90cmFuc3BvcnQ7
Ci0gIHN0ZDo6dW5pcXVlX3B0cjx0ZXN0OjpEaXJlY3RUcmFuc3BvcnQ+IHJlY2VpdmVyX3RyYW5z
cG9ydDsKLQotICB0YXNrX3F1ZXVlXy5TZW5kVGFzayhbJl0oKSB7Ci0gICAgQ3JlYXRlQ2FsbHMo
KTsKLQotICAgIHNlbmRlcl90cmFuc3BvcnQgPSBhYnNsOjptYWtlX3VuaXF1ZTx0ZXN0OjpEaXJl
Y3RUcmFuc3BvcnQ+KAotICAgICAgICAmdGFza19xdWV1ZV8sCi0gICAgICAgIGFic2w6Om1ha2Vf
dW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCi0gICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVD
bG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWcoKSkpLAotICAgICAgICBzZW5kZXJfY2FsbF8uZ2V0KCksIHBheWxvYWRfdHlwZV9tYXBf
KTsKLSAgICByZWNlaXZlcl90cmFuc3BvcnQgPSBhYnNsOjptYWtlX3VuaXF1ZTx0ZXN0OjpEaXJl
Y3RUcmFuc3BvcnQ+KAotICAgICAgICAmdGFza19xdWV1ZV8sCi0gICAgICAgIGFic2w6Om1ha2Vf
dW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCi0gICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVD
bG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWcoKSkpLAotICAgICAgICByZWNlaXZlcl9jYWxsXy5nZXQoKSwgcGF5bG9hZF90eXBlX21h
cF8pOwotICAgIHNlbmRlcl90cmFuc3BvcnQtPlNldFJlY2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5S
ZWNlaXZlcigpKTsKLSAgICByZWNlaXZlcl90cmFuc3BvcnQtPlNldFJlY2VpdmVyKHNlbmRlcl9j
YWxsXy0+UmVjZWl2ZXIoKSk7Ci0KLSAgICBDcmVhdGVTZW5kQ29uZmlnKDEsIDAsIDAsIHNlbmRl
cl90cmFuc3BvcnQuZ2V0KCkpOwotICAgIENyZWF0ZU1hdGNoaW5nUmVjZWl2ZUNvbmZpZ3MocmVj
ZWl2ZXJfdHJhbnNwb3J0LmdldCgpKTsKLSAgICBHZXRWaWRlb1NlbmRDb25maWcoKS0+cG9zdF9l
bmNvZGVfY2FsbGJhY2sgPSAmcG9zdF9lbmNvZGVfb2JzZXJ2ZXI7Ci0KLSAgICBDcmVhdGVWaWRl
b1N0cmVhbXMoKTsKLSAgICBTdGFydCgpOwotCi0gICAgZnJhbWVfZ2VuZXJhdG9yID0gdGVzdDo6
RnJhbWVHZW5lcmF0b3I6OkNyZWF0ZVNxdWFyZUdlbmVyYXRvcigKLSAgICAgICAga0RlZmF1bHRX
aWR0aCwga0RlZmF1bHRIZWlnaHQsIGFic2w6Om51bGxvcHQsIGFic2w6Om51bGxvcHQpOwotICAg
IEdldFZpZGVvU2VuZFN0cmVhbSgpLT5TZXRTb3VyY2UoJmZvcndhcmRlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TUFJTlRBSU5f
RlJBTUVSQVRFKTsKLSAgICBmb3J3YXJkZXIuSW5jb21pbmdDYXB0dXJlZEZyYW1lKCpmcmFtZV9n
ZW5lcmF0b3ItPk5leHRGcmFtZSgpKTsKLSAgfSk7Ci0KLSAgRVhQRUNUX1RSVUUocG9zdF9lbmNv
ZGVfb2JzZXJ2ZXIuV2FpdCgpKQotICAgICAgPDwgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZv
ciBzZW5kLXNpZGUgZW5jb2RlZC1mcmFtZSBjYWxsYmFjay4iOwotCi0gIHRhc2tfcXVldWVfLlNl
bmRUYXNrKFt0aGlzLCAmc2VuZGVyX3RyYW5zcG9ydCwgJnJlY2VpdmVyX3RyYW5zcG9ydF0oKSB7
Ci0gICAgU3RvcCgpOwotICAgIERlc3Ryb3lTdHJlYW1zKCk7Ci0gICAgc2VuZGVyX3RyYW5zcG9y
dC5yZXNldCgpOwotICAgIHJlY2VpdmVyX3RyYW5zcG9ydC5yZXNldCgpOwotICAgIERlc3Ryb3lD
YWxscygpOwotICB9KTsKLX0KLQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2Vu
ZF90ZXN0cy9jb2RlY190ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvY29kZWNfdGVzdHMuY2MKaW5kZXggZmFk
M2FjN2VkZWYzZDBkYWJjM2QyYTE1Zjg4ODY2OWY4MTMxZmJiOC4uNjdlZjYxMWE3MDg4ODIzZDdk
MmRkYzQzMzMyZTQ4YTZhMGRmZTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9jb2RlY190ZXN0cy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9l
bmRfdG9fZW5kX3Rlc3RzL2NvZGVjX3Rlc3RzLmNjCkBAIC04LDYgKzgsNyBAQAogICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgog
ICovCiAKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2Zh
Y3RvcnkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxkZWNvZGVyZmFjdG9yeS5o
IgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGVuY29kZXJmYWN0b3J5LmgiCiAjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0LmgiCkBA
IC0xOCw3ICsxOSw2IEBACiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKICNpbmNsdWRlICJ0
ZXN0L2VuY29kZXJfc2V0dGluZ3MuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCi0j
aW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJ0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMTE4LDcgKzExOCw3IEBA
IFRFU1RfUChDb2RlY0VuZFRvRW5kVGVzdCwgU2VuZHNBbmRSZWNlaXZlc1ZQOFJvdGF0aW9uOTAp
IHsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCi0jaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVf
VlA5KQorI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiBURVNUX1AoQ29kZWNFbmRUb0VuZFRl
c3QsIFNlbmRzQW5kUmVjZWl2ZXNWUDkpIHsKICAgdGVzdDo6RnVuY3Rpb25WaWRlb0VuY29kZXJG
YWN0b3J5IGVuY29kZXJfZmFjdG9yeSgKICAgICAgIFtdKCkgeyByZXR1cm4gVlA5RW5jb2Rlcjo6
Q3JlYXRlKCk7IH0pOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIFRFU1RfUChDb2RlY0VuZFRvRW5kVGVz
dCwgU2VuZHNBbmRSZWNlaXZlc011bHRpcGxleFZpZGVvUm90YXRpb245MCkgewogICBSdW5CYXNl
VGVzdCgmdGVzdCk7CiB9CiAKLSNlbmRpZiAgLy8gIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQor
I2VuZGlmICAvLyBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogCiAjaWYgZGVmaW5lZChXRUJSVENf
VVNFX0gyNjQpCiBjbGFzcyBFbmRUb0VuZFRlc3RIMjY0IDogcHVibGljIHRlc3Q6OkNhbGxUZXN0
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9jb25maWdfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2NvbmZpZ190
ZXN0cy5jYwppbmRleCBkMzJiMTExOGI3YzMyMTc0NzEyNGU4ODc5MmU2NmI3MTE2Mjk5YTQ4Li4x
ZDMzNTg5YzlkMWNlZDdjZjAyODIwNzMzMGUzMmQ1NzMyMDgxZjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rl
c3RzL2NvbmZpZ190ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2NvbmZpZ190ZXN0cy5jYwpAQCAtNDks
NiArNDksMTIgQEAgVEVTVF9GKENvbmZpZ0VuZFRvRW5kVGVzdCwgVmVyaWZ5RGVmYXVsdFNlbmRD
b25maWdQYXJhbWV0ZXJzKSB7CiAgICAgICA8PCAiRW5hYmxpbmcgUlRYIHJlcXVpcmVzIHJ0cG1h
cDogcnR4IG5lZ290aWF0aW9uLiI7CiAgIEVYUEVDVF9UUlVFKGRlZmF1bHRfc2VuZF9jb25maWcu
cnRwLmV4dGVuc2lvbnMuZW1wdHkoKSkKICAgICAgIDw8ICJFbmFibGluZyBSVFAgZXh0ZW5zaW9u
cyByZXF1aXJlIG5lZ290aWF0aW9uLiI7CisgIEVYUEVDVF9FUShudWxscHRyLCBkZWZhdWx0X3Nl
bmRfY29uZmlnLmZyYW1lX2VuY3J5cHRvcikKKyAgICAgIDw8ICJFbmFibGluZyBGcmFtZSBFbmNy
eXB0aW9uIHJlcXVpcmVzIGEgZnJhbWUgZW5jcnlwdG9yIHRvIGJlIGF0dGFjaGVkIjsKKyAgRVhQ
RUNUX0ZBTFNFKAorICAgICAgZGVmYXVsdF9zZW5kX2NvbmZpZy5jcnlwdG9fb3B0aW9ucy5zZnJh
bWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uKQorICAgICAgPDwgIkVuYWJsaW5nIFJlcXVpcmUg
RnJhbWUgRW5jcnlwdGlvbiBtZWFucyBhbiBlbmNyeXB0b3IgbXVzdCBiZSAiCisgICAgICAgICAi
YXR0YWNoZWQiOwogCiAgIFZlcmlmeUVtcHR5TmFja0NvbmZpZyhkZWZhdWx0X3NlbmRfY29uZmln
LnJ0cC5uYWNrKTsKICAgVmVyaWZ5RW1wdHlVbHBmZWNDb25maWcoZGVmYXVsdF9zZW5kX2NvbmZp
Zy5ydHAudWxwZmVjKTsKQEAgLTcwLDEyICs3NiwxNiBAQCBURVNUX0YoQ29uZmlnRW5kVG9FbmRU
ZXN0LCBWZXJpZnlEZWZhdWx0VmlkZW9SZWNlaXZlQ29uZmlnUGFyYW1ldGVycykgewogICAgICAg
PDwgIkVuYWJsaW5nIFJUWCByZXF1aXJlcyBydHBtYXA6IHJ0eCBuZWdvdGlhdGlvbi4iOwogICBF
WFBFQ1RfVFJVRShkZWZhdWx0X3JlY2VpdmVfY29uZmlnLnJ0cC5leHRlbnNpb25zLmVtcHR5KCkp
CiAgICAgICA8PCAiRW5hYmxpbmcgUlRQIGV4dGVuc2lvbnMgcmVxdWlyZSBuZWdvdGlhdGlvbi4i
OwotCiAgIFZlcmlmeUVtcHR5TmFja0NvbmZpZyhkZWZhdWx0X3JlY2VpdmVfY29uZmlnLnJ0cC5u
YWNrKTsKICAgRVhQRUNUX0VRKC0xLCBkZWZhdWx0X3JlY2VpdmVfY29uZmlnLnJ0cC51bHBmZWNf
cGF5bG9hZF90eXBlKQogICAgICAgPDwgIkVuYWJsaW5nIFVMUEZFQyByZXF1aXJlcyBydHBtYXA6
IHVscGZlYyBuZWdvdGlhdGlvbi4iOwogICBFWFBFQ1RfRVEoLTEsIGRlZmF1bHRfcmVjZWl2ZV9j
b25maWcucnRwLnJlZF9wYXlsb2FkX3R5cGUpCiAgICAgICA8PCAiRW5hYmxpbmcgVUxQRkVDIHJl
cXVpcmVzIHJ0cG1hcDogcmVkIG5lZ290aWF0aW9uLiI7CisgIEVYUEVDVF9FUShudWxscHRyLCBk
ZWZhdWx0X3JlY2VpdmVfY29uZmlnLmZyYW1lX2RlY3J5cHRvcikKKyAgICAgIDw8ICJFbmFibGlu
ZyBGcmFtZSBEZWNyeXB0aW9uIHJlcXVpcmVzIGEgZnJhbWUgZGVjcnlwdG9yIHRvIGJlIGF0dGFj
aGVkIjsKKyAgRVhQRUNUX0ZBTFNFKAorICAgICAgZGVmYXVsdF9yZWNlaXZlX2NvbmZpZy5jcnlw
dG9fb3B0aW9ucy5zZnJhbWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uKQorICAgICAgPDwgIkVu
YWJsaW5nIFJlcXVpcmUgRnJhbWUgRW5jcnlwdGlvbiBtZWFucyBhIGRlY3J5cHRvciBtdXN0IGJl
IGF0dGFjaGVkIjsKIH0KIAogVEVTVF9GKENvbmZpZ0VuZFRvRW5kVGVzdCwgVmVyaWZ5RGVmYXVs
dEZsZXhmZWNSZWNlaXZlQ29uZmlnUGFyYW1ldGVycykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9l
eHRlbmRlZF9yZXBvcnRzX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9leHRlbmRlZF9yZXBvcnRzX3Rlc3Rz
LmNjCmluZGV4IGJhNWNhNjkzZjJiNWU4ZDViYTgzZmI2ZDNlYTFjMWVkZDYxZDE4MjIuLjRkZTA0
NDFiM2RmYzQ0NGZmZTNlMDIyZDdlYmU5NDgzZDA3NGVmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMv
ZXh0ZW5kZWRfcmVwb3J0c190ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2V4dGVuZGVkX3JlcG9ydHNf
dGVzdHMuY2MKQEAgLTgsOSArOCwxMSBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKKyNpbmNsdWRlICJhcGkv
dmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmlnLmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtl
X25ldHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKICNp
bmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgorI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIK
ICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9ydGNwX3BhY2tldF9wYXJz
ZXIuaCIKIApAQCAtMjEsMTIgKzIzLDE0IEBAIGNsYXNzIEV4dGVuZGVkUmVwb3J0c0VuZFRvRW5k
VGVzdCA6IHB1YmxpYyB0ZXN0OjpDYWxsVGVzdCB7fTsKIGNsYXNzIFJ0Y3BYck9ic2VydmVyIDog
cHVibGljIHRlc3Q6OkVuZFRvRW5kVGVzdCB7CiAgcHVibGljOgogICBSdGNwWHJPYnNlcnZlcihi
b29sIGVuYWJsZV9ycnRyLAotICAgICAgICAgICAgICAgICBib29sIGVuYWJsZV90YXJnZXRfYml0
cmF0ZSwKLSAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGVfemVyb190YXJnZXRfYml0cmF0ZSkK
KyAgICAgICAgICAgICAgICAgYm9vbCBleHBlY3RfdGFyZ2V0X2JpdHJhdGUsCisgICAgICAgICAg
ICAgICAgIGJvb2wgZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGUsCisgICAgICAgICAgICAgICAg
IFZpZGVvRW5jb2RlckNvbmZpZzo6Q29udGVudFR5cGUgY29udGVudF90eXBlKQogICAgICAgOiBF
bmRUb0VuZFRlc3QodGVzdDo6Q2FsbFRlc3Q6OmtEZWZhdWx0VGltZW91dE1zKSwKICAgICAgICAg
ZW5hYmxlX3JydHJfKGVuYWJsZV9ycnRyKSwKLSAgICAgICAgZW5hYmxlX3RhcmdldF9iaXRyYXRl
XyhlbmFibGVfdGFyZ2V0X2JpdHJhdGUpLAorICAgICAgICBleHBlY3RfdGFyZ2V0X2JpdHJhdGVf
KGV4cGVjdF90YXJnZXRfYml0cmF0ZSksCiAgICAgICAgIGVuYWJsZV96ZXJvX3RhcmdldF9iaXRy
YXRlXyhlbmFibGVfemVyb190YXJnZXRfYml0cmF0ZSksCisgICAgICAgIGNvbnRlbnRfdHlwZV8o
Y29udGVudF90eXBlKSwKICAgICAgICAgc2VudF9ydGNwX3NyXygwKSwKICAgICAgICAgc2VudF9y
dGNwX3JyXygwKSwKICAgICAgICAgc2VudF9ydGNwX3JydHJfKDApLApAQCAtOTUsNyArOTksNyBA
QCBjbGFzcyBSdGNwWHJPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QgewogCiAg
ICAgaWYgKHNlbnRfcnRjcF9zcl8gPiBrTnVtUnRjcFJlcG9ydFBhY2tldHNUb09ic2VydmUgJiYK
ICAgICAgICAgc2VudF9ydGNwX3JyXyA+IGtOdW1SdGNwUmVwb3J0UGFja2V0c1RvT2JzZXJ2ZSAm
JgotICAgICAgICAoc2VudF9ydGNwX3RhcmdldF9iaXRyYXRlXyB8fCAhZW5hYmxlX3RhcmdldF9i
aXRyYXRlXykgJiYKKyAgICAgICAgKHNlbnRfcnRjcF90YXJnZXRfYml0cmF0ZV8gfHwgIWV4cGVj
dF90YXJnZXRfYml0cmF0ZV8pICYmCiAgICAgICAgIChzZW50X3plcm9fcnRjcF90YXJnZXRfYml0
cmF0ZV8gfHwgIWVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlXykpIHsKICAgICAgIGlmIChlbmFi
bGVfcnJ0cl8pIHsKICAgICAgICAgRVhQRUNUX0dUKHNlbnRfcnRjcF9ycnRyXywgMCk7CkBAIC0x
MDQsNyArMTA4LDcgQEAgY2xhc3MgUnRjcFhyT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6RW5kVG9F
bmRUZXN0IHsKICAgICAgICAgRVhQRUNUX0VRKHNlbnRfcnRjcF9ycnRyXywgMCk7CiAgICAgICAg
IEVYUEVDVF9FUShzZW50X3J0Y3BfZGxycl8sIDApOwogICAgICAgfQotICAgICAgRVhQRUNUX0VR
KGVuYWJsZV90YXJnZXRfYml0cmF0ZV8sIHNlbnRfcnRjcF90YXJnZXRfYml0cmF0ZV8pOworICAg
ICAgRVhQRUNUX0VRKGV4cGVjdF90YXJnZXRfYml0cmF0ZV8sIHNlbnRfcnRjcF90YXJnZXRfYml0
cmF0ZV8pOwogICAgICAgRVhQRUNUX0VRKGVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlXywgc2Vu
dF96ZXJvX3J0Y3BfdGFyZ2V0X2JpdHJhdGVfKTsKICAgICAgIG9ic2VydmF0aW9uX2NvbXBsZXRl
Xy5TZXQoKTsKICAgICB9CkBAIC0xNDQsMTAgKzE0OCw3IEBAIGNsYXNzIFJ0Y3BYck9ic2VydmVy
IDogcHVibGljIHRlc3Q6OkVuZFRvRW5kVGVzdCB7CiAgICAgICAoKnJlY2VpdmVfY29uZmlncylb
MF0uZGVjb2RlcnNbMF0udmlkZW9fZm9ybWF0ID0KICAgICAgICAgICBTZHBWaWRlb0Zvcm1hdChz
ZW5kX2NvbmZpZy0+cnRwLnBheWxvYWRfbmFtZSk7CiAgICAgfQotICAgIGlmIChlbmFibGVfdGFy
Z2V0X2JpdHJhdGVfKSB7Ci0gICAgICAvLyBUYXJnZXRCaXRyYXRlIG9ubHkgc2lnbmFsZWQgZm9y
IHNjcmVlbnNoYXJpbmcuCi0gICAgICBlbmNvZGVyX2NvbmZpZy0+Y29udGVudF90eXBlID0gVmlk
ZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1NjcmVlbjsKLSAgICB9CisgICAgZW5jb2Rl
cl9jb25maWctPmNvbnRlbnRfdHlwZSA9IGNvbnRlbnRfdHlwZV87CiAgICAgKCpyZWNlaXZlX2Nv
bmZpZ3MpWzBdLnJ0cC5ydGNwX21vZGUgPSBSdGNwTW9kZTo6a1JlZHVjZWRTaXplOwogICAgICgq
cmVjZWl2ZV9jb25maWdzKVswXS5ydHAucnRjcF94ci5yZWNlaXZlcl9yZWZlcmVuY2VfdGltZV9y
ZXBvcnQgPQogICAgICAgICBlbmFibGVfcnJ0cl87CkBAIC0xNjIsNTAgKzE2Myw2NSBAQCBjbGFz
cyBSdGNwWHJPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QgewogCiAgIHJ0Yzo6
Q3JpdGljYWxTZWN0aW9uIGNyaXRfOwogICBjb25zdCBib29sIGVuYWJsZV9ycnRyXzsKLSAgY29u
c3QgYm9vbCBlbmFibGVfdGFyZ2V0X2JpdHJhdGVfOworICBjb25zdCBib29sIGV4cGVjdF90YXJn
ZXRfYml0cmF0ZV87CiAgIGNvbnN0IGJvb2wgZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGVfOwor
ICBjb25zdCBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlIGNvbnRlbnRfdHlwZV87CiAg
IGludCBzZW50X3J0Y3Bfc3JfOwogICBpbnQgc2VudF9ydGNwX3JyXyBSVENfR1VBUkRFRF9CWSgm
Y3JpdF8pOwogICBpbnQgc2VudF9ydGNwX3JydHJfIFJUQ19HVUFSREVEX0JZKCZjcml0Xyk7CiAg
IGJvb2wgc2VudF9ydGNwX3RhcmdldF9iaXRyYXRlXyBSVENfR1VBUkRFRF9CWSgmY3JpdF8pOwog
ICBib29sIHNlbnRfemVyb19ydGNwX3RhcmdldF9iaXRyYXRlXyBSVENfR1VBUkRFRF9CWSgmY3Jp
dF8pOwogICBpbnQgc2VudF9ydGNwX2RscnJfOwotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWcgZm9yd2FyZF90cmFuc3BvcnRfY29uZmlnXzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlv
ckNvbmZpZyBmb3J3YXJkX3RyYW5zcG9ydF9jb25maWdfOwogICBTaW11bGF0ZWROZXR3b3JrKiBz
ZW5kX3NpbXVsYXRlZF9uZXR3b3JrXzsKIH07CiAKIFRFU1RfRihFeHRlbmRlZFJlcG9ydHNFbmRU
b0VuZFRlc3QsCiAgICAgICAgVGVzdEV4dGVuZGVkUmVwb3J0c1dpdGhScnRyV2l0aG91dFRhcmdl
dEJpdHJhdGUpIHsKLSAgUnRjcFhyT2JzZXJ2ZXIgdGVzdCgvKmVuYWJsZV9ycnRyPSovdHJ1ZSwg
LyplbmFibGVfdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAv
KmVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlPSovZmFsc2UpOworICBSdGNwWHJPYnNlcnZlciB0
ZXN0KC8qZW5hYmxlX3JydHI9Ki90cnVlLCAvKmV4cGVjdF90YXJnZXRfYml0cmF0ZT0qL2ZhbHNl
LAorICAgICAgICAgICAgICAgICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9m
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRU
eXBlOjprUmVhbHRpbWVWaWRlbyk7CiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KIAogVEVTVF9G
KEV4dGVuZGVkUmVwb3J0c0VuZFRvRW5kVGVzdCwKICAgICAgICBUZXN0RXh0ZW5kZWRSZXBvcnRz
V2l0aG91dFJydHJXaXRob3V0VGFyZ2V0Qml0cmF0ZSkgewotICBSdGNwWHJPYnNlcnZlciB0ZXN0
KC8qZW5hYmxlX3JydHI9Ki9mYWxzZSwgLyplbmFibGVfdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAvKmVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlPSovZmFs
c2UpOworICBSdGNwWHJPYnNlcnZlciB0ZXN0KC8qZW5hYmxlX3JydHI9Ki9mYWxzZSwgLypleHBl
Y3RfdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAvKmVuYWJs
ZV96ZXJvX3RhcmdldF9iaXRyYXRlPSovZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgVmlk
ZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1JlYWx0aW1lVmlkZW8pOwogICBSdW5CYXNl
VGVzdCgmdGVzdCk7CiB9CiAKIFRFU1RfRihFeHRlbmRlZFJlcG9ydHNFbmRUb0VuZFRlc3QsCiAg
ICAgICAgVGVzdEV4dGVuZGVkUmVwb3J0c1dpdGhScnRyV2l0aFRhcmdldEJpdHJhdGUpIHsKLSAg
UnRjcFhyT2JzZXJ2ZXIgdGVzdCgvKmVuYWJsZV9ycnRyPSovdHJ1ZSwgLyplbmFibGVfdGFyZ2V0
X2JpdHJhdGU9Ki90cnVlLAotICAgICAgICAgICAgICAgICAgICAgIC8qZW5hYmxlX3plcm9fdGFy
Z2V0X2JpdHJhdGU9Ki9mYWxzZSk7CisgIFJ0Y3BYck9ic2VydmVyIHRlc3QoLyplbmFibGVfcnJ0
cj0qL3RydWUsIC8qZXhwZWN0X3RhcmdldF9iaXRyYXRlPSovdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAvKmVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlPSovZmFsc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1NjcmVlbik7CiAg
IFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KIAogVEVTVF9GKEV4dGVuZGVkUmVwb3J0c0VuZFRvRW5k
VGVzdCwKICAgICAgICBUZXN0RXh0ZW5kZWRSZXBvcnRzV2l0aG91dFJydHJXaXRoVGFyZ2V0Qml0
cmF0ZSkgewotICBSdGNwWHJPYnNlcnZlciB0ZXN0KC8qZW5hYmxlX3JydHI9Ki9mYWxzZSwgLypl
bmFibGVfdGFyZ2V0X2JpdHJhdGU9Ki90cnVlLAotICAgICAgICAgICAgICAgICAgICAgIC8qZW5h
YmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSk7CisgIFJ0Y3BYck9ic2VydmVyIHRlc3Qo
LyplbmFibGVfcnJ0cj0qL2ZhbHNlLCAvKmV4cGVjdF90YXJnZXRfYml0cmF0ZT0qL3RydWUsCisg
ICAgICAgICAgICAgICAgICAgICAgLyplbmFibGVfemVyb190YXJnZXRfYml0cmF0ZT0qL2ZhbHNl
LAorICAgICAgICAgICAgICAgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZzo6Q29udGVudFR5cGU6
OmtTY3JlZW4pOworICBSdW5CYXNlVGVzdCgmdGVzdCk7Cit9CisKK1RFU1RfRihFeHRlbmRlZFJl
cG9ydHNFbmRUb0VuZFRlc3QsCisgICAgICAgVGVzdEV4dGVuZGVkUmVwb3J0c1dpdGhvdXRScnRy
V2l0aFRhcmdldEJpdHJhdGVGcm9tRmllbGRUcmlhbCkgeworICB0ZXN0OjpTY29wZWRGaWVsZFRy
aWFscyBmaWVsZF90cmlhbHMoIldlYlJUQy1UYXJnZXQtQml0cmF0ZS1SdGNwL0VuYWJsZWQvIik7
CisgIFJ0Y3BYck9ic2VydmVyIHRlc3QoLyplbmFibGVfcnJ0cj0qL2ZhbHNlLCAvKmV4cGVjdF90
YXJnZXRfYml0cmF0ZT0qL3RydWUsCisgICAgICAgICAgICAgICAgICAgICAgLyplbmFibGVfemVy
b190YXJnZXRfYml0cmF0ZT0qL2ZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIFZpZGVvRW5j
b2RlckNvbmZpZzo6Q29udGVudFR5cGU6OmtSZWFsdGltZVZpZGVvKTsKICAgUnVuQmFzZVRlc3Qo
JnRlc3QpOwogfQogCiBURVNUX0YoRXh0ZW5kZWRSZXBvcnRzRW5kVG9FbmRUZXN0LAogICAgICAg
IFRlc3RFeHRlbmRlZFJlcG9ydHNDYW5TaWduYWxaZXJvVGFyZ2V0Qml0cmF0ZSkgewotICBSdGNw
WHJPYnNlcnZlciB0ZXN0KC8qZW5hYmxlX3JydHI9Ki9mYWxzZSwgLyplbmFibGVfdGFyZ2V0X2Jp
dHJhdGU9Ki90cnVlLAotICAgICAgICAgICAgICAgICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0
X2JpdHJhdGU9Ki90cnVlKTsKKyAgUnRjcFhyT2JzZXJ2ZXIgdGVzdCgvKmVuYWJsZV9ycnRyPSov
ZmFsc2UsIC8qZXhwZWN0X3RhcmdldF9iaXRyYXRlPSovdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAvKmVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlPSovdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprU2NyZWVuKTsKICAgUnVu
QmFzZVRlc3QoJnRlc3QpOwogfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2Vu
ZF90ZXN0cy9mZWNfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2ZlY190ZXN0cy5jYwppbmRleCAwMzAwZDEy
ZjhiY2FjNmQyYWEyOGJlYmZmZDEyNTE4Njg5NDM4M2YzLi4yYzUzY2NjN2NiZWMzNDA5OWQ3ODgw
OWZkNTdmNjZmNDQxYTY5M2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2ZlY190ZXN0cy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9f
ZW5kX3Rlc3RzL2ZlY190ZXN0cy5jYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAi
YXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9m
dW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJjYWxsL2Zha2VfbmV0
d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29yay5oIgogI2luY2x1
ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGRlY29kZXJmYWN0b3J5LmgiCkBAIC0xNiw3ICsxNyw2
IEBACiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3Zw
OC5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90
cmlhbC5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3QvcnRjcF9wYWNrZXRfcGFy
c2VyLmgiCiAKQEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFzcyBGbGV4ZmVjUmVuZGVyT2JzZXJ2ZXIg
OiBwdWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0LAogICAgICAgQ2FsbCogc2VuZGVyX2NhbGwpIG92
ZXJyaWRlIHsKICAgICAvLyBBdCBsb3cgUlRUICg8IGtMb3dSdHROYWNrTXMpIC0+IE5BQ0sgb25s
eSwgbm8gRkVDLgogICAgIGNvbnN0IGludCBrTmV0d29ya0RlbGF5TXMgPSAxMDA7Ci0gICAgRGVm
YXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgICBCdWlsdEluTmV0d29ya0Jl
aGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgICBjb25maWcucXVldWVfZGVsYXlfbXMgPSBrTmV0d29y
a0RlbGF5TXM7CiAgICAgcmV0dXJuIG5ldyB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQoCiAgICAgICAg
IHRhc2tfcXVldWUsIHNlbmRlcl9jYWxsLCB0aGlzLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtT
ZW5kZXIsCkBAIC00MjEsNyArNDIxLDcgQEAgVEVTVF9GKEZlY0VuZFRvRW5kVGVzdCwgUmVjZWl2
ZWRVbHBmZWNQYWNrZXRzTm90TmFja2VkKSB7CiAgICAgICAvLyBBdCBsb3cgUlRUICg8IGtMb3dS
dHROYWNrTXMpIC0+IE5BQ0sgb25seSwgbm8gRkVDLgogICAgICAgLy8gQ29uZmlndXJlIHNvbWUg
bmV0d29yayBkZWxheS4KICAgICAgIGNvbnN0IGludCBrTmV0d29ya0RlbGF5TXMgPSA1MDsKLSAg
ICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgICAgICBCdWlsdElu
TmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgICAgIGNvbmZpZy5xdWV1ZV9kZWxheV9t
cyA9IGtOZXR3b3JrRGVsYXlNczsKICAgICAgIHJldHVybiBuZXcgdGVzdDo6UGFja2V0VHJhbnNw
b3J0KAogICAgICAgICAgIHRhc2tfcXVldWUsIHNlbmRlcl9jYWxsLCB0aGlzLCB0ZXN0OjpQYWNr
ZXRUcmFuc3BvcnQ6OmtTZW5kZXIsCkBAIC00MzMsOSArNDMzLDEwIEBAIFRFU1RfRihGZWNFbmRU
b0VuZFRlc3QsIFJlY2VpdmVkVWxwZmVjUGFja2V0c05vdE5hY2tlZCkgewogCiAgICAgLy8gVE9E
Tyhob2xtZXIpOiBJbnZlc3RpZ2F0ZSB3aHkgd2UgZG9uJ3Qgc2VuZCBGRUMgcGFja2V0cyB3aGVu
IHRoZSBiaXRyYXRlCiAgICAgLy8gaXMgMTAga2Jwcy4KLSAgICB2b2lkIE1vZGlmeVNlbmRlckNh
bGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpIG92ZXJyaWRlIHsKKyAgICB2b2lkIE1vZGlm
eVNlbmRlckJpdHJhdGVDb25maWcoCisgICAgICAgIEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0
ZV9jb25maWcpIG92ZXJyaWRlIHsKICAgICAgIGNvbnN0IGludCBrTWluQml0cmF0ZUJwcyA9IDMw
MDAwOwotICAgICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5taW5fYml0cmF0ZV9icHMgPSBrTWlu
Qml0cmF0ZUJwczsKKyAgICAgIGJpdHJhdGVfY29uZmlnLT5taW5fYml0cmF0ZV9icHMgPSBrTWlu
Qml0cmF0ZUJwczsKICAgICB9CiAKICAgICB2b2lkIE1vZGlmeVZpZGVvQ29uZmlncygKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2Vu
ZF90b19lbmRfdGVzdHMvZnJhbWVfZW5jcnlwdGlvbl90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvZnJhbWVf
ZW5jcnlwdGlvbl90ZXN0cy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2Q3YjQ3ODQ5MzU5NDAxMmFmYWMxN2Nm
MzU2M2U5N2VjNDE0OGY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9mcmFtZV9lbmNyeXB0
aW9uX3Rlc3RzLmNjCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNs
dWRlICJhcGkvdGVzdC9mYWtlX2ZyYW1lX2RlY3J5cHRvci5oIgorI2luY2x1ZGUgImFwaS90ZXN0
L2Zha2VfZnJhbWVfZW5jcnlwdG9yLmgiCisjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFs
ZGVjb2RlcmZhY3RvcnkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA4L2luY2x1ZGUvdnA4LmgiCisjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKKyNpbmNsdWRl
ICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCituYW1lc3Bh
Y2Ugd2VicnRjIHsKKworY2xhc3MgRnJhbWVFbmNyeXB0aW9uRW5kVG9FbmRUZXN0IDogcHVibGlj
IHRlc3Q6OkNhbGxUZXN0IHsKKyBwdWJsaWM6CisgIEZyYW1lRW5jcnlwdGlvbkVuZFRvRW5kVGVz
dCgpID0gZGVmYXVsdDsKKworIHByaXZhdGU6CisgIC8vIEdlbmVyaWNEZXNjcmlwdG9yIGlzIHJl
cXVpcmVkIGZvciBGcmFtZUVuY3J5cHRpb24gdG8gd29yay4KKyAgdGVzdDo6U2NvcGVkRmllbGRU
cmlhbHMgZmllbGRfdHJpYWxzX3siV2ViUlRDLUdlbmVyaWNEZXNjcmlwdG9yL0VuYWJsZWQvIn07
Cit9OworCisvLyBWYWxpZGF0ZXMgdGhhdCBwYXlsb2FkcyBjYW5ub3QgYmUgc2VudCB3aXRob3V0
IGEgZnJhbWUgZW5jcnlwdG9yIGFuZCBmcmFtZQorLy8gZGVjcnlwdG9yIGF0dGFjaGVkLgorVEVT
VF9GKEZyYW1lRW5jcnlwdGlvbkVuZFRvRW5kVGVzdCwgUmVxdWlyZUZyYW1lRW5jcnlwdGlvbkVu
Zm9yY2VkKSB7CisgIGNsYXNzIERlY3J5cHRlZEZyYW1lT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6
RW5kVG9FbmRUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHJ0
Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPFZpZGVvRnJhbWU+IHsKKyAgIHB1YmxpYzoKKyAgICBEZWNy
eXB0ZWRGcmFtZU9ic2VydmVyKCkKKyAgICAgICAgOiBFbmRUb0VuZFRlc3Qoa0RlZmF1bHRUaW1l
b3V0TXMpLAorICAgICAgICAgIGVuY29kZXJfZmFjdG9yeV8oW10oKSB7IHJldHVybiBWUDhFbmNv
ZGVyOjpDcmVhdGUoKTsgfSkge30KKworICAgcHJpdmF0ZToKKyAgICB2b2lkIE1vZGlmeVZpZGVv
Q29uZmlncygKKyAgICAgICAgVmlkZW9TZW5kU3RyZWFtOjpDb25maWcqIHNlbmRfY29uZmlnLAor
ICAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1JlY2VpdmVTdHJlYW06OkNvbmZpZz4qIHJlY2VpdmVf
Y29uZmlncywKKyAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnKiBlbmNvZGVyX2NvbmZpZykgb3Zl
cnJpZGUgeworICAgICAgLy8gVXNlIFZQOCBpbnN0ZWFkIG9mIEZBS0UuCisgICAgICBzZW5kX2Nv
bmZpZy0+ZW5jb2Rlcl9zZXR0aW5ncy5lbmNvZGVyX2ZhY3RvcnkgPSAmZW5jb2Rlcl9mYWN0b3J5
XzsKKyAgICAgIHNlbmRfY29uZmlnLT5ydHAucGF5bG9hZF9uYW1lID0gIlZQOCI7CisgICAgICBz
ZW5kX2NvbmZpZy0+cnRwLnBheWxvYWRfdHlwZSA9IGtWaWRlb1NlbmRQYXlsb2FkVHlwZTsKKyAg
ICAgIHNlbmRfY29uZmlnLT5mcmFtZV9lbmNyeXB0b3IgPSBuZXcgRmFrZUZyYW1lRW5jcnlwdG9y
KCk7CisgICAgICBzZW5kX2NvbmZpZy0+Y3J5cHRvX29wdGlvbnMuc2ZyYW1lLnJlcXVpcmVfZnJh
bWVfZW5jcnlwdGlvbiA9IHRydWU7CisgICAgICBlbmNvZGVyX2NvbmZpZy0+Y29kZWNfdHlwZSA9
IGtWaWRlb0NvZGVjVlA4OworICAgICAgVmlkZW9SZWNlaXZlU3RyZWFtOjpEZWNvZGVyIGRlY29k
ZXIgPQorICAgICAgICAgIHRlc3Q6OkNyZWF0ZU1hdGNoaW5nRGVjb2Rlcigqc2VuZF9jb25maWcp
OworICAgICAgZGVjb2Rlci5kZWNvZGVyX2ZhY3RvcnkgPSAmZGVjb2Rlcl9mYWN0b3J5XzsKKyAg
ICAgIGZvciAoYXV0byYgcmVjdl9jb25maWcgOiAqcmVjZWl2ZV9jb25maWdzKSB7CisgICAgICAg
IHJlY3ZfY29uZmlnLmRlY29kZXJzLmNsZWFyKCk7CisgICAgICAgIHJlY3ZfY29uZmlnLmRlY29k
ZXJzLnB1c2hfYmFjayhkZWNvZGVyKTsKKyAgICAgICAgcmVjdl9jb25maWcucmVuZGVyZXIgPSB0
aGlzOworICAgICAgICByZWN2X2NvbmZpZy5mcmFtZV9kZWNyeXB0b3IgPSBuZXcgRmFrZUZyYW1l
RGVjcnlwdG9yKCk7CisgICAgICAgIHJlY3ZfY29uZmlnLmNyeXB0b19vcHRpb25zLnNmcmFtZS5y
ZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24gPSB0cnVlOworICAgICAgfQorICAgIH0KKworICAgIC8v
IFZhbGlkYXRlIHRoYXQgcm90YXRpb24gaXMgcHJlc2VydmVkLgorICAgIHZvaWQgT25GcmFtZShj
b25zdCBWaWRlb0ZyYW1lJiB2aWRlb19mcmFtZSkgb3ZlcnJpZGUgeworICAgICAgb2JzZXJ2YXRp
b25fY29tcGxldGVfLlNldCgpOworICAgIH0KKworICAgIHZvaWQgUGVyZm9ybVRlc3QoKSBvdmVy
cmlkZSB7CisgICAgICBFWFBFQ1RfVFJVRShXYWl0KCkpCisgICAgICAgICAgPDwgIlRpbWVkIG91
dCB3YWl0aW5nIGZvciBkZWNyeXB0ZWQgZnJhbWVzIHRvIGJlIHJlbmRlcmVkLiI7CisgICAgfQor
CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gZW5jb2Rlcl87CisgICAgdGVzdDo6
RnVuY3Rpb25WaWRlb0VuY29kZXJGYWN0b3J5IGVuY29kZXJfZmFjdG9yeV87CisgICAgSW50ZXJu
YWxEZWNvZGVyRmFjdG9yeSBkZWNvZGVyX2ZhY3RvcnlfOworICB9IHRlc3Q7CisKKyAgUnVuQmFz
ZVRlc3QoJnRlc3QpOworfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90
ZXN0cy9oaXN0b2dyYW1fdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2hpc3RvZ3JhbV90ZXN0cy5jYwppbmRl
eCBhNGFhMGM4MTBhOTYyOTVhOWYwMGM4ZjNiZWMwOGQ3NDk4ZmY2MjJlLi4zMTI5MjRjOTg2Yjg2
MmM4MWFhZTYwMGNhMDY3YTZhOTFlNWU0ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2hpc3RvZ3Jh
bV90ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2hpc3RvZ3JhbV90ZXN0cy5jYwpAQCAtOSwxMCArOSwx
MCBAQAogICovCiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAi
YXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgogI2luY2x1
ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKICNpbmNsdWRlICJ0ZXN0L2Nh
bGxfdGVzdC5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2Vu
ZF90b19lbmRfdGVzdHMvbXVsdGlfY29kZWNfcmVjZWl2ZV90ZXN0cy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvbXVs
dGlfY29kZWNfcmVjZWl2ZV90ZXN0cy5jYwppbmRleCBlMTNiYzM1MWNhMWNjNzA3MzhhNDFiYzMw
YTMzMmZkMWRjN2I5ODdhLi5jNThmMGZlMTZhOGUyZWFkMDU3MDlhODYxMjdiMzlkNTc0YzIzZDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92
aWRlby9lbmRfdG9fZW5kX3Rlc3RzL211bHRpX2NvZGVjX3JlY2VpdmVfdGVzdHMuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2Vu
ZF90ZXN0cy9tdWx0aV9jb2RlY19yZWNlaXZlX3Rlc3RzLmNjCkBAIC05LDEzICs5LDEzIEBACiAg
Ki8KIAogI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsYXRlZF9uZXR3b3JrLmgiCisjaW5jbHVkZSAi
YXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25l
dHdvcmsuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9pbmNs
dWRlL2gyNjQuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2lu
Y2x1ZGUvdnA4LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9p
bmNsdWRlL3ZwOS5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCi0jaW5jbHVkZSAidGVz
dC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNTEsMjkgKzUxLDYgQEAgaW50IFJlbW92ZU9s
ZGVyT3JFcXVhbCh1aW50MzJfdCB0aW1lc3RhbXAsIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiogdGlt
ZXN0YW1wcykgewogICByZXR1cm4gbnVtX3JlbW92ZWQ7CiB9CiAKLWNsYXNzIFZpZGVvU3RyZWFt
RmFjdG9yeVRlc3QKLSAgICA6IHB1YmxpYyBWaWRlb0VuY29kZXJDb25maWc6OlZpZGVvU3RyZWFt
RmFjdG9yeUludGVyZmFjZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBWaWRlb1N0cmVhbUZhY3Rv
cnlUZXN0KHNpemVfdCBudW1fdGVtcG9yYWxfbGF5ZXJzKQotICAgICAgOiBudW1fdGVtcG9yYWxf
bGF5ZXJzXyhudW1fdGVtcG9yYWxfbGF5ZXJzKSB7fQotCi0gcHJpdmF0ZToKLSAgc3RkOjp2ZWN0
b3I8VmlkZW9TdHJlYW0+IENyZWF0ZUVuY29kZXJTdHJlYW1zKAotICAgICAgaW50IHdpZHRoLAot
ICAgICAgaW50IGhlaWdodCwKLSAgICAgIGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZyYgZW5jb2Rl
cl9jb25maWcpIG92ZXJyaWRlIHsKLSAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFt
cyA9Ci0gICAgICAgIHRlc3Q6OkNyZWF0ZVZpZGVvU3RyZWFtcyh3aWR0aCwgaGVpZ2h0LCBlbmNv
ZGVyX2NvbmZpZyk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVuY29kZXJfY29uZmln
Lm51bWJlcl9vZl9zdHJlYW1zOyArK2kpCi0gICAgICBzdHJlYW1zW2ldLm51bV90ZW1wb3JhbF9s
YXllcnMgPSBudW1fdGVtcG9yYWxfbGF5ZXJzXzsKLQotICAgIHJldHVybiBzdHJlYW1zOwotICB9
Ci0KLSAgY29uc3Qgc2l6ZV90IG51bV90ZW1wb3JhbF9sYXllcnNfOwotfTsKLQogY2xhc3MgRnJh
bWVPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpSdHBSdGNwT2JzZXJ2ZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPFZpZGVvRnJhbWU+IHsKICBw
dWJsaWM6CkBAIC0xNTMsMTggKzEzMCwxNiBAQCBjbGFzcyBNdWx0aUNvZGVjUmVjZWl2ZVRlc3Qg
OiBwdWJsaWMgdGVzdDo6Q2FsbFRlc3QgewogICAgICAgICAgICZ0YXNrX3F1ZXVlXywgc2VuZGVy
X2NhbGxfLmdldCgpLCAmb2JzZXJ2ZXJfLAogICAgICAgICAgIHRlc3Q6OlBhY2tldFRyYW5zcG9y
dDo6a1NlbmRlciwga1BheWxvYWRUeXBlTWFwLAogICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PEZha2VOZXR3b3JrUGlwZT4oCi0gICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2Nr
KCksCi0gICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAot
ICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSkpOwor
ICAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1
ZTxTaW11bGF0ZWROZXR3b3JrPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpKSk7CiAgICAgICBzZW5k
X3RyYW5zcG9ydF8tPlNldFJlY2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5SZWNlaXZlcigpKTsKIAog
ICAgICAgcmVjZWl2ZV90cmFuc3BvcnRfLnJlc2V0KG5ldyB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQo
CiAgICAgICAgICAgJnRhc2tfcXVldWVfLCByZWNlaXZlcl9jYWxsXy5nZXQoKSwgJm9ic2VydmVy
XywKICAgICAgICAgICB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtSZWNlaXZlciwga1BheWxvYWRU
eXBlTWFwLAogICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCi0g
ICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCi0gICAgICAgICAgICAgIGFi
c2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgRGVm
YXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSkpOworICAgICAgICAgICAgICBDbG9jazo6
R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3
b3JrQmVoYXZpb3JDb25maWcoKSkpKSk7CiAgICAgICByZWNlaXZlX3RyYW5zcG9ydF8tPlNldFJl
Y2VpdmVyKHNlbmRlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CiAgICAgfSk7CiAgIH0KQEAgLTIxOSw5
ICsxOTQsOSBAQCB2b2lkIE11bHRpQ29kZWNSZWNlaXZlVGVzdDo6Q29uZmlndXJlRW5jb2Rlcihj
b25zdCBDb2RlY0NvbmZpZyYgY29uZmlnKSB7CiAgICAgICBQYXlsb2FkTmFtZVRvUGF5bG9hZFR5
cGUoY29uZmlnLnBheWxvYWRfbmFtZSk7CiAgIEdldFZpZGVvRW5jb2RlckNvbmZpZygpLT5jb2Rl
Y190eXBlID0KICAgICAgIFBheWxvYWRTdHJpbmdUb0NvZGVjVHlwZShjb25maWcucGF5bG9hZF9u
YW1lKTsKLSAgR2V0VmlkZW9FbmNvZGVyQ29uZmlnKCktPnZpZGVvX3N0cmVhbV9mYWN0b3J5ID0K
LSAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8VmlkZW9TdHJlYW1GYWN0b3J5VGVzdD4o
Ci0gICAgICAgICAgY29uZmlnLm51bV90ZW1wb3JhbF9sYXllcnMpOworICBFWFBFQ1RfRVEoMXUs
IEdldFZpZGVvRW5jb2RlckNvbmZpZygpLT5zaW11bGNhc3RfbGF5ZXJzLnNpemUoKSk7CisgIEdl
dFZpZGVvRW5jb2RlckNvbmZpZygpLT5zaW11bGNhc3RfbGF5ZXJzWzBdLm51bV90ZW1wb3JhbF9s
YXllcnMgPQorICAgICAgY29uZmlnLm51bV90ZW1wb3JhbF9sYXllcnM7CiB9CiAKIHZvaWQgTXVs
dGlDb2RlY1JlY2VpdmVUZXN0OjpSdW5UZXN0V2l0aENvZGVjcygKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVz
dHMvbXVsdGlfc3RyZWFtX3Rlc3Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvbXVsdGlfc3RyZWFtX3Rlc3Rlci5j
YwppbmRleCA3ZDY2OTc2MDAxYWRiMmZkNDU2NDY3Y2U3ZjRjYjc2ZWJiZjI1MmEyLi41ZDVkYTY1
Y2E4ZjdmODA1MTJlY2MwZjZhODBkZDU2ZWE1ZWZiZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL211
bHRpX3N0cmVhbV90ZXN0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdGVyLmNj
CkBAIC0xNSw2ICsxNSw4IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL3Rl
c3Qvc2ltdWxhdGVkX25ldHdvcmsuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlv
bl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25l
dHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKICNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgpAQCAtMjIsNyArMjQs
NiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92
cDguaCIKICNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgogI2luY2x1ZGUgInRlc3QvZW5jb2Rl
cl9zZXR0aW5ncy5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC01NCw2ICs1NSw4IEBAIHZvaWQgTXVs
dGlTdHJlYW1UZXN0ZXI6OlJ1blRlc3QoKSB7CiAgIHRlc3Q6OkZyYW1lR2VuZXJhdG9yQ2FwdHVy
ZXIqIGZyYW1lX2dlbmVyYXRvcnNba051bVN0cmVhbXNdOwogICB0ZXN0OjpGdW5jdGlvblZpZGVv
RW5jb2RlckZhY3RvcnkgZW5jb2Rlcl9mYWN0b3J5KAogICAgICAgW10oKSB7IHJldHVybiBWUDhF
bmNvZGVyOjpDcmVhdGUoKTsgfSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxv
Y2F0b3JGYWN0b3J5PiBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0KKyAgICAgIENyZWF0ZUJ1
aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCk7CiAgIEludGVybmFsRGVjb2RlckZh
Y3RvcnkgZGVjb2Rlcl9mYWN0b3J5OwogCiAgIHRhc2tfcXVldWVfLT5TZW5kVGFzayhbJl0oKSB7
CkBAIC03NSw2ICs3OCw4IEBAIHZvaWQgTXVsdGlTdHJlYW1UZXN0ZXI6OlJ1blRlc3QoKSB7CiAg
ICAgICBWaWRlb1NlbmRTdHJlYW06OkNvbmZpZyBzZW5kX2NvbmZpZyhzZW5kZXJfdHJhbnNwb3J0
LmdldCgpKTsKICAgICAgIHNlbmRfY29uZmlnLnJ0cC5zc3Jjcy5wdXNoX2JhY2soc3NyYyk7CiAg
ICAgICBzZW5kX2NvbmZpZy5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9ICZlbmNv
ZGVyX2ZhY3Rvcnk7CisgICAgICBzZW5kX2NvbmZpZy5lbmNvZGVyX3NldHRpbmdzLmJpdHJhdGVf
YWxsb2NhdG9yX2ZhY3RvcnkgPQorICAgICAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnku
Z2V0KCk7CiAgICAgICBzZW5kX2NvbmZpZy5ydHAucGF5bG9hZF9uYW1lID0gIlZQOCI7CiAgICAg
ICBzZW5kX2NvbmZpZy5ydHAucGF5bG9hZF90eXBlID0ga1ZpZGVvUGF5bG9hZFR5cGU7CiAgICAg
ICBWaWRlb0VuY29kZXJDb25maWcgZW5jb2Rlcl9jb25maWc7CkBAIC0xNDMsOSArMTQ4LDkgQEAg
dGVzdDo6RGlyZWN0VHJhbnNwb3J0KiBNdWx0aVN0cmVhbVRlc3Rlcjo6Q3JlYXRlU2VuZFRyYW5z
cG9ydCgKICAgICBDYWxsKiBzZW5kZXJfY2FsbCkgewogICByZXR1cm4gbmV3IHRlc3Q6OkRpcmVj
dFRyYW5zcG9ydCgKICAgICAgIHRhc2tfcXVldWUsCi0gICAgICBhYnNsOjptYWtlX3VuaXF1ZTxG
YWtlTmV0d29ya1BpcGU+KENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5l
dHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVm
YXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PEZha2VOZXR3b3JrUGlwZT4oCisgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwK
KyAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPihCdWlsdEluTmV0
d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAgIHNlbmRlcl9jYWxsLCBwYXlsb2FkX3R5cGVf
bWFwXyk7CiB9CiAKQEAgLTE1NCw5ICsxNTksOSBAQCB0ZXN0OjpEaXJlY3RUcmFuc3BvcnQqIE11
bHRpU3RyZWFtVGVzdGVyOjpDcmVhdGVSZWNlaXZlVHJhbnNwb3J0KAogICAgIENhbGwqIHJlY2Vp
dmVyX2NhbGwpIHsKICAgcmV0dXJuIG5ldyB0ZXN0OjpEaXJlY3RUcmFuc3BvcnQoCiAgICAgICB0
YXNrX3F1ZXVlLAotICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9j
azo6R2V0UmVhbFRpbWVDbG9jaygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlv
bkNvbmZpZygpKSksCisgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAor
ICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCisgICAgICAgICAgYWJzbDo6bWFr
ZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygp
KSksCiAgICAgICByZWNlaXZlcl9jYWxsLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiB9CiB9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL211bHRpX3N0cmVhbV90ZXN0cy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90
b19lbmRfdGVzdHMvbXVsdGlfc3RyZWFtX3Rlc3RzLmNjCmluZGV4IGRiZWFkMjQ1NjRmZTBkNzBi
ZTAwMDFmYWYxMjU5MjYzOWNhYjRjNWIuLjljNzU0ZmI3MGE1N2RlNjdmZDAyYTA0NDIwZTg3ZjE5
NjVjMzVkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvbXVsdGlfc3RyZWFtX3Rlc3RzLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19l
bmRfdGVzdHMvbXVsdGlfc3RyZWFtX3Rlc3RzLmNjCkBAIC0zMCwxMCArMzAsNyBAQCBURVNUX0Yo
TXVsdGlTdHJlYW1FbmRUb0VuZFRlc3QsIFNlbmRzQW5kUmVjZWl2ZXNNdWx0aXBsZVN0cmVhbXMp
IHsKICAgICBWaWRlb091dHB1dE9ic2VydmVyKGNvbnN0IE11bHRpU3RyZWFtVGVzdGVyOjpDb2Rl
Y1NldHRpbmdzJiBzZXR0aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNz
cmMsCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0OjpGcmFtZUdlbmVyYXRvckNhcHR1cmVy
KiogZnJhbWVfZ2VuZXJhdG9yKQotICAgICAgICA6IHNldHRpbmdzXyhzZXR0aW5ncyksCi0gICAg
ICAgICAgc3NyY18oc3NyYyksCi0gICAgICAgICAgZnJhbWVfZ2VuZXJhdG9yXyhmcmFtZV9nZW5l
cmF0b3IpLAotICAgICAgICAgIGRvbmVfKGZhbHNlLCBmYWxzZSkge30KKyAgICAgICAgOiBzZXR0
aW5nc18oc2V0dGluZ3MpLCBzc3JjXyhzc3JjKSwgZnJhbWVfZ2VuZXJhdG9yXyhmcmFtZV9nZW5l
cmF0b3IpIHt9CiAKICAgICB2b2lkIE9uRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9fZnJh
bWUpIG92ZXJyaWRlIHsKICAgICAgIEVYUEVDVF9FUShzZXR0aW5nc18ud2lkdGgsIHZpZGVvX2Zy
YW1lLndpZHRoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9uZXR3b3JrX3N0YXRlX3Rlc3RzLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3Rv
X2VuZF90ZXN0cy9uZXR3b3JrX3N0YXRlX3Rlc3RzLmNjCmluZGV4IDkzNzc3N2Y2YjM0NzkyNzY1
MDY3MzlkMjVhMzg2OWMwY2VhNmMwYzguLmQ2NjYzNGExMzVmMzJhYTY2YmIwMzJmYTEzYmE5Zjdi
MTNkMjI0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvbmV0d29ya19zdGF0ZV90ZXN0cy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9f
ZW5kX3Rlc3RzL25ldHdvcmtfc3RhdGVfdGVzdHMuY2MKQEAgLTExOCw5ICsxMTgsOSBAQCB2b2lk
IE5ldHdvcmtTdGF0ZUVuZFRvRW5kVGVzdDo6VmVyaWZ5TmV3VmlkZW9SZWNlaXZlU3RyZWFtc1Jl
c3BlY3ROZXR3b3JrU3RhdGUoCiAgICAgcmVjZWl2ZXJfY2FsbF8tPlNpZ25hbENoYW5uZWxOZXR3
b3JrU3RhdGUobmV0d29ya190b19icmluZ191cCwga05ldHdvcmtVcCk7CiAgICAgc2VuZGVyX3Ry
YW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4oCiAgICAg
ICAgICZ0YXNrX3F1ZXVlXywKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQ
aXBlPigKLSAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2Vf
dW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSksCisgICAgICAg
IGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oQ2xvY2s6OkdldFJlYWxUaW1lQ2xv
Y2soKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpt
YWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSksCiAg
ICAgICAgIHNlbmRlcl9jYWxsXy5nZXQoKSwgcGF5bG9hZF90eXBlX21hcF8pOwogICAgIHNlbmRl
cl90cmFuc3BvcnQtPlNldFJlY2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5SZWNlaXZlcigpKTsKICAg
ICBDcmVhdGVTZW5kQ29uZmlnKDEsIDAsIDAsIHNlbmRlcl90cmFuc3BvcnQuZ2V0KCkpOwpAQCAt
MTU4LDggKzE1OCw2IEBAIFRFU1RfRihOZXR3b3JrU3RhdGVFbmRUb0VuZFRlc3QsIFJlc3BlY3Rz
TmV0d29ya1N0YXRlKSB7CiAgICAgICAgIDogRW5kVG9FbmRUZXN0KGtEZWZhdWx0VGltZW91dE1z
KSwKICAgICAgICAgICBGYWtlRW5jb2RlcihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpKSwKICAg
ICAgICAgICB0YXNrX3F1ZXVlXyh0YXNrX3F1ZXVlKSwKLSAgICAgICAgICBlbmNvZGVkX2ZyYW1l
c18oZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgICBwYWNrZXRfZXZlbnRfKGZhbHNlLCBmYWxzZSks
CiAgICAgICAgICAgc2VuZGVyX2NhbGxfKG51bGxwdHIpLAogICAgICAgICAgIHJlY2VpdmVyX2Nh
bGxfKG51bGxwdHIpLAogICAgICAgICAgIGVuY29kZXJfZmFjdG9yeV8odGhpcyksCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRf
dG9fZW5kX3Rlc3RzL3Byb2JpbmdfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3Byb2JpbmdfdGVzdHMuY2MK
aW5kZXggN2RmZjY1N2FkMDM5N2NiZjk2MzQwYTk0Y2Y0MzdmNjA2MjBjMGM5NC4uNzk3MGQ0YTFi
Zjc5ODliOTVmZmM2OWQzZjc2Y2I5YjI5NmJlYjc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9wcm9i
aW5nX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcHJvYmluZ190ZXN0cy5jYwpAQCAtNDEsOCArNDEs
OCBAQCBjbGFzcyBQcm9iaW5nVGVzdCA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QgewogICAg
ICAgICBzdGF0ZV8oMCksCiAgICAgICAgIHNlbmRlcl9jYWxsXyhudWxscHRyKSB7fQogCi0gIHZv
aWQgTW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZykgb3ZlcnJpZGUg
ewotICAgIGNvbmZpZy0+Yml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMgPSBzdGFydF9i
aXRyYXRlX2Jwc187CisgIHZvaWQgTW9kaWZ5U2VuZGVyQml0cmF0ZUNvbmZpZyhCaXRyYXRlQ29u
c3RyYWludHMqIGJpdHJhdGVfY29uZmlnKSBvdmVycmlkZSB7CisgICAgYml0cmF0ZV9jb25maWct
PnN0YXJ0X2JpdHJhdGVfYnBzID0gc3RhcnRfYml0cmF0ZV9icHNfOwogICB9CiAKICAgdm9pZCBP
bkNhbGxzQ3JlYXRlZChDYWxsKiBzZW5kZXJfY2FsbCwgQ2FsbCogcmVjZWl2ZXJfY2FsbCkgb3Zl
cnJpZGUgewpAQCAtMjIxLDcgKzIyMSw3IEBAIFRFU1RfUChQcm9iaW5nRW5kVG9FbmRUZXN0LCBQ
cm9iZU9uVmlkZW9FbmNvZGVyUmVjb25maWd1cmF0aW9uKSB7CiAgICAgICAgIHRlc3Q6OlNpbmds
ZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZyogdGFza19xdWV1ZSwKICAgICAgICAgQ2FsbCog
c2VuZGVyX2NhbGwpIG92ZXJyaWRlIHsKICAgICAgIGF1dG8gbmV0d29yayA9Ci0gICAgICAgICAg
YWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oRGVmYXVsdE5ldHdvcmtTaW11bGF0
aW9uQ29uZmlnKCkpOworICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdv
cms+KEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSk7CiAgICAgICBzZW5kX3NpbXVsYXRl
ZF9uZXR3b3JrXyA9IG5ldHdvcmsuZ2V0KCk7CiAgICAgICByZXR1cm4gbmV3IHRlc3Q6OlBhY2tl
dFRyYW5zcG9ydCgKICAgICAgICAgICB0YXNrX3F1ZXVlLCBzZW5kZXJfY2FsbCwgdGhpcywgdGVz
dDo6UGFja2V0VHJhbnNwb3J0OjprU2VuZGVyLApAQCAtMjQ1LDcgKzI0NSw3IEBAIFRFU1RfUChQ
cm9iaW5nRW5kVG9FbmRUZXN0LCBQcm9iZU9uVmlkZW9FbmNvZGVyUmVjb25maWd1cmF0aW9uKSB7
CiAgICAgICAgICAgICAvLyBiaXRyYXRlKS4KICAgICAgICAgICAgIGlmIChzdGF0cy5zZW5kX2Jh
bmR3aWR0aF9icHMgPj0gMjUwMDAwICYmCiAgICAgICAgICAgICAgICAgc3RhdHMuc2VuZF9iYW5k
d2lkdGhfYnBzIDw9IDM1MDAwMCkgewotICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVs
YXRpb25Db25maWcgY29uZmlnOworICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9y
Q29uZmlnIGNvbmZpZzsKICAgICAgICAgICAgICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9
IDIwMDsKICAgICAgICAgICAgICAgc2VuZF9zaW11bGF0ZWRfbmV0d29ya18tPlNldENvbmZpZyhj
b25maWcpOwogCkBAIC0yNjAsNyArMjYwLDcgQEAgVEVTVF9QKFByb2JpbmdFbmRUb0VuZFRlc3Qs
IFByb2JlT25WaWRlb0VuY29kZXJSZWNvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgIGlmIChzdGF0cy5zZW5kX2JhbmR3aWR0
aF9icHMgPD0gMjEwMDAwKSB7Ci0gICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlv
bkNvbmZpZyBjb25maWc7CisgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25m
aWcgY29uZmlnOwogICAgICAgICAgICAgICBjb25maWcubGlua19jYXBhY2l0eV9rYnBzID0gNTAw
MDsKICAgICAgICAgICAgICAgc2VuZF9zaW11bGF0ZWRfbmV0d29ya18tPlNldENvbmZpZyhjb25m
aWcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3JlY2VpdmVfdGltZV90ZXN0cy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVz
dHMvcmVjZWl2ZV90aW1lX3Rlc3RzLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
Y2E2NmYxZDNkNjdlMjc2ZTU3YjBhODgzMDhjZjE4NDcwYmFiNGQwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcmVjZWl2ZV90aW1lX3Rlc3Rz
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0K
LSNpbmNsdWRlICJhcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgotI2luY2x1ZGUgImNhbGwv
ZmFrZV9uZXR3b3JrX3BpcGUuaCIKLSNpbmNsdWRlICJjYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2UvdGltZXV0aWxzLmgiCi0jaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKLSNpbmNsdWRlICJ0
ZXN0L2ZpZWxkX3RyaWFsLmgiCi0jaW5jbHVkZSAidGVzdC9ydGNwX3BhY2tldF9wYXJzZXIuaCIK
LQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgewotCi0vLyBUaGlzIHRlc3RlciBzaW11
bGF0ZXMgYSBzZXJpZXMgb2YgY2xvY2sgcmVzZXQgZXZlbnRzIHdoZXJlIGRpZmZlcmVudCBvZmZz
ZXRzCi0vLyBhcmUgYWRkZWQgdG8gdGhlIHJlY2VpdmUgdGltZS4gSXQgZGV0ZWN0cyBqdW1wcyBp
biB0aGUgcmVzdWx0aW5nIHJlcG9ydGVkCi0vLyByZWNlaXZlIHRpbWVzIG9mIG1vcmUgdGhhbiAy
MDAgbXMuCi1jbGFzcyBSZXBvcnRlZFJlY2VpdmVUaW1lVGVzdGVyIDogcHVibGljIHRlc3Q6OkVu
ZFRvRW5kVGVzdCB7Ci0gcHVibGljOgotICBzdHJ1Y3QgVGltZUp1bXAgewotICAgIGludDY0X3Qg
YXRfc2VuZF90aW1lX21zOwotICAgIGludDY0X3QgYWRkX29mZnNldF9tczsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGludDY0X3Qga1N0b3AgPSAwOwotICB9OwotCi0gIFJlcG9ydGVkUmVjZWl2ZVRp
bWVUZXN0ZXIoKQotICAgICAgOiBFbmRUb0VuZFRlc3QodGVzdDo6Q2FsbFRlc3Q6OmtEZWZhdWx0
VGltZW91dE1zKSB7Ci0gICAgLy8gVGhlc2Ugc2hvdWxkIGJlIGxldCB0cm91Z2ggd2l0aG91dCBj
b3JyZWN0aW9uIGFuZCBmaWx0ZXJlZCBpZiBjb3JyZWN0aW9uCi0gICAgLy8gaXMgZW5hYmxlZC4K
LSAgICBqdW1wc18ucHVzaCh7NTAwLCAyMDAwfSk7Ci0gICAganVtcHNfLnB1c2goezEwMDAsIC00
MDB9KTsKLSAgICBqdW1wc18ucHVzaCh7MTUwMCwgMjAwMDAwMH0pOwotICAgIGp1bXBzXy5wdXNo
KHsxNzAwLCBUaW1lSnVtcDo6a1N0b3B9KTsKLSAgfQotICBib29sIEp1bXBJblJlcG9ydGVkVGlt
ZXMoKSB7IHJldHVybiBqdW1wX2luX3JlcG9ydGVkX3RpbWVzXzsgfQotCi0gcHJvdGVjdGVkOgot
ICBBY3Rpb24gT25SZWNlaXZlUnRjcChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KSBvdmVycmlkZSB7Ci0gICAgdGVzdDo6UnRjcFBhY2tldFBhcnNlciBwYXJzZXI7Ci0gICAgRVhQ
RUNUX1RSVUUocGFyc2VyLlBhcnNlKGRhdGEsIGxlbmd0aCkpOwotICAgIGNvbnN0IGF1dG8mIGZi
ID0gcGFyc2VyLnRyYW5zcG9ydF9mZWVkYmFjaygpOwotICAgIGlmIChmYi0+bnVtX3BhY2tldHMo
KSA+IDApIHsKLSAgICAgIGludDY0X3QgYXJyaXZhbF90aW1lX3VzID0gZmItPkdldEJhc2VUaW1l
VXMoKTsKLSAgICAgIGZvciAoY29uc3QgYXV0byYgcGt0IDogZmItPkdldFJlY2VpdmVkUGFja2V0
cygpKSB7Ci0gICAgICAgIGFycml2YWxfdGltZV91cyArPSBwa3QuZGVsdGFfdXMoKTsKLSAgICAg
ICAgaWYgKGxhc3RfYXJyaXZhbF90aW1lX3VzXyAhPSAwKSB7Ci0gICAgICAgICAgaW50NjRfdCBk
ZWx0YV91cyA9IGFycml2YWxfdGltZV91cyAtIGxhc3RfYXJyaXZhbF90aW1lX3VzXzsKLSAgICAg
ICAgICBydGM6OkNyaXRTY29wZSBjcml0KCZzZW5kX3RpbWVzX2NyaXRfKTsKLSAgICAgICAgICBp
ZiAoc2VuZF90aW1lc191c18uc2l6ZSgpID49IDIpIHsKLSAgICAgICAgICAgIGludDY0X3QgZ3Jv
dW5kX3RydXRoX2RlbHRhX3VzID0KLSAgICAgICAgICAgICAgICBzZW5kX3RpbWVzX3VzX1sxXSAt
IHNlbmRfdGltZXNfdXNfWzBdOwotICAgICAgICAgICAgc2VuZF90aW1lc191c18ucG9wX2Zyb250
KCk7Ci0gICAgICAgICAgICBpbnQ2NF90IGRlbHRhX2RpZmZfbXMgPSAoZGVsdGFfdXMgLSBncm91
bmRfdHJ1dGhfZGVsdGFfdXMpIC8gMTAwMDsKLSAgICAgICAgICAgIGlmIChzdGQ6OmFicyhkZWx0
YV9kaWZmX21zKSA+IDIwMCkgewotICAgICAgICAgICAgICBqdW1wX2luX3JlcG9ydGVkX3RpbWVz
XyA9IHRydWU7Ci0gICAgICAgICAgICAgIG9ic2VydmF0aW9uX2NvbXBsZXRlXy5TZXQoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbGFzdF9hcnJpdmFs
X3RpbWVfdXNfID0gYXJyaXZhbF90aW1lX3VzOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4g
U0VORF9QQUNLRVQ7Ci0gIH0KLSAgQWN0aW9uIE9uU2VuZFJ0cChjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoKSBvdmVycmlkZSB7Ci0gICAgewotICAgICAgcnRjOjpDcml0U2NvcGUg
Y3JpdCgmc2VuZF90aW1lc19jcml0Xyk7Ci0gICAgICBzZW5kX3RpbWVzX3VzXy5wdXNoX2JhY2so
cnRjOjpUaW1lTWljcm9zKCkpOwotICAgIH0KLSAgICBpbnQ2NF90IG5vd19tcyA9IHJ0Yzo6VGlt
ZU1pbGxpcygpOwotICAgIGlmICghZmlyc3Rfc2VuZF90aW1lX21zXykKLSAgICAgIGZpcnN0X3Nl
bmRfdGltZV9tc18gPSBub3dfbXM7Ci0gICAgaW50NjRfdCBzZW5kX3RpbWVfbXMgPSBub3dfbXMg
LSBmaXJzdF9zZW5kX3RpbWVfbXNfOwotICAgIGlmIChzZW5kX3RpbWVfbXMgPj0ganVtcHNfLmZy
b250KCkuYXRfc2VuZF90aW1lX21zKSB7Ci0gICAgICBpZiAoanVtcHNfLmZyb250KCkuYWRkX29m
ZnNldF9tcyA9PSBUaW1lSnVtcDo6a1N0b3ApIHsKLSAgICAgICAgb2JzZXJ2YXRpb25fY29tcGxl
dGVfLlNldCgpOwotICAgICAgICBqdW1wc18ucG9wKCk7Ci0gICAgICAgIHJldHVybiBTRU5EX1BB
Q0tFVDsKLSAgICAgIH0KLSAgICAgIGNsb2NrX29mZnNldF9tc18gKz0ganVtcHNfLmZyb250KCku
YWRkX29mZnNldF9tczsKLSAgICAgIHNlbmRfcGlwZV8tPlNldENsb2NrT2Zmc2V0KGNsb2NrX29m
ZnNldF9tc18pOwotICAgICAganVtcHNfLnBvcCgpOwotICAgIH0KLSAgICByZXR1cm4gU0VORF9Q
QUNLRVQ7Ci0gIH0KLSAgdGVzdDo6UGFja2V0VHJhbnNwb3J0KiBDcmVhdGVTZW5kVHJhbnNwb3J0
KAotICAgICAgdGVzdDo6U2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nKiB0YXNrX3F1
ZXVlLAotICAgICAgQ2FsbCogc2VuZGVyX2NhbGwpIG92ZXJyaWRlIHsKLSAgICBhdXRvIHBpcGUg
PSBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICBDbG9jazo6R2V0
UmVhbFRpbWVDbG9jaygpLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3
b3JrPihEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpOwotICAgIHNlbmRfcGlwZV8g
PSBwaXBlLmdldCgpOwotICAgIHJldHVybiBzZW5kX3RyYW5zcG9ydF8gPSBuZXcgdGVzdDo6UGFj
a2V0VHJhbnNwb3J0KAotICAgICAgICAgICAgICAgdGFza19xdWV1ZSwgc2VuZGVyX2NhbGwsIHRo
aXMsIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1NlbmRlciwKLSAgICAgICAgICAgICAgIHRlc3Q6
OkNhbGxUZXN0OjpwYXlsb2FkX3R5cGVfbWFwXywgc3RkOjptb3ZlKHBpcGUpKTsKLSAgfQotICB2
b2lkIFBlcmZvcm1UZXN0KCkgb3ZlcnJpZGUgewotICAgIG9ic2VydmF0aW9uX2NvbXBsZXRlXy5X
YWl0KHRlc3Q6OkNhbGxUZXN0OjprRGVmYXVsdFRpbWVvdXRNcyk7Ci0gIH0KLSAgc2l6ZV90IEdl
dE51bVZpZGVvU3RyZWFtcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDE7IH0KLSAgc2l6ZV90
IEdldE51bUF1ZGlvU3RyZWFtcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLQotIHBy
aXZhdGU6Ci0gIGludDY0X3QgbGFzdF9hcnJpdmFsX3RpbWVfdXNfID0gMDsKLSAgaW50NjRfdCBm
aXJzdF9zZW5kX3RpbWVfbXNfID0gMDsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gc2VuZF90aW1l
c19jcml0XzsKLSAgc3RkOjpkZXF1ZTxpbnQ2NF90PiBzZW5kX3RpbWVzX3VzXyBSVENfR1VBUkRF
RF9CWShzZW5kX3RpbWVzX2NyaXRfKTsKLSAgYm9vbCBqdW1wX2luX3JlcG9ydGVkX3RpbWVzXyA9
IGZhbHNlOwotICBGYWtlTmV0d29ya1BpcGUqIHNlbmRfcGlwZV87Ci0gIHRlc3Q6OlBhY2tldFRy
YW5zcG9ydCogc2VuZF90cmFuc3BvcnRfOwotICBpbnQ2NF90IGNsb2NrX29mZnNldF9tc18gPSAw
OwotICBzdGQ6OnF1ZXVlPFRpbWVKdW1wPiBqdW1wc187Ci19OwotfSAgLy8gbmFtZXNwYWNlCi0K
LWNsYXNzIFJlY2VpdmVUaW1lRW5kVG9FbmRUZXN0IDogcHVibGljIHRlc3Q6OkNhbGxUZXN0IHsK
LSBwdWJsaWM6Ci0gIFJlY2VpdmVUaW1lRW5kVG9FbmRUZXN0KCkge30KLQotICB2aXJ0dWFsIH5S
ZWNlaXZlVGltZUVuZFRvRW5kVGVzdCgpIHt9Ci19OwotCi1URVNUX0YoUmVjZWl2ZVRpbWVFbmRU
b0VuZFRlc3QsIFJlY2VpdmVUaW1lSnVtcHNXaXRob3V0RmllbGRUcmlhbCkgewotICAvLyBXaXRo
b3V0IHRoZSBmaWVsZCB0cmlhbCwgdGhlIGp1bXBzIGluIGNsb2NrIG9mZnNldCBzaG91bGQgYmUg
bGV0IHRyb3VnaCBhbmQKLSAgLy8gYmUgZGV0ZWN0ZWQuCi0gIFJlcG9ydGVkUmVjZWl2ZVRpbWVU
ZXN0ZXIgdGVzdDsKLSAgUnVuQmFzZVRlc3QoJnRlc3QpOwotICBFWFBFQ1RfVFJVRSh0ZXN0Lkp1
bXBJblJlcG9ydGVkVGltZXMoKSk7Ci19Ci0KLVRFU1RfRihSZWNlaXZlVGltZUVuZFRvRW5kVGVz
dCwgUmVjZWl2ZVRpbWVTdGVhZHlXaXRoRmllbGRUcmlhbCkgewotICAvLyBTaW5jZSBhbGwgdGhl
IGFkZGVkIGp1bXBzIGJ5IHRoZSB0ZXN0ZXIgYXJlIG91dHNpZGUgdGhlIGludGVydmFsIG9mIC0x
MDAgbXMKLSAgLy8gdG8gMTAwMCBtcywgdGhleSBzaG91bGQgYWxsIGJlIGZpbHRlcmVkIGJ5IHRo
ZSBmaWVsZCB0cmlhbCBiZWxvdywgYW5kIG5vCi0gIC8vIGp1bXBzIHNob3VsZCBiZSBkZXRlY3Rl
ZC4KLSAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWwoCi0gICAgICAiV2ViUlRD
LUJ3ZVJlY2VpdmVUaW1lQ29ycmVjdGlvbi9FbmFibGVkLC0xMDAsMTAwMC8iKTsKLSAgUmVwb3J0
ZWRSZWNlaXZlVGltZVRlc3RlciB0ZXN0OwotICBSdW5CYXNlVGVzdCgmdGVzdCk7Ci0gIEVYUEVD
VF9GQUxTRSh0ZXN0Lkp1bXBJblJlcG9ydGVkVGltZXMoKSk7Ci19Ci19ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3JldHJhbnNtaXNzaW9uX3Rlc3RzLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90
ZXN0cy9yZXRyYW5zbWlzc2lvbl90ZXN0cy5jYwppbmRleCA3M2E1NTg1ZTc0NzE5MWIyZTM4NTg2
N2FiZjI3MjU3NDc1NzI4ZWYxLi5kMWE2OWUzZWQzMTgxYzlmNWJjNWRhNzhiOTc2ZTZmODc2NTk4
ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3JldHJhbnNtaXNzaW9uX3Rlc3RzLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRf
dGVzdHMvcmV0cmFuc21pc3Npb25fdGVzdHMuY2MKQEAgLTksMTMgKzksMTMgQEAKICAqLwogCiAj
aW5jbHVkZSAiYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaCIKKyNpbmNsdWRlICJhcGkvdGVz
dC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJjYWxs
L2Zha2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29yay5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDgu
aCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9zbGVlcC5oIgogI2luY2x1ZGUg
InRlc3QvY2FsbF90ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgotI2luY2x1
ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVz
dC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3QvcnRjcF9wYWNrZXRfcGFyc2VyLmgiCiAKQEAgLTEz
MSw5ICsxMzEsOCBAQCBURVNUX0YoUmV0cmFuc21pc3Npb25FbmRUb0VuZFRlc3QsIFJlY2VpdmVz
TmFja0FuZFJldHJhbnNtaXRzQXVkaW8pIHsKICAgICAgICAgICB0YXNrX3F1ZXVlLCBudWxscHRy
LCB0aGlzLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtSZWNlaXZlciwKICAgICAgICAgICBwYXls
b2FkX3R5cGVfbWFwXywKICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1Bp
cGU+KAotICAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAotICAgICAgICAg
ICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAg
ICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSkpOworICAgICAgICAgICAgICBD
bG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3
b3JrPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0
SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpKTsKICAgICAgIHJlY2VpdmVfdHJhbnNwb3J0XyA9
IHJlY2VpdmVfdHJhbnNwb3J0OwogICAgICAgcmV0dXJuIHJlY2VpdmVfdHJhbnNwb3J0OwogICAg
IH0KQEAgLTE2Niw3ICsxNjUsNiBAQCBURVNUX0YoUmV0cmFuc21pc3Npb25FbmRUb0VuZFRlc3Qs
IFJlY2VpdmVzTmFja0FuZFJldHJhbnNtaXRzQXVkaW8pIHsKICAgICB2b2lkIE1vZGlmeUF1ZGlv
Q29uZmlncygKICAgICAgICAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcqIHNlbmRfY29uZmlnLAog
ICAgICAgICBzdGQ6OnZlY3RvcjxBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZz4qIHJlY2VpdmVf
Y29uZmlncykgb3ZlcnJpZGUgewotICAgICAgc2VuZF9jb25maWctPnJ0cC5uYWNrLnJ0cF9oaXN0
b3J5X21zID0ga05hY2tSdHBIaXN0b3J5TXM7CiAgICAgICAoKnJlY2VpdmVfY29uZmlncylbMF0u
cnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgPSBrTmFja1J0cEhpc3RvcnlNczsKICAgICAgIGxvY2Fs
X3NzcmNfID0gKCpyZWNlaXZlX2NvbmZpZ3MpWzBdLnJ0cC5sb2NhbF9zc3JjOwogICAgICAgcmVt
b3RlX3NzcmNfID0gKCpyZWNlaXZlX2NvbmZpZ3MpWzBdLnJ0cC5yZW1vdGVfc3NyYzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2Vu
ZF90b19lbmRfdGVzdHMvcnRwX3J0Y3BfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3J0cF9ydGNwX3Rlc3Rz
LmNjCmluZGV4IDdkOTZkY2NhNzYxMGVkYTJiYTI1OGJhNGNjZjI4MTIxYzhiYmJjYmIuLmYxOWM2
YWQzZmFhNWY2YTQxODcwYzM4NThkYThiNTQwYWIyYmRhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMv
cnRwX3J0Y3BfdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9ydHBfcnRjcF90ZXN0cy5jYwpAQCAtMjgy
LDEzICsyODIsMTMgQEAgdm9pZCBSdHBSdGNwRW5kVG9FbmRUZXN0OjpUZXN0UnRwU3RhdGVQcmVz
ZXJ2YXRpb24oCiAgICAgICAgIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1NlbmRlciwgcGF5bG9h
ZF90eXBlX21hcF8sCiAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4o
CiAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1
ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29u
ZmlnKCkpKSk7CiAgICAgcmVjZWl2ZV90cmFuc3BvcnQgPSBhYnNsOjptYWtlX3VuaXF1ZTx0ZXN0
OjpQYWNrZXRUcmFuc3BvcnQ+KAogICAgICAgICAmdGFza19xdWV1ZV8sIG51bGxwdHIsICZvYnNl
cnZlciwgdGVzdDo6UGFja2V0VHJhbnNwb3J0OjprUmVjZWl2ZXIsCiAgICAgICAgIHBheWxvYWRf
dHlwZV9tYXBfLAogICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAog
ICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8
U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZp
ZygpKSkpOwogICAgIHNlbmRfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+
UmVjZWl2ZXIoKSk7CiAgICAgcmVjZWl2ZV90cmFuc3BvcnQtPlNldFJlY2VpdmVyKHNlbmRlcl9j
YWxsXy0+UmVjZWl2ZXIoKSk7CiAKQEAgLTQ3NCw3ICs0NzQsNyBAQCBURVNUX0YoUnRwUnRjcEVu
ZFRvRW5kVGVzdCwgRElTQUJMRURfVGVzdEZsZXhmZWNSdHBTdGF0ZVByZXNlcnZhdGlvbikgewog
ICB0YXNrX3F1ZXVlXy5TZW5kVGFzayhbJl0oKSB7CiAgICAgQ3JlYXRlQ2FsbHMoKTsKIAotICAg
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBsb3NzeV9kZWxheWVkX2xpbms7CisgICAg
QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBsb3NzeV9kZWxheWVkX2xpbms7CiAgICAgbG9z
c3lfZGVsYXllZF9saW5rLmxvc3NfcGVyY2VudCA9IDI7CiAgICAgbG9zc3lfZGVsYXllZF9saW5r
LnF1ZXVlX2RlbGF5X21zID0gNTA7CiAKQEAgLTQ4Niw3ICs0ODYsNyBAQCBURVNUX0YoUnRwUnRj
cEVuZFRvRW5kVGVzdCwgRElTQUJMRURfVGVzdEZsZXhmZWNSdHBTdGF0ZVByZXNlcnZhdGlvbikg
ewogICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4obG9zc3lf
ZGVsYXllZF9saW5rKSkpOwogICAgIHNlbmRfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihyZWNlaXZl
cl9jYWxsXy0+UmVjZWl2ZXIoKSk7CiAKLSAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25m
aWcgZmxhd2xlc3NfbGluazsKKyAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGZsYXds
ZXNzX2xpbms7CiAgICAgcmVjZWl2ZV90cmFuc3BvcnQgPSBhYnNsOjptYWtlX3VuaXF1ZTx0ZXN0
OjpQYWNrZXRUcmFuc3BvcnQ+KAogICAgICAgICAmdGFza19xdWV1ZV8sIG51bGxwdHIsICZvYnNl
cnZlciwgdGVzdDo6UGFja2V0VHJhbnNwb3J0OjprUmVjZWl2ZXIsCiAgICAgICAgIHBheWxvYWRf
dHlwZV9tYXBfLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9zc3JjX3Rlc3RzLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9z
c3JjX3Rlc3RzLmNjCmluZGV4IGMwM2I0OTQ3N2Q2MGE4YmU4Mjg1NTE5ZDNlYWY5NjJkZjI5MmFi
ZmYuLjg2ZmFhMDQ2NWI1ZmIzYzFkOGRkYTg4MmFiMzljZWZkOWE5Mjk5NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19l
bmRfdGVzdHMvc3NyY190ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3NzcmNfdGVzdHMuY2MKQEAgLTQ4
LDcgKzQ4LDcgQEAgVEVTVF9GKFNzcmNFbmRUb0VuZFRlc3QsIFVua25vd25SdHBQYWNrZXRHaXZl
c1Vua25vd25Tc3JjUmV0dXJuQ29kZSkgewogICBjbGFzcyBQYWNrZXRJbnB1dE9ic2VydmVyIDog
cHVibGljIFBhY2tldFJlY2VpdmVyIHsKICAgIHB1YmxpYzoKICAgICBleHBsaWNpdCBQYWNrZXRJ
bnB1dE9ic2VydmVyKFBhY2tldFJlY2VpdmVyKiByZWNlaXZlcikKLSAgICAgICAgOiByZWNlaXZl
cl8ocmVjZWl2ZXIpLCBkZWxpdmVyZWRfcGFja2V0XyhmYWxzZSwgZmFsc2UpIHt9CisgICAgICAg
IDogcmVjZWl2ZXJfKHJlY2VpdmVyKSB7fQogCiAgICAgYm9vbCBXYWl0KCkgeyByZXR1cm4gZGVs
aXZlcmVkX3BhY2tldF8uV2FpdChrRGVmYXVsdFRpbWVvdXRNcyk7IH0KIApAQCAtODIsMTUgKzgy
LDE1IEBAIFRFU1RfRihTc3JjRW5kVG9FbmRUZXN0LCBVbmtub3duUnRwUGFja2V0R2l2ZXNVbmtu
b3duU3NyY1JldHVybkNvZGUpIHsKIAogICAgIHNlbmRfdHJhbnNwb3J0ID0gYWJzbDo6bWFrZV91
bmlxdWU8dGVzdDo6RGlyZWN0VHJhbnNwb3J0PigKICAgICAgICAgJnRhc2tfcXVldWVfLAotICAg
ICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICAgICAgQ2xv
Y2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29y
az4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5l
dHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFr
ZU5ldHdvcmtQaXBlPihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5l
dHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
dWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAgICAgc2VuZGVyX2NhbGxfLmdl
dCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiAgICAgcmVjZWl2ZV90cmFuc3BvcnQgPSBhYnNsOjpt
YWtlX3VuaXF1ZTx0ZXN0OjpEaXJlY3RUcmFuc3BvcnQ+KAogICAgICAgICAmdGFza19xdWV1ZV8s
Ci0gICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCi0gICAgICAgICAg
ICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWRO
ZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZh
dWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpLAorICAgICAgICBhYnNsOjptYWtlX3VuaXF1
ZTxGYWtlTmV0d29ya1BpcGU+KENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxh
dGVkTmV0d29yaz4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpLAogICAgICAgICByZWNlaXZlcl9j
YWxsXy5nZXQoKSwgcGF5bG9hZF90eXBlX21hcF8pOwogICAgIGlucHV0X29ic2VydmVyID0KICAg
ICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UGFja2V0SW5wdXRPYnNlcnZlcj4ocmVjZWl2ZXJfY2Fs
bF8tPlJlY2VpdmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9zdGF0c190ZXN0cy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRf
dGVzdHMvc3RhdHNfdGVzdHMuY2MKaW5kZXggYWY2YmJkYTE2OGUyNDRkZWM3NzYwZmU4YTUxNDA1
ZWE0NTk4MDM3OS4uZDZlOTJjOGFmMjAzYWVmNWNiZWY1NDQxN2ZiZDI4MDA5NDZiOWVmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
ZW5kX3RvX2VuZF90ZXN0cy9zdGF0c190ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3N0YXRzX3Rlc3Rz
LmNjCkBAIC05LDYgKzksNyBAQAogICovCiAKICNpbmNsdWRlICJhcGkvdGVzdC9zaW11bGF0ZWRf
bmV0d29yay5oIgorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29k
ZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwvZmFrZV9uZXR3b3JrX3BpcGUuaCIKICNpbmNs
dWRlICJjYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX3V0aWxpdHkuaCIKQEAgLTE4LDcgKzE5LDYgQEAKICNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9zbGVlcC5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0Lmgi
CiAjaW5jbHVkZSAidGVzdC9mYWtlX2VuY29kZXIuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9u
X3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNs
dWRlICJ0ZXN0L3J0Y3BfcGFja2V0X3BhcnNlci5oIgogCkBAIC00Nyw4ICs0Nyw3IEBAIFRFU1Rf
RihTdGF0c0VuZFRvRW5kVGVzdCwgR2V0U3RhdHMpIHsKICAgICAgICAgICAgICAgICBDbG9jazo6
R2V0UmVhbFRpbWVDbG9jaygpLCAxMCk7CiAgICAgICAgICAgfSksCiAgICAgICAgICAgc2VuZF9z
dHJlYW1fKG51bGxwdHIpLAotICAgICAgICAgIGV4cGVjdGVkX3NlbmRfc3NyY3NfKCksCi0gICAg
ICAgICAgY2hlY2tfc3RhdHNfZXZlbnRfKGZhbHNlLCBmYWxzZSkge30KKyAgICAgICAgICBleHBl
Y3RlZF9zZW5kX3NzcmNzXygpIHt9CiAKICAgIHByaXZhdGU6CiAgICAgQWN0aW9uIE9uU2VuZFJ0
cChjb25zdCB1aW50OF90KiBwYWNrZXQsIHNpemVfdCBsZW5ndGgpIG92ZXJyaWRlIHsKQEAgLTIz
MSw3ICsyMzAsNyBAQCBURVNUX0YoU3RhdHNFbmRUb0VuZFRlc3QsIEdldFN0YXRzKSB7CiAgICAg
dGVzdDo6UGFja2V0VHJhbnNwb3J0KiBDcmVhdGVTZW5kVHJhbnNwb3J0KAogICAgICAgICB0ZXN0
OjpTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmcqIHRhc2tfcXVldWUsCiAgICAgICAg
IENhbGwqIHNlbmRlcl9jYWxsKSBvdmVycmlkZSB7Ci0gICAgICBEZWZhdWx0TmV0d29ya1NpbXVs
YXRpb25Db25maWcgbmV0d29ya19jb25maWc7CisgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9y
Q29uZmlnIG5ldHdvcmtfY29uZmlnOwogICAgICAgbmV0d29ya19jb25maWcubG9zc19wZXJjZW50
ID0gNTsKICAgICAgIHJldHVybiBuZXcgdGVzdDo6UGFja2V0VHJhbnNwb3J0KAogICAgICAgICAg
IHRhc2tfcXVldWUsIHNlbmRlcl9jYWxsLCB0aGlzLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtT
ZW5kZXIsCkBAIC0yNDAsOCArMjM5LDkgQEAgVEVTVF9GKFN0YXRzRW5kVG9FbmRUZXN0LCBHZXRT
dGF0cykgewogICAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAogICAgICAg
ICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPihuZXR3b3JrX2NvbmZp
ZykpKTsKICAgICB9Ci0gICAgdm9pZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZp
ZyogY29uZmlnKSBvdmVycmlkZSB7Ci0gICAgICBjb25maWctPmJpdHJhdGVfY29uZmlnLnN0YXJ0
X2JpdHJhdGVfYnBzID0ga1N0YXJ0Qml0cmF0ZUJwczsKKyAgICB2b2lkIE1vZGlmeVNlbmRlckJp
dHJhdGVDb25maWcoCisgICAgICAgIEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcp
IG92ZXJyaWRlIHsKKyAgICAgIGJpdHJhdGVfY29uZmlnLT5zdGFydF9iaXRyYXRlX2JwcyA9IGtT
dGFydEJpdHJhdGVCcHM7CiAgICAgfQogCiAgICAgLy8gVGhpcyB0ZXN0IHVzZSBvdGhlciBWaWRl
b1N0cmVhbSBzZXR0aW5ncyB0aGFuIHRoZSB0aGUgZGVmYXVsdCBzZXR0aW5ncwpAQCAtNTE1LDkg
KzUxNSw5IEBAIFRFU1RfRihTdGF0c0VuZFRvRW5kVGVzdCwgTUFZQkVfQ29udGVudFR5cGVTd2l0
Y2hlcykgewogICBtZXRyaWNzOjpSZXNldCgpOwogCiAgIENhbGw6OkNvbmZpZyBzZW5kX2NvbmZp
ZyhzZW5kX2V2ZW50X2xvZ18uZ2V0KCkpOwotICB0ZXN0Lk1vZGlmeVNlbmRlckNhbGxDb25maWco
JnNlbmRfY29uZmlnKTsKKyAgdGVzdC5Nb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKCZzZW5kX2Nv
bmZpZy5iaXRyYXRlX2NvbmZpZyk7CiAgIENhbGw6OkNvbmZpZyByZWN2X2NvbmZpZyhyZWN2X2V2
ZW50X2xvZ18uZ2V0KCkpOwotICB0ZXN0Lk1vZGlmeVJlY2VpdmVyQ2FsbENvbmZpZygmcmVjdl9j
b25maWcpOworICB0ZXN0Lk1vZGlmeVJlY2VpdmVyQml0cmF0ZUNvbmZpZygmcmVjdl9jb25maWcu
Yml0cmF0ZV9jb25maWcpOwogCiAgIFZpZGVvRW5jb2RlckNvbmZpZyBlbmNvZGVyX2NvbmZpZ193
aXRoX3NjcmVlbnNoYXJlOwogCkBAIC03MTMsNyArNzEzLDcgQEAgVEVTVF9GKFN0YXRzRW5kVG9F
bmRUZXN0LCBDYWxsUmVwb3J0c1J0dEZvclNlbmRlcikgewogICBzdGQ6OnVuaXF1ZV9wdHI8dGVz
dDo6RGlyZWN0VHJhbnNwb3J0PiByZWNlaXZlcl90cmFuc3BvcnQ7CiAKICAgdGFza19xdWV1ZV8u
U2VuZFRhc2soW3RoaXMsICZzZW5kZXJfdHJhbnNwb3J0LCAmcmVjZWl2ZXJfdHJhbnNwb3J0XSgp
IHsKLSAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICAgIEJ1aWx0
SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5xdWV1ZV9kZWxheV9t
cyA9IGtTZW5kRGVsYXlNczsKICAgICBDcmVhdGVDYWxscygpOwogICAgIHNlbmRlcl90cmFuc3Bv
cnQgPSBhYnNsOjptYWtlX3VuaXF1ZTx0ZXN0OjpEaXJlY3RUcmFuc3BvcnQ+KApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3Rv
X2VuZF90ZXN0cy90cmFuc3BvcnRfZmVlZGJhY2tfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3RyYW5zcG9y
dF9mZWVkYmFja190ZXN0cy5jYwppbmRleCAxNDM3Y2Q0NmU0ODVlYjRmMzY5OTA3MTIzOWVkZTI4
YmNlMmVmYTE0Li45NGRiMDM4MzMwNTE5OGU2MDE2ZjU2N2Q4MjRjNTQ3ODExZDBkNDQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9l
bmRfdG9fZW5kX3Rlc3RzL3RyYW5zcG9ydF9mZWVkYmFja190ZXN0cy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3Rz
L3RyYW5zcG9ydF9mZWVkYmFja190ZXN0cy5jYwpAQCAtNTUsMTAgKzU1LDkgQEAgVEVTVF9QKFRy
YW5zcG9ydEZlZWRiYWNrRW5kVG9FbmRUZXN0LCBBc3NpZ25zVHJhbnNwb3J0U2VxdWVuY2VOdW1i
ZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VO
ZXR3b3JrUGlwZT4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9jazo6R2V0UmVh
bFRpbWVDbG9jaygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91
bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VuZGVyX2NhbGwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBheWxvYWRfdHlwZV9tYXApLAotICAgICAgICAgIGRvbmVfKGZhbHNlLCBmYWxzZSksCiAg
ICAgICAgICAgcGFyc2VyXyhSdHBIZWFkZXJQYXJzZXI6OkNyZWF0ZSgpKSwKICAgICAgICAgICBm
aXJzdF9tZWRpYV9zc3JjXyhmaXJzdF9tZWRpYV9zc3JjKSwKICAgICAgICAgICBydHhfdG9fbWVk
aWFfc3NyY3NfKHNzcmNfbWFwKSwKQEAgLTQxNSw4ICs0MTQsOSBAQCBURVNUX1AoVHJhbnNwb3J0
RmVlZGJhY2tFbmRUb0VuZFRlc3QsCiAgICAgICBFWFBFQ1RfVFJVRShwYXJzZXIuUGFyc2UoZGF0
YSwgbGVuZ3RoKSk7CiAgICAgICByZXR1cm4gcGFyc2VyLnRyYW5zcG9ydF9mZWVkYmFjaygpLT5u
dW1fcGFja2V0cygpID4gMDsKICAgICB9Ci0gICAgdm9pZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmln
KENhbGw6OkNvbmZpZyogY29uZmlnKSBvdmVycmlkZSB7Ci0gICAgICBjb25maWctPmJpdHJhdGVf
Y29uZmlnLm1heF9iaXRyYXRlX2JwcyA9IDMwMDAwMDsKKyAgICB2b2lkIE1vZGlmeVNlbmRlckJp
dHJhdGVDb25maWcoCisgICAgICAgIEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcp
IG92ZXJyaWRlIHsKKyAgICAgIGJpdHJhdGVfY29uZmlnLT5tYXhfYml0cmF0ZV9icHMgPSAzMDAw
MDA7CiAgICAgfQogCiAgICAgdm9pZCBQZXJmb3JtVGVzdCgpIG92ZXJyaWRlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2ZyYW1l
X2R1bXBpbmdfZGVjb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL2ZyYW1lX2R1bXBpbmdfZGVjb2Rlci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Nzk4NTEx
YjU0MzlhM2JhNzFjZmM4ZWNjMzA2MmViZDAzNzk0ZTJlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZnJhbWVfZHVtcGlu
Z19kZWNvZGVyLmNjCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aW5jbHVkZSAidmlkZW8vZnJhbWVfZHVtcGluZ19kZWNvZGVyLmgiCisKKyNpbmNsdWRlIDx1dGls
aXR5PgorCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2Rl
Y19pbnRlcmZhY2UuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK0ZyYW1lRHVtcGluZ0RlY29k
ZXI6OkZyYW1lRHVtcGluZ0RlY29kZXIoc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4gZGVj
b2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQbGF0
Zm9ybUZpbGUgZmlsZSkKKyAgICA6IGRlY29kZXJfKHN0ZDo6bW92ZShkZWNvZGVyKSksCisgICAg
ICB3cml0ZXJfKEl2ZkZpbGVXcml0ZXI6OldyYXAocnRjOjpGaWxlKGZpbGUpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJ5dGVfbGltaXQ9ICovIDEwMDAwMDAwMCkpIHt9
CisKK0ZyYW1lRHVtcGluZ0RlY29kZXI6On5GcmFtZUR1bXBpbmdEZWNvZGVyKCkgPSBkZWZhdWx0
OworCitpbnQzMl90IEZyYW1lRHVtcGluZ0RlY29kZXI6OkluaXREZWNvZGUoY29uc3QgVmlkZW9D
b2RlYyogY29kZWNfc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCBudW1iZXJfb2ZfY29yZXMpIHsKKyAgcmV0dXJuIGRlY29kZXJfLT5Jbml0
RGVjb2RlKGNvZGVjX3NldHRpbmdzLCBudW1iZXJfb2ZfY29yZXMpOworfQorCitpbnQzMl90IEZy
YW1lRHVtcGluZ0RlY29kZXI6OkRlY29kZSgKKyAgICBjb25zdCBFbmNvZGVkSW1hZ2UmIGlucHV0
X2ltYWdlLAorICAgIGJvb2wgbWlzc2luZ19mcmFtZXMsCisgICAgY29uc3QgQ29kZWNTcGVjaWZp
Y0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCisgICAgaW50NjRfdCByZW5kZXJfdGltZV9tcykg
eworICBpbnQzMl90IHJldCA9IGRlY29kZXJfLT5EZWNvZGUoaW5wdXRfaW1hZ2UsIG1pc3Npbmdf
ZnJhbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNfc3BlY2lmaWNf
aW5mbywgcmVuZGVyX3RpbWVfbXMpOworICB3cml0ZXJfLT5Xcml0ZUZyYW1lKGlucHV0X2ltYWdl
LCBjb2RlY19zcGVjaWZpY19pbmZvLT5jb2RlY1R5cGUpOworCisgIHJldHVybiByZXQ7Cit9CisK
K2ludDMyX3QgRnJhbWVEdW1waW5nRGVjb2Rlcjo6UmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxi
YWNrKAorICAgIERlY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgeworICByZXR1cm4gZGVj
b2Rlcl8tPlJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayhjYWxsYmFjayk7Cit9CisKK2lu
dDMyX3QgRnJhbWVEdW1waW5nRGVjb2Rlcjo6UmVsZWFzZSgpIHsKKyAgcmV0dXJuIGRlY29kZXJf
LT5SZWxlYXNlKCk7Cit9CisKK2Jvb2wgRnJhbWVEdW1waW5nRGVjb2Rlcjo6UHJlZmVyc0xhdGVE
ZWNvZGluZygpIGNvbnN0IHsKKyAgcmV0dXJuIGRlY29kZXJfLT5QcmVmZXJzTGF0ZURlY29kaW5n
KCk7Cit9CisKK2NvbnN0IGNoYXIqIEZyYW1lRHVtcGluZ0RlY29kZXI6OkltcGxlbWVudGF0aW9u
TmFtZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGRlY29kZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZnJhbWVfZHVtcGluZ19kZWNvZGVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9mcmFtZV9k
dW1waW5nX2RlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTllOWI0ZGIwODlkODM1YTJmM2ViODI1NTk0
MGUyNzFmZWMwOTBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZnJhbWVfZHVtcGluZ19kZWNvZGVyLmgKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgVklERU9fRlJBTUVfRFVN
UElOR19ERUNPREVSX0hfCisjZGVmaW5lIFZJREVPX0ZSQU1FX0RVTVBJTkdfREVDT0RFUl9IXwor
CisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19k
ZWNvZGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9pdmZfZmls
ZV93cml0ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmgiCisKK25hbWVz
cGFjZSB3ZWJydGMgeworCisvLyBBIGRlY29kZXIgd3JhcHBlciB0aGF0IHdyaXRlcyB0aGUgZW5j
b2RlZCBmcmFtZXMgdG8gYSBmaWxlLgorY2xhc3MgRnJhbWVEdW1waW5nRGVjb2RlciA6IHB1Ymxp
YyBWaWRlb0RlY29kZXIgeworIHB1YmxpYzoKKyAgRnJhbWVEdW1waW5nRGVjb2RlcihzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9EZWNvZGVyPiBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6UGxhdGZvcm1GaWxlIGZpbGUpOworICB+RnJhbWVEdW1waW5nRGVjb2RlcigpIG92ZXJyaWRl
OworCisgIGludDMyX3QgSW5pdERlY29kZShjb25zdCBWaWRlb0NvZGVjKiBjb2RlY19zZXR0aW5n
cywKKyAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbnVtYmVyX29mX2NvcmVzKSBvdmVycmlk
ZTsKKyAgaW50MzJfdCBEZWNvZGUoY29uc3QgRW5jb2RlZEltYWdlJiBpbnB1dF9pbWFnZSwKKyAg
ICAgICAgICAgICAgICAgYm9vbCBtaXNzaW5nX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAgY29u
c3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCisgICAgICAgICAgICAg
ICAgIGludDY0X3QgcmVuZGVyX3RpbWVfbXMpIG92ZXJyaWRlOworICBpbnQzMl90IFJlZ2lzdGVy
RGVjb2RlQ29tcGxldGVDYWxsYmFjaygKKyAgICAgIERlY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxs
YmFjaykgb3ZlcnJpZGU7CisgIGludDMyX3QgUmVsZWFzZSgpIG92ZXJyaWRlOworICBib29sIFBy
ZWZlcnNMYXRlRGVjb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgY29uc3QgY2hhciogSW1wbGVt
ZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorICBzdGQ6OnVuaXF1
ZV9wdHI8VmlkZW9EZWNvZGVyPiBkZWNvZGVyXzsKKyAgc3RkOjp1bmlxdWVfcHRyPEl2ZkZpbGVX
cml0ZXI+IHdyaXRlcl87Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAg
Ly8gVklERU9fRlJBTUVfRFVNUElOR19ERUNPREVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9mdWxsX3N0YWNrX3Rlc3RzLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZnVsbF9z
dGFja190ZXN0cy5jYwppbmRleCA3N2RhMjUzNDQ4OWEyYWFlODAyN2RjNzllYTgzOGExMmQxZWI5
NjdjLi45YThkMjUyYmZjYzUxYzZmYWQxM2I1NDE2OTAxNjE4NzAyMTA0ZTk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9mdWxsX3N0
YWNrX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL2Z1bGxfc3RhY2tfdGVzdHMuY2MKQEAgLTIyLDIxICsyMiwyNCBAQAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgZmxhZ3MgewogCi1ERUZJTkVfc3RyaW5nKHJ0Y19ldmVu
dF9sb2dfbmFtZSwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJGaWxlbmFtZSBm
b3IgcnRjIGV2ZW50IGxvZy4gVHdvIGZpbGVzICIKLSAgICAgICAgICAgICAgIndpdGggXCJfc2Vu
ZFwiIGFuZCBcIl9yZWN2XCIgc3VmZml4ZXMgd2lsbCBiZSBjcmVhdGVkLiIpOworV0VCUlRDX0RF
RklORV9zdHJpbmcocnRjX2V2ZW50X2xvZ19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIiIs
CisgICAgICAgICAgICAgICAgICAgICAiRmlsZW5hbWUgZm9yIHJ0YyBldmVudCBsb2cuIFR3byBm
aWxlcyAiCisgICAgICAgICAgICAgICAgICAgICAid2l0aCBcIl9zZW5kXCIgYW5kIFwiX3JlY3Zc
IiBzdWZmaXhlcyB3aWxsIGJlIGNyZWF0ZWQuIik7CiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ05h
bWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19ydGNfZXZlbnRf
bG9nX25hbWUpOwogfQotREVGSU5FX3N0cmluZyhydHBfZHVtcF9uYW1lLCAiIiwgIkZpbGVuYW1l
IGZvciBkdW1wZWQgcmVjZWl2ZWQgUlRQIHN0cmVhbS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KHJ0cF9kdW1wX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAg
ICAgICAgICJGaWxlbmFtZSBmb3IgZHVtcGVkIHJlY2VpdmVkIFJUUCBzdHJlYW0uIik7CiBzdGQ6
OnN0cmluZyBSdHBEdW1wTmFtZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5n
PihGTEFHX3J0cF9kdW1wX25hbWUpOwogfQotREVGSU5FX3N0cmluZyhlbmNvZGVkX2ZyYW1lX3Bh
dGgsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiVGhlIGJhc2UgcGF0aCBmb3Ig
ZW5jb2RlZCBmcmFtZSBsb2dzLiBDcmVhdGVkIGZpbGVzIHdpbGwgaGF2ZSAiCi0gICAgICAgICAg
ICAgICJ0aGUgZm9ybSA8ZW5jb2RlZF9mcmFtZV9wYXRoPi48bj4uKHJlY3Z8c2VuZC48bT4pLml2
ZiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgZW5jb2RlZF9mcmFtZV9wYXRoLAorICAg
ICIiLAorICAgICJUaGUgYmFzZSBwYXRoIGZvciBlbmNvZGVkIGZyYW1lIGxvZ3MuIENyZWF0ZWQg
ZmlsZXMgd2lsbCBoYXZlICIKKyAgICAidGhlIGZvcm0gPGVuY29kZWRfZnJhbWVfcGF0aD4uPG4+
LihyZWN2fHNlbmQuPG0+KS5pdmYiKTsKIHN0ZDo6c3RyaW5nIEVuY29kZWRGcmFtZVBhdGgoKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19lbmNvZGVkX2ZyYW1lX3Bh
dGgpOwogfQpAQCAtNDcsMTAgKzUwLDEwIEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBuYW1lc3Bh
Y2Ugewogc3RhdGljIGNvbnN0IGludCBrRnVsbFN0YWNrVGVzdER1cmF0aW9uU2VjcyA9IDQ1Owot
Y29uc3QgY2hhciBrU2NyZWVuc2hhcmVTaW11bGNhc3RFeHBlcmltZW50W10gPQotICAgICJXZWJS
VEMtU2ltdWxjYXN0U2NyZWVuc2hhcmUvRW5hYmxlZC8iOwogY29uc3QgY2hhciBrUGFjZXJQdXNo
QmFja0V4cGVyaW1lbnRbXSA9CiAgICAgIldlYlJUQy1QYWNlclB1c2hiYWNrRXhwZXJpbWVudC9F
bmFibGVkLyI7Citjb25zdCBjaGFyIGtWcDhUcnVzdGVkUmF0ZUNvbnRyb2xsZXJGaWVsZFRyaWFs
W10gPQorICAgICJXZWJSVEMtTGlidnB4VnA4VHJ1c3RlZFJhdGVDb250cm9sbGVyL0VuYWJsZWQv
IjsKIAogc3RydWN0IFBhcmFtc1dpdGhMb2dnaW5nIDogcHVibGljIFZpZGVvUXVhbGl0eVRlc3Q6
OlBhcmFtcyB7CiAgcHVibGljOgpAQCAtNTgsNyArNjEsNyBAQCBzdHJ1Y3QgUGFyYW1zV2l0aExv
Z2dpbmcgOiBwdWJsaWMgVmlkZW9RdWFsaXR5VGVzdDo6UGFyYW1zIHsKICAgICAvLyBVc2UgdGhl
c2UgbG9nZ2luZyBmbGFncyBieSBkZWZhdWx0LCBmb3IgZXZlcnl0aGluZy4KICAgICBsb2dnaW5n
ID0ge2ZsYWdzOjpSdGNFdmVudExvZ05hbWUoKSwgZmxhZ3M6OlJ0cER1bXBOYW1lKCksCiAgICAg
ICAgICAgICAgICBmbGFnczo6RW5jb2RlZEZyYW1lUGF0aCgpfTsKLSAgICB0aGlzLT5jb25maWcg
PSBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKTsKKyAgICB0aGlzLT5jb25maWcgPSBC
dWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCk7CiAgIH0KIH07CiAKQEAgLTEwNiw3ICsxMDks
NyBAQCBjbGFzcyBHZW5lcmljRGVzY3JpcHRvclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7CiAgIGJvb2wgZ2VuZXJpY19kZXNjcmlwdG9yX2VuYWJs
ZWRfOwogfTsKIAotI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyNpZiBkZWZpbmVkKFJU
Q19FTkFCTEVfVlA5KQogVEVTVChGdWxsU3RhY2tUZXN0LCBGb3JlbWFuQ2lmV2l0aG91dFBhY2tl
dExvc3NWcDkpIHsKICAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1
cmUoKTsKICAgUGFyYW1zV2l0aExvZ2dpbmcgZm9yZW1hbl9jaWY7CkBAIC0xODcsNyArMTkwLDcg
QEAgVEVTVChGdWxsU3RhY2tUZXN0LCBHZW5lcmF0b3JXaXRob3V0UGFja2V0TG9zc011bHRpcGxl
eEk0MjBBRnJhbWUpIHsKICAgZml4dHVyZS0+UnVuV2l0aEFuYWx5emVyKGdlbmVyYXRvcik7CiB9
CiAKLSNlbmRpZiAgLy8gIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2VuZGlmICAvLyBkZWZp
bmVkKFJUQ19FTkFCTEVfVlA5KQogCiAjaWYgZGVmaW5lZChXRUJSVENfTElOVVgpCiAvLyBDcmFz
aGVzIG9uIHRoZSBsaW51eCB0cnVzdHkgcGVyZiBib3Q6IGJ1Z3Mud2VicnRjLm9yZy85MTI5LgpA
QCAtMjM0LDYgKzIzNywyNSBAQCBURVNUX1AoR2VuZXJpY0Rlc2NyaXB0b3JUZXN0LCBGb3JlbWFu
Q2lmMzBrYnBzV2l0aG91dFBhY2tldExvc3MpIHsKICAgZml4dHVyZS0+UnVuV2l0aEFuYWx5emVy
KGZvcmVtYW5fY2lmKTsKIH0KIAorLy8gVE9ETyh3ZWJydGM6OTcyMik6IFJlbW92ZSB3aGVuIGV4
cGVyaW1lbnQgaXMgY2xlYW5lZCB1cC4KK1RFU1RfUChHZW5lcmljRGVzY3JpcHRvclRlc3QsCisg
ICAgICAgRm9yZW1hbkNpZjMwa2Jwc1dpdGhvdXRQYWNrZXRMb3NzVHJ1c3RlZFJhdGVDb250cm9s
KSB7CisgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscygKKyAg
ICAgIEFwcGVuZEZpZWxkVHJpYWxzKGtWcDhUcnVzdGVkUmF0ZUNvbnRyb2xsZXJGaWVsZFRyaWFs
KSk7CisgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CisK
KyAgUGFyYW1zV2l0aExvZ2dpbmcgZm9yZW1hbl9jaWY7CisgIGZvcmVtYW5fY2lmLmNhbGwuc2Vu
ZF9zaWRlX2J3ZSA9IHRydWU7CisgIGZvcmVtYW5fY2lmLnZpZGVvWzBdID0ge3RydWUsICAzNTIs
ICAgICAgICAgIDI4OCwgMTAsIDMwMDAwLCAzMDAwMCwgMzAwMDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZhbHNlLCAiVlA4IiwgICAgICAgIDEsICAgMCwgIDAsICAgICBmYWxzZSwgZmFs
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAiZm9yZW1hbl9jaWYifTsKKyAg
Zm9yZW1hbl9jaWYuYW5hbHl6ZXIgPSB7CisgICAgICBHZXRUZXN0TmFtZSgiZm9yZW1hbl9jaWZf
MzBrYnBzX25ldF9kZWxheV8wXzBfcGxyXzBfdHJ1c3RlZF9yYXRlX2N0cmwiKSwKKyAgICAgIDAu
MCwgMC4wLCBrRnVsbFN0YWNrVGVzdER1cmF0aW9uU2Vjc307CisgIGZvcmVtYW5fY2lmLmNhbGwu
Z2VuZXJpY19kZXNjcmlwdG9yID0gR2VuZXJpY0Rlc2NyaXB0b3JFbmFibGVkKCk7CisgIGZpeHR1
cmUtPlJ1bldpdGhBbmFseXplcihmb3JlbWFuX2NpZik7Cit9CisKIC8vIExpbmsgY2FwYWNpdHkg
YmVsb3cgZGVmYXVsdCBzdGFydCByYXRlLiBBdXRvbWF0aWMgZG93biBzY2FsaW5nIGVuYWJsZWQu
CiBURVNUKEZ1bGxTdGFja1Rlc3QsIEZvcmVtYW5DaWZMaW5rMTUwa2Jwc1dpdGhvdXRQYWNrZXRM
b3NzKSB7CiAgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7
CkBAIC0zNjUsOSArMzg3LDkgQEAgVEVTVF9QKEdlbmVyaWNEZXNjcmlwdG9yVGVzdCwgRm9yZW1h
bkNpZlBscjVIMjY0KSB7CiB9CiAKIFRFU1QoRnVsbFN0YWNrVGVzdCwgRm9yZW1hbkNpZlBscjVI
MjY0U3BzUHBzSWRySXNLZXlmcmFtZSkgewotICBhdXRvIGZpeHR1cmUgPSBDcmVhdGVWaWRlb1F1
YWxpdHlUZXN0Rml4dHVyZSgpOwogICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9m
aWVsZF90cmlhbHMoCiAgICAgICBBcHBlbmRGaWVsZFRyaWFscygiV2ViUlRDLVNwc1Bwc0lkcklz
SDI2NEtleWZyYW1lL0VuYWJsZWQvIikpOworICBhdXRvIGZpeHR1cmUgPSBDcmVhdGVWaWRlb1F1
YWxpdHlUZXN0Rml4dHVyZSgpOwogCiAgIFBhcmFtc1dpdGhMb2dnaW5nIGZvcmVtYW5fY2lmOwog
ICBmb3JlbWFuX2NpZi5jYWxsLnNlbmRfc2lkZV9id2UgPSB0cnVlOwpAQCAtNTIxLDE2ICs1NDMs
MjEgQEAgVEVTVChGdWxsU3RhY2tUZXN0LCBDb25mZXJlbmNlTW90aW9uSGQyMDAwa2JwczEwMG1z
TGltaXRlZFF1ZXVlKSB7CiAgIGZpeHR1cmUtPlJ1bldpdGhBbmFseXplcihjb25mX21vdGlvbl9o
ZCk7CiB9CiAKLVRFU1QoRnVsbFN0YWNrVGVzdCwgQ29uZmVyZW5jZU1vdGlvbkhkMVRMTW9kZXJh
dGVMaW1pdHMpIHsKKy8vIFRPRE8od2VicnRjOjk3MjIpOiBSZW1vdmUgd2hlbiBleHBlcmltZW50
IGlzIGNsZWFuZWQgdXAuCitURVNUKEZ1bGxTdGFja1Rlc3QsIENvbmZlcmVuY2VNb3Rpb25IZDFU
TE1vZGVyYXRlTGltaXRzV2hpdGVsaXN0VnA4KSB7CisgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxz
IG92ZXJyaWRlX2ZpZWxkX3RyaWFscygKKyAgICAgIEFwcGVuZEZpZWxkVHJpYWxzKGtWcDhUcnVz
dGVkUmF0ZUNvbnRyb2xsZXJGaWVsZFRyaWFsKSk7CiAgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZp
ZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CisKICAgUGFyYW1zV2l0aExvZ2dpbmcgY29uZl9tb3Rp
b25faGQ7CiAgIGNvbmZfbW90aW9uX2hkLmNhbGwuc2VuZF9zaWRlX2J3ZSA9IHRydWU7CiAgIGNv
bmZfbW90aW9uX2hkLnZpZGVvWzBdID0gewogICAgICAgdHJ1ZSwgICAgMTI4MCwgICAgNzIwLCAg
IDUwLCAgICAzMDAwMCwKICAgICAgIDMwMDAwMDAsIDMwMDAwMDAsIGZhbHNlLCAiVlA4IiwgMSwK
ICAgICAgIC0xLCAgICAgIDAsICAgICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsICJDb25mZXJlbmNl
TW90aW9uXzEyODBfNzIwXzUwIn07Ci0gIGNvbmZfbW90aW9uX2hkLmFuYWx5emVyID0geyJjb25m
ZXJlbmNlX21vdGlvbl9oZF8xdGxfbW9kZXJhdGVfbGltaXRzIiwgMC4wLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjAsIGtGdWxsU3RhY2tUZXN0RHVyYXRpb25TZWNzfTsKKyAgY29u
Zl9tb3Rpb25faGQuYW5hbHl6ZXIgPSB7CisgICAgICAiY29uZmVyZW5jZV9tb3Rpb25faGRfMXRs
X21vZGVyYXRlX2xpbWl0c190cnVzdGVkX3JhdGVfY3RybCIsIDAuMCwgMC4wLAorICAgICAga0Z1
bGxTdGFja1Rlc3REdXJhdGlvblNlY3N9OwogICBjb25mX21vdGlvbl9oZC5jb25maWctPnF1ZXVl
X2xlbmd0aF9wYWNrZXRzID0gNTA7CiAgIGNvbmZfbW90aW9uX2hkLmNvbmZpZy0+bG9zc19wZXJj
ZW50ID0gMzsKICAgY29uZl9tb3Rpb25faGQuY29uZmlnLT5xdWV1ZV9kZWxheV9tcyA9IDEwMDsK
QEAgLTU5MiwxNyArNjE5LDQwIEBAIFRFU1QoRnVsbFN0YWNrVGVzdCwgQ29uZmVyZW5jZU1vdGlv
bkhkNFRMTW9kZXJhdGVMaW1pdHMpIHsKIH0KIAogVEVTVChGdWxsU3RhY2tUZXN0LCBDb25mZXJl
bmNlTW90aW9uSGQzVExNb2RlcmF0ZUxpbWl0c0FsdFRMUGF0dGVybikgewotICBhdXRvIGZpeHR1
cmUgPSBDcmVhdGVWaWRlb1F1YWxpdHlUZXN0Rml4dHVyZSgpOwogICB0ZXN0OjpTY29wZWRGaWVs
ZFRyaWFscyBmaWVsZF90cmlhbCgKICAgICAgIEFwcGVuZEZpZWxkVHJpYWxzKCJXZWJSVEMtVXNl
U2hvcnRWUDhUTDNQYXR0ZXJuL0VuYWJsZWQvIikpOworICBhdXRvIGZpeHR1cmUgPSBDcmVhdGVW
aWRlb1F1YWxpdHlUZXN0Rml4dHVyZSgpOworICBQYXJhbXNXaXRoTG9nZ2luZyBjb25mX21vdGlv
bl9oZDsKKyAgY29uZl9tb3Rpb25faGQuY2FsbC5zZW5kX3NpZGVfYndlID0gdHJ1ZTsKKyAgY29u
Zl9tb3Rpb25faGQudmlkZW9bMF0gPSB7CisgICAgICB0cnVlLCAgMTI4MCwgICAgNzIwLCAgICAg
NTAsCisgICAgICAzMDAwMCwgMzAwMDAwMCwgMzAwMDAwMCwgZmFsc2UsCisgICAgICAiVlA4Iiwg
MywgICAgICAgLTEsICAgICAgMCwKKyAgICAgIGZhbHNlLCBmYWxzZSwgICBmYWxzZSwgICAiQ29u
ZmVyZW5jZU1vdGlvbl8xMjgwXzcyMF81MCJ9OworICBjb25mX21vdGlvbl9oZC5hbmFseXplciA9
IHsiY29uZmVyZW5jZV9tb3Rpb25faGRfM3RsX2FsdF9tb2RlcmF0ZV9saW1pdHMiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjAsIDAuMCwga0Z1bGxTdGFja1Rlc3REdXJhdGlvblNl
Y3N9OworICBjb25mX21vdGlvbl9oZC5jb25maWctPnF1ZXVlX2xlbmd0aF9wYWNrZXRzID0gNTA7
CisgIGNvbmZfbW90aW9uX2hkLmNvbmZpZy0+bG9zc19wZXJjZW50ID0gMzsKKyAgY29uZl9tb3Rp
b25faGQuY29uZmlnLT5xdWV1ZV9kZWxheV9tcyA9IDEwMDsKKyAgY29uZl9tb3Rpb25faGQuY29u
ZmlnLT5saW5rX2NhcGFjaXR5X2ticHMgPSAyMDAwOworICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6
ZXIoY29uZl9tb3Rpb25faGQpOworfQorCitURVNUKEZ1bGxTdGFja1Rlc3QsCisgICAgIENvbmZl
cmVuY2VNb3Rpb25IZDNUTE1vZGVyYXRlTGltaXRzQWx0VExQYXR0ZXJuQW5kQmFzZUhlYXZ5VExB
bGxvY2F0aW9uKSB7CisgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0
dXJlKCk7CisgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFsKAorICAgICAgQXBw
ZW5kRmllbGRUcmlhbHMoIldlYlJUQy1Vc2VTaG9ydFZQOFRMM1BhdHRlcm4vRW5hYmxlZC8iCisg
ICAgICAgICAgICAgICAgICAgICAgICAiV2ViUlRDLVVzZUJhc2VIZWF2eVZQOFRMM1JhdGVBbGxv
Y2F0aW9uL0VuYWJsZWQvIikpOwogICBQYXJhbXNXaXRoTG9nZ2luZyBjb25mX21vdGlvbl9oZDsK
ICAgY29uZl9tb3Rpb25faGQuY2FsbC5zZW5kX3NpZGVfYndlID0gdHJ1ZTsKICAgY29uZl9tb3Rp
b25faGQudmlkZW9bMF0gPSB7CiAgICAgICB0cnVlLCAgICAxMjgwLCAgICA3MjAsICAgNTAsICAg
IDMwMDAwLAogICAgICAgMzAwMDAwMCwgMzAwMDAwMCwgZmFsc2UsICJWUDgiLCAzLAogICAgICAg
LTEsICAgICAgMCwgICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgIkNvbmZlcmVuY2VNb3Rpb25f
MTI4MF83MjBfNTAifTsKLSAgY29uZl9tb3Rpb25faGQuYW5hbHl6ZXIgPSB7ImNvbmZlcmVuY2Vf
bW90aW9uX2hkXzN0bF9hbHRfbW9kZXJhdGVfbGltaXRzIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4wLCAwLjAsIGtGdWxsU3RhY2tUZXN0RHVyYXRpb25TZWNzfTsKKyAgY29uZl9t
b3Rpb25faGQuYW5hbHl6ZXIgPSB7CisgICAgICAiY29uZmVyZW5jZV9tb3Rpb25faGRfM3RsX2Fs
dF9oZWF2eV9tb2RlcmF0ZV9saW1pdHMiLCAwLjAsIDAuMCwKKyAgICAgIGtGdWxsU3RhY2tUZXN0
RHVyYXRpb25TZWNzfTsKICAgY29uZl9tb3Rpb25faGQuY29uZmlnLT5xdWV1ZV9sZW5ndGhfcGFj
a2V0cyA9IDUwOwogICBjb25mX21vdGlvbl9oZC5jb25maWctPmxvc3NfcGVyY2VudCA9IDM7CiAg
IGNvbmZfbW90aW9uX2hkLmNvbmZpZy0+cXVldWVfZGVsYXlfbXMgPSAxMDA7CkBAIC02MTAsNyAr
NjYwLDcgQEAgVEVTVChGdWxsU3RhY2tUZXN0LCBDb25mZXJlbmNlTW90aW9uSGQzVExNb2RlcmF0
ZUxpbWl0c0FsdFRMUGF0dGVybikgewogICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6ZXIoY29uZl9t
b3Rpb25faGQpOwogfQogCi0jaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2lmIGRlZmlu
ZWQoUlRDX0VOQUJMRV9WUDkpCiBURVNUKEZ1bGxTdGFja1Rlc3QsIENvbmZlcmVuY2VNb3Rpb25I
ZDIwMDBrYnBzMTAwbXNMaW1pdGVkUXVldWVWUDkpIHsKICAgYXV0byBmaXh0dXJlID0gQ3JlYXRl
VmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKICAgUGFyYW1zV2l0aExvZ2dpbmcgY29uZl9tb3Rp
b25faGQ7CkBAIC02NDIsOSArNjkyLDE1IEBAIFRFU1QoRnVsbFN0YWNrVGVzdCwgU2NyZWVuc2hh
cmVTbGlkZXNWUDhfMlRMKSB7CiAgIGZpeHR1cmUtPlJ1bldpdGhBbmFseXplcihzY3JlZW5zaGFy
ZSk7CiB9CiAKKy8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk4NDApOiBJbnZlc3RpZ2F0ZSB3aHkg
aXMgdGhpcyB0ZXN0IGZsYWt5IG9uIE1BQy4KKyNpZiAhZGVmaW5lZChXRUJSVENfTUFDKQorY29u
c3QgY2hhciBrU2NyZWVuc2hhcmVTaW11bGNhc3RFeHBlcmltZW50W10gPQorICAgICJXZWJSVEMt
U2ltdWxjYXN0U2NyZWVuc2hhcmUvRW5hYmxlZC8iOworCiBURVNUKEZ1bGxTdGFja1Rlc3QsIFNj
cmVlbnNoYXJlU2xpZGVzVlA4XzNUTF9TaW11bGNhc3QpIHsKKyAgdGVzdDo6U2NvcGVkRmllbGRU
cmlhbHMgZmllbGRfdHJpYWwoCisgICAgICBBcHBlbmRGaWVsZFRyaWFscyhrU2NyZWVuc2hhcmVT
aW11bGNhc3RFeHBlcmltZW50KSk7CiAgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0
eVRlc3RGaXh0dXJlKCk7Ci0gIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFsKGtT
Y3JlZW5zaGFyZVNpbXVsY2FzdEV4cGVyaW1lbnQpOwogICBQYXJhbXNXaXRoTG9nZ2luZyBzY3Jl
ZW5zaGFyZTsKICAgc2NyZWVuc2hhcmUuY2FsbC5zZW5kX3NpZGVfYndlID0gdHJ1ZTsKICAgc2Ny
ZWVuc2hhcmUuc2NyZWVuc2hhcmVbMF0gPSB7dHJ1ZSwgZmFsc2UsIDEwfTsKQEAgLTY3MCw2ICs3
MjYsNyBAQCBURVNUKEZ1bGxTdGFja1Rlc3QsIFNjcmVlbnNoYXJlU2xpZGVzVlA4XzNUTF9TaW11
bGNhc3QpIHsKICAgICAgIGZhbHNlfTsKICAgZml4dHVyZS0+UnVuV2l0aEFuYWx5emVyKHNjcmVl
bnNoYXJlKTsKIH0KKyNlbmRpZiAgLy8gIWRlZmluZWQoV0VCUlRDX01BQykKIAogVEVTVChGdWxs
U3RhY2tUZXN0LCBTY3JlZW5zaGFyZVNsaWRlc1ZQOF8yVExfU2Nyb2xsKSB7CiAgIGF1dG8gZml4
dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CkBAIC03NzEsNyArODI4LDcg
QEAgY29uc3QgUGFyYW1zV2l0aExvZ2dpbmc6OlZpZGVvIGtTaW11bGNhc3RWcDhWaWRlb0xvdyA9
IHsKICAgICAxNTAwMDAsIDIwMDAwMCwgZmFsc2UsICJWUDgiLCAzLAogICAgIDIsICAgICAgNDAw
MDAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAiQ29uZmVyZW5jZU1vdGlvbl8xMjgwXzcyMF81MCJ9
OwogCi0jaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2lmIGRlZmluZWQoUlRDX0VOQUJM
RV9WUDkpCiBURVNUKEZ1bGxTdGFja1Rlc3QsIFNjcmVlbnNoYXJlU2xpZGVzVlA5XzJTTCkgewog
ICBhdXRvIGZpeHR1cmUgPSBDcmVhdGVWaWRlb1F1YWxpdHlUZXN0Rml4dHVyZSgpOwogICBQYXJh
bXNXaXRoTG9nZ2luZyBzY3JlZW5zaGFyZTsKQEAgLTg5MSw5ICs5NDgsMjggQEAgVEVTVChGdWxs
U3RhY2tUZXN0LCBWUDlLU1ZDXzNTTF9NZWRpdW1fTmV0d29ya19SZXN0cmljdGVkKSB7CiAgIHNp
bXVsY2FzdC5jb25maWctPnF1ZXVlX2RlbGF5X21zID0gMTAwOwogICBmaXh0dXJlLT5SdW5XaXRo
QW5hbHl6ZXIoc2ltdWxjYXN0KTsKIH0KKworLy8gVE9ETyh3ZWJydGM6OTcyMik6IFJlbW92ZSB3
aGVuIGV4cGVyaW1lbnQgaXMgY2xlYW5lZCB1cC4KK1RFU1QoRnVsbFN0YWNrVGVzdCwgVlA5S1NW
Q18zU0xfTWVkaXVtX05ldHdvcmtfUmVzdHJpY3RlZF9UcnVzdGVkX1JhdGUpIHsKKyAgd2VicnRj
Ojp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV90cmlhbHMoCisgICAgICBBcHBlbmRG
aWVsZFRyaWFscygiV2ViUlRDLVZwOUlzc3VlS2V5RnJhbWVPbkxheWVyRGVhY3RpdmF0aW9uL0Vu
YWJsZWQvIgorICAgICAgICAgICAgICAgICAgICAgICAgIldlYlJUQy1MaWJ2cHhWcDlUcnVzdGVk
UmF0ZUNvbnRyb2xsZXIvRW5hYmxlZC8iKSk7CisgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVv
UXVhbGl0eVRlc3RGaXh0dXJlKCk7CisgIFBhcmFtc1dpdGhMb2dnaW5nIHNpbXVsY2FzdDsKKyAg
c2ltdWxjYXN0LmNhbGwuc2VuZF9zaWRlX2J3ZSA9IHRydWU7CisgIHNpbXVsY2FzdC52aWRlb1sw
XSA9IGtTdmNWcDlWaWRlbzsKKyAgc2ltdWxjYXN0LmFuYWx5emVyID0geyJ2cDlrc3ZjXzNzbF9t
ZWRpdW1fbmV0d29ya19yZXN0cmljdGVkX3RydXN0ZWRfcmF0ZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAwLjAsIDAuMCwga0Z1bGxTdGFja1Rlc3REdXJhdGlvblNlY3N9OworICBzaW11bGNh
c3Quc3NbMF0gPSB7CisgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4oKSwgIDAsICAgIDMs
IC0xLCBJbnRlckxheWVyUHJlZE1vZGU6OmtPbktleVBpYywKKyAgICAgIHN0ZDo6dmVjdG9yPFNw
YXRpYWxMYXllcj4oKSwgZmFsc2V9OworICBzaW11bGNhc3QuY29uZmlnLT5saW5rX2NhcGFjaXR5
X2ticHMgPSAxMDAwOworICBzaW11bGNhc3QuY29uZmlnLT5xdWV1ZV9kZWxheV9tcyA9IDEwMDsK
KyAgZml4dHVyZS0+UnVuV2l0aEFuYWx5emVyKHNpbXVsY2FzdCk7Cit9CiAjZW5kaWYgIC8vICFk
ZWZpbmVkKFdFQlJUQ19NQUMpCiAKLSNlbmRpZiAgLy8gIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5
KQorI2VuZGlmICAvLyBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogCiAvLyBBbmRyb2lkIGJvdHMg
Y2FuJ3QgaGFuZGxlIEZ1bGxIRCwgc28gZGlzYWJsZSB0aGUgdGVzdC4KIC8vIFRPRE8oYnVncy53
ZWJydGMub3JnLzkyMjApOiBJbnZlc3RpZ2F0ZSBzb3VyY2Ugb2YgZmxha2luZXNzIG9uIE1hYy4K
QEAgLTExMDQsNyArMTE4MCw4IEBAIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZ1bGxTdGFja1Rl
c3QsCiBjbGFzcyBEdWFsU3RyZWFtc1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPGludD4ge307CiAKIC8vIERpc2FibGUgZHVhbCB2aWRlbyB0ZXN0IG9uIG1vYmlsZSBkZXZp
Y2UgYmVjdWFzZSBpdCdzIHRvbyBoZWF2eS4KLSNpZiAhZGVmaW5lZChXRUJSVENfQU5EUk9JRCkg
JiYgIWRlZmluZWQoV0VCUlRDX0lPUykKKy8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk4NDApOiBJ
bnZlc3RpZ2F0ZSB3aHkgaXMgdGhpcyB0ZXN0IGZsYWt5IG9uIE1BQy4KKyNpZiAhZGVmaW5lZChX
RUJSVENfQU5EUk9JRCkgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykgJiYgIWRlZmluZWQoV0VCUlRD
X01BQykKIFRFU1RfUChEdWFsU3RyZWFtc1Rlc3QsCiAgICAgICAgTW9kZXJhdGVseVJlc3RyaWN0
ZWRfU2xpZGVzVnA4XzNUTF9TaW11bGNhc3RfVmlkZW9fU2ltdWxjYXN0X0hpZ2gpIHsKICAgdGVz
dDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWwoCkBAIC0xMTY4LDcgKzEyNDUsOCBAQCBU
RVNUX1AoRHVhbFN0cmVhbXNUZXN0LAogICBhdXRvIGZpeHR1cmUgPSBDcmVhdGVWaWRlb1F1YWxp
dHlUZXN0Rml4dHVyZSgpOwogICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6ZXIoZHVhbF9zdHJlYW1z
KTsKIH0KLSNlbmRpZiAgLy8gIWRlZmluZWQoV0VCUlRDX0FORFJPSUQpICYmICFkZWZpbmVkKFdF
QlJUQ19JT1MpCisjZW5kaWYgIC8vICFkZWZpbmVkKFdFQlJUQ19BTkRST0lEKSAmJiAhZGVmaW5l
ZChXRUJSVENfSU9TKSAmJgorICAgICAgICAvLyAhZGVmaW5lZChXRUJSVENfTUFDKQogCiBURVNU
X1AoRHVhbFN0cmVhbXNUZXN0LCBDb25mZXJlbmNlX1Jlc3RyaWN0ZWQpIHsKICAgdGVzdDo6U2Nv
cGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWwoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9vdmVydXNlX2ZyYW1lX2RldGVjdG9yX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vb3ZlcnVzZV9mcmFtZV9kZXRlY3Rvcl91bml0dGVzdC5jYwppbmRleCBhYzAxOTc1NGM1NGUy
NjFkYTE3ZmFiODljOTY0MDFkNjdlYzYxY2I4Li45MTA1MGQ1MDU2ZjAxYjRjZmU3OThkMjg4Mzc0
MWNmNDNiM2M4Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9vdmVydXNlX2ZyYW1lX2RldGVjdG9yX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL292ZXJ1c2Vf
ZnJhbWVfZGV0ZWN0b3JfdW5pdHRlc3QuY2MKQEAgLTEwLDggKzEwLDggQEAKIAogI2luY2x1ZGUg
PG1lbW9yeT4KIAorI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCiAjaW5jbHVk
ZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1
ZGUvdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5
L3F1YWxpdHlfc2NhbGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9mYWtlY2xvY2suaCIKQEAgLTQwNiw3ICs0MDYsNyBAQCBURVNUX0YoT3ZlcnVz
ZUZyYW1lRGV0ZWN0b3JUZXN0LCBVcGRhdGVzRXhpc3RpbmdTYW1wbGVzKSB7CiBURVNUX0YoT3Zl
cnVzZUZyYW1lRGV0ZWN0b3JUZXN0LCBSdW5PblRxTm9ybWFsVXNhZ2UpIHsKICAgcnRjOjpUYXNr
UXVldWUgcXVldWUoIk92ZXJ1c2VGcmFtZURldGVjdG9yVGVzdFF1ZXVlIik7CiAKLSAgcnRjOjpF
dmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGV2ZW50OwogICBxdWV1ZS5Q
b3N0VGFzayhbdGhpcywgJmV2ZW50XSB7CiAgICAgb3ZlcnVzZV9kZXRlY3Rvcl8tPlN0YXJ0Q2hl
Y2tGb3JPdmVydXNlKG9wdGlvbnNfLCBvYnNlcnZlcl8pOwogICAgIGV2ZW50LlNldCgpOwpAQCAt
ODcwLDcgKzg3MCw3IEBAIFRFU1RfRihPdmVydXNlRnJhbWVEZXRlY3RvclRlc3QyLCBVcGRhdGVz
RXhpc3RpbmdTYW1wbGVzKSB7CiBURVNUX0YoT3ZlcnVzZUZyYW1lRGV0ZWN0b3JUZXN0MiwgUnVu
T25UcU5vcm1hbFVzYWdlKSB7CiAgIHJ0Yzo6VGFza1F1ZXVlIHF1ZXVlKCJPdmVydXNlRnJhbWVE
ZXRlY3RvclRlc3RRdWV1ZSIpOwogCi0gIHJ0Yzo6RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsK
KyAgcnRjOjpFdmVudCBldmVudDsKICAgcXVldWUuUG9zdFRhc2soW3RoaXMsICZldmVudF0gewog
ICAgIG92ZXJ1c2VfZGV0ZWN0b3JfLT5TdGFydENoZWNrRm9yT3ZlcnVzZShvcHRpb25zXywgb2Jz
ZXJ2ZXJfKTsKICAgICBldmVudC5TZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3BpY3R1cmVfaWRfdGVzdHMuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9waWN0dXJlX2lkX3Rl
c3RzLmNjCmluZGV4IDE1NWRhMTNhZTQ5ZGM0OTY3YWJhOWFiMjc2OTBmMzgzYzVmZjM3ZjQuLjZj
ZTBjOTlmZmU3YjMyNzAxYWEyNTI4OWMxMGVkZGU1N2QyMjkxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3BpY3R1cmVfaWRfdGVz
dHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vcGljdHVyZV9pZF90ZXN0cy5jYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAi
YXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9m
dW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJjYWxsL2Zha2VfbmV0
d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29yay5oIgogI2luY2x1
ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGVuY29kZXJmYWN0b3J5LmgiCkBAIC0xOSw3ICsyMCw2
IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NlcXVlbmNlX251bWJlcl91dGlsLmgiCiAjaW5jbHVk
ZSAidGVzdC9jYWxsX3Rlc3QuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29k
ZXJfZmFjdG9yeS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CkBAIC0yOTks
NyArMjk5LDcgQEAgdm9pZCBQaWN0dXJlSWRUZXN0OjpTZXR1cEVuY29kZXIoVmlkZW9FbmNvZGVy
RmFjdG9yeSogZW5jb2Rlcl9mYWN0b3J5LAogICAgICAgICB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6
OmtTZW5kZXIsIHBheWxvYWRfdHlwZV9tYXBfLAogICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxG
YWtlTmV0d29ya1BpcGU+KAogICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwg
YWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkp
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5O
ZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpKSk7CiAKICAgICBDcmVhdGVTZW5kQ29uZmlnKGtOdW1T
aW11bGNhc3RTdHJlYW1zLCAwLCAwLCBzZW5kX3RyYW5zcG9ydF8uZ2V0KCkpOwogICAgIEdldFZp
ZGVvU2VuZENvbmZpZygpLT5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9IGVuY29k
ZXJfZmFjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL3F1YWxpdHlfc2NhbGluZ190ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3F1YWxpdHlfc2NhbGluZ190ZXN0cy5j
YwppbmRleCA5YjFkMGZhZWZmMjEyOGM3ZWFjY2MyNGU3MmIxNzY4NjcwMjc3OTA0Li4wMTMyOGY4
MTkyNTcyNWYyMDYyYjBkZmM0NjJjNzQxMWJjOTljY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9xdWFsaXR5X3NjYWxpbmdfdGVz
dHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vcXVhbGl0eV9zY2FsaW5nX3Rlc3RzLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRl
IDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNv
ZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFj
dG9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2luY2x1
ZGUvaDI2NC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5j
bHVkZS92cDguaCIKQEAgLTE3LDcgKzE4LDYgQEAKICNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5o
IgogI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJ0ZXN0L2ZyYW1lX2dl
bmVyYXRvcl9jYXB0dXJlci5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKQEAgLTEwMyw4
ICsxMDMsOSBAQCB2b2lkIFF1YWxpdHlTY2FsaW5nVGVzdDo6UnVuVGVzdChWaWRlb0VuY29kZXJG
YWN0b3J5KiBlbmNvZGVyX2ZhY3RvcnksCiAgICAgICBpZiAod2FudHMubWF4X3BpeGVsX2NvdW50
IDwga1dpZHRoICoga0hlaWdodCkKICAgICAgICAgb2JzZXJ2YXRpb25fY29tcGxldGVfLlNldCgp
OwogICAgIH0KLSAgICB2b2lkIE1vZGlmeVNlbmRlckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBj
b25maWcpIG92ZXJyaWRlIHsKLSAgICAgIGNvbmZpZy0+Yml0cmF0ZV9jb25maWcuc3RhcnRfYml0
cmF0ZV9icHMgPSBzdGFydF9icHNfOworICAgIHZvaWQgTW9kaWZ5U2VuZGVyQml0cmF0ZUNvbmZp
ZygKKyAgICAgICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykgb3ZlcnJpZGUg
eworICAgICAgYml0cmF0ZV9jb25maWctPnN0YXJ0X2JpdHJhdGVfYnBzID0gc3RhcnRfYnBzXzsK
ICAgICB9CiAKICAgICB2b2lkIE1vZGlmeVZpZGVvQ29uZmlncygKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlz
dGljc19wcm94eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94eS5jYwppbmRleCBjY2QyYzIwZjY1ZjhhNzI5
ZWVkMWRkNTZkMTc3Y2NlYWFjZThlZDdjLi5lMjBiN2QyOTRmZDYyMjQ5NDJjNzc5OGFlNjY0MDNi
NWQ4MzU3ZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0YXRpc3RpY3NfcHJveHkuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVjZWl2ZV9zdGF0aXN0aWNz
X3Byb3h5LmNjCkBAIC03NTksNiArNzU5LDkgQEAgdm9pZCBSZWNlaXZlU3RhdGlzdGljc1Byb3h5
OjpPblJlbmRlcmVkRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUpIHsKICAgUlRDX0RDSEVD
S19HVChoZWlnaHQsIDApOwogICBpbnQ2NF90IG5vd19tcyA9IGNsb2NrXy0+VGltZUluTWlsbGlz
ZWNvbmRzKCk7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfKTsKKworICB2aWRlb19xdWFs
aXR5X29ic2VydmVyXy0+T25SZW5kZXJlZEZyYW1lKG5vd19tcyk7CisKICAgQ29udGVudFNwZWNp
ZmljU3RhdHMqIGNvbnRlbnRfc3BlY2lmaWNfc3RhdHMgPQogICAgICAgJmNvbnRlbnRfc3BlY2lm
aWNfc3RhdHNfW2xhc3RfY29udGVudF90eXBlX107CiAgIHJlbmRlcnNfZnBzX2VzdGltYXRvcl8u
VXBkYXRlKDEsIG5vd19tcyk7CkBAIC04MTMsOCArODE2LDE1IEBAIHZvaWQgUmVjZWl2ZVN0YXRp
c3RpY3NQcm94eTo6T25Db21wbGV0ZUZyYW1lKGJvb2wgaXNfa2V5ZnJhbWUsCiAgICAgKytzdGF0
c18uZnJhbWVfY291bnRzLmRlbHRhX2ZyYW1lczsKICAgfQogCisgIC8vIENvbnRlbnQgdHlwZSBl
eHRlbnNpb24gaXMgc2V0IG9ubHkgZm9yIGtleWZyYW1lcyBhbmQgc2hvdWxkIGJlIHByb3BhZ2F0
ZWQKKyAgLy8gZm9yIGFsbCB0aGUgZm9sbG93aW5nIGRlbHRhIGZyYW1lcy4gSGVyZSB3ZSBtYXkg
cmVjZWl2ZSBmcmFtZXMgb3V0IG9mIG9yZGVyCisgIC8vIGFuZCBtaXNjYXRlZ29yaXNlIHNvbWUg
ZGVsdGEgZnJhbWVzIG5lYXIgdGhlIGxheWVyIHN3aXRjaC4KKyAgLy8gVGhpcyBtYXkgc2xpZ2h0
bHkgb2Zmc2V0IGNhbGN1bGF0ZWQgYml0cmF0ZSBhbmQga2V5ZnJhbWVzIHBlcm1pbGxlIG1ldHJp
Y3MuCisgIFZpZGVvQ29udGVudFR5cGUgcHJvcGFnYXRlZF9jb250ZW50X3R5cGUgPQorICAgICAg
aXNfa2V5ZnJhbWUgPyBjb250ZW50X3R5cGUgOiBsYXN0X2NvbnRlbnRfdHlwZV87CisKICAgQ29u
dGVudFNwZWNpZmljU3RhdHMqIGNvbnRlbnRfc3BlY2lmaWNfc3RhdHMgPQotICAgICAgJmNvbnRl
bnRfc3BlY2lmaWNfc3RhdHNfW2NvbnRlbnRfdHlwZV07CisgICAgICAmY29udGVudF9zcGVjaWZp
Y19zdGF0c19bcHJvcGFnYXRlZF9jb250ZW50X3R5cGVdOwogCiAgIGNvbnRlbnRfc3BlY2lmaWNf
c3RhdHMtPnRvdGFsX21lZGlhX2J5dGVzICs9IHNpemVfYnl0ZXM7CiAgIGlmIChpc19rZXlmcmFt
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vcmVjZWl2ZV9zdGF0aXN0aWNzX3Byb3h5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0YXRpc3RpY3NfcHJveHkuaApp
bmRleCA0ZGFlZmUwNDdkNjU4OTk0ZTg5M2JkODM1MzMyMGMzYzI4MWZjNmRlLi4xMDBlNzUxMTZj
NDczNjAwMjBjMjk0MDM2ZGY0ZTE4YjU5OTEyODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0YXRpc3RpY3NfcHJv
eHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9yZWNlaXZlX3N0YXRpc3RpY3NfcHJveHkuaApAQCAtMTgsOCArMTgsNiBAQAogCiAjaW5jbHVk
ZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImNhbGwvdmlkZW9fcmVjZWl2ZV9z
dHJlYW0uaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlKQotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL2ZyYW1lX2NhbGxiYWNrLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RpbmdfZGVmaW5l
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL251bWVyaWNzL2hpc3RvZ3JhbV9wZXJjZW50aWxlX2NvdW50ZXIuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2Vp
dmVfc3RhdGlzdGljc19wcm94eV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94eV91bml0dGVz
dC5jYwppbmRleCBiOGE5NmIyZjVlODI0MjQ4MzUxMjg1NjA2ZTA5M2FjZjY1ZTAxOGMyLi5iNzRl
NDYwMWFhYjBhOTE2ZTg0OTZhYzNlYTAyNGJlMWVhMTEwNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0YXRpc3Rp
Y3NfcHJveHlfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vcmVjZWl2ZV9zdGF0aXN0aWNzX3Byb3h5X3VuaXR0ZXN0LmNjCkBA
IC0xMDU3LDE1ICsxMDU3LDE5IEBAIFRFU1RfUChSZWNlaXZlU3RhdGlzdGljc1Byb3h5VGVzdCwg
RnJlZXplc0FyZVJlcG9ydGVkKSB7CiAgIGNvbnN0IGludCBrRnJlZXplRGVsYXlNcyA9IDIwMDsK
ICAgY29uc3QgaW50IGtDYWxsRHVyYXRpb25NcyA9CiAgICAgICBrTWluUmVxdWlyZWRTYW1wbGVz
ICoga0ludGVyRnJhbWVEZWxheU1zICsga0ZyZWV6ZURlbGF5TXM7CisgIHdlYnJ0Yzo6VmlkZW9G
cmFtZSBmcmFtZSh3ZWJydGM6Okk0MjBCdWZmZXI6OkNyZWF0ZSgxLCAxKSwgMCwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCk7CiAgIGZvciAo
aW50IGkgPSAwOyBpIDwga01pblJlcXVpcmVkU2FtcGxlczsgKytpKSB7CiAgICAgc3RhdGlzdGlj
c19wcm94eV8tPk9uRGVjb2RlZEZyYW1lKGFic2w6Om51bGxvcHQsIGtXaWR0aCwga0hlaWdodCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlKTsKKyAg
ICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25SZW5kZXJlZEZyYW1lKGZyYW1lKTsKICAgICBmYWtlX2Ns
b2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrSW50ZXJGcmFtZURlbGF5TXMpOwogICB9CiAg
IC8vIEFkZCBleHRyYSBmcmVlemUuCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNv
bmRzKGtGcmVlemVEZWxheU1zKTsKICAgc3RhdGlzdGljc19wcm94eV8tPk9uRGVjb2RlZEZyYW1l
KGFic2w6Om51bGxvcHQsIGtXaWR0aCwga0hlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSk7CisgIHN0YXRpc3RpY3NfcHJveHlfLT5PblJlbmRl
cmVkRnJhbWUoZnJhbWUpOwogCiAgIHN0YXRpc3RpY3NfcHJveHlfLnJlc2V0KCk7CiAgIGNvbnN0
IGludCBrRXhwZWN0ZWRUaW1lQmV0d2VlbkZyZWV6ZXMgPQpAQCAtMTA5NSw5ICsxMDk5LDEyIEBA
IFRFU1RfUChSZWNlaXZlU3RhdGlzdGljc1Byb3h5VGVzdCwgUGF1c2VzQXJlSWdub3JlZCkgewog
ICBjb25zdCBWaWRlb0NvbnRlbnRUeXBlIGNvbnRlbnRfdHlwZSA9IEdldFBhcmFtKCk7CiAgIGNv
bnN0IGludCBrSW50ZXJGcmFtZURlbGF5TXMgPSAzMzsKICAgY29uc3QgaW50IGtQYXVzZUR1cmF0
aW9uTXMgPSAxMDAwMDsKKyAgd2VicnRjOjpWaWRlb0ZyYW1lIGZyYW1lKHdlYnJ0Yzo6STQyMEJ1
ZmZlcjo6Q3JlYXRlKDEsIDEpLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vi
cnRjOjprVmlkZW9Sb3RhdGlvbl8wKTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPD0ga01pblJlcXVp
cmVkU2FtcGxlczsgKytpKSB7CiAgICAgc3RhdGlzdGljc19wcm94eV8tPk9uRGVjb2RlZEZyYW1l
KGFic2w6Om51bGxvcHQsIGtXaWR0aCwga0hlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGVudF90eXBlKTsKKyAgICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25S
ZW5kZXJlZEZyYW1lKGZyYW1lKTsKICAgICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vj
b25kcyhrSW50ZXJGcmFtZURlbGF5TXMpOwogICB9CiAgIC8vIEFkZCBhIHBhdXNlLgpAQCAtMTEw
OCw2ICsxMTE1LDcgQEAgVEVTVF9QKFJlY2VpdmVTdGF0aXN0aWNzUHJveHlUZXN0LCBQYXVzZXNB
cmVJZ25vcmVkKSB7CiAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGtNaW5SZXF1aXJlZFNhbXBsZXMg
KiAzOyArK2kpIHsKICAgICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25EZWNvZGVkRnJhbWUoYWJzbDo6
bnVsbG9wdCwga1dpZHRoLCBrSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZW50X3R5cGUpOworICAgIHN0YXRpc3RpY3NfcHJveHlfLT5PblJlbmRlcmVk
RnJhbWUoZnJhbWUpOwogICAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtJ
bnRlckZyYW1lRGVsYXlNcyk7CiAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVwbGF5LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVwbGF5LmNjCmluZGV4IDVjMTdlNWIz
YjdkOTQ3YmQ4NDZlOWY2OTY3YmYxZDFhMjNhMGI0NTMuLjJjMWM4YTU1YWQ0ZjVmODUyN2NiMTYy
ZTg1NTVkMTliMjhhY2I2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlcGxheS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZXBsYXkuY2MKQEAgLTE1LDYgKzE1LDcgQEAK
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3N0cmVhbT4KIAorI2luY2x1ZGUgImFwaS90
ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlci5oIgogI2luY2x1ZGUgImNhbGwvY2FsbC5oIgog
I2luY2x1ZGUgImNvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCkBA
IC0zMiw3ICszMyw2IEBACiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKICNpbmNsdWRlICJ0
ZXN0L2VuY29kZXJfc2V0dGluZ3MuaCIKICNpbmNsdWRlICJ0ZXN0L2Zha2VfZGVjb2Rlci5oIgot
I2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVk
ZSAidGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3QvbnVsbF90cmFuc3BvcnQuaCIKICNpbmNs
dWRlICJ0ZXN0L3J0cF9maWxlX3JlYWRlci5oIgpAQCAtNzIsMzkgKzcyLDM5IEBAIG5hbWVzcGFj
ZSBmbGFncyB7CiAvLyBUT0RPKHBib3MpOiBNdWx0aXBsZSByZWNlaXZlcnMuCiAKIC8vIEZsYWcg
Zm9yIHBheWxvYWQgdHlwZS4KLURFRklORV9pbnQobWVkaWFfcGF5bG9hZF90eXBlLAotICAgICAg
ICAgICB0ZXN0OjpDYWxsVGVzdDo6a1BheWxvYWRUeXBlVlA4LAotICAgICAgICAgICAiTWVkaWEg
cGF5bG9hZCB0eXBlIik7CitXRUJSVENfREVGSU5FX2ludChtZWRpYV9wYXlsb2FkX3R5cGUsCisg
ICAgICAgICAgICAgICAgICB0ZXN0OjpDYWxsVGVzdDo6a1BheWxvYWRUeXBlVlA4LAorICAgICAg
ICAgICAgICAgICAgIk1lZGlhIHBheWxvYWQgdHlwZSIpOwogc3RhdGljIGludCBNZWRpYVBheWxv
YWRUeXBlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX21lZGlhX3BheWxvYWRf
dHlwZSk7CiB9CiAKIC8vIEZsYWcgZm9yIFJFRCBwYXlsb2FkIHR5cGUuCi1ERUZJTkVfaW50KHJl
ZF9wYXlsb2FkX3R5cGUsCi0gICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprUmVkUGF5bG9hZFR5
cGUsCi0gICAgICAgICAgICJSRUQgcGF5bG9hZCB0eXBlIik7CitXRUJSVENfREVGSU5FX2ludChy
ZWRfcGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAgdGVzdDo6Q2FsbFRlc3Q6OmtSZWRQ
YXlsb2FkVHlwZSwKKyAgICAgICAgICAgICAgICAgICJSRUQgcGF5bG9hZCB0eXBlIik7CiBzdGF0
aWMgaW50IFJlZFBheWxvYWRUeXBlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFH
X3JlZF9wYXlsb2FkX3R5cGUpOwogfQogCiAvLyBGbGFnIGZvciBVTFBGRUMgcGF5bG9hZCB0eXBl
LgotREVGSU5FX2ludCh1bHBmZWNfcGF5bG9hZF90eXBlLAotICAgICAgICAgICB0ZXN0OjpDYWxs
VGVzdDo6a1VscGZlY1BheWxvYWRUeXBlLAotICAgICAgICAgICAiVUxQRkVDIHBheWxvYWQgdHlw
ZSIpOworV0VCUlRDX0RFRklORV9pbnQodWxwZmVjX3BheWxvYWRfdHlwZSwKKyAgICAgICAgICAg
ICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprVWxwZmVjUGF5bG9hZFR5cGUsCisgICAgICAgICAgICAg
ICAgICAiVUxQRkVDIHBheWxvYWQgdHlwZSIpOwogc3RhdGljIGludCBVbHBmZWNQYXlsb2FkVHlw
ZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR191bHBmZWNfcGF5bG9hZF90eXBl
KTsKIH0KIAotREVGSU5FX2ludChtZWRpYV9wYXlsb2FkX3R5cGVfcnR4LAotICAgICAgICAgICB0
ZXN0OjpDYWxsVGVzdDo6a1NlbmRSdHhQYXlsb2FkVHlwZSwKLSAgICAgICAgICAgIk1lZGlhIG92
ZXIgUlRYIHBheWxvYWQgdHlwZSIpOworV0VCUlRDX0RFRklORV9pbnQobWVkaWFfcGF5bG9hZF90
eXBlX3J0eCwKKyAgICAgICAgICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprU2VuZFJ0eFBheWxv
YWRUeXBlLAorICAgICAgICAgICAgICAgICAgIk1lZGlhIG92ZXIgUlRYIHBheWxvYWQgdHlwZSIp
Owogc3RhdGljIGludCBNZWRpYVBheWxvYWRUeXBlUnR4KCkgewogICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihGTEFHX21lZGlhX3BheWxvYWRfdHlwZV9ydHgpOwogfQogCi1ERUZJTkVfaW50KHJl
ZF9wYXlsb2FkX3R5cGVfcnR4LAotICAgICAgICAgICB0ZXN0OjpDYWxsVGVzdDo6a1J0eFJlZFBh
eWxvYWRUeXBlLAotICAgICAgICAgICAiUkVEIG92ZXIgUlRYIHBheWxvYWQgdHlwZSIpOworV0VC
UlRDX0RFRklORV9pbnQocmVkX3BheWxvYWRfdHlwZV9ydHgsCisgICAgICAgICAgICAgICAgICB0
ZXN0OjpDYWxsVGVzdDo6a1J0eFJlZFBheWxvYWRUeXBlLAorICAgICAgICAgICAgICAgICAgIlJF
RCBvdmVyIFJUWCBwYXlsb2FkIHR5cGUiKTsKIHN0YXRpYyBpbnQgUmVkUGF5bG9hZFR5cGVSdHgo
KSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfcmVkX3BheWxvYWRfdHlwZV9ydHgp
OwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIGNvbnN0IHN0ZDo6c3RyaW5nJiBEZWZhdWx0U3NyYygp
IHsKICAgICAgIHN0ZDo6dG9fc3RyaW5nKHRlc3Q6OkNhbGxUZXN0OjprVmlkZW9TZW5kU3NyY3Nb
MF0pOwogICByZXR1cm4gc3NyYzsKIH0KLURFRklORV9zdHJpbmcoc3NyYywgRGVmYXVsdFNzcmMo
KS5jX3N0cigpLCAiSW5jb21pbmcgU1NSQyIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoc3NyYywg
RGVmYXVsdFNzcmMoKS5jX3N0cigpLCAiSW5jb21pbmcgU1NSQyIpOwogc3RhdGljIHVpbnQzMl90
IFNzcmMoKSB7CiAgIHJldHVybiBydGM6OlN0cmluZ1RvTnVtYmVyPHVpbnQzMl90PihGTEFHX3Nz
cmMpLnZhbHVlKCk7CiB9CkBAIC0xMjUsNTQgKzEyNSw1NiBAQCBjb25zdCBzdGQ6OnN0cmluZyYg
RGVmYXVsdFNzcmNSdHgoKSB7CiAgICAgICBzdGQ6OnRvX3N0cmluZyh0ZXN0OjpDYWxsVGVzdDo6
a1NlbmRSdHhTc3Jjc1swXSk7CiAgIHJldHVybiBzc3JjX3J0eDsKIH0KLURFRklORV9zdHJpbmco
c3NyY19ydHgsIERlZmF1bHRTc3JjUnR4KCkuY19zdHIoKSwgIkluY29taW5nIFJUWCBTU1JDIik7
CitXRUJSVENfREVGSU5FX3N0cmluZyhzc3JjX3J0eCwgRGVmYXVsdFNzcmNSdHgoKS5jX3N0cigp
LCAiSW5jb21pbmcgUlRYIFNTUkMiKTsKIHN0YXRpYyB1aW50MzJfdCBTc3JjUnR4KCkgewogICBy
ZXR1cm4gcnRjOjpTdHJpbmdUb051bWJlcjx1aW50MzJfdD4oRkxBR19zc3JjX3J0eCkudmFsdWUo
KTsKIH0KIAogLy8gRmxhZyBmb3IgYWJzLXNlbmQtdGltZSBpZC4KLURFRklORV9pbnQoYWJzX3Nl
bmRfdGltZV9pZCwgLTEsICJSVFAgZXh0ZW5zaW9uIElEIGZvciBhYnMtc2VuZC10aW1lIik7CitX
RUJSVENfREVGSU5FX2ludChhYnNfc2VuZF90aW1lX2lkLCAtMSwgIlJUUCBleHRlbnNpb24gSUQg
Zm9yIGFicy1zZW5kLXRpbWUiKTsKIHN0YXRpYyBpbnQgQWJzU2VuZFRpbWVJZCgpIHsKICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19hYnNfc2VuZF90aW1lX2lkKTsKIH0KIAogLy8gRmxh
ZyBmb3IgdHJhbnNtaXNzaW9uLW9mZnNldCBpZC4KLURFRklORV9pbnQodHJhbnNtaXNzaW9uX29m
ZnNldF9pZCwKLSAgICAgICAgICAgLTEsCi0gICAgICAgICAgICJSVFAgZXh0ZW5zaW9uIElEIGZv
ciB0cmFuc21pc3Npb24tb2Zmc2V0Iik7CitXRUJSVENfREVGSU5FX2ludCh0cmFuc21pc3Npb25f
b2Zmc2V0X2lkLAorICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAiUlRQ
IGV4dGVuc2lvbiBJRCBmb3IgdHJhbnNtaXNzaW9uLW9mZnNldCIpOwogc3RhdGljIGludCBUcmFu
c21pc3Npb25PZmZzZXRJZCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR190cmFu
c21pc3Npb25fb2Zmc2V0X2lkKTsKIH0KIAogLy8gRmxhZyBmb3IgcnRwZHVtcCBpbnB1dCBmaWxl
LgotREVGSU5FX3N0cmluZyhpbnB1dF9maWxlLCAiIiwgImlucHV0IGZpbGUiKTsKK1dFQlJUQ19E
RUZJTkVfc3RyaW5nKGlucHV0X2ZpbGUsICIiLCAiaW5wdXQgZmlsZSIpOwogc3RhdGljIHN0ZDo6
c3RyaW5nIElucHV0RmlsZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihG
TEFHX2lucHV0X2ZpbGUpOwogfQogCi1ERUZJTkVfc3RyaW5nKGNvbmZpZ19maWxlLCAiIiwgImNv
bmZpZyBmaWxlIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhjb25maWdfZmlsZSwgIiIsICJjb25m
aWcgZmlsZSIpOwogc3RhdGljIHN0ZDo6c3RyaW5nIENvbmZpZ0ZpbGUoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19jb25maWdfZmlsZSk7CiB9CiAKIC8vIEZsYWcg
Zm9yIHJhdyBvdXRwdXQgZmlsZXMuCi1ERUZJTkVfc3RyaW5nKG91dF9iYXNlLCAiIiwgIkJhc2Vu
YW1lIChleGNsdWRpbmcgLmpwZykgZm9yIHJhdyBvdXRwdXQiKTsKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKG91dF9iYXNlLCAiIiwgIkJhc2VuYW1lIChleGNsdWRpbmcgLmpwZykgZm9yIHJhdyBvdXRw
dXQiKTsKIHN0YXRpYyBzdGQ6OnN0cmluZyBPdXRCYXNlKCkgewogICByZXR1cm4gc3RhdGljX2Nh
c3Q8c3RkOjpzdHJpbmc+KEZMQUdfb3V0X2Jhc2UpOwogfQogCi1ERUZJTkVfc3RyaW5nKGRlY29k
ZXJfYml0c3RyZWFtX2ZpbGVuYW1lLCAiIiwgIkRlY29kZXIgYml0c3RyZWFtIG91dHB1dCBmaWxl
Iik7CitXRUJSVENfREVGSU5FX3N0cmluZyhkZWNvZGVyX2JpdHN0cmVhbV9maWxlbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIkRlY29kZXIgYml0
c3RyZWFtIG91dHB1dCBmaWxlIik7CiBzdGF0aWMgc3RkOjpzdHJpbmcgRGVjb2RlckJpdHN0cmVh
bUZpbGVuYW1lKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfZGVj
b2Rlcl9iaXRzdHJlYW1fZmlsZW5hbWUpOwogfQogCiAvLyBGbGFnIGZvciB2aWRlbyBjb2RlYy4K
LURFRklORV9zdHJpbmcoY29kZWMsICJWUDgiLCAiVmlkZW8gY29kZWMiKTsKK1dFQlJUQ19ERUZJ
TkVfc3RyaW5nKGNvZGVjLCAiVlA4IiwgIlZpZGVvIGNvZGVjIik7CiBzdGF0aWMgc3RkOjpzdHJp
bmcgQ29kZWMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19jb2Rl
Yyk7CiB9CiAKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlLiIp
OworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlLiIp
OwogfSAgLy8gbmFtZXNwYWNlIGZsYWdzCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrUmVjZWl2
ZXJMb2NhbFNzcmMgPSAweDEyMzQ1NjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlcG9ydF9ibG9ja19zdGF0cy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVwb3J0X2Jsb2NrX3N0
YXRzLmgKaW5kZXggMjQxZmVjNzZhNjk5MjM4NDI5NTlkY2FjODY0ZTg2MGMwYzQ3Mzc1YS4uOTBi
YWRmNzA4NjJmYzFhYjcwZDZhNGIxMjk2NzU0OTg4YzQ1MTU3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVwb3J0X2Jsb2NrX3N0
YXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vcmVwb3J0X2Jsb2NrX3N0YXRzLmgKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDxtYXA+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJ
TlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRj
cF9zdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9y
dGNwX2RlZmluZXMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFt
X3JlY2VpdmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlci5jYwppbmRleCA2NGVjNTQ0YjcwYTZmMWIz
Mjg4ODQwYmFjNDAwNjUwNmNmOTAzYzQwLi5mZGYwMmZmMzI5ZDc0MWZhZjI4OTA4NGUzOGFkOGFh
N2U3MzhiNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1f
cmVjZWl2ZXIuY2MKQEAgLTE2LDcgKzE2LDYgQEAKIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5j
bHVkZSkKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9wYWNpbmcvcGFja2V0X3JvdXRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3Rl
X2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yLmgiCkBA
IC01MCw3ICs0OSw3IEBAIG5hbWVzcGFjZSB7CiAvLyBUT0RPKHBoaWxpcGVsKTogQ2hhbmdlIGtQ
YWNrZXRCdWZmZXJTdGFydFNpemUgYmFjayB0byAzMiBpbiBNNjMgc2VlOgogLy8gICAgICAgICAg
ICAgICAgIGNyYnVnLmNvbS83NTI4ODYKIGNvbnN0ZXhwciBpbnQga1BhY2tldEJ1ZmZlclN0YXJ0
U2l6ZSA9IDUxMjsKLWNvbnN0ZXhwciBpbnQga1BhY2tldEJ1ZmZlck1heFNpeGUgPSAyMDQ4Owor
Y29uc3RleHByIGludCBrUGFja2V0QnVmZmVyTWF4U2l6ZSA9IDIwNDg7CiB9ICAvLyBuYW1lc3Bh
Y2UKIAogc3RkOjp1bmlxdWVfcHRyPFJ0cFJ0Y3A+IENyZWF0ZVJ0cFJ0Y3BNb2R1bGUoCkBAIC05
NSw3ICs5NCw4IEBAIFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6OlJ0cFZpZGVvU3RyZWFtUmVjZWl2
ZXIoCiAgICAgUHJvY2Vzc1RocmVhZCogcHJvY2Vzc190aHJlYWQsCiAgICAgTmFja1NlbmRlciog
bmFja19zZW5kZXIsCiAgICAgS2V5RnJhbWVSZXF1ZXN0U2VuZGVyKiBrZXlmcmFtZV9yZXF1ZXN0
X3NlbmRlciwKLSAgICB2aWRlb19jb2Rpbmc6Ok9uQ29tcGxldGVGcmFtZUNhbGxiYWNrKiBjb21w
bGV0ZV9mcmFtZV9jYWxsYmFjaykKKyAgICB2aWRlb19jb2Rpbmc6Ok9uQ29tcGxldGVGcmFtZUNh
bGxiYWNrKiBjb21wbGV0ZV9mcmFtZV9jYWxsYmFjaywKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8
RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRvcikKICAgICA6IGNsb2NrXyhD
bG9jazo6R2V0UmVhbFRpbWVDbG9jaygpKSwKICAgICAgIGNvbmZpZ18oKmNvbmZpZyksCiAgICAg
ICBwYWNrZXRfcm91dGVyXyhwYWNrZXRfcm91dGVyKSwKQEAgLTExMywxMSArMTEzLDEwIEBAIFJ0
cFZpZGVvU3RyZWFtUmVjZWl2ZXI6OlJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXIoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfcm91dGVyKSksCiAgICAgICBjb21wbGV0
ZV9mcmFtZV9jYWxsYmFja18oY29tcGxldGVfZnJhbWVfY2FsbGJhY2spLAogICAgICAga2V5ZnJh
bWVfcmVxdWVzdF9zZW5kZXJfKGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKSwKLSAgICAgIGhhc19y
ZWNlaXZlZF9mcmFtZV8oZmFsc2UpIHsKKyAgICAgIGhhc19yZWNlaXZlZF9mcmFtZV8oZmFsc2Up
LAorICAgICAgZnJhbWVfZGVjcnlwdG9yXyhmcmFtZV9kZWNyeXB0b3IpIHsKICAgY29uc3RleHBy
IGJvb2wgcmVtYl9jYW5kaWRhdGUgPSB0cnVlOwogICBwYWNrZXRfcm91dGVyXy0+QWRkUmVjZWl2
ZVJ0cE1vZHVsZShydHBfcnRjcF8uZ2V0KCksIHJlbWJfY2FuZGlkYXRlKTsKLSAgcnRwX3JlY2Vp
dmVfc3RhdGlzdGljc18tPlJlZ2lzdGVyUnRwU3RhdGlzdGljc0NhbGxiYWNrKHJlY2VpdmVfc3Rh
dHNfcHJveHkpOwotICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXy0+UmVnaXN0ZXJSdGNwU3RhdGlz
dGljc0NhbGxiYWNrKHJlY2VpdmVfc3RhdHNfcHJveHkpOwogCiAgIFJUQ19EQ0hFQ0soY29uZmln
Xy5ydHAucnRjcF9tb2RlICE9IFJ0Y3BNb2RlOjprT2ZmKQogICAgICAgPDwgIkEgc3RyZWFtIHNo
b3VsZCBub3QgYmUgY29uZmlndXJlZCB3aXRoIFJUQ1AgZGlzYWJsZWQuIFRoaXMgdmFsdWUgaXMg
IgpAQCAtMTQ3LDE0ICsxNDYsMjkgQEAgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6UnRwVmlkZW9T
dHJlYW1SZWNlaXZlcigKICAgcHJvY2Vzc190aHJlYWRfLT5SZWdpc3Rlck1vZHVsZShydHBfcnRj
cF8uZ2V0KCksIFJUQ19GUk9NX0hFUkUpOwogCiAgIGlmIChjb25maWdfLnJ0cC5uYWNrLnJ0cF9o
aXN0b3J5X21zICE9IDApIHsKLSAgICBuYWNrX21vZHVsZV8ucmVzZXQoCi0gICAgICAgIG5ldyBO
YWNrTW9kdWxlKGNsb2NrXywgbmFja19zZW5kZXIsIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKSk7
CisgICAgbmFja19tb2R1bGVfID0gYWJzbDo6bWFrZV91bmlxdWU8TmFja01vZHVsZT4oY2xvY2tf
LCBuYWNrX3NlbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcik7CiAgICAgcHJvY2Vzc190aHJlYWRfLT5S
ZWdpc3Rlck1vZHVsZShuYWNrX21vZHVsZV8uZ2V0KCksIFJUQ19GUk9NX0hFUkUpOwogICB9CiAK
KyAgLy8gVGhlIGdyb3VwIGhlcmUgbXVzdCBiZSBhIHBvc2l0aXZlIHBvd2VyIG9mIDIsIGluIHdo
aWNoIGNhc2UgdGhhdCBpcyB1c2VkIGFzCisgIC8vIHNpemUuIEFsbCBvdGhlciB2YWx1ZXMgc2hh
bGwgcmVzdWx0IGluIHRoZSBkZWZhdWx0IHZhbHVlIGJlaW5nIHVzZWQuCisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGdyb3VwX25hbWUgPQorICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxO
YW1lKCJXZWJSVEMtUGFja2V0QnVmZmVyTWF4U2l6ZSIpOworICBpbnQgcGFja2V0X2J1ZmZlcl9t
YXhfc2l6ZSA9IGtQYWNrZXRCdWZmZXJNYXhTaXplOworICBpZiAoIWdyb3VwX25hbWUuZW1wdHko
KSAmJgorICAgICAgKHNzY2FuZihncm91cF9uYW1lLmNfc3RyKCksICIlZCIsICZwYWNrZXRfYnVm
ZmVyX21heF9zaXplKSAhPSAxIHx8CisgICAgICAgcGFja2V0X2J1ZmZlcl9tYXhfc2l6ZSA8PSAw
IHx8CisgICAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIG51bWJlciBpcyBhIHBvc2l0aXZlIHBvd2Vy
IG9mIDIuCisgICAgICAgKHBhY2tldF9idWZmZXJfbWF4X3NpemUgJiAocGFja2V0X2J1ZmZlcl9t
YXhfc2l6ZSAtIDEpKSAhPSAwKSkgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkludmFs
aWQgcGFja2V0IGJ1ZmZlciBtYXggc2l6ZTogIiA8PCBncm91cF9uYW1lOworICAgIHBhY2tldF9i
dWZmZXJfbWF4X3NpemUgPSBrUGFja2V0QnVmZmVyTWF4U2l6ZTsKKyAgfQorCiAgIHBhY2tldF9i
dWZmZXJfID0gdmlkZW9fY29kaW5nOjpQYWNrZXRCdWZmZXI6OkNyZWF0ZSgKLSAgICAgIGNsb2Nr
Xywga1BhY2tldEJ1ZmZlclN0YXJ0U2l6ZSwga1BhY2tldEJ1ZmZlck1heFNpeGUsIHRoaXMpOwot
ICByZWZlcmVuY2VfZmluZGVyXy5yZXNldChuZXcgdmlkZW9fY29kaW5nOjpSdHBGcmFtZVJlZmVy
ZW5jZUZpbmRlcih0aGlzKSk7CisgICAgICBjbG9ja18sIGtQYWNrZXRCdWZmZXJTdGFydFNpemUs
IHBhY2tldF9idWZmZXJfbWF4X3NpemUsIHRoaXMpOworICByZWZlcmVuY2VfZmluZGVyXyA9Cisg
ICAgICBhYnNsOjptYWtlX3VuaXF1ZTx2aWRlb19jb2Rpbmc6OlJ0cEZyYW1lUmVmZXJlbmNlRmlu
ZGVyPih0aGlzKTsKIH0KIAogUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6flJ0cFZpZGVvU3RyZWFt
UmVjZWl2ZXIoKSB7CkBAIC0yMDIsMTQgKzIxNiwxNSBAQCBpbnQzMl90IFJ0cFZpZGVvU3RyZWFt
UmVjZWl2ZXI6Ok9uUmVjZWl2ZWRQYXlsb2FkRGF0YSgKICAgICBzaXplX3QgcGF5bG9hZF9zaXpl
LAogICAgIGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciogcnRwX2hlYWRlcikgewogICByZXR1cm4gT25S
ZWNlaXZlZFBheWxvYWREYXRhKHBheWxvYWRfZGF0YSwgcGF5bG9hZF9zaXplLCBydHBfaGVhZGVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om51bGxvcHQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om51bGxvcHQsIGZhbHNlKTsKIH0KIAogaW50
MzJfdCBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyOjpPblJlY2VpdmVkUGF5bG9hZERhdGEoCiAgICAg
Y29uc3QgdWludDhfdCogcGF5bG9hZF9kYXRhLAogICAgIHNpemVfdCBwYXlsb2FkX3NpemUsCiAg
ICAgY29uc3QgV2ViUnRjUlRQSGVhZGVyKiBydHBfaGVhZGVyLAotICAgIGNvbnN0IGFic2w6Om9w
dGlvbmFsPFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I+JiBnZW5lcmljX2Rlc2NyaXB0b3IpIHsK
KyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yPiYgZ2Vu
ZXJpY19kZXNjcmlwdG9yLAorICAgIGJvb2wgaXNfcmVjb3ZlcmVkKSB7CiAgIFdlYlJ0Y1JUUEhl
YWRlciBydHBfaGVhZGVyX3dpdGhfbnRwID0gKnJ0cF9oZWFkZXI7CiAgIHJ0cF9oZWFkZXJfd2l0
aF9udHAubnRwX3RpbWVfbXMgPQogICAgICAgbnRwX2VzdGltYXRvcl8uRXN0aW1hdGUocnRwX2hl
YWRlci0+aGVhZGVyLnRpbWVzdGFtcCk7CkBAIC0yMjEsNyArMjM2LDggQEAgaW50MzJfdCBSdHBW
aWRlb1N0cmVhbVJlY2VpdmVyOjpPblJlY2VpdmVkUGF5bG9hZERhdGEoCiAgICAgICAgIHJ0cF9o
ZWFkZXItPmZyYW1lVHlwZSA9PSBrVmlkZW9GcmFtZUtleTsKIAogICAgIHBhY2tldC50aW1lc05h
Y2tlZCA9IG5hY2tfbW9kdWxlXy0+T25SZWNlaXZlZFBhY2tldCgKLSAgICAgICAgcnRwX2hlYWRl
ci0+aGVhZGVyLnNlcXVlbmNlTnVtYmVyLCBpc19rZXlmcmFtZSk7CisgICAgICAgIHJ0cF9oZWFk
ZXItPmhlYWRlci5zZXF1ZW5jZU51bWJlciwgaXNfa2V5ZnJhbWUsIGlzX3JlY292ZXJlZCk7CisK
ICAgfSBlbHNlIHsKICAgICBwYWNrZXQudGltZXNOYWNrZWQgPSAtMTsKICAgfQpAQCAtMzAyLDcg
KzMxOCw4IEBAIHZvaWQgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6T25SdHBQYWNrZXQoY29uc3Qg
UnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgewogICAgICAgbGFzdF9yZWNlaXZlZF9ydHBfc3lz
dGVtX3RpbWVfbXNfID0gbm93X21zOwogCiAgICAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gY3Ny
Y3MgPSBwYWNrZXQuQ3NyY3MoKTsKLSAgICAgIGNvbnRyaWJ1dGluZ19zb3VyY2VzXy5VcGRhdGUo
bm93X21zLCBjc3Jjcyk7CisgICAgICBjb250cmlidXRpbmdfc291cmNlc18uVXBkYXRlKG5vd19t
cywgY3NyY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGF1ZGlvIGxl
dmVsICovYWJzbDo6bnVsbG9wdCk7CiAgICAgfQogICAgIC8vIFBlcmlvZGljYWxseSBsb2cgdGhl
IFJUUCBoZWFkZXIgb2YgaW5jb21pbmcgcGFja2V0cy4KICAgICBpZiAobm93X21zIC0gbGFzdF9w
YWNrZXRfbG9nX21zXyA+IGtQYWNrZXRMb2dJbnRlcnZhbE1zKSB7CkBAIC0zNjMsMTAgKzM4MCw2
MSBAQCBpbnQzMl90IFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6OlJlc2VuZFBhY2tldHMoY29uc3Qg
dWludDE2X3QqIHNlcXVlbmNlX251bWJlcnMsCiAKIHZvaWQgUnRwVmlkZW9TdHJlYW1SZWNlaXZl
cjo6T25SZWNlaXZlZEZyYW1lKAogICAgIHN0ZDo6dW5pcXVlX3B0cjx2aWRlb19jb2Rpbmc6OlJ0
cEZyYW1lT2JqZWN0PiBmcmFtZSkgeworICAvLyBSZXF1ZXN0IGEga2V5IGZyYW1lIGFzIHNvb24g
YXMgcG9zc2libGUuCisgIGJvb2wga2V5X2ZyYW1lX3JlcXVlc3RlZCA9IGZhbHNlOwogICBpZiAo
IWhhc19yZWNlaXZlZF9mcmFtZV8pIHsKICAgICBoYXNfcmVjZWl2ZWRfZnJhbWVfID0gdHJ1ZTsK
LSAgICBpZiAoZnJhbWUtPkZyYW1lVHlwZSgpICE9IGtWaWRlb0ZyYW1lS2V5KQorICAgIGlmIChm
cmFtZS0+RnJhbWVUeXBlKCkgIT0ga1ZpZGVvRnJhbWVLZXkpIHsKKyAgICAgIGtleV9mcmFtZV9y
ZXF1ZXN0ZWQgPSB0cnVlOwogICAgICAga2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXJfLT5SZXF1ZXN0
S2V5RnJhbWUoKTsKKyAgICB9CisgIH0KKworICAvLyBPcHRpb25hbGx5IGF0dGVtcHQgdG8gZGVj
cnlwdCB0aGUgcmF3IHZpZGVvIGZyYW1lIGlmIGl0IHdhcyBwcm92aWRlZC4KKyAgaWYgKGZyYW1l
X2RlY3J5cHRvcl8gIT0gbnVsbHB0cikgeworICAgIC8vIFdoZW4gdXNpbmcgZW5jcnlwdGlvbiB3
ZSBleHBlY3QgdGhlIGZyYW1lIHRvIGhhdmUgdGhlIGdlbmVyaWMgZGVzY3JpcHRvci4KKyAgICBh
YnNsOjpvcHRpb25hbDxSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0KKyAg
ICAgICAgZnJhbWUtPkdldEdlbmVyaWNGcmFtZURlc2NyaXB0b3IoKTsKKyAgICBpZiAoIWRlc2Ny
aXB0b3IpIHsKKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJObyBnZW5lcmljIGZyYW1lIGRl
c2NyaXB0b3IgZm91bmQgZHJvcHBpbmcgZnJhbWUuIjsKKyAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBSZXRyaWV2ZSB0aGUgYml0c3RyZWFtIG9mIHRoZSBlbmNyeXB0ZWQgdmlkZW8gZnJh
bWUuCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gZW5jcnlwdGVkX2ZyYW1lX2Jp
dHN0cmVhbShmcmFtZS0+QnVmZmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+c2l6ZSgpKTsKKyAgICAvLyBSZXRy
aWV2ZSB0aGUgbWF4aW11bSBwb3NzaWJsZSBzaXplIG9mIHRoZSBkZWNyeXB0ZWQgcGF5bG9hZC4K
KyAgICBjb25zdCBzaXplX3QgbWF4X3BsYWludGV4dF9ieXRlX3NpemUgPQorICAgICAgICBmcmFt
ZV9kZWNyeXB0b3JfLT5HZXRNYXhQbGFpbnRleHRCeXRlU2l6ZShjcmlja2V0OjpNRURJQV9UWVBF
X1ZJREVPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFtZS0+c2l6ZSgpKTsKKyAgICBSVENfQ0hFQ0sobWF4X3BsYWludGV4dF9ieXRlX3NpemUg
PD0gZnJhbWUtPnNpemUoKSk7CisgICAgLy8gUGxhY2UgdGhlIGRlY3J5cHRlZCBmcmFtZSBpbmxp
bmUgaW50byB0aGUgZXhpc3RpbmcgZnJhbWUuCisgICAgcnRjOjpBcnJheVZpZXc8dWludDhfdD4g
aW5saW5lX2RlY3J5cHRlZF9iaXRzdHJlYW0oZnJhbWUtPk11dGFibGVCdWZmZXIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfcGxh
aW50ZXh0X2J5dGVfc2l6ZSk7CisKKyAgICAvLyBBdHRlbXB0IHRvIGRlY3J5cHQgdGhlIHZpZGVv
IGZyYW1lLgorICAgIHNpemVfdCBieXRlc193cml0dGVuID0gMDsKKyAgICBpZiAoZnJhbWVfZGVj
cnlwdG9yXy0+RGVjcnlwdCgKKyAgICAgICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8s
IC8qY3NyY3M9Ki97fSwKKyAgICAgICAgICAgIC8qYWRkaXRpb25hbF9kYXRhPSovbnVsbHB0ciwg
ZW5jcnlwdGVkX2ZyYW1lX2JpdHN0cmVhbSwKKyAgICAgICAgICAgIGlubGluZV9kZWNyeXB0ZWRf
Yml0c3RyZWFtLCAmYnl0ZXNfd3JpdHRlbikgIT0gMCkgeworICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghaGFzX3JlY2VpdmVkX2RlY3J5cHRlZF9mcmFtZV8gJiYgIWtleV9mcmFtZV9y
ZXF1ZXN0ZWQpIHsKKyAgICAgIGhhc19yZWNlaXZlZF9kZWNyeXB0ZWRfZnJhbWVfID0gdHJ1ZTsK
KyAgICAgIGlmIChmcmFtZS0+RnJhbWVUeXBlKCkgIT0ga1ZpZGVvRnJhbWVLZXkpIHsKKyAgICAg
ICAga2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXJfLT5SZXF1ZXN0S2V5RnJhbWUoKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICBSVENfQ0hFQ0soYnl0ZXNfd3JpdHRlbiA8PSBtYXhfcGxhaW50ZXh0X2J5
dGVfc2l6ZSk7CisgICAgLy8gVXBkYXRlIHRoZSBmcmFtZSB0byBjb250YWluIGp1c3QgdGhlIHdy
aXR0ZW4gYnl0ZXMuCisgICAgZnJhbWUtPlNldExlbmd0aChieXRlc193cml0dGVuKTsKKyAgfSBl
bHNlIGlmIChjb25maWdfLmNyeXB0b19vcHRpb25zLnNmcmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5
cHRpb24pIHsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGcmFtZSBkZWNyeXB0aW9uIHJl
cXVpcmVkIGJ1dCBub3QgYXR0YWNoZWQgdG8gdGhpcyAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAic3RyZWFtLiBEcm9wcGluZyAgZnJhbWUuIjsKKyAgICByZXR1cm47CiAgIH0KIAogICBy
ZWZlcmVuY2VfZmluZGVyXy0+TWFuYWdlRnJhbWUoc3RkOjptb3ZlKGZyYW1lKSk7CkBAIC00NTks
OCArNTI3LDYgQEAgdm9pZCBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyOjpSZWNlaXZlUGFja2V0KGNv
bnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIHsKICAgd2VicnRjX3J0cF9oZWFkZXIudmlk
ZW9faGVhZGVyKCkuY29udGVudF90eXBlID0gVmlkZW9Db250ZW50VHlwZTo6VU5TUEVDSUZJRUQ7
CiAgIHdlYnJ0Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLnZpZGVvX3RpbWluZy5mbGFncyA9
CiAgICAgICBWaWRlb1NlbmRUaW1pbmc6OmtJbnZhbGlkOwotICB3ZWJydGNfcnRwX2hlYWRlci52
aWRlb19oZWFkZXIoKS5wbGF5b3V0X2RlbGF5Lm1pbl9tcyA9IC0xOwotICB3ZWJydGNfcnRwX2hl
YWRlci52aWRlb19oZWFkZXIoKS5wbGF5b3V0X2RlbGF5Lm1heF9tcyA9IC0xOwogICB3ZWJydGNf
cnRwX2hlYWRlci52aWRlb19oZWFkZXIoKS5pc19sYXN0X3BhY2tldF9pbl9mcmFtZSA9CiAgICAg
ICB3ZWJydGNfcnRwX2hlYWRlci5oZWFkZXIubWFya2VyQml0OwogCkBAIC00ODYsMTIgKzU1Miwy
MyBAQCB2b2lkIFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6OlJlY2VpdmVQYWNrZXQoY29uc3QgUnRw
UGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgewogICAgICAgICB3ZWJydGNfcnRwX2hlYWRlci5oZWFk
ZXIubWFya2VyQml0IHx8CiAgICAgICAgIChnZW5lcmljX2Rlc2NyaXB0b3Jfd2lyZS0+TGFzdFN1
YkZyYW1lSW5GcmFtZSgpICYmCiAgICAgICAgICBnZW5lcmljX2Rlc2NyaXB0b3Jfd2lyZS0+TGFz
dFBhY2tldEluU3ViRnJhbWUoKSk7CisKKyAgICBpZiAoZ2VuZXJpY19kZXNjcmlwdG9yX3dpcmUt
PkZpcnN0UGFja2V0SW5TdWJGcmFtZSgpKSB7CisgICAgICB3ZWJydGNfcnRwX2hlYWRlci5mcmFt
ZVR5cGUgPQorICAgICAgICAgIGdlbmVyaWNfZGVzY3JpcHRvcl93aXJlLT5GcmFtZURlcGVuZGVu
Y2llc0RpZmZzKCkuZW1wdHkoKQorICAgICAgICAgICAgICA/IGtWaWRlb0ZyYW1lS2V5CisgICAg
ICAgICAgICAgIDoga1ZpZGVvRnJhbWVEZWx0YTsKKyAgICB9CisKKyAgICB3ZWJydGNfcnRwX2hl
YWRlci52aWRlb19oZWFkZXIoKS53aWR0aCA9IGdlbmVyaWNfZGVzY3JpcHRvcl93aXJlLT5XaWR0
aCgpOworICAgIHdlYnJ0Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLmhlaWdodCA9IGdlbmVy
aWNfZGVzY3JpcHRvcl93aXJlLT5IZWlnaHQoKTsKICAgfSBlbHNlIHsKICAgICBnZW5lcmljX2Rl
c2NyaXB0b3Jfd2lyZS5yZXNldCgpOwogICB9CiAKICAgT25SZWNlaXZlZFBheWxvYWREYXRhKHBh
cnNlZF9wYXlsb2FkLnBheWxvYWQsIHBhcnNlZF9wYXlsb2FkLnBheWxvYWRfbGVuZ3RoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgJndlYnJ0Y19ydHBfaGVhZGVyLCBnZW5lcmljX2Rlc2NyaXB0
b3Jfd2lyZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAmd2VicnRjX3J0cF9oZWFkZXIsIGdl
bmVyaWNfZGVzY3JpcHRvcl93aXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0LnJl
Y292ZXJlZCgpKTsKIH0KIAogdm9pZCBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyOjpQYXJzZUFuZEhh
bmRsZUVuY2Fwc3VsYXRpbmdIZWFkZXIoCkBAIC01MjMsNyArNjAwLDggQEAgdm9pZCBSdHBWaWRl
b1N0cmVhbVJlY2VpdmVyOjpOb3RpZnlSZWNlaXZlck9mRW1wdHlQYWNrZXQodWludDE2X3Qgc2Vx
X251bSkgewogICByZWZlcmVuY2VfZmluZGVyXy0+UGFkZGluZ1JlY2VpdmVkKHNlcV9udW0pOwog
ICBwYWNrZXRfYnVmZmVyXy0+UGFkZGluZ1JlY2VpdmVkKHNlcV9udW0pOwogICBpZiAobmFja19t
b2R1bGVfKSB7Ci0gICAgbmFja19tb2R1bGVfLT5PblJlY2VpdmVkUGFja2V0KHNlcV9udW0sIC8q
IGlzX2tleWZyYW1lID0gKi8gZmFsc2UpOworICAgIG5hY2tfbW9kdWxlXy0+T25SZWNlaXZlZFBh
Y2tldChzZXFfbnVtLCAvKiBpc19rZXlmcmFtZSA9ICovIGZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBpcyBfcmVjb3ZlcmVkID0gKi8gZmFsc2UpOwogICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL3J0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXIuaApp
bmRleCBjYTVkN2EwYWJkOTQyNTgxNDdiMWY2YjliMmFhYmM1OWFkYTU1M2IwLi5hMjAwNmQxYmIy
YTA4NzI0NmE2ODBiNmVlZDA1N2UyZDI0YWYwYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFtX3JlY2Vp
dmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlci5oCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1l
ZGVjcnlwdG9yaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19j
b2RlYy5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3BhY2tldF9zaW5rX2ludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgImNhbGwvc3luY2FibGUuaCIKQEAgLTY3LDcgKzY4LDggQEAgY2xhc3MgUnRwVmlkZW9T
dHJlYW1SZWNlaXZlciA6IHB1YmxpYyBSZWNvdmVyZWRQYWNrZXRSZWNlaXZlciwKICAgICAgIFBy
b2Nlc3NUaHJlYWQqIHByb2Nlc3NfdGhyZWFkLAogICAgICAgTmFja1NlbmRlciogbmFja19zZW5k
ZXIsCiAgICAgICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVy
LAotICAgICAgdmlkZW9fY29kaW5nOjpPbkNvbXBsZXRlRnJhbWVDYWxsYmFjayogY29tcGxldGVf
ZnJhbWVfY2FsbGJhY2spOworICAgICAgdmlkZW9fY29kaW5nOjpPbkNvbXBsZXRlRnJhbWVDYWxs
YmFjayogY29tcGxldGVfZnJhbWVfY2FsbGJhY2ssCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8
RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRvcik7CiAgIH5SdHBWaWRlb1N0
cmVhbVJlY2VpdmVyKCkgb3ZlcnJpZGU7CiAKICAgdm9pZCBBZGRSZWNlaXZlQ29kZWMoY29uc3Qg
VmlkZW9Db2RlYyYgdmlkZW9fY29kZWMsCkBAIC0xMDIsNyArMTA0LDggQEAgY2xhc3MgUnRwVmlk
ZW9TdHJlYW1SZWNlaXZlciA6IHB1YmxpYyBSZWNvdmVyZWRQYWNrZXRSZWNlaXZlciwKICAgICAg
IGNvbnN0IHVpbnQ4X3QqIHBheWxvYWRfZGF0YSwKICAgICAgIHNpemVfdCBwYXlsb2FkX3NpemUs
CiAgICAgICBjb25zdCBXZWJSdGNSVFBIZWFkZXIqIHJ0cF9oZWFkZXIsCi0gICAgICBjb25zdCBh
YnNsOjpvcHRpb25hbDxSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yPiYgZ2VuZXJpY19kZXNjcmlw
dG9yKTsKKyAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0
b3I+JiBnZW5lcmljX2Rlc2NyaXB0b3IsCisgICAgICBib29sIGlzX3JlY292ZXJlZCk7CiAKICAg
Ly8gSW1wbGVtZW50cyBSZWNvdmVyZWRQYWNrZXRSZWNlaXZlci4KICAgdm9pZCBPblJlY292ZXJl
ZFBhY2tldChjb25zdCB1aW50OF90KiBwYWNrZXQsIHNpemVfdCBwYWNrZXRfbGVuZ3RoKSBvdmVy
cmlkZTsKQEAgLTIwMyw2ICsyMDYsMTEgQEAgY2xhc3MgUnRwVmlkZW9TdHJlYW1SZWNlaXZlciA6
IHB1YmxpYyBSZWNvdmVyZWRQYWNrZXRSZWNlaXZlciwKICAgICAgIFJUQ19HVUFSREVEX0JZKHJ0
cF9zb3VyY2VzX2xvY2tfKTsKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9yZWNlaXZl
ZF9ydHBfc3lzdGVtX3RpbWVfbXNfCiAgICAgICBSVENfR1VBUkRFRF9CWShydHBfc291cmNlc19s
b2NrXyk7CisKKyAgLy8gRTJFRSBWaWRlbyBGcmFtZSBEZWNyeXB0b3IgKE9wdGlvbmFsKQorICBy
dGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRv
cl87CisgIC8vIFNldCB0byB0cnVlIG9uIHRoZSBmaXJzdCBzdWNjZXNzc2Z1bGx5IGRlY3J5cHRl
ZCBmcmFtZS4KKyAgYm9vbCBoYXNfcmVjZWl2ZWRfZGVjcnlwdGVkX2ZyYW1lXyA9IGZhbHNlOwog
fTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZl
cl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL3J0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXJfdW5pdHRlc3QuY2MKaW5kZXggZWMyYmYz
MzRlOWI2ZDBlNzk4NGZlOGM2NjUxMDA3NDlhNDE2OTY1My4uMTBjNWU3ZWViY2UyYWYxZmNiMGNj
YzljOWY0ZTI2ZmFlMzVjZTc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlcl91bml0dGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyX3VuaXR0ZXN0LmNjCkBAIC0xMzMsNyArMTMzLDcg
QEAgY2xhc3MgUnRwVmlkZW9TdHJlYW1SZWNlaXZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiAgICAgICAgICZtb2NrX3RyYW5zcG9ydF8sIG51bGxwdHIsICZwYWNrZXRfcm91dGVyXywg
JmNvbmZpZ18sCiAgICAgICAgIHJ0cF9yZWNlaXZlX3N0YXRpc3RpY3NfLmdldCgpLCBudWxscHRy
LCBwcm9jZXNzX3RocmVhZF8uZ2V0KCksCiAgICAgICAgICZtb2NrX25hY2tfc2VuZGVyXywgJm1v
Y2tfa2V5X2ZyYW1lX3JlcXVlc3Rfc2VuZGVyXywKLSAgICAgICAgJm1vY2tfb25fY29tcGxldGVf
ZnJhbWVfY2FsbGJhY2tfKTsKKyAgICAgICAgJm1vY2tfb25fY29tcGxldGVfZnJhbWVfY2FsbGJh
Y2tfLCBudWxscHRyKTsKICAgfQogCiAgIFdlYlJ0Y1JUUEhlYWRlciBHZXREZWZhdWx0UGFja2V0
KCkgewpAQCAtNTY4LDEwICs1NjgsOCBAQCBURVNUX0YoUnRwVmlkZW9TdHJlYW1SZWNlaXZlclRl
c3QsIFBhcnNlR2VuZXJpY0Rlc2NyaXB0b3JUd29QYWNrZXRzKSB7CiAgIGZpcnN0X3BhY2tldF9k
ZXNjcmlwdG9yLlNldEZpcnN0U3ViRnJhbWVJbkZyYW1lKHRydWUpOwogICBmaXJzdF9wYWNrZXRf
ZGVzY3JpcHRvci5TZXRMYXN0U3ViRnJhbWVJbkZyYW1lKHRydWUpOwogICBmaXJzdF9wYWNrZXRf
ZGVzY3JpcHRvci5TZXRGcmFtZUlkKDEwMCk7Ci0gIGZpcnN0X3BhY2tldF9kZXNjcmlwdG9yLlNl
dFRlbXBvcmFsTGF5ZXIoMSk7CiAgIGZpcnN0X3BhY2tldF9kZXNjcmlwdG9yLlNldFNwYXRpYWxM
YXllcnNCaXRtYXNrKDEgPDwga1NwYXRpYWxJbmRleCk7Ci0gIGZpcnN0X3BhY2tldF9kZXNjcmlw
dG9yLkFkZEZyYW1lRGVwZW5kZW5jeURpZmYoOTApOwotICBmaXJzdF9wYWNrZXRfZGVzY3JpcHRv
ci5BZGRGcmFtZURlcGVuZGVuY3lEaWZmKDgwKTsKKyAgZmlyc3RfcGFja2V0X2Rlc2NyaXB0b3Iu
U2V0UmVzb2x1dGlvbig0ODAsIDM2MCk7CiAgIEVYUEVDVF9UUlVFKGZpcnN0X3BhY2tldC5TZXRF
eHRlbnNpb248UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbj4oCiAgICAgICBmaXJz
dF9wYWNrZXRfZGVzY3JpcHRvcikpOwogCkBAIC02MDYsMTAgKzYwNCwxMCBAQCBURVNUX0YoUnRw
VmlkZW9TdHJlYW1SZWNlaXZlclRlc3QsIFBhcnNlR2VuZXJpY0Rlc2NyaXB0b3JUd29QYWNrZXRz
KSB7CiAKICAgRVhQRUNUX0NBTEwobW9ja19vbl9jb21wbGV0ZV9mcmFtZV9jYWxsYmFja18sIERv
T25Db21wbGV0ZUZyYW1lKQogICAgICAgLldpbGxPbmNlKEludm9rZShba1NwYXRpYWxJbmRleF0o
dmlkZW9fY29kaW5nOjpFbmNvZGVkRnJhbWUqIGZyYW1lKSB7Ci0gICAgICAgIEVYUEVDVF9FUShm
cmFtZS0+bnVtX3JlZmVyZW5jZXMsIDJVKTsKLSAgICAgICAgRVhQRUNUX0VRKGZyYW1lLT5yZWZl
cmVuY2VzWzBdLCBmcmFtZS0+aWQucGljdHVyZV9pZCAtIDkwKTsKLSAgICAgICAgRVhQRUNUX0VR
KGZyYW1lLT5yZWZlcmVuY2VzWzFdLCBmcmFtZS0+aWQucGljdHVyZV9pZCAtIDgwKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGZyYW1lLT5udW1fcmVmZXJlbmNlcywgMFUpOwogICAgICAgICBFWFBFQ1Rf
RVEoZnJhbWUtPmlkLnNwYXRpYWxfbGF5ZXIsIGtTcGF0aWFsSW5kZXgpOworICAgICAgICBFWFBF
Q1RfRVEoZnJhbWUtPkVuY29kZWRJbWFnZSgpLl9lbmNvZGVkV2lkdGgsIDQ4MHUpOworICAgICAg
ICBFWFBFQ1RfRVEoZnJhbWUtPkVuY29kZWRJbWFnZSgpLl9lbmNvZGVkSGVpZ2h0LCAzNjB1KTsK
ICAgICAgIH0pKTsKIAogICBydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyXy0+T25SdHBQYWNrZXQo
c2Vjb25kX3BhY2tldCk7CkBAIC02MjgsNCArNjI2LDEzIEBAIFRFU1RfRihSdHBWaWRlb1N0cmVh
bVJlY2VpdmVyVGVzdCwgUmVwZWF0ZWRTZWNvbmRhcnlTaW5rRGlzYWxsb3dlZCkgewogfQogI2Vu
ZGlmCiAKKy8vIEluaXRpYWxpemF0aW9uIG9mIFdlYlJ0Y1JUUEhlYWRlciBpcyBhIGJpdCBjb252
b2x1dGVkLCB3aXRoIHNvbWUgZmllbGRzCisvLyB6ZXJvLWluaXRpYWxpemVkLiBSdHBWaWRlb1N0
cmVhbVJlY2VpdmVyIGRlcGVuZHMgb24gcHJvcGVyIGRlZmF1bHQgdmFsdWVzIGZvcgorLy8gdGhl
IHBsYXlvdXQgZGVsYXkuCitURVNUKFdlYlJ0Y1JUUEhlYWRlciwgRGVmYXVsdFBsYXlvdXREZWxh
eUlzVW5zcGVjaWZpZWQpIHsKKyAgV2ViUnRjUlRQSGVhZGVyIHdlYnJ0Y19ydHBfaGVhZGVyID0g
e307CisgIEVYUEVDVF9FUSh3ZWJydGNfcnRwX2hlYWRlci52aWRlb19oZWFkZXIoKS5wbGF5b3V0
X2RlbGF5Lm1pbl9tcywgLTEpOworICBFWFBFQ1RfRVEod2VicnRjX3J0cF9oZWFkZXIudmlkZW9f
aGVhZGVyKCkucGxheW91dF9kZWxheS5tYXhfbXMsIC0xKTsKK30KKwogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vc2NyZWVuc2hhcmVfbG9vcGJhY2suY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zY3JlZW5zaGFyZV9sb29wYmFjay5jYwppbmRl
eCAxZDZlODdlNzFmZjRiYTkyZTQ3Y2M3NGQ5YWU4YjAyMGIzZTM5ZTAxLi40Njk2NjY2OTA4NzA3
ZDQ1MGUyYTNmYjNhMTdlNjJhMjA2MzZjYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zY3JlZW5zaGFyZV9sb29wYmFjay5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zY3Jl
ZW5zaGFyZV9sb29wYmFjay5jYwpAQCAtMTIsNyArMTIsNiBAQAogCiAjaW5jbHVkZSAicnRjX2Jh
c2UvZmxhZ3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
ZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAi
dGVzdC9ndGVzdC5oIgpAQCAtMjMsNzMgKzIyLDc2IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogbmFt
ZXNwYWNlIGZsYWdzIHsKIAogLy8gRmxhZ3MgY29tbW9uIHdpdGggdmlkZW8gbG9vcGJhY2ssIHdp
dGggZGlmZmVyZW50IGRlZmF1bHQgdmFsdWVzLgotREVGSU5FX2ludCh3aWR0aCwgMTg1MCwgIlZp
ZGVvIHdpZHRoIChjcm9wcyBzb3VyY2UpLiIpOworV0VCUlRDX0RFRklORV9pbnQod2lkdGgsIDE4
NTAsICJWaWRlbyB3aWR0aCAoY3JvcHMgc291cmNlKS4iKTsKIHNpemVfdCBXaWR0aCgpIHsKICAg
cmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oRkxBR193aWR0aCk7CiB9CiAKLURFRklORV9pbnQo
aGVpZ2h0LCAxMTEwLCAiVmlkZW8gaGVpZ2h0IChjcm9wcyBzb3VyY2UpLiIpOworV0VCUlRDX0RF
RklORV9pbnQoaGVpZ2h0LCAxMTEwLCAiVmlkZW8gaGVpZ2h0IChjcm9wcyBzb3VyY2UpLiIpOwog
c2l6ZV90IEhlaWdodCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oRkxBR19oZWln
aHQpOwogfQogCi1ERUZJTkVfaW50KGZwcywgNSwgIkZyYW1lcyBwZXIgc2Vjb25kLiIpOworV0VC
UlRDX0RFRklORV9pbnQoZnBzLCA1LCAiRnJhbWVzIHBlciBzZWNvbmQuIik7CiBpbnQgRnBzKCkg
ewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2Zwcyk7CiB9CiAKLURFRklORV9pbnQo
bWluX2JpdHJhdGUsIDUwLCAiQ2FsbCBhbmQgc3RyZWFtIG1pbiBiaXRyYXRlIGluIGticHMuIik7
CitXRUJSVENfREVGSU5FX2ludChtaW5fYml0cmF0ZSwgNTAsICJDYWxsIGFuZCBzdHJlYW0gbWlu
IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBNaW5CaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oRkxBR19taW5fYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQoc3RhcnRf
Yml0cmF0ZSwgMzAwLCAiQ2FsbCBzdGFydCBiaXRyYXRlIGluIGticHMuIik7CitXRUJSVENfREVG
SU5FX2ludChzdGFydF9iaXRyYXRlLCAzMDAsICJDYWxsIHN0YXJ0IGJpdHJhdGUgaW4ga2Jwcy4i
KTsKIGludCBTdGFydEJpdHJhdGVLYnBzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihG
TEFHX3N0YXJ0X2JpdHJhdGUpOwogfQogCi1ERUZJTkVfaW50KHRhcmdldF9iaXRyYXRlLCAyMDAs
ICJTdHJlYW0gdGFyZ2V0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHRh
cmdldF9iaXRyYXRlLCAyMDAsICJTdHJlYW0gdGFyZ2V0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGlu
dCBUYXJnZXRCaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR190
YXJnZXRfYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQobWF4X2JpdHJhdGUsIDEwMDAsICJDYWxs
IGFuZCBzdHJlYW0gbWF4IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KG1h
eF9iaXRyYXRlLCAxMDAwLCAiQ2FsbCBhbmQgc3RyZWFtIG1heCBiaXRyYXRlIGluIGticHMuIik7
CiBpbnQgTWF4Qml0cmF0ZUticHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdf
bWF4X2JpdHJhdGUpOwogfQogCi1ERUZJTkVfaW50KG51bV90ZW1wb3JhbF9sYXllcnMsIDIsICJO
dW1iZXIgb2YgdGVtcG9yYWwgbGF5ZXJzIHRvIHVzZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KG51
bV90ZW1wb3JhbF9sYXllcnMsIDIsICJOdW1iZXIgb2YgdGVtcG9yYWwgbGF5ZXJzIHRvIHVzZS4i
KTsKIGludCBOdW1UZW1wb3JhbExheWVycygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
RkxBR19udW1fdGVtcG9yYWxfbGF5ZXJzKTsKIH0KIAogLy8gRmxhZ3MgY29tbW9uIHdpdGggdmlk
ZW8gbG9vcGJhY2ssIHdpdGggZXF1YWwgZGVmYXVsdCB2YWx1ZXMuCi1ERUZJTkVfc3RyaW5nKGNv
ZGVjLCAiVlA4IiwgIlZpZGVvIGNvZGVjIHRvIHVzZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KGNvZGVjLCAiVlA4IiwgIlZpZGVvIGNvZGVjIHRvIHVzZS4iKTsKIHN0ZDo6c3RyaW5nIENvZGVj
KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfY29kZWMpOwogfQog
Ci1ERUZJTkVfc3RyaW5nKHJ0Y19ldmVudF9sb2dfbmFtZSwKLSAgICAgICAgICAgICAgIiIsCi0g
ICAgICAgICAgICAgICJGaWxlbmFtZSBmb3IgcnRjIGV2ZW50IGxvZy4gVHdvIGZpbGVzICIKLSAg
ICAgICAgICAgICAgIndpdGggXCJfc2VuZFwiIGFuZCBcIl9yZWN2XCIgc3VmZml4ZXMgd2lsbCBi
ZSBjcmVhdGVkLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcocnRjX2V2ZW50X2xvZ19uYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiRmlsZW5hbWUg
Zm9yIHJ0YyBldmVudCBsb2cuIFR3byBmaWxlcyAiCisgICAgICAgICAgICAgICAgICAgICAid2l0
aCBcIl9zZW5kXCIgYW5kIFwiX3JlY3ZcIiBzdWZmaXhlcyB3aWxsIGJlIGNyZWF0ZWQuIik7CiBz
dGQ6OnN0cmluZyBSdGNFdmVudExvZ05hbWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6
OnN0cmluZz4oRkxBR19ydGNfZXZlbnRfbG9nX25hbWUpOwogfQogCi1ERUZJTkVfc3RyaW5nKHJ0
cF9kdW1wX25hbWUsICIiLCAiRmlsZW5hbWUgZm9yIGR1bXBlZCByZWNlaXZlZCBSVFAgc3RyZWFt
LiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcocnRwX2R1bXBfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBkdW1wZWQgcmVj
ZWl2ZWQgUlRQIHN0cmVhbS4iKTsKIHN0ZDo6c3RyaW5nIFJ0cER1bXBOYW1lKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfcnRwX2R1bXBfbmFtZSk7CiB9CiAKLURF
RklORV9pbnQoc2VsZWN0ZWRfdGwsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiVGVtcG9y
YWwgbGF5ZXIgdG8gc2hvdyBvciBhbmFseXplLiAtMSB0byBkaXNhYmxlIGZpbHRlcmluZy4iKTsK
K1dFQlJUQ19ERUZJTkVfaW50KAorICAgIHNlbGVjdGVkX3RsLAorICAgIC0xLAorICAgICJUZW1w
b3JhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2FibGUgZmlsdGVyaW5nLiIp
OwogaW50IFNlbGVjdGVkVEwoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2Vs
ZWN0ZWRfdGwpOwogfQogCi1ERUZJTkVfaW50KAorV0VCUlRDX0RFRklORV9pbnQoCiAgICAgZHVy
YXRpb24sCiAgICAgMCwKICAgICAiRHVyYXRpb24gb2YgdGhlIHRlc3QgaW4gc2Vjb25kcy4gSWYg
MCwgcmVuZGVyZWQgd2lsbCBiZSBzaG93biBpbnN0ZWFkLiIpOwpAQCAtOTcsNzEgKzk5LDc0IEBA
IGludCBEdXJhdGlvblNlY3MoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfZHVy
YXRpb24pOwogfQogCi1ERUZJTkVfc3RyaW5nKG91dHB1dF9maWxlbmFtZSwgIiIsICJUYXJnZXQg
Z3JhcGggZGF0YSBmaWxlbmFtZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKG91dHB1dF9maWxl
bmFtZSwgIiIsICJUYXJnZXQgZ3JhcGggZGF0YSBmaWxlbmFtZS4iKTsKIHN0ZDo6c3RyaW5nIE91
dHB1dEZpbGVuYW1lKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdf
b3V0cHV0X2ZpbGVuYW1lKTsKIH0KIAotREVGSU5FX3N0cmluZyhncmFwaF90aXRsZSwKLSAgICAg
ICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJJZiBlbXB0eSwgdGl0bGUgd2lsbCBiZSBnZW5l
cmF0ZWQgYXV0b21hdGljYWxseS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGdyYXBoX3RpdGxl
LAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiSWYgZW1w
dHksIHRpdGxlIHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuIik7CiBzdGQ6OnN0cmlu
ZyBHcmFwaFRpdGxlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdf
Z3JhcGhfdGl0bGUpOwogfQogCi1ERUZJTkVfaW50KGxvc3NfcGVyY2VudCwgMCwgIlBlcmNlbnRh
Z2Ugb2YgcGFja2V0cyByYW5kb21seSBsb3N0LiIpOworV0VCUlRDX0RFRklORV9pbnQobG9zc19w
ZXJjZW50LCAwLCAiUGVyY2VudGFnZSBvZiBwYWNrZXRzIHJhbmRvbWx5IGxvc3QuIik7CiBpbnQg
TG9zc1BlcmNlbnQoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbG9zc19wZXJj
ZW50KTsKIH0KIAotREVGSU5FX2ludChsaW5rX2NhcGFjaXR5LAotICAgICAgICAgICAwLAotICAg
ICAgICAgICAiQ2FwYWNpdHkgKGticHMpIG9mIHRoZSBmYWtlIGxpbmsuIDAgbWVhbnMgaW5maW5p
dGUuIik7CitXRUJSVENfREVGSU5FX2ludChsaW5rX2NhcGFjaXR5LAorICAgICAgICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgICAgICAgICJDYXBhY2l0eSAoa2Jwcykgb2YgdGhlIGZha2UgbGlu
ay4gMCBtZWFucyBpbmZpbml0ZS4iKTsKIGludCBMaW5rQ2FwYWNpdHlLYnBzKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2xpbmtfY2FwYWNpdHkpOwogfQogCi1ERUZJTkVfaW50
KHF1ZXVlX3NpemUsIDAsICJTaXplIG9mIHRoZSBib3R0bGVuZWNrIGxpbmsgcXVldWUgaW4gcGFj
a2V0cy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHF1ZXVlX3NpemUsCisgICAgICAgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgICAgICAgIlNpemUgb2YgdGhlIGJvdHRsZW5lY2sgbGluayBxdWV1
ZSBpbiBwYWNrZXRzLiIpOwogaW50IFF1ZXVlU2l6ZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oRkxBR19xdWV1ZV9zaXplKTsKIH0KIAotREVGSU5FX2ludChhdmdfcHJvcGFnYXRpb25f
ZGVsYXlfbXMsCi0gICAgICAgICAgIDAsCi0gICAgICAgICAgICJBdmVyYWdlIGxpbmsgcHJvcGFn
YXRpb24gZGVsYXkgaW4gbXMuIik7CitXRUJSVENfREVGSU5FX2ludChhdmdfcHJvcGFnYXRpb25f
ZGVsYXlfbXMsCisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIkF2ZXJh
Z2UgbGluayBwcm9wYWdhdGlvbiBkZWxheSBpbiBtcy4iKTsKIGludCBBdmdQcm9wYWdhdGlvbkRl
bGF5TXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfYXZnX3Byb3BhZ2F0aW9u
X2RlbGF5X21zKTsKIH0KIAotREVGSU5FX2ludChzdGRfcHJvcGFnYXRpb25fZGVsYXlfbXMsCi0g
ICAgICAgICAgIDAsCi0gICAgICAgICAgICJMaW5rIHByb3BhZ2F0aW9uIGRlbGF5IHN0YW5kYXJk
IGRldmlhdGlvbiBpbiBtcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHN0ZF9wcm9wYWdhdGlvbl9k
ZWxheV9tcywKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiTGluayBw
cm9wYWdhdGlvbiBkZWxheSBzdGFuZGFyZCBkZXZpYXRpb24gaW4gbXMuIik7CiBpbnQgU3RkUHJv
cGFnYXRpb25EZWxheU1zKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3N0ZF9w
cm9wYWdhdGlvbl9kZWxheV9tcyk7CiB9CiAKLURFRklORV9pbnQobnVtX3N0cmVhbXMsIDAsICJO
dW1iZXIgb2Ygc3RyZWFtcyB0byBzaG93IG9yIGFuYWx5emUuIik7CitXRUJSVENfREVGSU5FX2lu
dChudW1fc3RyZWFtcywgMCwgIk51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cgb3IgYW5hbHl6ZS4i
KTsKIGludCBOdW1TdHJlYW1zKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX251
bV9zdHJlYW1zKTsKIH0KIAotREVGSU5FX2ludChzZWxlY3RlZF9zdHJlYW0sCi0gICAgICAgICAg
IDAsCi0gICAgICAgICAgICJJRCBvZiB0aGUgc3RyZWFtIHRvIHNob3cgb3IgYW5hbHl6ZS4gIgot
ICAgICAgICAgICAiU2V0IHRvIHRoZSBudW1iZXIgb2Ygc3RyZWFtcyB0byBzaG93IHRoZW0gYWxs
LiIpOworV0VCUlRDX0RFRklORV9pbnQoc2VsZWN0ZWRfc3RyZWFtLAorICAgICAgICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgICAgICAgICJJRCBvZiB0aGUgc3RyZWFtIHRvIHNob3cgb3IgYW5h
bHl6ZS4gIgorICAgICAgICAgICAgICAgICAgIlNldCB0byB0aGUgbnVtYmVyIG9mIHN0cmVhbXMg
dG8gc2hvdyB0aGVtIGFsbC4iKTsKIGludCBTZWxlY3RlZFN0cmVhbSgpIHsKICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oRkxBR19zZWxlY3RlZF9zdHJlYW0pOwogfQogCi1ERUZJTkVfaW50KG51
bV9zcGF0aWFsX2xheWVycywgMSwgIk51bWJlciBvZiBzcGF0aWFsIGxheWVycyB0byB1c2UuIik7
CitXRUJSVENfREVGSU5FX2ludChudW1fc3BhdGlhbF9sYXllcnMsIDEsICJOdW1iZXIgb2Ygc3Bh
dGlhbCBsYXllcnMgdG8gdXNlLiIpOwogaW50IE51bVNwYXRpYWxMYXllcnMoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbnVtX3NwYXRpYWxfbGF5ZXJzKTsKIH0KIAotREVGSU5F
X2ludChpbnRlcl9sYXllcl9wcmVkLAotICAgICAgICAgICAwLAotICAgICAgICAgICAiSW50ZXIt
bGF5ZXIgcHJlZGljdGlvbiBtb2RlLiAiCi0gICAgICAgICAgICIwIC0gZW5hYmxlZCwgMSAtIGRp
c2FibGVkLCAyIC0gZW5hYmxlZCBvbmx5IGZvciBrZXkgcGljdHVyZXMuIik7CitXRUJSVENfREVG
SU5FX2ludCgKKyAgICBpbnRlcl9sYXllcl9wcmVkLAorICAgIDAsCisgICAgIkludGVyLWxheWVy
IHByZWRpY3Rpb24gbW9kZS4gIgorICAgICIwIC0gZW5hYmxlZCwgMSAtIGRpc2FibGVkLCAyIC0g
ZW5hYmxlZCBvbmx5IGZvciBrZXkgcGljdHVyZXMuIik7CiBJbnRlckxheWVyUHJlZE1vZGUgSW50
ZXJMYXllclByZWQoKSB7CiAgIGlmIChGTEFHX2ludGVyX2xheWVyX3ByZWQgPT0gMCkgewogICAg
IHJldHVybiBJbnRlckxheWVyUHJlZE1vZGU6OmtPbjsKQEAgLTE3Myw1OCArMTc4LDY1IEBAIElu
dGVyTGF5ZXJQcmVkTW9kZSBJbnRlckxheWVyUHJlZCgpIHsKICAgfQogfQogCi1ERUZJTkVfaW50
KHNlbGVjdGVkX3NsLAotICAgICAgICAgICAtMSwKLSAgICAgICAgICAgIlNwYXRpYWwgbGF5ZXIg
dG8gc2hvdyBvciBhbmFseXplLiAtMSB0byBkaXNhYmxlIGZpbHRlcmluZy4iKTsKK1dFQlJUQ19E
RUZJTkVfaW50KHNlbGVjdGVkX3NsLAorICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAg
ICAgICAgICAiU3BhdGlhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2FibGUg
ZmlsdGVyaW5nLiIpOwogaW50IFNlbGVjdGVkU0woKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KEZMQUdfc2VsZWN0ZWRfc2wpOwogfQogCi1ERUZJTkVfc3RyaW5nKHN0cmVhbTAsCi0gICAg
ICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNj
cmliaW5nIFZpZGVvU3RyZWFtIGZvciBzdHJlYW0gIzAuIik7CitXRUJSVENfREVGSU5FX3N0cmlu
ZygKKyAgICBzdHJlYW0wLAorICAgICIiLAorICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRl
c2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHN0cmVhbSAjMC4iKTsKIHN0ZDo6c3RyaW5nIFN0cmVh
bTAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zdHJlYW0wKTsK
IH0KIAotREVGSU5FX3N0cmluZyhzdHJlYW0xLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAg
ICAgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBWaWRlb1N0cmVhbSBmb3Ig
c3RyZWFtICMxLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgc3RyZWFtMSwKKyAgICAi
IiwKKyAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZv
ciBzdHJlYW0gIzEuIik7CiBzdGQ6OnN0cmluZyBTdHJlYW0xKCkgewogICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc3RyZWFtMSk7CiB9CiAKLURFRklORV9zdHJpbmcoc2ww
LAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1
ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxheWVyICMwLiIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcoCisgICAgc2wwLAorICAgICIiLAorICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVz
IGRlc2NyaWJpbmcgU3BhdGlhbExheWVyIGZvciBsYXllciAjMC4iKTsKIHN0ZDo6c3RyaW5nIFNM
MCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3NsMCk7CiB9CiAK
LURFRklORV9zdHJpbmcoc2wxLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkNv
bW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxheWVyICMx
LiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgc2wxLAorICAgICIiLAorICAgICJDb21t
YSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgU3BhdGlhbExheWVyIGZvciBsYXllciAjMS4i
KTsKIHN0ZDo6c3RyaW5nIFNMMSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5n
PihGTEFHX3NsMSk7CiB9CiAKLURFRklORV9zdHJpbmcoZW5jb2RlZF9mcmFtZV9wYXRoLAotICAg
ICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIlRoZSBiYXNlIHBhdGggZm9yIGVuY29kZWQg
ZnJhbWUgbG9ncy4gQ3JlYXRlZCBmaWxlcyB3aWxsIGhhdmUgIgotICAgICAgICAgICAgICAidGhl
IGZvcm0gPGVuY29kZWRfZnJhbWVfcGF0aD4uPG4+LihyZWN2fHNlbmQuPG0+KS5pdmYiKTsKK1dF
QlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIGVuY29kZWRfZnJhbWVfcGF0aCwKKyAgICAiIiwKKyAg
ICAiVGhlIGJhc2UgcGF0aCBmb3IgZW5jb2RlZCBmcmFtZSBsb2dzLiBDcmVhdGVkIGZpbGVzIHdp
bGwgaGF2ZSAiCisgICAgInRoZSBmb3JtIDxlbmNvZGVkX2ZyYW1lX3BhdGg+LjxuPi4ocmVjdnxz
ZW5kLjxtPikuaXZmIik7CiBzdGQ6OnN0cmluZyBFbmNvZGVkRnJhbWVQYXRoKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfZW5jb2RlZF9mcmFtZV9wYXRoKTsKIH0K
IAotREVGSU5FX2Jvb2wobG9ncywgZmFsc2UsICJwcmludCBsb2dzIHRvIHN0ZGVyciIpOworV0VC
UlRDX0RFRklORV9ib29sKGxvZ3MsIGZhbHNlLCAicHJpbnQgbG9ncyB0byBzdGRlcnIiKTsKIAot
REVGSU5FX2Jvb2woc2VuZF9zaWRlX2J3ZSwgdHJ1ZSwgIlVzZSBzZW5kLXNpZGUgYmFuZHdpZHRo
IGVzdGltYXRpb24iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChzZW5kX3NpZGVfYndlLCB0cnVlLCAi
VXNlIHNlbmQtc2lkZSBiYW5kd2lkdGggZXN0aW1hdGlvbiIpOwogCi1ERUZJTkVfYm9vbChnZW5l
cmljX2Rlc2NyaXB0b3IsIGZhbHNlLCAiVXNlIHRoZSBnZW5lcmljIGZyYW1lIGRlc2NyaXB0b3Iu
Iik7CitXRUJSVENfREVGSU5FX2Jvb2woZ2VuZXJpY19kZXNjcmlwdG9yLAorICAgICAgICAgICAg
ICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJVc2UgdGhlIGdlbmVyaWMgZnJhbWUg
ZGVzY3JpcHRvci4iKTsKIAotREVGSU5FX2Jvb2woYWxsb3dfcmVvcmRlcmluZywgZmFsc2UsICJB
bGxvdyBwYWNrZXQgcmVvcmRlcmluZyB0byBvY2N1ciIpOworV0VCUlRDX0RFRklORV9ib29sKGFs
bG93X3Jlb3JkZXJpbmcsIGZhbHNlLCAiQWxsb3cgcGFja2V0IHJlb3JkZXJpbmcgdG8gb2NjdXIi
KTsKIAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIGZvcmNlX2Zp
ZWxkdHJpYWxzLAogICAgICIiLAogICAgICJGaWVsZCB0cmlhbHMgY29udHJvbCBleHBlcmltZW50
YWwgZmVhdHVyZSBjb2RlIHdoaWNoIGNhbiBiZSBmb3JjZWQuICIKQEAgLTIzMywxMiArMjQ1LDE0
IEBAIERFRklORV9zdHJpbmcoCiAgICAgInRyaWFscyBhcmUgc2VwYXJhdGVkIGJ5IFwiL1wiIik7
CiAKIC8vIFNjcmVlbnNoYXJlLXNwZWNpZmljIGZsYWdzLgotREVGSU5FX2ludChtaW5fdHJhbnNt
aXRfYml0cmF0ZSwgNDAwLCAiTWluIHRyYW5zbWl0IGJpdHJhdGUgaW5jbC4gcGFkZGluZy4iKTsK
K1dFQlJUQ19ERUZJTkVfaW50KG1pbl90cmFuc21pdF9iaXRyYXRlLAorICAgICAgICAgICAgICAg
ICAgNDAwLAorICAgICAgICAgICAgICAgICAgIk1pbiB0cmFuc21pdCBiaXRyYXRlIGluY2wuIHBh
ZGRpbmcuIik7CiBpbnQgTWluVHJhbnNtaXRCaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIEZMQUdf
bWluX3RyYW5zbWl0X2JpdHJhdGU7CiB9CiAKLURFRklORV9ib29sKAorV0VCUlRDX0RFRklORV9i
b29sKAogICAgIGdlbmVyYXRlX3NsaWRlcywKICAgICBmYWxzZSwKICAgICAiV2hldGhlciB0byB1
c2UgcmFuZG9tbHkgZ2VuZXJhdGVkIHNsaWRlcyBvciByZWFkIHRoZW0gZnJvbSBmaWxlcy4iKTsK
QEAgLTI0NiwxNCArMjYwLDE0IEBAIGJvb2wgR2VuZXJhdGVTbGlkZXMoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KEZMQUdfZ2VuZXJhdGVfc2xpZGVzKTsKIH0KIAotREVGSU5FX2ludChz
bGlkZV9jaGFuZ2VfaW50ZXJ2YWwsCi0gICAgICAgICAgIDEwLAotICAgICAgICAgICAiSW50ZXJ2
YWwgKGluIHNlY29uZHMpIGJldHdlZW4gc2ltdWxhdGVkIHNsaWRlIGNoYW5nZXMuIik7CitXRUJS
VENfREVGSU5FX2ludChzbGlkZV9jaGFuZ2VfaW50ZXJ2YWwsCisgICAgICAgICAgICAgICAgICAx
MCwKKyAgICAgICAgICAgICAgICAgICJJbnRlcnZhbCAoaW4gc2Vjb25kcykgYmV0d2VlbiBzaW11
bGF0ZWQgc2xpZGUgY2hhbmdlcy4iKTsKIGludCBTbGlkZUNoYW5nZUludGVydmFsKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NsaWRlX2NoYW5nZV9pbnRlcnZhbCk7CiB9CiAK
LURFRklORV9pbnQoCitXRUJSVENfREVGSU5FX2ludCgKICAgICBzY3JvbGxfZHVyYXRpb24sCiAg
ICAgMCwKICAgICAiRHVyYXRpb24gKGluIHNlY29uZHMpIGR1cmluZyB3aGljaCBhIHNsaWRlIHdp
bGwgYmUgc2Nyb2xsZWQgaW50byBwbGFjZS4iKTsKQEAgLTI2MSw5ICsyNzUsMTAgQEAgaW50IFNj
cm9sbER1cmF0aW9uKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3Njcm9sbF9k
dXJhdGlvbik7CiB9CiAKLURFRklORV9zdHJpbmcoc2xpZGVzLAotICAgICAgICAgICAgICAiIiwK
LSAgICAgICAgICAgICAgIkNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICoueXV2IGZpbGVzIHRvIGRp
c3BsYXkgYXMgc2xpZGVzLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgc2xpZGVzLAor
ICAgICIiLAorICAgICJDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAqLnl1diBmaWxlcyB0byBkaXNw
bGF5IGFzIHNsaWRlcy4iKTsKIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBTbGlkZXMoKSB7CiAg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBzbGlkZXM7CiAgIHN0ZDo6c3RyaW5nIHNsaWRlc19s
aXN0ID0gRkxBR19zbGlkZXM7CkBAIC0yNzEsMTIgKzI4NiwxMiBAQCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gU2xpZGVzKCkgewogICByZXR1cm4gc2xpZGVzOwogfQogCi1ERUZJTkVfYm9vbCho
ZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCho
ZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKTsKIAogfSAgLy8gbmFtZXNwYWNlIGZs
YWdzCiAKIHZvaWQgTG9vcGJhY2soKSB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZp
ZyBwaXBlX2NvbmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBwaXBlX2NvbmZp
ZzsKICAgcGlwZV9jb25maWcubG9zc19wZXJjZW50ID0gZmxhZ3M6Okxvc3NQZXJjZW50KCk7CiAg
IHBpcGVfY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IGZsYWdzOjpMaW5rQ2FwYWNpdHlLYnBz
KCk7CiAgIHBpcGVfY29uZmlnLnF1ZXVlX2xlbmd0aF9wYWNrZXRzID0gZmxhZ3M6OlF1ZXVlU2l6
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vc2VuZF9kZWxheV9zdGF0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9kZWxheV9zdGF0cy5oCmluZGV4IDMzMzc4OTkwNjlh
MDA2MDk3NjYwMDMwYmEwMDVkZWNmZGEwMmE1NzYuLmI0NDUxNmIyODU1NDFhYmEwODFmMTEwYjMx
NmZlMjJkZTljMGJhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfZGVsYXlfc3RhdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX2RlbGF5X3N0YXRzLmgKQEAg
LTE2LDcgKzE2LDYgQEAKICNpbmNsdWRlIDxzZXQ+CiAKICNpbmNsdWRlICJjYWxsL3ZpZGVvX3Nl
bmRfc3RyZWFtLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQv
aW5jbHVkZSkKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKICNpbmNsdWRl
ICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBl
cnMvaW5jbHVkZS9jbG9jay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0aWNz
X3Byb3h5LmNjCmluZGV4IDk4MzllZDdhM2I3MDk0YmRmZmU3NGRlODM0ZDFmNzczMTVlY2JhZmIu
LjI0ZTk2NDE5NDcxNDUwMzc0OGYyMDU1MzMxY2NiNTk1OTdmN2QxYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfc3RhdGlz
dGljc19wcm94eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9zZW5kX3N0YXRpc3RpY3NfcHJveHkuY2MKQEAgLTE1LDcgKzE1LDYgQEAKICNp
bmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAotI2luY2x1ZGUgImNvbW1vbl90
eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCkBAIC04MjMsMTAg
KzgyMiwxMyBAQCB2b2lkIFNlbmRTdGF0aXN0aWNzUHJveHk6OlVwZGF0ZUVuY29kZXJGYWxsYmFj
a1N0YXRzKAogCiAgIGNvbnN0IGludDY0X3Qgbm93X21zID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNl
Y29uZHMoKTsKICAgYm9vbCBpc19hY3RpdmUgPSBmYWxsYmFja19pbmZvLT5pc19hY3RpdmU7Ci0g
IGlmIChjb2RlY19pbmZvLT5jb2RlY19uYW1lICE9IHN0YXRzXy5lbmNvZGVyX2ltcGxlbWVudGF0
aW9uX25hbWUpIHsKKyAgaWYgKGVuY29kZXJfY2hhbmdlZF8pIHsKICAgICAvLyBJbXBsZW1lbnRh
dGlvbiBjaGFuZ2VkLgotICAgIGlzX2FjdGl2ZSA9IHN0cmNtcChjb2RlY19pbmZvLT5jb2RlY19u
YW1lLCBrVnA4U3dDb2RlY05hbWUpID09IDA7Ci0gICAgaWYgKCFpc19hY3RpdmUgJiYgc3RhdHNf
LmVuY29kZXJfaW1wbGVtZW50YXRpb25fbmFtZSAhPSBrVnA4U3dDb2RlY05hbWUpIHsKKyAgICBj
b25zdCBib29sIGxhc3Rfd2FzX3ZwOF9zb2Z0d2FyZSA9CisgICAgICAgIGVuY29kZXJfY2hhbmdl
ZF8tPnByZXZpb3VzX2VuY29kZXJfaW1wbGVtZW50YXRpb24gPT0ga1ZwOFN3Q29kZWNOYW1lOwor
ICAgIGlzX2FjdGl2ZSA9IGVuY29kZXJfY2hhbmdlZF8tPm5ld19lbmNvZGVyX2ltcGxlbWVudGF0
aW9uID09IGtWcDhTd0NvZGVjTmFtZTsKKyAgICBlbmNvZGVyX2NoYW5nZWRfLnJlc2V0KCk7Cisg
ICAgaWYgKCFpc19hY3RpdmUgJiYgIWxhc3Rfd2FzX3ZwOF9zb2Z0d2FyZSkgewogICAgICAgLy8g
Rmlyc3Qgb3Igbm90IGEgVlA4IFNXIGNoYW5nZSwgdXBkYXRlIHN0YXRzIG9uIG5leHQgY2FsbC4K
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC04NjUsNyArODY3LDcgQEAgdm9pZCBTZW5kU3RhdGlz
dGljc1Byb3h5OjpVcGRhdGVGYWxsYmFja0Rpc2FibGVkU3RhdHMoCiAgIH0KIAogICBpZiAoIUlz
Rm9yY2VkRmFsbGJhY2tQb3NzaWJsZShjb2RlY19pbmZvLCBzaW11bGNhc3RfaW5kZXgpIHx8Ci0g
ICAgICBzdHJjbXAoY29kZWNfaW5mby0+Y29kZWNfbmFtZSwga1ZwOFN3Q29kZWNOYW1lKSA9PSAw
KSB7CisgICAgICBzdGF0c18uZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbl9uYW1lID09IGtWcDhTd0Nv
ZGVjTmFtZSkgewogICAgIHVtYV9jb250YWluZXJfLT5mYWxsYmFja19pbmZvX2Rpc2FibGVkXy5p
c19wb3NzaWJsZSA9IGZhbHNlOwogICAgIHJldHVybjsKICAgfQpAQCAtODk1LDEzICs4OTcsOSBA
QCB2b2lkIFNlbmRTdGF0aXN0aWNzUHJveHk6Ok9uU2VuZEVuY29kZWRJbWFnZSgKICAgcnRjOjpD
cml0U2NvcGUgbG9jaygmY3JpdF8pOwogICArK3N0YXRzXy5mcmFtZXNfZW5jb2RlZDsKICAgaWYg
KGNvZGVjX2luZm8pIHsKLSAgICBpZiAoY29kZWNfaW5mby0+Y29kZWNfbmFtZSkgewotICAgICAg
VXBkYXRlRW5jb2RlckZhbGxiYWNrU3RhdHMoCi0gICAgICAgICAgY29kZWNfaW5mbywKLSAgICAg
ICAgICBlbmNvZGVkX2ltYWdlLl9lbmNvZGVkV2lkdGggKiBlbmNvZGVkX2ltYWdlLl9lbmNvZGVk
SGVpZ2h0LAotICAgICAgICAgIHNpbXVsY2FzdF9pZHgpOwotICAgICAgc3RhdHNfLmVuY29kZXJf
aW1wbGVtZW50YXRpb25fbmFtZSA9IGNvZGVjX2luZm8tPmNvZGVjX25hbWU7Ci0gICAgfQorICAg
IFVwZGF0ZUVuY29kZXJGYWxsYmFja1N0YXRzKAorICAgICAgICBjb2RlY19pbmZvLCBlbmNvZGVk
X2ltYWdlLl9lbmNvZGVkV2lkdGggKiBlbmNvZGVkX2ltYWdlLl9lbmNvZGVkSGVpZ2h0LAorICAg
ICAgICBzaW11bGNhc3RfaWR4KTsKICAgfQogCiAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KHNp
bXVsY2FzdF9pZHgpID49IHJ0cF9jb25maWdfLnNzcmNzLnNpemUoKSkgewpAQCAtOTgxLDYgKzk3
OSwxNCBAQCB2b2lkIFNlbmRTdGF0aXN0aWNzUHJveHk6Ok9uU2VuZEVuY29kZWRJbWFnZSgKICAg
fQogfQogCit2b2lkIFNlbmRTdGF0aXN0aWNzUHJveHk6Ok9uRW5jb2RlckltcGxlbWVudGF0aW9u
Q2hhbmdlZCgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW1wbGVtZW50YXRpb25fbmFtZSkgewor
ICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7CisgIGVuY29kZXJfY2hhbmdlZF8gPSBFbmNv
ZGVyQ2hhbmdlRXZlbnR7c3RhdHNfLmVuY29kZXJfaW1wbGVtZW50YXRpb25fbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbl9uYW1lfTsK
KyAgc3RhdHNfLmVuY29kZXJfaW1wbGVtZW50YXRpb25fbmFtZSA9IGltcGxlbWVudGF0aW9uX25h
bWU7Cit9CisKIGludCBTZW5kU3RhdGlzdGljc1Byb3h5OjpHZXRJbnB1dEZyYW1lUmF0ZSgpIGNv
bnN0IHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF8pOwogICByZXR1cm4gcm91bmQodW1h
X2NvbnRhaW5lcl8tPmlucHV0X2ZyYW1lX3JhdGVfdHJhY2tlcl8uQ29tcHV0ZVJhdGUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9zZW5kX3N0YXRpc3RpY3NfcHJveHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGljc19wcm94eS5oCmluZGV4IGI1ODY4ZDA4
OTA3MjdmMDUyNjBlOTAzMGI0NTcwOTA5ZmQyZjQxODYuLjczMTZmM2I1NWFlYzBkMzRmZDVmNWFh
MDkyZTBmMTljYTg4OWJjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGljc19wcm94eS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGlj
c19wcm94eS5oCkBAIC0xOCw3ICsxOCw2IEBACiAKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9f
c3RyZWFtX2VuY29kZXJfb2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJjYWxsL3ZpZGVvX3NlbmRfc3Ry
ZWFtLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVk
ZSkKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2lu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9f
Y29kaW5nX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIK
QEAgLTUzLDYgKzUyLDEwIEBAIGNsYXNzIFNlbmRTdGF0aXN0aWNzUHJveHkgOiBwdWJsaWMgVmlk
ZW9TdHJlYW1FbmNvZGVyT2JzZXJ2ZXIsCiAKICAgdm9pZCBPblNlbmRFbmNvZGVkSW1hZ2UoY29u
c3QgRW5jb2RlZEltYWdlJiBlbmNvZGVkX2ltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfaW5mbykgb3ZlcnJpZGU7CisKKyAgdm9p
ZCBPbkVuY29kZXJJbXBsZW1lbnRhdGlvbkNoYW5nZWQoCisgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgaW1wbGVtZW50YXRpb25fbmFtZSkgb3ZlcnJpZGU7CisKICAgLy8gVXNlZCB0byB1cGRhdGUg
aW5jb21pbmcgZnJhbWUgcmF0ZS4KICAgdm9pZCBPbkluY29taW5nRnJhbWUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSBvdmVycmlkZTsKIApAQCAtMjQxLDYgKzI0NCwxNCBAQCBjbGFzcyBTZW5kU3Rh
dGlzdGljc1Byb3h5IDogcHVibGljIFZpZGVvU3RyZWFtRW5jb2Rlck9ic2VydmVyLAogCiAgIGFi
c2w6Om9wdGlvbmFsPGludDY0X3Q+IGxhc3Rfb3V0bGllcl90aW1lc3RhbXBfIFJUQ19HVUFSREVE
X0JZKGNyaXRfKTsKIAorICBzdHJ1Y3QgRW5jb2RlckNoYW5nZUV2ZW50IHsKKyAgICBzdGQ6OnN0
cmluZyBwcmV2aW91c19lbmNvZGVyX2ltcGxlbWVudGF0aW9uOworICAgIHN0ZDo6c3RyaW5nIG5l
d19lbmNvZGVyX2ltcGxlbWVudGF0aW9uOworICB9OworICAvLyBTdG9yZXMgdGhlIGxhc3QgY2hh
bmdlIGluIGVuY29kZXIgaW1wbGVtZW50YXRpb24gaW4gYW4gb3B0aW9uYWwsIHNvIHRoYXQKKyAg
Ly8gdGhlIGV2ZW50IGNhbiBiZSBjb25zdW1lZC4KKyAgYWJzbDo6b3B0aW9uYWw8RW5jb2RlckNo
YW5nZUV2ZW50PiBlbmNvZGVyX2NoYW5nZWRfOworCiAgIC8vIENvbnRhaW5zIHN0YXRzIHVzZWQg
Zm9yIFVNQSBoaXN0b2dyYW1zLiBUaGVzZSBzdGF0cyB3aWxsIGJlIHJlc2V0IGlmCiAgIC8vIGNv
bnRlbnQgdHlwZSBjaGFuZ2VzIGJldHdlZW4gcmVhbC10aW1lIHZpZGVvIGFuZCBzY3JlZW5zaGFy
ZSwgc2luY2UgdGhlc2UKICAgLy8gd2lsbCBiZSByZXBvcnRlZCBzZXBhcmF0ZWx5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2Vu
ZF9zdGF0aXN0aWNzX3Byb3h5X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0aWNzX3Byb3h5X3VuaXR0ZXN0LmNj
CmluZGV4IDNkMjdjNzEyYzZiNmEzNzI3ZjlmOTkzYmRiMTZkMWEzMTJkYWY0NDMuLjU4NmQ1N2Zi
Mjg0ODgwZmZmMTczM2VjOWU3YzgyMDU1YjQ4ZjMzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGljc19wcm94
eV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9zZW5kX3N0YXRpc3RpY3NfcHJveHlfdW5pdHRlc3QuY2MKQEAgLTIxNjcsMTMg
KzIxNjcsOSBAQCBURVNUX0YoU2VuZFN0YXRpc3RpY3NQcm94eVRlc3QsIEZlY0JpdHJhdGVOb3RS
ZXBvcnRlZFdoZW5Ob3RFbmFibGVkKSB7CiB9CiAKIFRFU1RfRihTZW5kU3RhdGlzdGljc1Byb3h5
VGVzdCwgR2V0U3RhdHNSZXBvcnRzRW5jb2RlckltcGxlbWVudGF0aW9uTmFtZSkgewotICBjb25z
dCBjaGFyKiBrTmFtZSA9ICJlbmNvZGVyTmFtZSI7Ci0gIEVuY29kZWRJbWFnZSBlbmNvZGVkX2lt
YWdlOwotICBDb2RlY1NwZWNpZmljSW5mbyBjb2RlY19pbmZvOwotICBjb2RlY19pbmZvLmNvZGVj
X25hbWUgPSBrTmFtZTsKLSAgc3RhdGlzdGljc19wcm94eV8tPk9uU2VuZEVuY29kZWRJbWFnZShl
bmNvZGVkX2ltYWdlLCAmY29kZWNfaW5mbyk7Ci0gIEVYUEVDVF9TVFJFUSgKLSAgICAgIGtOYW1l
LCBzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5lbmNvZGVyX2ltcGxlbWVudGF0aW9uX25h
bWUuY19zdHIoKSk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtOYW1lID0gImVuY29kZXJOYW1lIjsK
KyAgc3RhdGlzdGljc19wcm94eV8tPk9uRW5jb2RlckltcGxlbWVudGF0aW9uQ2hhbmdlZChrTmFt
ZSk7CisgIEVYUEVDVF9FUShrTmFtZSwgc3RhdGlzdGljc19wcm94eV8tPkdldFN0YXRzKCkuZW5j
b2Rlcl9pbXBsZW1lbnRhdGlvbl9uYW1lKTsKIH0KIAogVEVTVF9GKFNlbmRTdGF0aXN0aWNzUHJv
eHlUZXN0LCBWcDlTdmNMb3dTcGF0aWFsTGF5ZXJEb2VzTm90VXBkYXRlUmVzb2x1dGlvbikgewpA
QCAtMjIxOSw3ICsyMjE1LDYgQEAgY2xhc3MgRm9yY2VkRmFsbGJhY2tUZXN0IDogcHVibGljIFNl
bmRTdGF0aXN0aWNzUHJveHlUZXN0IHsKICAgICAgIDogU2VuZFN0YXRpc3RpY3NQcm94eVRlc3Qo
ZmllbGRfdHJpYWxzKSB7CiAgICAgY29kZWNfaW5mb18uY29kZWNUeXBlID0ga1ZpZGVvQ29kZWNW
UDg7CiAgICAgY29kZWNfaW5mb18uY29kZWNTcGVjaWZpYy5WUDgudGVtcG9yYWxJZHggPSAwOwot
ICAgIGNvZGVjX2luZm9fLmNvZGVjX25hbWUgPSAiZmFrZV9jb2RlYyI7CiAgICAgZW5jb2RlZF9p
bWFnZV8uX2VuY29kZWRXaWR0aCA9IGtXaWR0aDsKICAgICBlbmNvZGVkX2ltYWdlXy5fZW5jb2Rl
ZEhlaWdodCA9IGtIZWlnaHQ7CiAgICAgZW5jb2RlZF9pbWFnZV8uU2V0U3BhdGlhbEluZGV4KDAp
OwpAQCAtMjIyOSw2ICsyMjI0LDggQEAgY2xhc3MgRm9yY2VkRmFsbGJhY2tUZXN0IDogcHVibGlj
IFNlbmRTdGF0aXN0aWNzUHJveHlUZXN0IHsKIAogIHByb3RlY3RlZDoKICAgdm9pZCBJbnNlcnRF
bmNvZGVkRnJhbWVzKGludCBudW1fZnJhbWVzLCBpbnQgaW50ZXJ2YWxfbXMpIHsKKyAgICBzdGF0
aXN0aWNzX3Byb3h5Xy0+T25FbmNvZGVySW1wbGVtZW50YXRpb25DaGFuZ2VkKGNvZGVjX25hbWVf
KTsKKwogICAgIC8vIEZpcnN0IGZyYW1lIGlzIG5vdCB1cGRhdGluZyBzdGF0cywgaW5zZXJ0IGlu
aXRpYWwgZnJhbWUuCiAgICAgaWYgKHN0YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygpLmZyYW1l
c19lbmNvZGVkID09IDApIHsKICAgICAgIHN0YXRpc3RpY3NfcHJveHlfLT5PblNlbmRFbmNvZGVk
SW1hZ2UoZW5jb2RlZF9pbWFnZV8sICZjb2RlY19pbmZvXyk7CkBAIC0yMjQzLDYgKzIyNDAsNyBA
QCBjbGFzcyBGb3JjZWRGYWxsYmFja1Rlc3QgOiBwdWJsaWMgU2VuZFN0YXRpc3RpY3NQcm94eVRl
c3QgewogCiAgIEVuY29kZWRJbWFnZSBlbmNvZGVkX2ltYWdlXzsKICAgQ29kZWNTcGVjaWZpY0lu
Zm8gY29kZWNfaW5mb187CisgIHN0ZDo6c3RyaW5nIGNvZGVjX25hbWVfOwogICBjb25zdCBzdGQ6
OnN0cmluZyBrUHJlZml4ID0gIldlYlJUQy5WaWRlby5FbmNvZGVyLkZvcmNlZFN3IjsKICAgY29u
c3QgaW50IGtGcmFtZUludGVydmFsTXMgPSAxMDAwOwogICBjb25zdCBpbnQga01pbkZyYW1lcyA9
IDIwOyAgLy8gTWluIHJ1biB0aW1lIDIwIHNlYy4KQEAgLTIzMjEsNyArMjMxOSw3IEBAIFRFU1Rf
RihGb3JjZWRGYWxsYmFja0VuYWJsZWQsIEVudGVyZWRMb3dSZXNvbHV0aW9uTm90U2V0SWZOb3RM
aWJ2cHgpIHsKIH0KIAogVEVTVF9GKEZvcmNlZEZhbGxiYWNrRW5hYmxlZCwgRW50ZXJlZExvd1Jl
c29sdXRpb25TZXRJZkxpYnZweCkgewotICBjb2RlY19pbmZvXy5jb2RlY19uYW1lID0gImxpYnZw
eCI7CisgIGNvZGVjX25hbWVfID0gImxpYnZweCI7CiAgIEluc2VydEVuY29kZWRGcmFtZXMoMSwg
a0ZyYW1lSW50ZXJ2YWxNcyk7CiAgIEVYUEVDVF9UUlVFKHN0YXRpc3RpY3NfcHJveHlfLT5HZXRT
dGF0cygpLmhhc19lbnRlcmVkX2xvd19yZXNvbHV0aW9uKTsKIH0KQEAgLTIzMzMsNyArMjMzMSw3
IEBAIFRFU1RfRihGb3JjZWRGYWxsYmFja0Rpc2FibGVkLCBFbnRlcmVkTG93UmVzb2x1dGlvbk5v
dFNldElmQWJvdmVNYXhQaXhlbHMpIHsKIH0KIAogVEVTVF9GKEZvcmNlZEZhbGxiYWNrRGlzYWJs
ZWQsIEVudGVyZWRMb3dSZXNvbHV0aW9uTm90U2V0SWZMaWJ2cHgpIHsKLSAgY29kZWNfaW5mb18u
Y29kZWNfbmFtZSA9ICJsaWJ2cHgiOworICBjb2RlY19uYW1lXyA9ICJsaWJ2cHgiOwogICBJbnNl
cnRFbmNvZGVkRnJhbWVzKDEsIGtGcmFtZUludGVydmFsTXMpOwogICBFWFBFQ1RfRkFMU0Uoc3Rh
dGlzdGljc19wcm94eV8tPkdldFN0YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwog
fQpAQCAtMjM1MSw3ICsyMzQ5LDcgQEAgVEVTVF9GKEZvcmNlZEZhbGxiYWNrRW5hYmxlZCwgT25l
RmFsbGJhY2tFdmVudCkgewogICBFWFBFQ1RfRkFMU0Uoc3RhdGlzdGljc19wcm94eV8tPkdldFN0
YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwogICBJbnNlcnRFbmNvZGVkRnJhbWVz
KDE1LCAxMDAwKTsKICAgRVhQRUNUX0ZBTFNFKHN0YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygp
Lmhhc19lbnRlcmVkX2xvd19yZXNvbHV0aW9uKTsKLSAgY29kZWNfaW5mb18uY29kZWNfbmFtZSA9
ICJsaWJ2cHgiOworICBjb2RlY19uYW1lXyA9ICJsaWJ2cHgiOwogICBJbnNlcnRFbmNvZGVkRnJh
bWVzKDUsIDEwMDApOwogICBFWFBFQ1RfVFJVRShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMo
KS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7CiAKQEAgLTIzNjksMTggKzIzNjcsMTggQEAg
VEVTVF9GKEZvcmNlZEZhbGxiYWNrRW5hYmxlZCwgVGhyZWVGYWxsYmFja0V2ZW50cykgewogICAv
LyBUaHJlZSBjaGFuZ2VzLiBWaWRlbzogNjAwMDAgbXMsIGZhbGxiYWNrOiAxNTAwMCBtcyAoMjUl
KS4KICAgSW5zZXJ0RW5jb2RlZEZyYW1lcygxMCwgMTAwMCk7CiAgIEVYUEVDVF9GQUxTRShzdGF0
aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7Ci0g
IGNvZGVjX2luZm9fLmNvZGVjX25hbWUgPSAibGlidnB4IjsKKyAgY29kZWNfbmFtZV8gPSAibGli
dnB4IjsKICAgSW5zZXJ0RW5jb2RlZEZyYW1lcygxNSwgNTAwKTsKICAgRVhQRUNUX1RSVUUoc3Rh
dGlzdGljc19wcm94eV8tPkdldFN0YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwot
ICBjb2RlY19pbmZvXy5jb2RlY19uYW1lID0gIm5vdGxpYnZweCI7CisgIGNvZGVjX25hbWVfID0g
Im5vdGxpYnZweCI7CiAgIEluc2VydEVuY29kZWRGcmFtZXMoMjAsIDEwMDApOwogICBJbnNlcnRF
bmNvZGVkRnJhbWVzKDMsIGtNYXhGcmFtZURpZmZNcyk7ICAvLyBTaG91bGQgbm90IGJlIGluY2x1
ZGVkLgogICBJbnNlcnRFbmNvZGVkRnJhbWVzKDEwLCAxMDAwKTsKICAgRVhQRUNUX1RSVUUoc3Rh
dGlzdGljc19wcm94eV8tPkdldFN0YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwot
ICBjb2RlY19pbmZvXy5jb2RlY19uYW1lID0gIm5vdGxpYnZweDIiOworICBjb2RlY19uYW1lXyA9
ICJub3RsaWJ2cHgyIjsKICAgSW5zZXJ0RW5jb2RlZEZyYW1lcygxMCwgNTAwKTsKICAgRVhQRUNU
X1RSVUUoc3RhdGlzdGljc19wcm94eV8tPkdldFN0YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29s
dXRpb24pOwotICBjb2RlY19pbmZvXy5jb2RlY19uYW1lID0gImxpYnZweCI7CisgIGNvZGVjX25h
bWVfID0gImxpYnZweCI7CiAgIEluc2VydEVuY29kZWRGcmFtZXMoMTUsIDUwMCk7CiAgIEVYUEVD
VF9UUlVFKHN0YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygpLmhhc19lbnRlcmVkX2xvd19yZXNv
bHV0aW9uKTsKIApAQCAtMjM5Myw3ICsyMzkxLDcgQEAgVEVTVF9GKEZvcmNlZEZhbGxiYWNrRW5h
YmxlZCwgVGhyZWVGYWxsYmFja0V2ZW50cykgewogCiBURVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFi
bGVkLCBOb0ZhbGxiYWNrSWZBYm92ZU1heFBpeGVscykgewogICBlbmNvZGVkX2ltYWdlXy5fZW5j
b2RlZFdpZHRoID0ga1dpZHRoICsgMTsKLSAgY29kZWNfaW5mb18uY29kZWNfbmFtZSA9ICJsaWJ2
cHgiOworICBjb2RlY19uYW1lXyA9ICJsaWJ2cHgiOwogICBJbnNlcnRFbmNvZGVkRnJhbWVzKGtN
aW5GcmFtZXMsIGtGcmFtZUludGVydmFsTXMpOwogCiAgIEVYUEVDVF9GQUxTRShzdGF0aXN0aWNz
X3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7CkBAIC0yNDA0
LDcgKzI0MDIsNyBAQCBURVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFibGVkLCBOb0ZhbGxiYWNrSWZB
Ym92ZU1heFBpeGVscykgewogCiBURVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFibGVkLCBGYWxsYmFj
a0lmQXRNYXhQaXhlbHMpIHsKICAgZW5jb2RlZF9pbWFnZV8uX2VuY29kZWRXaWR0aCA9IGtXaWR0
aDsKLSAgY29kZWNfaW5mb18uY29kZWNfbmFtZSA9ICJsaWJ2cHgiOworICBjb2RlY19uYW1lXyA9
ICJsaWJ2cHgiOwogICBJbnNlcnRFbmNvZGVkRnJhbWVzKGtNaW5GcmFtZXMsIGtGcmFtZUludGVy
dmFsTXMpOwogCiAgIEVYUEVDVF9UUlVFKHN0YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygpLmhh
c19lbnRlcmVkX2xvd19yZXNvbHV0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3N2X2xvb3BiYWNrLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc3ZfbG9vcGJhY2suY2MKaW5k
ZXggZmQ3MmM5OTkxMjRkMTU1YTVlNDA0YTlkNmMyMjYyNDE0OTExOGQxYi4uMWZmNDk1NmNhMjk1
MGNlYmYxNzk3MjMwNDRkOWFlZDEwMDNjOTVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc3ZfbG9vcGJhY2suY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc3ZfbG9vcGJhY2su
Y2MKQEAgLTEyLDcgKzEyLDYgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29k
ZS5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAj
aW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKQEAg
LTM0LDczICszMyw3OSBAQCBJbnRlckxheWVyUHJlZE1vZGUgSW50VG9JbnRlckxheWVyUHJlZE1v
ZGUoaW50IGludGVyX2xheWVyX3ByZWQpIHsKIH0KIAogLy8gRmxhZ3MgZm9yIHZpZGVvLgotREVG
SU5FX2ludCh2d2lkdGgsIDY0MCwgIlZpZGVvIHdpZHRoLiIpOworV0VCUlRDX0RFRklORV9pbnQo
dndpZHRoLCA2NDAsICJWaWRlbyB3aWR0aC4iKTsKIHNpemVfdCBWaWRlb1dpZHRoKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihGTEFHX3Z3aWR0aCk7CiB9CiAKLURFRklORV9pbnQo
dmhlaWdodCwgNDgwLCAiVmlkZW8gaGVpZ2h0LiIpOworV0VCUlRDX0RFRklORV9pbnQodmhlaWdo
dCwgNDgwLCAiVmlkZW8gaGVpZ2h0LiIpOwogc2l6ZV90IFZpZGVvSGVpZ2h0KCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihGTEFHX3ZoZWlnaHQpOwogfQogCi1ERUZJTkVfaW50KHZm
cHMsIDMwLCAiVmlkZW8gZnJhbWVzIHBlciBzZWNvbmQuIik7CitXRUJSVENfREVGSU5FX2ludCh2
ZnBzLCAzMCwgIlZpZGVvIGZyYW1lcyBwZXIgc2Vjb25kLiIpOwogaW50IFZpZGVvRnBzKCkgewog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3ZmcHMpOwogfQogCi1ERUZJTkVfaW50KGNh
cHR1cmVfZGV2aWNlX2luZGV4LAotICAgICAgICAgICAwLAotICAgICAgICAgICAiQ2FwdHVyZSBk
ZXZpY2UgdG8gc2VsZWN0IGZvciB2aWRlbyBzdHJlYW0iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGNh
cHR1cmVfZGV2aWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAg
ICAgICJDYXB0dXJlIGRldmljZSB0byBzZWxlY3QgZm9yIHZpZGVvIHN0cmVhbSIpOwogc2l6ZV90
IEdldENhcHR1cmVEZXZpY2UoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdf
Y2FwdHVyZV9kZXZpY2VfaW5kZXgpOwogfQogCi1ERUZJTkVfaW50KHZ0YXJnZXRfYml0cmF0ZSwg
NDAwLCAiVmlkZW8gc3RyZWFtIHRhcmdldCBiaXRyYXRlIGluIGticHMuIik7CitXRUJSVENfREVG
SU5FX2ludCh2dGFyZ2V0X2JpdHJhdGUsIDQwMCwgIlZpZGVvIHN0cmVhbSB0YXJnZXQgYml0cmF0
ZSBpbiBrYnBzLiIpOwogaW50IFZpZGVvVGFyZ2V0Qml0cmF0ZUticHMoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KEZMQUdfdnRhcmdldF9iaXRyYXRlKTsKIH0KIAotREVGSU5FX2ludCh2
bWluX2JpdHJhdGUsIDEwMCwgIlZpZGVvIHN0cmVhbSBtaW4gYml0cmF0ZSBpbiBrYnBzLiIpOwor
V0VCUlRDX0RFRklORV9pbnQodm1pbl9iaXRyYXRlLCAxMDAsICJWaWRlbyBzdHJlYW0gbWluIGJp
dHJhdGUgaW4ga2Jwcy4iKTsKIGludCBWaWRlb01pbkJpdHJhdGVLYnBzKCkgewogICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihGTEFHX3ZtaW5fYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQodm1h
eF9iaXRyYXRlLCAyMDAwLCAiVmlkZW8gc3RyZWFtIG1heCBiaXRyYXRlIGluIGticHMuIik7CitX
RUJSVENfREVGSU5FX2ludCh2bWF4X2JpdHJhdGUsIDIwMDAsICJWaWRlbyBzdHJlYW0gbWF4IGJp
dHJhdGUgaW4ga2Jwcy4iKTsKIGludCBWaWRlb01heEJpdHJhdGVLYnBzKCkgewogICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihGTEFHX3ZtYXhfYml0cmF0ZSk7CiB9CiAKLURFRklORV9ib29sKHN1
c3BlbmRfYmVsb3dfbWluX2JpdHJhdGUsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAg
ICJTdXNwZW5kcyB2aWRlbyBiZWxvdyB0aGUgY29uZmlndXJlZCBtaW4gYml0cmF0ZS4iKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbChzdXNwZW5kX2JlbG93X21pbl9iaXRyYXRlLAorICAgICAgICAgICAg
ICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJTdXNwZW5kcyB2aWRlbyBiZWxvdyB0
aGUgY29uZmlndXJlZCBtaW4gYml0cmF0ZS4iKTsKIAotREVGSU5FX2ludCh2bnVtX3RlbXBvcmFs
X2xheWVycywKLSAgICAgICAgICAgMSwKLSAgICAgICAgICAgIk51bWJlciBvZiB0ZW1wb3JhbCBs
YXllcnMgZm9yIHZpZGVvLiBTZXQgdG8gMS00IHRvIG92ZXJyaWRlLiIpOworV0VCUlRDX0RFRklO
RV9pbnQoCisgICAgdm51bV90ZW1wb3JhbF9sYXllcnMsCisgICAgMSwKKyAgICAiTnVtYmVyIG9m
IHRlbXBvcmFsIGxheWVycyBmb3IgdmlkZW8uIFNldCB0byAxLTQgdG8gb3ZlcnJpZGUuIik7CiBp
bnQgVmlkZW9OdW1UZW1wb3JhbExheWVycygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
RkxBR192bnVtX3RlbXBvcmFsX2xheWVycyk7CiB9CiAKLURFRklORV9pbnQodm51bV9zdHJlYW1z
LCAwLCAiTnVtYmVyIG9mIHZpZGVvIHN0cmVhbXMgdG8gc2hvdyBvciBhbmFseXplLiIpOworV0VC
UlRDX0RFRklORV9pbnQodm51bV9zdHJlYW1zLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAg
ICAgICAgICAgICAgICJOdW1iZXIgb2YgdmlkZW8gc3RyZWFtcyB0byBzaG93IG9yIGFuYWx5emUu
Iik7CiBpbnQgVmlkZW9OdW1TdHJlYW1zKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihG
TEFHX3ZudW1fc3RyZWFtcyk7CiB9CiAKLURFRklORV9pbnQodm51bV9zcGF0aWFsX2xheWVycywg
MSwgIk51bWJlciBvZiB2aWRlbyBzcGF0aWFsIGxheWVycyB0byB1c2UuIik7CitXRUJSVENfREVG
SU5FX2ludCh2bnVtX3NwYXRpYWxfbGF5ZXJzLAorICAgICAgICAgICAgICAgICAgMSwKKyAgICAg
ICAgICAgICAgICAgICJOdW1iZXIgb2YgdmlkZW8gc3BhdGlhbCBsYXllcnMgdG8gdXNlLiIpOwog
aW50IFZpZGVvTnVtU3BhdGlhbExheWVycygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
RkxBR192bnVtX3NwYXRpYWxfbGF5ZXJzKTsKIH0KIAotREVGSU5FX2ludCh2aW50ZXJfbGF5ZXJf
cHJlZCwKLSAgICAgICAgICAgMiwKLSAgICAgICAgICAgIlZpZGVvIGludGVyLWxheWVyIHByZWRp
Y3Rpb24gbW9kZS4gIgotICAgICAgICAgICAiMCAtIGVuYWJsZWQsIDEgLSBkaXNhYmxlZCwgMiAt
IGVuYWJsZWQgb25seSBmb3Iga2V5IHBpY3R1cmVzLiIpOworV0VCUlRDX0RFRklORV9pbnQoCisg
ICAgdmludGVyX2xheWVyX3ByZWQsCisgICAgMiwKKyAgICAiVmlkZW8gaW50ZXItbGF5ZXIgcHJl
ZGljdGlvbiBtb2RlLiAiCisgICAgIjAgLSBlbmFibGVkLCAxIC0gZGlzYWJsZWQsIDIgLSBlbmFi
bGVkIG9ubHkgZm9yIGtleSBwaWN0dXJlcy4iKTsKIEludGVyTGF5ZXJQcmVkTW9kZSBWaWRlb0lu
dGVyTGF5ZXJQcmVkKCkgewogICByZXR1cm4gSW50VG9JbnRlckxheWVyUHJlZE1vZGUoRkxBR192
aW50ZXJfbGF5ZXJfcHJlZCk7CiB9CiAKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVGSU5FX3N0
cmluZygKICAgICB2c3RyZWFtMCwKICAgICAiIiwKICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVl
cyBkZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZvciB2aWRlbyBzdHJlYW0gIzAuIik7CkBAIC0xMDgs
NyArMTEzLDcgQEAgc3RkOjpzdHJpbmcgVmlkZW9TdHJlYW0wKCkgewogICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfdnN0cmVhbTApOwogfQogCi1ERUZJTkVfc3RyaW5nKAor
V0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgdnN0cmVhbTEsCiAgICAgIiIsCiAgICAgIkNvbW1h
IHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBWaWRlb1N0cmVhbSBmb3IgdmlkZW8gc3RyZWFt
ICMxLiIpOwpAQCAtMTE2LDcgKzEyMSw3IEBAIHN0ZDo6c3RyaW5nIFZpZGVvU3RyZWFtMSgpIHsK
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3ZzdHJlYW0xKTsKIH0KIAot
REVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIHZzbDAsCiAgICAgIiIs
CiAgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9y
IHZpZGVvIGxheWVyICMwLiIpOwpAQCAtMTI0LDcgKzEyOSw3IEBAIHN0ZDo6c3RyaW5nIFZpZGVv
U0wwKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfdnNsMCk7CiB9
CiAKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICB2c2wxLAogICAg
ICIiLAogICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgU3BhdGlhbExheWVy
IGZvciB2aWRlbyBsYXllciAjMS4iKTsKQEAgLTEzMiw5OCArMTM3LDEwNSBAQCBzdGQ6OnN0cmlu
ZyBWaWRlb1NMMSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3Zz
bDEpOwogfQogCi1ERUZJTkVfaW50KHZzZWxlY3RlZF90bCwKLSAgICAgICAgICAgLTEsCi0gICAg
ICAgICAgICJUZW1wb3JhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNoYXJl
LiAtMSB0byBkaXNhYmxlICIKLSAgICAgICAgICAgImZpbHRlcmluZy4iKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KAorICAgIHZzZWxlY3RlZF90bCwKKyAgICAtMSwKKyAgICAiVGVtcG9yYWwgbGF5ZXIg
dG8gc2hvdyBvciBhbmFseXplIGZvciBzY3JlZW5zaGFyZS4gLTEgdG8gZGlzYWJsZSAiCisgICAg
ImZpbHRlcmluZy4iKTsKIGludCBWaWRlb1NlbGVjdGVkVEwoKSB7CiAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KEZMQUdfdnNlbGVjdGVkX3RsKTsKIH0KIAotREVGSU5FX2ludCh2c2VsZWN0ZWRf
c3RyZWFtLAotICAgICAgICAgICAwLAotICAgICAgICAgICAiSUQgb2YgdGhlIHN0cmVhbSB0byBz
aG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNoYXJlLiIKLSAgICAgICAgICAgIlNldCB0byB0aGUg
bnVtYmVyIG9mIHN0cmVhbXMgdG8gc2hvdyB0aGVtIGFsbC4iKTsKK1dFQlJUQ19ERUZJTkVfaW50
KHZzZWxlY3RlZF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAg
ICAgIklEIG9mIHRoZSBzdHJlYW0gdG8gc2hvdyBvciBhbmFseXplIGZvciBzY3JlZW5zaGFyZS4i
CisgICAgICAgICAgICAgICAgICAiU2V0IHRvIHRoZSBudW1iZXIgb2Ygc3RyZWFtcyB0byBzaG93
IHRoZW0gYWxsLiIpOwogaW50IFZpZGVvU2VsZWN0ZWRTdHJlYW0oKSB7CiAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KEZMQUdfdnNlbGVjdGVkX3N0cmVhbSk7CiB9CiAKLURFRklORV9pbnQodnNl
bGVjdGVkX3NsLAotICAgICAgICAgICAtMSwKLSAgICAgICAgICAgIlNwYXRpYWwgbGF5ZXIgdG8g
c2hvdyBvciBhbmFseXplIGZvciBzY3JlZW5zaGFyZS4gLTEgdG8gZGlzYWJsZSAiCi0gICAgICAg
ICAgICJmaWx0ZXJpbmcuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICB2c2VsZWN0ZWRfc2ws
CisgICAgLTEsCisgICAgIlNwYXRpYWwgbGF5ZXIgdG8gc2hvdyBvciBhbmFseXplIGZvciBzY3Jl
ZW5zaGFyZS4gLTEgdG8gZGlzYWJsZSAiCisgICAgImZpbHRlcmluZy4iKTsKIGludCBWaWRlb1Nl
bGVjdGVkU0woKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfdnNlbGVjdGVkX3Ns
KTsKIH0KIAogLy8gRmxhZ3MgZm9yIHNjcmVlbnNoYXJlLgotREVGSU5FX2ludChtaW5fdHJhbnNt
aXRfYml0cmF0ZSwKLSAgICAgICAgICAgNDAwLAotICAgICAgICAgICAiTWluIHRyYW5zbWl0IGJp
dHJhdGUgaW5jbC4gcGFkZGluZyBmb3Igc2NyZWVuc2hhcmUuIik7CitXRUJSVENfREVGSU5FX2lu
dChtaW5fdHJhbnNtaXRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgIDQwMCwKKyAgICAgICAg
ICAgICAgICAgICJNaW4gdHJhbnNtaXQgYml0cmF0ZSBpbmNsLiBwYWRkaW5nIGZvciBzY3JlZW5z
aGFyZS4iKTsKIGludCBTY3JlZW5zaGFyZU1pblRyYW5zbWl0Qml0cmF0ZUticHMoKSB7CiAgIHJl
dHVybiBGTEFHX21pbl90cmFuc21pdF9iaXRyYXRlOwogfQogCi1ERUZJTkVfaW50KHN3aWR0aCwg
MTg1MCwgIlNjcmVlbnNoYXJlIHdpZHRoIChjcm9wcyBzb3VyY2UpLiIpOworV0VCUlRDX0RFRklO
RV9pbnQoc3dpZHRoLCAxODUwLCAiU2NyZWVuc2hhcmUgd2lkdGggKGNyb3BzIHNvdXJjZSkuIik7
CiBzaXplX3QgU2NyZWVuc2hhcmVXaWR0aCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVf
dD4oRkxBR19zd2lkdGgpOwogfQogCi1ERUZJTkVfaW50KHNoZWlnaHQsIDExMTAsICJTY3JlZW5z
aGFyZSBoZWlnaHQgKGNyb3BzIHNvdXJjZSkuIik7CitXRUJSVENfREVGSU5FX2ludChzaGVpZ2h0
LCAxMTEwLCAiU2NyZWVuc2hhcmUgaGVpZ2h0IChjcm9wcyBzb3VyY2UpLiIpOwogc2l6ZV90IFNj
cmVlbnNoYXJlSGVpZ2h0KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihGTEFHX3No
ZWlnaHQpOwogfQogCi1ERUZJTkVfaW50KHNmcHMsIDUsICJGcmFtZXMgcGVyIHNlY29uZCBmb3Ig
c2NyZWVuc2hhcmUuIik7CitXRUJSVENfREVGSU5FX2ludChzZnBzLCA1LCAiRnJhbWVzIHBlciBz
ZWNvbmQgZm9yIHNjcmVlbnNoYXJlLiIpOwogaW50IFNjcmVlbnNoYXJlRnBzKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NmcHMpOwogfQogCi1ERUZJTkVfaW50KHN0YXJnZXRf
Yml0cmF0ZSwgMTAwLCAiU2NyZWVuc2hhcmUgc3RyZWFtIHRhcmdldCBiaXRyYXRlIGluIGticHMu
Iik7CitXRUJSVENfREVGSU5FX2ludChzdGFyZ2V0X2JpdHJhdGUsCisgICAgICAgICAgICAgICAg
ICAxMDAsCisgICAgICAgICAgICAgICAgICAiU2NyZWVuc2hhcmUgc3RyZWFtIHRhcmdldCBiaXRy
YXRlIGluIGticHMuIik7CiBpbnQgU2NyZWVuc2hhcmVUYXJnZXRCaXRyYXRlS2JwcygpIHsKICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zdGFyZ2V0X2JpdHJhdGUpOwogfQogCi1ERUZJ
TkVfaW50KHNtaW5fYml0cmF0ZSwgMTAwLCAiU2NyZWVuc2hhcmUgc3RyZWFtIG1pbiBiaXRyYXRl
IGluIGticHMuIik7CitXRUJSVENfREVGSU5FX2ludChzbWluX2JpdHJhdGUsIDEwMCwgIlNjcmVl
bnNoYXJlIHN0cmVhbSBtaW4gYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IFNjcmVlbnNoYXJlTWlu
Qml0cmF0ZUticHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc21pbl9iaXRy
YXRlKTsKIH0KIAotREVGSU5FX2ludChzbWF4X2JpdHJhdGUsIDIwMDAsICJTY3JlZW5zaGFyZSBz
dHJlYW0gbWF4IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNtYXhfYml0
cmF0ZSwKKyAgICAgICAgICAgICAgICAgIDIwMDAsCisgICAgICAgICAgICAgICAgICAiU2NyZWVu
c2hhcmUgc3RyZWFtIG1heCBiaXRyYXRlIGluIGticHMuIik7CiBpbnQgU2NyZWVuc2hhcmVNYXhC
aXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zbWF4X2JpdHJh
dGUpOwogfQogCi1ERUZJTkVfaW50KHNudW1fdGVtcG9yYWxfbGF5ZXJzLAotICAgICAgICAgICAy
LAotICAgICAgICAgICAiTnVtYmVyIG9mIHRlbXBvcmFsIGxheWVycyB0byB1c2UgaW4gc2NyZWVu
c2hhcmUuIik7CitXRUJSVENfREVGSU5FX2ludChzbnVtX3RlbXBvcmFsX2xheWVycywKKyAgICAg
ICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAiTnVtYmVyIG9mIHRlbXBvcmFsIGxh
eWVycyB0byB1c2UgaW4gc2NyZWVuc2hhcmUuIik7CiBpbnQgU2NyZWVuc2hhcmVOdW1UZW1wb3Jh
bExheWVycygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zbnVtX3RlbXBvcmFs
X2xheWVycyk7CiB9CiAKLURFRklORV9pbnQoc251bV9zdHJlYW1zLAotICAgICAgICAgICAwLAot
ICAgICAgICAgICAiTnVtYmVyIG9mIHNjcmVlbnNoYXJlIHN0cmVhbXMgdG8gc2hvdyBvciBhbmFs
eXplLiIpOworV0VCUlRDX0RFRklORV9pbnQoc251bV9zdHJlYW1zLAorICAgICAgICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgICAgICAgICJOdW1iZXIgb2Ygc2NyZWVuc2hhcmUgc3RyZWFtcyB0
byBzaG93IG9yIGFuYWx5emUuIik7CiBpbnQgU2NyZWVuc2hhcmVOdW1TdHJlYW1zKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NudW1fc3RyZWFtcyk7CiB9CiAKLURFRklORV9p
bnQoc251bV9zcGF0aWFsX2xheWVycywKLSAgICAgICAgICAgMSwKLSAgICAgICAgICAgIk51bWJl
ciBvZiBzY3JlZW5zaGFyZSBzcGF0aWFsIGxheWVycyB0byB1c2UuIik7CitXRUJSVENfREVGSU5F
X2ludChzbnVtX3NwYXRpYWxfbGF5ZXJzLAorICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAg
ICAgICAgICAgICJOdW1iZXIgb2Ygc2NyZWVuc2hhcmUgc3BhdGlhbCBsYXllcnMgdG8gdXNlLiIp
OwogaW50IFNjcmVlbnNoYXJlTnVtU3BhdGlhbExheWVycygpIHsKICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oRkxBR19zbnVtX3NwYXRpYWxfbGF5ZXJzKTsKIH0KIAotREVGSU5FX2ludChzaW50
ZXJfbGF5ZXJfcHJlZCwKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIlNjcmVlbnNoYXJlIGlu
dGVyLWxheWVyIHByZWRpY3Rpb24gbW9kZS4gIgotICAgICAgICAgICAiMCAtIGVuYWJsZWQsIDEg
LSBkaXNhYmxlZCwgMiAtIGVuYWJsZWQgb25seSBmb3Iga2V5IHBpY3R1cmVzLiIpOworV0VCUlRD
X0RFRklORV9pbnQoCisgICAgc2ludGVyX2xheWVyX3ByZWQsCisgICAgMCwKKyAgICAiU2NyZWVu
c2hhcmUgaW50ZXItbGF5ZXIgcHJlZGljdGlvbiBtb2RlLiAiCisgICAgIjAgLSBlbmFibGVkLCAx
IC0gZGlzYWJsZWQsIDIgLSBlbmFibGVkIG9ubHkgZm9yIGtleSBwaWN0dXJlcy4iKTsKIEludGVy
TGF5ZXJQcmVkTW9kZSBTY3JlZW5zaGFyZUludGVyTGF5ZXJQcmVkKCkgewogICByZXR1cm4gSW50
VG9JbnRlckxheWVyUHJlZE1vZGUoRkxBR19zaW50ZXJfbGF5ZXJfcHJlZCk7CiB9CiAKLURFRklO
RV9zdHJpbmcoCitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICBzc3RyZWFtMCwKICAgICAiIiwK
ICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZvciBz
Y3JlZW5zaGFyZSBzdHJlYW0gIzAuIik7CkBAIC0yMzEsNyArMjQzLDcgQEAgc3RkOjpzdHJpbmcg
U2NyZWVuc2hhcmVTdHJlYW0wKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+
KEZMQUdfc3N0cmVhbTApOwogfQogCi1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9zdHJp
bmcoCiAgICAgc3N0cmVhbTEsCiAgICAgIiIsCiAgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMg
ZGVzY3JpYmluZyBWaWRlb1N0cmVhbSBmb3Igc2NyZWVuc2hhcmUgc3RyZWFtICMxLiIpOwpAQCAt
MjM5LDcgKzI1MSw3IEBAIHN0ZDo6c3RyaW5nIFNjcmVlbnNoYXJlU3RyZWFtMSgpIHsKICAgcmV0
dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3NzdHJlYW0xKTsKIH0KIAotREVGSU5F
X3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIHNzbDAsCiAgICAgIiIsCiAgICAg
IkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIHNjcmVl
bnNoYXJlIGxheWVyICMwLiIpOwpAQCAtMjQ3LDcgKzI1OSw3IEBAIHN0ZDo6c3RyaW5nIFNjcmVl
bnNoYXJlU0wwKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc3Ns
MCk7CiB9CiAKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICBzc2wx
LAogICAgICIiLAogICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgU3BhdGlh
bExheWVyIGZvciBzY3JlZW5zaGFyZSBsYXllciAjMS4iKTsKQEAgLTI1NSwzMSArMjY3LDMzIEBA
IHN0ZDo6c3RyaW5nIFNjcmVlbnNoYXJlU0wxKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3Rk
OjpzdHJpbmc+KEZMQUdfc3NsMSk7CiB9CiAKLURFRklORV9pbnQoc3NlbGVjdGVkX3RsLAotICAg
ICAgICAgICAtMSwKLSAgICAgICAgICAgIlRlbXBvcmFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6
ZSBmb3Igc2NyZWVuc2hhcmUuIC0xIHRvIGRpc2FibGUgIgotICAgICAgICAgICAiZmlsdGVyaW5n
LiIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgc3NlbGVjdGVkX3RsLAorICAgIC0xLAorICAg
ICJUZW1wb3JhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNoYXJlLiAtMSB0
byBkaXNhYmxlICIKKyAgICAiZmlsdGVyaW5nLiIpOwogaW50IFNjcmVlbnNoYXJlU2VsZWN0ZWRU
TCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zc2VsZWN0ZWRfdGwpOwogfQog
Ci1ERUZJTkVfaW50KHNzZWxlY3RlZF9zdHJlYW0sCi0gICAgICAgICAgIDAsCi0gICAgICAgICAg
ICJJRCBvZiB0aGUgc3RyZWFtIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUuIgot
ICAgICAgICAgICAiU2V0IHRvIHRoZSBudW1iZXIgb2Ygc3RyZWFtcyB0byBzaG93IHRoZW0gYWxs
LiIpOworV0VCUlRDX0RFRklORV9pbnQoc3NlbGVjdGVkX3N0cmVhbSwKKyAgICAgICAgICAgICAg
ICAgIDAsCisgICAgICAgICAgICAgICAgICAiSUQgb2YgdGhlIHN0cmVhbSB0byBzaG93IG9yIGFu
YWx5emUgZm9yIHNjcmVlbnNoYXJlLiIKKyAgICAgICAgICAgICAgICAgICJTZXQgdG8gdGhlIG51
bWJlciBvZiBzdHJlYW1zIHRvIHNob3cgdGhlbSBhbGwuIik7CiBpbnQgU2NyZWVuc2hhcmVTZWxl
Y3RlZFN0cmVhbSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zc2VsZWN0ZWRf
c3RyZWFtKTsKIH0KIAotREVGSU5FX2ludChzc2VsZWN0ZWRfc2wsCi0gICAgICAgICAgIC0xLAot
ICAgICAgICAgICAiU3BhdGlhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNo
YXJlLiAtMSB0byBkaXNhYmxlICIKLSAgICAgICAgICAgImZpbHRlcmluZy4iKTsKK1dFQlJUQ19E
RUZJTkVfaW50KAorICAgIHNzZWxlY3RlZF9zbCwKKyAgICAtMSwKKyAgICAiU3BhdGlhbCBsYXll
ciB0byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNoYXJlLiAtMSB0byBkaXNhYmxlICIKKyAg
ICAiZmlsdGVyaW5nLiIpOwogaW50IFNjcmVlbnNoYXJlU2VsZWN0ZWRTTCgpIHsKICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oRkxBR19zc2VsZWN0ZWRfc2wpOwogfQogCi1ERUZJTkVfYm9vbCgK
K1dFQlJUQ19ERUZJTkVfYm9vbCgKICAgICBnZW5lcmF0ZV9zbGlkZXMsCiAgICAgZmFsc2UsCiAg
ICAgIldoZXRoZXIgdG8gdXNlIHJhbmRvbWx5IGdlbmVyYXRlZCBzbGlkZXMgb3IgcmVhZCB0aGVt
IGZyb20gZmlsZXMuIik7CkBAIC0yODcsMTQgKzMwMSwxNCBAQCBib29sIEdlbmVyYXRlU2xpZGVz
KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2dlbmVyYXRlX3NsaWRlcyk7CiB9
CiAKLURFRklORV9pbnQoc2xpZGVfY2hhbmdlX2ludGVydmFsLAotICAgICAgICAgICAxMCwKLSAg
ICAgICAgICAgIkludGVydmFsIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHNpbXVsYXRlZCBzbGlkZSBj
aGFuZ2VzLiIpOworV0VCUlRDX0RFRklORV9pbnQoc2xpZGVfY2hhbmdlX2ludGVydmFsLAorICAg
ICAgICAgICAgICAgICAgMTAsCisgICAgICAgICAgICAgICAgICAiSW50ZXJ2YWwgKGluIHNlY29u
ZHMpIGJldHdlZW4gc2ltdWxhdGVkIHNsaWRlIGNoYW5nZXMuIik7CiBpbnQgU2xpZGVDaGFuZ2VJ
bnRlcnZhbCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zbGlkZV9jaGFuZ2Vf
aW50ZXJ2YWwpOwogfQogCi1ERUZJTkVfaW50KAorV0VCUlRDX0RFRklORV9pbnQoCiAgICAgc2Ny
b2xsX2R1cmF0aW9uLAogICAgIDAsCiAgICAgIkR1cmF0aW9uIChpbiBzZWNvbmRzKSBkdXJpbmcg
d2hpY2ggYSBzbGlkZSB3aWxsIGJlIHNjcm9sbGVkIGludG8gcGxhY2UuIik7CkBAIC0zMDIsOSAr
MzE2LDEwIEBAIGludCBTY3JvbGxEdXJhdGlvbigpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oRkxBR19zY3JvbGxfZHVyYXRpb24pOwogfQogCi1ERUZJTkVfc3RyaW5nKHNsaWRlcywKLSAg
ICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAq
Lnl1diBmaWxlcyB0byBkaXNwbGF5IGFzIHNsaWRlcy4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KAorICAgIHNsaWRlcywKKyAgICAiIiwKKyAgICAiQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgKi55
dXYgZmlsZXMgdG8gZGlzcGxheSBhcyBzbGlkZXMuIik7CiBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gU2xpZGVzKCkgewogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gc2xpZGVzOwogICBzdGQ6
OnN0cmluZyBzbGlkZXNfbGlzdCA9IEZMQUdfc2xpZGVzOwpAQCAtMzEzLDMxICszMjgsMzEgQEAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IFNsaWRlcygpIHsKIH0KIAogLy8gRmxhZ3MgY29tbW9u
IHdpdGggc2NyZWVuc2hhcmUgYW5kIHZpZGVvIGxvb3BiYWNrLCB3aXRoIGVxdWFsIGRlZmF1bHQg
dmFsdWVzLgotREVGSU5FX2ludChzdGFydF9iaXRyYXRlLCA2MDAsICJDYWxsIHN0YXJ0IGJpdHJh
dGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHN0YXJ0X2JpdHJhdGUsIDYwMCwgIkNh
bGwgc3RhcnQgYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IFN0YXJ0Qml0cmF0ZUticHMoKSB7CiAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc3RhcnRfYml0cmF0ZSk7CiB9CiAKLURFRklO
RV9zdHJpbmcoY29kZWMsICJWUDgiLCAiVmlkZW8gY29kZWMgdG8gdXNlLiIpOworV0VCUlRDX0RF
RklORV9zdHJpbmcoY29kZWMsICJWUDgiLCAiVmlkZW8gY29kZWMgdG8gdXNlLiIpOwogc3RkOjpz
dHJpbmcgQ29kZWMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19j
b2RlYyk7CiB9CiAKLURFRklORV9ib29sKGFuYWx5emVfdmlkZW8sCi0gICAgICAgICAgICBmYWxz
ZSwKLSAgICAgICAgICAgICJBbmFseXplIHZpZGVvIHN0cmVhbSAoaWYgLS1kdXJhdGlvbiBpcyBw
cmVzZW50KSIpOworV0VCUlRDX0RFRklORV9ib29sKGFuYWx5emVfdmlkZW8sCisgICAgICAgICAg
ICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIkFuYWx5emUgdmlkZW8gc3RyZWFt
IChpZiAtLWR1cmF0aW9uIGlzIHByZXNlbnQpIik7CiBib29sIEFuYWx5emVWaWRlbygpIHsKICAg
cmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KEZMQUdfYW5hbHl6ZV92aWRlbyk7CiB9CiAKLURFRklO
RV9ib29sKGFuYWx5emVfc2NyZWVuc2hhcmUsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAg
ICAgICJBbmFseXplIHNjcmVlbnNoYXJlIHN0cmVhbSAoaWYgLS1kdXJhdGlvbiBpcyBwcmVzZW50
KSIpOworV0VCUlRDX0RFRklORV9ib29sKGFuYWx5emVfc2NyZWVuc2hhcmUsCisgICAgICAgICAg
ICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIkFuYWx5emUgc2NyZWVuc2hhcmUg
c3RyZWFtIChpZiAtLWR1cmF0aW9uIGlzIHByZXNlbnQpIik7CiBib29sIEFuYWx5emVTY3JlZW5z
aGFyZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KEZMQUdfYW5hbHl6ZV9zY3JlZW5z
aGFyZSk7CiB9CiAKLURFRklORV9pbnQoCitXRUJSVENfREVGSU5FX2ludCgKICAgICBkdXJhdGlv
biwKICAgICAwLAogICAgICJEdXJhdGlvbiBvZiB0aGUgdGVzdCBpbiBzZWNvbmRzLiBJZiAwLCBy
ZW5kZXJlZCB3aWxsIGJlIHNob3duIGluc3RlYWQuIik7CkBAIC0zNDUsMTAwICszNjAsMTEzIEBA
IGludCBEdXJhdGlvblNlY3MoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfZHVy
YXRpb24pOwogfQogCi1ERUZJTkVfc3RyaW5nKG91dHB1dF9maWxlbmFtZSwgIiIsICJUYXJnZXQg
Z3JhcGggZGF0YSBmaWxlbmFtZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKG91dHB1dF9maWxl
bmFtZSwgIiIsICJUYXJnZXQgZ3JhcGggZGF0YSBmaWxlbmFtZS4iKTsKIHN0ZDo6c3RyaW5nIE91
dHB1dEZpbGVuYW1lKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdf
b3V0cHV0X2ZpbGVuYW1lKTsKIH0KIAotREVGSU5FX3N0cmluZyhncmFwaF90aXRsZSwKLSAgICAg
ICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJJZiBlbXB0eSwgdGl0bGUgd2lsbCBiZSBnZW5l
cmF0ZWQgYXV0b21hdGljYWxseS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGdyYXBoX3RpdGxl
LAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiSWYgZW1w
dHksIHRpdGxlIHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuIik7CiBzdGQ6OnN0cmlu
ZyBHcmFwaFRpdGxlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdf
Z3JhcGhfdGl0bGUpOwogfQogCi1ERUZJTkVfaW50KGxvc3NfcGVyY2VudCwgMCwgIlBlcmNlbnRh
Z2Ugb2YgcGFja2V0cyByYW5kb21seSBsb3N0LiIpOworV0VCUlRDX0RFRklORV9pbnQobG9zc19w
ZXJjZW50LCAwLCAiUGVyY2VudGFnZSBvZiBwYWNrZXRzIHJhbmRvbWx5IGxvc3QuIik7CiBpbnQg
TG9zc1BlcmNlbnQoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbG9zc19wZXJj
ZW50KTsKIH0KIAotREVGSU5FX2ludChhdmdfYnVyc3RfbG9zc19sZW5ndGgsIC0xLCAiQXZlcmFn
ZSBidXJzdCBsZW5ndGggb2YgbG9zdCBwYWNrZXRzLiIpOworV0VCUlRDX0RFRklORV9pbnQoYXZn
X2J1cnN0X2xvc3NfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAg
ICAgICAiQXZlcmFnZSBidXJzdCBsZW5ndGggb2YgbG9zdCBwYWNrZXRzLiIpOwogaW50IEF2Z0J1
cnN0TG9zc0xlbmd0aCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19hdmdfYnVy
c3RfbG9zc19sZW5ndGgpOwogfQogCi1ERUZJTkVfaW50KGxpbmtfY2FwYWNpdHksCi0gICAgICAg
ICAgIDAsCi0gICAgICAgICAgICJDYXBhY2l0eSAoa2Jwcykgb2YgdGhlIGZha2UgbGluay4gMCBt
ZWFucyBpbmZpbml0ZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGxpbmtfY2FwYWNpdHksCisgICAg
ICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIkNhcGFjaXR5IChrYnBzKSBvZiB0
aGUgZmFrZSBsaW5rLiAwIG1lYW5zIGluZmluaXRlLiIpOwogaW50IExpbmtDYXBhY2l0eUticHMo
KSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbGlua19jYXBhY2l0eSk7CiB9CiAK
LURFRklORV9pbnQocXVldWVfc2l6ZSwgMCwgIlNpemUgb2YgdGhlIGJvdHRsZW5lY2sgbGluayBx
dWV1ZSBpbiBwYWNrZXRzLiIpOworV0VCUlRDX0RFRklORV9pbnQocXVldWVfc2l6ZSwKKyAgICAg
ICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiU2l6ZSBvZiB0aGUgYm90dGxlbmVj
ayBsaW5rIHF1ZXVlIGluIHBhY2tldHMuIik7CiBpbnQgUXVldWVTaXplKCkgewogICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihGTEFHX3F1ZXVlX3NpemUpOwogfQogCi1ERUZJTkVfaW50KGF2Z19w
cm9wYWdhdGlvbl9kZWxheV9tcywKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkF2ZXJhZ2Ug
bGluayBwcm9wYWdhdGlvbiBkZWxheSBpbiBtcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGF2Z19w
cm9wYWdhdGlvbl9kZWxheV9tcywKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAg
ICAgICAiQXZlcmFnZSBsaW5rIHByb3BhZ2F0aW9uIGRlbGF5IGluIG1zLiIpOwogaW50IEF2Z1By
b3BhZ2F0aW9uRGVsYXlNcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19hdmdf
cHJvcGFnYXRpb25fZGVsYXlfbXMpOwogfQogCi1ERUZJTkVfc3RyaW5nKHJ0Y19ldmVudF9sb2df
bmFtZSwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJGaWxlbmFtZSBmb3IgcnRj
IGV2ZW50IGxvZy4gVHdvIGZpbGVzICIKLSAgICAgICAgICAgICAgIndpdGggXCJfc2VuZFwiIGFu
ZCBcIl9yZWN2XCIgc3VmZml4ZXMgd2lsbCBiZSBjcmVhdGVkLiAiCi0gICAgICAgICAgICAgICJX
b3JrcyBvbmx5IHdoZW4gLS1kdXJhdGlvbiBpcyBzZXQuIik7CitXRUJSVENfREVGSU5FX3N0cmlu
ZyhydGNfZXZlbnRfbG9nX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAg
ICAgICAgICAgICAgICJGaWxlbmFtZSBmb3IgcnRjIGV2ZW50IGxvZy4gVHdvIGZpbGVzICIKKyAg
ICAgICAgICAgICAgICAgICAgICJ3aXRoIFwiX3NlbmRcIiBhbmQgXCJfcmVjdlwiIHN1ZmZpeGVz
IHdpbGwgYmUgY3JlYXRlZC4gIgorICAgICAgICAgICAgICAgICAgICAgIldvcmtzIG9ubHkgd2hl
biAtLWR1cmF0aW9uIGlzIHNldC4iKTsKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nTmFtZSgpIHsK
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3J0Y19ldmVudF9sb2dfbmFt
ZSk7CiB9CiAKLURFRklORV9zdHJpbmcocnRwX2R1bXBfbmFtZSwgIiIsICJGaWxlbmFtZSBmb3Ig
ZHVtcGVkIHJlY2VpdmVkIFJUUCBzdHJlYW0uIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhydHBf
ZHVtcF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAg
ICAiRmlsZW5hbWUgZm9yIGR1bXBlZCByZWNlaXZlZCBSVFAgc3RyZWFtLiIpOwogc3RkOjpzdHJp
bmcgUnRwRHVtcE5hbWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxB
R19ydHBfZHVtcF9uYW1lKTsKIH0KIAotREVGSU5FX2ludChzdGRfcHJvcGFnYXRpb25fZGVsYXlf
bXMsCi0gICAgICAgICAgIDAsCi0gICAgICAgICAgICJMaW5rIHByb3BhZ2F0aW9uIGRlbGF5IHN0
YW5kYXJkIGRldmlhdGlvbiBpbiBtcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHN0ZF9wcm9wYWdh
dGlvbl9kZWxheV9tcywKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAi
TGluayBwcm9wYWdhdGlvbiBkZWxheSBzdGFuZGFyZCBkZXZpYXRpb24gaW4gbXMuIik7CiBpbnQg
U3RkUHJvcGFnYXRpb25EZWxheU1zKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFH
X3N0ZF9wcm9wYWdhdGlvbl9kZWxheV9tcyk7CiB9CiAKLURFRklORV9zdHJpbmcoZW5jb2RlZF9m
cmFtZV9wYXRoLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIlRoZSBiYXNlIHBh
dGggZm9yIGVuY29kZWQgZnJhbWUgbG9ncy4gQ3JlYXRlZCBmaWxlcyB3aWxsIGhhdmUgIgotICAg
ICAgICAgICAgICAidGhlIGZvcm0gPGVuY29kZWRfZnJhbWVfcGF0aD4uPG4+LihyZWN2fHNlbmQu
PG0+KS5pdmYiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIGVuY29kZWRfZnJhbWVfcGF0
aCwKKyAgICAiIiwKKyAgICAiVGhlIGJhc2UgcGF0aCBmb3IgZW5jb2RlZCBmcmFtZSBsb2dzLiBD
cmVhdGVkIGZpbGVzIHdpbGwgaGF2ZSAiCisgICAgInRoZSBmb3JtIDxlbmNvZGVkX2ZyYW1lX3Bh
dGg+LjxuPi4ocmVjdnxzZW5kLjxtPikuaXZmIik7CiBzdGQ6OnN0cmluZyBFbmNvZGVkRnJhbWVQ
YXRoKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfZW5jb2RlZF9m
cmFtZV9wYXRoKTsKIH0KIAotREVGSU5FX2Jvb2wobG9ncywgZmFsc2UsICJwcmludCBsb2dzIHRv
IHN0ZGVyciIpOworV0VCUlRDX0RFRklORV9ib29sKGxvZ3MsIGZhbHNlLCAicHJpbnQgbG9ncyB0
byBzdGRlcnIiKTsKIAotREVGSU5FX2Jvb2woc2VuZF9zaWRlX2J3ZSwgdHJ1ZSwgIlVzZSBzZW5k
LXNpZGUgYmFuZHdpZHRoIGVzdGltYXRpb24iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChzZW5kX3Np
ZGVfYndlLCB0cnVlLCAiVXNlIHNlbmQtc2lkZSBiYW5kd2lkdGggZXN0aW1hdGlvbiIpOwogCi1E
RUZJTkVfYm9vbChnZW5lcmljX2Rlc2NyaXB0b3IsIGZhbHNlLCAiVXNlIHRoZSBnZW5lcmljIGZy
YW1lIGRlc2NyaXB0b3IuIik7CitXRUJSVENfREVGSU5FX2Jvb2woZ2VuZXJpY19kZXNjcmlwdG9y
LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJVc2UgdGhl
IGdlbmVyaWMgZnJhbWUgZGVzY3JpcHRvci4iKTsKIAotREVGSU5FX2Jvb2woYWxsb3dfcmVvcmRl
cmluZywgZmFsc2UsICJBbGxvdyBwYWNrZXQgcmVvcmRlcmluZyB0byBvY2N1ciIpOworV0VCUlRD
X0RFRklORV9ib29sKGFsbG93X3Jlb3JkZXJpbmcsIGZhbHNlLCAiQWxsb3cgcGFja2V0IHJlb3Jk
ZXJpbmcgdG8gb2NjdXIiKTsKIAotREVGSU5FX2Jvb2wodXNlX3VscGZlYywgZmFsc2UsICJVc2Ug
UkVEK1VMUEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24uIik7CitXRUJSVENfREVGSU5FX2Jv
b2wodXNlX3VscGZlYywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAiVXNlIFJFRCtVTFBGRUMgZm9yd2FyZCBlcnJvciBjb3JyZWN0aW9uLiIpOwogCi1ERUZJ
TkVfYm9vbCh1c2VfZmxleGZlYywgZmFsc2UsICJVc2UgRmxleEZFQyBmb3J3YXJkIGVycm9yIGNv
cnJlY3Rpb24uIik7CitXRUJSVENfREVGSU5FX2Jvb2wodXNlX2ZsZXhmZWMsIGZhbHNlLCAiVXNl
IEZsZXhGRUMgZm9yd2FyZCBlcnJvciBjb3JyZWN0aW9uLiIpOwogCi1ERUZJTkVfYm9vbChhdWRp
bywgZmFsc2UsICJBZGQgYXVkaW8gc3RyZWFtIik7CitXRUJSVENfREVGSU5FX2Jvb2woYXVkaW8s
IGZhbHNlLCAiQWRkIGF1ZGlvIHN0cmVhbSIpOwogCi1ERUZJTkVfYm9vbChhdWRpb192aWRlb19z
eW5jLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiU3luYyBhdWRpbyBhbmQgdmlk
ZW8gc3RyZWFtIChubyBlZmZlY3QgaWYiCi0gICAgICAgICAgICAiIGF1ZGlvIGlzIGZhbHNlKSIp
OworV0VCUlRDX0RFRklORV9ib29sKGF1ZGlvX3ZpZGVvX3N5bmMsCisgICAgICAgICAgICAgICAg
ICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlN5bmMgYXVkaW8gYW5kIHZpZGVvIHN0cmVh
bSAobm8gZWZmZWN0IGlmIgorICAgICAgICAgICAgICAgICAgICIgYXVkaW8gaXMgZmFsc2UpIik7
CiAKLURFRklORV9ib29sKGF1ZGlvX2R0eCwgZmFsc2UsICJFbmFibGUgYXVkaW8gRFRYIChubyBl
ZmZlY3QgaWYgYXVkaW8gaXMgZmFsc2UpIik7CitXRUJSVENfREVGSU5FX2Jvb2woYXVkaW9fZHR4
LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJFbmFibGUg
YXVkaW8gRFRYIChubyBlZmZlY3QgaWYgYXVkaW8gaXMgZmFsc2UpIik7CiAKLURFRklORV9ib29s
KHZpZGVvLCB0cnVlLCAiQWRkIHZpZGVvIHN0cmVhbSIpOworV0VCUlRDX0RFRklORV9ib29sKHZp
ZGVvLCB0cnVlLCAiQWRkIHZpZGVvIHN0cmVhbSIpOwogCi1ERUZJTkVfc3RyaW5nKAorV0VCUlRD
X0RFRklORV9zdHJpbmcoCiAgICAgZm9yY2VfZmllbGR0cmlhbHMsCiAgICAgIiIsCiAgICAgIkZp
ZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJl
IGZvcmNlZC4gIgpAQCAtNDQ3LDE1ICs0NzUsMTYgQEAgREVGSU5FX3N0cmluZygKICAgICAidHJp
YWxzIGFyZSBzZXBhcmF0ZWQgYnkgXCIvXCIiKTsKIAogLy8gVmlkZW8tc3BlY2lmaWMgZmxhZ3Mu
Ci1ERUZJTkVfc3RyaW5nKHZjbGlwLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAg
Ik5hbWUgb2YgdGhlIGNsaXAgdG8gc2hvdy4gSWYgZW1wdHksIHRoZSBjYW1lcmEgaXMgdXNlZC4g
VXNlICIKLSAgICAgICAgICAgICAgIlwiR2VuZXJhdG9yXCIgZm9yIGNocm9tYSBnZW5lcmF0b3Iu
Iik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICB2Y2xpcCwKKyAgICAiIiwKKyAgICAiTmFt
ZSBvZiB0aGUgY2xpcCB0byBzaG93LiBJZiBlbXB0eSwgdGhlIGNhbWVyYSBpcyB1c2VkLiBVc2Ug
IgorICAgICJcIkdlbmVyYXRvclwiIGZvciBjaHJvbWEgZ2VuZXJhdG9yLiIpOwogc3RkOjpzdHJp
bmcgVmlkZW9DbGlwKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdf
dmNsaXApOwogfQogCi1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3Nh
Z2UiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3Nh
Z2UiKTsKIAogfSAgLy8gbmFtZXNwYWNlIGZsYWdzCiAKQEAgLTQ3NSw3ICs1MDQsNyBAQCB2b2lk
IExvb3BiYWNrKCkgewogICAgIHNjcmVlbnNoYXJlX2lkeCA9IDA7CiAgIH0KIAotICBEZWZhdWx0
TmV0d29ya1NpbXVsYXRpb25Db25maWcgcGlwZV9jb25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVo
YXZpb3JDb25maWcgcGlwZV9jb25maWc7CiAgIHBpcGVfY29uZmlnLmxvc3NfcGVyY2VudCA9IGZs
YWdzOjpMb3NzUGVyY2VudCgpOwogICBwaXBlX2NvbmZpZy5hdmdfYnVyc3RfbG9zc19sZW5ndGgg
PSBmbGFnczo6QXZnQnVyc3RMb3NzTGVuZ3RoKCk7CiAgIHBpcGVfY29uZmlnLmxpbmtfY2FwYWNp
dHlfa2JwcyA9IGZsYWdzOjpMaW5rQ2FwYWNpdHlLYnBzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby90cmFuc3BvcnRfYWRhcHRl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdHJh
bnNwb3J0X2FkYXB0ZXIuaAppbmRleCA4ZWM1M2ZkZjI1YTkxNmM3MTAyOWM3ZGVhZTI0YjU4ODdm
ZTI3MmFmLi43ODY4NThiMGUyMWM3NDEwMzQxMGVjNGZlYjJkNDRlYzQ4OTlhZTlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby90cmFu
c3BvcnRfYWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL3RyYW5zcG9ydF9hZGFwdGVyLmgKQEAgLTEzLDcgKzEzLDYgQEAKICNpbmNs
dWRlIDxhdG9taWM+CiAKICNpbmNsdWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKLSNpbmNsdWRl
ICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19hbmFseXplci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX2FuYWx5
emVyLmNjCmluZGV4IDA1YWJlMWZjZjNiMjQwYjIyOWUyM2QyZGQwMjEzNzQxMWFlMmQ4MzEuLjFm
ZDIyZmY4MDYwYjA5NGE1ZGQ4NTQxYjg5ZDRiNWI0ZThjMmU2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX2FuYWx5emVy
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L3ZpZGVvX2FuYWx5emVyLmNjCkBAIC0xOCwxNyArMTgsMTggQEAKICNpbmNsdWRlICJydGNfYmFz
ZS9mbGFncy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9tZW1vcnlfdXNhZ2UuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9wYXRodXRpbHMu
aCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jcHVfaW5mby5oIgogI2luY2x1
ZGUgInRlc3QvY2FsbF90ZXN0LmgiCisjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRp
bHMuaCIKICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZyYW1lX3dyaXRlci5oIgogI2luY2x1
ZGUgInRlc3QvdGVzdHN1cHBvcnQvcGVyZl90ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3Vw
cG9ydC90ZXN0X2FydGlmYWN0cy5oIgogCi1ERUZJTkVfYm9vbChzYXZlX3dvcnN0X2ZyYW1lLAot
ICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiRW5hYmxlIHNhdmluZyBhIGZyYW1lIHdp
dGggdGhlIGxvd2VzdCBQU05SIHRvIGEganBlZyBmaWxlIGluIHRoZSAiCi0gICAgICAgICAgICAi
dGVzdF9hcnRpZmFjdHNfZGlyIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgc2F2ZV93b3Jz
dF9mcmFtZSwKKyAgICBmYWxzZSwKKyAgICAiRW5hYmxlIHNhdmluZyBhIGZyYW1lIHdpdGggdGhl
IGxvd2VzdCBQU05SIHRvIGEganBlZyBmaWxlIGluIHRoZSAiCisgICAgInRlc3RfYXJ0aWZhY3Rz
X2RpciIpOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CkBAIC03MCw3ICs3MSw2
IEBAIFZpZGVvQW5hbHl6ZXI6OlZpZGVvQW5hbHl6ZXIodGVzdDo6TGF5ZXJGaWx0ZXJpbmdUcmFu
c3BvcnQqIHRyYW5zcG9ydCwKICAgICAgIHNlbGVjdGVkX3N0cmVhbV8oc2VsZWN0ZWRfc3RyZWFt
KSwKICAgICAgIHNlbGVjdGVkX3NsXyhzZWxlY3RlZF9zbCksCiAgICAgICBzZWxlY3RlZF90bF8o
c2VsZWN0ZWRfdGwpLAotICAgICAgcHJlX2VuY29kZV9wcm94eV8odGhpcyksCiAgICAgICBsYXN0
X2ZlY19ieXRlc18oMCksCiAgICAgICBmcmFtZXNfdG9fcHJvY2Vzc18oZHVyYXRpb25fZnJhbWVz
KSwKICAgICAgIGZyYW1lc19yZWNvcmRlZF8oMCksCkBAIC05MSw3ICs5MSw2IEBAIFZpZGVvQW5h
bHl6ZXI6OlZpZGVvQW5hbHl6ZXIodGVzdDo6TGF5ZXJGaWx0ZXJpbmdUcmFuc3BvcnQqIHRyYW5z
cG9ydCwKICAgICAgIGF2Z19zc2ltX3RocmVzaG9sZF8oYXZnX3NzaW1fdGhyZXNob2xkKSwKICAg
ICAgIGlzX3F1aWNrX3Rlc3RfZW5hYmxlZF8oaXNfcXVpY2tfdGVzdF9lbmFibGVkKSwKICAgICAg
IHN0YXRzX3BvbGxpbmdfdGhyZWFkXygmUG9sbFN0YXRzVGhyZWFkLCB0aGlzLCAiU3RhdHNQb2xs
ZXIiKSwKLSAgICAgIGNvbXBhcmlzb25fYXZhaWxhYmxlX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAog
ICAgICAgZG9uZV8odHJ1ZSwgZmFsc2UpLAogICAgICAgY2xvY2tfKGNsb2NrKSwKICAgICAgIHN0
YXJ0X21zXyhjbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpIHsKQEAgLTIzMSwxMCArMjMwLDEw
IEBAIHZvaWQgVmlkZW9BbmFseXplcjo6UHJlRW5jb2RlT25GcmFtZShjb25zdCBWaWRlb0ZyYW1l
JiB2aWRlb19mcmFtZSkgewogICB9CiB9CiAKLXZvaWQgVmlkZW9BbmFseXplcjo6RW5jb2RlZEZy
YW1lQ2FsbGJhY2soY29uc3QgRW5jb2RlZEZyYW1lJiBlbmNvZGVkX2ZyYW1lKSB7Cit2b2lkIFZp
ZGVvQW5hbHl6ZXI6OlBvc3RFbmNvZGVPbkZyYW1lKHNpemVfdCBzdHJlYW1faWQsIHVpbnQzMl90
IHRpbWVzdGFtcCkgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7Ci0gIGlmICghZmly
c3Rfc2VudF90aW1lc3RhbXBfICYmIGVuY29kZWRfZnJhbWUuc3RyZWFtX2lkXyA9PSBzZWxlY3Rl
ZF9zdHJlYW1fKSB7Ci0gICAgZmlyc3Rfc2VudF90aW1lc3RhbXBfID0gZW5jb2RlZF9mcmFtZS50
aW1lc3RhbXBfOworICBpZiAoIWZpcnN0X3NlbnRfdGltZXN0YW1wXyAmJiBzdHJlYW1faWQgPT0g
c2VsZWN0ZWRfc3RyZWFtXykgeworICAgIGZpcnN0X3NlbnRfdGltZXN0YW1wXyA9IHRpbWVzdGFt
cDsKICAgfQogfQogCkBAIC0zNjYsMTAgKzM2NSw2IEBAIHZvaWQgVmlkZW9BbmFseXplcjo6V2Fp
dCgpIHsKICAgc3RhdHNfcG9sbGluZ190aHJlYWRfLlN0b3AoKTsKIH0KIAotcnRjOjpWaWRlb1Np
bmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4qIFZpZGVvQW5hbHl6ZXI6OnByZV9lbmNvZGVfcHJveHko
KSB7Ci0gIHJldHVybiAmcHJlX2VuY29kZV9wcm94eV87Ci19Ci0KIHZvaWQgVmlkZW9BbmFseXpl
cjo6U3RhcnRNZWFzdXJpbmdDcHVQcm9jZXNzVGltZSgpIHsKICAgcnRjOjpDcml0U2NvcGUgbG9j
aygmY3B1X21lYXN1cmVtZW50X2xvY2tfKTsKICAgY3B1X3RpbWVfIC09IHJ0Yzo6R2V0UHJvY2Vz
c0NwdVRpbWVOYW5vcygpOwpAQCAtNjExLDcgKzYwNiw3IEBAIHZvaWQgVmlkZW9BbmFseXplcjo6
UHJpbnRSZXN1bHRzKCkgewogICAgIHN0ZDo6c3RyaW5nIG91dHB1dF9kaXI7CiAgICAgdGVzdDo6
R2V0VGVzdEFydGlmYWN0c0Rpcigmb3V0cHV0X2Rpcik7CiAgICAgc3RkOjpzdHJpbmcgb3V0cHV0
X3BhdGggPQotICAgICAgICBydGM6OlBhdGhuYW1lKG91dHB1dF9kaXIsIHRlc3RfbGFiZWxfICsg
Ii5qcGciKS5wYXRobmFtZSgpOworICAgICAgICB0ZXN0OjpKb2luRmlsZW5hbWUob3V0cHV0X2Rp
ciwgdGVzdF9sYWJlbF8gKyAiLmpwZyIpOwogICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlNhdmlu
ZyB3b3JzdCBmcmFtZSB0byAiIDw8IG91dHB1dF9wYXRoOwogICAgIHRlc3Q6OkpwZWdGcmFtZVdy
aXRlciBmcmFtZV93cml0ZXIob3V0cHV0X3BhdGgpOwogICAgIFJUQ19DSEVDSygKQEAgLTg0MSwx
MyArODM2LDYgQEAgVmlkZW9BbmFseXplcjo6U2FtcGxlOjpTYW1wbGUoaW50IGRyb3BwZWQsCiAg
ICAgICBwc25yKHBzbnIpLAogICAgICAgc3NpbShzc2ltKSB7fQogCi1WaWRlb0FuYWx5emVyOjpQ
cmVFbmNvZGVQcm94eTo6UHJlRW5jb2RlUHJveHkoVmlkZW9BbmFseXplciogcGFyZW50KQotICAg
IDogcGFyZW50XyhwYXJlbnQpIHt9Ci0KLXZvaWQgVmlkZW9BbmFseXplcjo6UHJlRW5jb2RlUHJv
eHk6Ok9uRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9fZnJhbWUpIHsKLSAgcGFyZW50Xy0+
UHJlRW5jb2RlT25GcmFtZSh2aWRlb19mcmFtZSk7Ci19Ci0KIFZpZGVvQW5hbHl6ZXI6OkNhcHR1
cmVkRnJhbWVGb3J3YXJkZXI6OkNhcHR1cmVkRnJhbWVGb3J3YXJkZXIoCiAgICAgVmlkZW9BbmFs
eXplciogYW5hbHl6ZXIsCiAgICAgQ2xvY2sqIGNsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fYW5hbHl6ZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX2Fu
YWx5emVyLmgKaW5kZXggNjgxZDFmNDY0ZjQ4MWM2ZTdiYWYzZjFmZjYxZmRjYWUyZjQwZDdjZC4u
ZDJjNGZhODRjZGEzYTE1YjM3ZTYwMDc2OThiN2JjYzlmOTdmYWU3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fYW5hbHl6
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by92aWRlb19hbmFseXplci5oCkBAIC0yNSw4ICsyNSw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewog
CiBjbGFzcyBWaWRlb0FuYWx5emVyIDogcHVibGljIFBhY2tldFJlY2VpdmVyLAogICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBUcmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPFZpZGVvRnJhbWU+LAotICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBFbmNvZGVkRnJhbWVPYnNlcnZlciB7CisgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPFZpZGVvRnJhbWU+IHsKICBwdWJsaWM6
CiAgIFZpZGVvQW5hbHl6ZXIodGVzdDo6TGF5ZXJGaWx0ZXJpbmdUcmFuc3BvcnQqIHRyYW5zcG9y
dCwKICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9sYWJlbCwKQEAgLTYx
LDkgKzYwLDcgQEAgY2xhc3MgVmlkZW9BbmFseXplciA6IHB1YmxpYyBQYWNrZXRSZWNlaXZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSBv
dmVycmlkZTsKIAogICB2b2lkIFByZUVuY29kZU9uRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlk
ZW9fZnJhbWUpOwotCi0gIC8vIEVuY29kZWRGcmFtZU9ic2VydmVyIGltcGxlbWVudGF0aW9uLCB3
aXJlZCB0byBwb3N0X2VuY29kZV9jYWxsYmFjay4KLSAgdm9pZCBFbmNvZGVkRnJhbWVDYWxsYmFj
ayhjb25zdCBFbmNvZGVkRnJhbWUmIGVuY29kZWRfZnJhbWUpIG92ZXJyaWRlOworICB2b2lkIFBv
c3RFbmNvZGVPbkZyYW1lKHNpemVfdCBzdHJlYW1faWQsIHVpbnQzMl90IHRpbWVzdGFtcCk7CiAK
ICAgYm9vbCBTZW5kUnRwKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwKICAgICAgICAgICAgICAgIHNp
emVfdCBsZW5ndGgsCkBAIC03Myw4ICs3MCw2IEBAIGNsYXNzIFZpZGVvQW5hbHl6ZXIgOiBwdWJs
aWMgUGFja2V0UmVjZWl2ZXIsCiAgIHZvaWQgT25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRl
b19mcmFtZSkgb3ZlcnJpZGU7CiAgIHZvaWQgV2FpdCgpOwogCi0gIHJ0Yzo6VmlkZW9TaW5rSW50
ZXJmYWNlPFZpZGVvRnJhbWU+KiBwcmVfZW5jb2RlX3Byb3h5KCk7Ci0KICAgdm9pZCBTdGFydE1l
YXN1cmluZ0NwdVByb2Nlc3NUaW1lKCk7CiAgIHZvaWQgU3RvcE1lYXN1cmluZ0NwdVByb2Nlc3NU
aW1lKCk7CiAgIHZvaWQgU3RhcnRFeGNsdWRpbmdDcHVUaHJlYWRUaW1lKCk7CkBAIC0xMzIsMTcg
KzEyNyw2IEBAIGNsYXNzIFZpZGVvQW5hbHl6ZXIgOiBwdWJsaWMgUGFja2V0UmVjZWl2ZXIsCiAg
ICAgZG91YmxlIHNzaW07CiAgIH07CiAKLSAgLy8gVGhpcyBjbGFzcyByZWNlaXZlcyB0aGUgc2Vu
ZC1zaWRlIE9uRnJhbWUgY2FsbGJhY2sgYW5kIGlzIHByb3ZpZGVkIHRvIG5vdAotICAvLyBjb25m
bGljdCB3aXRoIHRoZSByZWNlaXZlci1zaWRlIHJlbmRlcmVyIGNhbGxiYWNrLgotICBjbGFzcyBQ
cmVFbmNvZGVQcm94eSA6IHB1YmxpYyBydGM6OlZpZGVvU2lua0ludGVyZmFjZTxWaWRlb0ZyYW1l
PiB7Ci0gICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUHJlRW5jb2RlUHJveHkoVmlkZW9BbmFseXpl
ciogcGFyZW50KTsKLSAgICB2b2lkIE9uRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9fZnJh
bWUpIG92ZXJyaWRlOwotCi0gICBwcml2YXRlOgotICAgIFZpZGVvQW5hbHl6ZXIqIGNvbnN0IHBh
cmVudF87Ci0gIH07Ci0KICAgLy8gSW1wbGVtZW50cyBWaWRlb1NpbmtJbnRlcmZhY2UgdG8gcmVj
ZWl2ZSBjYXB0dXJlZCBmcmFtZXMgZnJvbSBhCiAgIC8vIEZyYW1lR2VuZXJhdG9yQ2FwdHVyZXIu
IEltcGxlbWVudHMgVmlkZW9Tb3VyY2VJbnRlcmZhY2UgdG8gYmUgYWJsZSB0byBhY3QKICAgLy8g
YXMgYSBzb3VyY2UgdG8gVmlkZW9TZW5kU3RyZWFtLgpAQCAtMjIxLDcgKzIwNSw2IEBAIGNsYXNz
IFZpZGVvQW5hbHl6ZXIgOiBwdWJsaWMgUGFja2V0UmVjZWl2ZXIsCiAgIGNvbnN0IHNpemVfdCBz
ZWxlY3RlZF9zdHJlYW1fOwogICBjb25zdCBpbnQgc2VsZWN0ZWRfc2xfOwogICBjb25zdCBpbnQg
c2VsZWN0ZWRfdGxfOwotICBQcmVFbmNvZGVQcm94eSBwcmVfZW5jb2RlX3Byb3h5XzsKIAogICBy
dGM6OkNyaXRpY2FsU2VjdGlvbiBjb21wYXJpc29uX2xvY2tfOwogICBzdGQ6OnZlY3RvcjxTYW1w
bGU+IHNhbXBsZXNfIFJUQ19HVUFSREVEX0JZKGNvbXBhcmlzb25fbG9ja18pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9f
bG9vcGJhY2suY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92
aWRlby92aWRlb19sb29wYmFjay5jYwppbmRleCA1NzU5MGVkMTQ0OTU0NzU2ZTkwOTczNjZhN2Mw
OWE3NmViMDNjMWYxLi40Y2RkZGI5NGU1Mjg1ODUwZDkzZDkzYjA5OGVjODEzZDcyYjBlMzYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by92aWRlb19sb29wYmFjay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby92aWRlb19sb29wYmFjay5jYwpAQCAtMjIsNjEgKzIyLDYyIEBAIG5h
bWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIGZsYWdzIHsKIAogLy8gRmxhZ3MgY29tbW9uIHdp
dGggc2NyZWVuc2hhcmUgbG9vcGJhY2ssIHdpdGggZGlmZmVyZW50IGRlZmF1bHQgdmFsdWVzLgot
REVGSU5FX2ludCh3aWR0aCwgNjQwLCAiVmlkZW8gd2lkdGguIik7CitXRUJSVENfREVGSU5FX2lu
dCh3aWR0aCwgNjQwLCAiVmlkZW8gd2lkdGguIik7CiBzaXplX3QgV2lkdGgoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdfd2lkdGgpOwogfQogCi1ERUZJTkVfaW50KGhlaWdo
dCwgNDgwLCAiVmlkZW8gaGVpZ2h0LiIpOworV0VCUlRDX0RFRklORV9pbnQoaGVpZ2h0LCA0ODAs
ICJWaWRlbyBoZWlnaHQuIik7CiBzaXplX3QgSGVpZ2h0KCkgewogICByZXR1cm4gc3RhdGljX2Nh
c3Q8c2l6ZV90PihGTEFHX2hlaWdodCk7CiB9CiAKLURFRklORV9pbnQoZnBzLCAzMCwgIkZyYW1l
cyBwZXIgc2Vjb25kLiIpOworV0VCUlRDX0RFRklORV9pbnQoZnBzLCAzMCwgIkZyYW1lcyBwZXIg
c2Vjb25kLiIpOwogaW50IEZwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19m
cHMpOwogfQogCi1ERUZJTkVfaW50KGNhcHR1cmVfZGV2aWNlX2luZGV4LCAwLCAiQ2FwdHVyZSBk
ZXZpY2UgdG8gc2VsZWN0Iik7CitXRUJSVENfREVGSU5FX2ludChjYXB0dXJlX2RldmljZV9pbmRl
eCwgMCwgIkNhcHR1cmUgZGV2aWNlIHRvIHNlbGVjdCIpOwogc2l6ZV90IEdldENhcHR1cmVEZXZp
Y2UoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdfY2FwdHVyZV9kZXZpY2Vf
aW5kZXgpOwogfQogCi1ERUZJTkVfaW50KG1pbl9iaXRyYXRlLCA1MCwgIkNhbGwgYW5kIHN0cmVh
bSBtaW4gYml0cmF0ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklORV9pbnQobWluX2JpdHJhdGUs
IDUwLCAiQ2FsbCBhbmQgc3RyZWFtIG1pbiBiaXRyYXRlIGluIGticHMuIik7CiBpbnQgTWluQml0
cmF0ZUticHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbWluX2JpdHJhdGUp
OwogfQogCi1ERUZJTkVfaW50KHN0YXJ0X2JpdHJhdGUsIDMwMCwgIkNhbGwgc3RhcnQgYml0cmF0
ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklORV9pbnQoc3RhcnRfYml0cmF0ZSwgMzAwLCAiQ2Fs
bCBzdGFydCBiaXRyYXRlIGluIGticHMuIik7CiBpbnQgU3RhcnRCaXRyYXRlS2JwcygpIHsKICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zdGFydF9iaXRyYXRlKTsKIH0KIAotREVGSU5F
X2ludCh0YXJnZXRfYml0cmF0ZSwgODAwLCAiU3RyZWFtIHRhcmdldCBiaXRyYXRlIGluIGticHMu
Iik7CitXRUJSVENfREVGSU5FX2ludCh0YXJnZXRfYml0cmF0ZSwgODAwLCAiU3RyZWFtIHRhcmdl
dCBiaXRyYXRlIGluIGticHMuIik7CiBpbnQgVGFyZ2V0Qml0cmF0ZUticHMoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfdGFyZ2V0X2JpdHJhdGUpOwogfQogCi1ERUZJTkVfaW50
KG1heF9iaXRyYXRlLCA4MDAsICJDYWxsIGFuZCBzdHJlYW0gbWF4IGJpdHJhdGUgaW4ga2Jwcy4i
KTsKK1dFQlJUQ19ERUZJTkVfaW50KG1heF9iaXRyYXRlLCA4MDAsICJDYWxsIGFuZCBzdHJlYW0g
bWF4IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBNYXhCaXRyYXRlS2JwcygpIHsKICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oRkxBR19tYXhfYml0cmF0ZSk7CiB9CiAKLURFRklORV9ib29sKHN1
c3BlbmRfYmVsb3dfbWluX2JpdHJhdGUsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAg
ICJTdXNwZW5kcyB2aWRlbyBiZWxvdyB0aGUgY29uZmlndXJlZCBtaW4gYml0cmF0ZS4iKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbChzdXNwZW5kX2JlbG93X21pbl9iaXRyYXRlLAorICAgICAgICAgICAg
ICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJTdXNwZW5kcyB2aWRlbyBiZWxvdyB0
aGUgY29uZmlndXJlZCBtaW4gYml0cmF0ZS4iKTsKIAotREVGSU5FX2ludChudW1fdGVtcG9yYWxf
bGF5ZXJzLAotICAgICAgICAgICAxLAotICAgICAgICAgICAiTnVtYmVyIG9mIHRlbXBvcmFsIGxh
eWVycy4gU2V0IHRvIDEtNCB0byBvdmVycmlkZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KG51bV90
ZW1wb3JhbF9sYXllcnMsCisgICAgICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAg
Ik51bWJlciBvZiB0ZW1wb3JhbCBsYXllcnMuIFNldCB0byAxLTQgdG8gb3ZlcnJpZGUuIik7CiBp
bnQgTnVtVGVtcG9yYWxMYXllcnMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdf
bnVtX3RlbXBvcmFsX2xheWVycyk7CiB9CiAKLURFRklORV9pbnQoaW50ZXJfbGF5ZXJfcHJlZCwK
LSAgICAgICAgICAgMiwKLSAgICAgICAgICAgIkludGVyLWxheWVyIHByZWRpY3Rpb24gbW9kZS4g
IgotICAgICAgICAgICAiMCAtIGVuYWJsZWQsIDEgLSBkaXNhYmxlZCwgMiAtIGVuYWJsZWQgb25s
eSBmb3Iga2V5IHBpY3R1cmVzLiIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgaW50ZXJfbGF5
ZXJfcHJlZCwKKyAgICAyLAorICAgICJJbnRlci1sYXllciBwcmVkaWN0aW9uIG1vZGUuICIKKyAg
ICAiMCAtIGVuYWJsZWQsIDEgLSBkaXNhYmxlZCwgMiAtIGVuYWJsZWQgb25seSBmb3Iga2V5IHBp
Y3R1cmVzLiIpOwogSW50ZXJMYXllclByZWRNb2RlIEludGVyTGF5ZXJQcmVkKCkgewogICBpZiAo
RkxBR19pbnRlcl9sYXllcl9wcmVkID09IDApIHsKICAgICByZXR1cm4gSW50ZXJMYXllclByZWRN
b2RlOjprT247CkBAIC04OSwxOSArOTAsMjAgQEAgSW50ZXJMYXllclByZWRNb2RlIEludGVyTGF5
ZXJQcmVkKCkgewogfQogCiAvLyBGbGFncyBjb21tb24gd2l0aCBzY3JlZW5zaGFyZSBsb29wYmFj
aywgd2l0aCBlcXVhbCBkZWZhdWx0IHZhbHVlcy4KLURFRklORV9zdHJpbmcoY29kZWMsICJWUDgi
LCAiVmlkZW8gY29kZWMgdG8gdXNlLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoY29kZWMsICJW
UDgiLCAiVmlkZW8gY29kZWMgdG8gdXNlLiIpOwogc3RkOjpzdHJpbmcgQ29kZWMoKSB7CiAgIHJl
dHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19jb2RlYyk7CiB9CiAKLURFRklORV9p
bnQoc2VsZWN0ZWRfdGwsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiVGVtcG9yYWwgbGF5
ZXIgdG8gc2hvdyBvciBhbmFseXplLiAtMSB0byBkaXNhYmxlIGZpbHRlcmluZy4iKTsKK1dFQlJU
Q19ERUZJTkVfaW50KAorICAgIHNlbGVjdGVkX3RsLAorICAgIC0xLAorICAgICJUZW1wb3JhbCBs
YXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2FibGUgZmlsdGVyaW5nLiIpOwogaW50
IFNlbGVjdGVkVEwoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2VsZWN0ZWRf
dGwpOwogfQogCi1ERUZJTkVfaW50KAorV0VCUlRDX0RFRklORV9pbnQoCiAgICAgZHVyYXRpb24s
CiAgICAgMCwKICAgICAiRHVyYXRpb24gb2YgdGhlIHRlc3QgaW4gc2Vjb25kcy4gSWYgMCwgcmVu
ZGVyZWQgd2lsbCBiZSBzaG93biBpbnN0ZWFkLiIpOwpAQCAtMTA5LDE3NyArMTExLDE5NiBAQCBp
bnQgRHVyYXRpb25TZWNzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2R1cmF0
aW9uKTsKIH0KIAotREVGSU5FX3N0cmluZyhvdXRwdXRfZmlsZW5hbWUsICIiLCAiVGFyZ2V0IGdy
YXBoIGRhdGEgZmlsZW5hbWUuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhvdXRwdXRfZmlsZW5h
bWUsICIiLCAiVGFyZ2V0IGdyYXBoIGRhdGEgZmlsZW5hbWUuIik7CiBzdGQ6OnN0cmluZyBPdXRw
dXRGaWxlbmFtZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX291
dHB1dF9maWxlbmFtZSk7CiB9CiAKLURFRklORV9zdHJpbmcoZ3JhcGhfdGl0bGUsCi0gICAgICAg
ICAgICAgICIiLAotICAgICAgICAgICAgICAiSWYgZW1wdHksIHRpdGxlIHdpbGwgYmUgZ2VuZXJh
dGVkIGF1dG9tYXRpY2FsbHkuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhncmFwaF90aXRsZSwK
KyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIklmIGVtcHR5
LCB0aXRsZSB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LiIpOwogc3RkOjpzdHJpbmcg
R3JhcGhUaXRsZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2dy
YXBoX3RpdGxlKTsKIH0KIAotREVGSU5FX2ludChsb3NzX3BlcmNlbnQsIDAsICJQZXJjZW50YWdl
IG9mIHBhY2tldHMgcmFuZG9tbHkgbG9zdC4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGxvc3NfcGVy
Y2VudCwgMCwgIlBlcmNlbnRhZ2Ugb2YgcGFja2V0cyByYW5kb21seSBsb3N0LiIpOwogaW50IExv
c3NQZXJjZW50KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2xvc3NfcGVyY2Vu
dCk7CiB9CiAKLURFRklORV9pbnQoYXZnX2J1cnN0X2xvc3NfbGVuZ3RoLCAtMSwgIkF2ZXJhZ2Ug
YnVyc3QgbGVuZ3RoIG9mIGxvc3QgcGFja2V0cy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGF2Z19i
dXJzdF9sb3NzX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAg
ICAgIkF2ZXJhZ2UgYnVyc3QgbGVuZ3RoIG9mIGxvc3QgcGFja2V0cy4iKTsKIGludCBBdmdCdXJz
dExvc3NMZW5ndGgoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfYXZnX2J1cnN0
X2xvc3NfbGVuZ3RoKTsKIH0KIAotREVGSU5FX2ludChsaW5rX2NhcGFjaXR5LAotICAgICAgICAg
ICAwLAotICAgICAgICAgICAiQ2FwYWNpdHkgKGticHMpIG9mIHRoZSBmYWtlIGxpbmsuIDAgbWVh
bnMgaW5maW5pdGUuIik7CitXRUJSVENfREVGSU5FX2ludChsaW5rX2NhcGFjaXR5LAorICAgICAg
ICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJDYXBhY2l0eSAoa2Jwcykgb2YgdGhl
IGZha2UgbGluay4gMCBtZWFucyBpbmZpbml0ZS4iKTsKIGludCBMaW5rQ2FwYWNpdHlLYnBzKCkg
ewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2xpbmtfY2FwYWNpdHkpOwogfQogCi1E
RUZJTkVfaW50KHF1ZXVlX3NpemUsIDAsICJTaXplIG9mIHRoZSBib3R0bGVuZWNrIGxpbmsgcXVl
dWUgaW4gcGFja2V0cy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHF1ZXVlX3NpemUsCisgICAgICAg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIlNpemUgb2YgdGhlIGJvdHRsZW5lY2sg
bGluayBxdWV1ZSBpbiBwYWNrZXRzLiIpOwogaW50IFF1ZXVlU2l6ZSgpIHsKICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oRkxBR19xdWV1ZV9zaXplKTsKIH0KIAotREVGSU5FX2ludChhdmdfcHJv
cGFnYXRpb25fZGVsYXlfbXMsCi0gICAgICAgICAgIDAsCi0gICAgICAgICAgICJBdmVyYWdlIGxp
bmsgcHJvcGFnYXRpb24gZGVsYXkgaW4gbXMuIik7CitXRUJSVENfREVGSU5FX2ludChhdmdfcHJv
cGFnYXRpb25fZGVsYXlfbXMsCisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAg
ICAgIkF2ZXJhZ2UgbGluayBwcm9wYWdhdGlvbiBkZWxheSBpbiBtcy4iKTsKIGludCBBdmdQcm9w
YWdhdGlvbkRlbGF5TXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfYXZnX3By
b3BhZ2F0aW9uX2RlbGF5X21zKTsKIH0KIAotREVGSU5FX3N0cmluZyhydGNfZXZlbnRfbG9nX25h
bWUsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiRmlsZW5hbWUgZm9yIHJ0YyBl
dmVudCBsb2cuIFR3byBmaWxlcyAiCi0gICAgICAgICAgICAgICJ3aXRoIFwiX3NlbmRcIiBhbmQg
XCJfcmVjdlwiIHN1ZmZpeGVzIHdpbGwgYmUgY3JlYXRlZC4iKTsKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKHJ0Y19ldmVudF9sb2dfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAg
ICAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBydGMgZXZlbnQgbG9nLiBUd28gZmlsZXMgIgor
ICAgICAgICAgICAgICAgICAgICAgIndpdGggXCJfc2VuZFwiIGFuZCBcIl9yZWN2XCIgc3VmZml4
ZXMgd2lsbCBiZSBjcmVhdGVkLiIpOwogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dOYW1lKCkgewog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfcnRjX2V2ZW50X2xvZ19uYW1l
KTsKIH0KIAotREVGSU5FX3N0cmluZyhydHBfZHVtcF9uYW1lLCAiIiwgIkZpbGVuYW1lIGZvciBk
dW1wZWQgcmVjZWl2ZWQgUlRQIHN0cmVhbS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHJ0cF9k
dW1wX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAg
ICJGaWxlbmFtZSBmb3IgZHVtcGVkIHJlY2VpdmVkIFJUUCBzdHJlYW0uIik7CiBzdGQ6OnN0cmlu
ZyBSdHBEdW1wTmFtZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFH
X3J0cF9kdW1wX25hbWUpOwogfQogCi1ERUZJTkVfaW50KHN0ZF9wcm9wYWdhdGlvbl9kZWxheV9t
cywKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkxpbmsgcHJvcGFnYXRpb24gZGVsYXkgc3Rh
bmRhcmQgZGV2aWF0aW9uIGluIG1zLiIpOworV0VCUlRDX0RFRklORV9pbnQoc3RkX3Byb3BhZ2F0
aW9uX2RlbGF5X21zLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJM
aW5rIHByb3BhZ2F0aW9uIGRlbGF5IHN0YW5kYXJkIGRldmlhdGlvbiBpbiBtcy4iKTsKIGludCBT
dGRQcm9wYWdhdGlvbkRlbGF5TXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdf
c3RkX3Byb3BhZ2F0aW9uX2RlbGF5X21zKTsKIH0KIAotREVGSU5FX2ludChudW1fc3RyZWFtcywg
MCwgIk51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cgb3IgYW5hbHl6ZS4iKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KG51bV9zdHJlYW1zLCAwLCAiTnVtYmVyIG9mIHN0cmVhbXMgdG8gc2hvdyBvciBhbmFs
eXplLiIpOwogaW50IE51bVN0cmVhbXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZM
QUdfbnVtX3N0cmVhbXMpOwogfQogCi1ERUZJTkVfaW50KHNlbGVjdGVkX3N0cmVhbSwKLSAgICAg
ICAgICAgMCwKLSAgICAgICAgICAgIklEIG9mIHRoZSBzdHJlYW0gdG8gc2hvdyBvciBhbmFseXpl
LiAiCi0gICAgICAgICAgICJTZXQgdG8gdGhlIG51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cgdGhl
bSBhbGwuIik7CitXRUJSVENfREVGSU5FX2ludChzZWxlY3RlZF9zdHJlYW0sCisgICAgICAgICAg
ICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIklEIG9mIHRoZSBzdHJlYW0gdG8gc2hvdyBv
ciBhbmFseXplLiAiCisgICAgICAgICAgICAgICAgICAiU2V0IHRvIHRoZSBudW1iZXIgb2Ygc3Ry
ZWFtcyB0byBzaG93IHRoZW0gYWxsLiIpOwogaW50IFNlbGVjdGVkU3RyZWFtKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NlbGVjdGVkX3N0cmVhbSk7CiB9CiAKLURFRklORV9p
bnQobnVtX3NwYXRpYWxfbGF5ZXJzLCAxLCAiTnVtYmVyIG9mIHNwYXRpYWwgbGF5ZXJzIHRvIHVz
ZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KG51bV9zcGF0aWFsX2xheWVycywgMSwgIk51bWJlciBv
ZiBzcGF0aWFsIGxheWVycyB0byB1c2UuIik7CiBpbnQgTnVtU3BhdGlhbExheWVycygpIHsKICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19udW1fc3BhdGlhbF9sYXllcnMpOwogfQogCi1E
RUZJTkVfaW50KHNlbGVjdGVkX3NsLAotICAgICAgICAgICAtMSwKLSAgICAgICAgICAgIlNwYXRp
YWwgbGF5ZXIgdG8gc2hvdyBvciBhbmFseXplLiAtMSB0byBkaXNhYmxlIGZpbHRlcmluZy4iKTsK
K1dFQlJUQ19ERUZJTkVfaW50KHNlbGVjdGVkX3NsLAorICAgICAgICAgICAgICAgICAgLTEsCisg
ICAgICAgICAgICAgICAgICAiU3BhdGlhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRv
IGRpc2FibGUgZmlsdGVyaW5nLiIpOwogaW50IFNlbGVjdGVkU0woKSB7CiAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KEZMQUdfc2VsZWN0ZWRfc2wpOwogfQogCi1ERUZJTkVfc3RyaW5nKHN0cmVh
bTAsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIHZh
bHVlcyBkZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZvciBzdHJlYW0gIzAuIik7CitXRUJSVENfREVG
SU5FX3N0cmluZygKKyAgICBzdHJlYW0wLAorICAgICIiLAorICAgICJDb21tYSBzZXBhcmF0ZWQg
dmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHN0cmVhbSAjMC4iKTsKIHN0ZDo6c3Ry
aW5nIFN0cmVhbTAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19z
dHJlYW0wKTsKIH0KIAotREVGSU5FX3N0cmluZyhzdHJlYW0xLAotICAgICAgICAgICAgICAiIiwK
LSAgICAgICAgICAgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBWaWRlb1N0
cmVhbSBmb3Igc3RyZWFtICMxLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgc3RyZWFt
MSwKKyAgICAiIiwKKyAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFZpZGVv
U3RyZWFtIGZvciBzdHJlYW0gIzEuIik7CiBzdGQ6OnN0cmluZyBTdHJlYW0xKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc3RyZWFtMSk7CiB9CiAKLURFRklORV9z
dHJpbmcoc2wwLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkNvbW1hIHNlcGFy
YXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxheWVyICMwLiIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcoCisgICAgc2wwLAorICAgICIiLAorICAgICJDb21tYSBzZXBhcmF0
ZWQgdmFsdWVzIGRlc2NyaWJpbmcgU3BhdGlhbExheWVyIGZvciBsYXllciAjMC4iKTsKIHN0ZDo6
c3RyaW5nIFNMMCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3Ns
MCk7CiB9CiAKLURFRklORV9zdHJpbmcoc2wxLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAg
ICAgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9y
IGxheWVyICMxLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgc2wxLAorICAgICIiLAor
ICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgU3BhdGlhbExheWVyIGZvciBs
YXllciAjMS4iKTsKIHN0ZDo6c3RyaW5nIFNMMSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0
ZDo6c3RyaW5nPihGTEFHX3NsMSk7CiB9CiAKLURFRklORV9zdHJpbmcoZW5jb2RlZF9mcmFtZV9w
YXRoLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIlRoZSBiYXNlIHBhdGggZm9y
IGVuY29kZWQgZnJhbWUgbG9ncy4gQ3JlYXRlZCBmaWxlcyB3aWxsIGhhdmUgIgotICAgICAgICAg
ICAgICAidGhlIGZvcm0gPGVuY29kZWRfZnJhbWVfcGF0aD4uPG4+LihyZWN2fHNlbmQuPG0+KS5p
dmYiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIGVuY29kZWRfZnJhbWVfcGF0aCwKKyAg
ICAiIiwKKyAgICAiVGhlIGJhc2UgcGF0aCBmb3IgZW5jb2RlZCBmcmFtZSBsb2dzLiBDcmVhdGVk
IGZpbGVzIHdpbGwgaGF2ZSAiCisgICAgInRoZSBmb3JtIDxlbmNvZGVkX2ZyYW1lX3BhdGg+Ljxu
Pi4ocmVjdnxzZW5kLjxtPikuaXZmIik7CiBzdGQ6OnN0cmluZyBFbmNvZGVkRnJhbWVQYXRoKCkg
ewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfZW5jb2RlZF9mcmFtZV9w
YXRoKTsKIH0KIAotREVGSU5FX2Jvb2wobG9ncywgZmFsc2UsICJwcmludCBsb2dzIHRvIHN0ZGVy
ciIpOworV0VCUlRDX0RFRklORV9ib29sKGxvZ3MsIGZhbHNlLCAicHJpbnQgbG9ncyB0byBzdGRl
cnIiKTsKIAotREVGSU5FX2Jvb2woc2VuZF9zaWRlX2J3ZSwgdHJ1ZSwgIlVzZSBzZW5kLXNpZGUg
YmFuZHdpZHRoIGVzdGltYXRpb24iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChzZW5kX3NpZGVfYndl
LCB0cnVlLCAiVXNlIHNlbmQtc2lkZSBiYW5kd2lkdGggZXN0aW1hdGlvbiIpOwogCi1ERUZJTkVf
Ym9vbChnZW5lcmljX2Rlc2NyaXB0b3IsIGZhbHNlLCAiVXNlIHRoZSBnZW5lcmljIGZyYW1lIGRl
c2NyaXB0b3IuIik7CitXRUJSVENfREVGSU5FX2Jvb2woZ2VuZXJpY19kZXNjcmlwdG9yLAorICAg
ICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJVc2UgdGhlIGdlbmVy
aWMgZnJhbWUgZGVzY3JpcHRvci4iKTsKIAotREVGSU5FX2Jvb2woYWxsb3dfcmVvcmRlcmluZywg
ZmFsc2UsICJBbGxvdyBwYWNrZXQgcmVvcmRlcmluZyB0byBvY2N1ciIpOworV0VCUlRDX0RFRklO
RV9ib29sKGFsbG93X3Jlb3JkZXJpbmcsIGZhbHNlLCAiQWxsb3cgcGFja2V0IHJlb3JkZXJpbmcg
dG8gb2NjdXIiKTsKIAotREVGSU5FX2Jvb2wodXNlX3VscGZlYywgZmFsc2UsICJVc2UgUkVEK1VM
UEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24uIik7CitXRUJSVENfREVGSU5FX2Jvb2wodXNl
X3VscGZlYywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAi
VXNlIFJFRCtVTFBGRUMgZm9yd2FyZCBlcnJvciBjb3JyZWN0aW9uLiIpOwogCi1ERUZJTkVfYm9v
bCh1c2VfZmxleGZlYywgZmFsc2UsICJVc2UgRmxleEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rp
b24uIik7CitXRUJSVENfREVGSU5FX2Jvb2wodXNlX2ZsZXhmZWMsIGZhbHNlLCAiVXNlIEZsZXhG
RUMgZm9yd2FyZCBlcnJvciBjb3JyZWN0aW9uLiIpOwogCi1ERUZJTkVfYm9vbChhdWRpbywgZmFs
c2UsICJBZGQgYXVkaW8gc3RyZWFtIik7CitXRUJSVENfREVGSU5FX2Jvb2woYXVkaW8sIGZhbHNl
LCAiQWRkIGF1ZGlvIHN0cmVhbSIpOwogCi1ERUZJTkVfYm9vbCh1c2VfcmVhbF9hZG0sCi0gICAg
ICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJVc2UgcmVhbCBBRE0gaW5zdGVhZCBvZiBmYWtl
IChubyBlZmZlY3QgaWYgYXVkaW8gaXMgZmFsc2UpIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisg
ICAgdXNlX3JlYWxfYWRtLAorICAgIGZhbHNlLAorICAgICJVc2UgcmVhbCBBRE0gaW5zdGVhZCBv
ZiBmYWtlIChubyBlZmZlY3QgaWYgYXVkaW8gaXMgZmFsc2UpIik7CiAKLURFRklORV9ib29sKGF1
ZGlvX3ZpZGVvX3N5bmMsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJTeW5jIGF1
ZGlvIGFuZCB2aWRlbyBzdHJlYW0gKG5vIGVmZmVjdCBpZiIKLSAgICAgICAgICAgICIgYXVkaW8g
aXMgZmFsc2UpIik7CitXRUJSVENfREVGSU5FX2Jvb2woYXVkaW9fdmlkZW9fc3luYywKKyAgICAg
ICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiU3luYyBhdWRpbyBhbmQg
dmlkZW8gc3RyZWFtIChubyBlZmZlY3QgaWYiCisgICAgICAgICAgICAgICAgICAgIiBhdWRpbyBp
cyBmYWxzZSkiKTsKIAotREVGSU5FX2Jvb2woYXVkaW9fZHR4LCBmYWxzZSwgIkVuYWJsZSBhdWRp
byBEVFggKG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSkiKTsKK1dFQlJUQ19ERUZJTkVfYm9v
bChhdWRpb19kdHgsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgIkVuYWJsZSBhdWRpbyBEVFggKG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSkiKTsKIAot
REVGSU5FX2Jvb2wodmlkZW8sIHRydWUsICJBZGQgdmlkZW8gc3RyZWFtIik7CitXRUJSVENfREVG
SU5FX2Jvb2wodmlkZW8sIHRydWUsICJBZGQgdmlkZW8gc3RyZWFtIik7CiAKLURFRklORV9zdHJp
bmcoCitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICBmb3JjZV9maWVsZHRyaWFscywKICAgICAi
IiwKICAgICAiRmllbGQgdHJpYWxzIGNvbnRyb2wgZXhwZXJpbWVudGFsIGZlYXR1cmUgY29kZSB3
aGljaCBjYW4gYmUgZm9yY2VkLiAiCi0gICAgIkUuZy4gcnVubmluZyB3aXRoIC0tZm9yY2VfZmll
bGR0cmlhbHM9V2ViUlRDLUZvb0ZlYXR1cmUvRW5hYmxlLyIKKyAgICAiRS5nLiBydW5uaW5nIHdp
dGggLS1mb3JjZV9maWVsZHRyaWFscz1XZWJSVEMtRm9vRmVhdHVyZS9FbmFibGVkLyIKICAgICAi
IHdpbGwgYXNzaWduIHRoZSBncm91cCBFbmFibGUgdG8gZmllbGQgdHJpYWwgV2ViUlRDLUZvb0Zl
YXR1cmUuIE11bHRpcGxlICIKICAgICAidHJpYWxzIGFyZSBzZXBhcmF0ZWQgYnkgXCIvXCIiKTsK
IAogLy8gVmlkZW8tc3BlY2lmaWMgZmxhZ3MuCi1ERUZJTkVfc3RyaW5nKGNsaXAsCi0gICAgICAg
ICAgICAgICIiLAotICAgICAgICAgICAgICAiTmFtZSBvZiB0aGUgY2xpcCB0byBzaG93LiBJZiBl
bXB0eSwgdXNpbmcgY2hyb21hIGdlbmVyYXRvci4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAor
ICAgIGNsaXAsCisgICAgIiIsCisgICAgIk5hbWUgb2YgdGhlIGNsaXAgdG8gc2hvdy4gSWYgZW1w
dHksIHVzaW5nIGNocm9tYSBnZW5lcmF0b3IuIik7CiBzdGQ6OnN0cmluZyBDbGlwKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfY2xpcCk7CiB9CiAKLURFRklORV9i
b29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklORV9i
b29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOwogCiB9ICAvLyBuYW1lc3Bh
Y2UgZmxhZ3MKIAogdm9pZCBMb29wYmFjaygpIHsKLSAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9u
Q29uZmlnIHBpcGVfY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIHBpcGVf
Y29uZmlnOwogICBwaXBlX2NvbmZpZy5sb3NzX3BlcmNlbnQgPSBmbGFnczo6TG9zc1BlcmNlbnQo
KTsKICAgcGlwZV9jb25maWcuYXZnX2J1cnN0X2xvc3NfbGVuZ3RoID0gZmxhZ3M6OkF2Z0J1cnN0
TG9zc0xlbmd0aCgpOwogICBwaXBlX2NvbmZpZy5saW5rX2NhcGFjaXR5X2ticHMgPSBmbGFnczo6
TGlua0NhcGFjaXR5S2JwcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcXVhbGl0eV9vYnNlcnZlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlf
b2JzZXJ2ZXIuY2MKaW5kZXggYjA1YzM1MzVlMGNlNzE3MTUyMzIxZjRhNmIwYTZmYTUxNDQ3OGQw
OS4uYzRhNTc0YWJmZTBlNjBhMTgyODc5YzUzNDlmMTMzNjg3OGVmNDM1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcXVh
bGl0eV9vYnNlcnZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X29ic2VydmVyLmNjCkBAIC0zNCw3ICszNCw5IEBA
IGNvbnN0IGludCBrQmxvY2t5UXBUaHJlc2hvbGRWcDkgPSA2MDsgIC8vIFRPRE8oaWxuaWspOiB0
dW5lIHRoaXMgdmFsdWUuCiAKIFZpZGVvUXVhbGl0eU9ic2VydmVyOjpWaWRlb1F1YWxpdHlPYnNl
cnZlcihWaWRlb0NvbnRlbnRUeXBlIGNvbnRlbnRfdHlwZSkKICAgICA6IGxhc3RfZnJhbWVfZGVj
b2RlZF9tc18oLTEpLAorICAgICAgbGFzdF9mcmFtZV9yZW5kZXJlZF9tc18oLTEpLAogICAgICAg
bnVtX2ZyYW1lc19kZWNvZGVkXygwKSwKKyAgICAgIG51bV9mcmFtZXNfcmVuZGVyZWRfKDApLAog
ICAgICAgZmlyc3RfZnJhbWVfZGVjb2RlZF9tc18oLTEpLAogICAgICAgbGFzdF9mcmFtZV9waXhl
bHNfKDApLAogICAgICAgbGFzdF9mcmFtZV9xcF8oMCksCkBAIC0xMTksNiArMTIxLDQ2IEBAIHZv
aWQgVmlkZW9RdWFsaXR5T2JzZXJ2ZXI6OlVwZGF0ZUhpc3RvZ3JhbXMoKSB7CiAgIFJUQ19MT0co
TFNfSU5GTykgPDwgbG9nX3N0cmVhbS5zdHIoKTsKIH0KIAordm9pZCBWaWRlb1F1YWxpdHlPYnNl
cnZlcjo6T25SZW5kZXJlZEZyYW1lKGludDY0X3Qgbm93X21zKSB7CisgIGlmIChudW1fZnJhbWVz
X3JlbmRlcmVkXyA9PSAwKSB7CisgICAgbGFzdF91bmZyZWV6ZV90aW1lXyA9IG5vd19tczsKKyAg
fQorCisgICsrbnVtX2ZyYW1lc19yZW5kZXJlZF87CisKKyAgaWYgKCFpc19wYXVzZWRfICYmIG51
bV9mcmFtZXNfcmVuZGVyZWRfID4gMSkgeworICAgIC8vIFByb2Nlc3MgaW50ZXItZnJhbWUgZGVs
YXkuCisgICAgaW50NjRfdCBpbnRlcmZyYW1lX2RlbGF5X21zID0gbm93X21zIC0gbGFzdF9mcmFt
ZV9yZW5kZXJlZF9tc187CisgICAgcmVuZGVyX2ludGVyZnJhbWVfZGVsYXlzXy5BZGQoaW50ZXJm
cmFtZV9kZWxheV9tcyk7CisgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBhdmdfaW50ZXJmcmFtZV9k
ZWxheSA9CisgICAgICAgIHJlbmRlcl9pbnRlcmZyYW1lX2RlbGF5c18uQXZnKGtNaW5GcmFtZVNh
bXBsZXNUb0RldGVjdEZyZWV6ZSk7CisgICAgLy8gQ2hlY2sgaWYgaXQgd2FzIGEgZnJlZXplLgor
ICAgIGlmIChhdmdfaW50ZXJmcmFtZV9kZWxheSAmJgorICAgICAgICBpbnRlcmZyYW1lX2RlbGF5
X21zID49CisgICAgICAgICAgICBzdGQ6Om1heCgzICogKmF2Z19pbnRlcmZyYW1lX2RlbGF5LAor
ICAgICAgICAgICAgICAgICAgICAgKmF2Z19pbnRlcmZyYW1lX2RlbGF5ICsga01pbkluY3JlYXNl
Rm9yRnJlZXplTXMpKSB7CisgICAgICBmcmVlemVzX2R1cmF0aW9uc18uQWRkKGludGVyZnJhbWVf
ZGVsYXlfbXMpOworICAgICAgc21vb3RoX3BsYXliYWNrX2R1cmF0aW9uc18uQWRkKGxhc3RfZnJh
bWVfcmVuZGVyZWRfbXNfIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
YXN0X3VuZnJlZXplX3RpbWVfKTsKKyAgICAgIGxhc3RfdW5mcmVlemVfdGltZV8gPSBub3dfbXM7
CisgICAgfQorICB9CisKKyAgaWYgKGlzX3BhdXNlZF8pIHsKKyAgICAvLyBJZiB0aGUgc3RyZWFt
IHdhcyBwYXVzZWQgc2luY2UgdGhlIHByZXZpb3VzIGZyYW1lLCBkbyBub3QgY291bnQgdGhlCisg
ICAgLy8gcGF1c2UgdG93YXJkIHNtb290aCBwbGF5YmFjay4gRXhwbGljaXRseSBjb3VudCB0aGUg
cGFydCBiZWZvcmUgaXQgYW5kCisgICAgLy8gc3RhcnQgdGhlIG5ldyBzbW9vdGggcGxheWJhY2sg
aW50ZXJ2YWwgZnJvbSB0aGlzIGZyYW1lLgorICAgIGlzX3BhdXNlZF8gPSBmYWxzZTsKKyAgICBp
ZiAobGFzdF9mcmFtZV9yZW5kZXJlZF9tc18gPiBsYXN0X3VuZnJlZXplX3RpbWVfKSB7CisgICAg
ICBzbW9vdGhfcGxheWJhY2tfZHVyYXRpb25zXy5BZGQobGFzdF9mcmFtZV9yZW5kZXJlZF9tc18g
LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfdW5mcmVlemVfdGlt
ZV8pOworICAgIH0KKyAgICBsYXN0X3VuZnJlZXplX3RpbWVfID0gbm93X21zOworICB9CisKKyAg
bGFzdF9mcmFtZV9yZW5kZXJlZF9tc18gPSBub3dfbXM7Cit9CisKIHZvaWQgVmlkZW9RdWFsaXR5
T2JzZXJ2ZXI6Ok9uRGVjb2RlZEZyYW1lKGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+IHFwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwKQEAgLTEyNiw3
ICsxNjgsNiBAQCB2b2lkIFZpZGVvUXVhbGl0eU9ic2VydmVyOjpPbkRlY29kZWRGcmFtZShhYnNs
OjpvcHRpb25hbDx1aW50OF90PiBxcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZpZGVvQ29kZWNUeXBlIGNvZGVjKSB7CiAgIGlmIChudW1fZnJhbWVzX2RlY29k
ZWRfID09IDApIHsKICAgICBmaXJzdF9mcmFtZV9kZWNvZGVkX21zXyA9IG5vd19tczsKLSAgICBs
YXN0X3VuZnJlZXplX3RpbWVfID0gbm93X21zOwogICB9CiAKICAgKytudW1fZnJhbWVzX2RlY29k
ZWRfOwpAQCAtMTM0LDIxICsxNzUsMTQgQEAgdm9pZCBWaWRlb1F1YWxpdHlPYnNlcnZlcjo6T25E
ZWNvZGVkRnJhbWUoYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gcXAsCiAgIGlmICghaXNfcGF1c2Vk
XyAmJiBudW1fZnJhbWVzX2RlY29kZWRfID4gMSkgewogICAgIC8vIFByb2Nlc3MgaW50ZXItZnJh
bWUgZGVsYXkuCiAgICAgaW50NjRfdCBpbnRlcmZyYW1lX2RlbGF5X21zID0gbm93X21zIC0gbGFz
dF9mcmFtZV9kZWNvZGVkX21zXzsKLSAgICBpbnRlcmZyYW1lX2RlbGF5c18uQWRkKGludGVyZnJh
bWVfZGVsYXlfbXMpOworICAgIGRlY29kZV9pbnRlcmZyYW1lX2RlbGF5c18uQWRkKGludGVyZnJh
bWVfZGVsYXlfbXMpOwogICAgIGFic2w6Om9wdGlvbmFsPGludD4gYXZnX2ludGVyZnJhbWVfZGVs
YXkgPQotICAgICAgICBpbnRlcmZyYW1lX2RlbGF5c18uQXZnKGtNaW5GcmFtZVNhbXBsZXNUb0Rl
dGVjdEZyZWV6ZSk7Ci0gICAgLy8gQ2hlY2sgaWYgaXQgd2FzIGEgZnJlZXplLgotICAgIGlmIChh
dmdfaW50ZXJmcmFtZV9kZWxheSAmJgotICAgICAgICBpbnRlcmZyYW1lX2RlbGF5X21zID49Cisg
ICAgICAgIGRlY29kZV9pbnRlcmZyYW1lX2RlbGF5c18uQXZnKGtNaW5GcmFtZVNhbXBsZXNUb0Rl
dGVjdEZyZWV6ZSk7CisgICAgLy8gQ291bnQgc3BhdGlhbCBtZXRyaWNzIGlmIHRoZXJlIHdlcmUg
bm8gZnJlZXplLgorICAgIGlmICghYXZnX2ludGVyZnJhbWVfZGVsYXkgfHwKKyAgICAgICAgaW50
ZXJmcmFtZV9kZWxheV9tcyA8CiAgICAgICAgICAgICBzdGQ6Om1heCgzICogKmF2Z19pbnRlcmZy
YW1lX2RlbGF5LAogICAgICAgICAgICAgICAgICAgICAgKmF2Z19pbnRlcmZyYW1lX2RlbGF5ICsg
a01pbkluY3JlYXNlRm9yRnJlZXplTXMpKSB7Ci0gICAgICBmcmVlemVzX2R1cmF0aW9uc18uQWRk
KGludGVyZnJhbWVfZGVsYXlfbXMpOwotICAgICAgc21vb3RoX3BsYXliYWNrX2R1cmF0aW9uc18u
QWRkKGxhc3RfZnJhbWVfZGVjb2RlZF9tc18gLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxhc3RfdW5mcmVlemVfdGltZV8pOwotICAgICAgbGFzdF91bmZyZWV6ZV90aW1l
XyA9IG5vd19tczsKLSAgICB9IGVsc2UgewotICAgICAgLy8gT25seSBjb3VudCBpbnRlci1mcmFt
ZSBkZWxheSBhcyBwbGF5YmFjayB0aW1lIGlmIHRoZXJlCi0gICAgICAvLyB3YXMgbm8gZnJlZXpl
LgogICAgICAgdGltZV9pbl9yZXNvbHV0aW9uX21zX1tjdXJyZW50X3Jlc29sdXRpb25fXSArPSBp
bnRlcmZyYW1lX2RlbGF5X21zOwogICAgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBxcF9ibG9ja3lf
dGhyZXNob2xkOwogICAgICAgLy8gVE9ETyhpbG5payk6IGFkZCBvdGhlciBjb2RlYyB0eXBlcyB3
aGVuIHdlIGhhdmUgUVAgZm9yIHRoZW0uCkBAIC0xNjgsMTggKzIwMiw2IEBAIHZvaWQgVmlkZW9R
dWFsaXR5T2JzZXJ2ZXI6Ok9uRGVjb2RlZEZyYW1lKGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+IHFw
LAogICAgIH0KICAgfQogCi0gIGlmIChpc19wYXVzZWRfKSB7Ci0gICAgLy8gSWYgdGhlIHN0cmVh
bSB3YXMgcGF1c2VkIHNpbmNlIHRoZSBwcmV2aW91cyBmcmFtZSwgZG8gbm90IGNvdW50IHRoZQot
ICAgIC8vIHBhdXNlIHRvd2FyZCBzbW9vdGggcGxheWJhY2suIEV4cGxpY2l0bHkgY291bnQgdGhl
IHBhcnQgYmVmb3JlIGl0IGFuZAotICAgIC8vIHN0YXJ0IHRoZSBuZXcgc21vb3RoIHBsYXliYWNr
IGludGVydmFsIGZyb20gdGhpcyBmcmFtZS4KLSAgICBpc19wYXVzZWRfID0gZmFsc2U7Ci0gICAg
aWYgKGxhc3RfZnJhbWVfZGVjb2RlZF9tc18gPiBsYXN0X3VuZnJlZXplX3RpbWVfKSB7Ci0gICAg
ICBzbW9vdGhfcGxheWJhY2tfZHVyYXRpb25zXy5BZGQobGFzdF9mcmFtZV9kZWNvZGVkX21zXyAt
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF91bmZyZWV6ZV90aW1l
Xyk7Ci0gICAgfQotICAgIGxhc3RfdW5mcmVlemVfdGltZV8gPSBub3dfbXM7Ci0gIH0KLQogICBp
bnQ2NF90IHBpeGVscyA9IHdpZHRoICogaGVpZ2h0OwogICBpZiAocGl4ZWxzID49IGtQaXhlbHNJ
bkhpZ2hSZXNvbHV0aW9uKSB7CiAgICAgY3VycmVudF9yZXNvbHV0aW9uXyA9IFJlc29sdXRpb246
OkhpZ2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X29ic2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X29ic2VydmVyLmgKaW5k
ZXggOGJhNGFmMzk4NDJhOGRlMDEwNjgzZTFjZGE3NDQ4YzFmNmQzZGJiMS4uNzRmMjAxZThjNDVm
NTNmNTY3ZWUwYzk3NTlmODU5OGNiNzM0NGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcXVhbGl0eV9vYnNlcnZlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Zp
ZGVvX3F1YWxpdHlfb2JzZXJ2ZXIuaApAQCAtMTUsOCArMTUsOCBAQAogI2luY2x1ZGUgPHZlY3Rv
cj4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvdmlk
ZW8vdmlkZW9fY29kZWNfdHlwZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19jb250ZW50
X3R5cGUuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlKQogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhbXBsZV9jb3VudGVyLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewpAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBWaWRlb1F1YWxpdHlPYnNl
cnZlciB7CiAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwKICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IG5vd19tcywKICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0NvZGVj
VHlwZSBjb2RlYyk7CisgIHZvaWQgT25SZW5kZXJlZEZyYW1lKGludDY0X3Qgbm93X21zKTsKIAog
ICB2b2lkIE9uU3RyZWFtSW5hY3RpdmUoKTsKIApAQCAtNDgsMTMgKzQ5LDE2IEBAIGNsYXNzIFZp
ZGVvUXVhbGl0eU9ic2VydmVyIHsKICAgfTsKIAogICBpbnQ2NF90IGxhc3RfZnJhbWVfZGVjb2Rl
ZF9tc187CisgIGludDY0X3QgbGFzdF9mcmFtZV9yZW5kZXJlZF9tc187CiAgIGludDY0X3QgbnVt
X2ZyYW1lc19kZWNvZGVkXzsKKyAgaW50NjRfdCBudW1fZnJhbWVzX3JlbmRlcmVkXzsKICAgaW50
NjRfdCBmaXJzdF9mcmFtZV9kZWNvZGVkX21zXzsKICAgaW50NjRfdCBsYXN0X2ZyYW1lX3BpeGVs
c187CiAgIHVpbnQ4X3QgbGFzdF9mcmFtZV9xcF87CiAgIC8vIERlY29kZWQgdGltZXN0YW1wIG9m
IHRoZSBsYXN0IGRlbGF5ZWQgZnJhbWUuCiAgIGludDY0X3QgbGFzdF91bmZyZWV6ZV90aW1lXzsK
LSAgcnRjOjpTYW1wbGVDb3VudGVyIGludGVyZnJhbWVfZGVsYXlzXzsKKyAgcnRjOjpTYW1wbGVD
b3VudGVyIHJlbmRlcl9pbnRlcmZyYW1lX2RlbGF5c187CisgIHJ0Yzo6U2FtcGxlQ291bnRlciBk
ZWNvZGVfaW50ZXJmcmFtZV9kZWxheXNfOwogICAvLyBBbiBpbnRlci1mcmFtZSBkZWxheSBpcyBj
b3VudGVkIGFzIGEgZnJlZXplIGlmIGl0J3Mgc2lnbmlmaWNhbnRseSBsb25nZXIKICAgLy8gdGhh
biBhdmVyYWdlIGludGVyLWZyYW1lIGRlbGF5LgogICBydGM6OlNhbXBsZUNvdW50ZXIgZnJlZXpl
c19kdXJhdGlvbnNfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcXVhbGl0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcXVhbGl0eV90ZXN0LmNjCmlu
ZGV4IDJhM2JlNjcyZDc2MDY4YTE0MTU0M2U4OTBiYTFkOGI2MWI1YmM5YWIuLmQ2Y2NiNjUyMmU1
ODMyMTc3ZmM1YjQ4NTMyOWRhZGQ5MWEwMjc2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfdGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRl
b19xdWFsaXR5X3Rlc3QuY2MKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAj
aW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwvZmFrZV9uZXR3b3JrX3Bp
cGUuaCIKICNpbmNsdWRlICJjYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgiCiAjaW5jbHVkZSAibG9n
Z2luZy9ydGNfZXZlbnRfbG9nL291dHB1dC9ydGNfZXZlbnRfbG9nX291dHB1dF9maWxlLmgiCkBA
IC0zNSw3ICszNiw3IEBACiAjaW5jbHVkZSAidGVzdC9ydW5fbG9vcC5oIgogI2luY2x1ZGUgInRl
c3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAjaW5jbHVkZSAidGVzdC92aWRlb19yZW5kZXJl
ci5oIgotI2luY2x1ZGUgInZpZGVvL3ZpZGVvX2FuYWx5emVyLmgiCisjaW5jbHVkZSAidmlkZW8v
ZnJhbWVfZHVtcGluZ19kZWNvZGVyLmgiCiAjaWZkZWYgV0VCUlRDX1dJTgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlX2ZhY3RvcnkuaCIKICNlbmRp
ZgpAQCAtNzUsNjEgKzc2LDE2IEBAIGNsYXNzIFZpZGVvU3RyZWFtRmFjdG9yeQogICBzdGQ6OnZl
Y3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtc187CiB9OwogCi0vLyBBIGRlY29kZXIgd3JhcHBlciB0
aGF0IHdyaXRlcyB0aGUgZW5jb2RlZCBmcmFtZXMgdG8gYSBmaWxlLgotY2xhc3MgRnJhbWVEdW1w
aW5nRGVjb2RlciA6IHB1YmxpYyBWaWRlb0RlY29kZXIgeworLy8gVGhpcyB3cmFwcGVyIHByb3Zp
ZGVzIHR3byBmZWF0dXJlcyBuZWVkZWQgYnkgdGhlIHZpZGVvIHF1YWxpdHkgdGVzdHM6CisvLyAg
MS4gSW52b2tlIFZpZGVvQW5hbHl6ZXIgY2FsbGJhY2tzIGJlZm9yZSBhbmQgYWZ0ZXIgZW5jb2Rp
bmcgZWFjaCBmcmFtZS4KKy8vICAyLiBXcml0ZSB0aGUgZW5jb2RlZCBmcmFtZXMgdG8gZmlsZSwg
b25lIGZpbGUgcGVyIHNpbXVsY2FzdCBsYXllci4KK2NsYXNzIFF1YWxpdHlUZXN0VmlkZW9FbmNv
ZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJpdmF0ZSBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7CiAgcHVibGljOgotICBGcmFtZUR1bXBp
bmdEZWNvZGVyKHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+IGRlY29kZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgcnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSkKLSAgICAgIDogZGVjb2Rlcl8o
c3RkOjptb3ZlKGRlY29kZXIpKSwKLSAgICAgICAgd3JpdGVyXyhJdmZGaWxlV3JpdGVyOjpXcmFw
KHJ0Yzo6RmlsZShmaWxlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IGJ5dGVfbGltaXQ9ICovIDEwMDAwMDAwMCkpIHt9Ci0KLSAgaW50MzJfdCBJbml0RGVjb2RlKGNv
bnN0IFZpZGVvQ29kZWMqIGNvZGVjX3NldHRpbmdzLAotICAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCBudW1iZXJfb2ZfY29yZXMpIG92ZXJyaWRlIHsKLSAgICByZXR1cm4gZGVjb2Rlcl8tPklu
aXREZWNvZGUoY29kZWNfc2V0dGluZ3MsIG51bWJlcl9vZl9jb3Jlcyk7Ci0gIH0KLQotICBpbnQz
Ml90IERlY29kZShjb25zdCBFbmNvZGVkSW1hZ2UmIGlucHV0X2ltYWdlLAotICAgICAgICAgICAg
ICAgICBib29sIG1pc3NpbmdfZnJhbWVzLAotICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1Nw
ZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKLSAgICAgICAgICAgICAgICAgaW50NjRf
dCByZW5kZXJfdGltZV9tcykgb3ZlcnJpZGUgewotICAgIGludDMyX3QgcmV0ID0gZGVjb2Rlcl8t
PkRlY29kZShpbnB1dF9pbWFnZSwgbWlzc2luZ19mcmFtZXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvZGVjX3NwZWNpZmljX2luZm8sIHJlbmRlcl90aW1lX21zKTsKLSAg
ICB3cml0ZXJfLT5Xcml0ZUZyYW1lKGlucHV0X2ltYWdlLCBjb2RlY19zcGVjaWZpY19pbmZvLT5j
b2RlY1R5cGUpOwotCi0gICAgcmV0dXJuIHJldDsKLSAgfQotCi0gIGludDMyX3QgUmVnaXN0ZXJE
ZWNvZGVDb21wbGV0ZUNhbGxiYWNrKAotICAgICAgRGVjb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxi
YWNrKSBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIGRlY29kZXJfLT5SZWdpc3RlckRlY29kZUNvbXBs
ZXRlQ2FsbGJhY2soY2FsbGJhY2spOwotICB9Ci0KLSAgaW50MzJfdCBSZWxlYXNlKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gZGVjb2Rlcl8tPlJlbGVhc2UoKTsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgZGVjb2RlciBwcmVmZXIgdG8gZGVjb2RlIGZyYW1lcyBsYXRlLgotICAvLyBUaGF0IGlz
LCBpdCBjYW4gbm90IGRlY29kZSBpbmZpbml0ZSBudW1iZXIgb2YgZnJhbWVzIGJlZm9yZSB0aGUg
ZGVjb2RlZAotICAvLyBmcmFtZSBpcyBjb25zdW1lZC4KLSAgYm9vbCBQcmVmZXJzTGF0ZURlY29k
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIHJldHVybiBkZWNvZGVyXy0+UHJlZmVyc0xhdGVE
ZWNvZGluZygpOwotICB9Ci0KLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgewotICAgIHJldHVybiBkZWNvZGVyXy0+SW1wbGVtZW50YXRpb25OYW1lKCk7
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+IGRlY29k
ZXJfOwotICBzdGQ6OnVuaXF1ZV9wdHI8SXZmRmlsZVdyaXRlcj4gd3JpdGVyXzsKLX07Ci0KLS8v
IEFuIGVuY29kZXIgd3JhcHBlciB0aGF0IHdyaXRlcyB0aGUgZW5jb2RlZCBmcmFtZXMgdG8gZmls
ZSwgb25lIHBlciBzaW11bGNhc3QKLS8vIGxheWVyLgotY2xhc3MgRnJhbWVEdW1waW5nRW5jb2Rl
ciA6IHB1YmxpYyBWaWRlb0VuY29kZXIsIHByaXZhdGUgRW5jb2RlZEltYWdlQ2FsbGJhY2sgewot
IHB1YmxpYzoKLSAgRnJhbWVEdW1waW5nRW5jb2RlcihzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNv
ZGVyPiBlbmNvZGVyLAotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6UGxh
dGZvcm1GaWxlPiBmaWxlcykKLSAgICAgIDogZW5jb2Rlcl8oc3RkOjptb3ZlKGVuY29kZXIpKSB7
CisgIFF1YWxpdHlUZXN0VmlkZW9FbmNvZGVyKHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+
IGVuY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvQW5hbHl6ZXIqIGFuYWx5
emVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxydGM6OlBsYXRmb3Jt
RmlsZT4gZmlsZXMpCisgICAgICA6IGVuY29kZXJfKHN0ZDo6bW92ZShlbmNvZGVyKSksIGFuYWx5
emVyXyhhbmFseXplcikgewogICAgIGZvciAocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSA6IGZpbGVz
KSB7CiAgICAgICB3cml0ZXJzXy5wdXNoX2JhY2soCiAgICAgICAgICAgSXZmRmlsZVdyaXRlcjo6
V3JhcChydGM6OkZpbGUoZmlsZSksIC8qIGJ5dGVfbGltaXQ9ICovIDEwMDAwMDAwMCkpOwpAQCAt
MTUxLDExICsxMDcsMTEgQEAgY2xhc3MgRnJhbWVEdW1waW5nRW5jb2RlciA6IHB1YmxpYyBWaWRl
b0VuY29kZXIsIHByaXZhdGUgRW5jb2RlZEltYWdlQ2FsbGJhY2sgewogICBpbnQzMl90IEVuY29k
ZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNT
cGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCiAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPEZyYW1lVHlwZT4qIGZyYW1lX3R5cGVzKSB7CisgICAgaWYgKGFuYWx5emVy
XykgeworICAgICAgYW5hbHl6ZXJfLT5QcmVFbmNvZGVPbkZyYW1lKGZyYW1lKTsKKyAgICB9CiAg
ICAgcmV0dXJuIGVuY29kZXJfLT5FbmNvZGUoZnJhbWUsIGNvZGVjX3NwZWNpZmljX2luZm8sIGZy
YW1lX3R5cGVzKTsKICAgfQotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90
IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGUgewotICAgIHJldHVybiBlbmNvZGVy
Xy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0X2xvc3MsIHJ0dCk7Ci0gIH0KICAgaW50MzJf
dCBTZXRSYXRlcyh1aW50MzJfdCBiaXRyYXRlLCB1aW50MzJfdCBmcmFtZXJhdGUpIG92ZXJyaWRl
IHsKICAgICByZXR1cm4gZW5jb2Rlcl8tPlNldFJhdGVzKGJpdHJhdGUsIGZyYW1lcmF0ZSk7CiAg
IH0KQEAgLTE2MywxNCArMTE5LDggQEAgY2xhc3MgRnJhbWVEdW1waW5nRW5jb2RlciA6IHB1Ymxp
YyBWaWRlb0VuY29kZXIsIHByaXZhdGUgRW5jb2RlZEltYWdlQ2FsbGJhY2sgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgb3ZlcnJpZGUgewogICAgIHJl
dHVybiBlbmNvZGVyXy0+U2V0UmF0ZUFsbG9jYXRpb24oYWxsb2NhdGlvbiwgZnJhbWVyYXRlKTsK
ICAgfQotICBTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qgb3ZlcnJp
ZGUgewotICAgIHJldHVybiBlbmNvZGVyXy0+R2V0U2NhbGluZ1NldHRpbmdzKCk7Ci0gIH0KLSAg
Ym9vbCBTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICByZXR1cm4g
ZW5jb2Rlcl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCk7Ci0gIH0KLSAgY29uc3QgY2hhciogSW1w
bGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIHJldHVybiBlbmNvZGVyXy0+
SW1wbGVtZW50YXRpb25OYW1lKCk7CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29u
c3Qgb3ZlcnJpZGUgeworICAgIHJldHVybiBlbmNvZGVyXy0+R2V0RW5jb2RlckluZm8oKTsKICAg
fQogCiAgcHJpdmF0ZToKQEAgLTE4Niw2ICsxMzYsMTAgQEAgY2xhc3MgRnJhbWVEdW1waW5nRW5j
b2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIsIHByaXZhdGUgRW5jb2RlZEltYWdlQ2FsbGJhY2sg
ewogICAgICAgICBzaW11bGNhc3RfaW5kZXggPSBlbmNvZGVkX2ltYWdlLlNwYXRpYWxJbmRleCgp
LnZhbHVlX29yKDApOwogICAgICAgfQogICAgICAgUlRDX0RDSEVDS19HRShzaW11bGNhc3RfaW5k
ZXgsIDApOworICAgICAgaWYgKGFuYWx5emVyXykgeworICAgICAgICBhbmFseXplcl8tPlBvc3RF
bmNvZGVPbkZyYW1lKHNpbXVsY2FzdF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbmNvZGVkX2ltYWdlLlRpbWVzdGFtcCgpKTsKKyAgICAgIH0KICAgICAgIGlm
IChzdGF0aWNfY2FzdDxzaXplX3Q+KHNpbXVsY2FzdF9pbmRleCkgPCB3cml0ZXJzXy5zaXplKCkp
IHsKICAgICAgICAgd3JpdGVyc19bc2ltdWxjYXN0X2luZGV4XS0+V3JpdGVGcmFtZShlbmNvZGVk
X2ltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
ZGVjX3NwZWNpZmljX2luZm8tPmNvZGVjVHlwZSk7CkBAIC0yMDIsNiArMTU2LDcgQEAgY2xhc3Mg
RnJhbWVEdW1waW5nRW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIsIHByaXZhdGUgRW5jb2Rl
ZEltYWdlQ2FsbGJhY2sgewogCiAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IGVuY29k
ZXJfOwogICBFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2tfID0gbnVsbHB0cjsKKyAgVmlk
ZW9BbmFseXplciogY29uc3QgYW5hbHl6ZXJfOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8SXZmRmlsZVdyaXRlcj4+IHdyaXRlcnNfOwogfTsKIApAQCAtMjI4LDcgKzE4Myw4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+IFZpZGVvUXVhbGl0eVRlc3Q6OkNyZWF0ZVZpZGVv
RGVjb2RlcigKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gVmlkZW9RdWFsaXR5
VGVzdDo6Q3JlYXRlVmlkZW9FbmNvZGVyKAotICAgIGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3Jt
YXQpIHsKKyAgICBjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0LAorICAgIFZpZGVvQW5hbHl6
ZXIqIGFuYWx5emVyKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IGVuY29kZXI7
CiAgIGlmIChmb3JtYXQubmFtZSA9PSAiVlA4IikgewogICAgIGVuY29kZXIgPSBhYnNsOjptYWtl
X3VuaXF1ZTxWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHk+KApAQCAtMjQ1LDEyICsyMDEsMTcgQEAg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gVmlkZW9RdWFsaXR5VGVzdDo6Q3JlYXRlVmlk
ZW9FbmNvZGVyKAogICAgIHNiIDw8IHNlbmRfbG9nc18rKzsKICAgICBzdGQ6OnN0cmluZyBwcmVm
aXggPQogICAgICAgICBwYXJhbXNfLmxvZ2dpbmcuZW5jb2RlZF9mcmFtZV9iYXNlX3BhdGggKyAi
LiIgKyBzYi5zdHIoKSArICIuc2VuZC4iOwotICAgIGVuY29kZXIgPSBhYnNsOjptYWtlX3VuaXF1
ZTxGcmFtZUR1bXBpbmdFbmNvZGVyPigKLSAgICAgICAgc3RkOjptb3ZlKGVuY29kZXIpLCBzdGQ6
OnZlY3RvcjxydGM6OlBsYXRmb3JtRmlsZT4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHtydGM6OkNyZWF0ZVBsYXRmb3JtRmlsZShwcmVmaXggKyAiMS5pdmYiKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3JlYXRlUGxhdGZvcm1GaWxlKHByZWZpeCAr
ICIyLml2ZiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpDcmVhdGVQ
bGF0Zm9ybUZpbGUocHJlZml4ICsgIjMuaXZmIil9KSk7CisgICAgZW5jb2RlciA9IGFic2w6Om1h
a2VfdW5pcXVlPFF1YWxpdHlUZXN0VmlkZW9FbmNvZGVyPigKKyAgICAgICAgc3RkOjptb3ZlKGVu
Y29kZXIpLCBhbmFseXplciwKKyAgICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpQbGF0Zm9ybUZpbGU+
KAorICAgICAgICAgICAge3J0Yzo6Q3JlYXRlUGxhdGZvcm1GaWxlKHByZWZpeCArICIxLml2ZiIp
LAorICAgICAgICAgICAgIHJ0Yzo6Q3JlYXRlUGxhdGZvcm1GaWxlKHByZWZpeCArICIyLml2ZiIp
LAorICAgICAgICAgICAgIHJ0Yzo6Q3JlYXRlUGxhdGZvcm1GaWxlKHByZWZpeCArICIzLml2ZiIp
fSkpOworICB9IGVsc2UgaWYgKGFuYWx5emVyKSB7CisgICAgZW5jb2RlciA9IGFic2w6Om1ha2Vf
dW5pcXVlPFF1YWxpdHlUZXN0VmlkZW9FbmNvZGVyPigKKyAgICAgICAgc3RkOjptb3ZlKGVuY29k
ZXIpLCBhbmFseXplciwgc3RkOjp2ZWN0b3I8cnRjOjpQbGF0Zm9ybUZpbGU+KCkpOwogICB9CisK
ICAgcmV0dXJuIGVuY29kZXI7CiB9CiAKQEAgLTI2MSwxMSArMjIyLDE4IEBAIFZpZGVvUXVhbGl0
eVRlc3Q6OlZpZGVvUXVhbGl0eVRlc3QoCiAgICAgICAgIHJldHVybiB0aGlzLT5DcmVhdGVWaWRl
b0RlY29kZXIoZm9ybWF0KTsKICAgICAgIH0pLAogICAgICAgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
XyhbdGhpc10oY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgewotICAgICAgICByZXR1cm4g
dGhpcy0+Q3JlYXRlVmlkZW9FbmNvZGVyKGZvcm1hdCk7CisgICAgICAgIHJldHVybiB0aGlzLT5D
cmVhdGVWaWRlb0VuY29kZXIoZm9ybWF0LCBudWxscHRyKTsKICAgICAgIH0pLAorICAgICAgdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5X3dpdGhfYW5hbHl6ZXJfKAorICAgICAgICAgIFt0aGlzXShjb25z
dCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy0+Q3Jl
YXRlVmlkZW9FbmNvZGVyKGZvcm1hdCwgYW5hbHl6ZXJfLmdldCgpKTsKKyAgICAgICAgICB9KSwK
KyAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfKAorICAgICAgICAgIENyZWF0
ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkpLAogICAgICAgcmVjZWl2ZV9s
b2dzXygwKSwKICAgICAgIHNlbmRfbG9nc18oMCksCi0gICAgICBpbmplY3Rpb25fY29tcG9uZW50
c18oc3RkOjptb3ZlKGluamVjdGlvbl9jb21wb25lbnRzKSkgeworICAgICAgaW5qZWN0aW9uX2Nv
bXBvbmVudHNfKHN0ZDo6bW92ZShpbmplY3Rpb25fY29tcG9uZW50cykpLAorICAgICAgbnVtX3Zp
ZGVvX3N0cmVhbXNfKDApIHsKICAgaWYgKGluamVjdGlvbl9jb21wb25lbnRzXyA9PSBudWxscHRy
KSB7CiAgICAgaW5qZWN0aW9uX2NvbXBvbmVudHNfID0gYWJzbDo6bWFrZV91bmlxdWU8SW5qZWN0
aW9uQ29tcG9uZW50cz4oKTsKICAgfQpAQCAtMjk0LDcgKzI2Miw2IEBAIFZpZGVvUXVhbGl0eVRl
c3Q6OlBhcmFtczo6UGFyYW1zKCkKICAgICAgIGF1ZGlvKHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZX0pLAogICAgICAgc2NyZWVuc2hhcmV7e2ZhbHNlLCBmYWxzZSwgMTAsIDB9LCB7ZmFsc2Us
IGZhbHNlLCAxMCwgMH19LAogICAgICAgYW5hbHl6ZXIoeyIiLCAwLjAsIDAuMCwgMCwgIiIsICIi
fSksCi0gICAgICBwaXBlKCksCiAgICAgICBjb25maWcoYWJzbDo6bnVsbG9wdCksCiAgICAgICBz
c3t7c3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+KCksIDAsIDAsIC0xLCBJbnRlckxheWVyUHJlZE1v
ZGU6OmtPbiwKICAgICAgICAgICBzdGQ6OnZlY3RvcjxTcGF0aWFsTGF5ZXI+KCl9LApAQCAtMzMx
LDkgKzI5OCw3IEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6Q2hlY2tQYXJhbXNBbmRJbmplY3Rp
b25Db21wb25lbnRzKCkgewogICB9CiAgIGlmICghcGFyYW1zXy5jb25maWcgJiYgaW5qZWN0aW9u
X2NvbXBvbmVudHNfLT5zZW5kZXJfbmV0d29yayA9PSBudWxscHRyICYmCiAgICAgICBpbmplY3Rp
b25fY29tcG9uZW50c18tPnJlY2VpdmVyX25ldHdvcmsgPT0gbnVsbHB0cikgewotICAgIC8vIFRP
RE8odGl0b3ZhcnRlbSkgcmVwbGFjZSB3aXRoIGRlZmF1bHQgY29uZmlnIGNyZWF0aW9uIHdoZW4g
cmVtb3ZpbmcKLSAgICAvLyBwaXBlLgotICAgIHBhcmFtc18uY29uZmlnID0gcGFyYW1zXy5waXBl
OworICAgIHBhcmFtc18uY29uZmlnID0gQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpOwog
ICB9CiAgIFJUQ19DSEVDSygKICAgICAgIChwYXJhbXNfLmNvbmZpZyAmJiBpbmplY3Rpb25fY29t
cG9uZW50c18tPnNlbmRlcl9uZXR3b3JrID09IG51bGxwdHIgJiYKQEAgLTU5NCw3ICs1NTksMTAg
QEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpTZXR1cFZpZGVvKFRyYW5zcG9ydCogc2VuZF90cmFu
c3BvcnQsCiAgICAgICByZXR1cm47CiAgICAgfQogICAgIHZpZGVvX3NlbmRfY29uZmlnc19bdmlk
ZW9faWR4XS5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9Ci0gICAgICAgICZ2aWRl
b19lbmNvZGVyX2ZhY3RvcnlfOworICAgICAgICAodmlkZW9faWR4ID09IDApID8gJnZpZGVvX2Vu
Y29kZXJfZmFjdG9yeV93aXRoX2FuYWx5emVyXworICAgICAgICAgICAgICAgICAgICAgICAgIDog
JnZpZGVvX2VuY29kZXJfZmFjdG9yeV87CisgICAgdmlkZW9fc2VuZF9jb25maWdzX1t2aWRlb19p
ZHhdLmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICAg
IHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfLmdldCgpOwogCiAgICAgdmlkZW9fc2Vu
ZF9jb25maWdzX1t2aWRlb19pZHhdLnJ0cC5wYXlsb2FkX25hbWUgPQogICAgICAgICBwYXJhbXNf
LnZpZGVvW3ZpZGVvX2lkeF0uY29kZWM7CkBAIC03MDIsNiArNjcwLDEwIEBAIHZvaWQgVmlkZW9R
dWFsaXR5VGVzdDo6U2V0dXBWaWRlbyhUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LAogICAgICAg
ICB2cDlfc2V0dGluZ3MubnVtYmVyT2ZTcGF0aWFsTGF5ZXJzID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oCiAgICAgICAgICAgICBwYXJhbXNfLnNzW3ZpZGVvX2lkeF0ubnVtX3NwYXRpYWxf
bGF5ZXJzKTsKICAgICAgICAgdnA5X3NldHRpbmdzLmludGVyTGF5ZXJQcmVkID0gcGFyYW1zXy5z
c1t2aWRlb19pZHhdLmludGVyX2xheWVyX3ByZWQ7CisgICAgICAgIC8vIEhpZ2ggRlBTIHZwOSBz
Y3JlZW5zaGFyZSByZXF1aXJlcyBmbGV4aWJsZSBtb2RlLgorICAgICAgICBpZiAocGFyYW1zXy52
aWRlb1t2aWRlb19pZHhdLmZwcyA+IDUpIHsKKyAgICAgICAgICB2cDlfc2V0dGluZ3MuZmxleGli
bGVNb2RlID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB2aWRlb19lbmNvZGVyX2NvbmZpZ3Nf
W3ZpZGVvX2lkeF0uZW5jb2Rlcl9zcGVjaWZpY19zZXR0aW5ncyA9CiAgICAgICAgICAgICBuZXcg
cnRjOjpSZWZDb3VudGVkT2JqZWN0PAogICAgICAgICAgICAgICAgIFZpZGVvRW5jb2RlckNvbmZp
Zzo6VnA5RW5jb2RlclNwZWNpZmljU2V0dGluZ3M+KHZwOV9zZXR0aW5ncyk7CkBAIC03ODMsNiAr
NzU1LDggQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpTZXR1cFRodW1ibmFpbHMoVHJhbnNwb3J0
KiBzZW5kX3RyYW5zcG9ydCwKICAgICAvLyBUT0RPKG5pc3NlKTogQ291bGQgdXNlIGEgc2ltcGxl
ciBWUDgtb25seSBlbmNvZGVyIGZhY3RvcnkuCiAgICAgdGh1bWJuYWlsX3NlbmRfY29uZmlnLmVu
Y29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0KICAgICAgICAgJnZpZGVvX2VuY29kZXJf
ZmFjdG9yeV87CisgICAgdGh1bWJuYWlsX3NlbmRfY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnlfLmdldCgpOwogICAgIHRodW1ibmFpbF9zZW5kX2NvbmZpZy5ydHAucGF5bG9hZF9u
YW1lID0gcGFyYW1zXy52aWRlb1swXS5jb2RlYzsKICAgICB0aHVtYm5haWxfc2VuZF9jb25maWcu
cnRwLnBheWxvYWRfdHlwZSA9IGtQYXlsb2FkVHlwZVZQODsKICAgICB0aHVtYm5haWxfc2VuZF9j
b25maWcucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgPSBrTmFja1J0cEhpc3RvcnlNczsKQEAgLTEw
NDMsNyArMTAxNyw2IEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6UnVuV2l0aEFuYWx5emVyKGNv
bnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjx0ZXN0OjpMYXllckZpbHRl
cmluZ1RyYW5zcG9ydD4gc2VuZF90cmFuc3BvcnQ7CiAgIHN0ZDo6dW5pcXVlX3B0cjx0ZXN0OjpE
aXJlY3RUcmFuc3BvcnQ+IHJlY3ZfdHJhbnNwb3J0OwogICBGSUxFKiBncmFwaF9kYXRhX291dHB1
dF9maWxlID0gbnVsbHB0cjsKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQW5hbHl6ZXI+IGFuYWx5
emVyOwogCiAgIHBhcmFtc18gPSBwYXJhbXM7CiAgIC8vIFRPRE8oaXZpY2EpOiBNZXJnZSB3aXRo
IFJ1bldpdGhSZW5kZXJlciBhbmQgdXNlIGEgZmxhZyAvIGFyZ3VtZW50IHRvCkBAIC0xMTAwLDcg
KzEwNzMsNyBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OlJ1bldpdGhBbmFseXplcihjb25zdCBQ
YXJhbXMmIHBhcmFtcykgewogICBpZiAoZ3JhcGhfdGl0bGUuZW1wdHkoKSkKICAgICBncmFwaF90
aXRsZSA9IFZpZGVvUXVhbGl0eVRlc3Q6OkdlbmVyYXRlR3JhcGhUaXRsZSgpOwogICBib29sIGlz
X3F1aWNrX3Rlc3RfZW5hYmxlZCA9IGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1RdWlj
a1BlcmZUZXN0Iik7Ci0gIGFuYWx5emVyID0gYWJzbDo6bWFrZV91bmlxdWU8VmlkZW9BbmFseXpl
cj4oCisgIGFuYWx5emVyXyA9IGFic2w6Om1ha2VfdW5pcXVlPFZpZGVvQW5hbHl6ZXI+KAogICAg
ICAgc2VuZF90cmFuc3BvcnQuZ2V0KCksIHBhcmFtc18uYW5hbHl6ZXIudGVzdF9sYWJlbCwKICAg
ICAgIHBhcmFtc18uYW5hbHl6ZXIuYXZnX3BzbnJfdGhyZXNob2xkLCBwYXJhbXNfLmFuYWx5emVy
LmF2Z19zc2ltX3RocmVzaG9sZCwKICAgICAgIGlzX3F1aWNrX3Rlc3RfZW5hYmxlZApAQCAtMTEx
NCwyNiArMTA4NywyMyBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OlJ1bldpdGhBbmFseXplcihj
b25zdCBQYXJhbXMmIHBhcmFtcykgewogICAgICAgaXNfcXVpY2tfdGVzdF9lbmFibGVkLCBjbG9j
a18sIHBhcmFtc18ubG9nZ2luZy5ydHBfZHVtcF9uYW1lKTsKIAogICB0YXNrX3F1ZXVlXy5TZW5k
VGFzayhbJl0oKSB7Ci0gICAgYW5hbHl6ZXItPlNldENhbGwoc2VuZGVyX2NhbGxfLmdldCgpKTsK
LSAgICBhbmFseXplci0+U2V0UmVjZWl2ZXIocmVjZWl2ZXJfY2FsbF8tPlJlY2VpdmVyKCkpOwot
ICAgIHNlbmRfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihhbmFseXplci5nZXQoKSk7CisgICAgYW5h
bHl6ZXJfLT5TZXRDYWxsKHNlbmRlcl9jYWxsXy5nZXQoKSk7CisgICAgYW5hbHl6ZXJfLT5TZXRS
ZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CisgICAgc2VuZF90cmFuc3BvcnQt
PlNldFJlY2VpdmVyKGFuYWx5emVyXy5nZXQoKSk7CiAgICAgcmVjdl90cmFuc3BvcnQtPlNldFJl
Y2VpdmVyKHNlbmRlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CiAKLSAgICBTZXR1cFZpZGVvKGFuYWx5
emVyLmdldCgpLCByZWN2X3RyYW5zcG9ydC5nZXQoKSk7Ci0gICAgU2V0dXBUaHVtYm5haWxzKGFu
YWx5emVyLmdldCgpLCByZWN2X3RyYW5zcG9ydC5nZXQoKSk7CisgICAgU2V0dXBWaWRlbyhhbmFs
eXplcl8uZ2V0KCksIHJlY3ZfdHJhbnNwb3J0LmdldCgpKTsKKyAgICBTZXR1cFRodW1ibmFpbHMo
YW5hbHl6ZXJfLmdldCgpLCByZWN2X3RyYW5zcG9ydC5nZXQoKSk7CiAgICAgdmlkZW9fcmVjZWl2
ZV9jb25maWdzX1twYXJhbXNfLnNzWzBdLnNlbGVjdGVkX3N0cmVhbV0ucmVuZGVyZXIgPQotICAg
ICAgICBhbmFseXplci5nZXQoKTsKLSAgICBHZXRWaWRlb1NlbmRDb25maWcoKS0+cHJlX2VuY29k
ZV9jYWxsYmFjayA9IGFuYWx5emVyLT5wcmVfZW5jb2RlX3Byb3h5KCk7Ci0gICAgUlRDX0RDSEVD
SyghR2V0VmlkZW9TZW5kQ29uZmlnKCktPnBvc3RfZW5jb2RlX2NhbGxiYWNrKTsKLSAgICBHZXRW
aWRlb1NlbmRDb25maWcoKS0+cG9zdF9lbmNvZGVfY2FsbGJhY2sgPSBhbmFseXplci5nZXQoKTsK
KyAgICAgICAgYW5hbHl6ZXJfLmdldCgpOwogCiAgICAgQ3JlYXRlRmxleGZlY1N0cmVhbXMoKTsK
ICAgICBDcmVhdGVWaWRlb1N0cmVhbXMoKTsKLSAgICBhbmFseXplci0+U2V0U2VuZFN0cmVhbSh2
aWRlb19zZW5kX3N0cmVhbXNfWzBdKTsKKyAgICBhbmFseXplcl8tPlNldFNlbmRTdHJlYW0odmlk
ZW9fc2VuZF9zdHJlYW1zX1swXSk7CiAgICAgaWYgKHZpZGVvX3JlY2VpdmVfc3RyZWFtc18uc2l6
ZSgpID09IDEpCi0gICAgICBhbmFseXplci0+U2V0UmVjZWl2ZVN0cmVhbSh2aWRlb19yZWNlaXZl
X3N0cmVhbXNfWzBdKTsKKyAgICAgIGFuYWx5emVyXy0+U2V0UmVjZWl2ZVN0cmVhbSh2aWRlb19y
ZWNlaXZlX3N0cmVhbXNfWzBdKTsKIAotICAgIEdldFZpZGVvU2VuZFN0cmVhbSgpLT5TZXRTb3Vy
Y2UoYW5hbHl6ZXItPk91dHB1dEludGVyZmFjZSgpLAorICAgIEdldFZpZGVvU2VuZFN0cmVhbSgp
LT5TZXRTb3VyY2UoYW5hbHl6ZXJfLT5PdXRwdXRJbnRlcmZhY2UoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2VfKTsKICAgICBTZXR1
cFRodW1ibmFpbENhcHR1cmVycyhwYXJhbXNfLmNhbGwubnVtX3RodW1ibmFpbHMpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdGh1bWJuYWlsX3NlbmRfc3RyZWFtc18uc2l6ZSgpOyArK2kp
IHsKQEAgLTExNDMsNyArMTExMyw4IEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6UnVuV2l0aEFu
YWx5emVyKGNvbnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAKICAgICBDcmVhdGVDYXB0dXJlcnMoKTsK
IAotICAgIGFuYWx5emVyLT5TZXRTb3VyY2UodmlkZW9fY2FwdHVyZXJzX1swXS5nZXQoKSwgcGFy
YW1zXy5zc1swXS5pbmZlcl9zdHJlYW1zKTsKKyAgICBhbmFseXplcl8tPlNldFNvdXJjZSh2aWRl
b19jYXB0dXJlcnNfWzBdLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc18u
c3NbMF0uaW5mZXJfc3RyZWFtcyk7CiAKICAgICBmb3IgKHNpemVfdCB2aWRlb19pZHggPSAxOyB2
aWRlb19pZHggPCBudW1fdmlkZW9fc3RyZWFtc187ICsrdmlkZW9faWR4KSB7CiAgICAgICB2aWRl
b19zZW5kX3N0cmVhbXNfW3ZpZGVvX2lkeF0tPlNldFNvdXJjZSgKQEAgLTExNTMsMTYgKzExMjQs
MTYgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpSdW5XaXRoQW5hbHl6ZXIoY29uc3QgUGFyYW1z
JiBwYXJhbXMpIHsKICAgICBpZiAocGFyYW1zXy5hdWRpby5lbmFibGVkKSB7CiAgICAgICBTZXR1
cEF1ZGlvKHNlbmRfdHJhbnNwb3J0LmdldCgpKTsKICAgICAgIFN0YXJ0QXVkaW9TdHJlYW1zKCk7
Ci0gICAgICBhbmFseXplci0+U2V0QXVkaW9SZWNlaXZlU3RyZWFtKGF1ZGlvX3JlY2VpdmVfc3Ry
ZWFtc19bMF0pOworICAgICAgYW5hbHl6ZXJfLT5TZXRBdWRpb1JlY2VpdmVTdHJlYW0oYXVkaW9f
cmVjZWl2ZV9zdHJlYW1zX1swXSk7CiAgICAgfQogICAgIFN0YXJ0VmlkZW9TdHJlYW1zKCk7CiAg
ICAgU3RhcnRUaHVtYm5haWxzKCk7Ci0gICAgYW5hbHl6ZXItPlN0YXJ0TWVhc3VyaW5nQ3B1UHJv
Y2Vzc1RpbWUoKTsKKyAgICBhbmFseXplcl8tPlN0YXJ0TWVhc3VyaW5nQ3B1UHJvY2Vzc1RpbWUo
KTsKICAgICBTdGFydFZpZGVvQ2FwdHVyZSgpOwogICAgIFN0YXJ0VGh1bWJuYWlsQ2FwdHVyZSgp
OwogICB9KTsKIAotICBhbmFseXplci0+V2FpdCgpOworICBhbmFseXplcl8tPldhaXQoKTsKIAog
ICB0YXNrX3F1ZXVlXy5TZW5kVGFzayhbJl0oKSB7CiAgICAgU3RvcFRodW1ibmFpbENhcHR1cmUo
KTsKQEAgLTExODEsNiArMTE1Miw3IEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6UnVuV2l0aEFu
YWx5emVyKGNvbnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAKICAgICBEZXN0cm95Q2FsbHMoKTsKICAg
fSk7CisgIGFuYWx5emVyXyA9IG51bGxwdHI7CiB9CiAKIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b0RldmljZU1vZHVsZT4gVmlkZW9RdWFsaXR5VGVzdDo6Q3JlYXRlQXVkaW9EZXZpY2UoKSB7CkBA
IC0xMjM5LDcgKzEyMTEsOCBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OkluaXRpYWxpemVBdWRp
b0RldmljZShDYWxsOjpDb25maWcqIHNlbmRfY2FsbF9jb25maWcsCiB9CiAKIHZvaWQgVmlkZW9R
dWFsaXR5VGVzdDo6U2V0dXBBdWRpbyhUcmFuc3BvcnQqIHRyYW5zcG9ydCkgewotICBBdWRpb1Nl
bmRTdHJlYW06OkNvbmZpZyBhdWRpb19zZW5kX2NvbmZpZyh0cmFuc3BvcnQpOworICBBdWRpb1Nl
bmRTdHJlYW06OkNvbmZpZyBhdWRpb19zZW5kX2NvbmZpZyh0cmFuc3BvcnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVs
bHB0cik7CiAgIGF1ZGlvX3NlbmRfY29uZmlnLnJ0cC5zc3JjID0ga0F1ZGlvU2VuZFNzcmM7CiAK
ICAgLy8gQWRkIGV4dGVuc2lvbiB0byBlbmFibGUgYXVkaW8gc2VuZCBzaWRlIEJXRSwgYW5kIGFs
bG93IGF1ZGlvIGJpdCByYXRlCkBAIC0xMjc4LDcgKzEyNTEsMjggQEAgdm9pZCBWaWRlb1F1YWxp
dHlUZXN0OjpSdW5XaXRoUmVuZGVyZXJzKGNvbnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAgIHN0ZDo6
dW5pcXVlX3B0cjx0ZXN0OjpEaXJlY3RUcmFuc3BvcnQ+IHJlY3ZfdHJhbnNwb3J0OwogICBzdGQ6
OnVuaXF1ZV9wdHI8dGVzdDo6VmlkZW9SZW5kZXJlcj4gbG9jYWxfcHJldmlldzsKICAgc3RkOjp2
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPHRlc3Q6OlZpZGVvUmVuZGVyZXI+PiBsb29wYmFja19yZW5k
ZXJlcnM7Ci0gIFJ0Y0V2ZW50TG9nTnVsbEltcGwgbnVsbF9ldmVudF9sb2c7CisKKyAgaWYgKCFw
YXJhbXMubG9nZ2luZy5ydGNfZXZlbnRfbG9nX25hbWUuZW1wdHkoKSkgeworICAgIHNlbmRfZXZl
bnRfbG9nXyA9IFJ0Y0V2ZW50TG9nOjpDcmVhdGUoUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6
TGVnYWN5KTsKKyAgICByZWN2X2V2ZW50X2xvZ18gPSBSdGNFdmVudExvZzo6Q3JlYXRlKFJ0Y0V2
ZW50TG9nOjpFbmNvZGluZ1R5cGU6OkxlZ2FjeSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2
ZW50TG9nT3V0cHV0RmlsZT4gc2VuZF9vdXRwdXQoCisgICAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PFJ0Y0V2ZW50TG9nT3V0cHV0RmlsZT4oCisgICAgICAgICAgICBwYXJhbXMubG9nZ2luZy5ydGNf
ZXZlbnRfbG9nX25hbWUgKyAiX3NlbmQiLAorICAgICAgICAgICAgUnRjRXZlbnRMb2c6OmtVbmxp
bWl0ZWRPdXRwdXQpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dPdXRwdXRGaWxl
PiByZWN2X291dHB1dCgKKyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dPdXRw
dXRGaWxlPigKKyAgICAgICAgICAgIHBhcmFtcy5sb2dnaW5nLnJ0Y19ldmVudF9sb2dfbmFtZSAr
ICJfcmVjdiIsCisgICAgICAgICAgICBSdGNFdmVudExvZzo6a1VubGltaXRlZE91dHB1dCkpOwor
ICAgIGJvb2wgZXZlbnRfbG9nX3N0YXJ0ZWQgPQorICAgICAgICBzZW5kX2V2ZW50X2xvZ18tPlN0
YXJ0TG9nZ2luZyhzdGQ6Om1vdmUoc2VuZF9vdXRwdXQpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKm91dHB1dF9wZXJpb2RfbXM9Ki81MDAwKSAmJgorICAgICAgICBy
ZWN2X2V2ZW50X2xvZ18tPlN0YXJ0TG9nZ2luZyhzdGQ6Om1vdmUocmVjdl9vdXRwdXQpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm91dHB1dF9wZXJpb2RfbXM9Ki81
MDAwKTsKKyAgICBSVENfRENIRUNLKGV2ZW50X2xvZ19zdGFydGVkKTsKKyAgfSBlbHNlIHsKKyAg
ICBzZW5kX2V2ZW50X2xvZ18gPSBSdGNFdmVudExvZzo6Q3JlYXRlTnVsbCgpOworICAgIHJlY3Zf
ZXZlbnRfbG9nXyA9IFJ0Y0V2ZW50TG9nOjpDcmVhdGVOdWxsKCk7CisgIH0KIAogICB0YXNrX3F1
ZXVlXy5TZW5kVGFzayhbJl0oKSB7CiAgICAgcGFyYW1zXyA9IHBhcmFtczsKQEAgLTEyODYsOSAr
MTI4MCw5IEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6UnVuV2l0aFJlbmRlcmVycyhjb25zdCBQ
YXJhbXMmIHBhcmFtcykgewogCiAgICAgLy8gVE9ETyhpdmljYSk6IFJlbW92ZSBiaXRyYXRlX2Nv
bmZpZyBhbmQgdXNlIHRoZSBkZWZhdWx0IENhbGw6OkNvbmZpZygpLCB0bwogICAgIC8vIG1hdGNo
IHRoZSBmdWxsIHN0YWNrIHRlc3RzLgotICAgIENhbGw6OkNvbmZpZyBzZW5kX2NhbGxfY29uZmln
KCZudWxsX2V2ZW50X2xvZyk7CisgICAgQ2FsbDo6Q29uZmlnIHNlbmRfY2FsbF9jb25maWcoc2Vu
ZF9ldmVudF9sb2dfLmdldCgpKTsKICAgICBzZW5kX2NhbGxfY29uZmlnLmJpdHJhdGVfY29uZmln
ID0gcGFyYW1zXy5jYWxsLmNhbGxfYml0cmF0ZV9jb25maWc7Ci0gICAgQ2FsbDo6Q29uZmlnIHJl
Y3ZfY2FsbF9jb25maWcoJm51bGxfZXZlbnRfbG9nKTsKKyAgICBDYWxsOjpDb25maWcgcmVjdl9j
YWxsX2NvbmZpZyhyZWN2X2V2ZW50X2xvZ18uZ2V0KCkpOwogCiAgICAgaWYgKHBhcmFtc18uYXVk
aW8uZW5hYmxlZCkKICAgICAgIEluaXRpYWxpemVBdWRpb0RldmljZSgKQEAgLTEzNjQsNyArMTM1
OCw3IEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6UnVuV2l0aFJlbmRlcmVycyhjb25zdCBQYXJh
bXMmIHBhcmFtcykgewogICAgIFN0YXJ0KCk7CiAgIH0pOwogCi0gIHRlc3Q6OlByZXNzRW50ZXJU
b0NvbnRpbnVlKCk7CisgIHRlc3Q6OlByZXNzRW50ZXJUb0NvbnRpbnVlKHRhc2tfcXVldWVfKTsK
IAogICB0YXNrX3F1ZXVlXy5TZW5kVGFzayhbJl0oKSB7CiAgICAgU3RvcCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9f
cXVhbGl0eV90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby92aWRlb19xdWFsaXR5X3Rlc3QuaAppbmRleCA3ZWM3ZThkYTdlNDRiNjI3ZmZiYTg3
MTEyNGEwMWM1NThkZTcyYzdiLi5mNjdlNjViYzEzNzk3NDI4YzBjYzdjYzYxY2E2NzhhNTI2ODcw
ZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby92aWRlb19xdWFsaXR5X3Rlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X3Rlc3QuaApAQCAtMTcsMTIg
KzE3LDE0IEBACiAKICNpbmNsdWRlICJhcGkvZmVjX2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJh
cGkvdGVzdC92aWRlb19xdWFsaXR5X3Rlc3RfZml4dHVyZS5oIgorI2luY2x1ZGUgImFwaS92aWRl
by92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtl
X25ldHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGRlY29kZXJm
YWN0b3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZW5jb2RlcmZhY3Rvcnku
aCIKICNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgogI2luY2x1ZGUgInRlc3QvZnJhbWVfZ2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSAidGVzdC9sYXllcl9maWx0ZXJpbmdfdHJhbnNwb3J0LmgiCisj
aW5jbHVkZSAidmlkZW8vdmlkZW9fYW5hbHl6ZXIuaCIKICNpZmRlZiBXRUJSVENfV0lOCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2Uvd2luL2NvcmVfYXVkaW9fdXRpbGl0eV93aW4uaCIK
ICNlbmRpZgpAQCAtNzUsOCArNzcsOCBAQCBjbGFzcyBWaWRlb1F1YWxpdHlUZXN0IDoKICAgdm9p
ZCBTZXR1cFRodW1ibmFpbENhcHR1cmVycyhzaXplX3QgbnVtX3RodW1ibmFpbF9zdHJlYW1zKTsK
ICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4gQ3JlYXRlVmlkZW9EZWNvZGVyKAogICAg
ICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b0VuY29kZXI+IENyZWF0ZVZpZGVvRW5jb2RlcigKLSAgICAgIGNvbnN0IFNkcFZpZGVvRm9ybWF0
JiBmb3JtYXQpOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBDcmVhdGVWaWRlb0Vu
Y29kZXIoY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvQW5hbHl6ZXIqIGFuYWx5emVyKTsK
ICAgdm9pZCBTZXR1cFZpZGVvKFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQsIFRyYW5zcG9ydCog
cmVjdl90cmFuc3BvcnQpOwogICB2b2lkIFNldHVwVGh1bWJuYWlscyhUcmFuc3BvcnQqIHNlbmRf
dHJhbnNwb3J0LCBUcmFuc3BvcnQqIHJlY3ZfdHJhbnNwb3J0KTsKICAgdm9pZCBTdGFydEF1ZGlv
U3RyZWFtcygpOwpAQCAtMTAzLDYgKzEwNSw5IEBAIGNsYXNzIFZpZGVvUXVhbGl0eVRlc3QgOgog
ICB0ZXN0OjpGdW5jdGlvblZpZGVvRGVjb2RlckZhY3RvcnkgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5
XzsKICAgSW50ZXJuYWxEZWNvZGVyRmFjdG9yeSBpbnRlcm5hbF9kZWNvZGVyX2ZhY3RvcnlfOwog
ICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
XzsKKyAgdGVzdDo6RnVuY3Rpb25WaWRlb0VuY29kZXJGYWN0b3J5IHZpZGVvX2VuY29kZXJfZmFj
dG9yeV93aXRoX2FuYWx5emVyXzsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9j
YXRvckZhY3Rvcnk+CisgICAgICB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XzsKICAg
SW50ZXJuYWxFbmNvZGVyRmFjdG9yeSBpbnRlcm5hbF9lbmNvZGVyX2ZhY3RvcnlfOwogICBzdGQ6
OnZlY3RvcjxWaWRlb1NlbmRTdHJlYW06OkNvbmZpZz4gdGh1bWJuYWlsX3NlbmRfY29uZmlnc187
CiAgIHN0ZDo6dmVjdG9yPFZpZGVvRW5jb2RlckNvbmZpZz4gdGh1bWJuYWlsX2VuY29kZXJfY29u
Zmlnc187CkBAIC0xMTYsNiArMTIxLDkgQEAgY2xhc3MgVmlkZW9RdWFsaXR5VGVzdCA6CiAgIFBh
cmFtcyBwYXJhbXNfOwogICBzdGQ6OnVuaXF1ZV9wdHI8SW5qZWN0aW9uQ29tcG9uZW50cz4gaW5q
ZWN0aW9uX2NvbXBvbmVudHNfOwogCisgIC8vIFNldCBub24tbnVsbCB3aGVuIHJ1bm5pbmcgd2l0
aCBhbmFseXplci4KKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQW5hbHl6ZXI+IGFuYWx5emVyXzsK
KwogICAvLyBOb3RlOiBub3Qgc2FtZSBhcyBzaW1pbGFybHkgbmFtZWQgbWVtYmVyIGluIENhbGxU
ZXN0LiBUaGlzIGlzIHRoZSBudW1iZXIgb2YKICAgLy8gc2VwYXJhdGUgc2VuZCBzdHJlYW1zLCB0
aGUgb25lIGluIENhbGxUZXN0IGlzIHRoZSBudW1iZXIgb2Ygc3Vic3RyZWFtcyBmb3IKICAgLy8g
YSBzaW5nbGUgc2VuZCBzdHJlYW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19yZWNlaXZlX3N0cmVhbS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3JlY2VpdmVf
c3RyZWFtLmNjCmluZGV4IDg2YjkzNjg2Y2E1Zjk3MzM5MjA0NTZkOWI3MTg5ZWIzODBmZTQ1ZDUu
LmJiYTMzYWEzNjNlOGE2OTVkYWM2Y2Y0NDgwY2JkYzQ3Nzc2MTUzMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3JlY2Vp
dmVfc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmNjCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5j
bHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJjYWxsL3J0cF9zdHJlYW1fcmVjZWl2ZXJfY29udHJvbGxlcl9pbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJjYWxsL3J0eF9yZWNlaXZlX3N0cmVhbS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQv
cHJvZmlsZV9sZXZlbF9pZC5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL2luY29t
aW5nX3ZpZGVvX3N0cmVhbS5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVk
ZS93ZWJydGNfbGlieXV2LmgiCkBAIC0zNSwxMCArMzQsMTMgQEAKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3RyYWNlX2V2ZW50LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
Y2xvY2suaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5o
IgogI2luY2x1ZGUgInZpZGVvL2NhbGxfc3RhdHMuaCIKKyNpbmNsdWRlICJ2aWRlby9mcmFtZV9k
dW1waW5nX2RlY29kZXIuaCIKICNpbmNsdWRlICJ2aWRlby9yZWNlaXZlX3N0YXRpc3RpY3NfcHJv
eHkuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0xMDcsNiArMTA5LDExIEBAIGNsYXNzIE51
bGxWaWRlb0RlY29kZXIgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0RlY29kZXIgewogICBjb25zdCBj
aGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiTnVsbFZp
ZGVvRGVjb2RlciI7IH0KIH07CiAKKy8vIFRPRE8oaHR0cHM6Ly9idWdzLndlYnJ0Yy5vcmcvOTk3
NCk6IENvbnNpZGVyIHJlbW92aW5nIHRoaXMgd29ya2Fyb3VuZC4KKy8vIE1heGltdW0gdGltZSBi
ZXR3ZWVuIGZyYW1lcyBiZWZvcmUgcmVzZXR0aW5nIHRoZSBGcmFtZUJ1ZmZlciB0byBhdm9pZCBS
VFAKKy8vIHRpbWVzdGFtcHMgd3JhcGFyb3VuZCB0byBhZmZlY3QgRnJhbWVCdWZmZXIuCitjb25z
dGV4cHIgaW50IGtJbmFjdGl2ZVN0cmVhbVRocmVzaG9sZE1zID0gNjAwMDAwOyAgLy8gIDEwIG1p
bnV0ZXMuCisKIH0gIC8vIG5hbWVzcGFjZQogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtMTI4
LDEwICsxMzUsMTEgQEAgVmlkZW9SZWNlaXZlU3RyZWFtOjpWaWRlb1JlY2VpdmVTdHJlYW0oCiAg
ICAgICAgICAgICAgICAgICAgICAiRGVjb2RpbmdUaHJlYWQiLAogICAgICAgICAgICAgICAgICAg
ICAgcnRjOjprSGlnaGVzdFByaW9yaXR5KSwKICAgICAgIGNhbGxfc3RhdHNfKGNhbGxfc3RhdHMp
LAotICAgICAgcnRwX3JlY2VpdmVfc3RhdGlzdGljc18oUmVjZWl2ZVN0YXRpc3RpY3M6OkNyZWF0
ZShjbG9ja18pKSwKLSAgICAgIHRpbWluZ18obmV3IFZDTVRpbWluZyhjbG9ja18pKSwKLSAgICAg
IHZpZGVvX3JlY2VpdmVyXyhjbG9ja18sIG51bGxwdHIsIHRpbWluZ18uZ2V0KCksIHRoaXMsIHRo
aXMpLAogICAgICAgc3RhdHNfcHJveHlfKCZjb25maWdfLCBjbG9ja18pLAorICAgICAgcnRwX3Jl
Y2VpdmVfc3RhdGlzdGljc18oCisgICAgICAgICAgUmVjZWl2ZVN0YXRpc3RpY3M6OkNyZWF0ZShj
bG9ja18sICZzdGF0c19wcm94eV8sICZzdGF0c19wcm94eV8pKSwKKyAgICAgIHRpbWluZ18obmV3
IFZDTVRpbWluZyhjbG9ja18pKSwKKyAgICAgIHZpZGVvX3JlY2VpdmVyXyhjbG9ja18sIHRpbWlu
Z18uZ2V0KCksIHRoaXMsIHRoaXMpLAogICAgICAgcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlcl8o
JnRyYW5zcG9ydF9hZGFwdGVyXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGxfc3RhdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfcm91dGVy
LApAQCAtMTM5LDkgKzE0NywxMCBAQCBWaWRlb1JlY2VpdmVTdHJlYW06OlZpZGVvUmVjZWl2ZVN0
cmVhbSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF9yZWNlaXZlX3N0YXRp
c3RpY3NfLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXRzX3By
b3h5XywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfdGhyZWFkXywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsICAgLy8gTmFja1NlbmRlcgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgICAvLyBLZXlGcmFtZVJlcXVl
c3RTZW5kZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMpLCAgLy8gT25D
b21wbGV0ZUZyYW1lQ2FsbGJhY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMsICAvLyBOYWNrU2VuZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LCAgLy8gS2V5RnJhbWVSZXF1ZXN0U2VuZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLCAgLy8gT25Db21wbGV0ZUZyYW1lQ2FsbGJhY2sKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbmZpZ18uZnJhbWVfZGVjcnlwdG9yKSwKICAgICAgIHJ0cF9zdHJl
YW1fc3luY18odGhpcykgewogICBSVENfTE9HKExTX0lORk8pIDw8ICJWaWRlb1JlY2VpdmVTdHJl
YW06ICIgPDwgY29uZmlnXy5Ub1N0cmluZygpOwogCkBAIC0yNDUsNiArMjU0LDE4IEBAIHZvaWQg
VmlkZW9SZWNlaXZlU3RyZWFtOjpTdGFydCgpIHsKICAgICBpZiAoIXZpZGVvX2RlY29kZXIpIHsK
ICAgICAgIHZpZGVvX2RlY29kZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxOdWxsVmlkZW9EZWNvZGVy
PigpOwogICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIGRlY29kZWRfb3V0cHV0X2ZpbGUgPQorICAg
ICAgICBmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJXZWJSVEMtRGVjb2RlckRhdGFEdW1wRGly
ZWN0b3J5Iik7CisgICAgaWYgKCFkZWNvZGVkX291dHB1dF9maWxlLmVtcHR5KCkpIHsKKyAgICAg
IGNoYXIgZmlsZW5hbWVfYnVmZmVyWzI1Nl07CisgICAgICBydGM6OlNpbXBsZVN0cmluZ0J1aWxk
ZXIgc3NiKGZpbGVuYW1lX2J1ZmZlcik7CisgICAgICBzc2IgPDwgZGVjb2RlZF9vdXRwdXRfZmls
ZSA8PCAiL3dlYnJ0Y19yZWNlaXZlX3N0cmVhbV8iCisgICAgICAgICAgPDwgdGhpcy0+Y29uZmln
Xy5ydHAubG9jYWxfc3NyYyA8PCAiLml2ZiI7CisgICAgICB2aWRlb19kZWNvZGVyID0gYWJzbDo6
bWFrZV91bmlxdWU8RnJhbWVEdW1waW5nRGVjb2Rlcj4oCisgICAgICAgICAgc3RkOjptb3ZlKHZp
ZGVvX2RlY29kZXIpLCBydGM6OkNyZWF0ZVBsYXRmb3JtRmlsZShzc2Iuc3RyKCkpKTsKKyAgICB9
CisKICAgICB2aWRlb19kZWNvZGVyc18ucHVzaF9iYWNrKHN0ZDo6bW92ZSh2aWRlb19kZWNvZGVy
KSk7CiAKICAgICB2aWRlb19yZWNlaXZlcl8uUmVnaXN0ZXJFeHRlcm5hbERlY29kZXIodmlkZW9f
ZGVjb2RlcnNfLmJhY2soKS5nZXQoKSwKQEAgLTM1Nyw2ICszNzgsMTQgQEAgdm9pZCBWaWRlb1Jl
Y2VpdmVTdHJlYW06Ok9uQ29tcGxldGVGcmFtZSgKICAgLy8gcGFydGlhbGx5IGVuYWJsZWQgaW50
ZXItbGF5ZXIgcHJlZGljdGlvbi4KICAgZnJhbWUtPmlkLnNwYXRpYWxfbGF5ZXIgPSAwOwogCisg
IC8vIFRPRE8oaHR0cHM6Ly9idWdzLndlYnJ0Yy5vcmcvOTk3NCk6IENvbnNpZGVyIHJlbW92aW5n
IHRoaXMgd29ya2Fyb3VuZC4KKyAgaW50NjRfdCB0aW1lX25vd19tcyA9IHJ0Yzo6VGltZU1pbGxp
cygpOworICBpZiAobGFzdF9jb21wbGV0ZV9mcmFtZV90aW1lX21zXyA+IDAgJiYKKyAgICAgIHRp
bWVfbm93X21zIC0gbGFzdF9jb21wbGV0ZV9mcmFtZV90aW1lX21zXyA+IGtJbmFjdGl2ZVN0cmVh
bVRocmVzaG9sZE1zKSB7CisgICAgZnJhbWVfYnVmZmVyXy0+Q2xlYXIoKTsKKyAgfQorICBsYXN0
X2NvbXBsZXRlX2ZyYW1lX3RpbWVfbXNfID0gdGltZV9ub3dfbXM7CisKICAgaW50NjRfdCBsYXN0
X2NvbnRpbnVvdXNfcGlkID0gZnJhbWVfYnVmZmVyXy0+SW5zZXJ0RnJhbWUoc3RkOjptb3ZlKGZy
YW1lKSk7CiAgIGlmIChsYXN0X2NvbnRpbnVvdXNfcGlkICE9IC0xKQogICAgIHJ0cF92aWRlb19z
dHJlYW1fcmVjZWl2ZXJfLkZyYW1lQ29udGludW91cyhsYXN0X2NvbnRpbnVvdXNfcGlkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby92aWRlb19yZWNlaXZlX3N0cmVhbS5oCmluZGV4IGFlNWNlZDUxYzNi
N2IxOWZlYTE4NDMyNmIwOTEyZGY5N2FiYTA4OGUuLjVjOWZkODNjNjJhOWVkMTE1M2JiMjBlNTEw
OGQ0ZWIzYjNiMmJhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJl
YW0uaApAQCAtMTcsNyArMTcsNiBAQAogI2luY2x1ZGUgImNhbGwvcnRwX3BhY2tldF9zaW5rX2lu
dGVyZmFjZS5oIgogI2luY2x1ZGUgImNhbGwvc3luY2FibGUuaCIKICNpbmNsdWRlICJjYWxsL3Zp
ZGVvX3JlY2VpdmVfc3RyZWFtLmgiCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNs
dWRlL3dlYnJ0Y19saWJ5dXYuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUv
ZmxleGZlY19yZWNlaXZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1l
X2J1ZmZlcjIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2Rpbmdf
aW1wbC5oIgpAQCAtMTE1LDYgKzExNCw3IEBAIGNsYXNzIFZpZGVvUmVjZWl2ZVN0cmVhbSA6IHB1
YmxpYyB3ZWJydGM6OlZpZGVvUmVjZWl2ZVN0cmVhbSwKIAogICBDYWxsU3RhdHMqIGNvbnN0IGNh
bGxfc3RhdHNfOwogCisgIFJlY2VpdmVTdGF0aXN0aWNzUHJveHkgc3RhdHNfcHJveHlfOwogICAv
LyBTaGFyZWQgYnkgbWVkaWEgYW5kIHJ0eCBzdHJlYW0gcmVjZWl2ZXJzLCBzaW5jZSB0aGUgbGF0
dGVyIGhhcyBubyBSdHBSdGNwCiAgIC8vIG1vZHVsZSBvZiBpdHMgb3duLgogICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8UmVjZWl2ZVN0YXRpc3RpY3M+IHJ0cF9yZWNlaXZlX3N0YXRpc3RpY3NfOwpA
QCAtMTIyLDcgKzEyMiw2IEBAIGNsYXNzIFZpZGVvUmVjZWl2ZVN0cmVhbSA6IHB1YmxpYyB3ZWJy
dGM6OlZpZGVvUmVjZWl2ZVN0cmVhbSwKICAgc3RkOjp1bmlxdWVfcHRyPFZDTVRpbWluZz4gdGlt
aW5nXzsgIC8vIEppdHRlciBidWZmZXIgZXhwZXJpbWVudC4KICAgdmNtOjpWaWRlb1JlY2VpdmVy
IHZpZGVvX3JlY2VpdmVyXzsKICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VmlkZW9TaW5rSW50ZXJm
YWNlPFZpZGVvRnJhbWU+PiBpbmNvbWluZ192aWRlb19zdHJlYW1fOwotICBSZWNlaXZlU3RhdGlz
dGljc1Byb3h5IHN0YXRzX3Byb3h5XzsKICAgUnRwVmlkZW9TdHJlYW1SZWNlaXZlciBydHBfdmlk
ZW9fc3RyZWFtX3JlY2VpdmVyXzsKICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU3RyZWFtRGVjb2Rl
cj4gdmlkZW9fc3RyZWFtX2RlY29kZXJfOwogICBSdHBTdHJlYW1zU3luY2hyb25pemVyIHJ0cF9z
dHJlYW1fc3luY187CkBAIC0xNDcsNiArMTQ2LDcgQEAgY2xhc3MgVmlkZW9SZWNlaXZlU3RyZWFt
IDogcHVibGljIHdlYnJ0Yzo6VmlkZW9SZWNlaXZlU3RyZWFtLAogICBib29sIGZyYW1lX2RlY29k
ZWRfID0gZmFsc2U7CiAKICAgaW50NjRfdCBsYXN0X2tleWZyYW1lX3JlcXVlc3RfbXNfID0gMDsK
KyAgaW50NjRfdCBsYXN0X2NvbXBsZXRlX2ZyYW1lX3RpbWVfbXNfID0gMDsKIH07CiB9ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3JlY2Vp
dmVfc3RyZWFtX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW1fdW5pdHRlc3QuY2MKaW5kZXggZTRi
YTY5YjdiOTJiZTRiZWYwNzdkY2I2YzliMjRjN2FjZWYwZjY3YS4uMGVjOWUxNzczMzg0ZDNlNzJi
NjYxY2U0NjhhZTU3OTRkNTZhNzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW1fdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
dmlkZW9fcmVjZWl2ZV9zdHJlYW1fdW5pdHRlc3QuY2MKQEAgLTExOCw3ICsxMTgsNyBAQCBURVNU
X0YoVmlkZW9SZWNlaXZlU3RyZWFtVGVzdCwgQ3JlYXRlRnJhbWVGcm9tSDI2NEZtdHBTcHJvcEFu
ZElkcikgewogICBydHBwYWNrZXQuU2V0UGF5bG9hZFR5cGUoOTkpOwogICBydHBwYWNrZXQuU2V0
U2VxdWVuY2VOdW1iZXIoMSk7CiAgIHJ0cHBhY2tldC5TZXRUaW1lc3RhbXAoMCk7Ci0gIHJ0Yzo6
RXZlbnQgaW5pdF9kZWNvZGVfZXZlbnRfKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgaW5p
dF9kZWNvZGVfZXZlbnRfOwogICBFWFBFQ1RfQ0FMTChtb2NrX2gyNjRfdmlkZW9fZGVjb2Rlcl8s
IEluaXREZWNvZGUoXywgXykpCiAgICAgICAuV2lsbE9uY2UoSW52b2tlKFsmaW5pdF9kZWNvZGVf
ZXZlbnRfXShjb25zdCBWaWRlb0NvZGVjKiBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IG51bWJlcl9vZl9jb3JlcykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlk
ZW9fc2VuZF9zdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbS5jYwppbmRleCAwNTRkMjdlNDIxYzAwMTc5ZDJj
ZmFkOTZjZjAxOGEyYThjZmExMWNlLi4wNTlhNjE1MGFmOWI5Y2UzZWQ0Zjg3OWFjNGM5N2FiZjQx
MjIzYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbS5jYwpAQCAtMTUs
MTIgKzE1LDE1IEBACiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRl
cl9leHRlbnNpb25fc2l6ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9zZW5kZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJ2aWRlby92aWRl
b19zZW5kX3N0cmVhbV9pbXBsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBuYW1lc3BhY2Ug
ewogCitjb25zdGV4cHIgY2hhciBrVGFyZ2V0Qml0cmF0ZVJ0Y3BGaWVsZFRyaWFsW10gPSAiV2Vi
UlRDLVRhcmdldC1CaXRyYXRlLVJ0Y3AiOworCiBzaXplX3QgQ2FsY3VsYXRlTWF4SGVhZGVyU2l6
ZShjb25zdCBSdHBDb25maWcmIGNvbmZpZykgewogICBzaXplX3QgaGVhZGVyX3NpemUgPSBrUnRw
SGVhZGVyU2l6ZTsKICAgc2l6ZV90IGV4dGVuc2lvbnNfc2l6ZSA9IDA7CkBAIC02Miw3ICs2NSw3
IEBAIFZpZGVvU2VuZFN0cmVhbTo6VmlkZW9TZW5kU3RyZWFtKAogICAgIHJ0Yzo6VGFza1F1ZXVl
KiB3b3JrZXJfcXVldWUsCiAgICAgQ2FsbFN0YXRzKiBjYWxsX3N0YXRzLAogICAgIFJ0cFRyYW5z
cG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAgQml0cmF0ZUFsbG9j
YXRvciogYml0cmF0ZV9hbGxvY2F0b3IsCisgICAgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSog
Yml0cmF0ZV9hbGxvY2F0b3IsCiAgICAgU2VuZERlbGF5U3RhdHMqIHNlbmRfZGVsYXlfc3RhdHMs
CiAgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKICAgICBWaWRlb1NlbmRTdHJlYW06OkNvbmZp
ZyBjb25maWcsCkBAIC03MSwxMyArNzQsMTMgQEAgVmlkZW9TZW5kU3RyZWFtOjpWaWRlb1NlbmRT
dHJlYW0oCiAgICAgY29uc3Qgc3RkOjptYXA8dWludDMyX3QsIFJ0cFBheWxvYWRTdGF0ZT4mIHN1
c3BlbmRlZF9wYXlsb2FkX3N0YXRlcywKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxl
cj4gZmVjX2NvbnRyb2xsZXIpCiAgICAgOiB3b3JrZXJfcXVldWVfKHdvcmtlcl9xdWV1ZSksCi0g
ICAgICB0aHJlYWRfc3luY19ldmVudF8oZmFsc2UgLyogbWFudWFsX3Jlc2V0ICovLCBmYWxzZSks
CiAgICAgICBzdGF0c19wcm94eV8oQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKICAgICAgICAg
ICAgICAgICAgICBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgZW5jb2Rlcl9jb25maWcuY29u
dGVudF90eXBlKSwKICAgICAgIGNvbmZpZ18oc3RkOjptb3ZlKGNvbmZpZykpLAogICAgICAgY29u
dGVudF90eXBlXyhlbmNvZGVyX2NvbmZpZy5jb250ZW50X3R5cGUpIHsKICAgUlRDX0RDSEVDSyhj
b25maWdfLmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5KTsKKyAgUlRDX0RDSEVDSyhj
b25maWdfLmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSk7CiAKICAg
dmlkZW9fc3RyZWFtX2VuY29kZXJfID0gQ3JlYXRlVmlkZW9TdHJlYW1FbmNvZGVyKG51bV9jcHVf
Y29yZXMsICZzdGF0c19wcm94eV8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25maWdfLmVuY29kZXJfc2V0dGluZ3MsCkBAIC0xMDQsOSArMTA3
LDEwIEBAIFZpZGVvU2VuZFN0cmVhbTo6VmlkZW9TZW5kU3RyZWFtKAogICAvLyBpdCB3YXMgY3Jl
YXRlZCBvbi4KICAgdGhyZWFkX3N5bmNfZXZlbnRfLldhaXQocnRjOjpFdmVudDo6a0ZvcmV2ZXIp
OwogICBzZW5kX3N0cmVhbV8tPlJlZ2lzdGVyUHJvY2Vzc1RocmVhZChtb2R1bGVfcHJvY2Vzc190
aHJlYWQpOwotICAvLyBUT0RPKHNwcmFuZyk6IEVuYWJsZSB0aGlzIGFsc28gZm9yIHJlZ3VsYXIg
dmlkZW8gY2FsbHMgaWYgaXQgd29ya3Mgd2VsbC4KLSAgaWYgKGVuY29kZXJfY29uZmlnLmNvbnRl
bnRfdHlwZSA9PSBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprU2NyZWVuKSB7Ci0g
ICAgLy8gT25seSBzaWduYWwgdGFyZ2V0IGJpdHJhdGUgZm9yIHNjcmVlbnNoYXJlIHN0cmVhbXMs
IGZvciBub3cuCisgIC8vIFRPRE8oc3ByYW5nKTogRW5hYmxlIHRoaXMgYWxzbyBmb3IgcmVndWxh
ciB2aWRlbyBjYWxscyBieSBkZWZhdWx0LCBpZiBpdAorICAvLyB3b3JrcyB3ZWxsLgorICBpZiAo
ZW5jb2Rlcl9jb25maWcuY29udGVudF90eXBlID09IFZpZGVvRW5jb2RlckNvbmZpZzo6Q29udGVu
dFR5cGU6OmtTY3JlZW4gfHwKKyAgICAgIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa1RhcmdldEJp
dHJhdGVSdGNwRmllbGRUcmlhbCkpIHsKICAgICB2aWRlb19zdHJlYW1fZW5jb2Rlcl8tPlNldEJp
dHJhdGVBbGxvY2F0aW9uT2JzZXJ2ZXIoc2VuZF9zdHJlYW1fLmdldCgpKTsKICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92
aWRlb19zZW5kX3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW0uaAppbmRleCAwOTQ1MjAzZGYzMWI1YTU3OTgx
OWExYjFkNWJiMzI1MmI1NzU3N2RkLi4yMmFhNGIxYzZkNWRiZDM2Mjc1ZWZhN2E2MWFmOTUxODFk
NjM4YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmgKQEAgLTIwLDcg
KzIwLDYgQEAKICNpbmNsdWRlICJjYWxsL2JpdHJhdGVfYWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
Y2FsbC92aWRlb19yZWNlaXZlX3N0cmVhbS5oIgogI2luY2x1ZGUgImNhbGwvdmlkZW9fc2VuZF9z
dHJlYW0uaCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vbGlieXV2L2luY2x1ZGUvd2VicnRjX2xp
Ynl1di5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgpAQCAt
NjAsNyArNTksNyBAQCBjbGFzcyBWaWRlb1NlbmRTdHJlYW0gOiBwdWJsaWMgd2VicnRjOjpWaWRl
b1NlbmRTdHJlYW0gewogICAgICAgcnRjOjpUYXNrUXVldWUqIHdvcmtlcl9xdWV1ZSwKICAgICAg
IENhbGxTdGF0cyogY2FsbF9zdGF0cywKICAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5k
SW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAgICBCaXRyYXRlQWxsb2NhdG9yKiBiaXRyYXRlX2Fs
bG9jYXRvciwKKyAgICAgIEJpdHJhdGVBbGxvY2F0b3JJbnRlcmZhY2UqIGJpdHJhdGVfYWxsb2Nh
dG9yLAogICAgICAgU2VuZERlbGF5U3RhdHMqIHNlbmRfZGVsYXlfc3RhdHMsCiAgICAgICBSdGNF
dmVudExvZyogZXZlbnRfbG9nLAogICAgICAgVmlkZW9TZW5kU3RyZWFtOjpDb25maWcgY29uZmln
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX2ltcGwuY2MKaW5kZXgg
NThjYWY0Nzc3NDYyZDc1OTVjYTAwYWY2YzNmNThhMGU5NzQxNDU3Yi4uNWRjZjE4MjQzZDVmODc2
ZjAxMjA2NzUwNDY0YjE5N2ZiM2MyZDE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRl
b19zZW5kX3N0cmVhbV9pbXBsLmNjCkBAIC0xMTEsNiArMTExLDE0IEBAIGludCBDYWxjdWxhdGVN
YXhQYWRCaXRyYXRlQnBzKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiYgc3RyZWFtcywK
ICAgcmV0dXJuIHBhZF91cF90b19iaXRyYXRlX2JwczsKIH0KIAorUnRwU2VuZGVyRnJhbWVFbmNy
eXB0aW9uQ29uZmlnIENyZWF0ZUZyYW1lRW5jcnlwdGlvbkNvbmZpZygKKyAgICBjb25zdCBWaWRl
b1NlbmRTdHJlYW06OkNvbmZpZyogY29uZmlnKSB7CisgIFJ0cFNlbmRlckZyYW1lRW5jcnlwdGlv
bkNvbmZpZyBmcmFtZV9lbmNyeXB0aW9uX2NvbmZpZzsKKyAgZnJhbWVfZW5jcnlwdGlvbl9jb25m
aWcuZnJhbWVfZW5jcnlwdG9yID0gY29uZmlnLT5mcmFtZV9lbmNyeXB0b3I7CisgIGZyYW1lX2Vu
Y3J5cHRpb25fY29uZmlnLmNyeXB0b19vcHRpb25zID0gY29uZmlnLT5jcnlwdG9fb3B0aW9uczsK
KyAgcmV0dXJuIGZyYW1lX2VuY3J5cHRpb25fY29uZmlnOworfQorCiBSdHBTZW5kZXJPYnNlcnZl
cnMgQ3JlYXRlT2JzZXJ2ZXJzKENhbGxTdGF0cyogY2FsbF9zdGF0cywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRW5jb2RlclJ0Y3BGZWVkYmFjayogZW5jb2Rlcl9mZWVkYmFj
aywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZFN0YXRpc3RpY3NQcm94
eSogc3RhdHNfcHJveHksCkBAIC0xNTEsNiArMTU5LDE2IEBAIGJvb2wgU2FtZVN0cmVhbXNFbmFi
bGVkKGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGxocywKIH0KIH0gIC8vIG5hbWVzcGFj
ZQogCitQYWNpbmdDb25maWc6OlBhY2luZ0NvbmZpZygpCisgICAgOiBwYWNpbmdfZmFjdG9yKCJm
YWN0b3IiLCBQYWNlZFNlbmRlcjo6a0RlZmF1bHRQYWNlTXVsdGlwbGllciksCisgICAgICBtYXhf
cGFjaW5nX2RlbGF5KCJtYXhfZGVsYXkiLAorICAgICAgICAgICAgICAgICAgICAgICBUaW1lRGVs
dGE6Om1zKFBhY2VkU2VuZGVyOjprTWF4UXVldWVMZW5ndGhNcykpIHsKKyAgUGFyc2VGaWVsZFRy
aWFsKHsmcGFjaW5nX2ZhY3RvciwgJm1heF9wYWNpbmdfZGVsYXl9LAorICAgICAgICAgICAgICAg
ICAgZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZSgiV2ViUlRDLVZpZGVvLVBhY2luZyIpKTsKK30K
K1BhY2luZ0NvbmZpZzo6UGFjaW5nQ29uZmlnKGNvbnN0IFBhY2luZ0NvbmZpZyYpID0gZGVmYXVs
dDsKK1BhY2luZ0NvbmZpZzo6flBhY2luZ0NvbmZpZygpID0gZGVmYXVsdDsKKwogLy8gQ2hlY2tF
bmNvZGVyQWN0aXZpdHlUYXNrIGlzIHVzZWQgZm9yIHRyYWNraW5nIHdoZW4gdGhlIGVuY29kZXIg
bGFzdCBwcm9kdWNlZAogLy8gYW5kIGVuY29kZWQgdmlkZW8gZnJhbWUuIElmIHRoZSBlbmNvZGVy
IGhhcyBub3QgcHJvZHVjZWQgYW55dGhpbmcgdGhlIGxhc3QKIC8vIGtFbmNvZGVyVGltZU91dE1z
IHdlIGFsc28gd2FudCB0byBzdG9wIHNlbmRpbmcgcGFkZGluZy4KQEAgLTIyMSw2ICsyMzksNyBA
QCBWaWRlb1NlbmRTdHJlYW1JbXBsOjpWaWRlb1NlbmRTdHJlYW1JbXBsKAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNfY29udHJvbGxlcikKICAgICA6IGhhc19hbHJfcHJv
YmluZ18oY29uZmlnLT5wZXJpb2RpY19hbHJfYmFuZHdpZHRoX3Byb2JpbmcgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgR2V0QWxyU2V0dGluZ3MoY29udGVudF90eXBlKSksCisgICAgICBwYWNp
bmdfY29uZmlnXyhQYWNpbmdDb25maWcoKSksCiAgICAgICBzdGF0c19wcm94eV8oc3RhdHNfcHJv
eHkpLAogICAgICAgY29uZmlnXyhjb25maWcpLAogICAgICAgd29ya2VyX3F1ZXVlXyh3b3JrZXJf
cXVldWUpLApAQCAtMjM4LDE5ICsyNTcsMjAgQEAgVmlkZW9TZW5kU3RyZWFtSW1wbDo6VmlkZW9T
ZW5kU3RyZWFtSW1wbCgKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18tPnJ0cC5zc3Jj
cywKICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvX3N0cmVhbV9lbmNvZGVyKSwKICAgICAg
IGJhbmR3aWR0aF9vYnNlcnZlcl8odHJhbnNwb3J0LT5HZXRCYW5kd2lkdGhPYnNlcnZlcigpKSwK
LSAgICAgIHJ0cF92aWRlb19zZW5kZXJfKAotICAgICAgICAgIHRyYW5zcG9ydF8tPkNyZWF0ZVJ0
cFZpZGVvU2VuZGVyKGNvbmZpZ18tPnJ0cC5zc3JjcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdXNwZW5kZWRfc3NyY3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3VzcGVuZGVkX3BheWxvYWRfc3RhdGVzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18tPnJ0cCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfLT5ydGNwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18tPnNlbmRfdHJh
bnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0
ZU9ic2VydmVycyhjYWxsX3N0YXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jb2Rlcl9mZWVkYmFja18sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzX3By
b3h5XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VuZF9kZWxheV9zdGF0cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnRfbG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bW92ZShmZWNfY29udHJvbGxlcikpKSwKKyAgICAgIHJ0cF92aWRl
b19zZW5kZXJfKHRyYW5zcG9ydF8tPkNyZWF0ZVJ0cFZpZGVvU2VuZGVyKAorICAgICAgICAgIGNv
bmZpZ18tPnJ0cC5zc3JjcywKKyAgICAgICAgICBzdXNwZW5kZWRfc3NyY3MsCisgICAgICAgICAg
c3VzcGVuZGVkX3BheWxvYWRfc3RhdGVzLAorICAgICAgICAgIGNvbmZpZ18tPnJ0cCwKKyAgICAg
ICAgICBjb25maWdfLT5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcywKKyAgICAgICAgICBjb25maWdf
LT5zZW5kX3RyYW5zcG9ydCwKKyAgICAgICAgICBDcmVhdGVPYnNlcnZlcnMoY2FsbF9zdGF0cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgJmVuY29kZXJfZmVlZGJhY2tfLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0c19wcm94eV8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbmRfZGVsYXlfc3RhdHMpLAorICAgICAgICAgIGV2ZW50X2xvZywKKyAgICAgICAgICBzdGQ6
Om1vdmUoZmVjX2NvbnRyb2xsZXIpLAorICAgICAgICAgIENyZWF0ZUZyYW1lRW5jcnlwdGlvbkNv
bmZpZyhjb25maWdfKSkpLAogICAgICAgd2Vha19wdHJfZmFjdG9yeV8odGhpcykgewogICBSVENf
RENIRUNLX1JVTl9PTih3b3JrZXJfcXVldWVfKTsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiVmlk
ZW9TZW5kU3RyZWFtSW50ZXJuYWw6ICIgPDwgY29uZmlnXy0+VG9TdHJpbmcoKTsKQEAgLTI5Myw5
ICszMTMsOSBAQCBWaWRlb1NlbmRTdHJlYW1JbXBsOjpWaWRlb1NlbmRTdHJlYW1JbXBsKAogICAg
ICAgdHJhbnNwb3J0LT5TZXRRdWV1ZVRpbWVMaW1pdChhbHJfc2V0dGluZ3MtPm1heF9wYWNlZF9x
dWV1ZV90aW1lKTsKICAgICB9IGVsc2UgewogICAgICAgdHJhbnNwb3J0LT5FbmFibGVQZXJpb2Rp
Y0FsclByb2JpbmcoZmFsc2UpOwotICAgICAgdHJhbnNwb3J0LT5TZXRQYWNpbmdGYWN0b3IoUGFj
ZWRTZW5kZXI6OmtEZWZhdWx0UGFjZU11bHRpcGxpZXIpOwotICAgICAgY29uZmlndXJlZF9wYWNp
bmdfZmFjdG9yXyA9IFBhY2VkU2VuZGVyOjprRGVmYXVsdFBhY2VNdWx0aXBsaWVyOwotICAgICAg
dHJhbnNwb3J0LT5TZXRRdWV1ZVRpbWVMaW1pdChQYWNlZFNlbmRlcjo6a01heFF1ZXVlTGVuZ3Ro
TXMpOworICAgICAgdHJhbnNwb3J0LT5TZXRQYWNpbmdGYWN0b3IocGFjaW5nX2NvbmZpZ18ucGFj
aW5nX2ZhY3Rvcik7CisgICAgICBjb25maWd1cmVkX3BhY2luZ19mYWN0b3JfID0gcGFjaW5nX2Nv
bmZpZ18ucGFjaW5nX2ZhY3RvcjsKKyAgICAgIHRyYW5zcG9ydC0+U2V0UXVldWVUaW1lTGltaXQo
cGFjaW5nX2NvbmZpZ18ubWF4X3BhY2luZ19kZWxheS5HZXQoKS5tcygpKTsKICAgICB9CiAgIH0K
IApAQCAtNTYzLDE3ICs1ODMsNiBAQCBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6UmVzdWx0IFZpZGVv
U2VuZFN0cmVhbUltcGw6Ok9uRW5jb2RlZEltYWdlKAogICAvLyBFbmNvZGVkIGlzIGNhbGxlZCBv
biB3aGF0ZXZlciB0aHJlYWQgdGhlIHJlYWwgZW5jb2RlciBpbXBsZW1lbnRhdGlvbiBydW4KICAg
Ly8gb24uIEluIHRoZSBjYXNlIG9mIGhhcmR3YXJlIGVuY29kZXJzLCB0aGVyZSBtaWdodCBiZSBz
ZXZlcmFsIGVuY29kZXJzCiAgIC8vIHJ1bm5pbmcgaW4gcGFyYWxsZWwgb24gZGlmZmVyZW50IHRo
cmVhZHMuCi0gIGNvbnN0IHNpemVfdCBzaW11bGNhc3RfaWR4ID0KLSAgICAgIChjb2RlY19zcGVj
aWZpY19pbmZvLT5jb2RlY1R5cGUgIT0ga1ZpZGVvQ29kZWNWUDkpCi0gICAgICAgICAgPyBlbmNv
ZGVkX2ltYWdlLlNwYXRpYWxJbmRleCgpLnZhbHVlX29yKDApCi0gICAgICAgICAgOiAwOwotICBp
ZiAoY29uZmlnXy0+cG9zdF9lbmNvZGVfY2FsbGJhY2spIHsKLSAgICAvLyBUT0RPKG5pc3NlKTog
RGVsZXRlIHdlYnJ0Yzo6RW5jb2RlZEZyYW1lIGNsYXNzLCBwYXNzIEVuY29kZWRJbWFnZQotICAg
IC8vIGluc3RlYWQuCi0gICAgY29uZmlnXy0+cG9zdF9lbmNvZGVfY2FsbGJhY2stPkVuY29kZWRG
cmFtZUNhbGxiYWNrKEVuY29kZWRGcmFtZSgKLSAgICAgICAgZW5jb2RlZF9pbWFnZS5fYnVmZmVy
LCBlbmNvZGVkX2ltYWdlLl9sZW5ndGgsIGVuY29kZWRfaW1hZ2UuX2ZyYW1lVHlwZSwKLSAgICAg
ICAgc2ltdWxjYXN0X2lkeCwgZW5jb2RlZF9pbWFnZS5UaW1lc3RhbXAoKSkpOwotICB9CiAgIHsK
ICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZlbmNvZGVyX2FjdGl2aXR5X2NyaXRfc2VjdF8pOwog
ICAgIGlmIChjaGVja19lbmNvZGVyX2FjdGl2aXR5X3Rhc2tfKQpAQCAtNjEzLDIxICs2MjIsMjIg
QEAgc3RkOjptYXA8dWludDMyX3QsIFJ0cFBheWxvYWRTdGF0ZT4gVmlkZW9TZW5kU3RyZWFtSW1w
bDo6R2V0UnRwUGF5bG9hZFN0YXRlcygpCiAgIHJldHVybiBydHBfdmlkZW9fc2VuZGVyXy0+R2V0
UnRwUGF5bG9hZFN0YXRlcygpOwogfQogCi11aW50MzJfdCBWaWRlb1NlbmRTdHJlYW1JbXBsOjpP
bkJpdHJhdGVVcGRhdGVkKHVpbnQzMl90IGJpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZyYWN0aW9uX2xvc3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBy
b2JpbmdfaW50ZXJ2YWxfbXMpIHsKK3VpbnQzMl90IFZpZGVvU2VuZFN0cmVhbUltcGw6Ok9uQml0
cmF0ZVVwZGF0ZWQoQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlKSB7CiAgIFJUQ19EQ0hF
Q0tfUlVOX09OKHdvcmtlcl9xdWV1ZV8pOwogICBSVENfRENIRUNLKHJ0cF92aWRlb19zZW5kZXJf
LT5Jc0FjdGl2ZSgpKQogICAgICAgPDwgIlZpZGVvU2VuZFN0cmVhbTo6U3RhcnQgaGFzIG5vdCBi
ZWVuIGNhbGxlZC4iOwogCi0gIHJ0cF92aWRlb19zZW5kZXJfLT5PbkJpdHJhdGVVcGRhdGVkKGJp
dHJhdGVfYnBzLCBmcmFjdGlvbl9sb3NzLCBydHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRzX3Byb3h5Xy0+R2V0U2VuZEZyYW1lUmF0ZSgpKTsKKyAgcnRwX3Zp
ZGVvX3NlbmRlcl8tPk9uQml0cmF0ZVVwZGF0ZWQoCisgICAgICB1cGRhdGUudGFyZ2V0X2JpdHJh
dGUuYnBzKCksCisgICAgICBydGM6OmRjaGVja2VkX2Nhc3Q8dWludDhfdD4odXBkYXRlLnBhY2tl
dF9sb3NzX3JhdGlvICogMjU2KSwKKyAgICAgIHVwZGF0ZS5yb3VuZF90cmlwX3RpbWUubXMoKSwg
c3RhdHNfcHJveHlfLT5HZXRTZW5kRnJhbWVSYXRlKCkpOwogICBlbmNvZGVyX3RhcmdldF9yYXRl
X2Jwc18gPSBydHBfdmlkZW9fc2VuZGVyXy0+R2V0UGF5bG9hZEJpdHJhdGVCcHMoKTsKICAgZW5j
b2Rlcl90YXJnZXRfcmF0ZV9icHNfID0KICAgICAgIHN0ZDo6bWluKGVuY29kZXJfbWF4X2JpdHJh
dGVfYnBzXywgZW5jb2Rlcl90YXJnZXRfcmF0ZV9icHNfKTsKLSAgdmlkZW9fc3RyZWFtX2VuY29k
ZXJfLT5PbkJpdHJhdGVVcGRhdGVkKGVuY29kZXJfdGFyZ2V0X3JhdGVfYnBzXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uX2xvc3MsIHJ0dCk7Cisg
IHZpZGVvX3N0cmVhbV9lbmNvZGVyXy0+T25CaXRyYXRlVXBkYXRlZCgKKyAgICAgIGVuY29kZXJf
dGFyZ2V0X3JhdGVfYnBzXywKKyAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50OF90Pih1cGRh
dGUucGFja2V0X2xvc3NfcmF0aW8gKiAyNTYpLAorICAgICAgdXBkYXRlLnJvdW5kX3RyaXBfdGlt
ZS5tcygpKTsKICAgc3RhdHNfcHJveHlfLT5PblNldEVuY29kZXJUYXJnZXRSYXRlKGVuY29kZXJf
dGFyZ2V0X3JhdGVfYnBzXyk7CiAgIHJldHVybiBydHBfdmlkZW9fc2VuZGVyXy0+R2V0UHJvdGVj
dGlvbkJpdHJhdGVCcHMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX2ltcGwuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3Ry
ZWFtX2ltcGwuaAppbmRleCBlZWQ5ZjU2N2ZiMDgxODZmYTg1MWRkMjljNDJjNTQxNzBiYTMzOTkz
Li45Y2FhYmFjZGFiOTI0NDhkMTM2NzdjYWY5MTA1MTdmMWIyYWZmZWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5k
X3N0cmVhbV9pbXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbC5oCkBAIC0xOCw3ICsxOCw2IEBACiAj
aW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyX2ludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgImNhbGwvYml0cmF0ZV9hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYWxsL3J0cF92aWRl
b19zZW5kZXJfaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJ
TlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3V0aWxpdHkvaW5jbHVkZS9wcm9j
ZXNzX3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3dlYWtfcHRyLmgiCiAjaW5jbHVkZSAi
dmlkZW8vY2FsbF9zdGF0cy5oIgpAQCAtMzAsNiArMjksMTYgQEAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogbmFtZXNwYWNlIGludGVybmFsIHsKIAorLy8gUGFjaW5nIGJ1ZmZlciBjb25maWc7IG92ZXJy
aWRkZW4gYnkgQUxSIGNvbmZpZyBpZiBwcm92aWRlZC4KK3N0cnVjdCBQYWNpbmdDb25maWcgewor
ICBQYWNpbmdDb25maWcoKTsKKyAgUGFjaW5nQ29uZmlnKGNvbnN0IFBhY2luZ0NvbmZpZyYpOwor
ICBQYWNpbmdDb25maWcmIG9wZXJhdG9yPShjb25zdCBQYWNpbmdDb25maWcmKSA9IGRlZmF1bHQ7
CisgIH5QYWNpbmdDb25maWcoKTsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxkb3VibGU+IHBhY2lu
Z19mYWN0b3I7CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiBtYXhfcGFjaW5nX2Rl
bGF5OworfTsKKwogLy8gVmlkZW9TZW5kU3RyZWFtSW1wbCBpbXBsZW1lbnRzIGludGVybmFsOjpW
aWRlb1NlbmRTdHJlYW0uCiAvLyBJdCBpcyBjcmVhdGVkIGFuZCBkZXN0cm95ZWQgb24gfHdvcmtl
cl9xdWV1ZXwuIFRoZSBpbnRlbnQgaXMgdG8gZGVjcmVhc2UgdGhlCiAvLyBuZWVkIGZvciBsb2Nr
aW5nIGFuZCB0byBlbnN1cmUgbWV0aG9kcyBhcmUgY2FsbGVkIGluIHNlcXVlbmNlLgpAQCAtODMs
MTAgKzkyLDcgQEAgY2xhc3MgVmlkZW9TZW5kU3RyZWFtSW1wbCA6IHB1YmxpYyB3ZWJydGM6OkJp
dHJhdGVBbGxvY2F0b3JPYnNlcnZlciwKICAgY2xhc3MgQ2hlY2tFbmNvZGVyQWN0aXZpdHlUYXNr
OwogCiAgIC8vIEltcGxlbWVudHMgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyLgotICB1aW50MzJf
dCBPbkJpdHJhdGVVcGRhdGVkKHVpbnQzMl90IGJpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IHJ0dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IHByb2JpbmdfaW50ZXJ2YWxfbXMpIG92ZXJyaWRlOworICB1aW50MzJfdCBPbkJpdHJhdGVVcGRh
dGVkKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSkgb3ZlcnJpZGU7CiAKICAgdm9pZCBP
bkVuY29kZXJDb25maWd1cmF0aW9uQ2hhbmdlZChzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3Ry
ZWFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWluX3RyYW5z
bWl0X2JpdHJhdGVfYnBzKSBvdmVycmlkZTsKQEAgLTExNSw2ICsxMjEsNyBAQCBjbGFzcyBWaWRl
b1NlbmRTdHJlYW1JbXBsIDogcHVibGljIHdlYnJ0Yzo6Qml0cmF0ZUFsbG9jYXRvck9ic2VydmVy
LAogICB2b2lkIFNpZ25hbEVuY29kZXJBY3RpdmUoKTsKIAogICBjb25zdCBib29sIGhhc19hbHJf
cHJvYmluZ187CisgIGNvbnN0IFBhY2luZ0NvbmZpZyBwYWNpbmdfY29uZmlnXzsKIAogICBTZW5k
U3RhdGlzdGljc1Byb3h5KiBjb25zdCBzdGF0c19wcm94eV87CiAgIGNvbnN0IFZpZGVvU2VuZFN0
cmVhbTo6Q29uZmlnKiBjb25zdCBjb25maWdfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbF91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggZGQwMzY5MDlhNmFm
MWVjNTY3OThkNDhiOTU4YTE2OWQwYjdjZGIxOC4uMzJkMGRmMWMyZTYxYjdkYzVlZmNkYWU4M2Y2
M2E0MTg4MTA3MTM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbF91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19z
ZW5kX3N0cmVhbV9pbXBsX3VuaXR0ZXN0LmNjCkBAIC02OSw2ICs2OSwxNCBAQCBjbGFzcyBNb2Nr
UnRwVmlkZW9TZW5kZXIgOiBwdWJsaWMgUnRwVmlkZW9TZW5kZXJJbnRlcmZhY2UgewogICBNT0NL
X0NPTlNUX01FVEhPRDAoR2V0UHJvdGVjdGlvbkJpdHJhdGVCcHMsIHVpbnQzMl90KCkpOwogICBN
T0NLX01FVEhPRDMoU2V0RW5jb2RpbmdEYXRhLCB2b2lkKHNpemVfdCwgc2l6ZV90LCBzaXplX3Qp
KTsKIH07CisKK0JpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIENyZWF0ZUFsbG9jYXRpb24oaW50IGJp
dHJhdGVfYnBzKSB7CisgIEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZTsKKyAgdXBkYXRl
LnRhcmdldF9iaXRyYXRlID0gRGF0YVJhdGU6OmJwcyhiaXRyYXRlX2Jwcyk7CisgIHVwZGF0ZS5w
YWNrZXRfbG9zc19yYXRpbyA9IDA7CisgIHVwZGF0ZS5yb3VuZF90cmlwX3RpbWUgPSBUaW1lRGVs
dGE6Olplcm8oKTsKKyAgcmV0dXJuIHVwZGF0ZTsKK30KIH0gIC8vIG5hbWVzcGFjZQogCiBjbGFz
cyBWaWRlb1NlbmRTdHJlYW1JbXBsVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewpAQCAt
OTEsNyArOTksNyBAQCBjbGFzcyBWaWRlb1NlbmRTdHJlYW1JbXBsVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgewogICAgIEVYUEVDVF9DQUxMKHRyYW5zcG9ydF9jb250cm9sbGVyXywgcGFj
a2V0X3JvdXRlcigpKQogICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCZwYWNrZXRfcm91
dGVyXykpOwogICAgIEVYUEVDVF9DQUxMKHRyYW5zcG9ydF9jb250cm9sbGVyXywKLSAgICAgICAg
ICAgICAgICBDcmVhdGVSdHBWaWRlb1NlbmRlcihfLCBfLCBfLCBfLCBfLCBfLCBfLCBfLCBfKSkK
KyAgICAgICAgICAgICAgICBDcmVhdGVSdHBWaWRlb1NlbmRlcihfLCBfLCBfLCBfLCBfLCBfLCBf
LCBfLCBfLCBfKSkKICAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigmcnRwX3ZpZGVvX3Nl
bmRlcl8pKTsKICAgICBFWFBFQ1RfQ0FMTChydHBfdmlkZW9fc2VuZGVyXywgU2V0QWN0aXZlKF8p
KQogICAgICAgICAuV2lsbFJlcGVhdGVkbHkodGVzdGluZzo6SW52b2tlKApAQCAtMzY3LDcgKzM3
NSw3IEBAIFRFU1RfRihWaWRlb1NlbmRTdHJlYW1JbXBsVGVzdCwgRm9yd2FyZHNWaWRlb0JpdHJh
dGVBbGxvY2F0aW9uV2hlbkVuYWJsZWQpIHsKICAgICAgICAgLlRpbWVzKDEpCiAgICAgICAgIC5X
aWxsT25jZShSZXR1cm4oa0JpdHJhdGVCcHMpKTsKICAgICBzdGF0aWNfY2FzdDxCaXRyYXRlQWxs
b2NhdG9yT2JzZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSkKLSAgICAgICAgLT5PbkJpdHJhdGVVcGRh
dGVkKGtCaXRyYXRlQnBzLCAwLCAwLCAwKTsKKyAgICAgICAgLT5PbkJpdHJhdGVVcGRhdGVkKENy
ZWF0ZUFsbG9jYXRpb24oa0JpdHJhdGVCcHMpKTsKICAgICBFWFBFQ1RfQ0FMTChydHBfdmlkZW9f
c2VuZGVyXywgT25CaXRyYXRlQWxsb2NhdGlvblVwZGF0ZWQoYWxsb2MpKS5UaW1lcygxKTsKICAg
ICBvYnNlcnZlci0+T25CaXRyYXRlQWxsb2NhdGlvblVwZGF0ZWQoYWxsb2MpOwogCkBAIC0zNzYs
NyArMzg0LDcgQEAgVEVTVF9GKFZpZGVvU2VuZFN0cmVhbUltcGxUZXN0LCBGb3J3YXJkc1ZpZGVv
Qml0cmF0ZUFsbG9jYXRpb25XaGVuRW5hYmxlZCkgewogICAgICAgICAuVGltZXMoMSkKICAgICAg
ICAgLldpbGxPbmNlKFJldHVybigwKSk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0cmF0ZUFsbG9jYXRv
ck9ic2VydmVyKj4odnNzX2ltcGwuZ2V0KCkpCi0gICAgICAgIC0+T25CaXRyYXRlVXBkYXRlZCgw
LCAwLCAwLCAwKTsKKyAgICAgICAgLT5PbkJpdHJhdGVVcGRhdGVkKENyZWF0ZUFsbG9jYXRpb24o
MCkpOwogICAgIEVYUEVDVF9DQUxMKHJ0cF92aWRlb19zZW5kZXJfLCBPbkJpdHJhdGVBbGxvY2F0
aW9uVXBkYXRlZChhbGxvYykpLlRpbWVzKDApOwogICAgIG9ic2VydmVyLT5PbkJpdHJhdGVBbGxv
Y2F0aW9uVXBkYXRlZChhbGxvYyk7CiAKQEAgLTM5Niw3ICs0MDQsNyBAQCBURVNUX0YoVmlkZW9T
ZW5kU3RyZWFtSW1wbFRlc3QsIFRocm90dGxlc1ZpZGVvQml0cmF0ZUFsbG9jYXRpb25XaGVuVG9v
U2ltaWxhcikgewogICAgICAgICAuVGltZXMoMSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybihr
Qml0cmF0ZUJwcykpOwogICAgIHN0YXRpY19jYXN0PEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlcio+
KHZzc19pbXBsLmdldCgpKQotICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoa0JpdHJhdGVCcHMs
IDAsIDAsIDApOworICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoQ3JlYXRlQWxsb2NhdGlvbihr
Qml0cmF0ZUJwcykpOwogICAgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb25PYnNlcnZlciogY29uc3Qg
b2JzZXJ2ZXIgPQogICAgICAgICBzdGF0aWNfY2FzdDxWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2Jz
ZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSk7CiAKQEAgLTQ1MCw3ICs0NTgsNyBAQCBURVNUX0YoVmlk
ZW9TZW5kU3RyZWFtSW1wbFRlc3QsIEZvcndhcmRzVmlkZW9CaXRyYXRlQWxsb2NhdGlvbk9uTGF5
ZXJDaGFuZ2UpIHsKICAgICAgICAgLlRpbWVzKDEpCiAgICAgICAgIC5XaWxsT25jZShSZXR1cm4o
a0JpdHJhdGVCcHMpKTsKICAgICBzdGF0aWNfY2FzdDxCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIq
Pih2c3NfaW1wbC5nZXQoKSkKLSAgICAgICAgLT5PbkJpdHJhdGVVcGRhdGVkKGtCaXRyYXRlQnBz
LCAwLCAwLCAwKTsKKyAgICAgICAgLT5PbkJpdHJhdGVVcGRhdGVkKENyZWF0ZUFsbG9jYXRpb24o
a0JpdHJhdGVCcHMpKTsKICAgICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2JzZXJ2ZXIqIGNvbnN0
IG9ic2VydmVyID0KICAgICAgICAgc3RhdGljX2Nhc3Q8VmlkZW9CaXRyYXRlQWxsb2NhdGlvbk9i
c2VydmVyKj4odnNzX2ltcGwuZ2V0KCkpOwogCkBAIC00OTQsNyArNTAyLDcgQEAgVEVTVF9GKFZp
ZGVvU2VuZFN0cmVhbUltcGxUZXN0LCBGb3J3YXJkc1ZpZGVvQml0cmF0ZUFsbG9jYXRpb25BZnRl
clRpbWVvdXQpIHsKICAgICAgICAgLlRpbWVzKDEpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShS
ZXR1cm4oa0JpdHJhdGVCcHMpKTsKICAgICBzdGF0aWNfY2FzdDxCaXRyYXRlQWxsb2NhdG9yT2Jz
ZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSkKLSAgICAgICAgLT5PbkJpdHJhdGVVcGRhdGVkKGtCaXRy
YXRlQnBzLCAwLCAwLCAwKTsKKyAgICAgICAgLT5PbkJpdHJhdGVVcGRhdGVkKENyZWF0ZUFsbG9j
YXRpb24oa0JpdHJhdGVCcHMpKTsKICAgICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2JzZXJ2ZXIq
IGNvbnN0IG9ic2VydmVyID0KICAgICAgICAgc3RhdGljX2Nhc3Q8VmlkZW9CaXRyYXRlQWxsb2Nh
dGlvbk9ic2VydmVyKj4odnNzX2ltcGwuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV90
ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L3ZpZGVvX3NlbmRfc3RyZWFtX3Rlc3RzLmNjCmluZGV4IDA5Y2NmMWM0OTg5M2E1M2NmM2JjNzM5
ZGRmZmI3MGZjMjE3NWFjOTkuLmVhNzdjZDY1MjkxNDkzNzk1YzlkMjFlYTRjMjc4MDFmMzNkODk1
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX3Rlc3RzLmNj
CkBAIC0xMiwxMiArMTIsMTEgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkv
dGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgorI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2lt
YWdlLmgiCiAjaW5jbHVkZSAiY2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25ldHdv
cmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQu
aCIKICNpbmNsdWRlICJjYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgiCi0jaW5jbHVkZSAiY29tbW9u
X3ZpZGVvL2luY2x1ZGUvZnJhbWVfY2FsbGJhY2suaCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8v
aW5jbHVkZS92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVk
ZS9ydHBfaGVhZGVyX3BhcnNlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVk
ZS9ydHBfcnRjcC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bfc2Vu
ZGVyLmgiCkBAIC03MCwxMCArNjksMTQgQEAgY2xhc3MgVmlkZW9TZW5kU3RyZWFtUGVlciB7CiB9
OwogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIAorbmFtZXNwYWNlIHsKK2NvbnN0ZXhwciBpbnQ2NF90
IGtSdGNwSW50ZXJ2YWxNcyA9IDEwMDA7CisKIGVudW0gVmlkZW9Gb3JtYXQgewogICBrR2VuZXJp
YywKICAga1ZQOCwKIH07Cit9ICAvLyBuYW1lc3BhY2UKIAogdm9pZCBFeHBlY3RFcXVhbEZyYW1l
c1ZlY3Rvcihjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0ZyYW1lPiYgZnJhbWVzMSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9GcmFtZT4mIGZyYW1l
czIpOwpAQCAtNTQxLDcgKzU0NCw3IEBAIGNsYXNzIFVscGZlY09ic2VydmVyIDogcHVibGljIHRl
c3Q6OkVuZFRvRW5kVGVzdCB7CiAgICAgLy8gQXQgbG93IFJUVCAoPCBrTG93UnR0TmFja01zKSAt
PiBOQUNLIG9ubHksIG5vIEZFQy4KICAgICAvLyBDb25maWd1cmUgc29tZSBuZXR3b3JrIGRlbGF5
LgogICAgIGNvbnN0IGludCBrTmV0d29ya0RlbGF5TXMgPSAxMDA7Ci0gICAgRGVmYXVsdE5ldHdv
cmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29u
ZmlnIGNvbmZpZzsKICAgICBjb25maWcubG9zc19wZXJjZW50ID0gNTsKICAgICBjb25maWcucXVl
dWVfZGVsYXlfbXMgPSBrTmV0d29ya0RlbGF5TXM7CiAgICAgcmV0dXJuIG5ldyB0ZXN0OjpQYWNr
ZXRUcmFuc3BvcnQoCkBAIC02NTUsNyArNjU4LDcgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRl
c3QsIERJU0FCTEVEX0RvZXNVdGlsaXplVWxwZmVjRm9yVnA4V2l0aE5hY2tFbmFibGVkKSB7CiAg
IFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KIAotI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkK
KyNpZiBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogLy8gRGlzYWJsZWQgYXMgZmxha3ksIHNlZSBo
dHRwczovL2NyYnVnLmNvbS93ZWJydGMvNzI4NSBmb3IgZGV0YWlscy4KIFRFU1RfUChWaWRlb1Nl
bmRTdHJlYW1UZXN0LCBESVNBQkxFRF9Eb2VzVXRpbGl6ZVVscGZlY0ZvclZwOVdpdGhOYWNrRW5h
YmxlZCkgewogICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2Rlcl9mYWN0
b3J5KApAQCAtNjYzLDcgKzY2Niw3IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBESVNB
QkxFRF9Eb2VzVXRpbGl6ZVVscGZlY0ZvclZwOVdpdGhOYWNrRW5hYmxlZCkgewogICBVbHBmZWNP
YnNlcnZlciB0ZXN0KGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCAiVlA5IiwgJmVuY29kZXJfZmFj
dG9yeSk7CiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KLSNlbmRpZiAgLy8gIWRlZmluZWQoUlRD
X0RJU0FCTEVfVlA5KQorI2VuZGlmICAvLyBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogCiBURVNU
X1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgU3VwcG9ydHNVbHBmZWNXaXRoTXVsdGl0aHJlYWRlZEgy
NjQpIHsKICAgdGVzdDo6RnVuY3Rpb25WaWRlb0VuY29kZXJGYWN0b3J5IGVuY29kZXJfZmFjdG9y
eShbXSgpIHsKQEAgLTczMSw3ICs3MzQsNyBAQCBjbGFzcyBGbGV4ZmVjT2JzZXJ2ZXIgOiBwdWJs
aWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKICAgICAvLyBBdCBsb3cgUlRUICg8IGtMb3dSdHROYWNr
TXMpIC0+IE5BQ0sgb25seSwgbm8gRkVDLgogICAgIC8vIFRoZXJlZm9yZSB3ZSBuZWVkIHNvbWUg
bmV0d29yayBkZWxheS4KICAgICBjb25zdCBpbnQga05ldHdvcmtEZWxheU1zID0gMTAwOwotICAg
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgICAgQnVpbHRJbk5ldHdv
cmtCZWhhdmlvckNvbmZpZyBjb25maWc7CiAgICAgY29uZmlnLmxvc3NfcGVyY2VudCA9IDU7CiAg
ICAgY29uZmlnLnF1ZXVlX2RlbGF5X21zID0ga05ldHdvcmtEZWxheU1zOwogICAgIHJldHVybiBu
ZXcgdGVzdDo6UGFja2V0VHJhbnNwb3J0KApAQCAtODA2LDcgKzgwOSw3IEBAIFRFU1RfUChWaWRl
b1NlbmRTdHJlYW1UZXN0LCBTdXBwb3J0c0ZsZXhmZWNXaXRoUnRwRXh0ZW5zaW9uc1ZwOCkgewog
ICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9CiAKLSNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkp
CisjaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0
LCBTdXBwb3J0c0ZsZXhmZWNWcDkpIHsKICAgdGVzdDo6RnVuY3Rpb25WaWRlb0VuY29kZXJGYWN0
b3J5IGVuY29kZXJfZmFjdG9yeSgKICAgICAgIFtdKCkgeyByZXR1cm4gVlA5RW5jb2Rlcjo6Q3Jl
YXRlKCk7IH0pOwpAQCAtODIwLDcgKzgyMyw3IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0
LCBTdXBwb3J0c0ZsZXhmZWNXaXRoTmFja1ZwOSkgewogICBGbGV4ZmVjT2JzZXJ2ZXIgdGVzdChm
YWxzZSwgdHJ1ZSwgIlZQOSIsICZlbmNvZGVyX2ZhY3RvcnksIDEpOwogICBSdW5CYXNlVGVzdCgm
dGVzdCk7CiB9Ci0jZW5kaWYgIC8vIGRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2VuZGlmICAv
LyBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogCiBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwg
U3VwcG9ydHNGbGV4ZmVjSDI2NCkgewogICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3Rv
cnkgZW5jb2Rlcl9mYWN0b3J5KFtdKCkgewpAQCAtODY2LDE5ICs4NjksMjcgQEAgdm9pZCBWaWRl
b1NlbmRTdHJlYW1UZXN0OjpUZXN0TmFja1JldHJhbnNtaXNzaW9uKAogICAgICAgUlRQSGVhZGVy
IGhlYWRlcjsKICAgICAgIEVYUEVDVF9UUlVFKHBhcnNlcl8tPlBhcnNlKHBhY2tldCwgbGVuZ3Ro
LCAmaGVhZGVyKSk7CiAKLSAgICAgIGludCBrUmV0cmFuc21pdFRhcmdldCA9IDY7CisgICAgICAv
LyBOQUNLIHBhY2tldHMgdHdvIHRpbWVzIGF0IHNvbWUgYXJiaXRyYXJ5IHBvaW50cy4KKyAgICAg
IGNvbnN0IGludCBrTmFja2VkUGFja2V0c0F0T25jZUNvdW50ID0gMzsKKyAgICAgIGNvbnN0IGlu
dCBrUmV0cmFuc21pdFRhcmdldCA9IGtOYWNrZWRQYWNrZXRzQXRPbmNlQ291bnQgKiAyOworCisg
ICAgICAvLyBTa2lwIHBhZGRpbmcgcGFja2V0cyBiZWNhdXNlIHRoZXkgd2lsbCBuZXZlciBiZSBy
ZXRyYW5zbWl0dGVkLgorICAgICAgaWYgKGhlYWRlci5wYWRkaW5nTGVuZ3RoICsgaGVhZGVyLmhl
YWRlckxlbmd0aCA9PSBsZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIFNFTkRfUEFDS0VUOworICAg
ICAgfQorCiAgICAgICArK3NlbmRfY291bnRfOworCisgICAgICAvLyBOQUNLIHBhY2tldHMgYXQg
YXJiaXRyYXJ5IHBvaW50cy4KICAgICAgIGlmIChzZW5kX2NvdW50XyA9PSA1IHx8IHNlbmRfY291
bnRfID09IDI1KSB7Ci0gICAgICAgIG5hY2tlZF9zZXF1ZW5jZV9udW1iZXJzXy5wdXNoX2JhY2so
Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4oaGVhZGVyLnNlcXVlbmNlTnVtYmVy
IC0gMykpOwotICAgICAgICBuYWNrZWRfc2VxdWVuY2VfbnVtYmVyc18ucHVzaF9iYWNrKAotICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGhlYWRlci5zZXF1ZW5jZU51bWJlciAtIDIp
KTsKLSAgICAgICAgbmFja2VkX3NlcXVlbmNlX251bWJlcnNfLnB1c2hfYmFjaygKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHVpbnQxNl90PihoZWFkZXIuc2VxdWVuY2VOdW1iZXIgLSAxKSk7Cisg
ICAgICAgIG5hY2tlZF9zZXF1ZW5jZV9udW1iZXJzXy5pbnNlcnQoCisgICAgICAgICAgICBuYWNr
ZWRfc2VxdWVuY2VfbnVtYmVyc18uZW5kKCksCisgICAgICAgICAgICBub25fcGFkZGluZ19zZXF1
ZW5jZV9udW1iZXJzXy5lbmQoKSAtIGtOYWNrZWRQYWNrZXRzQXRPbmNlQ291bnQsCisgICAgICAg
ICAgICBub25fcGFkZGluZ19zZXF1ZW5jZV9udW1iZXJzXy5lbmQoKSk7CiAKICAgICAgICAgUlRD
UFNlbmRlciBydGNwX3NlbmRlcihmYWxzZSwgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgbnVs
bHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCB0
cmFuc3BvcnRfYWRhcHRlcl8uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UnRjcEludGVydmFsQ29uZmlne30pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtS
dGNwSW50ZXJ2YWxNcyk7CiAKICAgICAgICAgcnRjcF9zZW5kZXIuU2V0UlRDUFN0YXR1cyhSdGNw
TW9kZTo6a1JlZHVjZWRTaXplKTsKICAgICAgICAgcnRjcF9zZW5kZXIuU2V0UmVtb3RlU1NSQyhr
VmlkZW9TZW5kU3NyY3NbMF0pOwpAQCAtODkyLDcgKzkwMyw2IEBAIHZvaWQgVmlkZW9TZW5kU3Ry
ZWFtVGVzdDo6VGVzdE5hY2tSZXRyYW5zbWlzc2lvbigKICAgICAgIH0KIAogICAgICAgdWludDE2
X3Qgc2VxdWVuY2VfbnVtYmVyID0gaGVhZGVyLnNlcXVlbmNlTnVtYmVyOwotCiAgICAgICBpZiAo
aGVhZGVyLnNzcmMgPT0gcmV0cmFuc21pdF9zc3JjXyAmJgogICAgICAgICAgIHJldHJhbnNtaXRf
c3NyY18gIT0ga1ZpZGVvU2VuZFNzcmNzWzBdKSB7CiAgICAgICAgIC8vIE5vdCBrVmlkZW9TZW5k
U3NyY3NbMF0sIGFzc3VtZSBjb3JyZWN0IFJUWCBwYWNrZXQuIEV4dHJhY3Qgc2VxdWVuY2UKQEAg
LTkwMCw2ICs5MTAsNyBAQCB2b2lkIFZpZGVvU2VuZFN0cmVhbVRlc3Q6OlRlc3ROYWNrUmV0cmFu
c21pc3Npb24oCiAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHJ0eF9oZWFkZXIgPSBwYWNrZXQgKyBo
ZWFkZXIuaGVhZGVyTGVuZ3RoOwogICAgICAgICBzZXF1ZW5jZV9udW1iZXIgPSAocnR4X2hlYWRl
clswXSA8PCA4KSArIHJ0eF9oZWFkZXJbMV07CiAgICAgICB9CisKICAgICAgIGF1dG8gZm91bmQg
PSBzdGQ6OmZpbmQobmFja2VkX3NlcXVlbmNlX251bWJlcnNfLmJlZ2luKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5hY2tlZF9zZXF1ZW5jZV9udW1iZXJzXy5lbmQoKSwgc2VxdWVu
Y2VfbnVtYmVyKTsKICAgICAgIGlmIChmb3VuZCAhPSBuYWNrZWRfc2VxdWVuY2VfbnVtYmVyc18u
ZW5kKCkpIHsKQEAgLTkxMCw2ICs5MjEsOCBAQCB2b2lkIFZpZGVvU2VuZFN0cmVhbVRlc3Q6OlRl
c3ROYWNrUmV0cmFuc21pc3Npb24oCiAgICAgICAgICAgRVhQRUNUX0VRKHJldHJhbnNtaXRfcGF5
bG9hZF90eXBlXywgaGVhZGVyLnBheWxvYWRUeXBlKTsKICAgICAgICAgICBvYnNlcnZhdGlvbl9j
b21wbGV0ZV8uU2V0KCk7CiAgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIG5vbl9w
YWRkaW5nX3NlcXVlbmNlX251bWJlcnNfLnB1c2hfYmFjayhzZXF1ZW5jZV9udW1iZXIpOwogICAg
ICAgfQogCiAgICAgICByZXR1cm4gU0VORF9QQUNLRVQ7CkBAIC05MzgsNiArOTUxLDcgQEAgdm9p
ZCBWaWRlb1NlbmRTdHJlYW1UZXN0OjpUZXN0TmFja1JldHJhbnNtaXNzaW9uKAogICAgIHVpbnQz
Ml90IHJldHJhbnNtaXRfc3NyY187CiAgICAgdWludDhfdCByZXRyYW5zbWl0X3BheWxvYWRfdHlw
ZV87CiAgICAgc3RkOjp2ZWN0b3I8dWludDE2X3Q+IG5hY2tlZF9zZXF1ZW5jZV9udW1iZXJzXzsK
KyAgICBzdGQ6OnZlY3Rvcjx1aW50MTZfdD4gbm9uX3BhZGRpbmdfc2VxdWVuY2VfbnVtYmVyc187
CiAgIH0gdGVzdChyZXRyYW5zbWl0X3NzcmMsIHJldHJhbnNtaXRfcGF5bG9hZF90eXBlKTsKIAog
ICBSdW5CYXNlVGVzdCgmdGVzdCk7CkBAIC05NjQsOCArOTc4LDcgQEAgdm9pZCBWaWRlb1NlbmRT
dHJlYW1UZXN0OjpUZXN0UGFja2V0RnJhZ21lbnRhdGlvblNpemUoVmlkZW9Gb3JtYXQgZm9ybWF0
LAogCiAgIC8vIE9ic2VydmVyIHRoYXQgdmVyaWZpZXMgdGhhdCB0aGUgZXhwZWN0ZWQgbnVtYmVy
IG9mIHBhY2tldHMgYW5kIGJ5dGVzCiAgIC8vIGFycml2ZSBmb3IgZWFjaCBmcmFtZSBzaXplLCBm
cm9tIHN0YXJ0X3NpemUgdG8gc3RvcF9zaXplLgotICBjbGFzcyBGcmFtZUZyYWdtZW50YXRpb25U
ZXN0IDogcHVibGljIHRlc3Q6OlNlbmRUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIEVuY29kZWRGcmFtZU9ic2VydmVyIHsKKyAgY2xhc3MgRnJhbWVGcmFnbWVu
dGF0aW9uVGVzdCA6IHB1YmxpYyB0ZXN0OjpTZW5kVGVzdCB7CiAgICBwdWJsaWM6CiAgICAgRnJh
bWVGcmFnbWVudGF0aW9uVGVzdChzaXplX3QgbWF4X3BhY2tldF9zaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHN0YXJ0X3NpemUsCkBAIC0xMDkwLDcgKzExMDMsNyBAQCB2
b2lkIFZpZGVvU2VuZFN0cmVhbVRlc3Q6OlRlc3RQYWNrZXRGcmFnbWVudGF0aW9uU2l6ZShWaWRl
b0Zvcm1hdCBmb3JtYXQsCiAgICAgICAgICAgICBsb3NzX3JhdGlvKTsgICAgLy8gTG9zcyBwZXJj
ZW50LgogICAgICAgICBSVENQU2VuZGVyIHJ0Y3Bfc2VuZGVyKGZhbHNlLCBDbG9jazo6R2V0UmVh
bFRpbWVDbG9jaygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb3NzeV9yZWNl
aXZlX3N0YXRzLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyYW5zcG9ydF9hZGFwdGVyXy5nZXQoKSwgUnRjcEludGVydmFsQ29uZmlne30pOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydF9hZGFwdGVyXy5nZXQoKSwga1J0
Y3BJbnRlcnZhbE1zKTsKIAogICAgICAgICBydGNwX3NlbmRlci5TZXRSVENQU3RhdHVzKFJ0Y3BN
b2RlOjprUmVkdWNlZFNpemUpOwogICAgICAgICBydGNwX3NlbmRlci5TZXRSZW1vdGVTU1JDKGtW
aWRlb1NlbmRTc3Jjc1swXSk7CkBAIC0xMTAxLDcgKzExMTQsNyBAQCB2b2lkIFZpZGVvU2VuZFN0
cmVhbVRlc3Q6OlRlc3RQYWNrZXRGcmFnbWVudGF0aW9uU2l6ZShWaWRlb0Zvcm1hdCBmb3JtYXQs
CiAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBFbmNvZGVkRnJhbWVDYWxsYmFjayhjb25zdCBF
bmNvZGVkRnJhbWUmIGVuY29kZWRfZnJhbWUpIG92ZXJyaWRlIHsKKyAgICB2b2lkIFVwZGF0ZUNv
bmZpZ3VyYXRpb24oKSB7CiAgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZtdXRleF8pOwogICAg
ICAgLy8gSW5jcmVhc2UgZnJhbWUgc2l6ZSBmb3IgbmV4dCBlbmNvZGVkIGZyYW1lLCBpbiB0aGUg
Y29udGV4dCBvZiB0aGUKICAgICAgIC8vIGVuY29kZXIgdGhyZWFkLgpAQCAtMTExMCw5ICsxMTIz
LDEwIEBAIHZvaWQgVmlkZW9TZW5kU3RyZWFtVGVzdDo6VGVzdFBhY2tldEZyYWdtZW50YXRpb25T
aXplKFZpZGVvRm9ybWF0IGZvcm1hdCwKICAgICAgIH0KICAgICAgIGVuY29kZXJfLlNldEZyYW1l
U2l6ZShzdGF0aWNfY2FzdDxzaXplX3Q+KGN1cnJlbnRfc2l6ZV9mcmFtZV8pKTsKICAgICB9Ci0g
ICAgdm9pZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSBvdmVy
cmlkZSB7CisgICAgdm9pZCBNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKAorICAgICAgICBCaXRy
YXRlQ29uc3RyYWludHMqIGJpdHJhdGVfY29uZmlnKSBvdmVycmlkZSB7CiAgICAgICBjb25zdCBp
bnQga01pbkJpdHJhdGVCcHMgPSAzMDAwMDsKLSAgICAgIGNvbmZpZy0+Yml0cmF0ZV9jb25maWcu
bWluX2JpdHJhdGVfYnBzID0ga01pbkJpdHJhdGVCcHM7CisgICAgICBiaXRyYXRlX2NvbmZpZy0+
bWluX2JpdHJhdGVfYnBzID0ga01pbkJpdHJhdGVCcHM7CiAgICAgfQogCiAgICAgdm9pZCBNb2Rp
ZnlWaWRlb0NvbmZpZ3MoCkBAIC0xMTMyLDM4ICsxMTQ2LDE1IEBAIHZvaWQgVmlkZW9TZW5kU3Ry
ZWFtVGVzdDo6VGVzdFBhY2tldEZyYWdtZW50YXRpb25TaXplKFZpZGVvRm9ybWF0IGZvcm1hdCwK
IAogICAgICAgc2VuZF9jb25maWctPmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0g
JmVuY29kZXJfZmFjdG9yeV87CiAgICAgICBzZW5kX2NvbmZpZy0+cnRwLm1heF9wYWNrZXRfc2l6
ZSA9IGtNYXhQYWNrZXRTaXplOwotICAgICAgc2VuZF9jb25maWctPnBvc3RfZW5jb2RlX2NhbGxi
YWNrID0gdGhpczsKKyAgICAgIGVuY29kZXJfLlJlZ2lzdGVyUG9zdEVuY29kZUNhbGxiYWNrKFt0
aGlzXSgpIHsgVXBkYXRlQ29uZmlndXJhdGlvbigpOyB9KTsKIAogICAgICAgLy8gTWFrZSBzdXJl
IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBleHRlbnNpb24gaGVhZGVyLCB0byBtYWtlIHRoZSBSVFAK
ICAgICAgIC8vIGhlYWRlciBsYXJnZXIgdGhhbiB0aGUgYmFzZSBsZW5ndGggb2YgMTIgYnl0ZXMu
CiAgICAgICBFWFBFQ1RfRkFMU0Uoc2VuZF9jb25maWctPnJ0cC5leHRlbnNpb25zLmVtcHR5KCkp
OwogCiAgICAgICAvLyBTZXR1cCBzY3JlZW4gY29udGVudCBkaXNhYmxlcyBmcmFtZSBkcm9wcGlu
ZyB3aGljaCBtYWtlcyB0aGlzIGVhc2llci4KLSAgICAgIGNsYXNzIFZpZGVvU3RyZWFtRmFjdG9y
eQotICAgICAgICAgIDogcHVibGljIFZpZGVvRW5jb2RlckNvbmZpZzo6VmlkZW9TdHJlYW1GYWN0
b3J5SW50ZXJmYWNlIHsKLSAgICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IFZpZGVvU3Ry
ZWFtRmFjdG9yeShzaXplX3QgbnVtX3RlbXBvcmFsX2xheWVycykKLSAgICAgICAgICAgIDogbnVt
X3RlbXBvcmFsX2xheWVyc18obnVtX3RlbXBvcmFsX2xheWVycykgewotICAgICAgICAgIEVYUEVD
VF9HVChudW1fdGVtcG9yYWxfbGF5ZXJzLCAwdSk7Ci0gICAgICAgIH0KLQotICAgICAgIHByaXZh
dGU6Ci0gICAgICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBDcmVhdGVFbmNvZGVyU3RyZWFt
cygKLSAgICAgICAgICAgIGludCB3aWR0aCwKLSAgICAgICAgICAgIGludCBoZWlnaHQsCi0gICAg
ICAgICAgICBjb25zdCBWaWRlb0VuY29kZXJDb25maWcmIGVuY29kZXJfY29uZmlnKSBvdmVycmlk
ZSB7Ci0gICAgICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+IHN0cmVhbXMgPQotICAgICAg
ICAgICAgICB0ZXN0OjpDcmVhdGVWaWRlb1N0cmVhbXMod2lkdGgsIGhlaWdodCwgZW5jb2Rlcl9j
b25maWcpOwotICAgICAgICAgIGZvciAoVmlkZW9TdHJlYW0mIHN0cmVhbSA6IHN0cmVhbXMpIHsK
LSAgICAgICAgICAgIHN0cmVhbS5udW1fdGVtcG9yYWxfbGF5ZXJzID0gbnVtX3RlbXBvcmFsX2xh
eWVyc187Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBzdHJlYW1zOwotICAgICAgICB9
Ci0gICAgICAgIGNvbnN0IHNpemVfdCBudW1fdGVtcG9yYWxfbGF5ZXJzXzsKLSAgICAgIH07Ci0K
LSAgICAgIGVuY29kZXJfY29uZmlnLT52aWRlb19zdHJlYW1fZmFjdG9yeSA9Ci0gICAgICAgICAg
bmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxWaWRlb1N0cmVhbUZhY3Rvcnk+KDIpOworICAgICAg
RVhQRUNUX0VRKDF1LCBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0X2xheWVycy5zaXplKCkpOwor
ICAgICAgZW5jb2Rlcl9jb25maWctPnNpbXVsY2FzdF9sYXllcnNbMF0ubnVtX3RlbXBvcmFsX2xh
eWVycyA9IDI7CiAgICAgICBlbmNvZGVyX2NvbmZpZy0+Y29udGVudF90eXBlID0gVmlkZW9FbmNv
ZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1NjcmVlbjsKICAgICB9CiAKQEAgLTEzNDcsNyArMTMz
OCw3IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBTdXNwZW5kQmVsb3dNaW5CaXRyYXRl
KSB7CiAgICAgICBGYWtlUmVjZWl2ZVN0YXRpc3RpY3MgcmVjZWl2ZV9zdGF0cyhrVmlkZW9TZW5k
U3NyY3NbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0
X3NlcXVlbmNlX251bWJlcl8sIHJ0cF9jb3VudF8sIDApOwogICAgICAgUlRDUFNlbmRlciBydGNw
X3NlbmRlcihmYWxzZSwgY2xvY2tfLCAmcmVjZWl2ZV9zdGF0cywgbnVsbHB0ciwgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X2FkYXB0ZXJfLmdldCgpLCBS
dGNwSW50ZXJ2YWxDb25maWd7fSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
cG9ydF9hZGFwdGVyXy5nZXQoKSwga1J0Y3BJbnRlcnZhbE1zKTsKIAogICAgICAgcnRjcF9zZW5k
ZXIuU2V0UlRDUFN0YXR1cyhSdGNwTW9kZTo6a1JlZHVjZWRTaXplKTsKICAgICAgIHJ0Y3Bfc2Vu
ZGVyLlNldFJlbW90ZVNTUkMoa1ZpZGVvU2VuZFNzcmNzWzBdKTsKQEAgLTEzOTYsMTIgKzEzODcs
MjAgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIE5vUGFkZGluZ1doZW5WaWRlb0lzTXV0
ZWQpIHsKICAgICAgICAgICBoZWFkZXIuaGVhZGVyTGVuZ3RoICsgaGVhZGVyLnBhZGRpbmdMZW5n
dGggPT0gbGVuZ3RoOwogCiAgICAgICBpZiAodGVzdF9zdGF0ZV8gPT0ga0JlZm9yZVN0b3BDYXB0
dXJlKSB7CisgICAgICAgIC8vIFBhY2tldHMgYXJlIGZsb3dpbmcsIHN0b3AgY2FtZXJhLgogICAg
ICAgICBjYXB0dXJlcl8tPlN0b3AoKTsKICAgICAgICAgdGVzdF9zdGF0ZV8gPSBrV2FpdGluZ0Zv
clBhZGRpbmc7CiAgICAgICB9IGVsc2UgaWYgKHRlc3Rfc3RhdGVfID09IGtXYWl0aW5nRm9yUGFk
ZGluZyAmJiBvbmx5X3BhZGRpbmcpIHsKKyAgICAgICAgLy8gV2UncmUgc3RpbGwgZ2V0dGluZyBw
YWRkaW5nLCBhZnRlciBzdG9wcGluZyBjYW1lcmEuCiAgICAgICAgIHRlc3Rfc3RhdGVfID0ga1dh
aXRpbmdGb3JOb1BhY2tldHM7Ci0gICAgICB9IGVsc2UgaWYgKHRlc3Rfc3RhdGVfID09IGtXYWl0
aW5nRm9yUGFkZGluZ0FmdGVyQ2FtZXJhUmVzdGFydCAmJgorICAgICAgfSBlbHNlIGlmICh0ZXN0
X3N0YXRlXyA9PSBrV2FpdGluZ0Zvck1lZGlhQWZ0ZXJDYW1lcmFSZXN0YXJ0ICYmCisgICAgICAg
ICAgICAgICAgICFvbmx5X3BhZGRpbmcpIHsKKyAgICAgICAgLy8gTWVkaWEgcGFja2V0cyBhcmUg
Zmxvd2luZyBhZ2Fpbiwgc3RvcCBjYW1lcmEgYSBzZWNvbmQgdGltZS4KKyAgICAgICAgY2FwdHVy
ZXJfLT5TdG9wKCk7CisgICAgICAgIHRlc3Rfc3RhdGVfID0ga1dhaXRpbmdGb3JQYWRkaW5nQWZ0
ZXJDYW1lcmFTdG9wc0FnYWluOworICAgICAgfSBlbHNlIGlmICh0ZXN0X3N0YXRlXyA9PSBrV2Fp
dGluZ0ZvclBhZGRpbmdBZnRlckNhbWVyYVN0b3BzQWdhaW4gJiYKICAgICAgICAgICAgICAgICAg
b25seV9wYWRkaW5nKSB7CisgICAgICAgIC8vIFBhZGRpbmcgaXMgc3RpbGwgZmxvd2luZywgdGVz
dCBvay4KICAgICAgICAgb2JzZXJ2YXRpb25fY29tcGxldGVfLlNldCgpOwogICAgICAgfQogICAg
ICAgcmV0dXJuIFNFTkRfUEFDS0VUOwpAQCAtMTQxNCwxMyArMTQxMywyMCBAQCBURVNUX1AoVmlk
ZW9TZW5kU3RyZWFtVGVzdCwgTm9QYWRkaW5nV2hlblZpZGVvSXNNdXRlZCkgewogICAgICAgICAg
IChsYXN0X3BhY2tldF90aW1lX21zXyA+IDAgJiYKICAgICAgICAgICAgY2xvY2tfLT5UaW1lSW5N
aWxsaXNlY29uZHMoKSAtIGxhc3RfcGFja2V0X3RpbWVfbXNfID4KICAgICAgICAgICAgICAgIGtO
b1BhY2tldHNUaHJlc2hvbGRNcykpIHsKKyAgICAgICAgLy8gTm8gcGFja2V0cyBzZWVuIGZvciB8
a05vUGFja2V0c1RocmVzaG9sZE1zfCwgcmVzdGFydCBjYW1lcmEuCiAgICAgICAgIGNhcHR1cmVy
Xy0+U3RhcnQoKTsKLSAgICAgICAgdGVzdF9zdGF0ZV8gPSBrV2FpdGluZ0ZvclBhZGRpbmdBZnRl
ckNhbWVyYVJlc3RhcnQ7CisgICAgICAgIHRlc3Rfc3RhdGVfID0ga1dhaXRpbmdGb3JNZWRpYUFm
dGVyQ2FtZXJhUmVzdGFydDsKICAgICAgIH0KICAgICAgIHJldHVybiBTRU5EX1BBQ0tFVDsKICAg
ICB9CiAKLSAgICBzaXplX3QgR2V0TnVtVmlkZW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gMzsgfQorICAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdzKAorICAgICAgICBWaWRlb1Nl
bmRTdHJlYW06OkNvbmZpZyogc2VuZF9jb25maWcsCisgICAgICAgIHN0ZDo6dmVjdG9yPFZpZGVv
UmVjZWl2ZVN0cmVhbTo6Q29uZmlnPiogcmVjZWl2ZV9jb25maWdzLAorICAgICAgICBWaWRlb0Vu
Y29kZXJDb25maWcqIGVuY29kZXJfY29uZmlnKSBvdmVycmlkZSB7CisgICAgICAvLyBNYWtlIHN1
cmUgcGFkZGluZyBpcyBzZW50IGlmIGVuY29kZXIgaXMgbm90IHByb2R1Y2luZyBtZWRpYS4KKyAg
ICAgIGVuY29kZXJfY29uZmlnLT5taW5fdHJhbnNtaXRfYml0cmF0ZV9icHMgPSA1MDAwMDsKKyAg
ICB9CiAKICAgICB2b2lkIE9uRnJhbWVHZW5lcmF0b3JDYXB0dXJlckNyZWF0ZWQoCiAgICAgICAg
IHRlc3Q6OkZyYW1lR2VuZXJhdG9yQ2FwdHVyZXIqIGZyYW1lX2dlbmVyYXRvcl9jYXB0dXJlcikg
b3ZlcnJpZGUgewpAQCAtMTQzNyw3ICsxNDQzLDggQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRl
c3QsIE5vUGFkZGluZ1doZW5WaWRlb0lzTXV0ZWQpIHsKICAgICAgIGtCZWZvcmVTdG9wQ2FwdHVy
ZSwKICAgICAgIGtXYWl0aW5nRm9yUGFkZGluZywKICAgICAgIGtXYWl0aW5nRm9yTm9QYWNrZXRz
LAotICAgICAga1dhaXRpbmdGb3JQYWRkaW5nQWZ0ZXJDYW1lcmFSZXN0YXJ0CisgICAgICBrV2Fp
dGluZ0Zvck1lZGlhQWZ0ZXJDYW1lcmFSZXN0YXJ0LAorICAgICAga1dhaXRpbmdGb3JQYWRkaW5n
QWZ0ZXJDYW1lcmFTdG9wc0FnYWluCiAgICAgfTsKIAogICAgIFRlc3RTdGF0ZSB0ZXN0X3N0YXRl
XyA9IGtCZWZvcmVTdG9wQ2FwdHVyZTsKQEAgLTE0ODEsNyArMTQ4OCw3IEBAIFRFU1RfUChWaWRl
b1NlbmRTdHJlYW1UZXN0LCBQYWRkaW5nSXNQcmltYXJpbHlSZXRyYW5zbWlzc2lvbnMpIHsKICAg
ICAgICAgdGVzdDo6U2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nKiB0YXNrX3F1ZXVl
LAogICAgICAgICBDYWxsKiBzZW5kZXJfY2FsbCkgb3ZlcnJpZGUgewogICAgICAgY29uc3QgaW50
IGtOZXR3b3JrRGVsYXlNcyA9IDUwOwotICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29u
ZmlnIGNvbmZpZzsKKyAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwog
ICAgICAgY29uZmlnLmxvc3NfcGVyY2VudCA9IDEwOwogICAgICAgY29uZmlnLmxpbmtfY2FwYWNp
dHlfa2JwcyA9IGtDYXBhY2l0eUticHM7CiAgICAgICBjb25maWcucXVldWVfZGVsYXlfbXMgPSBr
TmV0d29ya0RlbGF5TXM7CkBAIC0xNzgwLDcgKzE3ODcsNiBAQCBjbGFzcyBNYXhQYWRkaW5nU2V0
VGVzdCA6IHB1YmxpYyB0ZXN0OjpTZW5kVGVzdCB7CiAKICAgZXhwbGljaXQgTWF4UGFkZGluZ1Nl
dFRlc3QoYm9vbCB0ZXN0X3N3aXRjaF9jb250ZW50X3R5cGUsIFQqIHN0cmVhbV9yZXNldF9mdW4p
CiAgICAgICA6IFNlbmRUZXN0KHRlc3Q6OkNhbGxUZXN0OjprRGVmYXVsdFRpbWVvdXRNcyksCi0g
ICAgICAgIGNvbnRlbnRfc3dpdGNoX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAogICAgICAgICBjYWxs
XyhudWxscHRyKSwKICAgICAgICAgc2VuZF9zdHJlYW1fKG51bGxwdHIpLAogICAgICAgICBzZW5k
X3N0cmVhbV9jb25maWdfKG51bGxwdHIpLApAQCAtMTkxMCw3ICsxOTE2LDYgQEAgVEVTVF9QKFZp
ZGVvU2VuZFN0cmVhbVRlc3QsCiAgICBwdWJsaWM6CiAgICAgRW5jb2Rlck9ic2VydmVyKCkKICAg
ICAgICAgOiBGYWtlRW5jb2RlcihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpKSwKLSAgICAgICAg
ICBpbml0X2VuY29kZV9jYWxsZWRfKGZhbHNlLCBmYWxzZSksCiAgICAgICAgICAgbnVtYmVyX29m
X2luaXRpYWxpemF0aW9uc18oMCksCiAgICAgICAgICAgbGFzdF9pbml0aWFsaXplZF9mcmFtZV93
aWR0aF8oMCksCiAgICAgICAgICAgbGFzdF9pbml0aWFsaXplZF9mcmFtZV9oZWlnaHRfKDApIHt9
CkBAIC0xOTkzLDcgKzE5OTgsNiBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgQ2FuUmVj
b25maWd1cmVUb1VzZVN0YXJ0Qml0cmF0ZUFib3ZlUHJldmlvdXNNYXgpIHsKICAgIHB1YmxpYzoK
ICAgICBTdGFydEJpdHJhdGVPYnNlcnZlcigpCiAgICAgICAgIDogRmFrZUVuY29kZXIoQ2xvY2s6
OkdldFJlYWxUaW1lQ2xvY2soKSksCi0gICAgICAgICAgc3RhcnRfYml0cmF0ZV9jaGFuZ2VkXyhm
YWxzZSwgZmFsc2UpLAogICAgICAgICAgIHN0YXJ0X2JpdHJhdGVfa2Jwc18oMCkge30KICAgICBp
bnQzMl90IEluaXRFbmNvZGUoY29uc3QgVmlkZW9Db2RlYyogY29uZmlnLAogICAgICAgICAgICAg
ICAgICAgICAgICBpbnQzMl90IG51bWJlcl9vZl9jb3JlcywKQEAgLTIwNjgsMTAgKzIwNzIsNyBA
QCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgQ2FuUmVjb25maWd1cmVUb1VzZVN0YXJ0Qml0
cmF0ZUFib3ZlUHJldmlvdXNNYXgpIHsKIAogY2xhc3MgU3RhcnRTdG9wQml0cmF0ZU9ic2VydmVy
IDogcHVibGljIHRlc3Q6OkZha2VFbmNvZGVyIHsKICBwdWJsaWM6Ci0gIFN0YXJ0U3RvcEJpdHJh
dGVPYnNlcnZlcigpCi0gICAgICA6IEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNsb2Nr
KCkpLAotICAgICAgICBlbmNvZGVyX2luaXRfKGZhbHNlLCBmYWxzZSksCi0gICAgICAgIGJpdHJh
dGVfY2hhbmdlZF8oZmFsc2UsIGZhbHNlKSB7fQorICBTdGFydFN0b3BCaXRyYXRlT2JzZXJ2ZXIo
KSA6IEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpIHt9CiAgIGludDMyX3Qg
SW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBjb25maWcsCiAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IG51bWJlcl9vZl9jb3JlcywKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBt
YXhfcGF5bG9hZF9zaXplKSBvdmVycmlkZSB7CkBAIC0yMjI4LDggKzIyMjksNiBAQCBURVNUX1Ao
VmlkZW9TZW5kU3RyZWFtVGVzdCwgVmlkZW9TZW5kU3RyZWFtVXBkYXRlQWN0aXZlU2ltdWxjYXN0
TGF5ZXJzKSB7CiBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgQ2FwdHVyZXNUZXh0dXJlQW5k
VmlkZW9GcmFtZXMpIHsKICAgY2xhc3MgRnJhbWVPYnNlcnZlciA6IHB1YmxpYyBydGM6OlZpZGVv
U2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiB7CiAgICBwdWJsaWM6Ci0gICAgRnJhbWVPYnNlcnZl
cigpIDogb3V0cHV0X2ZyYW1lX2V2ZW50XyhmYWxzZSwgZmFsc2UpIHt9Ci0KICAgICB2b2lkIE9u
RnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9fZnJhbWUpIG92ZXJyaWRlIHsKICAgICAgIG91
dHB1dF9mcmFtZXNfLnB1c2hfYmFjayh2aWRlb19mcmFtZSk7CiAgICAgICBvdXRwdXRfZnJhbWVf
ZXZlbnRfLlNldCgpOwpAQCAtMjM5MiwxMSArMjM5MSw2IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJl
YW1UZXN0LCBFbmNvZGVySXNQcm9wZXJseUluaXRpYWxpemVkQW5kRGVzdHJveWVkKSB7CiAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVp
bnQzMl90IHBhY2tldExvc3MsIGludDY0X3QgcnR0KSBvdmVycmlkZSB7Ci0gICAgICBFWFBFQ1Rf
VFJVRShJc1JlYWR5Rm9yRW5jb2RlKCkpOwotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAg
aW50MzJfdCBTZXRSYXRlcyh1aW50MzJfdCBuZXdCaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUp
IG92ZXJyaWRlIHsKICAgICAgIEVYUEVDVF9UUlVFKElzUmVhZHlGb3JFbmNvZGUoKSk7CiAgICAg
ICByZXR1cm4gMDsKQEAgLTI0NTgsNyArMjQ1Miw2IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1U
ZXN0LCBFbmNvZGVyU2V0dXBQcm9wYWdhdGVzQ29tbW9uRW5jb2RlckNvbmZpZ1ZhbHVlcykgewog
ICAgIFZpZGVvQ29kZWNDb25maWdPYnNlcnZlcigpCiAgICAgICAgIDogU2VuZFRlc3Qoa0RlZmF1
bHRUaW1lb3V0TXMpLAogICAgICAgICAgIEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNs
b2NrKCkpLAotICAgICAgICAgIGluaXRfZW5jb2RlX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAogICAg
ICAgICAgIG51bV9pbml0aWFsaXphdGlvbnNfKDApLAogICAgICAgICAgIHN0cmVhbV8obnVsbHB0
ciksCiAgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyh0aGlzKSB7fQpAQCAtMjUzMCw3ICsyNTIz
LDYgQEAgY2xhc3MgVmlkZW9Db2RlY0NvbmZpZ09ic2VydmVyIDogcHVibGljIHRlc3Q6OlNlbmRU
ZXN0LAogICAgICAgICBGYWtlRW5jb2RlcihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpKSwKICAg
ICAgICAgdmlkZW9fY29kZWNfdHlwZV8odmlkZW9fY29kZWNfdHlwZSksCiAgICAgICAgIGNvZGVj
X25hbWVfKGNvZGVjX25hbWUpLAotICAgICAgICBpbml0X2VuY29kZV9ldmVudF8oZmFsc2UsIGZh
bHNlKSwKICAgICAgICAgbnVtX2luaXRpYWxpemF0aW9uc18oMCksCiAgICAgICAgIHN0cmVhbV8o
bnVsbHB0ciksCiAgICAgICAgIGVuY29kZXJfZmFjdG9yeV8odGhpcykgewpAQCAtMjUzOCwyNiAr
MjUzMCw2IEBAIGNsYXNzIFZpZGVvQ29kZWNDb25maWdPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpT
ZW5kVGVzdCwKICAgfQogCiAgcHJpdmF0ZToKLSAgY2xhc3MgVmlkZW9TdHJlYW1GYWN0b3J5Ci0g
ICAgICA6IHB1YmxpYyBWaWRlb0VuY29kZXJDb25maWc6OlZpZGVvU3RyZWFtRmFjdG9yeUludGVy
ZmFjZSB7Ci0gICBwdWJsaWM6Ci0gICAgVmlkZW9TdHJlYW1GYWN0b3J5KCkge30KLQotICAgcHJp
dmF0ZToKLSAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gQ3JlYXRlRW5jb2RlclN0cmVhbXMo
Ci0gICAgICAgIGludCB3aWR0aCwKLSAgICAgICAgaW50IGhlaWdodCwKLSAgICAgICAgY29uc3Qg
VmlkZW9FbmNvZGVyQ29uZmlnJiBlbmNvZGVyX2NvbmZpZykgb3ZlcnJpZGUgewotICAgICAgc3Rk
Ojp2ZWN0b3I8VmlkZW9TdHJlYW0+IHN0cmVhbXMgPQotICAgICAgICAgIHRlc3Q6OkNyZWF0ZVZp
ZGVvU3RyZWFtcyh3aWR0aCwgaGVpZ2h0LCBlbmNvZGVyX2NvbmZpZyk7Ci0gICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0cmVhbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3RyZWFtc1tp
XS5udW1fdGVtcG9yYWxfbGF5ZXJzID0KLSAgICAgICAgICAgIGtWaWRlb0NvZGVjQ29uZmlnT2Jz
ZXJ2ZXJOdW1iZXJPZlRlbXBvcmFsTGF5ZXJzOwotICAgICAgfQotICAgICAgcmV0dXJuIHN0cmVh
bXM7Ci0gICAgfQotICB9OwotCiAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdzKAogICAgICAgVmlk
ZW9TZW5kU3RyZWFtOjpDb25maWcqIHNlbmRfY29uZmlnLAogICAgICAgc3RkOjp2ZWN0b3I8Vmlk
ZW9SZWNlaXZlU3RyZWFtOjpDb25maWc+KiByZWNlaXZlX2NvbmZpZ3MsCkBAIC0yNTY3LDggKzI1
MzksOSBAQCBjbGFzcyBWaWRlb0NvZGVjQ29uZmlnT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6U2Vu
ZFRlc3QsCiAKICAgICBlbmNvZGVyX2NvbmZpZy0+Y29kZWNfdHlwZSA9IHZpZGVvX2NvZGVjX3R5
cGVfOwogICAgIGVuY29kZXJfY29uZmlnLT5lbmNvZGVyX3NwZWNpZmljX3NldHRpbmdzID0gR2V0
RW5jb2RlclNwZWNpZmljU2V0dGluZ3MoKTsKLSAgICBlbmNvZGVyX2NvbmZpZy0+dmlkZW9fc3Ry
ZWFtX2ZhY3RvcnkgPQotICAgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PFZpZGVvU3Ry
ZWFtRmFjdG9yeT4oKTsKKyAgICBFWFBFQ1RfRVEoMXUsIGVuY29kZXJfY29uZmlnLT5zaW11bGNh
c3RfbGF5ZXJzLnNpemUoKSk7CisgICAgZW5jb2Rlcl9jb25maWctPnNpbXVsY2FzdF9sYXllcnNb
MF0ubnVtX3RlbXBvcmFsX2xheWVycyA9CisgICAgICAgIGtWaWRlb0NvZGVjQ29uZmlnT2JzZXJ2
ZXJOdW1iZXJPZlRlbXBvcmFsTGF5ZXJzOwogICAgIGVuY29kZXJfY29uZmlnXyA9IGVuY29kZXJf
Y29uZmlnLT5Db3B5KCk7CiAgIH0KIApAQCAtMjc5NCw4ICsyNzY3LDYgQEAgVEVTVF9QKFZpZGVv
U2VuZFN0cmVhbVRlc3QsIFRyYW5zbGF0ZXNUd29MYXllclNjcmVlbmNhc3RUb1RhcmdldEJpdHJh
dGUpIHsKICAgICAgICAgY29uc3QgVmlkZW9FbmNvZGVyQ29uZmlnJiBlbmNvZGVyX2NvbmZpZykg
b3ZlcnJpZGUgewogICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+IHN0cmVhbXMgPQogICAg
ICAgICAgIHRlc3Q6OkNyZWF0ZVZpZGVvU3RyZWFtcyh3aWR0aCwgaGVpZ2h0LCBlbmNvZGVyX2Nv
bmZpZyk7Ci0gICAgICBFWFBFQ1RfRkFMU0Uoc3RyZWFtc1swXS5udW1fdGVtcG9yYWxfbGF5ZXJz
Lmhhc192YWx1ZSgpKTsKLSAgICAgIHN0cmVhbXNbMF0ubnVtX3RlbXBvcmFsX2xheWVycyA9IDI7
CiAgICAgICBSVENfQ0hFQ0tfR1Qoc3RyZWFtc1swXS5tYXhfYml0cmF0ZV9icHMsCiAgICAgICAg
ICAgICAgICAgICAga1NjcmVlbmNhc3RNYXhUYXJnZXRCaXRyYXRlRGVsdGFLYnBzKTsKICAgICAg
IHN0cmVhbXNbMF0udGFyZ2V0X2JpdHJhdGVfYnBzID0KQEAgLTI4MzMsNiArMjgwNCw4IEBAIFRF
U1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBUcmFuc2xhdGVzVHdvTGF5ZXJTY3JlZW5jYXN0VG9U
YXJnZXRCaXRyYXRlKSB7CiAgICAgICBFWFBFQ1RfRVEoMXUsIGVuY29kZXJfY29uZmlnLT5udW1i
ZXJfb2Zfc3RyZWFtcyk7CiAgICAgICBlbmNvZGVyX2NvbmZpZy0+dmlkZW9fc3RyZWFtX2ZhY3Rv
cnkgPQogICAgICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8VmlkZW9TdHJlYW1GYWN0
b3J5PigpOworICAgICAgRVhQRUNUX0VRKDF1LCBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0X2xh
eWVycy5zaXplKCkpOworICAgICAgZW5jb2Rlcl9jb25maWctPnNpbXVsY2FzdF9sYXllcnNbMF0u
bnVtX3RlbXBvcmFsX2xheWVycyA9IDI7CiAgICAgICBlbmNvZGVyX2NvbmZpZy0+Y29udGVudF90
eXBlID0gVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1NjcmVlbjsKICAgICB9CiAK
QEAgLTI4NjMsOCArMjgzNiw2IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBSZWNvbmZp
Z3VyZUJpdHJhdGVzU2V0c0VuY29kZXJCaXRyYXRlc0NvcnJlY3RseSkgewogICAgICAgICA6IFNl
bmRUZXN0KGtEZWZhdWx0VGltZW91dE1zKSwKICAgICAgICAgICBGYWtlRW5jb2RlcihDbG9jazo6
R2V0UmVhbFRpbWVDbG9jaygpKSwKICAgICAgICAgICB0YXNrX3F1ZXVlXyh0YXNrX3F1ZXVlKSwK
LSAgICAgICAgICBpbml0X2VuY29kZV9ldmVudF8oZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgICBi
aXRyYXRlX2NoYW5nZWRfZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAgICAgICAgICAgdGFyZ2V0X2Jp
dHJhdGVfKDApLAogICAgICAgICAgIG51bV9pbml0aWFsaXphdGlvbnNfKDApLAogICAgICAgICAg
IGNhbGxfKG51bGxwdHIpLApAQCAtMjkyNywxMCArMjg5OCwxMSBAQCBURVNUX1AoVmlkZW9TZW5k
U3RyZWFtVGVzdCwgUmVjb25maWd1cmVCaXRyYXRlc1NldHNFbmNvZGVyQml0cmF0ZXNDb3JyZWN0
bHkpIHsKICAgICAgIEVYUEVDVF9FUShleHBlY3RlZF9iaXRyYXRlLCB0YXJnZXRfYml0cmF0ZV8p
OwogICAgIH0KIAotICAgIHZvaWQgTW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpDb25maWcq
IGNvbmZpZykgb3ZlcnJpZGUgewotICAgICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5taW5fYml0
cmF0ZV9icHMgPSBrTWluQml0cmF0ZUticHMgKiAxMDAwOwotICAgICAgY29uZmlnLT5iaXRyYXRl
X2NvbmZpZy5zdGFydF9iaXRyYXRlX2JwcyA9IGtTdGFydEJpdHJhdGVLYnBzICogMTAwMDsKLSAg
ICAgIGNvbmZpZy0+Yml0cmF0ZV9jb25maWcubWF4X2JpdHJhdGVfYnBzID0ga01heEJpdHJhdGVL
YnBzICogMTAwMDsKKyAgICB2b2lkIE1vZGlmeVNlbmRlckJpdHJhdGVDb25maWcoCisgICAgICAg
IEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIG92ZXJyaWRlIHsKKyAgICAgIGJp
dHJhdGVfY29uZmlnLT5taW5fYml0cmF0ZV9icHMgPSBrTWluQml0cmF0ZUticHMgKiAxMDAwOwor
ICAgICAgYml0cmF0ZV9jb25maWctPnN0YXJ0X2JpdHJhdGVfYnBzID0ga1N0YXJ0Qml0cmF0ZUti
cHMgKiAxMDAwOworICAgICAgYml0cmF0ZV9jb25maWctPm1heF9iaXRyYXRlX2JwcyA9IGtNYXhC
aXRyYXRlS2JwcyAqIDEwMDA7CiAgICAgfQogCiAgICAgY2xhc3MgVmlkZW9TdHJlYW1GYWN0b3J5
CkBAIC0zMTE1LDcgKzMwODcsNyBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgUmVwb3J0
c1NlbnRSZXNvbHV0aW9uKSB7CiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KIAotI2lmICFkZWZp
bmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyNpZiBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogY2xhc3Mg
VnA5SGVhZGVyT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6U2VuZFRlc3QgewogIHB1YmxpYzoKICAg
VnA5SGVhZGVyT2JzZXJ2ZXIoKQpAQCAtMzEzNywyNiArMzEwOSw2IEBAIGNsYXNzIFZwOUhlYWRl
ck9ic2VydmVyIDogcHVibGljIHRlc3Q6OlNlbmRUZXN0IHsKICBwcml2YXRlOgogICBjb25zdCBp
bnQga1ZwOVBheWxvYWRUeXBlID0gdGVzdDo6Q2FsbFRlc3Q6OmtWaWRlb1NlbmRQYXlsb2FkVHlw
ZTsKIAotICBjbGFzcyBWaWRlb1N0cmVhbUZhY3RvcnkKLSAgICAgIDogcHVibGljIFZpZGVvRW5j
b2RlckNvbmZpZzo6VmlkZW9TdHJlYW1GYWN0b3J5SW50ZXJmYWNlIHsKLSAgIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBWaWRlb1N0cmVhbUZhY3Rvcnkoc2l6ZV90IG51bWJlcl9vZl90ZW1wb3JhbF9s
YXllcnMpCi0gICAgICAgIDogbnVtYmVyX29mX3RlbXBvcmFsX2xheWVyc18obnVtYmVyX29mX3Rl
bXBvcmFsX2xheWVycykge30KLQotICAgcHJpdmF0ZToKLSAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0
cmVhbT4gQ3JlYXRlRW5jb2RlclN0cmVhbXMoCi0gICAgICAgIGludCB3aWR0aCwKLSAgICAgICAg
aW50IGhlaWdodCwKLSAgICAgICAgY29uc3QgVmlkZW9FbmNvZGVyQ29uZmlnJiBlbmNvZGVyX2Nv
bmZpZykgb3ZlcnJpZGUgewotICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+IHN0cmVhbXMg
PQotICAgICAgICAgIHRlc3Q6OkNyZWF0ZVZpZGVvU3RyZWFtcyh3aWR0aCwgaGVpZ2h0LCBlbmNv
ZGVyX2NvbmZpZyk7Ci0gICAgICBzdHJlYW1zLmJhY2soKS5udW1fdGVtcG9yYWxfbGF5ZXJzID0g
bnVtYmVyX29mX3RlbXBvcmFsX2xheWVyc187Ci0gICAgICByZXR1cm4gc3RyZWFtczsKLSAgICB9
Ci0KLSAgICBjb25zdCBzaXplX3QgbnVtYmVyX29mX3RlbXBvcmFsX2xheWVyc187Ci0gIH07Ci0K
ICAgdm9pZCBNb2RpZnlWaWRlb0NvbmZpZ3MoCiAgICAgICBWaWRlb1NlbmRTdHJlYW06OkNvbmZp
Zyogc2VuZF9jb25maWcsCiAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1JlY2VpdmVTdHJlYW06OkNv
bmZpZz4qIHJlY2VpdmVfY29uZmlncywKQEAgLTMxNjgsOSArMzEyMCw5IEBAIGNsYXNzIFZwOUhl
YWRlck9ic2VydmVyIDogcHVibGljIHRlc3Q6OlNlbmRUZXN0IHsKICAgICBlbmNvZGVyX2NvbmZp
Zy0+ZW5jb2Rlcl9zcGVjaWZpY19zZXR0aW5ncyA9IG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8
CiAgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZzo6VnA5RW5jb2RlclNwZWNpZmljU2V0dGluZ3M+
KHZwOV9zZXR0aW5nc18pOwogICAgIEVYUEVDVF9FUSgxdSwgZW5jb2Rlcl9jb25maWctPm51bWJl
cl9vZl9zdHJlYW1zKTsKLSAgICBlbmNvZGVyX2NvbmZpZy0+dmlkZW9fc3RyZWFtX2ZhY3Rvcnkg
PQotICAgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PFZpZGVvU3RyZWFtRmFjdG9yeT4o
Ci0gICAgICAgICAgICB2cDlfc2V0dGluZ3NfLm51bWJlck9mVGVtcG9yYWxMYXllcnMpOworICAg
IEVYUEVDVF9FUSgxdSwgZW5jb2Rlcl9jb25maWctPnNpbXVsY2FzdF9sYXllcnMuc2l6ZSgpKTsK
KyAgICBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0X2xheWVyc1swXS5udW1fdGVtcG9yYWxfbGF5
ZXJzID0KKyAgICAgICAgdnA5X3NldHRpbmdzXy5udW1iZXJPZlRlbXBvcmFsTGF5ZXJzOwogICAg
IGVuY29kZXJfY29uZmlnXyA9IGVuY29kZXJfY29uZmlnLT5Db3B5KCk7CiAgIH0KIApAQCAtMzYy
OCw3ICszNTgwLDcgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIE1BWUJFX1ZwOUZsZXhN
b2RlUmVmQ291bnQpIHsKIAogICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9Ci0jZW5kaWYgIC8vICFk
ZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyNlbmRpZiAgLy8gZGVmaW5lZChSVENfRU5BQkxFX1ZQ
OSkKIAogdm9pZCBWaWRlb1NlbmRTdHJlYW1UZXN0OjpUZXN0UmVxdWVzdFNvdXJjZVJvdGF0ZVZp
ZGVvKAogICAgIGJvb2wgc3VwcG9ydF9vcmllbnRhdGlvbl9leHQpIHsKQEAgLTM2NjMsNiArMzYx
NSwzOSBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwKICAgVGVzdFJlcXVlc3RTb3VyY2VS
b3RhdGVWaWRlbyh0cnVlKTsKIH0KIAorVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIEVuY29k
ZXJDb25maWdNYXhGcmFtZXJhdGVSZXBvcnRlZFRvU291cmNlKSB7CisgIHN0YXRpYyBjb25zdCBp
bnQga01heEZwcyA9IDIyOworICBjbGFzcyBGcHNPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpTZW5k
VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdGVzdDo6RnJhbWVHZW5lcmF0b3JD
YXB0dXJlcjo6U2lua1dhbnRzT2JzZXJ2ZXIgeworICAgcHVibGljOgorICAgIEZwc09ic2VydmVy
KCkgOiBTZW5kVGVzdChrRGVmYXVsdFRpbWVvdXRNcykge30KKworICAgIHZvaWQgT25GcmFtZUdl
bmVyYXRvckNhcHR1cmVyQ3JlYXRlZCgKKyAgICAgICAgdGVzdDo6RnJhbWVHZW5lcmF0b3JDYXB0
dXJlciogZnJhbWVfZ2VuZXJhdG9yX2NhcHR1cmVyKSBvdmVycmlkZSB7CisgICAgICBmcmFtZV9n
ZW5lcmF0b3JfY2FwdHVyZXItPlNldFNpbmtXYW50c09ic2VydmVyKHRoaXMpOworICAgIH0KKwor
ICAgIHZvaWQgT25TaW5rV2FudHNDaGFuZ2VkKHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPFZpZGVv
RnJhbWU+KiBzaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Vmlk
ZW9TaW5rV2FudHMmIHdhbnRzKSBvdmVycmlkZSB7CisgICAgICBpZiAod2FudHMubWF4X2ZyYW1l
cmF0ZV9mcHMgPT0ga01heEZwcykKKyAgICAgICAgb2JzZXJ2YXRpb25fY29tcGxldGVfLlNldCgp
OworICAgIH0KKworICAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdzKAorICAgICAgICBWaWRlb1Nl
bmRTdHJlYW06OkNvbmZpZyogc2VuZF9jb25maWcsCisgICAgICAgIHN0ZDo6dmVjdG9yPFZpZGVv
UmVjZWl2ZVN0cmVhbTo6Q29uZmlnPiogcmVjZWl2ZV9jb25maWdzLAorICAgICAgICBWaWRlb0Vu
Y29kZXJDb25maWcqIGVuY29kZXJfY29uZmlnKSBvdmVycmlkZSB7CisgICAgICBlbmNvZGVyX2Nv
bmZpZy0+c2ltdWxjYXN0X2xheWVyc1swXS5tYXhfZnJhbWVyYXRlID0ga01heEZwczsKKyAgICB9
CisKKyAgICB2b2lkIFBlcmZvcm1UZXN0KCkgb3ZlcnJpZGUgeworICAgICAgRVhQRUNUX1RSVUUo
V2FpdCgpKSA8PCAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGZwcyB0byBiZSByZXBvcnRl
ZC4iOworICAgIH0KKyAgfSB0ZXN0OworCisgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKK30KKwogLy8g
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgb3ZlcmhlYWQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBiYW5k
d2lkdGggZXN0aW1hdGUgYnkKIC8vIHRlc3RpbmcgdGhhdCB0aGUgbWF4aW11bSBwb3NzaWJsZSB0
YXJnZXQgcGF5bG9hZCByYXRlIGlzIHNtYWxsZXIgdGhhbiB0aGUKIC8vIG1heGltdW0gYmFuZHdp
ZHRoIGVzdGltYXRlIGJ5IHRoZSBvdmVyaGVhZCByYXRlLgpAQCAtMzY4MCw4ICszNjY1LDcgQEAg
VEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFJlbW92ZU92ZXJoZWFkRnJvbUJhbmR3aWR0aCkg
ewogICAgICAgICAgIGVuY29kZXJfZmFjdG9yeV8odGhpcyksCiAgICAgICAgICAgY2FsbF8obnVs
bHB0ciksCiAgICAgICAgICAgbWF4X2JpdHJhdGVfYnBzXygwKSwKLSAgICAgICAgICBmaXJzdF9w
YWNrZXRfc2VudF8oZmFsc2UpLAotICAgICAgICAgIGJpdHJhdGVfY2hhbmdlZF9ldmVudF8oZmFs
c2UsIGZhbHNlKSB7fQorICAgICAgICAgIGZpcnN0X3BhY2tldF9zZW50XyhmYWxzZSkge30KIAog
ICAgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlv
biYgYml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1l
UmF0ZSkgb3ZlcnJpZGUgewpAQCAtMzg5NCw3ICszODc4LDYgQEAgY2xhc3MgQ29udGVudFN3aXRj
aFRlc3QgOiBwdWJsaWMgdGVzdDo6U2VuZFRlc3QgewogCiAgIGV4cGxpY2l0IENvbnRlbnRTd2l0
Y2hUZXN0KFQqIHN0cmVhbV9yZXNldF9mdW4pCiAgICAgICA6IFNlbmRUZXN0KHRlc3Q6OkNhbGxU
ZXN0OjprRGVmYXVsdFRpbWVvdXRNcyksCi0gICAgICAgIGNvbnRlbnRfc3dpdGNoX2V2ZW50Xyhm
YWxzZSwgZmFsc2UpLAogICAgICAgICBjYWxsXyhudWxscHRyKSwKICAgICAgICAgc3RhdGVfKFN0
cmVhbVN0YXRlOjprQmVmb3JlU3dpdGNoKSwKICAgICAgICAgc2VuZF9zdHJlYW1fKG51bGxwdHIp
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlci5jYwppbmRleCBiN2I1
YTMyNjExM2Y1N2EzZmYxNGQ5ZGIyYjAxNzIyODAwZDYyOThmLi5hMjJkNThhZGYxZWFhZGY4ODdi
YzU0YjM4N2YwZTRkNjJlNmNlZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zdHJl
YW1fZW5jb2Rlci5jYwpAQCAtMTUsOCArMTUsOSBAQAogI2luY2x1ZGUgPG51bWVyaWM+CiAjaW5j
bHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVv
L2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0
ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2lu
Y2x1ZGUvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVv
X2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5
c2l6ZS5oIgpAQCAtMzYzLDYgKzM2NCw4IEBAIFZpZGVvU3RyZWFtRW5jb2Rlcjo6VmlkZW9TdHJl
YW1FbmNvZGVyKAogICAgICAgbWF4X2ZyYW1lcmF0ZV8oLTEpLAogICAgICAgcGVuZGluZ19lbmNv
ZGVyX3JlY29uZmlndXJhdGlvbl8oZmFsc2UpLAogICAgICAgcGVuZGluZ19lbmNvZGVyX2NyZWF0
aW9uXyhmYWxzZSksCisgICAgICBjcm9wX3dpZHRoXygwKSwKKyAgICAgIGNyb3BfaGVpZ2h0Xygw
KSwKICAgICAgIGVuY29kZXJfc3RhcnRfYml0cmF0ZV9icHNfKDApLAogICAgICAgbWF4X2RhdGFf
cGF5bG9hZF9sZW5ndGhfKDApLAogICAgICAgbGFzdF9vYnNlcnZlZF9iaXRyYXRlX2Jwc18oMCks
CkBAIC0zNzYsNiArMzc5LDcgQEAgVmlkZW9TdHJlYW1FbmNvZGVyOjpWaWRlb1N0cmVhbUVuY29k
ZXIoCiAgICAgICBsYXN0X2ZyYW1lX2xvZ19tc18oY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMo
KSksCiAgICAgICBjYXB0dXJlZF9mcmFtZV9jb3VudF8oMCksCiAgICAgICBkcm9wcGVkX2ZyYW1l
X2NvdW50XygwKSwKKyAgICAgIHBlbmRpbmdfZnJhbWVfcG9zdF90aW1lX3VzXygwKSwKICAgICAg
IGJpdHJhdGVfb2JzZXJ2ZXJfKG51bGxwdHIpLAogICAgICAgZW5jb2Rlcl9xdWV1ZV8oIkVuY29k
ZXJRdWV1ZSIpIHsKICAgUlRDX0RDSEVDSyhlbmNvZGVyX3N0YXRzX29ic2VydmVyKTsKQEAgLTUz
MSwxMSArNTM1LDE0IEBAIHZvaWQgVmlkZW9TdHJlYW1FbmNvZGVyOjpSZWNvbmZpZ3VyZUVuY29k
ZXIoKSB7CiAgIGNyb3BfaGVpZ2h0XyA9IGxhc3RfZnJhbWVfaW5mb18tPmhlaWdodCAtIGhpZ2hl
c3Rfc3RyZWFtX2hlaWdodDsKIAogICBWaWRlb0NvZGVjIGNvZGVjOwotICBpZiAoIVZpZGVvQ29k
ZWNJbml0aWFsaXplcjo6U2V0dXBDb2RlYyhlbmNvZGVyX2NvbmZpZ18sIHN0cmVhbXMsICZjb2Rl
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdGVfYWxsb2Nh
dG9yXykpIHsKKyAgaWYgKCFWaWRlb0NvZGVjSW5pdGlhbGl6ZXI6OlNldHVwQ29kZWMoZW5jb2Rl
cl9jb25maWdfLCBzdHJlYW1zLCAmY29kZWMpKSB7CiAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IkZhaWxlZCB0byBjcmVhdGUgZW5jb2RlciBjb25maWd1cmF0aW9uLiI7CiAgIH0KIAorICByYXRl
X2FsbG9jYXRvcl8gPQorICAgICAgc2V0dGluZ3NfLmJpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnkt
PkNyZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRvcihjb2RlYyk7CisgIFJUQ19DSEVDSyhyYXRlX2Fs
bG9jYXRvcl8pIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGJpdHJhdGUgYWxsb2NhdG9yLiI7CisKICAg
Ly8gU2V0IG1pbl9iaXRyYXRlX2JwcywgbWF4X2JpdHJhdGVfYnBzLCBhbmQgbWF4IHBhZGRpbmcg
Yml0IHJhdGUgZm9yIFZQOS4KICAgaWYgKGVuY29kZXJfY29uZmlnXy5jb2RlY190eXBlID09IGtW
aWRlb0NvZGVjVlA5KSB7CiAgICAgUlRDX0RDSEVDS19FUSgxVSwgc3RyZWFtcy5zaXplKCkpOwpA
QCAtNjI5LDcgKzYzNiw3IEBAIHZvaWQgVmlkZW9TdHJlYW1FbmNvZGVyOjpSZWNvbmZpZ3VyZUVu
Y29kZXIoKSB7CiAKIHZvaWQgVmlkZW9TdHJlYW1FbmNvZGVyOjpDb25maWd1cmVRdWFsaXR5U2Nh
bGVyKCkgewogICBSVENfRENIRUNLX1JVTl9PTigmZW5jb2Rlcl9xdWV1ZV8pOwotICBjb25zdCBh
dXRvIHNjYWxpbmdfc2V0dGluZ3MgPSBlbmNvZGVyXy0+R2V0U2NhbGluZ1NldHRpbmdzKCk7Cisg
IGNvbnN0IGF1dG8gc2NhbGluZ19zZXR0aW5ncyA9IGVuY29kZXJfLT5HZXRFbmNvZGVySW5mbygp
LnNjYWxpbmdfc2V0dGluZ3M7CiAgIGNvbnN0IGJvb2wgcXVhbGl0eV9zY2FsaW5nX2FsbG93ZWQg
PQogICAgICAgSXNSZXNvbHV0aW9uU2NhbGluZ0VuYWJsZWQoZGVncmFkYXRpb25fcHJlZmVyZW5j
ZV8pICYmCiAgICAgICBzY2FsaW5nX3NldHRpbmdzLnRocmVzaG9sZHM7CkBAIC04ODcsNyArODk0
LDE1IEBAIHZvaWQgVmlkZW9TdHJlYW1FbmNvZGVyOjpFbmNvZGVWaWRlb0ZyYW1lKGNvbnN0IFZp
ZGVvRnJhbWUmIHZpZGVvX2ZyYW1lLAogCiAgIG92ZXJ1c2VfZGV0ZWN0b3JfLT5GcmFtZUNhcHR1
cmVkKG91dF9mcmFtZSwgdGltZV93aGVuX3Bvc3RlZF91cyk7CiAKLSAgdmlkZW9fc2VuZGVyXy5B
ZGRWaWRlb0ZyYW1lKG91dF9mcmFtZSwgbnVsbHB0cik7CisgIC8vIEVuY29kZXIgbWV0YWRhdGEg
bmVlZHMgdG8gYmUgdXBkYXRlZCBiZWZvcmUgZW5jb2RlIGNvbXBsZXRlIGNhbGxiYWNrLgorICBW
aWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIGluZm8gPSBlbmNvZGVyXy0+R2V0RW5jb2RlckluZm8o
KTsKKyAgaWYgKGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSAhPSBlbmNvZGVyX2luZm9fLmltcGxl
bWVudGF0aW9uX25hbWUpIHsKKyAgICBlbmNvZGVyX3N0YXRzX29ic2VydmVyXy0+T25FbmNvZGVy
SW1wbGVtZW50YXRpb25DaGFuZ2VkKAorICAgICAgICBpbmZvLmltcGxlbWVudGF0aW9uX25hbWUp
OworICB9CisgIGVuY29kZXJfaW5mb18gPSBpbmZvOworCisgIHZpZGVvX3NlbmRlcl8uQWRkVmlk
ZW9GcmFtZShvdXRfZnJhbWUsIG51bGxwdHIsIGVuY29kZXJfaW5mb18pOwogfQogCiB2b2lkIFZp
ZGVvU3RyZWFtRW5jb2Rlcjo6U2VuZEtleUZyYW1lKCkgewpAQCAtMTA4NSw3ICsxMTAwLDcgQEAg
dm9pZCBWaWRlb1N0cmVhbUVuY29kZXI6OkFkYXB0RG93bihBZGFwdFJlYXNvbiByZWFzb24pIHsK
ICAgICAgIGJvb2wgbWluX3BpeGVsc19yZWFjaGVkID0gZmFsc2U7CiAgICAgICBpZiAoIXNvdXJj
ZV9wcm94eV8tPlJlcXVlc3RSZXNvbHV0aW9uTG93ZXJUaGFuKAogICAgICAgICAgICAgICBhZGFw
dGF0aW9uX3JlcXVlc3QuaW5wdXRfcGl4ZWxfY291bnRfLAotICAgICAgICAgICAgICBlbmNvZGVy
Xy0+R2V0U2NhbGluZ1NldHRpbmdzKCkubWluX3BpeGVsc19wZXJfZnJhbWUsCisgICAgICAgICAg
ICAgIGVuY29kZXJfLT5HZXRFbmNvZGVySW5mbygpLnNjYWxpbmdfc2V0dGluZ3MubWluX3BpeGVs
c19wZXJfZnJhbWUsCiAgICAgICAgICAgICAgICZtaW5fcGl4ZWxzX3JlYWNoZWQpKSB7CiAgICAg
ICAgIGlmIChtaW5fcGl4ZWxzX3JlYWNoZWQpCiAgICAgICAgICAgZW5jb2Rlcl9zdGF0c19vYnNl
cnZlcl8tPk9uTWluUGl4ZWxMaW1pdFJlYWNoZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRl
b19zdHJlYW1fZW5jb2Rlci5oCmluZGV4IDQwMDg0MjZiYWM5Y2YwZTZkYzI4ZTkyODY0NDg0NzEz
MDAxMjU2ZDUuLjhjNWVmYmU1YzM2OTk5MWIzOWJjM2U5Y2Y4Mjc4ZTM2NDE2NGE4MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Zp
ZGVvX3N0cmVhbV9lbmNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXIuaApAQCAtMjY4LDYgKzI2OCw4
IEBAIGNsYXNzIFZpZGVvU3RyZWFtRW5jb2RlciA6IHB1YmxpYyBWaWRlb1N0cmVhbUVuY29kZXJJ
bnRlcmZhY2UsCiAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGxhc3RfcGFyYW1ldGVyc191cGRh
dGVfbXNfCiAgICAgICBSVENfR1VBUkRFRF9CWSgmZW5jb2Rlcl9xdWV1ZV8pOwogCisgIFZpZGVv
RW5jb2Rlcjo6RW5jb2RlckluZm8gZW5jb2Rlcl9pbmZvXyBSVENfR1VBUkRFRF9CWSgmZW5jb2Rl
cl9xdWV1ZV8pOworCiAgIC8vIEFsbCBwdWJsaWMgbWV0aG9kcyBhcmUgcHJveGllZCB0byB8ZW5j
b2Rlcl9xdWV1ZV98LiBJdCBtdXN0IG11c3QgYmUKICAgLy8gZGVzdHJveWVkIGZpcnN0IHRvIG1h
a2Ugc3VyZSBubyB0YXNrcyBhcmUgcnVuIHRoYXQgdXNlIG90aGVyIG1lbWJlcnMuCiAgIHJ0Yzo6
VGFza1F1ZXVlIGVuY29kZXJfcXVldWVfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92
aWRlb19zdHJlYW1fZW5jb2Rlcl91bml0dGVzdC5jYwppbmRleCA4MGY4ZDVhNTkyMTc1ZjNjMjI1
NzkwMzNkZTA2ZmNkYTNhYjM5MGQ3Li4wNWEyM2MwNWI0NWU3MzZkMDdkZDg3NjFiNTQ5YmUxMzRh
MjI4MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zdHJlYW1fZW5j
b2Rlcl91bml0dGVzdC5jYwpAQCAtOCwxMyArOCwxNyBAQAogICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKKyNpbmNs
dWRlICJ2aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlci5oIgorCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBp
L3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1
ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZlci5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
Y3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNz
L3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL3ZpZGVvYWRhcHRl
ci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92
cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOS9pbmNsdWRlL3ZwOV9nbG9iYWxzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19j
b2RpbmcvdXRpbGl0eS9kZWZhdWx0X3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvZmFrZWNsb2NrLmgiCkBAIC0zMCw3ICszNCw2IEBACiAjaW5jbHVkZSAidGVz
dC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3QvdmlkZW9fZW5jb2Rlcl9wcm94eV9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAidmlkZW8vc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmgiCi0jaW5jbHVkZSAidmlk
ZW8vdmlkZW9fc3RyZWFtX2VuY29kZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTEw
Miw3ICsxMDUsNyBAQCBjbGFzcyBWaWRlb1N0cmVhbUVuY29kZXJVbmRlclRlc3QgOiBwdWJsaWMg
VmlkZW9TdHJlYW1FbmNvZGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmV3IENwdU92ZXJ1c2VEZXRlY3RvclByb3h5KHN0YXRzX3Byb3h5KSkpIHt9CiAKICAgdm9pZCBQ
b3N0VGFza0FuZFdhaXQoYm9vbCBkb3duLCBBZGFwdFJlYXNvbiByZWFzb24pIHsKLSAgICBydGM6
OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgICAgcnRjOjpFdmVudCBldmVudDsKICAgICBl
bmNvZGVyX3F1ZXVlKCktPlBvc3RUYXNrKFt0aGlzLCAmZXZlbnQsIHJlYXNvbiwgZG93bl0gewog
ICAgICAgZG93biA/IEFkYXB0RG93bihyZWFzb24pIDogQWRhcHRVcChyZWFzb24pOwogICAgICAg
ZXZlbnQuU2V0KCk7CkBAIC0xMTMsNyArMTE2LDcgQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVy
VW5kZXJUZXN0IDogcHVibGljIFZpZGVvU3RyZWFtRW5jb2RlciB7CiAgIC8vIFRoaXMgaXMgdXNl
ZCBhcyBhIHN5bmNocm9uaXNhdGlvbiBtZWNoYW5pc20sIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQog
ICAvLyBlbmNvZGVyIHF1ZXVlIGlzIG5vdCBibG9ja2VkIGJlZm9yZSB3ZSBzdGFydCBzZW5kaW5n
IGl0IGZyYW1lcy4KICAgdm9pZCBXYWl0VW50aWxUYXNrUXVldWVJc0lkbGUoKSB7Ci0gICAgcnRj
OjpFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICAgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAgICAg
ZW5jb2Rlcl9xdWV1ZSgpLT5Qb3N0VGFzayhbJmV2ZW50XSB7IGV2ZW50LlNldCgpOyB9KTsKICAg
ICBBU1NFUlRfVFJVRShldmVudC5XYWl0KDUwMDApKTsKICAgfQpAQCAtMjc3LDYgKzI4MCw3IEBA
IGNsYXNzIFZpZGVvU3RyZWFtRW5jb2RlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsK
ICAgICAgICAgbWF4X2ZyYW1lcmF0ZV8oa0RlZmF1bHRGcmFtZXJhdGUpLAogICAgICAgICBmYWtl
X2VuY29kZXJfKCksCiAgICAgICAgIGVuY29kZXJfZmFjdG9yeV8oJmZha2VfZW5jb2Rlcl8pLAor
ICAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XyhDcmVhdGVCdWlsdGluVmlkZW9CaXRy
YXRlQWxsb2NhdG9yRmFjdG9yeSgpKSwKICAgICAgICAgc3RhdHNfcHJveHlfKG5ldyBNb2NrYWJs
ZVNlbmRTdGF0aXN0aWNzUHJveHkoCiAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9j
aygpLAogICAgICAgICAgICAgdmlkZW9fc2VuZF9jb25maWdfLApAQCAtMjg3LDYgKzI5MSw4IEBA
IGNsYXNzIFZpZGVvU3RyZWFtRW5jb2RlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsK
ICAgICBtZXRyaWNzOjpSZXNldCgpOwogICAgIHZpZGVvX3NlbmRfY29uZmlnXyA9IFZpZGVvU2Vu
ZFN0cmVhbTo6Q29uZmlnKG51bGxwdHIpOwogICAgIHZpZGVvX3NlbmRfY29uZmlnXy5lbmNvZGVy
X3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9ICZlbmNvZGVyX2ZhY3RvcnlfOworICAgIHZpZGVv
X3NlbmRfY29uZmlnXy5lbmNvZGVyX3NldHRpbmdzLmJpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnkg
PQorICAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKTsKICAgICB2aWRlb19z
ZW5kX2NvbmZpZ18ucnRwLnBheWxvYWRfbmFtZSA9ICJGQUtFIjsKICAgICB2aWRlb19zZW5kX2Nv
bmZpZ18ucnRwLnBheWxvYWRfdHlwZSA9IDEyNTsKIApAQCAtNDkyLDkgKzQ5OCw3IEBAIGNsYXNz
IFZpZGVvU3RyZWFtRW5jb2RlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIAogICBj
bGFzcyBUZXN0RW5jb2RlciA6IHB1YmxpYyB0ZXN0OjpGYWtlRW5jb2RlciB7CiAgICBwdWJsaWM6
Ci0gICAgVGVzdEVuY29kZXIoKQotICAgICAgICA6IEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFs
VGltZUNsb2NrKCkpLAotICAgICAgICAgIGNvbnRpbnVlX2VuY29kZV9ldmVudF8oZmFsc2UsIGZh
bHNlKSB7fQorICAgIFRlc3RFbmNvZGVyKCkgOiBGYWtlRW5jb2RlcihDbG9jazo6R2V0UmVhbFRp
bWVDbG9jaygpKSB7fQogCiAgICAgVmlkZW9Db2RlYyBjb2RlY19jb25maWcoKSBjb25zdCB7CiAg
ICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0X3NlY3RfKTsKQEAgLTUwNiwxMSArNTEwLDE0
IEBAIGNsYXNzIFZpZGVvU3RyZWFtRW5jb2RlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKICAgICAgIGJsb2NrX25leHRfZW5jb2RlXyA9IHRydWU7CiAgICAgfQogCi0gICAgVmlkZW9F
bmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qgb3ZlcnJp
ZGUgeworICAgIFZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25z
dCBvdmVycmlkZSB7CisgICAgICBFbmNvZGVySW5mbyBpbmZvOwogICAgICAgcnRjOjpDcml0U2Nv
cGUgbG9jaygmbG9jYWxfY3JpdF9zZWN0Xyk7Ci0gICAgICBpZiAocXVhbGl0eV9zY2FsaW5nXykK
LSAgICAgICAgcmV0dXJuIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzKDEsIDIsIGtNaW5Q
aXhlbHNQZXJGcmFtZSk7Ci0gICAgICByZXR1cm4gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGlu
Z3M6OmtPZmY7CisgICAgICBpZiAocXVhbGl0eV9zY2FsaW5nXykgeworICAgICAgICBpbmZvLnNj
YWxpbmdfc2V0dGluZ3MgPQorICAgICAgICAgICAgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGlu
Z3MoMSwgMiwga01pblBpeGVsc1BlckZyYW1lKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBpbmZv
OwogICAgIH0KIAogICAgIHZvaWQgQ29udGludWVFbmNvZGUoKSB7IGNvbnRpbnVlX2VuY29kZV9l
dmVudF8uU2V0KCk7IH0KQEAgLTU2OSw5ICs1NzYsOCBAQCBjbGFzcyBWaWRlb1N0cmVhbUVuY29k
ZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGludCBudW1fc3RyZWFt
cyA9IHN0ZDo6bWF4PGludD4oMSwgY29uZmlnLT5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMpOwog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9zdHJlYW1zOyArK2kpIHsKICAgICAgICAg
ICBhbGxvY2F0ZWRfdGVtcG9yYWxfbGF5ZXJzXy5lbXBsYWNlX2JhY2soCi0gICAgICAgICAgICAg
IFRlbXBvcmFsTGF5ZXJzOjpDcmVhdGVUZW1wb3JhbExheWVycygKLSAgICAgICAgICAgICAgICAg
IFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybiwKLSAgICAgICAgICAgICAgICAgIGNv
bmZpZy0+VlA4KCkubnVtYmVyT2ZUZW1wb3JhbExheWVycykpOworICAgICAgICAgICAgICBDcmVh
dGVWcDhUZW1wb3JhbExheWVycyhWcDhUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBhdHRlcm4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy0+VlA4KCkubnVt
YmVyT2ZUZW1wb3JhbExheWVycykpOwogICAgICAgICB9CiAgICAgICB9CiAgICAgICBpZiAoZm9y
Y2VfaW5pdF9lbmNvZGVfZmFpbGVkXykKQEAgLTU4Nyw3ICs1OTMsNyBAQCBjbGFzcyBWaWRlb1N0
cmVhbUVuY29kZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgaW50IGxhc3Rf
aW5wdXRfd2lkdGhfIFJUQ19HVUFSREVEX0JZKGxvY2FsX2NyaXRfc2VjdF8pID0gMDsKICAgICBp
bnQgbGFzdF9pbnB1dF9oZWlnaHRfIFJUQ19HVUFSREVEX0JZKGxvY2FsX2NyaXRfc2VjdF8pID0g
MDsKICAgICBib29sIHF1YWxpdHlfc2NhbGluZ18gUlRDX0dVQVJERURfQlkobG9jYWxfY3JpdF9z
ZWN0XykgPSB0cnVlOwotICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUZW1wb3JhbExh
eWVycz4+IGFsbG9jYXRlZF90ZW1wb3JhbF9sYXllcnNfCisgICAgc3RkOjp2ZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPFZwOFRlbXBvcmFsTGF5ZXJzPj4gYWxsb2NhdGVkX3RlbXBvcmFsX2xheWVyc18K
ICAgICAgICAgUlRDX0dVQVJERURfQlkobG9jYWxfY3JpdF9zZWN0Xyk7CiAgICAgYm9vbCBmb3Jj
ZV9pbml0X2VuY29kZV9mYWlsZWRfIFJUQ19HVUFSREVEX0JZKGxvY2FsX2NyaXRfc2VjdF8pID0g
ZmFsc2U7CiAgIH07CkBAIC01OTUsNyArNjAxLDcgQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVy
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICBjbGFzcyBUZXN0U2luayA6IHB1Ymxp
YyBWaWRlb1N0cmVhbUVuY29kZXI6OkVuY29kZXJTaW5rIHsKICAgIHB1YmxpYzoKICAgICBleHBs
aWNpdCBUZXN0U2luayhUZXN0RW5jb2RlciogdGVzdF9lbmNvZGVyKQotICAgICAgICA6IHRlc3Rf
ZW5jb2Rlcl8odGVzdF9lbmNvZGVyKSwgZW5jb2RlZF9mcmFtZV9ldmVudF8oZmFsc2UsIGZhbHNl
KSB7fQorICAgICAgICA6IHRlc3RfZW5jb2Rlcl8odGVzdF9lbmNvZGVyKSB7fQogCiAgICAgdm9p
ZCBXYWl0Rm9yRW5jb2RlZEZyYW1lKGludDY0X3QgZXhwZWN0ZWRfbnRwX3RpbWUpIHsKICAgICAg
IEVYUEVDVF9UUlVFKApAQCAtNjk0LDYgKzcwMCw3IEBAIGNsYXNzIFZpZGVvU3RyZWFtRW5jb2Rl
clRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgaW50IG1heF9mcmFtZXJhdGVfOwog
ICBUZXN0RW5jb2RlciBmYWtlX2VuY29kZXJfOwogICB0ZXN0OjpWaWRlb0VuY29kZXJQcm94eUZh
Y3RvcnkgZW5jb2Rlcl9mYWN0b3J5XzsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFs
bG9jYXRvckZhY3Rvcnk+IGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfOwogICBzdGQ6OnVuaXF1
ZV9wdHI8TW9ja2FibGVTZW5kU3RhdGlzdGljc1Byb3h5PiBzdGF0c19wcm94eV87CiAgIFRlc3RT
aW5rIHNpbmtfOwogICBBZGFwdGluZ0ZyYW1lRm9yd2FyZGVyIHZpZGVvX3NvdXJjZV87CkBAIC03
MDMsNyArNzEwLDcgQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgewogCiBURVNUX0YoVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCwgRW5jb2RlT25l
RnJhbWUpIHsKICAgdmlkZW9fc3RyZWFtX2VuY29kZXJfLT5PbkJpdHJhdGVVcGRhdGVkKGtUYXJn
ZXRCaXRyYXRlQnBzLCAwLCAwKTsKLSAgcnRjOjpFdmVudCBmcmFtZV9kZXN0cm95ZWRfZXZlbnQo
ZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBmcmFtZV9kZXN0cm95ZWRfZXZlbnQ7CiAgIHZp
ZGVvX3NvdXJjZV8uSW5jb21pbmdDYXB0dXJlZEZyYW1lKENyZWF0ZUZyYW1lKDEsICZmcmFtZV9k
ZXN0cm95ZWRfZXZlbnQpKTsKICAgV2FpdEZvckVuY29kZWRGcmFtZSgxKTsKICAgRVhQRUNUX1RS
VUUoZnJhbWVfZGVzdHJveWVkX2V2ZW50LldhaXQoa0RlZmF1bHRUaW1lb3V0TXMpKTsKQEAgLTcx
Miw3ICs3MTksNyBAQCBURVNUX0YoVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCwgRW5jb2RlT25lRnJh
bWUpIHsKIAogVEVTVF9GKFZpZGVvU3RyZWFtRW5jb2RlclRlc3QsIERyb3BzRnJhbWVzQmVmb3Jl
Rmlyc3RPbkJpdHJhdGVVcGRhdGVkKSB7CiAgIC8vIERyb3BwZWQgc2luY2Ugbm8gdGFyZ2V0IGJp
dHJhdGUgaGFzIGJlZW4gc2V0LgotICBydGM6OkV2ZW50IGZyYW1lX2Rlc3Ryb3llZF9ldmVudChm
YWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGZyYW1lX2Rlc3Ryb3llZF9ldmVudDsKICAgLy8g
VGhlIGVuY29kZXIgd2lsbCBjYWNoZSB1cCB0byBvbmUgZnJhbWUgZm9yIGEgc2hvcnQgZHVyYXRp
b24uIEFkZGluZyB0d28KICAgLy8gZnJhbWVzIG1lYW5zIHRoYXQgdGhlIGZpcnN0IGZyYW1lIHdp
bGwgYmUgZHJvcHBlZCBhbmQgdGhlIHNlY29uZCBmcmFtZSB3aWxsCiAgIC8vIGJlIHNlbnQgd2hl
biB0aGUgZW5jb2RlciBpcyBlbmFibGVkLgpAQCAtNzcwLDcgKzc3Nyw3IEBAIFRFU1RfRihWaWRl
b1N0cmVhbUVuY29kZXJUZXN0LCBEcm9wc0ZyYW1lQWZ0ZXJTdG9wKSB7CiAKICAgdmlkZW9fc3Ry
ZWFtX2VuY29kZXJfLT5TdG9wKCk7CiAgIHNpbmtfLlNldEV4cGVjdE5vRnJhbWVzKCk7Ci0gIHJ0
Yzo6RXZlbnQgZnJhbWVfZGVzdHJveWVkX2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZl
bnQgZnJhbWVfZGVzdHJveWVkX2V2ZW50OwogICB2aWRlb19zb3VyY2VfLkluY29taW5nQ2FwdHVy
ZWRGcmFtZShDcmVhdGVGcmFtZSgyLCAmZnJhbWVfZGVzdHJveWVkX2V2ZW50KSk7CiAgIEVYUEVD
VF9UUlVFKGZyYW1lX2Rlc3Ryb3llZF9ldmVudC5XYWl0KGtEZWZhdWx0VGltZW91dE1zKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy93
ZWJydGMuZ25pIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvd2Vi
cnRjLmduaQppbmRleCA2ZWNmODU5YmExMDNkMGY2ODYwNzY1OWQyOThlZWU3YzZhM2M3MTg0Li41
YzUyMTRlOGExNTdmMTZmY2E4YjgzODAzNzgyYjUyM2I1OTQ3YWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy93ZWJydGMuZ25pCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3dlYnJ0Yy5nbmkKQEAgLTks
NiArOSw3IEBAIGltcG9ydCgiLy9idWlsZC9jb25maWcvYXJtLmduaSIpCiBpbXBvcnQoIi8vYnVp
bGQvY29uZmlnL2ZlYXR1cmVzLmduaSIpCiBpbXBvcnQoIi8vYnVpbGQvY29uZmlnL21pcHMuZ25p
IikKIGltcG9ydCgiLy9idWlsZC9jb25maWcvc2FuaXRpemVycy9zYW5pdGl6ZXJzLmduaSIpCitp
bXBvcnQoIi8vYnVpbGQvY29uZmlnL3N5c3Jvb3QuZ25pIikKIGltcG9ydCgiLy9idWlsZC9jb25m
aWcvdWkuZ25pIikKIGltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pIikKIApAQCAt
MzUsNiArMzYsMTAgQEAgaWYgKGlzX21hYykgewogfQogCiBkZWNsYXJlX2FyZ3MoKSB7CisgICMg
U2V0dGluZyB0aGlzIHRvIHRydWUgd2lsbCBtYWtlIFJUQ19FWFBPUlQgKHNlZSBydGNfYmFzZS9z
eXN0ZW0vcnRjX2V4cG9ydC5oKQorICAjIGV4cGFuZCB0byBjb2RlIHRoYXQgd2lsbCBtYW5hZ2Ug
c3ltYm9scyB2aXNpYmlsaXR5LgorICBydGNfZW5hYmxlX3N5bWJvbF9leHBvcnQgPSBmYWxzZQor
CiAgICMgU2V0dGluZyB0aGlzIHRvIHRydWUgd2lsbCBkZWZpbmUgV0VCUlRDX0VYQ0xVREVfRklF
TERfVFJJQUxfREVGQVVMVCB3aGljaAogICAjIHdpbGwgdGVsbCB0aGUgcHJlLXByb2Nlc3NvciB0
byByZW1vdmUgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbiBvZiBzeW1ib2xzCiAgICMgbmVlZGVkIHRv
IHVzZSBmaWVsZF90cmlhbC4gSW4gdGhhdCBjYXNlIGEgbmV3IGltcGxlbWVudGF0aW9uIG5lZWRz
IHRvIGJlCkBAIC0xMDMsNiArMTA4LDkgQEAgZGVjbGFyZV9hcmdzKCkgewogICAjIFNldCB0aGlz
IHRvIGZhbHNlIHRvIHNraXAgYnVpbGRpbmcgY29kZSB0aGF0IHJlcXVpcmVzIFgxMS4KICAgcnRj
X3VzZV94MTEgPSB1c2VfeDExCiAKKyAgIyBTZXQgdGhpcyB0byB1c2UgUGlwZVdpcmUgb24gdGhl
IFdheWxhbmQgZGlzcGxheSBzZXJ2ZXIuCisgIHJ0Y191c2VfcGlwZXdpcmUgPSBmYWxzZQorCiAg
ICMgRW5hYmxlIHRvIHVzZSB0aGUgTW96aWxsYSBpbnRlcm5hbCBzZXR0aW5ncy4KICAgYnVpbGRf
d2l0aF9tb3ppbGxhID0gZmFsc2UKIApAQCAtMjI1LDcgKzIzMyw4IEBAIHJ0Y19saWJ2cHhfZGly
ID0gIi8vdGhpcmRfcGFydHkvbGlidnB4IgogcnRjX29wdXNfZGlyID0gIi8vdGhpcmRfcGFydHkv
b3B1cyIKIAogIyBEZXNrdG9wIGNhcHR1cmVyIGlzIHN1cHBvcnRlZCBvbmx5IG9uIFdpbmRvd3Ms
IE9TWCBhbmQgTGludXguCi1ydGNfZGVza3RvcF9jYXB0dXJlX3N1cHBvcnRlZCA9IGlzX3dpbiB8
fCBpc19tYWMgfHwgKGlzX2xpbnV4ICYmIHJ0Y191c2VfeDExKQorcnRjX2Rlc2t0b3BfY2FwdHVy
ZV9zdXBwb3J0ZWQgPQorICAgIGlzX3dpbiB8fCBpc19tYWMgfHwgKGlzX2xpbnV4ICYmIChydGNf
dXNlX3gxMSB8fCBydGNfdXNlX3BpcGV3aXJlKSkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog
IyBUZW1wbGF0ZXMKQEAgLTY0OSw2ICs2NTgsOCBAQCBpZiAoaXNfaW9zKSB7CiAgICAgfQogICB9
CiAKKyAgIyBUT0RPOiBHZW5lcmF0ZSBtb2R1bGUubW9kdWxlbWFwIGZpbGUgdG8gZW5hYmxlIHVz
ZSBpbiBTd2lmdAorICAjIHByb2plY3RzLiBTZWUgIm1hY19mcmFtZXdvcmtfYnVuZGxlX3dpdGhf
dW1icmVsbGFfaGVhZGVyIi4KICAgdGVtcGxhdGUoImlvc19mcmFtZXdvcmtfYnVuZGxlX3dpdGhf
dW1icmVsbGFfaGVhZGVyIikgewogICAgIGZvcndhcmRfdmFyaWFibGVzX2Zyb20oaW52b2tlciwg
WyAib3V0cHV0X25hbWUiIF0pCiAgICAgdW1icmVsbGFfaGVhZGVyX3BhdGggPQpAQCAtNjk5LDEy
ICs3MTAsMTcgQEAgaWYgKGlzX21hYykgewogICAgIGZvcndhcmRfdmFyaWFibGVzX2Zyb20oaW52
b2tlciwgWyAib3V0cHV0X25hbWUiIF0pCiAgICAgdGhpc190YXJnZXRfbmFtZSA9IHRhcmdldF9u
YW1lCiAgICAgdW1icmVsbGFfaGVhZGVyX3BhdGggPSAiJHRhcmdldF9nZW5fZGlyL3VtYnJlbGxh
X2hlYWRlci8kb3V0cHV0X25hbWUuaCIKKyAgICBtb2R1bGVtYXBfcGF0aCA9ICIkdGFyZ2V0X2dl
bl9kaXIvTW9kdWxlcy9tb2R1bGUubW9kdWxlbWFwIgogCiAgICAgbWFjX2ZyYW1ld29ya19idW5k
bGUodGFyZ2V0X25hbWUpIHsKICAgICAgIGZvcndhcmRfdmFyaWFibGVzX2Zyb20oaW52b2tlciwg
IioiLCBbXSkKIAogICAgICAgZnJhbWV3b3JrX3ZlcnNpb24gPSAiQSIKLSAgICAgIGZyYW1ld29y
a19jb250ZW50cyA9IFsgIkhlYWRlcnMiIF0KKyAgICAgIGZyYW1ld29ya19jb250ZW50cyA9IFsK
KyAgICAgICAgIkhlYWRlcnMiLAorICAgICAgICAiTW9kdWxlcyIsCisgICAgICAgICJSZXNvdXJj
ZXMiLAorICAgICAgXQogCiAgICAgICBsZGZsYWdzID0gWwogICAgICAgICAiLWFsbF9sb2FkIiwK
QEAgLTcxNCw3ICs3MzAsOSBAQCBpZiAoaXNfbWFjKSB7CiAKICAgICAgIGRlcHMgKz0gWwogICAg
ICAgICAiOmNvcHlfZnJhbWV3b3JrX2hlYWRlcnNfJHRoaXNfdGFyZ2V0X25hbWUiLAorICAgICAg
ICAiOmNvcHlfbW9kdWxlbWFwXyR0aGlzX3RhcmdldF9uYW1lIiwKICAgICAgICAgIjpjb3B5X3Vt
YnJlbGxhX2hlYWRlcl8kdGhpc190YXJnZXRfbmFtZSIsCisgICAgICAgICI6bW9kdWxlbWFwXyR0
aGlzX3RhcmdldF9uYW1lIiwKICAgICAgICAgIjp1bWJyZWxsYV9oZWFkZXJfJHRoaXNfdGFyZ2V0
X25hbWUiLAogICAgICAgXQogICAgIH0KQEAgLTcyNyw2ICs3NDUsMzEgQEAgaWYgKGlzX21hYykg
ewogICAgICAgXQogICAgIH0KIAorICAgIGFjdGlvbigibW9kdWxlbWFwXyR0aGlzX3RhcmdldF9u
YW1lIikgeworICAgICAgc2NyaXB0ID0gIi8vdG9vbHNfd2VicnRjL2lvcy9nZW5lcmF0ZV9tb2R1
bGVtYXAucHkiCisgICAgICBhcmdzID0gWworICAgICAgICAiLS1vdXQiLAorICAgICAgICByZWJh
c2VfcGF0aChtb2R1bGVtYXBfcGF0aCwgcm9vdF9idWlsZF9kaXIpLAorICAgICAgICAiLS1uYW1l
IiwKKyAgICAgICAgb3V0cHV0X25hbWUsCisgICAgICBdCisgICAgICBvdXRwdXRzID0gWworICAg
ICAgICBtb2R1bGVtYXBfcGF0aCwKKyAgICAgIF0KKyAgICB9CisKKyAgICBidW5kbGVfZGF0YSgi
Y29weV9tb2R1bGVtYXBfJHRoaXNfdGFyZ2V0X25hbWUiKSB7CisgICAgICBzb3VyY2VzID0gWwor
ICAgICAgICBtb2R1bGVtYXBfcGF0aCwKKyAgICAgIF0KKyAgICAgIG91dHB1dHMgPSBbCisgICAg
ICAgICJ7e2J1bmRsZV9jb250ZW50c19kaXJ9fS9Nb2R1bGVzL21vZHVsZS5tb2R1bGVtYXAiLAor
ICAgICAgXQorICAgICAgZGVwcyA9IFsKKyAgICAgICAgIjptb2R1bGVtYXBfJHRoaXNfdGFyZ2V0
X25hbWUiLAorICAgICAgXQorICAgIH0KKwogICAgIGFjdGlvbigidW1icmVsbGFfaGVhZGVyXyR0
aGlzX3RhcmdldF9uYW1lIikgewogICAgICAgZm9yd2FyZF92YXJpYWJsZXNfZnJvbShpbnZva2Vy
LCBbICJzb3VyY2VzIiBdKQogCkBAIC03NjksMTQgKzgxMiwxNCBAQCBpZiAoaXNfYW5kcm9pZCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmlsaXR5IiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSkKIAotICAgICAgamF2YWNfYXJncyA9IFtdCisgICAgICBl
cnJvcnByb25lX2FyZ3MgPSBbXQogCiAgICAgICAjIFRyZWF0IHdhcm5pbmdzIGFzIGVycm9ycy4K
LSAgICAgIGphdmFjX2FyZ3MgKz0gWyAiLVdlcnJvciIgXQorICAgICAgZXJyb3Jwcm9uZV9hcmdz
ICs9IFsgIi1XZXJyb3IiIF0KIAogICAgICAgIyBUT0RPKGNyYnVnLmNvbS84MjQ2NzkpOiBGaW5k
IG91dCB3aHkgdGhpcyBmYWlscyBpbiBDaHJvbWl1bQogICAgICAgaWYgKCFidWlsZF93aXRoX2No
cm9taXVtKSB7Ci0gICAgICAgIGphdmFjX2FyZ3MgKz0gWworICAgICAgICBlcnJvcnByb25lX2Fy
Z3MgKz0gWwogICAgICAgICAgICItWGVwOlBhcmFtZXRlck5vdE51bGxhYmxlOkVSUk9SIiwKICAg
ICAgICAgICAiLVhlcDpGaWVsZE1pc3NpbmdOdWxsYWJsZTpFUlJPUiIsCiAgICAgICAgICAgIi1Y
ZXA6UmV0dXJuTWlzc2luZ051bGxhYmxlOkVSUk9SIiwKQEAgLTc4NCw4ICs4MjcsOCBAQCBpZiAo
aXNfYW5kcm9pZCkgewogICAgICAgfQogCiAgICAgICAjIEFkZCBhbnkgYXJndW1lbnRzIGRlZmlu
ZWQgYnkgdGhlIGludm9rZXIuCi0gICAgICBpZiAoZGVmaW5lZChpbnZva2VyLmphdmFjX2FyZ3Mp
KSB7Ci0gICAgICAgIGphdmFjX2FyZ3MgKz0gaW52b2tlci5qYXZhY19hcmdzCisgICAgICBpZiAo
ZGVmaW5lZChpbnZva2VyLmVycm9ycHJvbmVfYXJncykpIHsKKyAgICAgICAgZXJyb3Jwcm9uZV9h
cmdzICs9IGludm9rZXIuZXJyb3Jwcm9uZV9hcmdzCiAgICAgICB9CiAKICAgICAgIGlmICghZGVm
aW5lZChkZXBzKSkgewpAQCAtODA5LDExICs4NTIsMTEgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKIAogICAgICAgIyBUcmVhdCB3YXJuaW5ncyBh
cyBlcnJvcnMuCi0gICAgICBqYXZhY19hcmdzID0gWyAiLVdlcnJvciIgXQorICAgICAgZXJyb3Jw
cm9uZV9hcmdzID0gWyAiLVdlcnJvciIgXQogCiAgICAgICAjIFRPRE8oY3JidWcuY29tLzgyNDY3
OSk6IEZpbmQgb3V0IHdoeSB0aGlzIGZhaWxzIGluIENocm9taXVtCiAgICAgICBpZiAoIWJ1aWxk
X3dpdGhfY2hyb21pdW0pIHsKLSAgICAgICAgamF2YWNfYXJncyArPSBbCisgICAgICAgIGVycm9y
cHJvbmVfYXJncyArPSBbCiAgICAgICAgICAgIi1YZXA6UGFyYW1ldGVyTm90TnVsbGFibGU6RVJS
T1IiLAogICAgICAgICAgICItWGVwOkZpZWxkTWlzc2luZ051bGxhYmxlOkVSUk9SIiwKICAgICAg
ICAgICAiLVhlcDpSZXR1cm5NaXNzaW5nTnVsbGFibGU6RVJST1IiLApAQCAtODQxLDExICs4ODQs
MTEgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkK
IAogICAgICAgIyBUcmVhdCB3YXJuaW5ncyBhcyBlcnJvcnMuCi0gICAgICBqYXZhY19hcmdzID0g
WyAiLVdlcnJvciIgXQorICAgICAgZXJyb3Jwcm9uZV9hcmdzID0gWyAiLVdlcnJvciIgXQogCiAg
ICAgICAjIFRPRE8oY3JidWcuY29tLzgyNDY3OSk6IEZpbmQgb3V0IHdoeSB0aGlzIGZhaWxzIGlu
IENocm9taXVtCiAgICAgICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKLSAgICAgICAgamF2
YWNfYXJncyArPSBbCisgICAgICAgIGVycm9ycHJvbmVfYXJncyArPSBbCiAgICAgICAgICAgIi1Y
ZXA6UGFyYW1ldGVyTm90TnVsbGFibGU6RVJST1IiLAogICAgICAgICAgICItWGVwOkZpZWxkTWlz
c2luZ051bGxhYmxlOkVSUk9SIiwKICAgICAgICAgICAiLVhlcDpSZXR1cm5NaXNzaW5nTnVsbGFi
bGU6RVJST1IiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dlYktp
dC8wMDAxLWxpYndlYnJ0Yy1jaGFuZ2VzLnBhdGNoIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1dlYktpdC8wMDAxLWxpYndlYnJ0Yy1jaGFuZ2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2YjAxMzRiYjJkMWEwZjA0NDYxNjc4ZTFmNGJkNThiZDc0ZmFlZmQyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9XZWJLaXQvMDAwMS1saWJ3ZWJydGMtY2hhbmdlcy5wYXRjaAorKysg
L2Rldi9udWxsCkBAIC0xLDIwODIgKzAsMCBAQAotRnJvbSAzOGE4MzgyODQ1NTI3MTFkNjIyOGRi
OWJhYjJkZWM3Mjg0MDIwOThkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWW91ZW5u
IEZhYmxldCA8eW91ZW5uQGFwcGxlLmNvbT4KLURhdGU6IE1vbiwgOCBPY3QgMjAxOCAxMDozODox
MiAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvMl0gbGlid2VicnRjIGNoYW5nZXMKLQotLS0tCi0g
Li4uL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYyAgIHwgICAyICstCi0g
Li4uL2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXR5cGVzLmNjIHwgICA0ICstCi0g
Li4uL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MgICAgIHwgICA0ICstCi0g
Li4uL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjICAgIHwgICA0ICstCi0g
Li4uL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjIHwgICAyICstCi0g
Li4uL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmNjIHwgICA0ICstCi0g
Li4uL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MgICAgICAgICAgIHwgICAyICstCi0g
Li4uL2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYyAgICAgICAgIHwgICA0ICstCi0g
Li4uL25ldGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJjZS5jYyAgICAgICAgICAgIHwgICAyICstCi0g
Li4uL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYyAgICAgICAgIHwgIDEwICsKLSAu
Li4vbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVyLmggfCAgIDIgKy0KLSAu
Li4vU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgfCAgIDQgKy0KLSAu
Li4vd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNjICAgICAgfCAgIDIgKy0KLSAu
Li4vbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmggfCAgIDYgKy0KLSAu
Li4vbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MgfCAgIDYgKy0KLSAu
Li4vU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5oICAgICAgICAgfCAgIDIgKy0KLSAu
Li4vU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmNjICAgICAgICAgfCAgNTQgKystCi0g
Li4uL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX3VuaXR0ZXN0LmNjICAgICAgIHwgICAyICstCi0g
Li4uL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV2ZXJfZGVzdHJveWVkLmggIHwgIDY5ICsrKysK
LSAuLi4vcnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oICAgICAgfCAgIDQgKy0K
LSAuLi4vd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5jYyAgICAgfCAgIDggKy0K
LSAuLi4vU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmggfCAgIDQgKy0K
LSAuLi4vd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuY2MgICAgfCAgIDMgKy0K
LSAuLi4vUGVlckNvbm5lY3Rpb24vUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tICAgfCAgNTggKysr
Ci0gLi4uL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1tIHwgICA0ICst
Ci0gLi4uL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5oIHwgICAxICsK
LSAuLi4vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5oICAgICAgICAgfCAgIDcgKwot
IC4uLi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLm1tICAgICAgICB8ICA1MiArKy0K
LSAuLi4vYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29kZWNDb25zdGFudHMubW0gfCAgIDQgKy0K
LSAuLi4vb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyVlA4LmggfCAgIDEgKwot
IC4uLi9SVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tICAgICAgICAgICB8ICAgNSArCi0g
Li4uL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVJNDIwQnVmZmVyLmggIHwgICAxICsKLSAu
Li4vUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIuaCAgICAgICAgICAgICAgfCAgIDEgKwotIC4u
Li9zZGsvb2JqYy9iYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmggICAgICB8ICAgMSArCi0gLi4u
L3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5oICAgIHwgICAyICsKLSAuLi4v
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLm0gICAgfCAgIDEgKwotIC4uLi93
ZWJydGMvc2RrL29iamMvYmFzZS9SVENJNDIwQnVmZmVyLmggICAgICB8ICAgMSArCi0gLi4uL3Nk
ay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5oIHwgICAxICsKLSAuLi4vc2Rr
L29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0gfCAgIDMgKy0KLSAuLi4vd2Vi
cnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9Db2RlY0luZm8uaCAgfCAgIDEgKwotIC4uLi93ZWJy
dGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXIuaCAgICB8ICAgMSArCi0gLi4uL3Nkay9v
YmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS5oICAgIHwgICAxICsKLSAuLi4vd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyLmggICAgfCAgIDggKy0KLSAuLi4vc2RrL29i
amMvYmFzZS9SVENWaWRlb0VuY29kZXJGYWN0b3J5LmggICAgfCAgIDEgKwotIC4uLi9vYmpjL2Jh
c2UvUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmggICB8ICAgMSArCi0gLi4uL3Nkay9vYmpj
L2Jhc2UvUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MuaCAgIHwgICA2ICsKLSAuLi4vd2VicnRjL3Nk
ay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZS5oICAgICAgfCAgIDEgKwotIC4uLi9zZGsvb2JqYy9i
YXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCAgICAgICB8ICAgMSArCi0gLi4uL3ZpZGVvX2NvZGVj
L1JUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5oICAgIHwgICAzICstCi0gLi4uL1JUQ0RlZmF1bHRW
aWRlb0RlY29kZXJGYWN0b3J5LmggICAgICAgICAgIHwgICAxICsKLSAuLi4vUlRDRGVmYXVsdFZp
ZGVvRW5jb2RlckZhY3RvcnkuaCAgICAgICAgICAgfCAgIDEgKwotIC4uLi92aWRlb19jb2RlYy9S
VENIMjY0UHJvZmlsZUxldmVsSWQuaCAgICAgICB8ICAgMSArCi0gLi4uL3ZpZGVvX2NvZGVjL1JU
Q0gyNjRQcm9maWxlTGV2ZWxJZC5tbSAgICAgIHwgIDE2ICstCi0gLi4uL3ZpZGVvX2NvZGVjL1JU
Q1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0LmggIHwgICAxICsKLSAuLi4vdmlkZW9fY29kZWMvUlRD
VmlkZW9EZWNvZGVySDI2NC5oICAgICAgICAgfCAgIDEgKwotIC4uLi92aWRlb19jb2RlYy9SVENW
aWRlb0VuY29kZXJGYWN0b3J5SDI2NC5oICB8ICAgMSArCi0gLi4uL3ZpZGVvX2NvZGVjL1JUQ1Zp
ZGVvRW5jb2RlckgyNjQuaCAgICAgICAgIHwgICAxICsKLSAuLi4vdmlkZW9fY29kZWMvUlRDVmlk
ZW9FbmNvZGVySDI2NC5tbSAgICAgICAgfCAzODIgKysrKysrKysrKysrKystLS0tCi0gLi4uL29i
amMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmNjICAgIHwgIDE2ICstCi0gLi4uL3Nk
ay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5oIHwgIDEwICstCi0gLi4uL3Zp
ZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVmZmVyLmggICAgIHwgICAxICsKLSAuLi4vbmF0
aXZlL3NyYy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbSAgfCAgIDYgKwotIDYyIGZpbGVz
IGNoYW5nZWQsIDYzNyBpbnNlcnRpb25zKCspLCAxNzIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL25ldmVyX2Rlc3Ryb3llZC5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL0ZyYW1ld29yay9DbGFzc2VzL1Bl
ZXJDb25uZWN0aW9uL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbQotCi1kaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9p
bGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MK
LWluZGV4IGVmY2VmMzgyZmY3Li4yYWU3NTQ3NGNjZCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRp
b19lbmNvZGVyX2lsYmMuY2MKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKLUBA
IC0zMyw3ICszMyw3IEBAIGludCBHZXRJbGJjQml0cmF0ZShpbnQgcHRpbWUpIHsKLSAgICAgICAv
LyA1MCBieXRlcyBwZXIgZnJhbWUgb2YgMzAgbXMgPT4gKGFwcHJveCkgMTMzMzMgYml0cy9zLgot
ICAgICAgIHJldHVybiAxMzMzMzsKLSAgICAgZGVmYXVsdDoKLS0gICAgICBGQVRBTCgpOwotKyAg
ICAgIFJUQ19GQVRBTCgpOwotICAgfQotIH0KLSB9ICAvLyBuYW1lc3BhY2UKLWRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWF0eXBl
cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRp
YXR5cGVzLmNjCi1pbmRleCA1OTk1NDJkYjA4Zi4uMTQwZDBhZTk2MjUgMTAwNjQ0Ci0tLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWF0eXBlcy5j
YwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21l
ZGlhdHlwZXMuY2MKLUBAIC0yOCw3ICsyOCw3IEBAIHN0ZDo6c3RyaW5nIE1lZGlhVHlwZVRvU3Ry
aW5nKE1lZGlhVHlwZSB0eXBlKSB7Ci0gICAgIGNhc2UgTUVESUFfVFlQRV9EQVRBOgotICAgICAg
IHJldHVybiBrTWVkaWFUeXBlRGF0YTsKLSAgIH0KLS0gIEZBVEFMKCk7Ci0rICBSVENfRkFUQUwo
KTsKLSAgIC8vIE5vdCByZWFjaGFibGU7IGF2b2lkcyBjb21waWxlIHdhcm5pbmcuCi0gICByZXR1
cm4gIiI7Ci0gfQotQEAgLTQxLDcgKzQxLDcgQEAgTWVkaWFUeXBlIE1lZGlhVHlwZUZyb21TdHJp
bmcoY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGVfc3RyKSB7Ci0gICB9IGVsc2UgaWYgKHR5cGVfc3Ry
ID09IGtNZWRpYVR5cGVEYXRhKSB7Ci0gICAgIHJldHVybiBNRURJQV9UWVBFX0RBVEE7Ci0gICB9
Ci0tICBGQVRBTCgpOwotKyAgUlRDX0ZBVEFMKCk7Ci0gICAvLyBOb3QgcmVhY2hhYmxlOyBhdm9p
ZHMgY29tcGlsZSB3YXJuaW5nLgotICAgcmV0dXJuIHN0YXRpY19jYXN0PE1lZGlhVHlwZT4oLTEp
OwotIH0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4X3Jlc2FtcGxlLmNjCi1pbmRleCBlZGE3MGM3YzM3
OC4uOTcyMjJlOTQ3YTQgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYwotKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MKLUBA
IC01OCw3ICs1OCw3IEBAIHZvaWQgUmVtaXhBbmRSZXNhbXBsZShjb25zdCBpbnQxNl90KiBzcmNf
ZGF0YSwKLSAKLSAgIGlmIChyZXNhbXBsZXItPkluaXRpYWxpemVJZk5lZWRlZChzYW1wbGVfcmF0
ZV9oeiwgZHN0X2ZyYW1lLT5zYW1wbGVfcmF0ZV9oel8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXVkaW9fcHRyX251bV9jaGFubmVscykgPT0gLTEpIHsKLS0gICAgRkFU
QUwoKSA8PCAiSW5pdGlhbGl6ZUlmTmVlZGVkIGZhaWxlZDogc2FtcGxlX3JhdGVfaHogPSAiIDw8
IHNhbXBsZV9yYXRlX2h6Ci0rICAgIFJUQ19GQVRBTCgpIDw8ICJJbml0aWFsaXplSWZOZWVkZWQg
ZmFpbGVkOiBzYW1wbGVfcmF0ZV9oeiA9ICIgPDwgc2FtcGxlX3JhdGVfaHoKLSAgICAgICAgICAg
ICA8PCAiLCBkc3RfZnJhbWUtPnNhbXBsZV9yYXRlX2h6XyA9ICIgPDwgZHN0X2ZyYW1lLT5zYW1w
bGVfcmF0ZV9oel8KLSAgICAgICAgICAgICA8PCAiLCBhdWRpb19wdHJfbnVtX2NoYW5uZWxzID0g
IiA8PCBhdWRpb19wdHJfbnVtX2NoYW5uZWxzOwotICAgfQotQEAgLTcyLDcgKzcyLDcgQEAgdm9p
ZCBSZW1peEFuZFJlc2FtcGxlKGNvbnN0IGludDE2X3QqIHNyY19kYXRhLAotICAgICAgIHJlc2Ft
cGxlci0+UmVzYW1wbGUoYXVkaW9fcHRyLCBzcmNfbGVuZ3RoLCBkc3RfZnJhbWUtPm11dGFibGVf
ZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9GcmFtZTo6a01heERhdGFT
aXplU2FtcGxlcyk7Ci0gICBpZiAob3V0X2xlbmd0aCA9PSAtMSkgewotLSAgICBGQVRBTCgpIDw8
ICJSZXNhbXBsZSBmYWlsZWQ6IGF1ZGlvX3B0ciA9ICIgPDwgYXVkaW9fcHRyCi0rICAgIFJUQ19G
QVRBTCgpIDw8ICJSZXNhbXBsZSBmYWlsZWQ6IGF1ZGlvX3B0ciA9ICIgPDwgYXVkaW9fcHRyCi0g
ICAgICAgICAgICAgPDwgIiwgc3JjX2xlbmd0aCA9ICIgPDwgc3JjX2xlbmd0aAotICAgICAgICAg
ICAgIDw8ICIsIGRzdF9mcmFtZS0+bXV0YWJsZV9kYXRhKCkgPSAiIDw8IGRzdF9mcmFtZS0+bXV0
YWJsZV9kYXRhKCk7Ci0gICB9Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjCi1p
bmRleCAwMDg4OTFmOWNmYi4uMDIwOWY1MmQyYzcgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKLSsr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRp
by93YXZfZmlsZS5jYwotQEAgLTUzLDcgKzUzLDcgQEAgV2F2UmVhZGVyOjpXYXZSZWFkZXIocnRj
OjpQbGF0Zm9ybUZpbGUgZmlsZSkgewotICAgICBpZiAoIXJ0Yzo6Q2xvc2VQbGF0Zm9ybUZpbGUo
ZmlsZSkpIHsKLSAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ2FuJ3QgY2xvc2UgZmlsZS4i
OwotICAgICB9Ci0tICAgIEZBVEFMKCkgPDwgIkNvdWxkIG5vdCBvcGVuIHdhdiBmaWxlIGZvciBy
ZWFkaW5nLiI7Ci0rICAgIFJUQ19GQVRBTCgpIDw8ICJDb3VsZCBub3Qgb3BlbiB3YXYgZmlsZSBm
b3IgcmVhZGluZy4iOwotICAgfQotIAotICAgUmVhZGFibGVXYXZGaWxlIHJlYWRhYmxlKGZpbGVf
aGFuZGxlXyk7Ci1AQCAtMTM4LDcgKzEzOCw3IEBAIFdhdldyaXRlcjo6V2F2V3JpdGVyKHJ0Yzo6
UGxhdGZvcm1GaWxlIGZpbGUsCi0gICAgIGlmICghcnRjOjpDbG9zZVBsYXRmb3JtRmlsZShmaWxl
KSkgewotICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBjbG9zZSBmaWxlLiI7Ci0g
ICAgIH0KLS0gICAgRkFUQUwoKSA8PCAiQ291bGQgbm90IG9wZW4gd2F2IGZpbGUgZm9yIHdyaXRp
bmcuIjsKLSsgICAgUlRDX0ZBVEFMKCkgPDwgIkNvdWxkIG5vdCBvcGVuIHdhdiBmaWxlIGZvciB3
cml0aW5nLiI7Ci0gICB9Ci0gCi0gICBSVENfQ0hFQ0soQ2hlY2tXYXZQYXJhbWV0ZXJzKG51bV9j
aGFubmVsc18sIHNhbXBsZV9yYXRlXywga1dhdkZvcm1hdCwKLWRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJh
bWVfYnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5jYwotaW5kZXggMmNkMGIyOTBmMTUuLmJl
MGI0OTI3YmJlIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5jYwotKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2Zy
YW1lX2J1ZmZlci5jYwotQEAgLTMyMyw3ICszMjMsNyBAQCBydGM6OnNjb3BlZF9yZWZwdHI8UGxh
bmFyWXV2QnVmZmVyPiBXcmFwWXV2QnVmZmVyKAotICAgICAgIHJldHVybiBXcmFwSTQ0NEJ1ZmZl
cih3aWR0aCwgaGVpZ2h0LCB5X3BsYW5lLCB5X3N0cmlkZSwgdV9wbGFuZSwgdV9zdHJpZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZfcGxhbmUsIHZfc3RyaWRlLCBub19sb25nZXJf
dXNlZCk7Ci0gICAgIGRlZmF1bHQ6Ci0tICAgICAgRkFUQUwoKSA8PCAiVW5leHBlY3RlZCBmcmFt
ZSBidWZmZXIgdHlwZS4iOwotKyAgICAgIFJUQ19GQVRBTCgpIDw8ICJVbmV4cGVjdGVkIGZyYW1l
IGJ1ZmZlciB0eXBlLiI7Ci0gICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICB9Ci0gfQotZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29k
ZWMuY2MKLWluZGV4IDBhOWNlMTE3ZTJiLi40NWQ3OGQ3NGE1ZCAxMDA2NDQKLS0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2FjbTIvcmVudF9hX2NvZGVjLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5jYwot
QEAgLTIxMSw3ICsyMTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBDcmVhdGVD
bmdFbmNvZGVyKAotICAgICAgIGNvbmZpZy52YWRfbW9kZSA9IFZhZDo6a1ZhZFZlcnlBZ2dyZXNz
aXZlOwotICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotLSAgICAgIEZBVEFMKCk7Ci0rICAg
ICAgUlRDX0ZBVEFMKCk7Ci0gICB9Ci0gICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5j
b2Rlcj4obmV3IEF1ZGlvRW5jb2RlckNuZyhzdGQ6Om1vdmUoY29uZmlnKSkpOwotIH0KLUBAIC0y
MjYsNyArMjI2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4gQ3JlYXRlSXNhY0Rl
Y29kZXIoCi0gICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4oCi0gICAgICAg
bmV3IEF1ZGlvRGVjb2RlcklzYWNGbG9hdEltcGwoc2FtcGxlX3JhdGVfaHosIGJ3aW5mbykpOwot
ICNlbHNlCi0tICBGQVRBTCgpIDw8ICJpU0FDIGlzIG5vdCBzdXBwb3J0ZWQuIjsKLSsgIFJUQ19G
QVRBTCgpIDw8ICJpU0FDIGlzIG5vdCBzdXBwb3J0ZWQuIjsKLSAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9EZWNvZGVyPigpOwotICNlbmRpZgotIH0KLWRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19l
bmNvZGVyX2NuZy5jYwotaW5kZXggNGNkYTM0MDFmYTIuLjA1NTE5MDQ5N2E1IDEwMDY0NAotLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5jYwotKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29k
ZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5jYwotQEAgLTEzOSw3ICsxMzksNyBAQCBBdWRpb0Vu
Y29kZXI6OkVuY29kZWRJbmZvIEF1ZGlvRW5jb2RlckNuZzo6RW5jb2RlSW1wbCgKLSAgICAgICBi
cmVhazsKLSAgICAgfQotICAgICBjYXNlIFZhZDo6a0Vycm9yOiB7Ci0tICAgICAgRkFUQUwoKTsg
IC8vIEZhaWxzIG9ubHkgaWYgZmVkIGludmFsaWQgZGF0YS4KLSsgICAgICBSVENfRkFUQUwoKTsg
IC8vIEZhaWxzIG9ubHkgaWYgZmVkIGludmFsaWQgZGF0YS4KLSAgICAgICBicmVhazsKLSAgICAg
fQotICAgfQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxi
Yy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYwotaW5kZXggODQ2
OTVlMzc2MzAuLmRhZTk1NmIzMGMwIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVk
aW9fZW5jb2Rlcl9pbGJjLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVy
X2lsYmMuY2MKLUBAIC00MCw3ICs0MCw3IEBAIGludCBHZXRJbGJjQml0cmF0ZShpbnQgcHRpbWUp
IHsKLSAgICAgICAvLyA1MCBieXRlcyBwZXIgZnJhbWUgb2YgMzAgbXMgPT4gKGFwcHJveCkgMTMz
MzMgYml0cy9zLgotICAgICAgIHJldHVybiAxMzMzMzsKLSAgICAgZGVmYXVsdDoKLS0gICAgICBG
QVRBTCgpOwotKyAgICAgIFJUQ19GQVRBTCgpOwotICAgfQotIH0KLSAKLUBAIC0xNDcsNyArMTQ3
LDcgQEAgc2l6ZV90IEF1ZGlvRW5jb2RlcklsYmNJbXBsOjpSZXF1aXJlZE91dHB1dFNpemVCeXRl
cygpIGNvbnN0IHsKLSAgICAgY2FzZSA2OgotICAgICAgIHJldHVybiAyICogNTA7Ci0gICAgIGRl
ZmF1bHQ6Ci0tICAgICAgRkFUQUwoKTsKLSsgICAgICBSVENfRkFUQUwoKTsKLSAgIH0KLSB9Ci0g
Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmNjCi1pbmRleCA4MDZiYmE3YTlmZS4uN2Jm
N2Q1MjA4M2MgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2Uu
Y2MKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJjZS5jYwotQEAgLTg5LDcg
Kzg5LDcgQEAgYm9vbCBSdHBGaWxlU291cmNlOjpPcGVuRmlsZShjb25zdCBzdGQ6OnN0cmluZyYg
ZmlsZV9uYW1lKSB7Ci0gICAgIHJldHVybiB0cnVlOwotICAgcnRwX3JlYWRlcl8ucmVzZXQoUnRw
RmlsZVJlYWRlcjo6Q3JlYXRlKFJ0cEZpbGVSZWFkZXI6OmtQY2FwLCBmaWxlX25hbWUpKTsKLSAg
IGlmICghcnRwX3JlYWRlcl8pIHsKLS0gICAgRkFUQUwoKSA8PCAiQ291bGRuJ3Qgb3BlbiBpbnB1
dCBmaWxlIGFzIGVpdGhlciBhIHJ0cGR1bXAgb3IgLnBjYXAuIE5vdGUgIgotKyAgICBSVENfRkFU
QUwoKSA8PCAiQ291bGRuJ3Qgb3BlbiBpbnB1dCBmaWxlIGFzIGVpdGhlciBhIHJ0cGR1bXAgb3Ig
LnBjYXAuIE5vdGUgIgotICAgICAgICAgICAgICAgICJ0aGF0IC5wY2FwbmcgaXMgbm90IHN1cHBv
cnRlZC4iOwotICAgfQotICAgcmV0dXJuIHRydWU7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MK
LWluZGV4IGQwNzBmNmVjZWU4Li5jNjZjNzMwNzM3NSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MKLSsrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBv
cnQuY2MKLUBAIC0zNTEsMTEgKzM1MSwyMSBAQCBUQ1BDb25uZWN0aW9uOjpUQ1BDb25uZWN0aW9u
KFRDUFBvcnQqIHBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgcG9ydCgpIE5l
dHdvcms6IiA8PCBwb3J0LT5OZXR3b3JrKCktPlRvU3RyaW5nKCk7Ci0gICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHJ0Yzo6SW50ZXJmYWNlQWRkcmVzcz4mIGRlc2lyZWRfYWRkcmVzc2VzID0KLSAgICAg
ICAgIHBvcnRfLT5OZXR3b3JrKCktPkdldElQcygpOwotKwotKyNpZiBkZWZpbmVkKFdFQlJUQ19X
RUJLSVRfQlVJTEQpCi0rICAgICBSVENfRENIRUNLKHNvY2tldC0+R2V0TG9jYWxBZGRyZXNzKCku
SXNMb29wYmFja0lQKCkgfHwKLSsgICAgICAgICAgICAgICAgKHN0ZDo6ZmluZF9pZihkZXNpcmVk
X2FkZHJlc3Nlcy5iZWdpbigpLCBkZXNpcmVkX2FkZHJlc3Nlcy5lbmQoKSwKLSsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFt0aGlzXShjb25zdCBydGM6OkludGVyZmFjZUFkZHJlc3MmIGFk
ZHIpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvY2tldF8tPkdl
dExvY2FsQWRkcmVzcygpLmlwYWRkcigpID09Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRyOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgIT0gZGVz
aXJlZF9hZGRyZXNzZXMuZW5kKCkpKTsKLSsgI2Vsc2UKLSAgICAgUlRDX0RDSEVDSyhzdGQ6OmZp
bmRfaWYoZGVzaXJlZF9hZGRyZXNzZXMuYmVnaW4oKSwgZGVzaXJlZF9hZGRyZXNzZXMuZW5kKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzXShjb25zdCBydGM6OkludGVyZmFj
ZUFkZHJlc3MmIGFkZHIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
c29ja2V0Xy0+R2V0TG9jYWxBZGRyZXNzKCkuaXBhZGRyKCkgPT0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSkgIT0gZGVzaXJlZF9hZGRyZXNzZXMuZW5kKCkpOwotKyNlbmRpZgotICAgICBDb25uZWN0U29j
a2V0U2lnbmFscyhzb2NrZXQpOwotICAgfQotIH0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZpbHRlci5oCi1pbmRl
eCA3ZGVjYmJhOGE0Zi4uZGU0NzdmNDU3ZjIgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXIuaAotKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVyLmgKLUBA
IC0xNyw3ICsxNyw3IEBACi0gI2luY2x1ZGUgPHZlY3Rvcj4KLSAKLSAjaW5jbHVkZSAibWVkaWEv
YmFzZS9zdHJlYW1wYXJhbXMuaCIKLS0jaW5jbHVkZSAicnRjX2Jhc2UvYmFzaWN0eXBlcy5oIgot
Ky8vI2luY2x1ZGUgInJ0Y19iYXNlL2Jhc2ljdHlwZXMuaCIKLSAKLSBuYW1lc3BhY2UgY3JpY2tl
dCB7Ci0gCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjCi1pbmRleCBi
NzhlZDhkYjFlZS4uNTNmNGRhODUxNmUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MKLSsrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0
aW9uZmFjdG9yeS5jYwotQEAgLTI1Nyw3ICsyNTcsNyBAQCBSdHBDYXBhYmlsaXRpZXMgUGVlckNv
bm5lY3Rpb25GYWN0b3J5OjpHZXRSdHBTZW5kZXJDYXBhYmlsaXRpZXMoCi0gICAgICAgcmV0dXJu
IFJ0cENhcGFiaWxpdGllcygpOwotICAgfQotICAgLy8gTm90IHJlYWNoZWQ7IGF2b2lkcyBjb21w
aWxlIHdhcm5pbmcuCi0tICBGQVRBTCgpOwotKyAgUlRDX0ZBVEFMKCk7Ci0gfQotIAotIFJ0cENh
cGFiaWxpdGllcyBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkdldFJ0cFJlY2VpdmVyQ2FwYWJpbGl0
aWVzKAotQEAgLTI4NCw3ICsyODQsNyBAQCBSdHBDYXBhYmlsaXRpZXMgUGVlckNvbm5lY3Rpb25G
YWN0b3J5OjpHZXRSdHBSZWNlaXZlckNhcGFiaWxpdGllcygKLSAgICAgICByZXR1cm4gUnRwQ2Fw
YWJpbGl0aWVzKCk7Ci0gICB9Ci0gICAvLyBOb3QgcmVhY2hlZDsgYXZvaWRzIGNvbXBpbGUgd2Fy
bmluZy4KLS0gIEZBVEFMKCk7Ci0rICBSVENfRkFUQUwoKTsKLSB9Ci0gCi0gcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvU291cmNlSW50ZXJmYWNlPgotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1l
dGVyc2NvbnZlcnNpb24uY2MKLWluZGV4IGE1NzA2NmU0ZGIwLi5lNTE5YjliMDZkZSAxMDA2NDQK
LS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBh
cmFtZXRlcnNjb252ZXJzaW9uLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYwotQEAgLTYxLDcgKzYx
LDcgQEAgUlRDRXJyb3JPcjxjcmlja2V0OjpGZWVkYmFja1BhcmFtPiBUb0NyaWNrZXRGZWVkYmFj
a1BhcmFtKAotICAgICAgIHJldHVybiBjcmlja2V0OjpGZWVkYmFja1BhcmFtKGNyaWNrZXQ6OmtS
dGNwRmJQYXJhbVRyYW5zcG9ydENjKTsKLSAgIH0KLSAgIC8vIE5vdCByZWFjaGVkOyBhdm9pZHMg
Y29tcGlsZSB3YXJuaW5nLgotLSAgRkFUQUwoKTsKLSsgIFJUQ19GQVRBTCgpOwotIH0KLSAKLSB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NoZWNrcy5oCi1pbmRleCA5ZGU2ZDQ3
NTczYy4uNWNmMDY3OTkxMGUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaAotKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgKLUBAIC04MCw3ICs4
MCw3IEBAIFJUQ19OT1JFVFVSTiB2b2lkIHJ0Y19GYXRhbE1lc3NhZ2UoY29uc3QgY2hhciogZmls
ZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIG1zZyk7Ci0gLy8gICBtZXNzYWdlcyBpZiB0aGUgY29u
ZGl0aW9uIGRvZXNuJ3QgaG9sZC4gUHJlZmVyIHRoZW0gdG8gcmF3IFJUQ19DSEVDSyBhbmQKLSAv
LyAgIFJUQ19EQ0hFQ0suCi0gLy8KLS0vLyAtIEZBVEFMKCkgYWJvcnRzIHVuY29uZGl0aW9uYWxs
eS4KLSsvLyAtIFJUQ19GQVRBTCgpIGFib3J0cyB1bmNvbmRpdGlvbmFsbHkuCi0gLy8KLSAvLyBU
T0RPKGFqbSk6IElkZWFsbHksIGNoZWNrcy5oIHdvdWxkIGJlIGNvbWJpbmVkIHdpdGggbG9nZ2lu
Zy5oLCBidXQKLSAvLyBjb25zb2xpZGF0aW9uIHdpdGggc3lzdGVtX3dyYXBwZXJzL2xvZ2dpbmcu
aCBzaG91bGQgaGFwcGVuIGZpcnN0LgotQEAgLTM0OCw5ICszNDgsOSBAQCBjbGFzcyBGYXRhbExv
Z0NhbGwgZmluYWwgewotICNkZWZpbmUgUlRDX05PVFJFQUNIRUQoKSBSVENfRENIRUNLKFJUQ19V
TlJFQUNIQUJMRV9DT0RFX0hJVCkKLSAKLSAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NDU0KTog
QWRkIGFuIFJUQ18gcHJlZml4IG9yIHJlbmFtZSBkaWZmZXJlbnRseS4KLS0jZGVmaW5lIEZBVEFM
KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
KyNkZWZpbmUgUlRDX0ZBVEFMKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgcnRjOjp3ZWJydGNfY2hlY2tzX2ltcGw6OkZhdGFsTG9nQ2Fs
bDxmYWxzZT4oX19GSUxFX18sIF9fTElORV9fLCBcCi0tICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiRkFUQUwoKSIpICYgICAgICAgIFwKLSsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSVENfRkFUQUwoKSIpICYgICAg
ICAgIFwKLSAgICAgICBydGM6OndlYnJ0Y19jaGVja3NfaW1wbDo6TG9nU3RyZWFtZXI8PigpCi0g
Ci0gLy8gUGVyZm9ybXMgdGhlIGludGVnZXIgZGl2aXNpb24gYS9iIGFuZCByZXR1cm5zIHRoZSBy
ZXN1bHQuIENIRUNLcyB0aGF0IHRoZQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MKLWluZGV4IDViMjg3
OTRmNmNhLi40ZjI5NDU5NGJkNCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYwotQEAgLTgwLDcg
KzgwLDcgQEAgdm9pZCBGbGFnOjpTZXRUb0RlZmF1bHQoKSB7Ci0gICAgICAgdmFyaWFibGVfLT5z
ID0gZGVmYXVsdF8uczsKLSAgICAgICByZXR1cm47Ci0gICB9Ci0tICBGQVRBTCgpIDw8ICJ1bnJl
YWNoYWJsZSBjb2RlIjsKLSsgIFJUQ19GQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSB9
Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIqIFR5cGUyU3RyaW5nKEZsYWc6OlR5cGUgdHlwZSkgewot
QEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIFR5cGUyU3RyaW5nKEZsYWc6OlR5
cGUgdHlwZSkgewotICAgICBjYXNlIEZsYWc6OlNUUklORzoKLSAgICAgICByZXR1cm4gInN0cmlu
ZyI7Ci0gICB9Ci0tICBGQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSsgIFJUQ19GQVRB
TCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgUHJpbnRGbGFn
VmFsdWUoRmxhZzo6VHlwZSB0eXBlLCBGbGFnVmFsdWUqIHApIHsKLUBAIC0xMTIsNyArMTEyLDcg
QEAgc3RhdGljIHZvaWQgUHJpbnRGbGFnVmFsdWUoRmxhZzo6VHlwZSB0eXBlLCBGbGFnVmFsdWUq
IHApIHsKLSAgICAgICBwcmludGYoIiVzIiwgcC0+cyk7Ci0gICAgICAgcmV0dXJuOwotICAgfQot
LSAgRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7Ci0rICBSVENfRkFUQUwoKSA8PCAidW5y
ZWFjaGFibGUgY29kZSI7Ci0gfQotIAotIHZvaWQgRmxhZzo6UHJpbnQoYm9vbCBwcmludF9jdXJy
ZW50X3ZhbHVlKSB7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmgKLWluZGV4IDUxM2JjMjYzNjUx
Li43MThkOTU4OTM0OCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmgKLUBAIC01MCw3ICs1
MCw3IEBAIGNsYXNzIExvY2F0aW9uIHsKLSAjZGVmaW5lIFJUQ19GUk9NX0hFUkUgUlRDX0ZST01f
SEVSRV9XSVRIX0ZVTkNUSU9OKF9fRlVOQ1RJT05fXykKLSAKLSAjZGVmaW5lIFJUQ19GUk9NX0hF
UkVfV0lUSF9GVU5DVElPTihmdW5jdGlvbl9uYW1lKSBcCi0tICA6OnJ0Yzo6TG9jYXRpb24oZnVu
Y3Rpb25fbmFtZSwgX19GSUxFX18gIjoiIFNUUklOR0laRShfX0xJTkVfXykpCi0rICA6OnJ0Yzo6
TG9jYXRpb24oZnVuY3Rpb25fbmFtZSwgX19GSUxFX18gIjoiIFJUQ19TVFJJTkdJWkUoX19MSU5F
X18pKQotIAotIH0gIC8vIG5hbWVzcGFjZSBydGMKLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZy5j
YwotaW5kZXggMTI5YTg5NzQzOTcuLjU4NDU2YzU5OWVjIDEwMDY0NAotLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZy5jYwotKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9n
Z2luZy5jYwotQEAgLTM2LDYgKzM2LDcgQEAgc3RhdGljIGNvbnN0IGludCBrTWF4TG9nTGluZVNp
emUgPSAxMDI0IC0gNjA7Ci0gI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgot
ICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0gI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRm
b3JtX3RocmVhZF90eXBlcy5oIgotKyNpbmNsdWRlICJydGNfYmFzZS9uZXZlcl9kZXN0cm95ZWQu
aCIKLSAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCi0gI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKLSAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
dXRpbHMuaCIKLUBAIC02Miw4ICs2MywxMiBAQCBjb25zdCBjaGFyKiBGaWxlbmFtZUZyb21QYXRo
KGNvbnN0IGNoYXIqIGZpbGUpIHsKLSAgICAgcmV0dXJuIChlbmQxID4gZW5kMikgPyBlbmQxICsg
MSA6IGVuZDIgKyAxOwotIH0KLSAKLS0vLyBHbG9iYWwgbG9jayBmb3IgbG9nIHN1YnN5c3RlbSwg
b25seSBuZWVkZWQgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBzdHJlYW1zXy4KLS1Dcml0aWNhbFNl
Y3Rpb24gZ19sb2dfY3JpdDsKLSsvLyBHbG9iYWwgbG9jayBmb3IgbG9nIHN1YnN5c3RlbSwgb25s
eSBuZWVkZWQgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBzdHJlYW1MaXN0KCkuCi0rQ3JpdGljYWxT
ZWN0aW9uJiBsb2dDcml0aWNhbFNjb3BlKCkgewotKyAgc3RhdGljIGF1dG8gc2NvcGUgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQ8PihDcml0aWNhbFNlY3Rpb24geyB9KTsKLSsgIHJldHVybiBzY29wZS5n
ZXQoKTsKLSt9Ci0rCi0gfSAgLy8gbmFtZXNwYWNlCi0gCi0gLy8gSW5lZmZpY2llbnQgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbiwgb3ZlcnJpZGUgaXMgcmVjb21tZW5kZWQuCi1AQCAtODMsNyArODgs
MTUgQEAgYm9vbCBMb2dNZXNzYWdlOjpsb2dfdG9fc3RkZXJyXyA9IHRydWU7Ci0gLy8gTm90ZTog
d2UgZXhwbGljaXRseSBkbyBub3QgY2xlYW4gdGhpcyB1cCwgYmVjYXVzZSBvZiB0aGUgdW5jZXJ0
YWluIG9yZGVyaW5nCi0gLy8gb2YgZGVzdHJ1Y3RvcnMgYXQgcHJvZ3JhbSBleGl0LiAgTGV0IHRo
ZSBwZXJzb24gd2hvIHNldHMgdGhlIHN0cmVhbSB0cmlnZ2VyCi0gLy8gY2xlYW51cCBieSBzZXR0
aW5nIHRvIG51bGwsIG9yIGxldCBpdCBsZWFrIChzYWZlIGF0IHByb2dyYW0gZXhpdCkuCi0tTG9n
TWVzc2FnZTo6U3RyZWFtTGlzdCBMb2dNZXNzYWdlOjpzdHJlYW1zXyBSVENfR1VBUkRFRF9CWShn
X2xvZ19jcml0KTsKLSt0eXBlZGVmIHN0ZDo6cGFpcjxMb2dTaW5rKiwgTG9nZ2luZ1NldmVyaXR5
PiBTdHJlYW1BbmRTZXZlcml0eTsKLSt0eXBlZGVmIHN0ZDo6bGlzdDxTdHJlYW1BbmRTZXZlcml0
eT4gU3RyZWFtTGlzdDsKLSsKLSsvLyBUaGUgb3V0cHV0IHN0cmVhbXMgYW5kIHRoZWlyIGFzc29j
aWF0ZWQgc2V2ZXJpdGllcwotK1N0cmVhbUxpc3QmIHN0cmVhbUxpc3QoKQotKyAgICBSVENfRVhD
TFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGxvZ0NyaXRpY2FsU2NvcGUoKSkgewotKyAgICAgICAgc3Rh
dGljIGF1dG8gc3RyZWFtX2xpc3QgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8PihTdHJlYW1MaXN0IHsg
fSk7Ci0rICByZXR1cm4gc3RyZWFtX2xpc3QuZ2V0KCk7Ci0rfQotIAotIC8vIEJvb2xlYW4gb3B0
aW9ucyBkZWZhdWx0IHRvIGZhbHNlICgwKQotIGJvb2wgTG9nTWVzc2FnZTo6dGhyZWFkXywgTG9n
TWVzc2FnZTo6dGltZXN0YW1wXzsKLUBAIC05Nyw2ICsxMTAsMTAgQEAgTG9nTWVzc2FnZTo6TG9n
TWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgTG9nRXJy
b3JDb250ZXh0IGVycl9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXJyKQotICAg
ICA6IHNldmVyaXR5XyhzZXYpIHsKLSsKLSsgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBjYWxsTG9n
Q3JpdGljYWxTY29wZU9uY2U7Ci0rICBzdGQ6OmNhbGxfb25jZShjYWxsTG9nQ3JpdGljYWxTY29w
ZU9uY2UsW10geyBsb2dDcml0aWNhbFNjb3BlKCk7IH0pOwotKwotICAgaWYgKHRpbWVzdGFtcF8p
IHsKLSAgICAgLy8gVXNlIFN5c3RlbVRpbWVNaWxsaXMgc28gdGhhdCBldmVuIGlmIHRlc3RzIHVz
ZSBmYWtlIGNsb2NrcywgdGhlIHRpbWVzdGFtcAotICAgICAvLyBpbiBsb2cgbWVzc2FnZXMgcmVw
cmVzZW50cyB0aGUgcmVhbCBzeXN0ZW0gdGltZS4KLUBAIC0xOTcsOCArMjE0LDggQEAgTG9nTWVz
c2FnZTo6fkxvZ01lc3NhZ2UoKSB7Ci0gI2VuZGlmCi0gICB9Ci0gCi0tICBDcml0U2NvcGUgY3Mo
JmdfbG9nX2NyaXQpOwotLSAgZm9yIChhdXRvJiBrdiA6IHN0cmVhbXNfKSB7Ci0rICBDcml0U2Nv
cGUgY3MoJmxvZ0NyaXRpY2FsU2NvcGUoKSk7Ci0rICBmb3IgKGF1dG8mIGt2IDogc3RyZWFtTGlz
dCgpKSB7Ci0gICAgIGlmIChzZXZlcml0eV8gPj0ga3Yuc2Vjb25kKSB7Ci0gI2lmIGRlZmluZWQo
V0VCUlRDX0FORFJPSUQpCi0gICAgICAga3YuZmlyc3QtPk9uTG9nTWVzc2FnZShzdHIsIHNldmVy
aXR5XywgdGFnXyk7Ci1AQCAtMjQ2LDcgKzI2Myw3IEBAIHZvaWQgTG9nTWVzc2FnZTo6TG9nVGlt
ZXN0YW1wcyhib29sIG9uKSB7Ci0gCi0gdm9pZCBMb2dNZXNzYWdlOjpMb2dUb0RlYnVnKExvZ2dp
bmdTZXZlcml0eSBtaW5fc2V2KSB7Ci0gICBnX2RiZ19zZXYgPSBtaW5fc2V2OwotLSAgQ3JpdFNj
b3BlIGNzKCZnX2xvZ19jcml0KTsKLSsgIENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29wZSgp
KTsKLSAgIFVwZGF0ZU1pbkxvZ1NldmVyaXR5KCk7Ci0gfQotIAotQEAgLTI1NSw5ICsyNzIsOSBA
QCB2b2lkIExvZ01lc3NhZ2U6OlNldExvZ1RvU3RkZXJyKGJvb2wgbG9nX3RvX3N0ZGVycikgewot
IH0KLSAKLSBpbnQgTG9nTWVzc2FnZTo6R2V0TG9nVG9TdHJlYW0oTG9nU2luayogc3RyZWFtKSB7
Ci0tICBDcml0U2NvcGUgY3MoJmdfbG9nX2NyaXQpOwotKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0
aWNhbFNjb3BlKCkpOwotICAgTG9nZ2luZ1NldmVyaXR5IHNldiA9IExTX05PTkU7Ci0tICBmb3Ig
KGF1dG8mIGt2IDogc3RyZWFtc18pIHsKLSsgIGZvciAoYXV0byYga3YgOiBzdHJlYW1MaXN0KCkp
IHsKLSAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFtID09IGt2LmZpcnN0KSB7Ci0gICAgICAgc2V2
ID0gc3RkOjptaW4oc2V2LCBrdi5zZWNvbmQpOwotICAgICB9Ci1AQCAtMjY2LDE2ICsyODMsMTYg
QEAgaW50IExvZ01lc3NhZ2U6OkdldExvZ1RvU3RyZWFtKExvZ1NpbmsqIHN0cmVhbSkgewotIH0K
LSAKLSB2b2lkIExvZ01lc3NhZ2U6OkFkZExvZ1RvU3RyZWFtKExvZ1NpbmsqIHN0cmVhbSwgTG9n
Z2luZ1NldmVyaXR5IG1pbl9zZXYpIHsKLS0gIENyaXRTY29wZSBjcygmZ19sb2dfY3JpdCk7Ci0t
ICBzdHJlYW1zXy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoc3RyZWFtLCBtaW5fc2V2KSk7Ci0r
ICBDcml0U2NvcGUgY3MoJmxvZ0NyaXRpY2FsU2NvcGUoKSk7Ci0rICBzdHJlYW1MaXN0KCkucHVz
aF9iYWNrKHN0ZDo6bWFrZV9wYWlyKHN0cmVhbSwgbWluX3NldikpOwotICAgVXBkYXRlTWluTG9n
U2V2ZXJpdHkoKTsKLSB9Ci0gCi0gdm9pZCBMb2dNZXNzYWdlOjpSZW1vdmVMb2dUb1N0cmVhbShM
b2dTaW5rKiBzdHJlYW0pIHsKLS0gIENyaXRTY29wZSBjcygmZ19sb2dfY3JpdCk7Ci0tICBmb3Ig
KFN0cmVhbUxpc3Q6Oml0ZXJhdG9yIGl0ID0gc3RyZWFtc18uYmVnaW4oKTsgaXQgIT0gc3RyZWFt
c18uZW5kKCk7ICsraXQpIHsKLSsgIENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29wZSgpKTsK
LSsgIGZvciAoU3RyZWFtTGlzdDo6aXRlcmF0b3IgaXQgPSBzdHJlYW1MaXN0KCkuYmVnaW4oKTsg
aXQgIT0gc3RyZWFtTGlzdCgpLmVuZCgpOyArK2l0KSB7Ci0gICAgIGlmIChzdHJlYW0gPT0gaXQt
PmZpcnN0KSB7Ci0tICAgICAgc3RyZWFtc18uZXJhc2UoaXQpOwotKyAgICAgIHN0cmVhbUxpc3Qo
KS5lcmFzZShpdCk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgIH0KLUBAIC0zMzQsOSArMzUx
LDkgQEAgdm9pZCBMb2dNZXNzYWdlOjpDb25maWd1cmVMb2dnaW5nKGNvbnN0IGNoYXIqIHBhcmFt
cykgewotIH0KLSAKLSB2b2lkIExvZ01lc3NhZ2U6OlVwZGF0ZU1pbkxvZ1NldmVyaXR5KCkKLS0g
ICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChnX2xvZ19jcml0KSB7Ci0rICAgIFJUQ19F
WENMVVNJVkVfTE9DS1NfUkVRVUlSRUQobG9nQ3JpdGljYWxTY29wZSgpKSB7Ci0gICBMb2dnaW5n
U2V2ZXJpdHkgbWluX3NldiA9IGdfZGJnX3NldjsKLS0gIGZvciAoY29uc3QgYXV0byYga3YgOiBz
dHJlYW1zXykgewotKyAgZm9yIChjb25zdCBhdXRvJiBrdiA6IHN0cmVhbUxpc3QoKSkgewotICAg
ICBjb25zdCBMb2dnaW5nU2V2ZXJpdHkgc2V2ID0ga3Yuc2Vjb25kOwotICAgICBtaW5fc2V2ID0g
c3RkOjptaW4obWluX3Nldiwgc2V2KTsKLSAgIH0KLUBAIC00NTAsMTEgKzQ2Nyw4IEBAIGJvb2wg
TG9nTWVzc2FnZTo6SXNOb29wKExvZ2dpbmdTZXZlcml0eSBzZXZlcml0eSkgewotICAgLy8gVE9E
Tyh0b21taSk6IFdlJ3JlIGdyYWJiaW5nIHRoaXMgbG9jayBmb3IgZXZlcnkgTG9nTWVzc2FnZSBp
bnN0YW5jZSB0aGF0Ci0gICAvLyBpcyBnb2luZyB0byBiZSBsb2dnZWQuIFRoaXMgaW50cm9kdWNl
cyB1bm5lY2Vzc2FyeSBzeW5jaHJvbml6YXRpb24gZm9yCi0gICAvLyBhIGZlYXR1cmUgdGhhdCdz
IG1vc3RseSB1c2VkIGZvciB0ZXN0aW5nLgotLSAgQ3JpdFNjb3BlIGNzKCZnX2xvZ19jcml0KTsK
LS0gIGlmIChzdHJlYW1zXy5zaXplKCkgPiAwKQotLSAgICByZXR1cm4gZmFsc2U7Ci0tCi0tICBy
ZXR1cm4gdHJ1ZTsKLSsgIENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29wZSgpKTsKLSsgIHJl
dHVybiBzdHJlYW1MaXN0KCkuc2l6ZSgpID09IDA7Ci0gfQotIAotIHZvaWQgTG9nTWVzc2FnZTo6
RmluaXNoUHJpbnRTdHJlYW0oKSB7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ191bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfdW5p
dHRlc3QuY2MKLWluZGV4IGE0NzVlNTJkNDY1Li42YjIyNjM5MjNmYSAxMDA2NDQKLS0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdf
dW5pdHRlc3QuY2MKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2xvZ2dpbmdfdW5pdHRlc3QuY2MKLUBAIC0yMjEsNyArMjIxLDcgQEAgVEVT
VChMb2dUZXN0LCBTaW5nbGVTdHJlYW0pIHsKLSAKLSAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1Qg
JiYgIWRlZmluZWQoV0VCUlRDX0FORFJPSUQpCi0gVEVTVChMb2dUZXN0LCBDaGVja3MpIHsKLS0g
IEVYUEVDVF9ERUFUSChGQVRBTCgpIDw8ICJtZXNzYWdlIiwKLSsgIEVYUEVDVF9ERUFUSChSVENf
RkFUQUwoKSA8PCAibWVzc2FnZSIsCi0gICAgICAgICAgICAgICAgIlxuXG4jXG4iCi0gICAgICAg
ICAgICAgICAgIiMgRmF0YWwgZXJyb3IgaW46IFxcUyssIGxpbmUgXFx3K1xuIgotICAgICAgICAg
ICAgICAgICIjIGxhc3Qgc3lzdGVtIGVycm9yOiBcXHcrXG4iCi1kaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV2ZXJfZGVzdHJv
eWVkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9uZXZlcl9kZXN0cm95ZWQuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAw
MDAwLi5mY2M2MmUzNTUzNAotLS0tIC9kZXYvbnVsbAotKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV2ZXJfZGVzdHJveWVkLmgKLUBAIC0w
LDAgKzEsNjkgQEAKLSsvKgotKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBh
cmUgbWV0OgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0rICoKLSsgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0rICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0rICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0rICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0rICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqLwotKwotKyNwcmFn
bWEgb25jZQotKwotKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLSsjaW5jbHVkZSA8dXRpbGl0eT4K
LSsKLStuYW1lc3BhY2UgcnRjIHsKLSsKLSt0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBOZXZl
ckRlc3Ryb3llZCB7Ci0rcHVibGljOgotKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBO
ZXZlckRlc3Ryb3llZChBcmdzJiYuLi4gYXJncykKLSsgICAgewotKyAgICAgICAgbmV3IChzdG9y
YWdlUG9pbnRlcigpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0rICAgIH0KLSsK
LSsgICAgTmV2ZXJEZXN0cm95ZWQoTmV2ZXJEZXN0cm95ZWQmJiBvdGhlcikKLSsgICAgewotKyAg
ICAgICAgbmV3IChzdG9yYWdlUG9pbnRlcigpKSBUKHN0ZDo6bW92ZSgqb3RoZXIuc3RvcmFnZVBv
aW50ZXIoKSkpOwotKyAgICB9Ci0rCi0rICAgIG9wZXJhdG9yIFQmKCkgeyByZXR1cm4gKnN0b3Jh
Z2VQb2ludGVyKCk7IH0KLSsgICAgVCYgZ2V0KCkgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVyKCk7
IH0KLSsKLSsgICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7IHJldHVybiAqc3RvcmFnZVBv
aW50ZXIoKTsgfQotKyAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqc3RvcmFnZVBv
aW50ZXIoKTsgfQotKwotK3ByaXZhdGU6Ci0rICAgIE5ldmVyRGVzdHJveWVkKGNvbnN0IE5ldmVy
RGVzdHJveWVkJikgPSBkZWxldGU7Ci0rICAgIE5ldmVyRGVzdHJveWVkJiBvcGVyYXRvcj0oY29u
c3QgTmV2ZXJEZXN0cm95ZWQmKSA9IGRlbGV0ZTsKLSsKLSsgICAgdXNpbmcgUG9pbnRlclR5cGUg
PSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSo7Ci0rCi0rICAgIFBvaW50ZXJU
eXBlIHN0b3JhZ2VQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxQb2ludGVyVHlw
ZT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oJm1fc3RvcmFnZSkpOyB9Ci0rCi0rICAgIC8v
IEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aGV0aGVyIHdlIHNob3VsZCBhbGxvY2F0ZSBhIGh1bmsgb2Yg
dmlydHVhbCBtZW1vcnkKLSsgICAgLy8gYW5kIGhhbmQgb3V0IGNodW5rcyBvZiBpdCB0byBOZXZl
ckRlc3Ryb3llZCBpbnN0ZWFkLCB0byByZWR1Y2UgZnJhZ21lbnRhdGlvbi4KLSsgICAgdHlwZW5h
bWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6
dmFsdWU+Ojp0eXBlIG1fc3RvcmFnZTsKLSt9OwotKwotK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBOZXZlckRlc3Ryb3llZDxUPiBtYWtlTmV2ZXJEZXN0cm95ZWQoVCYmIGFyZ3VtZW50KQot
K3sKLSsgICAgcmV0dXJuIE5ldmVyRGVzdHJveWVkPFQ+KHN0ZDo6bW92ZShhcmd1bWVudCkpOwot
K30KLSsKLSt9IC8vIG5hbWVzcGFjZSBydGMKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNp
b25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgKLWluZGV4IDU4ZWZjYWE3NDZhLi40OGMyMTJl
NGQ0OSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaAotKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9j
b252ZXJzaW9ucy5oCi1AQCAtNjMsMTEgKzYzLDExIEBAIGlubGluZSBEc3Qgc2F0dXJhdGVkX2Nh
c3QoU3JjIHZhbHVlKSB7Ci0gCi0gICAgIC8vIFNob3VsZCBmYWlsIG9ubHkgb24gYXR0ZW1wdGlu
ZyB0byBhc3NpZ24gTmFOIHRvIGEgc2F0dXJhdGVkIGludGVnZXIuCi0gICAgIGNhc2UgaW50ZXJu
YWw6OlRZUEVfSU5WQUxJRDoKLS0gICAgICBGQVRBTCgpOwotKyAgICAgIFJUQ19GQVRBTCgpOwot
ICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPERzdD46Om1heCgpOwotICAgfQotIAot
LSAgRkFUQUwoKTsKLSsgIFJUQ19GQVRBTCgpOwotICAgcmV0dXJuIHN0YXRpY19jYXN0PERzdD4o
dmFsdWUpOwotIH0KLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNh
dGUuY2MKLWluZGV4IGVkNjdhODkzOGUxLi4yMzZiZWY1NWM4YSAxMDA2NDQKLS0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0
aWZpY2F0ZS5jYwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjCi1AQCAtMjU2LDExICsyNTYsMTEgQEAg
T3BlblNTTENlcnRpZmljYXRlKiBPcGVuU1NMQ2VydGlmaWNhdGU6OkdldFJlZmVyZW5jZSgpIGNv
bnN0IHsKLSBzdGQ6OnN0cmluZyBPcGVuU1NMQ2VydGlmaWNhdGU6OlRvUEVNU3RyaW5nKCkgY29u
c3QgewotICAgQklPKiBiaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKLSAgIGlmICghYmlvKSB7
Ci0tICAgIEZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotKyAgICBSVENfRkFUQUwoKSA8
PCAidW5yZWFjaGFibGUgY29kZSI7Ci0gICB9Ci0gICBpZiAoIVBFTV93cml0ZV9iaW9fWDUwOShi
aW8sIHg1MDlfKSkgewotICAgICBCSU9fZnJlZShiaW8pOwotLSAgICBGQVRBTCgpIDw8ICJ1bnJl
YWNoYWJsZSBjb2RlIjsKLSsgICAgUlRDX0ZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwot
ICAgfQotICAgQklPX3dyaXRlKGJpbywgIlwwIiwgMSk7Ci0gICBjaGFyKiBidWZmZXI7Ci1AQCAt
Mjc3LDExICsyNzcsMTEgQEAgdm9pZCBPcGVuU1NMQ2VydGlmaWNhdGU6OlRvREVSKEJ1ZmZlciog
ZGVyX2J1ZmZlcikgY29uc3QgewotICAgLy8gQ2FsY3VsYXRlcyB0aGUgREVSIHJlcHJlc2VudGF0
aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZSwgZnJvbSBzY3JhdGNoLgotICAgQklPKiBiaW8gPSBCSU9f
bmV3KEJJT19zX21lbSgpKTsKLSAgIGlmICghYmlvKSB7Ci0tICAgIEZBVEFMKCkgPDwgInVucmVh
Y2hhYmxlIGNvZGUiOwotKyAgICBSVENfRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7Ci0g
ICB9Ci0gICBpZiAoIWkyZF9YNTA5X2JpbyhiaW8sIHg1MDlfKSkgewotICAgICBCSU9fZnJlZShi
aW8pOwotLSAgICBGQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSsgICAgUlRDX0ZBVEFM
KCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotICAgfQotICAgY2hhciogZGF0YTsKLSAgIHNpemVf
dCBsZW5ndGggPSBCSU9fZ2V0X21lbV9kYXRhKGJpbywgJmRhdGEpOwotZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2l6
ZV9tYWNyb3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3N0cmluZ2l6ZV9tYWNyb3MuaAotaW5kZXggYWVlOGQxNDU1MWQuLjM4YzZmMTgzNmJk
IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmgKLUBAIC04LDcg
KzgsNyBAQAotICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KLSAgKi8KLSAKLS0vLyBNb2RpZmllZCBmcm9tIHRoZSBDaHJvbWl1
bSBvcmlnaW5hbDoKLSsvLyBNb2RpZmllZCBmcm9tIHRoZSBDaHhzcm9taXVtIG9yaWdpbmFsOgot
IC8vIHNyYy9iYXNlL3N0cmluZ3Mvc3RyaW5naXplX21hY3Jvcy5oCi0gCi0gLy8gVGhpcyBmaWxl
IGRlZmluZXMgcHJlcHJvY2Vzc29yIG1hY3JvcyBmb3Igc3RyaW5naXppbmcgcHJlcHJvY2Vzc29y
Ci1AQCAtMzMsNiArMzMsNiBAQAotIC8vIFRoZW46Ci0gLy8gICBTVFJJTkdJWkUoQSkgcHJvZHVj
ZXMgIkZPTyIKLSAvLyAgIFNUUklOR0laRShCKHkpKSBwcm9kdWNlcyAibXlvYmotPkZ1bmN0aW9u
Q2FsbCh5KSIKLS0jZGVmaW5lIFNUUklOR0laRSh4KSBTVFJJTkdJWkVfTk9fRVhQQU5TSU9OKHgp
Ci0rI2RlZmluZSBSVENfU1RSSU5HSVpFKHgpIFNUUklOR0laRV9OT19FWFBBTlNJT04oeCkKLSAK
LSAjZW5kaWYgIC8vIFJUQ19CQVNFX1NUUklOR0laRV9NQUNST1NfSF8KLWRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFs
c29ja2V0c2VydmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYwotaW5kZXggNTNkYWQ0NmZjZWQuLmFl
NDBkNzg4OGY1IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYwotKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNl
cnZlci5jYwotQEAgLTEwMjcsOSArMTAyNyw4IEBAIHZvaWQgVmlydHVhbFNvY2tldFNlcnZlcjo6
VXBkYXRlRGVsYXlEaXN0cmlidXRpb24oKSB7Ci0gICB9Ci0gfQotIAotLXN0YXRpYyBkb3VibGUg
UEkgPSA0ICogYXRhbigxLjApOwotLQotIHN0YXRpYyBkb3VibGUgTm9ybWFsKGRvdWJsZSB4LCBk
b3VibGUgbWVhbiwgZG91YmxlIHN0ZGRldikgewotKyAgc3RhdGljIGNvbnN0IGRvdWJsZSBQSSA9
IDQgKiBhdGFuKDEuMCk7Ci0gICBkb3VibGUgYSA9ICh4IC0gbWVhbikgKiAoeCAtIG1lYW4pIC8g
KDIgKiBzdGRkZXYgKiBzdGRkZXYpOwotICAgcmV0dXJuIGV4cCgtYSkgLyAoc3RkZGV2ICogc3Fy
dCgyICogUEkpKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0NsYXNzZXMvUGVlckNvbm5lY3Rpb24v
UlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0NsYXNzZXMvUGVlckNvbm5lY3Rpb24vUlRD
SDI2NFByb2ZpbGVMZXZlbElkLm1tCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw
MDAwMDAuLjA0YTU2ODk0MTdjCi0tLS0gL2Rldi9udWxsCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy9QZWVy
Q29ubmVjdGlvbi9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0KLUBAIC0wLDAgKzEsNTggQEAKLSsv
KgotKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSsgKgotKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0rICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
Ci0rICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKLSsgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0rICoKLSsgKi8KLSsKLSsjaW1wb3J0ICJXZWJSVEMvUlRDVmlk
ZW9Db2RlY0gyNjQuaCIKLSsKLSsjaW5jbHVkZSAibWVkaWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2
ZWxfaWQuaCIKLSsKLStAaW50ZXJmYWNlIFJUQ0gyNjRQcm9maWxlTGV2ZWxJZCAoKQotKwotK0Bw
cm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgUlRDSDI2NFByb2ZpbGUgcHJvZmlsZTsKLStAcHJv
cGVydHkobm9uYXRvbWljLCBhc3NpZ24pIFJUQ0gyNjRMZXZlbCBsZXZlbDsKLStAcHJvcGVydHko
bm9uYXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICpoZXhTdHJpbmc7Ci0rCi0rQGVuZAotKwotK0Bp
bXBsZW1lbnRhdGlvbiBSVENIMjY0UHJvZmlsZUxldmVsSWQKLSsKLStAc3ludGhlc2l6ZSBwcm9m
aWxlID0gX3Byb2ZpbGU7Ci0rQHN5bnRoZXNpemUgbGV2ZWwgPSBfbGV2ZWw7Ci0rQHN5bnRoZXNp
emUgaGV4U3RyaW5nID0gX2hleFN0cmluZzsKLSsKLSstIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhI
ZXhTdHJpbmc6KE5TU3RyaW5nICopaGV4U3RyaW5nIHsKLSsgIGlmIChzZWxmID0gW3N1cGVyIGlu
aXRdKSB7Ci0rICAgIHNlbGYuaGV4U3RyaW5nID0gaGV4U3RyaW5nOwotKwotKyAgICBhYnNsOjpv
cHRpb25hbDx3ZWJydGM6OkgyNjQ6OlByb2ZpbGVMZXZlbElkPiBwcm9maWxlX2xldmVsX2lkID0K
LSsgICAgICAgIHdlYnJ0Yzo6SDI2NDo6UGFyc2VQcm9maWxlTGV2ZWxJZChbaGV4U3RyaW5nIGNT
dHJpbmdVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7Ci0rICAgIGlmIChwcm9m
aWxlX2xldmVsX2lkLmhhc192YWx1ZSgpKSB7Ci0rICAgICAgc2VsZi5wcm9maWxlID0gc3RhdGlj
X2Nhc3Q8UlRDSDI2NFByb2ZpbGU+KHByb2ZpbGVfbGV2ZWxfaWQtPnByb2ZpbGUpOwotKyAgICAg
IHNlbGYubGV2ZWwgPSBzdGF0aWNfY2FzdDxSVENIMjY0TGV2ZWw+KHByb2ZpbGVfbGV2ZWxfaWQt
PmxldmVsKTsKLSsgICAgfQotKyAgfQotKyAgcmV0dXJuIHNlbGY7Ci0rfQotKwotKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFByb2ZpbGU6KFJUQ0gyNjRQcm9maWxlKXByb2ZpbGUgbGV2ZWw6KFJU
Q0gyNjRMZXZlbClsZXZlbCB7Ci0rICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewotKyAgICBz
ZWxmLnByb2ZpbGUgPSBwcm9maWxlOwotKyAgICBzZWxmLmxldmVsID0gbGV2ZWw7Ci0rCi0rICAg
IGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBoZXhfc3RyaW5nID0KLSsgICAgICAgIHdlYnJ0
Yzo6SDI2NDo6UHJvZmlsZUxldmVsSWRUb1N0cmluZyh3ZWJydGM6OkgyNjQ6OlByb2ZpbGVMZXZl
bElkKAotKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHdlYnJ0Yzo6SDI2NDo6UHJvZmlsZT4ocHJv
ZmlsZSksIHN0YXRpY19jYXN0PHdlYnJ0Yzo6SDI2NDo6TGV2ZWw+KGxldmVsKSkpOwotKyAgICBz
ZWxmLmhleFN0cmluZyA9Ci0rICAgICAgICBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6aGV4
X3N0cmluZy52YWx1ZV9vcigiIikuY19zdHIoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z107Ci0rICB9Ci0rICByZXR1cm4gc2VsZjsKLSt9Ci0rCi0rQGVuZAotZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVy
Y29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENF
bmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbQotaW5kZXggNmYyZDFmNDZkOWMuLjk0Y2IxZjExMGY5IDEw
MDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1tCi0rKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
cGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0KLUBAIC0zNSw2ICszNSw3
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZUVuY29kZWRJbWFnZTood2VicnRjOjpF
bmNvZGVkSW1hZ2UpZW5jb2RlZEltYWdlIHsKLSAgICAgc2VsZi5jb250ZW50VHlwZSA9IChlbmNv
ZGVkSW1hZ2UuY29udGVudF90eXBlXyA9PSB3ZWJydGM6OlZpZGVvQ29udGVudFR5cGU6OlNDUkVF
TlNIQVJFKSA/Ci0gICAgICAgICBSVENWaWRlb0NvbnRlbnRUeXBlU2NyZWVuc2hhcmUgOgotICAg
ICAgICAgUlRDVmlkZW9Db250ZW50VHlwZVVuc3BlY2lmaWVkOwotKyAgICBzZWxmLnNwYXRpYWxJ
bmRleCA9IGVuY29kZWRJbWFnZS5TcGF0aWFsSW5kZXgoKSA/ICplbmNvZGVkSW1hZ2UuU3BhdGlh
bEluZGV4KCkgOiAwOwotICAgfQotIAotICAgcmV0dXJuIHNlbGY7Ci1AQCAtNTksNyArNjAsOCBA
QCAtICh3ZWJydGM6OkVuY29kZWRJbWFnZSluYXRpdmVFbmNvZGVkSW1hZ2UgewotICAgZW5jb2Rl
ZEltYWdlLmNvbnRlbnRfdHlwZV8gPSAoc2VsZi5jb250ZW50VHlwZSA9PSBSVENWaWRlb0NvbnRl
bnRUeXBlU2NyZWVuc2hhcmUpID8KLSAgICAgICB3ZWJydGM6OlZpZGVvQ29udGVudFR5cGU6OlND
UkVFTlNIQVJFIDoKLSAgICAgICB3ZWJydGM6OlZpZGVvQ29udGVudFR5cGU6OlVOU1BFQ0lGSUVE
OwotLQotKyAgaWYgKHNlbGYuc3BhdGlhbEluZGV4KQotKyAgICBlbmNvZGVkSW1hZ2UuU2V0U3Bh
dGlhbEluZGV4KHNlbGYuc3BhdGlhbEluZGV4KTsKLSAgIHJldHVybiBlbmNvZGVkSW1hZ2U7Ci0g
fQotIAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaAotaW5kZXggYmE1MGJk
ZTY0OWYuLmRhYmZmNzI1YWJiIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEVuY29k
aW5nUGFyYW1ldGVycy5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUnRwRW5jb2RpbmdQYXJhbWV0
ZXJzLmgKLUBAIC0xNSw2ICsxNSw3IEBACi0gTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLSAKLSBS
VENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRD
UnRwRW5jb2RpbmdQYXJhbWV0ZXJzIikpKQotIEBpbnRlcmZhY2UgUlRDUnRwRW5jb2RpbmdQYXJh
bWV0ZXJzIDogTlNPYmplY3QKLSAKLSAvKiogQ29udHJvbHMgd2hldGhlciB0aGUgZW5jb2Rpbmcg
aXMgY3VycmVudGx5IHRyYW5zbWl0dGVkLiAqLwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9F
bmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5oCi1pbmRleCA1YjA2MjQ1NWJjMC4uNzJhZjczMmIyM2Ig
MTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0
ZS5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5o
Ci1AQCAtMjIsNCArMjIsMTEgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLSAKLSBAZW5kCi0g
Ci0rQGludGVyZmFjZSBSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIChQcml2YXRlKQotKwotKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb246KGNvbnN0
IHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqX19udWxsYWJsZSl2aWRlb0JpdHJhdGVB
bGxvY2F0aW9uOwotKy0gKHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiluYXRpdmVWaWRl
b0JpdHJhdGVBbGxvY2F0aW9uOwotKwotK0BlbmQKLSsKLSBOU19BU1NVTUVfTk9OTlVMTF9FTkQK
LWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0
ZS5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLm1tCi1p
bmRleCA2ZmI4MWRiYjhhZi4uODJiNWJhN2JjMGYgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24v
UlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5tbQotKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JU
Q1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUubW0KLUBAIC0xMiw2ICsxMiwyMyBAQAotIAot
ICNpbXBvcnQgImhlbHBlcnMvTlNTdHJpbmcrU3RkU3RyaW5nLmgiCi0gCi0rQGltcGxlbWVudGF0
aW9uIFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzIHsKLSsgIHdlYnJ0Yzo6VmlkZW9Db2RlYyBfbmF0
aXZlVmlkZW9Db2RlYzsKLSt9Ci0rCi0rQHN5bnRoZXNpemUgbmFtZSA9IF9uYW1lOwotK0BzeW50
aGVzaXplIHdpZHRoID0gX3dpZHRoOwotK0BzeW50aGVzaXplIGhlaWdodCA9IF9oZWlnaHQ7Ci0r
QHN5bnRoZXNpemUgc3RhcnRCaXRyYXRlID0gX3N0YXJ0Qml0cmF0ZTsKLStAc3ludGhlc2l6ZSBt
YXhCaXRyYXRlID0gX21heEJpdHJhdGU7Ci0rQHN5bnRoZXNpemUgbWluQml0cmF0ZSA9IF9taW5C
aXRyYXRlOwotK0BzeW50aGVzaXplIHRhcmdldEJpdHJhdGUgPSBfdGFyZ2V0Qml0cmF0ZTsKLStA
c3ludGhlc2l6ZSBtYXhGcmFtZXJhdGUgPSBfbWF4RnJhbWVyYXRlOwotK0BzeW50aGVzaXplIHFw
TWF4ID0gX3FwTWF4OwotK0BzeW50aGVzaXplIG1vZGUgPSBfbW9kZTsKLSsKLStAZW5kCi0rCi0g
QGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzIChQcml2YXRlKQotIAotIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZVZpZGVvQ29kZWM6KGNvbnN0IHdlYnJ0Yzo6Vmlk
ZW9Db2RlYyAqKXZpZGVvQ29kZWMgewotQEAgLTIwLDYgKzM3LDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoTmF0aXZlVmlkZW9Db2RlYzooY29uc3Qgd2VicnRjOjpWaWRlb0NvZGVjICopdmlk
ZW9Db2RlYwotICAgICAgIGNvbnN0IGNoYXIgKmNvZGVjTmFtZSA9IENvZGVjVHlwZVRvUGF5bG9h
ZFN0cmluZyh2aWRlb0NvZGVjLT5jb2RlY1R5cGUpOwotICAgICAgIHNlbGYubmFtZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpjb2RlY05hbWVdOwotIAotKyAgICAgIF9uYXRpdmVW
aWRlb0NvZGVjID0gKnZpZGVvQ29kZWM7Ci0gICAgICAgc2VsZi53aWR0aCA9IHZpZGVvQ29kZWMt
PndpZHRoOwotICAgICAgIHNlbGYuaGVpZ2h0ID0gdmlkZW9Db2RlYy0+aGVpZ2h0OwotICAgICAg
IHNlbGYuc3RhcnRCaXRyYXRlID0gdmlkZW9Db2RlYy0+c3RhcnRCaXRyYXRlOwotQEAgLTM2LDE4
ICs1NCwyOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOYXRpdmVWaWRlb0NvZGVjOihjb25z
dCB3ZWJydGM6OlZpZGVvQ29kZWMgKil2aWRlb0NvZGVjCi0gfQotIAotIC0gKHdlYnJ0Yzo6Vmlk
ZW9Db2RlYyluYXRpdmVWaWRlb0NvZGVjIHsKLS0gIHdlYnJ0Yzo6VmlkZW9Db2RlYyB2aWRlb0Nv
ZGVjOwotLSAgdmlkZW9Db2RlYy53aWR0aCA9IHNlbGYud2lkdGg7Ci0tICB2aWRlb0NvZGVjLmhl
aWdodCA9IHNlbGYuaGVpZ2h0OwotLSAgdmlkZW9Db2RlYy5zdGFydEJpdHJhdGUgPSBzZWxmLnN0
YXJ0Qml0cmF0ZTsKLS0gIHZpZGVvQ29kZWMubWF4Qml0cmF0ZSA9IHNlbGYubWF4Qml0cmF0ZTsK
LS0gIHZpZGVvQ29kZWMubWluQml0cmF0ZSA9IHNlbGYubWluQml0cmF0ZTsKLS0gIHZpZGVvQ29k
ZWMudGFyZ2V0Qml0cmF0ZSA9IHNlbGYudGFyZ2V0Qml0cmF0ZTsKLS0gIHZpZGVvQ29kZWMubWF4
Qml0cmF0ZSA9IHNlbGYubWF4Qml0cmF0ZTsKLS0gIHZpZGVvQ29kZWMucXBNYXggPSBzZWxmLnFw
TWF4OwotLSAgdmlkZW9Db2RlYy5tb2RlID0gKHdlYnJ0Yzo6VmlkZW9Db2RlY01vZGUpc2VsZi5t
b2RlOwotLQotLSAgcmV0dXJuIHZpZGVvQ29kZWM7Ci0rICByZXR1cm4gX25hdGl2ZVZpZGVvQ29k
ZWM7Ci0rfQotKwotK0BlbmQKLSsKLStAaW1wbGVtZW50YXRpb24gUlRDVmlkZW9CaXRyYXRlQWxs
b2NhdGlvbiB7Ci0rICB3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRpb24gX25hdGl2ZVZpZGVv
Qml0cmF0ZUFsbG9jYXRpb247Ci0rfQotKwotK0BlbmQKLSsKLStAaW1wbGVtZW50YXRpb24gUlRD
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAoUHJpdmF0ZSkKLSsKLSstIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhOYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOihjb25zdCB3ZWJydGM6OlZpZGVvQml0
cmF0ZUFsbG9jYXRpb24gKil2aWRlb0JpdHJhdGVBbGxvY2F0aW9uIHsKLSsgIGlmIChzZWxmID0g
W3N1cGVyIGluaXRdKSB7Ci0rICAgIF9uYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uID0gKnZp
ZGVvQml0cmF0ZUFsbG9jYXRpb247Ci0rICB9Ci0rICByZXR1cm4gc2VsZjsKLSt9Ci0rCi0rLSAo
d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uKW5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRp
b24gewotKyAgcmV0dXJuIF9uYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOwotIH0KLSAKLSBA
ZW5kCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29kZWNDb25zdGFudHMubW0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlk
ZW9fY29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbQotaW5kZXggYWNiZjEyNjE3MGMuLjE0
NDdkM2IyN2UxIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29kZWNDb25zdGFudHMu
bW0KLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0NvZGVjQ29uc3RhbnRzLm1tCi1AQCAtMTMsNSAr
MTMsNSBAQAotIAotICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCi0gCi0t
TlNTdHJpbmcgKmNvbnN0IGtSVENWaWRlb0NvZGVjVnA4TmFtZSA9IEAoY3JpY2tldDo6a1ZwOENv
ZGVjTmFtZSk7Ci0tTlNTdHJpbmcgKmNvbnN0IGtSVENWaWRlb0NvZGVjVnA5TmFtZSA9IEAoY3Jp
Y2tldDo6a1ZwOUNvZGVjTmFtZSk7Ci0rTlNTdHJpbmcgKmNvbnN0IGtSVENWaWRlb0NvZGVjVnA4
TmFtZSA9IEAiVlA4IjsKLStOU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNWcDlOYW1lID0g
QCJWUDkiOwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRl
b19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaAotaW5kZXggOGQ4N2E4OTg5MzEuLjA4ZDE4NTA0
MjIyIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlclZQOC5oCi0rKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlk
ZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyVlA4LmgKLUBAIC0xNCw2ICsxNCw3IEBACi0gI2ltcG9y
dCAiUlRDVmlkZW9FbmNvZGVyLmgiCi0gCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVf
Xygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRW5jb2RlclZQOCIpKSkKLSBAaW50ZXJm
YWNlIFJUQ1ZpZGVvRW5jb2RlclZQOCA6IE5TT2JqZWN0Ci0gCi0gLyogVGhpcyByZXR1cm5zIGEg
VlA4IGVuY29kZXIgdGhhdCBjYW4gYmUgcmV0dXJuZWQgZnJvbSBhIFJUQ1ZpZGVvRW5jb2RlckZh
Y3RvcnkgaW5qZWN0ZWQgaW50bwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENXcmFwcGVkTmF0
aXZlVmlkZW9FbmNvZGVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29k
ZXIubW0KLWluZGV4IDlhZmQ1NGY1NWY1Li5iOTYzNDc3OWYxZiAxMDA2NDQKLS0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19j
b2RlYy9SVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tCi0rKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRD
V3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5tbQotQEAgLTU4LDYgKzU4LDExIEBAIC0gKGludClz
ZXRCaXRyYXRlOih1aW50MzJfdCliaXRyYXRlS2JpdCBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1l
cmF0ZSB7Ci0gICByZXR1cm4gMDsKLSB9Ci0gCi0rLSAoaW50KXNldFJhdGVBbGxvY2F0aW9uOihu
b25udWxsIFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gKilhbGxvY2F0aW9uIGZyYW1lcmF0ZToo
dWludDMyX3QpZnJhbWVyYXRlIHsKLSsgIFJUQ19OT1RSRUFDSEVEKCk7Ci0rICByZXR1cm4gMDsK
LSt9Ci0rCi0gLSAoTlNTdHJpbmcgKilpbXBsZW1lbnRhdGlvbk5hbWUgewotICAgUlRDX05PVFJF
QUNIRUQoKTsKLSAgIHJldHVybiBuaWw7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9S
VENOYXRpdmVJNDIwQnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZm
ZXIuaAotaW5kZXggOWE5MDRmNTM5NmEuLmRjOTAzYmM0YmNhIDEwMDY0NAotLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2Zy
YW1lX2J1ZmZlci9SVENOYXRpdmVJNDIwQnVmZmVyLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIv
UlRDTmF0aXZlSTQyMEJ1ZmZlci5oCi1AQCAtMTcsNiArMTcsNyBAQCBOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgotIAotIC8qKiBSVENJNDIwQnVmZmVyIGltcGxlbWVudHMgdGhlIFJUQ0k0MjBCdWZm
ZXIgcHJvdG9jb2wgKi8KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1
bnRpbWVfbmFtZSgiV0tfUlRDSTQyMEJ1ZmZlciIpKSkKLSBAaW50ZXJmYWNlIFJUQ0k0MjBCdWZm
ZXIgOiBOU09iamVjdDxSVENJNDIwQnVmZmVyPgotIEBlbmQKLSAKLWRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9f
ZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVm
ZmVyL1JUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVyLmgKLWluZGV4IDZjZDUxMTA0NjBiLi43Y2Zh
OTUwYWJiNiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlTXV0YWJsZUk0
MjBCdWZmZXIuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVNdXRhYmxlSTQyMEJ1
ZmZlci5oCi1AQCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotIAotIC8q
KiBNdXRhYmxlIHZlcnNpb24gb2YgUlRDSTQyMEJ1ZmZlciAqLwotIFJUQ19PQkpDX0VYUE9SVAot
K19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENNdXRhYmxlSTQyMEJ1ZmZl
ciIpKSkKLSBAaW50ZXJmYWNlIFJUQ011dGFibGVJNDIwQnVmZmVyIDogUlRDSTQyMEJ1ZmZlcjxS
VENNdXRhYmxlSTQyMEJ1ZmZlcj4KLSBAZW5kCi0gCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENDb2RlY1NwZWNp
ZmljSW5mby5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENDb2RlY1NwZWNpZmljSW5mby5oCi1pbmRleCBlMmFlNGNhZmExMS4uOWRj
NDRjMTJhZjggMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmgKLSsrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDQ29k
ZWNTcGVjaWZpY0luZm8uaAotQEAgLTE4LDYgKzE4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KLSAgKiAgQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpDb2RlY1NwZWNpZmljSW5mby4KLSAgKi8K
LSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tf
UlRDQ29kZWNTcGVjaWZpY0luZm8iKSkpCi0gQHByb3RvY29sIFJUQ0NvZGVjU3BlY2lmaWNJbmZv
IDxOU09iamVjdD4KLSBAZW5kCi0gCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRD
RW5jb2RlZEltYWdlLmgKLWluZGV4IDY3MGM3Mjc2ZmY3Li43OTk0Y2U2NGExZiAxMDA2NDQKLS0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UvUlRDRW5jb2RlZEltYWdlLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLmgKLUBAIC0zMSw2ICsz
MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBSVENWaWRlb0NvbnRlbnRUeXBlKSB7
Ci0gCi0gLyoqIFJlcHJlc2VudHMgYW4gZW5jb2RlZCBmcmFtZS4gQ29ycmVzcG9uZHMgdG8gd2Vi
cnRjOjpFbmNvZGVkSW1hZ2UuICovCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVfXygo
b2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0VuY29kZWRJbWFnZSIpKSkKLSBAaW50ZXJmYWNlIFJU
Q0VuY29kZWRJbWFnZSA6IE5TT2JqZWN0Ci0gCi0gQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25n
KSBOU0RhdGEgKmJ1ZmZlcjsKLUBAIC00Nyw2ICs0OCw3IEBAIFJUQ19PQkpDX0VYUE9SVAotIEBw
cm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9PTCBjb21wbGV0ZUZyYW1lOwotIEBwcm9wZXJ0
eShub25hdG9taWMsIHN0cm9uZykgTlNOdW1iZXIgKnFwOwotIEBwcm9wZXJ0eShub25hdG9taWMs
IGFzc2lnbikgUlRDVmlkZW9Db250ZW50VHlwZSBjb250ZW50VHlwZTsKLStAcHJvcGVydHkobm9u
YXRvbWljLCBhc3NpZ24pIGludCBzcGF0aWFsSW5kZXg7Ci0gCi0gQGVuZAotIAotZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UvUlRDRW5jb2RlZEltYWdlLm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5tCi1pbmRleCAwMjRhNTdjNTQx
Yi4uODVjZDVlMjk4ZTQgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5tCi0rKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0Vu
Y29kZWRJbWFnZS5tCi1AQCAtMjYsNSArMjYsNiBAQCBAaW1wbGVtZW50YXRpb24gUlRDRW5jb2Rl
ZEltYWdlCi0gQHN5bnRoZXNpemUgY29tcGxldGVGcmFtZSA9IF9jb21wbGV0ZUZyYW1lOwotIEBz
eW50aGVzaXplIHFwID0gX3FwOwotIEBzeW50aGVzaXplIGNvbnRlbnRUeXBlID0gX2NvbnRlbnRU
eXBlOwotK0BzeW50aGVzaXplIHNwYXRpYWxJbmRleCA9IF9zcGF0aWFsSW5kZXg7Ci0gCi0gQGVu
ZAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDSTQyMEJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENJNDIwQnVmZmVyLmgKLWluZGV4IGE2
YzdlNDFiY2JhLi5jZmExNGY4YWYyMyAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDSTQyMEJ1ZmZlci5oCi0rKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNl
L1JUQ0k0MjBCdWZmZXIuaAotQEAgLTE2LDYgKzE2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KLSAKLSAvKiogUHJvdG9jb2wgZm9yIFJUQ1lVVlBsYW5hckJ1ZmZlcnMgY29udGFpbmluZyBJ
NDIwIGRhdGEgKi8KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRp
bWVfbmFtZSgiV0tfUlRDSTQyMEJ1ZmZlciIpKSkKLSBAcHJvdG9jb2wgUlRDSTQyMEJ1ZmZlciA8
UlRDWVVWUGxhbmFyQnVmZmVyPgotIEBlbmQKLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50
YXRpb25IZWFkZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5oCi1pbmRleCAyZTI2YjA4
YjhhZi4uZmJiYzY4YThlZjYgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIu
aAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLmgKLUBAIC0xNiw2ICsxNiw3IEBAIE5T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCi0gCi0gLyoqIEluZm9ybWF0aW9uIGZvciBoZWFkZXIuIENv
cnJlc3BvbmRzIHRvIHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlci4gKi8KLSBSVENfT0JK
Q19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDUnRwRnJh
Z21lbnRhdGlvbkhlYWRlciIpKSkKLSBAaW50ZXJmYWNlIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFk
ZXIgOiBOU09iamVjdAotIAotIEBwcm9wZXJ0eShub25hdG9taWMsIHN0cm9uZykgTlNBcnJheTxO
U051bWJlciAqPiAqZnJhZ21lbnRhdGlvbk9mZnNldDsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdt
ZW50YXRpb25IZWFkZXIubSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tCi1pbmRleCA4MDQ5
YWJjNDExZS4uNmNmMjFkZGMyYTEgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFk
ZXIubQotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0KLUBAIC0xNyw0ICsxNyw1IEBA
IEBpbXBsZW1lbnRhdGlvbiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyCi0gQHN5bnRoZXNpemUg
ZnJhZ21lbnRhdGlvblRpbWVEaWZmID0gX2ZyYWdtZW50YXRpb25UaW1lRGlmZjsKLSBAc3ludGhl
c2l6ZSBmcmFnbWVudGF0aW9uUGxUeXBlID0gX2ZyYWdtZW50YXRpb25QbFR5cGU7Ci0gCi0tQGVu
ZAotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0rQGVuZAotKwotZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRD
VmlkZW9Db2RlY0luZm8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9Db2RlY0luZm8uaAotaW5kZXggMjE2MmNhYWEyMWYu
LjRlNjQzZDk0MzQ3IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0NvZGVjSW5mby5oCi0rKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1Zp
ZGVvQ29kZWNJbmZvLmgKLUBAIC0xNiw2ICsxNiw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lO
Ci0gCi0gLyoqIEhvbGRzIGluZm9ybWF0aW9uIHRvIGlkZW50aWZ5IGEgY29kZWMuIENvcnJlc3Bv
bmRzIHRvIHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQuICovCi0gUlRDX09CSkNfRVhQT1JUCi0rX19h
dHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvQ29kZWNJbmZvIikpKQot
IEBpbnRlcmZhY2UgUlRDVmlkZW9Db2RlY0luZm8gOiBOU09iamVjdCA8TlNDb2Rpbmc+Ci0gCi0g
LSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7Ci1kaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRl
b0RlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyLmgKLWluZGV4IDE4YzZmNmIwMDA2Li41MzQ0MjBk
Mzk1NSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVy
LmgKLUBAIC0yMyw2ICsyMyw3IEBAIHR5cGVkZWYgdm9pZCAoXlJUQ1ZpZGVvRGVjb2RlckNhbGxi
YWNrKShSVENWaWRlb0ZyYW1lICpmcmFtZSk7Ci0gCi0gLyoqIFByb3RvY29sIGZvciBkZWNvZGVy
IGltcGxlbWVudGF0aW9ucy4gKi8KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChv
YmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9EZWNvZGVyIikpKQotIEBwcm90b2NvbCBSVENW
aWRlb0RlY29kZXIgPE5TT2JqZWN0PgotIAotIC0gKHZvaWQpc2V0Q2FsbGJhY2s6KFJUQ1ZpZGVv
RGVjb2RlckNhbGxiYWNrKWNhbGxiYWNrOwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyRmFj
dG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYmFzZS9SVENWaWRlb0RlY29kZXJGYWN0b3J5LmgKLWluZGV4IDNlMjQxNTNiODJjLi5jYjk1
ZmEzZjEzNCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS5oCi0rKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1Zp
ZGVvRGVjb2RlckZhY3RvcnkuaAotQEAgLTE4LDYgKzE4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExf
QkVHSU4KLSAKLSAvKiogUlRDVmlkZW9EZWNvZGVyRmFjdG9yeSBpcyBhbiBPYmplY3RpdmUtQyB2
ZXJzaW9uIG9mIHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeS4gKi8KLSBSVENfT0JKQ19FWFBP
UlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9EZWNvZGVy
RmFjdG9yeSIpKSkKLSBAcHJvdG9jb2wgUlRDVmlkZW9EZWNvZGVyRmFjdG9yeSA8TlNPYmplY3Q+
Ci0gCi0gLSAobnVsbGFibGUgaWQ8UlRDVmlkZW9EZWNvZGVyPiljcmVhdGVEZWNvZGVyOihSVENW
aWRlb0NvZGVjSW5mbyAqKWluZm87Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRD
VmlkZW9FbmNvZGVyLmgKLWluZGV4IGM1MjU3Njc0ZDgzLi41MjkxYmIxMzQyYiAxMDA2NDQKLS0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UvUlRDVmlkZW9FbmNvZGVyLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyLmgKLUBAIC0xOSw3ICsx
OSwxMSBAQAotICNpbXBvcnQgIlJUQ1ZpZGVvRnJhbWUuaCIKLSAKLSBOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgotLQotKy8qCi0rbmFtZXNwYWNlIHdlYnJ0YyB7Ci0rY2xhc3MgVmlkZW9CaXRyYXRl
QWxsb2NhdGlvbjsKLSt9OwotKyovCi0gLyoqIENhbGxiYWNrIGJsb2NrIGZvciBlbmNvZGVyLiAq
LwotIHR5cGVkZWYgQk9PTCAoXlJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrKShSVENFbmNvZGVkSW1h
Z2UgKmZyYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDxS
VENDb2RlY1NwZWNpZmljSW5mbz4gaW5mbywKLUBAIC0yNyw2ICszMSw3IEBAIHR5cGVkZWYgQk9P
TCAoXlJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrKShSVENFbmNvZGVkSW1hZ2UgKmZyYW1lLAotIAot
IC8qKiBQcm90b2NvbCBmb3IgZW5jb2RlciBpbXBsZW1lbnRhdGlvbnMuICovCi0gUlRDX09CSkNf
RVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRW5j
b2RlciIpKSkKLSBAcHJvdG9jb2wgUlRDVmlkZW9FbmNvZGVyIDxOU09iamVjdD4KLSAKLSAtICh2
b2lkKXNldENhbGxiYWNrOihSVENWaWRlb0VuY29kZXJDYWxsYmFjayljYWxsYmFjazsKLUBAIC0z
Nyw2ICs0Miw3IEBAIFJUQ19PQkpDX0VYUE9SVAotICAgICBjb2RlY1NwZWNpZmljSW5mbzoobnVs
bGFibGUgaWQ8UlRDQ29kZWNTcGVjaWZpY0luZm8+KWluZm8KLSAgICAgICAgICAgIGZyYW1lVHlw
ZXM6KE5TQXJyYXk8TlNOdW1iZXIgKj4gKilmcmFtZVR5cGVzOwotIC0gKGludClzZXRCaXRyYXRl
Oih1aW50MzJfdCliaXRyYXRlS2JpdCBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZTsKLSst
IChpbnQpc2V0UmF0ZUFsbG9jYXRpb246IChSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uICopYWxs
b2NhdGlvbiBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZTsKLSAtIChOU1N0cmluZyAqKWlt
cGxlbWVudGF0aW9uTmFtZTsKLSAKLSAvKiogUmV0dXJucyBRUCBzY2FsaW5nIHNldHRpbmdzIGZv
ciBlbmNvZGVyLiBUaGUgcXVhbGl0eSBzY2FsZXIgYWRqdXN0cyB0aGUgcmVzb2x1dGlvbiBpbiBv
cmRlciB0bwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0Vu
Y29kZXJGYWN0b3J5LmgKLWluZGV4IDIwYzYwM2Q2ZmU2Li5jYmU5ZWE0OTJhZSAxMDA2NDQKLS0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlckZhY3Rvcnku
aAotQEAgLTE4LDYgKzE4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLSAKLSAvKiogUlRD
VmlkZW9FbmNvZGVyRmFjdG9yeSBpcyBhbiBPYmplY3RpdmUtQyB2ZXJzaW9uIG9mIHdlYnJ0Yzo6
VmlkZW9FbmNvZGVyRmFjdG9yeS4gKi8KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9f
KChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVyRmFjdG9yeSIpKSkKLSBAcHJv
dG9jb2wgUlRDVmlkZW9FbmNvZGVyRmFjdG9yeSA8TlNPYmplY3Q+Ci0gCi0gLSAobnVsbGFibGUg
aWQ8UlRDVmlkZW9FbmNvZGVyPiljcmVhdGVFbmNvZGVyOihSVENWaWRlb0NvZGVjSW5mbyAqKWlu
Zm87Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9F
bmNvZGVyUXBUaHJlc2hvbGRzLmgKLWluZGV4IDJiNDhmNDVjZTBhLi42OGNmZDY2ZGY0NyAxMDA2
NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmgKLSsrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNv
ZGVyUXBUaHJlc2hvbGRzLmgKLUBAIC0xNiw2ICsxNiw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCi0gCi0gLyoqIFFQIHRocmVzaG9sZHMgZm9yIGVuY29kZXIuIENvcnJlc3BvbmRzIHRvIHdl
YnJ0Yzo6VmlkZW9FbmNvZGVyOjpRcFRocmVzaG9sZHMuICovCi0gUlRDX09CSkNfRVhQT1JUCi0r
X19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRW5jb2RlclFwVGhy
ZXNob2xkcyIpKSkKLSBAaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyA6IE5T
T2JqZWN0Ci0gCi0gLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVGhyZXNob2xkc0xvdzooTlNJbnRl
Z2VyKWxvdyBoaWdoOihOU0ludGVnZXIpaGlnaDsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2Rl
clNldHRpbmdzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLmgKLWluZGV4IDY5ZTA0Y2FjNzBm
Li5hZTNiZjVmYjVmMSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MuaAotKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFz
ZS9SVENWaWRlb0VuY29kZXJTZXR0aW5ncy5oCi1AQCAtMjEsNiArMjEsNyBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNVSW50ZWdlciwgUlRDVmlkZW9Db2RlY01vZGUpIHsKLSAKLSAvKiogU2V0dGluZ3Mg
Zm9yIGVuY29kZXIuIENvcnJlc3BvbmRzIHRvIHdlYnJ0Yzo6VmlkZW9Db2RlYy4gKi8KLSBSVENf
T0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlk
ZW9FbmNvZGVyU2V0dGluZ3MiKSkpCi0gQGludGVyZmFjZSBSVENWaWRlb0VuY29kZXJTZXR0aW5n
cyA6IE5TT2JqZWN0Ci0gCi0gQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAq
bmFtZTsKLUBAIC00MCw0ICs0MSw5IEBAIFJUQ19PQkpDX0VYUE9SVAotIAotIEBlbmQKLSAKLStS
VENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRD
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiIpKSkKLStAaW50ZXJmYWNlIFJUQ1ZpZGVvQml0cmF0ZUFs
bG9jYXRpb24gOiBOU09iamVjdAotK0BlbmQKLSsKLSBOU19BU1NVTUVfTk9OTlVMTF9FTkQKLWRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZS5oCi1pbmRleCA5YWNhNzQz
M2YzNC4uYmRlMDljNTBjOWQgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWUuaAotKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENW
aWRlb0ZyYW1lLmgKLUBAIC0yNiw2ICsyNiw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IFJUQ1ZpZGVvUm90YXRpb24pIHsKLSAKLSAvLyBSVENWaWRlb0ZyYW1lIGlzIGFuIE9iamVjdGl2
ZUMgdmVyc2lvbiBvZiB3ZWJydGM6OlZpZGVvRnJhbWUuCi0gUlRDX09CSkNfRVhQT1JUCi0rX19h
dHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRnJhbWUiKSkpCi0gQGlu
dGVyZmFjZSBSVENWaWRlb0ZyYW1lIDogTlNPYmplY3QKLSAKLSAvKiogV2lkdGggd2l0aG91dCBy
b3RhdGlvbiBhcHBsaWVkLiAqLwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9S
VENWaWRlb0ZyYW1lQnVmZmVyLmgKLWluZGV4IGJiOWU2ZmJhNjMxLi4xODZhZDA4ODliZiAxMDA2
NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2Jhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIu
aAotQEAgLTE4LDYgKzE4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLSAKLSAvLyBSVENW
aWRlb0ZyYW1lQnVmZmVyIGlzIGFuIE9iamVjdGl2ZUMgdmVyc2lvbiBvZiB3ZWJydGM6OlZpZGVv
RnJhbWVCdWZmZXIuCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50
aW1lX25hbWUoIldLX1JUQ1ZpZGVvRnJhbWVCdWZmZXIiKSkpCi0gQHByb3RvY29sIFJUQ1ZpZGVv
RnJhbWVCdWZmZXIgPE5TT2JqZWN0PgotIAotIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5
KSBpbnQgd2lkdGg7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNp
ZmljSW5mb0gyNjQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0
LmgKLWluZGV4IGVjZTk1NzBhMTNiLi5lOTQ3ZGM2ZTYyMyAxMDA2NDQKLS0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlk
ZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29k
ZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0LmgKLUBAIC0xMCw3ICsxMCw3IEBACi0gCi0gI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0gCi0tI2ltcG9ydCAiUlRDQ29kZWNTcGVj
aWZpY0luZm8uaCIKLSsjaW1wb3J0ICJiYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmgiCi0gI2lt
cG9ydCAiUlRDTWFjcm9zLmgiCi0gCi0gLyoqIENsYXNzIGZvciBIMjY0IHNwZWNpZmljIGNvbmZp
Zy4gKi8KLUBAIC0yMCw2ICsyMCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBSVENI
MjY0UGFja2V0aXphdGlvbk1vZGUpIHsKLSB9OwotIAotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0
cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQi
KSkpCi0gQGludGVyZmFjZSBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQgOiBOU09iamVjdCA8UlRD
Q29kZWNTcGVjaWZpY0luZm8+Ci0gCi0gQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENI
MjY0UGFja2V0aXphdGlvbk1vZGUgcGFja2V0aXphdGlvbk1vZGU7Ci1kaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRl
b19jb2RlYy9SVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oCi1pbmRleCA3Y2E5NDYzYTU5
My4uZDExNDYwMzAwZDUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRW
aWRlb0RlY29kZXJGYWN0b3J5LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZp
ZGVvRGVjb2RlckZhY3RvcnkuaAotQEAgLTE5LDYgKzE5LDcgQEAgTlNfQVNTVU1FX05PTk5VTExf
QkVHSU4KLSAgKiAgY29kZWNzLCBjcmVhdGUgY3VzdG9tIGltcGxlbWVudGF0aW9ucyBvZiBSVENW
aWRlb0VuY29kZXJGYWN0b3J5IGFuZCBSVENWaWRlb0RlY29kZXJGYWN0b3J5LgotICAqLwotIFJU
Q19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENE
ZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeSIpKSkKLSBAaW50ZXJmYWNlIFJUQ0RlZmF1bHRWaWRl
b0RlY29kZXJGYWN0b3J5IDogTlNPYmplY3QgPFJUQ1ZpZGVvRGVjb2RlckZhY3Rvcnk+Ci0gQGVu
ZAotIAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRW5jb2Rl
ckZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3Rv
cnkuaAotaW5kZXggYzQ1ZTU0MzYyYjIuLjkzMjMyNTZjZWFkIDEwMDY0NAotLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5oCi0rKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3Zp
ZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5LmgKLUBAIC0xOSw2ICsxOSw3
IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCi0gICogIGNvZGVjcywgY3JlYXRlIGN1c3RvbSBp
bXBsZW1lbnRhdGlvbnMgb2YgUlRDVmlkZW9FbmNvZGVyRmFjdG9yeSBhbmQgUlRDVmlkZW9EZWNv
ZGVyRmFjdG9yeS4KLSAgKi8KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpj
X3J1bnRpbWVfbmFtZSgiV0tfUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkiKSkpCi0gQGlu
dGVyZmFjZSBSVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeSA6IE5TT2JqZWN0IDxSVENWaWRl
b0VuY29kZXJGYWN0b3J5PgotIAotIEBwcm9wZXJ0eShub25hdG9taWMsIHJldGFpbikgUlRDVmlk
ZW9Db2RlY0luZm8gKnByZWZlcnJlZENvZGVjOwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29k
ZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9m
aWxlTGV2ZWxJZC5oCi1pbmRleCA1NmIzNTMyMTVhMi4uZDAyMjI5NzY3NGUgMTAwNjQ0Ci0tLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5oCi0rKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3Zp
ZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5oCi1AQCAtNDgsNiArNDgsNyBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgUlRDSDI2NExldmVsKSB7Ci0gfTsKLSAKLSBSVENfT0JK
Q19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDSDI2NFBy
b2ZpbGVMZXZlbElkIikpKQotIEBpbnRlcmZhY2UgUlRDSDI2NFByb2ZpbGVMZXZlbElkIDogTlNP
YmplY3QKLSAKLSBAcHJvcGVydHkobm9uYXRvbWljLCByZWFkb25seSkgUlRDSDI2NFByb2ZpbGUg
cHJvZmlsZTsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2
ZWxJZC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tCi1pbmRl
eCAzNTk2NTZjYjk3Yi4uMjhmNTIxMzljMTcgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbQotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0
UHJvZmlsZUxldmVsSWQubW0KLUBAIC0xOSwyMCArMTksMzAgQEAKLSAjaW5jbHVkZSAibWVkaWEv
YmFzZS9oMjY0X3Byb2ZpbGVfbGV2ZWxfaWQuaCIKLSAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRp
YWNvbnN0YW50cy5oIgotIAotKyNpZiAhZGVmaW5lZChXRUJSVENfV0VCS0lUX0JVSUxEKQotIG5h
bWVzcGFjZSB7Ci0gCi0gTlNTdHJpbmcgKk1heFN1cHBvcnRlZFByb2ZpbGVMZXZlbENvbnN0cmFp
bmVkSGlnaCgpOwotIE5TU3RyaW5nICpNYXhTdXBwb3J0ZWRQcm9maWxlTGV2ZWxDb25zdHJhaW5l
ZEJhc2VsaW5lKCk7Ci0gCi0gfSAgLy8gbmFtZXNwYWNlCi0rI2VuZGlmCi0gCi0tTlNTdHJpbmcg
KmNvbnN0IGtSVENWaWRlb0NvZGVjSDI2NE5hbWUgPSBAKGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1l
KTsKLStOU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNIMjY0TmFtZSA9IEAiSDI2NCI7Ci0g
TlNTdHJpbmcgKmNvbnN0IGtSVENMZXZlbDMxQ29uc3RyYWluZWRIaWdoID0gQCI2NDBjMWYiOwot
IE5TU3RyaW5nICpjb25zdCBrUlRDTGV2ZWwzMUNvbnN0cmFpbmVkQmFzZWxpbmUgPSBAIjQyZTAx
ZiI7Ci0rCi0rI2lmIGRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKLStOU1N0cmluZyAqY29u
c3Qga1JUQ01heFN1cHBvcnRlZEgyNjRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEhpZ2ggPQotKyAg
ICBAIjY0MGMxZiI7Ci0rTlNTdHJpbmcgKmNvbnN0IGtSVENNYXhTdXBwb3J0ZWRIMjY0UHJvZmls
ZUxldmVsQ29uc3RyYWluZWRCYXNlbGluZSA9Ci0rICAgIEAiNDJlMDFmIjsKLSsjZWxzZQotIE5T
U3RyaW5nICpjb25zdCBrUlRDTWF4U3VwcG9ydGVkSDI2NFByb2ZpbGVMZXZlbENvbnN0cmFpbmVk
SGlnaCA9Ci0gICAgIE1heFN1cHBvcnRlZFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkSGlnaCgpOwot
IE5TU3RyaW5nICpjb25zdCBrUlRDTWF4U3VwcG9ydGVkSDI2NFByb2ZpbGVMZXZlbENvbnN0cmFp
bmVkQmFzZWxpbmUgPQotICAgICBNYXhTdXBwb3J0ZWRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEJh
c2VsaW5lKCk7Ci0rI2VuZGlmCi0gCi0gbmFtZXNwYWNlIHsKLSAKLUBAIC01Myw2ICs2Myw4IEBA
IE5TU3RyaW5nICpNYXhTdXBwb3J0ZWRMZXZlbEZvclByb2ZpbGUoUHJvZmlsZSBwcm9maWxlKSB7
Ci0gfQotICNlbmRpZgotIAotKyNpZiAhZGVmaW5lZChXRUJSVENfV0VCS0lUX0JVSUxEKQotKwot
IE5TU3RyaW5nICpNYXhTdXBwb3J0ZWRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEJhc2VsaW5lKCkg
ewotICNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCi0gICBOU1N0cmluZyAqcHJvZmlsZSA9IE1heFN1
cHBvcnRlZExldmVsRm9yUHJvZmlsZSh3ZWJydGM6OkgyNjQ6OmtQcm9maWxlQ29uc3RyYWluZWRC
YXNlbGluZSk7Ci1AQCAtNzMsNiArODUsOCBAQCBOU1N0cmluZyAqTWF4U3VwcG9ydGVkUHJvZmls
ZUxldmVsQ29uc3RyYWluZWRIaWdoKCkgewotICAgcmV0dXJuIGtSVENMZXZlbDMxQ29uc3RyYWlu
ZWRIaWdoOwotIH0KLSAKLSsjZW5kaWYKLSsKLSB9ICAvLyBuYW1lc3BhY2UKLSAKLSBAaW50ZXJm
YWNlIFJUQ0gyNjRQcm9maWxlTGV2ZWxJZCAoKQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29k
ZWMvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlk
ZW9EZWNvZGVyRmFjdG9yeUgyNjQuaAotaW5kZXggNGZjZmYxZGZmNzkuLmZkYWJkODA3NDgwIDEw
MDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5o
Ci0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0LmgKLUBA
IC0xNCw1ICsxNCw2IEBACi0gI2ltcG9ydCAiUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS5oIgotIAot
IFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19S
VENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NCIpKSkKLSBAaW50ZXJmYWNlIFJUQ1ZpZGVvRGVjb2Rl
ckZhY3RvcnlIMjY0IDogTlNPYmplY3QgPFJUQ1ZpZGVvRGVjb2RlckZhY3Rvcnk+Ci0gQGVuZAot
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0LmgKLWluZGV4IGI4NjAyNzYyMDZjLi5i
MTBkMWU2YTA5OSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVy
SDI2NC5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQuaAotQEAg
LTE0LDUgKzE0LDYgQEAKLSAjaW1wb3J0ICJSVENWaWRlb0RlY29kZXIuaCIKLSAKLSBSVENfT0JK
Q19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9E
ZWNvZGVySDI2NCIpKSkKLSBAaW50ZXJmYWNlIFJUQ1ZpZGVvRGVjb2RlckgyNjQgOiBOU09iamVj
dCA8UlRDVmlkZW9EZWNvZGVyPgotIEBlbmQKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVv
RW5jb2RlckZhY3RvcnlIMjY0LmgKLWluZGV4IGM2NDQwNWU0ZGFjLi41ZjZmNzhkZmE5YSAxMDA2
NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQuaAot
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
Y29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NC5oCi1AQCAt
MTQsNSArMTQsNiBAQAotICNpbXBvcnQgIlJUQ1ZpZGVvRW5jb2RlckZhY3RvcnkuaCIKLSAKLSBS
VENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRD
VmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQiKSkpCi0gQGludGVyZmFjZSBSVENWaWRlb0VuY29kZXJG
YWN0b3J5SDI2NCA6IE5TT2JqZWN0IDxSVENWaWRlb0VuY29kZXJGYWN0b3J5PgotIEBlbmQKLWRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMv
dmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5oCi1pbmRleCBhOWMwNTU4MGE0MS4uNzcx
NGIyNWVhYTQgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2Rlckgy
NjQuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0LmgKLUBAIC0x
NSw2ICsxNSw3IEBACi0gI2ltcG9ydCAiUlRDVmlkZW9FbmNvZGVyLmgiCi0gCi0gUlRDX09CSkNf
RVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRW5j
b2RlckgyNjQiKSkpCi0gQGludGVyZmFjZSBSVENWaWRlb0VuY29kZXJIMjY0IDogTlNPYmplY3Qg
PFJUQ1ZpZGVvRW5jb2Rlcj4KLSAKLSAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlY0luZm86
KFJUQ1ZpZGVvQ29kZWNJbmZvICopY29kZWNJbmZvOwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9f
Y29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9F
bmNvZGVySDI2NC5tbQotaW5kZXggMTZhZDFmZjQ3YWEuLjkwMTNiYTk2MmZiIDEwMDY0NAotLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tCi0rKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3Zp
ZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQubW0KLUBAIC05LDM5ICs5LDcyIEBACi0gICoK
LSAgKi8KLSAKLS0jaW1wb3J0ICJSVENWaWRlb0VuY29kZXJIMjY0LmgiCi0rI2ltcG9ydCAiV2Vi
UlRDL1JUQ1ZpZGVvQ29kZWNIMjY0LmgiCi0gCi0gI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZpZGVv
VG9vbGJveC5oPgotICNpbmNsdWRlIDx2ZWN0b3I+Ci0gCi0gI2lmIGRlZmluZWQoV0VCUlRDX0lP
UykKLS0jaW1wb3J0ICJoZWxwZXJzL1VJRGV2aWNlK1JUQ0RldmljZS5oIgotKyNpbXBvcnQgIkNv
bW1vbi9SVENVSUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIuaCIKLSsjaW1wb3J0ICJXZWJSVEMv
VUlEZXZpY2UrUlRDRGV2aWNlLmgiCi0gI2VuZGlmCi0tI2ltcG9ydCAiUlRDQ29kZWNTcGVjaWZp
Y0luZm9IMjY0LmgiCi0tI2ltcG9ydCAiUlRDSDI2NFByb2ZpbGVMZXZlbElkLmgiCi0tI2ltcG9y
dCAiYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIrUHJpdmF0ZS5o
IgotLSNpbXBvcnQgImFwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0NvZGVjSW5mbytQcml2YXRl
LmgiCi0tI2ltcG9ydCAiYmFzZS9SVENDb2RlY1NwZWNpZmljSW5mby5oIgotLSNpbXBvcnQgImJh
c2UvUlRDSTQyMEJ1ZmZlci5oIgotLSNpbXBvcnQgImJhc2UvUlRDVmlkZW9FbmNvZGVyLmgiCi0t
I2ltcG9ydCAiYmFzZS9SVENWaWRlb0ZyYW1lLmgiCi0tI2ltcG9ydCAiYmFzZS9SVENWaWRlb0Zy
YW1lQnVmZmVyLmgiCi0tI2ltcG9ydCAiY29tcG9uZW50cy92aWRlb19mcmFtZV9idWZmZXIvUlRD
Q1ZQaXhlbEJ1ZmZlci5oIgotLSNpbXBvcnQgImhlbHBlcnMuaCIKLS0KLSsjaW1wb3J0ICJQZWVy
Q29ubmVjdGlvbi9SVENWaWRlb0NvZGVjK1ByaXZhdGUuaCIKLSsjaW1wb3J0ICJXZWJSVEMvUlRD
VmlkZW9Db2RlYy5oIgotKyNpbXBvcnQgIldlYlJUQy9SVENWaWRlb0ZyYW1lLmgiCi0rI2ltcG9y
dCAiV2ViUlRDL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKLSAjaW5jbHVkZSAiY29tbW9uX3ZpZGVv
L2gyNjQvaDI2NF9iaXRzdHJlYW1fcGFyc2VyLmgiCi0gI2luY2x1ZGUgImNvbW1vbl92aWRlby9o
MjY0L3Byb2ZpbGVfbGV2ZWxfaWQuaCIKLSAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUv
Yml0cmF0ZV9hZGp1c3Rlci5oIgotKyNpbXBvcnQgImhlbHBlcnMuaCIKLSAjaW5jbHVkZSAibW9k
dWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKLSAjaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19lcnJvcl9jb2Rlcy5oIgotICNpbmNsdWRlICJydGNf
YmFzZS9idWZmZXIuaCIKLSAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotICNpbmNsdWRl
ICJydGNfYmFzZS90aW1ldXRpbHMuaCIKLS0jaW5jbHVkZSAic2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVyLmgiCi0rI2luY2x1ZGUgInNkay9vYmpjL0ZyYW1ld29y
ay9DbGFzc2VzL1ZpZGVvVG9vbGJveC9uYWx1X3Jld3JpdGVyLmgiCi0rI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1
di9pbmNsdWRlL2xpYnl1di9jb252ZXJ0X2Zyb20uaCIKLSAKLS1AaW50ZXJmYWNlIFJUQ1ZpZGVv
RW5jb2RlckgyNjQgKCkKLSsjaW5jbHVkZSAic2RrL1dlYktpdC9FbmNvZGVyVXRpbGl0aWVzLmgi
Ci0rI2luY2x1ZGUgInNkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgiCi0rCi0rI2ltcG9ydCA8
ZGxmY24uaD4KLSsjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSsKLStTT0ZUX0xJTktfRlJBTUVX
T1JLX09QVElPTkFMKFZpZGVvVG9vbEJveCkKLStTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChW
aWRlb1Rvb2xCb3gsIGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fVXNhZ2UsIE5TU3RyaW5n
ICopCi0rCi0rI2lmICFFTkFCTEVfVkNQX0VOQ09ERVIgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykK
LStzdGF0aWMgaW5saW5lIGJvb2wgaXNTdGFuZGFyZEZyYW1lU2l6ZShpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKLSt7Ci0rICAgIC8vIEZJWE1FOiBFbnZpc2lvbiByZWxheGluZyB0aGlz
IHJ1bGUsIHNvbWV0aGluZyBsaWtlIHdpZHRoIGFuZCBoZWlnaHQgZGl2aWRhYmxlIGJ5IDQgb3Ig
OCBzaG91bGQgYmUgZ29vZCBlbm91Z2guCi0rICAgIGlmICh3aWR0aCA9PSAxMjgwKQotKyAgICAg
ICAgcmV0dXJuIGhlaWdodCA9PSA3MjA7Ci0rICAgIGlmICh3aWR0aCA9PSA3MjApCi0rICAgICAg
ICByZXR1cm4gaGVpZ2h0ID09IDEyODA7Ci0rICAgIGlmICh3aWR0aCA9PSA5NjApCi0rICAgICAg
ICByZXR1cm4gaGVpZ2h0ID09IDU0MDsKLSsgICAgaWYgKHdpZHRoID09IDU0MCkKLSsgICAgICAg
IHJldHVybiBoZWlnaHQgPT0gOTYwOwotKyAgICBpZiAod2lkdGggPT0gNjQwKQotKyAgICAgICAg
cmV0dXJuIGhlaWdodCA9PSA0ODA7Ci0rICAgIGlmICh3aWR0aCA9PSA0ODApCi0rICAgICAgICBy
ZXR1cm4gaGVpZ2h0ID09IDY0MDsKLSsgICAgaWYgKHdpZHRoID09IDI4OCkKLSsgICAgICAgIHJl
dHVybiBoZWlnaHQgPT0gMzUyOwotKyAgICBpZiAod2lkdGggPT0gMzUyKQotKyAgICAgICAgcmV0
dXJuIGhlaWdodCA9PSAyODg7Ci0rICAgIGlmICh3aWR0aCA9PSAzMjApCi0rICAgICAgICByZXR1
cm4gaGVpZ2h0ID09IDI0MDsKLSsgICAgaWYgKHdpZHRoID09IDI0MCkKLSsgICAgICAgIHJldHVy
biBoZWlnaHQgPT0gMzIwOwotKyAgICByZXR1cm4gZmFsc2U7Ci0rfQotKyNlbmRpZgotIAotK19f
YXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENTaW5nbGVWaWRlb0VuY29kZXJI
MjY0IikpKQotK0BpbnRlcmZhY2UgUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCA6IE5TT2JqZWN0
IDxSVENWaWRlb0VuY29kZXI+Ci0rLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZWNJbmZvOihS
VENWaWRlb0NvZGVjSW5mbyAqKWNvZGVjSW5mbyBzaW11bGNhc3RJbmRleDogKGludClpbmRleDsK
LSAtICh2b2lkKWZyYW1lV2FzRW5jb2RlZDooT1NTdGF0dXMpc3RhdHVzCi0gICAgICAgICAgICAg
ICAgICAgZmxhZ3M6KFZURW5jb2RlSW5mb0ZsYWdzKWluZm9GbGFncwotICAgICAgICAgICAgc2Ft
cGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIKLUBAIC01MSw3ICs4NCw2
IEBAIC0gKHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1cylzdGF0dXMKLSAgICAgICAgICAg
IHJlbmRlclRpbWVNczooaW50NjRfdClyZW5kZXJUaW1lTXMKLSAgICAgICAgICAgICAgIHRpbWVz
dGFtcDoodWludDMyX3QpdGltZXN0YW1wCi0gICAgICAgICAgICAgICAgcm90YXRpb246KFJUQ1Zp
ZGVvUm90YXRpb24pcm90YXRpb247Ci0tCi0gQGVuZAotIAotIG5hbWVzcGFjZSB7ICAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCi1AQCAtNzAsNyArMTAyLDcgQEAgY29uc3QgT1NUeXBlIGtOVjEyUGl4
ZWxGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdl
OwotIC8vIFN0cnVjdCB0aGF0IHdlIHBhc3MgdG8gdGhlIGVuY29kZXIgcGVyIGZyYW1lIHRvIGVu
Y29kZS4gV2UgcmVjZWl2ZSBpdCBhZ2FpbgotIC8vIGluIHRoZSBlbmNvZGVyIGNhbGxiYWNrLgot
IHN0cnVjdCBSVENGcmFtZUVuY29kZVBhcmFtcyB7Ci0tICBSVENGcmFtZUVuY29kZVBhcmFtcyhS
VENWaWRlb0VuY29kZXJIMjY0ICplLAotKyAgUlRDRnJhbWVFbmNvZGVQYXJhbXMoUlRDU2luZ2xl
VmlkZW9FbmNvZGVySDI2NCAqZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJUQ0NvZGVjU3Bl
Y2lmaWNJbmZvSDI2NCAqY3NpLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB3LAot
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBoLAotQEAgLTg1LDcgKzExNyw3IEBAIHN0
cnVjdCBSVENGcmFtZUVuY29kZVBhcmFtcyB7Ci0gICAgIH0KLSAgIH0KLSAKLS0gIFJUQ1ZpZGVv
RW5jb2RlckgyNjQgKmVuY29kZXI7Ci0rICBSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICplbmNv
ZGVyOwotICAgUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0ICpjb2RlY1NwZWNpZmljSW5mbzsKLSAg
IGludDMyX3Qgd2lkdGg7Ci0gICBpbnQzMl90IGhlaWdodDsKLUBAIC0xNzMsOCArMjA1LDggQEAg
dm9pZCBjb21wcmVzc2lvbk91dHB1dENhbGxiYWNrKHZvaWQgKmVuY29kZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjplbmNvZGVQYXJhbXMtPnJvdGF0aW9uXTsK
LSB9Ci0gCi0tLy8gRXh0cmFjdCBWaWRlb1Rvb2xib3ggcHJvZmlsZSBvdXQgb2YgdGhlIHdlYnJ0
Yzo6U2RwVmlkZW9Gb3JtYXQuIElmIHRoZXJlIGlzCi0tLy8gbm8gc3BlY2lmaWMgVmlkZW9Ub29s
Ym94IHByb2ZpbGUgZm9yIHRoZSBzcGVjaWZpZWQgbGV2ZWwsIEF1dG9MZXZlbCB3aWxsIGJlCi0r
Ly8gRXh0cmFjdCBWaWRlb1Rvb2xib3ggcHJvZmlsZSBvdXQgb2YgdGhlIGNyaWNrZXQ6OlZpZGVv
Q29kZWMuIElmIHRoZXJlIGlzIG5vCi0rLy8gc3BlY2lmaWMgVmlkZW9Ub29sYm94IHByb2ZpbGUg
Zm9yIHRoZSBzcGVjaWZpZWQgbGV2ZWwsIEF1dG9MZXZlbCB3aWxsIGJlCi0gLy8gcmV0dXJuZWQu
IFRoZSB1c2VyIG11c3QgaW5pdGlhbGl6ZSB0aGUgZW5jb2RlciB3aXRoIGEgcmVzb2x1dGlvbiBh
bmQKLSAvLyBmcmFtZXJhdGUgY29uZm9ybWluZyB0byB0aGUgc2VsZWN0ZWQgSDI2NCBsZXZlbCBy
ZWdhcmRsZXNzLgotIENGU3RyaW5nUmVmIEV4dHJhY3RQcm9maWxlKHdlYnJ0Yzo6U2RwVmlkZW9G
b3JtYXQgdmlkZW9Gb3JtYXQpIHsKLUBAIC0yODAsNyArMzEyLDcgQEAgQ0ZTdHJpbmdSZWYgRXh0
cmFjdFByb2ZpbGUod2VicnRjOjpTZHBWaWRlb0Zvcm1hdCB2aWRlb0Zvcm1hdCkgewotIH0KLSB9
ICAvLyBuYW1lc3BhY2UKLSAKLS1AaW1wbGVtZW50YXRpb24gUlRDVmlkZW9FbmNvZGVySDI2NCB7
Ci0rQGltcGxlbWVudGF0aW9uIFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgewotICAgUlRDVmlk
ZW9Db2RlY0luZm8gKl9jb2RlY0luZm87Ci0gICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpCaXRy
YXRlQWRqdXN0ZXI+IF9iaXRyYXRlQWRqdXN0ZXI7Ci0gICB1aW50MzJfdCBfdGFyZ2V0Qml0cmF0
ZUJwczsKLUBAIC0yOTAsMTIgKzMyMiwxNCBAQCBAaW1wbGVtZW50YXRpb24gUlRDVmlkZW9FbmNv
ZGVySDI2NCB7Ci0gICBSVENWaWRlb0VuY29kZXJDYWxsYmFjayBfY2FsbGJhY2s7Ci0gICBpbnQz
Ml90IF93aWR0aDsKLSAgIGludDMyX3QgX2hlaWdodDsKLS0gIFZUQ29tcHJlc3Npb25TZXNzaW9u
UmVmIF9jb21wcmVzc2lvblNlc3Npb247Ci0tICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBfcGl4ZWxC
dWZmZXJQb29sOwotKyAgQ29tcHJlc3Npb25TZXNzaW9uUmVmIF9jb21wcmVzc2lvblNlc3Npb247
Ci0gICBSVENWaWRlb0NvZGVjTW9kZSBfbW9kZTsKLSAKLSAgIHdlYnJ0Yzo6SDI2NEJpdHN0cmVh
bVBhcnNlciBfaDI2NEJpdHN0cmVhbVBhcnNlcjsKLSAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IF9m
cmFtZVNjYWxlQnVmZmVyOwotKwotKyAgd2VicnRjOjpWaWRlb0NvZGVjIF9uYXRpdmVWaWRlb0Nv
ZGVjOwotKyAgaW50IF9zaW11bGNhc3RJbmRleDsKLSB9Ci0gCi0gLy8gLjUgaXMgc2V0IGFzIGEg
bWluaW51bSB0byBwcmV2ZW50IG92ZXJjb21wZW5zYXRpbmcgZm9yIGxhcmdlIHRlbXBvcmFyeQot
QEAgLTMwNSwxNCArMzM5LDE5IEBAIEBpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0VuY29kZXJIMjY0
IHsKLSAvLyBkcmFzdGljYWxseSByZWR1Y2VkIGJpdHJhdGUsIHNvIHdlIHdhbnQgdG8gYXZvaWQg
dGhhdC4gSW4gc3RlYWR5IHN0YXRlCi0gLy8gY29uZGl0aW9ucywgMC45NSBzZWVtcyB0byBnaXZl
IHVzIGJldHRlciBvdmVyYWxsIGJpdHJhdGUgb3ZlciBsb25nIHBlcmlvZHMKLSAvLyBvZiB0aW1l
LgotLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlkZW9Db2RlY0luZm8g
Kiljb2RlY0luZm8gewotKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlk
ZW9Db2RlY0luZm8gKiljb2RlY0luZm8gc2ltdWxjYXN0SW5kZXg6KGludClpbmRleCB7Ci0gICBp
ZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewotICAgICBfY29kZWNJbmZvID0gY29kZWNJbmZvOwot
ICAgICBfYml0cmF0ZUFkanVzdGVyLnJlc2V0KG5ldyB3ZWJydGM6OkJpdHJhdGVBZGp1c3Rlcigu
NSwgLjk1KSk7Ci0gICAgIF9wYWNrZXRpemF0aW9uTW9kZSA9IFJUQ0gyNjRQYWNrZXRpemF0aW9u
TW9kZU5vbkludGVybGVhdmVkOwotICAgICBfcHJvZmlsZSA9IEV4dHJhY3RQcm9maWxlKFtjb2Rl
Y0luZm8gbmF0aXZlU2RwVmlkZW9Gb3JtYXRdKTsKLSsgICAgX3NpbXVsY2FzdEluZGV4ID0gaW5k
ZXg7Ci0gICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlVzaW5nIHByb2ZpbGUgIiA8PCBDRlN0cmlu
Z1RvU3RyaW5nKF9wcm9maWxlKTsKLSAgICAgUlRDX0NIRUNLKFtjb2RlY0luZm8ubmFtZSBpc0Vx
dWFsVG9TdHJpbmc6a1JUQ1ZpZGVvQ29kZWNIMjY0TmFtZV0pOwotKwotKyNpZiBkZWZpbmVkKFdF
QlJUQ19JT1MpCi0rICAgIFtSVENVSUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIgcHJlcGFyZUZv
clVzZV07Ci0rI2VuZGlmCi0gICB9Ci0gICByZXR1cm4gc2VsZjsKLSB9Ci1AQCAtMzI5LDkgKzM2
OCwxMiBAQCAtIChOU0ludGVnZXIpc3RhcnRFbmNvZGVXaXRoU2V0dGluZ3M6KFJUQ1ZpZGVvRW5j
b2RlclNldHRpbmdzICopc2V0dGluZ3MKLSAgIF93aWR0aCA9IHNldHRpbmdzLndpZHRoOwotICAg
X2hlaWdodCA9IHNldHRpbmdzLmhlaWdodDsKLSAgIF9tb2RlID0gc2V0dGluZ3MubW9kZTsKLSsg
IF9uYXRpdmVWaWRlb0NvZGVjID0gc2V0dGluZ3MubmF0aXZlVmlkZW9Db2RlYzsKLSsKLSsgIFJU
Q19EQ0hFQ0soX25hdGl2ZVZpZGVvQ29kZWMubnVtYmVyT2ZTaW11bGNhc3RTdHJlYW1zICE9IDEp
OwotIAotICAgLy8gV2UgY2FuIG9ubHkgc2V0IGF2ZXJhZ2UgYml0cmF0ZSBvbiB0aGUgSFcgZW5j
b2Rlci4KLS0gIF90YXJnZXRCaXRyYXRlQnBzID0gc2V0dGluZ3Muc3RhcnRCaXRyYXRlICogMTAw
MDsgIC8vIHN0YXJ0Qml0cmF0ZSBpcyBpbiBrYnBzLgotKyAgX3RhcmdldEJpdHJhdGVCcHMgPSBz
ZXR0aW5ncy5zdGFydEJpdHJhdGU7Ci0gICBfYml0cmF0ZUFkanVzdGVyLT5TZXRUYXJnZXRCaXRy
YXRlQnBzKF90YXJnZXRCaXRyYXRlQnBzKTsKLSAKLSAgIC8vIFRPRE8odGtjaGluKTogVHJ5IHNl
dHRpbmcgcGF5bG9hZCBzaXplIHZpYQotQEAgLTM0OCwxMCArMzkwLDIwIEBAIC0gKE5TSW50ZWdl
cillbmNvZGU6KFJUQ1ZpZGVvRnJhbWUgKilmcmFtZQotICAgaWYgKCFfY2FsbGJhY2sgfHwgIV9j
b21wcmVzc2lvblNlc3Npb24pIHsKLSAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19VTklO
SVRJQUxJWkVEOwotICAgfQotKyNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCi0rICBpZiAoIVtbUlRD
VUlBcHBsaWNhdGlvblN0YXR1c09ic2VydmVyIHNoYXJlZEluc3RhbmNlXSBpc0FwcGxpY2F0aW9u
QWN0aXZlXSkgewotKyAgICAvLyBJZ25vcmUgYWxsIGVuY29kZSByZXF1ZXN0cyB3aGVuIGFwcCBp
c24ndCBhY3RpdmUuIEluIHRoaXMgc3RhdGUsIHRoZQotKyAgICAvLyBoYXJkd2FyZSBlbmNvZGVy
IGhhcyBiZWVuIGludmFsaWRhdGVkIGJ5IHRoZSBPUy4KLSsgICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19PSzsKLSsgIH0KLSsjZW5kaWYKLSAgIEJPT0wgaXNLZXlmcmFtZVJlcXVpcmVkID0g
Tk87Ci0gCi0gICAvLyBHZXQgYSBwaXhlbCBidWZmZXIgZnJvbSB0aGUgcG9vbCBhbmQgY29weSBm
cmFtZSBkYXRhIG92ZXIuCi0tICBpZiAoW3NlbGYgcmVzZXRDb21wcmVzc2lvblNlc3Npb25JZk5l
ZWRlZFdpdGhGcmFtZTpmcmFtZV0pIHsKLSsgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVm
ZmVyUG9vbCA9Ci0rICAgICAgQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sKF9j
b21wcmVzc2lvblNlc3Npb24pOwotKyAgaWYgKFtzZWxmIHJlc2V0Q29tcHJlc3Npb25TZXNzaW9u
SWZOZWVkZWRGb3JQb29sOnBpeGVsQnVmZmVyUG9vbCB3aXRoRnJhbWU6ZnJhbWVdKSB7Ci0rICAg
IHBpeGVsQnVmZmVyUG9vbCA9IENvbXByZXNzaW9uU2Vzc2lvbkdldFBpeGVsQnVmZmVyUG9vbChf
Y29tcHJlc3Npb25TZXNzaW9uKTsKLSAgICAgaXNLZXlmcmFtZVJlcXVpcmVkID0gWUVTOwotICAg
fQotIAotQEAgLTM2OCw3ICs0MjAsNyBAQCAtIChOU0ludGVnZXIpZW5jb2RlOihSVENWaWRlb0Zy
YW1lICopZnJhbWUKLSAgICAgICBDVkJ1ZmZlclJldGFpbihwaXhlbEJ1ZmZlcik7Ci0gICAgIH0g
ZWxzZSB7Ci0gICAgICAgLy8gQ3JvcHBpbmcgcmVxdWlyZWQsIHdlIG5lZWQgdG8gY3JvcCBhbmQg
c2NhbGUgdG8gYSBuZXcgcGl4ZWwgYnVmZmVyLgotLSAgICAgIHBpeGVsQnVmZmVyID0gQ3JlYXRl
UGl4ZWxCdWZmZXIoX3BpeGVsQnVmZmVyUG9vbCk7Ci0rICAgICAgcGl4ZWxCdWZmZXIgPSBDcmVh
dGVQaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlclBvb2wpOwotICAgICAgIGlmICghcGl4ZWxCdWZmZXIp
IHsKLSAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0gICAgICAgfQot
QEAgLTM5MSw3ICs0NDMsNyBAQCAtIChOU0ludGVnZXIpZW5jb2RlOihSVENWaWRlb0ZyYW1lICop
ZnJhbWUKLSAKLSAgIGlmICghcGl4ZWxCdWZmZXIpIHsKLSAgICAgLy8gV2UgZGlkIG5vdCBoYXZl
IGEgbmF0aXZlIGZyYW1lIGJ1ZmZlcgotLSAgICBwaXhlbEJ1ZmZlciA9IENyZWF0ZVBpeGVsQnVm
ZmVyKF9waXhlbEJ1ZmZlclBvb2wpOwotKyAgICBwaXhlbEJ1ZmZlciA9IENyZWF0ZVBpeGVsQnVm
ZmVyKHBpeGVsQnVmZmVyUG9vbCk7Ci0gICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKLSAgICAgICBy
ZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwotICAgICB9Ci1AQCAtNDM0LDcgKzQ4Niw3
IEBAIC0gKE5TSW50ZWdlcillbmNvZGU6KFJUQ1ZpZGVvRnJhbWUgKilmcmFtZQotICAgLy8gVXBk
YXRlIHRoZSBiaXRyYXRlIGlmIG5lZWRlZC4KLSAgIFtzZWxmIHNldEJpdHJhdGVCcHM6X2JpdHJh
dGVBZGp1c3Rlci0+R2V0QWRqdXN0ZWRCaXRyYXRlQnBzKCldOwotIAotLSAgT1NTdGF0dXMgc3Rh
dHVzID0gVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZShfY29tcHJlc3Npb25TZXNzaW9u
LAotKyAgT1NTdGF0dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUoX2Nv
bXByZXNzaW9uU2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGl4ZWxCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvblRpbWVTdGFtcCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NNVGltZUludmFs
aWQsCi1AQCAtNDQ3LDE0ICs0OTksNyBAQCAtIChOU0ludGVnZXIpZW5jb2RlOihSVENWaWRlb0Zy
YW1lICopZnJhbWUKLSAgIGlmIChwaXhlbEJ1ZmZlcikgewotICAgICBDVkJ1ZmZlclJlbGVhc2Uo
cGl4ZWxCdWZmZXIpOwotICAgfQotLQotLSAgaWYgKHN0YXR1cyA9PSBrVlRJbnZhbGlkU2Vzc2lv
bkVycikgewotLSAgICAvLyBUaGlzIGVycm9yIG9jY3VycyB3aGVuIGVudGVyaW5nIGZvcmVncm91
bmQgYWZ0ZXIgYmFja2dyb3VuZGluZyB0aGUgYXBwLgotLSAgICBSVENfTE9HKExTX0VSUk9SKSA8
PCAiSW52YWxpZCBjb21wcmVzc2lvbiBzZXNzaW9uLCByZXNldHRpbmcuIjsKLS0gICAgW3NlbGYg
cmVzZXRDb21wcmVzc2lvblNlc3Npb25XaXRoUGl4ZWxGb3JtYXQ6W3NlbGYgcGl4ZWxGb3JtYXRP
ZkZyYW1lOmZyYW1lXV07Ci0tCi0tICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfTk9fT1VU
UFVUOwotLSAgfSBlbHNlIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKLSsgIGlmIChzdGF0dXMgIT0g
bm9FcnIpIHsKLSAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBlbmNvZGUgZnJh
bWUgd2l0aCBjb2RlOiAiIDw8IHN0YXR1czsKLSAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19FUlJPUjsKLSAgIH0KLUBAIC00NjUsOCArNTEwLDggQEAgLSAodm9pZClzZXRDYWxsYmFjazoo
UlRDVmlkZW9FbmNvZGVyQ2FsbGJhY2spY2FsbGJhY2sgewotICAgX2NhbGxiYWNrID0gY2FsbGJh
Y2s7Ci0gfQotIAotLS0gKGludClzZXRCaXRyYXRlOih1aW50MzJfdCliaXRyYXRlS2JpdCBmcmFt
ZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZSB7Ci0tICBfdGFyZ2V0Qml0cmF0ZUJwcyA9IDEwMDAg
KiBiaXRyYXRlS2JpdDsKLSstIChpbnQpc2V0Qml0cmF0ZToodWludDMyX3QpYml0cmF0ZUJwcyBm
cmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZSB7Ci0rICBfdGFyZ2V0Qml0cmF0ZUJwcyA9IGJp
dHJhdGVCcHM7Ci0gICBfYml0cmF0ZUFkanVzdGVyLT5TZXRUYXJnZXRCaXRyYXRlQnBzKF90YXJn
ZXRCaXRyYXRlQnBzKTsKLSAgIFtzZWxmIHNldEJpdHJhdGVCcHM6X2JpdHJhdGVBZGp1c3Rlci0+
R2V0QWRqdXN0ZWRCaXRyYXRlQnBzKCldOwotICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19P
SzsKLUBAIC00ODMsNDQgKzUyOCw1MSBAQCAtIChOU0ludGVnZXIpcmVsZWFzZUVuY29kZXIgewot
ICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLSB9Ci0gCi0tLSAoT1NUeXBlKXBpeGVs
Rm9ybWF0T2ZGcmFtZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1lIHsKLS0gIC8vIFVzZSBOVjEyIGZv
ciBub24tbmF0aXZlIGZyYW1lcy4KLS0gIGlmIChbZnJhbWUuYnVmZmVyIGlzS2luZE9mQ2xhc3M6
W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkgewotLSAgICBSVENDVlBpeGVsQnVmZmVyICpydGNQ
aXhlbEJ1ZmZlciA9IChSVENDVlBpeGVsQnVmZmVyICopZnJhbWUuYnVmZmVyOwotLSAgICByZXR1
cm4gQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShydGNQaXhlbEJ1ZmZlci5waXhlbEJ1
ZmZlcik7Ci0tICB9Ci0tCi0tICByZXR1cm4ga05WMTJQaXhlbEZvcm1hdDsKLS19Ci0tCi0tLSAo
Qk9PTClyZXNldENvbXByZXNzaW9uU2Vzc2lvbklmTmVlZGVkV2l0aEZyYW1lOihSVENWaWRlb0Zy
YW1lICopZnJhbWUgewotKy0gKEJPT0wpcmVzZXRDb21wcmVzc2lvblNlc3Npb25JZk5lZWRlZEZv
clBvb2w6KENWUGl4ZWxCdWZmZXJQb29sUmVmKXBpeGVsQnVmZmVyUG9vbAotKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoRnJhbWU6KFJUQ1ZpZGVvRnJhbWUgKilmcmFt
ZSB7Ci0gICBCT09MIHJlc2V0Q29tcHJlc3Npb25TZXNzaW9uID0gTk87Ci0gCi0rI2lmIGRlZmlu
ZWQoV0VCUlRDX0lPUykKLSsgIGlmICghcGl4ZWxCdWZmZXJQb29sKSB7Ci0rICAgIC8vIEtpbmQg
b2YgYSBoYWNrLiBPbiBiYWNrZ3JvdW5kaW5nLCB0aGUgY29tcHJlc3Npb24gc2Vzc2lvbiBzZWVt
cyB0byBnZXQKLSsgICAgLy8gaW52YWxpZGF0ZWQsIHdoaWNoIGNhdXNlcyB0aGlzIHBvb2wgY2Fs
bCB0byBmYWlsIHdoZW4gdGhlIGFwcGxpY2F0aW9uCi0rICAgIC8vIGlzIGZvcmVncm91bmRlZCBh
bmQgZnJhbWVzIGFyZSBiZWluZyBzZW50IGZvciBlbmNvZGluZyBhZ2Fpbi4KLSsgICAgLy8gUmVz
ZXR0aW5nIHRoZSBzZXNzaW9uIHdoZW4gdGhpcyBoYXBwZW5zIGZpeGVzIHRoZSBpc3N1ZS4KLSsg
ICAgLy8gSW4gYWRkaXRpb24gd2UgcmVxdWVzdCBhIGtleWZyYW1lIHNvIHZpZGVvIGNhbiByZWNv
dmVyIHF1aWNrbHkuCi0rICAgIHJlc2V0Q29tcHJlc3Npb25TZXNzaW9uID0gWUVTOwotKyAgICBS
VENfTE9HKExTX0lORk8pIDw8ICJSZXNldHRpbmcgY29tcHJlc3Npb24gc2Vzc2lvbiBkdWUgdG8g
aW52YWxpZCBwb29sLiI7Ci0rICB9Ci0rI2VuZGlmCi0rCi0gICAvLyBJZiB3ZSdyZSBjYXB0dXJp
bmcgbmF0aXZlIGZyYW1lcyBpbiBhbm90aGVyIHBpeGVsIGZvcm1hdCB0aGFuIHRoZSBjb21wcmVz
c2lvbiBzZXNzaW9uIGlzCi0gICAvLyBjb25maWd1cmVkIHdpdGgsIG1ha2Ugc3VyZSB0aGUgY29t
cHJlc3Npb24gc2Vzc2lvbiBpcyByZXNldCB1c2luZyB0aGUgY29ycmVjdCBwaXhlbCBmb3JtYXQu
Ci0tICBPU1R5cGUgZnJhbWVQaXhlbEZvcm1hdCA9IFtzZWxmIHBpeGVsRm9ybWF0T2ZGcmFtZTpm
cmFtZV07Ci0tCi0tICBpZiAoX2NvbXByZXNzaW9uU2Vzc2lvbikgewotKyAgLy8gSWYgd2UncmUg
Y2FwdHVyaW5nIG5vbi1uYXRpdmUgZnJhbWVzIGFuZCB0aGUgY29tcHJlc3Npb24gc2Vzc2lvbiBp
cyBjb25maWd1cmVkIHdpdGggYSBub24tTlYxMgotKyAgLy8gZm9ybWF0LCByZXNldCBpdCB0byBO
VjEyLgotKyAgT1NUeXBlIGZyYW1lUGl4ZWxGb3JtYXQgPSBrTlYxMlBpeGVsRm9ybWF0OwotKyAg
aWYgKHBpeGVsQnVmZmVyUG9vbCkgewotICAgICAvLyBUaGUgcG9vbCBhdHRyaWJ1dGUgYGtDVlBp
eGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5YCBjYW4gY29udGFpbiBlaXRoZXIgYW4gYXJyYXkg
b2YgcGl4ZWwKLSAgICAgLy8gZm9ybWF0cyBvciBhIHNpbmdsZSBwaXhlbCBmb3JtYXQuCi0gICAg
IE5TRGljdGlvbmFyeSAqcG9vbEF0dHJpYnV0ZXMgPQotLSAgICAgICAgKF9fYnJpZGdlIE5TRGlj
dGlvbmFyeSAqKUNWUGl4ZWxCdWZmZXJQb29sR2V0UGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKF9waXhl
bEJ1ZmZlclBvb2wpOwotKyAgICAgICAgKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKUNWUGl4ZWxC
dWZmZXJQb29sR2V0UGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKHBpeGVsQnVmZmVyUG9vbCk7Ci0gICAg
IGlkIHBpeGVsRm9ybWF0cyA9Ci0gICAgICAgICBbcG9vbEF0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5XTsK
LSAgICAgTlNBcnJheTxOU051bWJlciAqPiAqY29tcHJlc3Npb25TZXNzaW9uUGl4ZWxGb3JtYXRz
ID0gbmlsOwotICAgICBpZiAoW3BpeGVsRm9ybWF0cyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNs
YXNzXV0pIHsKLSAgICAgICBjb21wcmVzc2lvblNlc3Npb25QaXhlbEZvcm1hdHMgPSAoTlNBcnJh
eSAqKXBpeGVsRm9ybWF0czsKLS0gICAgfSBlbHNlIGlmIChbcGl4ZWxGb3JtYXRzIGlzS2luZE9m
Q2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pIHsKLSsgICAgfSBlbHNlIHsKLSAgICAgICBjb21wcmVz
c2lvblNlc3Npb25QaXhlbEZvcm1hdHMgPSBAWyAoTlNOdW1iZXIgKilwaXhlbEZvcm1hdHMgXTsK
LSAgICAgfQotIAotKyAgICBpZiAoW2ZyYW1lLmJ1ZmZlciBpc0tpbmRPZkNsYXNzOltSVENDVlBp
eGVsQnVmZmVyIGNsYXNzXV0pIHsKLSsgICAgICBSVENDVlBpeGVsQnVmZmVyICpydGNQaXhlbEJ1
ZmZlciA9IChSVENDVlBpeGVsQnVmZmVyICopZnJhbWUuYnVmZmVyOwotKyAgICAgIGZyYW1lUGl4
ZWxGb3JtYXQgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHJ0Y1BpeGVsQnVmZmVy
LnBpeGVsQnVmZmVyKTsKLSsgICAgfQotKwotICAgICBpZiAoIVtjb21wcmVzc2lvblNlc3Npb25Q
aXhlbEZvcm1hdHMKLSAgICAgICAgICAgICBjb250YWluc09iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aExvbmc6ZnJhbWVQaXhlbEZvcm1hdF1dKSB7Ci0gICAgICAgcmVzZXRDb21wcmVzc2lvblNl
c3Npb24gPSBZRVM7Ci0gICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUmVzZXR0aW5nIGNvbXBy
ZXNzaW9uIHNlc3Npb24gZHVlIHRvIG5vbi1tYXRjaGluZyBwaXhlbCBmb3JtYXQuIjsKLSAgICAg
fQotLSAgfSBlbHNlIHsKLS0gICAgcmVzZXRDb21wcmVzc2lvblNlc3Npb24gPSBZRVM7Ci0gICB9
Ci0gCi0gICBpZiAocmVzZXRDb21wcmVzc2lvblNlc3Npb24pIHsKLUBAIC01NTcsMjIgKzYwOSwy
NiBAQCAtIChpbnQpcmVzZXRDb21wcmVzc2lvblNlc3Npb25XaXRoUGl4ZWxGb3JtYXQ6KE9TVHlw
ZSlmcmFtZVBpeGVsRm9ybWF0IHsKLSAgICAgQ0ZSZWxlYXNlKHBpeGVsRm9ybWF0KTsKLSAgICAg
cGl4ZWxGb3JtYXQgPSBudWxscHRyOwotICAgfQotLSAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBl
bmNvZGVyX3NwZWNzID0gbnVsbHB0cjsKLS0jaWYgZGVmaW5lZChXRUJSVENfTUFDKSAmJiAhZGVm
aW5lZChXRUJSVENfSU9TKQotKyAgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjcyA9IG51bGxw
dHI7Ci0rI2lmICFkZWZpbmVkKFdFQlJUQ19JT1MpCi0rICBhdXRvIHVzZUhhcmR3YXJlRW5jb2Rl
ciA9IHdlYnJ0Yzo6aXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpID8ga0NGQm9vbGVhblRy
dWUgOiBrQ0ZCb29sZWFuRmFsc2U7Ci0gICAvLyBDdXJyZW50bHkgaHcgYWNjbCBpcyBzdXBwb3J0
ZWQgYWJvdmUgMzYwcCBvbiBtYWMsIGJlbG93IDM2MHAKLSAgIC8vIHRoZSBjb21wcmVzc2lvbiBz
ZXNzaW9uIHdpbGwgYmUgY3JlYXRlZCB3aXRoIGh3IGFjY2wgZGlzYWJsZWQuCi0tICBlbmNvZGVy
X3NwZWNzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgKLS0gICAgICBudWxscHRyLCAxLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKTsKLS0gIENGRGljdGlvbmFyeVNldFZhbHVlKGVuY29kZXJfc3BlY3MsCi0tICAgICAg
ICAgICAgICAgICAgICAgICBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3
YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICBrQ0ZC
b29sZWFuVHJ1ZSk7Ci0rICBDRlR5cGVSZWYgc2Vzc2lvbktleXNbXSA9IHsga1ZUVmlkZW9FbmNv
ZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyLCBr
VlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX1JlcXVpcmVIYXJkd2FyZUFjY2VsZXJhdGVkVmlk
ZW9FbmNvZGVyLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIH07Ci0rICBDRlR5
cGVSZWYgc2Vzc2lvblZhbHVlc1tdID0geyB1c2VIYXJkd2FyZUVuY29kZXIsIHVzZUhhcmR3YXJl
RW5jb2Rlciwga0NGQm9vbGVhblRydWUgfTsKLSsgIGVuY29kZXJTcGVjcyA9IENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uS2V5cywgc2Vzc2lvblZhbHVlcywg
MywgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcyk7Ci0rI2Vsc2UKLSsgIENGVHlwZVJlZiBzZXNzaW9uS2V5c1tdID0geyBrVlRD
b21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIH07Ci0rICBDRlR5cGVSZWYgc2Vzc2lvblZh
bHVlc1tdID0geyBrQ0ZCb29sZWFuVHJ1ZSB9OwotKyAgZW5jb2RlclNwZWNzID0gQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb25LZXlzLCBzZXNzaW9uVmFsdWVz
LCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKTsKLSAjZW5kaWYKLSsKLSAgIE9TU3RhdHVzIHN0YXR1cyA9Ci0tICAgICAg
VlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUobnVsbHB0ciwgIC8vIHVzZSBkZWZhdWx0IGFsbG9j
YXRvcgotKyAgICAgIENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZShudWxscHRyLCAgLy8gdXNlIGRl
ZmF1bHQgYWxsb2NhdG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dpZHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9oZWlnaHQsCi0tICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga0NNVmlkZW9Db2RlY1R5cGVfSDI2NCwKLS0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyX3NwZWNzLCAgLy8gdXNlIGhhcmR3YXJl
IGFjY2VsZXJhdGVkIGVuY29kZXIgaWYgYXZhaWxhYmxlCi0rICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga0NvZGVjVHlwZUgyNjQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5jb2RlclNwZWNzLCAgLy8gdXNlIGhhcmR3YXJlIGFjY2VsZXJhdGVkIGVuY29kZXIg
aWYgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlQXR0
cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCAgLy8g
dXNlIGRlZmF1bHQgY29tcHJlc3NlZCBkYXRhIGFsbG9jYXRvcgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2ssCi1AQCAtNTgyLDMyICs2
MzgsMTA1IEBAIC0gKGludClyZXNldENvbXByZXNzaW9uU2Vzc2lvbldpdGhQaXhlbEZvcm1hdDoo
T1NUeXBlKWZyYW1lUGl4ZWxGb3JtYXQgewotICAgICBDRlJlbGVhc2Uoc291cmNlQXR0cmlidXRl
cyk7Ci0gICAgIHNvdXJjZUF0dHJpYnV0ZXMgPSBudWxscHRyOwotICAgfQotLSAgaWYgKGVuY29k
ZXJfc3BlY3MpIHsKLS0gICAgQ0ZSZWxlYXNlKGVuY29kZXJfc3BlY3MpOwotLSAgICBlbmNvZGVy
X3NwZWNzID0gbnVsbHB0cjsKLSsgIGlmIChlbmNvZGVyU3BlY3MpIHsKLSsgICAgQ0ZSZWxlYXNl
KGVuY29kZXJTcGVjcyk7Ci0rICAgIGVuY29kZXJTcGVjcyA9IG51bGxwdHI7Ci0gICB9Ci0rCi0r
I2lmIEVOQUJMRV9WQ1BfRU5DT0RFUiB8fCBkZWZpbmVkKFdFQlJUQ19JT1MpCi0gICBpZiAoc3Rh
dHVzICE9IG5vRXJyKSB7Ci0gICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gY3Jl
YXRlIGNvbXByZXNzaW9uIHNlc3Npb246ICIgPDwgc3RhdHVzOwotICAgICByZXR1cm4gV0VCUlRD
X1ZJREVPX0NPREVDX0VSUk9SOwotICAgfQotKyNlbmRpZgotICNpZiBkZWZpbmVkKFdFQlJUQ19N
QUMpICYmICFkZWZpbmVkKFdFQlJUQ19JT1MpCi0gICBDRkJvb2xlYW5SZWYgaHdhY2NsX2VuYWJs
ZWQgPSBudWxscHRyOwotLSAgc3RhdHVzID0gVlRTZXNzaW9uQ29weVByb3BlcnR5KF9jb21wcmVz
c2lvblNlc3Npb24sCi0rICBpZiAoc3RhdHVzID09IG5vRXJyKSB7Ci0rICAgIHN0YXR1cyA9IFZU
U2Vzc2lvbkNvcHlQcm9wZXJ0eShfY29tcHJlc3Npb25TZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfVXNpbmdIYXJkd2Fy
ZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmh3YWNjbF9l
bmFibGVkKTsKLSsgIH0KLSAgIGlmIChzdGF0dXMgPT0gbm9FcnIgJiYgKENGQm9vbGVhbkdldFZh
bHVlKGh3YWNjbF9lbmFibGVkKSkpIHsKLSAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQ29tcHJl
c3Npb24gc2Vzc2lvbiBjcmVhdGVkIHdpdGggaHcgYWNjbCBlbmFibGVkIjsKLSAgIH0gZWxzZSB7
Ci0gICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkNvbXByZXNzaW9uIHNlc3Npb24gY3JlYXRlZCB3
aXRoIGh3IGFjY2wgZGlzYWJsZWQiOwotKwotKyNpZiAhRU5BQkxFX1ZDUF9FTkNPREVSICYmICFk
ZWZpbmVkKFdFQlJUQ19JT1MpCi0rICAgIGlmICghaXNTdGFuZGFyZEZyYW1lU2l6ZShfd2lkdGgs
IF9oZWlnaHQpKSB7Ci0rICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVzaW5nIEgyNjQgc29m
dHdhcmUgZW5jb2RlciB3aXRoIG5vbiBzdGFuZGFyZCBzaXplIGlzIG5vdCBzdXBwb3J0ZWQiOwot
KyAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0rICAgIH0KLSsKLSsgICAg
aWYgKCFnZXRrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX1VzYWdlKCkpIHsKLSsgICAgICBS
VENfTE9HKExTX0VSUk9SKSA8PCAiUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCBjYW5ub3QgY3Jl
YXRlIGEgSDI2NCBzb2Z0d2FyZSBlbmNvZGVyIjsKLSsgICAgICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX0VSUk9SOwotKyAgICB9Ci0rCi0rICAgIENGRGljdGlvbmFyeVJlZiBpb1N1cmZhY2VW
YWx1ZSA9IENyZWF0ZUNGVHlwZURpY3Rpb25hcnkobnVsbHB0ciwgbnVsbHB0ciwgMCk7Ci0rICAg
IGludDY0X3QgcGl4ZWxGb3JtYXRUeXBlID0gZnJhbWVQaXhlbEZvcm1hdDsKLSsgICAgQ0ZOdW1i
ZXJSZWYgcGl4ZWxGb3JtYXQgPSBDRk51bWJlckNyZWF0ZShudWxscHRyLCBrQ0ZOdW1iZXJMb25n
VHlwZSwgJnBpeGVsRm9ybWF0VHlwZSk7Ci0rCi0rICAgIGNvbnN0IHNpemVfdCBhdHRyaWJ1dGVz
U2l6ZSA9IDM7Ci0rICAgIENGVHlwZVJlZiBrZXlzW2F0dHJpYnV0ZXNTaXplXSA9IHsKLSsgICAg
ICBrQ1ZQaXhlbEJ1ZmZlck9wZW5HTENvbXBhdGliaWxpdHlLZXksCi0rICAgICAga0NWUGl4ZWxC
dWZmZXJJT1N1cmZhY2VQcm9wZXJ0aWVzS2V5LAotKyAgICAgIGtDVlBpeGVsQnVmZmVyUGl4ZWxG
b3JtYXRUeXBlS2V5Ci0rICAgIH07Ci0rICAgIENGVHlwZVJlZiB2YWx1ZXNbYXR0cmlidXRlc1Np
emVdID0gewotKyAgICAgIGtDRkJvb2xlYW5UcnVlLAotKyAgICAgIGlvU3VyZmFjZVZhbHVlLAot
KyAgICAgIHBpeGVsRm9ybWF0fTsKLSsgICAgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUF0dHJpYnV0
ZXMgPSBDcmVhdGVDRlR5cGVEaWN0aW9uYXJ5KGtleXMsIHZhbHVlcywgYXR0cmlidXRlc1NpemUp
OwotKwotKyAgICBpZiAoaW9TdXJmYWNlVmFsdWUpIHsKLSsgICAgICBDRlJlbGVhc2UoaW9TdXJm
YWNlVmFsdWUpOwotKyAgICAgIGlvU3VyZmFjZVZhbHVlID0gbnVsbHB0cjsKLSsgICAgfQotKyAg
ICBpZiAocGl4ZWxGb3JtYXQpIHsKLSsgICAgICBDRlJlbGVhc2UocGl4ZWxGb3JtYXQpOwotKyAg
ICAgIHBpeGVsRm9ybWF0ID0gbnVsbHB0cjsKLSsgICAgfQotKwotKyAgICBDRk11dGFibGVEaWN0
aW9uYXJ5UmVmIGVuY29kZXJTcGVjcyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUobnVsbHB0
ciwgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyk7Ci0rICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGVuY29kZXJTcGVjcywg
a1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlk
ZW9FbmNvZGVyLCBrQ0ZCb29sZWFuRmFsc2UpOwotKyAgICBpbnQgdXNhZ2VWYWx1ZSA9IDE7Ci0r
ICAgIENGTnVtYmVyUmVmIHVzYWdlID0gQ0ZOdW1iZXJDcmVhdGUobnVsbHB0ciwga0NGTnVtYmVy
SW50VHlwZSwgJnVzYWdlVmFsdWUpOwotKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShlbmNvZGVy
U3BlY3MsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilnZXRrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0
aW9uX1VzYWdlKCksIHVzYWdlKTsKLSsKLSsgICAgaWYgKHVzYWdlKSB7Ci0rICAgICAgQ0ZSZWxl
YXNlKHVzYWdlKTsKLSsgICAgICB1c2FnZSA9IG51bGxwdHI7Ci0rICAgIH0KLSsKLSsgICAgW3Nl
bGYgZGVzdHJveUNvbXByZXNzaW9uU2Vzc2lvbl07Ci0rCi0rICAgIE9TU3RhdHVzIHN0YXR1cyA9
Ci0rICAgICAgQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKG51bGxwdHIsICAvLyB1c2UgZGVmYXVs
dCBhbGxvY2F0b3IKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfd2lkdGgsCi0r
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2hlaWdodCwKLSsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrQ29kZWNUeXBlSDI2NCwKLSsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmNvZGVyU3BlY3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc291cmNlQXR0cmlidXRlcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLCAgLy8gdXNlIGRlZmF1bHQgY29tcHJlc3NlZCBkYXRhIGFsbG9jYXRvcgotKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2ss
Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmX2NvbXByZXNzaW9uU2Vzc2lvbik7Ci0rICAgIGlmIChz
b3VyY2VBdHRyaWJ1dGVzKSB7Ci0rICAgICAgQ0ZSZWxlYXNlKHNvdXJjZUF0dHJpYnV0ZXMpOwot
KyAgICAgIHNvdXJjZUF0dHJpYnV0ZXMgPSBudWxscHRyOwotKyAgICB9Ci0rICAgIGlmIChlbmNv
ZGVyU3BlY3MpIHsKLSsgICAgICBDRlJlbGVhc2UoZW5jb2RlclNwZWNzKTsKLSsgICAgICBlbmNv
ZGVyU3BlY3MgPSBudWxscHRyOwotKyAgICB9Ci0rICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsK
LSsgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwotKyAgICB9Ci0rI2VuZGlm
Ci0gICB9Ci0gI2VuZGlmCi0gICBbc2VsZiBjb25maWd1cmVDb21wcmVzc2lvblNlc3Npb25dOwot
LQotLSAgLy8gVGhlIHBpeGVsIGJ1ZmZlciBwb29sIGlzIGRlcGVuZGVudCBvbiB0aGUgY29tcHJl
c3Npb24gc2Vzc2lvbiBzbyBpZiB0aGUgc2Vzc2lvbiBpcyByZXNldCwgdGhlCi0tICAvLyBwb29s
IHNob3VsZCBiZSByZXNldCBhcyB3ZWxsLgotLSAgX3BpeGVsQnVmZmVyUG9vbCA9IFZUQ29tcHJl
c3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sKF9jb21wcmVzc2lvblNlc3Npb24pOwotLQot
ICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLSB9Ci0gCi1AQCAtNjE2LDYgKzc0NSwx
MCBAQCAtICh2b2lkKWNvbmZpZ3VyZUNvbXByZXNzaW9uU2Vzc2lvbiB7Ci0gICBTZXRWVFNlc3Np
b25Qcm9wZXJ0eShfY29tcHJlc3Npb25TZXNzaW9uLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5
X1JlYWxUaW1lLCB0cnVlKTsKLSAgIFNldFZUU2Vzc2lvblByb3BlcnR5KF9jb21wcmVzc2lvblNl
c3Npb24sIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUHJvZmlsZUxldmVsLCBfcHJvZmlsZSk7
Ci0gICBTZXRWVFNlc3Npb25Qcm9wZXJ0eShfY29tcHJlc3Npb25TZXNzaW9uLCBrVlRDb21wcmVz
c2lvblByb3BlcnR5S2V5X0FsbG93RnJhbWVSZW9yZGVyaW5nLCBmYWxzZSk7Ci0rI2lmIEVOQUJM
RV9WQ1BfRU5DT0RFUgotKyAgaWYgKGF1dG8ga2V5ID0gZ2V0a1ZUVmlkZW9FbmNvZGVyU3BlY2lm
aWNhdGlvbl9Vc2FnZSgpKQotKyAgICAgIFNldFZUU2Vzc2lvblByb3BlcnR5KF9jb21wcmVzc2lv
blNlc3Npb24sIChfX2JyaWRnZSBDRlN0cmluZ1JlZilrZXksIDEpOwotKyNlbmRpZgotICAgW3Nl
bGYgc2V0RW5jb2RlckJpdHJhdGVCcHM6X3RhcmdldEJpdHJhdGVCcHNdOwotICAgLy8gVE9ETyh0
a2NoaW4pOiBMb29rIGF0IGVudHJvcHkgbW9kZSBhbmQgY29sb3JzcGFjZSBtYXRyaWNlcy4KLSAg
IC8vIFRPRE8odGtjaGluKTogSW52ZXN0aWdhdGUgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHdheSB0
byBtYWtlIHRoaXMgd29yay4KLUBAIC02MzMsMTAgKzc2Niw5IEBAIC0gKHZvaWQpY29uZmlndXJl
Q29tcHJlc3Npb25TZXNzaW9uIHsKLSAKLSAtICh2b2lkKWRlc3Ryb3lDb21wcmVzc2lvblNlc3Np
b24gewotICAgaWYgKF9jb21wcmVzc2lvblNlc3Npb24pIHsKLS0gICAgVlRDb21wcmVzc2lvblNl
c3Npb25JbnZhbGlkYXRlKF9jb21wcmVzc2lvblNlc3Npb24pOwotKyAgICBDb21wcmVzc2lvblNl
c3Npb25JbnZhbGlkYXRlKF9jb21wcmVzc2lvblNlc3Npb24pOwotICAgICBDRlJlbGVhc2UoX2Nv
bXByZXNzaW9uU2Vzc2lvbik7Ci0gICAgIF9jb21wcmVzc2lvblNlc3Npb24gPSBudWxscHRyOwot
LSAgICBfcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0cjsKLSAgIH0KLSB9Ci0gCi1AQCAtNjY0LDcg
Kzc5Niw3IEBAIC0gKHZvaWQpc2V0RW5jb2RlckJpdHJhdGVCcHM6KHVpbnQzMl90KWJpdHJhdGVC
cHMgewotICAgICAgICAgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyU0ludDY0VHlwZSwgJm9uZVNlY29uZFZhbHVlKTsKLSAgICAgY29uc3Qgdm9pZCAqbnVtc1sy
XSA9IHtieXRlc1BlclNlY29uZCwgb25lU2Vjb25kfTsKLSAgICAgQ0ZBcnJheVJlZiBkYXRhUmF0
ZUxpbWl0cyA9IENGQXJyYXlDcmVhdGUobnVsbHB0ciwgbnVtcywgMiwgJmtDRlR5cGVBcnJheUNh
bGxCYWNrcyk7Ci0tICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KAot
KyAgICBPU1N0YXR1cyBzdGF0dXMgPSBDb21wcmVzc2lvblNlc3Npb25TZXRQcm9wZXJ0eSgKLSAg
ICAgICAgIF9jb21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRGF0
YVJhdGVMaW1pdHMsIGRhdGFSYXRlTGltaXRzKTsKLSAgICAgaWYgKGJ5dGVzUGVyU2Vjb25kKSB7
Ci0gICAgICAgQ0ZSZWxlYXNlKGJ5dGVzUGVyU2Vjb25kKTsKLUBAIC02NzYsNyArODA4LDcgQEAg
LSAodm9pZClzZXRFbmNvZGVyQml0cmF0ZUJwczoodWludDMyX3QpYml0cmF0ZUJwcyB7Ci0gICAg
ICAgQ0ZSZWxlYXNlKGRhdGFSYXRlTGltaXRzKTsKLSAgICAgfQotICAgICBpZiAoc3RhdHVzICE9
IG5vRXJyKSB7Ci0tICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBzZXQgZGF0
YSByYXRlIGxpbWl0IHdpdGggY29kZTogIiA8PCBzdGF0dXM7Ci0rICAgICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIkZhaWxlZCB0byBzZXQgZGF0YSByYXRlIGxpbWl0IjsKLSAgICAgfQotIAotICAg
ICBfZW5jb2RlckJpdHJhdGVCcHMgPSBiaXRyYXRlQnBzOwotQEAgLTY5Myw3ICs4MjUsNyBAQCAt
ICh2b2lkKWZyYW1lV2FzRW5jb2RlZDooT1NTdGF0dXMpc3RhdHVzCi0gICAgICAgICAgICAgICB0
aW1lc3RhbXA6KHVpbnQzMl90KXRpbWVzdGFtcAotICAgICAgICAgICAgICAgIHJvdGF0aW9uOihS
VENWaWRlb1JvdGF0aW9uKXJvdGF0aW9uIHsKLSAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKLS0g
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkgyNjQgZW5jb2RlIGZhaWxlZCB3aXRoIGNvZGU6ICIg
PDwgc3RhdHVzOwotKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiSDI2NCBlbmNvZGUgZmFpbGVk
OiAiIDw8IHN0YXR1czsKLSAgICAgcmV0dXJuOwotICAgfQotICAgaWYgKGluZm9GbGFncyAmIGtW
VEVuY29kZUluZm9fRnJhbWVEcm9wcGVkKSB7Ci1AQCAtNzM4LDYgKzg3MCw3IEBAIC0gKHZvaWQp
ZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1cylzdGF0dXMKLSAgIGZyYW1lLnJvdGF0aW9uID0gcm90
YXRpb247Ci0gICBmcmFtZS5jb250ZW50VHlwZSA9IChfbW9kZSA9PSBSVENWaWRlb0NvZGVjTW9k
ZVNjcmVlbnNoYXJpbmcpID8gUlRDVmlkZW9Db250ZW50VHlwZVNjcmVlbnNoYXJlIDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSVENWaWRlb0NvbnRlbnRUeXBlVW5zcGVjaWZpZWQ7Ci0rICBmcmFtZS5zcGF0aWFsSW5k
ZXggPSBfc2ltdWxjYXN0SW5kZXg7Ci0gICBmcmFtZS5mbGFncyA9IHdlYnJ0Yzo6VmlkZW9TZW5k
VGltaW5nOjprSW52YWxpZDsKLSAKLSAgIGludCBxcDsKLUBAIC03NTMsOSArODg2LDg4IEBAIC0g
KHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1cylzdGF0dXMKLSAgIF9iaXRyYXRlQWRqdXN0
ZXItPlVwZGF0ZShmcmFtZS5idWZmZXIubGVuZ3RoKTsKLSB9Ci0gCi0tLSAobnVsbGFibGUgUlRD
VmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzICopc2NhbGluZ1NldHRpbmdzIHsKLS0gIHJldHVybiBb
W1JUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyBhbGxvY10gaW5pdFdpdGhUaHJlc2hvbGRzTG93
OmtMb3dIMjY0UXBUaHJlc2hvbGQKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdoOmtIaWdoSDI2NFFwVGhyZXNob2xkXTsK
LSstIChSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMgKilzY2FsaW5nU2V0dGluZ3MgewotKyAg
cmV0dXJuIFtbUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzIGFsbG9jXSBpbml0V2l0aFRocmVz
aG9sZHNMb3c6a0xvd0gyNjRRcFRocmVzaG9sZCBoaWdoOmtIaWdoSDI2NFFwVGhyZXNob2xkXTsK
LSt9Ci0rCi0rLSAoaW50KXNldFJhdGVBbGxvY2F0aW9uOihSVENWaWRlb0JpdHJhdGVBbGxvY2F0
aW9uICopYWxsb2NhdGlvbiBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZSB7Ci0rICByZXR1
cm4gMDsKLSt9Ci0rCi0rQGVuZAotKwotK0BpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0VuY29kZXJI
MjY0IHsKLSsgIE5TTXV0YWJsZUFycmF5PFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQqPiAqX2Nv
ZGVjczsKLSsgIFJUQ1ZpZGVvQ29kZWNJbmZvICpfY29kZWNJbmZvOwotK30KLSstIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDb2RlY0luZm86KFJUQ1ZpZGVvQ29kZWNJbmZvICopY29kZWNJbmZvIHsK
LSsgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0rICAgIF9jb2RlY0luZm8gPSBjb2RlY0lu
Zm87Ci0rICB9Ci0rICByZXR1cm4gc2VsZjsKLSt9Ci0rCi0rLSAodm9pZClzZXRDYWxsYmFjazoo
UlRDVmlkZW9FbmNvZGVyQ2FsbGJhY2spY2FsbGJhY2sgewotKyAgZm9yIChSVENTaW5nbGVWaWRl
b0VuY29kZXJIMjY0ICpjb2RlYyA6IF9jb2RlY3MpCi0rICAgIFtjb2RlYyBzZXRDYWxsYmFjazpj
YWxsYmFja107Ci0rfQotKwotKy0gKE5TSW50ZWdlcilzdGFydEVuY29kZVdpdGhTZXR0aW5nczoo
UlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MgKilzZXR0aW5ncyBudW1iZXJPZkNvcmVzOihpbnQpbnVt
YmVyT2ZDb3JlcyB7Ci0rICAgIGF1dG8gbmF0aXZlQ29kZWNTZXR0aW5ncyA9IHNldHRpbmdzLm5h
dGl2ZVZpZGVvQ29kZWM7Ci0rCi0rICBfY29kZWNzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF07Ci0rICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMCA7IGluZGV4IDwgbmF0aXZlQ29kZWNT
ZXR0aW5ncy5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXM7ICsraW5kZXgpIHsKLSsgICAgYXV0byBj
b2RlYyA9IFtbUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCBhbGxvY10gaW5pdFdpdGhDb2RlY0lu
Zm86X2NvZGVjSW5mbyBzaW11bGNhc3RJbmRleDppbmRleF07Ci0rICAgIFtfY29kZWNzIGFkZE9i
amVjdDpjb2RlY107Ci0rCi0rICAgIGF1dG8gY29kZWNTZXR0aW5ncyA9IG5hdGl2ZUNvZGVjU2V0
dGluZ3M7Ci0rICAgIGNvZGVjU2V0dGluZ3Mud2lkdGggPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNp
bXVsY2FzdFN0cmVhbVtpbmRleF0ud2lkdGg7Ci0rICAgIGNvZGVjU2V0dGluZ3MuaGVpZ2h0ID0g
bmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNhc3RTdHJlYW1baW5kZXhdLmhlaWdodDsKLSsgICAg
Y29kZWNTZXR0aW5ncy5tYXhCaXRyYXRlID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNhc3RT
dHJlYW1baW5kZXhdLm1heEJpdHJhdGU7Ci0rICAgIGNvZGVjU2V0dGluZ3MudGFyZ2V0Qml0cmF0
ZSA9IG5hdGl2ZUNvZGVjU2V0dGluZ3Muc2ltdWxjYXN0U3RyZWFtW2luZGV4XS50YXJnZXRCaXRy
YXRlOwotKyAgICBjb2RlY1NldHRpbmdzLm1pbkJpdHJhdGUgPSBuYXRpdmVDb2RlY1NldHRpbmdz
LnNpbXVsY2FzdFN0cmVhbVtpbmRleF0ubWluQml0cmF0ZTsKLSsgICAgY29kZWNTZXR0aW5ncy5x
cE1heCA9IG5hdGl2ZUNvZGVjU2V0dGluZ3Muc2ltdWxjYXN0U3RyZWFtW2luZGV4XS5xcE1heDsK
LSsgICAgY29kZWNTZXR0aW5ncy5hY3RpdmUgPSB0cnVlOwotKwotKyAgICBhdXRvICpzZXR0aW5n
cyA9IFtbUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MgYWxsb2NdIGluaXRXaXRoTmF0aXZlVmlkZW9D
b2RlYzomY29kZWNTZXR0aW5nc107Ci0rICAgIFtjb2RlYyBzdGFydEVuY29kZVdpdGhTZXR0aW5n
czpzZXR0aW5ncyBudW1iZXJPZkNvcmVzOm51bWJlck9mQ29yZXNdOwotKyAgfQotKyAgcmV0dXJu
IDA7Ci0rfQotKwotKy0gKE5TSW50ZWdlcilyZWxlYXNlRW5jb2RlciB7Ci0rICBmb3IgKFJUQ1Np
bmdsZVZpZGVvRW5jb2RlckgyNjQgKmNvZGVjIDogX2NvZGVjcykKLSsgICAgW2NvZGVjIHJlbGVh
c2VFbmNvZGVyXTsKLSsgIF9jb2RlY3MgPSBuaWw7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLSAo
TlNJbnRlZ2VyKWVuY29kZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1lIGNvZGVjU3BlY2lmaWNJbmZv
OihudWxsYWJsZSBpZDxSVENDb2RlY1NwZWNpZmljSW5mbz4paW5mbyBmcmFtZVR5cGVzOihOU0Fy
cmF5PE5TTnVtYmVyICo+ICopZnJhbWVUeXBlcyB7Ci0rICBpbnQgcmVzdWx0ID0gMDsKLSsgIGZv
ciAoUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCAqY29kZWMgOiBfY29kZWNzKQotKyAgICByZXN1
bHQgfD0gW2NvZGVjIGVuY29kZTpmcmFtZSBjb2RlY1NwZWNpZmljSW5mbzppbmZvIGZyYW1lVHlw
ZXM6ZnJhbWVUeXBlc107Ci0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSstIChpbnQpc2V0UmF0
ZUFsbG9jYXRpb246KFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gKiliaXRSYXRlQWxsb2NhdGlv
biBmcmFtZXJhdGU6KHVpbnQzMl90KSBmcmFtZXJhdGUgewotKyAgaW50IHJlc3VsdCA9IDA7Ci0r
ICB1bnNpZ25lZCBjb3VudGVyID0gMDsKLSsgIGF1dG8gbmF0aXZlQml0UmF0ZUFsbG9jYXRpb24g
PSBiaXRSYXRlQWxsb2NhdGlvbi5uYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOwotKyAgZm9y
IChSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICpjb2RlYyA6IF9jb2RlY3MpCi0rICAgIHJlc3Vs
dCB8PSBbY29kZWMgc2V0Qml0cmF0ZTpuYXRpdmVCaXRSYXRlQWxsb2NhdGlvbi5HZXRTcGF0aWFs
TGF5ZXJTdW0oY291bnRlcisrKSBmcmFtZXJhdGU6ZnJhbWVyYXRlXTsKLSsgIHJldHVybiByZXN1
bHQ7Ci0rfQotKwotKy0gKE5TU3RyaW5nICopaW1wbGVtZW50YXRpb25OYW1lIHsKLSsgIHJldHVy
biBAIlZpZGVvVG9vbGJveCI7Ci0rfQotKwotKy0gKFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xk
cyAqKXNjYWxpbmdTZXR0aW5ncyB7Ci0rICByZXR1cm4gW1tSVENWaWRlb0VuY29kZXJRcFRocmVz
aG9sZHMgYWxsb2NdIGluaXRXaXRoVGhyZXNob2xkc0xvdzprTG93SDI2NFFwVGhyZXNob2xkIGhp
Z2g6a0hpZ2hIMjY0UXBUaHJlc2hvbGRdOwotK30KLSsKLSstIChpbnQpc2V0Qml0cmF0ZToodWlu
dDMyX3QpYml0cmF0ZUtiaXQgZnJhbWVyYXRlOih1aW50MzJfdClmcmFtZXJhdGUgewotKyAgcmV0
dXJuIDA7Ci0gfQotIAotIEBlbmQKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBl
cnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuY2MKLWluZGV4IGFjOTU3ZjFiNDk3Li40
NmRhZjQ0ZWNhYyAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5jYwotKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmNjCi1AQCAtMzUsMTIgKzM1LDEyIEBAIHN0ZDo6
c3RyaW5nIENGU3RyaW5nVG9TdHJpbmcoY29uc3QgQ0ZTdHJpbmdSZWYgY2Zfc3RyaW5nKSB7Ci0g
fQotIAotIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGEgVlQgcHJvcGVydHku
Ci0tdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKLSt2b2lk
IFNldFZUU2Vzc2lvblByb3BlcnR5KENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYga2V5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJfdCB2YWx1ZSkgewotICAgQ0ZOdW1iZXJSZWYgY2ZOdW0gPQotICAg
ICAgIENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQzMlR5
cGUsICZ2YWx1ZSk7Ci0tICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShz
ZXNzaW9uLCBrZXksIGNmTnVtKTsKLSsgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9uU2Vz
c2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZOdW0pOwotICAgQ0ZSZWxlYXNlKGNmTnVt
KTsKLSAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKLSAgICAgc3RkOjpzdHJpbmcga2V5X3N0cmlu
ZyA9IENGU3RyaW5nVG9TdHJpbmcoa2V5KTsKLUBAIC01MCwxMyArNTAsMTMgQEAgdm9pZCBTZXRW
VFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKLSB9Ci0gCi0gLy8gQ29udmVu
aWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KLS12b2lkIFNldFZUU2Vz
c2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAotK3ZvaWQgU2V0VlRTZXNzaW9uUHJv
cGVydHkoQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBDRlN0cmluZ1JlZiBrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCB2YWx1ZSkgewotICAgaW50NjRfdCB2YWx1ZV82NCA9IHZhbHVlOwotICAgQ0ZOdW1iZXJS
ZWYgY2ZOdW0gPQotICAgICAgIENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlclNJbnQ2NFR5cGUsICZ2YWx1ZV82NCk7Ci0tICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNl
c3Npb25TZXRQcm9wZXJ0eShzZXNzaW9uLCBrZXksIGNmTnVtKTsKLSsgIE9TU3RhdHVzIHN0YXR1
cyA9IENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZOdW0pOwot
ICAgQ0ZSZWxlYXNlKGNmTnVtKTsKLSAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKLSAgICAgc3Rk
OjpzdHJpbmcga2V5X3N0cmluZyA9IENGU3RyaW5nVG9TdHJpbmcoa2V5KTsKLUBAIC02Niw5ICs2
Niw5IEBAIHZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sCi0g
fQotIAotIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGEgVlQgcHJvcGVydHku
Ci0tdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJp
bmdSZWYga2V5LCBib29sIHZhbHVlKSB7Ci0rdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21w
cmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBib29sIHZhbHVlKSB7
Ci0gICBDRkJvb2xlYW5SZWYgY2ZfYm9vbCA9ICh2YWx1ZSkgPyBrQ0ZCb29sZWFuVHJ1ZSA6IGtD
RkJvb2xlYW5GYWxzZTsKLS0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5
KHNlc3Npb24sIGtleSwgY2ZfYm9vbCk7Ci0rICBPU1N0YXR1cyBzdGF0dXMgPSBDb21wcmVzc2lv
blNlc3Npb25TZXRQcm9wZXJ0eShzZXNzaW9uLCBrZXksIGNmX2Jvb2wpOwotICAgaWYgKHN0YXR1
cyAhPSBub0VycikgewotICAgICBzdGQ6OnN0cmluZyBrZXlfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0
cmluZyhrZXkpOwotICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlRTZXNzaW9uU2V0UHJvcGVy
dHkgZmFpbGVkIHRvIHNldDogIiA8PCBrZXlfc3RyaW5nCi1AQCAtNzcsMTAgKzc3LDEwIEBAIHZv
aWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVm
IGtleSwgYm9vbCB2YWx1ZSkgewotIH0KLSAKLSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Ig
c2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNz
aW9uUmVmIHNlc3Npb24sCi0rdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNl
c3Npb25SZWYgc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVm
IGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIHZhbHVlKSB7Ci0t
ICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShzZXNzaW9uLCBrZXksIHZh
bHVlKTsKLSsgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5
KHNlc3Npb24sIGtleSwgdmFsdWUpOwotICAgaWYgKHN0YXR1cyAhPSBub0VycikgewotICAgICBz
dGQ6OnN0cmluZyBrZXlfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyhrZXkpOwotICAgICBzdGQ6
OnN0cmluZyB2YWxfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyh2YWx1ZSk7Ci1kaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMu
aAotaW5kZXggMDY4M2VhNzllNTYuLjBjNjY5ZThiY2U2IDEwMDY0NAotLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRl
b19jb2RlYy9oZWxwZXJzLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5oCi1AQCAt
MTYsNiArMTYsOCBAQAotICNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+Ci0g
I2luY2x1ZGUgPHN0cmluZz4KLSAKLSsjaW5jbHVkZSAic2RrL1dlYktpdC9FbmNvZGVyVXRpbGl0
aWVzLmgiCi0rCi0gLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgZGljdGlv
bmFyeS4KLSBpbmxpbmUgQ0ZEaWN0aW9uYXJ5UmVmIENyZWF0ZUNGVHlwZURpY3Rpb25hcnkoQ0ZU
eXBlUmVmKiBrZXlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDRlR5cGVSZWYqIHZhbHVlcywKLUBAIC0yOSwxOCArMzEsMTggQEAgaW5saW5lIENGRGlj
dGlvbmFyeVJlZiBDcmVhdGVDRlR5cGVEaWN0aW9uYXJ5KENGVHlwZVJlZioga2V5cywKLSBzdGQ6
OnN0cmluZyBDRlN0cmluZ1RvU3RyaW5nKGNvbnN0IENGU3RyaW5nUmVmIGNmX3N0cmluZyk7Ci0g
Ci0gLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KLS12
b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1Jl
ZiBrZXksIGludDMyX3QgdmFsdWUpOwotK3ZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJl
c3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwgaW50MzJfdCB2YWx1ZSk7
Ci0gCi0gLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4K
LS12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAotK3ZvaWQg
U2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBrZXksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSk7Ci0gCi0gLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24g
Zm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KLS12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZU
U2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIGJvb2wgdmFsdWUpOwotK3ZvaWQg
U2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENGU3Ry
aW5nUmVmIGtleSwgYm9vbCB2YWx1ZSk7Ci0gCi0gLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9y
IHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KLS12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vz
c2lvblJlZiBzZXNzaW9uLAotK3ZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25T
ZXNzaW9uUmVmIHNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1Jl
ZiBrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZSk7Ci0g
Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvY29tcG9uZW50cy92aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oCi1pbmRleCA0MzJh
MzgyNTc0Ni4uYWJlOWRmY2E5M2IgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZl
ci9SVENDVlBpeGVsQnVmZmVyLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ0NW
UGl4ZWxCdWZmZXIuaAotQEAgLTE3LDYgKzE3LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
LSAKLSAvKiogUlRDVmlkZW9GcmFtZUJ1ZmZlciBjb250YWluaW5nIGEgQ1ZQaXhlbEJ1ZmZlclJl
ZiAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1l
KCJXS19SVENDVlBpeGVsQnVmZmVyIikpKQotIEBpbnRlcmZhY2UgUlRDQ1ZQaXhlbEJ1ZmZlciA6
IE5TT2JqZWN0IDxSVENWaWRlb0ZyYW1lQnVmZmVyPgotIAotIEBwcm9wZXJ0eShub25hdG9taWMs
IHJlYWRvbmx5KSBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyOwotZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9z
cmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5Lm1tCi1pbmRleCBiYTdjM2U5Njc1NC4uYzRjODVjYzZhYjkgMTAwNjQ0Ci0tLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRp
dmUvc3JjL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tCi0rKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tCi1AQCAtOTIsNiArOTIsMTIgQEAgY2xhc3MgT2JqQ1ZpZGVv
RW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewotICAgICByZXR1cm4gW2VuY29kZXJfIHNl
dEJpdHJhdGU6Yml0cmF0ZSBmcmFtZXJhdGU6ZnJhbWVyYXRlXTsKLSAgIH0KLSAKLSsgIGludDMy
X3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYWxsb2Nh
dGlvbiwgdWludDMyX3QgZnJhbWVyYXRlKSB7Ci0rICAgIFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRp
b24gKmJpdHJhdGVBbGxvY2F0aW9uID0KLSsgICAgICBbW1JUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRp
b24gYWxsb2NdIGluaXRXaXRoTmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjomYWxsb2NhdGlv
bl07Ci0rICAgIHJldHVybiBbZW5jb2Rlcl8gc2V0UmF0ZUFsbG9jYXRpb246IGJpdHJhdGVBbGxv
Y2F0aW9uIGZyYW1lcmF0ZTpmcmFtZXJhdGVdOwotKyAgfQotKwotICAgYm9vbCBTdXBwb3J0c05h
dGl2ZUhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAKLSAgIFZpZGVvRW5jb2Rlcjo6
U2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IHsKLS0tIAotMi4xNy4x
IChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvV2ViS2l0L2xpYndlYnJ0Yy5kaWZmIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dl
YktpdC9saWJ3ZWJydGMuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjQyOGU0MTVkY2E4NmZjMDc0NGVjZDk4
MTNlZWNmMGQyYzA3N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1dlYktpdC9saWJ3ZWJydGMuZGlmZgpAQCAtMCwwICsxLDI1NjggQEAKK2RpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJf
aWxiYy5jYworaW5kZXggODk2ZWQyMzhjYzMuLjRkMDI4YzlhYWY0IDEwMDY0NAorLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9p
bGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYworKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxi
Yy5jYworQEAgLTMzLDcgKzMzLDcgQEAgaW50IEdldElsYmNCaXRyYXRlKGludCBwdGltZSkgewor
ICAgICAgIC8vIDUwIGJ5dGVzIHBlciBmcmFtZSBvZiAzMCBtcyA9PiAoYXBwcm94KSAxMzMzMyBi
aXRzL3MuCisgICAgICAgcmV0dXJuIDEzMzMzOworICAgICBkZWZhdWx0OgorLSAgICAgIEZBVEFM
KCk7CisrICAgICAgUlRDX0ZBVEFMKCk7CisgICB9CisgfQorIH0gIC8vIG5hbWVzcGFjZQorZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9t
ZWRpYXR5cGVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL21lZGlhdHlwZXMuY2MKK2luZGV4IDU5OTU0MmRiMDhmLi4xNDBkMGFlOTYyNSAxMDA2NDQK
Ky0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRp
YXR5cGVzLmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvbWVkaWF0eXBlcy5jYworQEAgLTI4LDcgKzI4LDcgQEAgc3RkOjpzdHJpbmcgTWVkaWFU
eXBlVG9TdHJpbmcoTWVkaWFUeXBlIHR5cGUpIHsKKyAgICAgY2FzZSBNRURJQV9UWVBFX0RBVEE6
CisgICAgICAgcmV0dXJuIGtNZWRpYVR5cGVEYXRhOworICAgfQorLSAgRkFUQUwoKTsKKysgIFJU
Q19GQVRBTCgpOworICAgLy8gTm90IHJlYWNoYWJsZTsgYXZvaWRzIGNvbXBpbGUgd2FybmluZy4K
KyAgIHJldHVybiAiIjsKKyB9CitAQCAtNDEsNyArNDEsNyBAQCBNZWRpYVR5cGUgTWVkaWFUeXBl
RnJvbVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdHlwZV9zdHIpIHsKKyAgIH0gZWxzZSBpZiAo
dHlwZV9zdHIgPT0ga01lZGlhVHlwZURhdGEpIHsKKyAgICAgcmV0dXJuIE1FRElBX1RZUEVfREFU
QTsKKyAgIH0KKy0gIEZBVEFMKCk7CisrICBSVENfRkFUQUwoKTsKKyAgIC8vIE5vdCByZWFjaGFi
bGU7IGF2b2lkcyBjb21waWxlIHdhcm5pbmcuCisgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFU
eXBlPigtMSk7CisgfQorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4X3Jlc2FtcGxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MKK2luZGV4IGNj
NTllMmE4MjNjLi5iMTE1OGRhMjEzZiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4X3Jlc2FtcGxlLmNjCisrKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBs
ZS5jYworQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBSZW1peEFuZFJlc2FtcGxlKGNvbnN0IGludDE2
X3QqIHNyY19kYXRhLAorIAorICAgaWYgKHJlc2FtcGxlci0+SW5pdGlhbGl6ZUlmTmVlZGVkKHNh
bXBsZV9yYXRlX2h6LCBkc3RfZnJhbWUtPnNhbXBsZV9yYXRlX2h6XywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wdHJfbnVtX2NoYW5uZWxzKSA9PSAtMSkgewor
LSAgICBGQVRBTCgpIDw8ICJJbml0aWFsaXplSWZOZWVkZWQgZmFpbGVkOiBzYW1wbGVfcmF0ZV9o
eiA9ICIgPDwgc2FtcGxlX3JhdGVfaHoKKysgICAgUlRDX0ZBVEFMKCkgPDwgIkluaXRpYWxpemVJ
Zk5lZWRlZCBmYWlsZWQ6IHNhbXBsZV9yYXRlX2h6ID0gIiA8PCBzYW1wbGVfcmF0ZV9oegorICAg
ICAgICAgICAgIDw8ICIsIGRzdF9mcmFtZS0+c2FtcGxlX3JhdGVfaHpfID0gIiA8PCBkc3RfZnJh
bWUtPnNhbXBsZV9yYXRlX2h6XworICAgICAgICAgICAgIDw8ICIsIGF1ZGlvX3B0cl9udW1fY2hh
bm5lbHMgPSAiIDw8IGF1ZGlvX3B0cl9udW1fY2hhbm5lbHM7CisgICB9CitAQCAtNjksNyArNjks
NyBAQCB2b2lkIFJlbWl4QW5kUmVzYW1wbGUoY29uc3QgaW50MTZfdCogc3JjX2RhdGEsCisgICAg
ICAgcmVzYW1wbGVyLT5SZXNhbXBsZShhdWRpb19wdHIsIHNyY19sZW5ndGgsIGRzdF9mcmFtZS0+
bXV0YWJsZV9kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0ZyYW1lOjpr
TWF4RGF0YVNpemVTYW1wbGVzKTsKKyAgIGlmIChvdXRfbGVuZ3RoID09IC0xKSB7CistICAgIEZB
VEFMKCkgPDwgIlJlc2FtcGxlIGZhaWxlZDogYXVkaW9fcHRyID0gIiA8PCBhdWRpb19wdHIKKysg
ICAgUlRDX0ZBVEFMKCkgPDwgIlJlc2FtcGxlIGZhaWxlZDogYXVkaW9fcHRyID0gIiA8PCBhdWRp
b19wdHIKKyAgICAgICAgICAgICA8PCAiLCBzcmNfbGVuZ3RoID0gIiA8PCBzcmNfbGVuZ3RoCisg
ICAgICAgICAgICAgPDwgIiwgZHN0X2ZyYW1lLT5tdXRhYmxlX2RhdGEoKSA9ICIgPDwgZHN0X2Zy
YW1lLT5tdXRhYmxlX2RhdGEoKTsKKyAgIH0KK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2Zp
bGUuY2MKK2luZGV4IDFiOGJjYmQ5MjNjLi45MGE4OTI4MWU1YyAxMDA2NDQKKy0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmls
ZS5jYworKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX2F1ZGlvL3dhdl9maWxlLmNjCitAQCAtNjMsNyArNjMsNyBAQCBXYXZSZWFkZXI6OldhdlJl
YWRlcihydGM6OlBsYXRmb3JtRmlsZSBmaWxlKSB7CisgICAgIGlmICghcnRjOjpDbG9zZVBsYXRm
b3JtRmlsZShmaWxlKSkgeworICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBjbG9z
ZSBmaWxlLiI7CisgICAgIH0KKy0gICAgRkFUQUwoKSA8PCAiQ291bGQgbm90IG9wZW4gd2F2IGZp
bGUgZm9yIHJlYWRpbmcuIjsKKysgICAgUlRDX0ZBVEFMKCkgPDwgIkNvdWxkIG5vdCBvcGVuIHdh
diBmaWxlIGZvciByZWFkaW5nLiI7CisgICB9CisgCisgICBSZWFkYWJsZVdhdkZpbGUgcmVhZGFi
bGUoZmlsZV9oYW5kbGVfKTsKK0BAIC0xNDgsNyArMTQ4LDcgQEAgV2F2V3JpdGVyOjpXYXZXcml0
ZXIocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwKKyAgICAgaWYgKCFydGM6OkNsb3NlUGxhdGZvcm1G
aWxlKGZpbGUpKSB7CisgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbid0IGNsb3NlIGZp
bGUuIjsKKyAgICAgfQorLSAgICBGQVRBTCgpIDw8ICJDb3VsZCBub3Qgb3BlbiB3YXYgZmlsZSBm
b3Igd3JpdGluZy4iOworKyAgICBSVENfRkFUQUwoKSA8PCAiQ291bGQgbm90IG9wZW4gd2F2IGZp
bGUgZm9yIHdyaXRpbmcuIjsKKyAgIH0KKyAKKyAgIFJUQ19DSEVDSyhDaGVja1dhdlBhcmFtZXRl
cnMobnVtX2NoYW5uZWxzXywgc2FtcGxlX3JhdGVfLCBrV2F2Rm9ybWF0LAorZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92
aWRlb19mcmFtZV9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjCitpbmRleCBmNGYxMzhm
Y2NiNS4uNWY4OWI0YWNiOTYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjCisrKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8v
dmlkZW9fZnJhbWVfYnVmZmVyLmNjCitAQCAtMjcyLDcgKzI3Miw3IEBAIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxQbGFuYXJZdXZCdWZmZXI+IFdyYXBZdXZCdWZmZXIoCisgICAgICAgcmV0dXJuIFdyYXBJ
NDQ0QnVmZmVyKHdpZHRoLCBoZWlnaHQsIHlfcGxhbmUsIHlfc3RyaWRlLCB1X3BsYW5lLCB1X3N0
cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdl9wbGFuZSwgdl9zdHJpZGUsIG5v
X2xvbmdlcl91c2VkKTsKKyAgICAgZGVmYXVsdDoKKy0gICAgICBGQVRBTCgpIDw8ICJVbmV4cGVj
dGVkIGZyYW1lIGJ1ZmZlciB0eXBlLiI7CisrICAgICAgUlRDX0ZBVEFMKCkgPDwgIlVuZXhwZWN0
ZWQgZnJhbWUgYnVmZmVyIHR5cGUuIjsKKyAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgIH0KKyB9
CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MKK2luZGV4IDlhMjkyNjE0M2QwLi40
NzY5NTRmZTYwZCAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9j
bmcuY2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MKK0BAIC0x
NzEsNyArMTcxLDcgQEAgQXVkaW9FbmNvZGVyOjpFbmNvZGVkSW5mbyBBdWRpb0VuY29kZXJDbmc6
OkVuY29kZUltcGwoCisgICAgICAgYnJlYWs7CisgICAgIH0KKyAgICAgY2FzZSBWYWQ6OmtFcnJv
cjogeworLSAgICAgIEZBVEFMKCk7ICAvLyBGYWlscyBvbmx5IGlmIGZlZCBpbnZhbGlkIGRhdGEu
CisrICAgICAgUlRDX0ZBVEFMKCk7ICAvLyBGYWlscyBvbmx5IGlmIGZlZCBpbnZhbGlkIGRhdGEu
CisgICAgICAgYnJlYWs7CisgICAgIH0KKyAgIH0KK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
aWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19lbmNv
ZGVyX2lsYmMuY2MKK2luZGV4IDg4MDFmZDU1NTkwLi4zNWU2ZmM2NGE2MiAxMDA2NDQKKy0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYworKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29k
ZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCitAQCAtNDEsNyArNDEsNyBAQCBpbnQgR2V0
SWxiY0JpdHJhdGUoaW50IHB0aW1lKSB7CisgICAgICAgLy8gNTAgYnl0ZXMgcGVyIGZyYW1lIG9m
IDMwIG1zID0+IChhcHByb3gpIDEzMzMzIGJpdHMvcy4KKyAgICAgICByZXR1cm4gMTMzMzM7Cisg
ICAgIGRlZmF1bHQ6CistICAgICAgRkFUQUwoKTsKKysgICAgICBSVENfRkFUQUwoKTsKKyAgIH0K
KyB9CisgCitAQCAtMTQ4LDcgKzE0OCw3IEBAIHNpemVfdCBBdWRpb0VuY29kZXJJbGJjSW1wbDo6
UmVxdWlyZWRPdXRwdXRTaXplQnl0ZXMoKSBjb25zdCB7CisgICAgIGNhc2UgNjoKKyAgICAgICBy
ZXR1cm4gMiAqIDUwOworICAgICBkZWZhdWx0OgorLSAgICAgIEZBVEFMKCk7CisrICAgICAgUlRD
X0ZBVEFMKCk7CisgICB9CisgfQorIAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5
X25vb3AuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9ub29wLmNjCituZXcgZmlsZSBtb2RlIDEw
MDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLmIwNThjMmQ2NzI4CistLS0gL2Rldi9udWxsCisrKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9ub29wLmNjCitAQCAtMCwwICsxLDQzIEBACisrLyoKKysg
KiAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorKyAqCisrICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKysgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisrICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KysgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKysgKgorKyAqLworKworKyNpZiAhZGVmaW5lZChSVENfRElTQUJM
RV9WUDkpCisrI2Vycm9yCisrI2VuZGlmICAvLyAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisr
CisrI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvaW5jbHVkZS92cDku
aCIKKysKKysjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCisr
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorKworK25hbWVzcGFjZSB3ZWJydGMgeworKwor
K3N0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBTdXBwb3J0ZWRWUDlDb2RlY3MoKSB7CisrICBy
ZXR1cm4gc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+KCk7CisrfQorKworK3N0ZDo6dW5pcXVl
X3B0cjxWUDlFbmNvZGVyPiBWUDlFbmNvZGVyOjpDcmVhdGUoKSB7CisrICBSVENfTk9UUkVBQ0hF
RCgpOworKyAgcmV0dXJuIG51bGxwdHI7CisrfQorKworK3N0ZDo6dW5pcXVlX3B0cjxWUDlFbmNv
ZGVyPiBWUDlFbmNvZGVyOjpDcmVhdGUoCisrICAgIGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29kZWMm
IGNvZGVjKSB7CisrICBSVENfTk9UUkVBQ0hFRCgpOworKyAgcmV0dXJuIG51bGxwdHI7CisrfQor
KworK3N0ZDo6dW5pcXVlX3B0cjxWUDlEZWNvZGVyPiBWUDlEZWNvZGVyOjpDcmVhdGUoKSB7Cisr
ICBSVENfTk9UUkVBQ0hFRCgpOworKyAgcmV0dXJuIG51bGxwdHI7CisrfQorKworK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYworaW5kZXggZTAxOGVhNzU1
ZDYuLjBkN2FlYTlkNjBhIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYworKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYworQEAgLTM1MSwx
MSArMzUxLDIxIEBAIFRDUENvbm5lY3Rpb246OlRDUENvbm5lY3Rpb24oVENQUG9ydCogcG9ydCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBwb3J0KCkgTmV0d29yazoiIDw8IHBvcnQt
Pk5ldHdvcmsoKS0+VG9TdHJpbmcoKTsKKyAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8cnRjOjpJbnRl
cmZhY2VBZGRyZXNzPiYgZGVzaXJlZF9hZGRyZXNzZXMgPQorICAgICAgICAgcG9ydF8tPk5ldHdv
cmsoKS0+R2V0SVBzKCk7CisrCisrI2lmIGRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKKysg
ICAgIFJUQ19EQ0hFQ0soc29ja2V0LT5HZXRMb2NhbEFkZHJlc3MoKS5Jc0xvb3BiYWNrSVAoKSB8
fAorKyAgICAgICAgICAgICAgICAoc3RkOjpmaW5kX2lmKGRlc2lyZWRfYWRkcmVzc2VzLmJlZ2lu
KCksIGRlc2lyZWRfYWRkcmVzc2VzLmVuZCgpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW3RoaXNdKGNvbnN0IHJ0Yzo6SW50ZXJmYWNlQWRkcmVzcyYgYWRkcikgeworKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc29ja2V0Xy0+R2V0TG9jYWxBZGRyZXNzKCku
aXBhZGRyKCkgPT0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHI7
CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAhPSBkZXNpcmVkX2FkZHJlc3Nlcy5l
bmQoKSkpOworKyAjZWxzZQorICAgICBSVENfRENIRUNLKHN0ZDo6ZmluZF9pZihkZXNpcmVkX2Fk
ZHJlc3Nlcy5iZWdpbigpLCBkZXNpcmVkX2FkZHJlc3Nlcy5lbmQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW3RoaXNdKGNvbnN0IHJ0Yzo6SW50ZXJmYWNlQWRkcmVzcyYgYWRkcikg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzb2NrZXRfLT5HZXRMb2Nh
bEFkZHJlc3MoKS5pcGFkZHIoKSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAhPSBkZXNpcmVkX2Fk
ZHJlc3Nlcy5lbmQoKSk7CisrI2VuZGlmCisgICAgIENvbm5lY3RTb2NrZXRTaWduYWxzKHNvY2tl
dCk7CisgICB9CisgfQorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYwor
aW5kZXggMzdjNmEwYjBiY2YuLjc1MjYxNTA4YjI3IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNj
CisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVy
Y29ubmVjdGlvbmZhY3RvcnkuY2MKK0BAIC0yNjEsNyArMjYxLDcgQEAgUnRwQ2FwYWJpbGl0aWVz
IFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6R2V0UnRwU2VuZGVyQ2FwYWJpbGl0aWVzKAorICAgICAg
IHJldHVybiBSdHBDYXBhYmlsaXRpZXMoKTsKKyAgIH0KKyAgIC8vIE5vdCByZWFjaGVkOyBhdm9p
ZHMgY29tcGlsZSB3YXJuaW5nLgorLSAgRkFUQUwoKTsKKysgIFJUQ19GQVRBTCgpOworIH0KKyAK
KyBSdHBDYXBhYmlsaXRpZXMgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpHZXRSdHBSZWNlaXZlckNh
cGFiaWxpdGllcygKK0BAIC0yODgsNyArMjg4LDcgQEAgUnRwQ2FwYWJpbGl0aWVzIFBlZXJDb25u
ZWN0aW9uRmFjdG9yeTo6R2V0UnRwUmVjZWl2ZXJDYXBhYmlsaXRpZXMoCisgICAgICAgcmV0dXJu
IFJ0cENhcGFiaWxpdGllcygpOworICAgfQorICAgLy8gTm90IHJlYWNoZWQ7IGF2b2lkcyBjb21w
aWxlIHdhcm5pbmcuCistICBGQVRBTCgpOworKyAgUlRDX0ZBVEFMKCk7CisgfQorIAorIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb1NvdXJjZUludGVyZmFjZT4KK2RpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJhbWV0ZXJzY29udmVy
c2lvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0
cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNjCitpbmRleCBiZjNiY2UzZGFhMy4uODY1Njg1ZDczYzQg
MTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYworKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb24uY2MKK0BAIC02
MSw3ICs2MSw3IEBAIFJUQ0Vycm9yT3I8Y3JpY2tldDo6RmVlZGJhY2tQYXJhbT4gVG9Dcmlja2V0
RmVlZGJhY2tQYXJhbSgKKyAgICAgICByZXR1cm4gY3JpY2tldDo6RmVlZGJhY2tQYXJhbShjcmlj
a2V0OjprUnRjcEZiUGFyYW1UcmFuc3BvcnRDYyk7CisgICB9CisgICAvLyBOb3QgcmVhY2hlZDsg
YXZvaWRzIGNvbXBpbGUgd2FybmluZy4KKy0gIEZBVEFMKCk7CisrICBSVENfRkFUQUwoKTsKKyB9
CisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIEM+CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaAoraW5kZXgg
OWRlNmQ0NzU3M2MuLjVjZjA2Nzk5MTBlIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgKKysrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NoZWNrcy5oCitAQCAt
ODAsNyArODAsNyBAQCBSVENfTk9SRVRVUk4gdm9pZCBydGNfRmF0YWxNZXNzYWdlKGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBtc2cpOworIC8vICAgbWVzc2FnZXMgaWYg
dGhlIGNvbmRpdGlvbiBkb2Vzbid0IGhvbGQuIFByZWZlciB0aGVtIHRvIHJhdyBSVENfQ0hFQ0sg
YW5kCisgLy8gICBSVENfRENIRUNLLgorIC8vCistLy8gLSBGQVRBTCgpIGFib3J0cyB1bmNvbmRp
dGlvbmFsbHkuCisrLy8gLSBSVENfRkFUQUwoKSBhYm9ydHMgdW5jb25kaXRpb25hbGx5LgorIC8v
CisgLy8gVE9ETyhham0pOiBJZGVhbGx5LCBjaGVja3MuaCB3b3VsZCBiZSBjb21iaW5lZCB3aXRo
IGxvZ2dpbmcuaCwgYnV0CisgLy8gY29uc29saWRhdGlvbiB3aXRoIHN5c3RlbV93cmFwcGVycy9s
b2dnaW5nLmggc2hvdWxkIGhhcHBlbiBmaXJzdC4KK0BAIC0zNDgsOSArMzQ4LDkgQEAgY2xhc3Mg
RmF0YWxMb2dDYWxsIGZpbmFsIHsKKyAjZGVmaW5lIFJUQ19OT1RSRUFDSEVEKCkgUlRDX0RDSEVD
SyhSVENfVU5SRUFDSEFCTEVfQ09ERV9ISVQpCisgCisgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcv
ODQ1NCk6IEFkZCBhbiBSVENfIHByZWZpeCBvciByZW5hbWUgZGlmZmVyZW50bHkuCistI2RlZmlu
ZSBGQVRBTCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKysjZGVmaW5lIFJUQ19GQVRBTCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIHJ0Yzo6d2VicnRjX2NoZWNrc19pbXBsOjpGYXRh
bExvZ0NhbGw8ZmFsc2U+KF9fRklMRV9fLCBfX0xJTkVfXywgXAorLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZBVEFMKCkiKSAmICAgICAgICBcCisrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUlRDX0ZBVEFMKCki
KSAmICAgICAgICBcCisgICAgICAgcnRjOjp3ZWJydGNfY2hlY2tzX2ltcGw6OkxvZ1N0cmVhbWVy
PD4oKQorIAorIC8vIFBlcmZvcm1zIHRoZSBpbnRlZ2VyIGRpdmlzaW9uIGEvYiBhbmQgcmV0dXJu
cyB0aGUgcmVzdWx0LiBDSEVDS3MgdGhhdCB0aGUKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjCitpbmRl
eCBiY2NlMGRhZmJjMC4uNmI0M2I5MWUwMjYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYworKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MKK0BA
IC04MSw3ICs4MSw3IEBAIHZvaWQgRmxhZzo6U2V0VG9EZWZhdWx0KCkgeworICAgICAgIHZhcmlh
YmxlXy0+cyA9IGRlZmF1bHRfLnM7CisgICAgICAgcmV0dXJuOworICAgfQorLSAgRkFUQUwoKSA8
PCAidW5yZWFjaGFibGUgY29kZSI7CisrICBSVENfRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29k
ZSI7CisgfQorIAorIHN0YXRpYyBjb25zdCBjaGFyKiBUeXBlMlN0cmluZyhGbGFnOjpUeXBlIHR5
cGUpIHsKK0BAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBUeXBlMlN0cmluZyhG
bGFnOjpUeXBlIHR5cGUpIHsKKyAgICAgY2FzZSBGbGFnOjpTVFJJTkc6CisgICAgICAgcmV0dXJu
ICJzdHJpbmciOworICAgfQorLSAgRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7CisrICBS
VENfRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7CisgfQorIAorIHN0YXRpYyB2b2lkIFBy
aW50RmxhZ1ZhbHVlKEZsYWc6OlR5cGUgdHlwZSwgRmxhZ1ZhbHVlKiBwKSB7CitAQCAtMTEzLDcg
KzExMyw3IEBAIHN0YXRpYyB2b2lkIFByaW50RmxhZ1ZhbHVlKEZsYWc6OlR5cGUgdHlwZSwgRmxh
Z1ZhbHVlKiBwKSB7CisgICAgICAgcHJpbnRmKCIlcyIsIHAtPnMpOworICAgICAgIHJldHVybjsK
KyAgIH0KKy0gIEZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOworKyAgUlRDX0ZBVEFMKCkg
PDwgInVucmVhY2hhYmxlIGNvZGUiOworIH0KKyAKKyB2b2lkIEZsYWc6OlByaW50KGJvb2wgcHJp
bnRfY3VycmVudF92YWx1ZSkgeworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5oCitpbmRleCA1MTNi
YzI2MzY1MS4uNzE4ZDk1ODkzNDggMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5oCisrKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5oCitAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBMb2NhdGlvbiB7CisgI2RlZmluZSBSVENfRlJPTV9IRVJFIFJU
Q19GUk9NX0hFUkVfV0lUSF9GVU5DVElPTihfX0ZVTkNUSU9OX18pCisgCisgI2RlZmluZSBSVENf
RlJPTV9IRVJFX1dJVEhfRlVOQ1RJT04oZnVuY3Rpb25fbmFtZSkgXAorLSAgOjpydGM6OkxvY2F0
aW9uKGZ1bmN0aW9uX25hbWUsIF9fRklMRV9fICI6IiBTVFJJTkdJWkUoX19MSU5FX18pKQorKyAg
OjpydGM6OkxvY2F0aW9uKGZ1bmN0aW9uX25hbWUsIF9fRklMRV9fICI6IiBSVENfU1RSSU5HSVpF
KF9fTElORV9fKSkKKyAKKyB9ICAvLyBuYW1lc3BhY2UgcnRjCisgCitkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xv
Z2dpbmcuY2MKK2luZGV4IGJiNGZiZmFhZTI1Li40NGVjM2Y1MGMxOSAxMDA2NDQKKy0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmcu
Y2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2xvZ2dpbmcuY2MKK0BAIC0yMCwyOCArMjAsMjYgQEAKKyAjaW5jbHVkZSA8Q29yZVNlcnZp
Y2VzL0NvcmVTZXJ2aWNlcy5oPgorICNlbGlmIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCisgI2lu
Y2x1ZGUgPGFuZHJvaWQvbG9nLmg+CistCisgLy8gQW5kcm9pZCBoYXMgYSAxMDI0IGxpbWl0IG9u
IGxvZyBpbnB1dHMuIFdlIHVzZSA2MCBjaGFycyBhcyBhbgorIC8vIGFwcHJveCBmb3IgdGhlIGhl
YWRlci90YWcgcG9ydGlvbi4KKyAvLyBTZWUgYW5kcm9pZC9zeXN0ZW0vY29yZS9saWJsb2cvbG9n
ZF93cml0ZS5jCisgc3RhdGljIGNvbnN0IGludCBrTWF4TG9nTGluZVNpemUgPSAxMDI0IC0gNjA7
CisgI2VuZGlmICAvLyBXRUJSVENfTUFDICYmICFkZWZpbmVkKFdFQlJUQ19JT1MpIHx8IFdFQlJU
Q19BTkRST0lECisgCistI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgor
KyNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5jbHVkZSA8dGltZS5oPgorKworICNpbmNsdWRlIDxh
bGdvcml0aG0+CisgI2luY2x1ZGUgPGNzdGRhcmc+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKy0j
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisgI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fs
c2VjdGlvbi5oIgorICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisgI2luY2x1ZGUgInJ0
Y19iYXNlL3BsYXRmb3JtX3RocmVhZF90eXBlcy5oIgorKyNpbmNsdWRlICJydGNfYmFzZS9uZXZl
cl9kZXN0cm95ZWQuaCIKKyAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCisgI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKKyAjaW5jbHVkZSAicnRj
X2Jhc2Uvc3RyaW5ndXRpbHMuaCIKKy0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRp
b25zLmgiCisgI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgorIAorIG5hbWVzcGFjZSBy
dGMgeworQEAgLTY1LDIwICs2MywxOSBAQCBjb25zdCBjaGFyKiBGaWxlbmFtZUZyb21QYXRoKGNv
bnN0IGNoYXIqIGZpbGUpIHsKKyAgICAgcmV0dXJuIChlbmQxID4gZW5kMikgPyBlbmQxICsgMSA6
IGVuZDIgKyAxOworIH0KKyAKKy0vLyBHbG9iYWwgbG9jayBmb3IgbG9nIHN1YnN5c3RlbSwgb25s
eSBuZWVkZWQgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBzdHJlYW1zXy4KKy1Dcml0aWNhbFNlY3Rp
b24gZ19sb2dfY3JpdDsKKysvLyBHbG9iYWwgbG9jayBmb3IgbG9nIHN1YnN5c3RlbSwgb25seSBu
ZWVkZWQgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBzdHJlYW1MaXN0KCkuCisrQ3JpdGljYWxTZWN0
aW9uJiBsb2dDcml0aWNhbFNjb3BlKCkgeworKyAgc3RhdGljIGF1dG8gc2NvcGUgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQ8PihDcml0aWNhbFNlY3Rpb24geyB9KTsKKysgIHJldHVybiBzY29wZS5nZXQo
KTsKKyt9CisrCisgfSAgLy8gbmFtZXNwYWNlCisgCisgLy8gSW5lZmZpY2llbnQgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbiwgb3ZlcnJpZGUgaXMgcmVjb21tZW5kZWQuCisgdm9pZCBMb2dTaW5rOjpP
bkxvZ01lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1zZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogdGFnKSB7CistICBPbkxvZ01lc3NhZ2UodGFnICsgKCI6ICIgKyBt
c2cpLCBzZXZlcml0eSk7CistfQorLQorLXZvaWQgTG9nU2luazo6T25Mb2dNZXNzYWdlKGNvbnN0
IHN0ZDo6c3RyaW5nJiBtc2csCistICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2luZ1Nl
dmVyaXR5IC8qIHNldmVyaXR5ICovKSB7CistICBPbkxvZ01lc3NhZ2UobXNnKTsKKysgIE9uTG9n
TWVzc2FnZSh0YWcgKyAoIjogIiArIG1zZykpOworIH0KKyAKKyAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LworQEAgLTkxLDcgKzg4LDE1IEBAIGJvb2wgTG9nTWVzc2FnZTo6bG9nX3RvX3N0ZGVycl8gPSB0
cnVlOworIC8vIE5vdGU6IHdlIGV4cGxpY2l0bHkgZG8gbm90IGNsZWFuIHRoaXMgdXAsIGJlY2F1
c2Ugb2YgdGhlIHVuY2VydGFpbiBvcmRlcmluZworIC8vIG9mIGRlc3RydWN0b3JzIGF0IHByb2dy
YW0gZXhpdC4gIExldCB0aGUgcGVyc29uIHdobyBzZXRzIHRoZSBzdHJlYW0gdHJpZ2dlcgorIC8v
IGNsZWFudXAgYnkgc2V0dGluZyB0byBudWxsLCBvciBsZXQgaXQgbGVhayAoc2FmZSBhdCBwcm9n
cmFtIGV4aXQpLgorLUxvZ01lc3NhZ2U6OlN0cmVhbUxpc3QgTG9nTWVzc2FnZTo6c3RyZWFtc18g
UlRDX0dVQVJERURfQlkoZ19sb2dfY3JpdCk7CisrdHlwZWRlZiBzdGQ6OnBhaXI8TG9nU2luayos
IExvZ2dpbmdTZXZlcml0eT4gU3RyZWFtQW5kU2V2ZXJpdHk7CisrdHlwZWRlZiBzdGQ6Omxpc3Q8
U3RyZWFtQW5kU2V2ZXJpdHk+IFN0cmVhbUxpc3Q7CisrCisrLy8gVGhlIG91dHB1dCBzdHJlYW1z
IGFuZCB0aGVpciBhc3NvY2lhdGVkIHNldmVyaXRpZXMKKytTdHJlYW1MaXN0JiBzdHJlYW1MaXN0
KCkKKysgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChsb2dDcml0aWNhbFNjb3BlKCkp
IHsKKysgICAgICAgIHN0YXRpYyBhdXRvIHN0cmVhbV9saXN0ID0gbWFrZU5ldmVyRGVzdHJveWVk
PD4oU3RyZWFtTGlzdCB7IH0pOworKyAgcmV0dXJuIHN0cmVhbV9saXN0LmdldCgpOworK30KKyAK
KyAvLyBCb29sZWFuIG9wdGlvbnMgZGVmYXVsdCB0byBmYWxzZSAoMCkKKyBib29sIExvZ01lc3Nh
Z2U6OnRocmVhZF8sIExvZ01lc3NhZ2U6OnRpbWVzdGFtcF87CitAQCAtMTA1LDYgKzExMCw3IEBA
IExvZ01lc3NhZ2U6OkxvZ01lc3NhZ2UoY29uc3QgY2hhciogZmlsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIExvZ0Vycm9yQ29udGV4dCBlcnJfY3R4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGVycikKKyAgICAgOiBzZXZlcml0eV8oc2V2KSB7CisrCisgICBpZiAodGltZXN0YW1w
XykgeworICAgICAvLyBVc2UgU3lzdGVtVGltZU1pbGxpcyBzbyB0aGF0IGV2ZW4gaWYgdGVzdHMg
dXNlIGZha2UgY2xvY2tzLCB0aGUgdGltZXN0YW1wCisgICAgIC8vIGluIGxvZyBtZXNzYWdlcyBy
ZXByZXNlbnRzIHRoZSByZWFsIHN5c3RlbSB0aW1lLgorQEAgLTIwNSwxMyArMjExLDEzIEBAIExv
Z01lc3NhZ2U6On5Mb2dNZXNzYWdlKCkgeworICNlbmRpZgorICAgfQorIAorLSAgQ3JpdFNjb3Bl
IGNzKCZnX2xvZ19jcml0KTsKKy0gIGZvciAoYXV0byYga3YgOiBzdHJlYW1zXykgeworKyAgQ3Jp
dFNjb3BlIGNzKCZsb2dDcml0aWNhbFNjb3BlKCkpOworKyAgZm9yIChhdXRvJiBrdiA6IHN0cmVh
bUxpc3QoKSkgeworICAgICBpZiAoc2V2ZXJpdHlfID49IGt2LnNlY29uZCkgeworICNpZiBkZWZp
bmVkKFdFQlJUQ19BTkRST0lEKQorICAgICAgIGt2LmZpcnN0LT5PbkxvZ01lc3NhZ2Uoc3RyLCBz
ZXZlcml0eV8sIHRhZ18pOworICNlbHNlCistICAgICAga3YuZmlyc3QtPk9uTG9nTWVzc2FnZShz
dHIsIHNldmVyaXR5Xyk7CisrICAgICAga3YuZmlyc3QtPk9uTG9nTWVzc2FnZShzdHIpOworICNl
bmRpZgorICAgICB9CisgICB9CitAQCAtMjU0LDcgKzI2MCw3IEBAIHZvaWQgTG9nTWVzc2FnZTo6
TG9nVGltZXN0YW1wcyhib29sIG9uKSB7CisgCisgdm9pZCBMb2dNZXNzYWdlOjpMb2dUb0RlYnVn
KExvZ2dpbmdTZXZlcml0eSBtaW5fc2V2KSB7CisgICBnX2RiZ19zZXYgPSBtaW5fc2V2OworLSAg
Q3JpdFNjb3BlIGNzKCZnX2xvZ19jcml0KTsKKysgIENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxT
Y29wZSgpKTsKKyAgIFVwZGF0ZU1pbkxvZ1NldmVyaXR5KCk7CisgfQorIAorQEAgLTI2Myw5ICsy
NjksOSBAQCB2b2lkIExvZ01lc3NhZ2U6OlNldExvZ1RvU3RkZXJyKGJvb2wgbG9nX3RvX3N0ZGVy
cikgeworIH0KKyAKKyBpbnQgTG9nTWVzc2FnZTo6R2V0TG9nVG9TdHJlYW0oTG9nU2luayogc3Ry
ZWFtKSB7CistICBDcml0U2NvcGUgY3MoJmdfbG9nX2NyaXQpOworKyAgQ3JpdFNjb3BlIGNzKCZs
b2dDcml0aWNhbFNjb3BlKCkpOworICAgTG9nZ2luZ1NldmVyaXR5IHNldiA9IExTX05PTkU7Cist
ICBmb3IgKGF1dG8mIGt2IDogc3RyZWFtc18pIHsKKysgIGZvciAoYXV0byYga3YgOiBzdHJlYW1M
aXN0KCkpIHsKKyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFtID09IGt2LmZpcnN0KSB7CisgICAg
ICAgc2V2ID0gc3RkOjptaW4oc2V2LCBrdi5zZWNvbmQpOworICAgICB9CitAQCAtMjc0LDE2ICsy
ODAsMTYgQEAgaW50IExvZ01lc3NhZ2U6OkdldExvZ1RvU3RyZWFtKExvZ1NpbmsqIHN0cmVhbSkg
eworIH0KKyAKKyB2b2lkIExvZ01lc3NhZ2U6OkFkZExvZ1RvU3RyZWFtKExvZ1NpbmsqIHN0cmVh
bSwgTG9nZ2luZ1NldmVyaXR5IG1pbl9zZXYpIHsKKy0gIENyaXRTY29wZSBjcygmZ19sb2dfY3Jp
dCk7CistICBzdHJlYW1zXy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoc3RyZWFtLCBtaW5fc2V2
KSk7CisrICBDcml0U2NvcGUgY3MoJmxvZ0NyaXRpY2FsU2NvcGUoKSk7CisrICBzdHJlYW1MaXN0
KCkucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKHN0cmVhbSwgbWluX3NldikpOworICAgVXBkYXRl
TWluTG9nU2V2ZXJpdHkoKTsKKyB9CisgCisgdm9pZCBMb2dNZXNzYWdlOjpSZW1vdmVMb2dUb1N0
cmVhbShMb2dTaW5rKiBzdHJlYW0pIHsKKy0gIENyaXRTY29wZSBjcygmZ19sb2dfY3JpdCk7Cist
ICBmb3IgKFN0cmVhbUxpc3Q6Oml0ZXJhdG9yIGl0ID0gc3RyZWFtc18uYmVnaW4oKTsgaXQgIT0g
c3RyZWFtc18uZW5kKCk7ICsraXQpIHsKKysgIENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29w
ZSgpKTsKKysgIGZvciAoU3RyZWFtTGlzdDo6aXRlcmF0b3IgaXQgPSBzdHJlYW1MaXN0KCkuYmVn
aW4oKTsgaXQgIT0gc3RyZWFtTGlzdCgpLmVuZCgpOyArK2l0KSB7CisgICAgIGlmIChzdHJlYW0g
PT0gaXQtPmZpcnN0KSB7CistICAgICAgc3RyZWFtc18uZXJhc2UoaXQpOworKyAgICAgIHN0cmVh
bUxpc3QoKS5lcmFzZShpdCk7CisgICAgICAgYnJlYWs7CisgICAgIH0KKyAgIH0KK0BAIC0zNDIs
OSArMzQ4LDkgQEAgdm9pZCBMb2dNZXNzYWdlOjpDb25maWd1cmVMb2dnaW5nKGNvbnN0IGNoYXIq
IHBhcmFtcykgeworIH0KKyAKKyB2b2lkIExvZ01lc3NhZ2U6OlVwZGF0ZU1pbkxvZ1NldmVyaXR5
KCkKKy0gICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChnX2xvZ19jcml0KSB7CisrICAg
IFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQobG9nQ3JpdGljYWxTY29wZSgpKSB7CisgICBM
b2dnaW5nU2V2ZXJpdHkgbWluX3NldiA9IGdfZGJnX3NldjsKKy0gIGZvciAoY29uc3QgYXV0byYg
a3YgOiBzdHJlYW1zXykgeworKyAgZm9yIChjb25zdCBhdXRvJiBrdiA6IHN0cmVhbUxpc3QoKSkg
eworICAgICBjb25zdCBMb2dnaW5nU2V2ZXJpdHkgc2V2ID0ga3Yuc2Vjb25kOworICAgICBtaW5f
c2V2ID0gc3RkOjptaW4obWluX3Nldiwgc2V2KTsKKyAgIH0KK0BAIC00NTgsMTEgKzQ2NCw4IEBA
IGJvb2wgTG9nTWVzc2FnZTo6SXNOb29wKExvZ2dpbmdTZXZlcml0eSBzZXZlcml0eSkgeworICAg
Ly8gVE9ETyh0b21taSk6IFdlJ3JlIGdyYWJiaW5nIHRoaXMgbG9jayBmb3IgZXZlcnkgTG9nTWVz
c2FnZSBpbnN0YW5jZSB0aGF0CisgICAvLyBpcyBnb2luZyB0byBiZSBsb2dnZWQuIFRoaXMgaW50
cm9kdWNlcyB1bm5lY2Vzc2FyeSBzeW5jaHJvbml6YXRpb24gZm9yCisgICAvLyBhIGZlYXR1cmUg
dGhhdCdzIG1vc3RseSB1c2VkIGZvciB0ZXN0aW5nLgorLSAgQ3JpdFNjb3BlIGNzKCZnX2xvZ19j
cml0KTsKKy0gIGlmIChzdHJlYW1zXy5zaXplKCkgPiAwKQorLSAgICByZXR1cm4gZmFsc2U7Cist
CistICByZXR1cm4gdHJ1ZTsKKysgIENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29wZSgpKTsK
KysgIHJldHVybiBzdHJlYW1MaXN0KCkuc2l6ZSgpID09IDA7CisgfQorIAorIHZvaWQgTG9nTWVz
c2FnZTo6RmluaXNoUHJpbnRTdHJlYW0oKSB7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV2ZXJfZGVzdHJveWVkLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZlcl9k
ZXN0cm95ZWQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5mY2M2
MmUzNTUzNAorLS0tIC9kZXYvbnVsbAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV2ZXJfZGVzdHJveWVkLmgKK0BAIC0wLDAgKzEsNjkg
QEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0Ogor
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisrICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisrICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKysgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisrICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisrICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqLworKworKyNwcmFnbWEgb25jZQor
KworKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKysjaW5jbHVkZSA8dXRpbGl0eT4KKysKKytuYW1l
c3BhY2UgcnRjIHsKKysKKyt0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBOZXZlckRlc3Ryb3ll
ZCB7CisrcHVibGljOgorKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBOZXZlckRlc3Ry
b3llZChBcmdzJiYuLi4gYXJncykKKysgICAgeworKyAgICAgICAgbmV3IChzdG9yYWdlUG9pbnRl
cigpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisrICAgIH0KKysKKysgICAgTmV2
ZXJEZXN0cm95ZWQoTmV2ZXJEZXN0cm95ZWQmJiBvdGhlcikKKysgICAgeworKyAgICAgICAgbmV3
IChzdG9yYWdlUG9pbnRlcigpKSBUKHN0ZDo6bW92ZSgqb3RoZXIuc3RvcmFnZVBvaW50ZXIoKSkp
OworKyAgICB9CisrCisrICAgIG9wZXJhdG9yIFQmKCkgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVy
KCk7IH0KKysgICAgVCYgZ2V0KCkgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVyKCk7IH0KKysKKysg
ICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsg
fQorKyAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsg
fQorKworK3ByaXZhdGU6CisrICAgIE5ldmVyRGVzdHJveWVkKGNvbnN0IE5ldmVyRGVzdHJveWVk
JikgPSBkZWxldGU7CisrICAgIE5ldmVyRGVzdHJveWVkJiBvcGVyYXRvcj0oY29uc3QgTmV2ZXJE
ZXN0cm95ZWQmKSA9IGRlbGV0ZTsKKysKKysgICAgdXNpbmcgUG9pbnRlclR5cGUgPSB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSo7CisrCisrICAgIFBvaW50ZXJUeXBlIHN0b3Jh
Z2VQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxQb2ludGVyVHlwZT4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBUKj4oJm1fc3RvcmFnZSkpOyB9CisrCisrICAgIC8vIEZJWE1FOiBJ
bnZlc3RpZ2F0ZSB3aGV0aGVyIHdlIHNob3VsZCBhbGxvY2F0ZSBhIGh1bmsgb2YgdmlydHVhbCBt
ZW1vcnkKKysgICAgLy8gYW5kIGhhbmQgb3V0IGNodW5rcyBvZiBpdCB0byBOZXZlckRlc3Ryb3ll
ZCBpbnN0ZWFkLCB0byByZWR1Y2UgZnJhZ21lbnRhdGlvbi4KKysgICAgdHlwZW5hbWUgc3RkOjph
bGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+Ojp0
eXBlIG1fc3RvcmFnZTsKKyt9OworKworK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBOZXZl
ckRlc3Ryb3llZDxUPiBtYWtlTmV2ZXJEZXN0cm95ZWQoVCYmIGFyZ3VtZW50KQorK3sKKysgICAg
cmV0dXJuIE5ldmVyRGVzdHJveWVkPFQ+KHN0ZDo6bW92ZShhcmd1bWVudCkpOworK30KKysKKyt9
IC8vIG5hbWVzcGFjZSBydGMKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmlj
cy9zYWZlX2NvbnZlcnNpb25zLmgKK2luZGV4IDU4ZWZjYWE3NDZhLi40OGMyMTJlNGQ0OSAxMDA2
NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9u
cy5oCitAQCAtNjMsMTEgKzYzLDExIEBAIGlubGluZSBEc3Qgc2F0dXJhdGVkX2Nhc3QoU3JjIHZh
bHVlKSB7CisgCisgICAgIC8vIFNob3VsZCBmYWlsIG9ubHkgb24gYXR0ZW1wdGluZyB0byBhc3Np
Z24gTmFOIHRvIGEgc2F0dXJhdGVkIGludGVnZXIuCisgICAgIGNhc2UgaW50ZXJuYWw6OlRZUEVf
SU5WQUxJRDoKKy0gICAgICBGQVRBTCgpOworKyAgICAgIFJUQ19GQVRBTCgpOworICAgICAgIHJl
dHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPERzdD46Om1heCgpOworICAgfQorIAorLSAgRkFUQUwo
KTsKKysgIFJUQ19GQVRBTCgpOworICAgcmV0dXJuIHN0YXRpY19jYXN0PERzdD4odmFsdWUpOwor
IH0KKyAKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MKK2lu
ZGV4IDRlNjFiODZmM2JhLi40ZTMyNWRjZWMwMSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5j
YworKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjCitAQCAtMjQ0LDExICsyNDQsMTEgQEAgc3RkOjp1bmlx
dWVfcHRyPFNTTENlcnRpZmljYXRlPiBPcGVuU1NMQ2VydGlmaWNhdGU6OkNsb25lKCkgY29uc3Qg
eworIHN0ZDo6c3RyaW5nIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9QRU1TdHJpbmcoKSBjb25zdCB7
CisgICBCSU8qIGJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOworICAgaWYgKCFiaW8pIHsKKy0g
ICAgRkFUQUwoKSA8PCAiVW5yZWFjaGFibGUgY29kZS4iOworKyAgICBSVENfRkFUQUwoKSA8PCAi
VW5yZWFjaGFibGUgY29kZS4iOworICAgfQorICAgaWYgKCFQRU1fd3JpdGVfYmlvX1g1MDkoYmlv
LCB4NTA5XykpIHsKKyAgICAgQklPX2ZyZWUoYmlvKTsKKy0gICAgRkFUQUwoKSA8PCAiVW5yZWFj
aGFibGUgY29kZS4iOworKyAgICBSVENfRkFUQUwoKSA8PCAiVW5yZWFjaGFibGUgY29kZS4iOwor
ICAgfQorICAgQklPX3dyaXRlKGJpbywgIlwwIiwgMSk7CisgICBjaGFyKiBidWZmZXI7CitAQCAt
MjY0LDExICsyNjQsMTEgQEAgdm9pZCBPcGVuU1NMQ2VydGlmaWNhdGU6OlRvREVSKEJ1ZmZlciog
ZGVyX2J1ZmZlcikgY29uc3QgeworICAgLy8gQ2FsY3VsYXRlcyB0aGUgREVSIHJlcHJlc2VudGF0
aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZSwgZnJvbSBzY3JhdGNoLgorICAgQklPKiBiaW8gPSBCSU9f
bmV3KEJJT19zX21lbSgpKTsKKyAgIGlmICghYmlvKSB7CistICAgIEZBVEFMKCkgPDwgIlVucmVh
Y2hhYmxlIGNvZGUuIjsKKysgICAgUlRDX0ZBVEFMKCkgPDwgIlVucmVhY2hhYmxlIGNvZGUuIjsK
KyAgIH0KKyAgIGlmICghaTJkX1g1MDlfYmlvKGJpbywgeDUwOV8pKSB7CisgICAgIEJJT19mcmVl
KGJpbyk7CistICAgIEZBVEFMKCkgPDwgIlVucmVhY2hhYmxlIGNvZGUuIjsKKysgICAgUlRDX0ZB
VEFMKCkgPDwgIlVucmVhY2hhYmxlIGNvZGUuIjsKKyAgIH0KKyAgIGNoYXIqIGRhdGEgPSBudWxs
cHRyOworICAgc2l6ZV90IGxlbmd0aCA9IEJJT19nZXRfbWVtX2RhdGEoYmlvLCAmZGF0YSk7Citk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9waHlzaWNhbHNvY2tldHNlcnZlci5jYworaW5kZXgg
NGFkMjg1N2MwMGMuLjc0NDhhN2UwNDI3IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXIuY2MK
KysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3BoeXNpY2Fsc29ja2V0c2VydmVyLmNjCitAQCAtNTk2LDcgKzU5Niw3IEBAIGJvb2wgU29ja2V0
RGlzcGF0Y2hlcjo6SW5pdGlhbGl6ZSgpIHsKKyAjZWxpZiBkZWZpbmVkKFdFQlJUQ19QT1NJWCkK
KyAgIGZjbnRsKHNfLCBGX1NFVEZMLCBmY250bChzXywgRl9HRVRGTCwgMCkgfCBPX05PTkJMT0NL
KTsKKyAjZW5kaWYKKy0jaWYgZGVmaW5lZChXRUJSVENfSU9TKQorKyNpZiBkZWZpbmVkKFdFQlJU
Q19JT1MpIHx8IChkZWZpbmVkKFdFQlJUQ19NQUMpICYmIGRlZmluZWQoV0VCUlRDX1dFQktJVF9C
VUlMRCkpCisgICAvLyBpT1MgbWF5IGtpbGwgc29ja2V0cyB3aGVuIHRoZSBhcHAgaXMgbW92ZWQg
dG8gdGhlIGJhY2tncm91bmQKKyAgIC8vIChzcGVjaWZpY2FsbHksIGlmIHRoZSBhcHAgZG9lc24n
dCB1c2UgdGhlICJ2b2lwIiBVSUJhY2tncm91bmRNb2RlKS4gV2hlbgorICAgLy8gd2UgYXR0ZW1w
dCB0byB3cml0ZSB0byBzdWNoIGEgc29ja2V0LCBTSUdQSVBFIHdpbGwgYmUgcmFpc2VkLCB3aGlj
aCBieQorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3N0cmluZ2l6ZV9tYWNyb3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2l6ZV9tYWNyb3MuaAoraW5kZXggYWVl
OGQxNDU1MWQuLjM4YzZmMTgzNmJkIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oCisrKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdp
emVfbWFjcm9zLmgKK0BAIC04LDcgKzgsNyBAQAorICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAgKi8KKyAKKy0vLyBNb2Rp
ZmllZCBmcm9tIHRoZSBDaHJvbWl1bSBvcmlnaW5hbDoKKysvLyBNb2RpZmllZCBmcm9tIHRoZSBD
aHhzcm9taXVtIG9yaWdpbmFsOgorIC8vIHNyYy9iYXNlL3N0cmluZ3Mvc3RyaW5naXplX21hY3Jv
cy5oCisgCisgLy8gVGhpcyBmaWxlIGRlZmluZXMgcHJlcHJvY2Vzc29yIG1hY3JvcyBmb3Igc3Ry
aW5naXppbmcgcHJlcHJvY2Vzc29yCitAQCAtMzMsNiArMzMsNiBAQAorIC8vIFRoZW46CisgLy8g
ICBTVFJJTkdJWkUoQSkgcHJvZHVjZXMgIkZPTyIKKyAvLyAgIFNUUklOR0laRShCKHkpKSBwcm9k
dWNlcyAibXlvYmotPkZ1bmN0aW9uQ2FsbCh5KSIKKy0jZGVmaW5lIFNUUklOR0laRSh4KSBTVFJJ
TkdJWkVfTk9fRVhQQU5TSU9OKHgpCisrI2RlZmluZSBSVENfU1RSSU5HSVpFKHgpIFNUUklOR0la
RV9OT19FWFBBTlNJT04oeCkKKyAKKyAjZW5kaWYgIC8vIFJUQ19CQVNFX1NUUklOR0laRV9NQUNS
T1NfSF8KK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYwor
aW5kZXggNzk2OTQxMTJjODEuLmJmY2UwZjU0NTQxIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZl
ci5jYworKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYworQEAgLTEwMjYsOSArMTAyNiw5IEBAIHZvaWQg
VmlydHVhbFNvY2tldFNlcnZlcjo6VXBkYXRlRGVsYXlEaXN0cmlidXRpb24oKSB7CisgICB9Cisg
fQorIAorLXN0YXRpYyBkb3VibGUgUEkgPSA0ICogYXRhbigxLjApOworIAorIHN0YXRpYyBkb3Vi
bGUgTm9ybWFsKGRvdWJsZSB4LCBkb3VibGUgbWVhbiwgZG91YmxlIHN0ZGRldikgeworKyAgc3Rh
dGljIGRvdWJsZSBQSSA9IDQgKiBhdGFuKDEuMCk7CisgICBkb3VibGUgYSA9ICh4IC0gbWVhbikg
KiAoeCAtIG1lYW4pIC8gKDIgKiBzdGRkZXYgKiBzdGRkZXYpOworICAgcmV0dXJuIGV4cCgtYSkg
LyAoc3RkZGV2ICogc3FydCgyICogUEkpKTsKKyB9CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9FbmNvZGVyVXRpbGl0aWVz
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L0VuY29kZXJVdGlsaXRpZXMuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAw
MDAwLi41YjliZGZkYTExNAorLS0tIC9kZXYvbnVsbAorKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9FbmNvZGVyVXRpbGl0aWVzLmgKK0BA
IC0wLDAgKzEsNTAgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysg
KiBhcmUgbWV0OgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisr
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICoKKysgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisrICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisrICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKysgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisrICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisrICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqLworKworKyNw
cmFnbWEgb25jZQorKworKyNpbmNsdWRlICJWaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5oIgorKwor
KyNpZiBFTkFCTEVfVkNQX0VOQ09ERVIKKysKKysjZGVmaW5lIENvbXByZXNzaW9uU2Vzc2lvblJl
ZiBWQ1BDb21wcmVzc2lvblNlc3Npb25SZWYKKysjZGVmaW5lIENvbXByZXNzaW9uU2Vzc2lvblNl
dFByb3BlcnR5IHdlYnJ0Yzo6VkNQQ29tcHJlc3Npb25TZXNzaW9uU2V0UHJvcGVydHkKKysjZGVm
aW5lIENvbXByZXNzaW9uU2Vzc2lvbkdldFBpeGVsQnVmZmVyUG9vbCB3ZWJydGM6OlZDUENvbXBy
ZXNzaW9uU2Vzc2lvbkdldFBpeGVsQnVmZmVyUG9vbAorKyNkZWZpbmUgQ29tcHJlc3Npb25TZXNz
aW9uRW5jb2RlRnJhbWUgd2VicnRjOjpWQ1BDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZQor
KyNkZWZpbmUgQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIHdlYnJ0Yzo6VkNQQ29tcHJlc3Npb25T
ZXNzaW9uQ3JlYXRlCisrI2RlZmluZSBrQ29kZWNUeXBlSDI2NCBrVkNQQ29kZWNUeXBlNENDX0gy
NjQKKysjZGVmaW5lIENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUgd2VicnRjOjpWQ1BDb21w
cmVzc2lvblNlc3Npb25JbnZhbGlkYXRlCisrCisrI2Vsc2UKKysKKysjZGVmaW5lIENvbXByZXNz
aW9uU2Vzc2lvblJlZiBWVENvbXByZXNzaW9uU2Vzc2lvblJlZgorKyNkZWZpbmUgQ29tcHJlc3Np
b25TZXNzaW9uU2V0UHJvcGVydHkgVlRTZXNzaW9uU2V0UHJvcGVydHkKKysjZGVmaW5lIENvbXBy
ZXNzaW9uU2Vzc2lvbkdldFBpeGVsQnVmZmVyUG9vbCBWVENvbXByZXNzaW9uU2Vzc2lvbkdldFBp
eGVsQnVmZmVyUG9vbAorKyNkZWZpbmUgQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUgVlRD
b21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZQorKyNkZWZpbmUgQ29tcHJlc3Npb25TZXNzaW9u
Q3JlYXRlIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlCisrI2RlZmluZSBrQ29kZWNUeXBlSDI2
NCBrQ01WaWRlb0NvZGVjVHlwZV9IMjY0CisrI2RlZmluZSBDb21wcmVzc2lvblNlc3Npb25JbnZh
bGlkYXRlIFZUQ29tcHJlc3Npb25TZXNzaW9uSW52YWxpZGF0ZQorKworKyNlbmRpZgorZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9WaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5jcHAK
K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uMTAxZTg3YzY2NzcKKy0t
LSAvZGV2L251bGwKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9XZWJLaXQvVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuY3BwCitAQCAtMCwwICsxLDc4
IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoK
KysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKysgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisrICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKysgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKysgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKi8KKysKKysjaW5jbHVkZSAiVmlk
ZW9Qcm9jZXNzaW5nU29mdExpbmsuaCIKKysKKysjaWYgRU5BQkxFX1ZDUF9FTkNPREVSCisrCisr
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKysjaW1wb3J0IDxkbGZjbi5oPgorKyNpbXBv
cnQgPG9iamMvcnVudGltZS5oPgorKworKy8vIE1hY3JvcyBjb3BpZWQgZnJvbSA8d3RmL2NvY29h
L1NvZnRMaW5raW5nLmg+CisrI2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9S
X1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBcCisrICAgIG5hbWVzcGFjZSBm
dW5jdGlvbk5hbWVzcGFjZSB7IFwKKysgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wg
aXNPcHRpb25hbCkgXAorKyAgICB7IFwKKysgICAgICAgIHN0YXRpYyB2b2lkKiBmcmFtZXdvcmtM
aWJyYXJ5OyBcCisrICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7IFwKKysgICAg
ICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57IFwKKysgICAgICAgICAgICBmcmFtZXdvcmtMaWJy
YXJ5ID0gZGxvcGVuKCIvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvIiAjZnJhbWV3
b3JrICIuZnJhbWV3b3JrLyIgI2ZyYW1ld29yaywgUlRMRF9OT1cpOyBcCisrICAgICAgICAgICAg
aWYgKCFpc09wdGlvbmFsICYmICFmcmFtZXdvcmtMaWJyYXJ5KSBcCisrICAgICAgICAgICAgICAg
IFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW5ub3Qgb3BlbiBmcmFtZXdvcms6ICIgPDwgZGxlcnJv
cigpOyBcCisrICAgICAgICB9KTsgXAorKyAgICAgICAgcmV0dXJuIGZyYW1ld29ya0xpYnJhcnk7
IFwKKysgICAgfSBcCisrICAgIH0KKysKKysjZGVmaW5lIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0
VHlwZSwgcGFyYW1ldGVyRGVjbGFyYXRpb25zLCBwYXJhbWV0ZXJOYW1lcykgXAorKyAgICBleHRl
cm4gIkMiIHsgXAorKyAgICByZXN1bHRUeXBlIGZ1bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJh
dGlvbnM7IFwKKysgICAgfSBcCisrICAgIG5hbWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwK
KysgICAgc3RhdGljIHJlc3VsdFR5cGUgaW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFy
YW1ldGVyRGVjbGFyYXRpb25zOyBcCisrICAgIHJlc3VsdFR5cGUgKCpzb2Z0TGluayMjZnJhbWV3
b3JrIyNmdW5jdGlvbk5hbWUpIHBhcmFtZXRlckRlY2xhcmF0aW9ucyA9IGluaXQjI2ZyYW1ld29y
ayMjZnVuY3Rpb25OYW1lOyBcCisrICAgIHN0YXRpYyByZXN1bHRUeXBlIGluaXQjI2ZyYW1ld29y
ayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9ucyBcCisrICAgIHsgXAorKyAgICAg
ICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOyBcCisrICAgICAgICBkaXNwYXRjaF9vbmNl
KCZvbmNlLCBeeyBcCisrICAgICAgICAgICAgc29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25O
YW1lID0gKHJlc3VsdFR5cGUgKCopIHBhcmFtZXRlckRlY2xhcmF0aW9ucykgZGxzeW0oZnJhbWV3
b3JrIyNMaWJyYXJ5KCksICNmdW5jdGlvbk5hbWUpOyBcCisrICAgICAgICAgICAgaWYgKCFzb2Z0
TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIFwKKysgICAgICAgICAgICAgICAgUlRDX0xP
RyhMU19FUlJPUikgPDwgIkNhbm5vdCBmaW5kIGZ1bmN0aW9uICMjZnVuY3Rpb25OYW1lOiAiIDw8
IGRsZXJyb3IoKTsgXAorKyAgICAgICAgfSk7IFwKKysgICAgICAgIHJldHVybiBzb2Z0TGluayMj
ZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyTmFtZXM7IFwKKysgICAgfSBcCisrfQor
KworK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKHdlYnJ0YywgVmlkZW9Q
cm9jZXNzaW5nKQorKworK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKHdlYnJ0YywgVmlk
ZW9Qcm9jZXNzaW5nLCBWQ1BDb21wcmVzc2lvblNlc3Npb25TZXRQcm9wZXJ0eSwgT1NTdGF0dXMs
IChWQ1BDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBDRlR5
cGVSZWYgdmFsdWUpLCAoc2Vzc2lvbiwga2V5LCB2YWx1ZSkpCisrU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9TT1VSQ0Uod2VicnRjLCBWaWRlb1Byb2Nlc3NpbmcsIFZDUENvbXByZXNzaW9uU2Vzc2lv
bkdldFBpeGVsQnVmZmVyUG9vbCwgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYsIChWQ1BDb21wcmVzc2lv
blNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKytTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRSh3ZWJydGMsIFZpZGVvUHJvY2Vzc2luZywgVkNQQ29tcHJlc3Npb25TZXNzaW9uRW5j
b2RlRnJhbWUsIE9TU3RhdHVzLCAoVkNQQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENW
SW1hZ2VCdWZmZXJSZWYgYnVmZmVyLCBDTVRpbWUgdGltZXN0YW1wLCBDTVRpbWUgdGltZSwgQ0ZE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIHZvaWQqIGRhdGEsIFZURW5jb2RlSW5mb0ZsYWdzKiBm
bGFncyksIChzZXNzaW9uLCBidWZmZXIsIHRpbWVzdGFtcCwgdGltZSwgZGljdGlvbmFyeSwgZGF0
YSwgZmxhZ3MpKQorK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKHdlYnJ0YywgVmlkZW9Q
cm9jZXNzaW5nLCBWQ1BDb21wcmVzc2lvblNlc3Npb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yMSwgaW50MzJfdCB2YWx1ZTEgLCBpbnQzMl90IHZhbHVlMiwgQ01W
aWRlb0NvZGVjVHlwZSB0eXBlLCBDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeTEsIENGRGljdGlv
bmFyeVJlZiBkaWN0aW9uYXJ5MiwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yMywgVlRDb21wcmVz
c2lvbk91dHB1dENhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBkYXRhLCBWQ1BDb21wcmVzc2lvblNl
c3Npb25SZWYqIHNlc3Npb24pLCAoYWxsb2NhdG9yMSwgdmFsdWUxLCB2YWx1ZTIsIHR5cGUsIGRp
Y3Rpb25hcnkxLCBkaWN0aW9uYXJ5MiwgYWxsb2NhdG9yMywgY2FsbGJhY2ssIGRhdGEsIHNlc3Np
b24pKQorK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKHdlYnJ0YywgVmlkZW9Qcm9jZXNz
aW5nLCBWQ1BDb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRlLCB2b2lkLCAoVkNQQ29tcHJlc3Np
b25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0Uod2VicnRjLCBWaWRlb1Byb2Nlc3NpbmcsIFZQTW9kdWxlSW5pdGlhbGl6ZSwgdm9p
ZCwgKCksICgpKQorKworKyNlbmRpZiAvLyBFTkFCTEVfVkNQX0VOQ09ERVIKK2RpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1Zp
ZGVvUHJvY2Vzc2luZ1NvZnRMaW5rLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1ZpZGVvUHJvY2Vzc2luZ1NvZnRMaW5rLmgKK25ldyBmaWxl
IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uY2Y4NjZkOGE4ZGIKKy0tLSAvZGV2L251
bGwKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuaAorQEAgLTAsMCArMSwxNDAgQEAKKysvKgor
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisr
ICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisrICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisrICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKysgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisrICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisrICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqLworKworKyNwcmFnbWEgb25jZQorKworKyNpZmRl
ZiBfX0FQUExFX18KKysjaW5jbHVkZSA8QXZhaWxhYmlsaXR5Lmg+CisrI2luY2x1ZGUgPEF2YWls
YWJpbGl0eU1hY3Jvcy5oPgorKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKysKKysv
LyBNYWNybyB0YWtlbiBmcm9tIFdURi93dGYvUGxhdGZvcm0uaAorKyNpZiBkZWZpbmVkIF9faGFz
X2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5kYXRpb24vQ0ZQcml2Lmg+KQorKwor
KyNpZiAoZGVmaW5lZChUQVJHRVRfSVBIT05FX1NJTVVMQVRPUikgICYmIFRBUkdFVF9JUEhPTkVf
U0lNVUxBVE9SKQorKyNkZWZpbmUgRU5BQkxFX1ZDUF9FTkNPREVSIDAKKysjZWxpZiAoZGVmaW5l
ZChUQVJHRVRfT1NfSVBIT05FKSAgJiYgVEFSR0VUX09TX0lQSE9ORSkKKysjZGVmaW5lIEVOQUJM
RV9WQ1BfRU5DT0RFUiAxCisrI2VsaWYgKGRlZmluZWQoVEFSR0VUX09TX01BQykgJiYgVEFSR0VU
X09TX01BQykKKysjZGVmaW5lIEVOQUJMRV9WQ1BfRU5DT0RFUiAoX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDAgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
ID49IDEwMTMwNCkKKysjZW5kaWYKKysKKysjZW5kaWYKKysKKysjaWYgIWRlZmluZWQoRU5BQkxF
X1ZDUF9FTkNPREVSKQorKyNkZWZpbmUgRU5BQkxFX1ZDUF9FTkNPREVSIDAKKysjZW5kaWYKKysK
KysjaWYgIWRlZmluZWQoQUxXQVlTX0lOTElORSkKKysjZGVmaW5lIEFMV0FZU19JTkxJTkUgaW5s
aW5lCisrI2VuZGlmCisrCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrI2RlZmluZSBXVEZfRVhURVJO
X0NfQkVHSU4gZXh0ZXJuICJDIiB7CisrI2RlZmluZSBXVEZfRVhURVJOX0NfRU5EIH0KKysjZWxz
ZQorKyNkZWZpbmUgV1RGX0VYVEVSTl9DX0JFR0lOCisrI2RlZmluZSBXVEZfRVhURVJOX0NfRU5E
CisrI2VuZGlmCisrCisrLy8gTWFjcm9zIGNvcGllZCBmcm9tIDx3dGYvY29jb2EvU29mdExpbmtp
bmcuaD4KKysjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihmdW5jdGlvbk5h
bWVzcGFjZSwgZnJhbWV3b3JrKSBcCisrICAgIG5hbWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7
IFwKKysgICAgZXh0ZXJuIHZvaWQqIGZyYW1ld29yayMjTGlicmFyeShib29sIGlzT3B0aW9uYWwg
PSBmYWxzZSk7IFwKKysgICAgYm9vbCBpcyMjZnJhbWV3b3JrIyNGcmFtZXdvcmtBdmFpbGFibGUo
KTsgXAorKyAgICBpbmxpbmUgYm9vbCBpcyMjZnJhbWV3b3JrIyNGcmFtZXdvcmtBdmFpbGFibGUo
KSB7IFwKKysgICAgICAgIHJldHVybiBmcmFtZXdvcmsjI0xpYnJhcnkodHJ1ZSkgIT0gbnVsbHB0
cjsgXAorKyAgICB9IFwKKysgICAgfQorKworKyNkZWZpbmUgU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1
bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzKSBcCisrICAgIFdU
Rl9FWFRFUk5fQ19CRUdJTiBcCisrICAgIHJlc3VsdFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFtZXRl
ckRlY2xhcmF0aW9uczsgXAorKyAgICBXVEZfRVhURVJOX0NfRU5EIFwKKysgICAgbmFtZXNwYWNl
IGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAorKyAgICBleHRlcm4gcmVzdWx0VHlwZSAoKnNvZnRMaW5r
IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCisrICAg
IGlubGluZSByZXN1bHRUeXBlIHNvZnRMaW5rXyMjZnJhbWV3b3JrIyNfIyNmdW5jdGlvbk5hbWUg
cGFyYW1ldGVyRGVjbGFyYXRpb25zIFwKKysgICAgeyBcCisrICAgICAgICByZXR1cm4gc29mdExp
bmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBcCisrICAgIH0gXAor
KyAgICB9IFwKKysgICAgQUxXQVlTX0lOTElORSByZXN1bHRUeXBlIGZ1bmN0aW9uTmFtZSBwYXJh
bWV0ZXJEZWNsYXJhdGlvbnMgXAorKyAgICB7XAorKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFt
ZXNwYWNlOjpzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyTmFtZXM7
IFwKKysgICAgfQorKworKyNkZWZpbmUgU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChmcmFt
ZXdvcmspIFwKKysgICAgc3RhdGljIHZvaWQqIGZyYW1ld29yayMjTGlicmFyeSgpIFwKKysgICAg
eyBcCisrICAgICAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3JrTGlicmFyeSA9IGRsb3BlbigiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvIiAjZnJhbWV3b3JrICIuZnJhbWV3b3JrLyIgI2ZyYW1l
d29yaywgUlRMRF9OT1cpOyBcCisrICAgICAgICByZXR1cm4gZnJhbWV3b3JrTGlicmFyeTsgXAor
KyAgICB9CisrCisrI2RlZmluZSBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChmcmFtZXdvcmss
IG5hbWUsIHR5cGUpIFwKKysgICAgc3RhdGljIHR5cGUgaW5pdCMjbmFtZSgpOyBcCisrICAgIHN0
YXRpYyB0eXBlICgqZ2V0IyNuYW1lKSgpID0gaW5pdCMjbmFtZTsgXAorKyAgICBzdGF0aWMgdHlw
ZSBwb2ludGVyIyNuYW1lOyBcCisrICAgIFwKKysgICAgc3RhdGljIHR5cGUgbmFtZSMjRnVuY3Rp
b24oKSBcCisrICAgIHsgXAorKyAgICAgICAgcmV0dXJuIHBvaW50ZXIjI25hbWU7IFwKKysgICAg
fSBcCisrICAgIFwKKysgICAgc3RhdGljIHR5cGUgaW5pdCMjbmFtZSgpIFwKKysgICAgeyBcCisr
ICAgICAgICB2b2lkKiogcG9pbnRlciA9IHN0YXRpY19jYXN0PHZvaWQqKj4oZGxzeW0oZnJhbWV3
b3JrIyNMaWJyYXJ5KCksICNuYW1lKSk7IFwKKysgICAgICAgIGlmIChwb2ludGVyKSBcCisrICAg
ICAgICAgICAgcG9pbnRlciMjbmFtZSA9IChfX2JyaWRnZSB0eXBlKSgqcG9pbnRlcik7IFwKKysg
ICAgICAgIGdldCMjbmFtZSA9IG5hbWUjI0Z1bmN0aW9uOyBcCisrICAgICAgICByZXR1cm4gcG9p
bnRlciMjbmFtZTsgXAorKyAgICB9CisrCisrI2lmIEVOQUJMRV9WQ1BfRU5DT0RFUgorKworKyNp
bmNsdWRlIDxWaWRlb1Byb2Nlc3NpbmcvVmlkZW9Qcm9jZXNzaW5nLmg+CisrCisrU09GVF9MSU5L
X0ZSQU1FV09SS19GT1JfSEVBREVSKHdlYnJ0YywgVmlkZW9Qcm9jZXNzaW5nKQorKworK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKHdlYnJ0YywgVmlkZW9Qcm9jZXNzaW5nLCBWQ1BDb21w
cmVzc2lvblNlc3Npb25TZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChWQ1BDb21wcmVzc2lvblNlc3Np
b25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBDRlR5cGVSZWYgdmFsdWUpLCAoc2Vzc2lv
biwga2V5LCB2YWx1ZSkpCisrI2RlZmluZSBWQ1BDb21wcmVzc2lvblNlc3Npb25TZXRQcm9wZXJ0
eSBzb2Z0TGlua19WaWRlb1Byb2Nlc3NpbmdfVkNQQ29tcHJlc3Npb25TZXNzaW9uU2V0UHJvcGVy
dHkKKysKKytTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUih3ZWJydGMsIFZpZGVvUHJvY2Vz
c2luZywgVkNQQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sLCBDVlBpeGVsQnVm
ZmVyUG9vbFJlZiwgKFZDUENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uKSwgKHNlc3Npb24p
KQorKyNkZWZpbmUgVkNQQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sIHNvZnRM
aW5rX1ZpZGVvUHJvY2Vzc2luZ19WQ1BDb21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBv
b2wKKysKKytTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUih3ZWJydGMsIFZpZGVvUHJvY2Vz
c2luZywgVkNQQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUsIE9TU3RhdHVzLCAoVkNQQ29t
cHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENWSW1hZ2VCdWZmZXJSZWYgYnVmZmVyLCBDTVRp
bWUgdGltZXN0YW1wLCBDTVRpbWUgdGltZSwgQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIHZv
aWQgKiBkYXRhLCBWVEVuY29kZUluZm9GbGFncyAqIGZsYWdzKSwgKHNlc3Npb24sIGJ1ZmZlciwg
dGltZXN0YW1wLCB0aW1lLCBkaWN0aW9uYXJ5LCBkYXRhLCBmbGFncykpCisrI2RlZmluZSBWQ1BD
b21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBzb2Z0TGlua19WaWRlb1Byb2Nlc3NpbmdfVkNQ
Q29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUKKysKKytTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUih3ZWJydGMsIFZpZGVvUHJvY2Vzc2luZywgVkNQQ29tcHJlc3Npb25TZXNzaW9uQ3Jl
YXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvcjEsIGludDMyX3QgdmFsdWUx
ICwgaW50MzJfdCB2YWx1ZTIsIENNVmlkZW9Db2RlY1R5cGUgdHlwZSwgQ0ZEaWN0aW9uYXJ5UmVm
IGRpY3Rpb25hcnkxLCBDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeTIsIENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvcjMsIFZUQ29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAq
IGRhdGEsIFZDUENvbXByZXNzaW9uU2Vzc2lvblJlZiAqc2Vzc2lvbiksIChhbGxvY2F0b3IxLCB2
YWx1ZTEsIHZhbHVlMiwgdHlwZSwgZGljdGlvbmFyeTEsIGRpY3Rpb25hcnkyLCBhbGxvY2F0b3Iz
LCBjYWxsYmFjaywgZGF0YSwgc2Vzc2lvbikpCisrI2RlZmluZSBWQ1BDb21wcmVzc2lvblNlc3Np
b25DcmVhdGUgc29mdExpbmtfVmlkZW9Qcm9jZXNzaW5nX1ZDUENvbXByZXNzaW9uU2Vzc2lvbkNy
ZWF0ZQorKworK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKHdlYnJ0YywgVmlkZW9Qcm9j
ZXNzaW5nLCBWQ1BDb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRlLCB2b2lkLCAoVkNQQ29tcHJl
c3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCisrI2RlZmluZSBWQ1BDb21wcmVz
c2lvblNlc3Npb25JbnZhbGlkYXRlIHNvZnRMaW5rX1ZpZGVvUHJvY2Vzc2luZ19WQ1BDb21wcmVz
c2lvblNlc3Npb25JbnZhbGlkYXRlCisrCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
d2VicnRjLCBWaWRlb1Byb2Nlc3NpbmcsIFZQTW9kdWxlSW5pdGlhbGl6ZSwgdm9pZCwgKCksICgp
KQorKyNkZWZpbmUgVlBNb2R1bGVJbml0aWFsaXplIHNvZnRMaW5rX1ZpZGVvUHJvY2Vzc2luZ19W
UE1vZHVsZUluaXRpYWxpemUKKysKKysjZW5kaWYgLy8gRU5BQkxFX1ZDUF9FTkNPREVSCisrCisr
I2VuZGlmIC8vIF9fQVBQTEVfXworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxp
dGllcy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLmVmMTQ1NmVk
ZGQzCistLS0gL2Rldi9udWxsCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCitAQCAtMCwwICsxLDU0IEBA
CisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKysgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisrICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKysgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKysgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKi8KKysKKysjcHJhZ21hIG9uY2UKKysK
KysjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oIgorKyNpbmNsdWRlICJy
dGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgorKyNpbmNsdWRlICJ3ZWJydGMvbWVkaWEvZW5naW5l
L3dlYnJ0Y3ZpZGVvZGVjb2RlcmZhY3RvcnkuaCIKKysjaW5jbHVkZSAid2VicnRjL21lZGlhL2Vu
Z2luZS93ZWJydGN2aWRlb2VuY29kZXJmYWN0b3J5LmgiCisrCisrdHlwZWRlZiBzdHJ1Y3QgX19D
VkJ1ZmZlciogQ1ZQaXhlbEJ1ZmZlclJlZjsKKysKKytuYW1lc3BhY2Ugd2VicnRjIHsKKysKKytj
bGFzcyBWaWRlb0RlY29kZXJGYWN0b3J5OworK2NsYXNzIFZpZGVvRW5jb2RlckZhY3Rvcnk7Cisr
Y2xhc3MgVmlkZW9GcmFtZTsKKysKKytlbnVtIGNsYXNzIFdlYktpdENvZGVjU3VwcG9ydCB7IEgy
NjQsIEgyNjRBbmRWUDggfTsKKysKKytzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29k
ZXJGYWN0b3J5PiBjcmVhdGVXZWJLaXRFbmNvZGVyRmFjdG9yeShXZWJLaXRDb2RlY1N1cHBvcnQp
OworK3N0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IGNyZWF0ZVdl
YktpdERlY29kZXJGYWN0b3J5KFdlYktpdENvZGVjU3VwcG9ydCk7CisrCisrdm9pZCBzZXRBcHBs
aWNhdGlvblN0YXR1cyhib29sIGlzQWN0aXZlKTsKKysKKyt2b2lkIHNldEgyNjRIYXJkd2FyZUVu
Y29kZXJBbGxvd2VkKGJvb2wpOworK2Jvb2wgaXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgp
OworKworK0NWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXJGcm9tRnJhbWUoY29uc3QgVmlkZW9G
cmFtZSYsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Q1ZQaXhlbEJ1ZmZlclJlZihzaXplX3QsIHNpemVf
dCk+Jik7CisrcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4
ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOworKworK30KK2RpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dFV0aWxpdGllcy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k
ZXggMDAwMDAwMDAwMDAuLjY1ZWVmYTM2ZjJkCistLS0gL2Rldi9udWxsCisrKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxp
dGllcy5tbQorQEAgLTAsMCArMSwxODUgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICoKKysg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisrICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisrICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKysgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisrICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisrICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
KyAqLworKworKyNpbmNsdWRlICJXZWJLaXRVdGlsaXRpZXMuaCIKKysKKysvLyNpbmNsdWRlICJD
b21tb24vUlRDVUlBcHBsaWNhdGlvblN0YXR1c09ic2VydmVyLmgiCisrI2ltcG9ydCAiV2ViUlRD
L1JUQ1ZpZGVvQ29kZWNIMjY0LmgiCisrCisrI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFt
ZS5oIgorKyNpbmNsdWRlICJuYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgiCisrI2luY2x1
ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9jb252ZXJ0X2Zyb20uaCIKKysj
aW5jbHVkZSAid2VicnRjL3J0Y19iYXNlL2NoZWNrcy5oIgorKyNpbmNsdWRlICJGcmFtZXdvcmsv
SGVhZGVycy9XZWJSVEMvUlRDVmlkZW9Db2RlY0ZhY3RvcnkuaCIKKysjaW5jbHVkZSAiRnJhbWV3
b3JrL0hlYWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWUuaCIKKysjaW5jbHVkZSAiRnJhbWV3b3Jr
L0hlYWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKKysjaW5jbHVkZSAiRnJhbWV3
b3JrL05hdGl2ZS9hcGkvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisrI2luY2x1ZGUgIkZyYW1l
d29yay9OYXRpdmUvYXBpL3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgorKy8qCisrI2lmICFkZWZp
bmVkKFdFQlJUQ19JT1MpCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JU
Q1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciIpKSkKKytAaW50ZXJmYWNlIFJUQ1VJQXBwbGlj
YXRpb25TdGF0dXNPYnNlcnZlciA6IE5TT2JqZWN0CisrCisrKyAoaW5zdGFuY2V0eXBlKXNoYXJl
ZEluc3RhbmNlOworKysgKHZvaWQpcHJlcGFyZUZvclVzZTsKKysKKystIChCT09MKWlzQXBwbGlj
YXRpb25BY3RpdmU7CisrCisrQGVuZAorKyNlbmRpZgorKworK0BpbXBsZW1lbnRhdGlvbiBSVENV
SUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIgeworKyAgICBCT09MIF9pc0FjdGl2ZTsKKyt9Cisr
CisrKyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNlIHsKKysgICAgc3RhdGljIGlkIHNoYXJl
ZEluc3RhbmNlOworKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKysgICAg
ZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworKyAgICAgICAgc2hhcmVkSW5zdGFuY2UgPSBb
W3NlbGYgYWxsb2NdIGluaXRdOworKyAgICB9KTsKKysKKysgICAgcmV0dXJuIHNoYXJlZEluc3Rh
bmNlOworK30KKysKKysrICh2b2lkKXByZXBhcmVGb3JVc2UgeworKyAgICBfX3VudXNlZCBSVENV
SUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIgKm9ic2VydmVyID0gW3NlbGYgc2hhcmVkSW5zdGFu
Y2VdOworK30KKysKKystIChpZClpbml0IHsKKysgICAgX2lzQWN0aXZlID0gWUVTOworKyAgICBy
ZXR1cm4gc2VsZjsKKyt9CisrCisrLSAodm9pZClzZXRBY3RpdmUgeworKyAgICBfaXNBY3RpdmUg
PSBZRVM7CisrfQorKworKy0gKHZvaWQpc2V0SW5hY3RpdmUgeworKyAgICBfaXNBY3RpdmUgPSBO
TzsKKyt9CisrCisrLSAoQk9PTClpc0FwcGxpY2F0aW9uQWN0aXZlIHsKKysgICAgcmV0dXJuIF9p
c0FjdGl2ZTsKKyt9CisrCisrQGVuZAorKyovCisrbmFtZXNwYWNlIHdlYnJ0YyB7CisrCisrdm9p
ZCBzZXRBcHBsaWNhdGlvblN0YXR1cyhib29sIGlzQWN0aXZlKQorK3sKKysvKgorKyAgICBpZiAo
aXNBY3RpdmUpCisrICAgICAgICBbW1JUQ1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciBzaGFy
ZWRJbnN0YW5jZV0gc2V0QWN0aXZlXTsKKysgICAgZWxzZQorKyAgICAgICAgW1tSVENVSUFwcGxp
Y2F0aW9uU3RhdHVzT2JzZXJ2ZXIgc2hhcmVkSW5zdGFuY2VdIHNldEluYWN0aXZlXTsKKysgKi8K
Kyt9CisrCisrc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4gY3Jl
YXRlV2ViS2l0RW5jb2RlckZhY3RvcnkoV2ViS2l0Q29kZWNTdXBwb3J0IGNvZGVjU3VwcG9ydCkK
Kyt7CisrI2lmIEVOQUJMRV9WQ1BfRU5DT0RFUgorKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7CisrICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisrICAgICAgICB3
ZWJydGM6OlZQTW9kdWxlSW5pdGlhbGl6ZSgpOworKyAgICB9KTsKKysjZW5kaWYKKysgICAgcmV0
dXJuIE9iakNUb05hdGl2ZVZpZGVvRW5jb2RlckZhY3RvcnkoY29kZWNTdXBwb3J0ID09IFdlYktp
dENvZGVjU3VwcG9ydDo6SDI2NEFuZFZQOCA/IFtbUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3Rv
cnkgYWxsb2NdIGluaXRdIDogW1tSVENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NCBhbGxvY10gaW5p
dF0pOworK30KKysKKytzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5
PiBjcmVhdGVXZWJLaXREZWNvZGVyRmFjdG9yeShXZWJLaXRDb2RlY1N1cHBvcnQgY29kZWNTdXBw
b3J0KQorK3sKKysgICAgcmV0dXJuIE9iakNUb05hdGl2ZVZpZGVvRGVjb2RlckZhY3RvcnkoY29k
ZWNTdXBwb3J0ID09IFdlYktpdENvZGVjU3VwcG9ydDo6SDI2NEFuZFZQOCA/IFtbUlRDRGVmYXVs
dFZpZGVvRGVjb2RlckZhY3RvcnkgYWxsb2NdIGluaXRdIDogW1tSVENWaWRlb0RlY29kZXJGYWN0
b3J5SDI2NCBhbGxvY10gaW5pdF0pOworK30KKysKKytzdGF0aWMgYm9vbCBoMjY0SGFyZHdhcmVF
bmNvZGVyQWxsb3dlZCA9IHRydWU7Cisrdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dl
ZChib29sIGFsbG93ZWQpCisreworKyAgICBoMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCA9IGFs
bG93ZWQ7CisrfQorKworK2Jvb2wgaXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpCisrewor
KyAgICByZXR1cm4gaDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQ7CisrfQorKworK3J0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShD
VlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKQorK3sKKysgICAgUlRDQ1ZQaXhlbEJ1ZmZlciAq
ZnJhbWVCdWZmZXIgPSBbW1JUQ0NWUGl4ZWxCdWZmZXIgYWxsb2NdIGluaXRXaXRoUGl4ZWxCdWZm
ZXI6cGl4ZWxCdWZmZXJdOworKyAgICByZXR1cm4gbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxP
YmpDRnJhbWVCdWZmZXI+KGZyYW1lQnVmZmVyKTsKKyt9CisrCisrc3RhdGljIGJvb2wgQ29weVZp
ZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Okk0
MjBCdWZmZXJJbnRlcmZhY2U+JiBmcmFtZSwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbF9idWZmZXIp
IHsKKysgICAgUlRDX0RDSEVDSyhwaXhlbF9idWZmZXIpOworKyAgICBSVENfRENIRUNLKENWUGl4
ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxfYnVmZmVyKSA9PSBrQ1ZQaXhlbEZvcm1h
dFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlIHx8IENWUGl4ZWxCdWZmZXJHZXRQaXhl
bEZvcm1hdFR5cGUocGl4ZWxfYnVmZmVyKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNy
OEJpUGxhbmFyVmlkZW9SYW5nZSk7CisrICAgIFJUQ19EQ0hFQ0tfRVEoQ1ZQaXhlbEJ1ZmZlckdl
dEhlaWdodE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihmcmFt
ZS0+aGVpZ2h0KCkpKTsKKysgICAgUlRDX0RDSEVDS19FUShDVlBpeGVsQnVmZmVyR2V0V2lkdGhP
ZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPndpZHRo
KCkpKTsKKysKKysgICAgaWYgKENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocGl4ZWxfYnVm
ZmVyLCAwKSAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworKwor
KyAgICB1aW50OF90KiBkc3RfeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KENWUGl4ZWxC
dWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKSk7CisrICAgIGludCBk
c3Rfc3RyaWRlX3kgPSBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3dPZlBsYW5lKHBpeGVsX2J1
ZmZlciwgMCk7CisrCisrICAgIHVpbnQ4X3QqIGRzdF91diA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocGl4ZWxfYnVmZmVyLCAx
KSk7CisrICAgIGludCBkc3Rfc3RyaWRlX3V2ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93
T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpOworKworKyAgICBpbnQgcmVzdWx0ID0gbGlieXV2OjpJ
NDIwVG9OVjEyKAorKyAgICAgICAgZnJhbWUtPkRhdGFZKCksIGZyYW1lLT5TdHJpZGVZKCksCisr
ICAgICAgICBmcmFtZS0+RGF0YVUoKSwgZnJhbWUtPlN0cmlkZVUoKSwKKysgICAgICAgIGZyYW1l
LT5EYXRhVigpLCBmcmFtZS0+U3RyaWRlVigpLAorKyAgICAgICAgZHN0X3ksIGRzdF9zdHJpZGVf
eSwgZHN0X3V2LCBkc3Rfc3RyaWRlX3V2LAorKyAgICAgICAgZnJhbWUtPndpZHRoKCksIGZyYW1l
LT5oZWlnaHQoKSk7CisrCisrICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhwaXhl
bF9idWZmZXIsIDApOworKworKyAgICBpZiAocmVzdWx0KQorKyAgICAgICAgcmV0dXJuIGZhbHNl
OworKworKyAgICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrCisrQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhl
bEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5j
dGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90KT4mIG1ha2VQaXhlbEJ1ZmZlcikK
Kyt7CisrICAgIGlmIChmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKS0+dHlwZSgpICE9IFZpZGVv
RnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKKysgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxjb25zdCBJNDIwQnVmZmVySW50ZXJmYWNlPiBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9i
dWZmZXIoKS0+R2V0STQyMCgpOworKworKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IG1ha2VQ
aXhlbEJ1ZmZlcihidWZmZXItPndpZHRoKCksIGJ1ZmZlci0+aGVpZ2h0KCkpOworKyAgICAgICAg
aWYgKHBpeGVsQnVmZmVyKQorKyAgICAgICAgICAgIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZl
cihmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKS0+R2V0STQyMCgpLCBwaXhlbEJ1ZmZlcik7Cisr
ICAgICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7CisrICAgIH0KKysKKysgICAgYXV0byAqZnJhbWVC
dWZmZXIgPSBzdGF0aWNfY2FzdDxPYmpDRnJhbWVCdWZmZXIqPihmcmFtZS52aWRlb19mcmFtZV9i
dWZmZXIoKS5nZXQoKSktPndyYXBwZWRfZnJhbWVfYnVmZmVyKCk7CisrICAgIGlmICghW2ZyYW1l
QnVmZmVyIGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkKKysgICAgICAg
IHJldHVybiBudWxscHRyOworKworKyAgICBhdXRvICpydGNQaXhlbEJ1ZmZlciA9IChSVENDVlBp
eGVsQnVmZmVyICopZnJhbWVCdWZmZXI7CisrICAgIHJldHVybiBydGNQaXhlbEJ1ZmZlci5waXhl
bEJ1ZmZlcjsKKyt9CisrCisrfQorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVk
SW1hZ2UrUHJpdmF0ZS5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5t
bQoraW5kZXggNmYyZDFmNDZkOWMuLmY5OTAxYmQzMjdlIDEwMDY0NAorLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0
aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1tCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5j
b2RlZEltYWdlK1ByaXZhdGUubW0KK0BAIC01Niw2ICs1Niw3IEBAIC0gKHdlYnJ0Yzo6RW5jb2Rl
ZEltYWdlKW5hdGl2ZUVuY29kZWRJbWFnZSB7CisgICBlbmNvZGVkSW1hZ2Uucm90YXRpb25fID0g
d2VicnRjOjpWaWRlb1JvdGF0aW9uKHNlbGYucm90YXRpb24pOworICAgZW5jb2RlZEltYWdlLl9j
b21wbGV0ZUZyYW1lID0gc2VsZi5jb21wbGV0ZUZyYW1lOworICAgZW5jb2RlZEltYWdlLnFwXyA9
IHNlbGYucXAgPyBzZWxmLnFwLmludFZhbHVlIDogLTE7CisrICBlbmNvZGVkSW1hZ2UuU2V0U3Bh
dGlhbEluZGV4KHNlbGYuc3BhdGlhbEluZGV4KTsKKyAgIGVuY29kZWRJbWFnZS5jb250ZW50X3R5
cGVfID0gKHNlbGYuY29udGVudFR5cGUgPT0gUlRDVmlkZW9Db250ZW50VHlwZVNjcmVlbnNoYXJl
KSA/CisgICAgICAgd2VicnRjOjpWaWRlb0NvbnRlbnRUeXBlOjpTQ1JFRU5TSEFSRSA6CisgICAg
ICAgd2VicnRjOjpWaWRlb0NvbnRlbnRUeXBlOjpVTlNQRUNJRklFRDsKK2RpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVl
cmNvbm5lY3Rpb24vUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRD
UnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmgKK2luZGV4IGJhNTBiZGU2NDlmLi5kYWJmZjcyNWFiYiAx
MDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaAorKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBp
L3BlZXJjb25uZWN0aW9uL1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5oCitAQCAtMTUsNiArMTUs
NyBAQAorIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgUlRDX09CSkNfRVhQT1JUCisrX19h
dHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVy
cyIpKSkKKyBAaW50ZXJmYWNlIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyA6IE5TT2JqZWN0Cisg
CisgLyoqIENvbnRyb2xzIHdoZXRoZXIgdGhlIGVuY29kaW5nIGlzIGN1cnJlbnRseSB0cmFuc21p
dHRlZC4gKi8KK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGlu
Z3MrUHJpdmF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZh
dGUuaAoraW5kZXggNWIwNjI0NTViYzAuLjcyYWY3MzJiMjNiIDEwMDY0NAorLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25u
ZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUuaAorKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0
aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUuaAorQEAgLTIyLDQgKzIyLDExIEBA
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgQGVuZAorIAorK0BpbnRlcmZhY2UgUlRDVmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbiAoUHJpdmF0ZSkKKysKKystIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhOYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOihjb25zdCB3ZWJydGM6OlZpZGVvQml0cmF0
ZUFsbG9jYXRpb24gKl9fbnVsbGFibGUpdmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsKKystICh3ZWJy
dGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRpb24pbmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsK
KysKKytAZW5kCisrCisgTlNfQVNTVU1FX05PTk5VTExfRU5ECitkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25u
ZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUubW0gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24v
UlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5tbQoraW5kZXggNmZiODFkYmI4YWYuLjgy
YjViYTdiYzBmIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRp
bmdzK1ByaXZhdGUubW0KKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5n
cytQcml2YXRlLm1tCitAQCAtMTIsNiArMTIsMjMgQEAKKyAKKyAjaW1wb3J0ICJoZWxwZXJzL05T
U3RyaW5nK1N0ZFN0cmluZy5oIgorIAorK0BpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0VuY29kZXJT
ZXR0aW5ncyB7CisrICB3ZWJydGM6OlZpZGVvQ29kZWMgX25hdGl2ZVZpZGVvQ29kZWM7CisrfQor
KworK0BzeW50aGVzaXplIG5hbWUgPSBfbmFtZTsKKytAc3ludGhlc2l6ZSB3aWR0aCA9IF93aWR0
aDsKKytAc3ludGhlc2l6ZSBoZWlnaHQgPSBfaGVpZ2h0OworK0BzeW50aGVzaXplIHN0YXJ0Qml0
cmF0ZSA9IF9zdGFydEJpdHJhdGU7CisrQHN5bnRoZXNpemUgbWF4Qml0cmF0ZSA9IF9tYXhCaXRy
YXRlOworK0BzeW50aGVzaXplIG1pbkJpdHJhdGUgPSBfbWluQml0cmF0ZTsKKytAc3ludGhlc2l6
ZSB0YXJnZXRCaXRyYXRlID0gX3RhcmdldEJpdHJhdGU7CisrQHN5bnRoZXNpemUgbWF4RnJhbWVy
YXRlID0gX21heEZyYW1lcmF0ZTsKKytAc3ludGhlc2l6ZSBxcE1heCA9IF9xcE1heDsKKytAc3lu
dGhlc2l6ZSBtb2RlID0gX21vZGU7CisrCisrQGVuZAorKworIEBpbXBsZW1lbnRhdGlvbiBSVENW
aWRlb0VuY29kZXJTZXR0aW5ncyAoUHJpdmF0ZSkKKyAKKyAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhOYXRpdmVWaWRlb0NvZGVjOihjb25zdCB3ZWJydGM6OlZpZGVvQ29kZWMgKil2aWRlb0NvZGVj
IHsKK0BAIC0yMCw2ICszNyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZVZpZGVv
Q29kZWM6KGNvbnN0IHdlYnJ0Yzo6VmlkZW9Db2RlYyAqKXZpZGVvQ29kZWMKKyAgICAgICBjb25z
dCBjaGFyICpjb2RlY05hbWUgPSBDb2RlY1R5cGVUb1BheWxvYWRTdHJpbmcodmlkZW9Db2RlYy0+
Y29kZWNUeXBlKTsKKyAgICAgICBzZWxmLm5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhT
dHJpbmc6Y29kZWNOYW1lXTsKKyAKKysgICAgICBfbmF0aXZlVmlkZW9Db2RlYyA9ICp2aWRlb0Nv
ZGVjOworICAgICAgIHNlbGYud2lkdGggPSB2aWRlb0NvZGVjLT53aWR0aDsKKyAgICAgICBzZWxm
LmhlaWdodCA9IHZpZGVvQ29kZWMtPmhlaWdodDsKKyAgICAgICBzZWxmLnN0YXJ0Qml0cmF0ZSA9
IHZpZGVvQ29kZWMtPnN0YXJ0Qml0cmF0ZTsKK0BAIC0zNiwxOCArNTQsMjggQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoTmF0aXZlVmlkZW9Db2RlYzooY29uc3Qgd2VicnRjOjpWaWRlb0NvZGVj
ICopdmlkZW9Db2RlYworIH0KKyAKKyAtICh3ZWJydGM6OlZpZGVvQ29kZWMpbmF0aXZlVmlkZW9D
b2RlYyB7CistICB3ZWJydGM6OlZpZGVvQ29kZWMgdmlkZW9Db2RlYzsKKy0gIHZpZGVvQ29kZWMu
d2lkdGggPSBzZWxmLndpZHRoOworLSAgdmlkZW9Db2RlYy5oZWlnaHQgPSBzZWxmLmhlaWdodDsK
Ky0gIHZpZGVvQ29kZWMuc3RhcnRCaXRyYXRlID0gc2VsZi5zdGFydEJpdHJhdGU7CistICB2aWRl
b0NvZGVjLm1heEJpdHJhdGUgPSBzZWxmLm1heEJpdHJhdGU7CistICB2aWRlb0NvZGVjLm1pbkJp
dHJhdGUgPSBzZWxmLm1pbkJpdHJhdGU7CistICB2aWRlb0NvZGVjLnRhcmdldEJpdHJhdGUgPSBz
ZWxmLnRhcmdldEJpdHJhdGU7CistICB2aWRlb0NvZGVjLm1heEJpdHJhdGUgPSBzZWxmLm1heEJp
dHJhdGU7CistICB2aWRlb0NvZGVjLnFwTWF4ID0gc2VsZi5xcE1heDsKKy0gIHZpZGVvQ29kZWMu
bW9kZSA9ICh3ZWJydGM6OlZpZGVvQ29kZWNNb2RlKXNlbGYubW9kZTsKKy0KKy0gIHJldHVybiB2
aWRlb0NvZGVjOworKyAgcmV0dXJuIF9uYXRpdmVWaWRlb0NvZGVjOworK30KKysKKytAZW5kCisr
CisrQGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24geworKyAgd2VicnRj
OjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIF9uYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOwor
K30KKysKKytAZW5kCisrCisrQGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRp
b24gKFByaXZhdGUpCisrCisrLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlVmlkZW9CaXRy
YXRlQWxsb2NhdGlvbjooY29uc3Qgd2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uICopdmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbiB7CisrICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgeworKyAg
ICBfbmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiA9ICp2aWRlb0JpdHJhdGVBbGxvY2F0aW9u
OworKyAgfQorKyAgcmV0dXJuIHNlbGY7CisrfQorKworKy0gKHdlYnJ0Yzo6VmlkZW9CaXRyYXRl
QWxsb2NhdGlvbiluYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIHsKKysgIHJldHVybiBfbmF0
aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsKKyB9CisgCisgQGVuZAorZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRl
b19jb2RlYy9SVENWaWRlb0NvZGVjQ29uc3RhbnRzLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29k
ZWNDb25zdGFudHMubW0KK2luZGV4IGFjYmYxMjYxNzBjLi4xNDQ3ZDNiMjdlMSAxMDA2NDQKKy0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS92aWRlb19jb2RlYy9SVENWaWRlb0NvZGVjQ29uc3RhbnRzLm1tCisrKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMv
UlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbQorQEAgLTEzLDUgKzEzLDUgQEAKKyAKKyAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgorIAorLU5TU3RyaW5nICpjb25zdCBrUlRD
VmlkZW9Db2RlY1ZwOE5hbWUgPSBAKGNyaWNrZXQ6OmtWcDhDb2RlY05hbWUpOworLU5TU3RyaW5n
ICpjb25zdCBrUlRDVmlkZW9Db2RlY1ZwOU5hbWUgPSBAKGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUp
OworK05TU3RyaW5nICpjb25zdCBrUlRDVmlkZW9Db2RlY1ZwOE5hbWUgPSBAIlZQOCI7CisrTlNT
dHJpbmcgKmNvbnN0IGtSVENWaWRlb0NvZGVjVnA5TmFtZSA9IEAiVlA5IjsKK2RpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
dmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyVlA4LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNv
ZGVyVlA4LmgKK2luZGV4IDhkODdhODk4OTMxLi4wOGQxODUwNDIyMiAxMDA2NDQKKy0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRl
b19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5j
b2RlclZQOC5oCitAQCAtMTQsNiArMTQsNyBAQAorICNpbXBvcnQgIlJUQ1ZpZGVvRW5jb2Rlci5o
IgorIAorIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1l
KCJXS19SVENWaWRlb0VuY29kZXJWUDgiKSkpCisgQGludGVyZmFjZSBSVENWaWRlb0VuY29kZXJW
UDggOiBOU09iamVjdAorIAorIC8qIFRoaXMgcmV0dXJucyBhIFZQOCBlbmNvZGVyIHRoYXQgY2Fu
IGJlIHJldHVybmVkIGZyb20gYSBSVENWaWRlb0VuY29kZXJGYWN0b3J5IGluamVjdGVkIGludG8K
K2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92
aWRlb19jb2RlYy9SVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tCitpbmRleCA5YWZkNTRm
NTVmNS4uYjk2MzQ3NzlmMWYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDV3JhcHBlZE5hdGl2
ZVZpZGVvRW5jb2Rlci5tbQorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0Vu
Y29kZXIubW0KK0BAIC01OCw2ICs1OCwxMSBAQCAtIChpbnQpc2V0Qml0cmF0ZToodWludDMyX3Qp
Yml0cmF0ZUtiaXQgZnJhbWVyYXRlOih1aW50MzJfdClmcmFtZXJhdGUgeworICAgcmV0dXJuIDA7
CisgfQorIAorKy0gKGludClzZXRSYXRlQWxsb2NhdGlvbjoobm9ubnVsbCBSVENWaWRlb0JpdHJh
dGVBbGxvY2F0aW9uICopYWxsb2NhdGlvbiBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZSB7
CisrICBSVENfTk9UUkVBQ0hFRCgpOworKyAgcmV0dXJuIDA7CisrfQorKworIC0gKE5TU3RyaW5n
ICopaW1wbGVtZW50YXRpb25OYW1lIHsKKyAgIFJUQ19OT1RSRUFDSEVEKCk7CisgICByZXR1cm4g
bmlsOworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlSTQyMEJ1ZmZlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBp
L3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVJNDIwQnVmZmVyLmgKK2luZGV4IDlhOTA0ZjUz
OTZhLi5kYzkwM2JjNGJjYSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZl
STQyMEJ1ZmZlci5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIu
aAorQEAgLTE3LDYgKzE3LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAvKiogUlRD
STQyMEJ1ZmZlciBpbXBsZW1lbnRzIHRoZSBSVENJNDIwQnVmZmVyIHByb3RvY29sICovCisgUlRD
X09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0k0
MjBCdWZmZXIiKSkpCisgQGludGVyZmFjZSBSVENJNDIwQnVmZmVyIDogTlNPYmplY3Q8UlRDSTQy
MEJ1ZmZlcj4KKyBAZW5kCisgCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRp
dmVNdXRhYmxlSTQyMEJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVNdXRhYmxl
STQyMEJ1ZmZlci5oCitpbmRleCA2Y2Q1MTEwNDYwYi4uN2NmYTk1MGFiYjYgMTAwNjQ0CistLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
dmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVyLmgKKysrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRl
b19mcmFtZV9idWZmZXIvUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIuaAorQEAgLTE4LDYgKzE4
LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAvKiogTXV0YWJsZSB2ZXJzaW9uIG9m
IFJUQ0k0MjBCdWZmZXIgKi8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpj
X3J1bnRpbWVfbmFtZSgiV0tfUlRDTXV0YWJsZUk0MjBCdWZmZXIiKSkpCisgQGludGVyZmFjZSBS
VENNdXRhYmxlSTQyMEJ1ZmZlciA6IFJUQ0k0MjBCdWZmZXI8UlRDTXV0YWJsZUk0MjBCdWZmZXI+
CisgQGVuZAorIAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDQ29kZWNTcGVjaWZpY0luZm8uaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDQ29kZWNT
cGVjaWZpY0luZm8uaAoraW5kZXggZTJhZTRjYWZhMTEuLjlkYzQ0YzEyYWY4IDEwMDY0NAorLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFz
ZS9SVENDb2RlY1NwZWNpZmljSW5mby5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmgKK0BA
IC0xOCw2ICsxOCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgICogIENvcnJlc3BvbmRz
IHRvIHdlYnJ0Yzo6Q29kZWNTcGVjaWZpY0luZm8uCisgICovCisgUlRDX09CSkNfRVhQT1JUCisr
X19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0NvZGVjU3BlY2lmaWNJbmZv
IikpKQorIEBwcm90b2NvbCBSVENDb2RlY1NwZWNpZmljSW5mbyA8TlNPYmplY3Q+CisgQGVuZAor
IAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5oCitpbmRl
eCA2NzBjNzI3NmZmNy4uNzk5NGNlNjRhMWYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5o
CisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5oCitAQCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNVSW50ZWdlciwgUlRDVmlkZW9Db250ZW50VHlwZSkgeworIAorIC8qKiBSZXByZXNlbnRz
IGFuIGVuY29kZWQgZnJhbWUuIENvcnJlc3BvbmRzIHRvIHdlYnJ0Yzo6RW5jb2RlZEltYWdlLiAq
LworIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJX
S19SVENFbmNvZGVkSW1hZ2UiKSkpCisgQGludGVyZmFjZSBSVENFbmNvZGVkSW1hZ2UgOiBOU09i
amVjdAorIAorIEBwcm9wZXJ0eShub25hdG9taWMsIHN0cm9uZykgTlNEYXRhICpidWZmZXI7CitA
QCAtNDcsNiArNDgsNyBAQCBSVENfT0JKQ19FWFBPUlQKKyBAcHJvcGVydHkobm9uYXRvbWljLCBh
c3NpZ24pIEJPT0wgY29tcGxldGVGcmFtZTsKKyBAcHJvcGVydHkobm9uYXRvbWljLCBzdHJvbmcp
IE5TTnVtYmVyICpxcDsKKyBAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIFJUQ1ZpZGVvQ29u
dGVudFR5cGUgY29udGVudFR5cGU7CisrQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBpbnQg
c3BhdGlhbEluZGV4OworIAorIEBlbmQKKyAKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5t
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFz
ZS9SVENFbmNvZGVkSW1hZ2UubQoraW5kZXggMDI0YTU3YzU0MWIuLjg1Y2Q1ZTI5OGU0IDEwMDY0
NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYmFzZS9SVENFbmNvZGVkSW1hZ2UubQorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UubQorQEAgLTI2
LDUgKzI2LDYgQEAgQGltcGxlbWVudGF0aW9uIFJUQ0VuY29kZWRJbWFnZQorIEBzeW50aGVzaXpl
IGNvbXBsZXRlRnJhbWUgPSBfY29tcGxldGVGcmFtZTsKKyBAc3ludGhlc2l6ZSBxcCA9IF9xcDsK
KyBAc3ludGhlc2l6ZSBjb250ZW50VHlwZSA9IF9jb250ZW50VHlwZTsKKytAc3ludGhlc2l6ZSBz
cGF0aWFsSW5kZXggPSBfc3BhdGlhbEluZGV4OworIAorIEBlbmQKK2RpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0k0
MjBCdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2Jhc2UvUlRDSTQyMEJ1ZmZlci5oCitpbmRleCBhNmM3ZTQxYmNiYS4uY2ZhMTRmOGFm
MjMgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9iYXNlL1JUQ0k0MjBCdWZmZXIuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENJNDIwQnVmZmVyLmgKK0BA
IC0xNiw2ICsxNiw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgLyoqIFByb3RvY29s
IGZvciBSVENZVVZQbGFuYXJCdWZmZXJzIGNvbnRhaW5pbmcgSTQyMCBkYXRhICovCisgUlRDX09C
SkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0k0MjBC
dWZmZXIiKSkpCisgQHByb3RvY29sIFJUQ0k0MjBCdWZmZXIgPFJUQ1lVVlBsYW5hckJ1ZmZlcj4K
KyBAZW5kCisgCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0
cEZyYWdtZW50YXRpb25IZWFkZXIuaAoraW5kZXggMmUyNmIwOGI4YWYuLmZiYmM2OGE4ZWY2IDEw
MDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLmgKKysrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21l
bnRhdGlvbkhlYWRlci5oCitAQCAtMTYsNiArMTYsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgorIAorIC8qKiBJbmZvcm1hdGlvbiBmb3IgaGVhZGVyLiBDb3JyZXNwb25kcyB0byB3ZWJydGM6
OlJUUEZyYWdtZW50YXRpb25IZWFkZXIuICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1
dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIiKSkp
CisgQGludGVyZmFjZSBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyIDogTlNPYmplY3QKKyAKKyBA
cHJvcGVydHkobm9uYXRvbWljLCBzdHJvbmcpIE5TQXJyYXk8TlNOdW1iZXIgKj4gKmZyYWdtZW50
YXRpb25PZmZzZXQ7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JU
Q1J0cEZyYWdtZW50YXRpb25IZWFkZXIubQoraW5kZXggODA0OWFiYzQxMWUuLjZjZjIxZGRjMmEx
IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0KKysrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJh
Z21lbnRhdGlvbkhlYWRlci5tCitAQCAtMTcsNCArMTcsNSBAQCBAaW1wbGVtZW50YXRpb24gUlRD
UnRwRnJhZ21lbnRhdGlvbkhlYWRlcgorIEBzeW50aGVzaXplIGZyYWdtZW50YXRpb25UaW1lRGlm
ZiA9IF9mcmFnbWVudGF0aW9uVGltZURpZmY7CisgQHN5bnRoZXNpemUgZnJhZ21lbnRhdGlvblBs
VHlwZSA9IF9mcmFnbWVudGF0aW9uUGxUeXBlOworIAorLUBlbmQKK1wgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQorK0BlbmQKKysKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvQ29kZWNJbmZvLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JU
Q1ZpZGVvQ29kZWNJbmZvLmgKK2luZGV4IDIxNjJjYWFhMjFmLi40ZTY0M2Q5NDM0NyAxMDA2NDQK
Ky0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2Jhc2UvUlRDVmlkZW9Db2RlY0luZm8uaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0NvZGVjSW5mby5oCitAQCAt
MTYsNiArMTYsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAorIC8qKiBIb2xkcyBpbmZv
cm1hdGlvbiB0byBpZGVudGlmeSBhIGNvZGVjLiBDb3JyZXNwb25kcyB0byB3ZWJydGM6OlNkcFZp
ZGVvRm9ybWF0LiAqLworIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVu
dGltZV9uYW1lKCJXS19SVENWaWRlb0NvZGVjSW5mbyIpKSkKKyBAaW50ZXJmYWNlIFJUQ1ZpZGVv
Q29kZWNJbmZvIDogTlNPYmplY3QgPE5TQ29kaW5nPgorIAorIC0gKGluc3RhbmNldHlwZSlpbml0
IE5TX1VOQVZBSUxBQkxFOworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVv
RGVjb2Rlci5oCitpbmRleCAxOGM2ZjZiMDAwNi4uNTM0NDIwZDM5NTUgMTAwNjQ0CistLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JU
Q1ZpZGVvRGVjb2Rlci5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2Rlci5oCitAQCAtMjMsNiArMjMsNyBA
QCB0eXBlZGVmIHZvaWQgKF5SVENWaWRlb0RlY29kZXJDYWxsYmFjaykoUlRDVmlkZW9GcmFtZSAq
ZnJhbWUpOworIAorIC8qKiBQcm90b2NvbCBmb3IgZGVjb2RlciBpbXBsZW1lbnRhdGlvbnMuICov
CisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldL
X1JUQ1ZpZGVvRGVjb2RlciIpKSkKKyBAcHJvdG9jb2wgUlRDVmlkZW9EZWNvZGVyIDxOU09iamVj
dD4KKyAKKyAtICh2b2lkKXNldENhbGxiYWNrOihSVENWaWRlb0RlY29kZXJDYWxsYmFjayljYWxs
YmFjazsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNv
ZGVyRmFjdG9yeS5oCitpbmRleCAzZTI0MTUzYjgyYy4uY2I5NWZhM2YxMzQgMTAwNjQ0CistLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNl
L1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXJGYWN0b3J5LmgK
K0BAIC0xOCw2ICsxOCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgLyoqIFJUQ1Zp
ZGVvRGVjb2RlckZhY3RvcnkgaXMgYW4gT2JqZWN0aXZlLUMgdmVyc2lvbiBvZiB3ZWJydGM6OlZp
ZGVvRGVjb2RlckZhY3RvcnkuICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygo
b2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnkiKSkpCisgQHByb3Rv
Y29sIFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnkgPE5TT2JqZWN0PgorIAorIC0gKG51bGxhYmxlIGlk
PFJUQ1ZpZGVvRGVjb2Rlcj4pY3JlYXRlRGVjb2RlcjooUlRDVmlkZW9Db2RlY0luZm8gKilpbmZv
OworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2Rlci5oCitpbmRl
eCBjNTI1NzY3NGQ4My4uNTI5MWJiMTM0MmIgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2Rlci5o
CisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9iYXNlL1JUQ1ZpZGVvRW5jb2Rlci5oCitAQCAtMTksNyArMTksMTEgQEAKKyAjaW1wb3J0ICJS
VENWaWRlb0ZyYW1lLmgiCisgCisgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKy0KKysvKgorK25h
bWVzcGFjZSB3ZWJydGMgeworK2NsYXNzIFZpZGVvQml0cmF0ZUFsbG9jYXRpb247CisrfTsKKysq
LworIC8qKiBDYWxsYmFjayBibG9jayBmb3IgZW5jb2Rlci4gKi8KKyB0eXBlZGVmIEJPT0wgKF5S
VENWaWRlb0VuY29kZXJDYWxsYmFjaykoUlRDRW5jb2RlZEltYWdlICpmcmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ8UlRDQ29kZWNTcGVjaWZpY0luZm8+
IGluZm8sCitAQCAtMjcsNiArMzEsNyBAQCB0eXBlZGVmIEJPT0wgKF5SVENWaWRlb0VuY29kZXJD
YWxsYmFjaykoUlRDRW5jb2RlZEltYWdlICpmcmFtZSwKKyAKKyAvKiogUHJvdG9jb2wgZm9yIGVu
Y29kZXIgaW1wbGVtZW50YXRpb25zLiAqLworIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRl
X18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0VuY29kZXIiKSkpCisgQHByb3RvY29s
IFJUQ1ZpZGVvRW5jb2RlciA8TlNPYmplY3Q+CisgCisgLSAodm9pZClzZXRDYWxsYmFjazooUlRD
VmlkZW9FbmNvZGVyQ2FsbGJhY2spY2FsbGJhY2s7CitAQCAtMzcsNiArNDIsNyBAQCBSVENfT0JK
Q19FWFBPUlQKKyAgICAgY29kZWNTcGVjaWZpY0luZm86KG51bGxhYmxlIGlkPFJUQ0NvZGVjU3Bl
Y2lmaWNJbmZvPilpbmZvCisgICAgICAgICAgICBmcmFtZVR5cGVzOihOU0FycmF5PE5TTnVtYmVy
ICo+ICopZnJhbWVUeXBlczsKKyAtIChpbnQpc2V0Qml0cmF0ZToodWludDMyX3QpYml0cmF0ZUti
aXQgZnJhbWVyYXRlOih1aW50MzJfdClmcmFtZXJhdGU7CisrLSAoaW50KXNldFJhdGVBbGxvY2F0
aW9uOiAoUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqKWFsbG9jYXRpb24gZnJhbWVyYXRlOih1
aW50MzJfdClmcmFtZXJhdGU7CisgLSAoTlNTdHJpbmcgKilpbXBsZW1lbnRhdGlvbk5hbWU7Cisg
CisgLyoqIFJldHVybnMgUVAgc2NhbGluZyBzZXR0aW5ncyBmb3IgZW5jb2Rlci4gVGhlIHF1YWxp
dHkgc2NhbGVyIGFkanVzdHMgdGhlIHJlc29sdXRpb24gaW4gb3JkZXIgdG8KK2RpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNl
L1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5oCitpbmRl
eCAyMGM2MDNkNmZlNi4uY2JlOWVhNDkyYWUgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlckZh
Y3RvcnkuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJGYWN0b3J5LmgKK0BAIC0xOCw2ICsxOCw3IEBA
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgLyoqIFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnkg
aXMgYW4gT2JqZWN0aXZlLUMgdmVyc2lvbiBvZiB3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnku
ICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUo
IldLX1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnkiKSkpCisgQHByb3RvY29sIFJUQ1ZpZGVvRW5jb2Rl
ckZhY3RvcnkgPE5TT2JqZWN0PgorIAorIC0gKG51bGxhYmxlIGlkPFJUQ1ZpZGVvRW5jb2Rlcj4p
Y3JlYXRlRW5jb2RlcjooUlRDVmlkZW9Db2RlY0luZm8gKilpbmZvOworZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRD
VmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5o
CitpbmRleCAyYjQ4ZjQ1Y2UwYS4uNjhjZmQ2NmRmNDcgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5j
b2RlclFwVGhyZXNob2xkcy5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5oCitA
QCAtMTYsNiArMTYsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAorIC8qKiBRUCB0aHJl
c2hvbGRzIGZvciBlbmNvZGVyLiBDb3JyZXNwb25kcyB0byB3ZWJydGM6OlZpZGVvRW5jb2Rlcjo6
UXBUaHJlc2hvbGRzLiAqLworIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNf
cnVudGltZV9uYW1lKCJXS19SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMiKSkpCisgQGludGVy
ZmFjZSBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMgOiBOU09iamVjdAorIAorIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFRocmVzaG9sZHNMb3c6KE5TSW50ZWdlcilsb3cgaGlnaDooTlNJbnRl
Z2VyKWhpZ2g7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJTZXR0aW5ncy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRl
b0VuY29kZXJTZXR0aW5ncy5oCitpbmRleCA2OWUwNGNhYzcwZi4uYWUzYmY1ZmI1ZjEgMTAwNjQ0
CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9iYXNlL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyU2V0
dGluZ3MuaAorQEAgLTIxLDYgKzIxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFJU
Q1ZpZGVvQ29kZWNNb2RlKSB7CisgCisgLyoqIFNldHRpbmdzIGZvciBlbmNvZGVyLiBDb3JyZXNw
b25kcyB0byB3ZWJydGM6OlZpZGVvQ29kZWMuICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRy
aWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzIikp
KQorIEBpbnRlcmZhY2UgUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MgOiBOU09iamVjdAorIAorIEBw
cm9wZXJ0eShub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKm5hbWU7CitAQCAtNDAsNCArNDEs
OSBAQCBSVENfT0JKQ19FWFBPUlQKKyAKKyBAZW5kCisgCisrUlRDX09CSkNfRVhQT1JUCisrX19h
dHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRp
b24iKSkpCisrQGludGVyZmFjZSBSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIDogTlNPYmplY3QK
KytAZW5kCisrCisgTlNfQVNTVU1FX05PTk5VTExfRU5ECitkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0Zy
YW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9iYXNlL1JUQ1ZpZGVvRnJhbWUuaAoraW5kZXggOWFjYTc0MzNmMzQuLmJkZTA5YzUwYzlkIDEw
MDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENWaWRlb0ZyYW1lLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZS5oCitAQCAtMjYs
NiArMjYsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBSVENWaWRlb1JvdGF0aW9uKSB7
CisgCisgLy8gUlRDVmlkZW9GcmFtZSBpcyBhbiBPYmplY3RpdmVDIHZlcnNpb24gb2Ygd2VicnRj
OjpWaWRlb0ZyYW1lLgorIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVu
dGltZV9uYW1lKCJXS19SVENWaWRlb0ZyYW1lIikpKQorIEBpbnRlcmZhY2UgUlRDVmlkZW9GcmFt
ZSA6IE5TT2JqZWN0CisgCisgLyoqIFdpZHRoIHdpdGhvdXQgcm90YXRpb24gYXBwbGllZC4gKi8K
K2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5o
CitpbmRleCBiYjllNmZiYTYzMS4uMTg2YWQwODg5YmYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJh
bWVCdWZmZXIuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmgKK0BAIC0xOCw2ICsxOCw3IEBA
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgLy8gUlRDVmlkZW9GcmFtZUJ1ZmZlciBpcyBh
biBPYmplY3RpdmVDIHZlcnNpb24gb2Ygd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyLgorIFJUQ19P
QkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRl
b0ZyYW1lQnVmZmVyIikpKQorIEBwcm90b2NvbCBSVENWaWRlb0ZyYW1lQnVmZmVyIDxOU09iamVj
dD4KKyAKKyBAcHJvcGVydHkobm9uYXRvbWljLCByZWFkb25seSkgaW50IHdpZHRoOworZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL1JUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5oCitpbmRleCBlY2U5NTcwYTEz
Yi4uZTk0N2RjNmU2MjMgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0NvZGVjU3Bl
Y2lmaWNJbmZvSDI2NC5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0NvZGVjU3BlY2lmaWNJ
bmZvSDI2NC5oCitAQCAtMTAsNyArMTAsNyBAQAorIAorICNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgorIAorLSNpbXBvcnQgIlJUQ0NvZGVjU3BlY2lmaWNJbmZvLmgiCisrI2ltcG9y
dCAiYmFzZS9SVENDb2RlY1NwZWNpZmljSW5mby5oIgorICNpbXBvcnQgIlJUQ01hY3Jvcy5oIgor
IAorIC8qKiBDbGFzcyBmb3IgSDI2NCBzcGVjaWZpYyBjb25maWcuICovCitAQCAtMjAsNiArMjAs
NyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgUlRDSDI2NFBhY2tldGl6YXRpb25Nb2Rl
KSB7CisgfTsKKyAKKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRp
bWVfbmFtZSgiV0tfUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0IikpKQorIEBpbnRlcmZhY2UgUlRD
Q29kZWNTcGVjaWZpY0luZm9IMjY0IDogTlNPYmplY3QgPFJUQ0NvZGVjU3BlY2lmaWNJbmZvPgor
IAorIEBwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgUlRDSDI2NFBhY2tldGl6YXRpb25Nb2Rl
IHBhY2tldGl6YXRpb25Nb2RlOworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDQ29k
ZWNTcGVjaWZpY0luZm9IMjY0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmlj
SW5mb0gyNjQubW0KK2luZGV4IDU3ZjI0MTFlM2JiLi42M2U4YmQ3ZjQyYSAxMDA2NDQKKy0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0Lm1tCisrKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL1JUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5tbQorQEAgLTIwLDYgKzIwLDcg
QEAgQHN5bnRoZXNpemUgcGFja2V0aXphdGlvbk1vZGUgPSBfcGFja2V0aXphdGlvbk1vZGU7Cisg
LSAod2VicnRjOjpDb2RlY1NwZWNpZmljSW5mbyluYXRpdmVDb2RlY1NwZWNpZmljSW5mbyB7Cisg
ICB3ZWJydGM6OkNvZGVjU3BlY2lmaWNJbmZvIGNvZGVjU3BlY2lmaWNJbmZvOworICAgY29kZWNT
cGVjaWZpY0luZm8uY29kZWNUeXBlID0gd2VicnRjOjprVmlkZW9Db2RlY0gyNjQ7CisrICBjb2Rl
Y1NwZWNpZmljSW5mby5jb2RlY19uYW1lID0gW2tSVENWaWRlb0NvZGVjSDI2NE5hbWUgY1N0cmlu
Z1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgY29kZWNTcGVjaWZpY0lu
Zm8uY29kZWNTcGVjaWZpYy5IMjY0LnBhY2tldGl6YXRpb25fbW9kZSA9CisgICAgICAgKHdlYnJ0
Yzo6SDI2NFBhY2tldGl6YXRpb25Nb2RlKV9wYWNrZXRpemF0aW9uTW9kZTsKKyAKK2RpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9j
b21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25l
bnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5LmgKK2luZGV4IDdj
YTk0NjNhNTkzLi5kMTE0NjAzMDBkNSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRD
RGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENE
ZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oCitAQCAtMTksNiArMTksNyBAQCBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorICAqICBjb2RlY3MsIGNyZWF0ZSBjdXN0b20gaW1wbGVtZW50YXRpb25z
IG9mIFJUQ1ZpZGVvRW5jb2RlckZhY3RvcnkgYW5kIFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuCisg
ICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUo
IldLX1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5IikpKQorIEBpbnRlcmZhY2UgUlRDRGVm
YXVsdFZpZGVvRGVjb2RlckZhY3RvcnkgOiBOU09iamVjdCA8UlRDVmlkZW9EZWNvZGVyRmFjdG9y
eT4KKyBAZW5kCisgCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0Vmlk
ZW9EZWNvZGVyRmFjdG9yeS5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9EZWNv
ZGVyRmFjdG9yeS5tCitpbmRleCBiZGIxODUxN2NhZi4uYzdkMDhjYWE5YzkgMTAwNjQ0CistLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5Lm0KKysrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkubQorQEAgLTE1
LDcgKzE1LDcgQEAKKyAjaW1wb3J0ICJhcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0
YW50cy5oIgorICNpbXBvcnQgImFwaS92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJWUDguaCIK
KyAjaW1wb3J0ICJiYXNlL1JUQ1ZpZGVvQ29kZWNJbmZvLmgiCistI2lmIGRlZmluZWQoUlRDX0VO
QUJMRV9WUDkpCisrI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyAjaW1wb3J0ICJhcGkv
dmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVyVlA5LmgiCisgI2VuZGlmCisgCitAQCAtMjYsNyAr
MjYsNyBAQCBAaW1wbGVtZW50YXRpb24gUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkKKyAg
ICAgcmV0dXJuIFtbUlRDVmlkZW9EZWNvZGVySDI2NCBhbGxvY10gaW5pdF07CisgICB9IGVsc2Ug
aWYgKFtpbmZvLm5hbWUgaXNFcXVhbFRvU3RyaW5nOmtSVENWaWRlb0NvZGVjVnA4TmFtZV0pIHsK
KyAgICAgcmV0dXJuIFtSVENWaWRlb0RlY29kZXJWUDggdnA4RGVjb2Rlcl07CistI2lmIGRlZmlu
ZWQoUlRDX0VOQUJMRV9WUDkpCisrI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyAgIH0g
ZWxzZSBpZiAoW2luZm8ubmFtZSBpc0VxdWFsVG9TdHJpbmc6a1JUQ1ZpZGVvQ29kZWNWcDlOYW1l
XSkgeworICAgICByZXR1cm4gW1JUQ1ZpZGVvRGVjb2RlclZQOSB2cDlEZWNvZGVyXTsKKyAjZW5k
aWYKK0BAIC0zOSw3ICszOSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBSVENEZWZhdWx0VmlkZW9EZWNv
ZGVyRmFjdG9yeQorICAgcmV0dXJuIEBbCisgICAgIFtbUlRDVmlkZW9Db2RlY0luZm8gYWxsb2Nd
IGluaXRXaXRoTmFtZTprUlRDVmlkZW9Db2RlY0gyNjROYW1lXSwKKyAgICAgW1tSVENWaWRlb0Nv
ZGVjSW5mbyBhbGxvY10gaW5pdFdpdGhOYW1lOmtSVENWaWRlb0NvZGVjVnA4TmFtZV0sCistI2lm
IGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCisrI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkK
KyAgICAgW1tSVENWaWRlb0NvZGVjSW5mbyBhbGxvY10gaW5pdFdpdGhOYW1lOmtSVENWaWRlb0Nv
ZGVjVnA5TmFtZV0sCisgI2VuZGlmCisgICBdOworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29k
ZWMvUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRD
RGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkuaAoraW5kZXggYzQ1ZTU0MzYyYjIuLjkzMjMyNTZj
ZWFkIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVy
RmFjdG9yeS5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJG
YWN0b3J5LmgKK0BAIC0xOSw2ICsxOSw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgICog
IGNvZGVjcywgY3JlYXRlIGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMgb2YgUlRDVmlkZW9FbmNvZGVy
RmFjdG9yeSBhbmQgUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS4KKyAgKi8KKyBSVENfT0JKQ19FWFBP
UlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDRGVmYXVsdFZpZGVv
RW5jb2RlckZhY3RvcnkiKSkpCisgQGludGVyZmFjZSBSVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFj
dG9yeSA6IE5TT2JqZWN0IDxSVENWaWRlb0VuY29kZXJGYWN0b3J5PgorIAorIEBwcm9wZXJ0eShu
b25hdG9taWMsIHJldGFpbikgUlRDVmlkZW9Db2RlY0luZm8gKnByZWZlcnJlZENvZGVjOworZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3Rvcnku
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkubQoraW5k
ZXggYjcyMjk2YjY0ZjMuLmIwMWMwNzQ2NzkyIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5tCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5Lm0KK0BAIC0xNSw3ICsxNSw3IEBACisgI2lt
cG9ydCAiYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29kZWNDb25zdGFudHMuaCIKKyAjaW1wb3J0
ICJhcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyVlA4LmgiCisgI2ltcG9ydCAiYmFzZS9S
VENWaWRlb0NvZGVjSW5mby5oIgorLSNpZiBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQorKyNpZiAh
ZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisgI2ltcG9ydCAiYXBpL3ZpZGVvX2NvZGVjL1JUQ1Zp
ZGVvRW5jb2RlclZQOS5oIgorICNlbmRpZgorIAorQEAgLTQ0LDcgKzQ0LDcgQEAgQGltcGxlbWVu
dGF0aW9uIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5CisgCisgICBSVENWaWRlb0NvZGVj
SW5mbyAqdnA4SW5mbyA9IFtbUlRDVmlkZW9Db2RlY0luZm8gYWxsb2NdIGluaXRXaXRoTmFtZTpr
UlRDVmlkZW9Db2RlY1ZwOE5hbWVdOworIAorLSNpZiBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQor
KyNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisgICBSVENWaWRlb0NvZGVjSW5mbyAqdnA5
SW5mbyA9IFtbUlRDVmlkZW9Db2RlY0luZm8gYWxsb2NdIGluaXRXaXRoTmFtZTprUlRDVmlkZW9D
b2RlY1ZwOU5hbWVdOworICNlbmRpZgorIAorQEAgLTUyLDcgKzUyLDcgQEAgQGltcGxlbWVudGF0
aW9uIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5CisgICAgIGNvbnN0cmFpbmVkSGlnaElu
Zm8sCisgICAgIGNvbnN0cmFpbmVkQmFzZWxpbmVJbmZvLAorICAgICB2cDhJbmZvLAorLSNpZiBk
ZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQorKyNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisg
ICAgIHZwOUluZm8sCisgI2VuZGlmCisgICBdOworQEAgLTYzLDcgKzYzLDcgQEAgQGltcGxlbWVu
dGF0aW9uIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5CisgICAgIHJldHVybiBbW1JUQ1Zp
ZGVvRW5jb2RlckgyNjQgYWxsb2NdIGluaXRXaXRoQ29kZWNJbmZvOmluZm9dOworICAgfSBlbHNl
IGlmIChbaW5mby5uYW1lIGlzRXF1YWxUb1N0cmluZzprUlRDVmlkZW9Db2RlY1ZwOE5hbWVdKSB7
CisgICAgIHJldHVybiBbUlRDVmlkZW9FbmNvZGVyVlA4IHZwOEVuY29kZXJdOworLSNpZiBkZWZp
bmVkKFJUQ19FTkFCTEVfVlA5KQorKyNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisgICB9
IGVsc2UgaWYgKFtpbmZvLm5hbWUgaXNFcXVhbFRvU3RyaW5nOmtSVENWaWRlb0NvZGVjVnA5TmFt
ZV0pIHsKKyAgICAgcmV0dXJuIFtSVENWaWRlb0VuY29kZXJWUDkgdnA5RW5jb2Rlcl07CisgI2Vu
ZGlmCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxldmVsSWQu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLmgKK2luZGV4IDU2YjM1
MzIxNWEyLi5kMDIyMjk3Njc0ZSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2
NFByb2ZpbGVMZXZlbElkLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVM
ZXZlbElkLmgKK0BAIC00OCw2ICs0OCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBS
VENIMjY0TGV2ZWwpIHsKKyB9OworIAorIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18o
KG9iamNfcnVudGltZV9uYW1lKCJXS19SVENIMjY0UHJvZmlsZUxldmVsSWQiKSkpCisgQGludGVy
ZmFjZSBSVENIMjY0UHJvZmlsZUxldmVsSWQgOiBOU09iamVjdAorIAorIEBwcm9wZXJ0eShub25h
dG9taWMsIHJlYWRvbmx5KSBSVENIMjY0UHJvZmlsZSBwcm9maWxlOworZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVu
dHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0KK2luZGV4IDM1OTY1NmNiOTdiLi4zZDVjODMzNzI0
NiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1t
CisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbQorQEAgLTE5
LDIzICsxOSwzNSBAQAorICNpbmNsdWRlICJtZWRpYS9iYXNlL2gyNjRfcHJvZmlsZV9sZXZlbF9p
ZC5oIgorICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCisgCisrI2lmICFk
ZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCisgbmFtZXNwYWNlIHsKKyAKKyBOU1N0cmluZyAq
TWF4U3VwcG9ydGVkUHJvZmlsZUxldmVsQ29uc3RyYWluZWRIaWdoKCk7CisgTlNTdHJpbmcgKk1h
eFN1cHBvcnRlZFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkQmFzZWxpbmUoKTsKKyAKKyB9ICAvLyBu
YW1lc3BhY2UKKysjZW5kaWYKKyAKKy1OU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNIMjY0
TmFtZSA9IEAoY3JpY2tldDo6a0gyNjRDb2RlY05hbWUpOworK05TU3RyaW5nICpjb25zdCBrUlRD
VmlkZW9Db2RlY0gyNjROYW1lID0gQCJIMjY0IjsKKyBOU1N0cmluZyAqY29uc3Qga1JUQ0xldmVs
MzFDb25zdHJhaW5lZEhpZ2ggPSBAIjY0MGMxZiI7CisgTlNTdHJpbmcgKmNvbnN0IGtSVENMZXZl
bDMxQ29uc3RyYWluZWRCYXNlbGluZSA9IEAiNDJlMDFmIjsKKysKKysjaWYgZGVmaW5lZChXRUJS
VENfV0VCS0lUX0JVSUxEKQorK05TU3RyaW5nICpjb25zdCBrUlRDTWF4U3VwcG9ydGVkSDI2NFBy
b2ZpbGVMZXZlbENvbnN0cmFpbmVkSGlnaCA9CisrICAgIEAiNjQwYzFmIjsKKytOU1N0cmluZyAq
Y29uc3Qga1JUQ01heFN1cHBvcnRlZEgyNjRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEJhc2VsaW5l
ID0KKysgICAgQCI0MmUwMWYiOworKyNlbHNlCisgTlNTdHJpbmcgKmNvbnN0IGtSVENNYXhTdXBw
b3J0ZWRIMjY0UHJvZmlsZUxldmVsQ29uc3RyYWluZWRIaWdoID0KKyAgICAgTWF4U3VwcG9ydGVk
UHJvZmlsZUxldmVsQ29uc3RyYWluZWRIaWdoKCk7CisgTlNTdHJpbmcgKmNvbnN0IGtSVENNYXhT
dXBwb3J0ZWRIMjY0UHJvZmlsZUxldmVsQ29uc3RyYWluZWRCYXNlbGluZSA9CisgICAgIE1heFN1
cHBvcnRlZFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkQmFzZWxpbmUoKTsKKysjZW5kaWYKKyAKKyBu
YW1lc3BhY2UgeworIAorKyNpZiAhZGVmaW5lZChXRUJSVENfV0VCS0lUX0JVSUxEKQorKworICNp
ZiBkZWZpbmVkKFdFQlJUQ19JT1MpCisgCisgdXNpbmcgbmFtZXNwYWNlIHdlYnJ0Yzo6SDI2NDsK
K0BAIC03Myw2ICs4NSw4IEBAIE5TU3RyaW5nICpNYXhTdXBwb3J0ZWRQcm9maWxlTGV2ZWxDb25z
dHJhaW5lZEhpZ2goKSB7CisgICByZXR1cm4ga1JUQ0xldmVsMzFDb25zdHJhaW5lZEhpZ2g7Cisg
fQorIAorKyNlbmRpZgorKworIH0gIC8vIG5hbWVzcGFjZQorIAorIEBpbnRlcmZhY2UgUlRDSDI2
NFByb2ZpbGVMZXZlbElkICgpCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRl
b0RlY29kZXJGYWN0b3J5SDI2NC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJG
YWN0b3J5SDI2NC5oCitpbmRleCA0ZmNmZjFkZmY3OS4uZmRhYmQ4MDc0ODAgMTAwNjQ0CistLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0LmgKKysrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVu
dHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQuaAorQEAgLTE0LDUgKzE0
LDYgQEAKKyAjaW1wb3J0ICJSVENWaWRlb0RlY29kZXJGYWN0b3J5LmgiCisgCisgUlRDX09CSkNf
RVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRGVj
b2RlckZhY3RvcnlIMjY0IikpKQorIEBpbnRlcmZhY2UgUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgy
NjQgOiBOU09iamVjdCA8UlRDVmlkZW9EZWNvZGVyRmFjdG9yeT4KKyBAZW5kCitkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2Nv
ZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQuaAoraW5kZXggYjg2MDI3NjIwNmMuLmIxMGQxZTZhMDk5
IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0LmgKKysr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5oCitAQCAtMTQsNSArMTQs
NiBAQAorICNpbXBvcnQgIlJUQ1ZpZGVvRGVjb2Rlci5oIgorIAorIFJUQ19PQkpDX0VYUE9SVAor
K19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0RlY29kZXJIMjY0
IikpKQorIEBpbnRlcmZhY2UgUlRDVmlkZW9EZWNvZGVySDI2NCA6IE5TT2JqZWN0IDxSVENWaWRl
b0RlY29kZXI+CisgQGVuZAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9E
ZWNvZGVySDI2NC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5tbQor
aW5kZXggM2JmYjkxOGJmNjEuLjFjMThmYWIxN2RmIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19j
b2RlYy9SVENWaWRlb0RlY29kZXJIMjY0Lm1tCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1Zp
ZGVvRGVjb2RlckgyNjQubW0KK0BAIC0xOSwxMCArMTksNiBAQAorICNpbXBvcnQgImhlbHBlcnMu
aCIKKyAjaW1wb3J0ICJoZWxwZXJzL3Njb3BlZF9jZnR5cGVyZWYuaCIKKyAKKy0jaWYgZGVmaW5l
ZChXRUJSVENfSU9TKQorLSNpbXBvcnQgImhlbHBlcnMvVUlEZXZpY2UrUlRDRGV2aWNlLmgiCist
I2VuZGlmCistCisgI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9f
ZXJyb3JfY29kZXMuaCIKKyAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisgI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKK0BAIC0yNTEsOSArMjQ3LDcgQEAgLSAodm9pZCljb25maWd1
cmVEZWNvbXByZXNzaW9uU2Vzc2lvbiB7CisgLSAodm9pZClkZXN0cm95RGVjb21wcmVzc2lvblNl
c3Npb24geworICAgaWYgKF9kZWNvbXByZXNzaW9uU2Vzc2lvbikgeworICNpZiBkZWZpbmVkKFdF
QlJUQ19JT1MpCistICAgIGlmIChbVUlEZXZpY2UgaXNJT1MxMU9yTGF0ZXJdKSB7CistICAgICAg
VlREZWNvbXByZXNzaW9uU2Vzc2lvbldhaXRGb3JBc3luY2hyb25vdXNGcmFtZXMoX2RlY29tcHJl
c3Npb25TZXNzaW9uKTsKKy0gICAgfQorKyAgICBWVERlY29tcHJlc3Npb25TZXNzaW9uV2FpdEZv
ckFzeW5jaHJvbm91c0ZyYW1lcyhfZGVjb21wcmVzc2lvblNlc3Npb24pOworICNlbmRpZgorICAg
ICBWVERlY29tcHJlc3Npb25TZXNzaW9uSW52YWxpZGF0ZShfZGVjb21wcmVzc2lvblNlc3Npb24p
OworICAgICBDRlJlbGVhc2UoX2RlY29tcHJlc3Npb25TZXNzaW9uKTsKK2RpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25l
bnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVv
X2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0LmgKK2luZGV4IGM2NDQwNWU0ZGFjLi41
ZjZmNzhkZmE5YSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVy
RmFjdG9yeUgyNjQuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJGYWN0
b3J5SDI2NC5oCitAQCAtMTQsNSArMTQsNiBAQAorICNpbXBvcnQgIlJUQ1ZpZGVvRW5jb2RlckZh
Y3RvcnkuaCIKKyAKKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRp
bWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQiKSkpCisgQGludGVyZmFjZSBS
VENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NCA6IE5TT2JqZWN0IDxSVENWaWRlb0VuY29kZXJGYWN0
b3J5PgorIEBlbmQKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2Rl
ckgyNjQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5oCitpbmRleCBh
OWMwNTU4MGE0MS4uNzcxNGIyNWVhYTQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JU
Q1ZpZGVvRW5jb2RlckgyNjQuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29k
ZXJIMjY0LmgKK0BAIC0xNSw2ICsxNSw3IEBACisgI2ltcG9ydCAiUlRDVmlkZW9FbmNvZGVyLmgi
CisgCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUo
IldLX1JUQ1ZpZGVvRW5jb2RlckgyNjQiKSkpCisgQGludGVyZmFjZSBSVENWaWRlb0VuY29kZXJI
MjY0IDogTlNPYmplY3QgPFJUQ1ZpZGVvRW5jb2Rlcj4KKyAKKyAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDb2RlY0luZm86KFJUQ1ZpZGVvQ29kZWNJbmZvICopY29kZWNJbmZvOworZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5tbSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9f
Y29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5tbQoraW5kZXggZjY2OTBiNmQ4NjEuLmExNDM1N2Zi
ODBjIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1t
CisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQubW0KK0BAIC05LDM5
ICs5LDY4IEBACisgICoKKyAgKi8KKyAKKy0jaW1wb3J0ICJSVENWaWRlb0VuY29kZXJIMjY0Lmgi
CisrI2ltcG9ydCAiV2ViUlRDL1JUQ1ZpZGVvQ29kZWNIMjY0LmgiCisgCisgI2ltcG9ydCA8Vmlk
ZW9Ub29sYm94L1ZpZGVvVG9vbGJveC5oPgorICNpbmNsdWRlIDx2ZWN0b3I+CisgCistI2lmIGRl
ZmluZWQoV0VCUlRDX0lPUykKKy0jaW1wb3J0ICJoZWxwZXJzL1VJRGV2aWNlK1JUQ0RldmljZS5o
IgorLSNlbmRpZgorLSNpbXBvcnQgIlJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5oIgorLSNpbXBv
cnQgIlJUQ0gyNjRQcm9maWxlTGV2ZWxJZC5oIgorLSNpbXBvcnQgImFwaS9wZWVyY29ubmVjdGlv
bi9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyK1ByaXZhdGUuaCIKKy0jaW1wb3J0ICJhcGkvcGVl
cmNvbm5lY3Rpb24vUlRDVmlkZW9Db2RlY0luZm8rUHJpdmF0ZS5oIgorLSNpbXBvcnQgImJhc2Uv
UlRDQ29kZWNTcGVjaWZpY0luZm8uaCIKKy0jaW1wb3J0ICJiYXNlL1JUQ0k0MjBCdWZmZXIuaCIK
Ky0jaW1wb3J0ICJiYXNlL1JUQ1ZpZGVvRW5jb2Rlci5oIgorLSNpbXBvcnQgImJhc2UvUlRDVmlk
ZW9GcmFtZS5oIgorLSNpbXBvcnQgImJhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIgorLSNpbXBv
cnQgImNvbXBvbmVudHMvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ0NWUGl4ZWxCdWZmZXIuaCIKKy0j
aW1wb3J0ICJoZWxwZXJzLmgiCistCisrI2ltcG9ydCAiUGVlckNvbm5lY3Rpb24vUlRDVmlkZW9D
b2RlYytQcml2YXRlLmgiCisrI2ltcG9ydCAiV2ViUlRDL1JUQ1ZpZGVvQ29kZWMuaCIKKysjaW1w
b3J0ICJXZWJSVEMvUlRDVmlkZW9GcmFtZS5oIgorKyNpbXBvcnQgIldlYlJUQy9SVENWaWRlb0Zy
YW1lQnVmZmVyLmgiCisgI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0L2gyNjRfYml0c3RyZWFt
X3BhcnNlci5oIgorICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9wcm9maWxlX2xldmVsX2lk
LmgiCisgI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL2JpdHJhdGVfYWRqdXN0ZXIuaCIK
KysjaW1wb3J0ICJoZWxwZXJzLmgiCisgI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVf
Y29tbW9uX3R5cGVzLmgiCisgI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUv
dmlkZW9fZXJyb3JfY29kZXMuaCIKKyAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCisgI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxz
LmgiCistI2luY2x1ZGUgInNkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvbmFsdV9yZXdy
aXRlci5oIgorKyNpbmNsdWRlICJzZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy9WaWRlb1Rvb2xi
b3gvbmFsdV9yZXdyaXRlci5oIgorKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9j
bG9jay5oIgorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvY29u
dmVydF9mcm9tLmgiCisgCistQGludGVyZmFjZSBSVENWaWRlb0VuY29kZXJIMjY0ICgpCisrI2lu
Y2x1ZGUgInNkay9XZWJLaXQvRW5jb2RlclV0aWxpdGllcy5oIgorKyNpbmNsdWRlICJzZGsvV2Vi
S2l0L1dlYktpdFV0aWxpdGllcy5oIgorKworKyNpbXBvcnQgPGRsZmNuLmg+CisrI2ltcG9ydCA8
b2JqYy9ydW50aW1lLmg+CisrCisrU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChWaWRlb1Rv
b2xCb3gpCisrU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoVmlkZW9Ub29sQm94LCBrVlRWaWRl
b0VuY29kZXJTcGVjaWZpY2F0aW9uX1VzYWdlLCBOU1N0cmluZyAqKQorKworKyNpZiAhRU5BQkxF
X1ZDUF9FTkNPREVSICYmICFkZWZpbmVkKFdFQlJUQ19JT1MpCisrc3RhdGljIGlubGluZSBib29s
IGlzU3RhbmRhcmRGcmFtZVNpemUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisrewor
KyAgICAvLyBGSVhNRTogRW52aXNpb24gcmVsYXhpbmcgdGhpcyBydWxlLCBzb21ldGhpbmcgbGlr
ZSB3aWR0aCBhbmQgaGVpZ2h0IGRpdmlkYWJsZSBieSA0IG9yIDggc2hvdWxkIGJlIGdvb2QgZW5v
dWdoLgorKyAgICBpZiAod2lkdGggPT0gMTI4MCkKKysgICAgICAgIHJldHVybiBoZWlnaHQgPT0g
NzIwOworKyAgICBpZiAod2lkdGggPT0gNzIwKQorKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSAx
MjgwOworKyAgICBpZiAod2lkdGggPT0gOTYwKQorKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSA1
NDA7CisrICAgIGlmICh3aWR0aCA9PSA1NDApCisrICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDk2
MDsKKysgICAgaWYgKHdpZHRoID09IDY0MCkKKysgICAgICAgIHJldHVybiBoZWlnaHQgPT0gNDgw
OworKyAgICBpZiAod2lkdGggPT0gNDgwKQorKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSA2NDA7
CisrICAgIGlmICh3aWR0aCA9PSAyODgpCisrICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDM1MjsK
KysgICAgaWYgKHdpZHRoID09IDM1MikKKysgICAgICAgIHJldHVybiBoZWlnaHQgPT0gMjg4Owor
KyAgICBpZiAod2lkdGggPT0gMzIwKQorKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSAyNDA7Cisr
ICAgIGlmICh3aWR0aCA9PSAyNDApCisrICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDMyMDsKKysg
ICAgcmV0dXJuIGZhbHNlOworK30KKysjZW5kaWYKKyAKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1
bnRpbWVfbmFtZSgiV0tfUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCIpKSkKKytAaW50ZXJmYWNl
IFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgOiBOU09iamVjdCA8UlRDVmlkZW9FbmNvZGVyPgor
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlkZW9Db2RlY0luZm8gKilj
b2RlY0luZm8gc2ltdWxjYXN0SW5kZXg6IChpbnQpaW5kZXg7CisgLSAodm9pZClmcmFtZVdhc0Vu
Y29kZWQ6KE9TU3RhdHVzKXN0YXR1cworICAgICAgICAgICAgICAgICAgIGZsYWdzOihWVEVuY29k
ZUluZm9GbGFncylpbmZvRmxhZ3MKKyAgICAgICAgICAgIHNhbXBsZUJ1ZmZlcjooQ01TYW1wbGVC
dWZmZXJSZWYpc2FtcGxlQnVmZmVyCitAQCAtNTEsNyArODAsNiBAQCAtICh2b2lkKWZyYW1lV2Fz
RW5jb2RlZDooT1NTdGF0dXMpc3RhdHVzCisgICAgICAgICAgICByZW5kZXJUaW1lTXM6KGludDY0
X3QpcmVuZGVyVGltZU1zCisgICAgICAgICAgICAgICB0aW1lc3RhbXA6KHVpbnQzMl90KXRpbWVz
dGFtcAorICAgICAgICAgICAgICAgIHJvdGF0aW9uOihSVENWaWRlb1JvdGF0aW9uKXJvdGF0aW9u
OworLQorIEBlbmQKKyAKKyBuYW1lc3BhY2UgeyAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorQEAg
LTcwLDcgKzk4LDcgQEAgY29uc3QgT1NUeXBlIGtOVjEyUGl4ZWxGb3JtYXQgPSBrQ1ZQaXhlbEZv
cm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlOworIC8vIFN0cnVjdCB0aGF0IHdl
IHBhc3MgdG8gdGhlIGVuY29kZXIgcGVyIGZyYW1lIHRvIGVuY29kZS4gV2UgcmVjZWl2ZSBpdCBh
Z2FpbgorIC8vIGluIHRoZSBlbmNvZGVyIGNhbGxiYWNrLgorIHN0cnVjdCBSVENGcmFtZUVuY29k
ZVBhcmFtcyB7CistICBSVENGcmFtZUVuY29kZVBhcmFtcyhSVENWaWRlb0VuY29kZXJIMjY0ICpl
LAorKyAgUlRDRnJhbWVFbmNvZGVQYXJhbXMoUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCAqZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NCAqY3NpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB3LAorICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCBoLAorQEAgLTg1LDcgKzExMyw3IEBAIHN0cnVjdCBSVENGcmFtZUVuY29kZVBh
cmFtcyB7CisgICAgIH0KKyAgIH0KKyAKKy0gIFJUQ1ZpZGVvRW5jb2RlckgyNjQgKmVuY29kZXI7
CisrICBSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICplbmNvZGVyOworICAgUlRDQ29kZWNTcGVj
aWZpY0luZm9IMjY0ICpjb2RlY1NwZWNpZmljSW5mbzsKKyAgIGludDMyX3Qgd2lkdGg7CisgICBp
bnQzMl90IGhlaWdodDsKK0BAIC0xNzMsOCArMjAxLDggQEAgdm9pZCBjb21wcmVzc2lvbk91dHB1
dENhbGxiYWNrKHZvaWQgKmVuY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByb3RhdGlvbjplbmNvZGVQYXJhbXMtPnJvdGF0aW9uXTsKKyB9CisgCistLy8gRXh0cmFjdCBW
aWRlb1Rvb2xib3ggcHJvZmlsZSBvdXQgb2YgdGhlIHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQuIElm
IHRoZXJlIGlzCistLy8gbm8gc3BlY2lmaWMgVmlkZW9Ub29sYm94IHByb2ZpbGUgZm9yIHRoZSBz
cGVjaWZpZWQgbGV2ZWwsIEF1dG9MZXZlbCB3aWxsIGJlCisrLy8gRXh0cmFjdCBWaWRlb1Rvb2xi
b3ggcHJvZmlsZSBvdXQgb2YgdGhlIGNyaWNrZXQ6OlZpZGVvQ29kZWMuIElmIHRoZXJlIGlzIG5v
CisrLy8gc3BlY2lmaWMgVmlkZW9Ub29sYm94IHByb2ZpbGUgZm9yIHRoZSBzcGVjaWZpZWQgbGV2
ZWwsIEF1dG9MZXZlbCB3aWxsIGJlCisgLy8gcmV0dXJuZWQuIFRoZSB1c2VyIG11c3QgaW5pdGlh
bGl6ZSB0aGUgZW5jb2RlciB3aXRoIGEgcmVzb2x1dGlvbiBhbmQKKyAvLyBmcmFtZXJhdGUgY29u
Zm9ybWluZyB0byB0aGUgc2VsZWN0ZWQgSDI2NCBsZXZlbCByZWdhcmRsZXNzLgorIENGU3RyaW5n
UmVmIEV4dHJhY3RQcm9maWxlKHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQgdmlkZW9Gb3JtYXQpIHsK
K0BAIC0yODAsMjMgKzMwOCwyNiBAQCBDRlN0cmluZ1JlZiBFeHRyYWN0UHJvZmlsZSh3ZWJydGM6
OlNkcFZpZGVvRm9ybWF0IHZpZGVvRm9ybWF0KSB7CisgfQorIH0gIC8vIG5hbWVzcGFjZQorIAor
LUBpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0VuY29kZXJIMjY0IHsKKytAaW1wbGVtZW50YXRpb24g
UlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCB7CisgICBSVENWaWRlb0NvZGVjSW5mbyAqX2NvZGVj
SW5mbzsKKyAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkJpdHJhdGVBZGp1c3Rlcj4gX2JpdHJh
dGVBZGp1c3RlcjsKKyAgIHVpbnQzMl90IF90YXJnZXRCaXRyYXRlQnBzOworLSAgdWludDMyX3Qg
X2VuY29kZXJGcmFtZVJhdGU7CisgICB1aW50MzJfdCBfZW5jb2RlckJpdHJhdGVCcHM7CisgICBS
VENIMjY0UGFja2V0aXphdGlvbk1vZGUgX3BhY2tldGl6YXRpb25Nb2RlOworICAgQ0ZTdHJpbmdS
ZWYgX3Byb2ZpbGU7CisgICBSVENWaWRlb0VuY29kZXJDYWxsYmFjayBfY2FsbGJhY2s7CisgICBp
bnQzMl90IF93aWR0aDsKKyAgIGludDMyX3QgX2hlaWdodDsKKy0gIFZUQ29tcHJlc3Npb25TZXNz
aW9uUmVmIF9jb21wcmVzc2lvblNlc3Npb247CisrICBDb21wcmVzc2lvblNlc3Npb25SZWYgX2Nv
bXByZXNzaW9uU2Vzc2lvbjsKKyAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIF9waXhlbEJ1ZmZlclBv
b2w7CisgICBSVENWaWRlb0NvZGVjTW9kZSBfbW9kZTsKKyAKKyAgIHdlYnJ0Yzo6SDI2NEJpdHN0
cmVhbVBhcnNlciBfaDI2NEJpdHN0cmVhbVBhcnNlcjsKKyAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+
IF9mcmFtZVNjYWxlQnVmZmVyOworKworKyAgd2VicnRjOjpWaWRlb0NvZGVjIF9uYXRpdmVWaWRl
b0NvZGVjOworKyAgaW50IF9zaW11bGNhc3RJbmRleDsKKysgIGJvb2wgX2Rpc2FibGVFbmNvZGlu
ZzsKKyB9CisgCisgLy8gLjUgaXMgc2V0IGFzIGEgbWluaW51bSB0byBwcmV2ZW50IG92ZXJjb21w
ZW5zYXRpbmcgZm9yIGxhcmdlIHRlbXBvcmFyeQorQEAgLTMwNiwxMiArMzM3LDEzIEBAIEBpbXBs
ZW1lbnRhdGlvbiBSVENWaWRlb0VuY29kZXJIMjY0IHsKKyAvLyBkcmFzdGljYWxseSByZWR1Y2Vk
IGJpdHJhdGUsIHNvIHdlIHdhbnQgdG8gYXZvaWQgdGhhdC4gSW4gc3RlYWR5IHN0YXRlCisgLy8g
Y29uZGl0aW9ucywgMC45NSBzZWVtcyB0byBnaXZlIHVzIGJldHRlciBvdmVyYWxsIGJpdHJhdGUg
b3ZlciBsb25nIHBlcmlvZHMKKyAvLyBvZiB0aW1lLgorLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aENvZGVjSW5mbzooUlRDVmlkZW9Db2RlY0luZm8gKiljb2RlY0luZm8geworKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlkZW9Db2RlY0luZm8gKiljb2RlY0luZm8gc2lt
dWxjYXN0SW5kZXg6KGludClpbmRleCB7CisgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewor
ICAgICBfY29kZWNJbmZvID0gY29kZWNJbmZvOworICAgICBfYml0cmF0ZUFkanVzdGVyLnJlc2V0
KG5ldyB3ZWJydGM6OkJpdHJhdGVBZGp1c3RlciguNSwgLjk1KSk7CisgICAgIF9wYWNrZXRpemF0
aW9uTW9kZSA9IFJUQ0gyNjRQYWNrZXRpemF0aW9uTW9kZU5vbkludGVybGVhdmVkOworICAgICBf
cHJvZmlsZSA9IEV4dHJhY3RQcm9maWxlKFtjb2RlY0luZm8gbmF0aXZlU2RwVmlkZW9Gb3JtYXRd
KTsKKysgICAgX3NpbXVsY2FzdEluZGV4ID0gaW5kZXg7CisgICAgIFJUQ19MT0coTFNfSU5GTykg
PDwgIlVzaW5nIHByb2ZpbGUgIiA8PCBDRlN0cmluZ1RvU3RyaW5nKF9wcm9maWxlKTsKKyAgICAg
UlRDX0NIRUNLKFtjb2RlY0luZm8ubmFtZSBpc0VxdWFsVG9TdHJpbmc6a1JUQ1ZpZGVvQ29kZWNI
MjY0TmFtZV0pOworICAgfQorQEAgLTMzMCwxMSArMzYyLDEzIEBAIC0gKE5TSW50ZWdlcilzdGFy
dEVuY29kZVdpdGhTZXR0aW5nczooUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MgKilzZXR0aW5ncwor
ICAgX3dpZHRoID0gc2V0dGluZ3Mud2lkdGg7CisgICBfaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0
OworICAgX21vZGUgPSBzZXR0aW5ncy5tb2RlOworKyAgX25hdGl2ZVZpZGVvQ29kZWMgPSBzZXR0
aW5ncy5uYXRpdmVWaWRlb0NvZGVjOworKworKyAgUlRDX0RDSEVDSyhfbmF0aXZlVmlkZW9Db2Rl
Yy5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMgIT0gMSk7CisgCisgICAvLyBXZSBjYW4gb25seSBz
ZXQgYXZlcmFnZSBiaXRyYXRlIG9uIHRoZSBIVyBlbmNvZGVyLgorLSAgX3RhcmdldEJpdHJhdGVC
cHMgPSBzZXR0aW5ncy5zdGFydEJpdHJhdGUgKiAxMDAwOyAgLy8gc3RhcnRCaXRyYXRlIGlzIGlu
IGticHMuCisrICBfdGFyZ2V0Qml0cmF0ZUJwcyA9IHNldHRpbmdzLnN0YXJ0Qml0cmF0ZTsKKyAg
IF9iaXRyYXRlQWRqdXN0ZXItPlNldFRhcmdldEJpdHJhdGVCcHMoX3RhcmdldEJpdHJhdGVCcHMp
OworLSAgX2VuY29kZXJGcmFtZVJhdGUgPSBzZXR0aW5ncy5tYXhGcmFtZXJhdGU7CisgCisgICAv
LyBUT0RPKHRrY2hpbik6IFRyeSBzZXR0aW5nIHBheWxvYWQgc2l6ZSB2aWEKKyAgIC8vIGtWVENv
bXByZXNzaW9uUHJvcGVydHlLZXlfTWF4SDI2NFNsaWNlQnl0ZXMuCitAQCAtMzU3LDYgKzM5MSwx
MCBAQCAtIChOU0ludGVnZXIpZW5jb2RlOihSVENWaWRlb0ZyYW1lICopZnJhbWUKKyAgICAgaXNL
ZXlmcmFtZVJlcXVpcmVkID0gWUVTOworICAgfQorIAorKyAgaWYgKF9kaXNhYmxlRW5jb2Rpbmcp
IHsKKysgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKKysgIH0KKysKKyAgIENW
UGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxscHRyOworICAgaWYgKFtmcmFtZS5idWZm
ZXIgaXNLaW5kT2ZDbGFzczpbUlRDQ1ZQaXhlbEJ1ZmZlciBjbGFzc11dKSB7CisgICAgIC8vIE5h
dGl2ZSBmcmFtZSBidWZmZXIKK0BAIC00MzQsOSArNDcyLDkgQEAgLSAoTlNJbnRlZ2VyKWVuY29k
ZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1lCisgICBlbmNvZGVQYXJhbXMtPmNvZGVjU3BlY2lmaWNJ
bmZvLnBhY2tldGl6YXRpb25Nb2RlID0gX3BhY2tldGl6YXRpb25Nb2RlOworIAorICAgLy8gVXBk
YXRlIHRoZSBiaXRyYXRlIGlmIG5lZWRlZC4KKy0gIFtzZWxmIHNldEJpdHJhdGVCcHM6X2JpdHJh
dGVBZGp1c3Rlci0+R2V0QWRqdXN0ZWRCaXRyYXRlQnBzKCkgZnJhbWVSYXRlOl9lbmNvZGVyRnJh
bWVSYXRlXTsKKysgIFtzZWxmIHNldEJpdHJhdGVCcHM6X2JpdHJhdGVBZGp1c3Rlci0+R2V0QWRq
dXN0ZWRCaXRyYXRlQnBzKCldOworIAorLSAgT1NTdGF0dXMgc3RhdHVzID0gVlRDb21wcmVzc2lv
blNlc3Npb25FbmNvZGVGcmFtZShfY29tcHJlc3Npb25TZXNzaW9uLAorKyAgT1NTdGF0dXMgc3Rh
dHVzID0gQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUoX2NvbXByZXNzaW9uU2Vzc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4
ZWxCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByZXNlbnRhdGlvblRpbWVTdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga0NNVGltZUludmFsaWQsCitAQCAtNDY3LDEwICs1
MDUsMTAgQEAgLSAodm9pZClzZXRDYWxsYmFjazooUlRDVmlkZW9FbmNvZGVyQ2FsbGJhY2spY2Fs
bGJhY2sgeworICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgfQorIAorLS0gKGludClzZXRCaXRy
YXRlOih1aW50MzJfdCliaXRyYXRlS2JpdCBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZSB7
CistICBfdGFyZ2V0Qml0cmF0ZUJwcyA9IDEwMDAgKiBiaXRyYXRlS2JpdDsKKystIChpbnQpc2V0
Qml0cmF0ZToodWludDMyX3QpYml0cmF0ZUJwcyBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0
ZSB7CisrICBfdGFyZ2V0Qml0cmF0ZUJwcyA9IGJpdHJhdGVCcHM7CisgICBfYml0cmF0ZUFkanVz
dGVyLT5TZXRUYXJnZXRCaXRyYXRlQnBzKF90YXJnZXRCaXRyYXRlQnBzKTsKKy0gIFtzZWxmIHNl
dEJpdHJhdGVCcHM6X2JpdHJhdGVBZGp1c3Rlci0+R2V0QWRqdXN0ZWRCaXRyYXRlQnBzKCkgZnJh
bWVSYXRlOmZyYW1lcmF0ZV07CisrICBbc2VsZiBzZXRCaXRyYXRlQnBzOl9iaXRyYXRlQWRqdXN0
ZXItPkdldEFkanVzdGVkQml0cmF0ZUJwcygpXTsKKyAgIHJldHVybiBXRUJSVENfVklERU9fQ09E
RUNfT0s7CisgfQorIAorQEAgLTUwMyw2ICs1NDEsMTEgQEAgLSAoQk9PTClyZXNldENvbXByZXNz
aW9uU2Vzc2lvbklmTmVlZGVkV2l0aEZyYW1lOihSVENWaWRlb0ZyYW1lICopZnJhbWUgeworICAg
T1NUeXBlIGZyYW1lUGl4ZWxGb3JtYXQgPSBbc2VsZiBwaXhlbEZvcm1hdE9mRnJhbWU6ZnJhbWVd
OworIAorICAgaWYgKF9jb21wcmVzc2lvblNlc3Npb24pIHsKKysjaWYgZGVmaW5lZChXRUJSVENf
V0VCS0lUX0JVSUxEKQorKyAgICBpZiAoIV9waXhlbEJ1ZmZlclBvb2wpIHsKKysgICAgICByZXR1
cm4gTk87CisrICAgIH0KKysjZW5kaWYKKyAgICAgLy8gVGhlIHBvb2wgYXR0cmlidXRlIGBrQ1ZQ
aXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleWAgY2FuIGNvbnRhaW4gZWl0aGVyIGFuIGFycmF5
IG9mIHBpeGVsCisgICAgIC8vIGZvcm1hdHMgb3IgYSBzaW5nbGUgcGl4ZWwgZm9ybWF0LgorICAg
ICBOU0RpY3Rpb25hcnkgKnBvb2xBdHRyaWJ1dGVzID0KK0BAIC01MTYsNiArNTU5LDExIEBAIC0g
KEJPT0wpcmVzZXRDb21wcmVzc2lvblNlc3Npb25JZk5lZWRlZFdpdGhGcmFtZTooUlRDVmlkZW9G
cmFtZSAqKWZyYW1lIHsKKyAgICAgICBjb21wcmVzc2lvblNlc3Npb25QaXhlbEZvcm1hdHMgPSBA
WyAoTlNOdW1iZXIgKilwaXhlbEZvcm1hdHMgXTsKKyAgICAgfQorIAorKyAgICBpZiAoW2ZyYW1l
LmJ1ZmZlciBpc0tpbmRPZkNsYXNzOltSVENDVlBpeGVsQnVmZmVyIGNsYXNzXV0pIHsKKysgICAg
ICBSVENDVlBpeGVsQnVmZmVyICpydGNQaXhlbEJ1ZmZlciA9IChSVENDVlBpeGVsQnVmZmVyICop
ZnJhbWUuYnVmZmVyOworKyAgICAgIGZyYW1lUGl4ZWxGb3JtYXQgPSBDVlBpeGVsQnVmZmVyR2V0
UGl4ZWxGb3JtYXRUeXBlKHJ0Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyKTsKKysgICAgfQorKwor
ICAgICBpZiAoIVtjb21wcmVzc2lvblNlc3Npb25QaXhlbEZvcm1hdHMKKyAgICAgICAgICAgICBj
b250YWluc09iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmc6ZnJhbWVQaXhlbEZvcm1hdF1d
KSB7CisgICAgICAgcmVzZXRDb21wcmVzc2lvblNlc3Npb24gPSBZRVM7CitAQCAtNTMzLDYgKzU4
MSw3IEBAIC0gKEJPT0wpcmVzZXRDb21wcmVzc2lvblNlc3Npb25JZk5lZWRlZFdpdGhGcmFtZToo
UlRDVmlkZW9GcmFtZSAqKWZyYW1lIHsKKyAKKyAtIChpbnQpcmVzZXRDb21wcmVzc2lvblNlc3Np
b25XaXRoUGl4ZWxGb3JtYXQ6KE9TVHlwZSlmcmFtZVBpeGVsRm9ybWF0IHsKKyAgIFtzZWxmIGRl
c3Ryb3lDb21wcmVzc2lvblNlc3Npb25dOworKyAgX2Rpc2FibGVFbmNvZGluZyA9IGZhbHNlOwor
IAorICAgLy8gU2V0IHNvdXJjZSBpbWFnZSBidWZmZXIgYXR0cmlidXRlcy4gVGhlc2UgYXR0cmli
dXRlcyB3aWxsIGJlIHByZXNlbnQgb24KKyAgIC8vIGJ1ZmZlcnMgcmV0cmlldmVkIGZyb20gdGhl
IGVuY29kZXIncyBwaXhlbCBidWZmZXIgcG9vbC4KK0BAIC01NTksMjIgKzYwOCwyNiBAQCAtIChp
bnQpcmVzZXRDb21wcmVzc2lvblNlc3Npb25XaXRoUGl4ZWxGb3JtYXQ6KE9TVHlwZSlmcmFtZVBp
eGVsRm9ybWF0IHsKKyAgICAgQ0ZSZWxlYXNlKHBpeGVsRm9ybWF0KTsKKyAgICAgcGl4ZWxGb3Jt
YXQgPSBudWxscHRyOworICAgfQorLSAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBlbmNvZGVyX3Nw
ZWNzID0gbnVsbHB0cjsKKy0jaWYgZGVmaW5lZChXRUJSVENfTUFDKSAmJiAhZGVmaW5lZChXRUJS
VENfSU9TKQorKyAgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjcyA9IG51bGxwdHI7CisrI2lm
ICFkZWZpbmVkKFdFQlJUQ19JT1MpCisrICBhdXRvIHVzZUhhcmR3YXJlRW5jb2RlciA9IHdlYnJ0
Yzo6aXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZC
b29sZWFuRmFsc2U7CisgICAvLyBDdXJyZW50bHkgaHcgYWNjbCBpcyBzdXBwb3J0ZWQgYWJvdmUg
MzYwcCBvbiBtYWMsIGJlbG93IDM2MHAKKyAgIC8vIHRoZSBjb21wcmVzc2lvbiBzZXNzaW9uIHdp
bGwgYmUgY3JlYXRlZCB3aXRoIGh3IGFjY2wgZGlzYWJsZWQuCistICBlbmNvZGVyX3NwZWNzID0g
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgKKy0gICAgICBudWxscHRyLCAxLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsK
Ky0gIENGRGljdGlvbmFyeVNldFZhbHVlKGVuY29kZXJfc3BlY3MsCistICAgICAgICAgICAgICAg
ICAgICAgICBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxl
cmF0ZWRWaWRlb0VuY29kZXIsCistICAgICAgICAgICAgICAgICAgICAgICBrQ0ZCb29sZWFuVHJ1
ZSk7CisrICBDRlR5cGVSZWYgc2Vzc2lvbktleXNbXSA9IHsga1ZUVmlkZW9FbmNvZGVyU3BlY2lm
aWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyLCBrVlRWaWRlb0Vu
Y29kZXJTcGVjaWZpY2F0aW9uX1JlcXVpcmVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVy
LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIH07CisrICBDRlR5cGVSZWYgc2Vz
c2lvblZhbHVlc1tdID0geyB1c2VIYXJkd2FyZUVuY29kZXIsIHVzZUhhcmR3YXJlRW5jb2Rlciwg
a0NGQm9vbGVhblRydWUgfTsKKysgIGVuY29kZXJTcGVjcyA9IENGRGljdGlvbmFyeUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uS2V5cywgc2Vzc2lvblZhbHVlcywgMywgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cyk7CisrI2Vsc2UKKysgIENGVHlwZVJlZiBzZXNzaW9uS2V5c1tdID0geyBrVlRDb21wcmVzc2lv
blByb3BlcnR5S2V5X1JlYWxUaW1lIH07CisrICBDRlR5cGVSZWYgc2Vzc2lvblZhbHVlc1tdID0g
eyBrQ0ZCb29sZWFuVHJ1ZSB9OworKyAgZW5jb2RlclNwZWNzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb25LZXlzLCBzZXNzaW9uVmFsdWVzLCAxLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKTsKKyAjZW5kaWYKKysKKyAgIE9TU3RhdHVzIHN0YXR1cyA9CistICAgICAgVlRDb21wcmVz
c2lvblNlc3Npb25DcmVhdGUobnVsbHB0ciwgIC8vIHVzZSBkZWZhdWx0IGFsbG9jYXRvcgorKyAg
ICAgIENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZShudWxscHRyLCAgLy8gdXNlIGRlZmF1bHQgYWxs
b2NhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9oZWlnaHQsCistICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga0NNVmlkZW9Db2RlY1R5cGVfSDI2NCwKKy0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbmNvZGVyX3NwZWNzLCAgLy8gdXNlIGhhcmR3YXJlIGFjY2VsZXJh
dGVkIGVuY29kZXIgaWYgYXZhaWxhYmxlCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga0NvZGVjVHlwZUgyNjQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5j
b2RlclNwZWNzLCAgLy8gdXNlIGhhcmR3YXJlIGFjY2VsZXJhdGVkIGVuY29kZXIgaWYgYXZhaWxh
YmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlQXR0cmlidXRlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCAgLy8gdXNlIGRlZmF1
bHQgY29tcHJlc3NlZCBkYXRhIGFsbG9jYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2ssCitAQCAtNTg0LDMyICs2MzcsMTEzIEBA
IC0gKGludClyZXNldENvbXByZXNzaW9uU2Vzc2lvbldpdGhQaXhlbEZvcm1hdDooT1NUeXBlKWZy
YW1lUGl4ZWxGb3JtYXQgeworICAgICBDRlJlbGVhc2Uoc291cmNlQXR0cmlidXRlcyk7CisgICAg
IHNvdXJjZUF0dHJpYnV0ZXMgPSBudWxscHRyOworICAgfQorLSAgaWYgKGVuY29kZXJfc3BlY3Mp
IHsKKy0gICAgQ0ZSZWxlYXNlKGVuY29kZXJfc3BlY3MpOworLSAgICBlbmNvZGVyX3NwZWNzID0g
bnVsbHB0cjsKKysgIGlmIChlbmNvZGVyU3BlY3MpIHsKKysgICAgQ0ZSZWxlYXNlKGVuY29kZXJT
cGVjcyk7CisrICAgIGVuY29kZXJTcGVjcyA9IG51bGxwdHI7CisgICB9CisrCisrI2lmIEVOQUJM
RV9WQ1BfRU5DT0RFUiB8fCBkZWZpbmVkKFdFQlJUQ19JT1MpCisgICBpZiAoc3RhdHVzICE9IG5v
RXJyKSB7CisgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGNvbXBy
ZXNzaW9uIHNlc3Npb246ICIgPDwgc3RhdHVzOworICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NP
REVDX0VSUk9SOworICAgfQorKyNlbmRpZgorICNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpICYmICFk
ZWZpbmVkKFdFQlJUQ19JT1MpCisgICBDRkJvb2xlYW5SZWYgaHdhY2NsX2VuYWJsZWQgPSBudWxs
cHRyOworLSAgc3RhdHVzID0gVlRTZXNzaW9uQ29weVByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Np
b24sCisrICBpZiAoc3RhdHVzID09IG5vRXJyKSB7CisrICAgIHN0YXR1cyA9IFZUU2Vzc2lvbkNv
cHlQcm9wZXJ0eShfY29tcHJlc3Npb25TZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfVXNpbmdIYXJkd2FyZUFjY2VsZXJh
dGVkVmlkZW9FbmNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmh3YWNjbF9lbmFibGVkKTsK
KysgIH0KKyAgIGlmIChzdGF0dXMgPT0gbm9FcnIgJiYgKENGQm9vbGVhbkdldFZhbHVlKGh3YWNj
bF9lbmFibGVkKSkpIHsKKyAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQ29tcHJlc3Npb24gc2Vz
c2lvbiBjcmVhdGVkIHdpdGggaHcgYWNjbCBlbmFibGVkIjsKKyAgIH0gZWxzZSB7CisgICAgIFJU
Q19MT0coTFNfSU5GTykgPDwgIkNvbXByZXNzaW9uIHNlc3Npb24gY3JlYXRlZCB3aXRoIGh3IGFj
Y2wgZGlzYWJsZWQiOworKworKyNpZiAhRU5BQkxFX1ZDUF9FTkNPREVSICYmICFkZWZpbmVkKFdF
QlJUQ19JT1MpCisrICAgIGlmICghaXNTdGFuZGFyZEZyYW1lU2l6ZShfd2lkdGgsIF9oZWlnaHQp
KSB7CisrICAgICAgX2Rpc2FibGVFbmNvZGluZyA9IHRydWU7CisrICAgICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIlVzaW5nIEgyNjQgc29mdHdhcmUgZW5jb2RlciB3aXRoIG5vbiBzdGFuZGFyZCBz
aXplIGlzIG5vdCBzdXBwb3J0ZWQiOworKyAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNf
RVJST1I7CisrICAgIH0KKysKKysgICAgaWYgKCFnZXRrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0
aW9uX1VzYWdlKCkpIHsKKysgICAgICBfZGlzYWJsZUVuY29kaW5nID0gdHJ1ZTsKKysgICAgICBS
VENfTE9HKExTX0VSUk9SKSA8PCAiUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCBjYW5ub3QgY3Jl
YXRlIGEgSDI2NCBzb2Z0d2FyZSBlbmNvZGVyIjsKKysgICAgICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX0VSUk9SOworKyAgICB9CisrCisrICAgIENGRGljdGlvbmFyeVJlZiBpb1N1cmZhY2VW
YWx1ZSA9IENyZWF0ZUNGVHlwZURpY3Rpb25hcnkobnVsbHB0ciwgbnVsbHB0ciwgMCk7CisrICAg
IGludDY0X3QgcGl4ZWxGb3JtYXRUeXBlID0gZnJhbWVQaXhlbEZvcm1hdDsKKysgICAgQ0ZOdW1i
ZXJSZWYgcGl4ZWxGb3JtYXQgPSBDRk51bWJlckNyZWF0ZShudWxscHRyLCBrQ0ZOdW1iZXJMb25n
VHlwZSwgJnBpeGVsRm9ybWF0VHlwZSk7CisrCisrICAgIGNvbnN0IHNpemVfdCBhdHRyaWJ1dGVz
U2l6ZSA9IDM7CisrICAgIENGVHlwZVJlZiBrZXlzW2F0dHJpYnV0ZXNTaXplXSA9IHsKKysgICAg
ICBrQ1ZQaXhlbEJ1ZmZlck9wZW5HTENvbXBhdGliaWxpdHlLZXksCisrICAgICAga0NWUGl4ZWxC
dWZmZXJJT1N1cmZhY2VQcm9wZXJ0aWVzS2V5LAorKyAgICAgIGtDVlBpeGVsQnVmZmVyUGl4ZWxG
b3JtYXRUeXBlS2V5CisrICAgIH07CisrICAgIENGVHlwZVJlZiB2YWx1ZXNbYXR0cmlidXRlc1Np
emVdID0geworKyAgICAgIGtDRkJvb2xlYW5UcnVlLAorKyAgICAgIGlvU3VyZmFjZVZhbHVlLAor
KyAgICAgIHBpeGVsRm9ybWF0fTsKKysgICAgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUF0dHJpYnV0
ZXMgPSBDcmVhdGVDRlR5cGVEaWN0aW9uYXJ5KGtleXMsIHZhbHVlcywgYXR0cmlidXRlc1NpemUp
OworKworKyAgICBpZiAoaW9TdXJmYWNlVmFsdWUpIHsKKysgICAgICBDRlJlbGVhc2UoaW9TdXJm
YWNlVmFsdWUpOworKyAgICAgIGlvU3VyZmFjZVZhbHVlID0gbnVsbHB0cjsKKysgICAgfQorKyAg
ICBpZiAocGl4ZWxGb3JtYXQpIHsKKysgICAgICBDRlJlbGVhc2UocGl4ZWxGb3JtYXQpOworKyAg
ICAgIHBpeGVsRm9ybWF0ID0gbnVsbHB0cjsKKysgICAgfQorKworKyAgICBDRk11dGFibGVEaWN0
aW9uYXJ5UmVmIGVuY29kZXJTcGVjcyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUobnVsbHB0
ciwgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyk7CisrICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGVuY29kZXJTcGVjcywg
a1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlk
ZW9FbmNvZGVyLCBrQ0ZCb29sZWFuRmFsc2UpOworKyAgICBpbnQgdXNhZ2VWYWx1ZSA9IDE7Cisr
ICAgIENGTnVtYmVyUmVmIHVzYWdlID0gQ0ZOdW1iZXJDcmVhdGUobnVsbHB0ciwga0NGTnVtYmVy
SW50VHlwZSwgJnVzYWdlVmFsdWUpOworKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShlbmNvZGVy
U3BlY3MsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilnZXRrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0
aW9uX1VzYWdlKCksIHVzYWdlKTsKKysKKysgICAgaWYgKHVzYWdlKSB7CisrICAgICAgQ0ZSZWxl
YXNlKHVzYWdlKTsKKysgICAgICB1c2FnZSA9IG51bGxwdHI7CisrICAgIH0KKysKKysgICAgW3Nl
bGYgZGVzdHJveUNvbXByZXNzaW9uU2Vzc2lvbl07CisrCisrICAgIE9TU3RhdHVzIHN0YXR1cyA9
CisrICAgICAgQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKG51bGxwdHIsICAvLyB1c2UgZGVmYXVs
dCBhbGxvY2F0b3IKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfd2lkdGgsCisr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2hlaWdodCwKKysgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrQ29kZWNUeXBlSDI2NCwKKysgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmNvZGVyU3BlY3MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc291cmNlQXR0cmlidXRlcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLCAgLy8gdXNlIGRlZmF1bHQgY29tcHJlc3NlZCBkYXRhIGFsbG9jYXRvcgorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2ss
CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKysgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmX2NvbXByZXNzaW9uU2Vzc2lvbik7CisrICAgIGlmIChz
b3VyY2VBdHRyaWJ1dGVzKSB7CisrICAgICAgQ0ZSZWxlYXNlKHNvdXJjZUF0dHJpYnV0ZXMpOwor
KyAgICAgIHNvdXJjZUF0dHJpYnV0ZXMgPSBudWxscHRyOworKyAgICB9CisrICAgIGlmIChlbmNv
ZGVyU3BlY3MpIHsKKysgICAgICBDRlJlbGVhc2UoZW5jb2RlclNwZWNzKTsKKysgICAgICBlbmNv
ZGVyU3BlY3MgPSBudWxscHRyOworKyAgICB9CisrICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsK
KysgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworKyAgICB9CisrI2VuZGlm
CisgICB9CisgI2VuZGlmCisgICBbc2VsZiBjb25maWd1cmVDb21wcmVzc2lvblNlc3Npb25dOwor
IAorKyNpZiAhZGVmaW5lZChXRUJSVENfV0VCS0lUX0JVSUxEKQorICAgLy8gVGhlIHBpeGVsIGJ1
ZmZlciBwb29sIGlzIGRlcGVuZGVudCBvbiB0aGUgY29tcHJlc3Npb24gc2Vzc2lvbiBzbyBpZiB0
aGUgc2Vzc2lvbiBpcyByZXNldCwgdGhlCisgICAvLyBwb29sIHNob3VsZCBiZSByZXNldCBhcyB3
ZWxsLgorLSAgX3BpeGVsQnVmZmVyUG9vbCA9IFZUQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxC
dWZmZXJQb29sKF9jb21wcmVzc2lvblNlc3Npb24pOworLQorKyAgX3BpeGVsQnVmZmVyUG9vbCA9
IENvbXByZXNzaW9uU2Vzc2lvbkdldFBpeGVsQnVmZmVyUG9vbChfY29tcHJlc3Npb25TZXNzaW9u
KTsKKysjZW5kaWYKKyAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CisgfQorIAorQEAg
LTYxOCw3ICs3NTIsMTEgQEAgLSAodm9pZCljb25maWd1cmVDb21wcmVzc2lvblNlc3Npb24gewor
ICAgU2V0VlRTZXNzaW9uUHJvcGVydHkoX2NvbXByZXNzaW9uU2Vzc2lvbiwga1ZUQ29tcHJlc3Np
b25Qcm9wZXJ0eUtleV9SZWFsVGltZSwgdHJ1ZSk7CisgICBTZXRWVFNlc3Npb25Qcm9wZXJ0eShf
Y29tcHJlc3Npb25TZXNzaW9uLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1Byb2ZpbGVMZXZl
bCwgX3Byb2ZpbGUpOworICAgU2V0VlRTZXNzaW9uUHJvcGVydHkoX2NvbXByZXNzaW9uU2Vzc2lv
biwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9BbGxvd0ZyYW1lUmVvcmRlcmluZywgZmFsc2Up
OworLSAgW3NlbGYgc2V0RW5jb2RlckJpdHJhdGVCcHM6X3RhcmdldEJpdHJhdGVCcHMgZnJhbWVS
YXRlOl9lbmNvZGVyRnJhbWVSYXRlXTsKKysjaWYgRU5BQkxFX1ZDUF9FTkNPREVSCisrICBpZiAo
YXV0byBrZXkgPSBnZXRrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX1VzYWdlKCkpCisrICAg
ICAgU2V0VlRTZXNzaW9uUHJvcGVydHkoX2NvbXByZXNzaW9uU2Vzc2lvbiwgKF9fYnJpZGdlIENG
U3RyaW5nUmVmKWtleSwgMSk7CisrI2VuZGlmCisrICBbc2VsZiBzZXRFbmNvZGVyQml0cmF0ZUJw
czpfdGFyZ2V0Qml0cmF0ZUJwc107CisgICAvLyBUT0RPKHRrY2hpbik6IExvb2sgYXQgZW50cm9w
eSBtb2RlIGFuZCBjb2xvcnNwYWNlIG1hdHJpY2VzLgorICAgLy8gVE9ETyh0a2NoaW4pOiBJbnZl
c3RpZ2F0ZSB0byBzZWUgaWYgdGhlcmUncyBhbnkgd2F5IHRvIG1ha2UgdGhpcyB3b3JrLgorICAg
Ly8gTWF5IG5lZWQgaXQgdG8gaW50ZXJvcCB3aXRoIEFuZHJvaWQuIEN1cnJlbnRseSB0aGlzIGNh
bGwganVzdCBmYWlscy4KK0BAIC02MzUsNyArNzczLDcgQEAgLSAodm9pZCljb25maWd1cmVDb21w
cmVzc2lvblNlc3Npb24geworIAorIC0gKHZvaWQpZGVzdHJveUNvbXByZXNzaW9uU2Vzc2lvbiB7
CisgICBpZiAoX2NvbXByZXNzaW9uU2Vzc2lvbikgeworLSAgICBWVENvbXByZXNzaW9uU2Vzc2lv
bkludmFsaWRhdGUoX2NvbXByZXNzaW9uU2Vzc2lvbik7CisrICAgIENvbXByZXNzaW9uU2Vzc2lv
bkludmFsaWRhdGUoX2NvbXByZXNzaW9uU2Vzc2lvbik7CisgICAgIENGUmVsZWFzZShfY29tcHJl
c3Npb25TZXNzaW9uKTsKKyAgICAgX2NvbXByZXNzaW9uU2Vzc2lvbiA9IG51bGxwdHI7CisgICAg
IF9waXhlbEJ1ZmZlclBvb2wgPSBudWxscHRyOworQEAgLTY0NiwxNyArNzg0LDE1IEBAIC0gKE5T
U3RyaW5nICopaW1wbGVtZW50YXRpb25OYW1lIHsKKyAgIHJldHVybiBAIlZpZGVvVG9vbGJveCI7
CisgfQorIAorLS0gKHZvaWQpc2V0Qml0cmF0ZUJwczoodWludDMyX3QpYml0cmF0ZUJwcyBmcmFt
ZVJhdGU6KHVpbnQzMl90KWZyYW1lUmF0ZSB7CistICBpZiAoX2VuY29kZXJCaXRyYXRlQnBzICE9
IGJpdHJhdGVCcHMgfHwgX2VuY29kZXJGcmFtZVJhdGUgIT0gZnJhbWVSYXRlKSB7CistICAgIFtz
ZWxmIHNldEVuY29kZXJCaXRyYXRlQnBzOmJpdHJhdGVCcHMgZnJhbWVSYXRlOmZyYW1lUmF0ZV07
CisrLSAodm9pZClzZXRCaXRyYXRlQnBzOih1aW50MzJfdCliaXRyYXRlQnBzIHsKKysgIGlmIChf
ZW5jb2RlckJpdHJhdGVCcHMgIT0gYml0cmF0ZUJwcykgeworKyAgICBbc2VsZiBzZXRFbmNvZGVy
Qml0cmF0ZUJwczpiaXRyYXRlQnBzXTsKKyAgIH0KKyB9CisgCistLSAodm9pZClzZXRFbmNvZGVy
Qml0cmF0ZUJwczoodWludDMyX3QpYml0cmF0ZUJwcyBmcmFtZVJhdGU6KHVpbnQzMl90KWZyYW1l
UmF0ZSB7CisrLSAodm9pZClzZXRFbmNvZGVyQml0cmF0ZUJwczoodWludDMyX3QpYml0cmF0ZUJw
cyB7CisgICBpZiAoX2NvbXByZXNzaW9uU2Vzc2lvbikgeworICAgICBTZXRWVFNlc3Npb25Qcm9w
ZXJ0eShfY29tcHJlc3Npb25TZXNzaW9uLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0F2ZXJh
Z2VCaXRSYXRlLCBiaXRyYXRlQnBzKTsKKy0gICAgU2V0VlRTZXNzaW9uUHJvcGVydHkoCistICAg
ICAgICBfY29tcHJlc3Npb25TZXNzaW9uLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVj
dGVkRnJhbWVSYXRlLCBmcmFtZVJhdGUpOworIAorICAgICAvLyBUT0RPKHRrY2hpbik6IEFkZCBh
IGhlbHBlciBtZXRob2QgdG8gc2V0IGFycmF5IHZhbHVlLgorICAgICBpbnQ2NF90IGRhdGFMaW1p
dEJ5dGVzUGVyU2Vjb25kVmFsdWUgPQorQEAgLTY2OCw3ICs4MDQsNyBAQCAtICh2b2lkKXNldEVu
Y29kZXJCaXRyYXRlQnBzOih1aW50MzJfdCliaXRyYXRlQnBzIGZyYW1lUmF0ZToodWludDMyX3Qp
ZnJhbWVSYXRlCisgICAgICAgICBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
Q0ZOdW1iZXJTSW50NjRUeXBlLCAmb25lU2Vjb25kVmFsdWUpOworICAgICBjb25zdCB2b2lkICpu
dW1zWzJdID0ge2J5dGVzUGVyU2Vjb25kLCBvbmVTZWNvbmR9OworICAgICBDRkFycmF5UmVmIGRh
dGFSYXRlTGltaXRzID0gQ0ZBcnJheUNyZWF0ZShudWxscHRyLCBudW1zLCAyLCAma0NGVHlwZUFy
cmF5Q2FsbEJhY2tzKTsKKy0gICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVy
dHkoCisrICAgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5
KAorICAgICAgICAgX2NvbXByZXNzaW9uU2Vzc2lvbiwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9EYXRhUmF0ZUxpbWl0cywgZGF0YVJhdGVMaW1pdHMpOworICAgICBpZiAoYnl0ZXNQZXJTZWNv
bmQpIHsKKyAgICAgICBDRlJlbGVhc2UoYnl0ZXNQZXJTZWNvbmQpOworQEAgLTY4MCwxMSArODE2
LDEwIEBAIC0gKHZvaWQpc2V0RW5jb2RlckJpdHJhdGVCcHM6KHVpbnQzMl90KWJpdHJhdGVCcHMg
ZnJhbWVSYXRlOih1aW50MzJfdClmcmFtZVJhdGUKKyAgICAgICBDRlJlbGVhc2UoZGF0YVJhdGVM
aW1pdHMpOworICAgICB9CisgICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKKy0gICAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHNldCBkYXRhIHJhdGUgbGltaXQgd2l0aCBjb2Rl
OiAiIDw8IHN0YXR1czsKKysgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHNl
dCBkYXRhIHJhdGUgbGltaXQiOworICAgICB9CisgCisgICAgIF9lbmNvZGVyQml0cmF0ZUJwcyA9
IGJpdHJhdGVCcHM7CistICAgIF9lbmNvZGVyRnJhbWVSYXRlID0gZnJhbWVSYXRlOworICAgfQor
IH0KKyAKK0BAIC02OTgsNyArODMzLDcgQEAgLSAodm9pZClmcmFtZVdhc0VuY29kZWQ6KE9TU3Rh
dHVzKXN0YXR1cworICAgICAgICAgICAgICAgdGltZXN0YW1wOih1aW50MzJfdCl0aW1lc3RhbXAK
KyAgICAgICAgICAgICAgICByb3RhdGlvbjooUlRDVmlkZW9Sb3RhdGlvbilyb3RhdGlvbiB7Cisg
ICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CistICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJIMjY0
IGVuY29kZSBmYWlsZWQgd2l0aCBjb2RlOiAiIDw8IHN0YXR1czsKKysgICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIkgyNjQgZW5jb2RlIGZhaWxlZDogIiA8PCBzdGF0dXM7CisgICAgIHJldHVybjsK
KyAgIH0KKyAgIGlmIChpbmZvRmxhZ3MgJiBrVlRFbmNvZGVJbmZvX0ZyYW1lRHJvcHBlZCkgewor
QEAgLTc0Myw2ICs4NzgsNyBAQCAtICh2b2lkKWZyYW1lV2FzRW5jb2RlZDooT1NTdGF0dXMpc3Rh
dHVzCisgICBmcmFtZS5yb3RhdGlvbiA9IHJvdGF0aW9uOworICAgZnJhbWUuY29udGVudFR5cGUg
PSAoX21vZGUgPT0gUlRDVmlkZW9Db2RlY01vZGVTY3JlZW5zaGFyaW5nKSA/IFJUQ1ZpZGVvQ29u
dGVudFR5cGVTY3JlZW5zaGFyZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRDVmlkZW9Db250ZW50VHlwZVVuc3Bl
Y2lmaWVkOworKyAgZnJhbWUuc3BhdGlhbEluZGV4ID0gX3NpbXVsY2FzdEluZGV4OworICAgZnJh
bWUuZmxhZ3MgPSB3ZWJydGM6OlZpZGVvU2VuZFRpbWluZzo6a0ludmFsaWQ7CisgCisgICBpbnQg
cXA7CitAQCAtNzU4LDkgKzg5NCw4OCBAQCAtICh2b2lkKWZyYW1lV2FzRW5jb2RlZDooT1NTdGF0
dXMpc3RhdHVzCisgICBfYml0cmF0ZUFkanVzdGVyLT5VcGRhdGUoZnJhbWUuYnVmZmVyLmxlbmd0
aCk7CisgfQorIAorLS0gKG51bGxhYmxlIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyAqKXNj
YWxpbmdTZXR0aW5ncyB7CistICByZXR1cm4gW1tSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMg
YWxsb2NdIGluaXRXaXRoVGhyZXNob2xkc0xvdzprTG93SDI2NFFwVGhyZXNob2xkCistICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGlnaDprSGlnaEgyNjRRcFRocmVzaG9sZF07CisrLSAoUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hv
bGRzICopc2NhbGluZ1NldHRpbmdzIHsKKysgIHJldHVybiBbW1JUQ1ZpZGVvRW5jb2RlclFwVGhy
ZXNob2xkcyBhbGxvY10gaW5pdFdpdGhUaHJlc2hvbGRzTG93OmtMb3dIMjY0UXBUaHJlc2hvbGQg
aGlnaDprSGlnaEgyNjRRcFRocmVzaG9sZF07CisrfQorKworKy0gKGludClzZXRSYXRlQWxsb2Nh
dGlvbjooUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqKWFsbG9jYXRpb24gZnJhbWVyYXRlOih1
aW50MzJfdClmcmFtZXJhdGUgeworKyAgcmV0dXJuIDA7CisrfQorKworK0BlbmQKKysKKytAaW1w
bGVtZW50YXRpb24gUlRDVmlkZW9FbmNvZGVySDI2NCB7CisrICBOU011dGFibGVBcnJheTxSVENT
aW5nbGVWaWRlb0VuY29kZXJIMjY0Kj4gKl9jb2RlY3M7CisrICBSVENWaWRlb0NvZGVjSW5mbyAq
X2NvZGVjSW5mbzsKKyt9CisrLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZWNJbmZvOihSVENW
aWRlb0NvZGVjSW5mbyAqKWNvZGVjSW5mbyB7CisrICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkg
eworKyAgICBfY29kZWNJbmZvID0gY29kZWNJbmZvOworKyAgfQorKyAgcmV0dXJuIHNlbGY7Cisr
fQorKworKy0gKHZvaWQpc2V0Q2FsbGJhY2s6KFJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrKWNhbGxi
YWNrIHsKKysgIGZvciAoUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCAqY29kZWMgOiBfY29kZWNz
KQorKyAgICBbY29kZWMgc2V0Q2FsbGJhY2s6Y2FsbGJhY2tdOworK30KKysKKystIChOU0ludGVn
ZXIpc3RhcnRFbmNvZGVXaXRoU2V0dGluZ3M6KFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzICopc2V0
dGluZ3MgbnVtYmVyT2ZDb3JlczooaW50KW51bWJlck9mQ29yZXMgeworKyAgICBhdXRvIG5hdGl2
ZUNvZGVjU2V0dGluZ3MgPSBzZXR0aW5ncy5uYXRpdmVWaWRlb0NvZGVjOworKworKyAgX2NvZGVj
cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworKyAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDAgOyBpbmRleCA8IG5hdGl2ZUNvZGVjU2V0dGluZ3MubnVtYmVyT2ZTaW11bGNhc3RTdHJl
YW1zOyArK2luZGV4KSB7CisrICAgIGF1dG8gY29kZWMgPSBbW1JUQ1NpbmdsZVZpZGVvRW5jb2Rl
ckgyNjQgYWxsb2NdIGluaXRXaXRoQ29kZWNJbmZvOl9jb2RlY0luZm8gc2ltdWxjYXN0SW5kZXg6
aW5kZXhdOworKyAgICBbX2NvZGVjcyBhZGRPYmplY3Q6Y29kZWNdOworKworKyAgICBhdXRvIGNv
ZGVjU2V0dGluZ3MgPSBuYXRpdmVDb2RlY1NldHRpbmdzOworKyAgICBjb2RlY1NldHRpbmdzLndp
ZHRoID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNhc3RTdHJlYW1baW5kZXhdLndpZHRoOwor
KyAgICBjb2RlY1NldHRpbmdzLmhlaWdodCA9IG5hdGl2ZUNvZGVjU2V0dGluZ3Muc2ltdWxjYXN0
U3RyZWFtW2luZGV4XS5oZWlnaHQ7CisrICAgIGNvZGVjU2V0dGluZ3MubWF4Qml0cmF0ZSA9IG5h
dGl2ZUNvZGVjU2V0dGluZ3Muc2ltdWxjYXN0U3RyZWFtW2luZGV4XS5tYXhCaXRyYXRlOworKyAg
ICBjb2RlY1NldHRpbmdzLnRhcmdldEJpdHJhdGUgPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNpbXVs
Y2FzdFN0cmVhbVtpbmRleF0udGFyZ2V0Qml0cmF0ZTsKKysgICAgY29kZWNTZXR0aW5ncy5taW5C
aXRyYXRlID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNhc3RTdHJlYW1baW5kZXhdLm1pbkJp
dHJhdGU7CisrICAgIGNvZGVjU2V0dGluZ3MucXBNYXggPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNp
bXVsY2FzdFN0cmVhbVtpbmRleF0ucXBNYXg7CisrICAgIGNvZGVjU2V0dGluZ3MuYWN0aXZlID0g
dHJ1ZTsKKysKKysgICAgYXV0byAqc2V0dGluZ3MgPSBbW1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdz
IGFsbG9jXSBpbml0V2l0aE5hdGl2ZVZpZGVvQ29kZWM6JmNvZGVjU2V0dGluZ3NdOworKyAgICBb
Y29kZWMgc3RhcnRFbmNvZGVXaXRoU2V0dGluZ3M6c2V0dGluZ3MgbnVtYmVyT2ZDb3JlczpudW1i
ZXJPZkNvcmVzXTsKKysgIH0KKysgIHJldHVybiAwOworK30KKysKKystIChOU0ludGVnZXIpcmVs
ZWFzZUVuY29kZXIgeworKyAgZm9yIChSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICpjb2RlYyA6
IF9jb2RlY3MpCisrICAgIFtjb2RlYyByZWxlYXNlRW5jb2Rlcl07CisrICBfY29kZWNzID0gbmls
OworKyAgcmV0dXJuIDA7CisrfQorKworKy0gKE5TSW50ZWdlcillbmNvZGU6KFJUQ1ZpZGVvRnJh
bWUgKilmcmFtZSBjb2RlY1NwZWNpZmljSW5mbzoobnVsbGFibGUgaWQ8UlRDQ29kZWNTcGVjaWZp
Y0luZm8+KWluZm8gZnJhbWVUeXBlczooTlNBcnJheTxOU051bWJlciAqPiAqKWZyYW1lVHlwZXMg
eworKyAgaW50IHJlc3VsdCA9IDA7CisrICBmb3IgKFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQg
KmNvZGVjIDogX2NvZGVjcykKKysgICAgcmVzdWx0IHw9IFtjb2RlYyBlbmNvZGU6ZnJhbWUgY29k
ZWNTcGVjaWZpY0luZm86aW5mbyBmcmFtZVR5cGVzOmZyYW1lVHlwZXNdOworKyAgcmV0dXJuIHJl
c3VsdDsKKyt9CisrCisrLSAoaW50KXNldFJhdGVBbGxvY2F0aW9uOihSVENWaWRlb0JpdHJhdGVB
bGxvY2F0aW9uICopYml0UmF0ZUFsbG9jYXRpb24gZnJhbWVyYXRlOih1aW50MzJfdCkgZnJhbWVy
YXRlIHsKKysgIGludCByZXN1bHQgPSAwOworKyAgdW5zaWduZWQgY291bnRlciA9IDA7CisrICBh
dXRvIG5hdGl2ZUJpdFJhdGVBbGxvY2F0aW9uID0gYml0UmF0ZUFsbG9jYXRpb24ubmF0aXZlVmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbjsKKysgIGZvciAoUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCAq
Y29kZWMgOiBfY29kZWNzKQorKyAgICByZXN1bHQgfD0gW2NvZGVjIHNldEJpdHJhdGU6bmF0aXZl
Qml0UmF0ZUFsbG9jYXRpb24uR2V0U3BhdGlhbExheWVyU3VtKGNvdW50ZXIrKykgZnJhbWVyYXRl
OmZyYW1lcmF0ZV07CisrICByZXR1cm4gcmVzdWx0OworK30KKysKKystIChOU1N0cmluZyAqKWlt
cGxlbWVudGF0aW9uTmFtZSB7CisrICByZXR1cm4gQCJWaWRlb1Rvb2xib3giOworK30KKysKKyst
IChSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMgKilzY2FsaW5nU2V0dGluZ3MgeworKyAgcmV0
dXJuIFtbUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzIGFsbG9jXSBpbml0V2l0aFRocmVzaG9s
ZHNMb3c6a0xvd0gyNjRRcFRocmVzaG9sZCBoaWdoOmtIaWdoSDI2NFFwVGhyZXNob2xkXTsKKyt9
CisrCisrLSAoaW50KXNldEJpdHJhdGU6KHVpbnQzMl90KWJpdHJhdGVLYml0IGZyYW1lcmF0ZToo
dWludDMyX3QpZnJhbWVyYXRlIHsKKysgIHJldHVybiAwOworIH0KKyAKKyBAZW5kCitkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
Y29tcG9uZW50cy92aWRlb19jb2RlYy9VSURldmljZStIMjY0UHJvZmlsZS5tbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlk
ZW9fY29kZWMvVUlEZXZpY2UrSDI2NFByb2ZpbGUubW0KK2luZGV4IDg1MmMzZDQ3MDJmLi5hMDE1
ZjdjYTE1YyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvVUlEZXZpY2UrSDI2NFByb2Zp
bGUubW0KKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvVUlEZXZpY2UrSDI2NFByb2ZpbGUubW0KK0BA
IC0yNCw5ICsyNCw2IEBAIHN0cnVjdCBTdXBwb3J0ZWRIMjY0UHJvZmlsZSB7CisgCisgY29uc3Rl
eHByIFN1cHBvcnRlZEgyNjRQcm9maWxlIGtIMjY0TWF4U3VwcG9ydGVkUHJvZmlsZXNbXSA9IHsK
KyAgICAgLy8gaVBob25lcyB3aXRoIGF0IGxlYXN0IGlPUyA5CistICAgIHtSVENEZXZpY2VUeXBl
SVBob25lWFMsIHtrUHJvZmlsZUhpZ2gsIGtMZXZlbDVfMn19LCAgICAgIC8vIGh0dHBzOi8vc3Vw
cG9ydC5hcHBsZS5jb20va2IvU1A3NzkKKy0gICAge1JUQ0RldmljZVR5cGVJUGhvbmVYU01heCwg
e2tQcm9maWxlSGlnaCwga0xldmVsNV8yfX0sICAgLy8gaHR0cHM6Ly9zdXBwb3J0LmFwcGxlLmNv
bS9rYi9TUDc4MAorLSAgICB7UlRDRGV2aWNlVHlwZUlQaG9uZVhSLCB7a1Byb2ZpbGVIaWdoLCBr
TGV2ZWw1XzJ9fSwgICAgICAvLyBodHRwczovL3N1cHBvcnQuYXBwbGUuY29tL2tiL1NQNzgxCisg
ICAgIHtSVENEZXZpY2VUeXBlSVBob25lWCwge2tQcm9maWxlSGlnaCwga0xldmVsNV8yfX0sICAg
ICAgIC8vIGh0dHBzOi8vc3VwcG9ydC5hcHBsZS5jb20va2IvU1A3NzAKKyAgICAge1JUQ0Rldmlj
ZVR5cGVJUGhvbmU4LCB7a1Byb2ZpbGVIaWdoLCBrTGV2ZWw1XzJ9fSwgICAgICAgLy8gaHR0cHM6
Ly9zdXBwb3J0LmFwcGxlLmNvbS9rYi9TUDc2NworICAgICB7UlRDRGV2aWNlVHlwZUlQaG9uZThQ
bHVzLCB7a1Byb2ZpbGVIaWdoLCBrTGV2ZWw1XzJ9fSwgICAvLyBodHRwczovL3N1cHBvcnQuYXBw
bGUuY29tL2tiL1NQNzY4CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmNjCitpbmRleCBhYzk1N2YxYjQ5Ny4uNDZkYWY0
NGVjYWMgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuY2MKKysrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVu
dHMvdmlkZW9fY29kZWMvaGVscGVycy5jYworQEAgLTM1LDEyICszNSwxMiBAQCBzdGQ6OnN0cmlu
ZyBDRlN0cmluZ1RvU3RyaW5nKGNvbnN0IENGU3RyaW5nUmVmIGNmX3N0cmluZykgeworIH0KKyAK
KyAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgorLXZv
aWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sCisrdm9pZCBTZXRW
VFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGtleSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDMyX3QgdmFsdWUpIHsKKyAgIENGTnVtYmVyUmVmIGNmTnVtID0KKyAgICAgICBD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAm
dmFsdWUpOworLSAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVydHkoc2Vzc2lv
biwga2V5LCBjZk51bSk7CisrICBPU1N0YXR1cyBzdGF0dXMgPSBDb21wcmVzc2lvblNlc3Npb25T
ZXRQcm9wZXJ0eShzZXNzaW9uLCBrZXksIGNmTnVtKTsKKyAgIENGUmVsZWFzZShjZk51bSk7Cisg
ICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CisgICAgIHN0ZDo6c3RyaW5nIGtleV9zdHJpbmcgPSBD
RlN0cmluZ1RvU3RyaW5nKGtleSk7CitAQCAtNTAsMTMgKzUwLDEzIEBAIHZvaWQgU2V0VlRTZXNz
aW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sCisgfQorIAorIC8vIENvbnZlbmllbmNl
IGZ1bmN0aW9uIGZvciBzZXR0aW5nIGEgVlQgcHJvcGVydHkuCistdm9pZCBTZXRWVFNlc3Npb25Q
cm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKKyt2b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5
KENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0ZTdHJpbmdSZWYga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
dmFsdWUpIHsKKyAgIGludDY0X3QgdmFsdWVfNjQgPSB2YWx1ZTsKKyAgIENGTnVtYmVyUmVmIGNm
TnVtID0KKyAgICAgICBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJTSW50NjRUeXBlLCAmdmFsdWVfNjQpOworLSAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9u
U2V0UHJvcGVydHkoc2Vzc2lvbiwga2V5LCBjZk51bSk7CisrICBPU1N0YXR1cyBzdGF0dXMgPSBD
b21wcmVzc2lvblNlc3Npb25TZXRQcm9wZXJ0eShzZXNzaW9uLCBrZXksIGNmTnVtKTsKKyAgIENG
UmVsZWFzZShjZk51bSk7CisgICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CisgICAgIHN0ZDo6c3Ry
aW5nIGtleV9zdHJpbmcgPSBDRlN0cmluZ1RvU3RyaW5nKGtleSk7CitAQCAtNjYsOSArNjYsOSBA
QCB2b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAorIH0KKyAK
KyAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgorLXZv
aWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVm
IGtleSwgYm9vbCB2YWx1ZSkgeworK3ZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Np
b25TZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwgYm9vbCB2YWx1ZSkgeworICAg
Q0ZCb29sZWFuUmVmIGNmX2Jvb2wgPSAodmFsdWUpID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZCb29s
ZWFuRmFsc2U7CistICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShzZXNz
aW9uLCBrZXksIGNmX2Jvb2wpOworKyAgT1NTdGF0dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNz
aW9uU2V0UHJvcGVydHkoc2Vzc2lvbiwga2V5LCBjZl9ib29sKTsKKyAgIGlmIChzdGF0dXMgIT0g
bm9FcnIpIHsKKyAgICAgc3RkOjpzdHJpbmcga2V5X3N0cmluZyA9IENGU3RyaW5nVG9TdHJpbmco
a2V5KTsKKyAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZUU2Vzc2lvblNldFByb3BlcnR5IGZh
aWxlZCB0byBzZXQ6ICIgPDwga2V5X3N0cmluZworQEAgLTc3LDEwICs3NywxMCBAQCB2b2lkIFNl
dFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXks
IGJvb2wgdmFsdWUpIHsKKyB9CisgCisgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRp
bmcgYSBWVCBwcm9wZXJ0eS4KKy12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJl
ZiBzZXNzaW9uLAorK3ZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9u
UmVmIHNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBrZXks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZSkgeworLSAgT1NT
dGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVydHkoc2Vzc2lvbiwga2V5LCB2YWx1ZSk7
CisrICBPU1N0YXR1cyBzdGF0dXMgPSBDb21wcmVzc2lvblNlc3Npb25TZXRQcm9wZXJ0eShzZXNz
aW9uLCBrZXksIHZhbHVlKTsKKyAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgc3RkOjpz
dHJpbmcga2V5X3N0cmluZyA9IENGU3RyaW5nVG9TdHJpbmcoa2V5KTsKKyAgICAgc3RkOjpzdHJp
bmcgdmFsX3N0cmluZyA9IENGU3RyaW5nVG9TdHJpbmcodmFsdWUpOworZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVu
dHMvdmlkZW9fY29kZWMvaGVscGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmgKK2lu
ZGV4IDA2ODNlYTc5ZTU2Li4wYzY2OWU4YmNlNiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29k
ZWMvaGVscGVycy5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuaAorQEAgLTE2LDYg
KzE2LDggQEAKKyAjaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZpZGVvVG9vbGJveC5oPgorICNpbmNs
dWRlIDxzdHJpbmc+CisgCisrI2luY2x1ZGUgInNkay9XZWJLaXQvRW5jb2RlclV0aWxpdGllcy5o
IgorKworIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhIGRpY3Rpb25hcnku
CisgaW5saW5lIENGRGljdGlvbmFyeVJlZiBDcmVhdGVDRlR5cGVEaWN0aW9uYXJ5KENGVHlwZVJl
Zioga2V5cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0ZUeXBlUmVmKiB2YWx1ZXMsCitAQCAtMjksMTggKzMxLDE4IEBAIGlubGluZSBDRkRpY3Rpb25h
cnlSZWYgQ3JlYXRlQ0ZUeXBlRGljdGlvbmFyeShDRlR5cGVSZWYqIGtleXMsCisgc3RkOjpzdHJp
bmcgQ0ZTdHJpbmdUb1N0cmluZyhjb25zdCBDRlN0cmluZ1JlZiBjZl9zdHJpbmcpOworIAorIC8v
IENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGEgVlQgcHJvcGVydHkuCistdm9pZCBT
ZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5
LCBpbnQzMl90IHZhbHVlKTsKKyt2b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KENvbXByZXNzaW9u
U2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIGludDMyX3QgdmFsdWUpOworIAor
IC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGEgVlQgcHJvcGVydHkuCistdm9p
ZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKKyt2b2lkIFNldFZU
U2Vzc2lvblByb3BlcnR5KENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYga2V5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgdmFsdWUpOworIAorIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBz
ZXR0aW5nIGEgVlQgcHJvcGVydHkuCistdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Np
b25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBib29sIHZhbHVlKTsKKyt2b2lkIFNldFZU
U2Vzc2lvblByb3BlcnR5KENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1Jl
ZiBrZXksIGJvb2wgdmFsdWUpOworIAorIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZXR0
aW5nIGEgVlQgcHJvcGVydHkuCistdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25S
ZWYgc2Vzc2lvbiwKKyt2b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KENvbXByZXNzaW9uU2Vzc2lv
blJlZiBzZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYga2V5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgdmFsdWUpOworIAorZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL25hdGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNf
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tCitpbmRleCBmYWZhZDc0NjZlYy4uYWU0NTAzM2E1NzAg
MTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tCisrKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUv
c3JjL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tCitAQCAtOTAsNiArOTAsMTEgQEAgY2xh
c3MgT2JqQ1ZpZGVvRW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgeworICAgICByZXR1cm4g
W2VuY29kZXJfIHNldEJpdHJhdGU6Yml0cmF0ZSBmcmFtZXJhdGU6ZnJhbWVyYXRlXTsKKyAgIH0K
KyAKKysgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2Nh
dGlvbiYgYWxsb2NhdGlvbiwgdWludDMyX3QgZnJhbWVyYXRlKSB7CisrICAgIGF1dG8gKnJ0Y0Fs
bG9jYXRpb24gPSBbW1JUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYWxsb2NdIGluaXRXaXRoTmF0
aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjomYWxsb2NhdGlvbl07CisrICAgIHJldHVybiBbZW5j
b2Rlcl8gc2V0UmF0ZUFsbG9jYXRpb246IHJ0Y0FsbG9jYXRpb24gZnJhbWVyYXRlOmZyYW1lcmF0
ZV07CisrICB9CisrCisgICBWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZv
KCkgY29uc3QgeworICAgICBFbmNvZGVySW5mbyBpbmZvOworICAgICBpbmZvLnN1cHBvcnRzX25h
dGl2ZV9oYW5kbGUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJh
NTRiZGIwMDc4YTRiODAwNWEzMWJlZmVkMTBmOWNjNjNiNGRlM2EuLjAxNDM1NWM2MmFiNzNkNDNh
OTI1YjQxMGY5YjVhOWM1YmZhMzQwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTgxLDcgKzgxLDYgQEAKIAkJNDEyOTQwOTMyMTJFMTI4RDAwQUQ5NUU3IC8qIGxpYnZweF92
cDhfZW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEyOTQwOEYyMTJFMTI4QzAwQUQ5NUU3IC8qIGxpYnZweF92cDhfZW5jb2Rlci5oICovOyB9
OwogCQk0MTI5NDA5NDIxMkUxMjhEMDBBRDk1RTcgLyogbGlidnB4X3ZwOF9kZWNvZGVyLmNjIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTQwOTAyMTJF
MTI4QzAwQUQ5NUU3IC8qIGxpYnZweF92cDhfZGVjb2Rlci5jYyAqLzsgfTsKIAkJNDEyOTQwOTUy
MTJFMTI4RDAwQUQ5NUU3IC8qIGxpYnZweF92cDhfZGVjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTQwOTEyMTJFMTI4QzAwQUQ5NUU3IC8q
IGxpYnZweF92cDhfZGVjb2Rlci5oICovOyB9OwotCQk0MTI5OUI4QjIxMjczNjUxMDBCMzQxNEIg
LyogcGFjZXJfY29udHJvbGxlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRTAyQ0Q2MjEyNzM2M0MwMEMyN0NENiAvKiBwYWNlcl9jb250cm9sbGVy
LmNjICovOyB9OwogCQk0MTI5OUI4QzIxMjczNjUxMDBCMzQxNEIgLyogc2VuZF90aW1lX2hpc3Rv
cnkuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUw
MkNEODIxMjczNjNEMDBDMjdDRDYgLyogc2VuZF90aW1lX2hpc3RvcnkuY2MgKi87IH07CiAJCTQx
Mjk5QjhEMjEyNzM2NTEwMEIzNDE0QiAvKiB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMDJDRDcyMTI3
MzYzQzAwQzI3Q0Q2IC8qIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmggKi87IH07CiAJCTQx
Mjk5QjkxMjEyNzM2N0IwMEIzNDE0QiAvKiBpc2FjX3ZhZC5jIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTlCOEUyMTI3MzY3QTAwQjM0MTRCIC8qIGlz
YWNfdmFkLmMgKi87IH07CkBAIC0xNDIsNyArMTQxLDYgQEAKIAkJNDEzQTIyQTExRkUxOEUwNjAw
MzczRTk5IC8qIHRlc3RiYXNlNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxM0EyMTQ0MUZFMThENEMwMDM3M0U5OSAvKiB0ZXN0YmFzZTY0LmggKi87
IH07CiAJCTQxM0EyMkEyMUZFMThFMDYwMDM3M0U5OSAvKiBmdW5jdGlvbl92aWV3LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjE0NTFGRTE4RDRD
MDAzNzNFOTkgLyogZnVuY3Rpb25fdmlldy5oICovOyB9OwogCQk0MTNBMjJBMzFGRTE4RTA2MDAz
NzNFOTkgLyogZm9ybWF0X21hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDEzQTIxNDcxRkUxOEQ0RDAwMzczRTk5IC8qIGZvcm1hdF9tYWNyb3Mu
aCAqLzsgfTsKLQkJNDEzQTIyQTQxRkUxOEUwNjAwMzczRTk5IC8qIHVuaXhmaWxlc3lzdGVtLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjE0ODFG
RTE4RDREMDAzNzNFOTkgLyogdW5peGZpbGVzeXN0ZW0uaCAqLzsgfTsKIAkJNDEzQTIyQTUxRkUx
OEUwNjAwMzczRTk5IC8qIHRlc3RlY2hvc2VydmVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxNDkxRkUxOEQ0RTAwMzczRTk5IC8qIHRlc3Rl
Y2hvc2VydmVyLmNjICovOyB9OwogCQk0MTNBMjJBNzFGRTE4RTA2MDAzNzNFOTkgLyogcHJveHlz
ZXJ2ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNBMjE0QzFGRTE4RDRGMDAzNzNFOTkgLyogcHJveHlzZXJ2ZXIuY2MgKi87IH07CiAJCTQxM0Ey
MkE4MUZFMThFMDYwMDM3M0U5OSAvKiBhc3luY2ludm9rZXItaW5sLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjE0RDFGRTE4RDUwMDAzNzNFOTkg
LyogYXN5bmNpbnZva2VyLWlubC5oICovOyB9OwpAQCAtMjI4LDE2ICsyMjYsMTMgQEAKIAkJNDEz
QTIzMzgxRkUxOEUwNzAwMzczRTk5IC8qIG1hY3V0aWxzLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRTQxRkUxOERCMDAwMzczRTk5IC8qIG1h
Y3V0aWxzLmNjICovOyB9OwogCQk0MTNBMjMzOTFGRTE4RTA3MDAzNzNFOTkgLyogdGFza19xdWV1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIx
RTUxRkUxOERCMTAwMzczRTk5IC8qIHRhc2tfcXVldWUuaCAqLzsgfTsKIAkJNDEzQTIzM0IxRkUx
OEUwNzAwMzczRTk5IC8qIGJpdGJ1ZmZlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUU3MUZFMThEQjEwMDM3M0U5OSAvKiBiaXRidWZmZXIu
Y2MgKi87IH07Ci0JCTQxM0EyMzNDMUZFMThFMDcwMDM3M0U5OSAvKiBwYXRodXRpbHMuY2MgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFFODFGRTE4
REIyMDAzNzNFOTkgLyogcGF0aHV0aWxzLmNjICovOyB9OwogCQk0MTNBMjMzRDFGRTE4RTA3MDAz
NzNFOTkgLyogcGh5c2ljYWxzb2NrZXRzZXJ2ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFFOTFGRTE4REIyMDAzNzNFOTkgLyogcGh5c2lj
YWxzb2NrZXRzZXJ2ZXIuY2MgKi87IH07CiAJCTQxM0EyMzNFMUZFMThFMDcwMDM3M0U5OSAvKiBi
eXRlb3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxM0EyMUVBMUZFMThEQjMwMDM3M0U5OSAvKiBieXRlb3JkZXIuaCAqLzsgfTsKIAkJNDEzQTIz
NDIxRkUxOEUwNzAwMzczRTk5IC8qIHRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRUUxRkUxOERCNDAwMzczRTk5IC8qIHRocmVhZC5o
ICovOyB9OwogCQk0MTNBMjM0MzFGRTE4RTA3MDAzNzNFOTkgLyogY3JjMzIuY2MgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFFRjFGRTE4REI1MDAz
NzNFOTkgLyogY3JjMzIuY2MgKi87IH07Ci0JCTQxM0EyMzQ1MUZFMThFMDcwMDM3M0U5OSAvKiBv
cHRpb25zZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzQTIxRjExRkUxOERCNjAwMzczRTk5IC8qIG9wdGlvbnNmaWxlLmggKi87IH07CiAJCTQx
M0EyMzQ3MUZFMThFMDcwMDM3M0U5OSAvKiBzd2FwX3F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFGMzFGRTE4REI3MDAzNzNFOTkgLyog
c3dhcF9xdWV1ZS5oICovOyB9OwogCQk0MTNBMjM0ODFGRTE4RTA3MDAzNzNFOTkgLyogZHNjcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRjQx
RkUxOERCNzAwMzczRTk5IC8qIGRzY3AuaCAqLzsgfTsKIAkJNDEzQTIzNDkxRkUxOEUwNzAwMzcz
RTk5IC8qIHRpbWV1dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEzQTIxRjUxRkUxOERCNzAwMzczRTk5IC8qIHRpbWV1dGlscy5oICovOyB9Owot
CQk0MTNBMjM0QTFGRTE4RTA3MDAzNzNFOTkgLyogb3B0aW9uc2ZpbGUuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFGNjFGRTE4REI4MDAzNzNF
OTkgLyogb3B0aW9uc2ZpbGUuY2MgKi87IH07CiAJCTQxM0EyMzRCMUZFMThFMDcwMDM3M0U5OSAv
KiB0eXBlX3RyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzQTIxRjcxRkUxOERCODAwMzczRTk5IC8qIHR5cGVfdHJhaXRzLmggKi87IH07CiAJ
CTQxM0EyMzRDMUZFMThFMDcwMDM3M0U5OSAvKiByYW5kb20uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUY4MUZFMThEQjkwMDM3M0U5OSAvKiBy
YW5kb20uaCAqLzsgfTsKIAkJNDEzQTIzNEQxRkUxOEUwNzAwMzczRTk5IC8qIHNvY2tldGFkZHJl
c3NwYWlyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzQTIxRjkxRkUxOERCOTAwMzczRTk5IC8qIHNvY2tldGFkZHJlc3NwYWlyLmNjICovOyB9OwpA
QCAtMjU1LDcgKzI1MCw2IEBACiAJCTQxM0EyMzVDMUZFMThFMDcwMDM3M0U5OSAvKiBiaW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjIwOTFG
RTE4REMwMDAzNzNFOTkgLyogYmluZC5oICovOyB9OwogCQk0MTNBMjM1RDFGRTE4RTA3MDAzNzNF
OTkgLyogZ3VuaXRfcHJvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEzQTIyMEExRkUxOERDMDAwMzczRTk5IC8qIGd1bml0X3Byb2QuaCAqLzsgfTsK
IAkJNDEzQTIzNUUxRkUxOEUwNzAwMzczRTk5IC8qIGFzeW5jc29ja2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjIwQjFGRTE4REMxMDAzNzNF
OTkgLyogYXN5bmNzb2NrZXQuaCAqLzsgfTsKLQkJNDEzQTIzNUYxRkUxOEUwNzAwMzczRTk5IC8q
IG5vb3AuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNBMjIwQzFGRTE4REMxMDAzNzNFOTkgLyogbm9vcC5jYyAqLzsgfTsKIAkJNDEzQTIzNjAxRkUx
OEUwNzAwMzczRTk5IC8qIHJhdGVfbGltaXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyMEQxRkUxOERDMjAwMzczRTk5IC8qIHJhdGVfbGlt
aXRlci5oICovOyB9OwogCQk0MTNBMjM2MTFGRTE4RTA3MDAzNzNFOTkgLyogc29ja2V0YWRhcHRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0Ey
MjBFMUZFMThEQzIwMDM3M0U5OSAvKiBzb2NrZXRhZGFwdGVycy5oICovOyB9OwogCQk0MTNBMjM2
MjFGRTE4RTA3MDAzNzNFOTkgLyogcmF0ZXRyYWNrZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjIwRjFGRTE4REMyMDAzNzNFOTkgLyogcmF0
ZXRyYWNrZXIuY2MgKi87IH07CkBAIC0yODcsNyArMjgxLDYgQEAKIAkJNDEzQTIzOEQxRkUxOEUw
NzAwMzczRTk5IC8qIHJhdGVfbGltaXRlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjNBMUZFMThERDgwMDM3M0U5OSAvKiByYXRlX2xpbWl0
ZXIuY2MgKi87IH07CiAJCTQxM0EyMzhFMUZFMThFMDcwMDM3M0U5OSAvKiBidWZmZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjNCMUZFMThE
RDkwMDM3M0U5OSAvKiBidWZmZXIuaCAqLzsgfTsKIAkJNDEzQTIzOEYxRkUxOEUwNzAwMzczRTk5
IC8qIGV2ZW50X3RyYWNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxM0EyMjNDMUZFMThERDkwMDM3M0U5OSAvKiBldmVudF90cmFjZXIuY2MgKi87
IH07Ci0JCTQxM0EyMzkwMUZFMThFMDgwMDM3M0U5OSAvKiBwYXRodXRpbHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjNEMUZFMThERDkwMDM3
M0U5OSAvKiBwYXRodXRpbHMuaCAqLzsgfTsKIAkJNDEzQTIzOTIxRkUxOEUwODAwMzczRTk5IC8q
IHNzbHJvb3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTNBMjIzRjFGRTE4RERBMDAzNzNFOTkgLyogc3Nscm9vdHMuaCAqLzsgfTsKIAkJNDEzQTIz
OTUxRkUxOEUwODAwMzczRTk5IC8qIGh0dHBjb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjQyMUZFMThEREIwMDM3M0U5OSAvKiBodHRw
Y29tbW9uLmggKi87IH07CiAJCTQxM0EyMzk2MUZFMThFMDgwMDM3M0U5OSAvKiBhc3luY3NvY2tl
dC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0Ey
MjQzMUZFMThEREMwMDM3M0U5OSAvKiBhc3luY3NvY2tldC5jYyAqLzsgfTsKQEAgLTMwNiwxMiAr
Mjk5LDEwIEBACiAJCTQxM0EyM0FFMUZFMThFMDgwMDM3M0U5OSAvKiBzZXF1ZW5jZWRfdGFza19j
aGVja2VyX2ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxM0EyMjVCMUZFMThERTYwMDM3M0U5OSAvKiBzZXF1ZW5jZWRfdGFza19jaGVja2VyX2lt
cGwuaCAqLzsgfTsKIAkJNDEzQTIzQUYxRkUxOEUwODAwMzczRTk5IC8qIHNzbGZpbmdlcnByaW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI1
QzFGRTE4REU2MDAzNzNFOTkgLyogc3NsZmluZ2VycHJpbnQuaCAqLzsgfTsKIAkJNDEzQTIzQjEx
RkUxOEUwODAwMzczRTk5IC8qIHN0cmluZ2l6ZV9tYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjVFMUZFMThERTcwMDM3M0U5OSAvKiBz
dHJpbmdpemVfbWFjcm9zLmggKi87IH07Ci0JCTQxM0EyM0I1MUZFMThFMDgwMDM3M0U5OSAvKiBm
aWxldXRpbHMuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTNBMjI2MjFGRTE4REU5MDAzNzNFOTkgLyogZmlsZXV0aWxzLmNjICovOyB9OwogCQk0MTNB
MjNCNzFGRTE4RTA4MDAzNzNFOTkgLyogZXZlbnQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI2NDFGRTE4REVCMDAzNzNFOTkgLyogZXZlbnQu
Y2MgKi87IH07CiAJCTQxM0EyM0I5MUZFMThFMDgwMDM3M0U5OSAvKiBzb2NrZXRzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjY2MUZF
MThERUMwMDM3M0U5OSAvKiBzb2NrZXRzZXJ2ZXIuaCAqLzsgfTsKIAkJNDEzQTIzQkExRkUxOEUw
ODAwMzczRTk5IC8qIHNpZ3Nsb3R0ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjY3MUZFMThERUMwMDM3M0U5OSAvKiBzaWdzbG90dGVz
dGVyLmggKi87IH07CiAJCTQxM0EyM0JDMUZFMThFMDgwMDM3M0U5OSAvKiBmbGFncy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNjkxRkUxOERF
RjAwMzczRTk5IC8qIGZsYWdzLmggKi87IH07Ci0JCTQxM0EyM0JEMUZFMThFMDgwMDM3M0U5OSAv
KiBmaWxldXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxM0EyMjZBMUZFMThERjAwMDM3M0U5OSAvKiBmaWxldXRpbHMuaCAqLzsgfTsKIAkJNDEz
QTIzQkUxRkUxOEUwODAwMzczRTk5IC8qIGxvZ3NpbmtzLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNkIxRkUxOERGMDAwMzczRTk5IC8qIGxv
Z3NpbmtzLmNjICovOyB9OwogCQk0MTNBMjNDMDFGRTE4RTA4MDAzNzNFOTkgLyogbnVsbHNvY2tl
dHNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzQTIyNkQxRkUxOERGMTAwMzczRTk5IC8qIG51bGxzb2NrZXRzZXJ2ZXIuaCAqLzsgfTsKIAkJ
NDEzQTIzQzExRkUxOEUwODAwMzczRTk5IC8qIHNzbHN0cmVhbWFkYXB0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjZFMUZFMThERjEwMDM3
M0U5OSAvKiBzc2xzdHJlYW1hZGFwdGVyLmggKi87IH07CkBAIC0zMzEsNyArMzIyLDYgQEAKIAkJ
NDEzQTIzRDgxRkUxOEUwODAwMzczRTk5IC8qIGZpbGVfcG9zaXguY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI4NTFGRTE4REZDMDAzNzNFOTkg
LyogZmlsZV9wb3NpeC5jYyAqLzsgfTsKIAkJNDEzQTIzRDkxRkUxOEUwODAwMzczRTk5IC8qIHRl
c3R1dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzQTIyODYxRkUxOERGQzAwMzczRTk5IC8qIHRlc3R1dGlscy5oICovOyB9OwogCQk0MTNBMjNE
QTFGRTE4RTA4MDAzNzNFOTkgLyogZmlsZXJvdGF0aW5nc3RyZWFtLmNjIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyODcxRkUxOERGRDAwMzczRTk5
IC8qIGZpbGVyb3RhdGluZ3N0cmVhbS5jYyAqLzsgfTsKLQkJNDEzQTIzREQxRkUxOEUwODAwMzcz
RTk5IC8qIHRocmVhZF9kYXJ3aW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTNBMjI4QTFGRTE4REZFMDAzNzNFOTkgLyogdGhyZWFkX2Rhcndpbi5t
bSAqLzsgfTsKIAkJNDEzQTIzREUxRkUxOEUwODAwMzczRTk5IC8qIHRhc2tfcXVldWVfZ2NkLmNj
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyOEIx
RkUxOERGRTAwMzczRTk5IC8qIHRhc2tfcXVldWVfZ2NkLmNjICovOyB9OwogCQk0MTNBMjNERjFG
RTE4RTA4MDAzNzNFOTkgLyogZmlyZXdhbGxzb2NrZXRzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjhDMUZFMThERkUwMDM3M0U5OSAv
KiBmaXJld2FsbHNvY2tldHNlcnZlci5oICovOyB9OwogCQk0MTNBMjNFMjFGRTE4RTA4MDAzNzNF
OTkgLyogY3B1X3RpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxM0EyMjkwMUZFMThFMDAwMDM3M0U5OSAvKiBjcHVfdGltZS5oICovOyB9OwpAQCAt
MzQyLDcgKzMzMiw2IEBACiAJCTQxM0EyM0VCMUZFMThFMDgwMDM3M0U5OSAvKiBsb2NhdGlvbi5j
YyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjk5
MUZFMThFMDMwMDM3M0U5OSAvKiBsb2NhdGlvbi5jYyAqLzsgfTsKIAkJNDEzQTIzRUMxRkUxOEUw
ODAwMzczRTk5IC8qIGxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTNBMjI5QTFGRTE4RTA0MDAzNzNFOTkgLyogbG9jYXRpb24uaCAqLzsg
fTsKIAkJNDEzQTIzRUQxRkUxOEUwODAwMzczRTk5IC8qIGlwYWRkcmVzcy5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjlCMUZFMThFMDQwMDM3
M0U5OSAvKiBpcGFkZHJlc3MuY2MgKi87IH07Ci0JCTQxM0EyM0VFMUZFMThFMDgwMDM3M0U5OSAv
KiBub29wLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzQTIyOUMxRkUxOEUwNDAwMzczRTk5IC8qIG5vb3AubW0gKi87IH07CiAJCTQxM0EyM0VGMUZF
MThFMDgwMDM3M0U5OSAvKiByYWNlX2NoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjlEMUZFMThFMDUwMDM3M0U5OSAvKiByYWNlX2No
ZWNrZXIuaCAqLzsgfTsKIAkJNDEzQTIzRjExRkUxOEUwODAwMzczRTk5IC8qIHNzbGZpbmdlcnBy
aW50LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
QTIyOUYxRkUxOEUwNjAwMzczRTk5IC8qIHNzbGZpbmdlcnByaW50LmNjICovOyB9OwogCQk0MTNB
MjNGMjFGRTE4RTA4MDAzNzNFOTkgLyogYnl0ZWJ1ZmZlci5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMkEwMUZFMThFMDYwMDM3M0U5OSAvKiBi
eXRlYnVmZmVyLmNjICovOyB9OwpAQCAtNDEyLDExICs0MDEsOCBAQAogCQk0MTNFNjc2RDIxNjk4
NTRCMDBFRjM3RUQgLyogUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzk1NDAwMjE2OTg1MUYwMDI4
MjY2QiAvKiBSVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tICovOyB9OwogCQk0MTNFNjc3
MjIxNjk4NjNCMDBFRjM3RUQgLyogdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2MgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc2RTIxNjk4NjNBMDBF
RjM3RUQgLyogdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2MgKi87IH07CiAJCTQxM0U2NzczMjE2
OTg2M0IwMEVGMzdFRCAvKiBsaWJ2cHhfaW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc2RjIxNjk4NjNBMDBFRjM3RUQgLyogbGli
dnB4X2ludGVyZmFjZS5oICovOyB9OwotCQk0MTNFNjc3NDIxNjk4NjNCMDBFRjM3RUQgLyogdnA4
X3RlbXBvcmFsX2xheWVycy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxM0U2NzcwMjE2OTg2M0IwMEVGMzdFRCAvKiB2cDhfdGVtcG9yYWxfbGF5ZXJz
LmNjICovOyB9OwogCQk0MTNFNjc3NTIxNjk4NjNCMDBFRjM3RUQgLyogbGlidnB4X2ludGVyZmFj
ZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2
NzcxMjE2OTg2M0IwMEVGMzdFRCAvKiBsaWJ2cHhfaW50ZXJmYWNlLmNjICovOyB9OwogCQk0MTNF
Njc3NjIxNjk4NjYxMDBFRjM3RUQgLyogUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzk1M0ZGMjE2OTg1MUYw
MDI4MjY2QiAvKiBSVENWaWRlb0NvZGVjQ29uc3RhbnRzLm1tICovOyB9OwotCQk0MTNFNjc3OTIx
Njk4NjdBMDBFRjM3RUQgLyogY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc3NzIxNjk4NjdBMDBFRjM3RUQg
LyogY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmggKi87IH07Ci0JCTQxM0U2NzdBMjE2OTg2N0EwMEVG
MzdFRCAvKiBjaGFubmVsX3JlY2VpdmVfcHJveHkuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc3ODIxNjk4NjdBMDBFRjM3RUQgLyogY2hhbm5l
bF9yZWNlaXZlX3Byb3h5LmNjICovOyB9OwogCQk0MTNFNjc3RDIxNjk4NkFFMDBFRjM3RUQgLyog
cnRwX2hlYWRlcl9leHRlbnNpb25fc2l6ZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzdCMjE2OTg2QUQwMEVGMzdFRCAvKiBydHBfaGVhZGVy
X2V4dGVuc2lvbl9zaXplLmNjICovOyB9OwogCQk0MTNFNjc3RTIxNjk4NkFFMDBFRjM3RUQgLyog
cnRwX2hlYWRlcl9leHRlbnNpb25fc2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3N0MyMTY5ODZBRTAwRUYzN0VEIC8qIHJ0cF9oZWFkZXJf
ZXh0ZW5zaW9uX3NpemUuaCAqLzsgfTsKIAkJNDEzRTY3ODEyMTY5ODcwRjAwRUYzN0VEIC8qIHN2
Y19jb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxM0U2NzdGMjE2OTg3MEYwMEVGMzdFRCAvKiBzdmNfY29uZmlnLmggKi87IH07CkBAIC00MzQs
NyArNDIwLDYgQEAKIAkJNDEzRTY3OUIyMTY5ODg2MjAwRUYzN0VEIC8qIGFnYzJfY29tbW9uLmNj
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3OUEy
MTY5ODg2MjAwRUYzN0VEIC8qIGFnYzJfY29tbW9uLmNjICovOyB9OwogCQk0MTNFNjdBMDIxNjk4
ODk1MDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc5QzIxNjk4ODk0MDBFRjM3
RUQgLyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmggKi87IH07CiAJCTQxM0U2N0ExMjE2
OTg4OTUwMEVGMzdFRCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc5RDIxNjk4ODk0MDBFRjM3
RUQgLyogUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5oICovOyB9OwotCQk0MTNFNjdBMjIxNjk4
ODk1MDBFRjM3RUQgLyogUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3OUUyMTY5ODg5NDAwRUYzN0VE
IC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubSAqLzsgfTsKIAkJNDEzRTY3QTMyMTY5ODg5
NTAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3OUYyMTY5ODg5NTAwRUYzN0VE
IC8qIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5tICovOyB9OwogCQk0MTNFNjdBNTIxNjk4
OERDMDBFRjM3RUQgLyogdmlkZW9fc3RyZWFtX2VuY29kZXJfb2JzZXJ2ZXIuY2MgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjdBNDIxNjk4OERDMDBF
RjM3RUQgLyogdmlkZW9fc3RyZWFtX2VuY29kZXJfb2JzZXJ2ZXIuY2MgKi87IH07CiAJCTQxNDBC
ODIwMUU0RTMzODMwMDc0MDlFNiAvKiBhdWRpb19lbmNvZGVyX3BjbS5jYyBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDBCODE4MUU0RTMzODMwMDc0MDlF
NiAvKiBhdWRpb19lbmNvZGVyX3BjbS5jYyAqLzsgfTsKQEAgLTUyNSw3ICs1MTAsNiBAQAogCQk0
MTQ1RTRDNjFFRjg5NkQ3MDBGQ0Y2RTYgLyogcnRjc3RhdHNyZXBvcnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDVFNEMyMUVGODk2Q0UwMEZDRjZF
NiAvKiBydGNzdGF0c3JlcG9ydC5oICovOyB9OwogCQk0MTQ1RTRDNzFFRjg5NkQ3MDBGQ0Y2RTYg
LyogcnRjc3RhdHNfb2JqZWN0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE0NUU0QzMxRUY4OTZEMjAwRkNGNkU2IC8qIHJ0Y3N0YXRzX29iamVjdHMu
aCAqLzsgfTsKIAkJNDE0NUU0QzgxRUY4OTZENzAwRkNGNkU2IC8qIHJ0Y3N0YXRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ1RTRDNDFFRjg5NkQ3
MDBGQ0Y2RTYgLyogcnRjc3RhdHMuaCAqLzsgfTsKLQkJNDE0NUU0Q0ExRUY4Q0IzMjAwRkNGNkU2
IC8qIGNyZWF0ZXBlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDVFNEM5MUVGOENCMzEwMEZDRjZFNiAvKiBjcmVh
dGVwZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgKi87IH07CiAJCTQxNDVFNENDMUVGOENCOEIwMEZD
RjZFNiAvKiBydHB0cmFuc3BvcnQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTQ1RTRDQjFFRjhDQjhBMDBGQ0Y2RTYgLyogcnRwdHJhbnNwb3J0LmNj
ICovOyB9OwogCQk0MTQ1RTRDRTFFRjhDQjk1MDBGQ0Y2RTYgLyogcnRwdHJhbnNwb3J0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ1RTRDRDFFRjhD
Qjk0MDBGQ0Y2RTYgLyogcnRwdHJhbnNwb3J0LmggKi87IH07CiAJCTQxNDVFNEQxMUVGOENDMjAw
MEZDRjZFNiAvKiB3ZWJydGN2aWRlb2VuZ2luZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDVFNENGMUVGOENDMTcwMEZDRjZFNiAvKiB3ZWJydGN2
aWRlb2VuZ2luZS5jYyAqLzsgfTsKQEAgLTU2MSw3ICs1NDUsNiBAQAogCQk0MTVGMUZBRTIxMjcy
RkJBMDAwNjRDQkYgLyogZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4QkRGMjEyNzJGODQwMDFE
NUQ3QiAvKiBmaXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5oICovOyB9OwogCQk0MTVGMUZB
RjIxMjcyRkJBMDAwNjRDQkYgLyogZ2Fpbl9hcHBsaWVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCREUyMTI3MkY4NDAwMUQ1RDdCIC8qIGdh
aW5fYXBwbGllci5jYyAqLzsgfTsKIAkJNDE1RjFGQjAyMTI3MkZCQTAwMDY0Q0JGIC8qIGdhaW5f
YXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFBMDhCRTcyMTI3MkY4NjAwMUQ1RDdCIC8qIGdhaW5fYXBwbGllci5oICovOyB9OwotCQk0MTVG
MUZCMTIxMjcyRkJBMDAwNjRDQkYgLyogZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmNjIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCRTAyMTI3MkY4NTAwMUQ1
RDdCIC8qIGdhaW5fY3VydmVfYXBwbGllci5jYyAqLzsgfTsKIAkJNDE1RjFGQjIyMTI3MkZCQTAw
MDY0Q0JGIC8qIGludGVycG9sYXRlZF9nYWluX2N1cnZlLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCRTEyMTI3MkY4NTAwMUQ1RDdCIC8qIGlu
dGVycG9sYXRlZF9nYWluX2N1cnZlLmNjICovOyB9OwogCQk0MTVGMUZCMzIxMjcyRkJBMDAwNjRD
QkYgLyogbGltaXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFBMDhCRUEyMTI3MkY4NjAwMUQ1RDdCIC8qIGxpbWl0ZXIuaCAqLzsgfTsKIAkJNDE1
RjFGQjQyMTI3MkZCQTAwMDY0Q0JGIC8qIG5vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCRTIyMTI3MkY4
NTAwMUQ1RDdCIC8qIG5vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5oICovOyB9OwpAQCAtNjQ2LDkg
KzYyOSw2IEBACiAJCTQxNkQzQkUwMjEyNzMxQzIwMDc3NUYwOSAvKiBiaXF1YWRfZmlsdGVyLmNj
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENkI0NUUy
MTI3MzFBMDAwOEY5MzUzIC8qIGJpcXVhZF9maWx0ZXIuY2MgKi87IH07CiAJCTQxNkQzQkUxMjEy
NzMxQzIwMDc3NUYwOSAvKiBiaXF1YWRfZmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQ2QjQ2MzIxMjczMUEyMDA4RjkzNTMgLyogYmlxdWFk
X2ZpbHRlci5oICovOyB9OwogCQk0MTZEM0JFMjIxMjczMUMyMDA3NzVGMDkgLyogZG93bl9zYW1w
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQ2
QjQ2MDIxMjczMUExMDA4RjkzNTMgLyogZG93bl9zYW1wbGVyLmggKi87IH07Ci0JCTQxNkQzQkUz
MjEyNzMxQzIwMDc3NUYwOSAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQ2QjQ2NTIxMjczMUEyMDA4Rjkz
NTMgLyogZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmNjICovOyB9OwotCQk0MTZEM0JFNDIxMjczMUMy
MDA3NzVGMDkgLyogZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQ2QjQ2NzIxMjczMUEzMDA4RjkzNTMgLyogZml4
ZWRfZ2Fpbl9jb250cm9sbGVyLmggKi87IH07Ci0JCTQxNkQzQkU1MjEyNzMxQzIwMDc3NUYwOSAv
KiBnYWluX2N1cnZlX2FwcGxpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRDZCNDY5MjEyNzMxQTMwMDhGOTM1MyAvKiBnYWluX2N1cnZlX2FwcGxp
ZXIuaCAqLzsgfTsKIAkJNDE2RDNCRTYyMTI3MzFDMjAwNzc1RjA5IC8qIGxpbWl0ZXIuY2MgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQ2QjQ3MDIxMjcz
MUE2MDA4RjkzNTMgLyogbGltaXRlci5jYyAqLzsgfTsKIAkJNDE2RDNCRTcyMTI3MzFDMjAwNzc1
RjA5IC8qIG5vaXNlX2xldmVsX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZCNDYxMjEyNzMxQTEwMDhGOTM1MyAvKiBub2lzZV9s
ZXZlbF9lc3RpbWF0b3IuY2MgKi87IH07CiAJCTQxNkQzQkU4MjEyNzMxQzIwMDc3NUYwOSAvKiBu
b2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUQ2QjQ2QTIxMjczMUEzMDA4RjkzNTMgLyogbm9pc2Vfc3BlY3Ry
dW1fZXN0aW1hdG9yLmNjICovOyB9OwpAQCAtNjgzLDkgKzY2Myw3IEBACiAJCTQxNzk1M0NDMjE2
OTgyREIwMDI4MjY2QiAvKiBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyMjVFRDIxNjk4MUYyMDBBOTFD
OUIgLyogUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0Lm1tICovOyB9OwogCQk0MTc5NTNEMzIxNjk4
MzRGMDAyODI2NkIgLyogY2hhbm5lbF9zZW5kLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTUzQ0QyMTY5ODM0RTAwMjgyNjZCIC8qIGNoYW5uZWxf
c2VuZC5jYyAqLzsgfTsKIAkJNDE3OTUzRDQyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2Vu
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTUz
Q0UyMTY5ODM0RTAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZC5oICovOyB9OwotCQk0MTc5NTNENTIx
Njk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9zZW5kX3Byb3h5LmNjIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTUzQ0YyMTY5ODM0RTAwMjgyNjZCIC8q
IGNoYW5uZWxfc2VuZF9wcm94eS5jYyAqLzsgfTsKIAkJNDE3OTUzRDYyMTY5ODM0RjAwMjgyNjZC
IC8qIGNoYW5uZWxfcmVjZWl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE3OTUzRDAyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfcmVjZWl2ZS5o
ICovOyB9OwotCQk0MTc5NTNENzIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9zZW5kX3Byb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5NTNE
MTIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9zZW5kX3Byb3h5LmggKi87IH07CiAJCTQxNzk1
M0Q4MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3JlY2VpdmUuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5NTNEMjIxNjk4MzRGMDAyODI2NkIg
LyogY2hhbm5lbF9yZWNlaXZlLmNjICovOyB9OwogCQk0MTc5NTNEQjIxNjk4MzkxMDAyODI2NkIg
LyogbWV0cmljcy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNzk1M0Q5MjE2OTgzOTAwMDI4MjY2QiAvKiBtZXRyaWNzLmNjICovOyB9OwogCQk0MTc5
NTNEQzIxNjk4MzkxMDAyODI2NkIgLyogZmllbGRfdHJpYWwuY2MgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5NTNEQTIxNjk4MzkwMDAyODI2NkIgLyog
ZmllbGRfdHJpYWwuY2MgKi87IH07CkBAIC03NTIsNyArNzMwLDYgQEAKIAkJNDE5MjQxNTQyMTI3
Mzc2RjAwNjM0RkNGIC8qIGJhc2ljYXN5bmNyZXNvbHZlcmZhY3RvcnkuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE0QTIxMjczNzZEMDA2MzRG
Q0YgLyogYmFzaWNhc3luY3Jlc29sdmVyZmFjdG9yeS5jYyAqLzsgfTsKIAkJNDE5MjQxNTUyMTI3
Mzc2RjAwNjM0RkNGIC8qIHJlZ2F0aGVyaW5nY29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQxNEIyMTI3Mzc2RDAwNjM0RkNGIC8q
IHJlZ2F0aGVyaW5nY29udHJvbGxlci5oICovOyB9OwogCQk0MTkyNDE1NjIxMjczNzZGMDA2MzRG
Q0YgLyogZmFrZWNhbmRpZGF0ZXBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxOTI0MTRDMjEyNzM3NkUwMDYzNEZDRiAvKiBmYWtlY2FuZGlkYXRl
cGFpci5oICovOyB9OwotCQk0MTkyNDE1NzIxMjczNzZGMDA2MzRGQ0YgLyogdWRwdHJhbnNwb3J0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE0
RDIxMjczNzZFMDA2MzRGQ0YgLyogdWRwdHJhbnNwb3J0LmggKi87IH07CiAJCTQxOTI0MTU4MjEy
NzM3NkYwMDYzNEZDRiAvKiBmYWtlcGFja2V0dHJhbnNwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE0RTIxMjczNzZFMDA2MzRGQ0YgLyog
ZmFrZXBhY2tldHRyYW5zcG9ydC5oICovOyB9OwogCQk0MTkyNDE1OTIxMjczNzZGMDA2MzRGQ0Yg
LyogZmFrZWljZXRyYW5zcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE5MjQxNEYyMTI3Mzc2RTAwNjM0RkNGIC8qIGZha2VpY2V0cmFuc3BvcnQu
aCAqLzsgfTsKIAkJNDE5MjQxNUEyMTI3Mzc2RjAwNjM0RkNGIC8qIGljZXRyYW5zcG9ydGludGVy
bmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTky
NDE1MDIxMjczNzZFMDA2MzRGQ0YgLyogaWNldHJhbnNwb3J0aW50ZXJuYWwuaCAqLzsgfTsKQEAg
LTc3Nyw3ICs3NTQsNiBAQAogCQk0MTkyNDE4MjIxMjc0OTcxMDA2MzRGQ0YgLyogYmFkX3Zhcmlh
bnRfYWNjZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTkyNDE4MDIxMjc0OTcxMDA2MzRGQ0YgLyogYmFkX3ZhcmlhbnRfYWNjZXNzLmggKi87IH07
CiAJCTQxOTI0MThCMjEyNzQ5QzgwMDYzNEZDRiAvKiBzZW5kX3RpbWVfaGlzdG9yeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQxODcyMTI3NDlD
NzAwNjM0RkNGIC8qIHNlbmRfdGltZV9oaXN0b3J5LmggKi87IH07CiAJCTQxOTI0MThDMjEyNzQ5
QzgwMDYzNEZDRiAvKiBzZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQxODgyMTI3NDlDNzAw
NjM0RkNGIC8qIHNlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgKi87IH07Ci0JCTQx
OTI0MThEMjEyNzQ5QzgwMDYzNEZDRiAvKiBwYWNlcl9jb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE4OTIxMjc0OUM4MDA2MzRG
Q0YgLyogcGFjZXJfY29udHJvbGxlci5oICovOyB9OwogCQk0MTkyNDE4RTIxMjc0OUM4MDA2MzRG
Q0YgLyogdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE4QTIxMjc0OUM4MDA2MzRGQ0YgLyogdHJh
bnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MgKi87IH07CiAJCTQxOTI0MTkwMjEyNzU4MTAwMDYz
NEZDRiAvKiBmZWNfcHJpdmF0ZV90YWJsZXNfYnVyc3R5LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQxOEYyMTI3NTgxMDAwNjM0RkNGIC8qIGZl
Y19wcml2YXRlX3RhYmxlc19idXJzdHkuY2MgKi87IH07CiAJCTQxOTI0MTk4MjEyNzU4NjUwMDYz
NEZDRiAvKiBybm5fdmFkX3dlaWdodHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxOTI0MTkzMjEyNzU4NjQwMDYzNEZDRiAvKiBybm5fdmFkX3dlaWdo
dHMuaCAqLzsgfTsKQEAgLTg5MSw4ICs4NjcsNiBAQAogCQk0MTlDODMyNTFGRTI0NTI4MDA0MEMz
MEYgLyogcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4MzIzMUZFMjQ1MjgwMDQwQzMwRiAvKiBy
dGNfZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5oICovOyB9OwogCQk0MTlDODMyRTFGRTI0NUNE
MDA0MEMzMEYgLyogcGFjZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxOUM4MzI4MUZFMjQ1Q0IwMDQwQzMwRiAvKiBwYWNlci5oICovOyB9OwogCQk0
MTlDODMzMTFGRTI0NUNEMDA0MEMzMEYgLyogaW50ZXJ2YWxfYnVkZ2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlDODMyQjFGRTI0NUNDMDA0MEMz
MEYgLyogaW50ZXJ2YWxfYnVkZ2V0LmggKi87IH07Ci0JCTQxOUM4MzM0MUZFMjQ1RUEwMDQwQzMw
RiAvKiB0aW1lX2ludGVydmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTlDODMzMjFGRTI0NUU5MDA0MEMzMEYgLyogdGltZV9pbnRlcnZhbC5oICov
OyB9OwotCQk0MTlDODMzNTFGRTI0NUVBMDA0MEMzMEYgLyogdGltZV9pbnRlcnZhbC5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4MzMzMUZFMjQ1
RTkwMDQwQzMwRiAvKiB0aW1lX2ludGVydmFsLmNjICovOyB9OwogCQk0MTlDODMzQzFGRTI0NjIz
MDA0MEMzMEYgLyogYXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzMzcxRkUyNDYyMjAwNDBDMzBGIC8q
IGF1ZGlvX2VuY29kZXJfZzcyMl9jb25maWcuaCAqLzsgfTsKIAkJNDE5QzgzM0QxRkUyNDYyMzAw
NDBDMzBGIC8qIGF1ZGlvX2RlY29kZXJfZzcyMi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzMzgxRkUyNDYyMjAwNDBDMzBGIC8qIGF1ZGlvX2Rl
Y29kZXJfZzcyMi5oICovOyB9OwogCQk0MTlDODMzRTFGRTI0NjIzMDA0MEMzMEYgLyogYXVkaW9f
ZW5jb2Rlcl9nNzIyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE5QzgzMzkxRkUyNDYyMjAwNDBDMzBGIC8qIGF1ZGlvX2VuY29kZXJfZzcyMi5jYyAq
LzsgfTsKQEAgLTk2NSw3ICs5MzksNiBAQAogCQk0MTlDODNEOTFGRTI0N0YyMDA0MEMzMEYgLyog
cGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxOUM4M0QwMUZFMjQ3RUYwMDQwQzMwRiAvKiBwYWNrZXR0cmFuc3Bv
cnRpbnRlcm5hbC5oICovOyB9OwogCQk0MTlDODNEQTFGRTI0N0YyMDA0MEMzMEYgLyogcGFja2V0
dHJhbnNwb3J0aW50ZXJuYWwuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTlDODNEMTFGRTI0N0YwMDA0MEMzMEYgLyogcGFja2V0dHJhbnNwb3J0aW50
ZXJuYWwuY2MgKi87IH07CiAJCTQxOUM4M0RCMUZFMjQ3RjIwMDQwQzMwRiAvKiBwb3J0aW50ZXJm
YWNlLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5
QzgzRDIxRkUyNDdGMDAwNDBDMzBGIC8qIHBvcnRpbnRlcmZhY2UuY2MgKi87IH07Ci0JCTQxOUM4
M0RDMUZFMjQ3RjIwMDQwQzMwRiAvKiB1ZHB0cmFuc3BvcnQuY2MgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlDODNEMzFGRTI0N0YwMDA0MEMzMEYgLyog
dWRwdHJhbnNwb3J0LmNjICovOyB9OwogCQk0MTlDODNERDFGRTI0N0YyMDA0MEMzMEYgLyogZHRs
c3RyYW5zcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE5QzgzRDQxRkUyNDdGMTAwNDBDMzBGIC8qIGR0bHN0cmFuc3BvcnQuaCAqLzsgfTsKIAkJ
NDE5QzgzREUxRkUyNDdGMjAwNDBDMzBGIC8qIGR0bHN0cmFuc3BvcnRpbnRlcm5hbC5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4M0Q1MUZFMjQ3
RjEwMDQwQzMwRiAvKiBkdGxzdHJhbnNwb3J0aW50ZXJuYWwuY2MgKi87IH07CiAJCTQxOUM4M0RG
MUZFMjQ3RjIwMDQwQzMwRiAvKiBkdGxzdHJhbnNwb3J0aW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4M0Q2MUZFMjQ3RjEwMDQwQzMw
RiAvKiBkdGxzdHJhbnNwb3J0aW50ZXJuYWwuaCAqLzsgfTsKQEAgLTEwNzgsOCArMTA1MSw2IEBA
CiAJCTQxQTA4QkQwMjEyNzJFRTIwMDFENUQ3QiAvKiBnYWluX2NvbnRyb2xsZXIyLmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCQ0UyMTI3MkVF
MTAwMUQ1RDdCIC8qIGdhaW5fY29udHJvbGxlcjIuY2MgKi87IH07CiAJCTQxQTA4QkQzMjEyNzJF
RkEwMDFENUQ3QiAvKiByb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4QkQxMjEyNzJFRkEwMDFENUQ3QiAv
KiByb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuaCAqLzsgfTsKIAkJNDFBMDhCRDQyMTI3MkVGQTAw
MUQ1RDdCIC8qIHJvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4QkQyMjEyNzJFRkEwMDFENUQ3QiAvKiBy
b3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuY2MgKi87IH07Ci0JCTQxQTA4QkQ3MjEyNzJGMUQwMDFE
NUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJENTIxMjcyRjFDMDAx
RDVEN0IgLyogY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oICovOyB9Owot
CQk0MUEwOEJEODIxMjcyRjFEMDAxRDVEN0IgLyogY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tf
Y29udHJvbGxlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQTA4QkQ2MjEyNzJGMUMwMDFENUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFj
a19jb250cm9sbGVyLmNjICovOyB9OwogCQk0MUEzOTE3MzFFRkM0NDdDMDBDNDUxNkEgLyogc2hh
MS1hbHRpdmVjLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUEzOTE0RjFFRkM0NDZFMDBDNDUxNkEgLyogc2hhMS1hbHRpdmVjLmMgKi87IH07CiAJCTQx
QTM5MTc0MUVGQzQ0N0MwMEM0NTE2QSAvKiBzaGExLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzOTE1MDFFRkM0NDZFMDBDNDUxNkEgLyogc2hhMS5j
ICovOyB9OwogCQk0MUEzOTE3NTFFRkM0NDdDMDBDNDUxNkEgLyogc2hhMjU2LmMgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzOTE1MTFFRkM0NDZFMDBD
NDUxNkEgLyogc2hhMjU2LmMgKi87IH07CkBAIC0xMzY4LDcgKzEzMzksNiBAQAogCQk0MUUwMkNB
NjIxMjczNTJEMDBDMjdDRDYgLyogYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUwMkM5MjIxMjcz
NTJBMDBDMjdDRDYgLyogYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmggKi87IH07CiAJ
CTQxRTAyQ0E3MjEyNzM1MkQwMEMyN0NENiAvKiBwcm9iZV9iaXRyYXRlX2VzdGltYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMDJDOTMyMTI3
MzUyQTAwQzI3Q0Q2IC8qIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yLmggKi87IH07CiAJCTQxRTAy
Q0E4MjEyNzM1MkQwMEMyN0NENiAvKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUwMkM5NDIx
MjczNTJBMDBDMjdDRDYgLyogYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmNjICovOyB9
OwotCQk0MUUwMkNBOTIxMjczNTJEMDBDMjdDRDYgLyogZ29vZ19jY19mYWN0b3J5LmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMDJDOTUyMTI3MzUy
QTAwQzI3Q0Q2IC8qIGdvb2dfY2NfZmFjdG9yeS5jYyAqLzsgfTsKIAkJNDFFMDJDQUEyMTI3MzUy
RDAwQzI3Q0Q2IC8qIGdvb2dfY2NfbmV0d29ya19jb250cm9sLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUwMkM5NjIxMjczNTJBMDBDMjdDRDYgLyog
Z29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaCAqLzsgfTsKIAkJNDFFMDJDQUIyMTI3MzUyRDAwQzI3
Q0Q2IC8qIGRlbGF5X2Jhc2VkX2J3ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFFMDJDOTcyMTI3MzUyQTAwQzI3Q0Q2IC8qIGRlbGF5X2Jhc2VkX2J3
ZS5oICovOyB9OwogCQk0MUUwMkNBQzIxMjczNTJEMDBDMjdDRDYgLyogYml0cmF0ZV9lc3RpbWF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTAy
Qzk4MjEyNzM1MkIwMEMyN0NENiAvKiBiaXRyYXRlX2VzdGltYXRvci5oICovOyB9OwpAQCAtMTU5
Myw2ICsxNTYzLDY1IEBACiAJCTQxRjlCRkU0MjA1MURFMTgwMEFCRjBCOSAvKiBzZXNzaW9uZGVz
Y3JpcHRpb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUY5QkZERTIwNTFERTE3MDBBQkYwQjkgLyogc2Vzc2lvbmRlc2NyaXB0aW9uLmNjICovOyB9
OwogCQk0MUY5QkZFOTIwNTFERUVBMDBBQkYwQjkgLyogdHVybnBvcnRmYWN0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUY5QkZFNzIwNTFERUU5
MDBBQkYwQjkgLyogdHVybnBvcnRmYWN0b3J5LmggKi87IH07CiAJCTQxRjlCRkVBMjA1MURFRUEw
MEFCRjBCOSAvKiB0dXJucG9ydGZhY3RvcnkuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUY5QkZFODIwNTFERUVBMDBBQkYwQjkgLyogdHVybnBvcnRm
YWN0b3J5LmNjICovOyB9OworCQk0MUZDQkIwRTIxQjFGNTM3MDBBNURGMjcgLyogY3JlYXRlX3Bl
ZXJjb25uZWN0aW9uX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUZDQkIwOTIxQjFGNTMwMDBBNURGMjcgLyogY3JlYXRlX3BlZXJjb25u
ZWN0aW9uX2ZhY3RvcnkuY2MgKi87IH07CisJCTQxRkNCQjBGMjFCMUY1MzcwMEE1REYyNyAvKiBt
ZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIwQTIxQjFGNTMxMDBBNURGMjcgLyogbWVkaWFfdHJhbnNw
b3J0X2ludGVyZmFjZS5oICovOyB9OworCQk0MUZDQkIxMDIxQjFGNTM3MDBBNURGMjcgLyogc2Nv
cGVkX3JlZnB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFGQ0JCMEIyMUIxRjUzMjAwQTVERjI3IC8qIHNjb3BlZF9yZWZwdHIuaCAqLzsgfTsKKwkJ
NDFGQ0JCMTEyMUIxRjUzNzAwQTVERjI3IC8qIG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIwQzIx
QjFGNTMyMDBBNURGMjcgLyogbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5jYyAqLzsgfTsKKwkJ
NDFGQ0JCMTIyMUIxRjUzNzAwQTVERjI3IC8qIGNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIw
RDIxQjFGNTM2MDBBNURGMjcgLyogY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCAqLzsg
fTsKKwkJNDFGQ0JCMTUyMUIxRjdBQTAwQTVERjI3IC8qIG1vdmluZ19hdmVyYWdlLmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMTMyMUIxRjdB
QTAwQTVERjI3IC8qIG1vdmluZ19hdmVyYWdlLmNjICovOyB9OworCQk0MUZDQkIxNjIxQjFGN0FB
MDBBNURGMjcgLyogbW92aW5nX2F2ZXJhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjE0MjFCMUY3QUEwMEE1REYyNyAvKiBtb3ZpbmdfYXZl
cmFnZS5oICovOyB9OworCQk0MUZDQkIxQjIxQjFGN0NEMDBBNURGMjcgLyogYnVpbHRpbl92aWRl
b19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMTcyMUIxRjdDQzAwQTVERjI3IC8qIGJ1aWx0aW5f
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5jYyAqLzsgfTsKKwkJNDFGQ0JCMUMyMUIx
RjdDRDAwQTVERjI3IC8qIGVuY29kZWRfaW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjE4MjFCMUY3Q0MwMEE1REYyNyAvKiBlbmNvZGVk
X2ltYWdlLmggKi87IH07CisJCTQxRkNCQjFEMjFCMUY3Q0QwMEE1REYyNyAvKiBlbmNvZGVkX2lt
YWdlLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFG
Q0JCMTkyMUIxRjdDQzAwQTVERjI3IC8qIGVuY29kZWRfaW1hZ2UuY2MgKi87IH07CisJCTQxRkNC
QjFFMjFCMUY3Q0QwMEE1REYyNyAvKiBidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2Zh
Y3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RkNCQjFBMjFCMUY3Q0QwMEE1REYyNyAvKiBidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnkuaCAqLzsgfTsKKwkJNDFGQ0JCMjIyMUIxRjgyRjAwQTVERjI3IC8qIHRocm93X2Rl
bGVnYXRlLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGQ0JCMjAyMUIxRjgyRTAwQTVERjI3IC8qIHRocm93X2RlbGVnYXRlLmNjICovOyB9OworCQk0
MUZDQkIyMzIxQjFGODJGMDBBNURGMjcgLyogdGhyb3dfZGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjIxMjFCMUY4MkYwMEE1REYy
NyAvKiB0aHJvd19kZWxlZ2F0ZS5oICovOyB9OworCQk0MUZDQkIyNzIxQjFGODdFMDBBNURGMjcg
Lyogc2VudF9wYWNrZXQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZDQkIyNTIxQjFGODdFMDBBNURGMjcgLyogc2VudF9wYWNrZXQuY2MgKi87IH07
CisJCTQxRkNCQjI4MjFCMUY4N0UwMEE1REYyNyAvKiBzZW50X3BhY2tldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMjYyMUIxRjg3RTAwQTVE
RjI3IC8qIHNlbnRfcGFja2V0LmggKi87IH07CisJCTQxRkNCQjJFMjFCMUY4QjcwMEE1REYyNyAv
KiBjcnlwdG9vcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZDQkIyQTIxQjFGOEI2MDBBNURGMjcgLyogY3J5cHRvb3B0aW9ucy5oICovOyB9
OworCQk0MUZDQkIyRjIxQjFGOEI3MDBBNURGMjcgLyogZnJhbWVkZWNyeXB0b3JpbnRlcmZhY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjJC
MjFCMUY4QjYwMEE1REYyNyAvKiBmcmFtZWRlY3J5cHRvcmludGVyZmFjZS5oICovOyB9OworCQk0
MUZDQkIzMDIxQjFGOEI3MDBBNURGMjcgLyogZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjJDMjFCMUY4
QjYwMEE1REYyNyAvKiBmcmFtZWVuY3J5cHRvcmludGVyZmFjZS5oICovOyB9OworCQk0MUZDQkIz
MTIxQjFGOEI3MDBBNURGMjcgLyogY3J5cHRvb3B0aW9ucy5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjJEMjFCMUY4QjYwMEE1REYyNyAvKiBj
cnlwdG9vcHRpb25zLmNjICovOyB9OworCQk0MUZDQkIzODIxQjFGOEZDMDBBNURGMjcgLyogY29u
dHJvbF9oYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUZDQkIzNDIxQjFGOEZCMDBBNURGMjcgLyogY29udHJvbF9oYW5kbGVyLmggKi87IH07
CisJCTQxRkNCQjM5MjFCMUY4RkMwMEE1REYyNyAvKiBjb250cm9sX2hhbmRsZXIuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIzNTIxQjFGOEZD
MDBBNURGMjcgLyogY29udHJvbF9oYW5kbGVyLmNjICovOyB9OworCQk0MUZDQkIzQzIxQjFGRDQw
MDBBNURGMjcgLyogbWF0Y2guY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUZDQkIzQTIxQjFGRDNGMDBBNURGMjcgLyogbWF0Y2guY2MgKi87IH07CisJ
CTQxRkNCQjNEMjFCMUZENDAwMEE1REYyNyAvKiBtYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCM0IyMUIxRkQzRjAwQTVERjI3IC8qIG1h
dGNoLmggKi87IH07CisJCTQxRkNCQjQwMjFCMUZEQjgwMEE1REYyNyAvKiBjb25nZXN0aW9uX3dp
bmRvd19wdXNoYmFja19jb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIzRTIxQjFGREI4MDBBNURGMjcgLyogY29uZ2VzdGlvbl93
aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oICovOyB9OworCQk0MUZDQkI0MTIxQjFGREI4MDBB
NURGMjcgLyogY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjNGMjFCMUZEQjgw
MEE1REYyNyAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjICovOyB9
OworCQk0MUZDQkI0NjIxQjFGREVGMDBBNURGMjcgLyogbWRuc19tZXNzYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0MjIxQjFGREVFMDBB
NURGMjcgLyogbWRuc19tZXNzYWdlLmggKi87IH07CisJCTQxRkNCQjQ3MjFCMUZERUYwMEE1REYy
NyAvKiBpY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNDMyMUIxRkRFRTAwQTVERjI3IC8qIGljZWNyZWRl
bnRpYWxzaXRlcmF0b3IuY2MgKi87IH07CisJCTQxRkNCQjQ4MjFCMUZERUYwMEE1REYyNyAvKiBt
ZG5zX21lc3NhZ2UuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUZDQkI0NDIxQjFGREVGMDBBNURGMjcgLyogbWRuc19tZXNzYWdlLmNjICovOyB9Owor
CQk0MUZDQkI0OTIxQjFGREVGMDBBNURGMjcgLyogaWNlY3JlZGVudGlhbHNpdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNDUyMUIx
RkRFRjAwQTVERjI3IC8qIGljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCAqLzsgfTsKKwkJNDFGQ0JC
NTEyMUIxRkU0NjAwQTVERjI3IC8qIGNwdV9zcGVlZF9leHBlcmltZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0QjIxQjFGRTQ0MDBBNURG
MjcgLyogY3B1X3NwZWVkX2V4cGVyaW1lbnQuaCAqLzsgfTsKKwkJNDFGQ0JCNTIyMUIxRkU0NjAw
QTVERjI3IC8qIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNEMyMUIxRkU0NDAwQTVERjI3
IC8qIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjICovOyB9OworCQk0MUZDQkI1MzIx
QjFGRTQ2MDBBNURGMjcgLyogY3B1X3NwZWVkX2V4cGVyaW1lbnQuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0RDIxQjFGRTQ1MDBBNURGMjcg
LyogY3B1X3NwZWVkX2V4cGVyaW1lbnQuY2MgKi87IH07CisJCTQxRkNCQjU0MjFCMUZFNDYwMEE1
REYyNyAvKiBqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNEUyMUIxRkU0NTAwQTVERjI3IC8q
IGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmggKi87IH07CisJCTQxRkNCQjU1MjFCMUZF
NDYwMEE1REYyNyAvKiBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNEYyMUIxRkU0
NTAwQTVERjI3IC8qIG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmggKi87IH07
CisJCTQxRkNCQjU2MjFCMUZFNDYwMEE1REYyNyAvKiBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVf
ZXhwZXJpbWVudC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRkNCQjUwMjFCMUZFNDUwMEE1REYyNyAvKiBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVf
ZXhwZXJpbWVudC5jYyAqLzsgfTsKKwkJNDFGQ0JCNTkyMUIxRkU2RTAwQTVERjI3IC8qIGZyYW1l
X2R1bXBpbmdfZGVjb2Rlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRkNCQjU3MjFCMUZFNkQwMEE1REYyNyAvKiBmcmFtZV9kdW1waW5nX2RlY29k
ZXIuY2MgKi87IH07CisJCTQxRkNCQjVBMjFCMUZFNkUwMEE1REYyNyAvKiBmcmFtZV9kdW1waW5n
X2RlY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRkNCQjU4MjFCMUZFNkUwMEE1REYyNyAvKiBmcmFtZV9kdW1waW5nX2RlY29kZXIuaCAqLzsg
fTsKKwkJNDFGQ0JCNUMyMUIxRkVBMzAwQTVERjI3IC8qIGJpdHJhdGVfY29udHJvbGxlci5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjVCMjFC
MUZFQTMwMEE1REYyNyAvKiBiaXRyYXRlX2NvbnRyb2xsZXIuY2MgKi87IH07CisJCTQxRkNCQjVG
MjFCMUZFQzQwMEE1REYyNyAvKiBnb29nX2NjX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjVEMjFCMUZFQzQwMEE1REYyNyAvKiBn
b29nX2NjX2ZhY3RvcnkuaCAqLzsgfTsKKwkJNDFGQ0JCNjAyMUIxRkVDNDAwQTVERjI3IC8qIGdv
b2dfY2NfZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRkNCQjVFMjFCMUZFQzQwMEE1REYyNyAvKiBnb29nX2NjX2ZhY3RvcnkuY2MgKi87
IH07CisJCTQxRkNCQjY0MjFCMUZFRjYwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xh
eWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFG
Q0JCNjEyMUIxRkVGNTAwQTVERjI3IC8qIGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmggKi87
IH07CisJCTQxRkNCQjY1MjFCMUZFRjYwMEE1REYyNyAvKiB2cDhfdGVtcG9yYWxfbGF5ZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI2MjIx
QjFGRUY1MDBBNURGMjcgLyogdnA4X3RlbXBvcmFsX2xheWVycy5oICovOyB9OworCQk0MUZDQkI2
NjIxQjFGRUY2MDBBNURGMjcgLyogY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI2MzIxQjFGRUY1
MDBBNURGMjcgLyogY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MgKi87IH07CisJCTQxRkNC
QjY5MjFCMUZGMUIwMEE1REYyNyAvKiBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI2NzIx
QjFGRjFCMDBBNURGMjcgLyogbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oICovOyB9
OworCQk0MUZDQkI2QTIxQjFGRjFCMDBBNURGMjcgLyogbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0
aW1hdGlvbi5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRkNCQjY4MjFCMUZGMUIwMEE1REYyNyAvKiBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0
aW9uLmNjICovOyB9OworCQk0MUZDQkI2RDIxQjFGRjNBMDBBNURGMjcgLyoga2V5X2Rlcml2YXRp
b24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZD
QkI2QjIxQjFGRjM5MDBBNURGMjcgLyoga2V5X2Rlcml2YXRpb24uY2MgKi87IH07CisJCTQxRkNC
QjZFMjFCMUZGM0EwMEE1REYyNyAvKiBrZXlfZGVyaXZhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNkMyMUIxRkYzQTAwQTVERjI3IC8q
IGtleV9kZXJpdmF0aW9uLmggKi87IH07CisJCTQxRkNCQjcxMjFCMUZGNzQwMEE1REYyNyAvKiBo
ZHJfbWV0YWRhdGEuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUZDQkI2RjIxQjFGRjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmNjICovOyB9Owor
CQk0MUZDQkI3MjIxQjFGRjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI3MDIxQjFGRjc0MDBBNURG
MjcgLyogaGRyX21ldGFkYXRhLmggKi87IH07CisJCTQxRkNCQjc1MjFCMUZGQTQwMEE1REYyNyAv
KiBjb2NvYV90aHJlYWRpbmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUZDQkI3MzIxQjFGRkE0MDBBNURGMjcgLyogY29jb2FfdGhyZWFkaW5nLm1t
ICovOyB9OworCQk0MUZDQkI3NjIxQjFGRkE0MDBBNURGMjcgLyogY29jb2FfdGhyZWFkaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI3NDIx
QjFGRkE0MDBBNURGMjcgLyogY29jb2FfdGhyZWFkaW5nLmggKi87IH07CisJCTQxRkNCQjc5MjFC
MUZGQzAwMEE1REYyNyAvKiBhc2NpaS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFGQ0JCNzcyMUIxRkZCRjAwQTVERjI3IC8qIGFzY2lpLmggKi87IH07
CisJCTQxRkNCQjdBMjFCMUZGQzAwMEE1REYyNyAvKiBhc2NpaS5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjc4MjFCMUZGQzAwMEE1REYyNyAv
KiBhc2NpaS5jYyAqLzsgfTsKKwkJNDFGQ0JCN0QyMUIxRkZGNjAwQTVERjI3IC8qIG9wZW5zc2xf
a2V5X2Rlcml2YXRpb25faGtkZi5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRkNCQjdCMjFCMUZGRjUwMEE1REYyNyAvKiBvcGVuc3NsX2tleV9kZXJp
dmF0aW9uX2hrZGYuY2MgKi87IH07CisJCTQxRkNCQjdFMjFCMUZGRjYwMEE1REYyNyAvKiBvcGVu
c3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRkNCQjdDMjFCMUZGRjUwMEE1REYyNyAvKiBvcGVuc3NsX2tleV9k
ZXJpdmF0aW9uX2hrZGYuaCAqLzsgfTsKKwkJNDFGQ0JCODAyMUIyMDAxMjAwQTVERjI3IC8qIHN0
cmluZ192aWV3LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFGQ0JCN0YyMUIyMDAxMTAwQTVERjI3IC8qIHN0cmluZ192aWV3LmNjICovOyB9OworCQk0
MUZDQkI4NDIxQjIwMDdCMDBBNURGMjcgLyogbWVtdXRpbC5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjgyMjFCMjAwN0IwMEE1REYyNyAvKiBt
ZW11dGlsLmNjICovOyB9OworCQk0MUZDQkI4NTIxQjIwMDdCMDBBNURGMjcgLyogbWVtdXRpbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCODMy
MUIyMDA3QjAwQTVERjI3IC8qIG1lbXV0aWwuaCAqLzsgfTsKKwkJNDFGQ0JCODkyMUIyMDBGRDAw
QTVERjI3IC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzlFMjE2OTg4OTQwMEVGMzdFRCAvKiBS
VENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0gKi87IH07CiAJCTQxRkU4NjUxMjE1QzUzMDcwMEI2
MkMwNyAvKiBuYXNtLWxpc3RmbXQuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRkU4NjUwMjE1QzUzMDYwMEI2MkMwNyAvKiBuYXNtLWxpc3RmbXQuYyAq
LzsgfTsKIAkJNDFGRTg2NTMyMTVDNTMyNTAwQjYyQzA3IC8qIG5hc20tZXZhbC5jIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGRTg2NDUyMTVDNTI2MDAw
QjYyQzA3IC8qIG5hc20tZXZhbC5jICovOyB9OwogCQk0MUZFODY1NDIxNUM1MzI1MDBCNjJDMDcg
LyogbmFzbS1wcC5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFEMTI0MjYyMTVDNTI0MTAwMzZCMDU3IC8qIG5hc20tcHAuYyAqLzsgfTsKQEAgLTE2ODUs
OCArMTcxNCw2IEBACiAJCTVDMDg4NTMzMUU0QTk5RDIwMDQwMzk5NSAvKiByZGIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMDg4NTIxMUU0QTk5RDIw
MDQwMzk5NSAvKiByZGIuaCAqLzsgfTsKIAkJNUMwODg1MzQxRTRBOTlEMjAwNDAzOTk1IC8qIHJk
YnguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMDg4
NTIyMUU0QTk5RDIwMDQwMzk5NSAvKiByZGJ4LmggKi87IH07CiAJCTVDMDg4NTM1MUU0QTk5RDIw
MDQwMzk5NSAvKiBzdGF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzA4ODUyMzFFNEE5OUQyMDA0MDM5OTUgLyogc3RhdC5oICovOyB9OwotCQk1QzA4
OEMxMDFFNEFBNDQ0MDA0MDM5OTUgLyogYnVuZGxlZmlsdGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2M0ZBM0ExRTQxNzYxRjAwMkNBNTMxIC8q
IGJ1bmRsZWZpbHRlci5jYyAqLzsgfTsKLQkJNUMwODhDMTExRTRBQTQ0NDAwNDAzOTk1IC8qIGJ1
bmRsZWZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUM2M0ZBM0IxRTQxNzYxRjAwMkNBNTMxIC8qIGJ1bmRsZWZpbHRlci5oICovOyB9OwogCQk1
QzA4OEMxMjFFNEFBNDQ0MDA0MDM5OTUgLyogY2hhbm5lbC5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNjNGQTNEMUU0MTc2MUYwMDJDQTUzMSAvKiBj
aGFubmVsLmNjICovOyB9OwogCQk1QzA4OEMxMzFFNEFBNDQ0MDA0MDM5OTUgLyogY2hhbm5lbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2M0ZBM0Ux
RTQxNzYxRjAwMkNBNTMxIC8qIGNoYW5uZWwuaCAqLzsgfTsKIAkJNUMwODhDMTQxRTRBQTQ0NDAw
NDAzOTk1IC8qIGNoYW5uZWxtYW5hZ2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUM2M0ZBNDAxRTQxNzYxRjAwMkNBNTMxIC8qIGNoYW5uZWxtYW5h
Z2VyLmNjICovOyB9OwpAQCAtMTk4MCw3ICsyMDA3LDYgQEAKIAkJNUM0QjRDMUIxRTQzMUY3NTAw
MjY1MUM4IC8qIGk0MjBfYnVmZmVyX3Bvb2wuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRCNEMxMjFFNDMxRjc1MDAyNjUxQzggLyogaTQyMF9idWZm
ZXJfcG9vbC5jYyAqLzsgfTsKIAkJNUM0QjRDMUMxRTQzMUY3NTAwMjY1MUM4IC8qIGluY29taW5n
X3ZpZGVvX3N0cmVhbS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDNEI0QzEzMUU0MzFGNzUwMDI2NTFDOCAvKiBpbmNvbWluZ192aWRlb19zdHJlYW0u
Y2MgKi87IH07CiAJCTVDNEI0QzFFMUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZV9idWZm
ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRC
NEMxNTFFNDMxRjc1MDAyNjUxQzggLyogdmlkZW9fZnJhbWVfYnVmZmVyLmNjICovOyB9OwotCQk1
QzRCNEMxRjFFNDMxRjc1MDAyNjUxQzggLyogdmlkZW9fZnJhbWUuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRCNEMxNjFFNDMxRjc1MDAyNjUxQzgg
LyogdmlkZW9fZnJhbWUuY2MgKi87IH07CiAJCTVDNEI0QzIwMUU0MzFGNzUwMDI2NTFDOCAvKiB2
aWRlb19yZW5kZXJfZnJhbWVzLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUM0QjRDMTcxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX3JlbmRlcl9mcmFt
ZXMuY2MgKi87IH07CiAJCTVDNEI0QzIxMUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19yZW5kZXJf
ZnJhbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzRCNEMxODFFNDMxRjc1MDAyNjUxQzggLyogdmlkZW9fcmVuZGVyX2ZyYW1lcy5oICovOyB9Owog
CQk1QzRCNEM1OTFFNDMxRjlDMDAyNjUxQzggLyogYXVkaW9fY29udmVydGVyLmNjIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0QjRDMjQxRTQzMUY5QzAw
MjY1MUM4IC8qIGF1ZGlvX2NvbnZlcnRlci5jYyAqLzsgfTsKQEAgLTIzNDUsOCArMjM3MSw2IEBA
CiAJCTVDREQ4MzdBMUU0MzlBMzUwMDYyMUU5MiAvKiBmcmFtZV9kcm9wcGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODM2QzFFNDM5QTM1MDA2
MjFFOTIgLyogZnJhbWVfZHJvcHBlci5oICovOyB9OwogCQk1Q0REODM3QjFFNDM5QTM1MDA2MjFF
OTIgLyogaXZmX2ZpbGVfd3JpdGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNERDgzNkQxRTQzOUEzNTAwNjIxRTkyIC8qIGl2Zl9maWxlX3dyaXRl
ci5jYyAqLzsgfTsKIAkJNUNERDgzN0MxRTQzOUEzNTAwNjIxRTkyIC8qIGl2Zl9maWxlX3dyaXRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDgz
NkUxRTQzOUEzNTAwNjIxRTkyIC8qIGl2Zl9maWxlX3dyaXRlci5oICovOyB9OwotCQk1Q0REODM3
RDFFNDM5QTM1MDA2MjFFOTIgLyogbW92aW5nX2F2ZXJhZ2UuY2MgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODM2RjFFNDM5QTM1MDA2MjFFOTIgLyog
bW92aW5nX2F2ZXJhZ2UuY2MgKi87IH07Ci0JCTVDREQ4MzdFMUU0MzlBMzUwMDYyMUU5MiAvKiBt
b3ZpbmdfYXZlcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNERDgzNzAxRTQzOUEzNTAwNjIxRTkyIC8qIG1vdmluZ19hdmVyYWdlLmggKi87IH07
CiAJCTVDREQ4MzgxMUU0MzlBMzUwMDYyMUU5MiAvKiBxdWFsaXR5X3NjYWxlci5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4MzczMUU0MzlBMzUw
MDYyMUU5MiAvKiBxdWFsaXR5X3NjYWxlci5jYyAqLzsgfTsKIAkJNUNERDgzODIxRTQzOUEzNTAw
NjIxRTkyIC8qIHF1YWxpdHlfc2NhbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0REODM3NDFFNDM5QTM1MDA2MjFFOTIgLyogcXVhbGl0eV9zY2Fs
ZXIuaCAqLzsgfTsKIAkJNUNERDgzODUxRTQzOUEzNTAwNjIxRTkyIC8qIHZwOF9oZWFkZXJfcGFy
c2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNE
RDgzNzcxRTQzOUEzNTAwNjIxRTkyIC8qIHZwOF9oZWFkZXJfcGFyc2VyLmNjICovOyB9OwpAQCAt
MjQ1Myw4ICsyNDc3LDYgQEAKIAkJNUNERDg1MTAxRTQzQjFFQTAwNjIxRTkyIC8qIGF1ZGlvX2Nv
ZGluZ19tb2R1bGUuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0REODRGOTFFNDNCMUVBMDA2MjFFOTIgLyogYXVkaW9fY29kaW5nX21vZHVsZS5jYyAq
LzsgfTsKIAkJNUNERDg1MTIxRTQzQjFFQTAwNjIxRTkyIC8qIGNhbGxfc3RhdGlzdGljcy5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4NEZCMUU0
M0IxRUEwMDYyMUU5MiAvKiBjYWxsX3N0YXRpc3RpY3MuY2MgKi87IH07CiAJCTVDREQ4NTEzMUU0
M0IxRUEwMDYyMUU5MiAvKiBjYWxsX3N0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4NEZDMUU0M0IxRUEwMDYyMUU5MiAvKiBjYWxs
X3N0YXRpc3RpY3MuaCAqLzsgfTsKLQkJNUNERDg1MTUxRTQzQjFFQTAwNjIxRTkyIC8qIGNvZGVj
X21hbmFnZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0REODRGRTFFNDNCMUVBMDA2MjFFOTIgLyogY29kZWNfbWFuYWdlci5jYyAqLzsgfTsKLQkJ
NUNERDg1MTYxRTQzQjFFQTAwNjIxRTkyIC8qIGNvZGVjX21hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4NEZGMUU0M0IxRUEwMDYyMUU5
MiAvKiBjb2RlY19tYW5hZ2VyLmggKi87IH07CiAJCTVDREQ4NTE4MUU0M0IxRUEwMDYyMUU5MiAv
KiByZW50X2FfY29kZWMuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0REODUwMTFFNDNCMUVBMDA2MjFFOTIgLyogcmVudF9hX2NvZGVjLmNjICovOyB9
OwogCQk1Q0REODUxOTFFNDNCMUVBMDA2MjFFOTIgLyogcmVudF9hX2NvZGVjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODUwMjFFNDNCMUVBMDA2
MjFFOTIgLyogcmVudF9hX2NvZGVjLmggKi87IH07CiAJCTVDREQ4NTJGMUU0M0IzOUMwMDYyMUU5
MiAvKiBiaXRyYXRlX2FsbG9jYXRvci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDREQ4NTFDMUU0M0IzOUMwMDYyMUU5MiAvKiBiaXRyYXRlX2FsbG9j
YXRvci5jYyAqLzsgfTsKQEAgLTI4NDEsOCArMjg2Myw2IEBACiAJCTVDREQ4QTRCMUU0M0JGQjMw
MDYyMUU5MiAvKiByYW5kb21fdmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0REODlFMjFFNDNCRkIzMDA2MjFFOTIgLyogcmFuZG9tX3ZlY3Rv
ci5oICovOyB9OwogCQk1Q0REOEE0RDFFNDNCRkIzMDA2MjFFOTIgLyogcmVkX3BheWxvYWRfc3Bs
aXR0ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0REODlFNDFFNDNCRkIzMDA2MjFFOTIgLyogcmVkX3BheWxvYWRfc3BsaXR0ZXIuY2MgKi87IH07
CiAJCTVDREQ4QTRFMUU0M0JGQjMwMDYyMUU5MiAvKiByZWRfcGF5bG9hZF9zcGxpdHRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDg5RTUxRTQz
QkZCMzAwNjIxRTkyIC8qIHJlZF9wYXlsb2FkX3NwbGl0dGVyLmggKi87IH07Ci0JCTVDREQ4QTRG
MUU0M0JGQjMwMDYyMUU5MiAvKiBydGNwLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNERDg5RTYxRTQzQkZCMzAwNjIxRTkyIC8qIHJ0Y3AuY2MgKi87
IH07Ci0JCTVDREQ4QTUwMUU0M0JGQjMwMDYyMUU5MiAvKiBydGNwLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODlFNzFFNDNCRkIzMDA2MjFFOTIg
LyogcnRjcC5oICovOyB9OwogCQk1Q0REOEE1MTFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGlj
c19jYWxjdWxhdG9yLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNERDg5RTgxRTQzQkZCMzAwNjIxRTkyIC8qIHN0YXRpc3RpY3NfY2FsY3VsYXRvci5j
YyAqLzsgfTsKIAkJNUNERDhBNTIxRTQzQkZCMzAwNjIxRTkyIC8qIHN0YXRpc3RpY3NfY2FsY3Vs
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNE
RDg5RTkxRTQzQkZCMzAwNjIxRTkyIC8qIHN0YXRpc3RpY3NfY2FsY3VsYXRvci5oICovOyB9Owog
CQk1Q0REOEE1NDFFNDNCRkIzMDA2MjFFOTIgLyogc3luY19idWZmZXIuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODlFQjFFNDNCRkIzMDA2MjFF
OTIgLyogc3luY19idWZmZXIuY2MgKi87IH07CkBAIC0zNzk4LDcgKzM4MTgsNiBAQAogCQk0MTNB
MjE0NDFGRTE4RDRDMDAzNzNFOTkgLyogdGVzdGJhc2U2NC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSB0ZXN0YmFzZTY0Lmg7IHBhdGggPSBydGNfYmFzZS90ZXN0YmFzZTY0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMTQ1MUZFMThENEMwMDM3M0U5OSAv
KiBmdW5jdGlvbl92aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGZ1bmN0
aW9uX3ZpZXcuaDsgcGF0aCA9IHJ0Y19iYXNlL2Z1bmN0aW9uX3ZpZXcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxNDcxRkUxOEQ0RDAwMzczRTk5IC8qIGZvcm1hdF9tYWNy
b3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gZm9ybWF0X21hY3Jvcy5oOyBw
YXRoID0gcnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0MTNBMjE0ODFGRTE4RDREMDAzNzNFOTkgLyogdW5peGZpbGVzeXN0ZW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gdW5peGZpbGVzeXN0ZW0uaDsgcGF0aCA9IHJ0Y19i
YXNlL3VuaXhmaWxlc3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0Ey
MTQ5MUZFMThENEUwMDM3M0U5OSAvKiB0ZXN0ZWNob3NlcnZlci5jYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RlY2hvc2VydmVyLmNjOyBwYXRoID0gcnRjX2Jhc2Uv
dGVzdGVjaG9zZXJ2ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMTRB
MUZFMThENEUwMDM3M0U5OSAvKiBiaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5j
YzsgcGF0aCA9IHJ0Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuY2M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMTRCMUZFMThENEUwMDM3M0U5OSAvKiBwcm94eV91
bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHByb3h5X3Vu
aXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2UvcHJveHlfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zODcyLDcgKzM4OTEsNiBAQAogCQk0MTNBMjE5ODFGRTE4RDhB
MDAzNzNFOTkgLyogYXRvbWljb3BzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IGF0b21pY29wcy5oOyBwYXRoID0gcnRjX2Jhc2UvYXRvbWljb3BzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxM0EyMTlBMUZFMThEOEIwMDM3M0U5OSAvKiBvcGVuc3NsYWRhcHRl
ci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG9wZW5zc2xhZGFwdGVy
LmNjOyBwYXRoID0gcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxM0EyMTlCMUZFMThEOEIwMDM3M0U5OSAvKiBzb2NrZXRhZGFwdGVycy5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHNvY2tldGFkYXB0ZXJzLmNj
OyBwYXRoID0gcnRjX2Jhc2Uvc29ja2V0YWRhcHRlcnMuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxM0EyMTlEMUZFMThEOEQwMDM3M0U5OSAvKiBwYXRodXRpbHNfdW5pdHRlc3Qu
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBwYXRodXRpbHNfdW5pdHRl
c3QuY2M7IHBhdGggPSBydGNfYmFzZS9wYXRodXRpbHNfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMTlFMUZFMThEOEQwMDM3M0U5OSAvKiB0YXNrX3F1ZXVl
X3dpbi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRhc2tfcXVldWVf
d2luLmNjOyBwYXRoID0gcnRjX2Jhc2UvdGFza19xdWV1ZV93aW4uY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxM0EyMTlGMUZFMThEOEUwMDM3M0U5OSAvKiB0ZXN0dXRpbHMuY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0ZXN0dXRpbHMuY2M7IHBhdGgg
PSBydGNfYmFzZS90ZXN0dXRpbHMuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
M0EyMUEyMUZFMThEOEYwMDM3M0U5OSAvKiBzaWdzbG90X3VuaXR0ZXN0LmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc2lnc2xvdF91bml0dGVzdC5jYzsgcGF0aCA9IHJ0
Y19iYXNlL3NpZ3Nsb3RfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0zOTA3LDcgKzM5MjUsNiBAQAogCQk0MTNBMjFDMzFGRTE4RDlFMDAzNzNFOTkgLyogY2FsbGJh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gY2FsbGJhY2suaDsgcGF0aCA9
IHJ0Y19iYXNlL2NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0Ey
MUM1MUZFMThEOUYwMDM3M0U5OSAvKiBoZWxwZXJzX3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gaGVscGVyc191bml0dGVzdC5jYzsgcGF0aCA9IHJ0Y19i
YXNlL2hlbHBlcnNfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
M0EyMUM2MUZFMThEQTAwMDM3M0U5OSAvKiBuYXRzb2NrZXRmYWN0b3J5LmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gbmF0c29ja2V0ZmFjdG9yeS5jYzsgcGF0aCA9IHJ0
Y19iYXNlL25hdHNvY2tldGZhY3RvcnkuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQxM0EyMUM3MUZFMThEQTEwMDM3M0U5OSAvKiBvcHRpb25zZmlsZV91bml0dGVzdC5jYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG9wdGlvbnNmaWxlX3VuaXR0ZXN0LmNj
OyBwYXRoID0gcnRjX2Jhc2Uvb3B0aW9uc2ZpbGVfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxM0EyMUM4MUZFMThEQTEwMDM3M0U5OSAvKiBuYXRfdW5pdHRlc3Qu
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBuYXRfdW5pdHRlc3QuY2M7
IHBhdGggPSBydGNfYmFzZS9uYXRfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxM0EyMUM5MUZFMThEQTIwMDM3M0U5OSAvKiBwbGF0Zm9ybV90aHJlYWRfdHlwZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcGxhdGZvcm1fdGhyZWFkX3R5cGVz
Lmg7IHBhdGggPSBydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxQ0ExRkUxOERBMzAwMzczRTk5IC8qIHBsYXRmb3JtX3Ro
cmVhZC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHBsYXRmb3JtX3Ro
cmVhZC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTM5MzYsMTggKzM5NTMsMTUgQEAKIAkJNDEzQTIxRTQxRkUxOERC
MDAwMzczRTk5IC8qIG1hY3V0aWxzLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gbWFjdXRpbHMuY2M7IHBhdGggPSBydGNfYmFzZS9tYWN1dGlscy5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRTUxRkUxOERCMTAwMzczRTk5IC8qIHRhc2tfcXVl
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gdGFza19xdWV1ZS5oOyBwYXRo
ID0gcnRjX2Jhc2UvdGFza19xdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTNBMjFFNzFGRTE4REIxMDAzNzNFOTkgLyogYml0YnVmZmVyLmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gYml0YnVmZmVyLmNjOyBwYXRoID0gcnRjX2Jhc2UvYml0YnVm
ZmVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTNBMjFFODFGRTE4REIyMDAz
NzNFOTkgLyogcGF0aHV0aWxzLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gcGF0aHV0aWxzLmNjOyBwYXRoID0gcnRjX2Jhc2UvcGF0aHV0aWxzLmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFFOTFGRTE4REIyMDAzNzNFOTkgLyogcGh5c2ljYWxz
b2NrZXRzZXJ2ZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBwaHlz
aWNhbHNvY2tldHNlcnZlci5jYzsgcGF0aCA9IHJ0Y19iYXNlL3BoeXNpY2Fsc29ja2V0c2VydmVy
LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFFQTFGRTE4REIzMDAzNzNF
OTkgLyogYnl0ZW9yZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGJ5dGVv
cmRlci5oOyBwYXRoID0gcnRjX2Jhc2UvYnl0ZW9yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxM0EyMUVCMUZFMThEQjMwMDM3M0U5OSAvKiBzc2xzdHJlYW1hZGFwdGVyX3Vu
aXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc3Nsc3RyZWFt
YWRhcHRlcl91bml0dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXJfdW5p
dHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUVFMUZFMThEQjQw
MDM3M0U5OSAvKiB0aHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gdGhy
ZWFkLmg7IHBhdGggPSBydGNfYmFzZS90aHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzQTIxRUYxRkUxOERCNTAwMzczRTk5IC8qIGNyYzMyLmNjICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gY3JjMzIuY2M7IHBhdGggPSBydGNfYmFzZS9jcmMzMi5j
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRjAxRkUxOERCNTAwMzczRTk5
IC8qIG1lbW9yeV91c2FnZV91bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IG1lbW9yeV91c2FnZV91bml0dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL21lbW9y
eV91c2FnZV91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEzQTIx
RjExRkUxOERCNjAwMzczRTk5IC8qIG9wdGlvbnNmaWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IG9wdGlvbnNmaWxlLmg7IHBhdGggPSBydGNfYmFzZS9vcHRpb25zZmlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFGMzFGRTE4REI3MDAzNzNFOTkg
Lyogc3dhcF9xdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBzd2FwX3F1
ZXVlLmg7IHBhdGggPSBydGNfYmFzZS9zd2FwX3F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxM0EyMUY0MUZFMThEQjcwMDM3M0U5OSAvKiBkc2NwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGRzY3AuaDsgcGF0aCA9IHJ0Y19iYXNlL2RzY3AuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRjUxRkUxOERCNzAwMzczRTk5IC8qIHRp
bWV1dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB0aW1ldXRpbHMuaDsg
cGF0aCA9IHJ0Y19iYXNlL3RpbWV1dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0MTNBMjFGNjFGRTE4REI4MDAzNzNFOTkgLyogb3B0aW9uc2ZpbGUuY2MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBvcHRpb25zZmlsZS5jYzsgcGF0aCA9IHJ0Y19iYXNl
L29wdGlvbnNmaWxlLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFGNzFG
RTE4REI4MDAzNzNFOTkgLyogdHlwZV90cmFpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gdHlwZV90cmFpdHMuaDsgcGF0aCA9IHJ0Y19iYXNlL3R5cGVfdHJhaXRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUY4MUZFMThEQjkwMDM3M0U5OSAvKiBy
YW5kb20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcmFuZG9tLmg7IHBhdGgg
PSBydGNfYmFzZS9yYW5kb20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIx
RjkxRkUxOERCOTAwMzczRTk5IC8qIHNvY2tldGFkZHJlc3NwYWlyLmNjICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc29ja2V0YWRkcmVzc3BhaXIuY2M7IHBhdGggPSBydGNf
YmFzZS9zb2NrZXRhZGRyZXNzcGFpci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTM5NjcsNyArMzk4MSw2IEBACiAJCTQxM0EyMjA5MUZFMThEQzAwMDM3M0U5OSAvKiBiaW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGJpbmQuaDsgcGF0aCA9IHJ0Y19iYXNl
L2JpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyMEExRkUxOERDMDAw
MzczRTk5IC8qIGd1bml0X3Byb2QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Z3VuaXRfcHJvZC5oOyBwYXRoID0gcnRjX2Jhc2UvZ3VuaXRfcHJvZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTNBMjIwQjFGRTE4REMxMDAzNzNFOTkgLyogYXN5bmNzb2NrZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYXN5bmNzb2NrZXQuaDsgcGF0aCA9
IHJ0Y19iYXNlL2FzeW5jc29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQx
M0EyMjBDMUZFMThEQzEwMDM3M0U5OSAvKiBub29wLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gbm9vcC5jYzsgcGF0aCA9IHJ0Y19iYXNlL25vb3AuY2M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjBEMUZFMThEQzIwMDM3M0U5OSAvKiByYXRlX2xp
bWl0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcmF0ZV9saW1pdGVyLmg7
IHBhdGggPSBydGNfYmFzZS9yYXRlX2xpbWl0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzQTIyMEUxRkUxOERDMjAwMzczRTk5IC8qIHNvY2tldGFkYXB0ZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHNvY2tldGFkYXB0ZXJzLmg7IHBhdGggPSBydGNf
YmFzZS9zb2NrZXRhZGFwdGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNB
MjIwRjFGRTE4REMyMDAzNzNFOTkgLyogcmF0ZXRyYWNrZXIuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSByYXRldHJhY2tlci5jYzsgcGF0aCA9IHJ0Y19iYXNlL3JhdGV0
cmFja2VyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDAwMiw3ICs0MDE1LDYg
QEAKIAkJNDEzQTIyMkYxRkUxOEREMjAwMzczRTk5IC8qIGJpbmRfdW5pdHRlc3QuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBiaW5kX3VuaXR0ZXN0LmNjOyBwYXRoID0g
cnRjX2Jhc2UvYmluZF91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEzQTIyMzExRkUxOEREMzAwMzczRTk5IC8qIHN0cmluZ3V0aWxzX3VuaXR0ZXN0LmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc3RyaW5ndXRpbHNfdW5pdHRlc3QuY2M7
IHBhdGggPSBydGNfYmFzZS9zdHJpbmd1dGlsc191bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDEzQTIyMzIxRkUxOEREMzAwMzczRTk5IC8qIGNvbXBpbGVfYXNzZXJ0
X2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gY29tcGlsZV9hc3NlcnRfYy5o
OyBwYXRoID0gcnRjX2Jhc2UvY29tcGlsZV9hc3NlcnRfYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MTNBMjIzMzFGRTE4REQ0MDAzNzNFOTkgLyogdW5peGZpbGVzeXN0ZW0uY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB1bml4ZmlsZXN5c3RlbS5jYzsg
cGF0aCA9IHJ0Y19iYXNlL3VuaXhmaWxlc3lzdGVtLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTNBMjIzNDFGRTE4REQ0MDAzNzNFOTkgLyogc3NsYWRhcHRlcl91bml0dGVzdC5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHNzbGFkYXB0ZXJfdW5pdHRl
c3QuY2M7IHBhdGggPSBydGNfYmFzZS9zc2xhZGFwdGVyX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjIzNTFGRTE4REQ1MDAzNzNFOTkgLyogY3JpdGljYWxz
ZWN0aW9uLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gY3JpdGljYWxz
ZWN0aW9uLmNjOyBwYXRoID0gcnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjIzNjFGRTE4REQ1MDAzNzNFOTkgLyogYnl0ZW9yZGVy
X3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gYnl0ZW9y
ZGVyX3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2UvYnl0ZW9yZGVyX3VuaXR0ZXN0LmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDAxMiw3ICs0MDI0LDYgQEAKIAkJNDEzQTIy
M0ExRkUxOEREODAwMzczRTk5IC8qIHJhdGVfbGltaXRlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IHJhdGVfbGltaXRlci5jYzsgcGF0aCA9IHJ0Y19iYXNlL3JhdGVf
bGltaXRlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyM0IxRkUxOERE
OTAwMzczRTk5IC8qIGJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBi
dWZmZXIuaDsgcGF0aCA9IHJ0Y19iYXNlL2J1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTNBMjIzQzFGRTE4REQ5MDAzNzNFOTkgLyogZXZlbnRfdHJhY2VyLmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gZXZlbnRfdHJhY2VyLmNjOyBwYXRoID0g
cnRjX2Jhc2UvZXZlbnRfdHJhY2VyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
MTNBMjIzRDFGRTE4REQ5MDAzNzNFOTkgLyogcGF0aHV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IHBhdGh1dGlscy5oOyBwYXRoID0gcnRjX2Jhc2UvcGF0aHV0aWxzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjNGMUZFMThEREEwMDM3M0U5OSAv
KiBzc2xyb290cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBzc2xyb290cy5o
OyBwYXRoID0gcnRjX2Jhc2Uvc3Nscm9vdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEzQTIyNDAxRkUxOEREQjAwMzczRTk5IC8qIG9wZW5zc2xkaWdlc3QuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBvcGVuc3NsZGlnZXN0LmNjOyBwYXRoID0gcnRj
X2Jhc2Uvb3BlbnNzbGRpZ2VzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEz
QTIyNDIxRkUxOEREQjAwMzczRTk5IC8qIGh0dHBjb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gaHR0cGNvbW1vbi5oOyBwYXRoID0gcnRjX2Jhc2UvaHR0cGNvbW1vbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDA0Myw3ICs0MDU0LDYgQEAKIAkJNDEz
QTIyNUQxRkUxOERFNjAwMzczRTk5IC8qIGF0b21pY29wc191bml0dGVzdC5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGF0b21pY29wc191bml0dGVzdC5jYzsgcGF0aCA9
IHJ0Y19iYXNlL2F0b21pY29wc191bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzQTIyNUUxRkUxOERFNzAwMzczRTk5IC8qIHN0cmluZ2l6ZV9tYWNyb3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gc3RyaW5naXplX21hY3Jvcy5oOyBwYXRoID0g
cnRjX2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTNBMjI2MTFGRTE4REU4MDAzNzNFOTkgLyogY3B1X3RpbWVfdW5pdHRlc3QuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBjcHVfdGltZV91bml0dGVzdC5jYzsgcGF0
aCA9IHJ0Y19iYXNlL2NwdV90aW1lX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTNBMjI2MjFGRTE4REU5MDAzNzNFOTkgLyogZmlsZXV0aWxzLmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gZmlsZXV0aWxzLmNjOyBwYXRoID0gcnRjX2Jh
c2UvZmlsZXV0aWxzLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI2MzFG
RTE4REVBMDAzNzNFOTkgLyogb3BlbnNzbHN0cmVhbWFkYXB0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gb3BlbnNzbHN0cmVhbWFkYXB0ZXIuaDsgcGF0aCA9IHJ0Y19iYXNl
L29wZW5zc2xzdHJlYW1hZGFwdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
M0EyMjY0MUZFMThERUIwMDM3M0U5OSAvKiBldmVudC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IGV2ZW50LmNjOyBwYXRoID0gcnRjX2Jhc2UvZXZlbnQuY2M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjY1MUZFMThERUIwMDM3M0U5OSAvKiBjcmMz
Ml91bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGNyYzMy
X3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2UvY3JjMzJfdW5pdHRlc3QuY2M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDUxLDcgKzQwNjEsNiBAQAogCQk0MTNBMjI2NzFGRTE4
REVDMDAzNzNFOTkgLyogc2lnc2xvdHRlc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBzaWdzbG90dGVzdGVyLmg7IHBhdGggPSBydGNfYmFzZS9zaWdzbG90dGVzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjY4MUZFMThERUUwMDM3M0U5OSAv
KiBuZXR3b3JrX3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gbmV0d29ya191bml0dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL25ldHdvcmtfdW5pdHRlc3Qu
Y2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjY5MUZFMThERUYwMDM3M0U5
OSAvKiBmbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBmbGFncy5oOyBw
YXRoID0gcnRjX2Jhc2UvZmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEz
QTIyNkExRkUxOERGMDAwMzczRTk5IC8qIGZpbGV1dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBmaWxldXRpbHMuaDsgcGF0aCA9IHJ0Y19iYXNlL2ZpbGV1dGlscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI2QjFGRTE4REYwMDAzNzNFOTkgLyog
bG9nc2lua3MuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBsb2dzaW5r
cy5jYzsgcGF0aCA9IHJ0Y19iYXNlL2xvZ3NpbmtzLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTNBMjI2QzFGRTE4REYwMDAzNzNFOTkgLyogc3NsaWRlbnRpdHlfdW5pdHRlc3Qu
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzc2xpZGVudGl0eV91bml0
dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3NzbGlkZW50aXR5X3VuaXR0ZXN0LmNjOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI2RDFGRTE4REYxMDAzNzNFOTkgLyogbnVsbHNv
Y2tldHNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBudWxsc29ja2V0
c2VydmVyLmg7IHBhdGggPSBydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00MDgxLDcgKzQwOTAsNiBAQAogCQk0MTNBMjI4NjFGRTE4REZD
MDAzNzNFOTkgLyogdGVzdHV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IHRlc3R1dGlscy5oOyBwYXRoID0gcnRjX2Jhc2UvdGVzdHV0aWxzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxM0EyMjg3MUZFMThERkQwMDM3M0U5OSAvKiBmaWxlcm90YXRpbmdz
dHJlYW0uY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBmaWxlcm90YXRp
bmdzdHJlYW0uY2M7IHBhdGggPSBydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0uY2M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjg4MUZFMThERkQwMDM3M0U5OSAvKiBydGNj
ZXJ0aWZpY2F0ZV91bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IHJ0Y2NlcnRpZmljYXRlX3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2UvcnRjY2VydGlm
aWNhdGVfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxM0EyMjhB
MUZFMThERkUwMDM3M0U5OSAvKiB0aHJlYWRfZGFyd2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gdGhyZWFkX2Rhcndpbi5tbTsgcGF0aCA9IHJ0Y19iYXNlL3Ro
cmVhZF9kYXJ3aW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjhCMUZF
MThERkUwMDM3M0U5OSAvKiB0YXNrX3F1ZXVlX2djZC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IHRhc2tfcXVldWVfZ2NkLmNjOyBwYXRoID0gcnRjX2Jhc2UvdGFza19x
dWV1ZV9nY2QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjhDMUZFMThE
RkUwMDM3M0U5OSAvKiBmaXJld2FsbHNvY2tldHNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBmaXJld2FsbHNvY2tldHNlcnZlci5oOyBwYXRoID0gcnRjX2Jhc2UvZmly
ZXdhbGxzb2NrZXRzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIy
OEUxRkUxOERGRjAwMzczRTk5IC8qIHRpbWV1dGlsc191bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRpbWV1dGlsc191bml0dGVzdC5jYzsgcGF0aCA9IHJ0
Y19iYXNlL3RpbWV1dGlsc191bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQwOTcsNyArNDEwNSw2IEBACiAJCTQxM0EyMjk5MUZFMThFMDMwMDM3M0U5OSAvKiBsb2Nh
dGlvbi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGxvY2F0aW9uLmNj
OyBwYXRoID0gcnRjX2Jhc2UvbG9jYXRpb24uY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxM0EyMjlBMUZFMThFMDQwMDM3M0U5OSAvKiBsb2NhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBsb2NhdGlvbi5oOyBwYXRoID0gcnRjX2Jhc2UvbG9jYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyOUIxRkUxOEUwNDAwMzczRTk5
IC8qIGlwYWRkcmVzcy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGlw
YWRkcmVzcy5jYzsgcGF0aCA9IHJ0Y19iYXNlL2lwYWRkcmVzcy5jYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDEzQTIyOUMxRkUxOEUwNDAwMzczRTk5IC8qIG5vb3AubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBub29wLm1tOyBwYXRoID0gcnRjX2Jh
c2Uvbm9vcC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyOUQxRkUxOEUw
NTAwMzczRTk5IC8qIHJhY2VfY2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSByYWNlX2NoZWNrZXIuaDsgcGF0aCA9IHJ0Y19iYXNlL3JhY2VfY2hlY2tlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI5RTFGRTE4RTA1MDAzNzNFOTkgLyogcmF0
ZV9saW1pdGVyX3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gcmF0ZV9saW1pdGVyX3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2UvcmF0ZV9saW1pdGVy
X3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI5RjFGRTE4
RTA2MDAzNzNFOTkgLyogc3NsZmluZ2VycHJpbnQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBzc2xmaW5nZXJwcmludC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3NzbGZpbmdl
cnByaW50LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE2NSwxNiArNDE3Miwx
MiBAQAogCQk0MTNFNjc2NDIxNjk4NTQ1MDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyVlA4Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUlRDVmlkZW9FbmNvZGVy
VlA4Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFNjc2RTIxNjk4NjNBMDBF
RjM3RUQgLyogdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYzsgcGF0aCA9IGNvZGVj
cy92cDgvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxM0U2NzZGMjE2OTg2M0EwMEVGMzdFRCAvKiBsaWJ2cHhfaW50ZXJmYWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGxpYnZweF9pbnRlcmZhY2UuaDsgcGF0aCA9
IGNvZGVjcy92cDgvbGlidnB4X2ludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0MTNFNjc3MDIxNjk4NjNCMDBFRjM3RUQgLyogdnA4X3RlbXBvcmFsX2xheWVycy5jYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHZwOF90ZW1wb3JhbF9sYXllcnMu
Y2M7IHBhdGggPSBjb2RlY3MvdnA4L3ZwOF90ZW1wb3JhbF9sYXllcnMuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxM0U2NzcxMjE2OTg2M0IwMEVGMzdFRCAvKiBsaWJ2cHhfaW50
ZXJmYWNlLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gbGlidnB4X2lu
dGVyZmFjZS5jYzsgcGF0aCA9IGNvZGVjcy92cDgvbGlidnB4X2ludGVyZmFjZS5jYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEzRTY3NzcyMTY5ODY3QTAwRUYzN0VEIC8qIGNoYW5u
ZWxfcmVjZWl2ZV9wcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjaGFu
bmVsX3JlY2VpdmVfcHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEzRTY3
NzgyMTY5ODY3QTAwRUYzN0VEIC8qIGNoYW5uZWxfcmVjZWl2ZV9wcm94eS5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNoYW5uZWxfcmVjZWl2ZV9wcm94eS5jYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTY3N0IyMTY5ODZBRDAwRUYzN0VEIC8qIHJ0
cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBydHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmNjOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTNFNjc3QzIxNjk4NkFFMDBFRjM3RUQgLyogcnRwX2hlYWRlcl9leHRlbnNp
b25fc2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBydHBfaGVhZGVyX2V4
dGVuc2lvbl9zaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0U2NzdGMjE2
OTg3MEYwMEVGMzdFRCAvKiBzdmNfY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IHN2Y19jb25maWcuaDsgcGF0aCA9IGNvZGVjcy92cDkvc3ZjX2NvbmZpZy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFNjc4MDIxNjk4NzBGMDBFRjM3RUQgLyogc3Zj
X2NvbmZpZy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHN2Y19jb25m
aWcuY2M7IHBhdGggPSBjb2RlY3MvdnA5L3N2Y19jb25maWcuY2M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxM0U2NzgzMjE2OTg3N0QwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJT
ZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENWaWRlb0VuY29k
ZXJTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTNFNjc4NDIxNjk4
NzdEMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSVENWaWRlb0VuY29kZXJTZXR0aW5ncy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTY3ODgyMTY5ODdCOTAwRUYzN0VEIC8qIFJU
Q0NWUGl4ZWxCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDQ1ZQ
aXhlbEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFNjc4OTIxNjk4
N0I5MDBFRjM3RUQgLyogUlRDQ1ZQaXhlbEJ1ZmZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFJUQ0NWUGl4ZWxCdWZmZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxM0U2NzhDMjE2OTg3REIwMEVGMzdFRCAvKiBSVENWaWRlb0ZyYW1lLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1ZpZGVvRnJhbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMDgsNyArNDMxMSw2IEBACiAJCTQxNDVFNEMyMUVG
ODk2Q0UwMEZDRjZFNiAvKiBydGNzdGF0c3JlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBydGNzdGF0c3JlcG9ydC5oOyBwYXRoID0gc3RhdHMvcnRjc3RhdHNyZXBvcnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0NUU0QzMxRUY4OTZEMjAwRkNGNkU2
IC8qIHJ0Y3N0YXRzX29iamVjdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
cnRjc3RhdHNfb2JqZWN0cy5oOyBwYXRoID0gc3RhdHMvcnRjc3RhdHNfb2JqZWN0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQ1RTRDNDFFRjg5NkQ3MDBGQ0Y2RTYgLyogcnRj
c3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnRjc3RhdHMuaDsgcGF0
aCA9IHN0YXRzL3J0Y3N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNDVF
NEM5MUVGOENCMzEwMEZDRjZFNiAvKiBjcmVhdGVwZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjcmVhdGVwZWVyY29ubmVjdGlvbmZh
Y3RvcnkuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDVFNENCMUVGOENCOEEw
MEZDRjZFNiAvKiBydHB0cmFuc3BvcnQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBydHB0cmFuc3BvcnQuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NDVFNENEMUVGOENCOTQwMEZDRjZFNiAvKiBydHB0cmFuc3BvcnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gcnRwdHJhbnNwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxNDVFNENGMUVGOENDMTcwMEZDRjZFNiAvKiB3ZWJydGN2aWRlb2VuZ2luZS5jYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHdlYnJ0Y3ZpZGVvZW5naW5lLmNj
OyBwYXRoID0gZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lLmNjOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDQ1NSw5ICs0NDU3LDcgQEAKIAkJNDE3OTUzQjMyMTY5ODI0MjAwMjgyNjZC
IC8qIFJUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxNzk1M0NEMjE2OTgzNEUwMDI4MjY2QiAvKiBjaGFubmVsX3Nl
bmQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjaGFubmVsX3NlbmQu
Y2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzk1M0NFMjE2OTgzNEUwMDI4MjY2
QiAvKiBjaGFubmVsX3NlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY2hh
bm5lbF9zZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNzk1M0NGMjE2OTgz
NEUwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmRfcHJveHkuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBjaGFubmVsX3NlbmRfcHJveHkuY2M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNzk1M0QwMjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3JlY2VpdmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY2hhbm5lbF9yZWNlaXZlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNzk1M0QxMjE2OTgzNEYwMDI4MjY2QiAvKiBj
aGFubmVsX3NlbmRfcHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY2hh
bm5lbF9zZW5kX3Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzk1M0Qy
MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3JlY2VpdmUuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBjaGFubmVsX3JlY2VpdmUuY2M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNzk1M0Q5MjE2OTgzOTAwMDI4MjY2QiAvKiBtZXRyaWNzLmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gbWV0cmljcy5jYzsgcGF0aCA9IHNvdXJj
ZS9tZXRyaWNzLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTc5NTNEQTIxNjk4
MzkwMDAyODI2NkIgLyogZmllbGRfdHJpYWwuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBmaWVsZF90cmlhbC5jYzsgcGF0aCA9IHNvdXJjZS9maWVsZF90cmlhbC5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MzYsNyArNDUzNiw2IEBACiAJCTQxOTI0
MTRBMjEyNzM3NkQwMDYzNEZDRiAvKiBiYXNpY2FzeW5jcmVzb2x2ZXJmYWN0b3J5LmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gYmFzaWNhc3luY3Jlc29sdmVyZmFjdG9y
eS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5MjQxNEIyMTI3Mzc2RDAwNjM0
RkNGIC8qIHJlZ2F0aGVyaW5nY29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSByZWdhdGhlcmluZ2NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE5MjQxNEMyMTI3Mzc2RTAwNjM0RkNGIC8qIGZha2VjYW5kaWRhdGVwYWlyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZha2VjYW5kaWRhdGVwYWlyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxOTI0MTREMjEyNzM3NkUwMDYzNEZDRiAvKiB1ZHB0
cmFuc3BvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gdWRwdHJhbnNwb3J0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTI0MTRFMjEyNzM3NkUwMDYzNEZD
RiAvKiBmYWtlcGFja2V0dHJhbnNwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IGZha2VwYWNrZXR0cmFuc3BvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE5MjQxNEYyMTI3Mzc2RTAwNjM0RkNGIC8qIGZha2VpY2V0cmFuc3BvcnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmFrZWljZXRyYW5zcG9ydC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTkyNDE1MDIxMjczNzZFMDA2MzRGQ0YgLyogaWNldHJhbnNwb3J0
aW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gaWNldHJhbnNwb3J0
aW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NjEsNyArNDU2MCw2
IEBACiAJCTQxOTI0MTgwMjEyNzQ5NzEwMDYzNEZDRiAvKiBiYWRfdmFyaWFudF9hY2Nlc3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYmFkX3ZhcmlhbnRfYWNjZXNzLmg7IHBh
dGggPSB0eXBlcy9iYWRfdmFyaWFudF9hY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE5MjQxODcyMTI3NDlDNzAwNjM0RkNGIC8qIHNlbmRfdGltZV9oaXN0b3J5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHNlbmRfdGltZV9oaXN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTI0MTg4MjEyNzQ5QzcwMDYzNEZDRiAvKiBzZW5k
X3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5MjQxODkyMTI3NDlDODAwNjM0RkNGIC8qIHBhY2VyX2Nv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcGFjZXJfY29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTkyNDE4QTIxMjc0OUM4MDA2
MzRGQ0YgLyogdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5MjQxOEYyMTI3NTgxMDAwNjM0RkNGIC8qIGZlY19w
cml2YXRlX3RhYmxlc19idXJzdHkuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBmZWNfcHJpdmF0ZV90YWJsZXNfYnVyc3R5LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTkyNDE5MzIxMjc1ODY0MDA2MzRGQ0YgLyogcm5uX3ZhZF93ZWlnaHRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHJubl92YWRfd2VpZ2h0cy5oOyBwYXRoID0g
c3JjL3Jubl92YWRfd2VpZ2h0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDcy
NCw4ICs0NzIyLDYgQEAKIAkJNDE5QzgzMjMxRkUyNDUyODAwNDBDMzBGIC8qIHJ0Y19ldmVudF9y
dHBfcGFja2V0X2luY29taW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHJ0
Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmg7IHBhdGggPSBydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTlDODMyODFGRTI0NUNCMDA0MEMzMEYgLyogcGFjZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gcGFjZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE5QzgzMkIxRkUyNDVDQzAwNDBDMzBGIC8qIGludGVydmFsX2J1ZGdldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBpbnRlcnZhbF9idWRnZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDE5QzgzMzIxRkUyNDVFOTAwNDBDMzBGIC8qIHRpbWVfaW50ZXJ2
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gdGltZV9pbnRlcnZhbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTlDODMzMzFGRTI0NUU5MDA0MEMzMEYgLyog
dGltZV9pbnRlcnZhbC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRp
bWVfaW50ZXJ2YWwuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUM4MzM3MUZF
MjQ2MjIwMDQwQzMwRiAvKiBhdWRpb19lbmNvZGVyX2c3MjJfY29uZmlnLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGF1ZGlvX2VuY29kZXJfZzcyMl9jb25maWcuaDsgcGF0aCA9
IGF1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMl9jb25maWcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QzgzMzgxRkUyNDYyMjAwNDBDMzBGIC8qIGF1ZGlvX2Rl
Y29kZXJfZzcyMi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBhdWRpb19kZWNv
ZGVyX2c3MjIuaDsgcGF0aCA9IGF1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlDODMzOTFGRTI0NjIyMDA0MEMzMEYg
LyogYXVkaW9fZW5jb2Rlcl9nNzIyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gYXVkaW9fZW5jb2Rlcl9nNzIyLmNjOyBwYXRoID0gYXVkaW9fY29kZWNzL2c3MjIvYXVk
aW9fZW5jb2Rlcl9nNzIyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc5OCw3
ICs0Nzk0LDYgQEAKIAkJNDE5QzgzRDAxRkUyNDdFRjAwNDBDMzBGIC8qIHBhY2tldHRyYW5zcG9y
dGludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHBhY2tldHRyYW5z
cG9ydGludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUM4M0QxMUZF
MjQ3RjAwMDQwQzMwRiAvKiBwYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHBhY2tldHRyYW5zcG9ydGludGVybmFsLmNjOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlDODNEMjFGRTI0N0YwMDA0MEMzMEYgLyogcG9y
dGludGVyZmFjZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHBvcnRp
bnRlcmZhY2UuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxOUM4M0QzMUZFMjQ3
RjAwMDQwQzMwRiAvKiB1ZHB0cmFuc3BvcnQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSB1ZHB0cmFuc3BvcnQuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxOUM4M0Q0MUZFMjQ3RjEwMDQwQzMwRiAvKiBkdGxzdHJhbnNwb3J0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGR0bHN0cmFuc3BvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE5QzgzRDUxRkUyNDdGMTAwNDBDMzBGIC8qIGR0bHN0cmFuc3BvcnRpbnRl
cm5hbC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGR0bHN0cmFuc3Bv
cnRpbnRlcm5hbC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QzgzRDYxRkUy
NDdGMTAwNDBDMzBGIC8qIGR0bHN0cmFuc3BvcnRpbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBkdGxzdHJhbnNwb3J0aW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQ5MDcsMTUgKzQ5MDIsMTIgQEAKIAkJNDFBMDhCQ0UyMTI3MkVFMTAw
MUQ1RDdCIC8qIGdhaW5fY29udHJvbGxlcjIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBnYWluX2NvbnRyb2xsZXIyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUEwOEJEMTIxMjcyRUZBMDAxRDVEN0IgLyogcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJvdW5kX3JvYmluX3BhY2tldF9x
dWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwOEJEMjIxMjcyRUZBMDAx
RDVEN0IgLyogcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MUEwOEJENTIxMjcyRjFDMDAxRDVEN0IgLyogY29uZ2VzdGlv
bl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQTA4QkQ2MjEyNzJGMUMwMDFENUQ3QiAvKiBjb25nZXN0
aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBMDhCREEyMTI3MkY4NDAwMUQ1RDdCIC8q
IGNvbXB1dGVfaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29tcHV0
ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUEwOEJEQjIxMjcyRjg0MDAxRDVEN0IgLyogYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBMDhCREMyMTI3MkY4NDAwMUQ1RDdCIC8qIGFk
YXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGFkYXB0aXZlX21v
ZGVfbGV2ZWxfZXN0aW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4
QkREMjEyNzJGODQwMDFENUQ3QiAvKiB2ZWN0b3JfZmxvYXRfZnJhbWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gdmVjdG9yX2Zsb2F0X2ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
QTA4QkRFMjEyNzJGODQwMDFENUQ3QiAvKiBnYWluX2FwcGxpZXIuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBnYWluX2FwcGxpZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4
QkRGMjEyNzJGODQwMDFENUQ3QiAvKiBmaXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBmaXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MUEwOEJFMDIxMjcyRjg1MDAxRDVEN0IgLyogZ2Fpbl9jdXJ2
ZV9hcHBsaWVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwOEJFMTIxMjcyRjg1MDAxRDVEN0IgLyog
aW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBpbnRlcnBvbGF0
ZWRfZ2Fpbl9jdXJ2ZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBMDhCRTIy
MTI3MkY4NTAwMUQ1RDdCIC8qIG5vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFBMDhCRTMyMTI3MkY4NTAwMUQ1RDdCIC8qIHZhZF93aXRoX2xldmVsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IHZhZF93aXRoX2xldmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MTc2LDExICs1MTY4LDggQEAKIAkJNDFENkI0NjIyMTI3MzFBMTAwOEY5MzUzIC8qIGFkYXB0
aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBhZGFwdGl2ZV9t
b2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFENkI0NjMyMTI3MzFBMjAwOEY5MzUzIC8qIGJpcXVhZF9maWx0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gYmlxdWFkX2ZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQ2QjQ2
NDIxMjczMUEyMDA4RjkzNTMgLyogYWRhcHRpdmVfYWdjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGFkYXB0
aXZlX2FnYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUQ2QjQ2NTIxMjczMUEy
MDA4RjkzNTMgLyogZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Zml4ZWRfZ2Fpbl9jb250cm9sbGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUQ2QjQ2NjIxMjczMUEyMDA4RjkzNTMgLyogdmVjdG9yX2Zsb2F0X2ZyYW1lLmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gdmVjdG9yX2Zsb2F0X2ZyYW1lLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MUQ2QjQ2NzIxMjczMUEzMDA4RjkzNTMgLyogZml4ZWRfZ2Fpbl9jb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IGZpeGVkX2dhaW5fY29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUQ2QjQ2ODIxMjczMUEzMDA4RjkzNTMgLyogc2F0dXJhdGlvbl9w
cm90ZWN0b3IuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBzYXR1cmF0aW9uX3Byb3RlY3Rvci5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFENkI0NjkyMTI3MzFBMzAwOEY5MzUzIC8q
IGdhaW5fY3VydmVfYXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBnYWluX2N1cnZlX2FwcGxpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFENkI0NkEyMTI3MzFBMzAwOEY5MzUz
IC8qIG5vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG5vaXNl
X3NwZWN0cnVtX2VzdGltYXRvci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFE
NkI0NkIyMTI3MzFBMzAwOEY5MzUzIC8qIHNhdHVyYXRpb25fcHJvdGVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IHNhdHVyYXRpb25fcHJvdGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRDZCNDZDMjEyNzMxQTQwMDhGOTM1MyAvKiB2YWRfd2l0aF9sZXZlbC5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IHZhZF93aXRoX2xldmVsLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTIzMSw3ICs1MjIwLDYgQEAKIAkJNDFFMDJDOTIyMTI3MzUyQTAwQzI3Q0Q2IC8qIGFj
a25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFFMDJDOTMyMTI3MzUyQTAwQzI3Q0Q2IC8qIHByb2JlX2JpdHJhdGVf
ZXN0aW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHByb2JlX2JpdHJh
dGVfZXN0aW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTAyQzk0MjEy
NzM1MkEwMEMyN0NENiAvKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3Rp
bWF0b3IuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxRTAyQzk1MjEyNzM1MkEw
MEMyN0NENiAvKiBnb29nX2NjX2ZhY3RvcnkuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBnb29nX2NjX2ZhY3RvcnkuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRTAyQzk2MjEyNzM1MkEwMEMyN0NENiAvKiBnb29nX2NjX25ldHdvcmtfY29udHJvbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBnb29nX2NjX25ldHdvcmtfY29udHJv
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUwMkM5NzIxMjczNTJBMDBDMjdD
RDYgLyogZGVsYXlfYmFzZWRfYndlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGRlbGF5X2Jhc2VkX2J3ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUwMkM5
ODIxMjczNTJCMDBDMjdDRDYgLyogYml0cmF0ZV9lc3RpbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gYml0cmF0ZV9lc3RpbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTUyNjAsNyArNTI0OCw2IEBACiAJCTQxRTAyQ0NCMjEyNzM1QjcwMEMyN0NE
NiAvKiBiaXRyYXRlX3NldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGJpdHJhdGVfc2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMDJD
RDEyMTI3MzYwNjAwQzI3Q0Q2IC8qIHNhbXBsZV9jb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IHNhbXBsZV9jb3VudGVyLmg7IHBhdGggPSBydGNfYmFzZS9udW1lcmlj
cy9zYW1wbGVfY291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUwMkNE
MjIxMjczNjA3MDBDMjdDRDYgLyogc2FtcGxlX2NvdW50ZXIuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBzYW1wbGVfY291bnRlci5jYzsgcGF0aCA9IHJ0Y19iYXNlL251
bWVyaWNzL3NhbXBsZV9jb3VudGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
MUUwMkNENjIxMjczNjNDMDBDMjdDRDYgLyogcGFjZXJfY29udHJvbGxlci5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IHBhY2VyX2NvbnRyb2xsZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRTAyQ0Q3MjEyNzM2M0MwMEMyN0NENiAvKiB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUwMkNEODIxMjczNjNEMDBDMjdDRDYgLyogc2VuZF90
aW1lX2hpc3RvcnkuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBzZW5kX3RpbWVfaGlzdG9yeS5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFQTUzQTQxRUZDMkJGRDAwMkZGMDRDIC8q
IGhtYWMuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gaG1hYy5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTQ2NSw4ICs1NDUyLDggQEAKIAkJNDFGOUJGQjMyMDUxQzkzNjAwQUJGMEI5IC8qIHNp
bXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5oOyBwYXRoID0gZW5naW5lL3NpbXVsY2FzdF9l
bmNvZGVyX2FkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGOUJGQzQy
MDUxQ0FFNDAwQUJGMEI5IC8qIHNpZ25hbF9wcm9jZXNzaW5nX2xpYnJhcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oOyBwYXRo
ID0gc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjlCRkM2MjA1MURDRTgwMEFCRjBCOSAv
KiB3ZWJydGNfdmFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHdlYnJ0Y192
YWQuaDsgcGF0aCA9IHZhZC9pbmNsdWRlL3dlYnJ0Y192YWQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNDFGOUJGQzkyMDUxRERBMjAwQUJGMEI5IC8qIGFscl9leHBlcmltZW50LmNj
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gYWxyX2V4cGVyaW1lbnQuY2M7
IHBhdGggPSBydGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFGOUJGQ0EyMDUxRERBMjAwQUJGMEI5IC8qIGFscl9leHBl
cmltZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGFscl9leHBlcmltZW50
Lmg7IHBhdGggPSBydGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUY5QkZDOTIwNTFEREEyMDBBQkYwQjkgLyogYWxyX2V4
cGVyaW1lbnQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBhbHJfZXhw
ZXJpbWVudC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGOUJGQ0EyMDUxRERB
MjAwQUJGMEI5IC8qIGFscl9leHBlcmltZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGFscl9leHBlcmltZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
RjlCRkNEMjA1MURERTQwMEFCRjBCOSAvKiBmZnRfYnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IGZmdF9idWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFGOUJGQ0UyMDUxRERFNDAwQUJGMEI5IC8qIG1hdHJpeF9idWZmZXIuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtYXRyaXhfYnVmZmVyLmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUY5QkZDRjIwNTFEREU0MDBBQkYwQjkgLyogdmVjdG9yX2J1
ZmZlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHZlY3Rvcl9idWZm
ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDgxLDYgKzU0NjgsNjUgQEAK
IAkJNDFGOUJGREUyMDUxREUxNzAwQUJGMEI5IC8qIHNlc3Npb25kZXNjcmlwdGlvbi5jYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHNlc3Npb25kZXNjcmlwdGlvbi5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGOUJGRTcyMDUxREVFOTAwQUJGMEI5IC8q
IHR1cm5wb3J0ZmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB0dXJu
cG9ydGZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGOUJGRTgyMDUx
REVFQTAwQUJGMEI5IC8qIHR1cm5wb3J0ZmFjdG9yeS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IHR1cm5wb3J0ZmFjdG9yeS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFGQ0JCMDkyMUIxRjUzMDAwQTVERjI3IC8qIGNyZWF0ZV9wZWVyY29ubmVjdGlv
bl9mYWN0b3J5LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY3JlYXRl
X3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxRkNCQjBBMjFCMUY1MzEwMEE1REYyNyAvKiBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZh
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMEIyMUIxRjUzMjAwQTVE
RjI3IC8qIHNjb3BlZF9yZWZwdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
c2NvcGVkX3JlZnB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIwQzIx
QjFGNTMyMDBBNURGMjcgLyogbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuY2M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjBEMjFCMUY1MzYwMEE1REYyNyAv
KiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUZDQkIxMzIxQjFGN0FBMDBBNURGMjcgLyogbW92aW5nX2F2ZXJh
Z2UuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBtb3ZpbmdfYXZlcmFn
ZS5jYzsgcGF0aCA9IHJ0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmNjOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIxNDIxQjFGN0FBMDBBNURGMjcgLyogbW92aW5n
X2F2ZXJhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gbW92aW5nX2F2ZXJh
Z2UuaDsgcGF0aCA9IHJ0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjE3MjFCMUY3Q0MwMEE1REYyNyAvKiBidWlsdGlu
X3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnku
Y2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjE4MjFCMUY3Q0MwMEE1REYy
NyAvKiBlbmNvZGVkX2ltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGVu
Y29kZWRfaW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMTkyMUIx
RjdDQzAwQTVERjI3IC8qIGVuY29kZWRfaW1hZ2UuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBlbmNvZGVkX2ltYWdlLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUZDQkIxQTIxQjFGN0NEMDBBNURGMjcgLyogYnVpbHRpbl92aWRlb19iaXRyYXRlX2Fs
bG9jYXRvcl9mYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGJ1aWx0
aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MUZDQkIyMDIxQjFGODJFMDBBNURGMjcgLyogdGhyb3dfZGVsZWdhdGUuY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB0aHJvd19kZWxlZ2F0ZS5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMjEyMUIxRjgyRjAwQTVERjI3IC8q
IHRocm93X2RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHRocm93
X2RlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjI1MjFCMUY4
N0UwMEE1REYyNyAvKiBzZW50X3BhY2tldC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IHNlbnRfcGFja2V0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUZDQkIyNjIxQjFGODdFMDBBNURGMjcgLyogc2VudF9wYWNrZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gc2VudF9wYWNrZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFGQ0JCMkEyMUIxRjhCNjAwQTVERjI3IC8qIGNyeXB0b29wdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY3J5cHRvb3B0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUZDQkIyQjIxQjFGOEI2MDBBNURGMjcgLyogZnJhbWVkZWNyeXB0
b3JpbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZnJhbWVkZWNy
eXB0b3JpbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMkMy
MUIxRjhCNjAwQTVERjI3IC8qIGZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjJEMjFCMUY4QjYwMEE1REYyNyAvKiBjcnlwdG9v
cHRpb25zLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY3J5cHRvb3B0
aW9ucy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMzQyMUIxRjhGQjAw
QTVERjI3IC8qIGNvbnRyb2xfaGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBjb250cm9sX2hhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
Q0JCMzUyMUIxRjhGQzAwQTVERjI3IC8qIGNvbnRyb2xfaGFuZGxlci5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNvbnRyb2xfaGFuZGxlci5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCM0EyMUIxRkQzRjAwQTVERjI3IC8qIG1hdGNoLmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbWF0Y2guY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjNCMjFCMUZEM0YwMEE1REYyNyAvKiBtYXRjaC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBtYXRjaC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUZDQkIzRTIxQjFGREI4MDBBNURGMjcgLyogY29uZ2VzdGlvbl93aW5k
b3dfcHVzaGJhY2tfY29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRkNCQjNGMjFCMUZEQjgwMEE1REYyNyAvKiBjb25nZXN0aW9uX3dp
bmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNDIyMUIxRkRFRTAwQTVERjI3IC8qIG1kbnNf
bWVzc2FnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBtZG5zX21lc3NhZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNDMyMUIxRkRFRTAwQTVERjI3
IC8qIGljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBpY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmNjOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MUZDQkI0NDIxQjFGREVGMDBBNURGMjcgLyogbWRuc19tZXNzYWdlLmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbWRuc19tZXNzYWdlLmNjOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI0NTIxQjFGREVGMDBBNURGMjcgLyogaWNl
Y3JlZGVudGlhbHNpdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBp
Y2VjcmVkZW50aWFsc2l0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
RkNCQjRCMjFCMUZFNDQwMEE1REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjcHVfc3BlZWRfZXhwZXJpbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI0QzIxQjFGRTQ0MDBBNURGMjcgLyogaml0dGVy
X3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNEQyMUIxRkU0NTAwQTVERjI3IC8qIGNwdV9zcGVlZF9leHBl
cmltZW50LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY3B1X3NwZWVk
X2V4cGVyaW1lbnQuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjRFMjFC
MUZFNDUwMEE1REYyNyAvKiBqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI0RjIxQjFGRTQ1MDBBNURGMjcg
Lyogbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNTAyMUIxRkU0NTAwQTVERjI3IC8q
IG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQu
Y2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjU3MjFCMUZFNkQwMEE1REYy
NyAvKiBmcmFtZV9kdW1waW5nX2RlY29kZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBmcmFtZV9kdW1waW5nX2RlY29kZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxRkNCQjU4MjFCMUZFNkUwMEE1REYyNyAvKiBmcmFtZV9kdW1waW5nX2RlY29k
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZnJhbWVfZHVtcGluZ19kZWNv
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjVCMjFCMUZFQTMwMEE1
REYyNyAvKiBiaXRyYXRlX2NvbnRyb2xsZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBiaXRyYXRlX2NvbnRyb2xsZXIuY2M7IHBhdGggPSBiaXRyYXRlX2NvbnRyb2xs
ZXIvYml0cmF0ZV9jb250cm9sbGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUZDQkI1RDIxQjFGRUM0MDBBNURGMjcgLyogZ29vZ19jY19mYWN0b3J5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdvb2dfY2NfZmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUZDQkI1RTIxQjFGRUM0MDBBNURGMjcgLyogZ29vZ19jY19mYWN0b3J5
LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZ29vZ19jY19mYWN0b3J5
LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI2MTIxQjFGRUY1MDBBNURG
MjcgLyogY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuaDsgcGF0aCA9IHZpZGVvX2Nv
ZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MUZDQkI2MjIxQjFGRUY1MDBBNURGMjcgLyogdnA4X3RlbXBvcmFsX2xheWVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB2cDhfdGVtcG9yYWxfbGF5ZXJzLmg7
IHBhdGggPSB2aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUZDQkI2MzIxQjFGRUY1MDBBNURGMjcgLyogY3JlYXRlX3ZwOF90
ZW1wb3JhbF9sYXllcnMuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBj
cmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5jYzsgcGF0aCA9IHZpZGVvX2NvZGVjcy9jcmVhdGVf
dnA4X3RlbXBvcmFsX2xheWVycy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
Q0JCNjcyMUIxRkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gbG9zc19iYXNlZF9iYW5kd2lkdGhf
ZXN0aW1hdGlvbi5oOyBwYXRoID0gYml0cmF0ZV9jb250cm9sbGVyL2xvc3NfYmFzZWRfYmFuZHdp
ZHRoX2VzdGltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNjgy
MUIxRkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9l
c3RpbWF0aW9uLmNjOyBwYXRoID0gYml0cmF0ZV9jb250cm9sbGVyL2xvc3NfYmFzZWRfYmFuZHdp
ZHRoX2VzdGltYXRpb24uY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjZC
MjFCMUZGMzkwMEE1REYyNyAvKiBrZXlfZGVyaXZhdGlvbi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IGtleV9kZXJpdmF0aW9uLmNjOyBwYXRoID0gcnRjX2Jhc2Uva2V5
X2Rlcml2YXRpb24uY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjZDMjFC
MUZGM0EwMEE1REYyNyAvKiBrZXlfZGVyaXZhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBrZXlfZGVyaXZhdGlvbi5oOyBwYXRoID0gcnRjX2Jhc2Uva2V5X2Rlcml2YXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNkYyMUIxRkY3NDAwQTVE
RjI3IC8qIGhkcl9tZXRhZGF0YS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IGhkcl9tZXRhZGF0YS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JC
NzAyMUIxRkY3NDAwQTVERjI3IC8qIGhkcl9tZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBoZHJfbWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDFGQ0JCNzMyMUIxRkZBNDAwQTVERjI3IC8qIGNvY29hX3RocmVhZGluZy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IGNvY29hX3RocmVhZGluZy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNzQyMUIxRkZBNDAwQTVERjI3IC8qIGNv
Y29hX3RocmVhZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb2NvYV90
aHJlYWRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNzcyMUIxRkZC
RjAwQTVERjI3IC8qIGFzY2lpLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGFz
Y2lpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjc4MjFCMUZGQzAwMEE1
REYyNyAvKiBhc2NpaS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGFz
Y2lpLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI3QjIxQjFGRkY1MDBB
NURGMjcgLyogb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmNjOyBwYXRo
ID0gcnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUZDQkI3QzIxQjFGRkY1MDBBNURGMjcgLyogb3BlbnNzbF9rZXlf
ZGVyaXZhdGlvbl9oa2RmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IG9wZW5z
c2xfa2V5X2Rlcml2YXRpb25faGtkZi5oOyBwYXRoID0gcnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVy
aXZhdGlvbl9oa2RmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjdGMjFC
MjAwMTEwMEE1REYyNyAvKiBzdHJpbmdfdmlldy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IHN0cmluZ192aWV3LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MUZDQkI4MjIxQjIwMDdCMDBBNURGMjcgLyogbWVtdXRpbC5jYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1lbXV0aWwuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRkNCQjgzMjFCMjAwN0IwMEE1REYyNyAvKiBtZW11dGlsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG1lbXV0aWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFGQ0JCODcyMUIyMDBEQjAwQTVERjI3IC8qIFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdz
Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFJUQ1ZpZGVvRW5jb2RlclNl
dHRpbmdzLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkU4NjQ0MjE1QzUyNUYw
MEI2MkMwNyAvKiBnZW52ZXJzaW9uLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9
IGdlbnZlcnNpb24uYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGRTg2NDUyMTVD
NTI2MDAwQjYyQzA3IC8qIG5hc20tZXZhbC5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBh
dGggPSAibmFzbS1ldmFsLmMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZFODY0
NjIxNUM1MjYwMDBCNjJDMDcgLyogbmFzbS1ldmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9ICJuYXNtLWV2YWwuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
ODg3LDcgKzU5MzMsNiBAQAogCQk1QzRCNEMxMjFFNDMxRjc1MDAyNjUxQzggLyogaTQyMF9idWZm
ZXJfcG9vbC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGk0MjBfYnVm
ZmVyX3Bvb2wuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEI0QzEzMUU0MzFG
NzUwMDI2NTFDOCAvKiBpbmNvbWluZ192aWRlb19zdHJlYW0uY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBpbmNvbWluZ192aWRlb19zdHJlYW0uY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDNEI0QzE1MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFt
ZV9idWZmZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB2aWRlb19m
cmFtZV9idWZmZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNEI0QzE2MUU0
MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IHZpZGVvX2ZyYW1lLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzRCNEMxNzFFNDMxRjc1MDAyNjUxQzggLyogdmlkZW9fcmVuZGVyX2ZyYW1lcy5jYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHZpZGVvX3JlbmRlcl9mcmFtZXMuY2M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEI0QzE4MUU0MzFGNzUwMDI2NTFDOCAv
KiB2aWRlb19yZW5kZXJfZnJhbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IHZpZGVvX3JlbmRlcl9mcmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0
QjRDMjQxRTQzMUY5QzAwMjY1MUM4IC8qIGF1ZGlvX2NvbnZlcnRlci5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGF1ZGlvX2NvbnZlcnRlci5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTYwMjgsOCArNjA3Myw2IEBACiAJCTVDNjNGOUQ5MUU0MTc0RjYw
MDJDQTUzMSAvKiB0dXJuc2VydmVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gdHVybnNlcnZlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2M0Y5
REExRTQxNzRGNjAwMkNBNTMxIC8qIHR1cm5zZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gdHVybnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzYzRjlEQjFFNDE3NEY2MDAyQ0E1MzEgLyogdWRwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSB1ZHBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVD
NjNGQTNBMUU0MTc2MUYwMDJDQTUzMSAvKiBidW5kbGVmaWx0ZXIuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBidW5kbGVmaWx0ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTVDNjNGQTNCMUU0MTc2MUYwMDJDQTUzMSAvKiBidW5kbGVmaWx0ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYnVuZGxlZmlsdGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjNGQTNEMUU0MTc2MUYwMDJDQTUzMSAvKiBjaGFubmVs
LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY2hhbm5lbC5jYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2M0ZBM0UxRTQxNzYxRjAwMkNBNTMxIC8qIGNo
YW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY2hhbm5lbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzYzRkE0MDFFNDE3NjFGMDAyQ0E1MzEgLyogY2hh
bm5lbG1hbmFnZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjaGFu
bmVsbWFuYWdlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMzQsOCArNjI3
Nyw2IEBACiAJCTVDREQ4MzZDMUU0MzlBMzUwMDYyMUU5MiAvKiBmcmFtZV9kcm9wcGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZyYW1lX2Ryb3BwZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDgzNkQxRTQzOUEzNTAwNjIxRTkyIC8qIGl2Zl9maWxl
X3dyaXRlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGl2Zl9maWxl
X3dyaXRlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDgzNkUxRTQzOUEz
NTAwNjIxRTkyIC8qIGl2Zl9maWxlX3dyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBpdmZfZmlsZV93cml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NUNERDgzNkYxRTQzOUEzNTAwNjIxRTkyIC8qIG1vdmluZ19hdmVyYWdlLmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbW92aW5nX2F2ZXJhZ2UuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTVDREQ4MzcwMUU0MzlBMzUwMDYyMUU5MiAvKiBtb3ZpbmdfYXZl
cmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBtb3ZpbmdfYXZlcmFnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODM3MzFFNDM5QTM1MDA2MjFFOTIg
LyogcXVhbGl0eV9zY2FsZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBxdWFsaXR5X3NjYWxlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDgz
NzQxRTQzOUEzNTAwNjIxRTkyIC8qIHF1YWxpdHlfc2NhbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IHF1YWxpdHlfc2NhbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDREQ4Mzc3MUU0MzlBMzUwMDYyMUU5MiAvKiB2cDhfaGVhZGVyX3BhcnNlci5jYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHZwOF9oZWFkZXJfcGFyc2VyLmNj
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjM0Niw4ICs2Mzg3LDYgQEAKIAkJNUNE
RDg0RjkxRTQzQjFFQTAwNjIxRTkyIC8qIGF1ZGlvX2NvZGluZ19tb2R1bGUuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBhdWRpb19jb2RpbmdfbW9kdWxlLmNjOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODRGQjFFNDNCMUVBMDA2MjFFOTIgLyogY2Fs
bF9zdGF0aXN0aWNzLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY2Fs
bF9zdGF0aXN0aWNzLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODRGQzFF
NDNCMUVBMDA2MjFFOTIgLyogY2FsbF9zdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGNhbGxfc3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1Q0REODRGRTFFNDNCMUVBMDA2MjFFOTIgLyogY29kZWNfbWFuYWdlci5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNvZGVjX21hbmFnZXIuY2M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDREQ4NEZGMUU0M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19t
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvZGVjX21hbmFnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDg1MDExRTQzQjFFQTAwNjIxRTky
IC8qIHJlbnRfYV9jb2RlYy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IHJlbnRfYV9jb2RlYy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDg1MDIx
RTQzQjFFQTAwNjIxRTkyIC8qIHJlbnRfYV9jb2RlYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSByZW50X2FfY29kZWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUNERDg1MUMxRTQzQjM5QzAwNjIxRTkyIC8qIGJpdHJhdGVfYWxsb2NhdG9yLmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gYml0cmF0ZV9hbGxvY2F0b3IuY2M7IHBhdGgg
PSBjYWxsL2JpdHJhdGVfYWxsb2NhdG9yLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjczNCw4ICs2NzczLDYgQEAKIAkJNUNERDg5RTIxRTQzQkZCMzAwNjIxRTkyIC8qIHJhbmRv
bV92ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcmFuZG9tX3ZlY3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODlFNDFFNDNCRkIzMDA2MjFF
OTIgLyogcmVkX3BheWxvYWRfc3BsaXR0ZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSByZWRfcGF5bG9hZF9zcGxpdHRlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUNERDg5RTUxRTQzQkZCMzAwNjIxRTkyIC8qIHJlZF9wYXlsb2FkX3NwbGl0dGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJlZF9wYXlsb2FkX3NwbGl0dGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDREQ4OUU2MUU0M0JGQjMwMDYyMUU5
MiAvKiBydGNwLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gcnRjcC5j
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNERDg5RTcxRTQzQkZCMzAwNjIxRTky
IC8qIHJ0Y3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcnRjcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODlFODFFNDNCRkIzMDA2MjFFOTIgLyogc3Rh
dGlzdGljc19jYWxjdWxhdG9yLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gc3RhdGlzdGljc19jYWxjdWxhdG9yLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1Q0REODlFOTFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGljc19jYWxjdWxhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHN0YXRpc3RpY3NfY2FsY3VsYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODlFQjFFNDNCRkIzMDA2MjFFOTIgLyog
c3luY19idWZmZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBzeW5j
X2J1ZmZlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2NDMsNiArNzY4MCwx
MiBAQAogCQk0MTA2RDU2QjIxNkMyQjkxMDAxRTNDNDAgLyogc3RyaW5ncyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDFGQ0JCODEyMUIyMDA1QTAwQTVE
RjI3IC8qIGludGVybmFsICovLAorCQkJCTQxRkNCQjdGMjFCMjAwMTEwMEE1REYyNyAvKiBzdHJp
bmdfdmlldy5jYyAqLywKKwkJCQk0MUZDQkI3ODIxQjFGRkMwMDBBNURGMjcgLyogYXNjaWkuY2Mg
Ki8sCisJCQkJNDFGQ0JCNzcyMUIxRkZCRjAwQTVERjI3IC8qIGFzY2lpLmggKi8sCisJCQkJNDFG
Q0JCM0EyMUIxRkQzRjAwQTVERjI3IC8qIG1hdGNoLmNjICovLAorCQkJCTQxRkNCQjNCMjFCMUZE
M0YwMEE1REYyNyAvKiBtYXRjaC5oICovLAogCQkJCTQxMDZENTZDMjE2QzJCQTkwMDFFM0M0MCAv
KiBzdHJpbmdfdmlldy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBzdHJpbmdzOwpAQCAtNzcxMyw2
ICs3NzU2LDggQEAKIAkJCQk0MUREQjI3NjIxMjY3QUMxMDAyOTZENDcgLyogYnVpbHRpbl92aWRl
b19kZWNvZGVyX2ZhY3RvcnkuaCAqLywKIAkJCQk0MUUwMkNDMjIxMjczNTg3MDBDMjdDRDYgLyog
YnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuY2MgKi8sCiAJCQkJNDFEREIyNzcyMTI2N0FD
MTAwMjk2RDQ3IC8qIGJ1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmggKi8sCisJCQkJNDFG
Q0JCNjMyMUIxRkVGNTAwQTVERjI3IC8qIGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjICov
LAorCQkJCTQxRkNCQjYxMjFCMUZFRjUwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xh
eWVycy5oICovLAogCQkJCTQxRERCMjdBMjEyNjdBQzIwMDI5NkQ0NyAvKiBzZHBfdmlkZW9fZm9y
bWF0LmNjICovLAogCQkJCTQxNDVGNjE5MUZFMUYzOEIwMEVCOUNBRiAvKiBzZHBfdmlkZW9fZm9y
bWF0LmggKi8sCiAJCQkJNDFEREIyNzAyMTI2N0FDMDAwMjk2RDQ3IC8qIHZpZGVvX2NvZGVjLmNj
ICovLApAQCAtNzczMCw2ICs3Nzc1LDcgQEAKIAkJCQk0MUREQjI3OTIxMjY3QUMyMDAyOTZENDcg
LyogdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyLmggKi8sCiAJCQkJNDE0
NUY2MUMxRkUxRjM4RDAwRUI5Q0FGIC8qIHZpZGVvX2VuY29kZXIuY2MgKi8sCiAJCQkJNDE0NUU0
OEMxRUY4OEI5RDAwRkNGNkU2IC8qIHZpZGVvX2VuY29kZXIuaCAqLywKKwkJCQk0MUZDQkI2MjIx
QjFGRUY1MDBBNURGMjcgLyogdnA4X3RlbXBvcmFsX2xheWVycy5oICovLAogCQkJKTsKIAkJCW5h
bWUgPSB2aWRlb19jb2RlY3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzc4OCwx
NiArNzgzNCw4IEBACiAJCTQxM0EyMTQzMUZFMThEMDEwMDM3M0U5OSAvKiBydGNfYmFzZSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDEzQTIxODAxRkUx
OEQ3QTAwMzczRTk5IC8qIERFUFMgKi8sCi0JCQkJNDE5MjQxNjUyMTI3Mzg3OTAwNjM0RkNGIC8q
IGV4cGVyaW1lbnRzICovLAotCQkJCTQxRjlCRkM4MjA1MUREOEUwMEFCRjBCOSAvKiBleHBlcmlt
ZW50cyAqLywKLQkJCQk0MTlDODM0MTFGRTI0NjM4MDA0MEMzMEYgLyogbnVtZXJpY3MgKi8sCi0J
CQkJNDEzQTIxRkQxRkUxOERCQjAwMzczRTk5IC8qIE9XTkVSUyAqLywKLQkJCQk0MUREQjI2NzIx
MjY3OUFFMDAyOTZENDcgLyogc3RyaW5ncyAqLywKLQkJCQk0MTkyNDE1QzIxMjczNzkyMDA2MzRG
Q0YgLyogc3luY2hyb25pemF0aW9uICovLAotCQkJCTQxRjI2M0EyMjEyNjgwODgwMDI3NEY1OSAv
KiBzeXN0ZW0gKi8sCi0JCQkJNDFGMjYzQjQyMTI2ODBFODAwMjc0RjU5IC8qIHRoaXJkX3BhcnR5
ICovLAotCQkJCTQxOTI0MTdBMjEyNzM5MEMwMDYzNEZDRiAvKiB0aW1lICovLAorCQkJCTQxRkNC
QjdCMjFCMUZGRjUwMEE1REYyNyAvKiBvcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2MgKi8s
CisJCQkJNDFGQ0JCN0MyMUIxRkZGNTAwQTVERjI3IC8qIG9wZW5zc2xfa2V5X2Rlcml2YXRpb25f
aGtkZi5oICovLAogCQkJCTQxRjI2MzlEMjEyNjgwMDAwMDI3NEY1OSAvKiBhbGlnbmVkX2FycmF5
LmggKi8sCiAJCQkJNDFGMjYzOUIyMTI2N0ZGRjAwMjc0RjU5IC8qIGFsaWduZWRfbWFsbG9jLmNj
ICovLAogCQkJCTQxRjI2MzlDMjEyNjdGRkYwMDI3NEY1OSAvKiBhbGlnbmVkX21hbGxvYy5oICov
LApAQCAtNzgxMSwxMjQgKzc4NDksMTI2IEBACiAJCQkJNDEzQTIxNTAxRkUxOEQ1MTAwMzczRTk5
IC8qIGFzeW5jcmVzb2x2ZXJpbnRlcmZhY2UuaCAqLywKIAkJCQk0MTNBMjI0MzFGRTE4RERDMDAz
NzNFOTkgLyogYXN5bmNzb2NrZXQuY2MgKi8sCiAJCQkJNDEzQTIyMEIxRkUxOERDMTAwMzczRTk5
IC8qIGFzeW5jc29ja2V0LmggKi8sCisJCQkJNDEzQTIyNzQxRkUxOERGNjAwMzczRTk5IC8qIGFz
eW5jdGNwc29ja2V0X3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMjU4MUZFMThERTUwMDM3M0U5
OSAvKiBhc3luY3RjcHNvY2tldC5jYyAqLywKIAkJCQk0MTNBMjE2NDFGRTE4RDVGMDAzNzNFOTkg
LyogYXN5bmN0Y3Bzb2NrZXQuaCAqLywKLQkJCQk0MTNBMjI3NDFGRTE4REY2MDAzNzNFOTkgLyog
YXN5bmN0Y3Bzb2NrZXRfdW5pdHRlc3QuY2MgKi8sCisJCQkJNDEzQTIyOTExRkUxOEUwMDAwMzcz
RTk5IC8qIGFzeW5jdWRwc29ja2V0X3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMUMyMUZFMThE
OUUwMDM3M0U5OSAvKiBhc3luY3VkcHNvY2tldC5jYyAqLywKIAkJCQk0MTNBMjE1QzFGRTE4RDU4
MDAzNzNFOTkgLyogYXN5bmN1ZHBzb2NrZXQuaCAqLywKLQkJCQk0MTNBMjI5MTFGRTE4RTAwMDAz
NzNFOTkgLyogYXN5bmN1ZHBzb2NrZXRfdW5pdHRlc3QuY2MgKi8sCi0JCQkJNDEzQTIxOTgxRkUx
OEQ4QTAwMzczRTk5IC8qIGF0b21pY29wcy5oICovLAogCQkJCTQxM0EyMjVEMUZFMThERTYwMDM3
M0U5OSAvKiBhdG9taWNvcHNfdW5pdHRlc3QuY2MgKi8sCisJCQkJNDEzQTIxOTgxRkUxOEQ4QTAw
MzczRTk5IC8qIGF0b21pY29wcy5oICovLAogCQkJCTQxM0EyMTgxMUZFMThEN0IwMDM3M0U5OSAv
KiBiYXNlNjRfdW5pdHRlc3QuY2MgKi8sCi0JCQkJNDEzQTIyMDkxRkUxOERDMDAwMzczRTk5IC8q
IGJpbmQuaCAqLywKIAkJCQk0MTNBMjIyRjFGRTE4REQyMDAzNzNFOTkgLyogYmluZF91bml0dGVz
dC5jYyAqLywKKwkJCQk0MTNBMjIwOTFGRTE4REMwMDAzNzNFOTkgLyogYmluZC5oICovLAorCQkJ
CTQxM0EyMjU3MUZFMThERTQwMDM3M0U5OSAvKiBiaXRidWZmZXJfdW5pdHRlc3QuY2MgKi8sCiAJ
CQkJNDEzQTIxRTcxRkUxOERCMTAwMzczRTk5IC8qIGJpdGJ1ZmZlci5jYyAqLywKIAkJCQk0MTNB
MjIyNDFGRTE4RENEMDAzNzNFOTkgLyogYml0YnVmZmVyLmggKi8sCi0JCQkJNDEzQTIyNTcxRkUx
OERFNDAwMzczRTk5IC8qIGJpdGJ1ZmZlcl91bml0dGVzdC5jYyAqLywKKwkJCQk0MTNBMjIxQzFG
RTE4REM4MDAzNzNFOTkgLyogYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneV91bml0dGVzdC5jYyAq
LywKIAkJCQk0MTNBMjE0QTFGRTE4RDRFMDAzNzNFOTkgLyogYml0cmF0ZWFsbG9jYXRpb25zdHJh
dGVneS5jYyAqLywKIAkJCQk0MTNBMjFEMjFGRTE4REE3MDAzNzNFOTkgLyogYml0cmF0ZWFsbG9j
YXRpb25zdHJhdGVneS5oICovLAotCQkJCTQxM0EyMjFDMUZFMThEQzgwMDM3M0U5OSAvKiBiaXRy
YXRlYWxsb2NhdGlvbnN0cmF0ZWd5X3VuaXR0ZXN0LmNjICovLAotCQkJCTQxM0EyMjNCMUZFMThE
RDkwMDM3M0U5OSAvKiBidWZmZXIuaCAqLywKIAkJCQk0MTNBMjIxMzFGRTE4REM0MDAzNzNFOTkg
LyogYnVmZmVyX3VuaXR0ZXN0LmNjICovLAorCQkJCTQxM0EyMjNCMUZFMThERDkwMDM3M0U5OSAv
KiBidWZmZXIuaCAqLywKKwkJCQk0MTNBMjE3MTFGRTE4RDZEMDAzNzNFOTkgLyogYnVmZmVycXVl
dWVfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIyNDgxRkUxOERERTAwMzczRTk5IC8qIGJ1ZmZl
cnF1ZXVlLmNjICovLAogCQkJCTQxM0EyMUQ3MUZFMThEQUEwMDM3M0U5OSAvKiBidWZmZXJxdWV1
ZS5oICovLAotCQkJCTQxM0EyMTcxMUZFMThENkQwMDM3M0U5OSAvKiBidWZmZXJxdWV1ZV91bml0
dGVzdC5jYyAqLywKIAkJCQk0MTNBMjI4RjFGRTE4REZGMDAzNzNFOTkgLyogQlVJTEQuZ24gKi8s
CisJCQkJNDEzQTIxQzAxRkUxOEQ5RDAwMzczRTk5IC8qIGJ5dGVidWZmZXJfdW5pdHRlc3QuY2Mg
Ki8sCiAJCQkJNDEzQTIyQTAxRkUxOEUwNjAwMzczRTk5IC8qIGJ5dGVidWZmZXIuY2MgKi8sCiAJ
CQkJNDEzQTIyNTExRkUxOERFMTAwMzczRTk5IC8qIGJ5dGVidWZmZXIuaCAqLywKLQkJCQk0MTNB
MjFDMDFGRTE4RDlEMDAzNzNFOTkgLyogYnl0ZWJ1ZmZlcl91bml0dGVzdC5jYyAqLywKLQkJCQk0
MTNBMjFFQTFGRTE4REIzMDAzNzNFOTkgLyogYnl0ZW9yZGVyLmggKi8sCiAJCQkJNDEzQTIyMzYx
RkUxOERENTAwMzczRTk5IC8qIGJ5dGVvcmRlcl91bml0dGVzdC5jYyAqLywKKwkJCQk0MTNBMjFF
QTFGRTE4REIzMDAzNzNFOTkgLyogYnl0ZW9yZGVyLmggKi8sCisJCQkJNDEzQTIxOEExRkUxOEQ4
MjAwMzczRTk5IC8qIGNhbGxiYWNrX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMUMzMUZFMThE
OUUwMDM3M0U5OSAvKiBjYWxsYmFjay5oICovLAogCQkJCTQxM0EyMUI3MUZFMThEOTkwMDM3M0U5
OSAvKiBjYWxsYmFjay5oLnB1bXAgKi8sCi0JCQkJNDEzQTIxOEExRkUxOEQ4MjAwMzczRTk5IC8q
IGNhbGxiYWNrX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMjIwMUZFMThEQ0EwMDM3M0U5OSAv
KiBjaGVja3MuY2MgKi8sCiAJCQkJNDEzQTIxRkIxRkUxOERCQTAwMzczRTk5IC8qIGNoZWNrcy5o
ICovLAogCQkJCTQxM0EyMjMyMUZFMThERDMwMDM3M0U5OSAvKiBjb21waWxlX2Fzc2VydF9jLmgg
Ki8sCiAJCQkJNDEzQTIyMTkxRkUxOERDNjAwMzczRTk5IC8qIGNvbnN0cnVjdG9ybWFnaWMuaCAq
LywKKwkJCQk0MTNBMjI5NjFGRTE4RTAyMDAzNzNFOTkgLyogY29weW9ud3JpdGVidWZmZXJfdW5p
dHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIxQzExRkUxOEQ5RDAwMzczRTk5IC8qIGNvcHlvbndyaXRl
YnVmZmVyLmNjICovLAogCQkJCTQxM0EyMjU5MUZFMThERTUwMDM3M0U5OSAvKiBjb3B5b253cml0
ZWJ1ZmZlci5oICovLAotCQkJCTQxM0EyMjk2MUZFMThFMDIwMDM3M0U5OSAvKiBjb3B5b253cml0
ZWJ1ZmZlcl91bml0dGVzdC5jYyAqLywKKwkJCQk0MTNBMjI2MTFGRTE4REU4MDAzNzNFOTkgLyog
Y3B1X3RpbWVfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIxQjgxRkUxOEQ5OTAwMzczRTk5IC8q
IGNwdV90aW1lLmNjICovLAogCQkJCTQxM0EyMjkwMUZFMThFMDAwMDM3M0U5OSAvKiBjcHVfdGlt
ZS5oICovLAotCQkJCTQxM0EyMjYxMUZFMThERTgwMDM3M0U5OSAvKiBjcHVfdGltZV91bml0dGVz
dC5jYyAqLywKKwkJCQk0MTNBMjI2NTFGRTE4REVCMDAzNzNFOTkgLyogY3JjMzJfdW5pdHRlc3Qu
Y2MgKi8sCiAJCQkJNDEzQTIxRUYxRkUxOERCNTAwMzczRTk5IC8qIGNyYzMyLmNjICovLAogCQkJ
CTQxM0EyMTUxMUZFMThENTIwMDM3M0U5OSAvKiBjcmMzMi5oICovLAotCQkJCTQxM0EyMjY1MUZF
MThERUIwMDM3M0U5OSAvKiBjcmMzMl91bml0dGVzdC5jYyAqLywKKwkJCQk0MTNBMjFEMDFGRTE4
REE3MDAzNzNFOTkgLyogY3JpdGljYWxzZWN0aW9uX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0Ey
MjM1MUZFMThERDUwMDM3M0U5OSAvKiBjcml0aWNhbHNlY3Rpb24uY2MgKi8sCiAJCQkJNDEzQTIy
MTYxRkUxOERDNTAwMzczRTk5IC8qIGNyaXRpY2Fsc2VjdGlvbi5oICovLAotCQkJCTQxM0EyMUQw
MUZFMThEQTcwMDM3M0U5OSAvKiBjcml0aWNhbHNlY3Rpb25fdW5pdHRlc3QuY2MgKi8sCiAJCQkJ
NDEzQTIxQ0UxRkUxOERBNTAwMzczRTk5IC8qIGNyeXB0c3RyaW5nLmNjICovLAogCQkJCTQxM0Ey
MUQ1MUZFMThEQTkwMDM3M0U5OSAvKiBjcnlwdHN0cmluZy5oICovLAogCQkJCTQxRTAyQ0JCMjEy
NzM1NkEwMEMyN0NENiAvKiBkYXRhX3JhdGVfbGltaXRlci5jYyAqLywKIAkJCQk0MUUwMkNCQzIx
MjczNTZBMDBDMjdDRDYgLyogZGF0YV9yYXRlX2xpbWl0ZXIuaCAqLywKIAkJCQk0MTNBMjFGQTFG
RTE4REJBMDAzNzNFOTkgLyogZGVwcmVjYXRpb24uaCAqLywKKwkJCQk0MTNBMjE4MDFGRTE4RDdB
MDAzNzNFOTkgLyogREVQUyAqLywKIAkJCQk0MTNBMjFGNDFGRTE4REI3MDAzNzNFOTkgLyogZHNj
cC5oICovLAotCQkJCTQxM0EyMjY0MUZFMThERUIwMDM3M0U5OSAvKiBldmVudC5jYyAqLywKLQkJ
CQk0MTNBMjI1MjFGRTE4REUyMDAzNzNFOTkgLyogZXZlbnQuaCAqLywKIAkJCQk0MTNBMjIzQzFG
RTE4REQ5MDAzNzNFOTkgLyogZXZlbnRfdHJhY2VyLmNjICovLAogCQkJCTQxM0EyMjJCMUZFMThE
Q0YwMDM3M0U5OSAvKiBldmVudF90cmFjZXIuaCAqLywKKwkJCQk0MTNBMjI2NDFGRTE4REVCMDAz
NzNFOTkgLyogZXZlbnQuY2MgKi8sCisJCQkJNDEzQTIyNTIxRkUxOERFMjAwMzczRTk5IC8qIGV2
ZW50LmggKi8sCisJCQkJNDE5MjQxNjUyMTI3Mzg3OTAwNjM0RkNGIC8qIGV4cGVyaW1lbnRzICov
LAogCQkJCTQxM0EyMUJDMUZFMThEOUIwMDM3M0U5OSAvKiBmYWtlY2xvY2suY2MgKi8sCiAJCQkJ
NDEzQTIyMkMxRkUxOEREMDAwMzczRTk5IC8qIGZha2VjbG9jay5oICovLAogCQkJCTQxM0EyMTVE
MUZFMThENTkwMDM3M0U5OSAvKiBmYWtlbmV0d29yay5oICovLAogCQkJCTQxM0EyMjc5MUZFMThE
RjgwMDM3M0U5OSAvKiBmYWtlc3NsaWRlbnRpdHkuY2MgKi8sCiAJCQkJNDEzQTIxQTMxRkUxOEQ5
MDAwMzczRTk5IC8qIGZha2Vzc2xpZGVudGl0eS5oICovLAotCQkJCTQxM0EyMTkxMUZFMThEODUw
MDM3M0U5OSAvKiBmaWxlLmNjICovLAotCQkJCTQxM0EyMTgyMUZFMThEN0MwMDM3M0U5OSAvKiBm
aWxlLmggKi8sCiAJCQkJNDEzQTIyODUxRkUxOERGQzAwMzczRTk5IC8qIGZpbGVfcG9zaXguY2Mg
Ki8sCiAJCQkJNDEzQTIxOEIxRkUxOEQ4MjAwMzczRTk5IC8qIGZpbGVfdW5pdHRlc3QuY2MgKi8s
CiAJCQkJNDEzQTIxNTIxRkUxOEQ1MjAwMzczRTk5IC8qIGZpbGVfd2luLmNjICovLAorCQkJCTQx
M0EyMTkxMUZFMThEODUwMDM3M0U5OSAvKiBmaWxlLmNjICovLAorCQkJCTQxM0EyMTgyMUZFMThE
N0MwMDM3M0U5OSAvKiBmaWxlLmggKi8sCisJCQkJNDEzQTIyNUExRkUxOERFNTAwMzczRTk5IC8q
IGZpbGVyb3RhdGluZ3N0cmVhbV91bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjI4NzFGRTE4REZE
MDAzNzNFOTkgLyogZmlsZXJvdGF0aW5nc3RyZWFtLmNjICovLAogCQkJCTQxM0EyMThDMUZFMThE
ODMwMDM3M0U5OSAvKiBmaWxlcm90YXRpbmdzdHJlYW0uaCAqLywKLQkJCQk0MTNBMjI1QTFGRTE4
REU1MDAzNzNFOTkgLyogZmlsZXJvdGF0aW5nc3RyZWFtX3VuaXR0ZXN0LmNjICovLAotCQkJCTQx
M0EyMjYyMUZFMThERTkwMDM3M0U5OSAvKiBmaWxldXRpbHMuY2MgKi8sCi0JCQkJNDEzQTIyNkEx
RkUxOERGMDAwMzczRTk5IC8qIGZpbGV1dGlscy5oICovLAogCQkJCTQxM0EyMjE3MUZFMThEQzYw
MDM3M0U5OSAvKiBmaXJld2FsbHNvY2tldHNlcnZlci5jYyAqLywKIAkJCQk0MTNBMjI4QzFGRTE4
REZFMDAzNzNFOTkgLyogZmlyZXdhbGxzb2NrZXRzZXJ2ZXIuaCAqLywKIAkJCQk0MTNBMjE2MTFG
RTE4RDVCMDAzNzNFOTkgLyogZmxhZ3MuY2MgKi8sCiAJCQkJNDEzQTIyNjkxRkUxOERFRjAwMzcz
RTk5IC8qIGZsYWdzLmggKi8sCiAJCQkJNDEzQTIxNDcxRkUxOEQ0RDAwMzczRTk5IC8qIGZvcm1h
dF9tYWNyb3MuaCAqLywKLQkJCQk0MTNBMjE0NTFGRTE4RDRDMDAzNzNFOTkgLyogZnVuY3Rpb25f
dmlldy5oICovLAogCQkJCTQxM0EyMTg5MUZFMThEODEwMDM3M0U5OSAvKiBmdW5jdGlvbl92aWV3
X3VuaXR0ZXN0LmNjICovLAorCQkJCTQxM0EyMTQ1MUZFMThENEMwMDM3M0U5OSAvKiBmdW5jdGlv
bl92aWV3LmggKi8sCiAJCQkJNDEzQTIxQUMxRkUxOEQ5NDAwMzczRTk5IC8qIGd0ZXN0X3Byb2Rf
dXRpbC5oICovLAotCQkJCTQxM0EyMTk1MUZFMThEODgwMDM3M0U5OSAvKiBndW5pdC5oICovLAog
CQkJCTQxM0EyMjBBMUZFMThEQzAwMDM3M0U5OSAvKiBndW5pdF9wcm9kLmggKi8sCisJCQkJNDEz
QTIxOTUxRkUxOEQ4ODAwMzczRTk5IC8qIGd1bml0LmggKi8sCisJCQkJNDEzQTIxQzUxRkUxOEQ5
RjAwMzczRTk5IC8qIGhlbHBlcnNfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIyMUIxRkUxOERD
NzAwMzczRTk5IC8qIGhlbHBlcnMuY2MgKi8sCiAJCQkJNDEzQTIxODMxRkUxOEQ3RDAwMzczRTk5
IC8qIGhlbHBlcnMuaCAqLywKLQkJCQk0MTNBMjFDNTFGRTE4RDlGMDAzNzNFOTkgLyogaGVscGVy
c191bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjIxQTFGRTE4REM3MDAzNzNFOTkgLyogaHR0cGNv
bW1vbi5jYyAqLywKIAkJCQk0MTNBMjI0MjFGRTE4RERCMDAzNzNFOTkgLyogaHR0cGNvbW1vbi5o
ICovLAotCQkJCTQxM0EyMjk3MUZFMThFMDIwMDM3M0U5OSAvKiBpZmFkZHJzLWFuZHJvaWQuY2Mg
Ki8sCi0JCQkJNDEzQTIxNkYxRkUxOEQ2QjAwMzczRTk5IC8qIGlmYWRkcnMtYW5kcm9pZC5oICov
LAogCQkJCTQxM0EyMjIxMUZFMThEQ0IwMDM3M0U5OSAvKiBpZmFkZHJzX2NvbnZlcnRlci5jYyAq
LywKIAkJCQk0MTNBMjI3QTFGRTE4REY4MDAzNzNFOTkgLyogaWZhZGRyc19jb252ZXJ0ZXIuaCAq
LywKKwkJCQk0MTNBMjI5NzFGRTE4RTAyMDAzNzNFOTkgLyogaWZhZGRycy1hbmRyb2lkLmNjICov
LAorCQkJCTQxM0EyMTZGMUZFMThENkIwMDM3M0U5OSAvKiBpZmFkZHJzLWFuZHJvaWQuaCAqLywK
IAkJCQk0MTNBMjI5MzFGRTE4RTAxMDAzNzNFOTkgLyogaWdub3JlX3d1bmRlZi5oICovLAorCQkJ
CTQxM0EyMTZBMUZFMThENjcwMDM3M0U5OSAvKiBpcGFkZHJlc3NfdW5pdHRlc3QuY2MgKi8sCiAJ
CQkJNDEzQTIyOUIxRkUxOEUwNDAwMzczRTk5IC8qIGlwYWRkcmVzcy5jYyAqLywKIAkJCQk0MTNB
MjE0RTFGRTE4RDUwMDAzNzNFOTkgLyogaXBhZGRyZXNzLmggKi8sCi0JCQkJNDEzQTIxNkExRkUx
OEQ2NzAwMzczRTk5IC8qIGlwYWRkcmVzc191bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjIxMjFG
RTE4REM0MDAzNzNFOTkgLyoga2VlcF9yZWZfdW50aWxfZG9uZS5oICovLAorCQkJCTQxRkNCQjZC
MjFCMUZGMzkwMEE1REYyNyAvKiBrZXlfZGVyaXZhdGlvbi5jYyAqLywKKwkJCQk0MUZDQkI2QzIx
QjFGRjNBMDBBNURGMjcgLyoga2V5X2Rlcml2YXRpb24uaCAqLywKIAkJCQk0MTNBMjI5OTFGRTE4
RTAzMDAzNzNFOTkgLyogbG9jYXRpb24uY2MgKi8sCiAJCQkJNDEzQTIyOUExRkUxOEUwNDAwMzcz
RTk5IC8qIGxvY2F0aW9uLmggKi8sCi0JCQkJNDEzQTIxNzIxRkUxOEQ2RDAwMzczRTk5IC8qIGxv
Z2dpbmcuY2MgKi8sCi0JCQkJNDEzQTIxREUxRkUxOERBRTAwMzczRTk5IC8qIGxvZ2dpbmcuaCAq
LywKIAkJCQk0MTNBMjE2NzFGRTE4RDYzMDAzNzNFOTkgLyogbG9nZ2luZ19tYWMubW0gKi8sCiAJ
CQkJNDEzQTIxRTAxRkUxOERBRTAwMzczRTk5IC8qIGxvZ2dpbmdfdW5pdHRlc3QuY2MgKi8sCisJ
CQkJNDEzQTIxNzIxRkUxOEQ2RDAwMzczRTk5IC8qIGxvZ2dpbmcuY2MgKi8sCisJCQkJNDEzQTIx
REUxRkUxOERBRTAwMzczRTk5IC8qIGxvZ2dpbmcuaCAqLywKIAkJCQk0MTNBMjI2QjFGRTE4REYw
MDAzNzNFOTkgLyogbG9nc2lua3MuY2MgKi8sCiAJCQkJNDEzQTIxRkYxRkUxOERCQzAwMzczRTk5
IC8qIGxvZ3NpbmtzLmggKi8sCiAJCQkJNDEzQTIxRDgxRkUxOERBQjAwMzczRTk5IC8qIG1hY2lm
YWRkcnNfY29udmVydGVyLmNjICovLAogCQkJCTQxM0EyMUU0MUZFMThEQjAwMDM3M0U5OSAvKiBt
YWN1dGlscy5jYyAqLywKIAkJCQk0MTNBMjI0NDFGRTE4RERDMDAzNzNFOTkgLyogbWFjdXRpbHMu
aCAqLywKKwkJCQk0MTNBMjFGMDFGRTE4REI1MDAzNzNFOTkgLyogbWVtb3J5X3VzYWdlX3VuaXR0
ZXN0LmNjICovLAogCQkJCTQxM0EyMjJEMUZFMThERDEwMDM3M0U5OSAvKiBtZW1vcnlfdXNhZ2Uu
Y2MgKi8sCiAJCQkJNDEzQTIxQjQxRkUxOEQ5NzAwMzczRTk5IC8qIG1lbW9yeV91c2FnZS5oICov
LAotCQkJCTQxM0EyMUYwMUZFMThEQjUwMDM3M0U5OSAvKiBtZW1vcnlfdXNhZ2VfdW5pdHRlc3Qu
Y2MgKi8sCisJCQkJNDEzQTIxRTExRkUxOERBRjAwMzczRTk5IC8qIG1lc3NhZ2VkaWdlc3RfdW5p
dHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIxQTQxRkUxOEQ5MDAwMzczRTk5IC8qIG1lc3NhZ2VkaWdl
c3QuY2MgKi8sCiAJCQkJNDEzQTIxQTUxRkUxOEQ5MTAwMzczRTk5IC8qIG1lc3NhZ2VkaWdlc3Qu
aCAqLywKLQkJCQk0MTNBMjFFMTFGRTE4REFGMDAzNzNFOTkgLyogbWVzc2FnZWRpZ2VzdF91bml0
dGVzdC5jYyAqLywKIAkJCQk0MTNBMjIxODFGRTE4REM2MDAzNzNFOTkgLyogbWVzc2FnZWhhbmRs
ZXIuY2MgKi8sCiAJCQkJNDEzQTIxNUYxRkUxOEQ1QTAwMzczRTk5IC8qIG1lc3NhZ2VoYW5kbGVy
LmggKi8sCisJCQkJNDEzQTIxN0ExRkUxOEQ3NTAwMzczRTk5IC8qIG1lc3NhZ2VxdWV1ZV91bml0
dGVzdC5jYyAqLywKIAkJCQk0MTNBMjE1NjFGRTE4RDU0MDAzNzNFOTkgLyogbWVzc2FnZXF1ZXVl
LmNjICovLAogCQkJCTQxM0EyMjU2MUZFMThERTQwMDM3M0U5OSAvKiBtZXNzYWdlcXVldWUuaCAq
LywKLQkJCQk0MTNBMjE3QTFGRTE4RDc1MDAzNzNFOTkgLyogbWVzc2FnZXF1ZXVlX3VuaXR0ZXN0
LmNjICovLAogCQkJCTQxM0EyMUM4MUZFMThEQTEwMDM3M0U5OSAvKiBuYXRfdW5pdHRlc3QuY2Mg
Ki8sCiAJCQkJNDEzQTIxNTMxRkUxOEQ1MzAwMzczRTk5IC8qIG5hdHNlcnZlci5jYyAqLywKIAkJ
CQk0MTNBMjE2QjFGRTE4RDY4MDAzNzNFOTkgLyogbmF0c2VydmVyLmggKi8sCkBAIC03OTQwLDI0
ICs3OTgwLDI0IEBACiAJCQkJNDEzQTIxNEYxRkUxOEQ1MTAwMzczRTk5IC8qIG5ldGhlbHBlci5o
ICovLAogCQkJCTQxM0EyMjRFMUZFMThERTAwMDM3M0U5OSAvKiBuZXRoZWxwZXJzLmNjICovLAog
CQkJCTQxM0EyMjM3MUZFMThERDYwMDM3M0U5OSAvKiBuZXRoZWxwZXJzLmggKi8sCi0JCQkJNDEz
QTIyOTQxRkUxOEUwMTAwMzczRTk5IC8qIG5ldHdvcmsuY2MgKi8sCi0JCQkJNDEzQTIyMDQxRkUx
OERCRTAwMzczRTk5IC8qIG5ldHdvcmsuaCAqLywKKwkJCQk0MUZDQkIyNDIxQjFGODVEMDBBNURG
MjcgLyogbmV0d29yayAqLywKIAkJCQk0MTNBMjIyMzFGRTE4RENDMDAzNzNFOTkgLyogbmV0d29y
a19jb25zdGFudHMuaCAqLywKIAkJCQk0MTNBMjI2ODFGRTE4REVFMDAzNzNFOTkgLyogbmV0d29y
a191bml0dGVzdC5jYyAqLywKKwkJCQk0MTNBMjI5NDFGRTE4RTAxMDAzNzNFOTkgLyogbmV0d29y
ay5jYyAqLywKKwkJCQk0MTNBMjIwNDFGRTE4REJFMDAzNzNFOTkgLyogbmV0d29yay5oICovLAog
CQkJCTQxM0EyMjM4MUZFMThERDYwMDM3M0U5OSAvKiBuZXR3b3JrbW9uaXRvci5jYyAqLywKIAkJ
CQk0MTNBMjIyOTFGRTE4RENGMDAzNzNFOTkgLyogbmV0d29ya21vbml0b3IuaCAqLywKIAkJCQk0
MTNBMjE2OTFGRTE4RDY1MDAzNzNFOTkgLyogbmV0d29ya3JvdXRlLmggKi8sCi0JCQkJNDEzQTIy
MEMxRkUxOERDMTAwMzczRTk5IC8qIG5vb3AuY2MgKi8sCi0JCQkJNDEzQTIyOUMxRkUxOEUwNDAw
MzczRTk5IC8qIG5vb3AubW0gKi8sCisJCQkJNDEzQTIyN0MxRkUxOERGODAwMzczRTk5IC8qIG51
bGxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIyN0YxRkUxOERGOTAwMzcz
RTk5IC8qIG51bGxzb2NrZXRzZXJ2ZXIuY2MgKi8sCiAJCQkJNDEzQTIyNkQxRkUxOERGMTAwMzcz
RTk5IC8qIG51bGxzb2NrZXRzZXJ2ZXIuaCAqLywKLQkJCQk0MTNBMjI3QzFGRTE4REY4MDAzNzNF
OTkgLyogbnVsbHNvY2tldHNlcnZlcl91bml0dGVzdC5jYyAqLywKLQkJCQk0MTNBMjFFMjFGRTE4
REFGMDAzNzNFOTkgLyogb25ldGltZWV2ZW50LmggKi8sCisJCQkJNDE5QzgzNDExRkUyNDYzODAw
NDBDMzBGIC8qIG51bWVyaWNzICovLAogCQkJCTQxM0EyMTYyMUZFMThENUQwMDM3M0U5OSAvKiBv
bmV0aW1lZXZlbnRfdW5pdHRlc3QuY2MgKi8sCisJCQkJNDEzQTIxRTIxRkUxOERBRjAwMzczRTk5
IC8qIG9uZXRpbWVldmVudC5oICovLAogCQkJCTQxM0EyMjc1MUZFMThERjYwMDM3M0U5OSAvKiBv
cGVuc3NsLmggKi8sCisJCQkJNDEzQTIyN0UxRkUxOERGOTAwMzczRTk5IC8qIG9wZW5zc2xhZGFw
dGVyX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMTlBMUZFMThEOEIwMDM3M0U5OSAvKiBvcGVu
c3NsYWRhcHRlci5jYyAqLywKIAkJCQk0MTNBMjFEQjFGRTE4REFDMDAzNzNFOTkgLyogb3BlbnNz
bGFkYXB0ZXIuaCAqLywKLQkJCQk0MTNBMjI3RTFGRTE4REY5MDAzNzNFOTkgLyogb3BlbnNzbGFk
YXB0ZXJfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDFEREIyNUUyMTI2NzlBMTAwMjk2RDQ3IC8qIG9w
ZW5zc2xjZXJ0aWZpY2F0ZS5jYyAqLywKIAkJCQk0MUREQjI2MDIxMjY3OUEyMDAyOTZENDcgLyog
b3BlbnNzbGNlcnRpZmljYXRlLmggKi8sCiAJCQkJNDEzQTIyNDAxRkUxOEREQjAwMzczRTk5IC8q
IG9wZW5zc2xkaWdlc3QuY2MgKi8sCkBAIC03OTcwLDIyICs4MDEwLDE3IEBACiAJCQkJNDEzQTIy
NjMxRkUxOERFQTAwMzczRTk5IC8qIG9wZW5zc2xzdHJlYW1hZGFwdGVyLmggKi8sCiAJCQkJNDFE
REIyNUYyMTI2NzlBMjAwMjk2RDQ3IC8qIG9wZW5zc2x1dGlsaXR5LmNjICovLAogCQkJCTQxRERC
MjVCMjEyNjc5OUYwMDI5NkQ0NyAvKiBvcGVuc3NsdXRpbGl0eS5oICovLAotCQkJCTQxM0EyMUY2
MUZFMThEQjgwMDM3M0U5OSAvKiBvcHRpb25zZmlsZS5jYyAqLywKLQkJCQk0MTNBMjFGMTFGRTE4
REI2MDAzNzNFOTkgLyogb3B0aW9uc2ZpbGUuaCAqLywKLQkJCQk0MTNBMjFDNzFGRTE4REExMDAz
NzNFOTkgLyogb3B0aW9uc2ZpbGVfdW5pdHRlc3QuY2MgKi8sCi0JCQkJNDEzQTIxRTgxRkUxOERC
MjAwMzczRTk5IC8qIHBhdGh1dGlscy5jYyAqLywKLQkJCQk0MTNBMjIzRDFGRTE4REQ5MDAzNzNF
OTkgLyogcGF0aHV0aWxzLmggKi8sCi0JCQkJNDEzQTIxOUQxRkUxOEQ4RDAwMzczRTk5IC8qIHBh
dGh1dGlsc191bml0dGVzdC5jYyAqLywKKwkJCQk0MTNBMjFGRDFGRTE4REJCMDAzNzNFOTkgLyog
T1dORVJTICovLAorCQkJCTQxM0EyMjdCMUZFMThERjgwMDM3M0U5OSAvKiBwaHlzaWNhbHNvY2tl
dHNlcnZlcl91bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjFFOTFGRTE4REIyMDAzNzNFOTkgLyog
cGh5c2ljYWxzb2NrZXRzZXJ2ZXIuY2MgKi8sCiAJCQkJNDEzQTIyOTgxRkUxOEUwMzAwMzczRTk5
IC8qIHBoeXNpY2Fsc29ja2V0c2VydmVyLmggKi8sCi0JCQkJNDEzQTIyN0IxRkUxOERGODAwMzcz
RTk5IC8qIHBoeXNpY2Fsc29ja2V0c2VydmVyX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMjA3
MUZFMThEQkYwMDM3M0U5OSAvKiBwbGF0Zm9ybV9maWxlLmNjICovLAogCQkJCTQxM0EyMTc5MUZF
MThENzQwMDM3M0U5OSAvKiBwbGF0Zm9ybV9maWxlLmggKi8sCi0JCQkJNDEzQTIxQ0ExRkUxOERB
MzAwMzczRTk5IC8qIHBsYXRmb3JtX3RocmVhZC5jYyAqLywKLQkJCQk0MTNBMjI1MzFGRTE4REUy
MDAzNzNFOTkgLyogcGxhdGZvcm1fdGhyZWFkLmggKi8sCiAJCQkJNDFEREIyNTMyMTI2NzhFMzAw
Mjk2RDQ3IC8qIHBsYXRmb3JtX3RocmVhZF90eXBlcy5jYyAqLywKIAkJCQk0MTNBMjFDOTFGRTE4
REEyMDAzNzNFOTkgLyogcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmggKi8sCiAJCQkJNDEzQTIxRDEx
RkUxOERBNzAwMzczRTk5IC8qIHBsYXRmb3JtX3RocmVhZF91bml0dGVzdC5jYyAqLywKKwkJCQk0
MTNBMjFDQTFGRTE4REEzMDAzNzNFOTkgLyogcGxhdGZvcm1fdGhyZWFkLmNjICovLAorCQkJCTQx
M0EyMjUzMUZFMThERTIwMDM3M0U5OSAvKiBwbGF0Zm9ybV90aHJlYWQuaCAqLywKIAkJCQk0MTNB
MjI3MzFGRTE4REY2MDAzNzNFOTkgLyogcHJvdG9idWZfdXRpbHMuaCAqLywKIAkJCQk0MTNBMjE0
QjFGRTE4RDRFMDAzNzNFOTkgLyogcHJveHlfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIyNkYx
RkUxOERGMjAwMzczRTk5IC8qIHByb3h5aW5mby5jYyAqLywKQEAgLTc5OTQsMTMxICs4MDI5LDEz
MyBAQAogCQkJCTQxM0EyMjcyMUZFMThERjUwMDM3M0U5OSAvKiBwcm94eXNlcnZlci5oICovLAog
CQkJCTQxM0EyMUE2MUZFMThEOTEwMDM3M0U5OSAvKiByYWNlX2NoZWNrZXIuY2MgKi8sCiAJCQkJ
NDEzQTIyOUQxRkUxOEUwNTAwMzczRTk5IC8qIHJhY2VfY2hlY2tlci5oICovLAorCQkJCTQxM0Ey
MTY2MUZFMThENjIwMDM3M0U5OSAvKiByYW5kb21fdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIy
NzgxRkUxOERGNzAwMzczRTk5IC8qIHJhbmRvbS5jYyAqLywKIAkJCQk0MTNBMjFGODFGRTE4REI5
MDAzNzNFOTkgLyogcmFuZG9tLmggKi8sCi0JCQkJNDEzQTIxNjYxRkUxOEQ2MjAwMzczRTk5IC8q
IHJhbmRvbV91bml0dGVzdC5jYyAqLywKKwkJCQk0MTNBMjI5RTFGRTE4RTA1MDAzNzNFOTkgLyog
cmF0ZV9saW1pdGVyX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMjNBMUZFMThERDgwMDM3M0U5
OSAvKiByYXRlX2xpbWl0ZXIuY2MgKi8sCiAJCQkJNDEzQTIyMEQxRkUxOERDMjAwMzczRTk5IC8q
IHJhdGVfbGltaXRlci5oICovLAotCQkJCTQxM0EyMjlFMUZFMThFMDUwMDM3M0U5OSAvKiByYXRl
X2xpbWl0ZXJfdW5pdHRlc3QuY2MgKi8sCisJCQkJNDEzQTIxNzMxRkUxOEQ2RTAwMzczRTk5IC8q
IHJhdGVfc3RhdGlzdGljc191bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjIwNTFGRTE4REJFMDAz
NzNFOTkgLyogcmF0ZV9zdGF0aXN0aWNzLmNjICovLAogCQkJCTQxM0EyMUI5MUZFMThEOUEwMDM3
M0U5OSAvKiByYXRlX3N0YXRpc3RpY3MuaCAqLywKLQkJCQk0MTNBMjE3MzFGRTE4RDZFMDAzNzNF
OTkgLyogcmF0ZV9zdGF0aXN0aWNzX3VuaXR0ZXN0LmNjICovLAorCQkJCTQxM0EyMjFGMUZFMThE
QzkwMDM3M0U5OSAvKiByYXRldHJhY2tlcl91bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjIwRjFG
RTE4REMyMDAzNzNFOTkgLyogcmF0ZXRyYWNrZXIuY2MgKi8sCiAJCQkJNDEzQTIxQUYxRkUxOEQ5
NTAwMzczRTk5IC8qIHJhdGV0cmFja2VyLmggKi8sCi0JCQkJNDEzQTIyMUYxRkUxOERDOTAwMzcz
RTk5IC8qIHJhdGV0cmFja2VyX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMUFEMUZFMThEOTQw
MDM3M0U5OSAvKiByZWZjb3VudC5oICovLAotCQkJCTQxM0EyMjE0MUZFMThEQzQwMDM3M0U5OSAv
KiByZWZjb3VudGVkb2JqZWN0LmggKi8sCiAJCQkJNDEzQTIxQ0QxRkUxOERBNTAwMzczRTk5IC8q
IHJlZmNvdW50ZWRvYmplY3RfdW5pdHRlc3QuY2MgKi8sCisJCQkJNDEzQTIyMTQxRkUxOERDNDAw
MzczRTk5IC8qIHJlZmNvdW50ZWRvYmplY3QuaCAqLywKIAkJCQk0MTNBMjFDQzFGRTE4REE0MDAz
NzNFOTkgLyogcmVmY291bnRlci5oICovLAotCQkJCTQxM0EyMjU0MUZFMThERTMwMDM3M0U5OSAv
KiByb2xsaW5nYWNjdW11bGF0b3IuaCAqLywKIAkJCQk0MTNBMjE3QjFGRTE4RDc2MDAzNzNFOTkg
Lyogcm9sbGluZ2FjY3VtdWxhdG9yX3VuaXR0ZXN0LmNjICovLAorCQkJCTQxM0EyMjU0MUZFMThE
RTMwMDM3M0U5OSAvKiByb2xsaW5nYWNjdW11bGF0b3IuaCAqLywKKwkJCQk0MTNBMjI4ODFGRTE4
REZEMDAzNzNFOTkgLyogcnRjY2VydGlmaWNhdGVfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIx
QkIxRkUxOEQ5QjAwMzczRTk5IC8qIHJ0Y2NlcnRpZmljYXRlLmNjICovLAogCQkJCTQxM0EyMUNG
MUZFMThEQTYwMDM3M0U5OSAvKiBydGNjZXJ0aWZpY2F0ZS5oICovLAotCQkJCTQxM0EyMjg4MUZF
MThERkQwMDM3M0U5OSAvKiBydGNjZXJ0aWZpY2F0ZV91bml0dGVzdC5jYyAqLywKKwkJCQk0MTNB
MjE4NTFGRTE4RDdFMDAzNzNFOTkgLyogcnRjY2VydGlmaWNhdGVnZW5lcmF0b3JfdW5pdHRlc3Qu
Y2MgKi8sCiAJCQkJNDEzQTIxNjUxRkUxOEQ2MTAwMzczRTk5IC8qIHJ0Y2NlcnRpZmljYXRlZ2Vu
ZXJhdG9yLmNjICovLAogCQkJCTQxM0EyMTg2MUZFMThEN0YwMDM3M0U5OSAvKiBydGNjZXJ0aWZp
Y2F0ZWdlbmVyYXRvci5oICovLAotCQkJCTQxM0EyMTg1MUZFMThEN0UwMDM3M0U5OSAvKiBydGNj
ZXJ0aWZpY2F0ZWdlbmVyYXRvcl91bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjFENDFGRTE4REE5
MDAzNzNFOTkgLyogc2FuaXRpemVyLmggKi8sCiAJCQkJNDEzQTIxQjAxRkUxOEQ5NjAwMzczRTk5
IC8qIHNjb3BlZF9yZWZfcHRyLmggKi8sCi0JCQkJNDEzQTIxN0UxRkUxOEQ3ODAwMzczRTk5IC8q
IHNlcXVlbmNlZF90YXNrX2NoZWNrZXIuaCAqLywKIAkJCQk0MTNBMjI0QTFGRTE4RERGMDAzNzNF
OTkgLyogc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl9pbXBsLmNjICovLAogCQkJCTQxM0EyMjVCMUZF
MThERTYwMDM3M0U5OSAvKiBzZXF1ZW5jZWRfdGFza19jaGVja2VyX2ltcGwuaCAqLywKIAkJCQk0
MTNBMjFCRDFGRTE4RDlDMDAzNzNFOTkgLyogc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl91bml0dGVz
dC5jYyAqLywKKwkJCQk0MTNBMjE3RTFGRTE4RDc4MDAzNzNFOTkgLyogc2VxdWVuY2VkX3Rhc2tf
Y2hlY2tlci5oICovLAorCQkJCTQxM0EyMjIyMUZFMThEQ0IwMDM3M0U5OSAvKiBzaWduYWx0aHJl
YWRfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIyMDgxRkUxOERDMDAwMzczRTk5IC8qIHNpZ25h
bHRocmVhZC5jYyAqLywKIAkJCQk0MTNBMjIyRTFGRTE4REQxMDAzNzNFOTkgLyogc2lnbmFsdGhy
ZWFkLmggKi8sCi0JCQkJNDEzQTIyMjIxRkUxOERDQjAwMzczRTk5IC8qIHNpZ25hbHRocmVhZF91
bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjFBMjFGRTE4RDhGMDAzNzNFOTkgLyogc2lnc2xvdF91
bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjFERjFGRTE4REFFMDAzNzNFOTkgLyogc2lnc2xvdHJl
cGVhdGVyLmggKi8sCi0JCQkJNDEzQTIyNjcxRkUxOERFQzAwMzczRTk5IC8qIHNpZ3Nsb3R0ZXN0
ZXIuaCAqLywKIAkJCQk0MTNBMjI0NjFGRTE4REREMDAzNzNFOTkgLyogc2lnc2xvdHRlc3Rlcl91
bml0dGVzdC5jYyAqLywKLQkJCQk0MUREQjI1NTIxMjY3OTBBMDAyOTZENDcgLyogc29ja2V0LmNj
ICovLAotCQkJCTQxM0EyMTg4MUZFMThEODAwMDM3M0U5OSAvKiBzb2NrZXQuaCAqLywKKwkJCQk0
MTNBMjI2NzFGRTE4REVDMDAzNzNFOTkgLyogc2lnc2xvdHRlc3Rlci5oICovLAogCQkJCTQxM0Ey
MUJBMUZFMThEOUEwMDM3M0U5OSAvKiBzb2NrZXRfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIx
ODcxRkUxOEQ4MDAwMzczRTk5IC8qIHNvY2tldF91bml0dGVzdC5oICovLAorCQkJCTQxRERCMjU1
MjEyNjc5MEEwMDI5NkQ0NyAvKiBzb2NrZXQuY2MgKi8sCisJCQkJNDEzQTIxODgxRkUxOEQ4MDAw
MzczRTk5IC8qIHNvY2tldC5oICovLAogCQkJCTQxM0EyMTlCMUZFMThEOEIwMDM3M0U5OSAvKiBz
b2NrZXRhZGFwdGVycy5jYyAqLywKIAkJCQk0MTNBMjIwRTFGRTE4REMyMDAzNzNFOTkgLyogc29j
a2V0YWRhcHRlcnMuaCAqLywKKwkJCQk0MTNBMjIxMDFGRTE4REMzMDAzNzNFOTkgLyogc29ja2V0
YWRkcmVzc191bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjIxNTFGRTE4REM1MDAzNzNFOTkgLyog
c29ja2V0YWRkcmVzcy5jYyAqLywKIAkJCQk0MTNBMjI3NjFGRTE4REY3MDAzNzNFOTkgLyogc29j
a2V0YWRkcmVzcy5oICovLAotCQkJCTQxM0EyMjEwMUZFMThEQzMwMDM3M0U5OSAvKiBzb2NrZXRh
ZGRyZXNzX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMUY5MUZFMThEQjkwMDM3M0U5OSAvKiBz
b2NrZXRhZGRyZXNzcGFpci5jYyAqLywKIAkJCQk0MTNBMjI3NzFGRTE4REY3MDAzNzNFOTkgLyog
c29ja2V0YWRkcmVzc3BhaXIuaCAqLywKIAkJCQk0MTNBMjE2QzFGRTE4RDY5MDAzNzNFOTkgLyog
c29ja2V0ZmFjdG9yeS5oICovLAogCQkJCTQxM0EyMjY2MUZFMThERUMwMDM3M0U5OSAvKiBzb2Nr
ZXRzZXJ2ZXIuaCAqLywKIAkJCQk0MTNBMjE3QzFGRTE4RDc3MDAzNzNFOTkgLyogc29ja2V0c3Ry
ZWFtLmNjICovLAogCQkJCTQxM0EyMjAwMUZFMThEQkMwMDM3M0U5OSAvKiBzb2NrZXRzdHJlYW0u
aCAqLywKKwkJCQk0MTNBMjIzNDFGRTE4REQ0MDAzNzNFOTkgLyogc3NsYWRhcHRlcl91bml0dGVz
dC5jYyAqLywKIAkJCQk0MTNBMjIyNTFGRTE4RENEMDAzNzNFOTkgLyogc3NsYWRhcHRlci5jYyAq
LywKIAkJCQk0MTNBMjI0RjFGRTE4REUxMDAzNzNFOTkgLyogc3NsYWRhcHRlci5oICovLAotCQkJ
CTQxM0EyMjM0MUZFMThERDQwMDM3M0U5OSAvKiBzc2xhZGFwdGVyX3VuaXR0ZXN0LmNjICovLAog
CQkJCTQxRTAyQ0I5MjEyNzM1NkEwMEMyN0NENiAvKiBzc2xjZXJ0aWZpY2F0ZS5jYyAqLywKIAkJ
CQk0MUUwMkNCODIxMjczNTY5MDBDMjdDRDYgLyogc3NsY2VydGlmaWNhdGUuaCAqLywKIAkJCQk0
MTNBMjI5RjFGRTE4RTA2MDAzNzNFOTkgLyogc3NsZmluZ2VycHJpbnQuY2MgKi8sCiAJCQkJNDEz
QTIyNUMxRkUxOERFNjAwMzczRTk5IC8qIHNzbGZpbmdlcnByaW50LmggKi8sCisJCQkJNDEzQTIy
NkMxRkUxOERGMDAwMzczRTk5IC8qIHNzbGlkZW50aXR5X3VuaXR0ZXN0LmNjICovLAogCQkJCTQx
M0EyMTYwMUZFMThENUIwMDM3M0U5OSAvKiBzc2xpZGVudGl0eS5jYyAqLywKIAkJCQk0MTNBMjE4
RjFGRTE4RDg0MDAzNzNFOTkgLyogc3NsaWRlbnRpdHkuaCAqLywKLQkJCQk0MTNBMjI2QzFGRTE4
REYwMDAzNzNFOTkgLyogc3NsaWRlbnRpdHlfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIyM0Yx
RkUxOEREQTAwMzczRTk5IC8qIHNzbHJvb3RzLmggKi8sCisJCQkJNDEzQTIxRUIxRkUxOERCMzAw
MzczRTk5IC8qIHNzbHN0cmVhbWFkYXB0ZXJfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIxQUEx
RkUxOEQ5MzAwMzczRTk5IC8qIHNzbHN0cmVhbWFkYXB0ZXIuY2MgKi8sCiAJCQkJNDEzQTIyNkUx
RkUxOERGMTAwMzczRTk5IC8qIHNzbHN0cmVhbWFkYXB0ZXIuaCAqLywKLQkJCQk0MTNBMjFFQjFG
RTE4REIzMDAzNzNFOTkgLyogc3Nsc3RyZWFtYWRhcHRlcl91bml0dGVzdC5jYyAqLywKKwkJCQk0
MTNBMjI1MDFGRTE4REUxMDAzNzNFOTkgLyogc3RyZWFtX3VuaXR0ZXN0LmNjICovLAogCQkJCTQx
M0EyMjgwMUZFMThERkEwMDM3M0U5OSAvKiBzdHJlYW0uY2MgKi8sCiAJCQkJNDEzQTIxQTgxRkUx
OEQ5MjAwMzczRTk5IC8qIHN0cmVhbS5oICovLAotCQkJCTQxM0EyMjUwMUZFMThERTEwMDM3M0U5
OSAvKiBzdHJlYW1fdW5pdHRlc3QuY2MgKi8sCisJCQkJNDEzQTIxNzgxRkUxOEQ3MzAwMzczRTk5
IC8qIHN0cmluZ190b19udW1iZXJfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIyODMxRkUxOERG
QzAwMzczRTk5IC8qIHN0cmluZ190b19udW1iZXIuY2MgKi8sCiAJCQkJNDEzQTIyMTExRkUxOERD
MzAwMzczRTk5IC8qIHN0cmluZ190b19udW1iZXIuaCAqLywKLQkJCQk0MTNBMjE3ODFGRTE4RDcz
MDAzNzNFOTkgLyogc3RyaW5nX3RvX251bWJlcl91bml0dGVzdC5jYyAqLywKKwkJCQk0MTNBMjIw
MzFGRTE4REJFMDAzNzNFOTkgLyogc3RyaW5nZW5jb2RlX3VuaXR0ZXN0LmNjICovLAogCQkJCTQx
M0EyMTVCMUZFMThENTcwMDM3M0U5OSAvKiBzdHJpbmdlbmNvZGUuY2MgKi8sCiAJCQkJNDEzQTIx
OTYxRkUxOEQ4OTAwMzczRTk5IC8qIHN0cmluZ2VuY29kZS5oICovLAotCQkJCTQxM0EyMjAzMUZF
MThEQkUwMDM3M0U5OSAvKiBzdHJpbmdlbmNvZGVfdW5pdHRlc3QuY2MgKi8sCi0JCQkJNDEzQTIy
NUUxRkUxOERFNzAwMzczRTk5IC8qIHN0cmluZ2l6ZV9tYWNyb3MuaCAqLywKIAkJCQk0MTNBMjI0
NzFGRTE4REREMDAzNzNFOTkgLyogc3RyaW5naXplX21hY3Jvc191bml0dGVzdC5jYyAqLywKKwkJ
CQk0MTNBMjI1RTFGRTE4REU3MDAzNzNFOTkgLyogc3RyaW5naXplX21hY3Jvcy5oICovLAorCQkJ
CTQxRERCMjY3MjEyNjc5QUUwMDI5NkQ0NyAvKiBzdHJpbmdzICovLAorCQkJCTQxM0EyMjMxMUZF
MThERDMwMDM3M0U5OSAvKiBzdHJpbmd1dGlsc191bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjFC
RjFGRTE4RDlDMDAzNzNFOTkgLyogc3RyaW5ndXRpbHMuY2MgKi8sCiAJCQkJNDEzQTIxNzcxRkUx
OEQ3MjAwMzczRTk5IC8qIHN0cmluZ3V0aWxzLmggKi8sCi0JCQkJNDEzQTIyMzExRkUxOEREMzAw
MzczRTk5IC8qIHN0cmluZ3V0aWxzX3VuaXR0ZXN0LmNjICovLAotCQkJCTQxM0EyMUYzMUZFMThE
QjcwMDM3M0U5OSAvKiBzd2FwX3F1ZXVlLmggKi8sCiAJCQkJNDEzQTIxOTcxRkUxOEQ4OTAwMzcz
RTk5IC8qIHN3YXBfcXVldWVfdW5pdHRlc3QuY2MgKi8sCi0JCQkJNDEzQTIxRTUxRkUxOERCMTAw
MzczRTk5IC8qIHRhc2tfcXVldWUuaCAqLywKKwkJCQk0MTNBMjFGMzFGRTE4REI3MDAzNzNFOTkg
Lyogc3dhcF9xdWV1ZS5oICovLAorCQkJCTQxOTI0MTVDMjEyNzM3OTIwMDYzNEZDRiAvKiBzeW5j
aHJvbml6YXRpb24gKi8sCisJCQkJNDFGMjYzQTIyMTI2ODA4ODAwMjc0RjU5IC8qIHN5c3RlbSAq
LywKIAkJCQk0MTNBMjI4QjFGRTE4REZFMDAzNzNFOTkgLyogdGFza19xdWV1ZV9nY2QuY2MgKi8s
CiAJCQkJNDEzQTIxNzQxRkUxOEQ3MDAwMzczRTk5IC8qIHRhc2tfcXVldWVfbGliZXZlbnQuY2Mg
Ki8sCiAJCQkJNDEzQTIxRDkxRkUxOERBQjAwMzczRTk5IC8qIHRhc2tfcXVldWVfcG9zaXguY2Mg
Ki8sCiAJCQkJNDEzQTIyMkExRkUxOERDRjAwMzczRTk5IC8qIHRhc2tfcXVldWVfcG9zaXguaCAq
LywKIAkJCQk0MTNBMjFCMTFGRTE4RDk2MDAzNzNFOTkgLyogdGFza19xdWV1ZV91bml0dGVzdC5j
YyAqLywKIAkJCQk0MTNBMjE5RTFGRTE4RDhEMDAzNzNFOTkgLyogdGFza19xdWV1ZV93aW4uY2Mg
Ki8sCisJCQkJNDEzQTIxRTUxRkUxOERCMTAwMzczRTk5IC8qIHRhc2tfcXVldWUuaCAqLywKIAkJ
CQk0MTNBMjFBOTFGRTE4RDkyMDAzNzNFOTkgLyogdGVtcGxhdGVfdXRpbC5oICovLAogCQkJCTQx
M0EyMTQ0MUZFMThENEMwMDM3M0U5OSAvKiB0ZXN0YmFzZTY0LmggKi8sCisJCQkJNDEzQTIyODEx
RkUxOERGQjAwMzczRTk5IC8qIHRlc3RjbGllbnRfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIx
RDMxRkUxOERBODAwMzczRTk5IC8qIHRlc3RjbGllbnQuY2MgKi8sCiAJCQkJNDEzQTIyODIxRkUx
OERGQjAwMzczRTk5IC8qIHRlc3RjbGllbnQuaCAqLywKLQkJCQk0MTNBMjI4MTFGRTE4REZCMDAz
NzNFOTkgLyogdGVzdGNsaWVudF91bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjE0OTFGRTE4RDRF
MDAzNzNFOTkgLyogdGVzdGVjaG9zZXJ2ZXIuY2MgKi8sCiAJCQkJNDEzQTIxRDYxRkUxOERBQTAw
MzczRTk5IC8qIHRlc3RlY2hvc2VydmVyLmggKi8sCiAJCQkJNDEzQTIxOUYxRkUxOEQ4RTAwMzcz
RTk5IC8qIHRlc3R1dGlscy5jYyAqLywKIAkJCQk0MTNBMjI4NjFGRTE4REZDMDAzNzNFOTkgLyog
dGVzdHV0aWxzLmggKi8sCi0JCQkJNDEzQTIxOTAxRkUxOEQ4NTAwMzczRTk5IC8qIHRocmVhZC5j
YyAqLywKLQkJCQk0MTNBMjFFRTFGRTE4REI0MDAzNzNFOTkgLyogdGhyZWFkLmggKi8sCi0JCQkJ
NDEzQTIxNkUxRkUxOEQ2QTAwMzczRTk5IC8qIHRocmVhZF9hbm5vdGF0aW9ucy5oICovLAorCQkJ
CTQxRjI2M0I0MjEyNjgwRTgwMDI3NEY1OSAvKiB0aGlyZF9wYXJ0eSAqLywKIAkJCQk0MTNBMjI4
NDFGRTE4REZDMDAzNzNFOTkgLyogdGhyZWFkX2Fubm90YXRpb25zX3VuaXR0ZXN0LmNjICovLAot
CQkJCTQxM0EyMTkzMUZFMThEODcwMDM3M0U5OSAvKiB0aHJlYWRfY2hlY2tlci5oICovLAorCQkJ
CTQxM0EyMTZFMUZFMThENkEwMDM3M0U5OSAvKiB0aHJlYWRfYW5ub3RhdGlvbnMuaCAqLywKIAkJ
CQk0MTNBMjFGQzFGRTE4REJCMDAzNzNFOTkgLyogdGhyZWFkX2NoZWNrZXJfaW1wbC5jYyAqLywK
IAkJCQk0MTNBMjE1RTFGRTE4RDU5MDAzNzNFOTkgLyogdGhyZWFkX2NoZWNrZXJfaW1wbC5oICov
LAogCQkJCTQxM0EyMUI2MUZFMThEOTgwMDM3M0U5OSAvKiB0aHJlYWRfY2hlY2tlcl91bml0dGVz
dC5jYyAqLywKLQkJCQk0MTNBMjI4QTFGRTE4REZFMDAzNzNFOTkgLyogdGhyZWFkX2Rhcndpbi5t
bSAqLywKKwkJCQk0MTNBMjE5MzFGRTE4RDg3MDAzNzNFOTkgLyogdGhyZWFkX2NoZWNrZXIuaCAq
LywKIAkJCQk0MTNBMjIyNjFGRTE4RENEMDAzNzNFOTkgLyogdGhyZWFkX3VuaXR0ZXN0LmNjICov
LAorCQkJCTQxM0EyMTkwMUZFMThEODUwMDM3M0U5OSAvKiB0aHJlYWQuY2MgKi8sCisJCQkJNDEz
QTIxRUUxRkUxOERCNDAwMzczRTk5IC8qIHRocmVhZC5oICovLAorCQkJCTQxOTI0MTdBMjEyNzM5
MEMwMDYzNEZDRiAvKiB0aW1lICovLAorCQkJCTQxM0EyMjRCMUZFMThEREYwMDM3M0U5OSAvKiB0
aW1lc3RhbXBhbGlnbmVyX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMjI4MUZFMThEQ0UwMDM3
M0U5OSAvKiB0aW1lc3RhbXBhbGlnbmVyLmNjICovLAogCQkJCTQxM0EyMjAxMUZFMThEQkQwMDM3
M0U5OSAvKiB0aW1lc3RhbXBhbGlnbmVyLmggKi8sCi0JCQkJNDEzQTIyNEIxRkUxOERERjAwMzcz
RTk5IC8qIHRpbWVzdGFtcGFsaWduZXJfdW5pdHRlc3QuY2MgKi8sCisJCQkJNDEzQTIyOEUxRkUx
OERGRjAwMzczRTk5IC8qIHRpbWV1dGlsc191bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjI3MDFG
RTE4REYzMDAzNzNFOTkgLyogdGltZXV0aWxzLmNjICovLAogCQkJCTQxM0EyMUY1MUZFMThEQjcw
MDM3M0U5OSAvKiB0aW1ldXRpbHMuaCAqLywKLQkJCQk0MTNBMjI4RTFGRTE4REZGMDAzNzNFOTkg
LyogdGltZXV0aWxzX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMUFCMUZFMThEOTMwMDM3M0U5
OSAvKiB0cmFjZV9ldmVudC5oICovLAogCQkJCTQxM0EyMUY3MUZFMThEQjgwMDM3M0U5OSAvKiB0
eXBlX3RyYWl0cy5oICovLAogCQkJCTQxM0EyMjRDMUZFMThERTAwMDM3M0U5OSAvKiB1bml0dGVz
dF9tYWluLmNjICovLAotCQkJCTQxM0EyMjMzMUZFMThERDQwMDM3M0U5OSAvKiB1bml4ZmlsZXN5
c3RlbS5jYyAqLywKLQkJCQk0MTNBMjE0ODFGRTE4RDREMDAzNzNFOTkgLyogdW5peGZpbGVzeXN0
ZW0uaCAqLywKIAkJCQk0MTNBMjFEQTFGRTE4REFDMDAzNzNFOTkgLyogdmlydHVhbHNvY2tldF91
bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjFCRTFGRTE4RDlDMDAzNzNFOTkgLyogdmlydHVhbHNv
Y2tldHNlcnZlci5jYyAqLywKIAkJCQk0MTNBMjE2MzFGRTE4RDVFMDAzNzNFOTkgLyogdmlydHVh
bHNvY2tldHNlcnZlci5oICovLAorCQkJCTQxM0EyMjcxMUZFMThERjQwMDM3M0U5OSAvKiB3ZWFr
X3B0cl91bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjE5NDFGRTE4RDg4MDAzNzNFOTkgLyogd2Vh
a19wdHIuY2MgKi8sCiAJCQkJNDFFMDJDQkEyMTI3MzU2QTAwQzI3Q0Q2IC8qIHdlYWtfcHRyLmgg
Ki8sCi0JCQkJNDEzQTIyNzExRkUxOERGNDAwMzczRTk5IC8qIHdlYWtfcHRyX3VuaXR0ZXN0LmNj
ICovLAogCQkJCTQxRERCMjU3MjEyNjc5MjgwMDI5NkQ0NyAvKiB6ZXJvX21lbW9yeS5jYyAqLywK
IAkJCQk0MUREQjI1ODIxMjY3OTI4MDAyOTZENDcgLyogemVyb19tZW1vcnkuaCAqLywKIAkJCSk7
CkBAIC04MjA1LDExICs4MjQyLDExIEBACiAJCTQxM0FEMTlGMjEyNjVBREYwMDNGNzI2MyAvKiBh
YnNsICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0MTA2
RDU2QjIxNkMyQjkxMDAxRTNDNDAgLyogc3RyaW5ncyAqLywKIAkJCQk0MTNBRDFBMDIxMjY1QUZB
MDAzRjcyNjMgLyogYWxnb3JpdGhtICovLAogCQkJCTQxM0FEMUE2MjEyNjVCMzUwMDNGNzI2MyAv
KiBiYXNlICovLAogCQkJCTQxRERCMjQ1MjEyNjVCODIwMDI5NkQ0NyAvKiBjb250YWluZXIgKi8s
CiAJCQkJNDFBMDhCQjYyMTI2OEE2QTAwMUQ1RDdCIC8qIG1lbW9yeSAqLywKKwkJCQk0MTA2RDU2
QjIxNkMyQjkxMDAxRTNDNDAgLyogc3RyaW5ncyAqLywKIAkJCQk0MUREQjI0QTIxMjY1QkE4MDAy
OTZENDcgLyogdHlwZXMgKi8sCiAJCQkpOwogCQkJbmFtZSA9IGFic2w7CkBAIC04MjI4LDYgKzgy
NjUsNyBAQAogCQk0MTNBRDFBNjIxMjY1QjM1MDAzRjcyNjMgLyogYmFzZSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDFGQ0JCMUYyMUIxRjgxNDAwQTVE
RjI3IC8qIGludGVybmFsICovLAogCQkJCTQxM0FEMUE5MjEyNjVCNTkwMDNGNzI2MyAvKiBjYXN0
cy5oICovLAogCQkJCTQxM0FEMUE4MjEyNjVCNTkwMDNGNzI2MyAvKiBkeW5hbWljX2Fubm90YXRp
b25zLmNjICovLAogCQkJCTQxM0FEMUFBMjEyNjVCNTkwMDNGNzI2MyAvKiBtYWNyb3MuaCAqLywK
QEAgLTg1NzIsNyArODYxMCw3IEBACiAJCQkJNDEzRTY3OUMyMTY5ODg5NDAwRUYzN0VEIC8qIFJU
Q1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5oICovLAogCQkJCTQxM0U2NzlGMjE2OTg4OTUwMEVG
MzdFRCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMubSAqLywKIAkJCQk0MTNFNjc4MzIx
Njk4NzdEMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MuaCAqLywKLQkJCQk0MTNF
Njc4NDIxNjk4NzdEMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MubW0gKi8sCisJ
CQkJNDFGQ0JCODcyMUIyMDBEQjAwQTVERjI3IC8qIFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLm0g
Ki8sCiAJCQkJNDEzRTY3OEMyMTY5ODdEQjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRnJhbWUuaCAqLywK
IAkJCQk0MTNFNjc4RDIxNjk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9GcmFtZS5tbSAqLywKIAkJ
CQk0MTNFNjc4RTIxNjk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9GcmFtZUJ1ZmZlci5oICovLApA
QCAtODc1Miw2ICs4NzkwLDE0IEBACiAJCTQxOTI0MTY1MjEyNzM4NzkwMDYzNEZDRiAvKiBleHBl
cmltZW50cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NDFGQ0JCNEQyMUIxRkU0NTAwQTVERjI3IC8qIGNwdV9zcGVlZF9leHBlcmltZW50LmNjICovLAor
CQkJCTQxRkNCQjRCMjFCMUZFNDQwMEE1REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5oICov
LAorCQkJCTQxRkNCQjRDMjFCMUZFNDQwMEE1REYyNyAvKiBqaXR0ZXJfdXBwZXJfYm91bmRfZXhw
ZXJpbWVudC5jYyAqLywKKwkJCQk0MUZDQkI0RTIxQjFGRTQ1MDBBNURGMjcgLyogaml0dGVyX3Vw
cGVyX2JvdW5kX2V4cGVyaW1lbnQuaCAqLywKKwkJCQk0MUZDQkI1MDIxQjFGRTQ1MDBBNURGMjcg
Lyogbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuY2MgKi8sCisJCQkJNDFGQ0JC
NEYyMUIxRkU0NTAwQTVERjI3IC8qIG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50
LmggKi8sCisJCQkJNDFGOUJGQzkyMDUxRERBMjAwQUJGMEI5IC8qIGFscl9leHBlcmltZW50LmNj
ICovLAorCQkJCTQxRjlCRkNBMjA1MUREQTIwMEFCRjBCOSAvKiBhbHJfZXhwZXJpbWVudC5oICov
LAogCQkJCTQxOTI0MTZCMjEyNzM4OUIwMDYzNEZDRiAvKiBjb25nZXN0aW9uX2NvbnRyb2xsZXJf
ZXhwZXJpbWVudC5jYyAqLywKIAkJCQk0MTkyNDE2NzIxMjczODlBMDA2MzRGQ0YgLyogY29uZ2Vz
dGlvbl9jb250cm9sbGVyX2V4cGVyaW1lbnQuaCAqLywKIAkJCQk0MTkyNDE2ODIxMjczODlBMDA2
MzRGQ0YgLyogZmllbGRfdHJpYWxfcGFyc2VyLmNjICovLApAQCAtODkzMiw2ICs4OTc4LDggQEAK
IAkJNDE5QzgzNDExRkUyNDYzODAwNDBDMzBGIC8qIG51bWVyaWNzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MUZDQkIxMzIxQjFGN0FBMDBBNURGMjcg
LyogbW92aW5nX2F2ZXJhZ2UuY2MgKi8sCisJCQkJNDFGQ0JCMTQyMUIxRjdBQTAwQTVERjI3IC8q
IG1vdmluZ19hdmVyYWdlLmggKi8sCiAJCQkJNDE5QzgzNDMxRkUyNDY2MjAwNDBDMzBGIC8qIGV4
cF9maWx0ZXIuY2MgKi8sCiAJCQkJNDE5QzgzNDQxRkUyNDY2MzAwNDBDMzBGIC8qIGV4cF9maWx0
ZXIuaCAqLywKIAkJCQk0MTlDODM0NTFGRTI0NjYzMDA0MEMzMEYgLyogaGlzdG9ncmFtX3BlcmNl
bnRpbGVfY291bnRlci5jYyAqLywKQEAgLTkxNzcsMTIgKzkyMjUsOCBAQAogCQkJCTQxRDZCNDYw
MjEyNzMxQTEwMDhGOTM1MyAvKiBkb3duX3NhbXBsZXIuaCAqLywKIAkJCQk0MUEwOEJFNTIxMjcy
Rjg2MDAxRDVEN0IgLyogZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuY2MgKi8sCiAJCQkJ
NDFBMDhCREYyMTI3MkY4NDAwMUQ1RDdCIC8qIGZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9y
LmggKi8sCi0JCQkJNDFENkI0NjUyMTI3MzFBMjAwOEY5MzUzIC8qIGZpeGVkX2dhaW5fY29udHJv
bGxlci5jYyAqLywKLQkJCQk0MUQ2QjQ2NzIxMjczMUEzMDA4RjkzNTMgLyogZml4ZWRfZ2Fpbl9j
b250cm9sbGVyLmggKi8sCiAJCQkJNDFBMDhCREUyMTI3MkY4NDAwMUQ1RDdCIC8qIGdhaW5fYXBw
bGllci5jYyAqLywKIAkJCQk0MUEwOEJFNzIxMjcyRjg2MDAxRDVEN0IgLyogZ2Fpbl9hcHBsaWVy
LmggKi8sCi0JCQkJNDFBMDhCRTAyMTI3MkY4NTAwMUQ1RDdCIC8qIGdhaW5fY3VydmVfYXBwbGll
ci5jYyAqLywKLQkJCQk0MUQ2QjQ2OTIxMjczMUEzMDA4RjkzNTMgLyogZ2Fpbl9jdXJ2ZV9hcHBs
aWVyLmggKi8sCiAJCQkJNDFBMDhCRTEyMTI3MkY4NTAwMUQ1RDdCIC8qIGludGVycG9sYXRlZF9n
YWluX2N1cnZlLmNjICovLAogCQkJCTQxRDZCNDcwMjEyNzMxQTYwMDhGOTM1MyAvKiBsaW1pdGVy
LmNjICovLAogCQkJCTQxQTA4QkVBMjEyNzJGODYwMDFENUQ3QiAvKiBsaW1pdGVyLmggKi8sCkBA
IC05NjIxLDYgKzk2NjUsOCBAQAogCQk0MUUwMkM4RjIxMjczNEU4MDBDMjdDRDYgLyogZ29vZ19j
YyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDFGQ0JC
M0YyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xs
ZXIuY2MgKi8sCisJCQkJNDFGQ0JCM0UyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2lu
ZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCAqLywKIAkJCQk0MUUwMkM5NDIxMjczNTJBMDBDMjdD
RDYgLyogYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmNjICovLAogCQkJCTQxRTAyQzky
MjEyNzM1MkEwMEMyN0NENiAvKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCAqLywK
IAkJCQk0MUUwMkNBMTIxMjczNTJDMDBDMjdDRDYgLyogYWxyX2RldGVjdG9yLmNjICovLApAQCAt
OTYzMCw3ICs5Njc2LDYgQEAKIAkJCQk0MUUwMkM5MTIxMjczNTI5MDBDMjdDRDYgLyogZGVsYXlf
YmFzZWRfYndlLmNjICovLAogCQkJCTQxRTAyQzk3MjEyNzM1MkEwMEMyN0NENiAvKiBkZWxheV9i
YXNlZF9id2UuaCAqLywKIAkJCQk0MUUwMkNBMzIxMjczNTJEMDBDMjdDRDYgLyogZGVsYXlfaW5j
cmVhc2VfZGV0ZWN0b3JfaW50ZXJmYWNlLmggKi8sCi0JCQkJNDFFMDJDOTUyMTI3MzUyQTAwQzI3
Q0Q2IC8qIGdvb2dfY2NfZmFjdG9yeS5jYyAqLywKIAkJCQk0MUUwMkNBMjIxMjczNTJDMDBDMjdD
RDYgLyogZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuY2MgKi8sCiAJCQkJNDFFMDJDOTYyMTI3MzUy
QTAwQzI3Q0Q2IC8qIGdvb2dfY2NfbmV0d29ya19jb250cm9sLmggKi8sCiAJCQkJNDFFMDJDOUQy
MTI3MzUyQjAwQzI3Q0Q2IC8qIG1lZGlhbl9zbG9wZV9lc3RpbWF0b3IuY2MgKi8sCkBAIC05NjQ4
LDYgKzk2OTMsOCBAQAogCQk0MUUwMkNDNjIxMjczNTlGMDBDMjdDRDYgLyogdHJhbnNwb3J0ICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MUZDQkI1RTIx
QjFGRUM0MDBBNURGMjcgLyogZ29vZ19jY19mYWN0b3J5LmNjICovLAorCQkJCTQxRkNCQjVEMjFC
MUZFQzQwMEE1REYyNyAvKiBnb29nX2NjX2ZhY3RvcnkuaCAqLywKIAkJCQk0MUUwMkNDNzIxMjcz
NUI2MDBDMjdDRDYgLyogYml0cmF0ZV9zZXR0aW5ncy5jYyAqLywKIAkJCQk0MUUwMkNDQjIxMjcz
NUI3MDBDMjdDRDYgLyogYml0cmF0ZV9zZXR0aW5ncy5oICovLAogCQkJCTQxRTAyQ0NBMjEyNzM1
QjcwMEMyN0NENiAvKiBuZXR3b3JrX2NvbnRyb2wuaCAqLywKQEAgLTk2NjAsOCArOTcwNyw4IEBA
CiAJCTQxRTAyQ0Q1MjEyNzM2MjMwMEMyN0NENiAvKiBydHAgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQxRTAyQ0Q2MjEyNzM2M0MwMEMyN0NENiAvKiBw
YWNlcl9jb250cm9sbGVyLmNjICovLAotCQkJCTQxOTI0MTg5MjEyNzQ5QzgwMDYzNEZDRiAvKiBw
YWNlcl9jb250cm9sbGVyLmggKi8sCisJCQkJNDFGQ0JCMzUyMUIxRjhGQzAwQTVERjI3IC8qIGNv
bnRyb2xfaGFuZGxlci5jYyAqLywKKwkJCQk0MUZDQkIzNDIxQjFGOEZCMDBBNURGMjcgLyogY29u
dHJvbF9oYW5kbGVyLmggKi8sCiAJCQkJNDE5MjQxODgyMTI3NDlDNzAwNjM0RkNGIC8qIHNlbmRf
c2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgKi8sCiAJCQkJNDFFMDJDRDgyMTI3MzYzRDAw
QzI3Q0Q2IC8qIHNlbmRfdGltZV9oaXN0b3J5LmNjICovLAogCQkJCTQxOTI0MTg3MjEyNzQ5Qzcw
MDYzNEZDRiAvKiBzZW5kX3RpbWVfaGlzdG9yeS5oICovLApAQCAtOTg3NCw2ICs5OTIxLDggQEAK
IAkJNDFGMjYzQTIyMTI2ODA4ODAwMjc0RjU5IC8qIHN5c3RlbSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDFGQ0JCNzQyMUIxRkZBNDAwQTVERjI3IC8q
IGNvY29hX3RocmVhZGluZy5oICovLAorCQkJCTQxRkNCQjczMjFCMUZGQTQwMEE1REYyNyAvKiBj
b2NvYV90aHJlYWRpbmcubW0gKi8sCiAJCQkJNDFGMjYzQUIyMTI2ODBBODAwMjc0RjU5IC8qIGFy
Y2guaCAqLywKIAkJCQk0MUYyNjNBOTIxMjY4MEE3MDAyNzRGNTkgLyogYXNtX2RlZmluZXMuaCAq
LywKIAkJCQk0MUYyNjNBODIxMjY4MEE3MDAyNzRGNTkgLyogQlVJTEQuZ24gKi8sCkBAIC05OTE2
LDcgKzk5NjUsNiBAQAogCQkJCTQxOUM4NDJDMUZFMjRFN0YwMDQwQzMwRiAvKiBzY3JlZW5zaGFy
ZV9sYXllcnMuaCAqLywKIAkJCQk0MTNFNjc2RTIxNjk4NjNBMDBFRjM3RUQgLyogdGVtcG9yYWxf
bGF5ZXJzX2NoZWNrZXIuY2MgKi8sCiAJCQkJNDE5Qzg0MzMxRkUyNEU4MDAwNDBDMzBGIC8qIHRl
bXBvcmFsX2xheWVycy5oICovLAotCQkJCTQxM0U2NzcwMjE2OTg2M0IwMEVGMzdFRCAvKiB2cDhf
dGVtcG9yYWxfbGF5ZXJzLmNjICovLAogCQkJKTsKIAkJCW5hbWUgPSB2cDg7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMTAwMzcsMTMgKzEwMDg1LDQ0IEBACiAJCQluYW1lID0gaW5j
bHVkZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTQxRjlCRkM4MjA1MURE
OEUwMEFCRjBCOSAvKiBleHBlcmltZW50cyAqLyA9IHsKKwkJNDFGQ0JCMUYyMUIxRjgxNDAwQTVE
RjI3IC8qIGludGVybmFsICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQk0MUY5QkZDOTIwNTFEREEyMDBBQkYwQjkgLyogYWxyX2V4cGVyaW1lbnQuY2MgKi8s
Ci0JCQkJNDFGOUJGQ0EyMDUxRERBMjAwQUJGMEI5IC8qIGFscl9leHBlcmltZW50LmggKi8sCisJ
CQkJNDFGQ0JCMjAyMUIxRjgyRTAwQTVERjI3IC8qIHRocm93X2RlbGVnYXRlLmNjICovLAorCQkJ
CTQxRkNCQjIxMjFCMUY4MkYwMEE1REYyNyAvKiB0aHJvd19kZWxlZ2F0ZS5oICovLAogCQkJKTsK
LQkJCW5hbWUgPSBleHBlcmltZW50czsKKwkJCW5hbWUgPSBpbnRlcm5hbDsKKwkJCXBhdGggPSBi
YXNlL2ludGVybmFsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNDFGQ0JC
MjQyMUIxRjg1RDAwQTVERjI3IC8qIG5ldHdvcmsgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTQxRkNCQjI1MjFCMUY4N0UwMEE1REYyNyAvKiBzZW50X3Bh
Y2tldC5jYyAqLywKKwkJCQk0MUZDQkIyNjIxQjFGODdFMDBBNURGMjcgLyogc2VudF9wYWNrZXQu
aCAqLywKKwkJCSk7CisJCQluYW1lID0gbmV0d29yazsKKwkJCXBhdGggPSBydGNfYmFzZS9uZXR3
b3JrOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNDFGQ0JCMjkyMUIxRjhB
MzAwQTVERjI3IC8qIGNyeXB0byAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNDFGQ0JCMkQyMUIxRjhCNjAwQTVERjI3IC8qIGNyeXB0b29wdGlvbnMuY2Mg
Ki8sCisJCQkJNDFGQ0JCMkEyMUIxRjhCNjAwQTVERjI3IC8qIGNyeXB0b29wdGlvbnMuaCAqLywK
KwkJCQk0MUZDQkIyQjIxQjFGOEI2MDBBNURGMjcgLyogZnJhbWVkZWNyeXB0b3JpbnRlcmZhY2Uu
aCAqLywKKwkJCQk0MUZDQkIyQzIxQjFGOEI2MDBBNURGMjcgLyogZnJhbWVlbmNyeXB0b3JpbnRl
cmZhY2UuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY3J5cHRvOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKwkJNDFGQ0JCODEyMUIyMDA1QTAwQTVERjI3IC8qIGludGVybmFsICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0MUZDQkI4MjIx
QjIwMDdCMDBBNURGMjcgLyogbWVtdXRpbC5jYyAqLywKKwkJCQk0MUZDQkI4MzIxQjIwMDdCMDBB
NURGMjcgLyogbWVtdXRpbC5oICovLAorCQkJKTsKKwkJCXBhdGggPSBpbnRlcm5hbDsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCTQxRkU4NjRFMjE1QzUyRTkwMEI2MkMwNyAv
KiBsaXN0Zm10cyAqLyA9IHsKQEAgLTEwODk0LDcgKzEwOTczLDYgQEAKIAkJCQk1QzRCNEMxMDFF
NDMxRjc1MDAyNjUxQzggLyogYml0cmF0ZV9hZGp1c3Rlci5jYyAqLywKIAkJCQk1QzRCNEMxMjFF
NDMxRjc1MDAyNjUxQzggLyogaTQyMF9idWZmZXJfcG9vbC5jYyAqLywKIAkJCQk1QzRCNEMxMzFF
NDMxRjc1MDAyNjUxQzggLyogaW5jb21pbmdfdmlkZW9fc3RyZWFtLmNjICovLAotCQkJCTVDNEI0
QzE2MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZS5jYyAqLywKIAkJCQk1QzRCNEMxNTFF
NDMxRjc1MDAyNjUxQzggLyogdmlkZW9fZnJhbWVfYnVmZmVyLmNjICovLAogCQkJCTVDNEI0QzE3
MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19yZW5kZXJfZnJhbWVzLmNjICovLAogCQkJCTVDNEI0
QzE4MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19yZW5kZXJfZnJhbWVzLmggKi8sCkBAIC0xMTEw
OCw2ICsxMTE4Niw5IEBACiAJCQkJNUNERDhDNDUxRTQzQzU3OTAwNjIxRTkyIC8qIGNhbGwgKi8s
CiAJCQkJNDE5QzgzMEUxRkUyNDI3RjAwNDBDMzBGIC8qIGNhbmRpZGF0ZS5jYyAqLywKIAkJCQk0
MUY5QkY3NzIwNTFDN0ZEMDBBQkYwQjkgLyogY2FuZGlkYXRlLmggKi8sCisJCQkJNDFGQ0JCMDky
MUIxRjUzMDAwQTVERjI3IC8qIGNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmNjICovLAor
CQkJCTQxRkNCQjBEMjFCMUY1MzYwMEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFj
dG9yeS5oICovLAorCQkJCTQxRkNCQjI5MjFCMUY4QTMwMEE1REYyNyAvKiBjcnlwdG8gKi8sCiAJ
CQkJNDFGOUJGODIyMDUxQzgwMDAwQUJGMEI5IC8qIGNyeXB0b3BhcmFtcy5oICovLAogCQkJCTQx
RjI2Mzc3MjEyNjdCNzYwMDI3NEY1OSAvKiBkYXRhY2hhbm5lbGludGVyZmFjZS5jYyAqLywKIAkJ
CQk1QzYzRjhFNzFFNDE3MzdCMDAyQ0E1MzEgLyogZGF0YWNoYW5uZWxpbnRlcmZhY2UuaCAqLywK
QEAgLTExMTE5LDYgKzExMjAwLDggQEAKIAkJCQk0MUYyNjM3QjIxMjY3Qjc3MDAyNzRGNTkgLyog
anNlcGljZWNhbmRpZGF0ZS5jYyAqLywKIAkJCQk1QzYzRjhGMTFFNDE3MzdCMDAyQ0E1MzEgLyog
anNlcGljZWNhbmRpZGF0ZS5oICovLAogCQkJCTVDNjNGOEYzMUU0MTczN0IwMDJDQTUzMSAvKiBq
c2Vwc2Vzc2lvbmRlc2NyaXB0aW9uLmggKi8sCisJCQkJNDFGQ0JCMEMyMUIxRjUzMjAwQTVERjI3
IC8qIG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuY2MgKi8sCisJCQkJNDFGQ0JCMEEyMUIxRjUz
MTAwQTVERjI3IC8qIG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCAqLywKIAkJCQk1QzYzRjhG
NjFFNDE3MzdCMDAyQ0E1MzEgLyogbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5jYyAqLywKIAkJ
CQk1QzYzRjhGNzFFNDE3MzdCMDAyQ0E1MzEgLyogbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5o
ICovLAogCQkJCTVDRDI4NjNGMUU2QTY4M0EwMDk0RkRDOCAvKiBtZWRpYXN0cmVhbWludGVyZmFj
ZS5jYyAqLywKQEAgLTExMTQ4LDYgKzExMjMxLDcgQEAKIAkJCQk1QzYzRjkxQjFFNDE3MzdCMDAy
Q0E1MzEgLyogcnRwc2VuZGVyaW50ZXJmYWNlLmggKi8sCiAJCQkJNDFGMjYzN0MyMTI2N0I3NzAw
Mjc0RjU5IC8qIHJ0cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmNjICovLAogCQkJCTQxRjlCRjgwMjA1
MUM3RkYwMEFCRjBCOSAvKiBydHB0cmFuc2NlaXZlcmludGVyZmFjZS5oICovLAorCQkJCTQxRkNC
QjBCMjFCMUY1MzIwMEE1REYyNyAvKiBzY29wZWRfcmVmcHRyLmggKi8sCiAJCQkJNDFGOUJGODQy
MDUxQzgwMDAwQUJGMEI5IC8qIHNldHJlbW90ZWRlc2NyaXB0aW9ub2JzZXJ2ZXJpbnRlcmZhY2Uu
aCAqLywKIAkJCQk0MTQ1RTRDMDFFRjg5NjI4MDBGQ0Y2RTYgLyogc3RhdHMgKi8sCiAJCQkJNUM2
M0Y5MjExRTQxNzM3QjAwMkNBNTMxIC8qIHN0YXRzdHlwZXMuY2MgKi8sCkBAIC0xMTE5MSw4ICsx
MTI3NSwxMiBAQAogCQkJCTQxOTI0MTRGMjEyNzM3NkUwMDYzNEZDRiAvKiBmYWtlaWNldHJhbnNw
b3J0LmggKi8sCiAJCQkJNDE5MjQxNEUyMTI3Mzc2RTAwNjM0RkNGIC8qIGZha2VwYWNrZXR0cmFu
c3BvcnQuaCAqLywKIAkJCQk1QzYzRjk5NTFFNDE3NEY2MDAyQ0E1MzEgLyogZmFrZXBvcnRhbGxv
Y2F0b3IuaCAqLywKKwkJCQk0MUZDQkI0MzIxQjFGREVFMDBBNURGMjcgLyogaWNlY3JlZGVudGlh
bHNpdGVyYXRvci5jYyAqLywKKwkJCQk0MUZDQkI0NTIxQjFGREVGMDBBNURGMjcgLyogaWNlY3Jl
ZGVudGlhbHNpdGVyYXRvci5oICovLAogCQkJCTQxOUM4M0Q3MUZFMjQ3RjIwMDQwQzMwRiAvKiBp
Y2V0cmFuc3BvcnRpbnRlcm5hbC5jYyAqLywKIAkJCQk0MTkyNDE1MDIxMjczNzZFMDA2MzRGQ0Yg
LyogaWNldHJhbnNwb3J0aW50ZXJuYWwuaCAqLywKKwkJCQk0MUZDQkI0NDIxQjFGREVGMDBBNURG
MjcgLyogbWRuc19tZXNzYWdlLmNjICovLAorCQkJCTQxRkNCQjQyMjFCMUZERUUwMEE1REYyNyAv
KiBtZG5zX21lc3NhZ2UuaCAqLywKIAkJCQk1QzYzRjk5NzFFNDE3NEY2MDAyQ0E1MzEgLyogcDJw
Y29uc3RhbnRzLmNjICovLAogCQkJCTVDNjNGOTk4MUU0MTc0RjYwMDJDQTUzMSAvKiBwMnBjb25z
dGFudHMuaCAqLywKIAkJCQk1QzYzRjk5QzFFNDE3NEY2MDAyQ0E1MzEgLyogcDJwdHJhbnNwb3J0
Y2hhbm5lbC5jYyAqLywKQEAgLTExMjQyLDggKzExMzMwLDYgQEAKIAkJCQk1QzYzRjlEOTFFNDE3
NEY2MDAyQ0E1MzEgLyogdHVybnNlcnZlci5jYyAqLywKIAkJCQk1QzYzRjlEQTFFNDE3NEY2MDAy
Q0E1MzEgLyogdHVybnNlcnZlci5oICovLAogCQkJCTVDNjNGOURCMUU0MTc0RjYwMDJDQTUzMSAv
KiB1ZHBwb3J0LmggKi8sCi0JCQkJNDE5QzgzRDMxRkUyNDdGMDAwNDBDMzBGIC8qIHVkcHRyYW5z
cG9ydC5jYyAqLywKLQkJCQk0MTkyNDE0RDIxMjczNzZFMDA2MzRGQ0YgLyogdWRwdHJhbnNwb3J0
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGJhc2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMTEyNTMsMTMgKzExMzM5LDEwIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1Q0QyODRD
NDFFNkE2MDU3MDA5NEZEQzggLyogYXVkaW90cmFjay5jYyAqLywKIAkJCQk1Q0QyODRDNTFFNkE2
MDU3MDA5NEZEQzggLyogYXVkaW90cmFjay5oICovLAotCQkJCTVDNjNGQTNBMUU0MTc2MUYwMDJD
QTUzMSAvKiBidW5kbGVmaWx0ZXIuY2MgKi8sCi0JCQkJNUM2M0ZBM0IxRTQxNzYxRjAwMkNBNTMx
IC8qIGJ1bmRsZWZpbHRlci5oICovLAogCQkJCTVDNjNGQTNEMUU0MTc2MUYwMDJDQTUzMSAvKiBj
aGFubmVsLmNjICovLAogCQkJCTVDNjNGQTNFMUU0MTc2MUYwMDJDQTUzMSAvKiBjaGFubmVsLmgg
Ki8sCiAJCQkJNUM2M0ZBNDAxRTQxNzYxRjAwMkNBNTMxIC8qIGNoYW5uZWxtYW5hZ2VyLmNjICov
LAogCQkJCTVDNjNGQTQxMUU0MTc2MUYwMDJDQTUzMSAvKiBjaGFubmVsbWFuYWdlci5oICovLAot
CQkJCTQxNDVFNEM5MUVGOENCMzEwMEZDRjZFNiAvKiBjcmVhdGVwZWVyY29ubmVjdGlvbmZhY3Rv
cnkuY2MgKi8sCiAJCQkJNUNEMjg0QzYxRTZBNjA1NzAwOTRGREM4IC8qIGRhdGFjaGFubmVsLmNj
ICovLAogCQkJCTVDRDI4NEM3MUU2QTYwNTcwMDk0RkRDOCAvKiBkYXRhY2hhbm5lbC5oICovLAog
CQkJCTQxOUM4MkQ2MUZFMjBFNTgwMDQwQzMwRiAvKiBkdGxzc3J0cHRyYW5zcG9ydC5jYyAqLywK
QEAgLTExNDUxLDEwICsxMTUzNCwxNiBAQAogCQk1Q0QyODQ2MDFFNkE1N0REMDA5NEZEQzggLyog
dmlkZW8gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQx
RkNCQjE3MjFCMUY3Q0MwMEE1REYyNyAvKiBidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnkuY2MgKi8sCisJCQkJNDFGQ0JCMUEyMUIxRjdDRDAwQTVERjI3IC8qIGJ1aWx0aW5f
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oICovLAogCQkJCTQxMDJGNkQyMjEyNzM0
MTQwMDZBRThENyAvKiBjb2xvcl9zcGFjZS5jYyAqLywKIAkJCQk0MTAyRjZEODIxMjczNDE2MDA2
QUU4RDcgLyogY29sb3Jfc3BhY2UuaCAqLywKIAkJCQk0MUYyNjNDNzIxMjY4MThBMDAyNzRGNTkg
LyogZW5jb2RlZF9mcmFtZS5jYyAqLywKIAkJCQk0MUYyNjNDMjIxMjY4MTg5MDAyNzRGNTkgLyog
ZW5jb2RlZF9mcmFtZS5oICovLAorCQkJCTQxRkNCQjE5MjFCMUY3Q0MwMEE1REYyNyAvKiBlbmNv
ZGVkX2ltYWdlLmNjICovLAorCQkJCTQxRkNCQjE4MjFCMUY3Q0MwMEE1REYyNyAvKiBlbmNvZGVk
X2ltYWdlLmggKi8sCisJCQkJNDFGQ0JCNkYyMUIxRkY3NDAwQTVERjI3IC8qIGhkcl9tZXRhZGF0
YS5jYyAqLywKKwkJCQk0MUZDQkI3MDIxQjFGRjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmgg
Ki8sCiAJCQkJNDEwMkY2RDYyMTI3MzQxNTAwNkFFOEQ3IC8qIGkwMTBfYnVmZmVyLmNjICovLAog
CQkJCTQxRjI2M0JGMjEyNjgxODkwMDI3NEY1OSAvKiBpMDEwX2J1ZmZlci5oICovLAogCQkJCTVD
RDI4NDYxMUU2QTU3RjQwMDk0RkRDOCAvKiBpNDIwX2J1ZmZlci5jYyAqLywKQEAgLTExNzYyLDgg
KzExODUxLDYgQEAKIAkJCQk1Q0REODM2QzFFNDM5QTM1MDA2MjFFOTIgLyogZnJhbWVfZHJvcHBl
ci5oICovLAogCQkJCTVDREQ4MzZEMUU0MzlBMzUwMDYyMUU5MiAvKiBpdmZfZmlsZV93cml0ZXIu
Y2MgKi8sCiAJCQkJNUNERDgzNkUxRTQzOUEzNTAwNjIxRTkyIC8qIGl2Zl9maWxlX3dyaXRlci5o
ICovLAotCQkJCTVDREQ4MzZGMUU0MzlBMzUwMDYyMUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5jYyAq
LywKLQkJCQk1Q0REODM3MDFFNDM5QTM1MDA2MjFFOTIgLyogbW92aW5nX2F2ZXJhZ2UuaCAqLywK
IAkJCQk1Q0REODM3MzFFNDM5QTM1MDA2MjFFOTIgLyogcXVhbGl0eV9zY2FsZXIuY2MgKi8sCiAJ
CQkJNUNERDgzNzQxRTQzOUEzNTAwNjIxRTkyIC8qIHF1YWxpdHlfc2NhbGVyLmggKi8sCiAJCQkJ
NDE5MjQxRUEyMTI3NUFGQTAwNjM0RkNGIC8qIHNpbXVsY2FzdF9yYXRlX2FsbG9jYXRvci5jYyAq
LywKQEAgLTExOTA3LDggKzExOTk0LDYgQEAKIAkJCQk1Q0REODRGOTFFNDNCMUVBMDA2MjFFOTIg
LyogYXVkaW9fY29kaW5nX21vZHVsZS5jYyAqLywKIAkJCQk1Q0REODRGQjFFNDNCMUVBMDA2MjFF
OTIgLyogY2FsbF9zdGF0aXN0aWNzLmNjICovLAogCQkJCTVDREQ4NEZDMUU0M0IxRUEwMDYyMUU5
MiAvKiBjYWxsX3N0YXRpc3RpY3MuaCAqLywKLQkJCQk1Q0REODRGRTFFNDNCMUVBMDA2MjFFOTIg
LyogY29kZWNfbWFuYWdlci5jYyAqLywKLQkJCQk1Q0REODRGRjFFNDNCMUVBMDA2MjFFOTIgLyog
Y29kZWNfbWFuYWdlci5oICovLAogCQkJCTVDREQ4NTAxMUU0M0IxRUEwMDYyMUU5MiAvKiByZW50
X2FfY29kZWMuY2MgKi8sCiAJCQkJNUNERDg1MDIxRTQzQjFFQTAwNjIxRTkyIC8qIHJlbnRfYV9j
b2RlYy5oICovLAogCQkJKTsKQEAgLTEyMDA4LDYgKzEyMDkzLDggQEAKIAkJCQk1Q0REODU1RDFF
NDNCNUMwMDA2MjFFOTIgLyogY2FsbF9zdGF0cy5oICovLAogCQkJCTVDREQ4NTYwMUU0M0I1QzAw
MDYyMUU5MiAvKiBlbmNvZGVyX3J0Y3BfZmVlZGJhY2suY2MgKi8sCiAJCQkJNUNERDg1NjExRTQz
QjVDMDAwNjIxRTkyIC8qIGVuY29kZXJfcnRjcF9mZWVkYmFjay5oICovLAorCQkJCTQxRkNCQjU3
MjFCMUZFNkQwMEE1REYyNyAvKiBmcmFtZV9kdW1waW5nX2RlY29kZXIuY2MgKi8sCisJCQkJNDFG
Q0JCNTgyMUIxRkU2RTAwQTVERjI3IC8qIGZyYW1lX2R1bXBpbmdfZGVjb2Rlci5oICovLAogCQkJ
CTVDREQ4NTY2MUU0M0I1QzAwMDYyMUU5MiAvKiBvdmVydXNlX2ZyYW1lX2RldGVjdG9yLmNjICov
LAogCQkJCTVDREQ4NTY3MUU0M0I1QzAwMDYyMUU5MiAvKiBvdmVydXNlX2ZyYW1lX2RldGVjdG9y
LmggKi8sCiAJCQkJNUNEMjg2MjgxRTZBNjZDODAwOTRGREM4IC8qIHF1YWxpdHlfdGhyZXNob2xk
LmNjICovLApAQCAtMTIwMzQsMTQgKzEyMTIxLDE0IEBACiAJCQkJNDEwMkY2QzUyMTI3MzNCNjAw
NkFFOEQ3IC8qIHZpZGVvX3F1YWxpdHlfb2JzZXJ2ZXIuaCAqLywKIAkJCQk1Q0REODU4RDFFNDNC
NUMwMDA2MjFFOTIgLyogdmlkZW9fcmVjZWl2ZV9zdHJlYW0uY2MgKi8sCiAJCQkJNUNERDg1OEUx
RTQzQjVDMDAwNjIxRTkyIC8qIHZpZGVvX3JlY2VpdmVfc3RyZWFtLmggKi8sCi0JCQkJNUNERDg1
OTAxRTQzQjVDMDAwNjIxRTkyIC8qIHZpZGVvX3NlbmRfc3RyZWFtLmNjICovLAotCQkJCTVDREQ4
NTkxMUU0M0I1QzAwMDYyMUU5MiAvKiB2aWRlb19zZW5kX3N0cmVhbS5oICovLAogCQkJCTQxMDJG
NkMyMjEyNzMzQjYwMDZBRThENyAvKiB2aWRlb19zZW5kX3N0cmVhbV9pbXBsLmNjICovLAogCQkJ
CTQxMDJGNkJFMjEyNzMzQjUwMDZBRThENyAvKiB2aWRlb19zZW5kX3N0cmVhbV9pbXBsLmggKi8s
Ci0JCQkJNUNERDg1OTIxRTQzQjVDMDAwNjIxRTkyIC8qIHZpZGVvX3N0cmVhbV9kZWNvZGVyLmNj
ICovLAotCQkJCTVDREQ4NTkzMUU0M0I1QzAwMDYyMUU5MiAvKiB2aWRlb19zdHJlYW1fZGVjb2Rl
ci5oICovLAorCQkJCTVDREQ4NTkwMUU0M0I1QzAwMDYyMUU5MiAvKiB2aWRlb19zZW5kX3N0cmVh
bS5jYyAqLywKKwkJCQk1Q0REODU5MTFFNDNCNUMwMDA2MjFFOTIgLyogdmlkZW9fc2VuZF9zdHJl
YW0uaCAqLywKIAkJCQk0MTAyRjZDMTIxMjczM0I2MDA2QUU4RDcgLyogdmlkZW9fc3RyZWFtX2Rl
Y29kZXJfaW1wbC5jYyAqLywKIAkJCQk0MTAyRjZDNDIxMjczM0I2MDA2QUU4RDcgLyogdmlkZW9f
c3RyZWFtX2RlY29kZXJfaW1wbC5oICovLAorCQkJCTVDREQ4NTkyMUU0M0I1QzAwMDYyMUU5MiAv
KiB2aWRlb19zdHJlYW1fZGVjb2Rlci5jYyAqLywKKwkJCQk1Q0REODU5MzFFNDNCNUMwMDA2MjFF
OTIgLyogdmlkZW9fc3RyZWFtX2RlY29kZXIuaCAqLywKIAkJCQk0MTlDODMxRTFGRTI0MkU1MDA0
MEMzMEYgLyogdmlkZW9fc3RyZWFtX2VuY29kZXIuY2MgKi8sCiAJCQkJNDEwMkY2QzAyMTI3MzNC
NjAwNkFFOEQ3IC8qIHZpZGVvX3N0cmVhbV9lbmNvZGVyLmggKi8sCiAJCQkpOwpAQCAtMTI1ODcs
OCArMTI2NzQsNiBAQAogCQkJCTVDREQ4OUUyMUU0M0JGQjMwMDYyMUU5MiAvKiByYW5kb21fdmVj
dG9yLmggKi8sCiAJCQkJNUNERDg5RTQxRTQzQkZCMzAwNjIxRTkyIC8qIHJlZF9wYXlsb2FkX3Nw
bGl0dGVyLmNjICovLAogCQkJCTVDREQ4OUU1MUU0M0JGQjMwMDYyMUU5MiAvKiByZWRfcGF5bG9h
ZF9zcGxpdHRlci5oICovLAotCQkJCTVDREQ4OUU2MUU0M0JGQjMwMDYyMUU5MiAvKiBydGNwLmNj
ICovLAotCQkJCTVDREQ4OUU3MUU0M0JGQjMwMDYyMUU5MiAvKiBydGNwLmggKi8sCiAJCQkJNUNE
RDg5RTgxRTQzQkZCMzAwNjIxRTkyIC8qIHN0YXRpc3RpY3NfY2FsY3VsYXRvci5jYyAqLywKIAkJ
CQk1Q0REODlFOTFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGljc19jYWxjdWxhdG9yLmggKi8s
CiAJCQkJNUNERDg5RUIxRTQzQkZCMzAwNjIxRTkyIC8qIHN5bmNfYnVmZmVyLmNjICovLApAQCAt
MTI2NTIsMTIgKzEyNzM3LDggQEAKIAkJCQk1Q0REOEFDNDFFNDNDMjM5MDA2MjFFOTIgLyogYXVk
aW9fc3RhdGUuaCAqLywKIAkJCQk0MUY5QkY5OTIwNTFDODRCMDBBQkYwQjkgLyogYXVkaW9fdHJh
bnNwb3J0X2ltcGwuY2MgKi8sCiAJCQkJNDFGOUJGOUEyMDUxQzg0QjAwQUJGMEI5IC8qIGF1ZGlv
X3RyYW5zcG9ydF9pbXBsLmggKi8sCi0JCQkJNDEzRTY3NzgyMTY5ODY3QTAwRUYzN0VEIC8qIGNo
YW5uZWxfcmVjZWl2ZV9wcm94eS5jYyAqLywKLQkJCQk0MTNFNjc3NzIxNjk4NjdBMDBFRjM3RUQg
LyogY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmggKi8sCiAJCQkJNDE3OTUzRDIyMTY5ODM0RjAwMjgy
NjZCIC8qIGNoYW5uZWxfcmVjZWl2ZS5jYyAqLywKIAkJCQk0MTc5NTNEMDIxNjk4MzRGMDAyODI2
NkIgLyogY2hhbm5lbF9yZWNlaXZlLmggKi8sCi0JCQkJNDE3OTUzQ0YyMTY5ODM0RTAwMjgyNjZC
IC8qIGNoYW5uZWxfc2VuZF9wcm94eS5jYyAqLywKLQkJCQk0MTc5NTNEMTIxNjk4MzRGMDAyODI2
NkIgLyogY2hhbm5lbF9zZW5kX3Byb3h5LmggKi8sCiAJCQkJNDE3OTUzQ0QyMTY5ODM0RTAwMjgy
NjZCIC8qIGNoYW5uZWxfc2VuZC5jYyAqLywKIAkJCQk0MTc5NTNDRTIxNjk4MzRFMDAyODI2NkIg
LyogY2hhbm5lbF9zZW5kLmggKi8sCiAJCQkJNUNERDhBQzYxRTQzQzIzOTAwNjIxRTkyIC8qIGNv
bnZlcnNpb24uaCAqLywKQEAgLTEyNjY1LDggKzEyNzQ2LDYgQEAKIAkJCQk0MTlDODNCMjFGRTI0
NzJFMDA0MEMzMEYgLyogbnVsbF9hdWRpb19wb2xsZXIuaCAqLywKIAkJCQk0MTAyRjY5NzIxMjcz
MjYwMDA2QUU4RDcgLyogcmVtaXhfcmVzYW1wbGUuY2MgKi8sCiAJCQkJNDEwMkY2OUQyMTI3MzI2
MTAwNkFFOEQ3IC8qIHJlbWl4X3Jlc2FtcGxlLmggKi8sCi0JCQkJNDE5QzgzMzMxRkUyNDVFOTAw
NDBDMzBGIC8qIHRpbWVfaW50ZXJ2YWwuY2MgKi8sCi0JCQkJNDE5QzgzMzIxRkUyNDVFOTAwNDBD
MzBGIC8qIHRpbWVfaW50ZXJ2YWwuaCAqLywKIAkJCQk0MTAyRjY5RjIxMjczMjYyMDA2QUU4RDcg
LyogdHJhbnNwb3J0X2ZlZWRiYWNrX3BhY2tldF9sb3NzX3RyYWNrZXIuY2MgKi8sCiAJCQkJNDEw
MkY2OTYyMTI3MzI2MDAwNkFFOEQ3IC8qIHRyYW5zcG9ydF9mZWVkYmFja19wYWNrZXRfbG9zc190
cmFja2VyLmggKi8sCiAJCQkJNUNEMjg1NEExRTZBNjIwOTAwOTRGREM4IC8qIHV0aWxpdHkgKi8s
CkBAIC0xMzIwNyw4ICsxMzI4Niw2IEBACiAJCQkJNDE5MjQxQjEyMTI3NTkxQzAwNjM0RkNGIC8q
IGJiciAqLywKIAkJCQk0MUUwMkM4RjIxMjczNEU4MDBDMjdDRDYgLyogZ29vZ19jYyAqLywKIAkJ
CQk0MUUwMkNENTIxMjczNjIzMDBDMjdDRDYgLyogcnRwICovLAotCQkJCTQxQTA4QkQ2MjEyNzJG
MUMwMDFENUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjICov
LAotCQkJCTQxQTA4QkQ1MjEyNzJGMUMwMDFENUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNo
YmFja19jb250cm9sbGVyLmggKi8sCiAJCQkJNDEzMDkxRkQxRUY4RDA2RDAwNzU3QzU1IC8qIHJl
Y2VpdmVfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgKi8sCiAJCQkJNDEzMDkyMTQxRUY4
RDVFRDAwNzU3QzU1IC8qIHNlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgKi8sCiAJ
CQkJNUNERDhGQjAxRTQzQ0QwNzAwNjIxRTkyIC8qIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVy
LmNjICovLApAQCAtMTMzMDcsNiArMTMzODQsOSBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNUNE
RDkwNTIxRTQzRDExMjAwNjIxRTkyIC8qIGJpdHJhdGVfY29udHJvbGxlcl9pbXBsLmNjICovLAog
CQkJCTVDREQ5MDUzMUU0M0QxMTIwMDYyMUU5MiAvKiBiaXRyYXRlX2NvbnRyb2xsZXJfaW1wbC5o
ICovLAorCQkJCTQxRkNCQjVCMjFCMUZFQTMwMEE1REYyNyAvKiBiaXRyYXRlX2NvbnRyb2xsZXIu
Y2MgKi8sCisJCQkJNDFGQ0JCNjgyMUIxRkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFuZHdp
ZHRoX2VzdGltYXRpb24uY2MgKi8sCisJCQkJNDFGQ0JCNjcyMUIxRkYxQjAwQTVERjI3IC8qIGxv
c3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uaCAqLywKIAkJCQk1Q0REOTA1QjFFNDNEMTEy
MDA2MjFFOTIgLyogc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjICovLAogCQkJCTVD
REQ5MDVDMUU0M0QxMTIwMDYyMUU5MiAvKiBzZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24u
aCAqLywKIAkJCSk7CkBAIC0xMzU0Myw3ICsxMzYyMyw2IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKLQkJCQk1QzA4OEMxMTFFNEFBNDQ0MDA0MDM5OTUgLyogYnVuZGxlZmlsdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzA4OEMxMzFFNEFBNDQ0MDA0MDM5OTUgLyogY2hhbm5lbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUMwODhDMTUxRTRBQTQ0NDAwNDAzOTk1IC8qIGNoYW5uZWxtYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzA4OEMxOTFFNEFBNDQ0MDA0MDM5OTUgLyogZXh0ZXJu
YWxobWFjLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNzIwLDEwICsxMzc5OSwxMiBAQAogCQkJCTQx
NUYxRkE3MjEyNzJGQkEwMDA2NENCRiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1QTUxRTZBNjM0MzAwOTRGREM4IC8qIGFkYXB0aXZl
X2Zpcl9maWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNUYxRkE5MjEyNzJGQkEwMDA2NENC
RiAvKiBhZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDFGQ0JCNzIyMUIxRkY3NDAwQTVERjI3IC8qIGhkcl9tZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE2RDNCREQyMTI3MzFDMjAwNzc1RjA5IC8qIGFkYXB0aXZlX21vZGVfbGV2ZWxfZXN0
aW1hdG9yX2FnYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGNDExQzgxRUY5N0JBRjAwMzQzQzI2
IC8qIGFkbV9oZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODVBOTFFNkE2MzQzMDA5
NEZEQzggLyogYWVjM19jb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDRCM0Q1MjE2OTg5
NkQwMDQzNjNBQyAvKiBSVENOYXRpdmVNdXRhYmxlSTQyMEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDFGQ0JCMTYyMUIxRjdBQTAwQTVERjI3IC8qIG1vdmluZ19hdmVyYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0QyODVBQjFFNkE2MzQzMDA5NEZEQzggLyogYWVjM19mZnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDREQ4NkI3MUU0M0I5QzIwMDYyMUU5MiAvKiBhZWNfY29tbW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODZCRDFFNDNCOUMyMDA2MjFFOTIgLyogYWVjX2NvcmUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTM3MzMsMTEgKzEzODE0LDE0IEBACiAJCQkJNUNERDg2QkYx
RTQzQjlDMjAwNjIxRTkyIC8qIGFlY19yZXNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
RDI4NUE3MUU2QTYzNDMwMDk0RkRDOCAvKiBhZWNfc3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4NUU4MUU0M0I4MTAwMDYyMUU5MiAvKiBhZWNtX2NvcmUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxRkNCQjJFMjFCMUY4QjcwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MUZDQkIzODIxQjFGOEZDMDBBNURGMjcgLyogY29udHJvbF9oYW5kbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODVFOTFFNDNCODEwMDA2MjFFOTIgLyogYWVjbV9kZWZp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzA4ODUyNzFFNEE5OUQyMDA0MDM5OTUgLyogYWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzA4ODUyNDFFNEE5OUQyMDA0MDM5OTUgLyogYWVzX2dj
bV9vc3NsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzA4ODUyNjFFNEE5OUQyMDA0MDM5OTUgLyog
YWVzX2ljbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMwODg1MjUxRTRBOTlEMjAwNDAzOTk1IC8q
IGFlc19pY21fb3NzbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCMUUyMUIxRjdDRDAwQTVE
RjI3IC8qIGJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNERDg3MDIxRTQzQkE3NTAwNjIxRTkyIC8qIGFnYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE2RDNCREYyMTI3MzFDMjAwNzc1RjA5IC8qIGFnYzJfY29tbW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0REODcwMDFFNDNCQTc1MDA2MjFFOTIgLyogYWdjX21hbmFnZXJfZGly
ZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTEzNzY4LDYgKzEzODUyLDggQEAKIAkJCQk1QzYzRjlF
MTFFNDE3NEY2MDAyQ0E1MzEgLyogYXN5bmNzdHVudGNwc29ja2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNBMjJCRDFGRTE4RTA3MDAzNzNFOTkgLyogYXN5bmN0Y3Bzb2NrZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0EyMkI2MUZFMThFMDcwMDM3M0U5OSAvKiBhc3luY3VkcHNvY2tldC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNzYyMUIxRkZBNDAwQTVERjI3IC8qIGNvY29hX3Ro
cmVhZGluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNUEyMUIxRkU2RTAwQTVERjI3IC8q
IGZyYW1lX2R1bXBpbmdfZGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyRUQxRkUx
OEUwNzAwMzczRTk5IC8qIGF0b21pY29wcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg0QUEx
RTQzQUYxMzAwNjIxRTkyIC8qIGF1ZGlvX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
RDhBOEUxRTQzQzAwRjAwNjIxRTkyIC8qIGF1ZGlvX2NoZWNrc3VtLmggaW4gSGVhZGVycyAqLywK
QEAgLTEzODI0LDYgKzEzOTEwLDcgQEAKIAkJCQk0MTlDODNGMzFGRTI0ODhEMDA0MEMzMEYgLyog
YXVkaW9fZW5jb2Rlcl9MMTYuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QzY0MUU0M0M2MDkw
MDYyMUU5MiAvKiBhdWRpb19lbmNvZGVyX29wdXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4
MkYwMUZFMjBFQjUwMDQwQzMwRiAvKiBhdWRpb19lbmNvZGVyX29wdXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQxRkNCQjY1MjFCMUZFRjYwMEE1REYyNyAvKiB2cDhfdGVtcG9yYWxfbGF5ZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODJGMTFGRTIwRUI1MDA0MEMzMEYgLyogYXVkaW9fZW5j
b2Rlcl9vcHVzX2NvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0MEI4MjExRTRFMzM4MzAw
NzQwOUU2IC8qIGF1ZGlvX2VuY29kZXJfcGNtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEZG
RjFFNDNDRTNBMDA2MjFFOTIgLyogYXVkaW9fZW5jb2Rlcl9wY20xNmIuaCBpbiBIZWFkZXJzICov
LApAQCAtMTM4NTAsMTEgKzEzOTM3LDE0IEBACiAJCQkJNUNEMjg0QjAxRTZBNUY5RjAwOTRGREM4
IC8qIGF1ZGlvX3JlY2VpdmVfc3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEFEMDFF
NDNDMjM5MDA2MjFFOTIgLyogYXVkaW9fc2VuZF9zdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDRDI4NEIyMUU2QTVGOUYwMDk0RkRDOCAvKiBhdWRpb19zZW5kX3N0cmVhbS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDFGQ0JCNzkyMUIxRkZDMDAwQTVERjI3IC8qIGFzY2lpLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0ZENTM4MDFFNEJBNEY1MDA0ODI5MDggLyogYXVkaW9fc2Vzc2lvbl9vYnNl
cnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhDNEYxRTQzQzU4RTAwNjIxRTkyIC8qIGF1
ZGlvX3NpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QTkyMUU0M0MwMEYwMDYyMUU5MiAv
KiBhdWRpb19zaW5rLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI1NTIxQjFGRTQ2MDBBNURG
MjcgLyogbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDREQ4QUQzMUU0M0MyMzkwMDYyMUU5MiAvKiBhdWRpb19zdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE3OTUzRTMyMTY5ODNDQTAwMjgyNjZCIC8qIG1vZHVsZV9mZWNfdHlwZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjIzMjFCMUY4MkYwMEE1REYyNyAvKiB0aHJvd19k
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg0QjMxRTZBNUY5RjAwOTRGREM4IC8q
IGF1ZGlvX3N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkY5QzIwNTFDODRDMDBBQkYw
QjkgLyogYXVkaW9fdHJhbnNwb3J0X2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjlCRkEw
MjA1MUM4ODUwMEFCRjBCOSAvKiBhdWRpb191dGlsLmggaW4gSGVhZGVycyAqLywKQEAgLTEzODg3
LDYgKzEzOTc3LDcgQEAKIAkJCQk1Q0REOEY3RTFFNDNDQkUwMDA2MjFFOTIgLyogYml0cmF0ZV9j
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOTA1RTFFNDNEMTEyMDA2MjFFOTIg
LyogYml0cmF0ZV9jb250cm9sbGVyX2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDRCM0VB
MjE2OUM1RTMwMDQzNjNBQyAvKiBSVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MUZDQkIxQzIxQjFGN0NEMDBBNURGMjcgLyogZW5jb2RlZF9pbWFn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMDJDQUMyMTI3MzUyRDAwQzI3Q0Q2IC8qIGJpdHJh
dGVfZXN0aW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEZBMTFFNDNDQ0JFMDA2MjFF
OTIgLyogYml0cmF0ZV9wcm9iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTAyQ0QwMjEyNzM1
QjcwMEMyN0NENiAvKiBiaXRyYXRlX3NldHRpbmdzLmggaW4gSGVhZGVycyAqLywKQEAgLTEzOTAz
LDcgKzEzOTk0LDYgQEAKIAkJCQk1Q0QyODU0OTFFNkE2MUQyMDA5NEZEQzggLyogYnVpbHRpbl9h
dWRpb19kZWNvZGVyX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzA5MUZDMUVGOENG
RjgwMDc1N0M1NSAvKiBidWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE3OTUzRTQyMTY5ODNDQTAwMjgyNjZCIC8qIG1vZHVsZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNDEzRTY3NzkyMTY5ODY3QTAwRUYzN0VEIC8qIGNoYW5uZWxfcmVjZWl2ZV9wcm94
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzNjAyMTI2N0FERjAwMjc0RjU5IC8qIGJ1aWx0
aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNFNjc2OTIx
Njk4NTRCMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyVlA4LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUYyNjM2MTIxMjY3QURGMDAyNzRGNTkgLyogYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3Rv
cnkuaCBpbiBIZWFkZXJzICovLApAQCAtMTM5MjIsNiArMTQwMTIsNyBAQAogCQkJCTQxNDVFNEU2
MUVGOENEN0QwMEZDRjZFNiAvKiBjYWxsZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5
MjQxNzUyMTI3MzhDMjAwNjM0RkNGIC8qIGNhbGxmYWN0b3J5aW50ZXJmYWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MUY5QkY4NTIwNTFDODAxMDBBQkYwQjkgLyogY2FuZGlkYXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0MUZDQkIxMDIxQjFGNTM3MDBBNURGMjcgLyogc2NvcGVkX3JlZnB0ci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0Y5RTUxRTQxNzRGNjAwMkNBNTMxIC8qIGNhbmRpZGF0
ZXBhaXJpbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUIzMUU2QTYzNDMwMDk0
RkRDOCAvKiBjYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
OEI3NzFFNDNDMkI1MDA2MjFFOTIgLyogY2JfY29uc3RydWN0LmggaW4gSGVhZGVycyAqLywKQEAg
LTEzOTQyLDcgKzE0MDMzLDYgQEAKIAkJCQk0MTYyMjVFODIxNjk4MTk1MDBBOTFDOUIgLyogb2Jq
Y192aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4N0IwMUU0
M0JDMDUwMDYyMUU5MiAvKiBjb2RlYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0MzNDRjMxRjc5
QjMzNDAwMzg3QjREIC8qIGNvZGVjLmggaW4gSGVhZGVycyAqLywKLQkJCQk1Q0REODUxNjFFNDNC
MUVBMDA2MjFFOTIgLyogY29kZWNfbWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgz
QzkxRTQzOUE2RjAwNjIxRTkyIC8qIGNvZGVjX3RpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTAyRjZFMjIxMjczNDE2MDA2QUU4RDcgLyogY29sb3Jfc3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4QTBFMUU0M0JGQjMwMDYyMUU5MiAvKiBjb21mb3J0X25vaXNlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEzOTYxLDcgKzE0MDUxLDYgQEAKIAkJCQk1Q0REOEZFQzFFNDNDRENBMDA2MjFF
OTIgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzYzRjhEQjFFNDE2RDUzMDAyQ0E1
MzEgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDE2RDIxMjczODlCMDA2MzRG
Q0YgLyogY29uZ2VzdGlvbl9jb250cm9sbGVyX2V4cGVyaW1lbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTQxQTA4QkQ3MjEyNzJGMUQwMDFENUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFj
a19jb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEE5NDFFNDNDMDBGMDA2MjFF
OTIgLyogY29uc3RhbnRfcGNtX3BhY2tldF9zb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
NEI0ODc4MUU0MkMxQkEwMDI2NTFDOCAvKiBjb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4QjhBMUU0M0MyQjUwMDYyMUU5MiAvKiBjb25zdGFudHMuaCBpbiBIZWFkZXJzICovLApA
QCAtMTM5ODIsNiArMTQwNzEsNyBAQAogCQkJCTVDREQ4QTEwMUU0M0JGQjMwMDYyMUU5MiAvKiBj
cm9zc19jb3JyZWxhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMwODg1MkIxRTRBOTlEMjAw
NDAzOTk1IC8qIGNyeXB0b19rZXJuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMDg4NTJDMUU0
QTk5RDIwMDQwMzk5NSAvKiBjcnlwdG9fdHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNC
QjI4MjFCMUY4N0UwMEE1REYyNyAvKiBzZW50X3BhY2tldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUM0QjQ4REQxRTQyQzFFMzAwMjY1MUM4IC8qIGNyeXB0b3BhcmFtcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFGOUJGOTAyMDUxQzgwMTAwQUJGMEI5IC8qIGNyeXB0b3BhcmFtcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTIzMjkxRkUxOEUwNzAwMzczRTk5IC8qIGNyeXB0c3RyaW5nLmggaW4g
SGVhZGVycyAqLywKQEAgLTE0MDc3LDYgKzE0MTY3LDcgQEAKIAkJCQk1Q0REODk0QjFFNDNCRjNB
MDA2MjFFOTIgLyogZXh0ZW5kZWRfaml0dGVyX3JlcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNERDg5NEUxRTQzQkYzQTAwNjIxRTkyIC8qIGV4dGVuZGVkX3JlcG9ydHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxM0U2N0ExMjE2OTg4OTUwMEVGMzdFRCAvKiBSVENSdHBGcmFnbWVudGF0aW9u
SGVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI1MTIxQjFGRTQ2MDBBNURGMjcgLyog
Y3B1X3NwZWVkX2V4cGVyaW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QTk4MUU0M0Mw
MEYwMDYyMUU5MiAvKiBmYWtlX2RlY29kZV9mcm9tX2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxMjk5Qjk3MjEyNzM2OTEwMEIzNDE0QiAvKiBmYWtlX25ldHdvcmtfcGlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE5MjQxNTYyMTI3Mzc2RjAwNjM0RkNGIC8qIGZha2VjYW5kaWRhdGVwYWly
LmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTE5LDcgKzE0MjEwLDYgQEAKIAkJCQk1Q0REOEM4QzFF
NDNDNjYwMDA2MjFFOTIgLyogZmlsZV91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYz
QjIyMTI2ODBBODAwMjc0RjU5IC8qIGZpbGVfd3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDEzQTIyRTExRkUxOEUwNzAwMzczRTk5IC8qIGZpbGVyb3RhdGluZ3N0cmVhbS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNDEzQTIzQkQxRkUxOEUwODAwMzczRTk5IC8qIGZpbGV1dGlscy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE0MzNDRUQxRjc5QjMzNDAwMzg3QjREIC8qIGZpbHRlcmJhbmtfaW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDMzRDBEMUY3OUIzMzQwMDM4N0I0RCAvKiBm
aWx0ZXJiYW5rX3RhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCQTExRTQzQzJCNTAw
NjIxRTkyIC8qIGZpbHRlcmVkX2NiX3ZlY3MuaCBpbiBIZWFkZXJzICovLApAQCAtMTQxMzMsNyAr
MTQyMjMsNiBAQAogCQkJCTQxM0EyM0RGMUZFMThFMDgwMDM3M0U5OSAvKiBmaXJld2FsbHNvY2tl
dHNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEREIyNEQyMTI2NUJENzAwMjk2RDQ3IC8q
IGZpeGVkX2FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTVGMUZBRTIxMjcyRkJBMDAwNjRD
QkYgLyogZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxNkQzQkU0MjEyNzMxQzIwMDc3NUYwOSAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxM0EyM0JDMUZFMThFMDgwMDM3M0U5OSAvKiBmbGFncy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNERDg4N0YxRTQzQkUzQzAwNjIxRTkyIC8qIGZsZXhmZWNfaGVhZGVy
X3JlYWRlcl93cml0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NTM3MUU0M0IzOUMwMDYy
MUU5MiAvKiBmbGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTY0
LDEzICsxNDI1MywxNCBAQAogCQkJCTVDREQ4NEIzMUU0M0FGMTMwMDYyMUU5MiAvKiBnYWluX2Nv
bnRyb2xfZm9yX2V4cGVyaW1lbnRhbF9hZ2MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NEI1
MUU0M0FGMTMwMDYyMUU5MiAvKiBnYWluX2NvbnRyb2xfaW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFBMDhCQ0YyMTI3MkVFMjAwMUQ1RDdCIC8qIGdhaW5fY29udHJvbGxlcjIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQxNkQzQkU1MjEyNzMxQzIwMDc3NUYwOSAvKiBnYWluX2N1cnZlX2FwcGxp
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODg5RDc1MjE2QkI3QjkwMDQ2MTRERCAvKiBSVENS
dHBFbmNvZGluZ1BhcmFtZXRlcnMrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhC
QTUxRTQzQzJCNTAwNjIxRTkyIC8qIGdhaW5fZGVxdWFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNERDg3MDMxRTQzQkE3NTAwNjIxRTkyIC8qIGdhaW5fbWFwX2ludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REOEJBNzFFNDNDMkI1MDA2MjFFOTIgLyogZ2Fpbl9xdWFudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNERDgzRDYxRTQzOUE2RjAwNjIxRTkyIC8qIGdlbmVyaWNfZGVjb2Rl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgzRDgxRTQzOUE2RjAwNjIxRTkyIC8qIGdlbmVy
aWNfZW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCMzAyMUIxRjhCNzAwQTVERjI3
IC8qIGZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI3
RTIxQjFGRkY2MDBBNURGMjcgLyogb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0REOEJBOTFFNDNDMkI1MDA2MjFFOTIgLyogZ2V0X2NkX3ZlYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCQUIxRTQzQzJCNTAwNjIxRTkyIC8qIGdldF9sc3BfcG9s
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCQUQxRTQzQzJCNTAwNjIxRTkyIC8qIGdldF9z
eW5jX3NlcS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDIzNSw2ICsxNDMyNSw3IEBACiAJCQkJNUM2
M0Y5NDMxRTQxNzM3QjAwMkNBNTMxIC8qIGpzZXBpY2VjYW5kaWRhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDNjNGOTQ1MUU0MTczN0IwMDJDQTUzMSAvKiBqc2Vwc2Vzc2lvbmRlc2NyaXB0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkZFMTIwNTFERTE4MDBBQkYwQjkgLyoganNlcHRy
YW5zcG9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCM0QyMUIxRkQ0MDAwQTVERjI3IC8q
IG1hdGNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTAyRjY4RTIxMjczMjA2MDA2QUU4RDcgLyog
anNlcHRyYW5zcG9ydGNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGOERFMUU0
MTZENTMwMDJDQTUzMSAvKiBqc29uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM2NTFGRTE4
RTA3MDAzNzNFOTkgLyoga2VlcF9yZWZfdW50aWxfZG9uZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NDMwNiw3ICsxNDM5Nyw2IEBACiAJCQkJNUMxMUEwMDUxRTQ1NzQwMDAwNEYwOTg3IC8qIG1vY2tf
YXVkaW9fZGV2aWNlX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhGRUQxRTQzQ0RD
QTAwNjIxRTkyIC8qIG1vY2tfYXVkaW9fcHJvY2Vzc2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE5QzgzNTYxRkUyNDY2NTAwNDBDMzBGIC8qIG1vZF9vcHMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTVDREQ4MzdFMUU0MzlBMzUwMDYyMUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNEMjg2MTExRTZBNjRDOTAwOTRGREM4IC8qIG1vdmluZ19tYXguaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxODg5RDc4MjE2QkM0RUMwMDQ2MTRERCAvKiBSVENSdHBGcmFnbWVudGF0
aW9uSGVhZGVyK1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzU1MUZFMjQ2NjUw
MDQwQzMwRiAvKiBtb3ZpbmdfbWF4X2NvdW50ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQzNjIs
NyArMTQ0NTIsNiBAQAogCQkJCTQxRERCMjYzMjEyNjc5QTMwMDI5NkQ0NyAvKiBvcGVuc3Nsc2Vz
c2lvbmNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUREQjI2MTIxMjY3OUEzMDAyOTZENDcg
Lyogb3BlbnNzbHV0aWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRERCMjUxMjEyNjVCRTkw
MDI5NkQ0NyAvKiBvcHRpb25hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzQTIzNDUxRkUxOEUw
NzAwMzczRTk5IC8qIG9wdGlvbnNmaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEM2NjFF
NDNDNjA5MDA2MjFFOTIgLyogb3B1c19pbnN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEM2
ODFFNDNDNjA5MDA2MjFFOTIgLyogb3B1c19pbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4N0NGMUU0M0JDMDUwMDYyMUU5MiAvKiBvc19zcGVjaWZpY19pbmxpbmUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTQzNzgsNyArMTQ0NjcsNiBAQAogCQkJCTQxRjI2Mzk5MjEyNjdGNUUwMDI3
NEY1OSAvKiBwYV9yaW5nYnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEZBMzFFNDND
Q0JFMDA2MjFFOTIgLyogcGFjZWRfc2VuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODMy
RTFGRTI0NUNEMDA0MEMzMEYgLyogcGFjZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxOTI0MThE
MjEyNzQ5QzgwMDYzNEZDRiAvKiBwYWNlcl9jb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0REOEJENDFFNDNDMkI1MDA2MjFFOTIgLyogcGFja19iaXRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REODNFRjFFNDM5QTZGMDA2MjFFOTIgLyogcGFja2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REOEFCMDFFNDNDMDBGMDA2MjFFOTIgLyogcGFja2V0LmggaW4gSGVhZGVycyAqLywK
QEAgLTE0Mzk1LDcgKzE0NDgzLDYgQEAKIAkJCQk1QzYzRjlGNDFFNDE3NEY2MDAyQ0E1MzEgLyog
cGFja2V0c29ja2V0ZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0Y5RjUxRTQxNzRG
NjAwMkNBNTMxIC8qIHBhY2tldHRyYW5zcG9ydGludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDE5QzgzRDkxRkUyNDdGMjAwNDBDMzBGIC8qIHBhY2tldHRyYW5zcG9ydGludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk0MTNBMjM5MDFGRTE4RTA4MDAzNzNFOTkgLyogcGF0aHV0aWxz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDg4NDFFNDJDMUJBMDAyNjUxQzggLyogcGF5bG9h
ZF90eXBlX21hcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDkwMDExRTQzQ0UzQTAwNjIx
RTkyIC8qIHBjbTE2Yi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1MDAxRTZBNjA1NzAwOTRG
REM4IC8qIHBlZXJjb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NDEwLDYgKzE0NDk3
LDcgQEAKIAkJCQk0MUJFNzFDMDIxNUM0NjM3MDBBN0IxOTYgLyogcGhhc2guaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxM0EyM0VBMUZFMThFMDgwMDM3M0U5OSAvKiBwaHlzaWNhbHNvY2tldHNlcnZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3MkUxRTQzQkFCRTAwNjIxRTkyIC8qIHBpdGNo
X2Jhc2VkX3ZhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNkUyMUIxRkYzQTAwQTVERjI3
IC8qIGtleV9kZXJpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQzM0NGMTFGNzlCMzM0
MDAzODdCNEQgLyogcGl0Y2hfZXN0aW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODdE
MTFFNDNCQzA1MDA2MjFFOTIgLyogcGl0Y2hfZXN0aW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTI5OUI5MzIxMjczNjdCMDBCMzQxNEIgLyogcGl0Y2hfZmlsdGVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTE0NDU2LDYgKzE0NTQ0LDcgQEAKIAkJCQk0MTNBMjNFRjFGRTE4RTA4MDAzNzNFOTkg
LyogcmFjZV9jaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM0QzFGRTE4RTA3MDAz
NzNFOTkgLyogcmFuZG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEE0QjFFNDNCRkIzMDA2
MjFFOTIgLyogcmFuZG9tX3ZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNjQyMUIx
RkVGNjAwQTVERjI3IC8qIGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0REODk1QzFFNDNCRjNBMDA2MjFFOTIgLyogcmFwaWRfcmVzeW5jX3JlcXVlc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzYwMUZFMThFMDcwMDM3M0U5OSAvKiByYXRlX2xp
bWl0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzBEMUZFMThFMDcwMDM3M0U5OSAvKiBy
YXRlX3N0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ0ODUsNiArMTQ1NzQsNyBAQAog
CQkJCTVDREQ4OTYyMUU0M0JGM0EwMDYyMUU5MiAvKiByZW1iLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNFNjc3RTIxNjk4NkFFMDBFRjM3RUQgLyogcnRwX2hlYWRlcl9leHRlbnNpb25fc2l6ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEwMkY2QTcyMTI3MzI2MjAwNkFFOEQ3IC8qIHJlbWl4X3Jl
c2FtcGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI2OTIxQjFGRjFCMDBBNURGMjcgLyog
bG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
RDhGREMxRTQzQ0Q2NjAwNjIxRTkyIC8qIHJlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9hYnNfc2Vu
ZF90aW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEZERTFFNDNDRDY2MDA2MjFFOTIgLyog
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yX3NpbmdsZV9zdHJlYW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4RkUyMUU0M0NENjYwMDYyMUU5MiAvKiByZW1vdGVfZXN0aW1hdG9yX3Byb3h5Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTE0NTAxLDYgKzE0NTkxLDcgQEAKIAkJCQk1Q0REODVBRjFFNDNC
NUMwMDA2MjFFOTIgLyogcmVwb3J0X2Jsb2NrX3N0YXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0REODY2NTFFNDNCOEI1MDA2MjFFOTIgLyogcmVzYW1wbGVfYnlfMl9pbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNERDhBQjIxRTQzQzAwRjAwNjIxRTkyIC8qIHJlc2FtcGxlX2lucHV0
X2F1ZGlvX2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjg1MjFCMjAwN0IwMEE1REYy
NyAvKiBtZW11dGlsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODRCRTFFNDNBRjEzMDA2MjFF
OTIgLyogcmVzaWR1YWxfZWNob19kZXRlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1
REUxRTZBNjM0MzAwOTRGREM4IC8qIHJlc2lkdWFsX2VjaG9fZXN0aW1hdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTkyNDFBRTIxMjc1OEQzMDA2MzRGQ0YgLyogcmluZ19idWZmZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTQ1MTMsNiArMTQ2MDQsNyBAQAogCQkJCTQxQTA4QkQzMjEyNzJFRkEw
MDFENUQ3QiAvKiByb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4OTZCMUU0M0JGM0EwMDYyMUU5MiAvKiBycnRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTlDODNBQzFGRTI0NzA4MDA0MEMzMEYgLyogcnRjX2V2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MUZDQkIxMjIxQjFGNTM3MDBBNURGMjcgLyogY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3Rv
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjlCRkE5MjA1MUM4RTIwMEFCRjBCOSAvKiBydGNf
ZXZlbnRfYWxyX3N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODM5RDFGRTI0NkY5MDA0
MEMzMEYgLyogcnRjX2V2ZW50X2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE5QzgzOTgxRkUyNDZGOTAwNDBDMzBGIC8qIHJ0Y19ldmVudF9hdWRpb19wbGF5
b3V0LmggaW4gSGVhZGVycyAqLywKQEAgLTE0NTMzLDYgKzE0NjI1LDcgQEAKIAkJCQk0MTlDODM5
QTFGRTI0NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9zdWNjZXNzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTlDODM5MDFGRTI0NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X3J0
Y3BfcGFja2V0X2luY29taW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODM5NDFGRTI0NkY5
MDA0MEMzMEYgLyogcnRjX2V2ZW50X3J0Y3BfcGFja2V0X291dGdvaW5nLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MUZDQkIyRjIxQjFGOEI3MDBBNURGMjcgLyogZnJhbWVkZWNyeXB0b3JpbnRlcmZh
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzI1MUZFMjQ1MjgwMDQwQzMwRiAvKiBydGNf
ZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzQUIx
RkUyNDcwODAwNDBDMzBGIC8qIHJ0Y19ldmVudF9ydHBfcGFja2V0X291dGdvaW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTlDODNBRTFGRTI0NzA4MDA0MEMzMEYgLyogcnRjX2V2ZW50X3ZpZGVv
X3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDU3NSw3ICsxNDY2
OCw2IEBACiAJCQkJNDEzQTI0NjcxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ01UTE5TVmlkZW9WaWV3
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ3MTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDTVRM
VmlkZW9WaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ1OTFGRTE5OTFBMDAzNzNFOTkg
LyogUlRDTlNHTFZpZGVvVmlldy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNUNERDhBNTAxRTQzQkZC
MzAwNjIxRTkyIC8qIHJ0Y3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MkIyMUZFMjBEQ0Qw
MDQwQzMwRiAvKiBydGNwX2RlbXV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUZCMUU2
QTY0NTIwMDk0RkRDOCAvKiBydGNwX25hY2tfc3RhdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ4ODk4MUU0M0JFM0MwMDYyMUU5MiAvKiBydGNwX3BhY2tldC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xNDY1NSw2ICsxNDc0Nyw3IEBACiAJCQkJNUNERDg4RDIxRTQzQkUzRDAwNjIxRTkyIC8qIHJ0
cF9zZW5kZXJfdmlkZW8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MkMxMUZFMjBEQ0QwMDQw
QzMwRiAvKiBydHBfc3RyZWFtX3JlY2VpdmVyX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxOUM4MkMwMUZFMjBEQ0QwMDQwQzMwRiAvKiBydHBfc3RyZWFtX3JlY2VpdmVyX2NvbnRy
b2xsZXJfaW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI0MDIxQjFGREI4MDBB
NURGMjcgLyogY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNERDg1QjMxRTQzQjVDMDAwNjIxRTkyIC8qIHJ0cF9zdHJlYW1zX3N5bmNo
cm9uaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzMDkyMTkxRUY4RDYzRjAwNzU3QzU1IC8q
IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTMw
OTIxQTFFRjhENjNGMDA3NTdDNTUgLyogcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmRfaW50
ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjczLDEyICsxNDc2NiwxNCBAQAogCQkJCTVD
RDI4NTBDMUU2QTYwNTcwMDk0RkRDOCAvKiBydHBzZW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDNjNGOTZDMUU0MTczN0IwMDJDQTUzMSAvKiBydHBzZW5kZXJpbnRlcmZhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxOUM4MkRBMUZFMjBFNTkwMDQwQzMwRiAvKiBydHB0cmFuc2NlaXZlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCMEYyMUIxRjUzNzAwQTVERjI3IC8qIG1lZGlhX3Ry
YW5zcG9ydF9pbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjlCRjhFMjA1MUM4MDEw
MEFCRjBCOSAvKiBydHB0cmFuc2NlaXZlcmludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE0NUU0Q0UxRUY4Q0I5NTAwRkNGNkU2IC8qIHJ0cHRyYW5zcG9ydC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE5QzgyRTUxRkUyMEU1OTAwNDBDMzBGIC8qIHJ0cHRyYW5zcG9ydGludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODJEQjFGRTIwRTU5MDA0MEMzMEYgLyogcnRwdHJhbnNw
b3J0aW50ZXJuYWxhZGFwdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDhGMjFFNDJDMUUz
MDAyNjUxQzggLyogcnRwdXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4M0Y5MUU0MzlB
NkYwMDYyMUU5MiAvKiBydHRfZmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI1NDIx
QjFGRTQ2MDBBNURGMjcgLyogaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxOTI0MUNCMjEyNzU5M0YwMDYzNEZDRiAvKiBydHRfc3RhdHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxOUM4MkMyMUZFMjBEQ0QwMDQwQzMwRiAvKiBydHhfcmVjZWl2ZV9z
dHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOTI0MTYyMjEyNzM4NUIwMDYzNEZDRiAvKiBy
d19sb2NrX3Bvc2l4LmggaW4gSGVhZGVycyAqLywKQEAgLTE0NzE1LDcgKzE0ODEwLDYgQEAKIAkJ
CQk1Q0QyODVFMDFFNkE2MzQzMDA5NEZEQzggLyogc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1RjFGQjUyMTI3MkZCQTAwMDY0Q0JGIC8qIHNpZ25hbF9j
bGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkZDNTIwNTFDQUU1MDBBQkYwQjkg
Lyogc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUz
RDcyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZF9wcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDEzQTIzODExRkUxOEUwNzAwMzczRTk5IC8qIHNpZ25hbHRocmVhZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDFGMjYzQkMyMTI2ODExNTAwMjc0RjU5IC8qIHNpZ3Nsb3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0EyMzMzMUZFMThFMDcwMDM3M0U5OSAvKiBzaWdzbG90cmVwZWF0ZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMTQ4MTcsOCArMTQ5MTEsOCBAQAogCQkJCTQxM0EyMkI4MUZF
MThFMDcwMDM3M0U5OSAvKiB0aHJlYWRfY2hlY2tlcl9pbXBsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0REODRDNDFFNDNBRjEzMDA2MjFFOTIgLyogdGhyZWVfYmFuZF9maWx0ZXJfYmFuay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUNERDhBNTgxRTQzQkZCMzAwNjIxRTkyIC8qIHRpY2tfdGltZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjQ5MjFCMUZERUYwMEE1REYyNyAvKiBpY2VjcmVk
ZW50aWFsc2l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDFERDIxMjc1QTMwMDA2
MzRGQ0YgLyogdGltZV9kZWx0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE5QzgzMzQxRkUyNDVF
QTAwNDBDMzBGIC8qIHRpbWVfaW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QTVC
MUU0M0JGQjMwMDYyMUU5MiAvKiB0aW1lX3N0cmV0Y2guaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ4OERCMUU0M0JFM0QwMDYyMUU5MiAvKiB0aW1lX3V0aWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxOTI0MUUwMjEyNzVBMzAwMDYzNEZDRiAvKiB0aW1lc3RhbXAuaCBpbiBIZWFkZXJzICovLApA
QCAtMTQ4MzksNiArMTQ5MzMsNyBAQAogCQkJCTQxOTI0MTc2MjEyNzM4QzIwMDYzNEZDRiAvKiB0
cmFuc3BvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGQTFFMUU0MTc0RjYwMDJDQTUzMSAv
KiB0cmFuc3BvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NUMyMUU0M0I1QzAwMDYyMUU5
MiAvKiB0cmFuc3BvcnRfYWRhcHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNUYyMUIx
RkVDNDAwQTVERjI3IC8qIGdvb2dfY2NfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
RDg5ODQxRTQzQkYzQTAwNjIxRTkyIC8qIHRyYW5zcG9ydF9mZWVkYmFjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDEyOTlCOEQyMTI3MzY1MTAwQjM0MTRCIC8qIHRyYW5zcG9ydF9mZWVkYmFja19h
ZGFwdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEZCQzFFNDNDRDA3MDA2MjFFOTIgLyog
dHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ4NTYsMTQg
KzE0OTUxLDEyIEBACiAJCQkJNDEzQTIzNEIxRkUxOEUwNzAwMzczRTk5IC8qIHR5cGVfdHJhaXRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODRDNjFFNDNBRjEzMDA2MjFFOTIgLyogdHlwaW5n
X2RldGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0ZBMzExRTQxNzRGNjAwMkNBNTMx
IC8qIHVkcHBvcnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxOTI0MTU3MjEyNzM3NkYwMDYzNEZD
RiAvKiB1ZHB0cmFuc3BvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDZCMUZFMTk5MUEw
MDM3M0U5OSAvKiBVSURldmljZStSVENEZXZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
OEUwMUU0M0JFM0QwMDYyMUU5MiAvKiB1bHBmZWNfZ2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REODhFMzFFNDNCRTNEMDA2MjFFOTIgLyogdWxwZmVjX2hlYWRlcl9yZWFkZXJfd3Jp
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODNDNjFGRTI0N0I0MDA0MEMzMEYgLyogdWxw
ZmVjX3JlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODhFNTFFNDNCRTNEMDA2MjFF
OTIgLyogdWxwZmVjX3JlY2VpdmVyX2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGOTc1
MUU0MTczN0IwMDJDQTUzMSAvKiB1bWFtZXRyaWNzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNB
MjJBNDFGRTE4RTA2MDAzNzNFOTkgLyogdW5peGZpbGVzeXN0ZW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4QkYyMUU0M0MyQjUwMDYyMUU5MiAvKiB1bnBhY2tfYml0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFGMjYzQjAyMTI2ODBBODAwMjc0RjU5IC8qIHVudXNlZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDEzQTIxNDAxRkUwRjBFRjAwMzczRTk5IC8qIHV0X3NpbS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNDg5NSw2ICsxNDk4OCw3IEBACiAJCQkJNDE0NUY2MUYxRkUxRjM4RDAwRUI5Q0FG
IC8qIHZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzNkEy
MTI2N0FERjAwMjc0RjU5IC8qIHZpZGVvX2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg0NkIxRTZBNTdGNDAwOTRGREM4IC8qIHZpZGVv
X2ZyYW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI0NjIxQjFGREVGMDBBNURGMjcgLyog
bWRuc19tZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwOUFBRTFFNUZBMTkyMDBDMDk1
NUEgLyogdmlkZW9fZnJhbWVfYnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODQ2OTFF
NkE1N0Y0MDA5NEZEQzggLyogdmlkZW9fZnJhbWVfYnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTAyRjZDRjIxMjczM0I3MDA2QUU4RDcgLyogdmlkZW9fcXVhbGl0eV9vYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xNTYxMSw3ICsxNTcwNSw2IEBACiAJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKLQkJCQk1QzA4OEMxMDFFNEFBNDQ0MDA0MDM5OTUgLyogYnVuZGxlZmlsdGVyLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUMwODhDMTIxRTRBQTQ0NDAwNDAzOTk1IC8qIGNoYW5uZWwuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1QzA4OEMxNDFFNEFBNDQ0MDA0MDM5OTUgLyogY2hhbm5lbG1hbmFn
ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzA4OEMxODFFNEFBNDQ0MDA0MDM5OTUgLyogZXh0
ZXJuYWxobWFjLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjEwOCw2ICsxNjIwMSw3IEBACiAJCQkJ
NUNERDg5RjgxRTQzQkZCMzAwNjIxRTkyIC8qIGFjY2VsZXJhdGUuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk0MUUwMkNBODIxMjczNTJEMDBDMjdDRDYgLyogYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0
aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2MjI1RDgyMTY5ODE4MTAwQTkxQzlCIC8q
IHZpZGVvX2RlY29kZXJfZmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjU2MjFC
MUZFNDYwMEE1REYyNyAvKiBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDREQ4NTAzMUU0M0IxRUEwMDYyMUU5MiAvKiBhY21fY29kZWNf
ZGF0YWJhc2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODUwOTFFNDNCMUVBMDA2MjFFOTIg
LyogYWNtX3JlY2VpdmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3OTUzRDMyMTY5ODM0RjAw
MjgyNjZCIC8qIGNoYW5uZWxfc2VuZC5jYyBpbiBTb3VyY2VzICovLApAQCAtMTYxMTYsNiArMTYy
MTAsNyBAQAogCQkJCTQxNkQzQkRCMjEyNzMxQzIwMDc3NUYwOSAvKiBhZGFwdGl2ZV9hZ2MuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MTVGMUZBNjIxMjcyRkJBMDAwNjRDQkYgLyogYWRhcHRpdmVf
ZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNFNjc5NDIxNjk4
ODE5MDBFRjM3RUQgLyogc3ZjX3JhdGVfYWxsb2NhdG9yLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJ
NDFGQ0JCM0MyMUIxRkQ0MDAwQTVERjI3IC8qIG1hdGNoLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNEMjg1QTQxRTZBNjM0MzAwOTRGREM4IC8qIGFkYXB0aXZlX2Zpcl9maWx0ZXIuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk0MTZEM0JERTIxMjczMUMyMDA3NzVGMDkgLyogYWRhcHRpdmVfbW9kZV9s
ZXZlbF9lc3RpbWF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTVGMUZBODIxMjcyRkJBMDAw
NjRDQkYgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmNjIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNjEzMSw2ICsxNjIyNiw3IEBACiAJCQkJNUNERDg1RTQxRTQzQjgxMDAwNjIxRTky
IC8qIGFlY21fY29yZV9jLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3MDExRTQzQkE3NTAw
NjIxRTkyIC8qIGFnYy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NkZGMUU0M0JBNzUwMDYy
MUU5MiAvKiBhZ2NfbWFuYWdlcl9kaXJlY3QuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkIw
RTIxQjFGNTM3MDBBNURGMjcgLyogY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REOEZEMTFFNDNDRDY2MDA2MjFFOTIgLyogYWltZF9yYXRlX2Nv
bnRyb2wuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUYyNjM5RTIxMjY4MDAwMDAyNzRGNTkgLyog
YWxpZ25lZF9tYWxsb2MuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUUwMkNCNTIxMjczNTJEMDBD
MjdDRDYgLyogYWxyX2RldGVjdG9yLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjIzOSw2ICsxNjMz
NSw3IEBACiAJCQkJNDE5MjQxQzkyMTI3NTkzRjAwNjM0RkNGIC8qIGJicl9mYWN0b3J5LmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxQzcyMTI3NTkzRjAwNjM0RkNGIC8qIGJicl9uZXR3b3Jr
X2NvbnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQ2RjFGRTI1NUZBMDA0MEMz
MEYgLyogYmlvX3NzbC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjZEMjFCMUZGM0EwMEE1
REYyNyAvKiBrZXlfZGVyaXZhdGlvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNkQzQkUwMjEy
NzMxQzIwMDc3NUYwOSAvKiBiaXF1YWRfZmlsdGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEz
QTIzM0IxRkUxOEUwNzAwMzczRTk5IC8qIGJpdGJ1ZmZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDNEI0QzE5MUU0MzFGNzUwMDI2NTFDOCAvKiBiaXRyYXRlX2FkanVzdGVyLmNjIGluIFNvdXJj
ZXMgKi8sCkBAIC0xNjI0Niw2ICsxNjM0Myw3IEBACiAJCQkJNUNERDhGN0QxRTQzQ0JFMDAwNjIx
RTkyIC8qIGJpdHJhdGVfY29udHJvbGxlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ5MDVE
MUU0M0QxMTIwMDYyMUU5MiAvKiBiaXRyYXRlX2NvbnRyb2xsZXJfaW1wbC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxRTAyQ0FFMjEyNzM1MkQwMEMyN0NENiAvKiBiaXRyYXRlX2VzdGltYXRvci5j
YyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjgwMjFCMjAwMTIwMEE1REYyNyAvKiBzdHJpbmdf
dmlldy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4RkEwMUU0M0NDQkUwMDYyMUU5MiAvKiBi
aXRyYXRlX3Byb2Jlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRTAyQ0NDMjEyNzM1QjcwMEMy
N0NENiAvKiBiaXRyYXRlX3NldHRpbmdzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIxNzUx
RkUxOEQ3MTAwMzczRTk5IC8qIGJpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuY2MgaW4gU291cmNl
cyAqLywKQEAgLTE2Mjg0LDcgKzE2MzgyLDYgQEAKIAkJCQk1Q0REODZBMTFFNDNCOTk0MDA2MjFF
OTIgLyogY2lyY3VsYXJfYnVmZmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDQzYxRTQz
MjBBOTAwMjY1MUM4IC8qIGNsb2NrLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjQ4REIxRTQy
QzFFMzAwMjY1MUM4IC8qIGNvZGVjLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNUNERDg1MTUxRTQz
QjFFQTAwNjIxRTkyIC8qIGNvZGVjX21hbmFnZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
ODNDODFFNDM5QTZGMDA2MjFFOTIgLyogY29kZWNfdGltZXIuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTAyRjZEQzIxMjczNDE2MDA2QUU4RDcgLyogY29sb3Jfc3BhY2UuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REOEEwRDFFNDNCRkIzMDA2MjFFOTIgLyogY29tZm9ydF9ub2lzZS5jYyBpbiBT
b3VyY2VzICovLApAQCAtMTYyOTksMTIgKzE2Mzk2LDExIEBACiAJCQkJNDE1RjFGQUEyMTI3MkZC
QTAwMDY0Q0JGIC8qIGNvbXB1dGVfaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REOEZFQjFFNDNDRENBMDA2MjFFOTIgLyogY29uZmlnLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDE5MjQxNzEyMTI3Mzg5QjAwNjM0RkNGIC8qIGNvbmdlc3Rpb25fY29udHJv
bGxlcl9leHBlcmltZW50LmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFBMDhCRDgyMTI3MkYxRDAw
MUQ1RDdCIC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REOEE5MzFFNDNDMDBGMDA2MjFFOTIgLyogY29uc3RhbnRfcGNtX3Bh
Y2tldF9zb3VyY2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEI4OTFFNDNDMkI1MDA2MjFF
OTIgLyogY29uc3RhbnRzLmMgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI3QTIxQjFGRkMwMDBB
NURGMjcgLyogYXNjaWkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODNGQjFGRTI0OTM3MDA0
MEMzMEYgLyogY29uc3RhbnRzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMDJDNzgyMTI3MzQ3
NDAwQzI3Q0Q2IC8qIGNvbnRyaWJ1dGluZ19zb3VyY2VzLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NDEzRTY3QTIyMTY5ODg5NTAwRUYzN0VEIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubSBp
biBTb3VyY2VzICovLAogCQkJCTQxNjIyNUU3MjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX3ZpZGVv
X2RlY29kZXJfZmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4Rjg1MUU0M0NCRTAw
MDYyMUU5MiAvKiBjb250cm9sbGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhGODMxRTQz
Q0JFMDAwNjIxRTkyIC8qIGNvbnRyb2xsZXJfbWFuYWdlci5jYyBpbiBTb3VyY2VzICovLApAQCAt
MTYzMTYsNyArMTY0MTIsNiBAQAogCQkJCTVDREQ4N0IxMUU0M0JDMDUwMDYyMUU5MiAvKiBjcmMu
YyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzQzMUZFMThFMDcwMDM3M0U5OSAvKiBjcmMzMi5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QjhCMUU0M0MyQjUwMDYyMUU5MiAvKiBjcmVhdGVf
YXVnbWVudGVkX3ZlYy5jIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE0NUU0Q0ExRUY4Q0IzMjAwRkNG
NkU2IC8qIGNyZWF0ZXBlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxM0EyMzg4MUZFMThFMDcwMDM3M0U5OSAvKiBjcml0aWNhbHNlY3Rpb24uY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REODY0QjFFNDNCOEI1MDA2MjFFOTIgLyogY3Jvc3NfY29ycmVsYXRpb24u
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QTBGMUU0M0JGQjMwMDYyMUU5MiAvKiBjcm9zc19j
b3JyZWxhdGlvbi5jYyBpbiBTb3VyY2VzICovLApAQCAtMTYzNTksNiArMTY0NTQsNyBAQAogCQkJ
CTVDREQ4NkVFMUU0M0JBNkQwMDYyMUU5MiAvKiBkaWdpdGFsX2FnYy5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNERDg2NEMxRTQzQjhCNTAwNjIxRTkyIC8qIGRpdmlzaW9uX29wZXJhdGlvbnMuYyBp
biBTb3VyY2VzICovLAogCQkJCTVDREQ4OTQ3MUU0M0JGM0EwMDYyMUU5MiAvKiBkbHJyLmNjIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCMjcyMUIxRjg3RTAwQTVERjI3IC8qIHNlbnRfcGFja2V0
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCOTQxRTQzQzJCNTAwNjIxRTkyIC8qIGRvX3Bs
Yy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEyNDU1NDUxRUY4N0MwRjAwRjExODA5IC8qIGRvdF9w
cm9kdWN0X3dpdGhfc2NhbGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTVGMUZBQzIxMjcyRkJB
MDAwNjRDQkYgLyogZG93bl9zYW1wbGVyLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjQxNSw2ICsx
NjUxMSw3IEBACiAJCQkJNUNERDg5NEQxRTQzQkYzQTAwNjIxRTkyIC8qIGV4dGVuZGVkX3JlcG9y
dHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEE5NzFFNDNDMDBGMDA2MjFFOTIgLyogZmFr
ZV9kZWNvZGVfZnJvbV9maWxlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzRTY3ODIyMTY5ODcw
RjAwRUYzN0VEIC8qIHN2Y19jb25maWcuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI1MzIx
QjFGRTQ2MDBBNURGMjcgLyogY3B1X3NwZWVkX2V4cGVyaW1lbnQuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk0MTI5OUI5NjIxMjczNjkxMDBCMzQxNEIgLyogZmFrZV9uZXR3b3JrX3BpcGUuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTNBMjMxMDFGRTE4RTA3MDAzNzNFOTkgLyogZmFrZWNsb2NrLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzQ0MxRkUxOEUwODAwMzczRTk5IC8qIGZha2Vzc2xp
ZGVudGl0eS5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY0NDAsNyArMTY1MzcsNiBAQAogCQkJCTQx
NjIyNUQ3MjE2OTgxODEwMEE5MUM5QiAvKiB2aWRlb19mcmFtZV9idWZmZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0MUYyNjNBQzIxMjY4MEE4MDAyNzRGNTkgLyogZmlsZV93cmFwcGVyLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzREExRkUxOEUwODAwMzczRTk5IC8qIGZpbGVyb3RhdGlu
Z3N0cmVhbS5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0EyM0I1MUZFMThFMDgwMDM3M0U5OSAv
KiBmaWxldXRpbHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY1NTFFNDNCOEI1MDA2MjFF
OTIgLyogZmlsdGVyX2FyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY1NDFFNDNCOEI1MDA2
MjFFOTIgLyogZmlsdGVyX2FyX2Zhc3RfcTEyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODdC
QzFFNDNCQzA1MDA2MjFFOTIgLyogZmlsdGVyX2Z1bmN0aW9ucy5jIGluIFNvdXJjZXMgKi8sCkBA
IC0xNjQ1Nyw3ICsxNjU1Myw2IEBACiAJCQkJNDE5QzgzMUQxRkUyNDJCMjAwNDBDMzBGIC8qIGZp
cl9maWx0ZXJfZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0QzZBMUU0MzFGOUMw
MDI2NTFDOCAvKiBmaXJfZmlsdGVyX3NzZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNUYxRkFE
MjEyNzJGQkEwMDA2NENCRiAvKiBmaXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5jYyBpbiBT
b3VyY2VzICovLAotCQkJCTQxNkQzQkUzMjEyNzMxQzIwMDc3NUYwOSAvKiBmaXhlZF9nYWluX2Nv
bnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjE3RDFGRTE4RDc4MDAzNzNFOTkg
LyogZmxhZ3MuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODg3RTFFNDNCRTNDMDA2MjFFOTIg
LyogZmxleGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQx
MDJGNkJDMjEyNzMzODIwMDZBRThENyAvKiBmbGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmNjIGluIFNv
dXJjZXMgKi8sCkBAIC0xNjQ4NCw3ICsxNjU3OSw2IEBACiAJCQkJNUNERDg0QjIxRTQzQUYxMzAw
NjIxRTkyIC8qIGdhaW5fY29udHJvbF9mb3JfZXhwZXJpbWVudGFsX2FnYy5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDREQ4NEI0MUU0M0FGMTMwMDYyMUU5MiAvKiBnYWluX2NvbnRyb2xfaW1wbC5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTQxQTA4QkQwMjEyNzJFRTIwMDFENUQ3QiAvKiBnYWluX2Nv
bnRyb2xsZXIyLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE1RjFGQjEyMTI3MkZCQTAwMDY0Q0JG
IC8qIGdhaW5fY3VydmVfYXBwbGllci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkE0MUU0
M0MyQjUwMDYyMUU5MiAvKiBnYWluX2RlcXVhbnQuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
QkE2MUU0M0MyQjUwMDYyMUU5MiAvKiBnYWluX3F1YW50LmMgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REODNENTFFNDM5QTZGMDA2MjFFOTIgLyogZ2VuZXJpY19kZWNvZGVyLmNjIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNjQ5NSw3ICsxNjU4OSw2IEBACiAJCQkJNUNERDg2NTgxRTQzQjhCNTAwNjIxRTky
IC8qIGdldF9zY2FsaW5nX3NxdWFyZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCQUMxRTQz
QzJCNTAwNjIxRTkyIC8qIGdldF9zeW5jX3NlcS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3
MjkxRTQzQkFCRTAwNjIxRTkyIC8qIGdtbS5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxRTAyQ0E5
MjEyNzM1MkQwMEMyN0NENiAvKiBnb29nX2NjX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MUUwMkNCNjIxMjczNTJEMDBDMjdDRDYgLyogZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0REODU1ODFFNDNCNDJCMDA2MjFFOTIgLyogaDI2NC5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDREQ4MzU0MUU0MzI1NzIwMDYyMUU5MiAvKiBoMjY0X2JpdHN0
cmVhbV9wYXJzZXIuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NTYxLDYgKzE2NjU0LDcgQEAKIAkJ
CQk0MTQzM0QxNDFGNzlCMzM0MDAzODdCNEQgLyogbGF0dGljZV9jLmMgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0REODQxRjFFNDM5QjI5MDA2MjFFOTIgLyogbGVnYWN5X2VuY29kZWRfYXVkaW9fZnJh
bWUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRCODFFNDNBRjEzMDA2MjFFOTIgLyogbGV2
ZWxfZXN0aW1hdG9yX2ltcGwuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkIzMTIxQjFGOEI3
MDBBNURGMjcgLyogY3J5cHRvb3B0aW9ucy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NjVB
MUU0M0I4QjUwMDYyMUU5MiAvKiBsZXZpbnNvbl9kdXJiaW4uYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxMjk0MDk0MjEyRTEyOEQwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2RlY29kZXIuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk0MTI5NDA5MjIxMkUxMjhEMDBBRDk1RTcgLyogbGlidnB4X3ZwOF9lbmNv
ZGVyLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjYxNiw3ICsxNjcxMCw2IEBACiAJCQkJNDEzQTIz
NkIxRkUxOEUwNzAwMzczRTk5IC8qIG1lc3NhZ2VoYW5kbGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDEzQTIyQjExRkUxOEUwNzAwMzczRTk5IC8qIG1lc3NhZ2VxdWV1ZS5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDREQ4NjVFMUU0M0I4QjUwMDYyMUU5MiAvKiBtaW5fbWF4X29wZXJhdGlvbnMu
YyBpbiBTb3VyY2VzICovLAotCQkJCTVDREQ4MzdEMUU0MzlBMzUwMDYyMUU5MiAvKiBtb3Zpbmdf
YXZlcmFnZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0U2N0EzMjE2OTg4OTUwMEVGMzdFRCAv
KiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMubSBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4
NjEwMUU2QTY0QzkwMDk0RkRDOCAvKiBtb3ZpbmdfbWF4LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDhDOEUxRTQzQzY2MDAwNjIxRTkyIC8qIG1vdmluZ19tb21lbnRzLmNjIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNjY0Miw5ICsxNjczNSw4IEBACiAJCQkJNUNERDg1RkUxRTQzQjg0RTAwNjIxRTky
IC8qIG5vaXNlX3N1cHByZXNzaW9uLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRFOTFFNDNC
MEI2MDA2MjFFOTIgLyogbm9pc2Vfc3VwcHJlc3Npb25faW1wbC5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4NUZDMUU0M0I4NEUwMDYyMUU5MiAvKiBub2lzZV9zdXBwcmVzc2lvbl94LmMgaW4g
U291cmNlcyAqLywKKwkJCQk0MUZDQkI1QzIxQjFGRUEzMDBBNURGMjcgLyogYml0cmF0ZV9jb250
cm9sbGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3OTUzQjgyMTY5ODI0MjAwMjgyNjZCIC8q
IFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0Lm0gaW4gU291cmNlcyAqLywKLQkJCQk0MTNBMjM1
RjFGRTE4RTA3MDAzNzNFOTkgLyogbm9vcC5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0EyM0VF
MUZFMThFMDgwMDM3M0U5OSAvKiBub29wLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhBM0Qx
RTQzQkZCMzAwNjIxRTkyIC8qIG5vcm1hbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NkE3
MUU0M0I5OTQwMDYyMUU5MiAvKiBub3JtYWxpemVkX2NvdmFyaWFuY2VfZXN0aW1hdG9yLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2MDAxRTQzQjg0RTAwNjIxRTkyIC8qIG5zX2NvcmUuYyBp
biBTb3VyY2VzICovLApAQCAtMTY2NjQsMTggKzE2NzU2LDE2IEBACiAJCQkJNDEzRTY3OUIyMTY5
ODg2MjAwRUYzN0VEIC8qIGFnYzJfY29tbW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEREIy
NjUyMTI2NzlBMzAwMjk2RDQ3IC8qIG9wZW5zc2x1dGlsaXR5LmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDFEREIyNTIyMTI2NUJFOTAwMjk2RDQ3IC8qIG9wdGlvbmFsLmNjIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNDEzQTIzNEExRkUxOEUwNzAwMzczRTk5IC8qIG9wdGlvbnNmaWxlLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDhDNjcxRTQzQzYwOTAwNjIxRTkyIC8qIG9wdXNfaW50ZXJmYWNlLmMg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEZENzFFNDNDRDY2MDA2MjFFOTIgLyogb3ZlcnVzZV9k
ZXRlY3Rvci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0Q1MjE2OTgzNEYwMDI4MjY2QiAv
KiBjaGFubmVsX3NlbmRfcHJveHkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEZEOTFFNDND
RDY2MDA2MjFFOTIgLyogb3ZlcnVzZV9lc3RpbWF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REODVBNDFFNDNCNUMwMDA2MjFFOTIgLyogb3ZlcnVzZV9mcmFtZV9kZXRlY3Rvci5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDNjNGOUVEMUU0MTc0RjYwMDJDQTUzMSAvKiBwMnBjb25zdGFudHMu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzYzRjlGMjFFNDE3NEY2MDAyQ0E1MzEgLyogcDJwdHJh
bnNwb3J0Y2hhbm5lbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjI2MzlBMjEyNjdGNUUwMDI3
NEY1OSAvKiBwYV9yaW5nYnVmZmVyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEZBMjFFNDND
Q0JFMDA2MjFFOTIgLyogcGFjZWRfc2VuZGVyLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEyOTlC
OEIyMTI3MzY1MTAwQjM0MTRCIC8qIHBhY2VyX2NvbnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0REOEJEMzFFNDNDMkI1MDA2MjFFOTIgLyogcGFja19iaXRzLmMgaW4gU291cmNlcyAq
LywKKwkJCQk0MUZDQkIxRDIxQjFGN0NEMDBBNURGMjcgLyogZW5jb2RlZF9pbWFnZS5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxNDRCM0QxMjE2OTg5NjcwMDQzNjNBQyAvKiBSVENOYXRpdmVNdXRh
YmxlSTQyMEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QTQyMUU0M0JGQjMwMDYy
MUU5MiAvKiBwYWNrZXQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODNFRTFFNDM5QTZGMDA2
MjFFOTIgLyogcGFja2V0LmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjY4OCw3ICsxNjc3OCw2IEBA
CiAJCQkJNDEyNDU1NTYxRUY4ODdGQjAwRjExODA5IC8qIHBhY2tldGxvc3Nlc3RpbWF0b3IuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MTlDODNGNTFGRTI0OENBMDA0MEMzMEYgLyogcGFja2V0c29j
a2V0ZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4M0RBMUZFMjQ3RjIwMDQwQzMw
RiAvKiBwYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0Ey
MzNDMUZFMThFMDcwMDM3M0U5OSAvKiBwYXRodXRpbHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
QzRCNDg4MzFFNDJDMUJBMDAyNjUxQzggLyogcGF5bG9hZF90eXBlX21hcHBlci5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ5MDAwMUU0M0NFM0EwMDYyMUU5MiAvKiBwY20xNmIuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDRDI4NEZGMUU2QTYwNTcwMDk0RkRDOCAvKiBwZWVyY29ubmVjdGlvbi5j
YyBpbiBTb3VyY2VzICovLApAQCAtMTY3NDAsNiArMTY4MjksNyBAQAogCQkJCTQxM0EyMkZCMUZF
MThFMDcwMDM3M0U5OSAvKiByYWNlX2NoZWNrZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNB
MjNDQjFGRTE4RTA4MDAzNzNFOTkgLyogcmFuZG9tLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDhBNEExRTQzQkZCMzAwNjIxRTkyIC8qIHJhbmRvbV92ZWN0b3IuY2MgaW4gU291cmNlcyAqLywK
KwkJCQk0MUZDQkI2NjIxQjFGRUY2MDBBNURGMjcgLyogY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXll
cnMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY1RjFFNDNCOEI1MDA2MjFFOTIgLyogcmFu
ZG9taXphdGlvbl9mdW5jdGlvbnMuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OTVCMUU0M0JG
M0EwMDYyMUU5MiAvKiByYXBpZF9yZXN5bmNfcmVxdWVzdC5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxM0EyMzhEMUZFMThFMDcwMDM3M0U5OSAvKiByYXRlX2xpbWl0ZXIuY2MgaW4gU291cmNlcyAq
LywKQEAgLTE2ODI1LDcgKzE2OTE1LDYgQEAKIAkJCQk0MTNBMjMwRjFGRTE4RTA3MDAzNzNFOTkg
LyogcnRjY2VydGlmaWNhdGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjJCRTFGRTE4RTA3
MDAzNzNFOTkgLyogcnRjY2VydGlmaWNhdGVnZW5lcmF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MUY0MTFCMDFFRjhEQTAxMDAzNDNDMjYgLyogcnRjZXJyb3IuY2MgaW4gU291cmNlcyAqLywK
LQkJCQk1Q0REOEE0RjFFNDNCRkIzMDA2MjFFOTIgLyogcnRjcC5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTQxOUM4MkI5MUZFMjBEQ0QwMDQwQzMwRiAvKiBydGNwX2RlbXV4ZXIuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MTNFNjc3NjIxNjk4NjYxMDBFRjM3RUQgLyogUlRDVmlkZW9Db2RlY0NvbnN0
YW50cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NUZBMUU2QTY0NTIwMDk0RkRDOCAvKiBy
dGNwX25hY2tfc3RhdHMuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2ODM4LDYgKzE2OTI3LDcgQEAK
IAkJCQk1QzYzRkE3ODFFNDE3QUVEMDAyQ0E1MzEgLyogcnRjc3RhdHMuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1QzYzRkE3NzFFNDE3QUVEMDAyQ0E1MzEgLyogcnRjc3RhdHNfb2JqZWN0cy5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDRDI4NTA3MUU2QTYwNTcwMDk0RkRDOCAvKiBydGNzdGF0c2Nv
bGxlY3Rvci5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjIyMjFCMUY4MkYwMEE1REYyNyAv
KiB0aHJvd19kZWxlZ2F0ZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNjNGQTc5MUU0MTdBRUQw
MDJDQTUzMSAvKiBydGNzdGF0c3JlcG9ydC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxMDJGNjky
MjEyNzMyMDYwMDZBRThENyAvKiBydGNzdGF0c3RyYXZlcnNhbC5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTQxRDZCNDU5MjEyNzMxNTkwMDhGOTM1MyAvKiBydHBfYml0cmF0ZV9jb25maWd1cmF0b3Iu
Y2MgaW4gU291cmNlcyAqLywKQEAgLTE2ODQ4LDkgKzE2OTM4LDExIEBACiAJCQkJNUNERDg4QTQx
RTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXRfaDI2NC5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4OEE2MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0REODhBQjFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX2Zvcm1h
dF92cDguY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkIzOTIxQjFGOEZDMDBBNURGMjcgLyog
Y29udHJvbF9oYW5kbGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4QUUxRTQzQkUzQzAw
NjIxRTkyIC8qIHJ0cF9mb3JtYXRfdnA5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzRjYx
RTQzOUE2RjAwNjIxRTkyIC8qIHJ0cF9mcmFtZV9yZWZlcmVuY2VfZmluZGVyLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDhBQjgxRTQzQzAwRjAwNjIxRTkyIC8qIHJ0cF9nZW5lcmF0b3IuY2Mg
aW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI3RDIxQjFGRkY2MDBBNURGMjcgLyogb3BlbnNzbF9r
ZXlfZGVyaXZhdGlvbl9oa2RmLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMDJDN0EyMTI3MzQ3
NDAwQzI3Q0Q2IC8qIHJ0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk0MTkyNDFCMDIxMjc1OTAyMDA2MzRGQ0YgLyogcnRwX2dlbmVyaWNfZnJhbWVfZGVz
Y3JpcHRvcl9leHRlbnNpb24uY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTQ1RTREQzFFRjhDQ0VG
MDBGQ0Y2RTYgLyogcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmNjIGluIFNvdXJjZXMgKi8sCkBA
IC0xNjg3Nyw3ICsxNjk2OSw2IEBACiAJCQkJNDFFMDJDN0QyMTI3MzQ3NDAwQzI3Q0Q2IC8qIHJ0
cF92aWRlb19oZWFkZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUQ2QjQ1QzIxMjczMTU5MDA4
RjkzNTMgLyogcnRwX3ZpZGVvX3NlbmRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0U2NzhC
MjE2OTg3QjkwMEVGMzdFRCAvKiBSVENDVlBpeGVsQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJNDEzRTY3NzQyMTY5ODYzQjAwRUYzN0VEIC8qIHZwOF90ZW1wb3JhbF9sYXllcnMuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTMwOTFGNDFFRjhDRjkyMDA3NTdDNTUgLyogcnRwX3ZpZGVvX3N0
cmVhbV9yZWNlaXZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0OEVCMUU0MkMxRTMwMDI2
NTFDOCAvKiBydHBkYXRhZW5naW5lLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg5NkMxRTQz
QkYzQTAwNjIxRTkyIC8qIHJ0cGZiLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjg4Niw2ICsxNjk3
Nyw3IEBACiAJCQkJNDE5QzgzMTUxRkUyNDI4MDAwNDBDMzBGIC8qIHJ0cHBhcmFtZXRlcnMuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MTAyRjY5MzIxMjczMjA2MDA2QUU4RDcgLyogcnRwcGFyYW1l
dGVyc2NvbnZlcnNpb24uY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODUwOTFFNkE2MDU3MDA5
NEZEQzggLyogcnRwcmVjZWl2ZXIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI1OTIxQjFG
RTZFMDBBNURGMjcgLyogZnJhbWVfZHVtcGluZ19kZWNvZGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE0NEIzRjUyMTZCMDgxQjAwNDM2M0FDIC8qIFJUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2MjI1RDkyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2Zy
YW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzODMyMTI2N0I3NzAwMjc0RjU5IC8qIHJ0
cHJlY2VpdmVyaW50ZXJmYWNlLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjkxNSw2ICsxNzAwNyw3
IEBACiAJCQkJNDEzRTY3NjUyMTY5ODU0NjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclZQOC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OTZGMUU0M0JGM0EwMDYyMUU5MiAvKiBzZGVzLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzNjIyMTI2N0FERjAwMjc0RjU5IC8qIHNkcF92aWRl
b19mb3JtYXQuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkIxMTIxQjFGNTM3MDBBNURGMjcg
LyogbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4
MkRDMUZFMjBFNTkwMDQwQzMwRiAvKiBzZHB1dGlscy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4NUI2MUU0M0I1QzAwMDYyMUU5MiAvKiBzZW5kX2RlbGF5X3N0YXRzLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNERDkwNjExRTQzRDExMjAwNjIxRTkyIC8qIHNlbmRfc2lkZV9iYW5kd2lkdGhf
ZXN0aW1hdGlvbi5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY5MjcsNyArMTcwMjAsNiBAQAogCQkJ
CTVDREQ4M0ZCMUU0MzlBNkYwMDYyMUU5MiAvKiBzZXNzaW9uX2luZm8uY2MgaW4gU291cmNlcyAq
LywKIAkJCQk0MUY5QkZFNDIwNTFERTE4MDBBQkYwQjkgLyogc2Vzc2lvbmRlc2NyaXB0aW9uLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg1REYxRTZBNjM0MzAwOTRGREM4IC8qIHNoYWRvd19m
aWx0ZXJfdXBkYXRlX2dhaW4uY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTNFNjc3QTIxNjk4NjdB
MDBFRjM3RUQgLyogY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE2RDNCRUIyMTI3MzFDMjAwNzc1RjA5IC8qIHNpZ25hbF9jbGFzc2lmaWVyLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzQTIzNUIxRkUxOEUwNzAwMzczRTk5IC8qIHNpZ25hbHRocmVhZC5jYyBp
biBTb3VyY2VzICovLAogCQkJCTQxRjI2M0JCMjEyNjgxMTUwMDI3NEY1OSAvKiBzaWdzbG90LmNj
IGluIFNvdXJjZXMgKi8sCkBAIC0xNjkzOSw2ICsxNzAzMSw3IEBACiAJCQkJNUM0QjQ4ODYxRTQy
QzFCQTAwMjY1MUM4IC8qIHNpbXVsY2FzdC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOTI0MUYx
MjEyNzVCMkIwMDYzNEZDRiAvKiBzaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDE5MjQxRUUyMTI3NUFGQTAwNjM0RkNGIC8qIHNpbXVsY2FzdF9yYXRlX2Fs
bG9jYXRvci5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjYwMjFCMUZFQzQwMEE1REYyNyAv
KiBnb29nX2NjX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDFFRjIxMjc1QUZB
MDA2MzRGQ0YgLyogc2ltdWxjYXN0X3V0aWxpdHkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
ODc1QzFFNDNCQUY1MDA2MjFFOTIgLyogc2luY19yZXNhbXBsZXIuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0REODdFMTFFNDNCRDcwMDA2MjFFOTIgLyogc2luY19yZXNhbXBsZXJfc3NlLmNjIGlu
IFNvdXJjZXMgKi8sCkBAIC0xNjk1Niw2ICsxNzA0OSw3IEBACiAJCQkJNDEzQTIzNEQxRkUxOEUw
NzAwMzczRTk5IC8qIHNvY2tldGFkZHJlc3NwYWlyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEz
QTIyRDMxRkUxOEUwNzAwMzczRTk5IC8qIHNvY2tldHN0cmVhbS5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4QkU3MUU0M0MyQjUwMDYyMUU5MiAvKiBzb3J0X3NxLmMgaW4gU291cmNlcyAqLywK
KwkJCQk0MUZDQkI3NTIxQjFGRkE0MDBBNURGMjcgLyogY29jb2FfdGhyZWFkaW5nLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUM0QjRDN0QxRTQzMUY5QzAwMjY1MUM4IC8qIHNwYXJzZV9maXJfZmls
dGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0NEIzRTIyMTY5QjVCRDAwNDM2M0FDIC8qIHJ0
cHNlbmRlcmludGVyZmFjZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOTI0MUFEMjEyNzU4RDMw
MDYzNEZDRiAvKiBzcGVjdHJhbF9mZWF0dXJlcy5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY5NzAs
NyArMTcwNjQsOSBAQAogCQkJCTVDREQ4NjcxMUU0M0I4QjUwMDYyMUU5MiAvKiBzcGxpdHRpbmdf
ZmlsdGVyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRDMTFFNDNBRjEzMDA2MjFFOTIgLyog
c3BsaXR0aW5nX2ZpbHRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4MzVGMUU0MzI1NzIw
MDYyMUU5MiAvKiBzcHNfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCNDgyMUIx
RkRFRjAwQTVERjI3IC8qIG1kbnNfbWVzc2FnZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
MzYyMUU0MzI1NzIwMDYyMUU5MiAvKiBzcHNfdnVpX3Jld3JpdGVyLmNjIGluIFNvdXJjZXMgKi8s
CisJCQkJNDFGQ0JCNkEyMUIxRkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2Vz
dGltYXRpb24uY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY3MjFFNDNCOEI1MDA2MjFFOTIg
Lyogc3FydF9vZl9vbmVfbWludXNfeF9zcXVhcmVkLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MTlD
ODJERTFGRTIwRTU5MDA0MEMzMEYgLyogc3J0cHNlc3Npb24uY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTlDODJERjFGRTIwRTU5MDA0MEMzMEYgLyogc3J0cHRyYW5zcG9ydC5jYyBpbiBTb3VyY2Vz
ICovLApAQCAtMTY5OTYsNiArMTcwOTIsNyBAQAogCQkJCTQxOUM4NDE3MUZFMjRBQTMwMDQwQzMw
RiAvKiBzc2xzdHJlYW1hZGFwdGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3MzYxRTQz
QkFCRTAwNjIxRTkyIC8qIHN0YW5kYWxvbmVfdmFkLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDhCRUIxRTQzQzJCNTAwNjIxRTkyIC8qIHN0YXRlX2NvbnN0cnVjdC5jIGluIFNvdXJjZXMgKi8s
CisJCQkJNDFGQ0JCMTUyMUIxRjdBQTAwQTVERjI3IC8qIG1vdmluZ19hdmVyYWdlLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNERDhCRUQxRTQzQzJCNTAwNjIxRTkyIC8qIHN0YXRlX3NlYXJjaC5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhBNTExRTQzQkZCMzAwNjIxRTkyIC8qIHN0YXRpc3Rp
Y3NfY2FsY3VsYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NUJDMUU0M0I1QzAwMDYy
MUU5MiAvKiBzdGF0c19jb3VudGVyLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNzAwNiw2ICsxNzEw
Myw3IEBACiAJCQkJNUM0QjQ4RjQxRTQyQzFFMzAwMjY1MUM4IC8qIHN0cmVhbXBhcmFtcy5jYyBp
biBTb3VyY2VzICovLAogCQkJCTQxRERCMjZFMjEyNjc5RDIwMDI5NkQ0NyAvKiBzdHJpbmdfYnVp
bGRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0U2NzZCMjE2OTg1NEIwMEVGMzdFRCAvKiBS
VENXcmFwcGVkTmF0aXZlVmlkZW9EZWNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JC
ODkyMUIyMDBGRDAwQTVERjI3IC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubSBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxM0EyM0Q2MUZFMThFMDgwMDM3M0U5OSAvKiBzdHJpbmdfdG9fbnVtYmVy
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIyQjUxRkUxOEUwNzAwMzczRTk5IC8qIHN0cmlu
Z2VuY29kZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzEzMUZFMThFMDcwMDM3M0U5OSAv
KiBzdHJpbmd1dGlscy5jYyBpbiBTb3VyY2VzICovLApAQCAtMTcwMTcsNiArMTcxMTUsNyBAQAog
CQkJCTVDRDI4NUU0MUU2QTYzNDMwMDk0RkRDOCAvKiBzdXBwcmVzc2lvbl9maWx0ZXIuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0QyODVFNjFFNkE2MzQzMDA5NEZEQzggLyogc3VwcHJlc3Npb25f
Z2Fpbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkVGMUU0M0MyQjUwMDYyMUU5MiAvKiBz
d2FwX2J5dGVzLmMgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI4NDIxQjIwMDdCMDBBNURGMjcg
LyogbWVtdXRpbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QTU0MUU0M0JGQjMwMDYyMUU5
MiAvKiBzeW5jX2J1ZmZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NEJFMUU2QTVGOUYw
MDk0RkRDOCAvKiBzeW5jYWJsZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4NDZEMUZFMjU1
RkEwMDQwQzMwRiAvKiB0MV9lbmMuY2MgaW4gU291cmNlcyAqLywKQEAgLTE3MDI4LDExICsxNzEy
Nyw5IEBACiAJCQkJNDEzQTIyQTUxRkUxOEUwNjAwMzczRTk5IC8qIHRlc3RlY2hvc2VydmVyLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIyRTUxRkUxOEUwNzAwMzczRTk5IC8qIHRocmVhZC5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzUwMUZFMThFMDcwMDM3M0U5OSAvKiB0aHJlYWRf
Y2hlY2tlcl9pbXBsLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzQTIzREQxRkUxOEUwODAwMzcz
RTk5IC8qIHRocmVhZF9kYXJ3aW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRDMzFFNDNB
RjEzMDA2MjFFOTIgLyogdGhyZWVfYmFuZF9maWx0ZXJfYmFuay5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4QTU3MUU0M0JGQjMwMDYyMUU5MiAvKiB0aWNrX3RpbWVyLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDE5MjQxRTIyMTI3NUEzMDAwNjM0RkNGIC8qIHRpbWVfZGVsdGEuY2MgaW4gU291
cmNlcyAqLywKLQkJCQk0MTlDODMzNTFGRTI0NUVBMDA0MEMzMEYgLyogdGltZV9pbnRlcnZhbC5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QTVBMUU0M0JGQjMwMDYyMUU5MiAvKiB0aW1lX3N0
cmV0Y2guY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODhEQTFFNDNCRTNEMDA2MjFFOTIgLyog
dGltZV91dGlsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxRTMyMTI3NUEzMDAwNjM0RkNG
IC8qIHRpbWVzdGFtcC5jYyBpbiBTb3VyY2VzICovLApAQCAtMTcwNzIsMTQgKzE3MTY5LDE1IEBA
CiAJCQkJNDFGOUJGRUEyMDUxREVFQTAwQUJGMEI5IC8qIHR1cm5wb3J0ZmFjdG9yeS5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDNjNGQTJGMUU0MTc0RjYwMDJDQTUzMSAvKiB0dXJuc2VydmVyLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjQ4RjkxRTQyQzFFMzAwMjY1MUM4IC8qIHR1cm51dGls
cy5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjUyMjFCMUZFNDYwMEE1REYyNyAvKiBqaXR0
ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNjIyNUU0
MjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX2ZyYW1lX2J1ZmZlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4NEM1MUU0M0FGMTMwMDYyMUU5MiAvKiB0eXBpbmdfZGV0ZWN0aW9uLmNjIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDE5QzgzREMxRkUyNDdGMjAwNDBDMzBGIC8qIHVkcHRyYW5zcG9ydC5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OERGMUU0M0JFM0QwMDYyMUU5MiAvKiB1bHBmZWNf
Z2VuZXJhdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4RTIxRTQzQkUzRDAwNjIxRTky
IC8qIHVscGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4OEU0MUU0M0JFM0QwMDYyMUU5MiAvKiB1bHBmZWNfcmVjZWl2ZXJfaW1wbC5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4QkYxMUU0M0MyQjUwMDYyMUU5MiAvKiB1bnBhY2tfYml0cy5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3REUxRTQzQkMyRTAwNjIxRTkyIC8qIHV0aWxpdHkuYyBp
biBTb3VyY2VzICovLAorCQkJCTQxRkNCQjFCMjFCMUY3Q0QwMEE1REYyNyAvKiBidWlsdGluX3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
ODcwODFFNDNCQTc1MDA2MjFFOTIgLyogdXRpbGl0eS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4NkUzMUU0M0JBMjgwMDYyMUU5MiAvKiB2YWQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
ODczQTFFNDNCQUJFMDA2MjFFOTIgLyogdmFkX2F1ZGlvX3Byb2MuY2MgaW4gU291cmNlcyAqLywK
QEAgLTE3MDg3LDYgKzE3MTg1LDcgQEAKIAkJCQk1Q0REODZENjFFNDNCQTI4MDA2MjFFOTIgLyog
dmFkX2NvcmUuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NkQ5MUU0M0JBMjgwMDYyMUU5MiAv
KiB2YWRfZmlsdGVyYmFuay5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2REMxRTQzQkEyODAw
NjIxRTkyIC8qIHZhZF9nbW0uYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjQxMjFCMUZEQjgw
MEE1REYyNyAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDE3OTUzRTYyMTY5ODNDQTAwMjgyNjZCIC8qIG1vZHVsZV9jb21tb25f
dHlwZXMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODZERjFFNDNCQTI4MDA2MjFFOTIgLyog
dmFkX3NwLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MTZEM0JFQzIxMjczMUMyMDA3NzVGMDkgLyog
dmFkX3dpdGhfbGV2ZWwuY2MgaW4gU291cmNlcyAqLywKQEAgLTE3MDk0LDYgKzE3MTkzLDcgQEAK
IAkJCQk0MTZEM0JFRDIxMjczMUMyMDA3NzVGMDkgLyogdmVjdG9yX2Zsb2F0X2ZyYW1lLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2NzQxRTQzQjhCNTAwNjIxRTkyIC8qIHZlY3Rvcl9zY2Fs
aW5nX29wZXJhdGlvbnMuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxMDJGNkUzMjEyNzM0MTYwMDZB
RThENyAvKiB2aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uY2MgaW4gU291cmNlcyAqLywKKwkJCQk0
MUZDQkI3MTIxQjFGRjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDFGMjYzNjMyMTI2N0FERjAwMjc0RjU5IC8qIHZpZGVvX2NvZGVjLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNEMjg1MzUxRTZBNjE1OTAwOTRGREM4IC8qIHZpZGVvX2NvZGVjX2luaXRp
YWxpemVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMDJDOEQyMTI3MzRCOTAwQzI3Q0Q2IC8q
IHZpZGVvX2NvZGluZ19kZWZpbmVzLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNzEwNiw3ICsxNzIw
Niw2IEBACiAJCQkJNDFFMDJDQzUyMTI3MzU4ODAwQzI3Q0Q2IC8qIHZpZGVvX2VuY29kZXJfY29u
ZmlnLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzNjkyMTI2N0FERjAwMjc0RjU5IC8qIHZp
ZGVvX2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDRDI4NDZBMUU2QTU3RjQwMDk0RkRDOCAvKiB2aWRlb19mcmFtZS5jYyBpbiBTb3VyY2Vz
ICovLAotCQkJCTVDNEI0QzFGMUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZS5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxMjQ1NTRCMUVGODg3NDMwMEYxMTgwOSAvKiB2aWRlb19mcmFtZV9i
dWZmZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNEMxRTFFNDMxRjc1MDAyNjUxQzggLyog
dmlkZW9fZnJhbWVfYnVmZmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEwMkY2QzkyMTI3MzNC
NzAwNkFFOEQ3IC8qIHZpZGVvX3F1YWxpdHlfb2JzZXJ2ZXIuY2MgaW4gU291cmNlcyAqLywKQEAg
LTE3MTIwLDYgKzE3MjE5LDcgQEAKIAkJCQk0MTAyRjZDQzIxMjczM0I3MDA2QUU4RDcgLyogdmlk
ZW9fc2VuZF9zdHJlYW1faW1wbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNzk1M0YxMjE2OTg0
NTUwMDI4MjY2QiAvKiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REODQwNDFFNDM5QTZGMDA2MjFFOTIgLyogdmlkZW9fc2VuZGVyLmNjIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDFGQ0JCNDcyMUIxRkRFRjAwQTVERjI3IC8qIGljZWNyZWRlbnRpYWxzaXRlcmF0
b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUEwOEJCMDIxMjY4MUM4MDAxRDVEN0IgLyogdmlk
ZW9fc291cmNlX2ludGVyZmFjZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NUNGMUU0M0I1
QzAwMDYyMUU5MiAvKiB2aWRlb19zdHJlYW1fZGVjb2Rlci5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxMDJGNkRCMjEyNzM0MTYwMDZBRThENyAvKiB2aWRlb19zdHJlYW1fZGVjb2Rlcl9jcmVhdGUu
Y2MgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmlu
ZGV4IGU1ZGFiNjY5ZDgyODdlYmQzMGUxNGVkNjE1MTdhOTlmYjEyYzA0ZmUuLmMyNGRjMDc5OWQx
NDA1MmI3MDI1YWFhNTE1ZmNlODA3YmY5YmFkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQCBBTExPV19VTlVTRURfUEFSQU1FVEVSU19C
RUdJTgogI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvYXN5bmNyZXNvbHZlcmZhY3RvcnkuaD4KICNpbmNs
dWRlIDx3ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9y
eS5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5j
b2Rlcl9mYWN0b3J5Lmg+CisjaW5jbHVkZSA8d2VicnRjL2FwaS9jcmVhdGVfcGVlcmNvbm5lY3Rp
b25fZmFjdG9yeS5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25mYWN0b3J5
cHJveHkuaD4KICNpbmNsdWRlIDx3ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1
ZGUvYXVkaW9fcHJvY2Vzc2luZy5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9wMnAvYmFzZS9iYXNpY3Bh
Y2tldHNvY2tldGZhY3RvcnkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3BwCmluZGV4IDczYjAx
OTY3NTk0ZTBhZTRkNjJjYmZlNWRmNjZjNzFkN2YwMGJhNWUuLmM1OTk1YmM1MzI1NWZlMmQzNzZm
YzQ1ZmJmYjllZTYzMWVlNzNlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmNwcApAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIExpYldlYlJUQ1NvY2tldENsaWVudDo6c2lnbmFsUmVhZFBhY2tldChy
dGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsIGNvbgogICAgIGF1dG8gYnVmZmVyID0gV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUodmFsdWUsIGxlbmd0aCk7CiAgICAgbV9ydGNQcm92
aWRlci5zZW5kRnJvbU1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBtX2lkZW50aWZpZXIsIGJ1ZmZl
ciA9IFdURk1vdmUoYnVmZmVyKSwgYWRkcmVzcyA9IFJUQ05ldHdvcms6Omlzb2xhdGVkQ29weShh
ZGRyZXNzKSwgcGFja2V0VGltZV0oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKSB7CiAgICAg
ICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwotICAgICAgICBjb25uZWN0aW9u
LnNlbmQoTWVzc2FnZXM6OldlYlJUQ1NvY2tldDo6U2lnbmFsUmVhZFBhY2tldChkYXRhLCBSVENO
ZXR3b3JrOjpJUEFkZHJlc3MoYWRkcmVzcy5pcGFkZHIoKSksIGFkZHJlc3MucG9ydCgpLCBwYWNr
ZXRUaW1lLnRpbWVzdGFtcCksIGlkZW50aWZpZXIpOworICAgICAgICBjb25uZWN0aW9uLnNlbmQo
TWVzc2FnZXM6OldlYlJUQ1NvY2tldDo6U2lnbmFsUmVhZFBhY2tldChkYXRhLCBSVENOZXR3b3Jr
OjpJUEFkZHJlc3MoYWRkcmVzcy5pcGFkZHIoKSksIGFkZHJlc3MucG9ydCgpLCBwYWNrZXRUaW1l
KSwgaWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKaW5kZXgg
MzYwYzJlMDFhNGYxM2M1ZTgwOGZlZWVkNTIyNjc3MTQyMmVmZDE0Yy4uOGYyMDVjZTAyOTcxM2Q4
YmEyMTNmMTQzYmE3MWJiMTE0NzUyZGVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKQEAgLTM1
LDggKzM1LDggQEAgbmFtZXNwYWNlIHJ0YyB7CiBjbGFzcyBBc3luY1BhY2tldFNvY2tldDsKIGNs
YXNzIFNvY2tldEFkZHJlc3M7CiBzdHJ1Y3QgUGFja2V0T3B0aW9uczsKLXN0cnVjdCBQYWNrZXRU
aW1lOwogc3RydWN0IFNlbnRQYWNrZXQ7Cit0eXBlZGVmIGludDY0X3QgUGFja2V0VGltZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggY2UwZjEzZGE3
NTk0YWQ2ZmFiODcxNDdlOWRlMmQ1OGI4MmViZGQ5My4uZGQ5Nzc5OGRhZWE0MGFjZTYyOWFkOGYw
YTNiNDExZTQ5MjhkM2Y4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiV2ViUlRDU29ja2V0TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xp
YldlYlJUQ01hY3Jvcy5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9hc3luY3BhY2tldHNv
Y2tldC5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Nv
Y2tldC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Nv
Y2tldC5oCmluZGV4IGQ5ZGVhYWM2MjU1MDMxOTRiZjJkZWVmMGFiODU5NzhjNzA2YzZmNTguLjZl
NGJmZTJiMTY0MTljYmJjNTFiODBkOTVmNzU5ZWZlMmVkZDkyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmgKQEAg
LTQyLDggKzQyLDggQEAgbmFtZXNwYWNlIHJ0YyB7CiBjbGFzcyBBc3luY1BhY2tldFNvY2tldDsK
IGNsYXNzIFNvY2tldEFkZHJlc3M7CiBzdHJ1Y3QgUGFja2V0T3B0aW9uczsKLXN0cnVjdCBQYWNr
ZXRUaW1lOwogc3RydWN0IFNlbnRQYWNrZXQ7Cit0eXBlZGVmIGludDY0X3QgUGFja2V0VGltZTsK
IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmNwcAppbmRleCA3MDU0
MTU3MzM3M2QyNjkyNzEyMDJiMDYxZWI5YzE1YzhlYzc2NTZhLi5lMmM1ZGY1NTdjNDAxMTVkZGY0
OGZkNDA3OWFmYjk0OWE2YzI1NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmNwcApAQCAtODIsNyAr
ODIsNyBAQCB2b2lkIExpYldlYlJUQ1NvY2tldDo6c2lnbmFsQWRkcmVzc1JlYWR5KGNvbnN0IHJ0
Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcykKIHZvaWQgTGliV2ViUlRDU29ja2V0OjpzaWduYWxS
ZWFkUGFja2V0KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBydGM6OlNvY2tl
dEFkZHJlc3MmJiBhZGRyZXNzLCBpbnQ2NF90IHRpbWVzdGFtcCkKIHsKICAgICBtX3JlbW90ZUFk
ZHJlc3MgPSBXVEZNb3ZlKGFkZHJlc3MpOwotICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgbV9yZW1vdGVBZGRyZXNzLCBydGM6OlBhY2tldFRp
bWUodGltZXN0YW1wLCAwKSk7CisgICAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpLCBtX3JlbW90ZUFkZHJlc3MsIHRpbWVzdGFtcCk7CiB9CiAKIHZv
aWQgTGliV2ViUlRDU29ja2V0OjpzaWduYWxTZW50UGFja2V0KGludCBydGNQYWNrZXRJRCwgaW50
NjRfdCBzZW5kVGltZU1zKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356436</attachid>
            <date>2018-12-03 16:53:03 -0800</date>
            <delta_ts>2018-12-03 22:19:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192316-20181203165301.patch</filename>
            <type>text/plain</type>
            <size>8337435</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA3NzUxNmFkOTY0MzU5ZTMyZTMwMGIxNTBmMzFkZjg4MWFlODUxYTY2Li4wOTAw
MmMzYTc4MmZkNzE4MTIzMTkyYjZkNThlZDllMjA1ZTA0YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMi0wMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB1cCB0
byAwZDAwN2Q3YzRmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTIzMTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGluZyB0byBsYXRlc3QgbGlid2VicnRjIHdpbGwgYWxsb3dzIGNoZXJyeS1waWNr
aW5nIGltcG9ydGFudCBidWcgZml4ZXMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAg
ICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcDogcmVmcmVzaGVkLgorICAgICAgICAq
IFNvdXJjZS93ZWJydGM6IHJlZnJlc2hlZC4KKyAgICAgICAgKiBXZWJLaXQvMDAwMS1saWJ3ZWJy
dGMtY2hhbmdlcy5wYXRjaDogUmVtb3ZlZC4KKyAgICAgICAgKiBsaWJ3ZWJydGMueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0wMSAgVGhpYmF1bHQgU2F1bmllciAgPHRzYXVu
aWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bV2ViUlRDXSBCdWlsZCBvcHVz
IGRlY29kZXIgc3VwcG9ydCBpbiBsaWJ3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzN2I0OTUxZTUxYjUy
ZjUxYmVhODUyZjUwYTBiZDgwMjdlNzZmYjhhLi4zNTY2MzI2NThjZWE5MTU3M2YyNTU4ODUwYmVm
OTg1YWQ5ZTRjNjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTItMDMgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBsaWJ3ZWJy
dGMgdXAgdG8gMGQwMDdkN2M0ZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkyMzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGluY2x1ZGUgYWNjb3JkaW5nIG5ldyBsaWJ3ZWJydGMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwOgorCiAyMDE4LTEyLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQWRkIFdLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZSBTUEkg
d2lsbFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgd2l0aCBhIGNvbXBsZXRpb24gaGFuZGxl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBkNzFkZTRhMjhmNjc5ZWFlMzk3NjQ2NjgyMDMxYzFhOTk0YzdjNTY0Li44
ZTU0YmVlNWFlZDFmMWM1ZjZkNTFiN2IwMjJhMThhNzBiZGJiYjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDE4LTEyLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBVcGRhdGUgbGlid2VicnRjIHVwIHRvIDBkMDA3ZDdjNGYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMxNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIGJhc2UgYWNj
b3JkaW5nIG5ldyBsaWJ3ZWJydGMgYmFja2VuZAorICAgICAgICBJbiBwYXJ0aWN1bGFyLCB1c2Ug
ZGlyZWN0bHkgaW50NjRfdCBmb3IgcGFja2V0IHRpbWUuCisKKyAgICAgICAgKiBDb25maWd1cmF0
aW9ucy9XZWJLaXQueGNjb25maWc6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ1NvY2tldENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tl
dENsaWVudDo6c2lnbmFsUmVhZFBhY2tldCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENTb2NrZXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2Nr
ZXQ6OnNpZ25hbFJlYWRQYWNrZXQpOgorCiAyMDE4LTEyLTAzICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPUy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMv
bGlid2VicnRjLmlPUy5leHAKaW5kZXggZDk1ZDUxZWEwYzgxN2FkMDZhY2U4MGVhMmQwMjZjNDgz
YWU3YjJhYi4uNjIyODZlZGM1NTJkYWFkZDI5ZDMxNDM3Mzg1MDcxNzU1NjRkZWViOCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0
Yy5pT1MuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9u
cy9saWJ3ZWJydGMuaU9TLmV4cApAQCAtMjE4LDcgKzIxOCw2IEBAIF9fWk5LNndlYnJ0YzE4UnRw
U2VuZGVySW50ZXJmYWNlMTlpbml0X3NlbmRfZW5jb2RpbmdzRXYKIF9fWk5LNndlYnJ0YzE4UnRw
U2VuZGVySW50ZXJmYWNlMTdHZXRGcmFtZUVuY3J5cHRvckV2CiBfX1pONndlYnJ0YzE4UnRwU2Vu
ZGVySW50ZXJmYWNlMTdTZXRGcmFtZUVuY3J5cHRvckVOM3J0YzEzc2NvcGVkX3JlZnB0cklOU18y
M0ZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlRUVFCiBfX1pONndlYnJ0YzMwUGVlckNvbm5lY3Rpb25G
YWN0b3J5SW50ZXJmYWNlMTdDcmVhdGVWaWRlb1NvdXJjZUVOU3QzX18xMTB1bmlxdWVfcHRySU43
Y3JpY2tldDEzVmlkZW9DYXB0dXJlckVOUzFfMTRkZWZhdWx0X2RlbGV0ZUlTNF9FRUVFCi1fX1pO
SzNydGMxNE5ldHdvcmtNYW5hZ2VyMTZHZXRNRG5zUmVzcG9uZGVyRXYKIF9fWlRWTjZ3ZWJydGMx
OFJ0cFNlbmRlckludGVyZmFjZUUKIF9fWk4zcnRjMjNSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvckMx
RVBOU182VGhyZWFkRVMyXwogX19aTjNydGM5S2V5UGFyYW1zM1JTQUVpaQpAQCAtMjMzLDMgKzIz
Miw5IEBAIF9fWk42d2VicnRjMjZQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llc0MxRVBOU18yMlBl
ZXJDb25uZWN0aW9uT2JzZXJ2ZXJFCiBfX1pONndlYnJ0YzMwUGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlMjBDcmVhdGVQZWVyQ29ubmVjdGlvbkVSS05TXzIzUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2UxNlJUQ0NvbmZpZ3VyYXRpb25FTlN0M19fMTEwdW5pcXVlX3B0cklON2NyaWNrZXQxM1Bv
cnRBbGxvY2F0b3JFTlM1XzE0ZGVmYXVsdF9kZWxldGVJUzhfRUVFRU5TNl9JTjNydGMzMlJUQ0Nl
cnRpZmljYXRlR2VuZXJhdG9ySW50ZXJmYWNlRU5TOV9JU0RfRUVFRVBOU18yMlBlZXJDb25uZWN0
aW9uT2JzZXJ2ZXJFCiBfX1pONndlYnJ0YzI5U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI5
T25GYWlsdXJlRVJLTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzFfMTFjaGFyX3RyYWl0c0ljRUVO
UzFfOWFsbG9jYXRvckljRUVFRQogX19aTjZ3ZWJydGMzMkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlv
bk9ic2VydmVyOU9uRmFpbHVyZUVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90
cmFpdHNJY0VFTlMxXzlhbGxvY2F0b3JJY0VFRUUKK19fWk42d2VicnRjMTNDcnlwdG9PcHRpb25z
QzFFUktTMF8KK19fWk42d2VicnRjMTNDcnlwdG9PcHRpb25zRDFFdgorX19aTks2d2VicnRjMjBB
dWRpb1NvdXJjZUludGVyZmFjZTdvcHRpb25zRXYKK19fWlRWTjZ3ZWJydGMyMEF1ZGlvU291cmNl
SW50ZXJmYWNlRQorX19aTjZ3ZWJydGMyM1BlZXJDb25uZWN0aW9uSW50ZXJmYWNlMjFwZWVyX2Nv
bm5lY3Rpb25fc3RhdGVFdgorX19aTkszcnRjMTROZXR3b3JrTWFuYWdlcjE2R2V0TWRuc1Jlc3Bv
bmRlckV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggMTlkMGZlNmIyMDFkOTZj
YmZkMWMxYzFkMDg2NzQwOTc3MTA3YTZmMC4uZTMxMjZiZjA2ZmQ5ODcwYWE5ZjNmOTljNDc1M2Nl
MWM4MDEzOGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAtMjE5LDcgKzIx
OSw2IEBAIF9fWk5LNndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTlpbml0X3NlbmRfZW5jb2Rp
bmdzRXYKIF9fWk5LNndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTdHZXRGcmFtZUVuY3J5cHRv
ckV2CiBfX1pONndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTdTZXRGcmFtZUVuY3J5cHRvckVO
M3J0YzEzc2NvcGVkX3JlZnB0cklOU18yM0ZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlRUVFCiBfX1pO
NndlYnJ0YzMwUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlMTdDcmVhdGVWaWRlb1NvdXJj
ZUVOU3QzX18xMTB1bmlxdWVfcHRySU43Y3JpY2tldDEzVmlkZW9DYXB0dXJlckVOUzFfMTRkZWZh
dWx0X2RlbGV0ZUlTNF9FRUVFCi1fX1pOSzNydGMxNE5ldHdvcmtNYW5hZ2VyMTZHZXRNRG5zUmVz
cG9uZGVyRXYKIF9fWlRWTjZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFjZUUKIF9fWk4zcnRjMjNS
VENDZXJ0aWZpY2F0ZUdlbmVyYXRvckMxRVBOU182VGhyZWFkRVMyXwogX19aTjNydGM5S2V5UGFy
YW1zM1JTQUVpaQpAQCAtMjM0LDMgKzIzMyw5IEBAIF9fWk42d2VicnRjMjZQZWVyQ29ubmVjdGlv
bkRlcGVuZGVuY2llc0MxRVBOU18yMlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXJFCiBfX1pONndlYnJ0
YzMwUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlMjBDcmVhdGVQZWVyQ29ubmVjdGlvbkVS
S05TXzIzUGVlckNvbm5lY3Rpb25JbnRlcmZhY2UxNlJUQ0NvbmZpZ3VyYXRpb25FTlN0M19fMTEw
dW5pcXVlX3B0cklON2NyaWNrZXQxM1BvcnRBbGxvY2F0b3JFTlM1XzE0ZGVmYXVsdF9kZWxldGVJ
UzhfRUVFRU5TNl9JTjNydGMzMlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9ySW50ZXJmYWNlRU5TOV9J
U0RfRUVFRVBOU18yMlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXJFCiBfX1pONndlYnJ0YzI5U2V0U2Vz
c2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI5T25GYWlsdXJlRVJLTlN0M19fMTEyYmFzaWNfc3RyaW5n
SWNOUzFfMTFjaGFyX3RyYWl0c0ljRUVOUzFfOWFsbG9jYXRvckljRUVFRQogX19aTjZ3ZWJydGMz
MkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyOU9uRmFpbHVyZUVSS05TdDNfXzExMmJh
c2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMxXzlhbGxvY2F0b3JJY0VFRUUKK19f
Wk42d2VicnRjMTNDcnlwdG9PcHRpb25zQzFFUktTMF8KK19fWk42d2VicnRjMTNDcnlwdG9PcHRp
b25zRDFFdgorX19aTks2d2VicnRjMjBBdWRpb1NvdXJjZUludGVyZmFjZTdvcHRpb25zRXYKK19f
WlRWTjZ3ZWJydGMyMEF1ZGlvU291cmNlSW50ZXJmYWNlRQorX19aTjZ3ZWJydGMyM1BlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlMjFwZWVyX2Nvbm5lY3Rpb25fc3RhdGVFdgorX19aTkszcnRjMTROZXR3
b3JrTWFuYWdlcjE2R2V0TWRuc1Jlc3BvbmRlckV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKaW5k
ZXggMTlkMGZlNmIyMDFkOTZjYmZkMWMxYzFkMDg2NzQwOTc3MTA3YTZmMC4uZTMxMjZiZjA2ZmQ5
ODcwYWE5ZjNmOTljNDc1M2NlMWM4MDEzOGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cApA
QCAtMjE5LDcgKzIxOSw2IEBAIF9fWk5LNndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTlpbml0
X3NlbmRfZW5jb2RpbmdzRXYKIF9fWk5LNndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTdHZXRG
cmFtZUVuY3J5cHRvckV2CiBfX1pONndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTdTZXRGcmFt
ZUVuY3J5cHRvckVOM3J0YzEzc2NvcGVkX3JlZnB0cklOU18yM0ZyYW1lRW5jcnlwdG9ySW50ZXJm
YWNlRUVFCiBfX1pONndlYnJ0YzMwUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlMTdDcmVh
dGVWaWRlb1NvdXJjZUVOU3QzX18xMTB1bmlxdWVfcHRySU43Y3JpY2tldDEzVmlkZW9DYXB0dXJl
ckVOUzFfMTRkZWZhdWx0X2RlbGV0ZUlTNF9FRUVFCi1fX1pOSzNydGMxNE5ldHdvcmtNYW5hZ2Vy
MTZHZXRNRG5zUmVzcG9uZGVyRXYKIF9fWlRWTjZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFjZUUK
IF9fWk4zcnRjMjNSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvckMxRVBOU182VGhyZWFkRVMyXwogX19a
TjNydGM5S2V5UGFyYW1zM1JTQUVpaQpAQCAtMjM0LDMgKzIzMyw5IEBAIF9fWk42d2VicnRjMjZQ
ZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llc0MxRVBOU18yMlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXJF
CiBfX1pONndlYnJ0YzMwUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlMjBDcmVhdGVQZWVy
Q29ubmVjdGlvbkVSS05TXzIzUGVlckNvbm5lY3Rpb25JbnRlcmZhY2UxNlJUQ0NvbmZpZ3VyYXRp
b25FTlN0M19fMTEwdW5pcXVlX3B0cklON2NyaWNrZXQxM1BvcnRBbGxvY2F0b3JFTlM1XzE0ZGVm
YXVsdF9kZWxldGVJUzhfRUVFRU5TNl9JTjNydGMzMlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9ySW50
ZXJmYWNlRU5TOV9JU0RfRUVFRVBOU18yMlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXJFCiBfX1pONndl
YnJ0YzI5U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI5T25GYWlsdXJlRVJLTlN0M19fMTEy
YmFzaWNfc3RyaW5nSWNOUzFfMTFjaGFyX3RyYWl0c0ljRUVOUzFfOWFsbG9jYXRvckljRUVFRQog
X19aTjZ3ZWJydGMzMkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyOU9uRmFpbHVyZUVS
S05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMxXzlhbGxvY2F0
b3JJY0VFRUUKK19fWk42d2VicnRjMTNDcnlwdG9PcHRpb25zQzFFUktTMF8KK19fWk42d2VicnRj
MTNDcnlwdG9PcHRpb25zRDFFdgorX19aTks2d2VicnRjMjBBdWRpb1NvdXJjZUludGVyZmFjZTdv
cHRpb25zRXYKK19fWlRWTjZ3ZWJydGMyMEF1ZGlvU291cmNlSW50ZXJmYWNlRQorX19aTjZ3ZWJy
dGMyM1BlZXJDb25uZWN0aW9uSW50ZXJmYWNlMjFwZWVyX2Nvbm5lY3Rpb25fc3RhdGVFdgorX19a
TkszcnRjMTROZXR3b3JrTWFuYWdlcjE2R2V0TWRuc1Jlc3BvbmRlckV2CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
Q01ha2UvQWJzZWlsSGVscGVycy5jbWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9BYnNlaWxIZWxwZXJzLmNtYWtlCmlu
ZGV4IGU0ZWFmZTQ5ZTQ3OTA2NTE1ZTQ0OGEyZGVmNTlmNzYyOWIyYmEzOTMuLjBjOTM0MTc0NzUx
MmNlYjYxNzM1NDFjN2Y0YTI2NjdhMTViNTc3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9BYnNlaWxI
ZWxwZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9BYnNlaWxIZWxwZXJzLmNtYWtlCkBAIC0xMjMsNyAr
MTIzLDcgQEAgZW5kZnVuY3Rpb24oKQogIwogIyBhbGwgdGVzdHMgd2lsbCBiZSByZWdpc3RlciBm
b3IgZXhlY3V0aW9uIHdpdGggYWRkX3Rlc3QoKQogIwotIyB0ZXN0IGNvbXBpbGF0aW9uIGFuZCBl
eGVjdXRpb24gaXMgZGlzYWJsZSB3aGVuIEJVSUxEX1RFU1RJTkc9T0ZGCisjIHRlc3QgY29tcGls
YXRpb24gYW5kIGV4ZWN1dGlvbiBpcyBkaXNhYmxlIHdoZW4gQUJTTF9SVU5fVEVTVFM9T0ZGCiAj
CiBmdW5jdGlvbihhYnNsX3Rlc3QpCiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBmdW5jdGlvbihhYnNs
X3Rlc3QpCiAgICkKIAogCi0gIGlmKEJVSUxEX1RFU1RJTkcpCisgIGlmKEFCU0xfUlVOX1RFU1RT
KQogCiAgICAgc2V0KF9OQU1FICR7QUJTTF9URVNUX1RBUkdFVH0pCiAgICAgc3RyaW5nKFRPVVBQ
RVIgJHtfTkFNRX0gX1VQUEVSX05BTUUpCkBAIC0xNTMsNyArMTUzLDcgQEAgZnVuY3Rpb24oYWJz
bF90ZXN0KQogICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtfTkFNRX1fYmluIFBST1BFUlRZIEZP
TERFUiAke0FCU0xfSURFX0ZPTERFUn0pCiAKICAgICBhZGRfdGVzdCgke19OQU1FfSAke19OQU1F
fV9iaW4pCi0gIGVuZGlmKEJVSUxEX1RFU1RJTkcpCisgIGVuZGlmKEFCU0xfUlVOX1RFU1RTKQog
CiBlbmRmdW5jdGlvbigpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZUxp
c3RzLnR4dAppbmRleCA4OWEzMzg2ZjdlMjU4ZWZjOTczOWIzNTE3NTY2YzU5MWYwMmFkZTdlLi45
YTdlMTAzMWIyMzUxMTA0ZTNlYzgzMjExNGE4ZDZiNzVkNTUwNGMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlTGlzdHMudHh0CkBAIC0zMiw3ICszMiw3IEBAIGlmIChN
U1ZDKQogICAjIC93ZDQyNDQgIGNvbnZlcnNpb24gZnJvbSAndHlwZTEnIHRvICd0eXBlMicKICAg
IyAvd2Q0MjY3ICBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUyJwogICAjIC93ZDQ4
MDAgIGZvcmNlIHZhbHVlIHRvIGJvb2wgJ3RydWUnIG9yICdmYWxzZScgKHBlcmZvcm1hbmNlIHdh
cm5pbmcpCi0gIGFkZF9jb21waWxlX29wdGlvbnMoL1czIC9XWCAvd2Q0MDA1IC93ZDQwNjggL3dk
NDI0NCAvd2Q0MjY3IC93ZDQ4MDApCisgIGFkZF9jb21waWxlX29wdGlvbnMoL1czIC93ZDQwMDUg
L3dkNDA2OCAvd2Q0MjQ0IC93ZDQyNjcgL3dkNDgwMCkKICAgYWRkX2RlZmluaXRpb25zKC9ETk9N
SU5NQVggL0RXSU4zMl9MRUFOX0FORF9NRUFOPTEgL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAv
RF9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTKQogZWxzZSgpCiAgIHNldChBQlNMX1NURF9DWFhfRkxB
RyAiLXN0ZD1jKysxMSIgQ0FDSEUgU1RSSU5HICJjKysgc3RkIGZsYWcgKGRlZmF1bHQ6IGMrKzEx
KSIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUwppbmRleCBjZWNhNGE4YmEyY2IxNmJk
OGQxZDc4MzNiZWRmNzhlNmYwOWM5M2ExLi4zOGViYWYyMjk1ZDFhNjE2MDU2NjUwNDAzYWJiODlh
MDkyODBkZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvT1dORVJTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9PV05FUlMKQEAgLTEsMiArMSw0
IEBACitkYW5pbGNoYXBAY2hyb21pdW0ub3JnCitrd2liZXJnQGNocm9taXVtLm9yZwogbWJvbmFk
ZWlAY2hyb21pdW0ub3JnCiBwaG9nbHVuZEBjaHJvbWl1bS5vcmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9SRUFE
TUUuY2hyb21pdW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvUkVBRE1FLmNocm9taXVtCmluZGV4IDkxZDZkMzgxYTQ3NzA0NDUwYjU5
OWEwMDlmMDQ5YzcwN2IxYTkyMzIuLjYwMjZhMmY0ZTIwNjEzZWRiNTNlMTY4YmZiNDM4ZjIwZmU0
YzFmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9SRUFETUUuY2hyb21pdW0KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1JFQURNRS5jaHJvbWl1
bQpAQCAtNCw3ICs0LDcgQEAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vYWJzZWlsL2Fic2VpbC1j
cHAKIExpY2Vuc2U6IEFwYWNoZSAyLjAKIExpY2Vuc2UgRmlsZTogTElDRU5TRQogVmVyc2lvbjog
MAotUmV2aXNpb246IGJlYTg1YjUyNzMzMDIyMjk0ZWVmMTA4YTJlNDJkNzdiNjE2ZGRjYTIKK1Jl
dmlzaW9uOiBmYjQ2MjIyNGMwNTg0ODc3NjNmMjYzYjc5OTVkNzBlZmQwMjQyYzE3CiBTZWN1cml0
eSBDcml0aWNhbDogeWVzCiAKIERlc2NyaXB0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1dPUktTUEFDRSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9XT1JLU1BBQ0UKaW5kZXggZTRhOTExOTc4ZGM2ODI1Njk1YTI4NDEzYmRmYTIzNTVhY2NkYTI3
ZC4uNzJlZjEzOTgwYzI5MjYzODMyY2JiMjJmOThmNzlhZTg1OTgyMWZmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L1dPUktTUEFDRQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvV09SS1NQQUNFCkBAIC01LDExICs1LDExIEBAIGxvYWQoIkBiYXpl
bF90b29scy8vdG9vbHMvYnVpbGRfZGVmcy9yZXBvOmh0dHAuYnpsIiwgImh0dHBfYXJjaGl2ZSIp
CiBodHRwX2FyY2hpdmUoCiAgIG5hbWUgPSAiYmF6ZWxfdG9vbGNoYWlucyIsCiAgIHVybHMgPSBb
Ci0gICAgImh0dHBzOi8vbWlycm9yLmJhemVsLmJ1aWxkL2dpdGh1Yi5jb20vYmF6ZWxidWlsZC9i
YXplbC10b29sY2hhaW5zL2FyY2hpdmUvMjg3YjY0ZTBhMjExZmI3YzIzYjc0Njk1ZjhkNWY1MjA1
YjYxZjRlYi50YXIuZ3oiLAotICAgICJodHRwczovL2dpdGh1Yi5jb20vYmF6ZWxidWlsZC9iYXpl
bC10b29sY2hhaW5zL2FyY2hpdmUvMjg3YjY0ZTBhMjExZmI3YzIzYjc0Njk1ZjhkNWY1MjA1YjYx
ZjRlYi50YXIuZ3oiLAorICAgICJodHRwczovL21pcnJvci5iYXplbC5idWlsZC9naXRodWIuY29t
L2JhemVsYnVpbGQvYmF6ZWwtdG9vbGNoYWlucy9hcmNoaXZlL2JjMDliOTk1YzEzN2RmMDQyYmI4
MGEzOTViNzNkN2NlNmYyNmFmYmUudGFyLmd6IiwKKyAgICAiaHR0cHM6Ly9naXRodWIuY29tL2Jh
emVsYnVpbGQvYmF6ZWwtdG9vbGNoYWlucy9hcmNoaXZlL2JjMDliOTk1YzEzN2RmMDQyYmI4MGEz
OTViNzNkN2NlNmYyNmFmYmUudGFyLmd6IiwKICAgXSwKLSAgc3RyaXBfcHJlZml4ID0gImJhemVs
LXRvb2xjaGFpbnMtMjg3YjY0ZTBhMjExZmI3YzIzYjc0Njk1ZjhkNWY1MjA1YjYxZjRlYiIsCi0g
IHNoYTI1NiA9ICJhY2E4YWM2YWZkNzc0NTAyN2VlNGE0MzAzMmI1MWE3MjVhNjFhNzVhMzBmMDJj
YzU4NjgxZWU4N2U0ZGNkZjRiIiwKKyAgc3RyaXBfcHJlZml4ID0gImJhemVsLXRvb2xjaGFpbnMt
YmMwOWI5OTVjMTM3ZGYwNDJiYjgwYTM5NWI3M2Q3Y2U2ZjI2YWZiZSIsCisgIHNoYTI1NiA9ICI0
MzI5NjYzZmU2YzUyMzQyNWFkNGQzYzk4OWE4YWMwMjZiMDRlMWFjZWRlY2ViNTZhYTRiMTkwZmE3
ZjM5NzNjIiwKICkKIAogIyBHb29nbGVUZXN0L0dvb2dsZU1vY2sgZnJhbWV3b3JrLiBVc2VkIGJ5
IG1vc3QgdW5pdC10ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvQ01ha2VMaXN0cy50eHQKaW5kZXggNjg5ZjY0ZTI1OGJhYWM5OTIwMWNmYTc4OTRkYmNiODA1
NDI0MDhkZi4uMWQwOWIxOTM1ZDg0NzM1ZDZkYzkwNzQyYTY0NWIyODg1MGFlZWM3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvQ01ha2VMaXN0cy50eHQKQEAg
LTIwLDYgKzIwLDcgQEAgYWRkX3N1YmRpcmVjdG9yeShiYXNlKQogYWRkX3N1YmRpcmVjdG9yeShh
bGdvcml0aG0pCiBhZGRfc3ViZGlyZWN0b3J5KGNvbnRhaW5lcikKIGFkZF9zdWJkaXJlY3Rvcnko
ZGVidWdnaW5nKQorYWRkX3N1YmRpcmVjdG9yeShoYXNoKQogYWRkX3N1YmRpcmVjdG9yeShtZW1v
cnkpCiBhZGRfc3ViZGlyZWN0b3J5KG1ldGEpCiBhZGRfc3ViZGlyZWN0b3J5KG51bWVyaWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0v
Y29udGFpbmVyLmgKaW5kZXggNmFmOGMwOTc5OWU1NmYyMjNhZDNlZWNhMjQ2ZDgzYWIwNzA2M2Ex
OS4uNTNhYjE1Njg2YzZlMTBlNjIxN2VkNDdiMGI0ZDdhMzMzNzU2ODA3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYWxnb3JpdGhtL2NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWlu
ZXIuaApAQCAtNDk0LDcgKzQ5NCw3IEBAIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBjX2NvcHlfYmFj
a3dhcmQoY29uc3QgQyYgc3JjLAogLy8gQ29udGFpbmVyLWJhc2VkIHZlcnNpb24gb2YgdGhlIDxh
bGdvcml0aG0+IGBzdGQ6Om1vdmUoKWAgZnVuY3Rpb24gdG8gbW92ZQogLy8gYSBjb250YWluZXIn
cyBlbGVtZW50cyBpbnRvIGFuIGl0ZXJhdG9yLgogdGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVu
YW1lIE91dHB1dEl0ZXJhdG9yPgotT3V0cHV0SXRlcmF0b3IgY19tb3ZlKEMmIHNyYywgT3V0cHV0
SXRlcmF0b3IgZGVzdCkgeworT3V0cHV0SXRlcmF0b3IgY19tb3ZlKEMmJiBzcmMsIE91dHB1dEl0
ZXJhdG9yIGRlc3QpIHsKICAgcmV0dXJuIHN0ZDo6bW92ZShjb250YWluZXJfYWxnb3JpdGhtX2lu
dGVybmFsOjpjX2JlZ2luKHNyYyksCiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX2FsZ29y
aXRobV9pbnRlcm5hbDo6Y19lbmQoc3JjKSwgZGVzdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9h
bGdvcml0aG0vY29udGFpbmVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyX3Rl
c3QuY2MKaW5kZXggZGU2NmYxNDY4MGYxYjhmMjJkMmU5NjVkNDQxYTA1ZWZjNThhNmMwMy4uMTUw
MmIxN2Y4NjM2YjBkNWVkZWM5ZmE0NTM1YzZlOGI4MGQzNTA3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YWxnb3JpdGhtL2NvbnRhaW5lcl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWlu
ZXJfdGVzdC5jYwpAQCAtNjM2LDYgKzYzNiwyMSBAQCBURVNUKE11dGF0aW5nVGVzdCwgTW92ZSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludGVlKDUpKSk7CiB9CiAKK1RF
U1QoTXV0YXRpbmdUZXN0LCBNb3ZlV2l0aFJ2YWx1ZSkgeworICBhdXRvIE1ha2VSVmFsdWVTcmMg
PSBbXSB7CisgICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGludD4+IHNyYzsKKyAgICBz
cmMuZW1wbGFjZV9iYWNrKGFic2w6Om1ha2VfdW5pcXVlPGludD4oMSkpOworICAgIHNyYy5lbXBs
YWNlX2JhY2soYWJzbDo6bWFrZV91bmlxdWU8aW50PigyKSk7CisgICAgc3JjLmVtcGxhY2VfYmFj
ayhhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDMpKTsKKyAgICByZXR1cm4gc3JjOworICB9OworCisg
IHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBkZXN0ID0gTWFrZVJWYWx1ZVNyYygp
OworICBhYnNsOjpjX21vdmUoTWFrZVJWYWx1ZVNyYygpLCBzdGQ6OmJhY2tfaW5zZXJ0ZXIoZGVz
dCkpOworICBFWFBFQ1RfVEhBVChkZXN0LCBFbGVtZW50c0FyZShQb2ludGVlKDEpLCBQb2ludGVl
KDIpLCBQb2ludGVlKDMpLCBQb2ludGVlKDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQb2ludGVlKDIpLCBQb2ludGVlKDMpKSk7Cit9CisKIFRFU1QoTXV0YXRpbmdUZXN0LCBT
d2FwUmFuZ2VzKSB7CiAgIHN0ZDo6dmVjdG9yPGludD4gb2RkcyA9IHsyLCA0LCA2fTsKICAgc3Rk
Ojp2ZWN0b3I8aW50PiBldmVucyA9IHsxLCAzLCA1fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
QlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmJhemVsCmluZGV4IDA2ZDA5MmViZGZhODNh
YmY5MjRiYjNlZTAzMjY5NDI1OWIyZTRiMmQuLmY3ZDgxMDEzNWI4Y2NjNWZiMDVkZTRhYjcyNWQ2
YzFjZDhkZjNhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuYmF6ZWwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvYmFzZS9CVUlMRC5iYXplbApAQCAtMTksNiArMTksNyBAQCBsb2FkKAogICAgICJBQlNMX0RF
RkFVTFRfQ09QVFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAogICAgICJBQlNMX0VYQ0VQVElP
TlNfRkxBRyIsCisgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTIiwKICkKIAogcGFj
a2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKQEAgLTI5
LDYgKzMwLDcgQEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gInNwaW5sb2NrX3dhaXQiLAogICAg
IHNyY3MgPSBbCiAgICAgICAgICJpbnRlcm5hbC9zcGlubG9ja19ha2Fyb3MuaW5jIiwKKyAgICAg
ICAgImludGVybmFsL3NwaW5sb2NrX2xpbnV4LmluYyIsCiAgICAgICAgICJpbnRlcm5hbC9zcGlu
bG9ja19wb3NpeC5pbmMiLAogICAgICAgICAiaW50ZXJuYWwvc3BpbmxvY2tfd2FpdC5jYyIsCiAg
ICAgICAgICJpbnRlcm5hbC9zcGlubG9ja193aW4zMi5pbmMiLApAQCAtMTc5LDYgKzE4MSw3IEBA
IGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuY2MiXSwK
ICAgICBoZHJzID0gWyJpbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5oIl0sCiAgICAgY29wdHMgPSBB
QlNMX0RFRkFVTFRfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9
IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIHZpc2liaWxpdHkgPSBbCiAgICAg
ICAgICIvL2Fic2w6X19zdWJwYWNrYWdlc19fIiwKICAgICBdLApAQCAtMTkzLDYgKzE5Niw3IEBA
IGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJ0aHJvd19kZWxlZ2F0ZV90ZXN0IiwKICAgICBzcmNzID0g
WyJ0aHJvd19kZWxlZ2F0ZV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMg
KyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19G
TEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6dGhyb3dfZGVsZWdhdGUiLAog
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLApAQCAtMjI1LDYg
KzIyOSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvZXhjZXB0aW9uX3Nh
ZmV0eV90ZXN0aW5nLmNjIl0sCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0
eV90ZXN0aW5nLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBU
SU9OU19GTEFHLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMs
CiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpiYXNlIiwKICAgICAgICAgIjpjb25maWciLApAQCAt
MjQxLDYgKzI0Niw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJleGNlcHRpb25fc2FmZXR5X3Rl
c3RpbmdfdGVzdCIsCiAgICAgc3JjcyA9IFsiZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nX3Rlc3Qu
Y2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFH
LAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIjpleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmciLAogICAgICAgICAiLy9h
YnNsL21lbW9yeSIsCkBAIC0yOTksNiArMzA1LDcgQEAgY2NfdGVzdCgKICAgICBzaXplID0gIm1l
ZGl1bSIsCiAgICAgc3JjcyA9IFsic3BpbmxvY2tfdGVzdF9jb21tb24uY2MiXSwKICAgICBjb3B0
cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0gWyJub190ZXN0X3dhc20iXSwKICAgICBk
ZXBzID0gWwogICAgICAgICAiOmJhc2UiLAogICAgICAgICAiOmNvcmVfaGVhZGVycyIsCkBAIC0z
MzcsNiArMzQ0LDkgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNvbmZpZ190ZXN0IiwKICAgICBz
cmNzID0gWyJjb25maWdfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAor
ICAgIHRhZ3MgPSBbCisgICAgICAgICJub190ZXN0X3dhc20iLAorICAgIF0sCiAgICAgZGVwcyA9
IFsKICAgICAgICAgIjpjb25maWciLAogICAgICAgICAiLy9hYnNsL3N5bmNocm9uaXphdGlvbjp0
aHJlYWRfcG9vbCIsCkBAIC0zNDgsNiArMzU4LDkgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNh
bGxfb25jZV90ZXN0IiwKICAgICBzcmNzID0gWyJjYWxsX29uY2VfdGVzdC5jYyJdLAogICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIHRhZ3MgPSBbCisgICAgICAgICJub190ZXN0X3dh
c20iLAorICAgIF0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpiYXNlIiwKICAgICAgICAgIjpj
b3JlX2hlYWRlcnMiLApAQCAtNDAxLDYgKzQxNCw5IEBAIGNjX3Rlc3QoCiAgICAgICAgICIvL2Fi
c2w6d2luZG93cyI6IFtdLAogICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi1wdGhy
ZWFkIl0sCiAgICAgfSksCisgICAgdGFncyA9IFsKKyAgICAgICAgIm5vX3Rlc3Rfd2FzbSIsCisg
ICAgXSwKICAgICBkZXBzID0gWwogICAgICAgICAiOmJhc2UiLAogICAgICAgICAiOmNvcmVfaGVh
ZGVycyIsCkBAIC00MjEsMyArNDM3LDIzIEBAIGNjX3Rlc3QoCiAgICAgICAgICJAY29tX2dpdGh1
Yl9nb29nbGVfYmVuY2htYXJrLy86YmVuY2htYXJrX21haW4iLAogICAgIF0sCiApCisKK2NjX2xp
YnJhcnkoCisgICAgbmFtZSA9ICJiaXRzIiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9iaXRzLmgi
XSwKKyAgICB2aXNpYmlsaXR5ID0gWworICAgICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNfXyIs
CisgICAgXSwKKyAgICBkZXBzID0gWyI6Y29yZV9oZWFkZXJzIl0sCispCisKK2NjX3Rlc3QoCisg
ICAgbmFtZSA9ICJiaXRzX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBb
ImludGVybmFsL2JpdHNfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAor
ICAgIGRlcHMgPSBbCisgICAgICAgICI6Yml0cyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29n
bGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
QlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmduCmluZGV4IGE3MTQ2NTY0NjIyOTBiY2Q0MGNk
NDk5OWNhMWZlZjIwYzg2MzdlN2QuLjZjNTQwZjNiMmJiMjljYTk2ZTQ1Njk2YTFjYjMzNWNjYjRh
MGIxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9C
VUlMRC5nbgpAQCAtMjMsNiArMjMsNyBAQCBzb3VyY2Vfc2V0KCJzcGlubG9ja193YWl0Iikgewog
ICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1
ZGVfY29uZmlnIiBdCiAgIHNvdXJjZXMgPSBbCiAgICAgImludGVybmFsL3NwaW5sb2NrX2FrYXJv
cy5pbmMiLAorICAgICJpbnRlcm5hbC9zcGlubG9ja19saW51eC5pbmMiLAogICAgICJpbnRlcm5h
bC9zcGlubG9ja19wb3NpeC5pbmMiLAogICAgICJpbnRlcm5hbC9zcGlubG9ja193YWl0LmNjIiwK
ICAgICAiaW50ZXJuYWwvc3BpbmxvY2tfd2luMzIuaW5jIiwKQEAgLTcxLDYgKzcyLDcgQEAgc291
cmNlX3NldCgiZHluYW1pY19hbm5vdGF0aW9ucyIpIHsKICAgcHVibGljID0gWwogICAgICJkeW5h
bWljX2Fubm90YXRpb25zLmgiLAogICBdCisKICAgIyBBYnNlaWwncyBkeW5hbWljIGFubm90YXRp
b25zIGFyZSBvbmx5IHZpc2libGUgaW5zaWRlIEFic2VpbCBiZWNhdXNlCiAgICMgdGhlaXIgdXNh
Z2UgaXMgZGVwcmVjYXRlZCBpbiBDaHJvbWl1bSAoc2VlIFJFQURNRS5jaHJvbWl1bSBmb3IgbW9y
ZSBpbmZvKS4KICAgdmlzaWJpbGl0eSA9IFtdCkBAIC0yOTYsMyArMjk4LDE5IEBAIHNvdXJjZV9z
ZXQoImVuZGlhbiIpIHsKICAgICAiOmNvcmVfaGVhZGVycyIsCiAgIF0KIH0KKworc291cmNlX3Nl
dCgiYml0cyIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJv
bWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
ZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvYml0
cy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29yZV9oZWFkZXJzIiwKKyAgXQorICB2aXNp
YmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICIuLi8qIiBdCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAwMWQyYWYwODVmNThlMTVmM2UyNjM5YzUxNmNmNjZkNDZkMTIxYmVkLi4wNGE2ZWIzMTk1NWI2
MDIyMDJhZDU5N2JhMmIzNGVjMDRiYzdlNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQ01ha2VMaXN0cy50eHQKQEAgLTMxLDYgKzMxLDcg
QEAgbGlzdChBUFBFTkQgQkFTRV9QVUJMSUNfSEVBREVSUwogCiBsaXN0KEFQUEVORCBCQVNFX0lO
VEVSTkFMX0hFQURFUlMKICAgImludGVybmFsL2F0b21pY19ob29rLmgiCisgICJpbnRlcm5hbC9i
aXRzLmgiCiAgICJpbnRlcm5hbC9jeWNsZWNsb2NrLmgiCiAgICJpbnRlcm5hbC9kaXJlY3RfbW1h
cC5oIgogICAiaW50ZXJuYWwvZW5kaWFuLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2F0dHJp
YnV0ZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvYXR0cmlidXRlcy5oCmluZGV4IGIxODgzYjZkNzUyY2MxNWNk
NzZlMDc5MjQwZDA4NTdjZTE4ZThkMGEuLmU4NTAwMjI0NDQzYmNlNWJmNjViYTVjZTFmY2QwMGQ4
YzcwNDRjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvYXR0cmlidXRlcy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2Jhc2UvYXR0cmlidXRlcy5oCkBAIC0xMDAsNyArMTAwLDcgQEAKIC8vIEFCU0xfUFJJTlRGX0FU
VFJJQlVURQogLy8gQUJTTF9TQ0FORl9BVFRSSUJVVEUKIC8vCi0vLyBUZWxscyB0aGUgY29tcGls
ZXIgdG8gcGVyZm9ybSBgcHJpbnRmYCBmb3JtYXQgc3RkOjpzdHJpbmcgY2hlY2tpbmcgaWYgdGhl
CisvLyBUZWxscyB0aGUgY29tcGlsZXIgdG8gcGVyZm9ybSBgcHJpbnRmYCBmb3JtYXQgc3RyaW5n
IGNoZWNraW5nIGlmIHRoZQogLy8gY29tcGlsZXIgc3VwcG9ydHMgaXQ7IHNlZSB0aGUgJ2Zvcm1h
dCcgYXR0cmlidXRlIGluCiAvLyA8aHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjLTQu
Ny4wL2djYy9GdW5jdGlvbi1BdHRyaWJ1dGVzLmh0bWw+LgogLy8KQEAgLTQ5NCwxNCArNDk0LDI3
IEBACiAjZGVmaW5lIEFCU0xfWFJBWV9MT0dfQVJHUyhOKQogI2VuZGlmCiAKKy8vIEFCU0xfQVRU
UklCVVRFX1JFSU5JVElBTElaRVMKKy8vCisvLyBJbmRpY2F0ZXMgdGhhdCBhIG1lbWJlciBmdW5j
dGlvbiByZWluaXRpYWxpemVzIHRoZSBlbnRpcmUgb2JqZWN0IHRvIGEga25vd24KKy8vIHN0YXRl
LCBpbmRlcGVuZGVudCBvZiB0aGUgcHJldmlvdXMgc3RhdGUgb2YgdGhlIG9iamVjdC4KKy8vCisv
LyBUaGUgY2xhbmctdGlkeSBjaGVjayBidWdwcm9uZS11c2UtYWZ0ZXItbW92ZSBhbGxvd3MgbWVt
YmVyIGZ1bmN0aW9ucyBtYXJrZWQKKy8vIHdpdGggdGhpcyBhdHRyaWJ1dGUgdG8gYmUgY2FsbGVk
IG9uIG9iamVjdHMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgZnJvbTsKKy8vIHdpdGhvdXQgdGhlIGF0
dHJpYnV0ZSwgdGhpcyB3b3VsZCByZXN1bHQgaW4gYSB1c2UtYWZ0ZXItbW92ZSB3YXJuaW5nLgor
I2lmIEFCU0xfSEFWRV9DUFBfQVRUUklCVVRFKGNsYW5nOjpyZWluaXRpYWxpemVzKQorI2RlZmlu
ZSBBQlNMX0FUVFJJQlVURV9SRUlOSVRJQUxJWkVTIFtbY2xhbmc6OnJlaW5pdGlhbGl6ZXNdXQor
I2Vsc2UKKyNkZWZpbmUgQUJTTF9BVFRSSUJVVEVfUkVJTklUSUFMSVpFUworI2VuZGlmCisKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBWYXJpYWJsZSBBdHRyaWJ1dGVzCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiAvLyBBQlNMX0FUVFJJQlVURV9VTlVTRUQKIC8vCi0vLyBQcmV2ZW50
cyB0aGUgY29tcGlsZXIgZnJvbSBjb21wbGFpbmluZyBhYm91dCBvciBvcHRpbWl6aW5nIGF3YXkg
dmFyaWFibGVzCi0vLyB0aGF0IGFwcGVhciB1bnVzZWQuCisvLyBQcmV2ZW50cyB0aGUgY29tcGls
ZXIgZnJvbSBjb21wbGFpbmluZyBhYm91dCB2YXJpYWJsZXMgdGhhdCBhcHBlYXIgdW51c2VkLgog
I2lmIEFCU0xfSEFWRV9BVFRSSUJVVEUodW51c2VkKSB8fCAoZGVmaW5lZChfX0dOVUNfXykgJiYg
IWRlZmluZWQoX19jbGFuZ19fKSkKICN1bmRlZiBBQlNMX0FUVFJJQlVURV9VTlVTRUQKICNkZWZp
bmUgQUJTTF9BVFRSSUJVVEVfVU5VU0VEIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uZmlnLmgKaW5kZXgg
Njg5MGUzMTNiZjI3YWY3ZTVlOGE1YzA1MTMyNTAxM2UyNzIxNWEwZS4uZDRlYjdkMGNiZDc2Yjcx
OGY0Mjg5NzlkY2U3NTVkNzM1YWZjYjAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jb25maWcu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2NvbmZpZy5oCkBAIC0xOTksNyArMTk5LDcgQEAKICNkZWZpbmUg
QUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjggMQogI2VsaWYgZGVmaW5lZChfX0NVREFDQ19fKQog
Ly8gX19DVURBQ0NfVkVSX18gaXMgYSBmdWxsIHZlcnNpb24gbnVtYmVyIGJlZm9yZSBDVURBIDks
IGFuZCBpcyBkZWZpbmVkIHRvIGEKLS8vIHN0ZDo6c3RyaW5nIGV4cGxhaW5pbmcgdGhhdCBpdCBo
YXMgYmVlbiByZW1vdmVkIHN0YXJ0aW5nIHdpdGggQ1VEQSA5LiBXZSB1c2UKKy8vIHN0cmluZyBl
eHBsYWluaW5nIHRoYXQgaXQgaGFzIGJlZW4gcmVtb3ZlZCBzdGFydGluZyB3aXRoIENVREEgOS4g
V2UgdXNlCiAvLyBuZXN0ZWQgI2lmcyBiZWNhdXNlIHRoZXJlIGlzIG5vIHNob3J0LWNpcmN1aXRp
bmcgaW4gdGhlIHByZXByb2Nlc3Nvci4KIC8vIE5PVEU6IGBfX0NVREFDQ19fYCBjb3VsZCBiZSB1
bmRlZmluZWQgd2hpbGUgYF9fQ1VEQUNDX1ZFUl9fYCBpcyBkZWZpbmVkLgogI2lmIF9fQ1VEQUND
X1ZFUl9fID49IDcwMDAwCkBAIC00MTQsMTQgKzQxNCwxMyBAQAogLy8gPHN0cmluZ192aWV3Piwg
PHZhcmlhbnQ+IGlzIGltcGxlbWVudGVkKSBvciBoaWdoZXIuIEFsc28sIGBfX2NwbHVzcGx1c2Ag
aXMKIC8vIG5vdCBjb3JyZWN0bHkgc2V0IGJ5IE1TVkMsIHNvIHdlIHVzZSBgX01TVkNfTEFOR2Ag
dG8gY2hlY2sgdGhlIGxhbmd1YWdlCiAvLyB2ZXJzaW9uLgotLy8gVE9ETyh6aGFuZ3h5KTogZml4
IHRlc3RzIGJlZm9yZSBlbmFibGluZyBhbGlhc2luZyBmb3IgYHN0ZDo6YW55YCwKLS8vIGBzdGQ6
OnN0cmluZ192aWV3YC4KKy8vIFRPRE8oemhhbmd4eSk6IGZpeCB0ZXN0cyBiZWZvcmUgZW5hYmxp
bmcgYWxpYXNpbmcgZm9yIGBzdGQ6OmFueWAuCiAjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01T
Q19WRVIgPj0gMTkxMCAmJiBcCiAgICAgKChkZWZpbmVkKF9NU1ZDX0xBTkcpICYmIF9NU1ZDX0xB
TkcgPiAyMDE0MDIpIHx8IF9fY3BsdXNwbHVzID4gMjAxNDAyKQogLy8gI2RlZmluZSBBQlNMX0hB
VkVfU1REX0FOWSAxCiAjZGVmaW5lIEFCU0xfSEFWRV9TVERfT1BUSU9OQUwgMQogI2RlZmluZSBB
QlNMX0hBVkVfU1REX1ZBUklBTlQgMQotLy8gI2RlZmluZSBBQlNMX0hBVkVfU1REX1NUUklOR19W
SUVXIDEKKyNkZWZpbmUgQUJTTF9IQVZFX1NURF9TVFJJTkdfVklFVyAxCiAjZW5kaWYKIAogI2Vu
ZGlmICAvLyBBQlNMX0JBU0VfQ09ORklHX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2V4Y2Vw
dGlvbl9zYWZldHlfdGVzdGluZ190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9leGNlcHRpb25fc2FmZXR5
X3Rlc3RpbmdfdGVzdC5jYwppbmRleCA5N2M4ZDZmODMxODk0YTg4MGE5ODRhMWQwZTA5MGUwNDg3
NzI4MmVlLi4xMDZiYzM0YjAwZjdjZTI3YTdiNDM3NTJhZDcxMDY5OWZiYzQ1NWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZ190ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nX3Rlc3QuY2MKQEAgLTM4LDcgKzM4LDcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+CiB2b2lkIEV4cGVjdE5vVGhyb3coY29uc3QgRiYgZikg
ewogICB0cnkgewogICAgIGYoKTsKLSAgfSBjYXRjaCAoVGVzdEV4Y2VwdGlvbiBlKSB7CisgIH0g
Y2F0Y2ggKGNvbnN0IFRlc3RFeGNlcHRpb24mIGUpIHsKICAgICBBRERfRkFJTFVSRSgpIDw8ICJV
bmV4cGVjdGVkIGV4Y2VwdGlvbiB0aHJvd24gZnJvbSAiIDw8IGUud2hhdCgpOwogICB9CiB9CkBA
IC0xNzksNyArMTc5LDcgQEAgVEVTVChUaHJvd2luZ1ZhbHVlVGVzdCwgVGhyb3dpbmdTdHJlYW1P
cHMpIHsKIH0KIAogLy8gVGVzdHMgdGhlIG9wZXJhdG9yPDwgb2YgVGhyb3dpbmdWYWx1ZSBieSBm
b3JjaW5nIENvbnN0cnVjdG9yVHJhY2tlciB0byBlbWl0Ci0vLyBhIG5vbmZhdGFsIGZhaWx1cmUg
dGhhdCBjb250YWlucyB0aGUgc3RkOjpzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFRocm93
ZXIKKy8vIGEgbm9uZmF0YWwgZmFpbHVyZSB0aGF0IGNvbnRhaW5zIHRoZSBzdHJpbmcgcmVwcmVz
ZW50YXRpb24gb2YgdGhlIFRocm93ZXIKIFRFU1QoVGhyb3dpbmdWYWx1ZVRlc3QsIFN0cmVhbU9w
c091dHB1dCkgewogICB1c2luZyA6OnRlc3Rpbmc6OlR5cGVTcGVjOwogICBleGNlcHRpb25zX2lu
dGVybmFsOjpDb25zdHJ1Y3RvclRyYWNrZXIgY3QoZXhjZXB0aW9uc19pbnRlcm5hbDo6Y291bnRk
b3duKTsKQEAgLTU0OCwyMSArNTQ4LDIxIEBAIFRFU1QoRXhjZXB0aW9uU2FmZXR5VGVzdGVyVGVz
dCwgSW5jb21wbGV0ZVR5cGVzQXJlTm90VGVzdGFibGUpIHsKICAgLy8gVGVzdCB0aGF0IHByb3Zp
ZGluZyBvcGVyYXRpb24gYW5kIGludmVyaWFudHMgc3RpbGwgZG9lcyBub3QgYWxsb3cgZm9yIHRo
ZQogICAvLyB0aGUgaW52b2NhdGlvbiBvZiAuVGVzdCgpIGFuZCAuVGVzdChvcCkgYmVjYXVzZSBp
dCBsYWNrcyBhIGZhY3RvcnkKICAgYXV0byB3aXRob3V0X2ZhYyA9Ci0gICAgICB0ZXN0aW5nOjpN
YWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aE9wZXJhdGlvbihvcCkuV2l0aEludmFyaWFu
dHMoCisgICAgICB0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aE9wZXJh
dGlvbihvcCkuV2l0aENvbnRyYWN0cygKICAgICAgICAgICBpbnYsIHRlc3Rpbmc6OnN0cm9uZ19n
dWFyYW50ZWUpOwogICBFWFBFQ1RfRkFMU0UoSGFzTnVsbGFyeVRlc3Qod2l0aG91dF9mYWMpKTsK
ICAgRVhQRUNUX0ZBTFNFKEhhc1VuYXJ5VGVzdCh3aXRob3V0X2ZhYykpOwogCi0gIC8vIFRlc3Qg
dGhhdCBwcm92aWRpbmcgaW52YXJpYW50cyBhbmQgZmFjdG9yeSBhbGxvd3MgdGhlIGludm9jYXRp
b24gb2YKKyAgLy8gVGVzdCB0aGF0IHByb3ZpZGluZyBjb250cmFjdHMgYW5kIGZhY3RvcnkgYWxs
b3dzIHRoZSBpbnZvY2F0aW9uIG9mCiAgIC8vIC5UZXN0KG9wKSBidXQgZG9lcyBub3QgYWxsb3cg
Zm9yIC5UZXN0KCkgYmVjYXVzZSBpdCBsYWNrcyBhbiBvcGVyYXRpb24KICAgYXV0byB3aXRob3V0
X29wID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAuV2l0aEludmFyaWFudHMoaW52LCB0ZXN0aW5nOjpzdHJvbmdfZ3VhcmFudGVl
KQorICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoaW52LCB0ZXN0aW5nOjpz
dHJvbmdfZ3VhcmFudGVlKQogICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhGYWN0b3J5KGZh
Yyk7CiAgIEVYUEVDVF9GQUxTRShIYXNOdWxsYXJ5VGVzdCh3aXRob3V0X29wKSk7CiAgIEVYUEVD
VF9UUlVFKEhhc1VuYXJ5VGVzdCh3aXRob3V0X29wKSk7CiAKICAgLy8gVGVzdCB0aGF0IHByb3Zp
ZGluZyBvcGVyYXRpb24gYW5kIGZhY3Rvcnkgc3RpbGwgZG9lcyBub3QgYWxsb3cgZm9yIHRoZQot
ICAvLyB0aGUgaW52b2NhdGlvbiBvZiAuVGVzdCgpIGFuZCAuVGVzdChvcCkgYmVjYXVzZSBpdCBs
YWNrcyBpbnZhcmlhbnRzCisgIC8vIHRoZSBpbnZvY2F0aW9uIG9mIC5UZXN0KCkgYW5kIC5UZXN0
KG9wKSBiZWNhdXNlIGl0IGxhY2tzIGNvbnRyYWN0cwogICBhdXRvIHdpdGhvdXRfaW52ID0KICAg
ICAgIHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoT3BlcmF0aW9uKG9w
KS5XaXRoRmFjdG9yeShmYWMpOwogICBFWFBFQ1RfRkFMU0UoSGFzTnVsbGFyeVRlc3Qod2l0aG91
dF9pbnYpKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RXhhbXBsZVN0cnVj
dD4gRXhhbXBsZUZ1bmN0aW9uRmFjdG9yeSgpIHsKIAogdm9pZCBFeGFtcGxlRnVuY3Rpb25PcGVy
YXRpb24oRXhhbXBsZVN0cnVjdCopIHt9CiAKLXRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBFeGFt
cGxlRnVuY3Rpb25JbnZhcmlhbnQoRXhhbXBsZVN0cnVjdCopIHsKK3Rlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdCBFeGFtcGxlRnVuY3Rpb25Db250cmFjdChFeGFtcGxlU3RydWN0KikgewogICByZXR1
cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogfQogCkBAIC01OTMsMTYgKzU5MywxNiBA
QCBzdHJ1Y3QgewogCiBzdHJ1Y3QgewogICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgb3BlcmF0
b3IoKShFeGFtcGxlU3RydWN0KiBleGFtcGxlX3N0cnVjdCkgY29uc3QgewotICAgIHJldHVybiBF
eGFtcGxlRnVuY3Rpb25JbnZhcmlhbnQoZXhhbXBsZV9zdHJ1Y3QpOworICAgIHJldHVybiBFeGFt
cGxlRnVuY3Rpb25Db250cmFjdChleGFtcGxlX3N0cnVjdCk7CiAgIH0KLX0gZXhhbXBsZV9zdHJ1
Y3RfaW52YXJpYW50OworfSBleGFtcGxlX3N0cnVjdF9jb250cmFjdDsKIAogYXV0byBleGFtcGxl
X2xhbWJkYV9mYWN0b3J5ID0gW10oKSB7IHJldHVybiBFeGFtcGxlRnVuY3Rpb25GYWN0b3J5KCk7
IH07CiAKIGF1dG8gZXhhbXBsZV9sYW1iZGFfb3BlcmF0aW9uID0gW10oRXhhbXBsZVN0cnVjdCop
IHt9OwogCi1hdXRvIGV4YW1wbGVfbGFtYmRhX2ludmFyaWFudCA9IFtdKEV4YW1wbGVTdHJ1Y3Qq
IGV4YW1wbGVfc3RydWN0KSB7Ci0gIHJldHVybiBFeGFtcGxlRnVuY3Rpb25JbnZhcmlhbnQoZXhh
bXBsZV9zdHJ1Y3QpOworYXV0byBleGFtcGxlX2xhbWJkYV9jb250cmFjdCA9IFtdKEV4YW1wbGVT
dHJ1Y3QqIGV4YW1wbGVfc3RydWN0KSB7CisgIHJldHVybiBFeGFtcGxlRnVuY3Rpb25Db250cmFj
dChleGFtcGxlX3N0cnVjdCk7CiB9OwogCiAvLyBUZXN0aW5nIHRoYXQgZnVuY3Rpb24gcmVmZXJl
bmNlcywgcG9pbnRlcnMsIHN0cnVjdHMgd2l0aCBvcGVyYXRvcigpIGFuZApAQCAtNjEyLDI4ICs2
MTIsMjggQEAgVEVTVChFeGNlcHRpb25TYWZldHlUZXN0ZXJUZXN0LCBNaXhlZEZ1bmN0aW9uVHlw
ZXMpIHsKICAgRVhQRUNUX1RSVUUodGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3Rlcigp
CiAgICAgICAgICAgICAgICAgICAuV2l0aEZhY3RvcnkoRXhhbXBsZUZ1bmN0aW9uRmFjdG9yeSkK
ICAgICAgICAgICAgICAgICAgIC5XaXRoT3BlcmF0aW9uKEV4YW1wbGVGdW5jdGlvbk9wZXJhdGlv
bikKLSAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhFeGFtcGxlRnVuY3Rpb25JbnZh
cmlhbnQpCisgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhFeGFtcGxlRnVuY3Rpb25D
b250cmFjdCkKICAgICAgICAgICAgICAgICAgIC5UZXN0KCkpOwogCiAgIC8vIGZ1bmN0aW9uIHBv
aW50ZXIKICAgRVhQRUNUX1RSVUUodGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3Rlcigp
CiAgICAgICAgICAgICAgICAgICAuV2l0aEZhY3RvcnkoJkV4YW1wbGVGdW5jdGlvbkZhY3Rvcnkp
CiAgICAgICAgICAgICAgICAgICAuV2l0aE9wZXJhdGlvbigmRXhhbXBsZUZ1bmN0aW9uT3BlcmF0
aW9uKQotICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKCZFeGFtcGxlRnVuY3Rpb25J
bnZhcmlhbnQpCisgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cygmRXhhbXBsZUZ1bmN0
aW9uQ29udHJhY3QpCiAgICAgICAgICAgICAgICAgICAuVGVzdCgpKTsKIAogICAvLyBzdHJ1Y3QK
ICAgRVhQRUNUX1RSVUUodGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAg
ICAgICAgICAgICAgICAuV2l0aEZhY3RvcnkoZXhhbXBsZV9zdHJ1Y3RfZmFjdG9yeSkKICAgICAg
ICAgICAgICAgICAgIC5XaXRoT3BlcmF0aW9uKGV4YW1wbGVfc3RydWN0X29wZXJhdGlvbikKLSAg
ICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhleGFtcGxlX3N0cnVjdF9pbnZhcmlhbnQp
CisgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhleGFtcGxlX3N0cnVjdF9jb250cmFj
dCkKICAgICAgICAgICAgICAgICAgIC5UZXN0KCkpOwogCiAgIC8vIGxhbWJkYQogICBFWFBFQ1Rf
VFJVRSh0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAg
ICAgIC5XaXRoRmFjdG9yeShleGFtcGxlX2xhbWJkYV9mYWN0b3J5KQogICAgICAgICAgICAgICAg
ICAgLldpdGhPcGVyYXRpb24oZXhhbXBsZV9sYW1iZGFfb3BlcmF0aW9uKQotICAgICAgICAgICAg
ICAgICAgLldpdGhJbnZhcmlhbnRzKGV4YW1wbGVfbGFtYmRhX2ludmFyaWFudCkKKyAgICAgICAg
ICAgICAgICAgIC5XaXRoQ29udHJhY3RzKGV4YW1wbGVfbGFtYmRhX2NvbnRyYWN0KQogICAgICAg
ICAgICAgICAgICAgLlRlc3QoKSk7CiB9CiAKQEAgLTY1OCw5ICs2NTgsOSBAQCBzdHJ1Y3Qgewog
fSBpbnZva2VyOwogCiBhdXRvIHRlc3RlciA9Ci0gICAgdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNh
ZmV0eVRlc3RlcigpLldpdGhPcGVyYXRpb24oaW52b2tlcikuV2l0aEludmFyaWFudHMoCisgICAg
dGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpLldpdGhPcGVyYXRpb24oaW52b2tl
cikuV2l0aENvbnRyYWN0cygKICAgICAgICAgQ2hlY2tOb25OZWdhdGl2ZUludmFyaWFudHMpOwot
YXV0byBzdHJvbmdfdGVzdGVyID0gdGVzdGVyLldpdGhJbnZhcmlhbnRzKHRlc3Rpbmc6OnN0cm9u
Z19ndWFyYW50ZWUpOworYXV0byBzdHJvbmdfdGVzdGVyID0gdGVzdGVyLldpdGhDb250cmFjdHMo
dGVzdGluZzo6c3Ryb25nX2d1YXJhbnRlZSk7CiAKIHN0cnVjdCBGYWlsc0Jhc2ljR3VhcmFudGVl
IDogcHVibGljIE5vbk5lZ2F0aXZlIHsKICAgdm9pZCBvcGVyYXRvcigpKCkgewpAQCAtNjkwLDcg
KzY5MCw3IEBAIFRFU1QoRXhjZXB0aW9uQ2hlY2tUZXN0LCBTdHJvbmdHdWFyYW50ZWVGYWlsdXJl
KSB7CiAgIEVYUEVDVF9GQUxTRShzdHJvbmdfdGVzdGVyLldpdGhJbml0aWFsVmFsdWUoRm9sbG93
c0Jhc2ljR3VhcmFudGVle30pLlRlc3QoKSk7CiB9CiAKLXN0cnVjdCBCYXNpY0d1YXJhbnRlZVdp
dGhFeHRyYUludmFyaWFudHMgOiBwdWJsaWMgTm9uTmVnYXRpdmUgeworc3RydWN0IEJhc2ljR3Vh
cmFudGVlV2l0aEV4dHJhQ29udHJhY3RzIDogcHVibGljIE5vbk5lZ2F0aXZlIHsKICAgLy8gQWZ0
ZXIgb3BlcmF0b3IoKSwgaSBpcyBpbmNyZW1lbnRlZC4gIElmIG9wZXJhdG9yKCkgdGhyb3dzLCBp
IGlzIHNldCB0byA5OTk5CiAgIHZvaWQgb3BlcmF0b3IoKSgpIHsKICAgICBpbnQgb2xkX2kgPSBp
OwpAQCAtNzAxLDIxICs3MDEsMjEgQEAgc3RydWN0IEJhc2ljR3VhcmFudGVlV2l0aEV4dHJhSW52
YXJpYW50cyA6IHB1YmxpYyBOb25OZWdhdGl2ZSB7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
a0V4Y2VwdGlvblNlbnRpbmVsID0gOTk5OTsKIH07Ci1jb25zdGV4cHIgaW50IEJhc2ljR3VhcmFu
dGVlV2l0aEV4dHJhSW52YXJpYW50czo6a0V4Y2VwdGlvblNlbnRpbmVsOworY29uc3RleHByIGlu
dCBCYXNpY0d1YXJhbnRlZVdpdGhFeHRyYUNvbnRyYWN0czo6a0V4Y2VwdGlvblNlbnRpbmVsOwog
Ci1URVNUKEV4Y2VwdGlvbkNoZWNrVGVzdCwgQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFJbnZhcmlh
bnRzKSB7CitURVNUKEV4Y2VwdGlvbkNoZWNrVGVzdCwgQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFD
b250cmFjdHMpIHsKICAgYXV0byB0ZXN0ZXJfd2l0aF92YWwgPQotICAgICAgdGVzdGVyLldpdGhJ
bml0aWFsVmFsdWUoQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFJbnZhcmlhbnRze30pOworICAgICAg
dGVzdGVyLldpdGhJbml0aWFsVmFsdWUoQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFDb250cmFjdHN7
fSk7CiAgIEVYUEVDVF9UUlVFKHRlc3Rlcl93aXRoX3ZhbC5UZXN0KCkpOwogICBFWFBFQ1RfVFJV
RSgKICAgICAgIHRlc3Rlcl93aXRoX3ZhbAotICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhbXShC
YXNpY0d1YXJhbnRlZVdpdGhFeHRyYUludmFyaWFudHMqIG8pIHsKLSAgICAgICAgICAgIGlmIChv
LT5pID09IEJhc2ljR3VhcmFudGVlV2l0aEV4dHJhSW52YXJpYW50czo6a0V4Y2VwdGlvblNlbnRp
bmVsKSB7CisgICAgICAgICAgLldpdGhDb250cmFjdHMoW10oQmFzaWNHdWFyYW50ZWVXaXRoRXh0
cmFDb250cmFjdHMqIG8pIHsKKyAgICAgICAgICAgIGlmIChvLT5pID09IEJhc2ljR3VhcmFudGVl
V2l0aEV4dHJhQ29udHJhY3RzOjprRXhjZXB0aW9uU2VudGluZWwpIHsKICAgICAgICAgICAgICAg
cmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKICAgICAgICAgICAgICAg
ICAgICA8PCAiaSBzaG91bGQgYmUgIgotICAgICAgICAgICAgICAgICAgIDw8IEJhc2ljR3VhcmFu
dGVlV2l0aEV4dHJhSW52YXJpYW50czo6a0V4Y2VwdGlvblNlbnRpbmVsCisgICAgICAgICAgICAg
ICAgICAgPDwgQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFDb250cmFjdHM6OmtFeGNlcHRpb25TZW50
aW5lbAogICAgICAgICAgICAgICAgICAgIDw8ICIsIGJ1dCBpcyAiIDw8IG8tPmk7CiAgICAgICAg
ICAgfSkKICAgICAgICAgICAuVGVzdCgpKTsKQEAgLTc0MCw3ICs3NDAsNyBAQCBzdHJ1Y3QgSGFz
UmVzZXQgOiBwdWJsaWMgTm9uTmVnYXRpdmUgewogICB2b2lkIHJlc2V0KCkgeyBpID0gMDsgfQog
fTsKIAotdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IENoZWNrSGFzUmVzZXRJbnZhcmlhbnRzKEhh
c1Jlc2V0KiBoKSB7Cit0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgQ2hlY2tIYXNSZXNldENvbnRy
YWN0cyhIYXNSZXNldCogaCkgewogICBoLT5yZXNldCgpOwogICByZXR1cm4gdGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0KGgtPmkgPT0gMCk7CiB9CkBAIC03NTksMTQgKzc1OSwxNCBAQCBURVNUKEV4
Y2VwdGlvbkNoZWNrVGVzdCwgTW9kaWZ5aW5nQ2hlY2tlcikgewogICB9OwogCiAgIEVYUEVDVF9G
QUxTRSh0ZXN0ZXIuV2l0aEluaXRpYWxWYWx1ZShGb2xsb3dzQmFzaWNHdWFyYW50ZWV7fSkKLSAg
ICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoc2V0X3RvXzEwMDAsIGlzXzEwMDApCisg
ICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoc2V0X3RvXzEwMDAsIGlzXzEwMDApCiAg
ICAgICAgICAgICAgICAgICAgLlRlc3QoKSk7CiAgIEVYUEVDVF9UUlVFKHN0cm9uZ190ZXN0ZXIu
V2l0aEluaXRpYWxWYWx1ZShGb2xsb3dzU3Ryb25nR3VhcmFudGVle30pCi0gICAgICAgICAgICAg
ICAgICAuV2l0aEludmFyaWFudHMoaW5jcmVtZW50KQorICAgICAgICAgICAgICAgICAgLldpdGhD
b250cmFjdHMoaW5jcmVtZW50KQogICAgICAgICAgICAgICAgICAgLlRlc3QoKSk7CiAgIEVYUEVD
VF9UUlVFKHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAg
ICAgICAgLldpdGhJbml0aWFsVmFsdWUoSGFzUmVzZXR7fSkKLSAgICAgICAgICAgICAgICAgIC5X
aXRoSW52YXJpYW50cyhDaGVja0hhc1Jlc2V0SW52YXJpYW50cykKKyAgICAgICAgICAgICAgICAg
IC5XaXRoQ29udHJhY3RzKENoZWNrSGFzUmVzZXRDb250cmFjdHMpCiAgICAgICAgICAgICAgICAg
ICAuVGVzdChpbnZva2VyKSk7CiB9CiAKQEAgLTc5OSw3ICs3OTksNyBAQCBURVNUKEV4Y2VwdGlv
bkNoZWNrVGVzdCwgTm9uRXF1YWxpdHlDb21wYXJhYmxlKSB7CiAgICAgcmV0dXJuIHRlc3Rpbmc6
OkFzc2VydGlvblJlc3VsdChuZWMtPmkgPT0gTm9uRXF1YWxpdHlDb21wYXJhYmxlKCkuaSk7CiAg
IH07CiAgIGF1dG8gc3Ryb25nX25lY190ZXN0ZXIgPSB0ZXN0ZXIuV2l0aEluaXRpYWxWYWx1ZShO
b25FcXVhbGl0eUNvbXBhcmFibGV7fSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu
V2l0aEludmFyaWFudHMobmVjX2lzX3N0cm9uZyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLldpdGhDb250cmFjdHMobmVjX2lzX3N0cm9uZyk7CiAKICAgRVhQRUNUX1RSVUUoc3Ry
b25nX25lY190ZXN0ZXIuVGVzdCgpKTsKICAgRVhQRUNUX0ZBTFNFKHN0cm9uZ19uZWNfdGVzdGVy
LlRlc3QoCkBAIC04MzMsMTQgKzgzMywxNCBAQCBzdHJ1Y3QgewogICB0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHQgb3BlcmF0b3IoKShFeGhhdXN0aXZlbmVzc1Rlc3RlcjxUPiopIGNvbnN0IHsKICAg
ICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogICB9Ci19IENoZWNrRXhoYXVz
dGl2ZW5lc3NUZXN0ZXJJbnZhcmlhbnRzOworfSBDaGVja0V4aGF1c3RpdmVuZXNzVGVzdGVyQ29u
dHJhY3RzOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHVuc2lnbmVkIGNoYXIgRXhoYXVzdGl2
ZW5lc3NUZXN0ZXI8VD46OnN1Y2Nlc3NlcyA9IDA7CiAKIFRFU1QoRXhjZXB0aW9uQ2hlY2tUZXN0
LCBFeGhhdXN0aXZlbmVzcykgewogICBhdXRvIGV4aGF1c3RfdGVzdGVyID0gdGVzdGluZzo6TWFr
ZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLldp
dGhJbnZhcmlhbnRzKENoZWNrRXhoYXVzdGl2ZW5lc3NUZXN0ZXJJbnZhcmlhbnRzKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKENoZWNrRXhoYXVzdGl2ZW5lc3NU
ZXN0ZXJDb250cmFjdHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhPcGVyYXRp
b24oaW52b2tlcik7CiAKICAgRVhQRUNUX1RSVUUoCkBAIC04NDksNyArODQ5LDcgQEAgVEVTVChF
eGNlcHRpb25DaGVja1Rlc3QsIEV4aGF1c3RpdmVuZXNzKSB7CiAKICAgRVhQRUNUX1RSVUUoCiAg
ICAgICBleGhhdXN0X3Rlc3Rlci5XaXRoSW5pdGlhbFZhbHVlKEV4aGF1c3RpdmVuZXNzVGVzdGVy
PFRocm93aW5nVmFsdWU8Pj57fSkKLSAgICAgICAgICAuV2l0aEludmFyaWFudHModGVzdGluZzo6
c3Ryb25nX2d1YXJhbnRlZSkKKyAgICAgICAgICAuV2l0aENvbnRyYWN0cyh0ZXN0aW5nOjpzdHJv
bmdfZ3VhcmFudGVlKQogICAgICAgICAgIC5UZXN0KCkpOwogICBFWFBFQ1RfRVEoRXhoYXVzdGl2
ZW5lc3NUZXN0ZXI8VGhyb3dpbmdWYWx1ZTw+Pjo6c3VjY2Vzc2VzLCAweEYpOwogfQpAQCAtOTMx
LDggKzkzMSw4IEBAIFRFU1QoVGhyb3dpbmdWYWx1ZVRyYWl0c1Rlc3QsIFJlbGF0aW9uYWxPcGVy
YXRvcnMpIHsKIH0KIAogVEVTVChUaHJvd2luZ0FsbG9jYXRvclRyYWl0c1Rlc3QsIEFzc2lnbmFi
bGlsaXR5KSB7Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPFRocm93aW5n
QWxsb2NhdG9yPGludD4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6aXNfY29weV9hc3Np
Z25hYmxlPFRocm93aW5nQWxsb2NhdG9yPGludD4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX21vdmVfYXNzaWduYWJsZTxUaHJvd2luZ0FsbG9jYXRvcjxpbnQ+Pjo6dmFsdWUpOwor
ICBFWFBFQ1RfVFJVRShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8VGhyb3dpbmdBbGxvY2F0b3I8
aW50Pj46OnZhbHVlKTsKICAgRVhQRUNUX1RSVUUoc3RkOjppc19ub3Rocm93X21vdmVfYXNzaWdu
YWJsZTxUaHJvd2luZ0FsbG9jYXRvcjxpbnQ+Pjo6dmFsdWUpOwogICBFWFBFQ1RfVFJVRShzdGQ6
OmlzX25vdGhyb3dfY29weV9hc3NpZ25hYmxlPFRocm93aW5nQWxsb2NhdG9yPGludD4+Ojp2YWx1
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvYml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjN2ZhYWVlM2IyNTdlZGMzN2NkOTA5MGI3
Nzc3ZDcwMzVkM2MzYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2Jp
dHMuaApAQCAtMCwwICsxLDE5MyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKworI2lmbmRlZiBBQlNMX0JBU0VfSU5URVJOQUxfQklUU19IXworI2RlZmluZSBBQlNM
X0JBU0VfSU5URVJOQUxfQklUU19IXworCisvLyBUaGlzIGZpbGUgY29udGFpbnMgYml0d2lzZSBv
cHMgd2hpY2ggYXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdmFyaW91cworLy8gYWJzbCBs
aWJyYXJpZXMuCisKKyNpbmNsdWRlIDxjc3RkaW50PgorCisvLyBDbGFuZyBvbiBXaW5kb3dzIGhh
cyBfX2J1aWx0aW5fY2x6bGw7IG90aGVyd2lzZSB3ZSBuZWVkIHRvIHVzZSB0aGUKKy8vIHdpbmRv
d3MgaW50cmluc2ljIGZ1bmN0aW9ucy4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2luY2x1ZGUg
PGludHJpbi5oPgorI2lmIGRlZmluZWQoX01fWDY0KQorI3ByYWdtYSBpbnRyaW5zaWMoX0JpdFNj
YW5SZXZlcnNlNjQpCisjcHJhZ21hIGludHJpbnNpYyhfQml0U2NhbkZvcndhcmQ2NCkKKyNlbmRp
ZgorI3ByYWdtYSBpbnRyaW5zaWMoX0JpdFNjYW5SZXZlcnNlKQorI3ByYWdtYSBpbnRyaW5zaWMo
X0JpdFNjYW5Gb3J3YXJkKQorI2VuZGlmCisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRl
cy5oIgorCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIFdlIGNhbiBhY2hpZXZlIHNvbWV0aGlu
ZyBzaW1pbGFyIHRvIGF0dHJpYnV0ZSgoYWx3YXlzX2lubGluZSkpIHdpdGggTVNWQyBieQorLy8g
dXNpbmcgdGhlIF9fZm9yY2VpbmxpbmUga2V5d29yZCwgaG93ZXZlciB0aGlzIGlzIG5vdCBwZXJm
ZWN0LiBNU1ZDIGlzCisvLyBtdWNoIGxlc3MgYWdncmVzc2l2ZSBhYm91dCBpbmxpbmluZywgYW5k
IGV2ZW4gd2l0aCB0aGUgX19mb3JjZWlubGluZSBrZXl3b3JkLgorI2RlZmluZSBBQlNMX0JBU0Vf
SU5URVJOQUxfRk9SQ0VJTkxJTkUgX19mb3JjZWlubGluZQorI2Vsc2UKKy8vIFVzZSBkZWZhdWx0
IGF0dHJpYnV0ZSBpbmxpbmUuCisjZGVmaW5lIEFCU0xfQkFTRV9JTlRFUk5BTF9GT1JDRUlOTElO
RSBpbmxpbmUgQUJTTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQorI2VuZGlmCisKKworbmFtZXNw
YWNlIGFic2wgeworbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgeworCitBQlNMX0JBU0VfSU5URVJO
QUxfRk9SQ0VJTkxJTkUgaW50IENvdW50TGVhZGluZ1plcm9zNjRTbG93KHVpbnQ2NF90IG4pIHsK
KyAgaW50IHplcm9lcyA9IDYwOworICBpZiAobiA+PiAzMikgemVyb2VzIC09IDMyLCBuID4+PSAz
MjsKKyAgaWYgKG4gPj4gMTYpIHplcm9lcyAtPSAxNiwgbiA+Pj0gMTY7CisgIGlmIChuID4+IDgp
IHplcm9lcyAtPSA4LCBuID4+PSA4OworICBpZiAobiA+PiA0KSB6ZXJvZXMgLT0gNCwgbiA+Pj0g
NDsKKyAgcmV0dXJuICJcNFwzXDJcMlwxXDFcMVwxXDBcMFwwXDBcMFwwXDAiW25dICsgemVyb2Vz
OworfQorCitBQlNMX0JBU0VfSU5URVJOQUxfRk9SQ0VJTkxJTkUgaW50IENvdW50TGVhZGluZ1pl
cm9zNjQodWludDY0X3QgbikgeworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQoX01f
WDY0KQorICAvLyBNU1ZDIGRvZXMgbm90IGhhdmUgX19idWl0aW5fY2x6bGwuIFVzZSBfQml0U2Nh
blJldmVyc2U2NC4KKyAgdW5zaWduZWQgbG9uZyByZXN1bHQgPSAwOyAgLy8gTk9MSU5UKHJ1bnRp
bWUvaW50KQorICBpZiAoX0JpdFNjYW5SZXZlcnNlNjQoJnJlc3VsdCwgbikpIHsKKyAgICByZXR1
cm4gNjMgLSByZXN1bHQ7CisgIH0KKyAgcmV0dXJuIDY0OworI2VsaWYgZGVmaW5lZChfTVNDX1ZF
UikKKyAgLy8gTVNWQyBkb2VzIG5vdCBoYXZlIF9fYnVpdGluX2NsemxsLiBDb21wb3NlIHR3byBj
YWxscyB0byBfQml0U2NhblJldmVyc2UKKyAgdW5zaWduZWQgbG9uZyByZXN1bHQgPSAwOyAgLy8g
Tk9MSU5UKHJ1bnRpbWUvaW50KQorICBpZiAoKG4gPj4gMzIpICYmIF9CaXRTY2FuUmV2ZXJzZSgm
cmVzdWx0LCBuID4+IDMyKSkgeworICAgIHJldHVybiAzMSAtIHJlc3VsdDsKKyAgfQorICBpZiAo
X0JpdFNjYW5SZXZlcnNlKCZyZXN1bHQsIG4pKSB7CisgICAgcmV0dXJuIDYzIC0gcmVzdWx0Owor
ICB9CisgIHJldHVybiA2NDsKKyNlbGlmIGRlZmluZWQoX19HTlVDX18pCisgIC8vIFVzZSBfX2J1
aWx0aW5fY2x6bGwsIHdoaWNoIHVzZXMgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbnM6CisgIC8v
ICB4ODY6IGJzcgorICAvLyAgQVJNNjQ6IGNsegorICAvLyAgUFBDOiBjbnRsemQKKyAgc3RhdGlj
X2Fzc2VydChzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSA9PSBzaXplb2YobiksICAvLyBOT0xJ
TlQocnVudGltZS9pbnQpCisgICAgICAgICAgICAgICAgIl9fYnVpbHRpbl9jbHpsbCBkb2VzIG5v
dCB0YWtlIDY0LWJpdCBhcmciKTsKKworICAvLyBIYW5kbGUgMCBhcyBhIHNwZWNpYWwgY2FzZSBi
ZWNhdXNlIF9fYnVpbHRpbl9jbHpsbCgwKSBpcyB1bmRlZmluZWQuCisgIGlmIChuID09IDApIHsK
KyAgICByZXR1cm4gNjQ7CisgIH0KKyAgcmV0dXJuIF9fYnVpbHRpbl9jbHpsbChuKTsKKyNlbHNl
CisgIHJldHVybiBDb3VudExlYWRpbmdaZXJvczY0U2xvdyhuKTsKKyNlbmRpZgorfQorCitBQlNM
X0JBU0VfSU5URVJOQUxfRk9SQ0VJTkxJTkUgaW50IENvdW50TGVhZGluZ1plcm9zMzJTbG93KHVp
bnQ2NF90IG4pIHsKKyAgaW50IHplcm9lcyA9IDI4OworICBpZiAobiA+PiAxNikgemVyb2VzIC09
IDE2LCBuID4+PSAxNjsKKyAgaWYgKG4gPj4gOCkgemVyb2VzIC09IDgsIG4gPj49IDg7CisgIGlm
IChuID4+IDQpIHplcm9lcyAtPSA0LCBuID4+PSA0OworICByZXR1cm4gIlw0XDNcMlwyXDFcMVwx
XDFcMFwwXDBcMFwwXDBcMCJbbl0gKyB6ZXJvZXM7Cit9CisKK0FCU0xfQkFTRV9JTlRFUk5BTF9G
T1JDRUlOTElORSBpbnQgQ291bnRMZWFkaW5nWmVyb3MzMih1aW50MzJfdCBuKSB7CisjaWYgZGVm
aW5lZChfTVNDX1ZFUikKKyAgdW5zaWduZWQgbG9uZyByZXN1bHQgPSAwOyAgLy8gTk9MSU5UKHJ1
bnRpbWUvaW50KQorICBpZiAoX0JpdFNjYW5SZXZlcnNlKCZyZXN1bHQsIG4pKSB7CisgICAgcmV0
dXJuIDMxIC0gcmVzdWx0OworICB9CisgIHJldHVybiAzMjsKKyNlbGlmIGRlZmluZWQoX19HTlVD
X18pCisgIC8vIFVzZSBfX2J1aWx0aW5fY2x6LCB3aGljaCB1c2VzIHRoZSBmb2xsb3dpbmcgaW5z
dHJ1Y3Rpb25zOgorICAvLyAgeDg2OiBic3IKKyAgLy8gIEFSTTY0OiBjbHoKKyAgLy8gIFBQQzog
Y250bHpkCisgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGludCkgPT0gc2l6ZW9mKG4pLAorICAgICAg
ICAgICAgICAgICJfX2J1aWx0aW5fY2x6IGRvZXMgbm90IHRha2UgMzItYml0IGFyZyIpOworCisg
IC8vIEhhbmRsZSAwIGFzIGEgc3BlY2lhbCBjYXNlIGJlY2F1c2UgX19idWlsdGluX2NseigwKSBp
cyB1bmRlZmluZWQuCisgIGlmIChuID09IDApIHsKKyAgICByZXR1cm4gMzI7CisgIH0KKyAgcmV0
dXJuIF9fYnVpbHRpbl9jbHoobik7CisjZWxzZQorICByZXR1cm4gQ291bnRMZWFkaW5nWmVyb3Mz
MlNsb3cobik7CisjZW5kaWYKK30KKworQUJTTF9CQVNFX0lOVEVSTkFMX0ZPUkNFSU5MSU5FIGlu
dCBDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvNjRTbG93KHVpbnQ2NF90IG4pIHsKKyAgaW50IGMg
PSA2MzsKKyAgbiAmPSB+biArIDE7CisgIGlmIChuICYgMHgwMDAwMDAwMEZGRkZGRkZGKSBjIC09
IDMyOworICBpZiAobiAmIDB4MDAwMEZGRkYwMDAwRkZGRikgYyAtPSAxNjsKKyAgaWYgKG4gJiAw
eDAwRkYwMEZGMDBGRjAwRkYpIGMgLT0gODsKKyAgaWYgKG4gJiAweDBGMEYwRjBGMEYwRjBGMEYp
IGMgLT0gNDsKKyAgaWYgKG4gJiAweDMzMzMzMzMzMzMzMzMzMzMpIGMgLT0gMjsKKyAgaWYgKG4g
JiAweDU1NTU1NTU1NTU1NTU1NTUpIGMgLT0gMTsKKyAgcmV0dXJuIGM7Cit9CisKK0FCU0xfQkFT
RV9JTlRFUk5BTF9GT1JDRUlOTElORSBpbnQgQ291bnRUcmFpbGluZ1plcm9zTm9uWmVybzY0KHVp
bnQ2NF90IG4pIHsKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9NX1g2NCkKKyAg
dW5zaWduZWQgbG9uZyByZXN1bHQgPSAwOyAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQorICBfQml0
U2NhbkZvcndhcmQ2NCgmcmVzdWx0LCBuKTsKKyAgcmV0dXJuIHJlc3VsdDsKKyNlbGlmIGRlZmlu
ZWQoX01TQ19WRVIpCisgIHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsgIC8vIE5PTElOVChydW50
aW1lL2ludCkKKyAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihuKSA9PSAwKSB7CisgICAgX0Jp
dFNjYW5Gb3J3YXJkKCZyZXN1bHQsIG4gPj4gMzIpOworICAgIHJldHVybiByZXN1bHQgKyAzMjsK
KyAgfQorICBfQml0U2NhbkZvcndhcmQoJnJlc3VsdCwgbik7CisgIHJldHVybiByZXN1bHQ7Cisj
ZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorICBzdGF0aWNfYXNzZXJ0KHNpemVvZih1bnNpZ25lZCBs
b25nIGxvbmcpID09IHNpemVvZihuKSwgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgICAgICAg
ICAgICAgICAiX19idWlsdGluX2N0emxsIGRvZXMgbm90IHRha2UgNjQtYml0IGFyZyIpOworICBy
ZXR1cm4gX19idWlsdGluX2N0emxsKG4pOworI2Vsc2UKKyAgcmV0dXJuIENvdW50VHJhaWxpbmda
ZXJvc05vblplcm82NFNsb3cobik7CisjZW5kaWYKK30KKworQUJTTF9CQVNFX0lOVEVSTkFMX0ZP
UkNFSU5MSU5FIGludCBDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvMzJTbG93KHVpbnQzMl90IG4p
IHsKKyAgaW50IGMgPSAzMTsKKyAgbiAmPSB+biArIDE7CisgIGlmIChuICYgMHgwMDAwRkZGRikg
YyAtPSAxNjsKKyAgaWYgKG4gJiAweDAwRkYwMEZGKSBjIC09IDg7CisgIGlmIChuICYgMHgwRjBG
MEYwRikgYyAtPSA0OworICBpZiAobiAmIDB4MzMzMzMzMzMpIGMgLT0gMjsKKyAgaWYgKG4gJiAw
eDU1NTU1NTU1KSBjIC09IDE7CisgIHJldHVybiBjOworfQorCitBQlNMX0JBU0VfSU5URVJOQUxf
Rk9SQ0VJTkxJTkUgaW50IENvdW50VHJhaWxpbmdaZXJvc05vblplcm8zMih1aW50MzJfdCBuKSB7
CisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgdW5zaWduZWQgbG9uZyByZXN1bHQgPSAwOyAgLy8g
Tk9MSU5UKHJ1bnRpbWUvaW50KQorICBfQml0U2NhbkZvcndhcmQoJnJlc3VsdCwgbik7CisgIHJl
dHVybiByZXN1bHQ7CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihpbnQpID09IHNpemVvZihuKSwKKyAgICAgICAgICAgICAgICAiX19idWlsdGluX2N0eiBk
b2VzIG5vdCB0YWtlIDMyLWJpdCBhcmciKTsKKyAgcmV0dXJuIF9fYnVpbHRpbl9jdHoobik7Cisj
ZWxzZQorICByZXR1cm4gQ291bnRUcmFpbGluZ1plcm9zTm9uWmVybzMyU2xvdyhuKTsKKyNlbmRp
ZgorfQorCisjdW5kZWYgQUJTTF9CQVNFX0lOVEVSTkFMX0ZPUkNFSU5MSU5FCisKK30gIC8vIG5h
bWVzcGFjZSBiYXNlX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8v
IEFCU0xfQkFTRV9JTlRFUk5BTF9CSVRTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy
bmFsL2JpdHNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvYml0c190ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU1ZDk5MWQ2NzI1ODc0YWE5ZGI4MDNiMTUxMTc4MTdhYTMwODZiNTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHNfdGVzdC5jYwpAQCAtMCwwICsxLDk3
IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAi
YWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisK
K25hbWVzcGFjZSB7CisKK2ludCBDTFo2NCh1aW50NjRfdCBuKSB7CisgIGludCBmYXN0ID0gYWJz
bDo6YmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChuKTsKKyAgaW50IHNsb3cgPSBh
YnNsOjpiYXNlX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0U2xvdyhuKTsKKyAgRVhQRUNU
X0VRKGZhc3QsIHNsb3cpIDw8IG47CisgIHJldHVybiBmYXN0OworfQorCitURVNUKEJpdHNUZXN0
LCBDb3VudExlYWRpbmdaZXJvczY0KSB7CisgIEVYUEVDVF9FUSg2NCwgQ0xaNjQodWludDY0X3R7
fSkpOworICBFWFBFQ1RfRVEoMCwgQ0xaNjQofnVpbnQ2NF90e30pKTsKKworICBmb3IgKGludCBp
bmRleCA9IDA7IGluZGV4IDwgNjQ7IGluZGV4KyspIHsKKyAgICB1aW50NjRfdCB4ID0gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KDEpIDw8IGluZGV4OworICAgIGNvbnN0IGF1dG8gY250ID0gNjMgLSBp
bmRleDsKKyAgICBBU1NFUlRfRVEoY250LCBDTFo2NCh4KSkgPDwgaW5kZXg7CisgICAgQVNTRVJU
X0VRKGNudCwgQ0xaNjQoeCArIHggLSAxKSkgPDwgaW5kZXg7CisgIH0KK30KKworaW50IENMWjMy
KHVpbnQzMl90IG4pIHsKKyAgaW50IGZhc3QgPSBhYnNsOjpiYXNlX2ludGVybmFsOjpDb3VudExl
YWRpbmdaZXJvczMyKG4pOworICBpbnQgc2xvdyA9IGFic2w6OmJhc2VfaW50ZXJuYWw6OkNvdW50
TGVhZGluZ1plcm9zMzJTbG93KG4pOworICBFWFBFQ1RfRVEoZmFzdCwgc2xvdykgPDwgbjsKKyAg
cmV0dXJuIGZhc3Q7Cit9CisKK1RFU1QoQml0c1Rlc3QsIENvdW50TGVhZGluZ1plcm9zMzIpIHsK
KyAgRVhQRUNUX0VRKDMyLCBDTFozMih1aW50MzJfdHt9KSk7CisgIEVYUEVDVF9FUSgwLCBDTFoz
Mih+dWludDMyX3R7fSkpOworCisgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCAzMjsgaW5k
ZXgrKykgeworICAgIHVpbnQzMl90IHggPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oMSkgPDwgaW5k
ZXg7CisgICAgY29uc3QgYXV0byBjbnQgPSAzMSAtIGluZGV4OworICAgIEFTU0VSVF9FUShjbnQs
IENMWjMyKHgpKSA8PCBpbmRleDsKKyAgICBBU1NFUlRfRVEoY250LCBDTFozMih4ICsgeCAtIDEp
KSA8PCBpbmRleDsKKyAgICBBU1NFUlRfRVEoQ0xaNjQoeCksIENMWjMyKHgpICsgMzIpOworICB9
Cit9CisKK2ludCBDVFo2NCh1aW50NjRfdCBuKSB7CisgIGludCBmYXN0ID0gYWJzbDo6YmFzZV9p
bnRlcm5hbDo6Q291bnRUcmFpbGluZ1plcm9zTm9uWmVybzY0KG4pOworICBpbnQgc2xvdyA9IGFi
c2w6OmJhc2VfaW50ZXJuYWw6OkNvdW50VHJhaWxpbmdaZXJvc05vblplcm82NFNsb3cobik7Cisg
IEVYUEVDVF9FUShmYXN0LCBzbG93KSA8PCBuOworICByZXR1cm4gZmFzdDsKK30KKworVEVTVChC
aXRzVGVzdCwgQ291bnRUcmFpbGluZ1plcm9zTm9uWmVybzY0KSB7CisgIEVYUEVDVF9FUSgwLCBD
VFo2NCh+dWludDY0X3R7fSkpOworCisgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCA2NDsg
aW5kZXgrKykgeworICAgIHVpbnQ2NF90IHggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwg
aW5kZXg7CisgICAgY29uc3QgYXV0byBjbnQgPSBpbmRleDsKKyAgICBBU1NFUlRfRVEoY250LCBD
VFo2NCh4KSkgPDwgaW5kZXg7CisgICAgQVNTRVJUX0VRKGNudCwgQ1RaNjQofih4IC0gMSkpKSA8
PCBpbmRleDsKKyAgfQorfQorCitpbnQgQ1RaMzIodWludDMyX3QgbikgeworICBpbnQgZmFzdCA9
IGFic2w6OmJhc2VfaW50ZXJuYWw6OkNvdW50VHJhaWxpbmdaZXJvc05vblplcm8zMihuKTsKKyAg
aW50IHNsb3cgPSBhYnNsOjpiYXNlX2ludGVybmFsOjpDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJv
MzJTbG93KG4pOworICBFWFBFQ1RfRVEoZmFzdCwgc2xvdykgPDwgbjsKKyAgcmV0dXJuIGZhc3Q7
Cit9CisKK1RFU1QoQml0c1Rlc3QsIENvdW50VHJhaWxpbmdaZXJvc05vblplcm8zMikgeworICBF
WFBFQ1RfRVEoMCwgQ1RaMzIofnVpbnQzMl90e30pKTsKKworICBmb3IgKGludCBpbmRleCA9IDA7
IGluZGV4IDwgMzI7IGluZGV4KyspIHsKKyAgICB1aW50MzJfdCB4ID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KDEpIDw8IGluZGV4OworICAgIGNvbnN0IGF1dG8gY250ID0gaW5kZXg7CisgICAgQVNT
RVJUX0VRKGNudCwgQ1RaMzIoeCkpIDw8IGluZGV4OworICAgIEFTU0VSVF9FUShjbnQsIENUWjMy
KH4oeCAtIDEpKSkgPDwgaW5kZXg7CisgIH0KK30KKworCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oCmluZGV4IDhjMmY1
MDkzZmM0ZGE4MjhhZmE4MjM0MmJlNDQ5OTVkMThhM2JiZTcuLjU2NjVhMWI2N2RiMmVjNGNhMmFk
ODBmZmEwNmZlNmU5Y2ZjNDkxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZXhj
ZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRp
b25fc2FmZXR5X3Rlc3RpbmcuaApAQCAtMTkxLDE5ICsxOTEsMTkgQEAgY2xhc3MgVHJhY2tlZE9i
amVjdCB7CiAgIH5UcmFja2VkT2JqZWN0KCkgbm9leGNlcHQgeyBDb25zdHJ1Y3RvclRyYWNrZXI6
Ok9iamVjdERlc3RydWN0ZWQodGhpcyk7IH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBGYWN0
b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24sIHR5cGVuYW1lIEludmFyaWFudD4KLWFic2w6Om9wdGlv
bmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4gVGVzdFNpbmdsZUludmFyaWFudEF0Q291bnRk
b3duSW1wbCgKK3RlbXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24s
IHR5cGVuYW1lIENvbnRyYWN0PgorYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0PiBUZXN0U2luZ2xlQ29udHJhY3RBdENvdW50ZG93bkltcGwoCiAgICAgY29uc3QgRmFjdG9y
eSYgZmFjdG9yeSwgY29uc3QgT3BlcmF0aW9uJiBvcGVyYXRpb24sIGludCBjb3VudCwKLSAgICBj
b25zdCBJbnZhcmlhbnQmIGludmFyaWFudCkgeworICAgIGNvbnN0IENvbnRyYWN0JiBjb250cmFj
dCkgewogICBhdXRvIHRfcHRyID0gZmFjdG9yeSgpOwogICBhYnNsOjpvcHRpb25hbDx0ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHQ+IGN1cnJlbnRfcmVzOwogICBTZXRDb3VudGRvd24oY291bnQpOwog
ICB0cnkgewogICAgIG9wZXJhdGlvbih0X3B0ci5nZXQoKSk7CiAgIH0gY2F0Y2ggKGNvbnN0IGV4
Y2VwdGlvbnNfaW50ZXJuYWw6OlRlc3RFeGNlcHRpb24mIGUpIHsKLSAgICBjdXJyZW50X3Jlcy5l
bXBsYWNlKGludmFyaWFudCh0X3B0ci5nZXQoKSkpOworICAgIGN1cnJlbnRfcmVzLmVtcGxhY2Uo
Y29udHJhY3QodF9wdHIuZ2V0KCkpKTsKICAgICBpZiAoIWN1cnJlbnRfcmVzLnZhbHVlKCkpIHsK
LSAgICAgICpjdXJyZW50X3JlcyA8PCBlLndoYXQoKSA8PCAiIGZhaWxlZCBpbnZhcmlhbnQgY2hl
Y2siOworICAgICAgKmN1cnJlbnRfcmVzIDw8IGUud2hhdCgpIDw8ICIgZmFpbGVkIGNvbnRyYWN0
IGNoZWNrIjsKICAgICB9CiAgIH0KICAgVW5zZXRDb3VudGRvd24oKTsKQEAgLTIxMSwyMiArMjEx
LDIyIEBAIGFic2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4gVGVzdFNpbmds
ZUludmFyaWFudEF0Q291bnRkb3duSW1wbCgKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZhY3Rv
cnksIHR5cGVuYW1lIE9wZXJhdGlvbj4KLWFic2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdD4gVGVzdFNpbmdsZUludmFyaWFudEF0Q291bnRkb3duSW1wbCgKK2Fic2w6Om9wdGlv
bmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4gVGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRv
d25JbXBsKAogICAgIGNvbnN0IEZhY3RvcnkmIGZhY3RvcnksIGNvbnN0IE9wZXJhdGlvbiYgb3Bl
cmF0aW9uLCBpbnQgY291bnQsCiAgICAgU3Ryb25nR3VhcmFudGVlVGFnVHlwZSkgewogICB1c2lu
ZyBUUHRyID0gdHlwZW5hbWUgZGVjbHR5cGUoZmFjdG9yeSgpKTo6cG9pbnRlcjsKICAgYXV0byB0
X2lzX3N0cm9uZyA9IFsmXShUUHRyIHQpIHsgcmV0dXJuICp0ID09ICpmYWN0b3J5KCk7IH07Ci0g
IHJldHVybiBUZXN0U2luZ2xlSW52YXJpYW50QXRDb3VudGRvd25JbXBsKGZhY3RvcnksIG9wZXJh
dGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRfaXNfc3Ryb25nKTsKKyAgcmV0dXJuIFRlc3RTaW5nbGVDb250cmFjdEF0Q291bnRkb3duSW1w
bChmYWN0b3J5LCBvcGVyYXRpb24sIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRfaXNfc3Ryb25nKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEZh
Y3RvcnksIHR5cGVuYW1lIE9wZXJhdGlvbiwgdHlwZW5hbWUgSW52YXJpYW50PgotaW50IFRlc3RT
aW5nbGVJbnZhcmlhbnRBdENvdW50ZG93bigKK3RlbXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0
eXBlbmFtZSBPcGVyYXRpb24sIHR5cGVuYW1lIENvbnRyYWN0PgoraW50IFRlc3RTaW5nbGVDb250
cmFjdEF0Q291bnRkb3duKAogICAgIGNvbnN0IEZhY3RvcnkmIGZhY3RvcnksIGNvbnN0IE9wZXJh
dGlvbiYgb3BlcmF0aW9uLCBpbnQgY291bnQsCi0gICAgY29uc3QgSW52YXJpYW50JiBpbnZhcmlh
bnQsCisgICAgY29uc3QgQ29udHJhY3QmIGNvbnRyYWN0LAogICAgIGFic2w6Om9wdGlvbmFsPHRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdD4qIHJlZHVjZWRfcmVzKSB7CiAgIC8vIElmIHJlZHVjZWRf
cmVzIGlzIGVtcHR5LCBpdCBtZWFucyB0aGUgY3VycmVudCBjYWxsIHRvCi0gIC8vIFRlc3RTaW5n
bGVJbnZhcmlhbnRBdENvdW50ZG93biguLi4pIGlzIHRoZSBmaXJzdCB0ZXN0IGJlaW5nIHJ1biBz
byB3ZSBkbworICAvLyBUZXN0U2luZ2xlQ29udHJhY3RBdENvdW50ZG93biguLi4pIGlzIHRoZSBm
aXJzdCB0ZXN0IGJlaW5nIHJ1biBzbyB3ZSBkbwogICAvLyB3YW50IHRvIHJ1biBpdC4gQWx0ZXJu
YXRpdmVseSwgaWYgaXQncyBub3QgZW1wdHkgKG1lYW5pbmcgYSBwcmV2aW91cyB0ZXN0CiAgIC8v
IGhhcyBydW4pIHdlIHdhbnQgdG8gY2hlY2sgaWYgaXQgcGFzc2VkLiBJZiB0aGUgcHJldmlvdXMg
dGVzdCBkaWQgcGFzcywgd2UKICAgLy8gd2FudCB0byBjb250aW5lIHJ1bm5pbmcgdGVzdHMgc28g
d2UgZG8gd2FudCB0byBydW4gdGhlIGN1cnJlbnQgb25lLiBJZiBpdApAQCAtMjM0LDIyICsyMzQs
MjIgQEAgaW50IFRlc3RTaW5nbGVJbnZhcmlhbnRBdENvdW50ZG93bigKICAgLy8gb3V0cHV0LiBJ
ZiB0aGF0J3MgdGhlIGNhc2UsIHdlIGRvIG5vdCBydW4gdGhlIGN1cnJlbnQgdGVzdCBhbmQgaW5z
dGVhZCB3ZQogICAvLyBzaW1wbHkgcmV0dXJuLgogICBpZiAoIXJlZHVjZWRfcmVzLT5oYXNfdmFs
dWUoKSB8fCByZWR1Y2VkX3Jlcy0+dmFsdWUoKSkgewotICAgICpyZWR1Y2VkX3JlcyA9IFRlc3RT
aW5nbGVJbnZhcmlhbnRBdENvdW50ZG93bkltcGwoZmFjdG9yeSwgb3BlcmF0aW9uLCBjb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dmFyaWFudCk7CisgICAgKnJlZHVjZWRfcmVzID0KKyAgICAgICAgVGVzdFNpbmdsZUNvbnRyYWN0
QXRDb3VudGRvd25JbXBsKGZhY3RvcnksIG9wZXJhdGlvbiwgY291bnQsIGNvbnRyYWN0KTsKICAg
fQogICByZXR1cm4gMDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEZhY3RvcnksIHR5cGVuYW1l
IE9wZXJhdGlvbiwgdHlwZW5hbWUuLi4gSW52YXJpYW50cz4KLWlubGluZSBhYnNsOjpvcHRpb25h
bDx0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ+IFRlc3RBbGxJbnZhcmlhbnRzQXRDb3VudGRvd24o
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBlbmFt
ZS4uLiBDb250cmFjdHM+CitpbmxpbmUgYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0PiBUZXN0QWxsQ29udHJhY3RzQXRDb3VudGRvd24oCiAgICAgY29uc3QgRmFjdG9yeSYg
ZmFjdG9yeSwgY29uc3QgT3BlcmF0aW9uJiBvcGVyYXRpb24sIGludCBjb3VudCwKLSAgICBjb25z
dCBJbnZhcmlhbnRzJi4uLiBpbnZhcmlhbnRzKSB7CisgICAgY29uc3QgQ29udHJhY3RzJi4uLiBj
b250cmFjdHMpIHsKICAgYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0PiBy
ZWR1Y2VkX3JlczsKIAogICAvLyBSdW4gZWFjaCBjaGVja2VyLCBzaG9ydCBjaXJjdWl0aW5nIGFm
dGVyIHRoZSBmaXJzdCBmYWlsdXJlCiAgIGludCBkdW1teVtdID0gewotICAgICAgMCwgKFRlc3RT
aW5nbGVJbnZhcmlhbnRBdENvdW50ZG93bihmYWN0b3J5LCBvcGVyYXRpb24sIGNvdW50LCBpbnZh
cmlhbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVkdWNl
ZF9yZXMpKS4uLn07CisgICAgICAwLCAoVGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRvd24oZmFj
dG9yeSwgb3BlcmF0aW9uLCBjb3VudCwgY29udHJhY3RzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZyZWR1Y2VkX3JlcykpLi4ufTsKICAgc3RhdGljX2Nhc3Q8dm9p
ZD4oZHVtbXkpOwogICByZXR1cm4gcmVkdWNlZF9yZXM7CiB9CkBAIC04NTgsNyArODU4LDcgQEAg
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFRlc3ROb3Rocm93T3AoY29uc3QgT3BlcmF0aW9uJiBv
cGVyYXRpb24pIHsKICAgdHJ5IHsKICAgICBvcGVyYXRpb24oKTsKICAgICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uU3VjY2VzcygpOwotICB9IGNhdGNoIChleGNlcHRpb25zX2ludGVybmFsOjpU
ZXN0RXhjZXB0aW9uKSB7CisgIH0gY2F0Y2ggKGNvbnN0IGV4Y2VwdGlvbnNfaW50ZXJuYWw6OlRl
c3RFeGNlcHRpb24mKSB7CiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQog
ICAgICAgICAgICA8PCAiVGVzdEV4Y2VwdGlvbiB0aHJvd24gZHVyaW5nIGNhbGwgdG8gb3BlcmF0
aW9uKCkgd2hlbiBub3Rocm93ICIKICAgICAgICAgICAgICAgImd1YXJhbnRlZSB3YXMgZXhwZWN0
ZWQuIjsKQEAgLTg4NCwxNSArODg0LDE1IEBAIGNsYXNzIERlZmF1bHRGYWN0b3J5IHsKICAgVCB0
XzsKIH07CiAKLXRlbXBsYXRlIDxzaXplX3QgTGF6eUludmFyaWFudHNDb3VudCwgdHlwZW5hbWUg
TGF6eUZhY3RvcnksCit0ZW1wbGF0ZSA8c2l6ZV90IExhenlDb250cmFjdHNDb3VudCwgdHlwZW5h
bWUgTGF6eUZhY3RvcnksCiAgICAgICAgICAgdHlwZW5hbWUgTGF6eU9wZXJhdGlvbj4KIHVzaW5n
IEVuYWJsZUlmVGVzdGFibGUgPSB0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwKLSAgICBMYXp5
SW52YXJpYW50c0NvdW50ICE9IDAgJiYKKyAgICBMYXp5Q29udHJhY3RzQ291bnQgIT0gMCAmJgog
ICAgICFzdGQ6OmlzX3NhbWU8TGF6eUZhY3RvcnksIFVuaW5pdGlhbGl6ZWRUPjo6dmFsdWUgJiYK
ICAgICAhc3RkOjppc19zYW1lPExhenlPcGVyYXRpb24sIFVuaW5pdGlhbGl6ZWRUPjo6dmFsdWU+
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSA9IFVuaW5pdGlhbGl6ZWRULAotICAgICAg
ICAgIHR5cGVuYW1lIE9wZXJhdGlvbiA9IFVuaW5pdGlhbGl6ZWRULCB0eXBlbmFtZS4uLiBJbnZh
cmlhbnRzPgorICAgICAgICAgIHR5cGVuYW1lIE9wZXJhdGlvbiA9IFVuaW5pdGlhbGl6ZWRULCB0
eXBlbmFtZS4uLiBDb250cmFjdHM+CiBjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0ZXI7CiAKIH0g
IC8vIG5hbWVzcGFjZSBleGNlcHRpb25zX2ludGVybmFsCkBAIC05MDMsNyArOTAzLDcgQEAgbmFt
ZXNwYWNlIGV4Y2VwdGlvbnNfaW50ZXJuYWwgewogCiAvKgogICogQnVpbGRzIGEgdGVzdGVyIG9i
amVjdCB0aGF0IHRlc3RzIGlmIHBlcmZvcm1pbmcgYSBvcGVyYXRpb24gb24gYSBUIGZvbGxvd3MK
LSAqIGV4Y2VwdGlvbiBzYWZldHkgZ3VhcmFudGVlcy4gVmVyaWZpY2F0aW9uIGlzIGRvbmUgdmlh
IGludmFyaWFudCBhc3NlcnRpb24KKyAqIGV4Y2VwdGlvbiBzYWZldHkgZ3VhcmFudGVlcy4gVmVy
aWZpY2F0aW9uIGlzIGRvbmUgdmlhIGNvbnRyYWN0IGFzc2VydGlvbgogICogY2FsbGJhY2tzIGFw
cGxpZWQgdG8gVCBpbnN0YW5jZXMgcG9zdC10aHJvdy4KICAqCiAgKiBUZW1wbGF0ZSBwYXJhbWV0
ZXJzIGZvciBFeGNlcHRpb25TYWZldHlUZXN0ZXI6CkBAIC05MjEsMTggKzkyMSwxOCBAQCBuYW1l
c3BhY2UgZXhjZXB0aW9uc19pbnRlcm5hbCB7CiAgKiAgIGZyZXNoIFQgaW5zdGFuY2Ugc28gaXQn
cyBmcmVlIHRvIG1vZGlmeSBhbmQgZGVzdHJveSB0aGUgVCBpbnN0YW5jZXMgYXMgaXQKICAqICAg
cGxlYXNlcy4KICAqCi0gKiAtIEludmFyaWFudHMuLi46IFRoZSBpbnZhcmlhbnQgYXNzZXJ0aW9u
IGNhbGxiYWNrIG9iamVjdHMgKHBhc3NlZCBpbiB2aWEKLSAqICAgdGVzdGVyLldpdGhJbnZhcmlh
bnRzKC4uLikpIG11c3QgYmUgaW52b2NhYmxlIHdpdGggdGhlIHNpZ25hdHVyZQorICogLSBDb250
cmFjdHMuLi46IFRoZSBjb250cmFjdCBhc3NlcnRpb24gY2FsbGJhY2sgb2JqZWN0cyAocGFzc2Vk
IGluIHZpYQorICogICB0ZXN0ZXIuV2l0aENvbnRyYWN0cyguLi4pKSBtdXN0IGJlIGludm9jYWJs
ZSB3aXRoIHRoZSBzaWduYXR1cmUKICAqICAgYHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBvcGVy
YXRvcigpKFQqKSBjb25zdGAgd2hlcmUgVCBpcyB0aGUgdHlwZSBiZWluZwotICogICB0ZXN0ZWQu
IEludmFyaWFudCBhc3NlcnRpb24gY2FsbGJhY2tzIGFyZSBwcm92aWRlZCBUIGluc3RhbmNlcyBw
b3N0LXRocm93LgotICogICBUaGV5IG11c3QgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nl
c3Mgd2hlbiB0aGUgdHlwZSBpbnZhcmlhbnRzIG9mIHRoZQotICogICBwcm92aWRlZCBUIGluc3Rh
bmNlIGhvbGQuIElmIHRoZSB0eXBlIGludmFyaWFudHMgb2YgdGhlIFQgaW5zdGFuY2UgZG8gbm90
CisgKiAgIHRlc3RlZC4gQ29udHJhY3QgYXNzZXJ0aW9uIGNhbGxiYWNrcyBhcmUgcHJvdmlkZWQg
VCBpbnN0YW5jZXMgcG9zdC10aHJvdy4KKyAqICAgVGhleSBtdXN0IHJldHVybiB0ZXN0aW5nOjpB
c3NlcnRpb25TdWNjZXNzIHdoZW4gdGhlIHR5cGUgY29udHJhY3RzIG9mIHRoZQorICogICBwcm92
aWRlZCBUIGluc3RhbmNlIGhvbGQuIElmIHRoZSB0eXBlIGNvbnRyYWN0cyBvZiB0aGUgVCBpbnN0
YW5jZSBkbyBub3QKICAqICAgaG9sZCwgdGhleSBtdXN0IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRp
b25GYWlsdXJlLiBFeGVjdXRpb24gb3JkZXIgb2YKLSAqICAgSW52YXJpYW50cy4uLiBpcyB1bnNw
ZWNpZmllZC4gVGhleSB3aWxsIGVhY2ggaW5kaXZpZHVhbGx5IGdldCBhIGZyZXNoIFQKKyAqICAg
Q29udHJhY3RzLi4uIGlzIHVuc3BlY2lmaWVkLiBUaGV5IHdpbGwgZWFjaCBpbmRpdmlkdWFsbHkg
Z2V0IGEgZnJlc2ggVAogICogICBpbnN0YW5jZSBzbyB0aGV5IGFyZSBmcmVlIHRvIG1vZGlmeSBh
bmQgZGVzdHJveSB0aGUgVCBpbnN0YW5jZXMgYXMgdGhleQogICogICBwbGVhc2UuCiAgKi8KLXRl
bXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24sIHR5cGVuYW1lLi4u
IEludmFyaWFudHM+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0
aW9uLCB0eXBlbmFtZS4uLiBDb250cmFjdHM+CiBjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0ZXIg
ewogIHB1YmxpYzoKICAgLyoKQEAgLTk0OCw3ICs5NDgsNyBAQCBjbGFzcyBFeGNlcHRpb25TYWZl
dHlUZXN0ZXIgewogICAgKiAgIHRlc3Rlci5XaXRoRmFjdG9yeSguLi4pLgogICAgKi8KICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIEV4Y2VwdGlvblNhZmV0eVRlc3RlcjxEZWZhdWx0RmFjdG9y
eTxUPiwgT3BlcmF0aW9uLCBJbnZhcmlhbnRzLi4uPgorICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8
RGVmYXVsdEZhY3Rvcnk8VD4sIE9wZXJhdGlvbiwgQ29udHJhY3RzLi4uPgogICBXaXRoSW5pdGlh
bFZhbHVlKGNvbnN0IFQmIHQpIGNvbnN0IHsKICAgICByZXR1cm4gV2l0aEZhY3RvcnkoRGVmYXVs
dEZhY3Rvcnk8VD4odCkpOwogICB9CkBAIC05NjEsOSArOTYxLDkgQEAgY2xhc3MgRXhjZXB0aW9u
U2FmZXR5VGVzdGVyIHsKICAgICogbWV0aG9kIHRlc3Rlci5XaXRoSW5pdGlhbFZhbHVlKC4uLiku
CiAgICAqLwogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTmV3RmFjdG9yeT4KLSAgRXhjZXB0aW9uU2Fm
ZXR5VGVzdGVyPGFic2w6OmRlY2F5X3Q8TmV3RmFjdG9yeT4sIE9wZXJhdGlvbiwgSW52YXJpYW50
cy4uLj4KKyAgRXhjZXB0aW9uU2FmZXR5VGVzdGVyPGFic2w6OmRlY2F5X3Q8TmV3RmFjdG9yeT4s
IE9wZXJhdGlvbiwgQ29udHJhY3RzLi4uPgogICBXaXRoRmFjdG9yeShjb25zdCBOZXdGYWN0b3J5
JiBuZXdfZmFjdG9yeSkgY29uc3QgewotICAgIHJldHVybiB7bmV3X2ZhY3RvcnksIG9wZXJhdGlv
bl8sIGludmFyaWFudHNffTsKKyAgICByZXR1cm4ge25ld19mYWN0b3J5LCBvcGVyYXRpb25fLCBj
b250cmFjdHNffTsKICAgfQogCiAgIC8qCkBAIC05NzIsMzkgKzk3MiwzOSBAQCBjbGFzcyBFeGNl
cHRpb25TYWZldHlUZXN0ZXIgewogICAgKiB0ZXN0ZXIuCiAgICAqLwogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTmV3T3BlcmF0aW9uPgotICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8RmFjdG9yeSwgYWJz
bDo6ZGVjYXlfdDxOZXdPcGVyYXRpb24+LCBJbnZhcmlhbnRzLi4uPgorICBFeGNlcHRpb25TYWZl
dHlUZXN0ZXI8RmFjdG9yeSwgYWJzbDo6ZGVjYXlfdDxOZXdPcGVyYXRpb24+LCBDb250cmFjdHMu
Li4+CiAgIFdpdGhPcGVyYXRpb24oY29uc3QgTmV3T3BlcmF0aW9uJiBuZXdfb3BlcmF0aW9uKSBj
b25zdCB7Ci0gICAgcmV0dXJuIHtmYWN0b3J5XywgbmV3X29wZXJhdGlvbiwgaW52YXJpYW50c199
OworICAgIHJldHVybiB7ZmFjdG9yeV8sIG5ld19vcGVyYXRpb24sIGNvbnRyYWN0c199OwogICB9
CiAKICAgLyoKLSAgICogUmV0dXJucyBhIG5ldyBFeGNlcHRpb25TYWZldHlUZXN0ZXIgd2l0aCB0
aGUgcHJvdmlkZWQgTW9yZUludmFyaWFudHMuLi4KLSAgICogY29tYmluZWQgd2l0aCB0aGUgSW52
YXJpYW50cy4uLiB0aGF0IHdlcmUgYWxyZWFkeSBpbmNsdWRlZCBpbiB0aGUgaW5zdGFuY2UKLSAg
ICogb24gd2hpY2ggdGhlIG1ldGhvZCB3YXMgY2FsbGVkLiBJbnZhcmlhbnRzLi4uIGNhbm5vdCBi
ZSByZW1vdmVkIG9yIHJlcGxhY2VkCisgICAqIFJldHVybnMgYSBuZXcgRXhjZXB0aW9uU2FmZXR5
VGVzdGVyIHdpdGggdGhlIHByb3ZpZGVkIE1vcmVDb250cmFjdHMuLi4KKyAgICogY29tYmluZWQg
d2l0aCB0aGUgQ29udHJhY3RzLi4uIHRoYXQgd2VyZSBhbHJlYWR5IGluY2x1ZGVkIGluIHRoZSBp
bnN0YW5jZQorICAgKiBvbiB3aGljaCB0aGUgbWV0aG9kIHdhcyBjYWxsZWQuIENvbnRyYWN0cy4u
LiBjYW5ub3QgYmUgcmVtb3ZlZCBvciByZXBsYWNlZAogICAgKiBvbmNlIGFkZGVkIHRvIGFuIEV4
Y2VwdGlvblNhZmV0eVRlc3RlciBpbnN0YW5jZS4gQSBmcmVzaCBvYmplY3QgbXVzdCBiZQotICAg
KiBjcmVhdGVkIGluIG9yZGVyIHRvIGdldCBhbiBlbXB0eSBJbnZhcmlhbnRzLi4uIGxpc3QuCisg
ICAqIGNyZWF0ZWQgaW4gb3JkZXIgdG8gZ2V0IGFuIGVtcHR5IENvbnRyYWN0cy4uLiBsaXN0Lgog
ICAgKgotICAgKiBJbiBhZGRpdGlvbiB0byBwYXNzaW5nIGluIGN1c3RvbSBpbnZhcmlhbnQgYXNz
ZXJ0aW9uIGNhbGxiYWNrcywgdGhpcyBtZXRob2QKKyAgICogSW4gYWRkaXRpb24gdG8gcGFzc2lu
ZyBpbiBjdXN0b20gY29udHJhY3QgYXNzZXJ0aW9uIGNhbGxiYWNrcywgdGhpcyBtZXRob2QKICAg
ICogYWNjZXB0cyBgdGVzdGluZzo6c3Ryb25nX2d1YXJhbnRlZWAgYXMgYW4gYXJndW1lbnQgd2hp
Y2ggY2hlY2tzIFQgaW5zdGFuY2VzCiAgICAqIHBvc3QtdGhyb3cgYWdhaW5zdCBmcmVzaGx5IGNy
ZWF0ZWQgVCBpbnN0YW5jZXMgdmlhIG9wZXJhdG9yPT0gdG8gdmVyaWZ5CiAgICAqIHRoYXQgYW55
IHN0YXRlIGNoYW5nZXMgbWFkZSBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgb3BlcmF0aW9u
IHdlcmUKICAgICogcHJvcGVybHkgcm9sbGVkIGJhY2suCiAgICAqLwotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gTW9yZUludmFyaWFudHM+Ci0gIEV4Y2VwdGlvblNhZmV0eVRlc3RlcjxGYWN0b3J5
LCBPcGVyYXRpb24sIEludmFyaWFudHMuLi4sCi0gICAgICAgICAgICAgICAgICAgICAgICBhYnNs
OjpkZWNheV90PE1vcmVJbnZhcmlhbnRzPi4uLj4KLSAgV2l0aEludmFyaWFudHMoY29uc3QgTW9y
ZUludmFyaWFudHMmLi4uIG1vcmVfaW52YXJpYW50cykgY29uc3QgewotICAgIHJldHVybiB7ZmFj
dG9yeV8sIG9wZXJhdGlvbl8sCi0gICAgICAgICAgICBzdGQ6OnR1cGxlX2NhdChpbnZhcmlhbnRz
XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dHVwbGU8YWJzbDo6ZGVjYXlfdDxN
b3JlSW52YXJpYW50cz4uLi4+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVf
aW52YXJpYW50cy4uLikpfTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIE1vcmVDb250cmFjdHM+
CisgIEV4Y2VwdGlvblNhZmV0eVRlc3RlcjxGYWN0b3J5LCBPcGVyYXRpb24sIENvbnRyYWN0cy4u
LiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OmRlY2F5X3Q8TW9yZUNvbnRyYWN0cz4u
Li4+CisgIFdpdGhDb250cmFjdHMoY29uc3QgTW9yZUNvbnRyYWN0cyYuLi4gbW9yZV9jb250cmFj
dHMpIGNvbnN0IHsKKyAgICByZXR1cm4geworICAgICAgICBmYWN0b3J5Xywgb3BlcmF0aW9uXywK
KyAgICAgICAgc3RkOjp0dXBsZV9jYXQoY29udHJhY3RzXywgc3RkOjp0dXBsZTxhYnNsOjpkZWNh
eV90PE1vcmVDb250cmFjdHM+Li4uPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1vcmVfY29udHJhY3RzLi4uKSl9OwogICB9CiAKICAgLyoKICAgICogUmV0dXJucyBh
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCB0aGF0IGlzIHRoZSByZWR1Y2VkIHJlc3VsdCBvZiB0
aGUKICAgICogZXhjZXB0aW9uIHNhZmV0eSBhbGdvcml0aG0uIFRoZSBhbGdvcml0aG0gc2hvcnQg
Y2lyY3VpdHMgYW5kIHJldHVybnMKLSAgICogQXNzZXJ0aW9uRmFpbHVyZSBhZnRlciB0aGUgZmly
c3QgaW52YXJpYW50IGNhbGxiYWNrIHJldHVybnMgYW4KLSAgICogQXNzZXJ0aW9uRmFpbHVyZS4g
T3RoZXJ3aXNlLCBpZiBhbGwgaW52YXJpYW50IGNhbGxiYWNrcyByZXR1cm4gYW4KKyAgICogQXNz
ZXJ0aW9uRmFpbHVyZSBhZnRlciB0aGUgZmlyc3QgY29udHJhY3QgY2FsbGJhY2sgcmV0dXJucyBh
bgorICAgKiBBc3NlcnRpb25GYWlsdXJlLiBPdGhlcndpc2UsIGlmIGFsbCBjb250cmFjdCBjYWxs
YmFja3MgcmV0dXJuIGFuCiAgICAqIEFzc2VydGlvblN1Y2Nlc3MsIHRoZSByZWR1Y2VkIHJlc3Vs
dCBpcyBBc3NlcnRpb25TdWNjZXNzLgogICAgKgogICAgKiBUaGUgcGFzc2VkLWluIHRlc3RhYmxl
IG9wZXJhdGlvbiB3aWxsIG5vdCBiZSBzYXZlZCBpbiBhIG5ldyB0ZXN0ZXIgaW5zdGFuY2UKQEAg
LTEwMTMsMzMgKzEwMTMsMzMgQEAgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKICAgICoK
ICAgICogUHJlY29uZGl0aW9ucyBmb3IgdGVzdGVyLlRlc3QoY29uc3QgTmV3T3BlcmF0aW9uJiBu
ZXdfb3BlcmF0aW9uKToKICAgICoKLSAgICogLSBNYXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYXQg
bGVhc3Qgb25lIGludmFyaWFudCBhc3NlcnRpb24gY2FsbGJhY2sgYW5kIGEKKyAgICogLSBNYXkg
b25seSBiZSBjYWxsZWQgYWZ0ZXIgYXQgbGVhc3Qgb25lIGNvbnRyYWN0IGFzc2VydGlvbiBjYWxs
YmFjayBhbmQgYQogICAgKiAgIGZhY3Rvcnkgb3IgaW5pdGlhbCB2YWx1ZSBoYXZlIGJlZW4gcHJv
dmlkZWQuCiAgICAqLwogICB0ZW1wbGF0ZSA8CiAgICAgICB0eXBlbmFtZSBOZXdPcGVyYXRpb24s
Ci0gICAgICB0eXBlbmFtZSA9IEVuYWJsZUlmVGVzdGFibGU8c2l6ZW9mLi4uKEludmFyaWFudHMp
LCBGYWN0b3J5LCBOZXdPcGVyYXRpb24+PgorICAgICAgdHlwZW5hbWUgPSBFbmFibGVJZlRlc3Rh
YmxlPHNpemVvZi4uLihDb250cmFjdHMpLCBGYWN0b3J5LCBOZXdPcGVyYXRpb24+PgogICB0ZXN0
aW5nOjpBc3NlcnRpb25SZXN1bHQgVGVzdChjb25zdCBOZXdPcGVyYXRpb24mIG5ld19vcGVyYXRp
b24pIGNvbnN0IHsKLSAgICByZXR1cm4gVGVzdEltcGwobmV3X29wZXJhdGlvbiwgYWJzbDo6aW5k
ZXhfc2VxdWVuY2VfZm9yPEludmFyaWFudHMuLi4+KCkpOworICAgIHJldHVybiBUZXN0SW1wbChu
ZXdfb3BlcmF0aW9uLCBhYnNsOjppbmRleF9zZXF1ZW5jZV9mb3I8Q29udHJhY3RzLi4uPigpKTsK
ICAgfQogCiAgIC8qCiAgICAqIFJldHVybnMgYSB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgdGhh
dCBpcyB0aGUgcmVkdWNlZCByZXN1bHQgb2YgdGhlCiAgICAqIGV4Y2VwdGlvbiBzYWZldHkgYWxn
b3JpdGhtLiBUaGUgYWxnb3JpdGhtIHNob3J0IGNpcmN1aXRzIGFuZCByZXR1cm5zCi0gICAqIEFz
c2VydGlvbkZhaWx1cmUgYWZ0ZXIgdGhlIGZpcnN0IGludmFyaWFudCBjYWxsYmFjayByZXR1cm5z
IGFuCi0gICAqIEFzc2VydGlvbkZhaWx1cmUuIE90aGVyd2lzZSwgaWYgYWxsIGludmFyaWFudCBj
YWxsYmFja3MgcmV0dXJuIGFuCisgICAqIEFzc2VydGlvbkZhaWx1cmUgYWZ0ZXIgdGhlIGZpcnN0
IGNvbnRyYWN0IGNhbGxiYWNrIHJldHVybnMgYW4KKyAgICogQXNzZXJ0aW9uRmFpbHVyZS4gT3Ro
ZXJ3aXNlLCBpZiBhbGwgY29udHJhY3QgY2FsbGJhY2tzIHJldHVybiBhbgogICAgKiBBc3NlcnRp
b25TdWNjZXNzLCB0aGUgcmVkdWNlZCByZXN1bHQgaXMgQXNzZXJ0aW9uU3VjY2Vzcy4KICAgICoK
ICAgICogUHJlY29uZGl0aW9ucyBmb3IgdGVzdGVyLlRlc3QoKToKICAgICoKLSAgICogLSBNYXkg
b25seSBiZSBjYWxsZWQgYWZ0ZXIgYXQgbGVhc3Qgb25lIGludmFyaWFudCBhc3NlcnRpb24gY2Fs
bGJhY2ssIGEKKyAgICogLSBNYXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYXQgbGVhc3Qgb25lIGNv
bnRyYWN0IGFzc2VydGlvbiBjYWxsYmFjaywgYQogICAgKiAgIGZhY3Rvcnkgb3IgaW5pdGlhbCB2
YWx1ZSBhbmQgYSB0ZXN0YWJsZSBvcGVyYXRpb24gaGF2ZSBiZWVuIHByb3ZpZGVkLgogICAgKi8K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIExhenlPcGVyYXRpb24gPSBPcGVyYXRpb24sCi0gICAgICAg
ICAgICB0eXBlbmFtZSA9Ci0gICAgICAgICAgICAgICAgRW5hYmxlSWZUZXN0YWJsZTxzaXplb2Yu
Li4oSW52YXJpYW50cyksIEZhY3RvcnksIExhenlPcGVyYXRpb24+PgorICB0ZW1wbGF0ZSA8Cisg
ICAgICB0eXBlbmFtZSBMYXp5T3BlcmF0aW9uID0gT3BlcmF0aW9uLAorICAgICAgdHlwZW5hbWUg
PSBFbmFibGVJZlRlc3RhYmxlPHNpemVvZi4uLihDb250cmFjdHMpLCBGYWN0b3J5LCBMYXp5T3Bl
cmF0aW9uPj4KICAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFRlc3QoKSBjb25zdCB7Ci0gICAg
cmV0dXJuIFRlc3RJbXBsKG9wZXJhdGlvbl8sIGFic2w6OmluZGV4X3NlcXVlbmNlX2ZvcjxJbnZh
cmlhbnRzLi4uPigpKTsKKyAgICByZXR1cm4gVGVzdEltcGwob3BlcmF0aW9uXywgYWJzbDo6aW5k
ZXhfc2VxdWVuY2VfZm9yPENvbnRyYWN0cy4uLj4oKSk7CiAgIH0KIAogIHByaXZhdGU6CkBAIC0x
MDUxLDggKzEwNTEsOCBAQCBjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0ZXIgewogICBFeGNlcHRp
b25TYWZldHlUZXN0ZXIoKSB7fQogCiAgIEV4Y2VwdGlvblNhZmV0eVRlc3Rlcihjb25zdCBGYWN0
b3J5JiBmLCBjb25zdCBPcGVyYXRpb24mIG8sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnR1cGxlPEludmFyaWFudHMuLi4+JiBpKQotICAgICAgOiBmYWN0b3J5XyhmKSwgb3Bl
cmF0aW9uXyhvKSwgaW52YXJpYW50c18oaSkge30KKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6dHVwbGU8Q29udHJhY3RzLi4uPiYgaSkKKyAgICAgIDogZmFjdG9yeV8oZiksIG9w
ZXJhdGlvbl8obyksIGNvbnRyYWN0c18oaSkge30KIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2Vs
ZWN0ZWRPcGVyYXRpb24sIHNpemVfdC4uLiBJbmRpY2VzPgogICB0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQgVGVzdEltcGwoY29uc3QgU2VsZWN0ZWRPcGVyYXRpb24mIHNlbGVjdGVkX29wZXJhdGlv
biwKQEAgLTEwNjQsMjggKzEwNjQsMjggQEAgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsK
IAogICAgICAgLy8gUnVuIHRoZSBmdWxsIGV4Y2VwdGlvbiBzYWZldHkgdGVzdCBhbGdvcml0aG0g
Zm9yIHRoZSBjdXJyZW50IGNvdW50ZG93bgogICAgICAgYXV0byByZWR1Y2VkX3JlcyA9Ci0gICAg
ICAgICAgVGVzdEFsbEludmFyaWFudHNBdENvdW50ZG93bihmYWN0b3J5Xywgc2VsZWN0ZWRfb3Bl
cmF0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6Z2V0PEluZGljZXM+KGludmFyaWFudHNfKS4uLik7Ci0gICAgICAvLyBJZiB0aGVyZSBpcyBu
byB2YWx1ZSBpbiB0aGUgb3B0aW9uYWwsIG5vIGludmFyaWFudHMgd2VyZSBydW4gYmVjYXVzZSBu
bworICAgICAgICAgIFRlc3RBbGxDb250cmFjdHNBdENvdW50ZG93bihmYWN0b3J5Xywgc2VsZWN0
ZWRfb3BlcmF0aW9uLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpnZXQ8SW5kaWNlcz4oY29udHJhY3RzXykuLi4pOworICAgICAgLy8gSWYgdGhlcmUg
aXMgbm8gdmFsdWUgaW4gdGhlIG9wdGlvbmFsLCBubyBjb250cmFjdHMgd2VyZSBydW4gYmVjYXVz
ZSBubwogICAgICAgLy8gZXhjZXB0aW9uIHdhcyB0aHJvd24uIFRoaXMgbWVhbnMgdGhhdCB0aGUg
dGVzdCBpcyBjb21wbGV0ZSBhbmQgdGhlIGxvb3AKICAgICAgIC8vIGNhbiBleGl0IHN1Y2Nlc3Nm
dWxseS4KICAgICAgIGlmICghcmVkdWNlZF9yZXMuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgcmV0
dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKICAgICAgIH0KLSAgICAgIC8vIElmIHRo
ZSBvcHRpb25hbCBpcyBub3QgZW1wdHkgYW5kIHRoZSB2YWx1ZSBpcyBmYWxzeSwgYW4gaW52YXJp
YW50IGNoZWNrCisgICAgICAvLyBJZiB0aGUgb3B0aW9uYWwgaXMgbm90IGVtcHR5IGFuZCB0aGUg
dmFsdWUgaXMgZmFsc3ksIGFuIGNvbnRyYWN0IGNoZWNrCiAgICAgICAvLyBmYWlsZWQgc28gdGhl
IHRlc3QgbXVzdCBleGl0IHRvIHByb3BlZ2F0ZSB0aGUgZmFpbHVyZS4KICAgICAgIGlmICghcmVk
dWNlZF9yZXMudmFsdWUoKSkgewogICAgICAgICByZXR1cm4gcmVkdWNlZF9yZXMudmFsdWUoKTsK
ICAgICAgIH0KICAgICAgIC8vIElmIHRoZSBvcHRpb25hbCBpcyBub3QgZW1wdHkgYW5kIHRoZSB2
YWx1ZSBpcyBub3QgZmFsc3ksIGl0IG1lYW5zCi0gICAgICAvLyBleGNlcHRpb25zIHdlcmUgdGhy
b3duIGJ1dCB0aGUgaW52YXJpYW50cyBwYXNzZWQgc28gdGhlIHRlc3QgbXVzdAorICAgICAgLy8g
ZXhjZXB0aW9ucyB3ZXJlIHRocm93biBidXQgdGhlIGNvbnRyYWN0cyBwYXNzZWQgc28gdGhlIHRl
c3QgbXVzdAogICAgICAgLy8gY29udGludWUgdG8gcnVuLgogICAgIH0KICAgfQogCiAgIEZhY3Rv
cnkgZmFjdG9yeV87CiAgIE9wZXJhdGlvbiBvcGVyYXRpb25fOwotICBzdGQ6OnR1cGxlPEludmFy
aWFudHMuLi4+IGludmFyaWFudHNfOworICBzdGQ6OnR1cGxlPENvbnRyYWN0cy4uLj4gY29udHJh
Y3RzXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBleGNlcHRpb25zX2ludGVybmFsCkBAIC0xMDk2
LDcgKzEwOTYsNyBAQCBjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0ZXIgewogICogaW5zdGFuY2Vz
IG9mIEV4Y2VwdGlvblNhZmV0eVRlc3Rlci4KICAqCiAgKiBJbiBvcmRlciB0byB0ZXN0IGEgVCBm
b3IgZXhjZXB0aW9uIHNhZmV0eSwgYSBmYWN0b3J5IGZvciB0aGF0IFQsIGEgdGVzdGFibGUKLSAq
IG9wZXJhdGlvbiwgYW5kIGF0IGxlYXN0IG9uZSBpbnZhcmlhbnQgY2FsbGJhY2sgcmV0dXJuaW5n
IGFuIGFzc2VydGlvbgorICogb3BlcmF0aW9uLCBhbmQgYXQgbGVhc3Qgb25lIGNvbnRyYWN0IGNh
bGxiYWNrIHJldHVybmluZyBhbiBhc3NlcnRpb24KICAqIHJlc3VsdCBtdXN0IGJlIGFwcGxpZWQg
dXNpbmcgdGhlIHJlc3BlY3RpdmUgbWV0aG9kcy4KICAqLwogaW5saW5lIGV4Y2VwdGlvbnNfaW50
ZXJuYWw6OkV4Y2VwdGlvblNhZmV0eVRlc3Rlcjw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL2xvd19sZXZlbF9hbGxvYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVs
X2FsbG9jLmNjCmluZGV4IDA2MjZjZDU0NzhkOTcwMDRlYjFlOWNkZTIxNWE5MGU0ODYyZDI5ZjEu
LjE1OWY5NDVmNWVkZDA3MDc4ZjhjYWZjZWE4YjM3MzBhM2U4YzcxOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvbG93X2xldmVsX2FsbG9jLmNjCkBAIC00MDEsMTYgKzQwMSwyMCBAQCBib29sIExvd0xl
dmVsQWxsb2M6OkRlbGV0ZUFyZW5hKEFyZW5hICphcmVuYSkgewogICAgIEFCU0xfUkFXX0NIRUNL
KG11bm1hcF9yZXN1bHQgIT0gMCwKICAgICAgICAgICAgICAgICAgICAiTG93TGV2ZWxBbGxvYzo6
RGVsZXRlQXJlbmE6IFZpdHVhbEZyZWUgZmFpbGVkIik7CiAjZWxzZQorI2lmbmRlZiBBQlNMX0xP
V19MRVZFTF9BTExPQ19BU1lOQ19TSUdOQUxfU0FGRV9NSVNTSU5HCiAgICAgaWYgKChhcmVuYS0+
ZmxhZ3MgJiBMb3dMZXZlbEFsbG9jOjprQXN5bmNTaWduYWxTYWZlKSA9PSAwKSB7CiAgICAgICBt
dW5tYXBfcmVzdWx0ID0gbXVubWFwKHJlZ2lvbiwgc2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAg
IG11bm1hcF9yZXN1bHQgPSBiYXNlX2ludGVybmFsOjpEaXJlY3RNdW5tYXAocmVnaW9uLCBzaXpl
KTsKICAgICB9CisjZWxzZQorICAgIG11bm1hcF9yZXN1bHQgPSBtdW5tYXAocmVnaW9uLCBzaXpl
KTsKKyNlbmRpZiAgLy8gQUJTTF9MT1dfTEVWRUxfQUxMT0NfQVNZTkNfU0lHTkFMX1NBRkVfTUlT
U0lORwogICAgIGlmIChtdW5tYXBfcmVzdWx0ICE9IDApIHsKICAgICAgIEFCU0xfUkFXX0xPRyhG
QVRBTCwgIkxvd0xldmVsQWxsb2M6OkRlbGV0ZUFyZW5hOiBtdW5tYXAgZmFpbGVkOiAlZCIsCiAg
ICAgICAgICAgICAgICAgICAgZXJybm8pOwogICAgIH0KLSNlbmRpZgorI2VuZGlmICAvLyBfV0lO
MzIKICAgfQogICBzZWN0aW9uLkxlYXZlKCk7CiAgIGFyZW5hLT5+QXJlbmEoKTsKQEAgLTU0NSw2
ICs1NDksNyBAQCBzdGF0aWMgdm9pZCAqRG9BbGxvY1dpdGhBcmVuYShzaXplX3QgcmVxdWVzdCwg
TG93TGV2ZWxBbGxvYzo6QXJlbmEgKmFyZW5hKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTUVNX1JFU0VSVkUgfCBNRU1fQ09NTUlULCBQQUdFX1JFQURXUklURSk7CiAgICAgICBB
QlNMX1JBV19DSEVDSyhuZXdfcGFnZXMgIT0gbnVsbHB0ciwgIlZpcnR1YWxBbGxvYyBmYWlsZWQi
KTsKICNlbHNlCisjaWZuZGVmIEFCU0xfTE9XX0xFVkVMX0FMTE9DX0FTWU5DX1NJR05BTF9TQUZF
X01JU1NJTkcKICAgICAgIGlmICgoYXJlbmEtPmZsYWdzICYgTG93TGV2ZWxBbGxvYzo6a0FzeW5j
U2lnbmFsU2FmZSkgIT0gMCkgewogICAgICAgICBuZXdfcGFnZXMgPSBiYXNlX2ludGVybmFsOjpE
aXJlY3RNbWFwKG51bGxwdHIsIG5ld19wYWdlc19zaXplLAogICAgICAgICAgICAgUFJPVF9XUklU
RXxQUk9UX1JFQUQsIE1BUF9BTk9OWU1PVVN8TUFQX1BSSVZBVEUsIC0xLCAwKTsKQEAgLTU1Miwx
MCArNTU3LDE1IEBAIHN0YXRpYyB2b2lkICpEb0FsbG9jV2l0aEFyZW5hKHNpemVfdCByZXF1ZXN0
LCBMb3dMZXZlbEFsbG9jOjpBcmVuYSAqYXJlbmEpIHsKICAgICAgICAgbmV3X3BhZ2VzID0gbW1h
cChudWxscHRyLCBuZXdfcGFnZXNfc2l6ZSwgUFJPVF9XUklURSB8IFBST1RfUkVBRCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBNQVBfQU5PTllNT1VTIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTsK
ICAgICAgIH0KKyNlbHNlCisgICAgICBuZXdfcGFnZXMgPSBtbWFwKG51bGxwdHIsIG5ld19wYWdl
c19zaXplLCBQUk9UX1dSSVRFIHwgUFJPVF9SRUFELAorICAgICAgICAgICAgICAgICAgICAgICBN
QVBfQU5PTllNT1VTIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTsKKyNlbmRpZiAgLy8gQUJTTF9MT1df
TEVWRUxfQUxMT0NfQVNZTkNfU0lHTkFMX1NBRkVfTUlTU0lORwogICAgICAgaWYgKG5ld19wYWdl
cyA9PSBNQVBfRkFJTEVEKSB7CiAgICAgICAgIEFCU0xfUkFXX0xPRyhGQVRBTCwgIm1tYXAgZXJy
b3I6ICVkIiwgZXJybm8pOwogICAgICAgfQotI2VuZGlmCisKKyNlbmRpZiAgLy8gX1dJTjMyCiAg
ICAgICBhcmVuYS0+bXUuTG9jaygpOwogICAgICAgcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8QWxsb2NM
aXN0ICo+KG5ld19wYWdlcyk7CiAgICAgICBzLT5oZWFkZXIuc2l6ZSA9IG5ld19wYWdlc19zaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmgKaW5kZXggM2MxNTYwNWJlZDM1Nzg4
OTkzODljYzRlYTI5NmNlYjViYTU3YTE1ZS4uZmJhOTQ2NmE3NTc0MjdjMDFlZDEyMTQ2NGMzYWIx
MTJkZTIwYzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxs
b2MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvYy5oCkBAIC0zOSwx
MCArMzksMTMgQEAKICNkZWZpbmUgQUJTTF9MT1dfTEVWRUxfQUxMT0NfTUlTU0lORyAxCiAjZW5k
aWYKIAotLy8gVXNpbmcgTG93TGV2ZWxBbGxvYyB3aXRoIGtBc3luY1NpZ25hbFNhZmUgaXNuJ3Qg
c3VwcG9ydGVkIG9uIFdpbmRvd3MuCisvLyBVc2luZyBMb3dMZXZlbEFsbG9jIHdpdGgga0FzeW5j
U2lnbmFsU2FmZSBpc24ndCBzdXBwb3J0ZWQgb24gV2luZG93cyBvcgorLy8gYXNtLmpzIC8gV2Vi
QXNzZW1ibHkuCisvLyBTZWUgaHR0cHM6Ly9rcmlwa2VuLmdpdGh1Yi5pby9lbXNjcmlwdGVuLXNp
dGUvZG9jcy9wb3J0aW5nL3B0aHJlYWRzLmh0bWwKKy8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgog
I2lmZGVmIEFCU0xfTE9XX0xFVkVMX0FMTE9DX0FTWU5DX1NJR05BTF9TQUZFX01JU1NJTkcKICNl
cnJvciBBQlNMX0xPV19MRVZFTF9BTExPQ19BU1lOQ19TSUdOQUxfU0FGRV9NSVNTSU5HIGNhbm5v
dCBiZSBkaXJlY3RseSBzZXQKLSNlbGlmIGRlZmluZWQoX1dJTjMyKQorI2VsaWYgZGVmaW5lZChf
V0lOMzIpIHx8IGRlZmluZWQoX19hc21qc19fKSB8fCBkZWZpbmVkKF9fd2FzbV9fKQogI2RlZmlu
ZSBBQlNMX0xPV19MRVZFTF9BTExPQ19BU1lOQ19TSUdOQUxfU0FGRV9NSVNTSU5HIDEKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgKaW5kZXggNjdhYmZkMzA3OThkYjhmZmY2MGIy
ODRhYTZjOTJkZmUyM2E0NWJlZi4uNzlhN2JiOWIyZjdhNjJiYjE5NjljZWVhYzAxNzgyY2U0ZTlk
ZWM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaApAQCAtMTE0LDcgKzExNCw3IEBAIHZv
aWQgU2FmZVdyaXRlVG9TdGRlcnIoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbik7CiAKIC8vIGNv
bXBpbGUtdGltZSBmdW5jdGlvbiB0byBnZXQgdGhlICJiYXNlIiBmaWxlbmFtZSwgdGhhdCBpcywg
dGhlIHBhcnQgb2YKIC8vIGEgZmlsZW5hbWUgYWZ0ZXIgdGhlIGxhc3QgIi8iIG9yICJcIiBwYXRo
IHNlcGFyYXRvci4gIFRoZSBzZWFyY2ggc3RhcnRzIGF0Ci0vLyB0aGUgZW5kIG9mIHRoZSBzdGQ6
OnN0cmluZzsgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RkOjpz
dHJpbmcuCisvLyB0aGUgZW5kIG9mIHRoZSBzdHJpbmc7IHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlz
IHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4KIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBCYXNlbmFt
ZShjb25zdCBjaGFyKiBmbmFtZSwgaW50IG9mZnNldCkgewogICByZXR1cm4gb2Zmc2V0ID09IDAg
fHwgZm5hbWVbb2Zmc2V0IC0gMV0gPT0gJy8nIHx8IGZuYW1lW29mZnNldCAtIDFdID09ICdcXCcK
ICAgICAgICAgICAgICA/IGZuYW1lICsgb2Zmc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL3NwaW5sb2NrX2xpbnV4LmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tf
bGludXguaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0Yzg2MWRjNmNhMjNjMjhlZDIwODIyODliYTIzZWYyNTM4
NjAxMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX2xp
bnV4LmluYwpAQCAtMCwwICsxLDcyIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vIFRoaXMgZmlsZSBpcyBhIExpbnV4LXNwZWNpZmljIHBhcnQgb2Ygc3Bp
bmxvY2tfd2FpdC5jYworCisjaW5jbHVkZSA8bGludXgvZnV0ZXguaD4KKyNpbmNsdWRlIDxzeXMv
c3lzY2FsbC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8YXRvbWljPgorI2lu
Y2x1ZGUgPGNlcnJubz4KKyNpbmNsdWRlIDxjbGltaXRzPgorI2luY2x1ZGUgPGNzdGRpbnQ+Cisj
aW5jbHVkZSA8Y3RpbWU+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorCisv
LyBUaGUgU3BpbkxvY2sgbG9ja3dvcmQgaXMgYHN0ZDo6YXRvbWljPHVpbnQzMl90PmAuIEhlcmUg
d2UgYXNzZXJ0IHRoYXQKKy8vIGBzdGQ6OmF0b21pYzx1aW50MzJfdD5gIGlzIGJpdHdpc2UgZXF1
aXZhbGVudCBvZiB0aGUgYGludGAgZXhwZWN0ZWQKKy8vIGJ5IFNZU19mdXRleC4gV2UgYWxzbyBh
c3N1bWUgdGhhdCByZWFkcy93cml0ZXMgZG9uZSB0byB0aGUgbG9ja3dvcmQKKy8vIGJ5IFNZU19m
dXRleCBoYXZlIHJhdGlvbmFsIHNlbWFudGljcyB3aXRoIHJlZ2FyZCB0byB0aGUKKy8vIHN0ZDo6
YXRvbWljPD4gQVBJLiBDKysgcHJvdmlkZXMgbm8gZ3VhcmFudGVlcyBvZiB0aGVzZSBhc3N1bXB0
aW9ucywKKy8vIGJ1dCB0aGV5IGFyZSBiZWxpZXZlZCB0byBob2xkIGluIHByYWN0aWNlLgorc3Rh
dGljX2Fzc2VydChzaXplb2Yoc3RkOjphdG9taWM8dWludDMyX3Q+KSA9PSBzaXplb2YoaW50KSwK
KyAgICAgICAgICAgICAgIlNwaW5Mb2NrIGxvY2t3b3JkIGhhcyB0aGUgd3Jvbmcgc2l6ZSBmb3Ig
YSBmdXRleCIpOworCisvLyBTb21lIEFuZHJvaWQgaGVhZGVycyBhcmUgbWlzc2luZyB0aGVzZSBk
ZWZpbml0aW9ucyBldmVuIHRob3VnaCB0aGV5CisvLyBzdXBwb3J0IHRoZXNlIGZ1dGV4IG9wZXJh
dGlvbnMuCisjaWZkZWYgX19CSU9OSUNfXworI2lmbmRlZiBTWVNfZnV0ZXgKKyNkZWZpbmUgU1lT
X2Z1dGV4IF9fTlJfZnV0ZXgKKyNlbmRpZgorI2lmbmRlZiBGVVRFWF9QUklWQVRFX0ZMQUcKKyNk
ZWZpbmUgRlVURVhfUFJJVkFURV9GTEFHIDEyOAorI2VuZGlmCisjZW5kaWYKKworZXh0ZXJuICJD
IiB7CisKK0FCU0xfQVRUUklCVVRFX1dFQUsgdm9pZCBBYnNsSW50ZXJuYWxTcGluTG9ja0RlbGF5
KAorICAgIHN0ZDo6YXRvbWljPHVpbnQzMl90PiAqdywgdWludDMyX3QgdmFsdWUsIGludCBsb29w
LAorICAgIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNjaGVkdWxpbmdNb2RlKSB7CisgIGlmIChsb29w
ICE9IDApIHsKKyAgICBpbnQgc2F2ZV9lcnJubyA9IGVycm5vOworICAgIHN0cnVjdCB0aW1lc3Bl
YyB0bTsKKyAgICB0bS50dl9zZWMgPSAwOworICAgIC8vIEluY3JlYXNlIHRoZSBkZWxheTsgd2Ug
ZXhwZWN0IChidXQgZG8gbm90IHJlbHkgb24pIGV4cGxpY2l0IHdha2V1cHMuCisgICAgLy8gV2Ug
ZG9uJ3QgcmVseSBvbiBleHBsaWNpdCB3YWtldXBzIGJlY2F1c2Ugd2UgaW50ZW50aW9uYWxseSBh
bGxvdyBmb3IKKyAgICAvLyBhIHJhY2Ugb24gdGhlIGtTcGluTG9ja1NsZWVwZXIgYml0LgorICAg
IHRtLnR2X25zZWMgPSAxNiAqIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNwaW5Mb2NrU3VnZ2VzdGVk
RGVsYXlOUyhsb29wKTsKKyAgICBzeXNjYWxsKFNZU19mdXRleCwgdywgRlVURVhfV0FJVCB8IEZV
VEVYX1BSSVZBVEVfRkxBRywgdmFsdWUsICZ0bSk7CisgICAgZXJybm8gPSBzYXZlX2Vycm5vOwor
ICB9Cit9CisKK0FCU0xfQVRUUklCVVRFX1dFQUsgdm9pZCBBYnNsSW50ZXJuYWxTcGluTG9ja1dh
a2Uoc3RkOjphdG9taWM8dWludDMyX3Q+ICp3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGFsbCkgeworICBzeXNjYWxsKFNZU19mdXRleCwg
dywgRlVURVhfV0FLRSB8IEZVVEVYX1BSSVZBVEVfRkxBRywgYWxsID8gSU5UX01BWCA6IDEsIDAp
OworfQorCit9ICAvLyBleHRlcm4gIkMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L3NwaW5sb2NrX3dhaXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3dhaXQuY2MK
aW5kZXggOWY2ZTk5MTFlMTA5NmIyZjE4N2NjNmE4NDMwNTQ0ZTlmYzE2NjMzMy4uMGZkZTljMDRi
NzNiYWY1N2QxMzQ5OTgyMGNiZDQ0NzFmMzVmZGRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9zcGlubG9ja193YWl0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3Bpbmxv
Y2tfd2FpdC5jYwpAQCAtMTMsNyArMTMsNyBAQAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCiAKIC8vIFRoZSBPUy1zcGVjaWZpYyBoZWFkZXIgaW5jbHVkZWQgYmVsb3cgbXVzdCBw
cm92aWRlIHR3byBjYWxsczoKLS8vIGJhc2U6OnN1YnRsZTo6U3BpbkxvY2tEZWxheSgpIGFuZCBi
YXNlOjpzdWJ0bGU6OlNwaW5Mb2NrV2FrZSgpLgorLy8gQWJzbEludGVybmFsU3BpbkxvY2tEZWxh
eSgpIGFuZCBBYnNsSW50ZXJuYWxTcGluTG9ja1dha2UoKS4KIC8vIFNlZSBzcGlubG9ja193YWl0
LmggZm9yIHRoZSBzcGVjcy4KIAogI2luY2x1ZGUgPGF0b21pYz4KQEAgLTIzLDYgKzIzLDggQEAK
IAogI2lmIGRlZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9zcGlu
bG9ja193aW4zMi5pbmMiCisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKKyNpbmNsdWRlICJhYnNs
L2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfbGludXguaW5jIgogI2VsaWYgZGVmaW5lZChfX2FrYXJv
c19fKQogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19ha2Fyb3MuaW5jIgog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuY2MKaW5kZXggNjc4ZTg1Njhk
NzQyMWU1MTQ4ZTlkMTljZDU2ZTY4MDg0YTAwMzcwNS4uY2ZmOWMxYjRmNGRjMzk1NDJiMmFlZDk0
NGM4YzdlZDA2NjNmYTJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRf
aWRlbnRpdHkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuY2MK
QEAgLTY4LDYgKzY4LDE0IEBAIHZvaWQgU2V0Q3VycmVudFRocmVhZElkZW50aXR5KAogICAvLyBO
T1RFOiBOb3QgYXN5bmMtc2FmZS4gIEJ1dCBjYW4gYmUgb3Blbi1jb2RlZC4KICAgYWJzbDo6Y2Fs
bF9vbmNlKGluaXRfdGhyZWFkX2lkZW50aXR5X2tleV9vbmNlLCBBbGxvY2F0ZVRocmVhZElkZW50
aXR5S2V5LAogICAgICAgICAgICAgICAgICAgcmVjbGFpbWVyKTsKKworI2lmZGVmIF9fRU1TQ1JJ
UFRFTl9fCisgIC8vIEVtc2NyaXB0ZW4gUFRocmVhZCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBz
dXBwb3J0IHNpZ25hbHMuCisgIC8vIFNlZSBodHRwczovL2tyaXBrZW4uZ2l0aHViLmlvL2Vtc2Ny
aXB0ZW4tc2l0ZS9kb2NzL3BvcnRpbmcvcHRocmVhZHMuaHRtbAorICAvLyBmb3IgbW9yZSBpbmZv
cm1hdGlvbi4KKyAgcHRocmVhZF9zZXRzcGVjaWZpYyh0aHJlYWRfaWRlbnRpdHlfcHRocmVhZF9r
ZXksCisgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaWRlbnRp
dHkpKTsKKyNlbHNlCiAgIC8vIFdlIG11c3QgbWFzayBzaWduYWxzIGFyb3VuZCB0aGUgY2FsbCB0
byBzZXRzcGVjaWZpYyBhcyB3aXRoIGN1cnJlbnQgZ2xpYmMsCiAgIC8vIGEgY29uY3VycmVudCBn
ZXRzcGVjaWZpYyAobmVlZGVkIGZvciBHZXRDdXJyZW50VGhyZWFkSWRlbnRpdHlJZlByZXNlbnQo
KSkKICAgLy8gbWF5IHplcm8gb3VyIHZhbHVlLgpAQCAtODEsNiArODksOCBAQCB2b2lkIFNldEN1
cnJlbnRUaHJlYWRJZGVudGl0eSgKICAgcHRocmVhZF9zZXRzcGVjaWZpYyh0aHJlYWRfaWRlbnRp
dHlfcHRocmVhZF9rZXksCiAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oaWRlbnRpdHkpKTsKICAgcHRocmVhZF9zaWdtYXNrKFNJR19TRVRNQVNLLCAmY3Vycl9z
aWduYWxzLCBudWxscHRyKTsKKyNlbmRpZiAgLy8gIV9fRU1TQ1JJUFRFTl9fCisKICNlbGlmIEFC
U0xfVEhSRUFEX0lERU5USVRZX01PREUgPT0gQUJTTF9USFJFQURfSURFTlRJVFlfTU9ERV9VU0Vf
VExTCiAgIC8vIE5PVEU6IE5vdCBhc3luYy1zYWZlLiAgQnV0IGNhbiBiZSBvcGVuLWNvZGVkLgog
ICBhYnNsOjpjYWxsX29uY2UoaW5pdF90aHJlYWRfaWRlbnRpdHlfa2V5X29uY2UsIEFsbG9jYXRl
VGhyZWFkSWRlbnRpdHlLZXksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3VuYWxp
Z25lZF9hY2Nlc3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5hbGlnbmVkX2FjY2Vzcy5oCmlu
ZGV4IDVjNzUxN2FiZDcxYTZiZjUyNTA3MTlkMWQ1OGNjN2EwNWE5MDZlMWEuLmY5ZGYzYjc4NDhj
NDBhOTc0ZmQ5Njk3ZGVmOGNmN2ZmYmZlMDI5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50
ZXJuYWwvdW5hbGlnbmVkX2FjY2Vzcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5hbGln
bmVkX2FjY2Vzcy5oCkBAIC02NSw2ICs2NSw3IEBAIHZvaWQgX19zYW5pdGl6ZXJfdW5hbGlnbmVk
X3N0b3JlNjQodm9pZCAqcCwgdWludDY0X3Qgdik7CiB9ICAvLyBleHRlcm4gIkMiCiAKIG5hbWVz
cGFjZSBhYnNsIHsKK25hbWVzcGFjZSBiYXNlX2ludGVybmFsIHsKIAogaW5saW5lIHVpbnQxNl90
IFVuYWxpZ25lZExvYWQxNihjb25zdCB2b2lkICpwKSB7CiAgIHJldHVybiBfX3Nhbml0aXplcl91
bmFsaWduZWRfbG9hZDE2KHApOwpAQCAtOTAsMjIgKzkxLDI3IEBAIGlubGluZSB2b2lkIFVuYWxp
Z25lZFN0b3JlNjQodm9pZCAqcCwgdWludDY0X3QgdikgewogICBfX3Nhbml0aXplcl91bmFsaWdu
ZWRfc3RvcmU2NChwLCB2KTsKIH0KIAorfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKIH0g
IC8vIG5hbWVzcGFjZSBhYnNsCiAKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9B
RDE2KF9wKSAoYWJzbDo6VW5hbGlnbmVkTG9hZDE2KF9wKSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5B
TF9VTkFMSUdORURfTE9BRDMyKF9wKSAoYWJzbDo6VW5hbGlnbmVkTG9hZDMyKF9wKSkKLSNkZWZp
bmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDY0KF9wKSAoYWJzbDo6VW5hbGlnbmVkTG9h
ZDY0KF9wKSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2KF9wKSBcCisg
IChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRMb2FkMTYoX3ApKQorI2RlZmluZSBBQlNM
X0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMzIoX3ApIFwKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6
OlVuYWxpZ25lZExvYWQzMihfcCkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xP
QUQ2NChfcCkgXAorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkTG9hZDY0KF9wKSkK
IAogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTE2KF9wLCBfdmFsKSBcCi0g
IChhYnNsOjpVbmFsaWduZWRTdG9yZTE2KF9wLCBfdmFsKSkKKyAgKGFic2w6OmJhc2VfaW50ZXJu
YWw6OlVuYWxpZ25lZFN0b3JlMTYoX3AsIF92YWwpKQogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VO
QUxJR05FRF9TVE9SRTMyKF9wLCBfdmFsKSBcCi0gIChhYnNsOjpVbmFsaWduZWRTdG9yZTMyKF9w
LCBfdmFsKSkKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZFN0b3JlMzIoX3AsIF92
YWwpKQogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTY0KF9wLCBfdmFsKSBc
Ci0gIChhYnNsOjpVbmFsaWduZWRTdG9yZTY0KF9wLCBfdmFsKSkKKyAgKGFic2w6OmJhc2VfaW50
ZXJuYWw6OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92YWwpKQogCiAjZWxpZiBkZWZpbmVkKFVOREVG
SU5FRF9CRUhBVklPUl9TQU5JVElaRVIpCiAKIG5hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBi
YXNlX2ludGVybmFsIHsKIAogaW5saW5lIHVpbnQxNl90IFVuYWxpZ25lZExvYWQxNihjb25zdCB2
b2lkICpwKSB7CiAgIHVpbnQxNl90IHQ7CkBAIC0xMzEsMTggKzEzNywyMiBAQCBpbmxpbmUgdm9p
ZCBVbmFsaWduZWRTdG9yZTMyKHZvaWQgKnAsIHVpbnQzMl90IHYpIHsgbWVtY3B5KHAsICZ2LCBz
aXplb2Ygdik7IH0KIAogaW5saW5lIHZvaWQgVW5hbGlnbmVkU3RvcmU2NCh2b2lkICpwLCB1aW50
NjRfdCB2KSB7IG1lbWNweShwLCAmdiwgc2l6ZW9mIHYpOyB9CiAKK30gIC8vIG5hbWVzcGFjZSBi
YXNlX2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAogCi0jZGVmaW5lIEFCU0xfSU5URVJO
QUxfVU5BTElHTkVEX0xPQUQxNihfcCkgKGFic2w6OlVuYWxpZ25lZExvYWQxNihfcCkpCi0jZGVm
aW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQzMihfcCkgKGFic2w6OlVuYWxpZ25lZExv
YWQzMihfcCkpCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQ2NChfcCkgKGFi
c2w6OlVuYWxpZ25lZExvYWQ2NChfcCkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVE
X0xPQUQxNihfcCkgXAorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkTG9hZDE2KF9w
KSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDMyKF9wKSBcCisgIChhYnNs
OjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRMb2FkMzIoX3ApKQorI2RlZmluZSBBQlNMX0lOVEVS
TkFMX1VOQUxJR05FRF9MT0FENjQoX3ApIFwKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxp
Z25lZExvYWQ2NChfcCkpCiAKICNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkUx
NihfcCwgX3ZhbCkgXAotICAoYWJzbDo6VW5hbGlnbmVkU3RvcmUxNihfcCwgX3ZhbCkpCisgIChh
YnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRTdG9yZTE2KF9wLCBfdmFsKSkKICNkZWZpbmUg
QUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkUzMihfcCwgX3ZhbCkgXAotICAoYWJzbDo6VW5h
bGlnbmVkU3RvcmUzMihfcCwgX3ZhbCkpCisgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWdu
ZWRTdG9yZTMyKF9wLCBfdmFsKSkKICNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RP
UkU2NChfcCwgX3ZhbCkgXAotICAoYWJzbDo6VW5hbGlnbmVkU3RvcmU2NChfcCwgX3ZhbCkpCisg
IChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRTdG9yZTY0KF9wLCBfdmFsKSkKIAogI2Vs
aWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkgfHwgZGVmaW5lZChfX2kz
ODYpIHx8IFwKICAgICBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX19wcGNfXykgfHwgZGVm
aW5lZChfX1BQQ19fKSB8fCAgICBcCkBAIC0xOTksNyArMjA5LDcgQEAgaW5saW5lIHZvaWQgVW5h
bGlnbmVkU3RvcmU2NCh2b2lkICpwLCB1aW50NjRfdCB2KSB7IG1lbWNweShwLCAmdiwgc2l6ZW9m
IHYpOyB9CiAvLyBzbyB3ZSBkbyB0aGF0LgogCiBuYW1lc3BhY2UgYWJzbCB7Ci1uYW1lc3BhY2Ug
aW50ZXJuYWwgeworbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgewogCiBzdHJ1Y3QgVW5hbGlnbmVk
MTZTdHJ1Y3QgewogICB1aW50MTZfdCB2YWx1ZTsKQEAgLTIxMSwyMiArMjIxLDI1IEBAIHN0cnVj
dCBVbmFsaWduZWQzMlN0cnVjdCB7CiAgIHVpbnQ4X3QgZHVtbXk7ICAvLyBUbyBtYWtlIHRoZSBz
aXplIG5vbi1wb3dlci1vZi10d28uCiB9IEFCU0xfQVRUUklCVVRFX1BBQ0tFRDsKIAotfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYmFzZV9pbnRlcm5hbAogfSAgLy8g
bmFtZXNwYWNlIGFic2wKIAotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMTYo
X3ApIFwKLSAgKChyZWludGVycHJldF9jYXN0PGNvbnN0IDo6YWJzbDo6aW50ZXJuYWw6OlVuYWxp
Z25lZDE2U3RydWN0ICo+KF9wKSktPnZhbHVlKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJ
R05FRF9MT0FEMzIoX3ApIFwKLSAgKChyZWludGVycHJldF9jYXN0PGNvbnN0IDo6YWJzbDo6aW50
ZXJuYWw6OlVuYWxpZ25lZDMyU3RydWN0ICo+KF9wKSktPnZhbHVlKQorI2RlZmluZSBBQlNMX0lO
VEVSTkFMX1VOQUxJR05FRF9MT0FEMTYoX3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgKChyZWludGVycHJldF9jYXN0PGNvbnN0IDo6YWJzbDo6YmFzZV9pbnRlcm5hbDo6
VW5hbGlnbmVkMTZTdHJ1Y3QgKj4oX3ApKSBcCisgICAgICAgLT52YWx1ZSkKKyNkZWZpbmUgQUJT
TF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDMyKF9wKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICgocmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OmFic2w6OmJhc2VfaW50ZXJu
YWw6OlVuYWxpZ25lZDMyU3RydWN0ICo+KF9wKSkgXAorICAgICAgIC0+dmFsdWUpCiAKLSNkZWZp
bmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkUxNihfcCwgX3ZhbCkgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgKChyZWludGVycHJldF9jYXN0PCA6OmFic2w6OmludGVybmFsOjpV
bmFsaWduZWQxNlN0cnVjdCAqPihfcCkpLT52YWx1ZSA9IFwKLSAgICAgICAoX3ZhbCkpCi0jZGVm
aW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFMzIoX3AsIF92YWwpICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICgocmVpbnRlcnByZXRfY2FzdDwgOjphYnNsOjppbnRlcm5hbDo6
VW5hbGlnbmVkMzJTdHJ1Y3QgKj4oX3ApKS0+dmFsdWUgPSBcCi0gICAgICAgKF92YWwpKQorI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTE2KF9wLCBfdmFsKSAgICAgICAgICAg
ICAgICAgICAgICBcCisgICgocmVpbnRlcnByZXRfY2FzdDwgOjphYnNsOjpiYXNlX2ludGVybmFs
OjpVbmFsaWduZWQxNlN0cnVjdCAqPihfcCkpIFwKKyAgICAgICAtPnZhbHVlID0gKF92YWwpKQor
I2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTMyKF9wLCBfdmFsKSAgICAgICAg
ICAgICAgICAgICAgICBcCisgICgocmVpbnRlcnByZXRfY2FzdDwgOjphYnNsOjpiYXNlX2ludGVy
bmFsOjpVbmFsaWduZWQzMlN0cnVjdCAqPihfcCkpIFwKKyAgICAgICAtPnZhbHVlID0gKF92YWwp
KQogCiBuYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7CiAKIGlubGlu
ZSB1aW50NjRfdCBVbmFsaWduZWRMb2FkNjQoY29uc3Qgdm9pZCAqcCkgewogICB1aW50NjRfdCB0
OwpAQCAtMjM2LDExICsyNDksMTMgQEAgaW5saW5lIHVpbnQ2NF90IFVuYWxpZ25lZExvYWQ2NChj
b25zdCB2b2lkICpwKSB7CiAKIGlubGluZSB2b2lkIFVuYWxpZ25lZFN0b3JlNjQodm9pZCAqcCwg
dWludDY0X3QgdikgeyBtZW1jcHkocCwgJnYsIHNpemVvZiB2KTsgfQogCit9ICAvLyBuYW1lc3Bh
Y2UgYmFzZV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIAotI2RlZmluZSBBQlNMX0lO
VEVSTkFMX1VOQUxJR05FRF9MT0FENjQoX3ApIChhYnNsOjpVbmFsaWduZWRMb2FkNjQoX3ApKQor
I2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FENjQoX3ApIFwKKyAgKGFic2w6OmJh
c2VfaW50ZXJuYWw6OlVuYWxpZ25lZExvYWQ2NChfcCkpCiAjZGVmaW5lIEFCU0xfSU5URVJOQUxf
VU5BTElHTkVEX1NUT1JFNjQoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVuYWxpZ25lZFN0b3JlNjQo
X3AsIF92YWwpKQorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmU2NChfcCwg
X3ZhbCkpCiAKICNlbHNlCiAKQEAgLTI1Miw2ICsyNjcsNyBAQCBpbmxpbmUgdm9pZCBVbmFsaWdu
ZWRTdG9yZTY0KHZvaWQgKnAsIHVpbnQ2NF90IHYpIHsgbWVtY3B5KHAsICZ2LCBzaXplb2Ygdik7
IH0KIC8vIHVuYWxpZ25lZCBsb2FkcyBhbmQgc3RvcmVzLgogCiBuYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7CiAKIGlubGluZSB1aW50MTZfdCBVbmFsaWduZWRMb2Fk
MTYoY29uc3Qgdm9pZCAqcCkgewogICB1aW50MTZfdCB0OwpAQCAtMjc3LDE4ICsyOTMsMjIgQEAg
aW5saW5lIHZvaWQgVW5hbGlnbmVkU3RvcmUzMih2b2lkICpwLCB1aW50MzJfdCB2KSB7IG1lbWNw
eShwLCAmdiwgc2l6ZW9mIHYpOyB9CiAKIGlubGluZSB2b2lkIFVuYWxpZ25lZFN0b3JlNjQodm9p
ZCAqcCwgdWludDY0X3QgdikgeyBtZW1jcHkocCwgJnYsIHNpemVvZiB2KTsgfQogCit9ICAvLyBu
YW1lc3BhY2UgYmFzZV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIAotI2RlZmluZSBB
QlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMTYoX3ApIChhYnNsOjpVbmFsaWduZWRMb2FkMTYo
X3ApKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMzIoX3ApIChhYnNsOjpV
bmFsaWduZWRMb2FkMzIoX3ApKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FE
NjQoX3ApIChhYnNsOjpVbmFsaWduZWRMb2FkNjQoX3ApKQorI2RlZmluZSBBQlNMX0lOVEVSTkFM
X1VOQUxJR05FRF9MT0FEMTYoX3ApIFwKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25l
ZExvYWQxNihfcCkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQzMihfcCkg
XAorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkTG9hZDMyKF9wKSkKKyNkZWZpbmUg
QUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDY0KF9wKSBcCisgIChhYnNsOjpiYXNlX2ludGVy
bmFsOjpVbmFsaWduZWRMb2FkNjQoX3ApKQogCiAjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElH
TkVEX1NUT1JFMTYoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVuYWxpZ25lZFN0b3JlMTYoX3AsIF92
YWwpKQorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmUxNihfcCwgX3ZhbCkp
CiAjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFMzIoX3AsIF92YWwpIFwKLSAg
KGFic2w6OlVuYWxpZ25lZFN0b3JlMzIoX3AsIF92YWwpKQorICAoYWJzbDo6YmFzZV9pbnRlcm5h
bDo6VW5hbGlnbmVkU3RvcmUzMihfcCwgX3ZhbCkpCiAjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5B
TElHTkVEX1NUT1JFNjQoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVuYWxpZ25lZFN0b3JlNjQoX3As
IF92YWwpKQorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmU2NChfcCwgX3Zh
bCkpCiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9sb2dfc2V2ZXJpdHkuaAppbmRleCBlMjkzMWMzNGQxZGY1NGE3YmJmN2VkNzFk
ZTg1ODUwMzM2MmM3MzM3Li41NzcwZDM2MjllNzI2NDY4OWY2MDI5Y2I2ZDY0Mjg1NTQ1YmY0ZmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
bG9nX3NldmVyaXR5LmgKQEAgLTM5LDcgKzM5LDcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8YWJz
bDo6TG9nU2V2ZXJpdHksIDQ+IExvZ1NldmVyaXRpZXMoKSB7CiAgICAgICAgICAgIGFic2w6Okxv
Z1NldmVyaXR5OjprRXJyb3IsIGFic2w6OkxvZ1NldmVyaXR5OjprRmF0YWx9fTsKIH0KIAotLy8g
UmV0dXJucyB0aGUgYWxsLWNhcHMgc3RkOjpzdHJpbmcgcmVwcmVzZW50YXRpb24gKGUuZy4gIklO
Rk8iKSBvZiB0aGUgc3BlY2lmaWVkCisvLyBSZXR1cm5zIHRoZSBhbGwtY2FwcyBzdHJpbmcgcmVw
cmVzZW50YXRpb24gKGUuZy4gIklORk8iKSBvZiB0aGUgc3BlY2lmaWVkCiAvLyBzZXZlcml0eSBs
ZXZlbCBpZiBpdCBpcyBvbmUgb2YgdGhlIG5vcm1hbCBsZXZlbHMgYW5kICJVTktOT1dOIiBvdGhl
cndpc2UuCiBjb25zdGV4cHIgY29uc3QgY2hhciogTG9nU2V2ZXJpdHlOYW1lKGFic2w6OkxvZ1Nl
dmVyaXR5IHMpIHsKICAgcmV0dXJuIHMgPT0gYWJzbDo6TG9nU2V2ZXJpdHk6OmtJbmZvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL3Jhd19sb2dnaW5nX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3Jhd19s
b2dnaW5nX3Rlc3QuY2MKaW5kZXggZWJiYzVkYjkwNjcyN2Y2Y2IyYzAzYTYzZTk5YTg5N2Y1Y2Vi
NWFhNC4uYjIxY2Y2NTE3NThlM2MyNDkyNjJlNjljMWM4YmExN2MxYzlhN2FlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9yYXdfbG9nZ2luZ190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvcmF3X2xv
Z2dpbmdfdGVzdC5jYwpAQCAtNDAsNyArNDAsNyBAQCBURVNUKFJhd0xvZ2dpbmdDb21waWxhdGlv
blRlc3QsIFBhc3NpbmdDaGVjaykgewogfQogCiAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdXBwb3J0
IG91dHB1dCBmcm9tIHJhdyBsb2csIHNvIHdlIGRvbid0IHZlcmlmeSBhbnkKLS8vIHBhcnRpY3Vs
YXIgb3V0cHV0IGZvciBSQVcgY2hlY2sgZmFpbHVyZXMgKGV4cGVjdGluZyB0aGUgZW1wdHkgc3Rk
OjpzdHJpbmcKKy8vIHBhcnRpY3VsYXIgb3V0cHV0IGZvciBSQVcgY2hlY2sgZmFpbHVyZXMgKGV4
cGVjdGluZyB0aGUgZW1wdHkgc3RyaW5nCiAvLyBhY2NvbXBsaXNoZXMgdGhpcykuICBUaGlzIHRl
c3QgaXMgcHJpbWFyaWx5IGEgY29tcGlsYXRpb24gdGVzdCwgYnV0IHdlCiAvLyBhcmUgdmVyaWZ5
aW5nIHByb2Nlc3MgZGVhdGggd2hlbiBFWFBFQ1RfREVBVEggd29ya3MgZm9yIGEgcGxhdGZvcm0u
CiBjb25zdCBjaGFyIGtFeHBlY3RlZERlYXRoT3V0cHV0W10gPSAiIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5iYXplbApp
bmRleCA2ZDVjOTU4ZjM4MmJhNjM5N2YwYjBkZjFjZjk5NjY3OGE3YTNjNWE2Li5mMjIxMGUzYzE5
Nzk4M2ZhYjYwMzRkODE4MTU0Nzc5YjcxNzMyZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmJhemVsCkBAIC0xOSw2
ICsxOSw3IEBAIGxvYWQoCiAgICAgIkFCU0xfREVGQVVMVF9DT1BUUyIsCiAgICAgIkFCU0xfVEVT
VF9DT1BUUyIsCiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHIiwKKyAgICAiQUJTTF9FWENFUFRJ
T05TX0ZMQUdfTElOS09QVFMiLAogKQogCiBwYWNrYWdlKGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsi
Ly92aXNpYmlsaXR5OnB1YmxpYyJdKQpAQCAtNjIsOSArNjMsMTEgQEAgY2NfdGVzdCgKICAgICBu
YW1lID0gImZpeGVkX2FycmF5X3Rlc3QiLAogICAgIHNyY3MgPSBbImZpeGVkX2FycmF5X3Rlc3Qu
Y2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFH
LAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIjpmaXhlZF9hcnJheSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNl
cHRpb25fdGVzdGluZyIsCisgICAgICAgICIvL2Fic2wvaGFzaDpoYXNoX3Rlc3RpbmciLAogICAg
ICAgICAiLy9hYnNsL21lbW9yeSIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86
Z3Rlc3RfbWFpbiIsCiAgICAgXSwKQEAgLTc3LDYgKzgwLDcgQEAgY2NfdGVzdCgKICAgICBkZXBz
ID0gWwogICAgICAgICAiOmZpeGVkX2FycmF5IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4Y2Vw
dGlvbl90ZXN0aW5nIiwKKyAgICAgICAgIi8vYWJzbC9oYXNoOmhhc2hfdGVzdGluZyIsCiAgICAg
ICAgICIvL2Fic2wvbWVtb3J5IiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpn
dGVzdF9tYWluIiwKICAgICBdLApAQCAtODYsNiArOTAsNyBAQCBjY190ZXN0KAogICAgIG5hbWUg
PSAiZml4ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0IiwKICAgICBzcmNzID0gWyJmaXhl
ZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVT
VF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENF
UFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpmaXhlZF9hcnJh
eSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmciLApAQCAt
MTIwLDEyICsxMjUsMTQgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImlubGluZWRfdmVjdG9yX3Rl
c3QiLAogICAgIHNyY3MgPSBbImlubGluZWRfdmVjdG9yX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxpbmtvcHRzID0g
QUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpp
bmxpbmVkX3ZlY3RvciIsCiAgICAgICAgICI6dGVzdF9pbnN0YW5jZV90cmFja2VyIiwKICAgICAg
ICAgIi8vYWJzbC9iYXNlIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAg
ICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fdGVzdGluZyIsCisgICAgICAgICIvL2Fic2wv
aGFzaDpoYXNoX3Rlc3RpbmciLAogICAgICAgICAiLy9hYnNsL21lbW9yeSIsCiAgICAgICAgICIv
L2Fic2wvc3RyaW5ncyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3Rf
bWFpbiIsCkBAIC0xNDIsNiArMTQ5LDcgQEAgY2NfdGVzdCgKICAgICAgICAgIi8vYWJzbC9iYXNl
IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgICAgICIvL2Fic2wv
YmFzZTpleGNlcHRpb25fdGVzdGluZyIsCisgICAgICAgICIvL2Fic2wvaGFzaDpoYXNoX3Rlc3Rp
bmciLAogICAgICAgICAiLy9hYnNsL21lbW9yeSIsCiAgICAgICAgICIvL2Fic2wvc3RyaW5ncyIs
CiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCkBAIC0xODEs
MyArMTg5LDQ1OSBAQCBjY190ZXN0KAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8v
Omd0ZXN0X21haW4iLAogICAgIF0sCiApCisKK05PVEVTVF9UQUdTX05PTk1PQklMRSA9IFsKKyAg
ICAibm9fdGVzdF9kYXJ3aW5feDg2XzY0IiwKKyAgICAibm9fdGVzdF9sb29uaXgiLAorXQorCitO
T1RFU1RfVEFHU19NT0JJTEUgPSBbCisgICAgIm5vX3Rlc3RfYW5kcm9pZF9hcm0iLAorICAgICJu
b190ZXN0X2FuZHJvaWRfYXJtNjQiLAorICAgICJub190ZXN0X2FuZHJvaWRfeDg2IiwKKyAgICAi
bm9fdGVzdF9pb3NfeDg2XzY0IiwKK10KKworTk9URVNUX1RBR1MgPSBOT1RFU1RfVEFHU19NT0JJ
TEUgKyBOT1RFU1RfVEFHU19OT05NT0JJTEUKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImZs
YXRfaGFzaF9tYXAiLAorICAgIGhkcnMgPSBbImZsYXRfaGFzaF9tYXAuaCJdLAorICAgIGNvcHRz
ID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29udGFpbmVy
X21lbW9yeSIsCisgICAgICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCisgICAgICAgICI6
cmF3X2hhc2hfbWFwIiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgIF0sCispCisKK2Nj
X3Rlc3QoCisgICAgbmFtZSA9ICJmbGF0X2hhc2hfbWFwX3Rlc3QiLAorICAgIHNyY3MgPSBbImZs
YXRfaGFzaF9tYXBfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgWyIt
RFVOT1JERVJFRF9NQVBfQ1hYMTciXSwKKyAgICB0YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxF
LAorICAgIGRlcHMgPSBbCisgICAgICAgICI6ZmxhdF9oYXNoX21hcCIsCisgICAgICAgICI6aGFz
aF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgICAgICI6dW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rv
cl90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0IiwKKyAgICAgICAg
Ijp1bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0IiwKKyAgICAgICAgIi8vYWJzbC90eXBlczph
bnkiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAg
IF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJmbGF0X2hhc2hfc2V0IiwKKyAgICBo
ZHJzID0gWyJmbGF0X2hhc2hfc2V0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BU
UywKKyAgICBkZXBzID0gWworICAgICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICAgICAi
Omhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAorICAgICAgICAiOnJhd19oYXNoX3NldCIsCisgICAg
ICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL21lbW9yeSIs
CisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImZsYXRfaGFzaF9zZXRfdGVzdCIs
CisgICAgc3JjcyA9IFsiZmxhdF9oYXNoX3NldF90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNM
X1RFU1RfQ09QVFMgKyBbIi1EVU5PUkRFUkVEX1NFVF9DWFgxNyJdLAorICAgIHRhZ3MgPSBOT1RF
U1RfVEFHU19OT05NT0JJTEUsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpmbGF0X2hhc2hfc2V0
IiwKKyAgICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAgICAgIjp1bm9yZGVy
ZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QiLAorICAgICAgICAiOnVub3JkZXJlZF9zZXRfbG9va3Vw
X3Rlc3QiLAorICAgICAgICAiOnVub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QiLAorICAgICAg
ICAiLy9hYnNsL21lbW9yeSIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfbGli
cmFyeSgKKyAgICBuYW1lID0gIm5vZGVfaGFzaF9tYXAiLAorICAgIGhkcnMgPSBbIm5vZGVfaGFz
aF9tYXAuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMgPSBb
CisgICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgICAgICI6aGFzaF9mdW5jdGlvbl9k
ZWZhdWx0cyIsCisgICAgICAgICI6bm9kZV9oYXNoX3BvbGljeSIsCisgICAgICAgICI6cmF3X2hh
c2hfbWFwIiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgIF0sCispCisKK2NjX3Rlc3Qo
CisgICAgbmFtZSA9ICJub2RlX2hhc2hfbWFwX3Rlc3QiLAorICAgIHNyY3MgPSBbIm5vZGVfaGFz
aF9tYXBfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgWyItRFVOT1JE
RVJFRF9NQVBfQ1hYMTciXSwKKyAgICB0YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxFLAorICAg
IGRlcHMgPSBbCisgICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgICAgICI6
bm9kZV9oYXNoX21hcCIsCisgICAgICAgICI6dHJhY2tlZCIsCisgICAgICAgICI6dW5vcmRlcmVk
X21hcF9jb25zdHJ1Y3Rvcl90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfbWFwX2xvb2t1cF90
ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0IiwKKyAgICAgICAg
IkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY19s
aWJyYXJ5KAorICAgIG5hbWUgPSAibm9kZV9oYXNoX3NldCIsCisgICAgaGRycyA9IFsibm9kZV9o
YXNoX3NldC5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9
IFsKKyAgICAgICAgIjpjb250YWluZXJfbWVtb3J5IiwKKyAgICAgICAgIjpoYXNoX2Z1bmN0aW9u
X2RlZmF1bHRzIiwKKyAgICAgICAgIjpub2RlX2hhc2hfcG9saWN5IiwKKyAgICAgICAgIjpyYXdf
aGFzaF9zZXQiLAorICAgICAgICAiLy9hYnNsL21lbW9yeSIsCisgICAgXSwKKykKKworY2NfdGVz
dCgKKyAgICBuYW1lID0gIm5vZGVfaGFzaF9zZXRfdGVzdCIsCisgICAgc3JjcyA9IFsibm9kZV9o
YXNoX3NldF90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBbIi1EVU5P
UkRFUkVEX1NFVF9DWFgxNyJdLAorICAgIHRhZ3MgPSBOT1RFU1RfVEFHU19OT05NT0JJTEUsCisg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAgICAg
Ijpub2RlX2hhc2hfc2V0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rl
c3QiLAorICAgICAgICAiOnVub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QiLAorICAgICAgICAiOnVu
b3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xl
dGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9
ICJjb250YWluZXJfbWVtb3J5IiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9jb250YWluZXJfbWVt
b3J5LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBzID0gWwor
ICAgICAgICAiLy9hYnNsL21lbW9yeSIsCisgICAgICAgICIvL2Fic2wvdXRpbGl0eSIsCisgICAg
XSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImNvbnRhaW5lcl9tZW1vcnlfdGVzdCIsCisg
ICAgc3JjcyA9IFsiaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeV90ZXN0LmNjIl0sCisgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwK
KyAgICBkZXBzID0gWworICAgICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICAgICAiLy9h
YnNsL3N0cmluZ3MiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21h
aW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJoYXNoX2Z1bmN0aW9u
X2RlZmF1bHRzIiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRz
LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBzID0gWworICAg
ICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKKyAgICAgICAgIi8vYWJzbC9oYXNoIiwKKyAgICAg
ICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAi
aGFzaF9mdW5jdGlvbl9kZWZhdWx0c190ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9oYXNo
X2Z1bmN0aW9uX2RlZmF1bHRzX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UywKKyAgICB0YWdzID0gTk9URVNUX1RBR1MsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpoYXNo
X2Z1bmN0aW9uX2RlZmF1bHRzIiwKKyAgICAgICAgIi8vYWJzbC9oYXNoIiwKKyAgICAgICAgIi8v
YWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9t
YWluIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFzaF9nZW5lcmF0
b3JfdGVzdGluZyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImludGVybmFsL2hh
c2hfZ2VuZXJhdG9yX3Rlc3RpbmcuY2MiXSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNoX2dl
bmVyYXRvcl90ZXN0aW5nLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBk
ZXBzID0gWworICAgICAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICAgICAiLy9hYnNs
L21ldGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgIF0sCisp
CisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICB0
ZXN0b25seSA9IDEsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5o
Il0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAg
Ii8vYWJzbC9oYXNoIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICBdLAorKQorCitj
Y190ZXN0KAorICAgIG5hbWUgPSAiaGFzaF9wb2xpY3lfdGVzdGluZ190ZXN0IiwKKyAgICBzcmNz
ID0gWyJpbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2hfcG9saWN5X3Rl
c3RpbmciLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAor
ICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJoYXNoX3BvbGljeV90cmFpdHMi
LAorICAgIGhkcnMgPSBbImludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oIl0sCisgICAgY29w
dHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsiLy9hYnNsL21ldGE6dHlwZV90
cmFpdHMiXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImhhc2hfcG9saWN5X3RyYWl0c190
ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHNfdGVzdC5jYyJd
LAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6
aGFzaF9wb2xpY3lfdHJhaXRzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpn
dGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFzaHRh
YmxlX2RlYnVnIiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNodGFibGVfZGVidWcuaCJdLAor
ICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6
aGFzaHRhYmxlX2RlYnVnX2hvb2tzIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5h
bWUgPSAiaGFzaHRhYmxlX2RlYnVnX2hvb2tzIiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNo
dGFibGVfZGVidWdfaG9va3MuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAor
KQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAibm9kZV9oYXNoX3BvbGljeSIsCisgICAgaGRy
cyA9IFsiaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RF
RkFVTFRfQ09QVFMsCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJub2RlX2hhc2hfcG9saWN5
X3Rlc3QiLAorICAgIHNyY3MgPSBbImludGVybmFsL25vZGVfaGFzaF9wb2xpY3lfdGVzdC5jYyJd
LAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6
aGFzaF9wb2xpY3lfdHJhaXRzIiwKKyAgICAgICAgIjpub2RlX2hhc2hfcG9saWN5IiwKKyAgICAg
ICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitj
Y19saWJyYXJ5KAorICAgIG5hbWUgPSAicmF3X2hhc2hfbWFwIiwKKyAgICBoZHJzID0gWyJpbnRl
cm5hbC9yYXdfaGFzaF9tYXAuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAor
ICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgICAgICI6cmF3
X2hhc2hfc2V0IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAicmF3X2hh
c2hfc2V0IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MiXSwKKyAgICBo
ZHJzID0gWyJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZB
VUxUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29tcHJlc3NlZF90dXBsZSIsCisg
ICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgICAgICI6aGFzaF9wb2xpY3lfdHJhaXRz
IiwKKyAgICAgICAgIjpoYXNodGFibGVfZGVidWdfaG9va3MiLAorICAgICAgICAiOmxheW91dCIs
CisgICAgICAgICIvL2Fic2wvYmFzZTpiaXRzIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZp
ZyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNs
L2Jhc2U6ZW5kaWFuIiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgICAgICAiLy9hYnNs
L21ldGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAg
ICAgICAgIi8vYWJzbC91dGlsaXR5IiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUg
PSAicmF3X2hhc2hfc2V0X3Rlc3QiLAorICAgIHNyY3MgPSBbImludGVybmFsL3Jhd19oYXNoX3Nl
dF90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua3N0YXRp
YyA9IDEsCisgICAgdGFncyA9IE5PVEVTVF9UQUdTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6
Y29udGFpbmVyX21lbW9yeSIsCisgICAgICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCisg
ICAgICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgICAgICI6aGFzaHRhYmxlX2RlYnVn
IiwKKyAgICAgICAgIjpyYXdfaGFzaF9zZXQiLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAg
ICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdz
IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBd
LAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAicmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90ZXN0
IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9yYXdfaGFzaF9z
ZXRfYWxsb2NhdG9yX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAg
ICBkZXBzID0gWworICAgICAgICAiOnJhd19oYXNoX3NldCIsCisgICAgICAgICI6dHJhY2tlZCIs
CisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiQGNvbV9nb29n
bGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisg
ICAgbmFtZSA9ICJsYXlvdXQiLAorICAgIGhkcnMgPSBbImludGVybmFsL2xheW91dC5oIl0sCisg
ICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8v
YWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0
cyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6c3Bh
biIsCisgICAgICAgICIvL2Fic2wvdXRpbGl0eSIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAg
ICBuYW1lID0gImxheW91dF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0g
WyJpbnRlcm5hbC9sYXlvdXRfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRT
LAorICAgIHRhZ3MgPSBOT1RFU1RfVEFHUywKKyAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxp
dHk6cHJpdmF0ZSJdLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6bGF5b3V0IiwKKyAgICAgICAg
Ii8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAg
ICAgICIvL2Fic2wvdHlwZXM6c3BhbiIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0
Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInRy
YWNrZWQiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC90cmFja2Vk
LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKykKKworY2NfbGlicmFyeSgKKyAg
ICBuYW1lID0gInVub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdCIsCisgICAgdGVzdG9ubHkg
PSAxLAorICAgIGhkcnMgPSBbImludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVz
dC5oIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAg
ICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0
aW5nIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdCIsCisgICAgXSwK
KykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInVub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3Qi
LAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfbWFw
X2xvb2t1cF90ZXN0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBz
ID0gWworICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICAgICAiOmhhc2hf
cG9saWN5X3Rlc3RpbmciLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0
IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAidW5vcmRlcmVkX21hcF9t
b2RpZmllcnNfdGVzdCIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBbImludGVybmFs
L3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCJdLAorICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIs
CisgICAgICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgICAgICJAY29tX2dvb2dsZV9n
b29nbGV0ZXN0Ly86Z3Rlc3QiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9
ICJ1bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAg
ICBoZHJzID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCJdLAor
ICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFz
aF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCisg
ICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3QiLAorICAgIF0sCispCisKK2Nj
X2xpYnJhcnkoCisgICAgbmFtZSA9ICJ1bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0IiwKKyAgICB0
ZXN0b25seSA9IDEsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9sb29rdXBf
dGVzdC5oIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAg
ICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAgICAgIjpoYXNoX3BvbGljeV90
ZXN0aW5nIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdCIsCisgICAg
XSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInVub3JkZXJlZF9zZXRfbW9kaWZpZXJz
X3Rlc3QiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC91bm9yZGVy
ZWRfc2V0X21vZGlmaWVyc190ZXN0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywK
KyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICAg
ICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVz
dC8vOmd0ZXN0IiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAidW5vcmRlcmVk
X3NldF90ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X3Rlc3QuY2Mi
XSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0gTk9URVNUX1RBR1Nf
Tk9OTU9CSUxFLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6dW5vcmRlcmVkX3NldF9jb25zdHJ1
Y3Rvcl90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0IiwKKyAgICAg
ICAgIjp1bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0IiwKKyAgICAgICAgIkBjb21fZ29vZ2xl
X2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5h
bWUgPSAidW5vcmRlcmVkX21hcF90ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC91bm9yZGVy
ZWRfbWFwX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdz
ID0gTk9URVNUX1RBR1NfTk9OTU9CSUxFLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6dW5vcmRl
cmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfbWFwX2xvb2t1
cF90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0IiwKKyAgICAg
ICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxE
LmduCmluZGV4IDAwMWEyYTM2ZDQ4NDZkNTdlODUxZjgxNDNmOGFhYTVjOTkxNTgzMGEuLmEyZmJk
NTQzMzE2ZDQ1NmI1ZGYxNDczMTMzZTMxZDA0MDliNzI3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvQlVJTEQuZ24KQEAgLTg0LDMg
Kzg0LDM4OSBAQCBzb3VyY2Vfc2V0KCJ0ZXN0X2luc3RhbmNlX3RyYWNrZXIiKSB7CiAgIHZpc2li
aWxpdHkgPSBbXQogICB2aXNpYmlsaXR5ICs9IFsgIi4uLyoiIF0KIH0KKworc291cmNlX3NldCgi
ZmxhdF9oYXNoX21hcCIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0g
WworICAgICJmbGF0X2hhc2hfbWFwLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb250YWlu
ZXJfbWVtb3J5IiwKKyAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAorICAgICI6cmF3X2hh
c2hfbWFwIiwKKyAgICAiLi4vbWVtb3J5IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJmbGF0X2hh
c2hfc2V0IikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9t
aXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVy
Om5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9k
ZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAg
ImZsYXRfaGFzaF9zZXQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNvbnRhaW5lcl9tZW1v
cnkiLAorICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCisgICAgIjpyYXdfaGFzaF9zZXQi
LAorICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL21lbW9yeSIsCisgIF0KK30K
Kworc291cmNlX3NldCgibm9kZV9oYXNoX21hcCIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxk
L2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIv
L2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19j
b25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWci
IF0KKyAgcHVibGljID0gWworICAgICJub2RlX2hhc2hfbWFwLmgiLAorICBdCisgIGRlcHMgPSBb
CisgICAgIjpjb250YWluZXJfbWVtb3J5IiwKKyAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMi
LAorICAgICI6bm9kZV9oYXNoX3BvbGljeSIsCisgICAgIjpyYXdfaGFzaF9tYXAiLAorICAgICIu
Li9tZW1vcnkiLAorICBdCit9CisKK3NvdXJjZV9zZXQoIm5vZGVfaGFzaF9zZXQiKSB7CisgIGNv
bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBj
b25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29k
ZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2Nj
IiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAibm9kZV9oYXNoX3NldC5o
IiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgIjpoYXNo
X2Z1bmN0aW9uX2RlZmF1bHRzIiwKKyAgICAiOm5vZGVfaGFzaF9wb2xpY3kiLAorICAgICI6cmF3
X2hhc2hfc2V0IiwKKyAgICAiLi4vbWVtb3J5IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJjb250
YWluZXJfbWVtb3J5IikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVy
OmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2Nv
bXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6
YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBb
CisgICAgImludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAg
ICAiLi4vbWVtb3J5IiwKKyAgICAiLi4vdXRpbGl0eSIsCisgIF0KK30KKworc291cmNlX3NldCgi
aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZp
Zy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxk
L2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdz
ID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAg
cHVibGljID0gWworICAgICJpbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgiLAorICBd
CisgIGRlcHMgPSBbCisgICAgIi4uL2Jhc2U6Y29uZmlnIiwKKyAgICAiLi4vaGFzaCIsCisgICAg
Ii4uL3N0cmluZ3MiLAorICBdCit9CisKK3NvdXJjZV9zZXQoImhhc2hfZ2VuZXJhdG9yX3Rlc3Rp
bmciKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmln
L2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQv
Y29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3Mg
PSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBz
b3VyY2VzID0gWworICAgICJpbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmNjIiwKKyAg
XQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIs
CisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICIuLi9t
ZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAiLi4vc3RyaW5ncyIsCisgIF0KK30KKworc291cmNlX3Nl
dCgiaGFzaF9wb2xpY3lfdGVzdGluZyIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3Mg
LT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdz
ICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAg
XQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2lu
Y2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaF9wb2xpY3lf
dGVzdGluZy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9oYXNoIiwKKyAgICAiLi4vc3Ry
aW5ncyIsCisgIF0KK30KKworc291cmNlX3NldCgiaGFzaF9wb2xpY3lfdHJhaXRzIikgeworICBj
b25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAg
Y29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2Nv
ZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19j
YyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6
YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL2hhc2hf
cG9saWN5X3RyYWl0cy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9tZXRhOnR5cGVfdHJh
aXRzIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJoYXNodGFibGVfZGVidWciKSB7CisgIGNvbmZp
Z3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25m
aWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwK
KyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNs
X2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaHRhYmxl
X2RlYnVnLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpoYXNodGFibGVfZGVidWdfaG9va3Mi
LAorICBdCit9CisKK3NvdXJjZV9zZXQoImhhc2h0YWJsZV9kZWJ1Z19ob29rcyIpIHsKKyAgY29u
ZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNv
bmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2Rl
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2Mi
LAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFi
c2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9oYXNodGFi
bGVfZGVidWdfaG9va3MuaCIsCisgIF0KK30KKworc291cmNlX3NldCgibm9kZV9oYXNoX3BvbGlj
eSIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9j
b2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19j
aHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVs
dF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRl
cm5hbC9ub2RlX2hhc2hfcG9saWN5LmgiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInJhd19oYXNo
X21hcCIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1
bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpu
b19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVm
YXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJp
bnRlcm5hbC9yYXdfaGFzaF9tYXAuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNvbnRhaW5l
cl9tZW1vcnkiLAorICAgICI6cmF3X2hhc2hfc2V0IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJy
YXdfaGFzaF9zZXQiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6
Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJjZXMgPSBb
CisgICAgImludGVybmFsL3Jhd19oYXNoX3NldC5jYyIsCisgIF0KKyAgcHVibGljID0gWworICAg
ICJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNvbXBy
ZXNzZWRfdHVwbGUiLAorICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgIjpoYXNoX3BvbGlj
eV90cmFpdHMiLAorICAgICI6aGFzaHRhYmxlX2RlYnVnX2hvb2tzIiwKKyAgICAiOmxheW91dCIs
CisgICAgIi4uL2Jhc2U6Yml0cyIsCisgICAgIi4uL2Jhc2U6Y29uZmlnIiwKKyAgICAiLi4vYmFz
ZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi9iYXNlOmVuZGlhbiIsCisgICAgIi4uL21lbW9yeSIs
CisgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi90eXBlczpvcHRpb25hbCIsCisg
ICAgIi4uL3V0aWxpdHkiLAorICBdCit9CisKK3NvdXJjZV9zZXQoImxheW91dCIpIHsKKyAgY29u
ZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNv
bmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2Rl
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2Mi
LAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFi
c2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9sYXlvdXQu
aCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIu
Li9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3R5cGVzOnNw
YW4iLAorICAgICIuLi91dGlsaXR5IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ0cmFja2VkIikg
eworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21w
aWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZp
Zy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGlj
ID0gWworICAgICJpbnRlcm5hbC90cmFja2VkLmgiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInVu
b3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdCIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNv
bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBj
b25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29k
ZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2Nj
IiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvdW5vcmRl
cmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpoYXNo
X2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICIv
L3Rlc3RpbmcvZ3Rlc3QiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInVub3JkZXJlZF9tYXBfbG9v
a3VwX3Rlc3QiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQv
Y29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8v
YnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2Nv
bmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIg
XQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3Qu
aCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAg
ICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgIi8vdGVzdGluZy9ndGVzdCIsCisgIF0KK30K
Kworc291cmNlX3NldCgidW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdCIpIHsKKyAgdGVzdG9u
bHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21p
dW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6
bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2Rl
ZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAi
aW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oIiwKKyAgXQorICBkZXBzID0g
WworICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgIjpoYXNoX3BvbGljeV90ZXN0
aW5nIiwKKyAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1bm9y
ZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25m
aWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29u
ZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUi
LAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIs
CisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJz
bF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL3Vub3JkZXJl
ZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6aGFzaF9n
ZW5lcmF0b3JfdGVzdGluZyIsCisgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAiLy90
ZXN0aW5nL2d0ZXN0IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfc2V0X2xvb2t1
cF90ZXN0IikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2Nv
bmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1
aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25m
aWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0K
KyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0Lmgi
LAorICBdCisgIGRlcHMgPSBbCisgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAi
Omhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAorICBdCit9CisK
K3NvdXJjZV9zZXQoInVub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QiKSB7CisgIHRlc3Rvbmx5
ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVt
X2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5v
X2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZh
dWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImlu
dGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaCIsCisgIF0KKyAgZGVwcyA9IFsK
KyAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICI6aGFzaF9wb2xpY3lfdGVzdGlu
ZyIsCisgICAgIi8vdGVzdGluZy9ndGVzdCIsCisgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9DTWFrZUxpc3RzLnR4dApp
bmRleCAxMjNlNGM0ODQ5YWFiZTJlZWRlYTIxZjA1ZWZkMmQwMjYzODMwZmI4Li45ZTQwNjkwMmIw
NTg1ZGVkYTNiYTMwNzJiZWUwZmYyNzc0ODRlYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0NNYWtlTGlzdHMudHh0CkBA
IC0xNywxOCArMTcsNDIgQEAKIAogbGlzdChBUFBFTkQgQ09OVEFJTkVSX1BVQkxJQ19IRUFERVJT
CiAgICJmaXhlZF9hcnJheS5oIgorICAiZmxhdF9oYXNoX21hcC5oIgorICAiZmxhdF9oYXNoX3Nl
dC5oIgogICAiaW5saW5lZF92ZWN0b3IuaCIKKyAgIm5vZGVfaGFzaF9tYXAuaCIKKyAgIm5vZGVf
aGFzaF9zZXQuaCIKICkKIAogCiBsaXN0KEFQUEVORCBDT05UQUlORVJfSU5URVJOQUxfSEVBREVS
UworICAiaW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZS5oIgorICAiaW50ZXJuYWwvY29udGFpbmVy
X21lbW9yeS5oIgorICAiaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIgorICAiaW50
ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgorICAiaW50ZXJuYWwvaGFzaF9wb2xpY3lf
dGVzdGluZy5oIgorICAiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzLmgiCisgICJpbnRlcm5h
bC9oYXNodGFibGVfZGVidWcuaCIKKyAgImludGVybmFsL2xheW91dC5oIgorICAiaW50ZXJuYWwv
bm9kZV9oYXNoX3BvbGljeS5oIgorICAiaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiCisgICJpbnRl
cm5hbC9yYXdfaGFzaF9zZXQuaCIKICAgImludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5o
IgorICAiaW50ZXJuYWwvdHJhY2tlZC5oIgorICAiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25z
dHJ1Y3Rvcl90ZXN0LmgiCisgICJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0Lmgi
CisgICJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgiCisgICJpbnRlcm5h
bC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCIKKyAgImludGVybmFsL3Vub3JkZXJl
ZF9zZXRfbG9va3VwX3Rlc3QuaCIKKyAgImludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJz
X3Rlc3QuaCIKICkKIAogCi1hYnNsX2hlYWRlcl9saWJyYXJ5KAorYWJzbF9saWJyYXJ5KAogICBU
QVJHRVQKICAgICBhYnNsX2NvbnRhaW5lcgorICBTT1VSQ0VTCisgICAgImludGVybmFsL3Jhd19o
YXNoX3NldC5jYyIKICAgRVhQT1JUX05BTUUKICAgICBjb250YWluZXIKICkKQEAgLTE0MiwzICsx
NjYsMTEgQEAgYWJzbF90ZXN0KAogKQogCiAKK2Fic2xfdGVzdCgKKyAgVEFSR0VUCisgICAgcmF3
X2hhc2hfc2V0X3Rlc3QKKyAgU09VUkNFUworICAgICJpbnRlcm5hbC9yYXdfaGFzaF9zZXRfdGVz
dC5jYyIKKyAgUFVCTElDX0xJQlJBUklFUworICAgIGFic2w6OmJhc2UgYWJzbDo6aGFzaCBhYnNs
X3Rocm93X2RlbGVnYXRlIHRlc3RfaW5zdGFuY2VfdHJhY2tlcl9saWIKKykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2Fy
cmF5LmgKaW5kZXggMTgyMjU4ZjYyM2UxM2FlYTgwYjc1NzhlMTkwNmRhZDk0NzgzODhiMC4uNmQ5
ZmE1Zjc0NWRjYzk1NjNjN2E3MDkxNjBkYjE4MzdjZmZiYzJkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ZpeGVkX2FycmF5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5
LmgKQEAgLTEzOCw4ICsxMzgsOCBAQCBjbGFzcyBGaXhlZEFycmF5IHsKICAgZXhwbGljaXQgRml4
ZWRBcnJheShzaXplX3R5cGUgbiwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGEgPSBhbGxvY2F0b3Jf
dHlwZSgpKQogICAgICAgOiBzdG9yYWdlXyhuLCBhKSB7CiAgICAgaWYgKERlZmF1bHRDb25zdHJ1
Y3RvcklzTm9uVHJpdmlhbCgpKSB7Ci0gICAgICBtZW1vcnlfaW50ZXJuYWw6OkNvbnN0cnVjdFN0
b3JhZ2Uoc3RvcmFnZV8uYWxsb2MoKSwgc3RvcmFnZV8uYmVnaW4oKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlXy5lbmQoKSk7CisgICAgICBtZW1vcnlf
aW50ZXJuYWw6OkNvbnN0cnVjdFJhbmdlKHN0b3JhZ2VfLmFsbG9jKCksIHN0b3JhZ2VfLmJlZ2lu
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VfLmVuZCgp
KTsKICAgICB9CiAgIH0KIApAQCAtMTQ3LDggKzE0Nyw4IEBAIGNsYXNzIEZpeGVkQXJyYXkgewog
ICBGaXhlZEFycmF5KHNpemVfdHlwZSBuLCBjb25zdCB2YWx1ZV90eXBlJiB2YWwsCiAgICAgICAg
ICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGEgPSBhbGxvY2F0b3JfdHlwZSgpKQogICAgICAg
OiBzdG9yYWdlXyhuLCBhKSB7Ci0gICAgbWVtb3J5X2ludGVybmFsOjpDb25zdHJ1Y3RTdG9yYWdl
KHN0b3JhZ2VfLmFsbG9jKCksIHN0b3JhZ2VfLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VfLmVuZCgpLCB2YWwpOworICAgIG1lbW9yeV9pbnRl
cm5hbDo6Q29uc3RydWN0UmFuZ2Uoc3RvcmFnZV8uYWxsb2MoKSwgc3RvcmFnZV8uYmVnaW4oKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VfLmVuZCgpLCB2YWwp
OwogICB9CiAKICAgLy8gQ3JlYXRlcyBhbiBhcnJheSBpbml0aWFsaXplZCB3aXRoIHRoZSBzaXpl
IGFuZCBjb250ZW50cyBvZiBgaW5pdF9saXN0YC4KQEAgLTE2MywxMyArMTYzLDEyIEBAIGNsYXNz
IEZpeGVkQXJyYXkgewogICBGaXhlZEFycmF5KEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0
LAogICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhID0gYWxsb2NhdG9yX3R5cGUo
KSkKICAgICAgIDogc3RvcmFnZV8oc3RkOjpkaXN0YW5jZShmaXJzdCwgbGFzdCksIGEpIHsKLSAg
ICBtZW1vcnlfaW50ZXJuYWw6OkNvcHlUb1N0b3JhZ2VGcm9tUmFuZ2Uoc3RvcmFnZV8uYWxsb2Mo
KSwgc3RvcmFnZV8uYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmlyc3QsIGxhc3QpOworICAgIG1lbW9yeV9pbnRlcm5hbDo6Q29weVJhbmdlKHN0
b3JhZ2VfLmFsbG9jKCksIHN0b3JhZ2VfLmJlZ2luKCksIGZpcnN0LCBsYXN0KTsKICAgfQogCiAg
IH5GaXhlZEFycmF5KCkgbm9leGNlcHQgewogICAgIGZvciAoYXV0byogY3VyID0gc3RvcmFnZV8u
YmVnaW4oKTsgY3VyICE9IHN0b3JhZ2VfLmVuZCgpOyArK2N1cikgewotICAgICAgQWxsb2NhdG9y
VHJhaXRzOjpkZXN0cm95KCpzdG9yYWdlXy5hbGxvYygpLCBjdXIpOworICAgICAgQWxsb2NhdG9y
VHJhaXRzOjpkZXN0cm95KHN0b3JhZ2VfLmFsbG9jKCksIGN1cik7CiAgICAgfQogICB9CiAKQEAg
LTM1OSw2ICszNTgsMTMgQEAgY2xhc3MgRml4ZWRBcnJheSB7CiAgIGZyaWVuZCBib29sIG9wZXJh
dG9yPj0oY29uc3QgRml4ZWRBcnJheSYgbGhzLCBjb25zdCBGaXhlZEFycmF5JiByaHMpIHsKICAg
ICByZXR1cm4gIShsaHMgPCByaHMpOwogICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+Cisg
IGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCBjb25zdCBGaXhlZEFycmF5JiB2KSB7CisgICAg
cmV0dXJuIEg6OmNvbWJpbmUoSDo6Y29tYmluZV9jb250aWd1b3VzKHN0ZDo6bW92ZShoKSwgdi5k
YXRhKCksIHYuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICB2LnNpemUoKSk7CisgIH0K
KwogIHByaXZhdGU6CiAgIC8vIFN0b3JhZ2VFbGVtZW50CiAgIC8vCkBAIC00NDYsMTUgKzQ1Miwx
NSBAQCBjbGFzcyBGaXhlZEFycmF5IHsKICAgICAgIGlmIChVc2luZ0lubGluZWRTdG9yYWdlKHNp
emUoKSkpIHsKICAgICAgICAgSW5saW5lZFN0b3JhZ2U6OkFubm90YXRlRGVzdHJ1Y3Qoc2l6ZSgp
KTsKICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIEFsbG9jYXRvclRyYWl0czo6ZGVhbGxvY2F0ZSgq
YWxsb2MoKSwgQXNWYWx1ZVR5cGUoYmVnaW4oKSksIHNpemUoKSk7CisgICAgICAgIEFsbG9jYXRv
clRyYWl0czo6ZGVhbGxvY2F0ZShhbGxvYygpLCBBc1ZhbHVlVHlwZShiZWdpbigpKSwgc2l6ZSgp
KTsKICAgICAgIH0KICAgICB9CiAKICAgICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IHNpemVfYWxsb2NfLnRlbXBsYXRlIGdldDwwPigpOyB9CiAgICAgU3RvcmFnZUVsZW1lbnQqIGJl
Z2luKCkgY29uc3QgeyByZXR1cm4gZGF0YV87IH0KICAgICBTdG9yYWdlRWxlbWVudCogZW5kKCkg
Y29uc3QgeyByZXR1cm4gYmVnaW4oKSArIHNpemUoKTsgfQotICAgIGFsbG9jYXRvcl90eXBlKiBh
bGxvYygpIHsKLSAgICAgIHJldHVybiBzdGQ6OmFkZHJlc3NvZihzaXplX2FsbG9jXy50ZW1wbGF0
ZSBnZXQ8MT4oKSk7CisgICAgYWxsb2NhdG9yX3R5cGUmIGFsbG9jKCkgeworICAgICAgcmV0dXJu
IHNpemVfYWxsb2NfLnRlbXBsYXRlIGdldDwxPigpOwogICAgIH0KIAogICAgcHJpdmF0ZToKQEAg
LTQ2OCw3ICs0NzQsNyBAQCBjbGFzcyBGaXhlZEFycmF5IHsKICAgICAgICAgcmV0dXJuIElubGlu
ZWRTdG9yYWdlOjpkYXRhKCk7CiAgICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxTdG9yYWdlRWxlbWVudCo+KAotICAgICAgICAgICAgQWxsb2NhdG9yVHJhaXRz
OjphbGxvY2F0ZSgqYWxsb2MoKSwgc2l6ZSgpKSk7CisgICAgICAgICAgICBBbGxvY2F0b3JUcmFp
dHM6OmFsbG9jYXRlKGFsbG9jKCksIHNpemUoKSkpOwogICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MK
aW5kZXggYzEyM2MyYTFjMGQyZDM4NDg0MDU2YzM0Zjg5MTAxNDg5ZTVjMTQyNC4uZGE2M2RiZmUz
OGU3MWQzNGEzM2U4MDBkZmU0MmFhOWYzZWEzMTdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvZml4ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCkBAIC05Nyw3ICs5Nyw3
IEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBSZWFkTWVtb3J5KEZpeGVkQXJyKiBmaXhlZF9h
cnIpIHsKIAogVEVTVChGaXhlZEFycmF5RXhjZXB0aW9uU2FmZXR5LCBGaWxsKSB7CiAgIGF1dG8g
dGVzdF9maWxsID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCi0gICAgICAg
ICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhSZWFkTWVtb3J5KQorICAgICAgICAgICAg
ICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhSZWFkTWVtb3J5KQogICAgICAgICAgICAgICAgICAg
ICAgICAuV2l0aE9wZXJhdGlvbihbJl0oRml4ZWRBcnIqIGZpeGVkX2Fycl9wdHIpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIHRocm93ZXIgPQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUaHJvd2VyKGtVcGRhdGVkVmFsdWUsIHRlc3Rpbmc6Om5vdGhyb3dfY3Rvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9maXhlZF9hcnJheV90ZXN0LmNjCmluZGV4IGIwN2ViY2I2ZDljYTZiMGU0MjZjYTYz
YWMzNGMwNmY4MTQwOTgzY2UuLjIwNWZmNDFmZTExNDJiYmU4ZTE4N2E0NGYxN2E1YTVhNzNiNWM1
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV90ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV90ZXN0LmNjCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiZ21vY2svZ21vY2suaCIKICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1
ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fdGVzdGluZy5oIgorI2luY2x1ZGUgImFi
c2wvaGFzaC9oYXNoX3Rlc3RpbmcuaCIKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
IAogdXNpbmcgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZUFycmF5OwpAQCAtODY3LDQgKzg2OCw1IEBA
IFRFU1QoRml4ZWRBcnJheVRlc3QsIEFkZHJlc3NTYW5pdGl6ZXJBbm5vdGF0aW9uczQpIHsKICAg
RVhQRUNUX0RFQVRIKHJhd1syMV0gPSBUaHJlZUludHMoKSwgImNvbnRhaW5lci1vdmVyZmxvdyIp
OwogfQogI2VuZGlmICAvLyBBRERSRVNTX1NBTklUSVpFUgorCiB9ICAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfbWFwLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvZmxhdF9oYXNoX21hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1NTcwZDEwMDQ0MTMxNjZhYmRkZGI2YzU0
NmJiNTdjYWJkNGJmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9o
YXNoX21hcC5oCkBAIC0wLDAgKzEsNTI4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBmbGF0X2hh
c2hfbWFwLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQW4gYGFic2w6OmZsYXRf
aGFzaF9tYXA8SywgVj5gIGlzIGFuIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgb2YK
Ky8vIHVuaXF1ZSBrZXlzIGFuZCBhc3NvY2lhdGVkIHZhbHVlcyBkZXNpZ25lZCB0byBiZSBhIG1v
cmUgZWZmaWNpZW50IHJlcGxhY2VtZW50CisvLyBmb3IgYHN0ZDo6dW5vcmRlcmVkX21hcGAuIExp
a2UgYHVub3JkZXJlZF9tYXBgLCBzZWFyY2gsIGluc2VydGlvbiwgYW5kCisvLyBkZWxldGlvbiBv
ZiBtYXAgZWxlbWVudHMgY2FuIGJlIGRvbmUgYXMgYW4gYE8oMSlgIG9wZXJhdGlvbi4gSG93ZXZl
ciwKKy8vIGBmbGF0X2hhc2hfbWFwYCAoYW5kIG90aGVyIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBj
b250YWluZXJzIGtub3duIGFzIHRoZQorLy8gY29sbGVjdGlvbiBvZiBBYnNlaWwgIlN3aXNzIHRh
YmxlcyIpIGNvbnRhaW4gb3RoZXIgb3B0aW1pemF0aW9ucyB0aGF0IHJlc3VsdAorLy8gaW4gYm90
aCBtZW1vcnkgYW5kIGNvbXB1dGF0aW9uIGFkdmFudGFnZXMuCisvLworLy8gSW4gbW9zdCBjYXNl
cywgeW91ciBkZWZhdWx0IGNob2ljZSBmb3IgYSBoYXNoIG1hcCBzaG91bGQgYmUgYSBtYXAgb2Yg
dHlwZQorLy8gYGZsYXRfaGFzaF9tYXBgLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0ZMQVRf
SEFTSF9NQVBfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfRkxBVF9IQVNIX01BUF9IXworCisj
aW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxuZXc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L2NvbnRhaW5lcl9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9o
YXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiICAvLyBJV1lVIHByYWdt
YTogZXhwb3J0CisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisKK25hbWVzcGFjZSBh
YnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewordGVtcGxhdGUgPGNsYXNzIEss
IGNsYXNzIFY+CitzdHJ1Y3QgRmxhdEhhc2hNYXBQb2xpY3k7Cit9ICAvLyBuYW1lc3BhY2UgY29u
dGFpbmVyX2ludGVybmFsCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNsOjpmbGF0
X2hhc2hfbWFwCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEFuIGBhYnNsOjpmbGF0
X2hhc2hfbWFwPEssIFY+YCBpcyBhbiB1bm9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIHdo
aWNoCisvLyBoYXMgYmVlbiBvcHRpbWl6ZWQgZm9yIGJvdGggc3BlZWQgYW5kIG1lbW9yeSBmb290
cHJpbnQgaW4gbW9zdCBjb21tb24gdXNlCisvLyBjYXNlcy4gSXRzIGludGVyZmFjZSBpcyBzaW1p
bGFyIHRvIHRoYXQgb2YgYHN0ZDo6dW5vcmRlcmVkX21hcDxLLCBWPmAgd2l0aAorLy8gdGhlIGZv
bGxvd2luZyBub3RhYmxlIGRpZmZlcmVuY2VzOgorLy8KKy8vICogUmVxdWlyZXMga2V5cyB0aGF0
IGFyZSBDb3B5Q29uc3RydWN0aWJsZQorLy8gKiBSZXF1aXJlcyB2YWx1ZXMgdGhhdCBhcmUgTW92
ZUNvbnN0cnVjdGlibGUKKy8vICogU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHRocm91
Z2ggYGZpbmQoKWAsIGBvcGVyYXRvcltdKClgIGFuZAorLy8gICBgaW5zZXJ0KClgLCBwcm92aWRl
ZCB0aGF0IHRoZSBtYXAgaXMgcHJvdmlkZWQgYSBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMKKy8v
ICAgaGFzaGluZyBmdW5jdGlvbiBhbmQgZXF1YWxpdHkgb3BlcmF0b3IuCisvLyAqIEludmFsaWRh
dGVzIGFueSByZWZlcmVuY2VzIGFuZCBwb2ludGVycyB0byBlbGVtZW50cyB3aXRoaW4gdGhlIHRh
YmxlIGFmdGVyCisvLyAgIGByZWhhc2goKWAuCisvLyAqIENvbnRhaW5zIGEgYGNhcGFjaXR5KClg
IG1lbWJlciBmdW5jdGlvbiBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgZWxlbWVudAorLy8gICBz
bG90cyAob3BlbiwgZGVsZXRlZCwgYW5kIGVtcHR5KSB3aXRoaW4gdGhlIGhhc2ggbWFwLgorLy8g
KiBSZXR1cm5zIGB2b2lkYCBmcm9tIHRoZSBgZXJhc2UoaXRlcmF0b3IpYCBvdmVybG9hZC4KKy8v
CisvLyBCeSBkZWZhdWx0LCBgZmxhdF9oYXNoX21hcGAgdXNlcyB0aGUgYGFic2w6Okhhc2hgIGhh
c2hpbmcgZnJhbWV3b3JrLgorLy8gQWxsIGZ1bmRhbWVudGFsIGFuZCBBYnNlaWwgdHlwZXMgdGhh
dCBzdXBwb3J0IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3JrIGhhdmUKKy8vIGEgY29tcGF0aWJs
ZSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgY29tcGFyaW5nIGluc2VydGlvbnMgaW50byBgZmxhdF9o
YXNoX21hcGAuCisvLyBJZiB5b3VyIHR5cGUgaXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgdGhlIGBh
c2JsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQorLy8gYWJzbC9oYXNoL2hhc2guaCBmb3IgaW5mb3Jt
YXRpb24gb24gZXh0ZW5kaW5nIEFic2VpbCBoYXNoaW5nIHRvIHVzZXItZGVmaW5lZAorLy8gdHlw
ZXMuCisvLworLy8gTk9URTogQSBgZmxhdF9oYXNoX21hcGAgc3RvcmVzIGl0cyB2YWx1ZSB0eXBl
cyBkaXJlY3RseSBpbnNpZGUgaXRzCisvLyBpbXBsZW1lbnRhdGlvbiBhcnJheSB0byBhdm9pZCBt
ZW1vcnkgaW5kaXJlY3Rpb24uIEJlY2F1c2UgYSBgZmxhdF9oYXNoX21hcGAKKy8vIGlzIGRlc2ln
bmVkIHRvIG1vdmUgZGF0YSB3aGVuIHJlaGFzaGVkLCBtYXAgdmFsdWVzIHdpbGwgbm90IHJldGFp
biBwb2ludGVyCisvLyBzdGFiaWxpdHkuIElmIHlvdSByZXF1aXJlIHBvaW50ZXIgc3RhYmlsaXR5
LCBvciB5b3VyIHZhbHVlcyBhcmUgbGFyZ2UsCisvLyBjb25zaWRlciB1c2luZyBgYWJzbDo6Zmxh
dF9oYXNoX21hcDxLZXksIHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZT4+YCBpbnN0ZWFkLgorLy8gSWYg
eW91ciB0eXBlcyBhcmUgbm90IG1vdmVhYmxlIG9yIHlvdSByZXF1aXJlIHBvaW50ZXIgc3RhYmls
aXR5IGZvciBrZXlzLAorLy8gY29uc2lkZXIgYGFic2w6Om5vZGVfaGFzaF9tYXBgLgorLy8KKy8v
IEV4YW1wbGU6CisvLworLy8gICAvLyBDcmVhdGUgYSBmbGF0IGhhc2ggbWFwIG9mIHRocmVlIHN0
cmluZ3MgKHRoYXQgbWFwIHRvIHN0cmluZ3MpCisvLyAgIGFic2w6OmZsYXRfaGFzaF9tYXA8c3Rk
OjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBkdWNrcyA9CisvLyAgICAge3siYSIsICJodWV5In0sIHsi
YiIsICJkZXdleSJ9LCB7ImMiLCAibG91aWUifX07CisvLworLy8gIC8vIEluc2VydCBhIG5ldyBl
bGVtZW50IGludG8gdGhlIGZsYXQgaGFzaCBtYXAKKy8vICBkdWNrcy5pbnNlcnQoeyJkIiwgImRv
bmFsZCJ9KTsKKy8vCisvLyAgLy8gRm9yY2UgYSByZWhhc2ggb2YgdGhlIGZsYXQgaGFzaCBtYXAK
Ky8vICBkdWNrcy5yZWhhc2goMCk7CisvLworLy8gIC8vIEZpbmQgdGhlIGVsZW1lbnQgd2l0aCB0
aGUga2V5ICJiIgorLy8gIHN0ZDo6c3RyaW5nIHNlYXJjaF9rZXkgPSAiYiI7CisvLyAgYXV0byBy
ZXN1bHQgPSBkdWNrcy5maW5kKHNlYXJjaF9rZXkpOworLy8gIGlmIChyZXN1bHQgIT0gZHVja3Mu
ZW5kKCkpIHsKKy8vICAgIHN0ZDo6Y291dCA8PCAiUmVzdWx0OiAiIDw8IHJlc3VsdC0+c2Vjb25k
IDw8IHN0ZDo6ZW5kbDsKKy8vICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgViwKKyAgICAg
ICAgICBjbGFzcyBIYXNoID0gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2RlZmF1bHRf
aGFzaDxLPiwKKyAgICAgICAgICBjbGFzcyBFcSA9IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6
aGFzaF9kZWZhdWx0X2VxPEs+LAorICAgICAgICAgIGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxs
b2NhdG9yPHN0ZDo6cGFpcjxjb25zdCBLLCBWPj4+CitjbGFzcyBmbGF0X2hhc2hfbWFwIDogcHVi
bGljIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6cmF3X2hhc2hfbWFwPAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkZsYXRIYXNoTWFwUG9saWN5
PEssIFY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoLCBFcSwgQWxsb2NhdG9yPiB7
CisgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBmbGF0X2hhc2hfbWFwOjpyYXdfaGFzaF9tYXA7CisK
KyBwdWJsaWM6CisgIGZsYXRfaGFzaF9tYXAoKSB7fQorICB1c2luZyBCYXNlOjpCYXNlOworCisg
IC8vIGZsYXRfaGFzaF9tYXA6OmJlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRv
ciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgZmxhdF9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6
OmJlZ2luOworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmNiZWdpbigpCisgIC8vCisgIC8vIFJldHVy
bnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgZmxhdF9oYXNoX21h
cGAuCisgIHVzaW5nIEJhc2U6OmNiZWdpbjsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpjZW5kKCkK
KyAgLy8KKyAgLy8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBm
bGF0X2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6Y2VuZDsKKworICAvLyBmbGF0X2hhc2hfbWFw
OjplbmQoKQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhl
IGBmbGF0X2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6ZW5kOworCisgIC8vIGZsYXRfaGFzaF9t
YXA6OmNhcGFjaXR5KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnQg
c2xvdHMgKGFzc2lnbmVkLCBkZWxldGVkLCBhbmQgZW1wdHkpCisgIC8vIGF2YWlsYWJsZSB3aXRo
aW4gdGhlIGBmbGF0X2hhc2hfbWFwYC4KKyAgLy8KKyAgLy8gTk9URTogdGhpcyBtZW1iZXIgZnVu
Y3Rpb24gaXMgcGFydGljdWxhciB0byBgYWJzbDo6ZmxhdF9oYXNoX21hcGAgYW5kIGlzCisgIC8v
IG5vdCBwcm92aWRlZCBpbiB0aGUgYHN0ZDo6dW5vcmRlcmVkX21hcGAgQVBJLgorICB1c2luZyBC
YXNlOjpjYXBhY2l0eTsKKworICAvLyBmbGF0X2hhc2hfbWFwOjplbXB0eSgpCisgIC8vCisgIC8v
IFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGBmbGF0X2hhc2hfbWFwYCBpcyBlbXB0eS4KKyAg
dXNpbmcgQmFzZTo6ZW1wdHk7CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6bWF4X3NpemUoKQorICAv
LworICAvLyBSZXR1cm5zIHRoZSBsYXJnZXN0IHRoZW9yZXRpY2FsIHBvc3NpYmxlIG51bWJlciBv
ZiBlbGVtZW50cyB3aXRoaW4gYQorICAvLyBgZmxhdF9oYXNoX21hcGAgdW5kZXIgY3VycmVudCBt
ZW1vcnkgY29uc3RyYWludHMuIFRoaXMgdmFsdWUgY2FuIGJlIHRob3VnaHQKKyAgLy8gb2YgdGhl
IGxhcmdlc3QgdmFsdWUgb2YgYHN0ZDo6ZGlzdGFuY2UoYmVnaW4oKSwgZW5kKCkpYCBmb3IgYQor
ICAvLyBgZmxhdF9oYXNoX21hcDxLLCBWPmAuCisgIHVzaW5nIEJhc2U6Om1heF9zaXplOworCisg
IC8vIGZsYXRfaGFzaF9tYXA6OnNpemUoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgZWxlbWVudHMgY3VycmVudGx5IHdpdGhpbiB0aGUgYGZsYXRfaGFzaF9tYXBgLgorICB1c2lu
ZyBCYXNlOjpzaXplOworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmNsZWFyKCkKKyAgLy8KKyAgLy8g
UmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSB0aGUgYGZsYXRfaGFzaF9tYXBgLiBJbnZhbGlkYXRl
cyBhbnkgcmVmZXJlbmNlcywKKyAgLy8gcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyByZWZlcnJpbmcg
dG8gY29udGFpbmVkIGVsZW1lbnRzLgorICAvLworICAvLyBOT1RFOiB0aGlzIG9wZXJhdGlvbiBt
YXkgc2hyaW5rIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlci4gVG8gYXZvaWQgc2hyaW5raW5nCisgIC8v
IHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBjYWxsIGBlcmFzZShiZWdpbigpLCBlbmQoKSlgLgorICB1
c2luZyBCYXNlOjpjbGVhcjsKKworICAvLyBmbGF0X2hhc2hfbWFwOjplcmFzZSgpCisgIC8vCisg
IC8vIEVyYXNlcyBlbGVtZW50cyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfbWFwYC4gRXJhc2luZyBk
b2VzIG5vdCB0cmlnZ2VyIGEKKyAgLy8gcmVoYXNoLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxv
dy4KKyAgLy8KKyAgLy8gdm9pZCBlcmFzZShjb25zdF9pdGVyYXRvciBwb3MpOgorICAvLworICAv
LyAgIEVyYXNlcyB0aGUgZWxlbWVudCBhdCBgcG9zaXRpb25gIG9mIHRoZSBgZmxhdF9oYXNoX21h
cGAsIHJldHVybmluZworICAvLyAgIGB2b2lkYC4KKyAgLy8KKyAgLy8gICBOT1RFOiB0aGlzIHJl
dHVybiBiZWhhdmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIFNUTCBjb250YWluZXJzIGlu
CisgIC8vICAgZ2VuZXJhbCBhbmQgYHN0ZDo6dW5vcmRlcmVkX21hcGAgaW4gcGFydGljdWxhci4K
KyAgLy8KKyAgLy8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0
ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudHMgaW4gdGhlIG9w
ZW4gaW50ZXJ2YWwgW2BmaXJzdGAsIGBsYXN0YCksIHJldHVybmluZyBhbgorICAvLyAgIGl0ZXJh
dG9yIHBvaW50aW5nIHRvIGBsYXN0YC4KKyAgLy8KKyAgLy8gc2l6ZV90eXBlIGVyYXNlKGNvbnN0
IGtleV90eXBlJiBrZXkpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCB3aXRoIHRo
ZSBtYXRjaGluZyBrZXksIGlmIGl0IGV4aXN0cy4KKyAgdXNpbmcgQmFzZTo6ZXJhc2U7CisKKyAg
Ly8gZmxhdF9oYXNoX21hcDo6aW5zZXJ0KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50
IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgaW50byB0aGUgYGZsYXRfaGFzaF9tYXBgLAorICAvLyBy
ZXR1cm5pbmcgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGluc2VydGVkIGVsZW1l
bnQsIHByb3ZpZGVkIHRoYXQKKyAgLy8gYW4gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkgZG9l
cyBub3QgYWxyZWFkeSBleGlzdC4gSWYgcmVoYXNoaW5nIG9jY3VycworICAvLyBkdWUgdG8gdGhl
IGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuIE92ZXJsb2FkcyBhcmUg
bGlzdGVkCisgIC8vIGJlbG93LgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4g
aW5zZXJ0KGNvbnN0IGluaXRfdHlwZSYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2
YWx1ZSBpbnRvIHRoZSBgZmxhdF9oYXNoX21hcGAuIFJldHVybnMgYSBwYWlyIGNvbnNpc3Rpbmcg
b2YgYW4KKyAgLy8gICBpdGVyYXRvciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3IgdG8gdGhl
IGVsZW1lbnQgdGhhdCBwcmV2ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uKSBhbmQgYSBib29s
IGRlbm90aW5nIHdoZXRoZXIgdGhlIGluc2VydGlvbiB0b29rIHBsYWNlLgorICAvLworICAvLyBz
dGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0KFQmJiB2YWx1ZSk6CisgIC8vIHN0ZDo6cGFp
cjxpdGVyYXRvcixib29sPiBpbnNlcnQoaW5pdF90eXBlJiYgdmFsdWUpOgorICAvLworICAvLyAg
IEluc2VydHMgYSBtb3ZlYWJsZSB2YWx1ZSBpbnRvIHRoZSBgZmxhdF9oYXNoX21hcGAuIFJldHVy
bnMgYSBwYWlyCisgIC8vICAgY29uc2lzdGluZyBvZiBhbiBpdGVyYXRvciB0byB0aGUgaW5zZXJ0
ZWQgZWxlbWVudCAob3IgdG8gdGhlIGVsZW1lbnQgdGhhdAorICAvLyAgIHByZXZlbnRlZCB0aGUg
aW5zZXJ0aW9uKSBhbmQgYSBib29sIGRlbm90aW5nIHdoZXRoZXIgdGhlIGluc2VydGlvbiB0b29r
CisgIC8vICAgcGxhY2UuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRv
ciBoaW50LCBjb25zdCBpbml0X3R5cGUmIHZhbHVlKToKKyAgLy8gaXRlcmF0b3IgaW5zZXJ0KGNv
bnN0X2l0ZXJhdG9yIGhpbnQsIFQmJiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25z
dF9pdGVyYXRvciBoaW50LCBpbml0X3R5cGUmJiB2YWx1ZSk7CisgIC8vCisgIC8vICAgSW5zZXJ0
cyBhIHZhbHVlLCB1c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRgIGFzIGEgbm9uLWJpbmRpbmcg
c3VnZ2VzdGlvbgorICAvLyAgIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJj
aC4gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUKKyAgLy8gICBpbnNlcnRlZCBlbGVtZW50LCBv
ciB0byB0aGUgZXhpc3RpbmcgZWxlbWVudCB0aGF0IHByZXZlbnRlZCB0aGUKKyAgLy8gICBpbnNl
cnRpb24uCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0KElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0
SXRlcmF0b3IgbGFzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHJhbmdlIG9mIHZhbHVlcyBb
YGZpcnN0YCwgYGxhc3RgKS4KKyAgLy8KKyAgLy8gICBOT1RFOiBBbHRob3VnaCB0aGUgU1RMIGRv
ZXMgbm90IHNwZWNpZnkgd2hpY2ggZWxlbWVudCBtYXkgYmUgaW5zZXJ0ZWQgaWYKKyAgLy8gICBt
dWx0aXBsZSBrZXlzIGNvbXBhcmUgZXF1aXZhbGVudGx5LCBmb3IgYGZsYXRfaGFzaF9tYXBgIHdl
IGd1YXJhbnRlZSB0aGUKKyAgLy8gICBmaXJzdCBtYXRjaCBpcyBpbnNlcnRlZC4KKyAgLy8KKyAg
Ly8gdm9pZCBpbnNlcnQoc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaWxpc3QpOgor
ICAvLworICAvLyAgIEluc2VydHMgdGhlIGVsZW1lbnRzIHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIg
bGlzdCBgaWxpc3RgLgorICAvLworICAvLyAgIE5PVEU6IEFsdGhvdWdoIHRoZSBTVEwgZG9lcyBu
b3Qgc3BlY2lmeSB3aGljaCBlbGVtZW50IG1heSBiZSBpbnNlcnRlZCBpZgorICAvLyAgIG11bHRp
cGxlIGtleXMgY29tcGFyZSBlcXVpdmFsZW50bHkgd2l0aGluIHRoZSBpbml0aWFsaXplciBsaXN0
LCBmb3IKKyAgLy8gICBgZmxhdF9oYXNoX21hcGAgd2UgZ3VhcmFudGVlIHRoZSBmaXJzdCBtYXRj
aCBpcyBpbnNlcnRlZC4KKyAgdXNpbmcgQmFzZTo6aW5zZXJ0OworCisgIC8vIGZsYXRfaGFzaF9t
YXA6Omluc2VydF9vcl9hc3NpZ24oKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2Yg
dGhlIHNwZWNpZmllZCB2YWx1ZSBpbnRvIHRoZSBgZmxhdF9oYXNoX21hcGAgcHJvdmlkZWQKKyAg
Ly8gdGhhdCBhIHZhbHVlIHdpdGggdGhlIGdpdmVuIGtleSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0
LCBvciByZXBsYWNlcyBpdCB3aXRoCisgIC8vIHRoZSBlbGVtZW50IHZhbHVlIGlmIGEga2V5IGZv
ciB0aGF0IHZhbHVlIGFscmVhZHkgZXhpc3RzLCByZXR1cm5pbmcgYW4KKyAgLy8gaXRlcmF0b3Ig
cG9pbnRpbmcgdG8gdGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQuICBJZiByZWhhc2hpbmcgb2Nj
dXJzIGR1ZQorICAvLyB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgZXhpc3RpbmcgaXRlcmF0b3JzIGFy
ZSBpbnZhbGlkYXRlZC4gT3ZlcmxvYWRzIGFyZQorICAvLyBsaXN0ZWQgYmVsb3cuCisgIC8vCisg
IC8vIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydF9vcl9hc3NpZ24oY29uc3QgaW5pdF90eXBl
JiBrLCBUJiYgb2JqKToKKyAgLy8gcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fzc2ln
bihpbml0X3R5cGUmJiBrLCBUJiYgb2JqKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzL0Fzc2lnbnMg
KG9yIG1vdmVzKSB0aGUgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIGtleSBpbnRvIHRoZQorICAv
LyAgIGBmbGF0X2hhc2hfbWFwYC4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgaW5zZXJ0X29yX2Fzc2ln
bihjb25zdF9pdGVyYXRvciBoaW50LAorICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGluaXRfdHlwZSYgaywgVCYmIG9iaik6CisgIC8vIGl0ZXJhdG9yIGluc2VydF9vcl9hc3Np
Z24oY29uc3RfaXRlcmF0b3IgaGludCwgaW5pdF90eXBlJiYgaywgVCYmIG9iaik6CisgIC8vCisg
IC8vICAgSW5zZXJ0cy9Bc3NpZ25zIChvciBtb3ZlcykgdGhlIGVsZW1lbnQgb2YgdGhlIHNwZWNp
ZmllZCBrZXkgaW50byB0aGUKKyAgLy8gICBgZmxhdF9oYXNoX21hcGAgdXNpbmcgdGhlIHBvc2l0
aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hl
cmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2guCisgIHVzaW5nIEJhc2U6Omluc2VydF9v
cl9hc3NpZ247CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6ZW1wbGFjZSgpCisgIC8vCisgIC8vIElu
c2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBp
dCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfbWFwYCwgcHJvdmlkZWQgdGhh
dCBubyBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4KKyAg
Ly8KKyAgLy8gVGhlIGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxy
ZWFkeSBpcyBhbiBlbGVtZW50IHdpdGggdGhlCisgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBp
biB3aGljaCBjYXNlIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKKyAgLy8g
ZGVzdHJveWVkIGltbWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9lbXBsYWNlKClgIHVubGVzcyB5b3Vy
IGtleSBpcyBub3QKKyAgLy8gY29weWFibGUgb3IgbW92ZWFibGUuCisgIC8vCisgIC8vIElmIHJl
aGFzaGluZyBvY2N1cnMgZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGlu
dmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjplbXBsYWNlOworCisgIC8vIGZsYXRfaGFzaF9tYXA6
OmVtcGxhY2VfaGludCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3Bl
Y2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhl
IGBmbGF0X2hhc2hfbWFwYCwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1i
aW5kaW5nCisgIC8vIHN1Z2dlc3Rpb24gZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24g
c2VhcmNoLCBhbmQgb25seSBpbnNlcnRzCisgIC8vIHByb3ZpZGVkIHRoYXQgbm8gZWxlbWVudCB3
aXRoIHRoZSBnaXZlbiBrZXkgYWxyZWFkeSBleGlzdHMuCisgIC8vCisgIC8vIFRoZSBlbGVtZW50
IG1heSBiZSBjb25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVudCB3
aXRoIHRoZQorICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3
bHkgY29uc3RydWN0ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVs
eS4gUHJlZmVyIGB0cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90CisgIC8vIGNv
cHlhYmxlIG9yIG1vdmVhYmxlLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0
byB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgdXNpbmcg
QmFzZTo6ZW1wbGFjZV9oaW50OworCisgIC8vIGZsYXRfaGFzaF9tYXA6OnRyeV9lbXBsYWNlKCkK
KyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkg
Y29uc3RydWN0aW5nIGl0IGluLXBsYWNlCisgIC8vIHdpdGhpbiB0aGUgYGZsYXRfaGFzaF9tYXBg
LCBwcm92aWRlZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8vIGFscmVh
ZHkgZXhpc3RzLiBVbmxpa2UgYGVtcGxhY2UoKWAsIGlmIGFuIGVsZW1lbnQgd2l0aCB0aGUgZ2l2
ZW4ga2V5CisgIC8vIGFscmVhZHkgZXhpc3RzLCB3ZSBndWFyYW50ZWUgdGhhdCBubyBlbGVtZW50
IGlzIGNvbnN0cnVjdGVkLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0
aGUgaW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgLy8gT3Zlcmxv
YWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vICAgcGFpcjxpdGVyYXRvciwgYm9vbD4g
dHJ5X2VtcGxhY2UoY29uc3Qga2V5X3R5cGUmIGssIEFyZ3MmJi4uLiBhcmdzKToKKyAgLy8gICBw
YWlyPGl0ZXJhdG9yLCBib29sPiB0cnlfZW1wbGFjZShrZXlfdHlwZSYmIGssIEFyZ3MmJi4uLiBh
cmdzKToKKyAgLy8KKyAgLy8gSW5zZXJ0cyAodmlhIGNvcHkgb3IgbW92ZSkgdGhlIGVsZW1lbnQg
b2YgdGhlIHNwZWNpZmllZCBrZXkgaW50byB0aGUKKyAgLy8gYGZsYXRfaGFzaF9tYXBgLgorICAv
LworICAvLyAgIGl0ZXJhdG9yIHRyeV9lbXBsYWNlKGNvbnN0X2l0ZXJhdG9yIGhpbnQsCisgIC8v
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5pdF90eXBlJiBrLCBBcmdzJiYuLi4gYXJn
cyk6CisgIC8vICAgaXRlcmF0b3IgdHJ5X2VtcGxhY2UoY29uc3RfaXRlcmF0b3IgaGludCwgaW5p
dF90eXBlJiYgaywgQXJncyYmLi4uIGFyZ3MpOgorICAvLworICAvLyBJbnNlcnRzICh2aWEgY29w
eSBvciBtb3ZlKSB0aGUgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIGtleSBpbnRvIHRoZQorICAv
LyBgZmxhdF9oYXNoX21hcGAgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1i
aW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24g
c2VhcmNoLgorICB1c2luZyBCYXNlOjp0cnlfZW1wbGFjZTsKKworICAvLyBmbGF0X2hhc2hfbWFw
OjpleHRyYWN0KCkKKyAgLy8KKyAgLy8gRXh0cmFjdHMgdGhlIGluZGljYXRlZCBlbGVtZW50LCBl
cmFzaW5nIGl0IGluIHRoZSBwcm9jZXNzLCBhbmQgcmV0dXJucyBpdAorICAvLyBhcyBhIEMrKzE3
LWNvbXBhdGlibGUgbm9kZSBoYW5kbGUuIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAv
LworICAvLyBub2RlX3R5cGUgZXh0cmFjdChjb25zdF9pdGVyYXRvciBwb3NpdGlvbik6CisgIC8v
CisgIC8vICAgRXh0cmFjdHMgdGhlIGtleSx2YWx1ZSBwYWlyIG9mIHRoZSBlbGVtZW50IGF0IHRo
ZSBpbmRpY2F0ZWQgcG9zaXRpb24gYW5kCisgIC8vICAgcmV0dXJucyBhIG5vZGUgaGFuZGxlIG93
bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLgorICAvLworICAvLyBub2RlX3R5cGUgZXh0cmFjdChj
b25zdCBrZXlfdHlwZSYgeCk6CisgIC8vCisgIC8vICAgRXh0cmFjdHMgdGhlIGtleSx2YWx1ZSBw
YWlyIG9mIHRoZSBlbGVtZW50IHdpdGggYSBrZXkgbWF0Y2hpbmcgdGhlIHBhc3NlZAorICAvLyAg
IGtleSB2YWx1ZSBhbmQgcmV0dXJucyBhIG5vZGUgaGFuZGxlIG93bmluZyB0aGF0IGV4dHJhY3Rl
ZCBkYXRhLiBJZiB0aGUKKyAgLy8gICBgZmxhdF9oYXNoX21hcGAgZG9lcyBub3QgY29udGFpbiBh
biBlbGVtZW50IHdpdGggYSBtYXRjaGluZyBrZXksIHRoaXMKKyAgLy8gICBmdW5jdGlvbiByZXR1
cm5zIGFuIGVtcHR5IG5vZGUgaGFuZGxlLgorICB1c2luZyBCYXNlOjpleHRyYWN0OworCisgIC8v
IGZsYXRfaGFzaF9tYXA6Om1lcmdlKCkKKyAgLy8KKyAgLy8gRXh0cmFjdHMgZWxlbWVudHMgZnJv
bSBhIGdpdmVuIGBzb3VyY2VgIGZsYXQgaGFzaCBtYXAgaW50byB0aGlzCisgIC8vIGBmbGF0X2hh
c2hfbWFwYC4gSWYgdGhlIGRlc3RpbmF0aW9uIGBmbGF0X2hhc2hfbWFwYCBhbHJlYWR5IGNvbnRh
aW5zIGFuCisgIC8vIGVsZW1lbnQgd2l0aCBhbiBlcXVpdmFsZW50IGtleSwgdGhhdCBlbGVtZW50
IGlzIG5vdCBleHRyYWN0ZWQuCisgIHVzaW5nIEJhc2U6Om1lcmdlOworCisgIC8vIGZsYXRfaGFz
aF9tYXA6OnN3YXAoZmxhdF9oYXNoX21hcCYgb3RoZXIpCisgIC8vCisgIC8vIEV4Y2hhbmdlcyB0
aGUgY29udGVudHMgb2YgdGhpcyBgZmxhdF9oYXNoX21hcGAgd2l0aCB0aG9zZSBvZiB0aGUgYG90
aGVyYAorICAvLyBmbGF0IGhhc2ggbWFwLCBhdm9pZGluZyBpbnZvY2F0aW9uIG9mIGFueSBtb3Zl
LCBjb3B5LCBvciBzd2FwIG9wZXJhdGlvbnMgb24KKyAgLy8gaW5kaXZpZHVhbCBlbGVtZW50cy4K
KyAgLy8KKyAgLy8gQWxsIGl0ZXJhdG9ycyBhbmQgcmVmZXJlbmNlcyBvbiB0aGUgYGZsYXRfaGFz
aF9tYXBgIHJlbWFpbiB2YWxpZCwgZXhjZXB0aW5nCisgIC8vIGZvciB0aGUgcGFzdC10aGUtZW5k
IGl0ZXJhdG9yLCB3aGljaCBpcyBpbnZhbGlkYXRlZC4KKyAgLy8KKyAgLy8gYHN3YXAoKWAgcmVx
dWlyZXMgdGhhdCB0aGUgZmxhdCBoYXNoIG1hcCdzIGhhc2hpbmcgYW5kIGtleSBlcXVpdmFsZW5j
ZQorICAvLyBmdW5jdGlvbnMgYmUgU3dhcHBhYmxlLCBhbmQgYXJlIGV4Y2hhZ2VkIHVzaW5nIHVu
cXVhbGlmaWVkIGNhbGxzIHRvCisgIC8vIG5vbi1tZW1iZXIgYHN3YXAoKWAuIElmIHRoZSBtYXAn
cyBhbGxvY2F0b3IgaGFzCisgIC8vIGBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yX3R5
cGU+Ojpwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA6OnZhbHVlYAorICAvLyBzZXQgdG8gYHRy
dWVgLCB0aGUgYWxsb2NhdG9ycyBhcmUgYWxzbyBleGNoYW5nZWQgdXNpbmcgYW4gdW5xdWFsaWZp
ZWQgY2FsbAorICAvLyB0byBub24tbWVtYmVyIGBzd2FwKClgOyBvdGhlcndpc2UsIHRoZSBhbGxv
Y2F0b3JzIGFyZSBub3Qgc3dhcHBlZC4KKyAgdXNpbmcgQmFzZTo6c3dhcDsKKworICAvLyBmbGF0
X2hhc2hfbWFwOjpyZWhhc2goY291bnQpCisgIC8vCisgIC8vIFJlaGFzaGVzIHRoZSBgZmxhdF9o
YXNoX21hcGAsIHNldHRpbmcgdGhlIG51bWJlciBvZiBzbG90cyB0byBiZSBhdCBsZWFzdAorICAv
LyB0aGUgcGFzc2VkIHZhbHVlLiBJZiB0aGUgbmV3IG51bWJlciBvZiBzbG90cyBpbmNyZWFzZXMg
dGhlIGxvYWQgZmFjdG9yIG1vcmUKKyAgLy8gdGhhbiB0aGUgY3VycmVudCBtYXhpbXVtIGxvYWQg
ZmFjdG9yCisgIC8vIChgY291bnRgIDwgYHNpemUoKWAgLyBgbWF4X2xvYWRfZmFjdG9yKClgKSwg
dGhlbiB0aGUgbmV3IG51bWJlciBvZiBzbG90cworICAvLyB3aWxsIGJlIGF0IGxlYXN0IGBzaXpl
KClgIC8gYG1heF9sb2FkX2ZhY3RvcigpYC4KKyAgLy8KKyAgLy8gVG8gZm9yY2UgYSByZWhhc2gs
IHBhc3MgcmVoYXNoKDApLgorICAvLworICAvLyBOT1RFOiB1bmxpa2UgYmVoYXZpb3IgaW4gYHN0
ZDo6dW5vcmRlcmVkX21hcGAsIHJlZmVyZW5jZXMgYXJlIGFsc28KKyAgLy8gaW52YWxpZGF0ZWQg
dXBvbiBhIGByZWhhc2goKWAuCisgIHVzaW5nIEJhc2U6OnJlaGFzaDsKKworICAvLyBmbGF0X2hh
c2hfbWFwOjpyZXNlcnZlKGNvdW50KQorICAvLworICAvLyBTZXRzIHRoZSBudW1iZXIgb2Ygc2xv
dHMgaW4gdGhlIGBmbGF0X2hhc2hfbWFwYCB0byB0aGUgbnVtYmVyIG5lZWRlZCB0bworICAvLyBh
Y2NvbW1vZGF0ZSBhdCBsZWFzdCBgY291bnRgIHRvdGFsIGVsZW1lbnRzIHdpdGhvdXQgZXhjZWVk
aW5nIHRoZSBjdXJyZW50CisgIC8vIG1heGltdW0gbG9hZCBmYWN0b3IsIGFuZCBtYXkgcmVoYXNo
IHRoZSBjb250YWluZXIgaWYgbmVlZGVkLgorICB1c2luZyBCYXNlOjpyZXNlcnZlOworCisgIC8v
IGZsYXRfaGFzaF9tYXA6OmF0KCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0
aGUgbWFwcGVkIHZhbHVlIG9mIHRoZSBlbGVtZW50IHdpdGgga2V5IGVxdWl2YWxlbnQKKyAgLy8g
dG8gdGhlIHBhc3NlZCBrZXkuCisgIHVzaW5nIEJhc2U6OmF0OworCisgIC8vIGZsYXRfaGFzaF9t
YXA6OmNvbnRhaW5zKCkKKyAgLy8KKyAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQg
d2l0aCBhIGtleSBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgCisgIC8vIGV4aXN0
cyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfbWFwYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzbyBvciBg
ZmFsc2VgCisgIC8vIG90aGVyd2lzZS4KKyAgdXNpbmcgQmFzZTo6Y29udGFpbnM7CisKKyAgLy8g
ZmxhdF9oYXNoX21hcDo6Y291bnQoY29uc3QgS2V5JiBrZXkpIGNvbnN0CisgIC8vCisgIC8vIFJl
dHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGEga2V5IGNvbXBhcmluZyBlcXVhbCB0
byB0aGUgZ2l2ZW4KKyAgLy8gYGtleWAgd2l0aGluIHRoZSBgZmxhdF9oYXNoX21hcGAuIG5vdGUg
dGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCisgIC8vIGVpdGhlciBgMWAgb3IgYDBgIHNp
bmNlIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gYQorICAvLyBgZmxhdF9o
YXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmNvdW50OworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmVx
dWFsX3JhbmdlKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNsb3NlZCByYW5nZSBbZmlyc3QsIGxh
c3RdLCBkZWZpbmVkIGJ5IGEgYHN0ZDo6cGFpcmAgb2YgdHdvCisgIC8vIGl0ZXJhdG9ycywgY29u
dGFpbmluZyBhbGwgZWxlbWVudHMgd2l0aCB0aGUgcGFzc2VkIGtleSBpbiB0aGUKKyAgLy8gYGZs
YXRfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjplcXVhbF9yYW5nZTsKKworICAvLyBmbGF0X2hh
c2hfbWFwOjpmaW5kKCkKKyAgLy8KKyAgLy8gRmluZHMgYW4gZWxlbWVudCB3aXRoIHRoZSBwYXNz
ZWQgYGtleWAgd2l0aGluIHRoZSBgZmxhdF9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmZpbmQ7
CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6b3BlcmF0b3JbXSgpCisgIC8vCisgIC8vIFJldHVybnMg
YSByZWZlcmVuY2UgdG8gdGhlIHZhbHVlIG1hcHBlZCB0byB0aGUgcGFzc2VkIGtleSB3aXRoaW4g
dGhlCisgIC8vIGBmbGF0X2hhc2hfbWFwYCwgcGVyZm9ybWluZyBhbiBgaW5zZXJ0KClgIGlmIHRo
ZSBrZXkgZG9lcyBub3QgYWxyZWFkeQorICAvLyBleGlzdC4KKyAgLy8KKyAgLy8gSWYgYW4gaW5z
ZXJ0aW9uIG9jY3VycyBhbmQgcmVzdWx0cyBpbiBhIHJlaGFzaGluZyBvZiB0aGUgY29udGFpbmVy
LCBhbGwKKyAgLy8gaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4gT3RoZXJ3aXNlIGl0ZXJhdG9y
cyBhcmUgbm90IGFmZmVjdGVkIGFuZAorICAvLyByZWZlcmVuY2VzIGFyZSBub3QgaW52YWxpZGF0
ZWQuIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyBUJiBvcGVyYXRvcltd
KGNvbnN0IEtleSYga2V5KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGFuIGluaXRfdHlwZSBvYmpl
Y3QgY29uc3RydWN0ZWQgaW4tcGxhY2UgaWYgdGhlIGVsZW1lbnQgd2l0aCB0aGUKKyAgLy8gICBn
aXZlbiBrZXkgZG9lcyBub3QgZXhpc3QuCisgIC8vCisgIC8vIFQmIG9wZXJhdG9yW10oS2V5JiYg
a2V5KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGFuIGluaXRfdHlwZSBvYmplY3QgY29uc3RydWN0
ZWQgaW4tcGxhY2UgcHJvdmlkZWQgdGhhdCBhbiBlbGVtZW50CisgIC8vICAgd2l0aCB0aGUgZ2l2
ZW4ga2V5IGRvZXMgbm90IGV4aXN0LgorICB1c2luZyBCYXNlOjpvcGVyYXRvcltdOworCisgIC8v
IGZsYXRfaGFzaF9tYXA6OmJ1Y2tldF9jb3VudCgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51
bWJlciBvZiAiYnVja2V0cyIgd2l0aGluIHRoZSBgZmxhdF9oYXNoX21hcGAuIE5vdGUgdGhhdAor
ICAvLyBiZWNhdXNlIGEgZmxhdCBoYXNoIG1hcCBjb250YWlucyBhbGwgZWxlbWVudHMgd2l0aGlu
IGl0cyBpbnRlcm5hbCBzdG9yYWdlLAorICAvLyB0aGlzIHZhbHVlIHNpbXBseSBlcXVhbHMgdGhl
IGN1cnJlbnQgY2FwYWNpdHkgb2YgdGhlIGBmbGF0X2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6
YnVja2V0X2NvdW50OworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmxvYWRfZmFjdG9yKCkKKyAgLy8K
KyAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBsb2FkIGZhY3RvciBvZiB0aGUgYGZsYXRfaGFzaF9t
YXBgICh0aGUgYXZlcmFnZSBudW1iZXIKKyAgLy8gb2Ygc2xvdHMgb2NjdXBpZWQgd2l0aCBhIHZh
bHVlIHdpdGhpbiB0aGUgaGFzaCBtYXApLgorICB1c2luZyBCYXNlOjpsb2FkX2ZhY3RvcjsKKwor
ICAvLyBmbGF0X2hhc2hfbWFwOjptYXhfbG9hZF9mYWN0b3IoKQorICAvLworICAvLyBNYW5hZ2Vz
IHRoZSBtYXhpbXVtIGxvYWQgZmFjdG9yIG9mIHRoZSBgZmxhdF9oYXNoX21hcGAuIE92ZXJsb2Fk
cyBhcmUKKyAgLy8gbGlzdGVkIGJlbG93LgorICAvLworICAvLyBmbG9hdCBmbGF0X2hhc2hfbWFw
OjptYXhfbG9hZF9mYWN0b3IoKQorICAvLworICAvLyAgIFJldHVybnMgdGhlIGN1cnJlbnQgbWF4
aW11bSBsb2FkIGZhY3RvciBvZiB0aGUgYGZsYXRfaGFzaF9tYXBgLgorICAvLworICAvLyB2b2lk
IGZsYXRfaGFzaF9tYXA6Om1heF9sb2FkX2ZhY3RvcihmbG9hdCBtbCkKKyAgLy8KKyAgLy8gICBT
ZXRzIHRoZSBtYXhpbXVtIGxvYWQgZmFjdG9yIG9mIHRoZSBgZmxhdF9oYXNoX21hcGAgdG8gdGhl
IHBhc3NlZCB2YWx1ZS4KKyAgLy8KKyAgLy8gICBOT1RFOiBUaGlzIG92ZXJsb2FkIGlzIHByb3Zp
ZGVkIG9ubHkgZm9yIEFQSSBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFNUTDsKKyAgLy8gICBgZmxh
dF9oYXNoX21hcGAgd2lsbCBpZ25vcmUgYW55IHNldCBsb2FkIGZhY3RvciBhbmQgbWFuYWdlIGl0
cyByZWhhc2hpbmcKKyAgLy8gICBpbnRlcm5hbGx5IGFzIGFuIGltcGxlbWVudGF0aW9uIGRldGFp
bC4KKyAgdXNpbmcgQmFzZTo6bWF4X2xvYWRfZmFjdG9yOworCisgIC8vIGZsYXRfaGFzaF9tYXA6
OmdldF9hbGxvY2F0b3IoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBhbGxvY2F0b3IgZnVuY3Rp
b24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgYGZsYXRfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpn
ZXRfYWxsb2NhdG9yOworCisgIC8vIGZsYXRfaGFzaF9tYXA6Omhhc2hfZnVuY3Rpb24oKQorICAv
LworICAvLyBSZXR1cm5zIHRoZSBoYXNoaW5nIGZ1bmN0aW9uIHVzZWQgdG8gaGFzaCB0aGUga2V5
cyB3aXRoaW4gdGhpcworICAvLyBgZmxhdF9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6Omhhc2hf
ZnVuY3Rpb247CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6a2V5X2VxKCkKKyAgLy8KKyAgLy8gUmV0
dXJucyB0aGUgZnVuY3Rpb24gdXNlZCBmb3IgY29tcGFyaW5nIGtleXMgZXF1YWxpdHkuCisgIHVz
aW5nIEJhc2U6OmtleV9lcTsKK307CisKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewor
Cit0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVj4KK3N0cnVjdCBGbGF0SGFzaE1hcFBvbGljeSB7
CisgIHVzaW5nIHNsb3RfdHlwZSA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6c2xvdF90eXBlPEssIFY+
OworICB1c2luZyBrZXlfdHlwZSA9IEs7CisgIHVzaW5nIG1hcHBlZF90eXBlID0gVjsKKyAgdXNp
bmcgaW5pdF90eXBlID0gc3RkOjpwYWlyPC8qbm9uIGNvbnN0Ki8ga2V5X3R5cGUsIG1hcHBlZF90
eXBlPjsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yLCBjbGFzcy4uLiBBcmdzPgorICBz
dGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBzbG90LCBB
cmdzJiYuLi4gYXJncykgeworICAgIHNsb3RfdHlwZTo6Y29uc3RydWN0KGFsbG9jLCBzbG90LCBz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFs
bG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgZGVzdHJveShBbGxvY2F0b3IqIGFsbG9jLCBzbG90X3R5
cGUqIHNsb3QpIHsKKyAgICBzbG90X3R5cGU6OmRlc3Ryb3koYWxsb2MsIHNsb3QpOworICB9CisK
KyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgdHJhbnNmZXIoQWxs
b2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAgIHNsb3RfdHlwZTo6dHJhbnNmZXIoYWxsb2Ms
IG5ld19zbG90LCBvbGRfc2xvdCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3Mu
Li4gQXJncz4KKyAgc3RhdGljIGRlY2x0eXBlKGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6RGVj
b21wb3NlUGFpcigKKyAgICAgIHN0ZDo6ZGVjbHZhbDxGPigpLCBzdGQ6OmRlY2x2YWw8QXJncz4o
KS4uLikpCisgIGFwcGx5KEYmJiBmLCBBcmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiBhYnNs
Ojpjb250YWluZXJfaW50ZXJuYWw6OkRlY29tcG9zZVBhaXIoc3RkOjpmb3J3YXJkPEY+KGYpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIHN0YXRpYyBzaXplX3Qgc3BhY2VfdXNl
ZChjb25zdCBzbG90X3R5cGUqKSB7IHJldHVybiAwOyB9CisKKyAgc3RhdGljIHN0ZDo6cGFpcjxj
b25zdCBLLCBWPiYgZWxlbWVudChzbG90X3R5cGUqIHNsb3QpIHsgcmV0dXJuIHNsb3QtPnZhbHVl
OyB9CisKKyAgc3RhdGljIFYmIHZhbHVlKHN0ZDo6cGFpcjxjb25zdCBLLCBWPioga3YpIHsgcmV0
dXJuIGt2LT5zZWNvbmQ7IH0KKyAgc3RhdGljIGNvbnN0IFYmIHZhbHVlKGNvbnN0IHN0ZDo6cGFp
cjxjb25zdCBLLCBWPioga3YpIHsgcmV0dXJuIGt2LT5zZWNvbmQ7IH0KK307CisKK30gIC8vIG5h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisjZW5kaWYg
IC8vIEFCU0xfQ09OVEFJTkVSX0ZMQVRfSEFTSF9NQVBfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9mbGF0X2hhc2hfbWFwX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNo
X21hcF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYTc4MWZmZDZjN2Q5ZDE0OTA4NmU0NDMxNzRhN2Fh
NzZhZDIyYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21h
cF90ZXN0LmNjCkBAIC0wLDAgKzEsMjQxIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcC5oIgor
CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGlu
Zy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfY29u
c3RydWN0b3JfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3Jk
ZXJlZF9tYXBfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9h
bnkuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7
CituYW1lc3BhY2UgewordXNpbmcgOjphYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfaW50
ZXJuYWw6OkVudW07Cit1c2luZyA6OmFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9pbnRl
cm5hbDo6RW51bUNsYXNzOwordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpQ
YWlyOwordXNpbmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZTsKKwordGVtcGxhdGUg
PGNsYXNzIEssIGNsYXNzIFY+Cit1c2luZyBNYXAgPQorICAgIGZsYXRfaGFzaF9tYXA8SywgViwg
U3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFsbG9jPD4+OworCitz
dGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3N0YW5kYXJkX2xheW91dDxOb25TdGFuZGFyZExheW91dD4o
KSwgIiIpOworCit1c2luZyBNYXBUeXBlcyA9CisgICAgOjp0ZXN0aW5nOjpUeXBlczxNYXA8aW50
LCBpbnQ+LCBNYXA8c3RkOjpzdHJpbmcsIGludD4sIE1hcDxFbnVtLCBzdGQ6OnN0cmluZz4sCisg
ICAgICAgICAgICAgICAgICAgICBNYXA8RW51bUNsYXNzLCBpbnQ+LCBNYXA8aW50LCBOb25TdGFu
ZGFyZExheW91dD4sCisgICAgICAgICAgICAgICAgICAgICBNYXA8Tm9uU3RhbmRhcmRMYXlvdXQs
IGludD4+OworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChGbGF0SGFzaE1hcCwgQ29u
c3RydWN0b3JUZXN0LCBNYXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChG
bGF0SGFzaE1hcCwgTG9va3VwVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoRmxhdEhhc2hNYXAsIE1vZGlmaWVyc1Rlc3QsIE1hcFR5cGVzKTsKKworVEVTVChG
bGF0SGFzaE1hcCwgU3RhbmRhcmRMYXlvdXQpIHsKKyAgc3RydWN0IEludCB7CisgICAgZXhwbGlj
aXQgSW50KHNpemVfdCB2YWx1ZSkgOiB2YWx1ZSh2YWx1ZSkge30KKyAgICBJbnQoKSA6IHZhbHVl
KDApIHsgQUREX0ZBSUxVUkUoKTsgfQorICAgIEludChjb25zdCBJbnQmIG90aGVyKSA6IHZhbHVl
KG90aGVyLnZhbHVlKSB7IEFERF9GQUlMVVJFKCk7IH0KKyAgICBJbnQoSW50JiYpID0gZGVmYXVs
dDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50JiBvdGhlcikgY29uc3QgeyByZXR1cm4g
dmFsdWUgPT0gb3RoZXIudmFsdWU7IH0KKyAgICBzaXplX3QgdmFsdWU7CisgIH07CisgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8SW50PigpLCAiIik7CisKKyAgc3RydWN0
IEhhc2ggeworICAgIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IEludCYgb2JqKSBjb25zdCB7IHJl
dHVybiBvYmoudmFsdWU7IH0KKyAgfTsKKworICAvLyBWZXJpZnkgdGhhdCBuZWl0aGVyIHRoZSBr
ZXkgbm9yIHRoZSB2YWx1ZSBnZXQgZGVmYXVsdC1jb25zdHJ1Y3RlZCBvcgorICAvLyBjb3B5LWNv
bnN0cnVjdGVkLgorICB7CisgICAgZmxhdF9oYXNoX21hcDxJbnQsIEludCwgSGFzaD4gbTsKKyAg
ICBtLnRyeV9lbXBsYWNlKEludCgxKSwgSW50KDIpKTsKKyAgICBtLnRyeV9lbXBsYWNlKEludCgz
KSwgSW50KDQpKTsKKyAgICBtLmVyYXNlKEludCgxKSk7CisgICAgbS5yZWhhc2goMiAqIG0uYnVj
a2V0X2NvdW50KCkpOworICB9CisgIHsKKyAgICBmbGF0X2hhc2hfbWFwPEludCwgSW50LCBIYXNo
PiBtOworICAgIG0udHJ5X2VtcGxhY2UoSW50KDEpLCBJbnQoMikpOworICAgIG0udHJ5X2VtcGxh
Y2UoSW50KDMpLCBJbnQoNCkpOworICAgIG0uZXJhc2UoSW50KDEpKTsKKyAgICBtLmNsZWFyKCk7
CisgIH0KK30KKworLy8gZ2NjIGJlY29tZXMgdW5oYXBweSBpZiB0aGlzIGlzIGluc2lkZSB0aGUg
bWV0aG9kLCBzbyBwdWxsIGl0IG91dCBoZXJlLgorc3RydWN0IGJhbGFzdCB7fTsKKworVEVTVChG
bGF0SGFzaE1hcCwgSXRlcmF0ZXNNc2FuKSB7CisgIC8vIEJlY2F1c2UgU3dpc3NUYWJsZSByYW5k
b21pemVzIG9uIHBvaW50ZXIgYWRkcmVzc2VzLCB3ZSBrZWVwIG9sZCB0YWJsZXMKKyAgLy8gYXJv
dW5kIHRvIGVuc3VyZSB3ZSBkb24ndCByZXVzZSBvbGQgbWVtb3J5LgorICBzdGQ6OnZlY3Rvcjxh
YnNsOjpmbGF0X2hhc2hfbWFwPGludCwgYmFsYXN0Pj4gZ2FyYmFnZTsKKyAgZm9yIChpbnQgaSA9
IDA7IGkgPCAxMDA7ICsraSkgeworICAgIGFic2w6OmZsYXRfaGFzaF9tYXA8aW50LCBiYWxhc3Q+
IHQ7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCAxMDA7ICsraikgeworICAgICAgdFtqXTsKKyAg
ICAgIGZvciAoY29uc3QgYXV0byYgcCA6IHQpIEVYUEVDVF9USEFUKHAsIFBhaXIoXywgXykpOwor
ICAgIH0KKyAgICBnYXJiYWdlLnB1c2hfYmFjayhzdGQ6Om1vdmUodCkpOworICB9Cit9CisKKy8v
IERlbW9uc3RyYXRpb24gb2YgdGhlICJMYXp5IEtleSIgcGF0dGVybi4gIFRoaXMgdXNlcyBoZXRl
cm9nZW5vdXMgaW5zZXJ0IHRvCisvLyBhdm9pZCBjcmVhdGluZyBleHBlbnNpdmUga2V5IGVsZW1l
bnRzIHdoZW4gdGhlIGl0ZW0gaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZQorLy8gbWFwLgorc3Ry
dWN0IExhenlJbnQgeworICBleHBsaWNpdCBMYXp5SW50KHNpemVfdCB2YWx1ZSwgaW50KiB0cmFj
a2VyKQorICAgICAgOiB2YWx1ZSh2YWx1ZSksIHRyYWNrZXIodHJhY2tlcikge30KKworICBleHBs
aWNpdCBvcGVyYXRvciBzaXplX3QoKSBjb25zdCB7CisgICAgKysqdHJhY2tlcjsKKyAgICByZXR1
cm4gdmFsdWU7CisgIH0KKworICBzaXplX3QgdmFsdWU7CisgIGludCogdHJhY2tlcjsKK307CisK
K3N0cnVjdCBIYXNoIHsKKyAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworICBpbnQqIHRy
YWNrZXI7CisgIHNpemVfdCBvcGVyYXRvcigpKHNpemVfdCBvYmopIGNvbnN0IHsKKyAgICArKyp0
cmFja2VyOworICAgIHJldHVybiBvYmo7CisgIH0KKyAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3Qg
TGF6eUludCYgb2JqKSBjb25zdCB7CisgICAgKysqdHJhY2tlcjsKKyAgICByZXR1cm4gb2JqLnZh
bHVlOworICB9Cit9OworCitzdHJ1Y3QgRXEgeworICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZv
aWQ7CisgIGJvb2wgb3BlcmF0b3IoKShzaXplX3QgbGhzLCBzaXplX3QgcmhzKSBjb25zdCB7Cisg
ICAgcmV0dXJuIGxocyA9PSByaHM7CisgIH0KKyAgYm9vbCBvcGVyYXRvcigpKHNpemVfdCBsaHMs
IGNvbnN0IExhenlJbnQmIHJocykgY29uc3QgeworICAgIHJldHVybiBsaHMgPT0gcmhzLnZhbHVl
OworICB9Cit9OworCitURVNUKEZsYXRIYXNoTWFwLCBMYXp5S2V5UGF0dGVybikgeworICAvLyBo
YXNoZXMgYXJlIG9ubHkgZ3VhcmFudGVlZCBpbiBvcHQgbW9kZSwgd2UgdXNlIGFzc2VydGlvbnMg
dG8gdHJhY2sgaW50ZXJuYWwKKyAgLy8gc3RhdGUgdGhhdCBjYW4gY2F1c2UgZXh0cmEgY2FsbHMg
dG8gaGFzaC4KKyAgaW50IGNvbnZlcnNpb25zID0gMDsKKyAgaW50IGhhc2hlcyA9IDA7CisgIGZs
YXRfaGFzaF9tYXA8c2l6ZV90LCBzaXplX3QsIEhhc2gsIEVxPiBtKDAsIEhhc2h7Jmhhc2hlc30p
OworCisgIG1bTGF6eUludCgxLCAmY29udmVyc2lvbnMpXSA9IDE7CisgIEVYUEVDVF9USEFUKG0s
IFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoMSwgMSkpKTsKKyAgRVhQRUNUX0VRKGNvbnZlcnNp
b25zLCAxKTsKKyNpZmRlZiBOREVCVUcKKyAgRVhQRUNUX0VRKGhhc2hlcywgMSk7CisjZW5kaWYK
KworICBtW0xhenlJbnQoMSwgJmNvbnZlcnNpb25zKV0gPSAyOworICBFWFBFQ1RfVEhBVChtLCBV
bm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKDEsIDIpKSk7CisgIEVYUEVDVF9FUShjb252ZXJzaW9u
cywgMSk7CisjaWZkZWYgTkRFQlVHCisgIEVYUEVDVF9FUShoYXNoZXMsIDIpOworI2VuZGlmCisK
KyAgbS50cnlfZW1wbGFjZShMYXp5SW50KDIsICZjb252ZXJzaW9ucyksIDMpOworICBFWFBFQ1Rf
VEhBVChtLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKDEsIDIpLCBQYWlyKDIsIDMpKSk7Cisg
IEVYUEVDVF9FUShjb252ZXJzaW9ucywgMik7CisjaWZkZWYgTkRFQlVHCisgIEVYUEVDVF9FUSho
YXNoZXMsIDMpOworI2VuZGlmCisKKyAgbS50cnlfZW1wbGFjZShMYXp5SW50KDIsICZjb252ZXJz
aW9ucyksIDQpOworICBFWFBFQ1RfVEhBVChtLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKDEs
IDIpLCBQYWlyKDIsIDMpKSk7CisgIEVYUEVDVF9FUShjb252ZXJzaW9ucywgMik7CisjaWZkZWYg
TkRFQlVHCisgIEVYUEVDVF9FUShoYXNoZXMsIDQpOworI2VuZGlmCit9CisKK1RFU1QoRmxhdEhh
c2hNYXAsIEJpdGZpZWxkQXJndW1lbnQpIHsKKyAgdW5pb24geworICAgIGludCBuIDogMTsKKyAg
fTsKKyAgbiA9IDA7CisgIGZsYXRfaGFzaF9tYXA8aW50LCBpbnQ+IG07CisgIG0uZXJhc2Uobik7
CisgIG0uY291bnQobik7CisgIG0ucHJlZmV0Y2gobik7CisgIG0uZmluZChuKTsKKyAgbS5jb250
YWlucyhuKTsKKyAgbS5lcXVhbF9yYW5nZShuKTsKKyAgbS5pbnNlcnRfb3JfYXNzaWduKG4sIG4p
OworICBtLmluc2VydF9vcl9hc3NpZ24obS5lbmQoKSwgbiwgbik7CisgIG0udHJ5X2VtcGxhY2Uo
bik7CisgIG0udHJ5X2VtcGxhY2UobS5lbmQoKSwgbik7CisgIG0uYXQobik7CisgIG1bbl07Cit9
CisKK1RFU1QoRmxhdEhhc2hNYXAsIE1lcmdlRXh0cmFjdEluc2VydCkgeworICAvLyBXZSBjYW4n
dCB0ZXN0IG11dGFibGUga2V5cywgb3Igbm9uLWNvcHlhYmxlIGtleXMgd2l0aCBmbGF0X2hhc2hf
bWFwLgorICAvLyBUZXN0IHRoYXQgdGhlIG5vZGVzIGhhdmUgdGhlIHByb3BlciBBUEkuCisgIGFi
c2w6OmZsYXRfaGFzaF9tYXA8aW50LCBpbnQ+IG0gPSB7ezEsIDd9LCB7MiwgOX19OworICBhdXRv
IG5vZGUgPSBtLmV4dHJhY3QoMSk7CisgIEVYUEVDVF9UUlVFKG5vZGUpOworICBFWFBFQ1RfRVEo
bm9kZS5rZXkoKSwgMSk7CisgIEVYUEVDVF9FUShub2RlLm1hcHBlZCgpLCA3KTsKKyAgRVhQRUNU
X1RIQVQobSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigyLCA5KSkpOworCisgIG5vZGUubWFw
cGVkKCkgPSAxNzsKKyAgbS5pbnNlcnQoc3RkOjptb3ZlKG5vZGUpKTsKKyAgRVhQRUNUX1RIQVQo
bSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigxLCAxNyksIFBhaXIoMiwgOSkpKTsKK30KKyNp
ZiAhZGVmaW5lZChfX0FORFJPSURfXykgJiYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChfX0VNU0NSSVBURU5fXykKK1RFU1QoRmxhdEhhc2hNYXAsIEFueSkgeworICBhYnNsOjpmbGF0
X2hhc2hfbWFwPGludCwgYWJzbDo6YW55PiBtOworICBtLmVtcGxhY2UoMSwgNyk7CisgIGF1dG8g
aXQgPSBtLmZpbmQoMSk7CisgIEFTU0VSVF9ORShpdCwgbS5lbmQoKSk7CisgIEVYUEVDVF9FUSg3
LCBhYnNsOjphbnlfY2FzdDxpbnQ+KGl0LT5zZWNvbmQpKTsKKworICBtLmVtcGxhY2Uoc3RkOjpw
aWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6Om1ha2VfdHVwbGUoMiksIHN0ZDo6bWFrZV90dXBsZSg4
KSk7CisgIGl0ID0gbS5maW5kKDIpOworICBBU1NFUlRfTkUoaXQsIG0uZW5kKCkpOworICBFWFBF
Q1RfRVEoOCwgYWJzbDo6YW55X2Nhc3Q8aW50PihpdC0+c2Vjb25kKSk7CisKKyAgbS5lbXBsYWNl
KHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjptYWtlX3R1cGxlKDMpLAorICAgICAgICAg
ICAgc3RkOjptYWtlX3R1cGxlKGFic2w6OmFueSg5KSkpOworICBpdCA9IG0uZmluZCgzKTsKKyAg
QVNTRVJUX05FKGl0LCBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKDksIGFic2w6OmFueV9jYXN0PGlu
dD4oaXQtPnNlY29uZCkpOworCisgIHN0cnVjdCBIIHsKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShj
b25zdCBhYnNsOjphbnkmKSBjb25zdCB7IHJldHVybiAwOyB9CisgIH07CisgIHN0cnVjdCBFIHsK
KyAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgYWJzbDo6YW55JiwgY29uc3QgYWJzbDo6YW55Jikg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICB9OworICBhYnNsOjpmbGF0X2hhc2hfbWFwPGFic2w6
OmFueSwgaW50LCBILCBFPiBtMjsKKyAgbTIuZW1wbGFjZSgxLCA3KTsKKyAgYXV0byBpdDIgPSBt
Mi5maW5kKDEpOworICBBU1NFUlRfTkUoaXQyLCBtMi5lbmQoKSk7CisgIEVYUEVDVF9FUSg3LCBp
dDItPnNlY29uZCk7Cit9CisjZW5kaWYgIC8vIF9fQU5EUk9JRF9fCisKK30gIC8vIG5hbWVzcGFj
ZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFi
c2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfc2V0LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvZmxhdF9oYXNoX3NldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4YWVhZDFhOGFlMjA5ZTJhNDVh
OTU2MTY3YmU5NWU3MjcwYzU0NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
ZmxhdF9oYXNoX3NldC5oCkBAIC0wLDAgKzEsNDM5IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBm
bGF0X2hhc2hfc2V0LmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQW4gYGFic2w6
OmZsYXRfaGFzaF9zZXQ8VD5gIGlzIGFuIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIg
ZGVzaWduZWQgdG8KKy8vIGJlIGEgbW9yZSBlZmZpY2llbnQgcmVwbGFjZW1lbnQgZm9yIGBzdGQ6
OnVub3JkZXJlZF9zZXRgLiBMaWtlCisvLyBgdW5vcmRlcmVkX3NldGAsIHNlYXJjaCwgaW5zZXJ0
aW9uLCBhbmQgZGVsZXRpb24gb2Ygc2V0IGVsZW1lbnRzIGNhbiBiZSBkb25lCisvLyBhcyBhbiBg
TygxKWAgb3BlcmF0aW9uLiBIb3dldmVyLCBgZmxhdF9oYXNoX3NldGAgKGFuZCBvdGhlciB1bm9y
ZGVyZWQKKy8vIGFzc29jaWF0aXZlIGNvbnRhaW5lcnMga25vd24gYXMgdGhlIGNvbGxlY3Rpb24g
b2YgQWJzZWlsICJTd2lzcyB0YWJsZXMiKQorLy8gY29udGFpbiBvdGhlciBvcHRpbWl6YXRpb25z
IHRoYXQgcmVzdWx0IGluIGJvdGggbWVtb3J5IGFuZCBjb21wdXRhdGlvbgorLy8gYWR2YW50YWdl
cy4KKy8vCisvLyBJbiBtb3N0IGNhc2VzLCB5b3VyIGRlZmF1bHQgY2hvaWNlIGZvciBhIGhhc2gg
c2V0IHNob3VsZCBiZSBhIHNldCBvZiB0eXBlCisvLyBgZmxhdF9oYXNoX3NldGAuCisjaWZuZGVm
IEFCU0xfQ09OVEFJTkVSX0ZMQVRfSEFTSF9TRVRfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJf
RkxBVF9IQVNIX1NFVF9IXworCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRp
bGl0eT4KKworI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiAgLy8gSVdZVSBwcmFnbWE6
IGV4cG9ydAorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5o
IiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5o
IgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEZsYXRIYXNoU2V0UG9saWN5OworfSAgLy8gbmFt
ZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8g
YWJzbDo6ZmxhdF9oYXNoX3NldAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBBbiBg
YWJzbDo6ZmxhdF9oYXNoX3NldDxUPmAgaXMgYW4gdW5vcmRlcmVkIGFzc29jaWF0aXZlIGNvbnRh
aW5lciB3aGljaCBoYXMKKy8vIGJlZW4gb3B0aW1pemVkIGZvciBib3RoIHNwZWVkIGFuZCBtZW1v
cnkgZm9vdHByaW50IGluIG1vc3QgY29tbW9uIHVzZSBjYXNlcy4KKy8vIEl0cyBpbnRlcmZhY2Ug
aXMgc2ltaWxhciB0byB0aGF0IG9mIGBzdGQ6OnVub3JkZXJlZF9zZXQ8VD5gIHdpdGggdGhlCisv
LyBmb2xsb3dpbmcgbm90YWJsZSBkaWZmZXJlbmNlczoKKy8vCisvLyAqIFJlcXVpcmVzIGtleXMg
dGhhdCBhcmUgQ29weUNvbnN0cnVjdGlibGUKKy8vICogU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBs
b29rdXAsIHRocm91Z2ggYGZpbmQoKWAsIGBvcGVyYXRvcltdKClgIGFuZAorLy8gICBgaW5zZXJ0
KClgLCBwcm92aWRlZCB0aGF0IHRoZSBzZXQgaXMgcHJvdmlkZWQgYSBjb21wYXRpYmxlIGhldGVy
b2dlbmVvdXMKKy8vICAgaGFzaGluZyBmdW5jdGlvbiBhbmQgZXF1YWxpdHkgb3BlcmF0b3IuCisv
LyAqIEludmFsaWRhdGVzIGFueSByZWZlcmVuY2VzIGFuZCBwb2ludGVycyB0byBlbGVtZW50cyB3
aXRoaW4gdGhlIHRhYmxlIGFmdGVyCisvLyAgIGByZWhhc2goKWAuCisvLyAqIENvbnRhaW5zIGEg
YGNhcGFjaXR5KClgIG1lbWJlciBmdW5jdGlvbiBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgZWxl
bWVudAorLy8gICBzbG90cyAob3BlbiwgZGVsZXRlZCwgYW5kIGVtcHR5KSB3aXRoaW4gdGhlIGhh
c2ggc2V0LgorLy8gKiBSZXR1cm5zIGB2b2lkYCBmcm9tIHRoZSBgZXJhc2UoaXRlcmF0b3IpYCBv
dmVybG9hZC4KKy8vCisvLyBCeSBkZWZhdWx0LCBgZmxhdF9oYXNoX3NldGAgdXNlcyB0aGUgYGFi
c2w6Okhhc2hgIGhhc2hpbmcgZnJhbWV3b3JrLiBBbGwKKy8vIGZ1bmRhbWVudGFsIGFuZCBBYnNl
aWwgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3JrIGhhdmUgYQor
Ly8gY29tcGF0aWJsZSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgY29tcGFyaW5nIGluc2VydGlvbnMg
aW50byBgZmxhdF9oYXNoX21hcGAuCisvLyBJZiB5b3VyIHR5cGUgaXMgbm90IHlldCBzdXBwb3J0
ZWQgYnkgdGhlIGBhc2JsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQorLy8gYWJzbC9oYXNoL2hhc2gu
aCBmb3IgaW5mb3JtYXRpb24gb24gZXh0ZW5kaW5nIEFic2VpbCBoYXNoaW5nIHRvIHVzZXItZGVm
aW5lZAorLy8gdHlwZXMuCisvLworLy8gTk9URTogQSBgZmxhdF9oYXNoX3NldGAgc3RvcmVzIGl0
cyBrZXlzIGRpcmVjdGx5IGluc2lkZSBpdHMgaW1wbGVtZW50YXRpb24KKy8vIGFycmF5IHRvIGF2
b2lkIG1lbW9yeSBpbmRpcmVjdGlvbi4gQmVjYXVzZSBhIGBmbGF0X2hhc2hfc2V0YCBpcyBkZXNp
Z25lZCB0bworLy8gbW92ZSBkYXRhIHdoZW4gcmVoYXNoZWQsIHNldCBrZXlzIHdpbGwgbm90IHJl
dGFpbiBwb2ludGVyIHN0YWJpbGl0eS4gSWYgeW91CisvLyByZXF1aXJlIHBvaW50ZXIgc3RhYmls
aXR5LCBjb25zaWRlciB1c2luZworLy8gYGFic2w6OmZsYXRfaGFzaF9zZXQ8c3RkOjp1bmlxdWVf
cHRyPFQ+PmAuIElmIHlvdXIgdHlwZSBpcyBub3QgbW92ZWFibGUgYW5kCisvLyB5b3UgcmVxdWly
ZSBwb2ludGVyIHN0YWJpbGl0eSwgY29uc2lkZXIgYGFic2w6Om5vZGVfaGFzaF9zZXRgIGluc3Rl
YWQuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIC8vIENyZWF0ZSBhIGZsYXQgaGFzaCBzZXQg
b2YgdGhyZWUgc3RyaW5ncworLy8gICBhYnNsOjpmbGF0X2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBk
dWNrcyA9CisvLyAgICAgeyJodWV5IiwgImRld2V5IiwgImxvdWllIn07CisvLworLy8gIC8vIElu
c2VydCBhIG5ldyBlbGVtZW50IGludG8gdGhlIGZsYXQgaGFzaCBzZXQKKy8vICBkdWNrcy5pbnNl
cnQoImRvbmFsZCJ9OworLy8KKy8vICAvLyBGb3JjZSBhIHJlaGFzaCBvZiB0aGUgZmxhdCBoYXNo
IHNldAorLy8gIGR1Y2tzLnJlaGFzaCgwKTsKKy8vCisvLyAgLy8gU2VlIGlmICJkZXdleSIgaXMg
cHJlc2VudAorLy8gIGlmIChkdWNrcy5jb250YWlucygiZGV3ZXkiKSkgeworLy8gICAgc3RkOjpj
b3V0IDw8ICJXZSBmb3VuZCBkZXdleSEiIDw8IHN0ZDo6ZW5kbDsKKy8vICB9Cit0ZW1wbGF0ZSA8
Y2xhc3MgVCwgY2xhc3MgSGFzaCA9IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZh
dWx0X2hhc2g8VD4sCisgICAgICAgICAgY2xhc3MgRXEgPSBhYnNsOjpjb250YWluZXJfaW50ZXJu
YWw6Omhhc2hfZGVmYXVsdF9lcTxUPiwKKyAgICAgICAgICBjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6
OmFsbG9jYXRvcjxUPj4KK2NsYXNzIGZsYXRfaGFzaF9zZXQKKyAgICA6IHB1YmxpYyBhYnNsOjpj
b250YWluZXJfaW50ZXJuYWw6OnJhd19oYXNoX3NldDwKKyAgICAgICAgICBhYnNsOjpjb250YWlu
ZXJfaW50ZXJuYWw6OkZsYXRIYXNoU2V0UG9saWN5PFQ+LCBIYXNoLCBFcSwgQWxsb2NhdG9yPiB7
CisgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBmbGF0X2hhc2hfc2V0OjpyYXdfaGFzaF9zZXQ7CisK
KyBwdWJsaWM6CisgIGZsYXRfaGFzaF9zZXQoKSB7fQorICB1c2luZyBCYXNlOjpCYXNlOworCisg
IC8vIGZsYXRfaGFzaF9zZXQ6OmJlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRv
ciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6
OmJlZ2luOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmNiZWdpbigpCisgIC8vCisgIC8vIFJldHVy
bnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgZmxhdF9oYXNoX3Nl
dGAuCisgIHVzaW5nIEJhc2U6OmNiZWdpbjsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpjZW5kKCkK
KyAgLy8KKyAgLy8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBm
bGF0X2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Y2VuZDsKKworICAvLyBmbGF0X2hhc2hfc2V0
OjplbmQoKQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhl
IGBmbGF0X2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6ZW5kOworCisgIC8vIGZsYXRfaGFzaF9z
ZXQ6OmNhcGFjaXR5KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnQg
c2xvdHMgKGFzc2lnbmVkLCBkZWxldGVkLCBhbmQgZW1wdHkpCisgIC8vIGF2YWlsYWJsZSB3aXRo
aW4gdGhlIGBmbGF0X2hhc2hfc2V0YC4KKyAgLy8KKyAgLy8gTk9URTogdGhpcyBtZW1iZXIgZnVu
Y3Rpb24gaXMgcGFydGljdWxhciB0byBgYWJzbDo6ZmxhdF9oYXNoX3NldGAgYW5kIGlzCisgIC8v
IG5vdCBwcm92aWRlZCBpbiB0aGUgYHN0ZDo6dW5vcmRlcmVkX21hcGAgQVBJLgorICB1c2luZyBC
YXNlOjpjYXBhY2l0eTsKKworICAvLyBmbGF0X2hhc2hfc2V0OjplbXB0eSgpCisgIC8vCisgIC8v
IFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGBmbGF0X2hhc2hfc2V0YCBpcyBlbXB0eS4KKyAg
dXNpbmcgQmFzZTo6ZW1wdHk7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6bWF4X3NpemUoKQorICAv
LworICAvLyBSZXR1cm5zIHRoZSBsYXJnZXN0IHRoZW9yZXRpY2FsIHBvc3NpYmxlIG51bWJlciBv
ZiBlbGVtZW50cyB3aXRoaW4gYQorICAvLyBgZmxhdF9oYXNoX3NldGAgdW5kZXIgY3VycmVudCBt
ZW1vcnkgY29uc3RyYWludHMuIFRoaXMgdmFsdWUgY2FuIGJlIHRob3VnaHQKKyAgLy8gb2YgdGhl
IGxhcmdlc3QgdmFsdWUgb2YgYHN0ZDo6ZGlzdGFuY2UoYmVnaW4oKSwgZW5kKCkpYCBmb3IgYQor
ICAvLyBgZmxhdF9oYXNoX3NldDxUPmAuCisgIHVzaW5nIEJhc2U6Om1heF9zaXplOworCisgIC8v
IGZsYXRfaGFzaF9zZXQ6OnNpemUoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg
ZWxlbWVudHMgY3VycmVudGx5IHdpdGhpbiB0aGUgYGZsYXRfaGFzaF9zZXRgLgorICB1c2luZyBC
YXNlOjpzaXplOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmNsZWFyKCkKKyAgLy8KKyAgLy8gUmVt
b3ZlcyBhbGwgZWxlbWVudHMgZnJvbSB0aGUgYGZsYXRfaGFzaF9zZXRgLiBJbnZhbGlkYXRlcyBh
bnkgcmVmZXJlbmNlcywKKyAgLy8gcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyByZWZlcnJpbmcgdG8g
Y29udGFpbmVkIGVsZW1lbnRzLgorICAvLworICAvLyBOT1RFOiB0aGlzIG9wZXJhdGlvbiBtYXkg
c2hyaW5rIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlci4gVG8gYXZvaWQgc2hyaW5raW5nCisgIC8vIHRo
ZSB1bmRlcmx5aW5nIGJ1ZmZlciBjYWxsIGBlcmFzZShiZWdpbigpLCBlbmQoKSlgLgorICB1c2lu
ZyBCYXNlOjpjbGVhcjsKKworICAvLyBmbGF0X2hhc2hfc2V0OjplcmFzZSgpCisgIC8vCisgIC8v
IEVyYXNlcyBlbGVtZW50cyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfc2V0YC4gRXJhc2luZyBkb2Vz
IG5vdCB0cmlnZ2VyIGEKKyAgLy8gcmVoYXNoLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4K
KyAgLy8KKyAgLy8gdm9pZCBlcmFzZShjb25zdF9pdGVyYXRvciBwb3MpOgorICAvLworICAvLyAg
IEVyYXNlcyB0aGUgZWxlbWVudCBhdCBgcG9zaXRpb25gIG9mIHRoZSBgZmxhdF9oYXNoX3NldGAs
IHJldHVybmluZworICAvLyAgIGB2b2lkYC4KKyAgLy8KKyAgLy8gICBOT1RFOiB0aGlzIHJldHVy
biBiZWhhdmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIFNUTCBjb250YWluZXJzIGluCisg
IC8vICAgZ2VuZXJhbCBhbmQgYHN0ZDo6dW5vcmRlcmVkX21hcGAgaW4gcGFydGljdWxhci4KKyAg
Ly8KKyAgLy8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJh
dG9yIGxhc3QpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudHMgaW4gdGhlIG9wZW4g
aW50ZXJ2YWwgW2BmaXJzdGAsIGBsYXN0YCksIHJldHVybmluZyBhbgorICAvLyAgIGl0ZXJhdG9y
IHBvaW50aW5nIHRvIGBsYXN0YC4KKyAgLy8KKyAgLy8gc2l6ZV90eXBlIGVyYXNlKGNvbnN0IGtl
eV90eXBlJiBrZXkpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCB3aXRoIHRoZSBt
YXRjaGluZyBrZXksIGlmIGl0IGV4aXN0cy4KKyAgdXNpbmcgQmFzZTo6ZXJhc2U7CisKKyAgLy8g
ZmxhdF9oYXNoX3NldDo6aW5zZXJ0KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9m
IHRoZSBzcGVjaWZpZWQgdmFsdWUgaW50byB0aGUgYGZsYXRfaGFzaF9zZXRgLAorICAvLyByZXR1
cm5pbmcgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQs
IHByb3ZpZGVkIHRoYXQKKyAgLy8gYW4gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkgZG9lcyBu
b3QgYWxyZWFkeSBleGlzdC4gSWYgcmVoYXNoaW5nIG9jY3VycworICAvLyBkdWUgdG8gdGhlIGlu
c2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuIE92ZXJsb2FkcyBhcmUgbGlz
dGVkCisgIC8vIGJlbG93LgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5z
ZXJ0KGNvbnN0IFQmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUgaW50byB0
aGUgYGZsYXRfaGFzaF9zZXRgLiBSZXR1cm5zIGEgcGFpciBjb25zaXN0aW5nIG9mIGFuCisgIC8v
ICAgaXRlcmF0b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9yIHRvIHRoZSBlbGVtZW50IHRo
YXQgcHJldmVudGVkIHRoZQorICAvLyAgIGluc2VydGlvbikgYW5kIGEgYm9vbCBkZW5vdGluZyB3
aGV0aGVyIHRoZSBpbnNlcnRpb24gdG9vayBwbGFjZS4KKyAgLy8KKyAgLy8gc3RkOjpwYWlyPGl0
ZXJhdG9yLGJvb2w+IGluc2VydChUJiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSBt
b3ZlYWJsZSB2YWx1ZSBpbnRvIHRoZSBgZmxhdF9oYXNoX3NldGAuIFJldHVybnMgYSBwYWlyCisg
IC8vICAgY29uc2lzdGluZyBvZiBhbiBpdGVyYXRvciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAo
b3IgdG8gdGhlIGVsZW1lbnQgdGhhdAorICAvLyAgIHByZXZlbnRlZCB0aGUgaW5zZXJ0aW9uKSBh
bmQgYSBib29sIGRlbm90aW5nIHdoZXRoZXIgdGhlIGluc2VydGlvbiB0b29rCisgIC8vICAgcGxh
Y2UuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBjb25z
dCBUJiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBU
JiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSwgdXNpbmcgdGhlIHBvc2l0
aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hl
cmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2guIFJldHVybnMgYW4gaXRlcmF0b3IgdG8g
dGhlCisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudCwgb3IgdG8gdGhlIGV4aXN0aW5nIGVsZW1lbnQg
dGhhdCBwcmV2ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uLgorICAvLworICAvLyB2b2lkIGlu
c2VydChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpOgorICAvLworICAv
LyAgIEluc2VydHMgYSByYW5nZSBvZiB2YWx1ZXMgW2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisg
IC8vICAgTk9URTogQWx0aG91Z2ggdGhlIFNUTCBkb2VzIG5vdCBzcGVjaWZ5IHdoaWNoIGVsZW1l
bnQgbWF5IGJlIGluc2VydGVkIGlmCisgIC8vICAgbXVsdGlwbGUga2V5cyBjb21wYXJlIGVxdWl2
YWxlbnRseSwgZm9yIGBmbGF0X2hhc2hfc2V0YCB3ZSBndWFyYW50ZWUgdGhlCisgIC8vICAgZmly
c3QgbWF0Y2ggaXMgaW5zZXJ0ZWQuCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxUPiBpbGlzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyB0aGUgZWxlbWVudHMg
d2l0aGluIHRoZSBpbml0aWFsaXplciBsaXN0IGBpbGlzdGAuCisgIC8vCisgIC8vICAgTk9URTog
QWx0aG91Z2ggdGhlIFNUTCBkb2VzIG5vdCBzcGVjaWZ5IHdoaWNoIGVsZW1lbnQgbWF5IGJlIGlu
c2VydGVkIGlmCisgIC8vICAgbXVsdGlwbGUga2V5cyBjb21wYXJlIGVxdWl2YWxlbnRseSB3aXRo
aW4gdGhlIGluaXRpYWxpemVyIGxpc3QsIGZvcgorICAvLyAgIGBmbGF0X2hhc2hfc2V0YCB3ZSBn
dWFyYW50ZWUgdGhlIGZpcnN0IG1hdGNoIGlzIGluc2VydGVkLgorICB1c2luZyBCYXNlOjppbnNl
cnQ7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6ZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMg
YW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1w
bGFjZQorICAvLyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfc2V0YCwgcHJvdmlkZWQgdGhhdCBubyBl
bGVtZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAg
Ly8gVGhlIGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBp
cyBhbiBlbGVtZW50IHdpdGggdGhlCisgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGlj
aCBjYXNlIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJv
eWVkIGltbWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9lbXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBp
cyBub3QKKyAgLy8gY29weWFibGUgb3IgbW92ZWFibGUuCisgIC8vCisgIC8vIElmIHJlaGFzaGlu
ZyBvY2N1cnMgZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRh
dGVkLgorICB1c2luZyBCYXNlOjplbXBsYWNlOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmVtcGxh
Y2VfaGludCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVk
IHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBmbGF0
X2hhc2hfc2V0YCwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5n
CisgIC8vIHN1Z2dlc3Rpb24gZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNo
LCBhbmQgb25seSBpbnNlcnRzCisgIC8vIHByb3ZpZGVkIHRoYXQgbm8gZWxlbWVudCB3aXRoIHRo
ZSBnaXZlbiBrZXkgYWxyZWFkeSBleGlzdHMuCisgIC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBi
ZSBjb25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRo
ZQorICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29u
c3RydWN0ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJl
ZmVyIGB0cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90CisgIC8vIGNvcHlhYmxl
IG9yIG1vdmVhYmxlLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUg
aW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6
ZW1wbGFjZV9oaW50OworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmV4dHJhY3QoKQorICAvLworICAv
LyBFeHRyYWN0cyB0aGUgaW5kaWNhdGVkIGVsZW1lbnQsIGVyYXNpbmcgaXQgaW4gdGhlIHByb2Nl
c3MsIGFuZCByZXR1cm5zIGl0CisgIC8vIGFzIGEgQysrMTctY29tcGF0aWJsZSBub2RlIGhhbmRs
ZS4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIG5vZGVfdHlwZSBleHRy
YWN0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0aGUg
ZWxlbWVudCBhdCB0aGUgaW5kaWNhdGVkIHBvc2l0aW9uIGFuZCByZXR1cm5zIGEgbm9kZSBoYW5k
bGUKKyAgLy8gICBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4KKyAgLy8KKyAgLy8gbm9kZV90
eXBlIGV4dHJhY3QoY29uc3Qga2V5X3R5cGUmIHgpOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRo
ZSBlbGVtZW50IHdpdGggdGhlIGtleSBtYXRjaGluZyB0aGUgcGFzc2VkIGtleSB2YWx1ZSBhbmQK
KyAgLy8gICByZXR1cm5zIGEgbm9kZSBoYW5kbGUgb3duaW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEu
IElmIHRoZSBgZmxhdF9oYXNoX3NldGAKKyAgLy8gICBkb2VzIG5vdCBjb250YWluIGFuIGVsZW1l
bnQgd2l0aCBhIG1hdGNoaW5nIGtleSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuCisgIC8vICAg
ZW1wdHkgbm9kZSBoYW5kbGUuCisgIHVzaW5nIEJhc2U6OmV4dHJhY3Q7CisKKyAgLy8gZmxhdF9o
YXNoX3NldDo6bWVyZ2UoKQorICAvLworICAvLyBFeHRyYWN0cyBlbGVtZW50cyBmcm9tIGEgZ2l2
ZW4gYHNvdXJjZWAgZmxhdCBoYXNoIG1hcCBpbnRvIHRoaXMKKyAgLy8gYGZsYXRfaGFzaF9zZXRg
LiBJZiB0aGUgZGVzdGluYXRpb24gYGZsYXRfaGFzaF9zZXRgIGFscmVhZHkgY29udGFpbnMgYW4K
KyAgLy8gZWxlbWVudCB3aXRoIGFuIGVxdWl2YWxlbnQga2V5LCB0aGF0IGVsZW1lbnQgaXMgbm90
IGV4dHJhY3RlZC4KKyAgdXNpbmcgQmFzZTo6bWVyZ2U7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6
c3dhcChmbGF0X2hhc2hfc2V0JiBvdGhlcikKKyAgLy8KKyAgLy8gRXhjaGFuZ2VzIHRoZSBjb250
ZW50cyBvZiB0aGlzIGBmbGF0X2hhc2hfc2V0YCB3aXRoIHRob3NlIG9mIHRoZSBgb3RoZXJgCisg
IC8vIGZsYXQgaGFzaCBtYXAsIGF2b2lkaW5nIGludm9jYXRpb24gb2YgYW55IG1vdmUsIGNvcHks
IG9yIHN3YXAgb3BlcmF0aW9ucyBvbgorICAvLyBpbmRpdmlkdWFsIGVsZW1lbnRzLgorICAvLwor
ICAvLyBBbGwgaXRlcmF0b3JzIGFuZCByZWZlcmVuY2VzIG9uIHRoZSBgZmxhdF9oYXNoX3NldGAg
cmVtYWluIHZhbGlkLCBleGNlcHRpbmcKKyAgLy8gZm9yIHRoZSBwYXN0LXRoZS1lbmQgaXRlcmF0
b3IsIHdoaWNoIGlzIGludmFsaWRhdGVkLgorICAvLworICAvLyBgc3dhcCgpYCByZXF1aXJlcyB0
aGF0IHRoZSBmbGF0IGhhc2ggc2V0J3MgaGFzaGluZyBhbmQga2V5IGVxdWl2YWxlbmNlCisgIC8v
IGZ1bmN0aW9ucyBiZSBTd2FwcGFibGUsIGFuZCBhcmUgZXhjaGFnZWQgdXNpbmcgdW5xdWFsaWZp
ZWQgY2FsbHMgdG8KKyAgLy8gbm9uLW1lbWJlciBgc3dhcCgpYC4gSWYgdGhlIG1hcCdzIGFsbG9j
YXRvciBoYXMKKyAgLy8gYHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT46OnBy
b3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWVgCisgIC8vIHNldCB0byBgdHJ1ZWAsIHRo
ZSBhbGxvY2F0b3JzIGFyZSBhbHNvIGV4Y2hhbmdlZCB1c2luZyBhbiB1bnF1YWxpZmllZCBjYWxs
CisgIC8vIHRvIG5vbi1tZW1iZXIgYHN3YXAoKWA7IG90aGVyd2lzZSwgdGhlIGFsbG9jYXRvcnMg
YXJlIG5vdCBzd2FwcGVkLgorICB1c2luZyBCYXNlOjpzd2FwOworCisgIC8vIGZsYXRfaGFzaF9z
ZXQ6OnJlaGFzaChjb3VudCkKKyAgLy8KKyAgLy8gUmVoYXNoZXMgdGhlIGBmbGF0X2hhc2hfc2V0
YCwgc2V0dGluZyB0aGUgbnVtYmVyIG9mIHNsb3RzIHRvIGJlIGF0IGxlYXN0CisgIC8vIHRoZSBw
YXNzZWQgdmFsdWUuIElmIHRoZSBuZXcgbnVtYmVyIG9mIHNsb3RzIGluY3JlYXNlcyB0aGUgbG9h
ZCBmYWN0b3IgbW9yZQorICAvLyB0aGFuIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBmYWN0b3IK
KyAgLy8gKGBjb3VudGAgPCBgc2l6ZSgpYCAvIGBtYXhfbG9hZF9mYWN0b3IoKWApLCB0aGVuIHRo
ZSBuZXcgbnVtYmVyIG9mIHNsb3RzCisgIC8vIHdpbGwgYmUgYXQgbGVhc3QgYHNpemUoKWAgLyBg
bWF4X2xvYWRfZmFjdG9yKClgLgorICAvLworICAvLyBUbyBmb3JjZSBhIHJlaGFzaCwgcGFzcyBy
ZWhhc2goMCkuCisgIC8vCisgIC8vIE5PVEU6IHVubGlrZSBiZWhhdmlvciBpbiBgc3RkOjp1bm9y
ZGVyZWRfc2V0YCwgcmVmZXJlbmNlcyBhcmUgYWxzbworICAvLyBpbnZhbGlkYXRlZCB1cG9uIGEg
YHJlaGFzaCgpYC4KKyAgdXNpbmcgQmFzZTo6cmVoYXNoOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6
OnJlc2VydmUoY291bnQpCisgIC8vCisgIC8vIFNldHMgdGhlIG51bWJlciBvZiBzbG90cyBpbiB0
aGUgYGZsYXRfaGFzaF9zZXRgIHRvIHRoZSBudW1iZXIgbmVlZGVkIHRvCisgIC8vIGFjY29tbW9k
YXRlIGF0IGxlYXN0IGBjb3VudGAgdG90YWwgZWxlbWVudHMgd2l0aG91dCBleGNlZWRpbmcgdGhl
IGN1cnJlbnQKKyAgLy8gbWF4aW11bSBsb2FkIGZhY3RvciwgYW5kIG1heSByZWhhc2ggdGhlIGNv
bnRhaW5lciBpZiBuZWVkZWQuCisgIHVzaW5nIEJhc2U6OnJlc2VydmU7CisKKyAgLy8gZmxhdF9o
YXNoX3NldDo6Y29udGFpbnMoKQorICAvLworICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxl
bWVudCBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgIGV4aXN0cworICAvLyB3aXRo
aW4gdGhlIGBmbGF0X2hhc2hfc2V0YCwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzbyBvciBgZmFsc2Vg
IG90aGVyd2lzZS4KKyAgdXNpbmcgQmFzZTo6Y29udGFpbnM7CisKKyAgLy8gZmxhdF9oYXNoX3Nl
dDo6Y291bnQoY29uc3QgS2V5JiBrZXkpIGNvbnN0CisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51
bWJlciBvZiBlbGVtZW50cyBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgIHdpdGhp
bgorICAvLyB0aGUgYGZsYXRfaGFzaF9zZXRgLiBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxs
IHJldHVybiBlaXRoZXIgYDFgIG9yIGAwYAorICAvLyBzaW5jZSBkdXBsaWNhdGUgZWxlbWVudHMg
YXJlIG5vdCBhbGxvd2VkIHdpdGhpbiBhIGBmbGF0X2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6
Y291bnQ7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6ZXF1YWxfcmFuZ2UoKQorICAvLworICAvLyBS
ZXR1cm5zIGEgY2xvc2VkIHJhbmdlIFtmaXJzdCwgbGFzdF0sIGRlZmluZWQgYnkgYSBgc3RkOjpw
YWlyYCBvZiB0d28KKyAgLy8gaXRlcmF0b3JzLCBjb250YWluaW5nIGFsbCBlbGVtZW50cyB3aXRo
IHRoZSBwYXNzZWQga2V5IGluIHRoZQorICAvLyBgZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJh
c2U6OmVxdWFsX3JhbmdlOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmZpbmQoKQorICAvLworICAv
LyBGaW5kcyBhbiBlbGVtZW50IHdpdGggdGhlIHBhc3NlZCBga2V5YCB3aXRoaW4gdGhlIGBmbGF0
X2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6ZmluZDsKKworICAvLyBmbGF0X2hhc2hfc2V0Ojpi
dWNrZXRfY291bnQoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgImJ1Y2tldHMi
IHdpdGhpbiB0aGUgYGZsYXRfaGFzaF9zZXRgLiBOb3RlIHRoYXQKKyAgLy8gYmVjYXVzZSBhIGZs
YXQgaGFzaCBtYXAgY29udGFpbnMgYWxsIGVsZW1lbnRzIHdpdGhpbiBpdHMgaW50ZXJuYWwgc3Rv
cmFnZSwKKyAgLy8gdGhpcyB2YWx1ZSBzaW1wbHkgZXF1YWxzIHRoZSBjdXJyZW50IGNhcGFjaXR5
IG9mIHRoZSBgZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmJ1Y2tldF9jb3VudDsKKwor
ICAvLyBmbGF0X2hhc2hfc2V0Ojpsb2FkX2ZhY3RvcigpCisgIC8vCisgIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgbG9hZCBmYWN0b3Igb2YgdGhlIGBmbGF0X2hhc2hfc2V0YCAodGhlIGF2ZXJhZ2Ug
bnVtYmVyCisgIC8vIG9mIHNsb3RzIG9jY3VwaWVkIHdpdGggYSB2YWx1ZSB3aXRoaW4gdGhlIGhh
c2ggbWFwKS4KKyAgdXNpbmcgQmFzZTo6bG9hZF9mYWN0b3I7CisKKyAgLy8gZmxhdF9oYXNoX3Nl
dDo6bWF4X2xvYWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8gTWFuYWdlcyB0aGUgbWF4aW11bSBsb2Fk
IGZhY3RvciBvZiB0aGUgYGZsYXRfaGFzaF9zZXRgLiBPdmVybG9hZHMgYXJlCisgIC8vIGxpc3Rl
ZCBiZWxvdy4KKyAgLy8KKyAgLy8gZmxvYXQgZmxhdF9oYXNoX3NldDo6bWF4X2xvYWRfZmFjdG9y
KCkKKyAgLy8KKyAgLy8gICBSZXR1cm5zIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBmYWN0b3Ig
b2YgdGhlIGBmbGF0X2hhc2hfc2V0YC4KKyAgLy8KKyAgLy8gdm9pZCBmbGF0X2hhc2hfc2V0Ojpt
YXhfbG9hZF9mYWN0b3IoZmxvYXQgbWwpCisgIC8vCisgIC8vICAgU2V0cyB0aGUgbWF4aW11bSBs
b2FkIGZhY3RvciBvZiB0aGUgYGZsYXRfaGFzaF9zZXRgIHRvIHRoZSBwYXNzZWQgdmFsdWUuCisg
IC8vCisgIC8vICAgTk9URTogVGhpcyBvdmVybG9hZCBpcyBwcm92aWRlZCBvbmx5IGZvciBBUEkg
Y29tcGF0aWJpbGl0eSB3aXRoIHRoZSBTVEw7CisgIC8vICAgYGZsYXRfaGFzaF9zZXRgIHdpbGwg
aWdub3JlIGFueSBzZXQgbG9hZCBmYWN0b3IgYW5kIG1hbmFnZSBpdHMgcmVoYXNoaW5nCisgIC8v
ICAgaW50ZXJuYWxseSBhcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgIHVzaW5nIEJhc2U6
Om1heF9sb2FkX2ZhY3RvcjsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpnZXRfYWxsb2NhdG9yKCkK
KyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0
aCB0aGlzIGBmbGF0X2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Z2V0X2FsbG9jYXRvcjsKKwor
ICAvLyBmbGF0X2hhc2hfc2V0OjpoYXNoX2Z1bmN0aW9uKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0
aGUgaGFzaGluZyBmdW5jdGlvbiB1c2VkIHRvIGhhc2ggdGhlIGtleXMgd2l0aGluIHRoaXMKKyAg
Ly8gYGZsYXRfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjpoYXNoX2Z1bmN0aW9uOworCisgIC8v
IGZsYXRfaGFzaF9zZXQ6OmtleV9lcSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGZ1bmN0aW9u
IHVzZWQgZm9yIGNvbXBhcmluZyBrZXlzIGVxdWFsaXR5LgorICB1c2luZyBCYXNlOjprZXlfZXE7
Cit9OworCituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNz
IFQ+CitzdHJ1Y3QgRmxhdEhhc2hTZXRQb2xpY3kgeworICB1c2luZyBzbG90X3R5cGUgPSBUOwor
ICB1c2luZyBrZXlfdHlwZSA9IFQ7CisgIHVzaW5nIGluaXRfdHlwZSA9IFQ7CisgIHVzaW5nIGNv
bnN0YW50X2l0ZXJhdG9ycyA9IHN0ZDo6dHJ1ZV90eXBlOworCisgIHRlbXBsYXRlIDxjbGFzcyBB
bGxvY2F0b3IsIGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvY2F0
b3IqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgYWJzbDo6
YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoKmFsbG9jLCBzbG90LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgor
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEFsbG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCkg
eworICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6ZGVzdHJveSgqYWxsb2Ms
IHNsb3QpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZv
aWQgdHJhbnNmZXIoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgc2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAgIGNvbnN0cnVjdChh
bGxvYywgbmV3X3Nsb3QsIHN0ZDo6bW92ZSgqb2xkX3Nsb3QpKTsKKyAgICBkZXN0cm95KGFsbG9j
LCBvbGRfc2xvdCk7CisgIH0KKworICBzdGF0aWMgVCYgZWxlbWVudChzbG90X3R5cGUqIHNsb3Qp
IHsgcmV0dXJuICpzbG90OyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzLi4uIEFyZ3M+
CisgIHN0YXRpYyBkZWNsdHlwZShhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkRlY29tcG9zZVZh
bHVlKAorICAgICAgc3RkOjpkZWNsdmFsPEY+KCksIHN0ZDo6ZGVjbHZhbDxBcmdzPigpLi4uKSkK
KyAgYXBwbHkoRiYmIGYsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgcmV0dXJuIGFic2w6OmNvbnRh
aW5lcl9pbnRlcm5hbDo6RGVjb21wb3NlVmFsdWUoCisgICAgICAgIHN0ZDo6Zm9yd2FyZDxGPihm
KSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIHN0YXRpYyBzaXplX3Qg
c3BhY2VfdXNlZChjb25zdCBUKikgeyByZXR1cm4gMDsgfQorfTsKK30gIC8vIG5hbWVzcGFjZSBj
b250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisjZW5kaWYgIC8vIEFCU0xf
Q09OVEFJTkVSX0ZMQVRfSEFTSF9TRVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9m
bGF0X2hhc2hfc2V0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldF90ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU1MmZkNTMyY2JlZWM3NTE1OGJlNjIwNWU1NjExODFjYjE3NGQ0YmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldF90ZXN0LmNj
CkBAIC0wLDAgKzEsMTI2IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldC5oIgorCisjaW5jbHVk
ZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5l
cmF0b3JfdGVzdGluZy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3Jk
ZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lu
dGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmgiCisjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3
LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewor
bmFtZXNwYWNlIHsKKwordXNpbmcgOjphYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfaW50
ZXJuYWw6OkVudW07Cit1c2luZyA6OmFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9pbnRl
cm5hbDo6RW51bUNsYXNzOwordXNpbmcgOjp0ZXN0aW5nOjpQb2ludGVlOwordXNpbmcgOjp0ZXN0
aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZTsKK3VzaW5nIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxl
bWVudHNBcmVBcnJheTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+Cit1c2luZyBTZXQgPQorICAgIGFi
c2w6OmZsYXRfaGFzaF9zZXQ8VCwgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5n
RXF1YWwsIEFsbG9jPFQ+PjsKKwordXNpbmcgU2V0VHlwZXMgPQorICAgIDo6dGVzdGluZzo6VHlw
ZXM8U2V0PGludD4sIFNldDxzdGQ6OnN0cmluZz4sIFNldDxFbnVtPiwgU2V0PEVudW1DbGFzcz4+
OworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChGbGF0SGFzaFNldCwgQ29uc3RydWN0
b3JUZXN0LCBTZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChGbGF0SGFz
aFNldCwgTG9va3VwVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1AoRmxhdEhhc2hTZXQsIE1vZGlmaWVyc1Rlc3QsIFNldFR5cGVzKTsKKworVEVTVChGbGF0SGFz
aFNldCwgRW1wbGFjZVN0cmluZykgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IHsi
YSIsICJiIn07CisgIGFic2w6OmZsYXRfaGFzaF9zZXQ8YWJzbDo6c3RyaW5nX3ZpZXc+IGhzKHYu
YmVnaW4oKSwgdi5lbmQoKSk7CisgIEVYUEVDVF9USEFUKGhzLCBVbm9yZGVyZWRFbGVtZW50c0Fy
ZUFycmF5KHYpKTsKK30KKworVEVTVChGbGF0SGFzaFNldCwgQml0ZmllbGRBcmd1bWVudCkgewor
ICB1bmlvbiB7CisgICAgaW50IG4gOiAxOworICB9OworICBuID0gMDsKKyAgYWJzbDo6ZmxhdF9o
YXNoX3NldDxpbnQ+IHMgPSB7bn07CisgIHMuaW5zZXJ0KG4pOworICBzLmluc2VydChzLmVuZCgp
LCBuKTsKKyAgcy5pbnNlcnQoe259KTsKKyAgcy5lcmFzZShuKTsKKyAgcy5jb3VudChuKTsKKyAg
cy5wcmVmZXRjaChuKTsKKyAgcy5maW5kKG4pOworICBzLmNvbnRhaW5zKG4pOworICBzLmVxdWFs
X3JhbmdlKG4pOworfQorCitURVNUKEZsYXRIYXNoU2V0LCBNZXJnZUV4dHJhY3RJbnNlcnQpIHsK
KyAgc3RydWN0IEhhc2ggeworICAgIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxpbnQ+JiBwKSBjb25zdCB7IHJldHVybiAqcDsgfQorICB9OworICBzdHJ1Y3QgRXEgewor
ICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8aW50PiYgYSwKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPGludD4mIGIpIGNvbnN0IHsKKyAg
ICAgIHJldHVybiAqYSA9PSAqYjsKKyAgICB9CisgIH07CisgIGFic2w6OmZsYXRfaGFzaF9zZXQ8
c3RkOjp1bmlxdWVfcHRyPGludD4sIEhhc2gsIEVxPiBzZXQxLCBzZXQyOworICBzZXQxLmluc2Vy
dChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDcpKTsKKyAgc2V0MS5pbnNlcnQoYWJzbDo6bWFrZV91
bmlxdWU8aW50PigxNykpOworCisgIHNldDIuaW5zZXJ0KGFic2w6Om1ha2VfdW5pcXVlPGludD4o
NykpOworICBzZXQyLmluc2VydChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDE5KSk7CisKKyAgRVhQ
RUNUX1RIQVQoc2V0MSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSwgUG9pbnRlZSgx
NykpKTsKKyAgRVhQRUNUX1RIQVQoc2V0MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3
KSwgUG9pbnRlZSgxOSkpKTsKKworICBzZXQxLm1lcmdlKHNldDIpOworCisgIEVYUEVDVF9USEFU
KHNldDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoNyksIFBvaW50ZWUoMTcpLCBQb2lu
dGVlKDE5KSkpOworICBFWFBFQ1RfVEhBVChzZXQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQb2lu
dGVlKDcpKSk7CisKKyAgYXV0byBub2RlID0gc2V0MS5leHRyYWN0KGFic2w6Om1ha2VfdW5pcXVl
PGludD4oNykpOworICBFWFBFQ1RfVFJVRShub2RlKTsKKyAgRVhQRUNUX1RIQVQobm9kZS52YWx1
ZSgpLCBQb2ludGVlKDcpKTsKKyAgRVhQRUNUX1RIQVQoc2V0MSwgVW5vcmRlcmVkRWxlbWVudHNB
cmUoUG9pbnRlZSgxNyksIFBvaW50ZWUoMTkpKSk7CisKKyAgYXV0byBpbnNlcnRfcmVzdWx0ID0g
c2V0Mi5pbnNlcnQoc3RkOjptb3ZlKG5vZGUpKTsKKyAgRVhQRUNUX0ZBTFNFKG5vZGUpOworICBF
WFBFQ1RfRkFMU0UoaW5zZXJ0X3Jlc3VsdC5pbnNlcnRlZCk7CisgIEVYUEVDVF9UUlVFKGluc2Vy
dF9yZXN1bHQubm9kZSk7CisgIEVYUEVDVF9USEFUKGluc2VydF9yZXN1bHQubm9kZS52YWx1ZSgp
LCBQb2ludGVlKDcpKTsKKyAgRVhQRUNUX0VRKCoqaW5zZXJ0X3Jlc3VsdC5wb3NpdGlvbiwgNyk7
CisgIEVYUEVDVF9ORShpbnNlcnRfcmVzdWx0LnBvc2l0aW9uLT5nZXQoKSwgaW5zZXJ0X3Jlc3Vs
dC5ub2RlLnZhbHVlKCkuZ2V0KCkpOworICBFWFBFQ1RfVEhBVChzZXQyLCBVbm9yZGVyZWRFbGVt
ZW50c0FyZShQb2ludGVlKDcpKSk7CisKKyAgbm9kZSA9IHNldDEuZXh0cmFjdChhYnNsOjptYWtl
X3VuaXF1ZTxpbnQ+KDE3KSk7CisgIEVYUEVDVF9UUlVFKG5vZGUpOworICBFWFBFQ1RfVEhBVChu
b2RlLnZhbHVlKCksIFBvaW50ZWUoMTcpKTsKKyAgRVhQRUNUX1RIQVQoc2V0MSwgVW5vcmRlcmVk
RWxlbWVudHNBcmUoUG9pbnRlZSgxOSkpKTsKKworICBub2RlLnZhbHVlKCkgPSBhYnNsOjptYWtl
X3VuaXF1ZTxpbnQ+KDIzKTsKKworICBpbnNlcnRfcmVzdWx0ID0gc2V0Mi5pbnNlcnQoc3RkOjpt
b3ZlKG5vZGUpKTsKKyAgRVhQRUNUX0ZBTFNFKG5vZGUpOworICBFWFBFQ1RfVFJVRShpbnNlcnRf
cmVzdWx0Lmluc2VydGVkKTsKKyAgRVhQRUNUX0ZBTFNFKGluc2VydF9yZXN1bHQubm9kZSk7Cisg
IEVYUEVDVF9FUSgqKmluc2VydF9yZXN1bHQucG9zaXRpb24sIDIzKTsKKyAgRVhQRUNUX1RIQVQo
c2V0MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSwgUG9pbnRlZSgyMykpKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9
ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRf
dmVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaAppbmRleCBjYTM2ZmQz
Njk5YjkwNWMyZWRlOWJiMTA3MjViNGQ5YjY2OTg2ODc3Li4xMjc1NmJiODIwY2Y2YWU5NTZjYTQ2
NGE4YWM3Y2Q3MzJjYmM5ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92
ZWN0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaApAQCAtNjIwLDYg
KzYyMCwxMiBAQCBjbGFzcyBJbmxpbmVkVmVjdG9yIHsKICAgLy8gUmV0dXJucyB0aGUgYWxsb2Nh
dG9yIG9mIHRoaXMgaW5saW5lZCB2ZWN0b3IuCiAgIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0
b3IoKSBjb25zdCB7IHJldHVybiBhbGxvY2F0b3IoKTsgfQogCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgY29uc3QgSW5saW5lZFZlY3RvciYg
dikgeworICAgIHJldHVybiBIOjpjb21iaW5lKEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6Om1v
dmUoaCksIHYuZGF0YSgpLCB2LnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgdi5zaXpl
KCkpOworICB9CisKICBwcml2YXRlOgogICBzdGF0aWNfYXNzZXJ0KE4gPiAwLCAiaW5saW5lZCB2
ZWN0b3Igd2l0aCBub25wb3NpdGl2ZSBzaXplIik7CiAKQEAgLTY0OCw4ICs2NTQsNyBAQCBjbGFz
cyBJbmxpbmVkVmVjdG9yIHsKICAgLy8gb3VyIGluc3RhbmNlIG9mIGl0IGZvciBmcmVlLgogICBj
bGFzcyBBbGxvY2F0b3JBbmRUYWcgOiBwcml2YXRlIGFsbG9jYXRvcl90eXBlIHsKICAgIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBBbGxvY2F0b3JBbmRUYWcoY29uc3QgYWxsb2NhdG9yX3R5cGUmIGEs
IFRhZyB0ID0gVGFnKCkpCi0gICAgICAgIDogYWxsb2NhdG9yX3R5cGUoYSksIHRhZ18odCkge30K
KyAgICBleHBsaWNpdCBBbGxvY2F0b3JBbmRUYWcoY29uc3QgYWxsb2NhdG9yX3R5cGUmIGEpIDog
YWxsb2NhdG9yX3R5cGUoYSkge30KICAgICBUYWcmIHRhZygpIHsgcmV0dXJuIHRhZ187IH0KICAg
ICBjb25zdCBUYWcmIHRhZygpIGNvbnN0IHsgcmV0dXJuIHRhZ187IH0KICAgICBhbGxvY2F0b3Jf
dHlwZSYgYWxsb2NhdG9yKCkgeyByZXR1cm4gKnRoaXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5s
aW5lZF92ZWN0b3JfYmVuY2htYXJrLmNjCmluZGV4IDI0ZjIxNzQ5MjhhMzhiMDFmZWY5OWFlMjdj
Yjg5ZTQxOTgyNjVhYjMuLmEzYWQwZjhhZTRmMWExNjNjN2YyMzI5MzJlNDZhMzhlZTRlYTY3MGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl9iZW5jaG1hcmsuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yX2JlbmNobWFyay5jYwpAQCAtNjYs
NyArNjYsNyBAQCBCRU5DSE1BUksoQk1fU3RkVmVjdG9yRmlsbCktPlJhbmdlKDAsIDEwMjQpOwog
Ly8gVGhlIHB1cnBvc2Ugb2YgdGhlIG5leHQgdHdvIGJlbmNobWFya3MgaXMgdG8gdmVyaWZ5IHRo
YXQKIC8vIGFic2w6OklubGluZWRWZWN0b3IgaXMgZWZmaWNpZW50IHdoZW4gbW92aW5nIGlzIG1v
cmUgZWZmaWNlbnQgdGhhbgogLy8gY29weWluZy4gVG8gZG8gc28sIHdlIHVzZSBzdHJpbmdzIHRo
YXQgYXJlIGxhcmdlciB0aGFuIHRoZSBzaG9ydAotLy8gc3RkOjpzdHJpbmcgb3B0aW1pemF0aW9u
LgorLy8gc3RyaW5nIG9wdGltaXphdGlvbi4KIGJvb2wgU3RyaW5nUmVwcmVzZW50ZWRJbmxpbmUo
c3RkOjpzdHJpbmcgcykgewogICBjb25zdCBjaGFyKiBjaGFycyA9IHMuZGF0YSgpOwogICBzdGQ6
OnN0cmluZyBzMSA9IHN0ZDo6bW92ZShzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bmxpbmVkX3ZlY3Rvcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yX3Rl
c3QuY2MKaW5kZXggMTk2YTFiZWQ5NzZjNGJiZDA2MGEwYzgxYTMwODE5YWNlZDQ2NjliMi4uMDhk
Y2QzZWY2NmZiNmEzMzAyZjg2MmM1MmFkOTFmNTM2MjYwZDQwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2lubGluZWRfdmVjdG9yX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
bGluZWRfdmVjdG9yX3Rlc3QuY2MKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJhYnNsL2Jh
c2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgi
CiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2Vy
LmgiCisjaW5jbHVkZSAiYWJzbC9oYXNoL2hhc2hfdGVzdGluZy5oIgogI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCiAKQEAg
LTE3ODgsNCArMTc4OSw1IEBAIFRFU1QoQWxsb2NhdG9yU3VwcG9ydFRlc3QsIFNpemVBbGxvY0Nv
bnN0cnVjdG9yKSB7CiAgICAgRVhQRUNUX1RIQVQodiwgQWxsT2YoU2l6ZUlzKGxlbiksIEVhY2go
MCkpKTsKICAgfQogfQorCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmM1ZDJkZjY3MzE0
ZTgyOWZjOWY1OTFiMzZlNjVhYjlkZjNlMGNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaApAQCAtMCwwICsxLDQwNSBAQAorLy8g
Q29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRB
SU5FUl9JTlRFUk5BTF9DT05UQUlORVJfTUVNT1JZX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVS
X0lOVEVSTkFMX0NPTlRBSU5FUl9NRU1PUllfSF8KKworI2lmZGVmIEFERFJFU1NfU0FOSVRJWkVS
CisjaW5jbHVkZSA8c2FuaXRpemVyL2FzYW5faW50ZXJmYWNlLmg+CisjZW5kaWYKKworI2lmZGVm
IE1FTU9SWV9TQU5JVElaRVIKKyNpbmNsdWRlIDxzYW5pdGl6ZXIvbXNhbl9pbnRlcmZhY2UuaD4K
KyNlbmRpZgorCisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNp
bmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5j
bHVkZSAiYWJzbC91dGlsaXR5L3V0aWxpdHkuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNw
YWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKKy8vIEFsbG9jYXRlcyBhdCBsZWFzdCBuIGJ5dGVz
IGFsaWduZWQgdG8gdGhlIHNwZWNpZmllZCBhbGlnbm1lbnQuCisvLyBBbGlnbm1lbnQgbXVzdCBi
ZSBhIHBvd2VyIG9mIDIuIEl0IG11c3QgYmUgcG9zaXRpdmUuCisvLworLy8gTm90ZSB0aGF0IG1h
bnkgYWxsb2NhdG9ycyBkb24ndCBob25vciBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIGFib3ZlIGNl
cnRhaW4KKy8vIHRocmVzaG9sZCAodXN1YWxseSBlaXRoZXIgYWxpZ25vZihzdGQ6Om1heF9hbGln
bl90KSBvciBhbGlnbm9mKHZvaWQqKSkuCisvLyBBbGxvY2F0ZSgpIGRvZXNuJ3QgYXBwbHkgYWxp
Z25tZW50IGNvcnJlY3Rpb25zLiBJZiB0aGUgdW5kZXJseWluZyBhbGxvY2F0b3IKKy8vIHJldHVy
bnMgaW5zdWZmaWNpZW50bHkgYWxpZ25tZW50IHBvaW50ZXIsIHRoYXQncyB3aGF0IHlvdSBhcmUg
Z29pbmcgdG8gZ2V0LgordGVtcGxhdGUgPHNpemVfdCBBbGlnbm1lbnQsIGNsYXNzIEFsbG9jPgor
dm9pZCogQWxsb2NhdGUoQWxsb2MqIGFsbG9jLCBzaXplX3QgbikgeworICBzdGF0aWNfYXNzZXJ0
KEFsaWdubWVudCA+IDAsICIiKTsKKyAgYXNzZXJ0KG4gJiYgIm4gbXVzdCBiZSBwb3NpdGl2ZSIp
OworICBzdHJ1Y3QgYWxpZ25hcyhBbGlnbm1lbnQpIE0ge307CisgIHVzaW5nIEEgPSB0eXBlbmFt
ZSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6dGVtcGxhdGUgcmViaW5kX2FsbG9jPE0+
OworICB1c2luZyBBVCA9IHR5cGVuYW1lIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+Ojp0
ZW1wbGF0ZSByZWJpbmRfdHJhaXRzPE0+OworICBBIG1lbV9hbGxvYygqYWxsb2MpOworICB2b2lk
KiBwID0gQVQ6OmFsbG9jYXRlKG1lbV9hbGxvYywgKG4gKyBzaXplb2YoTSkgLSAxKSAvIHNpemVv
ZihNKSk7CisgIGFzc2VydChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocCkgJSBBbGlnbm1l
bnQgPT0gMCAmJgorICAgICAgICAgImFsbG9jYXRvciBkb2VzIG5vdCByZXNwZWN0IGFsaWdubWVu
dCIpOworICByZXR1cm4gcDsKK30KKworLy8gVGhlIHBvaW50ZXIgbXVzdCBoYXZlIGJlZW4gcHJl
dmlvdXNseSBvYnRhaW5lZCBieSBjYWxsaW5nCisvLyBBbGxvY2F0ZTxBbGlnbm1lbnQ+KGFsbG9j
LCBuKS4KK3RlbXBsYXRlIDxzaXplX3QgQWxpZ25tZW50LCBjbGFzcyBBbGxvYz4KK3ZvaWQgRGVh
bGxvY2F0ZShBbGxvYyogYWxsb2MsIHZvaWQqIHAsIHNpemVfdCBuKSB7CisgIHN0YXRpY19hc3Nl
cnQoQWxpZ25tZW50ID4gMCwgIiIpOworICBhc3NlcnQobiAmJiAibiBtdXN0IGJlIHBvc2l0aXZl
Iik7CisgIHN0cnVjdCBhbGlnbmFzKEFsaWdubWVudCkgTSB7fTsKKyAgdXNpbmcgQSA9IHR5cGVu
YW1lIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+Ojp0ZW1wbGF0ZSByZWJpbmRfYWxsb2M8
TT47CisgIHVzaW5nIEFUID0gdHlwZW5hbWUgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46
OnRlbXBsYXRlIHJlYmluZF90cmFpdHM8TT47CisgIEEgbWVtX2FsbG9jKCphbGxvYyk7CisgIEFU
OjpkZWFsbG9jYXRlKG1lbV9hbGxvYywgc3RhdGljX2Nhc3Q8TSo+KHApLAorICAgICAgICAgICAg
ICAgICAobiArIHNpemVvZihNKSAtIDEpIC8gc2l6ZW9mKE0pKTsKK30KKworbmFtZXNwYWNlIG1l
bW9yeV9pbnRlcm5hbCB7CisKKy8vIENvbnN0cnVjdHMgVCBpbnRvIHVuaW5pdGlhbGl6ZWQgc3Rv
cmFnZSBwb2ludGVkIGJ5IGBwdHJgIHVzaW5nIHRoZSBhcmdzCisvLyBzcGVjaWZpZWQgaW4gdGhl
IHR1cGxlLgordGVtcGxhdGUgPGNsYXNzIEFsbG9jLCBjbGFzcyBULCBjbGFzcyBUdXBsZSwgc2l6
ZV90Li4uIEk+Cit2b2lkIENvbnN0cnVjdEZyb21UdXBsZUltcGwoQWxsb2MqIGFsbG9jLCBUKiBw
dHIsIFR1cGxlJiYgdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjppbmRleF9z
ZXF1ZW5jZTxJLi4uPikgeworICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6Y29uc3Ry
dWN0KAorICAgICAgKmFsbG9jLCBwdHIsIHN0ZDo6Z2V0PEk+KHN0ZDo6Zm9yd2FyZDxUdXBsZT4o
dCkpLi4uKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEY+CitzdHJ1Y3QgV2l0aENv
bnN0cnVjdGVkSW1wbEYgeworICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgZGVjbHR5cGUo
c3RkOjpkZWNsdmFsPEY+KCkoc3RkOjpkZWNsdmFsPFQ+KCkpKSBvcGVyYXRvcigpKAorICAgICAg
QXJncyYmLi4uIGFyZ3MpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RkOjpmb3J3YXJkPEY+KGYpKFQo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgIH0KKyAgRiYmIGY7Cit9OworCit0ZW1w
bGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVHVwbGUsIHNpemVfdC4uLiBJcywgY2xhc3MgRj4KK2RlY2x0
eXBlKHN0ZDo6ZGVjbHZhbDxGPigpKHN0ZDo6ZGVjbHZhbDxUPigpKSkgV2l0aENvbnN0cnVjdGVk
SW1wbCgKKyAgICBUdXBsZSYmIHQsIGFic2w6OmluZGV4X3NlcXVlbmNlPElzLi4uPiwgRiYmIGYp
IHsKKyAgcmV0dXJuIFdpdGhDb25zdHJ1Y3RlZEltcGxGPFQsIEY+e3N0ZDo6Zm9yd2FyZDxGPihm
KX0oCisgICAgICBzdGQ6OmdldDxJcz4oc3RkOjpmb3J3YXJkPFR1cGxlPih0KSkuLi4pOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90Li4uIElzPgorYXV0byBUdXBsZVJlZkltcGwoVCYm
IHQsIGFic2w6OmluZGV4X3NlcXVlbmNlPElzLi4uPikKKyAgICAtPiBkZWNsdHlwZShzdGQ6OmZv
cndhcmRfYXNfdHVwbGUoc3RkOjpnZXQ8SXM+KHN0ZDo6Zm9yd2FyZDxUPih0KSkuLi4pKSB7Cisg
IHJldHVybiBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoc3RkOjpnZXQ8SXM+KHN0ZDo6Zm9yd2FyZDxU
Pih0KSkuLi4pOworfQorCisvLyBSZXR1cm5zIGEgdHVwbGUgb2YgcmVmZXJlbmNlcyB0byB0aGUg
ZWxlbWVudHMgb2YgdGhlIGlucHV0IHR1cGxlLiBUIG11c3QgYmUgYQorLy8gdHVwbGUuCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4KK2F1dG8gVHVwbGVSZWYoVCYmIHQpIC0+IGRlY2x0eXBlKAorICAgIFR1
cGxlUmVmSW1wbChzdGQ6OmZvcndhcmQ8VD4odCksCisgICAgICAgICAgICAgICAgIGFic2w6Om1h
a2VfaW5kZXhfc2VxdWVuY2U8CisgICAgICAgICAgICAgICAgICAgICBzdGQ6OnR1cGxlX3NpemU8
dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT46OnZhbHVlPigpKSkgeworICByZXR1cm4gVHVw
bGVSZWZJbXBsKAorICAgICAgc3RkOjpmb3J3YXJkPFQ+KHQpLAorICAgICAgYWJzbDo6bWFrZV9p
bmRleF9zZXF1ZW5jZTwKKyAgICAgICAgICBzdGQ6OnR1cGxlX3NpemU8dHlwZW5hbWUgc3RkOjpk
ZWNheTxUPjo6dHlwZT46OnZhbHVlPigpKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNz
IEssIGNsYXNzIFY+CitkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Rj4oKShzdGQ6OmRlY2x2YWw8Y29u
c3QgSyY+KCksIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6ZGVjbHZhbDxzdGQ6OnR1cGxlPEs+PigpLCBzdGQ6OmRlY2x2YWw8Vj4oKSkp
CitEZWNvbXBvc2VQYWlySW1wbChGJiYgZiwgc3RkOjpwYWlyPHN0ZDo6dHVwbGU8Sz4sIFY+IHAp
IHsKKyAgY29uc3QgYXV0byYga2V5ID0gc3RkOjpnZXQ8MD4ocC5maXJzdCk7CisgIHJldHVybiBz
dGQ6OmZvcndhcmQ8Rj4oZikoa2V5LCBzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6bW92
ZShwLmZpcnN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUocC5zZWNv
bmQpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIG1lbW9yeV9pbnRlcm5hbAorCisvLyBDb25zdHJ1
Y3RzIFQgaW50byB1bmluaXRpYWxpemVkIHN0b3JhZ2UgcG9pbnRlZCBieSBgcHRyYCB1c2luZyB0
aGUgYXJncworLy8gc3BlY2lmaWVkIGluIHRoZSB0dXBsZS4KK3RlbXBsYXRlIDxjbGFzcyBBbGxv
YywgY2xhc3MgVCwgY2xhc3MgVHVwbGU+Cit2b2lkIENvbnN0cnVjdEZyb21UdXBsZShBbGxvYyog
YWxsb2MsIFQqIHB0ciwgVHVwbGUmJiB0KSB7CisgIG1lbW9yeV9pbnRlcm5hbDo6Q29uc3RydWN0
RnJvbVR1cGxlSW1wbCgKKyAgICAgIGFsbG9jLCBwdHIsIHN0ZDo6Zm9yd2FyZDxUdXBsZT4odCks
CisgICAgICBhYnNsOjptYWtlX2luZGV4X3NlcXVlbmNlPAorICAgICAgICAgIHN0ZDo6dHVwbGVf
c2l6ZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFR1cGxlPjo6dHlwZT46OnZhbHVlPigpKTsKK30KKwor
Ly8gQ29uc3RydWN0cyBUIHVzaW5nIHRoZSBhcmdzIHNwZWNpZmllZCBpbiB0aGUgdHVwbGUgYW5k
IGNhbGxzIEYgd2l0aCB0aGUKKy8vIGNvbnN0cnVjdGVkIHZhbHVlLgordGVtcGxhdGUgPGNsYXNz
IFQsIGNsYXNzIFR1cGxlLCBjbGFzcyBGPgorZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEY+KCkoc3Rk
OjpkZWNsdmFsPFQ+KCkpKSBXaXRoQ29uc3RydWN0ZWQoCisgICAgVHVwbGUmJiB0LCBGJiYgZikg
eworICByZXR1cm4gbWVtb3J5X2ludGVybmFsOjpXaXRoQ29uc3RydWN0ZWRJbXBsPFQ+KAorICAg
ICAgc3RkOjpmb3J3YXJkPFR1cGxlPih0KSwKKyAgICAgIGFic2w6Om1ha2VfaW5kZXhfc2VxdWVu
Y2U8CisgICAgICAgICAgc3RkOjp0dXBsZV9zaXplPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VHVwbGU+
Ojp0eXBlPjo6dmFsdWU+KCksCisgICAgICBzdGQ6OmZvcndhcmQ8Rj4oZikpOworfQorCisvLyBH
aXZlbiBhcmd1bWVudHMgb2YgYW4gc3RkOjpwYWlyJ3MgY29uc3J1Y3RvciwgUGFpckFyZ3MoKSBy
ZXR1cm5zIGEgcGFpciBvZgorLy8gdHVwbGVzIHdpdGggcmVmZXJlbmNlcyB0byB0aGUgcGFzc2Vk
IGFyZ3VtZW50cy4gVGhlIHR1cGxlcyBjb250YWluCisvLyBjb25zdHJ1Y3RvciBhcmd1bWVudHMg
Zm9yIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50cyBvZiB0aGUgcGFpci4KKy8vCisv
LyBUaGUgZm9sbG93aW5nIHR3byBzbmlwcGV0cyBhcmUgZXF1aXZhbGVudC4KKy8vCisvLyAxLiBz
dGQ6OnBhaXI8RiwgUz4gcChhcmdzLi4uKTsKKy8vCisvLyAyLiBhdXRvIGEgPSBQYWlyQXJncyhh
cmdzLi4uKTsKKy8vICAgIHN0ZDo6cGFpcjxGLCBTPiBwKHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVj
dCwKKy8vICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShwLmZpcnN0KSwgc3RkOjptb3Zl
KHAuc2Vjb25kKSk7CitpbmxpbmUgc3RkOjpwYWlyPHN0ZDo6dHVwbGU8Piwgc3RkOjp0dXBsZTw+
PiBQYWlyQXJncygpIHsgcmV0dXJuIHt9OyB9Cit0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgUz4K
K3N0ZDo6cGFpcjxzdGQ6OnR1cGxlPEYmJj4sIHN0ZDo6dHVwbGU8UyYmPj4gUGFpckFyZ3MoRiYm
IGYsIFMmJiBzKSB7CisgIHJldHVybiB7c3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6OmZv
cndhcmRfYXNfdHVwbGUoc3RkOjpmb3J3YXJkPEY+KGYpKSwKKyAgICAgICAgICBzdGQ6OmZvcndh
cmRfYXNfdHVwbGUoc3RkOjpmb3J3YXJkPFM+KHMpKX07Cit9Cit0ZW1wbGF0ZSA8Y2xhc3MgRiwg
Y2xhc3MgUz4KK3N0ZDo6cGFpcjxzdGQ6OnR1cGxlPGNvbnN0IEYmPiwgc3RkOjp0dXBsZTxjb25z
dCBTJj4+IFBhaXJBcmdzKAorICAgIGNvbnN0IHN0ZDo6cGFpcjxGLCBTPiYgcCkgeworICByZXR1
cm4gUGFpckFyZ3MocC5maXJzdCwgcC5zZWNvbmQpOworfQordGVtcGxhdGUgPGNsYXNzIEYsIGNs
YXNzIFM+CitzdGQ6OnBhaXI8c3RkOjp0dXBsZTxGJiY+LCBzdGQ6OnR1cGxlPFMmJj4+IFBhaXJB
cmdzKHN0ZDo6cGFpcjxGLCBTPiYmIHApIHsKKyAgcmV0dXJuIFBhaXJBcmdzKHN0ZDo6Zm9yd2Fy
ZDxGPihwLmZpcnN0KSwgc3RkOjpmb3J3YXJkPFM+KHAuc2Vjb25kKSk7Cit9Cit0ZW1wbGF0ZSA8
Y2xhc3MgRiwgY2xhc3MgUz4KK2F1dG8gUGFpckFyZ3Moc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0
X3QsIEYmJiBmLCBTJiYgcykKKyAgICAtPiBkZWNsdHlwZShzdGQ6Om1ha2VfcGFpcihtZW1vcnlf
aW50ZXJuYWw6OlR1cGxlUmVmKHN0ZDo6Zm9yd2FyZDxGPihmKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVtb3J5X2ludGVybmFsOjpUdXBsZVJlZihzdGQ6OmZvcndhcmQ8Uz4o
cykpKSkgeworICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWVtb3J5X2ludGVybmFsOjpUdXBsZVJl
ZihzdGQ6OmZvcndhcmQ8Rj4oZikpLAorICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X2lu
dGVybmFsOjpUdXBsZVJlZihzdGQ6OmZvcndhcmQ8Uz4ocykpKTsKK30KKworLy8gQSBoZWxwZXIg
ZnVuY3Rpb24gZm9yIGltcGxlbWVudGluZyBhcHBseSgpIGluIG1hcCBwb2xpY2llcy4KK3RlbXBs
YXRlIDxjbGFzcyBGLCBjbGFzcy4uLiBBcmdzPgorYXV0byBEZWNvbXBvc2VQYWlyKEYmJiBmLCBB
cmdzJiYuLi4gYXJncykKKyAgICAtPiBkZWNsdHlwZShtZW1vcnlfaW50ZXJuYWw6OkRlY29tcG9z
ZVBhaXJJbXBsKAorICAgICAgICBzdGQ6OmZvcndhcmQ8Rj4oZiksIFBhaXJBcmdzKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLikpKSB7CisgIHJldHVybiBtZW1vcnlfaW50ZXJuYWw6OkRlY29t
cG9zZVBhaXJJbXBsKAorICAgICAgc3RkOjpmb3J3YXJkPEY+KGYpLCBQYWlyQXJncyhzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKTsKK30KKworLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGlt
cGxlbWVudGluZyBhcHBseSgpIGluIHNldCBwb2xpY2llcy4KK3RlbXBsYXRlIDxjbGFzcyBGLCBj
bGFzcyBBcmc+CitkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Rj4oKShzdGQ6OmRlY2x2YWw8Y29uc3Qg
QXJnJj4oKSwgc3RkOjpkZWNsdmFsPEFyZz4oKSkpCitEZWNvbXBvc2VWYWx1ZShGJiYgZiwgQXJn
JiYgYXJnKSB7CisgIGNvbnN0IGF1dG8mIGtleSA9IGFyZzsKKyAgcmV0dXJuIHN0ZDo6Zm9yd2Fy
ZDxGPihmKShrZXksIHN0ZDo6Zm9yd2FyZDxBcmc+KGFyZykpOworfQorCisvLyBIZWxwZXIgZnVu
Y3Rpb25zIGZvciBhc2FuIGFuZCBtc2FuLgoraW5saW5lIHZvaWQgU2FuaXRpemVyUG9pc29uTWVt
b3J5UmVnaW9uKGNvbnN0IHZvaWQqIG0sIHNpemVfdCBzKSB7CisjaWZkZWYgQUREUkVTU19TQU5J
VElaRVIKKyAgQVNBTl9QT0lTT05fTUVNT1JZX1JFR0lPTihtLCBzKTsKKyNlbmRpZgorI2lmZGVm
IE1FTU9SWV9TQU5JVElaRVIKKyAgX19tc2FuX3BvaXNvbihtLCBzKTsKKyNlbmRpZgorICAodm9p
ZCltOworICAodm9pZClzOworfQorCitpbmxpbmUgdm9pZCBTYW5pdGl6ZXJVbnBvaXNvbk1lbW9y
eVJlZ2lvbihjb25zdCB2b2lkKiBtLCBzaXplX3QgcykgeworI2lmZGVmIEFERFJFU1NfU0FOSVRJ
WkVSCisgIEFTQU5fVU5QT0lTT05fTUVNT1JZX1JFR0lPTihtLCBzKTsKKyNlbmRpZgorI2lmZGVm
IE1FTU9SWV9TQU5JVElaRVIKKyAgX19tc2FuX3VucG9pc29uKG0sIHMpOworI2VuZGlmCisgICh2
b2lkKW07CisgICh2b2lkKXM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIHZv
aWQgU2FuaXRpemVyUG9pc29uT2JqZWN0KGNvbnN0IFQqIG9iamVjdCkgeworICBTYW5pdGl6ZXJQ
b2lzb25NZW1vcnlSZWdpb24ob2JqZWN0LCBzaXplb2YoVCkpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2lubGluZSB2b2lkIFNhbml0aXplclVucG9pc29uT2JqZWN0KGNvbnN0IFQqIG9i
amVjdCkgeworICBTYW5pdGl6ZXJVbnBvaXNvbk1lbW9yeVJlZ2lvbihvYmplY3QsIHNpemVvZihU
KSk7Cit9CisKK25hbWVzcGFjZSBtZW1vcnlfaW50ZXJuYWwgeworCisvLyBJZiBQYWlyIGlzIGEg
c3RhbmRhcmQtbGF5b3V0IHR5cGUsIE9mZnNldE9mPFBhaXI+OjprRmlyc3QgYW5kCisvLyBPZmZz
ZXRPZjxQYWlyPjo6a1NlY29uZCBhcmUgZXF1aXZhbGVudCB0byBvZmZzZXRvZihQYWlyLCBmaXJz
dCkgYW5kCisvLyBvZmZzZXRvZihQYWlyLCBzZWNvbmQpIHJlc3BlY3RpdmVseS4gT3RoZXJ3aXNl
IHRoZXkgYXJlIC0xLgorLy8KKy8vIFRoZSBwdXJwb3NlIG9mIE9mZnNldE9mIGlzIHRvIGF2b2lk
IGNhbGxpbmcgb2Zmc2V0b2YoKSBvbiBub24tc3RhbmRhcmQtbGF5b3V0CisvLyB0eXBlLCB3aGlj
aCBpcyBub24tcG9ydGFibGUuCit0ZW1wbGF0ZSA8Y2xhc3MgUGFpciwgY2xhc3MgPSBzdGQ6OnRy
dWVfdHlwZT4KK3N0cnVjdCBPZmZzZXRPZiB7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtG
aXJzdCA9IC0xOworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU2Vjb25kID0gLTE7Cit9Owor
Cit0ZW1wbGF0ZSA8Y2xhc3MgUGFpcj4KK3N0cnVjdCBPZmZzZXRPZjxQYWlyLCB0eXBlbmFtZSBz
dGQ6OmlzX3N0YW5kYXJkX2xheW91dDxQYWlyPjo6dHlwZT4geworICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBrRmlyc3QgPSBvZmZzZXRvZihQYWlyLCBmaXJzdCk7CisgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IGtTZWNvbmQgPSBvZmZzZXRvZihQYWlyLCBzZWNvbmQpOworfTsKKwordGVtcGxh
dGUgPGNsYXNzIEssIGNsYXNzIFY+CitzdHJ1Y3QgSXNMYXlvdXRDb21wYXRpYmxlIHsKKyBwcml2
YXRlOgorICBzdHJ1Y3QgUGFpciB7CisgICAgSyBmaXJzdDsKKyAgICBWIHNlY29uZDsKKyAgfTsK
KworICAvLyBJcyBQIGxheW91dC1jb21wYXRpYmxlIHdpdGggUGFpcj8KKyAgdGVtcGxhdGUgPGNs
YXNzIFA+CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBMYXlvdXRDb21wYXRpYmxlKCkgeworICAg
IHJldHVybiBzdGQ6OmlzX3N0YW5kYXJkX2xheW91dDxQPigpICYmIHNpemVvZihQKSA9PSBzaXpl
b2YoUGFpcikgJiYKKyAgICAgICAgICAgYWxpZ25vZihQKSA9PSBhbGlnbm9mKFBhaXIpICYmCisg
ICAgICAgICAgIG1lbW9yeV9pbnRlcm5hbDo6T2Zmc2V0T2Y8UD46OmtGaXJzdCA9PQorICAgICAg
ICAgICAgICAgbWVtb3J5X2ludGVybmFsOjpPZmZzZXRPZjxQYWlyPjo6a0ZpcnN0ICYmCisgICAg
ICAgICAgIG1lbW9yeV9pbnRlcm5hbDo6T2Zmc2V0T2Y8UD46OmtTZWNvbmQgPT0KKyAgICAgICAg
ICAgICAgIG1lbW9yeV9pbnRlcm5hbDo6T2Zmc2V0T2Y8UGFpcj46OmtTZWNvbmQ7CisgIH0KKwor
IHB1YmxpYzoKKyAgLy8gV2hldGhlciBwYWlyPGNvbnN0IEssIFY+IGFuZCBwYWlyPEssIFY+IGFy
ZSBsYXlvdXQtY29tcGF0aWJsZS4gSWYgdGhleSBhcmUsCisgIC8vIHRoZW4gaXQgaXMgc2FmZSB0
byBzdG9yZSB0aGVtIGluIGEgdW5pb24gYW5kIHJlYWQgZnJvbSBlaXRoZXIuCisgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCB2YWx1ZSA9IHN0ZDo6aXNfc3RhbmRhcmRfbGF5b3V0PEs+KCkgJiYKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8UGFp
cj4oKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfaW50ZXJuYWw6
Ok9mZnNldE9mPFBhaXI+OjprRmlyc3QgPT0gMCAmJgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMYXlvdXRDb21wYXRpYmxlPHN0ZDo6cGFpcjxLLCBWPj4oKSAmJgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRDb21wYXRpYmxlPHN0ZDo6cGFpcjxjb25zdCBL
LCBWPj4oKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBtZW1vcnlfaW50ZXJuYWwKKworLy8gSWYg
a011dGFibGVLZXlzIGlzIGZhbHNlLCBvbmx5IHRoZSB2YWx1ZSBtZW1iZXIgaXMgYWNjZXNzZWQu
CisvLworLy8gSWYga011dGFibGVLZXlzIGlzIHRydWUsIGtleSBpcyBhY2Nlc3NlZCB0aHJvdWdo
IGFsbCBzbG90cyB3aGlsZSB2YWx1ZSBhbmQKKy8vIG11dGFibGVfdmFsdWUgYXJlIGFjY2Vzc2Vk
IG9ubHkgdmlhIElOSVRJQUxJWkVEIHNsb3RzLiBTbG90cyBhcmUgY3JlYXRlZCBhbmQKKy8vIGRl
c3Ryb3llZCB2aWEgbXV0YWJsZV92YWx1ZSBzbyB0aGF0IHRoZSBrZXkgY2FuIGJlIG1vdmVkIGxh
dGVyLgordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+Cit1bmlvbiBzbG90X3R5cGUgeworIHBy
aXZhdGU6CisgIHN0YXRpYyB2b2lkIGVtcGxhY2Uoc2xvdF90eXBlKiBzbG90KSB7CisgICAgLy8g
VGhlIGNvbnN0cnVjdGlvbiBvZiB1bmlvbiBkb2Vzbid0IGRvIGFueXRoaW5nIGF0IHJ1bnRpbWUg
YnV0IGl0IGFsbG93cyB1cworICAgIC8vIHRvIGFjY2VzcyBpdHMgbWVtYmVycyB3aXRob3V0IHZp
b2xhdGluZyBhbGlhc2luZyBydWxlcy4KKyAgICBuZXcgKHNsb3QpIHNsb3RfdHlwZTsKKyAgfQor
ICAvLyBJZiBwYWlyPGNvbnN0IEssIFY+IGFuZCBwYWlyPEssIFY+IGFyZSBsYXlvdXQtY29tcGF0
aWJsZSwgd2UgY2FuIGFjY2VwdCBvbmUKKyAgLy8gb3IgdGhlIG90aGVyIHZpYSBzbG90X3R5cGUu
IFdlIGFyZSBhbHNvIGZyZWUgdG8gYWNjZXNzIHRoZSBrZXkgdmlhCisgIC8vIHNsb3RfdHlwZTo6
a2V5IGluIHRoaXMgY2FzZS4KKyAgdXNpbmcga011dGFibGVLZXlzID0KKyAgICAgIHN0ZDo6aW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5
X2ludGVybmFsOjpJc0xheW91dENvbXBhdGlibGU8SywgVj46OnZhbHVlPjsKKworIHB1YmxpYzoK
KyAgc2xvdF90eXBlKCkge30KKyAgfnNsb3RfdHlwZSgpID0gZGVsZXRlOworICB1c2luZyB2YWx1
ZV90eXBlID0gc3RkOjpwYWlyPGNvbnN0IEssIFY+OworICB1c2luZyBtdXRhYmxlX3ZhbHVlX3R5
cGUgPSBzdGQ6OnBhaXI8SywgVj47CisKKyAgdmFsdWVfdHlwZSB2YWx1ZTsKKyAgbXV0YWJsZV92
YWx1ZV90eXBlIG11dGFibGVfdmFsdWU7CisgIEsga2V5OworCisgIHRlbXBsYXRlIDxjbGFzcyBB
bGxvY2F0b3IsIGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvY2F0
b3IqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgZW1wbGFj
ZShzbG90KTsKKyAgICBpZiAoa011dGFibGVLZXlzOjp2YWx1ZSkgeworICAgICAgYWJzbDo6YWxs
b2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoKmFsbG9jLCAmc2xvdC0+bXV0YWJs
ZV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfSBlbHNlIHsKKyAgICAgIGFi
c2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KCphbGxvYywgJnNsb3Qt
PnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisgIH0KKworICAvLyBDb25z
dHJ1Y3QgdGhpcyBzbG90IGJ5IG1vdmluZyBmcm9tIGFub3RoZXIgc2xvdC4KKyAgdGVtcGxhdGUg
PGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9jYXRvciogYWxs
b2MsIHNsb3RfdHlwZSogc2xvdCwgc2xvdF90eXBlKiBvdGhlcikgeworICAgIGVtcGxhY2Uoc2xv
dCk7CisgICAgaWYgKGtNdXRhYmxlS2V5czo6dmFsdWUpIHsKKyAgICAgIGFic2w6OmFsbG9jYXRv
cl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KAorICAgICAgICAgICphbGxvYywgJnNsb3Qt
Pm11dGFibGVfdmFsdWUsIHN0ZDo6bW92ZShvdGhlci0+bXV0YWJsZV92YWx1ZSkpOworICAgIH0g
ZWxzZSB7CisgICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVj
dCgqYWxsb2MsICZzbG90LT52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShvdGhlci0+dmFsdWUpKTsKKyAgICB9CisgIH0K
KworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgorICBzdGF0aWMgdm9pZCBkZXN0cm95KEFs
bG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCkgeworICAgIGlmIChrTXV0YWJsZUtleXM6
OnZhbHVlKSB7CisgICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ry
b3koKmFsbG9jLCAmc2xvdC0+bXV0YWJsZV92YWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGFi
c2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6ZGVzdHJveSgqYWxsb2MsICZzbG90LT52
YWx1ZSk7CisgICAgfQorICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3Rh
dGljIHZvaWQgdHJhbnNmZXIoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgc2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAgIGVtcGxh
Y2UobmV3X3Nsb3QpOworICAgIGlmIChrTXV0YWJsZUtleXM6OnZhbHVlKSB7CisgICAgICBhYnNs
OjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdCgKKyAgICAgICAgICAqYWxs
b2MsICZuZXdfc2xvdC0+bXV0YWJsZV92YWx1ZSwgc3RkOjptb3ZlKG9sZF9zbG90LT5tdXRhYmxl
X3ZhbHVlKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxs
b2NhdG9yPjo6Y29uc3RydWN0KCphbGxvYywgJm5ld19zbG90LT52YWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShvbGRfc2xv
dC0+dmFsdWUpKTsKKyAgICB9CisgICAgZGVzdHJveShhbGxvYywgb2xkX3Nsb3QpOworICB9CisK
KyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgc3dhcChBbGxvY2F0
b3IqIGFsbG9jLCBzbG90X3R5cGUqIGEsIHNsb3RfdHlwZSogYikgeworICAgIGlmIChrTXV0YWJs
ZUtleXM6OnZhbHVlKSB7CisgICAgICB1c2luZyBzdGQ6OnN3YXA7CisgICAgICBzd2FwKGEtPm11
dGFibGVfdmFsdWUsIGItPm11dGFibGVfdmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICB2YWx1
ZV90eXBlIHRtcCA9IHN0ZDo6bW92ZShhLT52YWx1ZSk7CisgICAgICBhYnNsOjphbGxvY2F0b3Jf
dHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koKmFsbG9jLCAmYS0+dmFsdWUpOworICAgICAgYWJz
bDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoKmFsbG9jLCAmYS0+dmFs
dWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om1vdmUoYi0+dmFsdWUpKTsKKyAgICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2Nh
dG9yPjo6ZGVzdHJveSgqYWxsb2MsICZiLT52YWx1ZSk7CisgICAgICBhYnNsOjphbGxvY2F0b3Jf
dHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdCgqYWxsb2MsICZiLT52YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh0bXAp
KTsKKyAgICB9CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgorICBzdGF0aWMg
dm9pZCBtb3ZlKEFsbG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogc3JjLCBzbG90X3R5cGUqIGRl
c3QpIHsKKyAgICBpZiAoa011dGFibGVLZXlzOjp2YWx1ZSkgeworICAgICAgZGVzdC0+bXV0YWJs
ZV92YWx1ZSA9IHN0ZDo6bW92ZShzcmMtPm11dGFibGVfdmFsdWUpOworICAgIH0gZWxzZSB7Cisg
ICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koKmFsbG9jLCAm
ZGVzdC0+dmFsdWUpOworICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpj
b25zdHJ1Y3QoKmFsbG9jLCAmZGVzdC0+dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoc3JjLT52YWx1ZSkpOworICAgIH0K
KyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0YXRpYyB2b2lkIG1vdmUo
QWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBmaXJzdCwgc2xvdF90eXBlKiBsYXN0LAorICAg
ICAgICAgICAgICAgICAgIHNsb3RfdHlwZSogcmVzdWx0KSB7CisgICAgZm9yIChzbG90X3R5cGUg
KnNyYyA9IGZpcnN0LCAqZGVzdCA9IHJlc3VsdDsgc3JjICE9IGxhc3Q7ICsrc3JjLCArK2Rlc3Qp
CisgICAgICBtb3ZlKGFsbG9jLCBzcmMsIGRlc3QpOworICB9Cit9OworCit9ICAvLyBuYW1lc3Bh
Y2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8v
IEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0NPTlRBSU5FUl9NRU1PUllfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5X3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeV90ZXN0LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYxYzQwNTgyOThjMTU3NDA5ZmVjOWFjOTkwODUwYzBiMTQ5NDk3MWYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeV90ZXN0LmNjCkBA
IC0wLDAgKzEsMTg4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIgor
CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx1dGlsaXR5
PgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorCituYW1lc3BhY2UgYWJzbCB7
CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6
dGVzdGluZzo6UGFpcjsKKworVEVTVChNZW1vcnksIEFsaWdubWVudExhcmdlclRoYW5CYXNlKSB7
CisgIHN0ZDo6YWxsb2NhdG9yPGludDhfdD4gYWxsb2M7CisgIHZvaWQqIG1lbSA9IEFsbG9jYXRl
PDI+KCZhbGxvYywgMyk7CisgIEVYUEVDVF9FUSgwLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4obWVtKSAlIDIpOworICBtZW1jcHkobWVtLCAiYWJjIiwgMyk7CisgIERlYWxsb2NhdGU8Mj4o
JmFsbG9jLCBtZW0sIDMpOworfQorCitURVNUKE1lbW9yeSwgQWxpZ25tZW50U21hbGxlclRoYW5C
YXNlKSB7CisgIHN0ZDo6YWxsb2NhdG9yPGludDY0X3Q+IGFsbG9jOworICB2b2lkKiBtZW0gPSBB
bGxvY2F0ZTwyPigmYWxsb2MsIDMpOworICBFWFBFQ1RfRVEoMCwgcmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KG1lbSkgJSAyKTsKKyAgbWVtY3B5KG1lbSwgImFiYyIsIDMpOworICBEZWFsbG9j
YXRlPDI+KCZhbGxvYywgbWVtLCAzKTsKK30KKworY2xhc3MgRml4dHVyZSA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgeworICB1c2luZyBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPHN0ZDo6c3RyaW5n
PjsKKworIHB1YmxpYzoKKyAgRml4dHVyZSgpIHsgcHRyXyA9IHN0ZDo6YWxsb2NhdG9yX3RyYWl0
czxBbGxvYz46OmFsbG9jYXRlKCphbGxvYygpLCAxKTsgfQorICB+Rml4dHVyZSgpIG92ZXJyaWRl
IHsKKyAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+OjpkZXN0cm95KCphbGxvYygpLCBw
dHJfKTsKKyAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+OjpkZWFsbG9jYXRlKCphbGxv
YygpLCBwdHJfLCAxKTsKKyAgfQorICBzdGQ6OnN0cmluZyogcHRyKCkgeyByZXR1cm4gcHRyXzsg
fQorICBBbGxvYyogYWxsb2MoKSB7IHJldHVybiAmYWxsb2NfOyB9CisKKyBwcml2YXRlOgorICBB
bGxvYyBhbGxvY187CisgIHN0ZDo6c3RyaW5nKiBwdHJfOworfTsKKworVEVTVF9GKEZpeHR1cmUs
IENvbnN0cnVjdE5vQXJncykgeworICBDb25zdHJ1Y3RGcm9tVHVwbGUoYWxsb2MoKSwgcHRyKCks
IHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgpKTsKKyAgRVhQRUNUX0VRKCpwdHIoKSwgIiIpOworfQor
CitURVNUX0YoRml4dHVyZSwgQ29uc3RydWN0T25lQXJnKSB7CisgIENvbnN0cnVjdEZyb21UdXBs
ZShhbGxvYygpLCBwdHIoKSwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKCJhYmNkZSIpKTsKKyAgRVhQ
RUNUX0VRKCpwdHIoKSwgImFiY2RlIik7Cit9CisKK1RFU1RfRihGaXh0dXJlLCBDb25zdHJ1Y3RU
d29BcmcpIHsKKyAgQ29uc3RydWN0RnJvbVR1cGxlKGFsbG9jKCksIHB0cigpLCBzdGQ6OmZvcndh
cmRfYXNfdHVwbGUoNSwgJ2EnKSk7CisgIEVYUEVDVF9FUSgqcHRyKCksICJhYWFhYSIpOworfQor
CitURVNUKFBhaXJBcmdzLCBOb0FyZ3MpIHsKKyAgRVhQRUNUX1RIQVQoUGFpckFyZ3MoKSwKKyAg
ICAgICAgICAgICAgUGFpcihzdGQ6OmZvcndhcmRfYXNfdHVwbGUoKSwgc3RkOjpmb3J3YXJkX2Fz
X3R1cGxlKCkpKTsKK30KKworVEVTVChQYWlyQXJncywgVHdvQXJncykgeworICBFWFBFQ1RfRVEo
CisgICAgICBzdGQ6Om1ha2VfcGFpcihzdGQ6OmZvcndhcmRfYXNfdHVwbGUoMSksIHN0ZDo6Zm9y
d2FyZF9hc190dXBsZSgnQScpKSwKKyAgICAgIFBhaXJBcmdzKDEsICdBJykpOworfQorCitURVNU
KFBhaXJBcmdzLCBQYWlyKSB7CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0ZDo6bWFrZV9wYWlyKHN0
ZDo6Zm9yd2FyZF9hc190dXBsZSgxKSwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKCdBJykpLAorICAg
ICAgUGFpckFyZ3Moc3RkOjptYWtlX3BhaXIoMSwgJ0EnKSkpOworfQorCitURVNUKFBhaXJBcmdz
LCBQaWVjZXdpc2UpIHsKKyAgRVhQRUNUX0VRKAorICAgICAgc3RkOjptYWtlX3BhaXIoc3RkOjpm
b3J3YXJkX2FzX3R1cGxlKDEpLCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoJ0EnKSksCisgICAgICBQ
YWlyQXJncyhzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgx
KSwKKyAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgnQScpKSk7Cit9CisKK1RF
U1QoV2l0aENvbnN0cnVjdGVkLCBTaW1wbGUpIHsKKyAgRVhQRUNUX0VRKDEsIFdpdGhDb25zdHJ1
Y3RlZDxhYnNsOjpzdHJpbmdfdmlldz4oCisgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3R1
cGxlKHN0ZDo6c3RyaW5nKCJhIikpLAorICAgICAgICAgICAgICAgICAgIFtdKGFic2w6OnN0cmlu
Z192aWV3IHN0cikgeyByZXR1cm4gc3RyLnNpemUoKTsgfSkpOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgRiwgY2xhc3MgQXJnPgorZGVjbHR5cGUoRGVjb21wb3NlVmFsdWUoc3RkOjpkZWNsdmFsPEY+
KCksIHN0ZDo6ZGVjbHZhbDxBcmc+KCkpKQorRGVjb21wb3NlVmFsdWVJbXBsKGludCwgRiYmIGYs
IEFyZyYmIGFyZykgeworICByZXR1cm4gRGVjb21wb3NlVmFsdWUoc3RkOjpmb3J3YXJkPEY+KGYp
LCBzdGQ6OmZvcndhcmQ8QXJnPihhcmcpKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNz
IEFyZz4KK2NvbnN0IGNoYXIqIERlY29tcG9zZVZhbHVlSW1wbChjaGFyLCBGJiYgZiwgQXJnJiYg
YXJnKSB7CisgIHJldHVybiAibm90IGRlY29tcG9zYWJsZSI7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBGLCBjbGFzcyBBcmc+CitkZWNsdHlwZShEZWNvbXBvc2VWYWx1ZUltcGwoMCwgc3RkOjpkZWNs
dmFsPEY+KCksIHN0ZDo6ZGVjbHZhbDxBcmc+KCkpKQorVHJ5RGVjb21wb3NlVmFsdWUoRiYmIGYs
IEFyZyYmIGFyZykgeworICByZXR1cm4gRGVjb21wb3NlVmFsdWVJbXBsKDAsIHN0ZDo6Zm9yd2Fy
ZDxGPihmKSwgc3RkOjpmb3J3YXJkPEFyZz4oYXJnKSk7Cit9CisKK1RFU1QoRGVjb21wb3NlVmFs
dWUsIERlY29tcG9zYWJsZSkgeworICBhdXRvIGYgPSBbXShjb25zdCBpbnQmIHgsIGludCYmIHkp
IHsKKyAgICBFWFBFQ1RfRVEoJngsICZ5KTsKKyAgICBFWFBFQ1RfRVEoNDIsIHgpOworICAgIHJl
dHVybiAnQSc7CisgIH07CisgIEVYUEVDVF9FUSgnQScsIFRyeURlY29tcG9zZVZhbHVlKGYsIDQy
KSk7Cit9CisKK1RFU1QoRGVjb21wb3NlVmFsdWUsIE5vdERlY29tcG9zYWJsZSkgeworICBhdXRv
IGYgPSBbXSh2b2lkKikgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIk11c3Qgbm90IGJlIGNhbGxl
ZCI7CisgICAgcmV0dXJuICdBJzsKKyAgfTsKKyAgRVhQRUNUX1NUUkVRKCJub3QgZGVjb21wb3Nh
YmxlIiwgVHJ5RGVjb21wb3NlVmFsdWUoZiwgNDIpKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIEYs
IGNsYXNzLi4uIEFyZ3M+CitkZWNsdHlwZShEZWNvbXBvc2VQYWlyKHN0ZDo6ZGVjbHZhbDxGPigp
LCBzdGQ6OmRlY2x2YWw8QXJncz4oKS4uLikpCitEZWNvbXBvc2VQYWlySW1wbChpbnQsIEYmJiBm
LCBBcmdzJiYuLi4gYXJncykgeworICByZXR1cm4gRGVjb21wb3NlUGFpcihzdGQ6OmZvcndhcmQ8
Rj4oZiksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBGLCBjbGFzcy4uLiBBcmdzPgorY29uc3QgY2hhciogRGVjb21wb3NlUGFpckltcGwoY2hhciwg
RiYmIGYsIEFyZ3MmJi4uLiBhcmdzKSB7CisgIHJldHVybiAibm90IGRlY29tcG9zYWJsZSI7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcy4uLiBBcmdzPgorZGVjbHR5cGUoRGVjb21wb3Nl
UGFpckltcGwoMCwgc3RkOjpkZWNsdmFsPEY+KCksIHN0ZDo6ZGVjbHZhbDxBcmdzPigpLi4uKSkK
K1RyeURlY29tcG9zZVBhaXIoRiYmIGYsIEFyZ3MmJi4uLiBhcmdzKSB7CisgIHJldHVybiBEZWNv
bXBvc2VQYWlySW1wbCgwLCBzdGQ6OmZvcndhcmQ8Rj4oZiksIHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7Cit9CisKK1RFU1QoRGVjb21wb3NlUGFpciwgRGVjb21wb3NhYmxlKSB7CisgIGF1
dG8gZiA9IFtdKGNvbnN0IGludCYgeCwgc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0X3QsIHN0ZDo6
dHVwbGU8aW50JiY+IGssCisgICAgICAgICAgICAgIHN0ZDo6dHVwbGU8ZG91YmxlPiYmIHYpIHsK
KyAgICBFWFBFQ1RfRVEoJngsICZzdGQ6OmdldDwwPihrKSk7CisgICAgRVhQRUNUX0VRKDQyLCB4
KTsKKyAgICBFWFBFQ1RfRVEoMC41LCBzdGQ6OmdldDwwPih2KSk7CisgICAgcmV0dXJuICdBJzsK
KyAgfTsKKyAgRVhQRUNUX0VRKCdBJywgVHJ5RGVjb21wb3NlUGFpcihmLCA0MiwgMC41KSk7Cisg
IEVYUEVDVF9FUSgnQScsIFRyeURlY29tcG9zZVBhaXIoZiwgc3RkOjptYWtlX3BhaXIoNDIsIDAu
NSkpKTsKKyAgRVhQRUNUX0VRKCdBJywgVHJ5RGVjb21wb3NlUGFpcihmLCBzdGQ6OnBpZWNld2lz
ZV9jb25zdHJ1Y3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtl
X3R1cGxlKDQyKSwgc3RkOjptYWtlX3R1cGxlKDAuNSkpKTsKK30KKworVEVTVChEZWNvbXBvc2VQ
YWlyLCBOb3REZWNvbXBvc2FibGUpIHsKKyAgYXV0byBmID0gW10oLi4uKSB7CisgICAgQUREX0ZB
SUxVUkUoKSA8PCAiTXVzdCBub3QgYmUgY2FsbGVkIjsKKyAgICByZXR1cm4gJ0EnOworICB9Owor
ICBFWFBFQ1RfU1RSRVEoIm5vdCBkZWNvbXBvc2FibGUiLAorICAgICAgICAgICAgICAgVHJ5RGVj
b21wb3NlUGFpcihmKSk7CisgIEVYUEVDVF9TVFJFUSgibm90IGRlY29tcG9zYWJsZSIsCisgICAg
ICAgICAgICAgICBUcnlEZWNvbXBvc2VQYWlyKGYsIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwg
c3RkOjptYWtlX3R1cGxlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWFrZV90dXBsZSgwLjUpKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNl
IGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFm
MGQ3OTRkOTY2Mzg4MTg2ZGQ3ZGZkNjlhOGFlOWE2YWRmNzA5ZjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oCkBAIC0w
LDAgKzEsMTQzIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8K
Ky8vIERlZmluZSB0aGUgZGVmYXVsdCBIYXNoIGFuZCBFcSBmdW5jdGlvbnMgZm9yIFN3aXNzVGFi
bGUgY29udGFpbmVycy4KKy8vCisvLyBzdGQ6Omhhc2g8VD4gYW5kIHN0ZDo6ZXF1YWxfdG88VD4g
YXJlIG5vdCBhcHByb3ByaWF0ZSBoYXNoIGFuZCBlcXVhbAorLy8gZnVuY3Rpb25zIGZvciBTd2lz
c1RhYmxlIGNvbnRhaW5lcnMuIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3IgdGhpcy4KKy8vCisv
LyBTd2lzc1RhYmxlIGNvbnRhaW5lcnMgYXJlIHBvd2VyIG9mIDIgc2l6ZWQgY29udGFpbmVyczoK
Ky8vCisvLyBUaGlzIG1lYW5zIHRoZXkgdXNlIHRoZSBsb3dlciBiaXRzIG9mIHRoZSBoYXNoIHZh
bHVlIHRvIGZpbmQgdGhlIHNsb3QgZm9yCisvLyBlYWNoIGVudHJ5LiBUaGUgdHlwaWNhbCBoYXNo
IGZ1bmN0aW9uIGZvciBpbnRlZ3JhbCB0eXBlcyBpcyB0aGUgaWRlbnRpdHkuCisvLyBUaGlzIGlz
IGEgdmVyeSB3ZWFrIGhhc2ggZnVuY3Rpb24gZm9yIFN3aXNzVGFibGUgYW5kIGFueSBwb3dlciBv
ZiAyIHNpemVkCisvLyBoYXNodGFibGUgaW1wbGVtZW50YXRpb24gd2hpY2ggd2lsbCBsZWFkIHRv
IGV4Y2Vzc2l2ZSBjb2xsaXNpb25zLiBGb3IKKy8vIFN3aXNzVGFibGUgd2UgdXNlIG11cm11cjMg
c3R5bGUgbWl4aW5nIHRvIHJlZHVjZSBjb2xsaXNpb25zIHRvIGEgbWluaW11bS4KKy8vCisvLyBT
d2lzc1RhYmxlIGNvbnRhaW5lcnMgc3VwcG9ydCBoZXRlcm9nZW5lb3VzIGxvb2t1cDoKKy8vCisv
LyBJbiBvcmRlciB0byBtYWtlIGhldGVyb2dlbmVvdXMgbG9va3VwIHdvcmssIGhhc2ggYW5kIGVx
dWFsIGZ1bmN0aW9ucyBtdXN0IGJlCisvLyBwb2x5bW9ycGhpYy4gQXQgdGhlIHNhbWUgdGltZSB0
aGV5IGhhdmUgdG8gc2F0aXNmeSB0aGUgc2FtZSByZXF1aXJlbWVudHMgdGhlCisvLyBDKysgc3Rh
bmRhcmQgaW1wb3NlcyBvbiBoYXNoIGZ1bmN0aW9ucyBhbmQgZXF1YWxpdHkgb3BlcmF0b3JzLiBU
aGF0IGlzOgorLy8KKy8vICAgaWYgaGFzaF9kZWZhdWx0X2VxPFQ+KGEsIGIpIHJldHVybnMgdHJ1
ZSBmb3IgYW55IGEgYW5kIGIgb2YgdHlwZSBULCB0aGVuCisvLyAgIGhhc2hfZGVmYXVsdF9oYXNo
PFQ+KGEpIG11c3QgZXF1YWwgaGFzaF9kZWZhdWx0X2hhc2g8VD4oYikKKy8vCisvLyBGb3IgU3dp
c3NUYWJsZSBjb250YWluZXJzIHRoaXMgcmVxdWlyZW1lbnQgaXMgcmVsYXhlZCB0byBhbGxvdyBh
IGFuZCBiIG9mCisvLyBhbnkgYW5kIHBvc3NpYmx5IGRpZmZlcmVudCB0eXBlcy4gTm90ZSB0aGF0
IGxpa2UgdGhlIHN0YW5kYXJkIHRoZSBoYXNoIGFuZAorLy8gZXF1YWwgZnVuY3Rpb25zIGFyZSBz
dGlsbCBib3VuZCB0byBULiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgdHlwZSBVCisv
LyBjYW4gYmUgaGFzaGVkIGJ5L3Rlc3RlZCBmb3IgZXF1YWxpdHkgZGlmZmVyZW50bHkgZGVwZW5k
aW5nIG9uIFQuIEEgbm90YWJsZQorLy8gZXhhbXBsZSBpcyBgY29uc3QgY2hhcipgLiBgY29uc3Qg
Y2hhcipgIGlzIHRyZWF0ZWQgYXMgYSBjLXN0eWxlIHN0cmluZyB3aGVuCisvLyB0aGUgaGFzaCBm
dW5jdGlvbiBpcyBoYXNoPHN0cmluZz4gYnV0IGFzIGEgcG9pbnRlciB3aGVuIHRoZSBoYXNoIGZ1
bmN0aW9uIGlzCisvLyBoYXNoPHZvaWQqPi4KKy8vCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lO
VEVSTkFMX0hBU0hfRlVOQ1RJT05fREVGQVVMVFNfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJf
SU5URVJOQUxfSEFTSF9GVU5DVElPTl9ERUZBVUxUU19IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+
CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2NvbmZpZy5o
IgorI2luY2x1ZGUgImFic2wvaGFzaC9oYXNoLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0
cmluZ192aWV3LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50
ZXJuYWwgeworCisvLyBUaGUgaGFzaCBvZiBhbiBvYmplY3Qgb2YgdHlwZSBUIGlzIGNvbXB1dGVk
IGJ5IHVzaW5nIGFic2w6Okhhc2guCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRSA9IHZvaWQ+
CitzdHJ1Y3QgSGFzaEVxIHsKKyAgdXNpbmcgSGFzaCA9IGFic2w6Okhhc2g8VD47CisgIHVzaW5n
IEVxID0gc3RkOjplcXVhbF90bzxUPjsKK307CisKK3N0cnVjdCBTdHJpbmdIYXNoIHsKKyAgdXNp
bmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworCisgIHNpemVfdCBvcGVyYXRvcigpKGFic2w6OnN0
cmluZ192aWV3IHYpIGNvbnN0IHsKKyAgICByZXR1cm4gYWJzbDo6SGFzaDxhYnNsOjpzdHJpbmdf
dmlldz57fSh2KTsKKyAgfQorfTsKKworLy8gU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAg
Zm9yIHN0cmluZy1saWtlIGVsZW1lbnRzLgorc3RydWN0IFN0cmluZ0hhc2hFcSB7CisgIHVzaW5n
IEhhc2ggPSBTdHJpbmdIYXNoOworICBzdHJ1Y3QgRXEgeworICAgIHVzaW5nIGlzX3RyYW5zcGFy
ZW50ID0gdm9pZDsKKyAgICBib29sIG9wZXJhdG9yKCkoYWJzbDo6c3RyaW5nX3ZpZXcgbGhzLCBh
YnNsOjpzdHJpbmdfdmlldyByaHMpIGNvbnN0IHsKKyAgICAgIHJldHVybiBsaHMgPT0gcmhzOwor
ICAgIH0KKyAgfTsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEhhc2hFcTxzdGQ6OnN0cmluZz4g
OiBTdHJpbmdIYXNoRXEge307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEhhc2hFcTxhYnNsOjpzdHJp
bmdfdmlldz4gOiBTdHJpbmdIYXNoRXEge307CisKKy8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMg
bG9va3VwIGZvciBwb2ludGVycyBhbmQgc21hcnQgcG9pbnRlcnMuCit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KK3N0cnVjdCBIYXNoRXE8VCo+IHsKKyAgc3RydWN0IEhhc2ggeworICAgIHVzaW5nIGlzX3Ry
YW5zcGFyZW50ID0gdm9pZDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKyAgICBzaXplX3Qgb3Bl
cmF0b3IoKShjb25zdCBVJiBwdHIpIGNvbnN0IHsKKyAgICAgIHJldHVybiBhYnNsOjpIYXNoPGNv
bnN0IFQqPnt9KEhhc2hFcTo6VG9QdHIocHRyKSk7CisgICAgfQorICB9OworICBzdHJ1Y3QgRXEg
eworICAgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
QSwgY2xhc3MgQj4KKyAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgQSYgYSwgY29uc3QgQiYgYikg
Y29uc3QgeworICAgICAgcmV0dXJuIEhhc2hFcTo6VG9QdHIoYSkgPT0gSGFzaEVxOjpUb1B0cihi
KTsKKyAgICB9CisgIH07CisKKyBwcml2YXRlOgorICBzdGF0aWMgY29uc3QgVCogVG9QdHIoY29u
c3QgVCogcHRyKSB7IHJldHVybiBwdHI7IH0KKyAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzIEQ+
CisgIHN0YXRpYyBjb25zdCBUKiBUb1B0cihjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VSwgRD4mIHB0
cikgeworICAgIHJldHVybiBwdHIuZ2V0KCk7CisgIH0KKyAgdGVtcGxhdGUgPGNsYXNzIFU+Cisg
IHN0YXRpYyBjb25zdCBUKiBUb1B0cihjb25zdCBzdGQ6OnNoYXJlZF9wdHI8VT4mIHB0cikgewor
ICAgIHJldHVybiBwdHIuZ2V0KCk7CisgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFz
cyBEPgorc3RydWN0IEhhc2hFcTxzdGQ6OnVuaXF1ZV9wdHI8VCwgRD4+IDogSGFzaEVxPFQqPiB7
fTsKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IEhhc2hFcTxzdGQ6OnNoYXJlZF9wdHI8VD4+
IDogSGFzaEVxPFQqPiB7fTsKKworLy8gVGhpcyBoZWFkZXIncyB2aXNpYmlsaXR5IGlzIHJlc3Ry
aWN0ZWQuICBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIGRlZmF1bHQKKy8vIGhhc2hlciBwbGVh
c2UgdXNlIHRoZSBjb250YWluZXIncyA6Omhhc2hlciBhbGlhcyBpbnN0ZWFkLgorLy8KKy8vIEV4
YW1wbGU6IHR5cGVuYW1lIEhhc2ggPSB0eXBlbmFtZSBhYnNsOjpmbGF0X2hhc2hfbWFwPEssIFY+
OjpoYXNoZXIKK3RlbXBsYXRlIDxjbGFzcyBUPgordXNpbmcgaGFzaF9kZWZhdWx0X2hhc2ggPSB0
eXBlbmFtZSBjb250YWluZXJfaW50ZXJuYWw6Okhhc2hFcTxUPjo6SGFzaDsKKworLy8gVGhpcyBo
ZWFkZXIncyB2aXNpYmlsaXR5IGlzIHJlc3RyaWN0ZWQuICBJZiB5b3UgbmVlZCB0byBhY2Nlc3Mg
dGhlIGRlZmF1bHQKKy8vIGtleSBlcXVhbCBwbGVhc2UgdXNlIHRoZSBjb250YWluZXIncyA6Omtl
eV9lcXVhbCBhbGlhcyBpbnN0ZWFkLgorLy8KKy8vIEV4YW1wbGU6IHR5cGVuYW1lIEVxID0gdHlw
ZW5hbWUgYWJzbDo6ZmxhdF9oYXNoX21hcDxLLCBWLCBIYXNoPjo6a2V5X2VxdWFsCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4KK3VzaW5nIGhhc2hfZGVmYXVsdF9lcSA9IHR5cGVuYW1lIGNvbnRhaW5lcl9p
bnRlcm5hbDo6SGFzaEVxPFQ+OjpFcTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRl
cm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9J
TlRFUk5BTF9IQVNIX0ZVTkNUSU9OX0RFRkFVTFRTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0c190ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NjRiYWFlMDJjZGRiMGM0MWU2MTJlNTk3ODhkODM3ZDU5ZjkxN2ZjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVz
dC5jYwpAQCAtMCwwICsxLDI5OSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25f
ZGVmYXVsdHMuaCIKKworI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5j
bHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKwordXNpbmcgOjp0ZXN0
aW5nOjpUeXBlczsKKworVEVTVChFcSwgSW50MzIpIHsKKyAgaGFzaF9kZWZhdWx0X2VxPGludDMy
X3Q+IGVxOworICBFWFBFQ1RfVFJVRShlcSgxLCAxdSkpOworICBFWFBFQ1RfVFJVRShlcSgxLCBj
aGFyezF9KSk7CisgIEVYUEVDVF9UUlVFKGVxKDEsIHRydWUpKTsKKyAgRVhQRUNUX1RSVUUoZXEo
MSwgZG91YmxlezEuMX0pKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKDEsIGNoYXJ7Mn0pKTsKKyAgRVhQ
RUNUX0ZBTFNFKGVxKDEsIDJ1KSk7CisgIEVYUEVDVF9GQUxTRShlcSgxLCBmYWxzZSkpOworICBF
WFBFQ1RfRkFMU0UoZXEoMSwgMi4pKTsKK30KKworVEVTVChIYXNoLCBJbnQzMikgeworICBoYXNo
X2RlZmF1bHRfaGFzaDxpbnQzMl90PiBoYXNoOworICBhdXRvIGggPSBoYXNoKDEpOworICBFWFBF
Q1RfRVEoaCwgaGFzaCgxdSkpOworICBFWFBFQ1RfRVEoaCwgaGFzaChjaGFyezF9KSk7CisgIEVY
UEVDVF9FUShoLCBoYXNoKHRydWUpKTsKKyAgRVhQRUNUX0VRKGgsIGhhc2goZG91YmxlezEuMX0p
KTsKKyAgRVhQRUNUX05FKGgsIGhhc2goMnUpKTsKKyAgRVhQRUNUX05FKGgsIGhhc2goY2hhcnsy
fSkpOworICBFWFBFQ1RfTkUoaCwgaGFzaChmYWxzZSkpOworICBFWFBFQ1RfTkUoaCwgaGFzaCgy
LikpOworfQorCitlbnVtIGNsYXNzIE15RW51bSB7IEEsIEIsIEMsIEQgfTsKKworVEVTVChFcSwg
RW51bSkgeworICBoYXNoX2RlZmF1bHRfZXE8TXlFbnVtPiBlcTsKKyAgRVhQRUNUX1RSVUUoZXEo
TXlFbnVtOjpBLCBNeUVudW06OkEpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKE15RW51bTo6QSwgTXlF
bnVtOjpCKSk7Cit9CisKK1RFU1QoSGFzaCwgRW51bSkgeworICBoYXNoX2RlZmF1bHRfaGFzaDxN
eUVudW0+IGhhc2g7CisKKyAgZm9yIChNeUVudW0gZSA6IHtNeUVudW06OkEsIE15RW51bTo6Qiwg
TXlFbnVtOjpDfSkgeworICAgIGF1dG8gaCA9IGhhc2goZSk7CisgICAgRVhQRUNUX0VRKGgsIGhh
c2hfZGVmYXVsdF9oYXNoPGludD57fShzdGF0aWNfY2FzdDxpbnQ+KGUpKSk7CisgICAgRVhQRUNU
X05FKGgsIGhhc2goTXlFbnVtOjpEKSk7CisgIH0KK30KKwordXNpbmcgU3RyaW5nVHlwZXMgPSA6
OnRlc3Rpbmc6OlR5cGVzPHN0ZDo6c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldz47CisKK3RlbXBs
YXRlIDxjbGFzcyBUPgorc3RydWN0IEVxU3RyaW5nIDogOjp0ZXN0aW5nOjpUZXN0IHsKKyAgaGFz
aF9kZWZhdWx0X2VxPFQ+IGtleV9lcTsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShFcVN0cmluZywg
U3RyaW5nVHlwZXMpOworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBIYXNoU3RyaW5nIDog
Ojp0ZXN0aW5nOjpUZXN0IHsKKyAgaGFzaF9kZWZhdWx0X2hhc2g8VD4gaGFzaGVyOworfTsKKwor
VFlQRURfVEVTVF9DQVNFKEhhc2hTdHJpbmcsIFN0cmluZ1R5cGVzKTsKKworVFlQRURfVEVTVChF
cVN0cmluZywgV29ya3MpIHsKKyAgYXV0byBlcSA9IHRoaXMtPmtleV9lcTsKKyAgRVhQRUNUX1RS
VUUoZXEoImEiLCAiYSIpKTsKKyAgRVhQRUNUX1RSVUUoZXEoImEiLCBhYnNsOjpzdHJpbmdfdmll
dygiYSIpKSk7CisgIEVYUEVDVF9UUlVFKGVxKCJhIiwgc3RkOjpzdHJpbmcoImEiKSkpOworICBF
WFBFQ1RfRkFMU0UoZXEoImEiLCAiYiIpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKCJhIiwgYWJzbDo6
c3RyaW5nX3ZpZXcoImIiKSkpOworICBFWFBFQ1RfRkFMU0UoZXEoImEiLCBzdGQ6OnN0cmluZygi
YiIpKSk7Cit9CisKK1RZUEVEX1RFU1QoSGFzaFN0cmluZywgV29ya3MpIHsKKyAgYXV0byBoYXNo
ID0gdGhpcy0+aGFzaGVyOworICBhdXRvIGggPSBoYXNoKCJhIik7CisgIEVYUEVDVF9FUShoLCBo
YXNoKGFic2w6OnN0cmluZ192aWV3KCJhIikpKTsKKyAgRVhQRUNUX0VRKGgsIGhhc2goc3RkOjpz
dHJpbmcoImEiKSkpOworICBFWFBFQ1RfTkUoaCwgaGFzaChhYnNsOjpzdHJpbmdfdmlldygiYiIp
KSk7CisgIEVYUEVDVF9ORShoLCBoYXNoKHN0ZDo6c3RyaW5nKCJiIikpKTsKK30KKworc3RydWN0
IE5vRGVsZXRlciB7CisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICB2b2lkIG9wZXJhdG9yKCkoY29u
c3QgVCogcHRyKSBjb25zdCB7fQorfTsKKwordXNpbmcgUG9pbnRlclR5cGVzID0KKyAgICA6OnRl
c3Rpbmc6OlR5cGVzPGNvbnN0IGludCosIGludCosIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBpbnQ+
LAorICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IGludCwgTm9EZWxl
dGVyPiwKKyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBzdGQ6OnVu
aXF1ZV9wdHI8aW50LCBOb0RlbGV0ZXI+LAorICAgICAgICAgICAgICAgICAgICAgc3RkOjpzaGFy
ZWRfcHRyPGNvbnN0IGludD4sIHN0ZDo6c2hhcmVkX3B0cjxpbnQ+PjsKKwordGVtcGxhdGUgPGNs
YXNzIFQ+CitzdHJ1Y3QgRXFQb2ludGVyIDogOjp0ZXN0aW5nOjpUZXN0IHsKKyAgaGFzaF9kZWZh
dWx0X2VxPFQ+IGtleV9lcTsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShFcVBvaW50ZXIsIFBvaW50
ZXJUeXBlcyk7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IEhhc2hQb2ludGVyIDogOjp0
ZXN0aW5nOjpUZXN0IHsKKyAgaGFzaF9kZWZhdWx0X2hhc2g8VD4gaGFzaGVyOworfTsKKworVFlQ
RURfVEVTVF9DQVNFKEhhc2hQb2ludGVyLCBQb2ludGVyVHlwZXMpOworCitUWVBFRF9URVNUKEVx
UG9pbnRlciwgV29ya3MpIHsKKyAgaW50IGR1bW15OworICBhdXRvIGVxID0gdGhpcy0+a2V5X2Vx
OworICBhdXRvIHNwdHIgPSBzdGQ6Om1ha2Vfc2hhcmVkPGludD4oKTsKKyAgc3RkOjpzaGFyZWRf
cHRyPGNvbnN0IGludD4gY3NwdHIgPSBzcHRyOworICBpbnQqIHB0ciA9IHNwdHIuZ2V0KCk7Cisg
IGNvbnN0IGludCogY3B0ciA9IHB0cjsKKyAgc3RkOjp1bmlxdWVfcHRyPGludCwgTm9EZWxldGVy
PiB1cHRyKHB0cik7CisgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBpbnQsIE5vRGVsZXRlcj4gY3Vw
dHIocHRyKTsKKworICBFWFBFQ1RfVFJVRShlcShwdHIsIGNwdHIpKTsKKyAgRVhQRUNUX1RSVUUo
ZXEocHRyLCBzcHRyKSk7CisgIEVYUEVDVF9UUlVFKGVxKHB0ciwgdXB0cikpOworICBFWFBFQ1Rf
VFJVRShlcShwdHIsIGNzcHRyKSk7CisgIEVYUEVDVF9UUlVFKGVxKHB0ciwgY3VwdHIpKTsKKyAg
RVhQRUNUX0ZBTFNFKGVxKCZkdW1teSwgY3B0cikpOworICBFWFBFQ1RfRkFMU0UoZXEoJmR1bW15
LCBzcHRyKSk7CisgIEVYUEVDVF9GQUxTRShlcSgmZHVtbXksIHVwdHIpKTsKKyAgRVhQRUNUX0ZB
TFNFKGVxKCZkdW1teSwgY3NwdHIpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKCZkdW1teSwgY3VwdHIp
KTsKK30KKworVEVTVChIYXNoLCBEZXJpdmVkQW5kQmFzZSkgeworICBzdHJ1Y3QgQmFzZSB7fTsK
KyAgc3RydWN0IERlcml2ZWQgOiBCYXNlIHt9OworCisgIGhhc2hfZGVmYXVsdF9oYXNoPEJhc2Uq
PiBoYXNoZXI7CisKKyAgQmFzZSBiYXNlOworICBEZXJpdmVkIGRlcml2ZWQ7CisgIEVYUEVDVF9O
RShoYXNoZXIoJmJhc2UpLCBoYXNoZXIoJmRlcml2ZWQpKTsKKyAgRVhQRUNUX0VRKGhhc2hlcihz
dGF0aWNfY2FzdDxCYXNlKj4oJmRlcml2ZWQpKSwgaGFzaGVyKCZkZXJpdmVkKSk7CisKKyAgYXV0
byBkcCA9IHN0ZDo6bWFrZV9zaGFyZWQ8RGVyaXZlZD4oKTsKKyAgRVhQRUNUX0VRKGhhc2hlcihz
dGF0aWNfY2FzdDxCYXNlKj4oZHAuZ2V0KCkpKSwgaGFzaGVyKGRwKSk7Cit9CisKK1RFU1QoSGFz
aCwgRnVuY3Rpb25Qb2ludGVyKSB7CisgIHVzaW5nIEZ1bmMgPSBpbnQgKCopKCk7CisgIGhhc2hf
ZGVmYXVsdF9oYXNoPEZ1bmM+IGhhc2hlcjsKKyAgaGFzaF9kZWZhdWx0X2VxPEZ1bmM+IGVxOwor
CisgIEZ1bmMgcDEgPSBbXSB7IHJldHVybiAxOyB9LCBwMiA9IFtdIHsgcmV0dXJuIDI7IH07Cisg
IEVYUEVDVF9FUShoYXNoZXIocDEpLCBoYXNoZXIocDEpKTsKKyAgRVhQRUNUX1RSVUUoZXEocDEs
IHAxKSk7CisKKyAgRVhQRUNUX05FKGhhc2hlcihwMSksIGhhc2hlcihwMikpOworICBFWFBFQ1Rf
RkFMU0UoZXEocDEsIHAyKSk7Cit9CisKK1RZUEVEX1RFU1QoSGFzaFBvaW50ZXIsIFdvcmtzKSB7
CisgIGludCBkdW1teTsKKyAgYXV0byBoYXNoID0gdGhpcy0+aGFzaGVyOworICBhdXRvIHNwdHIg
PSBzdGQ6Om1ha2Vfc2hhcmVkPGludD4oKTsKKyAgc3RkOjpzaGFyZWRfcHRyPGNvbnN0IGludD4g
Y3NwdHIgPSBzcHRyOworICBpbnQqIHB0ciA9IHNwdHIuZ2V0KCk7CisgIGNvbnN0IGludCogY3B0
ciA9IHB0cjsKKyAgc3RkOjp1bmlxdWVfcHRyPGludCwgTm9EZWxldGVyPiB1cHRyKHB0cik7Cisg
IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBpbnQsIE5vRGVsZXRlcj4gY3VwdHIocHRyKTsKKworICBF
WFBFQ1RfRVEoaGFzaChwdHIpLCBoYXNoKGNwdHIpKTsKKyAgRVhQRUNUX0VRKGhhc2gocHRyKSwg
aGFzaChzcHRyKSk7CisgIEVYUEVDVF9FUShoYXNoKHB0ciksIGhhc2godXB0cikpOworICBFWFBF
Q1RfRVEoaGFzaChwdHIpLCBoYXNoKGNzcHRyKSk7CisgIEVYUEVDVF9FUShoYXNoKHB0ciksIGhh
c2goY3VwdHIpKTsKKyAgRVhQRUNUX05FKGhhc2goJmR1bW15KSwgaGFzaChjcHRyKSk7CisgIEVY
UEVDVF9ORShoYXNoKCZkdW1teSksIGhhc2goc3B0cikpOworICBFWFBFQ1RfTkUoaGFzaCgmZHVt
bXkpLCBoYXNoKHVwdHIpKTsKKyAgRVhQRUNUX05FKGhhc2goJmR1bW15KSwgaGFzaChjc3B0cikp
OworICBFWFBFQ1RfTkUoaGFzaCgmZHVtbXkpLCBoYXNoKGN1cHRyKSk7Cit9CisKKy8vIENhcnRl
c2lhbiBwcm9kdWN0IG9mIChzdHJpbmcsIHN0ZDo6c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldykK
Ky8vIHdpdGggKHN0cmluZywgc3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3LCBjb25zdCBj
aGFyKikuCit1c2luZyBTdHJpbmdUeXBlc0NhcnRlc2lhblByb2R1Y3QgPSBUeXBlczwKKyAgICAv
LyBjbGFuZy1mb3JtYXQgb2ZmCisKKyAgICBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3Ry
aW5nPiwKKyAgICBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3PiwKKyAg
ICBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIGNvbnN0IGNoYXIqPiwKKworICAgIHN0ZDo6cGFpcjxh
YnNsOjpzdHJpbmdfdmlldywgc3RkOjpzdHJpbmc+LAorICAgIHN0ZDo6cGFpcjxhYnNsOjpzdHJp
bmdfdmlldywgYWJzbDo6c3RyaW5nX3ZpZXc+LAorICAgIHN0ZDo6cGFpcjxhYnNsOjpzdHJpbmdf
dmlldywgY29uc3QgY2hhcio+PjsKKy8vIGNsYW5nLWZvcm1hdCBvbgorCitjb25zdGV4cHIgY2hh
ciBrRmlyc3RTdHJpbmdbXSA9ICJhYmMxMjMiOworY29uc3RleHByIGNoYXIga1NlY29uZFN0cmlu
Z1tdID0gImlqazQ1NiI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFN0cmluZ0xp
a2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgIHR5cGVuYW1lIFQ6OmZpcnN0X3R5
cGUgYTF7a0ZpcnN0U3RyaW5nfTsKKyAgdHlwZW5hbWUgVDo6c2Vjb25kX3R5cGUgYjF7a0ZpcnN0
U3RyaW5nfTsKKyAgdHlwZW5hbWUgVDo6Zmlyc3RfdHlwZSBhMntrU2Vjb25kU3RyaW5nfTsKKyAg
dHlwZW5hbWUgVDo6c2Vjb25kX3R5cGUgYjJ7a1NlY29uZFN0cmluZ307CisgIGhhc2hfZGVmYXVs
dF9lcTx0eXBlbmFtZSBUOjpmaXJzdF90eXBlPiBlcTsKKyAgaGFzaF9kZWZhdWx0X2hhc2g8dHlw
ZW5hbWUgVDo6Zmlyc3RfdHlwZT4gaGFzaDsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKFN0cmlu
Z0xpa2VUZXN0KTsKKworVFlQRURfVEVTVF9QKFN0cmluZ0xpa2VUZXN0LCBFcSkgeworICBFWFBF
Q1RfVFJVRSh0aGlzLT5lcSh0aGlzLT5hMSwgdGhpcy0+YjEpKTsKKyAgRVhQRUNUX1RSVUUodGhp
cy0+ZXEodGhpcy0+YjEsIHRoaXMtPmExKSk7Cit9CisKK1RZUEVEX1RFU1RfUChTdHJpbmdMaWtl
VGVzdCwgTm90RXEpIHsKKyAgRVhQRUNUX0ZBTFNFKHRoaXMtPmVxKHRoaXMtPmExLCB0aGlzLT5i
MikpOworICBFWFBFQ1RfRkFMU0UodGhpcy0+ZXEodGhpcy0+YjIsIHRoaXMtPmExKSk7Cit9CisK
K1RZUEVEX1RFU1RfUChTdHJpbmdMaWtlVGVzdCwgSGFzaEVxKSB7CisgIEVYUEVDVF9FUSh0aGlz
LT5oYXNoKHRoaXMtPmExKSwgdGhpcy0+aGFzaCh0aGlzLT5iMSkpOworICBFWFBFQ1RfRVEodGhp
cy0+aGFzaCh0aGlzLT5hMiksIHRoaXMtPmhhc2godGhpcy0+YjIpKTsKKyAgLy8gSXQgd291bGQg
YmUgYSBwb29yIGhhc2ggZnVuY3Rpb24gd2hpY2ggY29sbGlkZXMgb24gdGhlc2Ugc3RyaW5ncy4K
KyAgRVhQRUNUX05FKHRoaXMtPmhhc2godGhpcy0+YTEpLCB0aGlzLT5oYXNoKHRoaXMtPmIyKSk7
Cit9CisKK1RZUEVEX1RFU1RfQ0FTRShTdHJpbmdMaWtlVGVzdCwgU3RyaW5nVHlwZXNDYXJ0ZXNp
YW5Qcm9kdWN0KTsKKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVy
X2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCitlbnVtIEhhc2ggOiBzaXplX3Qgewor
ICBrU3RkID0gMHgyLCAgICAgICAvLyBzdGQ6Omhhc2gKKyNpZmRlZiBfTVNDX1ZFUgorICBrRXh0
ZW5zaW9uID0ga1N0ZCwgIC8vIEluIE1TVkMsIHN0ZDo6aGFzaCA9PSA6Omhhc2gKKyNlbHNlICAg
ICAgICAgICAgICAgICAvLyBfTVNDX1ZFUgorICBrRXh0ZW5zaW9uID0gMHg0LCAgLy8gOjpoYXNo
IChHQ0MgZXh0ZW5zaW9uKQorI2VuZGlmICAgICAgICAgICAgICAgIC8vIF9NU0NfVkVSCit9Owor
CisvLyBIIGlzIGEgYml0bWFzayBvZiBIYXNoIGVudW1lcmF0aW9ucy4KKy8vIEhhc2hhYmxlPEg+
IGlzIGhhc2hhYmxlIHZpYSBhbGwgbWVhbnMgc3BlY2lmaWVkIGluIEguCit0ZW1wbGF0ZSA8aW50
IEg+CitzdHJ1Y3QgSGFzaGFibGUgeworICBzdGF0aWMgY29uc3RleHByIGJvb2wgSGFzaGFibGVC
eShIYXNoIGgpIHsgcmV0dXJuIGggJiBIOyB9Cit9OworCituYW1lc3BhY2Ugc3RkIHsKK3RlbXBs
YXRlIDxpbnQgSD4KK3N0cnVjdCBoYXNoPEhhc2hhYmxlPEg+PiB7CisgIHRlbXBsYXRlIDxjbGFz
cyBFID0gSGFzaGFibGU8SD4sCisgICAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPEU6Okhhc2hhYmxlQnkoa1N0ZCk+Ojp0eXBlPgorICBzaXplX3Qgb3BlcmF0b3IoKShF
KSBjb25zdCB7CisgICAgcmV0dXJuIGtTdGQ7CisgIH0KK307Cit9ICAvLyBuYW1lc3BhY2Ugc3Rk
CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFt
ZXNwYWNlIHsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzaXplX3QgSGFzaChjb25zdCBUJiB2KSB7
CisgIHJldHVybiBoYXNoX2RlZmF1bHRfaGFzaDxUPigpKHYpOworfQorCitURVNUKERlbGVnYXRl
LCBIYXNoRGlzcGF0Y2gpIHsKKyAgRVhQRUNUX0VRKEhhc2goa1N0ZCksIEhhc2goSGFzaGFibGU8
a1N0ZD4oKSkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWlu
ZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNmE5ZGYx
NmY4YTMzNmMxNDNhZmFlZWMyMDY5MTQyMzYxYjg4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5jYwpAQCAtMCwwICsx
LDcyIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgorCisj
aW5jbHVkZSA8ZGVxdWU+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJf
aW50ZXJuYWwgeworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworY2xh
c3MgUmFuZG9tRGV2aWNlU2VlZFNlcSB7CisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9
IHR5cGVuYW1lIHN0ZDo6cmFuZG9tX2RldmljZTo6cmVzdWx0X3R5cGU7CisKKyAgdGVtcGxhdGUg
PGNsYXNzIEl0ZXJhdG9yPgorICB2b2lkIGdlbmVyYXRlKEl0ZXJhdG9yIHN0YXJ0LCBJdGVyYXRv
ciBlbmQpIHsKKyAgICB3aGlsZSAoc3RhcnQgIT0gZW5kKSB7CisgICAgICAqc3RhcnQgPSBnZW5f
KCk7CisgICAgICArK3N0YXJ0OworICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpyYW5k
b21fZGV2aWNlIGdlbl87Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworc3RkOjptdDE5OTM3XzY0
KiBHZXRUaHJlYWRMb2NhbFJuZygpIHsKKyAgUmFuZG9tRGV2aWNlU2VlZFNlcSBzZWVkX3NlcTsK
KyAgdGhyZWFkX2xvY2FsIGF1dG8qIHJuZyA9IG5ldyBzdGQ6Om10MTk5MzdfNjQoc2VlZF9zZXEp
OworICByZXR1cm4gcm5nOworfQorCitzdGQ6OnN0cmluZyBHZW5lcmF0b3I8c3RkOjpzdHJpbmc+
OjpvcGVyYXRvcigpKCkgY29uc3QgeworICAvLyBOT0xJTlRORVhUTElORShydW50aW1lL2ludCkK
KyAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248c2hvcnQ+IGNoYXJzKDB4MjAsIDB4N0Up
OworICBzdGQ6OnN0cmluZyByZXM7CisgIHJlcy5yZXNpemUoMzIpOworICBzdGQ6OmdlbmVyYXRl
KHJlcy5iZWdpbigpLCByZXMuZW5kKCksCisgICAgICAgICAgICAgICAgWyZdKCkgeyByZXR1cm4g
Y2hhcnMoKkdldFRocmVhZExvY2FsUm5nKCkpOyB9KTsKKyAgcmV0dXJuIHJlczsKK30KKworYWJz
bDo6c3RyaW5nX3ZpZXcgR2VuZXJhdG9yPGFic2w6OnN0cmluZ192aWV3Pjo6b3BlcmF0b3IoKSgp
IGNvbnN0IHsKKyAgc3RhdGljIGF1dG8qIGFyZW5hID0gbmV3IHN0ZDo6ZGVxdWU8c3RkOjpzdHJp
bmc+KCk7CisgIC8vIE5PTElOVE5FWFRMSU5FKHJ1bnRpbWUvaW50KQorICBzdGQ6OnVuaWZvcm1f
aW50X2Rpc3RyaWJ1dGlvbjxzaG9ydD4gY2hhcnMoMHgyMCwgMHg3RSk7CisgIGFyZW5hLT5lbXBs
YWNlX2JhY2soKTsKKyAgYXV0byYgcmVzID0gYXJlbmEtPmJhY2soKTsKKyAgcmVzLnJlc2l6ZSgz
Mik7CisgIHN0ZDo6Z2VuZXJhdGUocmVzLmJlZ2luKCksIHJlcy5lbmQoKSwKKyAgICAgICAgICAg
ICAgICBbJl0oKSB7IHJldHVybiBjaGFycygqR2V0VGhyZWFkTG9jYWxSbmcoKSk7IH0pOworICBy
ZXR1cm4gcmVzOworfQorCit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAorfSAgLy8gbmFt
ZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUwZDc3MTAyNmM3YjUwMDUxMzVkMjg2MzE2NWEwMDljYjRkYmNhOTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5o
CkBAIC0wLDAgKzEsMTUwIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKy8vIEdlbmVyYXRlcyByYW5kb20gdmFsdWVzIGZvciB0ZXN0aW5nLiBTcGVjaWFsaXpl
ZCBvbmx5IGZvciB0aGUgZmV3IHR5cGVzIHdlCisvLyBjYXJlIGFib3V0LgorCisjaWZuZGVmIEFC
U0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hfR0VORVJBVE9SX1RFU1RJTkdfSF8KKyNkZWZpbmUg
QUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSF9HRU5FUkFUT1JfVEVTVElOR19IXworCisjaW5j
bHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGlvc2Z3ZD4K
KyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVy
bmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFp
dHMuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKworbmFtZXNwYWNl
IGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgaGFzaF9p
bnRlcm5hbCB7CituYW1lc3BhY2UgZ2VuZXJhdG9yX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNs
YXNzIENvbnRhaW5lciwgY2xhc3MgPSB2b2lkPgorc3RydWN0IElzTWFwIDogc3RkOjpmYWxzZV90
eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgTWFwPgorc3RydWN0IElzTWFwPE1hcCwgYWJzbDo6
dm9pZF90PHR5cGVuYW1lIE1hcDo6bWFwcGVkX3R5cGU+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9Owor
Cit9ICAvLyBuYW1lc3BhY2UgZ2VuZXJhdG9yX2ludGVybmFsCisKK3N0ZDo6bXQxOTkzN182NCog
R2V0VGhyZWFkTG9jYWxSbmcoKTsKKworZW51bSBFbnVtIHsKKyAga0VudW1FbXB0eSwKKyAga0Vu
dW1EZWxldGVkLAorfTsKKworZW51bSBjbGFzcyBFbnVtQ2xhc3MgOiB1aW50NjRfdCB7CisgIGtF
bXB0eSwKKyAga0RlbGV0ZWQsCit9OworCitpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KHN0ZDo6b3N0cmVhbSYgbywgY29uc3QgRW51bUNsYXNzJiBlYykgeworICByZXR1cm4gbyA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oZWMpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3Mg
RSA9IHZvaWQ+CitzdHJ1Y3QgR2VuZXJhdG9yOworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVj
dCBHZW5lcmF0b3I8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxU
Pjo6dmFsdWU+Ojp0eXBlPiB7CisgIFQgb3BlcmF0b3IoKSgpIGNvbnN0IHsKKyAgICBzdGQ6OnVu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUPiBkaXN0OworICAgIHJldHVybiBkaXN0KCpHZXRUaHJl
YWRMb2NhbFJuZygpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBHZW5lcmF0b3I8
RW51bT4geworICBFbnVtIG9wZXJhdG9yKCkoKSBjb25zdCB7CisgICAgc3RkOjp1bmlmb3JtX2lu
dF9kaXN0cmlidXRpb248dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bT46OnR5cGU+
CisgICAgICAgIGRpc3Q7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIGF1dG8gdmFyaWF0ZSA9
IGRpc3QoKkdldFRocmVhZExvY2FsUm5nKCkpOworICAgICAgaWYgKHZhcmlhdGUgIT0ga0VudW1F
bXB0eSAmJiB2YXJpYXRlICE9IGtFbnVtRGVsZXRlZCkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEVudW0+KHZhcmlhdGUpOworICAgIH0KKyAgfQorfTsKKwordGVtcGxhdGUgPD4KK3N0cnVj
dCBHZW5lcmF0b3I8RW51bUNsYXNzPiB7CisgIEVudW1DbGFzcyBvcGVyYXRvcigpKCkgY29uc3Qg
eworICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPAorICAgICAgICB0eXBlbmFtZSBz
dGQ6OnVuZGVybHlpbmdfdHlwZTxFbnVtQ2xhc3M+Ojp0eXBlPgorICAgICAgICBkaXN0OworICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICBFbnVtQ2xhc3MgdmFyaWF0ZSA9IHN0YXRpY19jYXN0PEVu
dW1DbGFzcz4oZGlzdCgqR2V0VGhyZWFkTG9jYWxSbmcoKSkpOworICAgICAgaWYgKHZhcmlhdGUg
IT0gRW51bUNsYXNzOjprRW1wdHkgJiYgdmFyaWF0ZSAhPSBFbnVtQ2xhc3M6OmtEZWxldGVkKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW51bUNsYXNzPih2YXJpYXRlKTsKKyAgICB9Cisg
IH0KK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgR2VuZXJhdG9yPHN0ZDo6c3RyaW5nPiB7Cisg
IHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoKSBjb25zdDsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1
Y3QgR2VuZXJhdG9yPGFic2w6OnN0cmluZ192aWV3PiB7CisgIGFic2w6OnN0cmluZ192aWV3IG9w
ZXJhdG9yKCkoKSBjb25zdDsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgR2VuZXJhdG9yPE5v
blN0YW5kYXJkTGF5b3V0PiB7CisgIE5vblN0YW5kYXJkTGF5b3V0IG9wZXJhdG9yKCkoKSBjb25z
dCB7CisgICAgcmV0dXJuIE5vblN0YW5kYXJkTGF5b3V0KEdlbmVyYXRvcjxzdGQ6OnN0cmluZz4o
KSgpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+CitzdHJ1Y3QgR2Vu
ZXJhdG9yPHN0ZDo6cGFpcjxLLCBWPj4geworICBzdGQ6OnBhaXI8SywgVj4gb3BlcmF0b3IoKSgp
IGNvbnN0IHsKKyAgICByZXR1cm4gc3RkOjpwYWlyPEssIFY+KEdlbmVyYXRvcjx0eXBlbmFtZSBz
dGQ6OmRlY2F5PEs+Ojp0eXBlPigpKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5l
cmF0b3I8dHlwZW5hbWUgc3RkOjpkZWNheTxWPjo6dHlwZT4oKSgpKTsKKyAgfQorfTsKKwordGVt
cGxhdGUgPGNsYXNzLi4uIFRzPgorc3RydWN0IEdlbmVyYXRvcjxzdGQ6OnR1cGxlPFRzLi4uPj4g
eworICBzdGQ6OnR1cGxlPFRzLi4uPiBvcGVyYXRvcigpKCkgY29uc3QgeworICAgIHJldHVybiBz
dGQ6OnR1cGxlPFRzLi4uPihHZW5lcmF0b3I8dHlwZW5hbWUgc3RkOjpkZWNheTxUcz46OnR5cGU+
KCkoKS4uLik7CisgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBVPgorc3RydWN0IEdlbmVyYXRv
cjxVLCBhYnNsOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFUmPigpLmtleSgpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFUmPigp
LnZhbHVlKCkpPj4KKyAgICA6IEdlbmVyYXRvcjxzdGQ6OnBhaXI8CisgICAgICAgICAgdHlwZW5h
bWUgc3RkOjpkZWNheTxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VSY+KCkua2V5KCkpPjo6dHlwZSwK
KyAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmRlY2F5PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxVJj4o
KS52YWx1ZSgpKT46OnR5cGU+PiB7fTsKKwordGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lcj4KK3Vz
aW5nIEdlbmVyYXRlZFR5cGUgPSBkZWNsdHlwZSgKKyAgICBzdGQ6OmRlY2x2YWw8Y29uc3QgR2Vu
ZXJhdG9yPAorICAgICAgICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPGdlbmVyYXRvcl9pbnRl
cm5hbDo6SXNNYXA8Q29udGFpbmVyPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENvbnRhaW5lcjo6a2V5X3R5cGU+Ojp0eXBlPiY+
KCkoKSk7CisKK30gIC8vIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
Y29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFC
U0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hfR0VORVJBVE9SX1RFU1RJTkdfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZm
Yzc2ZWFkN2E2ODQyZTlmY2JjZjMyMDQyZjEyZjdlYWM2ZTlmOTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oCkBAIC0wLDAg
KzEsMTc4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8v
IFV0aWxpdGllcyB0byBoZWxwIHRlc3RzIHZlcmlmeSB0aGF0IGhhc2ggdGFibGVzIHByb3Blcmx5
IGhhbmRsZSBzdGF0ZWZ1bAorLy8gYWxsb2NhdG9ycyBhbmQgaGFzaCBmdW5jdGlvbnMuCisKKyNp
Zm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSF9QT0xJQ1lfVEVTVElOR19IXworI2Rl
ZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIX1BPTElDWV9URVNUSU5HX0hfCisKKyNp
bmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxtZW1vcnk+Cisj
aW5jbHVkZSA8b3N0cmVhbT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1dGls
aXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvaGFzaC9oYXNoLmgiCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25hbWVzcGFjZSBhYnNsIHsK
K25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIGhhc2hfdGVzdGluZ19p
bnRlcm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBEZXJpdmVkPgorc3RydWN0IFdpdGhJZCB7Cisg
IFdpdGhJZCgpIDogaWRfKG5leHRfaWQ8RGVyaXZlZD4oKSkge30KKyAgV2l0aElkKGNvbnN0IFdp
dGhJZCYgdGhhdCkgOiBpZF8odGhhdC5pZF8pIHt9CisgIFdpdGhJZChXaXRoSWQmJiB0aGF0KSA6
IGlkXyh0aGF0LmlkXykgeyB0aGF0LmlkXyA9IDA7IH0KKyAgV2l0aElkJiBvcGVyYXRvcj0oY29u
c3QgV2l0aElkJiB0aGF0KSB7CisgICAgaWRfID0gdGhhdC5pZF87CisgICAgcmV0dXJuICp0aGlz
OworICB9CisgIFdpdGhJZCYgb3BlcmF0b3I9KFdpdGhJZCYmIHRoYXQpIHsKKyAgICBpZF8gPSB0
aGF0LmlkXzsKKyAgICB0aGF0LmlkXyA9IDA7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAg
c2l6ZV90IGlkKCkgY29uc3QgeyByZXR1cm4gaWRfOyB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBXaXRoSWQmIGEsIGNvbnN0IFdpdGhJZCYgYikgeworICAgIHJldHVybiBhLmlk
XyA9PSBiLmlkXzsKKyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdpdGhJZCYg
YSwgY29uc3QgV2l0aElkJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KKworIHByb3RlY3RlZDoK
KyAgZXhwbGljaXQgV2l0aElkKHNpemVfdCBpZCkgOiBpZF8oaWQpIHt9CisKKyBwcml2YXRlOgor
ICBzaXplX3QgaWRfOworCisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICBzdGF0aWMgc2l6ZV90IG5l
eHRfaWQoKSB7CisgICAgLy8gMCBpcyByZXNlcnZlZCBmb3IgbW92ZWQgZnJvbSBzdGF0ZS4KKyAg
ICBzdGF0aWMgc2l6ZV90IGdJZCA9IDE7CisgICAgcmV0dXJuIGdJZCsrOworICB9Cit9OworCit9
ICAvLyBuYW1lc3BhY2UgaGFzaF90ZXN0aW5nX2ludGVybmFsCisKK3N0cnVjdCBOb25TdGFuZGFy
ZExheW91dCB7CisgIE5vblN0YW5kYXJkTGF5b3V0KCkge30KKyAgZXhwbGljaXQgTm9uU3RhbmRh
cmRMYXlvdXQoc3RkOjpzdHJpbmcgcykgOiB2YWx1ZShzdGQ6Om1vdmUocykpIHt9CisgIHZpcnR1
YWwgfk5vblN0YW5kYXJkTGF5b3V0KCkge30KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE5vblN0YW5kYXJkTGF5b3V0JiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IE5vblN0YW5kYXJkTGF5b3V0JiBiKSB7CisgICAgcmV0dXJuIGEudmFsdWUgPT0gYi52YWx1ZTsK
KyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vblN0YW5kYXJkTGF5b3V0JiBh
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5vblN0YW5kYXJkTGF5b3V0JiBiKSB7
CisgICAgcmV0dXJuIGEudmFsdWUgIT0gYi52YWx1ZTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgY29uc3QgTm9uU3RhbmRhcmRM
YXlvdXQmIHYpIHsKKyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIHYudmFsdWUp
OworICB9CisKKyAgc3RkOjpzdHJpbmcgdmFsdWU7Cit9OworCitzdHJ1Y3QgU3RhdGVmdWxUZXN0
aW5nSGFzaAorICAgIDogYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX3Rlc3RpbmdfaW50
ZXJuYWw6OldpdGhJZDwKKyAgICAgICAgICBTdGF0ZWZ1bFRlc3RpbmdIYXNoPiB7CisgIHRlbXBs
YXRlIDxjbGFzcyBUPgorICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBUJiB0KSBjb25zdCB7Cisg
ICAgcmV0dXJuIGFic2w6Okhhc2g8VD57fSh0KTsKKyAgfQorfTsKKworc3RydWN0IFN0YXRlZnVs
VGVzdGluZ0VxdWFsCisgICAgOiBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfdGVzdGlu
Z19pbnRlcm5hbDo6V2l0aElkPAorICAgICAgICAgIFN0YXRlZnVsVGVzdGluZ0VxdWFsPiB7Cisg
IHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgorICBib29sIG9wZXJhdG9yKCkoY29uc3QgVCYg
dCwgY29uc3QgVSYgdSkgY29uc3QgeworICAgIHJldHVybiB0ID09IHU7CisgIH0KK307CisKKy8v
IEl0IGlzIGV4cGVjdGVkIHRoYXQgQWxsb2MoKSA9PSBBbGxvYygpIGZvciBhbGwgYWxsb2NhdG9y
cyBzbyB3ZSBjYW5ub3QgdXNlCisvLyBXaXRoSWQgYmFzZS4gV2UgbmVlZCB0byBleHBsaWNpdGx5
IGFzc2lnbiBpZHMuCit0ZW1wbGF0ZSA8Y2xhc3MgVCA9IGludD4KK3N0cnVjdCBBbGxvYyA6IHN0
ZDo6YWxsb2NhdG9yPFQ+IHsKKyAgdXNpbmcgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwID0g
c3RkOjp0cnVlX3R5cGU7CisKKyAgLy8gVXNpbmcgb2xkIHBhcmFkaWdtIGZvciB0aGlzIHRvIGVu
c3VyZSBjb21wYXRpYmlsaXR5LgorICBleHBsaWNpdCBBbGxvYyhzaXplX3QgaWQgPSAwKSA6IGlk
XyhpZCkge30KKworICBBbGxvYyhjb25zdCBBbGxvYyYpID0gZGVmYXVsdDsKKyAgQWxsb2MmIG9w
ZXJhdG9yPShjb25zdCBBbGxvYyYpID0gZGVmYXVsdDsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgVT4K
KyAgQWxsb2MoY29uc3QgQWxsb2M8VT4mIHRoYXQpIDogc3RkOjphbGxvY2F0b3I8VD4odGhhdCks
IGlkXyh0aGF0LmlkKCkpIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFU+CisgIHN0cnVjdCByZWJp
bmQgeworICAgIHVzaW5nIG90aGVyID0gQWxsb2M8VT47CisgIH07CisKKyAgc2l6ZV90IGlkKCkg
Y29uc3QgeyByZXR1cm4gaWRfOyB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBB
bGxvYyYgYSwgY29uc3QgQWxsb2MmIGIpIHsKKyAgICByZXR1cm4gYS5pZF8gPT0gYi5pZF87Cisg
IH0KKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBbGxvYyYgYSwgY29uc3QgQWxsb2Mm
IGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQorCisgcHJpdmF0ZToKKyAgc2l6ZV90IGlkXyA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3Mg
TWFwPgorYXV0byBpdGVtcyhjb25zdCBNYXAmIG0pIC0+IHN0ZDo6dmVjdG9yPAorICAgIHN0ZDo6
cGFpcjx0eXBlbmFtZSBNYXA6OmtleV90eXBlLCB0eXBlbmFtZSBNYXA6Om1hcHBlZF90eXBlPj4g
eworICB1c2luZyBzdGQ6OmdldDsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHR5cGVuYW1lIE1h
cDo6a2V5X3R5cGUsIHR5cGVuYW1lIE1hcDo6bWFwcGVkX3R5cGU+PiByZXM7CisgIHJlcy5yZXNl
cnZlKG0uc2l6ZSgpKTsKKyAgZm9yIChjb25zdCBhdXRvJiB2IDogbSkgcmVzLmVtcGxhY2VfYmFj
ayhnZXQ8MD4odiksIGdldDwxPih2KSk7CisgIHJldHVybiByZXM7Cit9CisKK3RlbXBsYXRlIDxj
bGFzcyBTZXQ+CithdXRvIGtleXMoY29uc3QgU2V0JiBzKQorICAgIC0+IHN0ZDo6dmVjdG9yPHR5
cGVuYW1lIHN0ZDo6ZGVjYXk8dHlwZW5hbWUgU2V0OjprZXlfdHlwZT46OnR5cGU+IHsKKyAgc3Rk
Ojp2ZWN0b3I8dHlwZW5hbWUgc3RkOjpkZWNheTx0eXBlbmFtZSBTZXQ6OmtleV90eXBlPjo6dHlw
ZT4gcmVzOworICByZXMucmVzZXJ2ZShzLnNpemUoKSk7CisgIGZvciAoY29uc3QgYXV0byYgdiA6
IHMpIHJlcy5lbXBsYWNlX2JhY2sodik7CisgIHJldHVybiByZXM7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKy8vIEFCU0xf
VU5PUkRFUkVEX1NVUFBPUlRTX0FMTE9DX0NUT1JTIGlzIGZhbHNlIGZvciBnbGliY3h4IHZlcnNp
b25zCisvLyB3aGVyZSB0aGUgdW5vcmRlcmVkIGNvbnRhaW5lcnMgYXJlIG1pc3NpbmcgY2VydGFp
biBjb25zdHJ1Y3RvcnMgdGhhdAorLy8gdGFrZSBhbGxvY2F0b3IgYXJndW1lbnRzLiBUaGlzIHRl
c3QgaXMgZGVmaW5lZCBhZC1ob2MgZm9yIHRoZSBwbGF0Zm9ybXMKKy8vIHdlIGNhcmUgYWJvdXQg
KG5vdGFibHkgQ3Jvc3N0b29sIDE3KSBiZWNhdXNlIGxpYnN0ZGN4eCdzIHVzZWxlc3MKKy8vIHZl
cnNpb25pbmcgc2NoZW1lIHByZWNsdWRlcyBhIG1vcmUgcHJpbmNpcGxlZCBzb2x1dGlvbi4KKyNp
ZiBkZWZpbmVkKF9fR0xJQkNYWF9fKSAmJiBfX0dMSUJDWFhfXyA8PSAyMDE0MDQyNQorI2RlZmlu
ZSBBQlNMX1VOT1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUyAwCisjZWxzZQorI2RlZmluZSBB
QlNMX1VOT1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUyAxCisjZW5kaWYKKworI2VuZGlmICAv
LyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIX1BPTElDWV9URVNUSU5HX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZ190ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmdfdGVzdC5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMjE1YzQyMzdhZTU1MTY4NmRkODI0ZDQyZGE3Y2ZiOTNiMGNlOTE1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3Rp
bmdfdGVzdC5jYwpAQCAtMCwwICsxLDQzIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xp
Y3lfdGVzdGluZy5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCitURVNU
KF8sIEhhc2gpIHsKKyAgU3RhdGVmdWxUZXN0aW5nSGFzaCBoMTsKKyAgRVhQRUNUX0VRKDEsIGgx
LmlkKCkpOworICBTdGF0ZWZ1bFRlc3RpbmdIYXNoIGgyOworICBFWFBFQ1RfRVEoMiwgaDIuaWQo
KSk7CisgIFN0YXRlZnVsVGVzdGluZ0hhc2ggaDFjKGgxKTsKKyAgRVhQRUNUX0VRKDEsIGgxYy5p
ZCgpKTsKKyAgU3RhdGVmdWxUZXN0aW5nSGFzaCBoMm0oc3RkOjptb3ZlKGgyKSk7CisgIEVYUEVD
VF9FUSgyLCBoMm0uaWQoKSk7CisgIEVYUEVDVF9FUSgwLCBoMi5pZCgpKTsKKyAgU3RhdGVmdWxU
ZXN0aW5nSGFzaCBoMzsKKyAgRVhQRUNUX0VRKDMsIGgzLmlkKCkpOworICBoMyA9IFN0YXRlZnVs
VGVzdGluZ0hhc2goKTsKKyAgRVhQRUNUX0VRKDQsIGgzLmlkKCkpOworICBoMyA9IHN0ZDo6bW92
ZShoMSk7CisgIEVYUEVDVF9FUSgxLCBoMy5pZCgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCit9
ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAyOWU0N2UxNzVjOWRmYWUzNTI0YjdjYjE1MzkzMTAyNmRlNWJmOTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzLmgKQEAg
LTAsMCArMSwxODkgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisK
KyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSF9QT0xJQ1lfVFJBSVRTX0hfCisj
ZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hfUE9MSUNZX1RSQUlUU19IXworCisj
aW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0
cy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsK
KworLy8gRGVmaW5lcyBob3cgc2xvdHMgYXJlIGluaXRpYWxpemVkL2Rlc3Ryb3llZC9tb3ZlZC4K
K3RlbXBsYXRlIDxjbGFzcyBQb2xpY3ksIGNsYXNzID0gdm9pZD4KK3N0cnVjdCBoYXNoX3BvbGlj
eV90cmFpdHMgeworIHByaXZhdGU6CisgIHN0cnVjdCBSZXR1cm5LZXkgeworICAgIC8vIFdlIHJl
dHVybiBgS2V5YCBoZXJlLgorICAgIC8vIFdoZW4gS2V5PVQmLCB3ZSBmb3J3YXJkIHRoZSBsdmFs
dWUgcmVmZXJlbmNlLgorICAgIC8vIFdoZW4gS2V5PVQsIHdlIHJldHVybiBieSB2YWx1ZSB0byBh
dm9pZCBhIGRhbmdsaW5nIHJlZmVyZW5jZS4KKyAgICAvLyBlZywgZm9yIHN0cmluZ19oYXNoX21h
cC4KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcy4uLiBBcmdzPgorICAgIEtleSBvcGVy
YXRvcigpKEtleSYmIGssIGNvbnN0IEFyZ3MmLi4uKSBjb25zdCB7CisgICAgICByZXR1cm4gc3Rk
Ojpmb3J3YXJkPEtleT4oayk7CisgICAgfQorICB9OworCisgIHRlbXBsYXRlIDxjbGFzcyBQID0g
UG9saWN5LCBjbGFzcyA9IHZvaWQ+CisgIHN0cnVjdCBDb25zdGFudEl0ZXJhdG9yc0ltcGwgOiBz
dGQ6OmZhbHNlX3R5cGUge307CisKKyAgdGVtcGxhdGUgPGNsYXNzIFA+CisgIHN0cnVjdCBDb25z
dGFudEl0ZXJhdG9yc0ltcGw8UCwgYWJzbDo6dm9pZF90PHR5cGVuYW1lIFA6OmNvbnN0YW50X2l0
ZXJhdG9ycz4+CisgICAgICA6IFA6OmNvbnN0YW50X2l0ZXJhdG9ycyB7fTsKKworIHB1YmxpYzoK
KyAgLy8gVGhlIGFjdHVhbCBvYmplY3Qgc3RvcmVkIGluIHRoZSBoYXNoIHRhYmxlLgorICB1c2lu
ZyBzbG90X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3k6OnNsb3RfdHlwZTsKKworICAvLyBUaGUgdHlw
ZSBvZiB0aGUga2V5cyBzdG9yZWQgaW4gdGhlIGhhc2h0YWJsZS4KKyAgdXNpbmcga2V5X3R5cGUg
PSB0eXBlbmFtZSBQb2xpY3k6OmtleV90eXBlOworCisgIC8vIFRoZSBhcmd1bWVudCB0eXBlIGZv
ciBpbnNlcnRpb25zIGludG8gdGhlIGhhc2h0YWJsZS4gVGhpcyBpcyBkaWZmZXJlbnQKKyAgLy8g
ZnJvbSB2YWx1ZV90eXBlIGZvciBpbmNyZWFzZWQgcGVyZm9ybWFuY2UuIFNlZSBpbml0aWFsaXpl
cl9saXN0IGNvbnN0cnVjdG9yCisgIC8vIGFuZCBpbnNlcnQoKSBtZW1iZXIgZnVuY3Rpb25zIGZv
ciBtb3JlIGRldGFpbHMuCisgIHVzaW5nIGluaXRfdHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6aW5p
dF90eXBlOworCisgIHVzaW5nIHJlZmVyZW5jZSA9IGRlY2x0eXBlKFBvbGljeTo6ZWxlbWVudChz
dGQ6OmRlY2x2YWw8c2xvdF90eXBlKj4oKSkpOworICB1c2luZyBwb2ludGVyID0gdHlwZW5hbWUg
c3RkOjpyZW1vdmVfcmVmZXJlbmNlPHJlZmVyZW5jZT46OnR5cGUqOworICB1c2luZyB2YWx1ZV90
eXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPHJlZmVyZW5jZT46OnR5cGU7CisK
KyAgLy8gUG9saWNpZXMgY2FuIHNldCB0aGlzIHZhcmlhYmxlIHRvIHRlbGwgcmF3X2hhc2hfc2V0
IHRoYXQgYWxsIGl0ZXJhdG9ycworICAvLyBzaG91bGQgYmUgY29uc3RhbnQsIGV2ZW4gYGl0ZXJh
dG9yYC4gVGhpcyBpcyB1c2VmdWwgZm9yIHNldC1saWtlCisgIC8vIGNvbnRhaW5lcnMuCisgIC8v
IERlZmF1bHRzIHRvIGZhbHNlIGlmIG5vdCBwcm92aWRlZCBieSB0aGUgcG9saWN5LgorICB1c2lu
ZyBjb25zdGFudF9pdGVyYXRvcnMgPSBDb25zdGFudEl0ZXJhdG9yc0ltcGw8PjsKKworICAvLyBQ
UkVDT05ESVRJT046IGBzbG90YCBpcyBVTklOSVRJQUxJWkVECisgIC8vIFBPU1RDT05ESVRJT046
IGBzbG90YCBpcyBJTklUSUFMSVpFRAorICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2MsIGNsYXNzLi4u
IEFyZ3M+CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvYyogYWxsb2MsIHNsb3RfdHlwZSog
c2xvdCwgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICBQb2xpY3k6OmNvbnN0cnVjdChhbGxvYywgc2xv
dCwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIC8vIFBSRUNPTkRJVElP
TjogYHNsb3RgIGlzIElOSVRJQUxJWkVECisgIC8vIFBPU1RDT05ESVRJT046IGBzbG90YCBpcyBV
TklOSVRJQUxJWkVECisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvYz4KKyAgc3RhdGljIHZvaWQgZGVz
dHJveShBbGxvYyogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCkgeworICAgIFBvbGljeTo6ZGVzdHJv
eShhbGxvYywgc2xvdCk7CisgIH0KKworICAvLyBUcmFuc2ZlcnMgdGhlIGBvbGRfc2xvdGAgdG8g
YG5ld19zbG90YC4gQW55IG1lbW9yeSBhbGxvY2F0ZWQgYnkgdGhlCisgIC8vIGFsbG9jYXRvciBp
bnNpZGUgYG9sZF9zbG90YCB0byBgbmV3X3Nsb3RgIGNhbiBiZSB0cmFuc2ZlcmVkLgorICAvLwor
ICAvLyBPUFRJT05BTDogZGVmYXVsdHMgdG86CisgIC8vCisgIC8vICAgICBjbG9uZShuZXdfc2xv
dCwgc3RkOjptb3ZlKCpvbGRfc2xvdCkpOworICAvLyAgICAgZGVzdHJveShvbGRfc2xvdCk7Cisg
IC8vCisgIC8vIFBSRUNPTkRJVElPTjogYG5ld19zbG90YCBpcyBVTklOSVRJQUxJWkVEIGFuZCBg
b2xkX3Nsb3RgIGlzIElOSVRJQUxJWkVECisgIC8vIFBPU1RDT05ESVRJT046IGBuZXdfc2xvdGAg
aXMgSU5JVElBTElaRUQgYW5kIGBvbGRfc2xvdGAgaXMKKyAgLy8gICAgICAgICAgICAgICAgVU5J
TklUSUFMSVpFRAorICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2M+CisgIHN0YXRpYyB2b2lkIHRyYW5z
ZmVyKEFsbG9jKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwgc2xvdF90eXBlKiBvbGRfc2xv
dCkgeworICAgIHRyYW5zZmVyX2ltcGwoYWxsb2MsIG5ld19zbG90LCBvbGRfc2xvdCwgMCk7Cisg
IH0KKworICAvLyBQUkVDT05ESVRJT046IGBzbG90YCBpcyBJTklUSUFMSVpFRAorICAvLyBQT1NU
Q09ORElUSU9OOiBgc2xvdGAgaXMgSU5JVElBTElaRUQKKyAgdGVtcGxhdGUgPGNsYXNzIFAgPSBQ
b2xpY3k+CisgIHN0YXRpYyBhdXRvIGVsZW1lbnQoc2xvdF90eXBlKiBzbG90KSAtPiBkZWNsdHlw
ZShQOjplbGVtZW50KHNsb3QpKSB7CisgICAgcmV0dXJuIFA6OmVsZW1lbnQoc2xvdCk7CisgIH0K
KworICAvLyBSZXR1cm5zIHRoZSBhbW91bnQgb2YgbWVtb3J5IG93bmVkIGJ5IGBzbG90YCwgZXhj
bHVzaXZlIG9mIGBzaXplb2YoKnNsb3QpYC4KKyAgLy8KKyAgLy8gSWYgYHNsb3RgIGlzIG51bGxw
dHIsIHJldHVybnMgdGhlIGNvbnN0YW50IGFtb3VudCBvZiBtZW1vcnkgb3duZWQgYnkgYW55Cisg
IC8vIGZ1bGwgc2xvdCBvciAtMSBpZiBzbG90cyBvd24gdmFyaWFibGUgYW1vdW50cyBvZiBtZW1v
cnkuCisgIC8vCisgIC8vIFBSRUNPTkRJVElPTjogYHNsb3RgIGlzIElOSVRJQUxJWkVEIG9yIG51
bGxwdHIKKyAgdGVtcGxhdGUgPGNsYXNzIFAgPSBQb2xpY3k+CisgIHN0YXRpYyBzaXplX3Qgc3Bh
Y2VfdXNlZChjb25zdCBzbG90X3R5cGUqIHNsb3QpIHsKKyAgICByZXR1cm4gUDo6c3BhY2VfdXNl
ZChzbG90KTsKKyAgfQorCisgIC8vIFByb3ZpZGVzIGdlbmVyYWxpemVkIGFjY2VzcyB0byB0aGUg
a2V5IGZvciBlbGVtZW50cywgYm90aCBmb3IgZWxlbWVudHMgaW4KKyAgLy8gdGhlIHRhYmxlIGFu
ZCBmb3IgZWxlbWVudHMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBpbnNlcnRlZCAob3IgZXZlbgor
ICAvLyBjb25zdHJ1Y3RlZCkuICBXZSB3b3VsZCBsaWtlIGFuIEFQSSB0aGF0IGFsbG93cyB1cyB0
byBzYXk6IGBrZXkoYXJncy4uLilgCisgIC8vIGJ1dCB3ZSBjYW5ub3QgZG8gdGhhdCBmb3IgYWxs
IGNhc2VzLCBzbyB3ZSB1c2UgdGhpcyBtb3JlIGdlbmVyYWwgQVBJIHRoYXQKKyAgLy8gY2FuIGJl
IHVzZWQgZm9yIG1hbnkgdGhpbmdzLCBpbmNsdWRpbmcgdGhlIGZvbGxvd2luZzoKKyAgLy8KKyAg
Ly8gICAtIEdpdmVuIGFuIGVsZW1lbnQgaW4gYSB0YWJsZSwgZ2V0IGl0cyBrZXkuCisgIC8vICAg
LSBHaXZlbiBhbiBlbGVtZW50IGluaXRpYWxpemVyLCBnZXQgaXRzIGtleS4KKyAgLy8gICAtIEdp
dmVuIGBlbXBsYWNlKClgIGFyZ3VtZW50cywgZ2V0IHRoZSBlbGVtZW50IGtleS4KKyAgLy8KKyAg
Ly8gSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbXVzdCBhZGhlcmUgdG8gYSB2ZXJ5IHN0cmljdCB0
ZWNobmljYWwKKyAgLy8gc3BlY2lmaWNhdGlvbiBhcm91bmQgYWxpYXNpbmcgYW5kIGNvbnN1bWlu
ZyBhcmd1bWVudHM6CisgIC8vCisgIC8vIExldCBgdmFsdWVfdHlwZWAgYmUgdGhlIHJlc3VsdCB0
eXBlIG9mIGBlbGVtZW50KClgIHdpdGhvdXQgcmVmLSBhbmQKKyAgLy8gY3YtcXVhbGlmaWVycy4g
VGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgZnVuY3RvciwgdGhlIHJlc3QgYXJlIGNvbnN0cnVjdG9y
CisgIC8vIGFyZ3VtZW50cyBmb3IgYHZhbHVlX3R5cGVgLiBSZXR1cm5zIGBzdGQ6OmZvcndhcmQ8
Rj4oZikoaywgeHMuLi4pYCwgd2hlcmUKKyAgLy8gYGtgIGlzIHRoZSBlbGVtZW50IGtleSwgYW5k
IGB4cy4uLmAgYXJlIHRoZSBuZXcgY29uc3RydWN0b3IgYXJndW1lbnRzIGZvcgorICAvLyBgdmFs
dWVfdHlwZWAuIEl0J3MgYWxsb3dlZCBmb3IgYGtgIHRvIGFsaWFzIGB4cy4uLmAsIGFuZCBmb3Ig
Ym90aCB0byBhbGlhcworICAvLyBgdHMuLi5gLiBUaGUga2V5IHdvbid0IGJlIHRvdWNoZWQgb25j
ZSBgeHMuLi5gIGFyZSB1c2VkIHRvIGNvbnN0cnVjdCBhbgorICAvLyBlbGVtZW50OyBgdHMuLi5g
IHdvbid0IGJlIHRvdWNoZWQgYXQgYWxsLCB3aGljaCBhbGxvd3MgYGFwcGx5KClgIHRvIGNvbnN1
bWUKKyAgLy8gYW55IHJ2YWx1ZXMgYW1vbmcgdGhlbS4KKyAgLy8KKyAgLy8gSWYgYHZhbHVlX3R5
cGVgIGlzIGNvbnN0cnVjdGlibGUgZnJvbSBgVHMmJi4uLmAsIGBQb2xpY3k6OmFwcGx5KClgIG11
c3Qgbm90CisgIC8vIHRyaWdnZXIgYSBoYXJkIGNvbXBpbGUgZXJyb3IgdW5sZXNzIGl0IG9yaWdp
bmF0ZXMgZnJvbSBgZmAuIEluIG90aGVyIHdvcmRzLAorICAvLyBgUG9saWN5OjphcHBseSgpYCBt
dXN0IGJlIFNGSU5BRS1mcmllbmRseS4gSWYgYHZhbHVlX3R5cGVgIGlzIG5vdAorICAvLyBjb25z
dHJ1Y3RpYmxlIGZyb20gYFRzJiYuLi5gLCBlaXRoZXIgU0ZJTkFFIG9yIGEgaGFyZCBjb21waWxl
IGVycm9yIGlzIE9LLgorICAvLworICAvLyBJZiBgVHMuLi5gIGlzIGBbY3ZdIHZhbHVlX3R5cGVb
Jl1gIG9yIGBbY3ZdIGluaXRfdHlwZVsmXWAsCisgIC8vIGBQb2xpY3k6OmFwcGx5KClgIG11c3Qg
d29yay4gQSBjb21waWxlIGVycm9yIGlzIG5vdCBhbGxvd2VkLCBTRklOQUUgb3Igbm90LgorICB0
ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MuLi4gVHMsIGNsYXNzIFAgPSBQb2xpY3k+CisgIHN0YXRp
YyBhdXRvIGFwcGx5KEYmJiBmLCBUcyYmLi4uIHRzKQorICAgICAgLT4gZGVjbHR5cGUoUDo6YXBw
bHkoc3RkOjpmb3J3YXJkPEY+KGYpLCBzdGQ6OmZvcndhcmQ8VHM+KHRzKS4uLikpIHsKKyAgICBy
ZXR1cm4gUDo6YXBwbHkoc3RkOjpmb3J3YXJkPEY+KGYpLCBzdGQ6OmZvcndhcmQ8VHM+KHRzKS4u
Lik7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSAia2V5IiBwb3J0aW9uIG9mIHRoZSBzbG90Lgor
ICAvLyBVc2VkIGZvciBub2RlIGhhbmRsZSBtYW5pcHVsYXRpb24uCisgIHRlbXBsYXRlIDxjbGFz
cyBQID0gUG9saWN5PgorICBzdGF0aWMgYXV0byBrZXkoc2xvdF90eXBlKiBzbG90KQorICAgICAg
LT4gZGVjbHR5cGUoUDo6YXBwbHkoUmV0dXJuS2V5KCksIGVsZW1lbnQoc2xvdCkpKSB7CisgICAg
cmV0dXJuIFA6OmFwcGx5KFJldHVybktleSgpLCBlbGVtZW50KHNsb3QpKTsKKyAgfQorCisgIC8v
IFJldHVybnMgdGhlICJ2YWx1ZSIgKGFzIG9wcG9zZWQgdG8gdGhlICJrZXkiKSBwb3J0aW9uIG9m
IHRoZSBlbGVtZW50LiBVc2VkCisgIC8vIGJ5IG1hcHMgdG8gaW1wbGVtZW50IGBvcGVyYXRvcltd
YCwgYGF0KClgIGFuZCBgaW5zZXJ0X29yX2Fzc2lnbigpYC4KKyAgdGVtcGxhdGUgPGNsYXNzIFQs
IGNsYXNzIFAgPSBQb2xpY3k+CisgIHN0YXRpYyBhdXRvIHZhbHVlKFQqIGVsZW0pIC0+IGRlY2x0
eXBlKFA6OnZhbHVlKGVsZW0pKSB7CisgICAgcmV0dXJuIFA6OnZhbHVlKGVsZW0pOworICB9CisK
KyBwcml2YXRlOgorICAvLyBVc2UgYXV0byAtPiBkZWNsdHlwZSBhcyBhbiBlbmFibGVyLgorICB0
ZW1wbGF0ZSA8Y2xhc3MgQWxsb2MsIGNsYXNzIFAgPSBQb2xpY3k+CisgIHN0YXRpYyBhdXRvIHRy
YW5zZmVyX2ltcGwoQWxsb2MqIGFsbG9jLCBzbG90X3R5cGUqIG5ld19zbG90LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNsb3RfdHlwZSogb2xkX3Nsb3QsIGludCkKKyAgICAgIC0+IGRl
Y2x0eXBlKCh2b2lkKVA6OnRyYW5zZmVyKGFsbG9jLCBuZXdfc2xvdCwgb2xkX3Nsb3QpKSB7Cisg
ICAgUDo6dHJhbnNmZXIoYWxsb2MsIG5ld19zbG90LCBvbGRfc2xvdCk7CisgIH0KKyAgdGVtcGxh
dGUgPGNsYXNzIEFsbG9jPgorICBzdGF0aWMgdm9pZCB0cmFuc2Zlcl9pbXBsKEFsbG9jKiBhbGxv
Yywgc2xvdF90eXBlKiBuZXdfc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG90
X3R5cGUqIG9sZF9zbG90LCBjaGFyKSB7CisgICAgY29uc3RydWN0KGFsbG9jLCBuZXdfc2xvdCwg
c3RkOjptb3ZlKGVsZW1lbnQob2xkX3Nsb3QpKSk7CisgICAgZGVzdHJveShhbGxvYywgb2xkX3Ns
b3QpOworICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAv
LyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hB
U0hfUE9MSUNZX1RSQUlUU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L2hhc2hfcG9saWN5X3RyYWl0c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hh
c2hfcG9saWN5X3RyYWl0c190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyM2YxNTQ4ZTdjYTEzOGVlNWFj
YTA5MjQyYWZkM2JjNGY5NzJiMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzX3Rlc3QuY2MKQEAgLTAsMCArMSwxNDIgQEAKKy8v
IENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaCIKKworI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPG5ldz4KKworI2luY2x1ZGUgImdt
b2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIGFic2wg
eworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCit1c2luZyA6
OnRlc3Rpbmc6Ok1vY2tGdW5jdGlvbjsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwordXNpbmcg
Ojp0ZXN0aW5nOjpSZXR1cm5SZWY7CisKK3VzaW5nIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8aW50
PjsKK3VzaW5nIFNsb3QgPSBpbnQ7CisKK3N0cnVjdCBQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHMg
eworICB1c2luZyBzbG90X3R5cGUgPSBTbG90OworICB1c2luZyBrZXlfdHlwZSA9IFNsb3Q7Cisg
IHVzaW5nIGluaXRfdHlwZSA9IFNsb3Q7CisKKyAgc3RhdGljIHN0ZDo6ZnVuY3Rpb248dm9pZCh2
b2lkKiwgU2xvdCosIFNsb3QpPiBjb25zdHJ1Y3Q7CisgIHN0YXRpYyBzdGQ6OmZ1bmN0aW9uPHZv
aWQodm9pZCosIFNsb3QqKT4gZGVzdHJveTsKKworICBzdGF0aWMgc3RkOjpmdW5jdGlvbjxTbG90
JihTbG90Kik+IGVsZW1lbnQ7CisgIHN0YXRpYyBpbnQgYXBwbHkoaW50IHYpIHsgcmV0dXJuIGFw
cGx5X2ltcGwodik7IH0KKyAgc3RhdGljIHN0ZDo6ZnVuY3Rpb248aW50KGludCk+IGFwcGx5X2lt
cGw7CisgIHN0YXRpYyBzdGQ6OmZ1bmN0aW9uPFNsb3QmKFNsb3QqKT4gdmFsdWU7Cit9OworCitz
dGQ6OmZ1bmN0aW9uPHZvaWQodm9pZCosIFNsb3QqLCBTbG90KT4gUG9saWN5V2l0aG91dE9wdGlv
bmFsT3BzOjpjb25zdHJ1Y3Q7CitzdGQ6OmZ1bmN0aW9uPHZvaWQodm9pZCosIFNsb3QqKT4gUG9s
aWN5V2l0aG91dE9wdGlvbmFsT3BzOjpkZXN0cm95OworCitzdGQ6OmZ1bmN0aW9uPFNsb3QmKFNs
b3QqKT4gUG9saWN5V2l0aG91dE9wdGlvbmFsT3BzOjplbGVtZW50Oworc3RkOjpmdW5jdGlvbjxp
bnQoaW50KT4gUG9saWN5V2l0aG91dE9wdGlvbmFsT3BzOjphcHBseV9pbXBsOworc3RkOjpmdW5j
dGlvbjxTbG90JihTbG90Kik+IFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6dmFsdWU7CisKK3N0
cnVjdCBQb2xpY3lXaXRoT3B0aW9uYWxPcHMgOiBQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHMgewor
ICBzdGF0aWMgc3RkOjpmdW5jdGlvbjx2b2lkKHZvaWQqLCBTbG90KiwgU2xvdCopPiB0cmFuc2Zl
cjsKK307CisKK3N0ZDo6ZnVuY3Rpb248dm9pZCh2b2lkKiwgU2xvdCosIFNsb3QqKT4gUG9saWN5
V2l0aE9wdGlvbmFsT3BzOjp0cmFuc2ZlcjsKKworc3RydWN0IFRlc3QgOiA6OnRlc3Rpbmc6OlRl
c3QgeworICBUZXN0KCkgeworICAgIFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6Y29uc3RydWN0
ID0gWyZdKHZvaWQqIGExLCBTbG90KiBhMiwgU2xvdCBhMykgeworICAgICAgY29uc3RydWN0LkNh
bGwoYTEsIGEyLCBzdGQ6Om1vdmUoYTMpKTsKKyAgICB9OworICAgIFBvbGljeVdpdGhvdXRPcHRp
b25hbE9wczo6ZGVzdHJveSA9IFsmXSh2b2lkKiBhMSwgU2xvdCogYTIpIHsKKyAgICAgIGRlc3Ry
b3kuQ2FsbChhMSwgYTIpOworICAgIH07CisKKyAgICBQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHM6
OmVsZW1lbnQgPSBbJl0oU2xvdCogYTEpIC0+IFNsb3QmIHsKKyAgICAgIHJldHVybiBlbGVtZW50
LkNhbGwoYTEpOworICAgIH07CisgICAgUG9saWN5V2l0aG91dE9wdGlvbmFsT3BzOjphcHBseV9p
bXBsID0gWyZdKGludCBhMSkgLT4gaW50IHsKKyAgICAgIHJldHVybiBhcHBseS5DYWxsKGExKTsK
KyAgICB9OworICAgIFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6dmFsdWUgPSBbJl0oU2xvdCog
YTEpIC0+IFNsb3QmIHsKKyAgICAgIHJldHVybiB2YWx1ZS5DYWxsKGExKTsKKyAgICB9OworCisg
ICAgUG9saWN5V2l0aE9wdGlvbmFsT3BzOjp0cmFuc2ZlciA9IFsmXSh2b2lkKiBhMSwgU2xvdCog
YTIsIFNsb3QqIGEzKSB7CisgICAgICByZXR1cm4gdHJhbnNmZXIuQ2FsbChhMSwgYTIsIGEzKTsK
KyAgICB9OworICB9CisKKyAgc3RkOjphbGxvY2F0b3I8aW50PiBhbGxvYzsKKyAgaW50IGEgPSA1
MzsKKworICBNb2NrRnVuY3Rpb248dm9pZCh2b2lkKiwgU2xvdCosIFNsb3QpPiBjb25zdHJ1Y3Q7
CisgIE1vY2tGdW5jdGlvbjx2b2lkKHZvaWQqLCBTbG90Kik+IGRlc3Ryb3k7CisKKyAgTW9ja0Z1
bmN0aW9uPFNsb3QmKFNsb3QqKT4gZWxlbWVudDsKKyAgTW9ja0Z1bmN0aW9uPGludChpbnQpPiBh
cHBseTsKKyAgTW9ja0Z1bmN0aW9uPFNsb3QmKFNsb3QqKT4gdmFsdWU7CisKKyAgTW9ja0Z1bmN0
aW9uPHZvaWQodm9pZCosIFNsb3QqLCBTbG90Kik+IHRyYW5zZmVyOworfTsKKworVEVTVF9GKFRl
c3QsIGNvbnN0cnVjdCkgeworICBFWFBFQ1RfQ0FMTChjb25zdHJ1Y3QsIENhbGwoJmFsbG9jLCAm
YSwgNTMpKTsKKyAgaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeVdpdGhvdXRPcHRpb25hbE9wcz46
OmNvbnN0cnVjdCgmYWxsb2MsICZhLCA1Myk7Cit9CisKK1RFU1RfRihUZXN0LCBkZXN0cm95KSB7
CisgIEVYUEVDVF9DQUxMKGRlc3Ryb3ksIENhbGwoJmFsbG9jLCAmYSkpOworICBoYXNoX3BvbGlj
eV90cmFpdHM8UG9saWN5V2l0aG91dE9wdGlvbmFsT3BzPjo6ZGVzdHJveSgmYWxsb2MsICZhKTsK
K30KKworVEVTVF9GKFRlc3QsIGVsZW1lbnQpIHsKKyAgaW50IGIgPSAwOworICBFWFBFQ1RfQ0FM
TChlbGVtZW50LCBDYWxsKCZhKSkuV2lsbE9uY2UoUmV0dXJuUmVmKGIpKTsKKyAgRVhQRUNUX0VR
KCZiLCAmaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeVdpdGhvdXRPcHRpb25hbE9wcz46OmVsZW1l
bnQoJmEpKTsKK30KKworVEVTVF9GKFRlc3QsIGFwcGx5KSB7CisgIEVYUEVDVF9DQUxMKGFwcGx5
LCBDYWxsKDQyKSkuV2lsbE9uY2UoUmV0dXJuKDEzMzcpKTsKKyAgRVhQRUNUX0VRKDEzMzcsICho
YXNoX3BvbGljeV90cmFpdHM8UG9saWN5V2l0aG91dE9wdGlvbmFsT3BzPjo6YXBwbHkoNDIpKSk7
Cit9CisKK1RFU1RfRihUZXN0LCB2YWx1ZSkgeworICBpbnQgYiA9IDA7CisgIEVYUEVDVF9DQUxM
KHZhbHVlLCBDYWxsKCZhKSkuV2lsbE9uY2UoUmV0dXJuUmVmKGIpKTsKKyAgRVhQRUNUX0VRKCZi
LCAmaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeVdpdGhvdXRPcHRpb25hbE9wcz46OnZhbHVlKCZh
KSk7Cit9CisKK1RFU1RfRihUZXN0LCB3aXRob3V0X3RyYW5zZmVyKSB7CisgIGludCBiID0gNDI7
CisgIEVYUEVDVF9DQUxMKGVsZW1lbnQsIENhbGwoJmIpKS5XaWxsT25jZSg6OnRlc3Rpbmc6OlJl
dHVyblJlZihiKSk7CisgIEVYUEVDVF9DQUxMKGNvbnN0cnVjdCwgQ2FsbCgmYWxsb2MsICZhLCBi
KSk7CisgIEVYUEVDVF9DQUxMKGRlc3Ryb3ksIENhbGwoJmFsbG9jLCAmYikpOworICBoYXNoX3Bv
bGljeV90cmFpdHM8UG9saWN5V2l0aG91dE9wdGlvbmFsT3BzPjo6dHJhbnNmZXIoJmFsbG9jLCAm
YSwgJmIpOworfQorCitURVNUX0YoVGVzdCwgd2l0aF90cmFuc2ZlcikgeworICBpbnQgYiA9IDQy
OworICBFWFBFQ1RfQ0FMTCh0cmFuc2ZlciwgQ2FsbCgmYWxsb2MsICZhLCAmYikpOworICBoYXNo
X3BvbGljeV90cmFpdHM8UG9saWN5V2l0aE9wdGlvbmFsT3BzPjo6dHJhbnNmZXIoJmFsbG9jLCAm
YSwgJmIpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJf
aW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
aGFzaHRhYmxlX2RlYnVnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNiZDY1YzljNGVjNTJkNWY0YTc5NmY3NmIx
OGRiY2RhNzI5MmIzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNodGFibGVfZGVidWcuaApAQCAtMCwwICsxLDEwOCBAQAorLy8gQ29weXJpZ2h0IDIwMTgg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgQVBJcyB0
byBkZWJ1ZyB0aGUgcHJvYmluZyBiZWhhdmlvciBvZiBoYXNoIHRhYmxlcy4KKy8vCisvLyBJbiBn
ZW5lcmFsLCB0aGUgcHJvYmluZyBiZWhhdmlvciBpcyBhIGJsYWNrIGJveCBmb3IgdXNlcnMgYW5k
IG9ubHkgdGhlCisvLyBzaWRlIGVmZmVjdHMgY2FuIGJlIG1lYXN1cmVkIGluIHRoZSBmb3JtIG9m
IHBlcmZvcm1hbmNlIGRpZmZlcmVuY2VzLgorLy8gVGhlc2UgQVBJcyBnaXZlIGEgZ2xpbXBzZSBv
biB0aGUgYWN0dWFsIGJlaGF2aW9yIG9mIHRoZSBwcm9iaW5nIGFsZ29yaXRobXMgaW4KKy8vIHRo
ZXNlIGhhc2h0YWJsZXMgZ2l2ZW4gYSBzcGVjaWZpZWQgaGFzaCBmdW5jdGlvbiBhbmQgYSBzZXQg
b2YgZWxlbWVudHMuCisvLworLy8gVGhlIHByb2JlIGNvdW50IGRpc3RyaWJ1dGlvbiBjYW4gYmUg
dXNlZCB0byBhc3Nlc3MgdGhlIHF1YWxpdHkgb2YgdGhlIGhhc2gKKy8vIGZ1bmN0aW9uIGZvciB0
aGF0IHBhcnRpY3VsYXIgaGFzaCB0YWJsZS4gTm90ZSB0aGF0IGEgaGFzaCBmdW5jdGlvbiB0aGF0
CisvLyBwZXJmb3JtcyB3ZWxsIGluIG9uZSBoYXNoIHRhYmxlIGltcGxlbWVudGF0aW9uIGRvZXMg
bm90IG5lY2Vzc2FyaWx5IHBlcmZvcm1zCisvLyB3ZWxsIGluIGEgZGlmZmVyZW50IG9uZS4KKy8v
CisvLyBUaGlzIGxpYnJhcnkgc3VwcG9ydHMgc3RkOjp1bm9yZGVyZWRfe3NldCxtYXB9LCBkZW5z
ZV9oYXNoX3tzZXQsbWFwfSBhbmQKKy8vIGFic2w6OntmbGF0LG5vZGUsc3RyaW5nfV9oYXNoX3tz
ZXQsbWFwfS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIVEFCTEVfREVC
VUdfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSFRBQkxFX0RFQlVHX0hf
CisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx0
eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWdfaG9va3MuaCIKKworbmFtZXNwYWNlIGFic2wgewor
bmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKKy8vIFJldHVybnMgdGhlIG51bWJlciBv
ZiBwcm9iZXMgcmVxdWlyZWQgdG8gbG9va3VwIGBrZXlgLiAgUmV0dXJucyAwIGZvciBhCisvLyBz
ZWFyY2ggd2l0aCBubyBjb2xsaXNpb25zLiAgSGlnaGVyIHZhbHVlcyBtZWFuIG1vcmUgaGFzaCBj
b2xsaXNpb25zIG9jY3VycmVkOworLy8gaG93ZXZlciwgdGhlIGV4YWN0IG1lYW5pbmcgb2YgdGhp
cyBudW1iZXIgdmFyaWVzIGFjY29yZGluZyB0byB0aGUgY29udGFpbmVyCisvLyB0eXBlLgordGVt
cGxhdGUgPHR5cGVuYW1lIEM+CitzaXplX3QgR2V0SGFzaHRhYmxlRGVidWdOdW1Qcm9iZXMoCisg
ICAgY29uc3QgQyYgYywgY29uc3QgdHlwZW5hbWUgQzo6a2V5X3R5cGUmIGtleSkgeworICByZXR1
cm4gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNodGFibGVfZGVidWdfaW50ZXJuYWw6Ogor
ICAgICAgSGFzaHRhYmxlRGVidWdBY2Nlc3M8Qz46OkdldE51bVByb2JlcyhjLCBrZXkpOworfQor
CisvLyBHZXRzIGEgaGlzdG9ncmFtIG9mIHRoZSBudW1iZXIgb2YgcHJvYmVzIGZvciBlYWNoIGVs
ZW1lbnRzIGluIHRoZSBjb250YWluZXIuCisvLyBUaGUgc3VtIG9mIGFsbCB0aGUgdmFsdWVzIGlu
IHRoZSB2ZWN0b3IgaXMgZXF1YWwgdG8gY29udGFpbmVyLnNpemUoKS4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBDPgorc3RkOjp2ZWN0b3I8c2l6ZV90PiBHZXRIYXNodGFibGVEZWJ1Z051bVByb2Jlc0hp
c3RvZ3JhbShjb25zdCBDJiBjb250YWluZXIpIHsKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiB2Owor
ICBmb3IgKGF1dG8gaXQgPSBjb250YWluZXIuYmVnaW4oKTsgaXQgIT0gY29udGFpbmVyLmVuZCgp
OyArK2l0KSB7CisgICAgc2l6ZV90IG51bV9wcm9iZXMgPSBHZXRIYXNodGFibGVEZWJ1Z051bVBy
b2JlcygKKyAgICAgICAgY29udGFpbmVyLAorICAgICAgICBhYnNsOjpjb250YWluZXJfaW50ZXJu
YWw6Omhhc2h0YWJsZV9kZWJ1Z19pbnRlcm5hbDo6R2V0S2V5PEM+KCppdCwgMCkpOworICAgIHYu
cmVzaXplKHN0ZDo6bWF4KHYuc2l6ZSgpLCBudW1fcHJvYmVzICsgMSkpOworICAgIHZbbnVtX3By
b2Jlc10rKzsKKyAgfQorICByZXR1cm4gdjsKK30KKworc3RydWN0IEhhc2h0YWJsZURlYnVnUHJv
YmVTdW1tYXJ5IHsKKyAgc2l6ZV90IHRvdGFsX2VsZW1lbnRzOworICBzaXplX3QgdG90YWxfbnVt
X3Byb2JlczsKKyAgZG91YmxlIG1lYW47Cit9OworCisvLyBHZXRzIGEgc3VtbWFyeSBvZiB0aGUg
cHJvYmUgY291bnQgZGlzdHJpYnV0aW9uIGZvciB0aGUgZWxlbWVudHMgaW4gdGhlCisvLyBjb250
YWluZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK0hhc2h0YWJsZURlYnVnUHJvYmVTdW1tYXJ5
IEdldEhhc2h0YWJsZURlYnVnUHJvYmVTdW1tYXJ5KGNvbnN0IEMmIGNvbnRhaW5lcikgeworICBh
dXRvIHByb2JlcyA9IEdldEhhc2h0YWJsZURlYnVnTnVtUHJvYmVzSGlzdG9ncmFtKGNvbnRhaW5l
cik7CisgIEhhc2h0YWJsZURlYnVnUHJvYmVTdW1tYXJ5IHN1bW1hcnkgPSB7fTsKKyAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcm9iZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBzdW1tYXJ5LnRvdGFs
X2VsZW1lbnRzICs9IHByb2Jlc1tpXTsKKyAgICBzdW1tYXJ5LnRvdGFsX251bV9wcm9iZXMgKz0g
cHJvYmVzW2ldICogaTsKKyAgfQorICBzdW1tYXJ5Lm1lYW4gPSAxLjAgKiBzdW1tYXJ5LnRvdGFs
X251bV9wcm9iZXMgLyBzdW1tYXJ5LnRvdGFsX2VsZW1lbnRzOworICByZXR1cm4gc3VtbWFyeTsK
K30KKworLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVlc3RlZCBmcm9tIHRoZSBh
bGxvY2F0b3IgYnkgdGhlIGNvbnRhaW5lcgorLy8gYW5kIG5vdCBmcmVlZC4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBDPgorc2l6ZV90IEFsbG9jYXRlZEJ5dGVTaXplKGNvbnN0IEMmIGMpIHsKKyAgcmV0
dXJuIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaHRhYmxlX2RlYnVnX2ludGVybmFsOjoK
KyAgICAgIEhhc2h0YWJsZURlYnVnQWNjZXNzPEM+OjpBbGxvY2F0ZWRCeXRlU2l6ZShjKTsKK30K
KworLy8gUmV0dXJucyBhIHRpZ2h0IGxvd2VyIGJvdW5kIGZvciBBbGxvY2F0ZWRCeXRlU2l6ZShj
KSB3aGVyZSBgY2AgaXMgb2YgdHlwZSBgQ2AKKy8vIGFuZCBgYy5zaXplKClgIGlzIGVxdWFsIHRv
IGBudW1fZWxlbWVudHNgLgordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzaXplX3QgTG93ZXJCb3Vu
ZEFsbG9jYXRlZEJ5dGVTaXplKHNpemVfdCBudW1fZWxlbWVudHMpIHsKKyAgcmV0dXJuIGFic2w6
OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaHRhYmxlX2RlYnVnX2ludGVybmFsOjoKKyAgICAgIEhh
c2h0YWJsZURlYnVnQWNjZXNzPEM+OjpMb3dlckJvdW5kQWxsb2NhdGVkQnl0ZVNpemUobnVtX2Vs
ZW1lbnRzKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8g
bmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNI
VEFCTEVfREVCVUdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
dGFibGVfZGVidWdfaG9va3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGVf
ZGVidWdfaG9va3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjIxOTcyNmJlZTAxZmU5N2E4ZjEwZTMzMDY0OTQ4
NjgwOTRlOTJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hh
c2h0YWJsZV9kZWJ1Z19ob29rcy5oCkBAIC0wLDAgKzEsODEgQEAKKy8vIENvcHlyaWdodCAyMDE4
IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gUHJvdmlkZXMgdGhlIGludGVybmFsIEFQSSBm
b3IgaGFzaHRhYmxlX2RlYnVnLmguCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxf
SEFTSFRBQkxFX0RFQlVHX0hPT0tTX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFM
X0hBU0hUQUJMRV9ERUJVR19IT09LU19IXworCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKworI2luY2x1
ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFt
ZXNwYWNlIGhhc2h0YWJsZV9kZWJ1Z19pbnRlcm5hbCB7CisKKy8vIElmIGl0IGlzIGEgbWFwLCBj
YWxsIGdldDwwPigpLgordXNpbmcgc3RkOjpnZXQ7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgPSB0eXBlbmFtZSBUOjptYXBwZWRfdHlwZT4KK2F1dG8gR2V0S2V5KGNvbnN0IHR5cGVu
YW1lIFQ6OnZhbHVlX3R5cGUmIHBhaXIsIGludCkgLT4gZGVjbHR5cGUoZ2V0PDA+KHBhaXIpKSB7
CisgIHJldHVybiBnZXQ8MD4ocGFpcik7Cit9CisKKy8vIElmIGl0IGlzIG5vdCBhIG1hcCwgcmV0
dXJuIHRoZSB2YWx1ZSBkaXJlY3RseS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgdHlw
ZW5hbWUgVDo6a2V5X3R5cGUmIEdldEtleShjb25zdCB0eXBlbmFtZSBUOjprZXlfdHlwZSYga2V5
LCBjaGFyKSB7CisgIHJldHVybiBrZXk7Cit9CisKKy8vIENvbnRhaW5lcnMgc2hvdWxkIHNwZWNp
YWxpemUgdGhpcyB0byBwcm92aWRlIGRlYnVnIGluZm9ybWF0aW9uIGZvciB0aGF0CisvLyBjb250
YWluZXIuCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSBFbmFibGVyID0gdm9p
ZD4KK3N0cnVjdCBIYXNodGFibGVEZWJ1Z0FjY2VzcyB7CisgIC8vIFJldHVybnMgdGhlIG51bWJl
ciBvZiBwcm9iZXMgcmVxdWlyZWQgdG8gZmluZCBga2V5YCBpbiBgY2AuICBUaGUgIm51bWJlciBv
ZgorICAvLyBwcm9iZXMiIGlzIGEgY29uY2VwdCB0aGF0IGNhbiB2YXJ5IGJ5IGNvbnRhaW5lci4g
IEltcGxlbWVudGF0aW9ucyBzaG91bGQKKyAgLy8gcmV0dXJuIDAgd2hlbiBga2V5YCB3YXMgZm91
bmQgaW4gdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9wZXJhdGlvbnMgYW5kCisgIC8vIHNob3VsZCBp
bmNyZW1lbnQgdGhlIHJlc3VsdCBmb3IgZWFjaCBub24tdHJpdmlhbCBvcGVyYXRpb24gcmVxdWly
ZWQgdG8gZmluZAorICAvLyBga2V5YC4KKyAgLy8KKyAgLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50
YXRpb24gdXNlcyB0aGUgYnVja2V0IGFwaSBmcm9tIHRoZSBzdGFuZGFyZCBhbmQgdGh1cworICAv
LyB3b3JrcyBmb3IgYHN0ZDo6dW5vcmRlcmVkXypgIGNvbnRhaW5lcnMuCisgIHN0YXRpYyBzaXpl
X3QgR2V0TnVtUHJvYmVzKGNvbnN0IENvbnRhaW5lciYgYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdHlwZW5hbWUgQ29udGFpbmVyOjprZXlfdHlwZSYga2V5KSB7CisgICAg
aWYgKCFjLmJ1Y2tldF9jb3VudCgpKSByZXR1cm4ge307CisgICAgc2l6ZV90IG51bV9wcm9iZXMg
PSAwOworICAgIHNpemVfdCBidWNrZXQgPSBjLmJ1Y2tldChrZXkpOworICAgIGZvciAoYXV0byBp
dCA9IGMuYmVnaW4oYnVja2V0KSwgZSA9IGMuZW5kKGJ1Y2tldCk7OyArK2l0LCArK251bV9wcm9i
ZXMpIHsKKyAgICAgIGlmIChpdCA9PSBlKSByZXR1cm4gbnVtX3Byb2JlczsKKyAgICAgIGlmIChj
LmtleV9lcSgpKGtleSwgR2V0S2V5PENvbnRhaW5lcj4oKml0LCAwKSkpIHJldHVybiBudW1fcHJv
YmVzOworICAgIH0KKyAgfQorCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZXF1
ZXN0ZWQgZnJvbSB0aGUgYWxsb2NhdG9yIGJ5IHRoZSBjb250YWluZXIKKyAgLy8gYW5kIG5vdCBm
cmVlZC4KKyAgLy8KKyAgLy8gc3RhdGljIHNpemVfdCBBbGxvY2F0ZWRCeXRlU2l6ZShjb25zdCBD
b250YWluZXImIGMpOworCisgIC8vIFJldHVybnMgYSB0aWdodCBsb3dlciBib3VuZCBmb3IgQWxs
b2NhdGVkQnl0ZVNpemUoYykgd2hlcmUgYGNgIGlzIG9mIHR5cGUKKyAgLy8gYENvbnRhaW5lcmAg
YW5kIGBjLnNpemUoKWAgaXMgZXF1YWwgdG8gYG51bV9lbGVtZW50c2AuCisgIC8vCisgIC8vIHN0
YXRpYyBzaXplX3QgTG93ZXJCb3VuZEFsbG9jYXRlZEJ5dGVTaXplKHNpemVfdCBudW1fZWxlbWVu
dHMpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGhhc2h0YWJsZV9kZWJ1Z19pbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKwor
I2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIVEFCTEVfREVCVUdfSE9PS1Nf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzZjN2Q2N2VlNjhkY2Q1
NjZlMTcwOTRkNDk1OGUzNzQ3NTQ3ZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL2xheW91dC5oCkBAIC0wLDAgKzEsNzMyIEBACisvLyBDb3B5cmlnaHQgMjAx
OCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
TU9USVZBVElPTiBBTkQgVFVUT1JJQUwKKy8vCisvLyBJZiB5b3Ugd2FudCB0byBwdXQgaW4gYSBz
aW5nbGUgaGVhcCBhbGxvY2F0aW9uIE4gZG91YmxlcyBmb2xsb3dlZCBieSBNIGludHMsCisvLyBp
dCdzIGVhc3kgaWYgTiBhbmQgTSBhcmUga25vd24gYXQgY29tcGlsZSB0aW1lLgorLy8KKy8vICAg
c3RydWN0IFMgeworLy8gICAgIGRvdWJsZSBhW05dOworLy8gICAgIGludCBiW01dOworLy8gICB9
OworLy8KKy8vICAgUyogcCA9IG5ldyBTOworLy8KKy8vIEJ1dCB3aGF0IGlmIE4gYW5kIE0gYXJl
IGtub3duIG9ubHkgaW4gcnVuIHRpbWU/IENsYXNzIHRlbXBsYXRlIExheW91dCB0byB0aGUKKy8v
IHJlc2N1ZSEgSXQncyBhIHBvcnRhYmxlIGdlbmVyYWxpemF0aW9uIG9mIHRoZSB0ZWNobmlxdWUg
a25vd24gYXMgc3RydWN0IGhhY2suCisvLworLy8gICAvLyBUaGlzIG9iamVjdCB3aWxsIHRlbGwg
dXMgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgdGhlIG1lbW9yeQorLy8gICAvLyBs
YXlvdXQgb2YgZG91YmxlW05dIGZvbGxvd2VkIGJ5IGludFtNXS4gSXQncyBzdHJ1Y3R1cmFsbHkg
aWRlbnRpY2FsIHRvCisvLyAgIC8vIHNpemVfdFsyXSB0aGF0IHN0b3JlcyBOIGFuZCBNLiBJdCdz
IHZlcnkgY2hlYXAgdG8gY3JlYXRlLgorLy8gICBjb25zdCBMYXlvdXQ8ZG91YmxlLCBpbnQ+IGxh
eW91dChOLCBNKTsKKy8vCisvLyAgIC8vIEFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIGJvdGgg
YXJyYXlzLiBgQWxsb2NTaXplKClgIHRlbGxzIHVzIGhvdyBtdWNoCisvLyAgIC8vIG1lbW9yeSBp
cyBuZWVkZWQuIFdlIGFyZSBmcmVlIHRvIHVzZSBhbnkgYWxsb2NhdGlvbiBmdW5jdGlvbiB3ZSB3
YW50IGFzCisvLyAgIC8vIGxvbmcgYXMgaXQgcmV0dXJucyBhbGlnbmVkIG1lbW9yeS4KKy8vICAg
c3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gcChuZXcgdW5zaWduZWQgY2hhcltsYXlv
dXQuQWxsb2NTaXplKCldKTsKKy8vCisvLyAgIC8vIE9idGFpbiB0aGUgcG9pbnRlciB0byB0aGUg
YXJyYXkgb2YgZG91Ymxlcy4KKy8vICAgLy8gRXF1aXZhbGVudCB0byBgcmVpbnRlcnByZXRfY2Fz
dDxkb3VibGUqPihwLmdldCgpKWAuCisvLyAgIC8vCisvLyAgIC8vIFdlIGNvdWxkIGhhdmUgd3Jp
dHRlbiBsYXlvdXQuUG9pbnRlcjwwPihwKSBpbnN0ZWFkLiBJZiBhbGwgdGhlIHR5cGVzIGFyZQor
Ly8gICAvLyB1bmlxdWUgeW91IGNhbiB1c2UgZWl0aGVyIGZvcm0sIGJ1dCBpZiBzb21lIHR5cGVz
IGFyZSByZXBlYXRlZCB5b3UgbXVzdAorLy8gICAvLyB1c2UgdGhlIGluZGV4IGZvcm0uCisvLyAg
IGRvdWJsZSogYSA9IGxheW91dC5Qb2ludGVyPGRvdWJsZT4ocC5nZXQoKSk7CisvLworLy8gICAv
LyBPYnRhaW4gdGhlIHBvaW50ZXIgdG8gdGhlIGFycmF5IG9mIGludHMuCisvLyAgIC8vIEVxdWl2
YWxlbnQgdG8gYHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4ocC5nZXQoKSArIE4gKiA4KWAuCisvLyAg
IGludCogYiA9IGxheW91dC5Qb2ludGVyPGludD4ocCk7CisvLworLy8gSWYgd2UgYXJlIHVuYWJs
ZSB0byBzcGVjaWZ5IHNpemVzIG9mIGFsbCBmaWVsZHMsIHdlIGNhbiBwYXNzIGFzIG1hbnkgc2l6
ZXMgYXMKKy8vIHdlIGNhbiB0byBgUGFydGlhbCgpYC4gSW4gcmV0dXJuLCBpdCdsbCBhbGxvdyB1
cyB0byBhY2Nlc3MgdGhlIGZpZWxkcyB3aG9zZQorLy8gbG9jYXRpb25zIGFuZCBzaXplcyBjYW4g
YmUgY29tcHV0ZWQgZnJvbSB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24uCisvLyBgUGFydGlhbCgp
YCBjb21lcyBpbiBoYW5keSB3aGVuIHRoZSBhcnJheSBzaXplcyBhcmUgZW1iZWRkZWQgaW50byB0
aGUKKy8vIGFsbG9jYXRpb24uCisvLworLy8gICAvLyBzaXplX3RbMV0gY29udGFpbmluZyBOLCBz
aXplX3RbMV0gY29udGFpbmluZyBNLCBkb3VibGVbTl0sIGludFtNXS4KKy8vICAgdXNpbmcgTCA9
IExheW91dDxzaXplX3QsIHNpemVfdCwgZG91YmxlLCBpbnQ+OworLy8KKy8vICAgdW5zaWduZWQg
Y2hhciogQWxsb2NhdGUoc2l6ZV90IG4sIHNpemVfdCBtKSB7CisvLyAgICAgY29uc3QgTCBsYXlv
dXQoMSwgMSwgbiwgbSk7CisvLyAgICAgdW5zaWduZWQgY2hhciogcCA9IG5ldyB1bnNpZ25lZCBj
aGFyW2xheW91dC5BbGxvY1NpemUoKV07CisvLyAgICAgKmxheW91dC5Qb2ludGVyPDA+KHApID0g
bjsKKy8vICAgICAqbGF5b3V0LlBvaW50ZXI8MT4ocCkgPSBtOworLy8gICAgIHJldHVybiBwOwor
Ly8gICB9CisvLworLy8gICB2b2lkIFVzZSh1bnNpZ25lZCBjaGFyKiBwKSB7CisvLyAgICAgLy8g
Rmlyc3QsIGV4dHJhY3QgTiBhbmQgTS4KKy8vICAgICAvLyBTcGVjaWZ5IHRoYXQgdGhlIGZpcnN0
IGFycmF5IGhhcyBvbmx5IG9uZSBlbGVtZW50LiBVc2luZyBgcHJlZml4YCB3ZQorLy8gICAgIC8v
IGNhbiBhY2Nlc3MgdGhlIGZpcnN0IHR3byBhcnJheXMgYnV0IG5vdCBtb3JlLgorLy8gICAgIGNv
bnN0ZXhwciBhdXRvIHByZWZpeCA9IEw6OlBhcnRpYWwoMSk7CisvLyAgICAgc2l6ZV90IG4gPSAq
cHJlZml4LlBvaW50ZXI8MD4ocCk7CisvLyAgICAgc2l6ZV90IG0gPSAqcHJlZml4LlBvaW50ZXI8
MT4ocCk7CisvLworLy8gICAgIC8vIE5vdyB3ZSBjYW4gZ2V0IHBvaW50ZXJzIHRvIHRoZSBwYXls
b2FkLgorLy8gICAgIGNvbnN0IEwgbGF5b3V0KDEsIDEsIG4sIG0pOworLy8gICAgIGRvdWJsZSog
YSA9IGxheW91dC5Qb2ludGVyPGRvdWJsZT4ocCk7CisvLyAgICAgaW50KiBiID0gbGF5b3V0LlBv
aW50ZXI8aW50PihwKTsKKy8vICAgfQorLy8KKy8vIFRoZSBsYXlvdXQgd2UgdXNlZCBhYm92ZSBj
b21iaW5lcyBmaXhlZC1zaXplIHdpdGggZHluYW1pY2FsbHktc2l6ZWQgZmllbGRzLgorLy8gVGhp
cyBpcyBxdWl0ZSBjb21tb24uIExheW91dCBpcyBvcHRpbWl6ZWQgZm9yIHRoaXMgdXNlIGNhc2Ug
YW5kIGdlbmVyYXRlcworLy8gb3B0aW1hbCBjb2RlLiBBbGwgY29tcHV0YXRpb25zIHRoYXQgY2Fu
IGJlIHBlcmZvcm1lZCBhdCBjb21waWxlIHRpbWUgYXJlCisvLyBpbmRlZWQgcGVyZm9ybWVkIGF0
IGNvbXBpbGUgdGltZS4KKy8vCisvLyBFZmZpY2llbmN5IHRpcDogVGhlIG9yZGVyIG9mIGZpZWxk
cyBtYXR0ZXJzLiBJbiBgTGF5b3V0PFQxLCAuLi4sIFROPmAgdHJ5IHRvCisvLyBlbnN1cmUgdGhh
dCBgYWxpZ25vZihUMSkgPj0gLi4uID49IGFsaWdub2YoVE4pYC4gVGhpcyB3YXkgeW91J2xsIGhh
dmUgbm8KKy8vIHBhZGRpbmcgaW4gYmV0d2VlbiBhcnJheXMuCisvLworLy8gWW91IGNhbiBtYW51
YWxseSBvdmVycmlkZSB0aGUgYWxpZ25tZW50IG9mIGFuIGFycmF5IGJ5IHdyYXBwaW5nIHRoZSB0
eXBlIGluCisvLyBgQWxpZ25lZDxULCBOPmAuIGBMYXlvdXQ8Li4uLCBBbGlnbmVkPFQsIE4+LCAu
Li4+YCBoYXMgZXhhY3RseSB0aGUgc2FtZSBBUEkKKy8vIGFuZCBiZWhhdmlvciBhcyBgTGF5b3V0
PC4uLiwgVCwgLi4uPmAgZXhjZXB0IHRoYXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlCisvLyBh
cnJheSBvZiBgVGAgaXMgYWxpZ25lZCB0byBgTmAgKHRoZSByZXN0IG9mIHRoZSBlbGVtZW50cyBm
b2xsb3cgd2l0aG91dAorLy8gcGFkZGluZykuIGBOYCBjYW5ub3QgYmUgbGVzcyB0aGFuIGBhbGln
bm9mKFQpYC4KKy8vCisvLyBgQWxsb2NTaXplKClgIGFuZCBgUG9pbnRlcigpYCBhcmUgdGhlIG1v
c3QgYmFzaWMgbWV0aG9kcyBmb3IgZGVhbGluZyB3aXRoCisvLyBtZW1vcnkgbGF5b3V0cy4gQ2hl
Y2sgb3V0IHRoZSByZWZlcmVuY2Ugb3IgY29kZSBiZWxvdyB0byBkaXNjb3ZlciBtb3JlLgorLy8K
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQU1QTEUKKy8vCisvLyAgIC8vIEltbXV0
YWJsZSBtb3ZlLW9ubHkgc3RyaW5nIHdpdGggc2l6ZW9mIGVxdWFsIHRvIHNpemVvZih2b2lkKiku
IFRoZQorLy8gICAvLyBzdHJpbmcgc2l6ZSBhbmQgdGhlIGNoYXJhY3RlcnMgYXJlIGtlcHQgaW4g
dGhlIHNhbWUgaGVhcCBhbGxvY2F0aW9uLgorLy8gICBjbGFzcyBDb21wYWN0U3RyaW5nIHsKKy8v
ICAgIHB1YmxpYzoKKy8vICAgICBDb21wYWN0U3RyaW5nKGNvbnN0IGNoYXIqIHMgPSAiIikgewor
Ly8gICAgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBzdHJsZW4ocyk7CisvLyAgICAgICAvLyBzaXpl
X3RbMV0gZm9sbG93ZWQgYnkgY2hhcltzaXplICsgMV0uCisvLyAgICAgICBjb25zdCBMIGxheW91
dCgxLCBzaXplICsgMSk7CisvLyAgICAgICBwXy5yZXNldChuZXcgdW5zaWduZWQgY2hhcltsYXlv
dXQuQWxsb2NTaXplKCldKTsKKy8vICAgICAgIC8vIElmIHJ1bm5pbmcgdW5kZXIgQVNBTiwgbWFy
ayB0aGUgcGFkZGluZyBieXRlcywgaWYgYW55LCB0byBjYXRjaAorLy8gICAgICAgLy8gbWVtb3J5
IGVycm9ycy4KKy8vICAgICAgIGxheW91dC5Qb2lzb25QYWRkaW5nKHBfLmdldCgpKTsKKy8vICAg
ICAgIC8vIFN0b3JlIHRoZSBzaXplIGluIHRoZSBhbGxvY2F0aW9uLgorLy8gICAgICAgKmxheW91
dC5Qb2ludGVyPHNpemVfdD4ocF8uZ2V0KCkpID0gc2l6ZTsKKy8vICAgICAgIC8vIFN0b3JlIHRo
ZSBjaGFyYWN0ZXJzIGluIHRoZSBhbGxvY2F0aW9uLgorLy8gICAgICAgbWVtY3B5KGxheW91dC5Q
b2ludGVyPGNoYXI+KHBfLmdldCgpKSwgcywgc2l6ZSArIDEpOworLy8gICAgIH0KKy8vCisvLyAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7CisvLyAgICAgICAvLyBFcXVpdmFsZW50IHRvIHJlaW50
ZXJwcmV0X2Nhc3Q8c2l6ZV90Jj4oKnApLgorLy8gICAgICAgcmV0dXJuICpMOjpQYXJ0aWFsKCku
UG9pbnRlcjxzaXplX3Q+KHBfLmdldCgpKTsKKy8vICAgICB9CisvLworLy8gICAgIGNvbnN0IGNo
YXIqIGNfc3RyKCkgY29uc3QgeworLy8gICAgICAgLy8gRXF1aXZhbGVudCB0byByZWludGVycHJl
dF9jYXN0PGNoYXIqPihwLmdldCgpICsgc2l6ZW9mKHNpemVfdCkpLgorLy8gICAgICAgLy8gVGhl
IGFyZ3VtZW50IGluIFBhcnRpYWwoMSkgc3BlY2lmaWVzIHRoYXQgd2UgaGF2ZSBzaXplX3RbMV0g
aW4gZnJvbnQKKy8vICAgICAgIC8vIG9mIHRoZSBjaGFyYWN0ZXJzLgorLy8gICAgICAgcmV0dXJu
IEw6OlBhcnRpYWwoMSkuUG9pbnRlcjxjaGFyPihwXy5nZXQoKSk7CisvLyAgICAgfQorLy8KKy8v
ICAgIHByaXZhdGU6CisvLyAgICAgLy8gT3VyIGhlYXAgYWxsb2NhdGlvbiBjb250YWlucyBhIHNp
emVfdCBmb2xsb3dlZCBieSBhbiBhcnJheSBvZiBjaGFycy4KKy8vICAgICB1c2luZyBMID0gTGF5
b3V0PHNpemVfdCwgY2hhcj47CisvLyAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJb
XT4gcF87CisvLyAgIH07CisvLworLy8gICBpbnQgbWFpbigpIHsKKy8vICAgICBDb21wYWN0U3Ry
aW5nIHMgPSAiaGVsbG8iOworLy8gICAgIGFzc2VydChzLnNpemUoKSA9PSA1KTsKKy8vICAgICBh
c3NlcnQoc3RyY21wKHMuY19zdHIoKSwgImhlbGxvIikgPT0gMCk7CisvLyAgIH0KKy8vCisvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBET0NVTUVOVEFUSU9OCisvLworLy8gVGhlIGlu
dGVyZmFjZSBleHBvcnRlZCBieSB0aGlzIGZpbGUgY29uc2lzdHMgb2Y6CisvLyAtIGNsYXNzIGBM
YXlvdXQ8PmAgYW5kIGl0cyBwdWJsaWMgbWVtYmVycy4KKy8vIC0gVGhlIHB1YmxpYyBtZW1iZXJz
IG9mIGNsYXNzIGBpbnRlcm5hbF9sYXlvdXQ6OkxheW91dEltcGw8PmAuIFRoYXQgY2xhc3MKKy8v
ICAgaXNuJ3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSwgYW5kIGl0cyBuYW1lIGFuZCB0
ZW1wbGF0ZSBwYXJhbWV0ZXIKKy8vICAgbGlzdCBhcmUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24g
ZGV0YWlscywgYnV0IHRoZSBjbGFzcyBpdHNlbGYgcHJvdmlkZXMKKy8vICAgbW9zdCBvZiB0aGUg
ZnVuY3Rpb25hbGl0eSBpbiB0aGlzIGZpbGUuIFNlZSBjb21tZW50cyBvbiBpdHMgbWVtYmVycyBm
b3IKKy8vICAgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbi4KKy8vCisvLyBgTGF5b3V0PFQxLC4uLiBU
bj46OlBhcnRpYWwoY291bnQxLC4uLiwgY291bnRtKWAgKHdoZXJlIGBtYCA8PSBgbmApIHJldHVy
bnMgYQorLy8gYExheW91dEltcGw8PmAgb2JqZWN0LiBgTGF5b3V0PFQxLC4uLiwgVG4+IGxheW91
dChjb3VudDEsLi4uLCBjb3VudG4pYAorLy8gY3JlYXRlcyBhIGBMYXlvdXRgIG9iamVjdCwgd2hp
Y2ggZXhwb3NlcyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGJ5IGluaGVyaXRpbmcKKy8vIGZyb20g
YExheW91dEltcGw8PmAuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfTEFZT1VU
X0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0xBWU9VVF9IXworCisjaW5jbHVk
ZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8b3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHVwbGU+Cisj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dHlwZWluZm8+CisjaW5jbHVkZSA8dXRp
bGl0eT4KKworI2lmZGVmIEFERFJFU1NfU0FOSVRJWkVSCisjaW5jbHVkZSA8c2FuaXRpemVyL2Fz
YW5faW50ZXJmYWNlLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0
cy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC90
eXBlcy9zcGFuLmgiCisjaW5jbHVkZSAiYWJzbC91dGlsaXR5L3V0aWxpdHkuaCIKKworI2lmIGRl
ZmluZWQoX19HWFhfUlRUSSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9IQVNfQ1hBX0RFTUFOR0xF
CisjZW5kaWYKKworI2lmZGVmIEFCU0xfSU5URVJOQUxfSEFTX0NYQV9ERU1BTkdMRQorI2luY2x1
ZGUgPGN4eGFiaS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250
YWluZXJfaW50ZXJuYWwgeworCisvLyBBIHR5cGUgd3JhcHBlciB0aGF0IGluc3RydWN0cyBgTGF5
b3V0YCB0byB1c2UgdGhlIHNwZWNpZmljIGFsaWdubWVudCBmb3IgdGhlCisvLyBhcnJheS4gYExh
eW91dDwuLi4sIEFsaWduZWQ8VCwgTj4sIC4uLj5gIGhhcyBleGFjdGx5IHRoZSBzYW1lIEFQSQor
Ly8gYW5kIGJlaGF2aW9yIGFzIGBMYXlvdXQ8Li4uLCBULCAuLi4+YCBleGNlcHQgdGhhdCB0aGUg
Zmlyc3QgZWxlbWVudCBvZiB0aGUKKy8vIGFycmF5IG9mIGBUYCBpcyBhbGlnbmVkIHRvIGBOYCAo
dGhlIHJlc3Qgb2YgdGhlIGVsZW1lbnRzIGZvbGxvdyB3aXRob3V0CisvLyBwYWRkaW5nKS4KKy8v
CisvLyBSZXF1aXJlczogYE4gPj0gYWxpZ25vZihUKWAgYW5kIGBOYCBpcyBhIHBvd2VyIG9mIDIu
Cit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+CitzdHJ1Y3QgQWxpZ25lZDsKKworbmFtZXNw
YWNlIGludGVybmFsX2xheW91dCB7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IE5vdEFs
aWduZWQge307CisKK3RlbXBsYXRlIDxjbGFzcyBULCBzaXplX3QgTj4KK3N0cnVjdCBOb3RBbGln
bmVkPGNvbnN0IEFsaWduZWQ8VCwgTj4+IHsKKyAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0g
MCwgIkFsaWduZWQ8VCwgTj4gY2Fubm90IGJlIGNvbnN0LXF1YWxpZmllZCIpOworfTsKKwordGVt
cGxhdGUgPHNpemVfdD4KK3VzaW5nIEludFRvU2l6ZSA9IHNpemVfdDsKKwordGVtcGxhdGUgPGNs
YXNzPgordXNpbmcgVHlwZVRvU2l6ZSA9IHNpemVfdDsKKwordGVtcGxhdGUgPGNsYXNzIFQ+Citz
dHJ1Y3QgVHlwZSA6IE5vdEFsaWduZWQ8VD4geworICB1c2luZyB0eXBlID0gVDsKK307CisKK3Rl
bXBsYXRlIDxjbGFzcyBULCBzaXplX3QgTj4KK3N0cnVjdCBUeXBlPEFsaWduZWQ8VCwgTj4+IHsK
KyAgdXNpbmcgdHlwZSA9IFQ7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBTaXpl
T2YgOiBOb3RBbGlnbmVkPFQ+LCBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgc2l6ZW9m
KFQpPiB7fTsKKwordGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgorc3RydWN0IFNpemVPZjxB
bGlnbmVkPFQsIE4+PiA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBzaXplb2YoVCk+
IHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBBbGlnbk9mIDogTm90QWxpZ25lZDxU
Piwgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIGFsaWdub2YoVCk+IHt9OworCit0ZW1w
bGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+CitzdHJ1Y3QgQWxpZ25PZjxBbGlnbmVkPFQsIE4+PiA6
IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBOPiB7CisgIHN0YXRpY19hc3NlcnQoTiAl
IGFsaWdub2YoVCkgPT0gMCwKKyAgICAgICAgICAgICAgICAiQ3VzdG9tIGFsaWdubWVudCBjYW4n
dCBiZSBsb3dlciB0aGFuIHRoZSB0eXBlJ3MgYWxpZ25tZW50Iik7Cit9OworCisvLyBEb2VzIGBU
cy4uLmAgY29udGFpbiBgVGA/Cit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MuLi4gVHM+Cit1c2lu
ZyBDb250YWlucyA9IGFic2w6OmRpc2p1bmN0aW9uPHN0ZDo6aXNfc2FtZTxULCBUcz4uLi4+Owor
Cit0ZW1wbGF0ZSA8Y2xhc3MgRnJvbSwgY2xhc3MgVG8+Cit1c2luZyBDb3B5Q29uc3QgPQorICAg
IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxGcm9tPjo6dmFsdWUsIGNv
bnN0IFRvLCBUbz46OnR5cGU7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgordXNpbmcgU2xpY2VUeXBl
ID0gYWJzbDo6U3BhbjxUPjsKKworLy8gVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgbm8gdHlwZXMu
IEl0IHByZXZlbnRzIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGl0IGZyb20KKy8vIGJlaW5nIGZvdW5k
IGJ5IEFETC4KK25hbWVzcGFjZSBhZGxfYmFycmllciB7CisKK3RlbXBsYXRlIDxjbGFzcyBOZWVk
bGUsIGNsYXNzLi4uIFRzPgorY29uc3RleHByIHNpemVfdCBGaW5kKE5lZWRsZSwgTmVlZGxlLCBU
cy4uLikgeworICBzdGF0aWNfYXNzZXJ0KCFDb250YWluczxOZWVkbGUsIFRzLi4uPigpLCAiRHVw
bGljYXRlIGVsZW1lbnQgdHlwZSIpOworICByZXR1cm4gMDsKK30KKwordGVtcGxhdGUgPGNsYXNz
IE5lZWRsZSwgY2xhc3MgVCwgY2xhc3MuLi4gVHM+Citjb25zdGV4cHIgc2l6ZV90IEZpbmQoTmVl
ZGxlLCBULCBUcy4uLikgeworICByZXR1cm4gYWRsX2JhcnJpZXI6OkZpbmQoTmVlZGxlKCksIFRz
KCkuLi4pICsgMTsKK30KKworY29uc3RleHByIGJvb2wgSXNQb3cyKHNpemVfdCBuKSB7IHJldHVy
biAhKG4gJiAobiAtIDEpKTsgfQorCisvLyBSZXR1cm5zIGBxICogbWAgZm9yIHRoZSBzbWFsbGVz
dCBgcWAgc3VjaCB0aGF0IGBxICogbSA+PSBuYC4KKy8vIFJlcXVpcmVzOiBgbWAgaXMgYSBwb3dl
ciBvZiB0d28uIEl0J3MgZW5mb3JjZWQgYnkgSXNMZWdhbEVsZW1lbnRUeXBlIGJlbG93LgorY29u
c3RleHByIHNpemVfdCBBbGlnbihzaXplX3Qgbiwgc2l6ZV90IG0pIHsgcmV0dXJuIChuICsgbSAt
IDEpICYgfihtIC0gMSk7IH0KKworY29uc3RleHByIHNpemVfdCBNaW4oc2l6ZV90IGEsIHNpemVf
dCBiKSB7IHJldHVybiBiIDwgYSA/IGIgOiBhOyB9CisKK2NvbnN0ZXhwciBzaXplX3QgTWF4KHNp
emVfdCBhKSB7IHJldHVybiBhOyB9CisKK3RlbXBsYXRlIDxjbGFzcy4uLiBUcz4KK2NvbnN0ZXhw
ciBzaXplX3QgTWF4KHNpemVfdCBhLCBzaXplX3QgYiwgVHMuLi4gcmVzdCkgeworICByZXR1cm4g
YWRsX2JhcnJpZXI6Ok1heChiIDwgYSA/IGEgOiBiLCByZXN0Li4uKTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIFQ+CitzdGQ6OnN0cmluZyBUeXBlTmFtZSgpIHsKKyAgc3RkOjpzdHJpbmcgb3V0Owor
ICBpbnQgc3RhdHVzID0gMDsKKyAgY2hhciogZGVtYW5nbGVkID0gbnVsbHB0cjsKKyNpZmRlZiBB
QlNMX0lOVEVSTkFMX0hBU19DWEFfREVNQU5HTEUKKyAgZGVtYW5nbGVkID0gYWJpOjpfX2N4YV9k
ZW1hbmdsZSh0eXBlaWQoVCkubmFtZSgpLCBudWxscHRyLCBudWxscHRyLCAmc3RhdHVzKTsKKyNl
bmRpZgorICBpZiAoc3RhdHVzID09IDAgJiYgZGVtYW5nbGVkICE9IG51bGxwdHIpIHsgIC8vIERl
bWFuZ2xpbmcgc3VjY2VlZWRlZC4KKyAgICBhYnNsOjpTdHJBcHBlbmQoJm91dCwgIjwiLCBkZW1h
bmdsZWQsICI+Iik7CisgICAgZnJlZShkZW1hbmdsZWQpOworICB9IGVsc2UgeworI2lmIGRlZmlu
ZWQoX19HWFhfUlRUSSkgfHwgZGVmaW5lZChfQ1BQUlRUSSkKKyAgICBhYnNsOjpTdHJBcHBlbmQo
Jm91dCwgIjwiLCB0eXBlaWQoVCkubmFtZSgpLCAiPiIpOworI2VuZGlmCisgIH0KKyAgcmV0dXJu
IG91dDsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFkbF9iYXJyaWVyCisKK3RlbXBsYXRlIDxib29s
IEM+Cit1c2luZyBFbmFibGVJZiA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEMsIGludD46OnR5
cGU7CisKKy8vIENhbiBgVGAgYmUgYSB0ZW1wbGF0ZSBhcmd1bWVudCBvZiBgTGF5b3V0YD8KK3Rl
bXBsYXRlIDxjbGFzcyBUPgordXNpbmcgSXNMZWdhbEVsZW1lbnRUeXBlID0gc3RkOjppbnRlZ3Jh
bF9jb25zdGFudDwKKyAgICBib29sLCAhc3RkOjppc19yZWZlcmVuY2U8VD46OnZhbHVlICYmICFz
dGQ6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAhc3RkOjppc19yZWZl
cmVuY2U8dHlwZW5hbWUgVHlwZTxUPjo6dHlwZT46OnZhbHVlICYmCisgICAgICAgICAgICAgICFz
dGQ6OmlzX3ZvbGF0aWxlPHR5cGVuYW1lIFR5cGU8VD46OnR5cGU+Ojp2YWx1ZSAmJgorICAgICAg
ICAgICAgICBhZGxfYmFycmllcjo6SXNQb3cyKEFsaWduT2Y8VD46OnZhbHVlKT47CisKK3RlbXBs
YXRlIDxjbGFzcyBFbGVtZW50cywgY2xhc3MgU2l6ZVNlcSwgY2xhc3MgT2Zmc2V0U2VxPgorY2xh
c3MgTGF5b3V0SW1wbDsKKworLy8gUHVibGljIGJhc2UgY2xhc3Mgb2YgYExheW91dGAgYW5kIHRo
ZSByZXN1bHQgdHlwZSBvZiBgTGF5b3V0OjpQYXJ0aWFsKClgLgorLy8KKy8vIGBFbGVtZW50cy4u
LmAgY29udGFpbnMgYWxsIHRlbXBsYXRlIGFyZ3VtZW50cyBvZiBgTGF5b3V0YCB0aGF0IGNyZWF0
ZWQgdGhpcworLy8gaW5zdGFuY2UuCisvLworLy8gYFNpemVTZXEuLi5gIGlzIGBbMCwgTnVtU2l6
ZXMpYCB3aGVyZSBgTnVtU2l6ZXNgIGlzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCisvLyBwYXNz
ZWQgdG8gYExheW91dDo6UGFydGlhbCgpYCBvciBgTGF5b3V0OjpMYXlvdXQoKWAuCisvLworLy8g
YE9mZnNldFNlcS4uLmAgaXMgYFswLCBOdW1PZmZzZXRzKWAgd2hlcmUgYE51bU9mZnNldHNgIGlz
CisvLyBgTWluKHNpemVvZi4uLihFbGVtZW50cyksIE51bVNpemVzICsgMSlgICh0aGUgbnVtYmVy
IG9mIGFycmF5cyBmb3Igd2hpY2ggd2UKKy8vIGNhbiBjb21wdXRlIG9mZnNldHMpLgordGVtcGxh
dGUgPGNsYXNzLi4uIEVsZW1lbnRzLCBzaXplX3QuLi4gU2l6ZVNlcSwgc2l6ZV90Li4uIE9mZnNl
dFNlcT4KK2NsYXNzIExheW91dEltcGw8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4sIGFic2w6Omlu
ZGV4X3NlcXVlbmNlPFNpemVTZXEuLi4+LAorICAgICAgICAgICAgICAgICBhYnNsOjppbmRleF9z
ZXF1ZW5jZTxPZmZzZXRTZXEuLi4+PiB7CisgcHJpdmF0ZToKKyAgc3RhdGljX2Fzc2VydChzaXpl
b2YuLi4oRWxlbWVudHMpID4gMCwgIkF0IGxlYXN0IG9uZSBmaWVsZCBpcyByZXF1aXJlZCIpOwor
ICBzdGF0aWNfYXNzZXJ0KGFic2w6OmNvbmp1bmN0aW9uPElzTGVnYWxFbGVtZW50VHlwZTxFbGVt
ZW50cz4uLi4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiSW52YWxpZCBlbGVtZW50IHR5cGUg
KHNlZSBJc0xlZ2FsRWxlbWVudFR5cGUpIik7CisKKyAgZW51bSB7CisgICAgTnVtVHlwZXMgPSBz
aXplb2YuLi4oRWxlbWVudHMpLAorICAgIE51bVNpemVzID0gc2l6ZW9mLi4uKFNpemVTZXEpLAor
ICAgIE51bU9mZnNldHMgPSBzaXplb2YuLi4oT2Zmc2V0U2VxKSwKKyAgfTsKKworICAvLyBUaGVz
ZSBhcmUgZ3VhcmFudGVlZCBieSBgTGF5b3V0YC4KKyAgc3RhdGljX2Fzc2VydChOdW1PZmZzZXRz
ID09IGFkbF9iYXJyaWVyOjpNaW4oTnVtVHlwZXMsIE51bVNpemVzICsgMSksCisgICAgICAgICAg
ICAgICAgIkludGVybmFsIGVycm9yIik7CisgIHN0YXRpY19hc3NlcnQoTnVtVHlwZXMgPiAwLCAi
SW50ZXJuYWwgZXJyb3IiKTsKKworICAvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiBgVGAgaW4gYEVs
ZW1lbnRzLi4uYC4gUmVzdWx0cyBpbiBhIGNvbXBpbGF0aW9uIGVycm9yCisgIC8vIGlmIGBFbGVt
ZW50cy4uLmAgZG9lc24ndCBjb250YWluIGV4YWN0bHkgb25lIGluc3RhbmNlIG9mIGBUYC4KKyAg
dGVtcGxhdGUgPGNsYXNzIFQ+CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IEVsZW1lbnRJbmRl
eCgpIHsKKyAgICBzdGF0aWNfYXNzZXJ0KENvbnRhaW5zPFR5cGU8VD4sIFR5cGU8dHlwZW5hbWUg
VHlwZTxFbGVtZW50cz46OnR5cGU+Li4uPigpLAorICAgICAgICAgICAgICAgICAgIlR5cGUgbm90
IGZvdW5kIik7CisgICAgcmV0dXJuIGFkbF9iYXJyaWVyOjpGaW5kKFR5cGU8VD4oKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTx0eXBlbmFtZSBUeXBlPEVsZW1lbnRzPjo6dHlw
ZT4oKS4uLik7CisgIH0KKworICB0ZW1wbGF0ZSA8c2l6ZV90IE4+CisgIHVzaW5nIEVsZW1lbnRB
bGlnbm1lbnQgPQorICAgICAgQWxpZ25PZjx0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8Tiwg
c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+Ojp0eXBlPjsKKworIHB1YmxpYzoKKyAgLy8gRWxlbWVu
dCB0eXBlcyBvZiBhbGwgYXJyYXlzIHBhY2tlZCBpbiBhIHR1cGxlLgorICB1c2luZyBFbGVtZW50
VHlwZXMgPSBzdGQ6OnR1cGxlPHR5cGVuYW1lIFR5cGU8RWxlbWVudHM+Ojp0eXBlLi4uPjsKKwor
ICAvLyBFbGVtZW50IHR5cGUgb2YgdGhlIE50aCBhcnJheS4KKyAgdGVtcGxhdGUgPHNpemVfdCBO
PgorICB1c2luZyBFbGVtZW50VHlwZSA9IHR5cGVuYW1lIHN0ZDo6dHVwbGVfZWxlbWVudDxOLCBF
bGVtZW50VHlwZXM+Ojp0eXBlOworCisgIGNvbnN0ZXhwciBleHBsaWNpdCBMYXlvdXRJbXBsKElu
dFRvU2l6ZTxTaXplU2VxPi4uLiBzaXplcykKKyAgICAgIDogc2l6ZV97c2l6ZXMuLi59IHt9CisK
KyAgLy8gQWxpZ25tZW50IG9mIHRoZSBsYXlvdXQsIGVxdWFsIHRvIHRoZSBzdHJpY3Rlc3QgYWxp
Z25tZW50IG9mIGFsbCBlbGVtZW50cy4KKyAgLy8gQWxsIHBvaW50ZXJzIHBhc3NlZCB0byB0aGUg
bWV0aG9kcyBvZiBsYXlvdXQgbXVzdCBiZSBhbGlnbmVkIHRvIHRoaXMgdmFsdWUuCisgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IEFsaWdubWVudCgpIHsKKyAgICByZXR1cm4gYWRsX2JhcnJpZXI6
Ok1heChBbGlnbk9mPEVsZW1lbnRzPjo6dmFsdWUuLi4pOworICB9CisKKyAgLy8gT2Zmc2V0IGlu
IGJ5dGVzIG9mIHRoZSBOdGggYXJyYXkuCisgIC8vCisgIC8vICAgLy8gaW50WzNdLCA0IGJ5dGVz
IG9mIHBhZGRpbmcsIGRvdWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+IHgoMywg
NCk7CisgIC8vICAgYXNzZXJ0KHguT2Zmc2V0PDA+KCkgPT0gMCk7ICAgLy8gVGhlIGludHMgc3Rh
cnRzIGZyb20gMC4KKyAgLy8gICBhc3NlcnQoeC5PZmZzZXQ8MT4oKSA9PSAxNik7ICAvLyBUaGUg
ZG91YmxlcyBzdGFydHMgZnJvbSAxNi4KKyAgLy8KKyAgLy8gUmVxdWlyZXM6IGBOIDw9IE51bVNp
emVzICYmIE4gPCBzaXplb2YuLi4oVHMpYC4KKyAgdGVtcGxhdGUgPHNpemVfdCBOLCBFbmFibGVJ
ZjxOID09IDA+ID0gMD4KKyAgY29uc3RleHByIHNpemVfdCBPZmZzZXQoKSBjb25zdCB7CisgICAg
cmV0dXJuIDA7CisgIH0KKworICB0ZW1wbGF0ZSA8c2l6ZV90IE4sIEVuYWJsZUlmPE4gIT0gMD4g
PSAwPgorICBjb25zdGV4cHIgc2l6ZV90IE9mZnNldCgpIGNvbnN0IHsKKyAgICBzdGF0aWNfYXNz
ZXJ0KE4gPCBOdW1PZmZzZXRzLCAiSW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAgIHJldHVybiBh
ZGxfYmFycmllcjo6QWxpZ24oCisgICAgICAgIE9mZnNldDxOIC0gMT4oKSArIFNpemVPZjxFbGVt
ZW50VHlwZTxOIC0gMT4+KCkgKiBzaXplX1tOIC0gMV0sCisgICAgICAgIEVsZW1lbnRBbGlnbm1l
bnQ8Tj4oKSk7CisgIH0KKworICAvLyBPZmZzZXQgaW4gYnl0ZXMgb2YgdGhlIGFycmF5IHdpdGgg
dGhlIHNwZWNpZmllZCBlbGVtZW50IHR5cGUuIFRoZXJlIG11c3QKKyAgLy8gYmUgZXhhY3RseSBv
bmUgc3VjaCBhcnJheSBhbmQgaXRzIHplcm8tYmFzZWQgaW5kZXggbXVzdCBiZSBhdCBtb3N0Cisg
IC8vIGBOdW1TaXplc2AuCisgIC8vCisgIC8vICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRp
bmcsIGRvdWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+IHgoMywgNCk7CisgIC8v
ICAgYXNzZXJ0KHguT2Zmc2V0PGludD4oKSA9PSAwKTsgICAgICAvLyBUaGUgaW50cyBzdGFydHMg
ZnJvbSAwLgorICAvLyAgIGFzc2VydCh4Lk9mZnNldDxkb3VibGU+KCkgPT0gMTYpOyAgLy8gVGhl
IGRvdWJsZXMgc3RhcnRzIGZyb20gMTYuCisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICBjb25zdGV4
cHIgc2l6ZV90IE9mZnNldCgpIGNvbnN0IHsKKyAgICByZXR1cm4gT2Zmc2V0PEVsZW1lbnRJbmRl
eDxUPigpPigpOworICB9CisKKyAgLy8gT2Zmc2V0cyBpbiBieXRlcyBvZiBhbGwgYXJyYXlzIGZv
ciB3aGljaCB0aGUgb2Zmc2V0cyBhcmUga25vd24uCisgIGNvbnN0ZXhwciBzdGQ6OmFycmF5PHNp
emVfdCwgTnVtT2Zmc2V0cz4gT2Zmc2V0cygpIGNvbnN0IHsKKyAgICByZXR1cm4ge3tPZmZzZXQ8
T2Zmc2V0U2VxPigpLi4ufX07CisgIH0KKworICAvLyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGlu
IHRoZSBOdGggYXJyYXkuIFRoaXMgaXMgdGhlIE50aCBhcmd1bWVudCBvZgorICAvLyBgTGF5b3V0
OjpQYXJ0aWFsKClgIG9yIGBMYXlvdXQ6OkxheW91dCgpYCAoemVyby1iYXNlZCkuCisgIC8vCisg
IC8vICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGRvdWJsZVs0XS4KKyAgLy8gICBM
YXlvdXQ8aW50LCBkb3VibGU+IHgoMywgNCk7CisgIC8vICAgYXNzZXJ0KHguU2l6ZTwwPigpID09
IDMpOworICAvLyAgIGFzc2VydCh4LlNpemU8MT4oKSA9PSA0KTsKKyAgLy8KKyAgLy8gUmVxdWly
ZXM6IGBOIDwgTnVtU2l6ZXNgLgorICB0ZW1wbGF0ZSA8c2l6ZV90IE4+CisgIGNvbnN0ZXhwciBz
aXplX3QgU2l6ZSgpIGNvbnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KE4gPCBOdW1TaXplcywgIklu
ZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICByZXR1cm4gc2l6ZV9bTl07CisgIH0KKworICAvLyBU
aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhcnJheSB3aXRoIHRoZSBzcGVjaWZpZWQgZWxl
bWVudCB0eXBlLgorICAvLyBUaGVyZSBtdXN0IGJlIGV4YWN0bHkgb25lIHN1Y2ggYXJyYXkgYW5k
IGl0cyB6ZXJvLWJhc2VkIGluZGV4IG11c3QgYmUKKyAgLy8gYXQgbW9zdCBgTnVtU2l6ZXNgLgor
ICAvLworICAvLyAgIC8vIGludFszXSwgNCBieXRlcyBvZiBwYWRkaW5nLCBkb3VibGVbNF0uCisg
IC8vICAgTGF5b3V0PGludCwgZG91YmxlPiB4KDMsIDQpOworICAvLyAgIGFzc2VydCh4LlNpemU8
aW50PigpID09IDMpOworICAvLyAgIGFzc2VydCh4LlNpemU8ZG91YmxlPigpID09IDQpOworICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgY29uc3RleHByIHNpemVfdCBTaXplKCkgY29uc3QgeworICAg
IHJldHVybiBTaXplPEVsZW1lbnRJbmRleDxUPigpPigpOworICB9CisKKyAgICAvLyBUaGUgbnVt
YmVyIG9mIGVsZW1lbnRzIG9mIGFsbCBhcnJheXMgZm9yIHdoaWNoIHRoZXkgYXJlIGtub3duLgor
ICBjb25zdGV4cHIgc3RkOjphcnJheTxzaXplX3QsIE51bVNpemVzPiBTaXplcygpIGNvbnN0IHsK
KyAgICByZXR1cm4ge3tTaXplPFNpemVTZXE+KCkuLi59fTsKKyAgfQorCisgIC8vIFBvaW50ZXIg
dG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgTnRoIGFycmF5LgorICAvLworICAvLyBgQ2hhcmAgbXVz
dCBiZSBgW2NvbnN0XSBbc2lnbmVkfHVuc2lnbmVkXSBjaGFyYC4KKyAgLy8KKyAgLy8gICAvLyBp
bnRbM10sIDQgYnl0ZXMgb2YgcGFkZGluZywgZG91YmxlWzRdLgorICAvLyAgIExheW91dDxpbnQs
IGRvdWJsZT4geCgzLCA0KTsKKyAgLy8gICB1bnNpZ25lZCBjaGFyKiBwID0gbmV3IHVuc2lnbmVk
IGNoYXJbeC5BbGxvY1NpemUoKV07CisgIC8vICAgaW50KiBpbnRzID0geC5Qb2ludGVyPDA+KHAp
OworICAvLyAgIGRvdWJsZSogZG91YmxlcyA9IHguUG9pbnRlcjwxPihwKTsKKyAgLy8KKyAgLy8g
UmVxdWlyZXM6IGBOIDw9IE51bVNpemVzICYmIE4gPCBzaXplb2YuLi4oVHMpYC4KKyAgLy8gUmVx
dWlyZXM6IGBwYCBpcyBhbGlnbmVkIHRvIGBBbGlnbm1lbnQoKWAuCisgIHRlbXBsYXRlIDxzaXpl
X3QgTiwgY2xhc3MgQ2hhcj4KKyAgQ29weUNvbnN0PENoYXIsIEVsZW1lbnRUeXBlPE4+PiogUG9p
bnRlcihDaGFyKiBwKSBjb25zdCB7CisgICAgdXNpbmcgQyA9IHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2NvbnN0PENoYXI+Ojp0eXBlOworICAgIHN0YXRpY19hc3NlcnQoCisgICAgICAgIHN0ZDo6aXNf
c2FtZTxDLCBjaGFyPigpIHx8IHN0ZDo6aXNfc2FtZTxDLCB1bnNpZ25lZCBjaGFyPigpIHx8Cisg
ICAgICAgICAgICBzdGQ6OmlzX3NhbWU8Qywgc2lnbmVkIGNoYXI+KCksCisgICAgICAgICJUaGUg
YXJndW1lbnQgbXVzdCBiZSBhIHBvaW50ZXIgdG8gW2NvbnN0XSBbc2lnbmVkfHVuc2lnbmVkXSBj
aGFyIik7CisgICAgY29uc3RleHByIHNpemVfdCBhbGlnbm1lbnQgPSBBbGlnbm1lbnQoKTsKKyAg
ICAodm9pZClhbGlnbm1lbnQ7CisgICAgYXNzZXJ0KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihwKSAlIGFsaWdubWVudCA9PSAwKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb3B5
Q29uc3Q8Q2hhciwgRWxlbWVudFR5cGU8Tj4+Kj4ocCArIE9mZnNldDxOPigpKTsKKyAgfQorCisg
IC8vIFBvaW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkgd2l0aCB0aGUgc3BlY2lm
aWVkIGVsZW1lbnQgdHlwZS4KKyAgLy8gVGhlcmUgbXVzdCBiZSBleGFjdGx5IG9uZSBzdWNoIGFy
cmF5IGFuZCBpdHMgemVyby1iYXNlZCBpbmRleCBtdXN0IGJlIGF0CisgIC8vIG1vc3QgYE51bVNp
emVzYC4KKyAgLy8KKyAgLy8gYENoYXJgIG11c3QgYmUgYFtjb25zdF0gW3NpZ25lZHx1bnNpZ25l
ZF0gY2hhcmAuCisgIC8vCisgIC8vICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGRv
dWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+IHgoMywgNCk7CisgIC8vICAgdW5z
aWduZWQgY2hhciogcCA9IG5ldyB1bnNpZ25lZCBjaGFyW3guQWxsb2NTaXplKCldOworICAvLyAg
IGludCogaW50cyA9IHguUG9pbnRlcjxpbnQ+KHApOworICAvLyAgIGRvdWJsZSogZG91YmxlcyA9
IHguUG9pbnRlcjxkb3VibGU+KHApOworICAvLworICAvLyBSZXF1aXJlczogYHBgIGlzIGFsaWdu
ZWQgdG8gYEFsaWdubWVudCgpYC4KKyAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIENoYXI+Cisg
IENvcHlDb25zdDxDaGFyLCBUPiogUG9pbnRlcihDaGFyKiBwKSBjb25zdCB7CisgICAgcmV0dXJu
IFBvaW50ZXI8RWxlbWVudEluZGV4PFQ+KCk+KHApOworICB9CisKKyAgLy8gUG9pbnRlcnMgdG8g
YWxsIGFycmF5cyBmb3Igd2hpY2ggcG9pbnRlcnMgYXJlIGtub3duLgorICAvLworICAvLyBgQ2hh
cmAgbXVzdCBiZSBgW2NvbnN0XSBbc2lnbmVkfHVuc2lnbmVkXSBjaGFyYC4KKyAgLy8KKyAgLy8g
ICAvLyBpbnRbM10sIDQgYnl0ZXMgb2YgcGFkZGluZywgZG91YmxlWzRdLgorICAvLyAgIExheW91
dDxpbnQsIGRvdWJsZT4geCgzLCA0KTsKKyAgLy8gICB1bnNpZ25lZCBjaGFyKiBwID0gbmV3IHVu
c2lnbmVkIGNoYXJbeC5BbGxvY1NpemUoKV07CisgIC8vCisgIC8vICAgaW50KiBpbnRzOworICAv
LyAgIGRvdWJsZSogZG91YmxlczsKKyAgLy8gICBzdGQ6OnRpZShpbnRzLCBkb3VibGVzKSA9IHgu
UG9pbnRlcnMocCk7CisgIC8vCisgIC8vIFJlcXVpcmVzOiBgcGAgaXMgYWxpZ25lZCB0byBgQWxp
Z25tZW50KClgLgorICAvLworICAvLyBOb3RlOiBXZSdyZSBub3QgdXNpbmcgRWxlbWVudFR5cGUg
YWxpYXMgaGVyZSBiZWNhdXNlIGl0IGRvZXMgbm90IGNvbXBpbGUKKyAgLy8gdW5kZXIgTVNWQy4K
KyAgdGVtcGxhdGUgPGNsYXNzIENoYXI+CisgIHN0ZDo6dHVwbGU8Q29weUNvbnN0PAorICAgICAg
Q2hhciwgdHlwZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PE9mZnNldFNlcSwgRWxlbWVudFR5cGVz
Pjo6dHlwZT4qLi4uPgorICBQb2ludGVycyhDaGFyKiBwKSBjb25zdCB7CisgICAgcmV0dXJuIHN0
ZDo6dHVwbGU8Q29weUNvbnN0PENoYXIsIEVsZW1lbnRUeXBlPE9mZnNldFNlcT4+Ki4uLj4oCisg
ICAgICAgIFBvaW50ZXI8T2Zmc2V0U2VxPihwKS4uLik7CisgIH0KKworICAvLyBUaGUgTnRoIGFy
cmF5LgorICAvLworICAvLyBgQ2hhcmAgbXVzdCBiZSBgW2NvbnN0XSBbc2lnbmVkfHVuc2lnbmVk
XSBjaGFyYC4KKyAgLy8KKyAgLy8gICAvLyBpbnRbM10sIDQgYnl0ZXMgb2YgcGFkZGluZywgZG91
YmxlWzRdLgorICAvLyAgIExheW91dDxpbnQsIGRvdWJsZT4geCgzLCA0KTsKKyAgLy8gICB1bnNp
Z25lZCBjaGFyKiBwID0gbmV3IHVuc2lnbmVkIGNoYXJbeC5BbGxvY1NpemUoKV07CisgIC8vICAg
U3BhbjxpbnQ+IGludHMgPSB4LlNsaWNlPDA+KHApOworICAvLyAgIFNwYW48ZG91YmxlPiBkb3Vi
bGVzID0geC5TbGljZTwxPihwKTsKKyAgLy8KKyAgLy8gUmVxdWlyZXM6IGBOIDwgTnVtU2l6ZXNg
LgorICAvLyBSZXF1aXJlczogYHBgIGlzIGFsaWduZWQgdG8gYEFsaWdubWVudCgpYC4KKyAgdGVt
cGxhdGUgPHNpemVfdCBOLCBjbGFzcyBDaGFyPgorICBTbGljZVR5cGU8Q29weUNvbnN0PENoYXIs
IEVsZW1lbnRUeXBlPE4+Pj4gU2xpY2UoQ2hhciogcCkgY29uc3QgeworICAgIHJldHVybiBTbGlj
ZVR5cGU8Q29weUNvbnN0PENoYXIsIEVsZW1lbnRUeXBlPE4+Pj4oUG9pbnRlcjxOPihwKSwgU2l6
ZTxOPigpKTsKKyAgfQorCisgIC8vIFRoZSBhcnJheSB3aXRoIHRoZSBzcGVjaWZpZWQgZWxlbWVu
dCB0eXBlLiBUaGVyZSBtdXN0IGJlIGV4YWN0bHkgb25lCisgIC8vIHN1Y2ggYXJyYXkgYW5kIGl0
cyB6ZXJvLWJhc2VkIGluZGV4IG11c3QgYmUgbGVzcyB0aGFuIGBOdW1TaXplc2AuCisgIC8vCisg
IC8vIGBDaGFyYCBtdXN0IGJlIGBbY29uc3RdIFtzaWduZWR8dW5zaWduZWRdIGNoYXJgLgorICAv
LworICAvLyAgIC8vIGludFszXSwgNCBieXRlcyBvZiBwYWRkaW5nLCBkb3VibGVbNF0uCisgIC8v
ICAgTGF5b3V0PGludCwgZG91YmxlPiB4KDMsIDQpOworICAvLyAgIHVuc2lnbmVkIGNoYXIqIHAg
PSBuZXcgdW5zaWduZWQgY2hhclt4LkFsbG9jU2l6ZSgpXTsKKyAgLy8gICBTcGFuPGludD4gaW50
cyA9IHguU2xpY2U8aW50PihwKTsKKyAgLy8gICBTcGFuPGRvdWJsZT4gZG91YmxlcyA9IHguU2xp
Y2U8ZG91YmxlPihwKTsKKyAgLy8KKyAgLy8gUmVxdWlyZXM6IGBwYCBpcyBhbGlnbmVkIHRvIGBB
bGlnbm1lbnQoKWAuCisgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBDaGFyPgorICBTbGljZVR5
cGU8Q29weUNvbnN0PENoYXIsIFQ+PiBTbGljZShDaGFyKiBwKSBjb25zdCB7CisgICAgcmV0dXJu
IFNsaWNlPEVsZW1lbnRJbmRleDxUPigpPihwKTsKKyAgfQorCisgIC8vIEFsbCBhcnJheXMgd2l0
aCBrbm93biBzaXplcy4KKyAgLy8KKyAgLy8gYENoYXJgIG11c3QgYmUgYFtjb25zdF0gW3NpZ25l
ZHx1bnNpZ25lZF0gY2hhcmAuCisgIC8vCisgIC8vICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBh
ZGRpbmcsIGRvdWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+IHgoMywgNCk7Cisg
IC8vICAgdW5zaWduZWQgY2hhciogcCA9IG5ldyB1bnNpZ25lZCBjaGFyW3guQWxsb2NTaXplKCld
OworICAvLworICAvLyAgIFNwYW48aW50PiBpbnRzOworICAvLyAgIFNwYW48ZG91YmxlPiBkb3Vi
bGVzOworICAvLyAgIHN0ZDo6dGllKGludHMsIGRvdWJsZXMpID0geC5TbGljZXMocCk7CisgIC8v
CisgIC8vIFJlcXVpcmVzOiBgcGAgaXMgYWxpZ25lZCB0byBgQWxpZ25tZW50KClgLgorICAvLwor
ICAvLyBOb3RlOiBXZSdyZSBub3QgdXNpbmcgRWxlbWVudFR5cGUgYWxpYXMgaGVyZSBiZWNhdXNl
IGl0IGRvZXMgbm90IGNvbXBpbGUKKyAgLy8gdW5kZXIgTVNWQy4KKyAgdGVtcGxhdGUgPGNsYXNz
IENoYXI+CisgIHN0ZDo6dHVwbGU8U2xpY2VUeXBlPENvcHlDb25zdDwKKyAgICAgIENoYXIsIHR5
cGVuYW1lIHN0ZDo6dHVwbGVfZWxlbWVudDxTaXplU2VxLCBFbGVtZW50VHlwZXM+Ojp0eXBlPj4u
Li4+CisgIFNsaWNlcyhDaGFyKiBwKSBjb25zdCB7CisgICAgLy8gV29ya2Fyb3VuZCBmb3IgaHR0
cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjM4NzUgKGZpeGVkCisg
ICAgLy8gaW4gNi4xKS4KKyAgICAodm9pZClwOworICAgIHJldHVybiBzdGQ6OnR1cGxlPFNsaWNl
VHlwZTxDb3B5Q29uc3Q8Q2hhciwgRWxlbWVudFR5cGU8U2l6ZVNlcT4+Pi4uLj4oCisgICAgICAg
IFNsaWNlPFNpemVTZXE+KHApLi4uKTsKKyAgfQorCisgIC8vIFRoZSBzaXplIG9mIHRoZSBhbGxv
Y2F0aW9uIHRoYXQgZml0cyBhbGwgYXJyYXlzLgorICAvLworICAvLyAgIC8vIGludFszXSwgNCBi
eXRlcyBvZiBwYWRkaW5nLCBkb3VibGVbNF0uCisgIC8vICAgTGF5b3V0PGludCwgZG91YmxlPiB4
KDMsIDQpOworICAvLyAgIHVuc2lnbmVkIGNoYXIqIHAgPSBuZXcgdW5zaWduZWQgY2hhclt4LkFs
bG9jU2l6ZSgpXTsgIC8vIDQ4IGJ5dGVzCisgIC8vCisgIC8vIFJlcXVpcmVzOiBgTnVtU2l6ZXMg
PT0gc2l6ZW9mLi4uKFRzKWAuCisgIGNvbnN0ZXhwciBzaXplX3QgQWxsb2NTaXplKCkgY29uc3Qg
eworICAgIHN0YXRpY19hc3NlcnQoTnVtVHlwZXMgPT0gTnVtU2l6ZXMsICJZb3UgbXVzdCBzcGVj
aWZ5IHNpemVzIG9mIGFsbCBmaWVsZHMiKTsKKyAgICByZXR1cm4gT2Zmc2V0PE51bVR5cGVzIC0g
MT4oKSArCisgICAgICAgICAgIFNpemVPZjxFbGVtZW50VHlwZTxOdW1UeXBlcyAtIDE+PigpICog
c2l6ZV9bTnVtVHlwZXMgLSAxXTsKKyAgfQorCisgIC8vIElmIGJ1aWx0IHdpdGggLS1jb25maWc9
YXNhbiwgcG9pc29ucyBwYWRkaW5nIGJ5dGVzIChpZiBhbnkpIGluIHRoZQorICAvLyBhbGxvY2F0
aW9uLiBUaGUgcG9pbnRlciBtdXN0IHBvaW50IHRvIGEgbWVtb3J5IGJsb2NrIGF0IGxlYXN0Cisg
IC8vIGBBbGxvY1NpemUoKWAgYnl0ZXMgaW4gbGVuZ3RoLgorICAvLworICAvLyBgQ2hhcmAgbXVz
dCBiZSBgW2NvbnN0XSBbc2lnbmVkfHVuc2lnbmVkXSBjaGFyYC4KKyAgLy8KKyAgLy8gUmVxdWly
ZXM6IGBwYCBpcyBhbGlnbmVkIHRvIGBBbGlnbm1lbnQoKWAuCisgIHRlbXBsYXRlIDxjbGFzcyBD
aGFyLCBzaXplX3QgTiA9IE51bU9mZnNldHMgLSAxLCBFbmFibGVJZjxOID09IDA+ID0gMD4KKyAg
dm9pZCBQb2lzb25QYWRkaW5nKGNvbnN0IENoYXIqIHApIGNvbnN0IHsKKyAgICBQb2ludGVyPDA+
KHApOyAgLy8gdmVyaWZ5IHRoZSByZXF1aXJlbWVudHMgb24gYENoYXJgIGFuZCBgcGAKKyAgfQor
CisgIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBzaXplX3QgTiA9IE51bU9mZnNldHMgLSAxLCBFbmFi
bGVJZjxOICE9IDA+ID0gMD4KKyAgdm9pZCBQb2lzb25QYWRkaW5nKGNvbnN0IENoYXIqIHApIGNv
bnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KE4gPCBOdW1PZmZzZXRzLCAiSW5kZXggb3V0IG9mIGJv
dW5kcyIpOworICAgICh2b2lkKXA7CisjaWZkZWYgQUREUkVTU19TQU5JVElaRVIKKyAgICBQb2lz
b25QYWRkaW5nPENoYXIsIE4gLSAxPihwKTsKKyAgICAvLyBUaGUgYGlmYCBpcyBhbiBvcHRpbWl6
YXRpb24uIEl0IGRvZXNuJ3QgYWZmZWN0IHRoZSBvYnNlcnZhYmxlIGJlaGF2aW91ci4KKyAgICBp
ZiAoRWxlbWVudEFsaWdubWVudDxOIC0gMT4oKSAlIEVsZW1lbnRBbGlnbm1lbnQ8Tj4oKSkgewor
ICAgICAgc2l6ZV90IHN0YXJ0ID0KKyAgICAgICAgICBPZmZzZXQ8TiAtIDE+KCkgKyBTaXplT2Y8
RWxlbWVudFR5cGU8TiAtIDE+PigpICogc2l6ZV9bTiAtIDFdOworICAgICAgQVNBTl9QT0lTT05f
TUVNT1JZX1JFR0lPTihwICsgc3RhcnQsIE9mZnNldDxOPigpIC0gc3RhcnQpOworICAgIH0KKyNl
bmRpZgorICB9CisKKyAgLy8gSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIG1lbW9y
eSBsYXlvdXQuIFVzZWZ1bCBmb3IgZGVidWdnaW5nLgorICAvLyBTbG93LgorICAvLworICAvLyAg
IC8vIGNoYXJbNV0sIDMgYnl0ZXMgb2YgcGFkZGluZywgaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRp
bmcsIGZvbGxvd2VkCisgIC8vICAgLy8gYnkgYW4gdW5rbm93biBudW1iZXIgb2YgZG91Ymxlcy4K
KyAgLy8gICBhdXRvIHggPSBMYXlvdXQ8Y2hhciwgaW50LCBkb3VibGU+OjpQYXJ0aWFsKDUsIDMp
OworICAvLyAgIGFzc2VydCh4LkRlYnVnU3RyaW5nKCkgPT0KKyAgLy8gICAgICAgICAgIkAwPGNo
YXI+KDEpWzVdOyBAODxpbnQ+KDQpWzNdOyBAMjQ8ZG91YmxlPig4KSIpOworICAvLworICAvLyBF
YWNoIGZpZWxkIGlzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OiBAb2Zmc2V0PHR5cGU+KHNpemVv
Zilbc2l6ZV0gKDx0eXBlPgorICAvLyBtYXkgYmUgbWlzc2luZyBkZXBlbmRpbmcgb24gdGhlIHRh
cmdldCBwbGF0Zm9ybSkuIEZvciBleGFtcGxlLAorICAvLyBAODxpbnQ+KDQpWzNdIG1lYW5zIHRo
YXQgYXQgb2Zmc2V0IDggd2UgaGF2ZSBhbiBhcnJheSBvZiBpbnRzLCB3aGVyZSBlYWNoCisgIC8v
IGludCBpcyA0IGJ5dGVzLCBhbmQgd2UgaGF2ZSAzIG9mIHRob3NlIGludHMuIFRoZSBzaXplIG9m
IHRoZSBsYXN0IGZpZWxkIG1heQorICAvLyBiZSBtaXNzaW5nIChhcyBpbiB0aGUgZXhhbXBsZSBh
Ym92ZSkuIE9ubHkgZmllbGRzIHdpdGgga25vd24gb2Zmc2V0cyBhcmUKKyAgLy8gZGVzY3JpYmVk
LiBUeXBlIG5hbWVzIG1heSBkaWZmZXIgYWNyb3NzIHBsYXRmb3Jtczogb25lIGNvbXBpbGVyIG1p
Z2h0CisgIC8vIHByb2R1Y2UgInVuc2lnbmVkKiIgd2hlcmUgYW5vdGhlciBwcm9kdWNlcyAidW5z
aWduZWQgaW50ICoiLgorICBzdGQ6OnN0cmluZyBEZWJ1Z1N0cmluZygpIGNvbnN0IHsKKyAgICBj
b25zdCBhdXRvIG9mZnNldHMgPSBPZmZzZXRzKCk7CisgICAgY29uc3Qgc2l6ZV90IHNpemVzW10g
PSB7U2l6ZU9mPEVsZW1lbnRUeXBlPE9mZnNldFNlcT4+KCkuLi59OworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHR5cGVzW10gPSB7YWRsX2JhcnJpZXI6OlR5cGVOYW1lPEVsZW1lbnRUeXBlPE9mZnNl
dFNlcT4+KCkuLi59OworICAgIHN0ZDo6c3RyaW5nIHJlcyA9IGFic2w6OlN0ckNhdCgiQDAiLCB0
eXBlc1swXSwgIigiLCBzaXplc1swXSwgIikiKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAh
PSBOdW1PZmZzZXRzIC0gMTsgKytpKSB7CisgICAgICBhYnNsOjpTdHJBcHBlbmQoJnJlcywgIlsi
LCBzaXplX1tpXSwgIl07IEAiLCBvZmZzZXRzW2kgKyAxXSwgdHlwZXNbaSArIDFdLAorICAgICAg
ICAgICAgICAgICAgICAgICIoIiwgc2l6ZXNbaSArIDFdLCAiKSIpOworICAgIH0KKyAgICAvLyBO
dW1TaXplcyBpcyBhIGNvbnN0YW50IHRoYXQgbWF5IGJlIHplcm8uIFNvbWUgY29tcGlsZXJzIGNh
bm5vdCBzZWUgdGhhdAorICAgIC8vIGluc2lkZSB0aGUgaWYgc3RhdGVtZW50ICJzaXplX1tOdW1T
aXplcyAtIDFdIiBtdXN0IGJlIHZhbGlkLgorICAgIGludCBsYXN0ID0gc3RhdGljX2Nhc3Q8aW50
PihOdW1TaXplcykgLSAxOworICAgIGlmIChOdW1UeXBlcyA9PSBOdW1TaXplcyAmJiBsYXN0ID49
IDApIHsKKyAgICAgIGFic2w6OlN0ckFwcGVuZCgmcmVzLCAiWyIsIHNpemVfW2xhc3RdLCAiXSIp
OworICAgIH0KKyAgICByZXR1cm4gcmVzOworICB9CisKKyBwcml2YXRlOgorICAvLyBBcmd1bWVu
dHMgb2YgYExheW91dDo6UGFydGlhbCgpYCBvciBgTGF5b3V0OjpMYXlvdXQoKWAuCisgIHNpemVf
dCBzaXplX1tOdW1TaXplcyA+IDAgPyBOdW1TaXplcyA6IDFdOworfTsKKwordGVtcGxhdGUgPHNp
emVfdCBOdW1TaXplcywgY2xhc3MuLi4gVHM+Cit1c2luZyBMYXlvdXRUeXBlID0gTGF5b3V0SW1w
bDwKKyAgICBzdGQ6OnR1cGxlPFRzLi4uPiwgYWJzbDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxOdW1T
aXplcz4sCisgICAgYWJzbDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxhZGxfYmFycmllcjo6TWluKHNp
emVvZi4uLihUcyksIE51bVNpemVzICsgMSk+PjsKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
X2xheW91dAorCisvLyBEZXNjcmlwdG9yIG9mIGFycmF5cyBvZiB2YXJpb3VzIHR5cGVzIGFuZCBz
aXplcyBsYWlkIG91dCBpbiBtZW1vcnkgb25lIGFmdGVyCisvLyBhbm90aGVyLiBTZWUgdGhlIHRv
cCBvZiB0aGUgZmlsZSBmb3IgZG9jdW1lbnRhdGlvbi4KKy8vCisvLyBDaGVjayBvdXQgdGhlIHB1
YmxpYyBBUEkgb2YgaW50ZXJuYWxfbGF5b3V0OjpMYXlvdXRJbXBsIGFib3ZlLiBUaGUgdHlwZSBp
cworLy8gaW50ZXJuYWwgdG8gdGhlIGxpYnJhcnkgYnV0IGl0cyBtZXRob2RzIGFyZSBwdWJsaWMs
IGFuZCB0aGV5IGFyZSBpbmhlcml0ZWQKKy8vIGJ5IGBMYXlvdXRgLgordGVtcGxhdGUgPGNsYXNz
Li4uIFRzPgorY2xhc3MgTGF5b3V0IDogcHVibGljIGludGVybmFsX2xheW91dDo6TGF5b3V0VHlw
ZTxzaXplb2YuLi4oVHMpLCBUcy4uLj4geworIHB1YmxpYzoKKyAgc3RhdGljX2Fzc2VydChzaXpl
b2YuLi4oVHMpID4gMCwgIkF0IGxlYXN0IG9uZSBmaWVsZCBpcyByZXF1aXJlZCIpOworICBzdGF0
aWNfYXNzZXJ0KAorICAgICAgYWJzbDo6Y29uanVuY3Rpb248aW50ZXJuYWxfbGF5b3V0OjpJc0xl
Z2FsRWxlbWVudFR5cGU8VHM+Li4uPjo6dmFsdWUsCisgICAgICAiSW52YWxpZCBlbGVtZW50IHR5
cGUgKHNlZSBJc0xlZ2FsRWxlbWVudFR5cGUpIik7CisKKyAgLy8gVGhlIHJlc3VsdCB0eXBlIG9m
IGBQYXJ0aWFsKClgIHdpdGggYE51bVNpemVzYCBhcmd1bWVudHMuCisgIHRlbXBsYXRlIDxzaXpl
X3QgTnVtU2l6ZXM+CisgIHVzaW5nIFBhcnRpYWxUeXBlID0gaW50ZXJuYWxfbGF5b3V0OjpMYXlv
dXRUeXBlPE51bVNpemVzLCBUcy4uLj47CisKKyAgLy8gYExheW91dGAga25vd3MgdGhlIGVsZW1l
bnQgdHlwZXMgb2YgdGhlIGFycmF5cyB3ZSB3YW50IHRvIGxheSBvdXQgaW4KKyAgLy8gbWVtb3J5
IGJ1dCBub3QgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBlYWNoIGFycmF5LgorICAvLyBgUGFy
dGlhbChzaXplMSwgLi4uLCBzaXplTilgIGFsbG93cyB1cyB0byBzcGVjaWZ5IHRoZSBsYXR0ZXIu
IFRoZQorICAvLyByZXN1bHRpbmcgaW1tdXRhYmxlIG9iamVjdCBjYW4gYmUgdXNlZCB0byBvYnRh
aW4gcG9pbnRlcnMgdG8gdGhlCisgIC8vIGluZGl2aWR1YWwgYXJyYXlzLgorICAvLworICAvLyBJ
dCdzIGFsbG93ZWQgdG8gcGFzcyBmZXdlciBhcnJheSBzaXplcyB0aGFuIHRoZSBudW1iZXIgb2Yg
YXJyYXlzLiBFLmcuLAorICAvLyBpZiBhbGwgeW91IG5lZWQgaXMgdG8gdGhlIG9mZnNldCBvZiB0
aGUgc2Vjb25kIGFycmF5LCB5b3Ugb25seSBuZWVkIHRvCisgIC8vIHBhc3Mgb25lIGFyZ3VtZW50
IC0tIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGZpcnN0IGFycmF5cy4KKyAgLy8KKyAg
Ly8gICAvLyBpbnRbM10gZm9sbG93ZWQgYnkgNCBieXRlcyBvZiBwYWRkaW5nIGFuZCBhbiB1bmtu
b3duIG51bWJlciBvZgorICAvLyAgIC8vIGRvdWJsZXMuCisgIC8vICAgYXV0byB4ID0gTGF5b3V0
PGludCwgZG91YmxlPjo6UGFydGlhbCgzKTsKKyAgLy8gICAvLyBkb3VibGVzIHN0YXJ0IGF0IGJ5
dGUgMTYuCisgIC8vICAgYXNzZXJ0KHguT2Zmc2V0PDE+KCkgPT0gMTYpOworICAvLworICAvLyBJ
ZiB5b3Uga25vdyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFsbCBhcnJheXMsIHlvdSBjYW4g
c3RpbGwgY2FsbAorICAvLyBgUGFydGlhbCgpYCBidXQgaXQncyBtb3JlIGNvbnZlbmllbnQgdG8g
dXNlIHRoZSBjb25zdHJ1Y3RvciBvZiBgTGF5b3V0YC4KKyAgLy8KKyAgLy8gICBMYXlvdXQ8aW50
LCBkb3VibGU+IHgoMywgNSk7CisgIC8vCisgIC8vIE5vdGU6IFRoZSBzaXplcyBvZiB0aGUgYXJy
YXlzIG11c3QgYmUgc3BlY2lmaWVkIGluIG51bWJlciBvZiBlbGVtZW50cywKKyAgLy8gbm90IGlu
IGJ5dGVzLgorICAvLworICAvLyBSZXF1aXJlczogYHNpemVvZi4uLihTaXplcykgPD0gc2l6ZW9m
Li4uKFRzKWAuCisgIC8vIFJlcXVpcmVzOiBhbGwgYXJndW1lbnRzIGFyZSBjb252ZXJ0aWJsZSB0
byBgc2l6ZV90YC4KKyAgdGVtcGxhdGUgPGNsYXNzLi4uIFNpemVzPgorICBzdGF0aWMgY29uc3Rl
eHByIFBhcnRpYWxUeXBlPHNpemVvZi4uLihTaXplcyk+IFBhcnRpYWwoU2l6ZXMmJi4uLiBzaXpl
cykgeworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mLi4uKFNpemVzKSA8PSBzaXplb2YuLi4oVHMp
LCAiIik7CisgICAgcmV0dXJuIFBhcnRpYWxUeXBlPHNpemVvZi4uLihTaXplcyk+KGFic2w6OmZv
cndhcmQ8U2l6ZXM+KHNpemVzKS4uLik7CisgIH0KKworICAvLyBDcmVhdGVzIGEgbGF5b3V0IHdp
dGggdGhlIHNpemVzIG9mIGFsbCBhcnJheXMgc3BlY2lmaWVkLiBJZiB5b3Uga25vdworICAvLyBv
bmx5IHRoZSBzaXplcyBvZiB0aGUgZmlyc3QgTiBhcnJheXMgKHdoZXJlIE4gY2FuIGJlIHplcm8p
LCB5b3UgY2FuIHVzZQorICAvLyBgUGFydGlhbCgpYCBkZWZpbmVkIGFib3ZlLiBUaGUgY29uc3Ry
dWN0b3IgaXMgZXNzZW50aWFsbHkgZXF1aXZhbGVudCB0bworICAvLyBjYWxsaW5nIGBQYXJ0aWFs
KClgIGFuZCBwYXNzaW5nIGluIGFsbCBhcnJheSBzaXplczsgdGhlIGNvbnN0cnVjdG9yIGlzCisg
IC8vIHByb3ZpZGVkIGFzIGEgY29udmVuaWVudCBhYmJyZXZpYXRpb24uCisgIC8vCisgIC8vIE5v
dGU6IFRoZSBzaXplcyBvZiB0aGUgYXJyYXlzIG11c3QgYmUgc3BlY2lmaWVkIGluIG51bWJlciBv
ZiBlbGVtZW50cywKKyAgLy8gbm90IGluIGJ5dGVzLgorICBjb25zdGV4cHIgZXhwbGljaXQgTGF5
b3V0KGludGVybmFsX2xheW91dDo6VHlwZVRvU2l6ZTxUcz4uLi4gc2l6ZXMpCisgICAgICA6IGlu
dGVybmFsX2xheW91dDo6TGF5b3V0VHlwZTxzaXplb2YuLi4oVHMpLCBUcy4uLj4oc2l6ZXMuLi4p
IHt9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1l
c3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0xBWU9VVF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzNTE1
N2EzYmQ4NTIxOTg4Njk0NmZkMDYyNjkxYzU3MDUzYjJlZGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0X3Rlc3QuY2MKQEAgLTAsMCArMSwxNTUyIEBA
CisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0LmgiCisKKy8vIFdlIG5lZWQgOjptYXhfYWxpZ25f
dCBiZWNhdXNlIHNvbWUgbGlic3RkYysrIHZlcnNpb25zIGRvbid0IHByb3ZpZGUKKy8vIHN0ZDo6
bWF4X2FsaWduX3QKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2lu
Y2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
I2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFi
c2wvdHlwZXMvc3Bhbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVy
X2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6YWJzbDo6U3BhbjsKK3VzaW5nIDo6
dGVzdGluZzo6RWxlbWVudHNBcmU7CisKK3NpemVfdCBEaXN0YW5jZShjb25zdCB2b2lkKiBmcm9t
LCBjb25zdCB2b2lkKiB0bykgeworICBBQlNMX1JBV19DSEVDSyhmcm9tIDw9IHRvLCAiRGlzdGFu
Y2UgbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPih0bykgLSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZnJvbSk7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBFeHBlY3RlZCwgY2xhc3MgQWN0dWFsPgorRXhwZWN0ZWQgVHlwZShBY3R1YWwgdmFs
KSB7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEV4cGVjdGVkLCBBY3R1YWw+KCksICIi
KTsKKyAgcmV0dXJuIHZhbDsKK30KKwordXNpbmcgSW50MTI4ID0gaW50NjRfdFsyXTsKKworLy8g
UHJvcGVydGllcyBvZiB0eXBlcyB0aGF0IHRoaXMgdGVzdCByZWxpZXMgb24uCitzdGF0aWNfYXNz
ZXJ0KHNpemVvZihpbnQ4X3QpID09IDEsICIiKTsKK3N0YXRpY19hc3NlcnQoYWxpZ25vZihpbnQ4
X3QpID09IDEsICIiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKGludDE2X3QpID09IDIsICIiKTsK
K3N0YXRpY19hc3NlcnQoYWxpZ25vZihpbnQxNl90KSA9PSAyLCAiIik7CitzdGF0aWNfYXNzZXJ0
KHNpemVvZihpbnQzMl90KSA9PSA0LCAiIik7CitzdGF0aWNfYXNzZXJ0KGFsaWdub2YoaW50MzJf
dCkgPT0gNCwgIiIpOworc3RhdGljX2Fzc2VydChzaXplb2YoSW50MTI4KSA9PSAxNiwgIiIpOwor
c3RhdGljX2Fzc2VydChhbGlnbm9mKEludDEyOCkgPT0gOCwgIiIpOworCit0ZW1wbGF0ZSA8Y2xh
c3MgRXhwZWN0ZWQsIGNsYXNzIEFjdHVhbD4KK3ZvaWQgU2FtZVR5cGUoKSB7CisgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPEV4cGVjdGVkLCBBY3R1YWw+KCksICIiKTsKK30KKworVEVTVChM
YXlvdXQsIEVsZW1lbnRUeXBlKSB7CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+
OworICAgIFNhbWVUeXBlPGludDMyX3QsIEw6OkVsZW1lbnRUeXBlPDA+PigpOworICAgIFNhbWVU
eXBlPGludDMyX3QsIGRlY2x0eXBlKEw6OlBhcnRpYWwoKSk6OkVsZW1lbnRUeXBlPDA+PigpOwor
ICAgIFNhbWVUeXBlPGludDMyX3QsIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCkpOjpFbGVtZW50VHlw
ZTwwPj4oKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90LCBpbnQzMl90
PjsKKyAgICBTYW1lVHlwZTxpbnQzMl90LCBMOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1l
VHlwZTxpbnQzMl90LCBMOjpFbGVtZW50VHlwZTwxPj4oKTsKKyAgICBTYW1lVHlwZTxpbnQzMl90
LCBkZWNsdHlwZShMOjpQYXJ0aWFsKCkpOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1lVHlw
ZTxpbnQzMl90LCBkZWNsdHlwZShMOjpQYXJ0aWFsKCkpOjpFbGVtZW50VHlwZTwxPj4oKTsKKyAg
ICBTYW1lVHlwZTxpbnQzMl90LCBkZWNsdHlwZShMOjpQYXJ0aWFsKDApKTo6RWxlbWVudFR5cGU8
MD4+KCk7CisgICAgU2FtZVR5cGU8aW50MzJfdCwgZGVjbHR5cGUoTDo6UGFydGlhbCgwKSk6OkVs
ZW1lbnRUeXBlPDE+PigpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwg
aW50MzJfdCwgSW50MTI4PjsKKyAgICBTYW1lVHlwZTxpbnQ4X3QsIEw6OkVsZW1lbnRUeXBlPDA+
PigpOworICAgIFNhbWVUeXBlPGludDMyX3QsIEw6OkVsZW1lbnRUeXBlPDE+PigpOworICAgIFNh
bWVUeXBlPEludDEyOCwgTDo6RWxlbWVudFR5cGU8Mj4+KCk7CisgICAgU2FtZVR5cGU8aW50OF90
LCBkZWNsdHlwZShMOjpQYXJ0aWFsKCkpOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1lVHlw
ZTxpbnQ4X3QsIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCkpOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAg
ICBTYW1lVHlwZTxpbnQzMl90LCBkZWNsdHlwZShMOjpQYXJ0aWFsKDApKTo6RWxlbWVudFR5cGU8
MT4+KCk7CisgICAgU2FtZVR5cGU8aW50OF90LCBkZWNsdHlwZShMOjpQYXJ0aWFsKDAsIDApKTo6
RWxlbWVudFR5cGU8MD4+KCk7CisgICAgU2FtZVR5cGU8aW50MzJfdCwgZGVjbHR5cGUoTDo6UGFy
dGlhbCgwLCAwKSk6OkVsZW1lbnRUeXBlPDE+PigpOworICAgIFNhbWVUeXBlPEludDEyOCwgZGVj
bHR5cGUoTDo6UGFydGlhbCgwLCAwKSk6OkVsZW1lbnRUeXBlPDI+PigpOworICAgIFNhbWVUeXBl
PGludDhfdCwgZGVjbHR5cGUoTDo6UGFydGlhbCgwLCAwLCAwKSk6OkVsZW1lbnRUeXBlPDA+Pigp
OworICAgIFNhbWVUeXBlPGludDMyX3QsIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCwgMCwgMCkpOjpF
bGVtZW50VHlwZTwxPj4oKTsKKyAgICBTYW1lVHlwZTxJbnQxMjgsIGRlY2x0eXBlKEw6OlBhcnRp
YWwoMCwgMCwgMCkpOjpFbGVtZW50VHlwZTwyPj4oKTsKKyAgfQorfQorCitURVNUKExheW91dCwg
RWxlbWVudFR5cGVzKSB7CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAg
IFNhbWVUeXBlPHN0ZDo6dHVwbGU8aW50MzJfdD4sIEw6OkVsZW1lbnRUeXBlcz4oKTsKKyAgICBT
YW1lVHlwZTxzdGQ6OnR1cGxlPGludDMyX3Q+LCBkZWNsdHlwZShMOjpQYXJ0aWFsKCkpOjpFbGVt
ZW50VHlwZXM+KCk7CisgICAgU2FtZVR5cGU8c3RkOjp0dXBsZTxpbnQzMl90PiwgZGVjbHR5cGUo
TDo6UGFydGlhbCgwKSk6OkVsZW1lbnRUeXBlcz4oKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9
IExheW91dDxpbnQzMl90LCBpbnQzMl90PjsKKyAgICBTYW1lVHlwZTxzdGQ6OnR1cGxlPGludDMy
X3QsIGludDMyX3Q+LCBMOjpFbGVtZW50VHlwZXM+KCk7CisgICAgU2FtZVR5cGU8c3RkOjp0dXBs
ZTxpbnQzMl90LCBpbnQzMl90PiwgZGVjbHR5cGUoTDo6UGFydGlhbCgpKTo6RWxlbWVudFR5cGVz
PigpOworICAgIFNhbWVUeXBlPHN0ZDo6dHVwbGU8aW50MzJfdCwgaW50MzJfdD4sIGRlY2x0eXBl
KEw6OlBhcnRpYWwoMCkpOjpFbGVtZW50VHlwZXM+KCk7CisgIH0KKyAgeworICAgIHVzaW5nIEwg
PSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIFNhbWVUeXBlPHN0ZDo6dHVw
bGU8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+LCBMOjpFbGVtZW50VHlwZXM+KCk7CisgICAgU2Ft
ZVR5cGU8c3RkOjp0dXBsZTxpbnQ4X3QsIGludDMyX3QsIEludDEyOD4sCisgICAgICAgICAgICAg
ZGVjbHR5cGUoTDo6UGFydGlhbCgpKTo6RWxlbWVudFR5cGVzPigpOworICAgIFNhbWVUeXBlPHN0
ZDo6dHVwbGU8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+LAorICAgICAgICAgICAgIGRlY2x0eXBl
KEw6OlBhcnRpYWwoMCkpOjpFbGVtZW50VHlwZXM+KCk7CisgICAgU2FtZVR5cGU8c3RkOjp0dXBs
ZTxpbnQ4X3QsIGludDMyX3QsIEludDEyOD4sCisgICAgICAgICAgICAgZGVjbHR5cGUoTDo6UGFy
dGlhbCgwLCAwKSk6OkVsZW1lbnRUeXBlcz4oKTsKKyAgICBTYW1lVHlwZTxzdGQ6OnR1cGxlPGlu
dDhfdCwgaW50MzJfdCwgSW50MTI4PiwKKyAgICAgICAgICAgICBkZWNsdHlwZShMOjpQYXJ0aWFs
KDAsIDAsIDApKTo6RWxlbWVudFR5cGVzPigpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBPZmZz
ZXRCeUluZGV4KSB7CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVY
UEVDVF9FUSgwLCBMOjpQYXJ0aWFsKCkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSgwLCBM
OjpQYXJ0aWFsKDMpLk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTCgzKS5PZmZzZXQ8
MD4oKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47
CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoKS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNU
X0VRKDAsIEw6OlBhcnRpYWwoMykuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSgxMiwgTDo6
UGFydGlhbCgzKS5PZmZzZXQ8MT4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMywg
NSkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSgxMiwgTDo6UGFydGlhbCgzLCA1KS5PZmZz
ZXQ8MT4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEwoMywgNSkuT2Zmc2V0PDA+KCkpOworICAgIEVY
UEVDVF9FUSgxMiwgTCgzLCA1KS5PZmZzZXQ8MT4oKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwg
PSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgwLCBMOjpQ
YXJ0aWFsKCkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDApLk9m
ZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5PZmZzZXQ8MT4oKSk7
CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMSkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVD
VF9FUSg0LCBMOjpQYXJ0aWFsKDEpLk9mZnNldDwxPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6
UGFydGlhbCg1KS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEw6OlBhcnRpYWwoNSku
T2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDApLk9mZnNldDww
PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwLCAwKS5PZmZzZXQ8MT4oKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCwgMCkuT2Zmc2V0PDI+KCkpOworICAgIEVYUEVD
VF9FUSgwLCBMOjpQYXJ0aWFsKDEsIDApLk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoNCwg
TDo6UGFydGlhbCgxLCAwKS5PZmZzZXQ8MT4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEw6OlBhcnRp
YWwoMSwgMCkuT2Zmc2V0PDI+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDUsIDMp
Lk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCg1LCAzKS5PZmZzZXQ8
MT4oKSk7CisgICAgRVhQRUNUX0VRKDI0LCBMOjpQYXJ0aWFsKDUsIDMpLk9mZnNldDwyPigpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwLCAwLCAwKS5PZmZzZXQ8MD4oKSk7CisgICAg
RVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCwgMCwgMCkuT2Zmc2V0PDE+KCkpOworICAgIEVYUEVD
VF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDAsIDApLk9mZnNldDwyPigpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgTDo6UGFydGlhbCgxLCAwLCAwKS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDQsIEw6
OlBhcnRpYWwoMSwgMCwgMCkuT2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0
aWFsKDEsIDAsIDApLk9mZnNldDwyPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCg1
LCAzLCAxKS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDI0LCBMOjpQYXJ0aWFsKDUsIDMs
IDEpLk9mZnNldDwyPigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCg1LCAzLCAxKS5P
ZmZzZXQ8MT4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEwoNSwgMywgMSkuT2Zmc2V0PDA+KCkpOwor
ICAgIEVYUEVDVF9FUSgyNCwgTCg1LCAzLCAxKS5PZmZzZXQ8Mj4oKSk7CisgICAgRVhQRUNUX0VR
KDgsIEwoNSwgMywgMSkuT2Zmc2V0PDE+KCkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBPZmZz
ZXRCeVR5cGUpIHsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdD47CisgICAgRVhQ
RUNUX0VRKDAsIEw6OlBhcnRpYWwoKS5PZmZzZXQ8aW50MzJfdD4oKSk7CisgICAgRVhQRUNUX0VR
KDAsIEw6OlBhcnRpYWwoMykuT2Zmc2V0PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBM
KDMpLk9mZnNldDxpbnQzMl90PigpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxp
bnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoKS5P
ZmZzZXQ8aW50OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5PZmZzZXQ8
aW50OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5PZmZzZXQ8aW50MzJf
dD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMSkuT2Zmc2V0PGludDhfdD4oKSk7
CisgICAgRVhQRUNUX0VRKDQsIEw6OlBhcnRpYWwoMSkuT2Zmc2V0PGludDMyX3Q+KCkpOworICAg
IEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDUpLk9mZnNldDxpbnQ4X3Q+KCkpOworICAgIEVYUEVD
VF9FUSg4LCBMOjpQYXJ0aWFsKDUpLk9mZnNldDxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgTDo6UGFydGlhbCgwLCAwKS5PZmZzZXQ8aW50OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
TDo6UGFydGlhbCgwLCAwKS5PZmZzZXQ8aW50MzJfdD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6
OlBhcnRpYWwoMCwgMCkuT2Zmc2V0PEludDEyOD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBh
cnRpYWwoMSwgMCkuT2Zmc2V0PGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDQsIEw6OlBhcnRp
YWwoMSwgMCkuT2Zmc2V0PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFs
KDEsIDApLk9mZnNldDxJbnQxMjg+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDUs
IDMpLk9mZnNldDxpbnQ4X3Q+KCkpOworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFsKDUsIDMp
Lk9mZnNldDxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoMjQsIEw6OlBhcnRpYWwoNSwgMyku
T2Zmc2V0PEludDEyOD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCwgMCwgMCku
T2Zmc2V0PGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCwgMCwgMCku
T2Zmc2V0PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDAsIDAp
Lk9mZnNldDxJbnQxMjg+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDEsIDAsIDAp
Lk9mZnNldDxpbnQ4X3Q+KCkpOworICAgIEVYUEVDVF9FUSg0LCBMOjpQYXJ0aWFsKDEsIDAsIDAp
Lk9mZnNldDxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCgxLCAwLCAw
KS5PZmZzZXQ8SW50MTI4PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCg1LCAzLCAx
KS5PZmZzZXQ8aW50OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoMjQsIEw6OlBhcnRpYWwoNSwgMywg
MSkuT2Zmc2V0PEludDEyOD4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEw6OlBhcnRpYWwoNSwgMywg
MSkuT2Zmc2V0PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMKDUsIDMsIDEpLk9mZnNl
dDxpbnQ4X3Q+KCkpOworICAgIEVYUEVDVF9FUSgyNCwgTCg1LCAzLCAxKS5PZmZzZXQ8SW50MTI4
PigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTCg1LCAzLCAxKS5PZmZzZXQ8aW50MzJfdD4oKSk7Cisg
IH0KK30KKworVEVTVChMYXlvdXQsIE9mZnNldHMpIHsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlv
dXQ8aW50MzJfdD47CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgpLk9mZnNldHMoKSwgRWxl
bWVudHNBcmUoMCkpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoMykuT2Zmc2V0cygpLCBF
bGVtZW50c0FyZSgwKSk7CisgICAgRVhQRUNUX1RIQVQoTCgzKS5PZmZzZXRzKCksIEVsZW1lbnRz
QXJlKDApKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90LCBpbnQzMl90
PjsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKCkuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgw
KSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzKS5PZmZzZXRzKCksIEVsZW1lbnRzQXJl
KDAsIDEyKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzLCA1KS5PZmZzZXRzKCksIEVs
ZW1lbnRzQXJlKDAsIDEyKSk7CisgICAgRVhQRUNUX1RIQVQoTCgzLCA1KS5PZmZzZXRzKCksIEVs
ZW1lbnRzQXJlKDAsIDEyKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90
LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoKS5PZmZzZXRz
KCksIEVsZW1lbnRzQXJlKDApKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDEpLk9mZnNl
dHMoKSwgRWxlbWVudHNBcmUoMCwgNCkpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoNSku
T2Zmc2V0cygpLCBFbGVtZW50c0FyZSgwLCA4KSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlh
bCgwLCAwKS5PZmZzZXRzKCksIEVsZW1lbnRzQXJlKDAsIDAsIDApKTsKKyAgICBFWFBFQ1RfVEhB
VChMOjpQYXJ0aWFsKDEsIDApLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCwgNCwgOCkpOworICAg
IEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoNSwgMykuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgwLCA4
LCAyNCkpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoMCwgMCwgMCkuT2Zmc2V0cygpLCBF
bGVtZW50c0FyZSgwLCAwLCAwKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgxLCAwLCAw
KS5PZmZzZXRzKCksIEVsZW1lbnRzQXJlKDAsIDQsIDgpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQ
YXJ0aWFsKDUsIDMsIDEpLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCwgOCwgMjQpKTsKKyAgICBF
WFBFQ1RfVEhBVChMKDUsIDMsIDEpLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCwgOCwgMjQpKTsK
KyAgfQorfQorCitURVNUKExheW91dCwgQWxsb2NTaXplKSB7CisgIHsKKyAgICB1c2luZyBMID0g
TGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDApLkFsbG9jU2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMTIsIEw6OlBhcnRpYWwoMykuQWxsb2NTaXplKCkpOworICAg
IEVYUEVDVF9FUSgxMiwgTCgzKS5BbGxvY1NpemUoKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwg
PSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAgRVhQRUNUX0VRKDMyLCBMOjpQYXJ0aWFs
KDMsIDUpLkFsbG9jU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzIsIEwoMywgNSkuQWxsb2NTaXpl
KCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50
MTI4PjsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwLCAwLCAwKS5BbGxvY1NpemUoKSk7
CisgICAgRVhQRUNUX0VRKDgsIEw6OlBhcnRpYWwoMSwgMCwgMCkuQWxsb2NTaXplKCkpOworICAg
IEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFsKDAsIDEsIDApLkFsbG9jU2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoMTYsIEw6OlBhcnRpYWwoMCwgMCwgMSkuQWxsb2NTaXplKCkpOworICAgIEVYUEVDVF9F
USgyNCwgTDo6UGFydGlhbCgxLCAxLCAxKS5BbGxvY1NpemUoKSk7CisgICAgRVhQRUNUX0VRKDEz
NiwgTDo6UGFydGlhbCgzLCA1LCA3KS5BbGxvY1NpemUoKSk7CisgICAgRVhQRUNUX0VRKDEzNiwg
TCgzLCA1LCA3KS5BbGxvY1NpemUoKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFNpemVCeUlu
ZGV4KSB7CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9F
USgwLCBMOjpQYXJ0aWFsKDApLlNpemU8MD4oKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRp
YWwoMykuU2l6ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzKS5TaXplPDA+KCkpOworICB9
CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3QsIGludDMyX3Q+OworICAgIEVYUEVD
VF9FUSgwLCBMOjpQYXJ0aWFsKDApLlNpemU8MD4oKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBh
cnRpYWwoMykuU2l6ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1KS5T
aXplPDA+KCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNpemU8MT4oKSk7
CisgICAgRVhQRUNUX0VRKDMsIEwoMywgNSkuU2l6ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoNSwg
TCgzLCA1KS5TaXplPDE+KCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhf
dCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TaXpl
PDA+KCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUpLlNpemU8MD4oKSk7Cisg
ICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSkuU2l6ZTwxPigpKTsKKyAgICBFWFBFQ1Rf
RVEoMywgTDo6UGFydGlhbCgzLCA1LCA3KS5TaXplPDA+KCkpOworICAgIEVYUEVDVF9FUSg1LCBM
OjpQYXJ0aWFsKDMsIDUsIDcpLlNpemU8MT4oKSk7CisgICAgRVhQRUNUX0VRKDcsIEw6OlBhcnRp
YWwoMywgNSwgNykuU2l6ZTwyPigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzLCA1LCA3KS5TaXpl
PDA+KCkpOworICAgIEVYUEVDVF9FUSg1LCBMKDMsIDUsIDcpLlNpemU8MT4oKSk7CisgICAgRVhQ
RUNUX0VRKDcsIEwoMywgNSwgNykuU2l6ZTwyPigpKTsKKyAgfQorfQorCitURVNUKExheW91dCwg
U2l6ZUJ5VHlwZSkgeworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBF
WFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5TaXplPGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9F
USgzLCBMOjpQYXJ0aWFsKDMpLlNpemU8aW50MzJfdD4oKSk7CisgICAgRVhQRUNUX0VRKDMsIEwo
MykuU2l6ZTxpbnQzMl90PigpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4
X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2l6
ZTxpbnQ4X3Q+KCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUpLlNpemU8aW50
OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTDo6UGFydGlhbCgzLCA1KS5TaXplPGludDMyX3Q+
KCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNpemU8aW50OF90Pigp
KTsKKyAgICBFWFBFQ1RfRVEoNSwgTDo6UGFydGlhbCgzLCA1LCA3KS5TaXplPGludDMyX3Q+KCkp
OworICAgIEVYUEVDVF9FUSg3LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNpemU8SW50MTI4PigpKTsK
KyAgICBFWFBFQ1RfRVEoMywgTCgzLCA1LCA3KS5TaXplPGludDhfdD4oKSk7CisgICAgRVhQRUNU
X0VRKDUsIEwoMywgNSwgNykuU2l6ZTxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoNywgTCgz
LCA1LCA3KS5TaXplPEludDEyOD4oKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFNpemVzKSB7
CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9USEFUKEw6
OlBhcnRpYWwoKS5TaXplcygpLCBFbGVtZW50c0FyZSgpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQ
YXJ0aWFsKDMpLlNpemVzKCksIEVsZW1lbnRzQXJlKDMpKTsKKyAgICBFWFBFQ1RfVEhBVChMKDMp
LlNpemVzKCksIEVsZW1lbnRzQXJlKDMpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91
dDxpbnQzMl90LCBpbnQzMl90PjsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKCkuU2l6ZXMo
KSwgRWxlbWVudHNBcmUoKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzKS5TaXplcygp
LCBFbGVtZW50c0FyZSgzKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzLCA1KS5TaXpl
cygpLCBFbGVtZW50c0FyZSgzLCA1KSk7CisgICAgRVhQRUNUX1RIQVQoTCgzLCA1KS5TaXplcygp
LCBFbGVtZW50c0FyZSgzLCA1KSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50
OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoKS5TaXpl
cygpLCBFbGVtZW50c0FyZSgpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDMpLlNpemVz
KCksIEVsZW1lbnRzQXJlKDMpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDMsIDUpLlNp
emVzKCksIEVsZW1lbnRzQXJlKDMsIDUpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDMs
IDUsIDcpLlNpemVzKCksIEVsZW1lbnRzQXJlKDMsIDUsIDcpKTsKKyAgICBFWFBFQ1RfVEhBVChM
KDMsIDUsIDcpLlNpemVzKCksIEVsZW1lbnRzQXJlKDMsIDUsIDcpKTsKKyAgfQorfQorCitURVNU
KExheW91dCwgUG9pbnRlckJ5SW5kZXgpIHsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgY29uc3Qg
dW5zaWduZWQgY2hhciBwWzEwMF0gPSB7fTsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50
MzJfdD47CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+
KEw6OlBhcnRpYWwoKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5j
ZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8MD4ocCkpKSk7
CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEwoMyku
UG9pbnRlcjwwPihwKSkpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90
LCBpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQz
Ml90Kj4oTDo6UGFydGlhbCgpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERp
c3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMykuUG9pbnRlcjwwPihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoMTIsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+
KEw6OlBhcnRpYWwoMykuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAg
ICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgzLCA1
KS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgxMiwKKyAgICAgICAgICAgICAgRGlz
dGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgzLCA1KS5Qb2ludGVyPDE+
KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3Qq
PihMKDMsIDUpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDEyLCBEaXN0YW5jZShw
LCBUeXBlPGNvbnN0IGludDMyX3QqPihMKDMsIDUpLlBvaW50ZXI8MT4ocCkpKSk7CisgIH0KKyAg
eworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVY
UEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwoKS5Q
b2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0
IGludDhfdCo+KEw6OlBhcnRpYWwoMCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgwKS5Qb2ludGVy
PDE+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhf
dCo+KEw6OlBhcnRpYWwoMSkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoNCwgRGlz
dGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgxKS5Qb2ludGVyPDE+KHAp
KSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6
OlBhcnRpYWwoNSkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2Uo
cCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCg1KS5Qb2ludGVyPDE+KHApKSkpOwor
ICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGlu
dDhfdCo+KEw6OlBhcnRpYWwoMCwgMCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
MCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFy
dGlhbCgwLCAwKS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAg
ICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IEludDEyOCo+KEw6OlBhcnRpYWwoMCwgMCkuUG9p
bnRlcjwyPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2Uo
cCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDEsIDApLlBvaW50ZXI8MD4ocCkpKSk7
CisgICAgRVhQRUNUX0VRKDQsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3Qg
aW50MzJfdCo+KEw6OlBhcnRpYWwoMSwgMCkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1Rf
RVEoOCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPihMOjpQ
YXJ0aWFsKDEsIDApLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAg
ICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCg1LCAzKS5Q
b2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSg4LAorICAgICAgICAgICAgICBEaXN0YW5j
ZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8MT4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKDI0LAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNv
bnN0IEludDEyOCo+KEw6OlBhcnRpYWwoNSwgMykuUG9pbnRlcjwyPihwKSkpKTsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFy
dGlhbCgwLCAwLCAwKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAg
MCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgwLCAwLCAwKS5Q
b2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwg
VHlwZTxjb25zdCBJbnQxMjgqPihMOjpQYXJ0aWFsKDAsIDAsIDApLlBvaW50ZXI8Mj4ocCkpKSk7
CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhf
dCo+KEw6OlBhcnRpYWwoMSwgMCwgMCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
CisgICAgICAgIDQsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwo
MSwgMCwgMCkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsIERp
c3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oTDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVy
PDI+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxj
b25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKAorICAgICAgICAyNCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJ
bnQxMjgqPihMOjpQYXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNU
X0VRKAorICAgICAgICA4LCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0
aWFsKDUsIDMsIDEpLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNl
KHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTCg1LCAzLCAxKS5Qb2ludGVyPDA+KHApKSkpOworICAg
IEVYUEVDVF9FUSgyNCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPihMKDUsIDMsIDEp
LlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8Y29u
c3QgaW50MzJfdCo+KEwoNSwgMywgMSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgfQorfQorCitURVNU
KExheW91dCwgUG9pbnRlckJ5VHlwZSkgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1
bnNpZ25lZCBjaGFyIHBbMTAwXSA9IHt9OworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQz
Ml90PjsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxj
b25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgpLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJf
dCo+KEw6OlBhcnRpYWwoMykuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTCgzKS5Qb2ludGVyPGludDMyX3Q+
KHApKSkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwg
SW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3Qq
PihMOjpQYXJ0aWFsKCkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLAor
ICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwo
MCkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAg
ICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDApLlBvaW50ZXI8
aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNl
KHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCgxKS5Qb2ludGVyPGludDhfdD4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKDQsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29u
c3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMSkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBF
WFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3Qq
PihMOjpQYXJ0aWFsKDUpLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwK
KyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlh
bCg1KS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwg
RGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8
aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5
cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMCwgMCkuUG9pbnRlcjxpbnQzMl90PihwKSkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
Y29uc3QgSW50MTI4Kj4oTDo6UGFydGlhbCgwLCAwKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7Cisg
ICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+
KEw6OlBhcnRpYWwoMSwgMCkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgK
KyAgICAgICAgNCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgx
LCAwKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwK
KyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPihMOjpQYXJ0aWFsKDEsIDAp
LlBvaW50ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3Rh
bmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPGludDhf
dD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LCBEaXN0YW5jZShwLCBUeXBlPGNv
bnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7Cisg
ICAgRVhQRUNUX0VRKAorICAgICAgICAyNCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25z
dCBJbnQxMjgqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8SW50MTI4PihwKSkpKTsKKyAgICBF
WFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50
OF90Kj4oTDo6UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQ
RUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMy
X3QqPihMOjpQYXJ0aWFsKDAsIDAsIDApLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAgRVhQ
RUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMOjpQYXJ0aWFsKDAsIDAsIDApLlBvaW50ZXI8SW50MTI4Pihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5
cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVyPGludDhfdD4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA0LAorICAgICAgICBEaXN0YW5jZShwLCBUeXBl
PGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDEsIDAsIDApLlBvaW50ZXI8aW50MzJfdD4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOjpQYXJ0aWFsKDEsIDAsIDApLlBvaW50
ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERp
c3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCg1LCAzLCAxKS5Qb2ludGVy
PGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDI0LCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0
IEludDEyOCo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw6OlBhcnRpYWwo
NSwgMywgMSkuUG9pbnRlcjxJbnQxMjg+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAg
OCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCg1
LCAzLCAxKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgyNCwKKyAgICAg
ICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPihMKDUsIDMsIDEpLlBvaW50
ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxjb25z
dCBpbnQzMl90Kj4oTCg1LCAzLCAxKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICB9Cit9CisK
K1RFU1QoTGF5b3V0LCBNdXRhYmxlUG9pbnRlckJ5SW5kZXgpIHsKKyAgYWxpZ25hcyhtYXhfYWxp
Z25fdCkgdW5zaWduZWQgY2hhciBwWzEwMF07CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGlu
dDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQ
YXJ0aWFsKCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwg
VHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgzKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVD
VF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMKDMpLlBvaW50ZXI8MD4ocCkpKSk7
CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAg
RVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoKS5Qb2lu
dGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3Qq
PihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDEyLCBEaXN0
YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8MT4ocCkpKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMywg
NSkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMTIsIERpc3RhbmNlKHAsIFR5cGU8
aW50MzJfdCo+KEw6OlBhcnRpYWwoMywgNSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTCgzLCA1KS5Qb2ludGVyPDA+KHApKSkp
OworICAgIEVYUEVDVF9FUSgxMiwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTCgzLCA1KS5Q
b2ludGVyPDE+KHApKSkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwg
aW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4
X3QqPihMOjpQYXJ0aWFsKCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlz
dGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDApLlBvaW50ZXI8MD4ocCkpKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMCku
UG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4
X3QqPihMOjpQYXJ0aWFsKDEpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDQsIERp
c3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMSkuUG9pbnRlcjwxPihwKSkpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDUp
LlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8aW50
MzJfdCo+KEw6OlBhcnRpYWwoNSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
RGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8MD4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRp
YWwoMCwgMCkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwg
VHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQ
RUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2lu
dGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSg0LCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3Qq
PihMOjpQYXJ0aWFsKDEsIDApLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERp
c3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2ludGVyPDI+KHApKSkp
OworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEw6OlBhcnRpYWwo
NSwgMykuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlw
ZTxpbnQzMl90Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVD
VF9FUSgyNCwgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50
ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4o
TDo6UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBE
aXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDAsIDAsIDApLlBvaW50ZXI8MT4o
cCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6UGFy
dGlhbCgwLCAwLCAwKS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5j
ZShwLCBUeXBlPGludDhfdCo+KEw6OlBhcnRpYWwoMSwgMCwgMCkuUG9pbnRlcjwwPihwKSkpKTsK
KyAgICBFWFBFQ1RfRVEoNCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgx
LCAwLCAwKS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSg4LCBEaXN0YW5jZShwLCBU
eXBlPEludDEyOCo+KEw6OlBhcnRpYWwoMSwgMCwgMCkuUG9pbnRlcjwyPihwKSkpKTsKKyAgICBF
WFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDUsIDMsIDEp
LlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDI0LAorICAgICAgICAgICAgICBEaXN0
YW5jZShwLCBUeXBlPEludDEyOCo+KEw6OlBhcnRpYWwoNSwgMywgMSkuUG9pbnRlcjwyPihwKSkp
KTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlh
bCg1LCAzLCAxKS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShw
LCBUeXBlPGludDhfdCo+KEwoNSwgMywgMSkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1Rf
RVEoMjQsIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTCg1LCAzLCAxKS5Qb2ludGVyPDI+KHAp
KSkpOworICAgIEVYUEVDVF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMKDUsIDMs
IDEpLlBvaW50ZXI8MT4ocCkpKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIE11dGFibGVQb2lu
dGVyQnlUeXBlKSB7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIHVuc2lnbmVkIGNoYXIgcFsxMDBd
OworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwg
RGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgpLlBvaW50ZXI8aW50MzJfdD4o
cCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBh
cnRpYWwoMykuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFu
Y2UocCwgVHlwZTxpbnQzMl90Kj4oTCgzKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICB9Cisg
IHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBF
WFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKCkuUG9pbnRl
cjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhf
dCo+KEw6OlBhcnRpYWwoMCkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgw
LCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDApLlBvaW50ZXI8aW50MzJf
dD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6
UGFydGlhbCgxKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDQsIERpc3Rh
bmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMSkuUG9pbnRlcjxpbnQzMl90PihwKSkp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFs
KDUpLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwg
VHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCg1KS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAg
IEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEw6OlBhcnRpYWwoMCwgMCku
UG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBl
PGludDMyX3QqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6
UGFydGlhbCgwLCAwKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERp
c3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2ludGVyPGludDhfdD4o
cCkpKSk7CisgICAgRVhQRUNUX0VRKDQsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBh
cnRpYWwoMSwgMCkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwKKyAg
ICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDEsIDApLlBv
aW50ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxp
bnQ4X3QqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBF
Q1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2lu
dGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgyNCwKKyAgICAgICAgICAgICAgRGlz
dGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8SW50MTI4Pihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxp
bnQ4X3QqPihMOjpQYXJ0aWFsKDAsIDAsIDApLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBF
WFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6
UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgK
KyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDAsIDAsIDAp
LlBvaW50ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAg
RGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDEsIDAsIDApLlBvaW50ZXI8aW50
OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoNCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwg
VHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVyPGludDMyX3Q+KHApKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihM
OjpQYXJ0aWFsKDEsIDAsIDApLlBvaW50ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
MCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDUs
IDMsIDEpLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDI0
LCBEaXN0YW5jZShwLCBUeXBlPEludDEyOCo+KEw6OlBhcnRpYWwoNSwgMywgMSkuUG9pbnRlcjxJ
bnQxMjg+KHApKSkpOworICAgIEVYUEVDVF9FUSg4LAorICAgICAgICAgICAgICBEaXN0YW5jZShw
LCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8aW50MzJfdD4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTCg1LCAzLCAx
KS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDI0LCBEaXN0YW5jZShwLCBU
eXBlPEludDEyOCo+KEwoNSwgMywgMSkuUG9pbnRlcjxJbnQxMjg+KHApKSkpOworICAgIEVYUEVD
VF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMKDUsIDMsIDEpLlBvaW50ZXI8aW50
MzJfdD4ocCkpKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFBvaW50ZXJzKSB7CisgIGFsaWdu
YXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgcFsxMDBdID0ge307CisgIHVzaW5n
IEwgPSBMYXlvdXQ8aW50OF90LCBpbnQ4X3QsIEludDEyOD47CisgIHsKKyAgICBjb25zdCBhdXRv
IHggPSBMOjpQYXJ0aWFsKCk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50
ZXI8MD4ocCkpLAorICAgICAgICAgICAgICBUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50OF90Kj4+
KHguUG9pbnRlcnMocCkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlh
bCgxKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjptYWtlX3R1cGxlKHguUG9pbnRlcjwwPihwKSwgeC5Q
b2ludGVyPDE+KHApKSwKKyAgICAgICAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxjb25zdCBpbnQ4
X3QqLCBjb25zdCBpbnQ4X3QqPj4oeC5Qb2ludGVycyhwKSkpKTsKKyAgfQorICB7CisgICAgY29u
c3QgYXV0byB4ID0gTDo6UGFydGlhbCgxLCAyKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIHN0
ZDo6bWFrZV90dXBsZSh4LlBvaW50ZXI8MD4ocCksIHguUG9pbnRlcjwxPihwKSwgeC5Qb2ludGVy
PDI+KHApKSwKKyAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxjb25zdCBpbnQ4X3QqLCBjb25zdCBp
bnQ4X3QqLCBjb25zdCBJbnQxMjgqPj4oCisgICAgICAgICAgICB4LlBvaW50ZXJzKHApKSkpOwor
ICB9CisgIHsKKyAgICBjb25zdCBhdXRvIHggPSBMOjpQYXJ0aWFsKDEsIDIsIDMpOworICAgIEVY
UEVDVF9FUSgKKyAgICAgICAgc3RkOjptYWtlX3R1cGxlKHguUG9pbnRlcjwwPihwKSwgeC5Qb2lu
dGVyPDE+KHApLCB4LlBvaW50ZXI8Mj4ocCkpLAorICAgICAgICAoVHlwZTxzdGQ6OnR1cGxlPGNv
bnN0IGludDhfdCosIGNvbnN0IGludDhfdCosIGNvbnN0IEludDEyOCo+PigKKyAgICAgICAgICAg
IHguUG9pbnRlcnMocCkpKSk7CisgIH0KKyAgeworICAgIGNvbnN0IEwgeCgxLCAyLCAzKTsKKyAg
ICBFWFBFQ1RfRVEoCisgICAgICAgIHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50ZXI8MD4ocCksIHgu
UG9pbnRlcjwxPihwKSwgeC5Qb2ludGVyPDI+KHApKSwKKyAgICAgICAgKFR5cGU8c3RkOjp0dXBs
ZTxjb25zdCBpbnQ4X3QqLCBjb25zdCBpbnQ4X3QqLCBjb25zdCBJbnQxMjgqPj4oCisgICAgICAg
ICAgICB4LlBvaW50ZXJzKHApKSkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBNdXRhYmxlUG9p
bnRlcnMpIHsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgdW5zaWduZWQgY2hhciBwWzEwMF07Cisg
IHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQ4X3QsIEludDEyOD47CisgIHsKKyAgICBjb25z
dCBhdXRvIHggPSBMOjpQYXJ0aWFsKCk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bWFrZV90dXBsZSh4
LlBvaW50ZXI8MD4ocCkpLAorICAgICAgICAgICAgICBUeXBlPHN0ZDo6dHVwbGU8aW50OF90Kj4+
KHguUG9pbnRlcnMocCkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlh
bCgxKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjptYWtlX3R1cGxlKHguUG9pbnRlcjwwPihwKSwgeC5Q
b2ludGVyPDE+KHApKSwKKyAgICAgICAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxpbnQ4X3QqLCBp
bnQ4X3QqPj4oeC5Qb2ludGVycyhwKSkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0g
TDo6UGFydGlhbCgxLCAyKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIHN0ZDo6bWFrZV90dXBs
ZSh4LlBvaW50ZXI8MD4ocCksIHguUG9pbnRlcjwxPihwKSwgeC5Qb2ludGVyPDI+KHApKSwKKyAg
ICAgICAgKFR5cGU8c3RkOjp0dXBsZTxpbnQ4X3QqLCBpbnQ4X3QqLCBJbnQxMjgqPj4oeC5Qb2lu
dGVycyhwKSkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgxLCAy
LCAzKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50ZXI8
MD4ocCksIHguUG9pbnRlcjwxPihwKSwgeC5Qb2ludGVyPDI+KHApKSwKKyAgICAgICAgKFR5cGU8
c3RkOjp0dXBsZTxpbnQ4X3QqLCBpbnQ4X3QqLCBJbnQxMjgqPj4oeC5Qb2ludGVycyhwKSkpKTsK
KyAgfQorICB7CisgICAgY29uc3QgTCB4KDEsIDIsIDMpOworICAgIEVYUEVDVF9FUSgKKyAgICAg
ICAgc3RkOjptYWtlX3R1cGxlKHguUG9pbnRlcjwwPihwKSwgeC5Qb2ludGVyPDE+KHApLCB4LlBv
aW50ZXI8Mj4ocCkpLAorICAgICAgICAoVHlwZTxzdGQ6OnR1cGxlPGludDhfdCosIGludDhfdCos
IEludDEyOCo+Pih4LlBvaW50ZXJzKHApKSkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBTbGlj
ZUJ5SW5kZXhTaXplKSB7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNo
YXIgcFsxMDBdID0ge307CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAg
IEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDApLlNsaWNlPDA+KHApLnNpemUoKSk7CisgICAgRVhQ
RUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoMywgTCgzKS5TbGljZTwwPihwKS5zaXplKCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0g
TGF5b3V0PGludDMyX3QsIGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMp
LlNsaWNlPDA+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSku
U2xpY2U8MT4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTCgzLCA1KS5TbGljZTwxPihw
KS5zaXplKCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJf
dCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTwwPihwKS5z
aXplKCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDA+KHApLnNp
emUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8MT4ocCkuc2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1LCA3KS5TbGljZTwwPihwKS5z
aXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNsaWNlPDE+KHAp
LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDcsIEw6OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8Mj4o
cCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzLCA1LCA3KS5TbGljZTwwPihwKS5zaXpl
KCkpOworICAgIEVYUEVDVF9FUSg1LCBMKDMsIDUsIDcpLlNsaWNlPDE+KHApLnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKDcsIEwoMywgNSwgNykuU2xpY2U8Mj4ocCkuc2l6ZSgpKTsKKyAgfQorfQor
CitURVNUKExheW91dCwgU2xpY2VCeVR5cGVTaXplKSB7CisgIGFsaWduYXMobWF4X2FsaWduX3Qp
IGNvbnN0IHVuc2lnbmVkIGNoYXIgcFsxMDBdID0ge307CisgIHsKKyAgICB1c2luZyBMID0gTGF5
b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDApLlNsaWNlPGludDMy
X3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8aW50
MzJfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzKS5TbGljZTxpbnQzMl90Pihw
KS5zaXplKCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJf
dCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTxpbnQ4X3Q+
KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8aW50
OF90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNl
PGludDMyX3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywgNSwg
NykuU2xpY2U8aW50OF90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFs
KDMsIDUsIDcpLlNsaWNlPGludDMyX3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDcsIEw6
OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8SW50MTI4PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9F
USgzLCBMKDMsIDUsIDcpLlNsaWNlPGludDhfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
NSwgTCgzLCA1LCA3KS5TbGljZTxpbnQzMl90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg3
LCBMKDMsIDUsIDcpLlNsaWNlPEludDEyOD4ocCkuc2l6ZSgpKTsKKyAgfQorfQorCitURVNUKExh
eW91dCwgTXV0YWJsZVNsaWNlQnlJbmRleFNpemUpIHsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkg
dW5zaWduZWQgY2hhciBwWzEwMF07CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+
OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDApLlNsaWNlPDA+KHApLnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgICBF
WFBFQ1RfRVEoMywgTCgzKS5TbGljZTwwPihwKS5zaXplKCkpOworICB9CisgIHsKKyAgICB1c2lu
ZyBMID0gTGF5b3V0PGludDMyX3QsIGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0
aWFsKDMpLlNsaWNlPDA+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwo
MywgNSkuU2xpY2U8MT4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTCgzLCA1KS5TbGlj
ZTwxPihwKS5zaXplKCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwg
aW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTww
PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDA+
KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8MT4o
cCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1LCA3KS5TbGljZTww
PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNsaWNl
PDE+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDcsIEw6OlBhcnRpYWwoMywgNSwgNykuU2xp
Y2U8Mj4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzLCA1LCA3KS5TbGljZTwwPihw
KS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMKDMsIDUsIDcpLlNsaWNlPDE+KHApLnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKDcsIEwoMywgNSwgNykuU2xpY2U8Mj4ocCkuc2l6ZSgpKTsKKyAg
fQorfQorCitURVNUKExheW91dCwgTXV0YWJsZVNsaWNlQnlUeXBlU2l6ZSkgeworICBhbGlnbmFz
KG1heF9hbGlnbl90KSB1bnNpZ25lZCBjaGFyIHBbMTAwXTsKKyAgeworICAgIHVzaW5nIEwgPSBM
YXlvdXQ8aW50MzJfdD47CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCkuU2xpY2U8aW50
MzJfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTxp
bnQzMl90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzLCBMKDMpLlNsaWNlPGludDMyX3Q+
KHApLnNpemUoKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQz
Ml90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNsaWNlPGludDhf
dD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1KS5TbGljZTxp
bnQ4X3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSkuU2xp
Y2U8aW50MzJfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1
LCA3KS5TbGljZTxpbnQ4X3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRp
YWwoMywgNSwgNykuU2xpY2U8aW50MzJfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNywg
TDo6UGFydGlhbCgzLCA1LCA3KS5TbGljZTxJbnQxMjg+KHApLnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKDMsIEwoMywgNSwgNykuU2xpY2U8aW50OF90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9F
USg1LCBMKDMsIDUsIDcpLlNsaWNlPGludDMyX3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KDcsIEwoMywgNSwgNykuU2xpY2U8SW50MTI4PihwKS5zaXplKCkpOworICB9Cit9CisKK1RFU1Qo
TGF5b3V0LCBTbGljZUJ5SW5kZXhEYXRhKSB7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0
IHVuc2lnbmVkIGNoYXIgcFsxMDBdID0ge307CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGlu
dDMyX3Q+OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwg
VHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDApLlNsaWNlPDA+KHApKS5kYXRh
KCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5
cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgzKS5TbGljZTwwPihwKSkuZGF0YSgp
KSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90
Pj4oTCgzKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBM
YXlvdXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAg
ICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMyku
U2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAg
ICAgRGlzdGFuY2UocCwKKyAgICAgICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+
PihMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEo
CisgICAgICAgIDEyLAorICAgICAgICBEaXN0YW5jZShwLAorICAgICAgICAgICAgICAgICBUeXBl
PFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8MT4ocCkpLmRhdGEo
KSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNw
YW48Y29uc3QgaW50MzJfdD4+KEwoMywgNSkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVY
UEVDVF9FUSgxMiwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGlu
dDMyX3Q+PihMKDMsIDUpLlNsaWNlPDE+KHApKS5kYXRhKCkpKTsKKyAgfQorICB7CisgICAgdXNp
bmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKAor
ICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4o
TDo6UGFydGlhbCgwKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAg
ICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6
UGFydGlhbCgxKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAg
ICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFy
dGlhbCg1KS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAw
LCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihM
OjpQYXJ0aWFsKDAsIDApLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisg
ICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsCisgICAgICAgICAgICAgICAgIFR5cGU8U3Bh
bjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgwLCAwKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7
CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAs
IFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDApLlNsaWNlPDA+KHApKS5k
YXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDQsCisgICAgICAgIERpc3RhbmNlKHAs
CisgICAgICAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgx
LCAwKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBE
aXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQ
YXJ0aWFsKDUsIDMpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAg
ICAgIDgsCisgICAgICAgIERpc3RhbmNlKHAsCisgICAgICAgICAgICAgICAgIFR5cGU8U3Bhbjxj
b25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCg1LCAzKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7Cisg
ICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAg
IHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPDA+
KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3Rh
bmNlKAorICAgICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90
Pj4oTDo6UGFydGlhbCgwLCAwLCAwKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNU
X0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsCisgICAg
ICAgICAgICBUeXBlPFNwYW48Y29uc3QgSW50MTI4Pj4oTDo6UGFydGlhbCgwLCAwLCAwKS5TbGlj
ZTwyPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBE
aXN0YW5jZSgKKyAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0
aWFsKDEsIDAsIDApLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAg
ICAgIDQsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5
cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgxLCAwLCAwKS5TbGljZTwxPihwKSku
ZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LAorICAgICAgICBEaXN0YW5jZSgK
KyAgICAgICAgICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgSW50MTI4Pj4oTDo6
UGFydGlhbCgxLCAwLCAwKS5TbGljZTwyPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAor
ICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxj
b25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsK
KyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDI0LAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAg
ICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgSW50MTI4Pj4oTDo6UGFydGlhbCg1
LCAzLCAxKS5TbGljZTwyPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4
LAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsCisgICAgICAgICAgICBUeXBlPFNw
YW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoNSwgMywgMSkuU2xpY2U8MT4ocCkpLmRhdGEo
KSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNv
bnN0IGludDhfdD4+KEwoNSwgMywgMSkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVD
VF9FUSgKKyAgICAgICAgMjQsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBJ
bnQxMjg+PihMKDUsIDMsIDEpLlNsaWNlPDI+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEo
CisgICAgICAgIDgsIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTCg1LCAz
LCAxKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFNsaWNl
QnlUeXBlRGF0YSkgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFy
IHBbMTAwXSA9IHt9OworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBF
WFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwg
VHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDApLlNsaWNlPGludDMyX3Q+KHAp
KS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNl
KAorICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDMp
LlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAs
IERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTCgzKS5TbGljZTxpbnQzMl90
PihwKSkuZGF0YSgpKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBp
bnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UoCisg
ICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCgwKS5T
bGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERp
c3RhbmNlKAorICAgICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6OlBh
cnRpYWwoMSkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAg
ICAgICAwLCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4
X3Q+PihMOjpQYXJ0aWFsKDUpLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVD
VF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLCBUeXBl
PFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCgwLCAwKS5TbGljZTxpbnQ4X3Q+KHApKS5k
YXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAor
ICAgICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6
UGFydGlhbCgwLCAwKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VR
KAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsIFR5cGU8U3Bh
bjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDApLlNsaWNlPGludDhfdD4ocCkpLmRhdGEo
KSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgNCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAg
ICAgICAgICBwLAorICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0
aWFsKDEsIDApLlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisg
ICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGNv
bnN0IGludDhfdD4+KEw6OlBhcnRpYWwoNSwgMykuU2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7
CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAg
ICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwo
NSwgMykuU2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAg
ICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLAorICAgICAgICAgICAgVHlw
ZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8aW50OF90Pihw
KSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5j
ZShwLCBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8
aW50MzJfdD4ocCkpCisgICAgICAgICAgICAgICAgICAgICAgICAuZGF0YSgpKSk7CisgICAgRVhQ
RUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBJbnQxMjg+PigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8SW50MTI4
PihwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKCkpKTsKKyAgICBF
WFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwK
KyAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDAsIDAp
LlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgNCwK
KyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFs
KDEsIDAsIDApLlNsaWNlPGludDMyX3Q+KHApKQorICAgICAgICAgICAgICAgICAgICAgICAgLmRh
dGEoKSkpOworICAgIEVYUEVDVF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgSW50
MTI4Pj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOjpQYXJ0aWFsKDEsIDAs
IDApLlNsaWNlPEludDEyOD4ocCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu
ZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgK
KyAgICAgICAgICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6
UGFydGlhbCg1LCAzLCAxKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1Rf
RVEoMjQsIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBJbnQxMjg+PigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPEludDEyOD4o
cCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEoKSkpOworICAgIEVY
UEVDVF9FUSgKKyAgICAgICAgOCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0
IGludDMyX3Q+PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPGludDMyX3Q+KHApKQorICAgICAg
ICAgICAgICAgICAgICAgICAgLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwK
KyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEwoNSwgMywgMSku
U2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAyNCwK
KyAgICAgICAgRGlzdGFuY2UocCwKKyAgICAgICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IElu
dDEyOD4+KEwoNSwgMywgMSkuU2xpY2U8SW50MTI4PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNU
X0VRKAorICAgICAgICA4LCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxj
b25zdCBpbnQzMl90Pj4oTCg1LCAzLCAxKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7Cisg
IH0KK30KKworVEVTVChMYXlvdXQsIE11dGFibGVTbGljZUJ5SW5kZXhEYXRhKSB7CisgIGFsaWdu
YXMobWF4X2FsaWduX3QpIHVuc2lnbmVkIGNoYXIgcFsxMDBdOworICB7CisgICAgdXNpbmcgTCA9
IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFu
Y2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDApLlNsaWNlPDA+KHApKS5kYXRh
KCkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxT
cGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDMpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBF
WFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMKDMpLlNsaWNlPDA+
KHApKS5kYXRhKCkpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90LCBp
bnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlw
ZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDMpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAg
ICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4o
TDo6UGFydGlhbCgzLCA1KS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAor
ICAgICAgICAxMiwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQ
YXJ0aWFsKDMsIDUpLlNsaWNlPDE+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlz
dGFuY2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMKDMsIDUpLlNsaWNlPDA+KHApKS5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoMTIsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTCgz
LCA1KS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlv
dXQ8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAg
ICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCgwKS5TbGljZTww
PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNl
KHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEpLlNsaWNlPDA+KHApKS5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFu
PGludDhfdD4+KEw6OlBhcnRpYWwoNSkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVD
VF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRp
YWwoMCwgMCkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAg
MCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDAsIDApLlNsaWNl
PDE+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAs
IFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDApLlNsaWNlPDA+KHApKS5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDQsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQz
Ml90Pj4oTDo6UGFydGlhbCgxLCAwKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNU
X0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlh
bCg1LCAzKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4
LCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoNSwgMykuU2xpY2U8
MT4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlz
dGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8MD4o
cCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFu
Y2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPDE+KHAp
KS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKAorICAgICAg
ICAgICAgICAgcCwgVHlwZTxTcGFuPEludDEyOD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8
Mj4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlz
dGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoMSwgMCwgMCkuU2xpY2U8MD4o
cCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgNCwKKyAgICAgICAgRGlzdGFu
Y2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDEsIDAsIDApLlNsaWNlPDE+KHAp
KS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsIERpc3RhbmNlKAorICAgICAg
ICAgICAgICAgcCwgVHlwZTxTcGFuPEludDEyOD4+KEw6OlBhcnRpYWwoMSwgMCwgMCkuU2xpY2U8
Mj4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlz
dGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoNSwgMywgMSkuU2xpY2U8MD4o
cCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMjQsIERpc3RhbmNlKAorICAg
ICAgICAgICAgICAgIHAsIFR5cGU8U3BhbjxJbnQxMjg+PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNs
aWNlPDI+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsCisgICAgICAg
IERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCg1LCAzLCAxKS5TbGlj
ZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8U3Bh
bjxpbnQ4X3Q+PihMKDUsIDMsIDEpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1Rf
RVEoMjQsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxJbnQxMjg+PihMKDUs
IDMsIDEpLlNsaWNlPDI+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2Uo
cCwgVHlwZTxTcGFuPGludDMyX3Q+PihMKDUsIDMsIDEpLlNsaWNlPDE+KHApKS5kYXRhKCkpKTsK
KyAgfQorfQorCitURVNUKExheW91dCwgTXV0YWJsZVNsaWNlQnlUeXBlRGF0YSkgeworICBhbGln
bmFzKG1heF9hbGlnbl90KSB1bnNpZ25lZCBjaGFyIHBbMTAwXTsKKyAgeworICAgIHVzaW5nIEwg
PSBMYXlvdXQ8aW50MzJfdD47CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBE
aXN0YW5jZShwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoMCkuU2xpY2U8aW50MzJf
dD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlz
dGFuY2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDMpLlNsaWNlPGludDMyX3Q+
KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGlu
dDMyX3Q+PihMKDMpLlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgfQorICB7CisgICAg
dXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VR
KAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCgw
KS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAs
IERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEpLlNsaWNlPGludDhf
dD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwg
VHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoNSkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgp
KSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBl
PFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCgwLCAwKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKAorICAgICAgICAgICAgICAg
cCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDAsIDApLlNsaWNlPGludDMyX3Q+KHAp
KS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNl
KHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDApLlNsaWNlPGludDhfdD4ocCkp
LmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgNCwgRGlzdGFuY2UoCisgICAgICAg
ICAgICAgICBwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoMSwgMCkuU2xpY2U8aW50
MzJfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAg
RGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoNSwgMykuU2xpY2U8aW50
OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LCBEaXN0YW5jZSgK
KyAgICAgICAgICAgICAgIHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCg1LCAzKS5T
bGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBE
aXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFs
KDAsIDAsIDApLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAg
ICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLCBUeXBlPFNwYW48aW50
MzJfdD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOwor
ICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAg
ICBwLAorICAgICAgICAgICAgVHlwZTxTcGFuPEludDEyOD4+KEw6OlBhcnRpYWwoMCwgMCwgMCku
U2xpY2U8SW50MTI4PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBE
aXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFs
KDEsIDAsIDApLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAg
ICAgICAgNCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLCBUeXBlPFNwYW48aW50
MzJfdD4+KEw6OlBhcnRpYWwoMSwgMCwgMCkuU2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOwor
ICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAg
ICBwLAorICAgICAgICAgICAgVHlwZTxTcGFuPEludDEyOD4+KEw6OlBhcnRpYWwoMSwgMCwgMCku
U2xpY2U8SW50MTI4PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBE
aXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFs
KDUsIDMsIDEpLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAg
ICAgICAgMjQsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwKKyAgICAgICAgICAg
IFR5cGU8U3BhbjxJbnQxMjg+PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPEludDEyOD4ocCkp
LmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwKKyAgICAgICAgRGlzdGFuY2Uo
CisgICAgICAgICAgICBwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoNSwgMywgMSku
U2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAg
ICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTCg1LCAzLCAxKS5TbGljZTxpbnQ4
X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDI0LAorICAgICAgICBE
aXN0YW5jZShwLCBUeXBlPFNwYW48SW50MTI4Pj4oTCg1LCAzLCAxKS5TbGljZTxJbnQxMjg+KHAp
KS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsIERpc3RhbmNlKHAsIFR5cGU8
U3BhbjxpbnQzMl90Pj4oTCg1LCAzLCAxKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7Cisg
IH0KK30KKworTUFUQ0hFUl9QKElzU2FtZVNsaWNlLCBzbGljZSwgIiIpIHsKKyAgcmV0dXJuIGFy
Zy5zaXplKCkgPT0gc2xpY2Uuc2l6ZSgpICYmIGFyZy5kYXRhKCkgPT0gc2xpY2UuZGF0YSgpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gTT4KK2NsYXNzIFR1cGxlTWF0Y2hlciB7CisgcHVi
bGljOgorICBleHBsaWNpdCBUdXBsZU1hdGNoZXIoTS4uLiBtYXRjaGVycykgOiBtYXRjaGVyc18o
c3RkOjptb3ZlKG1hdGNoZXJzKS4uLikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+
CisgIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IFR1cGxlJiBwLAorICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykgY29u
c3QgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjp0dXBsZV9zaXplPFR1cGxlPjo6dmFsdWUgPT0g
c2l6ZW9mLi4uKE0pLCAiIik7CisgICAgcmV0dXJuIE1hdGNoQW5kRXhwbGFpbkltcGwoCisgICAg
ICAgIHAsIGFic2w6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPFR1cGxlPjo6
dmFsdWU+e30pOworICB9CisKKyAgLy8gRm9yIHRoZSBtYXRjaGVyIGNvbmNlcHQuIExlZnQgZW1w
dHkgYXMgd2UgZG9uJ3QgcmVhbGx5IG5lZWQgdGhlIGRpYWdub3N0aWNzCisgIC8vIHJpZ2h0IG5v
dy4KKyAgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Qge30KKyAgdm9p
ZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7fQorCisgcHJp
dmF0ZToKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlLCBzaXplX3QuLi4gSXM+CisgIGJvb2wg
TWF0Y2hBbmRFeHBsYWluSW1wbChjb25zdCBUdXBsZSYgcCwgYWJzbDo6aW5kZXhfc2VxdWVuY2U8
SXMuLi4+KSBjb25zdCB7CisgICAgLy8gVXNpbmcgc3RkOjptaW4gYXMgYSBzaW1wbGUgdmFyaWFk
aWMgImFuZCIuCisgICAgcmV0dXJuIHN0ZDo6bWluKAorICAgICAgICB7dHJ1ZSwgdGVzdGluZzo6
U2FmZU1hdGNoZXJDYXN0PAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIHN0ZDo6
dHVwbGVfZWxlbWVudDxJcywgVHVwbGU+Ojp0eXBlJj4oCisgICAgICAgICAgICAgICAgICAgc3Rk
OjpnZXQ8SXM+KG1hdGNoZXJzXykpCisgICAgICAgICAgICAgICAgICAgLk1hdGNoZXMoc3RkOjpn
ZXQ8SXM+KHApKS4uLn0pOworICB9CisKKyAgc3RkOjp0dXBsZTxNLi4uPiBtYXRjaGVyc187Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gTT4KK3Rlc3Rpbmc6OlBvbHltb3JwaGljTWF0Y2hl
cjxUdXBsZU1hdGNoZXI8TS4uLj4+IFR1cGxlKE0uLi4gbWF0Y2hlcnMpIHsKKyAgcmV0dXJuIHRl
c3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXIoCisgICAgICBUdXBsZU1hdGNoZXI8TS4uLj4o
c3RkOjptb3ZlKG1hdGNoZXJzKS4uLikpOworfQorCitURVNUKExheW91dCwgU2xpY2VzKSB7Cisg
IGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgcFsxMDBdID0ge307Cisg
IHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQ4X3QsIEludDEyOD47CisgIHsKKyAgICBjb25z
dCBhdXRvIHggPSBMOjpQYXJ0aWFsKCk7CisgICAgRVhQRUNUX1RIQVQoVHlwZTxzdGQ6OnR1cGxl
PD4+KHguU2xpY2VzKHApKSwgVHVwbGUoKSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9
IEw6OlBhcnRpYWwoMSk7CisgICAgRVhQRUNUX1RIQVQoVHlwZTxzdGQ6OnR1cGxlPFNwYW48Y29u
c3QgaW50OF90Pj4+KHguU2xpY2VzKHApKSwKKyAgICAgICAgICAgICAgICBUdXBsZShJc1NhbWVT
bGljZSh4LlNsaWNlPDA+KHApKSkpOworICB9CisgIHsKKyAgICBjb25zdCBhdXRvIHggPSBMOjpQ
YXJ0aWFsKDEsIDIpOworICAgIEVYUEVDVF9USEFUKAorICAgICAgICAoVHlwZTxzdGQ6OnR1cGxl
PFNwYW48Y29uc3QgaW50OF90PiwgU3Bhbjxjb25zdCBpbnQ4X3Q+Pj4oeC5TbGljZXMocCkpKSwK
KyAgICAgICAgVHVwbGUoSXNTYW1lU2xpY2UoeC5TbGljZTwwPihwKSksIElzU2FtZVNsaWNlKHgu
U2xpY2U8MT4ocCkpKSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRpYWwo
MSwgMiwgMyk7CisgICAgRVhQRUNUX1RIQVQoKFR5cGU8c3RkOjp0dXBsZTxTcGFuPGNvbnN0IGlu
dDhfdD4sIFNwYW48Y29uc3QgaW50OF90PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNwYW48Y29uc3QgSW50MTI4Pj4+KHguU2xpY2VzKHApKSksCisgICAgICAgICAgICAgICAg
VHVwbGUoSXNTYW1lU2xpY2UoeC5TbGljZTwwPihwKSksIElzU2FtZVNsaWNlKHguU2xpY2U8MT4o
cCkpLAorICAgICAgICAgICAgICAgICAgICAgIElzU2FtZVNsaWNlKHguU2xpY2U8Mj4ocCkpKSk7
CisgIH0KKyAgeworICAgIGNvbnN0IEwgeCgxLCAyLCAzKTsKKyAgICBFWFBFQ1RfVEhBVCgoVHlw
ZTxzdGQ6OnR1cGxlPFNwYW48Y29uc3QgaW50OF90PiwgU3Bhbjxjb25zdCBpbnQ4X3Q+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Bhbjxjb25zdCBJbnQxMjg+Pj4oeC5TbGlj
ZXMocCkpKSwKKyAgICAgICAgICAgICAgICBUdXBsZShJc1NhbWVTbGljZSh4LlNsaWNlPDA+KHAp
KSwgSXNTYW1lU2xpY2UoeC5TbGljZTwxPihwKSksCisgICAgICAgICAgICAgICAgICAgICAgSXNT
YW1lU2xpY2UoeC5TbGljZTwyPihwKSkpKTsKKyAgfQorfQorCitURVNUKExheW91dCwgTXV0YWJs
ZVNsaWNlcykgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSB1bnNpZ25lZCBjaGFyIHBbMTAwXSA9
IHt9OworICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50OF90LCBJbnQxMjg+OworICB7Cisg
ICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgpOworICAgIEVYUEVDVF9USEFUKFR5cGU8c3Rk
Ojp0dXBsZTw+Pih4LlNsaWNlcyhwKSksIFR1cGxlKCkpOworICB9CisgIHsKKyAgICBjb25zdCBh
dXRvIHggPSBMOjpQYXJ0aWFsKDEpOworICAgIEVYUEVDVF9USEFUKFR5cGU8c3RkOjp0dXBsZTxT
cGFuPGludDhfdD4+Pih4LlNsaWNlcyhwKSksCisgICAgICAgICAgICAgICAgVHVwbGUoSXNTYW1l
U2xpY2UoeC5TbGljZTwwPihwKSkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6
UGFydGlhbCgxLCAyKTsKKyAgICBFWFBFQ1RfVEhBVCgoVHlwZTxzdGQ6OnR1cGxlPFNwYW48aW50
OF90PiwgU3BhbjxpbnQ4X3Q+Pj4oeC5TbGljZXMocCkpKSwKKyAgICAgICAgICAgICAgICBUdXBs
ZShJc1NhbWVTbGljZSh4LlNsaWNlPDA+KHApKSwgSXNTYW1lU2xpY2UoeC5TbGljZTwxPihwKSkp
KTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgxLCAyLCAzKTsKKyAg
ICBFWFBFQ1RfVEhBVCgKKyAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxTcGFuPGludDhfdD4sIFNw
YW48aW50OF90PiwgU3BhbjxJbnQxMjg+Pj4oeC5TbGljZXMocCkpKSwKKyAgICAgICAgVHVwbGUo
SXNTYW1lU2xpY2UoeC5TbGljZTwwPihwKSksIElzU2FtZVNsaWNlKHguU2xpY2U8MT4ocCkpLAor
ICAgICAgICAgICAgICBJc1NhbWVTbGljZSh4LlNsaWNlPDI+KHApKSkpOworICB9CisgIHsKKyAg
ICBjb25zdCBMIHgoMSwgMiwgMyk7CisgICAgRVhQRUNUX1RIQVQoCisgICAgICAgIChUeXBlPHN0
ZDo6dHVwbGU8U3BhbjxpbnQ4X3Q+LCBTcGFuPGludDhfdD4sIFNwYW48SW50MTI4Pj4+KHguU2xp
Y2VzKHApKSksCisgICAgICAgIFR1cGxlKElzU2FtZVNsaWNlKHguU2xpY2U8MD4ocCkpLCBJc1Nh
bWVTbGljZSh4LlNsaWNlPDE+KHApKSwKKyAgICAgICAgICAgICAgSXNTYW1lU2xpY2UoeC5TbGlj
ZTwyPihwKSkpKTsKKyAgfQorfQorCitURVNUKExheW91dCwgVW5hbGlnbmVkVHlwZXMpIHsKKyAg
Y29uc3RleHByIExheW91dDx1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBj
aGFyPiB4KDEsIDIsIDMpOworICBhbGlnbmFzKG1heF9hbGlnbl90KSB1bnNpZ25lZCBjaGFyIHBb
eC5BbGxvY1NpemUoKSArIDFdOworICBFWFBFQ1RfVEhBVCh4LlBvaW50ZXJzKHAgKyAxKSwgVHVw
bGUocCArIDEsIHAgKyAyLCBwICsgNCkpOworfQorCitURVNUKExheW91dCwgQ3VzdG9tQWxpZ25t
ZW50KSB7CisgIGNvbnN0ZXhwciBMYXlvdXQ8dW5zaWduZWQgY2hhciwgQWxpZ25lZDx1bnNpZ25l
ZCBjaGFyLCA4Pj4geCgxLCAyKTsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgdW5zaWduZWQgY2hh
ciBwW3guQWxsb2NTaXplKCldOworICBFWFBFQ1RfRVEoMTAsIHguQWxsb2NTaXplKCkpOworICBF
WFBFQ1RfVEhBVCh4LlBvaW50ZXJzKHApLCBUdXBsZShwICsgMCwgcCArIDgpKTsKK30KKworVEVT
VChMYXlvdXQsIE92ZXJBbGlnbmVkKSB7CisgIGNvbnN0ZXhwciBzaXplX3QgTSA9IGFsaWdub2Yo
bWF4X2FsaWduX3QpOworICBjb25zdGV4cHIgTGF5b3V0PHVuc2lnbmVkIGNoYXIsIEFsaWduZWQ8
dW5zaWduZWQgY2hhciwgMiAqIE0+PiB4KDEsIDMpOworICBhbGlnbmFzKDIgKiBNKSB1bnNpZ25l
ZCBjaGFyIHBbeC5BbGxvY1NpemUoKV07CisgIEVYUEVDVF9FUSgyICogTSArIDMsIHguQWxsb2NT
aXplKCkpOworICBFWFBFQ1RfVEhBVCh4LlBvaW50ZXJzKHApLCBUdXBsZShwICsgMCwgcCArIDIg
KiBNKSk7Cit9CisKK1RFU1QoTGF5b3V0LCBBbGlnbm1lbnQpIHsKKyAgc3RhdGljX2Fzc2VydChM
YXlvdXQ8aW50OF90Pjo6QWxpZ25tZW50KCkgPT0gMSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExh
eW91dDxpbnQzMl90Pjo6QWxpZ25tZW50KCkgPT0gNCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExh
eW91dDxpbnQ2NF90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExh
eW91dDxBbGlnbmVkPGludDhfdCwgNjQ+Pjo6QWxpZ25tZW50KCkgPT0gNjQsICIiKTsKKyAgc3Rh
dGljX2Fzc2VydChMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBpbnQ2NF90Pjo6QWxpZ25tZW50KCkg
PT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQ4X3QsIGludDY0X3QsIGludDMy
X3Q+OjpBbGlnbm1lbnQoKSA9PSA4LCAiIik7CisgIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDMy
X3QsIGludDhfdCwgaW50NjRfdD46OkFsaWdubWVudCgpID09IDgsICIiKTsKKyAgc3RhdGljX2Fz
c2VydChMYXlvdXQ8aW50MzJfdCwgaW50NjRfdCwgaW50OF90Pjo6QWxpZ25tZW50KCkgPT0gOCwg
IiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQ2NF90LCBpbnQ4X3QsIGludDMyX3Q+OjpB
bGlnbm1lbnQoKSA9PSA4LCAiIik7CisgIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDY0X3QsIGlu
dDMyX3QsIGludDhfdD46OkFsaWdubWVudCgpID09IDgsICIiKTsKK30KKworVEVTVChMYXlvdXQs
IENvbnN0ZXhwclBhcnRpYWwpIHsKKyAgY29uc3RleHByIHNpemVfdCBNID0gYWxpZ25vZihtYXhf
YWxpZ25fdCk7CisgIGNvbnN0ZXhwciBMYXlvdXQ8dW5zaWduZWQgY2hhciwgQWxpZ25lZDx1bnNp
Z25lZCBjaGFyLCAyICogTT4+IHgoMSwgMyk7CisgIHN0YXRpY19hc3NlcnQoeC5QYXJ0aWFsKDEp
LnRlbXBsYXRlIE9mZnNldDwxPigpID09IDIgKiBNLCAiIik7Cit9CisvLyBbZnJvbSwgdG8pCitz
dHJ1Y3QgUmVnaW9uIHsKKyAgc2l6ZV90IGZyb207CisgIHNpemVfdCB0bzsKK307CisKK3ZvaWQg
RXhwZWN0UmVnaW9uUG9pc29uZWQoY29uc3QgdW5zaWduZWQgY2hhciogcCwgc2l6ZV90IG4sIGJv
b2wgcG9pc29uZWQpIHsKKyNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgorICBmb3IgKHNpemVfdCBp
ID0gMDsgaSAhPSBuOyArK2kpIHsKKyAgICBFWFBFQ1RfRVEocG9pc29uZWQsIF9fYXNhbl9hZGRy
ZXNzX2lzX3BvaXNvbmVkKHAgKyBpKSk7CisgIH0KKyNlbmRpZgorfQorCit0ZW1wbGF0ZSA8c2l6
ZV90IE4+Cit2b2lkIEV4cGVjdFBvaXNvbmVkKGNvbnN0IHVuc2lnbmVkIGNoYXIgKCZidWYpW05d
LAorICAgICAgICAgICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVnaW9uPiByZWcp
IHsKKyAgc2l6ZV90IHByZXYgPSAwOworICBmb3IgKGNvbnN0IFJlZ2lvbiYgciA6IHJlZykgewor
ICAgIEV4cGVjdFJlZ2lvblBvaXNvbmVkKGJ1ZiArIHByZXYsIHIuZnJvbSAtIHByZXYsIGZhbHNl
KTsKKyAgICBFeHBlY3RSZWdpb25Qb2lzb25lZChidWYgKyByLmZyb20sIHIudG8gLSByLmZyb20s
IHRydWUpOworICAgIHByZXYgPSByLnRvOworICB9CisgIEV4cGVjdFJlZ2lvblBvaXNvbmVkKGJ1
ZiArIHByZXYsIE4gLSBwcmV2LCBmYWxzZSk7Cit9CisKK1RFU1QoTGF5b3V0LCBQb2lzb25QYWRk
aW5nKSB7CisgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQ2NF90LCBpbnQzMl90LCBJbnQx
Mjg+OworCisgIGNvbnN0ZXhwciBzaXplX3QgbiA9IEw6OlBhcnRpYWwoMSwgMiwgMywgNCkuQWxs
b2NTaXplKCk7CisgIHsKKyAgICBjb25zdGV4cHIgYXV0byB4ID0gTDo6UGFydGlhbCgpOworICAg
IGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgY1tuXSA9IHt9OworICAg
IHguUG9pc29uUGFkZGluZyhjKTsKKyAgICBFWFBFQ1RfRVEoeC5TbGljZXMoYyksIHguU2xpY2Vz
KGMpKTsKKyAgICBFeHBlY3RQb2lzb25lZChjLCB7fSk7CisgIH0KKyAgeworICAgIGNvbnN0ZXhw
ciBhdXRvIHggPSBMOjpQYXJ0aWFsKDEpOworICAgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0
IHVuc2lnbmVkIGNoYXIgY1tuXSA9IHt9OworICAgIHguUG9pc29uUGFkZGluZyhjKTsKKyAgICBF
WFBFQ1RfRVEoeC5TbGljZXMoYyksIHguU2xpY2VzKGMpKTsKKyAgICBFeHBlY3RQb2lzb25lZChj
LCB7ezEsIDh9fSk7CisgIH0KKyAgeworICAgIGNvbnN0ZXhwciBhdXRvIHggPSBMOjpQYXJ0aWFs
KDEsIDIpOworICAgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgY1tu
XSA9IHt9OworICAgIHguUG9pc29uUGFkZGluZyhjKTsKKyAgICBFWFBFQ1RfRVEoeC5TbGljZXMo
YyksIHguU2xpY2VzKGMpKTsKKyAgICBFeHBlY3RQb2lzb25lZChjLCB7ezEsIDh9fSk7CisgIH0K
KyAgeworICAgIGNvbnN0ZXhwciBhdXRvIHggPSBMOjpQYXJ0aWFsKDEsIDIsIDMpOworICAgIGFs
aWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgY1tuXSA9IHt9OworICAgIHgu
UG9pc29uUGFkZGluZyhjKTsKKyAgICBFWFBFQ1RfRVEoeC5TbGljZXMoYyksIHguU2xpY2VzKGMp
KTsKKyAgICBFeHBlY3RQb2lzb25lZChjLCB7ezEsIDh9LCB7MzYsIDQwfX0pOworICB9CisgIHsK
KyAgICBjb25zdGV4cHIgYXV0byB4ID0gTDo6UGFydGlhbCgxLCAyLCAzLCA0KTsKKyAgICBhbGln
bmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIGNbbl0gPSB7fTsKKyAgICB4LlBv
aXNvblBhZGRpbmcoYyk7CisgICAgRVhQRUNUX0VRKHguU2xpY2VzKGMpLCB4LlNsaWNlcyhjKSk7
CisgICAgRXhwZWN0UG9pc29uZWQoYywge3sxLCA4fSwgezM2LCA0MH19KTsKKyAgfQorICB7Cisg
ICAgY29uc3RleHByIEwgeCgxLCAyLCAzLCA0KTsKKyAgICBhbGlnbmFzKG1heF9hbGlnbl90KSBj
b25zdCB1bnNpZ25lZCBjaGFyIGNbbl0gPSB7fTsKKyAgICB4LlBvaXNvblBhZGRpbmcoYyk7Cisg
ICAgRVhQRUNUX0VRKHguU2xpY2VzKGMpLCB4LlNsaWNlcyhjKSk7CisgICAgRXhwZWN0UG9pc29u
ZWQoYywge3sxLCA4fSwgezM2LCA0MH19KTsKKyAgfQorfQorCitURVNUKExheW91dCwgRGVidWdT
dHJpbmcpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgaW50NjRfdHlwZSA9CisjaWZkZWYgX01TQ19W
RVIKKyAgIl9faW50NjQiOworI2Vsc2UgICAvLyBfTVNDX1ZFUgorICBzdGQ6OmlzX3NhbWU8aW50
NjRfdCwgbG9uZyBsb25nPjo6dmFsdWUgPyAibG9uZyBsb25nIiA6ICJsb25nIjsgIC8vIE5PTElO
VAorI2VuZGlmICAvLyBfTVNDX1ZFUgorICB7CisgICAgY29uc3RleHByIGF1dG8geCA9IExheW91
dDxpbnQ4X3QsIGludDMyX3QsIGludDhfdCwgSW50MTI4Pjo6UGFydGlhbCgpOworICAgIEVYUEVD
VF9FUSgiQDA8c2lnbmVkIGNoYXI+KDEpIiwgeC5EZWJ1Z1N0cmluZygpKTsKKyAgfQorICB7Cisg
ICAgY29uc3RleHByIGF1dG8geCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIGludDhfdCwgSW50
MTI4Pjo6UGFydGlhbCgxKTsKKyAgICBFWFBFQ1RfRVEoIkAwPHNpZ25lZCBjaGFyPigxKVsxXTsg
QDQ8aW50Pig0KSIsIHguRGVidWdTdHJpbmcoKSk7CisgIH0KKyAgeworICAgIGNvbnN0ZXhwciBh
dXRvIHggPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBpbnQ4X3QsIEludDEyOD46OlBhcnRpYWwo
MSwgMik7CisgICAgRVhQRUNUX0VRKCJAMDxzaWduZWQgY2hhcj4oMSlbMV07IEA0PGludD4oNClb
Ml07IEAxMjxzaWduZWQgY2hhcj4oMSkiLAorICAgICAgICAgICAgICB4LkRlYnVnU3RyaW5nKCkp
OworICB9CisgIHsKKyAgICBjb25zdGV4cHIgYXV0byB4ID0gTGF5b3V0PGludDhfdCwgaW50MzJf
dCwgaW50OF90LCBJbnQxMjg+OjpQYXJ0aWFsKDEsIDIsIDMpOworICAgIEVYUEVDVF9FUSgKKyAg
ICAgICAgIkAwPHNpZ25lZCBjaGFyPigxKVsxXTsgQDQ8aW50Pig0KVsyXTsgQDEyPHNpZ25lZCBj
aGFyPigxKVszXTsgIgorICAgICAgICAiQDE2PCIgKworICAgICAgICAgICAgaW50NjRfdHlwZSAr
ICIgWzJdPigxNikiLAorICAgICAgICB4LkRlYnVnU3RyaW5nKCkpOworICB9CisgIHsKKyAgICBj
b25zdGV4cHIgYXV0byB4ID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgaW50OF90LCBJbnQxMjg+
OjpQYXJ0aWFsKDEsIDIsIDMsIDQpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgIkAwPHNpZ25l
ZCBjaGFyPigxKVsxXTsgQDQ8aW50Pig0KVsyXTsgQDEyPHNpZ25lZCBjaGFyPigxKVszXTsgIgor
ICAgICAgICAiQDE2PCIgKworICAgICAgICAgICAgaW50NjRfdHlwZSArICIgWzJdPigxNilbNF0i
LAorICAgICAgICB4LkRlYnVnU3RyaW5nKCkpOworICB9CisgIHsKKyAgICBjb25zdGV4cHIgTGF5
b3V0PGludDhfdCwgaW50MzJfdCwgaW50OF90LCBJbnQxMjg+IHgoMSwgMiwgMywgNCk7CisgICAg
RVhQRUNUX0VRKAorICAgICAgICAiQDA8c2lnbmVkIGNoYXI+KDEpWzFdOyBANDxpbnQ+KDQpWzJd
OyBAMTI8c2lnbmVkIGNoYXI+KDEpWzNdOyAiCisgICAgICAgICJAMTY8IiArCisgICAgICAgICAg
ICBpbnQ2NF90eXBlICsgIiBbMl0+KDE2KVs0XSIsCisgICAgICAgIHguRGVidWdTdHJpbmcoKSk7
CisgIH0KK30KKworVEVTVChMYXlvdXQsIENoYXJUeXBlcykgeworICBjb25zdGV4cHIgTGF5b3V0
PGludDMyX3Q+IHgoMSk7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNoYXIgY1t4LkFsbG9jU2l6
ZSgpXSA9IHt9OworICBhbGlnbmFzKG1heF9hbGlnbl90KSB1bnNpZ25lZCBjaGFyIHVjW3guQWxs
b2NTaXplKCldID0ge307CisgIGFsaWduYXMobWF4X2FsaWduX3QpIHNpZ25lZCBjaGFyIHNjW3gu
QWxsb2NTaXplKCldID0ge307CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IGNoYXIgY2Nb
eC5BbGxvY1NpemUoKV0gPSB7fTsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgY29uc3QgdW5zaWdu
ZWQgY2hhciBjdWNbeC5BbGxvY1NpemUoKV0gPSB7fTsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkg
Y29uc3Qgc2lnbmVkIGNoYXIgY3NjW3guQWxsb2NTaXplKCldID0ge307CisKKyAgVHlwZTxpbnQz
Ml90Kj4oeC5Qb2ludGVyPDA+KGMpKTsKKyAgVHlwZTxpbnQzMl90Kj4oeC5Qb2ludGVyPDA+KHVj
KSk7CisgIFR5cGU8aW50MzJfdCo+KHguUG9pbnRlcjwwPihzYykpOworICBUeXBlPGNvbnN0IGlu
dDMyX3QqPih4LlBvaW50ZXI8MD4oY2MpKTsKKyAgVHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2lu
dGVyPDA+KGN1YykpOworICBUeXBlPGNvbnN0IGludDMyX3QqPih4LlBvaW50ZXI8MD4oY3NjKSk7
CisKKyAgVHlwZTxpbnQzMl90Kj4oeC5Qb2ludGVyPGludDMyX3Q+KGMpKTsKKyAgVHlwZTxpbnQz
Ml90Kj4oeC5Qb2ludGVyPGludDMyX3Q+KHVjKSk7CisgIFR5cGU8aW50MzJfdCo+KHguUG9pbnRl
cjxpbnQzMl90PihzYykpOworICBUeXBlPGNvbnN0IGludDMyX3QqPih4LlBvaW50ZXI8aW50MzJf
dD4oY2MpKTsKKyAgVHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2ludGVyPGludDMyX3Q+KGN1Yykp
OworICBUeXBlPGNvbnN0IGludDMyX3QqPih4LlBvaW50ZXI8aW50MzJfdD4oY3NjKSk7CisKKyAg
VHlwZTxzdGQ6OnR1cGxlPGludDMyX3QqPj4oeC5Qb2ludGVycyhjKSk7CisgIFR5cGU8c3RkOjp0
dXBsZTxpbnQzMl90Kj4+KHguUG9pbnRlcnModWMpKTsKKyAgVHlwZTxzdGQ6OnR1cGxlPGludDMy
X3QqPj4oeC5Qb2ludGVycyhzYykpOworICBUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50MzJfdCo+
Pih4LlBvaW50ZXJzKGNjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxjb25zdCBpbnQzMl90Kj4+KHgu
UG9pbnRlcnMoY3VjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxjb25zdCBpbnQzMl90Kj4+KHguUG9p
bnRlcnMoY3NjKSk7CisKKyAgVHlwZTxTcGFuPGludDMyX3Q+Pih4LlNsaWNlPDA+KGMpKTsKKyAg
VHlwZTxTcGFuPGludDMyX3Q+Pih4LlNsaWNlPDA+KHVjKSk7CisgIFR5cGU8U3BhbjxpbnQzMl90
Pj4oeC5TbGljZTwwPihzYykpOworICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KHguU2xpY2U8
MD4oY2MpKTsKKyAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+Pih4LlNsaWNlPDA+KGN1YykpOwor
ICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KHguU2xpY2U8MD4oY3NjKSk7CisKKyAgVHlwZTxz
dGQ6OnR1cGxlPFNwYW48aW50MzJfdD4+Pih4LlNsaWNlcyhjKSk7CisgIFR5cGU8c3RkOjp0dXBs
ZTxTcGFuPGludDMyX3Q+Pj4oeC5TbGljZXModWMpKTsKKyAgVHlwZTxzdGQ6OnR1cGxlPFNwYW48
aW50MzJfdD4+Pih4LlNsaWNlcyhzYykpOworICBUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25zdCBp
bnQzMl90Pj4+KHguU2xpY2VzKGNjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxTcGFuPGNvbnN0IGlu
dDMyX3Q+Pj4oeC5TbGljZXMoY3VjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxTcGFuPGNvbnN0IGlu
dDMyX3Q+Pj4oeC5TbGljZXMoY3NjKSk7Cit9CisKK1RFU1QoTGF5b3V0LCBDb25zdEVsZW1lbnRU
eXBlKSB7CisgIGNvbnN0ZXhwciBMYXlvdXQ8Y29uc3QgaW50MzJfdD4geCgxKTsKKyAgYWxpZ25h
cyhpbnQzMl90KSBjaGFyIGNbeC5BbGxvY1NpemUoKV0gPSB7fTsKKyAgY29uc3QgY2hhciogY2Mg
PSBjOworICBjb25zdCBpbnQzMl90KiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90
Kj4oY2MpOworCisgIEVYUEVDVF9FUShhbGlnbm9mKGludDMyX3QpLCB4LkFsaWdubWVudCgpKTsK
KworICBFWFBFQ1RfRVEoMCwgeC5PZmZzZXQ8MD4oKSk7CisgIEVYUEVDVF9FUSgwLCB4Lk9mZnNl
dDxjb25zdCBpbnQzMl90PigpKTsKKworICBFWFBFQ1RfVEhBVCh4Lk9mZnNldHMoKSwgRWxlbWVu
dHNBcmUoMCkpOworCisgIEVYUEVDVF9FUSgxLCB4LlNpemU8MD4oKSk7CisgIEVYUEVDVF9FUSgx
LCB4LlNpemU8Y29uc3QgaW50MzJfdD4oKSk7CisKKyAgRVhQRUNUX1RIQVQoeC5TaXplcygpLCBF
bGVtZW50c0FyZSgxKSk7CisKKyAgRVhQRUNUX0VRKHNpemVvZihpbnQzMl90KSwgeC5BbGxvY1Np
emUoKSk7CisKKyAgRVhQRUNUX0VRKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KHguUG9pbnRlcjww
PihjKSkpOworICBFWFBFQ1RfRVEocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2ludGVyPDA+
KGNjKSkpOworCisgIEVYUEVDVF9FUShwLCBUeXBlPGNvbnN0IGludDMyX3QqPih4LlBvaW50ZXI8
Y29uc3QgaW50MzJfdD4oYykpKTsKKyAgRVhQRUNUX0VRKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+
KHguUG9pbnRlcjxjb25zdCBpbnQzMl90PihjYykpKTsKKworICBFWFBFQ1RfVEhBVChUeXBlPHN0
ZDo6dHVwbGU8Y29uc3QgaW50MzJfdCo+Pih4LlBvaW50ZXJzKGMpKSwgVHVwbGUocCkpOworICBF
WFBFQ1RfVEhBVChUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50MzJfdCo+Pih4LlBvaW50ZXJzKGNj
KSksIFR1cGxlKHApKTsKKworICBFWFBFQ1RfVEhBVChUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+
KHguU2xpY2U8MD4oYykpLAorICAgICAgICAgICAgICBJc1NhbWVTbGljZShTcGFuPGNvbnN0IGlu
dDMyX3Q+KHAsIDEpKSk7CisgIEVYUEVDVF9USEFUKFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4o
eC5TbGljZTwwPihjYykpLAorICAgICAgICAgICAgICBJc1NhbWVTbGljZShTcGFuPGNvbnN0IGlu
dDMyX3Q+KHAsIDEpKSk7CisKKyAgRVhQRUNUX1RIQVQoVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+
Pih4LlNsaWNlPGNvbnN0IGludDMyX3Q+KGMpKSwKKyAgICAgICAgICAgICAgSXNTYW1lU2xpY2Uo
U3Bhbjxjb25zdCBpbnQzMl90PihwLCAxKSkpOworICBFWFBFQ1RfVEhBVChUeXBlPFNwYW48Y29u
c3QgaW50MzJfdD4+KHguU2xpY2U8Y29uc3QgaW50MzJfdD4oY2MpKSwKKyAgICAgICAgICAgICAg
SXNTYW1lU2xpY2UoU3Bhbjxjb25zdCBpbnQzMl90PihwLCAxKSkpOworCisgIEVYUEVDVF9USEFU
KFR5cGU8c3RkOjp0dXBsZTxTcGFuPGNvbnN0IGludDMyX3Q+Pj4oeC5TbGljZXMoYykpLAorICAg
ICAgICAgICAgICBUdXBsZShJc1NhbWVTbGljZShTcGFuPGNvbnN0IGludDMyX3Q+KHAsIDEpKSkp
OworICBFWFBFQ1RfVEhBVChUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4+KHgu
U2xpY2VzKGNjKSksCisgICAgICAgICAgICAgIFR1cGxlKElzU2FtZVNsaWNlKFNwYW48Y29uc3Qg
aW50MzJfdD4ocCwgMSkpKSk7Cit9CisKK25hbWVzcGFjZSBleGFtcGxlIHsKKworLy8gSW1tdXRh
YmxlIG1vdmUtb25seSBzdHJpbmcgd2l0aCBzaXplb2YgZXF1YWwgdG8gc2l6ZW9mKHZvaWQqKS4g
VGhlIHN0cmluZworLy8gc2l6ZSBhbmQgdGhlIGNoYXJhY3RlcnMgYXJlIGtlcHQgaW4gdGhlIHNh
bWUgaGVhcCBhbGxvY2F0aW9uLgorY2xhc3MgQ29tcGFjdFN0cmluZyB7CisgcHVibGljOgorICBD
b21wYWN0U3RyaW5nKGNvbnN0IGNoYXIqIHMgPSAiIikgeyAgLy8gTk9MSU5UCisgICAgY29uc3Qg
c2l6ZV90IHNpemUgPSBzdHJsZW4ocyk7CisgICAgLy8gc2l6ZV90WzFdLCBmb2xsb3dlZCBieSBj
aGFyW3NpemUgKyAxXS4KKyAgICAvLyBUaGlzIHN0YXRlbWVudCBkb2Vzbid0IGFsbG9jYXRlIG1l
bW9yeS4KKyAgICBjb25zdCBMIGxheW91dCgxLCBzaXplICsgMSk7CisgICAgLy8gQWxsb2NTaXpl
KCkgdGVsbHMgdXMgaG93IG11Y2ggbWVtb3J5IHdlIG5lZWQgdG8gYWxsb2NhdGUgZm9yIGFsbCBv
dXIKKyAgICAvLyBkYXRhLgorICAgIHBfLnJlc2V0KG5ldyB1bnNpZ25lZCBjaGFyW2xheW91dC5B
bGxvY1NpemUoKV0pOworICAgIC8vIElmIHJ1bm5pbmcgdW5kZXIgQVNBTiwgbWFyayB0aGUgcGFk
ZGluZyBieXRlcywgaWYgYW55LCB0byBjYXRjaCBtZW1vcnkKKyAgICAvLyBlcnJvcnMuCisgICAg
bGF5b3V0LlBvaXNvblBhZGRpbmcocF8uZ2V0KCkpOworICAgIC8vIFN0b3JlIHRoZSBzaXplIGlu
IHRoZSBhbGxvY2F0aW9uLgorICAgIC8vIFBvaW50ZXI8c2l6ZV90PigpIGlzIGEgc3lub255bSBm
b3IgUG9pbnRlcjwwPigpLgorICAgICpsYXlvdXQuUG9pbnRlcjxzaXplX3Q+KHBfLmdldCgpKSA9
IHNpemU7CisgICAgLy8gU3RvcmUgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIGFsbG9jYXRpb24uCisg
ICAgbWVtY3B5KGxheW91dC5Qb2ludGVyPGNoYXI+KHBfLmdldCgpKSwgcywgc2l6ZSArIDEpOwor
ICB9CisKKyAgc2l6ZV90IHNpemUoKSBjb25zdCB7CisgICAgLy8gRXF1aXZhbGVudCB0byByZWlu
dGVycHJldF9jYXN0PHNpemVfdCY+KCpwKS4KKyAgICByZXR1cm4gKkw6OlBhcnRpYWwoKS5Qb2lu
dGVyPHNpemVfdD4ocF8uZ2V0KCkpOworICB9CisKKyAgY29uc3QgY2hhciogY19zdHIoKSBjb25z
dCB7CisgICAgLy8gRXF1aXZhbGVudCB0byByZWludGVycHJldF9jYXN0PGNoYXIqPihwLmdldCgp
ICsgc2l6ZW9mKHNpemVfdCkpLgorICAgIC8vIFRoZSBhcmd1bWVudCBpbiBQYXJ0aWFsKDEpIHNw
ZWNpZmllcyB0aGF0IHdlIGhhdmUgc2l6ZV90WzFdIGluIGZyb250IG9mCisgICAgLy8gdGhlCisg
ICAgLy8gY2hhcmFjdGVycy4KKyAgICByZXR1cm4gTDo6UGFydGlhbCgxKS5Qb2ludGVyPGNoYXI+
KHBfLmdldCgpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gT3VyIGhlYXAgYWxsb2NhdGlvbiBj
b250YWlucyBhIHNpemVfdCBmb2xsb3dlZCBieSBhbiBhcnJheSBvZiBjaGFycy4KKyAgdXNpbmcg
TCA9IExheW91dDxzaXplX3QsIGNoYXI+OworICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQgY2hh
cltdPiBwXzsKK307CisKK1RFU1QoQ29tcGFjdFN0cmluZywgV29ya3MpIHsKKyAgQ29tcGFjdFN0
cmluZyBzID0gImhlbGxvIjsKKyAgRVhQRUNUX0VRKDUsIHMuc2l6ZSgpKTsKKyAgRVhQRUNUX1NU
UkVRKCJoZWxsbyIsIHMuY19zdHIoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBleGFtcGxlCisK
K30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9u
b2RlX2hhc2hfcG9saWN5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3Bv
bGljeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA2NWU3MDA5ZTdlN2U0YzViMDMzYTVkMjU4Y2FkOTM1NzJjZmRh
NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNo
X3BvbGljeS5oCkBAIC0wLDAgKzEsODggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8gQWRhcHRzIGEgcG9saWN5IGZvciBub2Rlcy4KKy8vCisvLyBUaGUg
bm9kZSBwb2xpY3kgc2hvdWxkIG1vZGVsOgorLy8KKy8vIHN0cnVjdCBQb2xpY3kgeworLy8gICAv
LyBSZXR1cm5zIGEgbmV3IG5vZGUgYWxsb2NhdGVkIGFuZCBjb25zdHJ1Y3RlZCB1c2luZyB0aGUg
YWxsb2NhdG9yLCB1c2luZworLy8gICAvLyB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KKy8vICAg
dGVtcGxhdGUgPGNsYXNzIEFsbG9jLCBjbGFzcy4uLiBBcmdzPgorLy8gICB2YWx1ZV90eXBlKiBu
ZXdfZWxlbWVudChBbGxvYyogYWxsb2MsIEFyZ3MmJi4uLiBhcmdzKSBjb25zdDsKKy8vCisvLyAg
IC8vIERlc3Ryb3lzIGFuZCBkZWFsbG9jYXRlcyBub2RlIHVzaW5nIHRoZSBhbGxvY2F0b3IuCisv
LyAgIHRlbXBsYXRlIDxjbGFzcyBBbGxvYz4KKy8vICAgdm9pZCBkZWxldGVfZWxlbWVudChBbGxv
YyogYWxsb2MsIHZhbHVlX3R5cGUqIG5vZGUpIGNvbnN0OworLy8gfTsKKy8vCisvLyBJdCBtYXkg
YWxzbyBvcHRpb25hbGx5IGRlZmluZSBgdmFsdWUoKWAgYW5kIGBhcHBseSgpYC4gRm9yIGRvY3Vt
ZW50YXRpb24gb24KKy8vIHRoZXNlLCBzZWUgaGFzaF9wb2xpY3lfdHJhaXRzLmguCisKKyNpZm5k
ZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfTk9ERV9IQVNIX1BPTElDWV9IXworI2RlZmluZSBB
QlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9OT0RFX0hBU0hfUE9MSUNZX0hfCisKKyNpbmNsdWRlIDxj
YXNzZXJ0PgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUg
PHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBhYnNsIHsKK25h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xhc3MgUmVmZXJlbmNl
LCBjbGFzcyBQb2xpY3k+CitzdHJ1Y3Qgbm9kZV9oYXNoX3BvbGljeSB7CisgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19sdmFsdWVfcmVmZXJlbmNlPFJlZmVyZW5jZT46OnZhbHVlLCAiIik7CisKKyAg
dXNpbmcgc2xvdF90eXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8CisgICAgICB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8UmVmZXJlbmNlPjo6dHlwZT46OnR5cGUqOworCisgIHRl
bXBsYXRlIDxjbGFzcyBBbGxvYywgY2xhc3MuLi4gQXJncz4KKyAgc3RhdGljIHZvaWQgY29uc3Ry
dWN0KEFsbG9jKiBhbGxvYywgc2xvdF90eXBlKiBzbG90LCBBcmdzJiYuLi4gYXJncykgeworICAg
ICpzbG90ID0gUG9saWN5OjpuZXdfZWxlbWVudChhbGxvYywgc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvYz4KKyAgc3RhdGljIHZvaWQg
ZGVzdHJveShBbGxvYyogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCkgeworICAgIFBvbGljeTo6ZGVs
ZXRlX2VsZW1lbnQoYWxsb2MsICpzbG90KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxv
Yz4KKyAgc3RhdGljIHZvaWQgdHJhbnNmZXIoQWxsb2MqLCBzbG90X3R5cGUqIG5ld19zbG90LCBz
bG90X3R5cGUqIG9sZF9zbG90KSB7CisgICAgKm5ld19zbG90ID0gKm9sZF9zbG90OworICB9CisK
KyAgc3RhdGljIHNpemVfdCBzcGFjZV91c2VkKGNvbnN0IHNsb3RfdHlwZSogc2xvdCkgeworICAg
IGlmIChzbG90ID09IG51bGxwdHIpIHJldHVybiBQb2xpY3k6OmVsZW1lbnRfc3BhY2VfdXNlZChu
dWxscHRyKTsKKyAgICByZXR1cm4gUG9saWN5OjplbGVtZW50X3NwYWNlX3VzZWQoKnNsb3QpOwor
ICB9CisKKyAgc3RhdGljIFJlZmVyZW5jZSBlbGVtZW50KHNsb3RfdHlwZSogc2xvdCkgeyByZXR1
cm4gKipzbG90OyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFAgPSBQb2xpY3k+Cisg
IHN0YXRpYyBhdXRvIHZhbHVlKFQqIGVsZW0pIC0+IGRlY2x0eXBlKFA6OnZhbHVlKGVsZW0pKSB7
CisgICAgcmV0dXJuIFA6OnZhbHVlKGVsZW0pOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzLi4u
IFRzLCBjbGFzcyBQID0gUG9saWN5PgorICBzdGF0aWMgYXV0byBhcHBseShUcyYmLi4uIHRzKSAt
PiBkZWNsdHlwZShQOjphcHBseShzdGQ6OmZvcndhcmQ8VHM+KHRzKS4uLikpIHsKKyAgICByZXR1
cm4gUDo6YXBwbHkoc3RkOjpmb3J3YXJkPFRzPih0cykuLi4pOworICB9Cit9OworCit9ICAvLyBu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5k
aWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX05PREVfSEFTSF9QT0xJQ1lfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5X3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQzZDI4N2UzYzRhMDRlYmQ2MThjMzA1YTE1Yjc2MzA1ZjcyYTc0OTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0
LmNjCkBAIC0wLDAgKzEsNjcgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5
LmgiCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
aGFzaF9wb2xpY3lfdHJhaXRzLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250
YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKwordXNpbmcgOjp0ZXN0aW5nOjpQb2ludGVl
OworCitzdHJ1Y3QgUG9saWN5IDogbm9kZV9oYXNoX3BvbGljeTxpbnQmLCBQb2xpY3k+IHsKKyAg
dXNpbmcga2V5X3R5cGUgPSBpbnQ7CisgIHVzaW5nIGluaXRfdHlwZSA9IGludDsKKworICB0ZW1w
bGF0ZSA8Y2xhc3MgQWxsb2M+CisgIHN0YXRpYyBpbnQqIG5ld19lbGVtZW50KEFsbG9jKiBhbGxv
YywgaW50IHZhbHVlKSB7CisgICAgcmV0dXJuIG5ldyBpbnQodmFsdWUpOworICB9CisKKyAgdGVt
cGxhdGUgPGNsYXNzIEFsbG9jPgorICBzdGF0aWMgdm9pZCBkZWxldGVfZWxlbWVudChBbGxvYyog
YWxsb2MsIGludCogZWxlbSkgeworICAgIGRlbGV0ZSBlbGVtOworICB9Cit9OworCit1c2luZyBO
b2RlUG9saWN5ID0gaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeT47CisKK3N0cnVjdCBOb2RlVGVz
dCA6IDo6dGVzdGluZzo6VGVzdCB7CisgIHN0ZDo6YWxsb2NhdG9yPGludD4gYWxsb2M7CisgIGlu
dCBuID0gNTM7CisgIGludCogYSA9ICZuOworfTsKKworVEVTVF9GKE5vZGVUZXN0LCBDb25zdHJ1
Y3REZXN0cm95KSB7CisgIE5vZGVQb2xpY3k6OmNvbnN0cnVjdCgmYWxsb2MsICZhLCA0Mik7Cisg
IEVYUEVDVF9USEFUKGEsIFBvaW50ZWUoNDIpKTsKKyAgTm9kZVBvbGljeTo6ZGVzdHJveSgmYWxs
b2MsICZhKTsKK30KKworVEVTVF9GKE5vZGVUZXN0LCB0cmFuc2ZlcikgeworICBpbnQgcyA9IDQy
OworICBpbnQqIGIgPSAmczsKKyAgTm9kZVBvbGljeTo6dHJhbnNmZXIoJmFsbG9jLCAmYSwgJmIp
OworICBFWFBFQ1RfRVEoJnMsIGEpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVz
cGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVkYzAwNzFlN2RlODI5ZGUy
ZGRjNzk2NzU4NDY2MzJmNjYwNGM0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9yYXdfaGFzaF9tYXAuaApAQCAtMCwwICsxLDE4MiBAQAorLy8gQ29weXJpZ2h0
IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRF
Uk5BTF9SQVdfSEFTSF9NQVBfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfUkFX
X0hBU0hfTUFQX0hfCisKKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4K
KyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
Y29udGFpbmVyX21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jh
d19oYXNoX3NldC5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorCituYW1lc3BhY2UgYWJzbCB7
CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFBvbGlj
eSwgY2xhc3MgSGFzaCwgY2xhc3MgRXEsIGNsYXNzIEFsbG9jPgorY2xhc3MgcmF3X2hhc2hfbWFw
IDogcHVibGljIHJhd19oYXNoX3NldDxQb2xpY3ksIEhhc2gsIEVxLCBBbGxvYz4geworICAvLyBQ
IGlzIFBvbGljeS4gSXQncyBwYXNzZWQgYXMgYSB0ZW1wbGF0ZSBhcmd1bWVudCB0byBzdXBwb3J0
IG1hcHMgdGhhdCBoYXZlCisgIC8vIGluY29tcGxldGUgdHlwZXMgYXMgdmFsdWVzLCBhcyBpbiB1
bm9yZGVyZWRfbWFwPEssIEluY29tcGxldGVUeXBlPi4KKyAgLy8gTWFwcGVkUmVmZXJlbmNlPD4g
bWF5IGJlIGEgbm9uLXJlZmVyZW5jZSB0eXBlLgorICB0ZW1wbGF0ZSA8Y2xhc3MgUD4KKyAgdXNp
bmcgTWFwcGVkUmVmZXJlbmNlID0gZGVjbHR5cGUoUDo6dmFsdWUoCisgICAgICBzdGQ6OmFkZHJl
c3NvZihzdGQ6OmRlY2x2YWw8dHlwZW5hbWUgcmF3X2hhc2hfbWFwOjpyZWZlcmVuY2U+KCkpKSk7
CisKKyAgLy8gTWFwcGVkQ29uc3RSZWZlcmVuY2U8PiBtYXkgYmUgYSBub24tcmVmZXJlbmNlIHR5
cGUuCisgIHRlbXBsYXRlIDxjbGFzcyBQPgorICB1c2luZyBNYXBwZWRDb25zdFJlZmVyZW5jZSA9
IGRlY2x0eXBlKFA6OnZhbHVlKAorICAgICAgc3RkOjphZGRyZXNzb2Yoc3RkOjpkZWNsdmFsPHR5
cGVuYW1lIHJhd19oYXNoX21hcDo6Y29uc3RfcmVmZXJlbmNlPigpKSkpOworCisgcHVibGljOgor
ICB1c2luZyBrZXlfdHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6a2V5X3R5cGU7CisgIHVzaW5nIG1h
cHBlZF90eXBlID0gdHlwZW5hbWUgUG9saWN5OjptYXBwZWRfdHlwZTsKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIEs+CisgIHVzaW5nIGtleV9hcmcgPSB0eXBlbmFtZSByYXdfaGFzaF9tYXA6OnJhd19o
YXNoX3NldDo6dGVtcGxhdGUga2V5X2FyZzxLPjsKKworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz
X3JlZmVyZW5jZTxrZXlfdHlwZT46OnZhbHVlLCAiIik7CisgIC8vIFRPRE8oYWxraXMpOiByZW1v
dmUgdGhpcyBhc3NlcnRpb24gYW5kIHZlcmlmeSB0aGF0IHJlZmVyZW5jZSBtYXBwZWRfdHlwZSBp
cworICAvLyBzdXBwb3J0ZWQuCisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfcmVmZXJlbmNlPG1h
cHBlZF90eXBlPjo6dmFsdWUsICIiKTsKKworICB1c2luZyBpdGVyYXRvciA9IHR5cGVuYW1lIHJh
d19oYXNoX21hcDo6cmF3X2hhc2hfc2V0OjppdGVyYXRvcjsKKyAgdXNpbmcgY29uc3RfaXRlcmF0
b3IgPSB0eXBlbmFtZSByYXdfaGFzaF9tYXA6OnJhd19oYXNoX3NldDo6Y29uc3RfaXRlcmF0b3I7
CisKKyAgcmF3X2hhc2hfbWFwKCkge30KKyAgdXNpbmcgcmF3X2hhc2hfbWFwOjpyYXdfaGFzaF9z
ZXQ6OnJhd19oYXNoX3NldDsKKworICAvLyBUaGUgbGFzdCB0d28gdGVtcGxhdGUgcGFyYW1ldGVy
cyBlbnN1cmUgdGhhdCBib3RoIGFyZ3VtZW50cyBhcmUgcnZhbHVlcworICAvLyAobHZhbHVlIGFy
Z3VtZW50cyBhcmUgaGFuZGxlZCBieSB0aGUgb3ZlcmxvYWRzIGJlbG93KS4gVGhpcyBpcyBuZWNl
c3NhcnkKKyAgLy8gZm9yIHN1cHBvcnRpbmcgYml0ZmllbGQgYXJndW1lbnRzLgorICAvLworICAv
LyAgIHVuaW9uIHsgaW50IG4gOiAxOyB9OworICAvLyAgIGZsYXRfaGFzaF9tYXA8aW50LCBpbnQ+
IG07CisgIC8vICAgbS5pbnNlcnRfb3JfYXNzaWduKG4sIG4pOworICB0ZW1wbGF0ZSA8Y2xhc3Mg
SyA9IGtleV90eXBlLCBjbGFzcyBWID0gbWFwcGVkX3R5cGUsIEsqID0gbnVsbHB0ciwKKyAgICAg
ICAgICAgIFYqID0gbnVsbHB0cj4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnRf
b3JfYXNzaWduKGtleV9hcmc8Sz4mJiBrLCBWJiYgdikgeworICAgIHJldHVybiBpbnNlcnRfb3Jf
YXNzaWduX2ltcGwoc3RkOjpmb3J3YXJkPEs+KGspLCBzdGQ6OmZvcndhcmQ8Vj4odikpOworICB9
CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MgViA9IG1hcHBlZF90eXBl
LCBLKiA9IG51bGxwdHI+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fz
c2lnbihrZXlfYXJnPEs+JiYgaywgY29uc3QgViYgdikgeworICAgIHJldHVybiBpbnNlcnRfb3Jf
YXNzaWduX2ltcGwoc3RkOjpmb3J3YXJkPEs+KGspLCB2KTsKKyAgfQorCisgIHRlbXBsYXRlIDxj
bGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzIFYgPSBtYXBwZWRfdHlwZSwgViogPSBudWxscHRyPgor
ICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydF9vcl9hc3NpZ24oY29uc3Qga2V5X2Fy
ZzxLPiYgaywgViYmIHYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X29yX2Fzc2lnbl9pbXBsKGssIHN0
ZDo6Zm9yd2FyZDxWPih2KSk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBl
LCBjbGFzcyBWID0gbWFwcGVkX3R5cGU+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5z
ZXJ0X29yX2Fzc2lnbihjb25zdCBrZXlfYXJnPEs+JiBrLCBjb25zdCBWJiB2KSB7CisgICAgcmV0
dXJuIGluc2VydF9vcl9hc3NpZ25faW1wbChrLCB2KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFz
cyBLID0ga2V5X3R5cGUsIGNsYXNzIFYgPSBtYXBwZWRfdHlwZSwgSyogPSBudWxscHRyLAorICAg
ICAgICAgICAgViogPSBudWxscHRyPgorICBpdGVyYXRvciBpbnNlcnRfb3JfYXNzaWduKGNvbnN0
X2l0ZXJhdG9yLCBrZXlfYXJnPEs+JiYgaywgViYmIHYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X29y
X2Fzc2lnbihzdGQ6OmZvcndhcmQ8Sz4oayksIHN0ZDo6Zm9yd2FyZDxWPih2KSkuZmlyc3Q7Cisg
IH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBWID0gbWFwcGVkX3R5
cGUsIEsqID0gbnVsbHB0cj4KKyAgaXRlcmF0b3IgaW5zZXJ0X29yX2Fzc2lnbihjb25zdF9pdGVy
YXRvciwga2V5X2FyZzxLPiYmIGssIGNvbnN0IFYmIHYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X29y
X2Fzc2lnbihzdGQ6OmZvcndhcmQ8Sz4oayksIHYpLmZpcnN0OworICB9CisKKyAgdGVtcGxhdGUg
PGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MgViA9IG1hcHBlZF90eXBlLCBWKiA9IG51bGxwdHI+
CisgIGl0ZXJhdG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3RfaXRlcmF0b3IsIGNvbnN0IGtleV9h
cmc8Sz4mIGssIFYmJiB2KSB7CisgICAgcmV0dXJuIGluc2VydF9vcl9hc3NpZ24oaywgc3RkOjpm
b3J3YXJkPFY+KHYpKS5maXJzdDsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5
cGUsIGNsYXNzIFYgPSBtYXBwZWRfdHlwZT4KKyAgaXRlcmF0b3IgaW5zZXJ0X29yX2Fzc2lnbihj
b25zdF9pdGVyYXRvciwgY29uc3Qga2V5X2FyZzxLPiYgaywgY29uc3QgViYgdikgeworICAgIHJl
dHVybiBpbnNlcnRfb3JfYXNzaWduKGssIHYpLmZpcnN0OworICB9CisKKyAgdGVtcGxhdGUgPGNs
YXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MuLi4gQXJncywKKyAgICAgICAgICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAgICFzdGQ6OmlzX2NvbnZlcnRpYmxlPEssIGNv
bnN0X2l0ZXJhdG9yPjo6dmFsdWUsIGludD46OnR5cGUgPSAwLAorICAgICAgICAgICAgSyogPSBu
dWxscHRyPgorICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHRyeV9lbXBsYWNlKGtleV9hcmc8
Sz4mJiBrLCBBcmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiB0cnlfZW1wbGFjZV9pbXBsKHN0
ZDo6Zm9yd2FyZDxLPihrKSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisg
IHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzLi4uIEFyZ3MsCisgICAgICAgICAg
ICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICAhc3RkOjppc19jb252
ZXJ0aWJsZTxLLCBjb25zdF9pdGVyYXRvcj46OnZhbHVlLCBpbnQ+Ojp0eXBlID0gMD4KKyAgc3Rk
OjpwYWlyPGl0ZXJhdG9yLCBib29sPiB0cnlfZW1wbGFjZShjb25zdCBrZXlfYXJnPEs+JiBrLCBB
cmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiB0cnlfZW1wbGFjZV9pbXBsKGssIHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90
eXBlLCBjbGFzcy4uLiBBcmdzLCBLKiA9IG51bGxwdHI+CisgIGl0ZXJhdG9yIHRyeV9lbXBsYWNl
KGNvbnN0X2l0ZXJhdG9yLCBrZXlfYXJnPEs+JiYgaywgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICBy
ZXR1cm4gdHJ5X2VtcGxhY2Uoc3RkOjpmb3J3YXJkPEs+KGspLCBzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pLmZpcnN0OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwg
Y2xhc3MuLi4gQXJncz4KKyAgaXRlcmF0b3IgdHJ5X2VtcGxhY2UoY29uc3RfaXRlcmF0b3IsIGNv
bnN0IGtleV9hcmc8Sz4mIGssIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgcmV0dXJuIHRyeV9lbXBs
YWNlKGssIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikuZmlyc3Q7CisgIH0KKworICB0ZW1w
bGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBQID0gUG9saWN5PgorICBNYXBwZWRSZWZl
cmVuY2U8UD4gYXQoY29uc3Qga2V5X2FyZzxLPiYga2V5KSB7CisgICAgYXV0byBpdCA9IHRoaXMt
PmZpbmQoa2V5KTsKKyAgICBpZiAoaXQgPT0gdGhpcy0+ZW5kKCkpIHN0ZDo6YWJvcnQoKTsKKyAg
ICByZXR1cm4gUG9saWN5Ojp2YWx1ZSgmKml0KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBL
ID0ga2V5X3R5cGUsIGNsYXNzIFAgPSBQb2xpY3k+CisgIE1hcHBlZENvbnN0UmVmZXJlbmNlPFA+
IGF0KGNvbnN0IGtleV9hcmc8Sz4mIGtleSkgY29uc3QgeworICAgIGF1dG8gaXQgPSB0aGlzLT5m
aW5kKGtleSk7CisgICAgaWYgKGl0ID09IHRoaXMtPmVuZCgpKSBzdGQ6OmFib3J0KCk7CisgICAg
cmV0dXJuIFBvbGljeTo6dmFsdWUoJippdCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9
IGtleV90eXBlLCBjbGFzcyBQID0gUG9saWN5LCBLKiA9IG51bGxwdHI+CisgIE1hcHBlZFJlZmVy
ZW5jZTxQPiBvcGVyYXRvcltdKGtleV9hcmc8Sz4mJiBrZXkpIHsKKyAgICByZXR1cm4gUG9saWN5
Ojp2YWx1ZSgmKnRyeV9lbXBsYWNlKHN0ZDo6Zm9yd2FyZDxLPihrZXkpKS5maXJzdCk7CisgIH0K
KworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBQID0gUG9saWN5PgorICBN
YXBwZWRSZWZlcmVuY2U8UD4gb3BlcmF0b3JbXShjb25zdCBrZXlfYXJnPEs+JiBrZXkpIHsKKyAg
ICByZXR1cm4gUG9saWN5Ojp2YWx1ZSgmKnRyeV9lbXBsYWNlKGtleSkuZmlyc3QpOworICB9CisK
KyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVj4KKyAgc3RkOjpwYWlyPGl0
ZXJhdG9yLCBib29sPiBpbnNlcnRfb3JfYXNzaWduX2ltcGwoSyYmIGssIFYmJiB2KSB7CisgICAg
YXV0byByZXMgPSB0aGlzLT5maW5kX29yX3ByZXBhcmVfaW5zZXJ0KGspOworICAgIGlmIChyZXMu
c2Vjb25kKQorICAgICAgdGhpcy0+ZW1wbGFjZV9hdChyZXMuZmlyc3QsIHN0ZDo6Zm9yd2FyZDxL
PihrKSwgc3RkOjpmb3J3YXJkPFY+KHYpKTsKKyAgICBlbHNlCisgICAgICBQb2xpY3k6OnZhbHVl
KCYqdGhpcy0+aXRlcmF0b3JfYXQocmVzLmZpcnN0KSkgPSBzdGQ6OmZvcndhcmQ8Vj4odik7Cisg
ICAgcmV0dXJuIHt0aGlzLT5pdGVyYXRvcl9hdChyZXMuZmlyc3QpLCByZXMuc2Vjb25kfTsKKyAg
fQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzLi4uIEFyZ3M+CisgIHN0
ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gdHJ5X2VtcGxhY2VfaW1wbChLJiYgaywgQXJncyYmLi4u
IGFyZ3MpIHsKKyAgICBhdXRvIHJlcyA9IHRoaXMtPmZpbmRfb3JfcHJlcGFyZV9pbnNlcnQoayk7
CisgICAgaWYgKHJlcy5zZWNvbmQpCisgICAgICB0aGlzLT5lbXBsYWNlX2F0KHJlcy5maXJzdCwg
c3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZv
cndhcmRfYXNfdHVwbGUoc3RkOjpmb3J3YXJkPEs+KGspKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwor
ICAgIHJldHVybiB7dGhpcy0+aXRlcmF0b3JfYXQocmVzLmZpcnN0KSwgcmVzLnNlY29uZH07Cisg
IH0KK307CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVz
cGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfUkFXX0hBU0hf
TUFQX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMDE1MzEyOWZkMWU2ZWJlNzUxMzAwOWVhODQyM2ZkZWM0NWUzNjM0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5jYwpAQCAtMCwwICsx
LDQ1IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiCisKKyNpbmNsdWRlIDxj
c3RkZGVmPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2NvbmZpZy5oIgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKworY29uc3RleHByIHNpemVfdCBH
cm91cDo6a1dpZHRoOworCisvLyBSZXR1cm5zICJyYW5kb20iIHNlZWQuCitpbmxpbmUgc2l6ZV90
IFJhbmRvbVNlZWQoKSB7CisjaWYgQUJTTF9IQVZFX1RIUkVBRF9MT0NBTAorICBzdGF0aWMgdGhy
ZWFkX2xvY2FsIHNpemVfdCBjb3VudGVyID0gMDsKKyAgc2l6ZV90IHZhbHVlID0gKytjb3VudGVy
OworI2Vsc2UgICAvLyBBQlNMX0hBVkVfVEhSRUFEX0xPQ0FMCisgIHN0YXRpYyBzdGQ6OmF0b21p
YzxzaXplX3Q+IGNvdW50ZXI7CisgIHNpemVfdCB2YWx1ZSA9IGNvdW50ZXIuZmV0Y2hfYWRkKDEs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworI2VuZGlmICAvLyBBQlNMX0hBVkVfVEhSRUFE
X0xPQ0FMCisgIHJldHVybiB2YWx1ZSBeIHN0YXRpY19jYXN0PHNpemVfdD4ocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KCZjb3VudGVyKSk7Cit9CisKK2Jvb2wgU2hvdWxkSW5zZXJ0QmFja3dh
cmRzKHNpemVfdCBoYXNoLCBjdHJsX3QqIGN0cmwpIHsKKyAgLy8gVG8gYXZvaWQgcHJvYmxlbXMg
d2l0aCB3ZWFrIGhhc2hlcyBhbmQgc2luZ2xlIGJpdCB0ZXN0cywgd2UgdXNlICUgMTMuCisgIC8v
IFRPRE8oa2ZtLHNiZW56YSk6IHJldmlzaXQgYWZ0ZXIgd2UgZG8gdW5jb25kaXRpb25hbCBtaXhp
bmcKKyAgcmV0dXJuIChIMShoYXNoLCBjdHJsKSBeIFJhbmRvbVNlZWQoKSkgJSAxMyA+IDY7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBh
YnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBk
YTkwZjc5YTRmYzYzYTk2NzY1ODI3MjdjZmVjYzdlZDhjMmJlNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuaApAQCAtMCwwICsxLDE5MTUg
QEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gQW4gb3Bl
bi1hZGRyZXNzaW5nCisvLyBoYXNodGFibGUgd2l0aCBxdWFkcmF0aWMgcHJvYmluZy4KKy8vCisv
LyBUaGlzIGlzIGEgbG93IGxldmVsIGhhc2h0YWJsZSBvbiB0b3Agb2Ygd2hpY2ggZGlmZmVyZW50
IGludGVyZmFjZXMgY2FuIGJlCisvLyBpbXBsZW1lbnRlZCwgbGlrZSBmbGF0X2hhc2hfc2V0LCBu
b2RlX2hhc2hfc2V0LCBzdHJpbmdfaGFzaF9zZXQsIGV0Yy4KKy8vCisvLyBUaGUgdGFibGUgaW50
ZXJmYWNlIGlzIHNpbWlsYXIgdG8gdGhhdCBvZiBzdGQ6OnVub3JkZXJlZF9zZXQuIE5vdGFibGUK
Ky8vIGRpZmZlcmVuY2VzIGFyZSB0aGF0IG1vc3QgbWVtYmVyIGZ1bmN0aW9ucyBzdXBwb3J0IGhl
dGVyb2dlbmVvdXMga2V5cyB3aGVuCisvLyBCT1RIIHRoZSBoYXNoIGFuZCBlcSBmdW5jdGlvbnMg
YXJlIG1hcmtlZCBhcyB0cmFuc3BhcmVudC4gVGhleSBkbyBzbyBieQorLy8gcHJvdmlkaW5nIGEg
dHlwZWRlZiBjYWxsZWQgYGlzX3RyYW5zcGFyZW50YC4KKy8vCisvLyBXaGVuIGhldGVyb2dlbmVv
dXMgbG9va3VwIGlzIGVuYWJsZWQsIGZ1bmN0aW9ucyB0aGF0IHRha2Uga2V5X3R5cGUgYWN0IGFz
IGlmCisvLyB0aGV5IGhhdmUgYW4gb3ZlcmxvYWQgc2V0IGxpa2U6CisvLworLy8gICBpdGVyYXRv
ciBmaW5kKGNvbnN0IGtleV90eXBlJiBrZXkpOworLy8gICB0ZW1wbGF0ZSA8Y2xhc3MgSz4KKy8v
ICAgaXRlcmF0b3IgZmluZChjb25zdCBLJiBrZXkpOworLy8KKy8vICAgc2l6ZV90eXBlIGVyYXNl
KGNvbnN0IGtleV90eXBlJiBrZXkpOworLy8gICB0ZW1wbGF0ZSA8Y2xhc3MgSz4KKy8vICAgc2l6
ZV90eXBlIGVyYXNlKGNvbnN0IEsmIGtleSk7CisvLworLy8gICBzdGQ6OnBhaXI8aXRlcmF0b3Is
IGl0ZXJhdG9yPiBlcXVhbF9yYW5nZShjb25zdCBrZXlfdHlwZSYga2V5KTsKKy8vICAgdGVtcGxh
dGUgPGNsYXNzIEs+CisvLyAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+IGVxdWFsX3Jh
bmdlKGNvbnN0IEsmIGtleSk7CisvLworLy8gV2hlbiBoZXRlcm9nZW5lb3VzIGxvb2t1cCBpcyBk
aXNhYmxlZCwgb25seSB0aGUgZXhwbGljaXQgYGtleV90eXBlYCBvdmVybG9hZHMKKy8vIGV4aXN0
LgorLy8KKy8vIGZpbmQoKSBhbHNvIHN1cHBvcnRzIHBhc3NpbmcgdGhlIGhhc2ggZXhwbGljaXRs
eToKKy8vCisvLyAgIGl0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X3R5cGUmIGtleSwgc2l6ZV90IGhh
c2gpOworLy8gICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKy8vICAgaXRlcmF0b3IgZmluZChjb25zdCBV
JiBrZXksIHNpemVfdCBoYXNoKTsKKy8vCisvLyBJbiBhZGRpdGlvbiB0aGUgcG9pbnRlciB0byBl
bGVtZW50IGFuZCBpdGVyYXRvciBzdGFiaWxpdHkgZ3VhcmFudGVlcyBhcmUKKy8vIHdlYWtlcjog
YWxsIGl0ZXJhdG9ycyBhbmQgcG9pbnRlcnMgYXJlIGludmFsaWRhdGVkIGFmdGVyIGEgbmV3IGVs
ZW1lbnQgaXMKKy8vIGluc2VydGVkLgorLy8KKy8vIElNUExFTUVOVEFUSU9OIERFVEFJTFMKKy8v
CisvLyBUaGUgdGFibGUgc3RvcmVzIGVsZW1lbnRzIGlubGluZSBpbiBhIHNsb3QgYXJyYXkuIElu
IGFkZGl0aW9uIHRvIHRoZSBzbG90CisvLyBhcnJheSB0aGUgdGFibGUgbWFpbnRhaW5zIHNvbWUg
Y29udHJvbCBzdGF0ZSBwZXIgc2xvdC4gVGhlIGV4dHJhIHN0YXRlIGlzIG9uZQorLy8gYnl0ZSBw
ZXIgc2xvdCBhbmQgc3RvcmVzIGVtcHR5IG9yIGRlbGV0ZWQgbWFya3MsIG9yIGFsdGVybmF0aXZl
bHkgNyBiaXRzIGZyb20KKy8vIHRoZSBoYXNoIG9mIGFuIG9jY3VwaWVkIHNsb3QuIFRoZSB0YWJs
ZSBpcyBzcGxpdCBpbnRvIGxvZ2ljYWwgZ3JvdXBzIG9mCisvLyBzbG90cywgbGlrZSBzbzoKKy8v
CisvLyAgICAgIEdyb3VwIDEgICAgICAgICBHcm91cCAyICAgICAgICBHcm91cCAzCisvLyArLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCisvLyB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8CisvLyArLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCisvLworLy8gT24gbG9va3Vw
IHRoZSBoYXNoIGlzIHNwbGl0IGludG8gdHdvIHBhcnRzOgorLy8gLSBIMjogNyBiaXRzICh0aG9z
ZSBzdG9yZWQgaW4gdGhlIGNvbnRyb2wgYnl0ZXMpCisvLyAtIEgxOiB0aGUgcmVzdCBvZiB0aGUg
Yml0cworLy8gVGhlIGdyb3VwcyBhcmUgcHJvYmVkIHVzaW5nIEgxLiBGb3IgZWFjaCBncm91cCB0
aGUgc2xvdHMgYXJlIG1hdGNoZWQgdG8gSDIgaW4KKy8vIHBhcmFsbGVsLiBCZWNhdXNlIEgyIGlz
IDcgYml0cyAoMTI4IHN0YXRlcykgYW5kIHRoZSBudW1iZXIgb2Ygc2xvdHMgcGVyIGdyb3VwCisv
LyBpcyBsb3cgKDggb3IgMTYpIGluIGFsbW9zdCBhbGwgY2FzZXMgYSBtYXRjaCBpbiBIMiBpcyBh
bHNvIGEgbG9va3VwIGhpdC4KKy8vCisvLyBPbiBpbnNlcnQsIG9uY2UgdGhlIHJpZ2h0IGdyb3Vw
IGlzIGZvdW5kIChhcyBpbiBsb29rdXApLCBpdHMgc2xvdHMgYXJlCisvLyBmaWxsZWQgaW4gb3Jk
ZXIuCisvLworLy8gT24gZXJhc2UgYSBzbG90IGlzIGNsZWFyZWQuIEluIGNhc2UgdGhlIGdyb3Vw
IGRpZCBub3QgaGF2ZSBhbnkgZW1wdHkgc2xvdHMKKy8vIGJlZm9yZSB0aGUgZXJhc2UsIHRoZSBl
cmFzZWQgc2xvdCBpcyBtYXJrZWQgYXMgZGVsZXRlZC4KKy8vCisvLyBHcm91cHMgd2l0aG91dCBl
bXB0eSBzbG90cyAoYnV0IG1heWJlIHdpdGggZGVsZXRlZCBzbG90cykgZXh0ZW5kIHRoZSBwcm9i
ZQorLy8gc2VxdWVuY2UuIFRoZSBwcm9iaW5nIGFsZ29yaXRobSBpcyBxdWFkcmF0aWMuIEdpdmVu
IE4gdGhlIG51bWJlciBvZiBncm91cHMsCisvLyB0aGUgcHJvYmluZyBmdW5jdGlvbiBmb3IgdGhl
IGkndGggcHJvYmUgaXM6CisvLworLy8gICBQKDApID0gSDEgJSBOCisvLworLy8gICBQKGkpID0g
KFAoaSAtIDEpICsgaSkgJSBOCisvLworLy8gVGhpcyBwcm9iaW5nIGZ1bmN0aW9uIGd1YXJhbnRl
ZXMgdGhhdCBhZnRlciBOIHByb2JlcywgYWxsIHRoZSBncm91cHMgb2YgdGhlCisvLyB0YWJsZSB3
aWxsIGJlIHByb2JlZCBleGFjdGx5IG9uY2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5U
RVJOQUxfUkFXX0hBU0hfU0VUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1JB
V19IQVNIX1NFVF9IXworCisjaWZuZGVmIFNXSVNTVEFCTEVfSEFWRV9TU0UyCisjaWZkZWYgX19T
U0UyX18KKyNkZWZpbmUgU1dJU1NUQUJMRV9IQVZFX1NTRTIgMQorI2Vsc2UKKyNkZWZpbmUgU1dJ
U1NUQUJMRV9IQVZFX1NTRTIgMAorI2VuZGlmCisjZW5kaWYKKworI2lmbmRlZiBTV0lTU1RBQkxF
X0hBVkVfU1NTRTMKKyNpZmRlZiBfX1NTU0UzX18KKyNkZWZpbmUgU1dJU1NUQUJMRV9IQVZFX1NT
U0UzIDEKKyNlbHNlCisjZGVmaW5lIFNXSVNTVEFCTEVfSEFWRV9TU1NFMyAwCisjZW5kaWYKKyNl
bmRpZgorCisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTU0UzICYmICFTV0lTU1RBQkxFX0hBVkVfU1NF
MgorI2Vycm9yICJCYWQgY29uZmlndXJhdGlvbiEiCisjZW5kaWYKKworI2lmIFNXSVNTVEFCTEVf
SEFWRV9TU0UyCisjaW5jbHVkZSA8eDg2aW50cmluLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGFs
Z29yaXRobT4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUg
PGNzdHJpbmc+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNp
bmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaCIK
KyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuLmgiCisjaW5jbHVkZSAiYWJzbC9i
YXNlL3BvcnQuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21wcmVzc2Vk
X3R1cGxlLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21l
bW9yeS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Ry
YWl0cy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZV9kZWJ1
Z19ob29rcy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dC5oIgor
I2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBl
X3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJh
YnNsL3V0aWxpdHkvdXRpbGl0eS5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29u
dGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPHNpemVfdCBXaWR0aD4KK2NsYXNzIHByb2Jl
X3NlcSB7CisgcHVibGljOgorICBwcm9iZV9zZXEoc2l6ZV90IGhhc2gsIHNpemVfdCBtYXNrKSB7
CisgICAgYXNzZXJ0KCgobWFzayArIDEpICYgbWFzaykgPT0gMCAmJiAibm90IGEgbWFzayIpOwor
ICAgIG1hc2tfID0gbWFzazsKKyAgICBvZmZzZXRfID0gaGFzaCAmIG1hc2tfOworICB9CisgIHNp
emVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBvZmZzZXRfOyB9CisgIHNpemVfdCBvZmZzZXQo
c2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIChvZmZzZXRfICsgaSkgJiBtYXNrXzsgfQorCisgIHZv
aWQgbmV4dCgpIHsKKyAgICBpbmRleF8gKz0gV2lkdGg7CisgICAgb2Zmc2V0XyArPSBpbmRleF87
CisgICAgb2Zmc2V0XyAmPSBtYXNrXzsKKyAgfQorICAvLyAwLWJhc2VkIHByb2JlIGluZGV4LiBU
aGUgaS10aCBwcm9iZSBpbiB0aGUgcHJvYmUgc2VxdWVuY2UuCisgIHNpemVfdCBpbmRleCgpIGNv
bnN0IHsgcmV0dXJuIGluZGV4XzsgfQorCisgcHJpdmF0ZToKKyAgc2l6ZV90IG1hc2tfOworICBz
aXplX3Qgb2Zmc2V0XzsKKyAgc2l6ZV90IGluZGV4XyA9IDA7Cit9OworCit0ZW1wbGF0ZSA8Y2xh
c3MgQ29udGFpbmVyS2V5LCBjbGFzcyBIYXNoLCBjbGFzcyBFcT4KK3N0cnVjdCBSZXF1aXJlVXNh
YmxlS2V5IHsKKyAgdGVtcGxhdGUgPGNsYXNzIFBhc3NlZEtleSwgY2xhc3MuLi4gQXJncz4KKyAg
c3RkOjpwYWlyPAorICAgICAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPGNvbnN0IEhhc2gmPigpKHN0
ZDo6ZGVjbHZhbDxjb25zdCBQYXNzZWRLZXkmPigpKSksCisgICAgICBkZWNsdHlwZShzdGQ6OmRl
Y2x2YWw8Y29uc3QgRXEmPigpKHN0ZDo6ZGVjbHZhbDxjb25zdCBDb250YWluZXJLZXkmPigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8Y29u
c3QgUGFzc2VkS2V5Jj4oKSkpPioKKyAgb3BlcmF0b3IoKShjb25zdCBQYXNzZWRLZXkmLCBjb25z
dCBBcmdzJi4uLikgY29uc3Q7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgRSwgY2xhc3MgUG9saWN5
LCBjbGFzcyBIYXNoLCBjbGFzcyBFcSwgY2xhc3MuLi4gVHM+CitzdHJ1Y3QgSXNEZWNvbXBvc2Fi
bGUgOiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBQb2xpY3ksIGNsYXNz
IEhhc2gsIGNsYXNzIEVxLCBjbGFzcy4uLiBUcz4KK3N0cnVjdCBJc0RlY29tcG9zYWJsZTwKKyAg
ICBhYnNsOjp2b2lkX3Q8ZGVjbHR5cGUoCisgICAgICAgIFBvbGljeTo6YXBwbHkoUmVxdWlyZVVz
YWJsZUtleTx0eXBlbmFtZSBQb2xpY3k6OmtleV90eXBlLCBIYXNoLCBFcT4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8VHM+KCkuLi4pKT4sCisgICAgUG9saWN5LCBIYXNo
LCBFcSwgVHMuLi4+IDogc3RkOjp0cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcywgY2xh
c3MgPSB2b2lkPgorc3RydWN0IElzVHJhbnNwYXJlbnQgOiBzdGQ6OmZhbHNlX3R5cGUge307Cit0
ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBJc1RyYW5zcGFyZW50PFQsIGFic2w6OnZvaWRfdDx0
eXBlbmFtZSBUOjppc190cmFuc3BhcmVudD4+CisgICAgOiBzdGQ6OnRydWVfdHlwZSB7fTsKKwor
Ly8gVE9ETyhhbGtpcyk6IFN3aXRjaCB0byBzdGQ6OmlzX25vdGhyb3dfc3dhcHBhYmxlIHdoZW4g
Z2NjL2NsYW5nIHN1cHBvcnRzIGl0LgordGVtcGxhdGUgPGNsYXNzIFQ+Citjb25zdGV4cHIgYm9v
bCBJc05vVGhyb3dTd2FwcGFibGUoKSB7CisgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgcmV0dXJuIG5v
ZXhjZXB0KHN3YXAoc3RkOjpkZWNsdmFsPFQmPigpLCBzdGQ6OmRlY2x2YWw8VCY+KCkpKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbnQgVHJhaWxpbmdaZXJvcyhUIHgpIHsKKyAgcmV0
dXJuIHNpemVvZihUKSA9PSA4ID8gYmFzZV9pbnRlcm5hbDo6Q291bnRUcmFpbGluZ1plcm9zTm9u
WmVybzY0KHgpCisgICAgICAgICAgICAgICAgICAgICAgICA6IGJhc2VfaW50ZXJuYWw6OkNvdW50
VHJhaWxpbmdaZXJvc05vblplcm8zMih4KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citp
bnQgTGVhZGluZ1plcm9zKFQgeCkgeworICByZXR1cm4gc2l6ZW9mKFQpID09IDggPyBiYXNlX2lu
dGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0KHgpCisgICAgICAgICAgICAgICAgICAgICAgICA6
IGJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zMzIoeCk7Cit9CisKKy8vIEFuIGFic3Ry
YWN0aW9uIG92ZXIgYSBiaXRtYXNrLiBJdCBwcm92aWRlcyBhbiBlYXN5IHdheSB0byBpdGVyYXRl
IHRocm91Z2ggdGhlCisvLyBpbmRleGVzIG9mIHRoZSBzZXQgYml0cyBvZiBhIGJpdG1hc2suICBX
aGVuIFNoaWZ0PTAgKHBsYXRmb3JtcyB3aXRoIFNTRSksCisvLyB0aGlzIGlzIGEgdHJ1ZSBiaXRt
YXNrLiAgT24gbm9uLVNTRSwgcGxhdGZvcm1zIHRoZSBhcml0aGVtYXRpYyB1c2VkIHRvCisvLyBl
bXVsYXRlIHRoZSBTU0UgYmVoYXZpb3Igd29ya3MgaW4gYnl0ZXMgKFNoaWZ0PTMpIGFuZCBsZWF2
ZXMgZWFjaCBieXRlcyBhcworLy8gZWl0aGVyIDB4MDAgb3IgMHg4MC4KKy8vCisvLyBGb3IgZXhh
bXBsZToKKy8vICAgZm9yIChpbnQgaSA6IEJpdE1hc2s8dWludDMyX3QsIDE2PigweDUpKSAtPiB5
aWVsZHMgMCwgMgorLy8gICBmb3IgKGludCBpIDogQml0TWFzazx1aW50NjRfdCwgOCwgMz4oMHgw
MDAwMDAwMDgwODAwMDAwKSkgLT4geWllbGRzIDIsIDMKK3RlbXBsYXRlIDxjbGFzcyBULCBpbnQg
U2lnbmlmaWNhbnRCaXRzLCBpbnQgU2hpZnQgPSAwPgorY2xhc3MgQml0TWFzayB7CisgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc191bnNpZ25lZDxUPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2Vy
dChTaGlmdCA9PSAwIHx8IFNoaWZ0ID09IDMsICIiKTsKKworIHB1YmxpYzoKKyAgLy8gVGhlc2Ug
YXJlIHVzZWZ1bCBmb3IgdW5pdCB0ZXN0cyAoZ3VuaXQpLgorICB1c2luZyB2YWx1ZV90eXBlID0g
aW50OworICB1c2luZyBpdGVyYXRvciA9IEJpdE1hc2s7CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9y
ID0gQml0TWFzazsKKworICBleHBsaWNpdCBCaXRNYXNrKFQgbWFzaykgOiBtYXNrXyhtYXNrKSB7
fQorICBCaXRNYXNrJiBvcGVyYXRvcisrKCkgeworICAgIG1hc2tfICY9IChtYXNrXyAtIDEpOwor
ICAgIHJldHVybiAqdGhpczsKKyAgfQorICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gbWFza18gIT0gMDsgfQorICBpbnQgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
TG93ZXN0Qml0U2V0KCk7IH0KKyAgaW50IExvd2VzdEJpdFNldCgpIGNvbnN0IHsKKyAgICByZXR1
cm4gY29udGFpbmVyX2ludGVybmFsOjpUcmFpbGluZ1plcm9zKG1hc2tfKSA+PiBTaGlmdDsKKyAg
fQorICBpbnQgSGlnaGVzdEJpdFNldCgpIGNvbnN0IHsKKyAgICByZXR1cm4gKHNpemVvZihUKSAq
IENIQVJfQklUIC0gY29udGFpbmVyX2ludGVybmFsOjpMZWFkaW5nWmVyb3MobWFza18pIC0KKyAg
ICAgICAgICAgIDEpID4+CisgICAgICAgICAgIFNoaWZ0OworICB9CisKKyAgQml0TWFzayBiZWdp
bigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgIEJpdE1hc2sgZW5kKCkgY29uc3QgeyByZXR1
cm4gQml0TWFzaygwKTsgfQorCisgIGludCBUcmFpbGluZ1plcm9zKCkgY29uc3QgeworICAgIHJl
dHVybiBjb250YWluZXJfaW50ZXJuYWw6OlRyYWlsaW5nWmVyb3MobWFza18pID4+IFNoaWZ0Owor
ICB9CisKKyAgaW50IExlYWRpbmdaZXJvcygpIGNvbnN0IHsKKyAgICBjb25zdGV4cHIgaW50IHRv
dGFsX3NpZ25pZmljYW50X2JpdHMgPSBTaWduaWZpY2FudEJpdHMgPDwgU2hpZnQ7CisgICAgY29u
c3RleHByIGludCBleHRyYV9iaXRzID0gc2l6ZW9mKFQpICogOCAtIHRvdGFsX3NpZ25pZmljYW50
X2JpdHM7CisgICAgcmV0dXJuIGNvbnRhaW5lcl9pbnRlcm5hbDo6TGVhZGluZ1plcm9zKG1hc2tf
IDw8IGV4dHJhX2JpdHMpID4+IFNoaWZ0OworICB9CisKKyBwcml2YXRlOgorICBmcmllbmQgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEJpdE1hc2smIGEsIGNvbnN0IEJpdE1hc2smIGIpIHsKKyAgICBy
ZXR1cm4gYS5tYXNrXyA9PSBiLm1hc2tfOworICB9CisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0o
Y29uc3QgQml0TWFzayYgYSwgY29uc3QgQml0TWFzayYgYikgeworICAgIHJldHVybiBhLm1hc2tf
ICE9IGIubWFza187CisgIH0KKworICBUIG1hc2tfOworfTsKKwordXNpbmcgY3RybF90ID0gc2ln
bmVkIGNoYXI7Cit1c2luZyBoMl90ID0gdWludDhfdDsKKworLy8gVGhlIHZhbHVlcyBoZXJlIGFy
ZSBzZWxlY3RlZCBmb3IgbWF4aW11bSBwZXJmb3JtYW5jZS4gU2VlIHRoZSBzdGF0aWMgYXNzZXJ0
cworLy8gYmVsb3cgZm9yIGRldGFpbHMuCitlbnVtIEN0cmwgOiBjdHJsX3QgeworICBrRW1wdHkg
PSAtMTI4LCAgIC8vIDBiMTAwMDAwMDAKKyAga0RlbGV0ZWQgPSAtMiwgICAvLyAwYjExMTExMTEw
CisgIGtTZW50aW5lbCA9IC0xLCAgLy8gMGIxMTExMTExMQorfTsKK3N0YXRpY19hc3NlcnQoCisg
ICAga0VtcHR5ICYga0RlbGV0ZWQgJiBrU2VudGluZWwgJiAweDgwLAorICAgICJTcGVjaWFsIG1h
cmtlcnMgbmVlZCB0byBoYXZlIHRoZSBNU0IgdG8gbWFrZSBjaGVja2luZyBmb3IgdGhlbSBlZmZp
Y2llbnQiKTsKK3N0YXRpY19hc3NlcnQoa0VtcHR5IDwga1NlbnRpbmVsICYmIGtEZWxldGVkIDwg
a1NlbnRpbmVsLAorICAgICAgICAgICAgICAia0VtcHR5IGFuZCBrRGVsZXRlZCBtdXN0IGJlIHNt
YWxsZXIgdGhhbiBrU2VudGluZWwgdG8gbWFrZSB0aGUgIgorICAgICAgICAgICAgICAiU0lNRCB0
ZXN0IG9mIElzRW1wdHlPckRlbGV0ZWQoKSBlZmZpY2llbnQiKTsKK3N0YXRpY19hc3NlcnQoa1Nl
bnRpbmVsID09IC0xLAorICAgICAgICAgICAgICAia1NlbnRpbmVsIG11c3QgYmUgLTEgdG8gZWxp
ZGUgbG9hZGluZyBpdCBmcm9tIG1lbW9yeSBpbnRvIFNJTUQgIgorICAgICAgICAgICAgICAicmVn
aXN0ZXJzIChwY21wZXFkIHhtbSwgeG1tKSIpOworc3RhdGljX2Fzc2VydChrRW1wdHkgPT0gLTEy
OCwKKyAgICAgICAgICAgICAgImtFbXB0eSBtdXN0IGJlIC0xMjggdG8gbWFrZSB0aGUgU0lNRCBj
aGVjayBmb3IgaXRzICIKKyAgICAgICAgICAgICAgImV4aXN0ZW5jZSBlZmZpY2llbnQgKHBzaWdu
YiB4bW0sIHhtbSkiKTsKK3N0YXRpY19hc3NlcnQofmtFbXB0eSAmIH5rRGVsZXRlZCAmIGtTZW50
aW5lbCAmIDB4N0YsCisgICAgICAgICAgICAgICJrRW1wdHkgYW5kIGtEZWxldGVkIG11c3Qgc2hh
cmUgYW4gdW5zZXQgYml0IHRoYXQgaXMgbm90IHNoYXJlZCAiCisgICAgICAgICAgICAgICJieSBr
U2VudGluZWwgdG8gbWFrZSB0aGUgc2NhbGFyIHRlc3QgZm9yIE1hdGNoRW1wdHlPckRlbGV0ZWQo
KSAiCisgICAgICAgICAgICAgICJlZmZpY2llbnQiKTsKK3N0YXRpY19hc3NlcnQoa0RlbGV0ZWQg
PT0gLTIsCisgICAgICAgICAgICAgICJrRGVsZXRlZCBtdXN0IGJlIC0yIHRvIG1ha2UgdGhlIGlt
cGxlbWVudGF0aW9uIG9mICIKKyAgICAgICAgICAgICAgIkNvbnZlcnRTcGVjaWFsVG9FbXB0eUFu
ZEZ1bGxUb0RlbGV0ZWQgZWZmaWNpZW50Iik7CisKKy8vIEEgc2luZ2xlIGJsb2NrIG9mIGVtcHR5
IGNvbnRyb2wgYnl0ZXMgZm9yIHRhYmxlcyB3aXRob3V0IGFueSBzbG90cyBhbGxvY2F0ZWQuCisv
LyBUaGlzIGVuYWJsZXMgcmVtb3ZpbmcgYSBicmFuY2ggaW4gdGhlIGhvdCBwYXRoIG9mIGZpbmQo
KS4KK2lubGluZSBjdHJsX3QqIEVtcHR5R3JvdXAoKSB7CisgIGFsaWduYXMoMTYpIHN0YXRpYyBj
b25zdGV4cHIgY3RybF90IGVtcHR5X2dyb3VwW10gPSB7CisgICAgICBrU2VudGluZWwsIGtFbXB0
eSwga0VtcHR5LCBrRW1wdHksIGtFbXB0eSwga0VtcHR5LCBrRW1wdHksIGtFbXB0eSwKKyAgICAg
IGtFbXB0eSwgICAga0VtcHR5LCBrRW1wdHksIGtFbXB0eSwga0VtcHR5LCBrRW1wdHksIGtFbXB0
eSwga0VtcHR5fTsKKyAgcmV0dXJuIGNvbnN0X2Nhc3Q8Y3RybF90Kj4oZW1wdHlfZ3JvdXApOwor
fQorCisvLyBNaXhlcyBhIHJhbmRvbWx5IGdlbmVyYXRlZCBwZXItcHJvY2VzcyBzZWVkIHdpdGgg
YGhhc2hgIGFuZCBgY3RybGAgdG8KKy8vIHJhbmRvbWl6ZSBpbnNlcnRpb24gb3JkZXIgd2l0aGlu
IGdyb3Vwcy4KK2Jvb2wgU2hvdWxkSW5zZXJ0QmFja3dhcmRzKHNpemVfdCBoYXNoLCBjdHJsX3Qq
IGN0cmwpOworCisvLyBSZXR1cm5zIGEgaGFzaCBzZWVkLgorLy8KKy8vIFRoZSBzZWVkIGNvbnNp
c3RzIG9mIHRoZSBjdHJsXyBwb2ludGVyLCB3aGljaCBhZGRzIGVub3VnaCBlbnRyb3B5IHRvIGVu
c3VyZQorLy8gbm9uLWRldGVybWluaXNtIG9mIGl0ZXJhdGlvbiBvcmRlciBpbiBtb3N0IGNhc2Vz
LgoraW5saW5lIHNpemVfdCBIYXNoU2VlZChjb25zdCBjdHJsX3QqIGN0cmwpIHsKKyAgLy8gVGhl
IGxvdyBiaXRzIG9mIHRoZSBwb2ludGVyIGhhdmUgbGl0dGxlIG9yIG5vIGVudHJvcHkgYmVjYXVz
ZSBvZgorICAvLyBhbGlnbm1lbnQuIFdlIHNoaWZ0IHRoZSBwb2ludGVyIHRvIHRyeSB0byB1c2Ug
aGlnaGVyIGVudHJvcHkgYml0cy4gQQorICAvLyBnb29kIG51bWJlciBzZWVtcyB0byBiZSAxMiBi
aXRzLCBiZWNhdXNlIHRoYXQgYWxpZ25zIHdpdGggcGFnZSBzaXplLgorICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGN0cmwpID4+IDEyOworfQorCitpbmxpbmUgc2l6ZV90IEgx
KHNpemVfdCBoYXNoLCBjb25zdCBjdHJsX3QqIGN0cmwpIHsKKyAgcmV0dXJuIChoYXNoID4+IDcp
IF4gSGFzaFNlZWQoY3RybCk7Cit9CitpbmxpbmUgY3RybF90IEgyKHNpemVfdCBoYXNoKSB7IHJl
dHVybiBoYXNoICYgMHg3RjsgfQorCitpbmxpbmUgYm9vbCBJc0VtcHR5KGN0cmxfdCBjKSB7IHJl
dHVybiBjID09IGtFbXB0eTsgfQoraW5saW5lIGJvb2wgSXNGdWxsKGN0cmxfdCBjKSB7IHJldHVy
biBjID49IDA7IH0KK2lubGluZSBib29sIElzRGVsZXRlZChjdHJsX3QgYykgeyByZXR1cm4gYyA9
PSBrRGVsZXRlZDsgfQoraW5saW5lIGJvb2wgSXNFbXB0eU9yRGVsZXRlZChjdHJsX3QgYykgeyBy
ZXR1cm4gYyA8IGtTZW50aW5lbDsgfQorCisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTRTIKK3N0cnVj
dCBHcm91cCB7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtXaWR0aCA9IDE2OyAgLy8gdGhl
IG51bWJlciBvZiBzbG90cyBwZXIgZ3JvdXAKKworICBleHBsaWNpdCBHcm91cChjb25zdCBjdHJs
X3QqIHBvcykgeworICAgIGN0cmwgPSBfbW1fbG9hZHVfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBfX20xMjhpKj4ocG9zKSk7CisgIH0KKworICAvLyBSZXR1cm5zIGEgYml0bWFzayByZXBy
ZXNlbnRpbmcgdGhlIHBvc2l0aW9ucyBvZiBzbG90cyB0aGF0IG1hdGNoIGhhc2guCisgIEJpdE1h
c2s8dWludDMyX3QsIGtXaWR0aD4gTWF0Y2goaDJfdCBoYXNoKSBjb25zdCB7CisgICAgYXV0byBt
YXRjaCA9IF9tbV9zZXQxX2VwaTgoaGFzaCk7CisgICAgcmV0dXJuIEJpdE1hc2s8dWludDMyX3Qs
IGtXaWR0aD4oCisgICAgICAgIF9tbV9tb3ZlbWFza19lcGk4KF9tbV9jbXBlcV9lcGk4KG1hdGNo
LCBjdHJsKSkpOworICB9CisKKyAgLy8gUmV0dXJucyBhIGJpdG1hc2sgcmVwcmVzZW50aW5nIHRo
ZSBwb3NpdGlvbnMgb2YgZW1wdHkgc2xvdHMuCisgIEJpdE1hc2s8dWludDMyX3QsIGtXaWR0aD4g
TWF0Y2hFbXB0eSgpIGNvbnN0IHsKKyNpZiBTV0lTU1RBQkxFX0hBVkVfU1NTRTMKKyAgICAvLyBU
aGlzIG9ubHkgd29ya3MgYmVjYXVzZSBrRW1wdHkgaXMgLTEyOC4KKyAgICByZXR1cm4gQml0TWFz
azx1aW50MzJfdCwga1dpZHRoPigKKyAgICAgICAgX21tX21vdmVtYXNrX2VwaTgoX21tX3NpZ25f
ZXBpOChjdHJsLCBjdHJsKSkpOworI2Vsc2UKKyAgICByZXR1cm4gTWF0Y2goa0VtcHR5KTsKKyNl
bmRpZgorICB9CisKKyAgLy8gUmV0dXJucyBhIGJpdG1hc2sgcmVwcmVzZW50aW5nIHRoZSBwb3Np
dGlvbnMgb2YgZW1wdHkgb3IgZGVsZXRlZCBzbG90cy4KKyAgQml0TWFzazx1aW50MzJfdCwga1dp
ZHRoPiBNYXRjaEVtcHR5T3JEZWxldGVkKCkgY29uc3QgeworICAgIGF1dG8gc3BlY2lhbCA9IF9t
bV9zZXQxX2VwaTgoa1NlbnRpbmVsKTsKKyAgICByZXR1cm4gQml0TWFzazx1aW50MzJfdCwga1dp
ZHRoPigKKyAgICAgICAgX21tX21vdmVtYXNrX2VwaTgoX21tX2NtcGd0X2VwaTgoc3BlY2lhbCwg
Y3RybCkpKTsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0cmFpbGluZyBlbXB0
eSBvciBkZWxldGVkIGVsZW1lbnRzIGluIHRoZSBncm91cC4KKyAgdWludDMyX3QgQ291bnRMZWFk
aW5nRW1wdHlPckRlbGV0ZWQoKSBjb25zdCB7CisgICAgYXV0byBzcGVjaWFsID0gX21tX3NldDFf
ZXBpOChrU2VudGluZWwpOworICAgIHJldHVybiBUcmFpbGluZ1plcm9zKF9tbV9tb3ZlbWFza19l
cGk4KF9tbV9jbXBndF9lcGk4KHNwZWNpYWwsIGN0cmwpKSArIDEpOworICB9CisKKyAgdm9pZCBD
b252ZXJ0U3BlY2lhbFRvRW1wdHlBbmRGdWxsVG9EZWxldGVkKGN0cmxfdCogZHN0KSBjb25zdCB7
CisgICAgYXV0byBtc2JzID0gX21tX3NldDFfZXBpOCgweDgwKTsKKyAgICBhdXRvIHgxMjYgPSBf
bW1fc2V0MV9lcGk4KDEyNik7CisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTU0UzCisgICAgYXV0byBy
ZXMgPSBfbW1fb3Jfc2kxMjgoX21tX3NodWZmbGVfZXBpOCh4MTI2LCBjdHJsKSwgbXNicyk7Cisj
ZWxzZQorICAgIGF1dG8gemVybyA9IF9tbV9zZXR6ZXJvX3NpMTI4KCk7CisgICAgYXV0byBzcGVj
aWFsX21hc2sgPSBfbW1fY21wZ3RfZXBpOCh6ZXJvLCBjdHJsKTsKKyAgICBhdXRvIHJlcyA9IF9t
bV9vcl9zaTEyOChtc2JzLCBfbW1fYW5kbm90X3NpMTI4KHNwZWNpYWxfbWFzaywgeDEyNikpOwor
I2VuZGlmCisgICAgX21tX3N0b3JldV9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkqPihk
c3QpLCByZXMpOworICB9CisKKyAgX19tMTI4aSBjdHJsOworfTsKKyNlbHNlCitzdHJ1Y3QgR3Jv
dXAgeworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrV2lkdGggPSA4OworCisgIGV4cGxpY2l0
IEdyb3VwKGNvbnN0IGN0cmxfdCogcG9zKSA6IGN0cmwobGl0dGxlX2VuZGlhbjo6TG9hZDY0KHBv
cykpIHt9CisKKyAgQml0TWFzazx1aW50NjRfdCwga1dpZHRoLCAzPiBNYXRjaChoMl90IGhhc2gp
IGNvbnN0IHsKKyAgICAvLyBGb3IgdGhlIHRlY2huaXF1ZSwgc2VlOgorICAgIC8vIGh0dHA6Ly9n
cmFwaGljcy5zdGFuZm9yZC5lZHUvfnNlYW5kZXIvYml0aGFja3MuaHRtbCMjVmFsdWVJbldvcmQK
KyAgICAvLyAoRGV0ZXJtaW5lIGlmIGEgd29yZCBoYXMgYSBieXRlIGVxdWFsIHRvIG4pLgorICAg
IC8vCisgICAgLy8gQ2F2ZWF0OiB0aGVyZSBhcmUgZmFsc2UgcG9zaXRpdmVzIGJ1dDoKKyAgICAv
LyAtIHRoZXkgb25seSBvY2N1ciBpZiB0aGVyZSBpcyBhIHJlYWwgbWF0Y2gKKyAgICAvLyAtIHRo
ZXkgbmV2ZXIgb2NjdXIgb24ga0VtcHR5LCBrRGVsZXRlZCwga1NlbnRpbmVsCisgICAgLy8gLSB0
aGV5IHdpbGwgYmUgaGFuZGxlZCBncmFjZWZ1bGx5IGJ5IHN1YnNlcXVlbnQgY2hlY2tzIGluIGNv
ZGUKKyAgICAvLworICAgIC8vIEV4YW1wbGU6CisgICAgLy8gICB2ID0gMHgxNzE2MTUxNDEzMTIx
MTEwCisgICAgLy8gICBoYXNoID0gMHgxMgorICAgIC8vICAgcmV0dmFsID0gKHYgLSBsc2JzKSAm
IH52ICYgbXNicyA9IDB4MDAwMDAwMDA4MDgwMDAwMAorICAgIGNvbnN0ZXhwciB1aW50NjRfdCBt
c2JzID0gMHg4MDgwODA4MDgwODA4MDgwVUxMOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBsc2Jz
ID0gMHgwMTAxMDEwMTAxMDEwMTAxVUxMOworICAgIGF1dG8geCA9IGN0cmwgXiAobHNicyAqIGhh
c2gpOworICAgIHJldHVybiBCaXRNYXNrPHVpbnQ2NF90LCBrV2lkdGgsIDM+KCh4IC0gbHNicykg
JiB+eCAmIG1zYnMpOworICB9CisKKyAgQml0TWFzazx1aW50NjRfdCwga1dpZHRoLCAzPiBNYXRj
aEVtcHR5KCkgY29uc3QgeworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtc2JzID0gMHg4MDgwODA4
MDgwODA4MDgwVUxMOworICAgIHJldHVybiBCaXRNYXNrPHVpbnQ2NF90LCBrV2lkdGgsIDM+KChj
dHJsICYgKH5jdHJsIDw8IDYpKSAmIG1zYnMpOworICB9CisKKyAgQml0TWFzazx1aW50NjRfdCwg
a1dpZHRoLCAzPiBNYXRjaEVtcHR5T3JEZWxldGVkKCkgY29uc3QgeworICAgIGNvbnN0ZXhwciB1
aW50NjRfdCBtc2JzID0gMHg4MDgwODA4MDgwODA4MDgwVUxMOworICAgIHJldHVybiBCaXRNYXNr
PHVpbnQ2NF90LCBrV2lkdGgsIDM+KChjdHJsICYgKH5jdHJsIDw8IDcpKSAmIG1zYnMpOworICB9
CisKKyAgdWludDMyX3QgQ291bnRMZWFkaW5nRW1wdHlPckRlbGV0ZWQoKSBjb25zdCB7CisgICAg
Y29uc3RleHByIHVpbnQ2NF90IGdhcHMgPSAweDAwRkVGRUZFRkVGRUZFRkVVTEw7CisgICAgcmV0
dXJuIChUcmFpbGluZ1plcm9zKCgofmN0cmwgJiAoY3RybCA+PiA3KSkgfCBnYXBzKSArIDEpICsg
NykgPj4gMzsKKyAgfQorCisgIHZvaWQgQ29udmVydFNwZWNpYWxUb0VtcHR5QW5kRnVsbFRvRGVs
ZXRlZChjdHJsX3QqIGRzdCkgY29uc3QgeworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtc2JzID0g
MHg4MDgwODA4MDgwODA4MDgwVUxMOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBsc2JzID0gMHgw
MTAxMDEwMTAxMDEwMTAxVUxMOworICAgIGF1dG8geCA9IGN0cmwgJiBtc2JzOworICAgIGF1dG8g
cmVzID0gKH54ICsgKHggPj4gNykpICYgfmxzYnM7CisgICAgbGl0dGxlX2VuZGlhbjo6U3RvcmU2
NChkc3QsIHJlcyk7CisgIH0KKworICB1aW50NjRfdCBjdHJsOworfTsKKyNlbmRpZiAgLy8gU1dJ
U1NUQUJMRV9IQVZFX1NTRTIKKwordGVtcGxhdGUgPGNsYXNzIFBvbGljeSwgY2xhc3MgSGFzaCwg
Y2xhc3MgRXEsIGNsYXNzIEFsbG9jPgorY2xhc3MgcmF3X2hhc2hfc2V0OworCisKK2lubGluZSBi
b29sIElzVmFsaWRDYXBhY2l0eShzaXplX3QgbikgeworICByZXR1cm4gKChuICsgMSkgJiBuKSA9
PSAwICYmIG4gPj0gR3JvdXA6OmtXaWR0aCAtIDE7Cit9CisKKy8vIFBSRUNPTkRJVElPTjoKKy8v
ICAgSXNWYWxpZENhcGFjaXR5KGNhcGFjaXR5KQorLy8gICBjdHJsW2NhcGFjaXR5XSA9PSBrU2Vu
dGluZWwKKy8vICAgY3RybFtpXSAhPSBrU2VudGluZWwgZm9yIGFsbCBpIDwgY2FwYWNpdHkKKy8v
IEFwcGxpZXMgbWFwcGluZyBmb3IgZXZlcnkgYnl0ZSBpbiBjdHJsOgorLy8gICBERUxFVEVEIC0+
IEVNUFRZCisvLyAgIEVNUFRZIC0+IEVNUFRZCisvLyAgIEZVTEwgLT4gREVMRVRFRAoraW5saW5l
IHZvaWQgQ29udmVydERlbGV0ZWRUb0VtcHR5QW5kRnVsbFRvRGVsZXRlZCgKKyAgICBjdHJsX3Qq
IGN0cmwsIHNpemVfdCBjYXBhY2l0eSkgeworICBhc3NlcnQoY3RybFtjYXBhY2l0eV0gPT0ga1Nl
bnRpbmVsKTsKKyAgYXNzZXJ0KElzVmFsaWRDYXBhY2l0eShjYXBhY2l0eSkpOworICBmb3IgKGN0
cmxfdCogcG9zID0gY3RybDsgcG9zICE9IGN0cmwgKyBjYXBhY2l0eSArIDE7IHBvcyArPSBHcm91
cDo6a1dpZHRoKSB7CisgICAgR3JvdXB7cG9zfS5Db252ZXJ0U3BlY2lhbFRvRW1wdHlBbmRGdWxs
VG9EZWxldGVkKHBvcyk7CisgIH0KKyAgLy8gQ29weSB0aGUgY2xvbmVkIGN0cmwgYnl0ZXMuCisg
IHN0ZDo6bWVtY3B5KGN0cmwgKyBjYXBhY2l0eSArIDEsIGN0cmwsIEdyb3VwOjprV2lkdGgpOwor
ICBjdHJsW2NhcGFjaXR5XSA9IGtTZW50aW5lbDsKK30KKworLy8gUm91bmRzIHVwIHRoZSBjYXBh
Y2l0eSB0byB0aGUgbmV4dCBwb3dlciBvZiAyIG1pbnVzIDEgYW5kIGVuc3VyZXMgaXQgaXMKKy8v
IGdyZWF0ZXIgb3IgZXF1YWwgdG8gR3JvdXA6OmtXaWR0aCAtIDEuCitpbmxpbmUgc2l6ZV90IE5v
cm1hbGl6ZUNhcGFjaXR5KHNpemVfdCBuKSB7CisgIGNvbnN0ZXhwciBzaXplX3Qga01pbkNhcGFj
aXR5ID0gR3JvdXA6OmtXaWR0aCAtIDE7CisgIHJldHVybiBuIDw9IGtNaW5DYXBhY2l0eQorICAg
ICAgICAgICAgID8ga01pbkNhcGFjaXR5CisgICAgICAgICAgICAgOiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpID4+IExlYWRpbmdaZXJvcyhuKTsKK30KKworLy8gVGhlIG5vZGVf
aGFuZGxlIGNvbmNlcHQgZnJvbSBDKysxNy4KKy8vIFdlIHNwZWNpYWxpemUgbm9kZV9oYW5kbGUg
Zm9yIHNldHMgYW5kIG1hcHMuIG5vZGVfaGFuZGxlX2Jhc2UgaG9sZHMgdGhlCisvLyBjb21tb24g
QVBJIG9mIGJvdGguCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUG9saWN5LCB0eXBlbmFtZSBBbGxvYz4K
K2NsYXNzIG5vZGVfaGFuZGxlX2Jhc2UgeworIHByb3RlY3RlZDoKKyAgdXNpbmcgUG9saWN5VHJh
aXRzID0gaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeT47CisgIHVzaW5nIHNsb3RfdHlwZSA9IHR5
cGVuYW1lIFBvbGljeVRyYWl0czo6c2xvdF90eXBlOworCisgcHVibGljOgorICB1c2luZyBhbGxv
Y2F0b3JfdHlwZSA9IEFsbG9jOworCisgIGNvbnN0ZXhwciBub2RlX2hhbmRsZV9iYXNlKCkge30K
KyAgbm9kZV9oYW5kbGVfYmFzZShub2RlX2hhbmRsZV9iYXNlJiYgb3RoZXIpIG5vZXhjZXB0IHsK
KyAgICAqdGhpcyA9IHN0ZDo6bW92ZShvdGhlcik7CisgIH0KKyAgfm5vZGVfaGFuZGxlX2Jhc2Uo
KSB7IGRlc3Ryb3koKTsgfQorICBub2RlX2hhbmRsZV9iYXNlJiBvcGVyYXRvcj0obm9kZV9oYW5k
bGVfYmFzZSYmIG90aGVyKSB7CisgICAgZGVzdHJveSgpOworICAgIGlmICghb3RoZXIuZW1wdHko
KSkgeworICAgICAgYWxsb2NfID0gb3RoZXIuYWxsb2NfOworICAgICAgUG9saWN5VHJhaXRzOjp0
cmFuc2ZlcihhbGxvYygpLCBzbG90KCksIG90aGVyLnNsb3QoKSk7CisgICAgICBvdGhlci5yZXNl
dCgpOworICAgIH0KKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBib29sIGVtcHR5KCkgY29u
c3Qgbm9leGNlcHQgeyByZXR1cm4gIWFsbG9jXzsgfQorICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gIWVtcHR5KCk7IH0KKyAgYWxsb2NhdG9yX3R5cGUg
Z2V0X2FsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuICphbGxvY187IH0KKworIHByb3RlY3RlZDoK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lPgorICBm
cmllbmQgY2xhc3MgcmF3X2hhc2hfc2V0OworCisgIG5vZGVfaGFuZGxlX2Jhc2UoY29uc3QgYWxs
b2NhdG9yX3R5cGUmIGEsIHNsb3RfdHlwZSogcykgOiBhbGxvY18oYSkgeworICAgIFBvbGljeVRy
YWl0czo6dHJhbnNmZXIoYWxsb2MoKSwgc2xvdCgpLCBzKTsKKyAgfQorCisgIHZvaWQgZGVzdHJv
eSgpIHsKKyAgICBpZiAoIWVtcHR5KCkpIHsKKyAgICAgIFBvbGljeVRyYWl0czo6ZGVzdHJveShh
bGxvYygpLCBzbG90KCkpOworICAgICAgcmVzZXQoKTsKKyAgICB9CisgIH0KKworICB2b2lkIHJl
c2V0KCkgeworICAgIGFzc2VydChhbGxvY18uaGFzX3ZhbHVlKCkpOworICAgIGFsbG9jXyA9IGFi
c2w6Om51bGxvcHQ7CisgIH0KKworICBzbG90X3R5cGUqIHNsb3QoKSBjb25zdCB7CisgICAgYXNz
ZXJ0KCFlbXB0eSgpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxzbG90X3R5cGUqPihz
dGQ6OmFkZHJlc3NvZihzbG90X3NwYWNlXykpOworICB9CisgIGFsbG9jYXRvcl90eXBlKiBhbGxv
YygpIHsgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKCphbGxvY18pOyB9CisKKyBwcml2YXRlOgorICBh
YnNsOjpvcHRpb25hbDxhbGxvY2F0b3JfdHlwZT4gYWxsb2NfOworICBtdXRhYmxlIGFic2w6OmFs
aWduZWRfc3RvcmFnZV90PHNpemVvZihzbG90X3R5cGUpLCBhbGlnbm9mKHNsb3RfdHlwZSk+Cisg
ICAgICBzbG90X3NwYWNlXzsKK307CisKKy8vIEZvciBzZXRzLgordGVtcGxhdGUgPHR5cGVuYW1l
IFBvbGljeSwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lID0gdm9pZD4KK2NsYXNzIG5vZGVfaGFu
ZGxlIDogcHVibGljIG5vZGVfaGFuZGxlX2Jhc2U8UG9saWN5LCBBbGxvYz4geworICB1c2luZyBC
YXNlID0gdHlwZW5hbWUgbm9kZV9oYW5kbGU6Om5vZGVfaGFuZGxlX2Jhc2U7CisKKyBwdWJsaWM6
CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBCYXNlOjpQb2xpY3lUcmFpdHM6OnZhbHVl
X3R5cGU7CisKKyAgY29uc3RleHByIG5vZGVfaGFuZGxlKCkge30KKworICB2YWx1ZV90eXBlJiB2
YWx1ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gQmFzZTo6UG9saWN5VHJhaXRzOjplbGVtZW50KHRo
aXMtPnNsb3QoKSk7CisgIH0KKworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlw
ZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4KKyAgZnJpZW5kIGNsYXNzIHJhd19oYXNoX3NldDsK
KworICBub2RlX2hhbmRsZShjb25zdCBBbGxvYyYgYSwgdHlwZW5hbWUgQmFzZTo6c2xvdF90eXBl
KiBzKSA6IEJhc2UoYSwgcykge30KK307CisKKy8vIEZvciBtYXBzLgordGVtcGxhdGUgPHR5cGVu
YW1lIFBvbGljeSwgdHlwZW5hbWUgQWxsb2M+CitjbGFzcyBub2RlX2hhbmRsZTxQb2xpY3ksIEFs
bG9jLCBhYnNsOjp2b2lkX3Q8dHlwZW5hbWUgUG9saWN5OjptYXBwZWRfdHlwZT4+CisgICAgOiBw
dWJsaWMgbm9kZV9oYW5kbGVfYmFzZTxQb2xpY3ksIEFsbG9jPiB7CisgIHVzaW5nIEJhc2UgPSB0
eXBlbmFtZSBub2RlX2hhbmRsZTo6bm9kZV9oYW5kbGVfYmFzZTsKKworIHB1YmxpYzoKKyAgdXNp
bmcga2V5X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3k6OmtleV90eXBlOworICB1c2luZyBtYXBwZWRf
dHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6bWFwcGVkX3R5cGU7CisKKyAgY29uc3RleHByIG5vZGVf
aGFuZGxlKCkge30KKworICBhdXRvIGtleSgpIGNvbnN0IC0+IGRlY2x0eXBlKEJhc2U6OlBvbGlj
eVRyYWl0czo6a2V5KHRoaXMtPnNsb3QoKSkpIHsKKyAgICByZXR1cm4gQmFzZTo6UG9saWN5VHJh
aXRzOjprZXkodGhpcy0+c2xvdCgpKTsKKyAgfQorCisgIG1hcHBlZF90eXBlJiBtYXBwZWQoKSBj
b25zdCB7CisgICAgcmV0dXJuIEJhc2U6OlBvbGljeVRyYWl0czo6dmFsdWUoCisgICAgICAgICZC
YXNlOjpQb2xpY3lUcmFpdHM6OmVsZW1lbnQodGhpcy0+c2xvdCgpKSk7CisgIH0KKworIHByaXZh
dGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4K
KyAgZnJpZW5kIGNsYXNzIHJhd19oYXNoX3NldDsKKworICBub2RlX2hhbmRsZShjb25zdCBBbGxv
YyYgYSwgdHlwZW5hbWUgQmFzZTo6c2xvdF90eXBlKiBzKSA6IEJhc2UoYSwgcykge30KK307CisK
Ky8vIEltcGxlbWVudCB0aGUgaW5zZXJ0X3JldHVybl90eXBlPD4gY29uY2VwdCBvZiBDKysxNy4K
K3RlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgTm9kZVR5cGU+CitzdHJ1Y3QgaW5zZXJ0
X3JldHVybl90eXBlIHsKKyAgSXRlcmF0b3IgcG9zaXRpb247CisgIGJvb2wgaW5zZXJ0ZWQ7Cisg
IE5vZGVUeXBlIG5vZGU7Cit9OworCisvLyBIZWxwZXIgdHJhaXQgdG8gYWxsb3cgb3IgZGlzYWxs
b3cgYXJiaXRyYXJ5IGtleXMgd2hlbiB0aGUgaGFzaCBhbmQKKy8vIGVxIGZ1bmN0aW9ucyBhcmUg
dHJhbnNwYXJlbnQuCisvLyBJdCBpcyB2ZXJ5IGltcG9ydGFudCB0aGF0IHRoZSBpbm5lciB0ZW1w
bGF0ZSBpcyBhbiBhbGlhcyBhbmQgdGhhdCB0aGUgdHlwZSBpdAorLy8gcHJvZHVjZXMgaXMgbm90
IGEgZGVwZW5kZW50IHR5cGUuIE90aGVyd2lzZSwgdHlwZSBkZWR1Y3Rpb24gd291bGQgZmFpbC4K
K3RlbXBsYXRlIDxib29sIGlzX3RyYW5zcGFyZW50Pgorc3RydWN0IEtleUFyZyB7CisgIC8vIFRy
YW5zcGFyZW50LiBGb3J3YXJkIGBLYC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1l
IGtleV90eXBlPgorICB1c2luZyB0eXBlID0gSzsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3Qg
S2V5QXJnPGZhbHNlPiB7CisgIC8vIE5vdCB0cmFuc3BhcmVudC4gQWx3YXlzIHVzZSBga2V5X3R5
cGVgLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUga2V5X3R5cGU+CisgIHVzaW5n
IHR5cGUgPSBrZXlfdHlwZTsKK307CisKKy8vIFBvbGljeTogYSBwb2xpY3kgZGVmaW5lcyBob3cg
dG8gcGVyZm9ybSBkaWZmZXJlbnQgb3BlcmF0aW9ucyBvbgorLy8gdGhlIHNsb3RzIG9mIHRoZSBo
YXNodGFibGUgKHNlZSBoYXNoX3BvbGljeV90cmFpdHMuaCBmb3IgdGhlIGZ1bGwgaW50ZXJmYWNl
CisvLyBvZiBwb2xpY3kpLgorLy8KKy8vIEhhc2g6IGEgKHBvc3NpYmx5IHBvbHltb3JwaGljKSBm
dW5jdG9yIHRoYXQgaGFzaGVzIGtleXMgb2YgdGhlIGhhc2h0YWJsZS4gVGhlCisvLyBmdW5jdG9y
IHNob3VsZCBhY2NlcHQgYSBrZXkgYW5kIHJldHVybiBzaXplX3QgYXMgaGFzaC4gRm9yIGJlc3Qg
cGVyZm9ybWFuY2UKKy8vIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSBoYXNoIGZ1bmN0aW9uIHBy
b3ZpZGVzIGhpZ2ggZW50cm9weSBhY3Jvc3MgYWxsIGJpdHMKKy8vIG9mIHRoZSBoYXNoLgorLy8K
Ky8vIEVxOiBhIChwb3NzaWJseSBwb2x5bW9ycGhpYykgZnVuY3RvciB0aGF0IGNvbXBhcmVzIHR3
byBrZXlzIGZvciBlcXVhbGl0eS4gSXQKKy8vIHNob3VsZCBhY2NlcHQgdHdvIChvZiBwb3NzaWJs
eSBkaWZmZXJlbnQgdHlwZSkga2V5cyBhbmQgcmV0dXJuIGEgYm9vbDogdHJ1ZQorLy8gaWYgdGhl
eSBhcmUgZXF1YWwsIGZhbHNlIGlmIHRoZXkgYXJlIG5vdC4gSWYgdHdvIGtleXMgY29tcGFyZSBl
cXVhbCwgdGhlbgorLy8gdGhlaXIgaGFzaCB2YWx1ZXMgYXMgZGVmaW5lZCBieSBIYXNoIE1VU1Qg
YmUgZXF1YWwuCisvLworLy8gQWxsb2NhdG9yOiBhbiBBbGxvY2F0b3IgW2h0dHA6Ly9kZXZkb2Nz
LmlvL2NwcC9jb25jZXB0L2FsbG9jYXRvcl0gd2l0aCB3aGljaAorLy8gdGhlIHN0b3JhZ2Ugb2Yg
dGhlIGhhc2h0YWJsZSB3aWxsIGJlIGFsbG9jYXRlZCBhbmQgdGhlIGVsZW1lbnRzIHdpbGwgYmUK
Ky8vIGNvbnN0cnVjdGVkIGFuZCBkZXN0cm95ZWQuCit0ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5LCBj
bGFzcyBIYXNoLCBjbGFzcyBFcSwgY2xhc3MgQWxsb2M+CitjbGFzcyByYXdfaGFzaF9zZXQgewor
ICB1c2luZyBQb2xpY3lUcmFpdHMgPSBoYXNoX3BvbGljeV90cmFpdHM8UG9saWN5PjsKKyAgdXNp
bmcgS2V5QXJnSW1wbCA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6S2V5QXJnPElzVHJhbnNwYXJlbnQ8
RXE+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSXNUcmFuc3BhcmVudDxIYXNoPjo6dmFsdWU+OworCisgcHVibGljOgorICB1c2luZyBp
bml0X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3lUcmFpdHM6OmluaXRfdHlwZTsKKyAgdXNpbmcga2V5
X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3lUcmFpdHM6OmtleV90eXBlOworICAvLyBUT0RPKHNiZW56
YSk6IEhpZGUgc2xvdF90eXBlIGFzIGl0IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gTmVl
ZHMgdXNlcgorICAvLyBjb2RlIGZpeGVzIQorICB1c2luZyBzbG90X3R5cGUgPSB0eXBlbmFtZSBQ
b2xpY3lUcmFpdHM6OnNsb3RfdHlwZTsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSBBbGxvYzsK
KyAgdXNpbmcgc2l6ZV90eXBlID0gc2l6ZV90OworICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBw
dHJkaWZmX3Q7CisgIHVzaW5nIGhhc2hlciA9IEhhc2g7CisgIHVzaW5nIGtleV9lcXVhbCA9IEVx
OworICB1c2luZyBwb2xpY3lfdHlwZSA9IFBvbGljeTsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5
cGVuYW1lIFBvbGljeVRyYWl0czo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgcmVmZXJlbmNlID0gdmFs
dWVfdHlwZSY7CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IGNvbnN0IHZhbHVlX3R5cGUmOwor
ICB1c2luZyBwb2ludGVyID0gdHlwZW5hbWUgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czwKKyAgICAg
IGFsbG9jYXRvcl90eXBlPjo6dGVtcGxhdGUgcmViaW5kX3RyYWl0czx2YWx1ZV90eXBlPjo6cG9p
bnRlcjsKKyAgdXNpbmcgY29uc3RfcG9pbnRlciA9IHR5cGVuYW1lIGFic2w6OmFsbG9jYXRvcl90
cmFpdHM8CisgICAgICBhbGxvY2F0b3JfdHlwZT46OnRlbXBsYXRlIHJlYmluZF90cmFpdHM8dmFs
dWVfdHlwZT46OmNvbnN0X3BvaW50ZXI7CisKKyAgLy8gQWxpYXMgdXNlZCBmb3IgaGV0ZXJvZ2Vu
ZW91cyBsb29rdXAgZnVuY3Rpb25zLgorICAvLyBga2V5X2FyZzxLPmAgZXZhbHVhdGVzIHRvIGBL
YCB3aGVuIHRoZSBmdW5jdG9ycyBhcmUgdHJhbnBhcmVudCBhbmQgdG8KKyAgLy8gYGtleV90eXBl
YCBvdGhlcndpc2UuIEl0IHBlcm1pdHMgdGVtcGxhdGUgYXJndW1lbnQgZGVkdWN0aW9uIG9uIGBL
YCBmb3IgdGhlCisgIC8vIHRyYW5zcGFyZW50IGNhc2UuCisgIHRlbXBsYXRlIDxjbGFzcyBLPgor
ICB1c2luZyBrZXlfYXJnID0gdHlwZW5hbWUgS2V5QXJnSW1wbDo6dGVtcGxhdGUgdHlwZTxLLCBr
ZXlfdHlwZT47CisKKyBwcml2YXRlOgorICAvLyBHaXZlIGFuIGVhcmx5IGVycm9yIHdoZW4ga2V5
X3R5cGUgaXMgbm90IGhhc2hhYmxlL2VxLgorICBhdXRvIEtleVR5cGVDYW5CZUhhc2hlZChjb25z
dCBIYXNoJiBoLCBjb25zdCBrZXlfdHlwZSYgaykgLT4gZGVjbHR5cGUoaChrKSk7CisgIGF1dG8g
S2V5VHlwZUNhbkJlRXEoY29uc3QgRXEmIGVxLCBjb25zdCBrZXlfdHlwZSYgaykgLT4gZGVjbHR5
cGUoZXEoaywgaykpOworCisgIHVzaW5nIExheW91dCA9IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5h
bDo6TGF5b3V0PGN0cmxfdCwgc2xvdF90eXBlPjsKKworICBzdGF0aWMgTGF5b3V0IE1ha2VMYXlv
dXQoc2l6ZV90IGNhcGFjaXR5KSB7CisgICAgYXNzZXJ0KElzVmFsaWRDYXBhY2l0eShjYXBhY2l0
eSkpOworICAgIHJldHVybiBMYXlvdXQoY2FwYWNpdHkgKyBHcm91cDo6a1dpZHRoICsgMSwgY2Fw
YWNpdHkpOworICB9CisKKyAgdXNpbmcgQWxsb2NUcmFpdHMgPSBhYnNsOjphbGxvY2F0b3JfdHJh
aXRzPGFsbG9jYXRvcl90eXBlPjsKKyAgdXNpbmcgU2xvdEFsbG9jID0gdHlwZW5hbWUgYWJzbDo6
YWxsb2NhdG9yX3RyYWl0czwKKyAgICAgIGFsbG9jYXRvcl90eXBlPjo6dGVtcGxhdGUgcmViaW5k
X2FsbG9jPHNsb3RfdHlwZT47CisgIHVzaW5nIFNsb3RBbGxvY1RyYWl0cyA9IHR5cGVuYW1lIGFi
c2w6OmFsbG9jYXRvcl90cmFpdHM8CisgICAgICBhbGxvY2F0b3JfdHlwZT46OnRlbXBsYXRlIHJl
YmluZF90cmFpdHM8c2xvdF90eXBlPjsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbHZhbHVl
X3JlZmVyZW5jZTxyZWZlcmVuY2U+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiUG9saWN5Ojpl
bGVtZW50KCkgbXVzdCByZXR1cm4gYSByZWZlcmVuY2UiKTsKKworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgc3RydWN0IFNhbWVBc0VsZW1lbnRSZWZlcmVuY2UKKyAgICAgIDogc3RkOjppc19z
YW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PAorICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxyZWZlcmVuY2U+Ojp0eXBlPjo6dHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZT46OnR5
cGU+IHt9OworCisgIC8vIEFuIGVuYWJsZXIgZm9yIGluc2VydChUJiYpOiBUIG11c3QgYmUgY29u
dmVydGlibGUgdG8gaW5pdF90eXBlIG9yIGJlIHRoZQorICAvLyBzYW1lIGFzIFtjdl0gdmFsdWVf
dHlwZSBbcmVmXS4KKyAgLy8gTm90ZTogd2Ugc2VwYXJhdGUgU2FtZUFzRWxlbWVudFJlZmVyZW5j
ZSBpbnRvIGl0cyBvd24gdHlwZSB0byBhdm9pZCB1c2luZworICAvLyByZWZlcmVuY2UgdW5sZXNz
IHdlIG5lZWQgdG8uIE1TVkMgZG9lc24ndCBzZWVtIHRvIGxpa2UgaXQgaW4gc29tZQorICAvLyBj
YXNlcy4KKyAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgIHVzaW5nIFJlcXVpcmVzSW5zZXJ0YWJsZSA9
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgYWJzbDo6ZGlzanVuY3Rpb248c3RkOjpp
c19jb252ZXJ0aWJsZTxULCBpbml0X3R5cGU+LAorICAgICAgICAgICAgICAgICAgICAgICAgU2Ft
ZUFzRWxlbWVudFJlZmVyZW5jZTxUPj46OnZhbHVlLAorICAgICAgaW50Pjo6dHlwZTsKKworICAv
LyBSZXF1aXJlc05vdEluaXQgaXMgYSB3b3JrYXJvdW5kIGZvciBnY2MgcHJpb3IgdG8gNy4xLgor
ICAvLyBTZWUgaHR0cHM6Ly9nb2Rib2x0Lm9yZy9nL1k0eHNVaC4KKyAgdGVtcGxhdGUgPGNsYXNz
IFQ+CisgIHVzaW5nIFJlcXVpcmVzTm90SW5pdCA9CisgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjwhc3RkOjppc19zYW1lPFQsIGluaXRfdHlwZT46OnZhbHVlLCBpbnQ+Ojp0eXBlOworCisg
IHRlbXBsYXRlIDxjbGFzcy4uLiBUcz4KKyAgdXNpbmcgSXNEZWNvbXBvc2FibGUgPSBJc0RlY29t
cG9zYWJsZTx2b2lkLCBQb2xpY3lUcmFpdHMsIEhhc2gsIEVxLCBUcy4uLj47CisKKyBwdWJsaWM6
CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHBvaW50ZXIsIHZhbHVlX3R5cGUqPjo6dmFs
dWUsCisgICAgICAgICAgICAgICAgIkFsbG9jYXRvcnMgd2l0aCBjdXN0b20gcG9pbnRlciB0eXBl
cyBhcmUgbm90IHN1cHBvcnRlZCIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxjb25z
dF9wb2ludGVyLCBjb25zdCB2YWx1ZV90eXBlKj46OnZhbHVlLAorICAgICAgICAgICAgICAgICJB
bGxvY2F0b3JzIHdpdGggY3VzdG9tIHBvaW50ZXIgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKTsK
KworICBjbGFzcyBpdGVyYXRvciB7CisgICAgZnJpZW5kIGNsYXNzIHJhd19oYXNoX3NldDsKKwor
ICAgcHVibGljOgorICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpmb3J3YXJkX2l0
ZXJhdG9yX3RhZzsKKyAgICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgcmF3X2hhc2hfc2V0
Ojp2YWx1ZV90eXBlOworICAgIHVzaW5nIHJlZmVyZW5jZSA9CisgICAgICAgIGFic2w6OmNvbmRp
dGlvbmFsX3Q8UG9saWN5VHJhaXRzOjpjb25zdGFudF9pdGVyYXRvcnM6OnZhbHVlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUmLCB2YWx1ZV90eXBlJj47Cisg
ICAgdXNpbmcgcG9pbnRlciA9IGFic2w6OnJlbW92ZV9yZWZlcmVuY2VfdDxyZWZlcmVuY2U+KjsK
KyAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSByYXdfaGFzaF9zZXQ6OmRpZmZl
cmVuY2VfdHlwZTsKKworICAgIGl0ZXJhdG9yKCkge30KKworICAgIC8vIFBSRUNPTkRJVElPTjog
bm90IGFuIGVuZCgpIGl0ZXJhdG9yLgorICAgIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7
IHJldHVybiBQb2xpY3lUcmFpdHM6OmVsZW1lbnQoc2xvdF8pOyB9CisKKyAgICAvLyBQUkVDT05E
SVRJT046IG5vdCBhbiBlbmQoKSBpdGVyYXRvci4KKyAgICBwb2ludGVyIG9wZXJhdG9yLT4oKSBj
b25zdCB7IHJldHVybiAmb3BlcmF0b3IqKCk7IH0KKworICAgIC8vIFBSRUNPTkRJVElPTjogbm90
IGFuIGVuZCgpIGl0ZXJhdG9yLgorICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeworICAgICAg
KytjdHJsXzsKKyAgICAgICsrc2xvdF87CisgICAgICBza2lwX2VtcHR5X29yX2RlbGV0ZWQoKTsK
KyAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgLy8gUFJFQ09ORElUSU9OOiBub3QgYW4g
ZW5kKCkgaXRlcmF0b3IuCisgICAgaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpIHsKKyAgICAgIGF1
dG8gdG1wID0gKnRoaXM7CisgICAgICArKyp0aGlzOworICAgICAgcmV0dXJuIHRtcDsKKyAgICB9
CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBhLCBjb25zdCBp
dGVyYXRvciYgYikgeworICAgICAgcmV0dXJuIGEuY3RybF8gPT0gYi5jdHJsXzsKKyAgICB9Cisg
ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgYSwgY29uc3QgaXRlcmF0
b3ImIGIpIHsKKyAgICAgIHJldHVybiAhKGEgPT0gYik7CisgICAgfQorCisgICBwcml2YXRlOgor
ICAgIGl0ZXJhdG9yKGN0cmxfdCogY3RybCkgOiBjdHJsXyhjdHJsKSB7fSAgLy8gZm9yIGVuZCgp
CisgICAgaXRlcmF0b3IoY3RybF90KiBjdHJsLCBzbG90X3R5cGUqIHNsb3QpIDogY3RybF8oY3Ry
bCksIHNsb3RfKHNsb3QpIHt9CisKKyAgICB2b2lkIHNraXBfZW1wdHlfb3JfZGVsZXRlZCgpIHsK
KyAgICAgIHdoaWxlIChJc0VtcHR5T3JEZWxldGVkKCpjdHJsXykpIHsKKyAgICAgICAgLy8gY3Ry
bCBpcyBub3QgbmVjZXNzYXJpbHkgYWxpZ25lZCB0byBHcm91cDo6a1dpZHRoLiBJdCBpcyBhbHNv
IGxpa2VseQorICAgICAgICAvLyB0byByZWFkIHBhc3QgdGhlIHNwYWNlIGZvciBjdHJsIGJ5dGVz
IGFuZCBpbnRvIHNsb3RzLiBUaGlzIGlzIG9rCisgICAgICAgIC8vIGJlY2F1c2UgY3RybCBoYXMg
c2l6ZW9mKCkgPT0gMSBhbmQgc2xvdCBoYXMgc2l6ZW9mKCkgPj0gMSBzbyB0aGVyZQorICAgICAg
ICAvLyBpcyBubyB3YXkgdG8gcmVhZCBvdXRzaWRlIHRoZSBjb21iaW5lZCBzbG90IGFycmF5Lgor
ICAgICAgICB1aW50MzJfdCBzaGlmdCA9IEdyb3Vwe2N0cmxffS5Db3VudExlYWRpbmdFbXB0eU9y
RGVsZXRlZCgpOworICAgICAgICBjdHJsXyArPSBzaGlmdDsKKyAgICAgICAgc2xvdF8gKz0gc2hp
ZnQ7CisgICAgICB9CisgICAgfQorCisgICAgY3RybF90KiBjdHJsXyA9IG51bGxwdHI7CisgICAg
c2xvdF90eXBlKiBzbG90XzsKKyAgfTsKKworICBjbGFzcyBjb25zdF9pdGVyYXRvciB7CisgICAg
ZnJpZW5kIGNsYXNzIHJhd19oYXNoX3NldDsKKworICAgcHVibGljOgorICAgIHVzaW5nIGl0ZXJh
dG9yX2NhdGVnb3J5ID0gdHlwZW5hbWUgaXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5OworICAg
IHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSByYXdfaGFzaF9zZXQ6OnZhbHVlX3R5cGU7Cisg
ICAgdXNpbmcgcmVmZXJlbmNlID0gdHlwZW5hbWUgcmF3X2hhc2hfc2V0Ojpjb25zdF9yZWZlcmVu
Y2U7CisgICAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIHJhd19oYXNoX3NldDo6Y29uc3RfcG9p
bnRlcjsKKyAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSByYXdfaGFzaF9zZXQ6
OmRpZmZlcmVuY2VfdHlwZTsKKworICAgIGNvbnN0X2l0ZXJhdG9yKCkge30KKyAgICAvLyBJbXBs
aWNpdCBjb25zdHJ1Y3Rpb24gZnJvbSBpdGVyYXRvci4KKyAgICBjb25zdF9pdGVyYXRvcihpdGVy
YXRvciBpKSA6IGlubmVyXyhzdGQ6Om1vdmUoaSkpIHt9CisKKyAgICByZWZlcmVuY2Ugb3BlcmF0
b3IqKCkgY29uc3QgeyByZXR1cm4gKmlubmVyXzsgfQorICAgIHBvaW50ZXIgb3BlcmF0b3ItPigp
IGNvbnN0IHsgcmV0dXJuIGlubmVyXy5vcGVyYXRvci0+KCk7IH0KKworICAgIGNvbnN0X2l0ZXJh
dG9yJiBvcGVyYXRvcisrKCkgeworICAgICAgKytpbm5lcl87CisgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorICAgIGNvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiBpbm5l
cl8rKzsgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjb25zdF9pdGVyYXRv
ciYgYSwgY29uc3QgY29uc3RfaXRlcmF0b3ImIGIpIHsKKyAgICAgIHJldHVybiBhLmlubmVyXyA9
PSBiLmlubmVyXzsKKyAgICB9CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjb25z
dF9pdGVyYXRvciYgYSwgY29uc3QgY29uc3RfaXRlcmF0b3ImIGIpIHsKKyAgICAgIHJldHVybiAh
KGEgPT0gYik7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0X2l0ZXJhdG9yKGNvbnN0
IGN0cmxfdCogY3RybCwgY29uc3Qgc2xvdF90eXBlKiBzbG90KQorICAgICAgICA6IGlubmVyXyhj
b25zdF9jYXN0PGN0cmxfdCo+KGN0cmwpLCBjb25zdF9jYXN0PHNsb3RfdHlwZSo+KHNsb3QpKSB7
fQorCisgICAgaXRlcmF0b3IgaW5uZXJfOworICB9OworCisgIHVzaW5nIG5vZGVfdHlwZSA9IGNv
bnRhaW5lcl9pbnRlcm5hbDo6bm9kZV9oYW5kbGU8UG9saWN5LCBBbGxvYz47CisKKyAgcmF3X2hh
c2hfc2V0KCkgbm9leGNlcHQoCisgICAgICBzdGQ6OmlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1
Y3RpYmxlPGhhc2hlcj46OnZhbHVlJiYKKyAgICAgICAgICBzdGQ6OmlzX25vdGhyb3dfZGVmYXVs
dF9jb25zdHJ1Y3RpYmxlPGtleV9lcXVhbD46OnZhbHVlJiYKKyAgICAgICAgICAgICAgc3RkOjpp
c19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0aWJsZTxhbGxvY2F0b3JfdHlwZT46OnZhbHVlKSB7
fQorCisgIGV4cGxpY2l0IHJhd19oYXNoX3NldChzaXplX3QgYnVja2V0X2NvdW50LCBjb25zdCBo
YXNoZXImIGhhc2ggPSBoYXNoZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtl
eV9lcXVhbCYgZXEgPSBrZXlfZXF1YWwoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGFsbG9jYXRvcl90eXBlJiBhbGxvYyA9IGFsbG9jYXRvcl90eXBlKCkpCisgICAgICA6IGN0cmxf
KEVtcHR5R3JvdXAoKSksIHNldHRpbmdzXygwLCBoYXNoLCBlcSwgYWxsb2MpIHsKKyAgICBpZiAo
YnVja2V0X2NvdW50KSB7CisgICAgICBjYXBhY2l0eV8gPSBOb3JtYWxpemVDYXBhY2l0eShidWNr
ZXRfY291bnQpOworICAgICAgZ3Jvd3RoX2xlZnQoKSA9IHN0YXRpY19jYXN0PHNpemVfdD4oY2Fw
YWNpdHlfICoga01heExvYWRGYWN0b3IpOworICAgICAgaW5pdGlhbGl6ZV9zbG90cygpOworICAg
IH0KKyAgfQorCisgIHJhd19oYXNoX3NldChzaXplX3QgYnVja2V0X2NvdW50LCBjb25zdCBoYXNo
ZXImIGhhc2gsCisgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisg
ICAgICA6IHJhd19oYXNoX3NldChidWNrZXRfY291bnQsIGhhc2gsIGtleV9lcXVhbCgpLCBhbGxv
Yykge30KKworICByYXdfaGFzaF9zZXQoc2l6ZV90IGJ1Y2tldF9jb3VudCwgY29uc3QgYWxsb2Nh
dG9yX3R5cGUmIGFsbG9jKQorICAgICAgOiByYXdfaGFzaF9zZXQoYnVja2V0X2NvdW50LCBoYXNo
ZXIoKSwga2V5X2VxdWFsKCksIGFsbG9jKSB7fQorCisgIGV4cGxpY2l0IHJhd19oYXNoX3NldChj
b25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNoX3NldCgwLCBoYXNo
ZXIoKSwga2V5X2VxdWFsKCksIGFsbG9jKSB7fQorCisgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0
ZXI+CisgIHJhd19oYXNoX3NldChJbnB1dEl0ZXIgZmlyc3QsIElucHV0SXRlciBsYXN0LCBzaXpl
X3QgYnVja2V0X2NvdW50ID0gMCwKKyAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYgaGFzaCA9
IGhhc2hlcigpLCBjb25zdCBrZXlfZXF1YWwmIGVxID0ga2V5X2VxdWFsKCksCisgICAgICAgICAg
ICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgpKQorICAg
ICAgOiByYXdfaGFzaF9zZXQoYnVja2V0X2NvdW50LCBoYXNoLCBlcSwgYWxsb2MpIHsKKyAgICBp
bnNlcnQoZmlyc3QsIGxhc3QpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcj4K
KyAgcmF3X2hhc2hfc2V0KElucHV0SXRlciBmaXJzdCwgSW5wdXRJdGVyIGxhc3QsIHNpemVfdCBi
dWNrZXRfY291bnQsCisgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImIGhhc2gsIGNvbnN0IGFs
bG9jYXRvcl90eXBlJiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hfc2V0KGZpcnN0LCBsYXN0LCBi
dWNrZXRfY291bnQsIGhhc2gsIGtleV9lcXVhbCgpLCBhbGxvYykge30KKworICB0ZW1wbGF0ZSA8
Y2xhc3MgSW5wdXRJdGVyPgorICByYXdfaGFzaF9zZXQoSW5wdXRJdGVyIGZpcnN0LCBJbnB1dEl0
ZXIgbGFzdCwgc2l6ZV90IGJ1Y2tldF9jb3VudCwKKyAgICAgICAgICAgICAgIGNvbnN0IGFsbG9j
YXRvcl90eXBlJiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hfc2V0KGZpcnN0LCBsYXN0LCBidWNr
ZXRfY291bnQsIGhhc2hlcigpLCBrZXlfZXF1YWwoKSwgYWxsb2MpIHt9CisKKyAgdGVtcGxhdGUg
PGNsYXNzIElucHV0SXRlcj4KKyAgcmF3X2hhc2hfc2V0KElucHV0SXRlciBmaXJzdCwgSW5wdXRJ
dGVyIGxhc3QsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hf
c2V0KGZpcnN0LCBsYXN0LCAwLCBoYXNoZXIoKSwga2V5X2VxdWFsKCksIGFsbG9jKSB7fQorCisg
IC8vIEluc3RlYWQgb2YgYWNjZXB0aW5nIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBl
PiBhcyB0aGUgZmlyc3QKKyAgLy8gYXJndW1lbnQgbGlrZSBzdGQ6OnVub3JkZXJlZF9zZXQ8dmFs
dWVfdHlwZT4gZG9lcywgd2UgaGF2ZSB0d28gb3ZlcmxvYWRzCisgIC8vIHRoYXQgYWNjZXB0IHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBhbmQgc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlw
ZT4uCisgIC8vIFRoaXMgaXMgYWR2YW50YWdlb3VzIGZvciBwZXJmb3JtYW5jZS4KKyAgLy8KKyAg
Ly8gICAvLyBUdXJucyB7ImFiYyIsICJkZWYifSBpbnRvIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxz
dGQ6OnN0cmluZz4sIHRoZW4gY29waWVzCisgIC8vICAgLy8gdGhlIHN0cmluZ3MgaW50byB0aGUg
c2V0LgorICAvLyAgIHN0ZDo6dW5vcmRlcmVkX3NldDxzdGQ6OnN0cmluZz4gcyA9IHsiYWJjIiwg
ImRlZiJ9OworICAvLworICAvLyAgIC8vIFR1cm5zIHsiYWJjIiwgImRlZiJ9IGludG8gc3RkOjpp
bml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiwgdGhlbgorICAvLyAgIC8vIGNvcGllcyB0aGUg
c3RyaW5ncyBpbnRvIHRoZSBzZXQuCisgIC8vICAgYWJzbDo6ZmxhdF9oYXNoX3NldDxzdGQ6OnN0
cmluZz4gcyA9IHsiYWJjIiwgImRlZiJ9OworICAvLworICAvLyBUaGUgc2FtZSB0cmljayBpcyB1
c2VkIGluIGluc2VydCgpLgorICAvLworICAvLyBUaGUgZW5hYmxlciBpcyBuZWNlc3NhcnkgdG8g
cHJldmVudCB0aGlzIGNvbnN0cnVjdG9yIGZyb20gdHJpZ2dlcmluZyB3aGVyZQorICAvLyB0aGUg
Y29weSBjb25zdHJ1Y3RvciBpcyBtZWFudCB0byBiZSBjYWxsZWQuCisgIC8vCisgIC8vICAgYWJz
bDo6ZmxhdF9oYXNoX3NldDxpbnQ+IGEsIGJ7YX07CisgIC8vCisgIC8vIFJlcXVpcmVzTm90SW5p
dDxUPiBpcyBhIHdvcmthcm91bmQgZm9yIGdjYyBwcmlvciB0byA3LjEuCisgIHRlbXBsYXRlIDxj
bGFzcyBULCBSZXF1aXJlc05vdEluaXQ8VD4gPSAwLCBSZXF1aXJlc0luc2VydGFibGU8VD4gPSAw
PgorICByYXdfaGFzaF9zZXQoc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGluaXQsIHNpemVfdCBi
dWNrZXRfY291bnQgPSAwLAorICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiBoYXNoID0gaGFz
aGVyKCksIGNvbnN0IGtleV9lcXVhbCYgZXEgPSBrZXlfZXF1YWwoKSwKKyAgICAgICAgICAgICAg
IGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYyA9IGFsbG9jYXRvcl90eXBlKCkpCisgICAgICA6
IHJhd19oYXNoX3NldChpbml0LmJlZ2luKCksIGluaXQuZW5kKCksIGJ1Y2tldF9jb3VudCwgaGFz
aCwgZXEsIGFsbG9jKSB7fQorCisgIHJhd19oYXNoX3NldChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
aW5pdF90eXBlPiBpbml0LCBzaXplX3QgYnVja2V0X2NvdW50ID0gMCwKKyAgICAgICAgICAgICAg
IGNvbnN0IGhhc2hlciYgaGFzaCA9IGhhc2hlcigpLCBjb25zdCBrZXlfZXF1YWwmIGVxID0ga2V5
X2VxdWFsKCksCisgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBh
bGxvY2F0b3JfdHlwZSgpKQorICAgICAgOiByYXdfaGFzaF9zZXQoaW5pdC5iZWdpbigpLCBpbml0
LmVuZCgpLCBidWNrZXRfY291bnQsIGhhc2gsIGVxLCBhbGxvYykge30KKworICB0ZW1wbGF0ZSA8
Y2xhc3MgVCwgUmVxdWlyZXNOb3RJbml0PFQ+ID0gMCwgUmVxdWlyZXNJbnNlcnRhYmxlPFQ+ID0g
MD4KKyAgcmF3X2hhc2hfc2V0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbml0LCBzaXplX3Qg
YnVja2V0X2NvdW50LAorICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiBoYXNoLCBjb25zdCBh
bGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNoX3NldChpbml0LCBidWNrZXRf
Y291bnQsIGhhc2gsIGtleV9lcXVhbCgpLCBhbGxvYykge30KKworICByYXdfaGFzaF9zZXQoc3Rk
Ojppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaW5pdCwgc2l6ZV90IGJ1Y2tldF9jb3VudCwK
KyAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYgaGFzaCwgY29uc3QgYWxsb2NhdG9yX3R5cGUm
IGFsbG9jKQorICAgICAgOiByYXdfaGFzaF9zZXQoaW5pdCwgYnVja2V0X2NvdW50LCBoYXNoLCBr
ZXlfZXF1YWwoKSwgYWxsb2MpIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFQsIFJlcXVpcmVzTm90
SW5pdDxUPiA9IDAsIFJlcXVpcmVzSW5zZXJ0YWJsZTxUPiA9IDA+CisgIHJhd19oYXNoX3NldChz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaW5pdCwgc2l6ZV90IGJ1Y2tldF9jb3VudCwKKyAgICAg
ICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hf
c2V0KGluaXQsIGJ1Y2tldF9jb3VudCwgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBhbGxvYykge30K
KworICByYXdfaGFzaF9zZXQoc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaW5pdCwg
c2l6ZV90IGJ1Y2tldF9jb3VudCwKKyAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBl
JiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hfc2V0KGluaXQsIGJ1Y2tldF9jb3VudCwgaGFzaGVy
KCksIGtleV9lcXVhbCgpLCBhbGxvYykge30KKworICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgUmVxdWly
ZXNOb3RJbml0PFQ+ID0gMCwgUmVxdWlyZXNJbnNlcnRhYmxlPFQ+ID0gMD4KKyAgcmF3X2hhc2hf
c2V0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbml0LCBjb25zdCBhbGxvY2F0b3JfdHlwZSYg
YWxsb2MpCisgICAgICA6IHJhd19oYXNoX3NldChpbml0LCAwLCBoYXNoZXIoKSwga2V5X2VxdWFs
KCksIGFsbG9jKSB7fQorCisgIHJhd19oYXNoX3NldChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW5p
dF90eXBlPiBpbml0LAorICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9j
KQorICAgICAgOiByYXdfaGFzaF9zZXQoaW5pdCwgMCwgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBh
bGxvYykge30KKworICByYXdfaGFzaF9zZXQoY29uc3QgcmF3X2hhc2hfc2V0JiB0aGF0KQorICAg
ICAgOiByYXdfaGFzaF9zZXQodGhhdCwgQWxsb2NUcmFpdHM6OnNlbGVjdF9vbl9jb250YWluZXJf
Y29weV9jb25zdHJ1Y3Rpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5h
bGxvY19yZWYoKSkpIHt9CisKKyAgcmF3X2hhc2hfc2V0KGNvbnN0IHJhd19oYXNoX3NldCYgdGhh
dCwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGEpCisgICAgICA6IHJhd19oYXNoX3NldCgwLCB0aGF0
Lmhhc2hfcmVmKCksIHRoYXQuZXFfcmVmKCksIGEpIHsKKyAgICByZXNlcnZlKHRoYXQuc2l6ZSgp
KTsKKyAgICAvLyBCZWNhdXNlIHRoZSB0YWJsZSBpcyBndWFyYW50ZWVkIHRvIGJlIGVtcHR5LCB3
ZSBjYW4gZG8gc29tZXRoaW5nIGZhc3RlcgorICAgIC8vIHRoYW4gYSBmdWxsIGBpbnNlcnRgLgor
ICAgIGZvciAoY29uc3QgYXV0byYgdiA6IHRoYXQpIHsKKyAgICAgIGNvbnN0IHNpemVfdCBoYXNo
ID0gUG9saWN5VHJhaXRzOjphcHBseShIYXNoRWxlbWVudHtoYXNoX3JlZigpfSwgdik7CisgICAg
ICBjb25zdCBzaXplX3QgaSA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAgICBzZXRf
Y3RybChpLCBIMihoYXNoKSk7CisgICAgICBlbXBsYWNlX2F0KGksIHYpOworICAgIH0KKyAgICBz
aXplXyA9IHRoYXQuc2l6ZSgpOworICAgIGdyb3d0aF9sZWZ0KCkgLT0gdGhhdC5zaXplKCk7Cisg
IH0KKworICByYXdfaGFzaF9zZXQocmF3X2hhc2hfc2V0JiYgdGhhdCkgbm9leGNlcHQoCisgICAg
ICBzdGQ6OmlzX25vdGhyb3dfY29weV9jb25zdHJ1Y3RpYmxlPGhhc2hlcj46OnZhbHVlJiYKKyAg
ICAgICAgICBzdGQ6OmlzX25vdGhyb3dfY29weV9jb25zdHJ1Y3RpYmxlPGtleV9lcXVhbD46OnZh
bHVlJiYKKyAgICAgICAgICAgICAgc3RkOjppc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxh
bGxvY2F0b3JfdHlwZT46OnZhbHVlKQorICAgICAgOiBjdHJsXyhhYnNsOjpleGNoYW5nZSh0aGF0
LmN0cmxfLCBFbXB0eUdyb3VwKCkpKSwKKyAgICAgICAgc2xvdHNfKGFic2w6OmV4Y2hhbmdlKHRo
YXQuc2xvdHNfLCBudWxscHRyKSksCisgICAgICAgIHNpemVfKGFic2w6OmV4Y2hhbmdlKHRoYXQu
c2l6ZV8sIDApKSwKKyAgICAgICAgY2FwYWNpdHlfKGFic2w6OmV4Y2hhbmdlKHRoYXQuY2FwYWNp
dHlfLCAwKSksCisgICAgICAgIC8vIEhhc2gsIGVxdWFsaXR5IGFuZCBhbGxvY2F0b3IgYXJlIGNv
cGllZCBpbnN0ZWFkIG9mIG1vdmVkIGJlY2F1c2UKKyAgICAgICAgLy8gYHRoYXRgIG11c3QgYmUg
bGVmdCB2YWxpZC4gSWYgSGFzaCBpcyBzdGQ6OmZ1bmN0aW9uPEtleT4sIG1vdmluZyBpdAorICAg
ICAgICAvLyB3b3VsZCBjcmVhdGUgYSBudWxscHRyIGZ1bmN0b3IgdGhhdCBjYW5ub3QgYmUgY2Fs
bGVkLgorICAgICAgICBzZXR0aW5nc18odGhhdC5zZXR0aW5nc18pIHsKKyAgICAvLyBncm93dGhf
bGVmdCB3YXMgY29waWVkIGFib3ZlLCByZXNldCB0aGUgb25lIGZyb20gYHRoYXRgLgorICAgIHRo
YXQuZ3Jvd3RoX2xlZnQoKSA9IDA7CisgIH0KKworICByYXdfaGFzaF9zZXQocmF3X2hhc2hfc2V0
JiYgdGhhdCwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGEpCisgICAgICA6IGN0cmxfKEVtcHR5R3Jv
dXAoKSksCisgICAgICAgIHNsb3RzXyhudWxscHRyKSwKKyAgICAgICAgc2l6ZV8oMCksCisgICAg
ICAgIGNhcGFjaXR5XygwKSwKKyAgICAgICAgc2V0dGluZ3NfKDAsIHRoYXQuaGFzaF9yZWYoKSwg
dGhhdC5lcV9yZWYoKSwgYSkgeworICAgIGlmIChhID09IHRoYXQuYWxsb2NfcmVmKCkpIHsKKyAg
ICAgIHN0ZDo6c3dhcChjdHJsXywgdGhhdC5jdHJsXyk7CisgICAgICBzdGQ6OnN3YXAoc2xvdHNf
LCB0aGF0LnNsb3RzXyk7CisgICAgICBzdGQ6OnN3YXAoc2l6ZV8sIHRoYXQuc2l6ZV8pOworICAg
ICAgc3RkOjpzd2FwKGNhcGFjaXR5XywgdGhhdC5jYXBhY2l0eV8pOworICAgICAgc3RkOjpzd2Fw
KGdyb3d0aF9sZWZ0KCksIHRoYXQuZ3Jvd3RoX2xlZnQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
IHJlc2VydmUodGhhdC5zaXplKCkpOworICAgICAgLy8gTm90ZTogdGhpcyB3aWxsIGNvcHkgZWxl
bWVudHMgb2YgZGVuc2Vfc2V0IGFuZCB1bm9yZGVyZWRfc2V0IGluc3RlYWQgb2YKKyAgICAgIC8v
IG1vdmluZyB0aGVtLiBUaGlzIGNhbiBiZSBmaXhlZCBpZiBpdCBldmVyIGJlY29tZXMgYW4gaXNz
dWUuCisgICAgICBmb3IgKGF1dG8mIGVsZW0gOiB0aGF0KSBpbnNlcnQoc3RkOjptb3ZlKGVsZW0p
KTsKKyAgICB9CisgIH0KKworICByYXdfaGFzaF9zZXQmIG9wZXJhdG9yPShjb25zdCByYXdfaGFz
aF9zZXQmIHRoYXQpIHsKKyAgICByYXdfaGFzaF9zZXQgdG1wKHRoYXQsCisgICAgICAgICAgICAg
ICAgICAgICBBbGxvY1RyYWl0czo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1l
bnQ6OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGF0LmFsbG9jX3JlZigpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBhbGxvY19yZWYoKSk7CisgICAgc3dhcCh0bXApOwor
ICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIHJhd19oYXNoX3NldCYgb3BlcmF0b3I9KHJhd19o
YXNoX3NldCYmIHRoYXQpIG5vZXhjZXB0KAorICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxh
bGxvY2F0b3JfdHlwZT46OmlzX2Fsd2F5c19lcXVhbDo6dmFsdWUmJgorICAgICAgICAgIHN0ZDo6
aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8aGFzaGVyPjo6dmFsdWUmJgorICAgICAgICAgICAg
ICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPGtleV9lcXVhbD46OnZhbHVlKSB7Cisg
ICAgLy8gVE9ETyhzYmVuemEpOiBXZSBzaG91bGQgb25seSB1c2UgdGhlIG9wZXJhdGlvbnMgZnJv
bSB0aGUgbm9leGNlcHQgY2xhdXNlCisgICAgLy8gdG8gbWFrZSBzdXJlIHdlIGFjdHVhbGx5IGFk
aGVyZSB0byB0aGF0IGNvbnRyYWN0LgorICAgIHJldHVybiBtb3ZlX2Fzc2lnbigKKyAgICAgICAg
c3RkOjptb3ZlKHRoYXQpLAorICAgICAgICB0eXBlbmFtZSBBbGxvY1RyYWl0czo6cHJvcGFnYXRl
X29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnQoKSk7CisgIH0KKworICB+cmF3X2hhc2hfc2V0
KCkgeyBkZXN0cm95X3Nsb3RzKCk7IH0KKworICBpdGVyYXRvciBiZWdpbigpIHsKKyAgICBhdXRv
IGl0ID0gaXRlcmF0b3JfYXQoMCk7CisgICAgaXQuc2tpcF9lbXB0eV9vcl9kZWxldGVkKCk7Cisg
ICAgcmV0dXJuIGl0OworICB9CisgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIHtjdHJsXyArIGNh
cGFjaXR5X307IH0KKworICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsKKyAgICByZXR1
cm4gY29uc3RfY2FzdDxyYXdfaGFzaF9zZXQqPih0aGlzKS0+YmVnaW4oKTsKKyAgfQorICBjb25z
dF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PHJhd19oYXNoX3NldCo+
KHRoaXMpLT5lbmQoKTsgfQorICBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCB7IHJldHVy
biBiZWdpbigpOyB9CisgIGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCB7IHJldHVybiBlbmQo
KTsgfQorCisgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0KKyAgc2l6ZV90IGNhcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gY2FwYWNpdHlfOyB9CisgIHNpemVfdCBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7IH0KKworICB2b2lkIGNsZWFy
KCkgeworICAgIC8vIEl0ZXJhdGluZyBvdmVyIHRoaXMgY29udGFpbmVyIGlzIE8oYnVja2V0X2Nv
dW50KCkpLiBXaGVuIGJ1Y2tldF9jb3VudCgpCisgICAgLy8gaXMgbXVjaCBncmVhdGVyIHRoYW4g
c2l6ZSgpLCBpdGVyYXRpb24gYmVjb21lcyBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZS4KKyAgICAv
LyBGb3IgY2xlYXIoKSBpdCBpcyBtb3JlIGltcG9ydGFudCB0byByZXVzZSB0aGUgYWxsb2NhdGVk
IGFycmF5IHdoZW4gdGhlCisgICAgLy8gY29udGFpbmVyIGlzIHNtYWxsIGJlY2F1c2UgYWxsb2Nh
dGlvbiB0YWtlcyBjb21wYXJhdGl2ZWx5IGxvbmcgdGltZQorICAgIC8vIGNvbXBhcmVkIHRvIGRl
c3RydWN0aW9uIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgY29udGFpbmVyLiBTbyB3ZSBwaWNrIHRo
ZQorICAgIC8vIGxhcmdlc3QgYnVja2V0X2NvdW50KCkgdGhyZXNob2xkIGZvciB3aGljaCBpdGVy
YXRpb24gaXMgc3RpbGwgZmFzdCBhbmQKKyAgICAvLyBwYXN0IHRoYXQgd2Ugc2ltcGx5IGRlYWxs
b2NhdGUgdGhlIGFycmF5LgorICAgIGlmIChjYXBhY2l0eV8gPiAxMjcpIHsKKyAgICAgIGRlc3Ry
b3lfc2xvdHMoKTsKKyAgICB9IGVsc2UgaWYgKGNhcGFjaXR5XykgeworICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgIT0gY2FwYWNpdHlfOyArK2kpIHsKKyAgICAgICAgaWYgKElzRnVsbChjdHJs
X1tpXSkpIHsKKyAgICAgICAgICBQb2xpY3lUcmFpdHM6OmRlc3Ryb3koJmFsbG9jX3JlZigpLCBz
bG90c18gKyBpKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgc2l6ZV8gPSAwOworICAgICAg
cmVzZXRfY3RybCgpOworICAgICAgZ3Jvd3RoX2xlZnQoKSA9IHN0YXRpY19jYXN0PHNpemVfdD4o
Y2FwYWNpdHlfICoga01heExvYWRGYWN0b3IpOworICAgIH0KKyAgICBhc3NlcnQoZW1wdHkoKSk7
CisgIH0KKworICAvLyBUaGlzIG92ZXJsb2FkIGtpY2tzIGluIHdoZW4gdGhlIGFyZ3VtZW50IGlz
IGFuIHJ2YWx1ZSBvZiBpbnNlcnRhYmxlIGFuZAorICAvLyBkZWNvbXBvc2FibGUgdHlwZSBvdGhl
ciB0aGFuIGluaXRfdHlwZS4KKyAgLy8KKyAgLy8gICBmbGF0X2hhc2hfbWFwPHN0ZDo6c3RyaW5n
LCBpbnQ+IG07CisgIC8vICAgbS5pbnNlcnQoc3RkOjptYWtlX3BhaXIoImFiYyIsIDQyKSk7Cisg
IHRlbXBsYXRlIDxjbGFzcyBULCBSZXF1aXJlc0luc2VydGFibGU8VD4gPSAwLAorICAgICAgICAg
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNEZWNvbXBvc2FibGU8VD46OnZhbHVlLCBpbnQ+
Ojp0eXBlID0gMCwKKyAgICAgICAgICAgIFQqID0gbnVsbHB0cj4KKyAgc3RkOjpwYWlyPGl0ZXJh
dG9yLCBib29sPiBpbnNlcnQoVCYmIHZhbHVlKSB7CisgICAgcmV0dXJuIGVtcGxhY2Uoc3RkOjpm
b3J3YXJkPFQ+KHZhbHVlKSk7CisgIH0KKworICAvLyBUaGlzIG92ZXJsb2FkIGtpY2tzIGluIHdo
ZW4gdGhlIGFyZ3VtZW50IGlzIGEgYml0ZmllbGQgb3IgYW4gbHZhbHVlIG9mCisgIC8vIGluc2Vy
dGFibGUgYW5kIGRlY29tcG9zYWJsZSB0eXBlLgorICAvLworICAvLyAgIHVuaW9uIHsgaW50IG4g
OiAxOyB9OworICAvLyAgIGZsYXRfaGFzaF9zZXQ8aW50PiBzOworICAvLyAgIHMuaW5zZXJ0KG4p
OworICAvLworICAvLyAgIGZsYXRfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+IHM7CisgIC8vICAgY29u
c3QgY2hhciogcCA9ICJoZWxsbyI7CisgIC8vICAgcy5pbnNlcnQocCk7CisgIC8vCisgIC8vIFRP
RE8ocm9tYW5wKTogT25jZSB3ZSBzdG9wIHN1cHBvcnRpbmcgZ2NjIDUuMSBhbmQgYmVsb3csIHJl
cGxhY2UKKyAgLy8gUmVxdWlyZXNJbnNlcnRhYmxlPFQ+IHdpdGggUmVxdWlyZXNJbnNlcnRhYmxl
PGNvbnN0IFQmPi4KKyAgLy8gV2UgYXJlIGhpdHRpbmcgdGhpcyBidWc6IGh0dHBzOi8vZ29kYm9s
dC5vcmcvZy8xVmh0NGYuCisgIHRlbXBsYXRlIDwKKyAgICAgIGNsYXNzIFQsIFJlcXVpcmVzSW5z
ZXJ0YWJsZTxUPiA9IDAsCisgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc0RlY29tcG9z
YWJsZTxjb25zdCBUJj46OnZhbHVlLCBpbnQ+Ojp0eXBlID0gMD4KKyAgc3RkOjpwYWlyPGl0ZXJh
dG9yLCBib29sPiBpbnNlcnQoY29uc3QgVCYgdmFsdWUpIHsKKyAgICByZXR1cm4gZW1wbGFjZSh2
YWx1ZSk7CisgIH0KKworICAvLyBUaGlzIG92ZXJsb2FkIGtpY2tzIGluIHdoZW4gdGhlIGFyZ3Vt
ZW50IGlzIGFuIHJ2YWx1ZSBvZiBpbml0X3R5cGUuIEl0cworICAvLyBwdXJwb3NlIGlzIHRvIGhh
bmRsZSBicmFjZS1pbml0LWxpc3QgYXJndW1lbnRzLgorICAvLworICAvLyAgIGZsYXRfaGFzaF9z
ZXQ8c3RkOjpzdHJpbmcsIGludD4gczsKKyAgLy8gICBzLmluc2VydCh7ImFiYyIsIDQyfSk7Cisg
IHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0KGluaXRfdHlwZSYmIHZhbHVlKSB7Cisg
ICAgcmV0dXJuIGVtcGxhY2Uoc3RkOjptb3ZlKHZhbHVlKSk7CisgIH0KKworICB0ZW1wbGF0ZSA8
Y2xhc3MgVCwgUmVxdWlyZXNJbnNlcnRhYmxlPFQ+ID0gMCwKKyAgICAgICAgICAgIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPElzRGVjb21wb3NhYmxlPFQ+Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9IDAs
CisgICAgICAgICAgICBUKiA9IG51bGxwdHI+CisgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVy
YXRvciwgVCYmIHZhbHVlKSB7CisgICAgcmV0dXJuIGluc2VydChzdGQ6OmZvcndhcmQ8VD4odmFs
dWUpKS5maXJzdDsKKyAgfQorCisgIC8vIFRPRE8ocm9tYW5wKTogT25jZSB3ZSBzdG9wIHN1cHBv
cnRpbmcgZ2NjIDUuMSBhbmQgYmVsb3csIHJlcGxhY2UKKyAgLy8gUmVxdWlyZXNJbnNlcnRhYmxl
PFQ+IHdpdGggUmVxdWlyZXNJbnNlcnRhYmxlPGNvbnN0IFQmPi4KKyAgLy8gV2UgYXJlIGhpdHRp
bmcgdGhpcyBidWc6IGh0dHBzOi8vZ29kYm9sdC5vcmcvZy8xVmh0NGYuCisgIHRlbXBsYXRlIDwK
KyAgICAgIGNsYXNzIFQsIFJlcXVpcmVzSW5zZXJ0YWJsZTxUPiA9IDAsCisgICAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxJc0RlY29tcG9zYWJsZTxjb25zdCBUJj46OnZhbHVlLCBpbnQ+Ojp0
eXBlID0gMD4KKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yLCBjb25zdCBUJiB2YWx1
ZSkgeworICAgIHJldHVybiBpbnNlcnQodmFsdWUpLmZpcnN0OworICB9CisKKyAgaXRlcmF0b3Ig
aW5zZXJ0KGNvbnN0X2l0ZXJhdG9yLCBpbml0X3R5cGUmJiB2YWx1ZSkgeworICAgIHJldHVybiBp
bnNlcnQoc3RkOjptb3ZlKHZhbHVlKSkuZmlyc3Q7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3Mg
SW5wdXRJdD4KKyAgdm9pZCBpbnNlcnQoSW5wdXRJdCBmaXJzdCwgSW5wdXRJdCBsYXN0KSB7Cisg
ICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpIGluc2VydCgqZmlyc3QpOworICB9CisK
KyAgdGVtcGxhdGUgPGNsYXNzIFQsIFJlcXVpcmVzTm90SW5pdDxUPiA9IDAsIFJlcXVpcmVzSW5z
ZXJ0YWJsZTxjb25zdCBUJj4gPSAwPgorICB2b2lkIGluc2VydChzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VD4gaWxpc3QpIHsKKyAgICBpbnNlcnQoaWxpc3QuYmVnaW4oKSwgaWxpc3QuZW5kKCkpOwor
ICB9CisKKyAgdm9pZCBpbnNlcnQoc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaWxp
c3QpIHsKKyAgICBpbnNlcnQoaWxpc3QuYmVnaW4oKSwgaWxpc3QuZW5kKCkpOworICB9CisKKyAg
aW5zZXJ0X3JldHVybl90eXBlPGl0ZXJhdG9yLCBub2RlX3R5cGU+IGluc2VydChub2RlX3R5cGUm
JiBub2RlKSB7CisgICAgaWYgKCFub2RlKSByZXR1cm4ge2VuZCgpLCBmYWxzZSwgbm9kZV90eXBl
KCl9OworICAgIGNvbnN0IGF1dG8mIGVsZW0gPSBQb2xpY3lUcmFpdHM6OmVsZW1lbnQobm9kZS5z
bG90KCkpOworICAgIGF1dG8gcmVzID0gUG9saWN5VHJhaXRzOjphcHBseSgKKyAgICAgICAgSW5z
ZXJ0U2xvdDxmYWxzZT57KnRoaXMsIHN0ZDo6bW92ZSgqbm9kZS5zbG90KCkpfSwgZWxlbSk7Cisg
ICAgaWYgKHJlcy5zZWNvbmQpIHsKKyAgICAgIG5vZGUucmVzZXQoKTsKKyAgICAgIHJldHVybiB7
cmVzLmZpcnN0LCB0cnVlLCBub2RlX3R5cGUoKX07CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVy
biB7cmVzLmZpcnN0LCBmYWxzZSwgc3RkOjptb3ZlKG5vZGUpfTsKKyAgICB9CisgIH0KKworICBp
dGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IsIG5vZGVfdHlwZSYmIG5vZGUpIHsKKyAgICBy
ZXR1cm4gaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSkuZmlyc3Q7CisgIH0KKworICAvLyBUaGlzIG92
ZXJsb2FkIGtpY2tzIGluIGlmIHdlIGNhbiBkZWR1Y2UgdGhlIGtleSBmcm9tIGFyZ3MuIFRoaXMg
ZW5hYmxlcyB1cworICAvLyB0byBhdm9pZCBjb25zdHJ1Y3RpbmcgdmFsdWVfdHlwZSBpZiBhbiBl
bnRyeSB3aXRoIHRoZSBzYW1lIGtleSBhbHJlYWR5CisgIC8vIGV4aXN0cy4KKyAgLy8KKyAgLy8g
Rm9yIGV4YW1wbGU6CisgIC8vCisgIC8vICAgZmxhdF9oYXNoX21hcDxzdGQ6OnN0cmluZywgc3Rk
OjpzdHJpbmc+IG0gPSB7eyJhYmMiLCAiZGVmIn19OworICAvLyAgIC8vIENyZWF0ZXMgbm8gc3Rk
OjpzdHJpbmcgY29waWVzIGFuZCBtYWtlcyBubyBoZWFwIGFsbG9jYXRpb25zLgorICAvLyAgIG0u
ZW1wbGFjZSgiYWJjIiwgInh5eiIpOworICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncywgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNEZWNv
bXBvc2FibGU8QXJncy4uLj46OnZhbHVlLCBpbnQ+Ojp0eXBlID0gMD4KKyAgc3RkOjpwYWlyPGl0
ZXJhdG9yLCBib29sPiBlbXBsYWNlKEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgcmV0dXJuIFBvbGlj
eVRyYWl0czo6YXBwbHkoRW1wbGFjZURlY29tcG9zYWJsZXsqdGhpc30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisg
IC8vIFRoaXMgb3ZlcmxvYWQga2lja3MgaW4gaWYgd2UgY2Fubm90IGRlZHVjZSB0aGUga2V5IGZy
b20gYXJncy4gSXQgY29uc3RydWN0cworICAvLyB2YWx1ZV90eXBlIHVuY29uZGl0aW9uYWxseSBh
bmQgdGhlbiBlaXRoZXIgbW92ZXMgaXQgaW50byB0aGUgdGFibGUgb3IKKyAgLy8gZGVzdHJveXMu
CisgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhSXNEZWNvbXBvc2FibGU8QXJncy4uLj46OnZh
bHVlLCBpbnQ+Ojp0eXBlID0gMD4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNl
KEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6
ZW9mKHNsb3RfdHlwZSksIGFsaWdub2Yoc2xvdF90eXBlKT46OnR5cGUKKyAgICAgICAgcmF3Owor
ICAgIHNsb3RfdHlwZSogc2xvdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2xvdF90eXBlKj4oJnJhdyk7
CisKKyAgICBQb2xpY3lUcmFpdHM6OmNvbnN0cnVjdCgmYWxsb2NfcmVmKCksIHNsb3QsIHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgY29uc3QgYXV0byYgZWxlbSA9IFBvbGljeVRy
YWl0czo6ZWxlbWVudChzbG90KTsKKyAgICByZXR1cm4gUG9saWN5VHJhaXRzOjphcHBseShJbnNl
cnRTbG90PHRydWU+eyp0aGlzLCBzdGQ6Om1vdmUoKnNsb3QpfSwgZWxlbSk7CisgIH0KKworICB0
ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0
ZXJhdG9yLCBBcmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiBlbXBsYWNlKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikuZmlyc3Q7CisgIH0KKworICAvLyBFeHRlbnNpb24gQVBJOiBzdXBw
b3J0IGZvciBsYXp5IGVtcGxhY2UuCisgIC8vCisgIC8vIExvb2tzIHVwIGtleSBpbiB0aGUgdGFi
bGUuIElmIGZvdW5kLCByZXR1cm5zIHRoZSBpdGVyYXRvciB0byB0aGUgZWxlbWVudC4KKyAgLy8g
T3RoZXJ3aXNlIGNhbGxzIGYgd2l0aCBvbmUgYXJndW1lbnQgb2YgdHlwZSByYXdfaGFzaF9zZXQ6
OmNvbnN0cnVjdG9yLiBmCisgIC8vIE1VU1QgY2FsbCByYXdfaGFzaF9zZXQ6OmNvbnN0cnVjdG9y
IHdpdGggYXJndW1lbnRzIGFzIGlmIGEKKyAgLy8gcmF3X2hhc2hfc2V0Ojp2YWx1ZV90eXBlIGlz
IGNvbnN0cnVjdGVkLCBvdGhlcndpc2UgdGhlIGJlaGF2aW9yIGlzCisgIC8vIHVuZGVmaW5lZC4K
KyAgLy8KKyAgLy8gRm9yIGV4YW1wbGU6CisgIC8vCisgIC8vICAgc3RkOjp1bm9yZGVyZWRfc2V0
PEFyZW5hU3RyaW5nPiBzOworICAvLyAgIC8vIE1ha2VzIEFyZW5hU3RyIGV2ZW4gaWYgImFiYyIg
aXMgaW4gdGhlIG1hcC4KKyAgLy8gICBzLmluc2VydChBcmVuYVN0cmluZygmYXJlbmEsICJhYmMi
KSk7CisgIC8vCisgIC8vICAgZmxhdF9oYXNoX3NldDxBcmVuYVN0cj4gczsKKyAgLy8gICAvLyBN
YWtlcyBBcmVuYVN0ciBvbmx5IGlmICJhYmMiIGlzIG5vdCBpbiB0aGUgbWFwLgorICAvLyAgIHMu
bGF6eV9lbXBsYWNlKCJhYmMiLCBbJl0oY29uc3QgY29uc3RydWN0b3ImIGN0b3IpIHsKKyAgLy8g
ICAgIGN0b3IoJmFyZW5hLCAiYWJjIik7CisgIC8vICAgfSk7CisgIC8vCisgIC8vIFdBUk5JTkc6
IFRoaXMgQVBJIGlzIGN1cnJlbnRseSBleHBlcmltZW50YWwuIElmIHRoZXJlIGlzIGEgd2F5IHRv
IGltcGxlbWVudAorICAvLyB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSByZXN0IG9mIHRoZSBBUEks
IHByZWZlciB0aGF0LgorICBjbGFzcyBjb25zdHJ1Y3RvciB7CisgICAgZnJpZW5kIGNsYXNzIHJh
d19oYXNoX3NldDsKKworICAgcHVibGljOgorICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgor
ICAgIHZvaWQgb3BlcmF0b3IoKShBcmdzJiYuLi4gYXJncykgY29uc3QgeworICAgICAgYXNzZXJ0
KCpzbG90Xyk7CisgICAgICBQb2xpY3lUcmFpdHM6OmNvbnN0cnVjdChhbGxvY18sICpzbG90Xywg
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICpzbG90XyA9IG51bGxwdHI7Cisg
ICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0cnVjdG9yKGFsbG9jYXRvcl90eXBlKiBhLCBz
bG90X3R5cGUqKiBzbG90KSA6IGFsbG9jXyhhKSwgc2xvdF8oc2xvdCkge30KKworICAgIGFsbG9j
YXRvcl90eXBlKiBhbGxvY187CisgICAgc2xvdF90eXBlKiogc2xvdF87CisgIH07CisKKyAgdGVt
cGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MgRj4KKyAgaXRlcmF0b3IgbGF6eV9lbXBs
YWNlKGNvbnN0IGtleV9hcmc8Sz4mIGtleSwgRiYmIGYpIHsKKyAgICBhdXRvIHJlcyA9IGZpbmRf
b3JfcHJlcGFyZV9pbnNlcnQoa2V5KTsKKyAgICBpZiAocmVzLnNlY29uZCkgeworICAgICAgc2xv
dF90eXBlKiBzbG90ID0gc2xvdHNfICsgcmVzLmZpcnN0OworICAgICAgc3RkOjpmb3J3YXJkPEY+
KGYpKGNvbnN0cnVjdG9yKCZhbGxvY19yZWYoKSwgJnNsb3QpKTsKKyAgICAgIGFzc2VydCghc2xv
dCk7CisgICAgfQorICAgIHJldHVybiBpdGVyYXRvcl9hdChyZXMuZmlyc3QpOworICB9CisKKyAg
Ly8gRXh0ZW5zaW9uIEFQSTogc3VwcG9ydCBmb3IgaGV0ZXJvZ2VuZW91cyBrZXlzLgorICAvLwor
ICAvLyAgIHN0ZDo6dW5vcmRlcmVkX3NldDxzdGQ6OnN0cmluZz4gczsKKyAgLy8gICAvLyBUdXJu
cyAiYWJjIiBpbnRvIHN0ZDo6c3RyaW5nLgorICAvLyAgIHMuZXJhc2UoImFiYyIpOworICAvLwor
ICAvLyAgIGZsYXRfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+IHM7CisgIC8vICAgLy8gVXNlcyAiYWJj
IiBkaXJlY3RseSB3aXRob3V0IGNvcHlpbmcgaXQgaW50byBzdGQ6OnN0cmluZy4KKyAgLy8gICBz
LmVyYXNlKCJhYmMiKTsKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZT4KKyAgc2l6ZV90
eXBlIGVyYXNlKGNvbnN0IGtleV9hcmc8Sz4mIGtleSkgeworICAgIGF1dG8gaXQgPSBmaW5kKGtl
eSk7CisgICAgaWYgKGl0ID09IGVuZCgpKSByZXR1cm4gMDsKKyAgICBlcmFzZShpdCk7CisgICAg
cmV0dXJuIDE7CisgIH0KKworICAvLyBFcmFzZXMgdGhlIGVsZW1lbnQgcG9pbnRlZCB0byBieSBg
aXRgLiAgVW5saWtlIGBzdGQ6OnVub3JkZXJlZF9zZXQ6OmVyYXNlYCwKKyAgLy8gdGhpcyBtZXRo
b2QgcmV0dXJucyB2b2lkIHRvIHJlZHVjZSBhbGdvcml0aG1pYyBjb21wbGV4aXR5IHRvIE8oMSku
ICBJbgorICAvLyBvcmRlciB0byBlcmFzZSB3aGlsZSBpdGVyYXRpbmcgYWNyb3NzIGEgbWFwLCB1
c2UgdGhlIGZvbGxvd2luZyBpZGlvbSAod2hpY2gKKyAgLy8gYWxzbyB3b3JrcyBmb3Igc3RhbmRh
cmQgY29udGFpbmVycyk6CisgIC8vCisgIC8vIGZvciAoYXV0byBpdCA9IG0uYmVnaW4oKSwgZW5k
ID0gbS5lbmQoKTsgaXQgIT0gZW5kOykgeworICAvLyAgIGlmICg8cHJlZD4pIHsKKyAgLy8gICAg
IG0uZXJhc2UoaXQrKyk7CisgIC8vICAgfSBlbHNlIHsKKyAgLy8gICAgICsraXQ7CisgIC8vICAg
fQorICAvLyB9CisgIHZvaWQgZXJhc2UoY29uc3RfaXRlcmF0b3IgY2l0KSB7IGVyYXNlKGNpdC5p
bm5lcl8pOyB9CisKKyAgLy8gVGhpcyBvdmVybG9hZCBpcyBuZWNlc3NhcnkgYmVjYXVzZSBvdGhl
cndpc2UgZXJhc2U8Sz4oY29uc3QgSyYpIHdvdWxkIGJlCisgIC8vIGEgYmV0dGVyIG1hdGNoIGlm
IG5vbi1jb25zdCBpdGVyYXRvciBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQuCisgIHZvaWQgZXJh
c2UoaXRlcmF0b3IgaXQpIHsKKyAgICBhc3NlcnQoaXQgIT0gZW5kKCkpOworICAgIFBvbGljeVRy
YWl0czo6ZGVzdHJveSgmYWxsb2NfcmVmKCksIGl0LnNsb3RfKTsKKyAgICBlcmFzZV9tZXRhX29u
bHkoaXQpOworICB9CisKKyAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNv
bnN0X2l0ZXJhdG9yIGxhc3QpIHsKKyAgICB3aGlsZSAoZmlyc3QgIT0gbGFzdCkgeworICAgICAg
ZXJhc2UoZmlyc3QrKyk7CisgICAgfQorICAgIHJldHVybiBsYXN0LmlubmVyXzsKKyAgfQorCisg
IC8vIE1vdmVzIGVsZW1lbnRzIGZyb20gYHNyY2AgaW50byBgdGhpc2AuCisgIC8vIElmIHRoZSBl
bGVtZW50IGFscmVhZHkgZXhpc3RzIGluIGB0aGlzYCwgaXQgaXMgbGVmdCB1bm1vZGlmaWVkIGlu
IGBzcmNgLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgRT4KKyAgdm9pZCBtZXJn
ZShyYXdfaGFzaF9zZXQ8UG9saWN5LCBILCBFLCBBbGxvYz4mIHNyYykgeyAgLy8gTk9MSU5UCisg
ICAgYXNzZXJ0KHRoaXMgIT0gJnNyYyk7CisgICAgZm9yIChhdXRvIGl0ID0gc3JjLmJlZ2luKCks
IGUgPSBzcmMuZW5kKCk7IGl0ICE9IGU7ICsraXQpIHsKKyAgICAgIGlmIChQb2xpY3lUcmFpdHM6
OmFwcGx5KEluc2VydFNsb3Q8ZmFsc2U+eyp0aGlzLCBzdGQ6Om1vdmUoKml0LnNsb3RfKX0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xpY3lUcmFpdHM6OmVsZW1lbnQoaXQuc2xv
dF8pKQorICAgICAgICAgICAgICAuc2Vjb25kKSB7CisgICAgICAgIHNyYy5lcmFzZV9tZXRhX29u
bHkoaXQpOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBILCB0
eXBlbmFtZSBFPgorICB2b2lkIG1lcmdlKHJhd19oYXNoX3NldDxQb2xpY3ksIEgsIEUsIEFsbG9j
PiYmIHNyYykgeworICAgIG1lcmdlKHNyYyk7CisgIH0KKworICBub2RlX3R5cGUgZXh0cmFjdChj
b25zdF9pdGVyYXRvciBwb3NpdGlvbikgeworICAgIG5vZGVfdHlwZSBub2RlKGFsbG9jX3JlZigp
LCBwb3NpdGlvbi5pbm5lcl8uc2xvdF8pOworICAgIGVyYXNlX21ldGFfb25seShwb3NpdGlvbik7
CisgICAgcmV0dXJuIG5vZGU7CisgIH0KKworICB0ZW1wbGF0ZSA8CisgICAgICBjbGFzcyBLID0g
a2V5X3R5cGUsCisgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPEss
IGl0ZXJhdG9yPjo6dmFsdWUsIGludD46OnR5cGUgPSAwPgorICBub2RlX3R5cGUgZXh0cmFjdChj
b25zdCBrZXlfYXJnPEs+JiBrZXkpIHsKKyAgICBhdXRvIGl0ID0gZmluZChrZXkpOworICAgIHJl
dHVybiBpdCA9PSBlbmQoKSA/IG5vZGVfdHlwZSgpIDogZXh0cmFjdChjb25zdF9pdGVyYXRvcntp
dH0pOworICB9CisKKyAgdm9pZCBzd2FwKHJhd19oYXNoX3NldCYgdGhhdCkgbm9leGNlcHQoCisg
ICAgICBJc05vVGhyb3dTd2FwcGFibGU8aGFzaGVyPigpICYmIElzTm9UaHJvd1N3YXBwYWJsZTxr
ZXlfZXF1YWw+KCkgJiYKKyAgICAgICghQWxsb2NUcmFpdHM6OnByb3BhZ2F0ZV9vbl9jb250YWlu
ZXJfc3dhcDo6dmFsdWUgfHwKKyAgICAgICBJc05vVGhyb3dTd2FwcGFibGU8YWxsb2NhdG9yX3R5
cGU+KCkpKSB7CisgICAgdXNpbmcgc3RkOjpzd2FwOworICAgIHN3YXAoY3RybF8sIHRoYXQuY3Ry
bF8pOworICAgIHN3YXAoc2xvdHNfLCB0aGF0LnNsb3RzXyk7CisgICAgc3dhcChzaXplXywgdGhh
dC5zaXplXyk7CisgICAgc3dhcChjYXBhY2l0eV8sIHRoYXQuY2FwYWNpdHlfKTsKKyAgICBzd2Fw
KGdyb3d0aF9sZWZ0KCksIHRoYXQuZ3Jvd3RoX2xlZnQoKSk7CisgICAgc3dhcChoYXNoX3JlZigp
LCB0aGF0Lmhhc2hfcmVmKCkpOworICAgIHN3YXAoZXFfcmVmKCksIHRoYXQuZXFfcmVmKCkpOwor
ICAgIGlmIChBbGxvY1RyYWl0czo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZSkg
eworICAgICAgc3dhcChhbGxvY19yZWYoKSwgdGhhdC5hbGxvY19yZWYoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgIC8vIElmIHRoZSBhbGxvY2F0b3JzIGRvIG5vdCBjb21wYXJlIGVxdWFsIGl0IGlz
IG9mZmljaWFsbHkgdW5kZWZpbmVkCisgICAgICAvLyBiZWhhdmlvci4gV2UgY2hvb3NlIHRvIGRv
IG5vdGhpbmcuCisgICAgfQorICB9CisKKyAgdm9pZCByZWhhc2goc2l6ZV90IG4pIHsKKyAgICBp
ZiAobiA9PSAwICYmIGNhcGFjaXR5XyA9PSAwKSByZXR1cm47CisgICAgaWYgKG4gPT0gMCAmJiBz
aXplXyA9PSAwKSByZXR1cm4gZGVzdHJveV9zbG90cygpOworICAgIGF1dG8gbSA9IE5vcm1hbGl6
ZUNhcGFjaXR5KHN0ZDo6bWF4KG4sIE51bVNsb3RzRmFzdChzaXplKCkpKSk7CisgICAgLy8gbiA9
PSAwIHVuY29uZGl0aW9uYWxseSByZWhhc2hlcyBhcyBwZXIgdGhlIHN0YW5kYXJkLgorICAgIGlm
IChuID09IDAgfHwgbSA+IGNhcGFjaXR5XykgeworICAgICAgcmVzaXplKG0pOworICAgIH0KKyAg
fQorCisgIHZvaWQgcmVzZXJ2ZShzaXplX3QgbikgeworICAgIHJlaGFzaChOdW1TbG90c0Zhc3Qo
bikpOworICB9CisKKyAgLy8gRXh0ZW5zaW9uIEFQSTogc3VwcG9ydCBmb3IgaGV0ZXJvZ2VuZW91
cyBrZXlzLgorICAvLworICAvLyAgIHN0ZDo6dW5vcmRlcmVkX3NldDxzdGQ6OnN0cmluZz4gczsK
KyAgLy8gICAvLyBUdXJucyAiYWJjIiBpbnRvIHN0ZDo6c3RyaW5nLgorICAvLyAgIHMuY291bnQo
ImFiYyIpOworICAvLworICAvLyAgIGNoX3NldDxzdGQ6OnN0cmluZz4gczsKKyAgLy8gICAvLyBV
c2VzICJhYmMiIGRpcmVjdGx5IHdpdGhvdXQgY29weWluZyBpdCBpbnRvIHN0ZDo6c3RyaW5nLgor
ICAvLyAgIHMuY291bnQoImFiYyIpOworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlPgor
ICBzaXplX3QgY291bnQoY29uc3Qga2V5X2FyZzxLPiYga2V5KSBjb25zdCB7CisgICAgcmV0dXJu
IGZpbmQoa2V5KSA9PSBlbmQoKSA/IDAgOiAxOworICB9CisKKyAgLy8gSXNzdWVzIENQVSBwcmVm
ZXRjaCBpbnN0cnVjdGlvbnMgZm9yIHRoZSBtZW1vcnkgbmVlZGVkIHRvIGZpbmQgb3IgaW5zZXJ0
CisgIC8vIGEga2V5LiAgTGlrZSBhbGwgbG9va3VwIGZ1bmN0aW9ucywgdGhpcyBzdXBwb3J0IGhl
dGVyb2dlbmVvdXMga2V5cy4KKyAgLy8KKyAgLy8gTk9URTogVGhpcyBpcyBhIHZlcnkgbG93IGxl
dmVsIG9wZXJhdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIHdpdGhvdXQKKyAgLy8gc3BlY2lm
aWMgYmVuY2htYXJrcyBpbmRpY2F0aW5nIGl0cyBpbXBvcnRhbmNlLgorICB0ZW1wbGF0ZSA8Y2xh
c3MgSyA9IGtleV90eXBlPgorICB2b2lkIHByZWZldGNoKGNvbnN0IGtleV9hcmc8Sz4mIGtleSkg
Y29uc3QgeworICAgICh2b2lkKWtleTsKKyNpZiBkZWZpbmVkKF9fR05VQ19fKQorICAgIGF1dG8g
c2VxID0gcHJvYmUoaGFzaF9yZWYoKShrZXkpKTsKKyAgICBfX2J1aWx0aW5fcHJlZmV0Y2goc3Rh
dGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGN0cmxfICsgc2VxLm9mZnNldCgpKSk7CisgICAgX19idWls
dGluX3ByZWZldGNoKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihzbG90c18gKyBzZXEub2Zmc2V0
KCkpKTsKKyNlbmRpZiAgLy8gX19HTlVDX18KKyAgfQorCisgIC8vIFRoZSBBUEkgb2YgZmluZCgp
IGhhcyB0d28gZXh0ZW5zaW9ucy4KKyAgLy8KKyAgLy8gMS4gVGhlIGhhc2ggY2FuIGJlIHBhc3Nl
ZCBieSB0aGUgdXNlci4gSXQgbXVzdCBiZSBlcXVhbCB0byB0aGUgaGFzaCBvZiB0aGUKKyAgLy8g
a2V5LgorICAvLworICAvLyAyLiBUaGUgdHlwZSBvZiB0aGUga2V5IGFyZ3VtZW50IGRvZXNuJ3Qg
aGF2ZSB0byBiZSBrZXlfdHlwZS4gVGhpcyBpcyBzbworICAvLyBjYWxsZWQgaGV0ZXJvZ2VuZW91
cyBrZXkgc3VwcG9ydC4KKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZT4KKyAgaXRlcmF0
b3IgZmluZChjb25zdCBrZXlfYXJnPEs+JiBrZXksIHNpemVfdCBoYXNoKSB7CisgICAgYXV0byBz
ZXEgPSBwcm9iZShoYXNoKTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgR3JvdXAgZ3tjdHJs
XyArIHNlcS5vZmZzZXQoKX07CisgICAgICBmb3IgKGludCBpIDogZy5NYXRjaChIMihoYXNoKSkp
IHsKKyAgICAgICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKFBvbGljeVRyYWl0czo6YXBwbHkoCisg
ICAgICAgICAgICAgICAgRXF1YWxFbGVtZW50PEs+e2tleSwgZXFfcmVmKCl9LAorICAgICAgICAg
ICAgICAgIFBvbGljeVRyYWl0czo6ZWxlbWVudChzbG90c18gKyBzZXEub2Zmc2V0KGkpKSkpKQor
ICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9hdChzZXEub2Zmc2V0KGkpKTsKKyAgICAgIH0KKyAg
ICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShnLk1hdGNoRW1wdHkoKSkpIHJldHVybiBlbmQoKTsK
KyAgICAgIHNlcS5uZXh0KCk7CisgICAgfQorICB9CisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5
X3R5cGU+CisgIGl0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X2FyZzxLPiYga2V5KSB7CisgICAgcmV0
dXJuIGZpbmQoa2V5LCBoYXNoX3JlZigpKGtleSkpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNz
IEsgPSBrZXlfdHlwZT4KKyAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBrZXlfYXJnPEs+JiBr
ZXksIHNpemVfdCBoYXNoKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8cmF3X2hhc2hf
c2V0Kj4odGhpcyktPmZpbmQoa2V5LCBoYXNoKTsKKyAgfQorICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9
IGtleV90eXBlPgorICBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IGtleV9hcmc8Sz4mIGtleSkg
Y29uc3QgeworICAgIHJldHVybiBmaW5kKGtleSwgaGFzaF9yZWYoKShrZXkpKTsKKyAgfQorCisg
IHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGU+CisgIGJvb2wgY29udGFpbnMoY29uc3Qga2V5
X2FyZzxLPiYga2V5KSBjb25zdCB7CisgICAgcmV0dXJuIGZpbmQoa2V5KSAhPSBlbmQoKTsKKyAg
fQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGU+CisgIHN0ZDo6cGFpcjxpdGVyYXRv
ciwgaXRlcmF0b3I+IGVxdWFsX3JhbmdlKGNvbnN0IGtleV9hcmc8Sz4mIGtleSkgeworICAgIGF1
dG8gaXQgPSBmaW5kKGtleSk7CisgICAgaWYgKGl0ICE9IGVuZCgpKSByZXR1cm4ge2l0LCBzdGQ6
Om5leHQoaXQpfTsKKyAgICByZXR1cm4ge2l0LCBpdH07CisgIH0KKyAgdGVtcGxhdGUgPGNsYXNz
IEsgPSBrZXlfdHlwZT4KKyAgc3RkOjpwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRv
cj4gZXF1YWxfcmFuZ2UoCisgICAgICBjb25zdCBrZXlfYXJnPEs+JiBrZXkpIGNvbnN0IHsKKyAg
ICBhdXRvIGl0ID0gZmluZChrZXkpOworICAgIGlmIChpdCAhPSBlbmQoKSkgcmV0dXJuIHtpdCwg
c3RkOjpuZXh0KGl0KX07CisgICAgcmV0dXJuIHtpdCwgaXR9OworICB9CisKKyAgc2l6ZV90IGJ1
Y2tldF9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIGNhcGFjaXR5XzsgfQorICBmbG9hdCBsb2FkX2Zh
Y3RvcigpIGNvbnN0IHsKKyAgICByZXR1cm4gY2FwYWNpdHlfID8gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihzaXplKCkpIC8gY2FwYWNpdHlfIDogMC4wOworICB9CisgIGZsb2F0IG1heF9sb2FkX2ZhY3Rv
cigpIGNvbnN0IHsgcmV0dXJuIDEuMGY7IH0KKyAgdm9pZCBtYXhfbG9hZF9mYWN0b3IoZmxvYXQp
IHsKKyAgICAvLyBEb2VzIG5vdGhpbmcuCisgIH0KKworICBoYXNoZXIgaGFzaF9mdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGhhc2hfcmVmKCk7IH0KKyAga2V5X2VxdWFsIGtleV9lcSgpIGNvbnN0
IHsgcmV0dXJuIGVxX3JlZigpOyB9CisgIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBj
b25zdCB7IHJldHVybiBhbGxvY19yZWYoKTsgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgcmF3X2hhc2hfc2V0JiBhLCBjb25zdCByYXdfaGFzaF9zZXQmIGIpIHsKKyAgICBpZiAo
YS5zaXplKCkgIT0gYi5zaXplKCkpIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCByYXdfaGFzaF9z
ZXQqIG91dGVyID0gJmE7CisgICAgY29uc3QgcmF3X2hhc2hfc2V0KiBpbm5lciA9ICZiOworICAg
IGlmIChvdXRlci0+Y2FwYWNpdHkoKSA+IGlubmVyLT5jYXBhY2l0eSgpKSBzdGQ6OnN3YXAob3V0
ZXIsIGlubmVyKTsKKyAgICBmb3IgKGNvbnN0IHZhbHVlX3R5cGUmIGVsZW0gOiAqb3V0ZXIpCisg
ICAgICBpZiAoIWlubmVyLT5oYXNfZWxlbWVudChlbGVtKSkgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiB0cnVlOworICB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCByYXdfaGFz
aF9zZXQmIGEsIGNvbnN0IHJhd19oYXNoX3NldCYgYikgeworICAgIHJldHVybiAhKGEgPT0gYik7
CisgIH0KKworICBmcmllbmQgdm9pZCBzd2FwKHJhd19oYXNoX3NldCYgYSwKKyAgICAgICAgICAg
ICAgICAgICByYXdfaGFzaF9zZXQmIGIpIG5vZXhjZXB0KG5vZXhjZXB0KGEuc3dhcChiKSkpIHsK
KyAgICBhLnN3YXAoYik7CisgIH0KKworIHByaXZhdGU6CisgIHRlbXBsYXRlIDxjbGFzcyBDb250
YWluZXIsIHR5cGVuYW1lIEVuYWJsZXI+CisgIGZyaWVuZCBzdHJ1Y3QgYWJzbDo6Y29udGFpbmVy
X2ludGVybmFsOjpoYXNodGFibGVfZGVidWdfaW50ZXJuYWw6OgorICAgICAgSGFzaHRhYmxlRGVi
dWdBY2Nlc3M7CisKKyAgc3RydWN0IEZpbmRFbGVtZW50IHsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
SywgY2xhc3MuLi4gQXJncz4KKyAgICBjb25zdF9pdGVyYXRvciBvcGVyYXRvcigpKGNvbnN0IEsm
IGtleSwgQXJncyYmLi4uKSBjb25zdCB7CisgICAgICByZXR1cm4gcy5maW5kKGtleSk7CisgICAg
fQorICAgIGNvbnN0IHJhd19oYXNoX3NldCYgczsKKyAgfTsKKworICBzdHJ1Y3QgSGFzaEVsZW1l
bnQgeworICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcy4uLiBBcmdzPgorICAgIHNpemVfdCBv
cGVyYXRvcigpKGNvbnN0IEsmIGtleSwgQXJncyYmLi4uKSBjb25zdCB7CisgICAgICByZXR1cm4g
aChrZXkpOworICAgIH0KKyAgICBjb25zdCBoYXNoZXImIGg7CisgIH07CisKKyAgdGVtcGxhdGUg
PGNsYXNzIEsxPgorICBzdHJ1Y3QgRXF1YWxFbGVtZW50IHsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
SzIsIGNsYXNzLi4uIEFyZ3M+CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEsyJiBsaHMsIEFy
Z3MmJi4uLikgY29uc3QgeworICAgICAgcmV0dXJuIGVxKGxocywgcmhzKTsKKyAgICB9CisgICAg
Y29uc3QgSzEmIHJoczsKKyAgICBjb25zdCBrZXlfZXF1YWwmIGVxOworICB9OworCisgIHN0cnVj
dCBFbXBsYWNlRGVjb21wb3NhYmxlIHsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MuLi4g
QXJncz4KKyAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IG9wZXJhdG9yKCkoY29uc3QgSyYg
a2V5LCBBcmdzJiYuLi4gYXJncykgY29uc3QgeworICAgICAgYXV0byByZXMgPSBzLmZpbmRfb3Jf
cHJlcGFyZV9pbnNlcnQoa2V5KTsKKyAgICAgIGlmIChyZXMuc2Vjb25kKSB7CisgICAgICAgIHMu
ZW1wbGFjZV9hdChyZXMuZmlyc3QsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAg
ICB9CisgICAgICByZXR1cm4ge3MuaXRlcmF0b3JfYXQocmVzLmZpcnN0KSwgcmVzLnNlY29uZH07
CisgICAgfQorICAgIHJhd19oYXNoX3NldCYgczsKKyAgfTsKKworICB0ZW1wbGF0ZSA8Ym9vbCBk
b19kZXN0cm95PgorICBzdHJ1Y3QgSW5zZXJ0U2xvdCB7CisgICAgdGVtcGxhdGUgPGNsYXNzIEss
IGNsYXNzLi4uIEFyZ3M+CisgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBvcGVyYXRvcigp
KGNvbnN0IEsmIGtleSwgQXJncyYmLi4uKSAmJiB7CisgICAgICBhdXRvIHJlcyA9IHMuZmluZF9v
cl9wcmVwYXJlX2luc2VydChrZXkpOworICAgICAgaWYgKHJlcy5zZWNvbmQpIHsKKyAgICAgICAg
UG9saWN5VHJhaXRzOjp0cmFuc2Zlcigmcy5hbGxvY19yZWYoKSwgcy5zbG90c18gKyByZXMuZmly
c3QsICZzbG90KTsKKyAgICAgIH0gZWxzZSBpZiAoZG9fZGVzdHJveSkgeworICAgICAgICBQb2xp
Y3lUcmFpdHM6OmRlc3Ryb3koJnMuYWxsb2NfcmVmKCksICZzbG90KTsKKyAgICAgIH0KKyAgICAg
IHJldHVybiB7cy5pdGVyYXRvcl9hdChyZXMuZmlyc3QpLCByZXMuc2Vjb25kfTsKKyAgICB9Cisg
ICAgcmF3X2hhc2hfc2V0JiBzOworICAgIC8vIENvbnN0cnVjdGVkIHNsb3QuIEVpdGhlciBtb3Zl
ZCBpbnRvIHBsYWNlIG9yIGRlc3Ryb3llZC4KKyAgICBzbG90X3R5cGUmJiBzbG90OworICB9Owor
CisgIC8vIENvbXB1dGVzIHN0ZDo6Y2VpbChuIC8ga01heExvYWRGYWN0b3IpLiBGYXN0ZXIgdGhh
biBjYWxsaW5nIHN0ZDo6Y2VpbC4KKyAgc3RhdGljIGlubGluZSBzaXplX3QgTnVtU2xvdHNGYXN0
KHNpemVfdCBuKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oCisgICAgICAgIChu
ICoga01heExvYWRGYWN0b3JEZW5vbWluYXRvciArIChrTWF4TG9hZEZhY3Rvck51bWVyYXRvciAt
IDEpKSAvCisgICAgICAgIGtNYXhMb2FkRmFjdG9yTnVtZXJhdG9yKTsKKyAgfQorCisgIC8vICJl
cmFzZXMiIHRoZSBvYmplY3QgZnJvbSB0aGUgY29udGFpbmVyLCBleGNlcHQgdGhhdCBpdCBkb2Vz
bid0IGFjdHVhbGx5CisgIC8vIGRlc3Ryb3kgdGhlIG9iamVjdC4gSXQgb25seSB1cGRhdGVzIGFs
bCB0aGUgbWV0YWRhdGEgb2YgdGhlIGNsYXNzLgorICAvLyBUaGlzIGNhbiBiZSB1c2VkIGluIGNv
bmp1bmN0aW9uIHdpdGggUG9saWN5Ojp0cmFuc2ZlciB0byBtb3ZlIHRoZSBvYmplY3QgdG8KKyAg
Ly8gYW5vdGhlciBwbGFjZS4KKyAgdm9pZCBlcmFzZV9tZXRhX29ubHkoY29uc3RfaXRlcmF0b3Ig
aXQpIHsKKyAgICBhc3NlcnQoSXNGdWxsKCppdC5pbm5lcl8uY3RybF8pICYmICJlcmFzaW5nIGEg
ZGFuZ2xpbmcgaXRlcmF0b3IiKTsKKyAgICAtLXNpemVfOworICAgIGNvbnN0IHNpemVfdCBpbmRl
eCA9IGl0LmlubmVyXy5jdHJsXyAtIGN0cmxfOworICAgIGNvbnN0IHNpemVfdCBpbmRleF9iZWZv
cmUgPSAoaW5kZXggLSBHcm91cDo6a1dpZHRoKSAmIGNhcGFjaXR5XzsKKyAgICBjb25zdCBhdXRv
IGVtcHR5X2FmdGVyID0gR3JvdXAoaXQuaW5uZXJfLmN0cmxfKS5NYXRjaEVtcHR5KCk7CisgICAg
Y29uc3QgYXV0byBlbXB0eV9iZWZvcmUgPSBHcm91cChjdHJsXyArIGluZGV4X2JlZm9yZSkuTWF0
Y2hFbXB0eSgpOworCisgICAgLy8gV2UgY291bnQgaG93IG1hbnkgY29uc2VjdXRpdmUgbm9uIGVt
cHRpZXMgd2UgaGF2ZSB0byB0aGUgcmlnaHQgYW5kIHRvIHRoZQorICAgIC8vIGxlZnQgb2YgYGl0
YC4gSWYgdGhlIHN1bSBpcyA+PSBrV2lkdGggdGhlbiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcHJv
YmUKKyAgICAvLyB3aW5kb3cgdGhhdCBtaWdodCBoYXZlIHNlZW4gYSBmdWxsIGdyb3VwLgorICAg
IGJvb2wgd2FzX25ldmVyX2Z1bGwgPQorICAgICAgICBlbXB0eV9iZWZvcmUgJiYgZW1wdHlfYWZ0
ZXIgJiYKKyAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihlbXB0eV9hZnRlci5UcmFpbGluZ1pl
cm9zKCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5X2JlZm9yZS5MZWFkaW5n
WmVyb3MoKSkgPCBHcm91cDo6a1dpZHRoOworCisgICAgc2V0X2N0cmwoaW5kZXgsIHdhc19uZXZl
cl9mdWxsID8ga0VtcHR5IDoga0RlbGV0ZWQpOworICAgIGdyb3d0aF9sZWZ0KCkgKz0gd2FzX25l
dmVyX2Z1bGw7CisgIH0KKworICB2b2lkIGluaXRpYWxpemVfc2xvdHMoKSB7CisgICAgYXNzZXJ0
KGNhcGFjaXR5Xyk7CisgICAgYXV0byBsYXlvdXQgPSBNYWtlTGF5b3V0KGNhcGFjaXR5Xyk7Cisg
ICAgY2hhciogbWVtID0gc3RhdGljX2Nhc3Q8Y2hhcio+KAorICAgICAgICBBbGxvY2F0ZTxMYXlv
dXQ6OkFsaWdubWVudCgpPigmYWxsb2NfcmVmKCksIGxheW91dC5BbGxvY1NpemUoKSkpOworICAg
IGN0cmxfID0gcmVpbnRlcnByZXRfY2FzdDxjdHJsX3QqPihsYXlvdXQudGVtcGxhdGUgUG9pbnRl
cjwwPihtZW0pKTsKKyAgICBzbG90c18gPSBsYXlvdXQudGVtcGxhdGUgUG9pbnRlcjwxPihtZW0p
OworICAgIHJlc2V0X2N0cmwoKTsKKyAgICBncm93dGhfbGVmdCgpID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihjYXBhY2l0eV8gKiBrTWF4TG9hZEZhY3RvcikgLSBzaXplXzsKKyAgfQorCisgIHZvaWQg
ZGVzdHJveV9zbG90cygpIHsKKyAgICBpZiAoIWNhcGFjaXR5XykgcmV0dXJuOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpICE9IGNhcGFjaXR5XzsgKytpKSB7CisgICAgICBpZiAoSXNGdWxsKGN0
cmxfW2ldKSkgeworICAgICAgICBQb2xpY3lUcmFpdHM6OmRlc3Ryb3koJmFsbG9jX3JlZigpLCBz
bG90c18gKyBpKTsKKyAgICAgIH0KKyAgICB9CisgICAgYXV0byBsYXlvdXQgPSBNYWtlTGF5b3V0
KGNhcGFjaXR5Xyk7CisgICAgLy8gVW5wb2lzb24gYmVmb3JlIHJldHVybmluZyB0aGUgbWVtb3J5
IHRvIHRoZSBhbGxvY2F0b3IuCisgICAgU2FuaXRpemVyVW5wb2lzb25NZW1vcnlSZWdpb24oc2xv
dHNfLCBzaXplb2Yoc2xvdF90eXBlKSAqIGNhcGFjaXR5Xyk7CisgICAgRGVhbGxvY2F0ZTxMYXlv
dXQ6OkFsaWdubWVudCgpPigmYWxsb2NfcmVmKCksIGN0cmxfLCBsYXlvdXQuQWxsb2NTaXplKCkp
OworICAgIGN0cmxfID0gRW1wdHlHcm91cCgpOworICAgIHNsb3RzXyA9IG51bGxwdHI7CisgICAg
c2l6ZV8gPSAwOworICAgIGNhcGFjaXR5XyA9IDA7CisgICAgZ3Jvd3RoX2xlZnQoKSA9IDA7Cisg
IH0KKworICB2b2lkIHJlc2l6ZShzaXplX3QgbmV3X2NhcGFjaXR5KSB7CisgICAgYXNzZXJ0KElz
VmFsaWRDYXBhY2l0eShuZXdfY2FwYWNpdHkpKTsKKyAgICBhdXRvKiBvbGRfY3RybCA9IGN0cmxf
OworICAgIGF1dG8qIG9sZF9zbG90cyA9IHNsb3RzXzsKKyAgICBjb25zdCBzaXplX3Qgb2xkX2Nh
cGFjaXR5ID0gY2FwYWNpdHlfOworICAgIGNhcGFjaXR5XyA9IG5ld19jYXBhY2l0eTsKKyAgICBp
bml0aWFsaXplX3Nsb3RzKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBvbGRfY2Fw
YWNpdHk7ICsraSkgeworICAgICAgaWYgKElzRnVsbChvbGRfY3RybFtpXSkpIHsKKyAgICAgICAg
c2l6ZV90IGhhc2ggPSBQb2xpY3lUcmFpdHM6OmFwcGx5KEhhc2hFbGVtZW50e2hhc2hfcmVmKCl9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9saWN5VHJhaXRz
OjplbGVtZW50KG9sZF9zbG90cyArIGkpKTsKKyAgICAgICAgc2l6ZV90IG5ld19pID0gZmluZF9m
aXJzdF9ub25fZnVsbChoYXNoKTsKKyAgICAgICAgc2V0X2N0cmwobmV3X2ksIEgyKGhhc2gpKTsK
KyAgICAgICAgUG9saWN5VHJhaXRzOjp0cmFuc2ZlcigmYWxsb2NfcmVmKCksIHNsb3RzXyArIG5l
d19pLCBvbGRfc2xvdHMgKyBpKTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKG9sZF9jYXBhY2l0
eSkgeworICAgICAgU2FuaXRpemVyVW5wb2lzb25NZW1vcnlSZWdpb24ob2xkX3Nsb3RzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNsb3RfdHlwZSkgKiBvbGRf
Y2FwYWNpdHkpOworICAgICAgYXV0byBsYXlvdXQgPSBNYWtlTGF5b3V0KG9sZF9jYXBhY2l0eSk7
CisgICAgICBEZWFsbG9jYXRlPExheW91dDo6QWxpZ25tZW50KCk+KCZhbGxvY19yZWYoKSwgb2xk
X2N0cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC5BbGxv
Y1NpemUoKSk7CisgICAgfQorICB9CisKKyAgdm9pZCBkcm9wX2RlbGV0ZXNfd2l0aG91dF9yZXNp
emUoKSBBQlNMX0FUVFJJQlVURV9OT0lOTElORSB7CisgICAgYXNzZXJ0KElzVmFsaWRDYXBhY2l0
eShjYXBhY2l0eV8pKTsKKyAgICAvLyBBbGdvcml0aG06CisgICAgLy8gLSBtYXJrIGFsbCBERUxF
VEVEIHNsb3RzIGFzIEVNUFRZCisgICAgLy8gLSBtYXJrIGFsbCBGVUxMIHNsb3RzIGFzIERFTEVU
RUQKKyAgICAvLyAtIGZvciBlYWNoIHNsb3QgbWFya2VkIGFzIERFTEVURUQKKyAgICAvLyAgICAg
aGFzaCA9IEhhc2goZWxlbWVudCkKKyAgICAvLyAgICAgdGFyZ2V0ID0gZmluZF9maXJzdF9ub25f
ZnVsbChoYXNoKQorICAgIC8vICAgICBpZiB0YXJnZXQgaXMgaW4gdGhlIHNhbWUgZ3JvdXAKKyAg
ICAvLyAgICAgICBtYXJrIHNsb3QgYXMgRlVMTAorICAgIC8vICAgICBlbHNlIGlmIHRhcmdldCBp
cyBFTVBUWQorICAgIC8vICAgICAgIHRyYW5zZmVyIGVsZW1lbnQgdG8gdGFyZ2V0CisgICAgLy8g
ICAgICAgbWFyayBzbG90IGFzIEVNUFRZCisgICAgLy8gICAgICAgbWFyayB0YXJnZXQgYXMgRlVM
TAorICAgIC8vICAgICBlbHNlIGlmIHRhcmdldCBpcyBERUxFVEVECisgICAgLy8gICAgICAgc3dh
cCBjdXJyZW50IGVsZW1lbnQgd2l0aCB0YXJnZXQgZWxlbWVudAorICAgIC8vICAgICAgIG1hcmsg
dGFyZ2V0IGFzIEZVTEwKKyAgICAvLyAgICAgICByZXBlYXQgcHJvY2VkdXJlIGZvciBjdXJyZW50
IHNsb3Qgd2l0aCBtb3ZlZCBmcm9tIGVsZW1lbnQgKHRhcmdldCkKKyAgICBDb252ZXJ0RGVsZXRl
ZFRvRW1wdHlBbmRGdWxsVG9EZWxldGVkKGN0cmxfLCBjYXBhY2l0eV8pOworICAgIHR5cGVuYW1l
IHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZihzbG90X3R5cGUpLCBhbGlnbm9mKHNsb3RfdHlw
ZSk+Ojp0eXBlCisgICAgICAgIHJhdzsKKyAgICBzbG90X3R5cGUqIHNsb3QgPSByZWludGVycHJl
dF9jYXN0PHNsb3RfdHlwZSo+KCZyYXcpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNh
cGFjaXR5XzsgKytpKSB7CisgICAgICBpZiAoIUlzRGVsZXRlZChjdHJsX1tpXSkpIGNvbnRpbnVl
OworICAgICAgc2l6ZV90IGhhc2ggPSBQb2xpY3lUcmFpdHM6OmFwcGx5KEhhc2hFbGVtZW50e2hh
c2hfcmVmKCl9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGlj
eVRyYWl0czo6ZWxlbWVudChzbG90c18gKyBpKSk7CisgICAgICBzaXplX3QgbmV3X2kgPSBmaW5k
X2ZpcnN0X25vbl9mdWxsKGhhc2gpOworCisgICAgICAvLyBWZXJpZnkgaWYgdGhlIG9sZCBhbmQg
bmV3IGkgZmFsbCB3aXRoaW4gdGhlIHNhbWUgZ3JvdXAgd3J0IHRoZSBoYXNoLgorICAgICAgLy8g
SWYgdGhleSBkbywgd2UgZG9uJ3QgbmVlZCB0byBtb3ZlIHRoZSBvYmplY3QgYXMgaXQgZmFsbHMg
YWxyZWFkeSBpbiB0aGUKKyAgICAgIC8vIGJlc3QgcHJvYmUgd2UgY2FuLgorICAgICAgY29uc3Qg
YXV0byBwcm9iZV9pbmRleCA9IFsmXShzaXplX3QgcG9zKSB7CisgICAgICAgIHJldHVybiAoKHBv
cyAtIHByb2JlKGhhc2gpLm9mZnNldCgpKSAmIGNhcGFjaXR5XykgLyBHcm91cDo6a1dpZHRoOwor
ICAgICAgfTsKKworICAgICAgLy8gRWxlbWVudCBkb2Vzbid0IG1vdmUuCisgICAgICBpZiAoQUJT
TF9QUkVESUNUX1RSVUUocHJvYmVfaW5kZXgobmV3X2kpID09IHByb2JlX2luZGV4KGkpKSkgewor
ICAgICAgICBzZXRfY3RybChpLCBIMihoYXNoKSk7CisgICAgICAgIGNvbnRpbnVlOworICAgICAg
fQorICAgICAgaWYgKElzRW1wdHkoY3RybF9bbmV3X2ldKSkgeworICAgICAgICAvLyBUcmFuc2Zl
ciBlbGVtZW50IHRvIHRoZSBlbXB0eSBzcG90LgorICAgICAgICAvLyBzZXRfY3RybCBwb2lzb25z
L3VucG9pc29ucyB0aGUgc2xvdHMgc28gd2UgaGF2ZSB0byBjYWxsIGl0IGF0IHRoZQorICAgICAg
ICAvLyByaWdodCB0aW1lLgorICAgICAgICBzZXRfY3RybChuZXdfaSwgSDIoaGFzaCkpOworICAg
ICAgICBQb2xpY3lUcmFpdHM6OnRyYW5zZmVyKCZhbGxvY19yZWYoKSwgc2xvdHNfICsgbmV3X2ks
IHNsb3RzXyArIGkpOworICAgICAgICBzZXRfY3RybChpLCBrRW1wdHkpOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgYXNzZXJ0KElzRGVsZXRlZChjdHJsX1tuZXdfaV0pKTsKKyAgICAgICAgc2V0
X2N0cmwobmV3X2ksIEgyKGhhc2gpKTsKKyAgICAgICAgLy8gVW50aWwgd2UgYXJlIGRvbmUgcmVo
YXNoaW5nLCBERUxFVEVEIG1hcmtzIHByZXZpb3VzbHkgRlVMTCBzbG90cy4KKyAgICAgICAgLy8g
U3dhcCBpIGFuZCBuZXdfaSBlbGVtZW50cy4KKyAgICAgICAgUG9saWN5VHJhaXRzOjp0cmFuc2Zl
cigmYWxsb2NfcmVmKCksIHNsb3QsIHNsb3RzXyArIGkpOworICAgICAgICBQb2xpY3lUcmFpdHM6
OnRyYW5zZmVyKCZhbGxvY19yZWYoKSwgc2xvdHNfICsgaSwgc2xvdHNfICsgbmV3X2kpOworICAg
ICAgICBQb2xpY3lUcmFpdHM6OnRyYW5zZmVyKCZhbGxvY19yZWYoKSwgc2xvdHNfICsgbmV3X2ks
IHNsb3QpOworICAgICAgICAtLWk7ICAvLyByZXBlYXQKKyAgICAgIH0KKyAgICB9CisgICAgZ3Jv
d3RoX2xlZnQoKSA9IHN0YXRpY19jYXN0PHNpemVfdD4oY2FwYWNpdHlfICoga01heExvYWRGYWN0
b3IpIC0gc2l6ZV87CisgIH0KKworICB2b2lkIHJlaGFzaF9hbmRfZ3Jvd19pZl9uZWNlc3Nhcnko
KSB7CisgICAgaWYgKGNhcGFjaXR5XyA9PSAwKSB7CisgICAgICByZXNpemUoR3JvdXA6OmtXaWR0
aCAtIDEpOworICAgIH0gZWxzZSBpZiAoc2l6ZSgpIDw9IGtNYXhMb2FkRmFjdG9yIC8gMiAqIGNh
cGFjaXR5XykgeworICAgICAgLy8gU3F1YXNoIERFTEVURUQgd2l0aG91dCBncm93aW5nIGlmIHRo
ZXJlIGlzIGVub3VnaCBjYXBhY2l0eS4KKyAgICAgIGRyb3BfZGVsZXRlc193aXRob3V0X3Jlc2l6
ZSgpOworICAgIH0gZWxzZSB7CisgICAgICAvLyBPdGhlcndpc2UgZ3JvdyB0aGUgY29udGFpbmVy
LgorICAgICAgcmVzaXplKGNhcGFjaXR5XyAqIDIgKyAxKTsKKyAgICB9CisgIH0KKworICBib29s
IGhhc19lbGVtZW50KGNvbnN0IHZhbHVlX3R5cGUmIGVsZW0pIGNvbnN0IHsKKyAgICBzaXplX3Qg
aGFzaCA9IFBvbGljeVRyYWl0czo6YXBwbHkoSGFzaEVsZW1lbnR7aGFzaF9yZWYoKX0sIGVsZW0p
OworICAgIGF1dG8gc2VxID0gcHJvYmUoaGFzaCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
IEdyb3VwIGd7Y3RybF8gKyBzZXEub2Zmc2V0KCl9OworICAgICAgZm9yIChpbnQgaSA6IGcuTWF0
Y2goSDIoaGFzaCkpKSB7CisgICAgICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShQb2xpY3lUcmFp
dHM6OmVsZW1lbnQoc2xvdHNfICsgc2VxLm9mZnNldChpKSkgPT0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW0pKQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAg
ICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKGcuTWF0Y2hFbXB0eSgpKSkgcmV0dXJuIGZhbHNlOwor
ICAgICAgc2VxLm5leHQoKTsKKyAgICAgIGFzc2VydChzZXEuaW5kZXgoKSA8IGNhcGFjaXR5XyAm
JiAiZnVsbCB0YWJsZSEiKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgLy8g
UHJvYmVzIHRoZSByYXdfaGFzaF9zZXQgd2l0aCB0aGUgcHJvYmUgc2VxdWVuY2UgZm9yIGhhc2gg
YW5kIHJldHVybnMgdGhlCisgIC8vIHBvaW50ZXIgdG8gdGhlIGZpcnN0IGVtcHR5IG9yIGRlbGV0
ZWQgc2xvdC4KKyAgLy8gTk9URTogdGhpcyBmdW5jdGlvbiBtdXN0IHdvcmsgd2l0aCB0YWJsZXMg
aGF2aW5nIGJvdGgga0VtcHR5IGFuZCBrRGVsZXRlCisgIC8vIGluIG9uZSBncm91cC4gU3VjaCB0
YWJsZXMgYXBwZWFycyBkdXJpbmcgZHJvcF9kZWxldGVzX3dpdGhvdXRfcmVzaXplLgorICAvLwor
ICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHZlcnkgdXNlZnVsIHdoZW4gaW5zZXJ0aW9ucyBoYXBwZW4g
YW5kOgorICAvLyAtIHRoZSBpbnB1dCBpcyBhbHJlYWR5IGEgc2V0CisgIC8vIC0gdGhlcmUgYXJl
IGVub3VnaCBzbG90cworICAvLyAtIHRoZSBlbGVtZW50IHdpdGggdGhlIGhhc2ggaXMgbm90IGlu
IHRoZSB0YWJsZQorICBzaXplX3QgZmluZF9maXJzdF9ub25fZnVsbChzaXplX3QgaGFzaCkgewor
ICAgIGF1dG8gc2VxID0gcHJvYmUoaGFzaCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIEdy
b3VwIGd7Y3RybF8gKyBzZXEub2Zmc2V0KCl9OworICAgICAgYXV0byBtYXNrID0gZy5NYXRjaEVt
cHR5T3JEZWxldGVkKCk7CisgICAgICBpZiAobWFzaykgeworI2lmICFkZWZpbmVkKE5ERUJVRykK
KyAgICAgICAgLy8gV2Ugd2FudCB0byBmb3JjZSBzbWFsbCB0YWJsZXMgdG8gaGF2ZSByYW5kb20g
ZW50cmllcyB0b28sIHNvCisgICAgICAgIC8vIGluIGRlYnVnIGJ1aWxkIHdlIHdpbGwgcmFuZG9t
bHkgaW5zZXJ0IGluIGVpdGhlciB0aGUgZnJvbnQgb3IgYmFjayBvZgorICAgICAgICAvLyB0aGUg
Z3JvdXAuCisgICAgICAgIC8vIFRPRE8oa2ZtLHNiZW56YSk6IHJldmlzaXQgYWZ0ZXIgd2UgZG8g
dW5jb25kaXRpb25hbCBtaXhpbmcKKyAgICAgICAgaWYgKFNob3VsZEluc2VydEJhY2t3YXJkcyho
YXNoLCBjdHJsXykpCisgICAgICAgICAgcmV0dXJuIHNlcS5vZmZzZXQobWFzay5IaWdoZXN0Qml0
U2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgcmV0dXJuIHNlcS5vZmZzZXQobWFzay5M
b3dlc3RCaXRTZXQoKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gc2VxLm9mZnNldChtYXNrLkxv
d2VzdEJpdFNldCgpKTsKKyNlbmRpZgorICAgICAgfQorICAgICAgYXNzZXJ0KHNlcS5pbmRleCgp
IDwgY2FwYWNpdHlfICYmICJmdWxsIHRhYmxlISIpOworICAgICAgc2VxLm5leHQoKTsKKyAgICB9
CisgIH0KKworICAvLyBUT0RPKGFsa2lzKTogT3B0aW1pemUgdGhpcyBhc3N1bWluZyAqdGhpcyBh
bmQgdGhhdCBkb24ndCBvdmVybGFwLgorICByYXdfaGFzaF9zZXQmIG1vdmVfYXNzaWduKHJhd19o
YXNoX3NldCYmIHRoYXQsIHN0ZDo6dHJ1ZV90eXBlKSB7CisgICAgcmF3X2hhc2hfc2V0IHRtcChz
dGQ6Om1vdmUodGhhdCkpOworICAgIHN3YXAodG1wKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0K
KyAgcmF3X2hhc2hfc2V0JiBtb3ZlX2Fzc2lnbihyYXdfaGFzaF9zZXQmJiB0aGF0LCBzdGQ6OmZh
bHNlX3R5cGUpIHsKKyAgICByYXdfaGFzaF9zZXQgdG1wKHN0ZDo6bW92ZSh0aGF0KSwgYWxsb2Nf
cmVmKCkpOworICAgIHN3YXAodG1wKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworIHByb3Rl
Y3RlZDoKKyAgdGVtcGxhdGUgPGNsYXNzIEs+CisgIHN0ZDo6cGFpcjxzaXplX3QsIGJvb2w+IGZp
bmRfb3JfcHJlcGFyZV9pbnNlcnQoY29uc3QgSyYga2V5KSB7CisgICAgYXV0byBoYXNoID0gaGFz
aF9yZWYoKShrZXkpOworICAgIGF1dG8gc2VxID0gcHJvYmUoaGFzaCk7CisgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgIEdyb3VwIGd7Y3RybF8gKyBzZXEub2Zmc2V0KCl9OworICAgICAgZm9yIChp
bnQgaSA6IGcuTWF0Y2goSDIoaGFzaCkpKSB7CisgICAgICAgIGlmIChBQlNMX1BSRURJQ1RfVFJV
RShQb2xpY3lUcmFpdHM6OmFwcGx5KAorICAgICAgICAgICAgICAgIEVxdWFsRWxlbWVudDxLPntr
ZXksIGVxX3JlZigpfSwKKyAgICAgICAgICAgICAgICBQb2xpY3lUcmFpdHM6OmVsZW1lbnQoc2xv
dHNfICsgc2VxLm9mZnNldChpKSkpKSkKKyAgICAgICAgICByZXR1cm4ge3NlcS5vZmZzZXQoaSks
IGZhbHNlfTsKKyAgICAgIH0KKyAgICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShnLk1hdGNoRW1w
dHkoKSkpIGJyZWFrOworICAgICAgc2VxLm5leHQoKTsKKyAgICB9CisgICAgcmV0dXJuIHtwcmVw
YXJlX2luc2VydChoYXNoKSwgdHJ1ZX07CisgIH0KKworICBzaXplX3QgcHJlcGFyZV9pbnNlcnQo
c2l6ZV90IGhhc2gpIEFCU0xfQVRUUklCVVRFX05PSU5MSU5FIHsKKyAgICBzaXplX3QgdGFyZ2V0
ID0gZmluZF9maXJzdF9ub25fZnVsbChoYXNoKTsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNF
KGdyb3d0aF9sZWZ0KCkgPT0gMCAmJiAhSXNEZWxldGVkKGN0cmxfW3RhcmdldF0pKSkgeworICAg
ICAgcmVoYXNoX2FuZF9ncm93X2lmX25lY2Vzc2FyeSgpOworICAgICAgdGFyZ2V0ID0gZmluZF9m
aXJzdF9ub25fZnVsbChoYXNoKTsKKyAgICB9CisgICAgKytzaXplXzsKKyAgICBncm93dGhfbGVm
dCgpIC09IElzRW1wdHkoY3RybF9bdGFyZ2V0XSk7CisgICAgc2V0X2N0cmwodGFyZ2V0LCBIMiho
YXNoKSk7CisgICAgcmV0dXJuIHRhcmdldDsKKyAgfQorCisgIC8vIENvbnN0cnVjdHMgdGhlIHZh
bHVlIGluIHRoZSBzcGFjZSBwb2ludGVkIGJ5IHRoZSBpdGVyYXRvci4gVGhpcyBvbmx5IHdvcmtz
CisgIC8vIGFmdGVyIGFuIHVuc3VjY2Vzc2Z1bCBmaW5kX29yX3ByZXBhcmVfaW5zZXJ0KCkgYW5k
IGJlZm9yZSBhbnkgb3RoZXIKKyAgLy8gbW9kaWZpY2F0aW9ucyBoYXBwZW4gaW4gdGhlIHJhd19o
YXNoX3NldC4KKyAgLy8KKyAgLy8gUFJFQ09ORElUSU9OOiBpIGlzIGFuIGluZGV4IHJldHVybmVk
IGZyb20gZmluZF9vcl9wcmVwYXJlX2luc2VydChrKSwgd2hlcmUKKyAgLy8gayBpcyB0aGUga2V5
IGRlY29tcG9zZWQgZnJvbSBgZm9yd2FyZDxBcmdzPihhcmdzKS4uLmAsIGFuZCB0aGUgYm9vbAor
ICAvLyByZXR1cm5lZCBieSBmaW5kX29yX3ByZXBhcmVfaW5zZXJ0KGspIHdhcyB0cnVlLgorICAv
LyBQT1NUQ09ORElUSU9OOiAqbS5pdGVyYXRvcl9hdChpKSA9PSB2YWx1ZV90eXBlKGZvcndhcmQ8
QXJncz4oYXJncykuLi4pLgorICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgdm9pZCBlbXBs
YWNlX2F0KHNpemVfdCBpLCBBcmdzJiYuLi4gYXJncykgeworICAgIFBvbGljeVRyYWl0czo6Y29u
c3RydWN0KCZhbGxvY19yZWYoKSwgc2xvdHNfICsgaSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworCisgICAgYXNzZXJ0KFBvbGljeVRy
YWl0czo6YXBwbHkoRmluZEVsZW1lbnR7KnRoaXN9LCAqaXRlcmF0b3JfYXQoaSkpID09CisgICAg
ICAgICAgICAgICBpdGVyYXRvcl9hdChpKSAmJgorICAgICAgICAgICAiY29uc3RydWN0ZWQgdmFs
dWUgZG9lcyBub3QgbWF0Y2ggdGhlIGxvb2t1cCBrZXkiKTsKKyAgfQorCisgIGl0ZXJhdG9yIGl0
ZXJhdG9yX2F0KHNpemVfdCBpKSB7IHJldHVybiB7Y3RybF8gKyBpLCBzbG90c18gKyBpfTsgfQor
ICBjb25zdF9pdGVyYXRvciBpdGVyYXRvcl9hdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4ge2N0
cmxfICsgaSwgc2xvdHNfICsgaX07IH0KKworIHByaXZhdGU6CisgIGZyaWVuZCBzdHJ1Y3QgUmF3
SGFzaFNldFRlc3RPbmx5QWNjZXNzOworCisgIHByb2JlX3NlcTxHcm91cDo6a1dpZHRoPiBwcm9i
ZShzaXplX3QgaGFzaCkgY29uc3QgeworICAgIHJldHVybiBwcm9iZV9zZXE8R3JvdXA6OmtXaWR0
aD4oSDEoaGFzaCwgY3RybF8pLCBjYXBhY2l0eV8pOworICB9CisKKyAgLy8gUmVzZXQgYWxsIGN0
cmwgYnl0ZXMgYmFjayB0byBrRW1wdHksIGV4Y2VwdCB0aGUgc2VudGluZWwuCisgIHZvaWQgcmVz
ZXRfY3RybCgpIHsKKyAgICBzdGQ6Om1lbXNldChjdHJsXywga0VtcHR5LCBjYXBhY2l0eV8gKyBH
cm91cDo6a1dpZHRoKTsKKyAgICBjdHJsX1tjYXBhY2l0eV9dID0ga1NlbnRpbmVsOworICAgIFNh
bml0aXplclBvaXNvbk1lbW9yeVJlZ2lvbihzbG90c18sIHNpemVvZihzbG90X3R5cGUpICogY2Fw
YWNpdHlfKTsKKyAgfQorCisgIC8vIFNldHMgdGhlIGNvbnRyb2wgYnl0ZSwgYW5kIGlmIGBpIDwg
R3JvdXA6OmtXaWR0aGAsIHNldCB0aGUgY2xvbmVkIGJ5dGUgYXQKKyAgLy8gdGhlIGVuZCB0b28u
CisgIHZvaWQgc2V0X2N0cmwoc2l6ZV90IGksIGN0cmxfdCBoKSB7CisgICAgYXNzZXJ0KGkgPCBj
YXBhY2l0eV8pOworCisgICAgaWYgKElzRnVsbChoKSkgeworICAgICAgU2FuaXRpemVyVW5wb2lz
b25PYmplY3Qoc2xvdHNfICsgaSk7CisgICAgfSBlbHNlIHsKKyAgICAgIFNhbml0aXplclBvaXNv
bk9iamVjdChzbG90c18gKyBpKTsKKyAgICB9CisKKyAgICBjdHJsX1tpXSA9IGg7CisgICAgY3Ry
bF9bKChpIC0gR3JvdXA6OmtXaWR0aCkgJiBjYXBhY2l0eV8pICsgR3JvdXA6OmtXaWR0aF0gPSBo
OworICB9CisKKyAgc2l6ZV90JiBncm93dGhfbGVmdCgpIHsgcmV0dXJuIHNldHRpbmdzXy50ZW1w
bGF0ZSBnZXQ8MD4oKTsgfQorCisgIGhhc2hlciYgaGFzaF9yZWYoKSB7IHJldHVybiBzZXR0aW5n
c18udGVtcGxhdGUgZ2V0PDE+KCk7IH0KKyAgY29uc3QgaGFzaGVyJiBoYXNoX3JlZigpIGNvbnN0
IHsgcmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8MT4oKTsgfQorICBrZXlfZXF1YWwmIGVx
X3JlZigpIHsgcmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8Mj4oKTsgfQorICBjb25zdCBr
ZXlfZXF1YWwmIGVxX3JlZigpIGNvbnN0IHsgcmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8
Mj4oKTsgfQorICBhbGxvY2F0b3JfdHlwZSYgYWxsb2NfcmVmKCkgeyByZXR1cm4gc2V0dGluZ3Nf
LnRlbXBsYXRlIGdldDwzPigpOyB9CisgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvY19yZWYo
KSBjb25zdCB7CisgICAgcmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8Mz4oKTsKKyAgfQor
CisgIC8vIE9uIGF2ZXJhZ2UgZWFjaCBncm91cCBoYXMgMiBlbXB0eSBzbG90IChmb3IgdGhlIHZl
Y3Rvcml6ZWQgY2FzZSkuCisgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBrTWF4TG9hZEZhY3Rv
ck51bWVyYXRvciA9IDE0OworICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qga01heExvYWRGYWN0
b3JEZW5vbWluYXRvciA9IDE2OworICBzdGF0aWMgY29uc3RleHByIGZsb2F0IGtNYXhMb2FkRmFj
dG9yID0KKyAgICAgIDEuMCAqIGtNYXhMb2FkRmFjdG9yTnVtZXJhdG9yIC8ga01heExvYWRGYWN0
b3JEZW5vbWluYXRvcjsKKworICAvLyBUT0RPKGFsa2lzKTogSW52ZXN0aWdhdGUgcmVtb3Zpbmcg
c29tZSBvZiB0aGVzZSBmaWVsZHM6CisgIC8vIC0gY3RybC9zbG90cyBjYW4gYmUgZGVyaXZlZCBm
cm9tIGVhY2ggb3RoZXIKKyAgLy8gLSBzaXplIGNhbiBiZSBtb3ZlZCBpbnRvIHRoZSBzbG90IGFy
cmF5CisgIGN0cmxfdCogY3RybF8gPSBFbXB0eUdyb3VwKCk7ICAgIC8vIFsoY2FwYWNpdHkgKyAx
KSAqIGN0cmxfdF0KKyAgc2xvdF90eXBlKiBzbG90c18gPSBudWxscHRyOyAgICAgLy8gW2NhcGFj
aXR5ICogc2xvdF90eXBlXQorICBzaXplX3Qgc2l6ZV8gPSAwOyAgICAgICAgICAgICAgICAvLyBu
dW1iZXIgb2YgZnVsbCBzbG90cworICBzaXplX3QgY2FwYWNpdHlfID0gMDsgICAgICAgICAgICAv
LyB0b3RhbCBudW1iZXIgb2Ygc2xvdHMKKyAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpDb21w
cmVzc2VkVHVwbGU8c2l6ZV90IC8qIGdyb3d0aF9sZWZ0ICovLCBoYXNoZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9lcXVhbCwgYWxsb2NhdG9yX3R5
cGU+CisgICAgICBzZXR0aW5nc197MCwgaGFzaGVye30sIGtleV9lcXVhbHt9LCBhbGxvY2F0b3Jf
dHlwZXt9fTsKK307CisKK25hbWVzcGFjZSBoYXNodGFibGVfZGVidWdfaW50ZXJuYWwgewordGVt
cGxhdGUgPHR5cGVuYW1lIFNldD4KK3N0cnVjdCBIYXNodGFibGVEZWJ1Z0FjY2VzczxTZXQsIGFi
c2w6OnZvaWRfdDx0eXBlbmFtZSBTZXQ6OnJhd19oYXNoX3NldD4+IHsKKyAgdXNpbmcgVHJhaXRz
ID0gdHlwZW5hbWUgU2V0OjpQb2xpY3lUcmFpdHM7CisgIHVzaW5nIFNsb3QgPSB0eXBlbmFtZSBU
cmFpdHM6OnNsb3RfdHlwZTsKKworICBzdGF0aWMgc2l6ZV90IEdldE51bVByb2Jlcyhjb25zdCBT
ZXQmIHNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZW5hbWUgU2V0
OjprZXlfdHlwZSYga2V5KSB7CisgICAgc2l6ZV90IG51bV9wcm9iZXMgPSAwOworICAgIHNpemVf
dCBoYXNoID0gc2V0Lmhhc2hfcmVmKCkoa2V5KTsKKyAgICBhdXRvIHNlcSA9IHNldC5wcm9iZSho
YXNoKTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgY29udGFpbmVyX2ludGVybmFsOjpHcm91
cCBne3NldC5jdHJsXyArIHNlcS5vZmZzZXQoKX07CisgICAgICBmb3IgKGludCBpIDogZy5NYXRj
aChjb250YWluZXJfaW50ZXJuYWw6OkgyKGhhc2gpKSkgeworICAgICAgICBpZiAoVHJhaXRzOjph
cHBseSgKKyAgICAgICAgICAgICAgICB0eXBlbmFtZSBTZXQ6OnRlbXBsYXRlIEVxdWFsRWxlbWVu
dDx0eXBlbmFtZSBTZXQ6OmtleV90eXBlPnsKKyAgICAgICAgICAgICAgICAgICAga2V5LCBzZXQu
ZXFfcmVmKCl9LAorICAgICAgICAgICAgICAgIFRyYWl0czo6ZWxlbWVudChzZXQuc2xvdHNfICsg
c2VxLm9mZnNldChpKSkpKQorICAgICAgICAgIHJldHVybiBudW1fcHJvYmVzOworICAgICAgICAr
K251bV9wcm9iZXM7CisgICAgICB9CisgICAgICBpZiAoZy5NYXRjaEVtcHR5KCkpIHJldHVybiBu
dW1fcHJvYmVzOworICAgICAgc2VxLm5leHQoKTsKKyAgICAgICsrbnVtX3Byb2JlczsKKyAgICB9
CisgIH0KKworICBzdGF0aWMgc2l6ZV90IEFsbG9jYXRlZEJ5dGVTaXplKGNvbnN0IFNldCYgYykg
eworICAgIHNpemVfdCBjYXBhY2l0eSA9IGMuY2FwYWNpdHlfOworICAgIGlmIChjYXBhY2l0eSA9
PSAwKSByZXR1cm4gMDsKKyAgICBhdXRvIGxheW91dCA9IFNldDo6TWFrZUxheW91dChjYXBhY2l0
eSk7CisgICAgc2l6ZV90IG0gPSBsYXlvdXQuQWxsb2NTaXplKCk7CisKKyAgICBzaXplX3QgcGVy
X3Nsb3QgPSBUcmFpdHM6OnNwYWNlX3VzZWQoc3RhdGljX2Nhc3Q8Y29uc3QgU2xvdCo+KG51bGxw
dHIpKTsKKyAgICBpZiAocGVyX3Nsb3QgIT0gfnNpemVfdHt9KSB7CisgICAgICBtICs9IHBlcl9z
bG90ICogYy5zaXplKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IGNhcGFjaXR5OyArK2kpIHsKKyAgICAgICAgaWYgKGNvbnRhaW5lcl9pbnRlcm5hbDo6SXNG
dWxsKGMuY3RybF9baV0pKSB7CisgICAgICAgICAgbSArPSBUcmFpdHM6OnNwYWNlX3VzZWQoYy5z
bG90c18gKyBpKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbTsKKyAg
fQorCisgIHN0YXRpYyBzaXplX3QgTG93ZXJCb3VuZEFsbG9jYXRlZEJ5dGVTaXplKHNpemVfdCBz
aXplKSB7CisgICAgc2l6ZV90IGNhcGFjaXR5ID0gY29udGFpbmVyX2ludGVybmFsOjpOb3JtYWxp
emVDYXBhY2l0eSgKKyAgICAgICAgc3RkOjpjZWlsKHNpemUgLyBTZXQ6OmtNYXhMb2FkRmFjdG9y
KSk7CisgICAgaWYgKGNhcGFjaXR5ID09IDApIHJldHVybiAwOworICAgIGF1dG8gbGF5b3V0ID0g
U2V0OjpNYWtlTGF5b3V0KGNhcGFjaXR5KTsKKyAgICBzaXplX3QgbSA9IGxheW91dC5BbGxvY1Np
emUoKTsKKyAgICBzaXplX3QgcGVyX3Nsb3QgPSBUcmFpdHM6OnNwYWNlX3VzZWQoc3RhdGljX2Nh
c3Q8Y29uc3QgU2xvdCo+KG51bGxwdHIpKTsKKyAgICBpZiAocGVyX3Nsb3QgIT0gfnNpemVfdHt9
KSB7CisgICAgICBtICs9IHBlcl9zbG90ICogc2l6ZTsKKyAgICB9CisgICAgcmV0dXJuIG07Cisg
IH0KK307CisKK30gIC8vIG5hbWVzcGFjZSBoYXNodGFibGVfZGVidWdfaW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNl
bmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfUkFXX0hBU0hfU0VUX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldF9hbGxvY2F0b3JfdGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44OTFmYTQ1MGZlMDhjMjIzZTIwMmI1OGZjMzhhMDJiOGJmNzc4MjJi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3Nl
dF9hbGxvY2F0b3JfdGVzdC5jYwpAQCAtMCwwICsxLDQyOCBAQAorLy8gQ29weXJpZ2h0IDIwMTgg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzY29w
ZWRfYWxsb2NhdG9yPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC90cmFja2VkLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBj
b250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworZW51bSBBbGxvY1NwZWMgeworICBr
UHJvcGFnYXRlT25Db3B5ID0gMSwKKyAga1Byb3BhZ2F0ZU9uTW92ZSA9IDIsCisgIGtQcm9wYWdh
dGVPblN3YXAgPSA0LAorfTsKKworc3RydWN0IEFsbG9jU3RhdGUgeworICBzaXplX3QgbnVtX2Fs
bG9jcyA9IDA7CisgIHN0ZDo6c2V0PHZvaWQqPiBvd25lZDsKK307CisKK3RlbXBsYXRlIDxjbGFz
cyBULAorICAgICAgICAgIGludCBTcGVjID0ga1Byb3BhZ2F0ZU9uQ29weSB8IGtQcm9wYWdhdGVP
bk1vdmUgfCBrUHJvcGFnYXRlT25Td2FwPgorY2xhc3MgQ2hlY2tlZEFsbG9jIHsKKyBwdWJsaWM6
CisgIHRlbXBsYXRlIDxjbGFzcywgaW50PgorICBmcmllbmQgY2xhc3MgQ2hlY2tlZEFsbG9jOwor
CisgIHVzaW5nIHZhbHVlX3R5cGUgPSBUOworCisgIENoZWNrZWRBbGxvYygpIHt9CisgIGV4cGxp
Y2l0IENoZWNrZWRBbGxvYyhzaXplX3QgaWQpIDogaWRfKGlkKSB7fQorICBDaGVja2VkQWxsb2Mo
Y29uc3QgQ2hlY2tlZEFsbG9jJikgPSBkZWZhdWx0OworICBDaGVja2VkQWxsb2MmIG9wZXJhdG9y
PShjb25zdCBDaGVja2VkQWxsb2MmKSA9IGRlZmF1bHQ7CisKKyAgdGVtcGxhdGUgPGNsYXNzIFU+
CisgIENoZWNrZWRBbGxvYyhjb25zdCBDaGVja2VkQWxsb2M8VSwgU3BlYz4mIHRoYXQpCisgICAg
ICA6IGlkXyh0aGF0LmlkXyksIHN0YXRlXyh0aGF0LnN0YXRlXykge30KKworICB0ZW1wbGF0ZSA8
Y2xhc3MgVT4KKyAgc3RydWN0IHJlYmluZCB7CisgICAgdXNpbmcgb3RoZXIgPSBDaGVja2VkQWxs
b2M8VSwgU3BlYz47CisgIH07CisKKyAgdXNpbmcgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5
X2Fzc2lnbm1lbnQgPQorICAgICAgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAoU3BlYyAm
IGtQcm9wYWdhdGVPbkNvcHkpICE9IDA+OworCisgIHVzaW5nIHByb3BhZ2F0ZV9vbl9jb250YWlu
ZXJfbW92ZV9hc3NpZ25tZW50ID0KKyAgICAgIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwg
KFNwZWMgJiBrUHJvcGFnYXRlT25Nb3ZlKSAhPSAwPjsKKworICB1c2luZyBwcm9wYWdhdGVfb25f
Y29udGFpbmVyX3N3YXAgPQorICAgICAgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAoU3Bl
YyAmIGtQcm9wYWdhdGVPblN3YXApICE9IDA+OworCisgIENoZWNrZWRBbGxvYyBzZWxlY3Rfb25f
Y29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKCkgY29uc3QgeworICAgIGlmIChTcGVjICYga1By
b3BhZ2F0ZU9uQ29weSkgcmV0dXJuICp0aGlzOworICAgIHJldHVybiB7fTsKKyAgfQorCisgIFQq
IGFsbG9jYXRlKHNpemVfdCBuKSB7CisgICAgVCogcHRyID0gc3RkOjphbGxvY2F0b3I8VD4oKS5h
bGxvY2F0ZShuKTsKKyAgICB0cmFja19hbGxvYyhwdHIpOworICAgIHJldHVybiBwdHI7CisgIH0K
KyAgdm9pZCBkZWFsbG9jYXRlKFQqIHB0ciwgc2l6ZV90IG4pIHsKKyAgICBtZW1zZXQocHRyLCAw
LCBuICogc2l6ZW9mKFQpKTsgIC8vIFRoZSBmcmVlZCBtZW1vcnkgbXVzdCBiZSB1bnBvaXNvbmVk
LgorICAgIHRyYWNrX2RlYWxsb2MocHRyKTsKKyAgICByZXR1cm4gc3RkOjphbGxvY2F0b3I8VD4o
KS5kZWFsbG9jYXRlKHB0ciwgbik7CisgIH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IENoZWNrZWRBbGxvYyYgYSwgY29uc3QgQ2hlY2tlZEFsbG9jJiBiKSB7CisgICAgcmV0dXJu
IGEuaWRfID09IGIuaWRfOworICB9CisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2hl
Y2tlZEFsbG9jJiBhLCBjb25zdCBDaGVja2VkQWxsb2MmIGIpIHsKKyAgICByZXR1cm4gIShhID09
IGIpOworICB9CisKKyAgc2l6ZV90IG51bV9hbGxvY3MoKSBjb25zdCB7IHJldHVybiBzdGF0ZV8t
Pm51bV9hbGxvY3M7IH0KKworICB2b2lkIHN3YXAoQ2hlY2tlZEFsbG9jJiB0aGF0KSB7CisgICAg
dXNpbmcgc3RkOjpzd2FwOworICAgIHN3YXAoaWRfLCB0aGF0LmlkXyk7CisgICAgc3dhcChzdGF0
ZV8sIHRoYXQuc3RhdGVfKTsKKyAgfQorCisgIGZyaWVuZCB2b2lkIHN3YXAoQ2hlY2tlZEFsbG9j
JiBhLCBDaGVja2VkQWxsb2MmIGIpIHsgYS5zd2FwKGIpOyB9CisKKyAgZnJpZW5kIHN0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG8sIGNvbnN0IENoZWNrZWRBbGxvYyYgYSkg
eworICAgIHJldHVybiBvIDw8ICJhbGxvYygiIDw8IGEuaWRfIDw8ICIpIjsKKyAgfQorCisgcHJp
dmF0ZToKKyAgdm9pZCB0cmFja19hbGxvYyh2b2lkKiBwdHIpIHsKKyAgICBBbGxvY1N0YXRlKiBz
dGF0ZSA9IHN0YXRlXy5nZXQoKTsKKyAgICArK3N0YXRlLT5udW1fYWxsb2NzOworICAgIGlmICgh
c3RhdGUtPm93bmVkLmluc2VydChwdHIpLnNlY29uZCkKKyAgICAgIEFERF9GQUlMVVJFKCkgPDwg
KnRoaXMgPDwgIiBnb3QgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5OiAiIDw8IHB0cjsKKyAg
fQorICB2b2lkIHRyYWNrX2RlYWxsb2Modm9pZCogcHRyKSB7CisgICAgaWYgKHN0YXRlXy0+b3du
ZWQuZXJhc2UocHRyKSAhPSAxKQorICAgICAgQUREX0ZBSUxVUkUoKSA8PCAqdGhpcworICAgICAg
ICAgICAgICAgICAgICA8PCAiIGRlbGV0aW5nIG1lbW9yeSBvd25lZCBieSBhbm90aGVyIGFsbG9j
YXRvcjogIiA8PCBwdHI7CisgIH0KKworICBzaXplX3QgaWRfID0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKTsKKworICBzdGQ6OnNoYXJlZF9wdHI8QWxsb2NTdGF0ZT4gc3RhdGVf
ID0gc3RkOjptYWtlX3NoYXJlZDxBbGxvY1N0YXRlPigpOworfTsKKworc3RydWN0IElkZW50aXR5
IHsKKyAgaW50MzJfdCBvcGVyYXRvcigpKGludDMyX3QgdikgY29uc3QgeyByZXR1cm4gdjsgfQor
fTsKKworc3RydWN0IFBvbGljeSB7CisgIHVzaW5nIHNsb3RfdHlwZSA9IFRyYWNrZWQ8aW50MzJf
dD47CisgIHVzaW5nIGluaXRfdHlwZSA9IFRyYWNrZWQ8aW50MzJfdD47CisgIHVzaW5nIGtleV90
eXBlID0gaW50MzJfdDsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgYWxsb2NhdG9yX3R5cGUsIGNsYXNz
Li4uIEFyZ3M+CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChhbGxvY2F0b3JfdHlwZSogYWxsb2Ms
IHNsb3RfdHlwZSogc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3MmJi4uLiBhcmdz
KSB7CisgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcl90eXBlPjo6Y29uc3RydWN0
KAorICAgICAgICAqYWxsb2MsIHNsb3QsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cisg
IH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgYWxsb2NhdG9yX3R5cGU+CisgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koYWxsb2NhdG9yX3R5cGUqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QpIHsKKyAgICBzdGQ6
OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yX3R5cGU+OjpkZXN0cm95KCphbGxvYywgc2xvdCk7
CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgYWxsb2NhdG9yX3R5cGU+CisgIHN0YXRpYyB2b2lk
IHRyYW5zZmVyKGFsbG9jYXRvcl90eXBlKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgc2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAgIGNvbnN0cnVj
dChhbGxvYywgbmV3X3Nsb3QsIHN0ZDo6bW92ZSgqb2xkX3Nsb3QpKTsKKyAgICBkZXN0cm95KGFs
bG9jLCBvbGRfc2xvdCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgRj4KKyAgc3RhdGljIGF1
dG8gYXBwbHkoRiYmIGYsIGludDMyX3QgdikgLT4gZGVjbHR5cGUoc3RkOjpmb3J3YXJkPEY+KGYp
KHYsIHYpKSB7CisgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihmKSh2LCB2KTsKKyAgfQorCisg
IHRlbXBsYXRlIDxjbGFzcyBGPgorICBzdGF0aWMgYXV0byBhcHBseShGJiYgZiwgY29uc3Qgc2xv
dF90eXBlJiB2KQorICAgICAgLT4gZGVjbHR5cGUoc3RkOjpmb3J3YXJkPEY+KGYpKHYudmFsKCks
IHYpKSB7CisgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihmKSh2LnZhbCgpLCB2KTsKKyAgfQor
CisgIHRlbXBsYXRlIDxjbGFzcyBGPgorICBzdGF0aWMgYXV0byBhcHBseShGJiYgZiwgc2xvdF90
eXBlJiYgdikKKyAgICAgIC0+IGRlY2x0eXBlKHN0ZDo6Zm9yd2FyZDxGPihmKSh2LnZhbCgpLCBz
dGQ6Om1vdmUodikpKSB7CisgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihmKSh2LnZhbCgpLCBz
dGQ6Om1vdmUodikpOworICB9CisKKyAgc3RhdGljIHNsb3RfdHlwZSYgZWxlbWVudChzbG90X3R5
cGUqIHNsb3QpIHsgcmV0dXJuICpzbG90OyB9Cit9OworCit0ZW1wbGF0ZSA8aW50IFNwZWM+Citz
dHJ1Y3QgUHJvcGFnYXRlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICB1c2luZyBB
bGxvYyA9IENoZWNrZWRBbGxvYzxUcmFja2VkPGludDMyX3Q+LCBTcGVjPjsKKworICB1c2luZyBU
YWJsZSA9IHJhd19oYXNoX3NldDxQb2xpY3ksIElkZW50aXR5LCBzdGQ6OmVxdWFsX3RvPGludDMy
X3Q+LCBBbGxvYz47CisKKyAgUHJvcGFnYXRlVGVzdCgpIHsKKyAgICBFWFBFQ1RfRVEoYTEsIHQx
LmdldF9hbGxvY2F0b3IoKSk7CisgICAgRVhQRUNUX05FKGEyLCB0MS5nZXRfYWxsb2NhdG9yKCkp
OworICB9CisKKyAgQWxsb2MgYTEgPSBBbGxvYygxKTsKKyAgVGFibGUgdDEgPSBUYWJsZSgwLCBh
MSk7CisgIEFsbG9jIGEyID0gQWxsb2MoMik7Cit9OworCit1c2luZyBQcm9wYWdhdGVPbkFsbCA9
CisgICAgUHJvcGFnYXRlVGVzdDxrUHJvcGFnYXRlT25Db3B5IHwga1Byb3BhZ2F0ZU9uTW92ZSB8
IGtQcm9wYWdhdGVPblN3YXA+OwordXNpbmcgTm9Qcm9wYWdhdGVPbkNvcHkgPSBQcm9wYWdhdGVU
ZXN0PGtQcm9wYWdhdGVPbk1vdmUgfCBrUHJvcGFnYXRlT25Td2FwPjsKK3VzaW5nIE5vUHJvcGFn
YXRlT25Nb3ZlID0gUHJvcGFnYXRlVGVzdDxrUHJvcGFnYXRlT25Db3B5IHwga1Byb3BhZ2F0ZU9u
U3dhcD47CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgRW1wdHkpIHsgRVhQRUNUX0VRKDAsIGEx
Lm51bV9hbGxvY3MoKSk7IH0KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBJbnNlcnRBbGxvY2F0
ZXMpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgRVhQRUNUX0VRKDEsIGEx
Lm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBF
Q1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwg
SW5zZXJ0RGVjb21wb3NlcykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBF
WFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92
ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX2NvcGllcygpKTsKKworICBFWFBFQ1RfRkFM
U0UodDEuaW5zZXJ0KDApLnNlY29uZCk7CisgIEVYUEVDVF9FUSgxLCBhMS5udW1fYWxsb2NzKCkp
OworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5u
dW1fY29waWVzKCkpOworfQorCitURVNUX0YoUHJvcGFnYXRlT25BbGwsIFJlaGFzaE1vdmVzKSB7
CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVt
X21vdmVzKCkpOworICB0MS5yZWhhc2goMiAqIHQxLmNhcGFjaXR5KCkpOworICBFWFBFQ1RfRVEo
MiwgYTEubnVtX2FsbG9jcygpKTsKKyAgaXQgPSB0MS5maW5kKDApOworICBFWFBFQ1RfRVEoMSwg
aXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkpOworfQor
CitURVNUX0YoUHJvcGFnYXRlT25BbGwsIENvcHlDb25zdHJ1Y3RvcikgeworICBhdXRvIGl0ID0g
dDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KHQxKTsKKyAgRVhQRUNUX0VRKDIsIGExLm51
bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1Rf
RVEoMSwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihOb1Byb3BhZ2F0ZU9uQ29weSwg
Q29weUNvbnN0cnVjdG9yKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRh
YmxlIHUodDEpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VR
KDEsIHUuZ2V0X2FsbG9jYXRvcigpLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+
bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMSwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RF
U1RfRihQcm9wYWdhdGVPbkFsbCwgQ29weUNvbnN0cnVjdG9yV2l0aFNhbWVBbGxvYykgeworICBh
dXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KHQxLCBhMSk7CisgIEVYUEVD
VF9FUSgyLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3Zlcygp
KTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoTm9Qcm9w
YWdhdGVPbkNvcHksIENvcHlDb25zdHJ1Y3RvcldpdGhTYW1lQWxsb2MpIHsKKyAgYXV0byBpdCA9
IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdSh0MSwgYTEpOworICBFWFBFQ1RfRVEoMiwg
YTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVY
UEVDVF9FUSgxLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxs
LCBDb3B5Q29uc3RydWN0b3JXaXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmlu
c2VydCgwKS5maXJzdDsKKyAgVGFibGUgdSh0MSwgYTIpOworICBFWFBFQ1RfRVEoYTIsIHUuZ2V0
X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVD
VF9FUSgxLCBhMi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3Zlcygp
KTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoTm9Qcm9w
YWdhdGVPbkNvcHksIENvcHlDb25zdHJ1Y3RvcldpdGhEaWZmZXJlbnRBbGxvYykgeworICBhdXRv
IGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KHQxLCBhMik7CisgIEVYUEVDVF9F
UShhMiwgdS5nZXRfYWxsb2NhdG9yKCkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygp
KTsKKyAgRVhQRUNUX0VRKDEsIGEyLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+
bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMSwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RF
U1RfRihQcm9wYWdhdGVPbkFsbCwgTW92ZUNvbnN0cnVjdG9yKSB7CisgIGF1dG8gaXQgPSB0MS5p
bnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUoc3RkOjptb3ZlKHQxKSk7CisgIEVYUEVDVF9FUSgx
LCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAg
RVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVP
bk1vdmUsIE1vdmVDb25zdHJ1Y3RvcikgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0
OworICBUYWJsZSB1KHN0ZDo6bW92ZSh0MSkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9j
cygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBp
dC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBNb3ZlQ29uc3Ry
dWN0b3JXaXRoU2FtZUFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7Cisg
IFRhYmxlIHUoc3RkOjptb3ZlKHQxKSwgYTEpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9j
cygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBp
dC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRlT25Nb3ZlLCBNb3ZlQ29u
c3RydWN0b3JXaXRoU2FtZUFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7
CisgIFRhYmxlIHUoc3RkOjptb3ZlKHQxKSwgYTEpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2Fs
bG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgw
LCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBNb3ZlQ29u
c3RydWN0b3JXaXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5m
aXJzdDsKKyAgVGFibGUgdShzdGQ6Om1vdmUodDEpLCBhMik7CisgIGl0ID0gdS5maW5kKDApOwor
ICBFWFBFQ1RfRVEoYTIsIHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51
bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgxLCBhMi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1Rf
RVEoMSwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkp
OworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVPbk1vdmUsIE1vdmVDb25zdHJ1Y3RvcldpdGhEaWZm
ZXJlbnRBbGxvYykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1
KHN0ZDo6bW92ZSh0MSksIGEyKTsKKyAgaXQgPSB1LmZpbmQoMCk7CisgIEVYUEVDVF9FUShhMiwg
dS5nZXRfYWxsb2NhdG9yKCkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAg
RVhQRUNUX0VRKDEsIGEyLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+bnVtX21v
dmVzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQ
cm9wYWdhdGVPbkFsbCwgQ29weUFzc2lnbm1lbnRXaXRoU2FtZUFsbG9jKSB7CisgIGF1dG8gaXQg
PSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUoMCwgYTEpOworICB1ID0gdDE7CisgIEVY
UEVDVF9FUSgyLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3Zl
cygpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoTm9Q
cm9wYWdhdGVPbkNvcHksIENvcHlBc3NpZ25tZW50V2l0aFNhbWVBbGxvYykgeworICBhdXRvIGl0
ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KDAsIGExKTsKKyAgdSA9IHQxOworICBF
WFBFQ1RfRVEoMiwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92
ZXMoKSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKFBy
b3BhZ2F0ZU9uQWxsLCBDb3B5QXNzaWdubWVudFdpdGhEaWZmZXJlbnRBbGxvYykgeworICBhdXRv
IGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KDAsIGEyKTsKKyAgdSA9IHQxOwor
ICBFWFBFQ1RfRVEoYTEsIHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKDIsIGExLm51
bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBhMi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1Rf
RVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkp
OworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVPbkNvcHksIENvcHlBc3NpZ25tZW50V2l0aERpZmZl
cmVudEFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUo
MCwgYTIpOworICB1ID0gdDE7CisgIEVYUEVDVF9FUShhMiwgdS5nZXRfYWxsb2NhdG9yKCkpOwor
ICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDEsIGEyLm51bV9h
bGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEo
MSwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgTW92ZUFz
c2lnbm1lbnRXaXRoU2FtZUFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7
CisgIFRhYmxlIHUoMCwgYTEpOworICB1ID0gc3RkOjptb3ZlKHQxKTsKKyAgRVhQRUNUX0VRKGEx
LCB1LmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVDVF9FUSgxLCBhMS5udW1fYWxsb2NzKCkpOwor
ICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1f
Y29waWVzKCkpOworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVPbk1vdmUsIE1vdmVBc3NpZ25tZW50
V2l0aFNhbWVBbGxvYykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJs
ZSB1KDAsIGExKTsKKyAgdSA9IHN0ZDo6bW92ZSh0MSk7CisgIEVYUEVDVF9FUShhMSwgdS5nZXRf
YWxsb2NhdG9yKCkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNU
X0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX2NvcGllcygp
KTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBNb3ZlQXNzaWdubWVudFdpdGhEaWZmZXJl
bnRBbGxvYykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KDAs
IGEyKTsKKyAgdSA9IHN0ZDo6bW92ZSh0MSk7CisgIEVYUEVDVF9FUShhMSwgdS5nZXRfYWxsb2Nh
dG9yKCkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAs
IGEyLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBF
WFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihOb1Byb3BhZ2F0ZU9u
TW92ZSwgTW92ZUFzc2lnbm1lbnRXaXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9IHQx
Lmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdSgwLCBhMik7CisgIHUgPSBzdGQ6Om1vdmUodDEp
OworICBpdCA9IHUuZmluZCgwKTsKKyAgRVhQRUNUX0VRKGEyLCB1LmdldF9hbGxvY2F0b3IoKSk7
CisgIEVYUEVDVF9FUSgxLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMSwgYTIubnVt
X2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9F
USgwLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBTd2Fw
KSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUoMCwgYTIpOwor
ICB1LnN3YXAodDEpOworICBFWFBFQ1RfRVEoYTEsIHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQ
RUNUX0VRKGEyLCB0MS5nZXRfYWxsb2NhdG9yKCkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2Fs
bG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGEyLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgw
LCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAor
fSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9yYXdfaGFzaF9zZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFz
aF9zZXRfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDMzYTNhY2I5MTc4ODg4ODU1ZmY5MWRlOTQxNDY5
MzRjODM3NTU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jh
d19oYXNoX3NldF90ZXN0LmNjCkBAIC0wLDAgKzEsMTk2MSBAQAorLy8gQ29weXJpZ2h0IDIwMTgg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L3Jhd19oYXNoX3NldC5oIgorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Y21hdGg+Cisj
aW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxmdW5jdGlvbmFs
PgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxudW1lcmljPgorI2luY2x1ZGUgPHJhbmRv
bT4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKKyNp
bmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvY3ljbGVjbG9jay5oIgorI2luY2x1ZGUgImFic2wv
YmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lu
dGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL2hhc2h0YWJsZV9kZWJ1Zy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJp
bmdfdmlldy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVy
bmFsIHsKKworc3RydWN0IFJhd0hhc2hTZXRUZXN0T25seUFjY2VzcyB7CisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBDPgorICBzdGF0aWMgYXV0byBHZXRTbG90cyhjb25zdCBDJiBjKSAtPiBkZWNsdHlw
ZShjLnNsb3RzXykgeworICAgIHJldHVybiBjLnNsb3RzXzsKKyAgfQorfTsKKworbmFtZXNwYWNl
IHsKKwordXNpbmcgOjp0ZXN0aW5nOjpEb3VibGVOZWFyOwordXNpbmcgOjp0ZXN0aW5nOjpFbGVt
ZW50c0FyZTsKK3VzaW5nIDo6dGVzdGluZzo6T3B0aW9uYWw7Cit1c2luZyA6OnRlc3Rpbmc6OlBh
aXI7Cit1c2luZyA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlOworCitURVNUKFV0aWws
IE5vcm1hbGl6ZUNhcGFjaXR5KSB7CisgIGNvbnN0ZXhwciBzaXplX3Qga01pbkNhcGFjaXR5ID0g
R3JvdXA6OmtXaWR0aCAtIDE7CisgIEVYUEVDVF9FUShrTWluQ2FwYWNpdHksIE5vcm1hbGl6ZUNh
cGFjaXR5KDApKTsKKyAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSwgTm9ybWFsaXplQ2FwYWNpdHko
MSkpOworICBFWFBFQ1RfRVEoa01pbkNhcGFjaXR5LCBOb3JtYWxpemVDYXBhY2l0eSgyKSk7Cisg
IEVYUEVDVF9FUShrTWluQ2FwYWNpdHksIE5vcm1hbGl6ZUNhcGFjaXR5KGtNaW5DYXBhY2l0eSkp
OworICBFWFBFQ1RfRVEoa01pbkNhcGFjaXR5ICogMiArIDEsIE5vcm1hbGl6ZUNhcGFjaXR5KGtN
aW5DYXBhY2l0eSArIDEpKTsKKyAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSAqIDIgKyAxLCBOb3Jt
YWxpemVDYXBhY2l0eShrTWluQ2FwYWNpdHkgKyAyKSk7Cit9CisKK1RFU1QoVXRpbCwgcHJvYmVf
c2VxKSB7CisgIHByb2JlX3NlcTwxNj4gc2VxKDAsIDEyNyk7CisgIGF1dG8gZ2VuID0gWyZdKCkg
eworICAgIHNpemVfdCByZXMgPSBzZXEub2Zmc2V0KCk7CisgICAgc2VxLm5leHQoKTsKKyAgICBy
ZXR1cm4gcmVzOworICB9OworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IG9mZnNldHMoOCk7CisgIHN0
ZDo6Z2VuZXJhdGVfbihvZmZzZXRzLmJlZ2luKCksIDgsIGdlbik7CisgIEVYUEVDVF9USEFUKG9m
ZnNldHMsIEVsZW1lbnRzQXJlKDAsIDE2LCA0OCwgOTYsIDMyLCAxMTIsIDgwLCA2NCkpOworICBz
ZXEgPSBwcm9iZV9zZXE8MTY+KDEyOCwgMTI3KTsKKyAgc3RkOjpnZW5lcmF0ZV9uKG9mZnNldHMu
YmVnaW4oKSwgOCwgZ2VuKTsKKyAgRVhQRUNUX1RIQVQob2Zmc2V0cywgRWxlbWVudHNBcmUoMCwg
MTYsIDQ4LCA5NiwgMzIsIDExMiwgODAsIDY0KSk7Cit9CisKK1RFU1QoQml0TWFzaywgU21va2Up
IHsKKyAgRVhQRUNUX0ZBTFNFKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDApKSk7CisgIEVYUEVDVF9U
UlVFKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDUpKSk7CisKKyAgRVhQRUNUX1RIQVQoKEJpdE1hc2s8
dWludDhfdCwgOD4oMCkpLCBFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX1RIQVQoKEJpdE1hc2s8
dWludDhfdCwgOD4oMHgxKSksIEVsZW1lbnRzQXJlKDApKTsKKyAgRVhQRUNUX1RIQVQoKEJpdE1h
c2s8dWludDhfdCwgOD4oMHgyKSksIEVsZW1lbnRzQXJlKDEpKTsKKyAgRVhQRUNUX1RIQVQoKEJp
dE1hc2s8dWludDhfdCwgOD4oMHgzKSksIEVsZW1lbnRzQXJlKDAsIDEpKTsKKyAgRVhQRUNUX1RI
QVQoKEJpdE1hc2s8dWludDhfdCwgOD4oMHg0KSksIEVsZW1lbnRzQXJlKDIpKTsKKyAgRVhQRUNU
X1RIQVQoKEJpdE1hc2s8dWludDhfdCwgOD4oMHg1KSksIEVsZW1lbnRzQXJlKDAsIDIpKTsKKyAg
RVhQRUNUX1RIQVQoKEJpdE1hc2s8dWludDhfdCwgOD4oMHg1NSkpLCBFbGVtZW50c0FyZSgwLCAy
LCA0LCA2KSk7CisgIEVYUEVDVF9USEFUKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDB4QUEpKSwgRWxl
bWVudHNBcmUoMSwgMywgNSwgNykpOworfQorCitURVNUKEJpdE1hc2ssIFdpdGhTaGlmdCkgewor
ICAvLyBTZWUgdGhlIG5vbi1TU0UgdmVyc2lvbiBvZiBHcm91cCBmb3IgZGV0YWlscyBvbiB3aGF0
IHRoaXMgbWF0aCBpcyBmb3IuCisgIHVpbnQ2NF90IGN0cmwgPSAweDE3MTYxNTE0MTMxMjExMTA7
CisgIHVpbnQ2NF90IGhhc2ggPSAweDEyOworICBjb25zdGV4cHIgdWludDY0X3QgbXNicyA9IDB4
ODA4MDgwODA4MDgwODA4MFVMTDsKKyAgY29uc3RleHByIHVpbnQ2NF90IGxzYnMgPSAweDAxMDEw
MTAxMDEwMTAxMDFVTEw7CisgIGF1dG8geCA9IGN0cmwgXiAobHNicyAqIGhhc2gpOworICB1aW50
NjRfdCBtYXNrID0gKHggLSBsc2JzKSAmIH54ICYgbXNiczsKKyAgRVhQRUNUX0VRKDB4MDAwMDAw
MDA4MDgwMDAwMCwgbWFzayk7CisKKyAgQml0TWFzazx1aW50NjRfdCwgOCwgMz4gYihtYXNrKTsK
KyAgRVhQRUNUX0VRKCpiLCAyKTsKK30KKworVEVTVChCaXRNYXNrLCBMZWFkaW5nVHJhaWxpbmcp
IHsKKyAgRVhQRUNUX0VRKChCaXRNYXNrPHVpbnQzMl90LCAxNj4oMGIwMDAxMTAxMDAxMDAwMDAw
KS5MZWFkaW5nWmVyb3MoKSksIDMpOworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMyX3QsIDE2
PigwYjAwMDExMDEwMDEwMDAwMDApLlRyYWlsaW5nWmVyb3MoKSksIDYpOworCisgIEVYUEVDVF9F
USgoQml0TWFzazx1aW50MzJfdCwgMTY+KDBiMDAwMDAwMDAwMDAwMDAwMSkuTGVhZGluZ1plcm9z
KCkpLCAxNSk7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDBiMDAwMDAwMDAw
MDAwMDAwMSkuVHJhaWxpbmdaZXJvcygpKSwgMCk7CisKKyAgRVhQRUNUX0VRKChCaXRNYXNrPHVp
bnQzMl90LCAxNj4oMGIxMDAwMDAwMDAwMDAwMDAwKS5MZWFkaW5nWmVyb3MoKSksIDApOworICBF
WFBFQ1RfRVEoKEJpdE1hc2s8dWludDMyX3QsIDE2PigwYjEwMDAwMDAwMDAwMDAwMDApLlRyYWls
aW5nWmVyb3MoKSksIDE1KTsKKworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDY0X3QsIDgsIDM+
KDB4MDAwMDAwODA4MDgwODAwMCkuTGVhZGluZ1plcm9zKCkpLCAzKTsKKyAgRVhQRUNUX0VRKChC
aXRNYXNrPHVpbnQ2NF90LCA4LCAzPigweDAwMDAwMDgwODA4MDgwMDApLlRyYWlsaW5nWmVyb3Mo
KSksIDEpOworCisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50NjRfdCwgOCwgMz4oMHgwMDAwMDAw
MDAwMDAwMDgwKS5MZWFkaW5nWmVyb3MoKSksIDcpOworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWlu
dDY0X3QsIDgsIDM+KDB4MDAwMDAwMDAwMDAwMDA4MCkuVHJhaWxpbmdaZXJvcygpKSwgMCk7CisK
KyAgRVhQRUNUX0VRKChCaXRNYXNrPHVpbnQ2NF90LCA4LCAzPigweDgwMDAwMDAwMDAwMDAwMDAp
LkxlYWRpbmdaZXJvcygpKSwgMCk7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50NjRfdCwgOCwg
Mz4oMHg4MDAwMDAwMDAwMDAwMDAwKS5UcmFpbGluZ1plcm9zKCkpLCA3KTsKK30KKworVEVTVChH
cm91cCwgRW1wdHlHcm91cCkgeworICBmb3IgKGgyX3QgaCA9IDA7IGggIT0gMTI4OyArK2gpIEVY
UEVDVF9GQUxTRShHcm91cHtFbXB0eUdyb3VwKCl9Lk1hdGNoKGgpKTsKK30KKworI2lmIFNXSVNT
VEFCTEVfSEFWRV9TU0UyCitURVNUKEdyb3VwLCBNYXRjaCkgeworICBjdHJsX3QgZ3JvdXBbXSA9
IHtrRW1wdHksIDEsIGtEZWxldGVkLCAzLCBrRW1wdHksIDUsIGtTZW50aW5lbCwgNywKKyAgICAg
ICAgICAgICAgICAgICAgNywgICAgICA1LCAzLCAgICAgICAgMSwgMSwgICAgICAxLCAxLCAgICAg
ICAgIDF9OworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMCksIEVsZW1lbnRzQXJl
KCkpOworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMSksIEVsZW1lbnRzQXJlKDEs
IDExLCAxMiwgMTMsIDE0LCAxNSkpOworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2go
MyksIEVsZW1lbnRzQXJlKDMsIDEwKSk7CisgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRj
aCg1KSwgRWxlbWVudHNBcmUoNSwgOSkpOworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0
Y2goNyksIEVsZW1lbnRzQXJlKDcsIDgpKTsKK30KKworVEVTVChHcm91cCwgTWF0Y2hFbXB0eSkg
eworICBjdHJsX3QgZ3JvdXBbXSA9IHtrRW1wdHksIDEsIGtEZWxldGVkLCAzLCBrRW1wdHksIDUs
IGtTZW50aW5lbCwgNywKKyAgICAgICAgICAgICAgICAgICAgNywgICAgICA1LCAzLCAgICAgICAg
MSwgMSwgICAgICAxLCAxLCAgICAgICAgIDF9OworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0u
TWF0Y2hFbXB0eSgpLCBFbGVtZW50c0FyZSgwLCA0KSk7Cit9CisKK1RFU1QoR3JvdXAsIE1hdGNo
RW1wdHlPckRlbGV0ZWQpIHsKKyAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCBrRGVsZXRl
ZCwgMywga0VtcHR5LCA1LCBrU2VudGluZWwsIDcsCisgICAgICAgICAgICAgICAgICAgIDcsICAg
ICAgNSwgMywgICAgICAgIDEsIDEsICAgICAgMSwgMSwgICAgICAgICAxfTsKKyAgRVhQRUNUX1RI
QVQoR3JvdXB7Z3JvdXB9Lk1hdGNoRW1wdHlPckRlbGV0ZWQoKSwgRWxlbWVudHNBcmUoMCwgMiwg
NCkpOworfQorI2Vsc2UKK1RFU1QoR3JvdXAsIE1hdGNoKSB7CisgIGN0cmxfdCBncm91cFtdID0g
e2tFbXB0eSwgMSwgMiwga0RlbGV0ZWQsIDIsIDEsIGtTZW50aW5lbCwgMX07CisgIEVYUEVDVF9U
SEFUKEdyb3Vwe2dyb3VwfS5NYXRjaCgwKSwgRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9USEFU
KEdyb3Vwe2dyb3VwfS5NYXRjaCgxKSwgRWxlbWVudHNBcmUoMSwgNSwgNykpOworICBFWFBFQ1Rf
VEhBVChHcm91cHtncm91cH0uTWF0Y2goMiksIEVsZW1lbnRzQXJlKDIsIDQpKTsKK30KK1RFU1Qo
R3JvdXAsIE1hdGNoRW1wdHkpIHsKKyAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCAyLCBr
RGVsZXRlZCwgMiwgMSwga1NlbnRpbmVsLCAxfTsKKyAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9
Lk1hdGNoRW1wdHkoKSwgRWxlbWVudHNBcmUoMCkpOworfQorCitURVNUKEdyb3VwLCBNYXRjaEVt
cHR5T3JEZWxldGVkKSB7CisgIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwgMiwga0RlbGV0
ZWQsIDIsIDEsIGtTZW50aW5lbCwgMX07CisgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRj
aEVtcHR5T3JEZWxldGVkKCksIEVsZW1lbnRzQXJlKDAsIDMpKTsKK30KKyNlbmRpZgorCitURVNU
KEJhdGNoLCBEcm9wRGVsZXRlcykgeworICBjb25zdGV4cHIgc2l6ZV90IGtDYXBhY2l0eSA9IDYz
OworICBjb25zdGV4cHIgc2l6ZV90IGtHcm91cFdpZHRoID0gY29udGFpbmVyX2ludGVybmFsOjpH
cm91cDo6a1dpZHRoOworICBzdGQ6OnZlY3RvcjxjdHJsX3Q+IGN0cmwoa0NhcGFjaXR5ICsgMSAr
IGtHcm91cFdpZHRoKTsKKyAgY3RybFtrQ2FwYWNpdHldID0ga1NlbnRpbmVsOworICBzdGQ6OnZl
Y3RvcjxjdHJsX3Q+IHBhdHRlcm4gPSB7a0VtcHR5LCAyLCBrRGVsZXRlZCwgMiwga0VtcHR5LCAx
LCBrRGVsZXRlZH07CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGtDYXBhY2l0eTsgKytpKSB7
CisgICAgY3RybFtpXSA9IHBhdHRlcm5baSAlIHBhdHRlcm4uc2l6ZSgpXTsKKyAgICBpZiAoaSA8
IGtHcm91cFdpZHRoIC0gMSkKKyAgICAgIGN0cmxbaSArIGtDYXBhY2l0eSArIDFdID0gcGF0dGVy
bltpICUgcGF0dGVybi5zaXplKCldOworICB9CisgIENvbnZlcnREZWxldGVkVG9FbXB0eUFuZEZ1
bGxUb0RlbGV0ZWQoY3RybC5kYXRhKCksIGtDYXBhY2l0eSk7CisgIEFTU0VSVF9FUShjdHJsW2tD
YXBhY2l0eV0sIGtTZW50aW5lbCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga0NhcGFjaXR5
ICsgMSArIGtHcm91cFdpZHRoOyArK2kpIHsKKyAgICBjdHJsX3QgZXhwZWN0ZWQgPSBwYXR0ZXJu
W2kgJSAoa0NhcGFjaXR5ICsgMSkgJSBwYXR0ZXJuLnNpemUoKV07CisgICAgaWYgKGkgPT0ga0Nh
cGFjaXR5KSBleHBlY3RlZCA9IGtTZW50aW5lbDsKKyAgICBpZiAoZXhwZWN0ZWQgPT0ga0RlbGV0
ZWQpIGV4cGVjdGVkID0ga0VtcHR5OworICAgIGlmIChJc0Z1bGwoZXhwZWN0ZWQpKSBleHBlY3Rl
ZCA9IGtEZWxldGVkOworICAgIEVYUEVDVF9FUShjdHJsW2ldLCBleHBlY3RlZCkKKyAgICAgICAg
PDwgaSA8PCAiICIgPDwgaW50e3BhdHRlcm5baSAlIHBhdHRlcm4uc2l6ZSgpXX07CisgIH0KK30K
KworVEVTVChHcm91cCwgQ291bnRMZWFkaW5nRW1wdHlPckRlbGV0ZWQpIHsKKyAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8Y3RybF90PiBlbXB0eV9leGFtcGxlcyA9IHtrRW1wdHksIGtEZWxldGVkfTsKKyAg
Y29uc3Qgc3RkOjp2ZWN0b3I8Y3RybF90PiBmdWxsX2V4YW1wbGVzID0gezAsIDEsIDIsIDMsIDUs
IDksIDEyNywga1NlbnRpbmVsfTsKKworICBmb3IgKGN0cmxfdCBlbXB0eSA6IGVtcHR5X2V4YW1w
bGVzKSB7CisgICAgc3RkOjp2ZWN0b3I8Y3RybF90PiBlKEdyb3VwOjprV2lkdGgsIGVtcHR5KTsK
KyAgICBFWFBFQ1RfRVEoR3JvdXA6OmtXaWR0aCwgR3JvdXB7ZS5kYXRhKCl9LkNvdW50TGVhZGlu
Z0VtcHR5T3JEZWxldGVkKCkpOworICAgIGZvciAoY3RybF90IGZ1bGwgOiBmdWxsX2V4YW1wbGVz
KSB7CisgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBHcm91cDo6a1dpZHRoOyArK2kpIHsK
KyAgICAgICAgc3RkOjp2ZWN0b3I8Y3RybF90PiBmKEdyb3VwOjprV2lkdGgsIGVtcHR5KTsKKyAg
ICAgICAgZltpXSA9IGZ1bGw7CisgICAgICAgIEVYUEVDVF9FUShpLCBHcm91cHtmLmRhdGEoKX0u
Q291bnRMZWFkaW5nRW1wdHlPckRlbGV0ZWQoKSk7CisgICAgICB9CisgICAgICBzdGQ6OnZlY3Rv
cjxjdHJsX3Q+IGYoR3JvdXA6OmtXaWR0aCwgZW1wdHkpOworICAgICAgZltHcm91cDo6a1dpZHRo
ICogMiAvIDNdID0gZnVsbDsKKyAgICAgIGZbR3JvdXA6OmtXaWR0aCAvIDJdID0gZnVsbDsKKyAg
ICAgIEVYUEVDVF9FUSgKKyAgICAgICAgICBHcm91cDo6a1dpZHRoIC8gMiwgR3JvdXB7Zi5kYXRh
KCl9LkNvdW50TGVhZGluZ0VtcHR5T3JEZWxldGVkKCkpOworICAgIH0KKyAgfQorfQorCitzdHJ1
Y3QgSW50UG9saWN5IHsKKyAgdXNpbmcgc2xvdF90eXBlID0gaW50NjRfdDsKKyAgdXNpbmcga2V5
X3R5cGUgPSBpbnQ2NF90OworICB1c2luZyBpbml0X3R5cGUgPSBpbnQ2NF90OworCisgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdCh2b2lkKiwgaW50NjRfdCogc2xvdCwgaW50NjRfdCB2KSB7ICpzbG90
ID0gdjsgfQorICBzdGF0aWMgdm9pZCBkZXN0cm95KHZvaWQqLCBpbnQ2NF90Kikge30KKyAgc3Rh
dGljIHZvaWQgdHJhbnNmZXIodm9pZCosIGludDY0X3QqIG5ld19zbG90LCBpbnQ2NF90KiBvbGRf
c2xvdCkgeworICAgICpuZXdfc2xvdCA9ICpvbGRfc2xvdDsKKyAgfQorCisgIHN0YXRpYyBpbnQ2
NF90JiBlbGVtZW50KHNsb3RfdHlwZSogc2xvdCkgeyByZXR1cm4gKnNsb3Q7IH0KKworICB0ZW1w
bGF0ZSA8Y2xhc3MgRj4KKyAgc3RhdGljIGF1dG8gYXBwbHkoRiYmIGYsIGludDY0X3QgeCkgLT4g
ZGVjbHR5cGUoc3RkOjpmb3J3YXJkPEY+KGYpKHgsIHgpKSB7CisgICAgcmV0dXJuIHN0ZDo6Zm9y
d2FyZDxGPihmKSh4LCB4KTsKKyAgfQorfTsKKworY2xhc3MgU3RyaW5nUG9saWN5IHsKKyAgdGVt
cGxhdGUgPGNsYXNzIEYsIGNsYXNzIEssIGNsYXNzIFYsCisgICAgICAgICAgICBjbGFzcyA9IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGli
bGU8Y29uc3QgSyYsIGFic2w6OnN0cmluZ192aWV3Pjo6dmFsdWU+Ojp0eXBlPgorICBkZWNsdHlw
ZShzdGQ6OmRlY2x2YWw8Rj4oKSgKKyAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCBhYnNsOjpzdHJp
bmdfdmlldyY+KCksIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwKKyAgICAgIHN0ZDo6ZGVjbHZh
bDxzdGQ6OnR1cGxlPEs+PigpLAorICAgICAgc3RkOjpkZWNsdmFsPFY+KCkpKSBzdGF0aWMgYXBw
bHlfaW1wbChGJiYgZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpwYWlyPHN0ZDo6dHVwbGU8Sz4sIFY+IHApIHsKKyAgICBjb25zdCBhYnNsOjpzdHJp
bmdfdmlldyYga2V5ID0gc3RkOjpnZXQ8MD4ocC5maXJzdCk7CisgICAgcmV0dXJuIHN0ZDo6Zm9y
d2FyZDxGPihmKShrZXksIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjptb3ZlKHAuZmly
c3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHAuc2Vjb25kKSk7
CisgIH0KKworIHB1YmxpYzoKKyAgc3RydWN0IHNsb3RfdHlwZSB7CisgICAgc3RydWN0IGN0b3Ig
e307CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gVHM+CisgICAgc2xvdF90eXBlKGN0b3IsIFRz
JiYuLi4gdHMpIDogcGFpcihzdGQ6OmZvcndhcmQ8VHM+KHRzKS4uLikge30KKworICAgIHN0ZDo6
cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IHBhaXI7CisgIH07CisKKyAgdXNpbmcga2V5
X3R5cGUgPSBzdGQ6OnN0cmluZzsKKyAgdXNpbmcgaW5pdF90eXBlID0gc3RkOjpwYWlyPHN0ZDo6
c3RyaW5nLCBzdGQ6OnN0cmluZz47CisKKyAgdGVtcGxhdGUgPGNsYXNzIGFsbG9jYXRvcl90eXBl
LCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoYWxsb2NhdG9yX3R5cGUq
IGFsbG9jLCBzbG90X3R5cGUqIHNsb3QsIEFyZ3MuLi4gYXJncykgeworICAgIHN0ZDo6YWxsb2Nh
dG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT46OmNvbnN0cnVjdCgKKyAgICAgICAgKmFsbG9jLCBz
bG90LCB0eXBlbmFtZSBzbG90X3R5cGU6OmN0b3IoKSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBhbGxvY2F0b3JfdHlwZT4KKyAgc3RhdGlj
IHZvaWQgZGVzdHJveShhbGxvY2F0b3JfdHlwZSogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCkgewor
ICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT46OmRlc3Ryb3koKmFsbG9j
LCBzbG90KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBhbGxvY2F0b3JfdHlwZT4KKyAgc3Rh
dGljIHZvaWQgdHJhbnNmZXIoYWxsb2NhdG9yX3R5cGUqIGFsbG9jLCBzbG90X3R5cGUqIG5ld19z
bG90LAorICAgICAgICAgICAgICAgICAgICAgICBzbG90X3R5cGUqIG9sZF9zbG90KSB7CisgICAg
Y29uc3RydWN0KGFsbG9jLCBuZXdfc2xvdCwgc3RkOjptb3ZlKG9sZF9zbG90LT5wYWlyKSk7Cisg
ICAgZGVzdHJveShhbGxvYywgb2xkX3Nsb3QpOworICB9CisKKyAgc3RhdGljIHN0ZDo6cGFpcjxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+JiBlbGVtZW50KHNsb3RfdHlwZSogc2xvdCkgeworICAg
IHJldHVybiBzbG90LT5wYWlyOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzLi4u
IEFyZ3M+CisgIHN0YXRpYyBhdXRvIGFwcGx5KEYmJiBmLCBBcmdzJiYuLi4gYXJncykKKyAgICAg
IC0+IGRlY2x0eXBlKGFwcGx5X2ltcGwoc3RkOjpmb3J3YXJkPEY+KGYpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYWlyQXJncyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSkg
eworICAgIHJldHVybiBhcHBseV9pbXBsKHN0ZDo6Zm9yd2FyZDxGPihmKSwKKyAgICAgICAgICAg
ICAgICAgICAgICBQYWlyQXJncyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgfQor
fTsKKworc3RydWN0IFN0cmluZ0hhc2ggOiBhYnNsOjpIYXNoPGFic2w6OnN0cmluZ192aWV3PiB7
CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKK307CitzdHJ1Y3QgU3RyaW5nRXEgOiBz
dGQ6OmVxdWFsX3RvPGFic2w6OnN0cmluZ192aWV3PiB7CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50
ID0gdm9pZDsKK307CisKK3N0cnVjdCBTdHJpbmdUYWJsZQorICAgIDogcmF3X2hhc2hfc2V0PFN0
cmluZ1BvbGljeSwgU3RyaW5nSGFzaCwgU3RyaW5nRXEsIHN0ZDo6YWxsb2NhdG9yPGludD4+IHsK
KyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIFN0cmluZ1RhYmxlOjpyYXdfaGFzaF9zZXQ7CisgIFN0
cmluZ1RhYmxlKCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKK307CisKK3N0cnVjdCBJbnRUYWJs
ZQorICAgIDogcmF3X2hhc2hfc2V0PEludFBvbGljeSwgY29udGFpbmVyX2ludGVybmFsOjpoYXNo
X2RlZmF1bHRfaGFzaDxpbnQ2NF90PiwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OmVxdWFsX3Rv
PGludDY0X3Q+LCBzdGQ6OmFsbG9jYXRvcjxpbnQ2NF90Pj4geworICB1c2luZyBCYXNlID0gdHlw
ZW5hbWUgSW50VGFibGU6OnJhd19oYXNoX3NldDsKKyAgSW50VGFibGUoKSB7fQorICB1c2luZyBC
YXNlOjpCYXNlOworfTsKKworc3RydWN0IEJhZEZhc3RIYXNoIHsKKyAgdGVtcGxhdGUgPGNsYXNz
IFQ+CisgIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IFQmKSBjb25zdCB7CisgICAgcmV0dXJuIDA7
CisgIH0KK307CisKK3N0cnVjdCBCYWRUYWJsZSA6IHJhd19oYXNoX3NldDxJbnRQb2xpY3ksIEJh
ZEZhc3RIYXNoLCBzdGQ6OmVxdWFsX3RvPGludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjphbGxvY2F0b3I8aW50Pj4geworICB1c2luZyBCYXNlID0gdHlwZW5hbWUgQmFk
VGFibGU6OnJhd19oYXNoX3NldDsKKyAgQmFkVGFibGUoKSB7fQorICB1c2luZyBCYXNlOjpCYXNl
OworfTsKKworVEVTVChUYWJsZSwgRW1wdHlGdW5jdG9yT3B0aW1pemF0aW9uKSB7CisgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19lbXB0eTxzdGQ6OmVxdWFsX3RvPGFic2w6OnN0cmluZ192aWV3Pj46
OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19lbXB0eTxzdGQ6OmFsbG9jYXRv
cjxpbnQ+Pjo6dmFsdWUsICIiKTsKKworICBzdHJ1Y3QgTW9ja1RhYmxlIHsKKyAgICB2b2lkKiBj
dHJsOworICAgIHZvaWQqIHNsb3RzOworICAgIHNpemVfdCBzaXplOworICAgIHNpemVfdCBjYXBh
Y2l0eTsKKyAgICBzaXplX3QgZ3Jvd3RoX2xlZnQ7CisgIH07CisgIHN0cnVjdCBTdGF0ZWxlc3NI
YXNoIHsKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShhYnNsOjpzdHJpbmdfdmlldykgY29uc3QgeyBy
ZXR1cm4gMDsgfQorICB9OworICBzdHJ1Y3QgU3RhdGVmdWxIYXNoIDogU3RhdGVsZXNzSGFzaCB7
CisgICAgc2l6ZV90IGR1bW15OworICB9OworCisgIEVYUEVDVF9FUSgKKyAgICAgIHNpemVvZihN
b2NrVGFibGUpLAorICAgICAgc2l6ZW9mKAorICAgICAgICAgIHJhd19oYXNoX3NldDxTdHJpbmdQ
b2xpY3ksIFN0YXRlbGVzc0hhc2gsCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZXF1YWxf
dG88YWJzbDo6c3RyaW5nX3ZpZXc+LCBzdGQ6OmFsbG9jYXRvcjxpbnQ+PikpOworCisgIEVYUEVD
VF9FUSgKKyAgICAgIHNpemVvZihNb2NrVGFibGUpICsgc2l6ZW9mKFN0YXRlZnVsSGFzaCksCisg
ICAgICBzaXplb2YoCisgICAgICAgICAgcmF3X2hhc2hfc2V0PFN0cmluZ1BvbGljeSwgU3RhdGVm
dWxIYXNoLAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVxdWFsX3RvPGFic2w6OnN0cmlu
Z192aWV3Piwgc3RkOjphbGxvY2F0b3I8aW50Pj4pKTsKK30KKworVEVTVChUYWJsZSwgRW1wdHkp
IHsKKyAgSW50VGFibGUgdDsKKyAgRVhQRUNUX0VRKDAsIHQuc2l6ZSgpKTsKKyAgRVhQRUNUX1RS
VUUodC5lbXB0eSgpKTsKK30KKworI2lmZGVmIF9fR05VQ19fCit0ZW1wbGF0ZSA8Y2xhc3MgVD4K
K0FCU0xfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgaW5saW5lIHZvaWQgRG9Ob3RPcHRpbWl6ZShj
b25zdCBUJiB2KSB7CisgIGFzbSB2b2xhdGlsZSgiIiA6IDogInIsbSIodikgOiAibWVtb3J5Iik7
Cit9CisjZW5kaWYKKworVEVTVChUYWJsZSwgUHJlZmV0Y2gpIHsKKyAgSW50VGFibGUgdDsKKyAg
dC5lbXBsYWNlKDEpOworICAvLyBXb3JrcyBmb3IgYm90aCBwcmVzZW50IGFuZCBhYnNlbnQga2V5
cy4KKyAgdC5wcmVmZXRjaCgxKTsKKyAgdC5wcmVmZXRjaCgyKTsKKworICAvLyBEbyBub3QgcnVu
IGluIGRlYnVnIG1vZGUsIHdoZW4gcHJlZmV0Y2ggaXMgbm90IGltcGxlbWVudGVkLCBvciB3aGVu
CisgIC8vIHNhbml0aXplcnMgYXJlIGVuYWJsZWQuCisjaWYgZGVmaW5lZChOREVCVUcpICYmIGRl
ZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVSKSAmJiBcCisgICAg
IWRlZmluZWQoTUVNT1JZX1NBTklUSVpFUikgJiYgIWRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikg
JiYgICAgICAgICAgICBcCisgICAgIWRlZmluZWQoVU5ERUZJTkVEX0JFSEFWSU9SX1NBTklUSVpF
UikKKyAgY29uc3QgYXV0byBub3cgPSBbXSB7IHJldHVybiBhYnNsOjpiYXNlX2ludGVybmFsOjpD
eWNsZUNsb2NrOjpOb3coKTsgfTsKKworICBzdGF0aWMgY29uc3RleHByIGludCBzaXplID0gMTAw
MDAwMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHQuaW5zZXJ0KGkpOworCisg
IGludDY0X3Qgbm9fcHJlZmV0Y2ggPSAwLCBwcmVmZXRjaCA9IDA7CisgIGZvciAoaW50IGl0ZXIg
PSAwOyBpdGVyIDwgMTA7ICsraXRlcikgeworICAgIGludDY0X3QgdGltZSA9IG5vdygpOworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICBEb05vdE9wdGltaXplKHQu
ZmluZChpKSk7CisgICAgfQorICAgIG5vX3ByZWZldGNoICs9IG5vdygpIC0gdGltZTsKKworICAg
IHRpbWUgPSBub3coKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgdC5wcmVmZXRjaChpICsgMjApOworICAgICAgRG9Ob3RPcHRpbWl6ZSh0LmZpbmQoaSkpOwor
ICAgIH0KKyAgICBwcmVmZXRjaCArPSBub3coKSAtIHRpbWU7CisgIH0KKworICAvLyBub19wcmVm
ZXRjaCBpcyBhdCBsZWFzdCAzMCUgc2xvd2VyLgorICBFWFBFQ1RfR0UoMS4wICogbm9fcHJlZmV0
Y2ggLyBwcmVmZXRjaCwgMS4zKTsKKyNlbmRpZgorfQorCitURVNUKFRhYmxlLCBMb29rdXBFbXB0
eSkgeworICBJbnRUYWJsZSB0OworICBhdXRvIGl0ID0gdC5maW5kKDApOworICBFWFBFQ1RfVFJV
RShpdCA9PSB0LmVuZCgpKTsKK30KKworVEVTVChUYWJsZSwgSW5zZXJ0MSkgeworICBJbnRUYWJs
ZSB0OworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7CisgIGF1dG8gcmVzID0g
dC5lbXBsYWNlKDApOworICBFWFBFQ1RfVFJVRShyZXMuc2Vjb25kKTsKKyAgRVhQRUNUX1RIQVQo
KnJlcy5maXJzdCwgMCk7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIEVYUEVDVF9USEFU
KCp0LmZpbmQoMCksIDApOworfQorCitURVNUKFRhYmxlLCBJbnNlcnQyKSB7CisgIEludFRhYmxl
IHQ7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsKKyAgYXV0byByZXMgPSB0
LmVtcGxhY2UoMCk7CisgIEVYUEVDVF9UUlVFKHJlcy5zZWNvbmQpOworICBFWFBFQ1RfVEhBVCgq
cmVzLmZpcnN0LCAwKTsKKyAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUo
dC5maW5kKDEpID09IHQuZW5kKCkpOworICByZXMgPSB0LmVtcGxhY2UoMSk7CisgIEVYUEVDVF9U
UlVFKHJlcy5zZWNvbmQpOworICBFWFBFQ1RfVEhBVCgqcmVzLmZpcnN0LCAxKTsKKyAgRVhQRUNU
X0VRKDIsIHQuc2l6ZSgpKTsKKyAgRVhQRUNUX1RIQVQoKnQuZmluZCgwKSwgMCk7CisgIEVYUEVD
VF9USEFUKCp0LmZpbmQoMSksIDEpOworfQorCitURVNUKFRhYmxlLCBJbnNlcnRDb2xsaXNpb24p
IHsKKyAgQmFkVGFibGUgdDsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDEpID09IHQuZW5kKCkpOwor
ICBhdXRvIHJlcyA9IHQuZW1wbGFjZSgxKTsKKyAgRVhQRUNUX1RSVUUocmVzLnNlY29uZCk7Cisg
IEVYUEVDVF9USEFUKCpyZXMuZmlyc3QsIDEpOworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOwor
CisgIEVYUEVDVF9UUlVFKHQuZmluZCgyKSA9PSB0LmVuZCgpKTsKKyAgcmVzID0gdC5lbXBsYWNl
KDIpOworICBFWFBFQ1RfVEhBVCgqcmVzLmZpcnN0LCAyKTsKKyAgRVhQRUNUX1RSVUUocmVzLnNl
Y29uZCk7CisgIEVYUEVDVF9FUSgyLCB0LnNpemUoKSk7CisKKyAgRVhQRUNUX1RIQVQoKnQuZmlu
ZCgxKSwgMSk7CisgIEVYUEVDVF9USEFUKCp0LmZpbmQoMiksIDIpOworfQorCisvLyBUZXN0IHRo
YXQgd2UgZG8gbm90IGFkZCBleGlzdGVudCBlbGVtZW50IGluIGNhc2Ugd2UgbmVlZCB0byBzZWFy
Y2ggdGhyb3VnaAorLy8gbWFueSBncm91cHMgd2l0aCBkZWxldGVkIGVsZW1lbnRzCitURVNUKFRh
YmxlLCBJbnNlcnRDb2xsaXNpb25BbmRGaW5kQWZ0ZXJEZWxldGUpIHsKKyAgQmFkVGFibGUgdDsg
IC8vIGFsbCBlbGVtZW50cyBnbyB0byB0aGUgc2FtZSBncm91cC4KKyAgLy8gSGF2ZSBhdCBsZWFz
dCAyIGdyb3VwcyB3aXRoIEdyb3VwOjprV2lkdGggY29sbGlzaW9ucworICAvLyBwbHVzIHNvbWUg
ZXh0cmEgY29sbGlzaW9ucyBpbiB0aGUgbGFzdCBncm91cC4KKyAgY29uc3RleHByIHNpemVfdCBr
TnVtSW5zZXJ0cyA9IEdyb3VwOjprV2lkdGggKiAyICsgNTsKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBrTnVtSW5zZXJ0czsgKytpKSB7CisgICAgYXV0byByZXMgPSB0LmVtcGxhY2UoaSk7Cisg
ICAgRVhQRUNUX1RSVUUocmVzLnNlY29uZCk7CisgICAgRVhQRUNUX1RIQVQoKnJlcy5maXJzdCwg
aSk7CisgICAgRVhQRUNUX0VRKGkgKyAxLCB0LnNpemUoKSk7CisgIH0KKworICAvLyBSZW1vdmUg
ZWxlbWVudHMgb25lIGJ5IG9uZSBhbmQgY2hlY2sKKyAgLy8gdGhhdCB3ZSBzdGlsbCBjYW4gZmlu
ZCBhbGwgb3RoZXIgZWxlbWVudHMuCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUluc2Vy
dHM7ICsraSkgeworICAgIEVYUEVDVF9FUSgxLCB0LmVyYXNlKGkpKSA8PCBpOworICAgIGZvciAo
c2l6ZV90IGogPSBpICsgMTsgaiA8IGtOdW1JbnNlcnRzOyArK2opIHsKKyAgICAgIEVYUEVDVF9U
SEFUKCp0LmZpbmQoaiksIGopOworICAgICAgYXV0byByZXMgPSB0LmVtcGxhY2Uoaik7CisgICAg
ICBFWFBFQ1RfRkFMU0UocmVzLnNlY29uZCkgPDwgaSA8PCAiICIgPDwgajsKKyAgICAgIEVYUEVD
VF9USEFUKCpyZXMuZmlyc3QsIGopOworICAgICAgRVhQRUNUX0VRKGtOdW1JbnNlcnRzIC0gaSAt
IDEsIHQuc2l6ZSgpKTsKKyAgICB9CisgIH0KKyAgRVhQRUNUX1RSVUUodC5lbXB0eSgpKTsKK30K
KworVEVTVChUYWJsZSwgTGF6eUVtcGxhY2UpIHsKKyAgU3RyaW5nVGFibGUgdDsKKyAgYm9vbCBj
YWxsZWQgPSBmYWxzZTsKKyAgYXV0byBpdCA9IHQubGF6eV9lbXBsYWNlKCJhYmMiLCBbJl0oY29u
c3QgU3RyaW5nVGFibGU6OmNvbnN0cnVjdG9yJiBmKSB7CisgICAgY2FsbGVkID0gdHJ1ZTsKKyAg
ICBmKCJhYmMiLCAiQUJDIik7CisgIH0pOworICBFWFBFQ1RfVFJVRShjYWxsZWQpOworICBFWFBF
Q1RfVEhBVCgqaXQsIFBhaXIoImFiYyIsICJBQkMiKSk7CisgIGNhbGxlZCA9IGZhbHNlOworICBp
dCA9IHQubGF6eV9lbXBsYWNlKCJhYmMiLCBbJl0oY29uc3QgU3RyaW5nVGFibGU6OmNvbnN0cnVj
dG9yJiBmKSB7CisgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICBmKCJhYmMiLCAiREVGIik7CisgIH0p
OworICBFWFBFQ1RfRkFMU0UoY2FsbGVkKTsKKyAgRVhQRUNUX1RIQVQoKml0LCBQYWlyKCJhYmMi
LCAiQUJDIikpOworfQorCitURVNUKFRhYmxlLCBDb250YWluc0VtcHR5KSB7CisgIEludFRhYmxl
IHQ7CisKKyAgRVhQRUNUX0ZBTFNFKHQuY29udGFpbnMoMCkpOworfQorCitURVNUKFRhYmxlLCBD
b250YWluczEpIHsKKyAgSW50VGFibGUgdDsKKworICBFWFBFQ1RfVFJVRSh0Lmluc2VydCgwKS5z
ZWNvbmQpOworICBFWFBFQ1RfVFJVRSh0LmNvbnRhaW5zKDApKTsKKyAgRVhQRUNUX0ZBTFNFKHQu
Y29udGFpbnMoMSkpOworCisgIEVYUEVDVF9FUSgxLCB0LmVyYXNlKDApKTsKKyAgRVhQRUNUX0ZB
TFNFKHQuY29udGFpbnMoMCkpOworfQorCitURVNUKFRhYmxlLCBDb250YWluczIpIHsKKyAgSW50
VGFibGUgdDsKKworICBFWFBFQ1RfVFJVRSh0Lmluc2VydCgwKS5zZWNvbmQpOworICBFWFBFQ1Rf
VFJVRSh0LmNvbnRhaW5zKDApKTsKKyAgRVhQRUNUX0ZBTFNFKHQuY29udGFpbnMoMSkpOworCisg
IHQuY2xlYXIoKTsKKyAgRVhQRUNUX0ZBTFNFKHQuY29udGFpbnMoMCkpOworfQorCitpbnQgZGVj
b21wb3NlX2NvbnN0cnVjdGVkOworc3RydWN0IERlY29tcG9zZVR5cGUgeworICBEZWNvbXBvc2VU
eXBlKGludCBpKSA6IGkoaSkgeyAgLy8gTk9MSU5UCisgICAgKytkZWNvbXBvc2VfY29uc3RydWN0
ZWQ7CisgIH0KKworICBleHBsaWNpdCBEZWNvbXBvc2VUeXBlKGNvbnN0IGNoYXIqIGQpIDogRGVj
b21wb3NlVHlwZSgqZCkge30KKworICBpbnQgaTsKK307CisKK3N0cnVjdCBEZWNvbXBvc2VIYXNo
IHsKKyAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworICBzaXplX3Qgb3BlcmF0b3IoKShE
ZWNvbXBvc2VUeXBlIGEpIGNvbnN0IHsgcmV0dXJuIGEuaTsgfQorICBzaXplX3Qgb3BlcmF0b3Io
KShpbnQgYSkgY29uc3QgeyByZXR1cm4gYTsgfQorICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBj
aGFyKiBhKSBjb25zdCB7IHJldHVybiAqYTsgfQorfTsKKworc3RydWN0IERlY29tcG9zZUVxIHsK
KyAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworICBib29sIG9wZXJhdG9yKCkoRGVjb21w
b3NlVHlwZSBhLCBEZWNvbXBvc2VUeXBlIGIpIGNvbnN0IHsgcmV0dXJuIGEuaSA9PSBiLmk7IH0K
KyAgYm9vbCBvcGVyYXRvcigpKERlY29tcG9zZVR5cGUgYSwgaW50IGIpIGNvbnN0IHsgcmV0dXJu
IGEuaSA9PSBiOyB9CisgIGJvb2wgb3BlcmF0b3IoKShEZWNvbXBvc2VUeXBlIGEsIGNvbnN0IGNo
YXIqIGIpIGNvbnN0IHsgcmV0dXJuIGEuaSA9PSAqYjsgfQorfTsKKworc3RydWN0IERlY29tcG9z
ZVBvbGljeSB7CisgIHVzaW5nIHNsb3RfdHlwZSA9IERlY29tcG9zZVR5cGU7CisgIHVzaW5nIGtl
eV90eXBlID0gRGVjb21wb3NlVHlwZTsKKyAgdXNpbmcgaW5pdF90eXBlID0gRGVjb21wb3NlVHlw
ZTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHZvaWQgY29uc3RydWN0KHZv
aWQqLCBEZWNvbXBvc2VUeXBlKiBzbG90LCBUJiYgdikgeworICAgICpzbG90ID0gRGVjb21wb3Nl
VHlwZShzdGQ6OmZvcndhcmQ8VD4odikpOworICB9CisgIHN0YXRpYyB2b2lkIGRlc3Ryb3kodm9p
ZCosIERlY29tcG9zZVR5cGUqKSB7fQorICBzdGF0aWMgRGVjb21wb3NlVHlwZSYgZWxlbWVudChz
bG90X3R5cGUqIHNsb3QpIHsgcmV0dXJuICpzbG90OyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEYs
IGNsYXNzIFQ+CisgIHN0YXRpYyBhdXRvIGFwcGx5KEYmJiBmLCBjb25zdCBUJiB4KSAtPiBkZWNs
dHlwZShzdGQ6OmZvcndhcmQ8Rj4oZikoeCwgeCkpIHsKKyAgICByZXR1cm4gc3RkOjpmb3J3YXJk
PEY+KGYpKHgsIHgpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaCwgdHlwZW5h
bWUgRXE+Cit2b2lkIFRlc3REZWNvbXBvc2UoYm9vbCBjb25zdHJ1Y3RfdGhyZWUpIHsKKyAgRGVj
b21wb3NlVHlwZSBlbGVtezB9OworICBjb25zdCBpbnQgb25lID0gMTsKKyAgY29uc3QgY2hhciog
dGhyZWVfcCA9ICIzIjsKKyAgY29uc3QgYXV0byYgdGhyZWUgPSB0aHJlZV9wOworCisgIHJhd19o
YXNoX3NldDxEZWNvbXBvc2VQb2xpY3ksIEhhc2gsIEVxLCBzdGQ6OmFsbG9jYXRvcjxpbnQ+PiBz
ZXQxOworCisgIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCA9IDA7CisgIGludCBleHBlY3RlZF9jb25z
dHJ1Y3RlZCA9IDA7CisgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3Nl
X2NvbnN0cnVjdGVkKTsKKyAgc2V0MS5pbnNlcnQoZWxlbSk7CisgIEVYUEVDVF9FUShleHBlY3Rl
ZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKyAgc2V0MS5pbnNlcnQoMSk7
CisgIEVYUEVDVF9FUSgrK2V4cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBvc2VfY29uc3RydWN0
ZWQpOworICBzZXQxLmVtcGxhY2UoIjMiKTsKKyAgRVhQRUNUX0VRKCsrZXhwZWN0ZWRfY29uc3Ry
dWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgIEVYUEVDVF9FUShleHBlY3RlZF9jb25z
dHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKworICB7ICAvLyBpbnNlcnQoVCYmKQor
ICAgIHNldDEuaW5zZXJ0KDEpOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwg
ZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKyAgfQorCisgIHsgIC8vIGluc2VydChjb25zdCBUJikK
KyAgICBzZXQxLmluc2VydChvbmUpOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3Rl
ZCwgZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKyAgfQorCisgIHsgIC8vIGluc2VydChoaW50LCBU
JiYpCisgICAgc2V0MS5pbnNlcnQoc2V0MS5iZWdpbigpLCAxKTsKKyAgICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgIH0KKworICB7ICAv
LyBpbnNlcnQoaGludCwgY29uc3QgVCYpCisgICAgc2V0MS5pbnNlcnQoc2V0MS5iZWdpbigpLCBv
bmUpOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0
cnVjdGVkKTsKKyAgfQorCisgIHsgIC8vIGVtcGxhY2UoLi4uKQorICAgIHNldDEuZW1wbGFjZSgx
KTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1
Y3RlZCk7CisgICAgc2V0MS5lbXBsYWNlKCIzIik7CisgICAgZXhwZWN0ZWRfY29uc3RydWN0ZWQg
Kz0gY29uc3RydWN0X3RocmVlOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwg
ZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKyAgICBzZXQxLmVtcGxhY2Uob25lKTsKKyAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgICAg
c2V0MS5lbXBsYWNlKHRocmVlKTsKKyAgICBleHBlY3RlZF9jb25zdHJ1Y3RlZCArPSBjb25zdHJ1
Y3RfdGhyZWU7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBvc2Vf
Y29uc3RydWN0ZWQpOworICB9CisKKyAgeyAgLy8gZW1wbGFjZV9oaW50KC4uLikKKyAgICBzZXQx
LmVtcGxhY2VfaGludChzZXQxLmJlZ2luKCksIDEpOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9j
b25zdHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKyAgICBzZXQxLmVtcGxhY2VfaGlu
dChzZXQxLmJlZ2luKCksICIzIik7CisgICAgZXhwZWN0ZWRfY29uc3RydWN0ZWQgKz0gY29uc3Ry
dWN0X3RocmVlOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3Nl
X2NvbnN0cnVjdGVkKTsKKyAgICBzZXQxLmVtcGxhY2VfaGludChzZXQxLmJlZ2luKCksIG9uZSk7
CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBvc2VfY29uc3RydWN0
ZWQpOworICAgIHNldDEuZW1wbGFjZV9oaW50KHNldDEuYmVnaW4oKSwgdGhyZWUpOworICAgIGV4
cGVjdGVkX2NvbnN0cnVjdGVkICs9IGNvbnN0cnVjdF90aHJlZTsKKyAgICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgIH0KK30KKworVEVT
VChUYWJsZSwgRGVjb21wb3NlKSB7CisgIFRlc3REZWNvbXBvc2U8RGVjb21wb3NlSGFzaCwgRGVj
b21wb3NlRXE+KGZhbHNlKTsKKworICBzdHJ1Y3QgVHJhbnNwYXJlbnRIYXNoSW50T3ZlcmxvYWQg
eworICAgIHNpemVfdCBvcGVyYXRvcigpKERlY29tcG9zZVR5cGUgYSkgY29uc3QgeyByZXR1cm4g
YS5pOyB9CisgICAgc2l6ZV90IG9wZXJhdG9yKCkoaW50IGEpIGNvbnN0IHsgcmV0dXJuIGE7IH0K
KyAgfTsKKyAgc3RydWN0IFRyYW5zcGFyZW50RXFJbnRPdmVybG9hZCB7CisgICAgYm9vbCBvcGVy
YXRvcigpKERlY29tcG9zZVR5cGUgYSwgRGVjb21wb3NlVHlwZSBiKSBjb25zdCB7CisgICAgICBy
ZXR1cm4gYS5pID09IGIuaTsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvcigpKERlY29tcG9zZVR5
cGUgYSwgaW50IGIpIGNvbnN0IHsgcmV0dXJuIGEuaSA9PSBiOyB9CisgIH07CisgIFRlc3REZWNv
bXBvc2U8VHJhbnNwYXJlbnRIYXNoSW50T3ZlcmxvYWQsIERlY29tcG9zZUVxPih0cnVlKTsKKyAg
VGVzdERlY29tcG9zZTxUcmFuc3BhcmVudEhhc2hJbnRPdmVybG9hZCwgVHJhbnNwYXJlbnRFcUlu
dE92ZXJsb2FkPih0cnVlKTsKKyAgVGVzdERlY29tcG9zZTxEZWNvbXBvc2VIYXNoLCBUcmFuc3Bh
cmVudEVxSW50T3ZlcmxvYWQ+KHRydWUpOworfQorCisvLyBSZXR1cm5zIHRoZSBsYXJnZXN0IG0g
c3VjaCB0aGF0IGEgdGFibGUgd2l0aCBtIGVsZW1lbnRzIGhhcyB0aGUgc2FtZSBudW1iZXIKKy8v
IG9mIGJ1Y2tldHMgYXMgYSB0YWJsZSB3aXRoIG4gZWxlbWVudHMuCitzaXplX3QgTWF4RGVuc2l0
eVNpemUoc2l6ZV90IG4pIHsKKyAgSW50VGFibGUgdDsKKyAgdC5yZXNlcnZlKG4pOworICBmb3Ig
KHNpemVfdCBpID0gMDsgaSAhPSBuOyArK2kpIHQuZW1wbGFjZShpKTsKKyAgY29uc3Qgc2l6ZV90
IGMgPSB0LmJ1Y2tldF9jb3VudCgpOworICB3aGlsZSAoYyA9PSB0LmJ1Y2tldF9jb3VudCgpKSB0
LmVtcGxhY2UobisrKTsKKyAgcmV0dXJuIHQuc2l6ZSgpIC0gMTsKK30KKworc3RydWN0IE1vZHVs
bzEwMDBIYXNoIHsKKyAgc2l6ZV90IG9wZXJhdG9yKCkoaW50IHgpIGNvbnN0IHsgcmV0dXJuIHgg
JSAxMDAwOyB9Cit9OworCitzdHJ1Y3QgTW9kdWxvMTAwMEhhc2hUYWJsZQorICAgIDogcHVibGlj
IHJhd19oYXNoX3NldDxJbnRQb2xpY3ksIE1vZHVsbzEwMDBIYXNoLCBzdGQ6OmVxdWFsX3RvPGlu
dD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPGludD4+IHt9Owor
CisvLyBUZXN0IHRoYXQgcmVoYXNoIHdpdGggbm8gcmVzaXplIGhhcHBlbiBpbiBjYXNlIG9mIG1h
bnkgZGVsZXRlZCBzbG90cy4KK1RFU1QoVGFibGUsIFJlaGFzaFdpdGhOb1Jlc2l6ZSkgeworICBN
b2R1bG8xMDAwSGFzaFRhYmxlIHQ7CisgIC8vIEFkZGluZyB0aGUgc2FtZSBsZW5ndGggKGFuZCB0
aGUgc2FtZSBoYXNoKSBzdHJpbmdzCisgIC8vIHRvIGhhdmUgYXQgbGVhc3Qga01pbkZ1bGxHcm91
cHMgZ3JvdXBzCisgIC8vIHdpdGggR3JvdXA6OmtXaWR0aCBjb2xsaXNpb25zLiBUaGVuIGZlZWwg
dXB0byBNYXhEZW5zaXR5U2l6ZTsKKyAgY29uc3Qgc2l6ZV90IGtNaW5GdWxsR3JvdXBzID0gNzsK
KyAgc3RkOjp2ZWN0b3I8aW50PiBrZXlzOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE1heERl
bnNpdHlTaXplKEdyb3VwOjprV2lkdGggKiBrTWluRnVsbEdyb3Vwcyk7ICsraSkgeworICAgIGlu
dCBrID0gaSAqIDEwMDA7CisgICAgdC5lbXBsYWNlKGspOworICAgIGtleXMucHVzaF9iYWNrKGsp
OworICB9CisgIGNvbnN0IHNpemVfdCBjYXBhY2l0eSA9IHQuY2FwYWNpdHkoKTsKKworICAvLyBS
ZW1vdmUgZWxlbWVudHMgZnJvbSBhbGwgZ3JvdXBzIGV4Y2VwdCB0aGUgZmlyc3QgYW5kIHRoZSBs
YXN0IG9uZS4KKyAgLy8gQWxsIGVsZW1lbnRzIHJlbW92ZWQgZnJvbSBmdWxsIGdyb3VwcyB3aWxs
IGJlIG1hcmtlZCBhcyBrRGVsZXRlZC4KKyAgY29uc3Qgc2l6ZV90IGVyYXNlX2JlZ2luID0gR3Jv
dXA6OmtXaWR0aCAvIDI7CisgIGNvbnN0IHNpemVfdCBlcmFzZV9lbmQgPSAodC5zaXplKCkgLyBH
cm91cDo6a1dpZHRoIC0gMSkgKiBHcm91cDo6a1dpZHRoOworICBmb3IgKHNpemVfdCBpID0gZXJh
c2VfYmVnaW47IGkgPCBlcmFzZV9lbmQ7ICsraSkgeworICAgIEVYUEVDVF9FUSgxLCB0LmVyYXNl
KGtleXNbaV0pKSA8PCBpOworICB9CisgIGtleXMuZXJhc2Uoa2V5cy5iZWdpbigpICsgZXJhc2Vf
YmVnaW4sIGtleXMuYmVnaW4oKSArIGVyYXNlX2VuZCk7CisKKyAgYXV0byBsYXN0X2tleSA9IGtl
eXMuYmFjaygpOworICBzaXplX3QgbGFzdF9rZXlfbnVtX3Byb2JlcyA9IEdldEhhc2h0YWJsZURl
YnVnTnVtUHJvYmVzKHQsIGxhc3Rfa2V5KTsKKworICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBoYXZl
IHRvIG1ha2UgYSBsb3Qgb2YgcHJvYmVzIGZvciBsYXN0IGtleS4KKyAgQVNTRVJUX0dUKGxhc3Rf
a2V5X251bV9wcm9iZXMsIGtNaW5GdWxsR3JvdXBzKTsKKworICBpbnQgeCA9IDE7CisgIC8vIElu
c2VydCBhbmQgZXJhc2Ugb25lIGVsZW1lbnQsIGJlZm9yZSBpbnBsYWNlIHJlaGFzaCBoYXBwZW4u
CisgIHdoaWxlIChsYXN0X2tleV9udW1fcHJvYmVzID09IEdldEhhc2h0YWJsZURlYnVnTnVtUHJv
YmVzKHQsIGxhc3Rfa2V5KSkgeworICAgIHQuZW1wbGFjZSh4KTsKKyAgICBBU1NFUlRfRVEoY2Fw
YWNpdHksIHQuY2FwYWNpdHkoKSk7CisgICAgLy8gQWxsIGVsZW1lbnRzIHNob3VsZCBiZSB0aGVy
ZS4KKyAgICBBU1NFUlRfVFJVRSh0LmZpbmQoeCkgIT0gdC5lbmQoKSkgPDwgeDsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGsgOiBrZXlzKSB7CisgICAgICBBU1NFUlRfVFJVRSh0LmZpbmQoaykgIT0g
dC5lbmQoKSkgPDwgazsKKyAgICB9CisgICAgdC5lcmFzZSh4KTsKKyAgICArK3g7CisgIH0KK30K
KworVEVTVChUYWJsZSwgSW5zZXJ0RXJhc2VTdHJlc3NUZXN0KSB7CisgIEludFRhYmxlIHQ7Cisg
IGNvbnN0IHNpemVfdCBrTWluRWxlbWVudENvdW50ID0gMjUwOworICBzdGQ6OmRlcXVlPGludD4g
a2V5czsKKyAgc2l6ZV90IGkgPSAwOworICBmb3IgKDsgaSA8IE1heERlbnNpdHlTaXplKGtNaW5F
bGVtZW50Q291bnQpOyArK2kpIHsKKyAgICB0LmVtcGxhY2UoaSk7CisgICAga2V5cy5wdXNoX2Jh
Y2soaSk7CisgIH0KKyAgY29uc3Qgc2l6ZV90IGtOdW1JdGVyYXRpb25zID0gMTAwMDAwMDsKKyAg
Zm9yICg7IGkgPCBrTnVtSXRlcmF0aW9uczsgKytpKSB7CisgICAgQVNTRVJUX0VRKDEsIHQuZXJh
c2Uoa2V5cy5mcm9udCgpKSk7CisgICAga2V5cy5wb3BfZnJvbnQoKTsKKyAgICB0LmVtcGxhY2Uo
aSk7CisgICAga2V5cy5wdXNoX2JhY2soaSk7CisgIH0KK30KKworVEVTVChUYWJsZSwgSW5zZXJ0
T3ZlcmxvYWRzKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIC8vIFRoZXNlIHNob3VsZCBhbGwgdHJp
Z2dlciB0aGUgaW5zZXJ0KGluaXRfdHlwZSkgb3ZlcmxvYWQuCisgIHQuaW5zZXJ0KHt7fSwge319
KTsKKyAgdC5pbnNlcnQoeyJBQkMiLCB7fX0pOworICB0Lmluc2VydCh7IkRFRiIsICIhISEifSk7
CisKKyAgRVhQRUNUX1RIQVQodCwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigiIiwgIiIpLCBQ
YWlyKCJBQkMiLCAiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
aXIoIkRFRiIsICIhISEiKSkpOworfQorCitURVNUKFRhYmxlLCBMYXJnZVRhYmxlKSB7CisgIElu
dFRhYmxlIHQ7CisgIGZvciAoaW50NjRfdCBpID0gMDsgaSAhPSAxMDAwMDA7ICsraSkgdC5lbXBs
YWNlKGkgPDwgNDApOworICBmb3IgKGludDY0X3QgaSA9IDA7IGkgIT0gMTAwMDAwOyArK2kpIEFT
U0VSVF9FUShpIDw8IDQwLCAqdC5maW5kKGkgPDwgNDApKTsKK30KKworLy8gVGltZW91dCBpZiBj
b3B5IGlzIHF1YWRyYXRpYyBhcyBpdCB3YXMgaW4gUnVzdC4KK1RFU1QoVGFibGUsIEVuc3VyZU5v
blF1YWRyYXRpY0FzSW5SdXN0KSB7CisgIHN0YXRpYyBjb25zdCBzaXplX3Qga0xhcmdlU2l6ZSA9
IDEgPDwgMTU7CisKKyAgSW50VGFibGUgdDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0ga0xh
cmdlU2l6ZTsgKytpKSB7CisgICAgdC5pbnNlcnQoaSk7CisgIH0KKworICAvLyBJZiB0aGlzIGlz
IHF1YWRyYXRpYywgdGhlIHRlc3Qgd2lsbCB0aW1lb3V0LgorICBJbnRUYWJsZSB0MjsKKyAgZm9y
IChjb25zdCBhdXRvJiBlbnRyeSA6IHQpIHQyLmluc2VydChlbnRyeSk7Cit9CisKK1RFU1QoVGFi
bGUsIENsZWFyQnVnKSB7CisgIEludFRhYmxlIHQ7CisgIGNvbnN0ZXhwciBzaXplX3QgY2FwYWNp
dHkgPSBjb250YWluZXJfaW50ZXJuYWw6Okdyb3VwOjprV2lkdGggLSAxOworICBjb25zdGV4cHIg
c2l6ZV90IG1heF9zaXplID0gY2FwYWNpdHkgLyAyOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1heF9zaXplOyArK2kpIHsKKyAgICB0Lmluc2VydChpKTsKKyAgfQorICBBU1NFUlRfRVEoY2Fw
YWNpdHksIHQuY2FwYWNpdHkoKSk7CisgIGludHB0cl90IG9yaWdpbmFsID0gcmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4oJip0LmZpbmQoMikpOworICB0LmNsZWFyKCk7CisgIEFTU0VSVF9FUShj
YXBhY2l0eSwgdC5jYXBhY2l0eSgpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhfc2l6
ZTsgKytpKSB7CisgICAgdC5pbnNlcnQoaSk7CisgIH0KKyAgQVNTRVJUX0VRKGNhcGFjaXR5LCB0
LmNhcGFjaXR5KCkpOworICBpbnRwdHJfdCBzZWNvbmQgPSByZWludGVycHJldF9jYXN0PGludHB0
cl90PigmKnQuZmluZCgyKSk7CisgIC8vIFdlIGFyZSBjaGVja2luZyB0aGF0IG9yaWdpbmFsIGFu
ZCBzZWNvbmQgYXJlIGNsb3NlIGVub3VnaCB0byBlYWNoIG90aGVyCisgIC8vIHRoYXQgdGhleSBh
cmUgcHJvYmFibHkgc3RpbGwgaW4gdGhlIHNhbWUgZ3JvdXAuICBUaGlzIGlzIG5vdCBzdHJpY3Rs
eQorICAvLyBndWFyYW50ZWVkLgorICBFWFBFQ1RfTFQoc3RkOjphYnMob3JpZ2luYWwgLSBzZWNv
bmQpLAorICAgICAgICAgICAgY2FwYWNpdHkgKiBzaXplb2YoSW50VGFibGU6OnZhbHVlX3R5cGUp
KTsKK30KKworVEVTVChUYWJsZSwgRXJhc2UpIHsKKyAgSW50VGFibGUgdDsKKyAgRVhQRUNUX1RS
VUUodC5maW5kKDApID09IHQuZW5kKCkpOworICBhdXRvIHJlcyA9IHQuZW1wbGFjZSgwKTsKKyAg
RVhQRUNUX1RSVUUocmVzLnNlY29uZCk7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIHQu
ZXJhc2UocmVzLmZpcnN0KTsKKyAgRVhQRUNUX0VRKDAsIHQuc2l6ZSgpKTsKKyAgRVhQRUNUX1RS
VUUodC5maW5kKDApID09IHQuZW5kKCkpOworfQorCisvLyBDb2xsZWN0IE4gYmFkIGtleXMgYnkg
Zm9sbG93aW5nIGFsZ29yaXRobToKKy8vIDEuIENyZWF0ZSBhbiBlbXB0eSB0YWJsZSBhbmQgcmVz
ZXJ2ZSBpdCB0byAyICogTi4KKy8vIDIuIEluc2VydCBOIHJhbmRvbSBlbGVtZW50cy4KKy8vIDMu
IFRha2UgZmlyc3QgR3JvdXA6OmtXaWR0aCAtIDEgdG8gYmFkX2tleXMgYXJyYXkuCisvLyA0LiBD
bGVhciB0aGUgdGFibGUgd2l0aG91dCByZXNpemUuCisvLyA1LiBHbyB0byBwb2ludCAyIHdoaWxl
IE4ga2V5cyBub3QgY29sbGVjdGVkCitzdGQ6OnZlY3RvcjxpbnQ2NF90PiBDb2xsZWN0QmFkTWVy
Z2VLZXlzKHNpemVfdCBOKSB7CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtHcm91cFNpemUgPSBH
cm91cDo6a1dpZHRoIC0gMTsKKworICBhdXRvIHRvcGtfcmFuZ2UgPSBbXShzaXplX3QgYiwgc2l6
ZV90IGUsIEludFRhYmxlKiB0KSAtPiBzdGQ6OnZlY3RvcjxpbnQ2NF90PiB7CisgICAgZm9yIChz
aXplX3QgaSA9IGI7IGkgIT0gZTsgKytpKSB7CisgICAgICB0LT5lbXBsYWNlKGkpOworICAgIH0K
KyAgICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiByZXM7CisgICAgcmVzLnJlc2VydmUoa0dyb3VwU2l6
ZSk7CisgICAgYXV0byBpdCA9IHQtPmJlZ2luKCk7CisgICAgZm9yIChzaXplX3QgaSA9IGI7IGkg
IT0gZSAmJiBpICE9IGIgKyBrR3JvdXBTaXplOyArK2ksICsraXQpIHsKKyAgICAgIHJlcy5wdXNo
X2JhY2soKml0KTsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKKyAgfTsKKworICBzdGQ6OnZlY3Rv
cjxpbnQ2NF90PiBiYWRfa2V5czsKKyAgYmFkX2tleXMucmVzZXJ2ZShOKTsKKyAgSW50VGFibGUg
dDsKKyAgdC5yZXNlcnZlKE4gKiAyKTsKKworICBmb3IgKHNpemVfdCBiID0gMDsgYmFkX2tleXMu
c2l6ZSgpIDwgTjsgYiArPSBOKSB7CisgICAgYXV0byBrZXlzID0gdG9wa19yYW5nZShiLCBiICsg
TiwgJnQpOworICAgIGJhZF9rZXlzLmluc2VydChiYWRfa2V5cy5lbmQoKSwga2V5cy5iZWdpbigp
LCBrZXlzLmVuZCgpKTsKKyAgICB0LmVyYXNlKHQuYmVnaW4oKSwgdC5lbmQoKSk7CisgICAgRVhQ
RUNUX1RSVUUodC5lbXB0eSgpKTsKKyAgfQorICByZXR1cm4gYmFkX2tleXM7Cit9CisKK3N0cnVj
dCBQcm9iZVN0YXRzIHsKKyAgLy8gTnVtYmVyIG9mIGVsZW1lbnRzIHdpdGggc3BlY2lmaWMgcHJv
YmUgbGVuZ3RoIG92ZXIgYWxsIHRlc3RlZCB0YWJsZXMuCisgIHN0ZDo6dmVjdG9yPHNpemVfdD4g
YWxsX3Byb2Jlc19oaXN0b2dyYW07CisgIC8vIFJhdGlvcyB0b3RhbF9wcm9iZV9sZW5ndGgvc2l6
ZSBmb3IgZXZlcnkgdGVzdGVkIHRhYmxlLgorICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHNpbmdsZV90
YWJsZV9yYXRpb3M7CisKKyAgZnJpZW5kIFByb2JlU3RhdHMgb3BlcmF0b3IrKGNvbnN0IFByb2Jl
U3RhdHMmIGEsIGNvbnN0IFByb2JlU3RhdHMmIGIpIHsKKyAgICBQcm9iZVN0YXRzIHJlcyA9IGE7
CisgICAgcmVzLmFsbF9wcm9iZXNfaGlzdG9ncmFtLnJlc2l6ZShzdGQ6Om1heChyZXMuYWxsX3By
b2Jlc19oaXN0b2dyYW0uc2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYi5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5zaXplKCkpKTsKKyAgICBzdGQ6OnRy
YW5zZm9ybShiLmFsbF9wcm9iZXNfaGlzdG9ncmFtLmJlZ2luKCksIGIuYWxsX3Byb2Jlc19oaXN0
b2dyYW0uZW5kKCksCisgICAgICAgICAgICAgICAgICAgcmVzLmFsbF9wcm9iZXNfaGlzdG9ncmFt
LmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgcmVzLmFsbF9wcm9iZXNfaGlzdG9ncmFtLmJl
Z2luKCksIHN0ZDo6cGx1czxzaXplX3Q+KCkpOworICAgIHJlcy5zaW5nbGVfdGFibGVfcmF0aW9z
Lmluc2VydChyZXMuc2luZ2xlX3RhYmxlX3JhdGlvcy5lbmQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYi5zaW5nbGVfdGFibGVfcmF0aW9zLmJlZ2luKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuc2luZ2xlX3RhYmxlX3JhdGlvcy5lbmQoKSk7
CisgICAgcmV0dXJuIHJlczsKKyAgfQorCisgIC8vIEF2ZXJhZ2UgcmF0aW8gdG90YWxfcHJvYmVf
bGVuZ3RoL3NpemUgb3ZlciB0YWJsZXMuCisgIGRvdWJsZSBBdmdSYXRpbygpIGNvbnN0IHsKKyAg
ICByZXR1cm4gc3RkOjphY2N1bXVsYXRlKHNpbmdsZV90YWJsZV9yYXRpb3MuYmVnaW4oKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZV90YWJsZV9yYXRpb3MuZW5kKCksIDAuMCkg
LworICAgICAgICAgICBzaW5nbGVfdGFibGVfcmF0aW9zLnNpemUoKTsKKyAgfQorCisgIC8vIE1h
eGltdW0gcmF0aW8gdG90YWxfcHJvYmVfbGVuZ3RoL3NpemUgb3ZlciB0YWJsZXMuCisgIGRvdWJs
ZSBNYXhSYXRpbygpIGNvbnN0IHsKKyAgICByZXR1cm4gKnN0ZDo6bWF4X2VsZW1lbnQoc2luZ2xl
X3RhYmxlX3JhdGlvcy5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5n
bGVfdGFibGVfcmF0aW9zLmVuZCgpKTsKKyAgfQorCisgIC8vIFBlcmNlbnRpbGUgcmF0aW8gdG90
YWxfcHJvYmVfbGVuZ3RoL3NpemUgb3ZlciB0YWJsZXMuCisgIGRvdWJsZSBQZXJjZW50aWxlUmF0
aW8oZG91YmxlIFBlcmNlbnRpbGUgPSAwLjk1KSBjb25zdCB7CisgICAgYXV0byByID0gc2luZ2xl
X3RhYmxlX3JhdGlvczsKKyAgICBhdXRvIG1pZCA9IHIuYmVnaW4oKSArIHN0YXRpY19jYXN0PHNp
emVfdD4oci5zaXplKCkgKiBQZXJjZW50aWxlKTsKKyAgICBpZiAobWlkICE9IHIuZW5kKCkpIHsK
KyAgICAgIHN0ZDo6bnRoX2VsZW1lbnQoci5iZWdpbigpLCBtaWQsIHIuZW5kKCkpOworICAgICAg
cmV0dXJuICptaWQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBNYXhSYXRpbygpOworICAg
IH0KKyAgfQorCisgIC8vIE1heGltdW0gcHJvYmUgbGVuZ3RoIG92ZXIgYWxsIGVsZW1lbnRzIGFu
ZCBhbGwgdGFibGVzLgorICBzaXplX3QgTWF4UHJvYmUoKSBjb25zdCB7IHJldHVybiBhbGxfcHJv
YmVzX2hpc3RvZ3JhbS5zaXplKCk7IH0KKworICAvLyBGcmFjdGlvbiBvZiBlbGVtZW50cyB3aXRo
IHNwZWNpZmllZCBwcm9iZSBsZW5ndGguCisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gUHJvYmVOb3Jt
YWxpemVkSGlzdG9ncmFtKCkgY29uc3QgeworICAgIGRvdWJsZSB0b3RhbF9lbGVtZW50cyA9IHN0
ZDo6YWNjdW11bGF0ZShhbGxfcHJvYmVzX2hpc3RvZ3JhbS5iZWdpbigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfcHJvYmVzX2hpc3RvZ3JhbS5lbmQo
KSwgMHVsbCk7CisgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiByZXM7CisgICAgZm9yIChzaXplX3Qg
cCA6IGFsbF9wcm9iZXNfaGlzdG9ncmFtKSB7CisgICAgICByZXMucHVzaF9iYWNrKHAgLyB0b3Rh
bF9lbGVtZW50cyk7CisgICAgfQorICAgIHJldHVybiByZXM7CisgIH0KKworICBzaXplX3QgUGVy
Y2VudGlsZVByb2JlKGRvdWJsZSBQZXJjZW50aWxlID0gMC45OSkgY29uc3QgeworICAgIHNpemVf
dCBpZHggPSAwOworICAgIGZvciAoZG91YmxlIHAgOiBQcm9iZU5vcm1hbGl6ZWRIaXN0b2dyYW0o
KSkgeworICAgICAgaWYgKFBlcmNlbnRpbGUgPiBwKSB7CisgICAgICAgIFBlcmNlbnRpbGUgLT0g
cDsKKyAgICAgICAgKytpZHg7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gaWR4Owor
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gaWR4OworICB9CisKKyAgZnJpZW5kIHN0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG91dCwgY29uc3QgUHJvYmVTdGF0cyYgcykg
eworICAgIG91dCA8PCAie0F2Z1JhdGlvOiIgPDwgcy5BdmdSYXRpbygpIDw8ICIsIE1heFJhdGlv
OiIgPDwgcy5NYXhSYXRpbygpCisgICAgICAgIDw8ICIsIFBlcmNlbnRpbGVSYXRpbzoiIDw8IHMu
UGVyY2VudGlsZVJhdGlvKCkKKyAgICAgICAgPDwgIiwgTWF4UHJvYmU6IiA8PCBzLk1heFByb2Jl
KCkgPDwgIiwgUHJvYmVzPVsiOworICAgIGZvciAoZG91YmxlIHAgOiBzLlByb2JlTm9ybWFsaXpl
ZEhpc3RvZ3JhbSgpKSB7CisgICAgICBvdXQgPDwgcCA8PCAiLCI7CisgICAgfQorICAgIG91dCA8
PCAiXX0iOworCisgICAgcmV0dXJuIG91dDsKKyAgfQorfTsKKworc3RydWN0IEV4cGVjdGVkU3Rh
dHMgeworICBkb3VibGUgYXZnX3JhdGlvOworICBkb3VibGUgbWF4X3JhdGlvOworICBzdGQ6OnZl
Y3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBwZWNlbnRpbGVfcmF0aW9zOworICBzdGQ6
OnZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBwZWNlbnRpbGVfcHJvYmVzOworCisg
IGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0
IEV4cGVjdGVkU3RhdHMmIHMpIHsKKyAgICBvdXQgPDwgIntBdmdSYXRpbzoiIDw8IHMuYXZnX3Jh
dGlvIDw8ICIsIE1heFJhdGlvOiIgPDwgcy5tYXhfcmF0aW8KKyAgICAgICAgPDwgIiwgUGVyY2Vu
dGlsZVJhdGlvczogWyI7CisgICAgZm9yIChhdXRvIGVsIDogcy5wZWNlbnRpbGVfcmF0aW9zKSB7
CisgICAgICBvdXQgPDwgZWwuZmlyc3QgPDwgIjoiIDw8IGVsLnNlY29uZCA8PCAiLCAiOworICAg
IH0KKyAgICBvdXQgPDwgIl0sIFBlcmNlbnRpbGVQcm9iZXM6IFsiOworICAgIGZvciAoYXV0byBl
bCA6IHMucGVjZW50aWxlX3Byb2JlcykgeworICAgICAgb3V0IDw8IGVsLmZpcnN0IDw8ICI6IiA8
PCBlbC5zZWNvbmQgPDwgIiwgIjsKKyAgICB9CisgICAgb3V0IDw8ICJdfSI7CisKKyAgICByZXR1
cm4gb3V0OworICB9Cit9OworCit2b2lkIFZlcmlmeVN0YXRzKHNpemVfdCBzaXplLCBjb25zdCBF
eHBlY3RlZFN0YXRzJiBleHAsCisgICAgICAgICAgICAgICAgIGNvbnN0IFByb2JlU3RhdHMmIHN0
YXRzKSB7CisgIEVYUEVDVF9MVChzdGF0cy5BdmdSYXRpbygpLCBleHAuYXZnX3JhdGlvKSA8PCBz
aXplIDw8ICIgIiA8PCBzdGF0czsKKyAgRVhQRUNUX0xUKHN0YXRzLk1heFJhdGlvKCksIGV4cC5t
YXhfcmF0aW8pIDw8IHNpemUgPDwgIiAiIDw8IHN0YXRzOworICBmb3IgKGF1dG8gcHIgOiBleHAu
cGVjZW50aWxlX3JhdGlvcykgeworICAgIEVYUEVDVF9MRShzdGF0cy5QZXJjZW50aWxlUmF0aW8o
cHIuZmlyc3QpLCBwci5zZWNvbmQpCisgICAgICAgIDw8IHNpemUgPDwgIiAiIDw8IHByLmZpcnN0
IDw8ICIgIiA8PCBzdGF0czsKKyAgfQorCisgIGZvciAoYXV0byBwciA6IGV4cC5wZWNlbnRpbGVf
cHJvYmVzKSB7CisgICAgRVhQRUNUX0xFKHN0YXRzLlBlcmNlbnRpbGVQcm9iZShwci5maXJzdCks
IHByLnNlY29uZCkKKyAgICAgICAgPDwgc2l6ZSA8PCAiICIgPDwgcHIuZmlyc3QgPDwgIiAiIDw8
IHN0YXRzOworICB9Cit9CisKK3VzaW5nIFByb2JlU3RhdHNQZXJTaXplID0gc3RkOjptYXA8c2l6
ZV90LCBQcm9iZVN0YXRzPjsKKworLy8gQ29sbGVjdCB0b3RhbCBQcm9iZVN0YXRzIG9uIG51bV9p
dGVycyBpdGVyYXRpb25zIG9mIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOgorLy8gMS4gQ3JlYXRl
IG5ldyB0YWJsZSBhbmQgcmVzZXJ2ZSBpdCB0byBrZXlzLnNpemUoKSAqIDIKKy8vIDIuIEluc2Vy
dCBhbGwga2V5cyB4b3JlZCB3aXRoIHNlZWQKKy8vIDMuIENvbGxlY3QgUHJvYmVTdGF0cyBmcm9t
IGZpbmFsIHRhYmxlLgorUHJvYmVTdGF0cyBDb2xsZWN0UHJvYmVTdGF0c09uS2V5c1hvcmVkV2l0
aFNlZWQoY29uc3Qgc3RkOjp2ZWN0b3I8aW50NjRfdD4mIGtleXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2l0ZXJzKSB7CisgIGNv
bnN0IHNpemVfdCByZXNlcnZlX3NpemUgPSBrZXlzLnNpemUoKSAqIDI7CisKKyAgUHJvYmVTdGF0
cyBzdGF0czsKKworICBpbnQ2NF90IHNlZWQgPSAweDcxYjFhMTliOTA3ZDZlMzM7CisgIHdoaWxl
IChudW1faXRlcnMtLSkgeworICAgIHNlZWQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oc2VlZCkgKiAxNyArIDEzKTsKKyAgICBJbnRUYWJsZSB0MTsKKyAgICB0
MS5yZXNlcnZlKHJlc2VydmVfc2l6ZSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBrZXlz
KSB7CisgICAgICB0MS5lbXBsYWNlKGtleSBeIHNlZWQpOworICAgIH0KKworICAgIGF1dG8gcHJv
YmVfaGlzdG9ncmFtID0gR2V0SGFzaHRhYmxlRGVidWdOdW1Qcm9iZXNIaXN0b2dyYW0odDEpOwor
ICAgIHN0YXRzLmFsbF9wcm9iZXNfaGlzdG9ncmFtLnJlc2l6ZSgKKyAgICAgICAgc3RkOjptYXgo
c3RhdHMuYWxsX3Byb2Jlc19oaXN0b2dyYW0uc2l6ZSgpLCBwcm9iZV9oaXN0b2dyYW0uc2l6ZSgp
KSk7CisgICAgc3RkOjp0cmFuc2Zvcm0ocHJvYmVfaGlzdG9ncmFtLmJlZ2luKCksIHByb2JlX2hp
c3RvZ3JhbS5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICBzdGF0cy5hbGxfcHJvYmVzX2hpc3Rv
Z3JhbS5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgIHN0YXRzLmFsbF9wcm9iZXNfaGlzdG9n
cmFtLmJlZ2luKCksIHN0ZDo6cGx1czxzaXplX3Q+KCkpOworCisgICAgc2l6ZV90IHRvdGFsX3By
b2JlX3NlcV9sZW5ndGggPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvYmVfaGlz
dG9ncmFtLnNpemUoKTsgKytpKSB7CisgICAgICB0b3RhbF9wcm9iZV9zZXFfbGVuZ3RoICs9IGkg
KiBwcm9iZV9oaXN0b2dyYW1baV07CisgICAgfQorICAgIHN0YXRzLnNpbmdsZV90YWJsZV9yYXRp
b3MucHVzaF9iYWNrKHRvdGFsX3Byb2JlX3NlcV9sZW5ndGggKiAxLjAgLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMuc2l6ZSgpKTsKKyAgICB0MS5lcmFzZSh0
MS5iZWdpbigpLCB0MS5lbmQoKSk7CisgIH0KKyAgcmV0dXJuIHN0YXRzOworfQorCitFeHBlY3Rl
ZFN0YXRzIFhvclNlZWRFeHBlY3RlZFN0YXRzKCkgeworICBjb25zdGV4cHIgYm9vbCBrUmFuZG9t
aXplc0luc2VydHMgPQorI2lmIE5ERUJVRworICAgICAgZmFsc2U7CisjZWxzZSAgIC8vIE5ERUJV
RworICAgICAgdHJ1ZTsKKyNlbmRpZiAgLy8gTkRFQlVHCisKKyAgLy8gVGhlIGVmZmVjdGl2ZSBs
b2FkIGZhY3RvciBpcyBsYXJnZXIgaW4gbm9uLW9wdCBtb2RlIGJlY2F1c2Ugd2UgaW5zZXJ0Cisg
IC8vIGVsZW1lbnRzIG91dCBvZiBvcmRlci4KKyAgc3dpdGNoIChjb250YWluZXJfaW50ZXJuYWw6
Okdyb3VwOjprV2lkdGgpIHsKKyAgICBjYXNlIDg6CisgICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNl
cnRzKSB7CisgIHJldHVybiB7MC4wNSwKKyAgICAgICAgICAxLjAsCisgICAgICAgICAge3swLjk1
LCAwLjV9fSwKKyAgICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgMn0sIHswLjk5OSwgNH0sIHsw
Ljk5OTksIDEwfX19OworICAgICAgfSBlbHNlIHsKKyAgcmV0dXJuIHswLjA1LAorICAgICAgICAg
IDIuMCwKKyAgICAgICAgICB7ezAuOTUsIDAuMX19LAorICAgICAgICAgIHt7MC45NSwgMH0sIHsw
Ljk5LCAyfSwgezAuOTk5LCA0fSwgezAuOTk5OSwgMTB9fX07CisgICAgICB9CisgICAgICBicmVh
azsKKyAgICBjYXNlIDE2OgorICAgICAgaWYgKGtSYW5kb21pemVzSW5zZXJ0cykgeworICAgICAg
ICByZXR1cm4gezAuMSwKKyAgICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgICAge3sw
Ljk1LCAwLjF9fSwKKyAgICAgICAgICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgMX0sIHswLjk5
OSwgOH0sIHswLjk5OTksIDE1fX19OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHsw
LjA1LAorICAgICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgICB7ezAuOTUsIDAuMDV9
fSwKKyAgICAgICAgICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgMX0sIHswLjk5OSwgNH0sIHsw
Ljk5OTksIDEwfX19OworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
IEFCU0xfUkFXX0xPRyhGQVRBTCwgIiVzIiwgIlVua25vd24gR3JvdXAgd2lkdGgiKTsKKyAgfQor
ICByZXR1cm4ge307Cit9CitURVNUKFRhYmxlLCBESVNBQkxFRF9FbnN1cmVOb25RdWFkcmF0aWNU
b3BOWG9yU2VlZEJ5UHJvYmVTZXFMZW5ndGgpIHsKKyAgUHJvYmVTdGF0c1BlclNpemUgc3RhdHM7
CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gc2l6ZXMgPSB7R3JvdXA6OmtXaWR0aCA8PCA1LCBHcm91
cDo6a1dpZHRoIDw8IDEwfTsKKyAgZm9yIChzaXplX3Qgc2l6ZSA6IHNpemVzKSB7CisgICAgc3Rh
dHNbc2l6ZV0gPQorICAgICAgICBDb2xsZWN0UHJvYmVTdGF0c09uS2V5c1hvcmVkV2l0aFNlZWQo
Q29sbGVjdEJhZE1lcmdlS2V5cyhzaXplKSwgMjAwKTsKKyAgfQorICBhdXRvIGV4cGVjdGVkID0g
WG9yU2VlZEV4cGVjdGVkU3RhdHMoKTsKKyAgZm9yIChzaXplX3Qgc2l6ZSA6IHNpemVzKSB7Cisg
ICAgYXV0byYgc3RhdCA9IHN0YXRzW3NpemVdOworICAgIFZlcmlmeVN0YXRzKHNpemUsIGV4cGVj
dGVkLCBzdGF0KTsKKyAgfQorfQorCisvLyBDb2xsZWN0IHRvdGFsIFByb2JlU3RhdHMgb24gbnVt
X2l0ZXJzIGl0ZXJhdGlvbnMgb2YgdGhlIGZvbGxvd2luZyBhbGdvcml0aG06CisvLyAxLiBDcmVh
dGUgbmV3IHRhYmxlCisvLyAyLiBTZWxlY3QgMTAlIG9mIGtleXMgYW5kIGluc2VydCAxMCBlbGVt
ZW50cyBrZXkgKiAxNyArIGogKiAxMworLy8gMy4gQ29sbGVjdCBQcm9iZVN0YXRzIGZyb20gZmlu
YWwgdGFibGUKK1Byb2JlU3RhdHMgQ29sbGVjdFByb2JlU3RhdHNPbkxpbmVhcmx5VHJhbnNmb3Jt
ZWRLZXlzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGludDY0X3Q+JiBrZXlzLCBzaXplX3QgbnVt
X2l0ZXJzKSB7CisgIFByb2JlU3RhdHMgc3RhdHM7CisKKyAgc3RkOjpyYW5kb21fZGV2aWNlIHJk
OworICBzdGQ6Om10MTk5Mzcgcm5nKHJkKCkpOworICBhdXRvIGxpbmVhcl90cmFuc2Zvcm0gPSBb
XShzaXplX3QgeCwgc2l6ZV90IHkpIHsgcmV0dXJuIHggKiAxNyArIHkgKiAxMzsgfTsKKyAgc3Rk
Ojp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248c2l6ZV90PiBkaXN0KDAsIGtleXMuc2l6ZSgpLTEp
OworICB3aGlsZSAobnVtX2l0ZXJzLS0pIHsKKyAgICBJbnRUYWJsZSB0MTsKKyAgICBzaXplX3Qg
bnVtX2tleXMgPSBrZXlzLnNpemUoKSAvIDEwOworICAgIHNpemVfdCBzdGFydCA9IGRpc3Qocm5n
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBudW1fa2V5czsgKytpKSB7CisgICAgICBm
b3IgKHNpemVfdCBqID0gMDsgaiAhPSAxMDsgKytqKSB7CisgICAgICAgIHQxLmVtcGxhY2UobGlu
ZWFyX3RyYW5zZm9ybShrZXlzWyhpICsgc3RhcnQpICUga2V5cy5zaXplKCldLCBqKSk7CisgICAg
ICB9CisgICAgfQorCisgICAgYXV0byBwcm9iZV9oaXN0b2dyYW0gPSBHZXRIYXNodGFibGVEZWJ1
Z051bVByb2Jlc0hpc3RvZ3JhbSh0MSk7CisgICAgc3RhdHMuYWxsX3Byb2Jlc19oaXN0b2dyYW0u
cmVzaXplKAorICAgICAgICBzdGQ6Om1heChzdGF0cy5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5zaXpl
KCksIHByb2JlX2hpc3RvZ3JhbS5zaXplKCkpKTsKKyAgICBzdGQ6OnRyYW5zZm9ybShwcm9iZV9o
aXN0b2dyYW0uYmVnaW4oKSwgcHJvYmVfaGlzdG9ncmFtLmVuZCgpLAorICAgICAgICAgICAgICAg
ICAgIHN0YXRzLmFsbF9wcm9iZXNfaGlzdG9ncmFtLmJlZ2luKCksCisgICAgICAgICAgICAgICAg
ICAgc3RhdHMuYWxsX3Byb2Jlc19oaXN0b2dyYW0uYmVnaW4oKSwgc3RkOjpwbHVzPHNpemVfdD4o
KSk7CisKKyAgICBzaXplX3QgdG90YWxfcHJvYmVfc2VxX2xlbmd0aCA9IDA7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcm9iZV9oaXN0b2dyYW0uc2l6ZSgpOyArK2kpIHsKKyAgICAgIHRv
dGFsX3Byb2JlX3NlcV9sZW5ndGggKz0gaSAqIHByb2JlX2hpc3RvZ3JhbVtpXTsKKyAgICB9Cisg
ICAgc3RhdHMuc2luZ2xlX3RhYmxlX3JhdGlvcy5wdXNoX2JhY2sodG90YWxfcHJvYmVfc2VxX2xl
bmd0aCAqIDEuMCAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDEu
c2l6ZSgpKTsKKyAgICB0MS5lcmFzZSh0MS5iZWdpbigpLCB0MS5lbmQoKSk7CisgIH0KKyAgcmV0
dXJuIHN0YXRzOworfQorCitFeHBlY3RlZFN0YXRzIExpbmVhclRyYW5zZm9ybUV4cGVjdGVkU3Rh
dHMoKSB7CisgIGNvbnN0ZXhwciBib29sIGtSYW5kb21pemVzSW5zZXJ0cyA9CisjaWYgTkRFQlVH
CisgICAgICBmYWxzZTsKKyNlbHNlICAgLy8gTkRFQlVHCisgICAgICB0cnVlOworI2VuZGlmICAv
LyBOREVCVUcKKworICAvLyBUaGUgZWZmZWN0aXZlIGxvYWQgZmFjdG9yIGlzIGxhcmdlciBpbiBu
b24tb3B0IG1vZGUgYmVjYXVzZSB3ZSBpbnNlcnQKKyAgLy8gZWxlbWVudHMgb3V0IG9mIG9yZGVy
LgorICBzd2l0Y2ggKGNvbnRhaW5lcl9pbnRlcm5hbDo6R3JvdXA6OmtXaWR0aCkgeworICAgIGNh
c2UgODoKKyAgICAgIGlmIChrUmFuZG9taXplc0luc2VydHMpIHsKKyAgICAgICAgcmV0dXJuIHsw
LjEsCisgICAgICAgICAgICAgICAgMC41LAorICAgICAgICAgICAgICAgIHt7MC45NSwgMC4zfX0s
CisgICAgICAgICAgICAgICAge3swLjk1LCAwfSwgezAuOTksIDF9LCB7MC45OTksIDh9LCB7MC45
OTk5LCAxNX19fTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiB7MC4xNSwKKyAgICAg
ICAgICAgICAgICAwLjUsCisgICAgICAgICAgICAgICAge3swLjk1LCAwLjN9fSwKKyAgICAgICAg
ICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgM30sIHswLjk5OSwgMTV9LCB7MC45OTk5LCAyNX19
fTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAgICBpZiAoa1JhbmRv
bWl6ZXNJbnNlcnRzKSB7CisgICAgICAgIHJldHVybiB7MC4xLAorICAgICAgICAgICAgICAgIDAu
NCwKKyAgICAgICAgICAgICAgICB7ezAuOTUsIDAuM319LAorICAgICAgICAgICAgICAgIHt7MC45
NSwgMH0sIHswLjk5LCAxfSwgezAuOTk5LCA4fSwgezAuOTk5OSwgMTV9fX07CisgICAgICB9IGVs
c2UgeworICAgICAgICByZXR1cm4gezAuMDUsCisgICAgICAgICAgICAgICAgMC4yLAorICAgICAg
ICAgICAgICAgIHt7MC45NSwgMC4xfX0sCisgICAgICAgICAgICAgICAge3swLjk1LCAwfSwgezAu
OTksIDF9LCB7MC45OTksIDZ9LCB7MC45OTk5LCAxMH19fTsKKyAgICAgIH0KKyAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICBBQlNMX1JBV19MT0coRkFUQUwsICIlcyIsICJVbmtub3du
IEdyb3VwIHdpZHRoIik7CisgIH0KKyAgcmV0dXJuIHt9OworfQorVEVTVChUYWJsZSwgRElTQUJM
RURfRW5zdXJlTm9uUXVhZHJhdGljVG9wTkxpbmVhclRyYW5zZm9ybUJ5UHJvYmVTZXFMZW5ndGgp
IHsKKyAgUHJvYmVTdGF0c1BlclNpemUgc3RhdHM7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gc2l6
ZXMgPSB7R3JvdXA6OmtXaWR0aCA8PCA1LCBHcm91cDo6a1dpZHRoIDw8IDEwfTsKKyAgZm9yIChz
aXplX3Qgc2l6ZSA6IHNpemVzKSB7CisgICAgc3RhdHNbc2l6ZV0gPSBDb2xsZWN0UHJvYmVTdGF0
c09uTGluZWFybHlUcmFuc2Zvcm1lZEtleXMoCisgICAgICAgIENvbGxlY3RCYWRNZXJnZUtleXMo
c2l6ZSksIDMwMCk7CisgIH0KKyAgYXV0byBleHBlY3RlZCA9IExpbmVhclRyYW5zZm9ybUV4cGVj
dGVkU3RhdHMoKTsKKyAgZm9yIChzaXplX3Qgc2l6ZSA6IHNpemVzKSB7CisgICAgYXV0byYgc3Rh
dCA9IHN0YXRzW3NpemVdOworICAgIFZlcmlmeVN0YXRzKHNpemUsIGV4cGVjdGVkLCBzdGF0KTsK
KyAgfQorfQorCitURVNUKFRhYmxlLCBFcmFzZUNvbGxpc2lvbikgeworICBCYWRUYWJsZSB0Owor
CisgIC8vIDEgMiAzCisgIHQuZW1wbGFjZSgxKTsKKyAgdC5lbXBsYWNlKDIpOworICB0LmVtcGxh
Y2UoMyk7CisgIEVYUEVDVF9USEFUKCp0LmZpbmQoMSksIDEpOworICBFWFBFQ1RfVEhBVCgqdC5m
aW5kKDIpLCAyKTsKKyAgRVhQRUNUX1RIQVQoKnQuZmluZCgzKSwgMyk7CisgIEVYUEVDVF9FUSgz
LCB0LnNpemUoKSk7CisKKyAgLy8gMSBERUxFVEVEIDMKKyAgdC5lcmFzZSh0LmZpbmQoMikpOwor
ICBFWFBFQ1RfVEhBVCgqdC5maW5kKDEpLCAxKTsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDIpID09
IHQuZW5kKCkpOworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDMpLCAzKTsKKyAgRVhQRUNUX0VRKDIs
IHQuc2l6ZSgpKTsKKworICAvLyBERUxFVEVEIERFTEVURUQgMworICB0LmVyYXNlKHQuZmluZCgx
KSk7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgxKSA9PSB0LmVuZCgpKTsKKyAgRVhQRUNUX1RSVUUo
dC5maW5kKDIpID09IHQuZW5kKCkpOworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDMpLCAzKTsKKyAg
RVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsKKworICAvLyBERUxFVEVEIERFTEVURUQgREVMRVRFRAor
ICB0LmVyYXNlKHQuZmluZCgzKSk7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgxKSA9PSB0LmVuZCgp
KTsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDIpID09IHQuZW5kKCkpOworICBFWFBFQ1RfVFJVRSh0
LmZpbmQoMykgPT0gdC5lbmQoKSk7CisgIEVYUEVDVF9FUSgwLCB0LnNpemUoKSk7Cit9CisKK1RF
U1QoVGFibGUsIEVyYXNlSW5zZXJ0UHJvYmluZykgeworICBCYWRUYWJsZSB0KDEwMCk7CisKKyAg
Ly8gMSAyIDMgNAorICB0LmVtcGxhY2UoMSk7CisgIHQuZW1wbGFjZSgyKTsKKyAgdC5lbXBsYWNl
KDMpOworICB0LmVtcGxhY2UoNCk7CisKKyAgLy8gMSBERUxFVEVEIDMgREVMRVRFRAorICB0LmVy
YXNlKHQuZmluZCgyKSk7CisgIHQuZXJhc2UodC5maW5kKDQpKTsKKworICAvLyAxIDEwIDMgMTEg
MTIKKyAgdC5lbXBsYWNlKDEwKTsKKyAgdC5lbXBsYWNlKDExKTsKKyAgdC5lbXBsYWNlKDEyKTsK
KworICBFWFBFQ1RfRVEoNSwgdC5zaXplKCkpOworICBFWFBFQ1RfVEhBVCh0LCBVbm9yZGVyZWRF
bGVtZW50c0FyZSgxLCAxMCwgMywgMTEsIDEyKSk7Cit9CisKK1RFU1QoVGFibGUsIENsZWFyKSB7
CisgIEludFRhYmxlIHQ7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsKKyAg
dC5jbGVhcigpOworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7CisgIGF1dG8g
cmVzID0gdC5lbXBsYWNlKDApOworICBFWFBFQ1RfVFJVRShyZXMuc2Vjb25kKTsKKyAgRVhQRUNU
X0VRKDEsIHQuc2l6ZSgpKTsKKyAgdC5jbGVhcigpOworICBFWFBFQ1RfRVEoMCwgdC5zaXplKCkp
OworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7Cit9CisKK1RFU1QoVGFibGUs
IFN3YXApIHsKKyAgSW50VGFibGUgdDsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDApID09IHQuZW5k
KCkpOworICBhdXRvIHJlcyA9IHQuZW1wbGFjZSgwKTsKKyAgRVhQRUNUX1RSVUUocmVzLnNlY29u
ZCk7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIEludFRhYmxlIHU7CisgIHQuc3dhcCh1
KTsKKyAgRVhQRUNUX0VRKDAsIHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsK
KyAgRVhQRUNUX1RSVUUodC5maW5kKDApID09IHQuZW5kKCkpOworICBFWFBFQ1RfVEhBVCgqdS5m
aW5kKDApLCAwKTsKK30KKworVEVTVChUYWJsZSwgUmVoYXNoKSB7CisgIEludFRhYmxlIHQ7Cisg
IEVYUEVDVF9UUlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsKKyAgdC5lbXBsYWNlKDApOworICB0
LmVtcGxhY2UoMSk7CisgIEVYUEVDVF9FUSgyLCB0LnNpemUoKSk7CisgIHQucmVoYXNoKDEyOCk7
CisgIEVYUEVDVF9FUSgyLCB0LnNpemUoKSk7CisgIEVYUEVDVF9USEFUKCp0LmZpbmQoMCksIDAp
OworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDEpLCAxKTsKK30KKworVEVTVChUYWJsZSwgUmVoYXNo
RG9lc05vdFJlaGFzaFdoZW5Ob3ROZWNlc3NhcnkpIHsKKyAgSW50VGFibGUgdDsKKyAgdC5lbXBs
YWNlKDApOworICB0LmVtcGxhY2UoMSk7CisgIGF1dG8qIHAgPSAmKnQuZmluZCgwKTsKKyAgdC5y
ZWhhc2goMSk7CisgIEVYUEVDVF9FUShwLCAmKnQuZmluZCgwKSk7Cit9CisKK1RFU1QoVGFibGUs
IFJlaGFzaFplcm9Eb2VzTm90QWxsb2NhdGVPbkVtcHR5VGFibGUpIHsKKyAgSW50VGFibGUgdDsK
KyAgdC5yZWhhc2goMCk7CisgIEVYUEVDVF9FUSgwLCB0LmJ1Y2tldF9jb3VudCgpKTsKK30KKwor
VEVTVChUYWJsZSwgUmVoYXNoWmVyb0RlYWxsb2NhdGVzRW1wdHlUYWJsZSkgeworICBJbnRUYWJs
ZSB0OworICB0LmVtcGxhY2UoMCk7CisgIHQuY2xlYXIoKTsKKyAgRVhQRUNUX05FKDAsIHQuYnVj
a2V0X2NvdW50KCkpOworICB0LnJlaGFzaCgwKTsKKyAgRVhQRUNUX0VRKDAsIHQuYnVja2V0X2Nv
dW50KCkpOworfQorCitURVNUKFRhYmxlLCBSZWhhc2haZXJvRm9yY2VzUmVoYXNoKSB7CisgIElu
dFRhYmxlIHQ7CisgIHQuZW1wbGFjZSgwKTsKKyAgdC5lbXBsYWNlKDEpOworICBhdXRvKiBwID0g
Jip0LmZpbmQoMCk7CisgIHQucmVoYXNoKDApOworICBFWFBFQ1RfTkUocCwgJip0LmZpbmQoMCkp
OworfQorCitURVNUKFRhYmxlLCBDb25zdHJ1Y3RGcm9tSW5pdExpc3QpIHsKKyAgdXNpbmcgUCA9
IHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+OworICBzdHJ1Y3QgUSB7CisgICAg
b3BlcmF0b3IgUCgpIGNvbnN0IHsgcmV0dXJuIHt9OyB9CisgIH07CisgIFN0cmluZ1RhYmxlIHQg
PSB7UCgpLCBRKCksIHt9LCB7e30sIHt9fX07Cit9CisKK1RFU1QoVGFibGUsIENvcHlDb25zdHJ1
Y3QpIHsKKyAgSW50VGFibGUgdDsKKyAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOworICB0LmVt
cGxhY2UoMCk7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIHsKKyAgICBJbnRUYWJsZSB1
KHQpOworICAgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKHQubWF4X2xv
YWRfZmFjdG9yKCksIHUubWF4X2xvYWRfZmFjdG9yKCkpOworICAgIEVYUEVDVF9USEFUKCp1LmZp
bmQoMCksIDApOworICB9CisgIHsKKyAgICBJbnRUYWJsZSB1e3R9OworICAgIEVYUEVDVF9FUSgx
LCB1LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKHQubWF4X2xvYWRfZmFjdG9yKCksIHUubWF4X2xv
YWRfZmFjdG9yKCkpOworICAgIEVYUEVDVF9USEFUKCp1LmZpbmQoMCksIDApOworICB9CisgIHsK
KyAgICBJbnRUYWJsZSB1ID0gdDsKKyAgICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOworICAgIEVY
UEVDVF9FUSh0Lm1heF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKKyAgICBF
WFBFQ1RfVEhBVCgqdS5maW5kKDApLCAwKTsKKyAgfQorfQorCitURVNUKFRhYmxlLCBDb3B5Q29u
c3RydWN0V2l0aEFsbG9jKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIHQubWF4X2xvYWRfZmFjdG9y
KC4zMjFmKTsKKyAgdC5lbXBsYWNlKCJhIiwgImIiKTsKKyAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgp
KTsKKyAgU3RyaW5nVGFibGUgdSh0LCBBbGxvYzxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6
c3RyaW5nPj4oKSk7CisgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7CisgIEVYUEVDVF9FUSh0Lm1h
eF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKKyAgRVhQRUNUX1RIQVQoKnUu
ZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7Cit9CisKK3N0cnVjdCBFeHBsaWNpdEFsbG9jSW50
VGFibGUKKyAgICA6IHJhd19oYXNoX3NldDxJbnRQb2xpY3ksIGNvbnRhaW5lcl9pbnRlcm5hbDo6
aGFzaF9kZWZhdWx0X2hhc2g8aW50NjRfdD4sCisgICAgICAgICAgICAgICAgICAgc3RkOjplcXVh
bF90bzxpbnQ2NF90PiwgQWxsb2M8aW50NjRfdD4+IHsKKyAgRXhwbGljaXRBbGxvY0ludFRhYmxl
KCkge30KK307CisKK1RFU1QoVGFibGUsIEFsbG9jV2l0aEV4cGxpY2l0Q3RvcikgeworICBFeHBs
aWNpdEFsbG9jSW50VGFibGUgdDsKKyAgRVhQRUNUX0VRKDAsIHQuc2l6ZSgpKTsKK30KKworVEVT
VChUYWJsZSwgTW92ZUNvbnN0cnVjdCkgeworICB7CisgICAgU3RyaW5nVGFibGUgdDsKKyAgICB0
Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7CisgICAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9sb2Fk
X2ZhY3RvcigpOworICAgIHQuZW1wbGFjZSgiYSIsICJiIik7CisgICAgRVhQRUNUX0VRKDEsIHQu
c2l6ZSgpKTsKKworICAgIFN0cmluZ1RhYmxlIHUoc3RkOjptb3ZlKHQpKTsKKyAgICBFWFBFQ1Rf
RVEoMSwgdS5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZiwgdS5tYXhfbG9hZF9mYWN0b3IoKSk7
CisgICAgRVhQRUNUX1RIQVQoKnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7CisgIH0KKyAg
eworICAgIFN0cmluZ1RhYmxlIHQ7CisgICAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOworICAg
IGNvbnN0IGZsb2F0IGxmID0gdC5tYXhfbG9hZF9mYWN0b3IoKTsKKyAgICB0LmVtcGxhY2UoImEi
LCAiYiIpOworICAgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisKKyAgICBTdHJpbmdUYWJsZSB1
e3N0ZDo6bW92ZSh0KX07CisgICAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEobGYsIHUubWF4X2xvYWRfZmFjdG9yKCkpOworICAgIEVYUEVDVF9USEFUKCp1LmZpbmQoImEi
KSwgUGFpcigiYSIsICJiIikpOworICB9CisgIHsKKyAgICBTdHJpbmdUYWJsZSB0OworICAgIHQu
bWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsKKyAgICBjb25zdCBmbG9hdCBsZiA9IHQubWF4X2xvYWRf
ZmFjdG9yKCk7CisgICAgdC5lbXBsYWNlKCJhIiwgImIiKTsKKyAgICBFWFBFQ1RfRVEoMSwgdC5z
aXplKCkpOworCisgICAgU3RyaW5nVGFibGUgdSA9IHN0ZDo6bW92ZSh0KTsKKyAgICBFWFBFQ1Rf
RVEoMSwgdS5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZiwgdS5tYXhfbG9hZF9mYWN0b3IoKSk7
CisgICAgRVhQRUNUX1RIQVQoKnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7CisgIH0KK30K
KworVEVTVChUYWJsZSwgTW92ZUNvbnN0cnVjdFdpdGhBbGxvYykgeworICBTdHJpbmdUYWJsZSB0
OworICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7CisgIGNvbnN0IGZsb2F0IGxmID0gdC5tYXhf
bG9hZF9mYWN0b3IoKTsKKyAgdC5lbXBsYWNlKCJhIiwgImIiKTsKKyAgRVhQRUNUX0VRKDEsIHQu
c2l6ZSgpKTsKKyAgU3RyaW5nVGFibGUgdShzdGQ6Om1vdmUodCksIEFsbG9jPHN0ZDo6cGFpcjxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PigpKTsKKyAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsK
KyAgRVhQRUNUX0VRKGxmLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKKyAgRVhQRUNUX1RIQVQoKnUu
ZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7Cit9CisKK1RFU1QoVGFibGUsIENvcHlBc3NpZ24p
IHsKKyAgU3RyaW5nVGFibGUgdDsKKyAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOworICB0LmVt
cGxhY2UoImEiLCAiYiIpOworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworICBTdHJpbmdUYWJs
ZSB1OworICB1ID0gdDsKKyAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKHQu
bWF4X2xvYWRfZmFjdG9yKCksIHUubWF4X2xvYWRfZmFjdG9yKCkpOworICBFWFBFQ1RfVEhBVCgq
dS5maW5kKCJhIiksIFBhaXIoImEiLCAiYiIpKTsKK30KKworVEVTVChUYWJsZSwgQ29weVNlbGZB
c3NpZ24pIHsKKyAgU3RyaW5nVGFibGUgdDsKKyAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOwor
ICBjb25zdCBmbG9hdCBsZiA9IHQubWF4X2xvYWRfZmFjdG9yKCk7CisgIHQuZW1wbGFjZSgiYSIs
ICJiIik7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIHQgPSAqJnQ7CisgIEVYUEVDVF9F
USgxLCB0LnNpemUoKSk7CisgIEVYUEVDVF9FUShsZiwgdC5tYXhfbG9hZF9mYWN0b3IoKSk7Cisg
IEVYUEVDVF9USEFUKCp0LmZpbmQoImEiKSwgUGFpcigiYSIsICJiIikpOworfQorCitURVNUKFRh
YmxlLCBNb3ZlQXNzaWduKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIHQubWF4X2xvYWRfZmFjdG9y
KC4zMjFmKTsKKyAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9sb2FkX2ZhY3RvcigpOworICB0LmVt
cGxhY2UoImEiLCAiYiIpOworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworICBTdHJpbmdUYWJs
ZSB1OworICB1ID0gc3RkOjptb3ZlKHQpOworICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOworICBF
WFBFQ1RfRVEobGYsIHUubWF4X2xvYWRfZmFjdG9yKCkpOworICBFWFBFQ1RfVEhBVCgqdS5maW5k
KCJhIiksIFBhaXIoImEiLCAiYiIpKTsKK30KKworVEVTVChUYWJsZSwgRXF1YWxpdHkpIHsKKyAg
U3RyaW5nVGFibGUgdDsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6
OnN0cmluZz4+IHYgPSB7eyJhIiwgImIifSwgeyJhYSIsICJiYiJ9fTsKKyAgdC5pbnNlcnQoc3Rk
OjpiZWdpbih2KSwgc3RkOjplbmQodikpOworICBTdHJpbmdUYWJsZSB1ID0gdDsKKyAgRVhQRUNU
X0VRKHUsIHQpOworfQorCitURVNUKFRhYmxlLCBFcXVhbGl0eTIpIHsKKyAgU3RyaW5nVGFibGUg
dDsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYx
ID0ge3siYSIsICJiIn0sIHsiYWEiLCAiYmIifX07CisgIHQuaW5zZXJ0KHN0ZDo6YmVnaW4odjEp
LCBzdGQ6OmVuZCh2MSkpOworICBTdHJpbmdUYWJsZSB1OworICBzdGQ6OnZlY3RvcjxzdGQ6OnBh
aXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4gdjIgPSB7eyJhIiwgImEifSwgeyJhYSIsICJh
YSJ9fTsKKyAgdS5pbnNlcnQoc3RkOjpiZWdpbih2MiksIHN0ZDo6ZW5kKHYyKSk7CisgIEVYUEVD
VF9ORSh1LCB0KTsKK30KKworVEVTVChUYWJsZSwgRXF1YWxpdHkzKSB7CisgIFN0cmluZ1RhYmxl
IHQ7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PiB2
MSA9IHt7ImIiLCAiYiJ9LCB7ImJiIiwgImJiIn19OworICB0Lmluc2VydChzdGQ6OmJlZ2luKHYx
KSwgc3RkOjplbmQodjEpKTsKKyAgU3RyaW5nVGFibGUgdTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpw
YWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYyID0ge3siYSIsICJhIn0sIHsiYWEiLCAi
YWEifX07CisgIHUuaW5zZXJ0KHN0ZDo6YmVnaW4odjIpLCBzdGQ6OmVuZCh2MikpOworICBFWFBF
Q1RfTkUodSwgdCk7Cit9CisKK1RFU1QoVGFibGUsIE51bURlbGV0ZWRSZWdyZXNzaW9uKSB7Cisg
IEludFRhYmxlIHQ7CisgIHQuZW1wbGFjZSgwKTsKKyAgdC5lcmFzZSh0LmZpbmQoMCkpOworICAv
LyBjb25zdHJ1Y3Qgb3ZlciBhIGRlbGV0ZWQgc2xvdC4KKyAgdC5lbXBsYWNlKDApOworICB0LmNs
ZWFyKCk7Cit9CisKK1RFU1QoVGFibGUsIEZpbmRGdWxsRGVsZXRlZFJlZ3Jlc3Npb24pIHsKKyAg
SW50VGFibGUgdDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB0LmVt
cGxhY2UoaSk7CisgICAgdC5lcmFzZSh0LmZpbmQoaSkpOworICB9CisgIEVYUEVDVF9FUSgwLCB0
LnNpemUoKSk7Cit9CisKK1RFU1QoVGFibGUsIFJlcGxhY2luZ0RlbGV0ZWRTbG90RG9lc05vdFJl
aGFzaCkgeworICBzaXplX3QgbjsKKyAgeworICAgIC8vIENvbXB1dGUgbiBzdWNoIHRoYXQgbiBp
cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMgYmVmb3JlIHJlaGFzaC4KKyAgICBJbnRU
YWJsZSB0OworICAgIHQuZW1wbGFjZSgwKTsKKyAgICBzaXplX3QgYyA9IHQuYnVja2V0X2NvdW50
KCk7CisgICAgZm9yIChuID0gMTsgYyA9PSB0LmJ1Y2tldF9jb3VudCgpOyArK24pIHQuZW1wbGFj
ZShuKTsKKyAgICAtLW47CisgIH0KKyAgSW50VGFibGUgdDsKKyAgdC5yZWhhc2gobik7CisgIGNv
bnN0IHNpemVfdCBjID0gdC5idWNrZXRfY291bnQoKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
IT0gbjsgKytpKSB0LmVtcGxhY2UoaSk7CisgIEVYUEVDVF9FUShjLCB0LmJ1Y2tldF9jb3VudCgp
KSA8PCAicmVoYXNoaW5nIHRocmVzaG9sZCA9ICIgPDwgbjsKKyAgdC5lcmFzZSgwKTsKKyAgdC5l
bXBsYWNlKDApOworICBFWFBFQ1RfRVEoYywgdC5idWNrZXRfY291bnQoKSkgPDwgInJlaGFzaGlu
ZyB0aHJlc2hvbGQgPSAiIDw8IG47Cit9CisKK1RFU1QoVGFibGUsIE5vVGhyb3dNb3ZlQ29uc3Ry
dWN0KSB7CisgIEFTU0VSVF9UUlVFKAorICAgICAgc3RkOjppc19ub3Rocm93X2NvcHlfY29uc3Ry
dWN0aWJsZTxhYnNsOjpIYXNoPGFic2w6OnN0cmluZ192aWV3Pj46OnZhbHVlKTsKKyAgQVNTRVJU
X1RSVUUoc3RkOjppc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTwKKyAgICAgICAgICAgICAg
c3RkOjplcXVhbF90bzxhYnNsOjpzdHJpbmdfdmlldz4+Ojp2YWx1ZSk7CisgIEFTU0VSVF9UUlVF
KHN0ZDo6aXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8c3RkOjphbGxvY2F0b3I8aW50Pj46
OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJs
ZTxTdHJpbmdUYWJsZT46OnZhbHVlKTsKK30KKworVEVTVChUYWJsZSwgTm9UaHJvd01vdmVBc3Np
Z24pIHsKKyAgQVNTRVJUX1RSVUUoCisgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25h
YmxlPGFic2w6Okhhc2g8YWJzbDo6c3RyaW5nX3ZpZXc+Pjo6dmFsdWUpOworICBBU1NFUlRfVFJV
RSgKKyAgICAgIHN0ZDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8c3RkOjplcXVhbF90bzxh
YnNsOjpzdHJpbmdfdmlldz4+Ojp2YWx1ZSk7CisgIEFTU0VSVF9UUlVFKHN0ZDo6aXNfbm90aHJv
d19tb3ZlX2Fzc2lnbmFibGU8c3RkOjphbGxvY2F0b3I8aW50Pj46OnZhbHVlKTsKKyAgQVNTRVJU
X1RSVUUoCisgICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPHN0ZDo6YWxsb2NhdG9yPGludD4+
Ojppc19hbHdheXNfZXF1YWw6OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc19ub3Rocm93
X21vdmVfYXNzaWduYWJsZTxTdHJpbmdUYWJsZT46OnZhbHVlKTsKK30KKworVEVTVChUYWJsZSwg
Tm9UaHJvd1N3YXBwYWJsZSkgeworICBBU1NFUlRfVFJVRSgKKyAgICAgIGNvbnRhaW5lcl9pbnRl
cm5hbDo6SXNOb1Rocm93U3dhcHBhYmxlPGFic2w6Okhhc2g8YWJzbDo6c3RyaW5nX3ZpZXc+Pigp
KTsKKyAgQVNTRVJUX1RSVUUoY29udGFpbmVyX2ludGVybmFsOjpJc05vVGhyb3dTd2FwcGFibGU8
CisgICAgICAgICAgICAgIHN0ZDo6ZXF1YWxfdG88YWJzbDo6c3RyaW5nX3ZpZXc+PigpKTsKKyAg
QVNTRVJUX1RSVUUoY29udGFpbmVyX2ludGVybmFsOjpJc05vVGhyb3dTd2FwcGFibGU8c3RkOjph
bGxvY2F0b3I8aW50Pj4oKSk7CisgIEVYUEVDVF9UUlVFKGNvbnRhaW5lcl9pbnRlcm5hbDo6SXNO
b1Rocm93U3dhcHBhYmxlPFN0cmluZ1RhYmxlPigpKTsKK30KKworVEVTVChUYWJsZSwgSGV0ZXJv
Z2VuZW91c0xvb2t1cCkgeworICBzdHJ1Y3QgSGFzaCB7CisgICAgc2l6ZV90IG9wZXJhdG9yKCko
aW50NjRfdCBpKSBjb25zdCB7IHJldHVybiBpOyB9CisgICAgc2l6ZV90IG9wZXJhdG9yKCkoZG91
YmxlIGkpIGNvbnN0IHsKKyAgICAgIEFERF9GQUlMVVJFKCk7CisgICAgICByZXR1cm4gaTsKKyAg
ICB9CisgIH07CisgIHN0cnVjdCBFcSB7CisgICAgYm9vbCBvcGVyYXRvcigpKGludDY0X3QgYSwg
aW50NjRfdCBiKSBjb25zdCB7IHJldHVybiBhID09IGI7IH0KKyAgICBib29sIG9wZXJhdG9yKCko
ZG91YmxlIGEsIGludDY0X3QgYikgY29uc3QgeworICAgICAgQUREX0ZBSUxVUkUoKTsKKyAgICAg
IHJldHVybiBhID09IGI7CisgICAgfQorICAgIGJvb2wgb3BlcmF0b3IoKShpbnQ2NF90IGEsIGRv
dWJsZSBiKSBjb25zdCB7CisgICAgICBBRERfRkFJTFVSRSgpOworICAgICAgcmV0dXJuIGEgPT0g
YjsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvcigpKGRvdWJsZSBhLCBkb3VibGUgYikgY29uc3Qg
eworICAgICAgQUREX0ZBSUxVUkUoKTsKKyAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorICB9
OworCisgIHN0cnVjdCBUSGFzaCB7CisgICAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOwor
ICAgIHNpemVfdCBvcGVyYXRvcigpKGludDY0X3QgaSkgY29uc3QgeyByZXR1cm4gaTsgfQorICAg
IHNpemVfdCBvcGVyYXRvcigpKGRvdWJsZSBpKSBjb25zdCB7IHJldHVybiBpOyB9CisgIH07Cisg
IHN0cnVjdCBURXEgeworICAgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKyAgICBib29s
IG9wZXJhdG9yKCkoaW50NjRfdCBhLCBpbnQ2NF90IGIpIGNvbnN0IHsgcmV0dXJuIGEgPT0gYjsg
fQorICAgIGJvb2wgb3BlcmF0b3IoKShkb3VibGUgYSwgaW50NjRfdCBiKSBjb25zdCB7IHJldHVy
biBhID09IGI7IH0KKyAgICBib29sIG9wZXJhdG9yKCkoaW50NjRfdCBhLCBkb3VibGUgYikgY29u
c3QgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgYm9vbCBvcGVyYXRvcigpKGRvdWJsZSBhLCBkb3Vi
bGUgYikgY29uc3QgeyByZXR1cm4gYSA9PSBiOyB9CisgIH07CisKKyAgcmF3X2hhc2hfc2V0PElu
dFBvbGljeSwgSGFzaCwgRXEsIEFsbG9jPGludDY0X3Q+PiBzezAsIDEsIDJ9OworICAvLyBJdCB3
aWxsIGNvbnZlcnQgdG8gaW50NjRfdCBiZWZvcmUgdGhlIHF1ZXJ5LgorICBFWFBFQ1RfRVEoMSwg
KnMuZmluZChkb3VibGV7MS4xfSkpOworCisgIHJhd19oYXNoX3NldDxJbnRQb2xpY3ksIFRIYXNo
LCBURXEsIEFsbG9jPGludDY0X3Q+PiB0c3swLCAxLCAyfTsKKyAgLy8gSXQgd2lsbCB0cnkgdG8g
dXNlIHRoZSBkb3VibGUsIGFuZCBmYWlsIHRvIGZpbmQgdGhlIG9iamVjdC4KKyAgRVhQRUNUX1RS
VUUodHMuZmluZCgxLjEpID09IHRzLmVuZCgpKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFRhYmxl
PgordXNpbmcgQ2FsbEZpbmQgPSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VGFibGUmPigpLmZpbmQo
MTcpKTsKKwordGVtcGxhdGUgPGNsYXNzIFRhYmxlPgordXNpbmcgQ2FsbEVyYXNlID0gZGVjbHR5
cGUoc3RkOjpkZWNsdmFsPFRhYmxlJj4oKS5lcmFzZSgxNykpOworCit0ZW1wbGF0ZSA8Y2xhc3Mg
VGFibGU+Cit1c2luZyBDYWxsRXh0cmFjdCA9IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUYWJsZSY+
KCkuZXh0cmFjdCgxNykpOworCit0ZW1wbGF0ZSA8Y2xhc3MgVGFibGU+Cit1c2luZyBDYWxsUHJl
ZmV0Y2ggPSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VGFibGUmPigpLnByZWZldGNoKDE3KSk7CisK
K3RlbXBsYXRlIDxjbGFzcyBUYWJsZT4KK3VzaW5nIENhbGxDb3VudCA9IGRlY2x0eXBlKHN0ZDo6
ZGVjbHZhbDxUYWJsZSY+KCkuY291bnQoMTcpKTsKKwordGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBl
bmFtZT4gY2xhc3MgQywgY2xhc3MgVGFibGUsIGNsYXNzID0gdm9pZD4KK3N0cnVjdCBWZXJpZnlS
ZXN1bHRPZiA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBl
bmFtZT4gY2xhc3MgQywgY2xhc3MgVGFibGU+CitzdHJ1Y3QgVmVyaWZ5UmVzdWx0T2Y8QywgVGFi
bGUsIGFic2w6OnZvaWRfdDxDPFRhYmxlPj4+IDogc3RkOjp0cnVlX3R5cGUge307CisKK1RFU1Qo
VGFibGUsIEhldGVyb2dlbmVvdXNMb29rdXBPdmVybG9hZHMpIHsKKyAgdXNpbmcgTm9uVHJhbnNw
YXJlbnRUYWJsZSA9CisgICAgICByYXdfaGFzaF9zZXQ8U3RyaW5nUG9saWN5LCBhYnNsOjpIYXNo
PGFic2w6OnN0cmluZ192aWV3PiwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OmVxdWFsX3RvPGFi
c2w6OnN0cmluZ192aWV3Piwgc3RkOjphbGxvY2F0b3I8aW50Pj47CisKKyAgRVhQRUNUX0ZBTFNF
KChWZXJpZnlSZXN1bHRPZjxDYWxsRmluZCwgTm9uVHJhbnNwYXJlbnRUYWJsZT4oKSkpOworICBF
WFBFQ1RfRkFMU0UoKFZlcmlmeVJlc3VsdE9mPENhbGxFcmFzZSwgTm9uVHJhbnNwYXJlbnRUYWJs
ZT4oKSkpOworICBFWFBFQ1RfRkFMU0UoKFZlcmlmeVJlc3VsdE9mPENhbGxFeHRyYWN0LCBOb25U
cmFuc3BhcmVudFRhYmxlPigpKSk7CisgIEVYUEVDVF9GQUxTRSgoVmVyaWZ5UmVzdWx0T2Y8Q2Fs
bFByZWZldGNoLCBOb25UcmFuc3BhcmVudFRhYmxlPigpKSk7CisgIEVYUEVDVF9GQUxTRSgoVmVy
aWZ5UmVzdWx0T2Y8Q2FsbENvdW50LCBOb25UcmFuc3BhcmVudFRhYmxlPigpKSk7CisKKyAgdXNp
bmcgVHJhbnNwYXJlbnRUYWJsZSA9IHJhd19oYXNoX3NldDwKKyAgICAgIFN0cmluZ1BvbGljeSwK
KyAgICAgIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZhdWx0X2hhc2g8YWJzbDo6
c3RyaW5nX3ZpZXc+LAorICAgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2RlZmF1
bHRfZXE8YWJzbDo6c3RyaW5nX3ZpZXc+LAorICAgICAgc3RkOjphbGxvY2F0b3I8aW50Pj47CisK
KyAgRVhQRUNUX1RSVUUoKFZlcmlmeVJlc3VsdE9mPENhbGxGaW5kLCBUcmFuc3BhcmVudFRhYmxl
PigpKSk7CisgIEVYUEVDVF9UUlVFKChWZXJpZnlSZXN1bHRPZjxDYWxsRXJhc2UsIFRyYW5zcGFy
ZW50VGFibGU+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKFZlcmlmeVJlc3VsdE9mPENhbGxFeHRyYWN0
LCBUcmFuc3BhcmVudFRhYmxlPigpKSk7CisgIEVYUEVDVF9UUlVFKChWZXJpZnlSZXN1bHRPZjxD
YWxsUHJlZmV0Y2gsIFRyYW5zcGFyZW50VGFibGU+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKFZlcmlm
eVJlc3VsdE9mPENhbGxDb3VudCwgVHJhbnNwYXJlbnRUYWJsZT4oKSkpOworfQorCisvLyBUT0RP
KGFsa2lzKTogRXhwYW5kIGl0ZXJhdG9yIHRlc3RzLgorVEVTVChJdGVyYXRvciwgSXNEZWZhdWx0
Q29uc3RydWN0aWJsZSkgeworICBTdHJpbmdUYWJsZTo6aXRlcmF0b3IgaTsKKyAgRVhQRUNUX1RS
VUUoaSA9PSBTdHJpbmdUYWJsZTo6aXRlcmF0b3IoKSk7Cit9CisKK1RFU1QoQ29uc3RJdGVyYXRv
ciwgSXNEZWZhdWx0Q29uc3RydWN0aWJsZSkgeworICBTdHJpbmdUYWJsZTo6Y29uc3RfaXRlcmF0
b3IgaTsKKyAgRVhQRUNUX1RSVUUoaSA9PSBTdHJpbmdUYWJsZTo6Y29uc3RfaXRlcmF0b3IoKSk7
Cit9CisKK1RFU1QoSXRlcmF0b3IsIENvbnZlcnRzVG9Db25zdEl0ZXJhdG9yKSB7CisgIFN0cmlu
Z1RhYmxlOjppdGVyYXRvciBpOworICBFWFBFQ1RfVFJVRShpID09IFN0cmluZ1RhYmxlOjpjb25z
dF9pdGVyYXRvcigpKTsKK30KKworVEVTVChJdGVyYXRvciwgSXRlcmF0ZXMpIHsKKyAgSW50VGFi
bGUgdDsKKyAgZm9yIChzaXplX3QgaSA9IDM7IGkgIT0gNjsgKytpKSBFWFBFQ1RfVFJVRSh0LmVt
cGxhY2UoaSkuc2Vjb25kKTsKKyAgRVhQRUNUX1RIQVQodCwgVW5vcmRlcmVkRWxlbWVudHNBcmUo
MywgNCwgNSkpOworfQorCitURVNUKFRhYmxlLCBNZXJnZSkgeworICBTdHJpbmdUYWJsZSB0MSwg
dDI7CisgIHQxLmVtcGxhY2UoIjAiLCAiLTAiKTsKKyAgdDEuZW1wbGFjZSgiMSIsICItMSIpOwor
ICB0Mi5lbXBsYWNlKCIwIiwgIn4wIik7CisgIHQyLmVtcGxhY2UoIjIiLCAifjIiKTsKKworICBF
WFBFQ1RfVEhBVCh0MSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigiMCIsICItMCIpLCBQYWly
KCIxIiwgIi0xIikpKTsKKyAgRVhQRUNUX1RIQVQodDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBh
aXIoIjAiLCAifjAiKSwgUGFpcigiMiIsICJ+MiIpKSk7CisKKyAgdDEubWVyZ2UodDIpOworICBF
WFBFQ1RfVEhBVCh0MSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigiMCIsICItMCIpLCBQYWly
KCIxIiwgIi0xIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWly
KCIyIiwgIn4yIikpKTsKKyAgRVhQRUNUX1RIQVQodDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBh
aXIoIjAiLCAifjAiKSkpOworfQorCitURVNUKE5vZGVzLCBFbXB0eU5vZGVUeXBlKSB7CisgIHVz
aW5nIG5vZGVfdHlwZSA9IFN0cmluZ1RhYmxlOjpub2RlX3R5cGU7CisgIG5vZGVfdHlwZSBuOwor
ICBFWFBFQ1RfRkFMU0Uobik7CisgIEVYUEVDVF9UUlVFKG4uZW1wdHkoKSk7CisKKyAgRVhQRUNU
X1RSVUUoKHN0ZDo6aXNfc2FtZTxub2RlX3R5cGU6OmFsbG9jYXRvcl90eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0cmluZ1RhYmxlOjphbGxvY2F0b3JfdHlwZT46OnZhbHVlKSk7
Cit9CisKK1RFU1QoTm9kZXMsIEV4dHJhY3RJbnNlcnQpIHsKKyAgY29uc3RleHByIGNoYXIgazBb
XSA9ICJWZXJ5IGxvbmcgc3RkOjpzdHJpbmcgemVyby4iOworICBjb25zdGV4cHIgY2hhciBrMVtd
ID0gIlZlcnkgbG9uZyBzdGQ6OnN0cmluZyBvbmUuIjsKKyAgY29uc3RleHByIGNoYXIgazJbXSA9
ICJWZXJ5IGxvbmcgc3RkOjpzdHJpbmcgdHdvLiI7CisgIFN0cmluZ1RhYmxlIHQgPSB7e2swLCAi
In0sIHtrMSwgIiJ9LCB7azIsICIifX07CisgIEVYUEVDVF9USEFUKHQsCisgICAgICAgICAgICAg
IFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoazAsICIiKSwgUGFpcihrMSwgIiIpLCBQYWlyKGsy
LCAiIikpKTsKKworICBhdXRvIG5vZGUgPSB0LmV4dHJhY3QoazApOworICBFWFBFQ1RfVEhBVCh0
LCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKGsxLCAiIiksIFBhaXIoazIsICIiKSkpOworICBF
WFBFQ1RfVFJVRShub2RlKTsKKyAgRVhQRUNUX0ZBTFNFKG5vZGUuZW1wdHkoKSk7CisKKyAgU3Ry
aW5nVGFibGUgdDI7CisgIGF1dG8gcmVzID0gdDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7Cisg
IEVYUEVDVF9UUlVFKHJlcy5pbnNlcnRlZCk7CisgIEVYUEVDVF9USEFUKCpyZXMucG9zaXRpb24s
IFBhaXIoazAsICIiKSk7CisgIEVYUEVDVF9GQUxTRShyZXMubm9kZSk7CisgIEVYUEVDVF9USEFU
KHQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKGswLCAiIikpKTsKKworICAvLyBOb3QgdGhl
cmUuCisgIEVYUEVDVF9USEFUKHQsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoazEsICIiKSwg
UGFpcihrMiwgIiIpKSk7CisgIG5vZGUgPSB0LmV4dHJhY3QoIk5vdCB0aGVyZSEiKTsKKyAgRVhQ
RUNUX1RIQVQodCwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcihrMSwgIiIpLCBQYWlyKGsyLCAi
IikpKTsKKyAgRVhQRUNUX0ZBTFNFKG5vZGUpOworCisgIC8vIEluc2VydGluZyBub3RoaW5nLgor
ICByZXMgPSB0Mi5pbnNlcnQoc3RkOjptb3ZlKG5vZGUpKTsKKyAgRVhQRUNUX0ZBTFNFKHJlcy5p
bnNlcnRlZCk7CisgIEVYUEVDVF9FUShyZXMucG9zaXRpb24sIHQyLmVuZCgpKTsKKyAgRVhQRUNU
X0ZBTFNFKHJlcy5ub2RlKTsKKyAgRVhQRUNUX1RIQVQodDIsIFVub3JkZXJlZEVsZW1lbnRzQXJl
KFBhaXIoazAsICIiKSkpOworCisgIHQuZW1wbGFjZShrMCwgIjEiKTsKKyAgbm9kZSA9IHQuZXh0
cmFjdChrMCk7CisKKyAgLy8gSW5zZXJ0IGR1cGxpY2F0ZS4KKyAgcmVzID0gdDIuaW5zZXJ0KHN0
ZDo6bW92ZShub2RlKSk7CisgIEVYUEVDVF9GQUxTRShyZXMuaW5zZXJ0ZWQpOworICBFWFBFQ1Rf
VEhBVCgqcmVzLnBvc2l0aW9uLCBQYWlyKGswLCAiIikpOworICBFWFBFQ1RfVFJVRShyZXMubm9k
ZSk7CisgIEVYUEVDVF9GQUxTRShub2RlKTsKK30KKworU3RyaW5nVGFibGUgTWFrZVNpbXBsZVRh
YmxlKHNpemVfdCBzaXplKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB0LmVtcGxhY2Uoc3RkOjpzdHJpbmcoMSwgJ0EnICsgaSksICIiKTsK
KyAgcmV0dXJuIHQ7Cit9CisKK3N0ZDo6c3RyaW5nIE9yZGVyT2ZJdGVyYXRpb24oY29uc3QgU3Ry
aW5nVGFibGUmIHQpIHsKKyAgc3RkOjpzdHJpbmcgb3JkZXI7CisgIGZvciAoYXV0byYgcCA6IHQp
IG9yZGVyICs9IHAuZmlyc3Q7CisgIHJldHVybiBvcmRlcjsKK30KKworVEVTVChUYWJsZSwgSXRl
cmF0aW9uT3JkZXJDaGFuZ2VzQnlJbnN0YW5jZSkgeworICAvLyBOZWVkcyB0byBiZSBtb3JlIHRo
YW4ga1dpZHRoIGVsZW1lbnRzIHRvIGJlIGFibGUgdG8gYWZmZWN0IG9yZGVyLgorICBjb25zdCBT
dHJpbmdUYWJsZSByZWZlcmVuY2UgPSBNYWtlU2ltcGxlVGFibGUoMjApOworCisgIC8vIFNpbmNl
IG9yZGVyIGlzIG5vbi1kZXRlcm1pbmlzdGljIHdlIGNhbid0IGp1c3QgdHJ5IG9uY2UgYW5kIHZl
cmlmeS4KKyAgLy8gV2UnbGwgdHJ5IHVudGlsIHdlIGZpbmQgdGhhdCBvcmRlciBjaGFuZ2VkLiBJ
dCBzaG91bGQgbm90IHRha2UgbWFueSB0cmllcworICAvLyBmb3IgdGhhdC4KKyAgLy8gSW1wb3J0
YW50OiB3ZSBoYXZlIHRvIGtlZXAgdGhlIG9sZCB0YWJsZXMgYXJvdW5kLiBPdGhlcndpc2UgdGNt
YWxsb2Mgd2lsbAorICAvLyBqdXN0IGdpdmUgdXMgdGhlIHNhbWUgYmxvY2tzIGFuZCB3ZSB3b3Vs
ZCBiZSBkb2luZyB0aGUgc2FtZSBvcmRlciBhZ2Fpbi4KKyAgc3RkOjp2ZWN0b3I8U3RyaW5nVGFi
bGU+IGdhcmJhZ2U7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgIGF1dG8g
dHJpYWwgPSBNYWtlU2ltcGxlVGFibGUoMjApOworICAgIGlmIChPcmRlck9mSXRlcmF0aW9uKHRy
aWFsKSAhPSBPcmRlck9mSXRlcmF0aW9uKHJlZmVyZW5jZSkpIHsKKyAgICAgIC8vIFdlIGFyZSBk
b25lLgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnYXJiYWdlLnB1c2hfYmFjayhzdGQ6Om1v
dmUodHJpYWwpKTsKKyAgfQorICBGQUlMKCk7Cit9CisKK1RFU1QoVGFibGUsIEl0ZXJhdGlvbk9y
ZGVyQ2hhbmdlc09uUmVoYXNoKSB7CisgIC8vIFNpbmNlIG9yZGVyIGlzIG5vbi1kZXRlcm1pbmlz
dGljIHdlIGNhbid0IGp1c3QgdHJ5IG9uY2UgYW5kIHZlcmlmeS4KKyAgLy8gV2UnbGwgdHJ5IHVu
dGlsIHdlIGZpbmQgdGhhdCBvcmRlciBjaGFuZ2VkLiBJdCBzaG91bGQgbm90IHRha2UgbWFueSB0
cmllcworICAvLyBmb3IgdGhhdC4KKyAgLy8gSW1wb3J0YW50OiB3ZSBoYXZlIHRvIGtlZXAgdGhl
IG9sZCB0YWJsZXMgYXJvdW5kLiBPdGhlcndpc2UgdGNtYWxsb2Mgd2lsbAorICAvLyBqdXN0IGdp
dmUgdXMgdGhlIHNhbWUgYmxvY2tzIGFuZCB3ZSB3b3VsZCBiZSBkb2luZyB0aGUgc2FtZSBvcmRl
ciBhZ2Fpbi4KKyAgc3RkOjp2ZWN0b3I8U3RyaW5nVGFibGU+IGdhcmJhZ2U7CisgIGZvciAoaW50
IGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgIC8vIE5lZWRzIHRvIGJlIG1vcmUgdGhhbiBrV2lk
dGggZWxlbWVudHMgdG8gYmUgYWJsZSB0byBhZmZlY3Qgb3JkZXIuCisgICAgU3RyaW5nVGFibGUg
dCA9IE1ha2VTaW1wbGVUYWJsZSgyMCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgcmVmZXJlbmNl
ID0gT3JkZXJPZkl0ZXJhdGlvbih0KTsKKyAgICAvLyBGb3JjZSByZWhhc2ggdG8gdGhlIHNhbWUg
c2l6ZS4KKyAgICB0LnJlaGFzaCgwKTsKKyAgICBzdGQ6OnN0cmluZyB0cmlhbCA9IE9yZGVyT2ZJ
dGVyYXRpb24odCk7CisgICAgaWYgKHRyaWFsICE9IHJlZmVyZW5jZSkgeworICAgICAgLy8gV2Ug
YXJlIGRvbmUuCisgICAgICByZXR1cm47CisgICAgfQorICAgIGdhcmJhZ2UucHVzaF9iYWNrKHN0
ZDo6bW92ZSh0KSk7CisgIH0KKyAgRkFJTCgpOworfQorCitURVNUKFRhYmxlLCBJdGVyYXRpb25P
cmRlckNoYW5nZXNGb3JTbWFsbFRhYmxlcykgeworICAvLyBTaW5jZSBvcmRlciBpcyBub24tZGV0
ZXJtaW5pc3RpYyB3ZSBjYW4ndCBqdXN0IHRyeSBvbmNlIGFuZCB2ZXJpZnkuCisgIC8vIFdlJ2xs
IHRyeSB1bnRpbCB3ZSBmaW5kIHRoYXQgb3JkZXIgY2hhbmdlZC4KKyAgLy8gSW1wb3J0YW50OiB3
ZSBoYXZlIHRvIGtlZXAgdGhlIG9sZCB0YWJsZXMgYXJvdW5kLiBPdGhlcndpc2UgdGNtYWxsb2Mg
d2lsbAorICAvLyBqdXN0IGdpdmUgdXMgdGhlIHNhbWUgYmxvY2tzIGFuZCB3ZSB3b3VsZCBiZSBk
b2luZyB0aGUgc2FtZSBvcmRlciBhZ2Fpbi4KKyAgU3RyaW5nVGFibGUgcmVmZXJlbmNlX3RhYmxl
ID0gTWFrZVNpbXBsZVRhYmxlKDUpOworICBjb25zdCBzdGQ6OnN0cmluZyByZWZlcmVuY2UgPSBP
cmRlck9mSXRlcmF0aW9uKHJlZmVyZW5jZV90YWJsZSk7CisgIHN0ZDo6dmVjdG9yPFN0cmluZ1Rh
YmxlPiBnYXJiYWdlOworICBmb3IgKGludCBpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICBTdHJp
bmdUYWJsZSB0ID0gTWFrZVNpbXBsZVRhYmxlKDUpOworICAgIHN0ZDo6c3RyaW5nIHRyaWFsID0g
T3JkZXJPZkl0ZXJhdGlvbih0KTsKKyAgICBpZiAodHJpYWwgIT0gcmVmZXJlbmNlKSB7CisgICAg
ICAvLyBXZSBhcmUgZG9uZS4KKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgZ2FyYmFnZS5wdXNo
X2JhY2soc3RkOjptb3ZlKHQpKTsKKyAgfQorICBGQUlMKCkgPDwgIkl0ZXJhdGlvbiBvcmRlciBy
ZW1haW5lZCB0aGUgc2FtZSBhY3Jvc3MgbWFueSBhdHRlbXB0cy4iOworfQorCisvLyBGaWxsIHRo
ZSB0YWJsZSB0byAzIGRpZmZlcmVudCBsb2FkIGZhY3RvcnMgKG1pbiwgbWVkaWFuLCBtYXgpIGFu
ZCBldmFsdWF0ZQorLy8gdGhlIHBlcmNlbnRhZ2Ugb2YgcGVyZmVjdCBoaXRzIHVzaW5nIHRoZSBk
ZWJ1ZyBBUEkuCit0ZW1wbGF0ZSA8Y2xhc3MgVGFibGUsIGNsYXNzIEFkZEZuPgorc3RkOjp2ZWN0
b3I8ZG91YmxlPiBDb2xsZWN0UGVyZmVjdFJhdGlvcyhUYWJsZSB0LCBBZGRGbiBhZGQpIHsKKyAg
dXNpbmcgS2V5ID0gdHlwZW5hbWUgVGFibGU6OmtleV90eXBlOworCisgIC8vIEZpcnN0LCBmaWxs
IGVub3VnaCB0byBoYXZlIGEgZ29vZCBkaXN0cmlidXRpb24uCisgIGNvbnN0ZXhwciBzaXplX3Qg
a01pblNpemUgPSAxMDAwMDsKKyAgc3RkOjp2ZWN0b3I8S2V5PiBrZXlzOworICB3aGlsZSAodC5z
aXplKCkgPCBrTWluU2l6ZSkga2V5cy5wdXNoX2JhY2soYWRkKHQpKTsKKyAgLy8gVGhlbiwgaW5z
ZXJ0IHVudGlsIHdlIHJlYWNoIG1pbiBsb2FkIGZhY3Rvci4KKyAgZG91YmxlIGxmID0gdC5sb2Fk
X2ZhY3RvcigpOworICB3aGlsZSAobGYgPD0gdC5sb2FkX2ZhY3RvcigpKSBrZXlzLnB1c2hfYmFj
ayhhZGQodCkpOworCisgIC8vIFdlIGFyZSBub3cgYXQgbWluIGxvYWQgZmFjdG9yLiBUYWtlIGEg
c25hcHNob3QuCisgIHNpemVfdCBwZXJmZWN0ID0gMDsKKyAgYXV0byB1cGRhdGVfcGVyZmVjdCA9
IFsmXShLZXkgaykgeworICAgIHBlcmZlY3QgKz0gR2V0SGFzaHRhYmxlRGVidWdOdW1Qcm9iZXMo
dCwgaykgPT0gMDsKKyAgfTsKKyAgZm9yIChjb25zdCBhdXRvJiBrIDoga2V5cykgdXBkYXRlX3Bl
cmZlY3Qoayk7CisKKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBwZXJmZWN0X3JhdGlvczsKKyAgLy8g
S2VlcCBnb2luZyB1bnRpbCB3ZSBoaXQgbWF4IGxvYWQgZmFjdG9yLgorICB3aGlsZSAodC5sb2Fk
X2ZhY3RvcigpIDwgLjYpIHsKKyAgICBwZXJmZWN0X3JhdGlvcy5wdXNoX2JhY2soMS4wICogcGVy
ZmVjdCAvIHQuc2l6ZSgpKTsKKyAgICB1cGRhdGVfcGVyZmVjdChhZGQodCkpOworICB9CisgIHdo
aWxlICh0LmxvYWRfZmFjdG9yKCkgPiAuNSkgeworICAgIHBlcmZlY3RfcmF0aW9zLnB1c2hfYmFj
aygxLjAgKiBwZXJmZWN0IC8gdC5zaXplKCkpOworICAgIHVwZGF0ZV9wZXJmZWN0KGFkZCh0KSk7
CisgIH0KKyAgcmV0dXJuIHBlcmZlY3RfcmF0aW9zOworfQorCitzdGQ6OnZlY3RvcjxzdGQ6OnBh
aXI8ZG91YmxlLCBkb3VibGU+PiBTdHJpbmdUYWJsZVBlZmVjdFJhdGlvcygpIHsKKyAgY29uc3Rl
eHByIGJvb2wga1JhbmRvbWl6ZXNJbnNlcnRzID0KKyNpZiBOREVCVUcKKyAgICAgIGZhbHNlOwor
I2Vsc2UgICAvLyBOREVCVUcKKyAgICAgIHRydWU7CisjZW5kaWYgIC8vIE5ERUJVRworCisgIC8v
IFRoZSBlZmZlY3RpdmUgbG9hZCBmYWN0b3IgaXMgbGFyZ2VyIGluIG5vbi1vcHQgbW9kZSBiZWNh
dXNlIHdlIGluc2VydAorICAvLyBlbGVtZW50cyBvdXQgb2Ygb3JkZXIuCisgIHN3aXRjaCAoY29u
dGFpbmVyX2ludGVybmFsOjpHcm91cDo6a1dpZHRoKSB7CisgICAgY2FzZSA4OgorICAgICAgaWYg
KGtSYW5kb21pemVzSW5zZXJ0cykgeworICAgICAgICByZXR1cm4ge3swLjk4NiwgMC4wMn0sIHsw
Ljk1LCAwLjAyfSwgezAuODksIDAuMDJ9fTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVy
biB7ezAuOTk1LCAwLjAxfSwgezAuOTcsIDAuMDF9LCB7MC44OSwgMC4wMn19OworICAgICAgfQor
ICAgICAgYnJlYWs7CisgICAgY2FzZSAxNjoKKyAgICAgIGlmIChrUmFuZG9taXplc0luc2VydHMp
IHsKKyAgICAgICAgcmV0dXJuIHt7MC45NzMsIDAuMDF9LCB7MC45NjUsIDAuMDF9LCB7MC45Miwg
MC4wMn19OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHt7MC45OTUsIDAuMDA1fSwg
ezAuOTksIDAuMDA1fSwgezAuOTQsIDAuMDF9fTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAvLyBJZ25vcmUgYW55dGhpbmcgZWxzZS4KKyAgICAgIHJldHVybiB7
fTsKKyAgfQorfQorCisvLyBUaGlzIGlzIGFsbW9zdCBhIGNoYW5nZSBkZXRlY3RvciwgYnV0IGl0
IGFsbG93cyB1cyB0byBrbm93IGhvdyB3ZSBhcmUKKy8vIGFmZmVjdGluZyB0aGUgcHJvYmUgZGlz
dHJpYnV0aW9uLgorVEVTVChUYWJsZSwgRWZmZWN0aXZlTG9hZEZhY3RvclN0cmluZ3MpIHsKKyAg
c3RkOjp2ZWN0b3I8ZG91YmxlPiBwZXJmZWN0X3JhdGlvcyA9CisgICAgICBDb2xsZWN0UGVyZmVj
dFJhdGlvcyhTdHJpbmdUYWJsZSgpLCBbXShTdHJpbmdUYWJsZSYgdCkgeworICAgICAgICByZXR1
cm4gdC5lbXBsYWNlKHN0ZDo6dG9fc3RyaW5nKHQuc2l6ZSgpKSwgIiIpLmZpcnN0LT5maXJzdDsK
KyAgICAgIH0pOworCisgIGF1dG8gcmF0aW9zID0gU3RyaW5nVGFibGVQZWZlY3RSYXRpb3MoKTsK
KyAgaWYgKHJhdGlvcy5lbXB0eSgpKSByZXR1cm47CisKKyAgRVhQRUNUX1RIQVQocGVyZmVjdF9y
YXRpb3MuZnJvbnQoKSwKKyAgICAgICAgICAgICAgRG91YmxlTmVhcihyYXRpb3NbMF0uZmlyc3Qs
IHJhdGlvc1swXS5zZWNvbmQpKTsKKyAgRVhQRUNUX1RIQVQocGVyZmVjdF9yYXRpb3NbcGVyZmVj
dF9yYXRpb3Muc2l6ZSgpIC8gMl0sCisgICAgICAgICAgICAgIERvdWJsZU5lYXIocmF0aW9zWzFd
LmZpcnN0LCByYXRpb3NbMV0uc2Vjb25kKSk7CisgIEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9z
LmJhY2soKSwKKyAgICAgICAgICAgICAgRG91YmxlTmVhcihyYXRpb3NbMl0uZmlyc3QsIHJhdGlv
c1syXS5zZWNvbmQpKTsKK30KKworc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91Ymxl
Pj4gSW50VGFibGVQZWZlY3RSYXRpb3MoKSB7CisgIGNvbnN0ZXhwciBib29sIGtSYW5kb21pemVz
SW5zZXJ0cyA9CisjaWZkZWYgTkRFQlVHCisgICAgICBmYWxzZTsKKyNlbHNlICAgLy8gTkRFQlVH
CisgICAgICB0cnVlOworI2VuZGlmICAvLyBOREVCVUcKKworICAvLyBUaGUgZWZmZWN0aXZlIGxv
YWQgZmFjdG9yIGlzIGxhcmdlciBpbiBub24tb3B0IG1vZGUgYmVjYXVzZSB3ZSBpbnNlcnQKKyAg
Ly8gZWxlbWVudHMgb3V0IG9mIG9yZGVyLgorICBzd2l0Y2ggKGNvbnRhaW5lcl9pbnRlcm5hbDo6
R3JvdXA6OmtXaWR0aCkgeworICAgIGNhc2UgODoKKyAgICAgIGlmIChrUmFuZG9taXplc0luc2Vy
dHMpIHsKKyAgICAgICAgcmV0dXJuIHt7MC45OSwgMC4wMn0sIHswLjk4NSwgMC4wMn0sIHswLjk1
LCAwLjA1fX07CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4ge3swLjk5LCAwLjAxfSwg
ezAuOTksIDAuMDF9LCB7MC45NSwgMC4wMn19OworICAgICAgfQorICAgICAgYnJlYWs7CisgICAg
Y2FzZSAxNjoKKyAgICAgIGlmIChrUmFuZG9taXplc0luc2VydHMpIHsKKyAgICAgICAgcmV0dXJu
IHt7MC45OCwgMC4wMn0sIHswLjk3OCwgMC4wMn0sIHswLjk2LCAwLjAyfX07CisgICAgICB9IGVs
c2UgeworICAgICAgICByZXR1cm4ge3swLjk5OCwgMC4wMDN9LCB7MC45OTUsIDAuMDF9LCB7MC45
NzUsIDAuMDJ9fTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAv
LyBJZ25vcmUgYW55dGhpbmcgZWxzZS4KKyAgICAgIHJldHVybiB7fTsKKyAgfQorfQorCisvLyBU
aGlzIGlzIGFsbW9zdCBhIGNoYW5nZSBkZXRlY3RvciwgYnV0IGl0IGFsbG93cyB1cyB0byBrbm93
IGhvdyB3ZSBhcmUKKy8vIGFmZmVjdGluZyB0aGUgcHJvYmUgZGlzdHJpYnV0aW9uLgorVEVTVChU
YWJsZSwgRWZmZWN0aXZlTG9hZEZhY3RvckludHMpIHsKKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBw
ZXJmZWN0X3JhdGlvcyA9IENvbGxlY3RQZXJmZWN0UmF0aW9zKAorICAgICAgSW50VGFibGUoKSwg
W10oSW50VGFibGUmIHQpIHsgcmV0dXJuICp0LmVtcGxhY2UodC5zaXplKCkpLmZpcnN0OyB9KTsK
KworICBhdXRvIHJhdGlvcyA9IEludFRhYmxlUGVmZWN0UmF0aW9zKCk7CisgIGlmIChyYXRpb3Mu
ZW1wdHkoKSkgcmV0dXJuOworCisgIEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zLmZyb250KCks
CisgICAgICAgICAgICAgIERvdWJsZU5lYXIocmF0aW9zWzBdLmZpcnN0LCByYXRpb3NbMF0uc2Vj
b25kKSk7CisgIEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zW3BlcmZlY3RfcmF0aW9zLnNpemUo
KSAvIDJdLAorICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1sxXS5maXJzdCwgcmF0aW9z
WzFdLnNlY29uZCkpOworICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlvcy5iYWNrKCksCisgICAg
ICAgICAgICAgIERvdWJsZU5lYXIocmF0aW9zWzJdLmZpcnN0LCByYXRpb3NbMl0uc2Vjb25kKSk7
Cit9CisKKy8vIENvbmZpcm0gdGhhdCB3ZSBhc3NlcnQgaWYgd2UgdHJ5IHRvIGVyYXNlKCkgZW5k
KCkuCitURVNUKFRhYmxlRGVhdGhUZXN0LCBFcmFzZU9mRW5kQXNzZXJ0cykgeworICAvLyBVc2Ug
YW4gYXNzZXJ0IHdpdGggc2lkZS1lZmZlY3RzIHRvIGZpZ3VyZSBvdXQgaWYgdGhleSBhcmUgYWN0
dWFsbHkgZW5hYmxlZC4KKyAgYm9vbCBhc3NlcnRfZW5hYmxlZCA9IGZhbHNlOworICBhc3NlcnQo
WyZdKCkgeworICAgIGFzc2VydF9lbmFibGVkID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fSgpKTsKKyAgaWYgKCFhc3NlcnRfZW5hYmxlZCkgcmV0dXJuOworCisgIEludFRhYmxlIHQ7Cisg
IC8vIEV4dHJhIHNpbXBsZSAicmVnZXhwIiBhcyByZWdleHAgc3VwcG9ydCBpcyBoaWdobHkgdmFy
aWVkIGFjcm9zcyBwbGF0Zm9ybXMuCisgIGNvbnN0ZXhwciBjaGFyIGtEZWF0aE1zZ1tdID0gIml0
ICE9IGVuZCI7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQodC5lcmFzZSh0LmVuZCgpKSwg
a0RlYXRoTXNnKTsKK30KKworI2lmZGVmIEFERFJFU1NfU0FOSVRJWkVSCitURVNUKFNhbml0aXpl
ciwgUG9pc29uaW5nVW51c2VkKSB7CisgIEludFRhYmxlIHQ7CisgIC8vIEluc2VydCBzb21ldGhp
bmcgdG8gZm9yY2UgYW4gYWxsb2NhdGlvbi4KKyAgaW50NjRfdCYgdjEgPSAqdC5pbnNlcnQoMCku
Zmlyc3Q7CisKKyAgLy8gTWFrZSBzdXJlIHRoZXJlIGlzIHNvbWV0aGluZyB0byB0ZXN0LgorICBB
U1NFUlRfR1QodC5jYXBhY2l0eSgpLCAxKTsKKworICBpbnQ2NF90KiBzbG90cyA9IFJhd0hhc2hT
ZXRUZXN0T25seUFjY2Vzczo6R2V0U2xvdHModCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dC5jYXBhY2l0eSgpOyArK2kpIHsKKyAgICBFWFBFQ1RfRVEoc2xvdHMgKyBpICE9ICZ2MSwgX19h
c2FuX2FkZHJlc3NfaXNfcG9pc29uZWQoc2xvdHMgKyBpKSk7CisgIH0KK30KKworVEVTVChTYW5p
dGl6ZXIsIFBvaXNvbmluZ09uRXJhc2UpIHsKKyAgSW50VGFibGUgdDsKKyAgaW50NjRfdCYgdiA9
ICp0Lmluc2VydCgwKS5maXJzdDsKKworICBFWFBFQ1RfRkFMU0UoX19hc2FuX2FkZHJlc3NfaXNf
cG9pc29uZWQoJnYpKTsKKyAgdC5lcmFzZSgwKTsKKyAgRVhQRUNUX1RSVUUoX19hc2FuX2FkZHJl
c3NfaXNfcG9pc29uZWQoJnYpKTsKK30KKyNlbmRpZiAgLy8gQUREUkVTU19TQU5JVElaRVIKKwor
fSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAv
LyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rl
c3RfaW5zdGFuY2VfdHJhY2tlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2lu
c3RhbmNlX3RyYWNrZXIuY2MKaW5kZXggZmUwMGFjYThmYjk4ZjEyMGYyMzUyMDIzNjliMGI1YmU4
NzZkNDc0Ny4uYjE4ZTBiYjdhMWVhNWZmZmRjOTYxOGYxZTc5M2I4ZmY5MmVkOTAzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmNjCkBA
IC0yMSw2ICsyMSw3IEBAIGludCBCYXNlQ291bnRlZEluc3RhbmNlOjpudW1fbGl2ZV9pbnN0YW5j
ZXNfID0gMDsKIGludCBCYXNlQ291bnRlZEluc3RhbmNlOjpudW1fbW92ZXNfID0gMDsKIGludCBC
YXNlQ291bnRlZEluc3RhbmNlOjpudW1fY29waWVzXyA9IDA7CiBpbnQgQmFzZUNvdW50ZWRJbnN0
YW5jZTo6bnVtX3N3YXBzXyA9IDA7CitpbnQgQmFzZUNvdW50ZWRJbnN0YW5jZTo6bnVtX2NvbXBh
cmlzb25zXyA9IDA7CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0X2ludGVybmFsCiB9ICAvLyBuYW1l
c3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5z
dGFuY2VfdHJhY2tlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2Vf
dHJhY2tlci5oCmluZGV4IGNmOGYzYTUzMWU2MjEyZmNhYTEzZDY1MzUxNzBhZjg2YmZmYTY5OGEu
LmVjNDVmNTc0MDM3ZmM4ZTBiNjkzN2JjZDhmYzFmNDI3NTZlMDgxMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmgKQEAgLTIyLDggKzIy
LDggQEAgbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHRlc3RfaW50ZXJuYWwgewogCiAvLyBB
IHR5cGUgdGhhdCBjb3VudHMgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgdGhlIHR5cGUsIHRoZSBs
aXZlIG9jY3VycmVuY2VzIG9mCi0vLyB0aGUgdHlwZSwgYXMgd2VsbCBhcyB0aGUgbnVtYmVyIG9m
IGNvcGllcywgbW92ZXMsIGFuZCBzd2FwcyB0aGF0IGhhdmUKLS8vIG9jY3VycmVkIG9uIHRoZSB0
eXBlLiBUaGlzIGlzIHVzZWQgYXMgYSBiYXNlIGNsYXNzIGZvciB0aGUgY29weWFibGUsCisvLyB0
aGUgdHlwZSwgYXMgd2VsbCBhcyB0aGUgbnVtYmVyIG9mIGNvcGllcywgbW92ZXMsIHN3YXBzLCBh
bmQgY29tcGFyaXNvbnMgdGhhdAorLy8gaGF2ZSBvY2N1cnJlZCBvbiB0aGUgdHlwZS4gVGhpcyBp
cyB1c2VkIGFzIGEgYmFzZSBjbGFzcyBmb3IgdGhlIGNvcHlhYmxlLAogLy8gY29weWFibGUrbW92
YWJsZSwgYW5kIG1vdmFibGUgdHlwZXMgYmVsb3cgdGhhdCBhcmUgdXNlZCBpbiBhY3R1YWwgdGVz
dHMuIFVzZQogLy8gSW5zdGFuY2VUcmFja2VyIGluIHRlc3RzIHRvIHRyYWNrIHRoZSBudW1iZXIg
b2YgaW5zdGFuY2VzLgogY2xhc3MgQmFzZUNvdW50ZWRJbnN0YW5jZSB7CkBAIC02Niw2ICs2Niwz
NiBAQCBjbGFzcyBCYXNlQ291bnRlZEluc3RhbmNlIHsKICAgICByZXR1cm4gKnRoaXM7CiAgIH0K
IAorICBib29sIG9wZXJhdG9yPT0oY29uc3QgQmFzZUNvdW50ZWRJbnN0YW5jZSYgeCkgY29uc3Qg
eworICAgICsrbnVtX2NvbXBhcmlzb25zXzsKKyAgICByZXR1cm4gdmFsdWVfID09IHgudmFsdWVf
OworICB9CisKKyAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJhc2VDb3VudGVkSW5zdGFuY2UmIHgp
IGNvbnN0IHsKKyAgICArK251bV9jb21wYXJpc29uc187CisgICAgcmV0dXJuIHZhbHVlXyAhPSB4
LnZhbHVlXzsKKyAgfQorCisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEJhc2VDb3VudGVkSW5zdGFu
Y2UmIHgpIGNvbnN0IHsKKyAgICArK251bV9jb21wYXJpc29uc187CisgICAgcmV0dXJuIHZhbHVl
XyA8IHgudmFsdWVfOworICB9CisKKyAgYm9vbCBvcGVyYXRvcj4oY29uc3QgQmFzZUNvdW50ZWRJ
bnN0YW5jZSYgeCkgY29uc3QgeworICAgICsrbnVtX2NvbXBhcmlzb25zXzsKKyAgICByZXR1cm4g
dmFsdWVfID4geC52YWx1ZV87CisgIH0KKworICBib29sIG9wZXJhdG9yPD0oY29uc3QgQmFzZUNv
dW50ZWRJbnN0YW5jZSYgeCkgY29uc3QgeworICAgICsrbnVtX2NvbXBhcmlzb25zXzsKKyAgICBy
ZXR1cm4gdmFsdWVfIDw9IHgudmFsdWVfOworICB9CisKKyAgYm9vbCBvcGVyYXRvcj49KGNvbnN0
IEJhc2VDb3VudGVkSW5zdGFuY2UmIHgpIGNvbnN0IHsKKyAgICArK251bV9jb21wYXJpc29uc187
CisgICAgcmV0dXJuIHZhbHVlXyA+PSB4LnZhbHVlXzsKKyAgfQorCiAgIGludCB2YWx1ZSgpIGNv
bnN0IHsKICAgICBpZiAoIWlzX2xpdmVfKSBzdGQ6OmFib3J0KCk7CiAgICAgcmV0dXJuIHZhbHVl
XzsKQEAgLTEwOCw2ICsxMzgsOSBAQCBjbGFzcyBCYXNlQ291bnRlZEluc3RhbmNlIHsKIAogICAv
LyBOdW1iZXIgb2YgdGltZXMgdGhhdCBCYXNlQ291bnRlZEluc3RhbmNlIG9iamVjdHMgd2VyZSBz
d2FwcGVkLgogICBzdGF0aWMgaW50IG51bV9zd2Fwc187CisKKyAgLy8gTnVtYmVyIG9mIHRpbWVz
IHRoYXQgQmFzZUNvdW50ZWRJbnN0YW5jZSBvYmplY3RzIHdlcmUgY29tcGFyZWQuCisgIHN0YXRp
YyBpbnQgbnVtX2NvbXBhcmlzb25zXzsKIH07CiAKIC8vIEhlbHBlciB0byB0cmFjayB0aGUgQmFz
ZUNvdW50ZWRJbnN0YW5jZSBpbnN0YW5jZSBjb3VudGVycy4gRXhwZWN0cyB0aGF0IHRoZQpAQCAt
MTUyLDEzICsxODUsMjEgQEAgY2xhc3MgSW5zdGFuY2VUcmFja2VyIHsKICAgLy8gY29uc3RydWN0
aW9uIG9yIHRoZSBsYXN0IGNhbGwgdG8gUmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCkuCiAgIGludCBz
d2FwcygpIGNvbnN0IHsgcmV0dXJuIEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9zd2Fwc18gLSBz
dGFydF9zd2Fwc187IH0KIAotICAvLyBSZXNldHMgdGhlIGJhc2UgdmFsdWVzIGZvciBtb3Zlcywg
Y29waWVzIGFuZCBzd2FwcyB0byB0aGUgY3VycmVudCB2YWx1ZXMsCi0gIC8vIHNvIHRoYXQgc3Vi
c2VxdWVudCBHZXQqKCkgY2FsbHMgZm9yIG1vdmVzLCBjb3BpZXMgYW5kIHN3YXBzIHdpbGwgY29t
cGFyZSB0bwotICAvLyB0aGUgc2l0dWF0aW9uIGF0IHRoZSBwb2ludCBvZiB0aGlzIGNhbGwuCisg
IC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBjb21wYXJpc29ucyBvbiBCYXNlQ291bnRlZEluc3Rh
bmNlIG9iamVjdHMgc2luY2UKKyAgLy8gY29uc3RydWN0aW9uIG9yIHRoZSBsYXN0IGNhbGwgdG8g
UmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCkuCisgIGludCBjb21wYXJpc29ucygpIGNvbnN0IHsKKyAg
ICByZXR1cm4gQmFzZUNvdW50ZWRJbnN0YW5jZTo6bnVtX2NvbXBhcmlzb25zXyAtIHN0YXJ0X2Nv
bXBhcmlzb25zXzsKKyAgfQorCisgIC8vIFJlc2V0cyB0aGUgYmFzZSB2YWx1ZXMgZm9yIG1vdmVz
LCBjb3BpZXMsIGNvbXBhcmlzb25zLCBhbmQgc3dhcHMgdG8gdGhlCisgIC8vIGN1cnJlbnQgdmFs
dWVzLCBzbyB0aGF0IHN1YnNlcXVlbnQgR2V0KigpIGNhbGxzIGZvciBtb3ZlcywgY29waWVzLAor
ICAvLyBjb21wYXJpc29ucywgYW5kIHN3YXBzIHdpbGwgY29tcGFyZSB0byB0aGUgc2l0dWF0aW9u
IGF0IHRoZSBwb2ludCBvZiB0aGlzCisgIC8vIGNhbGwuCiAgIHZvaWQgUmVzZXRDb3BpZXNNb3Zl
c1N3YXBzKCkgewogICAgIHN0YXJ0X21vdmVzXyA9IEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9t
b3Zlc187CiAgICAgc3RhcnRfY29waWVzXyA9IEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9jb3Bp
ZXNfOwogICAgIHN0YXJ0X3N3YXBzXyA9IEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9zd2Fwc187
CisgICAgc3RhcnRfY29tcGFyaXNvbnNfID0gQmFzZUNvdW50ZWRJbnN0YW5jZTo6bnVtX2NvbXBh
cmlzb25zXzsKICAgfQogCiAgcHJpdmF0ZToKQEAgLTE2Nyw2ICsyMDgsNyBAQCBjbGFzcyBJbnN0
YW5jZVRyYWNrZXIgewogICBpbnQgc3RhcnRfbW92ZXNfOwogICBpbnQgc3RhcnRfY29waWVzXzsK
ICAgaW50IHN0YXJ0X3N3YXBzXzsKKyAgaW50IHN0YXJ0X2NvbXBhcmlzb25zXzsKIH07CiAKIC8v
IENvcHlhYmxlLCBub3QgbW92YWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXJfdGVzdC5jYwppbmRleCA5ZWZiNjc3MWNmMDg2ZGIx
NmZlZjM5NDYwYzU5MTkyMWVjZDVmNjkxLi4wYWU1NzYzNmRmMjEzMzg5NzkyMTAzOTViYjM5OTZi
YmQ4Yzk3YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0
YW5jZV90cmFja2VyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3Rf
aW5zdGFuY2VfdHJhY2tlcl90ZXN0LmNjCkBAIC0xNTcsNCArMTU3LDI2IEBAIFRFU1QoVGVzdElu
c3RhbmNlVHJhY2tlciwgRXhpc3RpbmdJbnN0YW5jZXMpIHsKICAgRVhQRUNUX0VRKDEsIHRyYWNr
ZXIubW92ZXMoKSk7CiB9CiAKK1RFU1QoVGVzdEluc3RhbmNlVHJhY2tlciwgQ29tcGFyaXNvbnMp
IHsKKyAgSW5zdGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIE1vdmFibGVPbmx5SW5zdGFuY2Ugb25l
KDEpLCB0d28oMik7CisKKyAgRVhQRUNUX0VRKDAsIHRyYWNrZXIuY29tcGFyaXNvbnMoKSk7Cisg
IEVYUEVDVF9GQUxTRShvbmUgPT0gdHdvKTsKKyAgRVhQRUNUX0VRKDEsIHRyYWNrZXIuY29tcGFy
aXNvbnMoKSk7CisgIEVYUEVDVF9UUlVFKG9uZSAhPSB0d28pOworICBFWFBFQ1RfRVEoMiwgdHJh
Y2tlci5jb21wYXJpc29ucygpKTsKKyAgRVhQRUNUX1RSVUUob25lIDwgdHdvKTsKKyAgRVhQRUNU
X0VRKDMsIHRyYWNrZXIuY29tcGFyaXNvbnMoKSk7CisgIEVYUEVDVF9GQUxTRShvbmUgPiB0d28p
OworICBFWFBFQ1RfRVEoNCwgdHJhY2tlci5jb21wYXJpc29ucygpKTsKKyAgRVhQRUNUX1RSVUUo
b25lIDw9IHR3byk7CisgIEVYUEVDVF9FUSg1LCB0cmFja2VyLmNvbXBhcmlzb25zKCkpOworICBF
WFBFQ1RfRkFMU0Uob25lID49IHR3byk7CisgIEVYUEVDVF9FUSg2LCB0cmFja2VyLmNvbXBhcmlz
b25zKCkpOworCisgIHRyYWNrZXIuUmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCk7CisgIEVYUEVDVF9F
USgwLCB0cmFja2VyLmNvbXBhcmlzb25zKCkpOworfQorCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90cmFja2VkLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvdHJhY2tlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkMTRhZjAzMTM4ZDNlZmQ2NjIzN2I3
OTdmM2VmNzNjMDAzYzg4MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdHJhY2tlZC5oCkBAIC0wLDAgKzEsNzggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVFJBQ0tF
RF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9UUkFDS0VEX0hfCisKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKwor
bmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKKy8vIEEg
Y2xhc3MgdGhhdCB0cmFja3MgaXRzIGNvcGllcyBhbmQgbW92ZXMgc28gdGhhdCBpdCBjYW4gYmUg
cXVlcmllZCBpbiB0ZXN0cy4KK3RlbXBsYXRlIDxjbGFzcyBUPgorY2xhc3MgVHJhY2tlZCB7Cisg
cHVibGljOgorICBUcmFja2VkKCkge30KKyAgLy8gTk9MSU5UTkVYVExJTkUocnVudGltZS9leHBs
aWNpdCkKKyAgVHJhY2tlZChjb25zdCBUJiB2YWwpIDogdmFsXyh2YWwpIHt9CisgIFRyYWNrZWQo
Y29uc3QgVHJhY2tlZCYgdGhhdCkKKyAgICAgIDogdmFsXyh0aGF0LnZhbF8pLAorICAgICAgICBu
dW1fbW92ZXNfKHRoYXQubnVtX21vdmVzXyksCisgICAgICAgIG51bV9jb3BpZXNfKHRoYXQubnVt
X2NvcGllc18pIHsKKyAgICArKygqbnVtX2NvcGllc18pOworICB9CisgIFRyYWNrZWQoVHJhY2tl
ZCYmIHRoYXQpCisgICAgICA6IHZhbF8oc3RkOjptb3ZlKHRoYXQudmFsXykpLAorICAgICAgICBu
dW1fbW92ZXNfKHN0ZDo6bW92ZSh0aGF0Lm51bV9tb3Zlc18pKSwKKyAgICAgICAgbnVtX2NvcGll
c18oc3RkOjptb3ZlKHRoYXQubnVtX2NvcGllc18pKSB7CisgICAgKysoKm51bV9tb3Zlc18pOwor
ICB9CisgIFRyYWNrZWQmIG9wZXJhdG9yPShjb25zdCBUcmFja2VkJiB0aGF0KSB7CisgICAgdmFs
XyA9IHRoYXQudmFsXzsKKyAgICBudW1fbW92ZXNfID0gdGhhdC5udW1fbW92ZXNfOworICAgIG51
bV9jb3BpZXNfID0gdGhhdC5udW1fY29waWVzXzsKKyAgICArKygqbnVtX2NvcGllc18pOworICB9
CisgIFRyYWNrZWQmIG9wZXJhdG9yPShUcmFja2VkJiYgdGhhdCkgeworICAgIHZhbF8gPSBzdGQ6
Om1vdmUodGhhdC52YWxfKTsKKyAgICBudW1fbW92ZXNfID0gc3RkOjptb3ZlKHRoYXQubnVtX21v
dmVzXyk7CisgICAgbnVtX2NvcGllc18gPSBzdGQ6Om1vdmUodGhhdC5udW1fY29waWVzXyk7Cisg
ICAgKysoKm51bV9tb3Zlc18pOworICB9CisKKyAgY29uc3QgVCYgdmFsKCkgY29uc3QgeyByZXR1
cm4gdmFsXzsgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhY2tlZCYgYSwg
Y29uc3QgVHJhY2tlZCYgYikgeworICAgIHJldHVybiBhLnZhbF8gPT0gYi52YWxfOworICB9Cisg
IGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgVHJhY2tlZCYgYSwgY29uc3QgVHJhY2tlZCYg
YikgeworICAgIHJldHVybiAhKGEgPT0gYik7CisgIH0KKworICBzaXplX3QgbnVtX2NvcGllcygp
IHsgcmV0dXJuICpudW1fY29waWVzXzsgfQorICBzaXplX3QgbnVtX21vdmVzKCkgeyByZXR1cm4g
Km51bV9tb3Zlc187IH0KKworIHByaXZhdGU6CisgIFQgdmFsXzsKKyAgc3RkOjpzaGFyZWRfcHRy
PHNpemVfdD4gbnVtX21vdmVzXyA9IHN0ZDo6bWFrZV9zaGFyZWQ8c2l6ZV90PigwKTsKKyAgc3Rk
OjpzaGFyZWRfcHRyPHNpemVfdD4gbnVtX2NvcGllc18gPSBzdGQ6Om1ha2Vfc2hhcmVkPHNpemVf
dD4oMCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBu
YW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1RSQUNL
RURfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFw
X2NvbnN0cnVjdG9yX3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRf
bWFwX2NvbnN0cnVjdG9yX3Rlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmZiNjQ2Y2IyNjRhNjVlZmE0YmVj
Y2RlZjJjYTI4ZTE0ZTlhNWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oCkBAIC0wLDAgKzEsNDA0IEBA
CisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xf
Q09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9NQVBfQ09OU1RSVUNUT1JfVEVTVF9IXworI2Rl
ZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfTUFQX0NPTlNUUlVDVE9SX1RF
U1RfSF8KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNs
dWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAi
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgorI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIKKworbmFt
ZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRl
IDxjbGFzcyBVbm9yZE1hcD4KK2NsYXNzIENvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3Qge307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKENvbnN0cnVjdG9yVGVzdCk7CisKK1RZ
UEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIE5vQXJncykgeworICBUeXBlUGFyYW0gbTsKKyAg
RVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9y
ZGVyZWRFbGVtZW50c0FyZSgpKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwg
QnVja2V0Q291bnQpIHsKKyAgVHlwZVBhcmFtIG0oMTIzKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0
eSgpKTsKKyAgRVhQRUNUX1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgp
KTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisKK1RZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaCkgeworICB1c2luZyBIID0gdHlwZW5h
bWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIEggaGFzaGVyOworICBUeXBlUGFyYW0gbSgxMjMsIGhh
c2hlcik7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNU
X1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRF
bGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisK
K1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaEVxdWFsKSB7Cisg
IHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgVHlw
ZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlv
bigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgZXF1YWwpOworICBFWFBFQ1Rf
VFJVRShtLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChtLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVs
ZW1lbnRzQXJlKCkpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKK30KKwor
VFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRIYXNoRXF1YWxBbGxvYykg
eworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0
eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQ
YXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9j
KDApOworICBUeXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgRVhQRUNU
X0VRKG0uaGFzaF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwg
ZXF1YWwpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNU
X1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRF
bGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisK
K1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50QWxsb2MpIHsKKyNpZiBk
ZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgx
NykKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEEg
YWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKDEyMywgYWxsb2MpOworICBFWFBFQ1RfRVEobS5nZXRf
YWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNU
X1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dF
KG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0
cnVjdG9yVGVzdCwgQnVja2V0Q291bnRIYXNoQWxsb2MpIHsKKyNpZiBkZWZpbmVkKFVOT1JERVJF
RF9NQVBfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNykKKyAgdXNpbmcgSCA9
IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQ
YXJhbSBtKDEyMywgaGFzaGVyLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24o
KSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVY
UEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRl
cmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwor
I2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldEFsbG9jKSB7
CisjaWYgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMKKyAgdXNpbmcgQSA9IHR5
cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQ
YXJhbSBtKGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7Cisg
IEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5v
cmRlcmVkRWxlbWVudHNBcmUoKSk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hFcXVhbEFsbG9jKSB7CisgIHVzaW5nIFQg
PSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0
eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJh
bTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3Jf
dHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIHN0ZDo6dmVj
dG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1
ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigp
KTsKKyAgVHlwZVBhcmFtIG0odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSwgMTIzLCBoYXNo
ZXIsIGVxdWFsLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVy
KTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIGVxdWFsKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2Fs
bG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVu
b3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9j
b3VudCgpLCAxMjMpOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbnB1dEl0
ZXJhdG9yQnVja2V0QWxsb2MpIHsKKyNpZiBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTQpIHx8
IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNykKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6
OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJh
bTo6YWxsb2NhdG9yX3R5cGU7CisgIEEgYWxsb2MoMCk7CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVl
czsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAg
ICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBh
cmFtIG0odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSwgMTIzLCBhbGxvYyk7CisgIEVYUEVD
VF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVEhBVChpdGVtcyhtKSwg
Ojp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBFWFBFQ1Rf
R0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKKyNlbmRpZgorfQorCitUWVBFRF9URVNUX1AoQ29u
c3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jKSB7CisjaWYgZGVmaW5l
ZChVTk9SREVSRURfTUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCisg
IHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVz
aW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1l
IFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBBIGFsbG9jKDApOwor
ICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5z
ZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5l
cmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCks
IDEyMywgaGFzaGVyLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFz
aGVyKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9U
SEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVz
KSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9CisKK1RZ
UEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3RvcikgeworICB1c2luZyBU
ID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0g
dHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFy
YW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9y
X3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBUeXBlUGFy
YW0gbSgxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
IT0gMTA7ICsraSkgbS5pbnNlcnQoaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKSk7Cisg
IFR5cGVQYXJhbSBuKG0pOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIG4uaGFzaF9m
dW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkpOworICBFWFBF
Q1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VR
KG0sIG4pOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0
b3JBbGxvYykgeworI2lmIEFCU0xfVU5PUkRFUkVEX1NVUFBPUlRTX0FMTE9DX0NUT1JTCisgIHVz
aW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5n
IEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxv
Y2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIFR5
cGVQYXJhbSBtKDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSAhPSAxMDsgKytpKSBtLmluc2VydChoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgp
KTsKKyAgVHlwZVBhcmFtIG4obSwgQSgxMSkpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9u
KCksIG4uaGFzaF9mdW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2Vx
KCkpOworICBFWFBFQ1RfTkUobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigpKTsK
KyAgRVhQRUNUX0VRKG0sIG4pOworI2VuZGlmCit9CisKKy8vIFRPRE8oYWxraXMpOiBUZXN0IG5v
bi1wcm9wYWdhdGluZyBhbGxvY2F0b3JzIG9uIGNvcHkgY29uc3RydWN0b3JzLgorCitUWVBFRF9U
RVNUX1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3IpIHsKKyAgdXNpbmcgVCA9IGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpr
ZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBl
OworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0o
MTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IDEw
OyArK2kpIG0uaW5zZXJ0KGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkpOworICBUeXBl
UGFyYW0gdChtKTsKKyAgVHlwZVBhcmFtIG4oc3RkOjptb3ZlKHQpKTsKKyAgRVhQRUNUX0VRKG0u
aGFzaF9mdW5jdGlvbigpLCBuLmhhc2hfZnVuY3Rpb24oKSk7CisgIEVYUEVDVF9FUShtLmtleV9l
cSgpLCBuLmtleV9lcSgpKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBuLmdldF9h
bGxvY2F0b3IoKSk7CisgIEVYUEVDVF9FUShtLCBuKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0
cnVjdG9yVGVzdCwgTW92ZUNvbnN0cnVjdG9yQWxsb2MpIHsKKyNpZiBBQlNMX1VOT1JERVJFRF9T
VVBQT1JUU19BTExPQ19DVE9SUworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVk
VHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7
CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9
IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVx
dWFsOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgZXF1YWwsIGFs
bG9jKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gMTA7ICsraSkgbS5pbnNlcnQoaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKSk7CisgIFR5cGVQYXJhbSB0KG0pOworICBUeXBlUGFy
YW0gbihzdGQ6Om1vdmUodCksIEEoMSkpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCks
IG4uaGFzaF9mdW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkp
OworICBFWFBFQ1RfTkUobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigpKTsKKyAg
RVhQRUNUX0VRKG0sIG4pOworI2VuZGlmCit9CisKKy8vIFRPRE8oYWxraXMpOiBUZXN0IG5vbi1w
cm9wYWdhdGluZyBhbGxvY2F0b3JzIG9uIG1vdmUgY29uc3RydWN0b3JzLgorCitUWVBFRF9URVNU
X1AoQ29uc3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoRXF1YWxBbGxvYykg
eworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+Owor
ICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VD4gdmFsdWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIHVz
aW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1l
IFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjph
bGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7Cisg
IFR5cGVQYXJhbSBtKHZhbHVlcywgMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIEVYUEVD
VF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCks
IGVxdWFsKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVD
VF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFs
dWVzKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworfQorCitUWVBFRF9U
RVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvYykgeworI2lm
IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfTUFQX0NY
WDE3KQorICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+
OworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgc3RkOjppbml0aWFsaXplcl9saXN0PFQ+
IHZhbHVlcyA9IHtnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCl9OworICBBIGFsbG9j
KDApOworICBUeXBlUGFyYW0gbSh2YWx1ZXMsIDEyMywgYWxsb2MpOworICBFWFBFQ1RfRVEobS5n
ZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGlu
Zzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0dFKG0uYnVj
a2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9y
VGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jKSB7CisjaWYgZGVmaW5lZChVTk9S
REVSRURfTUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCisgIHVzaW5n
IFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEgg
PSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQ
YXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBBIGFsbG9jKDApOworICBoYXNo
X2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4g
dmFsdWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIFR5cGVQYXJh
bSBtKHZhbHVlcywgMTIzLCBoYXNoZXIsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5j
dGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsK
KyAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVB
cnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5k
aWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudCkgeworICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2lu
ZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBU
eXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxs
b2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBo
YXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBUeXBlUGFyYW0gbSh7Z2VuKCksIGdl
bigpLCBnZW4oKX0sIDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBUeXBlUGFyYW0gbjsK
KyAgbiA9IG07CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgbi5oYXNoX2Z1bmN0aW9u
KCkpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CisgIEVYUEVDVF9FUSht
LCBuKTsKK30KKworLy8gVE9ETyhhbGtpcyk6IFRlc3QgW25vbi1dcHJvcGFnYXRpbmcgYWxsb2Nh
dG9ycyBvbiBtb3ZlL2NvcHkgYXNzaWdubWVudHMKKy8vIChpdCBkZXBlbmRzIG9uIHRyYWl0cyku
CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIE1vdmVBc3NpZ25tZW50KSB7CisgIHVz
aW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5n
IEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxv
Y2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIFR5cGVQYXJhbSBtKHtnZW4oKSwgZ2Vu
KCksIGdlbigpfSwgMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIFR5cGVQYXJhbSB0KG0p
OworICBUeXBlUGFyYW0gbjsKKyAgbiA9IHN0ZDo6bW92ZSh0KTsKKyAgRVhQRUNUX0VRKG0uaGFz
aF9mdW5jdGlvbigpLCBuLmhhc2hfZnVuY3Rpb24oKSk7CisgIEVYUEVDVF9FUShtLmtleV9lcSgp
LCBuLmtleV9lcSgpKTsKKyAgRVhQRUNUX0VRKG0sIG4pOworfQorCitUWVBFRF9URVNUX1AoQ29u
c3RydWN0b3JUZXN0LCBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdCkgeworICB1c2luZyBU
ID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBoYXNoX2ludGVy
bmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gdmFsdWVz
ID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIFR5cGVQYXJhbSBtOwor
ICBtID0gdmFsdWVzOworICBFWFBFQ1RfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVy
ZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0
b3JUZXN0LCBBc3NpZ25tZW50T3ZlcndyaXRlc0V4aXN0aW5nKSB7CisgIHVzaW5nIFQgPSBoYXNo
X2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIGhhc2hfaW50ZXJuYWw6Okdl
bmVyYXRvcjxUPiBnZW47CisgIFR5cGVQYXJhbSBtKHtnZW4oKSwgZ2VuKCksIGdlbigpfSk7Cisg
IFR5cGVQYXJhbSBuKHtnZW4oKX0pOworICBuID0gbTsKKyAgRVhQRUNUX0VRKG0sIG4pOworfQor
CitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQXNzaWdubWVudE92ZXJ3cml0ZXNF
eGlzdGluZykgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBl
UGFyYW0+OworICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBUeXBlUGFyYW0g
bSh7Z2VuKCksIGdlbigpLCBnZW4oKX0pOworICBUeXBlUGFyYW0gdChtKTsKKyAgVHlwZVBhcmFt
IG4oe2dlbigpfSk7CisgIG4gPSBzdGQ6Om1vdmUodCk7CisgIEVYUEVDVF9FUShtLCBuKTsKK30K
KworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudEZyb21Jbml0aWFsaXpl
ckxpc3RPdmVyd3JpdGVzRXhpc3RpbmcpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6Okdl
bmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdl
bjsKKyAgc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcyA9IHtnZW4oKSwgZ2VuKCksIGdl
bigpLCBnZW4oKSwgZ2VuKCl9OworICBUeXBlUGFyYW0gbTsKKyAgbSA9IHZhbHVlczsKKyAgRVhQ
RUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2
YWx1ZXMpKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudE9u
U2VsZikgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFy
YW0+OworICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8VD4gdmFsdWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07
CisgIFR5cGVQYXJhbSBtKHZhbHVlcyk7CisgIG0gPSAqJm07ICAvLyBBdm9pZCAtV3NlbGYtYXNz
aWduCisgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRz
QXJlQXJyYXkodmFsdWVzKSk7Cit9CisKKy8vIFdlIGNhbm5vdCB0ZXN0IHNlbGYgbW92ZSBhcyBz
dGFuZGFyZCBzdGF0ZXMgdGhhdCBpdCBsZWF2ZXMgc3RhbmRhcmQKKy8vIGNvbnRhaW5lcnMgaW4g
dW5zcGVjaWZpZWQgc3RhdGUgKGFuZCBpbiBwcmFjdGljZSBpbiBjYXVzZXMgbWVtb3J5LWxlYWsK
Ky8vIGFjY29yZGluZyB0byBoZWFwLWNoZWNrZXIhKS4KKworUkVHSVNURVJfVFlQRURfVEVTVF9D
QVNFX1AoCisgICAgQ29uc3RydWN0b3JUZXN0LCBOb0FyZ3MsIEJ1Y2tldENvdW50LCBCdWNrZXRD
b3VudEhhc2gsIEJ1Y2tldENvdW50SGFzaEVxdWFsLAorICAgIEJ1Y2tldENvdW50SGFzaEVxdWFs
QWxsb2MsIEJ1Y2tldENvdW50QWxsb2MsIEJ1Y2tldENvdW50SGFzaEFsbG9jLAorICAgIEJ1Y2tl
dEFsbG9jLCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEVxdWFsQWxsb2MsIElucHV0SXRlcmF0b3JC
dWNrZXRBbGxvYywKKyAgICBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jLCBDb3B5Q29uc3Ry
dWN0b3IsIENvcHlDb25zdHJ1Y3RvckFsbG9jLAorICAgIE1vdmVDb25zdHJ1Y3RvciwgTW92ZUNv
bnN0cnVjdG9yQWxsb2MsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hFcXVhbEFsbG9jLAorICAg
IEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jLCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxs
b2MsIEFzc2lnbm1lbnQsCisgICAgTW92ZUFzc2lnbm1lbnQsIEFzc2lnbm1lbnRGcm9tSW5pdGlh
bGl6ZXJMaXN0LAorICAgIEFzc2lnbm1lbnRPdmVyd3JpdGVzRXhpc3RpbmcsIE1vdmVBc3NpZ25t
ZW50T3ZlcndyaXRlc0V4aXN0aW5nLAorICAgIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0
T3ZlcndyaXRlc0V4aXN0aW5nLCBBc3NpZ25tZW50T25TZWxmKTsKKworfSAgLy8gbmFtZXNwYWNl
IGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKyNlbmRpZiAgLy8gQUJT
TF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX01BUF9DT05TVFJVQ1RPUl9URVNUX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9sb29rdXBf
dGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rl
c3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xZjFiNmI0ODliMzAxZWI5ZmFkZDFiZjg0OTE5Y2FkNjM3YzlhYjhi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9t
YXBfbG9va3VwX3Rlc3QuaApAQCAtMCwwICsxLDExNCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9S
REVSRURfTUFQX0xPT0tVUF9URVNUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFM
X1VOT1JERVJFRF9NQVBfTE9PS1VQX1RFU1RfSF8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFVub3JkTWFwPgor
Y2xhc3MgTG9va3VwVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK1RZUEVEX1RF
U1RfQ0FTRV9QKExvb2t1cFRlc3QpOworCitUWVBFRF9URVNUX1AoTG9va3VwVGVzdCwgQXQpIHsK
KyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAg
c3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2Vy
dGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJh
dG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsK
KyAgZm9yIChjb25zdCBhdXRvJiBwIDogdmFsdWVzKSB7CisgICAgY29uc3QgYXV0byYgdmFsID0g
bS5hdChwLmZpcnN0KTsKKyAgICBFWFBFQ1RfRVEocC5zZWNvbmQsIHZhbCkgPDwgOjp0ZXN0aW5n
OjpQcmludFRvU3RyaW5nKHAuZmlyc3QpOworICB9Cit9CisKK1RZUEVEX1RFU1RfUChMb29rdXBU
ZXN0LCBPcGVyYXRvckJyYWNrZXQpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVy
YXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6bWFw
cGVkX3R5cGU7CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0
ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50
ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG07CisgIGZvciAoY29uc3QgYXV0
byYgcCA6IHZhbHVlcykgeworICAgIGF1dG8mIHZhbCA9IG1bcC5maXJzdF07CisgICAgRVhQRUNU
X0VRKFYoKSwgdmFsKSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcocC5maXJzdCk7CisgICAg
dmFsID0gcC5zZWNvbmQ7CisgIH0KKyAgZm9yIChjb25zdCBhdXRvJiBwIDogdmFsdWVzKQorICAg
IEVYUEVDVF9FUShwLnNlY29uZCwgbVtwLmZpcnN0XSkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3Ry
aW5nKHAuZmlyc3QpOworfQorCitUWVBFRF9URVNUX1AoTG9va3VwVGVzdCwgQ291bnQpIHsKKyAg
dXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3Rk
Ojp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVy
KHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9y
PFQ+KCkpOworICBUeXBlUGFyYW0gbTsKKyAgZm9yIChjb25zdCBhdXRvJiBwIDogdmFsdWVzKQor
ICAgIEVYUEVDVF9FUSgwLCBtLmNvdW50KHAuZmlyc3QpKSA8PCA6OnRlc3Rpbmc6OlByaW50VG9T
dHJpbmcocC5maXJzdCk7CisgIG0uaW5zZXJ0KHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkp
OworICBmb3IgKGNvbnN0IGF1dG8mIHAgOiB2YWx1ZXMpCisgICAgRVhQRUNUX0VRKDEsIG0uY291
bnQocC5maXJzdCkpIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhwLmZpcnN0KTsKK30KKwor
VFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIEZpbmQpIHsKKyAgdXNpbmcgc3RkOjpnZXQ7CisgIHVz
aW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6
dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2
YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxU
PigpKTsKKyAgVHlwZVBhcmFtIG07CisgIGZvciAoY29uc3QgYXV0byYgcCA6IHZhbHVlcykKKyAg
ICBFWFBFQ1RfVFJVRShtLmVuZCgpID09IG0uZmluZChwLmZpcnN0KSkKKyAgICAgICAgPDwgOjp0
ZXN0aW5nOjpQcmludFRvU3RyaW5nKHAuZmlyc3QpOworICBtLmluc2VydCh2YWx1ZXMuYmVnaW4o
KSwgdmFsdWVzLmVuZCgpKTsKKyAgZm9yIChjb25zdCBhdXRvJiBwIDogdmFsdWVzKSB7CisgICAg
YXV0byBpdCA9IG0uZmluZChwLmZpcnN0KTsKKyAgICBFWFBFQ1RfVFJVRShtLmVuZCgpICE9IGl0
KSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcocC5maXJzdCk7CisgICAgRVhQRUNUX0VRKHAu
c2Vjb25kLCBnZXQ8MT4oKml0KSkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHAuZmlyc3Qp
OworICB9Cit9CisKK1RZUEVEX1RFU1RfUChMb29rdXBUZXN0LCBFcXVhbFJhbmdlKSB7CisgIHVz
aW5nIHN0ZDo6Z2V0OworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxU
eXBlUGFyYW0+OworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihz
dGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2lu
dGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtOworICBmb3IgKGNvbnN0IGF1
dG8mIHAgOiB2YWx1ZXMpIHsKKyAgICBhdXRvIHIgPSBtLmVxdWFsX3JhbmdlKHAuZmlyc3QpOwor
ICAgIEFTU0VSVF9FUSgwLCBzdGQ6OmRpc3RhbmNlKHIuZmlyc3QsIHIuc2Vjb25kKSk7CisgIH0K
KyAgbS5pbnNlcnQodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIGZvciAoY29uc3Qg
YXV0byYgcCA6IHZhbHVlcykgeworICAgIGF1dG8gciA9IG0uZXF1YWxfcmFuZ2UocC5maXJzdCk7
CisgICAgQVNTRVJUX0VRKDEsIHN0ZDo6ZGlzdGFuY2Uoci5maXJzdCwgci5zZWNvbmQpKTsKKyAg
ICBFWFBFQ1RfRVEocC5zZWNvbmQsIGdldDwxPigqci5maXJzdCkpIDw8IDo6dGVzdGluZzo6UHJp
bnRUb1N0cmluZyhwLmZpcnN0KTsKKyAgfQorfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UChMb29rdXBUZXN0LCBBdCwgT3BlcmF0b3JCcmFja2V0LCBDb3VudCwgRmluZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVxdWFsUmFuZ2UpOworCit9ICAvLyBuYW1lc3BhY2UgY29udGFp
bmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNMX0NPTlRB
SU5FUl9JTlRFUk5BTF9VTk9SREVSRURfTUFQX0xPT0tVUF9URVNUX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNmM2MzNhZTI3MzU3YzE0NWU2ZTFmMjA2YmEyZDJjYzI0Yzg4NTRhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9k
aWZpZXJzX3Rlc3QuaApAQCAtMCwwICsxLDI3MiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFi
c2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVS
RURfTUFQX01PRElGSUVSU19URVNUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFM
X1VOT1JERVJFRF9NQVBfTU9ESUZJRVJTX1RFU1RfSF8KKworI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFVub3JkTWFw
PgorY2xhc3MgTW9kaWZpZXJzVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK1RZ
UEVEX1RFU1RfQ0FTRV9QKE1vZGlmaWVyc1Rlc3QpOworCitUWVBFRF9URVNUX1AoTW9kaWZpZXJz
VGVzdCwgQ2xlYXIpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8
VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24o
c3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwg
dmFsdWVzLmVuZCgpKTsKKyAgQVNTRVJUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRl
cmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgbS5jbGVhcigpOworICBFWFBFQ1RfVEhB
VChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNU
X1RSVUUobS5lbXB0eSgpKTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEluc2Vy
dCkgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+
OworICB1c2luZyBWID0gdHlwZW5hbWUgVHlwZVBhcmFtOjptYXBwZWRfdHlwZTsKKyAgVCB2YWwg
PSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpOworICBUeXBlUGFyYW0gbTsKKyAgYXV0
byBwID0gbS5pbnNlcnQodmFsKTsKKyAgRVhQRUNUX1RSVUUocC5zZWNvbmQpOworICBFWFBFQ1Rf
RVEodmFsLCAqcC5maXJzdCk7CisgIFQgdmFsMiA9IHt2YWwuZmlyc3QsIGhhc2hfaW50ZXJuYWw6
OkdlbmVyYXRvcjxWPigpKCl9OworICBwID0gbS5pbnNlcnQodmFsMik7CisgIEVYUEVDVF9GQUxT
RShwLnNlY29uZCk7CisgIEVYUEVDVF9FUSh2YWwsICpwLmZpcnN0KTsKK30KKworVFlQRURfVEVT
VF9QKE1vZGlmaWVyc1Rlc3QsIEluc2VydEhpbnQpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJu
YWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5cGVQ
YXJhbTo6bWFwcGVkX3R5cGU7CisgIFQgdmFsID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+
KCkoKTsKKyAgVHlwZVBhcmFtIG07CisgIGF1dG8gaXQgPSBtLmluc2VydChtLmVuZCgpLCB2YWwp
OworICBFWFBFQ1RfVFJVRShpdCAhPSBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKHZhbCwgKml0KTsK
KyAgVCB2YWwyID0ge3ZhbC5maXJzdCwgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+KCkoKX07
CisgIGl0ID0gbS5pbnNlcnQoaXQsIHZhbDIpOworICBFWFBFQ1RfVFJVRShpdCAhPSBtLmVuZCgp
KTsKKyAgRVhQRUNUX0VRKHZhbCwgKml0KTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rl
c3QsIEluc2VydFJhbmdlKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRU
eXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0
ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG07CisgIG0uaW5zZXJ0
KHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBBU1NFUlRfVEhBVChpdGVtcyhtKSwg
Ojp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworfQorCitUWVBF
RF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgSW5zZXJ0T3JBc3NpZ24pIHsKKyNpZmRlZiBVTk9SREVS
RURfTUFQX0NYWDE3CisgIHVzaW5nIHN0ZDo6Z2V0OworICB1c2luZyBLID0gdHlwZW5hbWUgVHlw
ZVBhcmFtOjprZXlfdHlwZTsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6bWFwcGVk
X3R5cGU7CisgIEsgayA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxLPigpKCk7CisgIFYgdmFs
ID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+KCkoKTsKKyAgVHlwZVBhcmFtIG07CisgIGF1
dG8gcCA9IG0uaW5zZXJ0X29yX2Fzc2lnbihrLCB2YWwpOworICBFWFBFQ1RfVFJVRShwLnNlY29u
ZCk7CisgIEVYUEVDVF9FUShrLCBnZXQ8MD4oKnAuZmlyc3QpKTsKKyAgRVhQRUNUX0VRKHZhbCwg
Z2V0PDE+KCpwLmZpcnN0KSk7CisgIFYgdmFsMiA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxW
PigpKCk7CisgIHAgPSBtLmluc2VydF9vcl9hc3NpZ24oaywgdmFsMik7CisgIEVYUEVDVF9GQUxT
RShwLnNlY29uZCk7CisgIEVYUEVDVF9FUShrLCBnZXQ8MD4oKnAuZmlyc3QpKTsKKyAgRVhQRUNU
X0VRKHZhbDIsIGdldDwxPigqcC5maXJzdCkpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChN
b2RpZmllcnNUZXN0LCBJbnNlcnRPckFzc2lnbkhpbnQpIHsKKyNpZmRlZiBVTk9SREVSRURfTUFQ
X0NYWDE3CisgIHVzaW5nIHN0ZDo6Z2V0OworICB1c2luZyBLID0gdHlwZW5hbWUgVHlwZVBhcmFt
OjprZXlfdHlwZTsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6bWFwcGVkX3R5cGU7
CisgIEsgayA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxLPigpKCk7CisgIFYgdmFsID0gaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+KCkoKTsKKyAgVHlwZVBhcmFtIG07CisgIGF1dG8gaXQg
PSBtLmluc2VydF9vcl9hc3NpZ24obS5lbmQoKSwgaywgdmFsKTsKKyAgRVhQRUNUX1RSVUUoaXQg
IT0gbS5lbmQoKSk7CisgIEVYUEVDVF9FUShrLCBnZXQ8MD4oKml0KSk7CisgIEVYUEVDVF9FUSh2
YWwsIGdldDwxPigqaXQpKTsKKyAgViB2YWwyID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+
KCkoKTsKKyAgaXQgPSBtLmluc2VydF9vcl9hc3NpZ24oaXQsIGssIHZhbDIpOworICBFWFBFQ1Rf
RVEoaywgZ2V0PDA+KCppdCkpOworICBFWFBFQ1RfRVEodmFsMiwgZ2V0PDE+KCppdCkpOworI2Vu
ZGlmCit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBFbXBsYWNlKSB7CisgIHVzaW5n
IFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIFYg
PSB0eXBlbmFtZSBUeXBlUGFyYW06Om1hcHBlZF90eXBlOworICBUIHZhbCA9IGhhc2hfaW50ZXJu
YWw6OkdlbmVyYXRvcjxUPigpKCk7CisgIFR5cGVQYXJhbSBtOworICAvLyBUT0RPKGFsa2lzKTog
V2UgbmVlZCBhIHdheSB0byBydW4gZW1wbGFjZSBpbiBhIG1vcmUgbWVhbmluZ2Z1bCB3YXkuIFBl
cmhhcHMKKyAgLy8gd2l0aCB0ZXN0IHRyYWl0cy9wb2xpY3kuCisgIGF1dG8gcCA9IG0uZW1wbGFj
ZSh2YWwpOworICBFWFBFQ1RfVFJVRShwLnNlY29uZCk7CisgIEVYUEVDVF9FUSh2YWwsICpwLmZp
cnN0KTsKKyAgVCB2YWwyID0ge3ZhbC5maXJzdCwgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+
KCkoKX07CisgIHAgPSBtLmVtcGxhY2UodmFsMik7CisgIEVYUEVDVF9GQUxTRShwLnNlY29uZCk7
CisgIEVYUEVDVF9FUSh2YWwsICpwLmZpcnN0KTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVy
c1Rlc3QsIEVtcGxhY2VIaW50KSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0
ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIFYgPSB0eXBlbmFtZSBUeXBlUGFyYW06Om1hcHBl
ZF90eXBlOworICBUIHZhbCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCk7CisgIFR5
cGVQYXJhbSBtOworICAvLyBUT0RPKGFsa2lzKTogV2UgbmVlZCBhIHdheSB0byBydW4gZW1wbGFj
ZSBpbiBhIG1vcmUgbWVhbmluZ2Z1bCB3YXkuIFBlcmhhcHMKKyAgLy8gd2l0aCB0ZXN0IHRyYWl0
cy9wb2xpY3kuCisgIGF1dG8gaXQgPSBtLmVtcGxhY2VfaGludChtLmVuZCgpLCB2YWwpOworICBF
WFBFQ1RfRVEodmFsLCAqaXQpOworICBUIHZhbDIgPSB7dmFsLmZpcnN0LCBoYXNoX2ludGVybmFs
OjpHZW5lcmF0b3I8Vj4oKSgpfTsKKyAgaXQgPSBtLmVtcGxhY2VfaGludChpdCwgdmFsMik7Cisg
IEVYUEVDVF9FUSh2YWwsICppdCk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBU
cnlFbXBsYWNlKSB7CisjaWZkZWYgVU5PUkRFUkVEX01BUF9DWFgxNworICB1c2luZyBUID0gaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBWID0gdHlwZW5h
bWUgVHlwZVBhcmFtOjptYXBwZWRfdHlwZTsKKyAgVCB2YWwgPSBoYXNoX2ludGVybmFsOjpHZW5l
cmF0b3I8VD4oKSgpOworICBUeXBlUGFyYW0gbTsKKyAgLy8gVE9ETyhhbGtpcyk6IFdlIG5lZWQg
YSB3YXkgdG8gcnVuIGVtcGxhY2UgaW4gYSBtb3JlIG1lYW5pbmdmdWwgd2F5LiBQZXJoYXBzCisg
IC8vIHdpdGggdGVzdCB0cmFpdHMvcG9saWN5LgorICBhdXRvIHAgPSBtLnRyeV9lbXBsYWNlKHZh
bC5maXJzdCwgdmFsLnNlY29uZCk7CisgIEVYUEVDVF9UUlVFKHAuc2Vjb25kKTsKKyAgRVhQRUNU
X0VRKHZhbCwgKnAuZmlyc3QpOworICBUIHZhbDIgPSB7dmFsLmZpcnN0LCBoYXNoX2ludGVybmFs
OjpHZW5lcmF0b3I8Vj4oKSgpfTsKKyAgcCA9IG0udHJ5X2VtcGxhY2UodmFsMi5maXJzdCwgdmFs
Mi5zZWNvbmQpOworICBFWFBFQ1RfRkFMU0UocC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAq
cC5maXJzdCk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIFRyeUVt
cGxhY2VIaW50KSB7CisjaWZkZWYgVU5PUkRFUkVEX01BUF9DWFgxNworICB1c2luZyBUID0gaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBWID0gdHlwZW5h
bWUgVHlwZVBhcmFtOjptYXBwZWRfdHlwZTsKKyAgVCB2YWwgPSBoYXNoX2ludGVybmFsOjpHZW5l
cmF0b3I8VD4oKSgpOworICBUeXBlUGFyYW0gbTsKKyAgLy8gVE9ETyhhbGtpcyk6IFdlIG5lZWQg
YSB3YXkgdG8gcnVuIGVtcGxhY2UgaW4gYSBtb3JlIG1lYW5pbmdmdWwgd2F5LiBQZXJoYXBzCisg
IC8vIHdpdGggdGVzdCB0cmFpdHMvcG9saWN5LgorICBhdXRvIGl0ID0gbS50cnlfZW1wbGFjZSht
LmVuZCgpLCB2YWwuZmlyc3QsIHZhbC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqaXQpOwor
ICBUIHZhbDIgPSB7dmFsLmZpcnN0LCBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8Vj4oKSgpfTsK
KyAgaXQgPSBtLnRyeV9lbXBsYWNlKGl0LCB2YWwyLmZpcnN0LCB2YWwyLnNlY29uZCk7CisgIEVY
UEVDVF9FUSh2YWwsICppdCk7CisjZW5kaWYKK30KKwordGVtcGxhdGUgPGNsYXNzIFY+Cit1c2lu
ZyBJZk5vdFZvaWQgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc192b2lkPFY+Ojp2
YWx1ZSwgVj46OnR5cGU7CisKKy8vIEluIG9wZW5tYXAgd2UgY2hvc2Ugbm90IHRvIHJldHVybiB0
aGUgaXRlcmF0b3IgZnJvbSBlcmFzZSBiZWNhdXNlIHRoYXQncworLy8gbW9yZSBleHBlbnNpdmUu
IEFzIHN1Y2ggd2UgYWRhcHQgZXJhc2UgdG8gcmV0dXJuIGFuIGl0ZXJhdG9yIGhlcmUuCitzdHJ1
Y3QgRXJhc2VGaXJzdCB7CisgIHRlbXBsYXRlIDxjbGFzcyBNYXA+CisgIGF1dG8gb3BlcmF0b3Io
KShNYXAqIG0sIGludCkgY29uc3QKKyAgICAgIC0+IElmTm90Vm9pZDxkZWNsdHlwZShtLT5lcmFz
ZShtLT5iZWdpbigpKSk+IHsKKyAgICByZXR1cm4gbS0+ZXJhc2UobS0+YmVnaW4oKSk7CisgIH0K
KyAgdGVtcGxhdGUgPGNsYXNzIE1hcD4KKyAgdHlwZW5hbWUgTWFwOjppdGVyYXRvciBvcGVyYXRv
cigpKE1hcCogbSwgLi4uKSBjb25zdCB7CisgICAgYXV0byBpdCA9IG0tPmJlZ2luKCk7CisgICAg
bS0+ZXJhc2UoaXQrKyk7CisgICAgcmV0dXJuIGl0OworICB9Cit9OworCitUWVBFRF9URVNUX1Ao
TW9kaWZpZXJzVGVzdCwgRXJhc2UpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVy
YXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgc3RkOjpnZXQ7CisgIHN0ZDo6dmVjdG9yPFQ+
IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAx
MCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAg
VHlwZVBhcmFtIG0odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIEFTU0VSVF9USEFU
KGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7
CisgIGF1dG8mIGZpcnN0ID0gKm0uYmVnaW4oKTsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzMjsK
KyAgZm9yIChjb25zdCBhdXRvJiB2YWwgOiB2YWx1ZXMpCisgICAgaWYgKGdldDwwPih2YWwpICE9
IGdldDwwPihmaXJzdCkpIHZhbHVlczIucHVzaF9iYWNrKHZhbCk7CisgIGF1dG8gaXQgPSBFcmFz
ZUZpcnN0KCkoJm0sIDApOworICBBU1NFUlRfVFJVRShpdCAhPSBtLmVuZCgpKTsKKyAgRVhQRUNU
X0VRKDEsIHN0ZDo6Y291bnQodmFsdWVzMi5iZWdpbigpLCB2YWx1ZXMyLmVuZCgpLCAqaXQpKTsK
KyAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVB
cnJheSh2YWx1ZXMyLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzMi5lbmQoKSkpOworfQorCitUWVBFRF9U
RVNUX1AoTW9kaWZpZXJzVGVzdCwgRXJhc2VSYW5nZSkgeworICB1c2luZyBUID0gaGFzaF9pbnRl
cm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7
CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAg
ICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJh
bSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBBU1NFUlRfVEhBVChpdGVtcyht
KSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBhdXRv
IGl0ID0gbS5lcmFzZShtLmJlZ2luKCksIG0uZW5kKCkpOworICBFWFBFQ1RfVEhBVChpdGVtcyht
KSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX1RSVUUoaXQg
PT0gbS5lbmQoKSk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBFcmFzZUtleSkg
eworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+Owor
ICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5z
ZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5l
cmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkp
OworICBBU1NFUlRfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0Fy
ZUFycmF5KHZhbHVlcykpOworICBFWFBFQ1RfRVEoMSwgbS5lcmFzZSh2YWx1ZXNbMF0uZmlyc3Qp
KTsKKyAgRVhQRUNUX0VRKDAsIHN0ZDo6Y291bnQobS5iZWdpbigpLCBtLmVuZCgpLCB2YWx1ZXNb
MF0pKTsKKyAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheSh2YWx1ZXMuYmVnaW4oKSArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmVuZCgpKSk7Cit9CisK
K1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBTd2FwKSB7CisgIHVzaW5nIFQgPSBoYXNoX2lu
dGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+IHYxOwor
ICBzdGQ6OnZlY3RvcjxUPiB2MjsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRl
cih2MSksIDUsIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgc3RkOjpnZW5lcmF0
ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2MiksIDUsIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxU
PigpKTsKKyAgVHlwZVBhcmFtIG0xKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKKyAgVHlwZVBhcmFt
IG0yKHYyLmJlZ2luKCksIHYyLmVuZCgpKTsKKyAgRVhQRUNUX1RIQVQoaXRlbXMobTEpLCA6OnRl
c3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodjEpKTsKKyAgRVhQRUNUX1RIQVQoaXRl
bXMobTIpLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodjIpKTsKKyAgbTEu
c3dhcChtMik7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0xKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRF
bGVtZW50c0FyZUFycmF5KHYyKSk7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0yKSwgOjp0ZXN0aW5n
OjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHYxKSk7Cit9CisKKy8vIFRPRE8oYWxraXMpOiBX
cml0ZSB0ZXN0cyBmb3IgZXh0cmFjdC4KKy8vIFRPRE8oYWxraXMpOiBXcml0ZSB0ZXN0cyBmb3Ig
bWVyZ2UuCisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE1vZGlmaWVyc1Rlc3QsIENsZWFy
LCBJbnNlcnQsIEluc2VydEhpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnRS
YW5nZSwgSW5zZXJ0T3JBc3NpZ24sIEluc2VydE9yQXNzaWduSGludCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVtcGxhY2UsIEVtcGxhY2VIaW50LCBUcnlFbXBsYWNlLCBUcnlFbXBsYWNl
SGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEVyYXNlLCBFcmFzZVJhbmdlLCBFcmFz
ZUtleSwgU3dhcCk7CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JE
RVJFRF9NQVBfTU9ESUZJRVJTX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC91bm9yZGVyZWRfbWFwX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
dW5vcmRlcmVkX21hcF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwZTc5OWNkYTg5YzNjOTA1NTNiMzhk
YjdhYjMyYTJjMTRlZDAyODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdW5vcmRlcmVkX21hcF90ZXN0LmNjCkBAIC0wLDAgKzEsMzggQEAKKy8vIENvcHlyaWdo
dCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgor
CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25zdHJ1
Y3Rvcl90ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVk
X21hcF9sb29rdXBfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vu
b3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNw
YWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCit1c2luZyBNYXBUeXBlcyA9
IDo6dGVzdGluZzo6VHlwZXM8CisgICAgc3RkOjp1bm9yZGVyZWRfbWFwPGludCwgaW50LCBTdGF0
ZWZ1bFRlc3RpbmdIYXNoLCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb2M8c3RkOjpwYWlyPGNvbnN0IGludCwgaW50Pj4+LAorICAgIHN0ZDo6dW5vcmRl
cmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmcsIFN0YXRlZnVsVGVzdGluZ0hhc2gsCisg
ICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsVGVzdGluZ0VxdWFsLAorICAgICAgICAgICAg
ICAgICAgICAgICBBbGxvYzxzdGQ6OnBhaXI8Y29uc3Qgc3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5n
Pj4+PjsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVW5vcmRlcmVkTWFwLCBDb25z
dHJ1Y3RvclRlc3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVu
b3JkZXJlZE1hcCwgTG9va3VwVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoVW5vcmRlcmVkTWFwLCBNb2RpZmllcnNUZXN0LCBNYXBUeXBlcyk7CisKK30gIC8v
IG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFt
ZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVy
ZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9y
ZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjU5MzcwNDY4NWM0N2Zh
YmExMzAzZTJjNTM5N2JjMTU1MjQ0ZTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oCkBAIC0wLDAgKzEs
NDA4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVm
IEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9TRVRfQ09OU1RSVUNUT1JfVEVTVF9I
XworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0NPTlNUUlVD
VE9SX1RFU1RfSF8KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisK
KyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5j
bHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgor
I2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIK
KworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3Rl
bXBsYXRlIDxjbGFzcyBVbm9yZE1hcD4KK2NsYXNzIENvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3Qge307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKENvbnN0cnVjdG9yVGVzdCk7
CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIE5vQXJncykgeworICBUeXBlUGFyYW0g
bTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0
ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0
cnVjdG9yVGVzdCwgQnVja2V0Q291bnQpIHsKKyAgVHlwZVBhcmFtIG0oMTIzKTsKKyAgRVhQRUNU
X1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9y
ZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7
Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaCkgewor
ICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIEggaGFzaGVyOworICBU
eXBlUGFyYW0gbSgxMjMsIGhhc2hlcik7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwg
aGFzaGVyKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyht
KSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVj
a2V0X2NvdW50KCksIDEyMyk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1
Y2tldENvdW50SGFzaEVxdWFsKSB7CisgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhh
c2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICBIIGhh
c2hlcjsKKyAgRSBlcXVhbDsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsKTsKKyAg
RVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5rZXlf
ZXEoKSwgZXF1YWwpOworICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChr
ZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOworICBFWFBFQ1RfR0Uo
bS5idWNrZXRfY291bnQoKSwgMTIzKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVz
dCwgQnVja2V0Q291bnRIYXNoRXF1YWxBbGxvYykgeworICB1c2luZyBIID0gdHlwZW5hbWUgVHlw
ZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVh
bDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEgg
aGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgxMjMsIGhh
c2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBoYXNo
ZXIpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgZXF1YWwpOworICBFWFBFQ1RfRVEobS5nZXRf
YWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNU
X1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQ
RUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisKKyAgY29uc3QgYXV0byYgY20gPSBtOwor
ICBFWFBFQ1RfRVEoY20uaGFzaF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEoY20u
a2V5X2VxKCksIGVxdWFsKTsKKyAgRVhQRUNUX0VRKGNtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2Mp
OworICBFWFBFQ1RfVFJVRShjbS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhjbSksIDo6
dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShjbS5idWNrZXRf
Y291bnQoKSwgMTIzKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0
Q291bnRBbGxvYykgeworI2lmIGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNCkgfHwgZGVmaW5l
ZChVTk9SREVSRURfU0VUX0NYWDE3KQorICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjph
bGxvY2F0b3JfdHlwZTsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBhbGxvYyk7
CisgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVFJVRSht
LmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVs
ZW1lbnRzQXJlKCkpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKKyNlbmRp
ZgorfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2hBbGxv
YykgeworI2lmIGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVS
RURfU0VUX0NYWDE3KQorICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7Cisg
IHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hl
cjsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGFsbG9jKTsKKyAg
RVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5nZXRf
YWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNU
X1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQ
RUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9Q
KENvbnN0cnVjdG9yVGVzdCwgQnVja2V0QWxsb2MpIHsKKyNpZiBBQlNMX1VOT1JERVJFRF9TVVBQ
T1JUU19BTExPQ19DVE9SUworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0
b3JfdHlwZTsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oYWxsb2MpOworICBFWFBFQ1Rf
RVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsK
KyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgp
KTsKKyNlbmRpZgorfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJh
dG9yQnVja2V0SGFzaEVxdWFsQWxsb2MpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6Okdl
bmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVz
aW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsK
KyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBm
b3IgKHNpemVfdCBpID0gMDsgaSAhPSAxMDsgKytpKQorICAgIHZhbHVlcy5wdXNoX2JhY2soaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdp
bigpLCB2YWx1ZXMuZW5kKCksIDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBFWFBFQ1Rf
RVEobS5oYXNoX2Z1bmN0aW9uKCksIGhhc2hlcik7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBl
cXVhbCk7CisgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1Rf
VEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVz
KSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworfQorCitUWVBFRF9URVNU
X1AoQ29uc3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2MpIHsKKyNpZiBkZWZp
bmVkKFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNykK
KyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAg
dXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEEgYWxsb2Mo
MCk7CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0g
MTA7ICsraSkKKyAgICB2YWx1ZXMucHVzaF9iYWNrKGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxU
PigpKCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpLCAxMjMs
IGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVD
VF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1
ZXMpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKwor
VFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxv
YykgeworI2lmIGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVS
RURfU0VUX0NYWDE3KQorICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxU
eXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVz
aW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsK
KyAgQSBhbGxvYygwKTsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBmb3IgKHNpemVfdCBp
ID0gMDsgaSAhPSAxMDsgKytpKQorICAgIHZhbHVlcy5wdXNoX2JhY2soaGFzaF9pbnRlcm5hbDo6
R2VuZXJhdG9yPFQ+KCkoKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMu
ZW5kKCksIDEyMywgaGFzaGVyLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24o
KSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVY
UEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2
YWx1ZXMpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30K
KworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7CisgIHVz
aW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5n
IEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxv
Y2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIFR5
cGVQYXJhbSBtKDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSAhPSAxMDsgKytpKSBtLmluc2VydChoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgp
KTsKKyAgVHlwZVBhcmFtIG4obSk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgbi5o
YXNoX2Z1bmN0aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7Cisg
IEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkpOworICBFWFBF
Q1RfRVEobSwgbik7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25z
dHJ1Y3RvckFsbG9jKSB7CisjaWYgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMK
KyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAg
dXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5h
bWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06
OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsK
KyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpICE9IDEwOyArK2kpIG0uaW5zZXJ0KGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxU
PigpKCkpOworICBUeXBlUGFyYW0gbihtLCBBKDExKSk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVu
Y3Rpb24oKSwgbi5oYXNoX2Z1bmN0aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5r
ZXlfZXEoKSk7CisgIEVYUEVDVF9ORShtLmdldF9hbGxvY2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9y
KCkpOworICBFWFBFQ1RfRVEobSwgbik7CisjZW5kaWYKK30KKworLy8gVE9ETyhhbGtpcyk6IFRl
c3Qgbm9uLXByb3BhZ2F0aW5nIGFsbG9jYXRvcnMgb24gY29weSBjb25zdHJ1Y3RvcnMuCisKK1RZ
UEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIE1vdmVDb25zdHJ1Y3RvcikgeworICB1c2luZyBU
ID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0g
dHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFy
YW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9y
X3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBUeXBlUGFy
YW0gbSgxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
IT0gMTA7ICsraSkgbS5pbnNlcnQoaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKSk7Cisg
IFR5cGVQYXJhbSB0KG0pOworICBUeXBlUGFyYW0gbihzdGQ6Om1vdmUodCkpOworICBFWFBFQ1Rf
RVEobS5oYXNoX2Z1bmN0aW9uKCksIG4uaGFzaF9mdW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0u
a2V5X2VxKCksIG4ua2V5X2VxKCkpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIG4u
Z2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKG0sIG4pOworfQorCitUWVBFRF9URVNUX1Ao
Q29uc3RydWN0b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3JBbGxvYykgeworI2lmIEFCU0xfVU5PUkRF
UkVEX1NVUFBPUlRTX0FMTE9DX0NUT1JTCisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5l
cmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhh
c2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2lu
ZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7Cisg
IEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKDEyMywgaGFzaGVyLCBlcXVh
bCwgYWxsb2MpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSAxMDsgKytpKSBtLmluc2VydCho
YXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpKTsKKyAgVHlwZVBhcmFtIHQobSk7CisgIFR5
cGVQYXJhbSBuKHN0ZDo6bW92ZSh0KSwgQSgxKSk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rp
b24oKSwgbi5oYXNoX2Z1bmN0aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlf
ZXEoKSk7CisgIEVYUEVDVF9ORShtLmdldF9hbGxvY2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkp
OworICBFWFBFQ1RfRVEobSwgbik7CisjZW5kaWYKK30KKworLy8gVE9ETyhhbGtpcyk6IFRlc3Qg
bm9uLXByb3BhZ2F0aW5nIGFsbG9jYXRvcnMgb24gbW92ZSBjb25zdHJ1Y3RvcnMuCisKK1RZUEVE
X1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hFcXVhbEFs
bG9jKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJh
bT47CisgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxUPiB2YWx1ZXMgPSB7Z2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpfTsK
KyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlw
ZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFy
YW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygw
KTsKKyAgVHlwZVBhcmFtIG0odmFsdWVzLCAxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAg
RVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5rZXlf
ZXEoKSwgZXF1YWwpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAg
RVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5
KHZhbHVlcykpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKK30KKworVFlQ
RURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2MpIHsK
KyNpZiBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX1NF
VF9DWFgxNykKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBh
cmFtPjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7Cisg
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxUPiB2YWx1ZXMgPSB7Z2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpfTsKKyAgQSBh
bGxvYygwKTsKKyAgVHlwZVBhcmFtIG0odmFsdWVzLCAxMjMsIGFsbG9jKTsKKyAgRVhQRUNUX0VR
KG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVz
dGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0dFKG0u
YnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jKSB7CisjaWYgZGVmaW5lZChV
Tk9SREVSRURfU0VUX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTcpCisgIHVz
aW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5n
IEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBBIGFsbG9jKDApOworICBo
YXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
VD4gdmFsdWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIFR5cGVQ
YXJhbSBtKHZhbHVlcywgMTIzLCBoYXNoZXIsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9m
dW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9j
KTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0Fy
ZUFycmF5KHZhbHVlcykpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKKyNl
bmRpZgorfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBBc3NpZ25tZW50KSB7Cisg
IHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVz
aW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1l
IFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjph
bGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7Cisg
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIFR5cGVQYXJhbSBtKHtnZW4oKSwg
Z2VuKCksIGdlbigpfSwgMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIFR5cGVQYXJhbSBu
OworICBuID0gbTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBuLmhhc2hfZnVuY3Rp
b24oKSk7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBuLmtleV9lcSgpKTsKKyAgRVhQRUNUX0VR
KG0sIG4pOworfQorCisvLyBUT0RPKGFsa2lzKTogVGVzdCBbbm9uLV1wcm9wYWdhdGluZyBhbGxv
Y2F0b3JzIG9uIG1vdmUvY29weSBhc3NpZ25tZW50cworLy8gKGl0IGRlcGVuZHMgb24gdHJhaXRz
KS4KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92ZUFzc2lnbm1lbnQpIHsKKyAg
dXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNp
bmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUg
VHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFs
bG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAg
aGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgVHlwZVBhcmFtIG0oe2dlbigpLCBn
ZW4oKSwgZ2VuKCl9LCAxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgVHlwZVBhcmFtIHQo
bSk7CisgIFR5cGVQYXJhbSBuOworICBuID0gc3RkOjptb3ZlKHQpOworICBFWFBFQ1RfRVEobS5o
YXNoX2Z1bmN0aW9uKCksIG4uaGFzaF9mdW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2Vx
KCksIG4ua2V5X2VxKCkpOworICBFWFBFQ1RfRVEobSwgbik7Cit9CisKK1RZUEVEX1RFU1RfUChD
b25zdHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0KSB7CisgIHVzaW5n
IFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIGhhc2hfaW50
ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1
ZXMgPSB7Z2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpfTsKKyAgVHlwZVBhcmFtIG07
CisgIG0gPSB2YWx1ZXM7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRl
cmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGluZykgeworICB1c2luZyBUID0gaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0b3I8VD4gZ2VuOworICBUeXBlUGFyYW0gbSh7Z2VuKCksIGdlbigpLCBnZW4oKX0pOwor
ICBUeXBlUGFyYW0gbih7Z2VuKCl9KTsKKyAgbiA9IG07CisgIEVYUEVDVF9FUShtLCBuKTsKK30K
KworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92ZUFzc2lnbm1lbnRPdmVyd3JpdGVz
RXhpc3RpbmcpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlw
ZVBhcmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgVHlwZVBhcmFt
IG0oe2dlbigpLCBnZW4oKSwgZ2VuKCl9KTsKKyAgVHlwZVBhcmFtIHQobSk7CisgIFR5cGVQYXJh
bSBuKHtnZW4oKX0pOworICBuID0gc3RkOjptb3ZlKHQpOworICBFWFBFQ1RfRVEobSwgbik7Cit9
CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6
ZXJMaXN0T3ZlcndyaXRlc0V4aXN0aW5nKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBn
ZW47CisgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1ZXMgPSB7Z2VuKCksIGdlbigpLCBn
ZW4oKSwgZ2VuKCksIGdlbigpfTsKKyAgVHlwZVBhcmFtIG07CisgIG0gPSB2YWx1ZXM7CisgIEVY
UEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2
YWx1ZXMpKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudE9u
U2VsZikgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFy
YW0+OworICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8VD4gdmFsdWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07
CisgIFR5cGVQYXJhbSBtKHZhbHVlcyk7CisgIG0gPSAqJm07ICAvLyBBdm9pZCAtV3NlbGYtYXNz
aWduLgorICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRz
QXJlQXJyYXkodmFsdWVzKSk7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKAorICAg
IENvbnN0cnVjdG9yVGVzdCwgTm9BcmdzLCBCdWNrZXRDb3VudCwgQnVja2V0Q291bnRIYXNoLCBC
dWNrZXRDb3VudEhhc2hFcXVhbCwKKyAgICBCdWNrZXRDb3VudEhhc2hFcXVhbEFsbG9jLCBCdWNr
ZXRDb3VudEFsbG9jLCBCdWNrZXRDb3VudEhhc2hBbGxvYywKKyAgICBCdWNrZXRBbGxvYywgSW5w
dXRJdGVyYXRvckJ1Y2tldEhhc2hFcXVhbEFsbG9jLCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2Ms
CisgICAgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvYywgQ29weUNvbnN0cnVjdG9yLCBDb3B5
Q29uc3RydWN0b3JBbGxvYywKKyAgICBNb3ZlQ29uc3RydWN0b3IsIE1vdmVDb25zdHJ1Y3RvckFs
bG9jLCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoRXF1YWxBbGxvYywKKyAgICBJbml0aWFsaXpl
ckxpc3RCdWNrZXRBbGxvYywgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jLCBBc3NpZ25t
ZW50LAorICAgIE1vdmVBc3NpZ25tZW50LCBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdCwK
KyAgICBBc3NpZ25tZW50T3ZlcndyaXRlc0V4aXN0aW5nLCBNb3ZlQXNzaWdubWVudE92ZXJ3cml0
ZXNFeGlzdGluZywKKyAgICBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdE92ZXJ3cml0ZXNF
eGlzdGluZywgQXNzaWdubWVudE9uU2VsZik7CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJf
aW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVS
X0lOVEVSTkFMX1VOT1JERVJFRF9TRVRfQ09OU1RSVUNUT1JfVEVTVF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWNhOWM2YTVkZjdiNzI1YzE3NTk5M2Y0NzA2OWRhNGU5MjE3MjlkMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90
ZXN0LmgKQEAgLTAsMCArMSw4OCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0xP
T0tVUF9URVNUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9T
RVRfTE9PS1VQX1RFU1RfSF8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2dl
bmVyYXRvcl90ZXN0aW5nLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFz
aF9wb2xpY3lfdGVzdGluZy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFp
bmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFVub3JkU2V0PgorY2xhc3MgTG9va3Vw
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKExv
b2t1cFRlc3QpOworCitUWVBFRF9URVNUX1AoTG9va3VwVGVzdCwgQ291bnQpIHsKKyAgdXNpbmcg
VCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0
b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVl
cyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkp
OworICBUeXBlUGFyYW0gbTsKKyAgZm9yIChjb25zdCBhdXRvJiB2IDogdmFsdWVzKQorICAgIEVY
UEVDVF9FUSgwLCBtLmNvdW50KHYpKSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodik7Cisg
IG0uaW5zZXJ0KHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBmb3IgKGNvbnN0IGF1
dG8mIHYgOiB2YWx1ZXMpCisgICAgRVhQRUNUX0VRKDEsIG0uY291bnQodikpIDw8IDo6dGVzdGlu
Zzo6UHJpbnRUb1N0cmluZyh2KTsKK30KKworVFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIEZpbmQp
IHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsK
KyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2lu
c2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbTsKKyAgZm9yIChjb25zdCBhdXRvJiB2IDogdmFs
dWVzKQorICAgIEVYUEVDVF9UUlVFKG0uZW5kKCkgPT0gbS5maW5kKHYpKSA8PCA6OnRlc3Rpbmc6
OlByaW50VG9TdHJpbmcodik7CisgIG0uaW5zZXJ0KHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5k
KCkpOworICBmb3IgKGNvbnN0IGF1dG8mIHYgOiB2YWx1ZXMpIHsKKyAgICB0eXBlbmFtZSBUeXBl
UGFyYW06Oml0ZXJhdG9yIGl0ID0gbS5maW5kKHYpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6dmFsdWVfdHlwZSYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjbHR5cGUoKml0KT46OnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgIiIpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGNvbnN0IHR5cGVuYW1l
IFR5cGVQYXJhbTo6dmFsdWVfdHlwZSosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVjbHR5cGUoaXQub3BlcmF0b3ItPigpKT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgIiIp
OworICAgIEVYUEVDVF9UUlVFKG0uZW5kKCkgIT0gaXQpIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZyh2KTsKKyAgICBFWFBFQ1RfRVEodiwgKml0KSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJp
bmcodik7CisgIH0KK30KKworVFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIEVxdWFsUmFuZ2UpIHsK
KyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAg
c3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2Vy
dGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJh
dG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbTsKKyAgZm9yIChjb25zdCBhdXRvJiB2IDogdmFsdWVz
KSB7CisgICAgYXV0byByID0gbS5lcXVhbF9yYW5nZSh2KTsKKyAgICBBU1NFUlRfRVEoMCwgc3Rk
OjpkaXN0YW5jZShyLmZpcnN0LCByLnNlY29uZCkpOworICB9CisgIG0uaW5zZXJ0KHZhbHVlcy5i
ZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBmb3IgKGNvbnN0IGF1dG8mIHYgOiB2YWx1ZXMpIHsK
KyAgICBhdXRvIHIgPSBtLmVxdWFsX3JhbmdlKHYpOworICAgIEFTU0VSVF9FUSgxLCBzdGQ6OmRp
c3RhbmNlKHIuZmlyc3QsIHIuc2Vjb25kKSk7CisgICAgRVhQRUNUX0VRKHYsICpyLmZpcnN0KTsK
KyAgfQorfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChMb29rdXBUZXN0LCBDb3VudCwg
RmluZCwgRXF1YWxSYW5nZSk7CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwK
K30gIC8vIG5hbWVzcGFjZSBhYnNsCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFM
X1VOT1JERVJFRF9TRVRfTE9PS1VQX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjli
ZWFjZjMzMTY5NzNkZDdiY2RjYjkzODJhMTM2YzE4ZDBhOGM3NmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5o
CkBAIC0wLDAgKzEsMTg3IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9TRVRfTU9ESUZJ
RVJTX1RFU1RfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NF
VF9NT0RJRklFUlNfVEVTVF9IXworCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hf
Z2VuZXJhdG9yX3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9o
YXNoX3BvbGljeV90ZXN0aW5nLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250
YWluZXJfaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xhc3MgVW5vcmRTZXQ+CitjbGFzcyBNb2Rp
ZmllcnNUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworVFlQRURfVEVTVF9DQVNF
X1AoTW9kaWZpZXJzVGVzdCk7CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBDbGVhcikg
eworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+Owor
ICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5z
ZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5l
cmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkp
OworICBBU1NFUlRfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJl
QXJyYXkodmFsdWVzKSk7CisgIG0uY2xlYXIoKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0
ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgp
KTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEluc2VydCkgeworICB1c2luZyBU
ID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBUIHZhbCA9IGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCk7CisgIFR5cGVQYXJhbSBtOworICBhdXRvIHAg
PSBtLmluc2VydCh2YWwpOworICBFWFBFQ1RfVFJVRShwLnNlY29uZCk7CisgIEVYUEVDVF9FUSh2
YWwsICpwLmZpcnN0KTsKKyAgcCA9IG0uaW5zZXJ0KHZhbCk7CisgIEVYUEVDVF9GQUxTRShwLnNl
Y29uZCk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBJbnNlcnRIaW50KSB7Cisg
IHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIFQg
dmFsID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKTsKKyAgVHlwZVBhcmFtIG07Cisg
IGF1dG8gaXQgPSBtLmluc2VydChtLmVuZCgpLCB2YWwpOworICBFWFBFQ1RfVFJVRShpdCAhPSBt
LmVuZCgpKTsKKyAgRVhQRUNUX0VRKHZhbCwgKml0KTsKKyAgaXQgPSBtLmluc2VydChpdCwgdmFs
KTsKKyAgRVhQRUNUX1RSVUUoaXQgIT0gbS5lbmQoKSk7CisgIEVYUEVDVF9FUSh2YWwsICppdCk7
Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBJbnNlcnRSYW5nZSkgeworICB1c2lu
ZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZl
Y3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFs
dWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4o
KSk7CisgIFR5cGVQYXJhbSBtOworICBtLmluc2VydCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVu
ZCgpKTsKKyAgQVNTRVJUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50
c0FyZUFycmF5KHZhbHVlcykpOworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgRW1w
bGFjZSkgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFy
YW0+OworICBUIHZhbCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCk7CisgIFR5cGVQ
YXJhbSBtOworICAvLyBUT0RPKGFsa2lzKTogV2UgbmVlZCBhIHdheSB0byBydW4gZW1wbGFjZSBp
biBhIG1vcmUgbWVhbmluZ2Z1bCB3YXkuIFBlcmhhcHMKKyAgLy8gd2l0aCB0ZXN0IHRyYWl0cy9w
b2xpY3kuCisgIGF1dG8gcCA9IG0uZW1wbGFjZSh2YWwpOworICBFWFBFQ1RfVFJVRShwLnNlY29u
ZCk7CisgIEVYUEVDVF9FUSh2YWwsICpwLmZpcnN0KTsKKyAgcCA9IG0uZW1wbGFjZSh2YWwpOwor
ICBFWFBFQ1RfRkFMU0UocC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqcC5maXJzdCk7Cit9
CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBFbXBsYWNlSGludCkgeworICB1c2luZyBU
ID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBUIHZhbCA9IGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCk7CisgIFR5cGVQYXJhbSBtOworICAvLyBUT0RP
KGFsa2lzKTogV2UgbmVlZCBhIHdheSB0byBydW4gZW1wbGFjZSBpbiBhIG1vcmUgbWVhbmluZ2Z1
bCB3YXkuIFBlcmhhcHMKKyAgLy8gd2l0aCB0ZXN0IHRyYWl0cy9wb2xpY3kuCisgIGF1dG8gaXQg
PSBtLmVtcGxhY2VfaGludChtLmVuZCgpLCB2YWwpOworICBFWFBFQ1RfRVEodmFsLCAqaXQpOwor
ICBpdCA9IG0uZW1wbGFjZV9oaW50KGl0LCB2YWwpOworICBFWFBFQ1RfRVEodmFsLCAqaXQpOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgVj4KK3VzaW5nIElmTm90Vm9pZCA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCFzdGQ6OmlzX3ZvaWQ8Vj46OnZhbHVlLCBWPjo6dHlwZTsKKworLy8gSW4gb3Bl
bm1hcCB3ZSBjaG9zZSBub3QgdG8gcmV0dXJuIHRoZSBpdGVyYXRvciBmcm9tIGVyYXNlIGJlY2F1
c2UgdGhhdCdzCisvLyBtb3JlIGV4cGVuc2l2ZS4gQXMgc3VjaCB3ZSBhZGFwdCBlcmFzZSB0byBy
ZXR1cm4gYW4gaXRlcmF0b3IgaGVyZS4KK3N0cnVjdCBFcmFzZUZpcnN0IHsKKyAgdGVtcGxhdGUg
PGNsYXNzIE1hcD4KKyAgYXV0byBvcGVyYXRvcigpKE1hcCogbSwgaW50KSBjb25zdAorICAgICAg
LT4gSWZOb3RWb2lkPGRlY2x0eXBlKG0tPmVyYXNlKG0tPmJlZ2luKCkpKT4geworICAgIHJldHVy
biBtLT5lcmFzZShtLT5iZWdpbigpKTsKKyAgfQorICB0ZW1wbGF0ZSA8Y2xhc3MgTWFwPgorICB0
eXBlbmFtZSBNYXA6Oml0ZXJhdG9yIG9wZXJhdG9yKCkoTWFwKiBtLCAuLi4pIGNvbnN0IHsKKyAg
ICBhdXRvIGl0ID0gbS0+YmVnaW4oKTsKKyAgICBtLT5lcmFzZShpdCsrKTsKKyAgICByZXR1cm4g
aXQ7CisgIH0KK307CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBFcmFzZSkgeworICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6
OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIo
dmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8
VD4oKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBB
U1NFUlRfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
dmFsdWVzKSk7CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczI7CisgIGZvciAoY29uc3QgYXV0byYg
dmFsIDogdmFsdWVzKQorICAgIGlmICh2YWwgIT0gKm0uYmVnaW4oKSkgdmFsdWVzMi5wdXNoX2Jh
Y2sodmFsKTsKKyAgYXV0byBpdCA9IEVyYXNlRmlyc3QoKSgmbSwgMCk7CisgIEFTU0VSVF9UUlVF
KGl0ICE9IG0uZW5kKCkpOworICBFWFBFQ1RfRVEoMSwgc3RkOjpjb3VudCh2YWx1ZXMyLmJlZ2lu
KCksIHZhbHVlczIuZW5kKCksICppdCkpOworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rp
bmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzMi5iZWdpbigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVz
Mi5lbmQoKSkpOworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgRXJhc2VSYW5nZSkg
eworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+Owor
ICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5z
ZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5l
cmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkp
OworICBBU1NFUlRfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJl
QXJyYXkodmFsdWVzKSk7CisgIGF1dG8gaXQgPSBtLmVyYXNlKG0uYmVnaW4oKSwgbS5lbmQoKSk7
CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUo
KSk7CisgIEVYUEVDVF9UUlVFKGl0ID09IG0uZW5kKCkpOworfQorCitUWVBFRF9URVNUX1AoTW9k
aWZpZXJzVGVzdCwgRXJhc2VLZXkpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVy
YXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6Omdl
bmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAg
ICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMu
YmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgQVNTRVJUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5n
OjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBFWFBFQ1RfRVEoMSwgbS5l
cmFzZSh2YWx1ZXNbMF0pKTsKKyAgRVhQRUNUX0VRKDAsIHN0ZDo6Y291bnQobS5iZWdpbigpLCBt
LmVuZCgpLCB2YWx1ZXNbMF0pKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpV
bm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcy5iZWdpbigpICsgMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5l
bmQoKSkpOworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgU3dhcCkgeworICB1c2lu
ZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZl
Y3RvcjxUPiB2MTsKKyAgc3RkOjp2ZWN0b3I8VD4gdjI7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6
OmJhY2tfaW5zZXJ0ZXIodjEpLCA1LCBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7Cisg
IHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodjIpLCA1LCBoYXNoX2ludGVybmFs
OjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtMSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7
CisgIFR5cGVQYXJhbSBtMih2Mi5iZWdpbigpLCB2Mi5lbmQoKSk7CisgIEVYUEVDVF9USEFUKGtl
eXMobTEpLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodjEpKTsKKyAgRVhQ
RUNUX1RIQVQoa2V5cyhtMiksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2
MikpOworICBtMS5zd2FwKG0yKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtMSksIDo6dGVzdGluZzo6
VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2MikpOworICBFWFBFQ1RfVEhBVChrZXlzKG0yKSwg
Ojp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHYxKSk7Cit9CisKKy8vIFRPRE8o
YWxraXMpOiBXcml0ZSB0ZXN0cyBmb3IgZXh0cmFjdC4KKy8vIFRPRE8oYWxraXMpOiBXcml0ZSB0
ZXN0cyBmb3IgbWVyZ2UuCisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE1vZGlmaWVyc1Rl
c3QsIENsZWFyLCBJbnNlcnQsIEluc2VydEhpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnNlcnRSYW5nZSwgRW1wbGFjZSwgRW1wbGFjZUhpbnQsIEVyYXNlLCBFcmFzZVJhbmdlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJhc2VLZXksIFN3YXApOworCit9ICAvLyBuYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAv
LyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX01PRElGSUVSU19URVNUX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMjgxY2U1M2Q1ZTJlNDA3MjhmYjZjYThkZDkwYzBjOTQ5OGFlZmEzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfdGVzdC5j
YwpAQCAtMCwwICsxLDM3IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgorI2luY2x1ZGUgImFi
c2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCIKKyNpbmNs
dWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0
LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewor
bmFtZXNwYWNlIHsKKwordXNpbmcgU2V0VHlwZXMgPQorICAgIDo6dGVzdGluZzo6VHlwZXM8c3Rk
Ojp1bm9yZGVyZWRfc2V0PGludCwgU3RhdGVmdWxUZXN0aW5nSGFzaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwgQWxsb2M8aW50
Pj4sCisgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVub3JkZXJlZF9zZXQ8c3RkOjpzdHJpbmcs
IFN0YXRlZnVsVGVzdGluZ0hhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFsbG9jPHN0ZDo6c3RyaW5nPj4+OworCitJTlNU
QU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbm9yZGVyZWRTZXQsIENvbnN0cnVjdG9yVGVzdCwg
U2V0VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVW5vcmRlcmVkU2V0LCBM
b29rdXBUZXN0LCBTZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbm9y
ZGVyZWRTZXQsIE1vZGlmaWVyc1Rlc3QsIFNldFR5cGVzKTsKKworfSAgLy8gbmFtZXNwYWNlCit9
ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9tYXAuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9ub2RlX2hhc2hfbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM2OWVjM2FkNjQzMWE0N2U2NDMxNjU4
OGU0NjcxNDMxN2U2MWQ5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2Rl
X2hhc2hfbWFwLmgKQEAgLTAsMCArMSw1MzAgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IG5vZGVf
aGFzaF9tYXAuaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBBbiBgYWJzbDo6bm9k
ZV9oYXNoX21hcDxLLCBWPmAgaXMgYW4gdW5vcmRlcmVkIGFzc29jaWF0aXZlIGNvbnRhaW5lciBv
ZgorLy8gdW5pcXVlIGtleXMgYW5kIGFzc29jaWF0ZWQgdmFsdWVzIGRlc2lnbmVkIHRvIGJlIGEg
bW9yZSBlZmZpY2llbnQgcmVwbGFjZW1lbnQKKy8vIGZvciBgc3RkOjp1bm9yZGVyZWRfbWFwYC4g
TGlrZSBgdW5vcmRlcmVkX21hcGAsIHNlYXJjaCwgaW5zZXJ0aW9uLCBhbmQKKy8vIGRlbGV0aW9u
IG9mIG1hcCBlbGVtZW50cyBjYW4gYmUgZG9uZSBhcyBhbiBgTygxKWAgb3BlcmF0aW9uLiBIb3dl
dmVyLAorLy8gYG5vZGVfaGFzaF9tYXBgIChhbmQgb3RoZXIgdW5vcmRlcmVkIGFzc29jaWF0aXZl
IGNvbnRhaW5lcnMga25vd24gYXMgdGhlCisvLyBjb2xsZWN0aW9uIG9mIEFic2VpbCAiU3dpc3Mg
dGFibGVzIikgY29udGFpbiBvdGhlciBvcHRpbWl6YXRpb25zIHRoYXQgcmVzdWx0CisvLyBpbiBi
b3RoIG1lbW9yeSBhbmQgY29tcHV0YXRpb24gYWR2YW50YWdlcy4KKy8vCisvLyBJbiBtb3N0IGNh
c2VzLCB5b3VyIGRlZmF1bHQgY2hvaWNlIGZvciBhIGhhc2ggbWFwIHNob3VsZCBiZSBhIG1hcCBv
ZiB0eXBlCisvLyBgZmxhdF9oYXNoX21hcGAuIEhvd2V2ZXIsIGlmIHlvdSBuZWVkIHBvaW50ZXIg
c3RhYmlsaXR5IGFuZCBjYW5ub3Qgc3RvcmUKKy8vIGEgYGZsYXRfaGFzaF9tYXBgIHdpdGggYHVu
aXF1ZV9wdHJgIGVsZW1lbnRzLCBhIGBub2RlX2hhc2hfbWFwYCBtYXkgYmUgYQorLy8gdmFsaWQg
YWx0ZXJuYXRpdmUuIEFzIHdlbGwsIGlmIHlvdSBhcmUgbWlncmF0aW5nIHlvdXIgY29kZSBmcm9t
IHVzaW5nCisvLyBgc3RkOjp1bm9yZGVyZWRfbWFwYCwgYSBgbm9kZV9oYXNoX21hcGAgcHJvdmlk
ZXMgYSBtb3JlIHN0cmFpZ2h0Zm9yd2FyZAorLy8gbWlncmF0aW9uLCBiZWNhdXNlIGl0IGd1YXJh
bnRlZXMgcG9pbnRlciBzdGFiaWxpdHkuIENvbnNpZGVyIG1pZ3JhdGluZyB0bworLy8gYG5vZGVf
aGFzaF9tYXBgIGFuZCBwZXJoYXBzIGNvbnZlcnRpbmcgdG8gYSBtb3JlIGVmZmljaWVudCBgZmxh
dF9oYXNoX21hcGAKKy8vIHVwb24gZnVydGhlciByZXZpZXcuCisKKyNpZm5kZWYgQUJTTF9DT05U
QUlORVJfTk9ERV9IQVNIX01BUF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9OT0RFX0hBU0hf
TUFQX0hfCisKKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNs
dWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFp
bmVyX21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVu
Y3Rpb25fZGVmYXVsdHMuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5LmgiCisjaW5jbHVkZSAiYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0
CisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewordGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3Mg
VmFsdWU+CitjbGFzcyBOb2RlSGFzaE1hcFBvbGljeTsKK30gIC8vIG5hbWVzcGFjZSBjb250YWlu
ZXJfaW50ZXJuYWwKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6Om5vZGVfaGFz
aF9tYXAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQW4gYGFic2w6Om5vZGVfaGFz
aF9tYXA8SywgVj5gIGlzIGFuIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgd2hpY2gK
Ky8vIGhhcyBiZWVuIG9wdGltaXplZCBmb3IgYm90aCBzcGVlZCBhbmQgbWVtb3J5IGZvb3Rwcmlu
dCBpbiBtb3N0IGNvbW1vbiB1c2UKKy8vIGNhc2VzLiBJdHMgaW50ZXJmYWNlIGlzIHNpbWlsYXIg
dG8gdGhhdCBvZiBgc3RkOjp1bm9yZGVyZWRfbWFwPEssIFY+YCB3aXRoCisvLyB0aGUgZm9sbG93
aW5nIG5vdGFibGUgZGlmZmVyZW5jZXM6CisvLworLy8gKiBTdXBwb3J0cyBoZXRlcm9nZW5lb3Vz
IGxvb2t1cCwgdGhyb3VnaCBgZmluZCgpYCwgYG9wZXJhdG9yW10oKWAgYW5kCisvLyAgIGBpbnNl
cnQoKWAsIHByb3ZpZGVkIHRoYXQgdGhlIG1hcCBpcyBwcm92aWRlZCBhIGNvbXBhdGlibGUgaGV0
ZXJvZ2VuZW91cworLy8gICBoYXNoaW5nIGZ1bmN0aW9uIGFuZCBlcXVhbGl0eSBvcGVyYXRvci4K
Ky8vICogQ29udGFpbnMgYSBgY2FwYWNpdHkoKWAgbWVtYmVyIGZ1bmN0aW9uIGluZGljYXRpbmcg
dGhlIG51bWJlciBvZiBlbGVtZW50CisvLyAgIHNsb3RzIChvcGVuLCBkZWxldGVkLCBhbmQgZW1w
dHkpIHdpdGhpbiB0aGUgaGFzaCBtYXAuCisvLyAqIFJldHVybnMgYHZvaWRgIGZyb20gdGhlIGBl
cmFzZShpdGVyYXRvcilgIG92ZXJsb2FkLgorLy8KKy8vIEJ5IGRlZmF1bHQsIGBub2RlX2hhc2hf
bWFwYCB1c2VzIHRoZSBgYWJzbDo6SGFzaGAgaGFzaGluZyBmcmFtZXdvcmsuCisvLyBBbGwgZnVu
ZGFtZW50YWwgYW5kIEFic2VpbCB0eXBlcyB0aGF0IHN1cHBvcnQgdGhlIGBhYnNsOjpIYXNoYCBm
cmFtZXdvcmsgaGF2ZQorLy8gYSBjb21wYXRpYmxlIGVxdWFsaXR5IG9wZXJhdG9yIGZvciBjb21w
YXJpbmcgaW5zZXJ0aW9ucyBpbnRvIGBub2RlX2hhc2hfbWFwYC4KKy8vIElmIHlvdXIgdHlwZSBp
cyBub3QgeWV0IHN1cHBvcnRlZCBieSB0aGUgYGFzYmw6Okhhc2hgIGZyYW1ld29yaywgc2VlCisv
LyBhYnNsL2hhc2gvaGFzaC5oIGZvciBpbmZvcm1hdGlvbiBvbiBleHRlbmRpbmcgQWJzZWlsIGhh
c2hpbmcgdG8gdXNlci1kZWZpbmVkCisvLyB0eXBlcy4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8v
ICAgLy8gQ3JlYXRlIGEgbm9kZSBoYXNoIG1hcCBvZiB0aHJlZSBzdHJpbmdzICh0aGF0IG1hcCB0
byBzdHJpbmdzKQorLy8gICBhYnNsOjpub2RlX2hhc2hfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0
cmluZz4gZHVja3MgPQorLy8gICAgIHt7ImEiLCAiaHVleSJ9LCB7ImIiLCAiZGV3ZXkifSwgeyJj
IiwgImxvdWllIn19OworLy8KKy8vICAvLyBJbnNlcnQgYSBuZXcgZWxlbWVudCBpbnRvIHRoZSBu
b2RlIGhhc2ggbWFwCisvLyAgZHVja3MuaW5zZXJ0KHsiZCIsICJkb25hbGQifX07CisvLworLy8g
IC8vIEZvcmNlIGEgcmVoYXNoIG9mIHRoZSBub2RlIGhhc2ggbWFwCisvLyAgZHVja3MucmVoYXNo
KDApOworLy8KKy8vICAvLyBGaW5kIHRoZSBlbGVtZW50IHdpdGggdGhlIGtleSAiYiIKKy8vICBz
dGQ6OnN0cmluZyBzZWFyY2hfa2V5ID0gImIiOworLy8gIGF1dG8gcmVzdWx0ID0gZHVja3MuZmlu
ZChzZWFyY2hfa2V5KTsKKy8vICBpZiAocmVzdWx0ICE9IGR1Y2tzLmVuZCgpKSB7CisvLyAgICBz
dGQ6OmNvdXQgPDwgIlJlc3VsdDogIiA8PCBzZWFyY2hfa2V5LT5zZWNvbmQgPDwgc3RkOjplbmRs
OworLy8gIH0KK3RlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIFZhbHVlLAorICAgICAgICAgIGNs
YXNzIEhhc2ggPSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfZGVmYXVsdF9oYXNoPEtl
eT4sCisgICAgICAgICAgY2xhc3MgRXEgPSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hf
ZGVmYXVsdF9lcTxLZXk+LAorICAgICAgICAgIGNsYXNzIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8
c3RkOjpwYWlyPGNvbnN0IEtleSwgVmFsdWU+Pj4KK2NsYXNzIG5vZGVfaGFzaF9tYXAKKyAgICA6
IHB1YmxpYyBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OnJhd19oYXNoX21hcDwKKyAgICAgICAg
ICBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Ok5vZGVIYXNoTWFwUG9saWN5PEtleSwgVmFsdWU+
LCBIYXNoLCBFcSwKKyAgICAgICAgICBBbGxvYz4geworICB1c2luZyBCYXNlID0gdHlwZW5hbWUg
bm9kZV9oYXNoX21hcDo6cmF3X2hhc2hfbWFwOworCisgcHVibGljOgorICBub2RlX2hhc2hfbWFw
KCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAvLyBub2RlX2hhc2hfbWFwOjpiZWdpbigp
CisgIC8vCisgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUg
YG5vZGVfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpiZWdpbjsKKworICAvLyBub2RlX2hhc2hf
bWFwOjpjYmVnaW4oKQorICAvLworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhl
IGJlZ2lubmluZyBvZiB0aGUgYG5vZGVfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpjYmVnaW47
CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6Y2VuZCgpCisgIC8vCisgIC8vIFJldHVybnMgYSBjb25z
dCBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBgbm9kZV9oYXNoX21hcGAuCisgIHVzaW5nIEJh
c2U6OmNlbmQ7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6ZW5kKCkKKyAgLy8KKyAgLy8gUmV0dXJu
cyBhbiBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBgbm9kZV9oYXNoX21hcGAuCisgIHVzaW5n
IEJhc2U6OmVuZDsKKworICAvLyBub2RlX2hhc2hfbWFwOjpjYXBhY2l0eSgpCisgIC8vCisgIC8v
IFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50IHNsb3RzIChhc3NpZ25lZCwgZGVsZXRlZCwg
YW5kIGVtcHR5KQorICAvLyBhdmFpbGFibGUgd2l0aGluIHRoZSBgbm9kZV9oYXNoX21hcGAuCisg
IC8vCisgIC8vIE5PVEU6IHRoaXMgbWVtYmVyIGZ1bmN0aW9uIGlzIHBhcnRpY3VsYXIgdG8gYGFi
c2w6Om5vZGVfaGFzaF9tYXBgIGFuZCBpcworICAvLyBub3QgcHJvdmlkZWQgaW4gdGhlIGBzdGQ6
OnVub3JkZXJlZF9tYXBgIEFQSS4KKyAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CisKKyAgLy8gbm9k
ZV9oYXNoX21hcDo6ZW1wdHkoKQorICAvLworICAvLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRo
ZSBgbm9kZV9oYXNoX21hcGAgaXMgZW1wdHkuCisgIHVzaW5nIEJhc2U6OmVtcHR5OworCisgIC8v
IG5vZGVfaGFzaF9tYXA6Om1heF9zaXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbGFyZ2Vz
dCB0aGVvcmV0aWNhbCBwb3NzaWJsZSBudW1iZXIgb2YgZWxlbWVudHMgd2l0aGluIGEKKyAgLy8g
YG5vZGVfaGFzaF9tYXBgIHVuZGVyIGN1cnJlbnQgbWVtb3J5IGNvbnN0cmFpbnRzLiBUaGlzIHZh
bHVlIGNhbiBiZSB0aG91Z2h0CisgIC8vIG9mIGFzIHRoZSBsYXJnZXN0IHZhbHVlIG9mIGBzdGQ6
OmRpc3RhbmNlKGJlZ2luKCksIGVuZCgpKWAgZm9yIGEKKyAgLy8gYG5vZGVfaGFzaF9tYXA8Sywg
Vj5gLgorICB1c2luZyBCYXNlOjptYXhfc2l6ZTsKKworICAvLyBub2RlX2hhc2hfbWFwOjpzaXpl
KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGN1cnJlbnRseSB3
aXRoaW4gdGhlIGBub2RlX2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6c2l6ZTsKKworICAvLyBu
b2RlX2hhc2hfbWFwOjpjbGVhcigpCisgIC8vCisgIC8vIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZy
b20gdGhlIGBub2RlX2hhc2hfbWFwYC4gSW52YWxpZGF0ZXMgYW55IHJlZmVyZW5jZXMsCisgIC8v
IHBvaW50ZXJzLCBvciBpdGVyYXRvcnMgcmVmZXJyaW5nIHRvIGNvbnRhaW5lZCBlbGVtZW50cy4K
KyAgLy8KKyAgLy8gTk9URTogdGhpcyBvcGVyYXRpb24gbWF5IHNocmluayB0aGUgdW5kZXJseWlu
ZyBidWZmZXIuIFRvIGF2b2lkIHNocmlua2luZworICAvLyB0aGUgdW5kZXJseWluZyBidWZmZXIg
Y2FsbCBgZXJhc2UoYmVnaW4oKSwgZW5kKCkpYC4KKyAgdXNpbmcgQmFzZTo6Y2xlYXI7CisKKyAg
Ly8gbm9kZV9oYXNoX21hcDo6ZXJhc2UoKQorICAvLworICAvLyBFcmFzZXMgZWxlbWVudHMgd2l0
aGluIHRoZSBgbm9kZV9oYXNoX21hcGAuIEVyYXNpbmcgZG9lcyBub3QgdHJpZ2dlciBhCisgIC8v
IHJlaGFzaC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIHZvaWQgZXJh
c2UoY29uc3RfaXRlcmF0b3IgcG9zKToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnQg
YXQgYHBvc2l0aW9uYCBvZiB0aGUgYG5vZGVfaGFzaF9tYXBgLCByZXR1cm5pbmcKKyAgLy8gICBg
dm9pZGAuCisgIC8vCisgIC8vICAgTk9URTogdGhpcyByZXR1cm4gYmVoYXZpb3IgaXMgZGlmZmVy
ZW50IHRoYW4gdGhhdCBvZiBTVEwgY29udGFpbmVycyBpbgorICAvLyAgIGdlbmVyYWwgYW5kIGBz
dGQ6OnVub3JkZXJlZF9tYXBgIGluIHBhcnRpY3VsYXIuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGVy
YXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KToKKyAgLy8KKyAg
Ly8gICBFcmFzZXMgdGhlIGVsZW1lbnRzIGluIHRoZSBvcGVuIGludGVydmFsIFtgZmlyc3RgLCBg
bGFzdGApLCByZXR1cm5pbmcgYW4KKyAgLy8gICBpdGVyYXRvciBwb2ludGluZyB0byBgbGFzdGAu
CisgIC8vCisgIC8vIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYga2V5KToKKyAgLy8K
KyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnQgd2l0aCB0aGUgbWF0Y2hpbmcga2V5LCBpZiBpdCBl
eGlzdHMuCisgIHVzaW5nIEJhc2U6OmVyYXNlOworCisgIC8vIG5vZGVfaGFzaF9tYXA6Omluc2Vy
dCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVl
IGludG8gdGhlIGBub2RlX2hhc2hfbWFwYCwKKyAgLy8gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBv
aW50aW5nIHRvIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50LCBwcm92aWRlZCB0aGF0CisgIC8v
IGFuIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuIElm
IHJlaGFzaGluZyBvY2N1cnMKKyAgLy8gZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRv
cnMgYXJlIGludmFsaWRhdGVkLiBPdmVybG9hZHMgYXJlIGxpc3RlZAorICAvLyBiZWxvdy4KKyAg
Ly8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9yLGJvb2w+IGluc2VydChjb25zdCBpbml0X3R5cGUm
IHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUgYG5vZGVfaGFz
aF9tYXBgLiBSZXR1cm5zIGEgcGFpciBjb25zaXN0aW5nIG9mIGFuCisgIC8vICAgaXRlcmF0b3Ig
dG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9yIHRvIHRoZSBlbGVtZW50IHRoYXQgcHJldmVudGVk
IHRoZQorICAvLyAgIGluc2VydGlvbikgYW5kIGEgYGJvb2xgIGRlbm90aW5nIHdoZXRoZXIgdGhl
IGluc2VydGlvbiB0b29rIHBsYWNlLgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9v
bD4gaW5zZXJ0KFQmJiB2YWx1ZSk6CisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRvcixib29sPiBpbnNl
cnQoaW5pdF90eXBlJiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSBtb3ZlYWJsZSB2
YWx1ZSBpbnRvIHRoZSBgbm9kZV9oYXNoX21hcGAuIFJldHVybnMgYSBgc3RkOjpwYWlyYAorICAv
LyAgIGNvbnNpc3Rpbmcgb2YgYW4gaXRlcmF0b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9y
IHRvIHRoZSBlbGVtZW50IHRoYXQKKyAgLy8gICBwcmV2ZW50ZWQgdGhlIGluc2VydGlvbikgYW5k
IGEgYGJvb2xgIGRlbm90aW5nIHdoZXRoZXIgdGhlIGluc2VydGlvbiB0b29rCisgIC8vICAgcGxh
Y2UuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBjb25z
dCBpbml0X3R5cGUmIHZhbHVlKToKKyAgLy8gaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9y
IGhpbnQsIFQmJiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBo
aW50LCBpbml0X3R5cGUmJiB2YWx1ZSk7CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHZhbHVlLCB1
c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRgIGFzIGEgbm9uLWJpbmRpbmcgc3VnZ2VzdGlvbgor
ICAvLyAgIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaC4gUmV0dXJucyBh
biBpdGVyYXRvciB0byB0aGUKKyAgLy8gICBpbnNlcnRlZCBlbGVtZW50LCBvciB0byB0aGUgZXhp
c3RpbmcgZWxlbWVudCB0aGF0IHByZXZlbnRlZCB0aGUKKyAgLy8gICBpbnNlcnRpb24uCisgIC8v
CisgIC8vIHZvaWQgaW5zZXJ0KElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFz
dCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHJhbmdlIG9mIHZhbHVlcyBbYGZpcnN0YCwgYGxh
c3RgKS4KKyAgLy8KKyAgLy8gICBOT1RFOiBBbHRob3VnaCB0aGUgU1RMIGRvZXMgbm90IHNwZWNp
Znkgd2hpY2ggZWxlbWVudCBtYXkgYmUgaW5zZXJ0ZWQgaWYKKyAgLy8gICBtdWx0aXBsZSBrZXlz
IGNvbXBhcmUgZXF1aXZhbGVudGx5LCBmb3IgYG5vZGVfaGFzaF9tYXBgIHdlIGd1YXJhbnRlZSB0
aGUKKyAgLy8gICBmaXJzdCBtYXRjaCBpcyBpbnNlcnRlZC4KKyAgLy8KKyAgLy8gdm9pZCBpbnNl
cnQoc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaWxpc3QpOgorICAvLworICAvLyAg
IEluc2VydHMgdGhlIGVsZW1lbnRzIHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBgaWxpc3Rg
LgorICAvLworICAvLyAgIE5PVEU6IEFsdGhvdWdoIHRoZSBTVEwgZG9lcyBub3Qgc3BlY2lmeSB3
aGljaCBlbGVtZW50IG1heSBiZSBpbnNlcnRlZCBpZgorICAvLyAgIG11bHRpcGxlIGtleXMgY29t
cGFyZSBlcXVpdmFsZW50bHkgd2l0aGluIHRoZSBpbml0aWFsaXplciBsaXN0LCBmb3IKKyAgLy8g
ICBgbm9kZV9oYXNoX21hcGAgd2UgZ3VhcmFudGVlIHRoZSBmaXJzdCBtYXRjaCBpcyBpbnNlcnRl
ZC4KKyAgdXNpbmcgQmFzZTo6aW5zZXJ0OworCisgIC8vIG5vZGVfaGFzaF9tYXA6Omluc2VydF9v
cl9hc3NpZ24oKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmll
ZCB2YWx1ZSBpbnRvIHRoZSBgbm9kZV9oYXNoX21hcGAgcHJvdmlkZWQKKyAgLy8gdGhhdCBhIHZh
bHVlIHdpdGggdGhlIGdpdmVuIGtleSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LCBvciByZXBsYWNl
cyBpdCB3aXRoCisgIC8vIHRoZSBlbGVtZW50IHZhbHVlIGlmIGEga2V5IGZvciB0aGF0IHZhbHVl
IGFscmVhZHkgZXhpc3RzLCByZXR1cm5pbmcgYW4KKyAgLy8gaXRlcmF0b3IgcG9pbnRpbmcgdG8g
dGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQuIElmIHJlaGFzaGluZyBvY2N1cnMgZHVlIHRvCisg
IC8vIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLiBPdmVybG9h
ZHMgYXJlIGxpc3RlZAorICAvLyBiZWxvdy4KKyAgLy8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9y
LCBib29sPiBpbnNlcnRfb3JfYXNzaWduKGNvbnN0IGluaXRfdHlwZSYgaywgVCYmIG9iaik6Cisg
IC8vIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fzc2lnbihpbml0X3R5cGUm
JiBrLCBUJiYgb2JqKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzL0Fzc2lnbnMgKG9yIG1vdmVzKSB0
aGUgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIGtleSBpbnRvIHRoZQorICAvLyAgIGBub2RlX2hh
c2hfbWFwYC4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgaW5zZXJ0X29yX2Fzc2lnbihjb25zdF9pdGVy
YXRvciBoaW50LAorICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaXRfdHlw
ZSYgaywgVCYmIG9iaik6CisgIC8vIGl0ZXJhdG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3RfaXRl
cmF0b3IgaGludCwgaW5pdF90eXBlJiYgaywgVCYmIG9iaik6CisgIC8vCisgIC8vICAgSW5zZXJ0
cy9Bc3NpZ25zIChvciBtb3ZlcykgdGhlIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW50
byB0aGUKKyAgLy8gICBgbm9kZV9oYXNoX21hcGAgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50
YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hlcmUgdG8gYmVnaW4g
dGhlIGluc2VydGlvbiBzZWFyY2guCisgIHVzaW5nIEJhc2U6Omluc2VydF9vcl9hc3NpZ247CisK
KyAgLy8gbm9kZV9oYXNoX21hcDo6ZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxl
bWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQor
ICAvLyB3aXRoaW4gdGhlIGBub2RlX2hhc2hfbWFwYCwgcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50
IHdpdGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8gVGhl
IGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBl
bGVtZW50IHdpdGggdGhlCisgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNl
IHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVkIGlt
bWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9lbXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBub3QK
KyAgLy8gY29weWFibGUgb3IgbW92ZWFibGUuCisgIC8vCisgIC8vIElmIHJlaGFzaGluZyBvY2N1
cnMgZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLgor
ICB1c2luZyBCYXNlOjplbXBsYWNlOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmVtcGxhY2VfaGlu
dCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVl
IGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBub2RlX2hhc2hf
bWFwYCwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nCisgIC8v
IHN1Z2dlc3Rpb24gZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLCBhbmQg
b25seSBpbnNlcnRzCisgIC8vIHByb3ZpZGVkIHRoYXQgbm8gZWxlbWVudCB3aXRoIHRoZSBnaXZl
biBrZXkgYWxyZWFkeSBleGlzdHMuCisgIC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25z
dHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQorICAv
LyBrZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0
ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJlZmVyIGB0
cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90CisgIC8vIGNvcHlhYmxlIG9yIG1v
dmVhYmxlLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0
aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFj
ZV9oaW50OworCisgIC8vIG5vZGVfaGFzaF9tYXA6OnRyeV9lbXBsYWNlKCkKKyAgLy8KKyAgLy8g
SW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29uc3RydWN0aW5n
IGl0IGluLXBsYWNlCisgIC8vIHdpdGhpbiB0aGUgYG5vZGVfaGFzaF9tYXBgLCBwcm92aWRlZCB0
aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8vIGFscmVhZHkgZXhpc3RzLiBV
bmxpa2UgYGVtcGxhY2UoKWAsIGlmIGFuIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8v
IGFscmVhZHkgZXhpc3RzLCB3ZSBndWFyYW50ZWUgdGhhdCBubyBlbGVtZW50IGlzIGNvbnN0cnVj
dGVkLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9u
LCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgLy8gT3ZlcmxvYWRzIGFyZSBsaXN0
ZWQgYmVsb3cuCisgIC8vCisgIC8vICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiB0cnlfZW1w
bGFjZShjb25zdCBrZXlfdHlwZSYgaywgQXJncyYmLi4uIGFyZ3MpOgorICAvLyAgIHN0ZDo6cGFp
cjxpdGVyYXRvciwgYm9vbD4gdHJ5X2VtcGxhY2Uoa2V5X3R5cGUmJiBrLCBBcmdzJiYuLi4gYXJn
cyk6CisgIC8vCisgIC8vIEluc2VydHMgKHZpYSBjb3B5IG9yIG1vdmUpIHRoZSBlbGVtZW50IG9m
IHRoZSBzcGVjaWZpZWQga2V5IGludG8gdGhlCisgIC8vIGBub2RlX2hhc2hfbWFwYC4KKyAgLy8K
KyAgLy8gICBpdGVyYXRvciB0cnlfZW1wbGFjZShjb25zdF9pdGVyYXRvciBoaW50LAorICAvLyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaXRfdHlwZSYgaywgQXJncyYmLi4uIGFyZ3Mp
OgorICAvLyAgIGl0ZXJhdG9yIHRyeV9lbXBsYWNlKGNvbnN0X2l0ZXJhdG9yIGhpbnQsIGluaXRf
dHlwZSYmIGssIEFyZ3MmJi4uLiBhcmdzKToKKyAgLy8KKyAgLy8gSW5zZXJ0cyAodmlhIGNvcHkg
b3IgbW92ZSkgdGhlIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW50byB0aGUKKyAgLy8g
YG5vZGVfaGFzaF9tYXBgIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmlu
ZGluZyBzdWdnZXN0aW9uCisgIC8vIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNl
YXJjaC4KKyAgdXNpbmcgQmFzZTo6dHJ5X2VtcGxhY2U7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6
ZXh0cmFjdCgpCisgIC8vCisgIC8vIEV4dHJhY3RzIHRoZSBpbmRpY2F0ZWQgZWxlbWVudCwgZXJh
c2luZyBpdCBpbiB0aGUgcHJvY2VzcywgYW5kIHJldHVybnMgaXQKKyAgLy8gYXMgYSBDKysxNy1j
b21wYXRpYmxlIG5vZGUgaGFuZGxlLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8K
KyAgLy8gbm9kZV90eXBlIGV4dHJhY3QoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24pOgorICAvLwor
ICAvLyAgIEV4dHJhY3RzIHRoZSBrZXksdmFsdWUgcGFpciBvZiB0aGUgZWxlbWVudCBhdCB0aGUg
aW5kaWNhdGVkIHBvc2l0aW9uIGFuZAorICAvLyAgIHJldHVybnMgYSBub2RlIGhhbmRsZSBvd25p
bmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4KKyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3QoY29u
c3Qga2V5X3R5cGUmIHgpOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBrZXksdmFsdWUgcGFp
ciBvZiB0aGUgZWxlbWVudCB3aXRoIGEga2V5IG1hdGNoaW5nIHRoZSBwYXNzZWQKKyAgLy8gICBr
ZXkgdmFsdWUgYW5kIHJldHVybnMgYSBub2RlIGhhbmRsZSBvd25pbmcgdGhhdCBleHRyYWN0ZWQg
ZGF0YS4gSWYgdGhlCisgIC8vICAgYG5vZGVfaGFzaF9tYXBgIGRvZXMgbm90IGNvbnRhaW4gYW4g
ZWxlbWVudCB3aXRoIGEgbWF0Y2hpbmcga2V5LCB0aGlzCisgIC8vICAgZnVuY3Rpb24gcmV0dXJu
cyBhbiBlbXB0eSBub2RlIGhhbmRsZS4KKyAgdXNpbmcgQmFzZTo6ZXh0cmFjdDsKKworICAvLyBu
b2RlX2hhc2hfbWFwOjptZXJnZSgpCisgIC8vCisgIC8vIEV4dHJhY3RzIGVsZW1lbnRzIGZyb20g
YSBnaXZlbiBgc291cmNlYCBub2RlIGhhc2ggbWFwIGludG8gdGhpcworICAvLyBgbm9kZV9oYXNo
X21hcGAuIElmIHRoZSBkZXN0aW5hdGlvbiBgbm9kZV9oYXNoX21hcGAgYWxyZWFkeSBjb250YWlu
cyBhbgorICAvLyBlbGVtZW50IHdpdGggYW4gZXF1aXZhbGVudCBrZXksIHRoYXQgZWxlbWVudCBp
cyBub3QgZXh0cmFjdGVkLgorICB1c2luZyBCYXNlOjptZXJnZTsKKworICAvLyBub2RlX2hhc2hf
bWFwOjpzd2FwKG5vZGVfaGFzaF9tYXAmIG90aGVyKQorICAvLworICAvLyBFeGNoYW5nZXMgdGhl
IGNvbnRlbnRzIG9mIHRoaXMgYG5vZGVfaGFzaF9tYXBgIHdpdGggdGhvc2Ugb2YgdGhlIGBvdGhl
cmAKKyAgLy8gbm9kZSBoYXNoIG1hcCwgYXZvaWRpbmcgaW52b2NhdGlvbiBvZiBhbnkgbW92ZSwg
Y29weSwgb3Igc3dhcCBvcGVyYXRpb25zIG9uCisgIC8vIGluZGl2aWR1YWwgZWxlbWVudHMuCisg
IC8vCisgIC8vIEFsbCBpdGVyYXRvcnMgYW5kIHJlZmVyZW5jZXMgb24gdGhlIGBub2RlX2hhc2hf
bWFwYCByZW1haW4gdmFsaWQsIGV4Y2VwdGluZworICAvLyBmb3IgdGhlIHBhc3QtdGhlLWVuZCBp
dGVyYXRvciwgd2hpY2ggaXMgaW52YWxpZGF0ZWQuCisgIC8vCisgIC8vIGBzd2FwKClgIHJlcXVp
cmVzIHRoYXQgdGhlIG5vZGUgaGFzaCBtYXAncyBoYXNoaW5nIGFuZCBrZXkgZXF1aXZhbGVuY2UK
KyAgLy8gZnVuY3Rpb25zIGJlIFN3YXBwYWJsZSwgYW5kIGFyZSBleGNoYWdlZCB1c2luZyB1bnF1
YWxpZmllZCBjYWxscyB0bworICAvLyBub24tbWVtYmVyIGBzd2FwKClgLiBJZiB0aGUgbWFwJ3Mg
YWxsb2NhdG9yIGhhcworICAvLyBgc3RkOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcl90eXBl
Pjo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZWAKKyAgLy8gc2V0IHRvIGB0cnVl
YCwgdGhlIGFsbG9jYXRvcnMgYXJlIGFsc28gZXhjaGFuZ2VkIHVzaW5nIGFuIHVucXVhbGlmaWVk
IGNhbGwKKyAgLy8gdG8gbm9uLW1lbWJlciBgc3dhcCgpYDsgb3RoZXJ3aXNlLCB0aGUgYWxsb2Nh
dG9ycyBhcmUgbm90IHN3YXBwZWQuCisgIHVzaW5nIEJhc2U6OnN3YXA7CisKKyAgLy8gbm9kZV9o
YXNoX21hcDo6cmVoYXNoKGNvdW50KQorICAvLworICAvLyBSZWhhc2hlcyB0aGUgYG5vZGVfaGFz
aF9tYXBgLCBzZXR0aW5nIHRoZSBudW1iZXIgb2Ygc2xvdHMgdG8gYmUgYXQgbGVhc3QKKyAgLy8g
dGhlIHBhc3NlZCB2YWx1ZS4gSWYgdGhlIG5ldyBudW1iZXIgb2Ygc2xvdHMgaW5jcmVhc2VzIHRo
ZSBsb2FkIGZhY3RvciBtb3JlCisgIC8vIHRoYW4gdGhlIGN1cnJlbnQgbWF4aW11bSBsb2FkIGZh
Y3RvcgorICAvLyAoYGNvdW50YCA8IGBzaXplKClgIC8gYG1heF9sb2FkX2ZhY3RvcigpYCksIHRo
ZW4gdGhlIG5ldyBudW1iZXIgb2Ygc2xvdHMKKyAgLy8gd2lsbCBiZSBhdCBsZWFzdCBgc2l6ZSgp
YCAvIGBtYXhfbG9hZF9mYWN0b3IoKWAuCisgIC8vCisgIC8vIFRvIGZvcmNlIGEgcmVoYXNoLCBw
YXNzIHJlaGFzaCgwKS4KKyAgdXNpbmcgQmFzZTo6cmVoYXNoOworCisgIC8vIG5vZGVfaGFzaF9t
YXA6OnJlc2VydmUoY291bnQpCisgIC8vCisgIC8vIFNldHMgdGhlIG51bWJlciBvZiBzbG90cyBp
biB0aGUgYG5vZGVfaGFzaF9tYXBgIHRvIHRoZSBudW1iZXIgbmVlZGVkIHRvCisgIC8vIGFjY29t
bW9kYXRlIGF0IGxlYXN0IGBjb3VudGAgdG90YWwgZWxlbWVudHMgd2l0aG91dCBleGNlZWRpbmcg
dGhlIGN1cnJlbnQKKyAgLy8gbWF4aW11bSBsb2FkIGZhY3RvciwgYW5kIG1heSByZWhhc2ggdGhl
IGNvbnRhaW5lciBpZiBuZWVkZWQuCisgIHVzaW5nIEJhc2U6OnJlc2VydmU7CisKKyAgLy8gbm9k
ZV9oYXNoX21hcDo6YXQoKQorICAvLworICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBt
YXBwZWQgdmFsdWUgb2YgdGhlIGVsZW1lbnQgd2l0aCBrZXkgZXF1aXZhbGVudAorICAvLyB0byB0
aGUgcGFzc2VkIGtleS4KKyAgdXNpbmcgQmFzZTo6YXQ7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6
Y29udGFpbnMoKQorICAvLworICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxlbWVudCB3aXRo
IGEga2V5IGNvbXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4gYGtleWAKKyAgLy8gZXhpc3RzIHdp
dGhpbiB0aGUgYG5vZGVfaGFzaF9tYXBgLCByZXR1cm5pbmcgYHRydWVgIGlmIHNvIG9yIGBmYWxz
ZWAKKyAgLy8gb3RoZXJ3aXNlLgorICB1c2luZyBCYXNlOjpjb250YWluczsKKworICAvLyBub2Rl
X2hhc2hfbWFwOjpjb3VudChjb25zdCBLZXkmIGtleSkgY29uc3QKKyAgLy8KKyAgLy8gUmV0dXJu
cyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGggYSBrZXkgY29tcGFyaW5nIGVxdWFsIHRvIHRo
ZSBnaXZlbgorICAvLyBga2V5YCB3aXRoaW4gdGhlIGBub2RlX2hhc2hfbWFwYC4gbm90ZSB0aGF0
IHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4KKyAgLy8gZWl0aGVyIGAxYCBvciBgMGAgc2luY2Ug
ZHVwbGljYXRlIGtleXMgYXJlIG5vdCBhbGxvd2VkIHdpdGhpbiBhCisgIC8vIGBub2RlX2hhc2hf
bWFwYC4KKyAgdXNpbmcgQmFzZTo6Y291bnQ7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6ZXF1YWxf
cmFuZ2UoKQorICAvLworICAvLyBSZXR1cm5zIGEgY2xvc2VkIHJhbmdlIFtmaXJzdCwgbGFzdF0s
IGRlZmluZWQgYnkgYSBgc3RkOjpwYWlyYCBvZiB0d28KKyAgLy8gaXRlcmF0b3JzLCBjb250YWlu
aW5nIGFsbCBlbGVtZW50cyB3aXRoIHRoZSBwYXNzZWQga2V5IGluIHRoZQorICAvLyBgbm9kZV9o
YXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmVxdWFsX3JhbmdlOworCisgIC8vIG5vZGVfaGFzaF9t
YXA6OmZpbmQoKQorICAvLworICAvLyBGaW5kcyBhbiBlbGVtZW50IHdpdGggdGhlIHBhc3NlZCBg
a2V5YCB3aXRoaW4gdGhlIGBub2RlX2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6ZmluZDsKKwor
ICAvLyBub2RlX2hhc2hfbWFwOjpvcGVyYXRvcltdKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIHJl
ZmVyZW5jZSB0byB0aGUgdmFsdWUgbWFwcGVkIHRvIHRoZSBwYXNzZWQga2V5IHdpdGhpbiB0aGUK
KyAgLy8gYG5vZGVfaGFzaF9tYXBgLCBwZXJmb3JtaW5nIGFuIGBpbnNlcnQoKWAgaWYgdGhlIGtl
eSBkb2VzIG5vdCBhbHJlYWR5CisgIC8vIGV4aXN0LiBJZiBhbiBpbnNlcnRpb24gb2NjdXJzIGFu
ZCByZXN1bHRzIGluIGEgcmVoYXNoaW5nIG9mIHRoZSBjb250YWluZXIsCisgIC8vIGFsbCBpdGVy
YXRvcnMgYXJlIGludmFsaWRhdGVkLiBPdGhlcndpc2UgaXRlcmF0b3JzIGFyZSBub3QgYWZmZWN0
ZWQgYW5kCisgIC8vIHJlZmVyZW5jZXMgYXJlIG5vdCBpbnZhbGlkYXRlZC4gT3ZlcmxvYWRzIGFy
ZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIFQmIG9wZXJhdG9yW10oY29uc3QgS2V5JiBrZXkp
OgorICAvLworICAvLyAgIEluc2VydHMgYW4gaW5pdF90eXBlIG9iamVjdCBjb25zdHJ1Y3RlZCBp
bi1wbGFjZSBpZiB0aGUgZWxlbWVudCB3aXRoIHRoZQorICAvLyAgIGdpdmVuIGtleSBkb2VzIG5v
dCBleGlzdC4KKyAgLy8KKyAgLy8gVCYgb3BlcmF0b3JbXShLZXkmJiBrZXkpOgorICAvLworICAv
LyAgIEluc2VydHMgYW4gaW5pdF90eXBlIG9iamVjdCBjb25zdHJ1Y3RlZCBpbi1wbGFjZSBwcm92
aWRlZCB0aGF0IGFuIGVsZW1lbnQKKyAgLy8gICB3aXRoIHRoZSBnaXZlbiBrZXkgZG9lcyBub3Qg
ZXhpc3QuCisgIHVzaW5nIEJhc2U6Om9wZXJhdG9yW107CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6
YnVja2V0X2NvdW50KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mICJidWNrZXRz
IiB3aXRoaW4gdGhlIGBub2RlX2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6YnVja2V0X2NvdW50
OworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmxvYWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8gUmV0dXJu
cyB0aGUgY3VycmVudCBsb2FkIGZhY3RvciBvZiB0aGUgYG5vZGVfaGFzaF9tYXBgICh0aGUgYXZl
cmFnZSBudW1iZXIKKyAgLy8gb2Ygc2xvdHMgb2NjdXBpZWQgd2l0aCBhIHZhbHVlIHdpdGhpbiB0
aGUgaGFzaCBtYXApLgorICB1c2luZyBCYXNlOjpsb2FkX2ZhY3RvcjsKKworICAvLyBub2RlX2hh
c2hfbWFwOjptYXhfbG9hZF9mYWN0b3IoKQorICAvLworICAvLyBNYW5hZ2VzIHRoZSBtYXhpbXVt
IGxvYWQgZmFjdG9yIG9mIHRoZSBgbm9kZV9oYXNoX21hcGAuIE92ZXJsb2FkcyBhcmUKKyAgLy8g
bGlzdGVkIGJlbG93LgorICAvLworICAvLyBmbG9hdCBub2RlX2hhc2hfbWFwOjptYXhfbG9hZF9m
YWN0b3IoKQorICAvLworICAvLyAgIFJldHVybnMgdGhlIGN1cnJlbnQgbWF4aW11bSBsb2FkIGZh
Y3RvciBvZiB0aGUgYG5vZGVfaGFzaF9tYXBgLgorICAvLworICAvLyB2b2lkIG5vZGVfaGFzaF9t
YXA6Om1heF9sb2FkX2ZhY3RvcihmbG9hdCBtbCkKKyAgLy8KKyAgLy8gICBTZXRzIHRoZSBtYXhp
bXVtIGxvYWQgZmFjdG9yIG9mIHRoZSBgbm9kZV9oYXNoX21hcGAgdG8gdGhlIHBhc3NlZCB2YWx1
ZS4KKyAgLy8KKyAgLy8gICBOT1RFOiBUaGlzIG92ZXJsb2FkIGlzIHByb3ZpZGVkIG9ubHkgZm9y
IEFQSSBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFNUTDsKKyAgLy8gICBgbm9kZV9oYXNoX21hcGAg
d2lsbCBpZ25vcmUgYW55IHNldCBsb2FkIGZhY3RvciBhbmQgbWFuYWdlIGl0cyByZWhhc2hpbmcK
KyAgLy8gICBpbnRlcm5hbGx5IGFzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KKyAgdXNpbmcg
QmFzZTo6bWF4X2xvYWRfZmFjdG9yOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmdldF9hbGxvY2F0
b3IoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBhbGxvY2F0b3IgZnVuY3Rpb24gYXNzb2NpYXRl
ZCB3aXRoIHRoaXMgYG5vZGVfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpnZXRfYWxsb2NhdG9y
OworCisgIC8vIG5vZGVfaGFzaF9tYXA6Omhhc2hfZnVuY3Rpb24oKQorICAvLworICAvLyBSZXR1
cm5zIHRoZSBoYXNoaW5nIGZ1bmN0aW9uIHVzZWQgdG8gaGFzaCB0aGUga2V5cyB3aXRoaW4gdGhp
cworICAvLyBgbm9kZV9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6Omhhc2hfZnVuY3Rpb247CisK
KyAgLy8gbm9kZV9oYXNoX21hcDo6a2V5X2VxKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgZnVu
Y3Rpb24gdXNlZCBmb3IgY29tcGFyaW5nIGtleXMgZXF1YWxpdHkuCisgIHVzaW5nIEJhc2U6Omtl
eV9lcTsKKworICBBQlNMX0RFUFJFQ0FURUQoIkNhbGwgYGhhc2hfZnVuY3Rpb24oKWAgaW5zdGVh
ZC4iKQorICB0eXBlbmFtZSBCYXNlOjpoYXNoZXIgaGFzaF9mdW5jdCgpIHsgcmV0dXJuIHRoaXMt
Pmhhc2hfZnVuY3Rpb24oKTsgfQorCisgIEFCU0xfREVQUkVDQVRFRCgiQ2FsbCBgcmVoYXNoKClg
IGluc3RlYWQuIikKKyAgdm9pZCByZXNpemUodHlwZW5hbWUgQmFzZTo6c2l6ZV90eXBlIGhpbnQp
IHsgdGhpcy0+cmVoYXNoKGhpbnQpOyB9Cit9OworCituYW1lc3BhY2UgY29udGFpbmVyX2ludGVy
bmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVmFsdWU+CitjbGFzcyBOb2RlSGFz
aE1hcFBvbGljeQorICAgIDogcHVibGljIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6bm9kZV9o
YXNoX3BvbGljeTwKKyAgICAgICAgICBzdGQ6OnBhaXI8Y29uc3QgS2V5LCBWYWx1ZT4mLCBOb2Rl
SGFzaE1hcFBvbGljeTxLZXksIFZhbHVlPj4geworICB1c2luZyB2YWx1ZV90eXBlID0gc3RkOjpw
YWlyPGNvbnN0IEtleSwgVmFsdWU+OworCisgcHVibGljOgorICB1c2luZyBrZXlfdHlwZSA9IEtl
eTsKKyAgdXNpbmcgbWFwcGVkX3R5cGUgPSBWYWx1ZTsKKyAgdXNpbmcgaW5pdF90eXBlID0gc3Rk
OjpwYWlyPC8qbm9uIGNvbnN0Ki8ga2V5X3R5cGUsIG1hcHBlZF90eXBlPjsKKworICB0ZW1wbGF0
ZSA8Y2xhc3MgQWxsb2NhdG9yLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgdmFsdWVfdHlwZSog
bmV3X2VsZW1lbnQoQWxsb2NhdG9yKiBhbGxvYywgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICB1c2lu
ZyBQYWlyQWxsb2MgPSB0eXBlbmFtZSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPAorICAgICAgICBB
bGxvY2F0b3I+Ojp0ZW1wbGF0ZSByZWJpbmRfYWxsb2M8dmFsdWVfdHlwZT47CisgICAgUGFpckFs
bG9jIHBhaXJfYWxsb2MoKmFsbG9jKTsKKyAgICB2YWx1ZV90eXBlKiByZXMgPQorICAgICAgICBh
YnNsOjphbGxvY2F0b3JfdHJhaXRzPFBhaXJBbGxvYz46OmFsbG9jYXRlKHBhaXJfYWxsb2MsIDEp
OworICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8UGFpckFsbG9jPjo6Y29uc3RydWN0KHBhaXJf
YWxsb2MsIHJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHJldHVybiByZXM7CisgIH0K
KworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgorICBzdGF0aWMgdm9pZCBkZWxldGVfZWxl
bWVudChBbGxvY2F0b3IqIGFsbG9jLCB2YWx1ZV90eXBlKiBwYWlyKSB7CisgICAgdXNpbmcgUGFp
ckFsbG9jID0gdHlwZW5hbWUgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czwKKyAgICAgICAgQWxsb2Nh
dG9yPjo6dGVtcGxhdGUgcmViaW5kX2FsbG9jPHZhbHVlX3R5cGU+OworICAgIFBhaXJBbGxvYyBw
YWlyX2FsbG9jKCphbGxvYyk7CisgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxQYWlyQWxsb2M+
OjpkZXN0cm95KHBhaXJfYWxsb2MsIHBhaXIpOworICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8
UGFpckFsbG9jPjo6ZGVhbGxvY2F0ZShwYWlyX2FsbG9jLCBwYWlyLCAxKTsKKyAgfQorCisgIHRl
bXBsYXRlIDxjbGFzcyBGLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgZGVjbHR5cGUoYWJzbDo6
Y29udGFpbmVyX2ludGVybmFsOjpEZWNvbXBvc2VQYWlyKAorICAgICAgc3RkOjpkZWNsdmFsPEY+
KCksIHN0ZDo6ZGVjbHZhbDxBcmdzPigpLi4uKSkKKyAgYXBwbHkoRiYmIGYsIEFyZ3MmJi4uLiBh
cmdzKSB7CisgICAgcmV0dXJuIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6RGVjb21wb3NlUGFp
cihzdGQ6OmZvcndhcmQ8Rj4oZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAg
c3RhdGljIHNpemVfdCBlbGVtZW50X3NwYWNlX3VzZWQoY29uc3QgdmFsdWVfdHlwZSopIHsKKyAg
ICByZXR1cm4gc2l6ZW9mKHZhbHVlX3R5cGUpOworICB9CisKKyAgc3RhdGljIFZhbHVlJiB2YWx1
ZSh2YWx1ZV90eXBlKiBlbGVtKSB7IHJldHVybiBlbGVtLT5zZWNvbmQ7IH0KKyAgc3RhdGljIGNv
bnN0IFZhbHVlJiB2YWx1ZShjb25zdCB2YWx1ZV90eXBlKiBlbGVtKSB7IHJldHVybiBlbGVtLT5z
ZWNvbmQ7IH0KK307Cit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBu
YW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9OT0RFX0hBU0hfTUFQX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNoX21hcF90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL25vZGVfaGFzaF9tYXBfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDc4OTY0NGMy
NGU4YzgxNzQxNDkzZTU1YmYwYjYxZTJmMzU2NjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL25vZGVfaGFzaF9tYXBfdGVzdC5jYwpAQCAtMCwwICsxLDIxOCBAQAorLy8gQ29w
eXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFp
bmVyL25vZGVfaGFzaF9tYXAuaCIKKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L3RyYWNrZWQuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRf
bWFwX2NvbnN0cnVjdG9yX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oIgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3VzaW5n
IDo6dGVzdGluZzo6RmllbGQ7Cit1c2luZyA6OnRlc3Rpbmc6OlBhaXI7Cit1c2luZyA6OnRlc3Rp
bmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlOworCit1c2luZyBNYXBUeXBlcyA9IDo6dGVzdGluZzo6
VHlwZXM8CisgICAgYWJzbDo6bm9kZV9oYXNoX21hcDxpbnQsIGludCwgU3RhdGVmdWxUZXN0aW5n
SGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsCisgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
YzxzdGQ6OnBhaXI8Y29uc3QgaW50LCBpbnQ+Pj4sCisgICAgYWJzbDo6bm9kZV9oYXNoX21hcDxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmcsIFN0YXRlZnVsVGVzdGluZ0hhc2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFsbG9jPHN0ZDo6cGFpcjxjb25zdCBzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+Pj4+Owor
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChOb2RlSGFzaE1hcCwgQ29uc3RydWN0b3JU
ZXN0LCBNYXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChOb2RlSGFzaE1h
cCwgTG9va3VwVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
Tm9kZUhhc2hNYXAsIE1vZGlmaWVyc1Rlc3QsIE1hcFR5cGVzKTsKKwordXNpbmcgTSA9IGFic2w6
Om5vZGVfaGFzaF9tYXA8c3RkOjpzdHJpbmcsIFRyYWNrZWQ8aW50Pj47CisKK1RFU1QoTm9kZUhh
c2hNYXAsIEVtcGxhY2UpIHsKKyAgTSBtOworICBUcmFja2VkPGludD4gdCg1Myk7CisgIG0uZW1w
bGFjZSgiYSIsIHQpOworICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9F
USgxLCB0Lm51bV9jb3BpZXMoKSk7CisKKyAgbS5lbXBsYWNlKHN0ZDo6c3RyaW5nKCJhIiksIHQp
OworICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSgxLCB0Lm51bV9j
b3BpZXMoKSk7CisKKyAgc3RkOjpzdHJpbmcgYSgiYSIpOworICBtLmVtcGxhY2UoYSwgdCk7Cisg
IEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDEsIHQubnVtX2NvcGll
cygpKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBjYSgiYSIpOworICBtLmVtcGxhY2UoYSwgdCk7
CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDEsIHQubnVtX2Nv
cGllcygpKTsKKworICBtLmVtcGxhY2Uoc3RkOjptYWtlX3BhaXIoImEiLCB0KSk7CisgIEFTU0VS
VF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDIsIHQubnVtX2NvcGllcygpKTsK
KworICBtLmVtcGxhY2Uoc3RkOjptYWtlX3BhaXIoc3RkOjpzdHJpbmcoImEiKSwgdCkpOworICBB
U1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSgzLCB0Lm51bV9jb3BpZXMo
KSk7CisKKyAgc3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBUcmFja2VkPGludD4+IHAoImEiLCB0KTsK
KyAgQVNTRVJUX0VRKDAsIHQubnVtX21vdmVzKCkpOworICBBU1NFUlRfRVEoNCwgdC5udW1fY29w
aWVzKCkpOworICBtLmVtcGxhY2UocCk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsK
KyAgQVNTRVJUX0VRKDQsIHQubnVtX2NvcGllcygpKTsKKworICBjb25zdCBzdGQ6OnBhaXI8c3Rk
OjpzdHJpbmcsIFRyYWNrZWQ8aW50Pj4gY3AoImEiLCB0KTsKKyAgQVNTRVJUX0VRKDAsIHQubnVt
X21vdmVzKCkpOworICBBU1NFUlRfRVEoNSwgdC5udW1fY29waWVzKCkpOworICBtLmVtcGxhY2Uo
Y3ApOworICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSg1LCB0Lm51
bV9jb3BpZXMoKSk7CisKKyAgc3RkOjpwYWlyPGNvbnN0IHN0ZDo6c3RyaW5nLCBUcmFja2VkPGlu
dD4+IHBjKCJhIiwgdCk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJU
X0VRKDYsIHQubnVtX2NvcGllcygpKTsKKyAgbS5lbXBsYWNlKHBjKTsKKyAgQVNTRVJUX0VRKDAs
IHQubnVtX21vdmVzKCkpOworICBBU1NFUlRfRVEoNiwgdC5udW1fY29waWVzKCkpOworCisgIGNv
bnN0IHN0ZDo6cGFpcjxjb25zdCBzdGQ6OnN0cmluZywgVHJhY2tlZDxpbnQ+PiBjcGMoImEiLCB0
KTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21vdmVzKCkpOworICBBU1NFUlRfRVEoNywgdC5udW1f
Y29waWVzKCkpOworICBtLmVtcGxhY2UoY3BjKTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21vdmVz
KCkpOworICBBU1NFUlRfRVEoNywgdC5udW1fY29waWVzKCkpOworCisgIG0uZW1wbGFjZShzdGQ6
OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgiYSIpLAorICAgICAg
ICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHQpKTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21v
dmVzKCkpOworICBBU1NFUlRfRVEoNywgdC5udW1fY29waWVzKCkpOworCisgIG0uZW1wbGFjZShz
dGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShzdGQ6OnN0cmlu
ZygiYSIpKSwKKyAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSh0KSk7CisgIEFTU0VS
VF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDcsIHQubnVtX2NvcGllcygpKTsK
K30KKworVEVTVChOb2RlSGFzaE1hcCwgQXNzaWduUmVjdXJzaXZlKSB7CisgIHN0cnVjdCBUcmVl
IHsKKyAgICAvLyBWZXJpZnkgdGhhdCB1bm9yZGVyZWRfbWFwPEssIEluY29tcGxldGVUeXBlPiBj
YW4gYmUgaW5zdGFudGlhdGVkLgorICAgIGFic2w6Om5vZGVfaGFzaF9tYXA8aW50LCBUcmVlPiBj
aGlsZHJlbjsKKyAgfTsKKyAgVHJlZSByb290OworICBjb25zdCBUcmVlJiBjaGlsZCA9IHJvb3Qu
Y2hpbGRyZW4uZW1wbGFjZSgpLmZpcnN0LT5zZWNvbmQ7CisgIC8vIFZlcmlmeSB0aGF0IGBsaHMg
PSByaHNgIGRvZXNuJ3QgcmVhZCByaHMgYWZ0ZXIgY2xlYXJpbmcgbGhzLgorICByb290ID0gY2hp
bGQ7Cit9CisKK1RFU1QoRmxhdEhhc2hNYXAsIE1vdmVPbmx5S2V5KSB7CisgIHN0cnVjdCBLZXkg
eworICAgIEtleSgpID0gZGVmYXVsdDsKKyAgICBLZXkoS2V5JiYpID0gZGVmYXVsdDsKKyAgICBL
ZXkmIG9wZXJhdG9yPShLZXkmJikgPSBkZWZhdWx0OworICB9OworICBzdHJ1Y3QgRXEgeworICAg
IGJvb2wgb3BlcmF0b3IoKShjb25zdCBLZXkmLCBjb25zdCBLZXkmKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgIH07CisgIHN0cnVjdCBIYXNoIHsKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShjb25z
dCBLZXkmKSBjb25zdCB7IHJldHVybiAwOyB9CisgIH07CisgIGFic2w6Om5vZGVfaGFzaF9tYXA8
S2V5LCBpbnQsIEhhc2gsIEVxPiBtOworICBtW0tleSgpXTsKK30KKworc3RydWN0IE5vbk1vdmFi
bGVLZXkgeworICBleHBsaWNpdCBOb25Nb3ZhYmxlS2V5KGludCBpKSA6IGkoaSkge30KKyAgTm9u
TW92YWJsZUtleShOb25Nb3ZhYmxlS2V5JiYpID0gZGVsZXRlOworICBpbnQgaTsKK307CitzdHJ1
Y3QgTm9uTW92YWJsZUtleUhhc2ggeworICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7Cisg
IHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IE5vbk1vdmFibGVLZXkmIGspIGNvbnN0IHsgcmV0dXJu
IGsuaTsgfQorICBzaXplX3Qgb3BlcmF0b3IoKShpbnQgaykgY29uc3QgeyByZXR1cm4gazsgfQor
fTsKK3N0cnVjdCBOb25Nb3ZhYmxlS2V5RXEgeworICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZv
aWQ7CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBOb25Nb3ZhYmxlS2V5JiBhLCBjb25zdCBOb25N
b3ZhYmxlS2V5JiBiKSBjb25zdCB7CisgICAgcmV0dXJuIGEuaSA9PSBiLmk7CisgIH0KKyAgYm9v
bCBvcGVyYXRvcigpKGNvbnN0IE5vbk1vdmFibGVLZXkmIGEsIGludCBiKSBjb25zdCB7IHJldHVy
biBhLmkgPT0gYjsgfQorfTsKKworVEVTVChOb2RlSGFzaE1hcCwgTWVyZ2VFeHRyYWN0SW5zZXJ0
KSB7CisgIGFic2w6Om5vZGVfaGFzaF9tYXA8Tm9uTW92YWJsZUtleSwgaW50LCBOb25Nb3ZhYmxl
S2V5SGFzaCwgTm9uTW92YWJsZUtleUVxPgorICAgICAgc2V0MSwgc2V0MjsKKyAgc2V0MS5lbXBs
YWNlKHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjptYWtlX3R1cGxlKDcpLAorICAgICAg
ICAgICAgICAgc3RkOjptYWtlX3R1cGxlKC03KSk7CisgIHNldDEuZW1wbGFjZShzdGQ6OnBpZWNl
d2lzZV9jb25zdHJ1Y3QsIHN0ZDo6bWFrZV90dXBsZSgxNyksCisgICAgICAgICAgICAgICBzdGQ6
Om1ha2VfdHVwbGUoLTE3KSk7CisKKyAgc2V0Mi5lbXBsYWNlKHN0ZDo6cGllY2V3aXNlX2NvbnN0
cnVjdCwgc3RkOjptYWtlX3R1cGxlKDcpLAorICAgICAgICAgICAgICAgc3RkOjptYWtlX3R1cGxl
KC03MCkpOworICBzZXQyLmVtcGxhY2Uoc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6Om1h
a2VfdHVwbGUoMTkpLAorICAgICAgICAgICAgICAgc3RkOjptYWtlX3R1cGxlKC0xOTApKTsKKwor
ICBhdXRvIEVsZW0gPSBbXShpbnQga2V5LCBpbnQgdmFsdWUpIHsKKyAgICByZXR1cm4gUGFpcihG
aWVsZCgmTm9uTW92YWJsZUtleTo6aSwga2V5KSwgdmFsdWUpOworICB9OworCisgIEVYUEVDVF9U
SEFUKHNldDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKEVsZW0oNywgLTcpLCBFbGVtKDE3LCAtMTcp
KSk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKEVsZW0oNywgLTcw
KSwgRWxlbSgxOSwgLTE5MCkpKTsKKworICAvLyBOb25Nb3ZhYmxlS2V5IGlzIG5laXRoZXIgY29w
eWFibGUgbm9yIG1vdmFibGUuIFdlIHNob3VsZCBzdGlsbCBiZSBhYmxlIHRvCisgIC8vIG1vdmUg
bm9kZXMgYXJvdW5kLgorICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJs
ZTxOb25Nb3ZhYmxlS2V5Pjo6dmFsdWUsICIiKTsKKyAgc2V0MS5tZXJnZShzZXQyKTsKKworICBF
WFBFQ1RfVEhBVChzZXQxLAorICAgICAgICAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShFbGVt
KDcsIC03KSwgRWxlbSgxNywgLTE3KSwgRWxlbSgxOSwgLTE5MCkpKTsKKyAgRVhQRUNUX1RIQVQo
c2V0MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoRWxlbSg3LCAtNzApKSk7CisKKyAgYXV0byBub2Rl
ID0gc2V0MS5leHRyYWN0KDcpOworICBFWFBFQ1RfVFJVRShub2RlKTsKKyAgRVhQRUNUX0VRKG5v
ZGUua2V5KCkuaSwgNyk7CisgIEVYUEVDVF9FUShub2RlLm1hcHBlZCgpLCAtNyk7CisgIEVYUEVD
VF9USEFUKHNldDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKEVsZW0oMTcsIC0xNyksIEVsZW0oMTks
IC0xOTApKSk7CisKKyAgYXV0byBpbnNlcnRfcmVzdWx0ID0gc2V0Mi5pbnNlcnQoc3RkOjptb3Zl
KG5vZGUpKTsKKyAgRVhQRUNUX0ZBTFNFKG5vZGUpOworICBFWFBFQ1RfRkFMU0UoaW5zZXJ0X3Jl
c3VsdC5pbnNlcnRlZCk7CisgIEVYUEVDVF9UUlVFKGluc2VydF9yZXN1bHQubm9kZSk7CisgIEVY
UEVDVF9FUShpbnNlcnRfcmVzdWx0Lm5vZGUua2V5KCkuaSwgNyk7CisgIEVYUEVDVF9FUShpbnNl
cnRfcmVzdWx0Lm5vZGUubWFwcGVkKCksIC03KTsKKyAgRVhQRUNUX1RIQVQoKmluc2VydF9yZXN1
bHQucG9zaXRpb24sIEVsZW0oNywgLTcwKSk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJl
ZEVsZW1lbnRzQXJlKEVsZW0oNywgLTcwKSkpOworCisgIG5vZGUgPSBzZXQxLmV4dHJhY3QoMTcp
OworICBFWFBFQ1RfVFJVRShub2RlKTsKKyAgRVhQRUNUX0VRKG5vZGUua2V5KCkuaSwgMTcpOwor
ICBFWFBFQ1RfRVEobm9kZS5tYXBwZWQoKSwgLTE3KTsKKyAgRVhQRUNUX1RIQVQoc2V0MSwgVW5v
cmRlcmVkRWxlbWVudHNBcmUoRWxlbSgxOSwgLTE5MCkpKTsKKworICBub2RlLm1hcHBlZCgpID0g
MjM7CisKKyAgaW5zZXJ0X3Jlc3VsdCA9IHNldDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7Cisg
IEVYUEVDVF9GQUxTRShub2RlKTsKKyAgRVhQRUNUX1RSVUUoaW5zZXJ0X3Jlc3VsdC5pbnNlcnRl
ZCk7CisgIEVYUEVDVF9GQUxTRShpbnNlcnRfcmVzdWx0Lm5vZGUpOworICBFWFBFQ1RfVEhBVCgq
aW5zZXJ0X3Jlc3VsdC5wb3NpdGlvbiwgRWxlbSgxNywgMjMpKTsKKyAgRVhQRUNUX1RIQVQoc2V0
MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoRWxlbSg3LCAtNzApLCBFbGVtKDE3LCAyMykpKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9
ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFz
aF9zZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBk
NGNlMGMxNjMxZDc4Y2ZlY2ZjZDhmYzI5YTFjNDg0YWU5ZjYzNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0LmgKQEAgLTAsMCArMSw0MzkgQEAKKy8vIENv
cHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vIEZpbGU6IG5vZGVfaGFzaF9zZXQuaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBBbiBgYWJzbDo6bm9kZV9oYXNoX3NldDxUPmAgaXMgYW4gdW5vcmRlcmVkIGFzc29j
aWF0aXZlIGNvbnRhaW5lciBkZXNpZ25lZCB0bworLy8gYmUgYSBtb3JlIGVmZmljaWVudCByZXBs
YWNlbWVudCBmb3IgYHN0ZDo6dW5vcmRlcmVkX3NldGAuIExpa2UKKy8vIGB1bm9yZGVyZWRfc2V0
YCwgc2VhcmNoLCBpbnNlcnRpb24sIGFuZCBkZWxldGlvbiBvZiBtYXAgZWxlbWVudHMgY2FuIGJl
IGRvbmUKKy8vIGFzIGFuIGBPKDEpYCBvcGVyYXRpb24uIEhvd2V2ZXIsIGBub2RlX2hhc2hfc2V0
YCAoYW5kIG90aGVyIHVub3JkZXJlZAorLy8gYXNzb2NpYXRpdmUgY29udGFpbmVycyBrbm93biBh
cyB0aGUgY29sbGVjdGlvbiBvZiBBYnNlaWwgIlN3aXNzIHRhYmxlcyIpCisvLyBjb250YWluIG90
aGVyIG9wdGltaXphdGlvbnMgdGhhdCByZXN1bHQgaW4gYm90aCBtZW1vcnkgYW5kIGNvbXB1dGF0
aW9uCisvLyBhZHZhbnRhZ2VzLgorLy8KKy8vIEluIG1vc3QgY2FzZXMsIHlvdXIgZGVmYXVsdCBj
aG9pY2UgZm9yIGEgaGFzaCB0YWJsZSBzaG91bGQgYmUgYSBtYXAgb2YgdHlwZQorLy8gYGZsYXRf
aGFzaF9tYXBgIG9yIGEgc2V0IG9mIHR5cGUgYGZsYXRfaGFzaF9zZXRgLiBIb3dldmVyLCBpZiB5
b3UgbmVlZAorLy8gcG9pbnRlciBzdGFiaWxpdHksIGEgYG5vZGVfaGFzaF9zZXRgIHNob3VsZCBi
ZSB5b3VyIHByZWZlcnJlZCBjaG9pY2UuIEFzCisvLyB3ZWxsLCBpZiB5b3UgYXJlIG1pZ3JhdGlu
ZyB5b3VyIGNvZGUgZnJvbSB1c2luZyBgc3RkOjp1bm9yZGVyZWRfc2V0YCwgYQorLy8gYG5vZGVf
aGFzaF9zZXRgIHNob3VsZCBiZSBhbiBlYXN5IG1pZ3JhdGlvbi4gQ29uc2lkZXIgbWlncmF0aW5n
IHRvCisvLyBgbm9kZV9oYXNoX3NldGAgYW5kIHBlcmhhcHMgY29udmVydGluZyB0byBhIG1vcmUg
ZWZmaWNpZW50IGBmbGF0X2hhc2hfc2V0YAorLy8gdXBvbiBmdXJ0aGVyIHJldmlldy4KKworI2lm
bmRlZiBBQlNMX0NPTlRBSU5FUl9OT0RFX0hBU0hfU0VUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJ
TkVSX05PREVfSEFTSF9TRVRfSF8KKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiAgLy8g
SVdZVSBwcmFnbWE6IGV4cG9ydAorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL25v
ZGVfaGFzaF9wb2xpY3kuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdf
aGFzaF9zZXQuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL21lbW9y
eS9tZW1vcnkuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRl
cm5hbCB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBOb2RlSGFzaFNldFBvbGljeTsK
K30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vIGFic2w6Om5vZGVfaGFzaF9zZXQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gQW4gYGFic2w6Om5vZGVfaGFzaF9zZXQ8VD5gIGlzIGFuIHVub3JkZXJlZCBhc3NvY2lh
dGl2ZSBjb250YWluZXIgd2hpY2gKKy8vIGhhcyBiZWVuIG9wdGltaXplZCBmb3IgYm90aCBzcGVl
ZCBhbmQgbWVtb3J5IGZvb3RwcmludCBpbiBtb3N0IGNvbW1vbiB1c2UKKy8vIGNhc2VzLiBJdHMg
aW50ZXJmYWNlIGlzIHNpbWlsYXIgdG8gdGhhdCBvZiBgc3RkOjp1bm9yZGVyZWRfc2V0PFQ+YCB3
aXRoIHRoZQorLy8gZm9sbG93aW5nIG5vdGFibGUgZGlmZmVyZW5jZXM6CisvLworLy8gKiBTdXBw
b3J0cyBoZXRlcm9nZW5lb3VzIGxvb2t1cCwgdGhyb3VnaCBgZmluZCgpYCwgYG9wZXJhdG9yW10o
KWAgYW5kCisvLyAgIGBpbnNlcnQoKWAsIHByb3ZpZGVkIHRoYXQgdGhlIG1hcCBpcyBwcm92aWRl
ZCBhIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91cworLy8gICBoYXNoaW5nIGZ1bmN0aW9uIGFuZCBl
cXVhbGl0eSBvcGVyYXRvci4KKy8vICogQ29udGFpbnMgYSBgY2FwYWNpdHkoKWAgbWVtYmVyIGZ1
bmN0aW9uIGluZGljYXRpbmcgdGhlIG51bWJlciBvZiBlbGVtZW50CisvLyAgIHNsb3RzIChvcGVu
LCBkZWxldGVkLCBhbmQgZW1wdHkpIHdpdGhpbiB0aGUgaGFzaCBzZXQuCisvLyAqIFJldHVybnMg
YHZvaWRgIGZyb20gdGhlIGBlcmFzZShpdGVyYXRvcilgIG92ZXJsb2FkLgorLy8KKy8vIEJ5IGRl
ZmF1bHQsIGBub2RlX2hhc2hfc2V0YCB1c2VzIHRoZSBgYWJzbDo6SGFzaGAgaGFzaGluZyBmcmFt
ZXdvcmsuCisvLyBBbGwgZnVuZGFtZW50YWwgYW5kIEFic2VpbCB0eXBlcyB0aGF0IHN1cHBvcnQg
dGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdvcmsgaGF2ZQorLy8gYSBjb21wYXRpYmxlIGVxdWFsaXR5
IG9wZXJhdG9yIGZvciBjb21wYXJpbmcgaW5zZXJ0aW9ucyBpbnRvIGBub2RlX2hhc2hfc2V0YC4K
Ky8vIElmIHlvdXIgdHlwZSBpcyBub3QgeWV0IHN1cHBvcnRlZCBieSB0aGUgYGFzYmw6Okhhc2hg
IGZyYW1ld29yaywgc2VlCisvLyBhYnNsL2hhc2gvaGFzaC5oIGZvciBpbmZvcm1hdGlvbiBvbiBl
eHRlbmRpbmcgQWJzZWlsIGhhc2hpbmcgdG8gdXNlci1kZWZpbmVkCisvLyB0eXBlcy4KKy8vCisv
LyBFeGFtcGxlOgorLy8KKy8vICAgLy8gQ3JlYXRlIGEgbm9kZSBoYXNoIHNldCBvZiB0aHJlZSBz
dHJpbmdzCisvLyAgIGFic2w6Om5vZGVfaGFzaF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5n
PiBkdWNrcyA9CisvLyAgICAgeyJodWV5IiwgImRld2V5In0sICJsb3VpZSJ9OworLy8KKy8vICAv
LyBJbnNlcnQgYSBuZXcgZWxlbWVudCBpbnRvIHRoZSBub2RlIGhhc2ggbWFwCisvLyAgZHVja3Mu
aW5zZXJ0KCJkb25hbGQifTsKKy8vCisvLyAgLy8gRm9yY2UgYSByZWhhc2ggb2YgdGhlIG5vZGUg
aGFzaCBtYXAKKy8vICBkdWNrcy5yZWhhc2goMCk7CisvLworLy8gIC8vIFNlZSBpZiAiZGV3ZXki
IGlzIHByZXNlbnQKKy8vICBpZiAoZHVja3MuY29udGFpbnMoImRld2V5IikpIHsKKy8vICAgIHN0
ZDo6Y291dCA8PCAiV2UgZm91bmQgZGV3ZXkhIiA8PCBzdGQ6OmVuZGw7CisvLyAgfQordGVtcGxh
dGUgPGNsYXNzIFQsIGNsYXNzIEhhc2ggPSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hf
ZGVmYXVsdF9oYXNoPFQ+LAorICAgICAgICAgIGNsYXNzIEVxID0gYWJzbDo6Y29udGFpbmVyX2lu
dGVybmFsOjpoYXNoX2RlZmF1bHRfZXE8VD4sCisgICAgICAgICAgY2xhc3MgQWxsb2MgPSBzdGQ6
OmFsbG9jYXRvcjxUPj4KK2NsYXNzIG5vZGVfaGFzaF9zZXQKKyAgICA6IHB1YmxpYyBhYnNsOjpj
b250YWluZXJfaW50ZXJuYWw6OnJhd19oYXNoX3NldDwKKyAgICAgICAgICBhYnNsOjpjb250YWlu
ZXJfaW50ZXJuYWw6Ok5vZGVIYXNoU2V0UG9saWN5PFQ+LCBIYXNoLCBFcSwgQWxsb2M+IHsKKyAg
dXNpbmcgQmFzZSA9IHR5cGVuYW1lIG5vZGVfaGFzaF9zZXQ6OnJhd19oYXNoX3NldDsKKworIHB1
YmxpYzoKKyAgbm9kZV9oYXNoX3NldCgpIHt9CisgIHVzaW5nIEJhc2U6OkJhc2U7CisKKyAgLy8g
bm9kZV9oYXNoX3NldDo6YmVnaW4oKQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRv
IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBub2RlX2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6YmVn
aW47CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6Y2JlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBh
IGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBub2RlX2hhc2hfc2V0YC4K
KyAgdXNpbmcgQmFzZTo6Y2JlZ2luOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmNlbmQoKQorICAv
LworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0aGUgYG5vZGVf
aGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjpjZW5kOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmVu
ZCgpCisgIC8vCisgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0aGUgYG5v
ZGVfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjplbmQ7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6
Y2FwYWNpdHkoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudCBzbG90
cyAoYXNzaWduZWQsIGRlbGV0ZWQsIGFuZCBlbXB0eSkKKyAgLy8gYXZhaWxhYmxlIHdpdGhpbiB0
aGUgYG5vZGVfaGFzaF9zZXRgLgorICAvLworICAvLyBOT1RFOiB0aGlzIG1lbWJlciBmdW5jdGlv
biBpcyBwYXJ0aWN1bGFyIHRvIGBhYnNsOjpub2RlX2hhc2hfc2V0YCBhbmQgaXMKKyAgLy8gbm90
IHByb3ZpZGVkIGluIHRoZSBgc3RkOjp1bm9yZGVyZWRfbWFwYCBBUEkuCisgIHVzaW5nIEJhc2U6
OmNhcGFjaXR5OworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmVtcHR5KCkKKyAgLy8KKyAgLy8gUmV0
dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgYG5vZGVfaGFzaF9zZXRgIGlzIGVtcHR5LgorICB1c2lu
ZyBCYXNlOjplbXB0eTsKKworICAvLyBub2RlX2hhc2hfc2V0OjptYXhfc2l6ZSgpCisgIC8vCisg
IC8vIFJldHVybnMgdGhlIGxhcmdlc3QgdGhlb3JldGljYWwgcG9zc2libGUgbnVtYmVyIG9mIGVs
ZW1lbnRzIHdpdGhpbiBhCisgIC8vIGBub2RlX2hhc2hfc2V0YCB1bmRlciBjdXJyZW50IG1lbW9y
eSBjb25zdHJhaW50cy4gVGhpcyB2YWx1ZSBjYW4gYmUgdGhvdWdodAorICAvLyBvZiB0aGUgbGFy
Z2VzdCB2YWx1ZSBvZiBgc3RkOjpkaXN0YW5jZShiZWdpbigpLCBlbmQoKSlgIGZvciBhCisgIC8v
IGBub2RlX2hhc2hfc2V0PFQ+YC4KKyAgdXNpbmcgQmFzZTo6bWF4X3NpemU7CisKKyAgLy8gbm9k
ZV9oYXNoX3NldDo6c2l6ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVt
ZW50cyBjdXJyZW50bHkgd2l0aGluIHRoZSBgbm9kZV9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6
OnNpemU7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6Y2xlYXIoKQorICAvLworICAvLyBSZW1vdmVz
IGFsbCBlbGVtZW50cyBmcm9tIHRoZSBgbm9kZV9oYXNoX3NldGAuIEludmFsaWRhdGVzIGFueSBy
ZWZlcmVuY2VzLAorICAvLyBwb2ludGVycywgb3IgaXRlcmF0b3JzIHJlZmVycmluZyB0byBjb250
YWluZWQgZWxlbWVudHMuCisgIC8vCisgIC8vIE5PVEU6IHRoaXMgb3BlcmF0aW9uIG1heSBzaHJp
bmsgdGhlIHVuZGVybHlpbmcgYnVmZmVyLiBUbyBhdm9pZCBzaHJpbmtpbmcKKyAgLy8gdGhlIHVu
ZGVybHlpbmcgYnVmZmVyIGNhbGwgYGVyYXNlKGJlZ2luKCksIGVuZCgpKWAuCisgIHVzaW5nIEJh
c2U6OmNsZWFyOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmVyYXNlKCkKKyAgLy8KKyAgLy8gRXJh
c2VzIGVsZW1lbnRzIHdpdGhpbiB0aGUgYG5vZGVfaGFzaF9zZXRgLiBFcmFzaW5nIGRvZXMgbm90
IHRyaWdnZXIgYQorICAvLyByZWhhc2guIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAv
LworICAvLyB2b2lkIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIHBvcyk6CisgIC8vCisgIC8vICAgRXJh
c2VzIHRoZSBlbGVtZW50IGF0IGBwb3NpdGlvbmAgb2YgdGhlIGBub2RlX2hhc2hfc2V0YCwgcmV0
dXJuaW5nCisgIC8vICAgYHZvaWRgLgorICAvLworICAvLyAgIE5PVEU6IHRoaXMgcmV0dXJuIGJl
aGF2aW9yIGlzIGRpZmZlcmVudCB0aGFuIHRoYXQgb2YgU1RMIGNvbnRhaW5lcnMgaW4KKyAgLy8g
ICBnZW5lcmFsIGFuZCBgc3RkOjp1bm9yZGVyZWRfbWFwYCBpbiBwYXJ0aWN1bGFyLgorICAvLwor
ICAvLyBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3Ig
bGFzdCk6CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50cyBpbiB0aGUgb3BlbiBpbnRl
cnZhbCBbYGZpcnN0YCwgYGxhc3RgKSwgcmV0dXJuaW5nIGFuCisgIC8vICAgaXRlcmF0b3IgcG9p
bnRpbmcgdG8gYGxhc3RgLgorICAvLworICAvLyBzaXplX3R5cGUgZXJhc2UoY29uc3Qga2V5X3R5
cGUmIGtleSk6CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50IHdpdGggdGhlIG1hdGNo
aW5nIGtleSwgaWYgaXQgZXhpc3RzLgorICB1c2luZyBCYXNlOjplcmFzZTsKKworICAvLyBub2Rl
X2hhc2hfc2V0OjppbnNlcnQoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhl
IHNwZWNpZmllZCB2YWx1ZSBpbnRvIHRoZSBgbm9kZV9oYXNoX3NldGAsCisgIC8vIHJldHVybmlu
ZyBhbiBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudCwgcHJv
dmlkZWQgdGhhdAorICAvLyBhbiBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleSBkb2VzIG5vdCBh
bHJlYWR5IGV4aXN0LiBJZiByZWhhc2hpbmcgb2NjdXJzCisgIC8vIGR1ZSB0byB0aGUgaW5zZXJ0
aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQK
KyAgLy8gYmVsb3cuCisgIC8vCisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQo
Y29uc3QgVCYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSBpbnRvIHRoZSBg
bm9kZV9oYXNoX3NldGAuIFJldHVybnMgYSBwYWlyIGNvbnNpc3Rpbmcgb2YgYW4KKyAgLy8gICBp
dGVyYXRvciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3IgdG8gdGhlIGVsZW1lbnQgdGhhdCBw
cmV2ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uKSBhbmQgYSBib29sIGRlbm90aW5nIHdoZXRo
ZXIgdGhlIGluc2VydGlvbiB0b29rIHBsYWNlLgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0
b3IsYm9vbD4gaW5zZXJ0KFQmJiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIG1vdmVh
YmxlIHZhbHVlIGludG8gdGhlIGBub2RlX2hhc2hfc2V0YC4gUmV0dXJucyBhIHBhaXIKKyAgLy8g
ICBjb25zaXN0aW5nIG9mIGFuIGl0ZXJhdG9yIHRvIHRoZSBpbnNlcnRlZCBlbGVtZW50IChvciB0
byB0aGUgZWxlbWVudCB0aGF0CisgIC8vICAgcHJldmVudGVkIHRoZSBpbnNlcnRpb24pIGFuZCBh
IGJvb2wgZGVub3Rpbmcgd2hldGhlciB0aGUgaW5zZXJ0aW9uIHRvb2sKKyAgLy8gICBwbGFjZS4K
KyAgLy8KKyAgLy8gaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIGNvbnN0IFQm
IHZhbHVlKToKKyAgLy8gaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIFQmJiB2
YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHZhbHVlLCB1c2luZyB0aGUgcG9zaXRpb24g
b2YgYGhpbnRgIGFzIGEgbm9uLWJpbmRpbmcgc3VnZ2VzdGlvbgorICAvLyAgIGZvciB3aGVyZSB0
byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaC4gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUK
KyAgLy8gICBpbnNlcnRlZCBlbGVtZW50LCBvciB0byB0aGUgZXhpc3RpbmcgZWxlbWVudCB0aGF0
IHByZXZlbnRlZCB0aGUKKyAgLy8gICBpbnNlcnRpb24uCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0
KElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCk6CisgIC8vCisgIC8vICAg
SW5zZXJ0cyBhIHJhbmdlIG9mIHZhbHVlcyBbYGZpcnN0YCwgYGxhc3RgKS4KKyAgLy8KKyAgLy8g
ICBOT1RFOiBBbHRob3VnaCB0aGUgU1RMIGRvZXMgbm90IHNwZWNpZnkgd2hpY2ggZWxlbWVudCBt
YXkgYmUgaW5zZXJ0ZWQgaWYKKyAgLy8gICBtdWx0aXBsZSBrZXlzIGNvbXBhcmUgZXF1aXZhbGVu
dGx5LCBmb3IgYG5vZGVfaGFzaF9zZXRgIHdlIGd1YXJhbnRlZSB0aGUKKyAgLy8gICBmaXJzdCBt
YXRjaCBpcyBpbnNlcnRlZC4KKyAgLy8KKyAgLy8gdm9pZCBpbnNlcnQoc3RkOjppbml0aWFsaXpl
cl9saXN0PFQ+IGlsaXN0KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIHRoZSBlbGVtZW50cyB3aXRo
aW4gdGhlIGluaXRpYWxpemVyIGxpc3QgYGlsaXN0YC4KKyAgLy8KKyAgLy8gICBOT1RFOiBBbHRo
b3VnaCB0aGUgU1RMIGRvZXMgbm90IHNwZWNpZnkgd2hpY2ggZWxlbWVudCBtYXkgYmUgaW5zZXJ0
ZWQgaWYKKyAgLy8gICBtdWx0aXBsZSBrZXlzIGNvbXBhcmUgZXF1aXZhbGVudGx5IHdpdGhpbiB0
aGUgaW5pdGlhbGl6ZXIgbGlzdCwgZm9yCisgIC8vICAgYG5vZGVfaGFzaF9zZXRgIHdlIGd1YXJh
bnRlZSB0aGUgZmlyc3QgbWF0Y2ggaXMgaW5zZXJ0ZWQuCisgIHVzaW5nIEJhc2U6Omluc2VydDsK
KworICAvLyBub2RlX2hhc2hfc2V0OjplbXBsYWNlKCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBl
bGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29uc3RydWN0aW5nIGl0IGluLXBsYWNl
CisgIC8vIHdpdGhpbiB0aGUgYG5vZGVfaGFzaF9zZXRgLCBwcm92aWRlZCB0aGF0IG5vIGVsZW1l
bnQgd2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8vIGFscmVhZHkgZXhpc3RzLgorICAvLworICAvLyBU
aGUgZWxlbWVudCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFu
IGVsZW1lbnQgd2l0aCB0aGUKKyAgLy8ga2V5IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNh
c2UgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQorICAvLyBkZXN0cm95ZWQg
aW1tZWRpYXRlbHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlvdXIga2V5IGlzIG5v
dAorICAvLyBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8KKyAgLy8gSWYgcmVoYXNoaW5nIG9j
Y3VycyBkdWUgdG8gdGhlIGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQu
CisgIHVzaW5nIEJhc2U6OmVtcGxhY2U7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6ZW1wbGFjZV9o
aW50KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFs
dWUgYnkgY29uc3RydWN0aW5nIGl0IGluLXBsYWNlCisgIC8vIHdpdGhpbiB0aGUgYG5vZGVfaGFz
aF9zZXRgLCB1c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRgIGFzIGEgbm9uLWJpbmRpbmcKKyAg
Ly8gc3VnZ2VzdGlvbiBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2gsIGFu
ZCBvbmx5IGluc2VydHMKKyAgLy8gcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50IHdpdGggdGhlIGdp
dmVuIGtleSBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8gVGhlIGVsZW1lbnQgbWF5IGJlIGNv
bnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBlbGVtZW50IHdpdGggdGhlCisg
IC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIHRoZSBuZXdseSBjb25zdHJ1
Y3RlZCBlbGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5LiBQcmVmZXIg
YHRyeV9lbXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBub3QKKyAgLy8gY29weWFibGUgb3Ig
bW92ZWFibGUuCisgIC8vCisgIC8vIElmIHJlaGFzaGluZyBvY2N1cnMgZHVlIHRvIHRoZSBpbnNl
cnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjplbXBs
YWNlX2hpbnQ7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6ZXh0cmFjdCgpCisgIC8vCisgIC8vIEV4
dHJhY3RzIHRoZSBpbmRpY2F0ZWQgZWxlbWVudCwgZXJhc2luZyBpdCBpbiB0aGUgcHJvY2Vzcywg
YW5kIHJldHVybnMgaXQKKyAgLy8gYXMgYSBDKysxNy1jb21wYXRpYmxlIG5vZGUgaGFuZGxlLiBP
dmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3Qo
Y29uc3RfaXRlcmF0b3IgcG9zaXRpb24pOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBlbGVt
ZW50IGF0IHRoZSBpbmRpY2F0ZWQgcG9zaXRpb24gYW5kIHJldHVybnMgYSBub2RlIGhhbmRsZQor
ICAvLyAgIG93bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLgorICAvLworICAvLyBub2RlX3R5cGUg
ZXh0cmFjdChjb25zdCBrZXlfdHlwZSYgeCk6CisgIC8vCisgIC8vICAgRXh0cmFjdHMgdGhlIGVs
ZW1lbnQgd2l0aCB0aGUga2V5IG1hdGNoaW5nIHRoZSBwYXNzZWQga2V5IHZhbHVlIGFuZAorICAv
LyAgIHJldHVybnMgYSBub2RlIGhhbmRsZSBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4gSWYg
dGhlIGBub2RlX2hhc2hfc2V0YAorICAvLyAgIGRvZXMgbm90IGNvbnRhaW4gYW4gZWxlbWVudCB3
aXRoIGEgbWF0Y2hpbmcga2V5LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4KKyAgLy8gZW1wdHkg
bm9kZSBoYW5kbGUuCisgIHVzaW5nIEJhc2U6OmV4dHJhY3Q7CisKKyAgLy8gbm9kZV9oYXNoX3Nl
dDo6bWVyZ2UoKQorICAvLworICAvLyBFeHRyYWN0cyBlbGVtZW50cyBmcm9tIGEgZ2l2ZW4gYHNv
dXJjZWAgZmxhdCBoYXNoIG1hcCBpbnRvIHRoaXMKKyAgLy8gYG5vZGVfaGFzaF9zZXRgLiBJZiB0
aGUgZGVzdGluYXRpb24gYG5vZGVfaGFzaF9zZXRgIGFscmVhZHkgY29udGFpbnMgYW4KKyAgLy8g
ZWxlbWVudCB3aXRoIGFuIGVxdWl2YWxlbnQga2V5LCB0aGF0IGVsZW1lbnQgaXMgbm90IGV4dHJh
Y3RlZC4KKyAgdXNpbmcgQmFzZTo6bWVyZ2U7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6c3dhcChu
b2RlX2hhc2hfc2V0JiBvdGhlcikKKyAgLy8KKyAgLy8gRXhjaGFuZ2VzIHRoZSBjb250ZW50cyBv
ZiB0aGlzIGBub2RlX2hhc2hfc2V0YCB3aXRoIHRob3NlIG9mIHRoZSBgb3RoZXJgCisgIC8vIGZs
YXQgaGFzaCBtYXAsIGF2b2lkaW5nIGludm9jYXRpb24gb2YgYW55IG1vdmUsIGNvcHksIG9yIHN3
YXAgb3BlcmF0aW9ucyBvbgorICAvLyBpbmRpdmlkdWFsIGVsZW1lbnRzLgorICAvLworICAvLyBB
bGwgaXRlcmF0b3JzIGFuZCByZWZlcmVuY2VzIG9uIHRoZSBgbm9kZV9oYXNoX3NldGAgcmVtYWlu
IHZhbGlkLCBleGNlcHRpbmcKKyAgLy8gZm9yIHRoZSBwYXN0LXRoZS1lbmQgaXRlcmF0b3IsIHdo
aWNoIGlzIGludmFsaWRhdGVkLgorICAvLworICAvLyBgc3dhcCgpYCByZXF1aXJlcyB0aGF0IHRo
ZSBmbGF0IGhhc2ggc2V0J3MgaGFzaGluZyBhbmQga2V5IGVxdWl2YWxlbmNlCisgIC8vIGZ1bmN0
aW9ucyBiZSBTd2FwcGFibGUsIGFuZCBhcmUgZXhjaGFnZWQgdXNpbmcgdW5xdWFsaWZpZWQgY2Fs
bHMgdG8KKyAgLy8gbm9uLW1lbWJlciBgc3dhcCgpYC4gSWYgdGhlIG1hcCdzIGFsbG9jYXRvciBo
YXMKKyAgLy8gYHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT46OnByb3BhZ2F0
ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWVgCisgIC8vIHNldCB0byBgdHJ1ZWAsIHRoZSBhbGxv
Y2F0b3JzIGFyZSBhbHNvIGV4Y2hhbmdlZCB1c2luZyBhbiB1bnF1YWxpZmllZCBjYWxsCisgIC8v
IHRvIG5vbi1tZW1iZXIgYHN3YXAoKWA7IG90aGVyd2lzZSwgdGhlIGFsbG9jYXRvcnMgYXJlIG5v
dCBzd2FwcGVkLgorICB1c2luZyBCYXNlOjpzd2FwOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OnJl
aGFzaChjb3VudCkKKyAgLy8KKyAgLy8gUmVoYXNoZXMgdGhlIGBub2RlX2hhc2hfc2V0YCwgc2V0
dGluZyB0aGUgbnVtYmVyIG9mIHNsb3RzIHRvIGJlIGF0IGxlYXN0CisgIC8vIHRoZSBwYXNzZWQg
dmFsdWUuIElmIHRoZSBuZXcgbnVtYmVyIG9mIHNsb3RzIGluY3JlYXNlcyB0aGUgbG9hZCBmYWN0
b3IgbW9yZQorICAvLyB0aGFuIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBmYWN0b3IKKyAgLy8g
KGBjb3VudGAgPCBgc2l6ZSgpYCAvIGBtYXhfbG9hZF9mYWN0b3IoKWApLCB0aGVuIHRoZSBuZXcg
bnVtYmVyIG9mIHNsb3RzCisgIC8vIHdpbGwgYmUgYXQgbGVhc3QgYHNpemUoKWAgLyBgbWF4X2xv
YWRfZmFjdG9yKClgLgorICAvLworICAvLyBUbyBmb3JjZSBhIHJlaGFzaCwgcGFzcyByZWhhc2go
MCkuCisgIC8vCisgIC8vIE5PVEU6IHVubGlrZSBiZWhhdmlvciBpbiBgc3RkOjp1bm9yZGVyZWRf
c2V0YCwgcmVmZXJlbmNlcyBhcmUgYWxzbworICAvLyBpbnZhbGlkYXRlZCB1cG9uIGEgYHJlaGFz
aCgpYC4KKyAgdXNpbmcgQmFzZTo6cmVoYXNoOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OnJlc2Vy
dmUoY291bnQpCisgIC8vCisgIC8vIFNldHMgdGhlIG51bWJlciBvZiBzbG90cyBpbiB0aGUgYG5v
ZGVfaGFzaF9zZXRgIHRvIHRoZSBudW1iZXIgbmVlZGVkIHRvCisgIC8vIGFjY29tbW9kYXRlIGF0
IGxlYXN0IGBjb3VudGAgdG90YWwgZWxlbWVudHMgd2l0aG91dCBleGNlZWRpbmcgdGhlIGN1cnJl
bnQKKyAgLy8gbWF4aW11bSBsb2FkIGZhY3RvciwgYW5kIG1heSByZWhhc2ggdGhlIGNvbnRhaW5l
ciBpZiBuZWVkZWQuCisgIHVzaW5nIEJhc2U6OnJlc2VydmU7CisKKyAgLy8gbm9kZV9oYXNoX3Nl
dDo6Y29udGFpbnMoKQorICAvLworICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxlbWVudCBj
b21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgIGV4aXN0cworICAvLyB3aXRoaW4gdGhl
IGBub2RlX2hhc2hfc2V0YCwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzbyBvciBgZmFsc2VgIG90aGVy
d2lzZS4KKyAgdXNpbmcgQmFzZTo6Y29udGFpbnM7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6Y291
bnQoY29uc3QgS2V5JiBrZXkpIGNvbnN0CisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBv
ZiBlbGVtZW50cyBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgIHdpdGhpbgorICAv
LyB0aGUgYG5vZGVfaGFzaF9zZXRgLiBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVy
biBlaXRoZXIgYDFgIG9yIGAwYAorICAvLyBzaW5jZSBkdXBsaWNhdGUgZWxlbWVudHMgYXJlIG5v
dCBhbGxvd2VkIHdpdGhpbiBhIGBub2RlX2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Y291bnQ7
CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6ZXF1YWxfcmFuZ2UoKQorICAvLworICAvLyBSZXR1cm5z
IGEgY2xvc2VkIHJhbmdlIFtmaXJzdCwgbGFzdF0sIGRlZmluZWQgYnkgYSBgc3RkOjpwYWlyYCBv
ZiB0d28KKyAgLy8gaXRlcmF0b3JzLCBjb250YWluaW5nIGFsbCBlbGVtZW50cyB3aXRoIHRoZSBw
YXNzZWQga2V5IGluIHRoZQorICAvLyBgbm9kZV9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmVx
dWFsX3JhbmdlOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmZpbmQoKQorICAvLworICAvLyBGaW5k
cyBhbiBlbGVtZW50IHdpdGggdGhlIHBhc3NlZCBga2V5YCB3aXRoaW4gdGhlIGBub2RlX2hhc2hf
c2V0YC4KKyAgdXNpbmcgQmFzZTo6ZmluZDsKKworICAvLyBub2RlX2hhc2hfc2V0OjpidWNrZXRf
Y291bnQoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgImJ1Y2tldHMiIHdpdGhp
biB0aGUgYG5vZGVfaGFzaF9zZXRgLiBOb3RlIHRoYXQKKyAgLy8gYmVjYXVzZSBhIGZsYXQgaGFz
aCBtYXAgY29udGFpbnMgYWxsIGVsZW1lbnRzIHdpdGhpbiBpdHMgaW50ZXJuYWwgc3RvcmFnZSwK
KyAgLy8gdGhpcyB2YWx1ZSBzaW1wbHkgZXF1YWxzIHRoZSBjdXJyZW50IGNhcGFjaXR5IG9mIHRo
ZSBgbm9kZV9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmJ1Y2tldF9jb3VudDsKKworICAvLyBu
b2RlX2hhc2hfc2V0Ojpsb2FkX2ZhY3RvcigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGN1cnJl
bnQgbG9hZCBmYWN0b3Igb2YgdGhlIGBub2RlX2hhc2hfc2V0YCAodGhlIGF2ZXJhZ2UgbnVtYmVy
CisgIC8vIG9mIHNsb3RzIG9jY3VwaWVkIHdpdGggYSB2YWx1ZSB3aXRoaW4gdGhlIGhhc2ggbWFw
KS4KKyAgdXNpbmcgQmFzZTo6bG9hZF9mYWN0b3I7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6bWF4
X2xvYWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8gTWFuYWdlcyB0aGUgbWF4aW11bSBsb2FkIGZhY3Rv
ciBvZiB0aGUgYG5vZGVfaGFzaF9zZXRgLiBPdmVybG9hZHMgYXJlCisgIC8vIGxpc3RlZCBiZWxv
dy4KKyAgLy8KKyAgLy8gZmxvYXQgbm9kZV9oYXNoX3NldDo6bWF4X2xvYWRfZmFjdG9yKCkKKyAg
Ly8KKyAgLy8gICBSZXR1cm5zIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBmYWN0b3Igb2YgdGhl
IGBub2RlX2hhc2hfc2V0YC4KKyAgLy8KKyAgLy8gdm9pZCBub2RlX2hhc2hfc2V0OjptYXhfbG9h
ZF9mYWN0b3IoZmxvYXQgbWwpCisgIC8vCisgIC8vICAgU2V0cyB0aGUgbWF4aW11bSBsb2FkIGZh
Y3RvciBvZiB0aGUgYG5vZGVfaGFzaF9zZXRgIHRvIHRoZSBwYXNzZWQgdmFsdWUuCisgIC8vCisg
IC8vICAgTk9URTogVGhpcyBvdmVybG9hZCBpcyBwcm92aWRlZCBvbmx5IGZvciBBUEkgY29tcGF0
aWJpbGl0eSB3aXRoIHRoZSBTVEw7CisgIC8vICAgYG5vZGVfaGFzaF9zZXRgIHdpbGwgaWdub3Jl
IGFueSBzZXQgbG9hZCBmYWN0b3IgYW5kIG1hbmFnZSBpdHMgcmVoYXNoaW5nCisgIC8vICAgaW50
ZXJuYWxseSBhcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgIHVzaW5nIEJhc2U6Om1heF9s
b2FkX2ZhY3RvcjsKKworICAvLyBub2RlX2hhc2hfc2V0OjpnZXRfYWxsb2NhdG9yKCkKKyAgLy8K
KyAgLy8gUmV0dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlz
IGBub2RlX2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Z2V0X2FsbG9jYXRvcjsKKworICAvLyBu
b2RlX2hhc2hfc2V0OjpoYXNoX2Z1bmN0aW9uKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgaGFz
aGluZyBmdW5jdGlvbiB1c2VkIHRvIGhhc2ggdGhlIGtleXMgd2l0aGluIHRoaXMKKyAgLy8gYG5v
ZGVfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjpoYXNoX2Z1bmN0aW9uOworCisgIC8vIG5vZGVf
aGFzaF9zZXQ6OmtleV9lcSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGZ1bmN0aW9uIHVzZWQg
Zm9yIGNvbXBhcmluZyBrZXlzIGVxdWFsaXR5LgorICB1c2luZyBCYXNlOjprZXlfZXE7CisKKyAg
QUJTTF9ERVBSRUNBVEVEKCJDYWxsIGBoYXNoX2Z1bmN0aW9uKClgIGluc3RlYWQuIikKKyAgdHlw
ZW5hbWUgQmFzZTo6aGFzaGVyIGhhc2hfZnVuY3QoKSB7IHJldHVybiB0aGlzLT5oYXNoX2Z1bmN0
aW9uKCk7IH0KKworICBBQlNMX0RFUFJFQ0FURUQoIkNhbGwgYHJlaGFzaCgpYCBpbnN0ZWFkLiIp
CisgIHZvaWQgcmVzaXplKHR5cGVuYW1lIEJhc2U6OnNpemVfdHlwZSBoaW50KSB7IHRoaXMtPnJl
aGFzaChoaW50KTsgfQorfTsKKworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IE5vZGVIYXNoU2V0UG9saWN5CisgICAgOiBhYnNsOjpj
b250YWluZXJfaW50ZXJuYWw6Om5vZGVfaGFzaF9wb2xpY3k8VCYsIE5vZGVIYXNoU2V0UG9saWN5
PFQ+PiB7CisgIHVzaW5nIGtleV90eXBlID0gVDsKKyAgdXNpbmcgaW5pdF90eXBlID0gVDsKKyAg
dXNpbmcgY29uc3RhbnRfaXRlcmF0b3JzID0gc3RkOjp0cnVlX3R5cGU7CisKKyAgdGVtcGxhdGUg
PGNsYXNzIEFsbG9jYXRvciwgY2xhc3MuLi4gQXJncz4KKyAgc3RhdGljIFQqIG5ld19lbGVtZW50
KEFsbG9jYXRvciogYWxsb2MsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgdXNpbmcgVmFsdWVBbGxv
YyA9CisgICAgICAgIHR5cGVuYW1lIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6
dGVtcGxhdGUgcmViaW5kX2FsbG9jPFQ+OworICAgIFZhbHVlQWxsb2MgdmFsdWVfYWxsb2MoKmFs
bG9jKTsKKyAgICBUKiByZXMgPSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPFZhbHVlQWxsb2M+Ojph
bGxvY2F0ZSh2YWx1ZV9hbGxvYywgMSk7CisgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxWYWx1
ZUFsbG9jPjo6Y29uc3RydWN0KHZhbHVlX2FsbG9jLCByZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
Lik7CisgICAgcmV0dXJuIHJlczsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3I+
CisgIHN0YXRpYyB2b2lkIGRlbGV0ZV9lbGVtZW50KEFsbG9jYXRvciogYWxsb2MsIFQqIGVsZW0p
IHsKKyAgICB1c2luZyBWYWx1ZUFsbG9jID0KKyAgICAgICAgdHlwZW5hbWUgYWJzbDo6YWxsb2Nh
dG9yX3RyYWl0czxBbGxvY2F0b3I+Ojp0ZW1wbGF0ZSByZWJpbmRfYWxsb2M8VD47CisgICAgVmFs
dWVBbGxvYyB2YWx1ZV9hbGxvYygqYWxsb2MpOworICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8
VmFsdWVBbGxvYz46OmRlc3Ryb3kodmFsdWVfYWxsb2MsIGVsZW0pOworICAgIGFic2w6OmFsbG9j
YXRvcl90cmFpdHM8VmFsdWVBbGxvYz46OmRlYWxsb2NhdGUodmFsdWVfYWxsb2MsIGVsZW0sIDEp
OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRpYyBk
ZWNsdHlwZShhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkRlY29tcG9zZVZhbHVlKAorICAgICAg
c3RkOjpkZWNsdmFsPEY+KCksIHN0ZDo6ZGVjbHZhbDxBcmdzPigpLi4uKSkKKyAgYXBwbHkoRiYm
IGYsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgcmV0dXJuIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5h
bDo6RGVjb21wb3NlVmFsdWUoCisgICAgICAgIHN0ZDo6Zm9yd2FyZDxGPihmKSwgc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIHN0YXRpYyBzaXplX3QgZWxlbWVudF9zcGFj
ZV91c2VkKGNvbnN0IFQqKSB7IHJldHVybiBzaXplb2YoVCk7IH0KK307Cit9ICAvLyBuYW1lc3Bh
Y2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBB
QlNMX0NPTlRBSU5FUl9OT0RFX0hBU0hfU0VUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvbm9kZV9oYXNoX3NldF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXRf
dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZTQ5OGYwZjc3OWI0ZDZlNzY0ZWNhZmNhNjJiMWNiMDhjY2Zk
NWFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXRfdGVz
dC5jYwpAQCAtMCwwICsxLDEwMyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXQuaCIKKworI2lu
Y2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3Jf
dGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRf
bG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVy
ZWRfc2V0X21vZGlmaWVyc190ZXN0LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBj
b250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKK3VzaW5nIDo6YWJzbDo6Y29udGFpbmVy
X2ludGVybmFsOjpoYXNoX2ludGVybmFsOjpFbnVtOwordXNpbmcgOjphYnNsOjpjb250YWluZXJf
aW50ZXJuYWw6Omhhc2hfaW50ZXJuYWw6OkVudW1DbGFzczsKK3VzaW5nIDo6dGVzdGluZzo6UG9p
bnRlZTsKK3VzaW5nIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmU7CisKK3VzaW5nIFNl
dFR5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczwKKyAgICBub2RlX2hhc2hfc2V0PGludCwgU3RhdGVm
dWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFsbG9jPGludD4+LAorICAgIG5v
ZGVfaGFzaF9zZXQ8c3RkOjpzdHJpbmcsIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRlZnVsVGVz
dGluZ0VxdWFsLAorICAgICAgICAgICAgICAgICAgQWxsb2M8aW50Pj4sCisgICAgbm9kZV9oYXNo
X3NldDxFbnVtLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwgQWxs
b2M8RW51bT4+LAorICAgIG5vZGVfaGFzaF9zZXQ8RW51bUNsYXNzLCBTdGF0ZWZ1bFRlc3RpbmdI
YXNoLCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAgICAgIEFsbG9jPEVudW1D
bGFzcz4+PjsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTm9kZUhhc2hTZXQsIENv
bnN0cnVjdG9yVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
Tm9kZUhhc2hTZXQsIExvb2t1cFRlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKE5vZGVIYXNoU2V0LCBNb2RpZmllcnNUZXN0LCBTZXRUeXBlcyk7CisKK1RFU1Qo
Tm9kZUhhc2hTZXQsIE1vdmVhYmxlTm90Q29weWFibGVDb21waWxlcykgeworICBub2RlX2hhc2hf
c2V0PHN0ZDo6dW5pcXVlX3B0cjx2b2lkKj4+IHQ7CisgIG5vZGVfaGFzaF9zZXQ8c3RkOjp1bmlx
dWVfcHRyPHZvaWQqPj4gdTsKKyAgdSA9IHN0ZDo6bW92ZSh0KTsKK30KKworVEVTVChOb2RlSGFz
aFNldCwgTWVyZ2VFeHRyYWN0SW5zZXJ0KSB7CisgIHN0cnVjdCBIYXNoIHsKKyAgICBzaXplX3Qg
b3BlcmF0b3IoKShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8aW50PiYgcCkgY29uc3QgeyByZXR1cm4g
KnA7IH0KKyAgfTsKKyAgc3RydWN0IEVxIHsKKyAgICBib29sIG9wZXJhdG9yKCkoY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPGludD4mIGEsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjxpbnQ+JiBiKSBjb25zdCB7CisgICAgICByZXR1cm4gKmEgPT0gKmI7CisgICAgfQor
ICB9OworICBhYnNsOjpub2RlX2hhc2hfc2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBIYXNoLCBF
cT4gc2V0MSwgc2V0MjsKKyAgc2V0MS5pbnNlcnQoYWJzbDo6bWFrZV91bmlxdWU8aW50Pig3KSk7
CisgIHNldDEuaW5zZXJ0KGFic2w6Om1ha2VfdW5pcXVlPGludD4oMTcpKTsKKworICBzZXQyLmlu
c2VydChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDcpKTsKKyAgc2V0Mi5pbnNlcnQoYWJzbDo6bWFr
ZV91bmlxdWU8aW50PigxOSkpOworCisgIEVYUEVDVF9USEFUKHNldDEsIFVub3JkZXJlZEVsZW1l
bnRzQXJlKFBvaW50ZWUoNyksIFBvaW50ZWUoMTcpKSk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVu
b3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoNyksIFBvaW50ZWUoMTkpKSk7CisKKyAgc2V0MS5t
ZXJnZShzZXQyKTsKKworICBFWFBFQ1RfVEhBVChzZXQxLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQ
b2ludGVlKDcpLCBQb2ludGVlKDE3KSwgUG9pbnRlZSgxOSkpKTsKKyAgRVhQRUNUX1RIQVQoc2V0
MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSkpOworCisgIGF1dG8gbm9kZSA9IHNl
dDEuZXh0cmFjdChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDcpKTsKKyAgRVhQRUNUX1RSVUUobm9k
ZSk7CisgIEVYUEVDVF9USEFUKG5vZGUudmFsdWUoKSwgUG9pbnRlZSg3KSk7CisgIEVYUEVDVF9U
SEFUKHNldDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoMTcpLCBQb2ludGVlKDE5KSkp
OworCisgIGF1dG8gaW5zZXJ0X3Jlc3VsdCA9IHNldDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7
CisgIEVYUEVDVF9GQUxTRShub2RlKTsKKyAgRVhQRUNUX0ZBTFNFKGluc2VydF9yZXN1bHQuaW5z
ZXJ0ZWQpOworICBFWFBFQ1RfVFJVRShpbnNlcnRfcmVzdWx0Lm5vZGUpOworICBFWFBFQ1RfVEhB
VChpbnNlcnRfcmVzdWx0Lm5vZGUudmFsdWUoKSwgUG9pbnRlZSg3KSk7CisgIEVYUEVDVF9FUSgq
Kmluc2VydF9yZXN1bHQucG9zaXRpb24sIDcpOworICBFWFBFQ1RfTkUoaW5zZXJ0X3Jlc3VsdC5w
b3NpdGlvbi0+Z2V0KCksIGluc2VydF9yZXN1bHQubm9kZS52YWx1ZSgpLmdldCgpKTsKKyAgRVhQ
RUNUX1RIQVQoc2V0MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSkpOworCisgIG5v
ZGUgPSBzZXQxLmV4dHJhY3QoYWJzbDo6bWFrZV91bmlxdWU8aW50PigxNykpOworICBFWFBFQ1Rf
VFJVRShub2RlKTsKKyAgRVhQRUNUX1RIQVQobm9kZS52YWx1ZSgpLCBQb2ludGVlKDE3KSk7Cisg
IEVYUEVDVF9USEFUKHNldDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoMTkpKSk7CisK
KyAgbm9kZS52YWx1ZSgpID0gYWJzbDo6bWFrZV91bmlxdWU8aW50PigyMyk7CisKKyAgaW5zZXJ0
X3Jlc3VsdCA9IHNldDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7CisgIEVYUEVDVF9GQUxTRShu
b2RlKTsKKyAgRVhQRUNUX1RSVUUoaW5zZXJ0X3Jlc3VsdC5pbnNlcnRlZCk7CisgIEVYUEVDVF9G
QUxTRShpbnNlcnRfcmVzdWx0Lm5vZGUpOworICBFWFBFQ1RfRVEoKippbnNlcnRfcmVzdWx0LnBv
c2l0aW9uLCAyMyk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBv
aW50ZWUoNyksIFBvaW50ZWUoMjMpKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFt
ZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvcHRzLmJ6bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzLmJ6bAppbmRleCAwMTY4YWM1YWJkZGMz
OWZmN2M0NzgxZmY1ZTNlMmU5YmUwYTIwNTdlLi41YzUwOGYxN2RmOTc0NzYxOGNhNTJjNWU0Yjkz
M2Y4MThlZTliOWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy5iemwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29w
dHMuYnpsCkBAIC0zNSw3ICszNSw2IEBAIEdDQ19URVNUX0ZMQUdTID0gWwogIyBEb2NzIG9uIGdy
b3VwcyBvZiBmbGFncyBpcyBwcmVjZWRlZCBieSAjIyMuCiAKIExMVk1fRkxBR1MgPSBbCi0gICAg
IyBBbGwgd2FybmluZ3MgYXJlIHRyZWF0ZWQgYXMgZXJyb3JzIGJ5IGltcGxpY2l0IC1XZXJyb3Ig
ZmxhZwogICAgICItV2FsbCIsCiAgICAgIi1XZXh0cmEiLAogICAgICItV2V2ZXJ5dGhpbmciLApA
QCAtNTQsNiArNTMsMTAgQEAgTExWTV9GTEFHUyA9IFsKICAgICAiLVduby1wYWNrZWQiLAogICAg
ICItV25vLXBhZGRlZCIsCiAgICAgIyMjCisgICAgIyBHb29nbGUgc3R5bGUgZG9lcyBub3QgdXNl
IHVuc2lnbmVkIGludGVnZXJzLCB0aG91Z2ggU1RMIGNvbnRhaW5lcnMKKyAgICAjIGhhdmUgdW5z
aWduZWQgdHlwZXMuCisgICAgIi1Xbm8tc2lnbi1jb21wYXJlIiwKKyAgICAjIyMKICAgICAiLVdu
by1mbG9hdC1jb252ZXJzaW9uIiwKICAgICAiLVduby1mbG9hdC1lcXVhbCIsCiAgICAgIi1Xbm8t
Zm9ybWF0LW5vbmxpdGVyYWwiLApAQCAtMTAxLDYgKzEwNCw3IEBAIExMVk1fVEVTVF9GTEFHUyA9
IFsKICAgICAiLVduby1jOTktZXh0ZW5zaW9ucyIsCiAgICAgIi1Xbm8tbWlzc2luZy1ub3JldHVy
biIsCiAgICAgIi1Xbm8tbWlzc2luZy1wcm90b3R5cGVzIiwKKyAgICAiLVduby1taXNzaW5nLXZh
cmlhYmxlLWRlY2xhcmF0aW9ucyIsCiAgICAgIi1Xbm8tbnVsbC1jb252ZXJzaW9uIiwKICAgICAi
LVduby1zaGFkb3ciLAogICAgICItV25vLXNoaWZ0LXNpZ24tb3ZlcmZsb3ciLApAQCAtMTEyLDEz
ICsxMTYsMTUgQEAgTExWTV9URVNUX0ZMQUdTID0gWwogICAgICItV25vLXVudXNlZC10ZW1wbGF0
ZSIsCiAgICAgIi1Xbm8tdXNlZC1idXQtbWFya2VkLXVudXNlZCIsCiAgICAgIi1Xbm8temVyby1h
cy1udWxsLXBvaW50ZXItY29uc3RhbnQiLAorICAgICMgZ3Rlc3QgZGVwZW5kcyBvbiB0aGlzIEdO
VSBleHRlbnNpb24gYmVpbmcgb2ZmZXJlZC4KKyAgICAiLVduby1nbnUtemVyby12YXJpYWRpYy1t
YWNyby1hcmd1bWVudHMiLAogXQogCiBNU1ZDX0ZMQUdTID0gWwogICAgICIvVzMiLAotICAgICIv
V1giLAogICAgICIvd2Q0MDA1IiwgICMgbWFjcm8tcmVkZWZpbml0aW9uCiAgICAgIi93ZDQwNjgi
LCAgIyB1bmtub3duIHByYWdtYQorICAgICIvd2Q0MTgwIiwgICMgcXVhbGlmaWVyIGFwcGxpZWQg
dG8gZnVuY3Rpb24gdHlwZSBoYXMgbm8gbWVhbmluZzsgaWdub3JlZAogICAgICIvd2Q0MjQ0Iiwg
ICMgY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9zc2libGUgbG9zcyBvZiBk
YXRhCiAgICAgIi93ZDQyNjciLCAgIyBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUn
LCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKICAgICAiL3dkNDgwMCIsICAjIGZvcmNpbmcgdmFsdWUg
dG8gYm9vbCAndHJ1ZScgb3IgJ2ZhbHNlJyAocGVyZm9ybWFuY2Ugd2FybmluZykKQEAgLTE1Miwz
ICsxNTgsNyBAQCBBQlNMX0VYQ0VQVElPTlNfRkxBRyA9IHNlbGVjdCh7CiAgICAgIi8vYWJzbDp3
aW5kb3dzIjogWyIvVV9IQVNfRVhDRVBUSU9OUyIsICIvRF9IQVNfRVhDRVBUSU9OUz0xIiwgIi9F
SHNjIl0sCiAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItZmV4Y2VwdGlvbnMiXSwKIH0p
CisKK0FCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTID0gc2VsZWN0KHsKKyAgICAiLy9jb25k
aXRpb25zOmRlZmF1bHQiOiBbXSwKK30pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQlVJTEQuZ24KaW5kZXggYjUwYjBhNmRkYzgzMjE5Njhl
YjFmYTE3NjMyMWJjOGUxZjk3NDI1NC4uZDM1ODJkNmE0MjZmNzc1NzE2ZWIxMTc2MmQ1N2ExOTkx
YjA0Y2IzMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL0JVSUxELmduCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9CVUlMRC5nbgpAQCAtOTIsMTAgKzkyLDEwIEBAIHNvdXJjZV9zZXQoImZhaWx1
cmVfc2lnbmFsX2hhbmRsZXIiKSB7CiAgIF0KICAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQogICBzb3VyY2VzID0gWwot
ICAgICJmYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmNjIgorICAgICJmYWlsdXJlX3NpZ25hbF9oYW5k
bGVyLmNjIiwKICAgXQogICBwdWJsaWMgPSBbCi0gICAgImZhaWx1cmVfc2lnbmFsX2hhbmRsZXIu
aCIKKyAgICAiZmFpbHVyZV9zaWduYWxfaGFuZGxlci5oIiwKICAgXQogICBkZXBzID0gWwogICAg
ICI6ZXhhbWluZV9zdGFjayIsCkBAIC0xMjYsNiArMTI2LDcgQEAgc291cmNlX3NldCgiZGVidWdn
aW5nX2ludGVybmFsIikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uL2Jhc2UiLAorICAgICIu
Li9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgIi4uL2Jhc2U6ZHluYW1pY19hbm5vdGF0aW9ucyIs
CiAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5jYwppbmRleCBjOWNhMmYzYmRi
MTcwZTc3ZDI4ZGVjMTU3OTViYTU4ODI5ZmI4NjhhLi40ODM1NDQ1OWJjODVmODZkZmEwZDMxOWU5
NzQxMTg4YjNlOWQ2NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZGVt
YW5nbGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlLmNjCkBAIC0z
NDAsNyArMzQwLDcgQEAgc3RhdGljIGJvb2wgWmVyb09yTW9yZShQYXJzZUZ1bmMgcGFyc2VfZnVu
YywgU3RhdGUgKnN0YXRlKSB7CiB9CiAKIC8vIEFwcGVuZCAic3RyIiBhdCAib3V0X2N1cl9pZHgi
LiAgSWYgdGhlcmUgaXMgYW4gb3ZlcmZsb3csIG91dF9jdXJfaWR4IGlzCi0vLyBzZXQgdG8gb3V0
X2VuZF9pZHgrMS4gIFRoZSBvdXRwdXQgc3RkOjpzdHJpbmcgaXMgZW5zdXJlZCB0bworLy8gc2V0
IHRvIG91dF9lbmRfaWR4KzEuICBUaGUgb3V0cHV0IHN0cmluZyBpcyBlbnN1cmVkIHRvCiAvLyBh
bHdheXMgdGVybWluYXRlIHdpdGggJ1wwJyBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIG92ZXJmbG93
Lgogc3RhdGljIHZvaWQgQXBwZW5kKFN0YXRlICpzdGF0ZSwgY29uc3QgY2hhciAqY29uc3Qgc3Ry
LCBjb25zdCBpbnQgbGVuZ3RoKSB7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKQEAgLTg0MCw3ICs4NDAsNyBAQCBzdGF0aWMgYm9vbCBQYXJzZU51bWJlcihTdGF0ZSAqc3Rh
dGUsIGludCAqbnVtYmVyX291dCkgewogfQogCiAvLyBGbG9hdGluZy1wb2ludCBsaXRlcmFscyBh
cmUgZW5jb2RlZCB1c2luZyBhIGZpeGVkLWxlbmd0aCBsb3dlcmNhc2UKLS8vIGhleGFkZWNpbWFs
IHN0ZDo6c3RyaW5nLgorLy8gaGV4YWRlY2ltYWwgc3RyaW5nLgogc3RhdGljIGJvb2wgUGFyc2VG
bG9hdE51bWJlcihTdGF0ZSAqc3RhdGUpIHsKICAgQ29tcGxleGl0eUd1YXJkIGd1YXJkKHN0YXRl
KTsKICAgaWYgKGd1YXJkLklzVG9vQ29tcGxleCgpKSByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zdGFja3Ry
YWNlLmNjCmluZGV4IDYxZmVlNjE5MGY1NDU4NDJhZGMzNjJjOGZjZmNlYzVjMGU3NTY1OGEuLjQ2
M2ZhZDI2OWMxNmFmYmEzZTM4M2VlZDEyOTA2YzU0ODg0OWYzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9zdGFja3RyYWNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zdGFja3RyYWNl
LmNjCkBAIC04MCwxMSArODAsMTMgQEAgQUJTTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBpbmxp
bmUgaW50IFVud2luZCh2b2lkKiogcmVzdWx0LCBpbnQqIHNpemVzLAogCiB9ICAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCiAKK0FCU0xfQVRUUklCVVRFX05PSU5MSU5FCiBpbnQgR2V0U3RhY2tGcmFt
ZXModm9pZCoqIHJlc3VsdCwgaW50KiBzaXplcywgaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291
bnQpIHsKICAgcmV0dXJuIFVud2luZDx0cnVlLCBmYWxzZT4ocmVzdWx0LCBzaXplcywgbWF4X2Rl
cHRoLCBza2lwX2NvdW50LCBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKIH0KIAorQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUKIGludCBHZXRTdGFja0ZyYW1l
c1dpdGhDb250ZXh0KHZvaWQqKiByZXN1bHQsIGludCogc2l6ZXMsIGludCBtYXhfZGVwdGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2tpcF9jb3VudCwgY29uc3Qgdm9pZCog
dWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1pbl9kcm9wcGVkX2ZyYW1l
cykgewpAQCAtOTIsMTEgKzk0LDEzIEBAIGludCBHZXRTdGFja0ZyYW1lc1dpdGhDb250ZXh0KHZv
aWQqKiByZXN1bHQsIGludCogc2l6ZXMsIGludCBtYXhfZGVwdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWluX2Ryb3BwZWRfZnJhbWVzKTsKIH0KIAorQUJTTF9BVFRSSUJVVEVfTk9J
TkxJTkUKIGludCBHZXRTdGFja1RyYWNlKHZvaWQqKiByZXN1bHQsIGludCBtYXhfZGVwdGgsIGlu
dCBza2lwX2NvdW50KSB7CiAgIHJldHVybiBVbndpbmQ8ZmFsc2UsIGZhbHNlPihyZXN1bHQsIG51
bGxwdHIsIG1heF9kZXB0aCwgc2tpcF9jb3VudCwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOwogfQogCitBQlNMX0FUVFJJQlVURV9OT0lOTElORQogaW50
IEdldFN0YWNrVHJhY2VXaXRoQ29udGV4dCh2b2lkKiogcmVzdWx0LCBpbnQgbWF4X2RlcHRoLCBp
bnQgc2tpcF9jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCog
dWMsIGludCogbWluX2Ryb3BwZWRfZnJhbWVzKSB7CiAgIHJldHVybiBVbndpbmQ8ZmFsc2UsIHRy
dWU+KHJlc3VsdCwgbnVsbHB0ciwgbWF4X2RlcHRoLCBza2lwX2NvdW50LCB1YywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9z
eW1ib2xpemVfdGVzdC5jYwppbmRleCA1ZjJhZjQ3ZWU0NWQ2NTRiNDIyZDBlODY0ZmJmMDYwY2I1
YzUxMDc1Li44MDI5ZmJlOWQyZTZmYjcyMDgxNmVmMDQzNWUwNzA5OWNjMzg3MjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdn
aW5nL3N5bWJvbGl6ZV90ZXN0LmNjCkBAIC0zMjEsNyArMzIxLDcgQEAgVEVTVChTeW1ib2xpemUs
IFN5bWJvbGl6ZVdpdGhNdWx0aXBsZU1hcHMpIHsKICAgfQogfQogCi0vLyBBcHBlbmRzIHN0ZDo6
c3RyaW5nKCphcmdzLT5hcmcpIHRvIGFyZ3MtPnN5bWJvbF9idWYuCisvLyBBcHBlbmRzIHN0cmlu
ZygqYXJncy0+YXJnKSB0byBhcmdzLT5zeW1ib2xfYnVmLgogc3RhdGljIHZvaWQgRHVtbXlTeW1i
b2xEZWNvcmF0b3IoCiAgICAgY29uc3QgYWJzbDo6ZGVidWdnaW5nX2ludGVybmFsOjpTeW1ib2xE
ZWNvcmF0b3JBcmdzICphcmdzKSB7CiAgIHN0ZDo6c3RyaW5nICptZXNzYWdlID0gc3RhdGljX2Nh
c3Q8c3RkOjpzdHJpbmcgKj4oYXJncy0+YXJnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQlVJ
TEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxELmJhemVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwYWE1NTA2YzEx
Yzg3ZWQwYjRhMDY0MmI5NTBiYTE2MGY4YTJmNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9o
YXNoL0JVSUxELmJhemVsCkBAIC0wLDAgKzEsMTE0IEBACisjCisjIENvcHlyaWdodCAyMDE4IFRo
ZSBBYnNlaWwgQXV0aG9ycy4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMg
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisjCisKK2xvYWQoCisgICAgIi8vYWJzbDpjb3B0cy5iemwiLAorICAgICJBQlNMX0RF
RkFVTFRfQ09QVFMiLAorICAgICJBQlNMX1RFU1RfQ09QVFMiLAorKQorCitwYWNrYWdlKGRlZmF1
bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdKQorCitsaWNlbnNlcyhbIm5v
dGljZSJdKSAgIyBBcGFjaGUgMi4wCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJoYXNoIiwK
KyAgICBzcmNzID0gWworICAgICAgICAiaW50ZXJuYWwvaGFzaC5jYyIsCisgICAgICAgICJpbnRl
cm5hbC9oYXNoLmgiLAorICAgIF0sCisgICAgaGRycyA9IFsiaGFzaC5oIl0sCisgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpjaXR5IiwKKyAg
ICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpl
bmRpYW4iLAorICAgICAgICAiLy9hYnNsL2NvbnRhaW5lcjpmaXhlZF9hcnJheSIsCisgICAgICAg
ICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wvbnVtZXJpYzppbnQx
MjgiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOm9w
dGlvbmFsIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczp2YXJpYW50IiwKKyAgICAgICAgIi8vYWJz
bC91dGlsaXR5IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFzaF90
ZXN0aW5nIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgaGRycyA9IFsiaGFzaF90ZXN0aW5nLmgi
XSwKKyAgICBkZXBzID0gWworICAgICAgICAiOnNweV9oYXNoX3N0YXRlIiwKKyAgICAgICAgIi8v
YWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAg
ICAgIi8vYWJzbC90eXBlczp2YXJpYW50IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRl
c3QvLzpndGVzdCIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImhhc2hfdGVz
dCIsCisgICAgc3JjcyA9IFsiaGFzaF90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1Rf
Q09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpoYXNoIiwKKyAgICAgICAgIjpoYXNoX3Rl
c3RpbmciLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8v
YWJzbC9jb250YWluZXI6ZmxhdF9oYXNoX3NldCIsCisgICAgICAgICIvL2Fic2wvaGFzaDpzcHlf
aGFzaF9zdGF0ZSIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAg
ICIvL2Fic2wvbnVtZXJpYzppbnQxMjgiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVz
dC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJz
cHlfaGFzaF9zdGF0ZSIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBbImludGVybmFs
L3NweV9oYXNoX3N0YXRlLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAg
ICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAorICAgIGRlcHMgPSBbCisg
ICAgICAgICI6aGFzaCIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fi
c2wvc3RyaW5nczpzdHJfZm9ybWF0IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5h
bWUgPSAiY2l0eSIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvY2l0eS5jYyJdLAorICAgIGhkcnMg
PSBbCisgICAgICAgICJpbnRlcm5hbC9jaXR5LmgiLAorICAgICAgICAiaW50ZXJuYWwvY2l0eV9j
cmMuaCIsCisgICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBz
ID0gWworICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKKyAgICAgICAgIi8vYWJzbC9iYXNl
OmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvYmFzZTplbmRpYW4iLAorICAgIF0sCisp
CisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJjaXR5X3Rlc3QiLAorICAgIHNyY3MgPSBbImludGVy
bmFsL2NpdHlfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRl
cHMgPSBbCisgICAgICAgICI6Y2l0eSIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0
Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQlVJTEQu
Z24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9oYXNoL0JVSUxELmduCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYjZiM2EyMmIzNzEzMmJiNmVm
OTJhYmNjZmJhMWY2NjljZmU0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxE
LmduCkBAIC0wLDAgKzEsMTA0IEBACisjIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKK2ltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pIikK
KworaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKKyAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy90
aGlyZF9wYXJ0eS93ZWJydGMvKiIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwK
KyAgICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKKyAgXQorfSBlbHNlIHsKKyAg
dmlzaWJpbGl0eSA9IFsgIioiIF0KK30KKworc291cmNlX3NldCgiaGFzaCIpIHsKKyAgY29uZmln
cyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZp
Z3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwK
KyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAor
ICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
aW5jbHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaC5jYyIs
CisgICAgImludGVybmFsL2hhc2guaCIsCisgIF0KKyAgcHVibGljID0gWworICAgICJoYXNoLmgi
LAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjaXR5IiwKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRl
cnMiLAorICAgICIuLi9iYXNlOmVuZGlhbiIsCisgICAgIi4uL2NvbnRhaW5lcjpmaXhlZF9hcnJh
eSIsCisgICAgIi4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi9udW1lcmljOmludDEyOCIs
CisgICAgIi4uL3N0cmluZ3MiLAorICAgICIuLi90eXBlczpvcHRpb25hbCIsCisgICAgIi4uL3R5
cGVzOnZhcmlhbnQiLAorICAgICIuLi91dGlsaXR5IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJo
YXNoX3Rlc3RpbmciKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVp
bGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGlj
X2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZp
ZyIgXQorICBwdWJsaWMgPSBbCisgICAgImhhc2hfdGVzdGluZy5oIiwKKyAgXQorICBkZXBzID0g
WworICAgICI6c3B5X2hhc2hfc3RhdGUiLAorICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKKyAg
ICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3R5cGVzOnZhcmlhbnQiLAorICAgICIvL3Rlc3Rpbmcv
Z3Rlc3QiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInNweV9oYXNoX3N0YXRlIikgeworICB0ZXN0
b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJv
bWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
ZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAg
ICJpbnRlcm5hbC9zcHlfaGFzaF9zdGF0ZS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6aGFz
aCIsCisgICAgIi4uL3N0cmluZ3MiLAorICAgICIuLi9zdHJpbmdzOnN0cl9mb3JtYXQiLAorICBd
CisgIHZpc2liaWxpdHkgPSBbXQorICB2aXNpYmlsaXR5ICs9IFsgIi4uLyoiIF0KK30KKworc291
cmNlX3NldCgiY2l0eSIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0g
WworICAgICJpbnRlcm5hbC9jaXR5LmgiLAorICAgICJpbnRlcm5hbC9jaXR5X2NyYy5oIiwKKyAg
XQorICBzb3VyY2VzID0gWworICAgICJpbnRlcm5hbC9jaXR5LmNjIiwKKyAgXQorICBkZXBzID0g
WworICAgICIuLi9iYXNlOmNvbmZpZyIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAg
ICAiLi4vYmFzZTplbmRpYW4iLAorICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTA4MWUz
Nzc0ZjhmMzIyYTlkNzVkYTk0OGVmMjdhMjIxM2QyMjdlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvaGFzaC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDgwIEBACisjCisjIENvcHlyaWdodCAy
MDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisjCisKK2xpc3QoQVBQRU5EIEhBU0hfUFVCTElDX0hFQURFUlMKKyAgImhh
c2guaCIKKykKKworbGlzdChBUFBFTkQgSEFTSF9JTlRFUk5BTF9IRUFERVJTCisgICJpbnRlcm5h
bC9jaXR5LmgiCisgICJpbnRlcm5hbC9jaXR5X2NyYy5oIgorICAiaW50ZXJuYWwvaGFzaC5oIgor
KQorCisjIGFic2xfaGFzaCBsaWJyYXJ5CitsaXN0KEFQUEVORCBIQVNIX1NSQworICAiaW50ZXJu
YWwvY2l0eS5jYyIKKyAgImludGVybmFsL2hhc2guY2MiCisgICR7SEFTSF9QVUJMSUNfSEVBREVS
U30KKyAgJHtIQVNIX0lOVEVSTkFMX0hFQURFUlN9CispCisKK3NldChIQVNIX1BVQkxJQ19MSUJS
QVJJRVMgYWJzbDo6aGFzaCBhYnNsOjpjb250YWluZXIgYWJzbDo6c3RyaW5ncyBhYnNsOjpzdHJf
Zm9ybWF0IGFic2w6OnV0aWxpdHkpCisKK2Fic2xfbGlicmFyeSgKKyAgVEFSR0VUCisgICAgYWJz
bF9oYXNoCisgIFNPVVJDRVMKKyAgICAke0hBU0hfU1JDfQorICBQVUJMSUNfTElCUkFSSUVTCisg
ICAgJHtIQVNIX1BVQkxJQ19MSUJSQVJJRVN9CisgIEVYUE9SVF9OQU1FCisgICAgaGFzaAorKQor
CisjCisjIyBURVNUUworIworCisjIHRlc3Rpbmcgc3VwcG9ydAorc2V0KEhBU0hfVEVTVF9IRUFE
RVJTIGhhc2hfdGVzdGluZy5oIGludGVybmFsL3NweV9oYXNoX3N0YXRlLmgpCitzZXQoSEFTSF9U
RVNUX1BVQkxJQ19MSUJSQVJJRVMgYWJzbDo6aGFzaCBhYnNsOjpjb250YWluZXIgYWJzbDo6bnVt
ZXJpYyBhYnNsOjpzdHJpbmdzIGFic2w6OnN0cl9mb3JtYXQpCisKKyMgaGFzaF90ZXN0CitzZXQo
SEFTSF9URVNUX1NSQyAiaGFzaF90ZXN0LmNjIiAke0hBU0hfVEVTVF9IRUFERVJTfSkKKworYWJz
bF90ZXN0KAorICBUQVJHRVQKKyAgICBoYXNoX3Rlc3QKKyAgU09VUkNFUworICAgICR7SEFTSF9U
RVNUX1NSQ30KKyAgUFVCTElDX0xJQlJBUklFUworICAgICR7SEFTSF9URVNUX1BVQkxJQ19MSUJS
QVJJRVN9CispCisKKyMgaGFzaF90ZXN0CitzZXQoQ0lUWV9URVNUX1NSQyAiaW50ZXJuYWwvY2l0
eV90ZXN0LmNjIikKKworYWJzbF90ZXN0KAorICBUQVJHRVQKKyAgICBjaXR5X3Rlc3QKKyAgU09V
UkNFUworICAgICR7Q0lUWV9URVNUX1NSQ30KKyAgUFVCTElDX0xJQlJBUklFUworICAgICR7SEFT
SF9URVNUX1BVQkxJQ19MSUJSQVJJRVN9CispCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9o
YXNoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9oYXNoL2hhc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2JhNGMyYjdhNWMxOThmNzRj
ZTI3MzkxMGJhYzg4MWM0NTU5Zjg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNo
LmgKQEAgLTAsMCArMSwzMTIgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IGhhc2guaAorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIEFi
c2VpbCBgaGFzaGAgbGlicmFyeSBhbmQgdGhlIEFic2VpbCBoYXNoaW5nCisvLyBmcmFtZXdvcmsu
IFRoaXMgZnJhbWV3b3JrIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmc6CisvLworLy8gICAqIFRo
ZSBgYWJzbDo6SGFzaGAgZnVuY3Rvciwgd2hpY2ggaXMgdXNlZCB0byBpbnZva2UgdGhlIGhhc2hl
ciB3aXRoaW4gdGhlCisvLyAgICAgQWJzZWlsIGhhc2hpbmcgZnJhbWV3b3JrLiBgYWJzbDo6SGFz
aDxUPmAgc3VwcG9ydHMgbW9zdCBiYXNpYyB0eXBlcyBhbmQKKy8vICAgICBhIG51bWJlciBvZiBB
YnNlaWwgdHlwZXMgb3V0IG9mIHRoZSBib3guCisvLyAgICogYEFic2xIYXNoVmFsdWVgLCBhbiBl
eHRlbnNpb24gcG9pbnQgdGhhdCBhbGxvd3MgeW91IHRvIGV4dGVuZCB0eXBlcyB0bworLy8gICAg
IHN1cHBvcnQgQWJzZWlsIGhhc2hpbmcgd2l0aG91dCByZXF1aXJpbmcgeW91IHRvIGRlZmluZSBh
IGhhc2hpbmcKKy8vICAgICBhbGdvcml0aG0uCisvLyAgICogYEhhc2hTdGF0ZWAsIGEgdHlwZS1l
cmFzZWQgY2xhc3Mgd2hpY2ggaW1wbGVtZW50IHRoZSBtYW5pcHVsYXRpb24gb2YgdGhlCisvLyAg
ICAgaGFzaCBzdGF0ZSAoSCkgaXRzZWxmLiBjb250YWluaW5nIG1lbWJlciBmdW5jdGlvbnMgYGNv
bWJpbmUoKWAgYW5kCisvLyAgICAgYGNvbWJpbmVfY29udGlndW91cygpYCwgd2hpY2ggeW91IGNh
biB1c2UgdG8gY29udHJpYnV0ZSB0byBhbiBleGlzdGluZworLy8gICAgIGhhc2ggc3RhdGUgd2hl
biBoYXNoaW5nIHlvdXIgdHlwZXMuCisvLworLy8gVW5saWtlIGBzdGQ6Omhhc2hgIG9yIG90aGVy
IGhhc2hpbmcgZnJhbWV3b3JrcywgdGhlIEFic2VpbCBoYXNoaW5nIGZyYW1ld29yaworLy8gcHJv
dmlkZXMgbW9zdCBvZiBpdHMgdXRpbGl0eSBieSBhYnN0cmFjdGluZyBhd2F5IHRoZSBoYXNoIGFs
Z29yaXRobSAoYW5kIGl0cworLy8gaW1wbGVtZW50YXRpb24pIGVudGlyZWx5LiBJbnN0ZWFkLCBh
IHR5cGUgaW52b2tlcyB0aGUgQWJzZWlsIGhhc2hpbmcKKy8vIGZyYW1ld29yayBieSBzaW1wbHkg
Y29tYmluaW5nIGl0cyBzdGF0ZSB3aXRoIHRoZSBzdGF0ZSBvZiBrbm93biwgaGFzaGFibGUKKy8v
IHR5cGVzLiBIYXNoaW5nIG9mIHRoYXQgY29tYmluZWQgc3RhdGUgaXMgc2VwYXJhdGVseSBkb25l
IGJ5IGBhYnNsOjpIYXNoYC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8gU3VwcG9zZSB3
ZSBoYXZlIGEgY2xhc3MgYENpcmNsZWAgZm9yIHdoaWNoIHdlIHdhbnQgdG8gYWRkIGhhc2hpbmcK
Ky8vICAgY2xhc3MgQ2lyY2xlIHsKKy8vICAgICBwdWJsaWM6CisvLyAgICAgICAuLi4KKy8vICAg
ICBwcml2YXRlOgorLy8gICAgICAgc3RkOjpwYWlyPGludCwgaW50PiBjZW50ZXJfOworLy8gICAg
ICAgaW50IHJhZGl1c187CisvLyAgICAgfTsKKy8vCisvLyAgIC8vIFRvIGFkZCBoYXNoaW5nIHN1
cHBvcnQgdG8gYENpcmNsZWAsIHdlIHNpbXBseSBuZWVkIHRvIGFkZCBhbiBvcmRpbmFyeQorLy8g
ICAvLyBmdW5jdGlvbiBgQWJzbEhhc2hWYWx1ZSgpYCwgYW5kIHJldHVybiB0aGUgY29tYmluZWQg
aGFzaCBzdGF0ZSBvZiB0aGUKKy8vICAgLy8gZXhpc3RpbmcgaGFzaCBzdGF0ZSBhbmQgdGhlIGNs
YXNzIHN0YXRlOgorLy8KKy8vICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKy8vICAgICBmcmll
bmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgY29uc3QgQ2lyY2xlJiBjKSB7CisvLyAgICAgICByZXR1
cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIGMuY2VudGVyXywgYy5yYWRpdXNfKTsKKy8vICAg
ICB9CisvLworLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBBZGRpbmcgVHlwZSBTdXBwb3J0
IHRvIGBhYnNsOjpIYXNoYCBiZWxvdy4KKy8vCisjaWZuZGVmIEFCU0xfSEFTSF9IQVNIX0hfCisj
ZGVmaW5lIEFCU0xfSEFTSF9IQVNIX0hfCisKKyNpbmNsdWRlICJhYnNsL2hhc2gvaW50ZXJuYWwv
aGFzaC5oIgorCituYW1lc3BhY2UgYWJzbCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LyBgYWJzbDo6SGFzaGAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gYGFic2w6Okhh
c2g8VD5gIGlzIGEgY29udmVuaWVudCBnZW5lcmFsLXB1cnBvc2UgaGFzaCBmdW5jdG9yIGZvciBh
IHR5cGUgYFRgCisvLyBzYXRpc2Z5aW5nIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
KGluIG9yZGVyKToKKy8vCisvLyAgKiBUIGlzIGFuIGFyaXRobWV0aWMgb3IgcG9pbnRlciB0eXBl
CisvLyAgKiBUIGRlZmluZXMgYW4gb3ZlcmxvYWQgZm9yIGBBYnNsSGFzaFZhbHVlKEgsIGNvbnN0
IFQmKWAgZm9yIGFuIGFyYml0cmFyeQorLy8gICAgaGFzaCBzdGF0ZSBgSGAuCisvLyAgLSBUIGRl
ZmluZXMgYSBzcGVjaWFsaXphdGlvbiBvZiBgSEFTSF9OQU1FU1BBQ0U6Omhhc2g8VD5gCisvLyAg
LSBUIGRlZmluZXMgYSBzcGVjaWFsaXphdGlvbiBvZiBgc3RkOjpoYXNoPFQ+YAorLy8KKy8vIGBh
YnNsOjpIYXNoYCBpbnRyaW5zaWNhbGx5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgdHlwZXM6Cisv
LworLy8gICAqIEFsbCBpbnRlZ3JhbCB0eXBlcyAoaW5jbHVkaW5nIGJvb2wpCisvLyAgICogQWxs
IGVudW0gdHlwZXMKKy8vICAgKiBBbGwgZmxvYXRpbmctcG9pbnQgdHlwZXMgKGFsdGhvdWdoIGhh
c2hpbmcgdGhlbSBpcyBkaXNjb3VyYWdlZCkKKy8vICAgKiBBbGwgcG9pbnRlciB0eXBlcywgaW5j
bHVkaW5nIG51bGxwdHJfdAorLy8gICAqIHN0ZDo6cGFpcjxUMSwgVDI+LCBpZiBUMSBhbmQgVDIg
YXJlIGhhc2hhYmxlCisvLyAgICogc3RkOjp0dXBsZTxUcy4uLj4sIGlmIGFsbCB0aGUgVHMuLi4g
YXJlIGhhc2hhYmxlCisvLyAgICogc3RkOjp1bmlxdWVfcHRyIGFuZCBzdGQ6OnNoYXJlZF9wdHIK
Ky8vICAgKiBBbGwgc3RyaW5nLWxpa2UgdHlwZXMgaW5jbHVkaW5nOgorLy8gICAgICogc3RkOjpz
dHJpbmcKKy8vICAgICAqIHN0ZDo6c3RyaW5nX3ZpZXcgKGFzIHdlbGwgYXMgYW55IGluc3RhbmNl
IG9mIHN0ZDo6YmFzaWNfc3RyaW5nIHRoYXQKKy8vICAgICAgIHVzZXMgY2hhciBhbmQgc3RkOjpj
aGFyX3RyYWl0cykKKy8vICAqIEFsbCB0aGUgc3RhbmRhcmQgc2VxdWVuY2UgY29udGFpbmVycyAo
cHJvdmlkZWQgdGhlIGVsZW1lbnRzIGFyZSBoYXNoYWJsZSkKKy8vICAqIEFsbCB0aGUgc3RhbmRh
cmQgb3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXJzIChwcm92aWRlZCB0aGUgZWxlbWVudHMg
YXJlCisvLyAgICBoYXNoYWJsZSkKKy8vICAqIGFic2wgdHlwZXMgc3VjaCBhcyB0aGUgZm9sbG93
aW5nOgorLy8gICAgKiBhYnNsOjpzdHJpbmdfdmlldworLy8gICAgKiBhYnNsOjpJbmxpbmVkVmVj
dG9yCisvLyAgICAqIGFic2w6OkZpeGVkQXJyYXkKKy8vICAgICogYWJzbDo6dW5pdDEyOAorLy8g
ICAgKiBhYnNsOjpUaW1lLCBhYnNsOjpEdXJhdGlvbiwgYW5kIGFic2w6OlRpbWVab25lCisvLwor
Ly8gTm90ZTogdGhlIGxpc3QgYWJvdmUgaXMgbm90IG1lYW50IHRvIGJlIGV4aGF1c3RpdmUuIEFk
ZGl0aW9uYWwgdHlwZSBzdXBwb3J0CisvLyBtYXkgYmUgYWRkZWQsIGluIHdoaWNoIGNhc2UgdGhl
IGFib3ZlIGxpc3Qgd2lsbCBiZSB1cGRhdGVkLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyBhYnNsOjpIYXNoIEludm9jYXRpb24gRXZhbHVhdGlvbgorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBXaGVuIGludm9rZWQsIGBhYnNsOjpIYXNoPFQ+YCBzZWFyY2hlcyBmb3Ig
c3VwcGxpZWQgaGFzaCBmdW5jdGlvbnMgaW4gdGhlCisvLyBmb2xsb3dpbmcgb3JkZXI6CisvLwor
Ly8gICAqIE5hdGl2ZWx5IHN1cHBvcnRlZCB0eXBlcyBvdXQgb2YgdGhlIGJveCAoc2VlIGFib3Zl
KQorLy8gICAqIFR5cGVzIGZvciB3aGljaCBhbiBgQWJzbEhhc2hWYWx1ZSgpYCBvdmVybG9hZCBp
cyBwcm92aWRlZCAoc3VjaCBhcworLy8gICAgIHVzZXItZGVmaW5lZCB0eXBlcykuIFNlZSAiQWRk
aW5nIFR5cGUgU3VwcG9ydCB0byBgYWJzbDo6SGFzaGAiIGJlbG93LgorLy8gICAqIFR5cGVzIHdo
aWNoIGRlZmluZSBhIGBIQVNIX05BTUVTUEFDRTo6aGFzaDxUPmAgc3BlY2lhbGl6YXRpb24gKGFr
YQorLy8gICAgIGBfX2dudV9jeHg6Omhhc2g8VD5gIGZvciBnY2MvQ2xhbmcgb3IgYHN0ZGV4dDo6
aGFzaDxUPmAgZm9yIE1TVkMpCisvLyAgICogVHlwZXMgd2hpY2ggZGVmaW5lIGEgYHN0ZDo6aGFz
aDxUPmAgc3BlY2lhbGl6YXRpb24KKy8vCisvLyBUaGUgZmFsbGJhY2sgdG8gbGVnYWN5IGhhc2gg
ZnVuY3Rpb25zIGV4aXN0cyBtYWlubHkgZm9yIGJhY2t3YXJkcworLy8gY29tcGF0aWJpbGl0eS4g
SWYgeW91IGhhdmUgYSBjaG9pY2UsIHByZWZlciBkZWZpbmluZyBhbiBgQWJzbEhhc2hWYWx1ZWAK
Ky8vIG92ZXJsb2FkIGluc3RlYWQgb2Ygc3BlY2lhbGl6aW5nIGFueSBsZWdhY3kgaGFzaCBmdW5j
dG9ycy4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gVGhlIEhhc2ggU3RhdGUgQ29u
Y2VwdCwgYW5kIHVzaW5nIGBIYXNoU3RhdGVgIGZvciBUeXBlIEVyYXN1cmUKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gVGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdvcmsgcmVsaWVzIG9u
IHRoZSBDb25jZXB0IG9mIGEgImhhc2ggc3RhdGUuIiBTdWNoIGEKKy8vIGhhc2ggc3RhdGUgaXMg
dXNlZCBpbiBzZXZlcmFsIHBsYWNlczoKKy8vCisvLyAqIFdpdGhpbiBleGlzdGluZyBpbXBsZW1l
bnRhdGlvbnMgb2YgYGFic2w6Okhhc2g8VD5gIHRvIHN0b3JlIHRoZSBoYXNoZWQKKy8vICAgc3Rh
dGUgb2YgYW4gb2JqZWN0LiBOb3RlIHRoYXQgaXQgaXMgdXAgdG8gdGhlIGltcGxlbWVudGF0aW9u
IGhvdyBpdCBzdG9yZXMKKy8vICAgc3VjaCBzdGF0ZS4gQSBoYXNoIHRhYmxlLCBmb3IgZXhhbXBs
ZSwgbWF5IG1peCB0aGUgc3RhdGUgdG8gcHJvZHVjZSBhbgorLy8gICBpbnRlZ2VyIHZhbHVlOyBh
IHRlc3RpbmcgZnJhbWV3b3JrIG1heSBzaW1wbHkgaG9sZCBhIHZlY3RvciBvZiB0aGF0IHN0YXRl
LgorLy8gKiBXaXRoaW4gaW1wbGVtZW50YXRpb25zIG9mIGBBYnNsSGFzaFZhbHVlKClgIHVzZWQg
dG8gZXh0ZW5kIHVzZXItZGVmaW5lZAorLy8gICB0eXBlcy4gKFNlZSAiQWRkaW5nIFR5cGUgU3Vw
cG9ydCB0byBhYnNsOjpIYXNoIiBiZWxvdy4pCisvLyAqIEluc2lkZSBhIGBIYXNoU3RhdGVgLCBw
cm92aWRpbmcgdHlwZSBlcmFzdXJlIGZvciB0aGUgY29uY2VwdCBvZiBhIGhhc2gKKy8vICAgc3Rh
dGUsIHdoaWNoIHlvdSBjYW4gdXNlIHRvIGV4dGVuZCB0aGUgYGFic2w6Okhhc2hgIGZyYW1ld29y
ayBmb3IgdHlwZXMKKy8vICAgdGhhdCBhcmUgb3RoZXJ3aXNlIGRpZmZpY3VsdCB0byBleHRlbmQg
dXNpbmcgYEFic2xIYXNoVmFsdWUoKWAuIChTZWUgdGhlCisvLyAgIGBIYXNoU3RhdGVgIGNsYXNz
IGJlbG93LikKKy8vCisvLyBUaGUgImhhc2ggc3RhdGUiIGNvbmNlcHQgY29udGFpbnMgdHdvIG1l
bWJlciBmdW5jdGlvbnMgZm9yIG1peGluZyBoYXNoIHN0YXRlOgorLy8KKy8vICogYEg6OmNvbWJp
bmUoKWAKKy8vCisvLyAgIENvbWJpbmVzIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdmFsdWVzIGlu
dG8gYSBoYXNoIHN0YXRlLCByZXR1cm5pbmcgdGhlCisvLyAgIHVwZGF0ZWQgc3RhdGUuIE5vdGUg
dGhhdCB0aGUgZXhpc3RpbmcgaGFzaCBzdGF0ZSBpcyBtb3ZlLW9ubHkgYW5kIG11c3QgYmUKKy8v
ICAgcGFzc2VkIGJ5IHZhbHVlLgorLy8KKy8vICAgRWFjaCBvZiB0aGUgdmFsdWUgdHlwZXMgVCBt
dXN0IGJlIGhhc2hhYmxlIGJ5IEguCisvLworLy8gICBOT1RFOgorLy8KKy8vICAgICBzdGF0ZSA9
IEg6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUxLCB2YWx1ZTIsIHZhbHVlMyk7Cisv
LworLy8gICBtdXN0IGJlIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSB0aGUgc2FtZSBoYXNoIGV4cGFu
c2lvbiBhcworLy8KKy8vICAgICBzdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwg
dmFsdWUxKTsKKy8vICAgICBzdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwgdmFs
dWUyKTsKKy8vICAgICBzdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUz
KTsKKy8vCisvLyAqIGBIOjpjb21iaW5lX2NvbnRpZ3VvdXMoKWAKKy8vCisvLyAgICBDb21iaW5l
cyBhIGNvbnRpZ3VvdXMgYXJyYXkgb2YgYHNpemVgIGVsZW1lbnRzIGludG8gYSBoYXNoIHN0YXRl
LAorLy8gICAgcmV0dXJuaW5nIHRoZSB1cGRhdGVkIHN0YXRlLiBOb3RlIHRoYXQgdGhlIGV4aXN0
aW5nIGhhc2ggc3RhdGUgaXMKKy8vICAgIG1vdmUtb25seSBhbmQgbXVzdCBiZSBwYXNzZWQgYnkg
dmFsdWUuCisvLworLy8gICAgTk9URToKKy8vCisvLyAgICAgIHN0YXRlID0gSDo6Y29tYmluZV9j
b250aWd1b3VzKHN0ZDo6bW92ZShzdGF0ZSksIGRhdGEsIHNpemUpOworLy8KKy8vICAgIG5lZWQg
Tk9UIGJlIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSB0aGUgc2FtZSBoYXNoIGV4cGFuc2lvbiBhcyBh
IGxvb3AKKy8vICAgIChpdCBtYXkgcGVyZm9ybSBpbnRlcm5hbCBvcHRpbWl6YXRpb25zKS4gSWYg
eW91IG5lZWQgdGhpcyBndWFyYW50ZWUsIHVzZSBhCisvLyAgICBsb29wIGluc3RlYWQuCisvLwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFkZGluZyBUeXBlIFN1cHBvcnQgdG8gYGFic2w6
Okhhc2hgCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRvIGFkZCBzdXBwb3J0IGZv
ciB5b3VyIHVzZXItZGVmaW5lZCB0eXBlLCBhZGQgYSBwcm9wZXIgYEFic2xIYXNoVmFsdWUoKWAK
Ky8vIG92ZXJsb2FkIGFzIGEgZnJlZSAobm9uLW1lbWJlcikgZnVuY3Rpb24uIFRoZSBvdmVybG9h
ZCB3aWxsIHRha2UgYW4KKy8vIGV4aXN0aW5nIGhhc2ggc3RhdGUgYW5kIHNob3VsZCBjb21iaW5l
IHRoYXQgc3RhdGUgd2l0aCBzdGF0ZSBmcm9tIHRoZSB0eXBlLgorLy8KKy8vIEV4YW1wbGU6Cisv
LworLy8gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKy8vICAgSCBBYnNsSGFzaFZhbHVlKEggc3Rh
dGUsIGNvbnN0IE15VHlwZSYgdikgeworLy8gICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92
ZShzdGF0ZSksIHYuZmllbGQxLCAuLi4sIHYuZmllbGROKTsKKy8vICAgfQorLy8KKy8vIHdoZXJl
IGAoZmllbGQxLCAuLi4sIGZpZWxkTilgIGFyZSB0aGUgbWVtYmVycyB5b3Ugd291bGQgdXNlIG9u
IHlvdXIKKy8vIGBvcGVyYXRvcj09YCB0byBkZWZpbmUgZXF1YWxpdHkuCisvLworLy8gTm90aWNl
IHRoYXQgYEFic2xIYXNoVmFsdWVgIGlzIG5vdCBhIGNsYXNzIG1lbWJlciwgYnV0IGFuIG9yZGlu
YXJ5IGZ1bmN0aW9uLgorLy8gQW4gYEFic2xIYXNoVmFsdWVgIG92ZXJsb2FkIGZvciBhIHR5cGUg
c2hvdWxkIG9ubHkgYmUgZGVjbGFyZWQgaW4gdGhlIHNhbWUKKy8vIGZpbGUgYW5kIG5hbWVzcGFj
ZSBhcyBzYWlkIHR5cGUuIFRoZSBwcm9wZXIgYEFic2xIYXNoVmFsdWVgIGltcGxlbWVudGF0aW9u
CisvLyBmb3IgYSBnaXZlbiB0eXBlIHdpbGwgYmUgZGlzY292ZXJlZCB2aWEgQURMLgorLy8KKy8v
IE5vdGU6IHVubGlrZSBgc3RkOjpoYXNoJywgYGFic2w6Okhhc2hgIHNob3VsZCBuZXZlciBiZSBz
cGVjaWFsaXplZC4gSXQgbXVzdAorLy8gb25seSBiZSBleHRlbmRlZCBieSBhZGRpbmcgYEFic2xI
YXNoVmFsdWUoKWAgb3ZlcmxvYWRzLgorLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcg
SGFzaCA9IGFic2w6Omhhc2hfaW50ZXJuYWw6Okhhc2g8VD47CisKKy8vIEhhc2hTdGF0ZQorLy8K
Ky8vIEEgdHlwZSBlcmFzZWQgdmVyc2lvbiBvZiB0aGUgaGFzaCBzdGF0ZSBjb25jZXB0LCBmb3Ig
dXNlIGluIHVzZXItZGVmaW5lZAorLy8gYEFic2xIYXNoVmFsdWVgIGltcGxlbWVudGF0aW9ucyB0
aGF0IGNhbid0IHVzZSB0ZW1wbGF0ZXMgKHN1Y2ggYXMgUEltcGwKKy8vIGNsYXNzZXMsIHZpcnR1
YWwgZnVuY3Rpb25zLCBldGMuKS4gVGhlIHR5cGUgZXJhc3VyZSBhZGRzIG92ZXJoZWFkIHNvIGl0
CisvLyBzaG91bGQgYmUgYXZvaWRlZCB1bmxlc3MgbmVjZXNzYXJ5LgorLy8KKy8vIE5vdGU6IFRo
aXMgd3JhcHBlciB3aWxsIG9ubHkgZXJhc2UgY2FsbHMgdG86CisvLyAgICAgY29tYmluZV9jb250
aWd1b3VzKEgsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpCisvLworLy8gQWxsIG90aGVy
IGNhbGxzIHdpbGwgYmUgaGFuZGxlZCBpbnRlcm5hbGx5IGFuZCB3aWxsIG5vdCBpbnZva2Ugb3Zl
cmxvYWRzCisvLyBwcm92aWRlZCBieSB0aGUgd3JhcHBlZCBjbGFzcy4KKy8vCisvLyBVc2VycyBv
ZiB0aGlzIGNsYXNzIHNob3VsZCBzdGlsbCBkZWZpbmUgYSB0ZW1wbGF0ZSBgQWJzbEhhc2hWYWx1
ZWAgZnVuY3Rpb24sCisvLyBidXQgY2FuIHVzZSBgYWJzbDo6SGFzaFN0YXRlOjpDcmVhdGUoJnN0
YXRlKWAgdG8gZXJhc2UgdGhlIHR5cGUgb2YgdGhlIGhhc2gKKy8vIHN0YXRlIGFuZCBkaXNwYXRj
aCB0byB0aGVpciBwcml2YXRlIGhhc2hpbmcgbG9naWMuCisvLworLy8gVGhpcyBzdGF0ZSBjYW4g
YmUgdXNlZCBsaWtlIGFueSBvdGhlciBoYXNoIHN0YXRlLiBJbiBwYXJ0aWN1bGFyLCB5b3UgY2Fu
IGNhbGwKKy8vIGBIYXNoU3RhdGU6OmNvbWJpbmUoKWAgYW5kIGBIYXNoU3RhdGU6OmNvbWJpbmVf
Y29udGlndW91cygpYCBvbiBpdC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgY2xhc3MgSW50
ZXJmYWNlIHsKKy8vICAgIHB1YmxpYzoKKy8vICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKy8v
ICAgICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggc3RhdGUsIGNvbnN0IEludGVyZmFjZSYgdmFs
dWUpIHsKKy8vICAgICAgIHN0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUoc3RhdGUpLCBzdGQ6
OnR5cGVfaW5kZXgodHlwZWlkKCp0aGlzKSkpOworLy8gICAgICAgdmFsdWUuSGFzaFZhbHVlKGFi
c2w6Okhhc2hTdGF0ZTo6Q3JlYXRlKCZzdGF0ZSkpOworLy8gICAgICAgcmV0dXJuIHN0YXRlOwor
Ly8gICAgIH0KKy8vICAgIHByaXZhdGU6CisvLyAgICAgdmlydHVhbCB2b2lkIEhhc2hWYWx1ZShh
YnNsOjpIYXNoU3RhdGUgc3RhdGUpIGNvbnN0ID0gMDsKKy8vICB9OworLy8KKy8vICAgY2xhc3Mg
SW1wbCA6IEludGVyZmFjZSB7CisvLyAgICBwcml2YXRlOgorLy8gICAgIHZvaWQgSGFzaFZhbHVl
KGFic2w6Okhhc2hTdGF0ZSBzdGF0ZSkgY29uc3Qgb3ZlcnJpZGUgeworLy8gICAgICAgYWJzbDo6
SGFzaFN0YXRlOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHYxXywgdjJfKTsKKy8vICAgICB9
CisvLyAgICAgaW50IHYxXzsKKy8vICAgICBzdHJpbmcgdjJfOworLy8gICB9OworY2xhc3MgSGFz
aFN0YXRlIDogcHVibGljIGhhc2hfaW50ZXJuYWw6Okhhc2hTdGF0ZUJhc2U8SGFzaFN0YXRlPiB7
CisgcHVibGljOgorICAvLyBIYXNoU3RhdGU6OkNyZWF0ZSgpCisgIC8vCisgIC8vIENyZWF0ZSBh
IG5ldyBgSGFzaFN0YXRlYCBpbnN0YW5jZSB0aGF0IHdyYXBzIGBzdGF0ZWAuIEFsbCBjYWxscyB0
bworICAvLyBgY29tYmluZSgpYCBhbmQgYGNvbWJpbmVfY29udGlndW91cygpYCBvbiB0aGUgbmV3
IGluc3RhbmNlIHdpbGwgYmUKKyAgLy8gcmVkaXJlY3RlZCB0byB0aGUgb3JpZ2luYWwgYHN0YXRl
YCBvYmplY3QuIFRoZSBgc3RhdGVgIG9iamVjdCBtdXN0IG91dGxpdmUKKyAgLy8gdGhlIGBIYXNo
U3RhdGVgIGluc3RhbmNlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIEhhc2hT
dGF0ZSBDcmVhdGUoVCogc3RhdGUpIHsKKyAgICBIYXNoU3RhdGUgczsKKyAgICBzLkluaXQoc3Rh
dGUpOworICAgIHJldHVybiBzOworICB9CisKKyAgSGFzaFN0YXRlKGNvbnN0IEhhc2hTdGF0ZSYp
ID0gZGVsZXRlOworICBIYXNoU3RhdGUmIG9wZXJhdG9yPShjb25zdCBIYXNoU3RhdGUmKSA9IGRl
bGV0ZTsKKyAgSGFzaFN0YXRlKEhhc2hTdGF0ZSYmKSA9IGRlZmF1bHQ7CisgIEhhc2hTdGF0ZSYg
b3BlcmF0b3I9KEhhc2hTdGF0ZSYmKSA9IGRlZmF1bHQ7CisKKyAgLy8gSGFzaFN0YXRlOjpjb21i
aW5lKCkKKyAgLy8KKyAgLy8gQ29tYmluZXMgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB2YWx1ZXMg
aW50byBhIGhhc2ggc3RhdGUsIHJldHVybmluZyB0aGUKKyAgLy8gdXBkYXRlZCBzdGF0ZS4KKyAg
dXNpbmcgSGFzaFN0YXRlOjpIYXNoU3RhdGVCYXNlOjpjb21iaW5lOworCisgIC8vIEhhc2hTdGF0
ZTo6Y29tYmluZV9jb250aWd1b3VzKCkKKyAgLy8KKyAgLy8gQ29tYmluZXMgYSBjb250aWd1b3Vz
IGFycmF5IG9mIGBzaXplYCBlbGVtZW50cyBpbnRvIGEgaGFzaCBzdGF0ZSwgcmV0dXJuaW5nCisg
IC8vIHRoZSB1cGRhdGVkIHN0YXRlLgorICBzdGF0aWMgSGFzaFN0YXRlIGNvbWJpbmVfY29udGln
dW91cyhIYXNoU3RhdGUgaGFzaF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogZmlyc3QsIHNpemVfdCBzaXplKSB7CisgICAg
aGFzaF9zdGF0ZS5jb21iaW5lX2NvbnRpZ3VvdXNfKGhhc2hfc3RhdGUuc3RhdGVfLCBmaXJzdCwg
c2l6ZSk7CisgICAgcmV0dXJuIGhhc2hfc3RhdGU7CisgIH0KKyAgdXNpbmcgSGFzaFN0YXRlOjpI
YXNoU3RhdGVCYXNlOjpjb21iaW5lX2NvbnRpZ3VvdXM7CisKKyBwcml2YXRlOgorICBIYXNoU3Rh
dGUoKSA9IGRlZmF1bHQ7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyB2b2lk
IENvbWJpbmVDb250aWd1b3VzSW1wbCh2b2lkKiBwLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBmaXJz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKSB7Cisg
ICAgVCYgc3RhdGUgPSAqc3RhdGljX2Nhc3Q8VCo+KHApOworICAgIHN0YXRlID0gVDo6Y29tYmlu
ZV9jb250aWd1b3VzKHN0ZDo6bW92ZShzdGF0ZSksIGZpcnN0LCBzaXplKTsKKyAgfQorCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgorICB2b2lkIEluaXQoVCogc3RhdGUpIHsKKyAgICBzdGF0ZV8g
PSBzdGF0ZTsKKyAgICBjb21iaW5lX2NvbnRpZ3VvdXNfID0gJkNvbWJpbmVDb250aWd1b3VzSW1w
bDxUPjsKKyAgfQorCisgIC8vIERvIG5vdCBlcmFzZSBhbiBhbHJlYWR5IGVyYXNlZCBzdGF0ZS4K
KyAgdm9pZCBJbml0KEhhc2hTdGF0ZSogc3RhdGUpIHsKKyAgICBzdGF0ZV8gPSBzdGF0ZS0+c3Rh
dGVfOworICAgIGNvbWJpbmVfY29udGlndW91c18gPSBzdGF0ZS0+Y29tYmluZV9jb250aWd1b3Vz
XzsKKyAgfQorCisgIHZvaWQqIHN0YXRlXzsKKyAgdm9pZCAoKmNvbWJpbmVfY29udGlndW91c18p
KHZvaWQqLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKK307CisKK30gIC8vIG5hbWVz
cGFjZSBhYnNsCisjZW5kaWYgIC8vIEFCU0xfSEFTSF9IQVNIX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9oYXNoL2hhc2hfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaF90ZXN0LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdiNmZiMmU3YWMxY2IwOTMxYzVlNmI5ODMzZGVmNjRlYWNlMmFjNzcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9oYXNoL2hhc2hfdGVzdC5jYwpAQCAtMCwwICsxLDQyNSBAQAorLy8gQ29weXJp
Z2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvaGFzaC9oYXNo
LmgiCisKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPGRl
cXVlPgorI2luY2x1ZGUgPGZvcndhcmRfbGlzdD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2lu
Y2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxsaXN0PgorI2lu
Y2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNs
dWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRl
IDx0dXBsZT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFw
PgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ21v
Y2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29u
dGFpbmVyL2ZsYXRfaGFzaF9zZXQuaCIKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaF90ZXN0aW5n
LmgiCisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL3NweV9oYXNoX3N0YXRlLmgiCisjaW5j
bHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9udW1lcmljL2lu
dDEyOC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpIYXNoOwordXNpbmcgYWJzbDo6
aGFzaF9pbnRlcm5hbDo6U3B5SGFzaFN0YXRlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIEhhc2hWYWx1ZUludFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworVFlQRURf
VEVTVF9DQVNFX1AoSGFzaFZhbHVlSW50VGVzdCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
U3B5SGFzaFN0YXRlIFNweUhhc2goY29uc3QgVCYgdmFsdWUpIHsKKyAgcmV0dXJuIFNweUhhc2hT
dGF0ZTo6Y29tYmluZShTcHlIYXNoU3RhdGUoKSwgdmFsdWUpOworfQorCisvLyBIZWxwZXIgdHJh
aXQgdG8gdmVyaWZ5IGlmIFQgaXMgaGFzaGFibGUuIFdlIHVzZSBhYnNsOjpIYXNoJ3MgcG9pc29u
IHN0YXR1cyB0bworLy8gZGV0ZWN0IGl0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBp
c19oYXNoYWJsZSA9IHN0ZDo6aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPGFic2w6Okhhc2g8VD4+
OworCitUWVBFRF9URVNUX1AoSGFzaFZhbHVlSW50VGVzdCwgQmFzaWNVc2FnZSkgeworICBFWFBF
Q1RfVFJVRSgoaXNfaGFzaGFibGU8VHlwZVBhcmFtPjo6dmFsdWUpKTsKKworICBUeXBlUGFyYW0g
biA9IDQyOworICBFWFBFQ1RfRVEoU3B5SGFzaChuKSwgU3B5SGFzaChUeXBlUGFyYW17NDJ9KSk7
CisgIEVYUEVDVF9ORShTcHlIYXNoKG4pLCBTcHlIYXNoKFR5cGVQYXJhbXswfSkpOworICBFWFBF
Q1RfTkUoU3B5SGFzaChzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpKSwKKyAg
ICAgICAgICAgIFNweUhhc2goc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSkp
OworfQorCitUWVBFRF9URVNUX1AoSGFzaFZhbHVlSW50VGVzdCwgRmFzdFBhdGgpIHsKKyAgLy8g
VGVzdCB0aGUgZmFzdC1wYXRoIHRvIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIGFyZSB0aGUgc2FtZS4K
KyAgVHlwZVBhcmFtIG4gPSA0MjsKKyAgRVhQRUNUX0VRKGFic2w6Okhhc2g8VHlwZVBhcmFtPnt9
KG4pLAorICAgICAgICAgICAgYWJzbDo6SGFzaDxzdGQ6OnR1cGxlPFR5cGVQYXJhbT4+e30oc3Rk
Ojp0dXBsZTxUeXBlUGFyYW0+KG4pKSk7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9Q
KEhhc2hWYWx1ZUludFRlc3QsIEJhc2ljVXNhZ2UsIEZhc3RQYXRoKTsKK3VzaW5nIEludFR5cGVz
ID0gdGVzdGluZzo6VHlwZXM8dW5zaWduZWQgY2hhciwgY2hhciwgaW50LCBpbnQzMl90LCBpbnQ2
NF90LCB1aW50MzJfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qs
IHNpemVfdD47CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgSGFzaFZhbHVlSW50
VGVzdCwgSW50VHlwZXMpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lk
Pgorc3RydWN0IElzSGFzaENhbGxibGUgOiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IElzSGFzaENhbGxibGU8VCwgYWJzbDo6dm9pZF90PGRlY2x0
eXBlKHN0ZDo6ZGVjbHZhbDxhYnNsOjpIYXNoPFQ+PigpKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCBUJj4oKSkpPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4KK3N0cnVjdCBJc0FnZ3Jl
Z2F0ZUluaXRpYWxpemFibGUgOiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorc3RydWN0IElzQWdncmVnYXRlSW5pdGlhbGl6YWJsZTxULCBhYnNsOjp2b2lkX3Q8
ZGVjbHR5cGUoVHt9KT4+CisgICAgOiBzdGQ6OnRydWVfdHlwZSB7fTsKKworVEVTVChJc0hhc2hh
YmxlVGVzdCwgVmFsaWRIYXNoKSB7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxpbnQ+Ojp2
YWx1ZSkpOworICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxhYnNs
OjpIYXNoPGludD4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfY29weV9jb25zdHJ1
Y3RpYmxlPGFic2w6Okhhc2g8aW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc19t
b3ZlX2NvbnN0cnVjdGlibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJV
RShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOworICBF
WFBFQ1RfVFJVRShhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFs
dWUpOworICBFWFBFQ1RfVFJVRShJc0hhc2hDYWxsYmxlPGludD46OnZhbHVlKTsKKyAgRVhQRUNU
X1RSVUUoSXNBZ2dyZWdhdGVJbml0aWFsaXphYmxlPGFic2w6Okhhc2g8aW50Pj46OnZhbHVlKTsK
K30KKyNpZiBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8gJiYgIWRlZmluZWQoX19BUFBM
RV9fKQorVEVTVChJc0hhc2hhYmxlVGVzdCwgUG9pc29uSGFzaCkgeworICBzdHJ1Y3QgWCB7fTsK
KyAgRVhQRUNUX0ZBTFNFKChpc19oYXNoYWJsZTxYPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNF
KHN0ZDo6aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPGFic2w6Okhhc2g8WD4+Ojp2YWx1ZSk7Cisg
IEVYUEVDVF9GQUxTRShzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxhYnNsOjpIYXNoPFg+Pjo6
dmFsdWUpOworICBFWFBFQ1RfRkFMU0Uoc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8YWJzbDo6
SGFzaDxYPj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJs
ZTxhYnNsOjpIYXNoPFg+Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfbW92ZV9h
c3NpZ25hYmxlPGFic2w6Okhhc2g8WD4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShJc0hhc2hD
YWxsYmxlPFg+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShJc0FnZ3JlZ2F0ZUluaXRpYWxpemFi
bGU8YWJzbDo6SGFzaDxYPj46OnZhbHVlKTsKK30KKyNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVS
TkFMX0NBTl9QT0lTT05fCisKKy8vIEhhc2hhYmxlIHR5cGVzCisvLworLy8gVGhlc2UgdHlwZXMg
ZXhpc3Qgc2ltcGx5IHRvIGV4ZXJjaXNlIHZhcmlvdXMgQWJzbEhhc2hWYWx1ZSBiZWhhdmlvcnMs
IHNvCisvLyB0aGV5IGFyZSBuYW1lZCBieSB3aGF0IHRoZWlyIEFic2xIYXNoVmFsdWUgb3Zlcmxv
YWQgZG9lcy4KK3N0cnVjdCBOb09wIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hDb2RlPgor
ICBmcmllbmQgSGFzaENvZGUgQWJzbEhhc2hWYWx1ZShIYXNoQ29kZSBoLCBOb09wIG4pIHsKKyAg
ICByZXR1cm4gc3RkOjptb3ZlKGgpOworICB9Cit9OworCitzdHJ1Y3QgRW1wdHlDb21iaW5lIHsK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hDb2RlPgorICBmcmllbmQgSGFzaENvZGUgQWJzbEhh
c2hWYWx1ZShIYXNoQ29kZSBoLCBFbXB0eUNvbWJpbmUgZSkgeworICAgIHJldHVybiBIYXNoQ29k
ZTo6Y29tYmluZShzdGQ6Om1vdmUoaCkpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW50Pgorc3RydWN0IENvbWJpbmVJdGVyYXRpdmUgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFz
aENvZGU+CisgIGZyaWVuZCBIYXNoQ29kZSBBYnNsSGFzaFZhbHVlKEhhc2hDb2RlIGgsIENvbWJp
bmVJdGVyYXRpdmUgYykgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAg
ICBoID0gSGFzaENvZGU6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBJbnQoaSkpOworICAgIH0KKyAg
ICByZXR1cm4gaDsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEludD4KK3N0cnVjdCBD
b21iaW5lVmFyaWFkaWMgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaENvZGU+CisgIGZyaWVu
ZCBIYXNoQ29kZSBBYnNsSGFzaFZhbHVlKEhhc2hDb2RlIGgsIENvbWJpbmVWYXJpYWRpYyBjKSB7
CisgICAgcmV0dXJuIEhhc2hDb2RlOjpjb21iaW5lKHN0ZDo6bW92ZShoKSwgSW50KDApLCBJbnQo
MSksIEludCgyKSwgSW50KDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQoNCkp
OworICB9Cit9OworCit1c2luZyBJbnZva2VUYWcgPSBhYnNsOjpoYXNoX2ludGVybmFsOjpJbnZv
a2VIYXNoVGFnOwordGVtcGxhdGUgPEludm9rZVRhZyBUPgordXNpbmcgSW52b2tlVGFnQ29uc3Rh
bnQgPSBzdGQ6OmludGVncmFsX2NvbnN0YW50PEludm9rZVRhZywgVD47CisKK3RlbXBsYXRlIDxJ
bnZva2VUYWcuLi4gVGFncz4KK3N0cnVjdCBNaW5UYWc7CisKK3RlbXBsYXRlIDxJbnZva2VUYWcg
YSwgSW52b2tlVGFnIGIsIEludm9rZVRhZy4uLiBUYWdzPgorc3RydWN0IE1pblRhZzxhLCBiLCBU
YWdzLi4uPiA6IE1pblRhZzwoYSA8IGIgPyBhIDogYiksIFRhZ3MuLi4+IHt9OworCit0ZW1wbGF0
ZSA8SW52b2tlVGFnIGE+CitzdHJ1Y3QgTWluVGFnPGE+IDogSW52b2tlVGFnQ29uc3RhbnQ8YT4g
e307CisKK3RlbXBsYXRlIDxJbnZva2VUYWcuLi4gVGFncz4KK3N0cnVjdCBDdXN0b21IYXNoVHlw
ZSB7CisgIHNpemVfdCB2YWx1ZTsKK307CisKK3RlbXBsYXRlIDxJbnZva2VUYWcgYWxsb3dlZCwg
SW52b2tlVGFnLi4uIHRhZ3M+CitzdHJ1Y3QgRW5hYmxlSWZDb250YWluZWQKKyAgICA6IHN0ZDo6
ZW5hYmxlX2lmPGFic2w6OmRpc2p1bmN0aW9uPAorICAgICAgICAgIHN0ZDo6aW50ZWdyYWxfY29u
c3RhbnQ8Ym9vbCwgYWxsb3dlZCA9PSB0YWdzPi4uLj46OnZhbHVlPiB7fTsKKwordGVtcGxhdGUg
PAorICAgIHR5cGVuYW1lIEgsIEludm9rZVRhZy4uLiBUYWdzLAorICAgIHR5cGVuYW1lID0gdHlw
ZW5hbWUgRW5hYmxlSWZDb250YWluZWQ8SW52b2tlVGFnOjprSGFzaFZhbHVlLCBUYWdzLi4uPjo6
dHlwZT4KK0ggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBDdXN0b21IYXNoVHlwZTxUYWdzLi4uPiB0
KSB7CisgIHN0YXRpY19hc3NlcnQoTWluVGFnPFRhZ3MuLi4+Ojp2YWx1ZSA9PSBJbnZva2VUYWc6
OmtIYXNoVmFsdWUsICIiKTsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwK
KyAgICAgICAgICAgICAgICAgICAgdC52YWx1ZSArIHN0YXRpY19jYXN0PGludD4oSW52b2tlVGFn
OjprSGFzaFZhbHVlKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgYWJzbCB7
CituYW1lc3BhY2UgaGFzaF9pbnRlcm5hbCB7Cit0ZW1wbGF0ZSA8SW52b2tlVGFnLi4uIFRhZ3M+
CitzdHJ1Y3QgaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8CisgICAgQ3VzdG9tSGFzaFR5cGU8VGFn
cy4uLj4sCisgICAgdHlwZW5hbWUgRW5hYmxlSWZDb250YWluZWQ8SW52b2tlVGFnOjprVW5pcXVl
bHlSZXByZXNlbnRlZCwgVGFncy4uLj46OnR5cGU+CisgICAgOiBzdGQ6OnRydWVfdHlwZSB7fTsK
K30gIC8vIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisj
aWYgQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCituYW1lc3BhY2UgQUJT
TF9JTlRFUk5BTF9MRUdBQ1lfSEFTSF9OQU1FU1BBQ0UgewordGVtcGxhdGUgPEludm9rZVRhZy4u
LiBUYWdzPgorc3RydWN0IGhhc2g8Q3VzdG9tSGFzaFR5cGU8VGFncy4uLj4+IHsKKyAgdGVtcGxh
dGUgPEludm9rZVRhZy4uLiBUYWdzSW4sIHR5cGVuYW1lID0gdHlwZW5hbWUgRW5hYmxlSWZDb250
YWluZWQ8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52b2tlVGFnOjpr
TGVnYWN5SGFzaCwgVGFnc0luLi4uPjo6dHlwZT4KKyAgc2l6ZV90IG9wZXJhdG9yKCkoQ3VzdG9t
SGFzaFR5cGU8VGFnc0luLi4uPiB0KSBjb25zdCB7CisgICAgc3RhdGljX2Fzc2VydChNaW5UYWc8
VGFncy4uLj46OnZhbHVlID09IEludm9rZVRhZzo6a0xlZ2FjeUhhc2gsICIiKTsKKyAgICByZXR1
cm4gdC52YWx1ZSArIHN0YXRpY19jYXN0PGludD4oSW52b2tlVGFnOjprTGVnYWN5SGFzaCk7Cisg
IH0KK307Cit9ICAvLyBuYW1lc3BhY2UgQUJTTF9JTlRFUk5BTF9MRUdBQ1lfSEFTSF9OQU1FU1BB
Q0UKKyNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCisK
K25hbWVzcGFjZSBzdGQgewordGVtcGxhdGUgPEludm9rZVRhZy4uLiBUYWdzPiAgLy8gTk9MSU5U
CitzdHJ1Y3QgaGFzaDxDdXN0b21IYXNoVHlwZTxUYWdzLi4uPj4geworICB0ZW1wbGF0ZSA8SW52
b2tlVGFnLi4uIFRhZ3NJbiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBFbmFibGVJZkNvbnRhaW5lZDwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZva2VUYWc6OmtTdGRIYXNo
LCBUYWdzSW4uLi4+Ojp0eXBlPgorICBzaXplX3Qgb3BlcmF0b3IoKShDdXN0b21IYXNoVHlwZTxU
YWdzSW4uLi4+IHQpIGNvbnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KE1pblRhZzxUYWdzLi4uPjo6
dmFsdWUgPT0gSW52b2tlVGFnOjprU3RkSGFzaCwgIiIpOworICAgIHJldHVybiB0LnZhbHVlICsg
c3RhdGljX2Nhc3Q8aW50PihJbnZva2VUYWc6OmtTdGRIYXNoKTsKKyAgfQorfTsKK30gIC8vIG5h
bWVzcGFjZSBzdGQKKworbmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQ+Cit2
b2lkIFRlc3RDdXN0b21IYXNoVHlwZShJbnZva2VUYWdDb25zdGFudDxJbnZva2VUYWc6OmtOb25l
PiwgVC4uLikgeworICB1c2luZyB0eXBlID0gQ3VzdG9tSGFzaFR5cGU8VDo6dmFsdWUuLi4+Owor
ICBTQ09QRURfVFJBQ0UodGVzdGluZzo6UHJpbnRUb1N0cmluZyhzdGQ6OnZlY3RvcjxJbnZva2VU
YWc+e1Q6OnZhbHVlLi4ufSkpOworICBFWFBFQ1RfVFJVRShpc19oYXNoYWJsZTx0eXBlPigpKTsK
KyAgRVhQRUNUX1RSVUUoaXNfaGFzaGFibGU8Y29uc3QgdHlwZT4oKSk7CisgIEVYUEVDVF9UUlVF
KGlzX2hhc2hhYmxlPGNvbnN0IHR5cGUmPigpKTsKKworICBjb25zdCBzaXplX3Qgb2Zmc2V0ID0g
c3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1pbih7VDo6dmFsdWUuLi59KSk7CisgIEVYUEVDVF9FUShT
cHlIYXNoKHR5cGV7N30pLCBTcHlIYXNoKHNpemVfdHs3ICsgb2Zmc2V0fSkpOworfQorCit2b2lk
IFRlc3RDdXN0b21IYXNoVHlwZShJbnZva2VUYWdDb25zdGFudDxJbnZva2VUYWc6OmtOb25lPikg
eworI2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXworICAvLyBpc19oYXNoYWJsZSBp
cyBmYWxzZSBpZiB3ZSBkb24ndCBzdXBwb3J0IGFueSBvZiB0aGUgaG9va3MuCisgIHVzaW5nIHR5
cGUgPSBDdXN0b21IYXNoVHlwZTw+OworICBFWFBFQ1RfRkFMU0UoaXNfaGFzaGFibGU8dHlwZT4o
KSk7CisgIEVYUEVDVF9GQUxTRShpc19oYXNoYWJsZTxjb25zdCB0eXBlPigpKTsKKyAgRVhQRUNU
X0ZBTFNFKGlzX2hhc2hhYmxlPGNvbnN0IHR5cGUmPigpKTsKKyNlbmRpZiAgLy8gQUJTTF9IQVNI
X0lOVEVSTkFMX0NBTl9QT0lTT05fCit9CisKK3RlbXBsYXRlIDxJbnZva2VUYWcgVGFnLCB0eXBl
bmFtZS4uLiBUPgordm9pZCBUZXN0Q3VzdG9tSGFzaFR5cGUoSW52b2tlVGFnQ29uc3RhbnQ8VGFn
PiB0YWcsIFQuLi4gdCkgeworICBjb25zdGV4cHIgYXV0byBuZXh0ID0gc3RhdGljX2Nhc3Q8SW52
b2tlVGFnPihzdGF0aWNfY2FzdDxpbnQ+KFRhZykgKyAxKTsKKyAgVGVzdEN1c3RvbUhhc2hUeXBl
KEludm9rZVRhZ0NvbnN0YW50PG5leHQ+KCksIHRhZywgdC4uLik7CisgIFRlc3RDdXN0b21IYXNo
VHlwZShJbnZva2VUYWdDb25zdGFudDxuZXh0PigpLCB0Li4uKTsKK30KKworVEVTVChIYXNoVGVz
dCwgQ3VzdG9tSGFzaFR5cGUpIHsKKyAgVGVzdEN1c3RvbUhhc2hUeXBlKEludm9rZVRhZ0NvbnN0
YW50PEludm9rZVRhZ3t9PigpKTsKK30KKworVEVTVChIYXNoVGVzdCwgTm9PcHNBcmVFcXVpdmFs
ZW50KSB7CisgIEVYUEVDVF9FUShIYXNoPE5vT3A+KCkoe30pLCBIYXNoPE5vT3A+KCkoe30pKTsK
KyAgRVhQRUNUX0VRKEhhc2g8Tm9PcD4oKSh7fSksIEhhc2g8RW1wdHlDb21iaW5lPigpKHt9KSk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgSGFzaEludFRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Cit9OworVFlQRURfVEVTVF9DQVNFX1AoSGFzaEludFRlc3QpOworCitU
WVBFRF9URVNUX1AoSGFzaEludFRlc3QsIEJhc2ljVXNhZ2UpIHsKKyAgRVhQRUNUX05FKEhhc2g8
Tm9PcD4oKSh7fSksIEhhc2g8VHlwZVBhcmFtPigpKDApKTsKKyAgRVhQRUNUX05FKEhhc2g8Tm9P
cD4oKSh7fSksCisgICAgICAgICAgICBIYXNoPFR5cGVQYXJhbT4oKShzdGQ6Om51bWVyaWNfbGlt
aXRzPFR5cGVQYXJhbT46Om1heCgpKSk7CisgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQ
YXJhbT46Om1pbigpICE9IDApIHsKKyAgICBFWFBFQ1RfTkUoSGFzaDxOb09wPigpKHt9KSwKKyAg
ICAgICAgICAgICAgSGFzaDxUeXBlUGFyYW0+KCkoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFy
YW0+OjptaW4oKSkpOworICB9CisKKyAgRVhQRUNUX0VRKEhhc2g8Q29tYmluZUl0ZXJhdGl2ZTxU
eXBlUGFyYW0+PigpKHt9KSwKKyAgICAgICAgICAgIEhhc2g8Q29tYmluZVZhcmlhZGljPFR5cGVQ
YXJhbT4+KCkoe30pKTsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoSGFzaEludFRl
c3QsIEJhc2ljVXNhZ2UpOwordXNpbmcgSW50VHlwZXMgPSB0ZXN0aW5nOjpUeXBlczx1bnNpZ25l
ZCBjaGFyLCBjaGFyLCBpbnQsIGludDMyX3QsIGludDY0X3QsIHVpbnQzMl90LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCwgc2l6ZV90PjsKK0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKE15LCBIYXNoSW50VGVzdCwgSW50VHlwZXMpOworCitzdHJ1Y3QgU3Ry
dWN0V2l0aFBhZGRpbmcgeworICBjaGFyIGM7CisgIGludCBpOworCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgY29uc3QgU3Ry
dWN0V2l0aFBhZGRpbmcmIHMpIHsKKyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFz
aF9zdGF0ZSksIHMuYywgcy5pKTsKKyAgfQorfTsKKworc3RhdGljX2Fzc2VydChzaXplb2YoU3Ry
dWN0V2l0aFBhZGRpbmcpID4gc2l6ZW9mKGNoYXIpICsgc2l6ZW9mKGludCksCisgICAgICAgICAg
ICAgICJTdHJ1Y3RXaXRoUGFkZGluZyBkb2Vzbid0IGhhdmUgcGFkZGluZyIpOworc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3N0YW5kYXJkX2xheW91dDxTdHJ1Y3RXaXRoUGFkZGluZz46OnZhbHVlLCAi
Iik7CisKKy8vIFRoaXMgY2hlY2sgaGFzIHRvIGJlIGRpc2FibGVkIGJlY2F1c2UgbGlic3RkYysr
IGRvZXNuJ3Qgc3VwcG9ydCBpdC4KKy8vIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
Y29uc3RydWN0aWJsZTxTdHJ1Y3RXaXRoUGFkZGluZz46OnZhbHVlLCAiIik7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IEFycmF5U2xpY2UgeworICBUKiBiZWdpbjsKKyAgVCogZW5k
OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEgg
aGFzaF9zdGF0ZSwgY29uc3QgQXJyYXlTbGljZSYgc2xpY2UpIHsKKyAgICBmb3IgKGF1dG8gdCA9
IHNsaWNlLmJlZ2luOyB0ICE9IHNsaWNlLmVuZDsgKyt0KSB7CisgICAgICBoYXNoX3N0YXRlID0g
SDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksICp0KTsKKyAgICB9CisgICAgcmV0dXJu
IGhhc2hfc3RhdGU7CisgIH0KK307CisKK1RFU1QoSGFzaFRlc3QsIEhhc2hOb25VbmlxdWVseVJl
cHJlc2VudGVkVHlwZSkgeworICAvLyBDcmVhdGUgZXF1YWwgU3RydWN0V2l0aFBhZGRpbmcgb2Jq
ZWN0cyB0aGF0IGFyZSBrbm93biB0byBoYXZlIG5vbi1lcXVhbAorICAvLyBwYWRkaW5nIGJ5dGVz
LgorICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtOdW1TdHJ1Y3RzID0gMTA7CisgIHVuc2lnbmVkIGNo
YXIgYnVmZmVyMVtrTnVtU3RydWN0cyAqIHNpemVvZihTdHJ1Y3RXaXRoUGFkZGluZyldOworICBz
dGQ6Om1lbXNldChidWZmZXIxLCAwLCBzaXplb2YoYnVmZmVyMSkpOworICBhdXRvKiBzMSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8U3RydWN0V2l0aFBhZGRpbmcqPihidWZmZXIxKTsKKworICB1bnNpZ25l
ZCBjaGFyIGJ1ZmZlcjJba051bVN0cnVjdHMgKiBzaXplb2YoU3RydWN0V2l0aFBhZGRpbmcpXTsK
KyAgc3RkOjptZW1zZXQoYnVmZmVyMiwgMjU1LCBzaXplb2YoYnVmZmVyMikpOworICBhdXRvKiBz
MiA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0V2l0aFBhZGRpbmcqPihidWZmZXIyKTsKKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCBrTnVtU3RydWN0czsgKytpKSB7CisgICAgU0NPUEVEX1RSQUNFKGkp
OworICAgIHMxW2ldLmMgPSBzMltpXS5jID0gJzAnICsgaTsKKyAgICBzMVtpXS5pID0gczJbaV0u
aSA9IGk7CisgICAgQVNTRVJUX0ZBTFNFKG1lbWNtcChidWZmZXIxICsgaSAqIHNpemVvZihTdHJ1
Y3RXaXRoUGFkZGluZyksCisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIyICsgaSAqIHNp
emVvZihTdHJ1Y3RXaXRoUGFkZGluZyksCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yo
U3RydWN0V2l0aFBhZGRpbmcpKSA9PSAwKQorICAgICAgICA8PCAiQnVnIGluIHRlc3QgY29kZTog
b2JqZWN0cyBkbyBub3QgaGF2ZSB1bmVxdWFsIgorICAgICAgICA8PCAiIG9iamVjdCByZXByZXNl
bnRhdGlvbnMiOworICB9CisKKyAgRVhQRUNUX0VRKEhhc2g8U3RydWN0V2l0aFBhZGRpbmc+KCko
czFbMF0pLCBIYXNoPFN0cnVjdFdpdGhQYWRkaW5nPigpKHMyWzBdKSk7CisgIEVYUEVDVF9FUShI
YXNoPEFycmF5U2xpY2U8U3RydWN0V2l0aFBhZGRpbmc+PigpKHtzMSwgczEgKyBrTnVtU3RydWN0
c30pLAorICAgICAgICAgICAgSGFzaDxBcnJheVNsaWNlPFN0cnVjdFdpdGhQYWRkaW5nPj4oKSh7
czIsIHMyICsga051bVN0cnVjdHN9KSk7Cit9CisKK1RFU1QoSGFzaFRlc3QsIFN0YW5kYXJkSGFz
aENvbnRhaW5lclVzYWdlKSB7CisgIHN0ZDo6dW5vcmRlcmVkX21hcDxpbnQsIHN0ZDo6c3RyaW5n
LCBIYXNoPGludD4+IG1hcCA9IHt7MCwgImZvbyJ9LCB7IDQyLCAiYmFyIiB9fTsKKworICBFWFBF
Q1RfTkUobWFwLmZpbmQoMCksIG1hcC5lbmQoKSk7CisgIEVYUEVDVF9FUShtYXAuZmluZCgxKSwg
bWFwLmVuZCgpKTsKKyAgRVhQRUNUX05FKG1hcC5maW5kKDB1KSwgbWFwLmVuZCgpKTsKK30KKwor
c3RydWN0IENvbnZlcnRpYmxlRnJvbU5vT3AgeworICBDb252ZXJ0aWJsZUZyb21Ob09wKE5vT3Ap
IHt9ICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIENvbnZlcnRpYmxlRnJv
bU5vT3ApIHsKKyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIDEp
OworICB9Cit9OworCitURVNUKEhhc2hUZXN0LCBIZXRlcm9nZW5lb3VzQ2FsbCkgeworICBFWFBF
Q1RfTkUoSGFzaDxDb252ZXJ0aWJsZUZyb21Ob09wPigpKE5vT3AoKSksCisgICAgICAgICAgICBI
YXNoPE5vT3A+KCkoTm9PcCgpKSk7Cit9CisKK1RFU1QoSXNVbmlxdWVseVJlcHJlc2VudGVkVGVz
dCwgU2FuaXR5VGVzdCkgeworICB1c2luZyBhYnNsOjpoYXNoX2ludGVybmFsOjppc191bmlxdWVs
eV9yZXByZXNlbnRlZDsKKworICBFWFBFQ1RfVFJVRShpc191bmlxdWVseV9yZXByZXNlbnRlZDx1
bnNpZ25lZCBjaGFyPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShpc191bmlxdWVseV9yZXByZXNl
bnRlZDxpbnQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShpc191bmlxdWVseV9yZXByZXNlbnRl
ZDxib29sPjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8
aW50Kj46OnZhbHVlKTsKK30KKworc3RydWN0IEludEFuZFN0cmluZyB7CisgIGludCBpOworICBz
dGQ6OnN0cmluZyBzOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNs
SGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgSW50QW5kU3RyaW5nIGludF9hbmRfc3RyaW5nKSB7Cisg
ICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBpbnRfYW5kX3N0cmlu
Zy5zLAorICAgICAgICAgICAgICAgICAgICAgIGludF9hbmRfc3RyaW5nLmkpOworICB9Cit9Owor
CitURVNUKEhhc2hUZXN0LCBTbWFsbFZhbHVlT242NEJ5dGVCb3VuZGFyeSkgeworICBIYXNoPElu
dEFuZFN0cmluZz4oKShJbnRBbmRTdHJpbmd7MCwgc3RkOjpzdHJpbmcoNjMsICcwJyl9KTsKK30K
Kworc3RydWN0IFR5cGVFcmFzZWQgeworICBzaXplX3QgbjsKKworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIGNvbnN0IFR5cGVF
cmFzZWQmIHYpIHsKKyAgICB2Lkhhc2hWYWx1ZShhYnNsOjpIYXNoU3RhdGU6OkNyZWF0ZSgmaGFz
aF9zdGF0ZSkpOworICAgIHJldHVybiBoYXNoX3N0YXRlOworICB9CisKKyAgdm9pZCBIYXNoVmFs
dWUoYWJzbDo6SGFzaFN0YXRlIHN0YXRlKSBjb25zdCB7CisgICAgYWJzbDo6SGFzaFN0YXRlOjpj
b21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIG4pOworICB9Cit9OworCitURVNUKEhhc2hUZXN0LCBU
eXBlRXJhc2VkKSB7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxUeXBlRXJhc2VkPjo6dmFs
dWUpKTsKKyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPHN0ZDo6cGFpcjxUeXBlRXJhc2VkLCBp
bnQ+Pjo6dmFsdWUpKTsKKworICBFWFBFQ1RfRVEoU3B5SGFzaChUeXBlRXJhc2Vkezd9KSwgU3B5
SGFzaChzaXplX3R7N30pKTsKKyAgRVhQRUNUX05FKFNweUhhc2goVHlwZUVyYXNlZHs3fSksIFNw
eUhhc2goc2l6ZV90ezEzfSkpOworCisgIEVYUEVDVF9FUShTcHlIYXNoKHN0ZDo6bWFrZV9wYWly
KFR5cGVFcmFzZWR7N30sIDE3KSksCisgICAgICAgICAgICBTcHlIYXNoKHN0ZDo6bWFrZV9wYWly
KHNpemVfdHs3fSwgMTcpKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvaGFzaC9oYXNoX3Rlc3RpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWUzY2RhNjQ0NjdkZmFiMGVlMTY2MWMwNzVmNjNjMDZiYzIxODAwZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgKQEAgLTAsMCArMSwzNzIgQEAKKy8v
IENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9IQVNI
X0hBU0hfVEVTVElOR19IXworI2RlZmluZSBBQlNMX0hBU0hfSEFTSF9URVNUSU5HX0hfCisKKyNp
bmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgorI2luY2x1ZGUgPHR1cGxlPgorI2luY2x1ZGUgPHR5
cGVfdHJhaXRzPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2hhc2gvaW50ZXJuYWwv
c3B5X2hhc2hfc3RhdGUuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNp
bmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvdmFy
aWFudC5oIgorCituYW1lc3BhY2UgYWJzbCB7CisKKy8vIFJ1biB0aGUgYWJzbDo6SGFzaCBhbGdv
cml0aG0gb3ZlciBhbGwgdGhlIGVsZW1lbnRzIHBhc3NlZCBpbiBhbmQgdmVyaWZ5IHRoYXQKKy8v
IHRoZWlyIGhhc2ggZXhwYW5zaW9uIGlzIGNvbmdydWVudCB3aXRoIHRoZWlyIGA9PWAgb3BlcmF0
b3IuCisvLworLy8gSXQgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIEVYUEVDVF9UUlVFLiBG
YWlsdXJlcyB3aWxsIG91dHB1dCBpbmZvcm1hdGlvbgorLy8gb24gd2hhdCByZXF1aXJlbWVudCBm
YWlsZWQgYW5kIG9uIHdoaWNoIG9iamVjdHMuCisvLworLy8gVXNlcnMgc2hvdWxkIHBhc3MgYSBj
b2xsZWN0aW9uIG9mIHR5cGVzIGFzIGVpdGhlciBhbiBpbml0aWFsaXplciBsaXN0IG9yIGEKKy8v
IGNvbnRhaW5lciBvZiBjYXNlcy4KKy8vCisvLyAgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5
cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoCisvLyAgICAgICB7djEsIHYyLCAuLi4sIHZO
fSkpOworLy8KKy8vICAgc3RkOjp2ZWN0b3I8TXlUeXBlPiBjYXNlczsKKy8vICAgLy8gRmlsbCBj
YXNlcy4uLgorLy8gICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xI
YXNoQ29ycmVjdGx5KGNhc2VzKSk7CisvLworLy8gVXNlcnMgY2FuIHBhc3MgYSB2YXJpZXR5IG9m
IHR5cGVzIGZvciB0ZXN0aW5nIGhldGVyb2dlbmVvdXMgbG9va3VwIHdpdGgKKy8vIGBzdGQ6Om1h
a2VfdHVwbGVgOgorLy8KKy8vICAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVu
dHNBYnNsSGFzaENvcnJlY3RseSgKKy8vICAgICAgIHN0ZDo6bWFrZV90dXBsZSh2MSwgdjIsIC4u
Liwgdk4pKSk7CisvLworLy8KKy8vIElkZWFsbHksIHRoZSB2YWx1ZXMgcGFzc2VkIHNob3VsZCBw
cm92aWRlIGVub3VnaCBjb3ZlcmFnZSBvZiB0aGUgYD09YAorLy8gb3BlcmF0b3IgYW5kIHRoZSBB
YnNsSGFzaFZhbHVlIGltcGxlbWVudGF0aW9ucy4KKy8vIEZvciBkeW5hbWljYWxseSBzaXplZCB0
eXBlcywgdGhlIGVtcHR5IHN0YXRlIHNob3VsZCB1c3VhbGx5IGJlIGluY2x1ZGVkIGluCisvLyB0
aGUgdmFsdWVzLgorLy8KKy8vIFRoZSBmdW5jdGlvbiBhY2NlcHRzIGFuIG9wdGlvbmFsIGNvbXBh
cmF0b3IgZnVuY3Rpb24sIGluIGNhc2UgdGhhdCBgPT1gIGlzCisvLyBub3QgZW5vdWdoIGZvciB0
aGUgdmFsdWVzIHByb3ZpZGVkLgorLy8KKy8vIFVzYWdlOgorLy8KKy8vICAgRVhQRUNUX1RSVUUo
YWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKy8vICAgICAgIHN0
ZDo6bWFrZV90dXBsZSh2MSwgdjIsIC4uLiwgdk4pLCBNeUN1c3RvbUVxe30pKTsKKy8vCisvLyBJ
dCBjaGVja3MgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHM6CisvLyAgIDEuIFRoZSBleHBhbnNp
b24gZm9yIGEgdmFsdWUgaXMgZGV0ZXJtaW5pc3RpYy4KKy8vICAgMi4gRm9yIGFueSB0d28gb2Jq
ZWN0cyBgYWAgYW5kIGBiYCBpbiB0aGUgc2VxdWVuY2UsIGlmIGBhID09IGJgIGV2YWx1YXRlcwor
Ly8gICAgICB0byB0cnVlLCB0aGVuIHRoZWlyIGhhc2ggZXhwYW5zaW9uIG11c3QgYmUgZXF1YWwu
CisvLyAgIDMuIElmIGBhID09IGJgIGV2YWx1YXRlcyB0byBmYWxzZSB0aGVpciBoYXNoIGV4cGFu
c2lvbiBtdXN0IGJlIHVuZXF1YWwuCisvLyAgIDQuIElmIGBhID09IGJgIGV2YWx1YXRlcyB0byBm
YWxzZSBuZWl0aGVyIGhhc2ggZXhwYW5zaW9uIGNhbiBiZSBhCisvLyAgICAgIHN1ZmZpeCBvZiB0
aGUgb3RoZXIuCisvLyAgIDUuIEFic2xIYXNoVmFsdWUgb3ZlcmxvYWRzIHNob3VsZCBub3QgYmUg
Y2FsbGVkIGJ5IHRoZSB1c2VyLiBUaGV5IGFyZSBvbmx5CisvLyAgICAgIG1lYW50IHRvIGJlIGNh
bGxlZCBieSB0aGUgZnJhbWV3b3JrLiBVc2VycyBzaG91bGQgY2FsbCBIOjpjb21iaW5lKCkgYW5k
CisvLyAgICAgIEg6OmNvbWJpbmVfY29udGlndW91cygpLgorLy8gICA2LiBObyBtb3ZlZC1mcm9t
IGluc3RhbmNlIG9mIHRoZSBoYXNoIHN0YXRlIGlzIHVzZWQgaW4gdGhlIGltcGxlbWVudGF0aW9u
CisvLyAgICAgIG9mIEFic2xIYXNoVmFsdWUuCisvLworLy8gVGhlIHZhbHVlcyBkbyBub3QgaGF2
ZSB0byBoYXZlIHRoZSBzYW1lIHR5cGUuIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IKKy8vIGVxdWl2
YWxlbnQgdHlwZXMgdGhhdCBzdXBwb3J0IGhldGVyb2dlbmVvdXMgbG9va3VwLgorLy8KKy8vIEEg
cG9zc2libGUgcmVhc29uIGZvciBicmVha2luZyAoMikgaXMgY29tYmluaW5nIHN0YXRlIGluIHRo
ZSBoYXNoIGV4cGFuc2lvbgorLy8gdGhhdCB3YXMgbm90IHVzZWQgaW4gYD09YC4KKy8vIEZvciBl
eGFtcGxlOgorLy8KKy8vIHN0cnVjdCBCYWQyIHsKKy8vICAgaW50IGEsIGI7CisvLyAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBIPgorLy8gICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggc3RhdGUsIEJh
ZDIgeCkgeworLy8gICAgIC8vIFVzZXMgYSBhbmQgYi4KKy8vICAgICByZXR1cm4gSDo6Y29tYmlu
ZSh4LmEsIHguYik7CisvLyAgIH0KKy8vICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShCYWQyIHgs
IEJhZDIgeSkgeworLy8gICAgIC8vIE9ubHkgdXNlcyBhLgorLy8gICAgIHJldHVybiB4LmEgPT0g
eS5hOworLy8gICB9CisvLyB9OworLy8KKy8vIEFzIGZvciAoMyksIGJyZWFraW5nIHRoaXMgdXN1
YWxseSBtZWFucyB0aGF0IHRoZXJlIGlzIHN0YXRlIGJlaW5nIHBhc3NlZCB0bworLy8gdGhlIGA9
PWAgb3BlcmF0b3IgdGhhdCBpcyBub3QgdXNlZCBpbiB0aGUgaGFzaCBleHBhbnNpb24uCisvLyBG
b3IgZXhhbXBsZToKKy8vCisvLyBzdHJ1Y3QgQmFkMyB7CisvLyAgIGludCBhLCBiOworLy8gICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKy8vICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRl
LCBCYWQzIHgpIHsKKy8vICAgICAvLyBPbmx5IHVzZXMgYS4KKy8vICAgICByZXR1cm4gSDo6Y29t
YmluZSh4LmEpOworLy8gICB9CisvLyAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oQmFkMyB4LCBC
YWQzIHkpIHsKKy8vICAgICAvLyBVc2VzIGEgYW5kIGIuCisvLyAgICAgcmV0dXJuIHguYSA9PSB5
LmEgJiYgeC5iID09IHkuYjsKKy8vICAgfQorLy8gfTsKKy8vCisvLyBGaW5hbGx5LCBhIGNvbW1v
biB3YXkgdG8gYnJlYWsgNCBpcyBieSBjb21iaW5pbmcgZHluYW1pYyByYW5nZXMgd2l0aG91dAor
Ly8gY29tYmluaW5nIHRoZSBzaXplIG9mIHRoZSByYW5nZS4KKy8vIEZvciBleGFtcGxlOgorLy8K
Ky8vIHN0cnVjdCBCYWQ0IHsKKy8vICAgaW50ICpwLCBzaXplOworLy8gICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSD4KKy8vICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBCYWQ0IHgpIHsK
Ky8vICAgICByZXR1cm4gSDo6Y29tYmluZV9yYW5nZSh4LnAsIHgucCArIHguc2l6ZSk7CisvLyAg
IH0KKy8vICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShCYWQ0IHgsIEJhZDQgeSkgeworLy8gICAg
IHJldHVybiBzdGQ6OmVxdWFsKHgucCwgeC5wICsgeC5zaXplLCB5LnAsIHkucCArIHkuc2l6ZSk7
CisvLyAgIH0KKy8vIH07CisvLworLy8gQW4gZWFzeSBzb2x1dGlvbiB0byB0aGlzIGlzIHRvIGNv
bWJpbmUgdGhlIHNpemUgYWZ0ZXIgY29tYmluaW5nIHRoZSByYW5nZSwKKy8vIGxpa2Ugc286Cisv
LyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorLy8gICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEgg
c3RhdGUsIEJhZDQgeCkgeworLy8gICAgIHJldHVybiBIOjpjb21iaW5lKEg6OmNvbWJpbmVfcmFu
Z2UoeC5wLCB4LnAgKyB4LnNpemUpLCB4LnNpemUpOworLy8gICB9CisvLwordGVtcGxhdGUgPGlu
dCYuLi4gRXhwbGljaXRCYXJyaWVyLCB0eXBlbmFtZSBDb250YWluZXI+CitBQlNMX01VU1RfVVNF
X1JFU1VMVCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQKK1ZlcmlmeVR5cGVJbXBsZW1lbnRzQWJz
bEhhc2hDb3JyZWN0bHkoY29uc3QgQ29udGFpbmVyJiB2YWx1ZXMpOworCit0ZW1wbGF0ZSA8aW50
Ji4uLiBFeHBsaWNpdEJhcnJpZXIsIHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgRXE+CitB
QlNMX01VU1RfVVNFX1JFU1VMVCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQKK1ZlcmlmeVR5cGVJ
bXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoY29uc3QgQ29udGFpbmVyJiB2YWx1ZXMsIEVxIGVx
dWFscyk7CisKK3RlbXBsYXRlIDxpbnQmLi4uLCB0eXBlbmFtZSBUPgorQUJTTF9NVVNUX1VTRV9S
RVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xI
YXNoQ29ycmVjdGx5KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1ZXMpOworCit0ZW1wbGF0
ZSA8aW50Ji4uLiwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXE+CitBQlNMX01VU1RfVVNFX1JFU1VM
VCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQKK1ZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hD
b3JyZWN0bHkoc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXEgZXF1YWxzKTsKKworbmFtZXNwYWNlIGhhc2hfaW50
ZXJuYWwgeworCitzdHJ1Y3QgUHJpbnRWaXNpdG9yIHsKKyAgc2l6ZV90IGluZGV4OworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25zdCBUKiB2YWx1
ZSkgY29uc3QgeworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoIiMiLCBpbmRleCwgIigiLCB0ZXN0
aW5nOjpQcmludFRvU3RyaW5nKCp2YWx1ZSksICIpIik7CisgIH0KK307CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBFcT4KK3N0cnVjdCBFcVZpc2l0b3IgeworICBFcSBlcTsKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUKiB0LCBjb25z
dCBVKiB1KSBjb25zdCB7CisgICAgcmV0dXJuIGVxKCp0LCAqdSk7CisgIH0KK307CisKK3N0cnVj
dCBFeHBhbmRWaXNpdG9yIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIFNweUhhc2hTdGF0
ZSBvcGVyYXRvcigpKGNvbnN0IFQqIHZhbHVlKSBjb25zdCB7CisgICAgcmV0dXJuIFNweUhhc2hT
dGF0ZTo6Y29tYmluZShTcHlIYXNoU3RhdGUoKSwgKnZhbHVlKTsKKyAgfQorfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgRXE+CitBQlNMX01VU1RfVVNFX1JFU1VM
VCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQKK1ZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hD
b3JyZWN0bHkoY29uc3QgQ29udGFpbmVyJiB2YWx1ZXMsIEVxIGVxdWFscykgeworICB1c2luZyBW
ID0gdHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlOworCisgIHN0cnVjdCBJbmZvIHsKKyAg
ICBjb25zdCBWJiB2YWx1ZTsKKyAgICBzaXplX3QgaW5kZXg7CisgICAgc3RkOjpzdHJpbmcgVG9T
dHJpbmcoKSBjb25zdCB7IHJldHVybiBhYnNsOjp2aXNpdChQcmludFZpc2l0b3J7aW5kZXh9LCB2
YWx1ZSk7IH0KKyAgICBTcHlIYXNoU3RhdGUgZXhwYW5kKCkgY29uc3QgeyByZXR1cm4gYWJzbDo6
dmlzaXQoRXhwYW5kVmlzaXRvcnt9LCB2YWx1ZSk7IH0KKyAgfTsKKworICB1c2luZyBFcUNsYXNz
ID0gc3RkOjp2ZWN0b3I8SW5mbz47CisgIHN0ZDo6dmVjdG9yPEVxQ2xhc3M+IGNsYXNzZXM7CisK
KyAgLy8gR2F0aGVyIHRoZSB2YWx1ZXMgaW4gZXF1aXZhbGVuY2UgY2xhc3Nlcy4KKyAgc2l6ZV90
IGkgPSAwOworICBmb3IgKGNvbnN0IGF1dG8mIHZhbHVlIDogdmFsdWVzKSB7CisgICAgRXFDbGFz
cyogYyA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiBlcWNsYXNzIDogY2xhc3NlcykgeworICAg
ICAgaWYgKGFic2w6OnZpc2l0KEVxVmlzaXRvcjxFcT57ZXF1YWxzfSwgdmFsdWUsIGVxY2xhc3Nb
MF0udmFsdWUpKSB7CisgICAgICAgIGMgPSAmZXFjbGFzczsKKyAgICAgICAgYnJlYWs7CisgICAg
ICB9CisgICAgfQorICAgIGlmIChjID09IG51bGxwdHIpIHsKKyAgICAgIGNsYXNzZXMuZW1wbGFj
ZV9iYWNrKCk7CisgICAgICBjID0gJmNsYXNzZXMuYmFjaygpOworICAgIH0KKyAgICBjLT5wdXNo
X2JhY2soe3ZhbHVlLCBpfSk7CisgICAgKytpOworCisgICAgLy8gVmVyaWZ5IHBvdGVudGlhbCBl
cnJvcnMgY2FwdHVyZWQgYnkgU3B5SGFzaFN0YXRlLgorICAgIGlmIChhdXRvIGVycm9yID0gYy0+
YmFjaygpLmV4cGFuZCgpLmVycm9yKCkpIHsKKyAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRp
b25GYWlsdXJlKCkgPDwgKmVycm9yOworICAgIH0KKyAgfQorCisgIGlmIChjbGFzc2VzLnNpemUo
KSA8IDIpIHsKKyAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICAg
ICAgIDw8ICJBdCBsZWFzdCB0d28gZXF1aXZhbGVuY2UgY2xhc3NlcyBhcmUgZXhwZWN0ZWQuIjsK
KyAgfQorCisgIC8vIFdlIGFzc3VtZSB0aGF0IGVxdWFsaXR5IGlzIGNvcnJlY3RseSBpbXBsZW1l
bnRlZC4KKyAgLy8gTm93IHdlIHZlcmlmeSB0aGF0IEFic2xIYXNoVmFsdWUgaXMgYWxzbyBjb3Jy
ZWN0bHkgaW1wbGVtZW50ZWQuCisKKyAgZm9yIChjb25zdCBhdXRvJiBjIDogY2xhc3Nlcykgewor
ICAgIC8vIEFsbCBlbGVtZW50cyBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3MgbXVzdCBoYXZlIHRo
ZSBzYW1lIGhhc2ggZXhwYW5zaW9uLgorICAgIGNvbnN0IFNweUhhc2hTdGF0ZSBleHBlY3RlZCA9
IGNbMF0uZXhwYW5kKCk7CisgICAgZm9yIChjb25zdCBJbmZvJiB2IDogYykgeworICAgICAgaWYg
KHYuZXhwYW5kKCkgIT0gdi5leHBhbmQoKSkgeworICAgICAgICByZXR1cm4gdGVzdGluZzo6QXNz
ZXJ0aW9uRmFpbHVyZSgpCisgICAgICAgICAgICAgICA8PCAiSGFzaCBleHBhbnNpb24gZm9yICIg
PDwgdi5Ub1N0cmluZygpCisgICAgICAgICAgICAgICA8PCAiIGlzIG5vbi1kZXRlcm1pbmlzdGlj
LiI7CisgICAgICB9CisgICAgICBpZiAodi5leHBhbmQoKSAhPSBleHBlY3RlZCkgeworICAgICAg
ICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICAgICAgICAgICA8PCAi
VmFsdWVzICIgPDwgY1swXS5Ub1N0cmluZygpIDw8ICIgYW5kICIgPDwgdi5Ub1N0cmluZygpCisg
ICAgICAgICAgICAgICA8PCAiIGV2YWx1YXRlIGFzIGVxdWFsIGJ1dCBoYXZlIGFuIHVuZXF1YWwg
aGFzaCBleHBhbnNpb24uIjsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbGVtZW50cyBmcm9t
IG90aGVyIGNsYXNzZXMgbXVzdCBoYXZlIGRpZmZlcmVudCBoYXNoIGV4cGFuc2lvbi4KKyAgICBm
b3IgKGNvbnN0IGF1dG8mIGMyIDogY2xhc3NlcykgeworICAgICAgaWYgKCZjID09ICZjMikgY29u
dGludWU7CisgICAgICBjb25zdCBTcHlIYXNoU3RhdGUgYzJfaGFzaCA9IGMyWzBdLmV4cGFuZCgp
OworICAgICAgc3dpdGNoIChTcHlIYXNoU3RhdGU6OkNvbXBhcmUoZXhwZWN0ZWQsIGMyX2hhc2gp
KSB7CisgICAgICAgIGNhc2UgU3B5SGFzaFN0YXRlOjpDb21wYXJlUmVzdWx0OjprRXF1YWw6Cisg
ICAgICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgICAgICAg
ICAgICA8PCAiVmFsdWVzICIgPDwgY1swXS5Ub1N0cmluZygpIDw8ICIgYW5kICIgPDwgYzJbMF0u
VG9TdHJpbmcoKQorICAgICAgICAgICAgICAgICA8PCAiIGV2YWx1YXRlIGFzIHVuZXF1YWwgYnV0
IGhhdmUgYW4gZXF1YWwgaGFzaCBleHBhbnNpb24uIjsKKyAgICAgICAgY2FzZSBTcHlIYXNoU3Rh
dGU6OkNvbXBhcmVSZXN1bHQ6OmtCU3VmZml4QToKKyAgICAgICAgICByZXR1cm4gdGVzdGluZzo6
QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICAgICAgICAgICAgIDw8ICJIYXNoIGV4cGFuc2lvbiBv
ZiAiIDw8IGMyWzBdLlRvU3RyaW5nKCkKKyAgICAgICAgICAgICAgICAgPDwgIiBpcyBhIHN1ZmZp
eCBvZiB0aGUgaGFzaCBleHBhbnNpb24gb2YgIiA8PCBjWzBdLlRvU3RyaW5nKCkKKyAgICAgICAg
ICAgICAgICAgPDwgIi4iOworICAgICAgICBjYXNlIFNweUhhc2hTdGF0ZTo6Q29tcGFyZVJlc3Vs
dDo6a0FTdWZmaXhCOgorICAgICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJl
KCkKKyAgICAgICAgICAgICAgICAgPDwgIkhhc2ggZXhwYW5zaW9uIG9mICIgPDwgY1swXS5Ub1N0
cmluZygpCisgICAgICAgICAgICAgICAgIDw8ICIgaXMgYSBzdWZmaXggb2YgdGhlIGhhc2ggZXhw
YW5zaW9uIG9mICIgPDwgYzJbMF0uVG9TdHJpbmcoKQorICAgICAgICAgICAgICAgICA8PCAiLiI7
CisgICAgICAgIGNhc2UgU3B5SGFzaFN0YXRlOjpDb21wYXJlUmVzdWx0OjprVW5lcXVhbDoKKyAg
ICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIHRlc3Rpbmc6OkFz
c2VydGlvblN1Y2Nlc3MoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQ+CitzdHJ1Y3Qg
VHlwZVNldCB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCBib29sID0gZGlzanVuY3Rpb248c3Rk
Ojppc19zYW1lPFQsIFU+Li4uPjo6dmFsdWU+CisgIHN0cnVjdCBJbnNlcnQgeworICAgIHVzaW5n
IHR5cGUgPSBUeXBlU2V0PFUsIFQuLi4+OworICB9OworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4K
KyAgc3RydWN0IEluc2VydDxVLCB0cnVlPiB7CisgICAgdXNpbmcgdHlwZSA9IFR5cGVTZXQ7Cisg
IH07CisKKyAgdGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBlbmFtZS4uLj4gY2xhc3MgQz4KKyAgdXNp
bmcgYXBwbHkgPSBDPFQuLi4+OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQ+CitzdHJ1
Y3QgTWFrZVR5cGVTZXQgOiBUeXBlU2V0PD57fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZS4uLiBUcz4KK3N0cnVjdCBNYWtlVHlwZVNldDxULCBUcy4uLj4gOiBNYWtlVHlwZVNldDxU
cy4uLj46OnRlbXBsYXRlIEluc2VydDxUPjo6dHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
Li4uIFQ+Cit1c2luZyBWYXJpYW50Rm9yVHlwZXMgPSB0eXBlbmFtZSBNYWtlVHlwZVNldDwKKyAg
ICBjb25zdCB0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlKi4uLj46OnRlbXBsYXRlIGFwcGx5
PGFic2w6OnZhcmlhbnQ+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgorc3RydWN0
IENvbnRhaW5lckFzVmVjdG9yIHsKKyAgdXNpbmcgViA9IGFic2w6OnZhcmlhbnQ8Y29uc3QgdHlw
ZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlKj47CisgIHVzaW5nIE91dCA9IHN0ZDo6dmVjdG9y
PFY+OworCisgIHN0YXRpYyBPdXQgRG8oY29uc3QgQ29udGFpbmVyJiB2YWx1ZXMpIHsKKyAgICBP
dXQgb3V0OworICAgIGZvciAoY29uc3QgYXV0byYgdiA6IHZhbHVlcykgb3V0LnB1c2hfYmFjaygm
dik7CisgICAgcmV0dXJuIG91dDsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQ+
CitzdHJ1Y3QgQ29udGFpbmVyQXNWZWN0b3I8c3RkOjp0dXBsZTxULi4uPj4geworICB1c2luZyBW
ID0gVmFyaWFudEZvclR5cGVzPFQuLi4+OworICB1c2luZyBPdXQgPSBzdGQ6OnZlY3RvcjxWPjsK
KworICB0ZW1wbGF0ZSA8c2l6ZV90Li4uIEk+CisgIHN0YXRpYyBPdXQgRG9JbXBsKGNvbnN0IHN0
ZDo6dHVwbGU8VC4uLj4mIHR1cGxlLCBhYnNsOjppbmRleF9zZXF1ZW5jZTxJLi4uPikgeworICAg
IHJldHVybiBPdXR7JnN0ZDo6Z2V0PEk+KHR1cGxlKS4uLn07CisgIH0KKworICBzdGF0aWMgT3V0
IERvKGNvbnN0IHN0ZDo6dHVwbGU8VC4uLj4mIHZhbHVlcykgeworICAgIHJldHVybiBEb0ltcGwo
dmFsdWVzLCBhYnNsOjppbmRleF9zZXF1ZW5jZV9mb3I8VC4uLj4oKSk7CisgIH0KK307CisKK3Rl
bXBsYXRlIDw+CitzdHJ1Y3QgQ29udGFpbmVyQXNWZWN0b3I8c3RkOjp0dXBsZTw+PiB7CisgIHN0
YXRpYyBzdGQ6OnZlY3RvcjxWYXJpYW50Rm9yVHlwZXM8aW50Pj4gRG8oc3RkOjp0dXBsZTw+KSB7
IHJldHVybiB7fTsgfQorfTsKKworc3RydWN0IERlZmF1bHRFcXVhbHMgeworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFQmIHQsIGNv
bnN0IFUmIHUpIGNvbnN0IHsKKyAgICByZXR1cm4gdCA9PSB1OworICB9Cit9OworCit9ICAvLyBu
YW1lc3BhY2UgaGFzaF9pbnRlcm5hbAorCit0ZW1wbGF0ZSA8aW50Ji4uLiwgdHlwZW5hbWUgQ29u
dGFpbmVyPgorQUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CitW
ZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KGNvbnN0IENvbnRhaW5lciYgdmFs
dWVzKSB7CisgIHJldHVybiBoYXNoX2ludGVybmFsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xI
YXNoQ29ycmVjdGx5KAorICAgICAgaGFzaF9pbnRlcm5hbDo6Q29udGFpbmVyQXNWZWN0b3I8Q29u
dGFpbmVyPjo6RG8odmFsdWVzKSwKKyAgICAgIGhhc2hfaW50ZXJuYWw6OkRlZmF1bHRFcXVhbHN7
fSk7Cit9CisKK3RlbXBsYXRlIDxpbnQmLi4uLCB0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1l
IEVxPgorQUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJp
ZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KGNvbnN0IENvbnRhaW5lciYgdmFsdWVz
LCBFcSBlcXVhbHMpIHsKKyAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6OlZlcmlmeVR5cGVJbXBsZW1l
bnRzQWJzbEhhc2hDb3JyZWN0bHkoCisgICAgICBoYXNoX2ludGVybmFsOjpDb250YWluZXJBc1Zl
Y3RvcjxDb250YWluZXI+OjpEbyh2YWx1ZXMpLAorICAgICAgZXF1YWxzKTsKK30KKwordGVtcGxh
dGUgPGludCYuLi4sIHR5cGVuYW1lIFQ+CitBQlNMX01VU1RfVVNFX1JFU1VMVCB0ZXN0aW5nOjpB
c3NlcnRpb25SZXN1bHQKK1ZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoc3Rk
Ojppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcykgeworICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6
VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIGhhc2hfaW50ZXJu
YWw6OkNvbnRhaW5lckFzVmVjdG9yPHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPj46OkRvKHZhbHVl
cyksCisgICAgICBoYXNoX2ludGVybmFsOjpEZWZhdWx0RXF1YWxze30pOworfQorCit0ZW1wbGF0
ZSA8aW50Ji4uLiwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXE+CitBQlNMX01VU1RfVVNFX1JFU1VM
VCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQKK1ZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hD
b3JyZWN0bHkoc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXEgZXF1YWxzKSB7CisgIHJldHVybiBoYXNoX2ludGVy
bmFsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAgICAgaGFzaF9p
bnRlcm5hbDo6Q29udGFpbmVyQXNWZWN0b3I8c3RkOjppbml0aWFsaXplcl9saXN0PFQ+Pjo6RG8o
dmFsdWVzKSwKKyAgICAgIGVxdWFscyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNl
bmRpZiAgLy8gQUJTTF9IQVNIX0hBU0hfVEVTVElOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFz
aC9pbnRlcm5hbC9jaXR5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhmNzJkZDFiN2QwYzlmNTM4ZDkxZDYyN2RmZjA2NjJlNGUwYzliMmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHkuY2MKQEAgLTAsMCArMSw1OTAgQEAKKy8v
IENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gVGhpcyBmaWxlIHBy
b3ZpZGVzIENpdHlIYXNoNjQoKSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCisvLworLy8gSXQncyBw
cm9iYWJseSBwb3NzaWJsZSB0byBjcmVhdGUgZXZlbiBmYXN0ZXIgaGFzaCBmdW5jdGlvbnMgYnkK
Ky8vIHdyaXRpbmcgYSBwcm9ncmFtIHRoYXQgc3lzdGVtYXRpY2FsbHkgZXhwbG9yZXMgc29tZSBv
ZiB0aGUgc3BhY2Ugb2YKKy8vIHBvc3NpYmxlIGhhc2ggZnVuY3Rpb25zLCBieSB1c2luZyBTSU1E
IGluc3RydWN0aW9ucywgb3IgYnkKKy8vIGNvbXByb21pc2luZyBvbiBoYXNoIHF1YWxpdHkuCisK
KyNpbmNsdWRlICJhYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5oIgorCisjaW5jbHVkZSA8c3RyaW5n
Lmg+ICAvLyBmb3IgbWVtY3B5IGFuZCBtZW1zZXQKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKKyNp
bmNsdWRlICJhYnNsL2Jhc2UvY29uZmlnLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFs
L2VuZGlhbi5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC91bmFsaWduZWRfYWNjZXNz
LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL29wdGltaXphdGlvbi5oIgorCituYW1lc3BhY2UgYWJz
bCB7CituYW1lc3BhY2UgaGFzaF9pbnRlcm5hbCB7CisKKyNpZmRlZiBBQlNMX0lTX0JJR19FTkRJ
QU4KKyNkZWZpbmUgdWludDMyX2luX2V4cGVjdGVkX29yZGVyKHgpIChhYnNsOjpnYnN3YXBfMzIo
eCkpCisjZGVmaW5lIHVpbnQ2NF9pbl9leHBlY3RlZF9vcmRlcih4KSAoYWJzbDo6Z2Jzd2FwXzY0
KHgpKQorI2Vsc2UKKyNkZWZpbmUgdWludDMyX2luX2V4cGVjdGVkX29yZGVyKHgpICh4KQorI2Rl
ZmluZSB1aW50NjRfaW5fZXhwZWN0ZWRfb3JkZXIoeCkgKHgpCisjZW5kaWYKKworc3RhdGljIHVp
bnQ2NF90IEZldGNoNjQoY29uc3QgY2hhciAqcCkgeworICByZXR1cm4gdWludDY0X2luX2V4cGVj
dGVkX29yZGVyKEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQ2NChwKSk7Cit9CisKK3N0YXRp
YyB1aW50MzJfdCBGZXRjaDMyKGNvbnN0IGNoYXIgKnApIHsKKyAgcmV0dXJuIHVpbnQzMl9pbl9l
eHBlY3RlZF9vcmRlcihBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMzIocCkpOworfQorCisv
LyBTb21lIHByaW1lcyBiZXR3ZWVuIDJeNjMgYW5kIDJeNjQgZm9yIHZhcmlvdXMgdXNlcy4KK3N0
YXRpYyBjb25zdCB1aW50NjRfdCBrMCA9IDB4YzNhNWM4NWM5N2NiMzEyN1VMTDsKK3N0YXRpYyBj
b25zdCB1aW50NjRfdCBrMSA9IDB4YjQ5MmI2NmZiZTk4ZjI3M1VMTDsKK3N0YXRpYyBjb25zdCB1
aW50NjRfdCBrMiA9IDB4OWFlMTZhM2IyZjkwNDA0ZlVMTDsKKworLy8gTWFnaWMgbnVtYmVycyBm
b3IgMzItYml0IGhhc2hpbmcuICBDb3BpZWQgZnJvbSBNdXJtdXIzLgorc3RhdGljIGNvbnN0IHVp
bnQzMl90IGMxID0gMHhjYzllMmQ1MTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBjMiA9IDB4MWI4
NzM1OTM7CisKKy8vIEEgMzItYml0IHRvIDMyLWJpdCBpbnRlZ2VyIGhhc2ggY29waWVkIGZyb20g
TXVybXVyMy4KK3N0YXRpYyB1aW50MzJfdCBmbWl4KHVpbnQzMl90IGgpIHsKKyAgaCBePSBoID4+
IDE2OworICBoICo9IDB4ODVlYmNhNmI7CisgIGggXj0gaCA+PiAxMzsKKyAgaCAqPSAweGMyYjJh
ZTM1OworICBoIF49IGggPj4gMTY7CisgIHJldHVybiBoOworfQorCitzdGF0aWMgdWludDMyX3Qg
Um90YXRlMzIodWludDMyX3QgdmFsLCBpbnQgc2hpZnQpIHsKKyAgLy8gQXZvaWQgc2hpZnRpbmcg
YnkgMzI6IGRvaW5nIHNvIHlpZWxkcyBhbiB1bmRlZmluZWQgcmVzdWx0LgorICByZXR1cm4gc2hp
ZnQgPT0gMCA/IHZhbCA6ICgodmFsID4+IHNoaWZ0KSB8ICh2YWwgPDwgKDMyIC0gc2hpZnQpKSk7
Cit9CisKKyN1bmRlZiBQRVJNVVRFMworI2RlZmluZSBQRVJNVVRFMyhhLCBiLCBjKSBcCisgIGRv
IHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGQ6OnN3YXAoYSwgYik7ICAgICAgXAorICAg
IHN0ZDo6c3dhcChhLCBjKTsgICAgICBcCisgIH0gd2hpbGUgKDApCisKK3N0YXRpYyB1aW50MzJf
dCBNdXIodWludDMyX3QgYSwgdWludDMyX3QgaCkgeworICAvLyBIZWxwZXIgZnJvbSBNdXJtdXIz
IGZvciBjb21iaW5pbmcgdHdvIDMyLWJpdCB2YWx1ZXMuCisgIGEgKj0gYzE7CisgIGEgPSBSb3Rh
dGUzMihhLCAxNyk7CisgIGEgKj0gYzI7CisgIGggXj0gYTsKKyAgaCA9IFJvdGF0ZTMyKGgsIDE5
KTsKKyAgcmV0dXJuIGggKiA1ICsgMHhlNjU0NmI2NDsKK30KKworc3RhdGljIHVpbnQzMl90IEhh
c2gzMkxlbjEzdG8yNChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7CisgIHVpbnQzMl90IGEg
PSBGZXRjaDMyKHMgLSA0ICsgKGxlbiA+PiAxKSk7CisgIHVpbnQzMl90IGIgPSBGZXRjaDMyKHMg
KyA0KTsKKyAgdWludDMyX3QgYyA9IEZldGNoMzIocyArIGxlbiAtIDgpOworICB1aW50MzJfdCBk
ID0gRmV0Y2gzMihzICsgKGxlbiA+PiAxKSk7CisgIHVpbnQzMl90IGUgPSBGZXRjaDMyKHMpOwor
ICB1aW50MzJfdCBmID0gRmV0Y2gzMihzICsgbGVuIC0gNCk7CisgIHVpbnQzMl90IGggPSBsZW47
CisKKyAgcmV0dXJuIGZtaXgoTXVyKGYsIE11cihlLCBNdXIoZCwgTXVyKGMsIE11cihiLCBNdXIo
YSwgaCkpKSkpKSk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBIYXNoMzJMZW4wdG80KGNvbnN0IGNo
YXIgKnMsIHNpemVfdCBsZW4pIHsKKyAgdWludDMyX3QgYiA9IDA7CisgIHVpbnQzMl90IGMgPSA5
OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgc2lnbmVkIGNoYXIg
diA9IHNbaV07CisgICAgYiA9IGIgKiBjMSArIHY7CisgICAgYyBePSBiOworICB9CisgIHJldHVy
biBmbWl4KE11cihiLCBNdXIobGVuLCBjKSkpOworfQorCitzdGF0aWMgdWludDMyX3QgSGFzaDMy
TGVuNXRvMTIoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikgeworICB1aW50MzJfdCBhID0gbGVu
LCBiID0gbGVuICogNSwgYyA9IDksIGQgPSBiOworICBhICs9IEZldGNoMzIocyk7CisgIGIgKz0g
RmV0Y2gzMihzICsgbGVuIC0gNCk7CisgIGMgKz0gRmV0Y2gzMihzICsgKChsZW4gPj4gMSkgJiA0
KSk7CisgIHJldHVybiBmbWl4KE11cihjLCBNdXIoYiwgTXVyKGEsIGQpKSkpOworfQorCit1aW50
MzJfdCBDaXR5SGFzaDMyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pIHsKKyAgaWYgKGxlbiA8
PSAyNCkgeworICAgIHJldHVybiBsZW4gPD0gMTIKKyAgICAgICAgICAgICAgID8gKGxlbiA8PSA0
ID8gSGFzaDMyTGVuMHRvNChzLCBsZW4pIDogSGFzaDMyTGVuNXRvMTIocywgbGVuKSkKKyAgICAg
ICAgICAgICAgIDogSGFzaDMyTGVuMTN0bzI0KHMsIGxlbik7CisgIH0KKworICAvLyBsZW4gPiAy
NAorICB1aW50MzJfdCBoID0gbGVuLCBnID0gYzEgKiBsZW4sIGYgPSBnOworCisgIHVpbnQzMl90
IGEwID0gUm90YXRlMzIoRmV0Y2gzMihzICsgbGVuIC0gNCkgKiBjMSwgMTcpICogYzI7CisgIHVp
bnQzMl90IGExID0gUm90YXRlMzIoRmV0Y2gzMihzICsgbGVuIC0gOCkgKiBjMSwgMTcpICogYzI7
CisgIHVpbnQzMl90IGEyID0gUm90YXRlMzIoRmV0Y2gzMihzICsgbGVuIC0gMTYpICogYzEsIDE3
KSAqIGMyOworICB1aW50MzJfdCBhMyA9IFJvdGF0ZTMyKEZldGNoMzIocyArIGxlbiAtIDEyKSAq
IGMxLCAxNykgKiBjMjsKKyAgdWludDMyX3QgYTQgPSBSb3RhdGUzMihGZXRjaDMyKHMgKyBsZW4g
LSAyMCkgKiBjMSwgMTcpICogYzI7CisgIGggXj0gYTA7CisgIGggPSBSb3RhdGUzMihoLCAxOSk7
CisgIGggPSBoICogNSArIDB4ZTY1NDZiNjQ7CisgIGggXj0gYTI7CisgIGggPSBSb3RhdGUzMiho
LCAxOSk7CisgIGggPSBoICogNSArIDB4ZTY1NDZiNjQ7CisgIGcgXj0gYTE7CisgIGcgPSBSb3Rh
dGUzMihnLCAxOSk7CisgIGcgPSBnICogNSArIDB4ZTY1NDZiNjQ7CisgIGcgXj0gYTM7CisgIGcg
PSBSb3RhdGUzMihnLCAxOSk7CisgIGcgPSBnICogNSArIDB4ZTY1NDZiNjQ7CisgIGYgKz0gYTQ7
CisgIGYgPSBSb3RhdGUzMihmLCAxOSk7CisgIGYgPSBmICogNSArIDB4ZTY1NDZiNjQ7CisgIHNp
emVfdCBpdGVycyA9IChsZW4gLSAxKSAvIDIwOworICBkbyB7CisgICAgdWludDMyX3QgYjAgPSBS
b3RhdGUzMihGZXRjaDMyKHMpICogYzEsIDE3KSAqIGMyOworICAgIHVpbnQzMl90IGIxID0gRmV0
Y2gzMihzICsgNCk7CisgICAgdWludDMyX3QgYjIgPSBSb3RhdGUzMihGZXRjaDMyKHMgKyA4KSAq
IGMxLCAxNykgKiBjMjsKKyAgICB1aW50MzJfdCBiMyA9IFJvdGF0ZTMyKEZldGNoMzIocyArIDEy
KSAqIGMxLCAxNykgKiBjMjsKKyAgICB1aW50MzJfdCBiNCA9IEZldGNoMzIocyArIDE2KTsKKyAg
ICBoIF49IGIwOworICAgIGggPSBSb3RhdGUzMihoLCAxOCk7CisgICAgaCA9IGggKiA1ICsgMHhl
NjU0NmI2NDsKKyAgICBmICs9IGIxOworICAgIGYgPSBSb3RhdGUzMihmLCAxOSk7CisgICAgZiA9
IGYgKiBjMTsKKyAgICBnICs9IGIyOworICAgIGcgPSBSb3RhdGUzMihnLCAxOCk7CisgICAgZyA9
IGcgKiA1ICsgMHhlNjU0NmI2NDsKKyAgICBoIF49IGIzICsgYjE7CisgICAgaCA9IFJvdGF0ZTMy
KGgsIDE5KTsKKyAgICBoID0gaCAqIDUgKyAweGU2NTQ2YjY0OworICAgIGcgXj0gYjQ7CisgICAg
ZyA9IGFic2w6Omdic3dhcF8zMihnKSAqIDU7CisgICAgaCArPSBiNCAqIDU7CisgICAgaCA9IGFi
c2w6Omdic3dhcF8zMihoKTsKKyAgICBmICs9IGIwOworICAgIFBFUk1VVEUzKGYsIGgsIGcpOwor
ICAgIHMgKz0gMjA7CisgIH0gd2hpbGUgKC0taXRlcnMgIT0gMCk7CisgIGcgPSBSb3RhdGUzMihn
LCAxMSkgKiBjMTsKKyAgZyA9IFJvdGF0ZTMyKGcsIDE3KSAqIGMxOworICBmID0gUm90YXRlMzIo
ZiwgMTEpICogYzE7CisgIGYgPSBSb3RhdGUzMihmLCAxNykgKiBjMTsKKyAgaCA9IFJvdGF0ZTMy
KGggKyBnLCAxOSk7CisgIGggPSBoICogNSArIDB4ZTY1NDZiNjQ7CisgIGggPSBSb3RhdGUzMiho
LCAxNykgKiBjMTsKKyAgaCA9IFJvdGF0ZTMyKGggKyBmLCAxOSk7CisgIGggPSBoICogNSArIDB4
ZTY1NDZiNjQ7CisgIGggPSBSb3RhdGUzMihoLCAxNykgKiBjMTsKKyAgcmV0dXJuIGg7Cit9CisK
Ky8vIEJpdHdpc2UgcmlnaHQgcm90YXRlLiAgTm9ybWFsbHkgdGhpcyB3aWxsIGNvbXBpbGUgdG8g
YSBzaW5nbGUKKy8vIGluc3RydWN0aW9uLCBlc3BlY2lhbGx5IGlmIHRoZSBzaGlmdCBpcyBhIG1h
bmlmZXN0IGNvbnN0YW50Lgorc3RhdGljIHVpbnQ2NF90IFJvdGF0ZSh1aW50NjRfdCB2YWwsIGlu
dCBzaGlmdCkgeworICAvLyBBdm9pZCBzaGlmdGluZyBieSA2NDogZG9pbmcgc28geWllbGRzIGFu
IHVuZGVmaW5lZCByZXN1bHQuCisgIHJldHVybiBzaGlmdCA9PSAwID8gdmFsIDogKCh2YWwgPj4g
c2hpZnQpIHwgKHZhbCA8PCAoNjQgLSBzaGlmdCkpKTsKK30KKworc3RhdGljIHVpbnQ2NF90IFNo
aWZ0TWl4KHVpbnQ2NF90IHZhbCkgeyByZXR1cm4gdmFsIF4gKHZhbCA+PiA0Nyk7IH0KKworc3Rh
dGljIHVpbnQ2NF90IEhhc2hMZW4xNih1aW50NjRfdCB1LCB1aW50NjRfdCB2KSB7CisgIHJldHVy
biBIYXNoMTI4dG82NCh1aW50MTI4KHUsIHYpKTsKK30KKworc3RhdGljIHVpbnQ2NF90IEhhc2hM
ZW4xNih1aW50NjRfdCB1LCB1aW50NjRfdCB2LCB1aW50NjRfdCBtdWwpIHsKKyAgLy8gTXVybXVy
LWluc3BpcmVkIGhhc2hpbmcuCisgIHVpbnQ2NF90IGEgPSAodSBeIHYpICogbXVsOworICBhIF49
IChhID4+IDQ3KTsKKyAgdWludDY0X3QgYiA9ICh2IF4gYSkgKiBtdWw7CisgIGIgXj0gKGIgPj4g
NDcpOworICBiICo9IG11bDsKKyAgcmV0dXJuIGI7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBIYXNo
TGVuMHRvMTYoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikgeworICBpZiAobGVuID49IDgpIHsK
KyAgICB1aW50NjRfdCBtdWwgPSBrMiArIGxlbiAqIDI7CisgICAgdWludDY0X3QgYSA9IEZldGNo
NjQocykgKyBrMjsKKyAgICB1aW50NjRfdCBiID0gRmV0Y2g2NChzICsgbGVuIC0gOCk7CisgICAg
dWludDY0X3QgYyA9IFJvdGF0ZShiLCAzNykgKiBtdWwgKyBhOworICAgIHVpbnQ2NF90IGQgPSAo
Um90YXRlKGEsIDI1KSArIGIpICogbXVsOworICAgIHJldHVybiBIYXNoTGVuMTYoYywgZCwgbXVs
KTsKKyAgfQorICBpZiAobGVuID49IDQpIHsKKyAgICB1aW50NjRfdCBtdWwgPSBrMiArIGxlbiAq
IDI7CisgICAgdWludDY0X3QgYSA9IEZldGNoMzIocyk7CisgICAgcmV0dXJuIEhhc2hMZW4xNihs
ZW4gKyAoYSA8PCAzKSwgRmV0Y2gzMihzICsgbGVuIC0gNCksIG11bCk7CisgIH0KKyAgaWYgKGxl
biA+IDApIHsKKyAgICB1aW50OF90IGEgPSBzWzBdOworICAgIHVpbnQ4X3QgYiA9IHNbbGVuID4+
IDFdOworICAgIHVpbnQ4X3QgYyA9IHNbbGVuIC0gMV07CisgICAgdWludDMyX3QgeSA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihhKSArIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYikgPDwgOCk7Cisg
ICAgdWludDMyX3QgeiA9IGxlbiArIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYykgPDwgMik7Cisg
ICAgcmV0dXJuIFNoaWZ0TWl4KHkgKiBrMiBeIHogKiBrMCkgKiBrMjsKKyAgfQorICByZXR1cm4g
azI7Cit9CisKKy8vIFRoaXMgcHJvYmFibHkgd29ya3Mgd2VsbCBmb3IgMTYtYnl0ZSBzdHJpbmdz
IGFzIHdlbGwsIGJ1dCBpdCBtYXkgYmUgb3ZlcmtpbGwKKy8vIGluIHRoYXQgY2FzZS4KK3N0YXRp
YyB1aW50NjRfdCBIYXNoTGVuMTd0bzMyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pIHsKKyAg
dWludDY0X3QgbXVsID0gazIgKyBsZW4gKiAyOworICB1aW50NjRfdCBhID0gRmV0Y2g2NChzKSAq
IGsxOworICB1aW50NjRfdCBiID0gRmV0Y2g2NChzICsgOCk7CisgIHVpbnQ2NF90IGMgPSBGZXRj
aDY0KHMgKyBsZW4gLSA4KSAqIG11bDsKKyAgdWludDY0X3QgZCA9IEZldGNoNjQocyArIGxlbiAt
IDE2KSAqIGsyOworICByZXR1cm4gSGFzaExlbjE2KFJvdGF0ZShhICsgYiwgNDMpICsgUm90YXRl
KGMsIDMwKSArIGQsCisgICAgICAgICAgICAgICAgICAgYSArIFJvdGF0ZShiICsgazIsIDE4KSAr
IGMsIG11bCk7Cit9CisKKy8vIFJldHVybiBhIDE2LWJ5dGUgaGFzaCBmb3IgNDggYnl0ZXMuICBR
dWljayBhbmQgZGlydHkuCisvLyBDYWxsZXJzIGRvIGJlc3QgdG8gdXNlICJyYW5kb20tbG9va2lu
ZyIgdmFsdWVzIGZvciBhIGFuZCBiLgorc3RhdGljIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0
X3Q+IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHModWludDY0X3QgdywgdWludDY0X3QgeCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0
X3QgeSwgdWludDY0X3QgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDY0X3QgYSwgdWludDY0X3QgYikgeworICBhICs9IHc7Cisg
IGIgPSBSb3RhdGUoYiArIGEgKyB6LCAyMSk7CisgIHVpbnQ2NF90IGMgPSBhOworICBhICs9IHg7
CisgIGEgKz0geTsKKyAgYiArPSBSb3RhdGUoYSwgNDQpOworICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoYSArIHosIGIgKyBjKTsKK30KKworLy8gUmV0dXJuIGEgMTYtYnl0ZSBoYXNoIGZvciBzWzBd
IC4uLiBzWzMxXSwgYSwgYW5kIGIuICBRdWljayBhbmQgZGlydHkuCitzdGF0aWMgc3RkOjpwYWly
PHVpbnQ2NF90LCB1aW50NjRfdD4gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhjb25zdCBjaGFyICpz
LCB1aW50NjRfdCBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50NjRfdCBiKSB7CisgIHJldHVybiBXZWFrSGFzaExlbjMyV2l0aFNl
ZWRzKEZldGNoNjQocyksIEZldGNoNjQocyArIDgpLCBGZXRjaDY0KHMgKyAxNiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZldGNoNjQocyArIDI0KSwgYSwgYik7Cit9CisKKy8v
IFJldHVybiBhbiA4LWJ5dGUgaGFzaCBmb3IgMzMgdG8gNjQgYnl0ZXMuCitzdGF0aWMgdWludDY0
X3QgSGFzaExlbjMzdG82NChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7CisgIHVpbnQ2NF90
IG11bCA9IGsyICsgbGVuICogMjsKKyAgdWludDY0X3QgYSA9IEZldGNoNjQocykgKiBrMjsKKyAg
dWludDY0X3QgYiA9IEZldGNoNjQocyArIDgpOworICB1aW50NjRfdCBjID0gRmV0Y2g2NChzICsg
bGVuIC0gMjQpOworICB1aW50NjRfdCBkID0gRmV0Y2g2NChzICsgbGVuIC0gMzIpOworICB1aW50
NjRfdCBlID0gRmV0Y2g2NChzICsgMTYpICogazI7CisgIHVpbnQ2NF90IGYgPSBGZXRjaDY0KHMg
KyAyNCkgKiA5OworICB1aW50NjRfdCBnID0gRmV0Y2g2NChzICsgbGVuIC0gOCk7CisgIHVpbnQ2
NF90IGggPSBGZXRjaDY0KHMgKyBsZW4gLSAxNikgKiBtdWw7CisgIHVpbnQ2NF90IHUgPSBSb3Rh
dGUoYSArIGcsIDQzKSArIChSb3RhdGUoYiwgMzApICsgYykgKiA5OworICB1aW50NjRfdCB2ID0g
KChhICsgZykgXiBkKSArIGYgKyAxOworICB1aW50NjRfdCB3ID0gYWJzbDo6Z2Jzd2FwXzY0KCh1
ICsgdikgKiBtdWwpICsgaDsKKyAgdWludDY0X3QgeCA9IFJvdGF0ZShlICsgZiwgNDIpICsgYzsK
KyAgdWludDY0X3QgeSA9IChhYnNsOjpnYnN3YXBfNjQoKHYgKyB3KSAqIG11bCkgKyBnKSAqIG11
bDsKKyAgdWludDY0X3QgeiA9IGUgKyBmICsgYzsKKyAgYSA9IGFic2w6Omdic3dhcF82NCgoeCAr
IHopICogbXVsICsgeSkgKyBiOworICBiID0gU2hpZnRNaXgoKHogKyBhKSAqIG11bCArIGQgKyBo
KSAqIG11bDsKKyAgcmV0dXJuIGIgKyB4OworfQorCit1aW50NjRfdCBDaXR5SGFzaDY0KGNvbnN0
IGNoYXIgKnMsIHNpemVfdCBsZW4pIHsKKyAgaWYgKGxlbiA8PSAzMikgeworICAgIGlmIChsZW4g
PD0gMTYpIHsKKyAgICAgIHJldHVybiBIYXNoTGVuMHRvMTYocywgbGVuKTsKKyAgICB9IGVsc2Ug
eworICAgICAgcmV0dXJuIEhhc2hMZW4xN3RvMzIocywgbGVuKTsKKyAgICB9CisgIH0gZWxzZSBp
ZiAobGVuIDw9IDY0KSB7CisgICAgcmV0dXJuIEhhc2hMZW4zM3RvNjQocywgbGVuKTsKKyAgfQor
CisgIC8vIEZvciBzdHJpbmdzIG92ZXIgNjQgYnl0ZXMgd2UgaGFzaCB0aGUgZW5kIGZpcnN0LCBh
bmQgdGhlbiBhcyB3ZQorICAvLyBsb29wIHdlIGtlZXAgNTYgYnl0ZXMgb2Ygc3RhdGU6IHYsIHcs
IHgsIHksIGFuZCB6LgorICB1aW50NjRfdCB4ID0gRmV0Y2g2NChzICsgbGVuIC0gNDApOworICB1
aW50NjRfdCB5ID0gRmV0Y2g2NChzICsgbGVuIC0gMTYpICsgRmV0Y2g2NChzICsgbGVuIC0gNTYp
OworICB1aW50NjRfdCB6ID0gSGFzaExlbjE2KEZldGNoNjQocyArIGxlbiAtIDQ4KSArIGxlbiwg
RmV0Y2g2NChzICsgbGVuIC0gMjQpKTsKKyAgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4g
diA9IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMocyArIGxlbiAtIDY0LCBsZW4sIHopOworICBzdGQ6
OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiB3ID0gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhzICsg
bGVuIC0gMzIsIHkgKyBrMSwgeCk7CisgIHggPSB4ICogazEgKyBGZXRjaDY0KHMpOworCisgIC8v
IERlY3JlYXNlIGxlbiB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiA2NCwgYW5kIG9wZXJhdGUg
b24gNjQtYnl0ZSBjaHVua3MuCisgIGxlbiA9IChsZW4gLSAxKSAmIH5zdGF0aWNfY2FzdDxzaXpl
X3Q+KDYzKTsKKyAgZG8geworICAgIHggPSBSb3RhdGUoeCArIHkgKyB2LmZpcnN0ICsgRmV0Y2g2
NChzICsgOCksIDM3KSAqIGsxOworICAgIHkgPSBSb3RhdGUoeSArIHYuc2Vjb25kICsgRmV0Y2g2
NChzICsgNDgpLCA0MikgKiBrMTsKKyAgICB4IF49IHcuc2Vjb25kOworICAgIHkgKz0gdi5maXJz
dCArIEZldGNoNjQocyArIDQwKTsKKyAgICB6ID0gUm90YXRlKHogKyB3LmZpcnN0LCAzMykgKiBr
MTsKKyAgICB2ID0gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhzLCB2LnNlY29uZCAqIGsxLCB4ICsg
dy5maXJzdCk7CisgICAgdyA9IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMocyArIDMyLCB6ICsgdy5z
ZWNvbmQsIHkgKyBGZXRjaDY0KHMgKyAxNikpOworICAgIHN0ZDo6c3dhcCh6LCB4KTsKKyAgICBz
ICs9IDY0OworICAgIGxlbiAtPSA2NDsKKyAgfSB3aGlsZSAobGVuICE9IDApOworICByZXR1cm4g
SGFzaExlbjE2KEhhc2hMZW4xNih2LmZpcnN0LCB3LmZpcnN0KSArIFNoaWZ0TWl4KHkpICogazEg
KyB6LAorICAgICAgICAgICAgICAgICAgIEhhc2hMZW4xNih2LnNlY29uZCwgdy5zZWNvbmQpICsg
eCk7Cit9CisKK3VpbnQ2NF90IENpdHlIYXNoNjRXaXRoU2VlZChjb25zdCBjaGFyICpzLCBzaXpl
X3QgbGVuLCB1aW50NjRfdCBzZWVkKSB7CisgIHJldHVybiBDaXR5SGFzaDY0V2l0aFNlZWRzKHMs
IGxlbiwgazIsIHNlZWQpOworfQorCit1aW50NjRfdCBDaXR5SGFzaDY0V2l0aFNlZWRzKGNvbnN0
IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90IHNlZWQwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDY0X3Qgc2VlZDEpIHsKKyAgcmV0dXJuIEhhc2hMZW4xNihDaXR5SGFzaDY0
KHMsIGxlbikgLSBzZWVkMCwgc2VlZDEpOworfQorCisvLyBBIHN1YnJvdXRpbmUgZm9yIENpdHlI
YXNoMTI4KCkuICBSZXR1cm5zIGEgZGVjZW50IDEyOC1iaXQgaGFzaCBmb3Igc3RyaW5ncworLy8g
b2YgYW55IGxlbmd0aCByZXByZXNlbnRhYmxlIGluIHNpZ25lZCBsb25nLiAgQmFzZWQgb24gQ2l0
eSBhbmQgTXVybXVyLgorc3RhdGljIHVpbnQxMjggQ2l0eU11cm11cihjb25zdCBjaGFyICpzLCBz
aXplX3QgbGVuLCB1aW50MTI4IHNlZWQpIHsKKyAgdWludDY0X3QgYSA9IFVpbnQxMjhMb3c2NChz
ZWVkKTsKKyAgdWludDY0X3QgYiA9IFVpbnQxMjhIaWdoNjQoc2VlZCk7CisgIHVpbnQ2NF90IGMg
PSAwOworICB1aW50NjRfdCBkID0gMDsKKyAgaW50NjRfdCBsID0gbGVuIC0gMTY7CisgIGlmIChs
IDw9IDApIHsgIC8vIGxlbiA8PSAxNgorICAgIGEgPSBTaGlmdE1peChhICogazEpICogazE7Cisg
ICAgYyA9IGIgKiBrMSArIEhhc2hMZW4wdG8xNihzLCBsZW4pOworICAgIGQgPSBTaGlmdE1peChh
ICsgKGxlbiA+PSA4ID8gRmV0Y2g2NChzKSA6IGMpKTsKKyAgfSBlbHNlIHsgIC8vIGxlbiA+IDE2
CisgICAgYyA9IEhhc2hMZW4xNihGZXRjaDY0KHMgKyBsZW4gLSA4KSArIGsxLCBhKTsKKyAgICBk
ID0gSGFzaExlbjE2KGIgKyBsZW4sIGMgKyBGZXRjaDY0KHMgKyBsZW4gLSAxNikpOworICAgIGEg
Kz0gZDsKKyAgICBkbyB7CisgICAgICBhIF49IFNoaWZ0TWl4KEZldGNoNjQocykgKiBrMSkgKiBr
MTsKKyAgICAgIGEgKj0gazE7CisgICAgICBiIF49IGE7CisgICAgICBjIF49IFNoaWZ0TWl4KEZl
dGNoNjQocyArIDgpICogazEpICogazE7CisgICAgICBjICo9IGsxOworICAgICAgZCBePSBjOwor
ICAgICAgcyArPSAxNjsKKyAgICAgIGwgLT0gMTY7CisgICAgfSB3aGlsZSAobCA+IDApOworICB9
CisgIGEgPSBIYXNoTGVuMTYoYSwgYyk7CisgIGIgPSBIYXNoTGVuMTYoZCwgYik7CisgIHJldHVy
biB1aW50MTI4KGEgXiBiLCBIYXNoTGVuMTYoYiwgYSkpOworfQorCit1aW50MTI4IENpdHlIYXNo
MTI4V2l0aFNlZWQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDEyOCBzZWVkKSB7Cisg
IGlmIChsZW4gPCAxMjgpIHsKKyAgICByZXR1cm4gQ2l0eU11cm11cihzLCBsZW4sIHNlZWQpOwor
ICB9CisKKyAgLy8gV2UgZXhwZWN0IGxlbiA+PSAxMjggdG8gYmUgdGhlIGNvbW1vbiBjYXNlLiAg
S2VlcCA1NiBieXRlcyBvZiBzdGF0ZToKKyAgLy8gdiwgdywgeCwgeSwgYW5kIHouCisgIHN0ZDo6
cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IHYsIHc7CisgIHVpbnQ2NF90IHggPSBVaW50MTI4TG93
NjQoc2VlZCk7CisgIHVpbnQ2NF90IHkgPSBVaW50MTI4SGlnaDY0KHNlZWQpOworICB1aW50NjRf
dCB6ID0gbGVuICogazE7CisgIHYuZmlyc3QgPSBSb3RhdGUoeSBeIGsxLCA0OSkgKiBrMSArIEZl
dGNoNjQocyk7CisgIHYuc2Vjb25kID0gUm90YXRlKHYuZmlyc3QsIDQyKSAqIGsxICsgRmV0Y2g2
NChzICsgOCk7CisgIHcuZmlyc3QgPSBSb3RhdGUoeSArIHosIDM1KSAqIGsxICsgeDsKKyAgdy5z
ZWNvbmQgPSBSb3RhdGUoeCArIEZldGNoNjQocyArIDg4KSwgNTMpICogazE7CisKKyAgLy8gVGhp
cyBpcyB0aGUgc2FtZSBpbm5lciBsb29wIGFzIENpdHlIYXNoNjQoKSwgbWFudWFsbHkgdW5yb2xs
ZWQuCisgIGRvIHsKKyAgICB4ID0gUm90YXRlKHggKyB5ICsgdi5maXJzdCArIEZldGNoNjQocyAr
IDgpLCAzNykgKiBrMTsKKyAgICB5ID0gUm90YXRlKHkgKyB2LnNlY29uZCArIEZldGNoNjQocyAr
IDQ4KSwgNDIpICogazE7CisgICAgeCBePSB3LnNlY29uZDsKKyAgICB5ICs9IHYuZmlyc3QgKyBG
ZXRjaDY0KHMgKyA0MCk7CisgICAgeiA9IFJvdGF0ZSh6ICsgdy5maXJzdCwgMzMpICogazE7Cisg
ICAgdiA9IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMocywgdi5zZWNvbmQgKiBrMSwgeCArIHcuZmly
c3QpOworICAgIHcgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRzKHMgKyAzMiwgeiArIHcuc2Vjb25k
LCB5ICsgRmV0Y2g2NChzICsgMTYpKTsKKyAgICBzdGQ6OnN3YXAoeiwgeCk7CisgICAgcyArPSA2
NDsKKyAgICB4ID0gUm90YXRlKHggKyB5ICsgdi5maXJzdCArIEZldGNoNjQocyArIDgpLCAzNykg
KiBrMTsKKyAgICB5ID0gUm90YXRlKHkgKyB2LnNlY29uZCArIEZldGNoNjQocyArIDQ4KSwgNDIp
ICogazE7CisgICAgeCBePSB3LnNlY29uZDsKKyAgICB5ICs9IHYuZmlyc3QgKyBGZXRjaDY0KHMg
KyA0MCk7CisgICAgeiA9IFJvdGF0ZSh6ICsgdy5maXJzdCwgMzMpICogazE7CisgICAgdiA9IFdl
YWtIYXNoTGVuMzJXaXRoU2VlZHMocywgdi5zZWNvbmQgKiBrMSwgeCArIHcuZmlyc3QpOworICAg
IHcgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRzKHMgKyAzMiwgeiArIHcuc2Vjb25kLCB5ICsgRmV0
Y2g2NChzICsgMTYpKTsKKyAgICBzdGQ6OnN3YXAoeiwgeCk7CisgICAgcyArPSA2NDsKKyAgICBs
ZW4gLT0gMTI4OworICB9IHdoaWxlIChBQlNMX1BSRURJQ1RfVFJVRShsZW4gPj0gMTI4KSk7Cisg
IHggKz0gUm90YXRlKHYuZmlyc3QgKyB6LCA0OSkgKiBrMDsKKyAgeSA9IHkgKiBrMCArIFJvdGF0
ZSh3LnNlY29uZCwgMzcpOworICB6ID0geiAqIGswICsgUm90YXRlKHcuZmlyc3QsIDI3KTsKKyAg
dy5maXJzdCAqPSA5OworICB2LmZpcnN0ICo9IGswOworICAvLyBJZiAwIDwgbGVuIDwgMTI4LCBo
YXNoIHVwIHRvIDQgY2h1bmtzIG9mIDMyIGJ5dGVzIGVhY2ggZnJvbSB0aGUgZW5kIG9mIHMuCisg
IGZvciAoc2l6ZV90IHRhaWxfZG9uZSA9IDA7IHRhaWxfZG9uZSA8IGxlbjspIHsKKyAgICB0YWls
X2RvbmUgKz0gMzI7CisgICAgeSA9IFJvdGF0ZSh4ICsgeSwgNDIpICogazAgKyB2LnNlY29uZDsK
KyAgICB3LmZpcnN0ICs9IEZldGNoNjQocyArIGxlbiAtIHRhaWxfZG9uZSArIDE2KTsKKyAgICB4
ID0geCAqIGswICsgdy5maXJzdDsKKyAgICB6ICs9IHcuc2Vjb25kICsgRmV0Y2g2NChzICsgbGVu
IC0gdGFpbF9kb25lKTsKKyAgICB3LnNlY29uZCArPSB2LmZpcnN0OworICAgIHYgPSBXZWFrSGFz
aExlbjMyV2l0aFNlZWRzKHMgKyBsZW4gLSB0YWlsX2RvbmUsIHYuZmlyc3QgKyB6LCB2LnNlY29u
ZCk7CisgICAgdi5maXJzdCAqPSBrMDsKKyAgfQorICAvLyBBdCB0aGlzIHBvaW50IG91ciA1NiBi
eXRlcyBvZiBzdGF0ZSBzaG91bGQgY29udGFpbiBtb3JlIHRoYW4KKyAgLy8gZW5vdWdoIGluZm9y
bWF0aW9uIGZvciBhIHN0cm9uZyAxMjgtYml0IGhhc2guICBXZSB1c2UgdHdvCisgIC8vIGRpZmZl
cmVudCA1Ni1ieXRlLXRvLTgtYnl0ZSBoYXNoZXMgdG8gZ2V0IGEgMTYtYnl0ZSBmaW5hbCByZXN1
bHQuCisgIHggPSBIYXNoTGVuMTYoeCwgdi5maXJzdCk7CisgIHkgPSBIYXNoTGVuMTYoeSArIHos
IHcuZmlyc3QpOworICByZXR1cm4gdWludDEyOChIYXNoTGVuMTYoeCArIHYuc2Vjb25kLCB3LnNl
Y29uZCkgKyB5LAorICAgICAgICAgICAgICAgICBIYXNoTGVuMTYoeCArIHcuc2Vjb25kLCB5ICsg
di5zZWNvbmQpKTsKK30KKwordWludDEyOCBDaXR5SGFzaDEyOChjb25zdCBjaGFyICpzLCBzaXpl
X3QgbGVuKSB7CisgIHJldHVybiBsZW4gPj0gMTYKKyAgICAgICAgICAgICA/IENpdHlIYXNoMTI4
V2l0aFNlZWQocyArIDE2LCBsZW4gLSAxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDEyOChGZXRjaDY0KHMpLCBGZXRjaDY0KHMgKyA4KSArIGswKSkKKyAgICAgICAg
ICAgICA6IENpdHlIYXNoMTI4V2l0aFNlZWQocywgbGVuLCB1aW50MTI4KGswLCBrMSkpOworfQor
fSAgLy8gbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNp
ZmRlZiBfX1NTRTRfMl9fCisjaW5jbHVkZSA8bm1taW50cmluLmg+CisjaW5jbHVkZSAiYWJzbC9o
YXNoL2ludGVybmFsL2NpdHlfY3JjLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBo
YXNoX2ludGVybmFsIHsKKworLy8gUmVxdWlyZXMgbGVuID49IDI0MC4KK3N0YXRpYyB2b2lkIENp
dHlIYXNoQ3JjMjU2TG9uZyhjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50MzJfdCBzZWVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpyZXN1bHQpIHsKKyAg
dWludDY0X3QgYSA9IEZldGNoNjQocyArIDU2KSArIGswOworICB1aW50NjRfdCBiID0gRmV0Y2g2
NChzICsgOTYpICsgazA7CisgIHVpbnQ2NF90IGMgPSByZXN1bHRbMF0gPSBIYXNoTGVuMTYoYiwg
bGVuKTsKKyAgdWludDY0X3QgZCA9IHJlc3VsdFsxXSA9IEZldGNoNjQocyArIDEyMCkgKiBrMCAr
IGxlbjsKKyAgdWludDY0X3QgZSA9IEZldGNoNjQocyArIDE4NCkgKyBzZWVkOworICB1aW50NjRf
dCBmID0gMDsKKyAgdWludDY0X3QgZyA9IDA7CisgIHVpbnQ2NF90IGggPSBjICsgZDsKKyAgdWlu
dDY0X3QgeCA9IHNlZWQ7CisgIHVpbnQ2NF90IHkgPSAwOworICB1aW50NjRfdCB6ID0gMDsKKwor
ICAvLyAyNDAgYnl0ZXMgb2YgaW5wdXQgcGVyIGl0ZXIuCisgIHNpemVfdCBpdGVycyA9IGxlbiAv
IDI0MDsKKyAgbGVuIC09IGl0ZXJzICogMjQwOworICBkbyB7CisjdW5kZWYgQ0hVTksKKyNkZWZp
bmUgQ0hVTksocikgICAgICAgICAgICAgICBcCisgIFBFUk1VVEUzKHgsIHosIHkpOyAgICAgICAg
ICAgXAorICBiICs9IEZldGNoNjQocyk7ICAgICAgICAgICAgIFwKKyAgYyArPSBGZXRjaDY0KHMg
KyA4KTsgICAgICAgICBcCisgIGQgKz0gRmV0Y2g2NChzICsgMTYpOyAgICAgICAgXAorICBlICs9
IEZldGNoNjQocyArIDI0KTsgICAgICAgIFwKKyAgZiArPSBGZXRjaDY0KHMgKyAzMik7ICAgICAg
ICBcCisgIGEgKz0gYjsgICAgICAgICAgICAgICAgICAgICAgXAorICBoICs9IGY7ICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgYiArPSBjOyAgICAgICAgICAgICAgICAgICAgICBcCisgIGYgKz0g
ZDsgICAgICAgICAgICAgICAgICAgICAgXAorICBnICs9IGU7ICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgZSArPSB6OyAgICAgICAgICAgICAgICAgICAgICBcCisgIGcgKz0geDsgICAgICAgICAg
ICAgICAgICAgICAgXAorICB6ID0gX21tX2NyYzMyX3U2NCh6LCBiICsgZyk7IFwKKyAgeSA9IF9t
bV9jcmMzMl91NjQoeSwgZSArIGgpOyBcCisgIHggPSBfbW1fY3JjMzJfdTY0KHgsIGYgKyBhKTsg
XAorICBlID0gUm90YXRlKGUsIHIpOyAgICAgICAgICAgIFwKKyAgYyArPSBlOyAgICAgICAgICAg
ICAgICAgICAgICBcCisgIHMgKz0gNDAKKworICAgIENIVU5LKDApOworICAgIFBFUk1VVEUzKGEs
IGgsIGMpOworICAgIENIVU5LKDMzKTsKKyAgICBQRVJNVVRFMyhhLCBoLCBmKTsKKyAgICBDSFVO
SygwKTsKKyAgICBQRVJNVVRFMyhiLCBoLCBmKTsKKyAgICBDSFVOSyg0Mik7CisgICAgUEVSTVVU
RTMoYiwgaCwgZCk7CisgICAgQ0hVTksoMCk7CisgICAgUEVSTVVURTMoYiwgaCwgZSk7CisgICAg
Q0hVTksoMzMpOworICAgIFBFUk1VVEUzKGEsIGgsIGUpOworICB9IHdoaWxlICgtLWl0ZXJzID4g
MCk7CisKKyAgd2hpbGUgKGxlbiA+PSA0MCkgeworICAgIENIVU5LKDI5KTsKKyAgICBlIF49IFJv
dGF0ZShhLCAyMCk7CisgICAgaCArPSBSb3RhdGUoYiwgMzApOworICAgIGcgXj0gUm90YXRlKGMs
IDQwKTsKKyAgICBmICs9IFJvdGF0ZShkLCAzNCk7CisgICAgUEVSTVVURTMoYywgaCwgZyk7Cisg
ICAgbGVuIC09IDQwOworICB9CisgIGlmIChsZW4gPiAwKSB7CisgICAgcyA9IHMgKyBsZW4gLSA0
MDsKKyAgICBDSFVOSygzMyk7CisgICAgZSBePSBSb3RhdGUoYSwgNDMpOworICAgIGggKz0gUm90
YXRlKGIsIDQyKTsKKyAgICBnIF49IFJvdGF0ZShjLCA0MSk7CisgICAgZiArPSBSb3RhdGUoZCwg
NDApOworICB9CisgIHJlc3VsdFswXSBePSBoOworICByZXN1bHRbMV0gXj0gZzsKKyAgZyArPSBo
OworICBhID0gSGFzaExlbjE2KGEsIGcgKyB6KTsKKyAgeCArPSB5IDw8IDMyOworICBiICs9IHg7
CisgIGMgPSBIYXNoTGVuMTYoYywgeikgKyBoOworICBkID0gSGFzaExlbjE2KGQsIGUgKyByZXN1
bHRbMF0pOworICBnICs9IGU7CisgIGggKz0gSGFzaExlbjE2KHgsIGYpOworICBlID0gSGFzaExl
bjE2KGEsIGQpICsgZzsKKyAgeiA9IEhhc2hMZW4xNihiLCBjKSArIGE7CisgIHkgPSBIYXNoTGVu
MTYoZywgaCkgKyBjOworICByZXN1bHRbMF0gPSBlICsgeiArIHkgKyB4OworICBhID0gU2hpZnRN
aXgoKGEgKyB5KSAqIGswKSAqIGswICsgYjsKKyAgcmVzdWx0WzFdICs9IGEgKyByZXN1bHRbMF07
CisgIGEgPSBTaGlmdE1peChhICogazApICogazAgKyBjOworICByZXN1bHRbMl0gPSBhICsgcmVz
dWx0WzFdOworICBhID0gU2hpZnRNaXgoKGEgKyBlKSAqIGswKSAqIGswOworICByZXN1bHRbM10g
PSBhICsgcmVzdWx0WzJdOworfQorCisvLyBSZXF1aXJlcyBsZW4gPCAyNDAuCitzdGF0aWMgdm9p
ZCBDaXR5SGFzaENyYzI1NlNob3J0KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90
ICpyZXN1bHQpIHsKKyAgY2hhciBidWZbMjQwXTsKKyAgbWVtY3B5KGJ1ZiwgcywgbGVuKTsKKyAg
bWVtc2V0KGJ1ZiArIGxlbiwgMCwgMjQwIC0gbGVuKTsKKyAgQ2l0eUhhc2hDcmMyNTZMb25nKGJ1
ZiwgMjQwLCB+c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxlbiksIHJlc3VsdCk7Cit9CisKK3ZvaWQg
Q2l0eUhhc2hDcmMyNTYoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDY0X3QgKnJlc3Vs
dCkgeworICBpZiAoQUJTTF9QUkVESUNUX1RSVUUobGVuID49IDI0MCkpIHsKKyAgICBDaXR5SGFz
aENyYzI1NkxvbmcocywgbGVuLCAwLCByZXN1bHQpOworICB9IGVsc2UgeworICAgIENpdHlIYXNo
Q3JjMjU2U2hvcnQocywgbGVuLCByZXN1bHQpOworICB9Cit9CisKK3VpbnQxMjggQ2l0eUhhc2hD
cmMxMjhXaXRoU2VlZChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50MTI4IHNlZWQpIHsK
KyAgaWYgKGxlbiA8PSA5MDApIHsKKyAgICByZXR1cm4gQ2l0eUhhc2gxMjhXaXRoU2VlZChzLCBs
ZW4sIHNlZWQpOworICB9IGVsc2UgeworICAgIHVpbnQ2NF90IHJlc3VsdFs0XTsKKyAgICBDaXR5
SGFzaENyYzI1NihzLCBsZW4sIHJlc3VsdCk7CisgICAgdWludDY0X3QgdSA9IFVpbnQxMjhIaWdo
NjQoc2VlZCkgKyByZXN1bHRbMF07CisgICAgdWludDY0X3QgdiA9IFVpbnQxMjhMb3c2NChzZWVk
KSArIHJlc3VsdFsxXTsKKyAgICByZXR1cm4gdWludDEyOChIYXNoTGVuMTYodSwgdiArIHJlc3Vs
dFsyXSksCisgICAgICAgICAgICAgICAgICAgSGFzaExlbjE2KFJvdGF0ZSh2LCAzMiksIHUgKiBr
MCArIHJlc3VsdFszXSkpOworICB9Cit9CisKK3VpbnQxMjggQ2l0eUhhc2hDcmMxMjgoY29uc3Qg
Y2hhciAqcywgc2l6ZV90IGxlbikgeworICBpZiAobGVuIDw9IDkwMCkgeworICAgIHJldHVybiBD
aXR5SGFzaDEyOChzLCBsZW4pOworICB9IGVsc2UgeworICAgIHVpbnQ2NF90IHJlc3VsdFs0XTsK
KyAgICBDaXR5SGFzaENyYzI1NihzLCBsZW4sIHJlc3VsdCk7CisgICAgcmV0dXJuIHVpbnQxMjgo
cmVzdWx0WzJdLCByZXN1bHRbM10pOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSBoYXNoX2lu
dGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2hhc2gvaW50ZXJuYWwvY2l0eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTViMzdiODc1ZjBiM2ZkODQ2N2RhOTlkYmVkNDI5N2FjODlmMTgxOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5oCkBAIC0wLDAgKzEsMTA4IEBACisv
LyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9jaXR5aGFzaC8KKy8vCisvLyBUaGlzIGZpbGUgcHJvdmlkZXMgYSBmZXcg
ZnVuY3Rpb25zIGZvciBoYXNoaW5nIHN0cmluZ3MuICBBbGwgb2YgdGhlbSBhcmUKKy8vIGhpZ2gt
cXVhbGl0eSBmdW5jdGlvbnMgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSBwYXNzIHN0YW5kYXJkIHRl
c3RzIHN1Y2gKKy8vIGFzIEF1c3RpbiBBcHBsZWJ5J3MgU01IYXNoZXIuICBUaGV5IGFyZSBhbHNv
IGZhc3QuCisvLworLy8gRm9yIDY0LWJpdCB4ODYgY29kZSwgb24gc2hvcnQgc3RyaW5ncywgd2Ug
ZG9uJ3Qga25vdyBvZiBhbnl0aGluZyBmYXN0ZXIgdGhhbgorLy8gQ2l0eUhhc2g2NCB0aGF0IGlz
IG9mIGNvbXBhcmFibGUgcXVhbGl0eS4gIFdlIGJlbGlldmUgb3VyIG5lYXJlc3QgY29tcGV0aXRv
cgorLy8gaXMgTXVybXVyMy4gIEZvciA2NC1iaXQgeDg2IGNvZGUsIENpdHlIYXNoNjQgaXMgYW4g
ZXhjZWxsZW50IGNob2ljZSBmb3IgaGFzaAorLy8gdGFibGVzIGFuZCBtb3N0IG90aGVyIGhhc2hp
bmcgKGV4Y2x1ZGluZyBjcnlwdG9ncmFwaHkpLgorLy8KKy8vIEZvciA2NC1iaXQgeDg2IGNvZGUs
IG9uIGxvbmcgc3RyaW5ncywgdGhlIHBpY3R1cmUgaXMgbW9yZSBjb21wbGljYXRlZC4KKy8vIE9u
IG1hbnkgcmVjZW50IEludGVsIENQVXMsIHN1Y2ggYXMgTmVoYWxlbSwgV2VzdG1lcmUsIFNhbmR5
IEJyaWRnZSwgZXRjLiwKKy8vIENpdHlIYXNoQ3JjMTI4IGFwcGVhcnMgdG8gYmUgZmFzdGVyIHRo
YW4gYWxsIGNvbXBldGl0b3JzIG9mIGNvbXBhcmFibGUKKy8vIHF1YWxpdHkuICBDaXR5SGFzaDEy
OCBpcyBhbHNvIGdvb2QgYnV0IG5vdCBxdWl0ZSBhcyBmYXN0LiAgV2UgYmVsaWV2ZSBvdXIKKy8v
IG5lYXJlc3QgY29tcGV0aXRvciBpcyBCb2IgSmVua2lucycgU3Bvb2t5LiAgV2UgZG9uJ3QgaGF2
ZSBncmVhdCBkYXRhIGZvcgorLy8gb3RoZXIgNjQtYml0IENQVXMsIGJ1dCBmb3IgbG9uZyBzdHJp
bmdzIHdlIGtub3cgdGhhdCBTcG9va3kgaXMgc2xpZ2h0bHkKKy8vIGZhc3RlciB0aGFuIENpdHlI
YXNoIG9uIHNvbWUgcmVsYXRpdmVseSByZWNlbnQgQU1EIHg4Ni02NCBDUFVzLCBmb3IgZXhhbXBs
ZS4KKy8vIE5vdGUgdGhhdCBDaXR5SGFzaENyYzEyOCBpcyBkZWNsYXJlZCBpbiBjaXR5Y3JjLmgu
CisvLworLy8gRm9yIDMyLWJpdCB4ODYgY29kZSwgd2UgZG9uJ3Qga25vdyBvZiBhbnl0aGluZyBm
YXN0ZXIgdGhhbiBDaXR5SGFzaDMyIHRoYXQKKy8vIGlzIG9mIGNvbXBhcmFibGUgcXVhbGl0eS4g
IFdlIGJlbGlldmUgb3VyIG5lYXJlc3QgY29tcGV0aXRvciBpcyBNdXJtdXIzQS4KKy8vIChPbiA2
NC1iaXQgQ1BVcywgaXQgaXMgdHlwaWNhbGx5IGZhc3RlciB0byB1c2UgdGhlIG90aGVyIENpdHlI
YXNoIHZhcmlhbnRzLikKKy8vCisvLyBGdW5jdGlvbnMgaW4gdGhlIENpdHlIYXNoIGZhbWlseSBh
cmUgbm90IHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaHkuCisvLworLy8gUGxlYXNlIHNlZSBDaXR5
SGFzaCdzIFJFQURNRSBmaWxlIGZvciBtb3JlIGRldGFpbHMgb24gb3VyIHBlcmZvcm1hbmNlCisv
LyBtZWFzdXJlbWVudHMgYW5kIHNvIG9uLgorLy8KKy8vIFdBUk5JTkc6IFRoaXMgY29kZSBoYXMg
YmVlbiBvbmx5IGxpZ2h0bHkgdGVzdGVkIG9uIGJpZy1lbmRpYW4gcGxhdGZvcm1zIQorLy8gSXQg
aXMga25vd24gdG8gd29yayB3ZWxsIG9uIGxpdHRsZS1lbmRpYW4gcGxhdGZvcm1zIHRoYXQgaGF2
ZSBhIHNtYWxsIHBlbmFsdHkKKy8vIGZvciB1bmFsaWduZWQgcmVhZHMsIHN1Y2ggYXMgY3VycmVu
dCBJbnRlbCBhbmQgQU1EIG1vZGVyYXRlLXRvLWhpZ2gtZW5kIENQVXMuCisvLyBJdCBzaG91bGQg
d29yayBvbiBhbGwgMzItYml0IGFuZCA2NC1iaXQgcGxhdGZvcm1zIHRoYXQgYWxsb3cgdW5hbGln
bmVkIHJlYWRzOworLy8gYnVnIHJlcG9ydHMgYXJlIHdlbGNvbWUuCisvLworLy8gQnkgdGhlIHdh
eSwgZm9yIHNvbWUgaGFzaCBmdW5jdGlvbnMsIGdpdmVuIHN0cmluZ3MgYSBhbmQgYiwgdGhlIGhh
c2gKKy8vIG9mIGErYiBpcyBlYXNpbHkgZGVyaXZlZCBmcm9tIHRoZSBoYXNoZXMgb2YgYSBhbmQg
Yi4gIFRoaXMgcHJvcGVydHkKKy8vIGRvZXNuJ3QgaG9sZCBmb3IgYW55IGhhc2ggZnVuY3Rpb25z
IGluIHRoaXMgZmlsZS4KKworI2lmbmRlZiBBQlNMX0hBU0hfSU5URVJOQUxfQ0lUWV9IXworI2Rl
ZmluZSBBQlNMX0hBU0hfSU5URVJOQUxfQ0lUWV9IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8c3RkbGliLmg+ICAvLyBmb3Igc2l6ZV90LgorI2luY2x1ZGUgPHV0aWxpdHk+CisK
KworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgeworCit0eXBlZGVm
IHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IHVpbnQxMjg7CisKK2lubGluZSB1aW50NjRf
dCBVaW50MTI4TG93NjQoY29uc3QgdWludDEyOCAmeCkgeyByZXR1cm4geC5maXJzdDsgfQoraW5s
aW5lIHVpbnQ2NF90IFVpbnQxMjhIaWdoNjQoY29uc3QgdWludDEyOCAmeCkgeyByZXR1cm4geC5z
ZWNvbmQ7IH0KKworLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LgordWludDY0X3Qg
Q2l0eUhhc2g2NChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKTsKKworLy8gSGFzaCBmdW5jdGlv
biBmb3IgYSBieXRlIGFycmF5LiAgRm9yIGNvbnZlbmllbmNlLCBhIDY0LWJpdCBzZWVkIGlzIGFs
c28KKy8vIGhhc2hlZCBpbnRvIHRoZSByZXN1bHQuCit1aW50NjRfdCBDaXR5SGFzaDY0V2l0aFNl
ZWQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDY0X3Qgc2VlZCk7CisKKy8vIEhhc2gg
ZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4gIEZvciBjb252ZW5pZW5jZSwgdHdvIHNlZWRzIGFy
ZSBhbHNvCisvLyBoYXNoZWQgaW50byB0aGUgcmVzdWx0LgordWludDY0X3QgQ2l0eUhhc2g2NFdp
dGhTZWVkcyhjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50NjRfdCBzZWVkMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNlZWQxKTsKKworLy8gSGFzaCBmdW5jdGlv
biBmb3IgYSBieXRlIGFycmF5LgordWludDEyOCBDaXR5SGFzaDEyOChjb25zdCBjaGFyICpzLCBz
aXplX3QgbGVuKTsKKworLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LiAgRm9yIGNv
bnZlbmllbmNlLCBhIDEyOC1iaXQgc2VlZCBpcyBhbHNvCisvLyBoYXNoZWQgaW50byB0aGUgcmVz
dWx0LgordWludDEyOCBDaXR5SGFzaDEyOFdpdGhTZWVkKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBs
ZW4sIHVpbnQxMjggc2VlZCk7CisKKy8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4g
IE1vc3QgdXNlZnVsIGluIDMyLWJpdCBiaW5hcmllcy4KK3VpbnQzMl90IENpdHlIYXNoMzIoY29u
c3QgY2hhciAqcywgc2l6ZV90IGxlbik7CisKKy8vIEhhc2ggMTI4IGlucHV0IGJpdHMgZG93biB0
byA2NCBiaXRzIG9mIG91dHB1dC4KKy8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgYSByZWFzb25h
Ymx5IGdvb2QgaGFzaCBmdW5jdGlvbi4KK2lubGluZSB1aW50NjRfdCBIYXNoMTI4dG82NChjb25z
dCB1aW50MTI4ICZ4KSB7CisgIC8vIE11cm11ci1pbnNwaXJlZCBoYXNoaW5nLgorICBjb25zdCB1
aW50NjRfdCBrTXVsID0gMHg5ZGRmZWEwOGViMzgyZDY5VUxMOworICB1aW50NjRfdCBhID0gKFVp
bnQxMjhMb3c2NCh4KSBeIFVpbnQxMjhIaWdoNjQoeCkpICoga011bDsKKyAgYSBePSAoYSA+PiA0
Nyk7CisgIHVpbnQ2NF90IGIgPSAoVWludDEyOEhpZ2g2NCh4KSBeIGEpICoga011bDsKKyAgYiBe
PSAoYiA+PiA0Nyk7CisgIGIgKj0ga011bDsKKyAgcmV0dXJuIGI7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSBoYXNoX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFC
U0xfSEFTSF9JTlRFUk5BTF9DSVRZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFs
L2NpdHlfY3JjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfY3JjLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmJlNjU1N2QyMTNmMmI0MGE4YzQ3NGM2YTBjMjc5ZjBhNmJjYWYyNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eV9jcmMuaApAQCAtMCwwICsxLDQxIEBACisvLyBD
b3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIFRoaXMgZmlsZSBkZWNs
YXJlcyB0aGUgc3Vic2V0IG9mIHRoZSBDaXR5SGFzaCBmdW5jdGlvbnMgdGhhdCByZXF1aXJlCisv
LyBfbW1fY3JjMzJfdTY0KCkuICBTZWUgdGhlIENpdHlIYXNoIFJFQURNRSBmb3IgZGV0YWlscy4K
Ky8vCisvLyBGdW5jdGlvbnMgaW4gdGhlIENpdHlIYXNoIGZhbWlseSBhcmUgbm90IHN1aXRhYmxl
IGZvciBjcnlwdG9ncmFwaHkuCisKKyNpZm5kZWYgQUJTTF9IQVNIX0lOVEVSTkFMX0NJVFlfQ1JD
X0hfCisjZGVmaW5lIEFCU0xfSEFTSF9JTlRFUk5BTF9DSVRZX0NSQ19IXworCisjaW5jbHVkZSAi
YWJzbC9oYXNoL2ludGVybmFsL2NpdHkuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNl
IGhhc2hfaW50ZXJuYWwgeworCisvLyBIYXNoIGZ1bmN0aW9uIGZvciBhIGJ5dGUgYXJyYXkuCit1
aW50MTI4IENpdHlIYXNoQ3JjMTI4KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pOworCisvLyBI
YXNoIGZ1bmN0aW9uIGZvciBhIGJ5dGUgYXJyYXkuICBGb3IgY29udmVuaWVuY2UsIGEgMTI4LWJp
dCBzZWVkIGlzIGFsc28KKy8vIGhhc2hlZCBpbnRvIHRoZSByZXN1bHQuCit1aW50MTI4IENpdHlI
YXNoQ3JjMTI4V2l0aFNlZWQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDEyOCBzZWVk
KTsKKworLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LiAgU2V0cyByZXN1bHRbMF0g
Li4uIHJlc3VsdFszXS4KK3ZvaWQgQ2l0eUhhc2hDcmMyNTYoY29uc3QgY2hhciAqcywgc2l6ZV90
IGxlbiwgdWludDY0X3QgKnJlc3VsdCk7CisKK30gIC8vIG5hbWVzcGFjZSBoYXNoX2ludGVybmFs
Cit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9D
SVRZX0NSQ19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5X3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzhkYTUzZDM0
ZDA0ZDYwMTFmZTg3YjA2YTdlMjY2MTNiZGJlZjk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
aGFzaC9pbnRlcm5hbC9jaXR5X3Rlc3QuY2MKQEAgLTAsMCArMSwxODEyIEBACisvLyBDb3B5cmln
aHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVy
bmFsL2NpdHkuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRpbz4KKyNp
bmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lmZGVmIF9fU1NF
NF8yX18KKyNpbmNsdWRlICJhYnNsL2hhc2gvaW50ZXJuYWwvY2l0eV9jcmMuaCIKKyNlbmRpZgor
CituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgaGFzaF9pbnRlcm5hbCB7CisKK3N0YXRpYyBj
b25zdCB1aW50NjRfdCBrMCA9IDB4YzNhNWM4NWM5N2NiMzEyN1VMTDsKK3N0YXRpYyBjb25zdCB1
aW50NjRfdCBrU2VlZDAgPSAxMjM0NTY3Oworc3RhdGljIGNvbnN0IHVpbnQ2NF90IGtTZWVkMSA9
IGswOworc3RhdGljIGNvbnN0IHVpbnQxMjgga1NlZWQxMjgoa1NlZWQwLCBrU2VlZDEpOworc3Rh
dGljIGNvbnN0IGludCBrRGF0YVNpemUgPSAxIDw8IDIwOworc3RhdGljIGNvbnN0IGludCBrVGVz
dFNpemUgPSAzMDA7CisKK3N0YXRpYyBjaGFyIGRhdGFba0RhdGFTaXplXTsKKworLy8gSW5pdGlh
bGl6ZSBkYXRhIHRvIHBzZXVkb3JhbmRvbSB2YWx1ZXMuCit2b2lkIHNldHVwKCkgeworICB1aW50
NjRfdCBhID0gOTsKKyAgdWludDY0X3QgYiA9IDc3NzsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBr
RGF0YVNpemU7IGkrKykgeworICAgIGEgKz0gYjsKKyAgICBiICs9IGE7CisgICAgYSA9IChhIF4g
KGEgPj4gNDEpKSAqIGswOworICAgIGIgPSAoYiBeIChiID4+IDQxKSkgKiBrMCArIGk7CisgICAg
dWludDhfdCB1ID0gYiA+PiAzNzsKKyAgICBtZW1jcHkoZGF0YSArIGksICZ1LCAxKTsgIC8vIHVp
bnQ4X3QgLT4gY2hhcgorICB9Cit9CisKKyNkZWZpbmUgQyh4KSAweCMjeCMjVUxMCitzdGF0aWMg
Y29uc3QgdWludDY0X3QgdGVzdGRhdGFba1Rlc3RTaXplXVsxNl0gPSB7CisgICAge0MoOWFlMTZh
M2IyZjkwNDA0ZiksIEMoNzUxMDZkYjg5MDIzN2E0YSksIEMoM2ZlYWM1ZjYzNjAzOTc2NiksCisg
ICAgIEMoM2RmMDlkZmM2NGMwOWEyYiksIEMoM2NiNTQwYzM5MmU1MWUyOSksIEMoNmI1NjM0M2Zl
YWMwNjYzKSwKKyAgICAgQyg1YjdiYzUwZmQ4ZThhZDkyKSwgQygzZGYwOWRmYzY0YzA5YTJiKSwg
QygzY2I1NDBjMzkyZTUxZTI5KSwKKyAgICAgQyg2YjU2MzQzZmVhYzA2NjMpLCBDKDViN2JjNTBm
ZDhlOGFkOTIpLCBDKDk1MTYyZjI0ZTZhNWY5MzApLAorICAgICBDKDY4MDhiZGY0ZjFlYjA2ZTAp
LCBDKGIzYjFmM2E2N2I2MjRkODIpLCBDKGM5YTYyZjEyYmQ0Y2Q4MGIpLAorICAgICBDKGRjNTZk
MTdhKX0sCisgICAge0MoNTQxMTUwZTg3ZjQxNWU5NiksIEMoMWFlZjBkMjRiMzE0OGExYSksIEMo
YmFjYzMwMGUxZTgyMzQ1YSksCisgICAgIEMoYzNjZGM0MWUxZGYzMzUxMyksIEMoMmMxMzhmZjI1
OTZkNDJmNiksIEMoZjU4ZTkwODJhZWQzMDU1ZiksCisgICAgIEMoMTYyZTE5MmIyOTU3MTYzZCks
IEMoYzNjZGM0MWUxZGYzMzUxMyksIEMoMmMxMzhmZjI1OTZkNDJmNiksCisgICAgIEMoZjU4ZTkw
ODJhZWQzMDU1ZiksIEMoMTYyZTE5MmIyOTU3MTYzZCksIEMoZmI5OWU4NWUwZDE2ZjkwYyksCisg
ICAgIEMoNjA4NDYyYzE1YmRmMjdlOCksIEMoZTdkMmM1Yzk0MzU3MmI2MiksIEMoMWJhYWE5MzI3
NjQyNzk4YyksCisgICAgIEMoOTk5MjkzMzQpfSwKKyAgICB7QyhmMzc4NmE0YjI1ODI3YzEpLCBD
KDM0ZWUxYTJiZjc2N2JkMWMpLCBDKDJmMTVjYTJlYmZiNjMxZjIpLAorICAgICBDKDMxNDliYTFk
YWM3NzI3MGQpLCBDKDcwZTJlMDc2ZTMwNzAzYyksIEMoNTliY2M5NjU5YmM1Mjk2KSwKKyAgICAg
Qyg5ZWNiYzgxMzJhZTJmMWQ3KSwgQygzMTQ5YmExZGFjNzcyNzBkKSwgQyg3MGUyZTA3NmUzMDcw
M2MpLAorICAgICBDKDU5YmNjOTY1OWJjNTI5NiksIEMoOWVjYmM4MTMyYWUyZjFkNyksIEMoYTAx
ZDMwNzg5YmFkN2NmMiksCisgICAgIEMoYWUwM2ZlMzcxOTgxYTBlMCksIEMoMTI3ZTM4ODNiODc4
ODkzNCksIEMoZDBhYzNkNGMwYTZmY2EzMiksCisgICAgIEMoNDI1MmVkYjcpfSwKKyAgICB7Qyhl
ZjkyM2E3YTFhZjc4ZWFiKSwgQyg3OTE2M2IxZTFlOWE5YjE4KSwgQyhkZjNiMmFjYTZlMWU0YTMw
KSwKKyAgICAgQygyMTkzZmI3NjIwY2JmMjNiKSwgQyg4YjZhOGZmMDZjZGE4MzAyKSwgQygxYTQ0
NDY5YWZkM2UwOTFmKSwKKyAgICAgQyg4YjA0NDkzNzY2MTI1MDYpLCBDKDIxOTNmYjc2MjBjYmYy
M2IpLCBDKDhiNmE4ZmYwNmNkYTgzMDIpLAorICAgICBDKDFhNDQ0NjlhZmQzZTA5MWYpLCBDKDhi
MDQ0OTM3NjYxMjUwNiksIEMoZTlkOWQ0MWMzMmFkOTFkMSksCisgICAgIEMoYjQ0YWIwOWY1OGUz
YzYwOCksIEMoMTllOTE3NWY5ZmNmNzg0KSwgQyg4MzliM2M5NTgxYjRhNDgwKSwgQyhlYmMzNGYz
Yyl9LAorICAgIHtDKDExZGY1OTI1OTZmNDFkODgpLCBDKDg0M2VjMGJjZTkwNDJmOWMpLCBDKGNj
ZTJlYTFlMDhiMWViMzApLAorICAgICBDKDRkMDllNDJmMDljYzM0OTUpLCBDKDY2NjIzNjYzMWI5
ZjI1M2IpLCBDKGQyOGIzNzYzY2QwMmI2YTMpLAorICAgICBDKDQzYjI0OWU1N2M0ZDBjMWIpLCBD
KDRkMDllNDJmMDljYzM0OTUpLCBDKDY2NjIzNjYzMWI5ZjI1M2IpLAorICAgICBDKGQyOGIzNzYz
Y2QwMmI2YTMpLCBDKDQzYjI0OWU1N2M0ZDBjMWIpLCBDKDM4ODcxMDFjOGFkZWExMDEpLAorICAg
ICBDKDhhOTM1NWQ0ZWZjOTFkZjApLCBDKDNlNjEwOTQ0Y2M5ZmVjZmQpLCBDKDViZjllYjYwYjA4
YWMwY2UpLAorICAgICBDKDI2ZjJiNDYzKX0sCisgICAge0MoODMxZjQ0OGJkYzU2MDBiMyksIEMo
NjJhMjRiZTMxMjBhNjkxOSksIEMoMWI0NDA5OGE0MWUwMTBkYSksCisgICAgIEMoZGMwN2RmNTNi
OTQ5YzZiKSwgQyhkMmIxMWIyMDgxYWViMDAyKSwgQyhkMjEyYjAyYzFiMTNmNzcyKSwKKyAgICAg
QyhjMGJlZDI5N2I0YmUxOTEyKSwgQyhkYzA3ZGY1M2I5NDljNmIpLCBDKGQyYjExYjIwODFhZWIw
MDIpLAorICAgICBDKGQyMTJiMDJjMWIxM2Y3NzIpLCBDKGMwYmVkMjk3YjRiZTE5MTIpLCBDKDY4
MmQzZDJhZDMwNGU0YWYpLAorICAgICBDKDQwZTkxMTJhNjU1NDM3YTEpLCBDKDI2OGIwOWY3ZWUw
OTg0M2YpLCBDKDZiOTY5OGQ0Mzg1OWNhNDcpLAorICAgICBDKGIwNDJjMDQ3KX0sCisgICAge0Mo
M2VjYTgwM2U3MDMwNDg5NCksIEMoZDgwZGU3NjdlNGE5MjBhKSwgQyhhNTFjZmJiMjkyZWZkNTNk
KSwKKyAgICAgQyhkMTgzZGNkYTVmNzNlZGZhKSwgQygzYTkzY2JmNDBmMzAxMjhjKSwgQygxYTky
NTQ0ZDBiNDFkYmRhKSwKKyAgICAgQyhhZWMyYzRiZWU4MTk3NWUxKSwgQyhkMTgzZGNkYTVmNzNl
ZGZhKSwgQygzYTkzY2JmNDBmMzAxMjhjKSwKKyAgICAgQygxYTkyNTQ0ZDBiNDFkYmRhKSwgQyhh
ZWMyYzRiZWU4MTk3NWUxKSwgQyg1ZjkxODE0ZDExMjZiYTRiKSwKKyAgICAgQyhmOGFjNTdlZWU4
N2ZjZjFmKSwgQyhjNTVjNjQ0YTVkMDAyM2NkKSwgQyhhZGI3NjFlODI3ODI1ZmYyKSwKKyAgICAg
QyhlNzNiYjBhOCl9LAorICAgIHtDKDFiNWEwNjNmYjRjN2Y5ZjEpLCBDKDMxOGRiYzI0YWY2NmRl
ZTkpLCBDKDEwZWY3YjMyZDVjNzE5YWYpLAorICAgICBDKGIxNDBhMDJlZjVjOTc3MTIpLCBDKGI3
ZDAwZWYwNjViNTFiMzMpLCBDKDYzNTEyMWQ1MzI4OTdkOTgpLAorICAgICBDKDUzMmRhZjIxYjMx
MmE2ZDYpLCBDKGIxNDBhMDJlZjVjOTc3MTIpLCBDKGI3ZDAwZWYwNjViNTFiMzMpLAorICAgICBD
KDYzNTEyMWQ1MzI4OTdkOTgpLCBDKDUzMmRhZjIxYjMxMmE2ZDYpLCBDKGMwYjA5Yjc1ZDk0Mzkx
MCksCisgICAgIEMoOGM4NGRmYjVlZjJhOGU5NiksIEMoZTVjMDYwMzRiMDM1MzQzMyksIEMoMzE3
MGZhZjFjMzNhNDVkZCksCisgICAgIEMoOTFkZmRkNzUpfSwKKyAgICB7QyhhMGYxMDE0OWEwZTUz
OGQ2KSwgQyg2OWQwMDhjMjBmODc0MTlmKSwgQyg0MWIzNjM3NjE4NWIzZTllKSwKKyAgICAgQygy
NmI2Njg5OTYwY2NmODFkKSwgQyg1NWYyM2IyN2JiOWVmZDk0KSwgQygzYTE3ZjYxNjZkZDc2NWRi
KSwKKyAgICAgQyhjODkxYThhNjI5MzFlNzgyKSwgQygyNmI2Njg5OTYwY2NmODFkKSwgQyg1NWYy
M2IyN2JiOWVmZDk0KSwKKyAgICAgQygzYTE3ZjYxNjZkZDc2NWRiKSwgQyhjODkxYThhNjI5MzFl
NzgyKSwgQygyMzg1MmRjMzdkZGQyNjA3KSwKKyAgICAgQyg4YjdmMWIxZWM4OTc4MjllKSwgQyhk
MWQ2OTQ1MmE1NGVlZDhhKSwgQyg1NjQzMWYyYmQ3NjZlYzI0KSwKKyAgICAgQyhjODdmOTVkZSl9
LAorICAgIHtDKGZiOGQ5YzcwNjYwYjkxMGIpLCBDKGE0NWIwY2MzNDc2YmZmMWIpLCBDKGIyOGQx
OTk2MTQ0ZjAyMDcpLAorICAgICBDKDk4ZWMzMTExM2U1ZTM1ZDIpLCBDKDVlNGFlYjg1M2YxYjlh
YTcpLCBDKGJjZjVjOGZlNDQ2NWI3YzgpLAorICAgICBDKGIxZWEzYTgyNDM5OTZmMTUpLCBDKDk4
ZWMzMTExM2U1ZTM1ZDIpLCBDKDVlNGFlYjg1M2YxYjlhYTcpLAorICAgICBDKGJjZjVjOGZlNDQ2
NWI3YzgpLCBDKGIxZWEzYTgyNDM5OTZmMTUpLCBDKGNhYmJjY2VkYjY0MDc1NzEpLAorICAgICBD
KGQxZTQwYTg0YzQ0NWVjM2EpLCBDKDMzMzAyYWE5MDhjZjQwMzkpLCBDKDlmMTVmNzkyMTFiNWNk
ZjgpLAorICAgICBDKDNmNTUzOGVmKX0sCisgICAge0MoMjM2ODI3YmVhZTI4MmE0NiksIEMoZTQz
OTcwMjIxMTM5Yzk0NiksIEMoNGYzYWM2ZmFhODM3YTNhYSksCisgICAgIEMoNzFmZWMwZjk3MjI0
ODkxNSksIEMoMjE3MGVjMjA2MWYyNDU3NCksIEMoOWViMzQ2YjZjYWEzNmU4MiksCisgICAgIEMo
MjkwOGYwZmRiY2E0OGU3MyksIEMoNzFmZWMwZjk3MjI0ODkxNSksIEMoMjE3MGVjMjA2MWYyNDU3
NCksCisgICAgIEMoOWViMzQ2YjZjYWEzNmU4MiksIEMoMjkwOGYwZmRiY2E0OGU3MyksIEMoODEw
MWM5OWYwN2M2NGFiYiksCisgICAgIEMoYjlmNGIwMmIxYjZhOTZhNyksIEMoNTgzYTJiMTBjZDIy
MmY4OCksIEMoMTk5ZGFlNGNmOWRiMjRjKSwgQyg3MGViMWExZil9LAorICAgIHtDKGMzODVlNDM1
MTM2ZWNmN2MpLCBDKGQ5ZDE3MzY4ZmY2YzRhMDgpLCBDKDFiMzFlZWQ0ZTUyNTFhNjcpLAorICAg
ICBDKGRmMDFhMzIyYzQzYTYyMDApLCBDKDI5OGI2NWExNzE0YjVhN2UpLCBDKDkzM2I4M2YwYWVk
ZjIzYyksCisgICAgIEMoMTU3YmNiNDRkNjNmNzY1YSksIEMoZGYwMWEzMjJjNDNhNjIwMCksIEMo
Mjk4YjY1YTE3MTRiNWE3ZSksCisgICAgIEMoOTMzYjgzZjBhZWRmMjNjKSwgQygxNTdiY2I0NGQ2
M2Y3NjVhKSwgQyhkNmU5ZmM3YTI3MmQ4YjUxKSwKKyAgICAgQygzZWU1MDczZWYxYTliNzc3KSwg
Qyg2MzE0OWUzMWZhYzAyYzU5KSwgQygyZjc5NzlmZjYzNmJhMWQ4KSwKKyAgICAgQyhjZmQ2M2I4
Myl9LAorICAgIHtDKGUzZjY4MjhiNjAxNzA4NmQpLCBDKDIxYjRkMTkwMDU1NGIzYjApLCBDKGJl
ZjM4YmUxODA5ZTI0ZjEpLAorICAgICBDKGQ5MzI1MTc1ODk4NWVlNmMpLCBDKDMyYTllOWY4MmJh
MmE5MzIpLCBDKDM4MjJhYWNhYTk1ZjMzMjkpLAorICAgICBDKGRiMzQ5YjJmOTBhNDkwZDgpLCBD
KGQ5MzI1MTc1ODk4NWVlNmMpLCBDKDMyYTllOWY4MmJhMmE5MzIpLAorICAgICBDKDM4MjJhYWNh
YTk1ZjMzMjkpLCBDKGRiMzQ5YjJmOTBhNDkwZDgpLCBDKDhkNDkxOTRhODk0YTE5Y2EpLAorICAg
ICBDKDc5YTc4YjA2ZTQyNzM4ZTYpLCBDKDdlMGYxZWRhM2QzOTBjNjYpLCBDKDFjMjkxZDdlNjQx
MTAwYTUpLAorICAgICBDKDg5NGE1MmVmKX0sCisgICAge0MoODUxZmZmMjg1NTYxZGNhMCksIEMo
NGQxMjc3ZDczY2RmNDE2ZiksIEMoMjhjY2ZmYTYxMDEwZWJlMiksCisgICAgIEMoNzdhNGNjYWNk
MTMxZDllZSksIEMoZTFkMDhlZWIyZjBlMjlhYSksIEMoNzBiOWUzMDUxMzgzZmE0NSksCisgICAg
IEMoNTgyZDAxMjA0MjVjYWJhKSwgQyg3N2E0Y2NhY2QxMzFkOWVlKSwgQyhlMWQwOGVlYjJmMGUy
OWFhKSwKKyAgICAgQyg3MGI5ZTMwNTEzODNmYTQ1KSwgQyg1ODJkMDEyMDQyNWNhYmEpLCBDKGE3
NDBlZWYxODQ2ZTQ1NjQpLAorICAgICBDKDU3MmRkZGI3NGFjM2FlMDApLCBDKGZkYjVjYTk1Nzkx
NjNiYmQpLCBDKGE2NDliOWI3OTljNjE1ZDIpLAorICAgICBDKDljZGU2YTU0KX0sCisgICAge0Mo
NjExNTJhNjM1OTVhOTZkOSksIEMoZDFhM2E5MWVmM2E3YmE0NSksIEMoNDQzYjZiYjRhNDkzYWQw
YyksCisgICAgIEMoYTE1NDI5NmQxMTM2MmQwNiksIEMoZDBmMGJmMWYxY2IwMmZjMSksIEMoY2Ni
ODdlMDkzMDlmOTBkMSksCisgICAgIEMoYjI0YThlNDg4MTkxMTEwMSksIEMoYTE1NDI5NmQxMTM2
MmQwNiksIEMoZDBmMGJmMWYxY2IwMmZjMSksCisgICAgIEMoY2NiODdlMDkzMDlmOTBkMSksIEMo
YjI0YThlNDg4MTkxMTEwMSksIEMoMWE0ODFiNDUyODU1OWY1OCksCisgICAgIEMoYmY4MzdhMzE1
MDg5Njk5NSksIEMoNDk4OWVmNmI5NDFhMzc1NyksIEMoMmU3MjVhYjcyZDBiMjk0OCksCisgICAg
IEMoNmM0ODk4ZDUpfSwKKyAgICB7Qyg0NDQ3M2UwM2JlMzA2Yzg4KSwgQygzMDA5Nzc2MWY4NzI0
NzJhKSwgQyg5ZmQxYjY2OWJmYWQ4MmQ3KSwKKyAgICAgQygzYmFiMThiMTY0Mzk2NzgzKSwgQyg0
N2UzODVmZjlkNGMwNmYpLCBDKDE4MDYyMDgxYmY1NThkZiksCisgICAgIEMoNjM0MTZlYjY4ZjEw
NGEzNiksIEMoM2JhYjE4YjE2NDM5Njc4MyksIEMoNDdlMzg1ZmY5ZDRjMDZmKSwKKyAgICAgQygx
ODA2MjA4MWJmNTU4ZGYpLCBDKDYzNDE2ZWI2OGYxMDRhMzYpLCBDKDRhYmRhMTU2MGM0N2FjODAp
LAorICAgICBDKDFlYTBlNjNkYzY1ODdhZWUpLCBDKDMzZWM3OWQ5MmViYzFkZSksIEMoOTRmOWRj
Y2VmNzcxZTA0OCksIEMoMTNlMTk3OGUpfSwKKyAgICB7QygzZWFkNWYyMWQzNDQwNTYpLCBDKGZi
NjQyMDM5M2NmYjA1YzMpLCBDKDQwNzkzMjM5NGNiYmQzMDMpLAorICAgICBDKGFjMDU5NjE3ZjU5
MDY2NzMpLCBDKDk0ZDUwZDNkY2QzMDY5YTcpLCBDKDJiMjZjM2I5MmRlYTBmMCksCisgICAgIEMo
OTliNzM3NGNjNzhmYzNmYiksIEMoYWMwNTk2MTdmNTkwNjY3MyksIEMoOTRkNTBkM2RjZDMwNjlh
NyksCisgICAgIEMoMmIyNmMzYjkyZGVhMGYwKSwgQyg5OWI3Mzc0Y2M3OGZjM2ZiKSwgQygxYThl
M2M3M2NkZDQwZWU4KSwKKyAgICAgQyhjYmI1ZmNhMDY3NDdmNDViKSwgQyhjZWVjNDQyMzhiMjkx
ODQxKSwgQygyOGJmMzVjY2U5YzkwYTI1KSwgQyg1MWI0YmE4KX0sCisgICAge0MoNmFiYmZkZTM3
ZWUwM2I1YiksIEMoODNmZWJmMTg4ZDJjYzExMyksIEMoY2RhN2I2MmQ5NGQ1YjhlZSksCisgICAg
IEMoYTQzNzU1OTBiOGFlN2M4MiksIEMoMTY4ZmQ0MmY5ZWNhZTRmZiksIEMoMjNiYmRlNDNkZTJj
YjIxNCksCisgICAgIEMoYThjMzMzMTEyYTI0M2M4YyksIEMoYTQzNzU1OTBiOGFlN2M4MiksIEMo
MTY4ZmQ0MmY5ZWNhZTRmZiksCisgICAgIEMoMjNiYmRlNDNkZTJjYjIxNCksIEMoYThjMzMzMTEy
YTI0M2M4YyksIEMoMTBhYzAxMmU4YzUxOGI0OSksCisgICAgIEMoNjRhNDQ2MDVkOGIyOTQ1OCks
IEMoYTY3ZTcwMWQyYTY3OTA3NSksIEMoM2EzYTIwZjQzZWM5MjMwMyksCisgICAgIEMoYjZiMDZl
NDApfSwKKyAgICB7Qyg5NDNlN2VkNjNiM2MwODApLCBDKDFlZjIwN2U5NDQ0ZWY3ZjgpLCBDKGVm
NGE5ZjlmOGM2ZjliNGEpLAorICAgICBDKDZiNTRmYzM4ZDZhODQxMDgpLCBDKDMyZjQyMTJhNDdh
NDY2NSksIEMoNmI1YTlhOGY2NGVlMWRhNiksCisgICAgIEMoOWY3NGU4NmM2ZGE2OTQyMSksIEMo
NmI1NGZjMzhkNmE4NDEwOCksIEMoMzJmNDIxMmE0N2E0NjY1KSwKKyAgICAgQyg2YjVhOWE4ZjY0
ZWUxZGE2KSwgQyg5Zjc0ZTg2YzZkYTY5NDIxKSwgQyg5NDZkZDBjYjMwYzFhMDhlKSwKKyAgICAg
QyhmZGYzNzY5NTY5MDdlYWFhKSwgQyhhNTkwNzRjNmVlYzAzMDI4KSwgQyhiMWEzYWJjZjI4M2Yz
NGFjKSwgQygyNDBhMmYyKX0sCisgICAge0MoZDcyY2UwNTE3MWVmOGExYSksIEMoYzZiZDZiZDg2
OTIwMzg5NCksIEMoYzc2MGU2Mzk2NDU1ZDIzYSksCisgICAgIEMoZjg2YWYwYjQwZGNjZTdiKSwg
Qyg4ZDNjMTVkNjEzMzk0ZDNjKSwgQyg0OTFlNDAwNDkxY2Q0ZWNlKSwKKyAgICAgQyg3YzE5ZDM1
MzBlYTM1NDdmKSwgQyhmODZhZjBiNDBkY2NlN2IpLCBDKDhkM2MxNWQ2MTMzOTRkM2MpLAorICAg
ICBDKDQ5MWU0MDA0OTFjZDRlY2UpLCBDKDdjMTlkMzUzMGVhMzU0N2YpLCBDKDEzNjI5NjNhMWRj
MzJhZjkpLAorICAgICBDKGZiOWJjMTE3NjJlMTM4NWMpLCBDKDllMTY0ZWYxZjUzNzYwODMpLCBD
KDZjMTU4MTliNWU4MjhhN2UpLAorICAgICBDKDVkY2VmYzMwKX0sCisgICAge0MoNDE4MjgzMmI1
MmQ2MzczNSksIEMoMzM3MDk3ZTEyM2VlYTQxNCksIEMoYjVhNzJjYTA0NTZkZjkxMCksCisgICAg
IEMoN2ViYzAzNDIzNWJjMTIyZiksIEMoZDlhNzc4M2Q0ZWRkODA0OSksIEMoNWY4YjA0YTE1YWU0
MjM2MSksCisgICAgIEMoZmMxOTMzNjMzMzY0NTNkZCksIEMoN2ViYzAzNDIzNWJjMTIyZiksIEMo
ZDlhNzc4M2Q0ZWRkODA0OSksCisgICAgIEMoNWY4YjA0YTE1YWU0MjM2MSksIEMoZmMxOTMzNjMz
MzY0NTNkZCksIEMoOWI2YzUwMjI0ZWY4YzRmOCksCisgICAgIEMoYmEyMjVjNzk0MmQxNmMzZiks
IEMoNmY2ZDU1MjI2YTczYzQxMiksIEMoYWJjYTA2MWZlMDcyMTUyYSksCisgICAgIEMoN2E0OGIx
MDUpfSwKKyAgICB7QyhkNmNkYWU4OTI1ODRhMmNiKSwgQyg1OGRlMGZhNGVjYTE3ZGNkKSwgQyg0
M2RmMzBiOGY1ZjFjYjAwKSwKKyAgICAgQyg5ZTRlYTVhNDk0MWUwOTdkKSwgQyg1NDdlMDQ4ZDVh
OWRhYWJhKSwgQyhlYjZlY2JiMGI4MzFkMTg1KSwKKyAgICAgQyhlMDE2OGRmNWZhZDBjNjcwKSwg
Qyg5ZTRlYTVhNDk0MWUwOTdkKSwgQyg1NDdlMDQ4ZDVhOWRhYWJhKSwKKyAgICAgQyhlYjZlY2Ji
MGI4MzFkMTg1KSwgQyhlMDE2OGRmNWZhZDBjNjcwKSwgQyhhZmE5NzA1Zjk4YzJjOTZhKSwKKyAg
ICAgQyg3NDk0MzZmNDgxMzdhOTZiKSwgQyg3NTljMDQxZmMyMWRmNDg2KSwgQyhiMjNiZjQwMDEw
N2FhMmVjKSwKKyAgICAgQyhmZDU1MDA3Yil9LAorICAgIHtDKDVjOGU5MGJjMjY3YzVlZTQpLCBD
KGU5YWUwNDQwNzVkOTkyZDkpLCBDKGYyMzRjYmZkMWYwYTFlNTkpLAorICAgICBDKGNlMjc0NDUy
MTk0NGYxNGMpLCBDKDEwNGY4MDMyZjk5ZGMxNTIpLCBDKDRlN2Y0MjViZmFjNjdjYTcpLAorICAg
ICBDKDk0NjFiOTExYTFjNmQ1ODkpLCBDKGNlMjc0NDUyMTk0NGYxNGMpLCBDKDEwNGY4MDMyZjk5
ZGMxNTIpLAorICAgICBDKDRlN2Y0MjViZmFjNjdjYTcpLCBDKDk0NjFiOTExYTFjNmQ1ODkpLCBD
KDVlNWVjYzcyNmRiOGI2MGQpLAorICAgICBDKGNjZTY4YjA1ODYwODNiNTEpLCBDKDhhN2Y4ZTU0
YTljYmEwZmMpLCBDKDQyZjAxMDE4MWQxNmYwNDkpLAorICAgICBDKDZiOTU4OTRjKX0sCisgICAg
e0MoYmJkN2YzMGFjMzEwYTZmMyksIEMoYjIzYjU3MGQyNjY2Njg1ZiksIEMoZmIxM2ZiMDhjOTgx
NGZlNyksCisgICAgIEMoNGVlMTA3MDQyZTUxMjM3NCksIEMoMWUyYzhjMGQxNjA5N2UxMyksIEMo
MjEwYzc1MDA5OTVhYTBlNiksCisgICAgIEMoNmMxMzE5MDU1NzEwNjQ1NyksIEMoNGVlMTA3MDQy
ZTUxMjM3NCksIEMoMWUyYzhjMGQxNjA5N2UxMyksCisgICAgIEMoMjEwYzc1MDA5OTVhYTBlNiks
IEMoNmMxMzE5MDU1NzEwNjQ1NyksIEMoYTk5YjMxYzk2Nzc3ZjM4MSksCisgICAgIEMoODMxMmFl
ODMwMWQzODZjMCksIEMoZWQ1MDQyYjJhNGZhOTZhMyksIEMoZDcxZDFiYjIzOTA3ZmU5NyksCisg
ICAgIEMoMzM2MGU4MjcpfSwKKyAgICB7QygzNmEwOTdhYTQ5NTE5ZDk3KSwgQyg4MjA0MzgwYTcz
YzQwNjUpLCBDKDc3YzIwMDRiZGQ5ZTI3NmEpLAorICAgICBDKDZlZTFmODE3Y2UwYjdhZWUpLCBD
KGU5ZGNiMzUwN2YwNTk2Y2EpLCBDKDZiYzYzYzY2NmI1MTAwZTIpLAorICAgICBDKGUwYjA1NmYx
ODIxNzUyYWYpLCBDKDZlZTFmODE3Y2UwYjdhZWUpLCBDKGU5ZGNiMzUwN2YwNTk2Y2EpLAorICAg
ICBDKDZiYzYzYzY2NmI1MTAwZTIpLCBDKGUwYjA1NmYxODIxNzUyYWYpLCBDKDhlYTExMTRlNjAy
OTI2NzgpLAorICAgICBDKDkwNGI4MGI0NmJlY2M3NyksIEMoNDZjZDliYjZlOWRmZjUyZiksIEMo
NGM5MWUzYjY5ODM1NTU0MCksIEMoNDUxNzdlMGIpfSwKKyAgICB7QyhkYzc4Y2IwMzJjNDkyMTcp
LCBDKDExMjQ2NDA4M2Y4M2UwM2EpLCBDKDk2YWU1M2UyODE3MGMwZjUpLAorICAgICBDKGQzNjdm
ZjU0OTUyYTk1OCksIEMoY2RhZDkzMDY1NzM3MTE0NyksIEMoYWEyNGRjMmE5NTczZDVmZSksCisg
ICAgIEMoZWIxMzZkYWE4OWRhNTExMCksIEMoZDM2N2ZmNTQ5NTJhOTU4KSwgQyhjZGFkOTMwNjU3
MzcxMTQ3KSwKKyAgICAgQyhhYTI0ZGMyYTk1NzNkNWZlKSwgQyhlYjEzNmRhYTg5ZGE1MTEwKSwg
QyhkZTYyMzAwNWY2ZDQ2MDU3KSwKKyAgICAgQyhiNTBjMGM5MmI5NWU5YjdmKSwgQyhhOGFhNTQw
NTBiODFjOTc4KSwgQyg1NzNmYjVjNzg5NWFmOWI1KSwKKyAgICAgQyg3YzZmZmZlNCl9LAorICAg
IHtDKDQ0MTU5M2UwZGE5MjJkZmUpLCBDKDkzNmVmNDYwNjE0NjliMzIpLCBDKDIwNGExOTIxMTk3
ZGRkODcpLAorICAgICBDKDUwZDhhNzBlN2E4ZDhmNTYpLCBDKDI1NmQxNTBhZTc1ZGFiNzYpLCBD
KGU4MWY0YzRhMTk4OTAzNmEpLAorICAgICBDKGQwZjhkYjM2NWY5ZDdlMDApLCBDKDUwZDhhNzBl
N2E4ZDhmNTYpLCBDKDI1NmQxNTBhZTc1ZGFiNzYpLAorICAgICBDKGU4MWY0YzRhMTk4OTAzNmEp
LCBDKGQwZjhkYjM2NWY5ZDdlMDApLCBDKDc1M2Q2ODY2NzdiMTQ1MjIpLAorICAgICBDKDlmNzZl
MGNiNmYyZDBhNjYpLCBDKGFiMTRmOTU5ODhlYzBkMzkpLCBDKDk3NjIxZDlkYTljOTgxMmYpLAor
ICAgICBDKGJiYzc4ZGE0KX0sCisgICAge0MoMmJhMzg4M2Q3MWNjMjEzMyksIEMoNzJmMmJiYjMy
YmVkMWEzYyksIEMoMjdlMWJkOTZkNDg0MzI1MSksCisgICAgIEMoYTkwZjc2MWU4ZGIxNTQzYSks
IEMoYzMzOWUyM2MwOTcwM2NkOCksIEMoZjBjNjYyNGM0YjA5OGZkMyksCisgICAgIEMoMWJhZTIw
NTNlNDFmYTRkOSksIEMoYTkwZjc2MWU4ZGIxNTQzYSksIEMoYzMzOWUyM2MwOTcwM2NkOCksCisg
ICAgIEMoZjBjNjYyNGM0YjA5OGZkMyksIEMoMWJhZTIwNTNlNDFmYTRkOSksIEMoMzU4OWUyNzNj
MjJiYTA1OSksCisgICAgIEMoNjM3OTgyNDZlNTkxMWEwYiksIEMoMThlNzEwZWMyNjhmYzVkYyks
IEMoNzE0YTEyMmRlMWQwNzRmMyksCisgICAgIEMoYzVjMjVkMzkpfSwKKyAgICB7QyhmMmI2ZDJh
ZGY4NDIzNjAwKSwgQyg3NTE0ZTJmMDE2YTQ4NzIyKSwgQyg0MzA0NTc0M2E1MDM5NmJhKSwKKyAg
ICAgQygyM2RhY2I4MTE2NTJhZDRmKSwgQyhjOTgyZGE0ODBlMGQ0YzdkKSwgQygzYTljOGVkNWEz
OTlkMGE5KSwKKyAgICAgQyg5NTFiOGQwODQ2OTFkNGU0KSwgQygyM2RhY2I4MTE2NTJhZDRmKSwg
QyhjOTgyZGE0ODBlMGQ0YzdkKSwKKyAgICAgQygzYTljOGVkNWEzOTlkMGE5KSwgQyg5NTFiOGQw
ODQ2OTFkNGU0KSwgQyhkOWY4N2I0OTg4Y2ZmMmY3KSwKKyAgICAgQygyMTdhMTkxZDk4NmFhM2Jj
KSwgQyg2YWQyM2M1NmI0ODAzNTApLCBDKGRkNzg2NzM5MzhjZWIyZTcpLCBDKGI2ZTVkMDZlKX0s
CisgICAge0MoMzhmZmZlN2YzNjgwZDYzYyksIEMoZDUxMzMyNTI1NWE3YTZkMSksIEMoMzFlZDQ3
NzkwZjZjYTYyZiksCisgICAgIEMoYzgwMWZhYWEwYTJlMzMxZiksIEMoNDkxZGJjNTgyNzljN2Y4
OCksIEMoOWMwMTc4ODQ4MzIxYzk3YSksCisgICAgIEMoOWQ5MzRmODE0ZjRkNmEzYyksIEMoYzgw
MWZhYWEwYTJlMzMxZiksIEMoNDkxZGJjNTgyNzljN2Y4OCksCisgICAgIEMoOWMwMTc4ODQ4MzIx
Yzk3YSksIEMoOWQ5MzRmODE0ZjRkNmEzYyksIEMoNjA2YTNlNGZjODc2MzE5MiksCisgICAgIEMo
YmMxNWNiMzZhNjc3ZWU4NCksIEMoNTJkNTkwNDE1N2UxZmU3MSksIEMoMTU4OGRkOGIxMTQ1Yjc5
YiksCisgICAgIEMoNjE3ODUwNGUpfSwKKyAgICB7QyhiNzQ3N2JmMGI5Y2UzN2M2KSwgQyg2M2Ix
YzU4MGE3ZmQwMmE0KSwgQyhmNjQzM2I5ZjEwYTVkYWMpLAorICAgICBDKDY4ZGQ3NmRiOWQ2NGVj
YTcpLCBDKDM2Mjk3NjgyYjY0YjY3KSwgQyg0MmIxOTJkNzFmNDE0YjdhKSwKKyAgICAgQyg3OTY5
MmNlZjQ0ZmEwMjA2KSwgQyg2OGRkNzZkYjlkNjRlY2E3KSwgQygzNjI5NzY4MmI2NGI2NyksCisg
ICAgIEMoNDJiMTkyZDcxZjQxNGI3YSksIEMoNzk2OTJjZWY0NGZhMDIwNiksIEMoZjA5NzkyNTJm
NDc3NmQwNyksCisgICAgIEMoNGI4N2NkNGYxYzliYmY1MiksIEMoNTFiODRiYmM2MzEyYzcxMCks
IEMoMTUwNzIwZmJmODU0MjhhNyksCisgICAgIEMoYmQ0YzM2MzcpfSwKKyAgICB7Qyg1NWJkYjBl
NzFlM2VkZWJkKSwgQyhjN2FiNTYyYmNmMDU2OGJjKSwgQyg0MzE2NjMzMmY5ZWU2ODRmKSwKKyAg
ICAgQyhiMmUyNTk2NGNkNDA5MTE3KSwgQyhhMDEwNTk5ZDYyODdjNDEyKSwgQyhmYTVkNjQ2MWU3
NjhkZGEyKSwKKyAgICAgQyhjYjNjZTc0ZThlYzRmOTA2KSwgQyhiMmUyNTk2NGNkNDA5MTE3KSwg
QyhhMDEwNTk5ZDYyODdjNDEyKSwKKyAgICAgQyhmYTVkNjQ2MWU3NjhkZGEyKSwgQyhjYjNjZTc0
ZThlYzRmOTA2KSwgQyg2MTIwYWJmZDU0MWEyNjEwKSwKKyAgICAgQyhhYTg4YjE0OGNjOTU3OTRk
KSwgQygyNjg2Y2EzNWRmNjU5MGUzKSwgQyhjNmIwMmQxODYxNmNlOTRkKSwKKyAgICAgQyg2ZTdh
YzQ3NCl9LAorICAgIHtDKDc4MmZhMWIwOGI0NzVlNyksIEMoZmI3MTM4OTUxYzYxYjIzYiksIEMo
OTgyOTEwNWUyMzRmYjExZSksCisgICAgIEMoOWE4YzQzMWY1MDBlZjA2ZSksIEMoZDg0ODU4MWE1
ODBiNmMxMiksIEMoZmVjZmUxMWUxM2EyYmRiNCksCisgICAgIEMoNmM0ZmEwMjczZDdkYjA4Yyks
IEMoOWE4YzQzMWY1MDBlZjA2ZSksIEMoZDg0ODU4MWE1ODBiNmMxMiksCisgICAgIEMoZmVjZmUx
MWUxM2EyYmRiNCksIEMoNmM0ZmEwMjczZDdkYjA4YyksIEMoNDgyZjQzYmY1YWU1OWZjYiksCisg
ICAgIEMoZjY1MWZiY2ExMDVkNzllNiksIEMoZjA5Zjc4Njk1ZDg2NTgxNyksIEMoN2E5OWQwMDky
MDg1Y2Y0NyksCisgICAgIEMoMWZiNGI1MTgpfSwKKyAgICB7QyhjNWRjMTliODc2ZDM3YTgwKSwg
QygxNWZmY2ZmNjY2Y2ZkNzEwKSwgQyhlOGMzMGM3MjAwMzEwM2UyKSwKKyAgICAgQyg3ODcwNzY1
YjQ3MGIyYzVkKSwgQyg3OGE5MTAzZmY5NjBkODIpLCBDKDdiYjUwZmZjOWZhYzc0YjMpLAorICAg
ICBDKDQ3N2U3MGFiMmIzNDdkYjIpLCBDKDc4NzA3NjViNDcwYjJjNWQpLCBDKDc4YTkxMDNmZjk2
MGQ4MiksCisgICAgIEMoN2JiNTBmZmM5ZmFjNzRiMyksIEMoNDc3ZTcwYWIyYjM0N2RiMiksIEMo
YTYyNTIzOGJkZjdjMDdjZiksCisgICAgIEMoMTEyOGQ1MTUxNzQ4MDlmNSksIEMoYjBmMTY0N2U4
MmY0NTg3MyksIEMoMTc3OTJkMWM0ZjIyMmMzOSksCisgICAgIEMoMzFkMTNkNmQpfSwKKyAgICB7
Qyg1ZTExNDE3MTFkMmQ2NzA2KSwgQyhiNTM3ZjZkZWU4ZGU2OTMzKSwgQygzYWYwYTFmYmJlMDI3
YzU0KSwKKyAgICAgQyhlYTM0OWRiYzE2YzJlNDQxKSwgQygzOGE3NDU1YjZhODc3NTQ3KSwgQyg1
Zjk3Yjk3NTBlMzY1NDExKSwKKyAgICAgQyhlOGNkZTdmOTNhZjQ5YTMpLCBDKGVhMzQ5ZGJjMTZj
MmU0NDEpLCBDKDM4YTc0NTViNmE4Nzc1NDcpLAorICAgICBDKDVmOTdiOTc1MGUzNjU0MTEpLCBD
KGU4Y2RlN2Y5M2FmNDlhMyksIEMoYmExMDE5MjVlYzFmN2UyNiksCisgICAgIEMoZDVlODRjYWI4
MTkyYzcxZSksIEMoZTI1NjQyNzcyNmZkZDYzMyksIEMoYTRmMzhlMmM2MTE2ODkwZCksCisgICAg
IEMoMjZmYTcyZTMpfSwKKyAgICB7Qyg3ODJlZGY2ZGEwMDEyMzRmKSwgQyhmNDhjYmQ1YzY2YzQ4
ZjMpLCBDKDgwODc1NGQxZTY0ZTJhMzIpLAorICAgICBDKDVkOWRkZTc3MzUzYjFhNmQpLCBDKDEx
ZjU4YzU0NTgxZmE4YjEpLCBDKGRhOTBmYTdjMjhjMzc0NzgpLAorICAgICBDKDVlOWEyZWFmYzY3
MGE4OGEpLCBDKDVkOWRkZTc3MzUzYjFhNmQpLCBDKDExZjU4YzU0NTgxZmE4YjEpLAorICAgICBD
KGRhOTBmYTdjMjhjMzc0NzgpLCBDKDVlOWEyZWFmYzY3MGE4OGEpLCBDKGUzNWUxYmMxNzJlMDEx
ZWYpLAorICAgICBDKGJmOTI1NWE0NDUwYWU3ZmUpLCBDKDU1Zjg1MTk0ZTI2YmM1NWYpLCBDKDRm
MzI3ODczZTE0ZDBlNTQpLAorICAgICBDKDZhNzQzM2JmKX0sCisgICAge0MoZDI2Mjg1ODQyZmYw
NGQ0NCksIEMoOGYzOGQ3MTM0MWVhY2NhOSksIEMoNWNhNDM2ZjRkYjdhODgzYyksCisgICAgIEMo
YmY0MWU1Mzc2YjlmMGVlYyksIEMoMjI1MmQyMWViN2UxYzBlOSksIEMoZjRiNzBhOTcxODU1ZTcz
MiksCisgICAgIEMoNDBjNzY5NWFhMzY2MmFmZCksIEMoYmY0MWU1Mzc2YjlmMGVlYyksIEMoMjI1
MmQyMWViN2UxYzBlOSksCisgICAgIEMoZjRiNzBhOTcxODU1ZTczMiksIEMoNDBjNzY5NWFhMzY2
MmFmZCksIEMoNzcwZmUxOWUxNmFiNzNiYiksCisgICAgIEMoZDYwM2ViZGE2MzkzZDc0OSksIEMo
ZTU4YzYyNDM5YWE1MGRiZCksIEMoOTZkNTFlNWEwMmQyZDdjZiksCisgICAgIEMoNGU2ZGY3NTgp
fSwKKyAgICB7QyhjNmFiODMwODY1YTZiYWU2KSwgQyg2YWE4ZThkZDRiOTg4MTVjKSwgQyhlZmUz
ODQ2NzEzYzM3MWU1KSwKKyAgICAgQyhhMTkyNGNiZjBiNWY5MjIyKSwgQyg3ZjQ4NzIzNjljMmI0
MjU4KSwgQyhjZDZkYTMwNTMwZjNlYTg5KSwKKyAgICAgQyhiN2Y4YjlhNzA0ZTZjZWExKSwgQyhh
MTkyNGNiZjBiNWY5MjIyKSwgQyg3ZjQ4NzIzNjljMmI0MjU4KSwKKyAgICAgQyhjZDZkYTMwNTMw
ZjNlYTg5KSwgQyhiN2Y4YjlhNzA0ZTZjZWExKSwgQyhmYTA2ZmY0MDQzM2ZkNTM1KSwKKyAgICAg
QyhmYjFjMzZmZThmMDczN2YxKSwgQyhiYjcwNTA1NjExNzFmODApLCBDKGIxYmMyMzIzNTkzNWQ4
OTcpLCBDKGQ1N2Y2M2VhKX0sCisgICAge0MoNDRiM2ExOTI5MjMyODkyKSwgQyg2MWRjYTBlOTE0
ZmMyMTcpLCBDKGE2MDdjYzE0MjA5NmI5NjQpLAorICAgICBDKGY3ZGJjODQzM2M4OWIyNzQpLCBD
KDJmNWY3MDU4MWM5YjdkMzIpLCBDKDM5YmY1ZTVmZWM4MmRjY2EpLAorICAgICBDKDhhZGU1NjM4
ODkwMWE2MTkpLCBDKGY3ZGJjODQzM2M4OWIyNzQpLCBDKDJmNWY3MDU4MWM5YjdkMzIpLAorICAg
ICBDKDM5YmY1ZTVmZWM4MmRjY2EpLCBDKDhhZGU1NjM4ODkwMWE2MTkpLCBDKGMxYzZhNzI1Y2Fh
YjNlYTkpLAorICAgICBDKGMxYzc5MDZjMmY4MGI4OTgpLCBDKDljMzg3MWEwNGNjODg0ZTYpLCBD
KGRmMDE4MTNjYmJkZjIxN2YpLAorICAgICBDKDUyZWY3M2IzKX0sCisgICAge0MoNGI2MDNkNzkz
MmE4ZGU0ZiksIEMoZmFlNjRjNDY0YjhhOGY0NSksIEMoOGZhZmFiNzU2NjFkNjAyYSksCisgICAg
IEMoOGZmZTg3MGVmNGFkYzA4NyksIEMoNjViZWEyYmU0MWY1NWI1NCksIEMoODJmMzUwM2Y2MzZh
ZWYxKSwKKyAgICAgQyg1Zjc4YTI4MjM3OGI2YmIwKSwgQyg4ZmZlODcwZWY0YWRjMDg3KSwgQyg2
NWJlYTJiZTQxZjU1YjU0KSwKKyAgICAgQyg4MmYzNTAzZjYzNmFlZjEpLCBDKDVmNzhhMjgyMzc4
YjZiYjApLCBDKDdiZjI0MjJjMGJlY2VkZGIpLAorICAgICBDKDlkMjM4ZDQ3ODAxMTRiZCksIEMo
N2FkMTk4MzExOTA2NTk3ZiksIEMoZWM4Zjg5MmMwNDIyYWNhMyksIEMoM2NiMzZjMyl9LAorICAg
IHtDKDRlYzBiNTRjZjE1NjZhZmYpLCBDKDMwZDJjNzI2OWIyMDZiZjQpLCBDKDc3YzIyZTgyMjk1
ZTEwNjEpLAorICAgICBDKDNkZjliMDQ0MzQ3NzE1NDIpLCBDKGZlZGRjZTc4NWNjYjY2MWYpLCBD
KGE2NDRhZmY3MTY5MjgyOTcpLAorICAgICBDKGRkNDZhZWU3MzgyNGI0ZWQpLCBDKDNkZjliMDQ0
MzQ3NzE1NDIpLCBDKGZlZGRjZTc4NWNjYjY2MWYpLAorICAgICBDKGE2NDRhZmY3MTY5MjgyOTcp
LCBDKGRkNDZhZWU3MzgyNGI0ZWQpLCBDKGJmOGQ3MTg3OWRhMjliMDIpLAorICAgICBDKGZjODJk
Y2NiZmM4MDIyYTApLCBDKDMxYmZjZDBkOWY0OGQxZDMpLCBDKGM2NGVlMjRkMGU3YjVmOGIpLAor
ICAgICBDKDcyYzM5YmVhKX0sCisgICAge0MoZWQ4YjdhNGIzNDk1NGZmNyksIEMoNTY0MzJkZTMx
ZjRlZTc1NyksIEMoODViZDNhYmFhNTcyYjE1NSksCisgICAgIEMoN2QyYzM4YTkyNmRjMWI4OCks
IEMoNTI0NWI5ZWI0Y2Q2NzkxZCksIEMoZmI1M2FiMDNiOWFkMDg1NSksCisgICAgIEMoMzY2NDAy
NmM4ZmM2NjlkNyksIEMoN2QyYzM4YTkyNmRjMWI4OCksIEMoNTI0NWI5ZWI0Y2Q2NzkxZCksCisg
ICAgIEMoZmI1M2FiMDNiOWFkMDg1NSksIEMoMzY2NDAyNmM4ZmM2NjlkNyksIEMoNDUwMjRkNTA4
MGJjMTk2KSwKKyAgICAgQyhiMjM2ZWJlYzJjYzI3NDApLCBDKDI3MjMxYWQwZTM0NDNiZTQpLCBD
KDE0NTc4MGI2M2Y4MDkyNTApLCBDKGE2NWFhMjVjKX0sCisgICAge0MoNWQyOGI0MzY5NDE3NmMy
NiksIEMoNzE0Y2M4YmMxMmQwNjBhZSksIEMoMzQzNzcyNjI3M2E4M2ZlNiksCisgICAgIEMoODY0
YjFiMjhlYzE2ZWE4NiksIEMoNmE3OGE1YTQwMzllYzJiOSksIEMoOGU5NTk1MzNlMzVhNzY2KSwK
KyAgICAgQygzNDdiN2MyMmI3NWFlNjVmKSwgQyg4NjRiMWIyOGVjMTZlYTg2KSwgQyg2YTc4YTVh
NDAzOWVjMmI5KSwKKyAgICAgQyg4ZTk1OTUzM2UzNWE3NjYpLCBDKDM0N2I3YzIyYjc1YWU2NWYp
LCBDKDUwMDU4OTJiYjYxZTY0N2MpLAorICAgICBDKGZlNjQ2NTE5YjRhMTg5NGQpLCBDKGNkODAx
MDI2Zjc0YThhNTMpLCBDKDg3MTM0NjNlOWExYWI5Y2UpLAorICAgICBDKDc0NzQwNTM5KX0sCisg
ICAge0MoNmExZWYzNjM5ZTFkMjAyZSksIEMoOTE5YmMxYmQxNDVhZDkyOCksIEMoMzBmM2Y3ZTQ4
YzI4YTc3MyksCisgICAgIEMoMmU4YzQ5ZDdjN2FhYTUyNyksIEMoNWUyMzI4ZmM4NzAxZGI3Yyks
IEMoODllZjFhZmNhODFmN2RlOCksCisgICAgIEMoYjE4NTdkYjExOTg1ZDI5NiksIEMoMmU4YzQ5
ZDdjN2FhYTUyNyksIEMoNWUyMzI4ZmM4NzAxZGI3YyksCisgICAgIEMoODllZjFhZmNhODFmN2Rl
OCksIEMoYjE4NTdkYjExOTg1ZDI5NiksIEMoMTc3NjNkNjk1ZjYxNjExNSksCisgICAgIEMoYjhm
N2JmMWZjZGM4MzIyYyksIEMoY2YwYzYxOTM4YWIwN2EyNyksIEMoMTEyMmQzZTZlZGI0ZTg2Niks
CisgICAgIEMoYzNhZTNjMjYpfSwKKyAgICB7QygxNTlmNGQ5ZTAzMDdiMTExKSwgQygzZTE3OTE0
YTU2NzVhMGMpLCBDKGFmODQ5YmQ0MjUwNDdiNTEpLAorICAgICBDKDNiNjllZGFkZjM1NzQzMmIp
LCBDKDNhMmUzMTFjMTIxZTZiZjIpLCBDKDM4MGZhZDFlMjg4ZDU3ZTUpLAorICAgICBDKGJmN2M3
ZThlZjBlM2I4M2EpLCBDKDNiNjllZGFkZjM1NzQzMmIpLCBDKDNhMmUzMTFjMTIxZTZiZjIpLAor
ICAgICBDKDM4MGZhZDFlMjg4ZDU3ZTUpLCBDKGJmN2M3ZThlZjBlM2I4M2EpLCBDKDkyOTY2ZDVm
NDM1NmFlOWIpLAorICAgICBDKDJhMDNmYzY2YzRkNmMwMzYpLCBDKDI1MTZkOGJkZGIwZDUyNTkp
LCBDKGIzZmZlOTczN2ZmNTA5MCksIEMoZjI5ZGI4YTIpfSwKKyAgICB7QyhjYzBhODQwNzI1YTdl
MjViKSwgQyg1N2M2OTQ1NDM5NmUxOTNhKSwgQyg5NzZlYWY3ZWVlMGI0NTQwKSwKKyAgICAgQyhj
ZDdhNDY4NTBiOTVlOTAxKSwgQyhjNTdmN2QwNjBkZGEyNDZmKSwgQyg2Yjk0MDZlYWQ2NDA3OWJm
KSwKKyAgICAgQygxMWIyOGUyMGE1NzNiN2JkKSwgQyhjZDdhNDY4NTBiOTVlOTAxKSwgQyhjNTdm
N2QwNjBkZGEyNDZmKSwKKyAgICAgQyg2Yjk0MDZlYWQ2NDA3OWJmKSwgQygxMWIyOGUyMGE1NzNi
N2JkKSwgQygyZDZkYjM1NmU5MzY5YWNlKSwKKyAgICAgQyhkYzBhZmUxMGZiYTE5MyksIEMoNWNk
YjEwODg1ZGJiZmNlKSwgQyg1YzcwMGUyMDU3ODJlMzVhKSwgQygxZWY0Y2JmNCl9LAorICAgIHtD
KGEyYjI3ZWUyMmY2M2MzZjEpLCBDKDllYmRlMGNlMWIzOTc2YjIpLCBDKDJmZTZhOTJhMjU3YWYz
MDgpLAorICAgICBDKDhjMWRmOTI3YTkzMGFmNTkpLCBDKGE0NjJmNDQyM2M5ZTM4NGUpLCBDKDIz
NjU0MjI1NWIyYWQ4ZDkpLAorICAgICBDKDU5NWQyMDFhMmMxOWQ1YmMpLCBDKDhjMWRmOTI3YTkz
MGFmNTkpLCBDKGE0NjJmNDQyM2M5ZTM4NGUpLAorICAgICBDKDIzNjU0MjI1NWIyYWQ4ZDkpLCBD
KDU5NWQyMDFhMmMxOWQ1YmMpLCBDKDIyYzg3ZDQ2MDRhNjdmMyksCisgICAgIEMoNTg1YTA2ZWI0
YmM0NGM0ZiksIEMoYjQxNzVhN2FjN2VhYmNkOCksIEMoYTQ1N2QzZWViYTE0YWI4YyksCisgICAg
IEMoYTliZTZjNDEpfSwKKyAgICB7QyhkOGYyZjIzNDg5OWJjYWIzKSwgQyhiMTBiMDM3Mjk3YzNh
MTY4KSwgQyhkZWJlYTJjNTEwY2VkYTdmKSwKKyAgICAgQyg5NDk4ZmVmYjg5MDI4N2NlKSwgQyhh
ZTY4YzJiZTViMWE2OWE2KSwgQyg2MTg5ZGZiYTM0ZWQ2NTZjKSwKKyAgICAgQyg5MTY1OGY5NTgz
NmU1MjA2KSwgQyg5NDk4ZmVmYjg5MDI4N2NlKSwgQyhhZTY4YzJiZTViMWE2OWE2KSwKKyAgICAg
Qyg2MTg5ZGZiYTM0ZWQ2NTZjKSwgQyg5MTY1OGY5NTgzNmU1MjA2KSwgQyhjMGJiNGZmZjMyYWVj
ZDRkKSwKKyAgICAgQyg5NDEyNWY1MDVhNTBlZWY5KSwgQyg2YWM0MDZlN2NmYmNlNWJiKSwgQygz
NDRhNGIxZGNkYjdmNWQ4KSwgQyhmYTMxODAxKX0sCisgICAge0MoNTg0ZjI4NTQzODY0ODQ0Ziks
IEMoZDdjZWU5ZmMyZDQ2ZjIwZCksIEMoYTM4ZGNhNTY1NzM4NzIwNSksCisgICAgIEMoN2EwYjZk
YmFiOWExNGU2OSksIEMoYzZkMGE5ZDZiMGUzMWFjNCksIEMoYTY3NGQ4NTgxMmM3Y2Y2KSwKKyAg
ICAgQyg2MzUzOGMwMzUxMDQ5OTQwKSwgQyg3YTBiNmRiYWI5YTE0ZTY5KSwgQyhjNmQwYTlkNmIw
ZTMxYWM0KSwKKyAgICAgQyhhNjc0ZDg1ODEyYzdjZjYpLCBDKDYzNTM4YzAzNTEwNDk5NDApLCBD
KDk3MTBlNWYwYmM5M2QxZCksCisgICAgIEMoYzJiZWE1YmQ3YzU0ZGRkNCksIEMoNDg3MzlhZjJi
ZWQwZDMyZCksIEMoYmEyYzRlMDllMjFmYmE4NSksCisgICAgIEMoODMzMWM1ZDgpfSwKKyAgICB7
QyhhOTRiZTQ2ZGQ5YWE0MWFmKSwgQyhhNTdlNWI3NzIzZDNmOWJkKSwgQygzNGJmODQ1YTUyZmQy
ZiksCisgICAgIEMoODQzYjU4NDYzYzhkZjBhZSksIEMoNzRiMjU4MzI0ZTkxNjA0NSksIEMoYmRk
NzM1MzIzMGViMmIzOCksCisgICAgIEMoZmFkMzFmY2VkN2FiYWRlNSksIEMoODQzYjU4NDYzYzhk
ZjBhZSksIEMoNzRiMjU4MzI0ZTkxNjA0NSksCisgICAgIEMoYmRkNzM1MzIzMGViMmIzOCksIEMo
ZmFkMzFmY2VkN2FiYWRlNSksIEMoMjQzNmFlYWZiMDA0NmY4NSksCisgICAgIEMoNjViYzlhZjll
NWUzMzE2MSksIEMoOTI3MzNiMWIzYWU5MDYyOCksIEMoZjQ4MTQzZWFmNzhhN2E4OSksCisgICAg
IEMoZTk4NzZkYjgpfSwKKyAgICB7Qyg5YTg3YmVhMjI3NDkxZDIwKSwgQyhhNDY4NjU3ZTJiOWM0
M2U3KSwgQyhhZjliYTYwZGI4ZDg5ZWY3KSwKKyAgICAgQyhjYzc2ZjQyOWVhN2ExMmJiKSwgQyg1
ZjMwZWFmMmJiMTQ4NzBhKSwgQyg0MzRlODI0Y2IzZTBjZDExKSwKKyAgICAgQyg0MzFhNGQzODJl
MzlkMTZlKSwgQyhjYzc2ZjQyOWVhN2ExMmJiKSwgQyg1ZjMwZWFmMmJiMTQ4NzBhKSwKKyAgICAg
Qyg0MzRlODI0Y2IzZTBjZDExKSwgQyg0MzFhNGQzODJlMzlkMTZlKSwgQyg5ZTUxZjkxM2M0Nzcz
YTgpLAorICAgICBDKDMyYWIxOTI1ODIzZDBhZGQpLCBDKDk5YzYxYjU0YzFkOGY2OWQpLCBDKDM4
Y2ZiODBmMDJiNDNiMWYpLAorICAgICBDKDI3YjA2MDRlKX0sCisgICAge0MoMjc2ODhjMjQ5NThk
MWE1YyksIEMoZTNiNGExYzk0MjljZjI1MyksIEMoNDhhOTU4MTFmNzBkNjRiYyksCisgICAgIEMo
MzI4MDYzMjI5ZGIyMjg4NCksIEMoNjdlOWM5NWY4YmE5NjAyOCksIEMoN2M2YmYwMWM2MDQzNjA3
NSksCisgICAgIEMoZmE1NTE2MWU3ZDkwMzBiMiksIEMoMzI4MDYzMjI5ZGIyMjg4NCksIEMoNjdl
OWM5NWY4YmE5NjAyOCksCisgICAgIEMoN2M2YmYwMWM2MDQzNjA3NSksIEMoZmE1NTE2MWU3ZDkw
MzBiMiksIEMoZGFkYmMyZjBkYWI5MTY4MSksCisgICAgIEMoZGEzOWQ3YTQ5MzRjYTExKSwgQygx
NjJlODQ1ZDI0YzFiNDVjKSwgQyhlYjViOWRjZDhjNmVkMzFiKSwgQyhkY2VjMDdmMil9LAorICAg
IHtDKDVkMWQzNzc5MGExODczYWQpLCBDKGVkOWNkNGJjYzVmYTEwOTApLCBDKGNlNTFjZGUwNWQ4
Y2Q5NmEpLAorICAgICBDKGY3MmMyNmU2MjQ0MDdlNjYpLCBDKGEwZWI1NDFiZGJjNmQ0MDkpLCBD
KGMzZjQwYTJmNDBiM2IyMTMpLAorICAgICBDKDZhNzg0ZGU2ODc5NDQ5MmQpLCBDKGY3MmMyNmU2
MjQ0MDdlNjYpLCBDKGEwZWI1NDFiZGJjNmQ0MDkpLAorICAgICBDKGMzZjQwYTJmNDBiM2IyMTMp
LCBDKDZhNzg0ZGU2ODc5NDQ5MmQpLCBDKDEwYTM4YTIzZGJlZjc5MzcpLAorICAgICBDKDZhNTU2
MGY4NTMyNTIyNzgpLCBDKGMzMzg3YmJmM2M3YjgyYmEpLCBDKGZiZWU3YzEyZWIwNzI4MDUpLAor
ICAgICBDKGNmZjBhODJhKX0sCisgICAge0MoMWYwM2ZkMThiNzExZWVhOSksIEMoNTY2ZDg5YjE5
NDZkMzgxYSksIEMoNmU5NmU4M2ZjOTI1NjNhYiksCisgICAgIEMoNDA1ZjY2Y2Y4Y2FlMWEzMiks
IEMoZDcyNjE3NDBkOGYxOGNlNiksIEMoZmVhM2FmNjRhNDEzZDBiMiksCisgICAgIEMoZDY0ZDE4
MTBlODM1MjBmZSksIEMoNDA1ZjY2Y2Y4Y2FlMWEzMiksIEMoZDcyNjE3NDBkOGYxOGNlNiksCisg
ICAgIEMoZmVhM2FmNjRhNDEzZDBiMiksIEMoZDY0ZDE4MTBlODM1MjBmZSksIEMoZTEzMzRhMDBh
NTgwYzZlOCksCisgICAgIEMoNDU0MDQ5ZTFiNTJjMTVmKSwgQyg4ODk1ZDgyM2Q5Nzc4MjQ3KSwg
QyhlZmE3ZjJlODhiODI2NjE4KSwgQyhmZWM4MzYyMSl9LAorICAgIHtDKGYwMzE2ZjI4NmNmNTI3
YjYpLCBDKGY4NGMyOTUzOGRlMWFhNWEpLCBDKDc2MTJlZDNjOTIzZDRhNzEpLAorICAgICBDKGQ0
ZWNjZWJlOTM5M2VlOGEpLCBDKDJlYjc4NjdjMjMxOGNjNTkpLCBDKDFjZTYyMWZkNzAwZmUzOTYp
LAorICAgICBDKDY4NjQ1MGQ3YTM0Njg3OGEpLCBDKGQ0ZWNjZWJlOTM5M2VlOGEpLCBDKDJlYjc4
NjdjMjMxOGNjNTkpLAorICAgICBDKDFjZTYyMWZkNzAwZmUzOTYpLCBDKDY4NjQ1MGQ3YTM0Njg3
OGEpLCBDKDc1YTVmMzc1NzlmOGI0Y2IpLAorICAgICBDKDUwMGNjMTZlYjY1NDFkYzcpLCBDKGI3
YjAyMzE3YjUzOWQ5YTYpLCBDKDM1MTlkZGZmNWJjMjBhMjkpLCBDKDc0M2Q4ZGMpfSwKKyAgICB7
QygyOTcwMDhiY2IzZTM0MDFkKSwgQyg2MWE4ZTQwN2Y4MmIwYzY5KSwgQyhhNGEzNWJmZjA1MjRm
YTBlKSwKKyAgICAgQyg3YTYxZDhmNTUyYTUzNDQyKSwgQyg4MjFkMWQ4ZDhjZmFjZjM1KSwgQyg3
Y2MwNjM2MWI4NmQwNTU5KSwKKyAgICAgQygxMTliNjE3YThjMmJlMTk5KSwgQyg3YTYxZDhmNTUy
YTUzNDQyKSwgQyg4MjFkMWQ4ZDhjZmFjZjM1KSwKKyAgICAgQyg3Y2MwNjM2MWI4NmQwNTU5KSwg
QygxMTliNjE3YThjMmJlMTk5KSwgQygyOTk2NDg3ZGE2NzIxNzU5KSwKKyAgICAgQyg2MWE5MDEz
NzYwNzBiOTFkKSwgQyhkODhkZWUxMmFlOWM5YjNjKSwgQyg1NjY1NDkxYmUxZmE1M2E3KSwKKyAg
ICAgQyg2NGQ0MWQyNil9LAorICAgIHtDKDQzYzYyNTI0MTFlZTNiZSksIEMoYjRjYTFiODA3Nzc3
NzE2OCksIEMoMjc0NmRjM2Y3ZGExNzM3ZiksCisgICAgIEMoMjI0N2E0YjIwNThkMWM1MCksIEMo
MWIzZmExODRiMWQ3YmNjMCksIEMoZGViODU2MTM5OTVjMDZlZCksCisgICAgIEMoY2JlMWQ5NTc0
ODVhM2NjZCksIEMoMjI0N2E0YjIwNThkMWM1MCksIEMoMWIzZmExODRiMWQ3YmNjMCksCisgICAg
IEMoZGViODU2MTM5OTVjMDZlZCksIEMoY2JlMWQ5NTc0ODVhM2NjZCksIEMoZGZlMjQxZjhmMzNj
OTZiNiksCisgICAgIEMoNjU5N2ViMDUwMTljMjEwOSksIEMoZGEzNDRiMmE2M2EyMTljZiksIEMo
NzliOGUzODg3NjEyMzc4YSksCisgICAgIEMoYWNkOTBjODEpfSwKKyAgICB7QyhjZTM4YTlhNTRm
YWQ2NTk5KSwgQyg2ZDZmNGE5MGI5ZTg3NTVlKSwgQyhjM2VjYzc5ZmYxMDVkZTNmKSwKKyAgICAg
QyhlOGI5ZWU5NmVmYTJkMGUpLCBDKDkwMTIyOTA1YzRhYjUzNTgpLCBDKDg0ZjgwYzgzMmQ3MTk3
OWMpLAorICAgICBDKDIyOTMxMGYzZmZiYmY0YzYpLCBDKGU4YjllZTk2ZWZhMmQwZSksIEMoOTAx
MjI5MDVjNGFiNTM1OCksCisgICAgIEMoODRmODBjODMyZDcxOTc5YyksIEMoMjI5MzEwZjNmZmJi
ZjRjNiksIEMoY2M5ZWI0MjEwMGNkNjNhNyksCisgICAgIEMoN2EyODNmMmYzZGE3YjlmKSwgQygz
NTliMDYxZDMxNGU3YTcyKSwgQyhkMGQ5NTk3MjAwMjg4NjIpLCBDKDdjNzQ2YTRiKX0sCisgICAg
e0MoMjcwYTkzMDVmZWY3MGNmKSwgQyg2MDAxOTM5OTlkODg0ZjNhKSwgQyhmNGQ0OWVhZTA5ZWQ4
YTEpLAorICAgICBDKDJlMDkxYjg1NjYwZjEyOTgpLCBDKGJmZTM3ZmFlMWNkZDY0YzkpLCBDKDhk
ZGRmYmFiOTMwZjY0OTQpLAorICAgICBDKDJjY2Y0YjA4ZjVkNDE3YSksIEMoMmUwOTFiODU2NjBm
MTI5OCksIEMoYmZlMzdmYWUxY2RkNjRjOSksCisgICAgIEMoOGRkZGZiYWI5MzBmNjQ5NCksIEMo
MmNjZjRiMDhmNWQ0MTdhKSwgQygzNjVjMmVlODU1ODJmZTYpLAorICAgICBDKGRlZTAyN2JjZDM2
ZGI2MmEpLCBDKGIxNTA5OTRkM2M3ZTU4MzgpLCBDKGZkZmQxYTBlNjkyZTQzNmQpLAorICAgICBD
KGIxMDQ3ZTk5KX0sCisgICAge0MoZTcxYmU3YzI4ZTg0ZDExOSksIEMoZWI2YWNlNTk5MzI3MzZl
NiksIEMoNzBjNDM5NzgwN2JhMTJjNSksCisgICAgIEMoN2E5ZDc3NzgxYWM1MzUwOSksIEMoNDQ4
OWMzY2NmZGEzYjM5YyksIEMoZmE3MjJkNGYyNDNiNDk2NCksCisgICAgIEMoMjVmMTU4MDBiZmZk
ZDEyMiksIEMoN2E5ZDc3NzgxYWM1MzUwOSksIEMoNDQ4OWMzY2NmZGEzYjM5YyksCisgICAgIEMo
ZmE3MjJkNGYyNDNiNDk2NCksIEMoMjVmMTU4MDBiZmZkZDEyMiksIEMoZWQ4NWU0MTU3ZmJkMzI5
NyksCisgICAgIEMoYWFiMTk2NzIyN2Q1OWVmZCksIEMoMjE5OTYzMTIxMmViMzgzOSksIEMoM2U0
YzE5MzU5YWFlMWNjMiksCisgICAgIEMoZDFmZDEwNjgpfSwKKyAgICB7QyhiNWI1OGMyNGI1M2Fh
YTE5KSwgQyhkMmE2YWIwNzczZGQ4OTdmKSwgQyhlZjc2MmZlMDFlY2I1Yjk3KSwKKyAgICAgQyg5
ZGVlZmJjZmE0Y2FiMWYxKSwgQyhiNThmNTk0M2NkMjQ5MmJhKSwgQyhhOTZkY2M0ZDFmNDc4MmE3
KSwKKyAgICAgQygxMDJiNjJhODIzMDlkZGU1KSwgQyg5ZGVlZmJjZmE0Y2FiMWYxKSwgQyhiNThm
NTk0M2NkMjQ5MmJhKSwKKyAgICAgQyhhOTZkY2M0ZDFmNDc4MmE3KSwgQygxMDJiNjJhODIzMDlk
ZGU1KSwgQygzNWZlNTI2ODQ3NjNiMzM4KSwKKyAgICAgQyhhZmUyNjE2NjUxZWFhZDFmKSwgQyg0
M2UzODcxNWJkZmEwNWU3KSwgQyg4M2M5YmE4M2I1ZWM0YTQwKSwKKyAgICAgQyg1NjQ4NjA3Nyl9
LAorICAgIHtDKDQ0ZGQ1OWJkMzAxOTk1Y2YpLCBDKDNjY2FiZDc2NDkzYWRhMWEpLCBDKDU0MGRi
NGM4N2Q1NWVmMjMpLAorICAgICBDKGNmYzZkN2FkZGEzNTc5NyksIEMoMTRjN2QxZjMyMzMyY2Yw
MyksIEMoMmQ1NTNmZmJmZjNiZTk5ZCksCisgICAgIEMoYzkxYzRlZTBjYjU2MzE4MiksIEMoY2Zj
NmQ3YWRkYTM1Nzk3KSwgQygxNGM3ZDFmMzIzMzJjZjAzKSwKKyAgICAgQygyZDU1M2ZmYmZmM2Jl
OTlkKSwgQyhjOTFjNGVlMGNiNTYzMTgyKSwgQyg5YWE1ZTUwN2Y0OTEzNmYwKSwKKyAgICAgQyg3
NjBjNWRkMWE4MmM0ODg4KSwgQyhiZWVhN2U5NzRhMWNmYjVjKSwgQyg2NDBiMjQ3Nzc0ZmU0YmY3
KSwKKyAgICAgQyg2MDY5YmU4MCl9LAorICAgIHtDKGI0ZDQ3ODllYjZmMjYzMGIpLCBDKGJmNjk3
MzI2M2NlOGVmMGUpLCBDKGQxYzc1YzUwODQ0YjlkMyksCisgICAgIEMoYmNlOTA1OTAwYzFlYzZl
YSksIEMoYzMwZjMwNGY0MDQ1NDg3ZCksIEMoYTVjNTUwMTY2YjNhMTQyYiksCisgICAgIEMoMmY0
ODJiNGUzNTMyNzI4NyksIEMoYmNlOTA1OTAwYzFlYzZlYSksIEMoYzMwZjMwNGY0MDQ1NDg3ZCks
CisgICAgIEMoYTVjNTUwMTY2YjNhMTQyYiksIEMoMmY0ODJiNGUzNTMyNzI4NyksIEMoMTViMjFk
ZGRkZjM1NTQzOCksCisgICAgIEMoNDk2NDcxZmEzMDA2YmFiKSwgQygyYThmZDQ1OGQwNmMxYTMy
KSwgQyhkYjkxZThhZTgxMmYwYjhkKSwgQygyMDc4MzU5Yil9LAorICAgIHtDKDEyODA3ODMzYzQ2
MzczN2MpLCBDKDU4ZTkyN2VhM2IzNzc2YjQpLCBDKDcyZGQyMGVmMWMyZjhhZDApLAorICAgICBD
KDkxMGI2MTBkZTdhOTY3YmYpLCBDKDgwMWJjODYyMTIwZjZiZjUpLCBDKDk2NTNlZmVlZDU4OTc2
ODEpLAorICAgICBDKGY1MzY3ZmY4M2U5ZWJiYjMpLCBDKDkxMGI2MTBkZTdhOTY3YmYpLCBDKDgw
MWJjODYyMTIwZjZiZjUpLAorICAgICBDKDk2NTNlZmVlZDU4OTc2ODEpLCBDKGY1MzY3ZmY4M2U5
ZWJiYjMpLCBDKGNmNTZkNDg5YWZkMWIwYmYpLAorICAgICBDKGM3Yzc5MzcxNWNhZTNkZTgpLCBD
KDYzMWY5MWQ2NGFiYWU0N2MpLCBDKDVmMWY0MmZiMTRhNDQ0YTIpLAorICAgICBDKDllYTIxMDA0
KX0sCisgICAge0MoZTg4NDE5OTIyYjg3MTc2ZiksIEMoYmNmMzJmNDFhN2RkYmY2ZiksIEMoZDZl
YmVmZDgwODVjMWEwZiksCisgICAgIEMoZDFkNDRmZTk5NDUxZWY3MiksIEMoZWM5NTFiYThlNTFl
MzU0NSksIEMoYzBjYTg2YjM2MDc0NmU5NiksCisgICAgIEMoYWE2NzljYzA2NmE4MDQwYiksIEMo
ZDFkNDRmZTk5NDUxZWY3MiksIEMoZWM5NTFiYThlNTFlMzU0NSksCisgICAgIEMoYzBjYTg2YjM2
MDc0NmU5NiksIEMoYWE2NzljYzA2NmE4MDQwYiksIEMoNTEwNjU4NjFlY2U2ZmZjMSksCisgICAg
IEMoNzY3NzczNjhhMjk5N2UxMSksIEMoODdmMjc4ZjQ2NzMxMTAwYyksIEMoYmJhYTQxNDBiZGJh
NDUyNyksCisgICAgIEMoOWM5Y2ZlODgpfSwKKyAgICB7QygxMDUxOTFlMGVjOGY3ZjYwKSwgQyg1
OTE4ZGJmY2NhOTcxZTc5KSwgQyg2YjI4NWM4YTk0NDc2N2I5KSwKKyAgICAgQyhkM2U4NmFjNGY1
ZWNjZmE0KSwgQyhlNTM5OWRmMmIxMDZjYTEpLCBDKDgxNGFhZGZhY2QyMTdmMWQpLAorICAgICBD
KDI3NTRlM2RlZjFjNDA1YTkpLCBDKGQzZTg2YWM0ZjVlY2NmYTQpLCBDKGU1Mzk5ZGYyYjEwNmNh
MSksCisgICAgIEMoODE0YWFkZmFjZDIxN2YxZCksIEMoMjc1NGUzZGVmMWM0MDVhOSksIEMoOTky
OTAzMjNiOWYwNmU3NCksCisgICAgIEMoYTk3ODJlMDQzZjI3MTQ2MSksIEMoMTNjOGIzYjhjMjc1
YTg2MCksIEMoNjAzOGQ2MjBlNTgxZTllNyksCisgICAgIEMoYjcwYTZkZGQpfSwKKyAgICB7Qyhh
NWI4OGJmNzM5OWE5ZjA3KSwgQyhmY2EzZGRmZDk2NDYxY2M0KSwgQyhlYmU3MzhmZGMwMjgyZmM2
KSwKKyAgICAgQyg2OWFmYmM4MDA2MDZkMGZiKSwgQyg2MTA0Yjk3YTlkYjEyZGY3KSwgQyhmY2Mw
OTE5OGJiOTBiZjlmKSwKKyAgICAgQyhjNWUwNzdlNDFhNjViYTkxKSwgQyg2OWFmYmM4MDA2MDZk
MGZiKSwgQyg2MTA0Yjk3YTlkYjEyZGY3KSwKKyAgICAgQyhmY2MwOTE5OGJiOTBiZjlmKSwgQyhj
NWUwNzdlNDFhNjViYTkxKSwgQyhkYjI2MTgzNWVlOGFhMDhlKSwKKyAgICAgQyhkYjBlZTY2MmU1
Nzk2ZGM5KSwgQyhmYzE4ODBlY2VjNDk5ZTVmKSwgQyg2NDg4NjZmYmUxNTAyMDM0KSwKKyAgICAg
QyhkZWEzNzI5OCl9LAorICAgIHtDKGQwOGMzZjU3NDdkODRmNTApLCBDKDRlNzA4YjI3ZDFiNmY4
YWMpLCBDKDcwZjcwZmQ3MzQ4ODg2MDYpLAorICAgICBDKDkwOWFlMDE5ZDc2MWQwMTkpLCBDKDM2
OGJmNGFhYjFiODZlZjkpLCBDKDMwOGJkNjE2ZDU0NjAyMzkpLAorICAgICBDKDRmZDMzMjY5Zjc2
NzgzZWEpLCBDKDkwOWFlMDE5ZDc2MWQwMTkpLCBDKDM2OGJmNGFhYjFiODZlZjkpLAorICAgICBD
KDMwOGJkNjE2ZDU0NjAyMzkpLCBDKDRmZDMzMjY5Zjc2NzgzZWEpLCBDKDdkNTNiMzdjMTk3MTNl
YWIpLAorICAgICBDKDZiYmE2ZWFiZGE1OGE4OTcpLCBDKDkxYWJiNTBlZmMxMTYwNDcpLCBDKDRl
OTAyZjM0N2UwZTBlMzUpLAorICAgICBDKDhmNDgwODE5KX0sCisgICAge0MoMmY3MmQxMmE0MDA0
NGI0YiksIEMoODg5Njg5MzUyZmVjNTNkZSksIEMoZjAzZTZhZDg3ZWIyZjM2KSwKKyAgICAgQyhl
Zjc5ZjI4ZDg3NGI5ZTJkKSwgQyhiNTEyMDg5ZThlNjNiNzZjKSwgQygyNGRjMDY4MzNiZjE5M2E5
KSwKKyAgICAgQygzYzIzMzA4YmE4ZTk5ZDdlKSwgQyhlZjc5ZjI4ZDg3NGI5ZTJkKSwgQyhiNTEy
MDg5ZThlNjNiNzZjKSwKKyAgICAgQygyNGRjMDY4MzNiZjE5M2E5KSwgQygzYzIzMzA4YmE4ZTk5
ZDdlKSwgQyg1Y2VmZjdiODVjYWNlZmI3KSwKKyAgICAgQyhlZjM5MDMzODg5OGNkNzMpLCBDKGIx
Mjk2N2Q3ZDIyNTRmNTQpLCBDKGRlODc0Y2JkOGFlZjdiNzUpLCBDKDMwYjNiMTYpfSwKKyAgICB7
QyhhYTFmNjFmZGM1YzJlMTFlKSwgQyhjMmM1NmNkMTEyNzdhYjI3KSwgQyhhMWU3MzA2OWZkZjFm
OTRmKSwKKyAgICAgQyg4MTg0YmFiMzZiYjc5ZGYwKSwgQyhjODE5MjljZTg2NTViOTQwKSwgQygz
MDFiMTFiZjhhNGQ4Y2U4KSwKKyAgICAgQyg3MzEyNmZkNDVhYjc1ZGU5KSwgQyg4MTg0YmFiMzZi
Yjc5ZGYwKSwgQyhjODE5MjljZTg2NTViOTQwKSwKKyAgICAgQygzMDFiMTFiZjhhNGQ4Y2U4KSwg
Qyg3MzEyNmZkNDVhYjc1ZGU5KSwgQyg0YmQ2Zjc2ZTQ4ODgyMjlhKSwKKyAgICAgQyg5YWFlMzU1
YjU0YTc1NmQ1KSwgQyhjYTNkZTk3MjZmNmU5OWQ1KSwgQyg4M2Y4MGNhYzViYzM2ODUyKSwKKyAg
ICAgQyhmMzFiYzRlOCl9LAorICAgIHtDKDk0ODliMzZmZTIyNDYyNDQpLCBDKDMzNTUzNjcwMzNi
ZTc0YjgpLCBDKDVmNTdjMjI3N2NiY2U1MTYpLAorICAgICBDKGJjNjE0MTRmOTgwMmVjYWYpLCBD
KDhlZGQxZTdhNTA1NjI5MjQpLCBDKDQ4ZjRhYjc0YTM1ZTk1ZjIpLAorICAgICBDKGNjMWFmY2Zk
OTlhMTgwZTcpLCBDKGJjNjE0MTRmOTgwMmVjYWYpLCBDKDhlZGQxZTdhNTA1NjI5MjQpLAorICAg
ICBDKDQ4ZjRhYjc0YTM1ZTk1ZjIpLCBDKGNjMWFmY2ZkOTlhMTgwZTcpLCBDKDUxN2RkNWUzYWNm
NjYxMTApLAorICAgICBDKDdkZDNhZDllODk3OGIzMGQpLCBDKDFmNmQ1ZGZjNzBkZTgxMmIpLCBD
KDk0N2RhYWJhNjQ0MWFhZjMpLAorICAgICBDKDQxOWY5NTNiKX0sCisgICAge0MoMzU4ZDdjMDQ3
NmEwNDRjZCksIEMoZTBiN2I0N2JjYmQ4ODU0ZiksIEMoZmZiNDJlYzY5NjcwNTUxOSksCisgICAg
IEMoZDQ1ZTQ0YzI2M2U5NWMzOCksIEMoZGY2MWRiNTM5MjNhZTNiMSksIEMoZjJiYzk0OGNjNGZj
MDI3YyksCisgICAgIEMoOGE4MDAwYzYwNjY3NzJhMyksIEMoZDQ1ZTQ0YzI2M2U5NWMzOCksIEMo
ZGY2MWRiNTM5MjNhZTNiMSksCisgICAgIEMoZjJiYzk0OGNjNGZjMDI3YyksIEMoOGE4MDAwYzYw
NjY3NzJhMyksIEMoOWZkOTNjOTQyZDMxZmExNyksCisgICAgIEMoZDc2NTFlY2ViZTA5Y2JkMyks
IEMoNjg2ODJjZWZiNmE2ZjE2NSksIEMoNTQxZWI5OWEyZGNlZTQwZSksCisgICAgIEMoMjBlOWU3
NmQpfSwKKyAgICB7QyhiMGM0OGRmMTQyNzUyNjVhKSwgQyg5ZGE0NDQ4OTc1OTA1ZWZhKSwgQyhk
NzE2NjE4ZTQxNGNlYjZkKSwKKyAgICAgQygzMGU4ODhhZjcwZGYxZTU2KSwgQyg0YmVlNTRiZDQ3
Mjc0ZjY5KSwgQygxNzhiNDA1OWUxYTBhZmU1KSwKKyAgICAgQyg2ZTJjOTZiN2Y1OGU1MTc4KSwg
QygzMGU4ODhhZjcwZGYxZTU2KSwgQyg0YmVlNTRiZDQ3Mjc0ZjY5KSwKKyAgICAgQygxNzhiNDA1
OWUxYTBhZmU1KSwgQyg2ZTJjOTZiN2Y1OGU1MTc4KSwgQyhiYjQyOWQzYjkyNzVlOWJjKSwKKyAg
ICAgQyhjMTk4MDEzZjA5Y2FmZGM2KSwgQyhlYzBhNmVlNGZiNWRlMzQ4KSwgQyg3NDRlMWU4ZWQy
ZWIxZWIwKSwKKyAgICAgQyg2NDZmMGZmOCl9LAorICAgIHtDKGRhYTcwYmIzMDA5NTY1ODgpLCBD
KDQxMGVhNjg4M2EyNDBjNmQpLCBDKGY1YzgyMzlmYjU2NzNlYjMpLAorICAgICBDKDhiMWQ3YmI0
OTAzYzEwNWYpLCBDKGNmYjFjMzIyYjczODkxZDQpLCBDKDVmM2I3OTJiMjJmMDcyOTcpLAorICAg
ICBDKGZkNjQwNjFmOGJlODY4MTEpLCBDKDhiMWQ3YmI0OTAzYzEwNWYpLCBDKGNmYjFjMzIyYjcz
ODkxZDQpLAorICAgICBDKDVmM2I3OTJiMjJmMDcyOTcpLCBDKGZkNjQwNjFmOGJlODY4MTEpLCBD
KDFkMmRiNzEyOTIxY2ZjMmIpLAorICAgICBDKGNkMWIyYjJmMmNlZTE4YWUpLCBDKDZiNmY4Nzkw
ZGM3ZmViMDkpLCBDKDQ2YzE3OWVmYTNmMGY1MTgpLAorICAgICBDKGVlYjdlY2E4KX0sCisgICAg
e0MoNGVjOTdhMjBiNmM0YzdjMiksIEMoNTkxM2IxY2Q0NTRmMjlmZCksIEMoYTk2MjlmOWRhZjA2
ZDY4NSksCisgICAgIEMoODUyYzk0OTkxNTZhOGYzKSwgQygzYTE4MGE2YWJmYjc5MDE2KSwgQyg5
ZmMzYzQ3NjQwMzdjM2M5KSwKKyAgICAgQygyODkwYzQyZmMwZDk3MmNmKSwgQyg4NTJjOTQ5OTE1
NmE4ZjMpLCBDKDNhMTgwYTZhYmZiNzkwMTYpLAorICAgICBDKDlmYzNjNDc2NDAzN2MzYzkpLCBD
KDI4OTBjNDJmYzBkOTcyY2YpLCBDKDFmOTIyMzFkNGU1Mzc2NTEpLAorICAgICBDKGZhYjhiYjA3
YWE1NGI3YjkpLCBDKGUwNWQyZDc3MWM0ODVlZDQpLCBDKGQ1MGIzNGJmODA4Y2E3MzEpLCBDKDgx
MTJiYjkpfSwKKyAgICB7Qyg1YzMzMjM2Mjg0MzVhMmU4KSwgQygxYmVhNDVjZTllNzJhNmUzKSwg
Qyg5MDRmMGE3MDI3ZGRiNTJlKSwKKyAgICAgQyg5MzlmMzFkZTE0ZGNkYzdiKSwgQyhhNjhmZGY0
Mzc5ZGYwNjgpLCBDKGYxNjllMWYwYjgzNTI3OWQpLAorICAgICBDKDc0OThlNDMyZjk2MTliMjcp
LCBDKDkzOWYzMWRlMTRkY2RjN2IpLCBDKGE2OGZkZjQzNzlkZjA2OCksCisgICAgIEMoZjE2OWUx
ZjBiODM1Mjc5ZCksIEMoNzQ5OGU0MzJmOTYxOWIyNyksIEMoMWFhMmExZjExMDg4ZTc4NSksCisg
ICAgIEMoZDZhZDcyZjQ1NzI5ZGU3OCksIEMoOWE2MzgxNDE1N2M4MDI2NyksIEMoNTU1MzhlMzVj
NjQ4ZTQzNSksCisgICAgIEMoODVhNmQ0NzcpfSwKKyAgICB7QyhjMWVmMjZiZWEyNjBhYmRiKSwg
Qyg2ZWU0MjNmMjEzN2Y5MjgwKSwgQyhkZjIxMThiOTQ2ZWQwYjQzKSwKKyAgICAgQygxMWI4N2Zi
MWI5MDBjYzM5KSwgQyhlMzNlNTliOTBkZDgxNWIxKSwgQyhhYTZjYjVjNGJhZmFlNzQxKSwKKyAg
ICAgQyg3Mzk2OTk5NTFjYThjNzEzKSwgQygxMWI4N2ZiMWI5MDBjYzM5KSwgQyhlMzNlNTliOTBk
ZDgxNWIxKSwKKyAgICAgQyhhYTZjYjVjNGJhZmFlNzQxKSwgQyg3Mzk2OTk5NTFjYThjNzEzKSwg
QygyYjQzODlhOTY3MzEwMDc3KSwKKyAgICAgQygxZDUzODI1NjhhMzFjMmM5KSwgQyg1NWQxZTc4
N2ZiZTY4OTkxKSwgQygyNzdjMjU0YmMzMTMwMWU3KSwKKyAgICAgQyg1NmY3NmM4NCl9LAorICAg
IHtDKDZiZTczODFiMTE1ZDY1M2EpLCBDKGVkMDQ2MTkwNzU4ZWE1MTEpLCBDKGRlNmE0NWZmYzNl
ZDExNTkpLAorICAgICBDKGE2NDc2MGU0MDQxNDQ3ZDApLCBDKGUzZWFjNDlmM2UwYzUxMDkpLCBD
KGRkODZjNGQ0Y2I2MjU4ZTIpLAorICAgICBDKGVmYTk4NTdhZmQwNDZjN2YpLCBDKGE2NDc2MGU0
MDQxNDQ3ZDApLCBDKGUzZWFjNDlmM2UwYzUxMDkpLAorICAgICBDKGRkODZjNGQ0Y2I2MjU4ZTIp
LCBDKGVmYTk4NTdhZmQwNDZjN2YpLCBDKGZhYjc5M2RhZTgyNDZmMTYpLAorICAgICBDKGM5ZTNi
MTIxYjMxZDA5NGMpLCBDKGEyYTBmNTU4NTg0NjUyMjYpLCBDKGRiYTZmMGZmMzk0MzYzNDQpLAor
ICAgICBDKDlhZjQ1ZDU1KX0sCisgICAge0MoYWUzZWVjZTE3MTFiMjEwNSksIEMoMTRmZDNmNDAy
N2Y4MWE0YSksIEMoYWJiN2U0NTE3N2QxNTFkYiksCisgICAgIEMoNTAxZjNlOWIxODg2MWU0NCks
IEMoNDY1MjAxMTcwMDc0ZTdkOCksIEMoOTZkNWM5MTk3MGYyY2IxMiksCisgICAgIEMoNDBmZDI4
YzQzNTA2Yzk1ZCksIEMoNTAxZjNlOWIxODg2MWU0NCksIEMoNDY1MjAxMTcwMDc0ZTdkOCksCisg
ICAgIEMoOTZkNWM5MTk3MGYyY2IxMiksIEMoNDBmZDI4YzQzNTA2Yzk1ZCksIEMoZTg2YzRiMDc4
MDJhYWZmMyksCisgICAgIEMoZjMxN2QxNDExMjM3MmE3MCksIEMoNjQxYjEzZTU4NzcxMTY1MCks
IEMoNDkxNTQyMWFiMTA5MGVhYSksCisgICAgIEMoZDFjMzM3NjApfSwKKyAgICB7QygzNzZjMjg1
ODhiOGZiMzg5KSwgQyg2YjA0NWU4NGQ4NDkxZWQyKSwgQyg0ZTg1N2VmZmI3ZDRlN2RjKSwKKyAg
ICAgQygxNTRkZDc5ZmQyZjk4NGI0KSwgQyhmMTExNzE3NzU2MjJjMWMzKSwgQygxZmJlMzA5ODJl
NzhlNmYwKSwKKyAgICAgQyhhNDYwYTE1ZGNmMzI3ZTQ0KSwgQygxNTRkZDc5ZmQyZjk4NGI0KSwg
QyhmMTExNzE3NzU2MjJjMWMzKSwKKyAgICAgQygxZmJlMzA5ODJlNzhlNmYwKSwgQyhhNDYwYTE1
ZGNmMzI3ZTQ0KSwgQyhmMzU5ZTA5MDBjYzNkNTgyKSwKKyAgICAgQyg3ZTExMDcwNDQ3OTc2ZDAw
KSwgQygzMjRlNmRhZjI3NmVhNGI1KSwgQyg3YWE2ZTJkZjBjYzk0ZmEyKSwKKyAgICAgQyhjNTZi
YmY2OSl9LAorICAgIHtDKDU4ZDk0MzUwM2JiNjc0OGYpLCBDKDQxOWM2YzhlODhhYzcwZjYpLCBD
KDU4Njc2MGNiZjNkM2QzNjgpLAorICAgICBDKGI3ZTE2NDk3OWQ1Y2NmYzEpLCBDKDEyY2I0MjMw
ZDI2YmYyODYpLCBDKGYxYmY5MTBkNDRiZDg0Y2IpLAorICAgICBDKGIzMmMyNGM2YTQwMjcyKSwg
QyhiN2UxNjQ5NzlkNWNjZmMxKSwgQygxMmNiNDIzMGQyNmJmMjg2KSwKKyAgICAgQyhmMWJmOTEw
ZDQ0YmQ4NGNiKSwgQyhiMzJjMjRjNmE0MDI3MiksIEMoMTFlZDEyZTM0YzQ4YzAzOSksCisgICAg
IEMoYjBjMjUzOGU1MWQwYTZhYyksIEMoNDI2OWJiNzczZTFkNTUzYSksIEMoZTM1YTlkYmFiZDM0
ODY3KSwgQyhhYmVjZmI5Yil9LAorICAgIHtDKGRmZmY1OTg5ZjVjZmQ5YTEpLCBDKGJjZWUyZTdl
YTNhOTZmODMpLCBDKDY4MWM3ODc0YWRiMjkwMTcpLAorICAgICBDKDNmZjZjOGFjN2MzNmI2M2Ep
LCBDKDQ4YmM4ODMxZDg0OWUzMjYpLCBDKDMwYjA3OGU3NmIwMjE0ZTIpLAorICAgICBDKDQyOTU0
ZTZhZDcyMWI5MjApLCBDKDNmZjZjOGFjN2MzNmI2M2EpLCBDKDQ4YmM4ODMxZDg0OWUzMjYpLAor
ICAgICBDKDMwYjA3OGU3NmIwMjE0ZTIpLCBDKDQyOTU0ZTZhZDcyMWI5MjApLCBDKGY5YWViMzNk
MTY0YjQ0NzIpLAorICAgICBDKDdiMzUzYjExMDgzMWRiZGMpLCBDKDE2ZjY0YzgyZjQ0YWUxN2Ip
LCBDKGI3MTI0NGNjMTY0YjNiMmIpLAorICAgICBDKDhkZTEzMjU1KX0sCisgICAge0MoN2ZiMTll
YjFhNDk2ZThmNSksIEMoZDQ5ZTVkZmRiNWMwODMzZiksIEMoYzBkNWQ3YjJmN2M0OGRjNyksCisg
ICAgIEMoMWE1NzMxM2EzMmYyMmRkZSksIEMoMzBhZjQ2ZTQ5ODUwYmY4YiksIEMoYWEwZmU4ZDEy
ZjgwOGY4MyksCisgICAgIEMoNDQzZTMxZDcwODczYmI2YiksIEMoMWE1NzMxM2EzMmYyMmRkZSks
IEMoMzBhZjQ2ZTQ5ODUwYmY4YiksCisgICAgIEMoYWEwZmU4ZDEyZjgwOGY4MyksIEMoNDQzZTMx
ZDcwODczYmI2YiksIEMoYmJlYjY3YzQ5YzlmZGMxMyksCisgICAgIEMoMThmMWUyYTg4ZjU5Zjlk
NSksIEMoZmIxYjA1MDM4ZTVkZWYxMSksIEMoZDA0NTBiNWNlNGMzOWM1MiksCisgICAgIEMoYTk4
ZWUyOTkpfSwKKyAgICB7Qyg1ZGJhNWIwZGFkY2NkYmFhKSwgQyg0YmE4ZGE4ZGVkODdmY2RjKSwg
QyhmNjkzZmRkMjViYWRmMmYwKSwKKyAgICAgQyhlOTAyOWU2MzY0Mjg2NTg3KSwgQyhhZTY5ZjQ5
ZWNiNDY3MjZjKSwgQygxOGUwMDI2NzkyMTdjNDA1KSwKKyAgICAgQyhiZDZkNjZlODUzMzJhZTlm
KSwgQyhlOTAyOWU2MzY0Mjg2NTg3KSwgQyhhZTY5ZjQ5ZWNiNDY3MjZjKSwKKyAgICAgQygxOGUw
MDI2NzkyMTdjNDA1KSwgQyhiZDZkNjZlODUzMzJhZTlmKSwgQyg2YmYzMzBiMWMzNTNkZDJhKSwK
KyAgICAgQyg3NGU5ZjJlNzFlM2E0MTUyKSwgQygzZjg1NTYwYjUwZjZjNDEzKSwgQyhkMzNhNTJh
NDdlYWVkMmI0KSwKKyAgICAgQygzMDE1ZjU1Nil9LAorICAgIHtDKDY4OGJlZjRiMTM1YTY4Mjkp
LCBDKDhkMzFkODJhYmNkNTRlOGUpLCBDKGY5NWY4YTMwZDU1MDM2ZDcpLAorICAgICBDKDNkOGM5
MGUyN2FhMmUxNDcpLCBDKDJlYzkzN2NlMGFhMjM2YjQpLCBDKDg5YjU2Mzk5NmQzYTBiNzgpLAor
ICAgICBDKDM5YjAyNDEzYjIzYzNmMDgpLCBDKDNkOGM5MGUyN2FhMmUxNDcpLCBDKDJlYzkzN2Nl
MGFhMjM2YjQpLAorICAgICBDKDg5YjU2Mzk5NmQzYTBiNzgpLCBDKDM5YjAyNDEzYjIzYzNmMDgp
LCBDKDhkNDc1YTJlNjRmYWYyZDIpLAorICAgICBDKDQ4NTY3ZjdkY2E0NmVjYWYpLCBDKDI1NGNk
YTA4ZDVmODdhNmQpLCBDKGVjNmFlOWY3MjljNDcwMzkpLAorICAgICBDKDVhNDMwZTI5KX0sCisg
ICAge0MoZDgzMjNiZTA1NDMzYTQxMiksIEMoOGQ0OGZhMmIyYjc2MTQxZCksIEMoM2QzNDZmMjM5
NzgzMzZhNSksCisgICAgIEMoNGQ1MGM3NTM3NTYyMDMzZiksIEMoNTdkYzc2MjViNjFkZmU4OSks
IEMoOTcyM2E5ZjRjMDhhZDkzYSksCisgICAgIEMoNTMwOTU5NmY0OGFiNDU2YiksIEMoNGQ1MGM3
NTM3NTYyMDMzZiksIEMoNTdkYzc2MjViNjFkZmU4OSksCisgICAgIEMoOTcyM2E5ZjRjMDhhZDkz
YSksIEMoNTMwOTU5NmY0OGFiNDU2YiksIEMoN2U0NTMwODgwMTlkMjIwZiksCisgICAgIEMoODc3
NjA2N2JhNmFiOTcxNCksIEMoNjdlMWQwNmJkMTk1ZGUzOSksIEMoNzRhMWEzMmY4OTk0YjkxOCks
CisgICAgIEMoMjc5N2FkZDApfSwKKyAgICB7QygzYjU0MDQyNzhhNTVhN2ZjKSwgQygyM2NhMGIz
MjdjMmQwYTgxKSwgQyhhNmQ2NTMyOTU3MWM4OTJjKSwKKyAgICAgQyg0NTUwNDgwMWUwZTYwNjZi
KSwgQyg4NmU2YzZkNjE1MmEzZDA0KSwgQyg0ZjNkYjFjNTNlY2EyOTUyKSwKKyAgICAgQyhkMjRk
NjliM2U5ZWYxMGYzKSwgQyg0NTUwNDgwMWUwZTYwNjZiKSwgQyg4NmU2YzZkNjE1MmEzZDA0KSwK
KyAgICAgQyg0ZjNkYjFjNTNlY2EyOTUyKSwgQyhkMjRkNjliM2U5ZWYxMGYzKSwgQyg5M2EwZGUy
MjE5ZTY2YTcwKSwKKyAgICAgQyg4OTMyYzcxMTVjY2IxZjhhKSwgQyg1ZWY1MDNmZGYyODQxYThj
KSwgQygzODA2NGRkOWVmYTgwYTQxKSwKKyAgICAgQygyN2Q1NTAxNil9LAorICAgIHtDKDJhOTZh
M2Y5NmM1ZTliYmMpLCBDKDhjYWY4NTY2ZTIxMmRkYTgpLCBDKDkwNGRlNTU5Y2ExNmU0NWUpLAor
ICAgICBDKGYxM2JjMmQ5YzJmZTIyMmUpLCBDKGJlNGNjZWM5YTZjZGNjZmQpLCBDKDM3YjJjYmRk
OTczYTNhYzkpLAorICAgICBDKDdiMzIyM2NkOWM5NDk3YmUpLCBDKGYxM2JjMmQ5YzJmZTIyMmUp
LCBDKGJlNGNjZWM5YTZjZGNjZmQpLAorICAgICBDKDM3YjJjYmRkOTczYTNhYzkpLCBDKDdiMzIy
M2NkOWM5NDk3YmUpLCBDKGQ1OTA0NDQwZjM3NmY4ODkpLAorICAgICBDKDYyYjEzMTg3Njk5YzQ3
M2MpLCBDKDQ3NTFiODkyNTFmMjY3MjYpLCBDKDk1MDBkODRmYTNhNjFiYTgpLAorICAgICBDKDg0
OTQ1YTgyKX0sCisgICAge0MoMjJiZWJmZGNjMjZkMThmZiksIEMoNGI0ZDhkY2IxMDgwN2JhMSks
IEMoNDAyNjVlZWUzMGM2Yjg5NiksCisgICAgIEMoMzc1MmI0MjMwNzNiMTE5YSksIEMoMzc3ZGM1
ZWI3YzY2MmJkYiksIEMoMmI5ZjA3ZjkzYTZjMjViOSksCisgICAgIEMoOTZmMjRlZGUyYmRjMDcx
OCksIEMoMzc1MmI0MjMwNzNiMTE5YSksIEMoMzc3ZGM1ZWI3YzY2MmJkYiksCisgICAgIEMoMmI5
ZjA3ZjkzYTZjMjViOSksIEMoOTZmMjRlZGUyYmRjMDcxOCksIEMoZjc2OTliMTJjMzE0MTdiZCks
CisgICAgIEMoMTdiMzY2ZjQwMWM1OGIyKSwgQyhiZjYwMTg4ZDVmNDM3YjM3KSwgQyg0ODQ0MzZl
NTZkZjE3ZjA0KSwgQygzZWY3ZTIyNCl9LAorICAgIHtDKDYyN2EyMjQ5ZWM2YmJjYzIpLCBDKGMw
NTc4YjQ2MmE0NjczNWEpLCBDKDQ5NzRiOGVlMWMyZDRmMWYpLAorICAgICBDKGViZGJiOTE4ZWI2
ZDgzN2YpLCBDKDhmYjVmMjE4ZGQ4NDE0N2MpLCBDKGM3N2RkMWY4ODFkZjJjNTQpLAorICAgICBD
KDYyZWFjMjk4ZWMyMjZkYzMpLCBDKGViZGJiOTE4ZWI2ZDgzN2YpLCBDKDhmYjVmMjE4ZGQ4NDE0
N2MpLAorICAgICBDKGM3N2RkMWY4ODFkZjJjNTQpLCBDKDYyZWFjMjk4ZWMyMjZkYzMpLCBDKDQz
ZWRlZDgzYzRiNjBiZDApLAorICAgICBDKDlhMGE0MDNiNTQ4NzUwM2IpLCBDKDI1ZjMwNWQ5MTQ3
ZjBiZGEpLCBDKDNhZDQxN2Y1MTFiYzFlNjQpLAorICAgICBDKDM1ZWQ4ZGM4KX0sCisgICAge0Mo
M2FiYWYxNjY3YmEyZjNlMCksIEMoZWU3ODQ3NmI1ZWVhZGMxKSwgQyg3ZTU2YWMwYTZjYTRmM2Y0
KSwKKyAgICAgQyhmMWI5YjQxM2RmOWQ3OWVkKSwgQyhhNzYyMWI2ZmQwMmRiNTAzKSwgQyhkOTJm
N2JhOTkyOGE0ZmZlKSwKKyAgICAgQyg1M2Y1NmJhYmRjYWU5NmE2KSwgQyhmMWI5YjQxM2RmOWQ3
OWVkKSwgQyhhNzYyMWI2ZmQwMmRiNTAzKSwKKyAgICAgQyhkOTJmN2JhOTkyOGE0ZmZlKSwgQyg1
M2Y1NmJhYmRjYWU5NmE2KSwgQyg1MzAyYjg5ZmM0ODcxM2FiKSwKKyAgICAgQyhkMDNlM2IwNGRi
ZTdhMmYyKSwgQyhmYTc0ZWY4YWY2ZDM3NmE3KSwgQygxMDNjOGNkZWExMDUwZWYyKSwKKyAgICAg
Qyg2YTc1ZTQzZCl9LAorICAgIHtDKDM5MzFhYzY4YzVmMWIyYzkpLCBDKGVmZTM4OTIzNjNhYjBm
YjApLCBDKDQwYjcwNzI2ODMzN2NkMzYpLAorICAgICBDKGE1M2E2YjY0YjFhYzg1YzkpLCBDKGQ1
MGU3Zjg2ZWUxYjgzMmIpLCBDKDdiYWIwOGZkZDI2YmEwYTQpLAorICAgICBDKDc1ODc3NDNjMThm
ZTI0NzUpLCBDKGE1M2E2YjY0YjFhYzg1YzkpLCBDKGQ1MGU3Zjg2ZWUxYjgzMmIpLAorICAgICBD
KDdiYWIwOGZkZDI2YmEwYTQpLCBDKDc1ODc3NDNjMThmZTI0NzUpLCBDKGUzYjVkNWQ0OTBjZjU3
NjEpLAorICAgICBDKGRmYzA1M2Y3ZDA2NWVkZDUpLCBDKDQyZmZkOGQ1ZmI3MDEyOWYpLCBDKDU5
OWNhMzg2NzdjY2NkYzMpLAorICAgICBDKDIzNWQ5ODA1KX0sCisgICAge0MoYjk4ZmIwNjA2ZjQx
Njc1NCksIEMoNDZhNmU1NTQ3YmE5OWMxZSksIEMoYzkwOWQ4MjExMmE4ZWQyKSwKKyAgICAgQyhk
YmZhYWU5NjQyYjMyMDVhKSwgQyhmNjc2YTEzMzk0MDJiY2I5KSwgQyhmNGYxMmE1YjFhYzExZjI5
KSwKKyAgICAgQyg3ZGI4YmFkODEyNDlkZWU0KSwgQyhkYmZhYWU5NjQyYjMyMDVhKSwgQyhmNjc2
YTEzMzk0MDJiY2I5KSwKKyAgICAgQyhmNGYxMmE1YjFhYzExZjI5KSwgQyg3ZGI4YmFkODEyNDlk
ZWU0KSwgQyhiMjZlNDZmMmRhOTU5MjJlKSwKKyAgICAgQygyYWFlZGQ1ZTEyZTNjNjExKSwgQyhh
MGUyZDkwODI5NjYwNzQpLCBDKGM2NGRhOGExNjdhZGQ2M2QpLCBDKGY3ZDY5NTcyKX0sCisgICAg
e0MoN2Y3NzI5YTMzZTU4ZmNjNCksIEMoMmU0YmMxZTdhMDIzZWFkNCksIEMoZTcwNzAwOGVhN2Nh
NjIyMiksCisgICAgIEMoNDc0MThhNzE4MDAzMzRhMCksIEMoZDEwMzk1ZDhmYzY0ZDhhNCksIEMo
ODI1N2EzMDA2MmNiNjZmKSwKKyAgICAgQyg2Nzg2ZjliMmRjMWZmMThhKSwgQyg0NzQxOGE3MTgw
MDMzNGEwKSwgQyhkMTAzOTVkOGZjNjRkOGE0KSwKKyAgICAgQyg4MjU3YTMwMDYyY2I2NmYpLCBD
KDY3ODZmOWIyZGMxZmYxOGEpLCBDKDU2MzNmNDM3YmIyZjE4MGYpLAorICAgICBDKGU1YTNhNDA1
NzM3ZDIyZDYpLCBDKGNhMGZmMWVmNmY3ZjBiNzQpLCBDKGQwYWU2MDA2ODRiMTZkZjgpLAorICAg
ICBDKGJhY2QwMTk5KX0sCisgICAge0MoNDJhMGFhOWNlODI4NDhiMyksIEMoNTcyMzI3MzBlNmJl
ZTE3NSksIEMoZjg5YmIzZjM3MDc4MjAzMSksCisgICAgIEMoY2FhMzNjZjliNGY2NjE5YyksIEMo
YjJjODY0OGFkNDljMjA5ZiksIEMoOWU4OWVjZTA3MTJkYjFjMCksCisgICAgIEMoMTAxZDgyNzRh
NzExYTU0YiksIEMoY2FhMzNjZjliNGY2NjE5YyksIEMoYjJjODY0OGFkNDljMjA5ZiksCisgICAg
IEMoOWU4OWVjZTA3MTJkYjFjMCksIEMoMTAxZDgyNzRhNzExYTU0YiksIEMoNTM4ZTc5ZjFlNzAx
MzVjZCksCisgICAgIEMoZTFmNWE3NmY5ODNjODQ0ZSksIEMoNjUzYzA4MmZkNjYwODhmYyksIEMo
MWI5YzliNDY0YjY1NDk1OCksCisgICAgIEMoZTQyOGY1MGUpfSwKKyAgICB7Qyg2YjJjNmQzODQw
OGE0ODg5KSwgQyhkZTNlZjZmNjhmYjI1ODg1KSwgQygyMDc1NGY0NTZjMjAzMzYxKSwKKyAgICAg
Qyg5NDFmNTAyM2MwYzk0M2Y5KSwgQyhkZmRlYjk1NjRmZDY2ZjI0KSwgQygyMTQwY2VjNzA2Yjlk
NDA2KSwKKyAgICAgQyg3YjIyNDI5YjEzMWU5YzcyKSwgQyg5NDFmNTAyM2MwYzk0M2Y5KSwgQyhk
ZmRlYjk1NjRmZDY2ZjI0KSwKKyAgICAgQygyMTQwY2VjNzA2YjlkNDA2KSwgQyg3YjIyNDI5YjEz
MWU5YzcyKSwgQyg5NDIxNWMyMmViOTQwZjQ1KSwKKyAgICAgQyhkMjhiOWVkNDc0ZjcyNDlhKSwg
Qyg2ZjI1ZTg4ZjJmYmY5ZjU2KSwgQyhiNjcxOGY5ZTYwNWIzOGFjKSwKKyAgICAgQyg4MWVhYWFk
Myl9LAorICAgIHtDKDkzMDM4MGEzNzQxZTg2MmEpLCBDKDM0OGQyODYzOGRjNzE2NTgpLCBDKDg5
ZGVkY2ZkMTY1NGVhMGQpLAorICAgICBDKDdlN2Y2MTY4NDA4MDEwNiksIEMoODM3YWNlOTc5NDU4
Mjk3NiksIEMoNWFjOGNhNzZhMzU3ZWIxYiksCisgICAgIEMoMzJiNTgzMDg2MjU2NjFmYiksIEMo
N2U3ZjYxNjg0MDgwMTA2KSwgQyg4MzdhY2U5Nzk0NTgyOTc2KSwKKyAgICAgQyg1YWM4Y2E3NmEz
NTdlYjFiKSwgQygzMmI1ODMwODYyNTY2MWZiKSwgQyhjMDk3MDVjNDU3MjAyNWQ5KSwKKyAgICAg
QyhmOTE4N2Y2YWYwMjkxMzAzKSwgQygxYzBlZGQ4ZWU0YjAyNTM4KSwgQyhlNmNiMTA1ZGFhMDU3
OGEpLCBDKGFkZGJkM2UzKX0sCisgICAge0MoOTQ4MDhiNWQyYWEyNWY5YSksIEMoY2VjNzI5Njgx
MjgxOTVlMCksIEMoZDlmNGRhMmJkYzFlMTMwZiksCisgICAgIEMoMjcyZDhkZDc0ZjMwMDZjYyks
IEMoZWM2YzJhZDFlYzAzZjU1NCksIEMoNGFkMjc2YjI0OWE1ZDVkZCksCisgICAgIEMoNTQ5YTIy
YTE3YzBjZGUxMiksIEMoMjcyZDhkZDc0ZjMwMDZjYyksIEMoZWM2YzJhZDFlYzAzZjU1NCksCisg
ICAgIEMoNGFkMjc2YjI0OWE1ZDVkZCksIEMoNTQ5YTIyYTE3YzBjZGUxMiksIEMoNjAyMTE5Y2I4
MjRkN2NkZSksCisgICAgIEMoZjRkM2NlZjI0MGVmMzVmYSksIEMoZTg4OTg5NWUwMTkxMWJjNyks
IEMoNzg1YTdlNWFjMjBlODUyYiksCisgICAgIEMoZTY2ZGJjYTApfSwKKyAgICB7QyhiMzFhYmIw
OGFlNmUzZDM4KSwgQyg5ZWI5YTk1Y2JkOWU4MjIzKSwgQyg4MDE5ZTc5YjdlZTk0ZWE5KSwKKyAg
ICAgQyg3YjIyNzFhN2EzMjQ4ZTIyKSwgQygzYjRmNzAwZTVhMGJhNTIzKSwgQyg4ZWJjNTIwYzIy
NzIwNmZlKSwKKyAgICAgQyhkYTNmODYxNDkwZjVkMjkxKSwgQyg3YjIyNzFhN2EzMjQ4ZTIyKSwg
QygzYjRmNzAwZTVhMGJhNTIzKSwKKyAgICAgQyg4ZWJjNTIwYzIyNzIwNmZlKSwgQyhkYTNmODYx
NDkwZjVkMjkxKSwgQyhkMDhhNjg5ZjlmM2FhNjBlKSwKKyAgICAgQyg1NDdjMWI5N2EwNjg2NjFm
KSwgQyg0YjE1YTY3ZmEyOTE3MmYwKSwgQyhlYWY0MGMwODUxOTFkODBmKSwKKyAgICAgQyhhZmUx
MWZkNSl9LAorICAgIHtDKGRjY2I1NTM0YTg5M2VhMWEpLCBDKGNlNzFjMzk4NzA4YzYxMzEpLCBD
KGZlMjM5NjMxNTQ1N2MxNjQpLAorICAgICBDKDNmMTIyOWY0ZDBmZDk2ZmIpLCBDKDMzMTMwYWE1
ZmE5ZDQzZjIpLCBDKGU0MjY5M2Q1YjM0ZTYzYWIpLAorICAgICBDKDJmNGVmMmJlNjdmNjIxMDQp
LCBDKDNmMTIyOWY0ZDBmZDk2ZmIpLCBDKDMzMTMwYWE1ZmE5ZDQzZjIpLAorICAgICBDKGU0MjY5
M2Q1YjM0ZTYzYWIpLCBDKDJmNGVmMmJlNjdmNjIxMDQpLCBDKDM3MmU1MTUzNTE2ZTM3YjkpLAor
ICAgICBDKGFmOWVjMTQyYWIxMmNjODYpLCBDKDc3NzkyMGMwOTM0NWUzNTkpLCBDKGU3YzRhMzgz
YmVmOGFkYzYpLAorICAgICBDKGE3MWE0MDZmKX0sCisgICAge0MoNjM2OTE2MzU2NTgxNGRlNiks
IEMoOGZlYjg2ZmIzOGQwOGMyZiksIEMoNDk3NjkzMzQ4NWNjOWEyMCksCisgICAgIEMoN2QzZTgy
ZDViYTI5YTkwZCksIEMoZDU5ODNjYzkzYTlkMTI2YSksIEMoMzdlOWRmZDk1MGU3YjY5MiksCisg
ICAgIEMoODA2NzNiZTZhNzg4OGI4NyksIEMoN2QzZTgyZDViYTI5YTkwZCksIEMoZDU5ODNjYzkz
YTlkMTI2YSksCisgICAgIEMoMzdlOWRmZDk1MGU3YjY5MiksIEMoODA2NzNiZTZhNzg4OGI4Nyks
IEMoNTdmNzMyZGM2MDA4MDhiYyksCisgICAgIEMoNTk0NzcxOTk4MDJjYzc4YiksIEMoZjgyNDgx
MGViOGYyYzJkZSksIEMoYzRhMzQzN2YwNWIzYjYxYyksCisgICAgIEMoOWQ5MGVhZjUpfSwKKyAg
ICB7QyhlZGVlNGZmMjUzZDlmOWIzKSwgQyg5NmVmNzZmYjI3OWVmMGFkKSwgQyhhNGQyMDRkMTc5
ZGIyNDYwKSwKKyAgICAgQygxZjNkY2RmYTUxMzUxMmQ2KSwgQyg0ZGM3ZWMwNzI4MzExN2U0KSwg
Qyg0NDM4YmFlODhhZTI4YmY5KSwKKyAgICAgQyhhYTdlYWU3MmM5MjQ0YTBkKSwgQygxZjNkY2Rm
YTUxMzUxMmQ2KSwgQyg0ZGM3ZWMwNzI4MzExN2U0KSwKKyAgICAgQyg0NDM4YmFlODhhZTI4YmY5
KSwgQyhhYTdlYWU3MmM5MjQ0YTBkKSwgQyhiOWFlZGM4ZDNlY2M3MmRmKSwKKyAgICAgQyhiNzVh
OGViMDkwYTc3ZDYyKSwgQyg2YjE1Njc3ZjljZDkxNTA3KSwgQyg1MWQ4MjgyY2IzYTlkZGJmKSwK
KyAgICAgQyg2NjY1ZGIxMCl9LAorICAgIHtDKDk0MTk5M2RmNmU2MzMyMTQpLCBDKDkyOWJjMWJl
Y2E1YjcyYzYpLCBDKDE0MWZjNTJiOGQ1NTU3MmQpLAorICAgICBDKGIzYjc4MmFkMzA4ZjIxZWQp
LCBDKDRmMjY3NjQ4NTA0MWRlZTApLCBDKGJmZTI3OWFlZDVjYjRiYzgpLAorICAgICBDKDJhNjI1
MDhhNDY3YTIyZmYpLCBDKGIzYjc4MmFkMzA4ZjIxZWQpLCBDKDRmMjY3NjQ4NTA0MWRlZTApLAor
ICAgICBDKGJmZTI3OWFlZDVjYjRiYzgpLCBDKDJhNjI1MDhhNDY3YTIyZmYpLCBDKGU3NGQyOWVh
Yjc0MjM4NWQpLAorICAgICBDKDU2YjA1Y2Q5MGVjZmMyOTMpLCBDKGM2MDM3MjhlYTczZjg4NDQp
LCBDKDg2MzhmY2QyMWJjNjkyYzQpLAorICAgICBDKDljOTc3Y2JmKX0sCisgICAge0MoODU5ODM4
MjkzZjY0Y2Q0YyksIEMoNDg0NDAzYjM5ZDQ0YWQ3OSksIEMoYmY2NzRlNjRkNjRiOTMzOSksCisg
ICAgIEMoNDRkNjhhZmRhOTU2OGYwOCksIEMoNDc4NTY4ZWQ1MWNhMWQ2NSksIEMoNjc5YzIwNGFk
M2Q5ZTc2NiksCisgICAgIEMoYjI4ZTc4ODg3ODQ4OGRjMSksIEMoNDRkNjhhZmRhOTU2OGYwOCks
IEMoNDc4NTY4ZWQ1MWNhMWQ2NSksCisgICAgIEMoNjc5YzIwNGFkM2Q5ZTc2NiksIEMoYjI4ZTc4
ODg3ODQ4OGRjMSksIEMoZDAwMWE4NGQzYTg0ZmFlNiksCisgICAgIEMoZDM3Njk1OGZlNGNiOTEz
ZSksIEMoMTc0MzUyNzdlMzZjODZmMCksIEMoMjM2NTdiMjYzYzM0N2FhNiksCisgICAgIEMoZWU4
M2RkZDQpfSwKKyAgICB7QyhjMTliNTY0OGUwZDlmNTU1KSwgQygzMjhlNDdiMmI3NTYyOTkzKSwg
QyhlNzU2YjkyYmE0YmQ2YTUxKSwKKyAgICAgQyhjMzMxNGUzNjI3NjRkZGI4KSwgQyg2NDgxYzA4
NGVlOWVjNmI1KSwgQyhlZGUyM2ZiOWEyNTE3NzEpLAorICAgICBDKGJkNjE3ZjI2NDMzMjQ1OTAp
LCBDKGMzMzE0ZTM2Mjc2NGRkYjgpLCBDKDY0ODFjMDg0ZWU5ZWM2YjUpLAorICAgICBDKGVkZTIz
ZmI5YTI1MTc3MSksIEMoYmQ2MTdmMjY0MzMyNDU5MCksIEMoZDJkMzBjOWI5NWUwMzBmNSksCisg
ICAgIEMoOGE1MTczMTJmZmM1Nzk1ZSksIEMoOGIxZjMyNTAzM2JkNTM1ZSksIEMoM2VlNmU4Njdl
MDNmMjg5MiksIEMoMjY1MTljYyl9LAorICAgIHtDKGY5NjNiNjNiOTAwNmMyNDgpLCBDKDllOWJm
NzI3ZmZhYTAwYmMpLCBDKGM3M2JhY2M3NWI5MTdlM2EpLAorICAgICBDKDJjNmFhNzA2MTI5Y2M1
NGMpLCBDKDE3YTcwNmY1OWE0OWYwODYpLCBDKGM3YzFlZWM0NTUyMTcxNDUpLAorICAgICBDKDZh
ZGZkYzZlMDc2MDJkNDIpLCBDKDJjNmFhNzA2MTI5Y2M1NGMpLCBDKDE3YTcwNmY1OWE0OWYwODYp
LAorICAgICBDKGM3YzFlZWM0NTUyMTcxNDUpLCBDKDZhZGZkYzZlMDc2MDJkNDIpLCBDKGZiNzVm
Y2EzMGQ4NDhkZDIpLAorICAgICBDKDUyMjhjOWVkMTQ2NTNlZDQpLCBDKDk1Mzk1ODkxMDE1M2Ix
YTIpLCBDKGE0MzAxMDNhMjRmNDJhNWQpLAorICAgICBDKGE0ODVhNTNmKX0sCisgICAge0MoNmE4
YWEwODUyYThjMWYzYiksIEMoYzhmMWU1ZTIwNmEyMTAxNiksIEMoMmFhNTU0YWVkMWViYjUyNCks
CisgICAgIEMoZmMzZTNjMzIyY2Q1ZDg5YiksIEMoYjdlMzkxMWRjMmJkNGViYiksIEMoZmNkNmRh
NWU1ZmFlODMzYSksCisgICAgIEMoNTFlZDNjNDFmODdmOTExOCksIEMoZmMzZTNjMzIyY2Q1ZDg5
YiksIEMoYjdlMzkxMWRjMmJkNGViYiksCisgICAgIEMoZmNkNmRhNWU1ZmFlODMzYSksIEMoNTFl
ZDNjNDFmODdmOTExOCksIEMoZjMxNzUwY2JjMTljNDIwYSksCisgICAgIEMoMTg2ZGFiMWFiYWRh
MWQ4NiksIEMoY2E3Zjg4Y2I4OTRiM2NkNyksIEMoMjg1OWVlYjFjMzczNzkwYyksCisgICAgIEMo
ZjYyYmM0MTIpfSwKKyAgICB7Qyg3NDA0MjhiNGQ0NWU1ZmI4KSwgQyg0Yzk1YTRjZTkyMmNiMGE1
KSwgQyhlOTljM2JhNzhmZWFlNzk2KSwKKyAgICAgQyg5MTRmMWVhMmZkY2ViZjVjKSwgQyg5NTY2
NDUzYzA3Y2QwNjAxKSwgQyg5ODQxYmY2NmQwNDYyY2QpLAorICAgICBDKDc5MTQwYzFjMTg1MzZh
ZWIpLCBDKDkxNGYxZWEyZmRjZWJmNWMpLCBDKDk1NjY0NTNjMDdjZDA2MDEpLAorICAgICBDKDk4
NDFiZjY2ZDA0NjJjZCksIEMoNzkxNDBjMWMxODUzNmFlYiksIEMoYTk2M2I5MzBiMDU4MjBjMiks
CisgICAgIEMoNmE3ZDlmYTBjOGM0NTE1MyksIEMoNjQyMTRjNDBkMDdjZjM5YiksIEMoNzA1N2Rh
ZjFkODA2YzAxNCksCisgICAgIEMoODk3NWE0MzYpfSwKKyAgICB7Qyg2NThiODgzYjNhODcyYjg2
KSwgQygyZjBlMzAzZjBmNjQ4MjdhKSwgQyg5NzUzMzdlMjNkYzQ1ZTEpLAorICAgICBDKDk5NDY4
YTkxNzk4NjE2MmIpLCBDKDdiMzE0MzRhYWM2ZTBhZjApLCBDKGY2OTE1YzE1NjJjN2Q4MmYpLAor
ICAgICBDKGU0MDcxZDgyYTZkZDcxZGIpLCBDKDk5NDY4YTkxNzk4NjE2MmIpLCBDKDdiMzE0MzRh
YWM2ZTBhZjApLAorICAgICBDKGY2OTE1YzE1NjJjN2Q4MmYpLCBDKGU0MDcxZDgyYTZkZDcxZGIp
LCBDKDVmNTMzMWYwNzdiNWQ5OTYpLAorICAgICBDKDdiMzE0YmEyMWI3NDdhNGYpLCBDKDVhNzNj
Yjk1MjFkYTE3ZjUpLCBDKDEyZWQ0MzVmYWUyODZkODYpLAorICAgICBDKDk0ZmY3ZjQxKX0sCisg
ICAge0MoNmRmMGE5NzdkYTVkMjdkNCksIEMoODkxZGQwZTdjYjE5NTA4KSwgQyhmZDY1NDM0YTBi
NzFlNjgwKSwKKyAgICAgQyg4Nzk5ZTQ3NDBlNTczYzUwKSwgQyg5ZTczOWI1MmQwZjM0MWU4KSwg
QyhjZGZkMzRiYTdkN2IwM2ViKSwKKyAgICAgQyg1MDYxODEyY2U2Yzg4NDk5KSwgQyg4Nzk5ZTQ3
NDBlNTczYzUwKSwgQyg5ZTczOWI1MmQwZjM0MWU4KSwKKyAgICAgQyhjZGZkMzRiYTdkN2IwM2Vi
KSwgQyg1MDYxODEyY2U2Yzg4NDk5KSwgQyg2MTJiOGQ4ZjI0MTFkYzVjKSwKKyAgICAgQyg4Nzhi
ZDg4M2QyOWM3Nzg3KSwgQyg0N2E4NDY3MjcxODJiYiksIEMoZWM0OTQ5NTA4YzhiM2I5YSksIEMo
NzYwYWEwMzEpfSwKKyAgICB7QyhhOTAwMjc1NDY0YWUwN2VmKSwgQygxMWYyY2ZkYTM0YmViNGEz
KSwgQyg5YWJmOTFlNWExYzM4ZTQpLAorICAgICBDKDgwNjNkODBhYjI2ZjNkNmQpLCBDKDQxNzdi
NGI5YjRmMDM5M2YpLCBDKDZkZTQyYmE4NjcyYjk2NDApLAorICAgICBDKGQwYmNjZGI3MmM1MWMx
OCksIEMoODA2M2Q4MGFiMjZmM2Q2ZCksIEMoNDE3N2I0YjliNGYwMzkzZiksCisgICAgIEMoNmRl
NDJiYTg2NzJiOTY0MCksIEMoZDBiY2NkYjcyYzUxYzE4KSwgQyhhZjNmNjExYjdmMjJjZjEyKSwK
KyAgICAgQygzODYzYzQxNDkyNjQ1NzU1KSwgQyg5MjhjN2E2MTZhOGYxNGY5KSwgQyhhODJjNzhl
YjJlYWRjNThiKSwKKyAgICAgQygzYmRhNzZkZil9LAorICAgIHtDKDgxMGJjOGFhMGM0MGJjYjAp
LCBDKDQ0OGEwMTk1NjhkMDE0NDEpLCBDKGY2MGVjNTJmNjBkM2FlYWUpLAorICAgICBDKDUyYzQ0
ODM3YWE2ZGZjNzcpLCBDKDE1ZDhkOGZjY2RkNmRjNWIpLCBDKDM0NWI3OTNjY2ZhOTMwNTUpLAor
ICAgICBDKDkzMjE2MGZlODAyY2E5NzUpLCBDKDUyYzQ0ODM3YWE2ZGZjNzcpLCBDKDE1ZDhkOGZj
Y2RkNmRjNWIpLAorICAgICBDKDM0NWI3OTNjY2ZhOTMwNTUpLCBDKDkzMjE2MGZlODAyY2E5NzUp
LCBDKGE2MjRiMGRkOTNmYzE4Y2QpLAorICAgICBDKGQ5NTViMjU0YzIwMzdmMWUpLCBDKGU1NDA1
MzNkMzcwYTY2NGMpLCBDKDJiYTRlYzEyNTE0ZTlkNyksIEMoNDk4ZTJlNjUpfSwKKyAgICB7Qygy
MjAzNjMyN2RlYjU5ZWQ3KSwgQyhhZGMwNWNlYjk3MDI2YTAyKSwgQyg0OGJmZjA2NTQyNjI2NzJi
KSwKKyAgICAgQyhjNzkxYjMxM2FiYTNmMjU4KSwgQyg0NDNjNzc1N2E0NzI3YmVlKSwgQyhlMzBl
NGIyMzcyMTcxYmRmKSwKKyAgICAgQyhmM2RiOTg2YzQxNTZmM2NiKSwgQyhjNzkxYjMxM2FiYTNm
MjU4KSwgQyg0NDNjNzc1N2E0NzI3YmVlKSwKKyAgICAgQyhlMzBlNGIyMzcyMTcxYmRmKSwgQyhm
M2RiOTg2YzQxNTZmM2NiKSwgQyhhOTM5YWVmYWI5N2M2ZTE1KSwKKyAgICAgQyhkYmViOGFjZjFk
NWIwZTZjKSwgQygxZTBlYWI2NjdhNzk1YmJhKSwgQyg4MGRkNTM5OTAyZGY0ZDUwKSwKKyAgICAg
QyhkMzhkZWI0OCl9LAorICAgIHtDKDdkMTRkZmE5NzcyYjAwYzgpLCBDKDU5NTczNWVmYzdlZWFl
ZDcpLCBDKDI5ODcyODU0Zjk0YzM1MDcpLAorICAgICBDKGJjMjQxNTc5ZDgzNDg0MDEpLCBDKDE2
ZGM4MzI4MDRkNzI4ZjApLCBDKGU5Y2M3MWFlNjRlM2YwOWUpLAorICAgICBDKGJlZjYzNGJjOTc4
YmFjMzEpLCBDKGJjMjQxNTc5ZDgzNDg0MDEpLCBDKDE2ZGM4MzI4MDRkNzI4ZjApLAorICAgICBD
KGU5Y2M3MWFlNjRlM2YwOWUpLCBDKGJlZjYzNGJjOTc4YmFjMzEpLCBDKDdmNjRiMWZhMmE5MTI5
ZSksCisgICAgIEMoNzFkODMxYmQ1MzBhYzdmMyksIEMoYzdhZDBhOGE2ZDViZTZmMSksIEMoODJh
N2QzYTgxNWM3YWFhYiksCisgICAgIEMoODJiM2ZiNmIpfSwKKyAgICB7QygyZDc3N2NkZGI5MTI2
NzVkKSwgQygyNzhkN2IxMDcyMmExM2Y5KSwgQyhmNWMwMmJmYjdjYzA3OGFmKSwKKyAgICAgQyg0
MjgzMDAxMjM5ODg4ODM2KSwgQyhmNDRjYTM5YTZmNzlkYjg5KSwgQyhlZDE4NjEyMmQ3MWJjYzlm
KSwKKyAgICAgQyg4NjIwMDE3YWI1ZjNiYTNiKSwgQyg0MjgzMDAxMjM5ODg4ODM2KSwgQyhmNDRj
YTM5YTZmNzlkYjg5KSwKKyAgICAgQyhlZDE4NjEyMmQ3MWJjYzlmKSwgQyg4NjIwMDE3YWI1ZjNi
YTNiKSwgQyhlNzg3NDcyMTg3ZjE3NmMpLAorICAgICBDKDI2N2U2NGM0NzI4Y2YxODEpLCBDKGYx
YmE0YjMwMDdjMTVlMzApLCBDKDhlM2E3NWQ1YjAyZWNmYzApLAorICAgICBDKGU1MDBlMjVmKX0s
CisgICAge0MoZjJlYzk4ODI0ZThhYTYxMyksIEMoNWViN2UzZmI1M2ZlM2JlZCksIEMoMTJjMjI4
NjA0NjZlMWRkNCksCisgICAgIEMoMzc0ZGQ0Mjg4ZTBiNzJlNSksIEMoZmY4OTE2ZGI3MDZjMGRm
NCksIEMoY2IxYTllODVkZTVlNGI4ZCksCisgICAgIEMoZDRkMTJhZmI2N2EyNzY1OSksIEMoMzc0
ZGQ0Mjg4ZTBiNzJlNSksIEMoZmY4OTE2ZGI3MDZjMGRmNCksCisgICAgIEMoY2IxYTllODVkZTVl
NGI4ZCksIEMoZDRkMTJhZmI2N2EyNzY1OSksIEMoZmViNjkwOTVkMWJhMTc1YSksCisgICAgIEMo
ZTIwMDNhYWIyM2E0N2ZhZCksIEMoODE2M2EzZWNhYjg5NGI0OSksIEMoNDZkMzU2Njc0Y2UwNDFm
NiksCisgICAgIEMoYmQyYmIwN2MpfSwKKyAgICB7Qyg1ZTc2Mzk4OGUyMWY0ODdmKSwgQygyNDE4
OWRlODA2NWQ4ZGM1KSwgQyhkMTUxOWQyNDAzYjYyYWEwKSwKKyAgICAgQyg5MTM2NDU2NzQwMTE5
ODE1KSwgQyg0ZDhmZjc3MzNiMjdlYjgzKSwgQyhlYTMwNDBiYzBjNzE3ZWY4KSwKKyAgICAgQyg3
NjE3YWI0MDBkZmFkYmMpLCBDKDkxMzY0NTY3NDAxMTk4MTUpLCBDKDRkOGZmNzczM2IyN2ViODMp
LAorICAgICBDKGVhMzA0MGJjMGM3MTdlZjgpLCBDKDc2MTdhYjQwMGRmYWRiYyksIEMoZmIzMzY3
NzBjMTBiMTdhMSksCisgICAgIEMoNjEyM2I2OGI1YjMxZjE1MSksIEMoMWUxNDdkNWYyOTVlY2Nm
MiksIEMoOWVjYmIxMzMzNTU2Zjk3NyksCisgICAgIEMoM2EyYjQzMWQpfSwKKyAgICB7Qyg0ODk0
OWRjMzI3YmI5NmFkKSwgQyhlMWZkMjE2MzZjNWM1MGI0KSwgQygzZjZlYjdmMTNhODcxMmI0KSwK
KyAgICAgQygxNGNmN2YwMmRhYjBlZWU4KSwgQyg2ZDAxNzUwNjA1ZTg5NDQ1KSwgQyg0ZjFjZjQw
MDZlNjEzYjc4KSwKKyAgICAgQyg1N2M0MGM0ZGIzMmJlYzNiKSwgQygxNGNmN2YwMmRhYjBlZWU4
KSwgQyg2ZDAxNzUwNjA1ZTg5NDQ1KSwKKyAgICAgQyg0ZjFjZjQwMDZlNjEzYjc4KSwgQyg1N2M0
MGM0ZGIzMmJlYzNiKSwgQygxZmRlNWEzNDdmNGEzMjZlKSwKKyAgICAgQyhjYjVhNTQzMDhhZGIw
ZTNmKSwgQygxNDk5NGIyYmE0NDdhMjNjKSwgQyg3MDY3ZDBhYmI0MjU3YjY4KSwKKyAgICAgQyg3
MzIyYTgzZCl9LAorICAgIHtDKGI3YzQyMDlmYjI0YTg1YzUpLCBDKGIzNWZlYjMxOWM3OWNlMTAp
LCBDKGYwZDNkZTE5MTgzM2I5MjIpLAorICAgICBDKDU3MGQ2Mjc1OGRkZjYzOTcpLCBDKDVlMDIw
NGZiNjhhN2I4MDApLCBDKDQzODNhOTIzNmY4YjVhMmIpLAorICAgICBDKDdiYzFhNjQ2NDFkODAz
YTQpLCBDKDU3MGQ2Mjc1OGRkZjYzOTcpLCBDKDVlMDIwNGZiNjhhN2I4MDApLAorICAgICBDKDQz
ODNhOTIzNmY4YjVhMmIpLCBDKDdiYzFhNjQ2NDFkODAzYTQpLCBDKDU0MzRkNjEyODUwOTlmN2Ep
LAorICAgICBDKGQ0OTQ0OWFhY2RkNWRkNjcpLCBDKDk3ODU1YmEwZTlhN2Q3NWQpLCBDKGRhNjcz
MjgwNjJmM2E2MmYpLAorICAgICBDKGE2NDVjYTFjKX0sCisgICAge0MoOWM5ZTViZTA5NDNkNGIw
NSksIEMoYjczZGM2OWU0NTIwMWNiYiksIEMoYWFiMTcxODBiZmU1MDgzZCksCisgICAgIEMoYzcz
OGE3N2E5YTU1ZjBlMiksIEMoNzA1MjIxYWRkZWRkODFkZiksIEMoZmQ5YmQ4ZDM5N2FiY2ZhMyks
CisgICAgIEMoOGNjZjAwMDRhYTg2Yjc5NSksIEMoYzczOGE3N2E5YTU1ZjBlMiksIEMoNzA1MjIx
YWRkZWRkODFkZiksCisgICAgIEMoZmQ5YmQ4ZDM5N2FiY2ZhMyksIEMoOGNjZjAwMDRhYTg2Yjc5
NSksIEMoMmJiNWRiMjI4MDA2ODIwNiksCisgICAgIEMoOGMyMmQyOWYzMDdhMDFkKSwgQygyNzRh
MjJkZTAyZjQ3M2M4KSwgQyhiODc5MTg3MGY0MjY4MTgyKSwgQyg4OTA5YTQ1YSl9LAorICAgIHtD
KDM4OThiY2E0ZGZkNjYzOGQpLCBDKGY5MTFmZjM1ZWZlZjAxNjcpLCBDKDI0YmRmNjllNTA5MWZj
ODgpLAorICAgICBDKDliODI1NjdhYjY1NjA3OTYpLCBDKDg5MWI2OTQ2MmI0MWMyMjQpLCBDKDhl
Y2NjN2U0ZjNhZjNiNTEpLAorICAgICBDKDM4MWU1NGMzYzhmMWM3ZDApLCBDKDliODI1NjdhYjY1
NjA3OTYpLCBDKDg5MWI2OTQ2MmI0MWMyMjQpLAorICAgICBDKDhlY2NjN2U0ZjNhZjNiNTEpLCBD
KDM4MWU1NGMzYzhmMWM3ZDApLCBDKGM4MGZiYzQ4OWE1NThhNTUpLAorICAgICBDKDFiYTg4ZTA2
MmE2NjNhZjcpLCBDKGFmN2IxZWYxYzAxMTYzMDMpLCBDKGJkMjBlMWE1YTZiMWEwY2QpLAorICAg
ICBDKGJkMzAwNzRjKX0sCisgICAge0MoNWI1ZDI1NTc0MDBlNjhlNyksIEMoOThkNjEwMDMzNTc0
Y2VlKSwgQyhkZmQwODc3MmNlMzg1ZGViKSwKKyAgICAgQygzYzEzZTg5NDM2NWRjNmMyKSwgQygy
NmZjN2JiY2RhM2YwZWYpLCBDKGRiYjcxMTA2Y2RiZmVhMzYpLAorICAgICBDKDc4NTIzOWE3NDJj
NmQyNmQpLCBDKDNjMTNlODk0MzY1ZGM2YzIpLCBDKDI2ZmM3YmJjZGEzZjBlZiksCisgICAgIEMo
ZGJiNzExMDZjZGJmZWEzNiksIEMoNzg1MjM5YTc0MmM2ZDI2ZCksIEMoZjgxMGM0MTVhZTA1YjJm
NCksCisgICAgIEMoYmI5YjllNzM5ODUyNjA4OCksIEMoNzAxMjhmMWJmODMwYTMyYiksIEMoYmNj
NzNmODJiNjQxMDg5OSksCisgICAgIEMoYzE3Y2YwMDEpfSwKKyAgICB7QyhhOTI3ZWQ4YjJiZjA5
YmI2KSwgQyg2MDZlNTJmMTBhZTk0ZWNhKSwgQyg3MWMyMjAzZmViMzVhOWVlKSwKKyAgICAgQyg2
ZTY1ZWMxNGE4ZmI1NjUpLCBDKDM0YmZmNmYyZWU1YTdmNzkpLCBDKDJlMzI5YTViZTJjMDExYiks
CisgICAgIEMoNzMxNjFjOTMzMzFiMTRmOSksIEMoNmU2NWVjMTRhOGZiNTY1KSwgQygzNGJmZjZm
MmVlNWE3Zjc5KSwKKyAgICAgQygyZTMyOWE1YmUyYzAxMWIpLCBDKDczMTYxYzkzMzMxYjE0Zjkp
LCBDKDE1ZDEzZjI0MDhhZWNmODgpLAorICAgICBDKDlmNWI2MWI4YTRiNTViMzEpLCBDKDhmZTI1
YTQzYjI5NmRiYTYpLCBDKGJkYWQwM2I3MzAwZjI4NGUpLAorICAgICBDKDI2ZmZkMjVhKX0sCisg
ICAge0MoOGQyNTc0NjQxNGFlZGYyOCksIEMoMzRiMTYyOWQyOGIzM2QzYSksIEMoNGQ1Mzk0YWVh
NWY4MmQ3YiksCisgICAgIEMoMzc5Zjc2NDU4YTNjODk1NyksIEMoNzlkZDA4MGY5ODQzYWY3Nyks
IEMoYzQ2ZjBhNzg0N2Y2MGMxZCksCisgICAgIEMoYWYxNTc5YzU3OTc3MDNjYyksIEMoMzc5Zjc2
NDU4YTNjODk1NyksIEMoNzlkZDA4MGY5ODQzYWY3NyksCisgICAgIEMoYzQ2ZjBhNzg0N2Y2MGMx
ZCksIEMoYWYxNTc5YzU3OTc3MDNjYyksIEMoOGI3ZDMxZjMzODc1NWMxNCksCisgICAgIEMoMmVm
Zjk3Njc5NTEyYWFhOCksIEMoZGYwN2Q2OGUwNzUxNzllZCksIEMoYzhmYTZjN2E3MjllN2YxZiks
CisgICAgIEMoZjFkOGNlM2MpfSwKKyAgICB7QyhiNWJiZGI3MzQ1ODcxMmYyKSwgQygxZmY4ODdi
M2MyYTM1MTM3KSwgQyg3ZjcyMzFmNzAyZDBhY2U5KSwKKyAgICAgQygxZTZmMDkxMGMzZDI1YmQ4
KSwgQyhhZDllMjUwODYyMTAyNDY3KSwgQygxYzg0MmEwN2FiYWIzMGNkKSwKKyAgICAgQyhjZDgx
MjQxNzZiYWMwMWFjKSwgQygxZTZmMDkxMGMzZDI1YmQ4KSwgQyhhZDllMjUwODYyMTAyNDY3KSwK
KyAgICAgQygxYzg0MmEwN2FiYWIzMGNkKSwgQyhjZDgxMjQxNzZiYWMwMWFjKSwgQyhlYTZlYmU3
YTc5YjY3ZWRjKSwKKyAgICAgQyg3M2Y1OThhYzlkYjI2NzEzKSwgQyg0ZjRlNzJkNzQ2MGI4ZmMp
LCBDKDM2NWRjNGI5ZmRmMTNmMjEpLCBDKDNlZThmYjE3KX0sCisgICAge0MoM2QzMmEyNmUzYWI5
ZDI1NCksIEMoZmM0MDcwNTc0ZGMzMGQzYSksIEMoZjAyNjI5NTc5YzJiMjdjOSksCisgICAgIEMo
YjFjZjA5YjAxODRhNDgzNCksIEMoNWMwM2RiNDhlYjZjYzE1OSksIEMoZjE4YzdmY2YzNGQxZGY0
NyksCisgICAgIEMoZGZiMDQzNDE5ZWNmMWZhOSksIEMoYjFjZjA5YjAxODRhNDgzNCksIEMoNWMw
M2RiNDhlYjZjYzE1OSksCisgICAgIEMoZjE4YzdmY2YzNGQxZGY0NyksIEMoZGZiMDQzNDE5ZWNm
MWZhOSksIEMoZGNkNzhkMTNmOWNhNjU4ZiksCisgICAgIEMoNDM1NWQ0MDhmZmU4ZTQ5ZiksIEMo
ODFlZWZlZTkwOGI1OTNiNCksIEMoNTkwYzIxM2MyMGU5ODFhMyksCisgICAgIEMoYTc3YWNjMmEp
fSwKKyAgICB7Qyg5MzcxZDNjMzVmYTVlOWE1KSwgQyg0Mjk2N2NmNGQwMWYzMCksIEMoNjUyZDFl
ZWFlNzA0MTQ1YyksCisgICAgIEMoY2VhZjFhMGQxNTIzNGYxNSksIEMoMTQ1MGE1NGU0NWJhOWI5
KSwgQyg2NWU5YzFmZDg4NWFhOTMyKSwKKyAgICAgQygzNTRkNGJjMDM0YmE4Y2JlKSwgQyhjZWFm
MWEwZDE1MjM0ZjE1KSwgQygxNDUwYTU0ZTQ1YmE5YjkpLAorICAgICBDKDY1ZTljMWZkODg1YWE5
MzIpLCBDKDM1NGQ0YmMwMzRiYThjYmUpLCBDKDhmZDRmZjQ4NGMwOGZiNGIpLAorICAgICBDKGJm
NDY3NDk4NjZmNjliYTApLCBDKGNmMWMyMWVkZTgyYzk0NzcpLCBDKDQyMTc1NDhjNDNkYTEwOSks
IEMoZjQ1NTZkZWUpfSwKKyAgICB7QyhjYmFhM2NiOGY2NGY1NGUwKSwgQyg3NmMzYjQ4ZWU1YzA4
NDE3KSwgQyg5ZjdkMjRlODdlNjFjZTkpLAorICAgICBDKDg1YjhlNTNmMjJlMTk1MDcpLCBDKGJi
NTcxMzc3MzljYTQ4NmIpLCBDKGM3N2YxMzFjY2EzOGY3NjEpLAorICAgICBDKGM1NmFjM2NmMjc1
YmUxMjEpLCBDKDg1YjhlNTNmMjJlMTk1MDcpLCBDKGJiNTcxMzc3MzljYTQ4NmIpLAorICAgICBD
KGM3N2YxMzFjY2EzOGY3NjEpLCBDKGM1NmFjM2NmMjc1YmUxMjEpLCBDKDllYzFhNmM5MTA5ZDI2
ODUpLAorICAgICBDKDNkYWQwOTIyZTc2YWZkYjApLCBDKGZkNThjYmY5NTI5NTgxMDMpLCBDKDdi
MDRjOTA4ZTc4NjM5YTEpLAorICAgICBDKGRlMjg3YTY0KX0sCisgICAge0MoYjJlMjNlODExNmMy
YmE5ZiksIEMoN2U0ZDljMDA2MDEwMTE1MSksIEMoMzMxMGRhNWU1MDI4ZjM2NyksCisgICAgIEMo
YWRjNTJkZGRiNzZmNmU1ZSksIEMoNGFhZDRlOTI1YTk2MmI2OCksIEMoMjA0Yjc5YjdmNzE2OGU2
NCksCisgICAgIEMoZGYyOWVkNjY3MWMzNjk1MiksIEMoYWRjNTJkZGRiNzZmNmU1ZSksIEMoNGFh
ZDRlOTI1YTk2MmI2OCksCisgICAgIEMoMjA0Yjc5YjdmNzE2OGU2NCksIEMoZGYyOWVkNjY3MWMz
Njk1MiksIEMoZTAyOTI3Y2FjMzk2ZDIxMCksCisgICAgIEMoNWQ1MDBlNzE3NDJiNjM4YSksIEMo
NWM5OTk4YWY3ZjI3YjEyNCksIEMoM2ZiYTlhMjU3M2RjMmY3KSwgQyg4NzhlNTViOSl9LAorICAg
IHtDKDhhYTc3ZjUyZDc4NjhlYjkpLCBDKDRkNTViZDU4NzU4NGU2ZTIpLCBDKGQyZGIzNzA0MWY0
OTVmNSksCisgICAgIEMoY2UwMzBkMTViNWZlMmY0KSwgQyg4NmI0YTdhMDc4MGMyNDMxKSwgQyhl
ZTA3MGE5YWU1YjUxZGI3KSwKKyAgICAgQyhlZGMyOTNkOTU5NWJlNWQ4KSwgQyhjZTAzMGQxNWI1
ZmUyZjQpLCBDKDg2YjRhN2EwNzgwYzI0MzEpLAorICAgICBDKGVlMDcwYTlhZTViNTFkYjcpLCBD
KGVkYzI5M2Q5NTk1YmU1ZDgpLCBDKDNkZmM1ZWMxMDgyNjBhMmIpLAorICAgICBDKDhhZmUyOGM3
MTIzYmY0ZTIpLCBDKGRhODJlZjM4MDIzYTdhNWYpLCBDKDNlMWY3N2IwMTc0Yjc3YzMpLCBDKDc2
NDg0ODYpfSwKKyAgICB7Qyg4NThmZWE5MjJjN2ZlMGMzKSwgQyhjZmU4MzI2YmY3MzNiYzZmKSwg
Qyg0ZTVlMjAxOGNmOGY3ZGZjKSwKKyAgICAgQyg2NGZkMWJjMDExZTViYWI3KSwgQyg1YzllODU4
NzI4MDE1NTY4KSwgQyg5N2FjNDJjMmIwMGIyOWIxKSwKKyAgICAgQyg3Zjg5Y2FmMDhjMTA5YWVl
KSwgQyg2NGZkMWJjMDExZTViYWI3KSwgQyg1YzllODU4NzI4MDE1NTY4KSwKKyAgICAgQyg5N2Fj
NDJjMmIwMGIyOWIxKSwgQyg3Zjg5Y2FmMDhjMTA5YWVlKSwgQyg5YThhZjM0ZmQwZTlkYWNmKSwK
KyAgICAgQyhiYmM1NDE2MWFhMTUwN2UwKSwgQyg3Y2RhNzIzY2NiYmZlNWVlKSwgQygyYzI4OWQ4
MzlmYjkzZjU4KSwKKyAgICAgQyg1N2FjMGZiMSl9LAorICAgIHtDKDQ2ZWYyNWZkZWM4MzkyYjEp
LCBDKGU0OGQ3YjZkNDJhNWNkMzUpLCBDKDU2YTZmZTFjMTc1Mjk5Y2EpLAorICAgICBDKGZkZmE4
MzZiNDFkY2VmNjIpLCBDKDJmOGRiODAzMGU4NDdlMWIpLCBDKDViYTBhNDlhYzRmOWIwZjgpLAor
ICAgICBDKGRhZTg5N2VkM2UzZmNlNDQpLCBDKGZkZmE4MzZiNDFkY2VmNjIpLCBDKDJmOGRiODAz
MGU4NDdlMWIpLAorICAgICBDKDViYTBhNDlhYzRmOWIwZjgpLCBDKGRhZTg5N2VkM2UzZmNlNDQp
LCBDKDljNDMyZTMxYWVmNjI2ZTcpLAorICAgICBDKDlhMzZlMWM2Y2Q2ZTNkZCksIEMoNTA5NWEx
NjdjMzRkMTlkKSwgQyhhNzAwMDVjZmE2YmFiYmVhKSwgQyhkMDE5NjdjYSl9LAorICAgIHtDKDhk
MDc4ZjcyNmIyZGY0NjQpLCBDKGI1MGVlNzFjZGNhYmIyOTkpLCBDKGY0YWYzMDAxMDZmOWM3YmEp
LAorICAgICBDKDdkMjIyY2FhZTAyNTE1OGEpLCBDKGNjMDI4ZDVmZDQwMjQxYjkpLCBDKGRkNDI1
MTViNjM5ZTZmOTcpLAorICAgICBDKGUwOGU4NjUzMWE1OGY4N2YpLCBDKDdkMjIyY2FhZTAyNTE1
OGEpLCBDKGNjMDI4ZDVmZDQwMjQxYjkpLAorICAgICBDKGRkNDI1MTViNjM5ZTZmOTcpLCBDKGUw
OGU4NjUzMWE1OGY4N2YpLCBDKGQ5MzYxMmM4MzViMzdkN2IpLAorICAgICBDKDkxZGQ2MTcyOWIy
ZmE3ZjQpLCBDKGJhNzY1YTFiZGRhMDlkYjcpLCBDKDU1MjU4YjQ1MWIyYjEyOTcpLAorICAgICBD
KDk2ZWNkZjc0KX0sCisgICAge0MoMzVlYTg2ZTY5NjBjYTk1MCksIEMoMzRmZTFmZTIzNGZjNWM3
NiksIEMoYTAwMjA3YTNkYzJhNzJiNyksCisgICAgIEMoODAzOTVlNDg3MzllMWE2NyksIEMoNzRh
NjdkOGY3ZjQzYzNkNyksIEMoZGQyYmRkMWQ2MjI0NmM2ZSksCisgICAgIEMoYTFmNDQyOThiYTgw
YWNmNiksIEMoODAzOTVlNDg3MzllMWE2NyksIEMoNzRhNjdkOGY3ZjQzYzNkNyksCisgICAgIEMo
ZGQyYmRkMWQ2MjI0NmM2ZSksIEMoYTFmNDQyOThiYTgwYWNmNiksIEMoYWQ4NmQ4NmMxODdiZjM4
KSwKKyAgICAgQygyNmZlZWExZjJlZWUyNDBkKSwgQyhlZDdmMWZkMDY2YjIzODk3KSwgQyhhNzY4
Y2YxZTBmYmI1MDIpLCBDKDc3OWY1NTA2KX0sCisgICAge0MoOGFlZTllZGJjMTVkZDAxMSksIEMo
NTFmNTgzOWRjODQ2MjY5NSksIEMoYjIyMTNlMTdjMzdkY2EyZCksCisgICAgIEMoMTMzYjI5OWE5
Mzk3NDVjNSksIEMoNzk2ZTJhYWMwNTNmNTJiMyksIEMoZThkOWZlMTUyMWE0YTIyMiksCisgICAg
IEMoODE5YTg4NjNlNWQxYzI5MCksIEMoMTMzYjI5OWE5Mzk3NDVjNSksIEMoNzk2ZTJhYWMwNTNm
NTJiMyksCisgICAgIEMoZThkOWZlMTUyMWE0YTIyMiksIEMoODE5YTg4NjNlNWQxYzI5MCksIEMo
YzA3MzdmMGZlMzRkMzZhZCksCisgICAgIEMoZTZkNmQ0YTI2N2E1Y2MzMSksIEMoOTgzMDBhNzkx
MTY3NGMyMyksIEMoYmVmMTg5NjYxYzI1NzA5OCksCisgICAgIEMoM2M5NGMyZGUpfSwKKyAgICB7
QyhjM2UxNDJiYTk4NDMyZGRhKSwgQyg5MTFkMDYwY2FiMTI2MTg4KSwgQyhiNzUzZmJmYTgzNjVi
ODQ0KSwKKyAgICAgQyhmZDFhOWJhNWU3MWIwOGEyKSwgQyg3YWMwZGMyZWQ3Nzc4NTMzKSwgQyhi
NTQzMTYxZmYxNzcxODhhKSwKKyAgICAgQyg0OTJmYzA4YTYxODZmM2Y0KSwgQyhmZDFhOWJhNWU3
MWIwOGEyKSwgQyg3YWMwZGMyZWQ3Nzc4NTMzKSwKKyAgICAgQyhiNTQzMTYxZmYxNzcxODhhKSwg
Qyg0OTJmYzA4YTYxODZmM2Y0KSwgQyhmYzQ3NDVmNTE2YWZkM2I2KSwKKyAgICAgQyg4OGMzMDM3
MGE1MzA4MGUpLCBDKDY1YTFiYjM0YWJjNDY1ZTIpLCBDKGFiYmQxNDY2MjkxMWM4YjMpLCBDKDM5
Zjk4ZmFmKX0sCisgICAge0MoMTIzYmE2Yjk5YzhjZDhkYiksIEMoNDQ4ZTU4MjY3MmVlMDdjNCks
IEMoY2ViZTM3OTI5MmRiOWU2NSksCisgICAgIEMoOTM4ZjViYmFiNTQ0ZDNkNiksIEMoZDJhOTVm
OWYyZDM3NmQ3MyksIEMoNjhiMmYxNjE0OWU4MWFhMyksCisgICAgIEMoYWQ3ZTMyZjgyZDg2Yzc5
ZCksIEMoOTM4ZjViYmFiNTQ0ZDNkNiksIEMoZDJhOTVmOWYyZDM3NmQ3MyksCisgICAgIEMoNjhi
MmYxNjE0OWU4MWFhMyksIEMoYWQ3ZTMyZjgyZDg2Yzc5ZCksIEMoNDU3NDAxNWFlODYyNmNlMiks
CisgICAgIEMoNDU1YWE2MTM3Mzg2YTU4MiksIEMoNjU4YWQyNTQyZThlYzIwKSwgQyhlMzFkN2Jl
MmNhMzVkMDApLCBDKDdhZjMxMTk5KX0sCisgICAge0MoYmE4N2FjZWY3OWQxNGY1MyksIEMoYjNl
MGZjYWU2M2ExMTU1OCksIEMoZDVhYzMxM2E1OTNhOWY0NSksCisgICAgIEMoZWVhNWY1YTlmNzRh
ZjU5MSksIEMoNTc4NzEwYmNjMzZmYmVhMiksIEMoN2E4MzkzNDMyMTg4OTMxZCksCisgICAgIEMo
NzA1Y2ZjNWVjN2NjMTcyKSwgQyhlZWE1ZjVhOWY3NGFmNTkxKSwgQyg1Nzg3MTBiY2MzNmZiZWEy
KSwKKyAgICAgQyg3YTgzOTM0MzIxODg5MzFkKSwgQyg3MDVjZmM1ZWM3Y2MxNzIpLCBDKGRhODVl
YmU1ZmM0Mjc5NzYpLAorICAgICBDKGJmYTVjN2E0NTRkZjU0YzgpLCBDKDQ2MzJiNzJhODFiZjY2
ZDIpLCBDKDVkZDcyODc3ZGI1MzllZTIpLAorICAgICBDKGUzNDFhOWQ2KX0sCisgICAge0MoYmNk
Mzk1N2Q1NzE3ZGMzKSwgQygyZGE3NDY3NDFiMDNhMDA3KSwgQyg4NzM4MTZmNGIxZWNlNDcyKSwK
KyAgICAgQygyYjgyNmYxYTJjMDhjMjg5KSwgQyhkYTUwZjU2ODYzYjU1ZTc0KSwgQyhiMTg3MTJm
NmIzZWVkODNiKSwKKyAgICAgQyhiZGM3Y2MwNWFiNGM2ODVmKSwgQygyYjgyNmYxYTJjMDhjMjg5
KSwgQyhkYTUwZjU2ODYzYjU1ZTc0KSwKKyAgICAgQyhiMTg3MTJmNmIzZWVkODNiKSwgQyhiZGM3
Y2MwNWFiNGM2ODVmKSwgQyg5ZTQ1ZmI4MzNkMWIwYWYpLAorICAgICBDKGQ3MjEzMDgxZGIyOWQ4
MmUpLCBDKGQyYTZiNmM2YTA5ZWQ1NWUpLCBDKDk4YTc2ODZjYmEzMjNjYTkpLAorICAgICBDKGNh
MjRhZWViKX0sCisgICAge0MoNjE0NDJmZjU1NjA5MTY4ZSksIEMoNjQ0N2M1ZmM3NmU4YzljZiks
IEMoNmE4NDZkZTgzYWUxNTcyOCksCisgICAgIEMoZWZmYzI2NjNjZmZjNzc3ZiksIEMoOTMyMTRm
OGY0NjNhZmJlZCksIEMoYTE1NmVmMDYwNjZmNGU0ZSksCisgICAgIEMoYTQwN2I2ZWQ4NzY5ZDUx
ZSksIEMoZWZmYzI2NjNjZmZjNzc3ZiksIEMoOTMyMTRmOGY0NjNhZmJlZCksCisgICAgIEMoYTE1
NmVmMDYwNjZmNGU0ZSksIEMoYTQwN2I2ZWQ4NzY5ZDUxZSksIEMoYmIyZjllZDI5NzQ1YzAyYSks
CisgICAgIEMoOTgxZWVjZDQzNWIzNmFkOSksIEMoNDYxYTVhMDVmYjljZGZmNCksIEMoYmQ2Y2Iy
YTg3YjlmOTEwYyksCisgICAgIEMoYjIyNTJiNTcpfSwKKyAgICB7QyhkYmU0YjFiMmQxNzQ3NTdm
KSwgQyg1MDY1MTJkYTE4NzEyNjU2KSwgQyg2ODU3ZjNlMGI4ZGQ5NWYpLAorICAgICBDKDVhNGZj
MjcyOGE5YmI2NzEpLCBDKGViYjk3MTUyMmVjMzg3NTkpLCBDKDFhNWEwOTNlNmNmMWY3MmIpLAor
ICAgICBDKDcyOWIwNTdmZTc4NGY1MDQpLCBDKDVhNGZjMjcyOGE5YmI2NzEpLCBDKGViYjk3MTUy
MmVjMzg3NTkpLAorICAgICBDKDFhNWEwOTNlNmNmMWY3MmIpLCBDKDcyOWIwNTdmZTc4NGY1MDQp
LCBDKDcxZmNiZjQyYTc2N2Y5Y2YpLAorICAgICBDKDExNGNmZTc3MmRhNmNkZCksIEMoNjBjZGY5
Y2I2MjlkOWQ3YSksIEMoZTI3MGQxMGFkMDg4YjI0ZSksIEMoNzJjODFkYTEpfSwKKyAgICB7Qyg1
MzFlOGU3N2IzNjMxNjFjKSwgQyhlZWNlMGI0M2UyZGFlMDMwKSwgQyg4Mjk0YjgyYzc4ZjM0ZWQx
KSwKKyAgICAgQyhlNzc3YjFmZDU4MDU4MmYyKSwgQyg3Yjg4MGY1OGRhMTEyNjk5KSwgQyg1NjJj
NmIxODlhNjMzM2Y0KSwKKyAgICAgQygxMzlkNjRmODhhNjExZDQpLCBDKGU3NzdiMWZkNTgwNTgy
ZjIpLCBDKDdiODgwZjU4ZGExMTI2OTkpLAorICAgICBDKDU2MmM2YjE4OWE2MzMzZjQpLCBDKDEz
OWQ2NGY4OGE2MTFkNCksIEMoNTNkOGVmMTdlZGE2NGZhNCksCisgICAgIEMoYmYzZWRlZDE0ZGM2
MGEwNCksIEMoMmI1YzU1OWNmNWVjMDdjNSksIEMoODg5NWY3MzM5ZDAzYTQ4YSksCisgICAgIEMo
NmI5ZmNlOTUpfSwKKyAgICB7QyhmNzFlOWM5MjZkNzExZTJiKSwgQyhkNzdhZjI4NTNhNGNlYWEx
KSwgQyg5YWEwZDZkNzZhMzZmYWU3KSwKKyAgICAgQyhkZDE2Y2QwZmJjMDgzOTMpLCBDKDI5YTQx
NGE1ZDhjNTg5NjIpLCBDKDcyNzkzZDhkMTAyMmI1YjIpLAorICAgICBDKDJlOGU2OWNmN2NiZmZk
ZjApLCBDKGRkMTZjZDBmYmMwODM5MyksIEMoMjlhNDE0YTVkOGM1ODk2MiksCisgICAgIEMoNzI3
OTNkOGQxMDIyYjViMiksIEMoMmU4ZTY5Y2Y3Y2JmZmRmMCksIEMoMzcyMWMwNDczYWE5OWM5YSks
CisgICAgIEMoMWNmZjRlZDljMzFjZDkxYyksIEMoNDk5MDczNTAzM2NjNDgyYiksIEMoN2ZkZjhj
NzAxYzcyZjU3NyksCisgICAgIEMoMTkzOTk4NTcpfSwKKyAgICB7QyhjYjIwYWMyOGY1MmRmMzY4
KSwgQyhlNjcwNWVlNzg4MDk5NmRlKSwgQyg5YjY2NWNjM2VjNjk3MmYyKSwKKyAgICAgQyg0MjYw
ZThjMjU0ZTk5MjRiKSwgQyhmMTk3YTZlYjQ1OTE1NzJkKSwgQyg4ZTg2N2ZmMGZiN2FiMjdjKSwK
KyAgICAgQyhmOTU1MDJmYjUwM2VmYWYzKSwgQyg0MjYwZThjMjU0ZTk5MjRiKSwgQyhmMTk3YTZl
YjQ1OTE1NzJkKSwKKyAgICAgQyg4ZTg2N2ZmMGZiN2FiMjdjKSwgQyhmOTU1MDJmYjUwM2VmYWYz
KSwgQygzMGM0MTg3NmIwOGUzZTIyKSwKKyAgICAgQyg5NThlMjQxOWUzY2QyMmY0KSwgQyhmMGYz
YWExZmUxMTlhMTA3KSwgQyg0ODE2NjIzMTBhMzc5MTAwKSwKKyAgICAgQygzYzU3YTk5NCl9LAor
ICAgIHtDKGU0YTc5NGI0YWNiOTRiNTUpLCBDKDg5Nzk1MzU4MDU3YjY2MWIpLCBDKDljNGNkY2Vj
MTc2ZDdhNzApLAorICAgICBDKDQ4OTBhODNlZTQzNWJjOGIpLCBDKGQ4YzFjMDBmY2ViMDA5MTQp
LCBDKDllNzExMWJhMjM0ZjkwMGYpLAorICAgICBDKGViOGRiYWIzNjRkOGI2MDQpLCBDKDQ4OTBh
ODNlZTQzNWJjOGIpLCBDKGQ4YzFjMDBmY2ViMDA5MTQpLAorICAgICBDKDllNzExMWJhMjM0Zjkw
MGYpLCBDKGViOGRiYWIzNjRkOGI2MDQpLCBDKGIzMjYxNDUyOTYzZWViYiksCisgICAgIEMoNmNm
OTRiMDI3OTJjNGY5NSksIEMoZDg4ZmE4MTVlZjFlOGZjKSwgQygyZDY4N2FmNjY2MDRjNzMpLCBD
KGMwNTNlNzI5KX0sCisgICAge0MoY2I5NDJlOTE0NDNlNzIwOCksIEMoZTMzNWRlODEyNTU2N2My
YSksIEMoZDRkNzRkMjY4Yjg2ZGYxZiksCisgICAgIEMoOGJhMGZkZDJmZmM4YjIzOSksIEMoZjQx
M2IzNjZjMWZmZTAyZiksIEMoYzA1YjI3MTdjNTlhOGEyOCksCisgICAgIEMoOTgxMTg4ZWFiNGZj
YzhmYiksIEMoOGJhMGZkZDJmZmM4YjIzOSksIEMoZjQxM2IzNjZjMWZmZTAyZiksCisgICAgIEMo
YzA1YjI3MTdjNTlhOGEyOCksIEMoOTgxMTg4ZWFiNGZjYzhmYiksIEMoZTU2M2Y0OWExZDkwNzJi
YSksCisgICAgIEMoM2M2YTNhYTRhMjYzNjdkYyksIEMoYmEwZGIxMzQ0ODY1M2YzNCksIEMoMzEw
NjVkNzU2MDc0ZDdkNiksCisgICAgIEMoNTFjYmJiYTcpfSwKKyAgICB7QyhlY2NhNzU2M2MyMDNm
N2JhKSwgQygxNzdhZTI0MjNlZjM0YmIyKSwgQyhmNjBiNzI0MzQwMGM1NzMxKSwKKyAgICAgQyhj
ZjFlZGJmZTczMzBlOTRlKSwgQyg4ODE5NDU5MDZiY2IzY2M2KSwgQyg0YWNmMDI5MzI0NDg1NWRh
KSwKKyAgICAgQyg2NWFlMDQyYzFjMmEyOGMyKSwgQyhjZjFlZGJmZTczMzBlOTRlKSwgQyg4ODE5
NDU5MDZiY2IzY2M2KSwKKyAgICAgQyg0YWNmMDI5MzI0NDg1NWRhKSwgQyg2NWFlMDQyYzFjMmEy
OGMyKSwgQyhiMjVmYTBhMWNhYjMzNTU5KSwKKyAgICAgQyhkOThlOGRhYTI4MTI0MTMxKSwgQyhm
Y2UxN2Y1MGI5YzM1MWIzKSwgQygzZjk5NWNjZjczODY4NjRiKSwKKyAgICAgQygxYWNkZTc5YSl9
LAorICAgIHtDKDE2NTJjYjk0MDE3N2M4YjUpLCBDKDhjNGZlN2Q4NWQyYTZkNmQpLCBDKGY2MjE2
YWQwOTdlNTRlNzIpLAorICAgICBDKGY2NTIxYjkxMmIzNjhhZTYpLCBDKGE5ZmU0ZWZmODFkMDNl
NzMpLCBDKGQ2ZjYyMzYyOWY4MGQxYTMpLAorICAgICBDKDJiOTYwNGYzMmNiN2RjMzQpLCBDKGY2
NTIxYjkxMmIzNjhhZTYpLCBDKGE5ZmU0ZWZmODFkMDNlNzMpLAorICAgICBDKGQ2ZjYyMzYyOWY4
MGQxYTMpLCBDKDJiOTYwNGYzMmNiN2RjMzQpLCBDKDJhNDNkODRkY2Y1OWM3ZTIpLAorICAgICBD
KGQwYTE5N2M3MGM1ZGFlMGIpLCBDKDZlODRkNGJiYzcxZDc2YTApLCBDKGM3ZTk0NjIwMzc4YzZj
YjIpLAorICAgICBDKDJkMTYwZDEzKX0sCisgICAge0MoMzFmZWQwZmMwNGMxM2NlOCksIEMoM2Q1
ZDAzZGJmN2ZmMjQwYSksIEMoNzI3YzVjOWI1MTU4MTIwMyksCisgICAgIEMoNmI1ZmZjMWY1NGZl
Y2IyOSksIEMoYThlOGU3YWQ1YjlhMjFkOSksIEMoYzRkNWEzMmNkNmFhYzIyZCksCisgICAgIEMo
ZDdlMjc0YWQyMmQ0YTc5YSksIEMoNmI1ZmZjMWY1NGZlY2IyOSksIEMoYThlOGU3YWQ1YjlhMjFk
OSksCisgICAgIEMoYzRkNWEzMmNkNmFhYzIyZCksIEMoZDdlMjc0YWQyMmQ0YTc5YSksIEMoMzY4
ODQxZWE1NzMxYTExMiksCisgICAgIEMoZmVhZjdiYzJlNzNjYTQ4ZiksIEMoNjM2ZmIyNzJlOWVh
MWY2KSwgQyg1ZDljYjc1ODBjM2Y2MjA3KSwgQyg3ODdmNTgwMSl9LAorICAgIHtDKGU3YjY2ODk0
NzU5MGI5YjMpLCBDKGJhYTQxYWQzMjkzOGQzZmEpLCBDKGFiY2JjOGQ0Y2E0YjM5ZTQpLAorICAg
ICBDKDM4MWVlMWI3ZWE1MzRmNGUpLCBDKGRhMzc1OTgyOGUzZGU0MjkpLCBDKDNlMDE1ZDc2NzI5
Zjk5NTUpLAorICAgICBDKGNiYmVjNTFhNjQ4NWZiZGUpLCBDKDM4MWVlMWI3ZWE1MzRmNGUpLCBD
KGRhMzc1OTgyOGUzZGU0MjkpLAorICAgICBDKDNlMDE1ZDc2NzI5Zjk5NTUpLCBDKGNiYmVjNTFh
NjQ4NWZiZGUpLCBDKDliODY2MDUyODFmMjA3MjcpLAorICAgICBDKGZjNmZjZjUwODY3Njk4MmEp
LCBDKDNiMTM1ZjdhODEzYTEwNDApLCBDKGQzYTQ3MDZiZWExZGI5YzkpLAorICAgICBDKGM5NjI5
ODI4KX0sCisgICAge0MoMWRlMjExOTkyM2U4ZWYzYyksIEMoNmFiMjdjMDk2Y2YyZmUxNCksIEMo
OGMzNjU4ZWRjYTk1ODg5MSksCisgICAgIEMoNGNjOGVkM2FkYTVmMGYyKSwgQyg0YTQ5NmI3N2Mx
ZjFjMDRlKSwgQyg5MDg1YjBhODYyMDg0MjAxKSwKKyAgICAgQyhhMTg5NGJkZTllM2RlZTIxKSwg
Qyg0Y2M4ZWQzYWRhNWYwZjIpLCBDKDRhNDk2Yjc3YzFmMWMwNGUpLAorICAgICBDKDkwODViMGE4
NjIwODQyMDEpLCBDKGExODk0YmRlOWUzZGVlMjEpLCBDKDM2N2ZiNDcyZGM1YjI3N2QpLAorICAg
ICBDKDdkMzljY2NhMTZmYzY3NDUpLCBDKDc2M2Y5ODhkNzBkYjkxMDYpLCBDKGE4YjY2ZjdmZWNi
NzBmMDIpLAorICAgICBDKGJlMTM5MjMxKX0sCisgICAge0MoMTI2OWRmMWU2OWUxNGZhNyksIEMo
OTkyZjlkNThhYzUwNDFiNyksIEMoZTk3ZmNmNjk1YTdjYmJiNCksCisgICAgIEMoZTVkMDU0OTgw
MmQxNTAwOCksIEMoNDI0YzEzNGVjZDBkYjgzNCksIEMoNmZjNDRmZDkxYmUxNWM2YyksCisgICAg
IEMoYTFhNWVmOTVkNTBlNTM3ZCksIEMoZTVkMDU0OTgwMmQxNTAwOCksIEMoNDI0YzEzNGVjZDBk
YjgzNCksCisgICAgIEMoNmZjNDRmZDkxYmUxNWM2YyksIEMoYTFhNWVmOTVkNTBlNTM3ZCksIEMo
ZDFlM2RhZjVkMDVmNTMwOCksCisgICAgIEMoNGM3ZjgxNjAwZWFhMTMyNyksIEMoMTA5ZDFiOGQx
ZjlkMGQyYiksIEMoODcxZTg2OTllMGFlYjg2MiksCisgICAgIEMoN2RmNjk5ZWYpfSwKKyAgICB7
Qyg4MjA4MjZkN2FiYTU2N2ZmKSwgQygxZjczZDI4ZTAzNmE1MmYzKSwgQyg0MWM0YzVhNzNmM2Iw
ODkzKSwKKyAgICAgQyhhYTBkNzRkNGE5OGRiODliKSwgQygzNmZkNDg2ZDA3YzU2ZTFkKSwgQyhk
MGFkMjNjYmI2NjYwZDhhKSwKKyAgICAgQygxMjY0YTg0NjY1YjM1ZTE5KSwgQyhhYTBkNzRkNGE5
OGRiODliKSwgQygzNmZkNDg2ZDA3YzU2ZTFkKSwKKyAgICAgQyhkMGFkMjNjYmI2NjYwZDhhKSwg
QygxMjY0YTg0NjY1YjM1ZTE5KSwgQyg3ODk2ODJiZjdkNzgxYjMzKSwKKyAgICAgQyg2YmZhNmFi
ZDJmYjU3MjJkKSwgQyg2Nzc5Y2IzNjIzZDMzOTAwKSwgQyg0MzVjYTUyMTRlMWVlNWYwKSwKKyAg
ICAgQyg4Y2U2Yjk2ZCl9LAorICAgIHtDKGZmZTA1NDdlNDkyM2NlZjkpLCBDKDM1MzRlZDQ5Yjlk
YTViMDIpLCBDKDU0OGEyNzM3MDBmYmEwM2QpLAorICAgICBDKDI4YWM4NGNhNzA5NThmN2UpLCBD
KGQ4YWU1NzVhNjhmYWE3MzEpLCBDKDJhYWFlZTliOWRjZmZkNGMpLAorICAgICBDKDZjN2ZhYWI1
YzI4NWM2ZGEpLCBDKDI4YWM4NGNhNzA5NThmN2UpLCBDKGQ4YWU1NzVhNjhmYWE3MzEpLAorICAg
ICBDKDJhYWFlZTliOWRjZmZkNGMpLCBDKDZjN2ZhYWI1YzI4NWM2ZGEpLCBDKDQ1ZDk0MjM1Zjk5
YmE3OGYpLAorICAgICBDKGFiNWVhMTZmMzk0OTdmNWIpLCBDKGZiNGQ2Yzg2ZmNjYmRjYTMpLCBD
KDgxMDRlNjMxMGE1ZmQyYzcpLAorICAgICBDKDZmOWVkOTljKX0sCisgICAge0MoNzJkYThkMWIx
MWQ4YmM4YiksIEMoYmE5NGI1NmI5MWI2ODFjNiksIEMoNGU4Y2M1MWJkOWIwZmM4YyksCisgICAg
IEMoNDM1MDVlZDEzM2JlNjcyYSksIEMoZThmMmY5ZDk3M2MyNzc0ZSksIEMoNjc3YjliOWM3Y2Fk
NmQ5NyksCisgICAgIEMoNGUxZjVkNTZlZjE3YjkwNiksIEMoNDM1MDVlZDEzM2JlNjcyYSksIEMo
ZThmMmY5ZDk3M2MyNzc0ZSksCisgICAgIEMoNjc3YjliOWM3Y2FkNmQ5NyksIEMoNGUxZjVkNTZl
ZjE3YjkwNiksIEMoZWVhM2E2MDM4Zjk4Mzc2NyksCisgICAgIEMoODcxMDlmMDc3Zjg2ZGIwMSks
IEMoZWNjMWNhNDFmNzRkNjFjYyksIEMoMzRhODdlODZlODNiZWQxNyksCisgICAgIEMoZTAyNDQ3
OTYpfSwKKyAgICB7QyhkNjJhYjRlM2Y4OGZjNzk3KSwgQyhlYTg2YzdhZWI2MjgzYWU0KSwgQyhi
NWI5M2UwOWE3ZmU0NjUpLAorICAgICBDKDQzNDRhMWEwMTM0YWZlMiksIEMoZmY1YzE3ZjAyYjYy
MzQxZCksIEMoMzIxNGM2YTU4N2NlNDY0NCksCisgICAgIEMoYTkwNWU3ZWQwNjI5ZDA1YyksIEMo
NDM0NGExYTAxMzRhZmUyKSwgQyhmZjVjMTdmMDJiNjIzNDFkKSwKKyAgICAgQygzMjE0YzZhNTg3
Y2U0NjQ0KSwgQyhhOTA1ZTdlZDA2MjlkMDVjKSwgQyhiNWM3MjY5MGNkNzE2ZTgyKSwKKyAgICAg
Qyg3YzYwOTc2NDllNmViZTdiKSwgQyg3Y2VlZThjNmU1NmE0ZGNkKSwgQyg4MGNhODQ5ZGM1M2Vi
OWU0KSwKKyAgICAgQyg0Y2NmN2U3NSl9LAorICAgIHtDKGQwZjA2YzI4YzdiMzY4MjMpLCBDKDEw
MDhjYjA4NzRkZTRiYjgpLCBDKGQ2YzdmZjgxNmM3YTczN2IpLAorICAgICBDKDQ4OWI2OTdmZTMw
YWE2NWYpLCBDKDRkYTBmYjYyMWZkYzc4MTcpLCBDKGRjNDM1ODNiODJjNTgxMDcpLAorICAgICBD
KDRiMDI2MWRlYmRlYzNjZDYpLCBDKDQ4OWI2OTdmZTMwYWE2NWYpLCBDKDRkYTBmYjYyMWZkYzc4
MTcpLAorICAgICBDKGRjNDM1ODNiODJjNTgxMDcpLCBDKDRiMDI2MWRlYmRlYzNjZDYpLCBDKGE5
NzQ4ZDdiNmMwZTAxNmMpLAorICAgICBDKDdlODgyOGY3YmE0YjAzNGIpLCBDKGRhMGZhNTQzNDhh
MjUxMmEpLCBDKGViZjk3NDVjMDk2MmY5YWQpLAorICAgICBDKDkxNWNlZjg2KX0sCisgICAge0Mo
OTliNzA0MjQ2MGQ3MmVjNiksIEMoMmE1M2U1ZTJiOGU3OTVjMiksIEMoNTNhNzgxMzJkOWUxYjNl
MyksCisgICAgIEMoYzA0M2U2N2U2ZmM2NDExOCksIEMoZmYwYWJmZTkyNmQ4NDRkMyksIEMoZjJh
OWZlNWRiMmU5MTBmZSksCisgICAgIEMoY2UzNTJjZGM4NGE5NjRkZCksIEMoYzA0M2U2N2U2ZmM2
NDExOCksIEMoZmYwYWJmZTkyNmQ4NDRkMyksCisgICAgIEMoZjJhOWZlNWRiMmU5MTBmZSksIEMo
Y2UzNTJjZGM4NGE5NjRkZCksIEMoYjg5YmMwMjhhYTVlNjA2MyksCisgICAgIEMoYTM1NGU3ZmRh
YzA0NDU5YyksIEMoNjhkNjU0N2U2ZTk4MDE4OSksIEMoYzk2OGRkZGZkNTczNzczZSksCisgICAg
IEMoNWNiNTk0ODIpfSwKKyAgICB7Qyg0ZjRkZmNmYzBlYzJiYWU1KSwgQyg4NDEyMzMxNDgyNjhh
MWI4KSwgQyg5MjQ4YTc2YWI4YmUwZDMpLAorICAgICBDKDMzNGM1YTI1YjU5MDNhOGMpLCBDKDRj
OTRmZWY0NDMxMjIxMjgpLCBDKDc0M2U3ZDg0NTQ2NTVjNDApLAorICAgICBDKDFhYjFlNmQxNDUy
YWUyY2QpLCBDKDMzNGM1YTI1YjU5MDNhOGMpLCBDKDRjOTRmZWY0NDMxMjIxMjgpLAorICAgICBD
KDc0M2U3ZDg0NTQ2NTVjNDApLCBDKDFhYjFlNmQxNDUyYWUyY2QpLCBDKGZlYzc2NmRlNGE4ZTQ3
NmMpLAorICAgICBDKGNjMDkyOWRhOTU2N2U3MWIpLCBDKDVmOWVmNWI1ZjE1MGMzNWEpLCBDKDg3
NjU5Y2FiZDY0OTc2OGYpLAorICAgICBDKDZjYTNmNTMyKX0sCisgICAge0MoZmU4NmJmOWQ0NDIy
YjlhZSksIEMoZWJjZTg5YzkwNjQxZWY5YyksIEMoMWM4NGUyMjkyYzBiNTY1OSksCisgICAgIEMo
OGJkZTYyNWExMGE4YzUwZCksIEMoZWI4MjcxZGVkMWY3OWEwYiksIEMoMTRkYzY4NDRmMGRlN2Ez
YyksCisgICAgIEMoZjg1YjJmOTU0MWU3ZTZkYSksIEMoOGJkZTYyNWExMGE4YzUwZCksIEMoZWI4
MjcxZGVkMWY3OWEwYiksCisgICAgIEMoMTRkYzY4NDRmMGRlN2EzYyksIEMoZjg1YjJmOTU0MWU3
ZTZkYSksIEMoMmZlMjJjZmQxNjgzYjk2MSksCisgICAgIEMoZWExZDc1YzViN2FhMDFjYSksIEMo
OWVlZjYwYTQ0ODc2YmI5NSksIEMoOTUwYzgxOGU1MDVjNmY3ZiksCisgICAgIEMoZTI0ZjM4NTkp
fSwKKyAgICB7QyhhOTBkODEwNjA5MzJkYmIwKSwgQyg4YWNmYWE4OGM1ZmJlOTJiKSwgQyg3YzZm
MzQ0N2U5MGY3ZjNmKSwKKyAgICAgQyhkZDUyZmMxNGM4ZGQzMTQzKSwgQygxYmM3NTA4NTE2ZTQw
NjI4KSwgQygzMDU5NzMwMjY2YWRlNjI2KSwKKyAgICAgQyhmZmE1MjY4MjJmMzkxYzIpLCBDKGRk
NTJmYzE0YzhkZDMxNDMpLCBDKDFiYzc1MDg1MTZlNDA2MjgpLAorICAgICBDKDMwNTk3MzAyNjZh
ZGU2MjYpLCBDKGZmYTUyNjgyMmYzOTFjMiksIEMoZTI1MjMyZDdhZmM4YTQwNiksCisgICAgIEMo
ZDJiOGE1YTNmM2I1ZjY3MCksIEMoNjYzMGYzM2VkYjdkZmUzMiksIEMoYzcxMjUwYmE2OGM0ZWE4
NiksCisgICAgIEMoYWRmNWE5YzcpfSwKKyAgICB7QygxNzkzOGExYjBlN2Y1OTUyKSwgQygyMmNh
ZGQyZjU2ZjhhNGJlKSwgQyg4NGIwZDExODNkNWVkN2MxKSwKKyAgICAgQyhjMTMzNmI5MmZlZjkx
YmY2KSwgQyg4MDMzMmEzOTQ1ZjMzZmE5KSwgQyhhMGY2OGI4NmY3MjZmZjkyKSwKKyAgICAgQyhh
M2RiNTI4MmNmNWY0YzBiKSwgQyhjMTMzNmI5MmZlZjkxYmY2KSwgQyg4MDMzMmEzOTQ1ZjMzZmE5
KSwKKyAgICAgQyhhMGY2OGI4NmY3MjZmZjkyKSwgQyhhM2RiNTI4MmNmNWY0YzBiKSwgQyg4MjY0
MGI2ZmM0OTE2NjA3KSwKKyAgICAgQygyZGMyYTNhYTFhODk0MTc1KSwgQyg4YjRjODUyYmRlZTdj
YzkpLCBDKDEwYjlkMGEwOGI1NWZmODMpLCBDKDMyMjY0Yjc1KX0sCisgICAge0MoZGU5ZTBjYjBl
MTZmNmU2ZCksIEMoMjM4ZTYyODNhYTRmNjU5NCksIEMoNGZiOWM5MTRjMmYwYTEzYiksCisgICAg
IEMoNDk3Y2I5MTJiNjcwZjNiKSwgQyhkOTYzYTNmMDJmZjRhNWI2KSwgQyg0ZmNjZWZhZTExYjUw
MzkxKSwKKyAgICAgQyg0MmJhNDdkYjNmNzY3MmYpLCBDKDQ5N2NiOTEyYjY3MGYzYiksIEMoZDk2
M2EzZjAyZmY0YTViNiksCisgICAgIEMoNGZjY2VmYWUxMWI1MDM5MSksIEMoNDJiYTQ3ZGIzZjc2
NzJmKSwgQygxZDZiNjU1YTE4ODlmZWVmKSwKKyAgICAgQyg1ZjMxOWFiZjhmYWZhMTlmKSwgQyg3
MTVjMmU0OWRlYjE0NjIwKSwgQyg4ZDkxNTMwODJlY2RjZWE0KSwKKyAgICAgQyhhNjRiMzM3Nil9
LAorICAgIHtDKDZkNGI4NzZkOWIxNDZkMWEpLCBDKGFhYjJkNjRjZThmMjY3MzkpLCBDKGQzMTVm
OTM2MDBlODNmZTUpLAorICAgICBDKDJmZTlmYWJkYmU3ZmRkNCksIEMoNzU1ZGIyNDlhMmQ4MWE2
OSksIEMoZjI3OTI5ZjM2MDQ0NmQ3MSksCisgICAgIEMoNzlhMWJmOTU3YzBjMWI5MiksIEMoMmZl
OWZhYmRiZTdmZGQ0KSwgQyg3NTVkYjI0OWEyZDgxYTY5KSwKKyAgICAgQyhmMjc5MjlmMzYwNDQ2
ZDcxKSwgQyg3OWExYmY5NTdjMGMxYjkyKSwgQygzYzhhMjhkNGM5MzZjOWNkKSwKKyAgICAgQyhk
ZjBkM2QxM2IyYzZhOTAyKSwgQyhjNzY3MDJkZDk3Y2QyZWRkKSwgQygxYWEyMjBmN2JlMTY1MTcp
LCBDKGQzMzg5MGUpfSwKKyAgICB7QyhlNjk4ZmEzZjU0ZTZlYTIyKSwgQyhiZDI4ZTIwZTc0NTUz
NThjKSwgQyg5YWNlMTYxZjZlYTc2ZTY2KSwKKyAgICAgQyhkNTNmYjdlM2M5M2E5ZTQpLCBDKDcz
N2FlNzFiMDUxYmYxMDgpLCBDKDdhYzcxZmViODRjMmRmNDIpLAorICAgICBDKDNkODA3NWNkMjkz
YTE1YjQpLCBDKGQ1M2ZiN2UzYzkzYTllNCksIEMoNzM3YWU3MWIwNTFiZjEwOCksCisgICAgIEMo
N2FjNzFmZWI4NGMyZGY0MiksIEMoM2Q4MDc1Y2QyOTNhMTViNCksIEMoYmY4Y2VlNWUwOTVkOGE3
YyksCisgICAgIEMoZTcwODZiM2M3NjA4MTQzYSksIEMoZTU1YjBjMmZhOTM4ZDcwYyksIEMoZmZm
YjVmNThlNjQzNjQ5YyksCisgICAgIEMoOTI2ZDRiNjMpfSwKKyAgICB7Qyg3YmMwZGVlZDRmYjM0
OWY3KSwgQygxNzcxYWZmMjVkYzcyMmZhKSwgQygxOWZmMDY0NGQ5NjgxOTE3KSwKKyAgICAgQyhj
ZjdkN2YyNWJkNzBjZDJjKSwgQyg5NDY0ZWQ5YmFlYjQxYjRmKSwgQyhiOTA2NGY1YzNjYjExYjcx
KSwKKyAgICAgQygyMzdlMzkyMjliMDEyYjIwKSwgQyhjZjdkN2YyNWJkNzBjZDJjKSwgQyg5NDY0
ZWQ5YmFlYjQxYjRmKSwKKyAgICAgQyhiOTA2NGY1YzNjYjExYjcxKSwgQygyMzdlMzkyMjliMDEy
YjIwKSwgQyhkZDU0ZDNmNWQ5ODJkZmZlKSwKKyAgICAgQyg3ZmM3NTYyZGJmYzgxZGJmKSwgQyg1
YjBkZDE5MjRmNzA5NDUpLCBDKGYxNzYwNTM3ZDgyNjExMzUpLCBDKGQ1MWJhNTM5KX0sCisgICAg
e0MoZGI0YjE1ZTg4NTMzZjYyMiksIEMoMjU2ZDZkMjQxOWI0MWNlOSksIEMoOWQ3YzUzNzgzOTY3
NjVkNSksCisgICAgIEMoOTA0MGU1YjkzNmI4NjYxYiksIEMoMjc2ZTA4ZmE1M2FjMjdmZCksIEMo
OGM5NDRkMzljMmJkZDJjYyksCisgICAgIEMoZTI1MTRjOTgwMmE1NzQzYyksIEMoOTA0MGU1Yjkz
NmI4NjYxYiksIEMoMjc2ZTA4ZmE1M2FjMjdmZCksCisgICAgIEMoOGM5NDRkMzljMmJkZDJjYyks
IEMoZTI1MTRjOTgwMmE1NzQzYyksIEMoZTgyMTA3YjExYWM5MDM4NiksCisgICAgIEMoN2Q2YTIy
YmMzNTA1NWU2KSwgQyhmZDZlYTlkMWM0MzhkOGFlKSwgQyhiZTYwMTUxNDllOTgxNTUzKSwgQyg3
ZjM3NjM2ZCl9LAorICAgIHtDKDkyMjgzNDczNWU4NmVjYjIpLCBDKDM2MzM4MjY4NWI4ODMyOGUp
LCBDKGU5YzkyOTYwZDcxNDQ2MzApLAorICAgICBDKDg0MzFiMWJmZDBhMjM3OWMpLCBDKDkwMzgz
OTEzYWVhMjgzZjkpLCBDKGE2MTYzODMxZWI0OTI0ZDIpLAorICAgICBDKDVmMzkyMWI0ZjkwODRh
ZWUpLCBDKDg0MzFiMWJmZDBhMjM3OWMpLCBDKDkwMzgzOTEzYWVhMjgzZjkpLAorICAgICBDKGE2
MTYzODMxZWI0OTI0ZDIpLCBDKDVmMzkyMWI0ZjkwODRhZWUpLCBDKDdhNzAwNjFhMTQ3M2U1Nzkp
LAorICAgICBDKDViMTlkODBkY2QyYzYzMzEpLCBDKDYxOTZiOTc5MzFmYWFkMjcpLCBDKDg2OWJm
NjgyOGUyMzdjM2YpLAorICAgICBDKGI5ODAyNmMwKX0sCisgICAge0MoMzBmMWQ3MmM4MTJmMWVi
OCksIEMoYjU2N2NkNGE2OWNkODk4OSksIEMoODIwYjZjOTkyYTUxZjBiYyksCisgICAgIEMoYzU0
Njc3YTgwMzY3MTI1ZSksIEMoMzIwNGZiZGJhNDYyZTYwNiksIEMoODU2MzI3OGFmYzllYWU2OSks
CisgICAgIEMoMjYyMTQ3ZGQ0YmY3ZTU2NiksIEMoYzU0Njc3YTgwMzY3MTI1ZSksIEMoMzIwNGZi
ZGJhNDYyZTYwNiksCisgICAgIEMoODU2MzI3OGFmYzllYWU2OSksIEMoMjYyMTQ3ZGQ0YmY3ZTU2
NiksIEMoMjE3OGI2M2U3ZWUyZDIzMCksCisgICAgIEMoZTljNjFhZDgxZjViZmYyNiksIEMoOWFm
N2E4MWIzYzUwMWVjYSksIEMoNDQxMDRhMzg1OWYwMjM4ZiksCisgICAgIEMoYjg3Nzc2N2UpfSwK
KyAgICB7QygxNjg4ODQyNjdmMzgxN2U5KSwgQyg1YjM3NmUwNTBmNjM3NjQ1KSwgQygxYzE4MzE0
YWJkMzQ0OTdhKSwKKyAgICAgQyg5NTk4ZjZhYjA2ODNmY2MyKSwgQygxYzgwNWFiZjdiODBlMWVl
KSwgQyhkZWM5YWM0MmVlMGQwZjMyKSwKKyAgICAgQyg4Y2Q3MmUzOTEyZDI0NjYzKSwgQyg5NTk4
ZjZhYjA2ODNmY2MyKSwgQygxYzgwNWFiZjdiODBlMWVlKSwKKyAgICAgQyhkZWM5YWM0MmVlMGQw
ZjMyKSwgQyg4Y2Q3MmUzOTEyZDI0NjYzKSwgQygxZjAyNWQ0MDVmMWMxZDg3KSwKKyAgICAgQyhi
ZjdiNjIyMWUxNjY4ZjhmKSwgQyg1MjMxNmY2NGU2OTJkYmIwKSwgQyg3YmY0M2RmNjFlYzUxYjM5
KSwgQyhhZWZhZTc3KX0sCisgICAge0MoODJlNzg1OTZlZTNlNTZhNyksIEMoMjU2OTdkOWM4N2Yz
MGQ5OCksIEMoNzYwMGE4MzQyODM0OTI0ZCksCisgICAgIEMoNmJhMzcyZjRiN2FiMjY4YiksIEMo
OGMzMjM3Y2YxZmUyNDNkZiksIEMoMzgzM2ZjNTEwMTI5MDNkZiksCisgICAgIEMoOGUzMTMxMDEw
OGM1NjgzZiksIEMoNmJhMzcyZjRiN2FiMjY4YiksIEMoOGMzMjM3Y2YxZmUyNDNkZiksCisgICAg
IEMoMzgzM2ZjNTEwMTI5MDNkZiksIEMoOGUzMTMxMDEwOGM1NjgzZiksIEMoMTI2NTkzNzE1YzJk
ZTQyOSksCisgICAgIEMoNDhjYThmMzVhM2Y1NGI5MCksIEMoYjkzMjJiNjMyZjRmOGIwKSwgQyg5
MjZiYjE2OWI3MzM3NjkzKSwgQyhmNjg2OTExKX0sCisgICAge0MoYWEyZDZjZjIyZTNjYzI1Miks
IEMoOWI0ZGVjNGY1ZTE3OWYxNiksIEMoNzZmYjBmYmExZDk5YTk5YSksCisgICAgIEMoOWE2MmFm
M2RiYmExNDBkYSksIEMoMjc4NTdlYTA0NGU5ZGZjMSksIEMoMzNhYmNlOWRhMjI3MjY0NyksCisg
ICAgIEMoYjIyYTc5OTNhYWYzMjU1NiksIEMoOWE2MmFmM2RiYmExNDBkYSksIEMoMjc4NTdlYTA0
NGU5ZGZjMSksCisgICAgIEMoMzNhYmNlOWRhMjI3MjY0NyksIEMoYjIyYTc5OTNhYWYzMjU1Niks
IEMoYmY4Zjg4ZjgwMTliZWRmMCksCisgICAgIEMoZWQyZDdmMDFmYjI3MzkwNSksIEMoNmI0NWYx
NTkwMWI0ODFjZCksIEMoZjg4ZWJiNDEzYmE2YThkNSksCisgICAgIEMoM2RlYWRmMTIpfSwKKyAg
ICB7Qyg3YmY1ZmZkN2Y2OTM4NWM3KSwgQyhmYzA3N2IxZDhiYzgyODc5KSwgQyg5YzA0ZTM2Zjll
ZDgzYTI0KSwKKyAgICAgQyg4MjA2NWM2MmU2NTgyMTg4KSwgQyg4ZWY3ODdmZDM1NmY1ZTQzKSwg
QygyOTIyZTUzZTM2ZTE3ZGZhKSwKKyAgICAgQyg5ODA1ZjIyM2QzODUwMTBiKSwgQyg4MjA2NWM2
MmU2NTgyMTg4KSwgQyg4ZWY3ODdmZDM1NmY1ZTQzKSwKKyAgICAgQygyOTIyZTUzZTM2ZTE3ZGZh
KSwgQyg5ODA1ZjIyM2QzODUwMTBiKSwgQyg2OTIxNTRmMzQ5MWI3ODdkKSwKKyAgICAgQyhlN2U2
NDcwMGU0MTRmYmYpLCBDKDc1N2Q0ZDRhYjY1MDY5YTApLCBDKGNkMDI5NDQ2YThlMzQ4ZTIpLCBD
KGNjZjAyYTRlKX0sCisgICAge0MoZTg5YzhmZjlmOWM2ZTM0YiksIEMoZjU0YzBmNjY5YTQ5ZjZj
NCksIEMoZmMzZTQ2ZjVkODQ2YWRlZiksCisgICAgIEMoMjJmMmFhM2RmMjIyMWNjKSwgQyhmNjZm
ZWE5MGY1ZDYyMTc0KSwgQyhiNzVkZWZhZWFhMWRkMmE3KSwKKyAgICAgQyg5Yjk5NGNkOWE3MjE0
ZmQ1KSwgQygyMmYyYWEzZGYyMjIxY2MpLCBDKGY2NmZlYTkwZjVkNjIxNzQpLAorICAgICBDKGI3
NWRlZmFlYWExZGQyYTcpLCBDKDliOTk0Y2Q5YTcyMTRmZDUpLCBDKGZhYzY3NWEzMTgwNGI3NzMp
LAorICAgICBDKDk4YmNiM2I4MjBjNTBmYzYpLCBDKGUxNGFmNjRkMjhjZjA4ODUpLCBDKDI3NDY2
ZmJkMmIzNjBlYjUpLAorICAgICBDKDE3NmMxNzIyKX0sCisgICAge0MoYTE4ZmJjZGNjZDExZTFm
NCksIEMoODI0ODIxNjc1MWRmZDY1ZSksIEMoNDBjMDg5ZjIwOGQ4OWQ3YyksCisgICAgIEMoMjI5
Yjc5YWI2OWFlOTdkKSwgQyhhODdhYWJjMmVjMjZlNTgyKSwgQyhiZTJiMDUzNzIxZWIyNmQyKSwK
KyAgICAgQygxMGZlYmQ3ZjBjM2Q2ZmNiKSwgQygyMjliNzlhYjY5YWU5N2QpLCBDKGE4N2FhYmMy
ZWMyNmU1ODIpLAorICAgICBDKGJlMmIwNTM3MjFlYjI2ZDIpLCBDKDEwZmViZDdmMGMzZDZmY2Ip
LCBDKDljYzViOWIyZjZlM2JmN2IpLAorICAgICBDKDY1NWQ4NDk1ZmU2MjRhODYpLCBDKDYzODFh
OWYzZDFmMmJkN2UpLCBDKDc5ZWJhYmJmYzI1YzgzZTIpLCBDKDI2ZjgyYWQpfSwKKyAgICB7Qygy
ZDU0ZjQwY2M0MDg4YjE3KSwgQyg1OWQxNTYzM2IwY2QxMzk5KSwgQyhhOGNjMDRiYjFiZmZkMTVi
KSwKKyAgICAgQyhkMzMyY2RiMDczZDhkYzQ2KSwgQygyNzJjNTY0NjY4NjhjYjQ2KSwgQyg3ZTdm
Y2JlMzVjYTZjM2YzKSwKKyAgICAgQyhlZThmNTFlNWE3MDM5OWQ0KSwgQyhkMzMyY2RiMDczZDhk
YzQ2KSwgQygyNzJjNTY0NjY4NjhjYjQ2KSwKKyAgICAgQyg3ZTdmY2JlMzVjYTZjM2YzKSwgQyhl
ZThmNTFlNWE3MDM5OWQ0KSwgQygxNjczN2E5Yzc1ODFmZTdiKSwKKyAgICAgQyhlZDA0YmY1MmY0
Yjc1ZGNiKSwgQyg5NzA3ZmZiMzZiZDMwYzFhKSwgQygxMzkwZjIzNmZkYzBkZTNlKSwKKyAgICAg
QyhiNTI0NGY0Mil9LAorICAgIHtDKDY5Mjc2OTQ2Y2I0ZTg3YzcpLCBDKDYyYmRiZTYxODNiZTZm
YTkpLCBDKDNiYTk3NzNkYWM0NDJhMWEpLAorICAgICBDKDcwMmUyYWZjN2Y1YTE4MjUpLCBDKDhj
NDliMTFlYTgxNTFmZGMpLCBDKGNhZjNmZWY2MWY1YTg2ZmEpLAorICAgICBDKGVmMGIyZWU4NjQ5
ZDcyNzIpLCBDKDcwMmUyYWZjN2Y1YTE4MjUpLCBDKDhjNDliMTFlYTgxNTFmZGMpLAorICAgICBD
KGNhZjNmZWY2MWY1YTg2ZmEpLCBDKGVmMGIyZWU4NjQ5ZDcyNzIpLCBDKDllMzRhNGUwOGQ5NDQx
ZTEpLAorICAgICBDKDdiZGMwY2Q2NGQ1YWY1MzMpLCBDKGE5MjZiMTRkOTllM2Q4NjgpLCBDKGZj
YTkyM2ExNzc4OGNjZTQpLAorICAgICBDKDQ5YTY4OWU1KX0sCisgICAge0MoNjY4MTc0YTNmNDQz
ZGYxZCksIEMoNDA3Mjk5MzkyZGExY2U4NiksIEMoYzJhM2Y3ZDdmMmM1YmUyOCksCisgICAgIEMo
YTU5MGIyMDJhN2E1ODA3YiksIEMoOTY4ZDI1OTNmN2NjYjU0ZSksIEMoOWRkOGQ2NjllM2U5NWRl
YyksCisgICAgIEMoZWUwY2M1ZGQ1OGI2ZTkzYSksIEMoYTU5MGIyMDJhN2E1ODA3YiksIEMoOTY4
ZDI1OTNmN2NjYjU0ZSksCisgICAgIEMoOWRkOGQ2NjllM2U5NWRlYyksIEMoZWUwY2M1ZGQ1OGI2
ZTkzYSksIEMoYWM2NWQ1YTk0NjZmYjQ4MyksCisgICAgIEMoMjIxYmU1MzhiMmM5ZDgwNiksIEMo
NWNiZTk0NDE3ODRmOWZkOSksIEMoZDRjN2Q1ZDZlM2MxMjJiOCksIEMoNTlmY2RkMyl9LAorICAg
IHtDKDVlMjliZTg0N2JkNTA0NiksIEMoYjU2MWM3ZjE5YzhmODBjMyksIEMoNWU1YWJkNTAyMWNj
YWVhZiksCisgICAgIEMoNzQzMmQ2Mzg4OGUwYzMwNiksIEMoNzRiYmNlZWVkNDc5Y2I3MSksIEMo
NjQ3MTU4NjU5OTU3NWZkZiksCisgICAgIEMoNmE4NTlhZDIzMzY1Y2JhMiksIEMoNzQzMmQ2Mzg4
OGUwYzMwNiksIEMoNzRiYmNlZWVkNDc5Y2I3MSksCisgICAgIEMoNjQ3MTU4NjU5OTU3NWZkZiks
IEMoNmE4NTlhZDIzMzY1Y2JhMiksIEMoZjljZWVjODRhY2QxOGRjYyksCisgICAgIEMoNzRhMjQy
ZmYxOTA3NDM3YyksIEMoZjcwODkwMTk0ZTFlZTkxMyksIEMoNzc3ZGZjYjRiYjAxZjBiYSksCisg
ICAgIEMoNGY0YjA0ZTkpfSwKKyAgICB7QyhjZDBkNzlmMjE2NGRhMDE0KSwgQyg0YzM4NmJiNWM1
ZDZjYTBjKSwgQyg4ZTc3MWIwMzY0N2MzYjYzKSwKKyAgICAgQyg2OWRiMjM4NzVjYjBiNzE1KSwg
QyhhZGE4ZGQ5MTUwNGFlMzdmKSwgQyg0NmJmMThkYmYwNDVlZDZhKSwKKyAgICAgQyhlMWI1ZjY3
YjA2NDVhYjYzKSwgQyg2OWRiMjM4NzVjYjBiNzE1KSwgQyhhZGE4ZGQ5MTUwNGFlMzdmKSwKKyAg
ICAgQyg0NmJmMThkYmYwNDVlZDZhKSwgQyhlMWI1ZjY3YjA2NDVhYjYzKSwgQyg4NzdiZThmNWRj
ZGRmZjQpLAorICAgICBDKDZkNDcxYjVmOWNhMmUyZDEpLCBDKDgwMmM4NmQ2ZjQ5NWI5YmIpLCBD
KGExZjliOWIyMmIzYmU3MDQpLAorICAgICBDKDhiMDBmODkxKX0sCisgICAge0MoZTBlNmZjMGIx
NjI4YWYxZCksIEMoMjliZTVmYjRjMjdhMjk0OSksIEMoMWMzZjc4MWE2MDRkMzYzMCksCisgICAg
IEMoYzRhZjdmYWY4ODMwMzNhYSksIEMoOWJkMjk2YzRlOTQ1M2NhYyksIEMoY2E0NTQyNmMxZjdl
MzNmOSksCisgICAgIEMoYTZiYmRjZjcwNzRkNDBjNSksIEMoYzRhZjdmYWY4ODMwMzNhYSksIEMo
OWJkMjk2YzRlOTQ1M2NhYyksCisgICAgIEMoY2E0NTQyNmMxZjdlMzNmOSksIEMoYTZiYmRjZjcw
NzRkNDBjNSksIEMoZTEzYTAwNWQ3MTQyNzMzYiksCisgICAgIEMoYzAyYjc5MjVjNWVlZWZhZiks
IEMoZDM5MTE5YTYwNDQxZTJkNSksIEMoM2MyNGM3MTBkZjhmNGQ0MyksCisgICAgIEMoMTZlMTE0
ZjMpfSwKKyAgICB7QygyMDU4OTI3NjY0YWRmZDkzKSwgQyg2ZThmOTY4Yzc5NjNiYWE1KSwgQyhh
ZjNkY2VkNmZmZjdjMzk0KSwKKyAgICAgQyg0MmUzNGNmM2Q1M2M3ODc2KSwgQyg5Y2RkYmIyNjQy
NGRjNWUpLCBDKDY0ZjYzNDBhNmQ4ZWRkYWQpLAorICAgICBDKDIxOTZlNDg4ZWIyYTNhNGIpLCBD
KDQyZTM0Y2YzZDUzYzc4NzYpLCBDKDljZGRiYjI2NDI0ZGM1ZSksCisgICAgIEMoNjRmNjM0MGE2
ZDhlZGRhZCksIEMoMjE5NmU0ODhlYjJhM2E0YiksIEMoYzllOWRhMjU5MTFhMTZmZCksCisgICAg
IEMoZTIxYjQ2ODNmM2UxOTZhOCksIEMoY2I4MGJmMWE0YzZmZGJiNCksIEMoNTM3OTJlOWIzYzNl
NjdmOCksCisgICAgIEMoZDZiNmRhZGMpfSwKKyAgICB7QyhkYzEwNzI4NWZkOGUxYWY3KSwgQyhh
ODY0MWEwNjA5MzIxZjNmKSwgQyhkYjA2ZTg5ZmZkYzU0NDY2KSwKKyAgICAgQyhiY2M3YTgxZWQ1
NDMyNDI5KSwgQyhiNmQ3YmRjNmFkMmU4MWYxKSwgQyg5MzYwNWVjNDcxYWEzN2RiKSwKKyAgICAg
QyhhMmE3M2Y4YTg1YThlMzk3KSwgQyhiY2M3YTgxZWQ1NDMyNDI5KSwgQyhiNmQ3YmRjNmFkMmU4
MWYxKSwKKyAgICAgQyg5MzYwNWVjNDcxYWEzN2RiKSwgQyhhMmE3M2Y4YTg1YThlMzk3KSwgQygx
MGEwMTJiOGNhN2FjMjRiKSwKKyAgICAgQyhhYWM1ZmQ2MzM1MTU5NWNmKSwgQyg1YmI0YzY0OGEy
MjZkZWEwKSwgQyg5ZDExZWNiMmI1YzA1YzVmKSwKKyAgICAgQyg4OTdlMjBhYyl9LAorICAgIHtD
KGZiYmExYWZlMmUzMjgwZjEpLCBDKDc1NWE1ZjM5MmYwN2ZjZSksIEMoOWU0NGE5YTE1NDAyODA5
YSksCisgICAgIEMoNjIyNmEzMmUyNTA5OTg0OCksIEMoZWE4OTU2NjFlY2Y1MzAwNCksIEMoNGQ3
ZTAxNThkYjIyMjhiOSksCisgICAgIEMoZTVhN2Q4MjkyMmY2OTg0MiksIEMoNjIyNmEzMmUyNTA5
OTg0OCksIEMoZWE4OTU2NjFlY2Y1MzAwNCksCisgICAgIEMoNGQ3ZTAxNThkYjIyMjhiOSksIEMo
ZTVhN2Q4MjkyMmY2OTg0MiksIEMoMmNlYTc3MTNiNjk4NDBjYSksCisgICAgIEMoMThkZTdiOWFl
OTM4Mzc1YiksIEMoZjEyN2NjYTA4ZjNjYzY2NSksIEMoYjFjMjJkNzI3NjY1YWQyKSwgQyhmOTk2
ZTA1ZCl9LAorICAgIHtDKGJmYTEwNzg1ZGRjMTAxMWIpLCBDKGI2ZTFjNGQyZjY3MGY3ZGUpLCBD
KDUxN2Q5NTYwNGU0ZmNjMWYpLAorICAgICBDKGNhNjU1MmEwZGZiODJjNzMpLCBDKGIwMjRjZGYw
OWUzNGJhMDcpLCBDKDY2Y2Q4YzVhOTVkNzM5M2IpLAorICAgICBDKGUzOTM5YWNmNzkwZDRhNzQp
LCBDKGNhNjU1MmEwZGZiODJjNzMpLCBDKGIwMjRjZGYwOWUzNGJhMDcpLAorICAgICBDKDY2Y2Q4
YzVhOTVkNzM5M2IpLCBDKGUzOTM5YWNmNzkwZDRhNzQpLCBDKDk3ODI3NTQxYTFlZjA1MWUpLAor
ICAgICBDKGFjMmZjZTQ3ZWJlNjUwMGMpLCBDKGIzZjA2ZDNiZGRmM2JkNmEpLCBDKDFkNzRhZmIy
NWUxY2U1ZmUpLAorICAgICBDKGM0MzA2YWY2KX0sCisgICAge0MoNTM0Y2MzNWYwZWUxZWI0ZSks
IEMoYjcwMzgyMGYxZjNiM2RjZSksIEMoODg0YWExNjRjZjIyMzYzKSwKKyAgICAgQyhmMTRlZjdm
NDdkOGE1N2EzKSwgQyg4MGQxZjg2ZjJlMDYxZDdjKSwgQyg0MDFkNmMyZjE1MWI1YTYyKSwKKyAg
ICAgQyhlOTg4NDYwMjI0MTA4OTQ0KSwgQyhmMTRlZjdmNDdkOGE1N2EzKSwgQyg4MGQxZjg2ZjJl
MDYxZDdjKSwKKyAgICAgQyg0MDFkNmMyZjE1MWI1YTYyKSwgQyhlOTg4NDYwMjI0MTA4OTQ0KSwg
Qyg3ODA0ZDQxMzVmNjhjZDE5KSwKKyAgICAgQyg1NDg3YjRiMzllNjlmZThlKSwgQyg4Y2M1OTk5
MDE1MzU4YTI3KSwgQyg4ZjM3MjliNjFjMmQ1NjAxKSwKKyAgICAgQyg2ZGNhZDQzMyl9LAorICAg
IHtDKDdjYTZlMzkzMzk5NWRhYyksIEMoZmQxMThjNzdkYWE4MTg4KSwgQygzYWNlYjdiNWU3ZGE2
NTQ1KSwKKyAgICAgQyhjODM4OTc5OTQ0NTQ4MGRiKSwgQyg1Mzg5ZjVkZjhhYWNkNTBkKSwgQyhk
MTM2NTgxZjIyZmFiNWYpLAorICAgICBDKGMyZjMxZjg1OTkxZGE0MTcpLCBDKGM4Mzg5Nzk5NDQ1
NDgwZGIpLCBDKDUzODlmNWRmOGFhY2Q1MGQpLAorICAgICBDKGQxMzY1ODFmMjJmYWI1ZiksIEMo
YzJmMzFmODU5OTFkYTQxNyksIEMoYWVmYmY5ZmY4NDAzNWE0MyksCisgICAgIEMoOGFjY2JhZjQ0
YWRhZGQ3YyksIEMoZTU3ZjM2NTczNDRiNjdmNSksIEMoMjE0OTBlNWU4YWJkZWM1MSksCisgICAg
IEMoM2MwNzM3NGQpfSwKKyAgICB7QyhmMGQ2MDQ0ZjZlZmQ3NTk4KSwgQyhlMDQ0ZDZiYTQzNjk4
NTZlKSwgQyg5MTk2OGU0ZjhjOGExYTRjKSwKKyAgICAgQyg3MGJkMTk2ODk5NmJmZmMyKSwgQyg0
YzYxM2RlNWQ4YWIzMmFjKSwgQyhmZTFmNGY5NzIwNmY3OWQ4KSwKKyAgICAgQyhhYzA0MzRmMmM0
ZTIxM2E5KSwgQyg3MGJkMTk2ODk5NmJmZmMyKSwgQyg0YzYxM2RlNWQ4YWIzMmFjKSwKKyAgICAg
QyhmZTFmNGY5NzIwNmY3OWQ4KSwgQyhhYzA0MzRmMmM0ZTIxM2E5KSwgQyg3NDkwZTlkODJjZmUy
MmNhKSwKKyAgICAgQyg1ZmJiZjdmOTg3NDU0MjM4KSwgQyhjMzllMGRjODM2OGNlOTQ5KSwgQygy
MjIwMWQzODk0Njc2YzcxKSwKKyAgICAgQyhmMGY0NjAyYyl9LAorICAgIHtDKDNkNjllNTIwNDk4
NzlkNjEpLCBDKDc2NjEwNjM2ZWE5Zjc0ZmUpLCBDKGU5YmY1NjAyZjg5MzEwYzApLAorICAgICBD
KDhlZWIxNzdhODYwNTNjMTEpLCBDKGUzOTAxMjJjMzQ1ZjM0YTIpLCBDKDFlMzBlNDdhZmJhYWY4
ZDYpLAorICAgICBDKDdiODkyZjY4ZTVmOTE3MzIpLCBDKDhlZWIxNzdhODYwNTNjMTEpLCBDKGUz
OTAxMjJjMzQ1ZjM0YTIpLAorICAgICBDKDFlMzBlNDdhZmJhYWY4ZDYpLCBDKDdiODkyZjY4ZTVm
OTE3MzIpLCBDKGI4NzkyMjUyNWZhNDQxNTgpLAorICAgICBDKGY0NDBhMWVlMWExYTc2NmIpLCBD
KGVlOGVmYWQyNzlkMDhjNWMpLCBDKDQyMWY5MTBjNWI2MDIxNmUpLAorICAgICBDKDNlMWVhMDcx
KX0sCisgICAge0MoNzlkYTI0MmExNmFjYWUzMSksIEMoMTgzYzVmNDM4ZTI5ZDQwKSwgQyg2ZDM1
MTcxMGFlOTJmM2RlKSwKKyAgICAgQygyNzIzM2IyOGI1YjExZTliKSwgQyhjN2RmZTg5ODhhOTQy
NzAwKSwgQyg1NzBlZDExYzRhYmFkOTg0KSwKKyAgICAgQyg0YjRjMDQ2MzJmNDgzMTFhKSwgQygy
NzIzM2IyOGI1YjExZTliKSwgQyhjN2RmZTg5ODhhOTQyNzAwKSwKKyAgICAgQyg1NzBlZDExYzRh
YmFkOTg0KSwgQyg0YjRjMDQ2MzJmNDgzMTFhKSwgQygxMmYzMzIzNTQ0MmNiZjkpLAorICAgICBD
KGEzNTMxNWNhMGI1YjhjZGIpLCBDKGQ4YWJkZTYyZWFkNTUwNmIpLCBDKGZjMGZjZjg0NzhhZDUy
NjYpLAorICAgICBDKDY3NTgwZjBjKX0sCisgICAge0MoNDYxYzgyNjU2YTc0ZmI1NyksIEMoZDg0
YjQ5MWIyNzVhYTBmNyksIEMoOGYyNjJjYjI5YTZlYjhiMiksCisgICAgIEMoNDlmYTMwNzBiYzdi
MDZkMCksIEMoZjEyZWQ0NDZiZDBjMDUzOSksIEMoNmQ0M2FjNWQxZGQ0YjI0MCksCisgICAgIEMo
NzYwOTUyNGZlOTBiZWM5MyksIEMoNDlmYTMwNzBiYzdiMDZkMCksIEMoZjEyZWQ0NDZiZDBjMDUz
OSksCisgICAgIEMoNmQ0M2FjNWQxZGQ0YjI0MCksIEMoNzYwOTUyNGZlOTBiZWM5MyksIEMoMzkx
YzJiMmUwNzZlYzI0MSksCisgICAgIEMoZjVlNjJkZWRhNzgzOWY3YiksIEMoM2M3YjMxODZhMTBk
ODcwZiksIEMoNzdlZjRmMmNiYTRmMTAwNSksCisgICAgIEMoNGUxMDk0NTQpfSwKKyAgICB7Qyg1
M2MxYTY2ZDBiMTMwMDMpLCBDKDczMWYwNjBlNmZlNzk3ZmMpLCBDKGRhYTU2ODExNzkxMzcxZTMp
LAorICAgICBDKDU3NDY2MDQ2Y2Y2ODk2ZWQpLCBDKDhhYzM3ZTBlOGIyNWIwYzYpLCBDKDNlNjA3
NGI1MmFkM2NmMTgpLAorICAgICBDKGFhNDkxY2U3YjQ1ZGIyOTcpLCBDKDU3NDY2MDQ2Y2Y2ODk2
ZWQpLCBDKDhhYzM3ZTBlOGIyNWIwYzYpLAorICAgICBDKDNlNjA3NGI1MmFkM2NmMTgpLCBDKGFh
NDkxY2U3YjQ1ZGIyOTcpLCBDKGY3YTkyMjdjNWU1ZTIyYzMpLAorICAgICBDKDNkOTJlMDg0MWUy
OWNlMjgpLCBDKDJkMzBkYTViMjg1OWU1OWQpLCBDKGZmMzdmYTFjOWNiZmFmYzIpLAorICAgICBD
KDg4YTQ3NGE3KX0sCisgICAge0MoZDNhMmVmZWMwZjA0N2U5KSwgQygxY2FiY2U1ODg1M2U1OGVh
KSwgQyg3YTE3YjJlYWUzMjU2YmU0KSwKKyAgICAgQyhjMmRjYzk3NThjOTEwMTcxKSwgQyhjYjVj
ZGRhZWZmNGRkYjQwKSwgQyg1ZDdjYzU4NjliYWVmZWYxKSwKKyAgICAgQyg5NjQ0YzU4NTNhZjlj
ZmViKSwgQyhjMmRjYzk3NThjOTEwMTcxKSwgQyhjYjVjZGRhZWZmNGRkYjQwKSwKKyAgICAgQyg1
ZDdjYzU4NjliYWVmZWYxKSwgQyg5NjQ0YzU4NTNhZjljZmViKSwgQygyNTVjOTY4MTg0Njk0ZWUx
KSwKKyAgICAgQyg0ZTRkNzI2ZWRhMzYwOTI3KSwgQyg3ZDI3ZGQ1YjZkMTAwMzc3KSwgQyg5YTMw
MGUyMDIwZGRlYTJjKSwgQyg1YjViZWRkKX0sCisgICAge0MoNDNjNjRkNzQ4NGY3ZjliMiksIEMo
NWRhMDAyYjY0YWFmYWViNyksIEMoYjU3NmMxZTQ1ODAwYTcxNiksCisgICAgIEMoM2VlODRkM2Q1
YjRjYTAwYiksIEMoNWNiYzZkNzAxODk0YzNmOSksIEMoZDllOTQ2ZjVhZTFjYTk1KSwKKyAgICAg
QygyNGNhMDZlNjdmMGIxODMzKSwgQygzZWU4NGQzZDViNGNhMDBiKSwgQyg1Y2JjNmQ3MDE4OTRj
M2Y5KSwKKyAgICAgQyhkOWU5NDZmNWFlMWNhOTUpLCBDKDI0Y2EwNmU2N2YwYjE4MzMpLCBDKDM0
MTNkNDZiNDE1MjY1MGUpLAorICAgICBDKGNiZGZkYmMyYWI1MTZmOWMpLCBDKDJhYWQ4YWNiNzM5
ZTBjNmMpLCBDKDJiZmM5NTBkOWY5ZmE5NzcpLAorICAgICBDKDFhYWRkZmE3KX0sCisgICAge0Mo
YTdkZWM2YWQ4MWNmN2ZhMSksIEMoMTgwYzFhYjcwODY4MzA2MyksIEMoOTVlMGZkNzAwOGQ2N2Nm
ZiksCisgICAgIEMoNmIxMWM1MDczNjg3MjA4KSwgQyg3ZTBhNTdkZTBkNDUzZjMpLCBDKGU0OGMy
NjdkNGY2NDY4NjcpLAorICAgICBDKDIxNjhlOTEzNjM3NWY5Y2IpLCBDKDZiMTFjNTA3MzY4NzIw
OCksIEMoN2UwYTU3ZGUwZDQ1M2YzKSwKKyAgICAgQyhlNDhjMjY3ZDRmNjQ2ODY3KSwgQygyMTY4
ZTkxMzYzNzVmOWNiKSwgQyg2NGRhMTk0YWVlZWE3ZmRmKSwKKyAgICAgQyhhM2I5ZjAxZmE1ODg1
Njc4KSwgQyhjMzE2ZjhlZTJlYjJiZDE3KSwgQyhhN2U0ZDgwZjgzZTQ0MjdmKSwKKyAgICAgQyg1
YmUwN2ZkOCl9LAorICAgIHtDKDU0MDhhMWRmOTlkNGFmZiksIEMoYjk1NjVlNTg4NzQwZjZiZCks
IEMoYWJmMjQxODEzYjA4MDA2ZSksCisgICAgIEMoN2RhOWU4MWQ4OWZkYTdhZCksIEMoMjc0MTU3
Y2FiZTcxNDQwZCksIEMoMmMyMmQ5YTQ4MGIzMzFmNyksCisgICAgIEMoZTgzNWM4YWM3NDY0NzJk
NSksIEMoN2RhOWU4MWQ4OWZkYTdhZCksIEMoMjc0MTU3Y2FiZTcxNDQwZCksCisgICAgIEMoMmMy
MmQ5YTQ4MGIzMzFmNyksIEMoZTgzNWM4YWM3NDY0NzJkNSksIEMoMjAzOGNlODE3YTIwMWFlNCks
CisgICAgIEMoNDZmMzI4OWRmZTFjNWU0MCksIEMoNDM1NTc4YTQyZDRiN2M1NiksIEMoZjk2ZDlm
NDA5ZmNmNTYxKSwgQyhjYmNhODYwNil9LAorICAgIHtDKGE4YjI3YTZiY2FlZWVkNGIpLCBDKGFl
YzFlZWRlZDZhODdlMzkpLCBDKDlkYWYyNDZkNmZlZDgzMjYpLAorICAgICBDKGQ0NWE5MzhiNzlm
NTRlOGYpLCBDKDM2NmIyMTlkNmQxMzNlNDgpLCBDKDViMTRiZTNjMjVjNDk0MDUpLAorICAgICBD
KGZkZDc5MWQ0ODgxMWE1NzIpLCBDKGQ0NWE5MzhiNzlmNTRlOGYpLCBDKDM2NmIyMTlkNmQxMzNl
NDgpLAorICAgICBDKDViMTRiZTNjMjVjNDk0MDUpLCBDKGZkZDc5MWQ0ODgxMWE1NzIpLCBDKDNk
ZTY3YjhkOWU5NWQzMzUpLAorICAgICBDKDkwM2MwMTMwN2NmYmVlZDUpLCBDKGFmN2Q2NWYzMjI3
NGYxZDEpLCBDKDRkYmExNDFiNWZjMDNjNDIpLAorICAgICBDKGJkZTY0ZDAxKX0sCisgICAge0Mo
OWE5NTJhODI0NmZkYzI2OSksIEMoZDBkY2ZjYWM3NGVmMjc4YyksIEMoMjUwZjcxMzk4MzZmMGYx
ZiksCisgICAgIEMoYzgzZDNjNWY0ZTVmMDMyMCksIEMoNjk0ZTdhZGViMmJmMzJlNSksIEMoN2Fk
MDk1MzhhM2RhMjdmNSksCisgICAgIEMoMmI1YzE4ZjkzNGFhNTMwMyksIEMoYzgzZDNjNWY0ZTVm
MDMyMCksIEMoNjk0ZTdhZGViMmJmMzJlNSksCisgICAgIEMoN2FkMDk1MzhhM2RhMjdmNSksIEMo
MmI1YzE4ZjkzNGFhNTMwMyksIEMoYzRkYWQ3NzAzZDM0MzI2ZSksCisgICAgIEMoODI1NTY5ZTJi
Y2RjNmEyNSksIEMoYjgzZDI2NzcwOWNhOTAwZCksIEMoNDRlZDA1MTUxZjVkNzRlNiksCisgICAg
IEMoZWU5MGNmMzMpfSwKKyAgICB7QyhjOTMwODQxZDFkODg2ODRmKSwgQyg1ZWI2NmViMThiN2Y5
NjcyKSwgQyhlNDU1ZDQxMzAwOGEyNTQ2KSwKKyAgICAgQyhiYzI3MWJjMGRmMTRkNjQ3KSwgQyhi
MDcxMTAwYTlmZjJlZGJiKSwgQygyYjFhNGMxY2MzMWExMTlhKSwKKyAgICAgQyhiNWQ3Y2FhMWJk
OTQ2Y2VmKSwgQyhiYzI3MWJjMGRmMTRkNjQ3KSwgQyhiMDcxMTAwYTlmZjJlZGJiKSwKKyAgICAg
QygyYjFhNGMxY2MzMWExMTlhKSwgQyhiNWQ3Y2FhMWJkOTQ2Y2VmKSwgQyhlMDI2MjNhZTEwZjRh
YWRkKSwKKyAgICAgQyhkNzlmNjAwMzg5Y2QwNmZkKSwgQygxZThkYTc5NjUzMDNlNjJiKSwgQyg4
NmY1MGUxMGVlYWIwOTI1KSwKKyAgICAgQyg0MzA1YzNjZSl9LAorICAgIHtDKDk0ZGM2OTcxZTNj
ZjA3MWEpLCBDKDk5NGM3MDAzYjczYjJiMzQpLCBDKGVhMTZlODU5Nzg2OTRlNSksCisgICAgIEMo
MzM2YzFiNTlhMWZjMTlmNiksIEMoYzE3M2FjYWVjYzQ3MTMwNSksIEMoZGIxMjY3ZDI0ZjNmM2Yz
NiksCisgICAgIEMoZTlhNWVlOTg2MjdhNmU3OCksIEMoMzM2YzFiNTlhMWZjMTlmNiksIEMoYzE3
M2FjYWVjYzQ3MTMwNSksCisgICAgIEMoZGIxMjY3ZDI0ZjNmM2YzNiksIEMoZTlhNWVlOTg2Mjdh
NmU3OCksIEMoNzE4ZjMzNDIwNDMwNWFlNSksCisgICAgIEMoZTNiNTNjMTQ4Zjk4ZDIyYyksIEMo
YTE4NDAxMmRmODQ4OTI2KSwgQyg2ZTk2Mzg2MTI3ZDUxMTgzKSwgQyg0YjNhMWQ3Nil9LAorICAg
IHtDKDdmYzk4MDA2ZTI1Y2FjOSksIEMoNzdmZWUwNDg0Y2RhODZhNyksIEMoMzc2ZWMzZDQ0NzA2
MDQ1NiksCisgICAgIEMoODQwNjRhNmRjZjkxNjM0MCksIEMoZmJmNTVhMjY3OTBlMGViYiksIEMo
MmU3Zjg0MTUxYzMxYTVjMiksCisgICAgIEMoOWY3ZjZkNzZiOTUwZjliZiksIEMoODQwNjRhNmRj
ZjkxNjM0MCksIEMoZmJmNTVhMjY3OTBlMGViYiksCisgICAgIEMoMmU3Zjg0MTUxYzMxYTVjMiks
IEMoOWY3ZjZkNzZiOTUwZjliZiksIEMoMTI1ZTA5NGZiZWUyYjE0NiksCisgICAgIEMoNTcwNmFh
NzJiMmVlZjdjMiksIEMoMWM0YTJkYWE5MDVlZTY2ZSksIEMoODNkNDgwMjliNTQ1MTY5NCksCisg
ICAgIEMoYThiYjZkODApfSwKKyAgICB7QyhiZDc4MWM0NDU0MTAzZjYpLCBDKDYxMjE5NzMyMmY0
OWM5MzEpLCBDKGI5Y2YxN2ZkN2U1NDYyZDUpLAorICAgICBDKGUzOGU1MjZjZDMzMjQzNjQpLCBD
KDg1ZjJiNjNhNWI1ZTg0MGEpLCBDKDQ4NWQ3Y2VmNWFhYWRkODcpLAorICAgICBDKGQyYjgzN2E0
NjJmNmRiNmQpLCBDKGUzOGU1MjZjZDMzMjQzNjQpLCBDKDg1ZjJiNjNhNWI1ZTg0MGEpLAorICAg
ICBDKDQ4NWQ3Y2VmNWFhYWRkODcpLCBDKGQyYjgzN2E0NjJmNmRiNmQpLCBDKDNlNDFjZWYwMzE1
MjBkOWEpLAorICAgICBDKDgyZGY3MzkwMmQ3ZjY3ZSksIEMoM2JhNmZkNTRjMTUyNTdjYiksIEMo
MjJmOTFmMDc5YmU0MmQ0MCksIEMoMWY5ZmE2MDcpfSwKKyAgICB7QyhkYTYwZTZiMTQ0NzlmOWRm
KSwgQygzYmRjY2Y2OWVjZTE2NzkyKSwgQygxOGViZjQ1YzRmZWNmZGM5KSwKKyAgICAgQygxNjgx
OGVlOWQzOGM2NjY0KSwgQyg1NTE5ZmE5YTFlMzVhMzI5KSwgQyhjYmQwMDAxZTRiMDhlZDgpLAor
ICAgICBDKDQxYTk2NWUzN2EwYzczMWIpLCBDKDE2ODE4ZWU5ZDM4YzY2NjQpLCBDKDU1MTlmYTlh
MWUzNWEzMjkpLAorICAgICBDKGNiZDAwMDFlNGIwOGVkOCksIEMoNDFhOTY1ZTM3YTBjNzMxYiks
IEMoNjZlN2I1ZGNjYTFjYTI4ZiksCisgICAgIEMoOTYzYjJkOTkzNjE0MzQ3ZCksIEMoOWI2ZmM2
ZjQxZDQxMTEwNiksIEMoYWFhZWNhY2NmNzg0OGMwYyksCisgICAgIEMoOGQwZTRlZDIpfSwKKyAg
ICB7Qyg0Y2E1NmEzNDhiNmM0ZDMpLCBDKDYwNjE4NTM3YzM4NzI1MTQpLCBDKDJmYmI5ZjBlNjU4
NzFiMDkpLAorICAgICBDKDMwMjc4MDE2ODMwZGRkNDMpLCBDKGYwNDY2NDZkOTAxMmUwNzQpLCBD
KGM2MmE1ODA0ZjZlN2M5ZGEpLAorICAgICBDKDk4ZDUxZjU4MzBlMmJjMWUpLCBDKDMwMjc4MDE2
ODMwZGRkNDMpLCBDKGYwNDY2NDZkOTAxMmUwNzQpLAorICAgICBDKGM2MmE1ODA0ZjZlN2M5ZGEp
LCBDKDk4ZDUxZjU4MzBlMmJjMWUpLCBDKDdiMmNiZTVkMzdlM2YyOWUpLAorICAgICBDKDdiOGMz
ZWQ1MGJkYTRhYTApLCBDKDNlYTYwY2MyNDYzOWUwMzgpLCBDKGY3NzA2ZGU5ZmIwYjU4MDEpLAor
ICAgICBDKDFiZjMxMzQ3KX0sCisgICAge0MoZWJkMjJkNGI3MDk0NjQwMSksIEMoNjg2MzYwMmJm
NzEzOTAxNyksIEMoYzBiMWFjNGUxMWIwMDY2NiksCisgICAgIEMoN2QyNzgyYjgyYmQ0OTRiNiks
IEMoOTcxNTliYTFjMjZiMzA0YiksIEMoNDJiM2IwZmQ0MzFiMmFjMiksCisgICAgIEMoZmFhODFm
ODI2OTFjODMwYyksIEMoN2QyNzgyYjgyYmQ0OTRiNiksIEMoOTcxNTliYTFjMjZiMzA0YiksCisg
ICAgIEMoNDJiM2IwZmQ0MzFiMmFjMiksIEMoZmFhODFmODI2OTFjODMwYyksIEMoN2NjNjQ0OTIz
NGM3ZTE4NSksCisgICAgIEMoYWVhYTZmYTY0M2NhODZhNSksIEMoMTQxMmRiMWMwZjJlMDEzMyks
IEMoNGRmMmZlM2U0MDcyOTM0ZiksCisgICAgIEMoMWFlM2ZjNWIpfSwKKyAgICB7QygzY2M0Njkz
ZDZjYmNiMGMpLCBDKDUwMTY4OWVhMWM3MGZmYSksIEMoMTBhNDM1M2U5Yzg5ZTM2NCksCisgICAg
IEMoNThjOGFiYTc0NzVlMmQ5NSksIEMoM2UyZjI5MTY5OGM5NDI3YSksIEMoZTg3MTBkMTljOWRl
OWU0MSksCisgICAgIEMoNjVkZGEyMmViMDRjZjk1MyksIEMoNThjOGFiYTc0NzVlMmQ5NSksIEMo
M2UyZjI5MTY5OGM5NDI3YSksCisgICAgIEMoZTg3MTBkMTljOWRlOWU0MSksIEMoNjVkZGEyMmVi
MDRjZjk1MyksIEMoZDc3MjljNDhjMjUwY2ZmYSksCisgICAgIEMoZWY3NjE2MmIyZGRmYmE0Yiks
IEMoNTIzNzFlMTdmNGQ1MWY2ZCksIEMoZGRkMDAyMTEyZmYwYzgzMyksCisgICAgIEMoNDU5YzM5
MzApfSwKKyAgICB7QygzODkwOGU0M2Y3YmE1ZWYwKSwgQygxYWIwMzVkNGU3NzgxZTc2KSwgQyg0
MWQxMzNlOGMwYTY4ZmY3KSwKKyAgICAgQyhkMTA5MDg5M2FmYWFiOGJjKSwgQyg5NmM0ZmU2OTIy
NzcyODA3KSwgQyg0NTIyNDI2YzJiNDIwNWViKSwKKyAgICAgQyhlZmFkOTlhMTI2MmU3ZTBkKSwg
QyhkMTA5MDg5M2FmYWFiOGJjKSwgQyg5NmM0ZmU2OTIyNzcyODA3KSwKKyAgICAgQyg0NTIyNDI2
YzJiNDIwNWViKSwgQyhlZmFkOTlhMTI2MmU3ZTBkKSwgQyhjNzY5NjAyOWFiZGI0NjVlKSwKKyAg
ICAgQyg0ZTE4ZWFmMDNkNTE3NjUxKSwgQyhkMDA2YmNlZDU0Yzg2YWM4KSwgQyg0MzMwMzI2ZDEw
MjE4NjBjKSwKKyAgICAgQyhlMDBjNDE4NCl9LAorICAgIHtDKDM0OTgzY2NjNmFhNDAyMDUpLCBD
KDIxODAyY2FkMzRlNzJiYzQpLCBDKDE5NDNlOGZiM2MxN2JiOCksCisgICAgIEMoZmM5NDcxNjdm
NjljMGRhNSksIEMoYWU3OWNmZGI5MWI2ZjZjMSksIEMoN2IyNTFkMDRjMjZjYmRhMyksCisgICAg
IEMoMTI4YTMzYTc5MDYwZDI1ZSksIEMoZmM5NDcxNjdmNjljMGRhNSksIEMoYWU3OWNmZGI5MWI2
ZjZjMSksCisgICAgIEMoN2IyNTFkMDRjMjZjYmRhMyksIEMoMTI4YTMzYTc5MDYwZDI1ZSksIEMo
MWVjYTg0MmRiZmUwMThkZCksCisgICAgIEMoNTBhNGNkMmVlMGJhOWM2MyksIEMoYzJmNWM5N2Q4
Mzk5NjgyZiksIEMoM2Y5MjlmYzdjYmU4ZWNiYiksCisgICAgIEMoZmZjN2E3ODEpfSwKKyAgICB7
Qyg4NjIxNWM0NWRjYWM5OTA1KSwgQyhlYTU0NmFmZTg1MWNhZTRiKSwgQyhkODViNjQ1N2U0ODll
Mzc0KSwKKyAgICAgQyhiNzYwOWM4ZTcwMzg2ZDY2KSwgQygzNmU2Y2NjMjc4ZDE2MzZkKSwgQygy
Zjg3MzMwN2MwOGU2YTFjKSwKKyAgICAgQygxMGYyNTJhNzU4NTA1Mjg5KSwgQyhiNzYwOWM4ZTcw
Mzg2ZDY2KSwgQygzNmU2Y2NjMjc4ZDE2MzZkKSwKKyAgICAgQygyZjg3MzMwN2MwOGU2YTFjKSwg
QygxMGYyNTJhNzU4NTA1Mjg5KSwgQyhjODk3NzY0NmU4MWFiNGI2KSwKKyAgICAgQyg4MDE3Yjc0
NWNkODAyMTNiKSwgQyg5NjA2ODdkYjM1OWJlYTApLCBDKGVmNGE0NzA2NjA3OTk0ODgpLCBDKDZh
MTI1NDgwKX0sCisgICAge0MoNDIwZmMyNTVjMzhkYjE3NSksIEMoZDUwM2NkMGYzYzEyMDhkMSks
IEMoZDQ2ODRlNzRjODI1YTBiYyksCisgICAgIEMoNGMxMDUzNzQ0MzE1MmYzZCksIEMoNzIwNDUx
ZDNjODk1ZTI1ZCksIEMoYWZmNjBjNGQxMWY1MTNmZCksCisgICAgIEMoODgxZThkNmQyZDVmYjk1
MyksIEMoNGMxMDUzNzQ0MzE1MmYzZCksIEMoNzIwNDUxZDNjODk1ZTI1ZCksCisgICAgIEMoYWZm
NjBjNGQxMWY1MTNmZCksIEMoODgxZThkNmQyZDVmYjk1MyksIEMoOWRlYzAzNGEwNDNmMWY1NSks
CisgICAgIEMoZTI3YTBjMjJlN2JmYjM5ZCksIEMoMjIyMGI5NTkxMjgzMjQpLCBDKDUzMjQwMjcy
MTUyZGJkOGIpLCBDKDg4YTE1MTJiKX0sCisgICAge0MoMWQ3YTMxZjViYzhmZTJmOSksIEMoNDc2
Mzk5MTA5MmRjZjgzNiksIEMoZWQ2OTVmNTViOTc0MTZmNCksCisgICAgIEMoZjI2NWVkYjBjMWM0
MTFkNyksIEMoMzBlMWU5ZWM1MjYyYjdlNiksIEMoYzJjM2JhMDYxY2U3OTU3YSksCisgICAgIEMo
ZDk3NWY5M2I4OWExNjQwOSksIEMoZjI2NWVkYjBjMWM0MTFkNyksIEMoMzBlMWU5ZWM1MjYyYjdl
NiksCisgICAgIEMoYzJjM2JhMDYxY2U3OTU3YSksIEMoZDk3NWY5M2I4OWExNjQwOSksIEMoZTlk
NzAzMTIzZjQzNDUwYSksCisgICAgIEMoNDEzODNmZWRmZWQ2N2M4MiksIEMoNmU5ZjQzZWNiYmJk
NjAwNCksIEMoYzdjY2QyM2EyNGU3N2I4KSwgQyg1NDliYmJlNSl9LAorICAgIHtDKDk0MTI5YTg0
YzM3NmEyNmUpLCBDKGMyNDVlODU5ZGMyMzE5MzMpLCBDKDFiOGY3NGZlY2Y5MTc0NTMpLAorICAg
ICBDKGU5MzY5ZDJlOTAwN2U3NGIpLCBDKGIxMzc1OTE1ZDExMzYwNTIpLCBDKDkyNmMyMDIxZmUx
ZDIzNTEpLAorICAgICBDKDFkOTQzYWRkYWFhMmU3ZTYpLCBDKGU5MzY5ZDJlOTAwN2U3NGIpLCBD
KGIxMzc1OTE1ZDExMzYwNTIpLAorICAgICBDKDkyNmMyMDIxZmUxZDIzNTEpLCBDKDFkOTQzYWRk
YWFhMmU3ZTYpLCBDKGY1ZjUxNTg2OWMyNDY3MzgpLAorICAgICBDKDdlMzA5Y2QwZTFjMGYyYTAp
LCBDKDE1M2MzYzM2Y2Y1MjNlM2IpLCBDKDQ5MzFjNjY4NzJlYTY3NTgpLAorICAgICBDKGMxMzNk
MzhjKX0sCisgICAge0MoMWQzYTk4MDlkYWIwNWM4ZCksIEMoYWRkZGViNGY3MWM5M2U4KSwgQyhl
ZjM0MmViMzY2MzFlZGIpLAorICAgICBDKDMwMWQ3YTYxYzRiM2RiY2EpLCBDKDg2MTMzNmMzZjA1
NTJkNjEpLCBDKDEyYzZkYjk0NzQ3MTMwMGYpLAorICAgICBDKGE2NzllZjBlZDc2MWRlYjkpLCBD
KDMwMWQ3YTYxYzRiM2RiY2EpLCBDKDg2MTMzNmMzZjA1NTJkNjEpLAorICAgICBDKDEyYzZkYjk0
NzQ3MTMwMGYpLCBDKGE2NzllZjBlZDc2MWRlYjkpLCBDKDVmNzEzYjcyMGVmY2QxNDcpLAorICAg
ICBDKDM3YWMzMzBhMzMzYWE2YiksIEMoMzMwOWRjOWVjMTYxNmVlZiksIEMoNTIzMDFkN2E5MDgw
MjZiNSksIEMoZmNhY2UzNDgpfSwKKyAgICB7Qyg5MGZhM2NjYmQ2MDg0OGRhKSwgQyhkZmE2ZTA1
OTViNTY5ZTExKSwgQyhlNTg1ZDA2N2ExZjUxMzVkKSwKKyAgICAgQyg2Y2VmODY2ZWMyOTVhYmVh
KSwgQyhjNDg2YzBkOTIxNGJlYjJkKSwgQyhkNmU0OTA5NDRkNWZlMTAwKSwKKyAgICAgQyg1OWRm
MzE3NWQ3MmM5ZjM4KSwgQyg2Y2VmODY2ZWMyOTVhYmVhKSwgQyhjNDg2YzBkOTIxNGJlYjJkKSwK
KyAgICAgQyhkNmU0OTA5NDRkNWZlMTAwKSwgQyg1OWRmMzE3NWQ3MmM5ZjM4KSwgQygzZjIzYWVi
NGMwNGQxNDQzKSwKKyAgICAgQyg5YmYwNTE1Y2Q4ZDI0NzcwKSwgQyg5NTg1NTRmNjBjY2FhZGUy
KSwgQyg1MTgyODYzYzkwMTMyZmU4KSwKKyAgICAgQyhlZDdiNmY5YSl9LAorICAgIHtDKDJkYmI0
ZmM3MWI1NTQ1MTQpLCBDKDk2NTBlMDRiODZiZTBmODIpLCBDKDYwZjIzMDRmYmE5Mjc0ZDMpLAor
ICAgICBDKGZjZmI5NDQzZTk5N2NhYiksIEMoZjEzMzEwZDk2ZGVjMjc3MiksIEMoNzA5Y2FkMjA0
NTI1MWFmMiksCisgICAgIEMoYWZkMGQzMGNjNjM3NmRhZCksIEMoZmNmYjk0NDNlOTk3Y2FiKSwg
QyhmMTMzMTBkOTZkZWMyNzcyKSwKKyAgICAgQyg3MDljYWQyMDQ1MjUxYWYyKSwgQyhhZmQwZDMw
Y2M2Mzc2ZGFkKSwgQyg1OWQ0YmVkMzBkNTUwZDBkKSwKKyAgICAgQyg1ODAwNmQ0ZTIyZDhhYWQx
KSwgQyhlZWUxMmQyMzYyZDFmMTNiKSwgQygzNWNmMWQ3ZmFhZjFkMjI4KSwKKyAgICAgQyg2ZDkw
N2RkYSl9LAorICAgIHtDKGI5OGJmNDI3NGQxODM3NGEpLCBDKDFiNjY5ZmQ0YzdmOWExOWEpLCBD
KGIxZjU5NzJiODhiYTJiN2EpLAorICAgICBDKDczMTE5Yzk5ZTZkNTA4YmUpLCBDKDVkNDAzNmEx
ODc3MzUzODUpLCBDKDhmYTY2ZTE5MmZkODM4MzEpLAorICAgICBDKDJhYmY2NGI2YjU5MmVkNTcp
LCBDKDczMTE5Yzk5ZTZkNTA4YmUpLCBDKDVkNDAzNmExODc3MzUzODUpLAorICAgICBDKDhmYTY2
ZTE5MmZkODM4MzEpLCBDKDJhYmY2NGI2YjU5MmVkNTcpLCBDKGQ0NTAxZjk1ZGQ4NGIwOGMpLAor
ICAgICBDKGJmMTU1MjQzOWM4YmVhMDIpLCBDKDRmNTZmZTc1M2JhN2UwYmEpLCBDKDRjYThkMzVj
YzA1OGNmY2QpLAorICAgICBDKDdhNGQ0OGQ1KX0sCisgICAge0MoZDY3ODFkMGI1ZTE4ZWI2OCks
IEMoYjk5MjkxM2NhZTA5YjUzMyksIEMoNThmNjAyMWNhYWVlM2E0MCksCisgICAgIEMoYWFmY2I3
NzQ5N2I1YTIwYiksIEMoNDExODE5ZTVlNzliNzdhMyksIEMoYmQ3Nzk1NzljNTFjNzdjZSksCisg
ICAgIEMoNThkMTFmNWRjZjVkMDc1ZCksIEMoYWFmY2I3NzQ5N2I1YTIwYiksIEMoNDExODE5ZTVl
NzliNzdhMyksCisgICAgIEMoYmQ3Nzk1NzljNTFjNzdjZSksIEMoNThkMTFmNWRjZjVkMDc1ZCks
IEMoOWVhZTc2Y2RlMWNiNDIzMyksCisgICAgIEMoMzJmZTI1YTliZjY1Nzk3MCksIEMoMWMwYzgw
Nzk0OGVkYjA2YSksIEMoYjhmMjlhM2RmYWVlMjU0ZCksCisgICAgIEMoZTY4NmYzZGIpfSwKKyAg
ICB7QygyMjY2NTFjZjE4ZjQ4ODRjKSwgQyg1OTUwNTJhODc0ZjBmNTFjKSwgQyhjOWI3NTE2MmIy
M2JhYjQyKSwKKyAgICAgQygzZjQ0Zjg3M2JlNDgxMmVjKSwgQyg0Mjc2NjJjMWRiZmFhN2IyKSwg
QyhhMjA3ZmY5NjM4ZmI2NTU4KSwKKyAgICAgQyhhNzM4ZDkxOWU0NWY1NTBmKSwgQygzZjQ0Zjg3
M2JlNDgxMmVjKSwgQyg0Mjc2NjJjMWRiZmFhN2IyKSwKKyAgICAgQyhhMjA3ZmY5NjM4ZmI2NTU4
KSwgQyhhNzM4ZDkxOWU0NWY1NTBmKSwgQyhjYjE4NmVhMDU3MTdlN2Q2KSwKKyAgICAgQygxY2E3
ZDY4YTU4NzFmZGMxKSwgQyg1ZDRjMTE5ZWE4ZWYzNzUwKSwgQyg3MmI2YTEwZmEyZmY5NDA2KSwg
QyhjY2U3YzU1KX0sCisgICAge0MoYTczNGZiMDQ3ZDMxNjJkNiksIEMoZTUyMzE3MGQyNDBiYTNh
NSksIEMoMTI1YTY5NzI4MDk3MzBlOCksCisgICAgIEMoZDM5NmEyOTc3OTljMjRhMSksIEMoOGZl
ZTk5MmUzMDY5YmFkNSksIEMoMmUzYTAxYjA2OTdjY2Y1NyksCisgICAgIEMoZWU5YzczOTBiZDkw
MWNmYSksIEMoZDM5NmEyOTc3OTljMjRhMSksIEMoOGZlZTk5MmUzMDY5YmFkNSksCisgICAgIEMo
MmUzYTAxYjA2OTdjY2Y1NyksIEMoZWU5YzczOTBiZDkwMWNmYSksIEMoNTZmMmQ5ZGEwYWYyOGFm
MiksCisgICAgIEMoM2ZkZDM3YjJmZTg0MzdjYiksIEMoM2QxM2VlZWI2MGQ2YWVjMCksIEMoMjQz
MmFlNjJlODAwYTVjZSksIEMoZjU4Yjk2Yil9LAorICAgIHtDKGM2ZGY2MzY0YTI0Zjc1YTMpLCBD
KGMyOTRlMmM4NGM0ZjVkZjgpLCBDKGE4OGRmNjVjNmE4OTMxM2IpLAorICAgICBDKDg5NWZlODQ0
MzE4M2RhNzQpLCBDKGM3ZjJmNmY4OTVhNjczMzQpLCBDKGEwZDZiNmE1MDY2OTFkMzEpLAorICAg
ICBDKDI0ZjUxNzEyYjQ1OWE5ZjApLCBDKDg5NWZlODQ0MzE4M2RhNzQpLCBDKGM3ZjJmNmY4OTVh
NjczMzQpLAorICAgICBDKGEwZDZiNmE1MDY2OTFkMzEpLCBDKDI0ZjUxNzEyYjQ1OWE5ZjApLCBD
KDE3M2E2OTk0ODFiOWUwODgpLAorICAgICBDKDFkZWU5Yjc3YmNiZjQ1ZDMpLCBDKDMyYjk4YTY0
NmE4NjY3ZDApLCBDKDNhZGNkNGVlMjhmNDJhMGUpLAorICAgICBDKDFiYmY2ZjYwKX0sCisgICAg
e0MoZDhkMTM2NGMxZmJjZDEwKSwgQygyZDdjYzdmNTQ4MzJkZWFhKSwgQyg0ZTIyYzg3NmE3YzU3
NjI1KSwKKyAgICAgQyhhM2Q1ZDExMzdkMzBjNGJkKSwgQygxZTdkNzA2YTQ5YmRmYjllKSwgQyhj
NjMyODJiMjBhZDg2ZGIyKSwKKyAgICAgQyhhZWM5N2ZhMDc5MTZiZmQ2KSwgQyhhM2Q1ZDExMzdk
MzBjNGJkKSwgQygxZTdkNzA2YTQ5YmRmYjllKSwKKyAgICAgQyhjNjMyODJiMjBhZDg2ZGIyKSwg
QyhhZWM5N2ZhMDc5MTZiZmQ2KSwgQyg3YzliYTNlNTJkNDRmNzNlKSwKKyAgICAgQyhhZjYyZmQy
NDU4MTExODVkKSwgQyg4YTlkMmRhY2Q4NzM3NjUyKSwgQyhiZDJjY2UyNzdkNWZiZWMwKSwKKyAg
ICAgQyhjZTVlMGNjMil9LAorICAgIHtDKGFhZTA2ZjkxNDZkYjg4NWYpLCBDKDM1OTg3MzY0NDFl
MjgwZDkpLCBDKGZiYTMzOWIxMTcwODNlNTUpLAorICAgICBDKGIyMmJmMDhkOWY4YWVjZjcpLCBD
KGMxODI3MzBkZTMzN2I5MjIpLCBDKDJiOWFkYzg3YTA0NTBhNDYpLAorICAgICBDKDE5MmMyOWE5
Y2ZjMDBhYWQpLCBDKGIyMmJmMDhkOWY4YWVjZjcpLCBDKGMxODI3MzBkZTMzN2I5MjIpLAorICAg
ICBDKDJiOWFkYzg3YTA0NTBhNDYpLCBDKDE5MmMyOWE5Y2ZjMDBhYWQpLCBDKDlmZDczM2YxZDg0
YTU5ZDkpLAorICAgICBDKGQ4NmJkNWM5ODM5YWNlMTUpLCBDKGFmMjBiNTczMDMxNzI4NzYpLCBD
KDlmNjNjYjcxNjFiNTM2NGMpLAorICAgICBDKDU4NGNmZDZmKX0sCisgICAge0MoODk1NWVmMDc2
MzFlM2JjYyksIEMoN2Q3MDk2NWVhMzkyNmY4MyksIEMoMzlhZWQ0MTM0ZjhiMmRiNiksCisgICAg
IEMoODgyZWZjMjU2MTcxNWE5YyksIEMoZWY4MTMyYTE4YTU0MDIyMSksIEMoYjIwYTNjODdhOGMy
NTdjMSksCisgICAgIEMoZjU0MWI4NjI4ZmFkNmMyMyksIEMoODgyZWZjMjU2MTcxNWE5YyksIEMo
ZWY4MTMyYTE4YTU0MDIyMSksCisgICAgIEMoYjIwYTNjODdhOGMyNTdjMSksIEMoZjU0MWI4NjI4
ZmFkNmMyMyksIEMoOTU1MmFlZDU3YTZlMDQ2NyksCisgICAgIEMoNGQ5ZmRkNTY4Njc2MTFhNyks
IEMoYzMzMDI3OWJmMjNiOWVhYiksIEMoNDRkYmJhZWEyZmNiOGViYSksCisgICAgIEMoOGY5YmJj
MzMpfSwKKyAgICB7QyhhZDYxMWM2MDljZmJlNDEyKSwgQyhkM2MwMGIxOGJmMjUzODc3KSwgQyg5
MGIyMTcyZTFmM2QwYmZkKSwKKyAgICAgQygzNzFhOThiMmNiMDg0ODgzKSwgQygzM2EyODg2ZWU5
ZjAwNjYzKSwgQyhiZTk1Njg4MThlZDZlNmJkKSwKKyAgICAgQyhmMjQ0YTBmYTI2NzM0NjlhKSwg
QygzNzFhOThiMmNiMDg0ODgzKSwgQygzM2EyODg2ZWU5ZjAwNjYzKSwKKyAgICAgQyhiZTk1Njg4
MThlZDZlNmJkKSwgQyhmMjQ0YTBmYTI2NzM0NjlhKSwgQyhiNDQ3MDUwYmQzZTU1OWU5KSwKKyAg
ICAgQyhkM2I2OTVkYWU3YTEzMzgzKSwgQyhkZWQwYmI2NWJlNDcxMTg4KSwgQyhjYTNjN2EyYjc4
OTIyY2FlKSwKKyAgICAgQyhkNzY0MGQ5NSl9LAorICAgIHtDKGQ1MzM5YWRjMjk1ZDVkNjkpLCBD
KGI2MzNjYzFkY2I4YjU4NmEpLCBDKGVlODQxODRjZjViMWFlYWYpLAorICAgICBDKDg5ZjNhYWI5
OWFmYmQ2MzYpLCBDKGY0MjBlMDA0ZjgxNDhiOWEpLCBDKDY4MTgwNzNmYWE3OTdjN2MpLAorICAg
ICBDKGRkM2I0ZTIxY2JiZjQyY2EpLCBDKDg5ZjNhYWI5OWFmYmQ2MzYpLCBDKGY0MjBlMDA0Zjgx
NDhiOWEpLAorICAgICBDKDY4MTgwNzNmYWE3OTdjN2MpLCBDKGRkM2I0ZTIxY2JiZjQyY2EpLCBD
KDZhMmI3ZGIyNjExNjQ4NDQpLAorICAgICBDKGNiZWFkNjNkMTg5NTg1MmEpLCBDKDkzZDM3ZTFl
YWUwNWUyZjkpLCBDKDVkMDZkYjI3MDNmYmMzYWUpLCBDKDNkMTJhMmIpfSwKKyAgICB7Qyg0MGQw
YWVmZjUyMTM3NWE4KSwgQyg3N2JhMWFkN2VjZWJkNTA2KSwgQyg1NDdjNmYxYTdkOWRmNDI3KSwK
KyAgICAgQygyMWMyYmUwOTgzMjdmNDliKSwgQyg3ZTAzNTA2NWFjN2JiZWY1KSwgQyg2ZDczNDhl
NjMwMjNmYjM1KSwKKyAgICAgQyg5ZDQyN2RjMWI2N2MzODMwKSwgQygyMWMyYmUwOTgzMjdmNDli
KSwgQyg3ZTAzNTA2NWFjN2JiZWY1KSwKKyAgICAgQyg2ZDczNDhlNjMwMjNmYjM1KSwgQyg5ZDQy
N2RjMWI2N2MzODMwKSwgQyg0ZTNkMDE4YTQzODU4MzQxKSwKKyAgICAgQyhjZjkyNGJiNDRkNmI0
M2M1KSwgQyg0NjE4YjZhMjZlMzQ0NmFlKSwgQyg1NGQzMDEzZmFjM2VkNDY5KSwKKyAgICAgQyhh
YWVhZmVkMCl9LAorICAgIHtDKDhiMmQ1NGFlMWEzZGY3NjkpLCBDKDExZTdhZGFlZTMyMTY2Nzkp
LCBDKDM0ODM3ODFlZmM1NjNlMDMpLAorICAgICBDKDlkMDk3ZGQzMTUyYWIxMDcpLCBDKDUxZTIx
ZDI0MTI2ZTg1NjMpLCBDKGNiYTU2Y2FjODg0YTEzNTQpLAorICAgICBDKDM5YWJiMWI1OTVmMGE5
NzcpLCBDKDlkMDk3ZGQzMTUyYWIxMDcpLCBDKDUxZTIxZDI0MTI2ZTg1NjMpLAorICAgICBDKGNi
YTU2Y2FjODg0YTEzNTQpLCBDKDM5YWJiMWI1OTVmMGE5NzcpLCBDKDgxZTZkZDFjMTEwOTg0OGYp
LAorICAgICBDKDE2NDRiMjA5ODI2ZDdiMTUpLCBDKDZhYzY3ZTRlNGI0ODEyZjApLCBDKGIzYTlm
NTYyMmM5MzViZjcpLAorICAgICBDKDk1YjliODE0KX0sCisgICAge0MoOTljMTc1ODE5YjRlYWUy
OCksIEMoOTMyZThmZjlmN2E0MDA0MyksIEMoZWM3OGRjYWIwN2NhOWY3YyksCisgICAgIEMoYzFh
NzhiODJiYTgxNWI3NCksIEMoNDU4Y2JkZmM4MmViMzIyYSksIEMoMTdmNGExOTIzNzZlZDhkNyks
CisgICAgIEMoNmY5ZTkyOTY4YmM4Y2NlZiksIEMoYzFhNzhiODJiYTgxNWI3NCksIEMoNDU4Y2Jk
ZmM4MmViMzIyYSksCisgICAgIEMoMTdmNGExOTIzNzZlZDhkNyksIEMoNmY5ZTkyOTY4YmM4Y2Nl
ZiksIEMoOTNlMDk4YzMzM2IzOTkwNSksCisgICAgIEMoZDU5YjFjYWNlNDRiN2ZkYyksIEMoZjdh
NjRlZDc4YzY0YzdjNSksIEMoN2M2ZWNhNWRkODdlYzFjZSksCisgICAgIEMoNDVmYmU2NmUpfSwK
KyAgICB7QygyYTQxODMzNTc3OWI4MmZjKSwgQyhhZjAyOTU5ODc4NDlhNzZiKSwgQyhjMTJiYzVm
ZjAyMTNmNDZlKSwKKyAgICAgQyg1YWVlYWQ4ZDZjYjI1YmI5KSwgQyg3MzkzMTVmNzc0M2VjM2Zm
KSwgQyg5YWI0OGQyNzExMWQyZGNjKSwKKyAgICAgQyg1Yjg3YmQzNWE5NzU5MjliKSwgQyg1YWVl
YWQ4ZDZjYjI1YmI5KSwgQyg3MzkzMTVmNzc0M2VjM2ZmKSwKKyAgICAgQyg5YWI0OGQyNzExMWQy
ZGNjKSwgQyg1Yjg3YmQzNWE5NzU5MjliKSwgQyhjM2RkOGQ2ZDk1YTQ2YmIzKSwKKyAgICAgQyg3
YmY5MDkzMjE1YTRmNDgzKSwgQyhjYjU1N2Q2ZWQ4NDI4NWJkKSwgQyhkYWY1ODQyMmYyNjFmZGI1
KSwKKyAgICAgQyhiNGJhYTdhOCl9LAorICAgIHtDKDNiMWZjNmEzZDI3OWU2N2QpLCBDKDcwZWEx
ZTQ5YzIyNjM5NiksIEMoMjU1MDVhZGNmMTA0Njk3YyksCisgICAgIEMoYmExZmZiYTI5ZjAzNjdh
YSksIEMoYTIwYmVjMWRkMTVhOGI2YyksIEMoZTliZjYxZDJkYWIwZjc3NCksCisgICAgIEMoZjRm
MzViZjU4NzBhMDQ5YyksIEMoYmExZmZiYTI5ZjAzNjdhYSksIEMoYTIwYmVjMWRkMTVhOGI2Yyks
CisgICAgIEMoZTliZjYxZDJkYWIwZjc3NCksIEMoZjRmMzViZjU4NzBhMDQ5YyksIEMoMjY3ODdl
ZmE1YjkyMzg1KSwKKyAgICAgQygzZDk1MzM1OTBjZTMwYjU5KSwgQyhhNGRhM2U0MDUzMGEwMWQ0
KSwgQyg2Mzk1ZGVhZWZiNzAwNjdjKSwKKyAgICAgQyg4M2U5NjJmZSl9LAorICAgIHtDKGQ5N2Vh
Y2RmMTBmMWMzYzkpLCBDKGI1NGY0NjU0MDQzYTM2ZTApLCBDKGIxMjhmNmViMDlkMTIzNCksCisg
ICAgIEMoZDhhZDdlYzg0YTljOWFhMiksIEMoZTI1NmNmZmVkMTFmNjllNiksIEMoMmNmNjVlNDk1
OGFkNWJkYSksCisgICAgIEMoY2ZiZjliMDMyNDU5ODlhNyksIEMoZDhhZDdlYzg0YTljOWFhMiks
IEMoZTI1NmNmZmVkMTFmNjllNiksCisgICAgIEMoMmNmNjVlNDk1OGFkNWJkYSksIEMoY2ZiZjli
MDMyNDU5ODlhNyksIEMoOWZhNTFlNjY4NmNmNDQ0NCksCisgICAgIEMoOTQyNWMxMTdhMzQ2MDlk
NSksIEMoYjI1ZjdlMmM2ZjMwZTk2KSwgQyhlYTU0NzdjM2YyYjVhZmQxKSwgQyhhYWMzNTMxYyl9
LAorICAgIHtDKDI5M2E1YzFjNGUyMDNjZDQpLCBDKDZiMzMyOWYxYzEzMGNlZmUpLCBDKGYyZTMy
ZjhlYzc2YWFjOTEpLAorICAgICBDKDM2MWUwYTYyYzgxODdiZmYpLCBDKDYwODk5NzFiYjg0ZDcx
MzMpLCBDKDkzZGY3NzQxNTg4ZGQ1MGIpLAorICAgICBDKGMyYTliNmFiY2QxZDgwYjEpLCBDKDM2
MWUwYTYyYzgxODdiZmYpLCBDKDYwODk5NzFiYjg0ZDcxMzMpLAorICAgICBDKDkzZGY3NzQxNTg4
ZGQ1MGIpLCBDKGMyYTliNmFiY2QxZDgwYjEpLCBDKDRkMmY4Njg2OWQ3OWJjNTkpLAorICAgICBD
KDg1Y2QyNGQ4YWE1NzBmZiksIEMoYjBkY2Y2ZWYwZTk0YmJiNSksIEMoMjAzN2M2OWFhN2E3ODQy
MSksIEMoMmIxZGI3Y2MpfSwKKyAgICB7Qyg0MjkwZTAxOGZmYWVkZGU3KSwgQyhhMTQ5NDg1NDU0
MThlYjVlKSwgQyg3MmQ4NTFiMjAyMjg0NjM2KSwKKyAgICAgQyg0ZWMwMmYzZDJmMmIyM2YyKSwg
QyhhYjM1ODA3MDhhYTdjMzM5KSwgQyhjZGNlMDY2ZmJhYjNmNjUpLAorICAgICBDKGQ4ZWQzZWNm
M2M3NjQ3YjkpLCBDKDRlYzAyZjNkMmYyYjIzZjIpLCBDKGFiMzU4MDcwOGFhN2MzMzkpLAorICAg
ICBDKGNkY2UwNjZmYmFiM2Y2NSksIEMoZDhlZDNlY2YzYzc2NDdiOSksIEMoNmQyMjA0YjNlMzFm
MzQ0YSksCisgICAgIEMoNjFhNGQ4N2Y4MGVlNjFkNyksIEMoNDQ2YzQzZGJlZDRiNzI4ZiksIEMo
NzMxMzBhYzk0ZjU4NzQ3ZSksCisgICAgIEMoY2YwMGNkMzEpfSwKKyAgICB7QyhmOTE5YTU5Y2Jk
ZThiZjJmKSwgQyhhNTZkMDQyMDNiMmRjNWE1KSwgQygzOGIwNjc1M2FjODcxZTQ4KSwKKyAgICAg
QyhjMmM5ZmM2MzdkYmRmY2ZhKSwgQygyOTJhYjgzMDZkMTQ5ZDc1KSwgQyg3ZjQzNmI4NzRiOWZm
YzA3KSwKKyAgICAgQyhhNWI1NmIwMTI5MjE4YjgwKSwgQyhjMmM5ZmM2MzdkYmRmY2ZhKSwgQygy
OTJhYjgzMDZkMTQ5ZDc1KSwKKyAgICAgQyg3ZjQzNmI4NzRiOWZmYzA3KSwgQyhhNWI1NmIwMTI5
MjE4YjgwKSwgQyg5MTg4ZjdiZGM0N2VjMDUwKSwKKyAgICAgQyhjZmU5MzQ1ZDAzYTE1YWRlKSwg
Qyg0MGI1MjBmYjI3NTBjNDllKSwgQyhjMmU4M2QzNDM5NjhhZjJlKSwKKyAgICAgQyg3ZDNjNDNi
OCl9LAorICAgIHtDKDFkNzBhM2Y1NTIxZDdmYTQpLCBDKGZiOTdiM2ZkYzU4OTE5NjUpLCBDKDI5
OWQ0OWJiYmUzNTM1YWYpLAorICAgICBDKGUxYTgyODZhN2Q2Nzk0NmUpLCBDKDUyYmQ5NTZmMDQ3
YjI5OCksIEMoY2JkNzQzMzJkZDQyMDRhYyksCisgICAgIEMoMTJiNWJlNzc1MjcyMTk3NiksIEMo
ZTFhODI4NmE3ZDY3OTQ2ZSksIEMoNTJiZDk1NmYwNDdiMjk4KSwKKyAgICAgQyhjYmQ3NDMzMmRk
NDIwNGFjKSwgQygxMmI1YmU3NzUyNzIxOTc2KSwgQygyNzg0MjZlMjdmNjIwNGI2KSwKKyAgICAg
Qyg5MzJjYTdhN2NkNjEwMTgxKSwgQyg0MTY0NzMyMWYwYTU5MTRkKSwgQyg0OGY0YWE2MWEwYWU4
MGRiKSwKKyAgICAgQyhjYmQ1ZmFjNil9LAorICAgIHtDKDZhZjk4ZDdiNjU2ZDBkN2MpLCBDKGQy
ZTk5YWU5NmQ2YjVjMGMpLCBDKGY2M2JkMTYwM2VmODA2MjcpLAorICAgICBDKGJkZTUxMDMzYWMw
NDEzZjgpLCBDKGJjMDI3MmY2OTFhZWM2MjkpLCBDKDYyMDQzMzI2NTFiZWJjNDQpLAorICAgICBD
KDFjYmYwMGRlMDI2ZWE5YmQpLCBDKGJkZTUxMDMzYWMwNDEzZjgpLCBDKGJjMDI3MmY2OTFhZWM2
MjkpLAorICAgICBDKDYyMDQzMzI2NTFiZWJjNDQpLCBDKDFjYmYwMGRlMDI2ZWE5YmQpLCBDKGI5
YzdlZDZhNzVmM2ZmMWUpLAorICAgICBDKDdlMzEwYjc2YTU4MDhlNGYpLCBDKGFjYmJkMWFhZDU1
MzE4ODUpLCBDKGZjMjQ1ZjI0NzNhZGViOWMpLAorICAgICBDKDc2ZDBmZWM0KX0sCisgICAge0Mo
Mzk1YjdhOGFkYjk2YWI3NSksIEMoNTgyZGY3MTY1YjIwZjRhKSwgQyhlNTJiZDMwZTlmZjY1N2Y5
KSwKKyAgICAgQyg2YzcxMDY0OTk2Y2JlYzhiKSwgQygzNTJjNTM1ZWRlZWZjYjg5KSwgQyhhYzdm
MGFiYTE1Y2Q1ZWNkKSwKKyAgICAgQygzYWJhMWNhODM1M2U1YzYwKSwgQyg2YzcxMDY0OTk2Y2Jl
YzhiKSwgQygzNTJjNTM1ZWRlZWZjYjg5KSwKKyAgICAgQyhhYzdmMGFiYTE1Y2Q1ZWNkKSwgQygz
YWJhMWNhODM1M2U1YzYwKSwgQyg1YzMwYTI4OGE4MGNlNjQ2KSwKKyAgICAgQyhjMjk0MDQ4OGI2
NjE3Njc0KSwgQyg5MjVmOGNjNjZiMzcwNTc1KSwgQyhhYTY1ZDEyODNiOWJiMGVmKSwKKyAgICAg
Qyg0MDVlMzQwMil9LAorICAgIHtDKDM4MjJkZDgyYzdkZjAxMmYpLCBDKGI5MDI5YjQwYmQ5ZjEy
MmIpLCBDKGZkMjViOTg4NDY4MjY2YzQpLAorICAgICBDKDQzZTQ3YmQ1YmFiMWUwZWYpLCBDKDRh
NzFmMzYzNDIxZjI4MmYpLCBDKDg4MGIyZjMyYTJiNGUyODkpLAorICAgICBDKDEyOTlkNGVkYTlk
M2VhZGYpLCBDKDQzZTQ3YmQ1YmFiMWUwZWYpLCBDKDRhNzFmMzYzNDIxZjI4MmYpLAorICAgICBD
KDg4MGIyZjMyYTJiNGUyODkpLCBDKDEyOTlkNGVkYTlkM2VhZGYpLCBDKGQ3MTNhNDAyMjZmNTU2
NCksCisgICAgIEMoNGQ4ZDM0ZmVkYzc2OTQwNiksIEMoYTg1MDAxYjI5Y2Q5Y2FjMyksIEMoY2Fl
OTIzNTJhNDFmZDJiMCksCisgICAgIEMoYzczMmM0ODEpfSwKKyAgICB7Qyg3OWY3ZWZlNGE4MGI5
NTFhKSwgQyhkZDNhM2ZkZGZjNmM5YzQxKSwgQyhhYjRjODEyZjllMjdhYTQwKSwKKyAgICAgQyg4
MzI5NTRlYzlkMGRlMzMzKSwgQyg5NGMzOTBhYTliY2I2YjhhKSwgQyhmM2IzMmFmZGMxZjA0Zjgy
KSwKKyAgICAgQyhkMjI5YzNiNzJlNGI5YTc0KSwgQyg4MzI5NTRlYzlkMGRlMzMzKSwgQyg5NGMz
OTBhYTliY2I2YjhhKSwKKyAgICAgQyhmM2IzMmFmZGMxZjA0ZjgyKSwgQyhkMjI5YzNiNzJlNGI5
YTc0KSwgQygxZDExODYwZDdlZDYyNGE2KSwKKyAgICAgQyhjYWRlZTIwYjM0NDFiOTg0KSwgQyg3
NTMwNzA3OWJmMzA2ZjdiKSwgQyg4NzkwMmFhM2I5NzUzYmE0KSwKKyAgICAgQyhhOGQxMjNjOSl9
LAorICAgIHtDKGFlNmU1OWY1ZjA1NTkyMWEpLCBDKGU5ZDliN2JmNjhlODIpLCBDKDVjZTRlNGE1
YjI2OWNjNTkpLAorICAgICBDKDQ5NjAxMTE3ODk3Mjc1NjcpLCBDKDE0OWI4YTM3YzcxMjVhYjYp
LCBDKDc4YzdhMTNhYjk3NDkzODIpLAorICAgICBDKDFjNjExMzEyNjBjYTE1MWEpLCBDKDQ5NjAx
MTE3ODk3Mjc1NjcpLCBDKDE0OWI4YTM3YzcxMjVhYjYpLAorICAgICBDKDc4YzdhMTNhYjk3NDkz
ODIpLCBDKDFjNjExMzEyNjBjYTE1MWEpLCBDKDFlOTMyNzZiMzVjMzA5YTApLAorICAgICBDKDI2
MThmNTYyMzBhY2RlNTgpLCBDKGFmNjExMzBhMThlNGZlYmYpLCBDKDcxNDVkZWIxOGU4OWJlZmUp
LAorICAgICBDKDFlODBhZDdkKX0sCisgICAge0MoODk1OWRiYmYwNzM4N2QzNiksIEMoYjQ2NThh
ZmNlNDhlYTM1ZCksIEMoOGYzZjgyNDM3ZDhjYjhkNiksCisgICAgIEMoNjU2NmQ3NDk1NDk4NmJh
NSksIEMoOTlkNTIzNWNjODI1MTlhNyksIEMoMjU3YTIzODA1YzJkODI1KSwKKyAgICAgQyhhZDc1
Y2NiOTY4ZTkzNDAzKSwgQyg2NTY2ZDc0OTU0OTg2YmE1KSwgQyg5OWQ1MjM1Y2M4MjUxOWE3KSwK
KyAgICAgQygyNTdhMjM4MDVjMmQ4MjUpLCBDKGFkNzVjY2I5NjhlOTM0MDMpLCBDKGI0NWJkNGNm
NzhlMTFmN2YpLAorICAgICBDKDgwYzU1MzZiZGM0ODc5ODMpLCBDKGE0ZmQ3NmVjYmYwMThjOGEp
LCBDKDNiOWRhYzc4YTdhNzBkNDMpLAorICAgICBDKDUyYWViODYzKX0sCisgICAge0MoNDczOTYx
MzIzNDI3OGE0OSksIEMoOTllYTViY2QzNDBiZjY2MyksIEMoMjU4NjQwOTEyZTcxMmIxMiksCisg
ICAgIEMoYzhhMjgyNzQwNDk5MTQwMiksIEMoN2VlNWU3ODU1MGYwMjY3NSksIEMoMmVjNTM5NTJk
YjVhYzY2MiksCisgICAgIEMoMTUyNjQwNWE5ZGY2Nzk0YiksIEMoYzhhMjgyNzQwNDk5MTQwMiks
IEMoN2VlNWU3ODU1MGYwMjY3NSksCisgICAgIEMoMmVjNTM5NTJkYjVhYzY2MiksIEMoMTUyNjQw
NWE5ZGY2Nzk0YiksIEMoZWRkYzYyNzExNzBjNWUxZiksCisgICAgIEMoZjVhODVmOTg2MDAxZDlk
NiksIEMoOTU0MjdjNjc3YmY1OGQ1OCksIEMoNTNlZDY2NmRmYTg1Y2IyOSksCisgICAgIEMoZWY3
YzBjMTgpfSwKKyAgICB7Qyg0MjBlNmM5MjZiYzU0ODQxKSwgQyg5NmRiYmY2ZjRlN2M3NWNkKSwg
QyhkOGQ0MGZhNzBjM2M2N2JiKSwKKyAgICAgQygzZWRiYzEwZTRiZmVlOTFiKSwgQyhmMGQ2ODEz
MDRjMjhlZjY4KSwgQyg3N2VhNjAyMDI5YWFhZjljKSwKKyAgICAgQyg5MGYwNzBiZDI0Yzg0ODNj
KSwgQygzZWRiYzEwZTRiZmVlOTFiKSwgQyhmMGQ2ODEzMDRjMjhlZjY4KSwKKyAgICAgQyg3N2Vh
NjAyMDI5YWFhZjljKSwgQyg5MGYwNzBiZDI0Yzg0ODNjKSwgQygyOGJjOGU0MWUwOGNlYjg2KSwK
KyAgICAgQygxZWI1NmU0OGE2NTY5MWVmKSwgQyg5ZmVhNTMwMWM5MjAyZjBlKSwgQygzZmNiNjUw
OTFhYTlmMTM1KSwKKyAgICAgQyhiNmFkNGI2OCl9LAorICAgIHtDKGM4NjAxYmFiNTYxYmMxYjcp
LCBDKDcyYjI2MjcyYTBmZjg2OWEpLCBDKDU2ZmRmYzk4NmQ2YmMzYzQpLAorICAgICBDKDgzNzA3
NzMwY2FkNzI1ZDQpLCBDKGM5Y2E4OGMzYTc3OTY3NGEpLCBDKGUxYzY5NmZiYmQ5YWE5MzMpLAor
ICAgICBDKDcyM2YzYmFhYjFjMTdhNDUpLCBDKDgzNzA3NzMwY2FkNzI1ZDQpLCBDKGM5Y2E4OGMz
YTc3OTY3NGEpLAorICAgICBDKGUxYzY5NmZiYmQ5YWE5MzMpLCBDKDcyM2YzYmFhYjFjMTdhNDUp
LCBDKGY4MmFiYzdhMWQ4NTE2ODIpLAorICAgICBDKDMwNjgzODM2ODE4ZTg1N2QpLCBDKDc4YmZh
M2U4OWE1YWIyM2YpLCBDKDY5MjgyMzQ0ODJiMzE4MTcpLAorICAgICBDKGMxZTQ2YjE3KX0sCisg
ICAge0MoYjJkMjk0OTMxYTBlMjBlYiksIEMoMjg0ZmZkOWEwODE1YmMzOCksIEMoMWY4YTEwM2Fh
YzliYmU2KSwKKyAgICAgQygxZWY4ZTk4ZTFlYTU3MjY5KSwgQyg1OTcxMTE2MjcyZjQ1YThiKSwg
QygxODdhZDY4Y2U5NWQ4ZWFjKSwKKyAgICAgQyhlOTRlOTNlZTRlOGVjYWE2KSwgQygxZWY4ZTk4
ZTFlYTU3MjY5KSwgQyg1OTcxMTE2MjcyZjQ1YThiKSwKKyAgICAgQygxODdhZDY4Y2U5NWQ4ZWFj
KSwgQyhlOTRlOTNlZTRlOGVjYWE2KSwgQyhhMGZmMmE1ODYxMTgzOGI1KSwKKyAgICAgQyhiMDFl
MDM4NDliZmJhZTZmKSwgQyhkMDgxZTIwMmUyOGVhM2FiKSwgQyg1MTgzNmJjZWU3NjJiZjEzKSwK
KyAgICAgQyg1N2I4ZGYyNSl9LAorICAgIHtDKDc5NjZmNTNjMzdiNmM2ZDcpLCBDKDhlNmFiY2Zi
M2FhMmI4OGYpLCBDKDdmMmU1ZTA3MjRlNWYzNDUpLAorICAgICBDKDNlZWI2MGMzZjVmODE0M2Qp
LCBDKGEyNWFlYzA1YzQyMmEyNGYpLCBDKGIwMjZiMDNhZDNjY2E0ZGIpLAorICAgICBDKGU2ZTAz
MDAyOGNjMDJhMDIpLCBDKDNlZWI2MGMzZjVmODE0M2QpLCBDKGEyNWFlYzA1YzQyMmEyNGYpLAor
ICAgICBDKGIwMjZiMDNhZDNjY2E0ZGIpLCBDKGU2ZTAzMDAyOGNjMDJhMDIpLCBDKDE2ZmU2Nzkz
MzhiMzRiZmMpLAorICAgICBDKGMxYmUzODViNWM4YTlkZTQpLCBDKDY1YWY1ZGY2NTY3NTMwZWIp
LCBDKGVkM2IzMDNkZjRkYzYzMzUpLAorICAgICBDKGU5ZmEzNmQ2KX0sCisgICAge0MoYmU5YmIw
YWJkMDNiNzM2OCksIEMoMTNiY2E5M2EzMDMxYmU1NSksIEMoZTg2NGY0ZjUyYjU1YjQ3MiksCisg
ICAgIEMoMzZhOGQxM2EyY2JiMDkzOSksIEMoMjU0YWM3MzkwNzQxMzIzMCksIEMoNzM1MjBkMTUy
MjMxNWE3MCksCisgICAgIEMoOGM5ZmRiNWNmMWUxYTUwNyksIEMoMzZhOGQxM2EyY2JiMDkzOSks
IEMoMjU0YWM3MzkwNzQxMzIzMCksCisgICAgIEMoNzM1MjBkMTUyMjMxNWE3MCksIEMoOGM5ZmRi
NWNmMWUxYTUwNyksIEMoYjM2NDA1NzBiOTI2ODg2KSwKKyAgICAgQyhmYmEyMzQ0ZWU4N2Y3YmFi
KSwgQyhkZTU3MzQxYWI0NDhkZjA1KSwgQygzODU2MTJlZTA5NGZhOTc3KSwKKyAgICAgQyg4Zjhk
YWVmYyl9LAorICAgIHtDKGEwOGQxMjhjNWYxNjQ5YmUpLCBDKGE4MTY2YzNkYmJlMTlhYWQpLCBD
KGNiOWY5MTRmODI5ZWM2MmMpLAorICAgICBDKDViMmI3Y2E4NTZmYWQxYzMpLCBDKDgwOTMwMjJk
NjgyZTM3NWQpLCBDKGVhNWQxNjNiYTdlYTIzMWYpLAorICAgICBDKGQ2MTgxZDAxMmMwZGU2NDEp
LCBDKDViMmI3Y2E4NTZmYWQxYzMpLCBDKDgwOTMwMjJkNjgyZTM3NWQpLAorICAgICBDKGVhNWQx
NjNiYTdlYTIzMWYpLCBDKGQ2MTgxZDAxMmMwZGU2NDEpLCBDKGU3ZDQwZDBhYjhiMDgxNTkpLAor
ICAgICBDKDJlODIzMjBmNTFiM2E2N2UpLCBDKDI3YzJlMzU2ZWEwYjYzYTMpLCBDKDU4ODQyZDAx
YTJiMWQwNzcpLCBDKDZlMWJiN2UpfSwKKyAgICB7Qyg3YzM4NmYwZmZlMDQ2NWFjKSwgQyg1MzA0
MTljOWQ4NDNkYmYzKSwgQyg3NDUwZTNhNGY3MmI4ZDhjKSwKKyAgICAgQyg0OGIyMThlM2I3MjE4
MTBkKSwgQyhkMzc1N2FjODYwOWJjN2ZjKSwgQygxMTFiYTAyYTg4YWVmYzgpLAorICAgICBDKGU4
NjM0MzEzN2QzYmZjMmEpLCBDKDQ4YjIxOGUzYjcyMTgxMGQpLCBDKGQzNzU3YWM4NjA5YmM3ZmMp
LAorICAgICBDKDExMWJhMDJhODhhZWZjOCksIEMoZTg2MzQzMTM3ZDNiZmMyYSksIEMoNDRhZDI2
YjUxNjYxYjUwNyksCisgICAgIEMoZGIxMjY4NjcwMjc0ZjUxZSksIEMoNjJhNWU3NWJlYWU4NzVm
MyksIEMoZTI2NmU3YTQ0YzVmMjhjNiksCisgICAgIEMoZmQwMDc2ZjApfSwKKyAgICB7QyhiYjM2
MjA5NGU3ZWY0ZjgpLCBDKGZmM2MyYTQ4OTY2Zjk3MjUpLCBDKDU1MTUyODAzYWNkNGE3ZmUpLAor
ICAgICBDKDE1NzQ3ZDhjNTA1ZmZkMDApLCBDKDQzOGExNWYzOTEzMTJjZDYpLCBDKGU0NmNhNjJj
MjZkODIxZjUpLAorICAgICBDKGJlNzhkNzRjOWY3OWNiNDQpLCBDKDE1NzQ3ZDhjNTA1ZmZkMDAp
LCBDKDQzOGExNWYzOTEzMTJjZDYpLAorICAgICBDKGU0NmNhNjJjMjZkODIxZjUpLCBDKGJlNzhk
NzRjOWY3OWNiNDQpLCBDKGE4YWExOWYzYWE1OWYwOWEpLAorICAgICBDKGVmZmIzY2RkYWIyYzky
NjcpLCBDKGQ3OGU0MWFkOTdjYjE2YTUpLCBDKGFjZTY4MjE1MTM1MjdkMzIpLAorICAgICBDKDg5
OWIxN2I2KX0sCisgICAge0MoY2Q4MGRlYTI0MzIxZWVhNCksIEMoNTJiNGZkYzgxMzBjMmIxNSks
IEMoZjNlYTEwMGIxNTRiZmI4MiksCisgICAgIEMoZDljY2VmMWQ0YmU0Njk4OCksIEMoNWVkZTBj
NGUzODNhNWU2NiksIEMoZGE2OTY4MzcxNmE1NGQxZSksCisgICAgIEMoYmZjM2ZkZjAyZDI0MmQy
NCksIEMoZDljY2VmMWQ0YmU0Njk4OCksIEMoNWVkZTBjNGUzODNhNWU2NiksCisgICAgIEMoZGE2
OTY4MzcxNmE1NGQxZSksIEMoYmZjM2ZkZjAyZDI0MmQyNCksIEMoMjBlZDMwMjc0NjUxYjNmNSks
CisgICAgIEMoNGM2NTk4MjQxNjllODZjNiksIEMoNjM3MjI2ZGFlNWI1MmEwZSksIEMoN2UwNTBk
YmQxYzcxZGM3ZiksCisgICAgIEMoZTNlODRlMzEpfSwKKyAgICB7QyhkNTk5YTA0MTI1MzcyYzNh
KSwgQygzMTMxMzZjNTZhNTZmMzYzKSwgQygxZTk5M2MzNjc3NjI1ODMyKSwKKyAgICAgQygyODcw
YTk5Yzc2YTU4N2E0KSwgQyg5OWY3NGNjMGIxODJkZGE0KSwgQyg4YTVlODk1YjJmMGNhN2I2KSwK
KyAgICAgQygzZDc4ODgyZDVlMGJiMWRjKSwgQygyODcwYTk5Yzc2YTU4N2E0KSwgQyg5OWY3NGNj
MGIxODJkZGE0KSwKKyAgICAgQyg4YTVlODk1YjJmMGNhN2I2KSwgQygzZDc4ODgyZDVlMGJiMWRj
KSwgQyhmNDY2MTIzNzMyYTNlMjVlKSwKKyAgICAgQyhhY2E1ZTU5NzE2YTQwZTUwKSwgQygyNjFk
MmU3MzgzZDBlNjg2KSwgQyhjZTkzNjJkNmE0MmMxNWE3KSwKKyAgICAgQyhlZWY3OWI2Yil9LAor
ICAgIHtDKGRiYmY1NDFlOWRmZGEwYSksIEMoMTQ3OWZjZWI2ZGI0Zjg0NCksIEMoMzFhYjU3NmI1
OTA2MjUzNCksCisgICAgIEMoYTMzMzVjNDE3Njg3Y2YzYSksIEMoOTJmZjExNGFjNDVjZGE3NSks
IEMoYzNiOGE2MjczODRmMTNiNSksCisgICAgIEMoYzRmMjVkZTMzZGU4YjNmNyksIEMoYTMzMzVj
NDE3Njg3Y2YzYSksIEMoOTJmZjExNGFjNDVjZGE3NSksCisgICAgIEMoYzNiOGE2MjczODRmMTNi
NSksIEMoYzRmMjVkZTMzZGU4YjNmNyksIEMoZWFjYmY1MjA1NzhjNTk2NCksCisgICAgIEMoNGNi
MTljNWFiMjRmMzIxNSksIEMoZTdkOGE2ZjY3ZjBjNmU3KSwgQygzMjVjMjQxM2ViNzcwYWRhKSwg
Qyg4NjhlMzMxNSl9LAorICAgIHtDKGMyZWUzMjg4YmU0ZmUyYmYpLCBDKGM2NWQyZjVkZGYzMmI5
MiksIEMoYWY2ZWNkZjEyMWJhNTQ4NSksCisgICAgIEMoYzdjZDQ4ZjdhYmYxZmU1OSksIEMoY2U2
MDA2NTZhY2U2ZjUzYSksIEMoOGE5NGE0MzgxYjEwOGIzNCksCisgICAgIEMoZjlkMTI3NmM2NGJm
NTlmYiksIEMoYzdjZDQ4ZjdhYmYxZmU1OSksIEMoY2U2MDA2NTZhY2U2ZjUzYSksCisgICAgIEMo
OGE5NGE0MzgxYjEwOGIzNCksIEMoZjlkMTI3NmM2NGJmNTlmYiksIEMoMjE5Y2U3MGZmNWExMTJh
NSksCisgICAgIEMoZTYwMjZjNTc2ZTJkMjhkNyksIEMoYjhlNDY3ZjI1MDE1ZTNhNiksIEMoOTUw
Y2I5MDRmMzdhZjcxMCksCisgICAgIEMoNDYzOWE0MjYpfSwKKyAgICB7QyhkODY2MDNjZWQxZWQ0
NzMwKSwgQyhmOWRlNzE4YWFhZGE3NzA5KSwgQyhkYjhiOTc1NTE5NGM2NTM1KSwKKyAgICAgQyhk
ODAzZTFlZWFkNDc2MDRjKSwgQyhhZDAwZjc2MTE5NzBhNzFiKSwgQyhiYzUwMDM2YjE2Y2U3MWY1
KSwKKyAgICAgQyhhZmJhOTYyMTBhMmNhN2Q2KSwgQyhkODAzZTFlZWFkNDc2MDRjKSwgQyhhZDAw
Zjc2MTE5NzBhNzFiKSwKKyAgICAgQyhiYzUwMDM2YjE2Y2U3MWY1KSwgQyhhZmJhOTYyMTBhMmNh
N2Q2KSwgQygyOGY3YTdiZTFkNjc2NWYwKSwKKyAgICAgQyg5N2JkODg4YjkzOTM4YzY4KSwgQyg2
YWQ0MWQxYjQwN2RlZDQ5KSwgQyhiOWJmZWMwOThkYzU0M2U0KSwKKyAgICAgQyhmMzIxMzY0Nil9
LAorICAgIHtDKDkxNTI2M2M2NzFiMjg4MDkpLCBDKGE4MTUzNzhlN2FkNzYyZmQpLCBDKGFiZWM2
ZGM5YjY2OWY1NTkpLAorICAgICBDKGQxN2M5MjhjNTM0MjQ3N2YpLCBDKDc0NTEzMGI3OTUyNTRh
ZDUpLCBDKDhjNWRiOTI2ZmU4OGY4YmEpLAorICAgICBDKDc0MmE5NWM5NTNlNmQ5NzQpLCBDKGQx
N2M5MjhjNTM0MjQ3N2YpLCBDKDc0NTEzMGI3OTUyNTRhZDUpLAorICAgICBDKDhjNWRiOTI2ZmU4
OGY4YmEpLCBDKDc0MmE5NWM5NTNlNmQ5NzQpLCBDKDI3OWRiODA1N2I1ZDNlOTYpLAorICAgICBD
KDk4MTY4NDExNTY1YjRlYzQpLCBDKDUwYTcyYzU0ZmExMTI1ZmEpLCBDKDI3NzY2YTYzNWRiNzM2
MzgpLAorICAgICBDKDE3ZjE0OGU5KX0sCisgICAge0MoMmI2N2NkZDM4YzMwN2E1ZSksIEMoY2Ix
ZDQ1YmI1YzlmZTFjKSwgQyg4MDBiYWYyYTAyZWMxOGFkKSwKKyAgICAgQyg2NTMxYzFmZTMyYmNi
NDE3KSwgQyg4Yzk3MGQ4ZGY4Y2RiZWI0KSwgQyg5MTdiYTVmYzY3ZTcyYjQwKSwKKyAgICAgQyg0
YjY1ZTRlMjYzZTBhNDI2KSwgQyg2NTMxYzFmZTMyYmNiNDE3KSwgQyg4Yzk3MGQ4ZGY4Y2RiZWI0
KSwKKyAgICAgQyg5MTdiYTVmYzY3ZTcyYjQwKSwgQyg0YjY1ZTRlMjYzZTBhNDI2KSwgQyhlMGRl
MzNjZTg4YThiM2E5KSwKKyAgICAgQyhmOGVmOThhNDM3ZTE2YjA4KSwgQyhhNTE2MmMwYzdjNWY3
YjYyKSwgQyhkYmRhYzQzMzYxYjJiODgxKSwKKyAgICAgQyhiZmQ5NDg4MCl9LAorICAgIHtDKDJk
MTA3NDE5MDczYjljZDApLCBDKGE5NmRiMDc0MGNlZjhmNTQpLCBDKGVjNDFlZTkxYjNlY2RjMWIp
LAorICAgICBDKGZmZTMxOTY1NGM4ZTdlYmMpLCBDKDZhNjdiOGYxM2VhZDVhNzIpLCBDKDZkZDEw
YTM0ZjgwZDUzMmYpLAorICAgICBDKDZlOWNmYWVjZTlmYmNhNCksIEMoZmZlMzE5NjU0YzhlN2Vi
YyksIEMoNmE2N2I4ZjEzZWFkNWE3MiksCisgICAgIEMoNmRkMTBhMzRmODBkNTMyZiksIEMoNmU5
Y2ZhZWNlOWZiY2E0KSwgQyhiNDQ2OGViNmEzMGFhN2U5KSwKKyAgICAgQyhlODc5OTViZWU0ODMy
MjJhKSwgQyhkMDM2YzJjOTBjNjA5MzkxKSwgQyg4NTMzMDZlODJmYTMyMjQ3KSwKKyAgICAgQyhi
YjFmYTdmMyl9LAorICAgIHtDKGYzZTk0ODdlYzBlMjZkZmMpLCBDKDFhYjFmNjMyMjRlODM3ZmEp
LCBDKDExOTk4M2JiNWE4MTI1ZDgpLAorICAgICBDKDg5NTBjZmNmNGJkZjYyMmMpLCBDKDg4NDdk
Y2E4MmVmZWVmMmYpLCBDKDY0NmI3NWIwMjY3MDgxNjkpLAorICAgICBDKDIxY2FiNGIxNjg3YmQ4
YiksIEMoODk1MGNmY2Y0YmRmNjIyYyksIEMoODg0N2RjYTgyZWZlZWYyZiksCisgICAgIEMoNjQ2
Yjc1YjAyNjcwODE2OSksIEMoMjFjYWI0YjE2ODdiZDhiKSwgQygyNDNiNDg5YTllYWU2MjMxKSwK
KyAgICAgQyg1ZjNlNjM0YzRiNzc5ODc2KSwgQyhmZjhhYmQxNTQ4ZWFmNjQ2KSwgQyhjNzk2MmY1
ZjAxNTE5MTRiKSwgQyg4ODgxNmIxKX0sCisgICAge0MoMTE2MDk4N2M4ZmU4NmY3ZCksIEMoODc5
ZTZkYjE0ODFlYjkxYiksIEMoZDdkY2I4MDJiZmU2ODg1ZCksCisgICAgIEMoMTQ0NTNiNWNjM2Q4
MjM5NiksIEMoNGVmNzAwYzMzZWQyNzhiYyksIEMoMTYzOWM3MmZmYzAwZDEyZSksCisgICAgIEMo
ZmIxNDBlZTYxNTVmNzAwZCksIEMoMTQ0NTNiNWNjM2Q4MjM5NiksIEMoNGVmNzAwYzMzZWQyNzhi
YyksCisgICAgIEMoMTYzOWM3MmZmYzAwZDEyZSksIEMoZmIxNDBlZTYxNTVmNzAwZCksIEMoMmU2
YjVjOTZhNjYyMDg2MiksCisgICAgIEMoYTFmMTM2OTk4Y2JlMTljKSwgQyg3NGUwNThhM2I2YzVh
NzEyKSwgQyg5M2RjZjZiZDMzOTI4YjE3KSwgQyg1YzJmYWViMyl9LAorICAgIHtDKGVhYjgxMTJj
NTYwYjk2N2IpLCBDKDk3ZjU1MGI1OGU4OWRiYWUpLCBDKDg0NmVkNTA2ZDMwNDA1MWYpLAorICAg
ICBDKDI3NmFhMzc3NDRiNWEwMjgpLCBDKDhjMTA4MDBlZTkwZWE1NzMpLCBDKGU2ZTU3ZDJiMzNh
MWUwYjcpLAorICAgICBDKDkxZjgzNTYzY2QzYjlkZGEpLCBDKDI3NmFhMzc3NDRiNWEwMjgpLCBD
KDhjMTA4MDBlZTkwZWE1NzMpLAorICAgICBDKGU2ZTU3ZDJiMzNhMWUwYjcpLCBDKDkxZjgzNTYz
Y2QzYjlkZGEpLCBDKGFmYmI0NzM5NTcwNzM4YTEpLAorICAgICBDKDQ0MGJhOThkYTVkOGY2OSks
IEMoZmRlNGU5YjBlZGEyMDM1MCksIEMoZTY3ZGZhNWEyMTM4ZmExKSwgQyg1MWI1ZmM2Zil9LAor
ICAgIHtDKDFhZGRjZjAzODZkMzUzNTEpLCBDKGI1ZjQzNjU2MWY4ZjE0ODQpLCBDKDg1ZDM4ZTIy
MTgxYzliYjEpLAorICAgICBDKGZmNWMwM2YwMDNjMWZlZmUpLCBDKGUxMDk4NjcwYWZlN2ZmNiks
IEMoZWE0NDUwMzBjZjg2ZGUxOSksCisgICAgIEMoZjE1NWM2OGI1YzI5NjdmOCksIEMoZmY1YzAz
ZjAwM2MxZmVmZSksIEMoZTEwOTg2NzBhZmU3ZmY2KSwKKyAgICAgQyhlYTQ0NTAzMGNmODZkZTE5
KSwgQyhmMTU1YzY4YjVjMjk2N2Y4KSwgQyg5NWQzMWIxNDVkYmIyZTllKSwKKyAgICAgQyg5MTRm
ZTFjYTNkZWIzMjY1KSwgQyg2MDY2MDIwYjEzNThjY2MxKSwgQyhjNzRiYjdlMmRlZTE1MDM2KSwK
KyAgICAgQygzM2Q5NDc1Mil9LAorICAgIHtDKGQ0NDViYTg0YmY4MDNlMDkpLCBDKDEyMTZjMjQ5
NzAzOGY4MDQpLCBDKDIyOTMyMTZlYTIyMzcyMDcpLAorICAgICBDKGUyMTY0NDUxYzY1MWFkZmIp
LCBDKGIyNTM0ZTY1NDc3Zjk4MjMpLCBDKDRkNzA2OTFhNjk2NzFlMzQpLAorICAgICBDKDE1YmU0
OTYzZGJkZTgxNDMpLCBDKGUyMTY0NDUxYzY1MWFkZmIpLCBDKGIyNTM0ZTY1NDc3Zjk4MjMpLAor
ICAgICBDKDRkNzA2OTFhNjk2NzFlMzQpLCBDKDE1YmU0OTYzZGJkZTgxNDMpLCBDKDc2MmU3NWM0
MDZjNWU5YTMpLAorICAgICBDKDdiNzU3OWY3ZTAzNTY4NDEpLCBDKDQ4MDUzM2ViMDY2ZGZjZTUp
LCBDKDkwYWUxNGVhNmJmZWI0YWUpLAorICAgICBDKGIwYzkyOTQ4KX0sCisgICAge0MoMzcyMzVh
MDk2YThiZTQzNSksIEMoZDliNzMxMzA0OTM1ODljMiksIEMoM2IxMDI0ZjU5Mzc4ZDNiZSksCisg
ICAgIEMoYWQxNTlmNTQyZDgxZjA0ZSksIEMoNDk2MjZhOTdhOTQ2MDk2KSwgQyhkOGQzOTk4YmYw
OWZkMzA0KSwKKyAgICAgQyhkMTI3YTQxMWVhZTY5NDU5KSwgQyhhZDE1OWY1NDJkODFmMDRlKSwg
Qyg0OTYyNmE5N2E5NDYwOTYpLAorICAgICBDKGQ4ZDM5OThiZjA5ZmQzMDQpLCBDKGQxMjdhNDEx
ZWFlNjk0NTkpLCBDKDhmMzI1M2M0ZWI3ODVhN2IpLAorICAgICBDKDQwNDkwNjJmMzdlNjIzOTcp
LCBDKGI5ZmEwNGQzYjY3MGU1YzEpLCBDKDEyMTFhNzk2N2FjOTM1MGYpLAorICAgICBDKGM3MTcx
NTkwKX0sCisgICAge0MoNzYzYWQ2ZWEyZmUxYzk5ZCksIEMoY2Y3YWY1MzY4YWMxZTI2YiksIEMo
NGQ1ZTQ1MWIzYmI4ZDNkNCksCisgICAgIEMoMzcxMmViOTEzZDA0ZTJmMiksIEMoMmY5NTAwZDMx
OWM4NGQ4OSksIEMoNGFjNmViMjFhOGNmMDZmOSksCisgICAgIEMoN2QxOTE3YWZjZGU0Mjc0NCks
IEMoMzcxMmViOTEzZDA0ZTJmMiksIEMoMmY5NTAwZDMxOWM4NGQ4OSksCisgICAgIEMoNGFjNmVi
MjFhOGNmMDZmOSksIEMoN2QxOTE3YWZjZGU0Mjc0NCksIEMoNmI1ODYwNGI1ZGQxMDkwMyksCisg
ICAgIEMoYzQyODhkZmJjMWUzMTlmYyksIEMoMjMwZjc1Y2E5NjgxN2M2ZSksIEMoODg5NGNiYTNi
NzYzNzU2YyksCisgICAgIEMoMjQwYTY3ZmIpfSwKKyAgICB7QyhlYTYyN2ZjODRjZDFiODU3KSwg
Qyg4NWUzNzI0OTQ1MjAwNzFmKSwgQyg2OWVjNjE4MDA4NDU3ODBiKSwKKyAgICAgQyhhM2MxYzVj
YTFiMDM2NyksIEMoZWI2OTMzOTk3MjcyYmIzZCksIEMoNzZhNzJjYjYyNjkyYTY1NSksCisgICAg
IEMoMTQwYmI1NTMxZWRmNzU2ZSksIEMoYTNjMWM1Y2ExYjAzNjcpLCBDKGViNjkzMzk5NzI3MmJi
M2QpLAorICAgICBDKDc2YTcyY2I2MjY5MmE2NTUpLCBDKDE0MGJiNTUzMWVkZjc1NmUpLCBDKDhk
MGQ4MDY3ZDFjOTI1ZjQpLAorICAgICBDKDdiM2ZhNTZkOGQ3N2ExMGMpLCBDKDJiZDAwMjg3YjA5
NDZkODgpLCBDKGYwOGM4ZTRiZDY1Yjg5NzApLAorICAgICBDKGUxODQzY2Q1KX0sCisgICAge0Mo
MWYyZmZkNzlmMmNkYzBjOCksIEMoNzI2YTFiYzMxYjMzN2FhYSksIEMoNjc4YjdmMjc1ZWY5NjQz
NCksCisgICAgIEMoNWFhODJiZmFhOTlkMzk3OCksIEMoYzE4Zjk2Y2FkZTVjZTE4ZCksIEMoMzg0
MDQ0OTFmOWUzNGMwMyksCisgICAgIEMoODkxZmI4OTI2YmEwNDE4YyksIEMoNWFhODJiZmFhOTlk
Mzk3OCksIEMoYzE4Zjk2Y2FkZTVjZTE4ZCksCisgICAgIEMoMzg0MDQ0OTFmOWUzNGMwMyksIEMo
ODkxZmI4OTI2YmEwNDE4YyksIEMoZTVmNjlhNjM5ODExNGMxNSksCisgICAgIEMoN2I4ZGVkMzYy
M2JjNmIxZCksIEMoMmYzZTVjNWRhNWZmNzBlOCksIEMoMWFiMTQyYWRkZWE2YTllYyksCisgICAg
IEMoZmRhMTQ1MmIpfSwKKyAgICB7QygzOWE5ZTE0NmVjNGIzMjEwKSwgQyhmNjNmNzU4MDJhNzhi
MWFjKSwgQyhlMmUyMjUzOWM5NDc0MWMzKSwKKyAgICAgQyg4YjMwNWQ1MzJlNjEyMjZlKSwgQyhj
YWVhZTgwZGEyZWEyZSksIEMoODhhNjI4OWE3NmFjNjg0ZSksCisgICAgIEMoOGNlNWI1ZjlkZjFj
YmQ4NSksIEMoOGIzMDVkNTMyZTYxMjI2ZSksIEMoY2FlYWU4MGRhMmVhMmUpLAorICAgICBDKDg4
YTYyODlhNzZhYzY4NGUpLCBDKDhjZTViNWY5ZGYxY2JkODUpLCBDKDhhZTFmYzQ3OThlMDBkNTcp
LAorICAgICBDKGU3MTY0YjhmYjM2NGZjNDYpLCBDKDZhOTc4YzliZDNhNjY5NDMpLCBDKGVmMTBk
NWFlNGRkMDhkYyksIEMoYTJjYWQzMzApfSwKKyAgICB7Qyg3NGNiYTMwM2UyZGQ5ZDZkKSwgQyg2
OTI2OTliODMyODlmYWQxKSwgQyhkZmI5YWE3ODc0Njc4NDgwKSwKKyAgICAgQyg3NTEzOTBhOGE1
YzQxYmRjKSwgQyg2ZWU1ZmJmODc2MDVkMzQpLCBDKDZjYTczZjYxMGYzYThmN2MpLAorICAgICBD
KGU4OThiM2M5OTY1NzBhZCksIEMoNzUxMzkwYThhNWM0MWJkYyksIEMoNmVlNWZiZjg3NjA1ZDM0
KSwKKyAgICAgQyg2Y2E3M2Y2MTBmM2E4ZjdjKSwgQyhlODk4YjNjOTk2NTcwYWQpLCBDKDk4MTY4
YTU4NThmYzcxMTApLAorICAgICBDKDZmOTg3ZmEyN2FhMGRhYTIpLCBDKGYyNWUzZTE4MGQ0YjM2
YTMpLCBDKGQwYjAzNDk1YWViMWJlOGEpLAorICAgICBDKDUzNDY3ZTE2KX0sCisgICAge0MoNGNi
YzJiNzNhNDMwNzFlMCksIEMoNTZjNWRiNGM0Y2E0ZTBiNyksIEMoMWIyNzVhMTYyZjQ2YmQzZCks
CisgICAgIEMoYjg3YTMyNmU0MTM2MDRiZiksIEMoZDhmOWE1ZmEyMTRiMDNhYiksIEMoOGE4YmI4
MjY1NzcxY2Y4OCksCisgICAgIEMoYTY1NTMxOTA1NGY2ZTcwZiksIEMoYjg3YTMyNmU0MTM2MDRi
ZiksIEMoZDhmOWE1ZmEyMTRiMDNhYiksCisgICAgIEMoOGE4YmI4MjY1NzcxY2Y4OCksIEMoYTY1
NTMxOTA1NGY2ZTcwZiksIEMoYjQ5OWNiOGU2NWE5YWY0NCksCisgICAgIEMoYmVlN2ZhZmNjODMw
NzQ5MSksIEMoNWQyZTU1ZmE5YjI3Y2RhMiksIEMoNjNiMTIwZjVmYjJkNmVlNSksCisgICAgIEMo
ZGExNGE4ZDApfSwKKyAgICB7Qyg4NzU2MzhiOTcxNWQyMjIxKSwgQyhkOWJhMDYxNWMwYzU4NzQw
KSwgQyg2MTZkNGJlMmRmZTgyNWFhKSwKKyAgICAgQyg1ZGYyNWYxM2VhN2JjMjg0KSwgQygxNjVl
ZGZhYWZkMjU5OGZiKSwgQyhhZjcyMTVjNWM3MThjNjk2KSwKKyAgICAgQyhlOWYyZjljYTY1NWU3
NjkpLCBDKDVkZjI1ZjEzZWE3YmMyODQpLCBDKDE2NWVkZmFhZmQyNTk4ZmIpLAorICAgICBDKGFm
NzIxNWM1YzcxOGM2OTYpLCBDKGU5ZjJmOWNhNjU1ZTc2OSksIEMoZTQ1OWNmY2I1NjVkM2QyZCks
CisgICAgIEMoNDFkMDMyNjMxYmUyNDE4YSksIEMoYzUwNWRiMDVmZDk0NmY2MCksIEMoNTQ5OTAz
OTRhNzE0ZjVkZSksCisgICAgIEMoNjczMzM1NTEpfSwKKyAgICB7QyhmYjY4NmIyNzgyOTk0YThk
KSwgQyhlZGVlNjA2OTM3NTZiYjQ4KSwgQyhlNmJjM2NhZTBkZWQyZWY1KSwKKyAgICAgQyg1OGVi
NGQwM2IyYzNkZGY1KSwgQyg2ZDI1NDI5OTVmOTE4OWYxKSwgQyhjMGJlZWM1OGE1ZjVmZWEyKSwK
KyAgICAgQyhlZDY3NDM2ZjQyZTJhNzhiKSwgQyg1OGViNGQwM2IyYzNkZGY1KSwgQyg2ZDI1NDI5
OTVmOTE4OWYxKSwKKyAgICAgQyhjMGJlZWM1OGE1ZjVmZWEyKSwgQyhlZDY3NDM2ZjQyZTJhNzhi
KSwgQyhkZmVjNzYzY2RiMmI1MTkzKSwKKyAgICAgQyg3MjRhOGQ1MzQ1YmQyZDYpLCBDKDk0ZDRm
ZDFiODE0NTdjMjMpLCBDKDI4ZTg3YzUwY2RlZGU0NTMpLCBDKGEwZWJkNjZlKX0sCisgICAge0Mo
YWIyMWQ4MWE5MTFlNjcyMyksIEMoNGMzMWIwNzM1NDg1MmY1OSksIEMoODM1ZGEzODRjOTM4NDc0
NCksCisgICAgIEMoN2Y3NTlkZGRjNmU4NTQ5YSksIEMoNjE2ZGQwY2EwMjJjODczNSksIEMoOTQ3
MTdhZDRiYzE1Y2ViMyksCisgICAgIEMoZjY2YzdiZTgwOGFiMzZlKSwgQyg3Zjc1OWRkZGM2ZTg1
NDlhKSwgQyg2MTZkZDBjYTAyMmM4NzM1KSwKKyAgICAgQyg5NDcxN2FkNGJjMTVjZWIzKSwgQyhm
NjZjN2JlODA4YWIzNmUpLCBDKGFmODI4NmI1NTBiMmY0YjcpLAorICAgICBDKDc0NWJkMjE3ZDIw
YTlmNDApLCBDKGM3M2JmYjljNTQzMGYwMTUpLCBDKDU1ZTY1OTIyNjY2ZTNmYzIpLAorICAgICBD
KDRiNzY5NTkzKX0sCisgICAge0MoMzNkMDEzY2MwY2Q0NmVjZiksIEMoM2RlNzI2NDIzYWVhMTIy
YyksIEMoMTE2YWY1MTExN2ZlMjFhOSksCisgICAgIEMoZjI3MWJhNDc0ZWRjNTYyZCksIEMoZTY1
OTZlNjdmOWRkM2ViZCksIEMoYzBhMjg4ZWRmODA4ZjM4MyksCisgICAgIEMoYjNkZWY3MDY4MWM2
YmFiYyksIEMoZjI3MWJhNDc0ZWRjNTYyZCksIEMoZTY1OTZlNjdmOWRkM2ViZCksCisgICAgIEMo
YzBhMjg4ZWRmODA4ZjM4MyksIEMoYjNkZWY3MDY4MWM2YmFiYyksIEMoN2RhNzg2NGU5OTg5YjA5
NSksCisgICAgIEMoYmYyZjg3MTg2OTNjZDhhMSksIEMoMjY0YTkxNDQxNjZkYTc3NiksIEMoNjFh
ZDkwNjc2ODcwYmViNiksCisgICAgIEMoNmFhNzU2MjQpfSwKKyAgICB7Qyg4Y2E5MmM3Y2QzOWZh
ZTVkKSwgQygzMTdlNjIwZTFiZjIwZjEpLCBDKDRmMGIzM2JmMjE5NGI5N2YpLAorICAgICBDKDQ1
NzQ0YWZjZjEzMWRiZWUpLCBDKDk3MjIyMzkyYzI1NTkzNTApLCBDKDQ5OGExOWIyODBjNmQ2ZWQp
LAorICAgICBDKDgzYWMyYzM2YWNkYjhkNDkpLCBDKDQ1NzQ0YWZjZjEzMWRiZWUpLCBDKDk3MjIy
MzkyYzI1NTkzNTApLAorICAgICBDKDQ5OGExOWIyODBjNmQ2ZWQpLCBDKDgzYWMyYzM2YWNkYjhk
NDkpLCBDKDdhNjk2NDVjMjk0ZGFhNjIpLAorICAgICBDKGFiZTlkMmJlODI3NWIzZDIpLCBDKDM5
NTQyMDE5ZGUzNzEwODUpLCBDKDdmNGVmYWM4NDg4Y2Q2YWQpLAorICAgICBDKDYwMmEzZjk2KX0s
CisgICAge0MoZmRkZTNiMDNmMDE4ZjQzZSksIEMoMzhmOTMyOTQ2Yzc4NjYwKSwgQyhjODQwODRj
ZTk0Njg1MWVlKSwKKyAgICAgQyhiNmRkMDliYTc4NTFjN2FmKSwgQyg1NzBkZTRlMWJiMTNiMTMz
KSwgQyhjNGU3ODRlYjk3MjExNjQyKSwKKyAgICAgQyg4Mjg1YTdmY2RjYzdjNThkKSwgQyhiNmRk
MDliYTc4NTFjN2FmKSwgQyg1NzBkZTRlMWJiMTNiMTMzKSwKKyAgICAgQyhjNGU3ODRlYjk3MjEx
NjQyKSwgQyg4Mjg1YTdmY2RjYzdjNThkKSwgQyhkNDIxZjQ3OTkwZGE4OTliKSwKKyAgICAgQyg4
YWVkNDA5Yzk5N2VhYTEzKSwgQyg3YTA0NTkyOWMyZTI5Y2NmKSwgQyhiMzczNjgyYTYyMDJjODZi
KSwKKyAgICAgQyhjZDE4M2M0ZCl9LAorICAgIHtDKDljODUwMjA1MGU5Yzk0NTgpLCBDKGQ2ZDJh
MWE2OTk2NGJlYjkpLCBDKDE2NzU3NjZmNDgwMjI5YjUpLAorICAgICBDKDIxNmUxZDZjODZjYjUy
NGMpLCBDKGQwMWNmNmZkNGY0MDY1YzApLCBDKGZmZmE0ZWM1YjQ4MmVhMGYpLAorICAgICBDKGEw
ZTIwZWU2YTU0MDRhYzEpLCBDKDIxNmUxZDZjODZjYjUyNGMpLCBDKGQwMWNmNmZkNGY0MDY1YzAp
LAorICAgICBDKGZmZmE0ZWM1YjQ4MmVhMGYpLCBDKGEwZTIwZWU2YTU0MDRhYzEpLCBDKGMxYjAz
N2U0ZWViYWY4NWUpLAorICAgICBDKDYzNGUzZDdjM2ViZjg5ZWIpLCBDKGJjZGE5NzIzNThjNjdk
MSksIEMoZmQxMzUyMTgxZTViODU3OCksIEMoOTYwYTRkMDcpfSwKKyAgICB7QygzNDgxNzZjYTJm
YTJmZGQyKSwgQygzYTg5YzUxNGNjMzYwYzJkKSwgQyg5ZjkwYjhhZmIzMThkNmQwKSwKKyAgICAg
QyhiY2VlZTA3YzExYTlhYzMwKSwgQygyZTJkNDdkZmY4ZTc3ZWI3KSwgQygxMWEzOTRjZDdiNmQ2
MTRhKSwKKyAgICAgQygxZDdjNDFkNTRlMTVjYjRhKSwgQyhiY2VlZTA3YzExYTlhYzMwKSwgQygy
ZTJkNDdkZmY4ZTc3ZWI3KSwKKyAgICAgQygxMWEzOTRjZDdiNmQ2MTRhKSwgQygxZDdjNDFkNTRl
MTVjYjRhKSwgQygxNWJhYTVhZTczMTJiMGZjKSwKKyAgICAgQyhmMzk4ZjU5NmNjOTg0NjM1KSwg
Qyg4YWI4ZmRmODdhNjc4OGU4KSwgQyhiMmI1YzEyMzRhYjQ3ZTIpLCBDKDlhZTk5OGM0KX0sCisg
ICAge0MoNGEzZDNkZmJiYWVhMTMwYiksIEMoNGUyMjFjOTIwZjYxZWQwMSksIEMoNTUzZmQ2Y2Qx
MzA0NTMxZiksCisgICAgIEMoYmQyYjMxYjU2MDgxNDNmZSksIEMoYWI3MTdhMTBmMjU1NDg1Myks
IEMoMjkzODU3ZjA0ZDE5NGQyMiksCisgICAgIEMoZDUxYmU4ZmE4NmYyNTRmMCksIEMoYmQyYjMx
YjU2MDgxNDNmZSksIEMoYWI3MTdhMTBmMjU1NDg1MyksCisgICAgIEMoMjkzODU3ZjA0ZDE5NGQy
MiksIEMoZDUxYmU4ZmE4NmYyNTRmMCksIEMoMWVlZTM5ZTA3Njg2OTA3ZSksCisgICAgIEMoNjM5
MDM5ZmUwZThkMzA1MiksIEMoZDZlYzE0NzBjZWY5N2ZmKSwgQygzNzBjODJiODYwMDM0ZjBmKSwg
Qyg3NGUyMTc5ZCl9LAorICAgIHtDKGIzNzFmNzY4Y2RmNGVkYjkpLCBDKGJkZWYyYWNlNmQyZGUw
ZjApLCBDKGUwNWI0MTAwZjdmMWJhZWMpLAorICAgICBDKGI5ZTBkNDE1YjRlYmQ1MzQpLCBDKGM5
N2MyYTI3ZWZhYTMzZDcpLCBDKDU5MWNkYjM1Zjg0ZWY5ZGEpLAorICAgICBDKGE1N2QwMmQwZThl
Mzc1NmMpLCBDKGI5ZTBkNDE1YjRlYmQ1MzQpLCBDKGM5N2MyYTI3ZWZhYTMzZDcpLAorICAgICBD
KDU5MWNkYjM1Zjg0ZWY5ZGEpLCBDKGE1N2QwMmQwZThlMzc1NmMpLCBDKDIzZjU1ZjEyZDdjNWM4
N2IpLAorICAgICBDKDRjN2NhMGZlMjMyMjExMDEpLCBDKGRiYzMwMjA0ODAzMzQ1NjQpLCBDKGQ5
ODU5OTJmMzJjMjM2YjEpLAorICAgICBDKGVlOWJhZTI1KX0sCisgICAge0MoN2ExZDJlOTY5MzRm
NjFmKSwgQyhlYjE3NjBhZTZhZjdkOTYxKSwgQyg4ODdlYjBkYTA2MzAwNWRmKSwKKyAgICAgQygy
MjI4ZDY3MjVlMzFiOGFiKSwgQyg5Yjk4ZjdlNGQwMTQyZTcwKSwgQyhiNmE4YzIxMTViOGUwZmU3
KSwKKyAgICAgQyhiNTkxZTJmNWFiOWI5NGIxKSwgQygyMjI4ZDY3MjVlMzFiOGFiKSwgQyg5Yjk4
ZjdlNGQwMTQyZTcwKSwKKyAgICAgQyhiNmE4YzIxMTViOGUwZmU3KSwgQyhiNTkxZTJmNWFiOWI5
NGIxKSwgQyg2YzFmZWFhODA2NTMxOGUwKSwKKyAgICAgQyg0ZTdlMmNhMjFjMmU4MWZiKSwgQyhl
OWZlNWQ4Y2U3OTkzYzQ1KSwgQyhlZTQxMWZhMmYxMmNmOGRmKSwKKyAgICAgQyhiNjZlZGYxMCl9
LAorICAgIHtDKDhiZTUzZDQ2NmQ0NzI4ZjIpLCBDKDg2YTVhYzhlMGQ0MTY2NDApLCBDKDk4NGFh
NDY0Y2RiNWM4YmIpLAorICAgICBDKDg3MDQ5ZTY4ZjVkMzhlNTkpLCBDKDdkOGNlNDRlYzZiZDc3
NTEpLCBDKGNjMjhkMDhhYjQxNDgzOWMpLAorICAgICBDKDZjOGYwYmQzNGZlODQzZTMpLCBDKDg3
MDQ5ZTY4ZjVkMzhlNTkpLCBDKDdkOGNlNDRlYzZiZDc3NTEpLAorICAgICBDKGNjMjhkMDhhYjQx
NDgzOWMpLCBDKDZjOGYwYmQzNGZlODQzZTMpLCBDKGI4NDk2ZGNkYzAxZjNlNDcpLAorICAgICBD
KDJmMDMxMjVjMjgyYWMyNiksIEMoODJhODc5N2JhM2Y1ZWYwNyksIEMoN2M5NzdhNGQxMGJmNTJi
OCksIEMoZDYyMDk3MzcpfSwKKyAgICB7Qyg4Mjk2NzdlYjAzYWJmMDQyKSwgQyg0M2NhZDAwNGI2
YmMyYzApLCBDKGYyZjIyNDc1NjgwMzk3MWEpLAorICAgICBDKDk4ZDBkYmY3OTY0ODAxODcpLCBD
KGZiY2I1ZjNlMWJlZjU3NDIpLCBDKDVhZjJhMDQ2M2JmNmU5MjEpLAorICAgICBDKGFkOTU1NWJm
MDEyMGIzYTMpLCBDKDk4ZDBkYmY3OTY0ODAxODcpLCBDKGZiY2I1ZjNlMWJlZjU3NDIpLAorICAg
ICBDKDVhZjJhMDQ2M2JmNmU5MjEpLCBDKGFkOTU1NWJmMDEyMGIzYTMpLCBDKDI4M2UzOWIzZGM5
OWY0NDcpLAorICAgICBDKGJlZGFhMWE0YTAyNTBjMjgpLCBDKDlkNTA1NDY2MjRmZjlhNTcpLCBD
KDRhYmFmNTIzZDFjMDkwZjYpLCBDKGI5OTRhODgpfSwKKyAgICB7Qyg3NTQ0MzViYWUzNDk2ZmMp
LCBDKDU3MDdmYzAwNmYwOTRkY2YpLCBDKDg5NTFjODZhYjE5ZDhlNDApLAorICAgICBDKDU3YzUy
MDhlOGYwMjFhNzcpLCBDKGY3NjUzZmJiNjljZDkyNzYpLCBDKGE0ODQ0MTBhZjIxZDc1Y2IpLAor
ICAgICBDKGYxOWI2ODQ0YjNkNjI3ZTgpLCBDKDU3YzUyMDhlOGYwMjFhNzcpLCBDKGY3NjUzZmJi
NjljZDkyNzYpLAorICAgICBDKGE0ODQ0MTBhZjIxZDc1Y2IpLCBDKGYxOWI2ODQ0YjNkNjI3ZTgp
LCBDKGYzNzQwMGZjM2ZmZDk1MTQpLAorICAgICBDKDM2YWUwZDgyMTczNGVkZmQpLCBDKDVmMzc4
MjBhZjFmMWYzMDYpLCBDKGJlNjM3ZDQwZTZhNWFkMCksIEMoYTA1ZDQzYzApfSwKKyAgICB7Qyhm
ZGE5ODc3ZWE4ZTM4MDVmKSwgQygzMWU4NjhiNmZmZDUyMWI3KSwgQyhiMDhjOTA2ODFmYjZhMGZk
KSwKKyAgICAgQyg2ODExMGE3ZjgzZjVkM2ZmKSwgQyg2ZDc3ZTA0NTkwMWI4NWE4KSwgQyg4NGVm
NjgxMTEzMDM2ZDhiKSwKKyAgICAgQygzYjlmOGUzOTI4ZjU2MTYwKSwgQyg2ODExMGE3ZjgzZjVk
M2ZmKSwgQyg2ZDc3ZTA0NTkwMWI4NWE4KSwKKyAgICAgQyg4NGVmNjgxMTEzMDM2ZDhiKSwgQygz
YjlmOGUzOTI4ZjU2MTYwKSwgQyhmYzhiN2Y1NmMxMzA4MzUpLAorICAgICBDKGExMWYzZTgwMDYz
OGU4NDEpLCBDKGQ5NTcyMjY3ZjVjZjI4YzEpLCBDKDc4OTdjODE0OTgwM2YyYWEpLAorICAgICBD
KGM3OWY3M2E4KX0sCisgICAge0MoMmUzNmY1MjNjYThmNWViNSksIEMoOGIyMjkzMmY4OWIyNzUx
MyksIEMoMzMxY2Q2ZWNiZmFkYzFiYiksCisgICAgIEMoZDFiZmU0ZGYxMmIwNGNiZiksIEMoZjU4
YzE3MjQzZmQ2Mzg0MiksIEMoM2E0NTNjZGJhODBhNjBhZiksCisgICAgIEMoNTczN2IyY2E3NDcw
ZWE5NSksIEMoZDFiZmU0ZGYxMmIwNGNiZiksIEMoZjU4YzE3MjQzZmQ2Mzg0MiksCisgICAgIEMo
M2E0NTNjZGJhODBhNjBhZiksIEMoNTczN2IyY2E3NDcwZWE5NSksIEMoNTRkNDRhM2Y0NDc3MDMw
YyksCisgICAgIEMoODE2OGUwMmQ0ODY5YWE3ZiksIEMoNzdmMzgzYTE3Nzc4NTU5ZCksIEMoOTVl
MTczN2Q3N2EyNjhmYyksCisgICAgIEMoYTQ5MGFmZjUpfSwKKyAgICB7QygyMWEzNzhlZjc2ODI4
MjA4KSwgQyhhNWMxMzAzN2ZhODQxZGEyKSwgQyg1MDZkMjJhNTNmYmU5ODEyKSwKKyAgICAgQyg2
MWM5Yzk1ZDkxMDE3ZGE1KSwgQygxNmY3YzgzYmE2OGY1Mjc5KSwgQyg5YzA2MTliMDgwOGQwNWY3
KSwKKyAgICAgQyg4M2MxMTdjZTRlNmI3MGEzKSwgQyg2MWM5Yzk1ZDkxMDE3ZGE1KSwgQygxNmY3
YzgzYmE2OGY1Mjc5KSwKKyAgICAgQyg5YzA2MTliMDgwOGQwNWY3KSwgQyg4M2MxMTdjZTRlNmI3
MGEzKSwgQyhjZmI0YzhhZjdmZDAxNDEzKSwKKyAgICAgQyhmZGVmMDRlNjAyZTcyMjk2KSwgQyhl
ZDYxMjRkMzM3ODg5YjEpLCBDKDQ5MTljODY3MDdiODMwZGEpLCBDKGRmYWQ2NWI0KX0sCisgICAg
e0MoY2NkZDU2MDAwNTRiMTZjYSksIEMoZjc4ODQ2ZTg0MjA0Y2I3YiksIEMoMWY5ZmFlYzgyYzI0
ZWFjOSksCisgICAgIEMoNTg2MzQwMDRjN2IyZDE5YSksIEMoMjRiYjVmNTFlZDNiOTA3MyksIEMo
NDY0MDlkZTAxODAzM2QwMCksCisgICAgIEMoNGE5ODA1ZWVkNWFjODAyZSksIEMoNTg2MzQwMDRj
N2IyZDE5YSksIEMoMjRiYjVmNTFlZDNiOTA3MyksCisgICAgIEMoNDY0MDlkZTAxODAzM2QwMCks
IEMoNGE5ODA1ZWVkNWFjODAyZSksIEMoZTE4ZGU4ZGIzMDZiYWY4MiksCisgICAgIEMoNDZiYmY3
NWYxZmEwMjVmZiksIEMoNWZhZjJmYjA5YmUwOTQ4NyksIEMoM2ZiYzYyYmQ0ZTU1OGZiMyksIEMo
MWQwN2RmYil9LAorICAgIHtDKDc4NTQ0NjhmNGUwY2FiZDApLCBDKDNhM2Y2YjRmMDk4ZDA2OTIp
LCBDKGFlMjQyM2VjNzc5OWQzMGQpLAorICAgICBDKDI5YzM1MjllYjE2NWVlYmEpLCBDKDQ0M2Rl
MzcwM2I2NTdjMzUpLCBDKDY2YWNiY2UzMWFlMWJjOGQpLAorICAgICBDKDFhY2M5OWVmZmUxZDU0
N2UpLCBDKDI5YzM1MjllYjE2NWVlYmEpLCBDKDQ0M2RlMzcwM2I2NTdjMzUpLAorICAgICBDKDY2
YWNiY2UzMWFlMWJjOGQpLCBDKDFhY2M5OWVmZmUxZDU0N2UpLCBDKGNmMDdmOGE1NzkwNjU3M2Qp
LAorICAgICBDKDMxYmFmYjBiYmI5YTg2ZTcpLCBDKDQwYzY5NDkyNzAyYTkzNDYpLCBDKDdkZjYx
ZmRhYTBiODU4YWYpLAorICAgICBDKDQxNmRmOWEwKX0sCisgICAge0MoN2Y4OGRiNTM0NmQ4Zjk5
NyksIEMoODhlYWM5YWFjYzY1Mzc5OCksIEMoNjhhNGQwMjk1ZjhlZWZhMSksCisgICAgIEMoYWU1
OWNhODZmNGMzMzIzZCksIEMoMjU5MDZjMDk5MDZkNWM0YyksIEMoOGRkMmFhMGMwYTY1ODRhZSks
CisgICAgIEMoMjMyYTdkOTZiMzhmNDBlOSksIEMoYWU1OWNhODZmNGMzMzIzZCksIEMoMjU5MDZj
MDk5MDZkNWM0YyksCisgICAgIEMoOGRkMmFhMGMwYTY1ODRhZSksIEMoMjMyYTdkOTZiMzhmNDBl
OSksIEMoODk4NmVlMDBhMmVkMDA0MiksCisgICAgIEMoYzQ5YWU3ZTQyOGM4YTdkMSksIEMoYjdk
ZDgyODA3MTNhYzljMiksIEMoZTAxODcyMGFlZDFlYmMyOCksCisgICAgIEMoMWY4ZmI5Y2MpfSwK
KyAgICB7QyhiYjNmYjVmYjAxZDYwZmNmKSwgQygxYjdjYzA4NDdhMjE1ZWI2KSwgQygxMjQ2Yzk5
NDQzNzk5MGExKSwKKyAgICAgQyhkNGVkYzk1NGMwN2NkOGYzKSwgQygyMjRmNDdlN2MwMGEzMGFi
KSwgQyhkNWFkN2FkN2Y0MWVmMGM2KSwKKyAgICAgQyg1OWUwODkyODFkODY5ZmQ3KSwgQyhkNGVk
Yzk1NGMwN2NkOGYzKSwgQygyMjRmNDdlN2MwMGEzMGFiKSwKKyAgICAgQyhkNWFkN2FkN2Y0MWVm
MGM2KSwgQyg1OWUwODkyODFkODY5ZmQ3KSwgQyhmMjkzNDBkMDdhMTRiNmYxKSwKKyAgICAgQyhj
ODdjNWVmNzZkOWM0ZWYzKSwgQyg0NjMxMTg3OTQxOTNhOWEpLCBDKDI5MjJkY2IwNTQwZjBkYmMp
LCBDKDdhYmY0OGUzKX0sCisgICAge0MoMmU3ODNlMTc2MWFjZDg0ZCksIEMoMzkxNTgwNDJiYWM5
NzVhMCksIEMoMWNkMjFjNWE4MDcxMTg4ZCksCisgICAgIEMoYjFiN2VjNDRmOTMwMjE3NiksIEMo
NWNiNDc2NDUwZGMwYzI5NyksIEMoZGM1ZWY2NTI1MjFlZjZhMiksCisgICAgIEMoM2NjNzlhOWUz
MzRlMWY4NCksIEMoYjFiN2VjNDRmOTMwMjE3NiksIEMoNWNiNDc2NDUwZGMwYzI5NyksCisgICAg
IEMoZGM1ZWY2NTI1MjFlZjZhMiksIEMoM2NjNzlhOWUzMzRlMWY4NCksIEMoNzY5ZTJhMjgzZGJj
YzY1MSksCisgICAgIEMoOWYyNGIxMDVjODUxMWQzZiksIEMoYzMxYzE1NTc1ZGUyZjI3ZSksIEMo
ZWNmZWNmMzJjM2FlMmQ2NiksCisgICAgIEMoZGVhNGUzZGQpfSwKKyAgICB7QygzOTIwNTgyNTFj
ZjIyYWNjKSwgQyg5NDRlYzQ0NzVlYWQ0NjIwKSwgQyhiMzMwYTEwYjVjYjk0MTY2KSwKKyAgICAg
Qyg1NGJjOWJlZTdjYmUxNzY3KSwgQyg0ODU4MjBiZGJlNDQyNDMxKSwgQyg1NGQ2MTIwZWEyOTcy
ZTkwKSwKKyAgICAgQyhmNDM3YTAzNDFmMjliNzJhKSwgQyg1NGJjOWJlZTdjYmUxNzY3KSwgQyg0
ODU4MjBiZGJlNDQyNDMxKSwKKyAgICAgQyg1NGQ2MTIwZWEyOTcyZTkwKSwgQyhmNDM3YTAzNDFm
MjliNzJhKSwgQyg4ZjMwODg1Yzc4NGQ1NzA0KSwKKyAgICAgQyhhYTk1Mzc2YjE2Yzc5MDZhKSwg
QyhlODI2OTI4Y2ZhZjkzZGMzKSwgQygyMGU4ZjU0ZDFjMTZkN2Q4KSwKKyAgICAgQyhjNjA2NGYy
Mil9LAorICAgIHtDKGFkZjVjMWU1ZDY0MTk5NDcpLCBDKDJhOTc0N2JjNjU5ZDI4YWEpLCBDKDk1
YzViOGNiMWY1ZDYyYyksCisgICAgIEMoODA5NzNlYTUzMmIwZjMxMCksIEMoYTQ3MTgyOWFhOWMx
N2RkOSksIEMoYzJmZjM0NzkzOTQ4MDRhYiksCisgICAgIEMoNmJmNDRmODYwNjc1MzYzNiksIEMo
ODA5NzNlYTUzMmIwZjMxMCksIEMoYTQ3MTgyOWFhOWMxN2RkOSksCisgICAgIEMoYzJmZjM0Nzkz
OTQ4MDRhYiksIEMoNmJmNDRmODYwNjc1MzYzNiksIEMoNTE4NGQyOTczZTZkZDgyNyksCisgICAg
IEMoMTIxYjk2MzY5YTMzMmQ5YSksIEMoNWMyNWQzNDc1YWI2OWU1MCksIEMoMjZkMjk2MWQ2Mjg4
NDE2OCksCisgICAgIEMoNzQzYmVkOWMpfSwKKyAgICB7Qyg2YmMxZGIyYzJiZWU1YWJhKSwgQyhl
NjNiMGVkNjM1MzA3Mzk4KSwgQyg3YjJlY2ExMTFmMzBkYmJjKSwKKyAgICAgQygyMzBkMmIzZTQ3
ZjA5ODMwKSwgQyhlYzg2MjRhODIxYzFjYWY0KSwgQyhlYTZlYzQxMWNkYmYxY2IxKSwKKyAgICAg
Qyg1ZjM4YWU4MmFmMzY0ZTI3KSwgQygyMzBkMmIzZTQ3ZjA5ODMwKSwgQyhlYzg2MjRhODIxYzFj
YWY0KSwKKyAgICAgQyhlYTZlYzQxMWNkYmYxY2IxKSwgQyg1ZjM4YWU4MmFmMzY0ZTI3KSwgQyhh
NTE5ZWY1MTVlYTcxODdjKSwKKyAgICAgQyg2YmFkNWVmYTdlYmFlMDVmKSwgQyg3NDhhYmFjYjEx
YTc0YTYzKSwgQyhhMjhlZWY5NjNkMTM5NmViKSwKKyAgICAgQyhmY2UyNTRkNSl9LAorICAgIHtD
KGIwMGY4OTgyMjllZmE1MDgpLCBDKDgzYjc1OTBhZDdmNjk4NWMpLCBDKDI3ODBlNzBhMDU5MmU0
MWQpLAorICAgICBDKDcxMjI0MTNiZGJjOTQwMzUpLCBDKGU3ZjkwZmFlMzNiZjc3NjMpLCBDKDRi
NmJkMGZiMzBiMTIzODcpLAorICAgICBDKDU1NzM1OWMwYzQ0ZjQ4Y2EpLCBDKDcxMjI0MTNiZGJj
OTQwMzUpLCBDKGU3ZjkwZmFlMzNiZjc3NjMpLAorICAgICBDKDRiNmJkMGZiMzBiMTIzODcpLCBD
KDU1NzM1OWMwYzQ0ZjQ4Y2EpLCBDKGQ1NjU2YzNkNmJjNWYwZCksCisgICAgIEMoOTgzZmY4ZTVl
Nzg0ZGE5OSksIEMoNjI4NDc5NjcxYjQ0NWJmKSwgQyhlMTc5YTFlMjdjZTY4ZjVkKSwgQyhlNDdl
YzlkMSl9LAorICAgIHtDKGI1NmViNzY5Y2UwZDlhOGMpLCBDKGNlMTk2MTE3YmZiY2FmMDQpLCBD
KGIyNmMzYzM3OTdkNjYxNjUpLAorICAgICBDKDVlZDEyMzM4ZjYzMGFiNzYpLCBDKGZhYjE5ZmNi
MzE5MTE2ZCksIEMoMTY3ZjVmNDJiNTIxNzI0YiksCisgICAgIEMoYzRhYTU2YzQwOTU2OGQ3NCks
IEMoNWVkMTIzMzhmNjMwYWI3NiksIEMoZmFiMTlmY2IzMTkxMTZkKSwKKyAgICAgQygxNjdmNWY0
MmI1MjE3MjRiKSwgQyhjNGFhNTZjNDA5NTY4ZDc0KSwgQyg3NWZmZjRiNDJmOGU5Nzc4KSwKKyAg
ICAgQyg5NDIxOGY5NDcxMGMxZWEzKSwgQyhiN2IwNWVmYjczOGIwNmE2KSwgQyg4M2ZmZjJkZWFi
ZjljZDMpLCBDKDMzNGExNDVjKX0sCisgICAge0MoNzBjMDYzNzY3NWI5NDE1MCksIEMoMjU5ZTE2
NjkzMDViMGExNSksIEMoNDZlMWRkOWZkMzg3YTU4ZCksCisgICAgIEMoZmNhNGU1YmM5MjkyNzg4
ZSksIEMoY2Q1MDlkYzFmYWNjZTQxYyksIEMoYmJiYTU3NWE1OWQ4MmZlKSwKKyAgICAgQyg0ZTJl
NzFjMTViNDVkNGQzKSwgQyhmY2E0ZTViYzkyOTI3ODhlKSwgQyhjZDUwOWRjMWZhY2NlNDFjKSwK
KyAgICAgQyhiYmJhNTc1YTU5ZDgyZmUpLCBDKDRlMmU3MWMxNWI0NWQ0ZDMpLCBDKDVkYzU0NTgy
ZWFkOTk5YyksCisgICAgIEMoNzI2MTJkMTU3MTk2M2M2ZiksIEMoMzAzMThhOWQyZDNkMTgyOSks
IEMoNzg1ZGQwMGY0Y2M5YzlhMCksCisgICAgIEMoYWRlYzFlM2MpfSwKKyAgICB7Qyg3NGMwYjhh
NjgyMWZhYWZlKSwgQyhhYmFjMzlkNzQ5MTM3MGU3KSwgQyhmYWYwYjJhNDhhNGU2YWVkKSwKKyAg
ICAgQyg5NjdlOTcwZGY5NjczZDJhKSwgQyhkNDY1MjQ3Y2ZmYTQxNWMwKSwgQygzM2ExZGYwY2Ex
MTA3NzIyKSwKKyAgICAgQyg0OWZjMmExMGFkY2U0YTMyKSwgQyg5NjdlOTcwZGY5NjczZDJhKSwg
QyhkNDY1MjQ3Y2ZmYTQxNWMwKSwKKyAgICAgQygzM2ExZGYwY2ExMTA3NzIyKSwgQyg0OWZjMmEx
MGFkY2U0YTMyKSwgQyhjNTcwN2UwNzlhMjg0MzA4KSwKKyAgICAgQyg1NzMwMjgyNjY2MzVkZGE2
KSwgQyhmNzg2ZjVlZWU2MTI3ZmEwKSwgQyhiMzBkNzljZWJmYjUxMjY2KSwKKyAgICAgQyhmNmE5
ZmJmOCl9LAorICAgIHtDKDVmYjVlNDhhYzdiN2ZhNGYpLCBDKGE5NjE3MGYwOGY1YWNiYzcpLCBD
KGJiZjVjNjNkNGY1MmExZTUpLAorICAgICBDKDZjYzA5ZTYwNzAwNTYzZTkpLCBDKGQxOGYyMzIy
MWU5NjQ3OTEpLCBDKGZmYzIzZWVlZjdhZjI2ZWIpLAorICAgICBDKDY5M2E5NTRhMzYyMmEzMTUp
LCBDKDgxNTMwOGEzMmE5YjBkYWYpLCBDKGVmYjJhYjI3YmY2ZmQwYmQpLAorICAgICBDKDlmMWZm
YzA5ODYxMTExMTgpLCBDKGY5YTNhYTE3NzhlYTM5ODUpLCBDKDY5OGZlNTRiMmI5MzkzM2IpLAor
ICAgICBDKGRhY2MyYjI4NDA0ZDBmMTApLCBDKDgxNTMwOGEzMmE5YjBkYWYpLCBDKGVmYjJhYjI3
YmY2ZmQwYmQpLAorICAgICBDKDUzOTgyMTBjKX0sCit9OworCit2b2lkIFRlc3RVbmNoYW5naW5n
KGNvbnN0IHVpbnQ2NF90KiBleHBlY3RlZCwgaW50IG9mZnNldCwgaW50IGxlbikgeworICBjb25z
dCB1aW50MTI4IHUgPSBDaXR5SGFzaDEyOChkYXRhICsgb2Zmc2V0LCBsZW4pOworICBjb25zdCB1
aW50MTI4IHYgPSBDaXR5SGFzaDEyOFdpdGhTZWVkKGRhdGEgKyBvZmZzZXQsIGxlbiwga1NlZWQx
MjgpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbMF0sIENpdHlIYXNoNjQoZGF0YSArIG9mZnNldCwg
bGVuKSk7CisgIEVYUEVDVF9FUShleHBlY3RlZFsxNV0sIENpdHlIYXNoMzIoZGF0YSArIG9mZnNl
dCwgbGVuKSk7CisgIEVYUEVDVF9FUShleHBlY3RlZFsxXSwgQ2l0eUhhc2g2NFdpdGhTZWVkKGRh
dGEgKyBvZmZzZXQsIGxlbiwga1NlZWQwKSk7CisgIEVYUEVDVF9FUShleHBlY3RlZFsyXSwKKyAg
ICAgICAgICAgIENpdHlIYXNoNjRXaXRoU2VlZHMoZGF0YSArIG9mZnNldCwgbGVuLCBrU2VlZDAs
IGtTZWVkMSkpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbM10sIFVpbnQxMjhMb3c2NCh1KSk7Cisg
IEVYUEVDVF9FUShleHBlY3RlZFs0XSwgVWludDEyOEhpZ2g2NCh1KSk7CisgIEVYUEVDVF9FUShl
eHBlY3RlZFs1XSwgVWludDEyOExvdzY0KHYpKTsKKyAgRVhQRUNUX0VRKGV4cGVjdGVkWzZdLCBV
aW50MTI4SGlnaDY0KHYpKTsKKyNpZmRlZiBfX1NTRTRfMl9fCisgIGNvbnN0IHVpbnQxMjggeSA9
IENpdHlIYXNoQ3JjMTI4KGRhdGEgKyBvZmZzZXQsIGxlbik7CisgIGNvbnN0IHVpbnQxMjggeiA9
IENpdHlIYXNoQ3JjMTI4V2l0aFNlZWQoZGF0YSArIG9mZnNldCwgbGVuLCBrU2VlZDEyOCk7Cisg
IHVpbnQ2NF90IGNyYzI1Nl9yZXN1bHRzWzRdOworICBDaXR5SGFzaENyYzI1NihkYXRhICsgb2Zm
c2V0LCBsZW4sIGNyYzI1Nl9yZXN1bHRzKTsKKyAgRVhQRUNUX0VRKGV4cGVjdGVkWzddLCBVaW50
MTI4TG93NjQoeSkpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbOF0sIFVpbnQxMjhIaWdoNjQoeSkp
OworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbOV0sIFVpbnQxMjhMb3c2NCh6KSk7CisgIEVYUEVDVF9F
UShleHBlY3RlZFsxMF0sIFVpbnQxMjhIaWdoNjQoeikpOworICBmb3IgKGludCBpID0gMDsgaSA8
IDQ7IGkrKykgeworICAgIEVYUEVDVF9FUShleHBlY3RlZFsxMSArIGldLCBjcmMyNTZfcmVzdWx0
c1tpXSk7CisgIH0KKyNlbmRpZgorfQorCitURVNUKENpdHlIYXNoVGVzdCwgVW5jaGFuZ2luZykg
eworICBzZXR1cCgpOworICBpbnQgaSA9IDA7CisgIGZvciAoOyBpIDwga1Rlc3RTaXplIC0gMTsg
aSsrKSB7CisgICAgVGVzdFVuY2hhbmdpbmcodGVzdGRhdGFbaV0sIGkgKiBpLCBpKTsKKyAgfQor
ICBUZXN0VW5jaGFuZ2luZyh0ZXN0ZGF0YVtpXSwgMCwga0RhdGFTaXplKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9oYXNoL2ludGVybmFsL2hhc2guY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2hhc2gu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGJmNjQwOTZlN2VhYTNiMzQ2ZWQyZjJhMjJkZjJjZDJhOGU3MTU3NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5jYwpAQCAtMCwwICsx
LDIzIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVk
ZSAiYWJzbC9oYXNoL2ludGVybmFsL2hhc2guaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNw
YWNlIGhhc2hfaW50ZXJuYWwgeworCitBQlNMX0NPTlNUX0lOSVQgY29uc3Qgdm9pZCogY29uc3Qg
Q2l0eUhhc2hTdGF0ZTo6a1NlZWQgPSAma1NlZWQ7CisKK30gIC8vIG5hbWVzcGFjZSBoYXNoX2lu
dGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRl
cm5hbC9oYXNoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2hhc2guaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODIx
N2QyZmU3NjAwMDNjYjgzZThhMzE3YTU5MTg1ZTgyYTczMGY3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNoLmgKQEAgLTAsMCArMSw4ODcgQEAKKy8vIENvcHlyaWdo
dCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vIEZpbGU6IGhhc2guaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisjaWZuZGVmIEFC
U0xfSEFTSF9JTlRFUk5BTF9IQVNIX0hfCisjZGVmaW5lIEFCU0xfSEFTSF9JTlRFUk5BTF9IQVNI
X0hfCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8
Y21hdGg+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxm
b3J3YXJkX2xpc3Q+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4K
KyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxtYXA+CisjaW5j
bHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVk
ZSA8dHVwbGU+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNp
bmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuLmgi
CisjaW5jbHVkZSAiYWJzbC9iYXNlL3BvcnQuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9m
aXhlZF9hcnJheS5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorI2luY2x1
ZGUgImFic2wvbnVtZXJpYy9pbnQxMjguaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5n
X3ZpZXcuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJz
bC90eXBlcy92YXJpYW50LmgiCisjaW5jbHVkZSAiYWJzbC91dGlsaXR5L3V0aWxpdHkuaCIKKyNp
bmNsdWRlICJhYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5oIgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgaGFzaF9pbnRlcm5hbCB7CisKKy8vIEhhc2hTdGF0ZUJhc2UKKy8vCisvLyBBIGhh
c2ggc3RhdGUgb2JqZWN0IHJlcHJlc2VudHMgYW4gaW50ZXJtZWRpYXRlIHN0YXRlIGluIHRoZSBj
b21wdXRhdGlvbgorLy8gb2YgYW4gdW5zcGVjaWZpZWQgaGFzaCBhbGdvcml0aG0uIGBIYXNoU3Rh
dGVCYXNlYCBwcm92aWRlcyBhIENSVFAgc3R5bGUKKy8vIGJhc2UgY2xhc3MgZm9yIGhhc2ggc3Rh
dGUgaW1wbGVtZW50YXRpb25zLiBEZXZlbG9wZXJzIGFkZGluZyB0eXBlIHN1cHBvcnQKKy8vIGZv
ciBgYWJzbDo6SGFzaGAgc2hvdWxkIG5vdCByZWx5IG9uIGFueSBwYXJ0cyBvZiB0aGUgc3RhdGUg
b2JqZWN0IG90aGVyIHRoYW4KKy8vIHRoZSBmb2xsb3dpbmcgbWVtYmVyIGZ1bmN0aW9uczoKKy8v
CisvLyAgICogSGFzaFN0YXRlQmFzZTo6Y29tYmluZSgpCisvLyAgICogSGFzaFN0YXRlQmFzZTo6
Y29tYmluZV9jb250aWd1b3VzKCkKKy8vCisvLyBBIGRlcml2ZWQgaGFzaCBzdGF0ZSBjbGFzcyBv
ZiB0eXBlIGBIYCBtdXN0IHByb3ZpZGUgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uCisvLyB3aXRo
IGEgc2lnbmF0dXJlIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzoKKy8vCisvLyAgICBgc3RhdGlj
IEggY29tYmluZV9jb250aWd1b3VzKEggc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXpl
X3QpYC4KKy8vCisvLyBgSGFzaFN0YXRlQmFzZWAgd2lsbCBwcm92aWRlIGEgY29tcGxldGUgaW1w
bGVtZW50YXRpb25zIGZvciBhIGhhc2ggc3RhdGUKKy8vIG9iamVjdCBpbiB0ZXJtcyBvZiB0aGlz
IG1ldGhvZC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8gVXNlIENSVFAgdG8gZGVmaW5l
IHlvdXIgZGVyaXZlZCBjbGFzcy4KKy8vICAgc3RydWN0IE15SGFzaFN0YXRlIDogSGFzaFN0YXRl
QmFzZTxNeUhhc2hTdGF0ZT4geworLy8gICAgICAgc3RhdGljIEggY29tYmluZV9jb250aWd1b3Vz
KEggc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpOworLy8gICAgICAgdXNpbmcg
TXlIYXNoU3RhdGU6Okhhc2hTdGF0ZUJhc2U6OmNvbWJpbmU7CisvLyAgICAgICB1c2luZyBNeUhh
c2hTdGF0ZTo6SGFzaFN0YXRlQmFzZTo6Y29tYmluZV9jb250aWd1b3VzOworLy8gICB9OwordGVt
cGxhdGUgPHR5cGVuYW1lIEg+CitjbGFzcyBIYXNoU3RhdGVCYXNlIHsKKyBwdWJsaWM6CisgIC8v
IEhhc2hTdGF0ZUJhc2U6OmNvbWJpbmUoKQorICAvLworICAvLyBDb21iaW5lcyBhbiBhcmJpdHJh
cnkgbnVtYmVyIG9mIHZhbHVlcyBpbnRvIGEgaGFzaCBzdGF0ZSwgcmV0dXJuaW5nIHRoZQorICAv
LyB1cGRhdGVkIHN0YXRlLgorICAvLworICAvLyBFYWNoIG9mIHRoZSB2YWx1ZSB0eXBlcyBgVGAg
bXVzdCBiZSBzZXBhcmF0ZWx5IGhhc2hhYmxlIGJ5IHRoZSBBYnNlaWwKKyAgLy8gaGFzaGluZyBm
cmFtZXdvcmsuCisgIC8vCisgIC8vIE5PVEU6CisgIC8vCisgIC8vICAgc3RhdGUgPSBIOjpjb21i
aW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMSwgdmFsdWUyLCB2YWx1ZTMpOworICAvLworICAv
LyBpcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgdGhlIHNhbWUgaGFzaCBleHBhbnNpb24gYXM6Cisg
IC8vCisgIC8vICAgc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMSk7
CisgIC8vICAgc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMik7Cisg
IC8vICAgc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMyk7CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBUcz4KKyAgc3RhdGljIEggY29tYmluZShI
IHN0YXRlLCBjb25zdCBUJiB2YWx1ZSwgY29uc3QgVHMmLi4uIHZhbHVlcyk7CisgIHN0YXRpYyBI
IGNvbWJpbmUoSCBzdGF0ZSkgeyByZXR1cm4gc3RhdGU7IH0KKworICAvLyBIYXNoU3RhdGVCYXNl
Ojpjb21iaW5lX2NvbnRpZ3VvdXMoKQorICAvLworICAvLyBDb21iaW5lcyBhIGNvbnRpZ3VvdXMg
YXJyYXkgb2YgYHNpemVgIGVsZW1lbnRzIGludG8gYSBoYXNoIHN0YXRlLCByZXR1cm5pbmcKKyAg
Ly8gdGhlIHVwZGF0ZWQgc3RhdGUuCisgIC8vCisgIC8vIE5PVEU6CisgIC8vCisgIC8vICAgc3Rh
dGUgPSBIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3ZlKHN0YXRlKSwgZGF0YSwgc2l6ZSk7
CisgIC8vCisgIC8vIGlzIE5PVCBndWFyYW50ZWVkIHRvIHByb2R1Y2UgdGhlIHNhbWUgaGFzaCBl
eHBhbnNpb24gYXMgYSBmb3ItbG9vcCAoaXQgbWF5CisgIC8vIHBlcmZvcm0gaW50ZXJuYWwgb3B0
aW1pemF0aW9ucykuICBJZiB5b3UgbmVlZCB0aGlzIGd1YXJhbnRlZSwgdXNlIHRoZQorICAvLyBm
b3ItbG9vcCBpbnN0ZWFkLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIEggY29t
YmluZV9jb250aWd1b3VzKEggc3RhdGUsIGNvbnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKTsKK307
CisKKy8vIGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkCisvLworLy8gYGlzX3VuaXF1ZWx5X3JlcHJl
c2VudGVkPFQ+YCBpcyBhIHRyYWl0IGNsYXNzIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgYFRgCisv
LyBpcyB1bmlxdWVseSByZXByZXNlbnRlZC4KKy8vCisvLyBBIHR5cGUgaXMgInVuaXF1ZWx5IHJl
cHJlc2VudGVkIiBpZiB0d28gZXF1YWwgdmFsdWVzIG9mIHRoYXQgdHlwZSBhcmUKKy8vIGd1YXJh
bnRlZWQgdG8gaGF2ZSB0aGUgc2FtZSBieXRlcyBpbiB0aGVpciB1bmRlcmx5aW5nIHN0b3JhZ2Uu
IEluIG90aGVyCisvLyB3b3JkcywgaWYgYGEgPT0gYmAsIHRoZW4gYG1lbWNtcCgmYSwgJmIsIHNp
emVvZihUKSlgIGlzIGd1YXJhbnRlZWQgdG8gYmUKKy8vIHplcm8uIFRoaXMgcHJvcGVydHkgY2Fu
bm90IGJlIGRldGVjdGVkIGF1dG9tYXRpY2FsbHksIHNvIHRoaXMgdHJhaXQgaXMgZmFsc2UKKy8v
IGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUgc3BlY2lhbGl6ZWQgYnkgdHlwZXMgdGhhdCB3aXNoIHRv
IGFzc2VydCB0aGF0IHRoZXkgYXJlCisvLyB1bmlxdWVseSByZXByZXNlbnRlZC4gVGhpcyBtYWtl
cyB0aGVtIGVsaWdpYmxlIGZvciBjZXJ0YWluIG9wdGltaXphdGlvbnMuCisvLworLy8gSWYgeW91
IGhhdmUgYW55IGRvdWJ0IHdoYXRzb2V2ZXIsIGRvIG5vdCBzcGVjaWFsaXplIHRoaXMgdGVtcGxh
dGUuCisvLyBUaGUgZGVmYXVsdCBpcyBjb21wbGV0ZWx5IHNhZmUsIGFuZCBtZXJlbHkgZGlzYWJs
ZXMgc29tZSBvcHRpbWl6YXRpb25zCisvLyB0aGF0IHdpbGwgbm90IG1hdHRlciBmb3IgbW9zdCB0
eXBlcy4gU3BlY2lhbGl6aW5nIHRoaXMgdGVtcGxhdGUsCisvLyBvbiB0aGUgb3RoZXIgaGFuZCwg
Y2FuIGJlIHZlcnkgaGF6YXJkb3VzLgorLy8KKy8vIFRvIGJlIHVuaXF1ZWx5IHJlcHJlc2VudGVk
LCBhIHR5cGUgbXVzdCBub3QgaGF2ZSBtdWx0aXBsZSB3YXlzIG9mCisvLyByZXByZXNlbnRpbmcg
dGhlIHNhbWUgdmFsdWU7IGZvciBleGFtcGxlLCBmbG9hdCBhbmQgZG91YmxlIGFyZSBub3QKKy8v
IHVuaXF1ZWx5IHJlcHJlc2VudGVkLCBiZWNhdXNlIHRoZXkgaGF2ZSBkaXN0aW5jdCByZXByZXNl
bnRhdGlvbnMgZm9yCisvLyArMCBhbmQgLTAuIEZ1cnRoZXJtb3JlLCB0aGUgdHlwZSdzIGJ5dGUg
cmVwcmVzZW50YXRpb24gbXVzdCBjb25zaXN0CisvLyBzb2xlbHkgb2YgdXNlci1jb250cm9sbGVk
IGRhdGEsIHdpdGggbm8gcGFkZGluZyBiaXRzIGFuZCBubyBjb21waWxlci0KKy8vIGNvbnRyb2xs
ZWQgZGF0YSBzdWNoIGFzIHZwdHJzIG9yIHNhbml0aXplciBtZXRhZGF0YS4gVGhpcyBpcyB1c3Vh
bGx5CisvLyB2ZXJ5IGRpZmZpY3VsdCB0byBndWFyYW50ZWUsIGJlY2F1c2UgaW4gbW9zdCBjYXNl
cyB0aGUgY29tcGlsZXIgY2FuCisvLyBpbnNlcnQgZGF0YSBhbmQgcGFkZGluZyBiaXRzIGF0IGl0
cyBvd24gZGlzY3JldGlvbi4KKy8vCisvLyBJZiB5b3Ugc3BlY2lhbGl6ZSB0aGlzIHRlbXBsYXRl
IGZvciBhIHR5cGUgYFRgLCB5b3UgbXVzdCBkbyBzbyBpbiB0aGUgZmlsZQorLy8gdGhhdCBkZWZp
bmVzIHRoYXQgdHlwZSAob3IgaW4gdGhpcyBmaWxlKS4gSWYgeW91IGRlZmluZSB0aGF0IHNwZWNp
YWxpemF0aW9uCisvLyBhbnl3aGVyZSBlbHNlLCBgaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8VD5g
IGNvdWxkIGhhdmUgZGlmZmVyZW50IG1lYW5pbmdzCisvLyBpbiBkaWZmZXJlbnQgcGxhY2VzLgor
Ly8KKy8vIFRoZSBFbmFibGUgcGFyYW1ldGVyIGlzIG1lYW5pbmdsZXNzOyBpdCBpcyBwcm92aWRl
ZCBhcyBhIGNvbnZlbmllbmNlLAorLy8gdG8gc3VwcG9ydCBjZXJ0YWluIFNGSU5BRSB0ZWNobmlx
dWVzIHdoZW4gZGVmaW5pbmcgc3BlY2lhbGl6YXRpb25zLgordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CitzdHJ1Y3QgaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQg
OiBzdGQ6OmZhbHNlX3R5cGUge307CisKKy8vIGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkPHVuc2ln
bmVkIGNoYXI+CisvLworLy8gdW5zaWduZWQgY2hhciBpcyBhIHN5bm9ueW0gZm9yICJieXRlIiwg
c28gaXQgaXMgZ3VhcmFudGVlZCB0byBiZQorLy8gdW5pcXVlbHkgcmVwcmVzZW50ZWQuCit0ZW1w
bGF0ZSA8Pgorc3RydWN0IGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkPHVuc2lnbmVkIGNoYXI+IDog
c3RkOjp0cnVlX3R5cGUge307CisKKy8vIGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkIGZvciBub24t
c3RhbmRhcmQgaW50ZWdyYWwgdHlwZXMKKy8vCisvLyBJbnRlZ3JhbCB0eXBlcyBvdGhlciB0aGFu
IGJvb2wgc2hvdWxkIGJlIHVuaXF1ZWx5IHJlcHJlc2VudGVkIG9uIGFueQorLy8gcGxhdGZvcm0g
dGhhdCB0aGlzIHdpbGwgcGxhdXNpYmx5IGJlIHBvcnRlZCB0by4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBJbnRlZ3JhbD4KK3N0cnVjdCBpc191bmlxdWVseV9yZXByZXNlbnRlZDwKKyAgICBJbnRlZ3Jh
bCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxJbnRlZ3JhbD46OnZh
bHVlPjo6dHlwZT4KKyAgICA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCisvLyBpc191bmlxdWVseV9y
ZXByZXNlbnRlZDxib29sPgorLy8KKy8vCit0ZW1wbGF0ZSA8Pgorc3RydWN0IGlzX3VuaXF1ZWx5
X3JlcHJlc2VudGVkPGJvb2w+IDogc3RkOjpmYWxzZV90eXBlIHt9OworCisvLyBoYXNoX2J5dGVz
KCkKKy8vCisvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNvbWJpbmVzIGBoYXNoX3N0YXRl
YCB3aXRoIHRoZSBieXRlIHJlcHJlc2VudGF0aW9uCisvLyBvZiBgdmFsdWVgLgordGVtcGxhdGUg
PHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+CitIIGhhc2hfYnl0ZXMoSCBoYXNoX3N0YXRlLCBjb25z
dCBUJiB2YWx1ZSkgeworICBjb25zdCB1bnNpZ25lZCBjaGFyKiBzdGFydCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KCZ2YWx1ZSk7CisgIHJldHVybiBIOjpjb21iaW5l
X2NvbnRpZ3VvdXMoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBzdGFydCwgc2l6ZW9mKHZhbHVlKSk7
Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsSGFzaFZhbHVlIGZvciBCYXNp
YyBUeXBlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gTm90ZTogRGVmYXVsdCBgQWJz
bEhhc2hWYWx1ZWAgaW1wbGVtZW50YXRpb25zIGxpdmUgaW4gYGhhc2hfaW50ZXJuYWxgLiBUaGlz
CisvLyBhbGxvd3MgdXMgdG8gYmxvY2sgbGV4aWNhbCBzY29wZSBsb29rdXAgd2hlbiBkb2luZyBh
biB1bnF1YWxpZmllZCBjYWxsIHRvCisvLyBgQWJzbEhhc2hWYWx1ZWAgYmVsb3cuIFVzZXItZGVm
aW5lZCBpbXBsZW1lbnRhdGlvbnMgb2YgYEFic2xIYXNoVmFsdWVgIGNhbgorLy8gb25seSBiZSBm
b3VuZCB2aWEgQURMLgorCisvLyBBYnNsSGFzaFZhbHVlKCkgZm9yIGhhc2hpbmcgYm9vbCB2YWx1
ZXMKKy8vCisvLyBXZSB1c2UgU0ZJTkFFIHRvIGVuc3VyZSB0aGF0IHRoaXMgb3ZlcmxvYWQgb25s
eSBhY2NlcHRzIGJvb2wsIG5vdCB0eXBlcyB0aGF0CisvLyBhcmUgY29udmVydGlibGUgdG8gYm9v
bC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBCPgordHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19zYW1lPEIsIGJvb2w+Ojp2YWx1ZSwgSD46OnR5cGUgQWJzbEhhc2hWYWx1
ZSgKKyAgICBIIGhhc2hfc3RhdGUsIEIgdmFsdWUpIHsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3Rk
Ojptb3ZlKGhhc2hfc3RhdGUpLAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPih2YWx1ZSA/IDEgOiAwKSk7Cit9CisKKy8vIEFic2xIYXNoVmFsdWUoKSBmb3Ig
aGFzaGluZyBlbnVtIHZhbHVlcwordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIEVudW0+
Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2VudW08RW51bT46OnZhbHVlLCBIPjo6
dHlwZSBBYnNsSGFzaFZhbHVlKAorICAgIEggaGFzaF9zdGF0ZSwgRW51bSBlKSB7CisgIC8vIElu
IHByYWN0aWNlLCB3ZSBjb3VsZCBhbG1vc3QgY2VydGFpbmx5IGp1c3QgaW52b2tlIGhhc2hfYnl0
ZXMgZGlyZWN0bHksCisgIC8vIGJ1dCBpdCdzIHBvc3NpYmxlIHRoYXQgYSBzYW5pdGl6ZXIgbWln
aHQgb25lIGRheSB3YW50IHRvCisgIC8vIHN0b3JlIGRhdGEgaW4gdGhlIHVudXNlZCBiaXRzIG9m
IGFuIGVudW0uIFRvIGF2b2lkIHRoYXQgcmlzaywgd2UKKyAgLy8gY29udmVydCB0byB0aGUgdW5k
ZXJseWluZyB0eXBlIGJlZm9yZSBoYXNoaW5nLiBIb3BlZnVsbHkgdGhpcyB3aWxsIGdldAorICAv
LyBvcHRpbWl6ZWQgYXdheTsgaWYgbm90LCB3ZSBjYW4gcmVvcGVuIGRpc2N1c3Npb24gd2l0aCBj
LXRvb2xjaGFpbi10ZWFtLgorICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0
ZSksCisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJs
eWluZ190eXBlPEVudW0+Ojp0eXBlPihlKSk7Cit9CisvLyBBYnNsSGFzaFZhbHVlKCkgZm9yIGhh
c2hpbmcgZmxvYXRpbmctcG9pbnQgdmFsdWVzCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5h
bWUgRmxvYXQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50
PEZsb2F0Pjo6dmFsdWUsIEg+Ojp0eXBlCitBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgRmxv
YXQgdmFsdWUpIHsKKyAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoc3RkOjptb3Zl
KGhhc2hfc3RhdGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9
PSAwID8gMCA6IHZhbHVlKTsKK30KKworLy8gTG9uZyBkb3VibGUgaGFzIHRoZSBwcm9wZXJ0eSB0
aGF0IGl0IG1pZ2h0IGhhdmUgZXh0cmEgdW51c2VkIGJ5dGVzIGluIGl0LgorLy8gRm9yIGV4YW1w
bGUsIGluIHg4NiBzaXplb2YobG9uZyBkb3VibGUpPT0xNiBidXQgaXQgb25seSByZWFsbHkgdXNl
cyA4MC1iaXRzCisvLyBvZiBpdC4gVGhpcyBtZWFucyB3ZSBjYW4ndCB1c2UgaGFzaF9ieXRlcyBv
biBhIGxvbmcgZG91YmxlIGFuZCBoYXZlIHRvCisvLyBjb252ZXJ0IGl0IHRvIHNvbWV0aGluZyBl
bHNlIGZpcnN0LgordGVtcGxhdGUgPHR5cGVuYW1lIEg+CitIIEFic2xIYXNoVmFsdWUoSCBoYXNo
X3N0YXRlLCBsb25nIGRvdWJsZSB2YWx1ZSkgeworICBjb25zdCBpbnQgY2F0ZWdvcnkgPSBzdGQ6
OmZwY2xhc3NpZnkodmFsdWUpOworICBzd2l0Y2ggKGNhdGVnb3J5KSB7CisgICAgY2FzZSBGUF9J
TkZJTklURToKKyAgICAgIC8vIEFkZCB0aGUgc2lnbiBiaXQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3
ZWVuICtJbmYgYW5kIC1JbmYKKyAgICAgIGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92
ZShoYXNoX3N0YXRlKSwgc3RkOjpzaWduYml0KHZhbHVlKSk7CisgICAgICBicmVhazsKKworICAg
IGNhc2UgRlBfTkFOOgorICAgIGNhc2UgRlBfWkVSTzoKKyAgICBkZWZhdWx0OgorICAgICAgLy8g
Q2F0ZWdvcnkgaXMgZW5vdWdoIGZvciB0aGVzZS4KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBG
UF9OT1JNQUw6CisgICAgY2FzZSBGUF9TVUJOT1JNQUw6CisgICAgICAvLyBXZSBjYW4ndCBjb252
ZXJ0IGB2YWx1ZWAgZGlyZWN0bHkgdG8gZG91YmxlIGJlY2F1c2UgdGhpcyB3b3VsZCBoYXZlCisg
ICAgICAvLyB1bmRlZmluZWQgYmVoYXZpb3IgaWYgdGhlIHZhbHVlIGlzIG91dCBvZiByYW5nZS4K
KyAgICAgIC8vIHN0ZDo6ZnJleHAgZ2l2ZXMgdXMgYSB2YWx1ZSBpbiB0aGUgcmFuZ2UgKC0xLCAt
LjVdIG9yIFsuNSwgMSkgdGhhdCBpcworICAgICAgLy8gZ3VhcmFudGVlZCB0byBiZSBpbiByYW5n
ZSBmb3IgYGRvdWJsZWAuIFRoZSB0cnVuY2F0aW9uIGlzCisgICAgICAvLyBpbXBsZW1lbnRhdGlv
biBkZWZpbmVkLCBidXQgdGhhdCB3b3JrcyBhcyBsb25nIGFzIGl0IGlzIGRldGVybWluaXN0aWMu
CisgICAgICBpbnQgZXhwOworICAgICAgYXV0byBtYW50aXNzYSA9IHN0YXRpY19jYXN0PGRvdWJs
ZT4oc3RkOjpmcmV4cCh2YWx1ZSwgJmV4cCkpOworICAgICAgaGFzaF9zdGF0ZSA9IEg6OmNvbWJp
bmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBtYW50aXNzYSwgZXhwKTsKKyAgfQorCisgIHJldHVy
biBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgY2F0ZWdvcnkpOworfQorCisvLyBB
YnNsSGFzaFZhbHVlKCkgZm9yIGhhc2hpbmcgcG9pbnRlcnMKK3RlbXBsYXRlIDx0eXBlbmFtZSBI
LCB0eXBlbmFtZSBUPgorSCBBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgVCogcHRyKSB7Cisg
IHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNoX2J5dGVzKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwg
cHRyKTsKK30KKworLy8gQWJzbEhhc2hWYWx1ZSgpIGZvciBoYXNoaW5nIG51bGxwdHJfdAordGVt
cGxhdGUgPHR5cGVuYW1lIEg+CitIIEFic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBzdGQ6Om51
bGxwdHJfdCkgeworICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHN0
YXRpY19jYXN0PHZvaWQqPihudWxscHRyKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyBBYnNsSGFzaFZhbHVlIGZvciBDb21wb3NpdGUgVHlwZXMKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKy8vIGlzX2hhc2hhYmxlKCkKKy8vCisvLyBUcmFpdCBjbGFzcyB3aGljaCByZXR1
cm5zIHRydWUgaWYgVCBpcyBoYXNoYWJsZSBieSB0aGUgYWJzbDo6SGFzaCBmcmFtZXdvcmsuCisv
LyBVc2VkIGZvciB0aGUgQWJzbEhhc2hWYWx1ZSBpbXBsZW1lbnRhdGlvbnMgZm9yIGNvbXBvc2l0
ZSB0eXBlcyBiZWxvdy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX2hhc2hhYmxl
OworCisvLyBBYnNsSGFzaFZhbHVlKCkgZm9yIGhhc2hpbmcgcGFpcnMKK3RlbXBsYXRlIDx0eXBl
bmFtZSBILCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
Zjxpc19oYXNoYWJsZTxUMT46OnZhbHVlICYmIGlzX2hhc2hhYmxlPFQyPjo6dmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBIPjo6dHlwZQorQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUs
IGNvbnN0IHN0ZDo6cGFpcjxUMSwgVDI+JiBwKSB7CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6
bW92ZShoYXNoX3N0YXRlKSwgcC5maXJzdCwgcC5zZWNvbmQpOworfQorCisvLyBoYXNoX3R1cGxl
KCkKKy8vCisvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGhhc2hpbmcgYSB0dXBsZS4gVGhlIHRoaXJk
IGFyZ3VtZW50IHNob3VsZAorLy8gYmUgYW4gaW5kZXhfc2VxdWVuY2UgcnVubmluZyBmcm9tIDAg
dG8gdHVwbGVfc2l6ZTxUdXBsZT4gLSAxLgordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1l
IFR1cGxlLCBzaXplX3QuLi4gSXM+CitIIGhhc2hfdHVwbGUoSCBoYXNoX3N0YXRlLCBjb25zdCBU
dXBsZSYgdCwgYWJzbDo6aW5kZXhfc2VxdWVuY2U8SXMuLi4+KSB7CisgIHJldHVybiBIOjpjb21i
aW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgc3RkOjpnZXQ8SXM+KHQpLi4uKTsKK30KKworLy8g
QWJzbEhhc2hWYWx1ZSBmb3IgaGFzaGluZyB0dXBsZXMKK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0
eXBlbmFtZS4uLiBUcz4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorLy8gVGhpcyBTRklOQUUgZ2V0
cyBNU1ZDIGNvbmZ1c2VkIHVuZGVyIHNvbWUgY29uZGl0aW9ucy4gTGV0J3MganVzdCBkaXNhYmxl
IGl0CisvLyBmb3Igbm93LgorSAorI2Vsc2UgIC8vIF9NU0NfVkVSCit0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxhYnNsOjpjb25qdW5jdGlvbjxpc19oYXNoYWJsZTxUcz4uLi4+Ojp2YWx1ZSwgSD46
OnR5cGUKKyNlbmRpZiAgLy8gX01TQ19WRVIKK0Fic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBj
b25zdCBzdGQ6OnR1cGxlPFRzLi4uPiYgdCkgeworICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6aGFz
aF90dXBsZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c2l6ZW9mLi4uKFRzKT4oKSk7
Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsSGFzaFZhbHVlIGZvciBQb2lu
dGVycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFz
aGluZyB1bmlxdWVfcHRyCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVCwgdHlwZW5h
bWUgRD4KK0ggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxULCBEPiYgcHRyKSB7CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRl
KSwgcHRyLmdldCgpKTsKK30KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFzaGluZyBzaGFyZWRf
cHRyCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KK0ggQWJzbEhhc2hWYWx1ZShI
IGhhc2hfc3RhdGUsIGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxUPiYgcHRyKSB7CisgIHJldHVybiBI
Ojpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgcHRyLmdldCgpKTsKK30KKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFic2xIYXNoVmFsdWUgZm9yIFN0cmluZy1MaWtlIFR5cGVz
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5n
IHN0cmluZ3MKKy8vCisvLyBBbGwgdGhlIHN0cmluZy1saWtlIHR5cGVzIHN1cHBvcnRlZCBoZXJl
IHByb3ZpZGUgdGhlIHNhbWUgaGFzaCBleHBhbnNpb24gZm9yCisvLyB0aGUgc2FtZSBjaGFyYWN0
ZXIgc2VxdWVuY2UuIFRoZXNlIHR5cGVzIGFyZToKKy8vCisvLyAgLSBgc3RkOjpzdHJpbmdgIChh
bmQgc3RkOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgQT4gZm9y
CisvLyAgICAgIGFueSBhbGxvY2F0b3IgQSkKKy8vICAtIGBhYnNsOjpzdHJpbmdfdmlld2AgYW5k
IGBzdGQ6OnN0cmluZ192aWV3YAorLy8KKy8vIEZvciBzaW1wbGljaXR5LCB3ZSBjdXJyZW50bHkg
c3VwcG9ydCBvbmx5IGBjaGFyYCBzdHJpbmdzLiBUaGlzIHN1cHBvcnQgbWF5CisvLyBiZSBicm9h
ZGVuZWQsIGlmIG5lY2Vzc2FyeSwgYnV0IHdpdGggc29tZSBjYXV0aW9uIC0gdGhpcyBvdmVybG9h
ZCB3b3VsZAorLy8gbWlzYmVoYXZlIGluIGNhc2VzIHdoZXJlIHRoZSB0cmFpdHMnIGBlcSgpYCBt
ZW1iZXIgaXNuJ3QgZXF1aXZhbGVudCB0byBgPT1gCisvLyBvbiB0aGUgdW5kZXJseWluZyBjaGFy
YWN0ZXIgdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBIPgorSCBBYnNsSGFzaFZhbHVlKEggaGFz
aF9zdGF0ZSwgYWJzbDo6c3RyaW5nX3ZpZXcgc3RyKSB7CisgIHJldHVybiBIOjpjb21iaW5lKAor
ICAgICAgSDo6Y29tYmluZV9jb250aWd1b3VzKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgc3RyLmRh
dGEoKSwgc3RyLnNpemUoKSksCisgICAgICBzdHIuc2l6ZSgpKTsKK30KKworLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vIEFic2xIYXNoVmFsdWUgZm9yIFNlcXVlbmNlIENvbnRhaW5lcnMKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgc3Rk
OjphcnJheQordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQsIHNpemVfdCBOPgordHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8aXNfaGFzaGFibGU8VD46OnZhbHVlLCBIPjo6dHlwZSBBYnNs
SGFzaFZhbHVlKAorICAgIEggaGFzaF9zdGF0ZSwgY29uc3Qgc3RkOjphcnJheTxULCBOPiYgYXJy
YXkpIHsKKyAgcmV0dXJuIEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6Om1vdmUoaGFzaF9zdGF0
ZSksIGFycmF5LmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5z
aXplKCkpOworfQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6ZGVxdWUKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBbGxvY2F0b3I+Cit0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxpc19oYXNoYWJsZTxUPjo6dmFsdWUsIEg+Ojp0eXBlIEFic2xI
YXNoVmFsdWUoCisgICAgSCBoYXNoX3N0YXRlLCBjb25zdCBzdGQ6OmRlcXVlPFQsIEFsbG9jYXRv
cj4mIGRlcXVlKSB7CisgIC8vIFRPRE8oZ3JvbWVyKTogaW52ZXN0aWdhdGUgYSBtb3JlIGVmZmlj
aWVudCBpbXBsZW1lbnRhdGlvbiB0YWtpbmcKKyAgLy8gYWR2YW50YWdlIG9mIHRoZSBjaHVuayBz
dHJ1Y3R1cmUuCisgIGZvciAoY29uc3QgYXV0byYgdCA6IGRlcXVlKSB7CisgICAgaGFzaF9zdGF0
ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB0KTsKKyAgfQorICByZXR1cm4g
SDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIGRlcXVlLnNpemUoKSk7Cit9CisKKy8v
IEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgc3RkOjpmb3J3YXJkX2xpc3QKK3RlbXBsYXRlIDx0
eXBlbmFtZSBILCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBbGxvY2F0b3I+Cit0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxpc19oYXNoYWJsZTxUPjo6dmFsdWUsIEg+Ojp0eXBlIEFic2xIYXNoVmFsdWUo
CisgICAgSCBoYXNoX3N0YXRlLCBjb25zdCBzdGQ6OmZvcndhcmRfbGlzdDxULCBBbGxvY2F0b3I+
JiBsaXN0KSB7CisgIHNpemVfdCBzaXplID0gMDsKKyAgZm9yIChjb25zdCBUJiB0IDogbGlzdCkg
eworICAgIGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgdCk7
CisgICAgKytzaXplOworICB9CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0
YXRlKSwgc2l6ZSk7Cit9CisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgc3RkOjpsaXN0
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQWxsb2NhdG9yPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8aXNfaGFzaGFibGU8VD46OnZhbHVlLCBIPjo6dHlwZSBB
YnNsSGFzaFZhbHVlKAorICAgIEggaGFzaF9zdGF0ZSwgY29uc3Qgc3RkOjpsaXN0PFQsIEFsbG9j
YXRvcj4mIGxpc3QpIHsKKyAgZm9yIChjb25zdCBhdXRvJiB0IDogbGlzdCkgeworICAgIGhhc2hf
c3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgdCk7CisgIH0KKyAgcmV0
dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBsaXN0LnNpemUoKSk7Cit9CisK
Ky8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgc3RkOjp2ZWN0b3IKKy8vCisvLyBEbyBub3Qg
dXNlIHRoaXMgZm9yIHZlY3Rvcjxib29sPi4gSXQgZG9lcyBub3QgaGF2ZSBhIC5kYXRhKCksIGFu
ZCBhIGZhbGxiYWNrCisvLyBmb3Igc3RkOjpoYXNoPD4gaXMgbW9zdCBsaWtlbHkgZmFzdGVyLgor
dGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFsbG9jYXRvcj4KK3R5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPGlzX2hhc2hhYmxlPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19z
YW1lPFQsIGJvb2w+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEg+Ojp0eXBlCitB
YnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgY29uc3Qgc3RkOjp2ZWN0b3I8VCwgQWxsb2NhdG9y
PiYgdmVjdG9yKSB7CisgIHJldHVybiBIOjpjb21iaW5lKEg6OmNvbWJpbmVfY29udGlndW91cyhz
dGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHZlY3Rvci5kYXRhKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3Iuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAg
ICAgdmVjdG9yLnNpemUoKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNs
SGFzaFZhbHVlIGZvciBPcmRlcmVkIEFzc29jaWF0aXZlIENvbnRhaW5lcnMKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgc3RkOjptYXAKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lIENv
bXBhcmUsCisgICAgICAgICAgdHlwZW5hbWUgQWxsb2NhdG9yPgordHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8aXNfaGFzaGFibGU8S2V5Pjo6dmFsdWUgJiYgaXNfaGFzaGFibGU8VD46OnZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgSD46OnR5cGUKK0Fic2xIYXNoVmFsdWUoSCBoYXNoX3N0
YXRlLCBjb25zdCBzdGQ6Om1hcDxLZXksIFQsIENvbXBhcmUsIEFsbG9jYXRvcj4mIG1hcCkgewor
ICBmb3IgKGNvbnN0IGF1dG8mIHQgOiBtYXApIHsKKyAgICBoYXNoX3N0YXRlID0gSDo6Y29tYmlu
ZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHQpOworICB9CisgIHJldHVybiBIOjpjb21iaW5lKHN0
ZDo6bW92ZShoYXNoX3N0YXRlKSwgbWFwLnNpemUoKSk7Cit9CisKKy8vIEFic2xIYXNoVmFsdWUg
Zm9yIGhhc2hpbmcgc3RkOjptdWx0aW1hcAordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29tcGFyZSwKKyAgICAgICAgICB0eXBlbmFtZSBB
bGxvY2F0b3I+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxpc19oYXNoYWJsZTxLZXk+Ojp2YWx1
ZSAmJiBpc19oYXNoYWJsZTxUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBIPjo6
dHlwZQorQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsCisgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6bXVsdGltYXA8S2V5LCBULCBDb21wYXJlLCBBbGxvY2F0b3I+JiBtYXApIHsKKyAgZm9yIChj
b25zdCBhdXRvJiB0IDogbWFwKSB7CisgICAgaGFzaF9zdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjpt
b3ZlKGhhc2hfc3RhdGUpLCB0KTsKKyAgfQorICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUo
aGFzaF9zdGF0ZSksIG1hcC5zaXplKCkpOworfQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNo
aW5nIHN0ZDo6c2V0Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBDb21wYXJlLCB0eXBlbmFtZSBBbGxvY2F0b3I+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxp
c19oYXNoYWJsZTxLZXk+Ojp2YWx1ZSwgSD46OnR5cGUgQWJzbEhhc2hWYWx1ZSgKKyAgICBIIGhh
c2hfc3RhdGUsIGNvbnN0IHN0ZDo6c2V0PEtleSwgQ29tcGFyZSwgQWxsb2NhdG9yPiYgc2V0KSB7
CisgIGZvciAoY29uc3QgYXV0byYgdCA6IHNldCkgeworICAgIGhhc2hfc3RhdGUgPSBIOjpjb21i
aW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgdCk7CisgIH0KKyAgcmV0dXJuIEg6OmNvbWJpbmUo
c3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBzZXQuc2l6ZSgpKTsKK30KKworLy8gQWJzbEhhc2hWYWx1
ZSBmb3IgaGFzaGluZyBzdGQ6Om11bHRpc2V0Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBDb21wYXJlLCB0eXBlbmFtZSBBbGxvY2F0b3I+Cit0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxpc19oYXNoYWJsZTxLZXk+Ojp2YWx1ZSwgSD46OnR5cGUgQWJzbEhhc2hW
YWx1ZSgKKyAgICBIIGhhc2hfc3RhdGUsIGNvbnN0IHN0ZDo6bXVsdGlzZXQ8S2V5LCBDb21wYXJl
LCBBbGxvY2F0b3I+JiBzZXQpIHsKKyAgZm9yIChjb25zdCBhdXRvJiB0IDogc2V0KSB7CisgICAg
aGFzaF9zdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB0KTsKKyAgfQor
ICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHNldC5zaXplKCkpOwor
fQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWJzbEhhc2hWYWx1ZSBmb3IgV3JhcHBl
ciBUeXBlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3Ig
aGFzaGluZyBhYnNsOjpvcHRpb25hbAordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+
Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxpc19oYXNoYWJsZTxUPjo6dmFsdWUsIEg+Ojp0eXBl
IEFic2xIYXNoVmFsdWUoCisgICAgSCBoYXNoX3N0YXRlLCBjb25zdCBhYnNsOjpvcHRpb25hbDxU
PiYgb3B0KSB7CisgIGlmIChvcHQpIGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZSho
YXNoX3N0YXRlKSwgKm9wdCk7CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0
YXRlKSwgb3B0Lmhhc192YWx1ZSgpKTsKK30KKworLy8gVmFyaWFudFZpc2l0b3IKK3RlbXBsYXRl
IDx0eXBlbmFtZSBIPgorc3RydWN0IFZhcmlhbnRWaXNpdG9yIHsKKyAgSCYmIGhhc2hfc3RhdGU7
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBIIG9wZXJhdG9yKCkoY29uc3QgVCYgdCkgY29u
c3QgeworICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgdCk7Cisg
IH0KK307CisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgYWJzbDo6dmFyaWFudAordGVt
cGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lLi4uIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
Zjxjb25qdW5jdGlvbjxpc19oYXNoYWJsZTxUPi4uLj46OnZhbHVlLCBIPjo6dHlwZQorQWJzbEhh
c2hWYWx1ZShIIGhhc2hfc3RhdGUsIGNvbnN0IGFic2w6OnZhcmlhbnQ8VC4uLj4mIHYpIHsKKyAg
aWYgKCF2LnZhbHVlbGVzc19ieV9leGNlcHRpb24oKSkgeworICAgIGhhc2hfc3RhdGUgPSBhYnNs
Ojp2aXNpdChWYXJpYW50VmlzaXRvcjxIPntzdGQ6Om1vdmUoaGFzaF9zdGF0ZSl9LCB2KTsKKyAg
fQorICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHYuaW5kZXgoKSk7
Cit9CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBoYXNoX3JhbmdlX29yX2J5dGVzKCkK
Ky8vCisvLyBNaXhlcyBhbGwgdmFsdWVzIGluIHRoZSByYW5nZSBbZGF0YSwgZGF0YStzaXplKSBp
bnRvIHRoZSBoYXNoIHN0YXRlLgorLy8gVGhpcyBvdmVybG9hZCBhY2NlcHRzIG9ubHkgdW5pcXVl
bHktcmVwcmVzZW50ZWQgdHlwZXMsIGFuZCBoYXNoZXMgdGhlbSBieQorLy8gaGFzaGluZyB0aGUg
ZW50aXJlIHJhbmdlIG9mIGJ5dGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+
Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxpc191bmlxdWVseV9yZXByZXNlbnRlZDxUPjo6dmFs
dWUsIEg+Ojp0eXBlCitoYXNoX3JhbmdlX29yX2J5dGVzKEggaGFzaF9zdGF0ZSwgY29uc3QgVCog
ZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgY29uc3QgYXV0byogYnl0ZXMgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihkYXRhKTsKKyAgcmV0dXJuIEg6OmNvbWJpbmVfY29u
dGlndW91cyhzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIGJ5dGVzLCBzaXplb2YoVCkgKiBzaXplKTsK
K30KKworLy8gaGFzaF9yYW5nZV9vcl9ieXRlcygpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlw
ZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFpc191bmlxdWVseV9yZXByZXNlbnRl
ZDxUPjo6dmFsdWUsIEg+Ojp0eXBlCitoYXNoX3JhbmdlX29yX2J5dGVzKEggaGFzaF9zdGF0ZSwg
Y29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgZm9yIChjb25zdCBhdXRvIGVuZCA9IGRh
dGEgKyBzaXplOyBkYXRhIDwgZW5kOyArK2RhdGEpIHsKKyAgICBoYXNoX3N0YXRlID0gSDo6Y29t
YmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksICpkYXRhKTsKKyAgfQorICByZXR1cm4gaGFzaF9z
dGF0ZTsKK30KKworLy8gSW52b2tlSGFzaFRhZworLy8KKy8vIEludm9rZUhhc2goSCwgY29uc3Qg
VCYpIGludm9rZXMgdGhlIGFwcHJvcHJpYXRlIGhhc2ggaW1wbGVtZW50YXRpb24gZm9yIGEKKy8v
IGhhc2hlciBvZiB0eXBlIGBIYCBhbmQgYSB2YWx1ZSBvZiB0eXBlIGBUYC4gSWYgYFRgIGlzIG5v
dCBoYXNoYWJsZSwgdGhlcmUKKy8vIHdpbGwgYmUgbm8gbWF0Y2hpbmcgb3ZlcmxvYWQgb2YgSW52
b2tlSGFzaCgpLgorLy8gTm90ZTogU29tZSBwbGF0Zm9ybXMgKGVnIE1TVkMpIGRvIG5vdCBzdXBw
b3J0IHRoZSBkZXRlY3QgaWRpb20gb24KKy8vIHN0ZDo6aGFzaC4gSW4gdGhvc2UgcGxhdGZvcm1z
IHRoZSBsYXN0IGZhbGxiYWNrIHdpbGwgYmUgc3RkOjpoYXNoIGFuZAorLy8gSW52b2tlSGFzaCgp
IHdpbGwgYWx3YXlzIGhhdmUgYSB2YWxpZCBvdmVybG9hZCBldmVuIGlmIHN0ZDo6aGFzaDxUPiBp
cyBub3QKKy8vIHZhbGlkLgorLy8KKy8vIFdlIHRyeSB0aGUgZm9sbG93aW5nIG9wdGlvbnMgaW4g
b3JkZXI6CisvLyAgICogSWYgaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQsIGhhc2ggYnl0ZXMgZGly
ZWN0bHkuCisvLyAgICogQURMIEFic2xIYXNoVmFsdWUoSCwgY29uc3QgVCYpIGNhbGwuCisvLyAg
ICogc3RkOjpoYXNoPFQ+CisKKy8vIEluIE1TVkMgd2UgY2FuJ3QgcHJvYmUgc3RkOjpoYXNoIG9y
IHN0ZGV4dDo6aGFzaCBiZWNhdXNlIGl0IHRyaWdnZXJzIGEKKy8vIHN0YXRpY19hc3NlcnQgaW5z
dGVhZCBvZiBmYWlsaW5nIHN1YnN0aXR1dGlvbi4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2Rl
ZmluZSBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8gMAorI2Vsc2UgICAvLyBfTVNDX1ZF
UgorI2RlZmluZSBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8gMQorI2VuZGlmICAvLyBf
TVNDX1ZFUgorCisjaWYgZGVmaW5lZChBQlNMX0lOVEVSTkFMX0xFR0FDWV9IQVNIX05BTUVTUEFD
RSkgJiYgXAorICAgIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXworI2RlZmluZSBBQlNM
X0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8gMQorI2Vsc2UKKyNkZWZpbmUgQUJT
TF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfIDAKKyNlbmRpZgorCitlbnVtIGNs
YXNzIEludm9rZUhhc2hUYWcgeworICBrVW5pcXVlbHlSZXByZXNlbnRlZCwKKyAga0hhc2hWYWx1
ZSwKKyNpZiBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8KKyAga0xlZ2Fj
eUhhc2gsCisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNI
XworICBrU3RkSGFzaCwKKyAga05vbmUKK307CisKKy8vIEhhc2hTZWxlY3QKKy8vCisvLyBUeXBl
IHRyYWl0IHRvIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgaGFzaCBpbXBsZW1lbnRhdGlvbiB0byB1
c2UuCisvLyBIYXNoU2VsZWN0PFQ+Ojp2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBJbnZva2VIYXNo
VGFnIHRoYXQgaW5kaWNhdGVzIHRoZSBiZXN0CisvLyBhdmFpbGFibGUgaGFzaGluZyBtZWNoYW5p
c20uCisvLyBTZWUgYE5vdGVgIGFib3ZlIGFib3V0IE1TVkMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3N0cnVjdCBIYXNoU2VsZWN0IHsKKyBwcml2YXRlOgorICBzdHJ1Y3QgU3RhdGUgOiBIYXNo
U3RhdGVCYXNlPFN0YXRlPiB7CisgICAgc3RhdGljIFN0YXRlIGNvbWJpbmVfY29udGlndW91cyhT
dGF0ZSBoYXNoX3N0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCk7CisgICAgdXNpbmcgU3RhdGU6Okhhc2hTdGF0ZUJh
c2U6OmNvbWJpbmVfY29udGlndW91czsKKyAgfTsKKworICAvLyBgUHJvYmU8ViwgVGFnPjo6dmFs
dWVgIGV2YWx1YXRlcyB0byBgVjxUPjo6dmFsdWVgIGlmIGl0IGlzIGEgdmFsaWQKKyAgLy8gZXhw
cmVzc2lvbiwgYW5kIGBmYWxzZWAgb3RoZXJ3aXNlLgorICAvLyBgUHJvYmU8ViwgVGFnPjo6dGFn
YCBhbHdheXMgZXZhbHVhdGVzIHRvIGBUYWdgLgorICB0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVu
YW1lPiBjbGFzcyBWLCBJbnZva2VIYXNoVGFnIFRhZz4KKyAgc3RydWN0IFByb2JlIHsKKyAgIHBy
aXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PFY8VT46OnZhbHVlLCBpbnQ+Ojp0eXBlID0gMD4KKyAgICBzdGF0aWMgc3RkOjp0cnVlX3R5cGUg
VGVzdChpbnQpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBzdGQ6OmZh
bHNlX3R5cGUgVGVzdChjaGFyKTsKKworICAgcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIg
SW52b2tlSGFzaFRhZyBrVGFnID0gVGFnOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1
ZSA9IGRlY2x0eXBlKAorICAgICAgICBUZXN0PGFic2w6OnJlbW92ZV9jb25zdF90PGFic2w6OnJl
bW92ZV9yZWZlcmVuY2VfdDxUPj4+KDApKTo6dmFsdWU7CisgIH07CisKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+CisgIHVzaW5nIFByb2JlVW5pcXVlbHlSZXByZXNlbnRlZCA9IGlzX3VuaXF1ZWx5
X3JlcHJlc2VudGVkPFU+OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICB1c2luZyBQcm9i
ZUhhc2hWYWx1ZSA9CisgICAgICBzdGQ6OmlzX3NhbWU8U3RhdGUsIGRlY2x0eXBlKEFic2xIYXNo
VmFsdWUoc3RkOjpkZWNsdmFsPFN0YXRlPigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCBVJj4oKSkpPjsKKworI2lm
IEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVT4KKyAgdXNpbmcgUHJvYmVMZWdhY3lIYXNoID0KKyAgICAgIHN0ZDo6aXNfY29udmVy
dGlibGU8ZGVjbHR5cGUoQUJTTF9JTlRFUk5BTF9MRUdBQ1lfSEFTSF9OQU1FU1BBQ0U6Omhhc2g8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU+KCkoc3RkOjpkZWNsdmFsPGNv
bnN0IFUmPigpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdD47CisjZW5kaWYg
IC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBVPgorICB1c2luZyBQcm9iZVN0ZEhhc2ggPQorI2lmIEFCU0xfSEFTSF9JTlRF
Uk5BTF9DQU5fUE9JU09OXworICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxkZWNsdHlwZShzdGQ6
Omhhc2g8VT4oKShzdGQ6OmRlY2x2YWw8Y29uc3QgVSY+KCkpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90PjsKKyNlbHNlICAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX0NBTl9QT0lT
T05fCisgICAgICBzdGQ6OnRydWVfdHlwZTsKKyNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFM
X0NBTl9QT0lTT05fCisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHVzaW5nIFByb2JlTm9u
ZSA9IHN0ZDo6dHJ1ZV90eXBlOworCisgcHVibGljOgorICAvLyBQcm9iZSBlYWNoIGltcGxlbWVu
dGF0aW9uIGluIG9yZGVyLgorICAvLyBkaXNqdW5jdGlvbiBwcm92aWRlcyBzaG9ydCBjaXJjdXRp
bmcgd3J0IGluc3RhbnRpYXRpb24uCisgIHN0YXRpYyBjb25zdGV4cHIgSW52b2tlSGFzaFRhZyB2
YWx1ZSA9IGFic2w6OmRpc2p1bmN0aW9uPAorICAgICAgUHJvYmU8UHJvYmVVbmlxdWVseVJlcHJl
c2VudGVkLCBJbnZva2VIYXNoVGFnOjprVW5pcXVlbHlSZXByZXNlbnRlZD4sCisgICAgICBQcm9i
ZTxQcm9iZUhhc2hWYWx1ZSwgSW52b2tlSGFzaFRhZzo6a0hhc2hWYWx1ZT4sCisjaWYgQUJTTF9I
QVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCisgICAgICBQcm9iZTxQcm9iZUxlZ2Fj
eUhhc2gsIEludm9rZUhhc2hUYWc6OmtMZWdhY3lIYXNoPiwKKyNlbmRpZiAgLy8gQUJTTF9IQVNI
X0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCisgICAgICBQcm9iZTxQcm9iZVN0ZEhhc2gs
IEludm9rZUhhc2hUYWc6OmtTdGRIYXNoPiwKKyAgICAgIFByb2JlPFByb2JlTm9uZSwgSW52b2tl
SGFzaFRhZzo6a05vbmU+Pjo6a1RhZzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3Ry
dWN0IGlzX2hhc2hhYmxlIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBIYXNoU2VsZWN0
PFQ+Ojp2YWx1ZSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW52b2tlSGFzaFRhZzo6a05vbmU+IHt9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgSCwgdHlwZW5hbWUgVD4KK2Fic2w6OmVuYWJsZV9pZl90PEhhc2hTZWxlY3Q8VD46OnZhbHVl
ID09IEludm9rZUhhc2hUYWc6OmtVbmlxdWVseVJlcHJlc2VudGVkLAorICAgICAgICAgICAgICAg
ICAgSD4KK0ludm9rZUhhc2goSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUpIHsKKyAgcmV0dXJuIGhh
c2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KK2Fic2w6OmVuYWJsZV9pZl90PEhhc2hT
ZWxlY3Q8VD46OnZhbHVlID09IEludm9rZUhhc2hUYWc6OmtIYXNoVmFsdWUsIEg+CitJbnZva2VI
YXNoKEggc3RhdGUsIGNvbnN0IFQmIHZhbHVlKSB7CisgIHJldHVybiBBYnNsSGFzaFZhbHVlKHN0
ZDo6bW92ZShzdGF0ZSksIHZhbHVlKTsKK30KKworI2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQ
T1JUX0xFR0FDWV9IQVNIXwordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+CithYnNs
OjplbmFibGVfaWZfdDxIYXNoU2VsZWN0PFQ+Ojp2YWx1ZSA9PSBJbnZva2VIYXNoVGFnOjprTGVn
YWN5SGFzaCwgSD4KK0ludm9rZUhhc2goSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUpIHsKKyAgcmV0
dXJuIGhhc2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoCisgICAgICBzdGQ6Om1vdmUoc3RhdGUpLCBB
QlNMX0lOVEVSTkFMX0xFR0FDWV9IQVNIX05BTUVTUEFDRTo6aGFzaDxUPnt9KHZhbHVlKSk7Cit9
CisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KK2Fic2w6OmVuYWJsZV9pZl90PEhhc2hT
ZWxlY3Q8VD46OnZhbHVlID09IEludm9rZUhhc2hUYWc6OmtTdGRIYXNoLCBIPgorSW52b2tlSGFz
aChIIHN0YXRlLCBjb25zdCBUJiB2YWx1ZSkgeworICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6aGFz
aF9ieXRlcyhzdGQ6Om1vdmUoc3RhdGUpLCBzdGQ6Omhhc2g8VD57fSh2YWx1ZSkpOworfQorCisv
LyBDaXR5SGFzaFN0YXRlCitjbGFzcyBDaXR5SGFzaFN0YXRlIDogcHVibGljIEhhc2hTdGF0ZUJh
c2U8Q2l0eUhhc2hTdGF0ZT4geworICAvLyBhYnNsOjp1aW50MTI4IGlzIG5vdCBhbiBhbGlhcyBv
ciBhIHRoaW4gd3JhcHBlciBhcm91bmQgdGhlIGludHJpbnNpYy4KKyAgLy8gV2UgdXNlIHRoZSBp
bnRyaW5zaWMgd2hlbiBhdmFpbGFibGUgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KKyNpZmRlZiBB
QlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOAorICB1c2luZyB1aW50MTI4ID0gX191aW50MTI4X3Q7
CisjZWxzZSAgIC8vIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4CisgIHVzaW5nIHVpbnQxMjgg
PSBhYnNsOjp1aW50MTI4OworI2VuZGlmICAvLyBBQlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOAor
CisgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qga011bCA9CisgICAgICBzaXplb2Yoc2l6ZV90
KSA9PSA0ID8gdWludDY0X3R7MHhjYzllMmQ1MX0gOiB1aW50NjRfdHsweDlkZGZlYTA4ZWIzODJk
Njl9OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICB1c2luZyBJbnRlZ3JhbEZhc3RQYXRo
ID0KKyAgICAgIGNvbmp1bmN0aW9uPHN0ZDo6aXNfaW50ZWdyYWw8VD4sIGlzX3VuaXF1ZWx5X3Jl
cHJlc2VudGVkPFQ+PjsKKworIHB1YmxpYzoKKyAgLy8gTW92ZSBvbmx5CisgIENpdHlIYXNoU3Rh
dGUoQ2l0eUhhc2hTdGF0ZSYmKSA9IGRlZmF1bHQ7CisgIENpdHlIYXNoU3RhdGUmIG9wZXJhdG9y
PShDaXR5SGFzaFN0YXRlJiYpID0gZGVmYXVsdDsKKworICAvLyBDaXR5SGFzaFN0YXRlOjpjb21i
aW5lX2NvbnRpZ3VvdXMoKQorICAvLworICAvLyBGdW5kYW1lbnRhbCBiYXNlIGNhc2UgZm9yIGhh
c2ggcmVjdXJzaW9uOiBtaXhlcyB0aGUgZ2l2ZW4gcmFuZ2Ugb2YgYnl0ZXMKKyAgLy8gaW50byB0
aGUgaGFzaCBzdGF0ZS4KKyAgc3RhdGljIENpdHlIYXNoU3RhdGUgY29tYmluZV9jb250aWd1b3Vz
KENpdHlIYXNoU3RhdGUgaGFzaF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGZpcnN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpIHsKKyAgICByZXR1cm4gQ2l0
eUhhc2hTdGF0ZSgKKyAgICAgICAgQ29tYmluZUNvbnRpZ3VvdXNJbXBsKGhhc2hfc3RhdGUuc3Rh
dGVfLCBmaXJzdCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aW50
ZWdyYWxfY29uc3RhbnQ8aW50LCBzaXplb2Yoc2l6ZV90KT57fSkpOworICB9CisgIHVzaW5nIENp
dHlIYXNoU3RhdGU6Okhhc2hTdGF0ZUJhc2U6OmNvbWJpbmVfY29udGlndW91czsKKworICAvLyBD
aXR5SGFzaFN0YXRlOjpoYXNoKCkKKyAgLy8KKyAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMg
aW4gbm9uLW9wdCBtb2RlLCB3ZSBzcGVjaWFsaXplIHRoaXMgZm9yCisgIC8vIGludGVncmFsIHR5
cGVzLgorICAvLyBPdGhlcndpc2Ugd2Ugd291bGQgYmUgaW5zdGFudGlhdGluZyBhbmQgY2FsbGlu
ZyBkb3plbnMgb2YgZnVuY3Rpb25zIGZvcgorICAvLyBzb21ldGhpbmcgdGhhdCBpcyBqdXN0IG9u
ZSBtdWx0aXBsaWNhdGlvbiBhbmQgYSBjb3VwbGUgeG9yJ3MuCisgIC8vIFRoZSByZXN1bHQgc2hv
dWxkIGJlIHRoZSBzYW1lIGFzIHJ1bm5pbmcgdGhlIHdob2xlIGFsZ29yaXRobSwgYnV0IGZhc3Rl
ci4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGFic2w6OmVuYWJsZV9pZl90PEludGVncmFsRmFz
dFBhdGg8VD46OnZhbHVlLCBpbnQ+ID0gMD4KKyAgc3RhdGljIHNpemVfdCBoYXNoKFQgdmFsdWUp
IHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihNaXgoU2VlZCgpLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4odmFsdWUpKSk7CisgIH0KKworICAvLyBPdmVybG9hZCBvZiBDaXR5SGFzaFN0
YXRlOjpoYXNoKCkKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGFic2w6OmVuYWJsZV9pZl90PCFJ
bnRlZ3JhbEZhc3RQYXRoPFQ+Ojp2YWx1ZSwgaW50PiA9IDA+CisgIHN0YXRpYyBzaXplX3QgaGFz
aChjb25zdCBUJiB2YWx1ZSkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbWJp
bmUoQ2l0eUhhc2hTdGF0ZXt9LCB2YWx1ZSkuc3RhdGVfKTsKKyAgfQorCisgcHJpdmF0ZToKKyAg
Ly8gSW52b2tlZCBvbmx5IG9uY2UgZm9yIGEgZ2l2ZW4gYXJndW1lbnQ7IHRoYXQgcGx1cyB0aGUg
ZmFjdCB0aGF0IHRoaXMgaXMKKyAgLy8gbW92ZS1vbmx5IGVuc3VyZXMgdGhhdCB0aGVyZSBpcyBv
bmx5IG9uZSBub24tbW92ZWQtZnJvbSBvYmplY3QuCisgIENpdHlIYXNoU3RhdGUoKSA6IHN0YXRl
XyhTZWVkKCkpIHt9CisKKyAgLy8gV29ya2Fyb3VuZCBmb3IgTVNWQyBidWcuCisgIC8vIFdlIG1h
a2UgdGhlIHR5cGUgY29weWFibGUgdG8gZml4IHRoZSBjYWxsaW5nIGNvbnZlbnRpb24sIGV2ZW4g
dGhvdWdoIHdlCisgIC8vIG5ldmVyIGFjdHVhbGx5IGNvcHkgaXQuIEtlZXAgaXQgcHJpdmF0ZSB0
byBub3QgYWZmZWN0IHRoZSBwdWJsaWMgQVBJIG9mIHRoZQorICAvLyB0eXBlLgorICBDaXR5SGFz
aFN0YXRlKGNvbnN0IENpdHlIYXNoU3RhdGUmKSA9IGRlZmF1bHQ7CisKKyAgZXhwbGljaXQgQ2l0
eUhhc2hTdGF0ZSh1aW50NjRfdCBzdGF0ZSkgOiBzdGF0ZV8oc3RhdGUpIHt9CisKKyAgLy8gSW1w
bGVtZW50YXRpb24gb2YgdGhlIGJhc2UgY2FzZSBmb3IgY29tYmluZV9jb250aWd1b3VzIHdoZXJl
IHdlIGFjdHVhbGx5CisgIC8vIG1peCB0aGUgYnl0ZXMgaW50byB0aGUgc3RhdGUuCisgIC8vIERp
c3BhdGNoIHRvIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGNvbWJpbmVfY29udGln
dW91cyBkZXBlbmRpbmcKKyAgLy8gb24gdGhlIHZhbHVlIG9mIGBzaXplb2Yoc2l6ZV90KWAuCisg
IHN0YXRpYyB1aW50NjRfdCBDb21iaW5lQ29udGlndW91c0ltcGwodWludDY0X3Qgc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh
ciogZmlyc3QsIHNpemVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxpbnQsIDQ+CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogc2l6ZW9mX3NpemVfdCAqLyk7CisgIHN0YXRpYyB1aW50
NjRfdCBDb21iaW5lQ29udGlndW91c0ltcGwodWludDY0X3Qgc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogZmlyc3QsIHNp
emVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpp
bnRlZ3JhbF9jb25zdGFudDxpbnQsIDg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogc2l6ZW9mX3NpemVfdCovKTsKKworICAvLyBSZWFkcyA5IHRvIDE2IGJ5dGVz
IGZyb20gcC4KKyAgLy8gVGhlIGZpcnN0IDggYnl0ZXMgYXJlIGluIC5maXJzdCwgdGhlIHJlc3Qg
KHplcm8gcGFkZGVkKSBieXRlcyBhcmUgaW4KKyAgLy8gLnNlY29uZC4KKyAgc3RhdGljIHN0ZDo6
cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IFJlYWQ5VG8xNihjb25zdCB1bnNpZ25lZCBjaGFyKiBw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBsZW4pIHsKKyAgICB1aW50NjRfdCBoaWdoID0gbGl0dGxlX2VuZGlhbjo6TG9hZDY0KHAgKyBs
ZW4gLSA4KTsKKyAgICByZXR1cm4ge2xpdHRsZV9lbmRpYW46OkxvYWQ2NChwKSwgaGlnaCA+PiAo
MTI4IC0gbGVuICogOCl9OworICB9CisKKyAgLy8gUmVhZHMgNCB0byA4IGJ5dGVzIGZyb20gcC4g
WmVybyBwYWRzIHRvIGZpbGwgdWludDY0X3QuCisgIHN0YXRpYyB1aW50NjRfdCBSZWFkNFRvOChj
b25zdCB1bnNpZ25lZCBjaGFyKiBwLCBzaXplX3QgbGVuKSB7CisgICAgcmV0dXJuIChzdGF0aWNf
Y2FzdDx1aW50NjRfdD4obGl0dGxlX2VuZGlhbjo6TG9hZDMyKHAgKyBsZW4gLSA0KSkKKyAgICAg
ICAgICAgIDw8IChsZW4gLSA0KSAqIDgpIHwKKyAgICAgICAgICAgbGl0dGxlX2VuZGlhbjo6TG9h
ZDMyKHApOworICB9CisKKyAgLy8gUmVhZHMgMSB0byAzIGJ5dGVzIGZyb20gcC4gWmVybyBwYWRz
IHRvIGZpbGwgdWludDMyX3QuCisgIHN0YXRpYyB1aW50MzJfdCBSZWFkMVRvMyhjb25zdCB1bnNp
Z25lZCBjaGFyKiBwLCBzaXplX3QgbGVuKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQz
Ml90PigocFswXSkgfCAgICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHBbbGVuIC8gMl0gPDwgKGxlbiAvIDIgKiA4KSkgfCAgLy8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwW2xlbiAtIDFdIDw8ICgobGVuIC0gMSkg
KiA4KSkpOworICB9CisKKyAgQUJTTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBzdGF0aWMgdWlu
dDY0X3QgTWl4KHVpbnQ2NF90IHN0YXRlLCB1aW50NjRfdCB2KSB7CisgICAgdXNpbmcgTXVsdFR5
cGUgPQorICAgICAgICBhYnNsOjpjb25kaXRpb25hbF90PHNpemVvZihzaXplX3QpID09IDQsIHVp
bnQ2NF90LCB1aW50MTI4PjsKKyAgICAvLyBXZSBkbyB0aGUgYWRkaXRpb24gaW4gNjQtYml0IHNw
YWNlIHRvIG1ha2Ugc3VyZSB0aGUgMTI4LWJpdAorICAgIC8vIG11bHRpcGxpY2F0aW9uIGlzIGZh
c3QuIElmIHdlIHdlcmUgdG8gZG8gaXQgYXMgTXVsdFR5cGUgdGhlIGNvbXBpbGVyIGhhcworICAg
IC8vIHRvIGFzc3VtZSB0aGF0IHRoZSBoaWdoIHdvcmQgaXMgbm9uLXplcm8gYW5kIG5lZWRzIHRv
IHBlcmZvcm0gMgorICAgIC8vIG11bHRpcGxpY2F0aW9ucyBpbnN0ZWFkIG9mIG9uZS4KKyAgICBN
dWx0VHlwZSBtID0gc3RhdGUgKyB2OworICAgIG0gKj0ga011bDsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG0gXiAobSA+PiAoc2l6ZW9mKG0pICogOCAvIDIpKSk7CisgIH0KKwor
ICAvLyBTZWVkKCkKKyAgLy8KKyAgLy8gQSBub24tZGV0ZXJtaW5pc3RpYyBzZWVkLgorICAvLwor
ICAvLyBUaGUgY3VycmVudCBwdXJwb3NlIG9mIHRoaXMgc2VlZCBpcyB0byBnZW5lcmF0ZSBub24t
ZGV0ZXJtaW5pc3RpYyByZXN1bHRzCisgIC8vIGFuZCBwcmV2ZW50IGhhdmluZyB1c2VycyBkZXBl
bmQgb24gdGhlIHBhcnRpY3VsYXIgaGFzaCB2YWx1ZXMuCisgIC8vIEl0IGlzIG5vdCBtZWFudCBh
cyBhIHNlY3VyaXR5IGZlYXR1cmUgcmlnaHQgbm93LCBidXQgaXQgbGVhdmVzIHRoZSBkb29yCisg
IC8vIG9wZW4gdG8gdXBncmFkZSBpdCB0byBhIHRydWUgcGVyLXByb2Nlc3MgcmFuZG9tIHNlZWQu
IEEgdHJ1ZSByYW5kb20gc2VlZAorICAvLyBjb3N0cyBtb3JlIGFuZCB3ZSBkb24ndCBuZWVkIHRv
IHBheSBmb3IgdGhhdCByaWdodCBub3cuCisgIC8vCisgIC8vIE9uIHBsYXRmb3JtcyB3aXRoIEFT
TFIsIHdlIHRha2UgYWR2YW50YWdlIG9mIGl0IHRvIG1ha2UgYSBwZXItcHJvY2VzcworICAvLyBy
YW5kb20gdmFsdWUuCisgIC8vIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZGRy
ZXNzX3NwYWNlX2xheW91dF9yYW5kb21pemF0aW9uCisgIC8vCisgIC8vIE9uIG90aGVyIHBsYXRm
b3JtcyB0aGlzIGlzIHN0aWxsIGdvaW5nIHRvIGJlIG5vbi1kZXRlcm1pbmlzdGljIGJ1dCBtb3N0
CisgIC8vIHByb2JhYmx5IHBlci1idWlsZCBhbmQgbm90IHBlci1wcm9jZXNzLgorICBBQlNMX0FU
VFJJQlVURV9BTFdBWVNfSU5MSU5FIHN0YXRpYyB1aW50NjRfdCBTZWVkKCkgeworICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGtTZWVk
KSk7CisgIH0KKyAgc3RhdGljIGNvbnN0IHZvaWQqIGNvbnN0IGtTZWVkOworCisgIHVpbnQ2NF90
IHN0YXRlXzsKK307CisKKy8vIENpdHlIYXNoU3RhdGU6OkNvbWJpbmVDb250aWd1b3VzSW1wbCgp
CitpbmxpbmUgdWludDY0X3QgQ2l0eUhhc2hTdGF0ZTo6Q29tYmluZUNvbnRpZ3VvdXNJbXBsKAor
ICAgIHVpbnQ2NF90IHN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBmaXJzdCwgc2l6ZV90IGxl
biwKKyAgICBzdGQ6OmludGVncmFsX2NvbnN0YW50PGludCwgND4gLyogc2l6ZW9mX3NpemVfdCAq
LykgeworICAvLyBGb3IgbGFyZ2UgdmFsdWVzIHdlIHVzZSBDaXR5SGFzaCwgZm9yIHNtYWxsIG9u
ZXMgd2UganVzdCB1c2UgYQorICAvLyBtdWx0aXBsaWNhdGl2ZSBoYXNoLgorICB1aW50NjRfdCB2
OworICBpZiAobGVuID4gOCkgeworICAgIHYgPSBhYnNsOjpoYXNoX2ludGVybmFsOjpDaXR5SGFz
aDMyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGZpcnN0KSwgbGVuKTsKKyAgfSBlbHNl
IGlmIChsZW4gPj0gNCkgeworICAgIHYgPSBSZWFkNFRvOChmaXJzdCwgbGVuKTsKKyAgfSBlbHNl
IGlmIChsZW4gPiAwKSB7CisgICAgdiA9IFJlYWQxVG8zKGZpcnN0LCBsZW4pOworICB9IGVsc2Ug
eworICAgIC8vIEVtcHR5IHJhbmdlcyBoYXZlIG5vIGVmZmVjdC4KKyAgICByZXR1cm4gc3RhdGU7
CisgIH0KKyAgcmV0dXJuIE1peChzdGF0ZSwgdik7Cit9CisKKy8vIE92ZXJsb2FkIG9mIENpdHlI
YXNoU3RhdGU6OkNvbWJpbmVDb250aWd1b3VzSW1wbCgpCitpbmxpbmUgdWludDY0X3QgQ2l0eUhh
c2hTdGF0ZTo6Q29tYmluZUNvbnRpZ3VvdXNJbXBsKAorICAgIHVpbnQ2NF90IHN0YXRlLCBjb25z
dCB1bnNpZ25lZCBjaGFyKiBmaXJzdCwgc2l6ZV90IGxlbiwKKyAgICBzdGQ6OmludGVncmFsX2Nv
bnN0YW50PGludCwgOD4gLyogc2l6ZW9mX3NpemVfdCAqLykgeworICAvLyBGb3IgbGFyZ2UgdmFs
dWVzIHdlIHVzZSBDaXR5SGFzaCwgZm9yIHNtYWxsIG9uZXMgd2UganVzdCB1c2UgYQorICAvLyBt
dWx0aXBsaWNhdGl2ZSBoYXNoLgorICB1aW50NjRfdCB2OworICBpZiAobGVuID4gMTYpIHsKKyAg
ICB2ID0gYWJzbDo6aGFzaF9pbnRlcm5hbDo6Q2l0eUhhc2g2NChyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihmaXJzdCksIGxlbik7CisgIH0gZWxzZSBpZiAobGVuID4gOCkgeworICAgIGF1
dG8gcCA9IFJlYWQ5VG8xNihmaXJzdCwgbGVuKTsKKyAgICBzdGF0ZSA9IE1peChzdGF0ZSwgcC5m
aXJzdCk7CisgICAgdiA9IHAuc2Vjb25kOworICB9IGVsc2UgaWYgKGxlbiA+PSA0KSB7CisgICAg
diA9IFJlYWQ0VG84KGZpcnN0LCBsZW4pOworICB9IGVsc2UgaWYgKGxlbiA+IDApIHsKKyAgICB2
ID0gUmVhZDFUbzMoZmlyc3QsIGxlbik7CisgIH0gZWxzZSB7CisgICAgLy8gRW1wdHkgcmFuZ2Vz
IGhhdmUgbm8gZWZmZWN0LgorICAgIHJldHVybiBzdGF0ZTsKKyAgfQorICByZXR1cm4gTWl4KHN0
YXRlLCB2KTsKK30KKworCitzdHJ1Y3QgQWdncmVnYXRlQmFycmllciB7fTsKKworLy8gSGFzaElt
cGwKKworLy8gQWRkIGEgcHJpdmF0ZSBiYXNlIGNsYXNzIHRvIG1ha2Ugc3VyZSB0aGlzIHR5cGUg
aXMgbm90IGFuIGFnZ3JlZ2F0ZS4KKy8vIEFnZ3JlZ2F0ZXMgY2FuIGJlIGFnZ3JlZ2F0ZSBpbml0
aWFsaXplZCBldmVuIGlmIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGlzCisvLyBkZWxldGVkLgor
c3RydWN0IFBvaXNvbmVkSGFzaCA6IHByaXZhdGUgQWdncmVnYXRlQmFycmllciB7CisgIFBvaXNv
bmVkSGFzaCgpID0gZGVsZXRlOworICBQb2lzb25lZEhhc2goY29uc3QgUG9pc29uZWRIYXNoJikg
PSBkZWxldGU7CisgIFBvaXNvbmVkSGFzaCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSGFzaCYp
ID0gZGVsZXRlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSGFzaEltcGwg
eworICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBUJiB2YWx1ZSkgY29uc3QgeyByZXR1cm4gQ2l0
eUhhc2hTdGF0ZTo6aGFzaCh2YWx1ZSk7IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
c3RydWN0IEhhc2gKKyAgICA6IGFic2w6OmNvbmRpdGlvbmFsX3Q8aXNfaGFzaGFibGU8VD46OnZh
bHVlLCBIYXNoSW1wbDxUPiwgUG9pc29uZWRIYXNoPiB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IEg+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gVHM+CitIIEhhc2hTdGF0ZUJh
c2U8SD46OmNvbWJpbmUoSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUsIGNvbnN0IFRzJi4uLiB2YWx1
ZXMpIHsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoaGFzaF9pbnRlcm5hbDo6SW52b2tlSGFzaChzdGQ6
Om1vdmUoc3RhdGUpLCB2YWx1ZSksCisgICAgICAgICAgICAgICAgICAgIHZhbHVlcy4uLik7Cit9
CisKKy8vIEhhc2hTdGF0ZUJhc2U6OmNvbWJpbmVfY29udGlndW91cygpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorSCBIYXNoU3RhdGVCYXNlPEg+Ojpjb21i
aW5lX2NvbnRpZ3VvdXMoSCBzdGF0ZSwgY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAg
cmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhhc2hfcmFuZ2Vfb3JfYnl0ZXMoc3RkOjptb3ZlKHN0YXRl
KSwgZGF0YSwgc2l6ZSk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAorfSAgLy8g
bmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfSEFTSF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9wcmludF9oYXNoX29mLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
aGFzaC9pbnRlcm5hbC9wcmludF9oYXNoX29mLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZGYzMWNjNWU4NWI5
MDQ2ZTBhNTRlYmNiZTgzOWJjNjA0MDIxNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNo
L2ludGVybmFsL3ByaW50X2hhc2hfb2YuY2MKQEAgLTAsMCArMSwyMyBAQAorLy8gQ29weXJpZ2h0
IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgPGNzdGRsaWI+CisKKyNpbmNs
dWRlICJhYnNsL2hhc2gvaGFzaC5oIgorCisvLyBQcmludHMgdGhlIGhhc2ggb2YgYXJndlsxXS4K
K2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICBpZiAoYXJnYyA8IDIpIHJldHVy
biAxOworICBwcmludGYoIiV6dVxuIiwgYWJzbDo6SGFzaDxpbnQ+e30oc3RkOjphdG9pKGFyZ3Zb
MV0pKSk7ICAvLyBOT0xJTlQKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvc3B5
X2hhc2hfc3RhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvc3B5X2hhc2hfc3RhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wM2Q3OTViMDkwMDFlM2RjMzAzMDEzNzM4ZjYyNDZhYTJkZTBhYzVmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9zcHlfaGFzaF9zdGF0ZS5oCkBAIC0wLDAg
KzEsMjE4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZu
ZGVmIEFCU0xfSEFTSF9JTlRFUk5BTF9TUFlfSEFTSF9TVEFURV9IXworI2RlZmluZSBBQlNMX0hB
U0hfSU5URVJOQUxfU1BZX0hBU0hfU1RBVEVfSF8KKworI2luY2x1ZGUgPG9zdHJlYW0+CisjaW5j
bHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvaGFzaC9o
YXNoLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCisjaW5jbHVkZSAiYWJzbC9z
dHJpbmdzL3N0cl9mb3JtYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2pvaW4uaCIK
KworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgeworCisvLyBTcHlI
YXNoU3RhdGUgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIEhhc2hTdGF0ZSBBUEkgdGhhdCBz
aW1wbHkKKy8vIGFjY3VtdWxhdGVzIGFsbCBpbnB1dCBieXRlcyBpbiBhbiBpbnRlcm5hbCBidWZm
ZXIuIFRoaXMgbWFrZXMgaXQgdXNlZnVsCisvLyBmb3IgdGVzdGluZyBBYnNsSGFzaFZhbHVlIG92
ZXJsb2FkcyAoc28gbG9uZyBhcyB0aGV5IGFyZSB0ZW1wbGF0ZWQgb24gdGhlCisvLyBIYXNoU3Rh
dGUgcGFyYW1ldGVyKSwgc2luY2UgaXQgY2FuIHJlcG9ydCB0aGUgZXhhY3QgaGFzaCByZXByZXNl
bnRhdGlvbgorLy8gdGhhdCB0aGUgQWJzbEhhc2hWYWx1ZSBvdmVybG9hZCBwcm9kdWNlcy4KKy8v
CisvLyBTYW1wbGUgdXNhZ2U6CisvLyBFWFBFQ1RfRVEoU3B5SGFzaFN0YXRlOjpjb21iaW5lKFNw
eUhhc2hTdGF0ZSgpLCBmb28pLAorLy8gICAgICAgICAgIFNweUhhc2hTdGF0ZTo6Y29tYmluZShT
cHlIYXNoU3RhdGUoKSwgYmFyKSk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFNweUhh
c2hTdGF0ZUltcGwgOiBwdWJsaWMgSGFzaFN0YXRlQmFzZTxTcHlIYXNoU3RhdGVJbXBsPFQ+PiB7
CisgcHVibGljOgorICBTcHlIYXNoU3RhdGVJbXBsKCkKKyAgICAgIDogZXJyb3JfKHN0ZDo6bWFr
ZV9zaGFyZWQ8YWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+PigpKSB7CisgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3ZvaWQ8VD46OnZhbHVlLCAiIik7CisgIH0KKworICAvLyBNb3ZlLW9ubHkK
KyAgU3B5SGFzaFN0YXRlSW1wbChjb25zdCBTcHlIYXNoU3RhdGVJbXBsJikgPSBkZWxldGU7Cisg
IFNweUhhc2hTdGF0ZUltcGwmIG9wZXJhdG9yPShjb25zdCBTcHlIYXNoU3RhdGVJbXBsJikgPSBk
ZWxldGU7CisKKyAgU3B5SGFzaFN0YXRlSW1wbChTcHlIYXNoU3RhdGVJbXBsJiYgb3RoZXIpIG5v
ZXhjZXB0IHsKKyAgICAqdGhpcyA9IHN0ZDo6bW92ZShvdGhlcik7CisgIH0KKworICBTcHlIYXNo
U3RhdGVJbXBsJiBvcGVyYXRvcj0oU3B5SGFzaFN0YXRlSW1wbCYmIG90aGVyKSBub2V4Y2VwdCB7
CisgICAgaGFzaF9yZXByZXNlbnRhdGlvbl8gPSBzdGQ6Om1vdmUob3RoZXIuaGFzaF9yZXByZXNl
bnRhdGlvbl8pOworICAgIGVycm9yXyA9IG90aGVyLmVycm9yXzsKKyAgICBtb3ZlZF9mcm9tXyA9
IG90aGVyLm1vdmVkX2Zyb21fOworICAgIG90aGVyLm1vdmVkX2Zyb21fID0gdHJ1ZTsKKyAgICBy
ZXR1cm4gKnRoaXM7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgU3B5SGFzaFN0
YXRlSW1wbChTcHlIYXNoU3RhdGVJbXBsPFU+JiYgb3RoZXIpIHsgIC8vIE5PTElOVAorICAgIGhh
c2hfcmVwcmVzZW50YXRpb25fID0gc3RkOjptb3ZlKG90aGVyLmhhc2hfcmVwcmVzZW50YXRpb25f
KTsKKyAgICBlcnJvcl8gPSBvdGhlci5lcnJvcl87CisgICAgbW92ZWRfZnJvbV8gPSBvdGhlci5t
b3ZlZF9mcm9tXzsKKyAgICBvdGhlci5tb3ZlZF9mcm9tXyA9IHRydWU7CisgIH0KKworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgc3RhdGljIFNweUhhc2hTdGF0
ZUltcGwgY29tYmluZShTcHlIYXNoU3RhdGVJbXBsIHMsIGNvbnN0IEEmIGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXJncyYuLi4gYXJncykgeworICAgIC8vIFBh
c3MgYW4gaW5zdGFuY2Ugb2YgU3B5SGFzaFN0YXRlSW1wbDxBPiB3aGVuIHRyeWluZyB0byBjb21i
aW5lIGBBYC4gVGhpcworICAgIC8vIGFsbG93cyB1cyB0byB0ZXN0IHRoYXQgdGhlIHVzZXIgb25s
eSB1c2VzIHRoaXMgaW5zdGFuY2UgZm9yIGNvbWJpbmUgY2FsbHMKKyAgICAvLyBhbmQgZG9lcyBu
b3QgY2FsbCBBYnNsSGFzaFZhbHVlIGRpcmVjdGx5LgorICAgIC8vIFNlZSBBYnNsSGFzaFZhbHVl
IGltcGxlbWVudGF0aW9uIGF0IHRoZSBib3R0b20uCisgICAgcyA9IFNweUhhc2hTdGF0ZUltcGw8
QT46Okhhc2hTdGF0ZUJhc2U6OmNvbWJpbmUoc3RkOjptb3ZlKHMpLCBhKTsKKyAgICByZXR1cm4g
U3B5SGFzaFN0YXRlSW1wbDo6Y29tYmluZShzdGQ6Om1vdmUocyksIGFyZ3MuLi4pOworICB9Cisg
IHN0YXRpYyBTcHlIYXNoU3RhdGVJbXBsIGNvbWJpbmUoU3B5SGFzaFN0YXRlSW1wbCBzKSB7Cisg
ICAgaWYgKGRpcmVjdF9hYnNsX2hhc2hfdmFsdWVfZXJyb3JfKSB7CisgICAgICAqcy5lcnJvcl8g
PSAiQWJzbEhhc2hWYWx1ZSBzaG91bGQgbm90IGJlIGludm9rZWQgZGlyZWN0bHkuIjsKKyAgICB9
IGVsc2UgaWYgKHMubW92ZWRfZnJvbV8pIHsKKyAgICAgICpzLmVycm9yXyA9ICJVc2VkIG1vdmVk
LWZyb20gaW5zdGFuY2Ugb2YgdGhlIGhhc2ggc3RhdGUgb2JqZWN0LiI7CisgICAgfQorICAgIHJl
dHVybiBzOworICB9CisKKyAgc3RhdGljIHZvaWQgU2V0RGlyZWN0QWJzbEhhc2hWYWx1ZUVycm9y
KCkgeworICAgIGRpcmVjdF9hYnNsX2hhc2hfdmFsdWVfZXJyb3JfID0gdHJ1ZTsKKyAgfQorCisg
IC8vIFR3byBTcHlIYXNoU3RhdGVJbXBsIG9iamVjdHMgYXJlIGVxdWFsIGlmIHRoZXkgaG9sZCBl
cXVhbCBoYXNoCisgIC8vIHJlcHJlc2VudGF0aW9ucy4KKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTcHlIYXNoU3RhdGVJbXBsJiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU3B5SGFzaFN0YXRlSW1wbCYgcmhzKSB7CisgICAgcmV0dXJuIGxocy5oYXNoX3JlcHJl
c2VudGF0aW9uXyA9PSByaHMuaGFzaF9yZXByZXNlbnRhdGlvbl87CisgIH0KKworICBmcmllbmQg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFNweUhhc2hTdGF0ZUltcGwmIGxocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTcHlIYXNoU3RhdGVJbXBsJiByaHMpIHsKKyAgICByZXR1cm4g
IShsaHMgPT0gcmhzKTsKKyAgfQorCisgIGVudW0gY2xhc3MgQ29tcGFyZVJlc3VsdCB7CisgICAg
a0VxdWFsLAorICAgIGtBU3VmZml4QiwKKyAgICBrQlN1ZmZpeEEsCisgICAga1VuZXF1YWwsCisg
IH07CisKKyAgc3RhdGljIENvbXBhcmVSZXN1bHQgQ29tcGFyZShjb25zdCBTcHlIYXNoU3RhdGVJ
bXBsJiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNweUhhc2hTdGF0
ZUltcGwmIGIpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBhX2ZsYXQgPSBhYnNsOjpTdHJKb2lu
KGEuaGFzaF9yZXByZXNlbnRhdGlvbl8sICIiKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBiX2Zs
YXQgPSBhYnNsOjpTdHJKb2luKGIuaGFzaF9yZXByZXNlbnRhdGlvbl8sICIiKTsKKyAgICBpZiAo
YV9mbGF0ID09IGJfZmxhdCkgcmV0dXJuIENvbXBhcmVSZXN1bHQ6OmtFcXVhbDsKKyAgICBpZiAo
YWJzbDo6RW5kc1dpdGgoYV9mbGF0LCBiX2ZsYXQpKSByZXR1cm4gQ29tcGFyZVJlc3VsdDo6a0JT
dWZmaXhBOworICAgIGlmIChhYnNsOjpFbmRzV2l0aChiX2ZsYXQsIGFfZmxhdCkpIHJldHVybiBD
b21wYXJlUmVzdWx0OjprQVN1ZmZpeEI7CisgICAgcmV0dXJuIENvbXBhcmVSZXN1bHQ6OmtVbmVx
dWFsOworICB9CisKKyAgLy8gb3BlcmF0b3I8PCBwcmludHMgdGhlIGhhc2ggcmVwcmVzZW50YXRp
b24gYXMgYSBoZXggYW5kIEFTQ0lJIGR1bXAsIHRvCisgIC8vIGZhY2lsaXRhdGUgZGVidWdnaW5n
LgorICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNweUhhc2hTdGF0ZUltcGwm
IGhhc2hfc3RhdGUpIHsKKyAgICBvdXQgPDwgIltcbiI7CisgICAgZm9yIChhdXRvJiBzIDogaGFz
aF9zdGF0ZS5oYXNoX3JlcHJlc2VudGF0aW9uXykgeworICAgICAgc2l6ZV90IG9mZnNldCA9IDA7
CisgICAgICBmb3IgKGNoYXIgYyA6IHMpIHsKKyAgICAgICAgaWYgKG9mZnNldCAlIDE2ID09IDAp
IHsKKyAgICAgICAgICBvdXQgPDwgYWJzbDo6U3RyZWFtRm9ybWF0KCJcbjB4JTA0eDogIiwgb2Zm
c2V0KTsKKyAgICAgICAgfQorICAgICAgICBpZiAob2Zmc2V0ICUgMiA9PSAwKSB7CisgICAgICAg
ICAgb3V0IDw8ICIgIjsKKyAgICAgICAgfQorICAgICAgICBvdXQgPDwgYWJzbDo6U3RyZWFtRm9y
bWF0KCIlMDJ4IiwgYyk7CisgICAgICAgICsrb2Zmc2V0OworICAgICAgfQorICAgICAgb3V0IDw8
ICJcbiI7CisgICAgfQorICAgIHJldHVybiBvdXQgPDwgIl0iOworICB9CisKKyAgLy8gVGhlIGJh
c2UgY2FzZSBvZiB0aGUgY29tYmluZSByZWN1cnNpb24sIHdoaWNoIHdyaXRlcyByYXcgYnl0ZXMg
aW50byB0aGUKKyAgLy8gaW50ZXJuYWwgYnVmZmVyLgorICBzdGF0aWMgU3B5SGFzaFN0YXRlSW1w
bCBjb21iaW5lX2NvbnRpZ3VvdXMoU3B5SGFzaFN0YXRlSW1wbCBoYXNoX3N0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh
ciogYmVnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgc2l6ZSkgeworICAgIGhhc2hfc3RhdGUuaGFzaF9yZXByZXNlbnRhdGlvbl8uZW1wbGFj
ZV9iYWNrKAorICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihiZWdpbiksIHNp
emUpOworICAgIHJldHVybiBoYXNoX3N0YXRlOworICB9CisKKyAgdXNpbmcgU3B5SGFzaFN0YXRl
SW1wbDo6SGFzaFN0YXRlQmFzZTo6Y29tYmluZV9jb250aWd1b3VzOworCisgIGFic2w6Om9wdGlv
bmFsPHN0ZDo6c3RyaW5nPiBlcnJvcigpIGNvbnN0IHsKKyAgICBpZiAobW92ZWRfZnJvbV8pIHsK
KyAgICAgIHJldHVybiAiUmV0dXJuZWQgYSBtb3ZlZC1mcm9tIGluc3RhbmNlIG9mIHRoZSBoYXNo
IHN0YXRlIG9iamVjdC4iOworICAgIH0KKyAgICByZXR1cm4gKmVycm9yXzsKKyAgfQorCisgcHJp
dmF0ZToKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIGZyaWVuZCBjbGFzcyBTcHlIYXNoU3Rh
dGVJbXBsOworCisgIC8vIFRoaXMgaXMgdHJ1ZSBpZiBTcHlIYXNoU3RhdGVJbXBsPFQ+IGhhcyBi
ZWVuIHBhc3NlZCB0byBhIGNhbGwgb2YKKyAgLy8gQWJzbEhhc2hWYWx1ZSB3aXRoIHRoZSB3cm9u
ZyB0eXBlLiBUaGlzIGRldGVjdHMgdGhhdCB0aGUgdXNlciBjYWxsZWQKKyAgLy8gQWJzbEhhc2hW
YWx1ZSBkaXJlY3RseSAoYmVjYXVzZSB0aGUgaGFzaCBzdGF0ZSB0eXBlIGRvZXMgbm90IG1hdGNo
KS4KKyAgc3RhdGljIGJvb2wgZGlyZWN0X2Fic2xfaGFzaF92YWx1ZV9lcnJvcl87CisKKworICBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gaGFzaF9yZXByZXNlbnRhdGlvbl87CisgIC8vIFRoaXMg
aXMgYSBzaGFyZWRfcHRyIGJlY2F1c2Ugd2Ugd2FudCBhbGwgaW5zdGFuY2VzIG9mIHRoZSBwYXJ0
aWN1bGFyCisgIC8vIFNweUhhc2hTdGF0ZSBydW4gdG8gc2hhcmUgdGhlIGZpZWxkLiBUaGlzIHdh
eSB3ZSBjYW4gc2V0IHRoZSBlcnJvciBmb3IKKyAgLy8gdXNlLWFmdGVyLW1vdmUgYW5kIGFsbCB0
aGUgY29waWVzIHdpbGwgc2VlIGl0LgorICBzdGQ6OnNoYXJlZF9wdHI8YWJzbDo6b3B0aW9uYWw8
c3RkOjpzdHJpbmc+PiBlcnJvcl87CisgIGJvb2wgbW92ZWRfZnJvbV8gPSBmYWxzZTsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorYm9vbCBTcHlIYXNoU3RhdGVJbXBsPFQ+OjpkaXJlY3Rf
YWJzbF9oYXNoX3ZhbHVlX2Vycm9yXzsKKwordGVtcGxhdGUgPGJvb2wmIEI+CitzdHJ1Y3QgT2Ry
VXNlIHsKKyAgY29uc3RleHByIE9kclVzZSgpIHt9CisgIGJvb2wmIGIgPSBCOworfTsKKwordGVt
cGxhdGUgPHZvaWQgKCopKCk+CitzdHJ1Y3QgUnVuT25TdGFydHVwIHsKKyAgc3RhdGljIGJvb2wg
cnVuOworICBzdGF0aWMgY29uc3RleHByIE9kclVzZTxydW4+IGtPZHJVc2V7fTsKK307CisKK3Rl
bXBsYXRlIDx2b2lkICgqZikoKT4KK2Jvb2wgUnVuT25TdGFydHVwPGY+OjpydW4gPSAoZigpLCB0
cnVlKTsKKwordGVtcGxhdGUgPAorICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCisgICAgLy8g
T25seSB0cmlnZ2VyIGZvciB3aGVuIChUICE9IFUpLAorICAgIGFic2w6OmVuYWJsZV9pZl90PCFz
dGQ6OmlzX3NhbWU8VCwgVT46OnZhbHVlLCBpbnQ+ID0gMCwKKyAgICAvLyBUaGlzIHN0YXRlbWVu
dCB3b3JrcyBpbiB0d28gd2F5czoKKyAgICAvLyAgLSBGaXJzdCwgaXQgaW5zdGFudGlhdGVzIFJ1
bk9uU3RhcnR1cCBhbmQgZm9yY2VzIHRoZSBpbml0aWFsaXphdGlvbiBvZgorICAgIC8vICAgIGBy
dW5gLCB3aGljaCBzZXQgdGhlIGdsb2JhbCB2YXJpYWJsZS4KKyAgICAvLyAgLSBTZWNvbmQsIGl0
IHRyaWdnZXJzIGEgU0ZJTkFFIGVycm9yIGRpc2FibGluZyB0aGUgb3ZlcmxvYWQgdG8gcHJldmVu
dAorICAgIC8vICAgIGNvbXBpbGUgdGltZSBlcnJvcnMuIElmIHdlIGRpZG4ndCBkaXNhYmxlIHRo
ZSBvdmVybG9hZCB3ZSB3b3VsZCBnZXQKKyAgICAvLyAgICBhbWJpZ3VvdXMgb3ZlcmxvYWQgZXJy
b3JzLCB3aGljaCB3ZSBkb24ndCB3YW50LgorICAgIGludCA9IFJ1bk9uU3RhcnR1cDxTcHlIYXNo
U3RhdGVJbXBsPFQ+OjpTZXREaXJlY3RBYnNsSGFzaFZhbHVlRXJyb3I+OjpydW4+Cit2b2lkIEFi
c2xIYXNoVmFsdWUoU3B5SGFzaFN0YXRlSW1wbDxUPiwgY29uc3QgVSYpOworCit1c2luZyBTcHlI
YXNoU3RhdGUgPSBTcHlIYXNoU3RhdGVJbXBsPHZvaWQ+OworCit9ICAvLyBuYW1lc3BhY2UgaGFz
aF9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0hBU0hf
SU5URVJOQUxfU1BZX0hBU0hfU1RBVEVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9CVUlM
RC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL21lbW9yeS9CVUlMRC5iYXplbAppbmRleCA0NmY0N2IxMmJiMmFkYjJm
NjcyZmIwNTBmYjQwZDc3ZWNmODViYzIxLi44OWEzMTJlYWM0YjE5YmY4OGJhMWYyMTAwY2EwNDVk
MWNjMzI3ODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuYmF6ZWwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWVtb3J5L0JVSUxELmJhemVsCkBAIC0xOSw2ICsxOSw3IEBAIGxvYWQoCiAgICAgIkFCU0xf
REVGQVVMVF9DT1BUUyIsCiAgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiAgICAgIkFCU0xfRVhDRVBU
SU9OU19GTEFHIiwKKyAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMiLAogKQogCiBw
YWNrYWdlKGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdKQpAQCAt
NTMsNiArNTQsNyBAQCBjY190ZXN0KAogICAgICAgICAibWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlf
dGVzdC5jYyIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhD
RVBUSU9OU19GTEFHLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09Q
VFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjptZW1vcnkiLAogICAgICAgICAiLy9hYnNsL2Jh
c2U6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9t
ZW1vcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnkuaAppbmRleCBjN2NhZjhiOTRkYzkxYjI4Mzhk
MTNlYjQ4OTA0ZDE3MmQyYTMwZjczLi4xZWFlYzBmNDBhZWFkNTdkNjkyZTRiODU4ZTY0MjE0MDQ1
NjQ1ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5L21lbW9yeS5oCkBAIC0zOSwxNiArMzksMzAgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gRnVu
Y3Rpb24gVGVtcGxhdGU6IFdyYXBVbmlxdWUoKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8v
Ci0vLyAgQWRvcHRzIG93bmVyc2hpcCBmcm9tIGEgcmF3IHBvaW50ZXIgYW5kIHRyYW5zZmVycyBp
dCB0byB0aGUgcmV0dXJuZWQKLS8vICBgc3RkOjp1bmlxdWVfcHRyYCwgd2hvc2UgdHlwZSBpcyBk
ZWR1Y2VkLiBETyBOT1Qgc3BlY2lmeSB0aGUgdGVtcGxhdGUgdHlwZSBUCi0vLyAgd2hlbiBjYWxs
aW5nIFdyYXBVbmlxdWUuCisvLyBBZG9wdHMgb3duZXJzaGlwIGZyb20gYSByYXcgcG9pbnRlciBh
bmQgdHJhbnNmZXJzIGl0IHRvIHRoZSByZXR1cm5lZAorLy8gYHN0ZDo6dW5pcXVlX3B0cmAsIHdo
b3NlIHR5cGUgaXMgZGVkdWNlZC4gQmVjYXVzZSBvZiB0aGlzIGRlZHVjdGlvbiwgKmRvIG5vdCoK
Ky8vIHNwZWNpZnkgdGhlIHRlbXBsYXRlIHR5cGUgYFRgIHdoZW4gY2FsbGluZyBgV3JhcFVuaXF1
ZWAuCiAvLwogLy8gRXhhbXBsZToKIC8vICAgWCogTmV3WChpbnQsIGludCk7CiAvLyAgIGF1dG8g
eCA9IFdyYXBVbmlxdWUoTmV3WCgxLCAyKSk7ICAvLyAneCcgaXMgc3RkOjp1bmlxdWVfcHRyPFg+
LgogLy8KLS8vIGBhYnNsOjpXcmFwVW5pcXVlYCBpcyB1c2VmdWwgZm9yIGNhcHR1cmluZyB0aGUg
b3V0cHV0IG9mIGEgcmF3IHBvaW50ZXIKLS8vIGZhY3RvcnkuIEhvd2V2ZXIsIHByZWZlciAnYWJz
bDo6bWFrZV91bmlxdWU8VD4oYXJncy4uLikgb3ZlcgorLy8gVGhlIHB1cnBvc2Ugb2YgV3JhcFVu
aXF1ZSBpcyB0byBhdXRvbWF0aWNhbGx5IGRlZHVjZSB0aGUgcG9pbnRlciB0eXBlLiBJZiB5b3UK
Ky8vIHdpc2ggdG8gbWFrZSB0aGUgdHlwZSBleHBsaWNpdCwgZm9yIHJlYWRhYmlsaXR5IHJlYXNv
bnMgb3IgYmVjYXVzZSB5b3UgcHJlZmVyCisvLyB0byB1c2UgYSBiYXNlLWNsYXNzIHBvaW50ZXIg
cmF0aGVyIHRoYW4gYSBkZXJpdmVkIG9uZSwganVzdCB1c2UKKy8vIGBzdGQ6OnVuaXF1ZV9wdHJg
IGRpcmVjdGx5LgorLy8KKy8vIEV4YW1wbGU6CisvLyAgIFgqIEZhY3RvcnkoaW50LCBpbnQpOwor
Ly8gICBhdXRvIHggPSBzdGQ6OnVuaXF1ZV9wdHI8WD4oRmFjdG9yeSgxLCAyKSk7CisvLyAgICAg
ICAgICAgICAgICAgIC0gb3IgLQorLy8gICBzdGQ6OnVuaXF1ZV9wdHI8WD4geChGYWN0b3J5KDEs
IDIpKTsKKy8vCisvLyBUaGlzIGhhcyB0aGUgYWRkZWQgYWR2YW50YWdlIG9mIHdvcmtpbmcgd2hl
dGhlciBGYWN0b3J5IHJldHVybnMgYSByYXcKKy8vIHBvaW50ZXIgb3IgYSBgc3RkOjp1bmlxdWVf
cHRyYC4KKy8vCisvLyBXaGlsZSBgYWJzbDo6V3JhcFVuaXF1ZWAgaXMgdXNlZnVsIGZvciBjYXB0
dXJpbmcgdGhlIG91dHB1dCBvZiBhIHJhdworLy8gcG9pbnRlciBmYWN0b3J5LCBwcmVmZXIgJ2Fi
c2w6Om1ha2VfdW5pcXVlPFQ+KGFyZ3MuLi4pJyBvdmVyCiAvLyAnYWJzbDo6V3JhcFVuaXF1ZShu
ZXcgVChhcmdzLi4uKSknLgogLy8KIC8vICAgYXV0byB4ID0gV3JhcFVuaXF1ZShuZXcgWCgxLCAy
KSk7ICAvLyB3b3JrcywgYnV0IG5vbmlkZWFsLgpAQCAtNjQxLDU1ICs2NTUsNTkgQEAgc3RydWN0
IGRlZmF1bHRfYWxsb2NhdG9yX2lzX25vdGhyb3cgOiBzdGQ6OmZhbHNlX3R5cGUge307CiAjZW5k
aWYKIAogbmFtZXNwYWNlIG1lbW9yeV9pbnRlcm5hbCB7Ci0jaWZkZWYgQUJTTF9IQVZFX0VYQ0VQ
VElPTlMKLXRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIFN0b3JhZ2VFbGVt
ZW50LCB0eXBlbmFtZS4uLiBBcmdzPgotdm9pZCBDb25zdHJ1Y3RTdG9yYWdlKEFsbG9jYXRvciog
YWxsb2MsIFN0b3JhZ2VFbGVtZW50KiBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICBTdG9y
YWdlRWxlbWVudCogbGFzdCwgY29uc3QgQXJncyYuLi4gYXJncykgewotICBmb3IgKFN0b3JhZ2VF
bGVtZW50KiBjdXIgPSBmaXJzdDsgY3VyICE9IGxhc3Q7ICsrY3VyKSB7CisjaWZkZWYgQUJTTF9I
QVZFX0VYQ0VQVElPTlMgIC8vIENvbnN0cnVjdFJhbmdlCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxs
b2NhdG9yLCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUuLi4gQXJncz4KK3ZvaWQgQ29uc3Ry
dWN0UmFuZ2UoQWxsb2NhdG9yJiBhbGxvYywgSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3Qs
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKKyAgZm9yIChJdGVy
YXRvciBjdXIgPSBmaXJzdDsgY3VyICE9IGxhc3Q7ICsrY3VyKSB7CiAgICAgdHJ5IHsKLSAgICAg
IHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoKmFsbG9jLCBjdXIs
IGFyZ3MuLi4pOworICAgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0
cnVjdChhbGxvYywgY3VyLCBhcmdzLi4uKTsKICAgICB9IGNhdGNoICguLi4pIHsKICAgICAgIHdo
aWxlIChjdXIgIT0gZmlyc3QpIHsKICAgICAgICAgLS1jdXI7Ci0gICAgICAgIHN0ZDo6YWxsb2Nh
dG9yX3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0cm95KCphbGxvYywgY3VyKTsKKyAgICAgICAgc3Rk
OjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koYWxsb2MsIGN1cik7CiAgICAg
ICB9CiAgICAgICB0aHJvdzsKICAgICB9CiAgIH0KIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBbGxv
Y2F0b3IsIHR5cGVuYW1lIFN0b3JhZ2VFbGVtZW50LCB0eXBlbmFtZSBJdGVyYXRvcj4KLXZvaWQg
Q29weVRvU3RvcmFnZUZyb21SYW5nZShBbGxvY2F0b3IqIGFsbG9jLCBTdG9yYWdlRWxlbWVudCog
ZGVzdGluYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgZmlyc3Qs
IEl0ZXJhdG9yIGxhc3QpIHsKLSAgZm9yIChTdG9yYWdlRWxlbWVudCogY3VyID0gZGVzdGluYXRp
b247IGZpcnN0ICE9IGxhc3Q7CisjZWxzZSAgIC8vIEFCU0xfSEFWRV9FWENFUFRJT05TICAvLyBD
b25zdHJ1Y3RSYW5nZQordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvciwgdHlwZW5hbWUgSXRl
cmF0b3IsIHR5cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIENvbnN0cnVjdFJhbmdlKEFsbG9jYXRvciYg
YWxsb2MsIEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LAorICAgICAgICAgICAgICAgICAg
ICBjb25zdCBBcmdzJi4uLiBhcmdzKSB7CisgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0
KSB7CisgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdChhbGxv
YywgZmlyc3QsIGFyZ3MuLi4pOworICB9Cit9CisjZW5kaWYgIC8vIEFCU0xfSEFWRV9FWENFUFRJ
T05TICAvLyBDb25zdHJ1Y3RSYW5nZQorCisjaWZkZWYgQUJTTF9IQVZFX0VYQ0VQVElPTlMgIC8v
IENvcHlSYW5nZQordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvciwgdHlwZW5hbWUgSXRlcmF0
b3IsIHR5cGVuYW1lIElucHV0SXRlcmF0b3I+Cit2b2lkIENvcHlSYW5nZShBbGxvY2F0b3ImIGFs
bG9jLCBJdGVyYXRvciBkZXN0aW5hdGlvbiwgSW5wdXRJdGVyYXRvciBmaXJzdCwKKyAgICAgICAg
ICAgICAgIElucHV0SXRlcmF0b3IgbGFzdCkgeworICBmb3IgKEl0ZXJhdG9yIGN1ciA9IGRlc3Rp
bmF0aW9uOyBmaXJzdCAhPSBsYXN0OwogICAgICAgIHN0YXRpY19jYXN0PHZvaWQ+KCsrY3VyKSwg
c3RhdGljX2Nhc3Q8dm9pZD4oKytmaXJzdCkpIHsKICAgICB0cnkgewotICAgICAgc3RkOjphbGxv
Y2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdCgqYWxsb2MsIGN1ciwgKmZpcnN0KTsK
KyAgICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoYWxsb2Ms
IGN1ciwgKmZpcnN0KTsKICAgICB9IGNhdGNoICguLi4pIHsKICAgICAgIHdoaWxlIChjdXIgIT0g
ZGVzdGluYXRpb24pIHsKICAgICAgICAgLS1jdXI7Ci0gICAgICAgIHN0ZDo6YWxsb2NhdG9yX3Ry
YWl0czxBbGxvY2F0b3I+OjpkZXN0cm95KCphbGxvYywgY3VyKTsKKyAgICAgICAgc3RkOjphbGxv
Y2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koYWxsb2MsIGN1cik7CiAgICAgICB9CiAg
ICAgICB0aHJvdzsKICAgICB9CiAgIH0KIH0KLSNlbHNlICAgLy8gQUJTTF9IQVZFX0VYQ0VQVElP
TlMKLXRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIFN0b3JhZ2VFbGVtZW50
LCB0eXBlbmFtZS4uLiBBcmdzPgotdm9pZCBDb25zdHJ1Y3RTdG9yYWdlKEFsbG9jYXRvciogYWxs
b2MsIFN0b3JhZ2VFbGVtZW50KiBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdl
RWxlbWVudCogbGFzdCwgY29uc3QgQXJncyYuLi4gYXJncykgewotICBmb3IgKDsgZmlyc3QgIT0g
bGFzdDsgKytmaXJzdCkgewotICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpj
b25zdHJ1Y3QoKmFsbG9jLCBmaXJzdCwgYXJncy4uLik7Ci0gIH0KLX0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIFN0b3JhZ2VFbGVtZW50LCB0eXBlbmFtZSBJdGVyYXRv
cj4KLXZvaWQgQ29weVRvU3RvcmFnZUZyb21SYW5nZShBbGxvY2F0b3IqIGFsbG9jLCBTdG9yYWdl
RWxlbWVudCogZGVzdGluYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0
b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QpIHsKKyNlbHNlICAgLy8gQUJTTF9IQVZFX0VYQ0VQVElP
TlMgIC8vIENvcHlSYW5nZQordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvciwgdHlwZW5hbWUg
SXRlcmF0b3IsIHR5cGVuYW1lIElucHV0SXRlcmF0b3I+Cit2b2lkIENvcHlSYW5nZShBbGxvY2F0
b3ImIGFsbG9jLCBJdGVyYXRvciBkZXN0aW5hdGlvbiwgSW5wdXRJdGVyYXRvciBmaXJzdCwKKyAg
ICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgbGFzdCkgewogICBmb3IgKDsgZmlyc3QgIT0gbGFz
dDsKICAgICAgICBzdGF0aWNfY2FzdDx2b2lkPigrK2Rlc3RpbmF0aW9uKSwgc3RhdGljX2Nhc3Q8
dm9pZD4oKytmaXJzdCkpIHsKLSAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6
Y29uc3RydWN0KCphbGxvYywgZGVzdGluYXRpb24sICpmaXJzdCk7CisgICAgc3RkOjphbGxvY2F0
b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdChhbGxvYywgZGVzdGluYXRpb24sICpmaXJz
dCk7CiAgIH0KIH0KLSNlbmRpZiAgLy8gQUJTTF9IQVZFX0VYQ0VQVElPTlMKKyNlbmRpZiAgLy8g
QUJTTF9IQVZFX0VYQ0VQVElPTlMgIC8vIENvcHlSYW5nZQogfSAgLy8gbmFtZXNwYWNlIG1lbW9y
eV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5L21lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5
X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwppbmRleCBkMWY2ZTg0ZjEwZjhhNjY4YWMyNWZiNmQ5
MGNjYzVhNzgzMjAyMjE5Li4wMGQyYjE5MmNmYzMyZGY2MjQzNjNjYTg2M2VjNzlmOTBmNjE4NWI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwpAQCAt
MzIsNyArMzIsNyBAQCBURVNUKE1ha2VVbmlxdWUsIENoZWNrRm9yTGVha3MpIHsKICAgICAgICAg
ICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoVGhyb3dlcihrVmFsdWUpKQogICAgICAgICAg
ICAgICAgICAgICAvLyBFbnN1cmVzIG1ha2VfdW5pcXVlIGRvZXMgbm90IG1vZGlmeSB0aGUgaW5w
dXQuIFRoZSByZWFsCiAgICAgICAgICAgICAgICAgICAgIC8vIHRlc3QsIHRob3VnaCwgaXMgQ29u
c3RydWN0b3JUcmFja2VyIGNoZWNraW5nIGZvciBsZWFrcy4KLSAgICAgICAgICAgICAgICAgICAg
LldpdGhJbnZhcmlhbnRzKHRlc3Rpbmc6OnN0cm9uZ19ndWFyYW50ZWUpOworICAgICAgICAgICAg
ICAgICAgICAuV2l0aENvbnRyYWN0cyh0ZXN0aW5nOjpzdHJvbmdfZ3VhcmFudGVlKTsKIAogICBF
WFBFQ1RfVFJVRSh0ZXN0ZXIuVGVzdChbXShUaHJvd2VyKiB0aHJvd2VyKSB7CiAgICAgc3RhdGlj
X2Nhc3Q8dm9pZD4oYWJzbDo6bWFrZV91bmlxdWU8VGhyb3dlcj4oKnRocm93ZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnlf
dGVzdC5jYwppbmRleCBkZWU5YjQ4NmEzMGQzMGQyNTU3MDVhYzM4MTRmMTlmNzgxOTk0MDUzLi4y
ZTQ1M2UyMmJhNWJhMzljZmQ2OTBmYzU5MWU0YWZlNDg3Y2I3OGE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9tZW1vcnkvbWVtb3J5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV90ZXN0LmNj
CkBAIC0xNDksNyArMTQ5LDYgQEAgVEVTVChNYWtlX1VuaXF1ZVRlc3QsIE5vdEFtYmlndW91c1dp
dGhTdGRNYWtlVW5pcXVlKSB7CiB9CiAKICNpZiAwCi0vLyBUT0RPKGJpbGx5ZG9uYWh1ZSk6IE1h
a2UgYSBwcm9wZXIgTkMgdGVzdC4KIC8vIFRoZXNlIHRlc3RzIHNob3VsZG4ndCBjb21waWxlLgog
VEVTVChNYWtlVW5pcXVlVGVzdE5DLCBBY2NlcHRNb3ZlT25seUx2YWx1ZSkgewogICBhdXRvIG0g
PSBNb3ZlT25seSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90eXBlX3RyYWl0cy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWV0YS90eXBlX3RyYWl0cy5oCmluZGV4IDQ1N2I4OTA4NDFhNjRmYjRlZDM2Y2RlODYyMWQ3
ODIyMTkwYjc5OGQuLjIzZWJkNmVkMDk5MGZkM2Q5NTEwZDRkOTEwNjZmMDc0Y2ZlMTExMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFpdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVf
dHJhaXRzLmgKQEAgLTEwNSw4ICsxMDUsMjUgQEAgdGVtcGxhdGUgPGNsYXNzIFRvLCB0ZW1wbGF0
ZSA8Y2xhc3MuLi4+IGNsYXNzIE9wLCBjbGFzcy4uLiBBcmdzPgogc3RydWN0IGlzX2RldGVjdGVk
X2NvbnZlcnRpYmxlCiAgICAgOiBpc19kZXRlY3RlZF9jb252ZXJ0aWJsZV9pbXBsPHZvaWQsIFRv
LCBPcCwgQXJncy4uLj46OnR5cGUge307CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcg
SXNDb3B5QXNzaWduYWJsZUltcGwgPQorICAgIGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUJj4oKSA9
IHN0ZDo6ZGVjbHZhbDxjb25zdCBUJj4oKSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNp
bmcgSXNNb3ZlQXNzaWduYWJsZUltcGwgPSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VCY+KCkgPSBz
dGQ6OmRlY2x2YWw8VCYmPigpKTsKKwogfSAgLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzX2ludGVy
bmFsCiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX2NvcHlfYXNzaWduYWJsZSA6
IHR5cGVfdHJhaXRzX2ludGVybmFsOjppc19kZXRlY3RlZDwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OklzQ29weUFzc2lnbmFibGVJbXBsLCBU
PiB7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19tb3ZlX2Fzc2lnbmFi
bGUgOiB0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNfZGV0ZWN0ZWQ8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc01vdmVBc3NpZ25hYmxlSW1w
bCwgVD4geworfTsKKwogLy8gdm9pZF90KCkKIC8vCiAvLyBJZ25vcmVzIHRoZSB0eXBlIG9mIGFu
eSBpdHMgYXJndW1lbnRzIGFuZCByZXR1cm5zIGB2b2lkYC4gSW4gZ2VuZXJhbCwgdGhpcwpAQCAt
MzA5LDcgKzMyNiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlzX3RyaXZpYWxs
eV9jb3B5X2Fzc2lnbmFibGUKICAgICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8CiAgICAgICAg
ICAgYm9vbCwgX19oYXNfdHJpdmlhbF9hc3NpZ24odHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJl
bmNlPFQ+Ojp0eXBlKSAmJgotICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvcHlfYXNzaWdu
YWJsZTxUPjo6dmFsdWU+IHsKKyAgICAgICAgICAgICAgICAgICAgYWJzbDo6aXNfY29weV9hc3Np
Z25hYmxlPFQ+Ojp2YWx1ZT4gewogI2lmZGVmIEFCU0xfSEFWRV9TVERfSVNfVFJJVklBTExZX0FT
U0lHTkFCTEUKICBwcml2YXRlOgogICBzdGF0aWMgY29uc3RleHByIGJvb2wgY29tcGxpYW50ID0K
QEAgLTQwOSwxMSArNDI2LDExIEBAIHN0cnVjdCBJc0hhc2hFbmFibGVkCiAgICAgOiBhYnNsOjpj
b25qdW5jdGlvbjxzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxzdGQ6Omhhc2g8S2V5Pj4s
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxzdGQ6
Omhhc2g8S2V5Pj4sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Rlc3RydWN0aWJs
ZTxzdGQ6Omhhc2g8S2V5Pj4sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvcHlf
YXNzaWduYWJsZTxzdGQ6Omhhc2g8S2V5Pj4sCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNs
Ojppc19jb3B5X2Fzc2lnbmFibGU8c3RkOjpoYXNoPEtleT4+LAogICAgICAgICAgICAgICAgICAg
ICAgICAgSXNIYXNoYWJsZTxLZXk+PiB7fTsKKwogfSAgLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRz
X2ludGVybmFsCiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKLQogI2VuZGlmICAvLyBBQlNMX01F
VEFfVFlQRV9UUkFJVFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFpdHNfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFpdHNfdGVzdC5jYwppbmRleCA4MWI0YmQzMjM5Nzdl
NWUzY2QyNzY2MGM1MGNjZWQ4NmFiMjI1MDE3Li5mNTFmNWRlZGVlNDM1ZDY4M2I0YjJmNWViMzAx
MmJkNjFiNWUyYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzX3Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvbWV0YS90eXBlX3RyYWl0c190ZXN0LmNjCkBAIC04NzcsNCArODc3LDgwIEBA
IFRFU1QoVHlwZVRyYWl0c1Rlc3QsIFRlc3RSZXN1bHRPZikgewogICBFWFBFQ1RfRVEoVHlwZUVu
dW06OkQsIEdldFR5cGVFeHQoV3JhcDxUeXBlRD4oKSkpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2Jvb2wgVGVzdENvcHlBc3NpZ24oKSB7CisgIHJldHVybiBhYnNsOjppc19jb3B5X2Fz
c2lnbmFibGU8VD46OnZhbHVlID09CisgICAgICAgICBzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxU
Pjo6dmFsdWU7Cit9CisKK1RFU1QoVHlwZVRyYWl0c1Rlc3QsIElzQ29weUFzc2lnbmFibGUpIHsK
KyAgRVhQRUNUX1RSVUUoVGVzdENvcHlBc3NpZ248aW50PigpKTsKKyAgRVhQRUNUX1RSVUUoVGVz
dENvcHlBc3NpZ248aW50Jj4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPGludCYm
PigpKTsKKworICBzdHJ1Y3QgUyB7fTsKKyAgRVhQRUNUX1RSVUUoVGVzdENvcHlBc3NpZ248Uz4o
KSk7CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPFMmPigpKTsKKyAgRVhQRUNUX1RSVUUo
VGVzdENvcHlBc3NpZ248UyYmPigpKTsKKworICBjbGFzcyBDIHsKKyAgIHB1YmxpYzoKKyAgICBl
eHBsaWNpdCBDKEMqIGMpIDogY18oYykge30KKyAgICB+QygpIHsgZGVsZXRlIGNfOyB9CisKKyAg
IHByaXZhdGU6CisgICAgQyogY187CisgIH07CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWdu
PEM+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0Q29weUFzc2lnbjxDJj4oKSk7CisgIEVYUEVDVF9U
UlVFKFRlc3RDb3B5QXNzaWduPEMmJj4oKSk7CisKKyAgLy8gUmVhc29uIGZvciBpZm5kZWY6IGFk
ZF9sdmFsdWVfcmVmZXJlbmNlPFQ+IGluIGxpYmMrKyBicmVha3MgZm9yIHRoZXNlIGNhc2VzCisj
aWZuZGVmIF9MSUJDUFBfVkVSU0lPTgorICBFWFBFQ1RfVFJVRShUZXN0Q29weUFzc2lnbjxpbnQo
KT4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPGludChpbnQpIGNvbnN0PigpKTsK
KyAgRVhQRUNUX1RSVUUoVGVzdENvcHlBc3NpZ248aW50KC4uLikgdm9sYXRpbGUmPigpKTsKKyAg
RVhQRUNUX1RSVUUoVGVzdENvcHlBc3NpZ248aW50KGludCwgLi4uKSBjb25zdCB2b2xhdGlsZSYm
PigpKTsKKyNlbmRpZiAgLy8gX0xJQkNQUF9WRVJTSU9OCit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorYm9vbCBUZXN0TW92ZUFzc2lnbigpIHsKKyAgcmV0dXJuIGFic2w6OmlzX21vdmVfYXNz
aWduYWJsZTxUPjo6dmFsdWUgPT0KKyAgICAgICAgIHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPFQ+
Ojp2YWx1ZTsKK30KKworVEVTVChUeXBlVHJhaXRzVGVzdCwgSXNNb3ZlQXNzaWduYWJsZSkgewor
ICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFzc2lnbjxpbnQ+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0
TW92ZUFzc2lnbjxpbnQmPigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248aW50JiY+
KCkpOworCisgIHN0cnVjdCBTIHt9OworICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFzc2lnbjxTPigp
KTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248UyY+KCkpOworICBFWFBFQ1RfVFJVRShU
ZXN0TW92ZUFzc2lnbjxTJiY+KCkpOworCisgIGNsYXNzIEMgeworICAgcHVibGljOgorICAgIGV4
cGxpY2l0IEMoQyogYykgOiBjXyhjKSB7fQorICAgIH5DKCkgeyBkZWxldGUgY187IH0KKyAgICB2
b2lkIG9wZXJhdG9yPShjb25zdCBDJikgPSBkZWxldGU7CisgICAgdm9pZCBvcGVyYXRvcj0oQyYm
KSA9IGRlbGV0ZTsKKworICAgcHJpdmF0ZToKKyAgICBDKiBjXzsKKyAgfTsKKyAgRVhQRUNUX1RS
VUUoVGVzdE1vdmVBc3NpZ248Qz4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RNb3ZlQXNzaWduPEMm
PigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248QyYmPigpKTsKKworICAvLyBSZWFz
b24gZm9yIGlmbmRlZjogYWRkX2x2YWx1ZV9yZWZlcmVuY2U8VD4gaW4gbGliYysrIGJyZWFrcyBm
b3IgdGhlc2UgY2FzZXMKKyNpZm5kZWYgX0xJQkNQUF9WRVJTSU9OCisgIEVYUEVDVF9UUlVFKFRl
c3RNb3ZlQXNzaWduPGludCgpPigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248aW50
KGludCkgY29uc3Q+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFzc2lnbjxpbnQoLi4uKSB2
b2xhdGlsZSY+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFzc2lnbjxpbnQoaW50LCAuLi4p
IGNvbnN0IHZvbGF0aWxlJiY+KCkpOworI2VuZGlmICAvLyBfTElCQ1BQX1ZFUlNJT04KK30KKwog
fSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL0JVSUxELmJhemVsIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvbnVtZXJpYy9CVUlMRC5iYXplbAppbmRleCBmNDk1NzFlYmIzZTEwNDI0MzQxNTFhMjIz
NzEyN2E5OWRmMWFkMzAxLi4zMjRjZTY2OTVlNDAyYzg5NzNmYzViNWRmMjU3YWE1ZjI2NTIwM2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL0JVSUxELmJhemVsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVy
aWMvQlVJTEQuYmF6ZWwKQEAgLTQ5LDYgKzQ5LDcgQEAgY2NfdGVzdCgKICAgICAgICAgIjppbnQx
MjgiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9o
ZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9oYXNoOmhhc2hfdGVzdGluZyIsCiAgICAgICAgICIv
L2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0
Ly86Z3Rlc3RfbWFpbiIsCiAgICAgXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9udW1lcmljL2ludDEyOC5oCmluZGV4IDJkMTMxYjhiZGExYzM0OGQ5MTc0M2U3
YzQyZDM4YTU3OTY4YzMzMGIuLjc5YjYyYTc1ODY2OTVkNWIyZjQzMWQzOGFmNTJhMGFiMjI3NGFl
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJp
Yy9pbnQxMjguaApAQCAtMTkyLDYgKzE5MiwxMiBAQCBjbGFzcwogICAvLyBSZXR1cm5zIHRoZSBo
aWdoZXN0IHZhbHVlIGZvciBhIDEyOC1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgZnJpZW5kIGNv
bnN0ZXhwciB1aW50MTI4IFVpbnQxMjhNYXgoKTsKIAorICAvLyBTdXBwb3J0IGZvciBhYnNsOjpI
YXNoLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShI
IGgsIHVpbnQxMjggdikgeworICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoKSwgVWlu
dDEyOEhpZ2g2NCh2KSwgVWludDEyOExvdzY0KHYpKTsKKyAgfQorCiAgcHJpdmF0ZToKICAgY29u
c3RleHByIHVpbnQxMjgodWludDY0X3QgaGlnaCwgdWludDY0X3QgbG93KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3Rl
c3QuY2MKaW5kZXggMWViM2UwZWM4OTYxYzFjNmM4ODc1NmVmMWYyMDFmMDIwM2FlZTBhMi4uZGZl
MzQ3NWFjYTA2MjdiMjllNjMzY2MyZjg1Y2U4NDZiNjFiYzNmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bnVtZXJpYy9pbnQxMjhfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF90ZXN0LmNj
CkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUg
ImFic2wvYmFzZS9pbnRlcm5hbC9jeWNsZWNsb2NrLmgiCisjaW5jbHVkZSAiYWJzbC9oYXNoL2hh
c2hfdGVzdGluZy5oIgogI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgogCiAjaWYg
ZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPT0gMTkwMApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuYmF6ZWwKaW5kZXggM2E1
ZjEzMzJjZGEwZTFmNzA0MGVmMGRiZGFlNTU3YjAxODIxMzg1NC4uNmQ3YzI2MTlhNTMwZTAwMGY3
NGVhMzExNWRmZDc5N2Q3MDIwNTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9CVUlMRC5i
YXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxELmJhemVsCkBAIC0xOSw2ICsxOSw3IEBAIGxv
YWQoCiAgICAgIkFCU0xfREVGQVVMVF9DT1BUUyIsCiAgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiAg
ICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHIiwKKyAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUdfTElO
S09QVFMiLAogKQogCiBwYWNrYWdlKApAQCAtNjksNiArNzAsNyBAQCBjY19saWJyYXJ5KAogICAg
IGRlcHMgPSBbCiAgICAgICAgICI6aW50ZXJuYWwiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLAor
ICAgICAgICAiLy9hYnNsL2Jhc2U6Yml0cyIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWci
LAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKICAgICAgICAgIi8vYWJzbC9i
YXNlOmVuZGlhbiIsCkBAIC04Niw3ICs4OCw2IEBAIGNjX2xpYnJhcnkoCiAgICAgICAgICJpbnRl
cm5hbC91dGY4LmNjIiwKICAgICBdLAogICAgIGhkcnMgPSBbCi0gICAgICAgICJpbnRlcm5hbC9i
aXRzLmgiLAogICAgICAgICAiaW50ZXJuYWwvY2hhcl9tYXAuaCIsCiAgICAgICAgICJpbnRlcm5h
bC9vc3RyaW5nc3RyZWFtLmgiLAogICAgICAgICAiaW50ZXJuYWwvcmVzaXplX3VuaW5pdGlhbGl6
ZWQuaCIsCkBAIC0yMTIsNyArMjEzLDYgQEAgY2NfdGVzdCgKICAgICB2aXNpYmlsaXR5ID0gWyIv
L3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6aW50ZXJuYWwi
LAotICAgICAgICAiOnN0cmluZ3MiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJz
IiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAgICBd
LApAQCAtMjM3LDYgKzIzNyw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAg
c3JjcyA9IFsic3RyaW5nX3ZpZXdfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NP
UFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElP
TlNfRkxBR19MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0
ZSJdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3RyaW5ncyIsCkBAIC0zNzMsNyArMzc0LDYg
QEAgY2NfdGVzdCgKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAog
ICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3RyaW5ncyIsCi0gICAgICAgICIvL2Fic2wvbWVtb3J5
IiwKICAgICAgICAgIkBjb21fZ2l0aHViX2dvb2dsZV9iZW5jaG1hcmsvLzpiZW5jaG1hcmtfbWFp
biIsCiAgICAgXSwKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuZ24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL0JVSUxELmduCmluZGV4IDlhOGExMGQwZTcxMDhlNzllNDJjOWM1YjM2MzU1Y2Y4
NzkwMTZiOTUuLjIwYWY4M2MwZTUxOGI2NTBlYjJlODk5ZDNlN2IzYzllZmU3YzEwOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9CVUlMRC5n
bgpAQCAtNTksNiArNTksNyBAQCBzb3VyY2Vfc2V0KCJzdHJpbmdzIikgewogICBkZXBzID0gWwog
ICAgICI6aW50ZXJuYWwiLAogICAgICIuLi9iYXNlIiwKKyAgICAiLi4vYmFzZTpiaXRzIiwKICAg
ICAiLi4vYmFzZTpjb25maWciLAogICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgIi4u
L2Jhc2U6ZW5kaWFuIiwKQEAgLTgxLDcgKzgyLDYgQEAgc291cmNlX3NldCgiaW50ZXJuYWwiKSB7
CiAgICAgImludGVybmFsL3V0ZjguY2MiLAogICBdCiAgIHB1YmxpYyA9IFsKLSAgICAiaW50ZXJu
YWwvYml0cy5oIiwKICAgICAiaW50ZXJuYWwvY2hhcl9tYXAuaCIsCiAgICAgImludGVybmFsL29z
dHJpbmdzdHJlYW0uaCIsCiAgICAgImludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkLmgiLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
Q01ha2VMaXN0cy50eHQKaW5kZXggY2QxMjIxMzQ3MjlmYTY4NmU5ODYxMDI2OWYxOGFjYjE4Zjhk
MzAwNy4uZjNlNDE2MjM4N2YxNWM4MzJkNzUwNjJhZGNjNmI3ZWQ1ZDVkYTE3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0NNYWtl
TGlzdHMudHh0CkBAIC0zMiw3ICszMiw2IEBAIGxpc3QoQVBQRU5EIFNUUklOR1NfUFVCTElDX0hF
QURFUlMKIAogCiBsaXN0KEFQUEVORCBTVFJJTkdTX0lOVEVSTkFMX0hFQURFUlMKLSAgImludGVy
bmFsL2JpdHMuaCIKICAgImludGVybmFsL2NoYXJfbWFwLmgiCiAgICJpbnRlcm5hbC9jaGFyY29u
dl9iaWdpbnQuaCIKICAgImludGVybmFsL2NoYXJjb252X3BhcnNlLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2FzY2lpLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpLmgKaW5kZXggOTZhNjQ1
NDFjMzIxYTcxMGQyOWVmYzhkOTI2Mzg2MmYxYjk5NjBlNy4uNDhhOWRhMjJlNzY5YTg1MTI4YTY5
Y2YyZGZjMzMyOTgwYWZlZDQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvYXNjaWkuaApAQCAtMTY1LDcgKzE2NSw3IEBAIGlubGluZSBjaGFy
IGFzY2lpX3RvbG93ZXIodW5zaWduZWQgY2hhciBjKSB7CiAvLyBDb252ZXJ0cyB0aGUgY2hhcmFj
dGVycyBpbiBgc2AgdG8gbG93ZXJjYXNlLCBjaGFuZ2luZyB0aGUgY29udGVudHMgb2YgYHNgLgog
dm9pZCBBc2NpaVN0clRvTG93ZXIoc3RkOjpzdHJpbmcqIHMpOwogCi0vLyBDcmVhdGVzIGEgbG93
ZXJjYXNlIHN0ZDo6c3RyaW5nIGZyb20gYSBnaXZlbiBhYnNsOjpzdHJpbmdfdmlldy4KKy8vIENy
ZWF0ZXMgYSBsb3dlcmNhc2Ugc3RyaW5nIGZyb20gYSBnaXZlbiBhYnNsOjpzdHJpbmdfdmlldy4K
IEFCU0xfTVVTVF9VU0VfUkVTVUxUIGlubGluZSBzdGQ6OnN0cmluZyBBc2NpaVN0clRvTG93ZXIo
YWJzbDo6c3RyaW5nX3ZpZXcgcykgewogICBzdGQ6OnN0cmluZyByZXN1bHQocyk7CiAgIGFic2w6
OkFzY2lpU3RyVG9Mb3dlcigmcmVzdWx0KTsKQEAgLTE4Myw3ICsxODMsNyBAQCBpbmxpbmUgY2hh
ciBhc2NpaV90b3VwcGVyKHVuc2lnbmVkIGNoYXIgYykgewogLy8gQ29udmVydHMgdGhlIGNoYXJh
Y3RlcnMgaW4gYHNgIHRvIHVwcGVyY2FzZSwgY2hhbmdpbmcgdGhlIGNvbnRlbnRzIG9mIGBzYC4K
IHZvaWQgQXNjaWlTdHJUb1VwcGVyKHN0ZDo6c3RyaW5nKiBzKTsKIAotLy8gQ3JlYXRlcyBhbiB1
cHBlcmNhc2Ugc3RkOjpzdHJpbmcgZnJvbSBhIGdpdmVuIGFic2w6OnN0cmluZ192aWV3LgorLy8g
Q3JlYXRlcyBhbiB1cHBlcmNhc2Ugc3RyaW5nIGZyb20gYSBnaXZlbiBhYnNsOjpzdHJpbmdfdmll
dy4KIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGlubGluZSBzdGQ6OnN0cmluZyBBc2NpaVN0clRvVXBw
ZXIoYWJzbDo6c3RyaW5nX3ZpZXcgcykgewogICBzdGQ6OnN0cmluZyByZXN1bHQocyk7CiAgIGFi
c2w6OkFzY2lpU3RyVG9VcHBlcigmcmVzdWx0KTsKQEAgLTE5NSwxMCArMTk1LDEwIEBAIEFCU0xf
TVVTVF9VU0VfUkVTVUxUIGlubGluZSBzdGQ6OnN0cmluZyBBc2NpaVN0clRvVXBwZXIoYWJzbDo6
c3RyaW5nX3ZpZXcgcykgewogQUJTTF9NVVNUX1VTRV9SRVNVTFQgaW5saW5lIGFic2w6OnN0cmlu
Z192aWV3IFN0cmlwTGVhZGluZ0FzY2lpV2hpdGVzcGFjZSgKICAgICBhYnNsOjpzdHJpbmdfdmll
dyBzdHIpIHsKICAgYXV0byBpdCA9IHN0ZDo6ZmluZF9pZl9ub3Qoc3RyLmJlZ2luKCksIHN0ci5l
bmQoKSwgYWJzbDo6YXNjaWlfaXNzcGFjZSk7Ci0gIHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyhp
dCwgc3RyLmVuZCgpIC0gaXQpOworICByZXR1cm4gc3RyLnN1YnN0cihpdCAtIHN0ci5iZWdpbigp
KTsKIH0KIAotLy8gU3RyaXBzIGluIHBsYWNlIHdoaXRlc3BhY2UgZnJvbSB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBnaXZlbiBzdGQ6OnN0cmluZy4KKy8vIFN0cmlwcyBpbiBwbGFjZSB3aGl0ZXNwYWNl
IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZ2l2ZW4gc3RyaW5nLgogaW5saW5lIHZvaWQgU3Ry
aXBMZWFkaW5nQXNjaWlXaGl0ZXNwYWNlKHN0ZDo6c3RyaW5nKiBzdHIpIHsKICAgYXV0byBpdCA9
IHN0ZDo6ZmluZF9pZl9ub3Qoc3RyLT5iZWdpbigpLCBzdHItPmVuZCgpLCBhYnNsOjphc2NpaV9p
c3NwYWNlKTsKICAgc3RyLT5lcmFzZShzdHItPmJlZ2luKCksIGl0KTsKQEAgLTIwOSwxMCArMjA5
LDEwIEBAIGlubGluZSB2b2lkIFN0cmlwTGVhZGluZ0FzY2lpV2hpdGVzcGFjZShzdGQ6OnN0cmlu
Zyogc3RyKSB7CiBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgYWJzbDo6c3RyaW5nX3ZpZXcg
U3RyaXBUcmFpbGluZ0FzY2lpV2hpdGVzcGFjZSgKICAgICBhYnNsOjpzdHJpbmdfdmlldyBzdHIp
IHsKICAgYXV0byBpdCA9IHN0ZDo6ZmluZF9pZl9ub3Qoc3RyLnJiZWdpbigpLCBzdHIucmVuZCgp
LCBhYnNsOjphc2NpaV9pc3NwYWNlKTsKLSAgcmV0dXJuIGFic2w6OnN0cmluZ192aWV3KHN0ci5i
ZWdpbigpLCBzdHIucmVuZCgpIC0gaXQpOworICByZXR1cm4gc3RyLnN1YnN0cigwLCBzdHIucmVu
ZCgpIC0gaXQpOwogfQogCi0vLyBTdHJpcHMgaW4gcGxhY2Ugd2hpdGVzcGFjZSBmcm9tIHRoZSBl
bmQgb2YgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nCisvLyBTdHJpcHMgaW4gcGxhY2Ugd2hpdGVzcGFj
ZSBmcm9tIHRoZSBlbmQgb2YgdGhlIGdpdmVuIHN0cmluZwogaW5saW5lIHZvaWQgU3RyaXBUcmFp
bGluZ0FzY2lpV2hpdGVzcGFjZShzdGQ6OnN0cmluZyogc3RyKSB7CiAgIGF1dG8gaXQgPSBzdGQ6
OmZpbmRfaWZfbm90KHN0ci0+cmJlZ2luKCksIHN0ci0+cmVuZCgpLCBhYnNsOjphc2NpaV9pc3Nw
YWNlKTsKICAgc3RyLT5lcmFzZShzdHItPnJlbmQoKSAtIGl0KTsKQEAgLTIyNSw3ICsyMjUsNyBA
QCBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgYWJzbDo6c3RyaW5nX3ZpZXcgU3RyaXBBc2Np
aVdoaXRlc3BhY2UoCiAgIHJldHVybiBTdHJpcFRyYWlsaW5nQXNjaWlXaGl0ZXNwYWNlKFN0cmlw
TGVhZGluZ0FzY2lpV2hpdGVzcGFjZShzdHIpKTsKIH0KIAotLy8gU3RyaXBzIGluIHBsYWNlIHdo
aXRlc3BhY2UgZnJvbSBib3RoIGVuZHMgb2YgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nCisvLyBTdHJp
cHMgaW4gcGxhY2Ugd2hpdGVzcGFjZSBmcm9tIGJvdGggZW5kcyBvZiB0aGUgZ2l2ZW4gc3RyaW5n
CiBpbmxpbmUgdm9pZCBTdHJpcEFzY2lpV2hpdGVzcGFjZShzdGQ6OnN0cmluZyogc3RyKSB7CiAg
IFN0cmlwVHJhaWxpbmdBc2NpaVdoaXRlc3BhY2Uoc3RyKTsKICAgU3RyaXBMZWFkaW5nQXNjaWlX
aGl0ZXNwYWNlKHN0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9jaGFyY29udi5jYwppbmRleCAwOGMzOTQ3ZWNjZDQ3NWRlZTMzMzEwZDI0
N2JmODc0MDAzOTk4MGM4Li5jN2I4Yzk4YjFiNDQ1OWM1NmVhODUxZTkyODFlMzVhOTI2MTNjNjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvY2hhcmNvbnYuY2MKQEAgLTIwLDggKzIwLDggQEAKICNpbmNsdWRlIDxjc3RyaW5nPgogCiAj
aW5jbHVkZSAiYWJzbC9iYXNlL2Nhc3RzLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFs
L2JpdHMuaCIKICNpbmNsdWRlICJhYnNsL251bWVyaWMvaW50MTI4LmgiCi0jaW5jbHVkZSAiYWJz
bC9zdHJpbmdzL2ludGVybmFsL2JpdHMuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3MvaW50ZXJu
YWwvY2hhcmNvbnZfYmlnaW50LmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL2No
YXJjb252X3BhcnNlLmgiCiAKQEAgLTI0Myw5ICsyNDMsOSBAQCBzdHJ1Y3QgQ2FsY3VsYXRlZEZs
b2F0IHsKIC8vIG1pbnVzIHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvIGJpdHMuKQogaW50IEJp
dFdpZHRoKHVpbnQxMjggdmFsdWUpIHsKICAgaWYgKFVpbnQxMjhIaWdoNjQodmFsdWUpID09IDAp
IHsKLSAgICByZXR1cm4gNjQgLSBzdHJpbmdzX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0
KFVpbnQxMjhMb3c2NCh2YWx1ZSkpOworICAgIHJldHVybiA2NCAtIGJhc2VfaW50ZXJuYWw6OkNv
dW50TGVhZGluZ1plcm9zNjQoVWludDEyOExvdzY0KHZhbHVlKSk7CiAgIH0KLSAgcmV0dXJuIDEy
OCAtIHN0cmluZ3NfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQoVWludDEyOEhpZ2g2NCh2
YWx1ZSkpOworICByZXR1cm4gMTI4IC0gYmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2
NChVaW50MTI4SGlnaDY0KHZhbHVlKSk7CiB9CiAKIC8vIENhbGN1bGF0ZXMgaG93IGZhciB0byB0
aGUgcmlnaHQgYSBtYW50aXNzYSBuZWVkcyB0byBiZSBzaGlmdGVkIHRvIGNyZWF0ZSBhCkBAIC01
MTgsNyArNTE4LDcgQEAgQ2FsY3VsYXRlZEZsb2F0IENhbGN1bGF0ZUZyb21QYXJzZWRIZXhhZGVj
aW1hbCgKICAgICBjb25zdCBzdHJpbmdzX2ludGVybmFsOjpQYXJzZWRGbG9hdCYgcGFyc2VkX2hl
eCkgewogICB1aW50NjRfdCBtYW50aXNzYSA9IHBhcnNlZF9oZXgubWFudGlzc2E7CiAgIGludCBl
eHBvbmVudCA9IHBhcnNlZF9oZXguZXhwb25lbnQ7Ci0gIGludCBtYW50aXNzYV93aWR0aCA9IDY0
IC0gc3RyaW5nc19pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChtYW50aXNzYSk7CisgIGlu
dCBtYW50aXNzYV93aWR0aCA9IDY0IC0gYmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2
NChtYW50aXNzYSk7CiAgIGNvbnN0IGludCBzaGlmdCA9IE5vcm1hbGl6ZWRTaGlmdFNpemU8Rmxv
YXRUeXBlPihtYW50aXNzYV93aWR0aCwgZXhwb25lbnQpOwogICBib29sIHJlc3VsdF9leGFjdDsK
ICAgZXhwb25lbnQgKz0gc2hpZnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmgKaW5kZXggM2UzMTM2NzljOTYxOGFhODhkYzll
OGI1NWU4OGU5NmEwZjdmNjk2Yi4uMDczNTM4Mjk2MjM1NmNmZjdiZmI1ZjNlYmQzYTAzOTNkMmQy
ODEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvY2hhcmNvbnYuaApAQCAtMjIsNyArMjIsNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyBX
b3JrYWxpa2UgY29tcGF0aWJpbHR5IHZlcnNpb24gb2Ygc3RkOjpjaGFyc19mb3JtYXQgZnJvbSBD
KysxNy4KIC8vCiAvLyBUaGlzIGlzIGFuIGJpdGZpZWxkIGVudW1lcmF0b3Igd2hpY2ggY2FuIGJl
IHBhc3NlZCB0byBhYnNsOjpmcm9tX2NoYXJzIHRvCi0vLyBjb25maWd1cmUgdGhlIHN0ZDo6c3Ry
aW5nLXRvLWZsb2F0IGNvbnZlcnNpb24uCisvLyBjb25maWd1cmUgdGhlIHN0cmluZy10by1mbG9h
dCBjb252ZXJzaW9uLgogZW51bSBjbGFzcyBjaGFyc19mb3JtYXQgewogICBzY2llbnRpZmljID0g
MSwKICAgZml4ZWQgPSAyLApAQCAtMzAsNyArMzAsNyBAQCBlbnVtIGNsYXNzIGNoYXJzX2Zvcm1h
dCB7CiAgIGdlbmVyYWwgPSBmaXhlZCB8IHNjaWVudGlmaWMsCiB9OwogCi0vLyBUaGUgcmV0dXJu
IHJlc3VsdCBvZiBhIHN0ZDo6c3RyaW5nLXRvLW51bWJlciBjb252ZXJzaW9uLgorLy8gVGhlIHJl
dHVybiByZXN1bHQgb2YgYSBzdHJpbmctdG8tbnVtYmVyIGNvbnZlcnNpb24uCiAvLwogLy8gYGVj
YCB3aWxsIGJlIHNldCB0byBgaW52YWxpZF9hcmd1bWVudGAgaWYgYSB3ZWxsLWZvcm1lZCBudW1i
ZXIgd2FzIG5vdCBmb3VuZAogLy8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dCByYW5nZSwgYHJl
c3VsdF9vdXRfb2ZfcmFuZ2VgIGlmIGEgd2VsbC1mb3JtZWQKQEAgLTY3LDcgKzY3LDcgQEAgc3Ry
dWN0IGZyb21fY2hhcnNfcmVzdWx0IHsKIC8vIElmIGBmbXRgIGlzIHNldCwgaXQgbXVzdCBiZSBv
bmUgb2YgdGhlIGVudW1lcmF0b3IgdmFsdWVzIG9mIHRoZSBjaGFyc19mb3JtYXQuCiAvLyAoVGhp
cyBpcyBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgY2hhcnNfZm9ybWF0IGlzIGEgYml0bWFzayB0eXBl
LikgIElmIHNldCB0bwogLy8gYHNjaWVudGlmaWNgLCBhIG1hdGNoaW5nIG51bWJlciBtdXN0IGNv
bnRhaW4gYW4gZXhwb25lbnQuICBJZiBzZXQgdG8gYGZpeGVkYCwKLS8vIHRoZW4gYW4gZXhwb25l
bnQgd2lsbCBuZXZlciBtYXRjaC4gIChGb3IgZXhhbXBsZSwgdGhlIHN0ZDo6c3RyaW5nICIxZTUi
IHdpbGwgYmUKKy8vIHRoZW4gYW4gZXhwb25lbnQgd2lsbCBuZXZlciBtYXRjaC4gIChGb3IgZXhh
bXBsZSwgdGhlIHN0cmluZyAiMWU1IiB3aWxsIGJlCiAvLyBwYXJzZWQgYXMgIjEiLikgIElmIHNl
dCB0byBgaGV4YCwgdGhlbiBhIGhleGFkZWNpbWFsIGZsb2F0IGlzIHBhcnNlZCBpbiB0aGUKIC8v
IGZvcm1hdCB0aGF0IHN0cnRvZCgpIGFjY2VwdHMsIGV4Y2VwdCB0aGF0IGEgIjB4IiBwcmVmaXgg
aXMgTk9UIG1hdGNoZWQuCiAvLyAoSW4gcGFydGljdWxhciwgaW4gYGhleGAgbW9kZSwgdGhlIGlu
cHV0ICIweGZmIiByZXN1bHRzIGluIHRoZSBsYXJnZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2NoYXJjb252X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252X3Rlc3QuY2MKaW5k
ZXggZjhkNzFjYzZjNDQ4YzdhM2U3ZjBjYWY5ODA5OGZjN2I0ZDJkNTY0Mi4uODk0MThmZTk0OGZm
ZWRjNGI3NWFjMmZhODEwZmQ0NDE2NjA1YzNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9j
aGFyY29udl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnZfdGVzdC5jYwpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgewogCiAjaWYgQUJTTF9DT01QSUxFUl9ET0VTX0VYQUNU
X1JPVU5ESU5HCiAKLS8vIFRlc3RzIHRoYXQgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nIGlzIGFjY2Vw
dGVkIGJ5IGFic2w6OmZyb21fY2hhcnMsIGFuZCB0aGF0IGl0CisvLyBUZXN0cyB0aGF0IHRoZSBn
aXZlbiBzdHJpbmcgaXMgYWNjZXB0ZWQgYnkgYWJzbDo6ZnJvbV9jaGFycywgYW5kIHRoYXQgaXQK
IC8vIGNvbnZlcnRzIGV4YWN0bHkgZXF1YWwgdG8gdGhlIGdpdmVuIG51bWJlci4KIHZvaWQgVGVz
dERvdWJsZVBhcnNlKGFic2w6OnN0cmluZ192aWV3IHN0ciwgZG91YmxlIGV4cGVjdGVkX251bWJl
cikgewogICBTQ09QRURfVFJBQ0Uoc3RyKTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBURVNUKEZyb21D
aGFycywgTmVhclJvdW5kaW5nQ2FzZXNFeHBsaWNpdCkgewogICBFWFBFQ1RfRVEoVG9GbG9hdCgi
NDU5OTI2NjAxMDExLmUxNSIpLCBsZGV4cGYoMTI0NjYzMzYsIDY1KSk7CiB9CiAKLS8vIENvbW1v
biB0ZXN0IGxvZ2ljIGZvciBjb252ZXJ0aW5nIGEgc3RkOjpzdHJpbmcgd2hpY2ggbGllcyBleGFj
dGx5IGhhbGZ3YXkgYmV0d2VlbgorLy8gQ29tbW9uIHRlc3QgbG9naWMgZm9yIGNvbnZlcnRpbmcg
YSBzdHJpbmcgd2hpY2ggbGllcyBleGFjdGx5IGhhbGZ3YXkgYmV0d2VlbgogLy8gdHdvIHRhcmdl
dCBmbG9hdHMuCiAvLwogLy8gbWFudGlzc2EgYW5kIGV4cG9uZW50IHJlcHJlc2VudCB0aGUgcHJl
Y2lzZSB2YWx1ZSBiZXR3ZWVuIHR3byBmbG9hdGluZyBwb2ludApAQCAtNjU1LDcgKzY1NSw3IEBA
IGludCBOZXh0U3RlcChpbnQgc3RlcCkgewogLy8gaXMgY29ycmVjdCBmb3IgaW4tYm91bmRzIHZh
bHVlcywgYW5kIHRoYXQgb3ZlcmZsb3cgYW5kIHVuZGVyZmxvdyBhcmUgZG9uZQogLy8gY29ycmVj
dGx5IGZvciBvdXQtb2YtYm91bmRzIHZhbHVlcy4KIC8vCi0vLyBpbnB1dF9nZW5lcmF0b3IgbWFw
cyBmcm9tIGFuIGludGVnZXIgaW5kZXggdG8gYSBzdGQ6OnN0cmluZyB0byB0ZXN0LgorLy8gaW5w
dXRfZ2VuZXJhdG9yIG1hcHMgZnJvbSBhbiBpbnRlZ2VyIGluZGV4IHRvIGEgc3RyaW5nIHRvIHRl
c3QuCiAvLyBleHBlY3RlZF9nZW5lcmF0b3IgbWFwcyBmcm9tIGFuIGludGVnZXIgaW5kZXggdG8g
YW4gZXhwZWN0ZWQgRmxvYXQgdmFsdWUuCiAvLyBmcm9tX2NoYXJzIGNvbnZlcnNpb24gb2YgaW5w
dXRfZ2VuZXJhdG9yKGkpIHNob3VsZCByZXN1bHQgaW4KIC8vIGV4cGVjdGVkX2dlbmVyYXRvcihp
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2VzY2FwaW5nLmNjCmluZGV4IGZiYzlmNzU2MzE1ZmE3ZmU5YTdiYjAyNWQ0OGMzZmIyODRiOWU4
ZmIuLjhkOGIwMGIyMDAxY2U4MzA3YjQ4Nzg4MDA3Y2M1NjU1YTc1ZjU0ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZy5j
YwpAQCAtODksNyArODksNyBAQCBpbmxpbmUgYm9vbCBJc1N1cnJvZ2F0ZShjaGFyMzJfdCBjLCBh
YnNsOjpzdHJpbmdfdmlldyBzcmMsIHN0ZDo6c3RyaW5nKiBlcnJvcikgewogLy8KIC8vICAgIFVu
ZXNjYXBlcyBDIGVzY2FwZSBzZXF1ZW5jZXMgYW5kIGlzIHRoZSByZXZlcnNlIG9mIENFc2NhcGUo
KS4KIC8vCi0vLyAgICBJZiAnc291cmNlJyBpcyB2YWxpZCwgc3RvcmVzIHRoZSB1bmVzY2FwZWQg
c3RkOjpzdHJpbmcgYW5kIGl0cyBzaXplIGluCisvLyAgICBJZiAnc291cmNlJyBpcyB2YWxpZCwg
c3RvcmVzIHRoZSB1bmVzY2FwZWQgc3RyaW5nIGFuZCBpdHMgc2l6ZSBpbgogLy8gICAgJ2Rlc3Qn
IGFuZCAnZGVzdF9sZW4nIHJlc3BlY3RpdmVseSwgYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNl
CiAvLyAgICByZXR1cm5zIGZhbHNlIGFuZCBvcHRpb25hbGx5IHN0b3JlcyB0aGUgZXJyb3IgZGVz
Y3JpcHRpb24gaW4KIC8vICAgICdlcnJvcicuIFNldCAnZXJyb3InIHRvIG51bGxwdHIgdG8gZGlz
YWJsZSBlcnJvciByZXBvcnRpbmcuCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBDVW5lc2NhcGVJ
bnRlcm5hbChhYnNsOjpzdHJpbmdfdmlldyBzb3VyY2UsIGJvb2wgbGVhdmVfbnVsbHNfZXNjYXBl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogZGVzdCwgcHRyZGlmZl90KiBkZXN0X2xl
biwgc3RkOjpzdHJpbmcqIGVycm9yKSB7CiAgIGNoYXIqIGQgPSBkZXN0OwogICBjb25zdCBjaGFy
KiBwID0gc291cmNlLmRhdGEoKTsKLSAgY29uc3QgY2hhciogZW5kID0gc291cmNlLmVuZCgpOwor
ICBjb25zdCBjaGFyKiBlbmQgPSBwICsgc291cmNlLnNpemUoKTsKICAgY29uc3QgY2hhciogbGFz
dF9ieXRlID0gZW5kIC0gMTsKIAogICAvLyBTbWFsbCBvcHRpbWl6YXRpb24gZm9yIGNhc2Ugd2hl
cmUgc291cmNlID0gZGVzdCBhbmQgdGhlcmUncyBubyBlc2NhcGluZwpAQCAtMjk0LDcgKzI5NCw3
IEBAIGJvb2wgQ1VuZXNjYXBlSW50ZXJuYWwoYWJzbDo6c3RyaW5nX3ZpZXcgc291cmNlLCBib29s
IGxlYXZlX251bGxzX2VzY2FwZWQsCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBDVW5lc2NhcGVJbnRl
cm5hbCgpCiAvLwotLy8gICAgU2FtZSBhcyBhYm92ZSBidXQgdXNlcyBhIEMrKyBzdGQ6OnN0cmlu
ZyBmb3Igb3V0cHV0LiAnc291cmNlJyBhbmQgJ2Rlc3QnCisvLyAgICBTYW1lIGFzIGFib3ZlIGJ1
dCB1c2VzIGEgQysrIHN0cmluZyBmb3Igb3V0cHV0LiAnc291cmNlJyBhbmQgJ2Rlc3QnCiAvLyAg
ICBtYXkgYmUgdGhlIHNhbWUuCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBib29sIENVbmVzY2FwZUludGVy
bmFsKGFic2w6OnN0cmluZ192aWV3IHNvdXJjZSwgYm9vbCBsZWF2ZV9udWxsc19lc2NhcGVkLApA
QCAtMzA0LDcgKzMwNCw3IEBAIGJvb2wgQ1VuZXNjYXBlSW50ZXJuYWwoYWJzbDo6c3RyaW5nX3Zp
ZXcgc291cmNlLCBib29sIGxlYXZlX251bGxzX2VzY2FwZWQsCiAgIHB0cmRpZmZfdCBkZXN0X3Np
emU7CiAgIGlmICghQ1VuZXNjYXBlSW50ZXJuYWwoc291cmNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIGxlYXZlX251bGxzX2VzY2FwZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3RfY2FzdDxjaGFyKj4oZGVzdC0+ZGF0YSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAm
KCpkZXN0KVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVzdF9zaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIGVycm9yKSkgewogICAgIHJldHVybiBmYWxzZTsKQEAgLTY4NCw3
ICs2ODQsNyBAQCBib29sIEJhc2U2NFVuZXNjYXBlSW50ZXJuYWwoY29uc3QgY2hhciogc3JjX3Bh
cmFtLCBzaXplX3Qgc3pzcmMsIGNoYXIqIGRlc3QsCiAvLyBUaGUgYXJyYXlzIGJlbG93IHdlcmUg
Z2VuZXJhdGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29kZQogLy8gI2luY2x1ZGUgPHN5cy90aW1lLmg+
CiAvLyAjaW5jbHVkZSA8c3RkbGliLmg+Ci0vLyAjaW5jbHVkZSA8c3RkOjpzdHJpbmcuaD4KKy8v
ICNpbmNsdWRlIDxzdHJpbmcuaD4KIC8vIG1haW4oKQogLy8gewogLy8gICBzdGF0aWMgY29uc3Qg
Y2hhciBCYXNlNjRbXSA9CkBAIC05MzksNyArOTM5LDggQEAgY29uc3RleHByIGNoYXIga0Jhc2U2
NENoYXJzW10gPQogY29uc3RleHByIGNoYXIga1dlYlNhZmVCYXNlNjRDaGFyc1tdID0KICAgICAi
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0
NTY3ODktXyI7CiAKLXZvaWQgQmFzZTY0RXNjYXBlSW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hh
ciogc3JjLCBzaXplX3Qgc3pzcmMsIHN0ZDo6c3RyaW5nKiBkZXN0LAordGVtcGxhdGUgPHR5cGVu
YW1lIFN0cmluZz4KK3ZvaWQgQmFzZTY0RXNjYXBlSW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hh
ciogc3JjLCBzaXplX3Qgc3pzcmMsIFN0cmluZyogZGVzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBkb19wYWRkaW5nLCBjb25zdCBjaGFyKiBiYXNlNjRfY2hhcnMpIHsKICAgY29u
c3Qgc2l6ZV90IGNhbGNfZXNjYXBlZF9zaXplID0KICAgICAgIENhbGN1bGF0ZUJhc2U2NEVzY2Fw
ZWRMZW5JbnRlcm5hbChzenNyYywgZG9fcGFkZGluZyk7CkBAIC05NTEsNyArOTUyLDggQEAgdm9p
ZCBCYXNlNjRFc2NhcGVJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmMsIHNpemVfdCBz
enNyYywgc3RkOjpzdHJpbmcqIGQKICAgZGVzdC0+ZXJhc2UoZXNjYXBlZF9sZW4pOwogfQogCi1i
b29sIEJhc2U2NFVuZXNjYXBlSW50ZXJuYWwoY29uc3QgY2hhciogc3JjLCBzaXplX3Qgc2xlbiwg
c3RkOjpzdHJpbmcqIGRlc3QsCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nPgorYm9vbCBCYXNl
NjRVbmVzY2FwZUludGVybmFsKGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IHNsZW4sIFN0cmluZyog
ZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaWduZWQgY2hhciogdW5i
YXNlNjQpIHsKICAgLy8gRGV0ZXJtaW5lIHRoZSBzaXplIG9mIHRoZSBvdXRwdXQgc3RkOjpzdHJp
bmcuICBCYXNlNjQgZW5jb2RlcyBldmVyeSAzIGJ5dGVzIGludG8KICAgLy8gNCBjaGFyYWN0ZXJz
LiAgYW55IGxlZnRvdmVyIGNoYXJzIGFyZSBhZGRlZCBkaXJlY3RseSBmb3IgZ29vZCBtZWFzdXJl
LgpAQCAtOTk5LDcgKzEwMDEsNyBAQCBjb25zdGV4cHIgY2hhciBrSGV4VmFsdWVbMjU2XSA9IHsK
IC8qIGNsYW5nLWZvcm1hdCBvbiAqLwogCiAvLyBUaGlzIGlzIGEgdGVtcGxhdGVkIGZ1bmN0aW9u
IHNvIHRoYXQgVCBjYW4gYmUgZWl0aGVyIGEgY2hhcioKLS8vIG9yIGEgc3RkOjpzdHJpbmcuICBU
aGlzIHdvcmtzIGJlY2F1c2Ugd2UgdXNlIHRoZSBbXSBvcGVyYXRvciB0byBhY2Nlc3MKKy8vIG9y
IGEgc3RyaW5nLiAgVGhpcyB3b3JrcyBiZWNhdXNlIHdlIHVzZSB0aGUgW10gb3BlcmF0b3IgdG8g
YWNjZXNzCiAvLyBpbmRpdmlkdWFsIGNoYXJhY3RlcnMgYXQgYSB0aW1lLgogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiB2b2lkIEhleFN0cmluZ1RvQnl0ZXNJbnRlcm5hbChjb25zdCBjaGFyKiBmcm9t
LCBUIHRvLCBwdHJkaWZmX3QgbnVtKSB7CkBAIC0xMDA5LDcgKzEwMTEsNyBAQCB2b2lkIEhleFN0
cmluZ1RvQnl0ZXNJbnRlcm5hbChjb25zdCBjaGFyKiBmcm9tLCBUIHRvLCBwdHJkaWZmX3QgbnVt
KSB7CiAgIH0KIH0KIAotLy8gVGhpcyBpcyBhIHRlbXBsYXRlZCBmdW5jdGlvbiBzbyB0aGF0IFQg
Y2FuIGJlIGVpdGhlciBhIGNoYXIqIG9yIGEgc3RkOjpzdHJpbmcuCisvLyBUaGlzIGlzIGEgdGVt
cGxhdGVkIGZ1bmN0aW9uIHNvIHRoYXQgVCBjYW4gYmUgZWl0aGVyIGEgY2hhciogb3IgYSBzdHJp
bmcuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHZvaWQgQnl0ZXNUb0hleFN0cmluZ0ludGVybmFs
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNyYywgVCBkZXN0LCBwdHJkaWZmX3QgbnVtKSB7CiAgIGF1
dG8gZGVzdF9wdHIgPSAmZGVzdFswXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBp
bmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcuaAppbmRleCA3ZjFhYjk2ZDhmZjE1ZDU2MDQy
YjQ2NTlkNjYxNDgyMTQ3MDVmMGE1Li4yOTY1OTczMDRlNmNlM2Y1ODY1ZGMwM2E5NjdmMzQzMThl
NjliOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9lc2NhcGluZy5oCkBAIC0xNyw3ICsxNyw3IEBACiAvLyBGaWxlOiBlc2NhcGluZy5o
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KLS8vIFRoaXMgaGVhZGVyIGZpbGUgY29udGFp
bnMgc3RkOjpzdHJpbmcgdXRpbGl0aWVzIGludm9sdmVkIGluIGVzY2FwaW5nIGFuZAorLy8gVGhp
cyBoZWFkZXIgZmlsZSBjb250YWlucyBzdHJpbmcgdXRpbGl0aWVzIGludm9sdmVkIGluIGVzY2Fw
aW5nIGFuZAogLy8gdW5lc2NhcGluZyBzdHJpbmdzIGluIHZhcmlvdXMgd2F5cy4KIC8vCiAKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIGFic2wgewogCiAvLyBDVW5lc2NhcGUoKQogLy8KLS8v
IFVuZXNjYXBlcyBhIGBzb3VyY2VgIHN0ZDo6c3RyaW5nIGFuZCBjb3BpZXMgaXQgaW50byBgZGVz
dGAsIHJld3JpdGluZyBDLXN0eWxlCisvLyBVbmVzY2FwZXMgYSBgc291cmNlYCBzdHJpbmcgYW5k
IGNvcGllcyBpdCBpbnRvIGBkZXN0YCwgcmV3cml0aW5nIEMtc3R5bGUKIC8vIGVzY2FwZSBzZXF1
ZW5jZXMgKGh0dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2xhbmd1YWdlL2VzY2FwZSkg
aW50bwogLy8gdGhlaXIgcHJvcGVyIGNvZGUgcG9pbnQgZXF1aXZhbGVudHMsIHJldHVybmluZyBg
dHJ1ZWAgaWYgc3VjY2Vzc2Z1bC4KIC8vCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgYWJz
bCB7CiAvLyAgICAgMHg5OSkuCiAvLwogLy8KLS8vIElmIGFueSBlcnJvcnMgYXJlIGVuY291bnRl
cmVkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCBhbmQgc3RvcmVzIHRoZQotLy8gZmly
c3QgZW5jb3VudGVyZWQgZXJyb3IgaW4gYGVycm9yYC4gVG8gZGlzYWJsZSBlcnJvciByZXBvcnRp
bmcsIHNldCBgZXJyb3JgCi0vLyB0byBgbnVsbHB0cmAgb3IgdXNlIHRoZSBvdmVybG9hZCB3aXRo
IG5vIGVycm9yIHJlcG9ydGluZyBiZWxvdy4KKy8vIElmIGFueSBlcnJvcnMgYXJlIGVuY291bnRl
cmVkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCwgbGVhdmluZyB0aGUKKy8vIGBkZXN0
YCBvdXRwdXQgcGFyYW1ldGVyIGluIGFuIHVuc3BlY2lmaWVkIHN0YXRlLCBhbmQgc3RvcmVzIHRo
ZSBmaXJzdAorLy8gZW5jb3VudGVyZWQgZXJyb3IgaW4gYGVycm9yYC4gVG8gZGlzYWJsZSBlcnJv
ciByZXBvcnRpbmcsIHNldCBgZXJyb3JgIHRvCisvLyBgbnVsbHB0cmAgb3IgdXNlIHRoZSBvdmVy
bG9hZCB3aXRoIG5vIGVycm9yIHJlcG9ydGluZyBiZWxvdy4KIC8vCiAvLyBFeGFtcGxlOgogLy8K
QEAgLTc4LDcgKzc5LDcgQEAgaW5saW5lIGJvb2wgQ1VuZXNjYXBlKGFic2w6OnN0cmluZ192aWV3
IHNvdXJjZSwgc3RkOjpzdHJpbmcqIGRlc3QpIHsKIAogLy8gQ0VzY2FwZSgpCiAvLwotLy8gRXNj
YXBlcyBhICdzcmMnIHN0ZDo6c3RyaW5nIHVzaW5nIEMtc3R5bGUgZXNjYXBlcyBzZXF1ZW5jZXMK
Ky8vIEVzY2FwZXMgYSAnc3JjJyBzdHJpbmcgdXNpbmcgQy1zdHlsZSBlc2NhcGVzIHNlcXVlbmNl
cwogLy8gKGh0dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2xhbmd1YWdlL2VzY2FwZSks
IGVzY2FwaW5nIG90aGVyCiAvLyBub24tcHJpbnRhYmxlL25vbi13aGl0ZXNwYWNlIGJ5dGVzIGFz
IG9jdGFsIHNlcXVlbmNlcyAoZS5nLiAiXDM3NyIpLgogLy8KQEAgLTkxLDcgKzkyLDcgQEAgc3Rk
OjpzdHJpbmcgQ0VzY2FwZShhYnNsOjpzdHJpbmdfdmlldyBzcmMpOwogCiAvLyBDSGV4RXNjYXBl
KCkKIC8vCi0vLyBFc2NhcGVzIGEgJ3NyYycgc3RkOjpzdHJpbmcgdXNpbmcgQy1zdHlsZSBlc2Nh
cGUgc2VxdWVuY2VzLCBlc2NhcGluZworLy8gRXNjYXBlcyBhICdzcmMnIHN0cmluZyB1c2luZyBD
LXN0eWxlIGVzY2FwZSBzZXF1ZW5jZXMsIGVzY2FwaW5nCiAvLyBvdGhlciBub24tcHJpbnRhYmxl
L25vbi13aGl0ZXNwYWNlIGJ5dGVzIGFzIGhleGFkZWNpbWFsIHNlcXVlbmNlcyAoZS5nLgogLy8g
Ilx4RkYiKS4KIC8vCkBAIC0xMDQsNyArMTA1LDcgQEAgc3RkOjpzdHJpbmcgQ0hleEVzY2FwZShh
YnNsOjpzdHJpbmdfdmlldyBzcmMpOwogCiAvLyBVdGY4U2FmZUNFc2NhcGUoKQogLy8KLS8vIEVz
Y2FwZXMgYSAnc3JjJyBzdGQ6OnN0cmluZyB1c2luZyBDLXN0eWxlIGVzY2FwZSBzZXF1ZW5jZXMs
IGVzY2FwaW5nIGJ5dGVzIGFzCisvLyBFc2NhcGVzIGEgJ3NyYycgc3RyaW5nIHVzaW5nIEMtc3R5
bGUgZXNjYXBlIHNlcXVlbmNlcywgZXNjYXBpbmcgYnl0ZXMgYXMKIC8vIG9jdGFsIHNlcXVlbmNl
cywgYW5kIHBhc3NpbmcgdGhyb3VnaCBVVEYtOCBjaGFyYWN0ZXJzIHdpdGhvdXQgY29udmVyc2lv
bi4KIC8vIEkuZS4sIHdoZW4gZW5jb3VudGVyaW5nIGFueSBieXRlcyB3aXRoIHRoZWlyIGhpZ2gg
Yml0IHNldCwgdGhpcyBmdW5jdGlvbgogLy8gd2lsbCBub3QgZXNjYXBlIHRob3NlIHZhbHVlcywg
d2hldGhlciBvciBub3QgdGhleSBhcmUgdmFsaWQgVVRGLTguCkBAIC0xMTIsNDcgKzExMyw0NyBA
QCBzdGQ6OnN0cmluZyBVdGY4U2FmZUNFc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjKTsKIAog
Ly8gVXRmOFNhZmVDSGV4RXNjYXBlKCkKIC8vCi0vLyBFc2NhcGVzIGEgJ3NyYycgc3RkOjpzdHJp
bmcgdXNpbmcgQy1zdHlsZSBlc2NhcGUgc2VxdWVuY2VzLCBlc2NhcGluZyBieXRlcyBhcworLy8g
RXNjYXBlcyBhICdzcmMnIHN0cmluZyB1c2luZyBDLXN0eWxlIGVzY2FwZSBzZXF1ZW5jZXMsIGVz
Y2FwaW5nIGJ5dGVzIGFzCiAvLyBoZXhhZGVjaW1hbCBzZXF1ZW5jZXMsIGFuZCBwYXNzaW5nIHRo
cm91Z2ggVVRGLTggY2hhcmFjdGVycyB3aXRob3V0CiAvLyBjb252ZXJzaW9uLgogc3RkOjpzdHJp
bmcgVXRmOFNhZmVDSGV4RXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYyk7CiAKIC8vIEJhc2U2
NFVuZXNjYXBlKCkKIC8vCi0vLyBDb252ZXJ0cyBhIGBzcmNgIHN0ZDo6c3RyaW5nIGVuY29kZWQg
aW4gQmFzZTY0IHRvIGl0cyBiaW5hcnkgZXF1aXZhbGVudCwgd3JpdGluZworLy8gQ29udmVydHMg
YSBgc3JjYCBzdHJpbmcgZW5jb2RlZCBpbiBCYXNlNjQgdG8gaXRzIGJpbmFyeSBlcXVpdmFsZW50
LCB3cml0aW5nCiAvLyBpdCB0byBhIGBkZXN0YCBidWZmZXIsIHJldHVybmluZyBgdHJ1ZWAgb24g
c3VjY2Vzcy4gSWYgYHNyY2AgY29udGFpbnMgaW52YWxpZAogLy8gY2hhcmFjdGVycywgYGRlc3Rg
IGlzIGNsZWFyZWQgYW5kIHJldHVybnMgYGZhbHNlYC4KIGJvb2wgQmFzZTY0VW5lc2NhcGUoYWJz
bDo6c3RyaW5nX3ZpZXcgc3JjLCBzdGQ6OnN0cmluZyogZGVzdCk7CiAKLS8vIFdlYlNhZmVCYXNl
NjRVbmVzY2FwZShhYnNsOjpzdHJpbmdfdmlldywgc3RkOjpzdHJpbmcqKQorLy8gV2ViU2FmZUJh
c2U2NFVuZXNjYXBlKCkKIC8vCi0vLyBDb252ZXJ0cyBhIGBzcmNgIHN0ZDo6c3RyaW5nIGVuY29k
ZWQgaW4gQmFzZTY0IHRvIGl0cyBiaW5hcnkgZXF1aXZhbGVudCwgd3JpdGluZworLy8gQ29udmVy
dHMgYSBgc3JjYCBzdHJpbmcgZW5jb2RlZCBpbiBCYXNlNjQgdG8gaXRzIGJpbmFyeSBlcXVpdmFs
ZW50LCB3cml0aW5nCiAvLyBpdCB0byBhIGBkZXN0YCBidWZmZXIsIGJ1dCB1c2luZyAnLScgaW5z
dGVhZCBvZiAnKycsIGFuZCAnXycgaW5zdGVhZCBvZiAnLycuCiAvLyBJZiBgc3JjYCBjb250YWlu
cyBpbnZhbGlkIGNoYXJhY3RlcnMsIGBkZXN0YCBpcyBjbGVhcmVkIGFuZCByZXR1cm5zIGBmYWxz
ZWAuCiBib29sIFdlYlNhZmVCYXNlNjRVbmVzY2FwZShhYnNsOjpzdHJpbmdfdmlldyBzcmMsIHN0
ZDo6c3RyaW5nKiBkZXN0KTsKIAogLy8gQmFzZTY0RXNjYXBlKCkKIC8vCi0vLyBFbmNvZGVzIGEg
YHNyY2Agc3RkOjpzdHJpbmcgaW50byBhIGBkZXN0YCBidWZmZXIgdXNpbmcgYmFzZTY0IGVuY29k
aW5nLCB3aXRoCisvLyBFbmNvZGVzIGEgYHNyY2Agc3RyaW5nIGludG8gYSBgZGVzdGAgYnVmZmVy
IHVzaW5nIGJhc2U2NCBlbmNvZGluZywgd2l0aAogLy8gcGFkZGluZyBjaGFyYWN0ZXJzLiBUaGlz
IGZ1bmN0aW9uIGNvbmZvcm1zIHdpdGggUkZDIDQ2NDggc2VjdGlvbiA0IChiYXNlNjQpLgogdm9p
ZCBCYXNlNjRFc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjLCBzdGQ6OnN0cmluZyogZGVzdCk7
CiAKIC8vIFdlYlNhZmVCYXNlNjRFc2NhcGUoKQogLy8KLS8vIEVuY29kZXMgYSBgc3JjYCBzdGQ6
OnN0cmluZyBpbnRvIGEgYGRlc3RgIGJ1ZmZlciB1c2luZyAnLScgaW5zdGVhZCBvZiAnKycgYW5k
CisvLyBFbmNvZGVzIGEgYHNyY2Agc3RyaW5nIGludG8gYSBgZGVzdGAgYnVmZmVyIHVzaW5nICct
JyBpbnN0ZWFkIG9mICcrJyBhbmQKIC8vICdfJyBpbnN0ZWFkIG9mICcvJywgYW5kIHdpdGhvdXQg
cGFkZGluZy4gVGhpcyBmdW5jdGlvbiBjb25mb3JtcyB3aXRoIFJGQyA0NjQ4CiAvLyBzZWN0aW9u
IDUgKGJhc2U2NHVybCkuCiB2b2lkIFdlYlNhZmVCYXNlNjRFc2NhcGUoYWJzbDo6c3RyaW5nX3Zp
ZXcgc3JjLCBzdGQ6OnN0cmluZyogZGVzdCk7CiAKIC8vIEhleFN0cmluZ1RvQnl0ZXMoKQogLy8K
LS8vIENvbnZlcnRzIGFuIEFTQ0lJIGhleCBzdGQ6OnN0cmluZyBpbnRvIGJ5dGVzLCByZXR1cm5p
bmcgYmluYXJ5IGRhdGEgb2YgbGVuZ3RoCisvLyBDb252ZXJ0cyBhbiBBU0NJSSBoZXggc3RyaW5n
IGludG8gYnl0ZXMsIHJldHVybmluZyBiaW5hcnkgZGF0YSBvZiBsZW5ndGgKIC8vIGBmcm9tLnNp
emUoKS8yYC4KIHN0ZDo6c3RyaW5nIEhleFN0cmluZ1RvQnl0ZXMoYWJzbDo6c3RyaW5nX3ZpZXcg
ZnJvbSk7CiAKIC8vIEJ5dGVzVG9IZXhTdHJpbmcoKQogLy8KLS8vIENvbnZlcnRzIGJpbmFyeSBk
YXRhIGludG8gYW4gQVNDSUkgdGV4dCBzdGQ6OnN0cmluZywgcmV0dXJuaW5nIGEgc3RkOjpzdHJp
bmcgb2Ygc2l6ZQorLy8gQ29udmVydHMgYmluYXJ5IGRhdGEgaW50byBhbiBBU0NJSSB0ZXh0IHN0
cmluZywgcmV0dXJuaW5nIGEgc3RyaW5nIG9mIHNpemUKIC8vIGAyKmZyb20uc2l6ZSgpYC4KIHN0
ZDo6c3RyaW5nIEJ5dGVzVG9IZXhTdHJpbmcoYWJzbDo6c3RyaW5nX3ZpZXcgZnJvbSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
ZXNjYXBpbmdfdGVzdC5jYwppbmRleCAzZjY1ZWMxMDdmNDU1NWM5NTBmZjc3N2U4OWU5M2QyM2U0
MzM3OGU1Li45ZGMyN2YzZjhmYTc2OGEyYTkxY2RhZjk1MDM3ZDc0Y2ZmMDFhZWJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9l
c2NhcGluZ190ZXN0LmNjCkBAIC01NDMsMTggKzU0MywxOSBAQCBzdGF0aWMgc3RydWN0IHsKICAg
ICB7ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwgIllXSmpaR1ZtWjJocGFtdHNiVzV2Y0hG
eWMzUjFkbmQ0ZVhvPSJ9LAogfTsKIAotVEVTVChCYXNlNjQsIEVzY2FwZUFuZFVuZXNjYXBlKSB7
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4KK3ZvaWQgVGVzdEVzY2FwZUFuZFVuZXNj
YXBlKCkgewogICAvLyBDaGVjayB0aGUgc2hvcnQgc3RyaW5nczsgdGhpcyB0ZXN0cyB0aGUgbWF0
aCAoYW5kIGJvdW5kYXJpZXMpCiAgIGZvciAoY29uc3QgYXV0byYgdGMgOiBiYXNlNjRfdGVzdHMp
IHsKLSAgICBzdGQ6OnN0cmluZyBlbmNvZGVkKCJ0aGlzIGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQi
KTsKKyAgICBTdHJpbmdUeXBlIGVuY29kZWQoInRoaXMganVuayBzaG91bGQgYmUgaWdub3JlZCIp
OwogICAgIGFic2w6OkJhc2U2NEVzY2FwZSh0Yy5wbGFpbnRleHQsICZlbmNvZGVkKTsKICAgICBF
WFBFQ1RfRVEoZW5jb2RlZCwgdGMuY3lwaGVydGV4dCk7CiAKLSAgICBzdGQ6OnN0cmluZyBkZWNv
ZGVkKCJ0aGlzIGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQiKTsKKyAgICBTdHJpbmdUeXBlIGRlY29k
ZWQoInRoaXMganVuayBzaG91bGQgYmUgaWdub3JlZCIpOwogICAgIEVYUEVDVF9UUlVFKGFic2w6
OkJhc2U2NFVuZXNjYXBlKGVuY29kZWQsICZkZWNvZGVkKSk7CiAgICAgRVhQRUNUX0VRKGRlY29k
ZWQsIHRjLnBsYWludGV4dCk7CiAKLSAgICBzdGQ6OnN0cmluZyB3ZWJzYWZlKHRjLmN5cGhlcnRl
eHQpOworICAgIFN0cmluZ1R5cGUgd2Vic2FmZSh0Yy5jeXBoZXJ0ZXh0KTsKICAgICBmb3IgKGlu
dCBjID0gMDsgYyA8IHdlYnNhZmUuc2l6ZSgpOyArK2MpIHsKICAgICAgIGlmICgnKycgPT0gd2Vi
c2FmZVtjXSkgd2Vic2FmZVtjXSA9ICctJzsKICAgICAgIGlmICgnLycgPT0gd2Vic2FmZVtjXSkg
d2Vic2FmZVtjXSA9ICdfJzsKQEAgLTU3Niw3ICs1NzcsNyBAQCBURVNUKEJhc2U2NCwgRXNjYXBl
QW5kVW5lc2NhcGUpIHsKIAogICAvLyBOb3cgdHJ5IHRoZSBsb25nIHN0cmluZ3MsIHRoaXMgdGVz
dHMgdGhlIHN0cmVhbWluZwogICBmb3IgKGNvbnN0IGF1dG8mIHRjIDogYWJzbDo6c3RyaW5nc19p
bnRlcm5hbDo6YmFzZTY0X3N0cmluZ3MoKSkgewotICAgIHN0ZDo6c3RyaW5nIGJ1ZmZlcjsKKyAg
ICBTdHJpbmdUeXBlIGJ1ZmZlcjsKICAgICBhYnNsOjpXZWJTYWZlQmFzZTY0RXNjYXBlKHRjLnBs
YWludGV4dCwgJmJ1ZmZlcik7CiAgICAgRVhQRUNUX0VRKHRjLmN5cGhlcnRleHQsIGJ1ZmZlcik7
CiAgIH0KQEAgLTU4Niw3ICs1ODcsNyBAQCBURVNUKEJhc2U2NCwgRXNjYXBlQW5kVW5lc2NhcGUp
IHsKICAgICBhYnNsOjpzdHJpbmdfdmlldyBkYXRhX3NldFtdID0geyJhYi0vIiwgYWJzbDo6c3Ry
aW5nX3ZpZXcoIlwwYmNkIiwgNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjpzdHJpbmdfdmlldygiYWJjLlwwIiwgNSl9OwogICAgIGZvciAoYWJzbDo6c3RyaW5n
X3ZpZXcgYmFkX2RhdGEgOiBkYXRhX3NldCkgewotICAgICAgc3RkOjpzdHJpbmcgYnVmOworICAg
ICAgU3RyaW5nVHlwZSBidWY7CiAgICAgICBFWFBFQ1RfRkFMU0UoYWJzbDo6QmFzZTY0VW5lc2Nh
cGUoYmFkX2RhdGEsICZidWYpKTsKICAgICAgIEVYUEVDVF9GQUxTRShhYnNsOjpXZWJTYWZlQmFz
ZTY0VW5lc2NhcGUoYmFkX2RhdGEsICZidWYpKTsKICAgICAgIEVYUEVDVF9UUlVFKGJ1Zi5lbXB0
eSgpKTsKQEAgLTU5NCw2ICs1OTUsMTAgQEAgVEVTVChCYXNlNjQsIEVzY2FwZUFuZFVuZXNjYXBl
KSB7CiAgIH0KIH0KIAorVEVTVChCYXNlNjQsIEVzY2FwZUFuZFVuZXNjYXBlKSB7CisgIFRlc3RF
c2NhcGVBbmRVbmVzY2FwZTxzdGQ6OnN0cmluZz4oKTsKK30KKwogVEVTVChCYXNlNjQsIERJU0FC
TEVEX0h1Z2VEYXRhKSB7CiAgIGNvbnN0IHNpemVfdCBrU2l6ZSA9IHNpemVfdCgzKSAqIDEwMDAg
KiAxMDAwICogMTAwMDsKICAgc3RhdGljX2Fzc2VydChrU2l6ZSAlIDMgPT0gMCwgImtTaXplIG11
c3QgYmUgZGl2aXNpYmxlIGJ5IDMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvYml0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9iaXRzLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDkwMTA4MmNjZGRmY2E3ODQ1N2M3NDZmYmUyMmVlNTcwOTkzM2JmYWYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9iaXRzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vLyBD
b3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCi0vLwotLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0vLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCi0vLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLS8vCi0vLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotLy8KLS8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKLS8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCi0vLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLS8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
LS8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0jaWZuZGVmIEFCU0xfU1RSSU5H
U19JTlRFUk5BTF9CSVRTX0hfCi0jZGVmaW5lIEFCU0xfU1RSSU5HU19JTlRFUk5BTF9CSVRTX0hf
Ci0KLSNpbmNsdWRlIDxjc3RkaW50PgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5l
ZChfTV9YNjQpCi0jaW5jbHVkZSA8aW50cmluLmg+Ci0jcHJhZ21hIGludHJpbnNpYyhfQml0U2Nh
blJldmVyc2U2NCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgYWJzbCB7Ci1uYW1lc3BhY2Ugc3RyaW5n
c19pbnRlcm5hbCB7Ci0KLS8vIFJldHVybnMgdGhlIG51bWJlciBvZiBsZWFkaW5nIDAgYml0cyBp
biBhIDY0LWJpdCB2YWx1ZS4KLWlubGluZSBpbnQgQ291bnRMZWFkaW5nWmVyb3M2NCh1aW50NjRf
dCBuKSB7Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSAgc3RhdGljX2Fzc2VydChzaXplb2YodW5z
aWduZWQgbG9uZyBsb25nKSA9PSBzaXplb2YobiksICAvLyBOT0xJTlQocnVudGltZS9pbnQpCi0g
ICAgICAgICAgICAgICAgIl9fYnVpbHRpbl9jbHpsbCBkb2VzIG5vdCB0YWtlIDY0Yml0IGFyZyIp
OwotICByZXR1cm4gbiA9PSAwID8gNjQgOiBfX2J1aWx0aW5fY2x6bGwobik7Ci0jZWxpZiBkZWZp
bmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9NX1g2NCkKLSAgdW5zaWduZWQgbG9uZyByZXN1bHQ7
ICAvLyBOT0xJTlQocnVudGltZS9pbnQpCi0gIGlmIChfQml0U2NhblJldmVyc2U2NCgmcmVzdWx0
LCBuKSkgewotICAgIHJldHVybiA2MyAtIHJlc3VsdDsKLSAgfQotICByZXR1cm4gNjQ7Ci0jZWxz
ZQotICBpbnQgemVyb2VzID0gNjA7Ci0gIGlmIChuID4+IDMyKSB6ZXJvZXMgLT0gMzIsIG4gPj49
IDMyOwotICBpZiAobiA+PiAxNikgemVyb2VzIC09IDE2LCBuID4+PSAxNjsKLSAgaWYgKG4gPj4g
OCkgemVyb2VzIC09IDgsIG4gPj49IDg7Ci0gIGlmIChuID4+IDQpIHplcm9lcyAtPSA0LCBuID4+
PSA0OwotICByZXR1cm4gIlw0XDNcMlwyXDFcMVwxXDFcMFwwXDBcMFwwXDBcMFwwIltuXSArIHpl
cm9lczsKLSNlbmRpZgotfQotCi19ICAvLyBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbAotfSAg
Ly8gbmFtZXNwYWNlIGFic2wKLQotI2VuZGlmICAvLyBBQlNMX1NUUklOR1NfSU5URVJOQUxfQklU
U19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuY2MKaW5kZXggYTA0Y2M2
NzY2OWE3Zjc1ZjkzNmE3NjdjNWYyMjNjYjM1OTJkOWViYi4uN2U0ZGFiYzIyNjJlZmY3NzI2Yjcy
ZjU0ODAzMTU0YTA0MmFhYTcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9j
aGFyY29udl9wYXJzZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3Bh
cnNlLmNjCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ+OjpkaWdpdHMxMCA+PSBrRGVjaW1hbEV4cG9uZW50RGlnaXRzTWF4LAogCiAvLyBUbyBh
dm9pZCBpbmNyZWRpYmx5IGxhcmdlIGlucHV0cyBjYXVzaW5nIGludGVnZXIgb3ZlcmZsb3cgZm9y
IG91ciBleHBvbmVudCwKIC8vIHdlIGltcG9zZSBhbiBhcmJpdHJhcnkgYnV0IHZlcnkgbGFyZ2Ug
bGltaXQgb24gdGhlIG51bWJlciBvZiBzaWduaWZpY2FudAotLy8gZGlnaXRzIHdlIHdpbGwgYWNj
ZXB0LiAgVGhlIGltcGxlbWVudGF0aW9uIHJlZnVzZXMgdG8gbWF0Y2ggYSBzdGQ6OnN0cmluZyB3
aXRoCisvLyBkaWdpdHMgd2Ugd2lsbCBhY2NlcHQuICBUaGUgaW1wbGVtZW50YXRpb24gcmVmdXNl
cyB0byBtYXRjaCBhIHN0cmluZyB3aXRoCiAvLyBtb3JlIGNvbnNlY3V0aXZlIHNpZ25pZmljYW50
IG1hbnRpc3NhIGRpZ2l0cyB0aGFuIHRoaXMuCiBjb25zdGV4cHIgaW50IGtEZWNpbWFsRGlnaXRM
aW1pdCA9IDUwMDAwMDAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2No
YXJjb252X3BhcnNlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3Bh
cnNlX3Rlc3QuY2MKaW5kZXggMWZmODYwMDQ5NzNhODJmY2Q3MGUzMDFjODA4YTk0MzQ5ZWQzYmJi
MS4uZjQ4YjlhZWUxYTVlODRkYjNiMWNjMjk2YWFiMzYzZjJjMzNkYjM3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZV90ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2VfdGVzdC5jYwpAQCAtMjksMTYgKzI5LDE2
IEBAIHVzaW5nIGFic2w6OnN0cmluZ3NfaW50ZXJuYWw6OlBhcnNlRmxvYXQ7CiAKIG5hbWVzcGFj
ZSB7CiAKLS8vIENoZWNrIHRoYXQgYSBnaXZlbiBzdGQ6OnN0cmluZyBpbnB1dCBpcyBwYXJzZWQg
dG8gdGhlIGV4cGVjdGVkIG1hbnRpc3NhIGFuZAorLy8gQ2hlY2sgdGhhdCBhIGdpdmVuIHN0cmlu
ZyBpbnB1dCBpcyBwYXJzZWQgdG8gdGhlIGV4cGVjdGVkIG1hbnRpc3NhIGFuZAogLy8gZXhwb25l
bnQuCiAvLwotLy8gSW5wdXQgc3RkOjpzdHJpbmcgYHNgIG11c3QgY29udGFpbiBhICckJyBjaGFy
YWN0ZXIuICBJdCBtYXJrcyB0aGUgZW5kIG9mIHRoZQorLy8gSW5wdXQgc3RyaW5nIGBzYCBtdXN0
IGNvbnRhaW4gYSAnJCcgY2hhcmFjdGVyLiAgSXQgbWFya3MgdGhlIGVuZCBvZiB0aGUKIC8vIGNo
YXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgY29uc3VtZWQgYnkgdGhlIG1hdGNoLiAgSXQgaXMgc3Ry
aXBwZWQgZnJvbSB0aGUKIC8vIGlucHV0IHRvIFBhcnNlRmxvYXQuCiAvLwotLy8gSWYgaW5wdXQg
c3RkOjpzdHJpbmcgYHNgIGNvbnRhaW5zICdbJyBhbmQgJ10nIGNoYXJhY3RlcnMsIHRoZXNlIG1h
cmsgdGhlIHJlZ2lvbgorLy8gSWYgaW5wdXQgc3RyaW5nIGBzYCBjb250YWlucyAnWycgYW5kICdd
JyBjaGFyYWN0ZXJzLCB0aGVzZSBtYXJrIHRoZSByZWdpb24KIC8vIG9mIGNoYXJhY3RlcnMgdGhh
dCBzaG91bGQgYmUgbWFya2VkIGFzIHRoZSAic3VicmFuZ2UiLiAgRm9yIE5hTnMsIHRoaXMgaXMK
LS8vIHRoZSBsb2NhdGlvbiBvZiB0aGUgZXh0ZW5kZWQgTmFOIHN0ZDo6c3RyaW5nLiAgRm9yIG51
bWJlcnMsIHRoaXMgaXMgdGhlIGxvY2F0aW9uCisvLyB0aGUgbG9jYXRpb24gb2YgdGhlIGV4dGVu
ZGVkIE5hTiBzdHJpbmcuICBGb3IgbnVtYmVycywgdGhpcyBpcyB0aGUgbG9jYXRpb24KIC8vIG9m
IHRoZSBmdWxsLCBvdmVyLWxhcmdlIG1hbnRpc3NhLgogdGVtcGxhdGUgPGludCBiYXNlPgogdm9p
ZCBFeHBlY3RQYXJzZWRGbG9hdChzdGQ6OnN0cmluZyBzLCBhYnNsOjpjaGFyc19mb3JtYXQgZm9y
bWF0X2ZsYWdzLApAQCAtOTIsMTAgKzkyLDEwIEBAIHZvaWQgRXhwZWN0UGFyc2VkRmxvYXQoc3Rk
OjpzdHJpbmcgcywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZvcm1hdF9mbGFncywKICAgRVhQRUNUX0VR
KGNoYXJhY3RlcnNfbWF0Y2hlZCwgZXhwZWN0ZWRfY2hhcmFjdGVyc19tYXRjaGVkKTsKIH0KIAot
Ly8gQ2hlY2sgdGhhdCBhIGdpdmVuIHN0ZDo6c3RyaW5nIGlucHV0IGlzIHBhcnNlZCB0byB0aGUg
ZXhwZWN0ZWQgbWFudGlzc2EgYW5kCisvLyBDaGVjayB0aGF0IGEgZ2l2ZW4gc3RyaW5nIGlucHV0
IGlzIHBhcnNlZCB0byB0aGUgZXhwZWN0ZWQgbWFudGlzc2EgYW5kCiAvLyBleHBvbmVudC4KIC8v
Ci0vLyBJbnB1dCBzdGQ6OnN0cmluZyBgc2AgbXVzdCBjb250YWluIGEgJyQnIGNoYXJhY3Rlci4g
IEl0IG1hcmtzIHRoZSBlbmQgb2YgdGhlCisvLyBJbnB1dCBzdHJpbmcgYHNgIG11c3QgY29udGFp
biBhICckJyBjaGFyYWN0ZXIuICBJdCBtYXJrcyB0aGUgZW5kIG9mIHRoZQogLy8gY2hhcmFjdGVy
cyB0aGF0IHdlcmUgY29uc3VtZWQgYnkgdGhlIG1hdGNoLgogdGVtcGxhdGUgPGludCBiYXNlPgog
dm9pZCBFeHBlY3ROdW1iZXIoc3RkOjpzdHJpbmcgcywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZvcm1h
dF9mbGFncywKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEV4cGVjdE51bWJlcihzdGQ6OnN0cmlu
ZyBzLCBhYnNsOjpjaGFyc19mb3JtYXQgZm9ybWF0X2ZsYWdzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3RlZF9saXRlcmFsX2V4cG9uZW50KTsKIH0KIAotLy8gQ2hlY2sgdGhhdCBh
IGdpdmVuIHN0ZDo6c3RyaW5nIGlucHV0IGlzIHBhcnNlZCB0byB0aGUgZ2l2ZW4gc3BlY2lhbCB2
YWx1ZS4KKy8vIENoZWNrIHRoYXQgYSBnaXZlbiBzdHJpbmcgaW5wdXQgaXMgcGFyc2VkIHRvIHRo
ZSBnaXZlbiBzcGVjaWFsIHZhbHVlLgogLy8KIC8vIFRoaXMgdGVzdHMgYWdhaW5zdCBib3RoIG51
bWJlciBiYXNlcywgc2luY2UgaW5maW5pdGllcyBhbmQgTmFOcyBoYXZlCiAvLyBpZGVudGljYWwg
cmVwcmVzZW50YXRpb25zIGluIGJvdGggbW9kZXMuCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBF
eHBlY3RTcGVjaWFsKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBhYnNsOjpjaGFyc19mb3JtYXQgZm9y
bWF0X2ZsYWdzLAogICBFeHBlY3RQYXJzZWRGbG9hdDwxNj4ocywgZm9ybWF0X2ZsYWdzLCB0eXBl
LCAwLCAwKTsKIH0KIAotLy8gQ2hlY2sgdGhhdCBhIGdpdmVuIGlucHV0IHN0ZDo6c3RyaW5nIGlz
IG5vdCBtYXRjaGVkIGJ5IEZsb2F0LgorLy8gQ2hlY2sgdGhhdCBhIGdpdmVuIGlucHV0IHN0cmlu
ZyBpcyBub3QgbWF0Y2hlZCBieSBGbG9hdC4KIHRlbXBsYXRlIDxpbnQgYmFzZT4KIHZvaWQgRXhw
ZWN0RmFpbGVkUGFyc2UoYWJzbDo6c3RyaW5nX3ZpZXcgcywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZv
cm1hdF9mbGFncykgewogICBQYXJzZWRGbG9hdCBwYXJzZWQgPQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0
aWwuaAppbmRleCBhNmYxYzY5MTM4ZTM4NzJmMTI3ZTcwYWViMjZlMTU5YTgyOTI1YTBjLi43ZGUz
ODNiMTllYzNmYzBmNmM5MzMxYTQxZDk0MTczYzU1MWFlY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL21lbXV0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21l
bXV0aWwuaApAQCAtMTQsNyArMTQsNyBAQAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCiAvLwogCi0vLyBUaGVzZSByb3V0aW5lcyBwcm92aWRlIG1lbSB2ZXJzaW9ucyBvZiBzdGFu
ZGFyZCBDIHN0ZDo6c3RyaW5nIHJvdXRpbmVzLAorLy8gVGhlc2Ugcm91dGluZXMgcHJvdmlkZSBt
ZW0gdmVyc2lvbnMgb2Ygc3RhbmRhcmQgQyBzdHJpbmcgcm91dGluZXMsCiAvLyBzdWNoIGFzIHN0
cnBicmsuICBUaGV5IGZ1bmN0aW9uIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIHN0ciB2ZXJzaW9u
cywKIC8vIHNvIGlmIHlvdSB3b25kZXIgd2hhdCB0aGV5IGFyZSwgcmVwbGFjZSB0aGUgd29yZCAi
bWVtIiBieQogLy8gInN0ciIgYW5kIGNoZWNrIG91dCB0aGUgbWFuIHBhZ2UuICBJIGNvdWxkIHJl
dHVybiB2b2lkKiwgYXMgdGhlCkBAIC0yMiwxNCArMjIsMTQgQEAKIC8vIHNpbmNlIHRoaXMgaXMg
YnkgZmFyIHRoZSBtb3N0IGNvbW1vbiB3YXkgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQuCiAv
LwogLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbWVtIGFuZCBzdHIgdmVyc2lvbnMgaXMg
dGhlIG1lbSB2ZXJzaW9uCi0vLyB0YWtlcyBhIHBvaW50ZXIgYW5kIGEgbGVuZ3RoLCByYXRoZXIg
dGhhbiBhICdcMCctdGVybWluYXRlZCBzdGQ6OnN0cmluZy4KKy8vIHRha2VzIGEgcG9pbnRlciBh
bmQgYSBsZW5ndGgsIHJhdGhlciB0aGFuIGEgJ1wwJy10ZXJtaW5hdGVkIHN0cmluZy4KIC8vIFRo
ZSBtZW1jYXNlKiByb3V0aW5lcyBkZWZpbmVkIGhlcmUgYXNzdW1lIHRoZSBsb2NhbGUgaXMgIkMi
CiAvLyAodGhleSB1c2UgYWJzbDo6YXNjaWlfdG9sb3dlciBpbnN0ZWFkIG9mIHRvbG93ZXIpLgog
Ly8KIC8vIFRoZXNlIHJvdXRpbmVzIGFyZSBiYXNlZCBvbiB0aGUgQlNEIGxpYnJhcnkuCiAvLwot
Ly8gSGVyZSdzIGEgbGlzdCBvZiByb3V0aW5lcyBmcm9tIHN0ZDo6c3RyaW5nLmgsIGFuZCB0aGVp
ciBtZW0gYW5hbG9ndWVzLgotLy8gRnVuY3Rpb25zIGluIGxvd2VyY2FzZSBhcmUgZGVmaW5lZCBp
biBzdGQ6OnN0cmluZy5oOyB0aG9zZSBpbiBVUFBFUkNBU0UKKy8vIEhlcmUncyBhIGxpc3Qgb2Yg
cm91dGluZXMgZnJvbSBzdHJpbmcuaCwgYW5kIHRoZWlyIG1lbSBhbmFsb2d1ZXMuCisvLyBGdW5j
dGlvbnMgaW4gbG93ZXJjYXNlIGFyZSBkZWZpbmVkIGluIHN0cmluZy5oOyB0aG9zZSBpbiBVUFBF
UkNBU0UKIC8vIGFyZSBkZWZpbmVkIGhlcmU6CiAvLwogLy8gc3RybGVuICAgICAgICAgICAgICAg
ICAgLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmgKaW5kZXggNmUxMzI1Yjkx
NDBmOGEwYzNlZWRiNmY1YTEzZTIxZDhkNmUwYWFmNi4uZTgxYTg5YWZmZWEyNWJlMjZiYmNkMzEy
MGNjNzA5NDUwMmEyZDgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3Ry
aW5nc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmgK
QEAgLTI1LDE4ICsyNSwxOCBAQAogbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHN0cmluZ3Nf
aW50ZXJuYWwgewogCi0vLyBUaGUgc2FtZSBhcyBzdGQ6Om9zdHJpbmdzdHJlYW0gYnV0IGFwcGVu
ZHMgdG8gYSB1c2VyLXNwZWNpZmllZCBzdGQ6OnN0cmluZywKKy8vIFRoZSBzYW1lIGFzIHN0ZDo6
b3N0cmluZ3N0cmVhbSBidXQgYXBwZW5kcyB0byBhIHVzZXItc3BlY2lmaWVkIHN0cmluZywKIC8v
IGFuZCBpcyBmYXN0ZXIuIEl0IGlzIH43MCUgZmFzdGVyIHRvIGNyZWF0ZSwgfjUwJSBmYXN0ZXIg
dG8gd3JpdGUgdG8sIGFuZAotLy8gY29tcGxldGVseSBmcmVlIHRvIGV4dHJhY3QgdGhlIHJlc3Vs
dCBzdGQ6OnN0cmluZy4KKy8vIGNvbXBsZXRlbHkgZnJlZSB0byBleHRyYWN0IHRoZSByZXN1bHQg
c3RyaW5nLgogLy8KLS8vICAgc3RkOjpzdHJpbmcgczsKKy8vICAgc3RyaW5nIHM7CiAvLyAgIE9T
dHJpbmdTdHJlYW0gc3RybSgmcyk7CiAvLyAgIHN0cm0gPDwgNDIgPDwgJyAnIDw8IDMuMTQ7ICAv
LyBhcHBlbmRzIHRvIGBzYAogLy8KIC8vIFRoZSBzdHJlYW0gb2JqZWN0IGRvZXNuJ3QgaGF2ZSB0
byBiZSBuYW1lZC4gU3RhcnRpbmcgZnJvbSBDKysxMSBvcGVyYXRvcjw8CiAvLyB3b3JrcyB3aXRo
IHJ2YWx1ZXMgb2Ygc3RkOjpvc3RyZWFtLgogLy8KLS8vICAgc3RkOjpzdHJpbmcgczsKKy8vICAg
c3RyaW5nIHM7CiAvLyAgIE9TdHJpbmdTdHJlYW0oJnMpIDw8IDQyIDw8ICcgJyA8PCAzLjE0OyAg
Ly8gYXBwZW5kcyB0byBgc2AKIC8vCiAvLyBPU3RyaW5nU3RyZWFtIGlzIGZhc3RlciB0byBjcmVh
dGUgdGhhbiBzdGQ6Om9zdHJpbmdzdHJlYW0gYnV0IGl0J3Mgc3RpbGwKQEAgLTQ1LDE0ICs0NSwx
NCBAQCBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbCB7CiAvLwogLy8gQ3JlYXRlcyB1bm5lY2Vz
c2FyeSBpbnN0YW5jZXMgb2YgT1N0cmluZ1N0cmVhbTogc2xvdy4KIC8vCi0vLyAgIHN0ZDo6c3Ry
aW5nIHM7CisvLyAgIHN0cmluZyBzOwogLy8gICBPU3RyaW5nU3RyZWFtKCZzKSA8PCA0MjsKIC8v
ICAgT1N0cmluZ1N0cmVhbSgmcykgPDwgJyAnOwogLy8gICBPU3RyaW5nU3RyZWFtKCZzKSA8PCAz
LjE0OwogLy8KIC8vIENyZWF0ZXMgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgT1N0cmluZ1N0cmVhbSBh
bmQgcmV1c2VzIGl0OiBmYXN0LgogLy8KLS8vICAgc3RkOjpzdHJpbmcgczsKKy8vICAgc3RyaW5n
IHM7CiAvLyAgIE9TdHJpbmdTdHJlYW0gc3RybSgmcyk7CiAvLyAgIHN0cm0gPDwgNDI7CiAvLyAg
IHN0cm0gPDwgJyAnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVf
dW5pbml0aWFsaXplZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVfdW5pbml0aWFs
aXplZC5oCmluZGV4IDAxNTdjYTAyNDVmMzUwYmVjZTZkY2JlMTk4N2JkYjgwYjRhNTQ1NTEuLmE5
NGUwNTQ3YjUwZjE1NDIzNDM3NGU4ZTYwODA0MmE2YzcwMzNiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvcmVzaXplX3VuaW5pdGlhbGl6ZWQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkLmgKQEAgLTQ0LDggKzQ0LDggQEAgdm9p
ZCBSZXNpemVVbmluaXQoc3RyaW5nX3R5cGUqIHMsIHNpemVfdCBuZXdfc2l6ZSwgc3RkOjpmYWxz
ZV90eXBlKSB7CiAgIHMtPnJlc2l6ZShuZXdfc2l6ZSk7CiB9CiAKLS8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgc3RkOjpzdHJpbmcgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgYSByZXNpemUgd2hlcmUK
LS8vIHRoZSBuZXcgY2hhcmFjdGVycyBhZGRlZCB0byB0aGUgc3RkOjpzdHJpbmcgYXJlIGxlZnQg
dW50b3VjaGVkLgorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzdHJpbmcgaW1wbGVtZW50YXRpb24g
c3VwcG9ydHMgYSByZXNpemUgd2hlcmUKKy8vIHRoZSBuZXcgY2hhcmFjdGVycyBhZGRlZCB0byB0
aGUgc3RyaW5nIGFyZSBsZWZ0IHVudG91Y2hlZC4KIC8vCiAvLyAoQSBiZXR0ZXIgbmFtZSBtaWdo
dCBiZSAiU1RMU3RyaW5nU3VwcG9ydHNVbmluaXRpYWxpemVkUmVzaXplIiwgYWxsdWRpbmcgdG8K
IC8vIHRoZSBwcmV2aW91cyBmdW5jdGlvbi4pCkBAIC01Nyw3ICs1Nyw3IEBAIGlubGluZSBjb25z
dGV4cHIgYm9vbCBTVExTdHJpbmdTdXBwb3J0c05vbnRyYXNoaW5nUmVzaXplKHN0cmluZ190eXBl
KikgewogLy8gTGlrZSBzdHItPnJlc2l6ZShuZXdfc2l6ZSksIGV4Y2VwdCBhbnkgbmV3IGNoYXJh
Y3RlcnMgYWRkZWQgdG8gIipzdHIiIGFzIGEKIC8vIHJlc3VsdCBvZiByZXNpemluZyBtYXkgYmUg
bGVmdCB1bmluaXRpYWxpemVkLCByYXRoZXIgdGhhbiBiZWluZyBmaWxsZWQgd2l0aAogLy8gJzAn
IGJ5dGVzLiBUeXBpY2FsbHkgdXNlZCB3aGVuIGNvZGUgaXMgdGhlbiBnb2luZyB0byBvdmVyd3Jp
dGUgdGhlIGJhY2tpbmcKLS8vIHN0b3JlIG9mIHRoZSBzdGQ6OnN0cmluZyB3aXRoIGtub3duIGRh
dGEuIFVzZXMgYSBHb29nbGUgZXh0ZW5zaW9uIHRvIHN0ZDo6c3RyaW5nLgorLy8gc3RvcmUgb2Yg
dGhlIHN0cmluZyB3aXRoIGtub3duIGRhdGEuIFVzZXMgYSBHb29nbGUgZXh0ZW5zaW9uIHRvIDo6
c3RyaW5nLgogdGVtcGxhdGUgPHR5cGVuYW1lIHN0cmluZ190eXBlLCB0eXBlbmFtZSA9IHZvaWQ+
CiBpbmxpbmUgdm9pZCBTVExTdHJpbmdSZXNpemVVbmluaXRpYWxpemVkKHN0cmluZ190eXBlKiBz
LCBzaXplX3QgbmV3X3NpemUpIHsKICAgUmVzaXplVW5pbml0KHMsIG5ld19zaXplLCBIYXNSZXNp
emVVbmluaXRpYWxpemVkPHN0cmluZ190eXBlPigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0
cl9mb3JtYXQvYXJnLmNjCmluZGV4IGVhZmIwNjhmZTI4Njc0NDYyNzBmMjI4YTY0NDllMGRiNWE0
Y2NhYjUuLmI0MGJlOGZmMzgyNGU5YzY2YjRmN2MxZWNjMDg1NmU0MTc4ZmRkM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5jYwpAQCAtMTEyLDcgKzExMiw3IEBAIGNs
YXNzIENvbnZlcnRlZEludEluZm8gewogLy8gTm90ZTogJ28nIGNvbnZlcnNpb25zIGRvIG5vdCBo
YXZlIGEgYmFzZSBpbmRpY2F0b3IsIGl0J3MganVzdCB0aGF0CiAvLyB0aGUgJyMnIGZsYWcgaXMg
c3BlY2lmaWVkIHRvIG1vZGlmeSB0aGUgcHJlY2lzaW9uIGZvciAnbycgY29udmVyc2lvbnMuCiBz
dHJpbmdfdmlldyBCYXNlSW5kaWNhdG9yKGNvbnN0IENvbnZlcnRlZEludEluZm8gJmluZm8sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYpIHsKICAg
Ym9vbCBhbHQgPSBjb252LmZsYWdzKCkuYWx0OwogICBpbnQgcmFkaXggPSBjb252LmNvbnYoKS5y
YWRpeCgpOwogICBpZiAoY29udi5jb252KCkuaWQoKSA9PSBDb252ZXJzaW9uQ2hhcjo6cCkKQEAg
LTEyNyw3ICsxMjcsNyBAQCBzdHJpbmdfdmlldyBCYXNlSW5kaWNhdG9yKGNvbnN0IENvbnZlcnRl
ZEludEluZm8gJmluZm8sCiAgIHJldHVybiB7fTsKIH0KIAotc3RyaW5nX3ZpZXcgU2lnbkNvbHVt
bihib29sIG5lZywgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYpIHsKK3N0cmluZ192aWV3IFNp
Z25Db2x1bW4oYm9vbCBuZWcsIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYpIHsKICAgaWYgKGNv
bnYuY29udigpLmlzX3NpZ25lZCgpKSB7CiAgICAgaWYgKG5lZykgcmV0dXJuICItIjsKICAgICBp
ZiAoY29udi5mbGFncygpLnNob3dfcG9zKSByZXR1cm4gIisiOwpAQCAtMTM2LDcgKzEzNiw3IEBA
IHN0cmluZ192aWV3IFNpZ25Db2x1bW4oYm9vbCBuZWcsIGNvbnN0IENvbnZlcnNpb25TcGVjICZj
b252KSB7CiAgIHJldHVybiB7fTsKIH0KIAotYm9vbCBDb252ZXJ0Q2hhckltcGwodW5zaWduZWQg
Y2hhciB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKK2Jvb2wgQ29udmVydENoYXJJbXBs
KHVuc2lnbmVkIGNoYXIgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAg
ICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHNpemVfdCBmaWxsID0gMDsKICAg
aWYgKGNvbnYud2lkdGgoKSA+PSAwKSBmaWxsID0gY29udi53aWR0aCgpOwpAQCAtMTQ4LDcgKzE0
OCw3IEBAIGJvb2wgQ29udmVydENoYXJJbXBsKHVuc2lnbmVkIGNoYXIgdiwgY29uc3QgQ29udmVy
c2lvblNwZWMgJmNvbnYsCiB9CiAKIGJvb2wgQ29udmVydEludEltcGxJbm5lcihjb25zdCBDb252
ZXJ0ZWRJbnRJbmZvICZpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZl
cnNpb25TcGVjICZjb252LCBGb3JtYXRTaW5rSW1wbCAqc2luaykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsIEZvcm1hdFNpbmtJbXBsICpzaW5r
KSB7CiAgIC8vIFByaW50IGFzIGEgc2VxdWVuY2Ugb2YgU3Vic3RyaW5nczoKICAgLy8gICBbbGVm
dF9zcGFjZXNdW3NpZ25dW2Jhc2VfaW5kaWNhdG9yXVt6ZXJvZXNdW2Zvcm1hdHRlZF1bcmlnaHRf
c3BhY2VzXQogICBzaXplX3QgZmlsbCA9IDA7CkBAIC0yMDIsOCArMjAyLDcgQEAgYm9vbCBDb252
ZXJ0SW50SW1wbElubmVyKGNvbnN0IENvbnZlcnRlZEludEluZm8gJmluZm8sCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotYm9vbCBDb252ZXJ0SW50SW1wbElubmVyKFQgdiwgY29uc3QgQ29u
dmVyc2lvblNwZWMgJmNvbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0lt
cGwgKnNpbmspIHsKK2Jvb2wgQ29udmVydEludEltcGxJbm5lcihUIHYsIGNvbnN0IENvbnZlcnNp
b25TcGVjIGNvbnYsIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIENvbnZlcnRlZEludEluZm8g
aW5mbyh2LCBjb252LmNvbnYoKSk7CiAgIGlmIChjb252LmZsYWdzKCkuYmFzaWMgJiYgY29udi5j
b252KCkuaWQoKSAhPSBDb252ZXJzaW9uQ2hhcjo6cCkgewogICAgIGlmIChpbmZvLmlzX25lZygp
KSBzaW5rLT5BcHBlbmQoMSwgJy0nKTsKQEAgLTIxOCw3ICsyMTcsNyBAQCBib29sIENvbnZlcnRJ
bnRJbXBsSW5uZXIoVCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1ib29sIENvbnZlcnRJbnRBcmcoVCB2LCBjb25zdCBDb252ZXJzaW9u
U3BlYyAmY29udiwgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKK2Jvb2wgQ29udmVydEludEFyZyhU
IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAg
IGlmIChjb252LmNvbnYoKS5pc19mbG9hdCgpKSB7CiAgICAgcmV0dXJuIEZvcm1hdENvbnZlcnRJ
bXBsKHN0YXRpY19jYXN0PGRvdWJsZT4odiksIGNvbnYsIHNpbmspLnZhbHVlOwogICB9CkBAIC0y
MzQsMTEgKzIzMywxMSBAQCBib29sIENvbnZlcnRJbnRBcmcoVCB2LCBjb25zdCBDb252ZXJzaW9u
U3BlYyAmY29udiwgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1ib29sIENvbnZlcnRGbG9hdEFyZyhUIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjICZj
b252LCBGb3JtYXRTaW5rSW1wbCAqc2luaykgeworYm9vbCBDb252ZXJ0RmxvYXRBcmcoVCB2LCBj
b25zdCBDb252ZXJzaW9uU3BlYyBjb252LCBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICByZXR1
cm4gY29udi5jb252KCkuaXNfZmxvYXQoKSAmJiBDb252ZXJ0RmxvYXRJbXBsKHYsIGNvbnYsIHNp
bmspOwogfQogCi1pbmxpbmUgYm9vbCBDb252ZXJ0U3RyaW5nQXJnKHN0cmluZ192aWV3IHYsIGNv
bnN0IENvbnZlcnNpb25TcGVjICZjb252LAoraW5saW5lIGJvb2wgQ29udmVydFN0cmluZ0FyZyhz
dHJpbmdfdmlldyB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICBpZiAoY29udi5jb252KCku
aWQoKSAhPSBDb252ZXJzaW9uQ2hhcjo6cykKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTQsMTkg
KzI1MywxOSBAQCBpbmxpbmUgYm9vbCBDb252ZXJ0U3RyaW5nQXJnKHN0cmluZ192aWV3IHYsIGNv
bnN0IENvbnZlcnNpb25TcGVjICZjb252LAogCiAvLyA9PT09PT09PT09PT09PT09PT09PSBTdHJp
bmdzID09PT09PT09PT09PT09PT09PT09CiBDb252ZXJ0UmVzdWx0PENvbnY6OnM+IEZvcm1hdENv
bnZlcnRJbXBsKGNvbnN0IHN0ZDo6c3RyaW5nICZ2LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwg
KnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0U3RyaW5nQXJnKHYsIGNvbnYsIHNpbmspfTsKIH0K
IAogQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChzdHJpbmdfdmlldyB2
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJz
aW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0U3Ry
aW5nQXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIAogQ29udmVydFJlc3VsdDxDb252OjpzIHwgQ29u
djo6cD4gRm9ybWF0Q29udmVydEltcGwoY29uc3QgY2hhciAqdiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZj
b252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIGlmIChjb252
LmNvbnYoKS5pZCgpID09IENvbnZlcnNpb25DaGFyOjpwKQogICAgIHJldHVybiB7Rm9ybWF0Q29u
dmVydEltcGwoVm9pZFB0cih2KSwgY29udiwgc2luaykudmFsdWV9OwpAQCAtMjgzLDcgKzI4Miw3
IEBAIENvbnZlcnRSZXN1bHQ8Q29udjo6cyB8IENvbnY6OnA+IEZvcm1hdENvbnZlcnRJbXBsKGNv
bnN0IGNoYXIgKnYsCiB9CiAKIC8vID09PT09PT09PT09PT09PT09PT09IFJhdyBwb2ludGVycyA9
PT09PT09PT09PT09PT09PT09PQotQ29udmVydFJlc3VsdDxDb252OjpwPiBGb3JtYXRDb252ZXJ0
SW1wbChWb2lkUHRyIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorQ29udmVydFJlc3Vs
dDxDb252OjpwPiBGb3JtYXRDb252ZXJ0SW1wbChWb2lkUHRyIHYsIGNvbnN0IENvbnZlcnNpb25T
cGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1h
dFNpbmtJbXBsICpzaW5rKSB7CiAgIGlmIChjb252LmNvbnYoKS5pZCgpICE9IENvbnZlcnNpb25D
aGFyOjpwKQogICAgIHJldHVybiB7ZmFsc2V9OwpAQCAtMjk1LDEwNCArMjk0LDgzIEBAIENvbnZl
cnRSZXN1bHQ8Q29udjo6cD4gRm9ybWF0Q29udmVydEltcGwoVm9pZFB0ciB2LCBjb25zdCBDb252
ZXJzaW9uU3BlYyAmY29udiwKIH0KIAogLy8gPT09PT09PT09PT09PT09PT09PT0gRmxvYXRzID09
PT09PT09PT09PT09PT09PT09Ci1GbG9hdGluZ0NvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydElt
cGwoZmxvYXQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCitGbG9hdGluZ0NvbnZlcnRS
ZXN1bHQgRm9ybWF0Q29udmVydEltcGwoZmxvYXQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgY29u
diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1w
bCAqc2luaykgewogICByZXR1cm4ge0NvbnZlcnRGbG9hdEFyZyh2LCBjb252LCBzaW5rKX07CiB9
Ci1GbG9hdGluZ0NvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoZG91YmxlIHYsIGNvbnN0
IENvbnZlcnNpb25TcGVjICZjb252LAorRmxvYXRpbmdDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZl
cnRJbXBsKGRvdWJsZSB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJl
dHVybiB7Q29udmVydEZsb2F0QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIEZsb2F0aW5nQ29udmVy
dFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChsb25nIGRvdWJsZSB2LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVj
IGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lu
a0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0RmxvYXRBcmcodiwgY29udiwgc2luayl9
OwogfQogCiAvLyA9PT09PT09PT09PT09PT09PT09PSBDaGFycyA9PT09PT09PT09PT09PT09PT09
PQotSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGNoYXIgdiwgY29uc3Qg
Q29udmVyc2lvblNwZWMgJmNvbnYsCitJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVy
dEltcGwoY2hhciB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVy
biB7Q29udmVydEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBJbnRlZ3JhbENvbnZlcnRSZXN1
bHQgRm9ybWF0Q29udmVydEltcGwoc2lnbmVkIGNoYXIgdiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBs
ICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBJ
bnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwodW5zaWduZWQgY2hhciB2LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25T
cGVjICZjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0SW50QXJnKHYs
IGNvbnYsIHNpbmspfTsKIH0KIAogLy8gPT09PT09PT09PT09PT09PT09PT0gSW50cyA9PT09PT09
PT09PT09PT09PT09PQogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHNo
b3J0IHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVy
biB7Q29udmVydEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBJbnRlZ3JhbENvbnZlcnRSZXN1
bHQgRm9ybWF0Q29udmVydEltcGwodW5zaWduZWQgc2hvcnQgdiwgIC8vIE5PTElOVAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZj
b252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZl
cnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Rm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0SW50QXJnKHYsIGNvbnYs
IHNpbmspfTsKIH0KLUludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChpbnQg
diwgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCitJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9y
bWF0Q29udmVydEltcGwoaW50IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsK
ICAgcmV0dXJuIHtDb252ZXJ0SW50QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KLUludGVncmFsQ29u
dmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25lZCB2LCBjb25zdCBDb252ZXJzaW9u
U3BlYyAmY29udiwKK0ludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNp
Z25lZCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29u
dmVydEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9y
bWF0Q29udmVydEltcGwobG9uZyB2LCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAq
c2luaykgewogICByZXR1cm4ge0NvbnZlcnRJbnRBcmcodiwgY29udiwgc2luayl9OwogfQogSW50
ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2lnbmVkIGxvbmcgdiwgIC8v
IE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
bnZlcnNpb25TcGVjICZjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0
SW50QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIEludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRD
b252ZXJ0SW1wbChsb25nIGxvbmcgdiwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwg
KnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0SW50QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIElu
dGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25lZCBsb25nIGxvbmcg
diwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENvbnZlcnNpb25TcGVjICZjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtD
b252ZXJ0SW50QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIEludGVncmFsQ29udmVydFJlc3VsdCBG
b3JtYXRDb252ZXJ0SW1wbChhYnNsOjp1aW50MTI4IHYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAq
c2luaykgewogICByZXR1cm4ge0NvbnZlcnRJbnRBcmcodiwgY29udiwgc2luayl9OwogfQogCi10
ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c3RyX2Zvcm1hdF9pbnRl
cm5hbDo6Vm9pZFB0cj47Ci0KLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZU
YWJsZTxib29sPjsKLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxj
aGFyPjsKLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxzaWduZWQg
Y2hhcj47Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8dW5zaWdu
ZWQgY2hhcj47Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c2hv
cnQ+OyAgICAgICAgICAgLy8gTk9MSU5UCi10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6
VHlwZWRWVGFibGU8dW5zaWduZWQgc2hvcnQ+OyAgLy8gTk9MSU5UCi10ZW1wbGF0ZSBzdHJ1Y3Qg
Rm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8aW50PjsKLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRB
cmdJbXBsOjpUeXBlZFZUYWJsZTx1bnNpZ25lZD47Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJn
SW1wbDo6VHlwZWRWVGFibGU8bG9uZz47ICAgICAgICAgICAgICAgIC8vIE5PTElOVAotdGVtcGxh
dGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVuc2lnbmVkIGxvbmc+OyAgICAg
ICAvLyBOT0xJTlQKLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxs
b25nIGxvbmc+OyAgICAgICAgICAgLy8gTk9MSU5UCi10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJn
SW1wbDo6VHlwZWRWVGFibGU8dW5zaWduZWQgbG9uZyBsb25nPjsgIC8vIE5PTElOVAotdGVtcGxh
dGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGFic2w6OnVpbnQxMjg+OwotCi10
ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8ZmxvYXQ+OwotdGVtcGxh
dGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGRvdWJsZT47Ci10ZW1wbGF0ZSBz
dHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8bG9uZyBkb3VibGU+OwotCi10ZW1wbGF0
ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8Y29uc3QgY2hhciAqPjsKLXRlbXBs
YXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxzdGQ6OnN0cmluZz47Ci10ZW1w
bGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c3RyaW5nX3ZpZXc+OworQUJT
TF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfT1ZFUkxPQURTX0VYUEFORF8oKTsKKwogCiB9ICAv
LyBuYW1lc3BhY2Ugc3RyX2Zvcm1hdF9pbnRlcm5hbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYXJnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0
cl9mb3JtYXQvYXJnLmgKaW5kZXggYTk1NjIxODhlYTkxOTczYTYyOTgyOGUwZGVjODJiZDQ3MGM5
YzA3YS4uMzM3NmQ0OGFmZGEyMGZmMjMzYTFkMWI3ZjQxYjMwMDc4YWUxY2NlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuaApAQCAtMzMsNyArMzMsNyBAQCBzdHJ1Y3Qg
SGFzVXNlckRlZmluZWRDb252ZXJ0IDogc3RkOjpmYWxzZV90eXBlIHt9OwogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBzdHJ1Y3QgSGFzVXNlckRlZmluZWRDb252ZXJ0PAogICAgIFQsIHZvaWRfdDxk
ZWNsdHlwZShBYnNsRm9ybWF0Q29udmVydCgKLSAgICAgICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0
IFQmPigpLCBzdGQ6OmRlY2x2YWw8Y29uc3QgQ29udmVyc2lvblNwZWMmPigpLAorICAgICAgICAg
ICBzdGQ6OmRlY2x2YWw8Y29uc3QgVCY+KCksIHN0ZDo6ZGVjbHZhbDxDb252ZXJzaW9uU3BlYz4o
KSwKICAgICAgICAgICAgc3RkOjpkZWNsdmFsPEZvcm1hdFNpbmsqPigpKSk+PiA6IHN0ZDo6dHJ1
ZV90eXBlIHt9OwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBTdHJlYW1lZFdyYXBwZXI7
CkBAIC01MCwyNSArNTAsMjMgQEAgc3RydWN0IFZvaWRQdHIgewogICAgICAgOiB2YWx1ZShwdHIg
PyByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSA6IDApIHt9CiAgIHVpbnRwdHJfdCB2
YWx1ZTsKIH07Ci1Db252ZXJ0UmVzdWx0PENvbnY6OnA+IEZvcm1hdENvbnZlcnRJbXBsKFZvaWRQ
dHIgdiwgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitDb252ZXJ0UmVzdWx0PENvbnY6OnA+
IEZvcm1hdENvbnZlcnRJbXBsKFZvaWRQdHIgdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmsp
OwogCiAvLyBTdHJpbmdzLgotQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1w
bChjb25zdCBzdGQ6OnN0cmluZyYgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitDb252ZXJ0UmVzdWx0PENvbnY6
OnM+IEZvcm1hdENvbnZlcnRJbXBsKGNvbnN0IHN0ZDo6c3RyaW5nJiB2LCBDb252ZXJzaW9uU3Bl
YyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRT
aW5rSW1wbCogc2luayk7Ci1Db252ZXJ0UmVzdWx0PENvbnY6OnM+IEZvcm1hdENvbnZlcnRJbXBs
KHN0cmluZ192aWV3IHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3Jt
YXRDb252ZXJ0SW1wbChzdHJpbmdfdmlldyB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7
CiBDb252ZXJ0UmVzdWx0PENvbnY6OnMgfCBDb252OjpwPiBGb3JtYXRDb252ZXJ0SW1wbChjb25z
dCBjaGFyKiB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0lt
cGwqIHNpbmspOwogdGVtcGxhdGUgPGNsYXNzIEFic2xDb3JkLAogICAgICAgICAgIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPAogICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8QWJzbENvcmQsIDo6
Q29yZD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyLAogICAgICAgICAgIGNsYXNzIEFic2xDb3Jk
UmVhZGVyID0gOjpDb3JkUmVhZGVyPgogQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252
ZXJ0SW1wbChjb25zdCBBYnNsQ29yZCYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luaykg
ewogICBpZiAoY29udi5jb252KCkuaWQoKSAhPSBDb252ZXJzaW9uQ2hhcjo6cykgcmV0dXJuIHtm
YWxzZX07CiAKQEAgLTEwNCw1MSArMTAyLDQ4IEBAIHVzaW5nIEludGVncmFsQ29udmVydFJlc3Vs
dCA9CiB1c2luZyBGbG9hdGluZ0NvbnZlcnRSZXN1bHQgPSBDb252ZXJ0UmVzdWx0PENvbnY6OmZs
b2F0aW5nPjsKIAogLy8gRmxvYXRzLgotRmxvYXRpbmdDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZl
cnRJbXBsKGZsb2F0IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorRmxvYXRpbmdDb252
ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGZsb2F0IHYsIENvbnZlcnNpb25TcGVjIGNvbnYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwq
IHNpbmspOwotRmxvYXRpbmdDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGRvdWJsZSB2
LCBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKK0Zsb2F0aW5nQ29udmVydFJlc3VsdCBGb3Jt
YXRDb252ZXJ0SW1wbChkb3VibGUgdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7Ci1GbG9h
dGluZ0NvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwobG9uZyBkb3VibGUgdiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYg
Y29udiwKK0Zsb2F0aW5nQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChsb25nIGRvdWJs
ZSB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKIAogLy8gQ2hhcnMuCi1JbnRlZ3JhbENv
bnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoY2hhciB2LCBjb25zdCBDb252ZXJzaW9uU3Bl
YyYgY29udiwKK0ludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChjaGFyIHYs
IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwotSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1h
dENvbnZlcnRJbXBsKHNpZ25lZCBjaGFyIHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitJbnRlZ3JhbENvbnZlcnRS
ZXN1bHQgRm9ybWF0Q29udmVydEltcGwoc2lnbmVkIGNoYXIgdiwgQ29udmVyc2lvblNwZWMgY29u
diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1w
bCogc2luayk7Ci1JbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwodW5zaWdu
ZWQgY2hhciB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENvbnZlcnNpb25TcGVjJiBjb252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZl
cnRJbXBsKHVuc2lnbmVkIGNoYXIgdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7CiAKIC8v
IEludHMuCiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoc2hvcnQgdiwg
IC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENvbnZlcnNpb25TcGVjJiBjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogSW50ZWdyYWxDb252ZXJ0UmVzdWx0
IEZvcm1hdENvbnZlcnRJbXBsKHVuc2lnbmVkIHNob3J0IHYsICAvLyBOT0xJTlQKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29u
diwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3Bl
YyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNp
bmtJbXBsKiBzaW5rKTsKLUludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChp
bnQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitJbnRlZ3JhbENvbnZlcnRSZXN1bHQg
Rm9ybWF0Q29udmVydEltcGwoaW50IHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwotSW50
ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2lnbmVkIHYsIGNvbnN0IENv
bnZlcnNpb25TcGVjJiBjb252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJ
bXBsKHVuc2lnbmVkIHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogSW50ZWdyYWxDb252
ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGxvbmcgdiwgIC8vIE5PTElOVAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25TcGVj
IGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lu
a0ltcGwqIHNpbmspOwogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVu
c2lnbmVkIGxvbmcgdiwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogSW50ZWdy
YWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGxvbmcgbG9uZyB2LCAgLy8gTk9MSU5U
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lv
blNwZWMmIGNvbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29u
dmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGb3JtYXRTaW5rSW1wbCogc2luayk7CiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29u
dmVydEltcGwodW5zaWduZWQgbG9uZyBsb25nIHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBs
KiBzaW5rKTsKLUludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1aW50MTI4
IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZv
cm1hdENvbnZlcnRJbXBsKHVpbnQxMjggdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7CiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPFQsIGJvb2w+Ojp2
YWx1ZSwgaW50PiA9IDA+Ci1JbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwo
VCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKK0ludGVncmFsQ29udmVydFJlc3VsdCBG
b3JtYXRDb252ZXJ0SW1wbChUIHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspIHsKICAgcmV0
dXJuIEZvcm1hdENvbnZlcnRJbXBsKHN0YXRpY19jYXN0PGludD4odiksIGNvbnYsIHNpbmspOwog
fQpAQCAtMTU5LDExICsxNTQsMTEgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIUhhc1VzZXJEZWZpbmVkQ29udmVydDxUPjo6dmFsdWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBJbnRlZ3JhbENvbnZlcnRSZXN1bHQ+Ojp0eXBlCi1Gb3JtYXRDb252ZXJ0
SW1wbChUIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LCBGb3JtYXRTaW5rSW1wbCogc2lu
ayk7CitGb3JtYXRDb252ZXJ0SW1wbChUIHYsIENvbnZlcnNpb25TcGVjIGNvbnYsIEZvcm1hdFNp
bmtJbXBsKiBzaW5rKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBDb252ZXJ0UmVzdWx0PENv
bnY6OnM+IEZvcm1hdENvbnZlcnRJbXBsKGNvbnN0IFN0cmVhbWVkV3JhcHBlcjxUPiYgdiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNw
ZWMmIGNvbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZl
cnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZvcm1hdFNpbmtJbXBsKiBvdXQpIHsKICAgc3RkOjpvc3RyaW5nc3RyZWFtIG9zczsKICAgb3Nz
IDw8IHYudl87CkBAIC0xNzYsNyArMTcxLDcgQEAgQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3Jt
YXRDb252ZXJ0SW1wbChjb25zdCBTdHJlYW1lZFdyYXBwZXI8VD4mIHYsCiBzdHJ1Y3QgRm9ybWF0
Q291bnRDYXB0dXJlSGVscGVyIHsKICAgdGVtcGxhdGUgPGNsYXNzIFQgPSBpbnQ+CiAgIHN0YXRp
YyBDb252ZXJ0UmVzdWx0PENvbnY6Om4+IENvbnZlcnRIZWxwZXIoY29uc3QgRm9ybWF0Q291bnRD
YXB0dXJlJiB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspIHsKICAg
ICBjb25zdCBhYnNsOjplbmFibGVfaWZfdDxzaXplb2YoVCkgIT0gMCwgRm9ybWF0Q291bnRDYXB0
dXJlPiYgdjIgPSB2OwogCkBAIC0xODksNyArMTg0LDcgQEAgc3RydWN0IEZvcm1hdENvdW50Q2Fw
dHVyZUhlbHBlciB7CiAKIHRlbXBsYXRlIDxjbGFzcyBUID0gaW50PgogQ29udmVydFJlc3VsdDxD
b252OjpuPiBGb3JtYXRDb252ZXJ0SW1wbChjb25zdCBGb3JtYXRDb3VudENhcHR1cmUmIHYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25T
cGVjJiBjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252
ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGb3JtYXRTaW5rSW1wbCogc2luaykgewogICByZXR1cm4gRm9ybWF0Q291bnRDYXB0dXJlSGVs
cGVyOjpDb252ZXJ0SGVscGVyKHYsIGNvbnYsIHNpbmspOwogfQpAQCAtMTk5LDIwICsxOTQsMjAg
QEAgQ29udmVydFJlc3VsdDxDb252OjpuPiBGb3JtYXRDb252ZXJ0SW1wbChjb25zdCBGb3JtYXRD
b3VudENhcHR1cmUmIHYsCiBzdHJ1Y3QgRm9ybWF0QXJnSW1wbEZyaWVuZCB7CiAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBBcmc+CiAgIHN0YXRpYyBib29sIFRvSW50KEFyZyBhcmcsIGludCogb3V0KSB7
Ci0gICAgaWYgKCFhcmcudnRibF8tPnRvX2ludCkgcmV0dXJuIGZhbHNlOwotICAgICpvdXQgPSBh
cmcudnRibF8tPnRvX2ludChhcmcuZGF0YV8pOwotICAgIHJldHVybiB0cnVlOworICAgIC8vIEEg
dmFsdWUgaW5pdGlhbGl6ZWQgQ29udmVyc2lvblNwZWMgaGFzIGEgYG5vbmVgIGNvbnYsIHdoaWNo
IHRlbGxzIHRoZQorICAgIC8vIGRpc3BhdGNoZXIgdG8gcnVuIHRoZSBgaW50YCBjb252ZXJzaW9u
LgorICAgIHJldHVybiBhcmcuZGlzcGF0Y2hlcl8oYXJnLmRhdGFfLCB7fSwgb3V0KTsKICAgfQog
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBcmc+Ci0gIHN0YXRpYyBib29sIENvbnZlcnQoQXJnIGFy
ZywgY29uc3Qgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6Q29udmVyc2lvblNwZWMmIGNvbnYsCisgIHN0
YXRpYyBib29sIENvbnZlcnQoQXJnIGFyZywgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6Q29udmVyc2lv
blNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogb3V0KSB7
Ci0gICAgcmV0dXJuIGFyZy52dGJsXy0+Y29udmVydChhcmcuZGF0YV8sIGNvbnYsIG91dCk7Cisg
ICAgcmV0dXJuIGFyZy5kaXNwYXRjaGVyXyhhcmcuZGF0YV8sIGNvbnYsIG91dCk7CiAgIH0KIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnPgotICBzdGF0aWMgY29uc3Qgdm9pZCogR2V0VlRhYmxl
UHRyRm9yVGVzdChBcmcgYXJnKSB7Ci0gICAgcmV0dXJuIGFyZy52dGJsXzsKKyAgc3RhdGljIHR5
cGVuYW1lIEFyZzo6RGlzcGF0Y2hlciBHZXRWVGFibGVQdHJGb3JUZXN0KEFyZyBhcmcpIHsKKyAg
ICByZXR1cm4gYXJnLmRpc3BhdGNoZXJfOwogICB9CiB9OwogCkBAIC0yMjksMTEgKzIyNCw3IEBA
IGNsYXNzIEZvcm1hdEFyZ0ltcGwgewogICAgIGNoYXIgYnVmW2tJbmxpbmVkU3BhY2VdOwogICB9
OwogCi0gIHN0cnVjdCBWVGFibGUgewotICAgIGJvb2wgKCpjb252ZXJ0KShEYXRhLCBjb25zdCBz
dHJfZm9ybWF0X2ludGVybmFsOjpDb252ZXJzaW9uU3BlYyYgY29udiwKLSAgICAgICAgICAgICAg
ICAgICAgRm9ybWF0U2lua0ltcGwqIG91dCk7Ci0gICAgaW50ICgqdG9faW50KShEYXRhKTsKLSAg
fTsKKyAgdXNpbmcgRGlzcGF0Y2hlciA9IGJvb2wgKCopKERhdGEsIENvbnZlcnNpb25TcGVjLCB2
b2lkKiBvdXQpOwogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBzdHJ1Y3Qgc3RvcmVfYnlf
dmFsdWUKQEAgLTI1MywxMCArMjQ0LDYgQEAgY2xhc3MgRm9ybWF0QXJnSW1wbCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiBCeVBvaW50ZXIpKT4gewogICB9OwogCi0gIC8vIEFuIGluc3RhbmNlIG9mIGFuIEZvcm1hdEFy
Z0ltcGw6OlZUYWJsZSBzdWl0YWJsZSBmb3IgJ1QnLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LSAgc3RydWN0IFR5cGVkVlRhYmxlOwotCiAgIC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHZ0
YWJsZXMgd2Ugd2lsbCBkZWNheSB2YWx1ZXMgYmVmb3JlIGhhbmQuCiAgIC8vIEFueXRoaW5nIHdp
dGggYSB1c2VyLWRlZmluZWQgQ29udmVydCB3aWxsIGdldCBpdHMgb3duIHZ0YWJsZS4KICAgLy8g
Rm9yIGV2ZXJ5dGhpbmcgZWxzZToKQEAgLTMzOCw3ICszMjUsMTAgQEAgY2xhc3MgRm9ybWF0QXJn
SW1wbCB7CiAgIH07CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIHZvaWQgSW5pdChjb25z
dCBUJiB2YWx1ZSk7CisgIHZvaWQgSW5pdChjb25zdCBUJiB2YWx1ZSkgeworICAgIGRhdGFfID0g
TWFuYWdlcjxUPjo6U2V0VmFsdWUodmFsdWUpOworICAgIGRpc3BhdGNoZXJfID0gJkRpc3BhdGNo
PFQ+OworICB9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIHN0YXRpYyBpbnQgVG9JbnRW
YWwoY29uc3QgVCYgdmFsKSB7CkBAIC0zNTUsNzkgKzM0NSw3NSBAQCBjbGFzcyBGb3JtYXRBcmdJ
bXBsIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWwpOwogICB9CiAKLSAgRGF0YSBk
YXRhXzsKLSAgY29uc3QgVlRhYmxlKiB2dGJsXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
Pgotc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlIHsKLSBwcml2YXRlOgotICBzdGF0
aWMgYm9vbCBDb252ZXJ0SW1wbChEYXRhIGFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6Q29udmVyc2lvblNwZWMmIGNvbnYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBvdXQpIHsKLSAgICByZXR1cm4gc3Ry
X2Zvcm1hdF9pbnRlcm5hbDo6Rm9ybWF0Q29udmVydEltcGwoTWFuYWdlcjxUPjo6VmFsdWUoYXJn
KSwgY29udiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0KQotICAgICAgICAudmFsdWU7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0
aWMgYm9vbCBUb0ludChEYXRhIGFyZywgaW50KiBvdXQsIHN0ZDo6dHJ1ZV90eXBlIC8qIGlzX2lu
dGVncmFsICovLAorICAgICAgICAgICAgICAgICAgICBzdGQ6OmZhbHNlX3R5cGUpIHsKKyAgICAq
b3V0ID0gVG9JbnRWYWwoTWFuYWdlcjxUPjo6VmFsdWUoYXJnKSk7CisgICAgcmV0dXJuIHRydWU7
CiAgIH0KIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSA9IFQsIHR5cGVuYW1lID0gdm9pZD4KLSAg
c3RydWN0IFRvSW50SW1wbCB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgKCp2YWx1ZSkoRGF0
YSkgPSBudWxscHRyOwotICB9OworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIGJv
b2wgVG9JbnQoRGF0YSBhcmcsIGludCogb3V0LCBzdGQ6OmZhbHNlX3R5cGUsCisgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6dHJ1ZV90eXBlIC8qIGlzX2VudW0gKi8pIHsKKyAgICAqb3V0ID0gVG9J
bnRWYWwoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGU+
KAorICAgICAgICBNYW5hZ2VyPFQ+OjpWYWx1ZShhcmcpKSk7CisgICAgcmV0dXJuIHRydWU7Cisg
IH0KIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgc3RydWN0IFRvSW50SW1wbDxVLAotICAg
ICAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8
VT46OnZhbHVlPjo6dHlwZT4gewotICAgIHN0YXRpYyBpbnQgSW52b2tlKERhdGEgYXJnKSB7IHJl
dHVybiBUb0ludFZhbChNYW5hZ2VyPFQ+OjpWYWx1ZShhcmcpKTsgfQotICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50ICgqdmFsdWUpKERhdGEpID0gJkludm9rZTsKLSAgfTsKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisgIHN0YXRpYyBib29sIFRvSW50KERhdGEsIGludCosIHN0ZDo6ZmFsc2VfdHlw
ZSwgc3RkOjpmYWxzZV90eXBlKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CiAKLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIFU+Ci0gIHN0cnVjdCBUb0ludEltcGw8VSwgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19lbnVtPFU+Ojp2YWx1ZT46OnR5cGU+IHsKLSAgICBzdGF0aWMgaW50IElu
dm9rZShEYXRhIGFyZykgewotICAgICAgcmV0dXJuIFRvSW50VmFsKHN0YXRpY19jYXN0PHR5cGVu
YW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPFQ+Ojp0eXBlPigKLSAgICAgICAgICBNYW5hZ2VyPFQ+
OjpWYWx1ZShhcmcpKSk7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgYm9vbCBE
aXNwYXRjaChEYXRhIGFyZywgQ29udmVyc2lvblNwZWMgc3BlYywgdm9pZCogb3V0KSB7CisgICAg
Ly8gQSBgbm9uZWAgY29udiBpbmRpY2F0ZXMgdGhhdCB3ZSB3YW50IHRoZSBgaW50YCBjb252ZXJz
aW9uLgorICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0Uoc3BlYy5jb252KCkuaWQoKSA9PSBDb252
ZXJzaW9uQ2hhcjo6bm9uZSkpIHsKKyAgICAgIHJldHVybiBUb0ludDxUPihhcmcsIHN0YXRpY19j
YXN0PGludCo+KG91dCksIHN0ZDo6aXNfaW50ZWdyYWw8VD4oKSwKKyAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmlzX2VudW08VD4oKSk7CiAgICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
ICgqdmFsdWUpKERhdGEpID0gJkludm9rZTsKLSAgfTsKIAotIHB1YmxpYzoKLSAgc3RhdGljIGNv
bnN0ZXhwciBWVGFibGUgdmFsdWV7JkNvbnZlcnRJbXBsLCBUb0ludEltcGw8Pjo6dmFsdWV9Owot
fTsKKyAgICByZXR1cm4gc3RyX2Zvcm1hdF9pbnRlcm5hbDo6Rm9ybWF0Q29udmVydEltcGwoCisg
ICAgICAgICAgICAgICBNYW5hZ2VyPFQ+OjpWYWx1ZShhcmcpLCBzcGVjLCBzdGF0aWNfY2FzdDxG
b3JtYXRTaW5rSW1wbCo+KG91dCkpCisgICAgICAgIC52YWx1ZTsKKyAgfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBGb3JtYXRBcmdJbXBsOjpWVGFibGUgRm9ybWF0QXJnSW1w
bDo6VHlwZWRWVGFibGU8VD46OnZhbHVlOworICBEYXRhIGRhdGFfOworICBEaXNwYXRjaGVyIGRp
c3BhdGNoZXJfOworfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIEZvcm1hdEFyZ0lt
cGw6OkluaXQoY29uc3QgVCYgdmFsdWUpIHsKLSAgZGF0YV8gPSBNYW5hZ2VyPFQ+OjpTZXRWYWx1
ZSh2YWx1ZSk7Ci0gIHZ0YmxfID0gJlR5cGVkVlRhYmxlPFQ+Ojp2YWx1ZTsKLX0KKyNkZWZpbmUg
QUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKFQsIEUpIFwKKyAgRSB0
ZW1wbGF0ZSBib29sIEZvcm1hdEFyZ0ltcGw6OkRpc3BhdGNoPFQ+KERhdGEsIENvbnZlcnNpb25T
cGVjLCB2b2lkKikKKworI2RlZmluZSBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9PVkVS
TE9BRFNfRVhQQU5EXyguLi4pICAgICAgICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9G
T1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKHN0cl9mb3JtYXRfaW50ZXJuYWw6OlZvaWRQdHIs
ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1ZB
X0FSR1NfXyk7ICAgICAgICAgICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9E
SVNQQVRDSF9JTlNUQU5USUFURV8oYm9vbCwgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgIFwK
KyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGNoYXIsIF9fVkFf
QVJHU19fKTsgICAgICAgICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENI
X0lOU1RBTlRJQVRFXyhzaWduZWQgY2hhciwgX19WQV9BUkdTX18pOyAgICAgICAgXAorICBBQlNM
X0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8odW5zaWduZWQgY2hhciwgX19W
QV9BUkdTX18pOyAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFO
VElBVEVfKHNob3J0LCBfX1ZBX0FSR1NfXyk7IC8qIE5PTElOVCAqLyBcCisgIEFCU0xfSU5URVJO
QUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyh1bnNpZ25lZCBzaG9ydCwgICAgICAvKiBO
T0xJTlQgKi8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19WQV9BUkdTX18pOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JN
QVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGludCwgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAg
ICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyh1bnNpZ25l
ZCBpbnQsIF9fVkFfQVJHU19fKTsgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQ
QVRDSF9JTlNUQU5USUFURV8obG9uZywgX19WQV9BUkdTX18pOyAvKiBOT0xJTlQgKi8gIFwKKyAg
QUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKHVuc2lnbmVkIGxvbmcs
ICAgICAgLyogTk9MSU5UICovICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgICAgICAgXAorICBBQlNMX0lO
VEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8obG9uZyBsb25nLCAvKiBOT0xJTlQg
Ki8gICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxf
Rk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyh1bnNpZ25lZCBsb25nIGxvbmcsIC8qIE5PTElO
VCAqLyAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19W
QV9BUkdTX18pOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRf
RElTUEFUQ0hfSU5TVEFOVElBVEVfKHVpbnQxMjgsIF9fVkFfQVJHU19fKTsgICAgICAgICAgICBc
CisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyhmbG9hdCwgX19W
QV9BUkdTX18pOyAgICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRD
SF9JTlNUQU5USUFURV8oZG91YmxlLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgIFwKKyAgQUJT
TF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGxvbmcgZG91YmxlLCBfX1ZB
X0FSR1NfXyk7ICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RB
TlRJQVRFXyhjb25zdCBjaGFyKiwgX19WQV9BUkdTX18pOyAgICAgICAgXAorICBBQlNMX0lOVEVS
TkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8oc3RkOjpzdHJpbmcsIF9fVkFfQVJHU19f
KTsgICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5U
SUFURV8oc3RyaW5nX3ZpZXcsIF9fVkFfQVJHU19fKQorCitBQlNMX0lOVEVSTkFMX0ZPUk1BVF9E
SVNQQVRDSF9PVkVSTE9BRFNfRVhQQU5EXyhleHRlcm4pOwogCi1leHRlcm4gdGVtcGxhdGUgc3Ry
dWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHN0cl9mb3JtYXRfaW50ZXJuYWw6OlZvaWRQ
dHI+OwotCi1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxl
PGJvb2w+OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJs
ZTxjaGFyPjsKLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFi
bGU8c2lnbmVkIGNoYXI+OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpU
eXBlZFZUYWJsZTx1bnNpZ25lZCBjaGFyPjsKLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0
QXJnSW1wbDo6VHlwZWRWVGFibGU8c2hvcnQ+OyAgICAgICAgICAgLy8gTk9MSU5UCi1leHRlcm4g
dGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVuc2lnbmVkIHNob3J0
PjsgIC8vIE5PTElOVAotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBl
ZFZUYWJsZTxpbnQ+OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBl
ZFZUYWJsZTx1bnNpZ25lZD47Ci1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6
OlR5cGVkVlRhYmxlPGxvbmc+OyAgICAgICAgICAgLy8gTk9MSU5UCi1leHRlcm4gdGVtcGxhdGUg
c3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVuc2lnbmVkIGxvbmc+OyAgLy8gTk9M
SU5UCi1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGxv
bmcgbG9uZz47ICAgICAgLy8gTk9MSU5UCi1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFy
Z0ltcGw6OlR5cGVkVlRhYmxlPAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZz47ICAvLyBOT0xJTlQK
LWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8dWludDEy
OD47Ci0KLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8
ZmxvYXQ+OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJs
ZTxkb3VibGU+OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZU
YWJsZTxsb25nIGRvdWJsZT47Ci0KLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1w
bDo6VHlwZWRWVGFibGU8Y29uc3QgY2hhcio+OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3Jt
YXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxzdGQ6OnN0cmluZz47Ci1leHRlcm4gdGVtcGxhdGUgc3Ry
dWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHN0cmluZ192aWV3PjsKIH0gIC8vIG5hbWVz
cGFjZSBzdHJfZm9ybWF0X2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmNjCmluZGV4IDMzZTg2NDE1NThhYjg2ZjNl
ODkyYWRkZWVjZDlhNmRlZjhiNDBhOTcuLmM0ZWRkZDE3ZGRiZTU2YTc2YzVlYzFhNTE4NDA3OWJm
MTA3MTY2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9i
aW5kLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmNjCkBA
IC0xMDMsMTUgKzEwMywxNSBAQCBjbGFzcyBDb252ZXJ0ZXJDb25zdW1lciB7CiB9OwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29udmVydGVyPgotYm9vbCBDb252ZXJ0QWxsKGNvbnN0IFVudHlwZWRG
b3JtYXRTcGVjSW1wbCYgZm9ybWF0LAotICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3Qg
Rm9ybWF0QXJnSW1wbD4gYXJncywKLSAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJ0ZXImIGNv
bnZlcnRlcikgewotICBjb25zdCBQYXJzZWRGb3JtYXRCYXNlKiBwYyA9IGZvcm1hdC5wYXJzZWRf
Y29udmVyc2lvbigpOwotICBpZiAocGMpCi0gICAgcmV0dXJuIHBjLT5Qcm9jZXNzRm9ybWF0KENv
bnZlcnRlckNvbnN1bWVyPENvbnZlcnRlcj4oY29udmVydGVyLCBhcmdzKSk7Ci0KLSAgcmV0dXJu
IFBhcnNlRm9ybWF0U3RyaW5nKGZvcm1hdC5zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENvbnZlcnRlckNvbnN1bWVyPENvbnZlcnRlcj4oY29udmVydGVyLCBhcmdzKSk7Citib29s
IENvbnZlcnRBbGwoY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MsIENvbnZlcnRlciBj
b252ZXJ0ZXIpIHsKKyAgaWYgKGZvcm1hdC5oYXNfcGFyc2VkX2NvbnZlcnNpb24oKSkgeworICAg
IHJldHVybiBmb3JtYXQucGFyc2VkX2NvbnZlcnNpb24oKS0+UHJvY2Vzc0Zvcm1hdCgKKyAgICAg
ICAgQ29udmVydGVyQ29uc3VtZXI8Q29udmVydGVyPihjb252ZXJ0ZXIsIGFyZ3MpKTsKKyAgfSBl
bHNlIHsKKyAgICByZXR1cm4gUGFyc2VGb3JtYXRTdHJpbmcoZm9ybWF0LnN0cigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0ZXJDb25zdW1lcjxDb252ZXJ0ZXI+KGNvbnZl
cnRlciwgYXJncykpOworICB9CiB9CiAKIGNsYXNzIERlZmF1bHRDb252ZXJ0ZXIgewpAQCAtMTU4
LDcgKzE1OCw3IEBAIGJvb2wgQmluZFdpdGhQYWNrKGNvbnN0IFVuYm91bmRDb252ZXJzaW9uKiBw
cm9wcywKICAgcmV0dXJuIEFyZ0NvbnRleHQocGFjaykuQmluZChwcm9wcywgYm91bmQpOwogfQog
Ci1zdGQ6OnN0cmluZyBTdW1tYXJpemUoY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsJiBmb3Jt
YXQsCitzdGQ6OnN0cmluZyBTdW1tYXJpemUoY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZv
cm1hdCwKICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBh
cmdzKSB7CiAgIHR5cGVkZWYgU3VtbWFyaXppbmdDb252ZXJ0ZXIgQ29udmVydGVyOwogICBzdGQ6
OnN0cmluZyBvdXQ7CkBAIC0xNjcsMjMgKzE2NywxOCBAQCBzdGQ6OnN0cmluZyBTdW1tYXJpemUo
Y29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsJiBmb3JtYXQsCiAgICAgLy8gZmx1c2guCiAgICAg
Rm9ybWF0U2lua0ltcGwgc2luaygmb3V0KTsKICAgICBpZiAoIUNvbnZlcnRBbGwoZm9ybWF0LCBh
cmdzLCBDb252ZXJ0ZXIoJnNpbmspKSkgewotICAgICAgc2luay5GbHVzaCgpOwotICAgICAgb3V0
LmNsZWFyKCk7CisgICAgICByZXR1cm4gIiI7CiAgICAgfQogICB9CiAgIHJldHVybiBvdXQ7CiB9
CiAKIGJvb2wgRm9ybWF0VW50eXBlZChGb3JtYXRSYXdTaW5rSW1wbCByYXdfc2luaywKLSAgICAg
ICAgICAgICAgICAgICBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncykgewogICBG
b3JtYXRTaW5rSW1wbCBzaW5rKHJhd19zaW5rKTsKICAgdXNpbmcgQ29udmVydGVyID0gRGVmYXVs
dENvbnZlcnRlcjsKLSAgaWYgKCFDb252ZXJ0QWxsKGZvcm1hdCwgYXJncywgQ29udmVydGVyKCZz
aW5rKSkpIHsKLSAgICBzaW5rLkZsdXNoKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHJl
dHVybiB0cnVlOworICByZXR1cm4gQ29udmVydEFsbChmb3JtYXQsIGFyZ3MsIENvbnZlcnRlcigm
c2luaykpOwogfQogCiBzdGQ6Om9zdHJlYW0mIFN0cmVhbWFibGU6OlByaW50KHN0ZDo6b3N0cmVh
bSYgb3MpIGNvbnN0IHsKQEAgLTE5MSwxNCArMTg2LDE2IEBAIHN0ZDo6b3N0cmVhbSYgU3RyZWFt
YWJsZTo6UHJpbnQoc3RkOjpvc3RyZWFtJiBvcykgY29uc3QgewogICByZXR1cm4gb3M7CiB9CiAK
LXN0ZDo6c3RyaW5nJiBBcHBlbmRQYWNrKHN0ZDo6c3RyaW5nKiBvdXQsIGNvbnN0IFVudHlwZWRG
b3JtYXRTcGVjSW1wbCYgZm9ybWF0LAorc3RkOjpzdHJpbmcmIEFwcGVuZFBhY2soc3RkOjpzdHJp
bmcqIG91dCwgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpIHsKICAgc2l6ZV90
IG9yaWcgPSBvdXQtPnNpemUoKTsKLSAgaWYgKCFGb3JtYXRVbnR5cGVkKG91dCwgZm9ybWF0LCBh
cmdzKSkgb3V0LT5yZXNpemUob3JpZyk7CisgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoIUZvcm1h
dFVudHlwZWQob3V0LCBmb3JtYXQsIGFyZ3MpKSkgeworICAgIG91dC0+ZXJhc2Uob3JpZyk7Cisg
IH0KICAgcmV0dXJuICpvdXQ7CiB9CiAKLWludCBGcHJpbnRGKHN0ZDo6RklMRSogb3V0cHV0LCBj
b25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKK2ludCBGcHJpbnRGKHN0ZDo6RklM
RSogb3V0cHV0LCBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAgICAg
ICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7CiAgIEZJTEVSYXdTaW5r
IHNpbmsob3V0cHV0KTsKICAgaWYgKCFGb3JtYXRVbnR5cGVkKCZzaW5rLCBmb3JtYXQsIGFyZ3Mp
KSB7CkBAIC0yMTYsNyArMjEzLDcgQEAgaW50IEZwcmludEYoc3RkOjpGSUxFKiBvdXRwdXQsIGNv
bnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAogICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50PihzaW5rLmNvdW50KCkpOwogfQogCi1pbnQgU25wcmludEYoY2hhciogb3V0cHV0LCBzaXpl
X3Qgc2l6ZSwgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsJiBmb3JtYXQsCitpbnQgU25wcmlu
dEYoY2hhciogb3V0cHV0LCBzaXplX3Qgc2l6ZSwgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBs
IGZvcm1hdCwKICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFy
Z3MpIHsKICAgQnVmZmVyUmF3U2luayBzaW5rKG91dHB1dCwgc2l6ZSA/IHNpemUgLSAxIDogMCk7
CiAgIGlmICghRm9ybWF0VW50eXBlZCgmc2luaywgZm9ybWF0LCBhcmdzKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmgKaW5kZXggNDAwODYxMTIxMWNmZTYwNTNjNTFh
ZjA2NDhhMDUxMzU0YmRmODFhMi4uMWI1MmRmOWM3ZjU2NTVmMWQ3OGRhZGM1MDgyNWM0ZDIzZTQy
NjBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5oCkBAIC0zMywx
MyArMzMsMjEgQEAgY2xhc3MgVW50eXBlZEZvcm1hdFNwZWNJbXBsIHsKICBwdWJsaWM6CiAgIFVu
dHlwZWRGb3JtYXRTcGVjSW1wbCgpID0gZGVsZXRlOwogCi0gIGV4cGxpY2l0IFVudHlwZWRGb3Jt
YXRTcGVjSW1wbChzdHJpbmdfdmlldyBzKSA6IHN0cl8ocyksIHBjXygpIHt9CisgIGV4cGxpY2l0
IFVudHlwZWRGb3JtYXRTcGVjSW1wbChzdHJpbmdfdmlldyBzKQorICAgICAgOiBkYXRhXyhzLmRh
dGEoKSksIHNpemVfKHMuc2l6ZSgpKSB7fQogICBleHBsaWNpdCBVbnR5cGVkRm9ybWF0U3BlY0lt
cGwoCiAgICAgICBjb25zdCBzdHJfZm9ybWF0X2ludGVybmFsOjpQYXJzZWRGb3JtYXRCYXNlKiBw
YykKLSAgICAgIDogcGNfKHBjKSB7fQotICBzdHJpbmdfdmlldyBzdHIoKSBjb25zdCB7IHJldHVy
biBzdHJfOyB9CisgICAgICA6IGRhdGFfKHBjKSwgc2l6ZV8ofnNpemVfdHt9KSB7fQorCisgIGJv
b2wgaGFzX3BhcnNlZF9jb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc2l6ZV8gPT0gfnNpemVf
dHt9OyB9CisKKyAgc3RyaW5nX3ZpZXcgc3RyKCkgY29uc3QgeworICAgIGFzc2VydCghaGFzX3Bh
cnNlZF9jb252ZXJzaW9uKCkpOworICAgIHJldHVybiBzdHJpbmdfdmlldyhzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YV8pLCBzaXplXyk7CisgIH0KICAgY29uc3Qgc3RyX2Zvcm1hdF9pbnRl
cm5hbDo6UGFyc2VkRm9ybWF0QmFzZSogcGFyc2VkX2NvbnZlcnNpb24oKSBjb25zdCB7Ci0gICAg
cmV0dXJuIHBjXzsKKyAgICBhc3NlcnQoaGFzX3BhcnNlZF9jb252ZXJzaW9uKCkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBzdHJfZm9ybWF0X2ludGVybmFsOjpQYXJzZWRGb3JtYXRC
YXNlKj4oZGF0YV8pOwogICB9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC00OCw4ICs1
Niw4IEBAIGNsYXNzIFVudHlwZWRGb3JtYXRTcGVjSW1wbCB7CiAgIH0KIAogIHByaXZhdGU6Ci0g
IHN0cmluZ192aWV3IHN0cl87Ci0gIGNvbnN0IHN0cl9mb3JtYXRfaW50ZXJuYWw6OlBhcnNlZEZv
cm1hdEJhc2UqIHBjXzsKKyAgY29uc3Qgdm9pZCogZGF0YV87CisgIHNpemVfdCBzaXplXzsKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLj4KQEAgLTE0NCwzMSArMTUyLDMx
IEBAIGNsYXNzIFN0cmVhbWFibGUgewogfTsKIAogLy8gZm9yIHRlc3RpbmcKLXN0ZDo6c3RyaW5n
IFN1bW1hcml6ZShjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKK3N0ZDo6c3Ry
aW5nIFN1bW1hcml6ZShVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAgICAgICAg
ICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpOwogYm9vbCBCaW5kV2l0
aFBhY2soY29uc3QgVW5ib3VuZENvbnZlcnNpb24qIHByb3BzLAogICAgICAgICAgICAgICAgICAg
YWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBwYWNrLCBCb3VuZENvbnZlcnNpb24qIGJv
dW5kKTsKIAogYm9vbCBGb3JtYXRVbnR5cGVkKEZvcm1hdFJhd1NpbmtJbXBsIHJhd19zaW5rLAot
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgIFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKTsKIAotc3Rk
OjpzdHJpbmcmIEFwcGVuZFBhY2soc3RkOjpzdHJpbmcqIG91dCwgY29uc3QgVW50eXBlZEZvcm1h
dFNwZWNJbXBsJiBmb3JtYXQsCitzdGQ6OnN0cmluZyYgQXBwZW5kUGFjayhzdGQ6OnN0cmluZyog
b3V0LCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIGFi
c2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncyk7CiAKLWlubGluZSBzdGQ6OnN0cmlu
ZyBGb3JtYXRQYWNrKGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAoraW5saW5l
IHN0ZDo6c3RyaW5nIEZvcm1hdFBhY2soY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0lt
cGw+IGFyZ3MpIHsKICAgc3RkOjpzdHJpbmcgb3V0OwogICBBcHBlbmRQYWNrKCZvdXQsIGZvcm1h
dCwgYXJncyk7CiAgIHJldHVybiBvdXQ7CiB9CiAKLWludCBGcHJpbnRGKHN0ZDo6RklMRSogb3V0
cHV0LCBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKK2ludCBGcHJpbnRGKHN0
ZDo6RklMRSogb3V0cHV0LCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAgICAg
ICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKTsKLWludCBTbnByaW50Rihj
aGFyKiBvdXRwdXQsIHNpemVfdCBzaXplLCBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZv
cm1hdCwKK2ludCBTbnByaW50RihjaGFyKiBvdXRwdXQsIHNpemVfdCBzaXplLCBVbnR5cGVkRm9y
bWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0
QXJnSW1wbD4gYXJncyk7CiAKLS8vIFJldHVybmVkIGJ5IFN0cmVhbWVkKHYpLiBDb252ZXJ0cyB2
aWEgJyVzJyB0byB0aGUgc3RkOjpzdHJpbmcgY3JlYXRlZAorLy8gUmV0dXJuZWQgYnkgU3RyZWFt
ZWQodikuIENvbnZlcnRzIHZpYSAnJXMnIHRvIHRoZSBzdHJpbmcgY3JlYXRlZAogLy8gYnkgc3Rk
Ojpvc3RyZWFtIDw8IHYuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIFN0cmVhbWVkV3Jh
cHBlciB7CkBAIC0xNzgsNyArMTg2LDcgQEAgY2xhc3MgU3RyZWFtZWRXcmFwcGVyIHsKICBwcml2
YXRlOgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUz4KICAgZnJpZW5kIENvbnZlcnRSZXN1bHQ8Q29u
djo6cz4gRm9ybWF0Q29udmVydEltcGwoY29uc3QgU3RyZWFtZWRXcmFwcGVyPFM+JiB2LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252
ZXJzaW9uU3BlYyYgY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIG91dCk7CiAgIGNvbnN0
IFQmIHZfOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1h
dC9leHRlbnNpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNp
b24uaAppbmRleCA4MTAzMzBiOWQ3MWJkMTg4YzI2ZWFlMjE1YWJkNjFkNDhlZDRiZDc4Li4xMWI5
OTZhZWZkMzdkMTU3YTNmMDhkYWE1YTIyZGMwMWMwYTJkMDIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9zdHJfZm9ybWF0L2V4dGVuc2lvbi5oCkBAIC0xOCw2ICsxOCw3IEBACiAjZGVm
aW5lIEFCU0xfU1RSSU5HU19JTlRFUk5BTF9TVFJfRk9STUFUX0VYVEVOU0lPTl9IXwogCiAjaW5j
bHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxjc3RyaW5nPgog
I2luY2x1ZGUgPG9zdHJlYW0+CiAKQEAgLTU3LDcgKzU4LDcgQEAgY2xhc3MgRm9ybWF0UmF3U2lu
a0ltcGwgewogICB2b2lkICgqd3JpdGVfKSh2b2lkKiwgc3RyaW5nX3ZpZXcpOwogfTsKIAotLy8g
QW4gYWJzdHJhY3Rpb24gdG8gd2hpY2ggY29udmVyc2lvbnMgd3JpdGUgdGhlaXIgc3RkOjpzdHJp
bmcgZGF0YS4KKy8vIEFuIGFic3RyYWN0aW9uIHRvIHdoaWNoIGNvbnZlcnNpb25zIHdyaXRlIHRo
ZWlyIHN0cmluZyBkYXRhLgogY2xhc3MgRm9ybWF0U2lua0ltcGwgewogIHB1YmxpYzoKICAgZXhw
bGljaXQgRm9ybWF0U2lua0ltcGwoRm9ybWF0UmF3U2lua0ltcGwgcmF3KSA6IHJhd18ocmF3KSB7
fQpAQCAtMzA3LDcgKzMwOCwxMiBAQCBjbGFzcyBDb252ZXJzaW9uU3BlYyB7CiAgcHVibGljOgog
ICBGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIGZsYWdzXzsgfQogICBMZW5ndGhNb2QgbGVu
Z3RoX21vZCgpIGNvbnN0IHsgcmV0dXJuIGxlbmd0aF9tb2RfOyB9Ci0gIENvbnZlcnNpb25DaGFy
IGNvbnYoKSBjb25zdCB7IHJldHVybiBjb252XzsgfQorICBDb252ZXJzaW9uQ2hhciBjb252KCkg
Y29uc3QgeworICAgIC8vIEtlZXAgdGhpcyBmaWVsZCBmaXJzdCBpbiB0aGUgc3RydWN0IC4gSXQg
Z2VuZXJhdGVzIGJldHRlciBjb2RlIHdoZW4KKyAgICAvLyBhY2Nlc3NpbmcgaXQgd2hlbiBDb252
ZXJzaW9uU3BlYyBpcyBwYXNzZWQgYnkgdmFsdWUgaW4gcmVnaXN0ZXJzLgorICAgIHN0YXRpY19h
c3NlcnQob2Zmc2V0b2YoQ29udmVyc2lvblNwZWMsIGNvbnZfKSA9PSAwLCAiIik7CisgICAgcmV0
dXJuIGNvbnZfOworICB9CiAKICAgLy8gUmV0dXJucyB0aGUgc3BlY2lmaWVkIHdpZHRoLiBJZiB3
aWR0aCBpcyB1bnNwZWNmaWVkLCBpdCByZXR1cm5zIGEgbmVnYXRpdmUKICAgLy8gdmFsdWUuCkBA
IC0zMjQsOSArMzMwLDkgQEAgY2xhc3MgQ29udmVyc2lvblNwZWMgewogICB2b2lkIHNldF9sZWZ0
KGJvb2wgYikgeyBmbGFnc18ubGVmdCA9IGI7IH0KIAogIHByaXZhdGU6CisgIENvbnZlcnNpb25D
aGFyIGNvbnZfOwogICBGbGFncyBmbGFnc187CiAgIExlbmd0aE1vZCBsZW5ndGhfbW9kXzsKLSAg
Q29udmVyc2lvbkNoYXIgY29udl87CiAgIGludCB3aWR0aF87CiAgIGludCBwcmVjaXNpb25fOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuaAppbmRleCAzYjBh
YTVlNzE1N2VjYmRhZjhmMjQzZTQ0YTEzYTc1MTYzOGI1NzVkLi4xMmVjZDk5ZTY4MGQxZWJkNjc5
ZDNjODgyZjdmMjZmM2U5ZmI2ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L3N0cl9mb3JtYXQvb3V0cHV0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9y
bWF0L291dHB1dC5oCkBAIC02OSwxMCArNjksMTAgQEAgY2xhc3MgRklMRVJhd1NpbmsgewogCiAv
LyBQcm92aWRlIFJhd1NpbmsgaW50ZWdyYXRpb24gd2l0aCBjb21tb24gdHlwZXMgZnJvbSB0aGUg
U1RMLgogaW5saW5lIHZvaWQgQWJzbEZvcm1hdEZsdXNoKHN0ZDo6c3RyaW5nKiBvdXQsIHN0cmlu
Z192aWV3IHMpIHsKLSAgb3V0LT5hcHBlbmQocy5iZWdpbigpLCBzLnNpemUoKSk7CisgIG91dC0+
YXBwZW5kKHMuZGF0YSgpLCBzLnNpemUoKSk7CiB9CiBpbmxpbmUgdm9pZCBBYnNsRm9ybWF0Rmx1
c2goc3RkOjpvc3RyZWFtKiBvdXQsIHN0cmluZ192aWV3IHMpIHsKLSAgb3V0LT53cml0ZShzLmJl
Z2luKCksIHMuc2l6ZSgpKTsKKyAgb3V0LT53cml0ZShzLmRhdGEoKSwgcy5zaXplKCkpOwogfQog
CiB0ZW1wbGF0ZSA8Y2xhc3MgQWJzbENvcmQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFy
c2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5jYwppbmRl
eCAxMDExNGY0ODljMDE4OWYwNTg2MTQ5Njg1Mzc4ZTEzYThkZjk0Njg0Li41ZTNkMGQwNTQ3ZDFk
YmFkNDdiM2E1MDNiNjg1MDc2Mzc0MzczMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2lu
dGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
c3RyX2Zvcm1hdC9wYXJzZXIuY2MKQEAgLTgxLDE5ICs4MSwyNyBAQCBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6aW50OF90IGtJZHNbXSA9IHsKIHRlbXBsYXRlIDxib29sIGlzX3Bvc2l0aW9uYWw+CiBi
b29sIENvbnN1bWVDb252ZXJzaW9uKHN0cmluZ192aWV3ICpzcmMsIFVuYm91bmRDb252ZXJzaW9u
ICpjb252LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm5leHRfYXJnKSB7Ci0gIGNvbnN0
IGNoYXIgKnBvcyA9IHNyYy0+YmVnaW4oKTsKLSAgY29uc3QgY2hhciAqY29uc3QgZW5kID0gc3Jj
LT5lbmQoKTsKKyAgY29uc3QgY2hhciAqcG9zID0gc3JjLT5kYXRhKCk7CisgIGNvbnN0IGNoYXIg
KmNvbnN0IGVuZCA9IHBvcyArIHNyYy0+c2l6ZSgpOwogICBjaGFyIGM7Ci0gIC8vIFJlYWQgdGhl
IG5leHQgY2hhciBpbnRvIGBjYCBhbmQgdXBkYXRlIGBwb3NgLiBSZWFkcyAnXDAnIGlmIGF0IGVu
ZC4KLSAgY29uc3QgYXV0byBnZXRfY2hhciA9IFsmXSB7IGMgPSBwb3MgPT0gZW5kID8gJ1wwJyA6
ICpwb3MrKzsgfTsKKyAgLy8gUmVhZCB0aGUgbmV4dCBjaGFyIGludG8gYGNgIGFuZCB1cGRhdGUg
YHBvc2AuIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgYXJlCisgIC8vIG5vIG1vcmUgY2hhcnMgdG8g
cmVhZC4KKyNkZWZpbmUgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFSKCkgICAg
ICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHBvcyA9PSBlbmQpKSByZXR1cm4gZmFs
c2U7IFwKKyAgICBjID0gKnBvcysrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgfSB3aGlsZSAoMCkKIAogICBjb25zdCBhdXRvIHBhcnNlX2RpZ2l0cyA9IFsmXSB7
CiAgICAgaW50IGRpZ2l0cyA9IGMgLSAnMCc7Ci0gICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gb3Zl
cmZsb3cgYGRpZ2l0c2Agc28gd2UgY29uc3VtZSBhdCBtb3N0IGRpZ2l0czEwLTEKKyAgICAvLyBX
ZSBkbyBub3Qgd2FudCB0byBvdmVyZmxvdyBgZGlnaXRzYCBzbyB3ZSBjb25zdW1lIGF0IG1vc3Qg
ZGlnaXRzMTAKICAgICAvLyBkaWdpdHMuIElmIHRoZXJlIGFyZSBtb3JlIGRpZ2l0cyB0aGUgcGFy
c2luZyB3aWxsIGZhaWwgbGF0ZXIgb24gd2hlbiB0aGUKICAgICAvLyBkaWdpdCBkb2Vzbid0IG1h
dGNoIHRoZSBleHBlY3RlZCBjaGFyYWN0ZXJzLgotICAgIGludCBudW1fZGlnaXRzID0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjpkaWdpdHMxMCAtIDI7Ci0gICAgZm9yIChnZXRfY2hhcigpOyBu
dW1fZGlnaXRzICYmIHN0ZDo6aXNkaWdpdChjKTsgZ2V0X2NoYXIoKSkgeworICAgIGludCBudW1f
ZGlnaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjpkaWdpdHMxMDsKKyAgICBmb3IgKDs7
KSB7CisgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHBvcyA9PSBlbmQgfHwgIW51bV9kaWdp
dHMpKSBicmVhazsKKyAgICAgIGMgPSAqcG9zKys7CisgICAgICBpZiAoIXN0ZDo6aXNkaWdpdChj
KSkgYnJlYWs7CiAgICAgICAtLW51bV9kaWdpdHM7CiAgICAgICBkaWdpdHMgPSAxMCAqIGRpZ2l0
cyArIGMgLSAnMCc7CiAgICAgfQpAQCAtMTAxLDE0ICsxMDksMTQgQEAgYm9vbCBDb25zdW1lQ29u
dmVyc2lvbihzdHJpbmdfdmlldyAqc3JjLCBVbmJvdW5kQ29udmVyc2lvbiAqY29udiwKICAgfTsK
IAogICBpZiAoaXNfcG9zaXRpb25hbCkgewotICAgIGdldF9jaGFyKCk7Ci0gICAgaWYgKGMgPCAn
MScgfHwgYyA+ICc5JykgcmV0dXJuIGZhbHNlOworICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRF
Uk5BTF9HRVRfQ0hBUigpOworICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoYyA8ICcxJyB8fCBj
ID4gJzknKSkgcmV0dXJuIGZhbHNlOwogICAgIGNvbnYtPmFyZ19wb3NpdGlvbiA9IHBhcnNlX2Rp
Z2l0cygpOwogICAgIGFzc2VydChjb252LT5hcmdfcG9zaXRpb24gPiAwKTsKLSAgICBpZiAoYyAh
PSAnJCcpIHJldHVybiBmYWxzZTsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGMgIT0gJyQn
KSkgcmV0dXJuIGZhbHNlOwogICB9CiAKLSAgZ2V0X2NoYXIoKTsKKyAgQUJTTF9GT1JNQVRfUEFS
U0VSX0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAKICAgLy8gV2Ugc2hvdWxkIHN0YXJ0IHdpdGggdGhl
IGJhc2ljIGZsYWcgb24uCiAgIGFzc2VydChjb252LT5mbGFncy5iYXNpYyk7CkBAIC0xMTksMzIg
KzEyNywzOSBAQCBib29sIENvbnN1bWVDb252ZXJzaW9uKHN0cmluZ192aWV3ICpzcmMsIFVuYm91
bmRDb252ZXJzaW9uICpjb252LAogICBpZiAoYyA8ICdBJykgewogICAgIGNvbnYtPmZsYWdzLmJh
c2ljID0gZmFsc2U7CiAKLSAgICBmb3IgKDsgYyA8PSAnMCc7IGdldF9jaGFyKCkpIHsKKyAgICBm
b3IgKDsgYyA8PSAnMCc7KSB7CisgICAgICAvLyBGSVhNRTogV2UgbWlnaHQgYmUgYWJsZSB0byBz
cGVlZCB0aGlzIHVwIHJldXNpbmcgdGhlIGtJZHMgbG9va3VwIHRhYmxlCisgICAgICAvLyBmcm9t
IGFib3ZlLgorICAgICAgLy8gSXQgbWlnaHQgcmVxdWlyZSBjaGFuZ2luZyBGbGFncyB0byBiZSBh
IHBsYWluIGludGVnZXIgd2hlcmUgd2UgY2FuIHw9IGEKKyAgICAgIC8vIHZhbHVlLgogICAgICAg
c3dpdGNoIChjKSB7CiAgICAgICAgIGNhc2UgJy0nOgogICAgICAgICAgIGNvbnYtPmZsYWdzLmxl
ZnQgPSB0cnVlOwotICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlICcrJzoKICAgICAgICAgICBjb252LT5mbGFncy5zaG93X3BvcyA9IHRydWU7Ci0gICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJyAnOgogICAg
ICAgICAgIGNvbnYtPmZsYWdzLnNpZ25fY29sID0gdHJ1ZTsKLSAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnIyc6CiAgICAgICAgICAgY29udi0+Zmxh
Z3MuYWx0ID0gdHJ1ZTsKLSAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSAnMCc6CiAgICAgICAgICAgY29udi0+ZmxhZ3MuemVybyA9IHRydWU7Ci0gICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgZ290byBmbGFnc19kb25lOwogICAgICAgfQotICAgICAgYnJlYWs7CisgICAgICBBQlNM
X0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICB9CitmbGFnc19kb25lOgog
CiAgICAgaWYgKGMgPD0gJzknKSB7CiAgICAgICBpZiAoYyA+PSAnMCcpIHsKICAgICAgICAgaW50
IG1heWJlX3dpZHRoID0gcGFyc2VfZGlnaXRzKCk7CiAgICAgICAgIGlmICghaXNfcG9zaXRpb25h
bCAmJiBjID09ICckJykgewotICAgICAgICAgIGlmICgqbmV4dF9hcmcgIT0gMCkgcmV0dXJuIGZh
bHNlOworICAgICAgICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoKm5leHRfYXJnICE9IDApKSBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgLy8gUG9zaXRpb25hbCBjb252ZXJzaW9uLgogICAgICAg
ICAgICpuZXh0X2FyZyA9IC0xOwogICAgICAgICAgIGNvbnYtPmZsYWdzID0gRmxhZ3MoKTsKQEAg
LTE1MywxMiArMTY4LDEyIEBAIGJvb2wgQ29uc3VtZUNvbnZlcnNpb24oc3RyaW5nX3ZpZXcgKnNy
YywgVW5ib3VuZENvbnZlcnNpb24gKmNvbnYsCiAgICAgICAgIH0KICAgICAgICAgY29udi0+d2lk
dGguc2V0X3ZhbHVlKG1heWJlX3dpZHRoKTsKICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnKicpIHsK
LSAgICAgICAgZ2V0X2NoYXIoKTsKKyAgICAgICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFM
X0dFVF9DSEFSKCk7CiAgICAgICAgIGlmIChpc19wb3NpdGlvbmFsKSB7Ci0gICAgICAgICAgaWYg
KGMgPCAnMScgfHwgYyA+ICc5JykgcmV0dXJuIGZhbHNlOworICAgICAgICAgIGlmIChBQlNMX1BS
RURJQ1RfRkFMU0UoYyA8ICcxJyB8fCBjID4gJzknKSkgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
IGNvbnYtPndpZHRoLnNldF9mcm9tX2FyZyhwYXJzZV9kaWdpdHMoKSk7Ci0gICAgICAgICAgaWYg
KGMgIT0gJyQnKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZ2V0X2NoYXIoKTsKKyAgICAgICAg
ICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGMgIT0gJyQnKSkgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgIGNvbnYtPndpZHRoLnNldF9mcm9tX2FyZygrKypuZXh0X2FyZyk7CiAg
ICAgICAgIH0KQEAgLTE2NiwxNiArMTgxLDE2IEBAIGJvb2wgQ29uc3VtZUNvbnZlcnNpb24oc3Ry
aW5nX3ZpZXcgKnNyYywgVW5ib3VuZENvbnZlcnNpb24gKmNvbnYsCiAgICAgfQogCiAgICAgaWYg
KGMgPT0gJy4nKSB7Ci0gICAgICBnZXRfY2hhcigpOworICAgICAgQUJTTF9GT1JNQVRfUEFSU0VS
X0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAgICAgICBpZiAoc3RkOjppc2RpZ2l0KGMpKSB7CiAgICAg
ICAgIGNvbnYtPnByZWNpc2lvbi5zZXRfdmFsdWUocGFyc2VfZGlnaXRzKCkpOwogICAgICAgfSBl
bHNlIGlmIChjID09ICcqJykgewotICAgICAgICBnZXRfY2hhcigpOworICAgICAgICBBQlNMX0ZP
Uk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICAgICAgaWYgKGlzX3Bvc2l0aW9u
YWwpIHsKLSAgICAgICAgICBpZiAoYyA8ICcxJyB8fCBjID4gJzknKSByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShjIDwgJzEnIHx8IGMgPiAnOScpKSByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgY29udi0+cHJlY2lzaW9uLnNldF9mcm9tX2FyZyhwYXJzZV9k
aWdpdHMoKSk7CiAgICAgICAgICAgaWYgKGMgIT0gJyQnKSByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgZ2V0X2NoYXIoKTsKKyAgICAgICAgICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VU
X0NIQVIoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICBjb252LT5wcmVjaXNpb24uc2V0
X2Zyb21fYXJnKCsrKm5leHRfYXJnKTsKICAgICAgICAgfQpAQCAtMTg4LDIzICsyMDMsMjMgQEAg
Ym9vbCBDb25zdW1lQ29udmVyc2lvbihzdHJpbmdfdmlldyAqc3JjLCBVbmJvdW5kQ29udmVyc2lv
biAqY29udiwKICAgc3RkOjppbnQ4X3QgaWQgPSBrSWRzW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KGMpXTsKIAogICBpZiAoaWQgPCAwKSB7Ci0gICAgaWYgKGlkID09IG5vbmUpIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGlkID09IG5vbmUpKSByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBJdCBpcyBhIGxlbmd0aCBtb2RpZmllci4KICAgICB1c2luZyBzdHJfZm9y
bWF0X2ludGVybmFsOjpMZW5ndGhNb2Q7CiAgICAgTGVuZ3RoTW9kIGxlbmd0aF9tb2QgPSBMZW5n
dGhNb2Q6OkZyb21JZChzdGF0aWNfY2FzdDxMTT4ofmlkKSk7Ci0gICAgZ2V0X2NoYXIoKTsKKyAg
ICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICBpZiAoYyA9PSAn
aCcgJiYgbGVuZ3RoX21vZC5pZCgpID09IExlbmd0aE1vZDo6aCkgewogICAgICAgY29udi0+bGVu
Z3RoX21vZCA9IExlbmd0aE1vZDo6RnJvbUlkKExlbmd0aE1vZDo6aGgpOwotICAgICAgZ2V0X2No
YXIoKTsKKyAgICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwogICAg
IH0gZWxzZSBpZiAoYyA9PSAnbCcgJiYgbGVuZ3RoX21vZC5pZCgpID09IExlbmd0aE1vZDo6bCkg
ewogICAgICAgY29udi0+bGVuZ3RoX21vZCA9IExlbmd0aE1vZDo6RnJvbUlkKExlbmd0aE1vZDo6
bGwpOwotICAgICAgZ2V0X2NoYXIoKTsKKyAgICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5B
TF9HRVRfQ0hBUigpOwogICAgIH0gZWxzZSB7CiAgICAgICBjb252LT5sZW5ndGhfbW9kID0gbGVu
Z3RoX21vZDsKICAgICB9CiAgICAgaWQgPSBrSWRzW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGMpXTsKLSAgICBpZiAoaWQgPCAwKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKEFCU0xfUFJFRElD
VF9GQUxTRShpZCA8IDApKSByZXR1cm4gZmFsc2U7CiAgIH0KIAogICBhc3NlcnQoQ2hlY2tGYXN0
UGF0aFNldHRpbmcoKmNvbnYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
c3RyX2Zvcm1hdC9wYXJzZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9w
YXJzZXIuaAppbmRleCA1YmViYzk1NTQwZTZjMjhkMzlkMDg0NzMwNTM2Njc0MmNlZDllZGZhLi4x
MDIyZjA2Mjk3YTc0YTU4NGU4MmU0MWNhNGI4MjRmYmJmNjMzOTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5oCkBAIC03NSwxNCArNzUsMTQgQEAgc3RydWN0
IFVuYm91bmRDb252ZXJzaW9uIHsKIGJvb2wgQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uKHN0cmlu
Z192aWV3KiBzcmMsIFVuYm91bmRDb252ZXJzaW9uKiBjb252LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50KiBuZXh0X2FyZyk7CiAKLS8vIFBhcnNlIHRoZSBmb3JtYXQgc3RkOjpz
dHJpbmcgcHJvdmlkZWQgaW4gJ3NyYycgYW5kIHBhc3MgdGhlIGlkZW50aWZpZWQgaXRlbXMgaW50
bworLy8gUGFyc2UgdGhlIGZvcm1hdCBzdHJpbmcgcHJvdmlkZWQgaW4gJ3NyYycgYW5kIHBhc3Mg
dGhlIGlkZW50aWZpZWQgaXRlbXMgaW50bwogLy8gJ2NvbnN1bWVyJy4KIC8vIFRleHQgcnVucyB3
aWxsIGJlIHBhc3NlZCBieSBjYWxsaW5nCiAvLyAgIENvbnN1bWVyOjpBcHBlbmQoc3RyaW5nX3Zp
ZXcpOwogLy8gQ29udmVyc2lvbkl0ZW1zIHdpbGwgYmUgcGFzc2VkIGJ5IGNhbGxpbmcKIC8vICAg
Q29uc3VtZXI6OkNvbnZlcnRPbmUoVW5ib3VuZENvbnZlcnNpb24sIHN0cmluZ192aWV3KTsKIC8v
IEluIHRoZSBjYXNlIG9mIENvbnZlcnRPbmUsIHRoZSBzdHJpbmdfdmlldyB0aGF0IGlzIHBhc3Nl
ZCBpcyB0aGUKLS8vIHBvcnRpb24gb2YgdGhlIGZvcm1hdCBzdGQ6OnN0cmluZyBjb3JyZXNwb25k
aW5nIHRvIHRoZSBjb252ZXJzaW9uLCBub3QgaW5jbHVkaW5nCisvLyBwb3J0aW9uIG9mIHRoZSBm
b3JtYXQgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnZlcnNpb24sIG5vdCBpbmNsdWRp
bmcKIC8vIHRoZSBsZWFkaW5nICUuIE9uIHN1Y2Nlc3MsIGl0IHJldHVybnMgdHJ1ZS4gT24gZmFp
bHVyZSwgaXQgc3RvcHMgYW5kIHJldHVybnMKIC8vIGZhbHNlLgogdGVtcGxhdGUgPHR5cGVuYW1l
IENvbnN1bWVyPgpAQCAtOTAsNyArOTAsNyBAQCBib29sIFBhcnNlRm9ybWF0U3RyaW5nKHN0cmlu
Z192aWV3IHNyYywgQ29uc3VtZXIgY29uc3VtZXIpIHsKICAgaW50IG5leHRfYXJnID0gMDsKICAg
d2hpbGUgKCFzcmMuZW1wdHkoKSkgewogICAgIGNvbnN0IGNoYXIqIHBlcmNlbnQgPQotICAgICAg
ICBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtY2hyKHNyYy5iZWdpbigpLCAnJScsIHNyYy5z
aXplKCkpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbWNocihzcmMuZGF0
YSgpLCAnJScsIHNyYy5zaXplKCkpKTsKICAgICBpZiAoIXBlcmNlbnQpIHsKICAgICAgIC8vIFdl
IGZvdW5kIHRoZSBsYXN0IHN1YnN0cmluZy4KICAgICAgIHJldHVybiBjb25zdW1lci5BcHBlbmQo
c3JjKTsKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBQYXJzZUZvcm1hdFN0cmluZyhzdHJpbmdfdmll
dyBzcmMsIENvbnN1bWVyIGNvbnN1bWVyKSB7CiAgICAgLy8gV2UgZm91bmQgYSBwZXJjZW50LCBz
byBwdXNoIHRoZSB0ZXh0IHJ1biB0aGVuIHByb2Nlc3MgdGhlIHBlcmNlbnQuCiAgICAgc2l6ZV90
IHBlcmNlbnRfbG9jID0gcGVyY2VudCAtIHNyYy5kYXRhKCk7CiAgICAgaWYgKCFjb25zdW1lci5B
cHBlbmQoc3RyaW5nX3ZpZXcoc3JjLmRhdGEoKSwgcGVyY2VudF9sb2MpKSkgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChwZXJjZW50ICsgMSA+PSBzcmMuZW5kKCkpIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAocGVyY2VudCArIDEgPj0gc3JjLmRhdGEoKSArIHNyYy5zaXplKCkpIHJldHVybiBmYWxzZTsK
IAogICAgIFVuYm91bmRDb252ZXJzaW9uIGNvbnY7CiAKQEAgLTE3OCw3ICsxNzgsOCBAQCBjbGFz
cyBQYXJzZWRGb3JtYXRCYXNlIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBiYXNlID0gZGF0YV8u
Z2V0KCk7CiAgICAgc3RyaW5nX3ZpZXcgdGV4dChiYXNlLCAwKTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZW0gOiBpdGVtc18pIHsKLSAgICAgIHRleHQgPSBzdHJpbmdfdmlldyh0ZXh0LmVuZCgp
LCAoYmFzZSArIGl0ZW0udGV4dF9lbmQpIC0gdGV4dC5lbmQoKSk7CisgICAgICBjb25zdCBjaGFy
KiBjb25zdCBlbmQgPSB0ZXh0LmRhdGEoKSArIHRleHQuc2l6ZSgpOworICAgICAgdGV4dCA9IHN0
cmluZ192aWV3KGVuZCwgKGJhc2UgKyBpdGVtLnRleHRfZW5kKSAtIGVuZCk7CiAgICAgICBpZiAo
aXRlbS5pc19jb252ZXJzaW9uKSB7CiAgICAgICAgIGlmICghY29uc3VtZXIuQ29udmVydE9uZShp
dGVtLmNvbnYsIHRleHQpKSByZXR1cm4gZmFsc2U7CiAgICAgICB9IGVsc2UgewpAQCAtMjM3LDcg
KzIzOCw3IEBAIGNsYXNzIFBhcnNlZEZvcm1hdEJhc2UgewogLy8gVGhpcyBjbGFzcyBhbHNvIHN1
cHBvcnRzIHJ1bnRpbWUgZm9ybWF0IGNoZWNraW5nIHdpdGggdGhlIDo6TmV3KCkgYW5kCiAvLyA6
Ok5ld0FsbG93SWdub3JlZCgpIGZhY3RvcnkgZnVuY3Rpb25zLgogLy8gVGhpcyBpcyB0aGUgb25s
eSBBUEkgdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gcGFzcyBhIHJ1bnRpbWUgc3BlY2lmaWVkIGZv
cm1hdAotLy8gc3RkOjpzdHJpbmcuIFRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zIHdpbGwgcmV0dXJu
IE5VTEwgaWYgdGhlIGZvcm1hdCBkb2VzIG5vdCBtYXRjaAorLy8gc3RyaW5nLiBUaGVzZSBmYWN0
b3J5IGZ1bmN0aW9ucyB3aWxsIHJldHVybiBOVUxMIGlmIHRoZSBmb3JtYXQgZG9lcyBub3QgbWF0
Y2gKIC8vIHRoZSBjb252ZXJzaW9ucyByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuCiB0ZW1wbGF0ZSA8
c3RyX2Zvcm1hdF9pbnRlcm5hbDo6Q29udi4uLiBDPgogY2xhc3MgRXh0ZW5kZWRQYXJzZWRGb3Jt
YXQgOiBwdWJsaWMgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6UGFyc2VkRm9ybWF0QmFzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyX3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyX3Rlc3QuY2MKaW5kZXgg
ZTY5ODAyMGIxYWJhMzg0NTJjN2I4ODk5ZmQzZWQyNzY5YjBjM2U1MS4uYWU0MDIwMzE5MWI5N2Y5
YzNjNGYwYzRiZTI4MWEyMjkyMWRiNmU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9zdHJfZm9ybWF0L3BhcnNlcl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvc3RyX2Zvcm1hdC9wYXJzZXJfdGVzdC5jYwpAQCAtNjYsMTAgKzY2LDEwIEBAIGNsYXNzIENv
bnN1bWVVbmJvdW5kQ29udmVyc2lvblRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAg
dHlwZWRlZiBVbmJvdW5kQ29udmVyc2lvbiBQcm9wczsKICAgc3RyaW5nX3ZpZXcgQ29uc3VtZShz
dHJpbmdfdmlldyogc3JjKSB7CiAgICAgaW50IG5leHQgPSAwOwotICAgIGNvbnN0IGNoYXIqIHBy
ZXZfYmVnaW4gPSBzcmMtPmJlZ2luKCk7CisgICAgY29uc3QgY2hhciogcHJldl9iZWdpbiA9IHNy
Yy0+ZGF0YSgpOwogICAgIG8gPSBVbmJvdW5kQ29udmVyc2lvbigpOyAgLy8gcmVmcmVzaAogICAg
IENvbnN1bWVVbmJvdW5kQ29udmVyc2lvbihzcmMsICZvLCAmbmV4dCk7Ci0gICAgcmV0dXJuIHtw
cmV2X2JlZ2luLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyYy0+YmVnaW4oKSAtIHByZXZfYmVnaW4p
fTsKKyAgICByZXR1cm4ge3ByZXZfYmVnaW4sIHN0YXRpY19jYXN0PHNpemVfdD4oc3JjLT5kYXRh
KCkgLSBwcmV2X2JlZ2luKX07CiAgIH0KIAogICBib29sIFJ1bihjb25zdCBjaGFyICpmbXQsIGJv
b2wgZm9yY2VfcG9zaXRpb25hbCA9IGZhbHNlKSB7CkBAIC04NCw5ICs4NCw5IEBAIGNsYXNzIENv
bnN1bWVVbmJvdW5kQ29udmVyc2lvblRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIFRF
U1RfRihDb25zdW1lVW5ib3VuZENvbnZlcnNpb25UZXN0LCBDb25zdW1lU3BlY2lmaWNhdGlvbikg
ewogICBzdHJ1Y3QgRXhwZWN0YXRpb24gewogICAgIGludCBsaW5lOwotICAgIGNvbnN0IGNoYXIg
KnNyYzsKLSAgICBjb25zdCBjaGFyICpvdXQ7Ci0gICAgY29uc3QgY2hhciAqc3JjX3Bvc3Q7Cisg
ICAgc3RyaW5nX3ZpZXcgc3JjOworICAgIHN0cmluZ192aWV3IG91dDsKKyAgICBzdHJpbmdfdmll
dyBzcmNfcG9zdDsKICAgfTsKICAgY29uc3QgRXhwZWN0YXRpb24ga0V4cGVjdFtdID0gewogICAg
IHtfX0xJTkVfXywgIiIsICAgICAiIiwgICAgICIiICB9LApAQCAtMjM2LDYgKzIzNiwxNiBAQCBU
RVNUX0YoQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uVGVzdCwgV2lkdGhBbmRQcmVjaXNpb24pIHsK
ICAgRVhQRUNUX0VRKDksIG8ucHJlY2lzaW9uLmdldF9mcm9tX2FyZygpKTsKIAogICBFWFBFQ1Rf
RkFMU0UoUnVuKCIuKjAkZCIpKSA8PCAibm8gYXJnIDAiOworCisgIC8vIExhcmdlIHZhbHVlcwor
ICBFWFBFQ1RfVFJVRShSdW4oIjk5OTk5OTk5OS45OTk5OTk5OTlkIikpOworICBFWFBFQ1RfRkFM
U0Uoby53aWR0aC5pc19mcm9tX2FyZygpKTsKKyAgRVhQRUNUX0VRKDk5OTk5OTk5OSwgby53aWR0
aC52YWx1ZSgpKTsKKyAgRVhQRUNUX0ZBTFNFKG8ucHJlY2lzaW9uLmlzX2Zyb21fYXJnKCkpOwor
ICBFWFBFQ1RfRVEoOTk5OTk5OTk5LCBvLnByZWNpc2lvbi52YWx1ZSgpKTsKKworICBFWFBFQ1Rf
RkFMU0UoUnVuKCIxMDAwMDAwMDAwLjk5OTk5OTk5OWQiKSk7CisgIEVYUEVDVF9GQUxTRShSdW4o
Ijk5OTk5OTk5OS4xMDAwMDAwMDAwZCIpKTsKIH0KIAogVEVTVF9GKENvbnN1bWVVbmJvdW5kQ29u
dmVyc2lvblRlc3QsIEZsYWdzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L3N0cl9qb2luX2ludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9qb2luX2lu
dGVybmFsLmgKaW5kZXggYTczNDc1OGMyMWVlMzA5NTFmNzdhMmM2OWM5NmVjNzVkNzFlZTk2YS4u
MDA1OGZjOGFhNGQ1YTgxMjEwYTk4ZjJkMWJiMTFiYzBjNjVhOTY1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfam9pbl9pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvaW50ZXJuYWwvc3RyX2pvaW5faW50ZXJuYWwuaApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0cnVj
dCBEZWZhdWx0Rm9ybWF0dGVyPHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZVR5cGU+PgogLy8KIAogLy8g
VGhlIG1haW4gam9pbmluZyBhbGdvcml0aG0uIFRoaXMgc2ltcGx5IGpvaW5zIHRoZSBlbGVtZW50
cyBpbiB0aGUgZ2l2ZW4KLS8vIGl0ZXJhdG9yIHJhbmdlLCBlYWNoIHNlcGFyYXRlZCBieSB0aGUg
Z2l2ZW4gc2VwYXJhdG9yLCBpbnRvIGFuIG91dHB1dCBzdGQ6OnN0cmluZywKKy8vIGl0ZXJhdG9y
IHJhbmdlLCBlYWNoIHNlcGFyYXRlZCBieSB0aGUgZ2l2ZW4gc2VwYXJhdG9yLCBpbnRvIGFuIG91
dHB1dCBzdHJpbmcsCiAvLyBhbmQgZm9ybWF0cyBlYWNoIGVsZW1lbnQgdXNpbmcgdGhlIHByb3Zp
ZGVkIEZvcm1hdHRlciBvYmplY3QuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVu
YW1lIEZvcm1hdHRlcj4KIHN0ZDo6c3RyaW5nIEpvaW5BbGdvcml0aG0oSXRlcmF0b3Igc3RhcnQs
IEl0ZXJhdG9yIGVuZCwgYWJzbDo6c3RyaW5nX3ZpZXcgcywKQEAgLTIwNSwyMCArMjA1LDIwIEBA
IHN0ZDo6c3RyaW5nIEpvaW5BbGdvcml0aG0oSXRlcmF0b3Igc3RhcnQsIEl0ZXJhdG9yIGVuZCwg
YWJzbDo6c3RyaW5nX3ZpZXcgcywKIH0KIAogLy8gQSBqb2luaW5nIGFsZ29yaXRobSB0aGF0J3Mg
b3B0aW1pemVkIGZvciBhIGZvcndhcmQgaXRlcmF0b3IgcmFuZ2Ugb2YKLS8vIHN0ZDo6c3RyaW5n
LWxpa2Ugb2JqZWN0cyB0aGF0IGRvIG5vdCBuZWVkIGFueSBhZGRpdGlvbmFsIGZvcm1hdHRpbmcu
IFRoaXMgaXMgdG8KLS8vIG9wdGltaXplIHRoZSBjb21tb24gY2FzZSBvZiBqb2luaW5nLCBzYXks
IGEgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG9yIGEKKy8vIHN0cmluZy1saWtlIG9iamVjdHMg
dGhhdCBkbyBub3QgbmVlZCBhbnkgYWRkaXRpb25hbCBmb3JtYXR0aW5nLiBUaGlzIGlzIHRvCisv
LyBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2Ugb2Ygam9pbmluZywgc2F5LCBhIHN0ZDo6dmVjdG9y
PHN0cmluZz4gb3IgYQogLy8gc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+LgogLy8KIC8v
IFRoaXMgaXMgYW4gb3ZlcmxvYWQgb2YgdGhlIHByZXZpb3VzIEpvaW5BbGdvcml0aG0oKSBmdW5j
dGlvbi4gSGVyZSB0aGUKIC8vIEZvcm1hdHRlciBhcmd1bWVudCBpcyBvZiB0eXBlIE5vRm9ybWF0
dGVyLiBTaW5jZSBOb0Zvcm1hdHRlciBpcyBhbiBpbnRlcm5hbAogLy8gdHlwZSwgdGhpcyBvdmVy
bG9hZCBpcyBvbmx5IGludm9rZWQgd2hlbiBzdHJpbmdzOjpKb2luKCkgaXMgY2FsbGVkIHdpdGgg
YQotLy8gcmFuZ2Ugb2Ygc3RkOjpzdHJpbmctbGlrZSBvYmplY3RzIChlLmcuLCBzdGQ6OnN0cmlu
ZywgYWJzbDo6c3RyaW5nX3ZpZXcpLCBhbmQgYW4KKy8vIHJhbmdlIG9mIHN0cmluZy1saWtlIG9i
amVjdHMgKGUuZy4sIHN0cmluZywgYWJzbDo6c3RyaW5nX3ZpZXcpLCBhbmQgYW4KIC8vIGV4cGxp
Y2l0IEZvcm1hdHRlciBhcmd1bWVudCB3YXMgTk9UIHNwZWNpZmllZC4KIC8vCiAvLyBUaGUgb3B0
aW1pemF0aW9uIGlzIHRoYXQgdGhlIG5lZWRlZCBzcGFjZSB3aWxsIGJlIHJlc2VydmVkIGluIHRo
ZSBvdXRwdXQKLS8vIHN0ZDo6c3RyaW5nIHRvIGF2b2lkIHRoZSBuZWVkIHRvIHJlc2l6ZSB3aGls
ZSBhcHBlbmRpbmcuIFRvIGRvIHRoaXMsIHRoZSBpdGVyYXRvcgorLy8gc3RyaW5nIHRvIGF2b2lk
IHRoZSBuZWVkIHRvIHJlc2l6ZSB3aGlsZSBhcHBlbmRpbmcuIFRvIGRvIHRoaXMsIHRoZSBpdGVy
YXRvcgogLy8gcmFuZ2Ugd2lsbCBiZSB0cmF2ZXJzZWQgdHdpY2U6IG9uY2UgdG8gY2FsY3VsYXRl
IHRoZSB0b3RhbCBuZWVkZWQgc2l6ZSwgYW5kCi0vLyB0aGVuIGFnYWluIHRvIGNvcHkgdGhlIGVs
ZW1lbnRzIGFuZCBkZWxpbWl0ZXJzIHRvIHRoZSBvdXRwdXQgc3RkOjpzdHJpbmcuCisvLyB0aGVu
IGFnYWluIHRvIGNvcHkgdGhlIGVsZW1lbnRzIGFuZCBkZWxpbWl0ZXJzIHRvIHRoZSBvdXRwdXQg
c3RyaW5nLgogdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yLAogICAgICAgICAgIHR5cGVuYW1l
ID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTwKICAgICAgICAg
ICAgICAgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjppdGVyYXRvcl9j
YXRlZ29yeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX3NwbGl0X2lu
dGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9zcGxpdF9pbnRlcm5hbC5oCmlu
ZGV4IDljZjA4MzNmNDkwMjhhYjAzOWM3YzQyMjUwNGE5OTZkOTllOTQzZGMuLjgxZThkNTU1NDQ2
ODBkNjcxZTU2ZWIwMjU0OTk1YjQyYmQ1NDhkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvc3RyX3NwbGl0X2ludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9zdHJfc3BsaXRfaW50ZXJuYWwuaApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2Ugc3RyaW5n
c19pbnRlcm5hbCB7CiAKIC8vIFRoaXMgY2xhc3MgaXMgaW1wbGljaXRseSBjb25zdHJ1Y3RpYmxl
IGZyb20gZXZlcnl0aGluZyB0aGF0IGFic2w6OnN0cmluZ192aWV3CiAvLyBpcyBpbXBsaWNpdGx5
IGNvbnN0cnVjdGlibGUgZnJvbS4gSWYgaXQncyBjb25zdHJ1Y3RlZCBmcm9tIGEgdGVtcG9yYXJ5
Ci0vLyBzdGQ6OnN0cmluZywgdGhlIGRhdGEgaXMgbW92ZWQgaW50byBhIGRhdGEgbWVtYmVyIHNv
IGl0cyBsaWZldGltZSBtYXRjaGVzIHRoYXQgb2YKKy8vIHN0cmluZywgdGhlIGRhdGEgaXMgbW92
ZWQgaW50byBhIGRhdGEgbWVtYmVyIHNvIGl0cyBsaWZldGltZSBtYXRjaGVzIHRoYXQgb2YKIC8v
IHRoZSBDb252ZXJ0aWJsZVRvU3RyaW5nVmlldyBpbnN0YW5jZS4KIGNsYXNzIENvbnZlcnRpYmxl
VG9TdHJpbmdWaWV3IHsKICBwdWJsaWM6CkBAIC0xMDIsNyArMTAyLDcgQEAgQ29udmVydGlibGVU
b1N0cmluZ1ZpZXcoc3RkOjpzdHJpbmcmJiBzKSAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQp
CiAgIGFic2w6OnN0cmluZ192aWV3IHZhbHVlXzsKIH07CiAKLS8vIEFuIGl0ZXJhdG9yIHRoYXQg
ZW51bWVyYXRlcyB0aGUgcGFydHMgb2YgYSBzdGQ6OnN0cmluZyBmcm9tIGEgU3BsaXR0ZXIuIFRo
ZSB0ZXh0CisvLyBBbiBpdGVyYXRvciB0aGF0IGVudW1lcmF0ZXMgdGhlIHBhcnRzIG9mIGEgc3Ry
aW5nIGZyb20gYSBTcGxpdHRlci4gVGhlIHRleHQKIC8vIHRvIGJlIHNwbGl0LCB0aGUgRGVsaW1p
dGVyLCBhbmQgdGhlIFByZWRpY2F0ZSBhcmUgYWxsIHRha2VuIGZyb20gdGhlIGdpdmVuCiAvLyBT
cGxpdHRlciBvYmplY3QuIEl0ZXJhdG9ycyBtYXkgb25seSBiZSBjb21wYXJlZCBpZiB0aGV5IHJl
ZmVyIHRvIHRoZSBzYW1lCiAvLyBTcGxpdHRlciBpbnN0YW5jZS4KQEAgLTE1OSw3ICsxNTksNyBA
QCBjbGFzcyBTcGxpdEl0ZXJhdG9yIHsKICAgICAgIH0KICAgICAgIGNvbnN0IGFic2w6OnN0cmlu
Z192aWV3IHRleHQgPSBzcGxpdHRlcl8tPnRleHQoKTsKICAgICAgIGNvbnN0IGFic2w6OnN0cmlu
Z192aWV3IGQgPSBkZWxpbWl0ZXJfLkZpbmQodGV4dCwgcG9zXyk7Ci0gICAgICBpZiAoZC5kYXRh
KCkgPT0gdGV4dC5lbmQoKSkgc3RhdGVfID0ga0xhc3RTdGF0ZTsKKyAgICAgIGlmIChkLmRhdGEo
KSA9PSB0ZXh0LmRhdGEoKSArIHRleHQuc2l6ZSgpKSBzdGF0ZV8gPSBrTGFzdFN0YXRlOwogICAg
ICAgY3Vycl8gPSB0ZXh0LnN1YnN0cihwb3NfLCBkLmRhdGEoKSAtICh0ZXh0LmRhdGEoKSArIHBv
c18pKTsKICAgICAgIHBvc18gKz0gY3Vycl8uc2l6ZSgpICsgZC5zaXplKCk7CiAgICAgfSB3aGls
ZSAoIXByZWRpY2F0ZV8oY3Vycl8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2gu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmNjCmluZGV4IDI1YmQ3ZjBiODI4YmZkZWM3MmNhNTg3
ZDQ4NzFiZmZiNjkyODYyZTMuLjNkMTBjNTc3ODRlYmU5MjU0OTg1NWJjZmIwNzc2Nzk5OTY2ZjE3
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9tYXRjaC5jYwpAQCAtMjcsNiArMjcsMTMgQEAgYm9vbCBDYXNlRXF1YWwoYWJzbDo6c3RyaW5n
X3ZpZXcgcGllY2UxLCBhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTIpIHsKIH0KIH0gIC8vIG5hbWVz
cGFjZQogCitib29sIEVxdWFsc0lnbm9yZUNhc2UoYWJzbDo6c3RyaW5nX3ZpZXcgcGllY2UxLCBh
YnNsOjpzdHJpbmdfdmlldyBwaWVjZTIpIHsKKyAgcmV0dXJuIChwaWVjZTEuc2l6ZSgpID09IHBp
ZWNlMi5zaXplKCkgJiYKKyAgICAgICAgICAwID09IGFic2w6OnN0cmluZ3NfaW50ZXJuYWw6Om1l
bWNhc2VjbXAocGllY2UxLmRhdGEoKSwgcGllY2UyLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGllY2UxLnNpemUoKSkpOworICAvLyBt
ZW1jYXNlY21wIHVzZXMgYWJzbDo6YXNjaWlfdG9sb3dlcigpLgorfQorCiBib29sIFN0YXJ0c1dp
dGhJZ25vcmVDYXNlKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGFic2w6OnN0cmluZ192aWV3IHBy
ZWZpeCkgewogICByZXR1cm4gKHRleHQuc2l6ZSgpID49IHByZWZpeC5zaXplKCkpICYmCiAgICAg
ICAgICBDYXNlRXF1YWwodGV4dC5zdWJzdHIoMCwgcHJlZml4LnNpemUoKSksIHByZWZpeCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmgK
aW5kZXggMTA4YjYwNDhiMDQ4ZWMyNjVmNTE4YWEzYTZlZTA0ZDEwMTlmMzQzNi4uNmU4ZWQxMGZj
NTBmZWI2ZjcxOTZkYjQxOWM0YTM4YTQyNDBiNGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9tYXRjaC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guaApAQCAtMTcsNyArMTcsNyBAQAog
Ly8gRmlsZTogbWF0Y2guaAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0vLyBUaGlzIGZp
bGUgY29udGFpbnMgc2ltcGxlIHV0aWxpdGllcyBmb3IgcGVyZm9ybWluZyBzdGQ6OnN0cmluZyBt
YXRjaGluZyBjaGVja3MuCisvLyBUaGlzIGZpbGUgY29udGFpbnMgc2ltcGxlIHV0aWxpdGllcyBm
b3IgcGVyZm9ybWluZyBzdHJpbmcgbWF0Y2hpbmcgY2hlY2tzLgogLy8gQWxsIG9mIHRoZXNlIGZ1
bmN0aW9uIHBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZCBhcyBgYWJzbDo6c3RyaW5nX3ZpZXdgLAog
Ly8gbWVhbmluZyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBjYW4gYWNjZXB0IGBzdGQ6OnN0cmluZ2As
IGBhYnNsOjpzdHJpbmdfdmlld2Agb3IKIC8vIG51bC10ZXJtaW5hdGVkIEMtc3R5bGUgc3RyaW5n
cy4KQEAgLTQxLDE0ICs0MSwxNCBAQCBuYW1lc3BhY2UgYWJzbCB7CiAKIC8vIFN0ckNvbnRhaW5z
KCkKIC8vCi0vLyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZlbiBzdGQ6OnN0cmluZyBgaGF5c3RhY2tg
IGNvbnRhaW5zIHRoZSBzdWJzdHJpbmcgYG5lZWRsZWAuCisvLyBSZXR1cm5zIHdoZXRoZXIgYSBn
aXZlbiBzdHJpbmcgYGhheXN0YWNrYCBjb250YWlucyB0aGUgc3Vic3RyaW5nIGBuZWVkbGVgLgog
aW5saW5lIGJvb2wgU3RyQ29udGFpbnMoYWJzbDo6c3RyaW5nX3ZpZXcgaGF5c3RhY2ssIGFic2w6
OnN0cmluZ192aWV3IG5lZWRsZSkgewogICByZXR1cm4gaGF5c3RhY2suZmluZChuZWVkbGUsIDAp
ICE9IGhheXN0YWNrLm5wb3M7CiB9CiAKIC8vIFN0YXJ0c1dpdGgoKQogLy8KLS8vIFJldHVybnMg
d2hldGhlciBhIGdpdmVuIHN0ZDo6c3RyaW5nIGB0ZXh0YCBiZWdpbnMgd2l0aCBgcHJlZml4YC4K
Ky8vIFJldHVybnMgd2hldGhlciBhIGdpdmVuIHN0cmluZyBgdGV4dGAgYmVnaW5zIHdpdGggYHBy
ZWZpeGAuCiBpbmxpbmUgYm9vbCBTdGFydHNXaXRoKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGFi
c2w6OnN0cmluZ192aWV3IHByZWZpeCkgewogICByZXR1cm4gcHJlZml4LmVtcHR5KCkgfHwKICAg
ICAgICAgICh0ZXh0LnNpemUoKSA+PSBwcmVmaXguc2l6ZSgpICYmCkBAIC01Nyw3ICs1Nyw3IEBA
IGlubGluZSBib29sIFN0YXJ0c1dpdGgoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgYWJzbDo6c3Ry
aW5nX3ZpZXcgcHJlZml4KSB7CiAKIC8vIEVuZHNXaXRoKCkKIC8vCi0vLyBSZXR1cm5zIHdoZXRo
ZXIgYSBnaXZlbiBzdGQ6OnN0cmluZyBgdGV4dGAgZW5kcyB3aXRoIGBzdWZmaXhgLgorLy8gUmV0
dXJucyB3aGV0aGVyIGEgZ2l2ZW4gc3RyaW5nIGB0ZXh0YCBlbmRzIHdpdGggYHN1ZmZpeGAuCiBp
bmxpbmUgYm9vbCBFbmRzV2l0aChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdf
dmlldyBzdWZmaXgpIHsKICAgcmV0dXJuIHN1ZmZpeC5lbXB0eSgpIHx8CiAgICAgICAgICAodGV4
dC5zaXplKCkgPj0gc3VmZml4LnNpemUoKSAmJgpAQCAtNjYsMTYgKzY2LDIyIEBAIGlubGluZSBi
b29sIEVuZHNXaXRoKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGFic2w6OnN0cmluZ192aWV3IHN1
ZmZpeCkgewogICAgICAgICAgKTsKIH0KIAotLy8gU3RhcnRzV2l0aElnbm9yZUNhc2UoKQorLy8g
RXF1YWxzSWdub3JlQ2FzZSgpCiAvLwotLy8gUmV0dXJucyB3aGV0aGVyIGEgZ2l2ZW4gc3RkOjpz
dHJpbmcgYHRleHRgIHN0YXJ0cyB3aXRoIGBzdGFydHNfd2l0aGAsIGlnbm9yaW5nCisvLyBSZXR1
cm5zIHdoZXRoZXIgZ2l2ZW4gQVNDSUkgc3RyaW5ncyBgcGllY2UxYCBhbmQgYHBpZWNlMmAgYXJl
IGVxdWFsLCBpZ25vcmluZwogLy8gY2FzZSBpbiB0aGUgY29tcGFyaXNvbi4KK2Jvb2wgRXF1YWxz
SWdub3JlQ2FzZShhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTEsIGFic2w6OnN0cmluZ192aWV3IHBp
ZWNlMik7CisKKy8vIFN0YXJ0c1dpdGhJZ25vcmVDYXNlKCkKKy8vCisvLyBSZXR1cm5zIHdoZXRo
ZXIgYSBnaXZlbiBBU0NJSSBzdHJpbmcgYHRleHRgIHN0YXJ0cyB3aXRoIGBzdGFydHNfd2l0aGAs
CisvLyBpZ25vcmluZyBjYXNlIGluIHRoZSBjb21wYXJpc29uLgogYm9vbCBTdGFydHNXaXRoSWdu
b3JlQ2FzZShhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmlldyBwcmVmaXgp
OwogCiAvLyBFbmRzV2l0aElnbm9yZUNhc2UoKQogLy8KLS8vIFJldHVybnMgd2hldGhlciBhIGdp
dmVuIHN0ZDo6c3RyaW5nIGB0ZXh0YCBlbmRzIHdpdGggYGVuZHNfd2l0aGAsIGlnbm9yaW5nIGNh
c2UKLS8vIGluIHRoZSBjb21wYXJpc29uLgorLy8gUmV0dXJucyB3aGV0aGVyIGEgZ2l2ZW4gQVND
SUkgc3RyaW5nIGB0ZXh0YCBlbmRzIHdpdGggYGVuZHNfd2l0aGAsIGlnbm9yaW5nCisvLyBjYXNl
IGluIHRoZSBjb21wYXJpc29uLgogYm9vbCBFbmRzV2l0aElnbm9yZUNhc2UoYWJzbDo6c3RyaW5n
X3ZpZXcgdGV4dCwgYWJzbDo6c3RyaW5nX3ZpZXcgc3VmZml4KTsKIAogfSAgLy8gbmFtZXNwYWNl
IGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2hfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvbWF0Y2hfdGVzdC5jYwppbmRleCBkMTk0ZjBlNjg5YmY2ZTAwMTY1NmM1MmUzNTdiNWQ3
NzhhNjdiNTVkLi5jMjFlMDBiZjgwN2M5NGY3ZjdjNWE4OGYyNjVmMjA2OTRjZGYxMTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9t
YXRjaF90ZXN0LmNjCkBAIC04MCw2ICs4MCwxNyBAQCBURVNUKE1hdGNoVGVzdCwgQ29udGFpbnNO
dWxsKSB7CiAgIEVYUEVDVF9GQUxTRShhYnNsOjpTdHJDb250YWlucyhjcywgc3YyKSk7CiB9CiAK
K1RFU1QoTWF0Y2hUZXN0LCBFcXVhbHNJZ25vcmVDYXNlKSB7CisgIHN0ZDo6c3RyaW5nIHRleHQg
PSAidGhlIjsKKyAgYWJzbDo6c3RyaW5nX3ZpZXcgZGF0YSh0ZXh0KTsKKworICBFWFBFQ1RfVFJV
RShhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGRhdGEsICJUaGUiKSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OkVxdWFsc0lnbm9yZUNhc2UoZGF0YSwgIlRIRSIpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShkYXRhLCAidGhlIikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShkYXRhLCAiUXVpY2siKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpFcXVh
bHNJZ25vcmVDYXNlKGRhdGEsICJ0aGVuIikpOworfQorCiBURVNUKE1hdGNoVGVzdCwgU3RhcnRz
V2l0aElnbm9yZUNhc2UpIHsKICAgRVhQRUNUX1RSVUUoYWJzbDo6U3RhcnRzV2l0aElnbm9yZUNh
c2UoImZvbyIsICJmb28iKSk7CiAgIEVYUEVDVF9UUlVFKGFic2w6OlN0YXJ0c1dpdGhJZ25vcmVD
YXNlKCJmb28iLCAiRm8iKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL251bWJlcnMuY2MKaW5kZXggZjg0MmVkODVlOWY1OTVlZmI4ZGExZWMw
NTAyNzVkZDM2OGEyNmU5Ny4uOTMwOWY5ZGE5ZGNjNWM5MDdlNjgzNWVjYTZkMDQ3YzkwZjJjNmYz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvbnVtYmVycy5jYwpAQCAtMTIsNyArMTIsNyBAQAogLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKLS8vIFRoaXMgZmlsZSBjb250YWlucyBzdGQ6OnN0
cmluZyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyByZWxhdGVkIHRvCisvLyBUaGlzIGZpbGUgY29udGFp
bnMgc3RyaW5nIHByb2Nlc3NpbmcgZnVuY3Rpb25zIHJlbGF0ZWQgdG8KIC8vIG51bWVyaWMgdmFs
dWVzLgogCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL251bWJlcnMuaCIKQEAgLTMwLDEwICszMCwx
MCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAi
YWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwv
cmF3X2xvZ2dpbmcuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3MvYXNjaWkuaCIKICNpbmNsdWRl
ICJhYnNsL3N0cmluZ3MvY2hhcmNvbnYuaCIKLSNpbmNsdWRlICJhYnNsL3N0cmluZ3MvaW50ZXJu
YWwvYml0cy5oIgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmgiCiAj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKIApAQCAtMTYxLDggKzE2MSw4IEBAIGJv
b2wgU2ltcGxlQXRvYihhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGJvb2wqIHZhbHVlKSB7CiAvLyB0
aGVpciBvdXRwdXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyLiAgVGhlIGNhbGxlciBp
cyByZXNwb25zaWJsZQogLy8gZm9yIGVuc3VyaW5nIHRoYXQgdGhlIGJ1ZmZlciBoYXMgZW5vdWdo
IHNwYWNlIHRvIGhvbGQgdGhlIG91dHB1dC4KIC8vCi0vLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0
aGUgZW5kIG9mIHRoZSBzdGQ6OnN0cmluZyAoaS5lLiB0aGUgbnVsbCBjaGFyYWN0ZXIKLS8vIHRl
cm1pbmF0aW5nIHRoZSBzdGQ6OnN0cmluZykuCisvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUg
ZW5kIG9mIHRoZSBzdHJpbmcgKGkuZS4gdGhlIG51bGwgY2hhcmFjdGVyCisvLyB0ZXJtaW5hdGlu
ZyB0aGUgc3RyaW5nKS4KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogbmFtZXNwYWNlIHsKQEAgLTM0NCw3
ICszNDQsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gTXVsMzIoc3Rk
OjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gbnVtLAogICB1aW50NjRfdCBiaXRzMTI4X3VwID0g
KGJpdHM5Nl8xMjcgPj4gMzIpICsgKGJpdHM2NF8xMjcgPCBiaXRzNjRfOTUpOwogICBpZiAoYml0
czEyOF91cCA9PSAwKSByZXR1cm4ge2JpdHM2NF8xMjcsIGJpdHMwXzYzfTsKIAotICBpbnQgc2hp
ZnQgPSA2NCAtIHN0cmluZ3NfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQoYml0czEyOF91
cCk7CisgIGludCBzaGlmdCA9IDY0IC0gYmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2
NChiaXRzMTI4X3VwKTsKICAgdWludDY0X3QgbG8gPSAoYml0czBfNjMgPj4gc2hpZnQpICsgKGJp
dHM2NF8xMjcgPDwgKDY0IC0gc2hpZnQpKTsKICAgdWludDY0X3QgaGkgPSAoYml0czY0XzEyNyA+
PiBzaGlmdCkgKyAoYml0czEyOF91cCA8PCAoNjQgLSBzaGlmdCkpOwogICByZXR1cm4ge2hpLCBs
b307CkBAIC0zNzUsNyArMzc1LDcgQEAgc3RhdGljIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0
X3Q+IFBvd0ZpdmUodWludDY0X3QgbnVtLCBpbnQgZXhwZml2ZSkgewogICAgICAgNSAqIDUgKiA1
ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUsCiAgICAgICA1ICogNSAqIDUgKiA1ICog
NSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDV9OwogICByZXN1bHQgPSBNdWwzMihyZXN1bHQs
IHBvd2Vyc19vZl9maXZlW2V4cGZpdmUgJiAxNV0pOwotICBpbnQgc2hpZnQgPSBzdHJpbmdzX2lu
dGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0KHJlc3VsdC5maXJzdCk7CisgIGludCBzaGlmdCA9
IGJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQocmVzdWx0LmZpcnN0KTsKICAgaWYg
KHNoaWZ0ICE9IDApIHsKICAgICByZXN1bHQuZmlyc3QgPSAocmVzdWx0LmZpcnN0IDw8IHNoaWZ0
KSArIChyZXN1bHQuc2Vjb25kID4+ICg2NCAtIHNoaWZ0KSk7CiAgICAgcmVzdWx0LnNlY29uZCA9
IChyZXN1bHQuc2Vjb25kIDw8IHNoaWZ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVt
YmVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmgKaW5kZXggY2YzYzU5NzI2NmNmNzE0NzRk
NDA1ZGQwY2ZkZWE1Y2RlYjU4YmFkYy4uZjliMmNjZWY5NGQ4YmQ1NWIxYmQ4MmRlNTgyZTU4OWNi
ZDIxMmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9udW1iZXJzLmgKQEAgLTQxLDMyICs0MSwzMiBAQCBuYW1lc3BhY2UgYWJzbCB7CiAK
IC8vIFNpbXBsZUF0b2koKQogLy8KLS8vIENvbnZlcnRzIHRoZSBnaXZlbiBzdGQ6OnN0cmluZyBp
bnRvIGFuIGludGVnZXIgdmFsdWUsIHJldHVybmluZyBgdHJ1ZWAgaWYKLS8vIHN1Y2Nlc3NmdWwu
IFRoZSBzdGQ6OnN0cmluZyBtdXN0IHJlZmxlY3QgYSBiYXNlLTEwIGludGVnZXIgKG9wdGlvbmFs
bHkgZm9sbG93ZWQgb3IKKy8vIENvbnZlcnRzIHRoZSBnaXZlbiBzdHJpbmcgaW50byBhbiBpbnRl
Z2VyIHZhbHVlLCByZXR1cm5pbmcgYHRydWVgIGlmCisvLyBzdWNjZXNzZnVsLiBUaGUgc3RyaW5n
IG11c3QgcmVmbGVjdCBhIGJhc2UtMTAgaW50ZWdlciAob3B0aW9uYWxseSBmb2xsb3dlZCBvcgog
Ly8gcHJlY2VkZWQgYnkgQVNDSUkgd2hpdGVzcGFjZSkgd2hvc2UgdmFsdWUgZmFsbHMgd2l0aGlu
IHRoZSByYW5nZSBvZiB0aGUKLS8vIGludGVnZXIgdHlwZSwKKy8vIGludGVnZXIgdHlwZS4KIHRl
bXBsYXRlIDx0eXBlbmFtZSBpbnRfdHlwZT4KIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGJvb2wgU2lt
cGxlQXRvaShhYnNsOjpzdHJpbmdfdmlldyBzLCBpbnRfdHlwZSogb3V0KTsKIAogLy8gU2ltcGxl
QXRvZigpCiAvLwotLy8gQ29udmVydHMgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nIChvcHRpb25hbGx5
IGZvbGxvd2VkIG9yIHByZWNlZGVkIGJ5IEFTQ0lJCisvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3Ry
aW5nIChvcHRpb25hbGx5IGZvbGxvd2VkIG9yIHByZWNlZGVkIGJ5IEFTQ0lJCiAvLyB3aGl0ZXNw
YWNlKSBpbnRvIGEgZmxvYXQsIHdoaWNoIG1heSBiZSByb3VuZGVkIG9uIG92ZXJmbG93IG9yIHVu
ZGVyZmxvdy4KLS8vIFNlZSBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2Mvc3RkOjpzdHJp
bmcvYnl0ZS9zdHJ0b2YgZm9yIGRldGFpbHMgYWJvdXQgdGhlCisvLyBTZWUgaHR0cDovL2VuLmNw
cHJlZmVyZW5jZS5jb20vdy9jL3N0cmluZy9ieXRlL3N0cnRvZiBmb3IgZGV0YWlscyBhYm91dCB0
aGUKIC8vIGFsbG93ZWQgZm9ybWF0cyBmb3IgYHN0cmAuCiBBQlNMX01VU1RfVVNFX1JFU1VMVCBi
b29sIFNpbXBsZUF0b2YoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBmbG9hdCogdmFsdWUpOwogCiAv
LyBTaW1wbGVBdG9kKCkKIC8vCi0vLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcgKG9w
dGlvbmFsbHkgZm9sbG93ZWQgb3IgcHJlY2VkZWQgYnkgQVNDSUkKKy8vIENvbnZlcnRzIHRoZSBn
aXZlbiBzdHJpbmcgKG9wdGlvbmFsbHkgZm9sbG93ZWQgb3IgcHJlY2VkZWQgYnkgQVNDSUkKIC8v
IHdoaXRlc3BhY2UpIGludG8gYSBkb3VibGUsIHdoaWNoIG1heSBiZSByb3VuZGVkIG9uIG92ZXJm
bG93IG9yIHVuZGVyZmxvdy4KLS8vIFNlZSBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2Mv
c3RkOjpzdHJpbmcvYnl0ZS9zdHJ0b2YgZm9yIGRldGFpbHMgYWJvdXQgdGhlCisvLyBTZWUgaHR0
cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jL3N0cmluZy9ieXRlL3N0cnRvZiBmb3IgZGV0YWls
cyBhYm91dCB0aGUKIC8vIGFsbG93ZWQgZm9ybWF0cyBmb3IgYHN0cmAuCiBBQlNMX01VU1RfVVNF
X1JFU1VMVCBib29sIFNpbXBsZUF0b2QoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBkb3VibGUqIHZh
bHVlKTsKIAogLy8gU2ltcGxlQXRvYigpCiAvLwotLy8gQ29udmVydHMgdGhlIGdpdmVuIHN0ZDo6
c3RyaW5nIGludG8gYSBib29sZWFuLCByZXR1cm5pbmcgYHRydWVgIGlmIHN1Y2Nlc3NmdWwuCisv
LyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3RyaW5nIGludG8gYSBib29sZWFuLCByZXR1cm5pbmcgYHRy
dWVgIGlmIHN1Y2Nlc3NmdWwuCiAvLyBUaGUgZm9sbG93aW5nIGNhc2UtaW5zZW5zaXRpdmUgc3Ry
aW5ncyBhcmUgaW50ZXJwcmV0ZWQgYXMgYm9vbGVhbiBgdHJ1ZWA6CiAvLyAidHJ1ZSIsICJ0Iiwg
InllcyIsICJ5IiwgIjEiLiBUaGUgZm9sbG93aW5nIGNhc2UtaW5zZW5zaXRpdmUgc3RyaW5ncwog
Ly8gYXJlIGludGVycHJldGVkIGFzIGJvb2xlYW4gYGZhbHNlYDogImZhbHNlIiwgImYiLCAibm8i
LCAibiIsICIwIi4KQEAgLTE2OSw5ICsxNjksOSBAQCBBQlNMX01VU1RfVVNFX1JFU1VMVCBib29s
IHNhZmVfc3RydG9pX2Jhc2UoYWJzbDo6c3RyaW5nX3ZpZXcgcywgaW50X3R5cGUqIG91dCwKIAog
Ly8gU2ltcGxlQXRvaSgpCiAvLwotLy8gQ29udmVydHMgYSBzdGQ6OnN0cmluZyB0byBhbiBpbnRl
Z2VyLCB1c2luZyBgc2FmZV9zdHJ0bz8oKWAgZnVuY3Rpb25zIGZvciBhY3R1YWwKKy8vIENvbnZl
cnRzIGEgc3RyaW5nIHRvIGFuIGludGVnZXIsIHVzaW5nIGBzYWZlX3N0cnRvPygpYCBmdW5jdGlv
bnMgZm9yIGFjdHVhbAogLy8gcGFyc2luZywgcmV0dXJuaW5nIGB0cnVlYCBpZiBzdWNjZXNzZnVs
LiBUaGUgYHNhZmVfc3RydG8/KClgIGZ1bmN0aW9ucyBhcHBseQotLy8gc3RyaWN0IGNoZWNraW5n
OyB0aGUgc3RkOjpzdHJpbmcgbXVzdCBiZSBhIGJhc2UtMTAgaW50ZWdlciwgb3B0aW9uYWxseSBm
b2xsb3dlZCBvcgorLy8gc3RyaWN0IGNoZWNraW5nOyB0aGUgc3RyaW5nIG11c3QgYmUgYSBiYXNl
LTEwIGludGVnZXIsIG9wdGlvbmFsbHkgZm9sbG93ZWQgb3IKIC8vIHByZWNlZGVkIGJ5IEFTQ0lJ
IHdoaXRlc3BhY2UsIHdpdGggYSB2YWx1ZSBpbiB0aGUgcmFuZ2Ugb2YgdGhlIGNvcnJlc3BvbmRp
bmcKIC8vIGludGVnZXIgdHlwZS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBpbnRfdHlwZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVyc19iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L251bWJlcnNfYmVuY2htYXJrLmNjCmluZGV4IDhlZjY1MGI5YTNlY2NkZDc5NjY0ZGM3OWQyZDZm
MjYxYTY2ODZhMzIuLjA1NzBiNzU4NjMzZWUwNDA2ZDEyMTdlOWU3MDAxMmIyOGMxODBjNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVyc19iZW5jaG1hcmsuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9udW1iZXJzX2JlbmNobWFyay5jYwpAQCAtMTU4LDcgKzE1OCw3IEBAIEJFTkNITUFS
SyhCTV9zYWZlX3N0cnRvdTY0X3N0cmluZykKICAgICAtPkFyZ1BhaXIoMTYsIDEwKQogICAgIC0+
QXJnUGFpcigxNiwgMTYpOwogCi0vLyBSZXR1cm5zIGEgdmVjdG9yIG9mIGBudW1fc3RyaW5nc2Ag
c3RyaW5ncy4gRWFjaCBzdGQ6OnN0cmluZyByZXByZXNlbnRzIGEKKy8vIFJldHVybnMgYSB2ZWN0
b3Igb2YgYG51bV9zdHJpbmdzYCBzdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIGEKIC8v
IGZsb2F0aW5nIHBvaW50IG51bWJlciB3aXRoIGBudW1fZGlnaXRzYCBkaWdpdHMgYmVmb3JlIHRo
ZSBkZWNpbWFsIHBvaW50IGFuZAogLy8gYW5vdGhlciBgbnVtX2RpZ2l0c2AgZGlnaXRzIGFmdGVy
Lgogc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IE1ha2VGbG9hdFN0cmluZ3MoaW50IG51bV9zdHJp
bmdzLCBpbnQgbnVtX2RpZ2l0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJz
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfdGVzdC5jYwppbmRleCAyN2NjMDQ3OWUz
NDEyYzgzOGI0Nzg1ZGZhZmI4ODk1ZWZlMDk2ZjYzLi4zNmZjMGQ2NGZkNTEzMDUwN2IxZTgxMWIz
OGRmZTU3ZTMyNDkzYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfdGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfdGVzdC5jYwpAQCAtMTIsNyArMTIsNyBAQAog
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKLS8vIFRo
aXMgZmlsZSB0ZXN0cyBzdGQ6OnN0cmluZyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyByZWxhdGVkIHRv
IG51bWVyaWMgdmFsdWVzLgorLy8gVGhpcyBmaWxlIHRlc3RzIHN0cmluZyBwcm9jZXNzaW5nIGZ1
bmN0aW9ucyByZWxhdGVkIHRvIG51bWVyaWMgdmFsdWVzLgogCiAjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL251bWJlcnMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9zdHJfY2F0LmNjCmluZGV4IDNmZThjOTVlY2E5ZWY5Nzk0OTE2OTM2Mzg5
MDA4NThiMDg3MjVkMGIuLmVmYTRmZDczZGJhYzc3MDQ4NzQ3ZWNjNGE3ZjFmY2IwZTY3ZDc3MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cl9jYXQuY2MKQEAgLTc5LDcgKzc5LDcgQEAgQWxwaGFOdW06OkFscGhhTnVtKERlYyBkZWMp
IHsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFN0ckNhdCgpCiAvLyAgICBUaGlzIG1lcmdlcyB0aGUg
Z2l2ZW4gc3RyaW5ncyBvciBpbnRlZ2Vycywgd2l0aCBubyBkZWxpbWl0ZXIuICBUaGlzCi0vLyAg
ICBpcyBkZXNpZ25lZCB0byBiZSB0aGUgZmFzdGVzdCBwb3NzaWJsZSB3YXkgdG8gY29uc3RydWN0
IGEgc3RkOjpzdHJpbmcgb3V0CisvLyAgICBpcyBkZXNpZ25lZCB0byBiZSB0aGUgZmFzdGVzdCBw
b3NzaWJsZSB3YXkgdG8gY29uc3RydWN0IGEgc3RyaW5nIG91dAogLy8gICAgb2YgYSBtaXggb2Yg
cmF3IEMgc3RyaW5ncywgU3RyaW5nUGllY2VzLCBzdHJpbmdzLCBhbmQgaW50ZWdlciB2YWx1ZXMu
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTE1NCwxMCArMTU0LDEwIEBAIHN0ZDo6c3RyaW5nIENh
dFBpZWNlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8YWJzbDo6c3RyaW5nX3ZpZXc+IHBpZWNlcykg
ewogfQogCiAvLyBJdCdzIHBvc3NpYmxlIHRvIGNhbGwgU3RyQXBwZW5kIHdpdGggYW4gYWJzbDo6
c3RyaW5nX3ZpZXcgdGhhdCBpcyBpdHNlbGYgYQotLy8gZnJhZ21lbnQgb2YgdGhlIHN0ZDo6c3Ry
aW5nIHdlJ3JlIGFwcGVuZGluZyB0by4gIEhvd2V2ZXIgdGhlIHJlc3VsdHMgb2YgdGhpcyBhcmUK
Ky8vIGZyYWdtZW50IG9mIHRoZSBzdHJpbmcgd2UncmUgYXBwZW5kaW5nIHRvLiAgSG93ZXZlciB0
aGUgcmVzdWx0cyBvZiB0aGlzIGFyZQogLy8gcmFuZG9tLiBUaGVyZWZvcmUsIGNoZWNrIGZvciB0
aGlzIGluIGRlYnVnIG1vZGUuICBVc2UgdW5zaWduZWQgbWF0aCBzbyB3ZQogLy8gb25seSBoYXZl
IHRvIGRvIG9uZSBjb21wYXJpc29uLiBOb3RlLCB0aGVyZSdzIGFuIGV4Y2VwdGlvbiBjYXNlOiBh
cHBlbmRpbmcgYW4KLS8vIGVtcHR5IHN0ZDo6c3RyaW5nIGlzIGFsd2F5cyBhbGxvd2VkLgorLy8g
ZW1wdHkgc3RyaW5nIGlzIGFsd2F5cyBhbGxvd2VkLgogI2RlZmluZSBBU1NFUlRfTk9fT1ZFUkxB
UChkZXN0LCBzcmMpIFwKICAgYXNzZXJ0KCgoc3JjKS5zaXplKCkgPT0gMCkgfHwgICAgICBcCiAg
ICAgICAgICAodWludHB0cl90KChzcmMpLmRhdGEoKSAtIChkZXN0KS5kYXRhKCkpID4gdWludHB0
cl90KChkZXN0KS5zaXplKCkpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0LmgKaW5kZXggZTU1MDFhNTAxMmVlOGQ5Y2Y3OWNiZTZi
NTBiMDQ3NTZkMTkxYmY5ZS4uZGE5ZWQ5YTI2OWU5OTBiODc5MjJmZjJkMTlhYTk3MTdlNWUwZDcy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdHJfY2F0LmgKQEAgLTIzLDcgKzIzLDcgQEAKIC8vIGRlc2lnbmVkIHRvIGJlIHVzZWQgYXMg
YSBwYXJhbWV0ZXIgdHlwZSB0aGF0IGVmZmljaWVudGx5IG1hbmFnZXMgY29udmVyc2lvbgogLy8g
dG8gc3RyaW5ncyBhbmQgYXZvaWRzIGNvcGllcyBpbiB0aGUgYWJvdmUgb3BlcmF0aW9ucy4KIC8v
Ci0vLyBBbnkgcm91dGluZSBhY2NlcHRpbmcgZWl0aGVyIGEgc3RkOjpzdHJpbmcgb3IgYSBudW1i
ZXIgbWF5IGFjY2VwdCBgQWxwaGFOdW1gLgorLy8gQW55IHJvdXRpbmUgYWNjZXB0aW5nIGVpdGhl
ciBhIHN0cmluZyBvciBhIG51bWJlciBtYXkgYWNjZXB0IGBBbHBoYU51bWAuCiAvLyBUaGUgYmFz
aWMgaWRlYSBpcyB0aGF0IGJ5IGFjY2VwdGluZyBhIGBjb25zdCBBbHBoYU51bSAmYCBhcyBhbiBh
cmd1bWVudAogLy8gdG8geW91ciBmdW5jdGlvbiwgeW91ciBjYWxsZXJzIHdpbGwgYXV0b21hZ2lj
YWxseSBjb252ZXJ0IGJvb2xzLCBpbnRlZ2VycywKIC8vIGFuZCBmbG9hdGluZyBwb2ludCB2YWx1
ZXMgdG8gc3RyaW5ncyBmb3IgeW91LgpAQCAtNjUsNyArNjUsNyBAQAogbmFtZXNwYWNlIGFic2wg
ewogCiBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbCB7Ci0vLyBBbHBoYU51bUJ1ZmZlciBhbGxv
d3MgYSB3YXkgdG8gcGFzcyBhIHN0ZDo6c3RyaW5nIHRvIFN0ckNhdCB3aXRob3V0IGhhdmluZyB0
byBkbworLy8gQWxwaGFOdW1CdWZmZXIgYWxsb3dzIGEgd2F5IHRvIHBhc3MgYSBzdHJpbmcgdG8g
U3RyQ2F0IHdpdGhvdXQgaGF2aW5nIHRvIGRvCiAvLyBtZW1vcnkgYWxsb2NhdGlvbi4gIEl0IGlz
IHNpbXBseSBhIHBhaXIgb2YgYSBmaXhlZC1zaXplIGNoYXJhY3RlciBhcnJheSwgYW5kCiAvLyBh
IHNpemUuICBQbGVhc2UgZG9uJ3QgdXNlIG91dHNpZGUgb2YgYWJzbCwgeWV0LgogdGVtcGxhdGUg
PHNpemVfdCBtYXhfc2l6ZT4KQEAgLTExOSw4ICsxMTksOCBAQCBlbnVtIFBhZFNwZWMgOiB1aW50
OF90IHsKIC8vIEhleAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0vLyBgSGV4YCBzdG9y
ZXMgYSBzZXQgb2YgaGV4YWRlY2ltYWwgc3RkOjpzdHJpbmcgY29udmVyc2lvbiBwYXJhbWV0ZXJz
IGZvciB1c2UKLS8vIHdpdGhpbiBgQWxwaGFOdW1gIHN0ZDo6c3RyaW5nIGNvbnZlcnNpb25zLgor
Ly8gYEhleGAgc3RvcmVzIGEgc2V0IG9mIGhleGFkZWNpbWFsIHN0cmluZyBjb252ZXJzaW9uIHBh
cmFtZXRlcnMgZm9yIHVzZQorLy8gd2l0aGluIGBBbHBoYU51bWAgc3RyaW5nIGNvbnZlcnNpb25z
Lgogc3RydWN0IEhleCB7CiAgIHVpbnQ2NF90IHZhbHVlOwogICB1aW50OF90IHdpZHRoOwpAQCAt
MTY4LDggKzE2OCw4IEBAIHN0cnVjdCBIZXggewogLy8gRGVjCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogLy8KLS8vIGBEZWNgIHN0b3JlcyBhIHNldCBvZiBkZWNpbWFsIHN0ZDo6c3RyaW5nIGNv
bnZlcnNpb24gcGFyYW1ldGVycyBmb3IgdXNlCi0vLyB3aXRoaW4gYEFscGhhTnVtYCBzdGQ6OnN0
cmluZyBjb252ZXJzaW9ucy4gIERlYyBpcyBzbG93ZXIgdGhhbiB0aGUgZGVmYXVsdAorLy8gYERl
Y2Agc3RvcmVzIGEgc2V0IG9mIGRlY2ltYWwgc3RyaW5nIGNvbnZlcnNpb24gcGFyYW1ldGVycyBm
b3IgdXNlCisvLyB3aXRoaW4gYEFscGhhTnVtYCBzdHJpbmcgY29udmVyc2lvbnMuICBEZWMgaXMg
c2xvd2VyIHRoYW4gdGhlIGRlZmF1bHQKIC8vIGludGVnZXIgY29udmVyc2lvbiwgc28gdXNlIGl0
IG9ubHkgaWYgeW91IG5lZWQgcGFkZGluZy4KIHN0cnVjdCBEZWMgewogICB1aW50NjRfdCB2YWx1
ZTsKQEAgLTI3MSw3ICsyNzEsNyBAQCBjbGFzcyBBbHBoYU51bSB7CiAvLwogLy8gTWVyZ2VzIGdp
dmVuIHN0cmluZ3Mgb3IgbnVtYmVycywgdXNpbmcgbm8gZGVsaW1pdGVyKHMpLgogLy8KLS8vIGBT
dHJDYXQoKWAgaXMgZGVzaWduZWQgdG8gYmUgdGhlIGZhc3Rlc3QgcG9zc2libGUgd2F5IHRvIGNv
bnN0cnVjdCBhIHN0ZDo6c3RyaW5nCisvLyBgU3RyQ2F0KClgIGlzIGRlc2lnbmVkIHRvIGJlIHRo
ZSBmYXN0ZXN0IHBvc3NpYmxlIHdheSB0byBjb25zdHJ1Y3QgYSBzdHJpbmcKIC8vIG91dCBvZiBh
IG1peCBvZiByYXcgQyBzdHJpbmdzLCBzdHJpbmdfdmlld3MsIHN0cmluZ3MsIGJvb2wgdmFsdWVz
LAogLy8gYW5kIG51bWVyaWMgdmFsdWVzLgogLy8KQEAgLTI3OSw3ICsyNzksNyBAQCBjbGFzcyBB
bHBoYU51bSB7CiAvLyB3b3JrcyBwb29ybHkgb24gc3RyaW5ncyBidWlsdCB1cCBvdXQgb2YgZnJh
Z21lbnRzLgogLy8KIC8vIEZvciBjbGFyaXR5IGFuZCBwZXJmb3JtYW5jZSwgZG9uJ3QgdXNlIGBT
dHJDYXQoKWAgd2hlbiBhcHBlbmRpbmcgdG8gYQotLy8gc3RkOjpzdHJpbmcuIFVzZSBgU3RyQXBw
ZW5kKClgIGluc3RlYWQuIEluIHBhcnRpY3VsYXIsIGF2b2lkIHVzaW5nIGFueSBvZiB0aGVzZQor
Ly8gc3RyaW5nLiBVc2UgYFN0ckFwcGVuZCgpYCBpbnN0ZWFkLiBJbiBwYXJ0aWN1bGFyLCBhdm9p
ZCB1c2luZyBhbnkgb2YgdGhlc2UKIC8vIChhbnRpLSlwYXR0ZXJuczoKIC8vCiAvLyAgIHN0ci5h
cHBlbmQoU3RyQ2F0KC4uLikpCkBAIC0zMjgsMjYgKzMyOCwyNiBAQCBBQlNMX01VU1RfVVNFX1JF
U1VMVCBpbmxpbmUgc3RkOjpzdHJpbmcgU3RyQ2F0KGNvbnN0IEFscGhhTnVtJiBhLCBjb25zdCBB
bHBoYU51bQogLy8gU3RyQXBwZW5kKCkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwotLy8g
QXBwZW5kcyBhIHN0ZDo6c3RyaW5nIG9yIHNldCBvZiBzdHJpbmdzIHRvIGFuIGV4aXN0aW5nIHN0
ZDo6c3RyaW5nLCBpbiBhIHNpbWlsYXIKKy8vIEFwcGVuZHMgYSBzdHJpbmcgb3Igc2V0IG9mIHN0
cmluZ3MgdG8gYW4gZXhpc3Rpbmcgc3RyaW5nLCBpbiBhIHNpbWlsYXIKIC8vIGZhc2hpb24gdG8g
YFN0ckNhdCgpYC4KIC8vCiAvLyBXQVJOSU5HOiBgU3RyQXBwZW5kKCZzdHIsIGEsIGIsIGMsIC4u
LilgIHJlcXVpcmVzIHRoYXQgbm9uZSBvZiB0aGUKIC8vIGEsIGIsIGMsIHBhcmFtZXRlcnMgYmUg
YSByZWZlcmVuY2UgaW50byBzdHIuIEZvciBzcGVlZCwgYFN0ckFwcGVuZCgpYCBkb2VzCiAvLyBu
b3QgdHJ5IHRvIGNoZWNrIGVhY2ggb2YgaXRzIGlucHV0IGFyZ3VtZW50cyB0byBiZSBzdXJlIHRo
YXQgdGhleSBhcmUgbm90Ci0vLyBhIHN1YnNldCBvZiB0aGUgc3RkOjpzdHJpbmcgYmVpbmcgYXBw
ZW5kZWQgdG8uIFRoYXQgaXMsIHdoaWxlIHRoaXMgd2lsbCB3b3JrOgorLy8gYSBzdWJzZXQgb2Yg
dGhlIHN0cmluZyBiZWluZyBhcHBlbmRlZCB0by4gVGhhdCBpcywgd2hpbGUgdGhpcyB3aWxsIHdv
cms6CiAvLwotLy8gICBzdGQ6OnN0cmluZyBzID0gImZvbyI7CisvLyAgIHN0cmluZyBzID0gImZv
byI7CiAvLyAgIHMgKz0gczsKIC8vCiAvLyBUaGlzIG91dHB1dCBpcyB1bmRlZmluZWQ6CiAvLwot
Ly8gICBzdGQ6OnN0cmluZyBzID0gImZvbyI7CisvLyAgIHN0cmluZyBzID0gImZvbyI7CiAvLyAg
IFN0ckFwcGVuZCgmcywgcyk7CiAvLwogLy8gVGhpcyBvdXRwdXQgaXMgdW5kZWZpbmVkIGFzIHdl
bGwsIHNpbmNlIGBhYnNsOjpzdHJpbmdfdmlld2AgZG9lcyBub3Qgb3duIGl0cwogLy8gZGF0YToK
IC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHMgPSAiZm9vYmFyIjsKKy8vICAgc3RyaW5nIHMgPSAiZm9v
YmFyIjsKIC8vICAgYWJzbDo6c3RyaW5nX3ZpZXcgcCA9IHM7CiAvLyAgIFN0ckFwcGVuZCgmcywg
cCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdF90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJfY2F0X3Rlc3QuY2MKaW5kZXggZTlkNjc2OTA2MzgyNzE5MjBkMjYyMzRkOTcz
OTA1M2MzMGIyNzQ4OS4uNTU1ZDhkYjNlYjg1NDM4YmU1ZjhjYzdmNTlkZDU1MDdkNmQ1YmE1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0X3Rlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9zdHJfY2F0X3Rlc3QuY2MKQEAgLTI4LDcgKzI4LDggQEAKICNkZWZpbmUgQUJTTF9FWFBF
Q1RfREVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAogICBFWFBFQ1RfREVCVUdfREVBVEgo
c3RhdGVtZW50LCAiLioiKQogI2Vsc2UKLSNkZWZpbmUgQUJTTF9FWFBFQ1RfREVCVUdfREVBVEgg
RVhQRUNUX0RFQlVHX0RFQVRICisjZGVmaW5lIEFCU0xfRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRl
bWVudCwgcmVnZXgpIFwKKyAgRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCiAj
ZW5kaWYKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2Zvcm1h
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfZm9ybWF0LmgKaW5kZXggNzBhODExYjc1ZTJmZjg4NjNj
OWUzNjg3YzZjMjgyZjkwYzIzMTdmOS4uMmQwNzcyNWRlMjFmY2Y3OTA2OTUwZjAyZDIwNjE1YjVh
ZDEwOThhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfZm9ybWF0LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9zdHJfZm9ybWF0LmgKQEAgLTE4LDIwICsxOCwyMCBAQAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIC8vCiAvLyBUaGUgYHN0cl9mb3JtYXRgIGxpYnJhcnkgaXMgYSB0eXBlc2Fm
ZSByZXBsYWNlbWVudCBmb3IgdGhlIGZhbWlseSBvZgotLy8gYHByaW50ZigpYCBzdGQ6OnN0cmlu
ZyBmb3JtYXR0aW5nIHJvdXRpbmVzIHdpdGhpbiB0aGUgYDxjc3RkaW8+YCBzdGFuZGFyZCBsaWJy
YXJ5CisvLyBgcHJpbnRmKClgIHN0cmluZyBmb3JtYXR0aW5nIHJvdXRpbmVzIHdpdGhpbiB0aGUg
YDxjc3RkaW8+YCBzdGFuZGFyZCBsaWJyYXJ5CiAvLyBoZWFkZXIuIExpa2UgdGhlIGBwcmludGZg
IGZhbWlseSwgdGhlIGBzdHJfZm9ybWF0YCB1c2VzIGEgImZvcm1hdCBzdHJpbmciIHRvCiAvLyBw
ZXJmb3JtIGFyZ3VtZW50IHN1YnN0aXR1dGlvbnMgYmFzZWQgb24gdHlwZXMuCiAvLwogLy8gRXhh
bXBsZToKIC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoIiVzICVzIFlv
dSBoYXZlICQlZCEiLCAiSGVsbG8iLCBuYW1lLCBkb2xsYXJzKTsKKy8vICAgc3RyaW5nIHMgPSBh
YnNsOjpTdHJGb3JtYXQoIiVzICVzIFlvdSBoYXZlICQlZCEiLCAiSGVsbG8iLCBuYW1lLCBkb2xs
YXJzKTsKIC8vCiAvLyBUaGUgbGlicmFyeSBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIGJhc2lj
IHV0aWxpdGllczoKIC8vCiAvLyAgICogYGFic2w6OlN0ckZvcm1hdCgpYCwgYSB0eXBlLXNhZmUg
cmVwbGFjZW1lbnQgZm9yIGBzdGQ6OnNwcmludGYoKWAsIHRvCi0vLyAgICAgd3JpdGUgYSBmb3Jt
YXQgc3RkOjpzdHJpbmcgdG8gYSBgc3RyaW5nYCB2YWx1ZS4KLS8vICAgKiBgYWJzbDo6U3RyQXBw
ZW5kRm9ybWF0KClgIHRvIGFwcGVuZCBhIGZvcm1hdCBzdGQ6OnN0cmluZyB0byBhIGBzdHJpbmdg
Ci0vLyAgICogYGFic2w6OlN0cmVhbUZvcm1hdCgpYCB0byBtb3JlIGVmZmljaWVudGx5IHdyaXRl
IGEgZm9ybWF0IHN0ZDo6c3RyaW5nIHRvIGEKKy8vICAgICB3cml0ZSBhIGZvcm1hdCBzdHJpbmcg
dG8gYSBgc3RyaW5nYCB2YWx1ZS4KKy8vICAgKiBgYWJzbDo6U3RyQXBwZW5kRm9ybWF0KClgIHRv
IGFwcGVuZCBhIGZvcm1hdCBzdHJpbmcgdG8gYSBgc3RyaW5nYAorLy8gICAqIGBhYnNsOjpTdHJl
YW1Gb3JtYXQoKWAgdG8gbW9yZSBlZmZpY2llbnRseSB3cml0ZSBhIGZvcm1hdCBzdHJpbmcgdG8g
YQogLy8gICAgIHN0cmVhbSwgc3VjaCBhc2BzdGQ6OmNvdXRgLgogLy8gICAqIGBhYnNsOjpQcmlu
dEYoKWAsIGBhYnNsOjpGUHJpbnRGKClgIGFuZCBgYWJzbDo6U05QcmludEYoKWAgYXMKIC8vICAg
ICByZXBsYWNlbWVudHMgZm9yIGBzdGQ6OnByaW50ZigpYCwgYHN0ZDo6ZnByaW50ZigpYCBhbmQg
YHN0ZDo6c25wcmludGYoKWAuCkBAIC0zOSwxNSArMzksMTUgQEAKIC8vICAgICBOb3RlOiBhIHZl
cnNpb24gb2YgYHN0ZDo6c3ByaW50ZigpYCBpcyBub3Qgc3VwcG9ydGVkIGFzIGl0IGlzCiAvLyAg
ICAgZ2VuZXJhbGx5IHVuc2FmZSBkdWUgdG8gYnVmZmVyIG92ZXJmbG93cy4KIC8vCi0vLyBBZGRp
dGlvbmFsbHksIHlvdSBjYW4gcHJvdmlkZSBhIGZvcm1hdCBzdGQ6OnN0cmluZyAoYW5kIGl0cyBh
c3NvY2lhdGVkIGFyZ3VtZW50cykKKy8vIEFkZGl0aW9uYWxseSwgeW91IGNhbiBwcm92aWRlIGEg
Zm9ybWF0IHN0cmluZyAoYW5kIGl0cyBhc3NvY2lhdGVkIGFyZ3VtZW50cykKIC8vIHVzaW5nIG9u
ZSBvZiB0aGUgZm9sbG93aW5nIGFic3RyYWN0aW9uczoKIC8vCi0vLyAgICogQSBgRm9ybWF0U3Bl
Y2AgY2xhc3MgdGVtcGxhdGUgZnVsbHkgZW5jYXBzdWxhdGVzIGEgZm9ybWF0IHN0ZDo6c3RyaW5n
IGFuZCBpdHMKKy8vICAgKiBBIGBGb3JtYXRTcGVjYCBjbGFzcyB0ZW1wbGF0ZSBmdWxseSBlbmNh
cHN1bGF0ZXMgYSBmb3JtYXQgc3RyaW5nIGFuZCBpdHMKIC8vICAgICB0eXBlIGFyZ3VtZW50cyBh
bmQgaXMgdXN1YWxseSBwcm92aWRlZCB0byBgc3RyX2Zvcm1hdGAgZnVuY3Rpb25zIGFzIGEKIC8v
ICAgICB2YXJpYWRpYyBhcmd1bWVudCBvZiB0eXBlIGBGb3JtYXRTcGVjPEFyZy4uLj5gLiBUaGUg
YEZvcm1hdFNwZWM8QXJncy4uLj5gCiAvLyAgICAgdGVtcGxhdGUgaXMgZXZhbHVhdGVkIGF0IGNv
bXBpbGUtdGltZSwgcHJvdmlkaW5nIHR5cGUgc2FmZXR5LgogLy8gICAqIEEgYFBhcnNlZEZvcm1h
dGAgaW5zdGFuY2UsIHdoaWNoIGVuY2Fwc3VsYXRlcyBhIHNwZWNpZmljLCBwcmUtY29tcGlsZWQK
LS8vICAgICBmb3JtYXQgc3RkOjpzdHJpbmcgZm9yIGEgc3BlY2lmaWMgc2V0IG9mIHR5cGUocyks
IGFuZCB3aGljaCBjYW4gYmUgcGFzc2VkCisvLyAgICAgZm9ybWF0IHN0cmluZyBmb3IgYSBzcGVj
aWZpYyBzZXQgb2YgdHlwZShzKSwgYW5kIHdoaWNoIGNhbiBiZSBwYXNzZWQKIC8vICAgICBiZXR3
ZWVuIEFQSSBib3VuZGFyaWVzLiAoVGhlIGBGb3JtYXRTcGVjYCB0eXBlIHNob3VsZCBub3QgYmUg
dXNlZAogLy8gICAgIGRpcmVjdGx5LikKIC8vCkBAIC02MCw3ICs2MCw3IEBACiAvLwogLy8gICAq
IEEgYEZvcm1hdFVudHlwZWQoKWAgZnVuY3Rpb24gdGhhdCBpcyBzaW1pbGFyIHRvIGBGb3JtYXQo
KWAgZXhjZXB0IGl0IGlzCiAvLyAgICAgbG9vc2VseSB0eXBlZC4gYEZvcm1hdFVudHlwZWQoKWAg
aXMgbm90IGEgdGVtcGxhdGUgYW5kIGRvZXMgbm90IHBlcmZvcm0KLS8vICAgICBhbnkgY29tcGls
ZS10aW1lIGNoZWNraW5nIG9mIHRoZSBmb3JtYXQgc3RkOjpzdHJpbmc7IGluc3RlYWQsIGl0IHJl
dHVybnMgYQorLy8gICAgIGFueSBjb21waWxlLXRpbWUgY2hlY2tpbmcgb2YgdGhlIGZvcm1hdCBz
dHJpbmc7IGluc3RlYWQsIGl0IHJldHVybnMgYQogLy8gICAgIGJvb2xlYW4gZnJvbSBhIHJ1bnRp
bWUgY2hlY2suCiAvLwogLy8gSW4gYWRkaXRpb24sIHRoZSBgc3RyX2Zvcm1hdGAgbGlicmFyeSBw
cm92aWRlcyBleHRlbnNpb24gcG9pbnRzIGZvcgpAQCAtODksNyArODksNyBAQCBuYW1lc3BhY2Ug
YWJzbCB7CiAvLyBFeGFtcGxlOgogLy8KIC8vICAgYWJzbDo6VW50eXBlZEZvcm1hdFNwZWMgZm9y
bWF0KCIlZCIpOwotLy8gICBzdGQ6OnN0cmluZyBvdXQ7CisvLyAgIHN0cmluZyBvdXQ7CiAvLyAg
IENIRUNLKGFic2w6OkZvcm1hdFVudHlwZWQoJm91dCwgZm9ybWF0LCB7YWJzbDo6Rm9ybWF0QXJn
KDEpfSkpOwogY2xhc3MgVW50eXBlZEZvcm1hdFNwZWMgewogIHB1YmxpYzoKQEAgLTEzNSw3ICsx
MzUsNyBAQCBzdHJfZm9ybWF0X2ludGVybmFsOjpTdHJlYW1lZFdyYXBwZXI8VD4gRm9ybWF0U3Ry
ZWFtZWQoY29uc3QgVCYgdikgewogLy8gRXhhbXBsZToKIC8vCiAvLyAgIGludCBuID0gMDsKLS8v
ICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckZvcm1hdCgiJXMlZCVuIiwgImhlbGxvIiwgMTIz
LAorLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckZvcm1hdCgiJXMlZCVuIiwgImhlbGxvIiwgMTIz
LAogLy8gICAgICAgICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q291bnRDYXB0dXJlKCZuKSk7CiAv
LyAgIEVYUEVDVF9FUSg4LCBuKTsKIGNsYXNzIEZvcm1hdENvdW50Q2FwdHVyZSB7CkBAIC0xNTUs
MTAgKzE1NSwxMCBAQCBjbGFzcyBGb3JtYXRDb3VudENhcHR1cmUgewogCiAvLyBGb3JtYXRTcGVj
CiAvLwotLy8gVGhlIGBGb3JtYXRTcGVjYCB0eXBlIGRlZmluZXMgdGhlIG1ha2V1cCBvZiBhIGZv
cm1hdCBzdGQ6OnN0cmluZyB3aXRoaW4gdGhlCisvLyBUaGUgYEZvcm1hdFNwZWNgIHR5cGUgZGVm
aW5lcyB0aGUgbWFrZXVwIG9mIGEgZm9ybWF0IHN0cmluZyB3aXRoaW4gdGhlCiAvLyBgc3RyX2Zv
cm1hdGAgbGlicmFyeS4gWW91IHNob3VsZCBub3QgbmVlZCB0byB1c2Ugb3IgbWFuaXB1bGF0ZSB0
aGlzIHR5cGUKIC8vIGRpcmVjdGx5LiBBIGBGb3JtYXRTcGVjYCBpcyBhIHZhcmlhZGljIGNsYXNz
IHRlbXBsYXRlIHRoYXQgaXMgZXZhbHVhdGVkIGF0Ci0vLyBjb21waWxlLXRpbWUsIGFjY29yZGlu
ZyB0byB0aGUgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2Vk
CisvLyBjb21waWxlLXRpbWUsIGFjY29yZGluZyB0byB0aGUgZm9ybWF0IHN0cmluZyBhbmQgYXJn
dW1lbnRzIHRoYXQgYXJlIHBhc3NlZAogLy8gdG8gaXQuCiAvLwogLy8gRm9yIGEgYEZvcm1hdFNw
ZWNgIHRvIGJlIHZhbGlkIGF0IGNvbXBpbGUtdGltZSwgaXQgbXVzdCBiZSBwcm92aWRlZCBhcwpA
QCAtMTY2LDEyICsxNjYsMTIgQEAgY2xhc3MgRm9ybWF0Q291bnRDYXB0dXJlIHsKIC8vCiAvLyAq
IEEgYGNvbnN0ZXhwcmAgbGl0ZXJhbCBvciBgYWJzbDo6c3RyaW5nX3ZpZXdgLCB3aGljaCBpcyBo
b3cgaXQgbW9zdCBvZnRlbgogLy8gICB1c2VkLgotLy8gKiBBIGBQYXJzZWRGb3JtYXRgIGluc3Rh
bnRpYXRpb24sIHdoaWNoIGVuc3VyZXMgdGhlIGZvcm1hdCBzdGQ6OnN0cmluZyBpcworLy8gKiBB
IGBQYXJzZWRGb3JtYXRgIGluc3RhbnRpYXRpb24sIHdoaWNoIGVuc3VyZXMgdGhlIGZvcm1hdCBz
dHJpbmcgaXMKIC8vICAgdmFsaWQgYmVmb3JlIHVzZS4gKFNlZSBiZWxvdy4pCiAvLwogLy8gRXhh
bXBsZToKIC8vCi0vLyAgIC8vIFByb3ZpZGVkIGFzIGEgc3RkOjpzdHJpbmcgbGl0ZXJhbC4KKy8v
ICAgLy8gUHJvdmlkZWQgYXMgYSBzdHJpbmcgbGl0ZXJhbC4KIC8vICAgYWJzbDo6U3RyRm9ybWF0
KCJXZWxjb21lIHRvICVzLCBOdW1iZXIgJWQhIiwgIlRoZSBWaWxsYWdlIiwgNik7CiAvLwogLy8g
ICAvLyBQcm92aWRlZCBhcyBhIGNvbnN0ZXhwciBhYnNsOjpzdHJpbmdfdmlldy4KQEAgLTE4Myw3
ICsxODMsNyBAQCBjbGFzcyBGb3JtYXRDb3VudENhcHR1cmUgewogLy8gICBhYnNsOjpQYXJzZWRG
b3JtYXQ8J3MnLCAnZCc+IGZvcm1hdFN0cmluZygiV2VsY29tZSB0byAlcywgTnVtYmVyICVkISIp
OwogLy8gICBhYnNsOjpTdHJGb3JtYXQoZm9ybWF0U3RyaW5nLCAiVGhlVmlsbGFnZSIsIDYpOwog
Ly8KLS8vIEEgZm9ybWF0IHN0ZDo6c3RyaW5nIGdlbmVyYWxseSBmb2xsb3dzIHRoZSBQT1NJWCBz
eW50YXggYXMgdXNlZCB3aXRoaW4gdGhlIFBPU0lYCisvLyBBIGZvcm1hdCBzdHJpbmcgZ2VuZXJh
bGx5IGZvbGxvd3MgdGhlIFBPU0lYIHN5bnRheCBhcyB1c2VkIHdpdGhpbiB0aGUgUE9TSVgKIC8v
IGBwcmludGZgIHNwZWNpZmljYXRpb24uCiAvLwogLy8gKFNlZSBodHRwOi8vcHVicy5vcGVuZ3Jv
dXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvcHJpbnRmLmh0bWwuKQpAQCAt
MjIzLDcgKzIyMyw3IEBAIGNsYXNzIEZvcm1hdENvdW50Q2FwdHVyZSB7CiAvLyAgICAgIiVwIiwg
KmludCAgICAgICAgICAgICAgIC0+ICIweDdmZmRlYjZhZDJhNCIKIC8vCiAvLyAgICAgaW50IG4g
PSAwOwotLy8gICAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoCisvLyAgICAgc3Ry
aW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoCiAvLyAgICAgICAgICIlcyVkJW4iLCAiaGVsbG8iLCAx
MjMsIGFic2w6OkZvcm1hdENvdW50Q2FwdHVyZSgmbikpOwogLy8gICAgIEVYUEVDVF9FUSg4LCBu
KTsKIC8vCkBAIC0yMzYsNyArMjM2LDcgQEAgY2xhc3MgRm9ybWF0Q291bnRDYXB0dXJlIHsKIC8v
CiAvLyBIb3dldmVyLCBpbiB0aGUgYHN0cl9mb3JtYXRgIGxpYnJhcnksIGEgZm9ybWF0IGNvbnZl
cnNpb24gc3BlY2lmaWVzIGEgYnJvYWRlcgogLy8gQysrIGNvbmNlcHR1YWwgY2F0ZWdvcnkgaW5z
dGVhZCBvZiBhbiBleGFjdCB0eXBlLiBGb3IgZXhhbXBsZSwgYCVzYCBiaW5kcyB0bwotLy8gYW55
IHN0ZDo6c3RyaW5nLWxpa2UgYXJndW1lbnQsIHNvIGBzdGQ6OnN0cmluZ2AsIGBhYnNsOjpzdHJp
bmdfdmlld2AsIGFuZAorLy8gYW55IHN0cmluZy1saWtlIGFyZ3VtZW50LCBzbyBgc3RkOjpzdHJp
bmdgLCBgYWJzbDo6c3RyaW5nX3ZpZXdgLCBhbmQKIC8vIGBjb25zdCBjaGFyKmAgYXJlIGFsbCBh
Y2NlcHRlZC4gTGlrZXdpc2UsIGAlZGAgYWNjZXB0cyBhbnkgaW50ZWdlci1saWtlCiAvLyBhcmd1
bWVudCwgZXRjLgogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdXNpbmcgRm9ybWF0U3BlYyA9CiAvLwog
Ly8gQSBgUGFyc2VkRm9ybWF0YCBpcyBhIGNsYXNzIHRlbXBsYXRlIHJlcHJlc2VudGluZyBhIHBy
ZXBhcnNlZCBgRm9ybWF0U3BlY2AsCiAvLyB3aXRoIHRlbXBsYXRlIGFyZ3VtZW50cyBzcGVjaWZ5
aW5nIHRoZSBjb252ZXJzaW9uIGNoYXJhY3RlcnMgdXNlZCB3aXRoaW4gdGhlCi0vLyBmb3JtYXQg
c3RkOjpzdHJpbmcuIFN1Y2ggY2hhcmFjdGVycyBtdXN0IGJlIHZhbGlkIGZvcm1hdCB0eXBlIHNw
ZWNpZmllcnMsIGFuZAorLy8gZm9ybWF0IHN0cmluZy4gU3VjaCBjaGFyYWN0ZXJzIG11c3QgYmUg
dmFsaWQgZm9ybWF0IHR5cGUgc3BlY2lmaWVycywgYW5kCiAvLyB0aGVzZSB0eXBlIHNwZWNpZmll
cnMgYXJlIGNoZWNrZWQgYXQgY29tcGlsZS10aW1lLgogLy8KIC8vIEluc3RhbmNlcyBvZiBgUGFy
c2VkRm9ybWF0YCBjYW4gYmUgY3JlYXRlZCwgY29waWVkLCBhbmQgcmV1c2VkIHRvIHNwZWVkIHVw
CkBAIC0yNzUsMjYgKzI3NSwyNiBAQCB1c2luZyBQYXJzZWRGb3JtYXQgPSBzdHJfZm9ybWF0X2lu
dGVybmFsOjpFeHRlbmRlZFBhcnNlZEZvcm1hdDwKIAogLy8gU3RyRm9ybWF0KCkKIC8vCi0vLyBS
ZXR1cm5zIGEgYHN0cmluZ2AgZ2l2ZW4gYSBgcHJpbnRmKClgLXN0eWxlIGZvcm1hdCBzdGQ6OnN0
cmluZyBhbmQgemVybyBvciBtb3JlCisvLyBSZXR1cm5zIGEgYHN0cmluZ2AgZ2l2ZW4gYSBgcHJp
bnRmKClgLXN0eWxlIGZvcm1hdCBzdHJpbmcgYW5kIHplcm8gb3IgbW9yZQogLy8gYWRkaXRpb25h
bCBhcmd1bWVudHMuIFVzZSBpdCBhcyB5b3Ugd291bGQgYHNwcmludGYoKWAuIGBTdHJGb3JtYXQo
KWAgaXMgdGhlCiAvLyBwcmltYXJ5IGZvcm1hdHRpbmcgZnVuY3Rpb24gd2l0aGluIHRoZSBgc3Ry
X2Zvcm1hdGAgbGlicmFyeSwgYW5kIHNob3VsZCBiZQogLy8gdXNlZCBpbiBtb3N0IGNhc2VzIHdo
ZXJlIHlvdSBuZWVkIHR5cGUtc2FmZSBjb252ZXJzaW9uIG9mIHR5cGVzIGludG8KIC8vIGZvcm1h
dHRlZCBzdHJpbmdzLgogLy8KLS8vIFRoZSBmb3JtYXQgc3RkOjpzdHJpbmcgZ2VuZXJhbGx5IGNv
bnNpc3RzIG9mIG9yZGluYXJ5IGNoYXJhY3RlciBkYXRhIGFsb25nIHdpdGgKKy8vIFRoZSBmb3Jt
YXQgc3RyaW5nIGdlbmVyYWxseSBjb25zaXN0cyBvZiBvcmRpbmFyeSBjaGFyYWN0ZXIgZGF0YSBh
bG9uZyB3aXRoCiAvLyBvbmUgb3IgbW9yZSBmb3JtYXQgY29udmVyc2lvbiBzcGVjaWZpZXJzIChk
ZW5vdGVkIGJ5IHRoZSBgJWAgY2hhcmFjdGVyKS4KLS8vIE9yZGluYXJ5IGNoYXJhY3RlciBkYXRh
IGlzIHJldHVybmVkIHVuY2hhbmdlZCBpbnRvIHRoZSByZXN1bHQgc3RkOjpzdHJpbmcsIHdoaWxl
CisvLyBPcmRpbmFyeSBjaGFyYWN0ZXIgZGF0YSBpcyByZXR1cm5lZCB1bmNoYW5nZWQgaW50byB0
aGUgcmVzdWx0IHN0cmluZywgd2hpbGUKIC8vIGVhY2ggY29udmVyc2lvbiBzcGVjaWZpY2F0aW9u
IHBlcmZvcm1zIGEgdHlwZSBzdWJzdGl0dXRpb24gZnJvbQogLy8gYFN0ckZvcm1hdCgpYCdzIG90
aGVyIGFyZ3VtZW50cy4gU2VlIHRoZSBjb21tZW50cyBmb3IgYEZvcm1hdFNwZWNgIGZvciBmdWxs
Ci0vLyBpbmZvcm1hdGlvbiBvbiB0aGUgbWFrZXVwIG9mIHRoaXMgZm9ybWF0IHN0ZDo6c3RyaW5n
LgorLy8gaW5mb3JtYXRpb24gb24gdGhlIG1ha2V1cCBvZiB0aGlzIGZvcm1hdCBzdHJpbmcuCiAv
LwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQo
CisvLyAgIHN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KAogLy8gICAgICAgIldlbGNvbWUgdG8g
JXMsIE51bWJlciAlZCEiLCAiVGhlIFZpbGxhZ2UiLCA2KTsKIC8vICAgRVhQRUNUX0VRKCJXZWxj
b21lIHRvIFRoZSBWaWxsYWdlLCBOdW1iZXIgNiEiLCBzKTsKIC8vCi0vLyBSZXR1cm5zIGFuIGVt
cHR5IHN0ZDo6c3RyaW5nIGluIGNhc2Ugb2YgZXJyb3IuCisvLyBSZXR1cm5zIGFuIGVtcHR5IHN0
cmluZyBpbiBjYXNlIG9mIGVycm9yLgogdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiBBQlNM
X01VU1RfVVNFX1JFU1VMVCBzdGQ6OnN0cmluZyBTdHJGb3JtYXQoY29uc3QgRm9ybWF0U3BlYzxB
cmdzLi4uPiYgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBBcmdzJi4uLiBhcmdzKSB7CkBAIC0zMDUsMTMgKzMwNSwxMyBAQCBBQlNMX01VU1RfVVNF
X1JFU1VMVCBzdGQ6OnN0cmluZyBTdHJGb3JtYXQoY29uc3QgRm9ybWF0U3BlYzxBcmdzLi4uPiYg
Zm9ybWF0LAogCiAvLyBTdHJBcHBlbmRGb3JtYXQoKQogLy8KLS8vIEFwcGVuZHMgdG8gYSBgZHN0
YCBzdGQ6OnN0cmluZyBnaXZlbiBhIGZvcm1hdCBzdGQ6OnN0cmluZywgYW5kIHplcm8gb3IgbW9y
ZSBhZGRpdGlvbmFsCisvLyBBcHBlbmRzIHRvIGEgYGRzdGAgc3RyaW5nIGdpdmVuIGEgZm9ybWF0
IHN0cmluZywgYW5kIHplcm8gb3IgbW9yZSBhZGRpdGlvbmFsCiAvLyBhcmd1bWVudHMsIHJldHVy
bmluZyBgKmRzdGAgYXMgYSBjb252ZW5pZW5jZSBmb3IgY2hhaW5pbmcgcHVycG9zZXMuIEFwcGVu
ZHMKIC8vIG5vdGhpbmcgaW4gY2FzZSBvZiBlcnJvciAoYnV0IHBvc3NpYmx5IGFsdGVycyBpdHMg
Y2FwYWNpdHkpLgogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBzdGQ6OnN0cmluZyBvcmlnKCJG
b3IgZXhhbXBsZSBQSSBpcyBhcHByb3hpbWF0ZWx5ICIpOworLy8gICBzdHJpbmcgb3JpZygiRm9y
IGV4YW1wbGUgUEkgaXMgYXBwcm94aW1hdGVseSAiKTsKIC8vICAgc3RkOjpjb3V0IDw8IFN0ckFw
cGVuZEZvcm1hdCgmb3JpZywgIiUxMi42ZiIsIDMuMTQpOwogdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+CiBzdGQ6OnN0cmluZyYgU3RyQXBwZW5kRm9ybWF0KHN0ZDo6c3RyaW5nKiBkc3QsIGNv
bnN0IEZvcm1hdFNwZWM8QXJncy4uLj4mIGZvcm1hdCwKQEAgLTMyMyw3ICszMjMsNyBAQCBzdGQ6
OnN0cmluZyYgU3RyQXBwZW5kRm9ybWF0KHN0ZDo6c3RyaW5nKiBkc3QsIGNvbnN0IEZvcm1hdFNw
ZWM8QXJncy4uLj4mIGZvcm1hdAogCiAvLyBTdHJlYW1Gb3JtYXQoKQogLy8KLS8vIFdyaXRlcyB0
byBhbiBvdXRwdXQgc3RyZWFtIGdpdmVuIGEgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCB6ZXJvIG9y
IG1vcmUgYXJndW1lbnRzLAorLy8gV3JpdGVzIHRvIGFuIG91dHB1dCBzdHJlYW0gZ2l2ZW4gYSBm
b3JtYXQgc3RyaW5nIGFuZCB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAogLy8gZ2VuZXJhbGx5IGlu
IGEgbWFubmVyIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBzdHJlYW1pbmcgdGhlIHJlc3Vs
dCBvZgogLy8gYGFic2w6OiBTdHJGb3JtYXQoKWAuIFRoZSByZXR1cm5lZCBvYmplY3QgbXVzdCBi
ZSBzdHJlYW1lZCBiZWZvcmUgdGhlIGZ1bGwKIC8vIGV4cHJlc3Npb24gZW5kcy4KQEAgLTM0MSw3
ICszNDEsNyBAQCBBQlNMX01VU1RfVVNFX1JFU1VMVCBzdHJfZm9ybWF0X2ludGVybmFsOjpTdHJl
YW1hYmxlIFN0cmVhbUZvcm1hdCgKIAogLy8gUHJpbnRGKCkKIC8vCi0vLyBXcml0ZXMgdG8gc3Rk
b3V0IGdpdmVuIGEgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCB6ZXJvIG9yIG1vcmUgYXJndW1lbnRz
LiBUaGlzCisvLyBXcml0ZXMgdG8gc3Rkb3V0IGdpdmVuIGEgZm9ybWF0IHN0cmluZyBhbmQgemVy
byBvciBtb3JlIGFyZ3VtZW50cy4gVGhpcwogLy8gZnVuY3Rpb24gaXMgZnVuY3Rpb25hbGx5IGVx
dWl2YWxlbnQgdG8gYHN0ZDo6cHJpbnRmKClgIChhbmQgdHlwZS1zYWZlKTsKIC8vIHByZWZlciBg
YWJzbDo6UHJpbnRGKClgIG92ZXIgYHN0ZDo6cHJpbnRmKClgLgogLy8KQEAgLTM2MSwxNCArMzYx
LDE0IEBAIGludCBQcmludEYoY29uc3QgRm9ybWF0U3BlYzxBcmdzLi4uPiYgZm9ybWF0LCBjb25z
dCBBcmdzJi4uLiBhcmdzKSB7CiAKIC8vIEZQcmludEYoKQogLy8KLS8vIFdyaXRlcyB0byBhIGZp
bGUgZ2l2ZW4gYSBmb3JtYXQgc3RkOjpzdHJpbmcgYW5kIHplcm8gb3IgbW9yZSBhcmd1bWVudHMu
IFRoaXMKKy8vIFdyaXRlcyB0byBhIGZpbGUgZ2l2ZW4gYSBmb3JtYXQgc3RyaW5nIGFuZCB6ZXJv
IG9yIG1vcmUgYXJndW1lbnRzLiBUaGlzCiAvLyBmdW5jdGlvbiBpcyBmdW5jdGlvbmFsbHkgZXF1
aXZhbGVudCB0byBgc3RkOjpmcHJpbnRmKClgIChhbmQgdHlwZS1zYWZlKTsKIC8vIHByZWZlciBg
YWJzbDo6RlByaW50RigpYCBvdmVyIGBzdGQ6OmZwcmludGYoKWAuCiAvLwogLy8gRXhhbXBsZToK
IC8vCiAvLyAgIHN0ZDo6c3RyaW5nX3ZpZXcgcyA9ICJVbGFhbmJhYXRhciI7Ci0vLyAgIGFic2w6
OkZQcmludEYoIlRoZSBjYXBpdGFsIG9mIE1vbmdvbGlhIGlzICVzIiwgcyk7CisvLyAgIGFic2w6
OkZQcmludEYoc3Rkb3V0LCAiVGhlIGNhcGl0YWwgb2YgTW9uZ29saWEgaXMgJXMiLCBzKTsKIC8v
CiAvLyAgIE91dHB1dHM6ICJUaGUgY2FwaXRhbCBvZiBNb25nb2xpYSBpcyBVbGFhbmJhYXRhciIK
IC8vCkBAIC0zODIsNyArMzgyLDcgQEAgaW50IEZQcmludEYoc3RkOjpGSUxFKiBvdXRwdXQsIGNv
bnN0IEZvcm1hdFNwZWM8QXJncy4uLj4mIGZvcm1hdCwKIAogLy8gU05QcmludEYoKQogLy8KLS8v
IFdyaXRlcyB0byBhIHNpemVkIGJ1ZmZlciBnaXZlbiBhIGZvcm1hdCBzdGQ6OnN0cmluZyBhbmQg
emVybyBvciBtb3JlIGFyZ3VtZW50cy4KKy8vIFdyaXRlcyB0byBhIHNpemVkIGJ1ZmZlciBnaXZl
biBhIGZvcm1hdCBzdHJpbmcgYW5kIHplcm8gb3IgbW9yZSBhcmd1bWVudHMuCiAvLyBUaGlzIGZ1
bmN0aW9uIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIGBzdGQ6OnNucHJpbnRmKClgIChh
bmQKIC8vIHR5cGUtc2FmZSk7IHByZWZlciBgYWJzbDo6U05QcmludEYoKWAgb3ZlciBgc3RkOjpz
bnByaW50ZigpYC4KIC8vCkBAIC00MzAsMTQgKzQzMCwxNCBAQCBjbGFzcyBGb3JtYXRSYXdTaW5r
IHsKIAogLy8gRm9ybWF0KCkKIC8vCi0vLyBXcml0ZXMgYSBmb3JtYXR0ZWQgc3RkOjpzdHJpbmcg
dG8gYW4gYXJiaXRyYXJ5IHNpbmsgb2JqZWN0IChpbXBsZW1lbnRpbmcgdGhlCi0vLyBgYWJzbDo6
Rm9ybWF0UmF3U2lua2AgaW50ZXJmYWNlKSwgdXNpbmcgYSBmb3JtYXQgc3RkOjpzdHJpbmcgYW5k
IHplcm8gb3IgbW9yZQorLy8gV3JpdGVzIGEgZm9ybWF0dGVkIHN0cmluZyB0byBhbiBhcmJpdHJh
cnkgc2luayBvYmplY3QgKGltcGxlbWVudGluZyB0aGUKKy8vIGBhYnNsOjpGb3JtYXRSYXdTaW5r
YCBpbnRlcmZhY2UpLCB1c2luZyBhIGZvcm1hdCBzdHJpbmcgYW5kIHplcm8gb3IgbW9yZQogLy8g
YWRkaXRpb25hbCBhcmd1bWVudHMuCiAvLwogLy8gQnkgZGVmYXVsdCwgYHN0cmluZ2AgYW5kIGBz
dGQ6Om9zdHJlYW1gIGFyZSBzdXBwb3J0ZWQgYXMgZGVzdGluYXRpb24gb2JqZWN0cy4KIC8vCiAv
LyBgYWJzbDo6Rm9ybWF0KClgIGlzIGEgZ2VuZXJpYyB2ZXJzaW9uIG9mIGBhYnNsOjpTdHJGb3Jt
YXQoKSwgZm9yIGN1c3RvbQotLy8gc2lua3MuIFRoZSBmb3JtYXQgc3RkOjpzdHJpbmcsIGxpa2Ug
Zm9ybWF0IHN0cmluZ3MgZm9yIGBTdHJGb3JtYXQoKWAsIGlzIGNoZWNrZWQKKy8vIHNpbmtzLiBU
aGUgZm9ybWF0IHN0cmluZywgbGlrZSBmb3JtYXQgc3RyaW5ncyBmb3IgYFN0ckZvcm1hdCgpYCwg
aXMgY2hlY2tlZAogLy8gYXQgY29tcGlsZS10aW1lLgogLy8KIC8vIE9uIGZhaWx1cmUsIHRoaXMg
ZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgIGFuZCB0aGUgc3RhdGUgb2YgdGhlIHNpbmsgaXMKQEAg
LTQ2MywxMyArNDYzLDEzIEBAIHVzaW5nIEZvcm1hdEFyZyA9IHN0cl9mb3JtYXRfaW50ZXJuYWw6
OkZvcm1hdEFyZ0ltcGw7CiAKIC8vIEZvcm1hdFVudHlwZWQoKQogLy8KLS8vIFdyaXRlcyBhIGZv
cm1hdHRlZCBzdGQ6OnN0cmluZyB0byBhbiBhcmJpdHJhcnkgc2luayBvYmplY3QgKGltcGxlbWVu
dGluZyB0aGUKKy8vIFdyaXRlcyBhIGZvcm1hdHRlZCBzdHJpbmcgdG8gYW4gYXJiaXRyYXJ5IHNp
bmsgb2JqZWN0IChpbXBsZW1lbnRpbmcgdGhlCiAvLyBgYWJzbDo6Rm9ybWF0UmF3U2lua2AgaW50
ZXJmYWNlKSwgdXNpbmcgYW4gYFVudHlwZWRGb3JtYXRTcGVjYCBhbmQgemVybyBvcgogLy8gbW9y
ZSBhZGRpdGlvbmFsIGFyZ3VtZW50cy4KIC8vCiAvLyBUaGlzIGZ1bmN0aW9uIGFjdHMgYXMgdGhl
IG1vc3QgZ2VuZXJpYyBmb3JtYXR0aW5nIGZ1bmN0aW9uIGluIHRoZQogLy8gYHN0cl9mb3JtYXRg
IGxpYnJhcnkuIFRoZSBjYWxsZXIgcHJvdmlkZXMgYSByYXcgc2luaywgYW4gdW5jaGVja2VkIGZv
cm1hdAotLy8gc3RkOjpzdHJpbmcsIGFuZCAodXN1YWxseSkgYSBydW50aW1lIHNwZWNpZmllZCBs
aXN0IG9mIGFyZ3VtZW50czsgbm8gY29tcGlsZS10aW1lCisvLyBzdHJpbmcsIGFuZCAodXN1YWxs
eSkgYSBydW50aW1lIHNwZWNpZmllZCBsaXN0IG9mIGFyZ3VtZW50czsgbm8gY29tcGlsZS10aW1l
CiAvLyBjaGVja2luZyBvZiBmb3JtYXR0aW5nIGlzIHBlcmZvcm1lZCB3aXRoaW4gdGhpcyBmdW5j
dGlvbi4gQXMgYSByZXN1bHQsIGEKIC8vIGNhbGxlciBzaG91bGQgY2hlY2sgdGhlIHJldHVybiB2
YWx1ZSB0byB2ZXJpZnkgdGhhdCBubyBlcnJvciBvY2N1cnJlZC4KIC8vIE9uIGZhaWx1cmUsIHRo
aXMgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgIGFuZCB0aGUgc3RhdGUgb2YgdGhlIHNpbmsgaXMK
QEAgLTQ4Myw5ICs0ODMsOSBAQCB1c2luZyBGb3JtYXRBcmcgPSBzdHJfZm9ybWF0X2ludGVybmFs
OjpGb3JtYXRBcmdJbXBsOwogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6c3RyaW5nPiBGb3JtYXREeW5hbWljKGNvbnN0IHN0ZDo6c3RyaW5nJiBpbl9mb3JtYXQs
Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3Rvcjxz
dGQ6OnN0cmluZz4mIGluX2FyZ3MpIHsKLS8vICAgICBzdGQ6OnN0cmluZyBvdXQ7CisvLyAgIHN0
ZDo6b3B0aW9uYWw8c3RyaW5nPiBGb3JtYXREeW5hbWljKGNvbnN0IHN0cmluZyYgaW5fZm9ybWF0
LAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3I8
c3RyaW5nPiYgaW5fYXJncykgeworLy8gICAgIHN0cmluZyBvdXQ7CiAvLyAgICAgc3RkOjp2ZWN0
b3I8YWJzbDo6Rm9ybWF0QXJnPiBhcmdzOwogLy8gICAgIGZvciAoY29uc3QgYXV0byYgdiA6IGlu
X2FyZ3MpIHsKIC8vICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0aGF0ICd2JyBpcyBhIHJlZmVy
ZW5jZSB0byB0aGUgb2JqZWN0cyBpbiBpbl9hcmdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdHJfZm9ybWF0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXRfdGVzdC5jYwpp
bmRleCBmZWQ3NWZhZmI1YzY1YzExYjkyZjhlZGJjYTUzOGE0YWNkZDExNzdjLi5hYTE0ZTIxMTcw
OWFiNzM5Mzc5NmEzMjA4MzBjNzU1OTE2YWNjODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cl9mb3JtYXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXRfdGVzdC5j
YwpAQCAtMzkxLDcgKzM5MSw3IEBAIFRFU1QoU3RyRm9ybWF0LCBCZWhhdmVzQXNEb2N1bWVudGVk
KSB7CiAjZW5kaWYKIAogICAvLyBPdGhlciBjb252ZXJzaW9uCi0gIGludDY0X3QgdmFsdWUgPSAw
eDdmZmRlYjY7CisgIGludDY0X3QgdmFsdWUgPSAweDdmZmRlYjQ7CiAgIGF1dG8gcHRyX3ZhbHVl
ID0gc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSk7CiAgIGNvbnN0IGludCYgc29tZXRoaW5n
ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50Kj4ocHRyX3ZhbHVlKTsKICAgRVhQRUNUX0VR
KFN0ckZvcm1hdCgiJXAiLCAmc29tZXRoaW5nKSwgU3RyRm9ybWF0KCIweCV4IiwgcHRyX3ZhbHVl
KSk7CkBAIC02MDEsMyArNjAxLDM5IEBAIFRFU1RfRihQYXJzZWRGb3JtYXRUZXN0LCBSZWdyZXNz
aW9uTWl4UG9zaXRpb25hbCkgewogCiB9ICAvLyBuYW1lc3BhY2UKIH0gIC8vIG5hbWVzcGFjZSBh
YnNsCisKKy8vIFNvbWUgY29kZWdlbiB0aHVua3MgdGhhdCB3ZSBjYW4gdXNlIHRvIGVhc2lseSBk
dW1wIHRoZSBnZW5lcmF0ZWQgYXNzZW1ibHkgZm9yCisvLyBkaWZmZXJlbnQgU3RyRm9ybWF0IGNh
bGxzLgorCitpbmxpbmUgc3RkOjpzdHJpbmcgQ29kZWdlbkFic2xTdHJGb3JtYXRJbnQoaW50IGkp
IHsKKyAgcmV0dXJuIGFic2w6OlN0ckZvcm1hdCgiJWQiLCBpKTsKK30KKworaW5saW5lIHN0ZDo6
c3RyaW5nIENvZGVnZW5BYnNsU3RyRm9ybWF0SW50U3RyaW5nSW50NjQoaW50IGksIGNvbnN0IHN0
ZDo6c3RyaW5nJiBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDY0X3QgaTY0KSB7CisgIHJldHVybiBhYnNsOjpTdHJGb3JtYXQoIiVkICVzICVk
IiwgaSwgcywgaTY0KTsKK30KKworaW5saW5lIHZvaWQgQ29kZWdlbkFic2xTdHJBcHBlbmRGb3Jt
YXRJbnQoc3RkOjpzdHJpbmcqIG91dCwgaW50IGkpIHsKKyAgYWJzbDo6U3RyQXBwZW5kRm9ybWF0
KG91dCwgIiVkIiwgaSk7Cit9CisKK2lubGluZSB2b2lkIENvZGVnZW5BYnNsU3RyQXBwZW5kRm9y
bWF0SW50U3RyaW5nSW50NjQoc3RkOjpzdHJpbmcqIG91dCwgaW50IGksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IGk2NCkgeworICBhYnNsOjpTdHJBcHBlbmRGb3JtYXQob3V0LCAiJWQgJXMgJWQi
LCBpLCBzLCBpNjQpOworfQorCithdXRvIGFic2xfaW50ZXJuYWxfc3RyX2Zvcm1hdF9mb3JjZV9j
b2RlZ2VuX2Z1bmNzID0gc3RkOjptYWtlX3R1cGxlKAorICAgIENvZGVnZW5BYnNsU3RyRm9ybWF0
SW50LCBDb2RlZ2VuQWJzbFN0ckZvcm1hdEludFN0cmluZ0ludDY0LAorICAgIENvZGVnZW5BYnNs
U3RyQXBwZW5kRm9ybWF0SW50LCBDb2RlZ2VuQWJzbFN0ckFwcGVuZEZvcm1hdEludFN0cmluZ0lu
dDY0KTsKKworYm9vbCBhYnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29kZWdlbl9hbHdh
eXNfZmFsc2U7CisvLyBGb3JjZSB0aGUgY29tcGlsZXIgdG8gZ2VuZXJhdGUgdGhlIGZ1bmN0aW9u
cyBieSBtYWtpbmcgaXQgbG9vayBsaWtlIHdlCisvLyBlc2NhcGUgdGhlIGZ1bmN0aW9uIHBvaW50
ZXJzLgorLy8gSXQgY2FuJ3Qgc3RhdGljYWxseSBrbm93IHRoYXQKKy8vIGFic2xfaW50ZXJuYWxf
c3RyX2Zvcm1hdF9mb3JjZV9jb2RlZ2VuX2Fsd2F5c19mYWxzZSBpcyBub3QgY2hhbmdlZCBieSBz
b21lb25lCisvLyBlbHNlLgorYm9vbCBhYnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29k
ZWdlbiA9CisgICAgYWJzbF9pbnRlcm5hbF9zdHJfZm9ybWF0X2ZvcmNlX2NvZGVnZW5fYWx3YXlz
X2ZhbHNlICYmCisgICAgcHJpbnRmKCIlcCIsICZhYnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9y
Y2VfY29kZWdlbl9mdW5jcykgPT0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pv
aW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW4uaAppbmRleCBiZDRkMGUxZDkzMjRjYzcyOTIx
NDQ0OTkzNWI1NzMzN2E2NzE2ZmI3Li5mOTYxMWFkM2I0N2Q3MmQwZDk5MmJkMmJlZjkwNzVjODYw
OGZkMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJfam9pbi5oCkBAIC0xOCwxMCArMTgsMTAgQEAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBjb250YWlucyBmdW5jdGlvbnMgZm9yIGpv
aW5pbmcgYSByYW5nZSBvZiBlbGVtZW50cyBhbmQKLS8vIHJldHVybmluZyB0aGUgcmVzdWx0IGFz
IGEgc3RkOjpzdHJpbmcuIFN0ckpvaW4gb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVkIGJ5IHBhc3Np
bmcKLS8vIGEgcmFuZ2UsIGEgc2VwYXJhdG9yIHN0ZDo6c3RyaW5nIHRvIHVzZSBiZXR3ZWVuIHRo
ZSBlbGVtZW50cyBqb2luZWQsIGFuZCBhbgorLy8gcmV0dXJuaW5nIHRoZSByZXN1bHQgYXMgYSBz
dHJpbmcuIFN0ckpvaW4gb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVkIGJ5IHBhc3NpbmcKKy8vIGEg
cmFuZ2UsIGEgc2VwYXJhdG9yIHN0cmluZyB0byB1c2UgYmV0d2VlbiB0aGUgZWxlbWVudHMgam9p
bmVkLCBhbmQgYW4KIC8vIG9wdGlvbmFsIEZvcm1hdHRlciByZXNwb25zaWJsZSBmb3IgY29udmVy
dGluZyBlYWNoIGFyZ3VtZW50IGluIHRoZSByYW5nZSB0byBhCi0vLyBzdGQ6OnN0cmluZy4gSWYg
b21pdHRlZCwgYSBkZWZhdWx0IGBBbHBoYU51bUZvcm1hdHRlcigpYCBpcyBjYWxsZWQgb24gdGhl
IGVsZW1lbnRzCisvLyBzdHJpbmcuIElmIG9taXR0ZWQsIGEgZGVmYXVsdCBgQWxwaGFOdW1Gb3Jt
YXR0ZXIoKWAgaXMgY2FsbGVkIG9uIHRoZSBlbGVtZW50cwogLy8gdG8gYmUgam9pbmVkLCB1c2lu
ZyB0aGUgc2FtZSBmb3JtYXR0aW5nIHRoYXQgYGFic2w6OlN0ckNhdCgpYCB1c2VzLiBUaGlzCiAv
LyBwYWNrYWdlIGRlZmluZXMgYSBudW1iZXIgb2YgZGVmYXVsdCBmb3JtYXR0ZXJzLCBhbmQgeW91
IGNhbiBkZWZpbmUgeW91ciBvd24KIC8vIGltcGxlbWVudGF0aW9ucy4KQEAgLTI5LDcgKzI5LDcg
QEAKIC8vIFJhbmdlcyBhcmUgc3BlY2lmaWVkIGJ5IHBhc3NpbmcgYSBjb250YWluZXIgd2l0aCBg
c3RkOjpiZWdpbigpYCBhbmQKIC8vIGBzdGQ6OmVuZCgpYCBpdGVyYXRvcnMsIGNvbnRhaW5lci1z
cGVjaWZpYyBgYmVnaW4oKWAgYW5kIGBlbmQoKWAgaXRlcmF0b3JzLCBhCiAvLyBicmFjZS1pbml0
aWFsaXplZCBgc3RkOjppbml0aWFsaXplcl9saXN0YCwgb3IgYSBgc3RkOjp0dXBsZWAgb2YgaGV0
ZXJvZ2VuZW91cwotLy8gb2JqZWN0cy4gVGhlIHNlcGFyYXRvciBzdGQ6OnN0cmluZyBpcyBzcGVj
aWZpZWQgYXMgYW4gYGFic2w6OnN0cmluZ192aWV3YC4KKy8vIG9iamVjdHMuIFRoZSBzZXBhcmF0
b3Igc3RyaW5nIGlzIHNwZWNpZmllZCBhcyBhbiBgYWJzbDo6c3RyaW5nX3ZpZXdgLgogLy8KIC8v
IEJlY2F1c2UgdGhlIGRlZmF1bHQgZm9ybWF0dGVyIHVzZXMgdGhlIGBhYnNsOjpBbHBoYU51bWAg
Y2xhc3MsCiAvLyBgYWJzbDo6U3RySm9pbigpYCwgbGlrZSBgYWJzbDo6U3RyQ2F0KClgLCB3aWxs
IHdvcmsgb3V0LW9mLXRoZS1ib3ggb24KQEAgLTM3LDggKzM3LDggQEAKIC8vCiAvLyBFeGFtcGxl
OgogLy8KLS8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSB7ImZvbyIsICJiYXIiLCAi
YmF6In07Ci0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CisvLyAg
IHN0ZDo6dmVjdG9yPHN0cmluZz4gdiA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKKy8vICAgc3Ry
aW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiZm9vLWJhci1i
YXoiLCBzKTsKIC8vCiAvLyBTZWUgY29tbWVudHMgb24gdGhlIGBhYnNsOjpTdHJKb2luKClgIGZ1
bmN0aW9uIGZvciBtb3JlIGV4YW1wbGVzLgpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgPGl0
ZXJhdG9yPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0
eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9iYXNlL21h
Y3Jvcy5oIgpAQCAtNjUsMTYgKzY2LDE2IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLwogLy8gQSBGb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvYmplY3QgdGhh
dCBpcyByZXNwb25zaWJsZSBmb3IgZm9ybWF0dGluZyBpdHMKLS8vIGFyZ3VtZW50IGFzIGEgc3Rk
OjpzdHJpbmcgYW5kIGFwcGVuZGluZyBpdCB0byBhIGdpdmVuIG91dHB1dCBzdGQ6OnN0cmluZy4g
Rm9ybWF0dGVycworLy8gYXJndW1lbnQgYXMgYSBzdHJpbmcgYW5kIGFwcGVuZGluZyBpdCB0byBh
IGdpdmVuIG91dHB1dCBzdHJpbmcuIEZvcm1hdHRlcnMKIC8vIG1heSBiZSBpbXBsZW1lbnRlZCBh
cyBmdW5jdGlvbiBvYmplY3RzLCBsYW1iZGFzLCBvciBub3JtYWwgZnVuY3Rpb25zLiBZb3UgbWF5
CiAvLyBwcm92aWRlIHlvdXIgb3duIEZvcm1hdHRlciB0byBlbmFibGUgYGFic2w6OlN0ckpvaW4o
KWAgdG8gd29yayB3aXRoIGFyYml0cmFyeQogLy8gdHlwZXMuCiAvLwogLy8gVGhlIGZvbGxvd2lu
ZyBpcyBhbiBleGFtcGxlIG9mIGEgY3VzdG9tIEZvcm1hdHRlciB0aGF0IHNpbXBseSB1c2VzCi0v
LyBgc3RkOjp0b19zdHJpbmcoKWAgdG8gZm9ybWF0IGFuIGludGVnZXIgYXMgYSBzdGQ6OnN0cmlu
Zy4KKy8vIGBzdGQ6OnRvX3N0cmluZygpYCB0byBmb3JtYXQgYW4gaW50ZWdlciBhcyBhIHN0cmlu
Zy4KIC8vCiAvLyAgIHN0cnVjdCBNeUZvcm1hdHRlciB7Ci0vLyAgICAgdm9pZCBvcGVyYXRvcigp
KHN0ZDo6c3RyaW5nKiBvdXQsIGludCBpKSBjb25zdCB7CisvLyAgICAgdm9pZCBvcGVyYXRvcigp
KHN0cmluZyogb3V0LCBpbnQgaSkgY29uc3QgewogLy8gICAgICAgb3V0LT5hcHBlbmQoc3RkOjp0
b19zdHJpbmcoaSkpOwogLy8gICAgIH0KIC8vICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgbmFtZXNw
YWNlIGFic2wgewogLy8gYXJndW1lbnQgdG8gYGFic2w6OlN0ckpvaW4oKWA6CiAvLwogLy8gICBz
dGQ6OnZlY3RvcjxpbnQ+IHYgPSB7MSwgMiwgMywgNH07Ci0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBh
YnNsOjpTdHJKb2luKHYsICItIiwgTXlGb3JtYXR0ZXIoKSk7CisvLyAgIHN0cmluZyBzID0gYWJz
bDo6U3RySm9pbih2LCAiLSIsIE15Rm9ybWF0dGVyKCkpOwogLy8gICBFWFBFQ1RfRVEoIjEtMi0z
LTQiLCBzKTsKIC8vCiAvLyBUaGUgZm9sbG93aW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXJlIHBy
b3ZpZGVkIHdpdGhpbiB0aGlzIGZpbGU6CkBAIC0xNTUsMTAgKzE1NiwxMCBAQCBEZXJlZmVyZW5j
ZUZvcm1hdHRlcigpIHsKIC8vIFN0ckpvaW4oKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8v
Ci0vLyBKb2lucyBhIHJhbmdlIG9mIGVsZW1lbnRzIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMg
YSBzdGQ6OnN0cmluZy4KLS8vIGBhYnNsOjpTdHJKb2luKClgIHRha2VzIGEgcmFuZ2UsIGEgc2Vw
YXJhdG9yIHN0ZDo6c3RyaW5nIHRvIHVzZSBiZXR3ZWVuIHRoZQorLy8gSm9pbnMgYSByYW5nZSBv
ZiBlbGVtZW50cyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIGEgc3RyaW5nLgorLy8gYGFic2w6
OlN0ckpvaW4oKWAgdGFrZXMgYSByYW5nZSwgYSBzZXBhcmF0b3Igc3RyaW5nIHRvIHVzZSBiZXR3
ZWVuIHRoZQogLy8gZWxlbWVudHMgam9pbmVkLCBhbmQgYW4gb3B0aW9uYWwgRm9ybWF0dGVyIHJl
c3BvbnNpYmxlIGZvciBjb252ZXJ0aW5nIGVhY2gKLS8vIGFyZ3VtZW50IGluIHRoZSByYW5nZSB0
byBhIHN0ZDo6c3RyaW5nLgorLy8gYXJndW1lbnQgaW4gdGhlIHJhbmdlIHRvIGEgc3RyaW5nLgog
Ly8KIC8vIElmIG9taXR0ZWQsIHRoZSBkZWZhdWx0IGBBbHBoYU51bUZvcm1hdHRlcigpYCBpcyBj
YWxsZWQgb24gdGhlIGVsZW1lbnRzIHRvIGJlCiAvLyBqb2luZWQuCkBAIC0xNjYsMjIgKzE2Nywy
MiBAQCBEZXJlZmVyZW5jZUZvcm1hdHRlcigpIHsKIC8vIEV4YW1wbGUgMToKIC8vICAgLy8gSm9p
bnMgYSBjb2xsZWN0aW9uIG9mIHN0cmluZ3MuIFRoaXMgcGF0dGVybiBhbHNvIHdvcmtzIHdpdGgg
YSBjb2xsZWN0aW9uCiAvLyAgIC8vIG9mIGBhYnNsOjpzdHJpbmdfdmlld2Agb3IgZXZlbiBgY29u
c3QgY2hhcipgLgotLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IHsiZm9vIiwgImJh
ciIsICJiYXoifTsKLS8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsK
Ky8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiB2ID0geyJmb28iLCAiYmFyIiwgImJheiJ9OworLy8g
ICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCJmb28t
YmFyLWJheiIsIHMpOwogLy8KIC8vIEV4YW1wbGUgMjoKIC8vICAgLy8gSm9pbnMgdGhlIHZhbHVl
cyBpbiB0aGUgZ2l2ZW4gYHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDw+YCBzcGVjaWZpZWQgdXNpbmcK
IC8vICAgLy8gYnJhY2UgaW5pdGlhbGl6YXRpb24uIFRoaXMgcGF0dGVybiBhbHNvIHdvcmtzIHdp
dGggYW4gaW5pdGlhbGl6ZXJfbGlzdAogLy8gICAvLyBvZiBpbnRzIG9yIGBhYnNsOjpzdHJpbmdf
dmlld2AgLS0gYW55IGBBbHBoYU51bWAtY29tcGF0aWJsZSB0eXBlLgotLy8gICBzdGQ6OnN0cmlu
ZyBzID0gYWJzbDo6U3RySm9pbih7ImZvbyIsICJiYXIiLCAiYmF6In0sICItIik7CisvLyAgIHN0
cmluZyBzID0gYWJzbDo6U3RySm9pbih7ImZvbyIsICJiYXIiLCAiYmF6In0sICItIik7CiAvLyAg
IEVYUEVDVF9FUSgiZm9vLWJhci1iYXoiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDM6CiAvLyAgIC8v
IEpvaW5zIGEgY29sbGVjdGlvbiBvZiBpbnRzLiBUaGlzIHBhdHRlcm4gYWxzbyB3b3JrcyB3aXRo
IGZsb2F0cywKIC8vICAgLy8gZG91YmxlcywgaW50NjRzIC0tIGFueSBgU3RyQ2F0KClgLWNvbXBh
dGlibGUgdHlwZS4KIC8vICAgc3RkOjp2ZWN0b3I8aW50PiB2ID0gezEsIDIsIDMsIC00fTsKLS8v
ICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3RyaW5nIHMg
PSBhYnNsOjpTdHJKb2luKHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiMS0yLTMtLTQiLCBzKTsK
IC8vCiAvLyBFeGFtcGxlIDQ6CkBAIC0xOTIsNyArMTkzLDcgQEAgRGVyZWZlcmVuY2VGb3JtYXR0
ZXIoKSB7CiAvLyAgIC8vIGBzdGQ6OnZlY3RvcjxpbnQqPmAuCiAvLyAgIGludCB4ID0gMSwgeSA9
IDIsIHogPSAzOwogLy8gICBzdGQ6OnZlY3RvcjxpbnQqPiB2ID0geyZ4LCAmeSwgJnp9OwotLy8g
ICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RySm9pbih2LCAiLSIpOworLy8gICBzdHJpbmcgcyA9
IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxLTItMyIsIHMpOwogLy8K
IC8vIEV4YW1wbGUgNToKQEAgLTIwMSw0MiArMjAyLDQyIEBAIERlcmVmZXJlbmNlRm9ybWF0dGVy
KCkgewogLy8gICB2LmVtcGxhY2VfYmFjayhuZXcgaW50KDEpKTsKIC8vICAgdi5lbXBsYWNlX2Jh
Y2sobmV3IGludCgyKSk7CiAvLyAgIHYuZW1wbGFjZV9iYWNrKG5ldyBpbnQoMykpOwotLy8gICBz
dGQ6OnN0cmluZyBzID0gYWJzbDo6U3RySm9pbih2LCAiLSIpOworLy8gICBzdHJpbmcgcyA9IGFi
c2w6OlN0ckpvaW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxLTItMyIsIHMpOwogLy8KIC8v
IEV4YW1wbGUgNjoKIC8vICAgLy8gSm9pbnMgYSBgc3RkOjptYXBgLCB3aXRoIGVhY2gga2V5LXZh
bHVlIHBhaXIgc2VwYXJhdGVkIGJ5IGFuIGVxdWFscwogLy8gICAvLyBzaWduLiBUaGlzIHBhdHRl
cm4gd291bGQgYWxzbyB3b3JrIHdpdGgsIHNheSwgYQogLy8gICAvLyBgc3RkOjp2ZWN0b3I8c3Rk
OjpwYWlyPD4+YC4KLS8vICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIGludD4gbSA9IHsKKy8vICAg
c3RkOjptYXA8c3RyaW5nLCBpbnQ+IG0gPSB7CiAvLyAgICAgICBzdGQ6Om1ha2VfcGFpcigiYSIs
IDEpLAogLy8gICAgICAgc3RkOjptYWtlX3BhaXIoImIiLCAyKSwKIC8vICAgICAgIHN0ZDo6bWFr
ZV9wYWlyKCJjIiwgMyl9OwotLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RySm9pbihtLCAi
LCIsIGFic2w6OlBhaXJGb3JtYXR0ZXIoIj0iKSk7CisvLyAgIHN0cmluZyBzID0gYWJzbDo6U3Ry
Sm9pbihtLCAiLCIsIGFic2w6OlBhaXJGb3JtYXR0ZXIoIj0iKSk7CiAvLyAgIEVYUEVDVF9FUSgi
YT0xLGI9MixjPTMiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDc6CiAvLyAgIC8vIFRoZXNlIGV4YW1w
bGVzIHNob3cgaG93IGBhYnNsOjpTdHJKb2luKClgIGhhbmRsZXMgYSBmZXcgY29tbW9uIGVkZ2UK
IC8vICAgLy8gY2FzZXM6Ci0vLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2X2VtcHR5Owor
Ly8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHZfZW1wdHk7CiAvLyAgIEVYUEVDVF9FUSgiIiwgYWJz
bDo6U3RySm9pbih2X2VtcHR5LCAiLSIpKTsKIC8vCi0vLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiB2X29uZV9pdGVtID0geyJmb28ifTsKKy8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiB2X29u
ZV9pdGVtID0geyJmb28ifTsKIC8vICAgRVhQRUNUX0VRKCJmb28iLCBhYnNsOjpTdHJKb2luKHZf
b25lX2l0ZW0sICItIikpOwogLy8KLS8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHZfZW1w
dHlfc3RyaW5nID0geyIifTsKKy8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiB2X2VtcHR5X3N0cmlu
ZyA9IHsiIn07CiAvLyAgIEVYUEVDVF9FUSgiIiwgYWJzbDo6U3RySm9pbih2X2VtcHR5X3N0cmlu
ZywgIi0iKSk7CiAvLwotLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdl9vbmVfaXRlbV9l
bXB0eV9zdHJpbmcgPSB7ImEiLCAiIn07CisvLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdl9vbmVf
aXRlbV9lbXB0eV9zdHJpbmcgPSB7ImEiLCAiIn07CiAvLyAgIEVYUEVDVF9FUSgiYS0iLCBhYnNs
OjpTdHJKb2luKHZfb25lX2l0ZW1fZW1wdHlfc3RyaW5nLCAiLSIpKTsKIC8vCi0vLyAgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiB2X3R3b19lbXB0eV9zdHJpbmcgPSB7IiIsICIifTsKKy8vICAg
c3RkOjp2ZWN0b3I8c3RyaW5nPiB2X3R3b19lbXB0eV9zdHJpbmcgPSB7IiIsICIifTsKIC8vICAg
RVhQRUNUX0VRKCItIiwgYWJzbDo6U3RySm9pbih2X3R3b19lbXB0eV9zdHJpbmcsICItIikpOwog
Ly8KIC8vIEV4YW1wbGUgODoKIC8vICAgLy8gSm9pbnMgYSBgc3RkOjp0dXBsZTxULi4uPmAgb2Yg
aGV0ZXJvZ2VuZW91cyB0eXBlcywgY29udmVydGluZyBlYWNoIHRvCi0vLyAgIC8vIGEgc3RkOjpz
dHJpbmcgdXNpbmcgdGhlIGBhYnNsOjpBbHBoYU51bWAgY2xhc3MuCi0vLyAgIHN0ZDo6c3RyaW5n
IHMgPSBhYnNsOjpTdHJKb2luKHN0ZDo6bWFrZV90dXBsZSgxMjMsICJhYmMiLCAwLjQ1NiksICIt
Iik7CisvLyAgIC8vIGEgc3RyaW5nIHVzaW5nIHRoZSBgYWJzbDo6QWxwaGFOdW1gIGNsYXNzLgor
Ly8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4oc3RkOjptYWtlX3R1cGxlKDEyMywgImFiYyIs
IDAuNDU2KSwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxMjMtYWJjLTAuNDU2Iiwgcyk7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgRm9ybWF0dGVyPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFj
ZS5oCmluZGV4IGY0ZDliYjk1NDVkNjg5NzYyMTgwYTFhNDMwZTY0YjUwNjViY2YyN2MuLjNiZmU0
YzYxZWJkMTUwNGQzYzhlYjhlNTBiYTg3MGZhOGZhNjg5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3Mvc3RyX3JlcGxhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmgKQEAg
LTE3LDE5ICsxNywxOSBAQAogLy8gRmlsZTogc3RyX3JlcGxhY2UuaAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIC8vCi0vLyBUaGlzIGZpbGUgZGVmaW5lcyBgYWJzbDo6U3RyUmVwbGFjZUFsbCgp
YCwgYSBnZW5lcmFsLXB1cnBvc2Ugc3RkOjpzdHJpbmcKKy8vIFRoaXMgZmlsZSBkZWZpbmVzIGBh
YnNsOjpTdHJSZXBsYWNlQWxsKClgLCBhIGdlbmVyYWwtcHVycG9zZSBzdHJpbmcKIC8vIHJlcGxh
Y2VtZW50IGZ1bmN0aW9uIGRlc2lnbmVkIGZvciBsYXJnZSwgYXJiaXRyYXJ5IHRleHQgc3Vic3Rp
dHV0aW9ucywKIC8vIGVzcGVjaWFsbHkgb24gc3RyaW5ncyB3aGljaCB5b3UgYXJlIHJlY2Vpdmlu
ZyBmcm9tIHNvbWUgb3RoZXIgc3lzdGVtIGZvcgogLy8gZnVydGhlciBwcm9jZXNzaW5nIChlLmcu
IHByb2Nlc3NpbmcgcmVndWxhciBleHByZXNzaW9ucywgZXNjYXBpbmcgSFRNTAotLy8gZW50aXRp
ZXMsIGV0Yy4gYFN0clJlcGxhY2VBbGxgIGlzIGRlc2lnbmVkIHRvIGJlIGVmZmljaWVudCBldmVu
IHdoZW4gb25seQorLy8gZW50aXRpZXMsIGV0Yy4pLiBgU3RyUmVwbGFjZUFsbGAgaXMgZGVzaWdu
ZWQgdG8gYmUgZWZmaWNpZW50IGV2ZW4gd2hlbiBvbmx5CiAvLyBvbmUgc3Vic3RpdHV0aW9uIGlz
IGJlaW5nIHBlcmZvcm1lZCwgb3Igd2hlbiBzdWJzdGl0dXRpb24gaXMgcmFyZS4KIC8vCi0vLyBJ
ZiB0aGUgc3RkOjpzdHJpbmcgYmVpbmcgbW9kaWZpZWQgaXMga25vd24gYXQgY29tcGlsZS10aW1l
LCBhbmQgdGhlIHN1YnN0aXR1dGlvbnMKKy8vIElmIHRoZSBzdHJpbmcgYmVpbmcgbW9kaWZpZWQg
aXMga25vd24gYXQgY29tcGlsZS10aW1lLCBhbmQgdGhlIHN1YnN0aXR1dGlvbnMKIC8vIHZhcnks
IGBhYnNsOjpTdWJzdGl0dXRlKClgIG1heSBiZSBhIGJldHRlciBjaG9pY2UuCiAvLwogLy8gRXhh
bXBsZToKIC8vCi0vLyBzdGQ6OnN0cmluZyBodG1sX2VzY2FwZWQgPSBhYnNsOjpTdHJSZXBsYWNl
QWxsKHVzZXJfaW5wdXQsIHsKKy8vIHN0cmluZyBodG1sX2VzY2FwZWQgPSBhYnNsOjpTdHJSZXBs
YWNlQWxsKHVzZXJfaW5wdXQsIHsKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsiJiIsICImYW1wOyJ9LAogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyI8IiwgIiZsdDsifSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsiPiIsICImZ3Q7In0sCkBAIC00OSwxNiArNDksMTYgQEAgbmFt
ZXNwYWNlIGFic2wgewogCiAvLyBTdHJSZXBsYWNlQWxsKCkKIC8vCi0vLyBSZXBsYWNlcyBjaGFy
YWN0ZXIgc2VxdWVuY2VzIHdpdGhpbiBhIGdpdmVuIHN0ZDo6c3RyaW5nIHdpdGggcmVwbGFjZW1l
bnRzIHByb3ZpZGVkCisvLyBSZXBsYWNlcyBjaGFyYWN0ZXIgc2VxdWVuY2VzIHdpdGhpbiBhIGdp
dmVuIHN0cmluZyB3aXRoIHJlcGxhY2VtZW50cyBwcm92aWRlZAogLy8gd2l0aGluIGFuIGluaXRp
YWxpemVyIGxpc3Qgb2Yga2V5L3ZhbHVlIHBhaXJzLiBDYW5kaWRhdGUgcmVwbGFjZW1lbnRzIGFy
ZQotLy8gY29uc2lkZXJlZCBpbiBvcmRlciBhcyB0aGV5IG9jY3VyIHdpdGhpbiB0aGUgc3RkOjpz
dHJpbmcsIHdpdGggZWFybGllciBtYXRjaGVzCisvLyBjb25zaWRlcmVkIGluIG9yZGVyIGFzIHRo
ZXkgb2NjdXIgd2l0aGluIHRoZSBzdHJpbmcsIHdpdGggZWFybGllciBtYXRjaGVzCiAvLyB0YWtp
bmcgcHJlY2VkZW5jZSwgYW5kIGxvbmdlciBtYXRjaGVzIHRha2luZyBwcmVjZWRlbmNlIGZvciBj
YW5kaWRhdGVzCi0vLyBzdGFydGluZyBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgc3RkOjpz
dHJpbmcuIE9uY2UgYSBzdWJzdGl0dXRpb24gaXMgbWFkZSwgdGhlCisvLyBzdGFydGluZyBhdCB0
aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nLiBPbmNlIGEgc3Vic3RpdHV0aW9uIGlzIG1h
ZGUsIHRoZQogLy8gcmVwbGFjZWQgdGV4dCBpcyBub3QgY29uc2lkZXJlZCBmb3IgYW55IGZ1cnRo
ZXIgc3Vic3RpdHV0aW9ucy4KIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgc3RkOjpzdHJpbmcg
cyA9IGFic2w6OlN0clJlcGxhY2VBbGwoIiR3aG8gYm91Z2h0ICRjb3VudCAjTm91bi4gVGhhbmtz
ICR3aG8hIiwKKy8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCIkd2hvIGJvdWdo
dCAkY291bnQgI05vdW4uIFRoYW5rcyAkd2hvISIsCiAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7eyIkY291bnQiLCBhYnNsOjpTdHJDYXQoNSl9LAogLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsiJHdobyIsICJCb2IifSwKIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7IiNOb3VuIiwgIkFwcGxlcyJ9fSk7CkBAIC03OCwyOCArNzgs
MjggQEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpzdHJpbmcgU3RyUmVwbGFjZUFsbCgKIC8v
ICAgcmVwbGFjZW1lbnRzWyIkd2hvIl0gPSAiQm9iIjsKIC8vICAgcmVwbGFjZW1lbnRzWyIkY291
bnQiXSA9ICI1IjsKIC8vICAgcmVwbGFjZW1lbnRzWyIjTm91biJdID0gIkFwcGxlcyI7Ci0vLyAg
IHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCIkd2hvIGJvdWdodCAkY291bnQg
I05vdW4uIFRoYW5rcyAkd2hvISIsCisvLyAgIHN0cmluZyBzID0gYWJzbDo6U3RyUmVwbGFjZUFs
bCgiJHdobyBib3VnaHQgJGNvdW50ICNOb3VuLiBUaGFua3MgJHdobyEiLAogLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzKTsKIC8vICAgRVhQRUNUX0VRKCJC
b2IgYm91Z2h0IDUgQXBwbGVzLiBUaGFua3MgQm9iISIsIHMpOwogLy8KIC8vICAgLy8gQSBzdGQ6
OnZlY3RvciBvZiBzdGQ6OnBhaXIgZWxlbWVudHMgY2FuIGJlIG1vcmUgZWZmaWNpZW50LgotLy8g
ICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8Y29uc3QgYWJzbDo6c3RyaW5nX3ZpZXcsIHN0ZDo6c3Ry
aW5nPj4gcmVwbGFjZW1lbnRzOworLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8Y29uc3QgYWJz
bDo6c3RyaW5nX3ZpZXcsIHN0cmluZz4+IHJlcGxhY2VtZW50czsKIC8vICAgcmVwbGFjZW1lbnRz
LnB1c2hfYmFjayh7IiYiLCAiJmFtcDsifSk7CiAvLyAgIHJlcGxhY2VtZW50cy5wdXNoX2JhY2so
eyI8IiwgIiZsdDsifSk7CiAvLyAgIHJlcGxhY2VtZW50cy5wdXNoX2JhY2soeyI+IiwgIiZndDsi
fSk7Ci0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCJpZiAocHRyIDwg
JmZvbykiLAorLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0clJlcGxhY2VBbGwoImlmIChwdHIgPCAm
Zm9vKSIsCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMp
OwogLy8gICBFWFBFQ1RfRVEoImlmIChwdHIgJmx0OyAmYW1wO2ZvbykiLCBzKTsKIHRlbXBsYXRl
IDx0eXBlbmFtZSBTdHJUb1N0ck1hcHBpbmc+CiBzdGQ6OnN0cmluZyBTdHJSZXBsYWNlQWxsKGFi
c2w6OnN0cmluZ192aWV3IHMsIGNvbnN0IFN0clRvU3RyTWFwcGluZyYgcmVwbGFjZW1lbnRzKTsK
IAogLy8gT3ZlcmxvYWQgb2YgYFN0clJlcGxhY2VBbGwoKWAgdG8gcmVwbGFjZSBjaGFyYWN0ZXIg
c2VxdWVuY2VzIHdpdGhpbiBhIGdpdmVuCi0vLyBvdXRwdXQgc3RkOjpzdHJpbmcgKmluIHBsYWNl
KiB3aXRoIHJlcGxhY2VtZW50cyBwcm92aWRlZCB3aXRoaW4gYW4gaW5pdGlhbGl6ZXIKKy8vIG91
dHB1dCBzdHJpbmcgKmluIHBsYWNlKiB3aXRoIHJlcGxhY2VtZW50cyBwcm92aWRlZCB3aXRoaW4g
YW4gaW5pdGlhbGl6ZXIKIC8vIGxpc3Qgb2Yga2V5L3ZhbHVlIHBhaXJzLCByZXR1cm5pbmcgdGhl
IG51bWJlciBvZiBzdWJzdGl0dXRpb25zIHRoYXQgb2NjdXJyZWQuCiAvLwogLy8gRXhhbXBsZToK
IC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBzdGQ6OnN0cmluZygiJHdobyBib3VnaHQgJGNvdW50
ICNOb3VuLiBUaGFua3MgJHdobyEiKTsKKy8vICAgc3RyaW5nIHMgPSBzdGQ6OnN0cmluZygiJHdo
byBib3VnaHQgJGNvdW50ICNOb3VuLiBUaGFua3MgJHdobyEiKTsKIC8vICAgaW50IGNvdW50Owog
Ly8gICBjb3VudCA9IGFic2w6OlN0clJlcGxhY2VBbGwoe3siJGNvdW50IiwgYWJzbDo6U3RyQ2F0
KDUpfSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiJHdobyIsICJCb2IifSwK
QEAgLTExMiwxMiArMTEyLDEyIEBAIGludCBTdHJSZXBsYWNlQWxsKAogICAgIHN0ZDo6c3RyaW5n
KiB0YXJnZXQpOwogCiAvLyBPdmVybG9hZCBvZiBgU3RyUmVwbGFjZUFsbCgpYCB0byByZXBsYWNl
IHBhdHRlcm5zIHdpdGhpbiBhIGdpdmVuIG91dHB1dAotLy8gc3RkOjpzdHJpbmcgKmluIHBsYWNl
KiB3aXRoIHJlcGxhY2VtZW50cyBwcm92aWRlZCB3aXRoaW4gYSBjb250YWluZXIgb2Yga2V5L3Zh
bHVlCisvLyBzdHJpbmcgKmluIHBsYWNlKiB3aXRoIHJlcGxhY2VtZW50cyBwcm92aWRlZCB3aXRo
aW4gYSBjb250YWluZXIgb2Yga2V5L3ZhbHVlCiAvLyBwYWlycy4KIC8vCiAvLyBFeGFtcGxlOgog
Ly8KLS8vICAgc3RkOjpzdHJpbmcgcyA9IHN0ZDo6c3RyaW5nKCJpZiAocHRyIDwgJmZvbykiKTsK
Ky8vICAgc3RyaW5nIHMgPSBzdGQ6OnN0cmluZygiaWYgKHB0ciA8ICZmb28pIik7CiAvLyAgIGlu
dCBjb3VudCA9IGFic2w6OlN0clJlcGxhY2VBbGwoe3siJiIsICImYW1wOyJ9LAogLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IjwiLCAiJmx0OyJ9LAogLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7Ij4iLCAiJmd0OyJ9fSwgJnMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cl9yZXBsYWNlX2JlbmNobWFyay5jYwppbmRleCBlNjA4ZGU4ZDE5ZTQxYmE3M2MzZDU0ZmZh
Mzc2NDNjNzJiZTgwMmRiLi44Mzg2ZjJlNmJmMTBlY2U0NmJhNDc5YWUyNTNkODc5NjY3YzVlMWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlX2JlbmNobWFyay5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlX2JlbmNobWFyay5jYwpAQCAtMzgsMTYgKzM4LDE2
IEBAIHN0cnVjdCBSZXBsYWNlbWVudCB7CiAgICAgeyJsaXF1b3IiLCAic2hha2VzIn0sICAgIC8v
CiB9OwogCi0vLyBIZXJlLCB3ZSBzZXQgdXAgYSBzdGQ6OnN0cmluZyBmb3IgdXNlIGluIGdsb2Jh
bC1yZXBsYWNlIGJlbmNobWFya3MuCisvLyBIZXJlLCB3ZSBzZXQgdXAgYSBzdHJpbmcgZm9yIHVz
ZSBpbiBnbG9iYWwtcmVwbGFjZSBiZW5jaG1hcmtzLgogLy8gV2Ugc3RhcnRlZCB3aXRoIGEgbWls
bGlvbiBibGFua3MsIGFuZCB0aGVuIGRldGVybWluaXN0aWNhbGx5IGluc2VydAotLy8gMTAsMDAw
IGNvcGllcyBlYWNoIG9mIHR3byBwYW5ncmFtcy4gIFRoZSByZXN1bHQgaXMgYSBzdGQ6OnN0cmlu
ZyB0aGF0IGlzCisvLyAxMCwwMDAgY29waWVzIGVhY2ggb2YgdHdvIHBhbmdyYW1zLiAgVGhlIHJl
c3VsdCBpcyBhIHN0cmluZyB0aGF0IGlzCiAvLyA0MCUgYmxhbmsgc3BhY2UgYW5kIDYwJSB0aGVz
ZSB3b3Jkcy4gICd0aGUnIG9jY3VycyAxOCwyNDcgdGltZXMgYW5kCiAvLyBhbGwgdGhlIHN1YnN0
aXR1dGlvbnMgdG9nZXRoZXIgb2NjdXIgNDksMDA0IHRpbWVzLgogLy8KLS8vIFdlIHRoZW4gY3Jl
YXRlICJhZnRlcl9yZXBsYWNpbmdfdGhlIiB0byBiZSBhIHN0ZDo6c3RyaW5nIHRoYXQgaXMgYSBy
ZXN1bHQgb2YKKy8vIFdlIHRoZW4gY3JlYXRlICJhZnRlcl9yZXBsYWNpbmdfdGhlIiB0byBiZSBh
IHN0cmluZyB0aGF0IGlzIGEgcmVzdWx0IG9mCiAvLyByZXBsYWNpbmcgInRoZSIgd2l0aCAiYm94
IiBpbiBiaWdfc3RyaW5nLgogLy8KLS8vIEFuZCB0aGVuIHdlIGNyZWF0ZSAiYWZ0ZXJfcmVwbGFj
aW5nX21hbnkiIHRvIGJlIGEgc3RkOjpzdHJpbmcgdGhhdCBpcyByZXN1bHQKKy8vIEFuZCB0aGVu
IHdlIGNyZWF0ZSAiYWZ0ZXJfcmVwbGFjaW5nX21hbnkiIHRvIGJlIGEgc3RyaW5nIHRoYXQgaXMg
cmVzdWx0CiAvLyBvZiBwcmVmZXJyaW5nIHNldmVyYWwgc3Vic3RpdHV0aW9ucy4KIHZvaWQgU2V0
VXBTdHJpbmdzKCkgewogICBpZiAoYmlnX3N0cmluZyA9PSBudWxscHRyKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmNj
CmluZGV4IDAyMDcyMTNjMjZiYWY5MTNkOTk4MTQ5Nzk0M2Q3ODY3YTFjZGVlZWEuLjBhNjhjNTJk
MTRmMTliODhkM2FkZDJlMzcyMjdjNTEzYzU5ZDEyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyX3NwbGl0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmNjCkBAIC00Mywx
MCArNDMsMTEgQEAgYWJzbDo6c3RyaW5nX3ZpZXcgR2VuZXJpY0ZpbmQoYWJzbDo6c3RyaW5nX3Zp
ZXcgdGV4dCwKICAgaWYgKGRlbGltaXRlci5lbXB0eSgpICYmIHRleHQubGVuZ3RoKCkgPiAwKSB7
CiAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdGQ6OnN0cmluZyBkZWxpbWl0ZXJzOiBh
bHdheXMgcmV0dXJuIGEgemVyby1sZW5ndGgKICAgICAvLyBhYnNsOjpzdHJpbmdfdmlldyByZWZl
cnJpbmcgdG8gdGhlIGl0ZW0gYXQgcG9zaXRpb24gMSBwYXN0IHBvcy4KLSAgICByZXR1cm4gYWJz
bDo6c3RyaW5nX3ZpZXcodGV4dC5iZWdpbigpICsgcG9zICsgMSwgMCk7CisgICAgcmV0dXJuIGFi
c2w6OnN0cmluZ192aWV3KHRleHQuZGF0YSgpICsgcG9zICsgMSwgMCk7CiAgIH0KICAgc2l6ZV90
IGZvdW5kX3BvcyA9IGFic2w6OnN0cmluZ192aWV3OjpucG9zOwotICBhYnNsOjpzdHJpbmdfdmll
dyBmb3VuZCh0ZXh0LmVuZCgpLCAwKTsgIC8vIEJ5IGRlZmF1bHQsIG5vdCBmb3VuZAorICBhYnNs
OjpzdHJpbmdfdmlldyBmb3VuZCh0ZXh0LmRhdGEoKSArIHRleHQuc2l6ZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAwKTsgIC8vIEJ5IGRlZmF1bHQsIG5vdCBmb3VuZAogICBmb3VuZF9w
b3MgPSBmaW5kX3BvbGljeS5GaW5kKHRleHQsIGRlbGltaXRlciwgcG9zKTsKICAgaWYgKGZvdW5k
X3BvcyAhPSBhYnNsOjpzdHJpbmdfdmlldzo6bnBvcykgewogICAgIGZvdW5kID0gYWJzbDo6c3Ry
aW5nX3ZpZXcodGV4dC5kYXRhKCkgKyBmb3VuZF9wb3MsCkBAIC04Nyw3ICs4OCw3IEBAIGFic2w6
OnN0cmluZ192aWV3IEJ5U3RyaW5nOjpGaW5kKGFic2w6OnN0cmluZ192aWV3IHRleHQsIHNpemVf
dCBwb3MpIGNvbnN0IHsKICAgICAvLyBhYnNsOjpzdHJpbmdfdmlldy4KICAgICBzaXplX3QgZm91
bmRfcG9zID0gdGV4dC5maW5kKGRlbGltaXRlcl9bMF0sIHBvcyk7CiAgICAgaWYgKGZvdW5kX3Bv
cyA9PSBhYnNsOjpzdHJpbmdfdmlldzo6bnBvcykKLSAgICAgIHJldHVybiBhYnNsOjpzdHJpbmdf
dmlldyh0ZXh0LmVuZCgpLCAwKTsKKyAgICAgIHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyh0ZXh0
LmRhdGEoKSArIHRleHQuc2l6ZSgpLCAwKTsKICAgICByZXR1cm4gdGV4dC5zdWJzdHIoZm91bmRf
cG9zLCAxKTsKICAgfQogICByZXR1cm4gR2VuZXJpY0ZpbmQodGV4dCwgZGVsaW1pdGVyXywgcG9z
LCBMaXRlcmFsUG9saWN5KCkpOwpAQCAtMTAwLDcgKzEwMSw3IEBAIGFic2w6OnN0cmluZ192aWV3
IEJ5U3RyaW5nOjpGaW5kKGFic2w6OnN0cmluZ192aWV3IHRleHQsIHNpemVfdCBwb3MpIGNvbnN0
IHsKIGFic2w6OnN0cmluZ192aWV3IEJ5Q2hhcjo6RmluZChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0
LCBzaXplX3QgcG9zKSBjb25zdCB7CiAgIHNpemVfdCBmb3VuZF9wb3MgPSB0ZXh0LmZpbmQoY18s
IHBvcyk7CiAgIGlmIChmb3VuZF9wb3MgPT0gYWJzbDo6c3RyaW5nX3ZpZXc6Om5wb3MpCi0gICAg
cmV0dXJuIGFic2w6OnN0cmluZ192aWV3KHRleHQuZW5kKCksIDApOworICAgIHJldHVybiBhYnNs
OjpzdHJpbmdfdmlldyh0ZXh0LmRhdGEoKSArIHRleHQuc2l6ZSgpLCAwKTsKICAgcmV0dXJuIHRl
eHQuc3Vic3RyKGZvdW5kX3BvcywgMSk7CiB9CiAKQEAgLTEyOCw5ICsxMjksOSBAQCBhYnNsOjpz
dHJpbmdfdmlldyBCeUxlbmd0aDo6RmluZChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LAogICAvLyBJ
ZiB0aGUgc3RkOjpzdHJpbmcgaXMgc2hvcnRlciB0aGFuIHRoZSBjaHVuayBzaXplIHdlIHNheSB3
ZQogICAvLyAiY2FuJ3QgZmluZCB0aGUgZGVsaW1pdGVyIiBzbyB0aGlzIHdpbGwgYmUgdGhlIGxh
c3QgY2h1bmsuCiAgIGlmIChzdWJzdHIubGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihs
ZW5ndGhfKSkKLSAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcodGV4dC5lbmQoKSwgMCk7Cisg
ICAgcmV0dXJuIGFic2w6OnN0cmluZ192aWV3KHRleHQuZGF0YSgpICsgdGV4dC5zaXplKCksIDAp
OwogCi0gIHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyhzdWJzdHIuYmVnaW4oKSArIGxlbmd0aF8s
IDApOworICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcoc3Vic3RyLmRhdGEoKSArIGxlbmd0aF8s
IDApOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdHJfc3BsaXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmgKaW5kZXggOWE3YmUyYjA1
MzQ0MjU4NzJjMjVlOTg2YWViYzIxZGI3ZTdmYjc1Ni4uYzdlYjI4MGM0MTEzMGFiODZlMzQzMzY5
YzdlNWZjOTBjZDY5ZGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5oCkBAIC0xOSwxMyArMTksMTMgQEAKIC8vCiAv
LyBUaGlzIGZpbGUgY29udGFpbnMgZnVuY3Rpb25zIGZvciBzcGxpdHRpbmcgc3RyaW5ncy4gSXQg
ZGVmaW5lcyB0aGUgbWFpbgogLy8gYFN0clNwbGl0KClgIGZ1bmN0aW9uLCBzZXZlcmFsIGRlbGlt
aXRlcnMgZm9yIGRldGVybWluaW5nIHRoZSBib3VuZGFyaWVzIG9uCi0vLyB3aGljaCB0byBzcGxp
dCB0aGUgc3RkOjpzdHJpbmcsIGFuZCBwcmVkaWNhdGVzIGZvciBmaWx0ZXJpbmcgZGVsaW1pdGVk
IHJlc3VsdHMuCisvLyB3aGljaCB0byBzcGxpdCB0aGUgc3RyaW5nLCBhbmQgcHJlZGljYXRlcyBm
b3IgZmlsdGVyaW5nIGRlbGltaXRlZCByZXN1bHRzLgogLy8gYFN0clNwbGl0KClgIGFkYXB0cyB0
aGUgcmV0dXJuZWQgY29sbGVjdGlvbiB0byB0aGUgdHlwZSBzcGVjaWZpZWQgYnkgdGhlCiAvLyBj
YWxsZXIuCiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIC8vIFNwbGl0cyB0aGUgZ2l2ZW4gc3Rk
OjpzdHJpbmcgb24gY29tbWFzLiBSZXR1cm5zIHRoZSByZXN1bHRzIGluIGEKKy8vICAgLy8gU3Bs
aXRzIHRoZSBnaXZlbiBzdHJpbmcgb24gY29tbWFzLiBSZXR1cm5zIHRoZSByZXN1bHRzIGluIGEK
IC8vICAgLy8gdmVjdG9yIG9mIHN0cmluZ3MuCiAvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiB2ID0gYWJzbDo6U3RyU3BsaXQoImEsYixjIiwgJywnKTsKIC8vICAgLy8gQ2FuIGFsc28gdXNl
ICIsIgpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogLy8KIC8vIGBTdHJTcGxpdCgpYCB1c2VzIGRlbGltaXRlcnMgdG8gZGVmaW5lIHRo
ZSBib3VuZGFyaWVzIGJldHdlZW4gZWxlbWVudHMgaW4gdGhlCi0vLyBwcm92aWRlZCBpbnB1dC4g
U2V2ZXJhbCBgRGVsaW1pdGVyYCB0eXBlcyBhcmUgZGVmaW5lZCBiZWxvdy4gSWYgYSBzdGQ6OnN0
cmluZworLy8gcHJvdmlkZWQgaW5wdXQuIFNldmVyYWwgYERlbGltaXRlcmAgdHlwZXMgYXJlIGRl
ZmluZWQgYmVsb3cuIElmIGEgc3RyaW5nCiAvLyAoYGNvbnN0IGNoYXIqYCwgYHN0ZDo6c3RyaW5n
YCwgb3IgYGFic2w6OnN0cmluZ192aWV3YCkgaXMgcGFzc2VkIGluIHBsYWNlIG9mCiAvLyBhbiBl
eHBsaWNpdCBgRGVsaW1pdGVyYCBvYmplY3QsIGBTdHJTcGxpdCgpYCB0cmVhdHMgaXQgdGhlIHNh
bWUgd2F5IGFzIGlmIGl0CiAvLyB3ZXJlIHBhc3NlZCBhIGBCeVN0cmluZ2AgZGVsaW1pdGVyLgpA
QCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLwogLy8gVGhlIGZvbGxvd2luZyBg
RGVsaW1pdGVyYCB0eXBlcyBhcmUgYXZhaWxhYmxlIGZvciB1c2Ugd2l0aGluIGBTdHJTcGxpdCgp
YDoKIC8vCi0vLyAgIC0gYEJ5U3RyaW5nYCAoZGVmYXVsdCBmb3Igc3RkOjpzdHJpbmcgYXJndW1l
bnRzKQorLy8gICAtIGBCeVN0cmluZ2AgKGRlZmF1bHQgZm9yIHN0cmluZyBhcmd1bWVudHMpCiAv
LyAgIC0gYEJ5Q2hhcmAgKGRlZmF1bHQgZm9yIGEgY2hhciBhcmd1bWVudCkKIC8vICAgLSBgQnlB
bnlDaGFyYAogLy8gICAtIGBCeUxlbmd0aGAKQEAgLTc2LDE1ICs3NiwxNSBAQCBuYW1lc3BhY2Ug
YWJzbCB7CiAvLyBiZSBzcGxpdCBhbmQgdGhlIHBvc2l0aW9uIHRvIGJlZ2luIHNlYXJjaGluZyBm
b3IgdGhlIG5leHQgZGVsaW1pdGVyIGluIHRoZQogLy8gaW5wdXQgdGV4dC4gVGhlIHJldHVybmVk
IGFic2w6OnN0cmluZ192aWV3IHNob3VsZCByZWZlciB0byB0aGUgbmV4dAogLy8gb2NjdXJyZW5j
ZSAoYWZ0ZXIgcG9zKSBvZiB0aGUgcmVwcmVzZW50ZWQgZGVsaW1pdGVyOyB0aGlzIHJldHVybmVk
Ci0vLyBhYnNsOjpzdHJpbmdfdmlldyByZXByZXNlbnRzIHRoZSBuZXh0IGxvY2F0aW9uIHdoZXJl
IHRoZSBpbnB1dCBzdGQ6OnN0cmluZyBzaG91bGQKKy8vIGFic2w6OnN0cmluZ192aWV3IHJlcHJl
c2VudHMgdGhlIG5leHQgbG9jYXRpb24gd2hlcmUgdGhlIGlucHV0IHN0cmluZyBzaG91bGQKIC8v
IGJlIGJyb2tlbi4gVGhlIHJldHVybmVkIGFic2w6OnN0cmluZ192aWV3IG1heSBiZSB6ZXJvLWxl
bmd0aCBpZiB0aGUgRGVsaW1pdGVyCi0vLyBkb2VzIG5vdCByZXByZXNlbnQgYSBwYXJ0IG9mIHRo
ZSBzdGQ6OnN0cmluZyAoZS5nLiwgYSBmaXhlZC1sZW5ndGggZGVsaW1pdGVyKS4gSWYKKy8vIGRv
ZXMgbm90IHJlcHJlc2VudCBhIHBhcnQgb2YgdGhlIHN0cmluZyAoZS5nLiwgYSBmaXhlZC1sZW5n
dGggZGVsaW1pdGVyKS4gSWYKIC8vIG5vIGRlbGltaXRlciBpcyBmb3VuZCBpbiB0aGUgZ2l2ZW4g
dGV4dCwgYSB6ZXJvLWxlbmd0aCBhYnNsOjpzdHJpbmdfdmlldwogLy8gcmVmZXJyaW5nIHRvIHRl
eHQuZW5kKCkgc2hvdWxkIGJlIHJldHVybmVkIChlLmcuLAogLy8gYWJzbDo6c3RyaW5nX3ZpZXco
dGV4dC5lbmQoKSwgMCkpLiBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgcmV0dXJuZWQKIC8vIGFi
c2w6OnN0cmluZ192aWV3IGFsd2F5cyBiZSB3aXRoaW4gdGhlIGJvdW5kcyBvZiBpbnB1dCB0ZXh0
IGdpdmVuIGFzIGFuCi0vLyBhcmd1bWVudC0taXQgbXVzdCBub3QgcmVmZXIgdG8gYSBzdGQ6OnN0
cmluZyB0aGF0IGlzIHBoeXNpY2FsbHkgbG9jYXRlZCBvdXRzaWRlIG9mCi0vLyB0aGUgZ2l2ZW4g
c3RkOjpzdHJpbmcuCisvLyBhcmd1bWVudC0taXQgbXVzdCBub3QgcmVmZXIgdG8gYSBzdHJpbmcg
dGhhdCBpcyBwaHlzaWNhbGx5IGxvY2F0ZWQgb3V0c2lkZSBvZgorLy8gdGhlIGdpdmVuIHN0cmlu
Zy4KIC8vCiAvLyBUaGUgZm9sbG93aW5nIGV4YW1wbGUgaXMgYSBzaW1wbGUgRGVsaW1pdGVyIG9i
amVjdCB0aGF0IGlzIGNyZWF0ZWQgd2l0aCBhCiAvLyBzaW5nbGUgY2hhciBhbmQgd2lsbCBsb29r
IGZvciB0aGF0IGNoYXIgaW4gdGhlIHRleHQgcGFzc2VkIHRvIHRoZSBGaW5kKCkKQEAgLTEwNCwx
MyArMTA0LDEzIEBAIG5hbWVzcGFjZSBhYnNsIHsKIAogLy8gQnlTdHJpbmcKIC8vCi0vLyBBIHN1
Yi1zdGQ6OnN0cmluZyBkZWxpbWl0ZXIuIElmIGBTdHJTcGxpdCgpYCBpcyBwYXNzZWQgYSBzdGQ6
OnN0cmluZyBpbiBwbGFjZSBvZiBhCi0vLyBgRGVsaW1pdGVyYCBvYmplY3QsIHRoZSBzdGQ6OnN0
cmluZyB3aWxsIGJlIGltcGxpY2l0bHkgY29udmVydGVkIGludG8gYQorLy8gQSBzdWItc3RyaW5n
IGRlbGltaXRlci4gSWYgYFN0clNwbGl0KClgIGlzIHBhc3NlZCBhIHN0cmluZyBpbiBwbGFjZSBv
ZiBhCisvLyBgRGVsaW1pdGVyYCBvYmplY3QsIHRoZSBzdHJpbmcgd2lsbCBiZSBpbXBsaWNpdGx5
IGNvbnZlcnRlZCBpbnRvIGEKIC8vIGBCeVN0cmluZ2AgZGVsaW1pdGVyLgogLy8KIC8vIEV4YW1w
bGU6CiAvLwotLy8gICAvLyBCZWNhdXNlIGEgc3RkOjpzdHJpbmcgbGl0ZXJhbCBpcyBjb252ZXJ0
ZWQgdG8gYW4gYGFic2w6OkJ5U3RyaW5nYCwKKy8vICAgLy8gQmVjYXVzZSBhIHN0cmluZyBsaXRl
cmFsIGlzIGNvbnZlcnRlZCB0byBhbiBgYWJzbDo6QnlTdHJpbmdgLAogLy8gICAvLyB0aGUgZm9s
bG93aW5nIHR3byBzcGxpdHMgYXJlIGVxdWl2YWxlbnQuCiAvLwogLy8gICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gdjEgPSBhYnNsOjpTdHJTcGxpdCgiYSwgYiwgYyIsICIsICIpOwpAQCAtMTMx
LDcgKzEzMSw3IEBAIGNsYXNzIEJ5U3RyaW5nIHsKIC8vIEJ5Q2hhcgogLy8KIC8vIEEgc2luZ2xl
IGNoYXJhY3RlciBkZWxpbWl0ZXIuIGBCeUNoYXJgIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50
IHRvIGEKLS8vIDEtY2hhciBzdGQ6OnN0cmluZyB3aXRoaW4gYSBgQnlTdHJpbmdgIGRlbGltaXRl
ciwgYnV0IHNsaWdodGx5IG1vcmUKKy8vIDEtY2hhciBzdHJpbmcgd2l0aGluIGEgYEJ5U3RyaW5n
YCBkZWxpbWl0ZXIsIGJ1dCBzbGlnaHRseSBtb3JlCiAvLyBlZmZpY2llbnQuCiAvLwogLy8gRXhh
bXBsZToKQEAgLTE2NCw5ICsxNjQsOSBAQCBjbGFzcyBCeUNoYXIgewogLy8gQnlBbnlDaGFyCiAv
LwogLy8gQSBkZWxpbWl0ZXIgdGhhdCB3aWxsIG1hdGNoIGFueSBvZiB0aGUgZ2l2ZW4gYnl0ZS1z
aXplZCBjaGFyYWN0ZXJzIHdpdGhpbgotLy8gaXRzIHByb3ZpZGVkIHN0ZDo6c3RyaW5nLgorLy8g
aXRzIHByb3ZpZGVkIHN0cmluZy4KIC8vCi0vLyBOb3RlOiB0aGlzIGRlbGltaXRlciB3b3JrcyB3
aXRoIHNpbmdsZS1ieXRlIHN0ZDo6c3RyaW5nIGRhdGEsIGJ1dCBkb2VzIG5vdCB3b3JrCisvLyBO
b3RlOiB0aGlzIGRlbGltaXRlciB3b3JrcyB3aXRoIHNpbmdsZS1ieXRlIHN0cmluZyBkYXRhLCBi
dXQgZG9lcyBub3Qgd29yawogLy8gd2l0aCB2YXJpYWJsZS13aWR0aCBlbmNvZGluZ3MsIHN1Y2gg
YXMgVVRGLTguCiAvLwogLy8gRXhhbXBsZToKQEAgLTE3NSw4ICsxNzUsOCBAQCBjbGFzcyBCeUNo
YXIgewogLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IGFic2w6OlN0clNwbGl0KCJh
LGI9YyIsIEJ5QW55Q2hhcigiLD0iKSk7CiAvLyAgIC8vIHZbMF0gPT0gImEiLCB2WzFdID09ICJi
IiwgdlsyXSA9PSAiYyIKIC8vCi0vLyBJZiBgQnlBbnlDaGFyYCBpcyBnaXZlbiB0aGUgZW1wdHkg
c3RkOjpzdHJpbmcsIGl0IGJlaGF2ZXMgZXhhY3RseSBsaWtlCi0vLyBgQnlTdHJpbmdgIGFuZCBt
YXRjaGVzIGVhY2ggaW5kaXZpZHVhbCBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0IHN0ZDo6c3RyaW5n
LgorLy8gSWYgYEJ5QW55Q2hhcmAgaXMgZ2l2ZW4gdGhlIGVtcHR5IHN0cmluZywgaXQgYmVoYXZl
cyBleGFjdGx5IGxpa2UKKy8vIGBCeVN0cmluZ2AgYW5kIG1hdGNoZXMgZWFjaCBpbmRpdmlkdWFs
IGNoYXJhY3RlciBpbiB0aGUgaW5wdXQgc3RyaW5nLgogLy8KIGNsYXNzIEJ5QW55Q2hhciB7CiAg
cHVibGljOgpAQCAtMTkyLDcgKzE5Miw3IEBAIGNsYXNzIEJ5QW55Q2hhciB7CiAvLyBBIGRlbGlt
aXRlciBmb3Igc3BsaXR0aW5nIGludG8gZXF1YWwtbGVuZ3RoIHN0cmluZ3MuIFRoZSBsZW5ndGgg
YXJndW1lbnQgdG8KIC8vIHRoZSBjb25zdHJ1Y3RvciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLgog
Ly8KLS8vIE5vdGU6IHRoaXMgZGVsaW1pdGVyIHdvcmtzIHdpdGggc2luZ2xlLWJ5dGUgc3RkOjpz
dHJpbmcgZGF0YSwgYnV0IGRvZXMgbm90IHdvcmsKKy8vIE5vdGU6IHRoaXMgZGVsaW1pdGVyIHdv
cmtzIHdpdGggc2luZ2xlLWJ5dGUgc3RyaW5nIGRhdGEsIGJ1dCBkb2VzIG5vdCB3b3JrCiAvLyB3
aXRoIHZhcmlhYmxlLXdpZHRoIGVuY29kaW5ncywgc3VjaCBhcyBVVEYtOC4KIC8vCiAvLyBFeGFt
cGxlOgpAQCAtMjAyLDcgKzIwMiw3IEBAIGNsYXNzIEJ5QW55Q2hhciB7CiAKIC8vICAgLy8gdlsw
XSA9PSAiMTIzIiwgdlsxXSA9PSAiNDU2IiwgdlsyXSA9PSAiNzg5IgogLy8KLS8vIE5vdGUgdGhh
dCB0aGUgc3RkOjpzdHJpbmcgZG9lcyBub3QgaGF2ZSB0byBiZSBhIG11bHRpcGxlIG9mIHRoZSBm
aXhlZCBzcGxpdAorLy8gTm90ZSB0aGF0IHRoZSBzdHJpbmcgZG9lcyBub3QgaGF2ZSB0byBiZSBh
IG11bHRpcGxlIG9mIHRoZSBmaXhlZCBzcGxpdAogLy8gbGVuZ3RoLiBJbiBzdWNoIGEgY2FzZSwg
dGhlIGxhc3Qgc3Vic3RyaW5nIHdpbGwgYmUgc2hvcnRlci4KIC8vCiAvLyAgIHVzaW5nIGFic2w6
OkJ5TGVuZ3RoOwpAQCAtMjIzLDkgKzIyMyw5IEBAIG5hbWVzcGFjZSBzdHJpbmdzX2ludGVybmFs
IHsKIC8vIEEgdHJhaXRzLWxpa2UgbWV0YWZ1bmN0aW9uIGZvciBzZWxlY3RpbmcgdGhlIGRlZmF1
bHQgRGVsaW1pdGVyIG9iamVjdCB0eXBlCiAvLyBmb3IgYSBwYXJ0aWN1bGFyIERlbGltaXRlciB0
eXBlLiBUaGUgYmFzZSBjYXNlIHNpbXBseSBleHBvc2VzIHR5cGUgRGVsaW1pdGVyCiAvLyBpdHNl
bGYgYXMgdGhlIGRlbGltaXRlcidzIFR5cGUuIEhvd2V2ZXIsIHRoZXJlIGFyZSBzcGVjaWFsaXph
dGlvbnMgZm9yCi0vLyBzdGQ6OnN0cmluZy1saWtlIG9iamVjdHMgdGhhdCBtYXAgdGhlbSB0byB0
aGUgQnlTdHJpbmcgZGVsaW1pdGVyIG9iamVjdC4KKy8vIHN0cmluZy1saWtlIG9iamVjdHMgdGhh
dCBtYXAgdGhlbSB0byB0aGUgQnlTdHJpbmcgZGVsaW1pdGVyIG9iamVjdC4KIC8vIFRoaXMgYWxs
b3dzIGZ1bmN0aW9ucyBsaWtlIGFic2w6OlN0clNwbGl0KCkgYW5kIGFic2w6Ok1heFNwbGl0cygp
IHRvIGFjY2VwdAotLy8gc3RkOjpzdHJpbmctbGlrZSBvYmplY3RzIChlLmcuLCAnLCcpIGFzIGRl
bGltaXRlciBhcmd1bWVudHMgYnV0IHRoZXkgd2lsbCBiZQorLy8gc3RyaW5nLWxpa2Ugb2JqZWN0
cyAoZS5nLiwgJywnKSBhcyBkZWxpbWl0ZXIgYXJndW1lbnRzIGJ1dCB0aGV5IHdpbGwgYmUKIC8v
IHRyZWF0ZWQgYXMgaWYgYSBCeVN0cmluZyBkZWxpbWl0ZXIgd2FzIGdpdmVuLgogdGVtcGxhdGUg
PHR5cGVuYW1lIERlbGltaXRlcj4KIHN0cnVjdCBTZWxlY3REZWxpbWl0ZXIgewpAQCAtMjYxLDcg
KzI2MSw4IEBAIGNsYXNzIE1heFNwbGl0c0ltcGwgewogICAgICAgOiBkZWxpbWl0ZXJfKGRlbGlt
aXRlciksIGxpbWl0XyhsaW1pdCksIGNvdW50XygwKSB7fQogICBhYnNsOjpzdHJpbmdfdmlldyBG
aW5kKGFic2w6OnN0cmluZ192aWV3IHRleHQsIHNpemVfdCBwb3MpIHsKICAgICBpZiAoY291bnRf
KysgPT0gbGltaXRfKSB7Ci0gICAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcodGV4dC5lbmQo
KSwgMCk7ICAvLyBObyBtb3JlIG1hdGNoZXMuCisgICAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3Zp
ZXcodGV4dC5kYXRhKCkgKyB0ZXh0LnNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwKTsgIC8vIE5vIG1vcmUgbWF0Y2hlcy4KICAgICB9CiAgICAgcmV0dXJuIGRlbGltaXRl
cl8uRmluZCh0ZXh0LCBwb3MpOwogICB9CkBAIC0zMzEsNyArMzMyLDcgQEAgc3RydWN0IEFsbG93
RW1wdHkgewogLy8gU2tpcEVtcHR5KCkKIC8vCiAvLyBSZXR1cm5zIGBmYWxzZWAgaWYgdGhlIGdp
dmVuIGBhYnNsOjpzdHJpbmdfdmlld2AgaXMgZW1wdHksIGluZGljYXRpbmcgdGhhdAotLy8gYFN0
clNwbGl0KClgIHNob3VsZCBvbWl0IHRoZSBlbXB0eSBzdGQ6OnN0cmluZy4KKy8vIGBTdHJTcGxp
dCgpYCBzaG91bGQgb21pdCB0aGUgZW1wdHkgc3RyaW5nLgogLy8KIC8vIEV4YW1wbGU6CiAvLwpA
QCAtMzM5LDcgKzM0MCw3IEBAIHN0cnVjdCBBbGxvd0VtcHR5IHsKIC8vCiAvLyAgIC8vIHZbMF0g
PT0gImEiLCB2WzFdID09ICJiIgogLy8KLS8vIE5vdGU6IGBTa2lwRW1wdHkoKWAgZG9lcyBub3Qg
Y29uc2lkZXIgYSBzdGQ6OnN0cmluZyBjb250YWluaW5nIG9ubHkgd2hpdGVzcGFjZQorLy8gTm90
ZTogYFNraXBFbXB0eSgpYCBkb2VzIG5vdCBjb25zaWRlciBhIHN0cmluZyBjb250YWluaW5nIG9u
bHkgd2hpdGVzcGFjZQogLy8gdG8gYmUgZW1wdHkuIFRvIHNraXAgc3VjaCB3aGl0ZXNwYWNlIGFz
IHdlbGwsIHVzZSB0aGUgYFNraXBXaGl0ZXNwYWNlKClgCiAvLyBwcmVkaWNhdGUuCiBzdHJ1Y3Qg
U2tpcEVtcHR5IHsKQEAgLTM0OSw3ICszNTAsNyBAQCBzdHJ1Y3QgU2tpcEVtcHR5IHsKIC8vIFNr
aXBXaGl0ZXNwYWNlKCkKIC8vCiAvLyBSZXR1cm5zIGBmYWxzZWAgaWYgdGhlIGdpdmVuIGBhYnNs
OjpzdHJpbmdfdmlld2AgaXMgZW1wdHkgKm9yKiBjb250YWlucyBvbmx5Ci0vLyB3aGl0ZXNwYWNl
LCBpbmRpY2F0aW5nIHRoYXQgYFN0clNwbGl0KClgIHNob3VsZCBvbWl0IHRoZSBzdGQ6OnN0cmlu
Zy4KKy8vIHdoaXRlc3BhY2UsIGluZGljYXRpbmcgdGhhdCBgU3RyU3BsaXQoKWAgc2hvdWxkIG9t
aXQgdGhlIHN0cmluZy4KIC8vCiAvLyBFeGFtcGxlOgogLy8KQEAgLTM3Myw3ICszNzQsNyBAQCBz
dHJ1Y3QgU2tpcFdoaXRlc3BhY2UgewogCiAvLyBTdHJTcGxpdCgpCiAvLwotLy8gU3BsaXRzIGEg
Z2l2ZW4gc3RkOjpzdHJpbmcgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGBEZWxpbWl0ZXJgIG9iamVj
dCwgcmV0dXJuaW5nIHRoZQorLy8gU3BsaXRzIGEgZ2l2ZW4gc3RyaW5nIGJhc2VkIG9uIHRoZSBw
cm92aWRlZCBgRGVsaW1pdGVyYCBvYmplY3QsIHJldHVybmluZyB0aGUKIC8vIGVsZW1lbnRzIHdp
dGhpbiB0aGUgdHlwZSBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlci4gT3B0aW9uYWxseSwgeW91IG1h
eSBwYXNzIGEKIC8vIGBQcmVkaWNhdGVgIHRvIGBTdHJTcGxpdCgpYCBpbmRpY2F0aW5nIHdoZXRo
ZXIgdG8gaW5jbHVkZSBvciBleGNsdWRlIHRoZQogLy8gcmVzdWx0aW5nIGVsZW1lbnQgd2l0aGlu
IHRoZSBmaW5hbCByZXN1bHQgc2V0LiAoU2VlIHRoZSBvdmVydmlld3MgZm9yCkBAIC00MTIsNyAr
NDEzLDcgQEAgc3RydWN0IFNraXBXaGl0ZXNwYWNlIHsKIC8vCiAvLyBUaGUgYFN0clNwbGl0KClg
IGZ1bmN0aW9uIGFkYXB0cyB0aGUgcmV0dXJuZWQgY29sbGVjdGlvbiB0byB0aGUgY29sbGVjdGlv
bgogLy8gc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIgKGUuZy4gYHN0ZDo6dmVjdG9yYCBhYm92ZSku
IFRoZSByZXR1cm5lZCBjb2xsZWN0aW9ucwotLy8gbWF5IGNvbnRhaW4gYHN0cmluZ2AsIGBhYnNs
OjpzdHJpbmdfdmlld2AgKGluIHdoaWNoIGNhc2UgdGhlIG9yaWdpbmFsIHN0ZDo6c3RyaW5nCisv
LyBtYXkgY29udGFpbiBgc3RyaW5nYCwgYGFic2w6OnN0cmluZ192aWV3YCAoaW4gd2hpY2ggY2Fz
ZSB0aGUgb3JpZ2luYWwgc3RyaW5nCiAvLyBiZWluZyBzcGxpdCBtdXN0IGVuc3VyZSB0aGF0IGl0
IG91dGxpdmVzIHRoZSBjb2xsZWN0aW9uKSwgb3IgYW55IG9iamVjdCB0aGF0CiAvLyBjYW4gYmUg
ZXhwbGljaXRseSBjcmVhdGVkIGZyb20gYW4gYGFic2w6OnN0cmluZ192aWV3YC4gVGhpcyBiZWhh
dmlvciB3b3JrcwogLy8gZm9yOgpAQCAtNDI0LDcgKzQyNSw3IEBAIHN0cnVjdCBTa2lwV2hpdGVz
cGFjZSB7CiAvLyBFeGFtcGxlOgogLy8KIC8vICAgLy8gVGhlIHJlc3VsdHMgYXJlIHJldHVybmVk
IGFzIGBhYnNsOjpzdHJpbmdfdmlld2Agb2JqZWN0cy4gTm90ZSB0aGF0IHdlCi0vLyAgIC8vIGhh
dmUgdG8gZW5zdXJlIHRoYXQgdGhlIGlucHV0IHN0ZDo6c3RyaW5nIG91dGxpdmVzIGFueSByZXN1
bHRzLgorLy8gICAvLyBoYXZlIHRvIGVuc3VyZSB0aGF0IHRoZSBpbnB1dCBzdHJpbmcgb3V0bGl2
ZXMgYW55IHJlc3VsdHMuCiAvLyAgIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PiB2ID0g
YWJzbDo6U3RyU3BsaXQoImEsYixjIiwgJywnKTsKIC8vCiAvLyAgIC8vIFN0b3JlcyByZXN1bHRz
IGluIGEgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+LCB3aGljaCBhbHNvIHBlcmZvcm1zCkBAIC00NDQs
NyArNDQ1LDcgQEAgc3RydWN0IFNraXBXaGl0ZXNwYWNlIHsKIC8vICAgLy8gaXMgcHJvdmlkZWQg
YXMgYSBzZXJpZXMgb2Yga2V5L3ZhbHVlIHBhaXJzLiBGb3IgZXhhbXBsZSwgdGhlIDB0aCBlbGVt
ZW50CiAvLyAgIC8vIHJlc3VsdGluZyBmcm9tIHRoZSBzcGxpdCB3aWxsIGJlIHN0b3JlZCBhcyBh
IGtleSB0byB0aGUgMXN0IGVsZW1lbnQuIElmCiAvLyAgIC8vIGFuIG9kZCBudW1iZXIgb2YgZWxl
bWVudHMgYXJlIHJlc29sdmVkLCB0aGUgbGFzdCBlbGVtZW50IGlzIHBhaXJlZCB3aXRoCi0vLyAg
IC8vIGEgZGVmYXVsdC1jb25zdHJ1Y3RlZCB2YWx1ZSAoZS5nLiwgZW1wdHkgc3RkOjpzdHJpbmcp
LgorLy8gICAvLyBhIGRlZmF1bHQtY29uc3RydWN0ZWQgdmFsdWUgKGUuZy4sIGVtcHR5IHN0cmlu
ZykuCiAvLyAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gbSA9IGFic2w6OlN0
clNwbGl0KCJhLGIsYyIsICcsJyk7CiAvLyAgIC8vIG1bImEiXSA9PSAiYiIsIG1bImMiXSA9PSAi
IiAgICAgLy8gbGFzdCBjb21wb25lbnQgdmFsdWUgZXF1YWxzICIiCiAvLwpAQCAtNDUyLDE0ICs0
NTMsMTQgQEAgc3RydWN0IFNraXBXaGl0ZXNwYWNlIHsKIC8vIGVsZW1lbnRzIGFuZCBpcyBub3Qg
YSBjb2xsZWN0aW9uIHR5cGUuIFdoZW4gc3BsaXR0aW5nIHRvIGEgYHN0ZDo6cGFpcmAgdGhlCiAv
LyBmaXJzdCB0d28gc3BsaXQgc3RyaW5ncyBiZWNvbWUgdGhlIGBzdGQ6OnBhaXJgIGAuZmlyc3Rg
IGFuZCBgLnNlY29uZGAKIC8vIG1lbWJlcnMsIHJlc3BlY3RpdmVseS4gVGhlIHJlbWFpbmluZyBz
cGxpdCBzdWJzdHJpbmdzIGFyZSBkaXNjYXJkZWQuIElmIHRoZXJlCi0vLyBhcmUgbGVzcyB0aGFu
IHR3byBzcGxpdCBzdWJzdHJpbmdzLCB0aGUgZW1wdHkgc3RkOjpzdHJpbmcgaXMgdXNlZCBmb3Ig
dGhlCisvLyBhcmUgbGVzcyB0aGFuIHR3byBzcGxpdCBzdWJzdHJpbmdzLCB0aGUgZW1wdHkgc3Ry
aW5nIGlzIHVzZWQgZm9yIHRoZQogLy8gY29ycmVzcG9uZGluZwogLy8gYHN0ZDo6cGFpcmAgbWVt
YmVyLgogLy8KIC8vIEV4YW1wbGU6CiAvLwogLy8gICAvLyBTdG9yZXMgZmlyc3QgdHdvIHNwbGl0
IHN0cmluZ3MgYXMgdGhlIG1lbWJlcnMgaW4gYSBzdGQ6OnBhaXIuCi0vLyAgIHN0ZDo6cGFpcjxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IHAgPSBhYnNsOjpTdHJTcGxpdCgiYSxiLGMiLCAnLCcp
OworLy8gICBzdGQ6OnBhaXI8c3RyaW5nLCBzdHJpbmc+IHAgPSBhYnNsOjpTdHJTcGxpdCgiYSxi
LGMiLCAnLCcpOwogLy8gICAvLyBwLmZpcnN0ID09ICJhIiwgcC5zZWNvbmQgPT0gImIiICAgICAg
IC8vICJjIiBpcyBvbWl0dGVkLgogLy8KIC8vIFRoZSBgU3RyU3BsaXQoKWAgZnVuY3Rpb24gY2Fu
IGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgdG8gcGVyZm9ybSBtb3JlCkBAIC00NjcsOSArNDY4LDkg
QEAgc3RydWN0IFNraXBXaGl0ZXNwYWNlIHsKIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgLy8g
VGhlIGlucHV0IHN0ZDo6c3RyaW5nICJhPWI9YyxkPWUsZj0sZyIgYmVjb21lcworLy8gICAvLyBU
aGUgaW5wdXQgc3RyaW5nICJhPWI9YyxkPWUsZj0sZyIgYmVjb21lcwogLy8gICAvLyB7ICJhIiA9
PiAiYj1jIiwgImQiID0+ICJlIiwgImYiID0+ICIiLCAiZyIgPT4gIiIgfQotLy8gICBzdGQ6Om1h
cDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG07CisvLyAgIHN0ZDo6bWFwPHN0cmluZywgc3Ry
aW5nPiBtOwogLy8gICBmb3IgKGFic2w6OnN0cmluZ192aWV3IHNwIDogYWJzbDo6U3RyU3BsaXQo
ImE9Yj1jLGQ9ZSxmPSxnIiwgJywnKSkgewogLy8gICAgIG0uaW5zZXJ0KGFic2w6OlN0clNwbGl0
KHNwLCBhYnNsOjpNYXhTcGxpdHMoJz0nLCAxKSkpOwogLy8gICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cl9zcGxpdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXRfdGVz
dC5jYwppbmRleCAyOWE2ODA0N2M5OWFlZjMxYmM3ZDM2NzNhMzJiNzIyODU0MmM3OWEzLi40MTNh
ZDMxOGJmOWIyOTMzN2I3ZTg4Nzg4YTU1MGE5ZGIzZTUwZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL3N0cl9zcGxpdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0X3Rl
c3QuY2MKQEAgLTI3Niw3ICsyNzYsNyBAQCBURVNUKFNwbGl0SXRlcmF0b3IsIEJhc2ljcykgewog
ICBFWFBFQ1RfRVEoaXQsIGVuZCk7CiB9CiAKLS8vIFNpbXBsZSBQcmVkaWNhdGUgdG8gc2tpcCBh
IHBhcnRpY3VsYXIgc3RkOjpzdHJpbmcuCisvLyBTaW1wbGUgUHJlZGljYXRlIHRvIHNraXAgYSBw
YXJ0aWN1bGFyIHN0cmluZy4KIGNsYXNzIFNraXAgewogIHB1YmxpYzoKICAgZXhwbGljaXQgU2tp
cChjb25zdCBzdGQ6OnN0cmluZyYgcykgOiBzXyhzKSB7fQpAQCAtNzYzLDEyICs3NjMsMTIgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIERlbGltaXRlcj4KIHN0YXRpYyBib29sIElzRm91bmRBdFN0YXJ0
aW5nUG9zKGFic2w6OnN0cmluZ192aWV3IHRleHQsIERlbGltaXRlciBkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHN0YXJ0aW5nX3BvcywgaW50IGV4cGVjdGVkX3Bv
cykgewogICBhYnNsOjpzdHJpbmdfdmlldyBmb3VuZCA9IGQuRmluZCh0ZXh0LCBzdGFydGluZ19w
b3MpOwotICByZXR1cm4gZm91bmQuZGF0YSgpICE9IHRleHQuZW5kKCkgJiYKKyAgcmV0dXJuIGZv
dW5kLmRhdGEoKSAhPSB0ZXh0LmRhdGEoKSArIHRleHQuc2l6ZSgpICYmCiAgICAgICAgICBleHBl
Y3RlZF9wb3MgPT0gZm91bmQuZGF0YSgpIC0gdGV4dC5kYXRhKCk7CiB9CiAKIC8vIEhlbHBlciBm
dW5jdGlvbiBmb3IgdGVzdGluZyBEZWxpbWl0ZXIgb2JqZWN0cy4gUmV0dXJucyB0cnVlIGlmIHRo
ZSBnaXZlbgotLy8gRGVsaW1pdGVyIGlzIGZvdW5kIGluIHRoZSBnaXZlbiBzdGQ6OnN0cmluZyBh
dCB0aGUgZ2l2ZW4gcG9zaXRpb24uIFRoaXMgZnVuY3Rpb24KKy8vIERlbGltaXRlciBpcyBmb3Vu
ZCBpbiB0aGUgZ2l2ZW4gc3RyaW5nIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4gVGhpcyBmdW5jdGlv
bgogLy8gdGVzdHMgdHdvIGNhc2VzOgogLy8gICAxLiBUaGUgYWN0dWFsIHRleHQgZ2l2ZW4sIHN0
YXJpbmcgYXQgcG9zaXRpb24gMAogLy8gICAyLiBUaGUgdGV4dCBnaXZlbiB3aXRoIGxlYWRpbmcg
cGFkZGluZyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cmluZ192aWV3LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgKaW5kZXggMWI4Zjhh
Mzc0NzQ1Y2I2NDY2YjFjZDYyMjE5N2ZkYzJmNmRjZDlkNS4uZWM5ZjYyYmUxNTczM2UzY2RlODI1
NmRmMWNmYzUyMGMyMmUxMWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmll
dy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaApAQCAtMTksNyArMTksNyBAQAog
Ly8KIC8vIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYGFic2w6OnN0
cmluZ192aWV3YCBjbGFzcy4gQQogLy8gYHN0cmluZ192aWV3YCBwb2ludHMgdG8gYSBjb250aWd1
b3VzIHNwYW4gb2YgY2hhcmFjdGVycywgb2Z0ZW4gcGFydCBvciBhbGwgb2YKLS8vIGFub3RoZXIg
YHN0ZDo6c3RyaW5nYCwgZG91YmxlLXF1b3RlZCBzdGQ6OnN0cmluZyBsaXRlcmFsLCBjaGFyYWN0
ZXIgYXJyYXksIG9yIGV2ZW4KKy8vIGFub3RoZXIgYHN0ZDo6c3RyaW5nYCwgZG91YmxlLXF1b3Rl
ZCBzdHJpbmcgbGl0ZXJhbCwgY2hhcmFjdGVyIGFycmF5LCBvciBldmVuCiAvLyBhbm90aGVyIGBz
dHJpbmdfdmlld2AuCiAvLwogLy8gVGhpcyBgYWJzbDo6c3RyaW5nX3ZpZXdgIGFic3RyYWN0aW9u
IGlzIGRlc2lnbmVkIHRvIGJlIGEgZHJvcC1pbgpAQCAtNTYsMTUgKzU2LDE1IEBAIG5hbWVzcGFj
ZSBhYnNsIHsKIAogLy8gYWJzbDo6c3RyaW5nX3ZpZXcKIC8vCi0vLyBBIGBzdHJpbmdfdmlld2Ag
cHJvdmlkZXMgYSBsaWdodHdlaWdodCB2aWV3IGludG8gdGhlIHN0ZDo6c3RyaW5nIGRhdGEgcHJv
dmlkZWQgYnkKLS8vIGEgYHN0ZDo6c3RyaW5nYCwgZG91YmxlLXF1b3RlZCBzdGQ6OnN0cmluZyBs
aXRlcmFsLCBjaGFyYWN0ZXIgYXJyYXksIG9yIGV2ZW4KLS8vIGFub3RoZXIgYHN0cmluZ192aWV3
YC4gQSBgc3RyaW5nX3ZpZXdgIGRvZXMgKm5vdCogb3duIHRoZSBzdGQ6OnN0cmluZyB0byB3aGlj
aCBpdAorLy8gQSBgc3RyaW5nX3ZpZXdgIHByb3ZpZGVzIGEgbGlnaHR3ZWlnaHQgdmlldyBpbnRv
IHRoZSBzdHJpbmcgZGF0YSBwcm92aWRlZCBieQorLy8gYSBgc3RkOjpzdHJpbmdgLCBkb3VibGUt
cXVvdGVkIHN0cmluZyBsaXRlcmFsLCBjaGFyYWN0ZXIgYXJyYXksIG9yIGV2ZW4KKy8vIGFub3Ro
ZXIgYHN0cmluZ192aWV3YC4gQSBgc3RyaW5nX3ZpZXdgIGRvZXMgKm5vdCogb3duIHRoZSBzdHJp
bmcgdG8gd2hpY2ggaXQKIC8vIHBvaW50cywgYW5kIHRoYXQgZGF0YSBjYW5ub3QgYmUgbW9kaWZp
ZWQgdGhyb3VnaCB0aGUgdmlldy4KIC8vCiAvLyBZb3UgY2FuIHVzZSBgc3RyaW5nX3ZpZXdgIGFz
IGEgZnVuY3Rpb24gb3IgbWV0aG9kIHBhcmFtZXRlciBhbnl3aGVyZSBhCi0vLyBwYXJhbWV0ZXIg
Y2FuIHJlY2VpdmUgYSBkb3VibGUtcXVvdGVkIHN0ZDo6c3RyaW5nIGxpdGVyYWwsIGBjb25zdCBj
aGFyKmAsCisvLyBwYXJhbWV0ZXIgY2FuIHJlY2VpdmUgYSBkb3VibGUtcXVvdGVkIHN0cmluZyBs
aXRlcmFsLCBgY29uc3QgY2hhcipgLAogLy8gYHN0ZDo6c3RyaW5nYCwgb3IgYW5vdGhlciBgYWJz
bDo6c3RyaW5nX3ZpZXdgIGFyZ3VtZW50IHdpdGggbm8gbmVlZCB0byBjb3B5Ci0vLyB0aGUgc3Rk
OjpzdHJpbmcgZGF0YS4gU3lzdGVtYXRpYyB1c2Ugb2YgYHN0cmluZ192aWV3YCB3aXRoaW4gZnVu
Y3Rpb24gYXJndW1lbnRzCisvLyB0aGUgc3RyaW5nIGRhdGEuIFN5c3RlbWF0aWMgdXNlIG9mIGBz
dHJpbmdfdmlld2Agd2l0aGluIGZ1bmN0aW9uIGFyZ3VtZW50cwogLy8gcmVkdWNlcyBkYXRhIGNv
cGllcyBhbmQgYHN0cmxlbigpYCBjYWxscy4KIC8vCiAvLyBCZWNhdXNlIG9mIGl0cyBzbWFsbCBz
aXplLCBwcmVmZXIgcGFzc2luZyBgc3RyaW5nX3ZpZXdgIGJ5IHZhbHVlOgpAQCAtOTcsOCArOTcs
OCBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyBgc3RyaW5nX3ZpZXdgIHRoaXMgd2F5LCBpdCBpcyB5
b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBvYmplY3QKIC8vIHBvaW50ZWQg
dG8gYnkgdGhlIGBzdHJpbmdfdmlld2Agb3V0bGl2ZXMgdGhlIGBzdHJpbmdfdmlld2AuCiAvLwot
Ly8gQSBgc3RyaW5nX3ZpZXdgIG1heSByZXByZXNlbnQgYSB3aG9sZSBzdGQ6OnN0cmluZyBvciBq
dXN0IHBhcnQgb2YgYSBzdGQ6OnN0cmluZy4gRm9yCi0vLyBleGFtcGxlLCB3aGVuIHNwbGl0dGlu
ZyBhIHN0ZDo6c3RyaW5nLCBgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+YCBpcyBhCisv
LyBBIGBzdHJpbmdfdmlld2AgbWF5IHJlcHJlc2VudCBhIHdob2xlIHN0cmluZyBvciBqdXN0IHBh
cnQgb2YgYSBzdHJpbmcuIEZvcgorLy8gZXhhbXBsZSwgd2hlbiBzcGxpdHRpbmcgYSBzdHJpbmcs
IGBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz5gIGlzIGEKIC8vIG5hdHVyYWwgZGF0YSB0
eXBlIGZvciB0aGUgb3V0cHV0LgogLy8KIC8vCkBAIC0xNDEsNyArMTQxLDcgQEAgbmFtZXNwYWNl
IGFic2wgewogLy8gQWxsIGVtcHR5IGBzdHJpbmdfdmlld2Agb2JqZWN0cyB3aGV0aGVyIG51bGwg
b3Igbm90LCBhcmUgZXF1YWw6CiAvLwogLy8gICBhYnNsOjpzdHJpbmdfdmlldygpID09IGFic2w6
OnN0cmluZ192aWV3KCIiLCAwKQotLy8gICBhYnNsOjpzdHJpbmdfdmlldyhudWxscHRyLCAwKSA9
PSBhYnNsOjogc3RyaW5nX3ZpZXcoImFiY2RlZiIrNiwgMCkKKy8vICAgYWJzbDo6c3RyaW5nX3Zp
ZXcobnVsbHB0ciwgMCkgPT0gYWJzbDo6c3RyaW5nX3ZpZXcoImFiY2RlZiIrNiwgMCkKIGNsYXNz
IHN0cmluZ192aWV3IHsKICBwdWJsaWM6CiAgIHVzaW5nIHRyYWl0c190eXBlID0gc3RkOjpjaGFy
X3RyYWl0czxjaGFyPjsKQEAgLTE3Myw4ICsxNzMsMTkgQEAgY2xhc3Mgc3RyaW5nX3ZpZXcgewog
ICAvLyBJbXBsaWNpdCBjb25zdHJ1Y3RvciBvZiBhIGBzdHJpbmdfdmlld2AgZnJvbSBudWwtdGVy
bWluYXRlZCBgc3RyYC4gV2hlbgogICAvLyBhY2NlcHRpbmcgcG9zc2libHkgbnVsbCBzdHJpbmdz
LCB1c2UgYGFic2w6Ok51bGxTYWZlU3RyaW5nVmlldyhzdHIpYAogICAvLyBpbnN0ZWFkIChzZWUg
YmVsb3cpLgorI2lmIEFCU0xfSEFWRV9CVUlMVElOKF9fYnVpbHRpbl9zdHJsZW4pIHx8IFwKKyAg
ICAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19jbGFuZ19fKSkKKyAgLy8gR0NDIGhh
cyBfX2J1aWx0aW5fc3RybGVuIGFjY29yZGluZyB0bworICAvLyBodHRwczovL2djYy5nbnUub3Jn
L29ubGluZWRvY3MvZ2NjLTQuNy4wL2djYy9PdGhlci1CdWlsdGlucy5odG1sLCBidXQKKyAgLy8g
QUJTTF9IQVZFX0JVSUxUSU4gZG9lc24ndCBkZXRlY3QgdGhhdCwgc28gd2UgdXNlIHRoZSBleHRy
YSBjaGVja3MgYWJvdmUuCisgIC8vIF9fYnVpbHRpbl9zdHJsZW4gaXMgY29uc3RleHByLgorICBj
b25zdGV4cHIgc3RyaW5nX3ZpZXcoY29uc3QgY2hhciogc3RyKSAgLy8gTk9MSU5UKHJ1bnRpbWUv
ZXhwbGljaXQpCisgICAgICA6IHB0cl8oc3RyKSwKKyAgICAgICAgbGVuZ3RoXyhDaGVja0xlbmd0
aEludGVybmFsKHN0ciA/IF9fYnVpbHRpbl9zdHJsZW4oc3RyKSA6IDApKSB7fQorI2Vsc2UKICAg
Y29uc3RleHByIHN0cmluZ192aWV3KGNvbnN0IGNoYXIqIHN0cikgIC8vIE5PTElOVChydW50aW1l
L2V4cGxpY2l0KQotICAgICAgOiBwdHJfKHN0ciksIGxlbmd0aF8oQ2hlY2tMZW5ndGhJbnRlcm5h
bChTdHJMZW5JbnRlcm5hbChzdHIpKSkge30KKyAgICAgIDogcHRyXyhzdHIpLCBsZW5ndGhfKENo
ZWNrTGVuZ3RoSW50ZXJuYWwoc3RyID8gc3RybGVuKHN0cikgOiAwKSkge30KKyNlbmRpZgogCiAg
IC8vIEltcGxpY2l0IGNvbnN0cnVjdG9yIG9mIGEgYHN0cmluZ192aWV3YCBmcm9tIGEgYGNvbnN0
IGNoYXIqYCBhbmQgbGVuZ3RoLgogICBjb25zdGV4cHIgc3RyaW5nX3ZpZXcoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90eXBlIGxlbikKQEAgLTM0MCw3ICszNTEsNyBAQCBjbGFzcyBzdHJpbmdfdmll
dyB7CiAgIC8vCiAgIC8vIFJldHVybnMgYSAic3Vic3RyaW5nIiBvZiB0aGUgYHN0cmluZ192aWV3
YCAoYXQgb2Zmc2V0IGBwb3NgIGFuZCBsZW5ndGgKICAgLy8gYG5gKSBhcyBhbm90aGVyIHN0cmlu
Z192aWV3LiBUaGlzIGZ1bmN0aW9uIHRocm93cyBgc3RkOjpvdXRfb2ZfYm91bmRzYCBpZgotICAv
LyBgcG9zID4gc2l6ZScuCisgIC8vIGBwb3MgPiBzaXplYC4KICAgc3RyaW5nX3ZpZXcgc3Vic3Ry
KHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuID0gbnBvcykgY29uc3QgewogICAgIGlmIChBQlNM
X1BSRURJQ1RfRkFMU0UocG9zID4gbGVuZ3RoXykpCiAgICAgICBiYXNlX2ludGVybmFsOjpUaHJv
d1N0ZE91dE9mUmFuZ2UoImFic2w6OnN0cmluZ192aWV3OjpzdWJzdHIiKTsKQEAgLTM1MSw3ICsz
NjIsNyBAQCBjbGFzcyBzdHJpbmdfdmlldyB7CiAgIC8vIHN0cmluZ192aWV3Ojpjb21wYXJlKCkK
ICAgLy8KICAgLy8gUGVyZm9ybXMgYSBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBiZXR3ZWVu
IHRoZSBgc3RyaW5nX3ZpZXdgIGFuZAotICAvLyBhbm90aGVyIGBhYnNsOjpzdHJpbmdfdmlldyks
IHJldHVybmluZyAtMSBpZiBgdGhpc2AgaXMgbGVzcyB0aGFuLCAwIGlmCisgIC8vIGFub3RoZXIg
YGFic2w6OnN0cmluZ192aWV3YCwgcmV0dXJuaW5nIC0xIGlmIGB0aGlzYCBpcyBsZXNzIHRoYW4s
IDAgaWYKICAgLy8gYHRoaXNgIGlzIGVxdWFsIHRvLCBhbmQgMSBpZiBgdGhpc2AgaXMgZ3JlYXRl
ciB0aGFuIHRoZSBwYXNzZWQgc3RkOjpzdHJpbmcKICAgLy8gdmlldy4gTm90ZSB0aGF0IGluIHRo
ZSBjYXNlIG9mIGRhdGEgZXF1YWxpdHksIGEgZnVydGhlciBjb21wYXJpc29uIGlzIG1hZGUKICAg
Ly8gb24gdGhlIHJlc3BlY3RpdmUgc2l6ZXMgb2YgdGhlIHR3byBgc3RyaW5nX3ZpZXdgcyB0byBk
ZXRlcm1pbmUgd2hpY2ggaXMKQEAgLTQ4MSwyMiArNDkyLDYgQEAgY2xhc3Mgc3RyaW5nX3ZpZXcg
ewogICBzdGF0aWMgY29uc3RleHByIHNpemVfdHlwZSBrTWF4U2l6ZSA9CiAgICAgICBzdGQ6Om51
bWVyaWNfbGltaXRzPGRpZmZlcmVuY2VfdHlwZT46Om1heCgpOwogCi0gIC8vIGNoZWNrIHdoZXRo
ZXIgX19idWlsdGluX3N0cmxlbiBpcyBwcm92aWRlZCBieSB0aGUgY29tcGlsZXIuCi0gIC8vIEdD
QyBkb2Vzbid0IGhhdmUgX19oYXNfYnVpbHRpbigpCi0gIC8vIChodHRwczovL2djYy5nbnUub3Jn
L2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02Njk3MCksCi0gIC8vIGJ1dCBoYXMgX19idWlsdGlu
X3N0cmxlbiBhY2NvcmRpbmcgdG8KLSAgLy8gaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2Nz
L2djYy00LjcuMC9nY2MvT3RoZXItQnVpbHRpbnMuaHRtbC4KLSNpZiBBQlNMX0hBVkVfQlVJTFRJ
TihfX2J1aWx0aW5fc3RybGVuKSB8fCBcCi0gICAgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZp
bmVkKF9fY2xhbmdfXykpCi0gIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90eXBlIFN0ckxlbkludGVy
bmFsKGNvbnN0IGNoYXIqIHN0cikgewotICAgIHJldHVybiBzdHIgPyBfX2J1aWx0aW5fc3RybGVu
KHN0cikgOiAwOwotICB9Ci0jZWxzZQotICBzdGF0aWMgY29uc3RleHByIHNpemVfdHlwZSBTdHJM
ZW5JbnRlcm5hbChjb25zdCBjaGFyKiBzdHIpIHsKLSAgICByZXR1cm4gc3RyID8gc3RybGVuKHN0
cikgOiAwOwotICB9Ci0jZW5kaWYKLQogICBzdGF0aWMgY29uc3RleHByIHNpemVfdHlwZSBDaGVj
a0xlbmd0aEludGVybmFsKHNpemVfdHlwZSBsZW4pIHsKICAgICByZXR1cm4gbGVuOwogICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3X3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL3N0cmluZ192aWV3X3Rlc3QuY2MKaW5kZXggYjE5ZDA3YzdmZDYxZDgyMTIyM2JmYzBiZjk3
YjJhMmE2MjM0ZDM4Yy4uYTk0ZTgyMjU0ZWU0NTIxZGZjMTFiMDVhYTg5ZDBlNzQxY2E1YjdjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlld190ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyaW5nX3ZpZXdfdGVzdC5jYwpAQCAtMzUsNyArMzUsOCBAQAogI2RlZmluZSBB
QlNMX0VYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAogICBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgIi4qIikKICNlbHNlCi0jZGVmaW5lIEFC
U0xfRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVECisj
ZGVmaW5lIEFCU0xfRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBc
CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkKICNlbmRpZgog
CiBuYW1lc3BhY2UgewpAQCAtMjgzLDcgKzI4NCw3IEBAIFRFU1QoU3RyaW5nVmlld1Rlc3QsIENv
bXBhcmlzb25PcGVyYXRvcnNCeUNoYXJhY3RlclBvc2l0aW9uKSB7CiB9CiAjdW5kZWYgQ09NUEFS
RQogCi0vLyBTYWRseSwgb3VyIHVzZXJzIG9mdGVuIGNvbmZ1c2Ugc3RkOjpzdHJpbmc6Om5wb3Mg
d2l0aCBhYnNsOjpzdHJpbmdfdmlldzo6bnBvczsKKy8vIFNhZGx5LCBvdXIgdXNlcnMgb2Z0ZW4g
Y29uZnVzZSBzdHJpbmc6Om5wb3Mgd2l0aCBhYnNsOjpzdHJpbmdfdmlldzo6bnBvczsKIC8vIFNv
IG11Y2ggc28gdGhhdCB3ZSB0ZXN0IGhlcmUgdGhhdCB0aGV5IGFyZSB0aGUgc2FtZS4gIFRoZXkg
bmVlZCB0bwogLy8gYm90aCBiZSB1bnNpZ25lZCwgYW5kIGJvdGggYmUgdGhlIG1heGltdW0tdmFs
dWVkIGludGVnZXIgb2YgdGhlaXIgdHlwZS4KIApAQCAtODExLDE1ICs4MTIsMTggQEAgVEVTVChT
dHJpbmdWaWV3VGVzdCwgRnJvbnRCYWNrU2luZ2xlQ2hhcikgewogfQogCiAvLyBgc3RkOjpzdHJp
bmdfdmlldzo6c3RyaW5nX3ZpZXcoY29uc3QgY2hhciopYCBjYWxscwotLy8gYHN0ZDo6Y2hhcl90
cmFpdHM8Y2hhcj46Omxlbmd0aChjb25zdCBjaGFyKilgIHRvIGdldCB0aGUgc3RkOjpzdHJpbmcg
bGVuZ3RoLiBJbgorLy8gYHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj46Omxlbmd0aChjb25zdCBjaGFy
KilgIHRvIGdldCB0aGUgc3RyaW5nIGxlbmd0aC4gSW4KIC8vIGxpYmMrKywgaXQgZG9lc24ndCBh
bGxvdyBgbnVsbHB0cmAgaW4gdGhlIGNvbnN0ZXhwciBjb250ZXh0LCB3aXRoIHRoZSBlcnJvcgog
Ly8gInJlYWQgb2YgZGVyZWZlcmVuY2VkIG51bGwgcG9pbnRlciBpcyBub3QgYWxsb3dlZCBpbiBh
IGNvbnN0YW50IGV4cHJlc3Npb24iLgogLy8gQXQgcnVuIHRpbWUsIHRoZSBiZWhhdmlvciBvZiBg
c3RkOjpjaGFyX3RyYWl0czo6bGVuZ3RoKClgIG9uIGBudWxscHRyYCBpcwotLy8gdW5kZWZpbmVk
IGJ5IHRoZSBzdGFuZGFyZCBhbmQgdXN1YWxseSByZXN1bHRzIGluIGNyYXNoIHdpdGggbGliYysr
LiBUaGlzCi0vLyBjb25mb3JtcyB0byB0aGUgc3RhbmRhcmQsIGJ1dCBgYWJzbDo6c3RyaW5nX3Zp
ZXdgIGltcGxlbWVudHMgYSBkaWZmZXJlbnQKKy8vIHVuZGVmaW5lZCBieSB0aGUgc3RhbmRhcmQg
YW5kIHVzdWFsbHkgcmVzdWx0cyBpbiBjcmFzaCB3aXRoIGxpYmMrKy4KKy8vIEluIE1TVkMsIGNy
ZWF0aW5nIGEgY29uc3RleHByIHN0cmluZ192aWV3IGZyb20gbnVsbHB0ciBhbHNvIHRyaWdnZXJz
IGFuCisvLyAidW5ldmFsdWFibGUgcG9pbnRlciB2YWx1ZSIgZXJyb3IuIFRoaXMgY29tcGlsZXIg
aW1wbGVtZW50YXRpb24gY29uZm9ybXMKKy8vIHRvIHRoZSBzdGFuZGFyZCwgYnV0IGBhYnNsOjpz
dHJpbmdfdmlld2AgaW1wbGVtZW50cyBhIGRpZmZlcmVudAogLy8gYmVoYXZpb3IgZm9yIGhpc3Rv
cmljYWwgcmVhc29ucy4gV2Ugd29yayBhcm91bmQgdGVzdHMgdGhhdCBjb25zdHJ1Y3QKIC8vIGBz
dHJpbmdfdmlld2AgZnJvbSBgbnVsbHB0cmAgd2hlbiB1c2luZyBsaWJjKysuCi0jaWYgIWRlZmlu
ZWQoQUJTTF9IQVZFX1NURF9TVFJJTkdfVklFVykgfHwgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9O
KQorI2lmICFkZWZpbmVkKEFCU0xfSEFWRV9TVERfU1RSSU5HX1ZJRVcpIHx8IFwKKyAgICAoIWRl
ZmluZWQoX0xJQkNQUF9WRVJTSU9OKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikpCiAjZGVmaW5lIEFC
U0xfSEFWRV9TVFJJTkdfVklFV19GUk9NX05VTExQVFIgMQogI2VuZGlmICAvLyAhZGVmaW5lZChB
QlNMX0hBVkVfU1REX1NUUklOR19WSUVXKSB8fCAhZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXAu
aAppbmRleCAyZjhkMjFmN2RlYjlmY2EwMjkzOGNhN2E5MjQwYTBlMTc3NTZmMjExLi44ZDBkN2M2
YmZjMTIzMGYwYzM5YTE1MTIxOGUxY2M5MjdiODgzNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL3N0cmlwLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcC5oCkBAIC0xNyw3ICsxNyw3IEBA
CiAvLyBGaWxlOiBzdHJpcC5oCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KLS8vIFRoaXMg
ZmlsZSBjb250YWlucyB2YXJpb3VzIGZ1bmN0aW9ucyBmb3Igc3RyaXBwaW5nIHN1YnN0cmluZ3Mg
ZnJvbSBhIHN0ZDo6c3RyaW5nLgorLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHZhcmlvdXMgZnVuY3Rp
b25zIGZvciBzdHJpcHBpbmcgc3Vic3RyaW5ncyBmcm9tIGEgc3RyaW5nLgogI2lmbmRlZiBBQlNM
X1NUUklOR1NfU1RSSVBfSF8KICNkZWZpbmUgQUJTTF9TVFJJTkdTX1NUUklQX0hfCiAKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIGFic2wgewogCiAvLyBDb25zdW1lUHJlZml4KCkKIC8vCi0v
LyBTdHJpcHMgdGhlIGBleHBlY3RlZGAgcHJlZml4IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBnaXZl
biBzdGQ6OnN0cmluZywgcmV0dXJuaW5nCisvLyBTdHJpcHMgdGhlIGBleHBlY3RlZGAgcHJlZml4
IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBnaXZlbiBzdHJpbmcsIHJldHVybmluZwogLy8gYHRydWVg
IGlmIHRoZSBzdHJpcCBvcGVyYXRpb24gc3VjY2VlZGVkIG9yIGZhbHNlIG90aGVyd2lzZS4KIC8v
CiAvLyBFeGFtcGxlOgpAQCAtNDgsNyArNDgsNyBAQCBpbmxpbmUgYm9vbCBDb25zdW1lUHJlZml4
KGFic2w6OnN0cmluZ192aWV3KiBzdHIsIGFic2w6OnN0cmluZ192aWV3IGV4cGVjdGVkKSB7CiB9
CiAvLyBDb25zdW1lU3VmZml4KCkKIC8vCi0vLyBTdHJpcHMgdGhlIGBleHBlY3RlZGAgc3VmZml4
IGZyb20gdGhlIGVuZCBvZiB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcsIHJldHVybmluZworLy8gU3Ry
aXBzIHRoZSBgZXhwZWN0ZWRgIHN1ZmZpeCBmcm9tIHRoZSBlbmQgb2YgdGhlIGdpdmVuIHN0cmlu
ZywgcmV0dXJuaW5nCiAvLyBgdHJ1ZWAgaWYgdGhlIHN0cmlwIG9wZXJhdGlvbiBzdWNjZWVkZWQg
b3IgZmFsc2Ugb3RoZXJ3aXNlLgogLy8KIC8vIEV4YW1wbGU6CkBAIC02NCw5ICs2NCw5IEBAIGlu
bGluZSBib29sIENvbnN1bWVTdWZmaXgoYWJzbDo6c3RyaW5nX3ZpZXcqIHN0ciwgYWJzbDo6c3Ry
aW5nX3ZpZXcgZXhwZWN0ZWQpIHsKIAogLy8gU3RyaXBQcmVmaXgoKQogLy8KLS8vIFJldHVybnMg
YSB2aWV3IGludG8gdGhlIGlucHV0IHN0ZDo6c3RyaW5nICdzdHInIHdpdGggdGhlIGdpdmVuICdw
cmVmaXgnIHJlbW92ZWQsCi0vLyBidXQgbGVhdmluZyB0aGUgb3JpZ2luYWwgc3RkOjpzdHJpbmcg
aW50YWN0LiBJZiB0aGUgcHJlZml4IGRvZXMgbm90IG1hdGNoIGF0IHRoZQotLy8gc3RhcnQgb2Yg
dGhlIHN0ZDo6c3RyaW5nLCByZXR1cm5zIHRoZSBvcmlnaW5hbCBzdGQ6OnN0cmluZyBpbnN0ZWFk
LgorLy8gUmV0dXJucyBhIHZpZXcgaW50byB0aGUgaW5wdXQgc3RyaW5nICdzdHInIHdpdGggdGhl
IGdpdmVuICdwcmVmaXgnIHJlbW92ZWQsCisvLyBidXQgbGVhdmluZyB0aGUgb3JpZ2luYWwgc3Ry
aW5nIGludGFjdC4gSWYgdGhlIHByZWZpeCBkb2VzIG5vdCBtYXRjaCBhdCB0aGUKKy8vIHN0YXJ0
IG9mIHRoZSBzdHJpbmcsIHJldHVybnMgdGhlIG9yaWdpbmFsIHN0cmluZyBpbnN0ZWFkLgogQUJT
TF9NVVNUX1VTRV9SRVNVTFQgaW5saW5lIGFic2w6OnN0cmluZ192aWV3IFN0cmlwUHJlZml4KAog
ICAgIGFic2w6OnN0cmluZ192aWV3IHN0ciwgYWJzbDo6c3RyaW5nX3ZpZXcgcHJlZml4KSB7CiAg
IGlmIChhYnNsOjpTdGFydHNXaXRoKHN0ciwgcHJlZml4KSkgc3RyLnJlbW92ZV9wcmVmaXgocHJl
Zml4LnNpemUoKSk7CkBAIC03NSw5ICs3NSw5IEBAIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGlubGlu
ZSBhYnNsOjpzdHJpbmdfdmlldyBTdHJpcFByZWZpeCgKIAogLy8gU3RyaXBTdWZmaXgoKQogLy8K
LS8vIFJldHVybnMgYSB2aWV3IGludG8gdGhlIGlucHV0IHN0ZDo6c3RyaW5nICdzdHInIHdpdGgg
dGhlIGdpdmVuICdzdWZmaXgnIHJlbW92ZWQsCi0vLyBidXQgbGVhdmluZyB0aGUgb3JpZ2luYWwg
c3RkOjpzdHJpbmcgaW50YWN0LiBJZiB0aGUgc3VmZml4IGRvZXMgbm90IG1hdGNoIGF0IHRoZQot
Ly8gZW5kIG9mIHRoZSBzdGQ6OnN0cmluZywgcmV0dXJucyB0aGUgb3JpZ2luYWwgc3RkOjpzdHJp
bmcgaW5zdGVhZC4KKy8vIFJldHVybnMgYSB2aWV3IGludG8gdGhlIGlucHV0IHN0cmluZyAnc3Ry
JyB3aXRoIHRoZSBnaXZlbiAnc3VmZml4JyByZW1vdmVkLAorLy8gYnV0IGxlYXZpbmcgdGhlIG9y
aWdpbmFsIHN0cmluZyBpbnRhY3QuIElmIHRoZSBzdWZmaXggZG9lcyBub3QgbWF0Y2ggYXQgdGhl
CisvLyBlbmQgb2YgdGhlIHN0cmluZywgcmV0dXJucyB0aGUgb3JpZ2luYWwgc3RyaW5nIGluc3Rl
YWQuCiBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgYWJzbDo6c3RyaW5nX3ZpZXcgU3RyaXBT
dWZmaXgoCiAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBhYnNsOjpzdHJpbmdfdmlldyBzdWZm
aXgpIHsKICAgaWYgKGFic2w6OkVuZHNXaXRoKHN0ciwgc3VmZml4KSkgc3RyLnJlbW92ZV9zdWZm
aXgoc3VmZml4LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwX3Rlc3QuY2MKaW5kZXggMjA1YzE2MGMxOTI5MjYzNzk2
YTU5MzIzYWM1OTUwOWU4YWI2NTg5ZS4uNDBjNGM2MDcxMjExMjA4MTA0YzdkZGIyZmRjZjM3NjUx
OTkyNDM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcF90ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3Mvc3RyaXBfdGVzdC5jYwpAQCAtMTIsOCArMTIsOCBAQAogLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKLS8vIFRoaXMgZmlsZSBjb250
YWlucyBmdW5jdGlvbnMgdGhhdCByZW1vdmUgYSBkZWZpbmVkIHBhcnQgZnJvbSB0aGUgc3RkOjpz
dHJpbmcsCi0vLyBpLmUuLCBzdHJpcCB0aGUgc3RkOjpzdHJpbmcuCisvLyBUaGlzIGZpbGUgY29u
dGFpbnMgZnVuY3Rpb25zIHRoYXQgcmVtb3ZlIGEgZGVmaW5lZCBwYXJ0IGZyb20gdGhlIHN0cmlu
ZywKKy8vIGkuZS4sIHN0cmlwIHRoZSBzdHJpbmcuCiAKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
c3RyaXAuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N1YnN0aXR1dGUuaAppbmRleCBjNGIyNWJhNzA5NTJjMTlkNjRlYmM4NDliN2Uz
YzA5Y2FmYmM1MmNmLi40ZGU3YjRlNzVmZjIzYjQxMzQxZmQ2MzVjZjIyMWRhNjY5YmQ1MWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N1YnN0aXR1dGUuaApAQCAtMTcsNDYgKzE3LDQ2IEBACiAvLyBGaWxlOiBzdWJzdGl0dXRlLmgK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwotLy8gVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGZ1
bmN0aW9ucyBmb3IgZWZmaWNpZW50bHkgcGVyZm9ybWluZyBzdGQ6OnN0cmluZwotLy8gc3Vic3Rp
dHV0aW9ucyB1c2luZyBhIGZvcm1hdCBzdGQ6OnN0cmluZyB3aXRoIHBvc2l0aW9uYWwgbm90YXRp
b246CisvLyBUaGlzIHBhY2thZ2UgY29udGFpbnMgZnVuY3Rpb25zIGZvciBlZmZpY2llbnRseSBw
ZXJmb3JtaW5nIHN0cmluZworLy8gc3Vic3RpdHV0aW9ucyB1c2luZyBhIGZvcm1hdCBzdHJpbmcg
d2l0aCBwb3NpdGlvbmFsIG5vdGF0aW9uOgogLy8gYFN1YnN0aXR1dGUoKWAgYW5kIGBTdWJzdGl0
dXRlQW5kQXBwZW5kKClgLgogLy8KIC8vIFVubGlrZSBwcmludGYtc3R5bGUgZm9ybWF0IHNwZWNp
ZmllcnMsIGBTdWJzdGl0dXRlKClgIGZ1bmN0aW9ucyBkbyBub3QgbmVlZAogLy8gdG8gc3BlY2lm
eSB0aGUgdHlwZSBvZiB0aGUgc3Vic3RpdHV0aW9uIGFyZ3VtZW50cy4gU3VwcG9ydGVkIGFyZ3Vt
ZW50cwotLy8gZm9sbG93aW5nIHRoZSBmb3JtYXQgc3RkOjpzdHJpbmcsIHN1Y2ggYXMgc3RyaW5n
cywgc3RyaW5nX3ZpZXdzLCBpbnRzLAorLy8gZm9sbG93aW5nIHRoZSBmb3JtYXQgc3RyaW5nLCBz
dWNoIGFzIHN0cmluZ3MsIHN0cmluZ192aWV3cywgaW50cywKIC8vIGZsb2F0cywgYW5kIGJvb2xz
LCBhcmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gc3RyaW5ncyBkdXJpbmcgdGhlCiAvLyBz
dWJzdGl0dXRpb24gcHJvY2Vzcy4gKFNlZSBiZWxvdyBmb3IgYSBmdWxsIGxpc3Qgb2Ygc3VwcG9y
dGVkIHR5cGVzLikKIC8vCiAvLyBgU3Vic3RpdHV0ZSgpYCBkb2VzIG5vdCBhbGxvdyB5b3UgdG8g
c3BlY2lmeSAqaG93KiB0byBmb3JtYXQgYSB2YWx1ZSwgYmV5b25kCi0vLyB0aGUgZGVmYXVsdCBj
b252ZXJzaW9uIHRvIHN0ZDo6c3RyaW5nLiBGb3IgZXhhbXBsZSwgeW91IGNhbm5vdCBmb3JtYXQg
YW4gaW50ZWdlcgorLy8gdGhlIGRlZmF1bHQgY29udmVyc2lvbiB0byBzdHJpbmcuIEZvciBleGFt
cGxlLCB5b3UgY2Fubm90IGZvcm1hdCBhbiBpbnRlZ2VyCiAvLyBpbiBoZXguCiAvLwotLy8gVGhl
IGZvcm1hdCBzdGQ6OnN0cmluZyB1c2VzIHBvc2l0aW9uYWwgaWRlbnRpZmllcnMgaW5kaWNhdGVk
IGJ5IGEgZG9sbGFyIHNpZ24gKCQpCisvLyBUaGUgZm9ybWF0IHN0cmluZyB1c2VzIHBvc2l0aW9u
YWwgaWRlbnRpZmllcnMgaW5kaWNhdGVkIGJ5IGEgZG9sbGFyIHNpZ24gKCQpCiAvLyBhbmQgc2lu
Z2xlIGRpZ2l0IHBvc2l0aW9uYWwgaWRzIHRvIGluZGljYXRlIHdoaWNoIHN1YnN0aXR1dGlvbiBh
cmd1bWVudHMgdG8KLS8vIHVzZSBhdCB0aGF0IGxvY2F0aW9uIHdpdGhpbiB0aGUgZm9ybWF0IHN0
ZDo6c3RyaW5nLgorLy8gdXNlIGF0IHRoYXQgbG9jYXRpb24gd2l0aGluIHRoZSBmb3JtYXQgc3Ry
aW5nLgogLy8KIC8vIEV4YW1wbGUgMToKLS8vICAgc3RkOjpzdHJpbmcgcyA9IFN1YnN0aXR1dGUo
IiQxIHB1cmNoYXNlZCAkMCAkMi4gVGhhbmtzICQxISIsCisvLyAgIHN0cmluZyBzID0gU3Vic3Rp
dHV0ZSgiJDEgcHVyY2hhc2VkICQwICQyLiBUaGFua3MgJDEhIiwKIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgIDUsICJCb2IiLCAiQXBwbGVzIik7CiAvLyAgIEVYUEVDVF9FUSgiQm9iIHB1cmNo
YXNlZCA1IEFwcGxlcy4gVGhhbmtzIEJvYiEiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDI6Ci0vLyAg
IHN0ZDo6c3RyaW5nIHMgPSAiSGkuICI7CisvLyAgIHN0cmluZyBzID0gIkhpLiAiOwogLy8gICBT
dWJzdGl0dXRlQW5kQXBwZW5kKCZzLCAiTXkgbmFtZSBpcyAkMCBhbmQgSSBhbSAkMSB5ZWFycyBv
bGQuIiwgIkJvYiIsIDUpOwogLy8gICBFWFBFQ1RfRVEoIkhpLiBNeSBuYW1lIGlzIEJvYiBhbmQg
SSBhbSA1IHllYXJzIG9sZC4iLCBzKTsKIC8vCiAvLwogLy8gU3VwcG9ydGVkIHR5cGVzOgotLy8g
ICAqIGFic2w6OnN0cmluZ192aWV3LCBzdGQ6OnN0cmluZywgY29uc3QgY2hhciogKG51bGwgaXMg
ZXF1aXZhbGVudCB0byAiIikKKy8vICAgKiBhYnNsOjpzdHJpbmdfdmlldywgc3RyaW5nLCBjb25z
dCBjaGFyKiAobnVsbCBpcyBlcXVpdmFsZW50IHRvICIiKQogLy8gICAqIGludDMyX3QsIGludDY0
X3QsIHVpbnQzMl90LCB1aW50NjQKIC8vICAgKiBmbG9hdCwgZG91YmxlCiAvLyAgICogYm9vbCAo
UHJpbnRlZCBhcyAidHJ1ZSIgb3IgImZhbHNlIikKLS8vICAgKiBwb2ludGVyIHR5cGVzIG90aGVy
IHRoYW4gY2hhciogKFByaW50ZWQgYXMgIjB4PGxvd2VyIGNhc2UgaGV4IHN0ZDo6c3RyaW5nPiIs
CisvLyAgICogcG9pbnRlciB0eXBlcyBvdGhlciB0aGFuIGNoYXIqIChQcmludGVkIGFzICIweDxs
b3dlciBjYXNlIGhleCBzdHJpbmc+IiwKIC8vICAgICBleGNlcHQgdGhhdCBudWxsIGlzIHByaW50
ZWQgYXMgIk5VTEwiKQogLy8KLS8vIElmIGFuIGludmFsaWQgZm9ybWF0IHN0ZDo6c3RyaW5nIGlz
IHByb3ZpZGVkLCBTdWJzdGl0dXRlIHJldHVybnMgYW4gZW1wdHkgc3RkOjpzdHJpbmcKLS8vIGFu
ZCBTdWJzdGl0dXRlQW5kQXBwZW5kIGRvZXMgbm90IGNoYW5nZSB0aGUgcHJvdmlkZWQgb3V0cHV0
IHN0ZDo6c3RyaW5nLgotLy8gQSBmb3JtYXQgc3RkOjpzdHJpbmcgaXMgaW52YWxpZCBpZiBpdDoK
Ky8vIElmIGFuIGludmFsaWQgZm9ybWF0IHN0cmluZyBpcyBwcm92aWRlZCwgU3Vic3RpdHV0ZSBy
ZXR1cm5zIGFuIGVtcHR5IHN0cmluZworLy8gYW5kIFN1YnN0aXR1dGVBbmRBcHBlbmQgZG9lcyBu
b3QgY2hhbmdlIHRoZSBwcm92aWRlZCBvdXRwdXQgc3RyaW5nLgorLy8gQSBmb3JtYXQgc3RyaW5n
IGlzIGludmFsaWQgaWYgaXQ6CiAvLyAgICogZW5kcyBpbiBhbiB1bmVzY2FwZWQgJCBjaGFyYWN0
ZXIsCiAvLyAgICAgZS5nLiAiSGVsbG8gJCIsIG9yCiAvLyAgICogY2FsbHMgZm9yIGEgcG9zaXRp
b24gYXJndW1lbnQgd2hpY2ggaXMgbm90IHByb3ZpZGVkLApAQCAtODgsNyArODgsNyBAQCBuYW1l
c3BhY2Ugc3Vic3RpdHV0ZV9pbnRlcm5hbCB7CiAvLwogLy8gVGhpcyBjbGFzcyBwcm92aWRlcyBh
biBhcmd1bWVudCB0eXBlIGZvciBgYWJzbDo6U3Vic3RpdHV0ZSgpYCBhbmQKIC8vIGBhYnNsOjpT
dWJzdGl0dXRlQW5kQXBwZW5kKClgLiBgQXJnYCBoYW5kbGVzIGltcGxpY2l0IGNvbnZlcnNpb24g
b2YgdmFyaW91cwotLy8gdHlwZXMgdG8gYSBzdGQ6OnN0cmluZy4gKGBBcmdgIGlzIHZlcnkgc2lt
aWxhciB0byB0aGUgYEFscGhhTnVtYCBjbGFzcyBpbgorLy8gdHlwZXMgdG8gYSBzdHJpbmcuIChg
QXJnYCBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIGBBbHBoYU51bWAgY2xhc3MgaW4KIC8vIGBTdHJD
YXQoKWAuKQogLy8KIC8vIFRoaXMgY2xhc3MgaGFzIGltcGxpY2l0IGNvbnN0cnVjdG9ycy4KQEAg
LTE5Nyw4ICsxOTcsOCBAQCBjb25zdGV4cHIgaW50IFBsYWNlaG9sZGVyQml0bWFzayhjb25zdCBj
aGFyKiBmb3JtYXQpIHsKIAogLy8gU3Vic3RpdHV0ZUFuZEFwcGVuZCgpCiAvLwotLy8gU3Vic3Rp
dHV0ZXMgdmFyaWFibGVzIGludG8gYSBnaXZlbiBmb3JtYXQgc3RkOjpzdHJpbmcgYW5kIGFwcGVu
ZHMgdG8gYSBnaXZlbgotLy8gb3V0cHV0IHN0ZDo6c3RyaW5nLiBTZWUgZmlsZSBjb21tZW50cyBh
Ym92ZSBmb3IgdXNhZ2UuCisvLyBTdWJzdGl0dXRlcyB2YXJpYWJsZXMgaW50byBhIGdpdmVuIGZv
cm1hdCBzdHJpbmcgYW5kIGFwcGVuZHMgdG8gYSBnaXZlbgorLy8gb3V0cHV0IHN0cmluZy4gU2Vl
IGZpbGUgY29tbWVudHMgYWJvdmUgZm9yIHVzYWdlLgogLy8KIC8vIFRoZSBkZWNsYXJhdGlvbnMg
b2YgYFN1YnN0aXR1dGVBbmRBcHBlbmQoKWAgYmVsb3cgY29uc2lzdCBvZiBvdmVybG9hZHMKIC8v
IGZvciBwYXNzaW5nIDAgdG8gMTAgYXJndW1lbnRzLCByZXNwZWN0aXZlbHkuCkBAIC00NDQsNyAr
NDQ0LDcgQEAgdm9pZCBTdWJzdGl0dXRlQW5kQXBwZW5kKAogCiAvLyBTdWJzdGl0dXRlKCkKIC8v
Ci0vLyBTdWJzdGl0dXRlcyB2YXJpYWJsZXMgaW50byBhIGdpdmVuIGZvcm1hdCBzdGQ6OnN0cmlu
Zy4gU2VlIGZpbGUgY29tbWVudHMgYWJvdmUKKy8vIFN1YnN0aXR1dGVzIHZhcmlhYmxlcyBpbnRv
IGEgZ2l2ZW4gZm9ybWF0IHN0cmluZy4gU2VlIGZpbGUgY29tbWVudHMgYWJvdmUKIC8vIGZvciB1
c2FnZS4KIC8vCiAvLyBUaGUgZGVjbGFyYXRpb25zIG9mIGBTdWJzdGl0dXRlKClgIGJlbG93IGNv
bnNpc3Qgb2Ygb3ZlcmxvYWRzIGZvciBwYXNzaW5nIDAKQEAgLTQ1Niw3ICs0NTYsNyBAQCB2b2lk
IFN1YnN0aXR1dGVBbmRBcHBlbmQoCiAvLyBFeGFtcGxlOgogLy8gIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgogLy8gIHZvaWQgVmFyTXNnKGFic2w6OnN0cmluZ192aWV3IGZvcm1hdCwgY29u
c3QgQXJncyYuLi4gYXJncykgewotLy8gICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN1YnN0aXR1
dGUoZm9ybWF0LCBhcmdzLi4uKTsKKy8vICAgIHN0cmluZyBzID0gYWJzbDo6U3Vic3RpdHV0ZShm
b3JtYXQsIGFyZ3MuLi4pOwogCiBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgc3RkOjpzdHJp
bmcgU3Vic3RpdHV0ZShhYnNsOjpzdHJpbmdfdmlldyBmb3JtYXQpIHsKICAgc3RkOjpzdHJpbmcg
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0JVSUxELmJhemVsIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3luY2hyb25pemF0aW9uL0JVSUxELmJhemVsCmluZGV4IDhkMzAyZTAxMjIzYjQ1YmQ5
MmEyMTY3MGExMWY1NTkyZjliMTVjNjQuLmY1MmU5ZDQxNjQ0YThkOTMxYmYzOWZhZTdlYzg0MzI3
YmVhZjQxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5iYXplbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQlVJTEQuYmF6ZWwKQEAgLTg4LDYgKzg4LDkgQEAg
Y2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJiYXJyaWVyX3Rlc3Qu
Y2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0gWworICAgICAg
ICAibm9fdGVzdF93YXNtIiwKKyAgICBdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3luY2hy
b25pemF0aW9uIiwKICAgICAgICAgIi8vYWJzbC90aW1lIiwKQEAgLTEwMCw2ICsxMDMsOSBAQCBj
Y190ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAogICAgIHNyY3MgPSBbImJsb2NraW5nX2NvdW50
ZXJfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIHRhZ3MgPSBb
CisgICAgICAgICJub190ZXN0X3dhc20iLAorICAgIF0sCiAgICAgZGVwcyA9IFsKICAgICAgICAg
IjpzeW5jaHJvbml6YXRpb24iLAogICAgICAgICAiLy9hYnNsL3RpbWUiLApAQCAtMTM4LDYgKzE0
NCw5IEBAIGNjX2xpYnJhcnkoCiAgICAgbmFtZSA9ICJ0aHJlYWRfcG9vbCIsCiAgICAgdGVzdG9u
bHkgPSAxLAogICAgIGhkcnMgPSBbImludGVybmFsL3RocmVhZF9wb29sLmgiXSwKKyAgICB2aXNp
YmlsaXR5ID0gWworICAgICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNfXyIsCisgICAgXSwKICAg
ICBkZXBzID0gWwogICAgICAgICAiOnN5bmNocm9uaXphdGlvbiIsCiAgICAgICAgICIvL2Fic2wv
YmFzZTpjb3JlX2hlYWRlcnMiLApAQCAtMTQ5LDYgKzE1OCw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6
ZSA9ICJsYXJnZSIsCiAgICAgc3JjcyA9IFsibXV0ZXhfdGVzdC5jYyJdLAogICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAorICAgIHNoYXJkX2NvdW50ID0gMjUsCiAgICAgZGVwcyA9IFsKICAg
ICAgICAgIjpzeW5jaHJvbml6YXRpb24iLAogICAgICAgICAiOnRocmVhZF9wb29sIiwKQEAgLTIw
NSw2ICsyMTUsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAicGVyX3RocmVhZF9zZW1fdGVzdCIs
CiAgICAgc2l6ZSA9ICJtZWRpdW0iLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAg
IHRhZ3MgPSBbIm5vX3Rlc3Rfd2FzbSJdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6cGVyX3Ro
cmVhZF9zZW1fdGVzdF9jb21tb24iLAogICAgICAgICAiOnN5bmNocm9uaXphdGlvbiIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6
YXRpb24vQlVJTEQuZ24KaW5kZXggMzY2NGFhMTMyNzRmNDA0MGY5MzY5Yjk1ZjQwZGVlZjJiNTkw
ZGI4Zi4uZTZmNzYzYTA2MGJhOWNlMGFhZWU5YzE0MTgxMGZmZjZiNGU3OGMxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXph
dGlvbi9CVUlMRC5nbgpAQCAtNTAsOCArNTAsOCBAQCBzb3VyY2Vfc2V0KCJzeW5jaHJvbml6YXRp
b24iKSB7CiAgICAgImludGVybmFsL2NyZWF0ZV90aHJlYWRfaWRlbnRpdHkuY2MiLAogICAgICJp
bnRlcm5hbC9wZXJfdGhyZWFkX3NlbS5jYyIsCiAgICAgImludGVybmFsL3dhaXRlci5jYyIsCisg
ICAgIm11dGV4LmNjIiwKICAgICAibm90aWZpY2F0aW9uLmNjIiwKLSAgICAibXV0ZXguY2MiCiAg
IF0KICAgcHVibGljID0gWwogICAgICJiYXJyaWVyLmgiLApAQCAtOTMsNiArOTMsOCBAQCBzb3Vy
Y2Vfc2V0KCJ0aHJlYWRfcG9vbCIpIHsKICAgICAiOnN5bmNocm9uaXphdGlvbiIsCiAgICAgIi4u
L2Jhc2U6Y29yZV9oZWFkZXJzIiwKICAgXQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0
eSArPSBbICIuLi8qIiBdCiB9CiAKIHNvdXJjZV9zZXQoInBlcl90aHJlYWRfc2VtX3Rlc3RfY29t
bW9uIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBo
Y3ljbGVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmNj
CmluZGV4IGFiMWYzZjg0ZTc0YzFkN2VkZWY2Mzc5ZTAyNjg0YjAwYjUzYTdlMzQuLmQzODc4ZGUy
YjY4ZjIxOTI5ZjAwYjg2MzRiY2I5Nzk0YTBlNGYwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNo
cm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6
YXRpb24vaW50ZXJuYWwvZ3JhcGhjeWNsZXMuY2MKQEAgLTIwNCw4ICsyMDQsNyBAQCBjbGFzcyBO
b2RlU2V0IHsKICAgfQogCiAgcHJpdmF0ZToKLSAgc3RhdGljIGNvbnN0IGludDMyX3Qga0VtcHR5
OwotICBzdGF0aWMgY29uc3QgaW50MzJfdCBrRGVsOworICBlbnVtIDogaW50MzJfdCB7IGtFbXB0
eSA9IC0xLCBrRGVsID0gLTIgfTsKICAgVmVjPGludDMyX3Q+IHRhYmxlXzsKICAgdWludDMyX3Qg
b2NjdXBpZWRfOyAgICAgLy8gQ291bnQgb2Ygbm9uLWVtcHR5IHNsb3RzIChpbmNsdWRlcyBkZWxl
dGVkIHNsb3RzKQogCkBAIC0yNTUsOSArMjU0LDYgQEAgY2xhc3MgTm9kZVNldCB7CiAgIE5vZGVT
ZXQmIG9wZXJhdG9yPShjb25zdCBOb2RlU2V0JikgPSBkZWxldGU7CiB9OwogCi1jb25zdCBpbnQz
Ml90IE5vZGVTZXQ6OmtFbXB0eSA9IC0xOwotY29uc3QgaW50MzJfdCBOb2RlU2V0OjprRGVsID0g
LTI7Ci0KIC8vIFdlIGVuY29kZSBhIG5vZGUgaW5kZXggYW5kIGEgbm9kZSB2ZXJzaW9uIGluIEdy
YXBoSWQuICBUaGUgdmVyc2lvbgogLy8gbnVtYmVyIGlzIGluY3JlbWVudGVkIHdoZW4gdGhlIEdy
YXBoSWQgaXMgZnJlZWQgd2hpY2ggYXV0b21hdGljYWxseQogLy8gaW52YWxpZGF0ZXMgYWxsIGNv
cGllcyBvZiB0aGUgR3JhcGhJZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9p
bnRlcm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2lu
dGVybmFsL3Blcl90aHJlYWRfc2VtX3Rlc3QuY2MKaW5kZXggMmI1MmVhNzZhYjBlOTQyNjAxZWI1
MGYxNjBmZTg0NWI5YjA2ODVjZi4uYzI5ZDg0MDNkZjQzZmJjM2Q4ZDJjNWM3Y2NkYWYzYWVlZDJm
MmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3Blcl90aHJl
YWRfc2VtX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3Blcl90
aHJlYWRfc2VtX3Rlc3QuY2MKQEAgLTE1MywxMiArMTUzLDE1IEBAIFRFU1RfRihQZXJUaHJlYWRT
ZW1UZXN0LCBXaXRoVGltZW91dCkgewogCiBURVNUX0YoUGVyVGhyZWFkU2VtVGVzdCwgVGltZW91
dHMpIHsKICAgYWJzbDo6VGltZSB0aW1lb3V0ID0gYWJzbDo6Tm93KCkgKyBhYnNsOjpNaWxsaXNl
Y29uZHMoNTApOworICAvLyBBbGxvdyBmb3IgYSBzbGlnaHQgZWFybHkgcmV0dXJuLCB0byBhY2Nv
dW50IGZvciBxdWFsaXR5IG9mIGltcGxlbWVudGF0aW9uCisgIC8vIGlzc3VlcyBvbiB2YXJpb3Vz
IHBsYXRmb3Jtcy4KKyAgY29uc3QgYWJzbDo6RHVyYXRpb24gc2xvcCA9IGFic2w6Ok1pY3Jvc2Vj
b25kcygyMDApOwogICBFWFBFQ1RfRkFMU0UoV2FpdCh0aW1lb3V0KSk7Ci0gIEVYUEVDVF9MRSh0
aW1lb3V0LCBhYnNsOjpOb3coKSk7CisgIEVYUEVDVF9MRSh0aW1lb3V0LCBhYnNsOjpOb3coKSAr
IHNsb3ApOwogCiAgIGFic2w6OlRpbWUgbmVnYXRpdmVfdGltZW91dCA9IGFic2w6OlVuaXhFcG9j
aCgpIC0gYWJzbDo6TWlsbGlzZWNvbmRzKDEwMCk7CiAgIEVYUEVDVF9GQUxTRShXYWl0KG5lZ2F0
aXZlX3RpbWVvdXQpKTsKLSAgRVhQRUNUX0xFKG5lZ2F0aXZlX3RpbWVvdXQsIGFic2w6Ok5vdygp
KTsgIC8vIHRyaXZpYWxseSB0cnVlIDopCisgIEVYUEVDVF9MRShuZWdhdGl2ZV90aW1lb3V0LCBh
YnNsOjpOb3coKSArIHNsb3ApOyAgLy8gdHJpdmlhbGx5IHRydWUgOikKIAogICBQb3N0KEdldE9y
Q3JlYXRlQ3VycmVudFRocmVhZElkZW50aXR5KCkpOwogICAvLyBUaGUgd2FpdCBoZXJlIGhhcyBh
biBleHBpcmVkIHRpbWVvdXQsIGJ1dCB3ZSBoYXZlIGEgd2FrZSB0byBjb25zdW1lLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0
aW9uL211dGV4LmNjCmluZGV4IDgwZjM0ZjAzNWZjNmI2NzllZWIwYjE0ZDg5Y2ZhZWFhMWY4MGYw
NTEuLjlkNTlhNzlkOTJkOWY3OTI4ZjNkZmUyYTczMDQzNGUxNTRhY2VjNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vbXV0ZXguY2MKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgc3RydWN0IFN5bmNoRXZlbnQg
eyAgICAgLy8gdGhpcyBpcyBhIHRyaXZpYWwgaGFzaCB0YWJsZSBmb3IgdGhlIGV2ZW50cwogLy8g
c2V0ICJiaXRzIiBpbiB0aGUgd29yZCB0aGVyZSAod2FpdGluZyB1bnRpbCBsb2NrYml0IGlzIGNs
ZWFyIGJlZm9yZSBkb2luZwogLy8gc28pLCBhbmQgcmV0dXJuIGEgcmVmY291bnRlZCByZWZlcmVu
Y2UgdGhhdCB3aWxsIHJlbWFpbiB2YWxpZCB1bnRpbAogLy8gVW5yZWZTeW5jaEV2ZW50KCkgaXMg
Y2FsbGVkLiAgSWYgYSBuZXcgU3luY2hFdmVudCBpcyBhbGxvY2F0ZWQsCi0vLyB0aGUgc3RkOjpz
dHJpbmcgbmFtZSBpcyBjb3BpZWQgaW50byBpdC4KKy8vIHRoZSBzdHJpbmcgbmFtZSBpcyBjb3Bp
ZWQgaW50byBpdC4KIC8vIFdoZW4gdXNlZCB3aXRoIGEgbXV0ZXgsIHRoZSBjYWxsZXIgc2hvdWxk
IGFsc28gZW5zdXJlIHRoYXQga011RXZlbnQKIC8vIGlzIHNldCBpbiB0aGUgbXV0ZXggd29yZCwg
YW5kIHNpbWlsYXJseSBmb3IgY29uZGl0aW9uIHZhcmlhYmxlcyBhbmQga0NWRXZlbnQuCiBzdGF0
aWMgU3luY2hFdmVudCAqRW5zdXJlU3luY2hFdmVudChzdGQ6OmF0b21pYzxpbnRwdHJfdD4gKmFk
ZHIsCkBAIC0xODI3LDggKzE4MjcsOCBAQCBib29sIE11dGV4OjpMb2NrU2xvd1dpdGhEZWFkbGlu
ZShNdUhvdyBob3csIGNvbnN0IENvbmRpdGlvbiAqY29uZCwKICAgICAgICAgIGNvbmQgPT0gbnVs
bHB0ciB8fCBFdmFsQ29uZGl0aW9uQW5ub3RhdGVkKGNvbmQsIHRoaXMsIHRydWUsIGhvdyk7CiB9
CiAKLS8vIFJBV19DSEVDS19GTVQoKSB0YWtlcyBhIGNvbmRpdGlvbiwgYSBwcmludGYtc3R5bGUg
Zm9ybWF0IHN0ZDo6c3RyaW5nLCBhbmQKLS8vIHRoZSBwcmludGYtc3R5bGUgYXJndW1lbnQgbGlz
dC4gICBUaGUgZm9ybWF0IHN0ZDo6c3RyaW5nIG11c3QgYmUgYSBsaXRlcmFsLgorLy8gUkFXX0NI
RUNLX0ZNVCgpIHRha2VzIGEgY29uZGl0aW9uLCBhIHByaW50Zi1zdHlsZSBmb3JtYXQgc3RyaW5n
LCBhbmQKKy8vIHRoZSBwcmludGYtc3R5bGUgYXJndW1lbnQgbGlzdC4gICBUaGUgZm9ybWF0IHN0
cmluZyBtdXN0IGJlIGEgbGl0ZXJhbC4KIC8vIEFyZ3VtZW50cyBhZnRlciB0aGUgZmlyc3QgYXJl
IG5vdCBldmFsdWF0ZWQgdW5sZXNzIHRoZSBjb25kaXRpb24gaXMgdHJ1ZS4KICNkZWZpbmUgUkFX
X0NIRUNLX0ZNVChjb25kLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXApAQCAtMTk3NSw3ICsxOTc1LDcgQEAgdm9pZCBNdXRleDo6TG9ja1Nsb3dM
b29wKFN5bmNoV2FpdFBhcmFtcyAqd2FpdHAsIGludCBmbGFncykgewogLy8gVW5sb2NrIHRoaXMg
bXV0ZXgsIHdoaWNoIGlzIGhlbGQgYnkgdGhlIGN1cnJlbnQgdGhyZWFkLgogLy8gSWYgd2FpdHAg
aXMgbm9uLXplcm8sIGl0IG11c3QgYmUgdGhlIHdhaXQgcGFyYW1ldGVycyBmb3IgdGhlIGN1cnJl
bnQgdGhyZWFkCiAvLyB3aGljaCBob2xkcyB0aGUgbG9jayBidXQgaXMgbm90IHJ1bm5hYmxlIGJl
Y2F1c2UgaXRzIGNvbmRpdGlvbiBpcyBmYWxzZQotLy8gb3IgaXQgbiB0aGUgcHJvY2VzcyBvZiBi
bG9ja2luZyBvbiBhIGNvbmRpdGlvbiB2YXJpYWJsZTsgaXQgbXVzdCByZXF1ZXVlCisvLyBvciBp
dCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBibG9ja2luZyBvbiBhIGNvbmRpdGlvbiB2YXJpYWJsZTsg
aXQgbXVzdCByZXF1ZXVlCiAvLyBpdHNlbGYgb24gdGhlIG11dGV4L2NvbmR2YXIgdG8gd2FpdCBm
b3IgaXRzIGNvbmRpdGlvbiB0byBiZWNvbWUgdHJ1ZS4KIHZvaWQgTXV0ZXg6OlVubG9ja1Nsb3co
U3luY2hXYWl0UGFyYW1zICp3YWl0cCkgewogICBpbnRwdHJfdCB2ID0gbXVfLmxvYWQoc3RkOjpt
ZW1vcnlfb3JkZXJfcmVsYXhlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24v
bXV0ZXguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oCmluZGV4IDgzYzIxNDg2N2Fj
NTNhOTEyMmRkNGU5NzUzZmM4YmY3MmUxMjhiZTUuLmEzNzgxOTA1MzhlMmQyMzZlYWYzOTkzMTUw
MDdkMDA4NzJlMjA4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oCkBAIC05NjIsNyArOTYyLDcgQEAg
dm9pZCBSZWdpc3Rlck11dGV4VHJhY2VyKHZvaWQgKCpmbikoY29uc3QgY2hhciAqbXNnLCBjb25z
dCB2b2lkICpvYmosCiAvLwogLy8gVGhlIGZ1bmN0aW9uIHBvaW50ZXIgcmVnaXN0ZXJlZCBoZXJl
IHdpbGwgYmUgY2FsbGVkIGhlcmUgb24gdmFyaW91cyBDb25kVmFyCiAvLyBldmVudHMuICBUaGUg
Y2FsbGJhY2sgaXMgZ2l2ZW4gYW4gb3BhcXVlIGhhbmRsZSB0byB0aGUgQ29uZFZhciBvYmplY3Qg
YW5kCi0vLyBhIHN0ZDo6c3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBldmVudC4gIFRoaXMgaXMgdGhy
ZWFkLXNhZmUsIGJ1dCBvbmx5IGEgc2luZ2xlCisvLyBhIHN0cmluZyBpZGVudGlmeWluZyB0aGUg
ZXZlbnQuICBUaGlzIGlzIHRocmVhZC1zYWZlLCBidXQgb25seSBhIHNpbmdsZQogLy8gdHJhY2Vy
IGNhbiBiZSByZWdpc3RlcmVkLgogLy8KIC8vIEV2ZW50cyB0aGF0IGNhbiBiZSBzZW50IGFyZSAi
V2FpdCIsICJVbndhaXQiLCAiU2lnbmFsIHdha2V1cCIsIGFuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3luY2hyb25pemF0aW9uL25vdGlmaWNhdGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0
aW9uL25vdGlmaWNhdGlvbl90ZXN0LmNjCmluZGV4IDliM2I2YTVhOWU4NGVjMWEzNjU1YTJjOGY0
M2ViOGZiYzU4MzJlZjYuLmQ4NzA4ZDU1MWExNTc1NzQ2ZWEyYTg1NDI2OTcyZmQ5ODE5MTEwMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb25fdGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9uX3Rlc3QuY2MKQEAgLTcxLDEw
ICs3MSwxMyBAQCBzdGF0aWMgdm9pZCBCYXNpY1Rlc3RzKGJvb2wgbm90aWZ5X2JlZm9yZV93YWl0
aW5nLCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikgewogICAgICAgbm90aWZpY2F0aW9uLT5X
YWl0Rm9yTm90aWZpY2F0aW9uV2l0aFRpbWVvdXQoYWJzbDo6TWlsbGlzZWNvbmRzKDApKSk7CiAg
IEVYUEVDVF9GQUxTRShub3RpZmljYXRpb24tPldhaXRGb3JOb3RpZmljYXRpb25XaXRoRGVhZGxp
bmUoYWJzbDo6Tm93KCkpKTsKIAorICBjb25zdCBhYnNsOjpEdXJhdGlvbiBkZWxheSA9IGFic2w6
Ok1pbGxpc2Vjb25kcyg1MCk7CisgIC8vIEFsbG93IGZvciBhIHNsaWdodCBlYXJseSByZXR1cm4s
IHRvIGFjY291bnQgZm9yIHF1YWxpdHkgb2YgaW1wbGVtZW50YXRpb24KKyAgLy8gaXNzdWVzIG9u
IHZhcmlvdXMgcGxhdGZvcm1zLgorICBjb25zdCBhYnNsOjpEdXJhdGlvbiBzbG9wID0gYWJzbDo6
TWljcm9zZWNvbmRzKDIwMCk7CiAgIGFic2w6OlRpbWUgc3RhcnQgPSBhYnNsOjpOb3coKTsKLSAg
RVhQRUNUX0ZBTFNFKAotICAgICAgbm90aWZpY2F0aW9uLT5XYWl0Rm9yTm90aWZpY2F0aW9uV2l0
aFRpbWVvdXQoYWJzbDo6TWlsbGlzZWNvbmRzKDUwKSkpOwotICBFWFBFQ1RfTEUoc3RhcnQgKyBh
YnNsOjpNaWxsaXNlY29uZHMoNTApLCBhYnNsOjpOb3coKSk7CisgIEVYUEVDVF9GQUxTRShub3Rp
ZmljYXRpb24tPldhaXRGb3JOb3RpZmljYXRpb25XaXRoVGltZW91dChkZWxheSkpOworICBFWFBF
Q1RfTEUoc3RhcnQgKyBkZWxheSwgYWJzbDo6Tm93KCkgKyBzbG9wKTsKIAogICBUaHJlYWRTYWZl
Q291bnRlciByZWFkeV9jb3VudGVyOwogICBUaHJlYWRTYWZlQ291bnRlciBkb25lX2NvdW50ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9CVUlMRC5nbgpp
bmRleCA5OTI3YWY4MzQzY2IxNjA5OWUwMjJjZDM3ODBmNDg2ZTdhZmE0MTFkLi41NzU4ZTlkYzFl
M2MzZGM0NWYyOGE1MjVmZmU2MDEzYTgzMzE0NzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0JV
SUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvQlVJTEQuZ24KQEAgLTYyLDggKzYyLDkgQEAgc291cmNl
X3NldCgidGVzdF91dGlsIikgewogICAgICI6dGltZSIsCiAgICAgIi4uL2Jhc2UiLAogICAgICIu
Li90aW1lL2ludGVybmFsL2NjdHo6dGltZV96b25lIiwKLSAgICAiLy90ZXN0aW5nL2d0ZXN0IiwK
ICAgICAiLy90ZXN0aW5nL2dtb2NrIiwKKyAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0LzpnbW9jayIsCiAgIF0KICAgdmlzaWJpbGl0eSA9IFtdCiAg
IHZpc2liaWxpdHkgKz0gWyAiLi4vdGltZToqIiBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2R1
cmF0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbi5jYwppbmRleCBmNDAyMTM3YjBhNjUwZDJi
N2VkNjA1MjYyZmQ5NTQwNjJhYWIyOWEwLi4yOTUwYzdjZGM2MzIwYjRkM2Y4NDM0YjFlMmIwMWFk
NTZkNzJkYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2R1cmF0aW9uLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvZHVyYXRpb24uY2MKQEAgLTY2Niw3ICs2NjYsNyBAQCBzdGQ6OmNocm9ubzo6aG91cnMg
VG9DaHJvbm9Ib3VycyhEdXJhdGlvbiBkKSB7CiB9CiAKIC8vCi0vLyBUby9Gcm9tIHN0ZDo6c3Ry
aW5nIGZvcm1hdHRpbmcuCisvLyBUby9Gcm9tIHN0cmluZyBmb3JtYXR0aW5nLgogLy8KIAogbmFt
ZXNwYWNlIHsKQEAgLTc0NCw3ICs3NDQsNyBAQCB2b2lkIEFwcGVuZE51bWJlclVuaXQoc3RkOjpz
dHJpbmcqIG91dCwgZG91YmxlIG4sIERpc3BsYXlVbml0IHVuaXQpIHsKIH0gIC8vIG5hbWVzcGFj
ZQogCiAvLyBGcm9tIEdvJ3MgZG9jIGF0IGh0dHA6Ly9nb2xhbmcub3JnL3BrZy90aW1lLyNEdXJh
dGlvbi5TdHJpbmcKLS8vICAgW0Zvcm1hdER1cmF0aW9uXSByZXR1cm5zIGEgc3RkOjpzdHJpbmcg
cmVwcmVzZW50aW5nIHRoZSBkdXJhdGlvbiBpbiB0aGUKKy8vICAgW0Zvcm1hdER1cmF0aW9uXSBy
ZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZHVyYXRpb24gaW4gdGhlCiAvLyAgIGZv
cm0gIjcyaDNtMC41cyIuICBMZWFkaW5nIHplcm8gdW5pdHMgYXJlIG9taXR0ZWQuICBBcyBhIHNw
ZWNpYWwKIC8vICAgY2FzZSwgZHVyYXRpb25zIGxlc3MgdGhhbiBvbmUgc2Vjb25kIGZvcm1hdCB1
c2UgYSBzbWFsbGVyIHVuaXQKIC8vICAgKG1pbGxpLSwgbWljcm8tLCBvciBuYW5vc2Vjb25kcykg
dG8gZW5zdXJlIHRoYXQgdGhlIGxlYWRpbmcgZGlnaXQKQEAgLTc4Nyw4ICs3ODcsOCBAQCBzdGQ6
OnN0cmluZyBGb3JtYXREdXJhdGlvbihEdXJhdGlvbiBkKSB7CiBuYW1lc3BhY2UgewogCiAvLyBB
IGhlbHBlciBmb3IgUGFyc2VEdXJhdGlvbigpIHRoYXQgcGFyc2VzIGEgbGVhZGluZyBudW1iZXIg
ZnJvbSB0aGUgZ2l2ZW4KLS8vIHN0ZDo6c3RyaW5nIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCBpbiAq
aW50X3BhcnQvKmZyYWNfcGFydC8qZnJhY19zY2FsZS4gIFRoZQotLy8gZ2l2ZW4gc3RkOjpzdHJp
bmcgcG9pbnRlciBpcyBtb2RpZmllZCB0byBwb2ludCB0byB0aGUgZmlyc3QgdW5jb25zdW1lZCBj
aGFyLgorLy8gc3RyaW5nIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCBpbiAqaW50X3BhcnQvKmZyYWNf
cGFydC8qZnJhY19zY2FsZS4gIFRoZQorLy8gZ2l2ZW4gc3RyaW5nIHBvaW50ZXIgaXMgbW9kaWZp
ZWQgdG8gcG9pbnQgdG8gdGhlIGZpcnN0IHVuY29uc3VtZWQgY2hhci4KIGJvb2wgQ29uc3VtZUR1
cmF0aW9uTnVtYmVyKGNvbnN0IGNoYXIqKiBkcHAsIGludDY0X3QqIGludF9wYXJ0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCogZnJhY19wYXJ0LCBpbnQ2NF90KiBmcmFjX3Nj
YWxlKSB7CiAgICppbnRfcGFydCA9IDA7CkBAIC04MTYsOCArODE2LDggQEAgYm9vbCBDb25zdW1l
RHVyYXRpb25OdW1iZXIoY29uc3QgY2hhcioqIGRwcCwgaW50NjRfdCogaW50X3BhcnQsCiB9CiAK
IC8vIEEgaGVscGVyIGZvciBQYXJzZUR1cmF0aW9uKCkgdGhhdCBwYXJzZXMgYSBsZWFkaW5nIHVu
aXQgZGVzaWduYXRvciAoZS5nLiwKLS8vIG5zLCB1cywgbXMsIHMsIG0sIGgpIGZyb20gdGhlIGdp
dmVuIHN0ZDo6c3RyaW5nIGFuZCBzdG9yZXMgdGhlIHJlc3VsdGluZyB1bml0Ci0vLyBpbiAiKnVu
aXQiLiAgVGhlIGdpdmVuIHN0ZDo6c3RyaW5nIHBvaW50ZXIgaXMgbW9kaWZpZWQgdG8gcG9pbnQg
dG8gdGhlIGZpcnN0CisvLyBucywgdXMsIG1zLCBzLCBtLCBoKSBmcm9tIHRoZSBnaXZlbiBzdHJp
bmcgYW5kIHN0b3JlcyB0aGUgcmVzdWx0aW5nIHVuaXQKKy8vIGluICIqdW5pdCIuICBUaGUgZ2l2
ZW4gc3RyaW5nIHBvaW50ZXIgaXMgbW9kaWZpZWQgdG8gcG9pbnQgdG8gdGhlIGZpcnN0CiAvLyB1
bmNvbnN1bWVkIGNoYXIuCiBib29sIENvbnN1bWVEdXJhdGlvblVuaXQoY29uc3QgY2hhcioqIHN0
YXJ0LCBEdXJhdGlvbiogdW5pdCkgewogICBjb25zdCBjaGFyICpzID0gKnN0YXJ0OwpAQCAtODUw
LDcgKzg1MCw3IEBAIGJvb2wgQ29uc3VtZUR1cmF0aW9uVW5pdChjb25zdCBjaGFyKiogc3RhcnQs
IER1cmF0aW9uKiB1bml0KSB7CiB9ICAvLyBuYW1lc3BhY2UKIAogLy8gRnJvbSBHbydzIGRvYyBh
dCBodHRwOi8vZ29sYW5nLm9yZy9wa2cvdGltZS8jUGFyc2VEdXJhdGlvbgotLy8gICBbUGFyc2VE
dXJhdGlvbl0gcGFyc2VzIGEgZHVyYXRpb24gc3RkOjpzdHJpbmcuICBBIGR1cmF0aW9uIHN0ZDo6
c3RyaW5nIGlzCisvLyAgIFtQYXJzZUR1cmF0aW9uXSBwYXJzZXMgYSBkdXJhdGlvbiBzdHJpbmcu
ICBBIGR1cmF0aW9uIHN0cmluZyBpcwogLy8gICBhIHBvc3NpYmx5IHNpZ25lZCBzZXF1ZW5jZSBv
ZiBkZWNpbWFsIG51bWJlcnMsIGVhY2ggd2l0aCBvcHRpb25hbAogLy8gICBmcmFjdGlvbiBhbmQg
YSB1bml0IHN1ZmZpeCwgc3VjaCBhcyAiMzAwbXMiLCAiLTEuNWgiIG9yICIyaDQ1bSIuCiAvLyAg
IFZhbGlkIHRpbWUgdW5pdHMgYXJlICJucyIsICJ1cyIgIm1zIiwgInMiLCAibSIsICJoIi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXQuY2MKaW5k
ZXggZTk4ZTYwYTM3MmJmYzNhNDQ3MmM4YTE3YWM3YTUzODM3ODJiODg3YS4uZWU1OTdlNDA3YTlk
ZGQyMjZhOGY4ODA2NTlmMmQ1MDQyN2Y5MTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3Jt
YXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXQuY2MKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBQ
YXJzZVRpbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlu
cHV0LCBhYnNsOjpUaW1lKgogICByZXR1cm4gYWJzbDo6UGFyc2VUaW1lKGZvcm1hdCwgaW5wdXQs
IGFic2w6OlVUQ1RpbWVab25lKCksIHRpbWUsIGVycik7CiB9CiAKLS8vIElmIHRoZSBpbnB1dCBz
dGQ6OnN0cmluZyBkb2VzIG5vdCBjb250YWluIGFuIGV4cGxpY2l0IFVUQyBvZmZzZXQsIGludGVy
cHJldAorLy8gSWYgdGhlIGlucHV0IHN0cmluZyBkb2VzIG5vdCBjb250YWluIGFuIGV4cGxpY2l0
IFVUQyBvZmZzZXQsIGludGVycHJldAogLy8gdGhlIGZpZWxkcyB3aXRoIHJlc3BlY3QgdG8gdGhl
IGdpdmVuIFRpbWVab25lLgogYm9vbCBQYXJzZVRpbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1h
dCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LCBhYnNsOjpUaW1lWm9uZSB0eiwKICAgICAgICAg
ICAgICAgIGFic2w6OlRpbWUqIHRpbWUsIHN0ZDo6c3RyaW5nKiBlcnIpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGltZS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmgKaW5kZXggODk4
MjIyYjRjN2FmMjk4MzBlYTIwNTA3ZDljMjk0ZjJkMGVmOTY5Yy4uMDg0MmZhNGE0Njg5NTJmYmI3
MWZlOWU5OGI4ODNlMmZhNDdkOTZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmgKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNl
IGNjdHogewogLy8gaW5mZXJpb3IgZmllbGRzIHRvIHRoZWlyIG1pbmltdW0gdmFsaWQgdmFsdWUg
KGFzIGRlc2NyaWJlZCBhYm92ZSkuIFRoZQogLy8gZm9sbG93aW5nIGFyZSBleGFtcGxlcyBvZiBo
b3cgZWFjaCBvZiB0aGUgc2l4IHR5cGVzIHdvdWxkIGFsaWduIHRoZSBmaWVsZHMKIC8vIHJlcHJl
c2VudGluZyBOb3ZlbWJlciAyMiwgMjAxNSBhdCAxMjozNDo1NiBpbiB0aGUgYWZ0ZXJub29uLiAo
Tm90ZTogdGhlCi0vLyBzdGQ6OnN0cmluZyBmb3JtYXQgdXNlZCBoZXJlIGlzIG5vdCBpbXBvcnRh
bnQ7IGl0J3MganVzdCBhIHNob3J0aGFuZCB3YXkgb2YKKy8vIHN0cmluZyBmb3JtYXQgdXNlZCBo
ZXJlIGlzIG5vdCBpbXBvcnRhbnQ7IGl0J3MganVzdCBhIHNob3J0aGFuZCB3YXkgb2YKIC8vIHNo
b3dpbmcgdGhlIHNpeCBZTURITVMgZmllbGRzLikKIC8vCiAvLyAgIGNpdmlsX3NlY29uZCAgMjAx
NS0xMS0yMiAxMjozNDo1NgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2lu
Y2x1ZGUvY2N0ei9jaXZpbF90aW1lX2RldGFpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lX2RldGFpbC5oCmluZGV4IDIzNjJhNGY0ZmJjOTU4ZmEz
MGRjZmU3YTE0MTg3Njg4ZGY0NjJhZGYuLmQ3ZjcyNzE3ZWNlMjU0MDg4NzQwZTczNzU4Mjg1OTZj
OTYzZmIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2Nj
dHovY2l2aWxfdGltZV9kZXRhaWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5j
bHVkZS9jY3R6L2NpdmlsX3RpbWVfZGV0YWlsLmgKQEAgLTM1NSwxMSArMzU1LDExIEBAIGNsYXNz
IGNpdmlsX3RpbWUgewogICAgICAgOiBjaXZpbF90aW1lKGN0LmZfKSB7fQogCiAgIC8vIEZhY3Rv
cmllcyBmb3IgdGhlIG1heGltdW0vbWluaW11bSByZXByZXNlbnRhYmxlIGNpdmlsX3RpbWUuCi0g
IHN0YXRpYyBjaXZpbF90aW1lIG1heCgpIHsKKyAgc3RhdGljIENPTlNURVhQUl9GIGNpdmlsX3Rp
bWUgbWF4KCkgewogICAgIGNvbnN0IGF1dG8gbWF4X3llYXIgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHN0ZDo6aW50X2xlYXN0NjRfdD46Om1heCgpOwogICAgIHJldHVybiBjaXZpbF90aW1lKG1heF95
ZWFyLCAxMiwgMzEsIDIzLCA1OSwgNTkpOwogICB9Ci0gIHN0YXRpYyBjaXZpbF90aW1lIG1pbigp
IHsKKyAgc3RhdGljIENPTlNURVhQUl9GIGNpdmlsX3RpbWUgbWluKCkgewogICAgIGNvbnN0IGF1
dG8gbWluX3llYXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6aW50X2xlYXN0NjRfdD46Om1p
bigpOwogICAgIHJldHVybiBjaXZpbF90aW1lKG1pbl95ZWFyLCAxLCAxLCAwLCAwLCAwKTsKICAg
fQpAQCAtNDE2LDYgKzQxNiwxMiBAQCBjbGFzcyBjaXZpbF90aW1lIHsKICAgICByZXR1cm4gZGlm
ZmVyZW5jZShUe30sIGxocy5mXywgcmhzLmZfKTsKICAgfQogCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgY2l2aWxfdGltZSBhKSB7CisgICAg
cmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBhLmZfLnksIGEuZl8ubSwgYS5mXy5kLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5mXy5oaCwgYS5mXy5tbSwgYS5m
Xy5zcyk7CisgIH0KKwogIHByaXZhdGU6CiAgIC8vIEFsbCBpbnN0YW50aWF0aW9ucyBvZiB0aGlz
IHRlbXBsYXRlIGFyZSBhbGxvd2VkIHRvIGNhbGwgdGhlIGZvbGxvd2luZwogICAvLyBwcml2YXRl
IGNvbnN0cnVjdG9yIGFuZCBhY2Nlc3MgdGhlIHByaXZhdGUgZmllbGRzIG1lbWJlci4KQEAgLTUw
OCwxMiArNTE0LDggQEAgQ09OU1RFWFBSX0Ygd2Vla2RheSBnZXRfd2Vla2RheShjb25zdCBjaXZp
bF9kYXkmIGNkKSBub2V4Y2VwdCB7CiAgIENPTlNURVhQUl9EIGludCBrX3dlZWtkYXlfb2Zmc2V0
c1sxICsgMTJdID0gewogICAgICAgLTEsIDAsIDMsIDIsIDUsIDAsIDMsIDUsIDEsIDQsIDYsIDIs
IDQsCiAgIH07Ci0gIHllYXJfdCB3ZCA9IGNkLnllYXIoKSAtIChjZC5tb250aCgpIDwgMyk7Ci0g
IGlmICh3ZCA+PSAwKSB7Ci0gICAgd2QgKz0gd2QgLyA0IC0gd2QgLyAxMDAgKyB3ZCAvIDQwMDsK
LSAgfSBlbHNlIHsKLSAgICB3ZCArPSAod2QgLSAzKSAvIDQgLSAod2QgLSA5OSkgLyAxMDAgKyAo
d2QgLSAzOTkpIC8gNDAwOwotICB9CisgIHllYXJfdCB3ZCA9IDI0MDAgKyAoY2QueWVhcigpICUg
NDAwKSAtIChjZC5tb250aCgpIDwgMyk7CisgIHdkICs9IHdkIC8gNCAtIHdkIC8gMTAwICsgd2Qg
LyA0MDA7CiAgIHdkICs9IGtfd2Vla2RheV9vZmZzZXRzW2NkLm1vbnRoKCldICsgY2QuZGF5KCk7
CiAgIHJldHVybiBrX3dlZWtkYXlfYnlfc3VuX29mZlsod2QgJSA3ICsgNykgJSA3XTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96b25l
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3RpbWVfem9uZS5oCmlu
ZGV4IDBiOTc2NGVhNzJhOWNhYTNlNWYyZjdmZWUwNDI3MzU3YWVkMjg4MDguLmYyOGRhZDE3NTUw
NjU5YjA3ZjBjMjAwMzhiYzQ3ZjI1YTAyZjYyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96b25lLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L2luY2x1ZGUvY2N0ei90aW1lX3pvbmUuaApAQCAtMjI0LDYgKzIyNCwxMSBAQCBj
bGFzcyB0aW1lX3pvbmUgewogICAgIHJldHVybiAhKGxocyA9PSByaHMpOwogICB9CiAKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCB0aW1lX3pv
bmUgdHopIHsKKyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksICZ0ei5lZmZlY3Rp
dmVfaW1wbCgpKTsKKyAgfQorCiAgIGNsYXNzIEltcGw7CiAKICBwcml2YXRlOgpAQCAtMjc5LDcg
KzI4NCw3IEBAIGJvb2wgcGFyc2UoY29uc3Qgc3RkOjpzdHJpbmcmLCBjb25zdCBzdGQ6OnN0cmlu
ZyYsIGNvbnN0IHRpbWVfem9uZSYsCiB9ICAvLyBuYW1lc3BhY2UgZGV0YWlsCiAKIC8vIEZvcm1h
dHMgdGhlIGdpdmVuIHRpbWVfcG9pbnQgaW4gdGhlIGdpdmVuIGNjdHo6OnRpbWVfem9uZSBhY2Nv
cmRpbmcgdG8KLS8vIHRoZSBwcm92aWRlZCBmb3JtYXQgc3RkOjpzdHJpbmcuIFVzZXMgc3RyZnRp
bWUoKS1saWtlIGZvcm1hdHRpbmcgb3B0aW9ucywKKy8vIHRoZSBwcm92aWRlZCBmb3JtYXQgc3Ry
aW5nLiBVc2VzIHN0cmZ0aW1lKCktbGlrZSBmb3JtYXR0aW5nIG9wdGlvbnMsCiAvLyB3aXRoIHRo
ZSBmb2xsb3dpbmcgZXh0ZW5zaW9uczoKIC8vCiAvLyAgIC0gJUV6ICAtIFJGQzMzMzktY29tcGF0
aWJsZSBudW1lcmljIFVUQyBvZmZzZXQgKCtoaDptbSBvciAtaGg6bW0pCkBAIC0yOTgsNyArMzAz
LDcgQEAgYm9vbCBwYXJzZShjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0IHN0ZDo6c3RyaW5nJiwg
Y29uc3QgdGltZV96b25lJiwKIC8vIG1vcmUgdGhhbiBmb3VyIGNoYXJhY3RlcnMsIGp1c3QgbGlr
ZSAlWS4KIC8vCiAvLyBUaXA6IEZvcm1hdCBzdHJpbmdzIHNob3VsZCBpbmNsdWRlIHRoZSBVVEMg
b2Zmc2V0IChlLmcuLCAleiwgJUV6LCBvciAlRSp6KQotLy8gc28gdGhhdCB0aGUgcmVzdWx0aW5n
IHN0ZDo6c3RyaW5nIHVuaXF1ZWx5IGlkZW50aWZpZXMgYW4gYWJzb2x1dGUgdGltZS4KKy8vIHNv
IHRoYXQgdGhlIHJlc3VsdGluZyBzdHJpbmcgdW5pcXVlbHkgaWRlbnRpZmllcyBhbiBhYnNvbHV0
ZSB0aW1lLgogLy8KIC8vIEV4YW1wbGU6CiAvLyAgIGNjdHo6OnRpbWVfem9uZSBsYXg7CkBAIC0z
MTQsNyArMzE5LDcgQEAgaW5saW5lIHN0ZDo6c3RyaW5nIGZvcm1hdChjb25zdCBzdGQ6OnN0cmlu
ZyYgZm10LCBjb25zdCB0aW1lX3BvaW50PEQ+JiB0cCwKICAgcmV0dXJuIGRldGFpbDo6Zm9ybWF0
KGZtdCwgcC5maXJzdCwgbiwgdHopOwogfQogCi0vLyBQYXJzZXMgYW4gaW5wdXQgc3RkOjpzdHJp
bmcgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBmb3JtYXQgc3RkOjpzdHJpbmcgYW5kCisvLyBQ
YXJzZXMgYW4gaW5wdXQgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgZm9ybWF0IHN0
cmluZyBhbmQKIC8vIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgdGltZV9wb2ludC4gVXNlcyBz
dHJmdGltZSgpLWxpa2UgZm9ybWF0dGluZwogLy8gb3B0aW9ucywgd2l0aCB0aGUgc2FtZSBleHRl
bnNpb25zIGFzIGNjdHo6OmZvcm1hdCgpLCBidXQgd2l0aCB0aGUKIC8vIGV4Y2VwdGlvbnMgdGhh
dCAlRSNTIGlzIGludGVycHJldGVkIGFzICVFKlMsIGFuZCAlRSNmIGFzICVFKmYuICVFegpAQCAt
MzI4LDcgKzMzMyw3IEBAIGlubGluZSBzdGQ6OnN0cmluZyBmb3JtYXQoY29uc3Qgc3RkOjpzdHJp
bmcmIGZtdCwgY29uc3QgdGltZV9wb2ludDxEPiYgdHAsCiAvLwogLy8gICAiMTk3MC0wMS0wMSAw
MDowMDowMC4wICswMDAwIgogLy8KLS8vIEZvciBleGFtcGxlLCBwYXJzaW5nIGEgc3RkOjpzdHJp
bmcgb2YgIjE1OjQ1IiAoJUg6JU0pIHdpbGwgcmV0dXJuIGEgdGltZV9wb2ludAorLy8gRm9yIGV4
YW1wbGUsIHBhcnNpbmcgYSBzdHJpbmcgb2YgIjE1OjQ1IiAoJUg6JU0pIHdpbGwgcmV0dXJuIGEg
dGltZV9wb2ludAogLy8gdGhhdCByZXByZXNlbnRzICIxOTcwLTAxLTAxIDE1OjQ1OjAwLjAgKzAw
MDAiLgogLy8KIC8vIE5vdGUgdGhhdCBwYXJzZSgpIHJldHVybnMgdGltZSBpbnN0YW50cywgc28g
aXQgbWFrZXMgbW9zdCBzZW5zZSB0byBwYXJzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3NyYy9jY3R6X2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei9zcmMvY2N0el9iZW5jaG1hcmsuY2MKaW5kZXggYzk3ZGY3OGMwOWM4Mzk0NWU2OGY1NTExYjdi
OTJlNGFmMzE3NzBjNC4uNDQ5OGQ3ZDBiNmI3ZTBjNGE2ZmRiOTIxNDljNzg3OTZkM2QwOGI2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jY3R6X2JlbmNobWFyay5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2NjdHpfYmVuY2htYXJrLmNjCkBA
IC03NzgsMTMgKzc3OCwxMyBAQCB2b2lkIEJNX1pvbmVfVVRDVGltZVpvbmUoYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKIH0KIEJFTkNITUFSSyhCTV9ab25lX1VUQ1RpbWVab25lKTsKIAotLy8g
SW4gZWFjaCAiVG9EYXRlVGltZSIgYmVuY2htYXJrIHdlIHN3aXRjaCBiZXR3ZWVuIHR3byBpbnN0
YW50cwotLy8gc2VwYXJhdGVkIGJ5IGF0IGxlYXN0IG9uZSB0cmFuc2l0aW9uIGluIG9yZGVyIHRv
IGRlZmVhdCBhbnkKLS8vIGludGVybmFsIGNhY2hpbmcgb2YgcHJldmlvdXMgcmVzdWx0cyAoZS5n
Liwgc2VlIGxvY2FsX3RpbWVfaGludF8pLgorLy8gSW4gZWFjaCAiVG9DaXZpbCIgYmVuY2htYXJr
IHdlIHN3aXRjaCBiZXR3ZWVuIHR3byBpbnN0YW50cyBzZXBhcmF0ZWQKKy8vIGJ5IGF0IGxlYXN0
IG9uZSB0cmFuc2l0aW9uIGluIG9yZGVyIHRvIGRlZmVhdCBhbnkgaW50ZXJuYWwgY2FjaGluZyBv
ZgorLy8gcHJldmlvdXMgcmVzdWx0cyAoZS5nLiwgc2VlIGxvY2FsX3RpbWVfaGludF8pLgogLy8K
IC8vIFRoZSAiVVRDIiB2YXJpYW50cyB1c2UgVVRDIGluc3RlYWQgb2YgdGhlIEdvb2dsZS9sb2Nh
bCB0aW1lIHpvbmUuCiAKLXZvaWQgQk1fVGltZV9Ub0RhdGVUaW1lX0NDVFooYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fVGltZV9Ub0NpdmlsX0NDVFooYmVuY2htYXJrOjpTdGF0
ZSYgc3RhdGUpIHsKICAgY29uc3QgY2N0ejo6dGltZV96b25lIHR6ID0gVGVzdFRpbWVab25lKCk7
CiAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdHAgPQogICAgICAgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoMTM4NDU2OTAyNyk7CkBAIC03OTYs
OSArNzk2LDkgQEAgdm9pZCBCTV9UaW1lX1RvRGF0ZVRpbWVfQ0NUWihiZW5jaG1hcms6OlN0YXRl
JiBzdGF0ZSkgewogICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShjY3R6Ojpjb252ZXJ0KHRw
LCB0eikpOwogICB9CiB9Ci1CRU5DSE1BUksoQk1fVGltZV9Ub0RhdGVUaW1lX0NDVFopOworQkVO
Q0hNQVJLKEJNX1RpbWVfVG9DaXZpbF9DQ1RaKTsKIAotdm9pZCBCTV9UaW1lX1RvRGF0ZVRpbWVf
TGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9pZCBCTV9UaW1lX1RvQ2l2aWxfTGli
YyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICAvLyBObyB0aW1lem9uZSBzdXBwb3J0LCBz
byBqdXN0IHVzZSBsb2NhbHRpbWUuCiAgIHRpbWVfdCB0ID0gMTM4NDU2OTAyNzsKICAgdGltZV90
IHQyID0gMTQxODk2MjU3ODsKQEAgLTgxMyw5ICs4MTMsOSBAQCB2b2lkIEJNX1RpbWVfVG9EYXRl
VGltZV9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAjZW5kaWYKICAgfQogfQotQkVO
Q0hNQVJLKEJNX1RpbWVfVG9EYXRlVGltZV9MaWJjKTsKK0JFTkNITUFSSyhCTV9UaW1lX1RvQ2l2
aWxfTGliYyk7CiAKLXZvaWQgQk1fVGltZV9Ub0RhdGVUaW1lVVRDX0NDVFooYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fVGltZV9Ub0NpdmlsVVRDX0NDVFooYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKICAgY29uc3QgY2N0ejo6dGltZV96b25lIHR6ID0gY2N0ejo6dXRjX3Rp
bWVfem9uZSgpOwogICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRwID0K
ICAgICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGltZV90KDEzODQ1NjkwMjcp
OwpAQCAtODI0LDkgKzgyNCw5IEBAIHZvaWQgQk1fVGltZV9Ub0RhdGVUaW1lVVRDX0NDVFooYmVu
Y2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoY2N0
ejo6Y29udmVydCh0cCwgdHopKTsKICAgfQogfQotQkVOQ0hNQVJLKEJNX1RpbWVfVG9EYXRlVGlt
ZVVUQ19DQ1RaKTsKK0JFTkNITUFSSyhCTV9UaW1lX1RvQ2l2aWxVVENfQ0NUWik7CiAKLXZvaWQg
Qk1fVGltZV9Ub0RhdGVUaW1lVVRDX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3Zv
aWQgQk1fVGltZV9Ub0NpdmlsVVRDX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAg
dGltZV90IHQgPSAxMzg0NTY5MDI3OwogICBzdHJ1Y3QgdG0gdG07CiAgIHdoaWxlIChzdGF0ZS5L
ZWVwUnVubmluZygpKSB7CkBAIC04MzgsMTYgKzgzOCwxNiBAQCB2b2lkIEJNX1RpbWVfVG9EYXRl
VGltZVVUQ19MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAjZW5kaWYKICAgfQogfQot
QkVOQ0hNQVJLKEJNX1RpbWVfVG9EYXRlVGltZVVUQ19MaWJjKTsKK0JFTkNITUFSSyhCTV9UaW1l
X1RvQ2l2aWxVVENfTGliYyk7CiAKLS8vIEluIGVhY2ggIkZyb21EYXRlVGltZSIgYmVuY2htYXJr
IHdlIHN3aXRjaCBiZXR3ZWVuIHR3byBZTURobXMKLS8vIHZhbHVlcyBzZXBhcmF0ZWQgYnkgYXQg
bGVhc3Qgb25lIHRyYW5zaXRpb24gaW4gb3JkZXIgdG8gZGVmZWF0IGFueQotLy8gaW50ZXJuYWwg
Y2FjaGluZyBvZiBwcmV2aW91cyByZXN1bHRzIChlLmcuLCBzZWUgdGltZV9sb2NhbF9oaW50Xyku
CisvLyBJbiBlYWNoICJGcm9tQ2l2aWwiIGJlbmNobWFyayB3ZSBzd2l0Y2ggYmV0d2VlbiB0d28g
WU1EaG1zIHZhbHVlcworLy8gc2VwYXJhdGVkIGJ5IGF0IGxlYXN0IG9uZSB0cmFuc2l0aW9uIGlu
IG9yZGVyIHRvIGRlZmVhdCBhbnkgaW50ZXJuYWwKKy8vIGNhY2hpbmcgb2YgcHJldmlvdXMgcmVz
dWx0cyAoZS5nLiwgc2VlIHRpbWVfbG9jYWxfaGludF8pLgogLy8KIC8vIFRoZSAiVVRDIiB2YXJp
YW50cyB1c2UgVVRDIGluc3RlYWQgb2YgdGhlIEdvb2dsZS9sb2NhbCB0aW1lIHpvbmUuCiAvLyBU
aGUgIkRheTAiIHZhcmlhbnRzIHJlcXVpcmUgbm9ybWFsaXphdGlvbiBvZiB0aGUgZGF5IG9mIG1v
bnRoLgogCi12b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYg
c3RhdGUpIHsKK3ZvaWQgQk1fVGltZV9Gcm9tQ2l2aWxfQ0NUWihiZW5jaG1hcms6OlN0YXRlJiBz
dGF0ZSkgewogICBjb25zdCBjY3R6Ojp0aW1lX3pvbmUgdHogPSBUZXN0VGltZVpvbmUoKTsKICAg
aW50IGkgPSAwOwogICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewpAQCAtODYwLDkgKzg2
MCw5IEBAIHZvaWQgQk1fVGltZV9Gcm9tRGF0ZVRpbWVfQ0NUWihiZW5jaG1hcms6OlN0YXRlJiBz
dGF0ZSkgewogICAgIH0KICAgfQogfQotQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbURhdGVUaW1lX0ND
VFopOworQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNpdmlsX0NDVFopOwogCi12b2lkIEJNX1RpbWVf
RnJvbURhdGVUaW1lX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fVGlt
ZV9Gcm9tQ2l2aWxfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICAvLyBObyB0aW1l
em9uZSBzdXBwb3J0LCBzbyBqdXN0IHVzZSBsb2NhbHRpbWUuCiAgIGludCBpID0gMDsKICAgd2hp
bGUgKHN0YXRlLktlZXBSdW5uaW5nKCkpIHsKQEAgLTg4NiwyMCArODg2LDIwIEBAIHZvaWQgQk1f
VGltZV9Gcm9tRGF0ZVRpbWVfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICAgIGJl
bmNobWFyazo6RG9Ob3RPcHRpbWl6ZShta3RpbWUoJnRtKSk7CiAgIH0KIH0KLUJFTkNITUFSSyhC
TV9UaW1lX0Zyb21EYXRlVGltZV9MaWJjKTsKK0JFTkNITUFSSyhCTV9UaW1lX0Zyb21DaXZpbF9M
aWJjKTsKIAotdm9pZCBCTV9UaW1lX0Zyb21EYXRlVGltZVVUQ19DQ1RaKGJlbmNobWFyazo6U3Rh
dGUmIHN0YXRlKSB7Cit2b2lkIEJNX1RpbWVfRnJvbUNpdmlsVVRDX0NDVFooYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKICAgY29uc3QgY2N0ejo6dGltZV96b25lIHR6ID0gY2N0ejo6dXRjX3Rp
bWVfem9uZSgpOwogICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewogICAgIGJlbmNobWFy
azo6RG9Ob3RPcHRpbWl6ZSgKICAgICAgICAgY2N0ejo6Y29udmVydChjY3R6OjpjaXZpbF9zZWNv
bmQoMjAxNCwgMTIsIDE4LCAyMCwgMTYsIDE4KSwgdHopKTsKICAgfQogfQotQkVOQ0hNQVJLKEJN
X1RpbWVfRnJvbURhdGVUaW1lVVRDX0NDVFopOworQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNpdmls
VVRDX0NDVFopOwogCi0vLyBUaGVyZSBpcyBubyBCTV9UaW1lX0Zyb21EYXRlVGltZVVUQ19MaWJj
LgorLy8gVGhlcmUgaXMgbm8gQk1fVGltZV9Gcm9tQ2l2aWxVVENfTGliYy4KIAotdm9pZCBCTV9U
aW1lX0Zyb21EYXRlVGltZURheTBfQ0NUWihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9p
ZCBCTV9UaW1lX0Zyb21DaXZpbERheTBfQ0NUWihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewog
ICBjb25zdCBjY3R6Ojp0aW1lX3pvbmUgdHogPSBUZXN0VGltZVpvbmUoKTsKICAgaW50IGkgPSAw
OwogICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewpAQCAtOTEyLDkgKzkxMiw5IEBAIHZv
aWQgQk1fVGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUp
IHsKICAgICB9CiAgIH0KIH0KLUJFTkNITUFSSyhCTV9UaW1lX0Zyb21EYXRlVGltZURheTBfQ0NU
Wik7CitCRU5DSE1BUksoQk1fVGltZV9Gcm9tQ2l2aWxEYXkwX0NDVFopOwogCi12b2lkIEJNX1Rp
bWVfRnJvbURhdGVUaW1lRGF5MF9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cit2b2lk
IEJNX1RpbWVfRnJvbUNpdmlsRGF5MF9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAg
IC8vIE5vIHRpbWV6b25lIHN1cHBvcnQsIHNvIGp1c3QgdXNlIGxvY2FsdGltZS4KICAgaW50IGkg
PSAwOwogICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewpAQCAtOTM4LDcgKzkzOCw3IEBA
IHZvaWQgQk1fVGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUobWt0aW1lKCZ0bSkpOwogICB9CiB9
Ci1CRU5DSE1BUksoQk1fVGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0xpYmMpOworQkVOQ0hNQVJLKEJN
X1RpbWVfRnJvbUNpdmlsRGF5MF9MaWJjKTsKIAogY29uc3QgY2hhciogY29uc3Qga0Zvcm1hdHNb
XSA9IHsKICAgICBSRkMxMTIzX2Z1bGwsICAgICAgICAgLy8gMApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jaXZpbF90aW1lX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2lu
dGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVfdGVzdC5jYwppbmRleCBmNjY0OGM4ZjFmMjFmMzIw
N2FiYTFiNWU0YmIwNjYwNjFiMDY0YjY1Li5mYWZmZGU0NzBhZjRmNDVjM2I4YTRiYWEwYzBkMmJj
ZmEzMTg4MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2Npdmls
X3RpbWVfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2NpdmlsX3Rp
bWVfdGVzdC5jYwpAQCAtNjIwLDcgKzYyMCw3IEBAIFRFU1QoQ2l2aWxUaW1lLCBSZWxhdGlvbmFs
KSB7CiAgIFRFU1RfUkVMQVRJT05BTChjaXZpbF9zZWNvbmQoMjAxNCwgMSwgMSwgMSwgMSwgMCks
CiAgICAgICAgICAgICAgICAgICBjaXZpbF9zZWNvbmQoMjAxNCwgMSwgMSwgMSwgMSwgMSkpOwog
Ci0gIC8vIFRlc3RzIHRoZSByZWxhdGlvbmFsIG9wZXJhdG9ycyBvZiB0d28gZGlmZmVyZW50IENp
dmlsVGltZSB0eXBlcy4KKyAgLy8gVGVzdHMgdGhlIHJlbGF0aW9uYWwgb3BlcmF0b3JzIG9mIHR3
byBkaWZmZXJlbnQgY2l2aWwtdGltZSB0eXBlcy4KICAgVEVTVF9SRUxBVElPTkFMKGNpdmlsX2Rh
eSgyMDE0LCAxLCAxKSwgY2l2aWxfbWludXRlKDIwMTQsIDEsIDEsIDEsIDEpKTsKICAgVEVTVF9S
RUxBVElPTkFMKGNpdmlsX2RheSgyMDE0LCAxLCAxKSwgY2l2aWxfbW9udGgoMjAxNCwgMikpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhl
ZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ZpeGVkLmNjCmlu
ZGV4IDU5OGIwOGZkZTQyMjM2Y2YxMzdlMGU4MmQwOWQ5ZjJjMWYxYjIyZjAuLmRiOWE0NzVhOWI0
OTA0Y2IyYzRkYTZiNWNmMjgwY2E4Y2E0MzcyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ZpeGVkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei9zcmMvdGltZV96b25lX2ZpeGVkLmNjCkBAIC0xNSw4ICsxNSw4IEBACiAjaW5jbHVk
ZSAidGltZV96b25lX2ZpeGVkLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8
Y2Fzc2VydD4KICNpbmNsdWRlIDxjaHJvbm8+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUg
PGNzdHJpbmc+CiAjaW5jbHVkZSA8c3RyaW5nPgogCkBAIC0yOSw4ICsyOSwxNSBAQCBuYW1lc3Bh
Y2UgewogLy8gVGhlIHByZWZpeCB1c2VkIGZvciB0aGUgaW50ZXJuYWwgbmFtZXMgb2YgZml4ZWQt
b2Zmc2V0IHpvbmVzLgogY29uc3QgY2hhciBrRml4ZWRPZmZzZXRQcmVmaXhbXSA9ICJGaXhlZC9V
VEMiOwogCitjb25zdCBjaGFyIGtEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5IjsKKworY2hhciogRm9y
bWF0MDJkKGNoYXIqIHAsIGludCB2KSB7CisgICpwKysgPSBrRGlnaXRzWyh2IC8gMTApICUgMTBd
OworICAqcCsrID0ga0RpZ2l0c1t2ICUgMTBdOworICByZXR1cm4gcDsKK30KKwogaW50IFBhcnNl
MDJkKGNvbnN0IGNoYXIqIHApIHsKLSAgc3RhdGljIGNvbnN0IGNoYXIga0RpZ2l0c1tdID0gIjAx
MjM0NTY3ODkiOwogICBpZiAoY29uc3QgY2hhciogYXAgPSBzdGQ6OnN0cmNocihrRGlnaXRzLCAq
cCkpIHsKICAgICBpbnQgdiA9IHN0YXRpY19jYXN0PGludD4oYXAgLSBrRGlnaXRzKTsKICAgICBp
ZiAoY29uc3QgY2hhciogYnAgPSBzdGQ6OnN0cmNocihrRGlnaXRzLCAqKytwKSkgewpAQCAtOTUs
OSArMTAyLDE3IEBAIHN0ZDo6c3RyaW5nIEZpeGVkT2Zmc2V0VG9OYW1lKGNvbnN0IHNlY29uZHMm
IG9mZnNldCkgewogICB9CiAgIGludCBob3VycyA9IG1pbnV0ZXMgLyA2MDsKICAgbWludXRlcyAl
PSA2MDsKLSAgY2hhciBidWZbc2l6ZW9mKGtGaXhlZE9mZnNldFByZWZpeCkgKyBzaXplb2YoIi0y
NDowMDowMCIpXTsKLSAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVzJWMlMDJkOiUwMmQ6
JTAyZCIsCi0gICAgICAgICAgIGtGaXhlZE9mZnNldFByZWZpeCwgc2lnbiwgaG91cnMsIG1pbnV0
ZXMsIHNlY29uZHMpOworICBjaGFyIGJ1ZltzaXplb2Yoa0ZpeGVkT2Zmc2V0UHJlZml4KSAtIDEg
KyBzaXplb2YoIi0yNDowMDowMCIpXTsKKyAgc3RkOjpzdHJjcHkoYnVmLCBrRml4ZWRPZmZzZXRQ
cmVmaXgpOworICBjaGFyKiBlcCA9IGJ1ZiArIHNpemVvZihrRml4ZWRPZmZzZXRQcmVmaXgpIC0g
MTsKKyAgKmVwKysgPSBzaWduOworICBlcCA9IEZvcm1hdDAyZChlcCwgaG91cnMpOworICAqZXAr
KyA9ICc6JzsKKyAgZXAgPSBGb3JtYXQwMmQoZXAsIG1pbnV0ZXMpOworICAqZXArKyA9ICc6JzsK
KyAgZXAgPSBGb3JtYXQwMmQoZXAsIHNlY29uZHMpOworICAqZXArKyA9ICdcMCc7CisgIGFzc2Vy
dChlcCA9PSBidWYgKyBzaXplb2YoYnVmKSk7CiAgIHJldHVybiBidWY7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdC5jYwppbmRleCAxYjAy
Mzg0OGVmYTE4ZTgxNTYyZDU3YjM5NTVhYzEyMGRmODU1NDc0Li5hMDJiMWUzNDFhYzBjY2VmZDYw
ZTBmYTg1OTAxNGU4ZDBhZDA1YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovc3JjL3RpbWVfem9uZV9mb3JtYXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3NyYy90aW1lX3pvbmVfZm9ybWF0LmNjCkBAIC01MzMsNyArNTMzLDcgQEAgY29uc3QgY2hhciog
UGFyc2VTdWJTZWNvbmRzKGNvbnN0IGNoYXIqIGRwLCBkZXRhaWw6OmZlbXRvc2Vjb25kcyogc3Vi
c2Vjb25kcykgewogICByZXR1cm4gZHA7CiB9CiAKLS8vIFBhcnNlcyBhIHN0ZDo6c3RyaW5nIGlu
dG8gYSBzdGQ6OnRtIHVzaW5nIHN0cnB0aW1lKDMpLgorLy8gUGFyc2VzIGEgc3RyaW5nIGludG8g
YSBzdGQ6OnRtIHVzaW5nIHN0cnB0aW1lKDMpLgogY29uc3QgY2hhciogUGFyc2VUTShjb25zdCBj
aGFyKiBkcCwgY29uc3QgY2hhciogZm10LCBzdGQ6OnRtKiB0bSkgewogICBpZiAoZHAgIT0gbnVs
bHB0cikgewogICAgIGRwID0gc3RycHRpbWUoZHAsIGZtdCwgdG0pOwpAQCAtNzQzLDcgKzc0Myw3
IEBAIGJvb2wgcGFyc2UoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJp
bmcmIGlucHV0LAogICAgIGRhdGEgPSBQYXJzZVRNKGRhdGEsIHNwZWMuY19zdHIoKSwgJnRtKTsK
IAogICAgIC8vIElmIHdlIHN1Y2Nlc3NmdWxseSBwYXJzZWQgJXAgd2UgbmVlZCB0byByZW1lbWJl
ciB3aGV0aGVyIHRoZSByZXN1bHQKLSAgICAvLyB3YXMgQU0gb3IgUE0gc28gdGhhdCB3ZSBjYW4g
YWRqdXN0IHRtX2hvdXIgYmVmb3JlIENvbnZlcnREYXRlVGltZSgpLgorICAgIC8vIHdhcyBBTSBv
ciBQTSBzbyB0aGF0IHdlIGNhbiBhZGp1c3QgdG1faG91ciBiZWZvcmUgdGltZV96b25lOjpsb29r
dXAoKS4KICAgICAvLyBTbyByZXBhcnNlIHRoZSBpbnB1dCB3aXRoIGEga25vd24gQU0gaG91ciwg
YW5kIGNoZWNrIGlmIGl0IGlzIHNoaWZ0ZWQKICAgICAvLyB0byBhIFBNIGhvdXIuCiAgICAgaWYg
KHNwZWMgPT0gIiVwIiAmJiBkYXRhICE9IG51bGxwdHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdF90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGlt
ZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZm9ybWF0X3Rlc3QuY2MKaW5kZXggYTkwZGRh
NzYwM2E4YTEwZTM3YjNiNThkOTY2NTk2OGI1ODM5NjJiZS4uNmI5OTI4ZWQzMmY0MzEwMjdjNGI5
MmE0OWMzMmU5YTA4YTE4ZDg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3NyYy90aW1lX3pvbmVfZm9ybWF0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L3NyYy90aW1lX3pvbmVfZm9ybWF0X3Rlc3QuY2MKQEAgLTY2OSwxMyArNjY5LDEzIEBAIFRF
U1QoUGFyc2UsIFdpdGhUaW1lWm9uZSkgewogICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV96
b25lKCksICZ0cCkpOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMjAxMywgNiwgMjgsIDE5IC0gOCAt
IDcsIDgsIDksIC03ICogNjAgKiA2MCwgdHJ1ZSwgIlBEVCIpOwogCi0gIC8vIENoZWNrIGEgc2tp
cHBlZCB0aW1lIChhIFNwcmluZyBEU1QgdHJhbnNpdGlvbikuICBwYXJzZSgpIHJldHVybnMKLSAg
Ly8gdGhlIHByZWZlcnJlZC1vZmZzZXQgcmVzdWx0LCBhcyBkZWZpbmVkIGZvciBDb252ZXJ0RGF0
ZVRpbWUoKS4KKyAgLy8gQ2hlY2sgYSBza2lwcGVkIHRpbWUgKGEgU3ByaW5nIERTVCB0cmFuc2l0
aW9uKS4gcGFyc2UoKSB1c2VzIHRoZQorICAvLyBwcmUtdHJhbnNpdGlvbiBvZmZzZXQuCiAgIEVY
UEVDVF9UUlVFKHBhcnNlKCIlWS0lbS0lZCAlSDolTTolUyIsICIyMDExLTAzLTEzIDAyOjE1OjAw
IiwgdHosICZ0cCkpOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMjAxMSwgMywgMTMsIDMsIDE1LCAw
LCAtNyAqIDYwICogNjAsIHRydWUsICJQRFQiKTsKIAotICAvLyBDaGVjayBhIHJlcGVhdGVkIHRp
bWUgKGEgRmFsbCBEU1QgdHJhbnNpdGlvbikuICBwYXJzZSgpIHJldHVybnMKLSAgLy8gdGhlIHBy
ZWZlcnJlZC1vZmZzZXQgcmVzdWx0LCBhcyBkZWZpbmVkIGZvciBDb252ZXJ0RGF0ZVRpbWUoKS4K
KyAgLy8gQ2hlY2sgYSByZXBlYXRlZCB0aW1lIChhIEZhbGwgRFNUIHRyYW5zaXRpb24pLiAgcGFy
c2UoKSB1c2VzIHRoZQorICAvLyBwcmUtdHJhbnNpdGlvbiBvZmZzZXQuCiAgIEVYUEVDVF9UUlVF
KHBhcnNlKCIlWS0lbS0lZCAlSDolTTolUyIsICIyMDExLTExLTA2IDAxOjE1OjAwIiwgdHosICZ0
cCkpOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMjAxMSwgMTEsIDYsIDEsIDE1LCAwLCAtNyAqIDYw
ICogNjAsIHRydWUsICJQRFQiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwv
Y2N0ei9zcmMvdGltZV96b25lX2luZm8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3Jj
L3RpbWVfem9uZV9pbmZvLmNjCmluZGV4IGJmNzM2MzVkNGM2YThjMDMzYjZlNDg3OTI1YzQxYTJl
YWI4MDUxODQuLjJjYjM1OGQwNDhlMmQ4MjE5MWRlOGJjZjIwMjgyOWM3ZWEyY2I4ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8uY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW5mby5jYwpAQCAtMjg2
LDcgKzI4Niw3IEBAIGJvb2wgVGltZVpvbmVJbmZvOjpFcXVpdlRyYW5zaXRpb25zKHN0ZDo6dWlu
dF9mYXN0OF90IHR0MV9pbmRleCwKICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIFVzZSB0aGUgUE9T
SVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGUgc3RkOjpzdHJpbmcgdG8gaGFuZGxlIHRp
bWVzCisvLyBVc2UgdGhlIFBPU0lYLVRaLWVudmlyb25tZW50LXZhcmlhYmxlLXN0eWxlIHN0cmlu
ZyB0byBoYW5kbGUgdGltZXMKIC8vIGluIHllYXJzIGFmdGVyIHRoZSBsYXN0IHRyYW5zaXRpb24g
c3RvcmVkIGluIHRoZSB6b25laW5mbyBkYXRhLgogdm9pZCBUaW1lWm9uZUluZm86OkV4dGVuZFRy
YW5zaXRpb25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEhlYWRlciYgaGRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfcG9zaXguaAppbmRleCA2NjE5ZjI3ZWRjZjYzODk1YWJl
YjIzZjNkZGI0OGVmZjRmOWYyYWM4Li45Y2NkNGE4YjY4YmQ1NzYxZjU2ZTMxNGI5ZDhhMjUwMTcx
YjQ4ZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9u
ZV9wb3NpeC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX3Bv
c2l4LmgKQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IFBvc2l4VHJhbnNpdGlvbiB7CiAgIH0gdGlt
ZTsKIH07CiAKLS8vIFRoZSBlbnRpcmV0eSBvZiBhIFBPU0lYLXN0ZDo6c3RyaW5nIHNwZWNpZmll
ZCB0aW1lLXpvbmUgcnVsZS4gVGhlIHN0YW5kYXJkCisvLyBUaGUgZW50aXJldHkgb2YgYSBQT1NJ
WC1zdHJpbmcgc3BlY2lmaWVkIHRpbWUtem9uZSBydWxlLiBUaGUgc3RhbmRhcmQKIC8vIGFiYnJl
dmlhdGlvbiBhbmQgb2Zmc2V0IGFyZSBhbHdheXMgZ2l2ZW4uIElmIHRoZSB0aW1lIHpvbmUgaW5j
bHVkZXMKIC8vIGRheWxpZ2h0IHNhdmluZywgdGhlbiB0aGUgZGF5bGlnaHQgYWJicmV2YXRpb24g
aXMgbm9uLWVtcHR5IGFuZCB0aGUKIC8vIHJlbWFpbmluZyBmaWVsZHMgYXJlIGFsc28gdmFsaWQu
IE5vdGUgdGhhdCB0aGUgc3RhcnQvZW5kIHRyYW5zaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL3RpbWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZS5oCmluZGV4IGM0MWNiODljNWVmZjFkNGRhZjhl
Y2IxNmM1YjE1NjM5NzAyZjY0NjIuLjUwYmY5NzFkZjBhMjljYjQ3NTBhZWY3MGMxMWU3MDU0NDc2
NDZhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGlt
ZS5oCkBAIC0yNSwxMSArMjUsMTIgQEAKIC8vICAqIGBhYnNsOjpUaW1lWm9uZWAgZGVmaW5lcyBn
ZW9wb2xpdGljYWwgdGltZSB6b25lIHJlZ2lvbnMgKGFzIGNvbGxlY3RlZAogLy8gICAgIHdpdGhp
biB0aGUgSUFOQSBUaW1lIFpvbmUgZGF0YWJhc2UgKGh0dHBzOi8vd3d3LmlhbmEub3JnL3RpbWUt
em9uZXMpKS4KIC8vCisvLwogLy8gRXhhbXBsZToKIC8vCiAvLyAgIGFic2w6OlRpbWVab25lIG55
YzsKIC8vCi0vLyAgIC8vIExvYWRUaW1lWm9uZSBtYXkgZmFpbCBzbyBpdCdzIGFsd2F5cyBiZXR0
ZXIgdG8gY2hlY2sgZm9yIHN1Y2Nlc3MuCisvLyAgIC8vIExvYWRUaW1lWm9uZSgpIG1heSBmYWls
IHNvIGl0J3MgYWx3YXlzIGJldHRlciB0byBjaGVjayBmb3Igc3VjY2Vzcy4KIC8vICAgaWYgKCFh
YnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTmV3X1lvcmsiLCAmbnljKSkgewogLy8gICAgICAv
LyBoYW5kbGUgZXJyb3IgY2FzZQogLy8gICB9CkBAIC0xNjIsNiArMTYzLDExIEBAIGNsYXNzIER1
cmF0aW9uIHsKICAgRHVyYXRpb24mIG9wZXJhdG9yKj0oZmxvYXQgcikgeyByZXR1cm4gKnRoaXMg
Kj0gc3RhdGljX2Nhc3Q8ZG91YmxlPihyKTsgfQogICBEdXJhdGlvbiYgb3BlcmF0b3IvPShmbG9h
dCByKSB7IHJldHVybiAqdGhpcyAvPSBzdGF0aWNfY2FzdDxkb3VibGU+KHIpOyB9CiAKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCBEdXJhdGlv
biBkKSB7CisgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBkLnJlcF9oaV8sIGQu
cmVwX2xvXyk7CisgIH0KKwogIHByaXZhdGU6CiAgIGZyaWVuZCBjb25zdGV4cHIgaW50NjRfdCB0
aW1lX2ludGVybmFsOjpHZXRSZXBIaShEdXJhdGlvbiBkKTsKICAgZnJpZW5kIGNvbnN0ZXhwciB1
aW50MzJfdCB0aW1lX2ludGVybmFsOjpHZXRSZXBMbyhEdXJhdGlvbiBkKTsKQEAgLTMyMSw2ICsz
MjcsOSBAQCBEdXJhdGlvbiBDZWlsKER1cmF0aW9uIGQsIER1cmF0aW9uIHVuaXQpOwogLy8gICAw
ID09IGQgLyBpbmYKIC8vICAgSU5UNjRfTUFYID09IGluZiAvIGQKIC8vCisvLyAgIGQgPCBpbmYK
Ky8vICAgLWluZiA8IGQKKy8vCiAvLyAgIC8vIERpdmlzaW9uIGJ5IHplcm8gcmV0dXJucyBpbmZp
bml0eSwgb3IgSU5UNjRfTUlOL01BWCB3aGVyZSBhcHByb3ByaWF0ZS4KIC8vICAgaW5mID09IGQg
LyAwCiAvLyAgIElOVDY0X01BWCA9PSBkIC8gYWJzbDo6WmVyb0R1cmF0aW9uKCkKQEAgLTQ4MSw3
ICs0OTAsNyBAQCBzdGQ6OmNocm9ubzo6aG91cnMgVG9DaHJvbm9Ib3VycyhEdXJhdGlvbiBkKTsK
IAogLy8gRm9ybWF0RHVyYXRpb24oKQogLy8KLS8vIFJldHVybnMgYSBzdGQ6OnN0cmluZyByZXBy
ZXNlbnRpbmcgdGhlIGR1cmF0aW9uIGluIHRoZSBmb3JtICI3MmgzbTAuNXMiLgorLy8gUmV0dXJu
cyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGR1cmF0aW9uIGluIHRoZSBmb3JtICI3MmgzbTAu
NXMiLgogLy8gUmV0dXJucyAiaW5mIiBvciAiLWluZiIgZm9yICsvLSBgSW5maW5pdGVEdXJhdGlv
bigpYC4KIHN0ZDo6c3RyaW5nIEZvcm1hdER1cmF0aW9uKER1cmF0aW9uIGQpOwogCkBAIC00OTIs
MTEgKzUwMSwxMSBAQCBpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVh
bSYgb3MsIER1cmF0aW9uIGQpIHsKIAogLy8gUGFyc2VEdXJhdGlvbigpCiAvLwotLy8gUGFyc2Vz
IGEgZHVyYXRpb24gc3RkOjpzdHJpbmcgY29uc2lzdGluZyBvZiBhIHBvc3NpYmx5IHNpZ25lZCBz
ZXF1ZW5jZSBvZgorLy8gUGFyc2VzIGEgZHVyYXRpb24gc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYSBw
b3NzaWJseSBzaWduZWQgc2VxdWVuY2Ugb2YKIC8vIGRlY2ltYWwgbnVtYmVycywgZWFjaCB3aXRo
IGFuIG9wdGlvbmFsIGZyYWN0aW9uYWwgcGFydCBhbmQgYSB1bml0CiAvLyBzdWZmaXguICBUaGUg
dmFsaWQgc3VmZml4ZXMgYXJlICJucyIsICJ1cyIgIm1zIiwgInMiLCAibSIsIGFuZCAiaCIuCiAv
LyBTaW1wbGUgZXhhbXBsZXMgaW5jbHVkZSAiMzAwbXMiLCAiLTEuNWgiLCBhbmQgIjJoNDVtIi4g
IFBhcnNlcyAiMCIgYXMKLS8vIGBaZXJvRHVyYXRpb24oKWAuICBQYXJzZXMgImluZiIgYW5kICIt
aW5mIiBhcyArLy0gYEluZmluaXRlRHVyYXRpb24oKWAuCisvLyBgWmVyb0R1cmF0aW9uKClgLiBQ
YXJzZXMgImluZiIgYW5kICItaW5mIiBhcyArLy0gYEluZmluaXRlRHVyYXRpb24oKWAuCiBib29s
IFBhcnNlRHVyYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGR1cl9zdHJpbmcsIER1cmF0aW9uKiBk
KTsKIAogLy8gU3VwcG9ydCBmb3IgZmxhZyB2YWx1ZXMgb2YgdHlwZSBEdXJhdGlvbi4gRHVyYXRp
b24gZmxhZ3MgbXVzdCBiZSBzcGVjaWZpZWQKQEAgLTYwNyw2ICs2MTYsMTEgQEAgY2xhc3MgVGlt
ZSB7CiAgIC8vIFJldHVybnMgdGhlIGJyZWFrZG93biBvZiB0aGlzIGluc3RhbnQgaW4gdGhlIGdp
dmVuIFRpbWVab25lLgogICBCcmVha2Rvd24gSW4oVGltZVpvbmUgdHopIGNvbnN0OwogCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgVGltZSB0
KSB7CisgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCB0LnJlcF8pOworICB9CisK
ICBwcml2YXRlOgogICBmcmllbmQgY29uc3RleHByIFRpbWUgdGltZV9pbnRlcm5hbDo6RnJvbVVu
aXhEdXJhdGlvbihEdXJhdGlvbiBkKTsKICAgZnJpZW5kIGNvbnN0ZXhwciBEdXJhdGlvbiB0aW1l
X2ludGVybmFsOjpUb1VuaXhEdXJhdGlvbihUaW1lIHQpOwpAQCAtNjg5LDcgKzcwMyw5IEBAIGNv
bnN0ZXhwciBUaW1lIEluZmluaXRlUGFzdCgpIHsKIC8vIEV4YW1wbGVzOgogLy8KIC8vICAgYWJz
bDo6VGltZVpvbmUgbGF4OwotLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9M
b3NfQW5nZWxlcyIsICZsYXgpKSB7IC4uLiB9CisvLyAgIGlmICghYWJzbDo6TG9hZFRpbWVab25l
KCJBbWVyaWNhL0xvc19BbmdlbGVzIiwgJmxheCkpIHsKKy8vICAgICAvLyBoYW5kbGUgZXJyb3Ig
Y2FzZQorLy8gICB9CiAvLwogLy8gICAvLyBBIHVuaXF1ZSBjaXZpbCB0aW1lCiAvLyAgIGFic2w6
OlRpbWVDb252ZXJzaW9uIGphbjAxID0KQEAgLTc1OSw3ICs3NzUsOSBAQCBUaW1lQ29udmVyc2lv
biBDb252ZXJ0RGF0ZVRpbWUoaW50NjRfdCB5ZWFyLCBpbnQgbW9uLCBpbnQgZGF5LCBpbnQgaG91
ciwKIC8vIEV4YW1wbGU6CiAvLwogLy8gICBhYnNsOjpUaW1lWm9uZSBzZWF0dGxlOwotLy8gICBp
ZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZzZWF0dGxlKSkg
eyAuLi4gfQorLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxl
cyIsICZzZWF0dGxlKSkgeworLy8gICAgIC8vIGhhbmRsZSBlcnJvciBjYXNlCisvLyAgIH0KIC8v
ICAgYWJzbDo6VGltZSB0ID0gIGFic2w6OkZyb21EYXRlVGltZSgyMDE3LCA5LCAyNiwgOSwgMzAs
IDAsIHNlYXR0bGUpOwogVGltZSBGcm9tRGF0ZVRpbWUoaW50NjRfdCB5ZWFyLCBpbnQgbW9uLCBp
bnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbiwgaW50IHNlYywKICAgICAgICAgICAgICAgICAgIFRp
bWVab25lIHR6KTsKQEAgLTg3MSw4ICs4ODksMTAgQEAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCBUb0Nocm9ub1RpbWUoVGltZSk7CiAvLyBGb3JtYXRUaW1lKCkvUGFyc2VU
aW1lKCkgZm9ybWF0IHNwZWNpZmllcnMgZm9yIFJGQzMzMzkgZGF0ZS90aW1lIHN0cmluZ3MsCiAv
LyB3aXRoIHRyYWlsaW5nIHplcm9zIHRyaW1tZWQgb3Igd2l0aCBmcmFjdGlvbmFsIHNlY29uZHMg
b21pdHRlZCBhbHRvZ2V0aGVyLgogLy8KLS8vIE5vdGUgdGhhdCBSRkMzMzM5X3NlY1tdIG1hdGNo
ZXMgYW4gSVNPIDg2MDEgZXh0ZW5kZWQgZm9ybWF0IGZvciBkYXRlCi0vLyBhbmQgdGltZSB3aXRo
IFVUQyBvZmZzZXQuCisvLyBOb3RlIHRoYXQgUkZDMzMzOV9zZWNbXSBtYXRjaGVzIGFuIElTTyA4
NjAxIGV4dGVuZGVkIGZvcm1hdCBmb3IgZGF0ZSBhbmQKKy8vIHRpbWUgd2l0aCBVVEMgb2Zmc2V0
LiAgQWxzbyBub3RlIHRoZSB1c2Ugb2YgIiVZIjogUkZDMzMzOSBtYW5kYXRlcyB0aGF0CisvLyB5
ZWFycyBoYXZlIGV4YWN0bHkgZm91ciBkaWdpdHMsIGJ1dCB3ZSBhbGxvdyB0aGVtIHRvIHRha2Ug
dGhlaXIgbmF0dXJhbAorLy8gd2lkdGguCiBleHRlcm4gY29uc3QgY2hhciBSRkMzMzM5X2Z1bGxb
XTsgIC8vICVZLSVtLSVkVCVIOiVNOiVFKlMlRXoKIGV4dGVybiBjb25zdCBjaGFyIFJGQzMzMzlf
c2VjW107ICAgLy8gJVktJW0tJWRUJUg6JU06JVMlRXoKIApAQCAtODg2LDcgKzkwNiw3IEBAIGV4
dGVybiBjb25zdCBjaGFyIFJGQzExMjNfbm9fd2RheVtdOyAgLy8gJWQgJWIgJUU0WSAlSDolTTol
UyAlegogLy8gRm9ybWF0VGltZSgpCiAvLwogLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gYGFic2w6OlRp
bWVgIGluIHRoZSBgYWJzbDo6VGltZVpvbmVgIGFjY29yZGluZyB0byB0aGUKLS8vIHByb3ZpZGVk
IGZvcm1hdCBzdGQ6OnN0cmluZy4gVXNlcyBzdHJmdGltZSgpLWxpa2UgZm9ybWF0dGluZyBvcHRp
b25zLCB3aXRoCisvLyBwcm92aWRlZCBmb3JtYXQgc3RyaW5nLiBVc2VzIHN0cmZ0aW1lKCktbGlr
ZSBmb3JtYXR0aW5nIG9wdGlvbnMsIHdpdGgKIC8vIHRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uczoK
IC8vCiAvLyAgIC0gJUV6ICAtIFJGQzMzMzktY29tcGF0aWJsZSBudW1lcmljIFVUQyBvZmZzZXQg
KCtoaDptbSBvciAtaGg6bW0pCkBAIC05MTAsMTYgKzkzMCwxOCBAQCBleHRlcm4gY29uc3QgY2hh
ciBSRkMxMTIzX25vX3dkYXlbXTsgIC8vICVkICViICVFNFkgJUg6JU06JVMgJXoKIC8vIEV4YW1w
bGU6CiAvLwogLy8gICBhYnNsOjpUaW1lWm9uZSBsYXg7Ci0vLyAgIGlmICghYWJzbDo6TG9hZFRp
bWVab25lKCJBbWVyaWNhL0xvc19BbmdlbGVzIiwgJmxheCkpIHsgLi4uIH0KKy8vICAgaWYgKCFh
YnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCAmbGF4KSkgeworLy8gICAg
IC8vIGhhbmRsZSBlcnJvciBjYXNlCisvLyAgIH0KIC8vICAgYWJzbDo6VGltZSB0ID0gYWJzbDo6
RnJvbURhdGVUaW1lKDIwMTMsIDEsIDIsIDMsIDQsIDUsIGxheCk7CiAvLwotLy8gICBzdGQ6OnN0
cmluZyBmID0gYWJzbDo6Rm9ybWF0VGltZSgiJUg6JU06JVMiLCB0LCBsYXgpOyAgLy8gIjAzOjA0
OjA1IgorLy8gICBzdHJpbmcgZiA9IGFic2w6OkZvcm1hdFRpbWUoIiVIOiVNOiVTIiwgdCwgbGF4
KTsgIC8vICIwMzowNDowNSIKIC8vICAgZiA9IGFic2w6OkZvcm1hdFRpbWUoIiVIOiVNOiVFM1Mi
LCB0LCBsYXgpOyAgLy8gIjAzOjA0OjA1LjAwMCIKIC8vCiAvLyBOb3RlOiBJZiB0aGUgZ2l2ZW4g
YGFic2w6OlRpbWVgIGlzIGBhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpYCwgdGhlIHJldHVybmVkCi0v
LyBzdGQ6OnN0cmluZyB3aWxsIGJlIGV4YWN0bHkgImluZmluaXRlLWZ1dHVyZSIuIElmIHRoZSBn
aXZlbiBgYWJzbDo6VGltZWAgaXMKLS8vIGBhYnNsOjpJbmZpbml0ZVBhc3QoKWAsIHRoZSByZXR1
cm5lZCBzdGQ6OnN0cmluZyB3aWxsIGJlIGV4YWN0bHkgImluZmluaXRlLXBhc3QiLgotLy8gSW4g
Ym90aCBjYXNlcyB0aGUgZ2l2ZW4gZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCBgYWJzbDo6VGltZVpv
bmVgIGFyZSBpZ25vcmVkLgorLy8gc3RyaW5nIHdpbGwgYmUgZXhhY3RseSAiaW5maW5pdGUtZnV0
dXJlIi4gSWYgdGhlIGdpdmVuIGBhYnNsOjpUaW1lYCBpcworLy8gYGFic2w6OkluZmluaXRlUGFz
dCgpYCwgdGhlIHJldHVybmVkIHN0cmluZyB3aWxsIGJlIGV4YWN0bHkgImluZmluaXRlLXBhc3Qi
LgorLy8gSW4gYm90aCBjYXNlcyB0aGUgZ2l2ZW4gZm9ybWF0IHN0cmluZyBhbmQgYGFic2w6OlRp
bWVab25lYCBhcmUgaWdub3JlZC4KIC8vCiBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lKGNvbnN0IHN0
ZDo6c3RyaW5nJiBmb3JtYXQsIFRpbWUgdCwgVGltZVpvbmUgdHopOwogCkBAIC05MzYsNyArOTU4
LDcgQEAgaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBU
aW1lIHQpIHsKIAogLy8gUGFyc2VUaW1lKCkKIC8vCi0vLyBQYXJzZXMgYW4gaW5wdXQgc3RkOjpz
dHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBmb3JtYXQgc3RkOjpzdHJpbmcgYW5kCisv
LyBQYXJzZXMgYW4gaW5wdXQgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgZm9ybWF0
IHN0cmluZyBhbmQKIC8vIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgYGFic2w6OlRpbWVgLiBV
c2VzIHN0cmZ0aW1lKCktbGlrZSBmb3JtYXR0aW5nCiAvLyBvcHRpb25zLCB3aXRoIHRoZSBzYW1l
IGV4dGVuc2lvbnMgYXMgRm9ybWF0VGltZSgpLCBidXQgd2l0aCB0aGUKIC8vIGV4Y2VwdGlvbnMg
dGhhdCAlRSNTIGlzIGludGVycHJldGVkIGFzICVFKlMsIGFuZCAlRSNmIGFzICVFKmYuICAlRXoK
QEAgLTk1MCw3ICs5NzIsNyBAQCBpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6
b3N0cmVhbSYgb3MsIFRpbWUgdCkgewogLy8KIC8vICAgIjE5NzAtMDEtMDEgMDA6MDA6MDAuMCAr
MDAwMCIKIC8vCi0vLyBGb3IgZXhhbXBsZSwgcGFyc2luZyBhIHN0ZDo6c3RyaW5nIG9mICIxNTo0
NSIgKCVIOiVNKSB3aWxsIHJldHVybiBhbiBhYnNsOjpUaW1lCisvLyBGb3IgZXhhbXBsZSwgcGFy
c2luZyBhIHN0cmluZyBvZiAiMTU6NDUiICglSDolTSkgd2lsbCByZXR1cm4gYW4gYWJzbDo6VGlt
ZQogLy8gdGhhdCByZXByZXNlbnRzICIxOTcwLTAxLTAxIDE1OjQ1OjAwLjAgKzAwMDAiLgogLy8K
IC8vIE5vdGUgdGhhdCBzaW5jZSBQYXJzZVRpbWUoKSByZXR1cm5zIHRpbWUgaW5zdGFudHMsIGl0
IG1ha2VzIHRoZSBtb3N0IHNlbnNlCkBAIC05NzcsMTUgKzk5OSwxNSBAQCBpbmxpbmUgc3RkOjpv
c3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIFRpbWUgdCkgewogLy8gRXJyb3Jz
IGFyZSBpbmRpY2F0ZWQgYnkgcmV0dXJuaW5nIGZhbHNlIGFuZCBhc3NpZ25pbmcgYW4gZXJyb3Ig
bWVzc2FnZQogLy8gdG8gdGhlICJlcnIiIG91dCBwYXJhbSBpZiBpdCBpcyBub24tbnVsbC4KIC8v
Ci0vLyBOb3RlOiBJZiB0aGUgaW5wdXQgc3RkOjpzdHJpbmcgaXMgZXhhY3RseSAiaW5maW5pdGUt
ZnV0dXJlIiwgdGhlIHJldHVybmVkCisvLyBOb3RlOiBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGV4
YWN0bHkgImluZmluaXRlLWZ1dHVyZSIsIHRoZSByZXR1cm5lZAogLy8gYGFic2w6OlRpbWVgIHdp
bGwgYmUgYGFic2w6OkluZmluaXRlRnV0dXJlKClgIGFuZCBgdHJ1ZWAgd2lsbCBiZSByZXR1cm5l
ZC4KLS8vIElmIHRoZSBpbnB1dCBzdGQ6OnN0cmluZyBpcyAiaW5maW5pdGUtcGFzdCIsIHRoZSBy
ZXR1cm5lZCBgYWJzbDo6VGltZWAgd2lsbCBiZQorLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyAi
aW5maW5pdGUtcGFzdCIsIHRoZSByZXR1cm5lZCBgYWJzbDo6VGltZWAgd2lsbCBiZQogLy8gYGFi
c2w6OkluZmluaXRlUGFzdCgpYCBhbmQgYHRydWVgIHdpbGwgYmUgcmV0dXJuZWQuCiAvLwogYm9v
bCBQYXJzZVRpbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcm
IGlucHV0LCBUaW1lKiB0aW1lLAogICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIGVycik7CiAK
LS8vIExpa2UgUGFyc2VUaW1lKCkgYWJvdmUsIGJ1dCBpZiB0aGUgZm9ybWF0IHN0ZDo6c3RyaW5n
IGRvZXMgbm90IGNvbnRhaW4gYSBVVEMKKy8vIExpa2UgUGFyc2VUaW1lKCkgYWJvdmUsIGJ1dCBp
ZiB0aGUgZm9ybWF0IHN0cmluZyBkb2VzIG5vdCBjb250YWluIGEgVVRDCiAvLyBvZmZzZXQgc3Bl
Y2lmaWNhdGlvbiAoJXovJUV6LyVFKnopIHRoZW4gdGhlIGlucHV0IGlzIGludGVycHJldGVkIGlu
IHRoZQogLy8gZ2l2ZW4gVGltZVpvbmUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGlucHV0LCBieSBp
dHNlbGYsIGRvZXMgbm90IGlkZW50aWZ5IGEKIC8vIHVuaXF1ZSBpbnN0YW50LiAgQmVpbmcgdGlt
ZS16b25lIGRlcGVuZGVudCwgaXQgYWxzbyBhZG1pdHMgdGhlIHBvc3NpYmlsaXR5CkBAIC0xMDI4
LDcgKzEwNTAsOSBAQCBzdGQ6OnN0cmluZyBVbnBhcnNlRmxhZyhUaW1lIHQpOwogLy8gICBhYnNs
OjpUaW1lWm9uZSBwc3QgPSBhYnNsOjpGaXhlZFRpbWVab25lKC04ICogNjAgKiA2MCk7CiAvLyAg
IGFic2w6OlRpbWVab25lIGxvYyA9IGFic2w6OkxvY2FsVGltZVpvbmUoKTsKIC8vICAgYWJzbDo6
VGltZVpvbmUgbGF4OwotLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3Nf
QW5nZWxlcyIsICZsYXgpKSB7IC4uLiB9CisvLyAgIGlmICghYWJzbDo6TG9hZFRpbWVab25lKCJB
bWVyaWNhL0xvc19BbmdlbGVzIiwgJmxheCkpIHsKKy8vICAgICAvLyBoYW5kbGUgZXJyb3IgY2Fz
ZQorLy8gICB9CiAvLwogLy8gU2VlIGFsc286CiAvLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29n
bGUvY2N0egpAQCAtMTA0NSw2ICsxMDY5LDExIEBAIGNsYXNzIFRpbWVab25lIHsKIAogICBzdGQ6
OnN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gY3pfLm5hbWUoKTsgfQogCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgVGltZVpvbmUgdHop
IHsKKyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIHR6LmN6Xyk7CisgIH0KKwog
IHByaXZhdGU6CiAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oVGltZVpvbmUgYSwgVGltZVpvbmUg
YikgeyByZXR1cm4gYS5jel8gPT0gYi5jel87IH0KICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShU
aW1lWm9uZSBhLCBUaW1lWm9uZSBiKSB7IHJldHVybiBhLmN6XyAhPSBiLmN6XzsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5iYXplbApp
bmRleCAwOTZjMTE5ZTYzOGNiZDM1MDQwNTUwYmVkMTBiMTkyZTdiNDY3NDAxLi4zMmY2OTBjOTRj
MWQzNDdjMTQzNzI4M2I4MDg4ZDJiMTk1ZjUxY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9C
VUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5iYXplbApAQCAtMTksNiArMTksNyBA
QCBsb2FkKAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMi
LAogICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBRyIsCisgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFH
X0xJTktPUFRTIiwKICkKIAogcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJp
bGl0eTpwdWJsaWMiXSkKQEAgLTU1LDYgKzU2LDcgQEAgY2NfbGlicmFyeSgKICAgICAgICAgImJh
ZF9hbnlfY2FzdC5oIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUcg
KyBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxB
R19MSU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAog
ICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCkBAIC02OSw2ICs3MSw3IEBAIGNj
X3Rlc3QoCiAgICAgICAgICJhbnlfdGVzdC5jYyIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xf
VEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxpbmtvcHRzID0gQUJTTF9F
WENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjphbnkiLAog
ICAgICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtMTAwLDYgKzEwMyw3IEBAIGNjX3Rlc3QoCiAgICAg
bmFtZSA9ICJhbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0IiwKICAgICBzcmNzID0gWyJhbnlfZXhj
ZXB0aW9uX3NhZmV0eV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBB
QlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFH
X0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YW55IiwKICAgICAgICAgIi8vYWJz
bC9iYXNlOmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZyIsCkBAIC0xMjQsNiArMTI4LDcgQEAgY2Nf
dGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJzcGFuX3Rlc3QuY2MiXSwK
ICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAg
IGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsK
ICAgICAgICAgIjpzcGFuIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC0xMzEs
NiArMTM2LDcgQEAgY2NfdGVzdCgKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4Y2VwdGlvbl90ZXN0
aW5nIiwKICAgICAgICAgIi8vYWJzbC9jb250YWluZXI6Zml4ZWRfYXJyYXkiLAogICAgICAgICAi
Ly9hYnNsL2NvbnRhaW5lcjppbmxpbmVkX3ZlY3RvciIsCisgICAgICAgICIvL2Fic2wvaGFzaDpo
YXNoX3Rlc3RpbmciLAogICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAogICAgICAgICAiQGNvbV9n
b29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAogICAgIF0sCkBAIC0xNDgsNiArMTU0LDcg
QEAgY2NfdGVzdCgKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4Y2VwdGlvbl90ZXN0aW5nIiwKICAg
ICAgICAgIi8vYWJzbC9jb250YWluZXI6Zml4ZWRfYXJyYXkiLAogICAgICAgICAiLy9hYnNsL2Nv
bnRhaW5lcjppbmxpbmVkX3ZlY3RvciIsCisgICAgICAgICIvL2Fic2wvaGFzaDpoYXNoX3Rlc3Rp
bmciLAogICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29v
Z2xldGVzdC8vOmd0ZXN0X21haW4iLAogICAgIF0sCkBAIC0xNzIsNiArMTc5LDcgQEAgY2NfbGli
cmFyeSgKICAgICBzcmNzID0gWyJiYWRfb3B0aW9uYWxfYWNjZXNzLmNjIl0sCiAgICAgaGRycyA9
IFsiYmFkX29wdGlvbmFsX2FjY2Vzcy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09Q
VFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9O
U19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCiAg
ICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLApAQCAtMTgzLDYgKzE5MSw3IEBAIGNjX2xpYnJh
cnkoCiAgICAgc3JjcyA9IFsiYmFkX3ZhcmlhbnRfYWNjZXNzLmNjIl0sCiAgICAgaGRycyA9IFsi
YmFkX3ZhcmlhbnRfYWNjZXNzLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFH
ICsgQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZM
QUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKICAgICAg
ICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC0xOTYsNiArMjA1LDcgQEAgY2NfdGVzdCgKICAg
ICAgICAgIm9wdGlvbmFsX3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1Rf
Q09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBU
SU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6b3B0aW9uYWwiLAog
ICAgICAgICAiLy9hYnNsL2Jhc2UiLApAQCAtMjEyLDYgKzIyMiw3IEBAIGNjX3Rlc3QoCiAgICAg
ICAgICJvcHRpb25hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0
cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAg
ICI6b3B0aW9uYWwiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0
aW5nIiwKQEAgLTIzOSw2ICsyNTAsNyBAQCBjY190ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAog
ICAgIHNyY3MgPSBbInZhcmlhbnRfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NP
UFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElP
TlNfRkxBR19MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnZhcmlhbnQiLAogICAg
ICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKQEAgLTI3MSw2ICsyODMsNyBAQCBjY190ZXN0KAog
ICAgICAgICAidmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiLAogICAgIF0sCiAgICAg
Y29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5r
b3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAg
ICAgICI6dmFyaWFudCIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fc2FmZXR5X3Rl
c3RpbmciLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9C
VUlMRC5nbgppbmRleCBmZDdlODlkZWUzNGMzYjMyOTA1YTdmYTc4ZmJmYmZlMmFiYjAxZTU1Li5i
ZmRhZmIzMTdlM2I0YmYxZDNmZWMyNTJjZDBjZDFkMTkzZWMxOTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlcy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5nbgpAQCAtMTA0LDYgKzEw
NCw3IEBAIHNvdXJjZV9zZXQoIm9wdGlvbmFsIikgewogICBkZXBzID0gWwogICAgICI6YmFkX29w
dGlvbmFsX2FjY2VzcyIsCiAgICAgIi4uL2Jhc2U6Y29uZmlnIiwKKyAgICAiLi4vYmFzZTpjb3Jl
X2hlYWRlcnMiLAogICAgICIuLi9tZW1vcnkiLAogICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwK
ICAgICAiLi4vdXRpbGl0eSIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9hbnlfZXhjZXB0aW9u
X3NhZmV0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5j
YwppbmRleCAzNjk1NWY2YzVjMzc2ZDMyZmIxMWE1NTg5NWJhNGJhMDZmZTVhNzhlLi5mOWRkOGM0
ODJjMjU1NDNiOTE0MmU0MmJhMTc1YThjMDE0OWMzNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
cy9hbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2FueV9leGNl
cHRpb25fc2FmZXR5X3Rlc3QuY2MKQEAgLTYyLDcgKzYyLDcgQEAgdGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IEFueUludmFyaWFudHMoYWJzbDo6YW55KiBhKSB7CiAgICAgc3RhdGljX2Nhc3Q8dm9p
ZD4odW51c2VkKTsKICAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCiAgICAgICAgICAgIDw8
ICJBIHJlc2V0IGBhbnlgIHNob3VsZCBub3QgYmUgYWJsZSB0byBiZSBhbnlfY2FzdCI7Ci0gIH0g
Y2F0Y2ggKGFic2w6OmJhZF9hbnlfY2FzdCkgeworICB9IGNhdGNoIChjb25zdCBhYnNsOjpiYWRf
YW55X2Nhc3QmKSB7CiAgIH0gY2F0Y2ggKC4uLikgewogICAgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKCkKICAgICAgICAgICAgPDwgIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIHRocm93biBmcm9tIGFi
c2w6OmFueV9jYXN0IjsKQEAgLTEwNyw3ICsxMDcsNyBAQCBURVNUKEFueUV4Y2VwdGlvblNhZmV0
eSwgQXNzaWdubWVudCkgewogICB9OwogICBhdXRvIGFueV9zdHJvbmdfdGVzdGVyID0gdGVzdGlu
Zzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLldpdGhJbml0aWFsVmFsdWUob3JpZ2luYWwpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLldpdGhJbnZhcmlhbnRzKEFueUludmFyaWFudHMsIGFueV9pc19zdHJvbmcpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKEFueUludmFyaWFu
dHMsIGFueV9pc19zdHJvbmcpOwogCiAgIFRocm93ZXIgdmFsKDIpOwogICBhYnNsOjphbnkgYW55
X3ZhbCh2YWwpOwpAQCAtMTI5LDcgKzEyOSw3IEBAIFRFU1QoQW55RXhjZXB0aW9uU2FmZXR5LCBB
c3NpZ25tZW50KSB7CiAgIGF1dG8gc3Ryb25nX2VtcHR5X2FueV90ZXN0ZXIgPQogICAgICAgdGVz
dGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAgICAgLldpdGhJbml0aWFs
VmFsdWUoYWJzbDo6YW55e30pCi0gICAgICAgICAgLldpdGhJbnZhcmlhbnRzKEFueUludmFyaWFu
dHMsIGVtcHR5X2FueV9pc19zdHJvbmcpOworICAgICAgICAgIC5XaXRoQ29udHJhY3RzKEFueUlu
dmFyaWFudHMsIGVtcHR5X2FueV9pc19zdHJvbmcpOwogCiAgIEVYUEVDVF9UUlVFKHN0cm9uZ19l
bXB0eV9hbnlfdGVzdGVyLlRlc3QoYXNzaWduX2FueSkpOwogICBFWFBFQ1RfVFJVRShzdHJvbmdf
ZW1wdHlfYW55X3Rlc3Rlci5UZXN0KGFzc2lnbl92YWwpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBU
RVNUKEFueUV4Y2VwdGlvblNhZmV0eSwgRW1wbGFjZSkgewogICAgICAgYWJzbDo6YW55e2Fic2w6
OmluX3BsYWNlX3R5cGVfdDxUaHJvd2VyPigpLCAxLCB0ZXN0aW5nOjpub3Rocm93X2N0b3J9Owog
ICBhdXRvIG9uZV90ZXN0ZXIgPSB0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkK
ICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKGluaXRpYWxfdmFsKQot
ICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKEFueUludmFyaWFudHMsIEFu
eUlzRW1wdHkpOworICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoQW55SW52
YXJpYW50cywgQW55SXNFbXB0eSk7CiAKICAgYXV0byBlbXBfdGhyb3dlciA9IFtdKGFic2w6OmFu
eSogYXApIHsgYXAtPmVtcGxhY2U8VGhyb3dlcj4oMik7IH07CiAgIGF1dG8gZW1wX3Rocm93ZXJ2
ZWMgPSBbXShhYnNsOjphbnkqIGFwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9pbnRlcm5h
bC92YXJpYW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9pbnRlcm5hbC92YXJpYW50LmgKaW5kZXggNzcwOGU2
N2NiMTRmNDE2YWRlMTY3MTllMjM2OWFhZjY0OGJiNjI4My4uZWZmNGZlZmVkNDA5ZDkyZDUwN2Ri
YTg2NjlmZTEyMzFlZDRjYjE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvaW50ZXJuYWwvdmFy
aWFudC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL3ZhcmlhbnQuaApAQCAtMSw0ICsxLDQg
QEAKLS8vIENvcHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vIENvcHlyaWdodCAy
MDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KIC8vCiAvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIC8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KQEAgLTM3
LDYgKzM3LDggQEAKICNpbmNsdWRlICJhYnNsL3R5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5oIgog
I2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5LmgiCiAKKyNpZiAhZGVmaW5lZChBQlNMX0hB
VkVfU1REX1ZBUklBTlQpCisKIG5hbWVzcGFjZSBhYnNsIHsKIAogdGVtcGxhdGUgPGNsYXNzLi4u
IFR5cGVzPgpAQCAtOTA4LDYgKzkxMCwxMSBAQCBzdHJ1Y3QgUGVyZm9ybVZpc2l0YXRpb24gewog
ICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QuLi4gVHVwSXMsIHN0ZDo6c2l6ZV90Li4uIElzPgogICBj
b25zdGV4cHIgUmV0dXJuVHlwZSBSdW4oc3RkOjpmYWxzZV90eXBlIC8qaGFzX3ZhbHVlbGVzcyov
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfc2VxdWVuY2U8VHVwSXMuLi4+LCBT
aXplVDxJcz4uLi4pIGNvbnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KAorICAgICAgICBzdGQ6Omlz
X3NhbWU8UmV0dXJuVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6OnJlc3VsdF9vZl90
PE9wKFZhcmlhbnRBY2Nlc3NSZXN1bHQ8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJcywgUXVhbGlmaWVkVmFyaWFudHM+Li4uKT4+Ojp2YWx1ZSwKKyAgICAgICAg
IkFsbCB2aXNpdGF0aW9uIG92ZXJsb2FkcyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUu
Iik7CiAgICAgcmV0dXJuIGFic2w6OmJhc2VfaW50ZXJuYWw6Okludm9rZSgKICAgICAgICAgYWJz
bDo6Zm9yd2FyZDxPcD4ob3ApLAogICAgICAgICBWYXJpYW50Q29yZUFjY2Vzczo6QWNjZXNzPElz
PigKQEAgLTEyMjcsMjMgKzEyMzQsMjMgQEAgdXNpbmcgVmFyaWFudENvcHlCYXNlID0gYWJzbDo6
Y29uZGl0aW9uYWxfdDwKIC8vIEJhc2UgdGhhdCBpcyBkZXBlbmRlbnQgb24gd2hldGhlciBvciBu
b3QgdGhlIG1vdmUtYXNzaWduIGNhbiBiZSB0cml2aWFsLgogdGVtcGxhdGUgPGNsYXNzLi4uIFQ+
CiB1c2luZyBWYXJpYW50TW92ZUFzc2lnbkJhc2UgPSBhYnNsOjpjb25kaXRpb25hbF90PAotICAg
IGFic2w6OmRpc2p1bmN0aW9uPGFic2w6OmNvbmp1bmN0aW9uPHN0ZDo6aXNfbW92ZV9hc3NpZ25h
YmxlPFVuaW9uPFQuLi4+PiwKKyAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpjb25qdW5jdGlv
bjxhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8VW5pb248VC4uLj4+LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPFVuaW9u
PFQuLi4+PiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Omlz
X2Rlc3RydWN0aWJsZTxVbmlvbjxULi4uPj4+LAogICAgICAgICAgICAgICAgICAgICAgIGFic2w6
Om5lZ2F0aW9uPGFic2w6OmNvbmp1bmN0aW9uPAogICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxUPi4uLiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8VD4uLi4+Pj46OnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8VD4uLi4+Pj46OnZhbHVlLAog
ICAgIFZhcmlhbnRDb3B5QmFzZTxULi4uPiwgVmFyaWFudE1vdmVBc3NpZ25CYXNlTm9udHJpdmlh
bDxULi4uPj47CiAKIC8vIEJhc2UgdGhhdCBpcyBkZXBlbmRlbnQgb24gd2hldGhlciBvciBub3Qg
dGhlIGNvcHktYXNzaWduIGNhbiBiZSB0cml2aWFsLgogdGVtcGxhdGUgPGNsYXNzLi4uIFQ+CiB1
c2luZyBWYXJpYW50Q29weUFzc2lnbkJhc2UgPSBhYnNsOjpjb25kaXRpb25hbF90PAotICAgIGFi
c2w6OmRpc2p1bmN0aW9uPGFic2w6OmNvbmp1bmN0aW9uPHN0ZDo6aXNfY29weV9hc3NpZ25hYmxl
PFVuaW9uPFQuLi4+PiwKKyAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpjb25qdW5jdGlvbjxh
YnNsOjppc19jb3B5X2Fzc2lnbmFibGU8VW5pb248VC4uLj4+LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPFVuaW9uPFQu
Li4+PiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Rl
c3RydWN0aWJsZTxVbmlvbjxULi4uPj4+LAogICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om5l
Z2F0aW9uPGFic2w6OmNvbmp1bmN0aW9uPAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OmlzX2NvcHlfY29uc3RydWN0aWJsZTxUPi4uLiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjppc19jb3B5X2Fzc2lnbmFibGU8VD4uLi4+Pj46OnZhbHVlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8VD4uLi4+Pj46OnZhbHVlLAogICAg
IFZhcmlhbnRNb3ZlQXNzaWduQmFzZTxULi4uPiwgVmFyaWFudENvcHlBc3NpZ25CYXNlTm9udHJp
dmlhbDxULi4uPj47CiAKIHRlbXBsYXRlIDxjbGFzcy4uLiBUPgpAQCAtMTYxMiw0ICsxNjE5LDUg
QEAgc3RydWN0IFZhcmlhbnRIYXNoQmFzZTxWYXJpYW50LAogfSAgLy8gbmFtZXNwYWNlIHZhcmlh
bnRfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKKyNlbmRpZiAgLy8gIWRlZmluZWQo
QUJTTF9IQVZFX1NURF9WQVJJQU5UKQogI2VuZGlmICAvLyBBQlNMX1RZUEVTX3ZhcmlhbnRfaW50
ZXJuYWxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
cy9vcHRpb25hbC5oCmluZGV4IGM4MzdjZGRlZWY0ODk0MjY0N2U3ZjgyOTJkMDE2Mzc1MDk0NmIy
YjYuLjE0MjEwMDE4ODE1YzRjNjYxMjA3ZmU0MGY0NTJiMDEzNWM5YTBhZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzL29wdGlvbmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwuaApAQCAt
NTksNiArNTksNyBAQCB1c2luZyBzdGQ6Om51bGxvcHQ7CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgi
CiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYWJzbC9tZXRhL3R5
cGVfdHJhaXRzLmgiCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9iYWRfb3B0aW9uYWxfYWNjZXNzLmgi
CkBAIC00MTEsMTAgKzQxMiwxMCBAQCBjb25zdGV4cHIgY29weV90cmFpdHMgZ2V0X2N0b3JfY29w
eV90cmFpdHMoKSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY29uc3RleHByIGNvcHlfdHJh
aXRzIGdldF9hc3NpZ25fY29weV90cmFpdHMoKSB7Ci0gIHJldHVybiBzdGQ6OmlzX2NvcHlfYXNz
aWduYWJsZTxUPjo6dmFsdWUgJiYKKyAgcmV0dXJuIGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxU
Pjo6dmFsdWUgJiYKICAgICAgICAgICAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8
VD46OnZhbHVlCiAgICAgICAgICAgICAgPyBjb3B5X3RyYWl0czo6Y29weWFibGUKLSAgICAgICAg
ICAgICA6IHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSAmJgorICAgICAgICAgICAg
IDogYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSAmJgogICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUKICAgICAgICAgICAg
ICAgICAgICA/IGNvcHlfdHJhaXRzOjptb3ZhYmxlCiAgICAgICAgICAgICAgICAgICAgOiBjb3B5
X3RyYWl0czo6bm9uX21vdmFibGU7CkBAIC03MDAsNyArNzAxLDcgQEAgY2xhc3Mgb3B0aW9uYWwg
OiBwcml2YXRlIG9wdGlvbmFsX2ludGVybmFsOjpvcHRpb25hbF9kYXRhPFQ+LAogICAvLyBvcHRp
b25hbDo6cmVzZXQoKQogICAvLwogICAvLyBEZXN0cm95cyB0aGUgaW5uZXIgYFRgIHZhbHVlIG9m
IGFuIGBhYnNsOjpvcHRpb25hbGAgaWYgb25lIGlzIHByZXNlbnQuCi0gIHZvaWQgcmVzZXQoKSBu
b2V4Y2VwdCB7IHRoaXMtPmRlc3RydWN0KCk7IH0KKyAgQUJTTF9BVFRSSUJVVEVfUkVJTklUSUFM
SVpFUyB2b2lkIHJlc2V0KCkgbm9leGNlcHQgeyB0aGlzLT5kZXN0cnVjdCgpOyB9CiAKICAgLy8g
b3B0aW9uYWw6OmVtcGxhY2UoKQogICAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9u
YWxfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfZXhjZXB0
aW9uX3NhZmV0eV90ZXN0LmNjCmluZGV4IGQyZWYwNGI4ZDFiMDgzYzc1NWMyMzA2ODU1NDYwYWE4
ZjBkZTgxZGQuLmQxMTdlZTUxODQ5MTlmZTZiMTJkMTIzM2RlMTZlOWFlZTgwZTgwM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90eXBlcy9vcHRpb25hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKQEAgLTM4LDEy
ICszOCwxMiBAQCBjb25zdGV4cHIgaW50IGtVcGRhdGVkSW50ZWdlciA9IDEwOwogdGVtcGxhdGUg
PHR5cGVuYW1lIE9wdGlvbmFsVD4KIGJvb2wgVmFsdWVUaHJvd3NCYWRPcHRpb25hbEFjY2Vzcyhj
b25zdCBPcHRpb25hbFQmIG9wdGlvbmFsKSB0cnkgewogICByZXR1cm4gKHN0YXRpY19jYXN0PHZv
aWQ+KG9wdGlvbmFsLnZhbHVlKCkpLCBmYWxzZSk7Ci19IGNhdGNoIChhYnNsOjpiYWRfb3B0aW9u
YWxfYWNjZXNzKSB7Cit9IGNhdGNoIChjb25zdCBhYnNsOjpiYWRfb3B0aW9uYWxfYWNjZXNzJikg
ewogICByZXR1cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wdGlvbmFsVD4KLUFz
c2VydGlvblJlc3VsdCBDaGVja0ludmFyaWFudHMoT3B0aW9uYWxUKiBvcHRpb25hbF9wdHIpIHsK
K0Fzc2VydGlvblJlc3VsdCBPcHRpb25hbEludmFyaWFudHMoT3B0aW9uYWxUKiBvcHRpb25hbF9w
dHIpIHsKICAgLy8gQ2hlY2sgdGhlIGN1cnJlbnQgc3RhdGUgcG9zdC10aHJvdyBmb3IgdmFsaWRp
dHkKICAgYXV0byYgb3B0aW9uYWwgPSAqb3B0aW9uYWxfcHRyOwogCkBAIC0xMjMsOCArMTIzLDgg
QEAgVEVTVChPcHRpb25hbEV4Y2VwdGlvblNhZmV0eSwgTm90aHJvd0NvbnN0cnVjdG9ycykgewog
VEVTVChPcHRpb25hbEV4Y2VwdGlvblNhZmV0eSwgRW1wbGFjZSkgewogICAvLyBUZXN0IHRoZSBi
YXNpYyBndWFyYW50ZWUgcGx1cyB0ZXN0IHRoZSByZXN1bHQgb2Ygb3B0aW9uYWw6Omhhc192YWx1
ZSgpCiAgIC8vIGlzIGZhbHNlIGluIGFsbCBjYXNlcwotICBhdXRvIGRpc2VuZ2FnZWRfdGVzdCA9
IE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoSW52YXJpYW50cygKLSAgICAgIENoZWNr
SW52YXJpYW50czxPcHRpb25hbD4sIENoZWNrRGlzZW5nYWdlZDxPcHRpb25hbD4pOworICBhdXRv
IGRpc2VuZ2FnZWRfdGVzdCA9IE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoQ29udHJh
Y3RzKAorICAgICAgT3B0aW9uYWxJbnZhcmlhbnRzPE9wdGlvbmFsPiwgQ2hlY2tEaXNlbmdhZ2Vk
PE9wdGlvbmFsPik7CiAgIGF1dG8gZGlzZW5nYWdlZF90ZXN0X2VtcHR5ID0gZGlzZW5nYWdlZF90
ZXN0LldpdGhJbml0aWFsVmFsdWUoT3B0aW9uYWwoKSk7CiAgIGF1dG8gZGlzZW5nYWdlZF90ZXN0
X25vbmVtcHR5ID0KICAgICAgIGRpc2VuZ2FnZWRfdGVzdC5XaXRoSW5pdGlhbFZhbHVlKE9wdGlv
bmFsKGtJbml0aWFsSW50ZWdlcikpOwpAQCAtMTQ3LDExICsxNDcsMTEgQEAgVEVTVChPcHRpb25h
bEV4Y2VwdGlvblNhZmV0eSwgRXZlcnl0aGluZ1Rocm93c1N3YXApIHsKICAgLy8gVGVzdCB0aGUg
YmFzaWMgZ3VhcmFudGVlIHBsdXMgdGVzdCB0aGUgcmVzdWx0IG9mIG9wdGlvbmFsOjpoYXNfdmFs
dWUoKQogICAvLyByZW1haW5zIHRoZSBzYW1lCiAgIGF1dG8gdGVzdCA9Ci0gICAgICBNYWtlRXhj
ZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzPE9wdGlv
bmFsPik7CisgICAgICBNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aENvbnRyYWN0cyhP
cHRpb25hbEludmFyaWFudHM8T3B0aW9uYWw+KTsKICAgYXV0byBkaXNlbmdhZ2VkX3Rlc3RfZW1w
dHkgPSB0ZXN0LldpdGhJbml0aWFsVmFsdWUoT3B0aW9uYWwoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrRGlzZW5nYWdlZDxPcHRpb25h
bD4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhD
aGVja0Rpc2VuZ2FnZWQ8T3B0aW9uYWw+KTsKICAgYXV0byBlbmdhZ2VkX3Rlc3Rfbm9uZW1wdHkg
PSB0ZXN0LldpdGhJbml0aWFsVmFsdWUoT3B0aW9uYWwoa0luaXRpYWxJbnRlZ2VyKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrRW5nYWdl
ZDxPcHRpb25hbD4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0aENv
bnRyYWN0cyhDaGVja0VuZ2FnZWQ8T3B0aW9uYWw+KTsKIAogICBhdXRvIHN3YXBfZW1wdHkgPSBb
XShPcHRpb25hbCogb3B0aW9uYWxfcHRyKSB7CiAgICAgYXV0byBlbXB0eSA9IE9wdGlvbmFsKCk7
CkBAIC0xOTIsMTEgKzE5MiwxMSBAQCBURVNUKE9wdGlvbmFsRXhjZXB0aW9uU2FmZXR5LCBDb3B5
QXNzaWduKSB7CiAgIC8vIFRlc3QgdGhlIGJhc2ljIGd1YXJhbnRlZSBwbHVzIHRlc3QgdGhlIHJl
c3VsdCBvZiBvcHRpb25hbDo6aGFzX3ZhbHVlKCkKICAgLy8gcmVtYWlucyB0aGUgc2FtZQogICBh
dXRvIHRlc3QgPQotICAgICAgTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpLldpdGhJbnZhcmlh
bnRzKENoZWNrSW52YXJpYW50czxPcHRpb25hbD4pOworICAgICAgTWFrZUV4Y2VwdGlvblNhZmV0
eVRlc3RlcigpLldpdGhDb250cmFjdHMoT3B0aW9uYWxJbnZhcmlhbnRzPE9wdGlvbmFsPik7CiAg
IGF1dG8gZGlzZW5nYWdlZF90ZXN0X2VtcHR5ID0gdGVzdC5XaXRoSW5pdGlhbFZhbHVlKE9wdGlv
bmFsKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50
cyhDaGVja0Rpc2VuZ2FnZWQ8T3B0aW9uYWw+KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLldpdGhDb250cmFjdHMoQ2hlY2tEaXNlbmdhZ2VkPE9wdGlvbmFsPik7CiAgIGF1
dG8gZW5nYWdlZF90ZXN0X25vbmVtcHR5ID0gdGVzdC5XaXRoSW5pdGlhbFZhbHVlKE9wdGlvbmFs
KGtJbml0aWFsSW50ZWdlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5X
aXRoSW52YXJpYW50cyhDaGVja0VuZ2FnZWQ8T3B0aW9uYWw+KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoQ2hlY2tFbmdhZ2VkPE9wdGlvbmFsPik7
CiAKICAgYXV0byBjb3B5YXNzaWduX25vbmVtcHR5ID0gW10oT3B0aW9uYWwqIG9wdGlvbmFsX3B0
cikgewogICAgIGF1dG8gbm9uZW1wdHkgPQpAQCAtMjE4LDExICsyMTgsMTEgQEAgVEVTVChPcHRp
b25hbEV4Y2VwdGlvblNhZmV0eSwgTW92ZUFzc2lnbikgewogICAvLyBUZXN0IHRoZSBiYXNpYyBn
dWFyYW50ZWUgcGx1cyB0ZXN0IHRoZSByZXN1bHQgb2Ygb3B0aW9uYWw6Omhhc192YWx1ZSgpCiAg
IC8vIHJlbWFpbnMgdGhlIHNhbWUKICAgYXV0byB0ZXN0ID0KLSAgICAgIE1ha2VFeGNlcHRpb25T
YWZldHlUZXN0ZXIoKS5XaXRoSW52YXJpYW50cyhDaGVja0ludmFyaWFudHM8T3B0aW9uYWw+KTsK
KyAgICAgIE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoQ29udHJhY3RzKE9wdGlvbmFs
SW52YXJpYW50czxPcHRpb25hbD4pOwogICBhdXRvIGRpc2VuZ2FnZWRfdGVzdF9lbXB0eSA9IHRl
c3QuV2l0aEluaXRpYWxWYWx1ZShPcHRpb25hbCgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tEaXNlbmdhZ2VkPE9wdGlvbmFsPik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKENoZWNrRGlz
ZW5nYWdlZDxPcHRpb25hbD4pOwogICBhdXRvIGVuZ2FnZWRfdGVzdF9ub25lbXB0eSA9IHRlc3Qu
V2l0aEluaXRpYWxWYWx1ZShPcHRpb25hbChrSW5pdGlhbEludGVnZXIpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tFbmdhZ2VkPE9wdGlv
bmFsPik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3Rz
KENoZWNrRW5nYWdlZDxPcHRpb25hbD4pOwogCiAgIGF1dG8gbW92ZWFzc2lnbl9lbXB0eSA9IFtd
KE9wdGlvbmFsKiBvcHRpb25hbF9wdHIpIHsKICAgICBhdXRvIGVtcHR5ID0gT3B0aW9uYWwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9v
cHRpb25hbF90ZXN0LmNjCmluZGV4IDE3OWJmZDY2ZDJmZWUwZWI5MzIxYjA1NTliMmI5ZGMxODkx
MGRiYjMuLmQ5MGRiOWY4MjFiNTJkNGE5MzU1NTc3OTJlMjEyZTE0MTk5ZTc4MDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9u
YWxfdGVzdC5jYwpAQCAtNjA3LDExICs2MDcsMTIgQEAgVEVTVChvcHRpb25hbFRlc3QsIENvcHlB
c3NpZ25tZW50KSB7CiAgIG9wdDJfdG9fZW1wdHkgPSBlbXB0eTsKICAgRVhQRUNUX0ZBTFNFKG9w
dDJfdG9fZW1wdHkpOwogCi0gIEVYUEVDVF9GQUxTRShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxh
YnNsOjpvcHRpb25hbDxjb25zdCBpbnQ+Pjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShzdGQ6Omlz
X2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxDb3B5YWJsZT4+Ojp2YWx1ZSk7Ci0gIEVY
UEVDVF9GQUxTRShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJs
ZVRocm93Pj46OnZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNfY29weV9hc3NpZ25hYmxl
PGFic2w6Om9wdGlvbmFsPE1vdmVhYmxlTm9UaHJvdz4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9GQUxT
RShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxOb25Nb3ZhYmxlPj46OnZh
bHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRp
b25hbDxjb25zdCBpbnQ+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc19jb3B5X2Fz
c2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8Q29weWFibGU+Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFM
U0UoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPE1vdmVhYmxlVGhyb3c+
Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoCisgICAgICBhYnNsOjppc19jb3B5X2Fzc2lnbmFi
bGU8YWJzbDo6b3B0aW9uYWw8TW92ZWFibGVOb1Rocm93Pj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZB
TFNFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxOb25Nb3ZhYmxlPj46
OnZhbHVlKTsKIAogICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfY29weV9hc3NpZ25h
YmxlPGludD46OnZhbHVlKTsKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlf
YXNzaWduYWJsZTx2b2xhdGlsZSBpbnQ+Ojp2YWx1ZSk7CkBAIC02MjUsOSArNjI2LDkgQEAgVEVT
VChvcHRpb25hbFRlc3QsIENvcHlBc3NpZ25tZW50KSB7CiAgIH07CiAKICAgRVhQRUNUX1RSVUUo
YWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTxUcml2aWFsPjo6dmFsdWUpOwotICBF
WFBFQ1RfRkFMU0Uoc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8Y29uc3QgVHJpdmlhbD46OnZhbHVl
KTsKLSAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPHZvbGF0aWxlIFRyaXZp
YWw+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPE5vblRy
aXZpYWw+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8
Y29uc3QgVHJpdmlhbD46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX2NvcHlfYXNz
aWduYWJsZTx2b2xhdGlsZSBUcml2aWFsPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpp
c19jb3B5X2Fzc2lnbmFibGU8Tm9uVHJpdmlhbD46OnZhbHVlKTsKICAgRVhQRUNUX0ZBTFNFKGFi
c2w6OmlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGU8Tm9uVHJpdmlhbD46OnZhbHVlKTsKIAog
ICAvLyBzdGQ6Om9wdGlvbmFsIGRvZXNuJ3Qgc3VwcG9ydCB2b2xhdGlsZSBub250cml2aWFsIHR5
cGVzLgpAQCAtNjk1LDExICs2OTYsMTEgQEAgVEVTVChvcHRpb25hbFRlc3QsIE1vdmVBc3NpZ25t
ZW50KSB7CiAgICAgRVhQRUNUX0VRKDEsIGxpc3RlbmVyLnZvbGF0aWxlX21vdmVfYXNzaWduKTsK
ICAgfQogI2VuZGlmICAvLyBBQlNMX0hBVkVfU1REX09QVElPTkFMCi0gIEVYUEVDVF9GQUxTRShz
dGQ6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxjb25zdCBpbnQ+Pjo6dmFsdWUp
OwotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxD
b3B5YWJsZT4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxl
PGFic2w6Om9wdGlvbmFsPE1vdmVhYmxlVGhyb3c+Pjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShz
dGQ6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJsZU5vVGhyb3c+Pjo6
dmFsdWUpOwotICBFWFBFQ1RfRkFMU0Uoc3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJzbDo6b3B0
aW9uYWw8Tm9uTW92YWJsZT4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19tb3Zl
X2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8Y29uc3QgaW50Pj46OnZhbHVlKTsKKyAgRVhQRUNU
X1RSVUUoYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPENvcHlhYmxlPj46
OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9w
dGlvbmFsPE1vdmVhYmxlVGhyb3c+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc19t
b3ZlX2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8TW92ZWFibGVOb1Rocm93Pj46OnZhbHVlKTsK
KyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxO
b25Nb3ZhYmxlPj46OnZhbHVlKTsKIAogICBFWFBFQ1RfRkFMU0UoCiAgICAgICBzdGQ6OmlzX25v
dGhyb3dfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPE1vdmVhYmxlVGhyb3c+Pjo6dmFs
dWUpOwpAQCAtMTYxOSw3ICsxNjIwLDcgQEAgVEVTVChvcHRpb25hbFRlc3QsIEFzc2lnbm1lbnRD
b25zdHJhaW50cykgewogICBFWFBFQ1RfVFJVRSgKICAgICAgIChzdGQ6OmlzX2Fzc2lnbmFibGU8
YWJzbDo6b3B0aW9uYWw8QW55TGlrZT4mLCBjb25zdCBBbnlMaWtlJj46OnZhbHVlKSk7CiAgIEVY
UEVDVF9UUlVFKHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPEFueUxpa2U+
Pjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpv
cHRpb25hbDxBbnlMaWtlPj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfY29weV9h
c3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPEFueUxpa2U+Pjo6dmFsdWUpOwogfQogCiB9ICAvLyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW4uaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3Nw
YW4uaAppbmRleCA3NmJlODE5ZWNjYTIxODZlNWRkNDlkYmEwYjJmZDRhNmQyN2ZmOWU4Li45MTFh
ZjBjNTdhNjFhNjc4NTU1N2E5MWZiYjY5MmQ3ZDkwMTkxNDU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
eXBlcy9zcGFuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvc3Bhbi5oCkBAIC04Nyw3ICs4Nyw3IEBAIGNv
bnN0ZXhwciBhdXRvIEdldERhdGFJbXBsKEMmIGMsIGNoYXIpIG5vZXhjZXB0ICAvLyBOT0xJTlQo
cnVudGltZS9yZWZlcmVuY2VzKQogICByZXR1cm4gYy5kYXRhKCk7CiB9CiAKLS8vIEJlZm9yZSBD
KysxNywgc3RkOjpzdHJpbmc6OmRhdGEgcmV0dXJucyBhIGNvbnN0IGNoYXIqIGluIGFsbCBjYXNl
cy4KKy8vIEJlZm9yZSBDKysxNywgc3RyaW5nOjpkYXRhIHJldHVybnMgYSBjb25zdCBjaGFyKiBp
biBhbGwgY2FzZXMuCiBpbmxpbmUgY2hhciogR2V0RGF0YUltcGwoc3RkOjpzdHJpbmcmIHMsICAv
LyBOT0xJTlQocnVudGltZS9yZWZlcmVuY2VzKQogICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCkgbm9leGNlcHQgewogICByZXR1cm4gJnNbMF07CkBAIC0zNzksNjQgKzM3OSw3MCBAQCBjbGFz
cyBTcGFuIHsKICAgLy8KICAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgaSd0aCBlbGVt
ZW50IG9mIHRoaXMgc3Bhbi4KICAgY29uc3RleHByIHJlZmVyZW5jZSBhdChzaXplX3R5cGUgaSkg
Y29uc3QgewotICAgIHJldHVybiBBQlNMX1BSRURJQ1RfVFJVRShpIDwgc2l6ZSgpKQotICAgICAg
ICAgICAgICAgPyBwdHJfW2ldCisgICAgcmV0dXJuIEFCU0xfUFJFRElDVF9UUlVFKGkgPCBzaXpl
KCkpICAvLworICAgICAgICAgICAgICAgPyAqKGRhdGEoKSArIGkpCiAgICAgICAgICAgICAgICA6
IChiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoCiAgICAgICAgICAgICAgICAgICAg
ICAgIlNwYW46OmF0IGZhaWxlZCBib3VuZHMgY2hlY2siKSwKLSAgICAgICAgICAgICAgICAgIHB0
cl9baV0pOworICAgICAgICAgICAgICAgICAgKihkYXRhKCkgKyBpKSk7CiAgIH0KIAogICAvLyBT
cGFuOjpmcm9udCgpCiAgIC8vCiAgIC8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0
IGVsZW1lbnQgb2YgdGhpcyBzcGFuLgotICByZWZlcmVuY2UgZnJvbnQoKSBjb25zdCBub2V4Y2Vw
dCB7IHJldHVybiBBQlNMX0FTU0VSVChzaXplKCkgPiAwKSwgcHRyX1swXTsgfQorICBjb25zdGV4
cHIgcmVmZXJlbmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQgeworICAgIHJldHVybiBBQlNMX0FT
U0VSVChzaXplKCkgPiAwKSwgKmRhdGEoKTsKKyAgfQogCiAgIC8vIFNwYW46OmJhY2soKQogICAv
LwogICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhpcyBz
cGFuLgotICByZWZlcmVuY2UgYmFjaygpIGNvbnN0IG5vZXhjZXB0IHsKLSAgICByZXR1cm4gQUJT
TF9BU1NFUlQoc2l6ZSgpID4gMCksIHB0cl9bc2l6ZSgpIC0gMV07CisgIGNvbnN0ZXhwciByZWZl
cmVuY2UgYmFjaygpIGNvbnN0IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gQUJTTF9BU1NFUlQoc2l6
ZSgpID4gMCksICooZGF0YSgpICsgc2l6ZSgpIC0gMSk7CiAgIH0KIAogICAvLyBTcGFuOjpiZWdp
bigpCiAgIC8vCiAgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGZpcnN0IGVsZW1lbnQg
b2YgdGhpcyBzcGFuLgotICBjb25zdGV4cHIgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBub2V4Y2Vw
dCB7IHJldHVybiBwdHJfOyB9CisgIGNvbnN0ZXhwciBpdGVyYXRvciBiZWdpbigpIGNvbnN0IG5v
ZXhjZXB0IHsgcmV0dXJuIGRhdGEoKTsgfQogCiAgIC8vIFNwYW46OmNiZWdpbigpCiAgIC8vCiAg
IC8vIFJldHVybnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGlz
IHNwYW4uCi0gIGNvbnN0ZXhwciBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCBub2V4Y2Vw
dCB7IHJldHVybiBwdHJfOyB9CisgIGNvbnN0ZXhwciBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBj
b25zdCBub2V4Y2VwdCB7IHJldHVybiBiZWdpbigpOyB9CiAKICAgLy8gU3Bhbjo6ZW5kKCkKICAg
Ly8KICAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgbGFzdCBlbGVtZW50IG9mIHRoaXMg
c3Bhbi4KLSAgaXRlcmF0b3IgZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcHRyXyArIGxl
bl87IH0KKyAgY29uc3RleHByIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJu
IGRhdGEoKSArIHNpemUoKTsgfQogCiAgIC8vIFNwYW46OmNlbmQoKQogICAvLwogICAvLyBSZXR1
cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGxhc3QgZWxlbWVudCBvZiB0aGlzIHNwYW4uCi0g
IGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBlbmQoKTsgfQor
ICBjb25zdGV4cHIgY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJu
IGVuZCgpOyB9CiAKICAgLy8gU3Bhbjo6cmJlZ2luKCkKICAgLy8KICAgLy8gUmV0dXJucyBhIHJl
dmVyc2UgaXRlcmF0b3Igc3RhcnRpbmcgYXQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGlzIHNwYW4u
Ci0gIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2
ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KKyAgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3IgcmJl
Z2luKCkgY29uc3Qgbm9leGNlcHQgeworICAgIHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgp
KTsKKyAgfQogCiAgIC8vIFNwYW46OmNyYmVnaW4oKQogICAvLwogICAvLyBSZXR1cm5zIGEgcmV2
ZXJzZSBjb25zdCBpdGVyYXRvciBzdGFydGluZyBhdCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoaXMg
c3Bhbi4KLSAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQg
eyByZXR1cm4gcmJlZ2luKCk7IH0KKyAgY29uc3RleHByIGNvbnN0X3JldmVyc2VfaXRlcmF0b3Ig
Y3JiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJiZWdpbigpOyB9CiAKICAgLy8gU3Bh
bjo6cmVuZCgpCiAgIC8vCiAgIC8vIFJldHVybnMgYSByZXZlcnNlIGl0ZXJhdG9yIHN0YXJ0aW5n
IGF0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoaXMgc3Bhbi4KLSAgcmV2ZXJzZV9pdGVyYXRvciBy
ZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsg
fQorICBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3Qgbm9leGNlcHQgewor
ICAgIHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOworICB9CiAKICAgLy8gU3Bhbjo6
Y3JlbmQoKQogICAvLwogICAvLyBSZXR1cm5zIGEgcmV2ZXJzZSBpdGVyYXRvciBzdGFydGluZyBh
dCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGlzIHNwYW4uCi0gIGNvbnN0X3JldmVyc2VfaXRlcmF0
b3IgY3JlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByZW5kKCk7IH0KKyAgY29uc3RleHBy
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBy
ZW5kKCk7IH0KIAogICAvLyBTcGFuIG11dGF0aW9ucwogCkBAIC00NDQsNyArNDUwLDcgQEAgY2xh
c3MgU3BhbiB7CiAgIC8vCiAgIC8vIFJlbW92ZXMgdGhlIGZpcnN0IGBuYCBlbGVtZW50cyBmcm9t
IHRoZSBzcGFuLgogICB2b2lkIHJlbW92ZV9wcmVmaXgoc2l6ZV90eXBlIG4pIG5vZXhjZXB0IHsK
LSAgICBhc3NlcnQobGVuXyA+PSBuKTsKKyAgICBhc3NlcnQoc2l6ZSgpID49IG4pOwogICAgIHB0
cl8gKz0gbjsKICAgICBsZW5fIC09IG47CiAgIH0KQEAgLTQ1Myw3ICs0NTksNyBAQCBjbGFzcyBT
cGFuIHsKICAgLy8KICAgLy8gUmVtb3ZlcyB0aGUgbGFzdCBgbmAgZWxlbWVudHMgZnJvbSB0aGUg
c3Bhbi4KICAgdm9pZCByZW1vdmVfc3VmZml4KHNpemVfdHlwZSBuKSBub2V4Y2VwdCB7Ci0gICAg
YXNzZXJ0KGxlbl8gPj0gbik7CisgICAgYXNzZXJ0KHNpemUoKSA+PSBuKTsKICAgICBsZW5fIC09
IG47CiAgIH0KIApAQCAtNDc0LDExICs0ODAsMTggQEAgY2xhc3MgU3BhbiB7CiAgIC8vICAgYWJz
bDo6TWFrZVNwYW4odmVjKS5zdWJzcGFuKDQpOyAgICAgLy8ge30KICAgLy8gICBhYnNsOjpNYWtl
U3Bhbih2ZWMpLnN1YnNwYW4oNSk7ICAgICAvLyB0aHJvd3Mgc3RkOjpvdXRfb2ZfcmFuZ2UKICAg
Y29uc3RleHByIFNwYW4gc3Vic3BhbihzaXplX3R5cGUgcG9zID0gMCwgc2l6ZV90eXBlIGxlbiA9
IG5wb3MpIGNvbnN0IHsKLSAgICByZXR1cm4gKHBvcyA8PSBsZW5fKQotICAgICAgICAgICAgICAg
PyBTcGFuKHB0cl8gKyBwb3MsIHNwYW5faW50ZXJuYWw6Ok1pbihsZW5fIC0gcG9zLCBsZW4pKQor
ICAgIHJldHVybiAocG9zIDw9IHNpemUoKSkKKyAgICAgICAgICAgICAgID8gU3BhbihkYXRhKCkg
KyBwb3MsIHNwYW5faW50ZXJuYWw6Ok1pbihzaXplKCkgLSBwb3MsIGxlbikpCiAgICAgICAgICAg
ICAgICA6IChiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoInBvcyA+IHNpemUoKSIp
LCBTcGFuKCkpOwogICB9CiAKKyAgLy8gU3VwcG9ydCBmb3IgYWJzbDo6SGFzaC4KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCBTcGFuIHYpIHsK
KyAgICByZXR1cm4gSDo6Y29tYmluZShIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3ZlKGgp
LCB2LmRhdGEoKSwgdi5zaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgIHYuc2l6ZSgpKTsK
KyAgfQorCiAgcHJpdmF0ZToKICAgcG9pbnRlciBwdHJfOwogICBzaXplX3R5cGUgbGVuXzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW5fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW5fdGVz
dC5jYwppbmRleCBmYmNlN2U4NzQ3OTg0MWNmODkxMzgwMjY5OTMyMzhjMzk5ODYyMTY4Li5iZDcz
OWZmMmEwNzBhNmZjZWMxYTY0ZWExMzNkMWI4MWYwMGNmYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
eXBlcy9zcGFuX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvc3Bhbl90ZXN0LmNjCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl90ZXN0aW5n
LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXkuaCIKICNpbmNsdWRlICJh
YnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5oIgorI2luY2x1ZGUgImFic2wvaGFzaC9oYXNo
X3Rlc3RpbmcuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgogCiBuYW1lc3Bh
Y2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFy
aWFudC5oCmluZGV4IDE3ZTA2MzRkZTAzNzQ2NDMzNjc0ZTk5ZWMwNzdiNmY3NzNlOGIyZDkuLjJm
Nzg3MjJmOGI3Yzk1NmQ2ZDE3NmU5MDJkNGUwMDljYTk2OTRhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzL3ZhcmlhbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50LmgKQEAgLTQxNCw5ICs0
MTQsOSBAQCBjb25zdGV4cHIgYWJzbDo6YWRkX3BvaW50ZXJfdDxjb25zdCBUPiBnZXRfaWYoCiAv
LyAgIH07CiAvLwogLy8gICAvLyBEZWNsYXJlIG91ciB2YXJpYW50LCBhbmQgY2FsbCBgYWJzbDo6
dmlzaXQoKWAgb24gaXQuCi0vLyAgIHN0ZDo6dmFyaWFudDxpbnQsIHN0ZDo6c3RyaW5nPiBmb28g
PSBzdGQ6OnN0cmluZygiZm9vIik7CisvLyAgIGFic2w6OnZhcmlhbnQ8aW50LCBzdGQ6OnN0cmlu
Zz4gZm9vID0gc3RkOjpzdHJpbmcoImZvbyIpOwogLy8gICBHZXRWYXJpYW50IHZpc2l0b3I7Ci0v
LyAgIHN0ZDo6dmlzaXQodmlzaXRvciwgZm9vKTsgIC8vIFByaW50cyBgVGhlIHZhcmlhbnQncyB2
YWx1ZSBpczogZm9vJworLy8gICBhYnNsOjp2aXNpdCh2aXNpdG9yLCBmb28pOyAgLy8gUHJpbnRz
IGBUaGUgdmFyaWFudCdzIHZhbHVlIGlzOiBmb28nCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRv
ciwgdHlwZW5hbWUuLi4gVmFyaWFudHM+CiB2YXJpYW50X2ludGVybmFsOjpWaXNpdFJlc3VsdDxW
aXNpdG9yLCBWYXJpYW50cy4uLj4gdmlzaXQoVmlzaXRvciYmIHZpcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYW50cyYmLi4u
IHZhcnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfZXhjZXB0aW9uX3NhZmV0
eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MK
aW5kZXggMjdjMGI5NmNhNmYzNDA4NTBiMDI1MWJjNmU5MTZkMzdjZGYxMTY0NS4uNTg0MzZmMDdi
ODQzNzQ4ZTdhNjNkMTFjODI5ZTE2ZjU1NTFhNmRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
dmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFu
dF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKQEAgLTUzLDEzICs1MywxMyBAQCB2b2lkIFRvVmFs
dWVsZXNzQnlFeGNlcHRpb24oVGhyb3dpbmdWYXJpYW50JiB2KSB7ICAvLyBOT0xJTlQKICAgdHJ5
IHsKICAgICB2LmVtcGxhY2U8VGhyb3dlcj4oKTsKICAgICB2LmVtcGxhY2U8VGhyb3dlcj4oRXhj
ZXB0aW9uT25Db252ZXJzaW9uPFRocm93ZXI+KCkpOwotICB9IGNhdGNoIChDb252ZXJzaW9uRXhj
ZXB0aW9uJiAvKmUqLykgeworICB9IGNhdGNoIChjb25zdCBDb252ZXJzaW9uRXhjZXB0aW9uJikg
ewogICAgIC8vIFRoaXMgc3BhY2UgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rLgogICB9CiB9CiAK
IC8vIENoZWNrIHRoYXQgdmFyaWFudCBpcyBzdGlsbCBpbiBhIHVzYWJsZSBzdGF0ZSBhZnRlciBh
biBleGNlcHRpb24gaXMgdGhyb3duLgotdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IENoZWNrSW52
YXJpYW50cyhUaHJvd2luZ1ZhcmlhbnQqIHYpIHsKK3Rlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBW
YXJpYW50SW52YXJpYW50cyhUaHJvd2luZ1ZhcmlhbnQqIHYpIHsKICAgdXNpbmcgdGVzdGluZzo6
QXNzZXJ0aW9uRmFpbHVyZTsKICAgdXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzczsKIApA
QCAtMTAwLDcgKzEwMCw3IEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBDaGVja0ludmFyaWFu
dHMoVGhyb3dpbmdWYXJpYW50KiB2KSB7CiAgICAgYXV0byB1bnVzZWQgPSBhYnNsOjpnZXQ8VGhy
b3dlcj4oKnYpOwogICAgIHN0YXRpY19jYXN0PHZvaWQ+KHVudXNlZCk7CiAgICAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUoKSA8PCAiVmFyaWFudCBzaG91bGQgbm90IGNvbnRhaW4gVGhyb3dlciI7
Ci0gIH0gY2F0Y2ggKGFic2w6OmJhZF92YXJpYW50X2FjY2VzcykgeworICB9IGNhdGNoIChjb25z
dCBhYnNsOjpiYWRfdmFyaWFudF9hY2Nlc3MmKSB7CiAgIH0gY2F0Y2ggKC4uLikgewogICAgIHJl
dHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIHRocm93IGZy
b20gYWJzbDo6Z2V0IjsKICAgfQpAQCAtMjEzLDggKzIxMyw4IEBAIFRFU1QoVmFyaWFudEV4Y2Vw
dGlvblNhZmV0eVRlc3QsIENvcHlBc3NpZ24pIHsKICAgICAgICAgTWFrZUV4Y2VwdGlvblNhZmV0
eVRlc3RlcigpCiAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShXaXRoVGhyb3dlcigpKQog
ICAgICAgICAgICAgLldpdGhPcGVyYXRpb24oWyZyaHNdKFRocm93aW5nVmFyaWFudCogbGhzKSB7
ICpsaHMgPSByaHM7IH0pOwotICAgIEVYUEVDVF9UUlVFKHRlc3Rlci5XaXRoSW52YXJpYW50cyhD
aGVja0ludmFyaWFudHMpLlRlc3QoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRlc3Rlci5XaXRoSW52
YXJpYW50cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3Rl
ci5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzKS5UZXN0KCkpOworICAgIEVYUEVDVF9G
QUxTRSh0ZXN0ZXIuV2l0aENvbnRyYWN0cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOwogICB9
CiAgIHsKICAgICBjb25zdCBUaHJvd2luZ1ZhcmlhbnQgcmhzKEV4cGVjdGVkVGhyb3dlclZlYygp
KTsKQEAgLTIyMiw4ICsyMjIsOCBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBD
b3B5QXNzaWduKSB7CiAgICAgICAgIE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAg
ICAgICAgLldpdGhJbml0aWFsVmFsdWUoV2l0aFRocm93ZXJWZWMoKSkKICAgICAgICAgICAgIC5X
aXRoT3BlcmF0aW9uKFsmcmhzXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeyAqbGhzID0gcmhzOyB9
KTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRz
KS5UZXN0KCkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aEludmFyaWFudHMoc3Ryb25n
X2d1YXJhbnRlZSkuVGVzdCgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuV2l0aENvbnRyYWN0
cyhWYXJpYW50SW52YXJpYW50cykuVGVzdCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdGVyLldp
dGhDb250cmFjdHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAgfQogICAvLyBsaWJzdGRj
Kysgc3RkOjp2YXJpYW50IGhhcyBidWdzIG9uIGNvcHkgYXNzaWdubWVudCByZWdhcmRpbmcgZXhj
ZXB0aW9uCiAgIC8vIHNhZmV0eS4KQEAgLTI1MSwxMiArMjUxLDEyIEBAIFRFU1QoVmFyaWFudEV4
Y2VwdGlvblNhZmV0eVRlc3QsIENvcHlBc3NpZ24pIHsKICAgICAgICAgICAgIC5XaXRoSW5pdGlh
bFZhbHVlKFdpdGhDb3B5Tm9UaHJvdygpKQogICAgICAgICAgICAgLldpdGhPcGVyYXRpb24oWyZy
aHNdKFRocm93aW5nVmFyaWFudCogbGhzKSB7ICpsaHMgPSByaHM7IH0pOwogICAgIEVYUEVDVF9U
UlVFKHRlc3RlcgotICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZh
cmlhbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10oVGhyb3dpbmdW
YXJpYW50KiBsaHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxocy0+dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoVmFy
aWFudEludmFyaWFudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRo
cm93aW5nVmFyaWFudCogbGhzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxocy0+dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAuVGVzdCgpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UodGVzdGVyLldpdGhJbnZhcmlhbnRzKHN0cm9uZ19ndWFyYW50ZWUpLlRl
c3QoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3Rlci5XaXRoQ29udHJhY3RzKHN0cm9uZ19ndWFy
YW50ZWUpLlRlc3QoKSk7CiAgIH0KICNlbmRpZiAgLy8gIShkZWZpbmVkKEFCU0xfSEFWRV9TVERf
VkFSSUFOVCkgJiYgZGVmaW5lZChfX0dMSUJDWFhfXykpCiAgIHsKQEAgLTI2OCw3ICsyNjgsNyBA
QCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBDb3B5QXNzaWduKSB7CiAgICAgY29u
c3QgVGhyb3dpbmdWYXJpYW50IHJocyhNb3ZlTm90aHJvd3t9KTsKICAgICBFWFBFQ1RfVFJVRShN
YWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0
aWFsVmFsdWUoV2l0aFRocm93ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlh
bnRzKENoZWNrSW52YXJpYW50cywgc3Ryb25nX2d1YXJhbnRlZSkKKyAgICAgICAgICAgICAgICAg
ICAgLldpdGhDb250cmFjdHMoVmFyaWFudEludmFyaWFudHMsIHN0cm9uZ19ndWFyYW50ZWUpCiAg
ICAgICAgICAgICAgICAgICAgIC5UZXN0KFsmcmhzXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeyAq
bGhzID0gcmhzOyB9KSk7CiAgIH0KIH0KQEAgLTMwNCwxMSArMzA0LDExIEBAIFRFU1QoVmFyaWFu
dEV4Y2VwdGlvblNhZmV0eVRlc3QsIE1vdmVBc3NpZ24pIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICpsaHMgPSBzdGQ6Om1vdmUoY29weSk7CiAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgRVhQRUNUX1RSVUUodGVzdGVyCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50
cygKLSAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrSW52YXJpYW50cywKKyAgICAgICAgICAg
ICAgICAgICAgLldpdGhDb250cmFjdHMoCisgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYW50
SW52YXJpYW50cywKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXShUaHJvd2luZ1ZhcmlhbnQq
IGxocykgeyByZXR1cm4gbGhzLT5pbmRleCgpID09IGo7IH0pCiAgICAgICAgICAgICAgICAgICAg
IC5UZXN0KCkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aEludmFyaWFudHMoc3Ryb25n
X2d1YXJhbnRlZSkuVGVzdCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdGVyLldpdGhDb250cmFj
dHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAgfQogICB7CiAgICAgLy8gLSBvdGhlcndp
c2UgKGluZGV4KCkgIT0gaiksIGVxdWl2YWxlbnQgdG8KQEAgLTMxOCwxMCArMzE4LDEwIEBAIFRF
U1QoVmFyaWFudEV4Y2VwdGlvblNhZmV0eVRlc3QsIE1vdmVBc3NpZ24pIHsKICAgICBUaHJvd2lu
Z1ZhcmlhbnQgcmhzKENvcHlOb3Rocm93e30pOwogICAgIEVYUEVDVF9UUlVFKE1ha2VFeGNlcHRp
b25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShX
aXRoVGhyb3dlcigpKQotICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tJ
bnZhcmlhbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10oVGhyb3dp
bmdWYXJpYW50KiBsaHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGxocy0+dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMo
VmFyaWFudEludmFyaWFudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtd
KFRocm93aW5nVmFyaWFudCogbGhzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxocy0+dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAuVGVzdChbJl0o
VGhyb3dpbmdWYXJpYW50KiBsaHMpIHsKICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGNvcHkg
PSByaHM7CiAgICAgICAgICAgICAgICAgICAgICAgKmxocyA9IHN0ZDo6bW92ZShjb3B5KTsKQEAg
LTM0NywxMiArMzQ3LDEyIEBAIFRFU1QoVmFyaWFudEV4Y2VwdGlvblNhZmV0eVRlc3QsIFZhbHVl
QXNzaWduKSB7CiAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShXaXRoVGhyb3dlcigpKQog
ICAgICAgICAgICAgLldpdGhPcGVyYXRpb24oW3Joc10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsg
KmxocyA9IHJoczsgfSk7CiAgICAgRVhQRUNUX1RSVUUoY29weV90ZXN0ZXIKLSAgICAgICAgICAg
ICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50cywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhbGhzLT52YWx1ZWxlc3NfYnlf
ZXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAg
ICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhWYXJpYW50SW52YXJpYW50cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWxocy0+dmFsdWVs
ZXNzX2J5X2V4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KQogICAgICAgICAgICAgICAgICAgICAuVGVzdCgpKTsKLSAgICBFWFBFQ1RfRkFMU0UoY29weV90
ZXN0ZXIuV2l0aEludmFyaWFudHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoY29weV90ZXN0ZXIuV2l0aENvbnRyYWN0cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0
KCkpOwogICAgIC8vIG1vdmUgYXNzaWduCiAgICAgYXV0byBtb3ZlX3Rlc3RlciA9IE1ha2VFeGNl
cHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0
aWFsVmFsdWUoV2l0aFRocm93ZXIoKSkKQEAgLTM2MSwxMyArMzYxLDEzIEBAIFRFU1QoVmFyaWFu
dEV4Y2VwdGlvblNhZmV0eVRlc3QsIFZhbHVlQXNzaWduKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpsaHMgPSBzdGQ6Om1vdmUoY29weSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKICAgICBFWFBFQ1RfVFJVRShtb3ZlX3Rlc3RlcgotICAgICAgICAgICAgICAgICAg
ICAuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRp
b24oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAg
ICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhbGhzLT52YWx1ZWxlc3NfYnlf
ZXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAg
ICAgICAgICAgICAgICAgIC5UZXN0KCkpOwogCi0gICAgRVhQRUNUX0ZBTFNFKG1vdmVfdGVzdGVy
LldpdGhJbnZhcmlhbnRzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKG1vdmVfdGVzdGVyLldpdGhDb250cmFjdHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsK
ICAgfQogICAvLyBPdGhlcndpc2UgKCp0aGlzIGhvbGRzIHNvbWV0aGluZyBlbHNlKSwgaWYgaXNf
bm90aHJvd19jb25zdHJ1Y3RpYmxlX3Y8VGosCiAgIC8vIFQ+IHx8ICFpc19ub3Rocm93X21vdmVf
Y29uc3RydWN0aWJsZV92PFRqPiBpcyB0cnVlLCBlcXVpdmFsZW50IHRvCkBAIC00MDAsMTIgKzQw
MCwxMiBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBWYWx1ZUFzc2lnbikgewog
ICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoV2l0aENvcHlOb1Rocm93KCkpCiAgICAgICAg
ICAgICAuV2l0aE9wZXJhdGlvbihbJnJoc10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsgKmxocyA9
IHJoczsgfSk7CiAgICAgRVhQRUNUX1RSVUUoY29weV90ZXN0ZXIKLSAgICAgICAgICAgICAgICAg
ICAgLldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRp
b24oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAg
ICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVzc19ieV9l
eGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAg
ICAgICAgICAgICAgICAgLlRlc3QoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGNvcHlfdGVzdGVyLldp
dGhJbnZhcmlhbnRzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGNvcHlfdGVzdGVyLldpdGhDb250cmFjdHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAg
ICAvLyBtb3ZlCiAgICAgYXV0byBtb3ZlX3Rlc3RlciA9IE1ha2VFeGNlcHRpb25TYWZldHlUZXN0
ZXIoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoV2l0aENv
cHlOb1Rocm93KCkpCkBAIC00MTMsMTIgKzQxMywxMiBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25T
YWZldHlUZXN0LCBWYWx1ZUFzc2lnbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
bGhzID0gRXhwZWN0ZWRUaHJvd2VyKHRlc3Rpbmc6Om5vdGhyb3dfY3Rvcik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICBFWFBFQ1RfVFJVRShtb3ZlX3Rlc3RlcgotICAgICAg
ICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxocy0+dmFsdWVsZXNz
X2J5X2V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkK
KyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoVmFyaWFudEludmFyaWFudHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhz
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxocy0+dmFs
dWVsZXNzX2J5X2V4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9KQogICAgICAgICAgICAgICAgICAgICAuVGVzdCgpKTsKLSAgICBFWFBFQ1RfRkFMU0UobW92
ZV90ZXN0ZXIuV2l0aEludmFyaWFudHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKKyAgICBF
WFBFQ1RfRkFMU0UobW92ZV90ZXN0ZXIuV2l0aENvbnRyYWN0cyhzdHJvbmdfZ3VhcmFudGVlKS5U
ZXN0KCkpOwogICB9CiAgIC8vIE90aGVyd2lzZSAoaWYgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl
X3Y8VGosIFQ+ID09IGZhbHNlICYmCiAgIC8vIGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxl
PFRqPiA9PSB0cnVlKSwKQEAgLTQzMiw3ICs0MzIsNyBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25T
YWZldHlUZXN0LCBWYWx1ZUFzc2lnbikgewogICAgIE1vdmVOb3Rocm93IHJoczsKICAgICBFWFBF
Q1RfVFJVRShNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgICAg
LldpdGhJbml0aWFsVmFsdWUoV2l0aFRocm93ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgLldp
dGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50cywgc3Ryb25nX2d1YXJhbnRlZSkKKyAgICAgICAg
ICAgICAgICAgICAgLldpdGhDb250cmFjdHMoVmFyaWFudEludmFyaWFudHMsIHN0cm9uZ19ndWFy
YW50ZWUpCiAgICAgICAgICAgICAgICAgICAgIC5UZXN0KFsmcmhzXShUaHJvd2luZ1ZhcmlhbnQq
IGxocykgeyAqbGhzID0gcmhzOyB9KSk7CiAgIH0KICNlbmRpZiAgLy8gIShkZWZpbmVkKEFCU0xf
SEFWRV9TVERfVkFSSUFOVCkgJiYgZGVmaW5lZChfX0dMSUJDWFhfXykpCkBAIC00NTAsMTIgKzQ1
MCwxMiBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBFbXBsYWNlKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB2LT5lbXBsYWNlPFRocm93ZXI+KGFyZ3MpOwogICAgICAgICAg
ICAgICAgICAgICAgIH0pOwogICAgIEVYUEVDVF9UUlVFKHRlc3RlcgotICAgICAgICAgICAgICAg
ICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiB2KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2LT52YWx1ZWxlc3NfYnlfZXhjZXB0aW9u
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAg
ICAgICAgICAuV2l0aENvbnRyYWN0cyhWYXJpYW50SW52YXJpYW50cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiB2KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYtPnZhbHVlbGVzc19ieV9leGNlcHRp
b24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAg
ICAgICAgICAgLlRlc3QoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRlc3Rlci5XaXRoSW52YXJpYW50
cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0
aENvbnRyYWN0cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOwogICB9CiB9CiAKQEAgLTQ3Miw3
ICs0NzIsNyBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBTd2FwKSB7CiAgICAg
VGhyb3dpbmdWYXJpYW50IHJocyA9IEV4cGVjdGVkVGhyb3dlcigpOwogICAgIEVYUEVDVF9UUlVF
KE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgICAuV2l0aElu
aXRpYWxWYWx1ZShXaXRoVGhyb3dlcigpKQotICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFy
aWFudHMoQ2hlY2tJbnZhcmlhbnRzKQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0
cyhWYXJpYW50SW52YXJpYW50cykKICAgICAgICAgICAgICAgICAgICAgLlRlc3QoWyZdKFRocm93
aW5nVmFyaWFudCogbGhzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgYXV0byBjb3B5ID0gcmhz
OwogICAgICAgICAgICAgICAgICAgICAgIGxocy0+c3dhcChjb3B5KTsKQEAgLTQ4Niw3ICs0ODYs
NyBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBTd2FwKSB7CiAgICAgVGhyb3dp
bmdWYXJpYW50IHJocyA9IEV4cGVjdGVkVGhyb3dlcigpOwogICAgIEVYUEVDVF9UUlVFKE1ha2VF
eGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxW
YWx1ZShXaXRoQ29weU5vVGhyb3coKSkKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlh
bnRzKENoZWNrSW52YXJpYW50cykKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMo
VmFyaWFudEludmFyaWFudHMpCiAgICAgICAgICAgICAgICAgICAgIC5UZXN0KFsmXShUaHJvd2lu
Z1ZhcmlhbnQqIGxocykgewogICAgICAgICAgICAgICAgICAgICAgIGF1dG8gY29weSA9IHJoczsK
ICAgICAgICAgICAgICAgICAgICAgICBsaHMtPnN3YXAoY29weSk7CkBAIC00OTYsNyArNDk2LDcg
QEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwgU3dhcCkgewogICAgIFRocm93aW5n
VmFyaWFudCByaHMgPSBFeHBlY3RlZFRocm93ZXIoKTsKICAgICBFWFBFQ1RfVFJVRShNYWtlRXhj
ZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFs
dWUoV2l0aENvcHlOb1Rocm93KCkpCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50
cyhDaGVja0ludmFyaWFudHMpCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFZh
cmlhbnRJbnZhcmlhbnRzKQogICAgICAgICAgICAgICAgICAgICAuVGVzdChbJl0oVGhyb3dpbmdW
YXJpYW50KiBsaHMpIHsKICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGNvcHkgPSByaHM7CiAg
ICAgICAgICAgICAgICAgICAgICAgY29weS5zd2FwKCpsaHMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXMvdmFyaWFudF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF90ZXN0LmNjCmluZGV4
IDI2MmJkOTQ0NmMxODQxYTU3MDcxNTc0NWMzNDM0ZWUxYjhlMTlmOTUuLmJmYjhiZDdhMDIyM2Yz
Y2Q5ODM0ZTQ3NjRkYzVhNzNiYzE2NjRkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3Zhcmlh
bnRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X3Rlc3QuY2MKQEAgLTQwMyw3ICs0
MDMsNyBAQCBzdHJ1Y3QgaXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgVD4KIHN0cnVjdCBpc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlCi0gICAgOiBz
dGQ6OmlzX21vdmVfYXNzaWduYWJsZTxTaW5nbGVVbmlvbjxUPj46OnR5cGUge307CisgICAgOiBh
YnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8U2luZ2xlVW5pb248VD4+Ojp0eXBlIHt9OwogCiBURVNU
KFZhcmlhbnRUZXN0LCBOb3Rocm93TW92ZUNvbnN0cnVjdGlibGUpIHsKICAgLy8gVmVyaWZ5IHRo
YXQgdmFyaWFudCBpcyBub3Rocm93IG1vdmUgY29uc3RydWN0aWJsZSBpZmYgaXRzIHRlbXBsYXRl
CkBAIC0yNDM5LDE0ICsyNDM5LDE0IEBAIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RNb3ZlQ29udmVy
c2lvblZpYUNvbnZlcnRWYXJpYW50VG8pIHsKIAogVEVTVChWYXJpYW50VGVzdCwgVGVzdENvcHlB
bmRNb3ZlVHlwZVRyYWl0cykgewogICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2NvcHlfY29uc3RydWN0
aWJsZTx2YXJpYW50PHN0ZDo6c3RyaW5nPj46OnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUoc3RkOjpp
c19jb3B5X2Fzc2lnbmFibGU8dmFyaWFudDxzdGQ6OnN0cmluZz4+Ojp2YWx1ZSk7CisgIEVYUEVD
VF9UUlVFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTx2YXJpYW50PHN0ZDo6c3RyaW5nPj46OnZh
bHVlKTsKICAgRVhQRUNUX1RSVUUoc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8dmFyaWFudDxz
dGQ6OnN0cmluZz4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbW92ZV9hc3NpZ25h
YmxlPHZhcmlhbnQ8c3RkOjpzdHJpbmc+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpp
c19tb3ZlX2Fzc2lnbmFibGU8dmFyaWFudDxzdGQ6OnN0cmluZz4+Ojp2YWx1ZSk7CiAgIEVYUEVD
VF9UUlVFKHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPHZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRy
PGludD4+Pjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTx2
YXJpYW50PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6aXNfbW92ZV9hc3NpZ25hYmxlPHZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPGludD4+Pjo6dmFs
dWUpOwogICBFWFBFQ1RfRkFMU0UoCiAgICAgICBzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTx2
YXJpYW50PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pj46OnZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNFKHN0
ZDo6aXNfY29weV9hc3NpZ25hYmxlPHZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPGludD4+Pjo6dmFs
dWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPHZhcmlhbnQ8c3Rk
Ojp1bmlxdWVfcHRyPGludD4+Pjo6dmFsdWUpOwogCiAgIEVYUEVDVF9GQUxTRSgKICAgICAgIGFi
c2w6OmlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGU8dmFyaWFudDxzdGQ6OnN0cmluZz4+
Ojp2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxpdHkuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3V0
aWxpdHkvdXRpbGl0eS5oCmluZGV4IGQ3MzYwMmM0N2QzYjZkYTE2NjM1N2ZiY2RjNWQ0MTUxOWQ2
MjM1NjEuLmFlZjRiYWEwMmRjZDY3YWNlYjI1NGYwYTllNGJmZjAwZGE0Y2U1YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3V0aWxpdHkvdXRpbGl0eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkvdXRpbGl0eS5o
CkBAIC0yMzUsMTMgKzIzNSwxMyBAQCBhdXRvIGFwcGx5X2hlbHBlcihGdW5jdG9yJiYgZnVuY3Rv
ciwgVHVwbGUmJiB0LCBpbmRleF9zZXF1ZW5jZTxJbmRleGVzLi4uPikKIC8vIEV4YW1wbGU6CiAv
LwogLy8gICBjbGFzcyBGb297dm9pZCBCYXIoaW50KTt9OwotLy8gICB2b2lkIHVzZXJfZnVuY3Rp
b24oaW50LCBzdGQ6OnN0cmluZyk7CisvLyAgIHZvaWQgdXNlcl9mdW5jdGlvbihpbnQsIHN0cmlu
Zyk7CiAvLyAgIHZvaWQgdXNlcl9mdW5jdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Rm9vPik7CiAvLwog
Ly8gICBpbnQgbWFpbigpCiAvLyAgIHsKLS8vICAgICAgIHN0ZDo6dHVwbGU8aW50LCBzdGQ6OnN0
cmluZz4gdHVwbGUxKDQyLCAiYmFyIik7Ci0vLyAgICAgICAvLyBJbnZva2VzIHRoZSB1c2VyIGZ1
bmN0aW9uIG92ZXJsb2FkIG9uIGludCwgc3RkOjpzdHJpbmcuCisvLyAgICAgICBzdGQ6OnR1cGxl
PGludCwgc3RyaW5nPiB0dXBsZTEoNDIsICJiYXIiKTsKKy8vICAgICAgIC8vIEludm9rZXMgdGhl
IHVzZXIgZnVuY3Rpb24gb3ZlcmxvYWQgb24gaW50LCBzdHJpbmcuCiAvLyAgICAgICBhYnNsOjph
cHBseSgmdXNlcl9mdW5jdGlvbiwgdHVwbGUxKTsKIC8vCiAvLyAgICAgICBhdXRvIGZvbyA9IGFi
c2w6Om1ha2VfdW5pcXVlPEZvbz4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0FVVEhPUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9BVVRIT1JTCmluZGV4IDZiMGFmZDg2MTgxMGZhYmY1YjZkNTNmMzM1
Yjg4NTc5ZTEzN2Q2NDcuLjEyMTZiNDhkOTU5MDU1NjJjZDZlMWZmZTc5N2YwYzYzZWQyM2Q4YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0FV
VEhPUlMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvQVVU
SE9SUwpAQCAtMTYsNiArMTYsNyBAQCBDb2R5IEJhcm5lcyA8Y29uY2VwdGdlbmVzaXNAZ21haWwu
Y29tPgogQ29saW4gUGx1bWIKIERhdmlkIFBvcnRlciA8ZGF2aWRAcG9ydGVyLm1lPgogRGF4IEJv
b3lzZW4gPGRheEB5b3Vub3cuY29tPgorRGFuYWlsIEtpcm92IDxka2lyb3Zicm9hZHNvZnRAZ21h
aWwuY29tPgogRG1pdHJ5IExpemluIDxzZGtkaW1vbkBnbWFpbC5jb20+CiBFcmljIFJlc2Nvcmxh
LCBSVEZNIEluYy4gPGVrckBydGZtLmNvbT4KIEZyZWRlcmlrIFJpZWRlbCwgRnJvZ2cgR21iSCA8
ZnJlZGVyaWsucmllZGVsQGZyb2dnLmlvPgpAQCAtNDcsNiArNDgsNyBAQCBQZW5nIFl1IDx5dXBl
bmczMjNAZ21haWwuY29tPgogUmFmYWVsIExvcGV6IERpZXogPHJhZmFsb3BlemRpZXpAZ21haWwu
Y29tPgogUmFscGggR2lsZXMgPGdpbGVzQGdob3N0c2NyaXB0LmNvbT4KIFJpa3UgVm9pcGlvIDxy
aWt1LnZvaXBpb0BsaW5hcm8ub3JnPgorUm9iZXJ0IEJhcmVzIDxyb2JlcnRAYmFyZXMubWU+CiBS
b2JlcnQgTmFneSA8cm9iZXJ0Lm5hZ3lAZ21haWwuY29tPgogUnlhbiBZb2FrdW0gPHJ5b2FrdW1A
c2tvYmFsdC5jb20+CiBTYXRlbmRlciBTYXJvaGEgPHNzYXJvaGFAeWFob28uY29tPgpAQCAtNTYs
NiArNTgsNyBAQCBTaWx2aXUgQ2FyYWdlYSA8c2lsdml1LmNwcEBnbWFpbC5jb20+CiBTdGVmYW4g
R3VsYSA8c3Rld2VnQGdtYWlsLmNvbT4KIFN0ZXZlIFJlaWQgPHNyZWlkQHNlYS10by1za3kubmV0
PgogVGFydW4gQ2hhd2xhIDx0cm5rdW1hcmNoYXdsYUBnbWFpbC5jb20+CitVbGFkemlzbGF1IFN1
c2hhIDxsYW5kYnlAZ21haWwuY29tPgogVmxhZGltaXIgQmVsb2Jvcm9kb3YgPFZsYWRpbWlyVGVj
aE1hbkBnbWFpbC5jb20+CiBWaWNrZW4gU2ltb25pYW4gPHZzaW1vbkBnbWFpbC5jb20+CiBWaWN0
b3IgQ29zdGFuIDxjb3N0YW5AZ21haWwuY29tPgpAQCAtNzAsNiArNzMsMTAgQEAgU2VyZ2lvIEdh
cmNpYSBNdXJpbGxvIDxzZXJnaW8uZ2FyY2lhLm11cmlsbG9AZ21haWwuY29tPgogTWF4aW0gUGF2
bG92IDxwYXZsbG92bWF4QGdtYWlsLmNvbT4KIFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KIFBpYXN5IFh1IDx4ejQyMTVAZ21haWwuY29tPgorVG9tYXMgUG9wZWxhIDx0b21h
cy5wb3BlbGFAZ21haWwuY29tPgorSmFuIEdydWxpY2ggPGdydWxqYUBnbWFpbC5jb20+CitFaWtl
IFJhdGhrZSA8ZXJhdGhrZUByZWRoYXQuY29tPgorTWljaGVsIFByb21vbmV0IDxtaWNoZWwucHJv
bW9uZXQuMUBnbWFpbC5jb20+CiAKICZ5ZXQgTExDIDwqQGFuZHlldC5jb20+CiBBZ29yYSBJTyA8
KkBhZ29yYS5pbz4KQEAgLTgwLDYgKzg3LDcgQEAgR29vZ2xlIEluYy4gPCpAZ29vZ2xlLmNvbT4K
IEh5cGVyQ29ubmVjdCBJbmMuIDwqQGhwY250LmNvbT4KIExpZmUgT24gQWlyIEluYy4gPCpAbGlm
ZW9uYWlyLmNvbT4KIEludGVsIENvcnBvcmF0aW9uIDwqQGludGVsLmNvbT4KK01pY3Jvc29mdCBD
b3Jwb3JhdGlvbiA8KkBtaWNyb3NvZnQuY29tPgogTUlQUyBUZWNobm9sb2dpZXMgPCpAbWlwcy5j
b20+CiBNb3ppbGxhIEZvdW5kYXRpb24gPCpAbW96aWxsYS5jb20+CiBPcGVyYSBTb2Z0d2FyZSBB
U0EgPCpAb3BlcmEuY29tPgpAQCAtOTcsNCArMTA1LDUgQEAgV2lyZSBTd2lzcyBHbWJIIDwqQHdp
cmUuY29tPgogTWlndWVsIFBhcmlzIDxtcGFyaXNkaWF6QGdtYWlsLmNvbT4KIFZld2QgU29mdHdh
cmUgQVMgPCpAdmV3ZC5jb20+CiBIaWdoZml2ZSwgSW5jLiA8KkBoaWdoZml2ZS5jb20+Ci1Db1NN
byBTb2Z0d2FyZSBDb25zdWx0aW5nLCBQdGUgTHRkIDwqQGNvc21vc29mdHdhcmUuaW8+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorQ29TTW8gU29mdHdhcmUgQ29uc3VsdGluZywgUHRlIEx0
ZCA8KkBjb3Ntb3NvZnR3YXJlLmlvPgorVHVwbGUsIExMQyA8KkB0dXBsZS5hcHA+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9CVUlMRC5nbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0JVSUxELmduCmluZGV4
IDVhMTQ0NmQ5NTYzMDYzMjE0ODQ3ZjQxOWYxMGUxNDBjMGZmMzI2NzMuLjI0OTA5NGJkZDZlZDg4
MTA4MTBiYjZhMGYzNzVlNDhhMDNkNzUzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0JVSUxELmduCkBAIC00MCwxMiArNDAsMTQgQEAgaWYg
KCFidWlsZF93aXRoX2Nocm9taXVtKSB7CiAgICAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAg
ICAgICBkZXBzICs9IFsKICAgICAgICAgIjpydGNfdW5pdHRlc3RzIiwKKyAgICAgICAgIjpzbG93
X3Rlc3RzIiwKICAgICAgICAgIjp2aWRlb19lbmdpbmVfdGVzdHMiLAogICAgICAgICAiOndlYnJ0
Y19ub25wYXJhbGxlbF90ZXN0cyIsCiAgICAgICAgICI6d2VicnRjX3BlcmZfdGVzdHMiLAogICAg
ICAgICAiY2FsbDpmYWtlX25ldHdvcmtfdW5pdHRlc3RzIiwKICAgICAgICAgImNvbW1vbl9hdWRp
bzpjb21tb25fYXVkaW9fdW5pdHRlc3RzIiwKICAgICAgICAgImNvbW1vbl92aWRlbzpjb21tb25f
dmlkZW9fdW5pdHRlc3RzIiwKKyAgICAgICAgImV4YW1wbGVzOmV4YW1wbGVzX3VuaXR0ZXN0cyIs
CiAgICAgICAgICJtZWRpYTpydGNfbWVkaWFfdW5pdHRlc3RzIiwKICAgICAgICAgIm1vZHVsZXM6
bW9kdWxlc190ZXN0cyIsCiAgICAgICAgICJtb2R1bGVzOm1vZHVsZXNfdW5pdHRlc3RzIiwKQEAg
LTU0LDEwICs1Niw4IEBAIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICAgICAgICAibW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3I6YndlX3NpbXVsYXRpb25zX3Rlc3RzIiwKICAg
ICAgICAgIm1vZHVsZXMvcnRwX3J0Y3A6dGVzdF9wYWNrZXRfbWFza3NfbWV0cmljcyIsCiAgICAg
ICAgICJtb2R1bGVzL3ZpZGVvX2NhcHR1cmU6dmlkZW9fY2FwdHVyZV9pbnRlcm5hbF9pbXBsIiwK
LSAgICAgICAgIm9ydGM6b3J0Y191bml0dGVzdHMiLAogICAgICAgICAicGM6cGVlcmNvbm5lY3Rp
b25fdW5pdHRlc3RzIiwKICAgICAgICAgInBjOnJ0Y19wY191bml0dGVzdHMiLAotICAgICAgICAi
cnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgICAic3RhdHM6cnRjX3N0YXRz
X3VuaXR0ZXN0cyIsCiAgICAgICAgICJzeXN0ZW1fd3JhcHBlcnM6c3lzdGVtX3dyYXBwZXJzX3Vu
aXR0ZXN0cyIsCiAgICAgICAgICJ0ZXN0IiwKQEAgLTk4LDYgKzk4LDEwIEBAIGNvbmZpZygiY29t
bW9uX2luaGVyaXRlZF9jb25maWciKSB7CiAgIGNmbGFncyA9IFtdCiAgIGxkZmxhZ3MgPSBbXQog
CisgIGlmIChydGNfZW5hYmxlX3N5bWJvbF9leHBvcnQpIHsKKyAgICBkZWZpbmVzID0gWyAiV0VC
UlRDX0VOQUJMRV9TWU1CT0xfRVhQT1JUIiBdCisgIH0KKwogICBpZiAoYnVpbGRfd2l0aF9tb3pp
bGxhKSB7CiAgICAgZGVmaW5lcyArPSBbICJXRUJSVENfTU9aSUxMQV9CVUlMRCIgXQogICB9CkBA
IC0yMTgsOCArMjIyLDggQEAgY29uZmlnKCJjb21tb25fY29uZmlnIikgewogICAgIGRlZmluZXMg
Kz0gWyAiV0VCUlRDX0lOQ0xVREVfSU5URVJOQUxfQVVESU9fREVWSUNFIiBdCiAgIH0KIAotICBp
ZiAoIXJ0Y19saWJ2cHhfYnVpbGRfdnA5KSB7Ci0gICAgZGVmaW5lcyArPSBbICJSVENfRElTQUJM
RV9WUDkiIF0KKyAgaWYgKHJ0Y19saWJ2cHhfYnVpbGRfdnA5KSB7CisgICAgZGVmaW5lcyArPSBb
ICJSVENfRU5BQkxFX1ZQOSIgXQogICB9CiAKICAgaWYgKHJ0Y19lbmFibGVfc2N0cCkgewpAQCAt
Mzc0LDI5ICszNzgsMzMgQEAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtKSB7CiAKICAgICBkZXBz
ID0gWwogICAgICAgIjp3ZWJydGNfY29tbW9uIiwKKyAgICAgICJhcGk6bGliamluZ2xlX3BlZXJj
b25uZWN0aW9uX2FwaSIsCiAgICAgICAiYXBpOnRyYW5zcG9ydF9hcGkiLAogICAgICAgImF1ZGlv
IiwKICAgICAgICJjYWxsIiwKICAgICAgICJjb21tb25fYXVkaW8iLAogICAgICAgImNvbW1vbl92
aWRlbyIsCisgICAgICAibG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCisgICAgICAibG9nZ2lu
ZzpydGNfZXZlbnRfbG9nX2ltcGxfYmFzZSIsCiAgICAgICAibWVkaWEiLAogICAgICAgIm1vZHVs
ZXMiLAogICAgICAgIm1vZHVsZXMvdmlkZW9fY2FwdHVyZTp2aWRlb19jYXB0dXJlX2ludGVybmFs
X2ltcGwiLAotICAgICAgIm9ydGMiLAorICAgICAgInAycDpydGNfcDJwIiwKKyAgICAgICJwYzps
aWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24iLAorICAgICAgInBjOnBlZXJjb25uZWN0aW9uIiwKKyAg
ICAgICJwYzpydGNfcGMiLAorICAgICAgInBjOnJ0Y19wY19iYXNlIiwKICAgICAgICJydGNfYmFz
ZSIsCiAgICAgICAic2RrIiwKICAgICAgICJ2aWRlbyIsCiAgICAgXQogCi0gICAgIyBBZGRpdGlv
bmFsIGZhY3RvcnkgZnVuY3Rpb25zIHRvIGJlIGV4cG9zZWQuCi0gICAgIyBSYXRpb25hbDogVGhl
c2UgZmFjdG9yaWVzIGFyZSBzbWFsbCBlbm91Z2ggKDg5IEtpQiAvIDMyKyBNaUIpCi0gICAgIyAg
ICAgICAgICAgdG8gYmUgdW5jb25kaXRpb25hbHkgaW5jbHVkZWQgZm9yIHVzZXIgY29udmVuaWVu
Y2UuCi0gICAgIyBUaGF0IGJlZ2luIHNhaWQ6Ci0gICAgIyBUT0RPKHl2ZXNnKSBDb25zaWRlciBt
YWtpbmcgYWxsIG5vbi1jb3JlIEFQSXMgb3B0aW9uYWwsIHNvIHRoYXQgdXNlcnMKLSAgICAjICAg
ICAgICAgICAgIGNhbiBidWlsZCBhIGN1c3RvbWl6ZWQgbGlicmFyeSB0YWlsb3JlZCB0byB0aGVp
ciBuZWVkcy4KKyAgICAjIEluY2x1ZGUgYXVkaW8gYW5kIHZpZGVvIGNvZGVjcyBieSBkZWZhdWx0
LgogICAgIGRlcHMgKz0gWwogICAgICAgImFwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19k
ZWNvZGVyX2ZhY3RvcnkiLAogICAgICAgImFwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19l
bmNvZGVyX2ZhY3RvcnkiLAorICAgICAgImFwaS92aWRlb19jb2RlY3M6YnVpbHRpbl92aWRlb19k
ZWNvZGVyX2ZhY3RvcnkiLAorICAgICAgImFwaS92aWRlb19jb2RlY3M6YnVpbHRpbl92aWRlb19l
bmNvZGVyX2ZhY3RvcnkiLAogICAgIF0KIAogICAgIGlmIChidWlsZF93aXRoX21vemlsbGEpIHsK
QEAgLTQzMCw5ICs0MzgsOSBAQCBydGNfc291cmNlX3NldCgid2VicnRjX2NvbW1vbiIpIHsKICAg
ZGVwcyA9IFsKICAgICAiYXBpOmFycmF5X3ZpZXciLAogICAgICJhcGkvdmlkZW86dmlkZW9fYml0
cmF0ZV9hbGxvY2F0aW9uIiwKKyAgICAiYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAicnRj
X2Jhc2U6Y2hlY2tzIiwKLSAgICAicnRjX2Jhc2U6ZGVwcmVjYXRpb24iLAotICAgICJydGNfYmFz
ZTpzdHJpbmd1dGlscyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MiLAogICBdCiAKICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CkBA
IC00NjcsNyArNDc1LDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAicDJwOnJ0
Y19wMnBfdW5pdHRlc3RzIiwKICAgICAgICJydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZF91bml0
dGVzdHMiLAogICAgICAgInJ0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX21haW4iLAotICAgICAgInJ0
Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICJydGNfYmFzZTpydGNfYmFzZV91
bml0dGVzdHMiLAogICAgICAgInJ0Y19iYXNlOnJ0Y19qc29uX3VuaXR0ZXN0cyIsCiAgICAgICAi
cnRjX2Jhc2U6cnRjX251bWVyaWNzX3VuaXR0ZXN0cyIsCkBAIC00OTksNiArNTA2LDE3IEBAIGlm
IChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIH0KICAgfQogCisgICMgVGhpcyBydW5zIHRlc3Rz
IHRoYXQgbXVzdCBydW4gaW4gcmVhbCB0aW1lIGFuZCB0aGVyZWZvcmUgY2FuIHRha2Ugc29tZQor
ICAjIHRpbWUgdG8gZXhlY3V0ZS4gVGhleSBhcmUgaW4gYSBzZXBhcmF0ZSBleGVjdXRhYmxlIHRv
IGF2b2lkIG1ha2luZyB0aGUKKyAgIyByZWd1bGFyIHVuaXR0ZXN0IHN1aXRlIHRvbyBzbG93IHRv
IHJ1biBmcmVxdWVudGx5LgorICBydGNfdGVzdCgic2xvd190ZXN0cyIpIHsKKyAgICB0ZXN0b25s
eSA9IHRydWUKKyAgICBkZXBzID0gWworICAgICAgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2M6Z29vZ19jY19zbG93X3Rlc3RzIiwKKyAgICAgICJ0ZXN0OnRlc3RfbWFpbiIs
CisgICAgXQorICB9CisKICAgIyBUT0RPKHBib3MpOiBSZW5hbWUgdGVzdCBzdWl0ZSwgdGhpcyBp
cyBubyBsb25nZXIgImp1c3QiIGZvciB2aWRlbyB0YXJnZXRzLgogICB2aWRlb19lbmdpbmVfdGVz
dHNfcmVzb3VyY2VzID0gWwogICAgICJyZXNvdXJjZXMvZm9yZW1hbl9jaWZfc2hvcnQueXV2IiwK
QEAgLTUyNCw3ICs1NDIsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICMgc2hv
dWxkIG1vdmUgdGhlbSB0byBhIG1vcmUgYXBwcm9wcmlhdGUgdGVzdCBzdWl0ZS4KICAgICAgICJj
YWxsOmNhbGxfdGVzdHMiLAogICAgICAgIm1vZHVsZXMvdmlkZW9fY2FwdHVyZSIsCi0gICAgICAi
cnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgInRlc3Q6dGVzdF9jb21tb24i
LAogICAgICAgInRlc3Q6dGVzdF9tYWluIiwKICAgICAgICJ0ZXN0OnZpZGVvX3Rlc3RfY29tbW9u
IiwKQEAgLTYxNyw2ICs2MzQsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICAg
InNkay9hbmRyb2lkL3Rlc3RzL3NyYy9vcmcvd2VicnRjL0dsR2VuZXJpY0RyYXdlclRlc3QuamF2
YSIsCiAgICAgICAgICJzZGsvYW5kcm9pZC90ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9IYXJkd2FyZVZp
ZGVvRW5jb2RlclRlc3QuamF2YSIsCiAgICAgICAgICJzZGsvYW5kcm9pZC90ZXN0cy9zcmMvb3Jn
L3dlYnJ0Yy9TY2FsaW5nU2V0dGluZ3NUZXN0LmphdmEiLAorICAgICAgICAic2RrL2FuZHJvaWQv
dGVzdHMvc3JjL29yZy93ZWJydGMvQ3J5cHRvT3B0aW9uc1Rlc3QuamF2YSIsCiAgICAgICBdCiAK
ICAgICAgIGRlcHMgPSBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ERVBTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvREVQUwppbmRleCA2N2FhNGE4MDNjMjA5MTljMjYzNTVjYTNmMDllOGMyNWJkZTFkNTFk
Li41NTVjMjdmMTBlN2UxOTk3MzAwMDZkNGRiOTdkMzYwZDJjMTU4Mzc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ERVBTCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0RFUFMKQEAgLTcsMTYgKzcsMTYg
QEAgdmFycyA9IHsKICAgJ2NoZWNrb3V0X2NvbmZpZ3VyYXRpb24nOiAnZGVmYXVsdCcsCiAgICdj
aGVja291dF9pbnN0cnVtZW50ZWRfbGlicmFyaWVzJzogJ2NoZWNrb3V0X2xpbnV4IGFuZCBjaGVj
a291dF9jb25maWd1cmF0aW9uID09ICJkZWZhdWx0IicsCiAgICd3ZWJydGNfZ2l0JzogJ2h0dHBz
Oi8vd2VicnRjLmdvb2dsZXNvdXJjZS5jb20nLAotICAnY2hyb21pdW1fcmV2aXNpb24nOiAnY2Ni
ODNkNGE1NTEyODAyZjExOTNhNTA2YjU0MzFlODVlMDEzODA0MycsCisgICdjaHJvbWl1bV9yZXZp
c2lvbic6ICdiMDRlNTEzZjgyNWQ2Y2UyMmUxNDc2MDFjYmZjNzVlYTIzZWI5MDczJywKICAgJ2Jv
cmluZ3NzbF9naXQnOiAnaHR0cHM6Ly9ib3Jpbmdzc2wuZ29vZ2xlc291cmNlLmNvbScsCiAgICMg
VGhyZWUgbGluZXMgb2Ygbm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUgY29t
bWl0IHF1ZXVlIGNhbiBoYW5kbGUgQ0xzIHJvbGxpbmcgc3dhcm1pbmdfY2xpZW50CiAgICMgYW5k
IHdoYXRldmVyIGVsc2Ugd2l0aG91dCBpbnRlcmZlcmVuY2UgZnJvbSBlYWNoIG90aGVyLgotICAn
c3dhcm1pbmdfcmV2aXNpb24nOiAnNDg2YzliNTNjNGQ1NGRkNGI5NWJiNmNlMGUzMTE2MGU2MDBk
ZmMxMScsCisgICdzd2FybWluZ19yZXZpc2lvbic6ICcxNTdiZWM4YTI1Y2M0ZWJkNmExNjA1MjUx
MGQwOGIwNWI2MTAyYWFkJywKICAgIyBUaHJlZSBsaW5lcyBvZiBub24tY2hhbmdpbmcgY29tbWVu
dHMgc28gdGhhdAogICAjIHRoZSBjb21taXQgcXVldWUgY2FuIGhhbmRsZSBDTHMgcm9sbGluZyBC
b3JpbmdTU0wKICAgIyBhbmQgd2hhdGV2ZXIgZWxzZSB3aXRob3V0IGludGVyZmVyZW5jZSBmcm9t
IGVhY2ggb3RoZXIuCi0gICdib3Jpbmdzc2xfcmV2aXNpb24nOiAnY2UwMDgyOGM4OWRmM2Q0YzQw
ZGU3ZDcxNWIxYTAzMmViMDNjNTI1YycsCisgICdib3Jpbmdzc2xfcmV2aXNpb24nOiAnNjk2NWQy
NTYwMjc1NGJjNDE5YzVmNzU3ZDAwOGJhMWY0ZGE0OWFlNCcsCiAgICMgVGhyZWUgbGluZXMgb2Yg
bm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUgY29tbWl0IHF1ZXVlIGNhbiBo
YW5kbGUgQ0xzIHJvbGxpbmcgbHNzCiAgICMgYW5kIHdoYXRldmVyIGVsc2Ugd2l0aG91dCBpbnRl
cmZlcmVuY2UgZnJvbSBlYWNoIG90aGVyLgpAQCAtMjQsMjkgKzI0LDI5IEBAIHZhcnMgPSB7CiAg
ICMgVGhyZWUgbGluZXMgb2Ygbm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUg
Y29tbWl0IHF1ZXVlIGNhbiBoYW5kbGUgQ0xzIHJvbGxpbmcgY2F0YXB1bHQKICAgIyBhbmQgd2hh
dGV2ZXIgZWxzZSB3aXRob3V0IGludGVyZmVyZW5jZSBmcm9tIGVhY2ggb3RoZXIuCi0gICdjYXRh
cHVsdF9yZXZpc2lvbic6ICc0ZmM0MjgxZDIxNTJhMzY3NjJhMGJmNDdiYTc2YmY4ZDRhNmVlMjM0
JywKKyAgJ2NhdGFwdWx0X3JldmlzaW9uJzogJzE3MDc5YTVjYzFmMjdhMmRjNTc1NThhMDg5NzY2
NmNhYzRhNWJjNjQnLAogICAjIFRocmVlIGxpbmVzIG9mIG5vbi1jaGFuZ2luZyBjb21tZW50cyBz
byB0aGF0CiAgICMgdGhlIGNvbW1pdCBxdWV1ZSBjYW4gaGFuZGxlIENMcyByb2xsaW5nIGxpYkZ1
enplcgogICAjIGFuZCB3aGF0ZXZlciBlbHNlIHdpdGhvdXQgaW50ZXJmZXJlbmNlIGZyb20gZWFj
aCBvdGhlci4KLSAgJ2xpYmZ1enplcl9yZXZpc2lvbic6ICdhMzA1YTVlYjg1ZWQ0MmVkYzVjOTY1
YzE0ZjMwOGY1NzZjYjI0NWNhJywKKyAgJ2xpYmZ1enplcl9yZXZpc2lvbic6ICcyYTUzMDk4NTg0
YzQ4YWY1MGFlYzNmYjUxZmViZTVlNjUxNDg5Nzc0JywKICAgIyBUaHJlZSBsaW5lcyBvZiBub24t
Y2hhbmdpbmcgY29tbWVudHMgc28gdGhhdAogICAjIHRoZSBjb21taXQgcXVldWUgY2FuIGhhbmRs
ZSBDTHMgcm9sbGluZyBmcmVldHlwZQogICAjIGFuZCB3aGF0ZXZlciBlbHNlIHdpdGhvdXQgaW50
ZXJmZXJlbmNlIGZyb20gZWFjaCBvdGhlci4KLSAgJ2ZyZWV0eXBlX3JldmlzaW9uJzogJ2FiZDk5
N2FhN2NmMmJjOTIxOTEzNjc4MmM3MzYzZDE0ZDMyNTE5OWMnLAorICAnZnJlZXR5cGVfcmV2aXNp
b24nOiAnZmIwZDY2ZDA0YzRkZDhkN2Y5NjA0YWYxYTYwMDFiMjczN2NiNTA5OCcsCiAgICMgVGhy
ZWUgbGluZXMgb2Ygbm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUgY29tbWl0
IHF1ZXVlIGNhbiBoYW5kbGUgQ0xzIHJvbGxpbmcgSGFyZkJ1enoKICAgIyBhbmQgd2hhdGV2ZXIg
ZWxzZSB3aXRob3V0IGludGVyZmVyZW5jZSBmcm9tIGVhY2ggb3RoZXIuCi0gICdoYXJmYnV6el9y
ZXZpc2lvbic6ICc1NGQzMzJkZDliMDI2MzgyMTM3NjE2MWNkZmZiNjBmZmIzYzc4NDdmJywKKyAg
J2hhcmZidXp6X3JldmlzaW9uJzogJzU3NGQ4ODhjOGE0MDkyOTVhOTUyMzYxYTM5YzhlODNhNTJh
MGZjM2QnLAogfQogZGVwcyA9IHsKICAgIyBUT0RPKGtqZWxsYW5kZXIpOiBNb3ZlIHRoaXMgdG8g
YmUgQW5kcm9pZC1vbmx5IG9uY2UgdGhlIGxpYmV2ZW50IGRlcGVuZGVuY3kKICAgIyBpbiBiYXNl
L3RoaXJkX3BhcnR5L2xpYmV2ZW50IGlzIHNvbHZlZC4KICAgJ3NyYy9iYXNlJzoKLSAgICBWYXIo
J2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9zcmMvYmFzZScgKyAnQCcgKyAnMGRiNjEzNzlk
OGY3NjgwN2U2Zjc4YTM1Y2NmZjkyMjcyMDViNjE5NScsCisgICAgVmFyKCdjaHJvbWl1bV9naXQn
KSArICcvY2hyb21pdW0vc3JjL2Jhc2UnICsgJ0AnICsgJ2I5OTAxZjliYzViNjVhMTE2OWQ1ZGI2
OTZlZjQ0MjhhNjVjZWM2MjInLAogICAnc3JjL2J1aWxkJzoKLSAgICBWYXIoJ2Nocm9taXVtX2dp
dCcpICsgJy9jaHJvbWl1bS9zcmMvYnVpbGQnICsgJ0AnICsgJzhiYjlmZWY4NjJiZDc1NzBjNWI0
NjU4NjBjNDI3NzAxYzgxYzE1MzEnLAorICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9t
aXVtL3NyYy9idWlsZCcgKyAnQCcgKyAnYmJkNjdhMzUwZDc0NTIwMGU1Nzk4Y2FjZTExYTI4ZWRm
ZDlmYzNiMicsCiAgICdzcmMvYnVpbGR0b29scyc6Ci0gICAgVmFyKCdjaHJvbWl1bV9naXQnKSAr
ICcvY2hyb21pdW0vYnVpbGR0b29scy5naXQnICsgJ0AnICsgJzJkZmY5YzljNzRlOWQ3MzJlNmZl
NTdjODRlZjdmZDA0NGNjNDVkOTYnLAorICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9t
aXVtL2J1aWxkdG9vbHMuZ2l0JyArICdAJyArICcwNDE2MWVjOGQ3Yzc4MWU0NDk4YzY5OTI1NGM2
OWJhMGRkOTU5ZmRlJywKICAgIyBHcmFkbGUgNC4zLXJjNC4gVXNlZCBmb3IgdGVzdGluZyBBbmRy
b2lkIFN0dWRpbyBwcm9qZWN0IGdlbmVyYXRpb24gZm9yIFdlYlJUQy4KICAgJ3NyYy9leGFtcGxl
cy9hbmRyb2lkdGVzdHMvdGhpcmRfcGFydHkvZ3JhZGxlJzogewogICAgICd1cmwnOiBWYXIoJ2No
cm9taXVtX2dpdCcpICsgJy9leHRlcm5hbC9naXRodWIuY29tL2dyYWRsZS9ncmFkbGUuZ2l0JyAr
ICdAJyArCkBAIC01NCwyMSArNTQsNDQgQEAgZGVwcyA9IHsKICAgICAnY29uZGl0aW9uJzogJ2No
ZWNrb3V0X2FuZHJvaWQnLAogICB9LAogICAnc3JjL2lvcyc6IHsKLSAgICAndXJsJzogVmFyKCdj
aHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vc3JjL2lvcycgKyAnQCcgKyAnZDRlMDEwNTE2MTU2
YzJlZjJjY2Q5NzRkNGFhMGFiZDllZjQ4YzY5OCcsCisgICAgJ3VybCc6IFZhcignY2hyb21pdW1f
Z2l0JykgKyAnL2Nocm9taXVtL3NyYy9pb3MnICsgJ0AnICsgJ2ViOWU4ZTA5ZGM0YjI4ZTY5MWNm
ZDcwMjQyYmE1MGNlZWNiNmFiMjAnLAogICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRfaW9zJywK
ICAgfSwKICAgJ3NyYy90ZXN0aW5nJzoKLSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJv
bWl1bS9zcmMvdGVzdGluZycgKyAnQCcgKyAnNjc3ZTFlZjI2MjdjYTMyMjI2ZjVlODAxZWJlYzM5
NjEzMDM1ODczYicsCisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vc3JjL3Rl
c3RpbmcnICsgJ0AnICsgJzVhNzc2YmNhMDUwYWVkZmIwMjY5Y2RkODQwOGZmMDU1OWFjZGUyYWEn
LAogICAnc3JjL3RoaXJkX3BhcnR5JzoKLSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJv
bWl1bS9zcmMvdGhpcmRfcGFydHknICsgJ0AnICsgJ2RjZmFjMWM1ZWRhNzNjOGZiZDA0NTFjOGU0
MDQ1NGIyODRjNjcxMTAnLAorICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3Ny
Yy90aGlyZF9wYXJ0eScgKyAnQCcgKyAnNzdmNmMxNjcyMGVmZjc3MjFiMGMwYjI0MzhjZTkxMjZm
NTllMWYwYicsCiAgICdzcmMvdGhpcmRfcGFydHkvYW5kcm9pZF9uZGsnOiB7CiAgICAgICAndXJs
JzogVmFyKCdjaHJvbWl1bV9naXQnKSArICcvYW5kcm9pZF9uZGsuZ2l0JyArICdAJyArICc0ZTJj
ZWE0NDFiZmQ0M2YwODYzZDE0ZjU3YjFlMTg0NDI2MGI5ODg0JywKICAgICAgICdjb25kaXRpb24n
OiAnY2hlY2tvdXRfYW5kcm9pZCcsCiAgIH0sCiAgICdzcmMvdGhpcmRfcGFydHkvYW5kcm9pZF90
b29scyc6IHsKLSAgICAndXJsJzogVmFyKCdjaHJvbWl1bV9naXQnKSArICcvYW5kcm9pZF90b29s
cy5naXQnICsgJ0AnICsgJzEzMDQ5OWUyNTI4NmY0ZDU2YWNhZmEyNTJmZWUwOWYzY2M1OTVjNDkn
LAorICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9hbmRyb2lkX3Rvb2xzLmdpdCcg
KyAnQCcgKyAnNmZlY2FhNTQyZjczZGQ1YWVlZDE3MGQ5YTRjZjM0MDE1OWI0Mjk3NicsCiAgICAg
J2NvbmRpdGlvbic6ICdjaGVja291dF9hbmRyb2lkJywKICAgfSwKKworICAnc3JjL3RoaXJkX3Bh
cnR5L2FuZHJvaWRfYnVpbGRfdG9vbHMvYWFwdDInOiB7CisgICAgICAncGFja2FnZXMnOiBbCisg
ICAgICAgICAgeworICAgICAgICAgICAgICAncGFja2FnZSc6ICdjaHJvbWl1bS90aGlyZF9wYXJ0
eS9hbmRyb2lkX2J1aWxkX3Rvb2xzL2FhcHQyJywKKyAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAn
dmVyc2lvbjozLjMuMC1iZXRhMDEtNTAxMzAxMS1jcjAnLAorICAgICAgICAgIH0sCisgICAgICBd
LAorICAgICAgJ2NvbmRpdGlvbic6ICdjaGVja291dF9hbmRyb2lkJywKKyAgICAgICdkZXBfdHlw
ZSc6ICdjaXBkJywKKyAgfSwKKworICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJvaWRfYnVpbGRfdG9v
bHMvYnVuZGxldG9vbCc6IHsKKyAgICAgICdwYWNrYWdlcyc6IFsKKyAgICAgICAgICB7CisgICAg
ICAgICAgICAgICdwYWNrYWdlJzogJ2Nocm9taXVtL3RoaXJkX3BhcnR5L2FuZHJvaWRfdG9vbHNf
YnVuZGxldG9vbCcsCisgICAgICAgICAgICAgICd2ZXJzaW9uJzogJ3ZlcnNpb246MC43LjEtY3Iw
JywKKyAgICAgICAgICB9LAorICAgICAgXSwKKyAgICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRf
YW5kcm9pZCcsCisgICAgICAnZGVwX3R5cGUnOiAnY2lwZCcsCisgIH0sCisKICAgJ3NyYy90aGly
ZF9wYXJ0eS9hdXRvL3NyYyc6IHsKICAgICAndXJsJzogVmFyKCdjaHJvbWl1bV9naXQnKSArICcv
ZXh0ZXJuYWwvZ2l0aHViLmNvbS9nb29nbGUvYXV0by5naXQnICsgJ0AnICsgJzhhODFhODU4YWU3
Yjc4YTFhZWY3MWFjMzkwNWZhZGUwYmJkNjRlODInLAogICAgICdjb25kaXRpb24nOiAnY2hlY2tv
dXRfYW5kcm9pZCcsCkBAIC04NCw3ICsxMDcsNyBAQCBkZXBzID0gewogICAnc3JjL3RoaXJkX3Bh
cnR5L2NvbG9yYW1hL3NyYyc6CiAgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvZXh0ZXJuYWwv
Y29sb3JhbWEuZ2l0JyArICdAJyArICc3OTk2MDRhMTA0MWU5YjNiYzVkMjc4OWVjYmQ3ZThkYjJl
MThlNmI4JywKICAgJ3NyYy90aGlyZF9wYXJ0eS9kZXBvdF90b29scyc6Ci0gICAgVmFyKCdjaHJv
bWl1bV9naXQnKSArICcvY2hyb21pdW0vdG9vbHMvZGVwb3RfdG9vbHMuZ2l0JyArICdAJyArICc3
MWUzYmU3YTUwYzIxZmFlZWU5MWVkOTlhOGQ1YWRkZmI3NTk0ZTdjJywKKyAgICBWYXIoJ2Nocm9t
aXVtX2dpdCcpICsgJy9jaHJvbWl1bS90b29scy9kZXBvdF90b29scy5naXQnICsgJ0AnICsgJzQ0
ZDRiMjkwODJmMGQ4YmFjYWNkNjIzZjkxYzRkMjk2MzdiNGI5MDEnLAogICAnc3JjL3RoaXJkX3Bh
cnR5L2Vycm9ycHJvbmUvbGliJzogewogICAgICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0Jykg
KyAnL2Nocm9taXVtL3RoaXJkX3BhcnR5L2Vycm9ycHJvbmUuZ2l0JyArICdAJyArICc5ODBkNDll
ODM5YWE0OTg0MDE1ZWZlZDM0YjAxMzRkNGIyYzliNmQ3JywKICAgICAgICdjb25kaXRpb24nOiAn
Y2hlY2tvdXRfYW5kcm9pZCcsCkBAIC0xMDEsNyArMTI0LDcgQEAgZGVwcyA9IHsKICAgICBWYXIo
J2Nocm9taXVtX2dpdCcpICsgJy9leHRlcm5hbC9naXRodWIuY29tL2hhcmZidXp6L2hhcmZidXp6
LmdpdCcgKyAnQCcgKyBWYXIoJ2hhcmZidXp6X3JldmlzaW9uJyksCiAgICMgV2ViUlRDLW9ubHkg
ZGVwZW5kZW5jeSAobm90IHByZXNlbnQgaW4gQ2hyb21pdW0pLgogICAnc3JjL3RoaXJkX3BhcnR5
L2d0ZXN0LXBhcmFsbGVsJzoKLSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9leHRlcm5hbC9n
aXRodWIuY29tL2dvb2dsZS9ndGVzdC1wYXJhbGxlbCcgKyAnQCcgKyAnZmU3Zjc5MWYxNDc2OTM5
MGQwYjEyNGVmODIzMWNkZTRkNTc1ZWIxMicsCisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcv
ZXh0ZXJuYWwvZ2l0aHViLmNvbS9nb29nbGUvZ3Rlc3QtcGFyYWxsZWwnICsgJ0AnICsgJ2U0NzIx
ODdkMTEyOWU1MDg4OTBhYTIwYWM5MTRhZGVhYzJlN2Y3YjYnLAogICAnc3JjL3RoaXJkX3BhcnR5
L2dvb2dsZS10cnV0aCc6IHsKICAgICAgICdwYWNrYWdlcyc6IFsKICAgICAgICAgICB7CkBAIC0x
MTMsOSArMTM2LDkgQEAgZGVwcyA9IHsKICAgICAgICdkZXBfdHlwZSc6ICdjaXBkJywKICAgfSwK
ICAgJ3NyYy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L3NyYyc6Ci0gICAgVmFyKCdjaHJvbWl1bV9n
aXQnKSArICcvZXh0ZXJuYWwvZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC5naXQnICsgJ0An
ICsgJzJlNjg5MjZhOWQ0OTI5ZTkyODkzNzNjZDQ5ZTQwZGRjYjlhNjI4ZjcnLAorICAgIFZhcign
Y2hyb21pdW1fZ2l0JykgKyAnL2V4dGVybmFsL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3Qu
Z2l0JyArICdAJyArICc4NzlhYzA5MmZkZTBhMTllMWIzYTYxYjI1NDZiMmE0MjJiMTUyOGJjJywK
ICAgJ3NyYy90aGlyZF9wYXJ0eS9pY3UnOiB7Ci0gICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0
JykgKyAnL2Nocm9taXVtL2RlcHMvaWN1LmdpdCcgKyAnQCcgKyAnYzUyYTJhMjUwZDZjNWY1Y2Jk
ZDAxNWRmZjM2YWY3YzVkMGFlMTE1MCcsCisgICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0Jykg
KyAnL2Nocm9taXVtL2RlcHMvaWN1LmdpdCcgKyAnQCcgKyAnNDA3YjM5MzAxZTcxMDA2YjY4YmQz
OGU3NzBmMzVkMzIzOThhN2IxNCcsCiAgIH0sCiAgICdzcmMvdGhpcmRfcGFydHkvanNyLTMwNS9z
cmMnOiB7CiAgICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2V4dGVybmFsL2pzci0z
MDUuZ2l0JyArICdAJyArICc2NDJjNTA4MjM1NDcxZjcyMjBhZjZkNWRmMmQzMjEwZTNiZmMwOTE5
JywKQEAgLTEzNSw5ICsxNTgsOSBAQCBkZXBzID0gewogICAnc3JjL3RoaXJkX3BhcnR5L2xpYnNy
dHAnOgogICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL2RlcHMvbGlic3J0cC5n
aXQnICsgJ0AnICsgJzY1MDYxMTcyMGVjYzIzZTBlNmIzMmIwZTMxMDBmOGI0ZGY5MTY5NmMnLAog
ICAnc3JjL3RoaXJkX3BhcnR5L2xpYnZweC9zb3VyY2UvbGlidnB4JzoKLSAgICBWYXIoJ2Nocm9t
aXVtX2dpdCcpICsgJy93ZWJtL2xpYnZweC5naXQnICsgJ0AnICsgICcyYmViNWM5ZjkxZTcxNjZj
MmM5ZDAxYzk0YmY4NDc2NzgxNTEyMWU0JywKKyAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy93
ZWJtL2xpYnZweC5naXQnICsgJ0AnICsgICdhYzNlY2NkYzI0YmNjZWNlNWY3M2VlNjdiODgxNTRm
M2JmNGE0ZTlhJywKICAgJ3NyYy90aGlyZF9wYXJ0eS9saWJ5dXYnOgotICAgIFZhcignY2hyb21p
dW1fZ2l0JykgKyAnL2xpYnl1di9saWJ5dXYuZ2l0JyArICdAJyArICc5YTA3MjE5ZGM4ZmJmMmI3
N2UzOTBkMTZiZDI0ODA5NDQ0ODM4YTkxJywKKyAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9s
aWJ5dXYvbGlieXV2LmdpdCcgKyAnQCcgKyAnYjM2Yzg2ZmRmZTc0NmQ3YmU5MDRjM2E1NjViMDQ3
YjI0ZDU4MDg3ZScsCiAgICdzcmMvdGhpcmRfcGFydHkvbHNzJzogewogICAgICd1cmwnOiBWYXIo
J2Nocm9taXVtX2dpdCcpICsgJy9saW51eC1zeXNjYWxsLXN1cHBvcnQuZ2l0JyArICdAJyArIFZh
cignbHNzX3JldmlzaW9uJyksCiAgICAgJ2NvbmRpdGlvbic6ICdjaGVja291dF9hbmRyb2lkIG9y
IGNoZWNrb3V0X2xpbnV4JywKQEAgLTE0NiwxMyArMTY5LDIwIEBAIGRlcHMgPSB7CiAgICAgJ3Vy
bCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2V4dGVybmFsL21vY2tpdG8vbW9ja2l0by5naXQn
ICsgJ0AnICsgJzA0YTJhMjg5YTQyMjJmODBhZDIwNzE3YzI1MTQ0OTgxMjEwZDJlYWMnLAogICAg
ICdjb25kaXRpb24nOiAnY2hlY2tvdXRfYW5kcm9pZCcsCiAgIH0sCisKKyAgIyBVc2VkIGJ5IGJv
cmluZ3NzbC4KKyAgJ3NyYy90aGlyZF9wYXJ0eS9uYXNtJzogeworICAgICAgJ3VybCc6IFZhcign
Y2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL2RlcHMvbmFzbS5naXQnICsgJ0AnICsKKyAgICAg
ICdhMGE2OTUxZTI1OWJkMzQ3YzEzMzk2OTc0MDM0OGJiNWViYjQ2OGM0JworICB9LAorCiAgICdz
cmMvdGhpcmRfcGFydHkvb3BlbmgyNjQvc3JjJzoKICAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsg
Jy9leHRlcm5hbC9naXRodWIuY29tL2Npc2NvL29wZW5oMjY0JyArICdAJyArICczYjUxZjE2YTRh
NDFkZjcyOWY4ZDY0N2YwM2U0OGM1ZjI3MjkxMWZmJywKICAgJ3NyYy90aGlyZF9wYXJ0eS9yOCc6
IHsKICAgICAgICdwYWNrYWdlcyc6IFsKICAgICAgICAgICB7CiAgICAgICAgICAgICAgICdwYWNr
YWdlJzogJ2Nocm9taXVtL3RoaXJkX3BhcnR5L3I4JywKLSAgICAgICAgICAgICAgJ3ZlcnNpb24n
OiAndmVyc2lvbjoxLjIuNDgnLAorICAgICAgICAgICAgICAndmVyc2lvbic6ICd2ZXJzaW9uOjEu
NC40LWNyMCcsCiAgICAgICAgICAgfSwKICAgICAgIF0sCiAgICAgICAnY29uZGl0aW9uJzogJ2No
ZWNrb3V0X2FuZHJvaWQnLApAQCAtMTk1LDcgKzIyNSw3IEBAIGRlcHMgPSB7CiAgICdzcmMvdGhp
cmRfcGFydHkveWFzbS9zb3VyY2UvcGF0Y2hlZC15YXNtJzoKICAgICBWYXIoJ2Nocm9taXVtX2dp
dCcpICsgJy9jaHJvbWl1bS9kZXBzL3lhc20vcGF0Y2hlZC15YXNtLmdpdCcgKyAnQCcgKyAnNzIw
YjcwNTI0YTQ0MjRiMTVmYzU3ZTgyMjYzNTY4YzhiYTA0OTZhZCcsCiAgICdzcmMvdG9vbHMnOgot
ICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy90b29scycgKyAnQCcgKyAn
NzMxZjYzZjMxMjZjZDZmNWNlYjJhYWZjZWFkZTgwODU3OTAwYTQwOScsCisgICAgVmFyKCdjaHJv
bWl1bV9naXQnKSArICcvY2hyb21pdW0vc3JjL3Rvb2xzJyArICdAJyArICdiNDdjNjMxNTg3OGVh
YmQ3M2JmNzFjMWFhMGNiZDliODE2NzE2Nzg5JywKICAgJ3NyYy90b29scy9zd2FybWluZ19jbGll
bnQnOgogICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2luZnJhL2x1Y2kvY2xpZW50LXB5Lmdp
dCcgKyAnQCcgKyAgVmFyKCdzd2FybWluZ19yZXZpc2lvbicpLAogCkBAIC04OTUsMTcgKzkyNSw2
IEBAIGRlcHMgPSB7CiAgICAgICAnZGVwX3R5cGUnOiAnY2lwZCcsCiAgIH0sCiAKLSAgJ3NyYy90
aGlyZF9wYXJ0eS9hbmRyb2lkX2RlcHMvbGlicy9jb21fZ29vZ2xlX2FuZHJvaWRfcGxheV9jb3Jl
JzogewotICAgICAgJ3BhY2thZ2VzJzogWwotICAgICAgICAgIHsKLSAgICAgICAgICAgICAgJ3Bh
Y2thZ2UnOiAnY2hyb21pdW0vdGhpcmRfcGFydHkvYW5kcm9pZF9kZXBzL2xpYnMvY29tX2dvb2ds
ZV9hbmRyb2lkX3BsYXlfY29yZScsCi0gICAgICAgICAgICAgICd2ZXJzaW9uJzogJ3ZlcnNpb246
MS4zLjAtY3IwJywKLSAgICAgICAgICB9LAotICAgICAgXSwKLSAgICAgICdjb25kaXRpb24nOiAn
Y2hlY2tvdXRfYW5kcm9pZCcsCi0gICAgICAnZGVwX3R5cGUnOiAnY2lwZCcsCi0gIH0sCi0KICAg
J3NyYy90aGlyZF9wYXJ0eS9hbmRyb2lkX2RlcHMvbGlicy9jb21fZ29vZ2xlX2NvZGVfZmluZGJ1
Z3NfanNyMzA1JzogewogICAgICAgJ3BhY2thZ2VzJzogWwogICAgICAgICAgIHsKQEAgLTEwMTYs
NiArMTAzNSwxNyBAQCBkZXBzID0gewogICAgICAgJ2RlcF90eXBlJzogJ2NpcGQnLAogICB9LAog
CisgICdzcmMvdGhpcmRfcGFydHkvYW5kcm9pZF9kZXBzL2xpYnMvY29tX2dvb2dsZV9wcm90b2J1
Zl9wcm90b2J1Zl9saXRlJzogeworICAgICAgJ3BhY2thZ2VzJzogWworICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgJ3BhY2thZ2UnOiAnY2hyb21pdW0vdGhpcmRfcGFydHkvYW5kcm9pZF9kZXBz
L2xpYnMvY29tX2dvb2dsZV9wcm90b2J1Zl9wcm90b2J1Zl9saXRlJywKKyAgICAgICAgICAgICAg
J3ZlcnNpb24nOiAndmVyc2lvbjozLjAuMS1jcjAnLAorICAgICAgICAgIH0sCisgICAgICBdLAor
ICAgICAgJ2NvbmRpdGlvbic6ICdjaGVja291dF9hbmRyb2lkJywKKyAgICAgICdkZXBfdHlwZSc6
ICdjaXBkJywKKyAgfSwKKwogICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJvaWRfZGVwcy9saWJzL2Nv
bV9zcXVhcmV1cF9qYXZhcG9ldCc6IHsKICAgICAgICdwYWNrYWdlcyc6IFsKICAgICAgICAgICB7
CkBAIC0xMzkzLDggKzE0MjMsNiBAQCBob29rcyA9IFsKIHJlY3Vyc2VkZXBzID0gWwogICAjIGJ1
aWxkdG9vbHMgcHJvdmlkZXMgY2xhbmdfZm9ybWF0LCBsaWJjKyssIGFuZCBsaWJjKythYmkuCiAg
ICdzcmMvYnVpbGR0b29scycsCi0gICMgYW5kcm9pZF90b29scyBtYW5hZ2VzIHRoZSBOREsuCi0g
ICdzcmMvdGhpcmRfcGFydHkvYW5kcm9pZF90b29scycsCiBdCiAKICMgRGVmaW5lIHJ1bGVzIGZv
ciB3aGljaCBpbmNsdWRlIHBhdGhzIGFyZSBhbGxvd2VkIGluIG91ciBzb3VyY2UuCkBAIC0xNDE2
LDkgKzE0NDQsMTIgQEAgaW5jbHVkZV9ydWxlcyA9IFsKICAgIit0ZXN0IiwKICAgIitydGNfdG9v
bHMiLAogCi0gICMgQWJzZWlsIHdoaXRlbGlzdC4gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBhYnNl
aWwtaW4td2VicnRjLW1kLgorICAjIEFic2VpbCB3aGl0ZWxpc3QuIEtlZXAgdGhpcyBpbiBzeW5j
IHdpdGggYWJzZWlsLWluLXdlYnJ0Yy5tZC4KICAgIithYnNsL2NvbnRhaW5lci9pbmxpbmVkX3Zl
Y3Rvci5oIiwKICAgIithYnNsL21lbW9yeS9tZW1vcnkuaCIsCisgICIrYWJzbC9tZXRhL3R5cGVf
dHJhaXRzLmgiLAorICAiK2Fic2wvc3RyaW5ncy9hc2NpaS5oIiwKKyAgIithYnNsL3N0cmluZ3Mv
bWF0Y2guaCIsCiAgICIrYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiLAogICAiK2Fic2wvdHlw
ZXMvb3B0aW9uYWwuaCIsCiAgICIrYWJzbC90eXBlcy92YXJpYW50LmgiLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvT1dORVJTIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvT1dORVJTCmluZGV4IGJmYTc4MDFi
ZDgyN2I4MjVlNDMxZmEzNTlhZmRkZWNjOTBmMzQyMzQuLjI4OWI1YTNjN2VhMTgzOTMxOGJiNTJm
ZWU5NjM1NTE2ZTg2MTU2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9PV05FUlMKQEAgLTQsMTkgKzQsMTQgQEAgbWZsb2RtYW5Ad2VicnRjLm9y
ZwogbmlrbGFzLmVuYm9tQHdlYnJ0Yy5vcmcKIHBob2dsdW5kQHdlYnJ0Yy5vcmcKIHN0ZWZhbkB3
ZWJydGMub3JnCi10aW5hLmxlZ3JhbmRAd2VicnRjLm9yZwogdG9tbWlAd2VicnRjLm9yZwogcGVy
LWZpbGUgLmdpdGlnbm9yZT0qCiBwZXItZmlsZSAuZ249bWJvbmFkZWlAd2VicnRjLm9yZwogcGVy
LWZpbGUgKi5nbj1tYm9uYWRlaUB3ZWJydGMub3JnCiBwZXItZmlsZSAqLmduaT1tYm9uYWRlaUB3
ZWJydGMub3JnCi1wZXItZmlsZSAqLnB5PXBob2dsdW5kQHdlYnJ0Yy5vcmcKIHBlci1maWxlIEFV
VEhPUlM9KgotcGVyLWZpbGUgQlVJTEQuZ249cGhvZ2x1bmRAd2VicnRjLm9yZwogcGVyLWZpbGUg
REVQUz0qCiBwZXItZmlsZSBweWxpbnRyYz1waG9nbHVuZEB3ZWJydGMub3JnCi1wZXItZmlsZSBU
SElSRF9QQVJUWV9ERVBTPXBob2dsdW5kQHdlYnJ0Yy5vcmcKLXBlci1maWxlIFRISVJEX1BBUlRZ
X0RFUFM9dGl0b3ZhcnRlbUB3ZWJydGMub3JnCiBwZXItZmlsZSBXQVRDSExJU1RTPSoKIHBlci1m
aWxlIGFic2VpbC1pbi13ZWJydGMubWQ9ZGFuaWxjaGFwQHdlYnJ0Yy5vcmcKIHBlci1maWxlIGFi
c2VpbC1pbi13ZWJydGMubWQ9a3dpYmVyZ0B3ZWJydGMub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9QUkVTVUJNSVQucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9QUkVTVUJNSVQucHkKaW5kZXggYTdi
NWNjMTRhNDhmYTBiODA3MDI0NjJhYTljOTEwMWQ4YTAyNzU3MS4uMzRiNWFkZjc3NzgzODM5MGFh
NTg4ZTk4NjUxM2Y1MjBhMmUzMDVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvUFJFU1VCTUlULnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL1BSRVNVQk1JVC5weQpAQCAtNDgxLDcgKzQ4MSw4IEBA
IGRlZiBDaGVja05vU3RyZWFtVXNhZ2VJc0FkZGVkKGlucHV0X2FwaSwgb3V0cHV0X2FwaSwKICAg
ZmlsZV9maWx0ZXIgPSBsYW1iZGEgeDogKGlucHV0X2FwaS5GaWx0ZXJTb3VyY2VGaWxlKHgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc291cmNlX2ZpbGVfZmlsdGVyKHgpKQogICBm
b3IgZiBpbiBpbnB1dF9hcGkuQWZmZWN0ZWRTb3VyY2VGaWxlcyhmaWxlX2ZpbHRlcik6Ci0gICAg
aWYgZi5Mb2NhbFBhdGgoKSA9PSAnUFJFU1VCTUlULnB5JzoKKyAgICAjIFVzYWdlIG9mIHN0cmlu
Z3N0cmVhbSBpcyBhbGxvd2VkIHVuZGVyIGV4YW1wbGVzLy4KKyAgICBpZiBmLkxvY2FsUGF0aCgp
ID09ICdQUkVTVUJNSVQucHknIG9yIGYuTG9jYWxQYXRoKCkuc3RhcnRzd2l0aCgnZXhhbXBsZXMn
KToKICAgICAgIGNvbnRpbnVlCiAgICAgZm9yIGxpbmVfbnVtLCBsaW5lIGluIGYuQ2hhbmdlZENv
bnRlbnRzKCk6CiAgICAgICBpZiAoKGluY2x1ZGVfcmUuc2VhcmNoKGxpbmUpIG9yIHVzYWdlX3Jl
LnNlYXJjaChsaW5lKSkKQEAgLTg2Miw4ICs4NjMsODkgQEAgZGVmIENvbW1vbkNoZWNrcyhpbnB1
dF9hcGksIG91dHB1dF9hcGkpOgogICByZXN1bHRzLmV4dGVuZChDaGVja05vU3RyZWFtVXNhZ2VJ
c0FkZGVkKAogICAgICAgaW5wdXRfYXBpLCBvdXRwdXRfYXBpLCBub25fdGhpcmRfcGFydHlfc291
cmNlcykpCiAgIHJlc3VsdHMuZXh0ZW5kKENoZWNrQWRkZWREZXBzSGF2ZVRhcmdldEFwcHJvdmFs
cyhpbnB1dF9hcGksIG91dHB1dF9hcGkpKQorICByZXN1bHRzLmV4dGVuZChDaGVja0FwaURlcHNG
aWxlSXNVcFRvRGF0ZShpbnB1dF9hcGksIG91dHB1dF9hcGkpKQorICByZXN1bHRzLmV4dGVuZChD
aGVja0Fic2xNZW1vcnlJbmNsdWRlKAorICAgICAgaW5wdXRfYXBpLCBvdXRwdXRfYXBpLCBub25f
dGhpcmRfcGFydHlfc291cmNlcykpCisgIHJldHVybiByZXN1bHRzCisKKworZGVmIENoZWNrQXBp
RGVwc0ZpbGVJc1VwVG9EYXRlKGlucHV0X2FwaSwgb3V0cHV0X2FwaSk6CisgICIiIkNoZWNrIHRo
YXQgJ2luY2x1ZGVfcnVsZXMnIGluIGFwaS9ERVBTIGlzIHVwIHRvIGRhdGUuCisKKyAgVGhlIGZp
bGUgYXBpL0RFUFMgbXVzdCBiZSBrZXB0IHVwIHRvIGRhdGUgaW4gb3JkZXIgdG8gYXZvaWQgdG8g
YXZvaWQgdG8KKyAgaW5jbHVkZSBpbnRlcm5hbCBoZWFkZXIgZnJvbSBXZWJSVEMncyBhcGkvIGhl
YWRlcnMuCisKKyAgVGhpcyBjaGVjayBpcyBmb2N1c2VkIG9uIGVuc3VyaW5nIHRoYXQgJ2luY2x1
ZGVfcnVsZXMnIGNvbnRhaW5zIGEgZGVueQorICBydWxlIGZvciBlYWNoIHJvb3QgbGV2ZWwgZGly
ZWN0b3J5LiBNb3JlIGZvY3VzZWQgYWxsb3cgcnVsZXMgY2FuIGJlCisgIGFkZGVkIHRvICdzcGVj
aWZpY19pbmNsdWRlX3J1bGVzJy4KKyAgIiIiCisgIHJlc3VsdHMgPSBbXQorICBhcGlfZGVwcyA9
IG9zLnBhdGguam9pbihpbnB1dF9hcGkuUHJlc3VibWl0TG9jYWxQYXRoKCksICdhcGknLCAnREVQ
UycpCisgIHdpdGggb3BlbihhcGlfZGVwcykgYXMgZjoKKyAgICBkZXBzX2NvbnRlbnQgPSBfUGFy
c2VEZXBzKGYucmVhZCgpKQorCisgIGluY2x1ZGVfcnVsZXMgPSBkZXBzX2NvbnRlbnQuZ2V0KCdp
bmNsdWRlX3J1bGVzJywgW10pCisKKyAgIyBPbmx5IGNoZWNrIHRvcCBsZXZlbCBkaXJlY3Rvcmll
cyBhZmZlY3RlZCBieSB0aGUgY3VycmVudCBDTC4KKyAgZGlyc190b19jaGVjayA9IHNldCgpCisg
IGZvciBmIGluIGlucHV0X2FwaS5BZmZlY3RlZEZpbGVzKCk6CisgICAgcGF0aF90b2tlbnMgPSBb
dCBmb3IgdCBpbiBmLkxvY2FsUGF0aCgpLnNwbGl0KG9zLnNlcCkgaWYgdF0KKyAgICBpZiBsZW4o
cGF0aF90b2tlbnMpID4gMToKKyAgICAgIGlmIChwYXRoX3Rva2Vuc1swXSAhPSAnYXBpJyBhbmQK
KyAgICAgICAgICBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihpbnB1dF9hcGkuUHJlc3VibWl0
TG9jYWxQYXRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF90
b2tlbnNbMF0pKSk6CisgICAgICAgIGRpcnNfdG9fY2hlY2suYWRkKHBhdGhfdG9rZW5zWzBdKQor
CisgIG1pc3NpbmdfaW5jbHVkZV9ydWxlcyA9IHNldCgpCisgIGZvciBwIGluIGRpcnNfdG9fY2hl
Y2s6CisgICAgcnVsZSA9ICctJXMnICUgcAorICAgIGlmIHJ1bGUgbm90IGluIGluY2x1ZGVfcnVs
ZXM6CisgICAgICBtaXNzaW5nX2luY2x1ZGVfcnVsZXMuYWRkKHJ1bGUpCisKKyAgaWYgbWlzc2lu
Z19pbmNsdWRlX3J1bGVzOgorICAgIGVycm9yX21zZyA9IFsKKyAgICAgICdpbmNsdWRlX3J1bGVz
ID0gW1xuJywKKyAgICAgICcgIC4uLlxuJywKKyAgICBdCisKKyAgICBmb3IgciBpbiBzb3J0ZWQo
bWlzc2luZ19pbmNsdWRlX3J1bGVzKToKKyAgICAgIGVycm9yX21zZy5hcHBlbmQoJyAgIiVzIixc
bicgJSBzdHIocikpCisKKyAgICBlcnJvcl9tc2cuYXBwZW5kKCcgIC4uLlxuJykKKyAgICBlcnJv
cl9tc2cuYXBwZW5kKCddXG4nKQorCisgICAgcmVzdWx0cy5hcHBlbmQob3V0cHV0X2FwaS5QcmVz
dWJtaXRFcnJvcigKKyAgICAgICAgJ05ldyByb290IGxldmVsIGRpcmVjdG9yeSBkZXRlY3RlZCEg
V2ViUlRDIGFwaS8gaGVhZGVycyBzaG91bGQgJworICAgICAgICAnbm90ICNpbmNsdWRlIGhlYWRl
cnMgZnJvbSBcbicKKyAgICAgICAgJ3RoZSBuZXcgZGlyZWN0b3J5LCBzbyBwbGVhc2UgdXBkYXRl
ICJpbmNsdWRlX3J1bGVzIiBpbiBmaWxlXG4nCisgICAgICAgICciJXMiLiBFeGFtcGxlOlxuJXNc
bicgJSAoYXBpX2RlcHMsICcnLmpvaW4oZXJyb3JfbXNnKSkpKQorCiAgIHJldHVybiByZXN1bHRz
CiAKK2RlZiBDaGVja0Fic2xNZW1vcnlJbmNsdWRlKGlucHV0X2FwaSwgb3V0cHV0X2FwaSwgc291
cmNlX2ZpbGVfZmlsdGVyKToKKyAgcGF0dGVybiA9IGlucHV0X2FwaS5yZS5jb21waWxlKAorICAg
ICAgcideI2luY2x1ZGVccyoiYWJzbC9tZW1vcnkvbWVtb3J5LmgiJywgaW5wdXRfYXBpLnJlLk1V
TFRJTElORSkKKyAgZmlsZV9maWx0ZXIgPSBsYW1iZGEgZjogKGYuTG9jYWxQYXRoKCkuZW5kc3dp
dGgoKCcuY2MnLCAnLmgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzb3VyY2Vf
ZmlsZV9maWx0ZXIoZikpCisKKyAgZmlsZXMgPSBbXQorICBmb3IgZiBpbiBpbnB1dF9hcGkuQWZm
ZWN0ZWRGaWxlcygKKyAgICAgIGluY2x1ZGVfZGVsZXRlcz1GYWxzZSwgZmlsZV9maWx0ZXI9Zmls
ZV9maWx0ZXIpOgorICAgIGNvbnRlbnRzID0gaW5wdXRfYXBpLlJlYWRGaWxlKGYpCisgICAgaWYg
cGF0dGVybi5zZWFyY2goY29udGVudHMpOgorICAgICAgY29udGludWUKKyAgICBmb3IgXywgbGlu
ZSBpbiBmLkNoYW5nZWRDb250ZW50cygpOgorICAgICAgaWYgJ2Fic2w6Om1ha2VfdW5pcXVlJyBp
biBsaW5lOgorICAgICAgICBmaWxlcy5hcHBlbmQoZikKKyAgICAgICAgYnJlYWsKKworICBpZiBs
ZW4oZmlsZXMpOgorICAgIHJldHVybiBbb3V0cHV0X2FwaS5QcmVzdWJtaXRFcnJvcigKKyAgICAg
ICAgJ1BsZWFzZSBpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIgaGVhZGVyIGZvcicKKyAg
ICAgICAgJyBhYnNsOjptYWtlX3VuaXF1ZS5cblRoaXMgaGVhZGVyIG1heSBvciBtYXkgbm90IGJl
IGluY2x1ZGVkJworICAgICAgICAnIHRyYW5zaXRpdmVseSBkZXBlbmRzIG9uIHRoZSBDKysgc3Rh
bmRhcmQgdmVyc2lvbi4nLAorICAgICAgICBmaWxlcyldCisgIHJldHVybiBbXQogCiBkZWYgQ2hl
Y2tDaGFuZ2VPblVwbG9hZChpbnB1dF9hcGksIG91dHB1dF9hcGkpOgogICByZXN1bHRzID0gW10K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL1dB
VENITElTVFMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9XQVRD
SExJU1RTCmluZGV4IGRjOGQ0OGM1MWY5NWJjOGM0M2NiZjBiZGIyZTZiYjBkYTE4ZjYyZTYuLjQy
NjBiZjkxYmJjNTk5NzMwZTA0Y2Q1MzI0ZTQ3NTQxOWQ4NDE5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL1dBVENITElTVFMKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvV0FUQ0hMSVNUUwpAQCAtNzks
NiArNzksOSBAQAogICAgICdiaXRyYXRlX2NvbnRyb2xsZXInOiB7CiAgICAgICAnZmlsZXBhdGgn
OiAnbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvLionCiAgICAgfSwKKyAgICAnY29uZ2VzdGlv
bl9jb250cm9sbGVyJzogeworICAgICAgJ2ZpbGVwYXRoJzogJ21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyLy4qJworICAgIH0sCiAgICAgJ3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcic6IHsK
ICAgICAgICdmaWxlcGF0aCc6ICdtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci8uKicK
ICAgICB9LApAQCAtOTcsOCArMTAwLDggQEAKICAgfSwKIAogICAnV0FUQ0hMSVNUUyc6IHsKLSAg
ICAndGhpc19maWxlJzogWycnXSwKLSAgICAnYWxsX3dlYnJ0Yyc6IFsndHRlcnJpYmVycnlAbW96
aWxsYS5jb20nXSwKKyAgICAndGhpc19maWxlJzogW10sCisgICAgJ2FsbF93ZWJydGMnOiBbXSwK
ICAgICAncm9vdF9maWxlcyc6IFsnbmlrbGFzLmVuYm9tQHdlYnJ0Yy5vcmcnLAogICAgICAgICAg
ICAgICAgICAgICdwZWFoQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAgICAgICdxaWFuZy5s
dUBpbnRlbC5jb20nLApAQCAtMTA2LDE2ICsxMDksMTQgQEAKICAgICAnYnVpbGRfZmlsZXMnOiBb
J21ib25hZGVpQHdlYnJ0Yy5vcmcnXSwKICAgICAnY29tbW9uX2F1ZGlvJzogWydhbGVzc2lvYkB3
ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICdhbHVlYnNAd2VicnRjLm9yZycsCi0g
ICAgICAgICAgICAgICAgICAgICAnYW5kcmV3QHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAg
ICAgICAgJ2F1ZGlvLXRlYW1AYWdvcmEuaW8nLAotICAgICAgICAgICAgICAgICAgICAgJ2Jqb3Ju
dkB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICdtaW55dWVAd2VicnRjLm9yZycs
CiAgICAgICAgICAgICAgICAgICAgICAncGVhaEB3ZWJydGMub3JnJ10sCi0gICAgJ2F1ZGlvJzog
Wydzb2xlbmJlcmdAd2VicnRjLm9yZycsCi0gICAgICAgICAgICAgICd0aW5hLmxlZ3JhbmRAd2Vi
cnRjLm9yZyddLAorICAgICdhdWRpbyc6IFsnc29sZW5iZXJnQHdlYnJ0Yy5vcmcnXSwKICAgICAn
YXBpJzogWydrd2liZXJnQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgJ3NvbGVuYmVyZ0B3ZWJy
dGMub3JnJ10sCi0gICAgJ2Jhc2UnOiBbJ2t3aWJlcmdAd2VicnRjLm9yZyddLAorICAgICdiYXNl
JzogWydrd2liZXJnQHdlYnJ0Yy5vcmcnLAorICAgICAgICAgICAgICdiZW53cmlnaHRAd2VicnRj
Lm9yZyddLAogICAgICdjYWxsJzogWydtZmxvZG1hbkB3ZWJydGMub3JnJywKICAgICAgICAgICAg
ICAnc29sZW5iZXJnQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICdzdGVmYW5Ad2VicnRjLm9y
ZyddLApAQCAtMTM3LDggKzEzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAnaGVucmlrLmx1
bmRpbkB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICdrd2liZXJnQHdlYnJ0Yy5v
cmcnLAogICAgICAgICAgICAgICAgICAgICAgJ21pbnl1ZUB3ZWJydGMub3JnJywKLSAgICAgICAg
ICAgICAgICAgICAgICdwZWFoQHdlYnJ0Yy5vcmcnLAotICAgICAgICAgICAgICAgICAgICAgJ3Rp
bmEubGVncmFuZEB3ZWJydGMub3JnJ10sCisgICAgICAgICAgICAgICAgICAgICAncGVhaEB3ZWJy
dGMub3JnJ10sCiAgICAgJ25ldGVxJzogWydhbGVzc2lvYkB3ZWJydGMub3JnJywKICAgICAgICAg
ICAgICAgJ2F1ZGlvLXRlYW1AYWdvcmEuaW8nLAogICAgICAgICAgICAgICAnaGVucmlrLmx1bmRp
bkB3ZWJydGMub3JnJywKQEAgLTE0OSw5ICsxNDksNyBAQAogICAgICdhdWRpb19wcm9jZXNzaW5n
JzogWydhbGVsb2lAd2VicnRjLm9yZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsZXNz
aW9iQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICdhbHVlYnNAd2VicnRj
Lm9yZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZHJld0B3ZWJydGMub3JnJywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAnYXVkaW8tdGVhbUBhZ29yYS5pbycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJ2Jqb3JudkB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAnaGVucmlrLmx1bmRpbkB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAna3dpYmVyZ0B3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlueXVl
QHdlYnJ0Yy5vcmcnLApAQCAtMTY2LDExICsxNjQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAnemhlbmd6aG9uZ2hvdUBhZ29yYS5pbyddLAogICAgICdiaXRyYXRlX2NvbnRyb2xsZXIn
OiBbJ21mbG9kbWFuQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0
ZWZhbkB3ZWJydGMub3JnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcnRlQHdlYnJ0
Yy5vcmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3podWFuZ3plc2VuQGFnb3JhLmlv
J10sCisgICAgJ2Nvbmdlc3Rpb25fY29udHJvbGxlcic6IFsnc3J0ZUB3ZWJydGMub3JnJ10sCiAg
ICAgJ3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcic6IFsnbWZsb2RtYW5Ad2VicnRjLm9yZycsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RlZmFuQHdlYnJ0Yy5vcmcnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3podWFuZ3plc2VuQGFnb3JhLmlvJ10sCiAg
ICAgJ3BhY2luZyc6IFsnbWZsb2RtYW5Ad2VicnRjLm9yZycsCisgICAgICAgICAgICAgICAnc3J0
ZUB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICdzdGVmYW5Ad2VicnRjLm9yZycsCiAgICAg
ICAgICAgICAgICAnemh1YW5nemVzZW5AYWdvcmEuaW8nXSwKICAgICAncnRwX3J0Y3AnOiBbJ21m
bG9kbWFuQHdlYnJ0Yy5vcmcnLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYWJzZWlsLWluLXdlYnJ0Yy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fic2VpbC1pbi13ZWJydGMubWQKaW5kZXggMDRhZThk
MjhkZTEyYjc0Y2NiYTVjZDUxYTZlNTIxZjM4NDMyOWQ0Ny4uMTA3NWFhOWI3OTYyMDE1ZTJlOTcz
YzM1NTBjNWU2OWI1NWRhMjVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYWJzZWlsLWluLXdlYnJ0Yy5tZAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hYnNlaWwtaW4td2VicnRjLm1kCkBAIC0xNSw2
ICsxNSwxMCBAQCBhZGRzIHRoZSBmaXJzdCB1c2UuCiAqIGBhYnNsOjptYWtlX3VuaXF1ZWAgYW5k
IGBhYnNsOjpXcmFwVW5pcXVlYAogKiBgYWJzbDo6b3B0aW9uYWxgIGFuZCByZWxhdGVkIHN0dWZm
IGZyb20gYGFic2wvdHlwZXMvb3B0aW9uYWwuaGAuCiAqIGBhYnNsOjpzdHJpbmdfdmlld2AKKyog
VGhlIGZ1bmN0aW9ucyBpbiBgYWJzbC9zdHJpbmdzL2FzY2lpLmhgIGFuZCBgYWJzbC9zdHJpbmdz
L21hdGNoLmhgCisqIGBhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlYCwKKyAg
YGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGVgLCBhbmQKKyAgYGFic2w6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGVgIGZyb20gYGFic2wvbWV0YS90eXBlX3RyYWl0cy5oYC4KICog
YGFic2w6OnZhcmlhbnRgIGFuZCByZWxhdGVkIHN0dWZmIGZyb20gYGFic2wvdHlwZXMvdmFyaWFu
dC5oYC4KIAogIyMgKipEaXNhbGxvd2VkKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9CVUlMRC5nbgppbmRleCA1YjIxMzM0ZmU5ODU5
ZTRlYjRkMDRhZmZiMzQ2MjUzZjg5YjdjN2JlLi5mZTI3YzdiODg4MGI4ZjJlYmExNTVmMzllZjdm
YjQ5YTM2MjliYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL0JVSUxELmduCkBAIC00NCw2ICs0NCwzMyBAQCBydGNfc291cmNl
X3NldCgiY2FsbGZhY3RvcnlfYXBpIikgewogICBdCiB9CiAKK3J0Y19zdGF0aWNfbGlicmFyeSgi
Y3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBd
CisgIGFsbG93X3BvaXNvbiA9IFsgInNvZnR3YXJlX3ZpZGVvX2NvZGVjcyIgXQorICBzb3VyY2Vz
ID0gWworICAgICJjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5jYyIsCisgICAgImNyZWF0
ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjYWxs
ZmFjdG9yeV9hcGkiLAorICAgICI6ZmVjX2NvbnRyb2xsZXJfYXBpIiwKKyAgICAiOmxpYmppbmds
ZV9wZWVyY29ubmVjdGlvbl9hcGkiLAorICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBp
IiwKKyAgICAiLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2ltcGxfYmFzZSIsCisgICAgIi4uL21l
ZGlhOnJ0Y19hdWRpb192aWRlbyIsCisgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlv
X2RldmljZV9hcGkiLAorICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKKyAg
ICAiLi4vcGM6cGVlcmNvbm5lY3Rpb24iLAorICAgICIuLi9ydGNfYmFzZTpwdHJfdXRpbCIsCisg
ICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKKyAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBw
cm92ZWQiLAorICAgICJhdWRpbzphdWRpb19taXhlcl9hcGkiLAorICAgICJhdWRpb19jb2RlY3M6
YXVkaW9fY29kZWNzX2FwaSIsCisgICAgInRyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAorICAg
ICJ2aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCisgIF0KK30KKwogcnRjX3N0YXRpY19s
aWJyYXJ5KCJsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIikgewogICB2aXNpYmlsaXR5ID0g
WyAiKiIgXQogICBjZmxhZ3MgPSBbXQpAQCAtNTIsNiArNzksOCBAQCBydGNfc3RhdGljX2xpYnJh
cnkoImxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiKSB7CiAgICAgImJpdHJhdGVfY29uc3Ry
YWludHMuaCIsCiAgICAgImNhbmRpZGF0ZS5jYyIsCiAgICAgImNhbmRpZGF0ZS5oIiwKKyAgICAi
Y3J5cHRvL2NyeXB0b29wdGlvbnMuY2MiLAorICAgICJjcnlwdG8vY3J5cHRvb3B0aW9ucy5oIiwK
ICAgICAiY3J5cHRvL2ZyYW1lZGVjcnlwdG9yaW50ZXJmYWNlLmgiLAogICAgICJjcnlwdG8vZnJh
bWVlbmNyeXB0b3JpbnRlcmZhY2UuaCIsCiAgICAgImNyeXB0b3BhcmFtcy5oIiwKQEAgLTYzLDYg
KzkyLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBp
IikgewogICAgICJqc2VwaWNlY2FuZGlkYXRlLmNjIiwKICAgICAianNlcGljZWNhbmRpZGF0ZS5o
IiwKICAgICAianNlcHNlc3Npb25kZXNjcmlwdGlvbi5oIiwKKyAgICAibWVkaWFfdHJhbnNwb3J0
X2ludGVyZmFjZS5jYyIsCiAgICAgIm1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIsCiAgICAg
Im1lZGlhY29uc3RyYWludHNpbnRlcmZhY2UuY2MiLAogICAgICJtZWRpYWNvbnN0cmFpbnRzaW50
ZXJmYWNlLmgiLApAQCAtMTA5LDYgKzEzOSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgibGliamlu
Z2xlX3BlZXJjb25uZWN0aW9uX2FwaSIpIHsKICAgICAiYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVj
c19hcGkiLAogICAgICJ0cmFuc3BvcnQ6Yml0cmF0ZV9zZXR0aW5ncyIsCiAgICAgInRyYW5zcG9y
dDpuZXR3b3JrX2NvbnRyb2wiLAorICAgICJ2aWRlbzplbmNvZGVkX2ltYWdlIiwKICAgICAidmlk
ZW86dmlkZW9fZnJhbWUiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
czpvcHRpb25hbCIsCiAKQEAgLTEyNCw2ICsxNTUsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImxp
YmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiKSB7CiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNl
IiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi9ydGNfYmFz
ZTpzdHJpbmd1dGlscyIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAg
XQogCiAgIGlmIChpc19uYWNsKSB7CkBAIC0xMzIsNiArMTY0LDEzIEBAIHJ0Y19zdGF0aWNfbGli
cmFyeSgibGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIpIHsKICAgfQogfQogCitydGNfc291
cmNlX3NldCgic2NvcGVkX3JlZnB0ciIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgc291
cmNlcyA9IFsKKyAgICAic2NvcGVkX3JlZnB0ci5oIiwKKyAgXQorfQorCiBydGNfc291cmNlX3Nl
dCgidmlkZW9fcXVhbGl0eV90ZXN0X2ZpeHR1cmVfYXBpIikgewogICB2aXNpYmlsaXR5ID0gWyAi
KiIgXQogICB0ZXN0b25seSA9IHRydWUKQEAgLTE2NCw2ICsyMDMsNyBAQCBydGNfc291cmNlX3Nl
dCgidGVzdF9kZXBlbmRlbmN5X2ZhY3RvcnkiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjp2aWRlb19x
dWFsaXR5X3Rlc3RfZml4dHVyZV9hcGkiLAogICAgICIuLi9ydGNfYmFzZTp0aHJlYWRfY2hlY2tl
ciIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KICAg
aWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CiAgICAgIyBTdXBwcmVzcyB3
YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8x
NjMpLgpAQCAtMjAzLDM0ICsyNDMsMTUgQEAgcnRjX3NvdXJjZV9zZXQoImxpYmppbmdsZV9sb2dn
aW5nX2FwaSIpIHsKIHJ0Y19zb3VyY2Vfc2V0KCJvcnRjX2FwaSIpIHsKICAgdmlzaWJpbGl0eSA9
IFsgIioiIF0KICAgc291cmNlcyA9IFsKLSAgICAib3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmNjIiwK
LSAgICAib3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmgiLAotICAgICJvcnRjL29ydGNmYWN0b3J5aW50
ZXJmYWNlLmgiLAotICAgICJvcnRjL29ydGNydHByZWNlaXZlcmludGVyZmFjZS5oIiwKLSAgICAi
b3J0Yy9vcnRjcnRwc2VuZGVyaW50ZXJmYWNlLmgiLAogICAgICJvcnRjL3BhY2tldHRyYW5zcG9y
dGludGVyZmFjZS5oIiwKLSAgICAib3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyaW50ZXJmYWNl
LmgiLAogICAgICJvcnRjL3J0cHRyYW5zcG9ydGludGVyZmFjZS5oIiwKLSAgICAib3J0Yy9zZXNz
aW9uZGVzY3JpcHRpb24uY2MiLAotICAgICJvcnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5oIiwKICAg
ICAib3J0Yy9zcnRwdHJhbnNwb3J0aW50ZXJmYWNlLmgiLAotICAgICJvcnRjL3VkcHRyYW5zcG9y
dGludGVyZmFjZS5oIiwKICAgXQogCi0gICMgRm9yIG1lZGlhc3RyZWFtaW50ZXJmYWNlLmgsIGV0
Yy4KLSAgIyBUT0RPKGRlYWRiZWVmKTogQ3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZvciB0aGUg
Y29tbW9uIHRoaW5ncyBPUlRDIGFuZAotICAjIFBlZXJDb25uZWN0aW9uIGNvZGUgc2hhcmVzLCBz
byB0aGF0IG9ydGNfYXBpIGNhbiBkZXBlbmQgb24gdGhhdCBpbnN0ZWFkIG9mCi0gICMgbGliamlu
Z2xlX3BlZXJjb25uZWN0aW9uX2FwaS4KICAgZGVwcyA9IFsKICAgICAiOmxpYmppbmdsZV9wZWVy
Y29ubmVjdGlvbl9hcGkiLAotICAgICIuLjp3ZWJydGNfY29tbW9uIiwKLSAgICAiLi4vcnRjX2Jh
c2U6cnRjX2Jhc2UiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpv
cHRpb25hbCIsCiAgIF0KLSAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7
Ci0gICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4g
KGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgotICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1
aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCi0gIH0KIH0KIAogcnRjX3Nv
dXJjZV9zZXQoInJ0Y19zdGF0c19hcGkiKSB7CkBAIC0yNDYsNiArMjY3LDcgQEAgcnRjX3NvdXJj
ZV9zZXQoInJ0Y19zdGF0c19hcGkiKSB7CiAgIGRlcHMgPSBbCiAgICAgIi4uL3J0Y19iYXNlOmNo
ZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vcnRj
X2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICBdCiB9CiAKQEAgLTI3MCw2ICsyOTIsMTcgQEAg
cnRjX3NvdXJjZV9zZXQoInRyYW5zcG9ydF9hcGkiKSB7CiAgIF0KIH0KIAorcnRjX3NvdXJjZV9z
ZXQoImJpdHJhdGVfYWxsb2NhdGlvbiIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgc291
cmNlcyA9IFsKKyAgICAiY2FsbC9iaXRyYXRlX2FsbG9jYXRpb24uaCIsCisgIF0KKyAgZGVwcyA9
IFsKKyAgICAidW5pdHM6ZGF0YV9yYXRlIiwKKyAgICAidW5pdHM6dGltZV9kZWx0YSIsCisgIF0K
K30KKwogcnRjX3NvdXJjZV9zZXQoInNpbXVsYXRlZF9uZXR3b3JrX2FwaSIpIHsKICAgdmlzaWJp
bGl0eSA9IFsgIioiIF0KICAgc291cmNlcyA9IFsKQEAgLTM0Nyw2ICszODAsNyBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICAgIF0KIAogICAgICAgZGVwcyA9IFsKKyAgICAgICAgIi4u
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAgICAiLi4vbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgICAiLi4vbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nOmF1ZGlvcHJvY19mX2ltcGwiLAogICAgICAgXQpAQCAtNDQ2LDExICs0ODAs
MzMgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgXQogICB9CiAKLSAgcnRjX3NvdXJj
ZV9zZXQoImZha2VfZnJhbWVfY3J5cHRvIikgeworICBydGNfc291cmNlX3NldCgibW9ja19mcmFt
ZV9lbmNyeXB0b3IiKSB7CisgICAgdGVzdG9ubHkgPSB0cnVlCisgICAgc291cmNlcyA9IFsKKyAg
ICAgICJ0ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9yLmNjIiwKKyAgICAgICJ0ZXN0L21vY2tfZnJh
bWVfZW5jcnlwdG9yLmgiLAorICAgIF0KKyAgICBkZXBzID0gWworICAgICAgIjpsaWJqaW5nbGVf
cGVlcmNvbm5lY3Rpb25fYXBpIiwKKyAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAg
XQorICB9CisKKyAgcnRjX3NvdXJjZV9zZXQoIm1vY2tfZnJhbWVfZGVjcnlwdG9yIikgeworICAg
IHRlc3Rvbmx5ID0gdHJ1ZQorICAgIHNvdXJjZXMgPSBbCisgICAgICAidGVzdC9tb2NrX2ZyYW1l
X2RlY3J5cHRvci5jYyIsCisgICAgICAidGVzdC9tb2NrX2ZyYW1lX2RlY3J5cHRvci5oIiwKKyAg
ICBdCisgICAgZGVwcyA9IFsKKyAgICAgICI6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIs
CisgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgIF0KKyAgfQorCisgIHJ0Y19zb3Vy
Y2Vfc2V0KCJmYWtlX2ZyYW1lX2VuY3J5cHRvciIpIHsKICAgICB0ZXN0b25seSA9IHRydWUKICAg
ICBzb3VyY2VzID0gWwotICAgICAgInRlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3IuY2MiLAotICAg
ICAgInRlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3IuaCIsCiAgICAgICAidGVzdC9mYWtlX2ZyYW1l
X2VuY3J5cHRvci5jYyIsCiAgICAgICAidGVzdC9mYWtlX2ZyYW1lX2VuY3J5cHRvci5oIiwKICAg
ICBdCkBAIC00NjMsNiArNTE5LDIxIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIF0K
ICAgfQogCisgIHJ0Y19zb3VyY2Vfc2V0KCJmYWtlX2ZyYW1lX2RlY3J5cHRvciIpIHsKKyAgICB0
ZXN0b25seSA9IHRydWUKKyAgICBzb3VyY2VzID0gWworICAgICAgInRlc3QvZmFrZV9mcmFtZV9k
ZWNyeXB0b3IuY2MiLAorICAgICAgInRlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3IuaCIsCisgICAg
XQorICAgIGRlcHMgPSBbCisgICAgICAiOmFycmF5X3ZpZXciLAorICAgICAgIjpsaWJqaW5nbGVf
cGVlcmNvbm5lY3Rpb25fYXBpIiwKKyAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwKKyAgICAgICIu
Li9ydGNfYmFzZTpjaGVja3MiLAorICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVk
IiwKKyAgICBdCisgIH0KKwogICBydGNfc291cmNlX3NldCgibW9ja19wZWVyY29ubmVjdGlvbmlu
dGVyZmFjZSIpIHsKICAgICB0ZXN0b25seSA9IHRydWUKICAgICBzb3VyY2VzID0gWwpAQCAtNTAw
LDYgKzU3MSwxOCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBdCiAgIH0KIAorICBy
dGNfc291cmNlX3NldCgibW9ja192aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Iikgewor
ICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAgIHNvdXJjZXMgPSBbCisgICAgICAidGVzdC9tb2NrX3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIsCisgICAgXQorCisgICAgZGVwcyA9IFsK
KyAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCisg
ICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgIF0KKyAgfQorCiAgIHJ0Y19zb3VyY2Vf
c2V0KCJtb2NrX3ZpZGVvX2NvZGVjX2ZhY3RvcnkiKSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAg
ICAgc291cmNlcyA9IFsKQEAgLTUxMywxNSArNTk2LDcyIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0
cykgewogICAgIF0KICAgfQogCisgIHJ0Y19zb3VyY2Vfc2V0KCJtb2NrX3ZpZGVvX2RlY29kZXIi
KSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAg
IHNvdXJjZXMgPSBbCisgICAgICAidGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuY2MiLAorICAgICAg
InRlc3QvbW9ja192aWRlb19kZWNvZGVyLmgiLAorICAgIF0KKworICAgIGRlcHMgPSBbCisgICAg
ICAiLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKKyAgICAgICIuLi90ZXN0
OnRlc3Rfc3VwcG9ydCIsCisgICAgXQorICB9CisKKyAgcnRjX3NvdXJjZV9zZXQoIm1vY2tfdmlk
ZW9fZW5jb2RlciIpIHsKKyAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorCisgICAgdGVzdG9ubHkg
PSB0cnVlCisgICAgc291cmNlcyA9IFsKKyAgICAgICJ0ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5j
YyIsCisgICAgICAidGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIuaCIsCisgICAgXQorCisgICAgZGVw
cyA9IFsKKyAgICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAorICAg
ICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKyAgICBdCisgIH0KKworICBydGNfc291cmNlX3Nl
dCgiZmFrZV9tZWRpYV90cmFuc3BvcnQiKSB7CisgICAgdGVzdG9ubHkgPSB0cnVlCisKKyAgICBz
b3VyY2VzID0gWworICAgICAgInRlc3QvZmFrZV9tZWRpYV90cmFuc3BvcnQuaCIsCisgICAgXQor
CisgICAgZGVwcyA9IFsKKyAgICAgICI6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCisg
ICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9tZW1vcnk6bWVtb3J5IiwKKyAgICBdCisgIH0KKworICBydGNfc291cmNlX3NldCgi
bG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0IikgeworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorCisgICAg
c291cmNlcyA9IFsKKyAgICAgICJ0ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydC5oIiwKKyAg
ICBdCisKKyAgICBkZXBzID0gWworICAgICAgIjpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBp
IiwKKyAgICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlIiwKKyAgICBdCisgIH0KKwogICBydGNfc291cmNlX3NldCgicnRjX2FwaV91bml0dGVzdHMi
KSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAKICAgICBzb3VyY2VzID0gWwogICAgICAgImFycmF5
X3ZpZXdfdW5pdHRlc3QuY2MiLAotICAgICAgIm9ydGMvbWVkaWFkZXNjcmlwdGlvbl91bml0dGVz
dC5jYyIsCi0gICAgICAib3J0Yy9zZXNzaW9uZGVzY3JpcHRpb25fdW5pdHRlc3QuY2MiLAogICAg
ICAgInJ0Y2Vycm9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICJydHBwYXJhbWV0ZXJzX3VuaXR0ZXN0
LmNjIiwKKyAgICAgICJ0ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydF91bml0dGVzdC5jYyIs
CiAgICAgXQogCiAgICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CkBA
IC01MzIsMTAgKzY3MiwxMCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBkZXBzID0g
WwogICAgICAgIjphcnJheV92aWV3IiwKICAgICAgICI6bGliamluZ2xlX3BlZXJjb25uZWN0aW9u
X2FwaSIsCi0gICAgICAiOm9ydGNfYXBpIiwKKyAgICAgICI6bG9vcGJhY2tfbWVkaWFfdHJhbnNw
b3J0IiwKICAgICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICAgIi4uL3J0Y19iYXNlOmd1
bml0X2hlbHBlcnMiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAg
ICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiLi4vdGVzdDp0
ZXN0X3N1cHBvcnQiLAogICAgICAgInVuaXRzOnVuaXRzX3VuaXR0ZXN0cyIsCiAgICAgXQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL0RF
UFMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvREVQUwpp
bmRleCA4NDdjY2UyNTlmOWFlNjNhMDIwZTBkNjJhMjQyMDFiY2E3MjQ1N2EyLi4yODZkOGQxZTFl
NmM3NzhiNDA0NThmNzdkMDY1ZTg4MjIxMmE4YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvREVQUworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvREVQUwpAQCAtMSwxNSArMSw1NSBAQAor
IyBUaGlzIGlzIHN1cHBvc2VkIHRvIGJlIGEgY29tcGxldGUgbGlzdCBvZiB0b3AtbGV2ZWwgZGly
ZWN0b3JpZXMsCisjIGV4Y2VwdGluZyBvbmx5IGFwaS8gaXRzZWxmLgogaW5jbHVkZV9ydWxlcyA9
IFsKLSAgIit0aGlyZF9wYXJ0eS9saWJ5dXYiLAotICAiK2NvbW1vbl92aWRlbyIsCi0gICIrbWVk
aWEiLAotICAiK3AycCIsCi0gICIrcGMiLAotICAiK2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNf
ZXZlbnRfbG9nX2ZhY3RvcnlfaW50ZXJmYWNlLmgiLAotICAiK21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9pbmNsdWRlIiwKLSAgIitzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZSIsCisgICItYXVkaW8i
LAorICAiLWJhc2UiLAorICAiLWJ1aWxkIiwKKyAgIi1idWlsZHRvb2xzIiwKKyAgIi1idWlsZF9v
dmVycmlkZXMiLAorICAiLWNhbGwiLAorICAiLWNvbW1vbl9hdWRpbyIsCisgICItY29tbW9uX3Zp
ZGVvIiwKKyAgIi1kYXRhIiwKKyAgIi1leGFtcGxlcyIsCisgICItaW9zIiwKKyAgIi1pbmZyYSIs
CisgICItbG9nZ2luZyIsCisgICItbWVkaWEiLAorICAiLW1vZHVsZXMiLAorICAiLW91dCIsCisg
ICItcDJwIiwKKyAgIi1wYyIsCisgICItcmVzb3VyY2VzIiwKKyAgIi1ydGNfYmFzZSIsCisgICIt
cnRjX3Rvb2xzIiwKKyAgIi1zZGsiLAorICAiLXN0YXRzIiwKKyAgIi1zdHlsZS1ndWlkZSIsCisg
ICItc3lzdGVtX3dyYXBwZXJzIiwKKyAgIi10ZXN0IiwKKyAgIi10ZXN0aW5nIiwKKyAgIi10aGly
ZF9wYXJ0eSIsCisgICItdG9vbHMiLAorICAiLXRvb2xzX3dlYnJ0YyIsCisgICItdmlkZW8iLAor
ICAiLWV4dGVybmFsL3dlYnJ0Yy93ZWJydGMiLCAgIyBBbmRyb2lkIHBsYXRmb3JtIGJ1aWxkLgor
ICAiLWxpYnl1diIsCisgICItY29tbW9uX3R5cGVzLmgiLAorICAiLVdlYlJUQyIsCiBdCiAKIHNw
ZWNpZmljX2luY2x1ZGVfcnVsZXMgPSB7CisgICMgU29tZSBpbnRlcm5hbCBoZWFkZXJzIGFyZSBh
bGxvd2VkIGV2ZW4gaW4gQVBJIGhlYWRlcnM6CisgICIuKlwuaCI6IFsKKyAgICAiK3J0Y19iYXNl
L2NoZWNrcy5oIiwKKyAgICAiK3J0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiLAorICAgICIr
cnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmgiLAorICBdLAorCisgICJhcnJheV92aWV3XC5oIjog
WworICAgICIrcnRjX2Jhc2UvdHlwZV90cmFpdHMuaCIsCisgIF0sCisKICAgIyBOZWVkZWQgYmVj
YXVzZSBBdWRpb0VuY29kZXJPcHVzIGlzIGluIHRoZSB3cm9uZyBwbGFjZSBmb3IKICAgIyBiYWNr
d2FyZHMgY29tcGF0aWJpbHR5IHJlYXNvbnMuIFNlZQogICAjIGh0dHBzOi8vYnVncy5jaHJvbWl1
bS5vcmcvcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD03ODQ3CkBAIC0xNywxMyArNTcsMjUyIEBA
IHNwZWNpZmljX2luY2x1ZGVfcnVsZXMgPSB7CiAgICAgIittb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXMuaCIsCiAgIF0sCiAKLSAgIyBXZSBhbGxvdyAu
Y2MgZmlsZXMgaW4gd2VicnRjL2FwaS8gdG8gI2luY2x1ZGUgYSBidW5jaCBvZiBzdHVmZgotICAj
IHRoYXQncyBvZmYtbGltaXRzIGZvciB0aGUgLmggZmlsZXMuIFRoYXQncyBiZWNhdXNlIC5oIGZp
bGVzIGxlYWsKLSAgIyB0aGVpciAjaW5jbHVkZXMgdG8gd2hvZXZlcidzICNpbmNsdWRpbmcgdGhl
bSwgYnV0IC5jYyBmaWxlcyBkbyBub3QKLSAgIyBzaW5jZSBubyBvbmUgI2luY2x1ZGVzIHRoZW0u
CisgICJhc3luY3Jlc29sdmVyZmFjdG9yeVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2FzeW5jcmVz
b2x2ZXJpbnRlcmZhY2UuaCIsCisgIF0sCisKKyAgImNhbmRpZGF0ZVwuaCI6IFsKKyAgICAiK3J0
Y19iYXNlL25ldHdvcmtfY29uc3RhbnRzLmgiLAorICAgICIrcnRjX2Jhc2Uvc29ja2V0YWRkcmVz
cy5oIiwKKyAgXSwKKworICAiY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnlcLmgiOiBbCisg
ICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwKKworICAiZGF0YWNoYW5uZWxp
bnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIiwKKyAg
ICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAorICBdLAorCisgICJkdG1mc2VuZGVyaW50ZXJmYWNl
XC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgIF0sCisKKyAgImZlY19jb250
cm9sbGVyXC5oIjogWworICAgICIrbW9kdWxlcy9pbmNsdWRlL21vZHVsZV9mZWNfdHlwZXMuaCIs
CisgIF0sCisKKyAgImpzZXBcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAg
XSwKKworICAianNlcGljZWNhbmRpZGF0ZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2NvbnN0cnVj
dG9ybWFnaWMuaCIsCisgIF0sCisKKyAgImpzZXBzZXNzaW9uZGVzY3JpcHRpb25cLmgiOiBbCisg
ICAgIitydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiLAorICBdLAorCisgICJtZWRpYXN0cmVh
bWludGVyZmFjZVwuaCI6IFsKKyAgICAiK21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRl
L2F1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcy5oIiwKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50
LmgiLAorICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIsCisgIF0sCisKKyAgIm1lZGlh
X3RyYW5zcG9ydF9pbnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9jb3B5b253cml0ZWJ1
ZmZlci5oIiwgICMgQXMgdXNlZCBieSBkYXRhY2hhbm5lbGludGVyZmFjZS5oCisgICAgIitydGNf
YmFzZS9uZXR3b3Jrcm91dGUuaCIKKyAgXSwKKworICAicGVlcmNvbm5lY3Rpb25mYWN0b3J5cHJv
eHlcLmgiOiBbCisgICAgIitydGNfYmFzZS9iaW5kLmgiLAorICBdLAorCisgICJyZWZjb3VudGVk
YmFzZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIsCisgICAgIity
dGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50ZXIuaCIsCisgIF0s
CisKKyAgInJ0Y2Vycm9yXC5oIjogWworICAgICIrcnRjX2Jhc2UvbG9nZ2luZy5oIiwKKyAgXSwK
KworICAicnRwcmVjZWl2ZXJpbnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3Vu
dC5oIiwKKyAgICAiK3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiLAorICBdLAorCisgICJydHBz
ZW5kZXJpbnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgICAi
K3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiLAorICBdLAorCisgICJydHB0cmFuc2NlaXZlcmlu
dGVyZmFjZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAorICBdLAorCisgICJz
ZXRyZW1vdGVkZXNjcmlwdGlvbm9ic2VydmVyaW50ZXJmYWNlXC5oIjogWworICAgICIrcnRjX2Jh
c2UvcmVmY291bnQuaCIsCisgIF0sCisKKyAgInN0YXRzdHlwZXNcLmgiOiBbCisgICAgIitydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiLAorICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisg
ICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgICAiK3J0Y19iYXNlL3N0cmluZ2Vu
Y29kZS5oIiwKKyAgICAiK3J0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiLAorICBdLAorCisgICJ1
bWFtZXRyaWNzXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgIF0sCisKKyAg
ImF1ZGlvX2ZyYW1lXC5oIjogWworICAgICIrcnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIiwK
KyAgXSwKKworICAiYXVkaW9fbWl4ZXJcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5o
IiwKKyAgXSwKKworICAiYXVkaW9fZGVjb2RlclwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2J1ZmZl
ci5oIiwKKyAgICAiK3J0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIsCisgIF0sCisKKyAgImF1
ZGlvX2RlY29kZXJfZmFjdG9yeVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAor
ICBdLAorCisgICJhdWRpb19kZWNvZGVyX2ZhY3RvcnlfdGVtcGxhdGVcLmgiOiBbCisgICAgIity
dGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiLAorICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9w
dHIuaCIsCisgIF0sCisKKyAgImF1ZGlvX2VuY29kZXJcLmgiOiBbCisgICAgIitydGNfYmFzZS9i
dWZmZXIuaCIsCisgICAgIitydGNfYmFzZS9kZXByZWNhdGlvbi5oIiwKKyAgXSwKKworICAiYXVk
aW9fZW5jb2Rlcl9mYWN0b3J5XC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisg
IF0sCisKKyAgImF1ZGlvX2VuY29kZXJfZmFjdG9yeV90ZW1wbGF0ZVwuaCI6IFsKKyAgICAiK3J0
Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIsCisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0
ci5oIiwKKyAgXSwKKworICAiYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnlcLmgiOiBbCisg
ICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwKKworICAiYnVpbHRpbl9hdWRp
b19lbmNvZGVyX2ZhY3RvcnlcLmgiOiBbCisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5o
IiwKKyAgXSwKKworICAiZnJhbWVkZWNyeXB0b3JpbnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNf
YmFzZS9yZWZjb3VudC5oIiwKKyAgXSwKKworICAiZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2VcLmgi
OiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgXSwKKworICAib3J0Y2ZhY3Rvcnlp
bnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9uZXR3b3JrLmgiLAorICAgICIrcnRjX2Jh
c2Uvc2NvcGVkX3JlZl9wdHIuaCIsCisgICAgIitydGNfYmFzZS90aHJlYWQuaCIsCisgIF0sCisK
KyAgInVkcHRyYW5zcG9ydGludGVyZmFjZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3NvY2tldGFk
ZHJlc3MuaCIsCisgIF0sCisKKyAgInJ0Y3N0YXRzY29sbGVjdG9yY2FsbGJhY2tcLmgiOiBbCisg
ICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgICAiK3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRy
LmgiLAorICBdLAorCisgICJydGNzdGF0c3JlcG9ydFwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3Jl
ZmNvdW50LmgiLAorICAgICIrcnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIiwKKyAgICAiK3J0
Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiLAorICBdLAorCisgICJhdWRpb3Byb2NfZmxvYXRcLmgi
OiBbCisgICAgIittb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNz
aW5nLmgiLAorICBdLAorCisgICJmYWtlX2ZyYW1lX2RlY3J5cHRvclwuaCI6IFsKKyAgICAiK3J0
Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIsCisgIF0sCisKKyAgImZha2VfZnJhbWVfZW5jcnlw
dG9yXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIiwKKyAgXSwKKwor
ICAiZmFrZWNvbnN0cmFpbnRzXC5oIjogWworICAgICIrcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgi
LAorICBdLAorCisgICJtb2NrLipcLmgiOiBbCisgICAgIit0ZXN0L2dtb2NrLmgiLAorICBdLAor
CisgICJzaW11bGF0ZWRfbmV0d29ya1wuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2NyaXRpY2Fsc2Vj
dGlvbi5oIiwKKyAgICAiK3J0Y19iYXNlL3JhbmRvbS5oIiwKKyAgICAiK3J0Y19iYXNlL3RocmVh
ZF9hbm5vdGF0aW9ucy5oIiwKKyAgXSwKKworICAidGVzdF9kZXBlbmRlbmN5X2ZhY3RvcnlcLmgi
OiBbCisgICAgIitydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIiwKKyAgXSwKKworICAidmlkZW9j
b2RlY190ZXN0X2ZpeHR1cmVcLmgiOiBbCisgICAgIittb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNs
dWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgorICBdLAorCisgICJpMDEwX2J1ZmZlclwuaCI6
IFsKKyAgICAiK3J0Y19iYXNlL21lbW9yeS9hbGlnbmVkX21hbGxvYy5oIgorICBdLAorCisgICJp
NDIwX2J1ZmZlclwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL21lbW9yeS9hbGlnbmVkX21hbGxvYy5o
IiwKKyAgXSwKKworICAidmlkZW9fZnJhbWVfYnVmZmVyXC5oIjogWworICAgICIrcnRjX2Jhc2Uv
cmVmY291bnQuaCIsCisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwKKwor
ICAidmlkZW9fdGltaW5nXC5oIjogWworICAgICIrcnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252
ZXJzaW9ucy5oIiwKKyAgXSwKKworICAidmlkZW9fZW5jb2Rlcl9jb25maWdcLmgiOiBbCisgICAg
IitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgICAiK3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgi
LAorICBdLAorCisgICMgLmNjIGZpbGVzIGluIGFwaS8gc2hvdWxkIG5vdCBiZSByZXN0cmljdGVk
IGluIHdoYXQgdGhleSBjYW4gI2luY2x1ZGUsCisgICMgc28gd2UgcmUtYWRkIGFsbCB0aGUgdG9w
LWxldmVsIGRpcmVjdG9yaWVzIGhlcmUuIChUaGF0J3MgYmVjYXVzZSAuaAorICAjIGZpbGVzIGxl
YWsgdGhlaXIgI2luY2x1ZGVzIHRvIHdob2V2ZXIncyAjaW5jbHVkaW5nIHRoZW0sIGJ1dCAuY2Mg
ZmlsZXMKKyAgIyBkbyBub3Qgc2luY2Ugbm8gb25lICNpbmNsdWRlcyB0aGVtLikKICAgIi4qXC5j
YyI6IFsKLSAgICAiK21vZHVsZXMvYXVkaW9fY29kaW5nIiwKLSAgICAiK21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZyIsCi0gICAgIittb2R1bGVzL3ZpZGVvX2NvZGluZyIsCisgICAgIithdWRpbyIs
CisgICAgIitjYWxsIiwKKyAgICAiK2NvbW1vbl9hdWRpbyIsCisgICAgIitjb21tb25fdmlkZW8i
LAorICAgICIrZXhhbXBsZXMiLAorICAgICIrbG9nZ2luZyIsCisgICAgIittZWRpYSIsCisgICAg
Iittb2R1bGVzIiwKKyAgICAiK3AycCIsCisgICAgIitwYyIsCisgICAgIitydGNfYmFzZSIsCisg
ICAgIitydGNfdG9vbHMiLAorICAgICIrc2RrIiwKKyAgICAiK3N0YXRzIiwKKyAgICAiK3N5c3Rl
bV93cmFwcGVycyIsCisgICAgIit0ZXN0IiwKKyAgICAiK3Rvb2xzIiwKKyAgICAiK3Rvb2xzX3dl
YnJ0YyIsCisgICAgIit2aWRlbyIsCisgICAgIit0aGlyZF9wYXJ0eSIsCiAgIF0sCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvT1dO
RVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL09XTkVS
UwppbmRleCA1OTNkZTIzMGQzNzg3OWEyNTk4ZjU4NTlkZjJkNDMyYWFjZmIzMmIyLi4xYWU1YzY0
NmUyMzE3YWJhZTM1NDY0YmE4M2ZhM2ZmZTBiZTEyYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvT1dORVJTCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9PV05FUlMKQEAgLTEzLDMgKzEz
LDEwIEBAIHBlci1maWxlIHBlZXJjb25uZWN0aW9uKj1oYm9zQHdlYnJ0Yy5vcmcKIAogcGVyLWZp
bGUgKi5nbj1waG9nbHVuZEB3ZWJydGMub3JnCiBwZXItZmlsZSAqLmduaT1waG9nbHVuZEB3ZWJy
dGMub3JnCisKK3Blci1maWxlIERFUFM9bWJvbmFkZWlAd2VicnRjLm9yZworcGVyLWZpbGUgREVQ
Uz1rd2liZXJnQHdlYnJ0Yy5vcmcKKworcGVyLWZpbGUgbWVkaWFfdHJhbnNwb3J0Kj1zdWtoYW5v
dkB3ZWJydGMub3JnCitwZXItZmlsZSBtZWRpYV90cmFuc3BvcnQqPXBzbGFAd2VicnRjLm9yZwor
cGVyLWZpbGUgbWVkaWFfdHJhbnNwb3J0Kj1tZWxsZW1Ad2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL0JVSUxE
LmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
L0JVSUxELmduCmluZGV4IDI4NmE1YTZmMWM2Y2Y1MjNmNDIwZmU0ZmY3YzkyN2I0MzliYzUwMTUu
LmI2NmJlNzYzNDMxZjcyYjMzZjAwMGY1NDFkY2MwYzFkYTE4Mzg5YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9CVUlMRC5n
bgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW8vQlVJTEQuZ24KQEAgLTM5LDYgKzM5LDI3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhZWMzX2NvbmZp
ZyIpIHsKICAgICAiZWNob19jYW5jZWxsZXIzX2NvbmZpZy5jYyIsCiAgICAgImVjaG9fY2FuY2Vs
bGVyM19jb25maWcuaCIsCiAgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hl
Y2tzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8u
Li9ydGNfYmFzZTpzYWZlX21pbm1heCIsCisgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNf
ZXhwb3J0IiwKKyAgXQorfQorCitydGNfc291cmNlX3NldCgiYWVjM19jb25maWdfanNvbiIpIHsK
KyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgc291cmNlcyA9IFsKKyAgICAiZWNob19jYW5jZWxs
ZXIzX2NvbmZpZ19qc29uLmNjIiwKKyAgICAiZWNob19jYW5jZWxsZXIzX2NvbmZpZ19qc29uLmgi
LAorICBdCisgIGRlcHMgPSBbCisgICAgIjphZWMzX2NvbmZpZyIsCisgICAgIi4uLy4uL3J0Y19i
YXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2pzb24iLAor
ICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCisgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3M6c3RyaW5ncyIsCisgIF0KIH0KIAogcnRjX3NvdXJj
ZV9zZXQoImFlYzNfZmFjdG9yeSIpIHsKQEAgLTU0LDYgKzc1LDcgQEAgcnRjX3NvdXJjZV9zZXQo
ImFlYzNfZmFjdG9yeSIpIHsKICAgICAiOmVjaG9fY29udHJvbCIsCiAgICAgIi4uLy4uL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9l
Y2hvX2NhbmNlbGxlcjNfY29uZmlnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuY2MKaW5kZXggM2Iw
M2QxM2MxY2E1MWQ5MTNlOWVlODQyOTg1OWE1ZTMxNTI5YzExMC4uM2ViMmE4ZDJhMDA5YjhmZTFh
NGVmODcwZTc2ZGNlNDcwOTE4OTI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
L2VjaG9fY2FuY2VsbGVyM19jb25maWcuY2MKQEAgLTksNyArOSwzNiBAQAogICovCiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKIAorI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDxjbWF0aD4KKworI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCisKIG5hbWVzcGFjZSB3
ZWJydGMgeworbmFtZXNwYWNlIHsKK2Jvb2wgTGltaXQoZmxvYXQqIHZhbHVlLCBmbG9hdCBtaW4s
IGZsb2F0IG1heCkgeworICBmbG9hdCBjbGFtcGVkID0gcnRjOjpTYWZlQ2xhbXAoKnZhbHVlLCBt
aW4sIG1heCk7CisgIGNsYW1wZWQgPSBzdGQ6OmlzZmluaXRlKGNsYW1wZWQpID8gY2xhbXBlZCA6
IG1pbjsKKyAgYm9vbCByZXMgPSAqdmFsdWUgPT0gY2xhbXBlZDsKKyAgKnZhbHVlID0gY2xhbXBl
ZDsKKyAgcmV0dXJuIHJlczsKK30KKworYm9vbCBMaW1pdChzaXplX3QqIHZhbHVlLCBzaXplX3Qg
bWluLCBzaXplX3QgbWF4KSB7CisgIHNpemVfdCBjbGFtcGVkID0gcnRjOjpTYWZlQ2xhbXAoKnZh
bHVlLCBtaW4sIG1heCk7CisgIGJvb2wgcmVzID0gKnZhbHVlID09IGNsYW1wZWQ7CisgICp2YWx1
ZSA9IGNsYW1wZWQ7CisgIHJldHVybiByZXM7Cit9CisKK2Jvb2wgTGltaXQoaW50KiB2YWx1ZSwg
aW50IG1pbiwgaW50IG1heCkgeworICBpbnQgY2xhbXBlZCA9IHJ0Yzo6U2FmZUNsYW1wKCp2YWx1
ZSwgbWluLCBtYXgpOworICBib29sIHJlcyA9ICp2YWx1ZSA9PSBjbGFtcGVkOworICAqdmFsdWUg
PSBjbGFtcGVkOworICByZXR1cm4gcmVzOworfQorfSAgLy8gbmFtZXNwYWNlCiAKIEVjaG9DYW5j
ZWxsZXIzQ29uZmlnOjpFY2hvQ2FuY2VsbGVyM0NvbmZpZygpID0gZGVmYXVsdDsKIEVjaG9DYW5j
ZWxsZXIzQ29uZmlnOjpFY2hvQ2FuY2VsbGVyM0NvbmZpZyhjb25zdCBFY2hvQ2FuY2VsbGVyM0Nv
bmZpZyYgZSkgPQpAQCAtMTgsOSArNDcsNiBAQCBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RGVsYXk6
OkRlbGF5KCkgPSBkZWZhdWx0OwogRWNob0NhbmNlbGxlcjNDb25maWc6OkRlbGF5OjpEZWxheShj
b25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RGVsYXkmIGUpID0KICAgICBkZWZhdWx0OwogCi1F
Y2hvQ2FuY2VsbGVyM0NvbmZpZzo6TWFzazo6TWFzaygpID0gZGVmYXVsdDsKLUVjaG9DYW5jZWxs
ZXIzQ29uZmlnOjpNYXNrOjpNYXNrKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpNYXNrJiBt
KSA9IGRlZmF1bHQ7Ci0KIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpFY2hvTW9kZWw6OkVjaG9Nb2Rl
bCgpID0gZGVmYXVsdDsKIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpFY2hvTW9kZWw6OkVjaG9Nb2Rl
bCgKICAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RWNob01vZGVsJiBlKSA9IGRlZmF1
bHQ7CkBAIC01MSw0ICs3NywxNzkgQEAgRWNob0NhbmNlbGxlcjNDb25maWc6OlN1cHByZXNzb3I6
OlR1bmluZzo6VHVuaW5nKE1hc2tpbmdUaHJlc2hvbGRzIG1hc2tfbGYsCiBFY2hvQ2FuY2VsbGVy
M0NvbmZpZzo6U3VwcHJlc3Nvcjo6VHVuaW5nOjpUdW5pbmcoCiAgICAgY29uc3QgRWNob0NhbmNl
bGxlcjNDb25maWc6OlN1cHByZXNzb3I6OlR1bmluZyYgZSkgPSBkZWZhdWx0OwogCitib29sIEVj
aG9DYW5jZWxsZXIzQ29uZmlnOjpWYWxpZGF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZyogY29uZmln
KSB7CisgIFJUQ19EQ0hFQ0soY29uZmlnKTsKKyAgRWNob0NhbmNlbGxlcjNDb25maWcqIGMgPSBj
b25maWc7CisgIGJvb2wgcmVzID0gdHJ1ZTsKKworICBpZiAoYy0+ZGVsYXkuZG93bl9zYW1wbGlu
Z19mYWN0b3IgIT0gNCAmJgorICAgICAgYy0+ZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IgIT0g
OCkgeworICAgIGMtPmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9yID0gNDsKKyAgICByZXMgPSBm
YWxzZTsKKyAgfQorICBpZiAoYy0+ZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tzIDw9IDEgJiYK
KyAgICAgIGMtPmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MgPT0gMSkgeworICAgIGMt
PmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MgPSAwOworICAgIHJlcyA9IGZhbHNlOwor
ICB9CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5kZWxheS5kZWZhdWx0X2RlbGF5LCAwLCA1MDAw
KTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmRlbGF5Lm51bV9maWx0ZXJzLCAwLCA1MDAwKTsK
KyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmRlbGF5LmFwaV9jYWxsX2ppdHRlcl9ibG9ja3MsIDEs
IDUwMDApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZGVsYXkubWluX2VjaG9fcGF0aF9kZWxh
eV9ibG9ja3MsIDAsIDUwMDApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZGVsYXkuZGVsYXlf
aGVhZHJvb21fYmxvY2tzLCAwLCA1MDAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmRlbGF5
Lmh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MsIDAsIDUwMDApOworICByZXMgPSByZXMgJiBMaW1p
dCgmYy0+ZGVsYXkuaHlzdGVyZXNpc19saW1pdF8yX2Jsb2NrcywgMCwgNTAwMCk7CisgIHJlcyA9
IHJlcyAmIExpbWl0KCZjLT5kZWxheS5za2V3X2h5c3RlcmVzaXNfYmxvY2tzLCAwLCA1MDAwKTsK
KyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmRlbGF5LmZpeGVkX2NhcHR1cmVfZGVsYXlfc2FtcGxl
cywgMCwgNTAwMCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5kZWxheS5kZWxheV9lc3RpbWF0
ZV9zbW9vdGhpbmcsIDAuZiwgMS5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmRlbGF5LmRl
bGF5X2NhbmRpZGF0ZV9kZXRlY3Rpb25fdGhyZXNob2xkLCAwLmYsIDEuZik7CisgIHJlcyA9IHJl
cyAmIExpbWl0KCZjLT5kZWxheS5kZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcy5pbml0aWFsLCAx
LCAyNTApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZGVsYXkuZGVsYXlfc2VsZWN0aW9uX3Ro
cmVzaG9sZHMuY29udmVyZ2VkLCAxLCAyNTApOworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5m
aWx0ZXIubWFpbi5sZW5ndGhfYmxvY2tzLCAxLCA1MCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZj
LT5maWx0ZXIubWFpbi5sZWFrYWdlX2NvbnZlcmdlZCwgMC5mLCAxMDAwLmYpOworICByZXMgPSBy
ZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW4ubGVha2FnZV9kaXZlcmdlZCwgMC5mLCAxMDAwLmYp
OworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW4uZXJyb3JfZmxvb3IsIDAuZiwg
MTAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5tYWluLmVycm9yX2NlaWws
IDAuZiwgMTAwMDAwMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW4u
bm9pc2VfZ2F0ZSwgMC5mLCAxMDAwMDAwMDAuZik7CisKKyAgcmVzID0gcmVzICYgTGltaXQoJmMt
PmZpbHRlci5tYWluX2luaXRpYWwubGVuZ3RoX2Jsb2NrcywgMSwgNTApOworICByZXMgPSByZXMg
JiBMaW1pdCgmYy0+ZmlsdGVyLm1haW5faW5pdGlhbC5sZWFrYWdlX2NvbnZlcmdlZCwgMC5mLCAx
MDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW5faW5pdGlhbC5sZWFr
YWdlX2RpdmVyZ2VkLCAwLmYsIDEwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0
ZXIubWFpbl9pbml0aWFsLmVycm9yX2Zsb29yLCAwLmYsIDEwMDAuZik7CisgIHJlcyA9IHJlcyAm
IExpbWl0KCZjLT5maWx0ZXIubWFpbl9pbml0aWFsLmVycm9yX2NlaWwsIDAuZiwgMTAwMDAwMDAw
LmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW5faW5pdGlhbC5ub2lzZV9n
YXRlLCAwLmYsIDEwMDAwMDAwMC5mKTsKKworICBpZiAoYy0+ZmlsdGVyLm1haW4ubGVuZ3RoX2Js
b2NrcyA8IGMtPmZpbHRlci5tYWluX2luaXRpYWwubGVuZ3RoX2Jsb2NrcykgeworICAgIGMtPmZp
bHRlci5tYWluX2luaXRpYWwubGVuZ3RoX2Jsb2NrcyA9IGMtPmZpbHRlci5tYWluLmxlbmd0aF9i
bG9ja3M7CisgICAgcmVzID0gZmFsc2U7CisgIH0KKworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+
ZmlsdGVyLnNoYWRvdy5sZW5ndGhfYmxvY2tzLCAxLCA1MCk7CisgIHJlcyA9IHJlcyAmIExpbWl0
KCZjLT5maWx0ZXIuc2hhZG93LnJhdGUsIDAuZiwgMS5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQo
JmMtPmZpbHRlci5zaGFkb3cubm9pc2VfZ2F0ZSwgMC5mLCAxMDAwMDAwMDAuZik7CisKKyAgcmVz
ID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5zaGFkb3dfaW5pdGlhbC5sZW5ndGhfYmxvY2tzLCAx
LCA1MCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIuc2hhZG93X2luaXRpYWwucmF0
ZSwgMC5mLCAxLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLnNoYWRvd19pbml0
aWFsLm5vaXNlX2dhdGUsIDAuZiwgMTAwMDAwMDAwLmYpOworCisgIGlmIChjLT5maWx0ZXIuc2hh
ZG93Lmxlbmd0aF9ibG9ja3MgPCBjLT5maWx0ZXIuc2hhZG93X2luaXRpYWwubGVuZ3RoX2Jsb2Nr
cykgeworICAgIGMtPmZpbHRlci5zaGFkb3dfaW5pdGlhbC5sZW5ndGhfYmxvY2tzID0gYy0+Zmls
dGVyLnNoYWRvdy5sZW5ndGhfYmxvY2tzOworICAgIHJlcyA9IGZhbHNlOworICB9CisKKyAgcmVz
ID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5jb25maWdfY2hhbmdlX2R1cmF0aW9uX2Jsb2Nrcywg
MCwgMTAwMDAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5pbml0aWFsX3N0YXRl
X3NlY29uZHMsIDAuZiwgMTAwLmYpOworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lcmxlLm1p
biwgMS5mLCAxMDAwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lcmxlLm1heF9sLCAx
LmYsIDEwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVybGUubWF4X2gsIDEuZiwg
MTAwMDAwLmYpOworICBpZiAoYy0+ZXJsZS5taW4gPiBjLT5lcmxlLm1heF9sIHx8IGMtPmVybGUu
bWluID4gYy0+ZXJsZS5tYXhfaCkgeworICAgIGMtPmVybGUubWluID0gc3RkOjptaW4oYy0+ZXJs
ZS5tYXhfbCwgYy0+ZXJsZS5tYXhfaCk7CisgICAgcmVzID0gZmFsc2U7CisgIH0KKyAgcmVzID0g
cmVzICYgTGltaXQoJmMtPmVybGUubnVtX3NlY3Rpb25zLCAxLCBjLT5maWx0ZXIubWFpbi5sZW5n
dGhfYmxvY2tzKTsKKworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZXBfc3RyZW5ndGgubGYsIDAu
ZiwgMTAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVwX3N0cmVuZ3RoLm1mLCAw
LmYsIDEwMDAwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lcF9zdHJlbmd0aC5oZiwg
MC5mLCAxMDAwMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZXBfc3RyZW5ndGguZGVm
YXVsdF9sZW4sIC0xLmYsIDEuZik7CisKKyAgcmVzID0KKyAgICAgIHJlcyAmIExpbWl0KCZjLT5l
Y2hvX2F1ZGliaWxpdHkubG93X3JlbmRlcl9saW1pdCwgMC5mLCAzMjc2OC5mICogMzI3NjguZik7
CisgIHJlcyA9IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5lY2hvX2F1ZGliaWxpdHkubm9ybWFs
X3JlbmRlcl9saW1pdCwgMC5mLCAzMjc2OC5mICogMzI3NjguZik7CisgIHJlcyA9IHJlcyAmIExp
bWl0KCZjLT5lY2hvX2F1ZGliaWxpdHkuZmxvb3JfcG93ZXIsIDAuZiwgMzI3NjguZiAqIDMyNzY4
LmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19hdWRpYmlsaXR5LmF1ZGliaWxpdHlf
dGhyZXNob2xkX2xmLCAwLmYsCisgICAgICAgICAgICAgICAgICAgIDMyNzY4LmYgKiAzMjc2OC5m
KTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fYXVkaWJpbGl0eS5hdWRpYmlsaXR5X3Ro
cmVzaG9sZF9tZiwgMC5mLAorICAgICAgICAgICAgICAgICAgICAzMjc2OC5mICogMzI3NjguZik7
CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJl
c2hvbGRfaGYsIDAuZiwKKyAgICAgICAgICAgICAgICAgICAgMzI3NjguZiAqIDMyNzY4LmYpOwor
CisgIHJlcyA9IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5yZW5kZXJfbGV2ZWxzLmFjdGl2ZV9y
ZW5kZXJfbGltaXQsIDAuZiwgMzI3NjguZiAqIDMyNzY4LmYpOworICByZXMgPSByZXMgJiBMaW1p
dCgmYy0+cmVuZGVyX2xldmVscy5wb29yX2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0LCAwLmYsCisg
ICAgICAgICAgICAgICAgICAgIDMyNzY4LmYgKiAzMjc2OC5mKTsKKyAgcmVzID0gcmVzICYgTGlt
aXQoJmMtPnJlbmRlcl9sZXZlbHMucG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdF9kczgsIDAu
ZiwKKyAgICAgICAgICAgICAgICAgICAgMzI3NjguZiAqIDMyNzY4LmYpOworCisgIHJlcyA9Cisg
ICAgICByZXMgJiBMaW1pdCgmYy0+ZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuaW5p
dGlhbF9nYWluLCAwLmYsIDEuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX3JlbW92
YWxfY29udHJvbC5nYWluX3JhbXB1cC5maXJzdF9ub25femVyb19nYWluLAorICAgICAgICAgICAg
ICAgICAgICAwLmYsIDEuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX3JlbW92YWxf
Y29udHJvbC5nYWluX3JhbXB1cC5ub25femVyb19nYWluX2Jsb2NrcywKKyAgICAgICAgICAgICAg
ICAgICAgMCwgMTAwMDAwKTsKKyAgcmVzID0gcmVzICYKKyAgICAgICAgTGltaXQoJmMtPmVjaG9f
cmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmZ1bGxfZ2Fpbl9ibG9ja3MsIDAsIDEwMDAwMCk7
CisKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9kZWwubm9pc2VfZmxvb3JfaG9sZCwg
MCwgMTAwMCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX21vZGVsLm1pbl9ub2lzZV9m
bG9vcl9wb3dlciwgMCwgMjAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9f
bW9kZWwuc3RhdGlvbmFyeV9nYXRlX3Nsb3BlLCAwLCAxMDAwMDAwLmYpOworICByZXMgPSByZXMg
JiBMaW1pdCgmYy0+ZWNob19tb2RlbC5ub2lzZV9nYXRlX3Bvd2VyLCAwLCAxMDAwMDAwLmYpOwor
ICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19tb2RlbC5ub2lzZV9nYXRlX3Nsb3BlLCAwLCAx
MDAwMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19tb2RlbC5yZW5kZXJfcHJl
X3dpbmRvd19zaXplLCAwLCAxMDApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19tb2Rl
bC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6ZSwgMCwgMTAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQo
JmMtPmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0LCAwLCAxMDApOworICBy
ZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6ZV9p
bml0LCAwLCAxMDApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19tb2RlbC5ub25saW5l
YXJfaG9sZCwgMCwgMTAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9kZWwubm9u
bGluZWFyX3JlbGVhc2UsIDAsIDEuZik7CisKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPnN1cHBy
ZXNzb3IubmVhcmVuZF9hdmVyYWdlX2Jsb2NrcywgMSwgNTAwMCk7CisKKyAgcmVzID0gcmVzICYK
KyAgICAgICAgTGltaXQoJmMtPnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2xmLmVucl90
cmFuc3BhcmVudCwgMC5mLCAxMDAuZik7CisgIHJlcyA9IHJlcyAmCisgICAgICAgIExpbWl0KCZj
LT5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19sZi5lbnJfc3VwcHJlc3MsIDAuZiwgMTAw
LmYpOworICByZXMgPSByZXMgJgorICAgICAgICBMaW1pdCgmYy0+c3VwcHJlc3Nvci5ub3JtYWxf
dHVuaW5nLm1hc2tfbGYuZW1yX3RyYW5zcGFyZW50LCAwLmYsIDEwMC5mKTsKKyAgcmVzID0gcmVz
ICYKKyAgICAgICAgTGltaXQoJmMtPnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2hmLmVu
cl90cmFuc3BhcmVudCwgMC5mLCAxMDAuZik7CisgIHJlcyA9IHJlcyAmCisgICAgICAgIExpbWl0
KCZjLT5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5lbnJfc3VwcHJlc3MsIDAuZiwg
MTAwLmYpOworICByZXMgPSByZXMgJgorICAgICAgICBMaW1pdCgmYy0+c3VwcHJlc3Nvci5ub3Jt
YWxfdHVuaW5nLm1hc2tfaGYuZW1yX3RyYW5zcGFyZW50LCAwLmYsIDEwMC5mKTsKKyAgcmVzID0g
cmVzICYgTGltaXQoJmMtPnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXhfaW5jX2ZhY3Rvciwg
MC5mLCAxMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLm5vcm1hbF90
dW5pbmcubWF4X2RlY19mYWN0b3JfbGYsIDAuZiwgMTAwLmYpOworCisgIHJlcyA9IHJlcyAmIExp
bWl0KCZjLT5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfbGYuZW5yX3RyYW5zcGFyZW50
LCAwLmYsCisgICAgICAgICAgICAgICAgICAgIDEwMC5mKTsKKyAgcmVzID0gcmVzICYKKyAgICAg
ICAgTGltaXQoJmMtPnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZi5lbnJfc3VwcHJl
c3MsIDAuZiwgMTAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5uZWFy
ZW5kX3R1bmluZy5tYXNrX2xmLmVtcl90cmFuc3BhcmVudCwgMC5mLAorICAgICAgICAgICAgICAg
ICAgICAxMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLm5lYXJlbmRf
dHVuaW5nLm1hc2tfaGYuZW5yX3RyYW5zcGFyZW50LCAwLmYsCisgICAgICAgICAgICAgICAgICAg
IDEwMC5mKTsKKyAgcmVzID0gcmVzICYKKyAgICAgICAgTGltaXQoJmMtPnN1cHByZXNzb3IubmVh
cmVuZF90dW5pbmcubWFza19oZi5lbnJfc3VwcHJlc3MsIDAuZiwgMTAwLmYpOworICByZXMgPSBy
ZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2hmLmVtcl90cmFu
c3BhcmVudCwgMC5mLAorICAgICAgICAgICAgICAgICAgICAxMDAuZik7CisgIHJlcyA9IHJlcyAm
IExpbWl0KCZjLT5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1heF9pbmNfZmFjdG9yLCAwLmYs
IDEwMC5mKTsKKyAgcmVzID0KKyAgICAgIHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLm5lYXJl
bmRfdHVuaW5nLm1heF9kZWNfZmFjdG9yX2xmLCAwLmYsIDEwMC5mKTsKKworICByZXMgPSByZXMg
JiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5lbnJfdGhy
ZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAwLmYsIDEwMDAwMDAuZik7CisgIHJlcyA9IHJl
cyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLnNucl90
aHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgIDAuZiwgMTAwMDAwMC5mKTsKKyAgcmVzID0g
cmVzICYgTGltaXQoJmMtPnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uaG9s
ZF9kdXJhdGlvbiwgMCwKKyAgICAgICAgICAgICAgICAgICAgMTAwMDApOworICByZXMgPSByZXMg
JiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi50cmlnZ2Vy
X3RocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgMCwgMTAwMDApOworCisgIHJlcyA9IHJl
cyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLmhpZ2hfYmFuZHNfc3VwcHJlc3Npb24uZW5yX3RocmVz
aG9sZCwgMC5mLAorICAgICAgICAgICAgICAgICAgICAxMDAwMDAwLmYpOworICByZXMgPSByZXMg
JiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5oaWdoX2JhbmRzX3N1cHByZXNzaW9uLm1heF9nYWluX2R1
cmluZ19lY2hvLAorICAgICAgICAgICAgICAgICAgICAwLmYsIDEuZik7CisKKyAgcmVzID0gcmVz
ICYgTGltaXQoJmMtPnN1cHByZXNzb3IuZmxvb3JfZmlyc3RfaW5jcmVhc2UsIDAuZiwgMTAwMDAw
MC5mKTsKKworICBpZiAoYy0+ZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tzID4KKyAgICAgIGMt
PmZpbHRlci5tYWluX2luaXRpYWwubGVuZ3RoX2Jsb2NrcyAtIDEpIHsKKyAgICBjLT5kZWxheS5k
ZWxheV9oZWFkcm9vbV9ibG9ja3MgPSBjLT5maWx0ZXIubWFpbl9pbml0aWFsLmxlbmd0aF9ibG9j
a3MgLSAxOworICAgIHJlcyA9IGZhbHNlOworICB9CisKKyAgcmV0dXJuIHJlczsKK30KIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5j
ZWxsZXIzX2NvbmZpZy5oCmluZGV4IGU3Mzc2ZWQ3YmNkM2M0ZWI5YzgyNmM0MzQ0MTcyMDUxYWQ2
ZWJkZDUuLmVhNmU1MWJhZjljNTNkMTIzNmYwNzU5NTU2YjI2ZTJkOTIxYWM3NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9l
Y2hvX2NhbmNlbGxlcjNfY29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaApAQCAtMTMs
MTggKzEzLDMxIEBACiAKICNpbmNsdWRlIDxzdGRkZWYuaD4gIC8vIHNpemVfdAogCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
IC8vIENvbmZpZ3VyYXRpb24gc3RydWN0IGZvciBFY2hvQ2FuY2VsbGVyMwotc3RydWN0IEVjaG9D
YW5jZWxsZXIzQ29uZmlnIHsKK3N0cnVjdCBSVENfRVhQT1JUIEVjaG9DYW5jZWxsZXIzQ29uZmln
IHsKKyAgLy8gQ2hlY2tzIGFuZCB1cGRhdGVzIHRoZSBjb25maWcgcGFyYW1ldGVycyB0byBsaWUg
d2l0aGluIChtb3N0bHkpIHJlYXNvbmFibGUKKyAgLy8gcmFuZ2VzLiBSZXR1cm5zIHRydWUgaWYg
YW5kIG9ubHkgb2YgdGhlIGNvbmZpZyBkaWQgbm90IG5lZWQgdG8gYmUgY2hhbmdlZC4KKyAgc3Rh
dGljIGJvb2wgVmFsaWRhdGUoRWNob0NhbmNlbGxlcjNDb25maWcqIGNvbmZpZyk7CisKICAgRWNo
b0NhbmNlbGxlcjNDb25maWcoKTsKICAgRWNob0NhbmNlbGxlcjNDb25maWcoY29uc3QgRWNob0Nh
bmNlbGxlcjNDb25maWcmIGUpOworCisgIHN0cnVjdCBCdWZmZXJpbmcgeworICAgIGJvb2wgdXNl
X25ld19yZW5kZXJfYnVmZmVyaW5nID0gdHJ1ZTsKKyAgICBzaXplX3QgZXhjZXNzX3JlbmRlcl9k
ZXRlY3Rpb25faW50ZXJ2YWxfYmxvY2tzID0gMjUwOworICAgIHNpemVfdCBtYXhfYWxsb3dlZF9l
eGNlc3NfcmVuZGVyX2Jsb2NrcyA9IDg7CisgIH0gYnVmZmVyaW5nOworCiAgIHN0cnVjdCBEZWxh
eSB7CiAgICAgRGVsYXkoKTsKICAgICBEZWxheShjb25zdCBEZWxheSYgZSk7CiAgICAgc2l6ZV90
IGRlZmF1bHRfZGVsYXkgPSA1OwogICAgIHNpemVfdCBkb3duX3NhbXBsaW5nX2ZhY3RvciA9IDQ7
Ci0gICAgc2l6ZV90IG51bV9maWx0ZXJzID0gNjsKKyAgICBzaXplX3QgbnVtX2ZpbHRlcnMgPSA1
OwogICAgIHNpemVfdCBhcGlfY2FsbF9qaXR0ZXJfYmxvY2tzID0gMjY7CiAgICAgc2l6ZV90IG1p
bl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tzID0gMDsKICAgICBzaXplX3QgZGVsYXlfaGVhZHJvb21f
YmxvY2tzID0gMjsKQEAgLTM3LDcgKzUwLDcgQEAgc3RydWN0IEVjaG9DYW5jZWxsZXIzQ29uZmln
IHsKICAgICBzdHJ1Y3QgRGVsYXlTZWxlY3Rpb25UaHJlc2hvbGRzIHsKICAgICAgIGludCBpbml0
aWFsOwogICAgICAgaW50IGNvbnZlcmdlZDsKLSAgICB9IGRlbGF5X3NlbGVjdGlvbl90aHJlc2hv
bGRzID0gezI1LCAyNX07CisgICAgfSBkZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcyA9IHs1LCAy
MH07CiAgIH0gZGVsYXk7CiAKICAgc3RydWN0IEZpbHRlciB7CkBAIC00Niw2ICs1OSw3IEBAIHN0
cnVjdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyB7CiAgICAgICBmbG9hdCBsZWFrYWdlX2NvbnZlcmdl
ZDsKICAgICAgIGZsb2F0IGxlYWthZ2VfZGl2ZXJnZWQ7CiAgICAgICBmbG9hdCBlcnJvcl9mbG9v
cjsKKyAgICAgIGZsb2F0IGVycm9yX2NlaWw7CiAgICAgICBmbG9hdCBub2lzZV9nYXRlOwogICAg
IH07CiAKQEAgLTU1LDEwICs2OSwxMSBAQCBzdHJ1Y3QgRWNob0NhbmNlbGxlcjNDb25maWcgewog
ICAgICAgZmxvYXQgbm9pc2VfZ2F0ZTsKICAgICB9OwogCi0gICAgTWFpbkNvbmZpZ3VyYXRpb24g
bWFpbiA9IHsxMywgMC4wMDAwNWYsIDAuMDFmLCAwLjFmLCAyMDA3NTM0NC5mfTsKKyAgICBNYWlu
Q29uZmlndXJhdGlvbiBtYWluID0gezEzLCAwLjAwMDA1ZiwgMC4wNWYsIDAuMDAxZiwgMi5mLCAy
MDA3NTM0NC5mfTsKICAgICBTaGFkb3dDb25maWd1cmF0aW9uIHNoYWRvdyA9IHsxMywgMC43Ziwg
MjAwNzUzNDQuZn07CiAKLSAgICBNYWluQ29uZmlndXJhdGlvbiBtYWluX2luaXRpYWwgPSB7MTIs
IDAuMDA1ZiwgMC41ZiwgMC4wMDFmLCAyMDA3NTM0NC5mfTsKKyAgICBNYWluQ29uZmlndXJhdGlv
biBtYWluX2luaXRpYWwgPSB7MTIsICAgICAwLjAwNWYsIDAuNWYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMDAxZiwgMi5mLCAgICAyMDA3NTM0NC5mfTsKICAgICBT
aGFkb3dDb25maWd1cmF0aW9uIHNoYWRvd19pbml0aWFsID0gezEyLCAwLjlmLCAyMDA3NTM0NC5m
fTsKIAogICAgIHNpemVfdCBjb25maWdfY2hhbmdlX2R1cmF0aW9uX2Jsb2NrcyA9IDI1MDsKQEAg
LTcyLDM4ICs4NywxOSBAQCBzdHJ1Y3QgRWNob0NhbmNlbGxlcjNDb25maWcgewogICAgIGZsb2F0
IG1heF9sID0gNC5mOwogICAgIGZsb2F0IG1heF9oID0gMS41ZjsKICAgICBib29sIG9uc2V0X2Rl
dGVjdGlvbiA9IHRydWU7CisgICAgc2l6ZV90IG51bV9zZWN0aW9ucyA9IDE7CiAgIH0gZXJsZTsK
IAogICBzdHJ1Y3QgRXBTdHJlbmd0aCB7CiAgICAgZmxvYXQgbGYgPSAxLmY7CiAgICAgZmxvYXQg
bWYgPSAxLmY7CiAgICAgZmxvYXQgaGYgPSAxLmY7Ci0gICAgZmxvYXQgZGVmYXVsdF9sZW4gPSAw
Ljg4ZjsKKyAgICBmbG9hdCBkZWZhdWx0X2xlbiA9IDAuODNmOwogICAgIGJvb2wgcmV2ZXJiX2Jh
c2VkX29uX3JlbmRlciA9IHRydWU7CiAgICAgYm9vbCBlY2hvX2Nhbl9zYXR1cmF0ZSA9IHRydWU7
CiAgICAgYm9vbCBib3VuZGVkX2VybCA9IGZhbHNlOwogICB9IGVwX3N0cmVuZ3RoOwogCi0gIHN0
cnVjdCBNYXNrIHsKLSAgICBNYXNrKCk7Ci0gICAgTWFzayhjb25zdCBNYXNrJiBtKTsKLSAgICBm
bG9hdCBtMCA9IDAuMWY7Ci0gICAgZmxvYXQgbTEgPSAwLjAxZjsKLSAgICBmbG9hdCBtMiA9IDAu
MDAwMWY7Ci0gICAgZmxvYXQgbTMgPSAwLjAxZjsKLSAgICBmbG9hdCBtNSA9IDAuMDFmOwotICAg
IGZsb2F0IG02ID0gMC4wMDAxZjsKLSAgICBmbG9hdCBtNyA9IDAuMDFmOwotICAgIGZsb2F0IG04
ID0gMC4wMDAxZjsKLSAgICBmbG9hdCBtOSA9IDAuMWY7Ci0KLSAgICBmbG9hdCBnYWluX2N1cnZl
X29mZnNldCA9IDEuNDVmOwotICAgIGZsb2F0IGdhaW5fY3VydmVfc2xvcGUgPSA1LmY7Ci0gICAg
ZmxvYXQgdGVtcG9yYWxfbWFza2luZ19sZiA9IDAuOWY7Ci0gICAgZmxvYXQgdGVtcG9yYWxfbWFz
a2luZ19oZiA9IDAuNmY7Ci0gICAgc2l6ZV90IHRlbXBvcmFsX21hc2tpbmdfbGZfYmFuZHMgPSAz
OwotICB9IGdhaW5fbWFzazsKLQogICBzdHJ1Y3QgRWNob0F1ZGliaWxpdHkgewogICAgIGZsb2F0
IGxvd19yZW5kZXJfbGltaXQgPSA0ICogNjQuZjsKICAgICBmbG9hdCBub3JtYWxfcmVuZGVyX2xp
bWl0ID0gNjQuZjsKQEAgLTExMSw3ICsxMDcsNyBAQCBzdHJ1Y3QgRWNob0NhbmNlbGxlcjNDb25m
aWcgewogICAgIGZsb2F0IGF1ZGliaWxpdHlfdGhyZXNob2xkX2xmID0gMTA7CiAgICAgZmxvYXQg
YXVkaWJpbGl0eV90aHJlc2hvbGRfbWYgPSAxMDsKICAgICBmbG9hdCBhdWRpYmlsaXR5X3RocmVz
aG9sZF9oZiA9IDEwOwotICAgIGJvb2wgdXNlX3N0YXRpb25hcnlfcHJvcGVydGllcyA9IHRydWU7
CisgICAgYm9vbCB1c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVzID0gZmFsc2U7CiAgICAgYm9vbCB1
c2Vfc3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdCA9IGZhbHNlOwogICB9IGVjaG9fYXVk
aWJpbGl0eTsKIApAQCAtMTc2LDIwICsxNzIsMjIgQEAgc3RydWN0IEVjaG9DYW5jZWxsZXIzQ29u
ZmlnIHsKICAgICAgIGZsb2F0IG1heF9kZWNfZmFjdG9yX2xmOwogICAgIH07CiAKLSAgICBUdW5p
bmcgbm9ybWFsX3R1bmluZyA9IFR1bmluZyhNYXNraW5nVGhyZXNob2xkcyguMmYsIC4zZiwgLjNm
KSwKKyAgICBUdW5pbmcgbm9ybWFsX3R1bmluZyA9IFR1bmluZyhNYXNraW5nVGhyZXNob2xkcygu
M2YsIC40ZiwgLjNmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXNraW5n
VGhyZXNob2xkcyguMDdmLCAuMWYsIC4zZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi4wZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI1Zik7Ci0g
ICAgVHVuaW5nIG5lYXJlbmRfdHVuaW5nID0gVHVuaW5nKE1hc2tpbmdUaHJlc2hvbGRzKC4yZiwg
LjNmLCAuM2YpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXNraW5nVGhy
ZXNob2xkcyguMDdmLCAuMWYsIC4zZiksCisgICAgVHVuaW5nIG5lYXJlbmRfdHVuaW5nID0gVHVu
aW5nKE1hc2tpbmdUaHJlc2hvbGRzKDEuMDlmLCAxLjFmLCAuM2YpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNYXNraW5nVGhyZXNob2xkcyguMWYsIC4zZiwgLjNmKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4wZiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yNWYpOwogCiAgICAgc3RydWN0IERvbWluYW50TmVhcmVuZERl
dGVjdGlvbiB7Ci0gICAgICBmbG9hdCBlbnJfdGhyZXNob2xkID0gMTAuZjsKLSAgICAgIGZsb2F0
IHNucl90aHJlc2hvbGQgPSAxMC5mOwotICAgICAgaW50IGhvbGRfZHVyYXRpb24gPSAyNTsKLSAg
ICAgIGludCB0cmlnZ2VyX3RocmVzaG9sZCA9IDE1OworICAgICAgZmxvYXQgZW5yX3RocmVzaG9s
ZCA9IDQuZjsKKyAgICAgIGZsb2F0IGVucl9leGl0X3RocmVzaG9sZCA9IC4xZjsKKyAgICAgIGZs
b2F0IHNucl90aHJlc2hvbGQgPSAzMC5mOworICAgICAgaW50IGhvbGRfZHVyYXRpb24gPSA1MDsK
KyAgICAgIGludCB0cmlnZ2VyX3RocmVzaG9sZCA9IDEyOworICAgICAgYm9vbCB1c2VfZHVyaW5n
X2luaXRpYWxfcGhhc2UgPSB0cnVlOwogICAgIH0gZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb247
CiAKICAgICBzdHJ1Y3QgSGlnaEJhbmRzU3VwcHJlc3Npb24gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2Vs
bGVyM19jb25maWdfanNvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb24uY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDFhODMxY2I0Yzk5NjA4MmNjYTA4MjU1ZGY1ZGI4NGVmZmIxZWRmMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
by9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb24uY2MKQEAgLTAsMCArMSw1ODMgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29u
ZmlnX2pzb24uaCIKKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9q
c29uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgorCitu
YW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7Cit2b2lkIFJlYWRQYXJhbShjb25zdCBKc29u
OjpWYWx1ZSYgcm9vdCwgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwgYm9vbCogcGFyYW0pIHsKKyAg
UlRDX0RDSEVDSyhwYXJhbSk7CisgIGJvb2wgdjsKKyAgaWYgKHJ0Yzo6R2V0Qm9vbEZyb21Kc29u
T2JqZWN0KHJvb3QsIHBhcmFtX25hbWUsICZ2KSkgeworICAgICpwYXJhbSA9IHY7CisgIH0KK30K
Kwordm9pZCBSZWFkUGFyYW0oY29uc3QgSnNvbjo6VmFsdWUmIHJvb3QsIHN0ZDo6c3RyaW5nIHBh
cmFtX25hbWUsIHNpemVfdCogcGFyYW0pIHsKKyAgUlRDX0RDSEVDSyhwYXJhbSk7CisgIGludCB2
OworICBpZiAocnRjOjpHZXRJbnRGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmdikp
IHsKKyAgICBSVENfRENIRUNLX0dFKHYsIDApOworICAgICpwYXJhbSA9IHY7CisgIH0KK30KKwor
dm9pZCBSZWFkUGFyYW0oY29uc3QgSnNvbjo6VmFsdWUmIHJvb3QsIHN0ZDo6c3RyaW5nIHBhcmFt
X25hbWUsIGludCogcGFyYW0pIHsKKyAgUlRDX0RDSEVDSyhwYXJhbSk7CisgIGludCB2OworICBp
ZiAocnRjOjpHZXRJbnRGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmdikpIHsKKyAg
ICAqcGFyYW0gPSB2OworICB9Cit9CisKK3ZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVl
JiByb290LCBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLCBmbG9hdCogcGFyYW0pIHsKKyAgUlRDX0RD
SEVDSyhwYXJhbSk7CisgIGRvdWJsZSB2OworICBpZiAocnRjOjpHZXREb3VibGVGcm9tSnNvbk9i
amVjdChyb290LCBwYXJhbV9uYW1lLCAmdikpIHsKKyAgICAqcGFyYW0gPSBzdGF0aWNfY2FzdDxm
bG9hdD4odik7CisgIH0KK30KKwordm9pZCBSZWFkUGFyYW0oY29uc3QgSnNvbjo6VmFsdWUmIHJv
b3QsCisgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLAorICAgICAgICAgICAg
ICAgRWNob0NhbmNlbGxlcjNDb25maWc6OkZpbHRlcjo6TWFpbkNvbmZpZ3VyYXRpb24qIHBhcmFt
KSB7CisgIFJUQ19EQ0hFQ0socGFyYW0pOworICBKc29uOjpWYWx1ZSBqc29uX2FycmF5OworICBp
ZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsIHBhcmFtX25hbWUsICZqc29uX2Fy
cmF5KSkgeworICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsKKyAgICBydGM6Okpzb25BcnJheVRv
RG91YmxlVmVjdG9yKGpzb25fYXJyYXksICZ2KTsKKyAgICBpZiAodi5zaXplKCkgIT0gNikgewor
ICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkluY29ycmVjdCBhcnJheSBzaXplIGZvciAiIDw8
IHBhcmFtX25hbWU7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHBhcmFtLT5sZW5ndGhfYmxv
Y2tzID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2WzBdKTsKKyAgICBwYXJhbS0+bGVha2FnZV9jb252
ZXJnZWQgPSBzdGF0aWNfY2FzdDxmbG9hdD4odlsxXSk7CisgICAgcGFyYW0tPmxlYWthZ2VfZGl2
ZXJnZWQgPSBzdGF0aWNfY2FzdDxmbG9hdD4odlsyXSk7CisgICAgcGFyYW0tPmVycm9yX2Zsb29y
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbM10pOworICAgIHBhcmFtLT5lcnJvcl9jZWlsID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHZbNF0pOworICAgIHBhcmFtLT5ub2lzZV9nYXRlID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHZbNV0pOworICB9Cit9CisKK3ZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZh
bHVlJiByb290LAorICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwKKyAgICAg
ICAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpGaWx0ZXI6OlNoYWRvd0NvbmZpZ3VyYXRp
b24qIHBhcmFtKSB7CisgIFJUQ19EQ0hFQ0socGFyYW0pOworICBKc29uOjpWYWx1ZSBqc29uX2Fy
cmF5OworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsIHBhcmFtX25hbWUs
ICZqc29uX2FycmF5KSkgeworICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsKKyAgICBydGM6Okpz
b25BcnJheVRvRG91YmxlVmVjdG9yKGpzb25fYXJyYXksICZ2KTsKKyAgICBpZiAodi5zaXplKCkg
IT0gMykgeworICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkluY29ycmVjdCBhcnJheSBzaXpl
IGZvciAiIDw8IHBhcmFtX25hbWU7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHBhcmFtLT5s
ZW5ndGhfYmxvY2tzID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2WzBdKTsKKyAgICBwYXJhbS0+cmF0
ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzFdKTsKKyAgICBwYXJhbS0+bm9pc2VfZ2F0ZSA9IHN0
YXRpY19jYXN0PGZsb2F0Pih2WzJdKTsKKyAgfQorfQorCit2b2lkIFJlYWRQYXJhbShjb25zdCBK
c29uOjpWYWx1ZSYgcm9vdCwKKyAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUs
CisgICAgICAgICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6U3VwcHJlc3Nvcjo6TWFza2lu
Z1RocmVzaG9sZHMqIHBhcmFtKSB7CisgIFJUQ19EQ0hFQ0socGFyYW0pOworICBKc29uOjpWYWx1
ZSBqc29uX2FycmF5OworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsIHBh
cmFtX25hbWUsICZqc29uX2FycmF5KSkgeworICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsKKyAg
ICBydGM6Okpzb25BcnJheVRvRG91YmxlVmVjdG9yKGpzb25fYXJyYXksICZ2KTsKKyAgICBpZiAo
di5zaXplKCkgIT0gMykgeworICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkluY29ycmVjdCBh
cnJheSBzaXplIGZvciAiIDw8IHBhcmFtX25hbWU7CisgICAgICByZXR1cm47CisgICAgfQorICAg
IHBhcmFtLT5lbnJfdHJhbnNwYXJlbnQgPSBzdGF0aWNfY2FzdDxmbG9hdD4odlswXSk7CisgICAg
cGFyYW0tPmVucl9zdXBwcmVzcyA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzFdKTsKKyAgICBwYXJh
bS0+ZW1yX3RyYW5zcGFyZW50ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbMl0pOworICB9Cit9Cit9
ICAvLyBuYW1lc3BhY2UKKwordm9pZCBBZWMzQ29uZmlnRnJvbUpzb25TdHJpbmcoYWJzbDo6c3Ry
aW5nX3ZpZXcganNvbl9zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFY2hv
Q2FuY2VsbGVyM0NvbmZpZyogY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCogcGFyc2luZ19zdWNjZXNzZnVsKSB7CisgIFJUQ19EQ0hFQ0soY29uZmlnKTsKKyAgUlRD
X0RDSEVDSyhwYXJzaW5nX3N1Y2Nlc3NmdWwpOworICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY2Zn
ID0gKmNvbmZpZzsKKyAgY2ZnID0gRWNob0NhbmNlbGxlcjNDb25maWcoKTsKKyAgKnBhcnNpbmdf
c3VjY2Vzc2Z1bCA9IHRydWU7CisKKyAgSnNvbjo6VmFsdWUgcm9vdDsKKyAgYm9vbCBzdWNjZXNz
ID0gSnNvbjo6UmVhZGVyKCkucGFyc2Uoc3RkOjpzdHJpbmcoanNvbl9zdHJpbmcpLCByb290KTsK
KyAgaWYgKCFzdWNjZXNzKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkluY29ycmVjdCBK
U09OIGZvcm1hdDogIiA8PCBqc29uX3N0cmluZzsKKyAgICAqcGFyc2luZ19zdWNjZXNzZnVsID0g
ZmFsc2U7CisgICAgcmV0dXJuOworICB9CisKKyAgSnNvbjo6VmFsdWUgYWVjM19yb290OworICBz
dWNjZXNzID0gcnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsICJhZWMzIiwgJmFlYzNf
cm9vdCk7CisgIGlmICghc3VjY2VzcykgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJNaXNz
aW5nIEFFQzMgY29uZmlnIGZpZWxkOiAiIDw8IGpzb25fc3RyaW5nOworICAgICpwYXJzaW5nX3N1
Y2Nlc3NmdWwgPSBmYWxzZTsKKyAgICByZXR1cm47CisgIH0KKworICBKc29uOjpWYWx1ZSBzZWN0
aW9uOworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsICJidWZmZXJpbmci
LCAmc2VjdGlvbikpIHsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInVzZV9uZXdfcmVuZGVyX2J1
ZmZlcmluZyIsCisgICAgICAgICAgICAgICZjZmcuYnVmZmVyaW5nLnVzZV9uZXdfcmVuZGVyX2J1
ZmZlcmluZyk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJleGNlc3NfcmVuZGVyX2RldGVjdGlv
bl9pbnRlcnZhbF9ibG9ja3MiLAorICAgICAgICAgICAgICAmY2ZnLmJ1ZmZlcmluZy5leGNlc3Nf
cmVuZGVyX2RldGVjdGlvbl9pbnRlcnZhbF9ibG9ja3MpOworICAgIFJlYWRQYXJhbShzZWN0aW9u
LCAibWF4X2FsbG93ZWRfZXhjZXNzX3JlbmRlcl9ibG9ja3MiLAorICAgICAgICAgICAgICAmY2Zn
LmJ1ZmZlcmluZy5tYXhfYWxsb3dlZF9leGNlc3NfcmVuZGVyX2Jsb2Nrcyk7CisgIH0KKworICBp
ZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KGFlYzNfcm9vdCwgImRlbGF5IiwgJnNlY3Rp
b24pKSB7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJkZWZhdWx0X2RlbGF5IiwgJmNmZy5kZWxh
eS5kZWZhdWx0X2RlbGF5KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImRvd25fc2FtcGxpbmdf
ZmFjdG9yIiwgJmNmZy5kZWxheS5kb3duX3NhbXBsaW5nX2ZhY3Rvcik7CisgICAgUmVhZFBhcmFt
KHNlY3Rpb24sICJudW1fZmlsdGVycyIsICZjZmcuZGVsYXkubnVtX2ZpbHRlcnMpOworICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAiYXBpX2NhbGxfaml0dGVyX2Jsb2NrcyIsCisgICAgICAgICAgICAg
ICZjZmcuZGVsYXkuYXBpX2NhbGxfaml0dGVyX2Jsb2Nrcyk7CisgICAgUmVhZFBhcmFtKHNlY3Rp
b24sICJtaW5fZWNob19wYXRoX2RlbGF5X2Jsb2NrcyIsCisgICAgICAgICAgICAgICZjZmcuZGVs
YXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3MpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAi
ZGVsYXlfaGVhZHJvb21fYmxvY2tzIiwKKyAgICAgICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9o
ZWFkcm9vbV9ibG9ja3MpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiaHlzdGVyZXNpc19saW1p
dF8xX2Jsb2NrcyIsCisgICAgICAgICAgICAgICZjZmcuZGVsYXkuaHlzdGVyZXNpc19saW1pdF8x
X2Jsb2Nrcyk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJoeXN0ZXJlc2lzX2xpbWl0XzJfYmxv
Y2tzIiwKKyAgICAgICAgICAgICAgJmNmZy5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tz
KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInNrZXdfaHlzdGVyZXNpc19ibG9ja3MiLAorICAg
ICAgICAgICAgICAmY2ZnLmRlbGF5LnNrZXdfaHlzdGVyZXNpc19ibG9ja3MpOworICAgIFJlYWRQ
YXJhbShzZWN0aW9uLCAiZml4ZWRfY2FwdHVyZV9kZWxheV9zYW1wbGVzIiwKKyAgICAgICAgICAg
ICAgJmNmZy5kZWxheS5maXhlZF9jYXB0dXJlX2RlbGF5X3NhbXBsZXMpOworICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAiZGVsYXlfZXN0aW1hdGVfc21vb3RoaW5nIiwKKyAgICAgICAgICAgICAgJmNm
Zy5kZWxheS5kZWxheV9lc3RpbWF0ZV9zbW9vdGhpbmcpOworICAgIFJlYWRQYXJhbShzZWN0aW9u
LCAiZGVsYXlfY2FuZGlkYXRlX2RldGVjdGlvbl90aHJlc2hvbGQiLAorICAgICAgICAgICAgICAm
Y2ZnLmRlbGF5LmRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rpb25fdGhyZXNob2xkKTsKKworICAgIEpz
b246OlZhbHVlIHN1YnNlY3Rpb247CisgICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVj
dChzZWN0aW9uLCAiZGVsYXlfc2VsZWN0aW9uX3RocmVzaG9sZHMiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnN1YnNlY3Rpb24pKSB7CisgICAgICBSZWFkUGFyYW0oc3Vi
c2VjdGlvbiwgImluaXRpYWwiLAorICAgICAgICAgICAgICAgICZjZmcuZGVsYXkuZGVsYXlfc2Vs
ZWN0aW9uX3RocmVzaG9sZHMuaW5pdGlhbCk7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwg
ImNvbnZlcmdlZCIsCisgICAgICAgICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9zZWxlY3Rpb25f
dGhyZXNob2xkcy5jb252ZXJnZWQpOworICAgIH0KKyAgfQorCisgIGlmIChydGM6OkdldFZhbHVl
RnJvbUpzb25PYmplY3QoYWVjM19yb290LCAiZmlsdGVyIiwgJnNlY3Rpb24pKSB7CisgICAgUmVh
ZFBhcmFtKHNlY3Rpb24sICJtYWluIiwgJmNmZy5maWx0ZXIubWFpbik7CisgICAgUmVhZFBhcmFt
KHNlY3Rpb24sICJzaGFkb3ciLCAmY2ZnLmZpbHRlci5zaGFkb3cpOworICAgIFJlYWRQYXJhbShz
ZWN0aW9uLCAibWFpbl9pbml0aWFsIiwgJmNmZy5maWx0ZXIubWFpbl9pbml0aWFsKTsKKyAgICBS
ZWFkUGFyYW0oc2VjdGlvbiwgInNoYWRvd19pbml0aWFsIiwgJmNmZy5maWx0ZXIuc2hhZG93X2lu
aXRpYWwpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiY29uZmlnX2NoYW5nZV9kdXJhdGlvbl9i
bG9ja3MiLAorICAgICAgICAgICAgICAmY2ZnLmZpbHRlci5jb25maWdfY2hhbmdlX2R1cmF0aW9u
X2Jsb2Nrcyk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJpbml0aWFsX3N0YXRlX3NlY29uZHMi
LAorICAgICAgICAgICAgICAmY2ZnLmZpbHRlci5pbml0aWFsX3N0YXRlX3NlY29uZHMpOworICAg
IFJlYWRQYXJhbShzZWN0aW9uLCAiY29uc2VydmF0aXZlX2luaXRpYWxfcGhhc2UiLAorICAgICAg
ICAgICAgICAmY2ZnLmZpbHRlci5jb25zZXJ2YXRpdmVfaW5pdGlhbF9waGFzZSk7CisgICAgUmVh
ZFBhcmFtKHNlY3Rpb24sICJlbmFibGVfc2hhZG93X2ZpbHRlcl9vdXRwdXRfdXNhZ2UiLAorICAg
ICAgICAgICAgICAmY2ZnLmZpbHRlci5lbmFibGVfc2hhZG93X2ZpbHRlcl9vdXRwdXRfdXNhZ2Up
OworICB9CisKKyAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChhZWMzX3Jvb3QsICJl
cmxlIiwgJnNlY3Rpb24pKSB7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtaW4iLCAmY2ZnLmVy
bGUubWluKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1heF9sIiwgJmNmZy5lcmxlLm1heF9s
KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1heF9oIiwgJmNmZy5lcmxlLm1heF9oKTsKKyAg
ICBSZWFkUGFyYW0oc2VjdGlvbiwgIm9uc2V0X2RldGVjdGlvbiIsICZjZmcuZXJsZS5vbnNldF9k
ZXRlY3Rpb24pOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibnVtX3NlY3Rpb25zIiwgJmNmZy5l
cmxlLm51bV9zZWN0aW9ucyk7CisgIH0KKworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2Jq
ZWN0KGFlYzNfcm9vdCwgImVwX3N0cmVuZ3RoIiwgJnNlY3Rpb24pKSB7CisgICAgUmVhZFBhcmFt
KHNlY3Rpb24sICJsZiIsICZjZmcuZXBfc3RyZW5ndGgubGYpOworICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAibWYiLCAmY2ZnLmVwX3N0cmVuZ3RoLm1mKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwg
ImhmIiwgJmNmZy5lcF9zdHJlbmd0aC5oZik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJkZWZh
dWx0X2xlbiIsICZjZmcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4pOworICAgIFJlYWRQYXJhbShz
ZWN0aW9uLCAicmV2ZXJiX2Jhc2VkX29uX3JlbmRlciIsCisgICAgICAgICAgICAgICZjZmcuZXBf
c3RyZW5ndGgucmV2ZXJiX2Jhc2VkX29uX3JlbmRlcik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJlY2hvX2Nhbl9zYXR1cmF0ZSIsICZjZmcuZXBfc3RyZW5ndGguZWNob19jYW5fc2F0dXJhdGUp
OworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiYm91bmRlZF9lcmwiLCAmY2ZnLmVwX3N0cmVuZ3Ro
LmJvdW5kZWRfZXJsKTsKKyAgfQorCisgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qo
YWVjM19yb290LCAiZWNob19hdWRpYmlsaXR5IiwgJnNlY3Rpb24pKSB7CisgICAgUmVhZFBhcmFt
KHNlY3Rpb24sICJsb3dfcmVuZGVyX2xpbWl0IiwKKyAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1
ZGliaWxpdHkubG93X3JlbmRlcl9saW1pdCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJub3Jt
YWxfcmVuZGVyX2xpbWl0IiwKKyAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHkubm9y
bWFsX3JlbmRlcl9saW1pdCk7CisKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImZsb29yX3Bvd2Vy
IiwgJmNmZy5lY2hvX2F1ZGliaWxpdHkuZmxvb3JfcG93ZXIpOworICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAiYXVkaWJpbGl0eV90aHJlc2hvbGRfbGYiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9f
YXVkaWJpbGl0eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9sZik7CisgICAgUmVhZFBhcmFtKHNlY3Rp
b24sICJhdWRpYmlsaXR5X3RocmVzaG9sZF9tZiIsCisgICAgICAgICAgICAgICZjZmcuZWNob19h
dWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhyZXNob2xkX21mKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlv
biwgImF1ZGliaWxpdHlfdGhyZXNob2xkX2hmIiwKKyAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1
ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfaGYpOworICAgIFJlYWRQYXJhbShzZWN0aW9u
LCAidXNlX3N0YXRpb25hcnlfcHJvcGVydGllcyIsCisgICAgICAgICAgICAgICZjZmcuZWNob19h
dWRpYmlsaXR5LnVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXMpOworICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAidXNlX3N0YXRpb25hcml0eV9wcm9wZXJ0aWVzX2F0X2luaXQiLAorICAgICAgICAgICAg
ICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5p
dCk7CisgIH0KKworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KGFlYzNfcm9vdCwg
InJlbmRlcl9sZXZlbHMiLCAmc2VjdGlvbikpIHsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImFj
dGl2ZV9yZW5kZXJfbGltaXQiLAorICAgICAgICAgICAgICAmY2ZnLnJlbmRlcl9sZXZlbHMuYWN0
aXZlX3JlbmRlcl9saW1pdCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJwb29yX2V4Y2l0YXRp
b25fcmVuZGVyX2xpbWl0IiwKKyAgICAgICAgICAgICAgJmNmZy5yZW5kZXJfbGV2ZWxzLnBvb3Jf
ZXhjaXRhdGlvbl9yZW5kZXJfbGltaXQpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAicG9vcl9l
eGNpdGF0aW9uX3JlbmRlcl9saW1pdF9kczgiLAorICAgICAgICAgICAgICAmY2ZnLnJlbmRlcl9s
ZXZlbHMucG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdF9kczgpOworICB9CisKKyAgaWYgKHJ0
Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChhZWMzX3Jvb3QsICJlY2hvX3JlbW92YWxfY29udHJv
bCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlY3Rpb24pKSB7CisgICAg
SnNvbjo6VmFsdWUgc3Vic2VjdGlvbjsKKyAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2Jq
ZWN0KHNlY3Rpb24sICJnYWluX3JhbXB1cCIsICZzdWJzZWN0aW9uKSkgeworICAgICAgUmVhZFBh
cmFtKHN1YnNlY3Rpb24sICJpbml0aWFsX2dhaW4iLAorICAgICAgICAgICAgICAgICZjZmcuZWNo
b19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuaW5pdGlhbF9nYWluKTsKKyAgICAgIFJlYWRQ
YXJhbShzdWJzZWN0aW9uLCAiZmlyc3Rfbm9uX3plcm9fZ2FpbiIsCisgICAgICAgICAgICAgICAg
JmNmZy5lY2hvX3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5maXJzdF9ub25femVyb19nYWlu
KTsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibm9uX3plcm9fZ2Fpbl9ibG9ja3MiLAor
ICAgICAgICAgICAgICAgICZjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAubm9u
X3plcm9fZ2Fpbl9ibG9ja3MpOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJmdWxsX2dh
aW5fYmxvY2tzIiwKKyAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdh
aW5fcmFtcHVwLmZ1bGxfZ2Fpbl9ibG9ja3MpOworICAgIH0KKyAgICBSZWFkUGFyYW0oc2VjdGlv
biwgImhhc19jbG9ja19kcmlmdCIsCisgICAgICAgICAgICAgICZjZmcuZWNob19yZW1vdmFsX2Nv
bnRyb2wuaGFzX2Nsb2NrX2RyaWZ0KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImxpbmVhcl9h
bmRfc3RhYmxlX2VjaG9fcGF0aCIsCisgICAgICAgICAgICAgICZjZmcuZWNob19yZW1vdmFsX2Nv
bnRyb2wubGluZWFyX2FuZF9zdGFibGVfZWNob19wYXRoKTsKKyAgfQorCisgIGlmIChydGM6Okdl
dFZhbHVlRnJvbUpzb25PYmplY3QoYWVjM19yb290LCAiZWNob19tb2RlbCIsICZzZWN0aW9uKSkg
eworICAgIEpzb246OlZhbHVlIHN1YnNlY3Rpb247CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJu
b2lzZV9mbG9vcl9ob2xkIiwgJmNmZy5lY2hvX21vZGVsLm5vaXNlX2Zsb29yX2hvbGQpOworICAg
IFJlYWRQYXJhbShzZWN0aW9uLCAibWluX25vaXNlX2Zsb29yX3Bvd2VyIiwKKyAgICAgICAgICAg
ICAgJmNmZy5lY2hvX21vZGVsLm1pbl9ub2lzZV9mbG9vcl9wb3dlcik7CisgICAgUmVhZFBhcmFt
KHNlY3Rpb24sICJzdGF0aW9uYXJ5X2dhdGVfc2xvcGUiLAorICAgICAgICAgICAgICAmY2ZnLmVj
aG9fbW9kZWwuc3RhdGlvbmFyeV9nYXRlX3Nsb3BlKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwg
Im5vaXNlX2dhdGVfcG93ZXIiLCAmY2ZnLmVjaG9fbW9kZWwubm9pc2VfZ2F0ZV9wb3dlcik7Cisg
ICAgUmVhZFBhcmFtKHNlY3Rpb24sICJub2lzZV9nYXRlX3Nsb3BlIiwgJmNmZy5lY2hvX21vZGVs
Lm5vaXNlX2dhdGVfc2xvcGUpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAicmVuZGVyX3ByZV93
aW5kb3dfc2l6ZSIsCisgICAgICAgICAgICAgICZjZmcuZWNob19tb2RlbC5yZW5kZXJfcHJlX3dp
bmRvd19zaXplKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRlcl9wb3N0X3dpbmRvd19z
aXplIiwKKyAgICAgICAgICAgICAgJmNmZy5lY2hvX21vZGVsLnJlbmRlcl9wb3N0X3dpbmRvd19z
aXplKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRlcl9wcmVfd2luZG93X3NpemVfaW5p
dCIsCisgICAgICAgICAgICAgICZjZmcuZWNob19tb2RlbC5yZW5kZXJfcHJlX3dpbmRvd19zaXpl
X2luaXQpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAicmVuZGVyX3Bvc3Rfd2luZG93X3NpemVf
aW5pdCIsCisgICAgICAgICAgICAgICZjZmcuZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3df
c2l6ZV9pbml0KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5vbmxpbmVhcl9ob2xkIiwgJmNm
Zy5lY2hvX21vZGVsLm5vbmxpbmVhcl9ob2xkKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5v
bmxpbmVhcl9yZWxlYXNlIiwgJmNmZy5lY2hvX21vZGVsLm5vbmxpbmVhcl9yZWxlYXNlKTsKKyAg
fQorCisgIEpzb246OlZhbHVlIHN1YnNlY3Rpb247CisgIGlmIChydGM6OkdldFZhbHVlRnJvbUpz
b25PYmplY3QoYWVjM19yb290LCAic3VwcHJlc3NvciIsICZzZWN0aW9uKSkgeworICAgIFJlYWRQ
YXJhbShzZWN0aW9uLCAibmVhcmVuZF9hdmVyYWdlX2Jsb2NrcyIsCisgICAgICAgICAgICAgICZj
Zmcuc3VwcHJlc3Nvci5uZWFyZW5kX2F2ZXJhZ2VfYmxvY2tzKTsKKworICAgIGlmIChydGM6Okdl
dFZhbHVlRnJvbUpzb25PYmplY3Qoc2VjdGlvbiwgIm5vcm1hbF90dW5pbmciLCAmc3Vic2VjdGlv
bikpIHsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWFza19sZiIsICZjZmcuc3VwcHJl
c3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfbGYpOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24s
ICJtYXNrX2hmIiwgJmNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZik7CisgICAg
ICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9pbmNfZmFjdG9yIiwKKyAgICAgICAgICAgICAg
ICAmY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXhfaW5jX2ZhY3Rvcik7CisgICAgICBS
ZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9kZWNfZmFjdG9yX2xmIiwKKyAgICAgICAgICAgICAg
ICAmY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXhfZGVjX2ZhY3Rvcl9sZik7CisgICAg
fQorCisgICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChzZWN0aW9uLCAibmVhcmVu
ZF90dW5pbmciLCAmc3Vic2VjdGlvbikpIHsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAi
bWFza19sZiIsICZjZmcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2xmKTsKKyAgICAg
IFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWFza19oZiIsICZjZmcuc3VwcHJlc3Nvci5uZWFyZW5k
X3R1bmluZy5tYXNrX2hmKTsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWF4X2luY19m
YWN0b3IiLAorICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5t
YXhfaW5jX2ZhY3Rvcik7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9kZWNfZmFj
dG9yX2xmIiwKKyAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcu
bWF4X2RlY19mYWN0b3JfbGYpOworICAgIH0KKworICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpz
b25PYmplY3Qoc2VjdGlvbiwgImRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJzZWN0aW9uKSkgeworICAgICAgUmVhZFBh
cmFtKHN1YnNlY3Rpb24sICJlbnJfdGhyZXNob2xkIiwKKyAgICAgICAgICAgICAgICAmY2ZnLnN1
cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uZW5yX3RocmVzaG9sZCk7CisgICAg
ICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgImVucl9leGl0X3RocmVzaG9sZCIsCisgICAgICAgICAg
ICAgICAgJmNmZy5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmVucl9leGl0
X3RocmVzaG9sZCk7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgInNucl90aHJlc2hvbGQi
LAorICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVj
dGlvbi5zbnJfdGhyZXNob2xkKTsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiaG9sZF9k
dXJhdGlvbiIsCisgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmRvbWluYW50X25lYXJl
bmRfZGV0ZWN0aW9uLmhvbGRfZHVyYXRpb24pOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24s
ICJ0cmlnZ2VyX3RocmVzaG9sZCIsCisgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmRv
bWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLnRyaWdnZXJfdGhyZXNob2xkKTsKKyAgICAgIFJlYWRQ
YXJhbSgKKyAgICAgICAgICBzdWJzZWN0aW9uLCAidXNlX2R1cmluZ19pbml0aWFsX3BoYXNlIiwK
KyAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24udXNl
X2R1cmluZ19pbml0aWFsX3BoYXNlKTsKKyAgICB9CisKKyAgICBpZiAocnRjOjpHZXRWYWx1ZUZy
b21Kc29uT2JqZWN0KHNlY3Rpb24sICJoaWdoX2JhbmRzX3N1cHByZXNzaW9uIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJzZWN0aW9uKSkgeworICAgICAgUmVhZFBh
cmFtKHN1YnNlY3Rpb24sICJlbnJfdGhyZXNob2xkIiwKKyAgICAgICAgICAgICAgICAmY2ZnLnN1
cHByZXNzb3IuaGlnaF9iYW5kc19zdXBwcmVzc2lvbi5lbnJfdGhyZXNob2xkKTsKKyAgICAgIFJl
YWRQYXJhbShzdWJzZWN0aW9uLCAibWF4X2dhaW5fZHVyaW5nX2VjaG8iLAorICAgICAgICAgICAg
ICAgICZjZmcuc3VwcHJlc3Nvci5oaWdoX2JhbmRzX3N1cHByZXNzaW9uLm1heF9nYWluX2R1cmlu
Z19lY2hvKTsKKyAgICB9CisKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImZsb29yX2ZpcnN0X2lu
Y3JlYXNlIiwKKyAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmZsb29yX2ZpcnN0X2luY3Jl
YXNlKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImVuZm9yY2VfdHJhbnNwYXJlbnQiLAorICAg
ICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IuZW5mb3JjZV90cmFuc3BhcmVudCk7CisgICAgUmVh
ZFBhcmFtKHNlY3Rpb24sICJlbmZvcmNlX2VtcHR5X2hpZ2hlcl9iYW5kcyIsCisgICAgICAgICAg
ICAgICZjZmcuc3VwcHJlc3Nvci5lbmZvcmNlX2VtcHR5X2hpZ2hlcl9iYW5kcyk7CisgIH0KK30K
KworRWNob0NhbmNlbGxlcjNDb25maWcgQWVjM0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGFic2w6OnN0
cmluZ192aWV3IGpzb25fc3RyaW5nKSB7CisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNmZzsKKyAg
Ym9vbCBub3RfdXNlZDsKKyAgQWVjM0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGpzb25fc3RyaW5nLCAm
Y2ZnLCAmbm90X3VzZWQpOworICByZXR1cm4gY2ZnOworfQorCitzdGQ6OnN0cmluZyBBZWMzQ29u
ZmlnVG9Kc29uU3RyaW5nKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpIHsKKyAg
cnRjOjpTdHJpbmdCdWlsZGVyIG9zdDsKKyAgb3N0IDw8ICJ7IjsKKyAgb3N0IDw8ICJcImFlYzNc
IjogeyI7CisgIG9zdCA8PCAiXCJkZWxheVwiOiB7IjsKKyAgb3N0IDw8ICJcImRlZmF1bHRfZGVs
YXlcIjogIiA8PCBjb25maWcuZGVsYXkuZGVmYXVsdF9kZWxheSA8PCAiLCI7CisgIG9zdCA8PCAi
XCJkb3duX3NhbXBsaW5nX2ZhY3RvclwiOiAiIDw8IGNvbmZpZy5kZWxheS5kb3duX3NhbXBsaW5n
X2ZhY3RvcgorICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwibnVtX2ZpbHRlcnNcIjogIiA8PCBj
b25maWcuZGVsYXkubnVtX2ZpbHRlcnMgPDwgIiwiOworICBvc3QgPDwgIlwiYXBpX2NhbGxfaml0
dGVyX2Jsb2Nrc1wiOiAiIDw8IGNvbmZpZy5kZWxheS5hcGlfY2FsbF9qaXR0ZXJfYmxvY2tzCisg
ICAgICA8PCAiLCI7CisgIG9zdCA8PCAiXCJtaW5fZWNob19wYXRoX2RlbGF5X2Jsb2Nrc1wiOiAi
CisgICAgICA8PCBjb25maWcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3MgPDwgIiwi
OworICBvc3QgPDwgIlwiZGVsYXlfaGVhZHJvb21fYmxvY2tzXCI6ICIgPDwgY29uZmlnLmRlbGF5
LmRlbGF5X2hlYWRyb29tX2Jsb2NrcworICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwiaHlzdGVy
ZXNpc19saW1pdF8xX2Jsb2Nrc1wiOiAiCisgICAgICA8PCBjb25maWcuZGVsYXkuaHlzdGVyZXNp
c19saW1pdF8xX2Jsb2NrcyA8PCAiLCI7CisgIG9zdCA8PCAiXCJoeXN0ZXJlc2lzX2xpbWl0XzJf
YmxvY2tzXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzJfYmxv
Y2tzIDw8ICIsIjsKKyAgb3N0IDw8ICJcInNrZXdfaHlzdGVyZXNpc19ibG9ja3NcIjogIiA8PCBj
b25maWcuZGVsYXkuc2tld19oeXN0ZXJlc2lzX2Jsb2NrcworICAgICAgPDwgIiwiOworICBvc3Qg
PDwgIlwiZml4ZWRfY2FwdHVyZV9kZWxheV9zYW1wbGVzXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5k
ZWxheS5maXhlZF9jYXB0dXJlX2RlbGF5X3NhbXBsZXMgPDwgIiwiOworICBvc3QgPDwgIlwiZGVs
YXlfZXN0aW1hdGVfc21vb3RoaW5nXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5kZWxheS5kZWxheV9l
c3RpbWF0ZV9zbW9vdGhpbmcgPDwgIiwiOworICBvc3QgPDwgIlwiZGVsYXlfY2FuZGlkYXRlX2Rl
dGVjdGlvbl90aHJlc2hvbGRcIjogIgorICAgICAgPDwgY29uZmlnLmRlbGF5LmRlbGF5X2NhbmRp
ZGF0ZV9kZXRlY3Rpb25fdGhyZXNob2xkIDw8ICIsIjsKKworICBvc3QgPDwgIlwiZGVsYXlfc2Vs
ZWN0aW9uX3RocmVzaG9sZHNcIjogeyI7CisgIG9zdCA8PCAiXCJpbml0aWFsXCI6ICIgPDwgY29u
ZmlnLmRlbGF5LmRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzLmluaXRpYWwKKyAgICAgIDw8ICIs
IjsKKyAgb3N0IDw8ICJcImNvbnZlcmdlZFwiOiAiIDw8IGNvbmZpZy5kZWxheS5kZWxheV9zZWxl
Y3Rpb25fdGhyZXNob2xkcy5jb252ZXJnZWQ7CisgIG9zdCA8PCAifSI7CisKKyAgb3N0IDw8ICJ9
LCI7CisKKyAgb3N0IDw8ICJcImZpbHRlclwiOiB7IjsKKyAgb3N0IDw8ICJcIm1haW5cIjogWyI7
CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2NrcyA8PCAiLCI7CisgIG9z
dCA8PCBjb25maWcuZmlsdGVyLm1haW4ubGVha2FnZV9jb252ZXJnZWQgPDwgIiwiOworICBvc3Qg
PDwgY29uZmlnLmZpbHRlci5tYWluLmxlYWthZ2VfZGl2ZXJnZWQgPDwgIiwiOworICBvc3QgPDwg
Y29uZmlnLmZpbHRlci5tYWluLmVycm9yX2Zsb29yIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5m
aWx0ZXIubWFpbi5lcnJvcl9jZWlsIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIubWFp
bi5ub2lzZV9nYXRlOworICBvc3QgPDwgIl0sIjsKKworICBvc3QgPDwgIlwic2hhZG93XCI6IFsi
OworICBvc3QgPDwgY29uZmlnLmZpbHRlci5zaGFkb3cubGVuZ3RoX2Jsb2NrcyA8PCAiLCI7Cisg
IG9zdCA8PCBjb25maWcuZmlsdGVyLnNoYWRvdy5yYXRlIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZp
Zy5maWx0ZXIuc2hhZG93Lm5vaXNlX2dhdGU7CisgIG9zdCA8PCAiXSwiOworCisgIG9zdCA8PCAi
XCJtYWluX2luaXRpYWxcIjogWyI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLm1haW5faW5pdGlh
bC5sZW5ndGhfYmxvY2tzIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIubWFpbl9pbml0
aWFsLmxlYWthZ2VfY29udmVyZ2VkIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIubWFp
bl9pbml0aWFsLmxlYWthZ2VfZGl2ZXJnZWQgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLmZpbHRl
ci5tYWluX2luaXRpYWwuZXJyb3JfZmxvb3IgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLmZpbHRl
ci5tYWluX2luaXRpYWwuZXJyb3JfY2VpbCA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVy
Lm1haW5faW5pdGlhbC5ub2lzZV9nYXRlOworICBvc3QgPDwgIl0sIjsKKworICBvc3QgPDwgIlwi
c2hhZG93X2luaXRpYWxcIjogWyI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLnNoYWRvd19pbml0
aWFsLmxlbmd0aF9ibG9ja3MgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLmZpbHRlci5zaGFkb3df
aW5pdGlhbC5yYXRlIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIuc2hhZG93X2luaXRp
YWwubm9pc2VfZ2F0ZTsKKyAgb3N0IDw8ICJdLCI7CisKKyAgb3N0IDw8ICJcImNvbmZpZ19jaGFu
Z2VfZHVyYXRpb25fYmxvY2tzXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5maWx0ZXIuY29uZmlnX2No
YW5nZV9kdXJhdGlvbl9ibG9ja3MgPDwgIiwiOworICBvc3QgPDwgIlwiaW5pdGlhbF9zdGF0ZV9z
ZWNvbmRzXCI6ICIgPDwgY29uZmlnLmZpbHRlci5pbml0aWFsX3N0YXRlX3NlY29uZHMKKyAgICAg
IDw8ICIsIjsKKyAgb3N0IDw8ICJcImNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlXCI6ICIKKyAg
ICAgIDw8IChjb25maWcuZmlsdGVyLmNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlID8gInRydWUi
IDogImZhbHNlIikgPDwgIiwiOworICBvc3QgPDwgIlwiZW5hYmxlX3NoYWRvd19maWx0ZXJfb3V0
cHV0X3VzYWdlXCI6ICIKKyAgICAgIDw8IChjb25maWcuZmlsdGVyLmVuYWJsZV9zaGFkb3dfZmls
dGVyX291dHB1dF91c2FnZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCisgIG9zdCA8PCAifSwiOwor
CisgIG9zdCA8PCAiXCJlcmxlXCI6IHsiOworICBvc3QgPDwgIlwibWluXCI6ICIgPDwgY29uZmln
LmVybGUubWluIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm1heF9sXCI6ICIgPDwgY29uZmlnLmVybGUu
bWF4X2wgPDwgIiwiOworICBvc3QgPDwgIlwibWF4X2hcIjogIiA8PCBjb25maWcuZXJsZS5tYXhf
aCA8PCAiLCI7CisgIG9zdCA8PCAiXCJvbnNldF9kZXRlY3Rpb25cIjogIgorICAgICAgPDwgKGNv
bmZpZy5lcmxlLm9uc2V0X2RldGVjdGlvbiA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8ICIsIjsKKyAg
b3N0IDw8ICJcIm51bV9zZWN0aW9uc1wiOiAiIDw8IGNvbmZpZy5lcmxlLm51bV9zZWN0aW9uczsK
KyAgb3N0IDw8ICJ9LCI7CisKKyAgb3N0IDw8ICJcImVwX3N0cmVuZ3RoXCI6IHsiOworICBvc3Qg
PDwgIlwibGZcIjogIiA8PCBjb25maWcuZXBfc3RyZW5ndGgubGYgPDwgIiwiOworICBvc3QgPDwg
IlwibWZcIjogIiA8PCBjb25maWcuZXBfc3RyZW5ndGgubWYgPDwgIiwiOworICBvc3QgPDwgIlwi
aGZcIjogIiA8PCBjb25maWcuZXBfc3RyZW5ndGguaGYgPDwgIiwiOworICBvc3QgPDwgIlwiZGVm
YXVsdF9sZW5cIjogIiA8PCBjb25maWcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4gPDwgIiwiOwor
ICBvc3QgPDwgIlwicmV2ZXJiX2Jhc2VkX29uX3JlbmRlclwiOiAiCisgICAgICA8PCAoY29uZmln
LmVwX3N0cmVuZ3RoLnJldmVyYl9iYXNlZF9vbl9yZW5kZXIgPyAidHJ1ZSIgOiAiZmFsc2UiKSA8
PCAiLCI7CisgIG9zdCA8PCAiXCJlY2hvX2Nhbl9zYXR1cmF0ZVwiOiAiCisgICAgICA8PCAoY29u
ZmlnLmVwX3N0cmVuZ3RoLmVjaG9fY2FuX3NhdHVyYXRlID8gInRydWUiIDogImZhbHNlIikgPDwg
IiwiOworICBvc3QgPDwgIlwiYm91bmRlZF9lcmxcIjogIgorICAgICAgPDwgKGNvbmZpZy5lcF9z
dHJlbmd0aC5ib3VuZGVkX2VybCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCisgIG9zdCA8PCAifSwi
OworCisgIG9zdCA8PCAiXCJlY2hvX2F1ZGliaWxpdHlcIjogeyI7CisgIG9zdCA8PCAiXCJsb3df
cmVuZGVyX2xpbWl0XCI6ICIgPDwgY29uZmlnLmVjaG9fYXVkaWJpbGl0eS5sb3dfcmVuZGVyX2xp
bWl0CisgICAgICA8PCAiLCI7CisgIG9zdCA8PCAiXCJub3JtYWxfcmVuZGVyX2xpbWl0XCI6ICIK
KyAgICAgIDw8IGNvbmZpZy5lY2hvX2F1ZGliaWxpdHkubm9ybWFsX3JlbmRlcl9saW1pdCA8PCAi
LCI7CisgIG9zdCA8PCAiXCJmbG9vcl9wb3dlclwiOiAiIDw8IGNvbmZpZy5lY2hvX2F1ZGliaWxp
dHkuZmxvb3JfcG93ZXIgPDwgIiwiOworICBvc3QgPDwgIlwiYXVkaWJpbGl0eV90aHJlc2hvbGRf
bGZcIjogIgorICAgICAgPDwgY29uZmlnLmVjaG9fYXVkaWJpbGl0eS5hdWRpYmlsaXR5X3RocmVz
aG9sZF9sZiA8PCAiLCI7CisgIG9zdCA8PCAiXCJhdWRpYmlsaXR5X3RocmVzaG9sZF9tZlwiOiAi
CisgICAgICA8PCBjb25maWcuZWNob19hdWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhyZXNob2xkX21m
IDw8ICIsIjsKKyAgb3N0IDw8ICJcImF1ZGliaWxpdHlfdGhyZXNob2xkX2hmXCI6ICIKKyAgICAg
IDw8IGNvbmZpZy5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfaGYgPDwgIiwi
OworICBvc3QgPDwgIlwidXNlX3N0YXRpb25hcnlfcHJvcGVydGllc1wiOiAiCisgICAgICA8PCAo
Y29uZmlnLmVjaG9fYXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVzID8gInRydWUi
IDogImZhbHNlIikKKyAgICAgIDw8ICIsIjsKKyAgb3N0IDw8ICJcInVzZV9zdGF0aW9uYXJpdHlf
cHJvcGVydGllc19hdF9pbml0XCI6ICIKKyAgICAgIDw8IChjb25maWcuZWNob19hdWRpYmlsaXR5
LnVzZV9zdGF0aW9uYXJpdHlfcHJvcGVydGllc19hdF9pbml0ID8gInRydWUiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICJmYWxzZSIpOworICBvc3QgPDwgIn0sIjsKKworICBvc3QgPDwgIlwicmVuZGVyX2xldmVs
c1wiOiB7IjsKKyAgb3N0IDw8ICJcImFjdGl2ZV9yZW5kZXJfbGltaXRcIjogIiA8PCBjb25maWcu
cmVuZGVyX2xldmVscy5hY3RpdmVfcmVuZGVyX2xpbWl0CisgICAgICA8PCAiLCI7CisgIG9zdCA8
PCAiXCJwb29yX2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0XCI6ICIKKyAgICAgIDw8IGNvbmZpZy5y
ZW5kZXJfbGV2ZWxzLnBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGltaXQgPDwgIiwiOworICBvc3Qg
PDwgIlwicG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdF9kczhcIjogIgorICAgICAgPDwgY29u
ZmlnLnJlbmRlcl9sZXZlbHMucG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdF9kczg7CisgIG9z
dCA8PCAifSwiOworCisgIG9zdCA8PCAiXCJlY2hvX3JlbW92YWxfY29udHJvbFwiOiB7IjsKKyAg
b3N0IDw8ICJcImdhaW5fcmFtcHVwXCI6IHsiOworICBvc3QgPDwgIlwiaW5pdGlhbF9nYWluXCI6
ICIKKyAgICAgIDw8IGNvbmZpZy5lY2hvX3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5pbml0
aWFsX2dhaW4gPDwgIiwiOworICBvc3QgPDwgIlwiZmlyc3Rfbm9uX3plcm9fZ2FpblwiOiAiCisg
ICAgICA8PCBjb25maWcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZmlyc3Rfbm9u
X3plcm9fZ2FpbiA8PCAiLCI7CisgIG9zdCA8PCAiXCJub25femVyb19nYWluX2Jsb2Nrc1wiOiAi
CisgICAgICA8PCBjb25maWcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAubm9uX3pl
cm9fZ2Fpbl9ibG9ja3MgPDwgIiwiOworICBvc3QgPDwgIlwiZnVsbF9nYWluX2Jsb2Nrc1wiOiAi
CisgICAgICA8PCBjb25maWcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZnVsbF9n
YWluX2Jsb2NrczsKKyAgb3N0IDw8ICJ9LCI7CisgIG9zdCA8PCAiXCJoYXNfY2xvY2tfZHJpZnRc
IjogIgorICAgICAgPDwgKGNvbmZpZy5lY2hvX3JlbW92YWxfY29udHJvbC5oYXNfY2xvY2tfZHJp
ZnQgPyAidHJ1ZSIgOiAiZmFsc2UiKQorICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwibGluZWFy
X2FuZF9zdGFibGVfZWNob19wYXRoXCI6ICIKKyAgICAgIDw8IChjb25maWcuZWNob19yZW1vdmFs
X2NvbnRyb2wubGluZWFyX2FuZF9zdGFibGVfZWNob19wYXRoID8gInRydWUiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
ICJmYWxzZSIpOworCisgIG9zdCA8PCAifSwiOworCisgIG9zdCA8PCAiXCJlY2hvX21vZGVsXCI6
IHsiOworICBvc3QgPDwgIlwibm9pc2VfZmxvb3JfaG9sZFwiOiAiIDw8IGNvbmZpZy5lY2hvX21v
ZGVsLm5vaXNlX2Zsb29yX2hvbGQgPDwgIiwiOworICBvc3QgPDwgIlwibWluX25vaXNlX2Zsb29y
X3Bvd2VyXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5lY2hvX21vZGVsLm1pbl9ub2lzZV9mbG9vcl9w
b3dlciA8PCAiLCI7CisgIG9zdCA8PCAiXCJzdGF0aW9uYXJ5X2dhdGVfc2xvcGVcIjogIgorICAg
ICAgPDwgY29uZmlnLmVjaG9fbW9kZWwuc3RhdGlvbmFyeV9nYXRlX3Nsb3BlIDw8ICIsIjsKKyAg
b3N0IDw8ICJcIm5vaXNlX2dhdGVfcG93ZXJcIjogIiA8PCBjb25maWcuZWNob19tb2RlbC5ub2lz
ZV9nYXRlX3Bvd2VyIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm5vaXNlX2dhdGVfc2xvcGVcIjogIiA8
PCBjb25maWcuZWNob19tb2RlbC5ub2lzZV9nYXRlX3Nsb3BlIDw8ICIsIjsKKyAgb3N0IDw8ICJc
InJlbmRlcl9wcmVfd2luZG93X3NpemVcIjogIgorICAgICAgPDwgY29uZmlnLmVjaG9fbW9kZWwu
cmVuZGVyX3ByZV93aW5kb3dfc2l6ZSA8PCAiLCI7CisgIG9zdCA8PCAiXCJyZW5kZXJfcG9zdF93
aW5kb3dfc2l6ZVwiOiAiCisgICAgICA8PCBjb25maWcuZWNob19tb2RlbC5yZW5kZXJfcG9zdF93
aW5kb3dfc2l6ZSA8PCAiLCI7CisgIG9zdCA8PCAiXCJyZW5kZXJfcHJlX3dpbmRvd19zaXplX2lu
aXRcIjogIgorICAgICAgPDwgY29uZmlnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6
ZV9pbml0IDw8ICIsIjsKKyAgb3N0IDw8ICJcInJlbmRlcl9wb3N0X3dpbmRvd19zaXplX2luaXRc
IjogIgorICAgICAgPDwgY29uZmlnLmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemVf
aW5pdCA8PCAiLCI7CisgIG9zdCA8PCAiXCJub25saW5lYXJfaG9sZFwiOiAiIDw8IGNvbmZpZy5l
Y2hvX21vZGVsLm5vbmxpbmVhcl9ob2xkIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm5vbmxpbmVhcl9y
ZWxlYXNlXCI6ICIgPDwgY29uZmlnLmVjaG9fbW9kZWwubm9ubGluZWFyX3JlbGVhc2U7CisgIG9z
dCA8PCAifSwiOworCisgIG9zdCA8PCAiXCJzdXBwcmVzc29yXCI6IHsiOworICBvc3QgPDwgIlwi
bmVhcmVuZF9hdmVyYWdlX2Jsb2Nrc1wiOiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nvci5u
ZWFyZW5kX2F2ZXJhZ2VfYmxvY2tzIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm5vcm1hbF90dW5pbmdc
IjogeyI7CisgIG9zdCA8PCAiXCJtYXNrX2xmXCI6IFsiOworICBvc3QgPDwgY29uZmlnLnN1cHBy
ZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2xmLmVucl90cmFuc3BhcmVudCA8PCAiLCI7CisgIG9z
dCA8PCBjb25maWcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfbGYuZW5yX3N1cHByZXNz
IDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19s
Zi5lbXJfdHJhbnNwYXJlbnQ7CisgIG9zdCA8PCAiXSwiOworICBvc3QgPDwgIlwibWFza19oZlwi
OiBbIjsKKyAgb3N0IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5l
bnJfdHJhbnNwYXJlbnQgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3Iubm9ybWFs
X3R1bmluZy5tYXNrX2hmLmVucl9zdXBwcmVzcyA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuc3Vw
cHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYuZW1yX3RyYW5zcGFyZW50OworICBvc3QgPDwg
Il0sIjsKKyAgb3N0IDw8ICJcIm1heF9pbmNfZmFjdG9yXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5z
dXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWF4X2luY19mYWN0b3IgPDwgIiwiOworICBvc3QgPDwg
IlwibWF4X2RlY19mYWN0b3JfbGZcIjogIgorICAgICAgPDwgY29uZmlnLnN1cHByZXNzb3Iubm9y
bWFsX3R1bmluZy5tYXhfZGVjX2ZhY3Rvcl9sZjsKKyAgb3N0IDw8ICJ9LCI7CisgIG9zdCA8PCAi
XCJuZWFyZW5kX3R1bmluZ1wiOiB7IjsKKyAgb3N0IDw8ICJcIm1hc2tfbGZcIjogWyI7CisgIG9z
dCA8PCBjb25maWcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2xmLmVucl90cmFuc3Bh
cmVudCA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5t
YXNrX2xmLmVucl9zdXBwcmVzcyA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuc3VwcHJlc3Nvci5u
ZWFyZW5kX3R1bmluZy5tYXNrX2xmLmVtcl90cmFuc3BhcmVudDsKKyAgb3N0IDw8ICJdLCI7Cisg
IG9zdCA8PCAiXCJtYXNrX2hmXCI6IFsiOworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3IubmVh
cmVuZF90dW5pbmcubWFza19oZi5lbnJfdHJhbnNwYXJlbnQgPDwgIiwiOworICBvc3QgPDwgY29u
ZmlnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19oZi5lbnJfc3VwcHJlc3MgPDwgIiwi
OworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19oZi5lbXJf
dHJhbnNwYXJlbnQ7CisgIG9zdCA8PCAiXSwiOworICBvc3QgPDwgIlwibWF4X2luY19mYWN0b3Jc
IjogIgorICAgICAgPDwgY29uZmlnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWF4X2luY19m
YWN0b3IgPDwgIiwiOworICBvc3QgPDwgIlwibWF4X2RlY19mYWN0b3JfbGZcIjogIgorICAgICAg
PDwgY29uZmlnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWF4X2RlY19mYWN0b3JfbGY7Cisg
IG9zdCA8PCAifSwiOworICBvc3QgPDwgIlwiZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb25cIjog
eyI7CisgIG9zdCA8PCAiXCJlbnJfdGhyZXNob2xkXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBw
cmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmVucl90aHJlc2hvbGQgPDwgIiwiOwor
ICBvc3QgPDwgIlwiZW5yX2V4aXRfdGhyZXNob2xkXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBw
cmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmVucl9leGl0X3RocmVzaG9sZCA8PCAi
LCI7CisgIG9zdCA8PCAiXCJzbnJfdGhyZXNob2xkXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBw
cmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLnNucl90aHJlc2hvbGQgPDwgIiwiOwor
ICBvc3QgPDwgIlwiaG9sZF9kdXJhdGlvblwiOiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nv
ci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5ob2xkX2R1cmF0aW9uIDw8ICIsIjsKKyAgb3N0
IDw8ICJcInRyaWdnZXJfdGhyZXNob2xkXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29y
LmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLnRyaWdnZXJfdGhyZXNob2xkIDw8ICIsIjsKKyAg
b3N0IDw8ICJcInVzZV9kdXJpbmdfaW5pdGlhbF9waGFzZVwiOiAiCisgICAgICA8PCBjb25maWcu
c3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi51c2VfZHVyaW5nX2luaXRpYWxf
cGhhc2U7CisgIG9zdCA8PCAifSwiOworICBvc3QgPDwgIlwiaGlnaF9iYW5kc19zdXBwcmVzc2lv
blwiOiB7IjsKKyAgb3N0IDw8ICJcImVucl90aHJlc2hvbGRcIjogIgorICAgICAgPDwgY29uZmln
LnN1cHByZXNzb3IuaGlnaF9iYW5kc19zdXBwcmVzc2lvbi5lbnJfdGhyZXNob2xkIDw8ICIsIjsK
KyAgb3N0IDw8ICJcIm1heF9nYWluX2R1cmluZ19lY2hvXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5z
dXBwcmVzc29yLmhpZ2hfYmFuZHNfc3VwcHJlc3Npb24ubWF4X2dhaW5fZHVyaW5nX2VjaG87Cisg
IG9zdCA8PCAifSwiOworICBvc3QgPDwgIlwiZmxvb3JfZmlyc3RfaW5jcmVhc2VcIjogIiA8PCBj
b25maWcuc3VwcHJlc3Nvci5mbG9vcl9maXJzdF9pbmNyZWFzZQorICAgICAgPDwgIiwiOworICBv
c3QgPDwgIlwiZW5mb3JjZV90cmFuc3BhcmVudFwiOiAiCisgICAgICA8PCAoY29uZmlnLnN1cHBy
ZXNzb3IuZW5mb3JjZV90cmFuc3BhcmVudCA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8ICIsIjsKKyAg
b3N0IDw8ICJcImVuZm9yY2VfZW1wdHlfaGlnaGVyX2JhbmRzXCI6ICIKKyAgICAgIDw8IChjb25m
aWcuc3VwcHJlc3Nvci5lbmZvcmNlX2VtcHR5X2hpZ2hlcl9iYW5kcyA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICBvc3QgPDwgIn0iOworICBvc3QgPDwgIn0iOworICBvc3QgPDwgIn0iOworCisgIHJl
dHVybiBvc3QuUmVsZWFzZSgpOworfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL2Vj
aG9fY2FuY2VsbGVyM19jb25maWdfanNvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg5NzM2NTBmODVjMWE2MTc1M2NiYzU5MWQ0ZjE2MjEyODZhOTgxZDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZ19qc29uLmgKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
CisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX0FVRElPX0VDSE9fQ0FOQ0VMTEVS
M19DT05GSUdfSlNPTl9IXworI2RlZmluZSBBUElfQVVESU9fRUNIT19DQU5DRUxMRVIzX0NPTkZJ
R19KU09OX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
c3RyaW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZp
Zy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworLy8gUGFyc2VzIGEgSlNPTi1lbmNvZGVkIHN0cmluZyBpbnRvIGFuIEFlYzMg
Y29uZmlnLiBGaWVsZHMgY29ycmVzcG9uZHMgdG8KKy8vIHN1YnN0cnVjdCBuYW1lcywgd2l0aCB0
aGUgYWRkaXRpb24gdGhhdCB0aGVyZSBtdXN0IGJlIGEgdG9wLWxldmVsIG5vZGUKKy8vICJhZWMz
Ii4gUHJvZHVjZXMgZGVmYXVsdCBjb25maWcgdmFsdWVzIGZvciBhbnl0aGluZyB0aGF0IGNhbm5v
dCBiZSBwYXJzZWQKKy8vIGZyb20gdGhlIHN0cmluZy4gSWYgYW55IGVycm9yIHdhcyBmb3VuZCBp
biB0aGUgcGFyc2luZywgcGFyc2luZ19zdWNjZXNzZnVsIGlzCisvLyBzZXQgdG8gZmFsc2UuCitS
VENfRVhQT1JUIHZvaWQgQWVjM0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGFic2w6OnN0cmluZ192aWV3
IGpzb25fc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyogY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sKiBwYXJzaW5nX3N1Y2Nlc3NmdWwpOworCisvLyBUbyBiZSBkZXBy
ZWNhdGVkLgorLy8gUGFyc2VzIGEgSlNPTi1lbmNvZGVkIHN0cmluZyBpbnRvIGFuIEFlYzMgY29u
ZmlnLiBGaWVsZHMgY29ycmVzcG9uZHMgdG8KKy8vIHN1YnN0cnVjdCBuYW1lcywgd2l0aCB0aGUg
YWRkaXRpb24gdGhhdCB0aGVyZSBtdXN0IGJlIGEgdG9wLWxldmVsIG5vZGUKKy8vICJhZWMzIi4g
UmV0dXJucyBkZWZhdWx0IGNvbmZpZyB2YWx1ZXMgZm9yIGFueXRoaW5nIHRoYXQgY2Fubm90IGJl
IHBhcnNlZCBmcm9tCisvLyB0aGUgc3RyaW5nLgorUlRDX0VYUE9SVCBFY2hvQ2FuY2VsbGVyM0Nv
bmZpZworQWVjM0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGFic2w6OnN0cmluZ192aWV3IGpzb25fc3Ry
aW5nKTsKKworLy8gRW5jb2RlcyBhbiBBZWMzIGNvbmZpZyBpbiBKU09OIGZvcm1hdC4gRmllbGRz
IGNvcnJlc3BvbmRzIHRvIHN1YnN0cnVjdCBuYW1lcywKKy8vIHdpdGggdGhlIGFkZGl0aW9uIHRo
YXQgdGhlIHRvcC1sZXZlbCBub2RlIGlzIG5hbWVkICJhZWMzIi4KK3N0ZDo6c3RyaW5nIEFlYzND
b25maWdUb0pzb25TdHJpbmcoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZyk7CisK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfQVVESU9fRUNIT19DQU5D
RUxMRVIzX0NPTkZJR19KU09OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2ZhY3RvcnkuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hv
X2NhbmNlbGxlcjNfZmFjdG9yeS5oCmluZGV4IGY2ZGIxMTY4NTAzN2ExYTJjMzJkODRhNmY3NjVh
Mjg3ZmM0NzViN2YuLjkwNTJkOTliYjFlYjg5MWJkYzNjZWI5ZjlmZmE2YTkyMGFjMzI2MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpby9lY2hvX2NhbmNlbGxlcjNfZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfZmFjdG9yeS5o
CkBAIC0xNSwxMCArMTUsMTEgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxl
cjNfY29uZmlnLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY29udHJvbC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
Ci1jbGFzcyBFY2hvQ2FuY2VsbGVyM0ZhY3RvcnkgOiBwdWJsaWMgRWNob0NvbnRyb2xGYWN0b3J5
IHsKK2NsYXNzIFJUQ19FWFBPUlQgRWNob0NhbmNlbGxlcjNGYWN0b3J5IDogcHVibGljIEVjaG9D
b250cm9sRmFjdG9yeSB7CiAgcHVibGljOgogICAvLyBGYWN0b3J5IHByb2R1Y2luZyBFY2hvQ2Fu
Y2VsbGVyMyBpbnN0YW5jZXMgd2l0aCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgogICBFY2hv
Q2FuY2VsbGVyM0ZhY3RvcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby90ZXN0L0JVSUxELmduIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL3Rlc3QvQlVJTEQuZ24KaW5k
ZXggOWE3OTc3ODhmNjhkY2VhNzJkZTkyMTIzYzFiNTUyNGE1MTQ0N2JhZC4uNGUwNGE4YTY0YTEw
NDhhZjAzMzI0MzFiNDZjMTU3ZmRhNmRkZGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL3Rlc3QvQlVJTEQuZ24KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL3Rlc3Qv
QlVJTEQuZ24KQEAgLTE3LDggKzE3LDEyIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAg
IHRlc3Rvbmx5ID0gdHJ1ZQogICAgIHNvdXJjZXMgPSBbCiAgICAgICAiYXVkaW9fZnJhbWVfdW5p
dHRlc3QuY2MiLAorICAgICAgImVjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbl91bml0dGVzdC5j
YyIsCisgICAgICAiZWNob19jYW5jZWxsZXIzX2NvbmZpZ191bml0dGVzdC5jYyIsCiAgICAgXQog
ICAgIGRlcHMgPSBbCisgICAgICAiLi46YWVjM19jb25maWciLAorICAgICAgIi4uOmFlYzNfY29u
ZmlnX2pzb24iLAogICAgICAgIi4uOmF1ZGlvX2ZyYW1lX2FwaSIsCiAgICAgICAiLi4vLi4vLi4v
cnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uLy4uLy4uL3Rlc3Q6dGVzdF9z
dXBwb3J0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpby90ZXN0L2VjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbl91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
by90ZXN0L2VjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbl91bml0dGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43YzNhNDQ1YzYwYTM0MTJkMDNhMGEyY2VmMjk0N2RlMTRkMTU2YjVkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
L3Rlc3QvZWNob19jYW5jZWxsZXIzX2NvbmZpZ19qc29uX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEs
NDEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5j
ZWxsZXIzX2NvbmZpZ19qc29uLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVy
M19jb25maWcuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCitURVNUKEVjaG9DYW5jZWxsZXIzSnNvbkhlbHBlcnMsIFRvU3RyaW5nQW5kUGFyc2VKc29u
KSB7CisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNmZzsKKyAgY2ZnLmRlbGF5LmRvd25fc2FtcGxp
bmdfZmFjdG9yID0gMXU7CisgIGNmZy5maWx0ZXIuc2hhZG93X2luaXRpYWwubGVuZ3RoX2Jsb2Nr
cyA9IDd1OworICBjZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYuZW5yX3N1cHBy
ZXNzID0gLjVmOworICBzdGQ6OnN0cmluZyBqc29uX3N0cmluZyA9IEFlYzNDb25maWdUb0pzb25T
dHJpbmcoY2ZnKTsKKyAgRWNob0NhbmNlbGxlcjNDb25maWcgY2ZnX3RyYW5zZm9ybWVkID0gQWVj
M0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGpzb25fc3RyaW5nKTsKKworICAvLyBFeHBlY3QgdW5jaGFu
Z2VkIHZhbHVlcyB0byByZW1haW4gZGVmYXVsdC4KKyAgRVhQRUNUX0VRKGNmZy5maWx0ZXIubWFp
bi5lcnJvcl9mbG9vciwKKyAgICAgICAgICAgIGNmZ190cmFuc2Zvcm1lZC5maWx0ZXIubWFpbi5l
cnJvcl9mbG9vcik7CisgIEVYUEVDVF9FUShjZmcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4sCisg
ICAgICAgICAgICBjZmdfdHJhbnNmb3JtZWQuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4pOworICBF
WFBFQ1RfRVEoY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2xmLmVucl9zdXBwcmVz
cywKKyAgICAgICAgICAgIGNmZ190cmFuc2Zvcm1lZC5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcu
bWFza19sZi5lbnJfc3VwcHJlc3MpOworCisgIC8vIEV4cGVjdCBjaGFuZ2VkIHZhbHVlcyB0byBj
YXJyeSB0aHJvdWdoIHRoZSB0cmFuc2Zvcm1hdGlvbi4KKyAgRVhQRUNUX0VRKGNmZy5kZWxheS5k
b3duX3NhbXBsaW5nX2ZhY3RvciwKKyAgICAgICAgICAgIGNmZ190cmFuc2Zvcm1lZC5kZWxheS5k
b3duX3NhbXBsaW5nX2ZhY3Rvcik7CisgIEVYUEVDVF9FUShjZmcuZmlsdGVyLnNoYWRvd19pbml0
aWFsLmxlbmd0aF9ibG9ja3MsCisgICAgICAgICAgICBjZmdfdHJhbnNmb3JtZWQuZmlsdGVyLnNo
YWRvd19pbml0aWFsLmxlbmd0aF9ibG9ja3MpOworICBFWFBFQ1RfRVEoY2ZnLnN1cHByZXNzb3Iu
bm9ybWFsX3R1bmluZy5tYXNrX2hmLmVucl9zdXBwcmVzcywKKyAgICAgICAgICAgIGNmZ190cmFu
c2Zvcm1lZC5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5lbnJfc3VwcHJlc3MpOwor
fQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL3Rlc3QvZWNob19jYW5jZWxsZXIzX2Nv
bmZpZ191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpby90ZXN0L2VjaG9fY2FuY2VsbGVyM19jb25maWdfdW5pdHRlc3QuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmZlNzJhYzk1OGRmNTljNTU0ZTkxMDI5NzcwN2I1ZDdjYTE0YzMwZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpby90ZXN0L2VjaG9fY2FuY2VsbGVyM19jb25maWdfdW5pdHRlc3QuY2MKQEAgLTAsMCAr
MSw0NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1
ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCisjaW5jbHVkZSAiYXBpL2F1
ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbi5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3Qu
aCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK1RFU1QoRWNob0NhbmNlbGxlcjNDb25maWcsIFZh
bGlkQ29uZmlnSXNOb3RNb2RpZmllZCkgeworICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7
CisgIEVYUEVDVF9UUlVFKEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpWYWxpZGF0ZSgmY29uZmlnKSk7
CisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGRlZmF1bHRfY29uZmlnOworICBFWFBFQ1RfRVEoQWVj
M0NvbmZpZ1RvSnNvblN0cmluZyhjb25maWcpLAorICAgICAgICAgICAgQWVjM0NvbmZpZ1RvSnNv
blN0cmluZyhkZWZhdWx0X2NvbmZpZykpOworfQorCitURVNUKEVjaG9DYW5jZWxsZXIzQ29uZmln
LCBJbnZhbGlkQ29uZmlnSXNDb3JyZWN0ZWQpIHsKKyAgLy8gQ2hhbmdlIGEgcGFyYW1ldGVyIGFu
ZCB2YWxpZGF0ZS4KKyAgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnOworICBjb25maWcuZWNo
b19tb2RlbC5taW5fbm9pc2VfZmxvb3JfcG93ZXIgPSAtMTYwMDAwMC5mOworICBFWFBFQ1RfRkFM
U0UoRWNob0NhbmNlbGxlcjNDb25maWc6OlZhbGlkYXRlKCZjb25maWcpKTsKKyAgRVhQRUNUX0dF
KGNvbmZpZy5lY2hvX21vZGVsLm1pbl9ub2lzZV9mbG9vcl9wb3dlciwgMC5mKTsKKyAgLy8gVmVy
aWZ5IHJlbWFpbmluZyBwYXJhbWV0ZXJzIGFyZSB1bmNoYW5nZWQuCisgIEVjaG9DYW5jZWxsZXIz
Q29uZmlnIGRlZmF1bHRfY29uZmlnOworICBjb25maWcuZWNob19tb2RlbC5taW5fbm9pc2VfZmxv
b3JfcG93ZXIgPQorICAgICAgZGVmYXVsdF9jb25maWcuZWNob19tb2RlbC5taW5fbm9pc2VfZmxv
b3JfcG93ZXI7CisgIEVYUEVDVF9FUShBZWMzQ29uZmlnVG9Kc29uU3RyaW5nKGNvbmZpZyksCisg
ICAgICAgICAgICBBZWMzQ29uZmlnVG9Kc29uU3RyaW5nKGRlZmF1bHRfY29uZmlnKSk7Cit9CisK
K1RFU1QoRWNob0NhbmNlbGxlcjNDb25maWcsIFZhbGlkYXRlZENvbmZpZ3NBcmVWYWxpZCkgewor
ICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CisgIGNvbmZpZy5kZWxheS5kb3duX3NhbXBs
aW5nX2ZhY3RvciA9IDk4MzsKKyAgRVhQRUNUX0ZBTFNFKEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpW
YWxpZGF0ZSgmY29uZmlnKSk7CisgIEVYUEVDVF9UUlVFKEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpW
YWxpZGF0ZSgmY29uZmlnKSk7Cit9Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9CVUlMRC5nbgppbmRleCBhNzA2MGEyMjlhZGYwMTcxODE0NzI0MzMz
YTY5ODM0M2UyY2NhYWQ1Li4zMWZlMmJlYzU4YjAzYmU1M2UxNDI4NDk0YTI3MDJhMGU2MjU0Mzg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvQlVJTEQuZ24KQEAgLTMwLDExICszMCwx
MyBAQCBydGNfc291cmNlX3NldCgiYXVkaW9fY29kZWNzX2FwaSIpIHsKICAgXQogICBkZXBzID0g
WwogICAgICIuLjphcnJheV92aWV3IiwKKyAgICAiLi46Yml0cmF0ZV9hbGxvY2F0aW9uIiwKICAg
ICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAg
ICAgIi4uLy4uL3J0Y19iYXNlOmRlcHJlY2F0aW9uIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRj
X2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi9ydGNfYmFzZTpzYW5pdGl6ZXIiLAorICAgICIu
Li8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlczpvcHRpb25hbCIsCiAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L0JVSUxELmduIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9M
MTYvQlVJTEQuZ24KaW5kZXggOTcyNDgwNTAwMTI1ZmE5ZGNlMjczMDdiNDc1M2Q2MjExNjYxZmUw
NC4uMzRlYzJlNDIwOGVmMzQ4NTZiNTg1NGJhOWMwY2RlZjRiOTkzNzJjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9MMTYvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvQlVJTEQuZ24KQEAgLTIxLDExICsyMSwxMiBAQCBy
dGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2VuY29kZXJfTDE2IikgewogICBdCiAgIGRlcHMgPSBb
CiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9u
IiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6cGNtMTZiIiwKICAgICAiLi4v
Li4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi8uLi9ydGNfYmFz
ZTpzYWZlX21pbm1heCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0
IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtMzksMTAgKzQwLDEx
IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rlcl9MMTYiKSB7CiAgIF0KICAgZGVw
cyA9IFsKICAgICAiLi46YXVkaW9fY29kZWNzX2FwaSIsCi0gICAgIi4uLy4uLy4uOndlYnJ0Y19j
b21tb24iLAogICAgICIuLi8uLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpwY20xNmIiLAogICAg
ICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uLy4uL3J0
Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwK
ICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rlcl9MMTYuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9h
dWRpb19kZWNvZGVyX0wxNi5jYwppbmRleCBhNzFlMzA4NzAwN2RmM2ZkNzZmYTIzMmZjM2UzNDY4
ZmEzODIxZTk5Li5iZTBjNmI1NmIyNWI1NjllYWU1ZTY1YmM3Nzg1OTg3YzRjNTg2MjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL0wxNi9hdWRpb19kZWNvZGVyX0wxNi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19kZWNv
ZGVyX0wxNi5jYwpAQCAtMTEsNyArMTEsNyBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3Mv
TDE2L2F1ZGlvX2RlY29kZXJfTDE2LmgiCiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnku
aCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9fZGVjb2Rlcl9wY20xNmIuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3BjbTE2Yl9jb21tb24uaCIKICNpbmNs
dWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCkBAIC0yMyw3ICsyMyw3
IEBAIGFic2w6Om9wdGlvbmFsPEF1ZGlvRGVjb2RlckwxNjo6Q29uZmlnPiBBdWRpb0RlY29kZXJM
MTY6OlNkcFRvQ29uZmlnKAogICBDb25maWcgY29uZmlnOwogICBjb25maWcuc2FtcGxlX3JhdGVf
aHogPSBmb3JtYXQuY2xvY2tyYXRlX2h6OwogICBjb25maWcubnVtX2NoYW5uZWxzID0gcnRjOjpj
aGVja2VkX2Nhc3Q8aW50Pihmb3JtYXQubnVtX2NoYW5uZWxzKTsKLSAgcmV0dXJuIFNUUl9DQVNF
X0NNUChmb3JtYXQubmFtZS5jX3N0cigpLCAiTDE2IikgPT0gMCAmJiBjb25maWcuSXNPaygpCisg
IHJldHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiTDE2IikgJiYgY29u
ZmlnLklzT2soKQogICAgICAgICAgICAgID8gYWJzbDo6b3B0aW9uYWw8Q29uZmlnPihjb25maWcp
CiAgICAgICAgICAgICAgOiBhYnNsOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVk
aW9fZGVjb2Rlcl9MMTYuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2RlY29kZXJfTDE2LmgKaW5kZXggMTg0ZWMy
NGVkOTJmMWUyMmQzMGM5YjJlNmJlN2YzZDdmNzdlMTVjOC4uZjBiZTAzNjU5YzU0OGMxYzQ3OGIz
YWUwZTk1NjRlNTU5NTMwMzEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rlcl9MMTYu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL0wxNi9hdWRpb19kZWNvZGVyX0wxNi5oCkBAIC0xOCwxNCArMTgsMTMgQEAKICNp
bmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhw
b3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBMMTYgZGVjb2RlciBBUEkgZm9yIHVz
ZSBhcyBhIHRlbXBsYXRlIHBhcmFtZXRlciB0bwogLy8gQ3JlYXRlQXVkaW9EZWNvZGVyRmFjdG9y
eTwuLi4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxv
cG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi1zdHJ1Y3QgQXVkaW9EZWNvZGVy
TDE2IHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvRGVjb2RlckwxNiB7CiAgIHN0cnVjdCBDb25m
aWcgewogICAgIGJvb2wgSXNPaygpIGNvbnN0IHsKICAgICAgIHJldHVybiAoc2FtcGxlX3JhdGVf
aHogPT0gODAwMCB8fCBzYW1wbGVfcmF0ZV9oeiA9PSAxNjAwMCB8fApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9M
MTYvYXVkaW9fZW5jb2Rlcl9MMTYuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5jYwppbmRl
eCBiNTE2ZjYyODYzZGEyNGZjZTM1ZWY1MmQ0NmEwZTA0YzJkNWM3OTdmLi4xYmI1NTJiYzVjMWU2
ZTMyNTdiMTg1NzJmOTdiMzM0NWZkYWUzYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19lbmNv
ZGVyX0wxNi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5jYwpAQCAtMTEsNyArMTEs
NyBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2VuY29kZXJfTDE2Lmgi
CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlw
ZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9t
YXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVk
aW9fZW5jb2Rlcl9wY20xNmIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvcGNtMTZiL3BjbTE2Yl9jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9z
YWZlX2NvbnZlcnNpb25zLmgiCkBAIC0zNSw3ICszNSw3IEBAIGFic2w6Om9wdGlvbmFsPEF1ZGlv
RW5jb2RlckwxNjo6Q29uZmlnPiBBdWRpb0VuY29kZXJMMTY6OlNkcFRvQ29uZmlnKAogICAgICAg
Y29uZmlnLmZyYW1lX3NpemVfbXMgPSBydGM6OlNhZmVDbGFtcCgxMCAqICgqcHRpbWUgLyAxMCks
IDEwLCA2MCk7CiAgICAgfQogICB9Ci0gIHJldHVybiBTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUu
Y19zdHIoKSwgIkwxNiIpID09IDAgJiYgY29uZmlnLklzT2soKQorICByZXR1cm4gYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIkwxNiIpICYmIGNvbmZpZy5Jc09rKCkKICAgICAg
ICAgICAgICA/IGFic2w6Om9wdGlvbmFsPENvbmZpZz4oY29uZmlnKQogICAgICAgICAgICAgIDog
YWJzbDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2VuY29kZXJfTDE2Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5oCmluZGV4IDM0MGUzYWY0N2ZiYWY3N2NhYWViODQ0
MzExYTc0Yjg5NTA2ZWRmY2EuLmI0MTAyODY4MDJmZTc2ODlhY2M0Zjk4ODk3NzhiODhjYzhlZThh
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2VuY29kZXJfTDE2LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVk
aW9fZW5jb2Rlcl9MMTYuaApAQCAtMTgsMTQgKzE4LDEzIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVj
cy9hdWRpb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3Jt
YXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIAogLy8gTDE2IGVuY29kZXIgQVBJIGZvciB1c2UgYXMgYSB0ZW1wbGF0ZSBw
YXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlvRW5jb2RlckZhY3Rvcnk8Li4uPigpLgotLy8KLS8v
IE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hh
bmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRW5jb2RlckwxNiB7CitzdHJ1Y3QgUlRD
X0VYUE9SVCBBdWRpb0VuY29kZXJMMTYgewogICBzdHJ1Y3QgQ29uZmlnIHsKICAgICBib29sIElz
T2soKSBjb25zdCB7CiAgICAgICByZXR1cm4gKHNhbXBsZV9yYXRlX2h6ID09IDgwMDAgfHwgc2Ft
cGxlX3JhdGVfaHogPT0gMTYwMDAgfHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9p
ZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9pZC5jYwppbmRleCBhYzg0MTA3ZWRhMTA4MjQ5ZDk0
ZDMxYTg3MTc3NjNlOWYwNGFmMTc4Li42Y2I1MWVkNmI3MmM3ZTRmNDY1MmRjNzI4YWEzM2FlM2Uz
OTUyNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRp
b19jb2RlY19wYWlyX2lkLmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19jb2RlY19wYWlyX2lkLmgiCiAKICNpbmNsdWRlIDxhdG9taWM+CisjaW5j
bHVkZSA8Y3N0ZGludD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2RlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oCmluZGV4IGIwMWE2NmEw
NjRhNDRlYmY4OWU1ZTg3ODkxYzliZDEzYmRkYTk4OTQuLjg4OWUyYzYyZDBlZDg5ZmEwNDg3OWY4
YjdhODk3MWViYjNhNWZlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
YXVkaW9fZGVjb2Rlci5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIEFQSV9BVURJT19DT0RF
Q1NfQVVESU9fREVDT0RFUl9IXwogI2RlZmluZSBBUElfQVVESU9fQ09ERUNTX0FVRElPX0RFQ09E
RVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oCmluZGV4IDkwZjkzZjBj
ZDVmYzkwOGU5OTE4MzE5NmZhZDA2ZmRkZjc4ZWU0ZmIuLjU1ZTE5N2ExNGE5MjcwODIyNmQzZGZh
YmMzNTdmMjNjMGFhNzVmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaApAQCAtMjMsNyArMjMsNiBAQAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKIC8vIEEgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgQXVkaW9EZWNvZGVycy4K
LS8vIE5PVEU6IFRoaXMgY2xhc3MgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBj
aGFuZ2Ugd2l0aG91dCBub3RpY2UuCiBjbGFzcyBBdWRpb0RlY29kZXJGYWN0b3J5IDogcHVibGlj
IHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogIHB1YmxpYzoKICAgdmlydHVhbCBzdGQ6OnZlY3Rv
cjxBdWRpb0NvZGVjU3BlYz4gR2V0U3VwcG9ydGVkRGVjb2RlcnMoKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2Zh
Y3RvcnlfdGVtcGxhdGUuaAppbmRleCBjZGJlOGJkZTdhODQyZThlOGQ1YTJhODYzY2E4YWUxZThj
ZWNiMjg3Li4yMmJiN2RlNDcyMTM2ZThjNGVlYWMyYjFkM2U4NjQxNDQ0MzYzMTFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5X3RlbXBsYXRlLmgKQEAgLTExMiw4ICsxMTIsNiBAQCBjbGFzcyBBdWRpb0Rl
Y29kZXJGYWN0b3J5VCA6IHB1YmxpYyBBdWRpb0RlY29kZXJGYWN0b3J5IHsKIC8vIGRlY29kZXIg
dHlwZXMgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBzcGVjaWZpZWQgaW4gdGhlIHRlbXBsYXRlIGFy
Z3VtZW50CiAvLyBsaXN0LCBzdG9wcGluZyBhdCB0aGUgZmlyc3Qgb25lIHRoYXQgY2xhaW1zIHRv
IGJlIGFibGUgdG8gZG8gdGhlIGpvYi4KIC8vCi0vLyBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIHN0
aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotLy8K
IC8vIFRPRE8oa3dpYmVyZyk6IFBvaW50IGF0IENyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0
b3J5KCkgZm9yIGFuIGV4YW1wbGUgb2YKIC8vIGhvdyBpdCBpcyB1c2VkLgogdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIFRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19l
bmNvZGVyLmNjCmluZGV4IDU5NWMxMTEzMWU3YzQxMDY2ZjM0ZWUyNDFlN2YxOWYzMjkwNjI3NGEu
LjFkODg1ZjljZWNmODRkODA5OGY0ZTRjMjQxMjcxZjA3ZDdlZmU1OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
YXVkaW9fZW5jb2Rlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuY2MKQEAgLTkyLDYgKzkyLDEx
IEBAIHZvaWQgQXVkaW9FbmNvZGVyOjpPblJlY2VpdmVkVXBsaW5rQmFuZHdpZHRoKAogICAgIGlu
dCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMsCiAgICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4g
YndlX3BlcmlvZF9tcykge30KIAordm9pZCBBdWRpb0VuY29kZXI6Ok9uUmVjZWl2ZWRVcGxpbmtB
bGxvY2F0aW9uKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSkgeworICBPblJlY2VpdmVk
VXBsaW5rQmFuZHdpZHRoKHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5icHMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1cGRhdGUuYndlX3BlcmlvZC5tcygpKTsKK30KKwogdm9pZCBBdWRp
b0VuY29kZXI6Ok9uUmVjZWl2ZWRSdHQoaW50IHJ0dF9tcykge30KIAogdm9pZCBBdWRpb0VuY29k
ZXI6Ok9uUmVjZWl2ZWRPdmVyaGVhZChzaXplX3Qgb3ZlcmhlYWRfYnl0ZXNfcGVyX3BhY2tldCkg
e30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgKaW5k
ZXggNmExZjY1MzRiMjFhOGEzZmZiNmQyMDlkOTU1NzFjODlhZTIwOGExNi4uYzkwODUxODA2M2Q0
ZGE3Yzk0YWEwZTkzNDZkYjdlZTNhY2JlZjFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgKQEAgLTExLDEzICsxMSwxMyBAQAogI2lmbmRlZiBB
UElfQVVESU9fQ09ERUNTX0FVRElPX0VOQ09ERVJfSF8KICNkZWZpbmUgQVBJX0FVRElPX0NPREVD
U19BVURJT19FTkNPREVSX0hfCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNs
dWRlICJhcGkvY2FsbC9iaXRyYXRlX2FsbG9jYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9i
dWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgogCkBAIC0yMjIsNiAr
MjIyLDEwIEBAIGNsYXNzIEF1ZGlvRW5jb2RlciB7CiAgIHZpcnR1YWwgdm9pZCBPblJlY2VpdmVk
VXBsaW5rQmFuZHdpZHRoKGludCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGJ3
ZV9wZXJpb2RfbXMpOwogCisgIC8vIFByb3ZpZGVzIHRhcmdldCBhdWRpbyBiaXRyYXRlIGFuZCBj
b3JyZXNwb25kaW5nIHByb2JpbmcgaW50ZXJ2YWwgb2YKKyAgLy8gdGhlIGJhbmR3aWR0aCBlc3Rp
bWF0b3IgdG8gdGhpcyBlbmNvZGVyIHRvIGFsbG93IGl0IHRvIGFkYXB0LgorICB2aXJ0dWFsIHZv
aWQgT25SZWNlaXZlZFVwbGlua0FsbG9jYXRpb24oQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBk
YXRlKTsKKwogICAvLyBQcm92aWRlcyBSVFQgdG8gdGhpcyBlbmNvZGVyIHRvIGFsbG93IGl0IHRv
IGFkYXB0LgogICB2aXJ0dWFsIHZvaWQgT25SZWNlaXZlZFJ0dChpbnQgcnR0X21zKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5LmgKaW5kZXggZmI0ZTIzZmZlNzhiNWIyMmM2N2UyMjg4OGEzMjcyYzY3YWQzYjliOS4uYjI5
MDk2N2M3ODAzZmQ3NDdkOGI0N2IzNDY1ZjQ0OWU3NGJlYWUwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRp
b19lbmNvZGVyX2ZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oCkBAIC0y
Myw3ICsyMyw2IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gQSBmYWN0b3J5IHRoYXQgY3Jl
YXRlcyBBdWRpb0VuY29kZXJzLgotLy8gTk9URTogVGhpcyBjbGFzcyBpcyBzdGlsbCB1bmRlciBk
ZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIGNsYXNzIEF1ZGlvRW5j
b2RlckZhY3RvcnkgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgcHVibGljOgog
ICAvLyBSZXR1cm5zIGEgcHJpb3JpdGl6ZWQgbGlzdCBvZiBhdWRpbyBjb2RlY3MsIHRvIHVzZSBm
b3Igc2lnbmFsaW5nIGV0Yy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlcl9mYWN0b3J5X3Rl
bXBsYXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oCmluZGV4IDM3NmIz
OWU0YzZmOWZjOGVhYTNjN2VmMzdhZGNkZWU2MWM0MjgzODMuLjIwODg2MTkwMTk2MjYyYmEyNzc3
Y2U2Y2JiYTc4ZmVkZTY2OWU3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
X3RlbXBsYXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnlfdGVtcGxhdGUuaApAQCAt
MTMxLDggKzEzMSw2IEBAIGNsYXNzIEF1ZGlvRW5jb2RlckZhY3RvcnlUIDogcHVibGljIEF1ZGlv
RW5jb2RlckZhY3RvcnkgewogLy8gZW5jb2RlcnMgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBzcGVj
aWZpZWQgaW4gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QsCiAvLyBzdG9wcGluZyBhdCB0aGUg
Zmlyc3Qgb25lIHRoYXQgY2xhaW1zIHRvIGJlIGFibGUgdG8gZG8gdGhlIGpvYi4KIC8vCi0vLyBO
T1RFOiBUaGlzIGZ1bmN0aW9uIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hh
bmdlIHdpdGhvdXQgbm90aWNlLgotLy8KIC8vIFRPRE8oa3dpYmVyZyk6IFBvaW50IGF0IENyZWF0
ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCkgZm9yIGFuIGV4YW1wbGUgb2YKIC8vIGhvdyBp
dCBpcyB1c2VkLgogdGVtcGxhdGUgPHR5cGVuYW1lLi4uIFRzPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRp
b19mb3JtYXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5jYwppbmRleCA4MWVkMjk5ZGRiNjZhYWY4MzY5
NjdkNGY0NDZmNzNlOTA4YmM3MjExLi4xMTc4OGI5MWU4MjkxOThiZjI3N2JjMzRkZmZlODBiOWZm
NTM5ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1h
dC5jYwpAQCAtMTAsNyArMTAsNyBAQAogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRp
b19mb3JtYXQuaCIKIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxk
L2luY2x1ZGUpCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCkBAIC0zMiw3ICszMiw3IEBAIFNkcEF1ZGlvRm9ybWF0OjpTZHBBdWRpb0Zvcm1h
dChhYnNsOjpzdHJpbmdfdmlldyBuYW1lLAogICAgICAgcGFyYW1ldGVycyhwYXJhbSkge30KIAog
Ym9vbCBTZHBBdWRpb0Zvcm1hdDo6TWF0Y2hlcyhjb25zdCBTZHBBdWRpb0Zvcm1hdCYgbykgY29u
c3QgewotICByZXR1cm4gU1RSX0NBU0VfQ01QKG5hbWUuY19zdHIoKSwgby5uYW1lLmNfc3RyKCkp
ID09IDAgJiYKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwgby5uYW1lKSAm
JgogICAgICAgICAgY2xvY2tyYXRlX2h6ID09IG8uY2xvY2tyYXRlX2h6ICYmIG51bV9jaGFubmVs
cyA9PSBvLm51bV9jaGFubmVsczsKIH0KIApAQCAtNDEsMTkgKzQxLDExIEBAIFNkcEF1ZGlvRm9y
bWF0JiBTZHBBdWRpb0Zvcm1hdDo6b3BlcmF0b3I9KGNvbnN0IFNkcEF1ZGlvRm9ybWF0JikgPSBk
ZWZhdWx0OwogU2RwQXVkaW9Gb3JtYXQmIFNkcEF1ZGlvRm9ybWF0OjpvcGVyYXRvcj0oU2RwQXVk
aW9Gb3JtYXQmJikgPSBkZWZhdWx0OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2RwQXVkaW9G
b3JtYXQmIGEsIGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBiKSB7Ci0gIHJldHVybiBTVFJfQ0FTRV9D
TVAoYS5uYW1lLmNfc3RyKCksIGIubmFtZS5jX3N0cigpKSA9PSAwICYmCisgIHJldHVybiBhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKGEubmFtZSwgYi5uYW1lKSAmJgogICAgICAgICAgYS5jbG9ja3Jh
dGVfaHogPT0gYi5jbG9ja3JhdGVfaHogJiYgYS5udW1fY2hhbm5lbHMgPT0gYi5udW1fY2hhbm5l
bHMgJiYKICAgICAgICAgIGEucGFyYW1ldGVycyA9PSBiLnBhcmFtZXRlcnM7CiB9CiAKLXZvaWQg
c3dhcChTZHBBdWRpb0Zvcm1hdCYgYSwgU2RwQXVkaW9Gb3JtYXQmIGIpIHsKLSAgdXNpbmcgc3Rk
Ojpzd2FwOwotICBzd2FwKGEubmFtZSwgYi5uYW1lKTsKLSAgc3dhcChhLmNsb2NrcmF0ZV9oeiwg
Yi5jbG9ja3JhdGVfaHopOwotICBzd2FwKGEubnVtX2NoYW5uZWxzLCBiLm51bV9jaGFubmVscyk7
Ci0gIHN3YXAoYS5wYXJhbWV0ZXJzLCBiLnBhcmFtZXRlcnMpOwotfQotCiBBdWRpb0NvZGVjSW5m
bzo6QXVkaW9Db2RlY0luZm8oaW50IHNhbXBsZV9yYXRlX2h6LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBudW1fY2hhbm5lbHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGJpdHJhdGVfYnBzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2Rl
Y3MvYXVkaW9fZm9ybWF0LmgKaW5kZXggYWE1ZGJiMTNiNjVkNzJlZDBmNGQ2ZDZlZTY4NmQ0NzIw
MmZkNDc5Yy4uYjhiMDQyMTc4YmExYTVlMjQyNzVlNTU5NTdkNzZhNTJkOGE0ODBhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19mb3JtYXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oCkBAIC0xMSwxOSAr
MTEsMTggQEAKICNpZm5kZWYgQVBJX0FVRElPX0NPREVDU19BVURJT19GT1JNQVRfSF8KICNkZWZp
bmUgQVBJX0FVRElPX0NPREVDU19BVURJT19GT1JNQVRfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5o
PgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4K
IAogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgotI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAog
Ly8gU0RQIHNwZWNpZmljYXRpb24gZm9yIGEgc2luZ2xlIGF1ZGlvIGNvZGVjLgotLy8gTk9URTog
VGhpcyBjbGFzcyBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRo
b3V0IG5vdGljZS4KLXN0cnVjdCBTZHBBdWRpb0Zvcm1hdCB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBT
ZHBBdWRpb0Zvcm1hdCB7CiAgIHVzaW5nIFBhcmFtZXRlcnMgPSBzdGQ6Om1hcDxzdGQ6OnN0cmlu
Zywgc3RkOjpzdHJpbmc+OwogCiAgIFNkcEF1ZGlvRm9ybWF0KGNvbnN0IFNkcEF1ZGlvRm9ybWF0
Jik7CkBAIC01NCw4ICs1Myw2IEBAIHN0cnVjdCBTZHBBdWRpb0Zvcm1hdCB7CiAgIFBhcmFtZXRl
cnMgcGFyYW1ldGVyczsKIH07CiAKLXZvaWQgc3dhcChTZHBBdWRpb0Zvcm1hdCYgYSwgU2RwQXVk
aW9Gb3JtYXQmIGIpOwotCiAvLyBJbmZvcm1hdGlvbiBhYm91dCBob3cgYW4gYXVkaW8gZm9ybWF0
IGlzIHRyZWF0ZWQgYnkgdGhlIGNvZGVjIGltcGxlbWVudGF0aW9uLgogLy8gQ29udGFpbnMgYmFz
aWMgaW5mb3JtYXRpb24sIHN1Y2ggYXMgc2FtcGxlIHJhdGUgYW5kIG51bWJlciBvZiBjaGFubmVs
cywgd2hpY2gKIC8vIGlzbid0IHVuaWZvcm1seSBwcmVzZW50ZWQgYnkgU0RQLiBBbHNvIGNvbnRh
aW5zIGZsYWdzIGluZGljYXRpbmcgc3VwcG9ydCBmb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9h
dWRpb19kZWNvZGVyX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3Rvcnku
aAppbmRleCAzMTI3NDAzZTI0M2ZiOTAxODYzMTA1YTc2ZDk0ZGM2NmI5MzdkZDY4Li4zYWNjZDRh
MzAyMGQyNDI5OTE4MTQ5YTRiNmI5YmYzZTY4NWVjMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5f
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFj
dG9yeS5oCkBAIC0xNyw3ICsxNyw2IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gQ3JlYXRl
cyBhIG5ldyBmYWN0b3J5IHRoYXQgY2FuIGNyZWF0ZSB0aGUgYnVpbHQtaW4gdHlwZXMgb2YgYXVk
aW8gZGVjb2RlcnMuCi0vLyBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIHN0aWxsIHVuZGVyIGRldmVs
b3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgogcnRjOjpzY29wZWRfcmVmcHRy
PEF1ZGlvRGVjb2RlckZhY3Rvcnk+IENyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5KCk7
CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19l
bmNvZGVyX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaAppbmRl
eCBkMzdmZjI1N2U2ZTMyZTM5Y2M3Nzc4NDVmZThkMzk3MmViM2UxM2NjLi4zYzY3ZGQzMGU2NmIy
MzUxZWQ0MGFjZWFjMTU0YjFiNDI4ZmJkNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5o
CkBAIC0xNyw3ICsxNyw2IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gQ3JlYXRlcyBhIG5l
dyBmYWN0b3J5IHRoYXQgY2FuIGNyZWF0ZSB0aGUgYnVpbHQtaW4gdHlwZXMgb2YgYXVkaW8gZW5j
b2RlcnMuCi0vLyBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50
IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgogcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
RW5jb2RlckZhY3Rvcnk+IENyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCk7CiAKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9CVUlMRC5nbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcx
MS9CVUlMRC5nbgppbmRleCAxNjkxNzJhNjY4MjlhYjc5M2Y1MTgzMWFkNGM5YmE4ODg1MDc2NjZi
Li4zYjhmMjNjMWJjNmU3NDMwNzU1YWM1ZjcyZWU5MjhmZmE0MzQyYjhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L2c3MTEvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL0JVSUxELmduCkBAIC0yMSwxMSArMjEsMTIgQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19lbmNvZGVyX2c3MTEiKSB7CiAgIF0KICAgZGVwcyA9
IFsKICAgICAiLi46YXVkaW9fY29kZWNzX2FwaSIsCi0gICAgIi4uLy4uLy4uOndlYnJ0Y19jb21t
b24iLAogICAgICIuLi8uLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpnNzExIiwKICAgICAiLi4v
Li4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi8uLi9ydGNfYmFz
ZTpzYWZlX21pbm1heCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0
IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtMzksMTAgKzQwLDEx
IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rlcl9nNzExIikgewogICBdCiAgIGRl
cHMgPSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNf
Y29tbW9uIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6ZzcxMSIsCiAgICAg
Ii4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4vcnRj
X2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAog
ICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9nNzExLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzEx
L2F1ZGlvX2RlY29kZXJfZzcxMS5jYwppbmRleCBjYjE2NTg0Y2RlZTU0MDJlYjIwNWI0M2I0N2I5
Mzk1MzFhNzdhNjA5Li45MTU5OWM0MTZhZGY5M2M0NTk4OTVjMzAwM2NkZmRmMzI3ODliNmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9nNzExLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRp
b19kZWNvZGVyX2c3MTEuY2MKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAK
ICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMu
aCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRj
aC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2Rl
Y29kZXJfcGNtLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9u
cy5oIgogCkBAIC0yMiw4ICsyMiw4IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBhYnNsOjpvcHRp
b25hbDxBdWRpb0RlY29kZXJHNzExOjpDb25maWc+IEF1ZGlvRGVjb2Rlckc3MTE6OlNkcFRvQ29u
ZmlnKAogICAgIGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgY29uc3QgYm9vbCBp
c19wY211ID0gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJQQ01VIikgPT0gMDsK
LSAgY29uc3QgYm9vbCBpc19wY21hID0gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCks
ICJQQ01BIikgPT0gMDsKKyAgY29uc3QgYm9vbCBpc19wY211ID0gYWJzbDo6RXF1YWxzSWdub3Jl
Q2FzZShmb3JtYXQubmFtZSwgIlBDTVUiKTsKKyAgY29uc3QgYm9vbCBpc19wY21hID0gYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIlBDTUEiKTsKICAgaWYgKGZvcm1hdC5jbG9j
a3JhdGVfaHogPT0gODAwMCAmJiBmb3JtYXQubnVtX2NoYW5uZWxzID49IDEgJiYKICAgICAgIChp
c19wY211IHx8IGlzX3BjbWEpKSB7CiAgICAgQ29uZmlnIGNvbmZpZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
ZzcxMS9hdWRpb19kZWNvZGVyX2c3MTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX2c3MTEuaApp
bmRleCA4Mjc1YThjN2ExNGJmZjRkZjRkMTRjNGM4YjM4NTkzNjczNzg5YzJlLi5jY2QxZWUwNDgw
MDUyNzMzYjcxNmM0NjgzZWZkNzkyNGQyYjUxOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9f
ZGVjb2Rlcl9nNzExLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2RlY29kZXJfZzcxMS5oCkBAIC0xOCwx
NCArMTgsMTMgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJf
aWQuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNs
dWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBHNzExIGRl
Y29kZXIgQVBJIGZvciB1c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1
ZGlvRGVjb2RlckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0
aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3Ry
dWN0IEF1ZGlvRGVjb2Rlckc3MTEgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9EZWNvZGVyRzcx
MSB7CiAgIHN0cnVjdCBDb25maWcgewogICAgIGVudW0gY2xhc3MgVHlwZSB7IGtQY21VLCBrUGNt
QSB9OwogICAgIGJvb2wgSXNPaygpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19l
bmNvZGVyX2c3MTEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9nNzExLmNjCmluZGV4IDFkNWU1
NDEyNzZiOWFlZGQ4NmM2OGQwMWY1YzdjNzA3Y2MyOGZlM2MuLjBjYzhkYzRkZGQyOWVmNWI1NWVl
MDcxOTI3YTY5NDNlNjAzMzRkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19lbmNvZGVyX2c3
MTEuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfZzcxMS5jYwpAQCAtMTQsNyArMTQsNyBA
QAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgot
I2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5j
bHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9wY20uaCIKICNpbmNsdWRlICJydGNfYmFzZS9u
dW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mv
c2FmZV9taW5tYXguaCIKQEAgLTI0LDggKzI0LDggQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGFi
c2w6Om9wdGlvbmFsPEF1ZGlvRW5jb2Rlckc3MTE6OkNvbmZpZz4gQXVkaW9FbmNvZGVyRzcxMTo6
U2RwVG9Db25maWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBjb25z
dCBib29sIGlzX3BjbXUgPSBTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIlBDTVUi
KSA9PSAwOwotICBjb25zdCBib29sIGlzX3BjbWEgPSBTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUu
Y19zdHIoKSwgIlBDTUEiKSA9PSAwOworICBjb25zdCBib29sIGlzX3BjbXUgPSBhYnNsOjpFcXVh
bHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiUENNVSIpOworICBjb25zdCBib29sIGlzX3BjbWEg
PSBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiUENNQSIpOwogICBpZiAoZm9y
bWF0LmNsb2NrcmF0ZV9oeiA9PSA4MDAwICYmIGZvcm1hdC5udW1fY2hhbm5lbHMgPj0gMSAmJgog
ICAgICAgKGlzX3BjbXUgfHwgaXNfcGNtYSkpIHsKICAgICBDb25maWcgY29uZmlnOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X2NvZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfZzcxMS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJf
ZzcxMS5oCmluZGV4IDZiNmViNWZjZTBjZTU0ZmNiZDYwYzY0ZmVhNjdkOWJjZGExYjE2ODYuLjIz
YWUxOGI1ZTNmMDMyYjgzOWNmN2U5MDllMDg0NDVmM2I2OGUwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcx
MS9hdWRpb19lbmNvZGVyX2c3MTEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9nNzExLmgK
QEAgLTE4LDE0ICsxOCwxMyBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fY29k
ZWNfcGFpcl9pZC5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5o
IgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8v
IEc3MTEgZW5jb2RlciBBUEkgZm9yIHVzZSBhcyBhIHRlbXBsYXRlIHBhcmFtZXRlciB0bwogLy8g
Q3JlYXRlQXVkaW9FbmNvZGVyRmFjdG9yeTwuLi4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1
Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3Rp
Y2UuCi1zdHJ1Y3QgQXVkaW9FbmNvZGVyRzcxMSB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBBdWRpb0Vu
Y29kZXJHNzExIHsKICAgc3RydWN0IENvbmZpZyB7CiAgICAgZW51bSBjbGFzcyBUeXBlIHsga1Bj
bVUsIGtQY21BIH07CiAgICAgYm9vbCBJc09rKCkgY29uc3QgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIy
L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9nNzIyL0JVSUxELmduCmluZGV4IDUwYjEzOTZkMjkxNWViZmYyYzZkMTFj
ZTM1ZGNjNzg5MWMzYjFjMzAuLmU0MzIxZDI5OTMxN2FmOGYwMWFkM2U1NjJhMDQzMDk2ZWUxZWYy
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3MvZzcyMi9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvQlVJTEQuZ24KQEAg
LTI5LDExICsyOSwxMiBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2VuY29kZXJfZzcyMiIp
IHsKICAgZGVwcyA9IFsKICAgICAiOmF1ZGlvX2VuY29kZXJfZzcyMl9jb25maWciLAogICAgICIu
LjphdWRpb19jb2RlY3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAg
Ii4uLy4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmc3MjIiLAogICAgICIuLi8uLi8uLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnNhZmVfbWlu
bWF4IiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CkBAIC00NywxMCArNDgsMTEgQEAgcnRjX3N0
YXRpY19saWJyYXJ5KCJhdWRpb19kZWNvZGVyX2c3MjIiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAg
ICAiLi46YXVkaW9fY29kZWNzX2FwaSIsCi0gICAgIi4uLy4uLy4uOndlYnJ0Y19jb21tb24iLAog
ICAgICIuLi8uLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpnNzIyIiwKICAgICAiLi4vLi4vLi4v
cnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0
ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9y
eSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVj
b2Rlcl9nNzIyLmNjCmluZGV4IGYxZTJhZmJhYjUwZDBmZjdkMDM4NjQ1ZTg0Y2Y3ZjI1NmIxOThl
MWEuLjJjYzE2YzM3ZDk0ZDY1MGI0ZWVhYmIyNmNkYzRkMjliODA0NTU4M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2Rl
Y3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJf
ZzcyMi5jYwpAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUg
ImFic2wvbWVtb3J5L21lbW9yeS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9M
SU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogCkBA
IC0yMiw3ICsyMiw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBhYnNsOjpvcHRpb25hbDxBdWRp
b0RlY29kZXJHNzIyOjpDb25maWc+IEF1ZGlvRGVjb2Rlckc3MjI6OlNkcFRvQ29uZmlnKAogICAg
IGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgcmV0dXJuIFNUUl9DQVNFX0NNUChm
b3JtYXQubmFtZS5jX3N0cigpLCAiRzcyMiIpID09IDAgJiYKKyAgcmV0dXJuIGFic2w6OkVxdWFs
c0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJHNzIyIikgJiYKICAgICAgICAgICAgICAgICAgZm9y
bWF0LmNsb2NrcmF0ZV9oeiA9PSA4MDAwICYmCiAgICAgICAgICAgICAgICAgIChmb3JtYXQubnVt
X2NoYW5uZWxzID09IDEgfHwgZm9ybWF0Lm51bV9jaGFubmVscyA9PSAyKQogICAgICAgICAgICAg
ID8gYWJzbDo6b3B0aW9uYWw8Q29uZmlnPigKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19kZWNv
ZGVyX2c3MjIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIuaAppbmRleCBiN2JiMDg5M2Yz
MzAzZTNhNGY5OGE1N2U2ODdiZWU2MjA1MDRlYzllLi4yYTY3NDkyNmRiY2NmMWM3NmMwOTA1OTVk
ZWViMTM5MGMzYTEzZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5oCkBAIC0xOCwxNCArMTgsMTMgQEAKICNp
bmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhw
b3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBHNzIyIGRlY29kZXIgQVBJIGZvciB1
c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rv
cnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVs
b3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRGVjb2Rl
ckc3MjIgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9EZWNvZGVyRzcyMiB7CiAgIHN0cnVjdCBD
b25maWcgewogICAgIGJvb2wgSXNPaygpIGNvbnN0IHsgcmV0dXJuIG51bV9jaGFubmVscyA9PSAx
IHx8IG51bV9jaGFubmVscyA9PSAyOyB9CiAgICAgaW50IG51bV9jaGFubmVsczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19j
b2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9n
NzIyLmNjCmluZGV4IDBjZjcxNjM5YmYzMmY5MzdkMmZkNDUyNDcwYTQxYmU4N2Y4OWFiNGYuLjYz
NzRhZTgwMmZhYTg3NzQ4Y2NiYTQ2ZTE3Mjc1MmJiNzY2OGMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcy
Mi9hdWRpb19lbmNvZGVyX2c3MjIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5j
YwpAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1
aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCkBAIC0yNCw3ICsyNCw3IEBAIG5hbWVz
cGFjZSB3ZWJydGMgewogCiBhYnNsOjpvcHRpb25hbDxBdWRpb0VuY29kZXJHNzIyQ29uZmlnPiBB
dWRpb0VuY29kZXJHNzIyOjpTZHBUb0NvbmZpZygKICAgICBjb25zdCBTZHBBdWRpb0Zvcm1hdCYg
Zm9ybWF0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgImc3MjIi
KSAhPSAwIHx8CisgIGlmICghYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgImc3
MjIiKSB8fAogICAgICAgZm9ybWF0LmNsb2NrcmF0ZV9oeiAhPSA4MDAwKSB7CiAgICAgcmV0dXJu
IGFic2w6Om51bGxvcHQ7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3
MjIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuaAppbmRleCBiOTdmZTFiMTQ3ODkwZDA4
NTQyNzZkMTMxMTIwOGU5OWIxMGNjZjlhLi4zMjdjMGFmMDRhYTdjZTA0NTU4NDFmOTgxYzY2MmFi
Zjg2MmI2ZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5oCkBAIC0xOSwxNCArMTksMTMgQEAKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvZzcyMi9h
dWRpb19lbmNvZGVyX2c3MjJfY29uZmlnLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0
Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEc3MjIgZW5jb2RlciBBUEkg
Zm9yIHVzZSBhcyBhIHRlbXBsYXRlIHBhcmFtZXRlciB0bwogLy8gQ3JlYXRlQXVkaW9FbmNvZGVy
RmFjdG9yeTwuLi4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIg
ZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi1zdHJ1Y3QgQXVkaW9F
bmNvZGVyRzcyMiB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBBdWRpb0VuY29kZXJHNzIyIHsKICAgdXNp
bmcgQ29uZmlnID0gQXVkaW9FbmNvZGVyRzcyMkNvbmZpZzsKICAgc3RhdGljIGFic2w6Om9wdGlv
bmFsPEF1ZGlvRW5jb2Rlckc3MjJDb25maWc+IFNkcFRvQ29uZmlnKAogICAgICAgY29uc3QgU2Rw
QXVkaW9Gb3JtYXQmIGF1ZGlvX2Zvcm1hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5j
b2Rlcl9nNzIyX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMl9jb25maWcuaApp
bmRleCA3NzNlNDMwY2UzYzBjOGMwNmFkMmU1YzU1YTA0NTM5MTQwMzgyNzRkLi4yODc4OTg1ODlm
Y2FhYTAyZmJiZDg5NWExY2ZiZmM5N2QzODkxYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9f
ZW5jb2Rlcl9nNzIyX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjJfY29u
ZmlnLmgKQEAgLTEzLDcgKzEzLDYgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLS8vIE5PVEU6
IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdp
dGhvdXQgbm90aWNlLgogc3RydWN0IEF1ZGlvRW5jb2Rlckc3MjJDb25maWcgewogICBib29sIElz
T2soKSBjb25zdCB7CiAgICAgcmV0dXJuIGZyYW1lX3NpemVfbXMgPiAwICYmIGZyYW1lX3NpemVf
bXMgJSAxMCA9PSAwICYmIG51bV9jaGFubmVscyA+PSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL0JV
SUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9pbGJjL0JVSUxELmduCmluZGV4IGQ0ZjUwNGZkNGY5MTM3Y2JjZmZjNDI4MThl
OGMwNGFhOWMyMWRmYzcuLmQ3NjZmYTRhOTdhMTM4YzYyYWE0NDIwNmVlMTQ5NDRkMzBkYTRkY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpb19jb2RlY3MvaWxiYy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvQlVJTEQuZ24KQEAgLTI5
LDExICsyOSwxMSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2VuY29kZXJfaWxiYyIpIHsK
ICAgZGVwcyA9IFsKICAgICAiOmF1ZGlvX2VuY29kZXJfaWxiY19jb25maWciLAogICAgICIuLjph
dWRpb19jb2RlY3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4u
Ly4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmlsYmMiLAogICAgICIuLi8uLi8uLi9ydGNfYmFz
ZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4
IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtNDcsMTAgKzQ3LDEw
IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rlcl9pbGJjIikgewogICBdCiAgIGRl
cHMgPSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNf
Y29tbW9uIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aWxiYyIsCiAgICAg
Ii4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
Om9wdGlvbmFsIiwKICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxi
Yy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuY2MKaW5kZXggMWY0YzQ3NWM0MDY0Mjhi
NzcxNjM0Y2RlZmMzNTQxZTY5MzdkZmM3Mi4uNGEwMGY4ZGJmMDA1NGM2YTNhNmExNjlhMWVhMWZh
YTZlYWQxOWViZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9pbGJjLmNjCkBAIC0xNCwxNCArMTQsMTQgQEAKICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRl
ICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogYWJz
bDo6b3B0aW9uYWw8QXVkaW9EZWNvZGVySWxiYzo6Q29uZmlnPiBBdWRpb0RlY29kZXJJbGJjOjpT
ZHBUb0NvbmZpZygKICAgICBjb25zdCBTZHBBdWRpb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIHJldHVy
biBTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIklMQkMiKSA9PSAwICYmCisgIHJl
dHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiSUxCQyIpICYmCiAgICAg
ICAgICAgICAgICAgIGZvcm1hdC5jbG9ja3JhdGVfaHogPT0gODAwMCAmJiBmb3JtYXQubnVtX2No
YW5uZWxzID09IDEKICAgICAgICAgICAgICA/IGFic2w6Om9wdGlvbmFsPENvbmZpZz4oQ29uZmln
KCkpCiAgICAgICAgICAgICAgOiBhYnNsOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1
ZGlvX2RlY29kZXJfaWxiYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5oCmluZGV4IDIw
ZjZmZmQyODdmOWM4ZjA5NzZiODUwODcyZTE2NGY2YTdlZDgyNTUuLjlhYjg0Nzk3N2Q4MTEyNzE2
OTkwM2MwNjViYWIzZDlmNWIzNGFlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVy
X2lsYmMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9pbGJjLmgKQEAgLTIzLDggKzIzLDYg
QEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIElMQkMgZGVjb2RlciBBUEkgZm9yIHVzZSBhcyBh
IHRlbXBsYXRlIHBhcmFtZXRlciB0bwogLy8gQ3JlYXRlQXVkaW9EZWNvZGVyRmFjdG9yeTwuLi4+
KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQg
YW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCiBzdHJ1Y3QgQXVkaW9EZWNvZGVySWxiYyB7
CiAgIHN0cnVjdCBDb25maWcge307ICAvLyBFbXB0eS0tLW5vIGNvbmZpZyB2YWx1ZXMgbmVlZGVk
IQogICBzdGF0aWMgYWJzbDo6b3B0aW9uYWw8Q29uZmlnPiBTZHBUb0NvbmZpZyhjb25zdCBTZHBB
dWRpb0Zvcm1hdCYgYXVkaW9fZm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNv
ZGVyX2lsYmMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCmluZGV4IDJhZTc1NDc0
Y2NkOGRlYTlkNTAzZGU3ZjgwYWY1NDFkMGQ4MDUwZTEuLjRkMDI4YzlhYWY0YzA4ODRjMzhiMTAz
NGVhMDczMDBmZTcyMTI1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYwpAQCAtMTQsNyArMTQsNyBAQAog
I2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgotI2lu
Y2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVk
ZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVt
ZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3Nh
ZmVfbWlubWF4LmgiCkBAIC00MCw3ICs0MCw3IEBAIGludCBHZXRJbGJjQml0cmF0ZShpbnQgcHRp
bWUpIHsKIAogYWJzbDo6b3B0aW9uYWw8QXVkaW9FbmNvZGVySWxiY0NvbmZpZz4gQXVkaW9FbmNv
ZGVySWxiYzo6U2RwVG9Db25maWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkg
ewotICBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJJTEJDIikgIT0gMCB8
fAorICBpZiAoIWFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIklM
QkMiKSB8fAogICAgICAgZm9ybWF0LmNsb2NrcmF0ZV9oeiAhPSA4MDAwIHx8IGZvcm1hdC5udW1f
Y2hhbm5lbHMgIT0gMSkgewogICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwogICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9p
bGJjLmgKaW5kZXggMGE4NmIxNjJlODFjNjI4Y2NmYmZkZDkwN2EwMWRkOGE4OTVlNTMzYi4uZTRh
ZWNhNzBkZTg0MGUxNzQ2MjEzOTg1NDFlOTU2MWIzNDI4NTAyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJj
L2F1ZGlvX2VuY29kZXJfaWxiYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuaApA
QCAtMjQsOCArMjQsNiBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gSUxCQyBlbmNvZGVyIEFQ
SSBmb3IgdXNlIGFzIGEgdGVtcGxhdGUgcGFyYW1ldGVyIHRvCiAvLyBDcmVhdGVBdWRpb0VuY29k
ZXJGYWN0b3J5PC4uLj4oKS4KLS8vCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRl
ciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIHN0cnVjdCBBdWRp
b0VuY29kZXJJbGJjIHsKICAgdXNpbmcgQ29uZmlnID0gQXVkaW9FbmNvZGVySWxiY0NvbmZpZzsK
ICAgc3RhdGljIGFic2w6Om9wdGlvbmFsPEF1ZGlvRW5jb2RlcklsYmNDb25maWc+IFNkcFRvQ29u
ZmlnKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiY19jb25maWcuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
aWxiYy9hdWRpb19lbmNvZGVyX2lsYmNfY29uZmlnLmgKaW5kZXggMjI5MDlhOTU3YmIyNTdiNjgz
OTgzYzEyOWM3NTcxODdjMGU4NjY2NC4uNGQ4MmY5OTAxY2RmZTE5M2E0ZGE1NDNkNTgzMGViYWQy
MGY5OTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiY19jb25maWcuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjX2NvbmZpZy5oCkBAIC0xMyw3ICsxMyw2IEBA
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1
bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIHN0cnVjdCBB
dWRpb0VuY29kZXJJbGJjQ29uZmlnIHsKICAgYm9vbCBJc09rKCkgY29uc3QgewogICAgIHJldHVy
biAoZnJhbWVfc2l6ZV9tcyA9PSAyMCB8fCBmcmFtZV9zaXplX21zID09IDMwIHx8IGZyYW1lX3Np
emVfbXMgPT0gNDAgfHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9CVUlM
RC5nbgppbmRleCBlZDlkOTYyMjU3N2NmNmFhMWNkYzQ2ZjY4ZDBkODA4MTQ3YTAxZDVjLi5jN2Q2
ZTQzMjcxNTI5MTEzY2YxZmQ1NmZkOGRjZDgwZmNkYWYwYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMv
QlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9pc2FjL0JVSUxELmduCkBAIC03NywxMCArNzcsMTAgQEAgcnRjX3N0
YXRpY19saWJyYXJ5KCJhdWRpb19lbmNvZGVyX2lzYWNfZml4IikgewogICBdCiAgIGRlcHMgPSBb
CiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9u
IiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aXNhY19maXgiLAogICAgICIu
Li8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpv
cHRpb25hbCIsCiAgIF0KIH0KQEAgLTk0LDEwICs5NCwxMCBAQCBydGNfc3RhdGljX2xpYnJhcnko
ImF1ZGlvX2RlY29kZXJfaXNhY19maXgiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiLi46YXVk
aW9fY29kZWNzX2FwaSIsCi0gICAgIi4uLy4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8u
Li8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzppc2FjX2ZpeCIsCiAgICAgIi4uLy4uLy4uL3J0Y19i
YXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIs
CiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAg
XQogfQpAQCAtMTExLDEwICsxMTEsMTEgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19lbmNv
ZGVyX2lzYWNfZmxvYXQiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiLi46YXVkaW9fY29kZWNz
X2FwaSIsCi0gICAgIi4uLy4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi8uLi9tb2R1
bGVzL2F1ZGlvX2NvZGluZzppc2FjIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTEyOCwxMCArMTI5LDExIEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rlcl9pc2FjX2Zsb2F0IikgewogICBdCiAg
IGRlcHMgPSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJy
dGNfY29tbW9uIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aXNhYyIsCiAg
ICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4v
cnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwi
LAogICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2Rl
Y3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZml4LmNjCmluZGV4IDQ0NjY0MGZmNzBjMDZiNDgw
ODUyOGJiZTcyMGYzZWJiYzk2N2EzZTcuLjUxYWU1NzJmYTk4MmU1ZTQ5YmE5NzJlOTczZTE3MDll
NThkMTA4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZml4LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19j
b2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZml4LmNjCkBAIC0xMSwxNCArMTEsMTQgQEAK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5o
IgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5
cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
bWF0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgv
aW5jbHVkZS9hdWRpb19kZWNvZGVyX2lzYWNmaXguaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
IGFic2w6Om9wdGlvbmFsPEF1ZGlvRGVjb2RlcklzYWNGaXg6OkNvbmZpZz4gQXVkaW9EZWNvZGVy
SXNhY0ZpeDo6U2RwVG9Db25maWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkg
ewotICByZXR1cm4gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJJU0FDIikgPT0g
MCAmJgorICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIklTQUMi
KSAmJgogICAgICAgICAgICAgICAgICBmb3JtYXQuY2xvY2tyYXRlX2h6ID09IDE2MDAwICYmIGZv
cm1hdC5udW1fY2hhbm5lbHMgPT0gMQogICAgICAgICAgICAgID8gYWJzbDo6b3B0aW9uYWw8Q29u
ZmlnPihDb25maWcoKSkKICAgICAgICAgICAgICA6IGFic2w6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJf
aXNhY19maXguaAppbmRleCBhNGNlNjg1ODM4NTg1MmQxYzNiNmFkZWVjYTU0MTNiNmM0ZjZiZWM2
Li5iN2E1Y2VmNmRjNWNkNzM2Mjk5NDllMTJmMDg2NjhlOTkyYjYwYjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVy
X2lzYWNfZml4LmgKQEAgLTIzLDggKzIzLDYgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIGlT
QUMgZGVjb2RlciBBUEkgKGZpeGVkLXBvaW50IGltcGxlbWVudGF0aW9uKSBmb3IgdXNlIGFzIGEg
dGVtcGxhdGUKIC8vIHBhcmFtZXRlciB0byBDcmVhdGVBdWRpb0RlY29kZXJGYWN0b3J5PC4uLj4o
KS4KLS8vCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBh
bmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIHN0cnVjdCBBdWRpb0RlY29kZXJJc2FjRml4
IHsKICAgc3RydWN0IENvbmZpZyB7fTsgIC8vIEVtcHR5LS0tbm8gY29uZmlnIHZhbHVlcyBuZWVk
ZWQhCiAgIHN0YXRpYyBhYnNsOjpvcHRpb25hbDxDb25maWc+IFNkcFRvQ29uZmlnKGNvbnN0IFNk
cEF1ZGlvRm9ybWF0JiBhdWRpb19mb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2Rl
Y29kZXJfaXNhY19mbG9hdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZmxvYXQuY2MK
aW5kZXggMWMxOTI2ZjFhMWViZmJjMGFlOGMzNjQ3YWI0ZjJjYWQxOThjZGZhMS4uZDlkZTNhMDhi
MzAxMjE4NDlmOTljNjQ0YzMyMGU3MDQ5YTI1ZTAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlv
X2RlY29kZXJfaXNhY19mbG9hdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Zs
b2F0LmNjCkBAIC0xMSwxNCArMTEsMTQgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2lz
YWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Zsb2F0LmgiCiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9t
ZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vaW5jbHVkZS9hdWRpb19kZWNvZGVyX2lzYWMu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGFic2w6Om9wdGlvbmFsPEF1ZGlvRGVjb2Rlcklz
YWNGbG9hdDo6Q29uZmlnPgogQXVkaW9EZWNvZGVySXNhY0Zsb2F0OjpTZHBUb0NvbmZpZyhjb25z
dCBTZHBBdWRpb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5h
bWUuY19zdHIoKSwgIklTQUMiKSA9PSAwICYmCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KGZvcm1hdC5uYW1lLCAiSVNBQyIpICYmCiAgICAgICAoZm9ybWF0LmNsb2NrcmF0ZV9oeiA9PSAx
NjAwMCB8fCBmb3JtYXQuY2xvY2tyYXRlX2h6ID09IDMyMDAwKSAmJgogICAgICAgZm9ybWF0Lm51
bV9jaGFubmVscyA9PSAxKSB7CiAgICAgQ29uZmlnIGNvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNh
Yy9hdWRpb19kZWNvZGVyX2lzYWNfZmxvYXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNf
ZmxvYXQuaAppbmRleCBjYzEzOTYzNDE5NmRkZjVlZTNkMmE0M2Y2NzI2ODM0ZDY2Mzg4ZWM4Li5l
NzhmOGI4MWVlMDFmZDYzNGEwNzcxMWEzNmZiNDVhNjRhNmQzZGE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lz
YWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Zsb2F0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJf
aXNhY19mbG9hdC5oCkBAIC0xOCwxNCArMTgsMTMgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29k
ZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1
ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCiAvLyBpU0FDIGRlY29kZXIgQVBJIChmbG9hdGluZy1wb2ludCBpbXBsZW1lbnRh
dGlvbikgZm9yIHVzZSBhcyBhIHRlbXBsYXRlCiAvLyBwYXJhbWV0ZXIgdG8gQ3JlYXRlQXVkaW9E
ZWNvZGVyRmFjdG9yeTwuLi4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwg
dW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi1zdHJ1Y3Qg
QXVkaW9EZWNvZGVySXNhY0Zsb2F0IHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvRGVjb2Rlcklz
YWNGbG9hdCB7CiAgIHN0cnVjdCBDb25maWcgewogICAgIGJvb2wgSXNPaygpIGNvbnN0IHsKICAg
ICAgIHJldHVybiBzYW1wbGVfcmF0ZV9oeiA9PSAxNjAwMCB8fCBzYW1wbGVfcmF0ZV9oeiA9PSAz
MjAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZml4LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9p
c2FjL2F1ZGlvX2VuY29kZXJfaXNhY19maXguY2MKaW5kZXggY2Q4OTc1Mzk4YjQxNzhjOWU5ODU0
OTVjYmM0YWQ3YzA1NWQ1YzY2Yy4uYTEwZDFlZTYxYWU4Zjg5NmNkMmM0Y2FkNGIzNjhhZWM0ZDBh
ODY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19maXguY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19maXguY2MKQEAgLTExLDcgKzExLDcgQEAKICNpbmNs
dWRlICJhcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2FjX2ZpeC5oIgogCiAj
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgi
ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2gu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvaW5jbHVk
ZS9hdWRpb19lbmNvZGVyX2lzYWNmaXguaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdfdG9f
bnVtYmVyLmgiCiAKQEAgLTE5LDcgKzE5LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGFic2w6
Om9wdGlvbmFsPEF1ZGlvRW5jb2RlcklzYWNGaXg6OkNvbmZpZz4gQXVkaW9FbmNvZGVySXNhY0Zp
eDo6U2RwVG9Db25maWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBp
ZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJJU0FDIikgPT0gMCAmJgorICBp
ZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIklTQUMiKSAmJgogICAgICAg
Zm9ybWF0LmNsb2NrcmF0ZV9oeiA9PSAxNjAwMCAmJiBmb3JtYXQubnVtX2NoYW5uZWxzID09IDEp
IHsKICAgICBDb25maWcgY29uZmlnOwogICAgIGNvbnN0IGF1dG8gcHRpbWVfaXRlciA9IGZvcm1h
dC5wYXJhbWV0ZXJzLmZpbmQoInB0aW1lIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5j
b2Rlcl9pc2FjX2ZpeC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19maXguaAppbmRleCA3
MzFlNDhkMGMyNzY2OGFhNzdjM2IwOGE1NmIxNjEwZWRiNmJjNWE2Li5jM2MzNjcyYjU4M2QxOTU5
Y2QwYzAxYzJmNDhmMjE2ODFkOWUxZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rl
cl9pc2FjX2ZpeC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZml4LmgKQEAgLTIz
LDggKzIzLDYgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIGlTQUMgZW5jb2RlciBBUEkgKGZp
eGVkLXBvaW50IGltcGxlbWVudGF0aW9uKSBmb3IgdXNlIGFzIGEgdGVtcGxhdGUKIC8vIHBhcmFt
ZXRlciB0byBDcmVhdGVBdWRpb0VuY29kZXJGYWN0b3J5PC4uLj4oKS4KLS8vCi0vLyBOT1RFOiBU
aGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRo
b3V0IG5vdGljZS4KIHN0cnVjdCBBdWRpb0VuY29kZXJJc2FjRml4IHsKICAgc3RydWN0IENvbmZp
ZyB7CiAgICAgYm9vbCBJc09rKCkgY29uc3QgeyByZXR1cm4gZnJhbWVfc2l6ZV9tcyA9PSAzMCB8
fCBmcmFtZV9zaXplX21zID09IDYwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rl
cl9pc2FjX2Zsb2F0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19mbG9hdC5jYwppbmRl
eCA4M2QxZmFmZjJmYzI0ZmYyMGJmZjQyYzUxZGQyMjYzNjRiYTMwMTAzLi4zNzk4MmIxZjE1ODcy
ZjczNDkwNTc4YWE0YTM1YmYxMTQ2ODQ3MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5j
b2Rlcl9pc2FjX2Zsb2F0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZmxvYXQu
Y2MKQEAgLTExLDcgKzExLDcgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVk
aW9fZW5jb2Rlcl9pc2FjX2Zsb2F0LmgiCiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnku
aCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9pc2FjL21haW4vaW5jbHVkZS9hdWRpb19lbmNvZGVyX2lzYWMuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmgiCiAKQEAgLTE5LDcgKzE5LDcgQEAg
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGFic2w6Om9wdGlvbmFsPEF1ZGlvRW5jb2RlcklzYWNGbG9h
dDo6Q29uZmlnPgogQXVkaW9FbmNvZGVySXNhY0Zsb2F0OjpTZHBUb0NvbmZpZyhjb25zdCBTZHBB
dWRpb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19z
dHIoKSwgIklTQUMiKSA9PSAwICYmCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1h
dC5uYW1lLCAiSVNBQyIpICYmCiAgICAgICAoZm9ybWF0LmNsb2NrcmF0ZV9oeiA9PSAxNjAwMCB8
fCBmb3JtYXQuY2xvY2tyYXRlX2h6ID09IDMyMDAwKSAmJgogICAgICAgZm9ybWF0Lm51bV9jaGFu
bmVscyA9PSAxKSB7CiAgICAgQ29uZmlnIGNvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRp
b19lbmNvZGVyX2lzYWNfZmxvYXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZmxvYXQu
aAppbmRleCA1ZGYyZGQzZDZmNGIwNjVkNzRkMDY1ZmQyZTA2YmQzNWZhODViMzIwLi4wY2I5YzE3
ZDcxMDVlZDM4NjVjODJkYWI5MDlhMTEwNDE2ZWMyNTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVk
aW9fZW5jb2Rlcl9pc2FjX2Zsb2F0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19m
bG9hdC5oCkBAIC0xOCwxNCArMTgsMTMgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1
ZGlvX2NvZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Vu
Y29kZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCiAvLyBpU0FDIGVuY29kZXIgQVBJIChmbG9hdGluZy1wb2ludCBpbXBsZW1lbnRhdGlvbikg
Zm9yIHVzZSBhcyBhIHRlbXBsYXRlCiAvLyBwYXJhbWV0ZXIgdG8gQ3JlYXRlQXVkaW9FbmNvZGVy
RmFjdG9yeTwuLi4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIg
ZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi1zdHJ1Y3QgQXVkaW9F
bmNvZGVySXNhY0Zsb2F0IHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvRW5jb2RlcklzYWNGbG9h
dCB7CiAgIHN0cnVjdCBDb25maWcgewogICAgIGJvb2wgSXNPaygpIGNvbnN0IHsKICAgICAgIHN3
aXRjaCAoc2FtcGxlX3JhdGVfaHopIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9CVUlMRC5nbiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
b3B1cy9CVUlMRC5nbgppbmRleCA4MDBhYmJlMjc5YmZlM2E2NWQxNmJiNjM3YmNkZmYwNTNmMDky
ZTdhLi41NTUyYzIxZmE1MTA3OTY3NmQ4OTcwNWEwOTkyYjEzZTk0ZmY3ZDgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL29wdXMvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL0JVSUxELmduCkBAIC0yMCw2ICsyMCw3IEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZW5jb2Rlcl9vcHVzX2NvbmZpZyIpIHsKICAgXQog
ICBkZXBzID0gWwogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisg
ICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiAgIGRlZmluZXMgPSBb
XQpAQCAtNDQsNiArNDUsOCBAQCBydGNfc291cmNlX3NldCgiYXVkaW9fZW5jb2Rlcl9vcHVzIikg
ewogICAgICIuLjphdWRpb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRp
b19jb2Rpbmc6d2VicnRjX29wdXMiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9h
cHByb3ZlZCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtNTcsMTAg
KzYwLDExIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rlcl9vcHVzIikgewogICBd
CiAgIGRlcHMgPSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3
ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6d2VicnRj
X29wdXMiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAg
Ii4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
Om9wdGlvbmFsIiwKICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1
cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuY2MKaW5kZXggNDEzOTdmMDRkMjAyNDg5
M2UyNjkyMmNkZTBlZGI2MTU0MmIyMWY5Zi4uMmYxNjY4YjgyNWJjMDIwOTA4ZDk4Mzk4MWE1MTJi
ZjdmMzc2MGRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmNjCkBAIC0xNSw3ICsxNSw3IEBACiAjaW5jbHVk
ZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAi
Y29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
b3B1cy9hdWRpb19kZWNvZGVyX29wdXMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zNSw3
ICszNSw3IEBAIGFic2w6Om9wdGlvbmFsPEF1ZGlvRGVjb2Rlck9wdXM6OkNvbmZpZz4gQXVkaW9E
ZWNvZGVyT3B1czo6U2RwVG9Db25maWcoCiAgICAgfQogICAgIHJldHVybiAxOyAgLy8gRGVmYXVs
dCB0byBtb25vLgogICB9KCk7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIo
KSwgIm9wdXMiKSA9PSAwICYmCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5u
YW1lLCAib3B1cyIpICYmCiAgICAgICBmb3JtYXQuY2xvY2tyYXRlX2h6ID09IDQ4MDAwICYmIGZv
cm1hdC5udW1fY2hhbm5lbHMgPT0gMiAmJgogICAgICAgbnVtX2NoYW5uZWxzKSB7CiAgICAgcmV0
dXJuIENvbmZpZ3sqbnVtX2NoYW5uZWxzfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19kZWNv
ZGVyX29wdXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuaAppbmRleCBkZTI2MDI2Yjc4
MzM5NzliM2ZlZDdhZDliNTc0MGUzZWE3MjA2MDdhLi42ZmJiY2I1OThhMTRkNzdhZTZkYmYyNDZi
YjM4N2U0ZjhiOGI2ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5oCkBAIC0xOCwxNCArMTgsMTMgQEAKICNp
bmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhw
b3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBPcHVzIGRlY29kZXIgQVBJIGZvciB1
c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rv
cnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVs
b3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRGVjb2Rl
ck9wdXMgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9EZWNvZGVyT3B1cyB7CiAgIHN0cnVjdCBD
b25maWcgewogICAgIGludCBudW1fY2hhbm5lbHM7CiAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMv
YXVkaW9fZW5jb2Rlcl9vcHVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmgKaW5kZXgg
MjBhYWFmNzI2ZjkzMTQ5NDkwMzIwZDA4MmUwMmZiYjBkZjMzZGRiYy4uMDNjYjBkNmIzOGM4MzM0
NTY5ZmI2Njg4NzJhZTRkOGU3NmE0ZDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29k
ZXJfb3B1cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXMuaApAQCAtMTksMTQgKzE5
LDEzIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgiCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKICNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzX2NvbmZpZy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBP
cHVzIGVuY29kZXIgQVBJIGZvciB1c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENy
ZWF0ZUF1ZGlvRW5jb2RlckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0
IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNl
Lgotc3RydWN0IEF1ZGlvRW5jb2Rlck9wdXMgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9FbmNv
ZGVyT3B1cyB7CiAgIHVzaW5nIENvbmZpZyA9IEF1ZGlvRW5jb2Rlck9wdXNDb25maWc7CiAgIHN0
YXRpYyBhYnNsOjpvcHRpb25hbDxBdWRpb0VuY29kZXJPcHVzQ29uZmlnPiBTZHBUb0NvbmZpZygK
ICAgICAgIGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBhdWRpb19mb3JtYXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1c19jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVy
X29wdXNfY29uZmlnLmgKaW5kZXggYzcwNjdiYjFjMzI0MTg2ZjJiNmRkYzU2NzMxYzVlYmJlMmFk
MzU2Ny4uMGEzZWUyYzhkZmIwZDQwZDhhMmMxMjA4MGMwNTEzZjVkZDUwNjFjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1c19jb25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9f
ZW5jb2Rlcl9vcHVzX2NvbmZpZy5oCkBAIC0xNiwxMSArMTYsMTEgQEAKICNpbmNsdWRlIDx2ZWN0
b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLS8vIE5PVEU6
IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdp
dGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRW5jb2Rlck9wdXNDb25maWcgeworc3RydWN0IFJU
Q19FWFBPUlQgQXVkaW9FbmNvZGVyT3B1c0NvbmZpZyB7CiAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IGtEZWZhdWx0RnJhbWVTaXplTXMgPSAyMDsKIAogICAvLyBPcHVzIEFQSSBhbGxvd3MgYSBtaW4g
Yml0cmF0ZSBvZiA1MDBicHMsIGJ1dCBPcHVzIGRvY3VtZW50YXRpb24gc3VnZ2VzdHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19vcHRpb25zLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX29wdGlvbnMuY2MKaW5kZXggYTRhMzdkMjE5YTQzYzllYTI1NzY1ZWE1OWNjM2Ez
NzE2YTk1OTNmYS4uZTMzMjE0YmFkMDRkNmNlOWJhNGY0ODJmY2M0NTBkOGVjYmJhNGY0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX29wdGlvbnMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX29wdGlvbnMuY2MKQEAgLTQ5LDggKzQ5LDkgQEAgdm9pZCBBdWRpb09w
dGlvbnM6OlNldEFsbChjb25zdCBBdWRpb09wdGlvbnMmIGNoYW5nZSkgewogICAgICAgICAgIGNo
YW5nZS5hdWRpb19qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzKTsKICAgU2V0RnJvbSgmYXVkaW9f
aml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGUsCiAgICAgICAgICAgY2hhbmdlLmF1ZGlvX2pp
dHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlKTsKKyAgU2V0RnJvbSgmYXVkaW9faml0dGVyX2J1
ZmZlcl9taW5fZGVsYXlfbXMsCisgICAgICAgICAgY2hhbmdlLmF1ZGlvX2ppdHRlcl9idWZmZXJf
bWluX2RlbGF5X21zKTsKICAgU2V0RnJvbSgmdHlwaW5nX2RldGVjdGlvbiwgY2hhbmdlLnR5cGlu
Z19kZXRlY3Rpb24pOwotICBTZXRGcm9tKCZhZWNtX2dlbmVyYXRlX2NvbWZvcnRfbm9pc2UsIGNo
YW5nZS5hZWNtX2dlbmVyYXRlX2NvbWZvcnRfbm9pc2UpOwogICBTZXRGcm9tKCZleHBlcmltZW50
YWxfYWdjLCBjaGFuZ2UuZXhwZXJpbWVudGFsX2FnYyk7CiAgIFNldEZyb20oJmV4dGVuZGVkX2Zp
bHRlcl9hZWMsIGNoYW5nZS5leHRlbmRlZF9maWx0ZXJfYWVjKTsKICAgU2V0RnJvbSgmZGVsYXlf
YWdub3N0aWNfYWVjLCBjaGFuZ2UuZGVsYXlfYWdub3N0aWNfYWVjKTsKQEAgLTc3LDggKzc4LDkg
QEAgYm9vbCBBdWRpb09wdGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgQXVkaW9PcHRpb25zJiBvKSBj
b25zdCB7CiAgICAgICAgICBhdWRpb19qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzID09IG8uYXVk
aW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyAmJgogICAgICAgICAgYXVkaW9faml0dGVyX2J1
ZmZlcl9mYXN0X2FjY2VsZXJhdGUgPT0KICAgICAgICAgICAgICBvLmF1ZGlvX2ppdHRlcl9idWZm
ZXJfZmFzdF9hY2NlbGVyYXRlICYmCisgICAgICAgICBhdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9k
ZWxheV9tcyA9PQorICAgICAgICAgICAgIG8uYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlf
bXMgJiYKICAgICAgICAgIHR5cGluZ19kZXRlY3Rpb24gPT0gby50eXBpbmdfZGV0ZWN0aW9uICYm
Ci0gICAgICAgICBhZWNtX2dlbmVyYXRlX2NvbWZvcnRfbm9pc2UgPT0gby5hZWNtX2dlbmVyYXRl
X2NvbWZvcnRfbm9pc2UgJiYKICAgICAgICAgIGV4cGVyaW1lbnRhbF9hZ2MgPT0gby5leHBlcmlt
ZW50YWxfYWdjICYmCiAgICAgICAgICBleHRlbmRlZF9maWx0ZXJfYWVjID09IG8uZXh0ZW5kZWRf
ZmlsdGVyX2FlYyAmJgogICAgICAgICAgZGVsYXlfYWdub3N0aWNfYWVjID09IG8uZGVsYXlfYWdu
b3N0aWNfYWVjICYmCkBAIC0xMDksOCArMTExLDkgQEAgc3RkOjpzdHJpbmcgQXVkaW9PcHRpb25z
OjpUb1N0cmluZygpIGNvbnN0IHsKICAgICAgICAgICAgICAgICBhdWRpb19qaXR0ZXJfYnVmZmVy
X21heF9wYWNrZXRzKTsKICAgVG9TdHJpbmdJZlNldCgmcmVzdWx0LCAiYXVkaW9faml0dGVyX2J1
ZmZlcl9mYXN0X2FjY2VsZXJhdGUiLAogICAgICAgICAgICAgICAgIGF1ZGlvX2ppdHRlcl9idWZm
ZXJfZmFzdF9hY2NlbGVyYXRlKTsKKyAgVG9TdHJpbmdJZlNldCgmcmVzdWx0LCAiYXVkaW9faml0
dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMiLAorICAgICAgICAgICAgICAgIGF1ZGlvX2ppdHRlcl9i
dWZmZXJfbWluX2RlbGF5X21zKTsKICAgVG9TdHJpbmdJZlNldCgmcmVzdWx0LCAidHlwaW5nIiwg
dHlwaW5nX2RldGVjdGlvbik7Ci0gIFRvU3RyaW5nSWZTZXQoJnJlc3VsdCwgImNvbWZvcnRfbm9p
c2UiLCBhZWNtX2dlbmVyYXRlX2NvbWZvcnRfbm9pc2UpOwogICBUb1N0cmluZ0lmU2V0KCZyZXN1
bHQsICJleHBlcmltZW50YWxfYWdjIiwgZXhwZXJpbWVudGFsX2FnYyk7CiAgIFRvU3RyaW5nSWZT
ZXQoJnJlc3VsdCwgImV4dGVuZGVkX2ZpbHRlcl9hZWMiLCBleHRlbmRlZF9maWx0ZXJfYWVjKTsK
ICAgVG9TdHJpbmdJZlNldCgmcmVzdWx0LCAiZGVsYXlfYWdub3N0aWNfYWVjIiwgZGVsYXlfYWdu
b3N0aWNfYWVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19vcHRpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fb3B0aW9ucy5oCmluZGV4IGFlY2ZmNDE0Mjk4Y2Qy
NDhlZTQyYzEwNmYyZDUzMGU1M2U2MzI1NTEuLmMyZDFmNDQ4N2MzNjg3NGQ1Mzg5ZDZkNTRhOWIx
ZWE0MjE4YjU4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19vcHRpb25zLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX29wdGlvbnMuaApAQCAtMTEsNiArMTEsNyBA
QAogI2lmbmRlZiBBUElfQVVESU9fT1BUSU9OU19IXwogI2RlZmluZSBBUElfQVVESU9fT1BUSU9O
U19IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVk
ZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgpAQCAtNTMsOSArNTQsMTAgQEAgc3RydWN0IEF1ZGlv
T3B0aW9ucyB7CiAgIGFic2w6Om9wdGlvbmFsPGludD4gYXVkaW9faml0dGVyX2J1ZmZlcl9tYXhf
cGFja2V0czsKICAgLy8gQXVkaW8gcmVjZWl2ZXIgaml0dGVyIGJ1ZmZlciAoTmV0RXEpIGZhc3Qg
YWNjZWxlcmF0ZSBtb2RlLgogICBhYnNsOjpvcHRpb25hbDxib29sPiBhdWRpb19qaXR0ZXJfYnVm
ZmVyX2Zhc3RfYWNjZWxlcmF0ZTsKKyAgLy8gQXVkaW8gcmVjZWl2ZXIgaml0dGVyIGJ1ZmZlciAo
TmV0RXEpIG1pbmltdW0gdGFyZ2V0IGRlbGF5IGluIG1pbGxpc2Vjb25kcy4KKyAgYWJzbDo6b3B0
aW9uYWw8aW50PiBhdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tczsKICAgLy8gQXVkaW8g
cHJvY2Vzc2luZyB0byBkZXRlY3QgdHlwaW5nLgogICBhYnNsOjpvcHRpb25hbDxib29sPiB0eXBp
bmdfZGV0ZWN0aW9uOwotICBhYnNsOjpvcHRpb25hbDxib29sPiBhZWNtX2dlbmVyYXRlX2NvbWZv
cnRfbm9pc2U7CiAgIGFic2w6Om9wdGlvbmFsPGJvb2w+IGV4cGVyaW1lbnRhbF9hZ2M7CiAgIGFi
c2w6Om9wdGlvbmFsPGJvb2w+IGV4dGVuZGVkX2ZpbHRlcl9hZWM7CiAgIGFic2w6Om9wdGlvbmFs
PGJvb2w+IGRlbGF5X2Fnbm9zdGljX2FlYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYWxsL2JpdHJhdGVfYWxsb2NhdGlvbi5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbGwvYml0cmF0
ZV9hbGxvY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ3ZjIxYmMxZTk0MWNhNDliZjg1ZDBjN2QzNmZm
MzYzMGExNjUxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYWxsL2JpdHJhdGVfYWxsb2NhdGlvbi5oCkBAIC0wLDAgKzEs
NDEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisjaWZuZGVmIEFQSV9DQUxMX0JJVFJBVEVfQUxMT0NB
VElPTl9IXworI2RlZmluZSBBUElfQ0FMTF9CSVRSQVRFX0FMTE9DQVRJT05fSF8KKworI2luY2x1
ZGUgImFwaS91bml0cy9kYXRhX3JhdGUuaCIKKyNpbmNsdWRlICJhcGkvdW5pdHMvdGltZV9kZWx0
YS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUg
cHJvdmlkZXMgaW5mb3JtYXRpb24gdG8gYWxsb2NhdGVkIHN0cmVhbXMgYWJvdXQgdGhlaXIKKy8v
IGJpdHJhdGUgYWxsb2NhdGlvbi4gSXQgb3JpZ2luYXRlcyBmcm9tIHRoZSBCaXRyYXRlQWxsb2Nh
dGVyIGNsYXNzIGFuZCBpcworLy8gcHJvcGFnYXRlZCBmcm9tIHRoZXJlLgorc3RydWN0IEJpdHJh
dGVBbGxvY2F0aW9uVXBkYXRlIHsKKyAgLy8gVGhlIGFsbG9jYXRlZCB0YXJnZXQgYml0cmF0ZS4g
TWVkaWEgc3RyZWFtcyBzaG91bGQgcHJvZHVjZSB0aGlzIGFtb3VudCBvZgorICAvLyBkYXRhLiAo
Tm90ZSB0aGF0IHRoaXMgbWF5IGluY2x1ZGUgcGFja2V0IG92ZXJoZWFkIGRlcGVuZGluZyBvbgor
ICAvLyBjb25maWd1cmF0aW9uLikKKyAgRGF0YVJhdGUgdGFyZ2V0X2JpdHJhdGUgPSBEYXRhUmF0
ZTo6WmVybygpOworICAvLyBUaGUgYWxsb2NhdGVkIHBhcnQgb2YgdGhlIGVzdGltYXRlZCBsaW5r
IGNhcGFjaXR5LiBUaGlzIGlzIG1vcmUgc3RhYmxlIHRoYW4KKyAgLy8gdGhlIHRhcmdldCBhcyBp
dCBpcyBiYXNlZCBvbiB0aGUgdW5kZXJseWluZyBsaW5rIGNhcGFjaXR5IGVzdGltYXRlLiBUaGlz
CisgIC8vIHNob3VsZCBiZSB1c2VkIHRvIGNoYW5nZSBlbmNvZGVyIGNvbmZpZ3VyYXRpb24gd2hl
biB0aGUgY29zdCBvZiBjaGFuZ2UgaXMKKyAgLy8gaGlnaC4KKyAgRGF0YVJhdGUgbGlua19jYXBh
Y2l0eSA9IERhdGFSYXRlOjpaZXJvKCk7CisgIC8vIFByZWRpY3RlZCBwYWNrZXQgbG9zcyByYXRp
by4KKyAgZG91YmxlIHBhY2tldF9sb3NzX3JhdGlvID0gMDsKKyAgLy8gUHJlZGljdGVkIHJvdW5k
IHRyaXAgdGltZS4KKyAgVGltZURlbHRhIHJvdW5kX3RyaXBfdGltZSA9IFRpbWVEZWx0YTo6UGx1
c0luZmluaXR5KCk7CisgIC8vIHxid2VfcGVyaW9kfCBpcyBkZXByZWNhdGVkLCB1c2UgdGhlIGxp
bmsgY2FwYWNpdHkgYWxsb2NhdGlvbiBpbnN0ZWFkLgorICBUaW1lRGVsdGEgYndlX3BlcmlvZCA9
IFRpbWVEZWx0YTo6UGx1c0luZmluaXR5KCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CisKKyNlbmRpZiAgLy8gQVBJX0NBTExfQklUUkFURV9BTExPQ0FUSU9OX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FsbC90cmFu
c3BvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
Y2FsbC90cmFuc3BvcnQuY2MKaW5kZXggMGE5ZGQ1YmNjN2UxNTg1MWI0NDhmYzI3ODExZWI0YjVl
MTcwN2RiYi4uYmNhZGM3NjJkZTRkMTkzNGY0MDgzZGFjMThmMjVhYjhkZGEyMzdiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbGwv
dHJhbnNwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9jYWxsL3RyYW5zcG9ydC5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAi
YXBpL2NhbGwvdHJhbnNwb3J0LmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgorCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIAogUGFja2V0T3B0aW9uczo6UGFja2V0T3B0aW9ucygpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9j
YWxsL3RyYW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2NhbGwvdHJhbnNwb3J0LmgKaW5kZXggMThkMjI3MDVjZDZkZjkxNWMxYzYyMzRlZmE4
NGNmM2I1OWU5OTc5Ni4uMzJlNWRkZjg3NGZiMWM0Y2MxMGI1ZjFiZmQ5MTNlZGUzMTE1MTg3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2NhbGwvdHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2NhbGwvdHJhbnNwb3J0LmgKQEAgLTMyLDYgKzMyLDggQEAgc3RydWN0IFBh
Y2tldE9wdGlvbnMgewogICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBhcHBsaWNhdGlvbl9kYXRhOwog
ICAvLyBXaGV0aGVyIHRoaXMgaXMgYSByZXRyYW5zbWlzc2lvbiBvZiBhbiBlYXJsaWVyIHBhY2tl
dC4KICAgYm9vbCBpc19yZXRyYW5zbWl0ID0gZmFsc2U7CisgIGJvb2wgaW5jbHVkZWRfaW5fZmVl
ZGJhY2sgPSBmYWxzZTsKKyAgYm9vbCBpbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0gZmFsc2U7CiB9
OwogCiBjbGFzcyBUcmFuc3BvcnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbmRpZGF0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRhdGUuY2MKaW5kZXggYzJjNmM1MzAx
NzJjY2UxYjVlMTllNTBjZmZhNjAxYWI4MDcyODVmMy4uMjc1YjE3MzY2YzIxY2RjZDBlN2Q0ZTVl
YTNjNzgwOGVlNTQ3M2NhMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2NhbmRpZGF0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FuZGlkYXRlLmNjCkBAIC0xMCw2ICsxMCw4IEBA
CiAKICNpbmNsdWRlICJhcGkvY2FuZGlkYXRlLmgiCiAKKyNpbmNsdWRlICJydGNfYmFzZS9oZWxw
ZXJzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvaXBhZGRyZXNzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2Fu
ZGlkYXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
Y2FuZGlkYXRlLmgKaW5kZXggNmUwNTQ3YjVlMmZkODRlOGRmMDEzODg3ZjUwYWRmZDQxNzA0NDBm
Zi4uNGM2NTBkOWJkYmQ1MmQzYzM0ZGUwZjM1NDA2ZDE3YjgwMmNmYWMwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbmRpZGF0ZS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5k
aWRhdGUuaApAQCAtMTgsMTYgKzE4LDE2IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL25ldHdvcmtfY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
c29ja2V0YWRkcmVzcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0Lmgi
CiAKIG5hbWVzcGFjZSBjcmlja2V0IHsKIAogLy8gQ2FuZGlkYXRlIGZvciBJQ0UgYmFzZWQgY29u
bmVjdGlvbiBkaXNjb3ZlcnkuCiAvLyBUT0RPKHBob2dsdW5kKTogcmVtb3ZlIHRoaW5ncyBpbiBo
ZXJlIHRoYXQgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIHB1YmxpYyBBUEkuCiAKLWNsYXNzIENhbmRp
ZGF0ZSB7CitjbGFzcyBSVENfRVhQT1JUIENhbmRpZGF0ZSB7CiAgcHVibGljOgogICBDYW5kaWRh
dGUoKTsKICAgLy8gVE9ETyhwdGhhdGNoZXIpOiBNYXRjaCB0aGUgb3JkZXJpbmcgYW5kIHBhcmFt
IGxpc3QgYXMgcGVyIFJGQyA1MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3JlYXRlX3Bl
ZXJjb25uZWN0aW9uX2ZhY3RvcnkuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE2ZDA4NmY2NjAwZDE3YzE1YzA2
OWRhODYyMjBjMjk1NzhkNzBmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9y
eS5jYwpAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImFw
aS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIgorCisjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJhcGkvY2FsbC9jYWxsZmFjdG9yeWludGVy
ZmFjZS5oIgorI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgorI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAi
YXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJsb2dn
aW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19mYWN0b3J5LmgiCisjaW5jbHVkZSAibG9n
Z2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfZmFjdG9yeV9pbnRlcmZhY2UuaCIKKyNp
bmNsdWRlICJtZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9iaW5kLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKyNp
ZiBkZWZpbmVkKFVTRV9CVUlMVElOX1NXX0NPREVDUykKK3J0Yzo6c2NvcGVkX3JlZnB0cjxQZWVy
Q29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgK
KyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rl
cl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBh
dWRpb19kZWNvZGVyX2ZhY3RvcnkpIHsKKyAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeVdpdGhBdWRpb01peGVyKAorICAgICAgbnVsbHB0ciAvKm5ldHdvcmtfdGhyZWFkKi8sIG51
bGxwdHIgLyp3b3JrZXJfdGhyZWFkKi8sCisgICAgICBudWxscHRyIC8qc2lnbmFsaW5nX3RocmVh
ZCovLCBudWxscHRyIC8qZGVmYXVsdF9hZG0qLywKKyAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9y
eSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgbnVsbHB0ciAvKnZpZGVvX2VuY29kZXJf
ZmFjdG9yeSovLCBudWxscHRyIC8qdmlkZW9fZGVjb2Rlcl9mYWN0b3J5Ki8sCisgICAgICBudWxs
cHRyIC8qYXVkaW9fbWl4ZXIqLyk7Cit9CisKKy8vIE5vdGU6IGFsbCB0aGUgb3RoZXIgQ3JlYXRl
UGVlckNvbm5lY3Rpb25GYWN0b3J5IHZhcmlhbnRzIGp1c3QgZW5kIHVwIGNhbGxpbmcKKy8vIHRo
aXMsIHVsdGltYXRlbHkuCitydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlPiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCisgICAgcnRjOjpUaHJlYWQq
IG5ldHdvcmtfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAorICAgIHJ0
Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAorICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZh
dWx0X2FkbSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVk
aW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJG
YWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9F
bmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0
Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCisgICAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZykgeworICBydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nX3VzZSA9IGF1ZGlvX3Byb2Nl
c3Npbmc7CisgIGlmICghYXVkaW9fcHJvY2Vzc2luZ191c2UpIHsKKyAgICBhdWRpb19wcm9jZXNz
aW5nX3VzZSA9IEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKTsKKyAgfQorCisgIHN0
ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5naW5l
KAorICAgICAgY3JpY2tldDo6V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCisgICAg
ICAgICAgZGVmYXVsdF9hZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9m
YWN0b3J5LAorICAgICAgICAgIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwgdmlkZW9fZGVjb2Rlcl9m
YWN0b3J5LCBhdWRpb19taXhlciwKKyAgICAgICAgICBhdWRpb19wcm9jZXNzaW5nX3VzZSkpOwor
CisgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRmFjdG9yeUludGVyZmFjZT4gY2FsbF9mYWN0b3J5ID0g
Q3JlYXRlQ2FsbEZhY3RvcnkoKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dGYWN0
b3J5SW50ZXJmYWNlPiBldmVudF9sb2dfZmFjdG9yeSA9CisgICAgICBDcmVhdGVSdGNFdmVudExv
Z0ZhY3RvcnkoKTsKKworICByZXR1cm4gQ3JlYXRlTW9kdWxhclBlZXJDb25uZWN0aW9uRmFjdG9y
eSgKKyAgICAgIG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFk
LCBzdGQ6Om1vdmUobWVkaWFfZW5naW5lKSwKKyAgICAgIHN0ZDo6bW92ZShjYWxsX2ZhY3Rvcnkp
LCBzdGQ6Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpKTsKK30KKworcnRjOjpzY29wZWRfcmVmcHRy
PFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0
b3J5KAorICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCog
d29ya2VyX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBB
dWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1
ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAg
IGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9y
eSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVy
X2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVy
LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3Np
bmcsCisgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlPiBm
ZWNfY29udHJvbGxlcl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJv
bGxlckZhY3RvcnlJbnRlcmZhY2U+CisgICAgICAgIG5ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5
KSB7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3Np
bmdfdXNlID0gYXVkaW9fcHJvY2Vzc2luZzsKKyAgaWYgKCFhdWRpb19wcm9jZXNzaW5nX3VzZSkg
eworICAgIGF1ZGlvX3Byb2Nlc3NpbmdfdXNlID0gQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNy
ZWF0ZSgpOworICB9CisKKyAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50
ZXJmYWNlPiBtZWRpYV9lbmdpbmUoCisgICAgICBjcmlja2V0OjpXZWJSdGNNZWRpYUVuZ2luZUZh
Y3Rvcnk6OkNyZWF0ZSgKKyAgICAgICAgICBkZWZhdWx0X2FkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICAgICAgdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5LCB2aWRlb19kZWNvZGVyX2ZhY3RvcnksIGF1ZGlvX21peGVyLAorICAgICAgICAgIGF1ZGlv
X3Byb2Nlc3NpbmdfdXNlKSk7CisKKyAgc3RkOjp1bmlxdWVfcHRyPENhbGxGYWN0b3J5SW50ZXJm
YWNlPiBjYWxsX2ZhY3RvcnkgPSBDcmVhdGVDYWxsRmFjdG9yeSgpOworCisgIHN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudExvZ0ZhY3RvcnlJbnRlcmZhY2U+IGV2ZW50X2xvZ19mYWN0b3J5ID0KKyAg
ICAgIENyZWF0ZVJ0Y0V2ZW50TG9nRmFjdG9yeSgpOworCisgIHJldHVybiBDcmVhdGVNb2R1bGFy
UGVlckNvbm5lY3Rpb25GYWN0b3J5KAorICAgICAgbmV0d29ya190aHJlYWQsIHdvcmtlcl90aHJl
YWQsIHNpZ25hbGluZ190aHJlYWQsIHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpLAorICAgICAgc3Rk
Ojptb3ZlKGNhbGxfZmFjdG9yeSksIHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSksCisgICAg
ICBzdGQ6Om1vdmUoZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSksIHN0ZDo6bW92ZShuZXR3b3JrX2Nv
bnRyb2xsZXJfZmFjdG9yeSkpOworfQorI2VuZGlmCisKK3J0Yzo6c2NvcGVkX3JlZnB0cjxQZWVy
Q29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgK
KyAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHdvcmtl
cl90aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBkZWZhdWx0X2FkbSwKKyAgICBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAor
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVy
X2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IHZpZGVv
X2VuY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9y
eT4gdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01p
eGVyPiBhdWRpb19taXhlciwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5n
PiBhdWRpb19wcm9jZXNzaW5nKSB7CisgIGlmICghYXVkaW9fcHJvY2Vzc2luZykKKyAgICBhdWRp
b19wcm9jZXNzaW5nID0gQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpOworCisgIHN0
ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5naW5l
ID0KKyAgICAgIGNyaWNrZXQ6OldlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAorICAg
ICAgICAgIGRlZmF1bHRfYWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJf
ZmFjdG9yeSwKKyAgICAgICAgICBzdGQ6Om1vdmUodmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSwgc3Rk
Ojptb3ZlKHZpZGVvX2RlY29kZXJfZmFjdG9yeSksCisgICAgICAgICAgYXVkaW9fbWl4ZXIsIGF1
ZGlvX3Byb2Nlc3NpbmcpOworCisgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRmFjdG9yeUludGVyZmFj
ZT4gY2FsbF9mYWN0b3J5ID0gQ3JlYXRlQ2FsbEZhY3RvcnkoKTsKKworICBzdGQ6OnVuaXF1ZV9w
dHI8UnRjRXZlbnRMb2dGYWN0b3J5SW50ZXJmYWNlPiBldmVudF9sb2dfZmFjdG9yeSA9CisgICAg
ICBDcmVhdGVSdGNFdmVudExvZ0ZhY3RvcnkoKTsKKyAgUGVlckNvbm5lY3Rpb25GYWN0b3J5RGVw
ZW5kZW5jaWVzIGRlcGVuZGVuY2llczsKKyAgZGVwZW5kZW5jaWVzLm5ldHdvcmtfdGhyZWFkID0g
bmV0d29ya190aHJlYWQ7CisgIGRlcGVuZGVuY2llcy53b3JrZXJfdGhyZWFkID0gd29ya2VyX3Ro
cmVhZDsKKyAgZGVwZW5kZW5jaWVzLnNpZ25hbGluZ190aHJlYWQgPSBzaWduYWxpbmdfdGhyZWFk
OworICBkZXBlbmRlbmNpZXMubWVkaWFfZW5naW5lID0gc3RkOjptb3ZlKG1lZGlhX2VuZ2luZSk7
CisgIGRlcGVuZGVuY2llcy5jYWxsX2ZhY3RvcnkgPSBzdGQ6Om1vdmUoY2FsbF9mYWN0b3J5KTsK
KyAgZGVwZW5kZW5jaWVzLmV2ZW50X2xvZ19mYWN0b3J5ID0gc3RkOjptb3ZlKGV2ZW50X2xvZ19m
YWN0b3J5KTsKKyAgcmV0dXJuIENyZWF0ZU1vZHVsYXJQZWVyQ29ubmVjdGlvbkZhY3Rvcnkoc3Rk
Ojptb3ZlKGRlcGVuZGVuY2llcykpOworfQorCisjaWYgZGVmaW5lZChVU0VfQlVJTFRJTl9TV19D
T0RFQ1MpCitydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNl
PgorQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5V2l0aEF1ZGlvTWl4ZXIoCisgICAgcnRjOjpU
aHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAor
ICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAorICAgIEF1ZGlvRGV2aWNlTW9kdWxl
KiBkZWZhdWx0X2FkbSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9y
eT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0Rl
Y29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRj
VmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6
OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIpIHsKKyAgcmV0dXJuIENy
ZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICAgIG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJf
dGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBkZWZhdWx0X2FkbSwKKyAgICAgIGF1ZGlvX2VuY29k
ZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCB2aWRlb19lbmNvZGVyX2ZhY3Rvcnks
CisgICAgICB2aWRlb19kZWNvZGVyX2ZhY3RvcnksIGF1ZGlvX21peGVyLCBudWxscHRyKTsKK30K
KworcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3Jl
YXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAorICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVh
ZCwKKyAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2ln
bmFsaW5nX3RocmVhZCwKKyAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCisgICAg
cnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFj
dG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3Rvcnkq
IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJG
YWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkpIHsKKyAgcmV0dXJuIENyZWF0ZVBlZXJDb25u
ZWN0aW9uRmFjdG9yeVdpdGhBdWRpb01peGVyKAorICAgICAgbmV0d29ya190aHJlYWQsIHdvcmtl
cl90aHJlYWQsIHNpZ25hbGluZ190aHJlYWQsIGRlZmF1bHRfYWRtLAorICAgICAgYXVkaW9fZW5j
b2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksIHZpZGVvX2VuY29kZXJfZmFjdG9y
eSwKKyAgICAgIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwgbnVsbHB0cik7Cit9CisjZW5kaWYKKwor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3JlYXRlX3Bl
ZXJjb25uZWN0aW9uX2ZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYWE1MGM3YmQ4MDYzZDU2MjM5NWUw
MWY3ZjIzMzAyMTJlZmFmNGUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5
LmgKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBw
cm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX0NS
RUFURV9QRUVSQ09OTkVDVElPTl9GQUNUT1JZX0hfCisjZGVmaW5lIEFQSV9DUkVBVEVfUEVFUkNP
Tk5FQ1RJT05fRkFDVE9SWV9IXworCisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYXBp
L2F1ZGlvL2F1ZGlvX21peGVyLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19k
ZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29k
ZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9mZWNfY29udHJvbGxlci5oIgorI2luY2x1ZGUg
ImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQv
bmV0d29ya19jb250cm9sLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIK
KworbmFtZXNwYWNlIHJ0YyB7CisvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85OTg3KTogTW92ZSBy
dGM6OlRocmVhZCB0byBhcGkvIG9yIGV4cG9zZSBhIGJldHRlcgorLy8gdHlwZS4gQXQgdGhlIG1v
bWVudCwgcnRjOjpUaHJlYWQgaXMgbm90IHBhcnQgb2YgYXBpLyBzbyBpdCBjYW5ub3QgYmUKKy8v
IGluY2x1ZGVkIGluIG9yZGVyIHRvIGF2b2lkIHRvIGxlYWsgaW50ZXJuYWwgdHlwZXMuCitjbGFz
cyBUaHJlYWQ7Cit9ICAvLyBuYW1lc3BhY2UgcnRjCisKK25hbWVzcGFjZSBjcmlja2V0IHsKK2Ns
YXNzIFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnk7CitjbGFzcyBXZWJSdGNWaWRlb0VuY29kZXJG
YWN0b3J5OworfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisK
K2NsYXNzIEF1ZGlvRGV2aWNlTW9kdWxlOworY2xhc3MgQXVkaW9Qcm9jZXNzaW5nOworCisjaWYg
ZGVmaW5lZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCisvLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ug
b2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlLgorLy8KKy8vIFRoaXMgbWV0aG9kIHJl
bGllcyBvbiB0aGUgdGhyZWFkIGl0J3MgY2FsbGVkIG9uIGFzIHRoZSAic2lnbmFsaW5nIHRocmVh
ZCIKKy8vIGZvciB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5IGl0IGNyZWF0ZXMuCisvLworLy8g
QXMgc3VjaCwgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBhbHJlYWR5IHJ1bm5pbmcgYW4g
cnRjOjpUaHJlYWQgbWVzc2FnZQorLy8gbG9vcCwgYW4gYXBwbGljYXRpb24gdXNpbmcgdGhpcyBt
ZXRob2QgbXVzdCBldmVudHVhbGx5IGVpdGhlciBjYWxsCisvLyBydGM6OlRocmVhZDo6Q3VycmVu
dCgpLT5SdW4oKSwgb3IgY2FsbAorLy8gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKS0+UHJvY2Vzc01l
c3NhZ2VzKCkgd2l0aGluIHRoZSBhcHBsaWNhdGlvbidzIG93bgorLy8gbWVzc2FnZSBsb29wLgor
UlRDX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJm
YWNlPgorQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSk7
CisKKy8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRl
cmZhY2UuCisvLworLy8gfG5ldHdvcmtfdGhyZWFkfCwgfHdvcmtlcl90aHJlYWR8IGFuZCB8c2ln
bmFsaW5nX3RocmVhZHwgYXJlCisvLyB0aGUgb25seSBtYW5kYXRvcnkgcGFyYW1ldGVycy4KKy8v
CisvLyBJZiBub24tbnVsbCwgYSByZWZlcmVuY2UgaXMgYWRkZWQgdG8gfGRlZmF1bHRfYWRtfCwg
YW5kIG93bmVyc2hpcCBvZgorLy8gfHZpZGVvX2VuY29kZXJfZmFjdG9yeXwgYW5kIHx2aWRlb19k
ZWNvZGVyX2ZhY3Rvcnl8IGlzIHRyYW5zZmVycmVkIHRvIHRoZQorLy8gcmV0dXJuZWQgZmFjdG9y
eS4KKy8vIFRPRE8oZGVhZGJlZWYpOiBVc2UgcnRjOjpzY29wZWRfcmVmcHRyPD4gYW5kIHN0ZDo6
dW5pcXVlX3B0cjw+IHRvIG1ha2UgdGhpcworLy8gb3duZXJzaGlwIHRyYW5zZmVyIGFuZCByZWYg
Y291bnRpbmcgbW9yZSBvYnZpb3VzLgorUlRDX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8UGVl
ckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPgorQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5
KAorICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogd29y
a2VyX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBBdWRp
b0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
RW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIGNy
aWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwK
KyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2Zh
Y3RvcnkpOworCisvLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0
b3J5SW50ZXJmYWNlIHdpdGggb3B0aW9uYWwKKy8vIGV4dGVybmFsIGF1ZGlvIG1peGVkIGFuZCBh
dWRpbyBwcm9jZXNzaW5nIG1vZHVsZXMuCisvLworLy8gSWYgfGF1ZGlvX21peGVyfCBpcyBudWxs
LCBhbiBpbnRlcm5hbCBhdWRpbyBtaXhlciB3aWxsIGJlIGNyZWF0ZWQgYW5kIHVzZWQuCisvLyBJ
ZiB8YXVkaW9fcHJvY2Vzc2luZ3wgaXMgbnVsbCwgYW4gaW50ZXJuYWwgYXVkaW8gcHJvY2Vzc2lu
ZyBtb2R1bGUgd2lsbCBiZQorLy8gY3JlYXRlZCBhbmQgdXNlZC4KK1JUQ19FWFBPUlQgcnRjOjpz
Y29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KK0NyZWF0ZVBlZXJD
b25uZWN0aW9uRmFjdG9yeSgKKyAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAg
cnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190
aHJlYWQsCisgICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRtLAorICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJf
ZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19l
bmNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSog
dmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01peGVy
PiBhdWRpb19taXhlciwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBh
dWRpb19wcm9jZXNzaW5nKTsKKworLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25u
ZWN0aW9uRmFjdG9yeUludGVyZmFjZSB3aXRoIG9wdGlvbmFsCisvLyBleHRlcm5hbCBhdWRpbyBt
aXhlciwgYXVkaW8gcHJvY2Vzc2luZywgYW5kIGZlYyBjb250cm9sbGVyIG1vZHVsZXMuCisvLwor
Ly8gSWYgfGF1ZGlvX21peGVyfCBpcyBudWxsLCBhbiBpbnRlcm5hbCBhdWRpbyBtaXhlciB3aWxs
IGJlIGNyZWF0ZWQgYW5kIHVzZWQuCisvLyBJZiB8YXVkaW9fcHJvY2Vzc2luZ3wgaXMgbnVsbCwg
YW4gaW50ZXJuYWwgYXVkaW8gcHJvY2Vzc2luZyBtb2R1bGUgd2lsbCBiZQorLy8gY3JlYXRlZCBh
bmQgdXNlZC4KKy8vIElmIHxmZWNfY29udHJvbGxlcl9mYWN0b3J5fCBpcyBudWxsLCBhbiBpbnRl
cm5hbCBmZWMgY29udHJvbGxlciBtb2R1bGUgd2lsbAorLy8gYmUgY3JlYXRlZCBhbmQgdXNlZC4K
Ky8vIElmIHxuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeXwgaXMgcHJvdmlkZWQsIGl0IHdpbGwg
YmUgdXNlZCBpZiBlbmFibGVkIHZpYQorLy8gZmllbGQgdHJpYWwuCitSVENfRVhQT1JUIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+CitDcmVhdGVQZWVy
Q29ubmVjdGlvbkZhY3RvcnkoCisgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAg
IHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdf
dGhyZWFkLAorICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwKKyAgICBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAor
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVy
X2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9f
ZW5jb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnkq
IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhl
cj4gYXVkaW9fbWl4ZXIsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4g
YXVkaW9fcHJvY2Vzc2luZywKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3Rv
cnlJbnRlcmZhY2U+IGZlY19jb250cm9sbGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4KKyAgICAgICAgbmV0d29ya19jb250
cm9sbGVyX2ZhY3RvcnkgPSBudWxscHRyKTsKKyNlbmRpZiAgLy8gZGVmaW5lZChVU0VfQlVJTFRJ
Tl9TV19DT0RFQ1MpCisKKy8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2Ugd2l0aCBvcHRpb25hbCB2aWRlbworLy8gY29kZWMgZmFjdG9yaWVz
LiBUaGVzZSB2aWRlbyBmYWN0b3JpZXMgcmVwcmVzZW50cyBhbGwgdmlkZW8gY29kZWNzLCBpLmUu
IG5vCisvLyBleHRyYSBpbnRlcm5hbCB2aWRlbyBjb2RlY3Mgd2lsbCBiZSBhZGRlZC4KKy8vIFdo
ZW4gYnVpbGRpbmcgV2ViUlRDIHdpdGggcnRjX3VzZV9idWlsdGluX3N3X2NvZGVjcyA9IGZhbHNl
LCB0aGlzIGlzIHRoZQorLy8gb25seSBhdmFpbGFibGUgQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0
b3J5IG92ZXJsb2FkLgorUlRDX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rp
b25GYWN0b3J5SW50ZXJmYWNlPgorQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAorICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVh
ZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9EZXZpY2VNb2R1bGU+IGRlZmF1bHRfYWRtLAorICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9y
eSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRl
b19kZWNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1
ZGlvX21peGVyLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlv
X3Byb2Nlc3NpbmcpOworCisjaWYgZGVmaW5lZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCisvLyBD
cmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHdp
dGggZXh0ZXJuYWwgYXVkaW8KKy8vIG1peGVyLgorLy8KKy8vIElmIHxhdWRpb19taXhlcnwgaXMg
bnVsbCwgYW4gaW50ZXJuYWwgYXVkaW8gbWl4ZXIgd2lsbCBiZSBjcmVhdGVkIGFuZCB1c2VkLgor
UlRDX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJm
YWNlPgorQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5V2l0aEF1ZGlvTWl4ZXIoCisgICAgcnRj
OjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFk
LAorICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAorICAgIEF1ZGlvRGV2aWNlTW9k
dWxlKiBkZWZhdWx0X2FkbSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFj
dG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2Vi
UnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNr
ZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIpOworCisvLyBDcmVh
dGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlLgorLy8g
U2FtZSB0aHJlYWQgaXMgdXNlZCBhcyB3b3JrZXIgYW5kIG5ldHdvcmsgdGhyZWFkLgorUlRDX0VY
UE9SVCBpbmxpbmUgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVy
ZmFjZT4KK0NyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICBydGM6OlRocmVhZCogd29y
a2VyX2FuZF9uZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVh
ZCwKKyAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29k
ZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRl
b19kZWNvZGVyX2ZhY3RvcnkpIHsKKyAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9y
eSgKKyAgICAgIHdvcmtlcl9hbmRfbmV0d29ya190aHJlYWQsIHdvcmtlcl9hbmRfbmV0d29ya190
aHJlYWQsIHNpZ25hbGluZ190aHJlYWQsCisgICAgICBkZWZhdWx0X2FkbSwgYXVkaW9fZW5jb2Rl
cl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICB2aWRlb19lbmNvZGVyX2Zh
Y3RvcnksIHZpZGVvX2RlY29kZXJfZmFjdG9yeSk7Cit9CisjZW5kaWYgIC8vIGRlZmluZWQoVVNF
X0JVSUxUSU5fU1dfQ09ERUNTKQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAg
Ly8gQVBJX0NSRUFURV9QRUVSQ09OTkVDVElPTl9GQUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvL2NyeXB0b29w
dGlvbnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
Y3J5cHRvL2NyeXB0b29wdGlvbnMuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YzNGYxOWI1Mzg1NzIyZGMyYWJh
ZWZjOWI1MmYxZDA2ZmZiNDM1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5jYwpAQCAt
MCwwICsxLDc4IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL2NyeXB0by9j
cnlwdG9vcHRpb25zLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgor
CituYW1lc3BhY2Ugd2VicnRjIHsKKworQ3J5cHRvT3B0aW9uczo6Q3J5cHRvT3B0aW9ucygpIHt9
CisKK0NyeXB0b09wdGlvbnM6OkNyeXB0b09wdGlvbnMoY29uc3QgQ3J5cHRvT3B0aW9ucyYgb3Ro
ZXIpIHsKKyAgc3J0cCA9IG90aGVyLnNydHA7CisgIHNmcmFtZSA9IG90aGVyLnNmcmFtZTsKK30K
KworQ3J5cHRvT3B0aW9uczo6fkNyeXB0b09wdGlvbnMoKSB7fQorCisvLyBzdGF0aWMKK0NyeXB0
b09wdGlvbnMgQ3J5cHRvT3B0aW9uczo6Tm9HY20oKSB7CisgIENyeXB0b09wdGlvbnMgb3B0aW9u
czsKKyAgb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IGZhbHNlOworICBy
ZXR1cm4gb3B0aW9uczsKK30KKworc3RkOjp2ZWN0b3I8aW50PiBDcnlwdG9PcHRpb25zOjpHZXRT
dXBwb3J0ZWREdGxzU3J0cENyeXB0b1N1aXRlcygpIGNvbnN0IHsKKyAgc3RkOjp2ZWN0b3I8aW50
PiBjcnlwdG9fc3VpdGVzOworICBpZiAoc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMpIHsK
KyAgICBjcnlwdG9fc3VpdGVzLnB1c2hfYmFjayhydGM6OlNSVFBfQUVBRF9BRVNfMjU2X0dDTSk7
CisgICAgY3J5cHRvX3N1aXRlcy5wdXNoX2JhY2socnRjOjpTUlRQX0FFQURfQUVTXzEyOF9HQ00p
OworICB9CisgIC8vIE5vdGU6IFNSVFBfQUVTMTI4X0NNX1NIQTFfODAgaXMgd2hhdCBpcyByZXF1
aXJlZCB0byBiZSBzdXBwb3J0ZWQgKGJ5CisgIC8vIGRyYWZ0LWlldGYtcnRjd2ViLXNlY3VyaXR5
LWFyY2gpLCBidXQgU1JUUF9BRVMxMjhfQ01fU0hBMV8zMiBpcyBhbGxvd2VkIGFzCisgIC8vIHdl
bGwsIGFuZCBzYXZlcyBhIGZldyBieXRlcyBwZXIgcGFja2V0IGlmIGl0IGVuZHMgdXAgc2VsZWN0
ZWQuCisgIC8vIEFzIHRoZSBjaXBoZXIgc3VpdGUgaXMgcG90ZW50aWFsbHkgaW5zZWN1cmUsIGl0
IHdpbGwgb25seSBiZSB1c2VkIGlmCisgIC8vIGVuYWJsZWQgYnkgYm90aCBwZWVycy4KKyAgaWYg
KHNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIpIHsKKyAgICBjcnlwdG9f
c3VpdGVzLnB1c2hfYmFjayhydGM6OlNSVFBfQUVTMTI4X0NNX1NIQTFfMzIpOworICB9CisgIGNy
eXB0b19zdWl0ZXMucHVzaF9iYWNrKHJ0Yzo6U1JUUF9BRVMxMjhfQ01fU0hBMV84MCk7CisgIHJl
dHVybiBjcnlwdG9fc3VpdGVzOworfQorCitib29sIENyeXB0b09wdGlvbnM6Om9wZXJhdG9yPT0o
Y29uc3QgQ3J5cHRvT3B0aW9ucyYgb3RoZXIpIGNvbnN0IHsKKyAgc3RydWN0IGRhdGFfYmVpbmdf
dGVzdGVkX2Zvcl9lcXVhbGl0eSB7CisgICAgc3RydWN0IFNydHAgeworICAgICAgYm9vbCBlbmFi
bGVfZ2NtX2NyeXB0b19zdWl0ZXM7CisgICAgICBib29sIGVuYWJsZV9hZXMxMjhfc2hhMV8zMl9j
cnlwdG9fY2lwaGVyOworICAgICAgYm9vbCBlbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0
ZW5zaW9uczsKKyAgICB9IHNydHA7CisgICAgc3RydWN0IFNGcmFtZSB7CisgICAgICBib29sIHJl
cXVpcmVfZnJhbWVfZW5jcnlwdGlvbjsKKyAgICB9IHNmcmFtZTsKKyAgfTsKKyAgc3RhdGljX2Fz
c2VydChzaXplb2YoZGF0YV9iZWluZ190ZXN0ZWRfZm9yX2VxdWFsaXR5KSA9PSBzaXplb2YoKnRo
aXMpLAorICAgICAgICAgICAgICAgICJEaWQgeW91IGFkZCBzb21ldGhpbmcgdG8gQ3J5cHRvT3B0
aW9ucyBhbmQgZm9yZ2V0IHRvICIKKyAgICAgICAgICAgICAgICAidXBkYXRlIG9wZXJhdG9yPT0/
Iik7CisKKyAgcmV0dXJuIHNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID09IG90aGVyLnNy
dHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzICYmCisgICAgICAgICBzcnRwLmVuYWJsZV9hZXMx
Mjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID09CisgICAgICAgICAgICAgb3RoZXIuc3J0cC5lbmFi
bGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciAmJgorICAgICAgICAgc3J0cC5lbmFibGVf
ZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9PQorICAgICAgICAgICAgIG90aGVyLnNy
dHAuZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMgJiYKKyAgICAgICAgIHNm
cmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24gPT0KKyAgICAgICAgICAgICBvdGhlci5zZnJh
bWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uOworfQorCitib29sIENyeXB0b09wdGlvbnM6Om9w
ZXJhdG9yIT0oY29uc3QgQ3J5cHRvT3B0aW9ucyYgb3RoZXIpIGNvbnN0IHsKKyAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvL2Ny
eXB0b29wdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MzBhYjIwODk1OTgwMDcw
Mjg1N2Q5ZjQ2OWM5NGQ2NTlhOGZiOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaApA
QCAtMCwwICsxLDY2IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisg
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9DUllQVE9f
Q1JZUFRPT1BUSU9OU19IXworI2RlZmluZSBBUElfQ1JZUFRPX0NSWVBUT09QVElPTlNfSF8KKwor
I2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIENyeXB0b09wdGlv
bnMgZGVmaW5lcyBhZHZhbmNlZCBjcnlwdG9ncmFwaGljIHNldHRpbmdzIGZvciBuYXRpdmUgV2Vi
UlRDLgorLy8gVGhlc2Ugc2V0dGluZ3MgbXVzdCBiZSBwYXNzZWQgaW50byBQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2U6Ok9wdGlvbnMKKy8vIGFuZCBhcmUgb25seSBhcHBsaWNhYmxlIHRv
IG5hdGl2ZSB1c2UgY2FzZXMgb2YgV2ViUlRDLgorc3RydWN0IENyeXB0b09wdGlvbnMgeworICBD
cnlwdG9PcHRpb25zKCk7CisgIENyeXB0b09wdGlvbnMoY29uc3QgQ3J5cHRvT3B0aW9ucyYgb3Ro
ZXIpOworICB+Q3J5cHRvT3B0aW9ucygpOworCisgIC8vIEhlbHBlciBtZXRob2QgdG8gcmV0dXJu
IGFuIGluc3RhbmNlIG9mIHRoZSBDcnlwdG9PcHRpb25zIHdpdGggR0NNIGNyeXB0bworICAvLyBz
dWl0ZXMgZGlzYWJsZWQuIFRoaXMgbWV0aG9kIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgZGVw
ZW5kaW5nIG9uIGN1cnJlbnQKKyAgLy8gZGVmYXVsdCB2YWx1ZXMgc2V0IGJ5IHRoZSBjb25zdHJ1
Y3Rvci4KKyAgc3RhdGljIENyeXB0b09wdGlvbnMgTm9HY20oKTsKKworICAvLyBSZXR1cm5zIGEg
bGlzdCBvZiB0aGUgc3VwcG9ydGVkIERUTFMtU1JUUCBDcnlwdG8gc3VpdGVzIGJhc2VkIG9uIHRo
aXMgc2V0CisgIC8vIG9mIGNyeXB0byBvcHRpb25zLgorICBzdGQ6OnZlY3RvcjxpbnQ+IEdldFN1
cHBvcnRlZER0bHNTcnRwQ3J5cHRvU3VpdGVzKCkgY29uc3Q7CisKKyAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENyeXB0b09wdGlvbnMmIG90aGVyKSBjb25zdDsKKyAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IENyeXB0b09wdGlvbnMmIG90aGVyKSBjb25zdDsKKworICAvLyBTUlRQIFJlbGF0ZWQgUGVl
ciBDb25uZWN0aW9uIG9wdGlvbnMuCisgIHN0cnVjdCBTcnRwIHsKKyAgICAvLyBFbmFibGUgR0NN
IGNyeXB0byBzdWl0ZXMgZnJvbSBSRkMgNzcxNCBmb3IgU1JUUC4gR0NNIHdpbGwgb25seSBiZSB1
c2VkCisgICAgLy8gaWYgYm90aCBzaWRlcyBlbmFibGUgaXQuCisgICAgYm9vbCBlbmFibGVfZ2Nt
X2NyeXB0b19zdWl0ZXMgPSBmYWxzZTsKKworICAgIC8vIElmIHNldCB0byB0cnVlLCB0aGUgKHBv
dGVudGlhbGx5IGluc2VjdXJlKSBjcnlwdG8gY2lwaGVyCisgICAgLy8gU1JUUF9BRVMxMjhfQ01f
U0hBMV8zMiB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBjaXBoZXJz
CisgICAgLy8gZHVyaW5nIG5lZ290aWF0aW9uLiBJdCB3aWxsIG9ubHkgYmUgdXNlZCBpZiBib3Ro
IHBlZXJzIHN1cHBvcnQgaXQgYW5kIG5vCisgICAgLy8gb3RoZXIgY2lwaGVycyBnZXQgcHJlZmVy
cmVkLgorICAgIGJvb2wgZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPSBmYWxz
ZTsKKworICAgIC8vIElmIHNldCB0byB0cnVlLCBlbmNyeXB0ZWQgUlRQIGhlYWRlciBleHRlbnNp
b25zIGFzIGRlZmluZWQgaW4gUkZDIDY5MDQKKyAgICAvLyB3aWxsIGJlIG5lZ290aWF0ZWQuIFRo
ZXkgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYm90aCBwZWVycyBzdXBwb3J0IHRoZW0uCisgICAgYm9v
bCBlbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9IGZhbHNlOworICB9IHNy
dHA7CisKKyAgLy8gT3B0aW9ucyB0byBiZSB1c2VkIHdoZW4gdGhlIEZyYW1lRW5jcnlwdG9yIC8g
RnJhbWVEZWNyeXB0b3IgQVBJcyBhcmUgdXNlZC4KKyAgc3RydWN0IFNGcmFtZSB7CisgICAgLy8g
SWYgc2V0IGFsbCBSdHBTZW5kZXJzIG11c3QgaGF2ZSBhbiBGcmFtZUVuY3J5cHRvciBhdHRhY2hl
ZCB0byB0aGVtIGJlZm9yZQorICAgIC8vIHRoZXkgYXJlIGFsbG93ZWQgdG8gc2VuZCBwYWNrZXRz
LiBBbGwgUnRwUmVjZWl2ZXJzIG11c3QgaGF2ZSBhCisgICAgLy8gRnJhbWVEZWNyeXB0b3IgYXR0
YWNoZWQgdG8gdGhlbSBiZWZvcmUgdGhleSBhcmUgYWJsZSB0byByZWNlaXZlIHBhY2tldHMuCisg
ICAgYm9vbCByZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24gPSBmYWxzZTsKKyAgfSBzZnJhbWU7Cit9
OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX0NSWVBUT19DUllQ
VE9PUFRJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvcGFyYW1zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvcGFyYW1zLmgKaW5kZXggMjM1MDUyODM1OGYyNmUw
MTJiMzBmYTE2MDU3NmMyMTI5NGUzMjVhMy4uYWJlOTA1NTQ2MjI5YzgzMjdlMmQ3YTljNjg1Zjhl
ZTQ0Njk4ZGIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2NyeXB0b3BhcmFtcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jcnlwdG9wYXJhbXMuaApAQCAtMTYsNiArMTYsOCBAQAog
bmFtZXNwYWNlIGNyaWNrZXQgewogCiAvLyBQYXJhbWV0ZXJzIGZvciBTUlRQIG5lZ290aWF0aW9u
LCBhcyBkZXNjcmliZWQgaW4gUkZDIDQ1NjguCisvLyBUT0RPKGJlbndyaWdodCkgLSBSZW5hbWUg
dG8gU3J0cENyeXB0b1BhcmFtcyBhcyB0aGVzZSBvbmx5IGFwcGx5IHRvIFNSVFAgYW5kCisvLyBu
b3QgZ2VuZXJpYyBjcnlwdG8gcGFyYW1ldGVycyBmb3IgV2ViUlRDLgogc3RydWN0IENyeXB0b1Bh
cmFtcyB7CiAgIENyeXB0b1BhcmFtcygpIDogdGFnKDApIHt9CiAgIENyeXB0b1BhcmFtcyhpbnQg
dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9kYXRhY2hhbm5lbGludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2RhdGFjaGFubmVsaW50ZXJmYWNlLmgKaW5kZXggYTBkMmIzYjUx
YTU5ODU4YjFiYTg0ZmRlYWU4YjY5MTMzZDE5Y2NlOS4uN2NiNTU4MjIzMzdmODA0NWIzZjA5OTg1
NDYyMTNmMWFlMTAzM2RjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2RhdGFjaGFubmVsaW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2RhdGFjaGFubmVsaW50ZXJmYWNl
LmgKQEAgLTE0LDYgKzE0LDggQEAKICNpZm5kZWYgQVBJX0RBVEFDSEFOTkVMSU5URVJGQUNFX0hf
CiAjZGVmaW5lIEFQSV9EQVRBQ0hBTk5FTElOVEVSRkFDRV9IXwogCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9qc2VwLmNjCmluZGV4IDUyYTYwZjk1ZTMyZTkwYWQyMTk2YjY3
MWQ4MzdjMmE1NDcxOGUwOGEuLjAxZjU3MjA1NjNkOTA4MzQ3ZjVkY2I1ZjQzODFiOWIyMWM0YmI5
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9qc2VwLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9qc2VwLmNjCkBAIC0zOCw0ICszOCwzMiBAQCB2b2lkIFNldFNlc3Npb25EZXNjcmlw
dGlvbk9ic2VydmVyOjpPbkZhaWx1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yKSB7CiAgIE9u
RmFpbHVyZShSVENFcnJvcihSVENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SLCBzdGQ6OnN0cmlu
ZyhlcnJvcikpKTsKIH0KIAorY29uc3QgY2hhciBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6
OmtPZmZlcltdID0gIm9mZmVyIjsKK2NvbnN0IGNoYXIgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJm
YWNlOjprUHJBbnN3ZXJbXSA9ICJwcmFuc3dlciI7Citjb25zdCBjaGFyIFNlc3Npb25EZXNjcmlw
dGlvbkludGVyZmFjZTo6a0Fuc3dlcltdID0gImFuc3dlciI7CisKK2NvbnN0IGNoYXIqIFNkcFR5
cGVUb1N0cmluZyhTZHBUeXBlIHR5cGUpIHsKKyAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBT
ZHBUeXBlOjprT2ZmZXI6CisgICAgICByZXR1cm4gU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNl
OjprT2ZmZXI7CisgICAgY2FzZSBTZHBUeXBlOjprUHJBbnN3ZXI6CisgICAgICByZXR1cm4gU2Vz
c2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprUHJBbnN3ZXI7CisgICAgY2FzZSBTZHBUeXBlOjpr
QW5zd2VyOgorICAgICAgcmV0dXJuIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6a0Fuc3dl
cjsKKyAgfQorICByZXR1cm4gIiI7Cit9CisKK2Fic2w6Om9wdGlvbmFsPFNkcFR5cGU+IFNkcFR5
cGVGcm9tU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlX3N0cikgeworICBpZiAodHlwZV9z
dHIgPT0gU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprT2ZmZXIpIHsKKyAgICByZXR1cm4g
U2RwVHlwZTo6a09mZmVyOworICB9IGVsc2UgaWYgKHR5cGVfc3RyID09IFNlc3Npb25EZXNjcmlw
dGlvbkludGVyZmFjZTo6a1ByQW5zd2VyKSB7CisgICAgcmV0dXJuIFNkcFR5cGU6OmtQckFuc3dl
cjsKKyAgfSBlbHNlIGlmICh0eXBlX3N0ciA9PSBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6
OmtBbnN3ZXIpIHsKKyAgICByZXR1cm4gU2RwVHlwZTo6a0Fuc3dlcjsKKyAgfSBlbHNlIHsKKyAg
ICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvanNlcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2pzZXAuaAppbmRleCA0ZDRiY2MwYmZiNjJlZDAzNGI5Nzg2ODliZGRhYzdjM2I0ODI2MjY2Li4x
YzUwNDU1ZDA0ZGY5NzY0ZGZiZmE3NzcyOGIyMDVlNWRlNzY4MDQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9qc2VwLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAi
YXBpL3J0Y2Vycm9yLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiBj
bGFzcyBDYW5kaWRhdGU7CkBAIC03MywxMyArNzQsMTMgQEAgY2xhc3MgSWNlQ2FuZGlkYXRlSW50
ZXJmYWNlIHsKIC8vIENyZWF0ZXMgYSBJY2VDYW5kaWRhdGVJbnRlcmZhY2UgYmFzZWQgb24gU0RQ
IHN0cmluZy4KIC8vIFJldHVybnMgbnVsbCBpZiB0aGUgc2RwIHN0cmluZyBjYW4ndCBiZSBwYXJz
ZWQuCiAvLyB8ZXJyb3J8IG1heSBiZSBudWxsLgotSWNlQ2FuZGlkYXRlSW50ZXJmYWNlKiBDcmVh
dGVJY2VDYW5kaWRhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIHNkcF9taWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2RwX21saW5lX2luZGV4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNk
cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFBhcnNlRXJy
b3IqIGVycm9yKTsKK1JUQ19FWFBPUlQgSWNlQ2FuZGlkYXRlSW50ZXJmYWNlKiBDcmVhdGVJY2VD
YW5kaWRhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIHNkcF9taWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZHBfbWxpbmVfaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBzZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yKTsKIAogLy8gQ3JlYXRlcyBhbiBJ
Y2VDYW5kaWRhdGVJbnRlcmZhY2UgYmFzZWQgb24gYSBwYXJzZWQgY2FuZGlkYXRlIHN0cnVjdHVy
ZS4KLXN0ZDo6dW5pcXVlX3B0cjxJY2VDYW5kaWRhdGVJbnRlcmZhY2U+IENyZWF0ZUljZUNhbmRp
ZGF0ZSgKK1JUQ19FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEljZUNhbmRpZGF0ZUludGVyZmFjZT4g
Q3JlYXRlSWNlQ2FuZGlkYXRlKAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzZHBfbWlkLAogICAg
IGludCBzZHBfbWxpbmVfaW5kZXgsCiAgICAgY29uc3QgY3JpY2tldDo6Q2FuZGlkYXRlJiBjYW5k
aWRhdGUpOwpAQCAtMTIxLDcgKzEyMiw3IEBAIGFic2w6Om9wdGlvbmFsPFNkcFR5cGU+IFNkcFR5
cGVGcm9tU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlX3N0cik7CiAvLyBhbmQgaXMgdGhl
cmVmb3JlIG5vdCBleHBlY3RlZCB0byBiZSB0aHJlYWQgc2FmZS4KIC8vCiAvLyBBbiBpbnN0YW5j
ZSBjYW4gYmUgY3JlYXRlZCBieSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24uCi1jbGFzcyBTZXNz
aW9uRGVzY3JpcHRpb25JbnRlcmZhY2UgeworY2xhc3MgUlRDX0VYUE9SVCBTZXNzaW9uRGVzY3Jp
cHRpb25JbnRlcmZhY2UgewogIHB1YmxpYzoKICAgLy8gU3RyaW5nIHJlcHJlc2VudGF0aW9ucyBv
ZiB0aGUgc3VwcG9ydGVkIFNEUCB0eXBlcy4KICAgc3RhdGljIGNvbnN0IGNoYXIga09mZmVyW107
CkBAIC0xODEsMjEgKzE4MiwyMSBAQCBjbGFzcyBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2Ug
ewogLy8gfGVycm9yfCBtYXkgYmUgbnVsbC4KIC8vIFRPRE8oc3RldmVhbnRvbik6IFRoaXMgZnVu
Y3Rpb24gaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0aGUgZnVuY3Rpb25zIGJlbG93CiAvLyB3
aGljaCB0YWtlIGFuIFNkcFR5cGUgZW51bSBpbnN0ZWFkLiBSZW1vdmUgdGhpcyBvbmNlIGl0IGlz
IG5vIGxvbmdlciB1c2VkLgotU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlKiBDcmVhdGVTZXNz
aW9uRGVzY3JpcHRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
c2RwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2RwUGFyc2VFcnJvciogZXJyb3IpOworUlRDX0VYUE9SVCBTZXNzaW9uRGVzY3JpcHRpb25J
bnRlcmZhY2UqIENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbigKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgdHlwZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgc2RwLAorICAgIFNkcFBhcnNlRXJyb3Iq
IGVycm9yKTsKIAogLy8gQ3JlYXRlcyBhIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSBiYXNl
ZCBvbiB0aGUgU0RQIHN0cmluZyBhbmQgdGhlIHR5cGUuCiAvLyBSZXR1cm5zIG51bGwgaWYgdGhl
IFNEUCBzdHJpbmcgY2Fubm90IGJlIHBhcnNlZC4KIC8vIElmIHVzaW5nIHRoZSBzaWduYXR1cmUg
d2l0aCB8ZXJyb3Jfb3V0fCwgZGV0YWlscyBvZiB0aGUgcGFyc2luZyBlcnJvciBtYXkgYmUKIC8v
IHdyaXR0ZW4gdG8gfGVycm9yX291dHwgaWYgaXQgaXMgbm90IG51bGwuCi1zdGQ6OnVuaXF1ZV9w
dHI8U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlPiBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24o
Ci0gICAgU2RwVHlwZSB0eXBlLAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzZHApOwotc3RkOjp1
bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZT4gQ3JlYXRlU2Vzc2lvbkRlc2Ny
aXB0aW9uKAotICAgIFNkcFR5cGUgdHlwZSwKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgc2RwLAot
ICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yX291dCk7CitSVENfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0
cjxTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+CitDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24o
U2RwVHlwZSB0eXBlLCBjb25zdCBzdGQ6OnN0cmluZyYgc2RwKTsKK1JUQ19FWFBPUlQgc3RkOjp1
bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZT4KK0NyZWF0ZVNlc3Npb25EZXNj
cmlwdGlvbihTZHBUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHNkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTZHBQYXJzZUVycm9yKiBl
cnJvcl9vdXQpOwogCiAvLyBDcmVhdGVzIGEgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlIGJh
c2VkIG9uIGEgcGFyc2VkIFNEUCBzdHJ1Y3R1cmUgYW5kIHRoZQogLy8gZ2l2ZW4gdHlwZSwgSUQg
YW5kIHZlcnNpb24uCkBAIC0yMDYsNyArMjA3LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25E
ZXNjcmlwdGlvbkludGVyZmFjZT4gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uKAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxjcmlja2V0OjpTZXNzaW9uRGVzY3JpcHRpb24+IGRlc2NyaXB0aW9uKTsKIAog
Ly8gQ3JlYXRlT2ZmZXIgYW5kIENyZWF0ZUFuc3dlciBjYWxsYmFjayBpbnRlcmZhY2UuCi1jbGFz
cyBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciA6IHB1YmxpYyBydGM6OlJlZkNvdW50
SW50ZXJmYWNlIHsKK2NsYXNzIFJUQ19FWFBPUlQgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2Jz
ZXJ2ZXIKKyAgICA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICBwdWJsaWM6CiAg
IC8vIFRoaXMgY2FsbGJhY2sgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIHxkZXNjfC4K
ICAgLy8gVE9ETyhkZWFkYmVlZik6IE1ha2UgdGhpcyB0YWtlIGFuIHN0ZDo6dW5pcXVlX3B0cjw+
IHRvIGF2b2lkIGNvbmZ1c2lvbgpAQCAtMjI3LDcgKzIyOSw3IEBAIGNsYXNzIENyZWF0ZVNlc3Np
b25EZXNjcmlwdGlvbk9ic2VydmVyIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2Ugewog
fTsKIAogLy8gU2V0TG9jYWxEZXNjcmlwdGlvbiBhbmQgU2V0UmVtb3RlRGVzY3JpcHRpb24gY2Fs
bGJhY2sgaW50ZXJmYWNlLgotY2xhc3MgU2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgOiBw
dWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CitjbGFzcyBSVENfRVhQT1JUIFNldFNlc3Np
b25EZXNjcmlwdGlvbk9ic2VydmVyIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2Ugewog
IHB1YmxpYzoKICAgdmlydHVhbCB2b2lkIE9uU3VjY2VzcygpID0gMDsKICAgLy8gU2VlIGRlc2Ny
aXB0aW9uIGluIENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZvciBPbkZhaWx1cmUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvanNlcGljZWNhbmRpZGF0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9qc2VwaWNlY2FuZGlkYXRlLmNjCmluZGV4IGI5YmEyZmVhMjlhYWFhZDYy
YzBiY2Y4MzJiYTg2ODNmYzcwMmVjMDQuLmVkMmY3OTI3ZjI3MmIzNGRlMzZkM2RjMDNmMGM2MzAw
NDFlZGFhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9qc2VwaWNlY2FuZGlkYXRlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9qc2VwaWNlY2FuZGlkYXRlLmNjCkBAIC0xMCw2ICsx
MCw5IEBACiAKICNpbmNsdWRlICJhcGkvanNlcGljZWNhbmRpZGF0ZS5oIgogCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPHV0aWxpdHk+CisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBz
dGQ6OnN0cmluZyBKc2VwSWNlQ2FuZGlkYXRlOjpzZHBfbWlkKCkgY29uc3QgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2pzZXBpY2Vj
YW5kaWRhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9qc2VwaWNlY2FuZGlkYXRlLmgKaW5kZXggNTA1MjBmZTcyNzliMmE2Njk2YzA1ZDNiZmNmZWEw
MDFkZjAyNzk1MS4uOWNjNzQ0M2YzZmJiZGM3ODRmZDdiNTFiZmRiYTljMTg3MWI0MzhmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2pz
ZXBpY2VjYW5kaWRhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvanNlcGljZWNhbmRpZGF0ZS5oCkBAIC0xNCw4ICsxNCw4IEBACiAjaWZuZGVm
IEFQSV9KU0VQSUNFQ0FORElEQVRFX0hfCiAjZGVmaW5lIEFQSV9KU0VQSUNFQ0FORElEQVRFX0hf
CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRp
bGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvY2FuZGlkYXRlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
bWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVmMjIzYWE3ODgwMjJlN2E3OWY4Yzk4NzBiN2JhOGRiNTFhODIwODgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVk
aWFfdHJhbnNwb3J0X2ludGVyZmFjZS5jYwpAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworLy8gVGhpcyBpcyBFWFBFUklNRU5UQUwgaW50ZXJmYWNlIGZvciBtZWRpYSB0cmFu
c3BvcnQuCisvLworLy8gVGhlIGdvYWwgaXMgdG8gcmVmYWN0b3IgV2ViUlRDIGNvZGUgc28gdGhh
dCBhdWRpbyBhbmQgdmlkZW8gZnJhbWVzCisvLyBhcmUgc2VudCAvIHJlY2VpdmVkIHRocm91Z2gg
dGhlIG1lZGlhIHRyYW5zcG9ydCBpbnRlcmZhY2UuIFRoaXMgd2lsbAorLy8gZW5hYmxlIGRpZmZl
cmVudCBtZWRpYSB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb25zLCBpbmNsdWRpbmcgUVVJQy1iYXNl
ZAorLy8gbWVkaWEgdHJhbnNwb3J0LgorCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9p
bnRlcmZhY2UuaCIKKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8dXRpbGl0eT4KKwor
bmFtZXNwYWNlIHdlYnJ0YyB7CisKK01lZGlhVHJhbnNwb3J0U2V0dGluZ3M6Ok1lZGlhVHJhbnNw
b3J0U2V0dGluZ3MoKSA9IGRlZmF1bHQ7CitNZWRpYVRyYW5zcG9ydFNldHRpbmdzOjpNZWRpYVRy
YW5zcG9ydFNldHRpbmdzKGNvbnN0IE1lZGlhVHJhbnNwb3J0U2V0dGluZ3MmKSA9CisgICAgZGVm
YXVsdDsKK01lZGlhVHJhbnNwb3J0U2V0dGluZ3MmIE1lZGlhVHJhbnNwb3J0U2V0dGluZ3M6Om9w
ZXJhdG9yPSgKKyAgICBjb25zdCBNZWRpYVRyYW5zcG9ydFNldHRpbmdzJikgPSBkZWZhdWx0Owor
TWVkaWFUcmFuc3BvcnRTZXR0aW5nczo6fk1lZGlhVHJhbnNwb3J0U2V0dGluZ3MoKSA9IGRlZmF1
bHQ7CisKK01lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6On5NZWRpYVRyYW5zcG9ydEVu
Y29kZWRBdWRpb0ZyYW1lKCkge30KKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6
TWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSgKKyAgICBpbnQgc2FtcGxpbmdfcmF0ZV9o
eiwKKyAgICBpbnQgc3RhcnRpbmdfc2FtcGxlX2luZGV4LAorICAgIGludCBzYW1wbGVzX3Blcl9j
aGFubmVsLAorICAgIGludCBzZXF1ZW5jZV9udW1iZXIsCisgICAgRnJhbWVUeXBlIGZyYW1lX3R5
cGUsCisgICAgdWludDhfdCBwYXlsb2FkX3R5cGUsCisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4g
ZW5jb2RlZF9kYXRhKQorICAgIDogc2FtcGxpbmdfcmF0ZV9oel8oc2FtcGxpbmdfcmF0ZV9oeiks
CisgICAgICBzdGFydGluZ19zYW1wbGVfaW5kZXhfKHN0YXJ0aW5nX3NhbXBsZV9pbmRleCksCisg
ICAgICBzYW1wbGVzX3Blcl9jaGFubmVsXyhzYW1wbGVzX3Blcl9jaGFubmVsKSwKKyAgICAgIHNl
cXVlbmNlX251bWJlcl8oc2VxdWVuY2VfbnVtYmVyKSwKKyAgICAgIGZyYW1lX3R5cGVfKGZyYW1l
X3R5cGUpLAorICAgICAgcGF5bG9hZF90eXBlXyhwYXlsb2FkX3R5cGUpLAorICAgICAgZW5jb2Rl
ZF9kYXRhXyhzdGQ6Om1vdmUoZW5jb2RlZF9kYXRhKSkge30KKworTWVkaWFUcmFuc3BvcnRFbmNv
ZGVkQXVkaW9GcmFtZSYgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6b3BlcmF0b3I9
KAorICAgIGNvbnN0IE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUmKSA9IGRlZmF1bHQ7
CisKK01lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUmIE1lZGlhVHJhbnNwb3J0RW5jb2Rl
ZEF1ZGlvRnJhbWU6Om9wZXJhdG9yPSgKKyAgICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0Zy
YW1lJiYpID0gZGVmYXVsdDsKKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6TWVk
aWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSgKKyAgICBjb25zdCBNZWRpYVRyYW5zcG9ydEVu
Y29kZWRBdWRpb0ZyYW1lJikgPSBkZWZhdWx0OworCitNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRp
b0ZyYW1lOjpNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lKAorICAgIE1lZGlhVHJhbnNw
b3J0RW5jb2RlZEF1ZGlvRnJhbWUmJikgPSBkZWZhdWx0OworCitNZWRpYVRyYW5zcG9ydEVuY29k
ZWRWaWRlb0ZyYW1lOjp+TWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSgpIHt9CisKK01l
ZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWU6Ok1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVv
RnJhbWUoCisgICAgaW50NjRfdCBmcmFtZV9pZCwKKyAgICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiBy
ZWZlcmVuY2VkX2ZyYW1lX2lkcywKKyAgICBWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlLAorICAg
IGNvbnN0IHdlYnJ0Yzo6RW5jb2RlZEltYWdlJiBlbmNvZGVkX2ltYWdlKQorICAgIDogY29kZWNf
dHlwZV8oY29kZWNfdHlwZSksCisgICAgICBlbmNvZGVkX2ltYWdlXyhlbmNvZGVkX2ltYWdlKSwK
KyAgICAgIGZyYW1lX2lkXyhmcmFtZV9pZCksCisgICAgICByZWZlcmVuY2VkX2ZyYW1lX2lkc18o
c3RkOjptb3ZlKHJlZmVyZW5jZWRfZnJhbWVfaWRzKSkge30KKworTWVkaWFUcmFuc3BvcnRFbmNv
ZGVkVmlkZW9GcmFtZSYgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZTo6b3BlcmF0b3I9
KAorICAgIGNvbnN0IE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmKSA9IGRlZmF1bHQ7
CisKK01lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmIE1lZGlhVHJhbnNwb3J0RW5jb2Rl
ZFZpZGVvRnJhbWU6Om9wZXJhdG9yPSgKKyAgICBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0Zy
YW1lJiYpID0gZGVmYXVsdDsKKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZTo6TWVk
aWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSgKKyAgICBjb25zdCBNZWRpYVRyYW5zcG9ydEVu
Y29kZWRWaWRlb0ZyYW1lJikgPSBkZWZhdWx0OworCitNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRl
b0ZyYW1lOjpNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lKAorICAgIE1lZGlhVHJhbnNw
b3J0RW5jb2RlZFZpZGVvRnJhbWUmJikgPSBkZWZhdWx0OworCitTZW5kRGF0YVBhcmFtczo6U2Vu
ZERhdGFQYXJhbXMoKSA9IGRlZmF1bHQ7CisKK1JUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE1l
ZGlhVHJhbnNwb3J0SW50ZXJmYWNlPj4KK01lZGlhVHJhbnNwb3J0RmFjdG9yeTo6Q3JlYXRlTWVk
aWFUcmFuc3BvcnQoCisgICAgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogcGFja2V0X3Ry
YW5zcG9ydCwKKyAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgYm9vbCBpc19j
YWxsZXIpIHsKKyAgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyBzZXR0aW5nczsKKyAgc2V0dGluZ3Mu
aXNfY2FsbGVyID0gaXNfY2FsbGVyOworICByZXR1cm4gQ3JlYXRlTWVkaWFUcmFuc3BvcnQocGFj
a2V0X3RyYW5zcG9ydCwgbmV0d29ya190aHJlYWQsIHNldHRpbmdzKTsKK30KKworUlRDRXJyb3JP
cjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+PgorTWVkaWFUcmFuc3Bv
cnRGYWN0b3J5OjpDcmVhdGVNZWRpYVRyYW5zcG9ydCgKKyAgICBydGM6OlBhY2tldFRyYW5zcG9y
dEludGVybmFsKiBwYWNrZXRfdHJhbnNwb3J0LAorICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3Ro
cmVhZCwKKyAgICBjb25zdCBNZWRpYVRyYW5zcG9ydFNldHRpbmdzJiBzZXR0aW5ncykgeworICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPihudWxscHRyKTsK
K30KKworYWJzbDo6b3B0aW9uYWw8VGFyZ2V0VHJhbnNmZXJSYXRlPgorTWVkaWFUcmFuc3BvcnRJ
bnRlcmZhY2U6OkdldExhdGVzdFRhcmdldFRyYW5zZmVyUmF0ZSgpIHsKKyAgcmV0dXJuIGFic2w6
Om51bGxvcHQ7Cit9CisKK3ZvaWQgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U6OlNldE5ldHdvcmtD
aGFuZ2VDYWxsYmFjaygKKyAgICBNZWRpYVRyYW5zcG9ydE5ldHdvcmtDaGFuZ2VDYWxsYmFjayog
Y2FsbGJhY2spIHt9CisKK3ZvaWQgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U6OlJlbW92ZVRhcmdl
dFRyYW5zZmVyUmF0ZU9ic2VydmVyKAorICAgIHdlYnJ0Yzo6VGFyZ2V0VHJhbnNmZXJSYXRlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKSB7fQorCit2b2lkIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlOjpBZGRU
YXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlcigKKyAgICB3ZWJydGM6OlRhcmdldFRyYW5zZmVyUmF0
ZU9ic2VydmVyKiBvYnNlcnZlcikge30KKworc2l6ZV90IE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNl
OjpHZXRBdWRpb1BhY2tldE92ZXJoZWFkKCkgY29uc3QgeworICByZXR1cm4gMDsKK30KKworfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYV90cmFuc3BvcnRf
aW50ZXJmYWNlLmgKaW5kZXggMmM4OGNkNGNlNmExNTAyYTQ3MmU5NTVkYmM0MzlkYjUyMWRkMmJm
Mi4uYjEwZGQ2M2E0NjVjNDVhOTgyZjg1ODk1NjVkZWU5OGQyM2FiZWE1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhX3RyYW5z
cG9ydF9pbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oCkBAIC0xLDUgKzEsNCBAQAot
LyoKLSAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKy8qIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCiAgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCkBAIC0xOCwx
MiArMTcsMTggQEAKICNpZm5kZWYgQVBJX01FRElBX1RSQU5TUE9SVF9JTlRFUkZBQ0VfSF8KICNk
ZWZpbmUgQVBJX01FRElBX1RSQU5TUE9SVF9JTlRFUkZBQ0VfSF8KIAorI2luY2x1ZGUgPGFwaS90
cmFuc3BvcnQvbmV0d29ya19jb250cm9sLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUg
PHN0cmluZz4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgog
I2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8g
Tk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2Uu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL25ldHdvcmtyb3V0ZS5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIGNsYXNzIFBhY2tldFRy
YW5zcG9ydEludGVybmFsOwpAQCAtMzIsMTYgKzM3LDM2IEBAIGNsYXNzIFRocmVhZDsKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKKy8vIEEgY29sbGVjdGlvbiBvZiBzZXR0aW5ncyBmb3IgY3JlYXRp
b24gb2YgbWVkaWEgdHJhbnNwb3J0Lgorc3RydWN0IE1lZGlhVHJhbnNwb3J0U2V0dGluZ3MgZmlu
YWwgeworICBNZWRpYVRyYW5zcG9ydFNldHRpbmdzKCk7CisgIE1lZGlhVHJhbnNwb3J0U2V0dGlu
Z3MoY29uc3QgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyYpOworICBNZWRpYVRyYW5zcG9ydFNldHRp
bmdzJiBvcGVyYXRvcj0oY29uc3QgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyYpOworICB+TWVkaWFU
cmFuc3BvcnRTZXR0aW5ncygpOworCisgIC8vIEdyb3VwIGNhbGxzIGFyZSBub3QgY3VycmVudGx5
IHN1cHBvcnRlZCwgaW4gMToxIGNhbGwgb25lIHNpZGUgbXVzdCBzZXQKKyAgLy8gaXNfY2FsbGVy
ID0gdHJ1ZSBhbmQgYW5vdGhlciBpc19jYWxsZXIgPSBmYWxzZS4KKyAgYm9vbCBpc19jYWxsZXI7
CisKKyAgLy8gTXVzdCBiZSBzZXQgaWYgYSBwcmUtc2hhcmVkIGtleSBpcyB1c2VkIGZvciB0aGUg
Y2FsbC4KKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTk0NCk6IFRoaXMgc2hvdWxkIGJlY29t
ZSB6ZXJvIGJ1ZmZlciBpbiB0aGUgZGlzdGFudAorICAvLyBmdXR1cmUuCisgIGFic2w6Om9wdGlv
bmFsPHN0ZDo6c3RyaW5nPiBwcmVfc2hhcmVkX2tleTsKK307CisKIC8vIFJlcHJlc2VudHMgZW5j
b2RlZCBhdWRpbyBmcmFtZSBpbiBhbnkgZW5jb2RpbmcgKHR5cGUgb2YgZW5jb2RpbmcgaXMgb3Bh
cXVlKS4KIC8vIFRvIGF2b2lkIGNvcHlpbmcgb2YgZW5jb2RlZCBkYXRhIHVzZSBtb3ZlIHNlbWFu
dGljcyB3aGVuIHBhc3NpbmcgYnkgdmFsdWUuCi1jbGFzcyBNZWRpYVRyYW5zcG9ydEVuY29kZWRB
dWRpb0ZyYW1lIHsKK2NsYXNzIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgZmluYWwg
ewogIHB1YmxpYzoKICAgZW51bSBjbGFzcyBGcmFtZVR5cGUgewogICAgIC8vIE5vcm1hbCBhdWRp
byBmcmFtZSAoZXF1aXZhbGVudCB0byB3ZWJydGM6OmtBdWRpb0ZyYW1lU3BlZWNoKS4KICAgICBr
U3BlZWNoLAogCiAgICAgLy8gRFRYIGZyYW1lIChlcXVpdmFsZW50IHRvIHdlYnJ0Yzo6a0F1ZGlv
RnJhbWVDTikuCi0gICAga0Rpc2NvdW50aW51b3VzVHJhbnNtaXNzaW9uLAorICAgIC8vIERUWCBm
cmFtZSAoZXF1aXZhbGVudCB0byB3ZWJydGM6OmtBdWRpb0ZyYW1lQ04pLgorICAgIGtEaXNjb250
aW51b3VzVHJhbnNtaXNzaW9uLAorICAgIC8vIFRPRE8obmlzc2UpOiBNaXMtc3BlbGxlZCB2ZXJz
aW9uLCB1cGRhdGUgdXNlcnMsIHRoZW4gZGVsZXRlLgorICAgIGtEaXNjb3VudGludW91c1RyYW5z
bWlzc2lvbiA9IGtEaXNjb250aW51b3VzVHJhbnNtaXNzaW9uLAogICB9OwogCiAgIE1lZGlhVHJh
bnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUoCkBAIC03NSwxNCArMTAwLDE1IEBAIGNsYXNzIE1lZGlh
VHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgewogICAgICAgdWludDhfdCBwYXlsb2FkX3R5cGUs
CiAKICAgICAgIC8vIFZlY3RvciB3aXRoIG9wYXF1ZSBlbmNvZGVkIGRhdGEuCi0gICAgICBzdGQ6
OnZlY3Rvcjx1aW50OF90PiBlbmNvZGVkX2RhdGEpCi0gICAgICA6IHNhbXBsaW5nX3JhdGVfaHpf
KHNhbXBsaW5nX3JhdGVfaHopLAotICAgICAgICBzdGFydGluZ19zYW1wbGVfaW5kZXhfKHN0YXJ0
aW5nX3NhbXBsZV9pbmRleCksCi0gICAgICAgIHNhbXBsZXNfcGVyX2NoYW5uZWxfKHNhbXBsZXNf
cGVyX2NoYW5uZWwpLAotICAgICAgICBzZXF1ZW5jZV9udW1iZXJfKHNlcXVlbmNlX251bWJlciks
Ci0gICAgICAgIGZyYW1lX3R5cGVfKGZyYW1lX3R5cGUpLAotICAgICAgICBwYXlsb2FkX3R5cGVf
KHBheWxvYWRfdHlwZSksCi0gICAgICAgIGVuY29kZWRfZGF0YV8oc3RkOjptb3ZlKGVuY29kZWRf
ZGF0YSkpIHt9CisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBlbmNvZGVkX2RhdGEpOworCisg
IH5NZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lKCk7CisgIE1lZGlhVHJhbnNwb3J0RW5j
b2RlZEF1ZGlvRnJhbWUoY29uc3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSYpOwor
ICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lJiBvcGVyYXRvcj0oCisgICAgICBjb25z
dCBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lJiBvdGhlcik7CisgIE1lZGlhVHJhbnNw
b3J0RW5jb2RlZEF1ZGlvRnJhbWUmIG9wZXJhdG9yPSgKKyAgICAgIE1lZGlhVHJhbnNwb3J0RW5j
b2RlZEF1ZGlvRnJhbWUmJiBvdGhlcik7CisgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJh
bWUoTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSYmKTsKIAogICAvLyBHZXR0ZXJzLgog
ICBpbnQgc2FtcGxpbmdfcmF0ZV9oeigpIGNvbnN0IHsgcmV0dXJuIHNhbXBsaW5nX3JhdGVfaHpf
OyB9CkBAIC0xMTMsNiArMTM5LDE2IEBAIGNsYXNzIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlv
RnJhbWUgewogICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBlbmNvZGVkX2RhdGFfOwogfTsKIAorLy8g
Q2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG5ldHdvcmsgcm91dGUgY2hhbmdlcy4KK2NsYXNzIE1l
ZGlhVHJhbnNwb3J0TmV0d29ya0NoYW5nZUNhbGxiYWNrIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwg
fk1lZGlhVHJhbnNwb3J0TmV0d29ya0NoYW5nZUNhbGxiYWNrKCkgPSBkZWZhdWx0OworCisgIC8v
IENhbGxlZCB3aGVuIHRoZSBuZXR3b3JrIHJvdXRlIGlzIGNoYW5nZWQsIHdpdGggdGhlIG5ldyBu
ZXR3b3JrIHJvdXRlLgorICB2aXJ0dWFsIHZvaWQgT25OZXR3b3JrUm91dGVDaGFuZ2VkKAorICAg
ICAgY29uc3QgcnRjOjpOZXR3b3JrUm91dGUmIG5ld19uZXR3b3JrX3JvdXRlKSA9IDA7Cit9Owor
CiAvLyBJbnRlcmZhY2UgZm9yIHJlY2VpdmluZyBlbmNvZGVkIGF1ZGlvIGZyYW1lcyBmcm9tIE1l
ZGlhVHJhbnNwb3J0SW50ZXJmYWNlCiAvLyBpbXBsZW1lbnRhdGlvbnMuCiBjbGFzcyBNZWRpYVRy
YW5zcG9ydEF1ZGlvU2lua0ludGVyZmFjZSB7CkBAIC0xMjUsMTYgKzE2MSwxOSBAQCBjbGFzcyBN
ZWRpYVRyYW5zcG9ydEF1ZGlvU2lua0ludGVyZmFjZSB7CiB9OwogCiAvLyBSZXByZXNlbnRzIGVu
Y29kZWQgdmlkZW8gZnJhbWUsIGFsb25nIHdpdGggdGhlIGNvZGVjIGluZm9ybWF0aW9uLgotY2xh
c3MgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSB7CitjbGFzcyBNZWRpYVRyYW5zcG9y
dEVuY29kZWRWaWRlb0ZyYW1lIGZpbmFsIHsKICBwdWJsaWM6CiAgIE1lZGlhVHJhbnNwb3J0RW5j
b2RlZFZpZGVvRnJhbWUoaW50NjRfdCBmcmFtZV9pZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiByZWZlcmVuY2VkX2ZyYW1lX2lkcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6RW5jb2Rl
ZEltYWdlJiBlbmNvZGVkX2ltYWdlKQotICAgICAgOiBjb2RlY190eXBlXyhjb2RlY190eXBlKSwK
LSAgICAgICAgZW5jb2RlZF9pbWFnZV8oZW5jb2RlZF9pbWFnZSksCi0gICAgICAgIGZyYW1lX2lk
XyhmcmFtZV9pZCksCi0gICAgICAgIHJlZmVyZW5jZWRfZnJhbWVfaWRzXyhzdGQ6Om1vdmUocmVm
ZXJlbmNlZF9mcmFtZV9pZHMpKSB7fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHdlYnJ0Yzo6RW5jb2RlZEltYWdlJiBlbmNvZGVkX2ltYWdlKTsKKyAgfk1lZGlhVHJh
bnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUoKTsKKyAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9G
cmFtZShjb25zdCBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJik7CisgIE1lZGlhVHJh
bnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmIG9wZXJhdG9yPSgKKyAgICAgIGNvbnN0IE1lZGlhVHJh
bnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmIG90aGVyKTsKKyAgTWVkaWFUcmFuc3BvcnRFbmNvZGVk
VmlkZW9GcmFtZSYgb3BlcmF0b3I9KAorICAgICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9G
cmFtZSYmIG90aGVyKTsKKyAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZShNZWRpYVRy
YW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJiYpOwogCiAgIFZpZGVvQ29kZWNUeXBlIGNvZGVjX3R5
cGUoKSBjb25zdCB7IHJldHVybiBjb2RlY190eXBlXzsgfQogICBjb25zdCB3ZWJydGM6OkVuY29k
ZWRJbWFnZSYgZW5jb2RlZF9pbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGVuY29kZWRfaW1hZ2VfOyB9
CkBAIC0xODMsNiArMjIyLDg1IEBAIGNsYXNzIE1lZGlhVHJhbnNwb3J0VmlkZW9TaW5rSW50ZXJm
YWNlIHsKICAgdmlydHVhbCB2b2lkIE9uS2V5RnJhbWVSZXF1ZXN0ZWQodWludDY0X3QgY2hhbm5l
bF9pZCkgPSAwOwogfTsKIAorLy8gU3RhdGUgb2YgdGhlIG1lZGlhIHRyYW5zcG9ydC4gIE1lZGlh
IHRyYW5zcG9ydCBiZWdpbnMgaW4gdGhlIHBlbmRpbmcgc3RhdGUuCisvLyBJdCB0cmFuc2l0aW9u
cyB0byB3cml0YWJsZSB3aGVuIGl0IGlzIHJlYWR5IHRvIHNlbmQgbWVkaWEuICBJdCBtYXkgdHJh
bnNpdGlvbgorLy8gYmFjayB0byBwZW5kaW5nIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJsb2NrZWQu
ICBJdCBtYXkgdHJhbnNpdGlvbiB0byBjbG9zZWQgYXQKKy8vIGFueSB0aW1lLiAgQ2xvc2VkIGlz
IHRlcm1pbmFsOiBhIHRyYW5zcG9ydCB3aWxsIG5ldmVyIHJlLW9wZW4gb25jZSBjbG9zZWQuCitl
bnVtIGNsYXNzIE1lZGlhVHJhbnNwb3J0U3RhdGUgeworICBrUGVuZGluZywKKyAga1dyaXRhYmxl
LAorICBrQ2xvc2VkLAorfTsKKworLy8gQ2FsbGJhY2sgaW52b2tlZCB3aGVuZXZlciB0aGUgc3Rh
dGUgb2YgdGhlIG1lZGlhIHRyYW5zcG9ydCBjaGFuZ2VzLgorY2xhc3MgTWVkaWFUcmFuc3BvcnRT
dGF0ZUNhbGxiYWNrIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfk1lZGlhVHJhbnNwb3J0U3RhdGVD
YWxsYmFjaygpID0gZGVmYXVsdDsKKworICAvLyBJbnZva2VkIHdoZW5ldmVyIHRoZSBzdGF0ZSBv
ZiB0aGUgbWVkaWEgdHJhbnNwb3J0IGNoYW5nZXMuCisgIHZpcnR1YWwgdm9pZCBPblN0YXRlQ2hh
bmdlZChNZWRpYVRyYW5zcG9ydFN0YXRlIHN0YXRlKSA9IDA7Cit9OworCisvLyBTdXBwb3J0ZWQg
dHlwZXMgb2YgYXBwbGljYXRpb24gZGF0YSBtZXNzYWdlcy4KK2VudW0gY2xhc3MgRGF0YU1lc3Nh
Z2VUeXBlIHsKKyAgLy8gQXBwbGljYXRpb24gZGF0YSBidWZmZXIgd2l0aCB0aGUgYmluYXJ5IGJp
dCB1bnNldC4KKyAga1RleHQsCisKKyAgLy8gQXBwbGljYXRpb24gZGF0YSBidWZmZXIgd2l0aCB0
aGUgYmluYXJ5IGJpdCBzZXQuCisgIGtCaW5hcnksCisKKyAgLy8gVHJhbnNwb3J0LWFnbm9zdGlj
IGNvbnRyb2wgbWVzc2FnZXMsIHN1Y2ggYXMgb3BlbiBvciBvcGVuLWFjayBtZXNzYWdlcy4KKyAg
a0NvbnRyb2wsCit9OworCisvLyBQYXJhbWV0ZXJzIGZvciBzZW5kaW5nIGRhdGEuICBUaGUgcGFy
YW1ldGVycyBtYXkgY2hhbmdlIGZyb20gbWVzc2FnZSB0bworLy8gbWVzc2FnZSwgZXZlbiB3aXRo
aW4gYSBzaW5nbGUgY2hhbm5lbC4gIEZvciBleGFtcGxlLCBjb250cm9sIG1lc3NhZ2VzIG1heSBi
ZQorLy8gc2VudCByZWxpYWJseSBhbmQgaW4tb3JkZXIsIGV2ZW4gaWYgdGhlIGRhdGEgY2hhbm5l
bCBpcyBjb25maWd1cmVkIGZvcgorLy8gdW5yZWxpYWJsZSBkZWxpdmVyeS4KK3N0cnVjdCBTZW5k
RGF0YVBhcmFtcyB7CisgIFNlbmREYXRhUGFyYW1zKCk7CisKKyAgRGF0YU1lc3NhZ2VUeXBlIHR5
cGUgPSBEYXRhTWVzc2FnZVR5cGU6OmtUZXh0OworCisgIC8vIFdoZXRoZXIgdG8gZGVsaXZlciB0
aGUgbWVzc2FnZSBpbiBvcmRlciB3aXRoIHJlc3BlY3QgdG8gb3RoZXIgb3JkZXJlZAorICAvLyBt
ZXNzYWdlcyB3aXRoIHRoZSBzYW1lIGNoYW5uZWxfaWQuCisgIGJvb2wgb3JkZXJlZCA9IGZhbHNl
OworCisgIC8vIElmIHNldCwgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIHRoaXMgbWVzc2Fn
ZSBtYXkgYmUKKyAgLy8gcmV0cmFuc21pdHRlZCBieSB0aGUgdHJhbnNwb3J0IGJlZm9yZSBpdCBp
cyBkcm9wcGVkLgorICAvLyBTZXR0aW5nIHRoaXMgdmFsdWUgdG8gemVybyBkaXNhYmxlcyByZXRy
YW5zbWlzc2lvbi4KKyAgLy8gTXVzdCBiZSBub24tbmVnYXRpdmUuIHxtYXhfcnR4X2NvdW50fCBh
bmQgfG1heF9ydHhfbXN8IG1heSBub3QgYmUgc2V0CisgIC8vIHNpbXVsdGFuZW91c2x5LgorICBh
YnNsOjpvcHRpb25hbDxpbnQ+IG1heF9ydHhfY291bnQ7CisKKyAgLy8gSWYgc2V0LCB0aGUgbWF4
aW11bSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0aGUgdHJhbnNwb3J0CisgIC8v
IG1heSByZXRyYW5zbWl0IHRoaXMgbWVzc2FnZSBiZWZvcmUgaXQgaXMgZHJvcHBlZC4KKyAgLy8g
U2V0dGluZyB0aGlzIHZhbHVlIHRvIHplcm8gZGlzYWJsZXMgcmV0cmFuc21pc3Npb24uCisgIC8v
IE11c3QgYmUgbm9uLW5lZ2F0aXZlLiB8bWF4X3J0eF9jb3VudHwgYW5kIHxtYXhfcnR4X21zfCBt
YXkgbm90IGJlIHNldAorICAvLyBzaW11bHRhbmVvdXNseS4KKyAgYWJzbDo6b3B0aW9uYWw8aW50
PiBtYXhfcnR4X21zOworfTsKKworLy8gU2luayBmb3IgY2FsbGJhY2tzIHJlbGF0ZWQgdG8gYSBk
YXRhIGNoYW5uZWwuCitjbGFzcyBEYXRhQ2hhbm5lbFNpbmsgeworIHB1YmxpYzoKKyAgdmlydHVh
bCB+RGF0YUNoYW5uZWxTaW5rKCkgPSBkZWZhdWx0OworCisgIC8vIENhbGxiYWNrIGlzc3VlZCB3
aGVuIGRhdGEgaXMgcmVjZWl2ZWQgYnkgdGhlIHRyYW5zcG9ydC4KKyAgdmlydHVhbCB2b2lkIE9u
RGF0YVJlY2VpdmVkKGludCBjaGFubmVsX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGF0YU1lc3NhZ2VUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIpID0gMDsKKworICAvLyBDYWxsYmFj
ayBpc3N1ZWQgd2hlbiBhIHJlbW90ZSBkYXRhIGNoYW5uZWwgYmVnaW5zIHRoZSBjbG9zaW5nIHBy
b2NlZHVyZS4KKyAgLy8gTWVzc2FnZXMgc2VudCBhZnRlciB0aGUgY2xvc2luZyBwcm9jZWR1cmUg
YmVnaW5zIHdpbGwgbm90IGJlIHRyYW5zbWl0dGVkLgorICB2aXJ0dWFsIHZvaWQgT25DaGFubmVs
Q2xvc2luZyhpbnQgY2hhbm5lbF9pZCkgPSAwOworCisgIC8vIENhbGxiYWNrIGlzc3VlZCB3aGVu
IGEgKHJlbW90ZSBvciBsb2NhbCkgZGF0YSBjaGFubmVsIGNvbXBsZXRlcyB0aGUgY2xvc2luZwor
ICAvLyBwcm9jZWR1cmUuICBDbG9zaW5nIGNoYW5uZWxzIGJlY29tZSBjbG9zZWQgYWZ0ZXIgYWxs
IHBlbmRpbmcgZGF0YSBoYXMgYmVlbgorICAvLyB0cmFuc21pdHRlZC4KKyAgdmlydHVhbCB2b2lk
IE9uQ2hhbm5lbENsb3NlZChpbnQgY2hhbm5lbF9pZCkgPSAwOworfTsKKwogLy8gTWVkaWEgdHJh
bnNwb3J0IGludGVyZmFjZSBmb3Igc2VuZGluZyAvIHJlY2VpdmluZyBlbmNvZGVkIGF1ZGlvL3Zp
ZGVvIGZyYW1lcwogLy8gYW5kIHJlY2VpdmluZyBiYW5kd2lkdGggZXN0aW1hdGUgdXBkYXRlIGZy
b20gY29uZ2VzdGlvbiBjb250cm9sLgogY2xhc3MgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UgewpA
QCAtMjE3LDggKzMzNSw2MiBAQCBjbGFzcyBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSB7CiAgIC8v
IHBhc3MgYSBudWxscHRyLgogICB2aXJ0dWFsIHZvaWQgU2V0UmVjZWl2ZVZpZGVvU2luayhNZWRp
YVRyYW5zcG9ydFZpZGVvU2lua0ludGVyZmFjZSogc2luaykgPSAwOwogCisgIC8vIEFkZHMgYSB0
YXJnZXQgYml0cmF0ZSBvYnNlcnZlci4gQmVmb3JlIG1lZGlhIHRyYW5zcG9ydCBpcyBkZXN0cnVj
dGVkCisgIC8vIHRoZSBvYnNlcnZlciBtdXN0IGJlIHVucmVnaXN0ZXJlZCAoYnkgY2FsbGluZwor
ICAvLyBSZW1vdmVUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlcikuCisgIC8vIEEgbmV3bHkgcmVn
aXN0ZXJlZCBvYnNlcnZlciB3aWxsIGJlIGNhbGxlZCBiYWNrIHdpdGggdGhlIGxhdGVzdCByZWNv
cmRlZAorICAvLyB0YXJnZXQgcmF0ZSwgaWYgYXZhaWxhYmxlLgorICB2aXJ0dWFsIHZvaWQgQWRk
VGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIoCisgICAgICB3ZWJydGM6OlRhcmdldFRyYW5zZmVy
UmF0ZU9ic2VydmVyKiBvYnNlcnZlcik7CisKKyAgLy8gUmVtb3ZlcyBhbiBleGlzdGluZyB8b2Jz
ZXJ2ZXJ8IGZyb20gb2JzZXJ2ZXJzLiBJZiBvYnNlcnZlciB3YXMgbmV2ZXIKKyAgLy8gcmVnaXN0
ZXJlZCwgYW4gZXJyb3IgaXMgbG9nZ2VkIGFuZCBtZXRob2QgZG9lcyBub3RoaW5nLgorICB2aXJ0
dWFsIHZvaWQgUmVtb3ZlVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIoCisgICAgICB3ZWJydGM6
OlRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKiBvYnNlcnZlcik7CisKKyAgLy8gUmV0dXJucyB0
aGUgbGFzdCBrbm93biB0YXJnZXQgdHJhbnNmZXIgcmF0ZSBhcyByZXBvcnRlZCB0byB0aGUgYWJv
dmUKKyAgLy8gb2JzZXJ2ZXJzLgorICB2aXJ0dWFsIGFic2w6Om9wdGlvbmFsPFRhcmdldFRyYW5z
ZmVyUmF0ZT4gR2V0TGF0ZXN0VGFyZ2V0VHJhbnNmZXJSYXRlKCk7CisKKyAgLy8gR2V0cyB0aGUg
YXVkaW8gcGFja2V0IG92ZXJoZWFkIGluIGJ5dGVzLiBSZXR1cm5lZCBvdmVyaGVhZCBkb2VzIG5v
dCBpbmNsdWRlCisgIC8vIHRyYW5zcG9ydCBvdmVyaGVhZCAoaXB2NC82LCB0dXJuIGNoYW5uZWxk
YXRhLCB0Y3AvdWRwLCBldGMuKS4KKyAgLy8gSWYgdGhlIHRyYW5zcG9ydCBpcyBjYXBhYmxlIG9m
IGZ1c2luZyBwYWNrZXRzIHRvZ2V0aGVyLCB0aGlzIG92ZXJoZWFkCisgIC8vIG1pZ2h0IG5vdCBi
ZSBhIHZlcnkgYWNjdXJhdGUgbnVtYmVyLgorICB2aXJ0dWFsIHNpemVfdCBHZXRBdWRpb1BhY2tl
dE92ZXJoZWFkKCkgY29uc3Q7CisKKyAgLy8gU2V0cyBhbiBvYnNlcnZlciBmb3IgbmV0d29yayBj
aGFuZ2UgZXZlbnRzLiBJZiB0aGUgbmV0d29yayByb3V0ZSBpcyBhbHJlYWR5CisgIC8vIGVzdGFi
bGlzaGVkIHdoZW4gdGhlIGNhbGxiYWNrIGlzIHNldCwgfGNhbGxiYWNrfCB3aWxsIGJlIGNhbGxl
ZCBpbW1lZGlhdGVseQorICAvLyB3aXRoIHRoZSBjdXJyZW50IG5ldHdvcmsgcm91dGUuCisgIC8v
IEJlZm9yZSBtZWRpYSB0cmFuc3BvcnQgaXMgZGVzdHJveWVkLCB0aGUgY2FsbGJhY2sgbXVzdCBi
ZSB1bnJlZ2lzdGVyZWQgYnkKKyAgLy8gc2V0dGluZyBpdCB0byBudWxscHRyLgorICB2aXJ0dWFs
IHZvaWQgU2V0TmV0d29ya0NoYW5nZUNhbGxiYWNrKAorICAgICAgTWVkaWFUcmFuc3BvcnROZXR3
b3JrQ2hhbmdlQ2FsbGJhY2sqIGNhbGxiYWNrKTsKKworICAvLyBTZXRzIGEgc3RhdGUgb2JzZXJ2
ZXIgY2FsbGJhY2suIEJlZm9yZSBtZWRpYSB0cmFuc3BvcnQgaXMgZGVzdHJveWVkLCB0aGUKKyAg
Ly8gY2FsbGJhY2sgbXVzdCBiZSB1bnJlZ2lzdGVyZWQgYnkgc2V0dGluZyBpdCB0byBudWxscHRy
LgorICAvLyBBIG5ld2x5IHJlZ2lzdGVyZWQgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgd2l0aCB0
aGUgY3VycmVudCBzdGF0ZS4KKyAgLy8gTWVkaWEgdHJhbnNwb3J0IGRvZXMgbm90IGludm9rZSB0
aGlzIGNhbGxiYWNrIGNvbmN1cnJlbnRseS4KKyAgdmlydHVhbCB2b2lkIFNldE1lZGlhVHJhbnNw
b3J0U3RhdGVDYWxsYmFjaygKKyAgICAgIE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayogY2Fs
bGJhY2spID0gMDsKKworICAvLyBTZW5kcyBhIGRhdGEgYnVmZmVyIHRvIHRoZSByZW1vdGUgZW5k
cG9pbnQgdXNpbmcgdGhlIGdpdmVuIHNlbmQgcGFyYW1ldGVycy4KKyAgLy8gfGJ1ZmZlcnwgbWF5
IG5vdCBiZSBsYXJnZXIgdGhhbiAyNTYgS2lCLiBSZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBzZW5k
CisgIC8vIGZhaWxzLgorICB2aXJ0dWFsIFJUQ0Vycm9yIFNlbmREYXRhKGludCBjaGFubmVsX2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlbmREYXRhUGFyYW1zJiBwYXJh
bXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1
ZmZlciYgYnVmZmVyKSA9IDA7CisKKyAgLy8gQ2xvc2VzIHxjaGFubmVsX2lkfCBncmFjZWZ1bGx5
LiAgUmV0dXJucyBhbiBlcnJvciBpZiB8Y2hhbm5lbF9pZHwgaXMgbm90CisgIC8vIG9wZW4uICBE
YXRhIHNlbnQgYWZ0ZXIgdGhlIGNsb3NpbmcgcHJvY2VkdXJlIGJlZ2lucyB3aWxsIG5vdCBiZQor
ICAvLyB0cmFuc21pdHRlZC4gVGhlIGNoYW5uZWwgYmVjb21lcyBjbG9zZWQgYWZ0ZXIgcGVuZGlu
ZyBkYXRhIGlzIHRyYW5zbWl0dGVkLgorICB2aXJ0dWFsIFJUQ0Vycm9yIENsb3NlQ2hhbm5lbChp
bnQgY2hhbm5lbF9pZCkgPSAwOworCisgIC8vIFNldHMgYSBzaW5rIGZvciBkYXRhIG1lc3NhZ2Vz
IGFuZCBjaGFubmVsIHN0YXRlIGNhbGxiYWNrcy4gQmVmb3JlIG1lZGlhCisgIC8vIHRyYW5zcG9y
dCBpcyBkZXN0cm95ZWQsIHRoZSBzaW5rIG11c3QgYmUgdW5yZWdpc3RlcmVkIGJ5IHNldHRpbmcg
aXQgdG8KKyAgLy8gbnVsbHB0ci4KKyAgdmlydHVhbCB2b2lkIFNldERhdGFTaW5rKERhdGFDaGFu
bmVsU2luayogc2luaykgPSAwOworCiAgIC8vIFRPRE8oc3VraGFub3YpOiBSdGNFdmVudExvZ3Mu
Ci0gIC8vIFRPRE8oc3VraGFub3YpOiBCYW5kd2lkdGggdXBkYXRlcy4KIH07CiAKIC8vIElmIG1l
ZGlhIHRyYW5zcG9ydCBmYWN0b3J5IGlzIHNldCBpbiBwZWVyIGNvbm5lY3Rpb24gZmFjdG9yeSwg
aXQgd2lsbCBiZQpAQCAtMjM2LDEwICs0MDgsMjEgQEAgY2xhc3MgTWVkaWFUcmFuc3BvcnRGYWN0
b3J5IHsKICAgLy8gLSBEb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiBwYWNrZXRfdHJhbnNwb3J0
IG9yIG5ldHdvcmtfdGhyZWFkLgogICAvLyAtIERvZXMgbm90IHN1cHBvcnQgZ3JvdXAgY2FsbHMs
IGluIDE6MSBjYWxsIG9uZSBzaWRlIG11c3Qgc2V0CiAgIC8vICAgaXNfY2FsbGVyID0gdHJ1ZSBh
bmQgYW5vdGhlciBpc19jYWxsZXIgPSBmYWxzZS4KKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcv
OTkzOCkgVGhpcyBjb25zdHJ1Y3RvciB3aWxsIGJlIHJlbW92ZWQgYW5kIHJlcGxhY2VkCisgIC8v
IHdpdGggdGhlIG9uZSBiZWxvdy4KKyAgdmlydHVhbCBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVRyYW5zcG9ydEludGVyZmFjZT4+CisgIENyZWF0ZU1lZGlhVHJhbnNwb3J0KHJ0Yzo6
UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHBhY2tldF90cmFuc3BvcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc19jYWxsZXIpOworCisgIC8vIENyZWF0ZXMgbWVkaWEgdHJhbnNwb3J0Lgor
ICAvLyAtIERvZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mIHBhY2tldF90cmFuc3BvcnQgb3IgbmV0
d29ya190aHJlYWQuCisgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk5MzgpOiByZW1vdmUgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbiBvbmNlIGFsbCBjaGlsZHJlbgorICAvLyBvdmVycmlkZSBpdC4K
ICAgdmlydHVhbCBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEludGVy
ZmFjZT4+CiAgIENyZWF0ZU1lZGlhVHJhbnNwb3J0KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJu
YWwqIHBhY2tldF90cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFk
KiBuZXR3b3JrX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19jYWxsZXIp
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRTZXR0aW5n
cyYgc2V0dGluZ3MpOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3Ry
YWludHNpbnRlcmZhY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5jYwppbmRleCA1NTY3Nzg2OWJlZGQ3
YzMyMTI0MDBiODdjZmFlMzI3N2FjYzM0ZDMwLi5iNjZiYTA1MDNhYzdmNThmNzE3MGQ2NzU5MThk
ZTlhMjRjNmE2OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFjb25zdHJhaW50c2lu
dGVyZmFjZS5jYwpAQCAtMTAsNyArMTAsOSBAQAogCiAjaW5jbHVkZSAiYXBpL21lZGlhY29uc3Ry
YWludHNpbnRlcmZhY2UuaCIKIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNp
bmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJtZWRpYS9i
YXNlL21lZGlhY29uZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAK
IG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNpbnRlcmZh
Y2UuaAppbmRleCBjNmE5MTRhYTU2NGY5ODMxYjEyOGJhMzA4NmJhZWY3YTU4MGUzOTdjLi5jOWE2
ZTFiMTg4NThkZjU5OWExM2IyY2QyMTAzNTY1YzA1OTcwZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFjb25zdHJhaW50c2lu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9tZWRpYWNvbnN0cmFpbnRzaW50ZXJmYWNlLmgKQEAgLTIxLDEwICsyMSwxMSBAQAogI2lm
bmRlZiBBUElfTUVESUFDT05TVFJBSU5UU0lOVEVSRkFDRV9IXwogI2RlZmluZSBBUElfTUVESUFD
T05TVFJBSU5UU0lOVEVSRkFDRV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8
c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9u
YWwuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fb3B0aW9ucy5oIgogI2luY2x1ZGUgImFwaS9wZWVy
Y29ubmVjdGlvbmludGVyZmFjZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXN0cmVh
bWludGVyZmFjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5jYwppbmRleCA2ZjA4YTBjYWYxYzFiMTIzNGFjNTE3
NzlmMTNkNWNhZGE5OWM0NzRjLi45NTVlN2U0YzYwOGVlNTA1ZmMwZTBjOTBjZGEzNDE1ZjFiMGQx
ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmNjCkBAIC0xNywz
NCArMTcsNiBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIGNvbnN0IGNoYXIgTWVkaWFTdHJlYW1UcmFj
a0ludGVyZmFjZTo6a1ZpZGVvS2luZFtdID0gInZpZGVvIjsKIGNvbnN0IGNoYXIgTWVkaWFTdHJl
YW1UcmFja0ludGVyZmFjZTo6a0F1ZGlvS2luZFtdID0gImF1ZGlvIjsKIAotdm9pZCBBdWRpb1By
b2Nlc3NvckludGVyZmFjZTo6R2V0U3RhdHMoQXVkaW9Qcm9jZXNzb3JTdGF0cyogLypzdGF0cyov
KSB7Ci0gIFJUQ19OT1RSRUFDSEVEKCkgPDwgIk9sZC1zdHlsZSBHZXRTdGF0cygpIGlzIGNhbGxl
ZCBidXQgaXQgaGFzIG5vICIKLSAgICAgICAgICAgICAgICAgICA8PCAiaW1wbGVtZW50YXRpb24u
IjsKLSAgUlRDX0xPRyhMU19FUlJPUikgPDwgIk9sZC1zdHlsZSBHZXRTdGF0cygpIGlzIGNhbGxl
ZCBidXQgaXQgaGFzIG5vICIKLSAgICAgICAgICAgICAgICAgICAgPDwgImltcGxlbWVudGF0aW9u
LiI7Ci19Ci0KLS8vIFRPRE8oaXZvYyk6IFJlbW92ZSB0aGlzIHdoZW4gdGhlIGZ1bmN0aW9uIGJl
Y29tZXMgcHVyZSB2aXJ0dWFsLgotQXVkaW9Qcm9jZXNzb3JJbnRlcmZhY2U6OkF1ZGlvUHJvY2Vz
c29yU3RhdGlzdGljcwotQXVkaW9Qcm9jZXNzb3JJbnRlcmZhY2U6OkdldFN0YXRzKGJvb2wgLypo
YXNfcmVtb3RlX3RyYWNrcyovKSB7Ci0gIEF1ZGlvUHJvY2Vzc29yU3RhdHMgc3RhdHM7Ci0gIEdl
dFN0YXRzKCZzdGF0cyk7Ci0gIEF1ZGlvUHJvY2Vzc29yU3RhdGlzdGljcyBuZXdfc3RhdHM7Ci0g
IG5ld19zdGF0cy5hcG1fc3RhdGlzdGljcy5kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uID0KLSAg
ICAgIHN0YXRzLmFlY19kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uOwotICBuZXdfc3RhdHMuYXBt
X3N0YXRpc3RpY3MuZGVsYXlfbWVkaWFuX21zID0gc3RhdHMuZWNob19kZWxheV9tZWRpYW5fbXM7
Ci0gIG5ld19zdGF0cy5hcG1fc3RhdGlzdGljcy5kZWxheV9zdGFuZGFyZF9kZXZpYXRpb25fbXMg
PQotICAgICAgc3RhdHMuZWNob19kZWxheV9zdGRfbXM7Ci0gIG5ld19zdGF0cy5hcG1fc3RhdGlz
dGljcy5lY2hvX3JldHVybl9sb3NzID0gc3RhdHMuZWNob19yZXR1cm5fbG9zczsKLSAgbmV3X3N0
YXRzLmFwbV9zdGF0aXN0aWNzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPQotICAgICAg
c3RhdHMuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudDsKLSAgbmV3X3N0YXRzLmFwbV9zdGF0
aXN0aWNzLnJlc2lkdWFsX2VjaG9fbGlrZWxpaG9vZCA9Ci0gICAgICBzdGF0cy5yZXNpZHVhbF9l
Y2hvX2xpa2VsaWhvb2Q7Ci0gIG5ld19zdGF0cy5hcG1fc3RhdGlzdGljcy5yZXNpZHVhbF9lY2hv
X2xpa2VsaWhvb2RfcmVjZW50X21heCA9Ci0gICAgICBzdGF0cy5yZXNpZHVhbF9lY2hvX2xpa2Vs
aWhvb2RfcmVjZW50X21heDsKLSAgcmV0dXJuIG5ld19zdGF0czsKLX0KLQogVmlkZW9UcmFja0lu
dGVyZmFjZTo6Q29udGVudEhpbnQgVmlkZW9UcmFja0ludGVyZmFjZTo6Y29udGVudF9oaW50KCkg
Y29uc3QgewogICByZXR1cm4gQ29udGVudEhpbnQ6OmtOb25lOwogfQpAQCAtNTgsNCArMzAsOCBA
QCBBdWRpb1RyYWNrSW50ZXJmYWNlOjpHZXRBdWRpb1Byb2Nlc3NvcigpIHsKICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKK2NvbnN0IGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucyBBdWRpb1NvdXJjZUludGVy
ZmFjZTo6b3B0aW9ucygpIGNvbnN0IHsKKyAgcmV0dXJuIHt9OworfQorCiB9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oCmluZGV4IGI2
NjEzNTFlOWZjOTg1ZWQ2ZDE1NjIxYWZlMjc0ZGU4Y2UxYzQ3ZTcuLjZkOTY3NjYwYzU3M2FkYjhj
NTk4YTM1MzRmNjdmNWZjOGYyNzRhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXN0cmVhbWlu
dGVyZmFjZS5oCkBAIC0yMywxOCArMjMsMTMgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX29wdGlvbnMu
aCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCIKLS8vIFRPRE8oemhpaHVhbmcp
OiBSZW1vdmUgdW5yZWxhdGVkIGhlYWRlcnMgb25jZSBkb3duc3RyZWFtIGFwcGxpY2F0aW9ucyBz
dG9wCi0vLyByZWx5aW5nIG9uIHRoZW07IHRoZXkgd2VyZSBwcmV2aW91c2x5IHRyYW5zaXRpdmVs
eSBpbmNsdWRlZCBieQotLy8gbWVkaWFjaGFubmVsLmgsIHdoaWNoIGlzIG5vIGxvbmdlciBhIGRl
cGVuZGVuY3kgb2YgdGhpcyBmaWxlLgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19zaW5rX2lu
dGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19zb3VyY2VfaW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vz
c2luZ19zdGF0aXN0aWNzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZXRyYWNrZXIuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9y
ZWZfcHRyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2UvdGltZXV0aWxzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yMTMsNTMgKzIwOCwy
OCBAQCBjbGFzcyBBdWRpb1NvdXJjZUludGVyZmFjZSA6IHB1YmxpYyBNZWRpYVNvdXJjZUludGVy
ZmFjZSB7CiAgIC8vIFRPRE8odG9tbWkpOiBNYWtlIHB1cmUgdmlydHVhbC4KICAgdmlydHVhbCB2
b2lkIEFkZFNpbmsoQXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHt9CiAgIHZpcnR1YWwg
dm9pZCBSZW1vdmVTaW5rKEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7fQorCisgIC8v
IFJldHVybnMgb3B0aW9ucyBmb3IgdGhlIEF1ZGlvU291cmNlLgorICAvLyAoZm9yIHNvbWUgb2Yg
dGhlIHNldHRpbmdzIHRoaXMgYXBwcm9hY2ggaXMgYnJva2VuLCBlLmcuIHNldHRpbmcKKyAgLy8g
YXVkaW8gbmV0d29yayBhZGFwdGF0aW9uIG9uIHRoZSBzb3VyY2UgaXMgdGhlIHdyb25nIGxheWVy
IG9mIGFic3RyYWN0aW9uKS4KKyAgdmlydHVhbCBjb25zdCBjcmlja2V0OjpBdWRpb09wdGlvbnMg
b3B0aW9ucygpIGNvbnN0OwogfTsKIAogLy8gSW50ZXJmYWNlIG9mIHRoZSBhdWRpbyBwcm9jZXNz
b3IgdXNlZCBieSB0aGUgYXVkaW8gdHJhY2sgdG8gY29sbGVjdAogLy8gc3RhdGlzdGljcy4KIGNs
YXNzIEF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZh
Y2UgewogIHB1YmxpYzoKLSAgLy8gRGVwcmVjYXRlZCwgdXNlIEF1ZGlvUHJvY2Vzc29yU3RhdGlz
dGljcyBpbnN0ZWFkLgotICAvLyBUT0RPKGl2b2MpOiBSZW1vdmUgdGhpcyB3aGVuIGFsbCBpbXBs
ZW1lbnRhdGlvbnMgaGF2ZSBzd2l0Y2hlZCB0byB0aGUgbmV3Ci0gIC8vICAgICAgICAgICAgIEdl
dFN0YXRzIGZ1bmN0aW9uLiBTZWUgYi82NzkyNjEzNS4KLSAgc3RydWN0IEF1ZGlvUHJvY2Vzc29y
U3RhdHMgewotICAgIEF1ZGlvUHJvY2Vzc29yU3RhdHMoKQotICAgICAgICA6IHR5cGluZ19ub2lz
ZV9kZXRlY3RlZChmYWxzZSksCi0gICAgICAgICAgZWNob19yZXR1cm5fbG9zcygwKSwKLSAgICAg
ICAgICBlY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50KDApLAotICAgICAgICAgIGVjaG9fZGVs
YXlfbWVkaWFuX21zKDApLAotICAgICAgICAgIGVjaG9fZGVsYXlfc3RkX21zKDApLAotICAgICAg
ICAgIHJlc2lkdWFsX2VjaG9fbGlrZWxpaG9vZCgwLjBmKSwKLSAgICAgICAgICByZXNpZHVhbF9l
Y2hvX2xpa2VsaWhvb2RfcmVjZW50X21heCgwLjBmKSwKLSAgICAgICAgICBhZWNfZGl2ZXJnZW50
X2ZpbHRlcl9mcmFjdGlvbigwLjApIHt9Ci0gICAgfkF1ZGlvUHJvY2Vzc29yU3RhdHMoKSB7fQot
Ci0gICAgYm9vbCB0eXBpbmdfbm9pc2VfZGV0ZWN0ZWQ7Ci0gICAgaW50IGVjaG9fcmV0dXJuX2xv
c3M7Ci0gICAgaW50IGVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQ7Ci0gICAgaW50IGVjaG9f
ZGVsYXlfbWVkaWFuX21zOwotICAgIGludCBlY2hvX2RlbGF5X3N0ZF9tczsKLSAgICBmbG9hdCBy
ZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2Q7Ci0gICAgZmxvYXQgcmVzaWR1YWxfZWNob19saWtlbGlo
b29kX3JlY2VudF9tYXg7Ci0gICAgZmxvYXQgYWVjX2RpdmVyZ2VudF9maWx0ZXJfZnJhY3Rpb247
Ci0gIH07Ci0gIC8vIFRoaXMgc3RydWN0IG1haW50YWlucyB0aGUgb3B0aW9uYWxpdHkgb2YgdGhl
IHN0YXRzLCBhbmQgd2lsbCByZXBsYWNlIHRoZQotICAvLyByZWd1bGFyIHN0YXRzIHN0cnVjdCB3
aGVuIGFsbCB1c2VycyBoYXZlIGJlZW4gdXBkYXRlZC4KICAgc3RydWN0IEF1ZGlvUHJvY2Vzc29y
U3RhdGlzdGljcyB7CiAgICAgYm9vbCB0eXBpbmdfbm9pc2VfZGV0ZWN0ZWQgPSBmYWxzZTsKICAg
ICBBdWRpb1Byb2Nlc3NpbmdTdGF0cyBhcG1fc3RhdGlzdGljczsKICAgfTsKIAotICAvLyBHZXQg
YXVkaW8gcHJvY2Vzc29yIHN0YXRpc3RpY3MuCi0gIHZpcnR1YWwgdm9pZCBHZXRTdGF0cyhBdWRp
b1Byb2Nlc3NvclN0YXRzKiBzdGF0cyk7Ci0KICAgLy8gR2V0IGF1ZGlvIHByb2Nlc3NvciBzdGF0
aXN0aWNzLiBUaGUgfGhhc19yZW1vdGVfdHJhY2tzfCBhcmd1bWVudCBzaG91bGQgYmUKICAgLy8g
c2V0IGlmIHRoZXJlIGFyZSBhY3RpdmUgcmVtb3RlIHRyYWNrcyAodGhpcyB3b3VsZCB1c3VhbGx5
IGJlIHRydWUgZHVyaW5nCiAgIC8vIGEgY2FsbCkuIElmIHRoZXJlIGFyZSBubyByZW1vdGUgdHJh
Y2tzIHNvbWUgb2YgdGhlIHN0YXRzIHdpbGwgbm90IGJlIHNldCBieQogICAvLyB0aGUgQXVkaW9Q
cm9jZXNzb3IsIGJlY2F1c2UgdGhleSBvbmx5IG1ha2Ugc2Vuc2UgaWYgdGhlcmUgaXMgYXQgbGVh
c3Qgb25lCiAgIC8vIHJlbW90ZSB0cmFjay4KLSAgLy8gVE9ETyhpdm9jKTogTWFrZSBwdXJlIHZp
cnR1YWwgd2hlbiBhbGwgaW1wbGVtZW50aW9ucyBhcmUgdXBkYXRlZC4KLSAgdmlydHVhbCBBdWRp
b1Byb2Nlc3NvclN0YXRpc3RpY3MgR2V0U3RhdHMoYm9vbCBoYXNfcmVtb3RlX3RyYWNrcyk7Cisg
IHZpcnR1YWwgQXVkaW9Qcm9jZXNzb3JTdGF0aXN0aWNzIEdldFN0YXRzKGJvb2wgaGFzX3JlbW90
ZV90cmFja3MpID0gMDsKIAogIHByb3RlY3RlZDoKICAgfkF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNl
KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvbWVkaWFkZXNjcmlwdGlvbi5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL21lZGlhZGVzY3Jp
cHRpb24uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MTU1ZjIyZmU5YTM1ODg1
Y2RkNTM3MGFmMjgyNzUzODYxZjMzN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL29ydGMvbWVkaWFkZXNjcmlwdGlvbi5jYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
Ci0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJhcGkvb3J0Yy9tZWRpYWRlc2NyaXB0
aW9uLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL21lZGlhZGVzY3JpcHRpb24uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL21lZGlh
ZGVzY3JpcHRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNmMWQxYTY3YmUw
MTg3NzAyYzU4MTlkNmJmZjYyMTllZmFlMDI3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvb3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIEFQSV9PUlRDX01FRElBREVTQ1JJ
UFRJT05fSF8KLSNkZWZpbmUgQVBJX09SVENfTUVESUFERVNDUklQVElPTl9IXwotCi0jaW5jbHVk
ZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5j
bHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgotI2luY2x1ZGUgImFwaS9jcnlwdG9wYXJhbXMu
aCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIEEgc3RydWN0dXJlZCByZXByZXNlbnRhdGlv
biBvZiBhIG1lZGlhIGRlc2NyaXB0aW9uIHdpdGhpbiBhbiBTRFAgc2Vzc2lvbgotLy8gZGVzY3Jp
cHRpb24uCi1jbGFzcyBNZWRpYURlc2NyaXB0aW9uIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IE1l
ZGlhRGVzY3JpcHRpb24oc3RkOjpzdHJpbmcgbWlkKSA6IG1pZF8oc3RkOjptb3ZlKG1pZCkpIHt9
Ci0KLSAgfk1lZGlhRGVzY3JpcHRpb24oKSB7fQotCi0gIC8vIFRoZSBtaWQobWVkaWEgc3RyZWFt
IGlkZW50aWZpY2F0aW9uKSBpcyB1c2VkIGZvciBpZGVudGlmeWluZyBtZWRpYSBzdHJlYW1zCi0g
IC8vIHdpdGhpbiBhIHNlc3Npb24gZGVzY3JpcHRpb24uCi0gIC8vIGh0dHBzOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9yZmM1ODg4I3NlY3Rpb24tNgotICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmlu
Zz4gbWlkKCkgY29uc3QgeyByZXR1cm4gbWlkXzsgfQotICB2b2lkIHNldF9taWQoc3RkOjpzdHJp
bmcgbWlkKSB7IG1pZF8uZW1wbGFjZShzdGQ6Om1vdmUobWlkKSk7IH0KLQotICAvLyBTZWN1cml0
eSBrZXlzIGFuZCBwYXJhbWV0ZXJzIGZvciB0aGlzIG1lZGlhIHN0cmVhbS4gQ2FuIGJlIHVzZWQg
dG8KLSAgLy8gbmVnb3RpYXRlIHBhcmFtZXRlcnMgZm9yIFNSVFAuCi0gIC8vIGh0dHBzOi8vdG9v
bHMuaWV0Zi5vcmcvaHRtbC9yZmM0NTY4I3BhZ2UtNQotICBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpD
cnlwdG9QYXJhbXM+JiBzZGVzX3BhcmFtcygpIHsgcmV0dXJuIHNkZXNfcGFyYW1zXzsgfQotICBj
b25zdCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpDcnlwdG9QYXJhbXM+JiBzZGVzX3BhcmFtcygpIGNv
bnN0IHsKLSAgICByZXR1cm4gc2Rlc19wYXJhbXNfOwotICB9Ci0KLSBwcml2YXRlOgotICBhYnNs
OjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gbWlkXzsKLQotICBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpD
cnlwdG9QYXJhbXM+IHNkZXNfcGFyYW1zXzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
LQotI2VuZGlmICAvLyBBUElfT1JUQ19NRURJQURFU0NSSVBUSU9OX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9tZWRpYWRl
c2NyaXB0aW9uX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL29ydGMvbWVkaWFkZXNjcmlwdGlvbl91bml0dGVzdC5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOWZmOTQzYWY2ZjQwNWZhOGNiZmNhMjI5ZTdiMDIzMzZiNDBi
MzNjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9tZWRpYWRlc2Ny
aXB0aW9uX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoKLSAq
ICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0g
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgImFwaS9vcnRjL21lZGlhZGVzY3JpcHRpb24uaCIKLSNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1jbGFzcyBNZWRp
YURlc2NyaXB0aW9uVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHt9OwotCi1URVNUX0YoTWVk
aWFEZXNjcmlwdGlvblRlc3QsIENyZWF0ZU1lZGlhRGVzY3JpcHRpb24pIHsKLSAgTWVkaWFEZXNj
cmlwdGlvbiBtKCJhIik7Ci0gIEVYUEVDVF9FUSgiYSIsIG0ubWlkKCkpOwotfQotCi1URVNUX0Yo
TWVkaWFEZXNjcmlwdGlvblRlc3QsIEFkZFNkZXNQYXJhbSkgewotICBNZWRpYURlc2NyaXB0aW9u
IG0oImEiKTsKLSAgbS5zZGVzX3BhcmFtcygpLnB1c2hfYmFjayhjcmlja2V0OjpDcnlwdG9QYXJh
bXMoKSk7Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OkNyeXB0b1BhcmFtcz4mIHBhcmFt
cyA9IG0uc2Rlc19wYXJhbXMoKTsKLSAgRVhQRUNUX0VRKDF1LCBwYXJhbXMuc2l6ZSgpKTsKLX0K
LQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvb3J0Y2ZhY3RvcnlpbnRlcmZhY2UuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL29ydGNm
YWN0b3J5aW50ZXJmYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5MzczNTI4
MzE4Y2Q3YjI0NjgzODk4NzU3MzE0YjQ5NmQ3YzMzMTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL29ydGMvb3J0Y2ZhY3RvcnlpbnRlcmZhY2UuaAorKysgL2Rldi9udWxsCkBA
IC0xLDIzMiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIEFQSV9PUlRDX09S
VENGQUNUT1JZSU5URVJGQUNFX0hfCi0jZGVmaW5lIEFQSV9PUlRDX09SVENGQUNUT1JZSU5URVJG
QUNFX0hfCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUg
PHV0aWxpdHk+ICAvLyBGb3Igc3RkOjptb3ZlLgotCi0jaW5jbHVkZSAiYXBpL21lZGlhc3RyZWFt
aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL21lZGlhdHlwZXMuaCIKLSNpbmNsdWRlICJhcGkv
b3J0Yy9vcnRjcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvb3J0Yy9vcnRj
cnRwc2VuZGVyaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvcGFja2V0dHJhbnNwb3J0
aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcmlu
dGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9vcnRjL3J0cHRyYW5zcG9ydGludGVyZmFjZS5oIgot
I2luY2x1ZGUgImFwaS9vcnRjL3NydHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJh
cGkvb3J0Yy91ZHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvcGVlcmNvbm5l
Y3Rpb25pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvcnRjZXJyb3IuaCIKLSNpbmNsdWRlICJh
cGkvcnRwcGFyYW1ldGVycy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdvcmsuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVh
ZC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVE9ETyhkZWFkYmVlZik6IFRoaXMgc2hv
dWxkIGJlIHBhcnQgb2YgL2FwaS8sIGJ1dCBjdXJyZW50bHkgaXQncyBub3QgYW5kCi0vLyBpbmNs
dWRpbmcgaXRzIGhlYWRlciB2aW9sYXRlcyBjaGVja2RlcHMgcnVsZXMuCi1jbGFzcyBBdWRpb0Rl
dmljZU1vZHVsZTsKLQotLy8gV0FSTklORzogVGhpcyBpcyBleHBlcmltZW50YWwvdW5kZXIgZGV2
ZWxvcG1lbnQsIHNvIHVzZSBhdCB5b3VyIG93biByaXNrOyBubwotLy8gZ3VhcmFudGVlIGFib3V0
IEFQSSBzdGFiaWxpdHkgaXMgZ3VhcmFudGVlZCBoZXJlIHlldC4KLS8vCi0vLyBUaGlzIGNsYXNz
IGlzIHRoZSBPUlRDIGFuYWxvZyBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnkuIEl0IGFjdHMgYXMg
YSBmYWN0b3J5Ci0vLyBmb3IgT1JUQyBvYmplY3RzIHRoYXQgY2FuIGJlIGNvbm5lY3RlZCB0byBl
YWNoIG90aGVyLgotLy8KLS8vIFNvbWUgb2YgdGhlc2Ugb2JqZWN0cyBtYXkgbm90IGJlIHJlcHJl
c2VudGVkIGJ5IHRoZSBPUlRDIHNwZWNpZmljYXRpb24sIGJ1dAotLy8gZm9sbG93IHRoZSBzYW1l
IGdlbmVyYWwgcHJpbmNpcGxlcy4KLS8vCi0vLyBJZiBvbmUgb2YgdGhlIGZhY3RvcnkgbWV0aG9k
cyB0YWtlcyBhbm90aGVyIG9iamVjdCBhcyBhbiBhcmd1bWVudCwgaXQgTVVTVAotLy8gaGF2ZSBi
ZWVuIGNyZWF0ZWQgYnkgdGhlIHNhbWUgT3J0Y0ZhY3RvcnkuCi0vLwotLy8gT24gb2JqZWN0IGxp
ZmV0aW1lczogb2JqZWN0cyBzaG91bGQgYmUgZGVzdHJveWVkIGluIHRoaXMgb3JkZXI6Ci0vLyAx
LiBPYmplY3RzIGNyZWF0ZWQgYnkgdGhlIGZhY3RvcnkuCi0vLyAyLiBUaGUgZmFjdG9yeSBpdHNl
bGYuCi0vLyAzLiBPYmplY3RzIHBhc3NlZCBpbnRvIE9ydGNGYWN0b3J5SW50ZXJmYWNlOjpDcmVh
dGUuCi1jbGFzcyBPcnRjRmFjdG9yeUludGVyZmFjZSB7Ci0gcHVibGljOgotICAvLyB8bmV0d29y
a190aHJlYWR8IGlzIHRoZSB0aHJlYWQgb24gd2hpY2ggcGFja2V0cyBhcmUgc2VudCBhbmQgcmVj
ZWl2ZWQuCi0gIC8vIElmIG51bGwsIGEgbmV3IHJ0Yzo6VGhyZWFkIHdpdGggYSBkZWZhdWx0IHNv
Y2tldCBzZXJ2ZXIgaXMgY3JlYXRlZC4KLSAgLy8KLSAgLy8gfHNpZ25hbGluZ190aHJlYWR8IGlz
IHVzZWQgZm9yIGNhbGxiYWNrcyB0byB0aGUgY29uc3VtZXIgb2YgdGhlIEFQSS4gSWYKLSAgLy8g
bnVsbCwgdGhlIGN1cnJlbnQgdGhyZWFkIHdpbGwgYmUgdXNlZCwgd2hpY2ggYXNzdW1lcyB0aGF0
IHRoZSBBUEkgY29uc3VtZXIKLSAgLy8gaXMgcnVubmluZyBhIG1lc3NhZ2UgbG9vcCBvbiB0aGlz
IHRocmVhZCAoZWl0aGVyIHVzaW5nIGFuIGV4aXN0aW5nCi0gIC8vIHJ0Yzo6VGhyZWFkLCBvciBi
eSBjYWxsaW5nIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCktPlByb2Nlc3NNZXNzYWdlcykuCi0gIC8v
Ci0gIC8vIHxuZXR3b3JrX21hbmFnZXJ8IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIG5ldHdv
cmsgaW50ZXJmYWNlcyBhcmUKLSAgLy8gYXZhaWxhYmxlLiBUaGlzIGlzIHVzZWQgZm9yIElDRSwg
Zm9yIGV4YW1wbGUuIElmIG51bGwsIGEgZGVmYXVsdAotICAvLyBpbXBsZW1lbnRhdGlvbiB3aWxs
IGJlIHVzZWQuIE9ubHkgYWNjZXNzZWQgb24gfG5ldHdvcmtfdGhyZWFkfC4KLSAgLy8KLSAgLy8g
fHNvY2tldF9mYWN0b3J5fCBpcyB1c2VkIChvbiB0aGUgbmV0d29yayB0aHJlYWQpIGZvciBjcmVh
dGluZyBzb2NrZXRzLiBJZgotICAvLyBpdCdzIG51bGwsIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
biB3aWxsIGJlIHVzZWQsIHdoaWNoIGFzc3VtZXMKLSAgLy8gfG5ldHdvcmtfdGhyZWFkfCBpcyBh
IG5vcm1hbCBydGM6OlRocmVhZC4KLSAgLy8KLSAgLy8gfGFkbXwgaXMgb3B0aW9uYWwsIGFuZCBh
bGxvd3MgYSBkaWZmZXJlbnQgYXVkaW8gZGV2aWNlIGltcGxlbWVudGF0aW9uIHRvCi0gIC8vIGJl
IGluamVjdGVkOyBvdGhlcndpc2UgYSBwbGF0Zm9ybS1zcGVjaWZpYyBtb2R1bGUgd2lsbCBiZSB1
c2VkIHRoYXQgd2lsbAotICAvLyB1c2UgdGhlIGRlZmF1bHQgYXVkaW8gaW5wdXQuCi0gIC8vCi0g
IC8vIHxhdWRpb19lbmNvZGVyX2ZhY3Rvcnl8IGFuZCB8YXVkaW9fZGVjb2Rlcl9mYWN0b3J5fCBh
cmUgdXNlZCB0bwotICAvLyBpbnN0YW50aWF0ZSBhdWRpbyBjb2RlY3M7IHRoZXkgZGV0ZXJtaW5l
IHdoYXQgY29kZWNzIGFyZSBzdXBwb3J0ZWQuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCB0aGUgT3J0
Y0ZhY3RvcnlJbnRlcmZhY2UgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgYW55IG9mIHRoZQot
ICAvLyBvYmplY3RzIHBhc3NlZCBpbiBieSByYXcgcG9pbnRlciwgYW5kIGFzIHByZXZpb3VzbHkg
c3RhdGVkLCB0aGVzZSBvYmplY3RzCi0gIC8vIGNhbid0IGJlIGRlc3Ryb3llZCBiZWZvcmUgdGhl
IGZhY3RvcnkgaXMuCi0gIHN0YXRpYyBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFj
dG9yeUludGVyZmFjZT4+IENyZWF0ZSgKLSAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVh
ZCwKLSAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgICAgcnRjOjpOZXR3
b3JrTWFuYWdlciogbmV0d29ya19tYW5hZ2VyLAotICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0
b3J5KiBzb2NrZXRfZmFjdG9yeSwKLSAgICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG0sCi0gICAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5LAotICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1
ZGlvX2RlY29kZXJfZmFjdG9yeSk7Ci0KLSAgLy8gQ29uc3RydWN0b3IgZm9yIGNvbnZlbmllbmNl
IHdoaWNoIHVzZXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUKLSAgLy8gcG9zc2libGUg
KHRob3VnaCBkb2VzIHN0aWxsIHJlcXVpcmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgcnVucyBh
IG1lc3NhZ2UKLSAgLy8gbG9vcDsgc2VlIGFib3ZlKS4KLSAgc3RhdGljIFJUQ0Vycm9yT3I8c3Rk
Ojp1bmlxdWVfcHRyPE9ydGNGYWN0b3J5SW50ZXJmYWNlPj4gQ3JlYXRlKAotICAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwK
LSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnkpIHsKLSAgICByZXR1cm4gQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICBhdWRpb19lbmNvZGVyX2Zh
Y3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSk7Ci0gIH0KLQotICB2aXJ0dWFsIH5PcnRjRmFj
dG9yeUludGVyZmFjZSgpIHt9Ci0KLSAgLy8gQ3JlYXRlcyBhbiBSVFAgdHJhbnNwb3J0IGNvbnRy
b2xsZXIsIHdoaWNoIGlzIHVzZWQgaW4gY2FsbHMgdG8KLSAgLy8gQ3JlYXRlUnRwVHJhbnNwb3J0
IG1ldGhvZHMuIElmIHlvdXIgYXBwbGljYXRpb24gaGFzIHNvbWUgbm90aW9uIG9mIGEKLSAgLy8g
ImNhbGwiLCB5b3Ugc2hvdWxkIGNyZWF0ZSBvbmUgdHJhbnNwb3J0IGNvbnRyb2xsZXIgcGVyIGNh
bGwuCi0gIC8vCi0gIC8vIEhvd2V2ZXIsIGlmIHlvdSBvbmx5IGFyZSB1c2luZyBvbmUgUnRwVHJh
bnNwb3J0IG9iamVjdCwgdGhpcyBkb2Vzbid0IG5lZWQKLSAgLy8gdG8gYmUgY2FsbGVkIGV4cGxp
Y2l0bHk7IENyZWF0ZVJ0cFRyYW5zcG9ydCB3aWxsIGNyZWF0ZSBvbmUgYXV0b21hdGljYWxseQot
ICAvLyBpZiB8cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyfCBpcyBudWxsLiBTZWUgYmVsb3cuCi0g
IC8vCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBBZGQgTWVkaWFDb25maWcgYW5kIFJ0Y0V2ZW50TG9n
IGFyZ3VtZW50cz8KLSAgdmlydHVhbCBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFu
c3BvcnRDb250cm9sbGVySW50ZXJmYWNlPj4KLSAgQ3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxl
cigpID0gMDsKLQotICAvLyBDcmVhdGVzIGFuIFJUUCB0cmFuc3BvcnQgdXNpbmcgdGhlIHByb3Zp
ZGVkIHBhY2tldCB0cmFuc3BvcnRzIGFuZAotICAvLyB0cmFuc3BvcnQgY29udHJvbGxlci4KLSAg
Ly8KLSAgLy8gfHJ0cHwgd2lsbCBiZSB1c2VkIGZvciBzZW5kaW5nIFJUUCBwYWNrZXRzLCBhbmQg
fHJ0Y3B8IGZvciBSVENQIHBhY2tldHMuCi0gIC8vCi0gIC8vIHxydHB8IGNhbid0IGJlIG51bGwu
IHxydGNwfCBtdXN0IGJlIG5vbi1udWxsIGlmIGFuZCBvbmx5IGlmCi0gIC8vIHxydHBfcGFyYW1l
dGVycy5ydGNwLm11eHwgaXMgZmFsc2UsIGluZGljYXRpbmcgdGhhdCBSVENQIG11eGluZyBpc24n
dCB1c2VkLgotICAvLyBOb3RlIHRoYXQgaWYgUlRDUCBtdXhpbmcgaXNuJ3QgZW5hYmxlZCBpbml0
aWFsbHksIGl0IGNhbiBzdGlsbCBlbmFibGVkCi0gIC8vIGxhdGVyIHRocm91Z2ggU2V0UGFyYW1l
dGVycy4KLSAgLy8KLSAgLy8gSWYgfHRyYW5zcG9ydF9jb250cm9sbGVyfCBpcyBudWxsLCBvbmUg
d2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQsIGFuZAotICAvLyBpdHMgbGlmZXRpbWUgbWFu
YWdlZCBieSB0aGUgcmV0dXJuZWQgUnRwVHJhbnNwb3J0LiBUaGlzIHNob3VsZCBvbmx5IGJlCi0g
IC8vIGRvbmUgaWYgYSBzaW5nbGUgUnRwVHJhbnNwb3J0IGlzIGJlaW5nIHVzZWQgdG8gY29tbXVu
aWNhdGUgd2l0aCB0aGUgcmVtb3RlCi0gIC8vIGVuZHBvaW50LgotICB2aXJ0dWFsIFJUQ0Vycm9y
T3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVyZmFjZT4+IENyZWF0ZVJ0cFRyYW5z
cG9ydCgKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHJ0cF9wYXJhbWV0ZXJz
LAotICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgICBQYWNrZXRUcmFu
c3BvcnRJbnRlcmZhY2UqIHJ0Y3AsCi0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJm
YWNlKiB0cmFuc3BvcnRfY29udHJvbGxlcikgPSAwOwotCi0gIC8vIENyZWF0ZXMgYW4gU3J0cFRy
YW5zcG9ydCB3aGljaCBpcyBhbiBSVFAgdHJhbnNwb3J0IHRoYXQgdXNlcyBTUlRQLgotICB2aXJ0
dWFsIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+Pgot
ICBDcmVhdGVTcnRwVHJhbnNwb3J0KAotICAgICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVy
cyYgcnRwX3BhcmFtZXRlcnMsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwK
LSAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICAgIFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJJbnRlcmZhY2UqIHRyYW5zcG9ydF9jb250cm9sbGVyKSA9IDA7Ci0KLSAgLy8g
UmV0dXJucyB0aGUgY2FwYWJpbGl0aWVzIG9mIGFuIFJUUCBzZW5kZXIgb2YgdHlwZSB8a2luZHwu
IFRoZXNlCi0gIC8vIGNhcGFiaWxpdGllcyBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBS
dHBQYXJhbWV0ZXJzIHRvIHVzZSB0byBjcmVhdGUKLSAgLy8gYW4gUnRwU2VuZGVyLgotICAvLwot
ICAvLyBJZiBmb3Igc29tZSByZWFzb24geW91IHBhc3MgaW4gTUVESUFfVFlQRV9EQVRBLCByZXR1
cm5zIGFuIGVtcHR5IHN0cnVjdHVyZS4KLSAgdmlydHVhbCBSdHBDYXBhYmlsaXRpZXMgR2V0UnRw
U2VuZGVyQ2FwYWJpbGl0aWVzKAotICAgICAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQpIGNvbnN0
ID0gMDsKLQotICAvLyBDcmVhdGVzIGFuIFJUUCBzZW5kZXIgd2l0aCB8dHJhY2t8LiBXaWxsIG5v
dCBzdGFydCBzZW5kaW5nIHVudGlsIFNlbmQgaXMKLSAgLy8gY2FsbGVkLiBUaGlzIGlzIHByb3Zp
ZGVkIGFzIGEgY29udmVuaWVuY2U7IGl0J3MgZXF1aXZhbGVudCB0byBjYWxsaW5nCi0gIC8vIENy
ZWF0ZVJ0cFNlbmRlciB3aXRoIGEga2luZCAoc2VlIGJlbG93KSwgZm9sbG93ZWQgYnkgU2V0VHJh
Y2suCi0gIC8vCi0gIC8vIHx0cmFja3wgYW5kIHx0cmFuc3BvcnR8IG11c3Qgbm90IGJlIG51bGwu
Ci0gIHZpcnR1YWwgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVy
ZmFjZT4+IENyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0
cmVhbVRyYWNrSW50ZXJmYWNlPiB0cmFjaywKLSAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSog
dHJhbnNwb3J0KSA9IDA7Ci0KLSAgLy8gT3ZlcmxvYWQgb2YgQ3JlYXRlUnRwU2VuZGVyIGFsbG93
cyBjcmVhdGluZyB0aGUgc2VuZGVyIHdpdGhvdXQgYSB0cmFjay4KLSAgLy8KLSAgLy8gfGtpbmR8
IG11c3QgYmUgTUVESUFfVFlQRV9BVURJTyBvciBNRURJQV9UWVBFX1ZJREVPLgotICB2aXJ0dWFs
IFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PiBDcmVh
dGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICAgIFJ0cFRy
YW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0KSA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0aGUgY2Fw
YWJpbGl0aWVzIG9mIGFuIFJUUCByZWNlaXZlciBvZiB0eXBlIHxraW5kfC4gVGhlc2UKLSAgLy8g
Y2FwYWJpbGl0aWVzIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGF0IFJ0cFBhcmFtZXRlcnMg
dG8gdXNlIHRvIGNyZWF0ZQotICAvLyBhbiBSdHBSZWNlaXZlci4KLSAgLy8KLSAgLy8gSWYgZm9y
IHNvbWUgcmVhc29uIHlvdSBwYXNzIGluIE1FRElBX1RZUEVfREFUQSwgcmV0dXJucyBhbiBlbXB0
eSBzdHJ1Y3R1cmUuCi0gIHZpcnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldFJ0cFJlY2VpdmVyQ2Fw
YWJpbGl0aWVzKAotICAgICAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQpIGNvbnN0ID0gMDsKLQot
ICAvLyBDcmVhdGVzIGFuIFJUUCByZWNlaXZlciBvZiB0eXBlIHxraW5kfC4gV2lsbCBub3Qgc3Rh
cnQgcmVjZWl2aW5nIG1lZGlhCi0gIC8vIHVudGlsIFJlY2VpdmUgaXMgY2FsbGVkLgotICAvLwot
ICAvLyB8a2luZHwgbXVzdCBiZSBNRURJQV9UWVBFX0FVRElPIG9yIE1FRElBX1RZUEVfVklERU8u
Ci0gIC8vCi0gIC8vIHx0cmFuc3BvcnR8IG11c3Qgbm90IGJlIG51bGwuCi0gIHZpcnR1YWwgUlRD
RXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFJlY2VpdmVySW50ZXJmYWNlPj4KLSAgQ3Jl
YXRlUnRwUmVjZWl2ZXIoY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQsCi0gICAgICAgICAgICAgICAg
ICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0KSA9IDA7Ci0KLSAgLy8gQ3JlYXRl
IGEgVURQIHRyYW5zcG9ydCB3aXRoIElQIGFkZHJlc3MgZmFtaWx5IHxmYW1pbHl8LCB1c2luZyBh
IHBvcnQKLSAgLy8gd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFuZ2UuCi0gIC8vCi0gIC8vIHxmYW1p
bHl8IG11c3QgYmUgQUZfSU5FVCBvciBBRl9JTkVUNi4KLSAgLy8KLSAgLy8gfG1pbl9wb3J0fC98
bWF4X3BvcnR8IHZhbHVlcyBvZiAwIGluZGljYXRlIG5vIHJhbmdlIHJlc3RyaWN0aW9uLgotICAv
LwotICAvLyBSZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB0cmFuc3BvcnQgd2Fzbid0IHN1Y2Nlc3Nm
dWxseSBjcmVhdGVkLgotICB2aXJ0dWFsIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFVkcFRy
YW5zcG9ydEludGVyZmFjZT4+Ci0gIENyZWF0ZVVkcFRyYW5zcG9ydChpbnQgZmFtaWx5LCB1aW50
MTZfdCBtaW5fcG9ydCwgdWludDE2X3QgbWF4X3BvcnQpID0gMDsKLQotICAvLyBNZXRob2QgZm9y
IGNvbnZlbmllbmNlIHRoYXQgaGFzIG5vIHBvcnQgcmFuZ2UgcmVzdHJpY3Rpb25zLgotICBSVENF
cnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxVZHBUcmFuc3BvcnRJbnRlcmZhY2U+PiBDcmVhdGVVZHBU
cmFuc3BvcnQoCi0gICAgICBpbnQgZmFtaWx5KSB7Ci0gICAgcmV0dXJuIENyZWF0ZVVkcFRyYW5z
cG9ydChmYW1pbHksIDAsIDApOwotICB9Ci0KLSAgLy8gTk9URTogVGhlIG1ldGhvZHMgYmVsb3cg
dG8gY3JlYXRlIHRyYWNrcy9zb3VyY2VzIHJldHVybiBzY29wZWRfcmVmcHRycwotICAvLyByYXRo
ZXIgdGhhbiB1bmlxdWVfcHRycywgYmVjYXVzZSB0aGVzZSBpbnRlcmZhY2VzIGFyZSBhbHNvIHVz
ZWQgd2l0aAotICAvLyBQZWVyQ29ubmVjdGlvbiwgd2hlcmUgZXZlcnl0aGluZyBpcyByZWYtY291
bnRlZC4KLQotICAvLyBDcmVhdGVzIGEgYXVkaW8gc291cmNlIHJlcHJlc2VudGluZyB0aGUgZGVm
YXVsdCBtaWNyb3Bob25lIGlucHV0LgotICAvLyB8b3B0aW9uc3wgZGVjaWRlcyBhdWRpbyBwcm9j
ZXNzaW5nIHNldHRpbmdzLgotICB2aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1NvdXJj
ZUludGVyZmFjZT4gQ3JlYXRlQXVkaW9Tb3VyY2UoCi0gICAgICBjb25zdCBjcmlja2V0OjpBdWRp
b09wdGlvbnMmIG9wdGlvbnMpID0gMDsKLQotICAvLyBWZXJzaW9uIG9mIHRoZSBhYm92ZSBtZXRo
b2QgdGhhdCB1c2VzIGRlZmF1bHQgb3B0aW9ucy4KLSAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
U291cmNlSW50ZXJmYWNlPiBDcmVhdGVBdWRpb1NvdXJjZSgpIHsKLSAgICByZXR1cm4gQ3JlYXRl
QXVkaW9Tb3VyY2UoY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpOwotICB9Ci0KLSAgLy8gQ3JlYXRl
cyBhIG5ldyBsb2NhbCB2aWRlbyB0cmFjayB3cmFwcGluZyB8c291cmNlfC4gVGhlIHNhbWUgfHNv
dXJjZXwgY2FuCi0gIC8vIGJlIHVzZWQgaW4gc2V2ZXJhbCB0cmFja3MuCi0gIHZpcnR1YWwgcnRj
OjpzY29wZWRfcmVmcHRyPFZpZGVvVHJhY2tJbnRlcmZhY2U+IENyZWF0ZVZpZGVvVHJhY2soCi0g
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaWQsCi0gICAgICBWaWRlb1RyYWNrU291cmNlSW50ZXJm
YWNlKiBzb3VyY2UpID0gMDsKLQotICAvLyBDcmVhdGVzIGFuIG5ldyBsb2NhbCBhdWRpbyB0cmFj
ayB3cmFwcGluZyB8c291cmNlfC4KLSAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9U
cmFja0ludGVyZmFjZT4gQ3JlYXRlQXVkaW9UcmFjaygKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBpZCwKLSAgICAgIEF1ZGlvU291cmNlSW50ZXJmYWNlKiBzb3VyY2UpID0gMDsKLX07Ci0KLX0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBBUElfT1JUQ19PUlRDRkFDVE9SWUlO
VEVSRkFDRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL29ydGMvb3J0Y3J0cHJlY2VpdmVyaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJp
bnRlcmZhY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTlmZjk3NzYyMTM1Mzcy
YTlmMWIyNTBjMzliNWQ0NzdjYjhlMjBhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaAorKysgL2Rldi9udWxsCkBAIC0x
LDg0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLS8vIFRoaXMgZmlsZSBjb250YWlucyBp
bnRlcmZhY2VzIGZvciBSdHBSZWNlaXZlcnM6Ci0vLyBodHRwOi8vcHVibGljYXRpb25zLm9ydGMu
b3JnLzIwMTYvMjAxNjEyMDIvI3J0Y3J0cHJlY2VpdmVyKgotLy8KLS8vIEhvd2V2ZXIsIHVuZGVy
bmVhdGggdGhlIFJ0cFJlY2VpdmVyIGlzIGFuIFJ0cFRyYW5zcG9ydCwgcmF0aGVyIHRoYW4gYQot
Ly8gRHRsc1RyYW5zcG9ydC4gVGhpcyBpcyB0byBhbGxvdyBkaWZmZXJlbnQgdHlwZXMgb2YgUlRQ
IHRyYW5zcG9ydHMgKGJlc2lkZXMKLS8vIERUTFMtU1JUUCkgdG8gYmUgdXNlZC4KLQotI2lmbmRl
ZiBBUElfT1JUQ19PUlRDUlRQUkVDRUlWRVJJTlRFUkZBQ0VfSF8KLSNkZWZpbmUgQVBJX09SVENf
T1JUQ1JUUFJFQ0VJVkVSSU5URVJGQUNFX0hfCi0KLSNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1p
bnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvbWVkaWF0eXBlcy5oIgotI2luY2x1ZGUgImFwaS9v
cnRjL3J0cHRyYW5zcG9ydGludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgot
I2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0v
LyBOb3RlOiBTaW5jZSByZWNlaXZlciBjYXBhYmlsaXRpZXMgbWF5IGRlcGVuZCBvbiBob3cgdGhl
IE9ydGNGYWN0b3J5IHdhcwotLy8gY3JlYXRlZCwgaW5zdGVhZCBvZiBhIHN0YXRpYyAiR2V0Q2Fw
YWJpbGl0aWVzIiBtZXRob2Qgb24gdGhpcyBpbnRlcmZhY2UsCi0vLyB0aGVyZSBpcyBhICJHZXRS
dHBSZWNlaXZlckNhcGFiaWxpdGllcyIgbWV0aG9kIG9uIHRoZSBPcnRjRmFjdG9yeS4KLWNsYXNz
IE9ydGNSdHBSZWNlaXZlckludGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5PcnRjUnRw
UmVjZWl2ZXJJbnRlcmZhY2UoKSB7fQotCi0gIC8vIFJldHVybnMgYSB0cmFjayByZXByZXNlbnRp
bmcgdGhlIG1lZGlhIHJlY2VpdmVkIGJ5IHRoaXMgcmVjZWl2ZXIuCi0gIC8vCi0gIC8vIEN1cnJl
bnRseSwgdGhpcyB3aWxsIHJldHVybiBudWxsIHVudGlsIFJlY2VpdmUgaGFzIGJlZW4gc3VjY2Vz
c2Z1bGx5Ci0gIC8vIGNhbGxlZC4gQWxzbywgYSBuZXcgdHJhY2sgd2lsbCBiZSBjcmVhdGVkIGV2
ZXJ5IHRpbWUgdGhlIHByaW1hcnkgU1NSQwotICAvLyBjaGFuZ2VzLgotICAvLwotICAvLyBJZiBl
bmNvZGluZ3MgYXJlIHJlbW92ZWQsIEdldFRyYWNrIHdpbGwgcmV0dXJuIG51bGwuIFRob3VnaCBk
ZWFjdGl2YXRpbmcKLSAgLy8gYW4gZW5jb2RpbmcgKHNldHRpbmcgfGFjdGl2ZXwgdG8gZmFsc2Up
IHdpbGwgbm90IGRvIHRoaXMuCi0gIC8vCi0gIC8vIEluIHRoZSBmdXR1cmUsIHRoZXNlIGxpbWl0
YXRpb25zIHdpbGwgYmUgZml4ZWQsIGFuZCBHZXRUcmFjayB3aWxsIHJldHVybgotICAvLyB0aGUg
c2FtZSB0cmFjayBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBSdHBSZWNlaXZlci4gU28gaXQncyBu
b3QKLSAgLy8gcmVjb21tZW5kZWQgdG8gd3JpdGUgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhpcyBu
b24tc3RhbmRhcmQgYmVoYXZpb3IuCi0gIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPE1lZGlh
U3RyZWFtVHJhY2tJbnRlcmZhY2U+IEdldFRyYWNrKCkgY29uc3QgPSAwOwotCi0gIC8vIE9uY2Ug
c3VwcG9ydGVkLCB3aWxsIHN3aXRjaCB0byByZWNlaXZpbmcgbWVkaWEgb24gYSBuZXcgdHJhbnNw
b3J0LgotICAvLyBIb3dldmVyLCB0aGlzIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGFuZCB3
aWxsIGFsd2F5cyByZXR1cm4gYW4gZXJyb3IuCi0gIHZpcnR1YWwgUlRDRXJyb3IgU2V0VHJhbnNw
b3J0KFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0KSA9IDA7Ci0gIC8vIFJldHVybnMg
cHJldmlvdXNseSBzZXQgKG9yIGNvbnN0cnVjdGVkLXdpdGgpIHRyYW5zcG9ydC4KLSAgdmlydHVh
bCBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIEdldFRyYW5zcG9ydCgpIGNvbnN0ID0gMDsKLQotICAv
LyBTdGFydCByZWNlaXZpbmcgbWVkaWEgd2l0aCB8cGFyYW1ldGVyc3wgKGlmIHxwYXJhbWV0ZXJz
fCBjb250YWlucyBhbgotICAvLyBhY3RpdmUgZW5jb2RpbmcpLgotICAvLwotICAvLyBUaGVyZSBh
cmUgbm8gbGltaXRhdGlvbnMgdG8gaG93IHRoZSBwYXJhbWV0ZXJzIGNhbiBiZSBjaGFuZ2VkIGFm
dGVyIHRoZQotICAvLyBpbml0aWFsIGNhbGwgdG8gUmVjZWl2ZSwgYXMgbG9uZyBhcyB0aGV5J3Jl
IHZhbGlkIChmb3IgZXhhbXBsZSwgdGhleSBjYW4ndAotICAvLyB1c2UgdGhlIHNhbWUgcGF5bG9h
ZCB0eXBlIGZvciB0d28gY29kZWNzKS4KLSAgdmlydHVhbCBSVENFcnJvciBSZWNlaXZlKGNvbnN0
IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpID0gMDsKLSAgLy8gUmV0dXJucyBwYXJhbWV0ZXJz
IHRoYXQgd2VyZSBsYXN0IHN1Y2Nlc3NmdWxseSBwYXNzZWQgaW50byBSZWNlaXZlLCBvcgotICAv
LyBlbXB0eSBwYXJhbWV0ZXJzIGlmIHRoYXQgaGFzbid0IHlldCBvY2N1cnJlZC4KLSAgLy8KLSAg
Ly8gTm90ZSB0aGF0IGZvciBwYXJhbWV0ZXJzIHRoYXQgYXJlIGRlc2NyaWJlZCBhcyBoYXZpbmcg
YW4gImltcGxlbWVudGF0aW9uCi0gIC8vIGRlZmF1bHQiIHZhbHVlIGNob3NlbiwgR2V0UGFyYW1l
dGVycygpIHdpbGwgcmV0dXJuIHRob3NlIGNob3NlbiBkZWZhdWx0cywKLSAgLy8gd2l0aCB0aGUg
ZXhjZXB0aW9uIG9mIFNTUkNzIHdoaWNoIGhhdmUgc3BlY2lhbCBiZWhhdmlvci4gU2VlCi0gIC8v
IHJ0cHBhcmFtZXRlcnMuaCBmb3IgbW9yZSBkZXRhaWxzLgotICB2aXJ0dWFsIFJ0cFBhcmFtZXRl
cnMgR2V0UGFyYW1ldGVycygpIGNvbnN0ID0gMDsKLQotICAvLyBBdWRpbyBvciB2aWRlbyByZWNl
aXZlcj8KLSAgLy8KLSAgLy8gT25jZSBHZXRUcmFjaygpIHN0YXJ0cyBhbHdheXMgcmV0dXJuaW5n
IGEgdHJhY2ssIHRoaXMgbWV0aG9kIHdpbGwgYmUKLSAgLy8gcmVkdW5kYW50LCBhcyBvbmUgY2Fu
IGNhbGwgIkdldFRyYWNrKCktPmtpbmQoKSIuIEhvd2V2ZXIsIGl0J3Mgc3RpbGwgYQotICAvLyBu
aWNlIGNvbnZlbmllbmNlLCBhbmQgaXMgc3ltbWV0cmljIHdpdGggT3J0Y1J0cFNlbmRlckludGVy
ZmFjZTo6R2V0S2luZC4KLSAgdmlydHVhbCBjcmlja2V0OjpNZWRpYVR5cGUgR2V0S2luZCgpIGNv
bnN0ID0gMDsKLQotICAvLyBUT0RPKGRlYWRiZWVmKTogR2V0Q29udHJpYnV0aW5nU291cmNlcwot
fTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIEFQSV9PUlRDX09SVENS
VFBSRUNFSVZFUklOVEVSRkFDRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvb3J0Y3J0cHNlbmRlcmludGVyZmFjZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvb3J0Y3J0
cHNlbmRlcmludGVyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDRkZmFh
NzkwN2ZmYzI4Yzc3MTZjNmJlZDA3MjZlZWI0ZDhmZWM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9vcnRjL29ydGNydHBzZW5kZXJpbnRlcmZhY2UuaAorKysgL2Rldi9udWxs
CkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
LSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLS8vIFRoaXMgZmlsZSBjb250
YWlucyBpbnRlcmZhY2VzIGZvciBSdHBTZW5kZXJzOgotLy8gaHR0cDovL3B1YmxpY2F0aW9ucy5v
cnRjLm9yZy8yMDE2LzIwMTYxMjAyLyNydGNydHBzZW5kZXIqCi0vLwotLy8gSG93ZXZlciwgdW5k
ZXJuZWF0aCB0aGUgUnRwU2VuZGVyIGlzIGFuIFJ0cFRyYW5zcG9ydCwgcmF0aGVyIHRoYW4gYQot
Ly8gRHRsc1RyYW5zcG9ydC4gVGhpcyBpcyB0byBhbGxvdyBkaWZmZXJlbnQgdHlwZXMgb2YgUlRQ
IHRyYW5zcG9ydHMgKGJlc2lkZXMKLS8vIERUTFMtU1JUUCkgdG8gYmUgdXNlZC4KLQotI2lmbmRl
ZiBBUElfT1JUQ19PUlRDUlRQU0VOREVSSU5URVJGQUNFX0hfCi0jZGVmaW5lIEFQSV9PUlRDX09S
VENSVFBTRU5ERVJJTlRFUkZBQ0VfSF8KLQotI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbWludGVy
ZmFjZS5oIgotI2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMv
cnRwdHJhbnNwb3J0aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCi0jaW5j
bHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIE5v
dGU6IFNpbmNlIHNlbmRlciBjYXBhYmlsaXRpZXMgbWF5IGRlcGVuZCBvbiBob3cgdGhlIE9ydGNG
YWN0b3J5IHdhcwotLy8gY3JlYXRlZCwgaW5zdGVhZCBvZiBhIHN0YXRpYyAiR2V0Q2FwYWJpbGl0
aWVzIiBtZXRob2Qgb24gdGhpcyBpbnRlcmZhY2UsCi0vLyB0aGVyZSBpcyBhICJHZXRSdHBTZW5k
ZXJDYXBhYmlsaXRpZXMiIG1ldGhvZCBvbiB0aGUgT3J0Y0ZhY3RvcnkuCi1jbGFzcyBPcnRjUnRw
U2VuZGVySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfk9ydGNSdHBTZW5kZXJJbnRl
cmZhY2UoKSB7fQotCi0gIC8vIFNldHMgdGhlIHNvdXJjZSBvZiBtZWRpYSB0aGF0IHdpbGwgYmUg
c2VudCBieSB0aGlzIHNlbmRlci4KLSAgLy8KLSAgLy8gSWYgU2VuZCBoYXMgYWxyZWFkeSBiZWVu
IGNhbGxlZCwgd2lsbCBpbW1lZGlhdGVseSBzd2l0Y2ggdG8gc2VuZGluZyB0aGlzCi0gIC8vIHRy
YWNrLiBJZiB8dHJhY2t8IGlzIG51bGwsIHdpbGwgc3RvcCBzZW5kaW5nIG1lZGlhLgotICAvLwot
ICAvLyBSZXR1cm5zIElOVkFMSURfUEFSQU1FVEVSIGVycm9yIGlmIGFuIGF1ZGlvIHRyYWNrIGlz
IHNldCBvbiBhIHZpZGVvCi0gIC8vIFJ0cFNlbmRlciwgb3IgdmljZS12ZXJzYS4KLSAgdmlydHVh
bCBSVENFcnJvciBTZXRUcmFjayhNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlKiB0cmFjaykgPSAw
OwotICAvLyBSZXR1cm5zIHByZXZpb3VzbHkgc2V0IChvciBjb25zdHJ1Y3RlZC13aXRoKSB0cmFj
ay4KLSAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFj
ZT4gR2V0VHJhY2soKSBjb25zdCA9IDA7Ci0KLSAgLy8gT25jZSBzdXBwb3J0ZWQsIHdpbGwgc3dp
dGNoIHRvIHNlbmRpbmcgbWVkaWEgb24gYSBuZXcgdHJhbnNwb3J0LiBIb3dldmVyLAotICAvLyB0
aGlzIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGFuZCB3aWxsIGFsd2F5cyByZXR1cm4gYW4g
ZXJyb3IuCi0gIHZpcnR1YWwgUlRDRXJyb3IgU2V0VHJhbnNwb3J0KFJ0cFRyYW5zcG9ydEludGVy
ZmFjZSogdHJhbnNwb3J0KSA9IDA7Ci0gIC8vIFJldHVybnMgcHJldmlvdXNseSBzZXQgKG9yIGNv
bnN0cnVjdGVkLXdpdGgpIHRyYW5zcG9ydC4KLSAgdmlydHVhbCBSdHBUcmFuc3BvcnRJbnRlcmZh
Y2UqIEdldFRyYW5zcG9ydCgpIGNvbnN0ID0gMDsKLQotICAvLyBTdGFydCBzZW5kaW5nIG1lZGlh
IHdpdGggfHBhcmFtZXRlcnN8IChpZiB8cGFyYW1ldGVyc3wgY29udGFpbnMgYW4gYWN0aXZlCi0g
IC8vIGVuY29kaW5nKS4KLSAgLy8KLSAgLy8gVGhlcmUgYXJlIG5vIGxpbWl0YXRpb25zIHRvIGhv
dyB0aGUgcGFyYW1ldGVycyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGUKLSAgLy8gaW5pdGlhbCBj
YWxsIHRvIFNlbmQsIGFzIGxvbmcgYXMgdGhleSdyZSB2YWxpZCAoZm9yIGV4YW1wbGUsIHRoZXkg
Y2FuJ3QKLSAgLy8gdXNlIHRoZSBzYW1lIHBheWxvYWQgdHlwZSBmb3IgdHdvIGNvZGVjcykuCi0g
IHZpcnR1YWwgUlRDRXJyb3IgU2VuZChjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSA9
IDA7Ci0gIC8vIFJldHVybnMgcGFyYW1ldGVycyB0aGF0IHdlcmUgbGFzdCBzdWNjZXNzZnVsbHkg
cGFzc2VkIGludG8gU2VuZCwgb3IgZW1wdHkKLSAgLy8gcGFyYW1ldGVycyBpZiB0aGF0IGhhc24n
dCB5ZXQgb2NjdXJyZWQuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCBmb3IgcGFyYW1ldGVycyB0aGF0
IGFyZSBkZXNjcmliZWQgYXMgaGF2aW5nIGFuICJpbXBsZW1lbnRhdGlvbgotICAvLyBkZWZhdWx0
IiB2YWx1ZSBjaG9zZW4sIEdldFBhcmFtZXRlcnMoKSB3aWxsIHJldHVybiB0aG9zZSBjaG9zZW4g
ZGVmYXVsdHMsCi0gIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBTU1JDcyB3aGljaCBoYXZlIHNw
ZWNpYWwgYmVoYXZpb3IuIFNlZQotICAvLyBydHBwYXJhbWV0ZXJzLmggZm9yIG1vcmUgZGV0YWls
cy4KLSAgdmlydHVhbCBSdHBQYXJhbWV0ZXJzIEdldFBhcmFtZXRlcnMoKSBjb25zdCA9IDA7Ci0K
LSAgLy8gQXVkaW8gb3IgdmlkZW8gc2VuZGVyPwotICB2aXJ0dWFsIGNyaWNrZXQ6Ok1lZGlhVHlw
ZSBHZXRLaW5kKCkgY29uc3QgPSAwOwotCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBTU1JDIGNvbmZs
aWN0IHNpZ25hbC4KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBB
UElfT1JUQ19PUlRDUlRQU0VOREVSSU5URVJGQUNFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9ydHB0cmFuc3BvcnRjb250
cm9sbGVyaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvb3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyaW50ZXJmYWNlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ZjM3ZmE3YTBkNWQyMDhkZDc2OWUzZDliY2MwMzc3Yjk5
NzVjYWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvcnRwdHJhbnNw
b3J0Y29udHJvbGxlcmludGVyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAot
LyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBBUElfT1JUQ19SVFBUUkFOU1BPUlRDT05UUk9M
TEVSSU5URVJGQUNFX0hfCi0jZGVmaW5lIEFQSV9PUlRDX1JUUFRSQU5TUE9SVENPTlRST0xMRVJJ
TlRFUkZBQ0VfSF8KLQotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImFwaS9vcnRjL3J0
cHRyYW5zcG9ydGludGVyZmFjZS5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotY2xhc3MgUnRw
VHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI7Ci0KLS8vIFVzZWQgdG8gZ3JvdXAgUlRQIHRyYW5z
cG9ydHMgYmV0d2VlbiBhIGxvY2FsIGVuZHBvaW50IGFuZCB0aGUgc2FtZSByZW1vdGUKLS8vIGVu
ZHBvaW50LCBmb3IgdGhlIHB1cnBvc2Ugb2Ygc2hhcmluZyBiYW5kd2lkdGggZXN0aW1hdGlvbiBh
bmQgb3RoZXIgdGhpbmdzLgotLy8KLS8vIENvbXBhcmluZyB0aGlzIHRvIHRoZSBQZWVyQ29ubmVj
dGlvbiBtb2RlbCwgbm9uLWJ1ZGxlZCBhdWRpby92aWRlbyB3b3VsZCB1c2UKLS8vIHR3byBSdHBU
cmFuc3BvcnRzIHdpdGggYSBzaW5nbGUgUnRwVHJhbnNwb3J0Q29udHJvbGxlciwgd2hlcmVhcyBi
dW5kbGVkCi0vLyBtZWRpYSB3b3VsZCB1c2UgYSBzaW5nbGUgUnRwVHJhbnNwb3J0LCBhbmQgdHdv
IFBlZXJDb25uZWN0aW9ucyB3b3VsZCB1c2UKLS8vIGluZGVwZW5kZW50IFJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJzLgotLy8KLS8vIFJ0cFRyYW5zcG9ydHMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlz
IGNvbnRyb2xsZXIgd2hlbiB0aGV5J3JlIGNyZWF0ZWQsIGJ5Ci0vLyBwYXNzaW5nIHRoZSBjb250
cm9sbGVyIGludG8gT3J0Y0ZhY3RvcnkncyByZWxldmFudCAiQ3JlYXRlUnRwVHJhbnNwb3J0Igot
Ly8gbWV0aG9kLiBXaGVuIGEgdHJhbnNwb3J0IGlzIGRlc3Ryb3llZCwgaXQncyBhdXRvbWF0aWNh
bGx5IGRpc2Fzc29jaWF0ZWQuCi0vLyBHZXRUcmFuc3BvcnRzIHJldHVybnMgYWxsIGN1cnJlbnRs
eSBhc3NvY2lhdGVkIHRyYW5zcG9ydHMuCi0vLwotLy8gVGhpcyBpcyB0aGUgUlRQIGVxdWl2YWxl
bnQgb2YgIkljZVRyYW5zcG9ydENvbnRyb2xsZXIiIGluIE9SVEM7IFJ0cFRyYW5zcG9ydAotLy8g
aXMgdG8gUnRwVHJhbnNwb3J0Q29udHJvbGxlciBhcyBJY2VUcmFuc3BvcnQgaXMgdG8gSWNlVHJh
bnNwb3J0Q29udHJvbGxlci4KLWNsYXNzIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2Ug
ewotIHB1YmxpYzoKLSAgdmlydHVhbCB+UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZSgp
IHt9Ci0KLSAgLy8gUmV0dXJucyBhbGwgdHJhbnNwb3J0cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBj
b250cm9sbGVyIChzZWUgZXhwbGFuYXRpb24KLSAgLy8gYWJvdmUpLiBObyBvcmRlcmluZyBpcyBn
dWFyYW50ZWVkLgotICB2aXJ0dWFsIHN0ZDo6dmVjdG9yPFJ0cFRyYW5zcG9ydEludGVyZmFjZSo+
IEdldFRyYW5zcG9ydHMoKSBjb25zdCA9IDA7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIE9ubHkgZm9y
IGludGVybmFsIHVzZS4gUmV0dXJucyBhIHBvaW50ZXIgdG8gYW4gaW50ZXJuYWwgaW50ZXJmYWNl
LCBmb3IgdXNlCi0gIC8vIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4KLSAgdmlydHVhbCBSdHBUcmFu
c3BvcnRDb250cm9sbGVyQWRhcHRlciogR2V0SW50ZXJuYWwoKSA9IDA7Ci0KLSAgLy8gQ2xhc3Nl
cyB0aGF0IGNhbiB1c2UgdGhpcyBpbnRlcm5hbCBpbnRlcmZhY2UuCi0gIGZyaWVuZCBjbGFzcyBP
cnRjRmFjdG9yeTsKLSAgZnJpZW5kIGNsYXNzIFJ0cFRyYW5zcG9ydEFkYXB0ZXI7Ci19OwotCi19
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVBJX09SVENfUlRQVFJBTlNQT1JU
Q09OVFJPTExFUklOVEVSRkFDRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvcnRwdHJhbnNwb3J0aW50ZXJmYWNlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9ydHB0cmFu
c3BvcnRpbnRlcmZhY2UuaAppbmRleCBiMGQzMGU4NTYwZTI3YTUyOGJhNjdhNTM1NGFmYjMyZGEw
YTJkYjY0Li40YjlkMTYxNThmNjVhMDQ4MWRjZjc2NTNmNmI0MmY0ZGU5ZDgyZWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9y
dHB0cmFuc3BvcnRpbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9ydHB0cmFuc3BvcnRpbnRlcmZhY2UuaApAQCAtMTgsNyAr
MTgsNiBAQAogI2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgogI2luY2x1ZGUgImFwaS9ydHBfaGVh
ZGVycy5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiY29tbW9u
X3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA3ODg4NGVjYjQ1YjIwNzg5NjUzNGE4OTAyOGExMTU3
NTNmOWU3Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9zZXNzaW9u
ZGVzY3JpcHRpb24uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0vKgotICogIENv
cHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KLSAqLwotCi0jaW5jbHVkZSAiYXBpL29ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgiCi0KLW5h
bWVzcGFjZSB3ZWJydGMge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvc2Vzc2lvbmRlc2NyaXB0
aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYmFhMjdkNmZmYzAwMTE0NTAz
MjZlNTFjMTdjOGIxN2RmOWY5NTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L29ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAot
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIEFQSV9PUlRDX1NFU1NJT05ERVNDUklQVElP
Tl9IXwotI2RlZmluZSBBUElfT1JUQ19TRVNTSU9OREVTQ1JJUFRJT05fSF8KLQotI2luY2x1ZGUg
PHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8g
QSBzdHJ1Y3R1cmVkIHJlcHJlc2VudGF0aW9uIG9mIGFuIFNEUCBzZXNzaW9uIGRlc2NyaXB0aW9u
LgotY2xhc3MgU2Vzc2lvbkRlc2NyaXB0aW9uIHsKLSBwdWJsaWM6Ci0gIFNlc3Npb25EZXNjcmlw
dGlvbihpbnQ2NF90IHNlc3Npb25faWQsIHN0ZDo6c3RyaW5nIHNlc3Npb25fdmVyc2lvbikKLSAg
ICAgIDogc2Vzc2lvbl9pZF8oc2Vzc2lvbl9pZCksIHNlc3Npb25fdmVyc2lvbl8oc3RkOjptb3Zl
KHNlc3Npb25fdmVyc2lvbikpIHt9Ci0KLSAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzQ1NjYjc2VjdGlvbi01LjIKLSAgLy8gbz08dXNlcm5hbWU+IDxzZXNzLWlkPiA8c2Vzcy12
ZXJzaW9uPiA8bmV0dHlwZT4gPGFkZHJ0eXBlPgotICAvLyAgIDx1bmljYXN0LWFkZHJlc3M+Ci0g
IC8vIHNlc3Npb25faWRfIGlzIHRoZSAic2Vzcy1pZCIgZmllbGQuCi0gIC8vIHNlc3Npb25fdmVy
c2lvbl8gaXMgdGhlICJzZXNzLXZlcnNpb24iIGZpZWxkLgotICBpbnQ2NF90IHNlc3Npb25faWQo
KSB7IHJldHVybiBzZXNzaW9uX2lkXzsgfQotICB2b2lkIHNldF9zZXNzaW9uX2lkKGludDY0X3Qg
c2Vzc2lvbl9pZCkgeyBzZXNzaW9uX2lkXyA9IHNlc3Npb25faWQ7IH0KLQotICBjb25zdCBzdGQ6
OnN0cmluZyYgc2Vzc2lvbl92ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc2Vzc2lvbl92ZXJzaW9u
XzsgfQotICB2b2lkIHNldF9zZXNzaW9uX3ZlcnNpb24oc3RkOjpzdHJpbmcgc2Vzc2lvbl92ZXJz
aW9uKSB7Ci0gICAgc2Vzc2lvbl92ZXJzaW9uXyA9IHN0ZDo6bW92ZShzZXNzaW9uX3ZlcnNpb24p
OwotICB9Ci0KLSBwcml2YXRlOgotICBpbnQ2NF90IHNlc3Npb25faWRfOwotICBzdGQ6OnN0cmlu
ZyBzZXNzaW9uX3ZlcnNpb25fOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5k
aWYgIC8vIEFQSV9PUlRDX1NFU1NJT05ERVNDUklQVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvc2Vzc2lvbmRlc2Ny
aXB0aW9uX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL29ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNDYxMWM2YzZiMmJmN2EwYmU0ZjVjOTIxNjZmNDA5MzRiMDVm
NzA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNj
cmlwdGlvbl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQot
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJhcGkvb3J0Yy9zZXNzaW9uZGVzY3JpcHRpb24uaCIK
LSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1jbGFzcyBT
ZXNzaW9uRGVzY3JpcHRpb25UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qge307Ci0KLVRFU1Rf
RihTZXNzaW9uRGVzY3JpcHRpb25UZXN0LCBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24pIHsKLSAg
U2Vzc2lvbkRlc2NyaXB0aW9uIHMoLTEsICIwIik7Ci0gIEVYUEVDVF9FUSgtMSwgcy5zZXNzaW9u
X2lkKCkpOwotICBFWFBFQ1RfRVEoIjAiLCBzLnNlc3Npb25fdmVyc2lvbigpKTsKLX0KLX0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3VkcHRyYW5zcG9ydGludGVyZmFjZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvdWRwdHJhbnNwb3J0
aW50ZXJmYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNDZhMjVlOWRkZDBm
NWVjYWZlMDA2OWJjODYzZDAzMDhlZjJiODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL29ydGMvdWRwdHJhbnNwb3J0aW50ZXJmYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
OSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIEFQSV9PUlRDX1VEUFRSQU5T
UE9SVElOVEVSRkFDRV9IXwotI2RlZmluZSBBUElfT1JUQ19VRFBUUkFOU1BPUlRJTlRFUkZBQ0Vf
SF8KLQotI2luY2x1ZGUgImFwaS9vcnRjL3BhY2tldHRyYW5zcG9ydGludGVyZmFjZS5oIgotI2lu
Y2x1ZGUgImFwaS9wcm94eS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIK
LQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIEludGVyZmFjZSBmb3IgYSByYXcgVURQIHRyYW5z
cG9ydCAobm90IHVzaW5nIElDRSksIG1lYW5pbmcgYSBjb21iaW5hdGlvbiBvZgotLy8gYSBsb2Nh
bC9yZW1vdGUgSVAgYWRkcmVzcy9wb3J0LgotLy8KLS8vIEFuIGluc3RhbmNlIGNhbiBiZSBpbnN0
YW50aWF0ZWQgdXNpbmcgT3J0Y0ZhY3RvcnkuCi0vLwotLy8gRWFjaCBpbnN0YW5jZSByZXNlcnZl
cyBhIFVEUCBwb3J0LCB3aGljaCB3aWxsIGJlIGZyZWVkIHdoZW4gdGhlCi0vLyBVZHBUcmFuc3Bv
cnRJbnRlcmZhY2UgZGVzdHJ1Y3RvciBpcyBjYWxsZWQuCi0vLwotLy8gQ2FsbGluZyBTZXRSZW1v
dGVBZGRyZXNzIHNldHMgdGhlIGRlc3RpbmF0aW9uIG9mIG91dGdvaW5nIHBhY2tldHM7IHdpdGhv
dXQgYQotLy8gZGVzdGluYXRpb24sIHBhY2tldHMgY2FuJ3QgYmUgc2VudCwgYnV0IHRoZXkgY2Fu
IGJlIHJlY2VpdmVkLgotY2xhc3MgVWRwVHJhbnNwb3J0SW50ZXJmYWNlIDogcHVibGljIHZpcnR1
YWwgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC8vIEdldCB0aGUgYWRk
cmVzcyBvZiB0aGUgc29ja2V0IGFsbG9jYXRlZCBmb3IgdGhpcyB0cmFuc3BvcnQuCi0gIHZpcnR1
YWwgcnRjOjpTb2NrZXRBZGRyZXNzIEdldExvY2FsQWRkcmVzcygpIGNvbnN0ID0gMDsKLQotICAv
LyBTZXRzIHRoZSBhZGRyZXNzIHRvIHdoaWNoIHBhY2tldHMgd2lsbCBiZSBkZWxpdmVyZWQuCi0g
IC8vCi0gIC8vIENhbGxpbmcgd2l0aCBhICJuaWwiIChkZWZhdWx0LWNvbnN0cnVjdGVkKSBhZGRy
ZXNzIGlzIGxlZ2FsLCBhbmQgdW5zZXRzCi0gIC8vIGFueSBwcmV2aW91c2x5IHNldCBkZXN0aW5h
dGlvbi4KLSAgLy8KLSAgLy8gSG93ZXZlciwgY2FsbGluZyB3aXRoIGFuIGluY29tcGxldGUgYWRk
cmVzcyAocG9ydCBvciBJUCBub3Qgc2V0KSB3aWxsCi0gIC8vIGZhaWwuCi0gIHZpcnR1YWwgYm9v
bCBTZXRSZW1vdGVBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgZGVzdCkgPSAwOwot
ICAvLyBTaW1wbGUgZ2V0dGVyLiBJZiBuZXZlciBzZXQsIHJldHVybnMgbmlsIGFkZHJlc3MuCi0g
IHZpcnR1YWwgcnRjOjpTb2NrZXRBZGRyZXNzIEdldFJlbW90ZUFkZHJlc3MoKSBjb25zdCA9IDA7
Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVBJX09SVENfVURQ
VFJBTlNQT1JUSU5URVJGQUNFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25p
bnRlcmZhY2UuY2MKaW5kZXggYjQxNDhkNzQ4MGFhYmU0NDNjYjk5ZTc0ZGY3NDJlMGQ1ODRhMTUw
Ny4uZjI5NTNiNWIwYzI4YzYxMWZiMTBlZmJmODMwNmRlMjQ1ZTY3M2YyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3BlZXJjb25uZWN0
aW9uaW50ZXJmYWNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5jYwpAQCAtMTU5LDYgKzE1OSwxMSBA
QCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6U2V0Qml0cmF0ZSgKICAgcmV0dXJu
IFNldEJpdHJhdGUoYml0cmF0ZSk7CiB9CiAKK1BlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVy
Q29ubmVjdGlvblN0YXRlCitQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6cGVlcl9jb25uZWN0aW9u
X3N0YXRlKCkgeworICByZXR1cm4gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0
aW9uU3RhdGU6OmtOZXc7Cit9CisKIGJvb2wgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlN0YXJ0
UnRjRXZlbnRMb2cocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBtYXhfc2l6ZV9ieXRlcykgewogICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5o
CmluZGV4IDFjMzJiNjk2OTJkMDBlNmVmYWI3ODJjNWJkYmExY2Q3YTgzMGUyYzguLjU0MTYxYjhk
YTU5YjAyMjYwODNhNmFiZjk4Mjk2YWU4MzM5ZGY2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9w
ZWVyY29ubmVjdGlvbmludGVyZmFjZS5oCkBAIC02OSw3ICs2OSw2IEBACiAKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2FzeW5jcmVzb2x2ZXJmYWN0b3J5LmgiCkBAIC03OCwx
MCArNzcsMTEgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFj
dG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19vcHRpb25zLmgiCiAjaW5jbHVkZSAiYXBpL2Nh
bGwvY2FsbGZhY3RvcnlpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29w
dGlvbnMuaCIKICNpbmNsdWRlICJhcGkvZGF0YWNoYW5uZWxpbnRlcmZhY2UuaCIKLSNpbmNsdWRl
ICJhcGkvZHRtZnNlbmRlcmludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS9mZWNfY29udHJvbGxl
ci5oIgogI2luY2x1ZGUgImFwaS9qc2VwLmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9y
dF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJhcGkvcnRjZXJyb3IuaCIKICNpbmNsdWRlICJhcGkvcnRjZXZlbnRsb2dvdXRwdXQu
aCIKQEAgLTk0LDcgKzk0LDYgQEAKICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L2JpdHJhdGVfc2V0
dGluZ3MuaCIKICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfY29udHJvbC5oIgogI2lu
Y2x1ZGUgImFwaS90dXJuY3VzdG9taXplci5oIgotI2luY2x1ZGUgImFwaS91bWFtZXRyaWNzLmgi
CiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfZmFjdG9yeV9p
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uZmlnLmgiCiAvLyBUT0RP
KGJ1Z3Mud2VicnRjLm9yZy82MzUzKTogY3JpY2tldDo6VmlkZW9DYXB0dXJlciBpcyBkZXByZWNh
dGVkIGFuZCBzaG91bGQKQEAgLTExNCw2ICsxMTMsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3Nv
Y2tldGFkZHJlc3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9z
eXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIGNsYXNzIFNTTElkZW50aXR5
OwpAQCAtMTYwLDcgKzE2MCw3IEBAIGVudW0gY2xhc3MgU2RwU2VtYW50aWNzIHsga1BsYW5CLCBr
VW5pZmllZFBsYW4gfTsKIAogY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2UgOiBwdWJsaWMg
cnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgcHVibGljOgotICAvLyBTZWUgaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL3dlYnJ0Yy1wYy8jc3RhdGUtZGVmaW5pdGlvbnMKKyAgLy8gU2VlIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvI2RvbS1ydGNzaWduYWxpbmdzdGF0ZQogICBlbnVtIFNp
Z25hbGluZ1N0YXRlIHsKICAgICBrU3RhYmxlLAogICAgIGtIYXZlTG9jYWxPZmZlciwKQEAgLTE3
MCwxMiArMTcwLDI0IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVibGljIHJ0
Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICAgIGtDbG9zZWQsCiAgIH07CiAKKyAgLy8gU2VlIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvI2RvbS1ydGNpY2VnYXRoZXJpbmdzdGF0ZQog
ICBlbnVtIEljZUdhdGhlcmluZ1N0YXRlIHsKICAgICBrSWNlR2F0aGVyaW5nTmV3LAogICAgIGtJ
Y2VHYXRoZXJpbmdHYXRoZXJpbmcsCiAgICAga0ljZUdhdGhlcmluZ0NvbXBsZXRlCiAgIH07CiAK
KyAgLy8gU2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvI2RvbS1ydGNwZWVyY29u
bmVjdGlvbnN0YXRlCisgIGVudW0gY2xhc3MgUGVlckNvbm5lY3Rpb25TdGF0ZSB7CisgICAga05l
dywKKyAgICBrQ29ubmVjdGluZywKKyAgICBrQ29ubmVjdGVkLAorICAgIGtEaXNjb25uZWN0ZWQs
CisgICAga0ZhaWxlZCwKKyAgICBrQ2xvc2VkLAorICB9OworCisgIC8vIFNlZSBodHRwczovL3cz
Yy5naXRodWIuaW8vd2VicnRjLXBjLyNkb20tcnRjaWNlY29ubmVjdGlvbnN0YXRlCiAgIGVudW0g
SWNlQ29ubmVjdGlvblN0YXRlIHsKICAgICBrSWNlQ29ubmVjdGlvbk5ldywKICAgICBrSWNlQ29u
bmVjdGlvbkNoZWNraW5nLApAQCAtMjgyLDcgKzI5NCw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICAvLyBvcmdhbml6
YXRpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uLCB3aGljaCBpc24ndCBzdGFibGUuIFNvIHdlCiAg
IC8vIG5lZWQgZ2V0dGVycyBhbmQgc2V0dGVycyBhdCBsZWFzdCBmb3IgZmllbGRzIHdoaWNoIGFw
cGxpY2F0aW9ucwogICAvLyBhcmUgaW50ZXJlc3RlZCBpbi4KLSAgc3RydWN0IFJUQ0NvbmZpZ3Vy
YXRpb24geworICBzdHJ1Y3QgUlRDX0VYUE9SVCBSVENDb25maWd1cmF0aW9uIHsKICAgICAvLyBU
aGlzIHN0cnVjdCBpcyBzdWJqZWN0IHRvIHJlb3JnYW5pemF0aW9uLCBib3RoIGZvciBuYW1pbmcK
ICAgICAvLyBjb25zaXN0ZW5jeSwgYW5kIHRvIGdyb3VwIHNldHRpbmdzIHRvIG1hdGNoIHdoZXJl
IHRoZXkgYXJlIHVzZWQKICAgICAvLyBpbiB0aGUgaW1wbGVtZW50YXRpb24uIFRvIGRvIHRoYXQs
IHdlIG5lZWQgZ2V0dGVyIGFuZCBzZXR0ZXIKQEAgLTMyOCw2ICszNDAsMjIgQEAgY2xhc3MgUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAg
ICAgICBtZWRpYV9jb25maWcudmlkZW8uZXhwZXJpbWVudF9jcHVfbG9hZF9lc3RpbWF0b3IgPSBl
bmFibGU7CiAgICAgfQogCisgICAgaW50IGF1ZGlvX3J0Y3BfcmVwb3J0X2ludGVydmFsX21zKCkg
Y29uc3QgeworICAgICAgcmV0dXJuIG1lZGlhX2NvbmZpZy5hdWRpby5ydGNwX3JlcG9ydF9pbnRl
cnZhbF9tczsKKyAgICB9CisgICAgdm9pZCBzZXRfYXVkaW9fcnRjcF9yZXBvcnRfaW50ZXJ2YWxf
bXMoaW50IGF1ZGlvX3J0Y3BfcmVwb3J0X2ludGVydmFsX21zKSB7CisgICAgICBtZWRpYV9jb25m
aWcuYXVkaW8ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPQorICAgICAgICAgIGF1ZGlvX3J0Y3Bf
cmVwb3J0X2ludGVydmFsX21zOworICAgIH0KKworICAgIGludCB2aWRlb19ydGNwX3JlcG9ydF9p
bnRlcnZhbF9tcygpIGNvbnN0IHsKKyAgICAgIHJldHVybiBtZWRpYV9jb25maWcudmlkZW8ucnRj
cF9yZXBvcnRfaW50ZXJ2YWxfbXM7CisgICAgfQorICAgIHZvaWQgc2V0X3ZpZGVvX3J0Y3BfcmVw
b3J0X2ludGVydmFsX21zKGludCB2aWRlb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcykgeworICAg
ICAgbWVkaWFfY29uZmlnLnZpZGVvLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0KKyAgICAgICAg
ICB2aWRlb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9tczsKKyAgICB9CisKICAgICBzdGF0aWMgY29u
c3QgaW50IGtVbmRlZmluZWQgPSAtMTsKICAgICAvLyBEZWZhdWx0IG1heGltdW0gbnVtYmVyIG9m
IHBhY2tldHMgaW4gdGhlIGF1ZGlvIGppdHRlciBidWZmZXIuCiAgICAgc3RhdGljIGNvbnN0IGlu
dCBrQXVkaW9KaXR0ZXJCdWZmZXJNYXhQYWNrZXRzID0gNTA7CkBAIC0zOTQsNiArNDIyLDcgQEAg
Y2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVy
ZmFjZSB7CiAgICAgLy8gVXNlIG5ldyBjb21iaW5lZCBhdWRpby92aWRlbyBiYW5kd2lkdGggZXN0
aW1hdGlvbj8KICAgICBhYnNsOjpvcHRpb25hbDxib29sPiBjb21iaW5lZF9hdWRpb192aWRlb19i
d2U7CiAKKyAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85ODkxKSAtIE1vdmUgdG8gY3J5cHRv
X29wdGlvbnMKICAgICAvLyBDYW4gYmUgdXNlZCB0byBkaXNhYmxlIERUTFMtU1JUUC4gVGhpcyBz
aG91bGQgbmV2ZXIgYmUgZG9uZSwgYnV0IGNhbiBiZQogICAgIC8vIHVzZWZ1bCBmb3IgdGVzdGlu
ZyBwdXJwb3NlcywgZm9yIGV4YW1wbGUgaW4gc2V0dGluZyB1cCBhIGxvb3BiYWNrIGNhbGwKICAg
ICAvLyB3aXRoIGEgc2luZ2xlIFBlZXJDb25uZWN0aW9uLgpAQCAtNDIxLDYgKzQ1MCw5IEBAIGNs
YXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZh
Y2UgewogICAgIC8vIGlmIGl0IGZhbGxzIGJlaGluZC4KICAgICBib29sIGF1ZGlvX2ppdHRlcl9i
dWZmZXJfZmFzdF9hY2NlbGVyYXRlID0gZmFsc2U7CiAKKyAgICAvLyBUaGUgbWluaW11bSBkZWxh
eSBpbiBtaWxsaXNlY29uZHMgZm9yIHRoZSBhdWRpbyBqaXR0ZXIgYnVmZmVyLgorICAgIGludCBh
dWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcyA9IDA7CisKICAgICAvLyBUaW1lb3V0IGlu
IG1pbGxpc2Vjb25kcyBiZWZvcmUgYW4gSUNFIGNhbmRpZGF0ZSBwYWlyIGlzIGNvbnNpZGVyZWQg
dG8gYmUKICAgICAvLyAibm90IHJlY2VpdmluZyIsIGFmdGVyIHdoaWNoIGEgbG93ZXIgcHJpb3Jp
dHkgY2FuZGlkYXRlIHBhaXIgbWF5IGJlCiAgICAgLy8gc2VsZWN0ZWQuCkBAIC01NTYsNiArNTg4
LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZDb3Vu
dEludGVyZmFjZSB7CiAgICAgLy8gRm9yIGFsbCBvdGhlciB1c2Vycywgc3BlY2lmeSBrVW5pZmll
ZFBsYW4uCiAgICAgU2RwU2VtYW50aWNzIHNkcF9zZW1hbnRpY3MgPSBTZHBTZW1hbnRpY3M6OmtQ
bGFuQjsKIAorICAgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk4OTEpIC0gTW92ZSB0byBjcnlw
dG9fb3B0aW9ucyBvciByZW1vdmUuCiAgICAgLy8gQWN0aXZlbHkgcmVzZXQgdGhlIFNSVFAgcGFy
YW1ldGVycyB3aGVuZXZlciB0aGUgRFRMUyB0cmFuc3BvcnRzCiAgICAgLy8gdW5kZXJuZWF0aCBh
cmUgcmVzZXQgZm9yIGV2ZXJ5IG9mZmVyL2Fuc3dlciBuZWdvdGlhdGlvbi4KICAgICAvLyBUaGlz
IGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgYSB3b3JrYXJvdW5kIGZvciBjcmJ1Zy5jb20vODM1OTU4
CkBAIC01NjMsNiArNTk2LDM0IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVi
bGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICAgIC8vIGNvcnJlY3RseS4gVGhpcyBmbGFn
IHdpbGwgYmUgZGVwcmVjYXRlZCBzb29uLiBEbyBub3QgcmVseSBvbiBpdC4KICAgICBib29sIGFj
dGl2ZV9yZXNldF9zcnRwX3BhcmFtcyA9IGZhbHNlOwogCisgICAgLy8gSWYgTWVkaWFUcmFuc3Bv
cnRGYWN0b3J5IGlzIHByb3ZpZGVkIGluIFBlZXJDb25uZWN0aW9uRmFjdG9yeSwgdGhpcyBmbGFn
CisgICAgLy8gaW5mb3JtcyBQZWVyQ29ubmVjdGlvbiB0aGF0IGl0IHNob3VsZCB1c2UgdGhlIE1l
ZGlhVHJhbnNwb3J0SW50ZXJmYWNlLgorICAgIC8vIEl0J3MgaW52YWxpZCB0byBzZXQgaXQgdG8g
fHRydWV8IGlmIHRoZSBNZWRpYVRyYW5zcG9ydEZhY3Rvcnkgd2Fzbid0CisgICAgLy8gcHJvdmlk
ZWQuCisgICAgYm9vbCB1c2VfbWVkaWFfdHJhbnNwb3J0ID0gZmFsc2U7CisKKyAgICAvLyBJZiBN
ZWRpYVRyYW5zcG9ydEZhY3RvcnkgaXMgcHJvdmlkZWQgaW4gUGVlckNvbm5lY3Rpb25GYWN0b3J5
LCB0aGlzIGZsYWcKKyAgICAvLyBpbmZvcm1zIFBlZXJDb25uZWN0aW9uIHRoYXQgaXQgc2hvdWxk
IHVzZSB0aGUgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UgZm9yCisgICAgLy8gZGF0YSBjaGFubmVs
cy4gIEl0J3MgaW52YWxpZCB0byBzZXQgaXQgdG8gfHRydWV8IGlmIHRoZQorICAgIC8vIE1lZGlh
VHJhbnNwb3J0RmFjdG9yeSB3YXNuJ3QgcHJvdmlkZWQuICBEYXRhIGNoYW5uZWxzIG92ZXIgbWVk
aWEKKyAgICAvLyB0cmFuc3BvcnQgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggUlRQIG9yIFNDVFAg
ZGF0YSBjaGFubmVscy4gIFNldHRpbmcKKyAgICAvLyBib3RoIHx1c2VfbWVkaWFfdHJhbnNwb3J0
X2Zvcl9kYXRhX2NoYW5uZWxzfCBhbmQKKyAgICAvLyB8ZW5hYmxlX3J0cF9kYXRhX2NoYW5uZWx8
IGlzIGludmFsaWQuCisgICAgYm9vbCB1c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5u
ZWxzID0gZmFsc2U7CisKKyAgICAvLyBEZWZpbmVzIGFkdmFuY2VkIG9wdGlvbmFsIGNyeXB0b2dy
YXBoaWMgc2V0dGluZ3MgcmVsYXRlZCB0byBTUlRQIGFuZAorICAgIC8vIGZyYW1lIGVuY3J5cHRp
b24gZm9yIG5hdGl2ZSBXZWJSVEMuIFNldHRpbmcgdGhpcyB3aWxsIG92ZXJ3cml0ZSBhbnkKKyAg
ICAvLyBzZXR0aW5ncyBzZXQgaW4gUGVlckNvbm5lY3Rpb25GYWN0b3J5ICh3aGljaCBpcyBkZXBy
ZWNhdGVkKS4KKyAgICBhYnNsOjpvcHRpb25hbDxDcnlwdG9PcHRpb25zPiBjcnlwdG9fb3B0aW9u
czsKKworICAgIC8vIENvbmZpZ3VyZSBpZiB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgU0RQIGF0dHJp
YnV0ZSBleHRtYXAtYWxsb3ctbWl4ZWQgaW4KKyAgICAvLyBvdXIgb2ZmZXIuIEFsdGhvdWdoIHdl
IGN1cnJlbnRseSBkbyBzdXBwb3J0IHRoaXMsIGl0J3Mgbm90IGluY2x1ZGVkIGluCisgICAgLy8g
b3VyIG9mZmVyIGJ5IGRlZmF1bHQgZHVlIHRvIGEgcHJldmlvdXMgYnVnIHRoYXQgY2F1c2VkIHRo
ZSBTRFAgcGFyc2VyIHRvCisgICAgLy8gYWJvcnQgcGFyc2luZyBpZiB0aGlzIGF0dHJpYnV0ZSB3
YXMgcHJlc2VudC4gVGhpcyBpcyBmaXhlZCBpbiBDaHJvbWUgNzEuCisgICAgLy8gVE9ETyh3ZWJy
dGM6OTk4NSk6IENoYW5nZSBkZWZhdWx0IHRvIHRydWUgb25jZSBzdWZmaWNpZW50IHRpbWUgaGFz
CisgICAgLy8gcGFzc2VkLgorICAgIGJvb2wgb2ZmZXJfZXh0bWFwX2FsbG93X21peGVkID0gZmFs
c2U7CisKICAgICAvLwogICAgIC8vIERvbid0IGZvcmdldCB0byB1cGRhdGUgb3BlcmF0b3I9PSBp
ZiBhZGRpbmcgc29tZXRoaW5nLgogICAgIC8vCkBAIC05NzIsMTEgKzEwMzMsMTMgQEAgY2xhc3Mg
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7
CiAgIHZpcnR1YWwgU2lnbmFsaW5nU3RhdGUgc2lnbmFsaW5nX3N0YXRlKCkgPSAwOwogCiAgIC8v
IFJldHVybnMgdGhlIGFnZ3JlZ2F0ZSBzdGF0ZSBvZiBhbGwgSUNFICphbmQqIERUTFMgdHJhbnNw
b3J0cy4KLSAgLy8gVE9ETyhkZWFkYmVlZik6IEltcGxlbWVudCAiUGVlckNvbm5lY3Rpb25TdGF0
ZSIgYWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZCwKLSAgLy8gdG8gYWdncmVnYXRlIElDRStEVExT
IHN0YXRlLCBhbmQgY2hhbmdlIHRoZSBzY29wZSBvZiBJY2VDb25uZWN0aW9uU3RhdGUgdG8KLSAg
Ly8gYmUganVzdCB0aGUgSUNFIGxheWVyLiBTZWU6IGNyYnVnLmNvbS93ZWJydGMvNjE0NQorICAv
LyBUT0RPKGpvbmFzb2xzc29uKTogUmVwbGFjZSB3aXRoIHN0YW5kYXJkaXplZF9pY2VfY29ubmVj
dGlvbl9zdGF0ZSBvbmNlIGl0CisgIC8vIGlzIHJlYWR5LCBzZWUgY3JidWcuY29tL3dlYnJ0Yy82
MTQ1CiAgIHZpcnR1YWwgSWNlQ29ubmVjdGlvblN0YXRlIGljZV9jb25uZWN0aW9uX3N0YXRlKCkg
PSAwOwogCisgIC8vIFJldHVybnMgdGhlIGFnZ3JlZ2F0ZWQgc3RhdGUgb2YgYWxsIElDRSBhbmQg
RFRMUyB0cmFuc3BvcnRzLgorICB2aXJ0dWFsIFBlZXJDb25uZWN0aW9uU3RhdGUgcGVlcl9jb25u
ZWN0aW9uX3N0YXRlKCk7CisKICAgdmlydHVhbCBJY2VHYXRoZXJpbmdTdGF0ZSBpY2VfZ2F0aGVy
aW5nX3N0YXRlKCkgPSAwOwogCiAgIC8vIFN0YXJ0cyBSdGNFdmVudExvZyB1c2luZyBleGlzdGlu
ZyBmaWxlLiBUYWtlcyBvd25lcnNoaXAgb2YgfGZpbGV8IGFuZApAQCAtMTA0NSw2ICsxMTA4LDEw
IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgewogICB2aXJ0dWFsIHZvaWQgT25JY2VD
b25uZWN0aW9uQ2hhbmdlKAogICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5l
Y3Rpb25TdGF0ZSBuZXdfc3RhdGUpID0gMDsKIAorICAvLyBDYWxsZWQgYW55IHRpbWUgdGhlIFBl
ZXJDb25uZWN0aW9uU3RhdGUgY2hhbmdlcy4KKyAgdmlydHVhbCB2b2lkIE9uQ29ubmVjdGlvbkNo
YW5nZSgKKyAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRl
IG5ld19zdGF0ZSkge30KKwogICAvLyBDYWxsZWQgYW55IHRpbWUgdGhlIEljZUdhdGhlcmluZ1N0
YXRlIGNoYW5nZXMuCiAgIHZpcnR1YWwgdm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZSgKICAgICAg
IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0ZSBuZXdfc3RhdGUpID0g
MDsKQEAgLTExNTYsNiArMTIyMyw3IEBAIHN0cnVjdCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlEZXBl
bmRlbmNpZXMgZmluYWwgewogICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dGYWN0b3J5SW50
ZXJmYWNlPiBldmVudF9sb2dfZmFjdG9yeTsKICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xs
ZXJGYWN0b3J5SW50ZXJmYWNlPiBmZWNfY29udHJvbGxlcl9mYWN0b3J5OwogICBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlPiBuZXR3b3JrX2NvbnRyb2xs
ZXJfZmFjdG9yeTsKKyAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gbWVk
aWFfdHJhbnNwb3J0X2ZhY3Rvcnk7CiB9OwogCiAvLyBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRl
cmZhY2UgaXMgdGhlIGZhY3RvcnkgaW50ZXJmYWNlIHVzZWQgZm9yIGNyZWF0aW5nCkBAIC0xMTc1
LDcgKzEyNDMsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UgOiBwdWJs
aWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgcHVibGljOgogICBjbGFzcyBPcHRpb25zIHsK
ICAgIHB1YmxpYzoKLSAgICBPcHRpb25zKCkgOiBjcnlwdG9fb3B0aW9ucyhydGM6OkNyeXB0b09w
dGlvbnM6Ok5vR2NtKCkpIHt9CisgICAgT3B0aW9ucygpIHt9CiAKICAgICAvLyBJZiBzZXQgdG8g
dHJ1ZSwgY3JlYXRlZCBQZWVyQ29ubmVjdGlvbnMgd29uJ3QgZW5mb3JjZSBhbnkgU1JUUAogICAg
IC8vIHJlcXVpcmVtZW50LCBhbGxvd2luZyB1bnNlY3VyZWQgbWVkaWEuIFNob3VsZCBvbmx5IGJl
IHVzZWQgZm9yCkBAIC0xMjA0LDcgKzEyNzIsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkZhY3Rv
cnlJbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgICAgcnRjOjpT
U0xQcm90b2NvbFZlcnNpb24gc3NsX21heF92ZXJzaW9uID0gcnRjOjpTU0xfUFJPVE9DT0xfRFRM
U18xMjsKIAogICAgIC8vIFNldHMgY3J5cHRvIHJlbGF0ZWQgb3B0aW9ucywgZS5nLiBlbmFibGVk
IGNpcGhlciBzdWl0ZXMuCi0gICAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zOwor
ICAgIENyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMgPSBDcnlwdG9PcHRpb25zOjpOb0djbSgp
OwogICB9OwogCiAgIC8vIFNldCB0aGUgb3B0aW9ucyB0byBiZSB1c2VkIGZvciBzdWJzZXF1ZW50
bHkgY3JlYXRlZCBQZWVyQ29ubmVjdGlvbnMuCkBAIC0xMzA3LDEzNyArMTM3NSw2IEBAIGNsYXNz
IFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50
ZXJmYWNlIHsKICAgflBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSgpIG92ZXJyaWRlID0g
ZGVmYXVsdDsKIH07CiAKLSNpZiBkZWZpbmVkKFVTRV9CVUlMVElOX1NXX0NPREVDUykKLS8vIENy
ZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UuCi0v
LwotLy8gVGhpcyBtZXRob2QgcmVsaWVzIG9uIHRoZSB0aHJlYWQgaXQncyBjYWxsZWQgb24gYXMg
dGhlICJzaWduYWxpbmcgdGhyZWFkIgotLy8gZm9yIHRoZSBQZWVyQ29ubmVjdGlvbkZhY3Rvcnkg
aXQgY3JlYXRlcy4KLS8vCi0vLyBBcyBzdWNoLCBpZiB0aGUgY3VycmVudCB0aHJlYWQgaXMgbm90
IGFscmVhZHkgcnVubmluZyBhbiBydGM6OlRocmVhZCBtZXNzYWdlCi0vLyBsb29wLCBhbiBhcHBs
aWNhdGlvbiB1c2luZyB0aGlzIG1ldGhvZCBtdXN0IGV2ZW50dWFsbHkgZWl0aGVyIGNhbGwKLS8v
IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCktPlJ1bigpLCBvciBjYWxsCi0vLyBydGM6OlRocmVhZDo6
Q3VycmVudCgpLT5Qcm9jZXNzTWVzc2FnZXMoKSB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uJ3Mgb3du
Ci0vLyBtZXNzYWdlIGxvb3AuCi1ydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0
b3J5SW50ZXJmYWNlPiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCi0gICAgcnRjOjpzY29w
ZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9m
YWN0b3J5KTsKLQotLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25uZWN0aW9uRmFj
dG9yeUludGVyZmFjZS4KLS8vCi0vLyB8bmV0d29ya190aHJlYWR8LCB8d29ya2VyX3RocmVhZHwg
YW5kIHxzaWduYWxpbmdfdGhyZWFkfCBhcmUKLS8vIHRoZSBvbmx5IG1hbmRhdG9yeSBwYXJhbWV0
ZXJzLgotLy8KLS8vIElmIG5vbi1udWxsLCBhIHJlZmVyZW5jZSBpcyBhZGRlZCB0byB8ZGVmYXVs
dF9hZG18LCBhbmQgb3duZXJzaGlwIG9mCi0vLyB8dmlkZW9fZW5jb2Rlcl9mYWN0b3J5fCBhbmQg
fHZpZGVvX2RlY29kZXJfZmFjdG9yeXwgaXMgdHJhbnNmZXJyZWQgdG8gdGhlCi0vLyByZXR1cm5l
ZCBmYWN0b3J5LgotLy8gVE9ETyhkZWFkYmVlZik6IFVzZSBydGM6OnNjb3BlZF9yZWZwdHI8PiBh
bmQgc3RkOjp1bmlxdWVfcHRyPD4gdG8gbWFrZSB0aGlzCi0vLyBvd25lcnNoaXAgdHJhbnNmZXIg
YW5kIHJlZiBjb3VudGluZyBtb3JlIG9idmlvdXMuCi1ydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCi0g
ICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJf
dGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgIEF1ZGlvRGV2
aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNv
ZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tl
dDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAg
IGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9y
eSk7Ci0KLS8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJ
bnRlcmZhY2Ugd2l0aCBvcHRpb25hbAotLy8gZXh0ZXJuYWwgYXVkaW8gbWl4ZWQgYW5kIGF1ZGlv
IHByb2Nlc3NpbmcgbW9kdWxlcy4KLS8vCi0vLyBJZiB8YXVkaW9fbWl4ZXJ8IGlzIG51bGwsIGFu
IGludGVybmFsIGF1ZGlvIG1peGVyIHdpbGwgYmUgY3JlYXRlZCBhbmQgdXNlZC4KLS8vIElmIHxh
dWRpb19wcm9jZXNzaW5nfCBpcyBudWxsLCBhbiBpbnRlcm5hbCBhdWRpbyBwcm9jZXNzaW5nIG1v
ZHVsZSB3aWxsIGJlCi0vLyBjcmVhdGVkIGFuZCB1c2VkLgotcnRjOjpzY29wZWRfcmVmcHRyPFBl
ZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5
KAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29y
a2VyX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBBdWRp
b0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
RW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIGNy
aWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwK
LSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2Zh
Y3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAot
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3Npbmcp
OwotCi0vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50
ZXJmYWNlIHdpdGggb3B0aW9uYWwKLS8vIGV4dGVybmFsIGF1ZGlvIG1peGVyLCBhdWRpbyBwcm9j
ZXNzaW5nLCBhbmQgZmVjIGNvbnRyb2xsZXIgbW9kdWxlcy4KLS8vCi0vLyBJZiB8YXVkaW9fbWl4
ZXJ8IGlzIG51bGwsIGFuIGludGVybmFsIGF1ZGlvIG1peGVyIHdpbGwgYmUgY3JlYXRlZCBhbmQg
dXNlZC4KLS8vIElmIHxhdWRpb19wcm9jZXNzaW5nfCBpcyBudWxsLCBhbiBpbnRlcm5hbCBhdWRp
byBwcm9jZXNzaW5nIG1vZHVsZSB3aWxsIGJlCi0vLyBjcmVhdGVkIGFuZCB1c2VkLgotLy8gSWYg
fGZlY19jb250cm9sbGVyX2ZhY3Rvcnl8IGlzIG51bGwsIGFuIGludGVybmFsIGZlYyBjb250cm9s
bGVyIG1vZHVsZSB3aWxsCi0vLyBiZSBjcmVhdGVkIGFuZCB1c2VkLgotLy8gSWYgfG5ldHdvcmtf
Y29udHJvbGxlcl9mYWN0b3J5fCBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSB1c2VkIGlmIGVuYWJs
ZWQgdmlhCi0vLyBmaWVsZCB0cmlhbC4KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICBydGM6
OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQs
Ci0gICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgQXVkaW9EZXZpY2VNb2R1
bGUqIGRlZmF1bHRfYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0
b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
RGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJS
dGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tl
dDo6V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAotICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhlciwKLSAgICBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nLAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4gZmVjX2NvbnRyb2xsZXJf
ZmFjdG9yeSwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5SW50
ZXJmYWNlPgotICAgICAgICBuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeSA9IG51bGxwdHIpOwot
I2VuZGlmCi0KLS8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3Rv
cnlJbnRlcmZhY2Ugd2l0aCBvcHRpb25hbCB2aWRlbwotLy8gY29kZWMgZmFjdG9yaWVzLiBUaGVz
ZSB2aWRlbyBmYWN0b3JpZXMgcmVwcmVzZW50cyBhbGwgdmlkZW8gY29kZWNzLCBpLmUuIG5vCi0v
LyBleHRyYSBpbnRlcm5hbCB2aWRlbyBjb2RlY3Mgd2lsbCBiZSBhZGRlZC4KLS8vIFdoZW4gYnVp
bGRpbmcgV2ViUlRDIHdpdGggcnRjX3VzZV9idWlsdGluX3N3X2NvZGVjcyA9IGZhbHNlLCB0aGlz
IGlzIHRoZQotLy8gb25seSBhdmFpbGFibGUgQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5IG92
ZXJsb2FkLgotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFj
ZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3Jr
X3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKLSAgICBydGM6OlRocmVh
ZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZXZpY2VN
b2R1bGU+IGRlZmF1bHRfYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJG
YWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1
ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3Rvcnks
Ci0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAotICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcpOwotCi0j
aWYgZGVmaW5lZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCi0vLyBDcmVhdGUgYSBuZXcgaW5zdGFu
Y2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHdpdGggZXh0ZXJuYWwgYXVkaW8K
LS8vIG1peGVyLgotLy8KLS8vIElmIHxhdWRpb19taXhlcnwgaXMgbnVsbCwgYW4gaW50ZXJuYWwg
YXVkaW8gbWl4ZXIgd2lsbCBiZSBjcmVhdGVkIGFuZCB1c2VkLgotcnRjOjpzY29wZWRfcmVmcHRy
PFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KLUNyZWF0ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeVdpdGhBdWRpb01peGVyKAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAg
ICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5n
X3RocmVhZCwKLSAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCi0gICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwK
LSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVv
X2VuY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5
KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4
ZXI+IGF1ZGlvX21peGVyKTsKLQotLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25u
ZWN0aW9uRmFjdG9yeUludGVyZmFjZS4KLS8vIFNhbWUgdGhyZWFkIGlzIHVzZWQgYXMgd29ya2Vy
IGFuZCBuZXR3b3JrIHRocmVhZC4KLWlubGluZSBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5l
Y3Rpb25GYWN0b3J5SW50ZXJmYWNlPgotQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAg
IHJ0Yzo6VGhyZWFkKiB3b3JrZXJfYW5kX25ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFk
KiBzaWduYWxpbmdfdGhyZWFkLAotICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwK
LSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rl
cl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBh
dWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFj
dG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVj
b2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSkgewotICByZXR1cm4gQ3JlYXRlUGVl
ckNvbm5lY3Rpb25GYWN0b3J5KAotICAgICAgd29ya2VyX2FuZF9uZXR3b3JrX3RocmVhZCwgd29y
a2VyX2FuZF9uZXR3b3JrX3RocmVhZCwgc2lnbmFsaW5nX3RocmVhZCwKLSAgICAgIGRlZmF1bHRf
YWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICAg
IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KTsKLX0KLSNlbmRp
ZgotCiAvLyBUaGlzIGlzIGEgbG93ZXItbGV2ZWwgdmVyc2lvbiBvZiB0aGUgQ3JlYXRlUGVlckNv
bm5lY3Rpb25GYWN0b3J5IGZ1bmN0aW9ucwogLy8gYWJvdmUuIEl0J3MgaW1wbGVtZW50ZWQgaW4g
dGhlICJwZWVyY29ubmVjdGlvbiIgYnVpbGQgdGFyZ2V0LCB3aGVyZWFzIHRoZQogLy8gYWJvdmUg
bWV0aG9kcyBhcmUgb25seSBpbXBsZW1lbnRlZCBpbiB0aGUgYnJvYWRlciAibGliamluZ2xlX3Bl
ZXJjb25uZWN0aW9uIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3Byb3h5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3Byb3h5LmNjCmluZGV4IGM4NmJkZGZhOGIxYTk0NmQwMTBjM2VmOTJl
N2VmYjQwZGY4ODc3ZjAuLmU2NjgyODViYTI5YmE2MWQzYTcyNzU5OTBkZWE4OTBmNzZkMGUyN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9wcm94eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvcHJveHkuY2MKQEAgLTE0LDcgKzE0LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1l
c3BhY2UgaW50ZXJuYWwgewogCiBTeW5jaHJvbm91c01ldGhvZENhbGw6OlN5bmNocm9ub3VzTWV0
aG9kQ2FsbChydGM6Ok1lc3NhZ2VIYW5kbGVyKiBwcm94eSkKLSAgICA6IGVfKCksIHByb3h5Xyhw
cm94eSkge30KKyAgICA6IHByb3h5Xyhwcm94eSkge30KIAogU3luY2hyb25vdXNNZXRob2RDYWxs
Ojp+U3luY2hyb25vdXNNZXRob2RDYWxsKCkgPSBkZWZhdWx0OwogCkBAIC0yMywxNSArMjMsMTQg
QEAgdm9pZCBTeW5jaHJvbm91c01ldGhvZENhbGw6Okludm9rZShjb25zdCBydGM6OkxvY2F0aW9u
JiBwb3N0ZWRfZnJvbSwKICAgaWYgKHQtPklzQ3VycmVudCgpKSB7CiAgICAgcHJveHlfLT5Pbk1l
c3NhZ2UobnVsbHB0cik7CiAgIH0gZWxzZSB7Ci0gICAgZV8ucmVzZXQobmV3IHJ0Yzo6RXZlbnQo
ZmFsc2UsIGZhbHNlKSk7CiAgICAgdC0+UG9zdChwb3N0ZWRfZnJvbSwgdGhpcywgMCk7Ci0gICAg
ZV8tPldhaXQocnRjOjpFdmVudDo6a0ZvcmV2ZXIpOworICAgIGVfLldhaXQocnRjOjpFdmVudDo6
a0ZvcmV2ZXIpOwogICB9CiB9CiAKIHZvaWQgU3luY2hyb25vdXNNZXRob2RDYWxsOjpPbk1lc3Nh
Z2UocnRjOjpNZXNzYWdlKikgewogICBwcm94eV8tPk9uTWVzc2FnZShudWxscHRyKTsKLSAgZV8t
PlNldCgpOworICBlXy5TZXQoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcHJv
eHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wcm94
eS5oCmluZGV4IGM4OTYyZWZlZDdjOGQyYzkwM2VlYmU3MGVjMGY1NTA5OTI3ZjE5N2UuLjk5MTYw
NTE3ZGVlYmQ3OWNkMzNkMzcxZmViZTIxYzRhNzcxMGNhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wcm94eS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wcm94eS5oCkBAIC0xNDMs
NyArMTQzLDcgQEAgY2xhc3MgU3luY2hyb25vdXNNZXRob2RDYWxsIDogcHVibGljIHJ0Yzo6TWVz
c2FnZURhdGEsCiAgcHJpdmF0ZToKICAgdm9pZCBPbk1lc3NhZ2UocnRjOjpNZXNzYWdlKikgb3Zl
cnJpZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6RXZlbnQ+IGVfOworICBydGM6OkV2ZW50
IGVfOwogICBydGM6Ok1lc3NhZ2VIYW5kbGVyKiBwcm94eV87CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwX2hlYWRlcnMu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwX2hl
YWRlcnMuY2MKaW5kZXggZGE3ZjFlYTlmZDQwMDJmNzcyMzQyMzkwNTgxMTZlOWQ4NjdiZmRiYS4u
YmY5NzNiNmZlNTc3MWQ0MjM2MWFkYjgzNjliMzBjZDliMmIzNzJjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cF9oZWFkZXJzLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBf
aGVhZGVycy5jYwpAQCAtMTAsMTQgKzEwLDYgQEAKIAogI2luY2x1ZGUgImFwaS9ydHBfaGVhZGVy
cy5oIgogCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1
ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLQotI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCi0KIG5hbWVzcGFj
ZSB3ZWJydGMgewogCiBSVFBIZWFkZXJFeHRlbnNpb246OlJUUEhlYWRlckV4dGVuc2lvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
cnRwX2hlYWRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9ydHBfaGVhZGVycy5oCmluZGV4IDQxZjM5ODg4YjgwODFhNmJmYjkzNTkwN2YzYjJjZDRh
NGQ3ODNkYmEuLmM3NjY4OTliOWZkODhmNGEyYzJlZTkwOTBmN2Y4Y2I2OWU5NDYyYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBf
aGVhZGVycy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9ydHBfaGVhZGVycy5oCkBAIC0xMiwyMCArMTIsMTcgQEAKICNkZWZpbmUgQVBJX1JUUF9I
RUFERVJTX0hfCiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNp
bmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgog
CiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92
aWV3LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgiCiAjaW5jbHVkZSAiYXBp
L3ZpZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19m
cmFtZV9tYXJraW5nLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3JvdGF0aW9uLmgiCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3RpbWluZy5oIgotCiAjaW5jbHVkZSAiY29tbW9uX3R5
cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIApAQCAtMTMxLDYgKzEyOCw4IEBAIHN0cnVjdCBSVFBIZWFkZXJFeHRlbnNpb24gewog
ICAvLyBGb3IgaWRlbnRpZnlpbmcgdGhlIG1lZGlhIHNlY3Rpb24gdXNlZCB0byBpbnRlcnByZXQg
dGhpcyBSVFAgcGFja2V0LiBTZWUKICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2Ry
YWZ0LWlldGYtbW11c2ljLXNkcC1idW5kbGUtbmVnb3RpYXRpb24tMzgKICAgTWlkIG1pZDsKKwor
ICBhYnNsOjpvcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvcl9zcGFjZTsKIH07CiAKIHN0cnVjdCBS
VFBIZWFkZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3J0cHBhcmFtZXRlcnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwcGFyYW1ldGVycy5jYwppbmRleCA5OGNlZDliM2VhZDM1
YmVkOGY3YzliMzdkNGQyMTBjNWFlYTZiZmIwLi4wNjNkMTA2YTAwYTU5MDE0OTJhYjE3YWE4YTBm
YWQwMTU3MWVmZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvcnRwcGFyYW1ldGVycy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwcGFyYW1ldGVycy5jYwpAQCAtMTIsNyArMTIs
NyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvcnRwcGFyYW1ldGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3J0cHBhcmFtZXRlcnMuaAppbmRleCA2NzhhYzAyYzRiN2RhN2RjNWEzYmNh
YTUwMTFlMzk0NTJlN2VlMTk3Li5iYWRkYTA3NDU5OWE5M2JiNWRhMzI1YmJlZmRkNzgzYjA3ZmYx
YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvcnRwcGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9ydHBwYXJhbWV0ZXJzLmgKQEAgLTExLDEyICsxMSwxNCBAQAogI2lm
bmRlZiBBUElfUlRQUEFSQU1FVEVSU19IXwogI2RlZmluZSBBUElfUlRQUEFSQU1FVEVSU19IXwog
CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHVub3Jk
ZXJlZF9tYXA+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRp
b25hbC5oIgogI2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
c3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTQwNCw2ICs0
MDYsMTQgQEAgc3RydWN0IFJ0cEVuY29kaW5nUGFyYW1ldGVycyB7CiAgIC8vIGJpdHJhdGUgcHJp
b3JpdHkuCiAgIGRvdWJsZSBiaXRyYXRlX3ByaW9yaXR5ID0ga0RlZmF1bHRCaXRyYXRlUHJpb3Jp
dHk7CiAKKyAgLy8gVGhlIHJlbGF0aXZlIERpZmZTZXJ2IENvZGUgUG9pbnQgcHJpb3JpdHkgZm9y
IHRoaXMgZW5jb2RpbmcsIGFsbG93aW5nCisgIC8vIHBhY2tldHMgdG8gYmUgbWFya2VkIHJlbGF0
aXZlbHkgaGlnaGVyIG9yIGxvd2VyIHdpdGhvdXQgYWZmZWN0aW5nCisgIC8vIGJhbmR3aWR0aCBh
bGxvY2F0aW9ucy4gU2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtZHNjcC1leHAvIC4g
TkIKKyAgLy8gd2UgZm9sbG93IGNocm9taXVtJ3MgdHJhbnNsYXRpb24gb2YgdGhlIGFsbG93ZWQg
c3RyaW5nIGVudW0gdmFsdWVzIGZvcgorICAvLyB0aGlzIGZpZWxkIHRvIDEuMCwgMC41LCBldCBj
ZXRlcmEsIHNpbWlsYXIgdG8gYml0cmF0ZV9wcmlvcml0eSBhYm92ZS4KKyAgLy8gVE9ETyhodHRw
Oi8vY3JidWcuY29tL3dlYnJ0Yy84NjMwKTogSW1wbGVtZW50IHRoaXMgcGVyIGVuY29kaW5nIHBh
cmFtZXRlci4KKyAgZG91YmxlIG5ldHdvcmtfcHJpb3JpdHkgPSBrRGVmYXVsdEJpdHJhdGVQcmlv
cml0eTsKKwogICAvLyBJbmRpY2F0ZXMgdGhlIHByZWZlcnJlZCBkdXJhdGlvbiBvZiBtZWRpYSBy
ZXByZXNlbnRlZCBieSBhIHBhY2tldCBpbgogICAvLyBtaWxsaXNlY29uZHMgZm9yIHRoaXMgZW5j
b2RpbmcuIElmIHNldCwgdGhpcyB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZQogICAvLyBw
dGltZSBzZXQgaW4gdGhlIFJ0cENvZGVjUGFyYW1ldGVycy4gVGhpcyBjb3VsZCBoYXBwZW4gaWYg
U0RQIG5lZ290aWF0aW9uCkBAIC00NzEsNyArNDgxLDggQEAgc3RydWN0IFJ0cEVuY29kaW5nUGFy
YW1ldGVycyB7CiAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSdHBFbmNvZGluZ1BhcmFtZXRlcnMm
IG8pIGNvbnN0IHsKICAgICByZXR1cm4gc3NyYyA9PSBvLnNzcmMgJiYgY29kZWNfcGF5bG9hZF90
eXBlID09IG8uY29kZWNfcGF5bG9hZF90eXBlICYmCiAgICAgICAgICAgIGZlYyA9PSBvLmZlYyAm
JiBydHggPT0gby5ydHggJiYgZHR4ID09IG8uZHR4ICYmCi0gICAgICAgICAgIGJpdHJhdGVfcHJp
b3JpdHkgPT0gby5iaXRyYXRlX3ByaW9yaXR5ICYmIHB0aW1lID09IG8ucHRpbWUgJiYKKyAgICAg
ICAgICAgYml0cmF0ZV9wcmlvcml0eSA9PSBvLmJpdHJhdGVfcHJpb3JpdHkgJiYKKyAgICAgICAg
ICAgbmV0d29ya19wcmlvcml0eSA9PSBvLm5ldHdvcmtfcHJpb3JpdHkgJiYgcHRpbWUgPT0gby5w
dGltZSAmJgogICAgICAgICAgICBtYXhfYml0cmF0ZV9icHMgPT0gby5tYXhfYml0cmF0ZV9icHMg
JiYKICAgICAgICAgICAgbWluX2JpdHJhdGVfYnBzID09IG8ubWluX2JpdHJhdGVfYnBzICYmCiAg
ICAgICAgICAgIG1heF9mcmFtZXJhdGUgPT0gby5tYXhfZnJhbWVyYXRlICYmCkBAIC02MDcsNyAr
NjE4LDcgQEAgc3RydWN0IFJ0Y3BQYXJhbWV0ZXJzIGZpbmFsIHsKICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFJ0Y3BQYXJhbWV0ZXJzJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9
CiB9OwogCi1zdHJ1Y3QgUnRwUGFyYW1ldGVycyB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBSdHBQYXJh
bWV0ZXJzIHsKICAgUnRwUGFyYW1ldGVycygpOwogICBSdHBQYXJhbWV0ZXJzKGNvbnN0IFJ0cFBh
cmFtZXRlcnMmKTsKICAgflJ0cFBhcmFtZXRlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBzZW5kZXJpbnRlcmZhY2UuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBzZW5kZXJp
bnRlcmZhY2UuaAppbmRleCA5NTU0YzFjNGRhNzk3MzU1NDdjYWViZDI4NDAxODE2OTk3NDIwZDhj
Li43Yzk0YzIxNmU2NGVmYmViNWM0NjI4YmViZTY5MjVhNmY1MDIzZTE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwc2VuZGVyaW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3J0cHNlbmRlcmludGVyZmFjZS5oCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiYXBp
L3Byb3h5LmgiCiAjaW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCiAjaW5jbHVkZSAiYXBpL3J0cHBh
cmFtZXRlcnMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3JlZmNvdW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIu
aCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3J0cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmNjCmluZGV4
IGQ4MzMzMzlmYTY2NDY4NTBmYWE5YmUyMmU5OTgwNmFiZDgxYzNlYmUuLmU2MmIwMTRjNjU2NDMz
NWY3MDY5NDExNWRmOTg4NjYwYWFjNDM1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVyZmFjZS5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwdHJh
bnNjZWl2ZXJpbnRlcmZhY2UuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgImFwaS9y
dHB0cmFuc2NlaXZlcmludGVyZmFjZS5oIgogCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBSdHBUcmFuc2NlaXZlckluaXQ6OlJ0cFRyYW5zY2Vp
dmVySW5pdCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVyZmFjZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHRyYW5zY2VpdmVyaW50
ZXJmYWNlLmgKaW5kZXggMzAxYTM4MDlmOGI0ZGVmM2U3NmQ1Njk1MDgwNjRiNDAzZDI1OGE2Yi4u
YzAxZmRhZmI4MzIzY2Y5MWJiYjU1N2ZkMmJmMjcyYTQ1ZWU2MTE1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHRyYW5zY2VpdmVy
aW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3J0cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmgKQEAgLTE2LDkgKzE2LDEyIEBACiAKICNp
bmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcu
aCIKKyNpbmNsdWRlICJhcGkvbWVkaWF0eXBlcy5oIgorI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
YXBpL3J0cHNlbmRlcmludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50Lmgi
CisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9zY29wZWRfcmVmcHRyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvc2NvcGVkX3JlZnB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5OTNlMDMyY2M3MjQ5
YWUwNjBiYmY4MzI5MjEzNWQyZTdmYzI5NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc2NvcGVkX3JlZnB0ci5oCkBAIC0w
LDAgKzEsMTYyIEBACisvKgorICogIENvcHlyaWdodCAyMDExIFRoZSBXZWJSVEMgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisvLyBPcmlnaW5hbGx5IHRoZXNlIGNs
YXNzZXMgYXJlIGZyb20gQ2hyb21pdW0uCisvLyBodHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3
dmMvY2hyb21lL3RydW5rL3NyYy9iYXNlL21lbW9yeS9yZWZfY291bnRlZC5oP3ZpZXc9bWFya3Vw
CisKKy8vCisvLyBBIHNtYXJ0IHBvaW50ZXIgY2xhc3MgZm9yIHJlZmVyZW5jZSBjb3VudGVkIG9i
amVjdHMuICBVc2UgdGhpcyBjbGFzcyBpbnN0ZWFkCisvLyBvZiBjYWxsaW5nIEFkZFJlZiBhbmQg
UmVsZWFzZSBtYW51YWxseSBvbiBhIHJlZmVyZW5jZSBjb3VudGVkIG9iamVjdCB0bworLy8gYXZv
aWQgY29tbW9uIG1lbW9yeSBsZWFrcyBjYXVzZWQgYnkgZm9yZ2V0dGluZyB0byBSZWxlYXNlIGFu
IG9iamVjdAorLy8gcmVmZXJlbmNlLiAgU2FtcGxlIHVzYWdlOgorLy8KKy8vICAgY2xhc3MgTXlG
b28gOiBwdWJsaWMgUmVmQ291bnRlZDxNeUZvbz4geworLy8gICAgLi4uCisvLyAgIH07CisvLwor
Ly8gICB2b2lkIHNvbWVfZnVuY3Rpb24oKSB7CisvLyAgICAgc2NvcGVkX3JlZnB0cjxNeUZvbz4g
Zm9vID0gbmV3IE15Rm9vKCk7CisvLyAgICAgZm9vLT5NZXRob2QocGFyYW0pOworLy8gICAgIC8v
IHxmb298IGlzIHJlbGVhc2VkIHdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zCisvLyAgIH0KKy8v
CisvLyAgIHZvaWQgc29tZV9vdGhlcl9mdW5jdGlvbigpIHsKKy8vICAgICBzY29wZWRfcmVmcHRy
PE15Rm9vPiBmb28gPSBuZXcgTXlGb28oKTsKKy8vICAgICAuLi4KKy8vICAgICBmb28gPSBudWxs
cHRyOyAgLy8gZXhwbGljaXRseSByZWxlYXNlcyB8Zm9vfAorLy8gICAgIC4uLgorLy8gICAgIGlm
IChmb28pCisvLyAgICAgICBmb28tPk1ldGhvZChwYXJhbSk7CisvLyAgIH0KKy8vCisvLyBUaGUg
YWJvdmUgZXhhbXBsZXMgc2hvdyBob3cgc2NvcGVkX3JlZnB0cjxUPiBhY3RzIGxpa2UgYSBwb2lu
dGVyIHRvIFQuCisvLyBHaXZlbiB0d28gc2NvcGVkX3JlZnB0cjxUPiBjbGFzc2VzLCBpdCBpcyBh
bHNvIHBvc3NpYmxlIHRvIGV4Y2hhbmdlCisvLyByZWZlcmVuY2VzIGJldHdlZW4gdGhlIHR3byBv
YmplY3RzLCBsaWtlIHNvOgorLy8KKy8vICAgeworLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+
IGEgPSBuZXcgTXlGb28oKTsKKy8vICAgICBzY29wZWRfcmVmcHRyPE15Rm9vPiBiOworLy8KKy8v
ICAgICBiLnN3YXAoYSk7CisvLyAgICAgLy8gbm93LCB8YnwgcmVmZXJlbmNlcyB0aGUgTXlGb28g
b2JqZWN0LCBhbmQgfGF8IHJlZmVyZW5jZXMgbnVsbC4KKy8vICAgfQorLy8KKy8vIFRvIG1ha2Ug
Ym90aCB8YXwgYW5kIHxifCBpbiB0aGUgYWJvdmUgZXhhbXBsZSByZWZlcmVuY2UgdGhlIHNhbWUg
TXlGb28KKy8vIG9iamVjdCwgc2ltcGx5IHVzZSB0aGUgYXNzaWdubWVudCBvcGVyYXRvcjoKKy8v
CisvLyAgIHsKKy8vICAgICBzY29wZWRfcmVmcHRyPE15Rm9vPiBhID0gbmV3IE15Rm9vKCk7Cisv
LyAgICAgc2NvcGVkX3JlZnB0cjxNeUZvbz4gYjsKKy8vCisvLyAgICAgYiA9IGE7CisvLyAgICAg
Ly8gbm93LCB8YXwgYW5kIHxifCBlYWNoIG93biBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBNeUZv
byBvYmplY3QuCisvLyAgIH0KKy8vCisKKyNpZm5kZWYgQVBJX1NDT1BFRF9SRUZQVFJfSF8KKyNk
ZWZpbmUgQVBJX1NDT1BFRF9SRUZQVFJfSF8KKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRl
IDx1dGlsaXR5PgorCituYW1lc3BhY2UgcnRjIHsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitjbGFz
cyBzY29wZWRfcmVmcHRyIHsKKyBwdWJsaWM6CisgIHNjb3BlZF9yZWZwdHIoKSA6IHB0cl8obnVs
bHB0cikge30KKworICBzY29wZWRfcmVmcHRyKFQqIHApIDogcHRyXyhwKSB7ICAvLyBOT0xJTlQo
cnVudGltZS9leHBsaWNpdCkKKyAgICBpZiAocHRyXykKKyAgICAgIHB0cl8tPkFkZFJlZigpOwor
ICB9CisKKyAgc2NvcGVkX3JlZnB0cihjb25zdCBzY29wZWRfcmVmcHRyPFQ+JiByKSA6IHB0cl8o
ci5wdHJfKSB7CisgICAgaWYgKHB0cl8pCisgICAgICBwdHJfLT5BZGRSZWYoKTsKKyAgfQorCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBzY29wZWRfcmVmcHRyKGNvbnN0IHNjb3BlZF9yZWZw
dHI8VT4mIHIpIDogcHRyXyhyLmdldCgpKSB7CisgICAgaWYgKHB0cl8pCisgICAgICBwdHJfLT5B
ZGRSZWYoKTsKKyAgfQorCisgIC8vIE1vdmUgY29uc3RydWN0b3JzLgorICBzY29wZWRfcmVmcHRy
KHNjb3BlZF9yZWZwdHI8VD4mJiByKSA6IHB0cl8oci5yZWxlYXNlKCkpIHt9CisKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFU+CisgIHNjb3BlZF9yZWZwdHIoc2NvcGVkX3JlZnB0cjxVPiYmIHIpIDog
cHRyXyhyLnJlbGVhc2UoKSkge30KKworICB+c2NvcGVkX3JlZnB0cigpIHsKKyAgICBpZiAocHRy
XykKKyAgICAgIHB0cl8tPlJlbGVhc2UoKTsKKyAgfQorCisgIFQqIGdldCgpIGNvbnN0IHsgcmV0
dXJuIHB0cl87IH0KKyAgb3BlcmF0b3IgVCooKSBjb25zdCB7IHJldHVybiBwdHJfOyB9CisgIFQq
IG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBwdHJfOyB9CisKKyAgLy8gUmV0dXJucyB0aGUg
KHBvc3NpYmx5IG51bGwpIHJhdyBwb2ludGVyLCBhbmQgbWFrZXMgdGhlIHNjb3BlZF9yZWZwdHIg
aG9sZCBhCisgIC8vIG51bGwgcG9pbnRlciwgYWxsIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHJlZmVy
ZW5jZSBjb3VudCBvZiB0aGUgdW5kZXJseWluZworICAvLyBwb2ludGVkLXRvIG9iamVjdC4gVGhl
IG9iamVjdCBpcyBzdGlsbCByZWZlcmVuY2UgY291bnRlZCwgYW5kIHRoZSBjYWxsZXIgb2YKKyAg
Ly8gcmVsZWFzZSgpIGlzIG5vdyB0aGUgcHJvdWQgb3duZXIgb2Ygb25lIHJlZmVyZW5jZSwgc28g
aXQgaXMgcmVzcG9uc2libGUgZm9yCisgIC8vIGNhbGxpbmcgUmVsZWFzZSgpIG9uY2Ugb24gdGhl
IG9iamVjdCB3aGVuIG5vIGxvbmdlciB1c2luZyBpdC4KKyAgVCogcmVsZWFzZSgpIHsKKyAgICBU
KiByZXRWYWwgPSBwdHJfOworICAgIHB0cl8gPSBudWxscHRyOworICAgIHJldHVybiByZXRWYWw7
CisgIH0KKworICBzY29wZWRfcmVmcHRyPFQ+JiBvcGVyYXRvcj0oVCogcCkgeworICAgIC8vIEFk
ZFJlZiBmaXJzdCBzbyB0aGF0IHNlbGYgYXNzaWdubWVudCBzaG91bGQgd29yaworICAgIGlmIChw
KQorICAgICAgcC0+QWRkUmVmKCk7CisgICAgaWYgKHB0cl8pCisgICAgICBwdHJfLT5SZWxlYXNl
KCk7CisgICAgcHRyXyA9IHA7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgc2NvcGVkX3Jl
ZnB0cjxUPiYgb3BlcmF0b3I9KGNvbnN0IHNjb3BlZF9yZWZwdHI8VD4mIHIpIHsKKyAgICByZXR1
cm4gKnRoaXMgPSByLnB0cl87CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc2Nv
cGVkX3JlZnB0cjxUPiYgb3BlcmF0b3I9KGNvbnN0IHNjb3BlZF9yZWZwdHI8VT4mIHIpIHsKKyAg
ICByZXR1cm4gKnRoaXMgPSByLmdldCgpOworICB9CisKKyAgc2NvcGVkX3JlZnB0cjxUPiYgb3Bl
cmF0b3I9KHNjb3BlZF9yZWZwdHI8VD4mJiByKSB7CisgICAgc2NvcGVkX3JlZnB0cjxUPihzdGQ6
Om1vdmUocikpLnN3YXAoKnRoaXMpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPgorICBzY29wZWRfcmVmcHRyPFQ+JiBvcGVyYXRvcj0oc2NvcGVkX3Jl
ZnB0cjxVPiYmIHIpIHsKKyAgICBzY29wZWRfcmVmcHRyPFQ+KHN0ZDo6bW92ZShyKSkuc3dhcCgq
dGhpcyk7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgdm9pZCBzd2FwKFQqKiBwcCkgewor
ICAgIFQqIHAgPSBwdHJfOworICAgIHB0cl8gPSAqcHA7CisgICAgKnBwID0gcDsKKyAgfQorCisg
IHZvaWQgc3dhcChzY29wZWRfcmVmcHRyPFQ+JiByKSB7IHN3YXAoJnIucHRyXyk7IH0KKworIHBy
b3RlY3RlZDoKKyAgVCogcHRyXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlm
ICAvLyBBUElfU0NPUEVEX1JFRlBUUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc3RhdHMvcnRjc3RhdHMuaAppbmRl
eCAxNzA1ZjZhYjU4ZWU3OWRkZjY5YTVhNTc2ZjY1ZjcyZDJlYWEwZjZlLi43ZmQwZDg0ZTBiYjE0
NTU4MWI3OGM1YjIwNTlmN2Q5ODBhNjU5NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc3RhdHMvcnRjc3RhdHMuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc3RhdHMvcnRjc3RhdHMu
aApAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC00Nyw3ICs0OCw3IEBAIGNsYXNzIFJUQ1N0YXRzTWVt
YmVySW50ZXJmYWNlOwogLy8gZm9yIChjb25zdCBSVENTdGF0c01lbWJlckludGVyZmFjZSogbWVt
YmVyIDogZm9vLk1lbWJlcnMoKSkgewogLy8gICBwcmludGYoIiVzID0gJXNcbiIsIG1lbWJlci0+
bmFtZSgpLCBtZW1iZXItPlZhbHVlVG9TdHJpbmcoKS5jX3N0cigpKTsKIC8vIH0KLWNsYXNzIFJU
Q1N0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDU3RhdHMgewogIHB1YmxpYzoKICAgUlRDU3Rh
dHMoY29uc3Qgc3RkOjpzdHJpbmcmIGlkLCBpbnQ2NF90IHRpbWVzdGFtcF91cykKICAgICAgIDog
aWRfKGlkKSwgdGltZXN0YW1wX3VzXyh0aW1lc3RhbXBfdXMpIHt9CkBAIC0yNDcsNyArMjQ4LDcg
QEAgY2xhc3MgUlRDU3RhdHNNZW1iZXJJbnRlcmZhY2UgewogLy8gKHVuZGVmaW5lZCByZWZlcmVu
Y2UgdG8gfGtUeXBlfCkuIFRoZSBzdXBwb3J0ZWQgdHlwZXMgYXJlIHRoZSBvbmVzIGRlc2NyaWJl
ZAogLy8gYnkgfFJUQ1N0YXRzTWVtYmVySW50ZXJmYWNlOjpUeXBlfC4KIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotY2xhc3MgUlRDU3RhdHNNZW1iZXIgOiBwdWJsaWMgUlRDU3RhdHNNZW1iZXJJbnRl
cmZhY2UgeworY2xhc3MgUlRDX0VYUE9SVCBSVENTdGF0c01lbWJlciA6IHB1YmxpYyBSVENTdGF0
c01lbWJlckludGVyZmFjZSB7CiAgcHVibGljOgogICBzdGF0aWMgY29uc3QgVHlwZSBrVHlwZTsK
IApAQCAtMjk0LDE1ICsyOTUsNiBAQCBjbGFzcyBSVENTdGF0c01lbWJlciA6IHB1YmxpYyBSVENT
dGF0c01lbWJlckludGVyZmFjZSB7CiAgICAgaXNfZGVmaW5lZF8gPSB0cnVlOwogICAgIHJldHVy
biB2YWx1ZV87CiAgIH0KLSAgVCYgb3BlcmF0b3I9KGNvbnN0IFJUQ1N0YXRzTWVtYmVyPFQ+JiBv
dGhlcikgewotICAgIFJUQ19EQ0hFQ0sob3RoZXIuaXNfZGVmaW5lZF8pOwotICAgIC8vIFNob3Vs
ZG4ndCBiZSBhdHRlbXB0aW5nIHRvIGFzc2lnbiBhbiBSVENOb25TdGFuZGFyZFN0YXRzTWVtYmVy
IHRvIGFuCi0gICAgLy8gUlRDU3RhdHNNZW1iZXIgb3IgdmljZSB2ZXJzYS4KLSAgICBSVENfRENI
RUNLKGlzX3N0YW5kYXJkaXplZCgpID09IG90aGVyLmlzX3N0YW5kYXJkaXplZCgpKTsKLSAgICB2
YWx1ZV8gPSBvdGhlci52YWx1ZV87Ci0gICAgaXNfZGVmaW5lZF8gPSB0cnVlOwotICAgIHJldHVy
biB2YWx1ZV87Ci0gIH0KIAogICAvLyBWYWx1ZSBnZXR0ZXJzLgogICBUJiBvcGVyYXRvciooKSB7
CkBAIC0zNDcsNiArMzM5LDExIEBAIGNsYXNzIFJUQ05vblN0YW5kYXJkU3RhdHNNZW1iZXIgOiBw
dWJsaWMgUlRDU3RhdHNNZW1iZXI8VD4gewogICAgICAgOiBSVENTdGF0c01lbWJlcjxUPihzdGQ6
Om1vdmUob3RoZXIpKSB7fQogCiAgIGJvb2wgaXNfc3RhbmRhcmRpemVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICBUJiBvcGVyYXRvcj0oY29uc3QgVCYgdmFsdWUpIHsg
cmV0dXJuIFJUQ1N0YXRzTWVtYmVyPFQ+OjpvcGVyYXRvcj0odmFsdWUpOyB9CisgIFQmIG9wZXJh
dG9yPShjb25zdCBUJiYgdmFsdWUpIHsKKyAgICByZXR1cm4gUlRDU3RhdHNNZW1iZXI8VD46Om9w
ZXJhdG9yPShzdGQ6Om1vdmUodmFsdWUpKTsKKyAgfQogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3N0YXRzL3J0Y3N0YXRzX29iamVjdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9zdGF0cy9ydGNzdGF0c19vYmplY3RzLmgKaW5kZXggZjM3
NzgwOWJhM2E3MWRhNjI1MDU5ODdhMWI1Njk3Nzk3YzRmNTgwNC4uODM5MjIzMTIxODk1MzMzMWRh
NTMyZWQ4ZDI5MTRmYjU1NGU4MjE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzX29iamVjdHMuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc3RhdHMvcnRjc3Rh
dHNfb2JqZWN0cy5oCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5j
bHVkZSAiYXBpL3N0YXRzL3J0Y3N0YXRzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0
Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTczLDcgKzc0LDcgQEAgc3Ry
dWN0IFJUQ05ldHdvcmtUeXBlIHsKIH07CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJy
dGMtc3RhdHMvI2NlcnRpZmljYXRlc3RhdHMtZGljdCoKLWNsYXNzIFJUQ0NlcnRpZmljYXRlU3Rh
dHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENDZXJ0aWZp
Y2F0ZVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19S
VENTVEFUU19ERUNMKCk7CiAKQEAgLTg5LDcgKzkwLDcgQEAgY2xhc3MgUlRDQ2VydGlmaWNhdGVT
dGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiB9OwogCiAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vd2VicnRjLXN0YXRzLyNjb2RlYy1kaWN0KgotY2xhc3MgUlRDQ29kZWNTdGF0cyBmaW5h
bCA6IHB1YmxpYyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ0NvZGVjU3RhdHMgZmlu
YWwgOiBwdWJsaWMgUlRDU3RhdHMgewogIHB1YmxpYzoKICAgV0VCUlRDX1JUQ1NUQVRTX0RFQ0wo
KTsKIApAQCAtMTEwLDcgKzExMSw3IEBAIGNsYXNzIFJUQ0NvZGVjU3RhdHMgZmluYWwgOiBwdWJs
aWMgUlRDU3RhdHMgewogfTsKIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0
cy8jZGNzdGF0cy1kaWN0KgotY2xhc3MgUlRDRGF0YUNoYW5uZWxTdGF0cyBmaW5hbCA6IHB1Ymxp
YyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ0RhdGFDaGFubmVsU3RhdHMgZmluYWwg
OiBwdWJsaWMgUlRDU3RhdHMgewogIHB1YmxpYzoKICAgV0VCUlRDX1JUQ1NUQVRTX0RFQ0woKTsK
IApAQCAtMTMyLDcgKzEzMyw3IEBAIGNsYXNzIFJUQ0RhdGFDaGFubmVsU3RhdHMgZmluYWwgOiBw
dWJsaWMgUlRDU3RhdHMgewogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRz
LyNjYW5kaWRhdGVwYWlyLWRpY3QqCiAvLyBUT0RPKGhib3MpOiBUcmFja2luZyBidWcgaHR0cHM6
Ly9idWdzLndlYnJ0Yy5vcmcvNzA2MgotY2xhc3MgUlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRzIGZp
bmFsIDogcHVibGljIFJUQ1N0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDSWNlQ2FuZGlkYXRl
UGFpclN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19S
VENTVEFUU19ERUNMKCk7CiAKQEAgLTE4Niw3ICsxODcsNyBAQCBjbGFzcyBSVENJY2VDYW5kaWRh
dGVQYWlyU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgewogLy8gY3JidWcuY29tLzYzMjcy
MwogLy8gVE9ETyhxaW5nc2kpOiBBZGQgdGhlIHN0YXRzIG9mIFNUVU4gYmluZGluZyByZXF1ZXN0
cyAoa2VlcGFsaXZlcykgYW5kIGNvbGxlY3QKIC8vIHRoZW0gaW4gdGhlIG5ldyBQZWVyQ29ubmVj
dGlvbjo6R2V0U3RhdHMuCi1jbGFzcyBSVENJY2VDYW5kaWRhdGVTdGF0cyA6IHB1YmxpYyBSVENT
dGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ0ljZUNhbmRpZGF0ZVN0YXRzIDogcHVibGljIFJU
Q1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19ERUNMKCk7CiAKQEAgLTIyMSw3
ICsyMjIsNyBAQCBjbGFzcyBSVENJY2VDYW5kaWRhdGVTdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7
CiAvLyB8a1R5cGV8IG5lZWQgdG8gYmUgZGlmZmVyZW50ICgiUlRDU3RhdHNUeXBlIHR5cGUiKSBp
biB0aGUgbG9jYWwvcmVtb3RlIGNhc2UuCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRj
LXN0YXRzLyNydGNzdGF0c3R5cGUtc3RyKgogLy8gVGhpcyBmb3JjZXMgdXMgdG8gaGF2ZSB0byBv
dmVycmlkZSBjb3B5KCkgYW5kIHR5cGUoKS4KLWNsYXNzIFJUQ0xvY2FsSWNlQ2FuZGlkYXRlU3Rh
dHMgZmluYWwgOiBwdWJsaWMgUlRDSWNlQ2FuZGlkYXRlU3RhdHMgeworY2xhc3MgUlRDX0VYUE9S
VCBSVENMb2NhbEljZUNhbmRpZGF0ZVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ0ljZUNhbmRpZGF0
ZVN0YXRzIHsKICBwdWJsaWM6CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtUeXBlW107CiAgIFJUQ0xv
Y2FsSWNlQ2FuZGlkYXRlU3RhdHMoY29uc3Qgc3RkOjpzdHJpbmcmIGlkLCBpbnQ2NF90IHRpbWVz
dGFtcF91cyk7CkBAIC0yMzAsNyArMjMxLDggQEAgY2xhc3MgUlRDTG9jYWxJY2VDYW5kaWRhdGVT
dGF0cyBmaW5hbCA6IHB1YmxpYyBSVENJY2VDYW5kaWRhdGVTdGF0cyB7CiAgIGNvbnN0IGNoYXIq
IHR5cGUoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKLWNsYXNzIFJUQ1JlbW90ZUljZUNhbmRpZGF0
ZVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ0ljZUNhbmRpZGF0ZVN0YXRzIHsKK2NsYXNzIFJUQ19F
WFBPUlQgUlRDUmVtb3RlSWNlQ2FuZGlkYXRlU3RhdHMgZmluYWwKKyAgICA6IHB1YmxpYyBSVENJ
Y2VDYW5kaWRhdGVTdGF0cyB7CiAgcHVibGljOgogICBzdGF0aWMgY29uc3QgY2hhciBrVHlwZVtd
OwogICBSVENSZW1vdGVJY2VDYW5kaWRhdGVTdGF0cyhjb25zdCBzdGQ6OnN0cmluZyYgaWQsIGlu
dDY0X3QgdGltZXN0YW1wX3VzKTsKQEAgLTI0MSw3ICsyNDMsNyBAQCBjbGFzcyBSVENSZW1vdGVJ
Y2VDYW5kaWRhdGVTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENJY2VDYW5kaWRhdGVTdGF0cyB7CiAK
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtc3RhdHMvI21zc3RhdHMtZGljdCoKIC8v
IFRPRE8oaGJvcyk6IFRyYWNraW5nIGJ1ZyBjcmJ1Zy5jb20vNjYwODI3Ci1jbGFzcyBSVENNZWRp
YVN0cmVhbVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQg
UlRDTWVkaWFTdHJlYW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgog
ICBXRUJSVENfUlRDU1RBVFNfREVDTCgpOwogCkBAIC0yNTYsNyArMjU4LDcgQEAgY2xhc3MgUlRD
TWVkaWFTdHJlYW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAKIC8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby93ZWJydGMtc3RhdHMvI21zdHN0YXRzLWRpY3QqCiAvLyBUT0RPKGhib3Mp
OiBUcmFja2luZyBidWcgY3JidWcuY29tLzY1OTEzNwotY2xhc3MgUlRDTWVkaWFTdHJlYW1UcmFj
a1N0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDTWVk
aWFTdHJlYW1UcmFja1N0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAg
IFdFQlJUQ19SVENTVEFUU19ERUNMKCk7CiAKQEAgLTMwNiwxMCArMzA4LDE0IEBAIGNsYXNzIFJU
Q01lZGlhU3RyZWFtVHJhY2tTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAgIFJUQ1N0
YXRzTWVtYmVyPGRvdWJsZT4gdG90YWxfc2FtcGxlc19kdXJhdGlvbjsKICAgUlRDU3RhdHNNZW1i
ZXI8dWludDY0X3Q+IGNvbmNlYWxlZF9zYW1wbGVzOwogICBSVENTdGF0c01lbWJlcjx1aW50NjRf
dD4gY29uY2VhbG1lbnRfZXZlbnRzOworICAvLyBOb24tc3RhbmRhcmQgYXVkaW8tb25seSBtZW1i
ZXIKKyAgLy8gVE9ETyhrdWRkYWkpOiBBZGQgZGVzY3JpcHRpb24gdG8gc3RhbmRhcmQuIGNyYnVn
LmNvbS93ZWJydGMvMTAwNDIKKyAgUlRDTm9uU3RhbmRhcmRTdGF0c01lbWJlcjx1aW50NjRfdD4g
aml0dGVyX2J1ZmZlcl9mbHVzaGVzOworICBSVENOb25TdGFuZGFyZFN0YXRzTWVtYmVyPHVpbnQ2
NF90PiBkZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlczsKIH07CiAKIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWJydGMtc3RhdHMvI3Bjc3RhdHMtZGljdCoKLWNsYXNzIFJUQ1BlZXJDb25u
ZWN0aW9uU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBS
VENQZWVyQ29ubmVjdGlvblN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6
CiAgIFdFQlJUQ19SVENTVEFUU19ERUNMKCk7CiAKQEAgLTMyNCw3ICszMzAsNyBAQCBjbGFzcyBS
VENQZWVyQ29ubmVjdGlvblN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKIAogLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jc3RyZWFtc3RhdHMtZGljdCoKIC8vIFRP
RE8oaGJvcyk6IFRyYWNraW5nIGJ1ZyBjcmJ1Zy5jb20vNjU3ODU0Ci1jbGFzcyBSVENSVFBTdHJl
YW1TdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ1JUUFN0cmVh
bVN0YXRzIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19E
RUNMKCk7CiAKQEAgLTM2Miw3ICszNjgsNyBAQCBjbGFzcyBSVENSVFBTdHJlYW1TdGF0cyA6IHB1
YmxpYyBSVENTdGF0cyB7CiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNp
bmJvdW5kcnRwc3RhdHMtZGljdCoKIC8vIFRPRE8oaGJvcyk6IFN1cHBvcnQgdGhlIHJlbW90ZSBj
YXNlIHxpc19yZW1vdGUgPSB0cnVlfC4KIC8vIGh0dHBzOi8vYnVncy53ZWJydGMub3JnLzcwNjUK
LWNsYXNzIFJUQ0luYm91bmRSVFBTdHJlYW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENSVFBTdHJl
YW1TdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ0luYm91bmRSVFBTdHJlYW1TdGF0cyBmaW5h
bCA6IHB1YmxpYyBSVENSVFBTdHJlYW1TdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RB
VFNfREVDTCgpOwogCkBAIC00MDYsNyArNDEyLDcgQEAgY2xhc3MgUlRDSW5ib3VuZFJUUFN0cmVh
bVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1JUUFN0cmVhbVN0YXRzIHsKIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWJydGMtc3RhdHMvI291dGJvdW5kcnRwc3RhdHMtZGljdCoKIC8vIFRPRE8o
aGJvcyk6IFN1cHBvcnQgdGhlIHJlbW90ZSBjYXNlIHxpc19yZW1vdGUgPSB0cnVlfC4KIC8vIGh0
dHBzOi8vYnVncy53ZWJydGMub3JnLzcwNjYKLWNsYXNzIFJUQ091dGJvdW5kUlRQU3RyZWFtU3Rh
dHMgZmluYWwgOiBwdWJsaWMgUlRDUlRQU3RyZWFtU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBS
VENPdXRib3VuZFJUUFN0cmVhbVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1JUUFN0cmVhbVN0YXRz
IHsKICBwdWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19ERUNMKCk7CiAKQEAgLTQyMyw3ICs0Mjks
NyBAQCBjbGFzcyBSVENPdXRib3VuZFJUUFN0cmVhbVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1JU
UFN0cmVhbVN0YXRzIHsKIH07CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtc3Rh
dHMvI3RyYW5zcG9ydHN0YXRzLWRpY3QqCi1jbGFzcyBSVENUcmFuc3BvcnRTdGF0cyBmaW5hbCA6
IHB1YmxpYyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ1RyYW5zcG9ydFN0YXRzIGZp
bmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19ERUNM
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9zdGF0cy9ydGNzdGF0c3JlcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzcmVwb3J0LmgKaW5kZXggZjc0MTBi
MzlmNzlhZmZhMjM3NjM2NmViY2Y5M2JlNjE0YWVjMzAyZi4uOGJmMWNiNTdkOWQ1NWFlNTA0MzJi
MjU2MzU1ZGQyMWYyODRmYjQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzcmVwb3J0LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzcmVw
b3J0LmgKQEAgLTIwLDEyICsyMCwxMyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBv
cnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEEgY29sbGVjdGlvbiBvZiBzdGF0cy4K
IC8vIFRoaXMgaXMgYWNjZXNzaWJsZSBhcyBhIG1hcCBmcm9tIHxSVENTdGF0czo6aWR8IHRvIHxS
VENTdGF0c3wuCi1jbGFzcyBSVENTdGF0c1JlcG9ydCA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50
ZXJmYWNlIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDU3RhdHNSZXBvcnQgOiBwdWJsaWMgcnRjOjpS
ZWZDb3VudEludGVyZmFjZSB7CiAgcHVibGljOgogICB0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgUlRDU3RhdHM+PiBTdGF0c01hcDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qv
REVQUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0
L0RFUFMKaW5kZXggOThiMWFkMzkxZmNhMmI2NDRjNjFhM2Y1MDMyOGRkNWVmZWRlMmVkZi4uOWMy
OTNiMzIzZTcwM2ZjNmNkNDlkNWQ5ODMwY2FiN2Y4ZjU0Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvREVQUworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9ERVBTCkBA
IC01LDQgKzUsMTAgQEAgc3BlY2lmaWNfaW5jbHVkZV9ydWxlcyA9IHsKICAgIi4qIjogWwogICAg
ICIrdmlkZW8iCiAgIF0sCisgICJsb29wYmFja19tZWRpYV90cmFuc3BvcnRcLmgiOiBbCisgICAg
IitydGNfYmFzZS9hc3luY2ludm9rZXIuaCIsCisgICAgIitydGNfYmFzZS9jcml0aWNhbHNlY3Rp
b24uaCIsCisgICAgIitydGNfYmFzZS90aHJlYWQuaCIsCisgICAgIitydGNfYmFzZS90aHJlYWRf
Y2hlY2tlci5oIiwKKyAgXSwKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFt
ZV9kZWNyeXB0b3IuY2MKaW5kZXggNDMyNjY0YTAzMDYzYzhiNThlZDI0MzY5NGUzY2RiMDJiNWNi
OTNkYS4uYjc3MDE3ZmRiNDM2ODQwMDNmZTU1MmYzYjg0NDZiYzA5MzYxYTkwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFr
ZV9mcmFtZV9kZWNyeXB0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3IuY2MKQEAgLTI1LDE5ICsy
NSwyMCBAQCBpbnQgRmFrZUZyYW1lRGVjcnlwdG9yOjpEZWNyeXB0KGNyaWNrZXQ6Ok1lZGlhVHlw
ZSBtZWRpYV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5
Vmlldzx1aW50OF90PiBmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90KiBieXRlc193cml0dGVuKSB7CiAgIGlmIChmYWlsX2RlY3J5cHRpb25fKSB7Ci0gICAgcmV0
dXJuIDE7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRmFrZURlY3J5cHRTdGF0dXM6OkZP
UkNFRF9GQUlMVVJFKTsKICAgfQogCiAgIFJUQ19DSEVDS19FUShmcmFtZS5zaXplKCkgKyAxLCBl
bmNyeXB0ZWRfZnJhbWUuc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5z
aXplKCk7IGkrKykgewotICAgIGZyYW1lW2ldIF49IGZha2Vfa2V5XzsKKyAgICBmcmFtZVtpXSA9
IGVuY3J5cHRlZF9mcmFtZVtpXSBeIGZha2Vfa2V5XzsKICAgfQogCiAgIGlmIChlbmNyeXB0ZWRf
ZnJhbWVbZnJhbWUuc2l6ZSgpXSAhPSBleHBlY3RlZF9wb3N0Zml4X2J5dGVfKSB7Ci0gICAgcmV0
dXJuIDE7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRmFrZURlY3J5cHRTdGF0dXM6OklO
VkFMSURfUE9TVEZJWCk7CiAgIH0KIAotICByZXR1cm4gMDsKKyAgKmJ5dGVzX3dyaXR0ZW4gPSBm
cmFtZS5zaXplKCk7CisgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZha2VEZWNyeXB0U3RhdHVz
OjpPSyk7CiB9CiAKIHNpemVfdCBGYWtlRnJhbWVEZWNyeXB0b3I6OkdldE1heFBsYWludGV4dEJ5
dGVTaXplKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmgK
aW5kZXggYjk0NWRlZjU5YThiMGE1Yjc0NzQ1ZjUyYjc0MjA4YmYxNjVkZTVjMy4uYmNiODA4MGZk
NGM4NGM2NmIzMzUyNDJjMDkzMTQ4ZDI5ODNiNzA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9kZWNyeXB0
b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dGVzdC9mYWtlX2ZyYW1lX2RlY3J5cHRvci5oCkBAIC0yMiwzNCArMjIsNDAgQEAgbmFtZXNwYWNl
IHdlYnJ0YyB7CiAvLyBGcmFtZURlY3J5cHRvckludGVyZmFjZS4gSXQgaXMgY29uc3RydWN0ZWQg
d2l0aCBhIHNpbXBsZSBzaW5nbGUgZGlnaXQga2V5IGFuZAogLy8gYSBmaXhlZCBwb3N0Zml4IGJ5
dGUuIFRoaXMgaXMganVzdCB0byB2YWxpZGF0ZSB0aGF0IHRoZSBjb3JlIGNvZGUgd29ya3MKIC8v
IGFzIGV4cGVjdGVkLgotY2xhc3MgRmFrZUZyYW1lRGVjcnlwdG9yCitjbGFzcyBGYWtlRnJhbWVE
ZWNyeXB0b3IgZmluYWwKICAgICA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8RnJhbWVE
ZWNyeXB0b3JJbnRlcmZhY2U+IHsKICBwdWJsaWM6CiAgIC8vIFByb3ZpZGUgYSBrZXkgKDAsMjU1
KSBhbmQgc29tZSBwb3N0Zml4IGJ5dGUgKDAsMjU1KSB0aGlzIHNob3VsZCBtYXRjaCB0aGUKICAg
Ly8gYnl0ZSB5b3UgZXhwZWN0IGZyb20gdGhlIEZha2VGcmFtZUVuY3J5cHRvci4KLSAgZXhwbGlj
aXQgRmFrZUZyYW1lRGVjcnlwdG9yKHVpbnQ4X3QgZmFrZV9rZXkgPSAxLAorICBleHBsaWNpdCBG
YWtlRnJhbWVEZWNyeXB0b3IodWludDhfdCBmYWtlX2tleSA9IDB4QUEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90IGV4cGVjdGVkX3Bvc3RmaXhfYnl0ZSA9IDI1NSk7Ci0K
LSAgLy8gRnJhbWVEZWNyeXB0b3JJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24KKyAgLy8gRmFrZSBk
ZWNyeXB0aW9uIHRoYXQganVzdCB4b3JzIHRoZSBwYXlsb2FkIHdpdGggdGhlIDEgYnl0ZSBrZXkg
YW5kIGNoZWNrcworICAvLyB0aGUgcG9zdGZpeCBieXRlLiBUaGlzIHdpbGwgYWx3YXlzIGZhaWwg
aWYgZmFpbF9kZWNyeXB0aW9uXyBpcyBzZXQgdG8gdHJ1ZS4KICAgaW50IERlY3J5cHQoY3JpY2tl
dDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUsCiAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHVpbnQzMl90PiYgY3NyY3MsCiAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVp
bnQ4X3Q+IGFkZGl0aW9uYWxfZGF0YSwKICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29u
c3QgdWludDhfdD4gZW5jcnlwdGVkX2ZyYW1lLAogICAgICAgICAgICAgICBydGM6OkFycmF5Vmll
dzx1aW50OF90PiBmcmFtZSwKICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc193cml0dGVuKSBv
dmVycmlkZTsKLQorICAvLyBBbHdheXMgcmV0dXJucyAxIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiB0
aGUgZW5jcnlwdGVkIGZyYW1lLgogICBzaXplX3QgR2V0TWF4UGxhaW50ZXh0Qnl0ZVNpemUoY3Jp
Y2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZW5jcnlwdGVkX2ZyYW1lX3NpemUpIG92ZXJyaWRlOwotCisgIC8vIFNldHMg
dGhlIGZha2Uga2V5IHRvIHVzZSBmb3IgZW5jcnlwdGlvbi4KICAgdm9pZCBTZXRGYWtlS2V5KHVp
bnQ4X3QgZmFrZV9rZXkpOwotCisgIC8vIFJldHVybnMgdGhlIGZha2Uga2V5IHVzZWQgZm9yIGVu
Y3J5cHRpb24uCiAgIHVpbnQ4X3QgR2V0RmFrZUtleSgpIGNvbnN0OwotCisgIC8vIFNldCB0aGUg
UG9zdGZpeCBieXRlIHRoYXQgaXMgZXhwZWN0ZWQgaW4gdGhlIGVuY3J5cHRlZCBwYXlsb2FkLgog
ICB2b2lkIFNldEV4cGVjdGVkUG9zdGZpeEJ5dGUodWludDhfdCBleHBlY3RlZF9wb3N0Zml4X2J5
dGUpOwotCisgIC8vIFJldHVybnMgdGhlIHBvc3RmaXggYnl0ZSB0aGF0IHdpbGwgYmUgY2hlY2tl
ZCBmb3IgaW4gdGhlIGVuY3J5cHRlZCBwYXlsb2FkLgogICB1aW50OF90IEdldEV4cGVjdGVkUG9z
dGZpeEJ5dGUoKSBjb25zdDsKLQorICAvLyBJZiBzZXQgdG8gdHJ1ZSB3aWxsIGZvcmNlIGFsbCBl
bmNyeXB0aW9uIHRvIGZhaWwuCiAgIHZvaWQgU2V0RmFpbERlY3J5cHRpb24oYm9vbCBmYWlsX2Rl
Y3J5cHRpb24pOworICAvLyBTaW1wbGUgZXJyb3IgY29kZXMgZm9yIHRlc3RzIHRvIHZhbGlkYXRl
IGFnYWluc3QuCisgIGVudW0gY2xhc3MgRmFrZURlY3J5cHRTdGF0dXMgOiBpbnQgeworICAgIE9L
ID0gMCwKKyAgICBGT1JDRURfRkFJTFVSRSA9IDEsCisgICAgSU5WQUxJRF9QT1NURklYID0gMgor
ICB9OwogCiAgcHJpdmF0ZToKICAgdWludDhfdCBmYWtlX2tleV8gPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9m
cmFtZV9lbmNyeXB0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdGVzdC9mYWtlX2ZyYW1lX2VuY3J5cHRvci5jYwppbmRleCAwMTMwNThmOTZhYTZk
ZmU5YjA2MTM5MzhlNTdkYWVmNWRhMzhjMzZjLi5lZGYzY2MyMTM2YWQwMGY3ODVkNzZmN2E0OTBi
Mjg1NTRhZDJkNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdGVzdC9mYWtlX2ZyYW1lX2VuY3J5cHRvci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9mYWtlX2ZyYW1lX2Vu
Y3J5cHRvci5jYwpAQCAtMjIsMTggKzIyLDE4IEBAIGludCBGYWtlRnJhbWVFbmNyeXB0b3I6OkVu
Y3J5cHQoY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IGZyYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzx1aW50OF90PiBlbmNyeXB0
ZWRfZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNf
d3JpdHRlbikgewotICAvLyBVc2VmdWwgaWYgeW91IHdhbnQgdG8gdGVzdCBmYWlsdXJlIGNhc2Vz
LgogICBpZiAoZmFpbF9lbmNyeXB0aW9uXykgewotICAgIHJldHVybiAxOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KEZha2VFbmNyeXB0aW9uU3RhdHVzOjpGT1JDRURfRkFJTFVSRSk7CiAg
IH0KIAogICBSVENfQ0hFQ0tfRVEoZnJhbWUuc2l6ZSgpICsgMSwgZW5jcnlwdGVkX2ZyYW1lLnNp
emUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWUuc2l6ZSgpOyBpKyspIHsKLSAg
ICBlbmNyeXB0ZWRfZnJhbWVbaV0gXj0gZmFrZV9rZXlfOworICAgIGVuY3J5cHRlZF9mcmFtZVtp
XSA9IGZyYW1lW2ldIF4gZmFrZV9rZXlfOwogICB9CisKICAgZW5jcnlwdGVkX2ZyYW1lW2ZyYW1l
LnNpemUoKV0gPSBwb3N0Zml4X2J5dGVfOwogICAqYnl0ZXNfd3JpdHRlbiA9IGVuY3J5cHRlZF9m
cmFtZS5zaXplKCk7Ci0gIHJldHVybiAwOworICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGYWtl
RW5jcnlwdGlvblN0YXR1czo6T0spOwogfQogCiBzaXplX3QgRmFrZUZyYW1lRW5jcnlwdG9yOjpH
ZXRNYXhDaXBoZXJ0ZXh0Qnl0ZVNpemUoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9mYWtlX2ZyYW1lX2VuY3J5cHRvci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9m
cmFtZV9lbmNyeXB0b3IuaAppbmRleCA2MWFlOTM4M2Y2YTU0MzkwOTk3YmIxNGMzYjA5NjgyMmZl
ZTBkNGU0Li4wYmVjOTY3ZGMyMjk2NDZlYWFmZGIxYmM2ZWJjZjliNjY2MGE3YWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9m
YWtlX2ZyYW1lX2VuY3J5cHRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZW5jcnlwdG9yLmgKQEAgLTI0LDI5ICsy
NCwzNSBAQCBjbGFzcyBGYWtlRnJhbWVFbmNyeXB0b3IKICAgICA6IHB1YmxpYyBydGM6OlJlZkNv
dW50ZWRPYmplY3Q8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IHsKICBwdWJsaWM6CiAgIC8vIFBy
b3ZpZGUgYSBrZXkgKDAsMjU1KSBhbmQgc29tZSBwb3N0Zml4IGJ5dGUgKDAsMjU1KS4KLSAgZXhw
bGljaXQgRmFrZUZyYW1lRW5jcnlwdG9yKHVpbnQ4X3QgZmFrZV9rZXkgPSAxLCB1aW50OF90IHBv
c3RmaXhfYnl0ZSA9IDI1NSk7Ci0KLSAgLy8gRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UgaW1wbGVt
ZW50YXRpb24KKyAgZXhwbGljaXQgRmFrZUZyYW1lRW5jcnlwdG9yKHVpbnQ4X3QgZmFrZV9rZXkg
PSAweEFBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBwb3N0Zml4X2J5
dGUgPSAyNTUpOworICAvLyBTaW1wbHkgeG9ycyBlYWNoIHBheWxvYWQgd2l0aCB0aGUgcHJvdmlk
ZWQgZmFrZSBrZXkgYW5kIGFkZHMgdGhlIHBvc3RmaXgKKyAgLy8gYml0IHRvIHRoZSBlbmQuIFRo
aXMgd2lsbCBhbHdheXMgZmFpbCBpZiBmYWlsX2VuY3J5cHRpb25fIGlzIHNldCB0byB0cnVlLgog
ICBpbnQgRW5jcnlwdChjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSwKICAgICAgICAgICAg
ICAgdWludDMyX3Qgc3NyYywKICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWlu
dDhfdD4gYWRkaXRpb25hbF9kYXRhLAogICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25z
dCB1aW50OF90PiBmcmFtZSwKICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8dWludDhfdD4g
ZW5jcnlwdGVkX2ZyYW1lLAogICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVzX3dyaXR0ZW4pIG92
ZXJyaWRlOwotCisgIC8vIEFsd2F5cyByZXR1cm5zIDEgbW9yZSB0aGFuIHRoZSBzaXplIG9mIHRo
ZSBmcmFtZS4KICAgc2l6ZV90IEdldE1heENpcGhlcnRleHRCeXRlU2l6ZShjcmlja2V0OjpNZWRp
YVR5cGUgbWVkaWFfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZnJhbWVfc2l6ZSkgb3ZlcnJpZGU7Ci0KKyAgLy8gU2V0cyB0aGUgZmFrZSBrZXkgdG8gdXNl
IGR1cmluZyBlbmNyeXB0aW9uLgogICB2b2lkIFNldEZha2VLZXkodWludDhfdCBmYWtlX2tleSk7
Ci0KKyAgLy8gUmV0dXJucyB0aGUgZmFrZSBrZXkgdXNlZCBkdXJpbmcgZW5jcnlwdGlvbi4KICAg
dWludDhfdCBHZXRGYWtlS2V5KCkgY29uc3Q7Ci0KKyAgLy8gU2V0IHRoZSBwb3N0Zml4IGJ5dGUg
dG8gdXNlLgogICB2b2lkIFNldFBvc3RmaXhCeXRlKHVpbnQ4X3QgZXhwZWN0ZWRfcG9zdGZpeF9i
eXRlKTsKLQorICAvLyBSZXR1cm4gYSBwb3N0Zml4IGJ5dGUgYWRkZWQgdG8gZWFjaCBvdXRnb2lu
ZyBwYXlsb2FkLgogICB1aW50OF90IEdldFBvc3RmaXhCeXRlKCkgY29uc3Q7Ci0KKyAgLy8gRm9y
Y2UgYWxsIGVuY3J5cHRpb25zIHRvIGZhaWwuCiAgIHZvaWQgU2V0RmFpbEVuY3J5cHRpb24oYm9v
bCBmYWlsX2VuY3J5cHRpb24pOwogCisgIGVudW0gY2xhc3MgRmFrZUVuY3J5cHRpb25TdGF0dXMg
OiBpbnQgeworICAgIE9LID0gMCwKKyAgICBGT1JDRURfRkFJTFVSRSA9IDEsCisgIH07CisKICBw
cml2YXRlOgogICB1aW50OF90IGZha2Vfa2V5XyA9IDA7CiAgIHVpbnQ4X3QgcG9zdGZpeF9ieXRl
XyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdGVzdC9mYWtlX21lZGlhX3RyYW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9tZWRpYV90cmFuc3BvcnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYjZlYzkzYWUyYjc5MjJiODIyM2Q5ODkxYTFkMzU4ZDhhMjI1NTM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3Rlc3QvZmFrZV9tZWRpYV90cmFuc3BvcnQuaApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVTVF9GQUtFX01FRElBX1RSQU5TUE9SVF9IXwor
I2RlZmluZSBBUElfVEVTVF9GQUtFX01FRElBX1RSQU5TUE9SVF9IXworCisjaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZl
Y3Rvcj4KKworI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS9t
ZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBU
T0RPKHN1a2hhbm92KTogRm9yIG5vdyBmYWtlIG1lZGlhIHRyYW5zcG9ydCBkb2VzIG5vdGhpbmcg
YW5kIGlzIHVzZWQgb25seQorLy8gaW4ganNlcGNvbnRyb2xsZXIgdW5pdHRlc3RzLiBJbiB0aGUg
ZnV0dXJlIHdlIHNob3VsZCBpbXBsZW1lbnQgZmFrZSBtZWRpYQorLy8gdHJhbnNwb3J0LCB3aGlj
aCBmb3J3YXJkcyBmcmFtZXMgdG8gYW5vdGhlciBmYWtlIG1lZGlhIHRyYW5zcG9ydCwgc28gd2UK
Ky8vIGNvdWxkIHVuaXQgdGVzdCBhdWRpbyAvIHZpZGVvIGludGVncmF0aW9uLgorY2xhc3MgRmFr
ZU1lZGlhVHJhbnNwb3J0IDogcHVibGljIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlIHsKKyBwdWJs
aWM6CisgIGV4cGxpY2l0IEZha2VNZWRpYVRyYW5zcG9ydChjb25zdCBNZWRpYVRyYW5zcG9ydFNl
dHRpbmdzJiBzZXR0aW5ncykKKyAgICAgIDogc2V0dGluZ3NfKHNldHRpbmdzKSB7fQorICB+RmFr
ZU1lZGlhVHJhbnNwb3J0KCkgPSBkZWZhdWx0OworCisgIFJUQ0Vycm9yIFNlbmRBdWRpb0ZyYW1l
KHVpbnQ2NF90IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhVHJh
bnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgZnJhbWUpIG92ZXJyaWRlIHsKKyAgICByZXR1cm4gUlRD
RXJyb3I6Ok9LKCk7CisgIH0KKworICBSVENFcnJvciBTZW5kVmlkZW9GcmFtZSgKKyAgICAgIHVp
bnQ2NF90IGNoYW5uZWxfaWQsCisgICAgICBjb25zdCBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRl
b0ZyYW1lJiBmcmFtZSkgb3ZlcnJpZGUgeworICAgIHJldHVybiBSVENFcnJvcjo6T0soKTsKKyAg
fQorCisgIFJUQ0Vycm9yIFJlcXVlc3RLZXlGcmFtZSh1aW50NjRfdCBjaGFubmVsX2lkKSBvdmVy
cmlkZSB7CisgICAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOworICB9OworCisgIHZvaWQgU2V0UmVj
ZWl2ZUF1ZGlvU2luayhNZWRpYVRyYW5zcG9ydEF1ZGlvU2lua0ludGVyZmFjZSogc2luaykgb3Zl
cnJpZGUge30KKyAgdm9pZCBTZXRSZWNlaXZlVmlkZW9TaW5rKE1lZGlhVHJhbnNwb3J0VmlkZW9T
aW5rSW50ZXJmYWNlKiBzaW5rKSBvdmVycmlkZSB7fQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZiBm
YWtlIG1lZGlhIHRyYW5zcG9ydCB3YXMgY3JlYXRlZCBhcyBhIGNhbGxlci4KKyAgYm9vbCBpc19j
YWxsZXIoKSBjb25zdCB7IHJldHVybiBzZXR0aW5nc18uaXNfY2FsbGVyOyB9CisgIGFic2w6Om9w
dGlvbmFsPHN0ZDo6c3RyaW5nPiBwcmVfc2hhcmVkX2tleSgpIGNvbnN0IHsKKyAgICByZXR1cm4g
c2V0dGluZ3NfLnByZV9zaGFyZWRfa2V5OworICB9CisKKyAgUlRDRXJyb3IgU2VuZERhdGEoaW50
IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlbmREYXRhUGFyYW1zJiBw
YXJhbXMsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIm
IGJ1ZmZlcikgb3ZlcnJpZGUgeworICAgIHJldHVybiBSVENFcnJvcjo6T0soKTsKKyAgfQorCisg
IFJUQ0Vycm9yIENsb3NlQ2hhbm5lbChpbnQgY2hhbm5lbF9pZCkgb3ZlcnJpZGUgeyByZXR1cm4g
UlRDRXJyb3I6Ok9LKCk7IH0KKworICB2b2lkIFNldERhdGFTaW5rKERhdGFDaGFubmVsU2luayog
c2luaykgb3ZlcnJpZGUge30KKworICB2b2lkIFNldE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFj
aygKKyAgICAgIE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRl
IHsKKyAgICBzdGF0ZV9jYWxsYmFja18gPSBjYWxsYmFjazsKKyAgfQorCisgIHZvaWQgU2V0U3Rh
dGUod2VicnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlIHN0YXRlKSB7CisgICAgaWYgKHN0YXRlX2Nh
bGxiYWNrXykgeworICAgICAgc3RhdGVfY2FsbGJhY2tfLT5PblN0YXRlQ2hhbmdlZChzdGF0ZSk7
CisgICAgfQorICB9CisKKyAgdm9pZCBBZGRUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlcigKKyAg
ICAgIHdlYnJ0Yzo6VGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIqIG9ic2VydmVyKSBvdmVycmlk
ZSB7CisgICAgUlRDX0NIRUNLKHN0ZDo6ZmluZCh0YXJnZXRfcmF0ZV9vYnNlcnZlcnNfLmJlZ2lu
KCksCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcmF0ZV9vYnNlcnZlcnNfLmVuZCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIpID09IHRhcmdldF9yYXRlX29ic2Vy
dmVyc18uZW5kKCkpOworICAgIHRhcmdldF9yYXRlX29ic2VydmVyc18ucHVzaF9iYWNrKG9ic2Vy
dmVyKTsKKyAgfQorCisgIHZvaWQgUmVtb3ZlVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIoCisg
ICAgICB3ZWJydGM6OlRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKiBvYnNlcnZlcikgb3ZlcnJp
ZGUgeworICAgIGF1dG8gaXQgPSBzdGQ6OmZpbmQodGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5iZWdp
bigpLAorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5lbmQo
KSwgb2JzZXJ2ZXIpOworICAgIGlmIChpdCAhPSB0YXJnZXRfcmF0ZV9vYnNlcnZlcnNfLmVuZCgp
KSB7CisgICAgICB0YXJnZXRfcmF0ZV9vYnNlcnZlcnNfLmVyYXNlKGl0KTsKKyAgICB9CisgIH0K
KworICBpbnQgdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzX3NpemUoKSB7IHJldHVybiB0YXJnZXRfcmF0
ZV9vYnNlcnZlcnNfLnNpemUoKTsgfQorCisgcHJpdmF0ZToKKyAgY29uc3QgTWVkaWFUcmFuc3Bv
cnRTZXR0aW5ncyBzZXR0aW5nc187CisgIE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayogc3Rh
dGVfY2FsbGJhY2tfOworICBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlRhcmdldFRyYW5zZmVyUmF0ZU9i
c2VydmVyKj4gdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXzsKK307CisKKy8vIEZha2UgbWVkaWEgdHJh
bnNwb3J0IGZhY3RvcnkgY3JlYXRlcyBmYWtlIG1lZGlhIHRyYW5zcG9ydC4KK2NsYXNzIEZha2VN
ZWRpYVRyYW5zcG9ydEZhY3RvcnkgOiBwdWJsaWMgTWVkaWFUcmFuc3BvcnRGYWN0b3J5IHsKKyBw
dWJsaWM6CisgIEZha2VNZWRpYVRyYW5zcG9ydEZhY3RvcnkoKSA9IGRlZmF1bHQ7CisgIH5GYWtl
TWVkaWFUcmFuc3BvcnRGYWN0b3J5KCkgPSBkZWZhdWx0OworCisgIFJUQ0Vycm9yT3I8c3RkOjp1
bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPj4gQ3JlYXRlTWVkaWFUcmFuc3BvcnQo
CisgICAgICBydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiBwYWNrZXRfdHJhbnNwb3J0LAor
ICAgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgICAgYm9vbCBpc19jYWxsZXIp
IG92ZXJyaWRlIHsKKyAgICBNZWRpYVRyYW5zcG9ydFNldHRpbmdzIHNldHRpbmdzOworICAgIHNl
dHRpbmdzLmlzX2NhbGxlciA9IGlzX2NhbGxlcjsKKyAgICByZXR1cm4gQ3JlYXRlTWVkaWFUcmFu
c3BvcnQocGFja2V0X3RyYW5zcG9ydCwgbmV0d29ya190aHJlYWQsIHNldHRpbmdzKTsKKyAgfQor
CisgIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPj4g
Q3JlYXRlTWVkaWFUcmFuc3BvcnQoCisgICAgICBydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFs
KiBwYWNrZXRfdHJhbnNwb3J0LAorICAgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAor
ICAgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyYgc2V0dGluZ3MpIG92ZXJyaWRlIHsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+IG1lZGlhX3RyYW5z
cG9ydCA9CisgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VNZWRpYVRyYW5zcG9ydD4oc2V0
dGluZ3MpOworICAgIHJldHVybiBzdGQ6Om1vdmUobWVkaWFfdHJhbnNwb3J0KTsKKyAgfQorfTsK
KworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9URVNUX0ZBS0VfTUVE
SUFfVFJBTlNQT1JUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2xvb3BiYWNrX21l
ZGlhX3RyYW5zcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4MjU1YjEzNWU3NTA4Y2FiMDA0OTY2MzBhNTM3
ZmRjMzc5YjQ3M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnQuaApAQCAt
MCwwICsxLDI5MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVTVF9MT09Q
QkFDS19NRURJQV9UUkFOU1BPUlRfSF8KKyNkZWZpbmUgQVBJX1RFU1RfTE9PUEJBQ0tfTUVESUFf
VFJBTlNQT1JUX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKwor
I2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvYXN5bmNpbnZva2VyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9u
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhy
ZWFkX2NoZWNrZXIuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFdyYXBwZXIgdXNlZCB0
byBoYW5kIG91dCB1bmlxdWVfcHRycyB0byBsb29wYmFjayBtZWRpYSB0cmFuc3BvcnRzIHdpdGhv
dXQKKy8vIG93bmVyc2hpcCBjaGFuZ2VzLgorY2xhc3MgV3JhcHBlck1lZGlhVHJhbnNwb3J0IDog
cHVibGljIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFdy
YXBwZXJNZWRpYVRyYW5zcG9ydChNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogd3JhcHBlZCkKKyAg
ICAgIDogd3JhcHBlZF8od3JhcHBlZCkge30KKworICBSVENFcnJvciBTZW5kQXVkaW9GcmFtZSh1
aW50NjRfdCBjaGFubmVsX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVRyYW5z
cG9ydEVuY29kZWRBdWRpb0ZyYW1lIGZyYW1lKSBvdmVycmlkZSB7CisgICAgcmV0dXJuIHdyYXBw
ZWRfLT5TZW5kQXVkaW9GcmFtZShjaGFubmVsX2lkLCBzdGQ6Om1vdmUoZnJhbWUpKTsKKyAgfQor
CisgIFJUQ0Vycm9yIFNlbmRWaWRlb0ZyYW1lKAorICAgICAgdWludDY0X3QgY2hhbm5lbF9pZCwK
KyAgICAgIGNvbnN0IE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmIGZyYW1lKSBvdmVy
cmlkZSB7CisgICAgcmV0dXJuIHdyYXBwZWRfLT5TZW5kVmlkZW9GcmFtZShjaGFubmVsX2lkLCBm
cmFtZSk7CisgIH0KKworICBSVENFcnJvciBSZXF1ZXN0S2V5RnJhbWUodWludDY0X3QgY2hhbm5l
bF9pZCkgb3ZlcnJpZGUgeworICAgIHJldHVybiB3cmFwcGVkXy0+UmVxdWVzdEtleUZyYW1lKGNo
YW5uZWxfaWQpOworICB9CisKKyAgdm9pZCBTZXRSZWNlaXZlQXVkaW9TaW5rKE1lZGlhVHJhbnNw
b3J0QXVkaW9TaW5rSW50ZXJmYWNlKiBzaW5rKSBvdmVycmlkZSB7CisgICAgd3JhcHBlZF8tPlNl
dFJlY2VpdmVBdWRpb1Npbmsoc2luayk7CisgIH0KKworICB2b2lkIFNldFJlY2VpdmVWaWRlb1Np
bmsoTWVkaWFUcmFuc3BvcnRWaWRlb1NpbmtJbnRlcmZhY2UqIHNpbmspIG92ZXJyaWRlIHsKKyAg
ICB3cmFwcGVkXy0+U2V0UmVjZWl2ZVZpZGVvU2luayhzaW5rKTsKKyAgfQorCisgIHZvaWQgU2V0
TWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrKAorICAgICAgTWVkaWFUcmFuc3BvcnRTdGF0ZUNh
bGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGUgeworICAgIHdyYXBwZWRfLT5TZXRNZWRpYVRyYW5z
cG9ydFN0YXRlQ2FsbGJhY2soY2FsbGJhY2spOworICB9CisKKyAgUlRDRXJyb3IgU2VuZERhdGEo
aW50IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlbmREYXRhUGFyYW1z
JiBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZm
ZXImIGJ1ZmZlcikgb3ZlcnJpZGUgeworICAgIHJldHVybiB3cmFwcGVkXy0+U2VuZERhdGEoY2hh
bm5lbF9pZCwgcGFyYW1zLCBidWZmZXIpOworICB9CisKKyAgUlRDRXJyb3IgQ2xvc2VDaGFubmVs
KGludCBjaGFubmVsX2lkKSBvdmVycmlkZSB7CisgICAgcmV0dXJuIHdyYXBwZWRfLT5DbG9zZUNo
YW5uZWwoY2hhbm5lbF9pZCk7CisgIH0KKworICB2b2lkIFNldERhdGFTaW5rKERhdGFDaGFubmVs
U2luayogc2luaykgb3ZlcnJpZGUgeworICAgIHdyYXBwZWRfLT5TZXREYXRhU2luayhzaW5rKTsK
KyAgfQorCisgcHJpdmF0ZToKKyAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIHdyYXBwZWRfOwor
fTsKKworY2xhc3MgV3JhcHBlck1lZGlhVHJhbnNwb3J0RmFjdG9yeSA6IHB1YmxpYyBNZWRpYVRy
YW5zcG9ydEZhY3RvcnkgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgV3JhcHBlck1lZGlhVHJhbnNw
b3J0RmFjdG9yeShNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogd3JhcHBlZCkKKyAgICAgIDogd3Jh
cHBlZF8od3JhcHBlZCkge30KKworICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRy
YW5zcG9ydEludGVyZmFjZT4+IENyZWF0ZU1lZGlhVHJhbnNwb3J0KAorICAgICAgcnRjOjpQYWNr
ZXRUcmFuc3BvcnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9ydCwKKyAgICAgIHJ0Yzo6VGhyZWFk
KiBuZXR3b3JrX3RocmVhZCwKKyAgICAgIGNvbnN0IE1lZGlhVHJhbnNwb3J0U2V0dGluZ3MmIHNl
dHRpbmdzKSBvdmVycmlkZSB7CisgICAgcmV0dXJuIHthYnNsOjptYWtlX3VuaXF1ZTxXcmFwcGVy
TWVkaWFUcmFuc3BvcnQ+KHdyYXBwZWRfKX07CisgIH0KKworIHByaXZhdGU6CisgIE1lZGlhVHJh
bnNwb3J0SW50ZXJmYWNlKiB3cmFwcGVkXzsKK307CisKKy8vIENvbnRhaW5zIHR3byBNZWRpYVRy
YW5zcG9ydHNJbnRlcmZhY2VzIHRoYXQgYXJlIGNvbm5lY3RlZCB0byBlYWNoIG90aGVyLgorLy8g
Q3VycmVudGx5IHN1cHBvcnRzIGF1ZGlvIG9ubHkuCitjbGFzcyBNZWRpYVRyYW5zcG9ydFBhaXIg
eworIHB1YmxpYzoKKyAgc3RydWN0IFN0YXRzIHsKKyAgICBpbnQgc2VudF9hdWRpb19mcmFtZXMg
PSAwOworICAgIGludCByZWNlaXZlZF9hdWRpb19mcmFtZXMgPSAwOworICB9OworCisgIGV4cGxp
Y2l0IE1lZGlhVHJhbnNwb3J0UGFpcihydGM6OlRocmVhZCogdGhyZWFkKQorICAgICAgOiBmaXJz
dF8odGhyZWFkLCAmc2Vjb25kXyksIHNlY29uZF8odGhyZWFkLCAmZmlyc3RfKSB7fQorCisgIC8v
IE93bmVyc2hpcCBzdGF5cyB3aXRoIE1lZGlhVHJhbnNwb3J0UGFpcgorICBNZWRpYVRyYW5zcG9y
dEludGVyZmFjZSogZmlyc3QoKSB7IHJldHVybiAmZmlyc3RfOyB9CisgIE1lZGlhVHJhbnNwb3J0
SW50ZXJmYWNlKiBzZWNvbmQoKSB7IHJldHVybiAmc2Vjb25kXzsgfQorCisgIHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IGZpcnN0X2ZhY3RvcnkoKSB7CisgICAgcmV0dXJu
IGFic2w6Om1ha2VfdW5pcXVlPFdyYXBwZXJNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+KCZmaXJzdF8p
OworICB9CisKKyAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gc2Vjb25k
X2ZhY3RvcnkoKSB7CisgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFdyYXBwZXJNZWRpYVRy
YW5zcG9ydEZhY3Rvcnk+KCZzZWNvbmRfKTsKKyAgfQorCisgIHZvaWQgU2V0U3RhdGUoTWVkaWFU
cmFuc3BvcnRTdGF0ZSBzdGF0ZSkgeworICAgIGZpcnN0Xy5TZXRTdGF0ZShzdGF0ZSk7CisgICAg
c2Vjb25kXy5TZXRTdGF0ZShzdGF0ZSk7CisgIH0KKworICB2b2lkIEZsdXNoQXN5bmNJbnZva2Vz
KCkgeworICAgIGZpcnN0Xy5GbHVzaEFzeW5jSW52b2tlcygpOworICAgIHNlY29uZF8uRmx1c2hB
c3luY0ludm9rZXMoKTsKKyAgfQorCisgIFN0YXRzIEZpcnN0U3RhdHMoKSB7IHJldHVybiBmaXJz
dF8uR2V0U3RhdHMoKTsgfQorICBTdGF0cyBTZWNvbmRTdGF0cygpIHsgcmV0dXJuIHNlY29uZF8u
R2V0U3RhdHMoKTsgfQorCisgcHJpdmF0ZToKKyAgY2xhc3MgTG9vcGJhY2tNZWRpYVRyYW5zcG9y
dCA6IHB1YmxpYyBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSB7CisgICBwdWJsaWM6CisgICAgTG9v
cGJhY2tNZWRpYVRyYW5zcG9ydChydGM6OlRocmVhZCogdGhyZWFkLCBMb29wYmFja01lZGlhVHJh
bnNwb3J0KiBvdGhlcikKKyAgICAgICAgOiB0aHJlYWRfKHRocmVhZCksIG90aGVyXyhvdGhlcikg
e30KKworICAgIH5Mb29wYmFja01lZGlhVHJhbnNwb3J0KCkgeworICAgICAgcnRjOjpDcml0U2Nv
cGUgbG9jaygmc2lua19sb2NrXyk7CisgICAgICBSVENfQ0hFQ0soc2lua18gPT0gbnVsbHB0cik7
CisgICAgICBSVENfQ0hFQ0soZGF0YV9zaW5rXyA9PSBudWxscHRyKTsKKyAgICB9CisKKyAgICBS
VENFcnJvciBTZW5kQXVkaW9GcmFtZSh1aW50NjRfdCBjaGFubmVsX2lkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgZnJhbWUpIG92
ZXJyaWRlIHsKKyAgICAgIHsKKyAgICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc3RhdHNfbG9j
a18pOworICAgICAgICArK3N0YXRzXy5zZW50X2F1ZGlvX2ZyYW1lczsKKyAgICAgIH0KKyAgICAg
IGludm9rZXJfLkFzeW5jSW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIHRocmVhZF8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcywgY2hhbm5lbF9pZCwgZnJhbWVdIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfLT5PbkRhdGEoY2hhbm5l
bF9pZCwgc3RkOjptb3ZlKGZyYW1lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgIHJldHVybiBSVENFcnJvcjo6T0soKTsKKyAgICB9OworCisgICAgUlRDRXJy
b3IgU2VuZFZpZGVvRnJhbWUoCisgICAgICAgIHVpbnQ2NF90IGNoYW5uZWxfaWQsCisgICAgICAg
IGNvbnN0IE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmIGZyYW1lKSBvdmVycmlkZSB7
CisgICAgICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7CisgICAgfQorCisgICAgUlRDRXJyb3IgUmVx
dWVzdEtleUZyYW1lKHVpbnQ2NF90IGNoYW5uZWxfaWQpIG92ZXJyaWRlIHsKKyAgICAgIHJldHVy
biBSVENFcnJvcjo6T0soKTsKKyAgICB9CisKKyAgICB2b2lkIFNldFJlY2VpdmVBdWRpb1Npbmso
TWVkaWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmspIG92ZXJyaWRlIHsKKyAgICAg
IHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNpbmtfbG9ja18pOworICAgICAgaWYgKHNpbmspIHsKKyAg
ICAgICAgUlRDX0NIRUNLKHNpbmtfID09IG51bGxwdHIpOworICAgICAgfQorICAgICAgc2lua18g
PSBzaW5rOworICAgIH0KKworICAgIHZvaWQgU2V0UmVjZWl2ZVZpZGVvU2luayhNZWRpYVRyYW5z
cG9ydFZpZGVvU2lua0ludGVyZmFjZSogc2luaykgb3ZlcnJpZGUge30KKworICAgIHZvaWQgU2V0
TWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrKAorICAgICAgICBNZWRpYVRyYW5zcG9ydFN0YXRl
Q2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZSB7CisgICAgICBydGM6OkNyaXRTY29wZSBsb2Nr
KCZzaW5rX2xvY2tfKTsKKyAgICAgIHN0YXRlX2NhbGxiYWNrXyA9IGNhbGxiYWNrOworICAgICAg
aW52b2tlcl8uQXN5bmNJbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgdGhyZWFkXywgW3RoaXNd
IHsKKyAgICAgICAgUlRDX0RDSEVDS19SVU5fT04odGhyZWFkXyk7CisgICAgICAgIE9uU3RhdGVD
aGFuZ2VkKCk7CisgICAgICB9KTsKKyAgICB9CisKKyAgICBSVENFcnJvciBTZW5kRGF0YShpbnQg
Y2hhbm5lbF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTZW5kRGF0YVBhcmFtcyYg
cGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZm
ZXImIGJ1ZmZlcikgb3ZlcnJpZGUgeworICAgICAgaW52b2tlcl8uQXN5bmNJbnZva2U8dm9pZD4o
CisgICAgICAgICAgUlRDX0ZST01fSEVSRSwgdGhyZWFkXywgW3RoaXMsIGNoYW5uZWxfaWQsIHBh
cmFtcywgYnVmZmVyXSB7CisgICAgICAgICAgICBvdGhlcl8tPk9uRGF0YShjaGFubmVsX2lkLCBw
YXJhbXMudHlwZSwgYnVmZmVyKTsKKyAgICAgICAgICB9KTsKKyAgICAgIHJldHVybiBSVENFcnJv
cjo6T0soKTsKKyAgICB9CisKKyAgICBSVENFcnJvciBDbG9zZUNoYW5uZWwoaW50IGNoYW5uZWxf
aWQpIG92ZXJyaWRlIHsKKyAgICAgIGludm9rZXJfLkFzeW5jSW52b2tlPHZvaWQ+KFJUQ19GUk9N
X0hFUkUsIHRocmVhZF8sIFt0aGlzLCBjaGFubmVsX2lkXSB7CisgICAgICAgIG90aGVyXy0+T25S
ZW1vdGVDbG9zZUNoYW5uZWwoY2hhbm5lbF9pZCk7CisgICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxv
Y2soJnNpbmtfbG9ja18pOworICAgICAgICBpZiAoZGF0YV9zaW5rXykgeworICAgICAgICAgIGRh
dGFfc2lua18tPk9uQ2hhbm5lbENsb3NlZChjaGFubmVsX2lkKTsKKyAgICAgICAgfQorICAgICAg
fSk7CisgICAgICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7CisgICAgfQorCisgICAgdm9pZCBTZXRE
YXRhU2luayhEYXRhQ2hhbm5lbFNpbmsqIHNpbmspIG92ZXJyaWRlIHsKKyAgICAgIHJ0Yzo6Q3Jp
dFNjb3BlIGxvY2soJnNpbmtfbG9ja18pOworICAgICAgZGF0YV9zaW5rXyA9IHNpbms7CisgICAg
fQorCisgICAgdm9pZCBTZXRTdGF0ZShNZWRpYVRyYW5zcG9ydFN0YXRlIHN0YXRlKSB7CisgICAg
ICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCB0aHJlYWRfLCBbdGhp
cywgc3RhdGVdIHsKKyAgICAgICAgUlRDX0RDSEVDS19SVU5fT04odGhyZWFkXyk7CisgICAgICAg
IHN0YXRlXyA9IHN0YXRlOworICAgICAgICBPblN0YXRlQ2hhbmdlZCgpOworICAgICAgfSk7Cisg
ICAgfQorCisgICAgdm9pZCBGbHVzaEFzeW5jSW52b2tlcygpIHsgaW52b2tlcl8uRmx1c2godGhy
ZWFkXyk7IH0KKworICAgIFN0YXRzIEdldFN0YXRzKCkgeworICAgICAgcnRjOjpDcml0U2NvcGUg
bG9jaygmc3RhdHNfbG9ja18pOworICAgICAgcmV0dXJuIHN0YXRzXzsKKyAgICB9CisKKyAgIHBy
aXZhdGU6CisgICAgdm9pZCBPbkRhdGEodWludDY0X3QgY2hhbm5lbF9pZCwgTWVkaWFUcmFuc3Bv
cnRFbmNvZGVkQXVkaW9GcmFtZSBmcmFtZSkgeworICAgICAgeworICAgICAgICBydGM6OkNyaXRT
Y29wZSBsb2NrKCZzaW5rX2xvY2tfKTsKKyAgICAgICAgaWYgKHNpbmtfKSB7CisgICAgICAgICAg
c2lua18tPk9uRGF0YShjaGFubmVsX2lkLCBmcmFtZSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICAgIHsKKyAgICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc3RhdHNfbG9ja18pOworICAgICAg
ICArK3N0YXRzXy5yZWNlaXZlZF9hdWRpb19mcmFtZXM7CisgICAgICB9CisgICAgfQorCisgICAg
dm9pZCBPbkRhdGEoaW50IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAgICAgRGF0YU1lc3NhZ2VU
eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYg
YnVmZmVyKSB7CisgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZzaW5rX2xvY2tfKTsKKyAgICAg
IGlmIChkYXRhX3NpbmtfKSB7CisgICAgICAgIGRhdGFfc2lua18tPk9uRGF0YVJlY2VpdmVkKGNo
YW5uZWxfaWQsIHR5cGUsIGJ1ZmZlcik7CisgICAgICB9CisgICAgfQorCisgICAgdm9pZCBPblJl
bW90ZUNsb3NlQ2hhbm5lbChpbnQgY2hhbm5lbF9pZCkgeworICAgICAgcnRjOjpDcml0U2NvcGUg
bG9jaygmc2lua19sb2NrXyk7CisgICAgICBpZiAoZGF0YV9zaW5rXykgeworICAgICAgICBkYXRh
X3NpbmtfLT5PbkNoYW5uZWxDbG9zaW5nKGNoYW5uZWxfaWQpOworICAgICAgICBkYXRhX3Npbmtf
LT5PbkNoYW5uZWxDbG9zZWQoY2hhbm5lbF9pZCk7CisgICAgICB9CisgICAgfQorCisgICAgdm9p
ZCBPblN0YXRlQ2hhbmdlZCgpIFJUQ19SVU5fT04odGhyZWFkXykgeworICAgICAgcnRjOjpDcml0
U2NvcGUgbG9jaygmc2lua19sb2NrXyk7CisgICAgICBpZiAoc3RhdGVfY2FsbGJhY2tfKSB7Cisg
ICAgICAgIHN0YXRlX2NhbGxiYWNrXy0+T25TdGF0ZUNoYW5nZWQoc3RhdGVfKTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICBydGM6OlRocmVhZCogY29uc3QgdGhyZWFkXzsKKyAgICBydGM6OkNyaXRp
Y2FsU2VjdGlvbiBzaW5rX2xvY2tfOworICAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHN0YXRzX2xv
Y2tfOworCisgICAgTWVkaWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmtfIFJUQ19H
VUFSREVEX0JZKHNpbmtfbG9ja18pID0KKyAgICAgICAgbnVsbHB0cjsKKyAgICBEYXRhQ2hhbm5l
bFNpbmsqIGRhdGFfc2lua18gUlRDX0dVQVJERURfQlkoc2lua19sb2NrXykgPSBudWxscHRyOwor
ICAgIE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayogc3RhdGVfY2FsbGJhY2tfIFJUQ19HVUFS
REVEX0JZKHNpbmtfbG9ja18pID0KKyAgICAgICAgbnVsbHB0cjsKKworICAgIE1lZGlhVHJhbnNw
b3J0U3RhdGUgc3RhdGVfIFJUQ19HVUFSREVEX0JZKHRocmVhZF8pID0KKyAgICAgICAgTWVkaWFU
cmFuc3BvcnRTdGF0ZTo6a1BlbmRpbmc7CisKKyAgICBMb29wYmFja01lZGlhVHJhbnNwb3J0KiBj
b25zdCBvdGhlcl87CisKKyAgICBTdGF0cyBzdGF0c18gUlRDX0dVQVJERURfQlkoc3RhdHNfbG9j
a18pOworCisgICAgcnRjOjpBc3luY0ludm9rZXIgaW52b2tlcl87CisgIH07CisKKyAgTG9vcGJh
Y2tNZWRpYVRyYW5zcG9ydCBmaXJzdF87CisgIExvb3BiYWNrTWVkaWFUcmFuc3BvcnQgc2Vjb25k
XzsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVEVTVF9M
T09QQkFDS19NRURJQV9UUkFOU1BPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9y
dF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS90ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydF91bml0dGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYTc0MWEwNWNhNzk4NjJkNjgzNDBlODI1ZDdjY2Q1MGRlYWYyN2I3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qv
bG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsMTcxIEBACisv
KgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHZlY3Rvcj4K
KworI2luY2x1ZGUgImFwaS90ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydC5oIgorI2luY2x1
ZGUgInRlc3QvZ21vY2suaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK25hbWVzcGFjZSB7CisK
K2NsYXNzIE1vY2tNZWRpYVRyYW5zcG9ydEF1ZGlvU2lua0ludGVyZmFjZQorICAgIDogcHVibGlj
IE1lZGlhVHJhbnNwb3J0QXVkaW9TaW5rSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVU
SE9EMihPbkRhdGEsIHZvaWQodWludDY0X3QsIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJh
bWUpKTsKK307CisKK2NsYXNzIE1vY2tEYXRhQ2hhbm5lbFNpbmsgOiBwdWJsaWMgRGF0YUNoYW5u
ZWxTaW5rIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMyhPbkRhdGFSZWNlaXZlZCwKKyAgICAg
ICAgICAgICAgIHZvaWQoaW50LCBEYXRhTWVzc2FnZVR5cGUsIGNvbnN0IHJ0Yzo6Q29weU9uV3Jp
dGVCdWZmZXImKSk7CisgIE1PQ0tfTUVUSE9EMShPbkNoYW5uZWxDbG9zaW5nLCB2b2lkKGludCkp
OworICBNT0NLX01FVEhPRDEoT25DaGFubmVsQ2xvc2VkLCB2b2lkKGludCkpOworfTsKKworY2xh
c3MgTW9ja1N0YXRlQ2FsbGJhY2sgOiBwdWJsaWMgTWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNr
IHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMShPblN0YXRlQ2hhbmdlZCwgdm9pZChNZWRpYVRy
YW5zcG9ydFN0YXRlKSk7Cit9OworCisvLyBUZXN0IG9ubHkgdXNlcyB0aGUgc2VxdWVuY2UgbnVt
YmVyLgorTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSBDcmVhdGVBdWRpb0ZyYW1lKGlu
dCBzZXF1ZW5jZV9udW1iZXIpIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga1NhbXBsaW5nUmF0
ZUh6ID0gNDgwMDA7CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtTdGFydGluZ1NhbXBsZUluZGV4
ID0gMDsKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga1NhbXBsZXNQZXJDaGFubmVsID0gNDgwOwor
ICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qga1BheWxvYWRUeXBlID0gMTc7CisKKyAgcmV0dXJu
IE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUoCisgICAgICBrU2FtcGxpbmdSYXRlSHos
IGtTdGFydGluZ1NhbXBsZUluZGV4LCBrU2FtcGxlc1BlckNoYW5uZWwsCisgICAgICBzZXF1ZW5j
ZV9udW1iZXIsIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6OkZyYW1lVHlwZTo6a1Nw
ZWVjaCwKKyAgICAgIGtQYXlsb2FkVHlwZSwgc3RkOjp2ZWN0b3I8dWludDhfdD4oa1NhbXBsZXNQ
ZXJDaGFubmVsKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitURVNUKExvb3BiYWNrTWVkaWFU
cmFuc3BvcnQsIEF1ZGlvV2l0aE5vU2lua1NpbGVudGx5SWdub3JlZCkgeworICBzdGQ6OnVuaXF1
ZV9wdHI8cnRjOjpUaHJlYWQ+IHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAgdGhy
ZWFkLT5TdGFydCgpOworICBNZWRpYVRyYW5zcG9ydFBhaXIgdHJhbnNwb3J0X3BhaXIodGhyZWFk
LmdldCgpKTsKKyAgdHJhbnNwb3J0X3BhaXIuZmlyc3QoKS0+U2VuZEF1ZGlvRnJhbWUoMSwgQ3Jl
YXRlQXVkaW9GcmFtZSgwKSk7CisgIHRyYW5zcG9ydF9wYWlyLnNlY29uZCgpLT5TZW5kQXVkaW9G
cmFtZSgyLCBDcmVhdGVBdWRpb0ZyYW1lKDApKTsKKyAgdHJhbnNwb3J0X3BhaXIuRmx1c2hBc3lu
Y0ludm9rZXMoKTsKK30KKworVEVTVChMb29wYmFja01lZGlhVHJhbnNwb3J0LCBBdWRpb0RlbGl2
ZXJlZFRvU2luaykgeworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHRocmVhZCA9IHJ0
Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAgdGhyZWFkLT5TdGFydCgpOworICBNZWRpYVRyYW5zcG9y
dFBhaXIgdHJhbnNwb3J0X3BhaXIodGhyZWFkLmdldCgpKTsKKyAgdGVzdGluZzo6U3RyaWN0TW9j
azxNb2NrTWVkaWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2U+IHNpbms7CisgIEVYUEVDVF9D
QUxMKHNpbmssCisgICAgICAgICAgICAgIE9uRGF0YSgxLCB0ZXN0aW5nOjpQcm9wZXJ0eSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFt
ZTo6c2VxdWVuY2VfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6
OkVxKDEwKSkpKTsKKyAgdHJhbnNwb3J0X3BhaXIuc2Vjb25kKCktPlNldFJlY2VpdmVBdWRpb1Np
bmsoJnNpbmspOworICB0cmFuc3BvcnRfcGFpci5maXJzdCgpLT5TZW5kQXVkaW9GcmFtZSgxLCBD
cmVhdGVBdWRpb0ZyYW1lKDEwKSk7CisKKyAgdHJhbnNwb3J0X3BhaXIuRmx1c2hBc3luY0ludm9r
ZXMoKTsKKyAgdHJhbnNwb3J0X3BhaXIuc2Vjb25kKCktPlNldFJlY2VpdmVBdWRpb1NpbmsobnVs
bHB0cik7Cit9CisKK1RFU1QoTG9vcGJhY2tNZWRpYVRyYW5zcG9ydCwgRGF0YURlbGl2ZXJlZFRv
U2luaykgeworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHRocmVhZCA9IHJ0Yzo6VGhy
ZWFkOjpDcmVhdGUoKTsKKyAgdGhyZWFkLT5TdGFydCgpOworICBNZWRpYVRyYW5zcG9ydFBhaXIg
dHJhbnNwb3J0X3BhaXIodGhyZWFkLmdldCgpKTsKKworICBNb2NrRGF0YUNoYW5uZWxTaW5rIHNp
bms7CisgIHRyYW5zcG9ydF9wYWlyLmZpcnN0KCktPlNldERhdGFTaW5rKCZzaW5rKTsKKworICBj
b25zdCBpbnQgY2hhbm5lbF9pZCA9IDE7CisgIEVYUEVDVF9DQUxMKHNpbmssCisgICAgICAgICAg
ICAgIE9uRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgY2hhbm5lbF9pZCwgRGF0YU1l
c3NhZ2VUeXBlOjprVGV4dCwKKyAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlByb3BlcnR5PHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIsIGNvbnN0IGNoYXIqPigKKyAgICAgICAgICAgICAgICAgICAg
ICAmcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcjo6Y2RhdGEsIHRlc3Rpbmc6OlN0ckVxKCJmb28iKSkp
KTsKKworICBTZW5kRGF0YVBhcmFtcyBwYXJhbXM7CisgIHBhcmFtcy50eXBlID0gRGF0YU1lc3Nh
Z2VUeXBlOjprVGV4dDsKKyAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBidWZmZXIoImZvbyIpOwor
ICB0cmFuc3BvcnRfcGFpci5zZWNvbmQoKS0+U2VuZERhdGEoY2hhbm5lbF9pZCwgcGFyYW1zLCBi
dWZmZXIpOworCisgIHRyYW5zcG9ydF9wYWlyLkZsdXNoQXN5bmNJbnZva2VzKCk7CisgIHRyYW5z
cG9ydF9wYWlyLmZpcnN0KCktPlNldERhdGFTaW5rKG51bGxwdHIpOworfQorCitURVNUKExvb3Bi
YWNrTWVkaWFUcmFuc3BvcnQsIENsb3NlRGVsaXZlcmVkVG9TaW5rKSB7CisgIHN0ZDo6dW5pcXVl
X3B0cjxydGM6OlRocmVhZD4gdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOworICB0aHJl
YWQtPlN0YXJ0KCk7CisgIE1lZGlhVHJhbnNwb3J0UGFpciB0cmFuc3BvcnRfcGFpcih0aHJlYWQu
Z2V0KCkpOworCisgIE1vY2tEYXRhQ2hhbm5lbFNpbmsgZmlyc3Rfc2luazsKKyAgdHJhbnNwb3J0
X3BhaXIuZmlyc3QoKS0+U2V0RGF0YVNpbmsoJmZpcnN0X3NpbmspOworCisgIE1vY2tEYXRhQ2hh
bm5lbFNpbmsgc2Vjb25kX3Npbms7CisgIHRyYW5zcG9ydF9wYWlyLnNlY29uZCgpLT5TZXREYXRh
U2luaygmc2Vjb25kX3NpbmspOworCisgIGNvbnN0IGludCBjaGFubmVsX2lkID0gMTsKKyAgewor
ICAgIHRlc3Rpbmc6OkluU2VxdWVuY2UgczsKKyAgICBFWFBFQ1RfQ0FMTChzZWNvbmRfc2luaywg
T25DaGFubmVsQ2xvc2luZyhjaGFubmVsX2lkKSk7CisgICAgRVhQRUNUX0NBTEwoc2Vjb25kX3Np
bmssIE9uQ2hhbm5lbENsb3NlZChjaGFubmVsX2lkKSk7CisgICAgRVhQRUNUX0NBTEwoZmlyc3Rf
c2luaywgT25DaGFubmVsQ2xvc2VkKGNoYW5uZWxfaWQpKTsKKyAgfQorCisgIHRyYW5zcG9ydF9w
YWlyLmZpcnN0KCktPkNsb3NlQ2hhbm5lbChjaGFubmVsX2lkKTsKKworICB0cmFuc3BvcnRfcGFp
ci5GbHVzaEFzeW5jSW52b2tlcygpOworICB0cmFuc3BvcnRfcGFpci5maXJzdCgpLT5TZXREYXRh
U2luayhudWxscHRyKTsKKyAgdHJhbnNwb3J0X3BhaXIuc2Vjb25kKCktPlNldERhdGFTaW5rKG51
bGxwdHIpOworfQorCitURVNUKExvb3BiYWNrTWVkaWFUcmFuc3BvcnQsIEluaXRpYWxTdGF0ZURl
bGl2ZXJlZFdoZW5DYWxsYmFja1NldCkgeworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+
IHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAgdGhyZWFkLT5TdGFydCgpOworICBN
ZWRpYVRyYW5zcG9ydFBhaXIgdHJhbnNwb3J0X3BhaXIodGhyZWFkLmdldCgpKTsKKworICBNb2Nr
U3RhdGVDYWxsYmFjayBzdGF0ZV9jYWxsYmFjazsKKworICBFWFBFQ1RfQ0FMTChzdGF0ZV9jYWxs
YmFjaywgT25TdGF0ZUNoYW5nZWQoTWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1BlbmRpbmcpKTsKKyAg
dHJhbnNwb3J0X3BhaXIuZmlyc3QoKS0+U2V0TWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrKCZz
dGF0ZV9jYWxsYmFjayk7CisgIHRyYW5zcG9ydF9wYWlyLkZsdXNoQXN5bmNJbnZva2VzKCk7Cit9
CisKK1RFU1QoTG9vcGJhY2tNZWRpYVRyYW5zcG9ydCwgQ2hhbmdlZFN0YXRlRGVsaXZlcmVkV2hl
bkNhbGxiYWNrU2V0KSB7CisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gdGhyZWFkID0g
cnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOworICB0aHJlYWQtPlN0YXJ0KCk7CisgIE1lZGlhVHJhbnNw
b3J0UGFpciB0cmFuc3BvcnRfcGFpcih0aHJlYWQuZ2V0KCkpOworCisgIHRyYW5zcG9ydF9wYWly
LlNldFN0YXRlKE1lZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJsZSk7CisgIHRyYW5zcG9ydF9w
YWlyLkZsdXNoQXN5bmNJbnZva2VzKCk7CisKKyAgTW9ja1N0YXRlQ2FsbGJhY2sgc3RhdGVfY2Fs
bGJhY2s7CisKKyAgRVhQRUNUX0NBTEwoc3RhdGVfY2FsbGJhY2ssIE9uU3RhdGVDaGFuZ2VkKE1l
ZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJsZSkpOworICB0cmFuc3BvcnRfcGFpci5maXJzdCgp
LT5TZXRNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2soJnN0YXRlX2NhbGxiYWNrKTsKKyAgdHJh
bnNwb3J0X3BhaXIuRmx1c2hBc3luY0ludm9rZXMoKTsKK30KKworVEVTVChMb29wYmFja01lZGlh
VHJhbnNwb3J0LCBTdGF0ZUNoYW5nZURlbGl2ZXJlZFRvQ2FsbGJhY2spIHsKKyAgc3RkOjp1bmlx
dWVfcHRyPHJ0Yzo6VGhyZWFkPiB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgIHRo
cmVhZC0+U3RhcnQoKTsKKyAgTWVkaWFUcmFuc3BvcnRQYWlyIHRyYW5zcG9ydF9wYWlyKHRocmVh
ZC5nZXQoKSk7CisKKyAgTW9ja1N0YXRlQ2FsbGJhY2sgc3RhdGVfY2FsbGJhY2s7CisKKyAgRVhQ
RUNUX0NBTEwoc3RhdGVfY2FsbGJhY2ssIE9uU3RhdGVDaGFuZ2VkKE1lZGlhVHJhbnNwb3J0U3Rh
dGU6OmtQZW5kaW5nKSk7CisgIEVYUEVDVF9DQUxMKHN0YXRlX2NhbGxiYWNrLCBPblN0YXRlQ2hh
bmdlZChNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpKTsKKyAgdHJhbnNwb3J0X3BhaXIu
Zmlyc3QoKS0+U2V0TWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrKCZzdGF0ZV9jYWxsYmFjayk7
CisgIHRyYW5zcG9ydF9wYWlyLlNldFN0YXRlKE1lZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJs
ZSk7CisgIHRyYW5zcG9ydF9wYWlyLkZsdXNoQXN5bmNJbnZva2VzKCk7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZGVjcnlwdG9yLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja19mcmFtZV9kZWNy
eXB0b3IuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRiNTRmOTY2Y2Q4YzA2MTU4NTY2YTRiNTA1NzM1Mjk1NDlm
MGFlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZGVjcnlwdG9yLmNjCkBAIC0wLDAgKzEsMTgg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
CisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX2ZyYW1lX2Rl
Y3J5cHRvci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworTW9ja0ZyYW1lRGVjcnlwdG9yOjpN
b2NrRnJhbWVEZWNyeXB0b3IoKSA9IGRlZmF1bHQ7CitNb2NrRnJhbWVEZWNyeXB0b3I6On5Nb2Nr
RnJhbWVEZWNyeXB0b3IoKSA9IGRlZmF1bHQ7CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90
ZXN0L21vY2tfZnJhbWVfZGVjcnlwdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX2ZyYW1lX2RlY3J5cHRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU4MDM5NjU1NGY0ZTA1YmY3MmM4ZjdjY2RkNjc4NjI5ODRhZDFkYzEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9t
b2NrX2ZyYW1lX2RlY3J5cHRvci5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKKyNpZm5kZWYgQVBJX1RFU1RfTU9DS19GUkFNRV9ERUNSWVBUT1JfSF8KKyNkZWZpbmUgQVBJ
X1RFU1RfTU9DS19GUkFNRV9ERUNSWVBUT1JfSF8KKworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2lu
Y2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVkZWNyeXB0b3JpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJ0
ZXN0L2dtb2NrLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBNb2NrRnJhbWVEZWNy
eXB0b3IgOiBwdWJsaWMgRnJhbWVEZWNyeXB0b3JJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgTW9j
a0ZyYW1lRGVjcnlwdG9yKCk7CisgIH5Nb2NrRnJhbWVEZWNyeXB0b3IoKSBvdmVycmlkZTsKKwor
ICBNT0NLX01FVEhPRDYoRGVjcnlwdCwKKyAgICAgICAgICAgICAgIGludChjcmlja2V0OjpNZWRp
YVR5cGUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDMyX3Q+JiwK
KyAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiwKKyAgICAg
ICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiwKKyAgICAgICAgICAg
ICAgICAgICBydGM6OkFycmF5Vmlldzx1aW50OF90PiwKKyAgICAgICAgICAgICAgICAgICBzaXpl
X3QqKSk7CisKKyAgTU9DS19NRVRIT0QyKEdldE1heFBsYWludGV4dEJ5dGVTaXplLAorICAgICAg
ICAgICAgICAgc2l6ZV90KGNyaWNrZXQ6Ok1lZGlhVHlwZSwgc2l6ZV90IGVuY3J5cHRlZF9mcmFt
ZV9zaXplKSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJ
X1RFU1RfTU9DS19GUkFNRV9ERUNSWVBUT1JfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9y
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qv
bW9ja19mcmFtZV9lbmNyeXB0b3IuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk3MjI1OWYwNTdlYzcyYjQ3MWRm
MDczMTJhMDRhNDkxOGRlZTI2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9yLmNj
CkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvdGVz
dC9tb2NrX2ZyYW1lX2VuY3J5cHRvci5oIgorI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKK01vY2tGcmFtZUVuY3J5cHRvcjo6TW9ja0ZyYW1lRW5jcnlwdG9y
KCkgPSBkZWZhdWx0OworTW9ja0ZyYW1lRW5jcnlwdG9yOjp+TW9ja0ZyYW1lRW5jcnlwdG9yKCkg
PSBkZWZhdWx0OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX2ZyYW1lX2Vu
Y3J5cHRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3Rlc3QvbW9ja19mcmFtZV9lbmNyeXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGZiMWZkZTg3YjgyNWEx
N2E3M2ZkZjRlNjA2MGRkYTZmMDFkYmMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja19mcmFtZV9lbmNyeXB0
b3IuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9U
RVNUX01PQ0tfRlJBTUVfRU5DUllQVE9SX0hfCisjZGVmaW5lIEFQSV9URVNUX01PQ0tfRlJBTUVf
RU5DUllQVE9SX0hfCisKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZW5jcnlwdG9yaW50ZXJm
YWNlLmgiCisjaW5jbHVkZSAidGVzdC9nbW9jay5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKwor
Y2xhc3MgTW9ja0ZyYW1lRW5jcnlwdG9yIDogcHVibGljIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNl
IHsKKyBwdWJsaWM6CisgIE1vY2tGcmFtZUVuY3J5cHRvcigpOworICB+TW9ja0ZyYW1lRW5jcnlw
dG9yKCkgb3ZlcnJpZGU7CisKKyAgTU9DS19NRVRIT0Q2KEVuY3J5cHQsCisgICAgICAgICAgICAg
ICBpbnQoY3JpY2tldDo6TWVkaWFUeXBlLAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90LAor
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+LAorICAgICAg
ICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+LAorICAgICAgICAgICAg
ICAgICAgIHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4X3Q+LAorICAgICAgICAgICAgICAgICAgIHNpemVf
dCopKTsKKworICBNT0NLX01FVEhPRDIoR2V0TWF4Q2lwaGVydGV4dEJ5dGVTaXplLAorICAgICAg
ICAgICAgICAgc2l6ZV90KGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlLCBzaXplX3QgZnJh
bWVfc2l6ZSkpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQ
SV9URVNUX01PQ0tfRlJBTUVfRU5DUllQVE9SX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2JpdHJhdGVf
YWxsb2NhdG9yX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90ZXN0L21vY2tfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBjYWUwNjFhYjc1ZGNkNjY3NTcwZGJiN2NmMzMzY2Y1NTA2ZjFmODQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdGVzdC9tb2NrX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaApAQCAtMCwwICsx
LDM3IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVTVF9NT0NLX1ZJ
REVPX0JJVFJBVEVfQUxMT0NBVE9SX0ZBQ1RPUllfSF8KKyNkZWZpbmUgQVBJX1RFU1RfTU9DS19W
SURFT19CSVRSQVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisK
KyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgor
I2luY2x1ZGUgInRlc3QvZ21vY2suaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIE1v
Y2tWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5CisgICAgOiBwdWJsaWMgd2VicnRjOjpWaWRl
b0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvcj4gQ3JlYXRlVmlkZW9CaXRyYXRlQWxsb2NhdG9y
KAorICAgICAgY29uc3QgVmlkZW9Db2RlYyYgY29kZWMpIHsKKyAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvcj4oCisgICAgICAgIENyZWF0ZVZpZGVvQml0cmF0
ZUFsbG9jYXRvclByb3h5KGNvZGVjKSk7CisgIH0KKyAgfk1vY2tWaWRlb0JpdHJhdGVBbGxvY2F0
b3JGYWN0b3J5KCkgeyBEaWUoKTsgfQorICBNT0NLX01FVEhPRDEoQ3JlYXRlVmlkZW9CaXRyYXRl
QWxsb2NhdG9yUHJveHksCisgICAgICAgICAgICAgICBWaWRlb0JpdHJhdGVBbGxvY2F0b3IqKGNv
bnN0IFZpZGVvQ29kZWMmKSk7CisgIE1PQ0tfTUVUSE9EMChEaWUsIHZvaWQoKSk7Cit9OworCit9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1RFU1RfTU9DS19WSURFT19C
SVRSQVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2Nr
X3ZpZGVvX2RlY29kZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVlZDBlMTY3ODJhYTkwMzlhNGRlYTY2M2M5
NTYxZmUzZTcxNThkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5jYwpAQCAtMCww
ICsxLDIwIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImFwaS90ZXN0L21v
Y2tfdmlkZW9fZGVjb2Rlci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworTW9ja0RlY29kZWRJ
bWFnZUNhbGxiYWNrOjpNb2NrRGVjb2RlZEltYWdlQ2FsbGJhY2soKSA9IGRlZmF1bHQ7CitNb2Nr
RGVjb2RlZEltYWdlQ2FsbGJhY2s6On5Nb2NrRGVjb2RlZEltYWdlQ2FsbGJhY2soKSA9IGRlZmF1
bHQ7CitNb2NrVmlkZW9EZWNvZGVyOjpNb2NrVmlkZW9EZWNvZGVyKCkgPSBkZWZhdWx0OworTW9j
a1ZpZGVvRGVjb2Rlcjo6fk1vY2tWaWRlb0RlY29kZXIoKSA9IGRlZmF1bHQ7CisKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192aWRlb19kZWNvZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTZmZjU0NjNmZGUxNDA3ZGJkODIxZGZhNGUzNWVhNDNjMzFhZDBmMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9URVNUX01PQ0tfVklERU9fREVDT0RFUl9I
XworI2RlZmluZSBBUElfVEVTVF9NT0NLX1ZJREVPX0RFQ09ERVJfSF8KKworI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgInRlc3QvZ21vY2suaCIK
KworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIE1vY2tEZWNvZGVkSW1hZ2VDYWxsYmFjayA6
IHB1YmxpYyBEZWNvZGVkSW1hZ2VDYWxsYmFjayB7CisgcHVibGljOgorICBNb2NrRGVjb2RlZElt
YWdlQ2FsbGJhY2soKTsKKyAgfk1vY2tEZWNvZGVkSW1hZ2VDYWxsYmFjaygpIG92ZXJyaWRlOwor
CisgIE1PQ0tfTUVUSE9EMShEZWNvZGVkLCBpbnQzMl90KFZpZGVvRnJhbWUmIGRlY29kZWRJbWFn
ZSkpOyAgLy8gTk9MSU5UCisgIE1PQ0tfTUVUSE9EMihEZWNvZGVkLAorICAgICAgICAgICAgICAg
aW50MzJfdChWaWRlb0ZyYW1lJiBkZWNvZGVkSW1hZ2UsICAvLyBOT0xJTlQKKyAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBkZWNvZGVfdGltZV9tcykpOworICBNT0NLX01FVEhPRDMoRGVj
b2RlZCwKKyAgICAgICAgICAgICAgIHZvaWQoVmlkZW9GcmFtZSYgZGVjb2RlZEltYWdlLCAgLy8g
Tk9MSU5UCisgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGludDMyX3Q+IGRlY29k
ZV90aW1lX21zLAorICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBx
cCkpOworICBNT0NLX01FVEhPRDEoUmVjZWl2ZWREZWNvZGVkUmVmZXJlbmNlRnJhbWUsCisgICAg
ICAgICAgICAgICBpbnQzMl90KGNvbnN0IHVpbnQ2NF90IHBpY3R1cmVJZCkpOworICBNT0NLX01F
VEhPRDEoUmVjZWl2ZWREZWNvZGVkRnJhbWUsIGludDMyX3QoY29uc3QgdWludDY0X3QgcGljdHVy
ZUlkKSk7Cit9OworCitjbGFzcyBNb2NrVmlkZW9EZWNvZGVyIDogcHVibGljIFZpZGVvRGVjb2Rl
ciB7CisgcHVibGljOgorICBNb2NrVmlkZW9EZWNvZGVyKCk7CisgIH5Nb2NrVmlkZW9EZWNvZGVy
KCkgb3ZlcnJpZGU7CisKKyAgTU9DS19NRVRIT0QyKEluaXREZWNvZGUsCisgICAgICAgICAgICAg
ICBpbnQzMl90KGNvbnN0IFZpZGVvQ29kZWMqIGNvZGVjU2V0dGluZ3MsIGludDMyX3QgbnVtYmVy
T2ZDb3JlcykpOworICBNT0NLX01FVEhPRDQoRGVjb2RlLAorICAgICAgICAgICAgICAgaW50MzJf
dChjb25zdCBFbmNvZGVkSW1hZ2UmIGlucHV0SW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgbWlzc2luZ0ZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNT
cGVjaWZpY0luZm8qIGNvZGVjU3BlY2lmaWNJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90IHJlbmRlclRpbWVNcykpOworICBNT0NLX01FVEhPRDEoUmVnaXN0ZXJEZWNvZGVDb21w
bGV0ZUNhbGxiYWNrLAorICAgICAgICAgICAgICAgaW50MzJfdChEZWNvZGVkSW1hZ2VDYWxsYmFj
ayogY2FsbGJhY2spKTsKKyAgTU9DS19NRVRIT0QwKFJlbGVhc2UsIGludDMyX3QoKSk7CisgIE1P
Q0tfTUVUSE9EMChDb3B5LCBWaWRlb0RlY29kZXIqKCkpOworfTsKKworfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9URVNUX01PQ0tfVklERU9fREVDT0RFUl9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rl
c3QvbW9ja192aWRlb19lbmNvZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192aWRlb19lbmNvZGVyLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEw
ZDgyYjFjMzNiMWZjMjdlYmFlZTk0OGE2YjliYzhlM2NmMzllYTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2Nr
X3ZpZGVvX2VuY29kZXIuY2MKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMp
IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIuaCIKKworbmFtZXNwYWNl
IHdlYnJ0YyB7CisKK01vY2tFbmNvZGVkSW1hZ2VDYWxsYmFjazo6TW9ja0VuY29kZWRJbWFnZUNh
bGxiYWNrKCkgPSBkZWZhdWx0OworTW9ja0VuY29kZWRJbWFnZUNhbGxiYWNrOjp+TW9ja0VuY29k
ZWRJbWFnZUNhbGxiYWNrKCkgPSBkZWZhdWx0OworTW9ja1ZpZGVvRW5jb2Rlcjo6TW9ja1ZpZGVv
RW5jb2RlcigpID0gZGVmYXVsdDsKK01vY2tWaWRlb0VuY29kZXI6On5Nb2NrVmlkZW9FbmNvZGVy
KCkgPSBkZWZhdWx0OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVv
X2VuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyZjE3YmFiODg0MjU1YmU4
ODkwZjU2NDhlMWQ5YTc3ZDc4YTlmZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIu
aApAQCAtMCwwICsxLDU3IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElf
VEVTVF9NT0NLX1ZJREVPX0VOQ09ERVJfSF8KKyNkZWZpbmUgQVBJX1RFU1RfTU9DS19WSURFT19F
TkNPREVSX0hfCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29k
ZWNzL3ZpZGVvX2VuY29kZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworCitjbGFzcyBNb2NrRW5jb2RlZEltYWdlQ2FsbGJhY2sgOiBwdWJsaWMgRW5j
b2RlZEltYWdlQ2FsbGJhY2sgeworIHB1YmxpYzoKKyAgTW9ja0VuY29kZWRJbWFnZUNhbGxiYWNr
KCk7CisgIH5Nb2NrRW5jb2RlZEltYWdlQ2FsbGJhY2soKTsKKyAgTU9DS19NRVRIT0QzKE9uRW5j
b2RlZEltYWdlLAorICAgICAgICAgICAgICAgUmVzdWx0KGNvbnN0IEVuY29kZWRJbWFnZSYgZW5j
b2RlZEltYWdlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZv
KiBjb2RlY1NwZWNpZmljSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSVFBGcmFn
bWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKSk7Cit9OworCitjbGFzcyBNb2NrVmlkZW9F
bmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CisgcHVibGljOgorICBNb2NrVmlkZW9FbmNv
ZGVyKCk7CisgIH5Nb2NrVmlkZW9FbmNvZGVyKCk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMihWZXJz
aW9uLCBpbnQzMl90KGludDhfdCogdmVyc2lvbiwgaW50MzJfdCBsZW5ndGgpKTsKKyAgTU9DS19N
RVRIT0QzKEluaXRFbmNvZGUsCisgICAgICAgICAgICAgICBpbnQzMl90KGNvbnN0IFZpZGVvQ29k
ZWMqIGNvZGVjU2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbnVtYmVy
T2ZDb3JlcywKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1heFBheWxvYWRTaXplKSk7
CisgIE1PQ0tfTUVUSE9EMyhFbmNvZGUsCisgICAgICAgICAgICAgICBpbnQzMl90KGNvbnN0IFZp
ZGVvRnJhbWUmIGlucHV0SW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVj
U3BlY2lmaWNJbmZvKiBjb2RlY1NwZWNpZmljSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiogZnJhbWVfdHlwZXMpKTsKKyAgTU9DS19NRVRI
T0QxKFJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaywKKyAgICAgICAgICAgICAgIGludDMy
X3QoRW5jb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSk7CisgIE1PQ0tfTUVUSE9EMChSZWxl
YXNlLCBpbnQzMl90KCkpOworICBNT0NLX01FVEhPRDAoUmVzZXQsIGludDMyX3QoKSk7CisgIE1P
Q0tfTUVUSE9EMihTZXRSYXRlcywgaW50MzJfdCh1aW50MzJfdCBuZXdCaXRSYXRlLCB1aW50MzJf
dCBmcmFtZVJhdGUpKTsKKyAgTU9DS19NRVRIT0QyKFNldFJhdGVBbGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgaW50MzJfdChjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBuZXdCaXRSYXRl
LAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZVJhdGUpKTsKKyAgTU9DS19D
T05TVF9NRVRIT0QwKEdldEVuY29kZXJJbmZvLCBFbmNvZGVySW5mbyh2b2lkKSk7Cit9OworCit9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1RFU1RfTU9DS19WSURFT19F
TkNPREVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaAppbmRl
eCBhZWMzMDBjYWEyYjNlNGZkOGViNmViMjk1NjliNTJjZjgxZWM2NTc0Li5jMDNiNGNhNGNiZjI4
YjVhZGIxYjlkNTYxNTNlZjljYmFjMTUyMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3Np
bXVsYXRlZF9uZXR3b3JrLmgKQEAgLTQyLDExICs0MiwxMSBAQCBzdHJ1Y3QgUGFja2V0RGVsaXZl
cnlJbmZvIHsKICAgdWludDY0X3QgcGFja2V0X2lkOwogfTsKIAotLy8gRGVmYXVsdE5ldHdvcmtT
aW11bGF0aW9uQ29uZmlnIGlzIGEgZGVmYXVsdCBuZXR3b3JrIGJlaGF2aW9yIGNvbmZpZ3VyYXRp
b24KLS8vIGZvciBkZWZhdWx0IG5ldHdvcmsgYmVoYXZpb3IgdGhhdCB3aWxsIGJlIHVzZWQgYnkg
V2ViUlRDIGlmIG5vIGN1c3RvbQorLy8gQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBpcyBh
IGJ1aWx0LWluIG5ldHdvcmsgYmVoYXZpb3IgY29uZmlndXJhdGlvbgorLy8gZm9yIGJ1aWx0LWlu
IG5ldHdvcmsgYmVoYXZpb3IgdGhhdCB3aWxsIGJlIHVzZWQgYnkgV2ViUlRDIGlmIG5vIGN1c3Rv
bQogLy8gTmV0d29ya0JlaGF2aW9ySW50ZXJmYWNlIGlzIHByb3ZpZGVkLgotc3RydWN0IERlZmF1
bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNv
bmZpZygpIHt9CitzdHJ1Y3QgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyB7CisgIEJ1aWx0
SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSB7fQogICAvLyBRdWV1ZSBsZW5ndGggaW4gbnVtYmVy
IG9mIHBhY2tldHMuCiAgIHNpemVfdCBxdWV1ZV9sZW5ndGhfcGFja2V0cyA9IDA7CiAgIC8vIERl
bGF5IGluIGFkZGl0aW9uIHRvIGNhcGFjaXR5IGluZHVjZWQgZGVsYXkuCkBAIC03NSw5ICs3NSw2
IEBAIGNsYXNzIE5ldHdvcmtCZWhhdmlvckludGVyZmFjZSB7CiAgIHZpcnR1YWwgfk5ldHdvcmtC
ZWhhdmlvckludGVyZmFjZSgpID0gZGVmYXVsdDsKIH07CiAKLS8vIERlcHJlY2F0ZWQuIERPIE5P
VCBVU0UuIFVzZSBOZXR3b3JrQmVoYXZpb3JJbnRlcmZhY2UgaW5zdGVhZC4KLXVzaW5nIE5ldHdv
cmtTaW11bGF0aW9uSW50ZXJmYWNlID0gTmV0d29ya0JlaGF2aW9ySW50ZXJmYWNlOwotCiB9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCiAKICNlbmRpZiAgLy8gQVBJX1RFU1RfU0lNVUxBVEVEX05FVFdP
UktfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90ZXN0L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUu
aAppbmRleCBlN2VhYjI0MTM0OGRhMTgwY2E1YzgzZDU2NWEzMTE5MWNmODg5NDcyLi41MjcwZDEz
MzA2NGEwZDE0OTI4YjMxOGVkMGI4MjYwZTA4ZjQyOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9zaW11bGNhc3RfdGVzdF9m
aXh0dXJlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3Rlc3Qvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNz
IFNpbXVsY2FzdFRlc3RGaXh0dXJlIHsKICAgdmlydHVhbCB2b2lkIFRlc3RTcGF0aW9UZW1wb3Jh
bExheWVyczMzM1BhdHRlcm5FbmNvZGVyKCkgPSAwOwogICB2aXJ0dWFsIHZvaWQgVGVzdFNwYXRp
b1RlbXBvcmFsTGF5ZXJzMzIxUGF0dGVybkVuY29kZXIoKSA9IDA7CiAgIHZpcnR1YWwgdm9pZCBU
ZXN0U3RyaWRlRW5jb2RlRGVjb2RlKCkgPSAwOworICB2aXJ0dWFsIHZvaWQgVGVzdERlY29kZVdp
ZHRoSGVpZ2h0U2V0KCkgPSAwOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3Rl
c3RfZGVwZW5kZW5jeV9mYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3Rlc3QvdGVzdF9kZXBlbmRlbmN5X2ZhY3RvcnkuY2MKaW5kZXggM2U1
OWJjMDk1Yzg3NDc0OTcwYjU0ZDg2MTcyNzcwZTU0NzkyZGUwNC4uMTc5YzYyMzk0MGYyYmY0ZmYw
YmIwOTFkZDc5Mzk5ZDliYzVkYWQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdGVzdF9kZXBlbmRlbmN5X2ZhY3RvcnkuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qv
dGVzdF9kZXBlbmRlbmN5X2ZhY3RvcnkuY2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9y
eS5oIgogI2luY2x1ZGUgImFwaS90ZXN0L3Rlc3RfZGVwZW5kZW5jeV9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW8vQlVJTEQuZ24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRl
by9CVUlMRC5nbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjYzYTRhY2IzZGEyZjRhNTllYTkyZDcwZmU3ZWEyZjgw
NDJiNDRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW8vQlVJTEQuZ24KQEAgLTAsMCArMSwyNCBAQAorIyBD
b3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisjCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKKyMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisjIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyMgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorIyBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKwor
aW1wb3J0KCIuLi8uLi8uLi93ZWJydGMuZ25pIikKKworcnRjX3NvdXJjZV9zZXQoImZ1bmN0aW9u
X3ZpZGVvX2ZhY3RvcnkiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHRlc3Rvbmx5ID0g
dHJ1ZQorICBwdWJsaWMgPSBbCisgICAgImZ1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5o
IiwKKyAgICAiZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiLAorICBdCisKKyAgZGVw
cyA9IFsKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vdmlkZW9f
Y29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnkiLAorICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19kZWNvZGVy
X2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAzYTQzMjM5OTc2YTAxMTM5ZWY3MDllMjk0ZTAzOGYxOTkwNDkyZjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92
aWRlby9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaApAQCAtMCwwICsxLDU2IEBACisv
KgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVTVF9WSURFT19GVU5DVElPTl9W
SURFT19ERUNPREVSX0ZBQ1RPUllfSF8KKyNkZWZpbmUgQVBJX1RFU1RfVklERU9fRlVOQ1RJT05f
VklERU9fREVDT0RFUl9GQUNUT1JZX0hfCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2lu
Y2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgorI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCisv
LyBBIGRlY29kZXIgZmFjdG9yeSBwcm9kdWNpbmcgZGVjb2RlcnMgYnkgY2FsbGluZyBhIHN1cHBs
aWVkIGNyZWF0ZSBmdW5jdGlvbi4KK2NsYXNzIEZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9yeSBm
aW5hbCA6IHB1YmxpYyBWaWRlb0RlY29kZXJGYWN0b3J5IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0
IEZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9yeSgKKyAgICAgIHN0ZDo6ZnVuY3Rpb248c3RkOjp1
bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4oKT4gY3JlYXRlKQorICAgICAgOiBjcmVhdGVfKFtjcmVh
dGVdKGNvbnN0IFNkcFZpZGVvRm9ybWF0JikgeyByZXR1cm4gY3JlYXRlKCk7IH0pIHt9CisgIGV4
cGxpY2l0IEZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9yeSgKKyAgICAgIHN0ZDo6ZnVuY3Rpb248
c3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4oY29uc3QgU2RwVmlkZW9Gb3JtYXQmKT4KKyAg
ICAgICAgICBjcmVhdGUpCisgICAgICA6IGNyZWF0ZV8oc3RkOjptb3ZlKGNyZWF0ZSkpIHt9CisK
KyAgLy8gVW51c2VkIGJ5IHRlc3RzLgorICBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gR2V0
U3VwcG9ydGVkRm9ybWF0cygpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICBSVENfTk9UUkVBQ0hFRCgp
OworICAgIHJldHVybiB7fTsKKyAgfQorCisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+
IENyZWF0ZVZpZGVvRGVjb2RlcigKKyAgICAgIGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQp
IG92ZXJyaWRlIHsKKyAgICByZXR1cm4gY3JlYXRlXyhmb3JtYXQpOworICB9CisKKyBwcml2YXRl
OgorICBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+KGNv
bnN0IFNkcFZpZGVvRm9ybWF0Jik+CisgICAgICBjcmVhdGVfOworfTsKKworfSAgLy8gbmFtZXNw
YWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVEVTVF9W
SURFT19GVU5DVElPTl9WSURFT19ERUNPREVSX0ZBQ1RPUllfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3ZpZGVvL2Z1bmN0
aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODVmODQ4Y2QxZmRjODUzMjhhMjQwMmRiMmJhZDgxYWQwMTc4Y2My
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oCkBA
IC0wLDAgKzEsNjUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9URVNU
X1ZJREVPX0ZVTkNUSU9OX1ZJREVPX0VOQ09ERVJfRkFDVE9SWV9IXworI2RlZmluZSBBUElfVEVT
VF9WSURFT19GVU5DVElPTl9WSURFT19FTkNPREVSX0ZBQ1RPUllfSF8KKworI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVk
ZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0
LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1l
c3BhY2UgdGVzdCB7CisKKy8vIEFuIGVuY29kZXIgZmFjdG9yeSBwcm9kdWNpbmcgZW5jb2RlcnMg
YnkgY2FsbGluZyBhIHN1cHBsaWVkIGNyZWF0ZQorLy8gZnVuY3Rpb24uCitjbGFzcyBGdW5jdGlv
blZpZGVvRW5jb2RlckZhY3RvcnkgZmluYWwgOiBwdWJsaWMgVmlkZW9FbmNvZGVyRmFjdG9yeSB7
CisgcHVibGljOgorICBleHBsaWNpdCBGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkoCisgICAg
ICBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KCk+IGNyZWF0ZSkK
KyAgICAgIDogY3JlYXRlXyhbY3JlYXRlXShjb25zdCBTZHBWaWRlb0Zvcm1hdCYpIHsgcmV0dXJu
IGNyZWF0ZSgpOyB9KSB7fQorICBleHBsaWNpdCBGdW5jdGlvblZpZGVvRW5jb2RlckZhY3Rvcnko
CisgICAgICBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KGNvbnN0
IFNkcFZpZGVvRm9ybWF0Jik+CisgICAgICAgICAgY3JlYXRlKQorICAgICAgOiBjcmVhdGVfKHN0
ZDo6bW92ZShjcmVhdGUpKSB7fQorCisgIC8vIFVudXNlZCBieSB0ZXN0cy4KKyAgc3RkOjp2ZWN0
b3I8U2RwVmlkZW9Gb3JtYXQ+IEdldFN1cHBvcnRlZEZvcm1hdHMoKSBjb25zdCBvdmVycmlkZSB7
CisgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgICByZXR1cm4ge307CisgIH0KKworICBDb2RlY0lu
Zm8gUXVlcnlWaWRlb0VuY29kZXIoCisgICAgICBjb25zdCBTZHBWaWRlb0Zvcm1hdCYgLyogZm9y
bWF0ICovKSBjb25zdCBvdmVycmlkZSB7CisgICAgQ29kZWNJbmZvIGNvZGVjX2luZm87CisgICAg
Y29kZWNfaW5mby5pc19oYXJkd2FyZV9hY2NlbGVyYXRlZCA9IGZhbHNlOworICAgIGNvZGVjX2lu
Zm8uaGFzX2ludGVybmFsX3NvdXJjZSA9IGZhbHNlOworICAgIHJldHVybiBjb2RlY19pbmZvOwor
ICB9CisKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVy
KAorICAgICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgb3ZlcnJpZGUgeworICAgIHJl
dHVybiBjcmVhdGVfKGZvcm1hdCk7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248c3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4oY29uc3QgU2RwVmlkZW9Gb3JtYXQm
KT4KKyAgICAgIGNyZWF0ZV87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9URVNUX1ZJREVPX0ZVTkNUSU9OX1ZJREVP
X0VOQ09ERVJfRkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW9fcXVhbGl0eV90ZXN0X2ZpeHR1cmUuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3ZpZGVv
X3F1YWxpdHlfdGVzdF9maXh0dXJlLmgKaW5kZXggZmYxNDcyZTlhNThlNjEzNTRlODA1MTkyNTI4
ZjNlZjg3NWNlYzkyMy4uMDY5YTI0MzUzZGU3ZWJjY2RlMzkyYzA2OGE1ZDRlMDVjYzYyN2NmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3Rlc3QvdmlkZW9fcXVhbGl0eV90ZXN0X2ZpeHR1cmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlb19xdWFsaXR5X3Rlc3RfZml4
dHVyZS5oCkBAIC04MiwxNSArODIsMTEgQEAgY2xhc3MgVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmVJ
bnRlcmZhY2UgewogICAgICAgc3RkOjpzdHJpbmcgZ3JhcGhfZGF0YV9vdXRwdXRfZmlsZW5hbWU7
CiAgICAgICBzdGQ6OnN0cmluZyBncmFwaF90aXRsZTsKICAgICB9IGFuYWx5emVyOwotICAgIC8v
IERlcHJlY2F0ZWQuIERPIE5PVCBVU0UuIFVzZSBjb25maWcgaW5zdGVhZC4gVGhpcyBpcyBub3Qg
cGlwZSBhY3R1YWxseSwKLSAgICAvLyBpdCBpcyBqdXN0IGNvbmZpZ3VyYXRpb24sIHRoYXQgd2ls
bCBiZSBwYXNzZWQgdG8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgotICAgIC8vIG9mIHNpbXVsYXRp
b24gbGF5ZXIuCi0gICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIHBpcGU7CiAgICAg
Ly8gQ29uZmlnIGZvciBkZWZhdWx0IHNpbXVsYXRpb24gaW1wbGVtZW50YXRpb24uIE11c3QgYmUg
bnVsbG9wdCBpZgogICAgIC8vIGBzZW5kZXJfbmV0d29ya2AgYW5kIGByZWNlaXZlcl9uZXR3b3Jr
YCBpbiBJbmplY3Rpb25Db21wb25lbnRzIGFyZQogICAgIC8vIG5vbi1udWxsLiBNYXkgYmUgbnVs
bG9wdCBldmVuIGlmIGBzZW5kZXJfbmV0d29ya2AgYW5kIGByZWNlaXZlcl9uZXR3b3JrYAogICAg
IC8vIGFyZSBudWxsOyBpbiB0aGF0IGNhc2UsIGEgZGVmYXVsdCBjb25maWcgd2lsbCBiZSB1c2Vk
LgotICAgIGFic2w6Om9wdGlvbmFsPERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZz4gY29u
ZmlnOworICAgIGFic2w6Om9wdGlvbmFsPEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWc+IGNv
bmZpZzsKICAgICBzdHJ1Y3QgU1MgeyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3BhdGlh
bCBzY2FsYWJpbGl0eS4KICAgICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBzdHJlYW1zOyAg
Ly8gSWYgZW1wdHksIG9uZSBzdHJlYW0gaXMgYXNzdW1lZC4KICAgICAgIHNpemVfdCBzZWxlY3Rl
ZF9zdHJlYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdGVzdC92aWRlb2NvZGVjX3Rlc3RfZml4dHVyZS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW9jb2RlY190ZXN0X2Zp
eHR1cmUuaAppbmRleCBhMGI4MDgzZDcyMzZjMzdhMDY4YmViNzAxMmRlMzZkNjYzN2JiZjU2Li45
MjVjNjBjM2M5MmM5ZjVlYmQxNDlkNTNmMTg4MzM1NzMxYTFlNDI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlb2NvZGVj
X3Rlc3RfZml4dHVyZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90ZXN0L3ZpZGVvY29kZWNfdGVzdF9maXh0dXJlLmgKQEAgLTEyMywxMCArMTIz
LDYgQEAgY2xhc3MgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlIHsKICAgICAgICAgICB3ZWJydGM6Okgy
NjRQYWNrZXRpemF0aW9uTW9kZTo6Tm9uSW50ZXJsZWF2ZWQ7CiAgICAgfSBoMjY0X2NvZGVjX3Nl
dHRpbmdzOwogCi0gICAgLy8gU2hvdWxkIGhhcmR3YXJlIGFjY2VsZXJhdGVkIGNvZGVjcyBiZSB1
c2VkPwotICAgIGJvb2wgaHdfZW5jb2RlciA9IGZhbHNlOwotICAgIGJvb2wgaHdfZGVjb2RlciA9
IGZhbHNlOwotCiAgICAgLy8gQ3VzdG9tIGNoZWNrZXIgdGhhdCB3aWxsIGJlIGNhbGxlZCBmb3Ig
ZWFjaCBmcmFtZS4KICAgICBjb25zdCBFbmNvZGVkRnJhbWVDaGVja2VyKiBlbmNvZGVkX2ZyYW1l
X2NoZWNrZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L0JVSUxELmduIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9CVUlMRC5nbgppbmRl
eCBmNDczMTc5ZGQxNGFkZmE0ZmY2MWYxYzIyNGIwZWY5N2EyYzRhMmM4Li4zNTdmZjAwNTRiZDBk
YjZkZTIzNGVlNzNlY2I5NzhmZjY4ODY1YmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L0JVSUxELmduCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvQlVJ
TEQuZ24KQEAgLTE5LDcgKzE5LDE1IEBAIHJ0Y19zb3VyY2Vfc2V0KCJiaXRyYXRlX3NldHRpbmdz
IikgewogICBdCiB9CiAKK3J0Y19zb3VyY2Vfc2V0KCJlbnVtcyIpIHsKKyAgdmlzaWJpbGl0eSA9
IFsgIioiIF0KKyAgc291cmNlcyA9IFsKKyAgICAiZW51bXMuaCIsCisgIF0KK30KKwogcnRjX3N0
YXRpY19saWJyYXJ5KCJuZXR3b3JrX2NvbnRyb2wiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBd
CiAgIHNvdXJjZXMgPSBbCiAgICAgIm5ldHdvcmtfY29udHJvbC5oIiwKICAgICAibmV0d29ya190
eXBlcy5jYyIsCkBAIC0zNSw2ICs0MywxOSBAQCBydGNfc3RhdGljX2xpYnJhcnkoIm5ldHdvcmtf
Y29udHJvbCIpIHsKICAgXQogfQogCitydGNfc3RhdGljX2xpYnJhcnkoImdvb2dfY2MiKSB7Cisg
IHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImdvb2dfY2NfZmFjdG9y
eS5jYyIsCisgICAgImdvb2dfY2NfZmFjdG9yeS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6
bmV0d29ya19jb250cm9sIiwKKyAgICAiLi4vLi4vbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIs
CisgIF0KK30KKwogaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgIHJ0Y19zb3VyY2Vfc2V0KCJu
ZXR3b3JrX2NvbnRyb2xfdGVzdCIpIHsKICAgICB0ZXN0b25seSA9IHRydWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQv
T1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Ry
YW5zcG9ydC9PV05FUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk5MWY2ZmM1NmEwNzlkNTZhOWM5MzEwYmE2Zjc4
MjhkYjM0ZTExZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvT1dORVJTCkBAIC0wLDAgKzEsMiBAQAorc3J0
ZUB3ZWJydGMub3JnCit0ZXJlbGl1c0B3ZWJydGMub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2VudW1zLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2Vu
dW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjFkNTc3MGNiOTYyYWE3OTg3Zjg5MDQ4MTkzMWIwNjQ4MzAwZGVj
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90cmFuc3BvcnQvZW51bXMuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogIENv
cHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KKyAqLworCisjaWZuZGVmIEFQSV9UUkFOU1BPUlRfRU5VTVNfSF8KKyNkZWZpbmUgQVBJX1RS
QU5TUE9SVF9FTlVNU19IXworCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gU2VlIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvI3J0Y2ljZXRyYW5zcG9ydHN0YXRlCisvLyBOb3RlIHRo
YXQga0ZhaWxlZCBpcyBjdXJyZW50bHkgbm90IGEgdGVybWluYWwgc3RhdGUsIGFuZCBhIHRyYW5z
cG9ydCBtaWdodAorLy8gaW5jb3JyZWN0bHkgYmUgbWFya2VkIGFzIGZhaWxlZCB3aGlsZSBnYXRo
ZXJpbmcgY2FuZGlkYXRlcywgc2VlCisvLyBidWdzLndlYnJ0Yy5vcmcvODgzMworZW51bSBjbGFz
cyBJY2VUcmFuc3BvcnRTdGF0ZSB7CisgIGtOZXcsCisgIGtDaGVja2luZywKKyAga0Nvbm5lY3Rl
ZCwKKyAga0NvbXBsZXRlZCwKKyAga0ZhaWxlZCwKKyAga0Rpc2Nvbm5lY3RlZCwKKyAga0Nsb3Nl
ZCwKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVFJBTlNQ
T1JUX0VOVU1TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2dvb2dfY2NfZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvZ29vZ19jY19mYWN0
b3J5LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjExOWUyZGNmODRhYmNiOGQzZmZkYzY5NjM5MTliYjdkMjQ3MWUw
ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2dvb2dfY2NfZmFjdG9yeS5jYwpAQCAtMCwwICsxLDQzIEBA
CisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvZ29vZ19j
Y19mYWN0b3J5LmgiCisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19j
b250cm9sLmgiCituYW1lc3BhY2Ugd2VicnRjIHsKK0dvb2dDY05ldHdvcmtDb250cm9sbGVyRmFj
dG9yeTo6R29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KAorICAgIFJ0Y0V2ZW50TG9nKiBl
dmVudF9sb2cpCisgICAgOiBldmVudF9sb2dfKGV2ZW50X2xvZykge30KKworc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtDb250cm9sbGVySW50ZXJmYWNlPgorR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJG
YWN0b3J5OjpDcmVhdGUoTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSB7CisgIHJldHVy
biBhYnNsOjptYWtlX3VuaXF1ZTxHb29nQ2NOZXR3b3JrQ29udHJvbGxlcj4oZXZlbnRfbG9nXywg
Y29uZmlnLCBmYWxzZSk7Cit9CisKK1RpbWVEZWx0YSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZh
Y3Rvcnk6OkdldFByb2Nlc3NJbnRlcnZhbCgpIGNvbnN0IHsKKyAgY29uc3QgaW50NjRfdCBrVXBk
YXRlSW50ZXJ2YWxNcyA9IDI1OworICByZXR1cm4gVGltZURlbHRhOjptcyhrVXBkYXRlSW50ZXJ2
YWxNcyk7Cit9CisKK0dvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpHb29n
Q2NGZWVkYmFja05ldHdvcmtDb250cm9sbGVyRmFjdG9yeSgKKyAgICBSdGNFdmVudExvZyogZXZl
bnRfbG9nKQorICAgIDogZXZlbnRfbG9nXyhldmVudF9sb2cpIHt9CisKK3N0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrQ29udHJvbGxlckludGVyZmFjZT4KK0dvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRy
b2xsZXJGYWN0b3J5OjpDcmVhdGUoTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSB7Cisg
IHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxHb29nQ2NOZXR3b3JrQ29udHJvbGxlcj4oZXZlbnRf
bG9nXywgY29uZmlnLCB0cnVlKTsKK30KKworVGltZURlbHRhIEdvb2dDY0ZlZWRiYWNrTmV0d29y
a0NvbnRyb2xsZXJGYWN0b3J5OjpHZXRQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdCB7CisgIGNvbnN0
IGludDY0X3Qga1VwZGF0ZUludGVydmFsTXMgPSAyNTsKKyAgcmV0dXJuIFRpbWVEZWx0YTo6bXMo
a1VwZGF0ZUludGVydmFsTXMpOworfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9y
dC9nb29nX2NjX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90cmFuc3BvcnQvZ29vZ19jY19mYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUzYjMx
NzJkMDJmZDZmZmEwYjFmM2ZmZTMzOGNlNTdlMmE1NzRkNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvZ29v
Z19jY19mYWN0b3J5LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
KyNpZm5kZWYgQVBJX1RSQU5TUE9SVF9HT09HX0NDX0ZBQ1RPUllfSF8KKyNkZWZpbmUgQVBJX1RS
QU5TUE9SVF9HT09HX0NDX0ZBQ1RPUllfSF8KKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRl
ICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfY29udHJvbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsK
K2NsYXNzIFJ0Y0V2ZW50TG9nOworCitjbGFzcyBHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3Rv
cnkKKyAgICA6IHB1YmxpYyBOZXR3b3JrQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2UgeworIHB1
YmxpYzoKKyAgZXhwbGljaXQgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KFJ0Y0V2ZW50
TG9nKik7CisgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckludGVyZmFjZT4gQ3Jl
YXRlKAorICAgICAgTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSBvdmVycmlkZTsKKyAg
VGltZURlbHRhIEdldFByb2Nlc3NJbnRlcnZhbCgpIGNvbnN0IG92ZXJyaWRlOworCisgcHJpdmF0
ZToKKyAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187Cit9OworCisvLyBGYWN0b3J5IHRv
IGNyZWF0ZSBwYWNrZXQgZmVlZGJhY2sgb25seSBHb29nQ0MsIHRoaXMgY2FuIGJlIHVzZWQgZm9y
CisvLyBjb25uZWN0aW9ucyBwcm92aWRpbmcgcGFja2V0IHJlY2VpdmUgdGltZSBmZWVkYmFjayBi
dXQgbm8gb3RoZXIgcmVwb3J0cy4KK2NsYXNzIEdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xs
ZXJGYWN0b3J5CisgICAgOiBwdWJsaWMgTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNl
IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJG
YWN0b3J5KFJ0Y0V2ZW50TG9nKik7CisgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxl
ckludGVyZmFjZT4gQ3JlYXRlKAorICAgICAgTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmln
KSBvdmVycmlkZTsKKyAgVGltZURlbHRhIEdldFByb2Nlc3NJbnRlcnZhbCgpIGNvbnN0IG92ZXJy
aWRlOworCisgcHJpdmF0ZToKKyAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187Cit9Owor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9UUkFOU1BPUlRfR09PR19D
Q19GQUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMu
Y2MKaW5kZXggNDhiZGNhYjE2MmJiZTJhMDhmMmFmMjJkYjAyNWFmOTNiNzFmOGMzZC4uODAyMTRk
ZTFhMjM4MTI0Nzg3NWJhMTNmMWMxYWFhZDZlMzBiMTg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5
cGVzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5jYwpAQCAtMzgsNyArMzgsNyBAQCBzdGQ6OnZlY3Rv
cjxQYWNrZXRSZXN1bHQ+IFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjazo6UmVjZWl2ZWRXaXRoU2Vu
ZEluZm8oKQogICAgIGNvbnN0IHsKICAgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiByZXM7CiAg
IGZvciAoY29uc3QgUGFja2V0UmVzdWx0JiBmYiA6IHBhY2tldF9mZWVkYmFja3MpIHsKLSAgICBp
ZiAoZmIucmVjZWl2ZV90aW1lLklzRmluaXRlKCkgJiYgZmIuc2VudF9wYWNrZXQuaGFzX3ZhbHVl
KCkpIHsKKyAgICBpZiAoZmIucmVjZWl2ZV90aW1lLklzRmluaXRlKCkpIHsKICAgICAgIHJlcy5w
dXNoX2JhY2soZmIpOwogICAgIH0KICAgfQpAQCAtNDgsNyArNDgsNyBAQCBzdGQ6OnZlY3RvcjxQ
YWNrZXRSZXN1bHQ+IFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjazo6UmVjZWl2ZWRXaXRoU2VuZElu
Zm8oKQogc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2s6
Okxvc3RXaXRoU2VuZEluZm8oKSBjb25zdCB7CiAgIHN0ZDo6dmVjdG9yPFBhY2tldFJlc3VsdD4g
cmVzOwogICBmb3IgKGNvbnN0IFBhY2tldFJlc3VsdCYgZmIgOiBwYWNrZXRfZmVlZGJhY2tzKSB7
Ci0gICAgaWYgKGZiLnJlY2VpdmVfdGltZS5Jc1BsdXNJbmZpbml0eSgpICYmIGZiLnNlbnRfcGFj
a2V0Lmhhc192YWx1ZSgpKSB7CisgICAgaWYgKGZiLnJlY2VpdmVfdGltZS5Jc1BsdXNJbmZpbml0
eSgpKSB7CiAgICAgICByZXMucHVzaF9iYWNrKGZiKTsKICAgICB9CiAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQv
bmV0d29ya190eXBlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmgKaW5kZXggYWQyMGFiYzUzZDcxMGY4MjBk
ODg0YWY2MmRjZjkxNTQ0MGI2Yjk4YS4uMGYxZDdhYjY4MzM0YzNkNDBlZjA5YTI5YmQzNzZmNzI3
ZmM2ZmU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmgK
QEAgLTg4LDEyICs4OCwxMyBAQCBzdHJ1Y3QgUGFjZWRQYWNrZXRJbmZvIHsKIHN0cnVjdCBTZW50
UGFja2V0IHsKICAgVGltZXN0YW1wIHNlbmRfdGltZSA9IFRpbWVzdGFtcDo6UGx1c0luZmluaXR5
KCk7CiAgIERhdGFTaXplIHNpemUgPSBEYXRhU2l6ZTo6WmVybygpOworICBEYXRhU2l6ZSBwcmlv
cl91bmFja2VkX2RhdGEgPSBEYXRhU2l6ZTo6WmVybygpOwogICBQYWNlZFBhY2tldEluZm8gcGFj
aW5nX2luZm87CiAgIC8vIFRyYW5zcG9ydCBpbmRlcGVuZGVudCBzZXF1ZW5jZSBudW1iZXIsIGFu
eSB0cmFja2VkIHBhY2tldCBzaG91bGQgaGF2ZSBhCiAgIC8vIHNlcXVlbmNlIG51bWJlciB0aGF0
IGlzIHVuaXF1ZSBvdmVyIHRoZSB3aG9sZSBjYWxsIGFuZCBpbmNyZWFzaW5nIGJ5IDEgZm9yCiAg
IC8vIGVhY2ggcGFja2V0LgogICBpbnQ2NF90IHNlcXVlbmNlX251bWJlcjsKLSAgLy8gRGF0YSBp
biBmbGlnaHQgd2hlbiB0aGUgcGFja2V0IHdhcyBzZW50LCBpbmNsdWRpbmcgdGhlIHBhY2tldC4K
KyAgLy8gVHJhY2tlZCBkYXRhIGluIGZsaWdodCB3aGVuIHRoZSBwYWNrZXQgd2FzIHNlbnQsIGV4
Y2x1ZGluZyB1bmFja2VkIGRhdGEuCiAgIERhdGFTaXplIGRhdGFfaW5fZmxpZ2h0ID0gRGF0YVNp
emU6Olplcm8oKTsKIH07CiAKQEAgLTEyNSw3ICsxMjYsNyBAQCBzdHJ1Y3QgUGFja2V0UmVzdWx0
IHsKICAgUGFja2V0UmVzdWx0KGNvbnN0IFBhY2tldFJlc3VsdCYpOwogICB+UGFja2V0UmVzdWx0
KCk7CiAKLSAgYWJzbDo6b3B0aW9uYWw8U2VudFBhY2tldD4gc2VudF9wYWNrZXQ7CisgIFNlbnRQ
YWNrZXQgc2VudF9wYWNrZXQ7CiAgIFRpbWVzdGFtcCByZWNlaXZlX3RpbWUgPSBUaW1lc3RhbXA6
OlBsdXNJbmZpbml0eSgpOwogfTsKIApAQCAtMTM5LDYgKzE0MCw5IEBAIHN0cnVjdCBUcmFuc3Bv
cnRQYWNrZXRzRmVlZGJhY2sgewogICBEYXRhU2l6ZSBwcmlvcl9pbl9mbGlnaHQgPSBEYXRhU2l6
ZTo6WmVybygpOwogICBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+IHBhY2tldF9mZWVkYmFja3M7
CiAKKyAgLy8gQXJyaXZhbCB0aW1lcyBmb3IgbWVzc2FnZXMgd2l0aG91dCBzZW5kIHRpbWUgaW5m
b3JtYXRpb24uCisgIHN0ZDo6dmVjdG9yPFRpbWVzdGFtcD4gc2VuZGxlc3NfYXJyaXZhbF90aW1l
czsKKwogICBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+IFJlY2VpdmVkV2l0aFNlbmRJbmZvKCkg
Y29uc3Q7CiAgIHN0ZDo6dmVjdG9yPFBhY2tldFJlc3VsdD4gTG9zdFdpdGhTZW5kSW5mbygpIGNv
bnN0OwogICBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+IFBhY2tldHNXaXRoRmVlZGJhY2soKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90cmFuc3BvcnQvdGVzdC9uZXR3b3JrX2NvbnRyb2xfdGVzdGVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC90ZXN0L25l
dHdvcmtfY29udHJvbF90ZXN0ZXIuY2MKaW5kZXggMmVkYWJkMDcxN2U1OTQ5YTBiZTc3NDRhYzZj
MDQzZGQ5ZTllZTAyOS4uYzU5MGFlODhiYzQxMzBhNzhjMTZkNWQwODMyMTZiN2M5NWIyYjAzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3RyYW5zcG9ydC90ZXN0L25ldHdvcmtfY29udHJvbF90ZXN0ZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC90ZXN0L25ldHdv
cmtfY29udHJvbF90ZXN0ZXIuY2MKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBOZXR3b3JrQ29udHJv
bGxlclRlc3Rlcjo6UnVuU2ltdWxhdGlvbihUaW1lRGVsdGEgZHVyYXRpb24sCiAgICAgaWYgKHN0
YXRlXy5jb25nZXN0aW9uX3dpbmRvdyAmJiBzdGF0ZV8uY29uZ2VzdGlvbl93aW5kb3ctPklzRmlu
aXRlKCkpIHsKICAgICAgIERhdGFTaXplIGRhdGFfaW5fZmxpZ2h0ID0gRGF0YVNpemU6Olplcm8o
KTsKICAgICAgIGZvciAoUGFja2V0UmVzdWx0JiBwYWNrZXQgOiBvdXRzdGFuZGluZ19wYWNrZXRz
XykKLSAgICAgICAgZGF0YV9pbl9mbGlnaHQgKz0gcGFja2V0LnNlbnRfcGFja2V0LT5zaXplOwor
ICAgICAgICBkYXRhX2luX2ZsaWdodCArPSBwYWNrZXQuc2VudF9wYWNrZXQuc2l6ZTsKICAgICAg
IGlmIChkYXRhX2luX2ZsaWdodCA+ICpzdGF0ZV8uY29uZ2VzdGlvbl93aW5kb3cpCiAgICAgICAg
IHNlbmRfcGFja2V0ID0gZmFsc2U7CiAgICAgfQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIE5ldHdv
cmtDb250cm9sbGVyVGVzdGVyOjpSdW5TaW11bGF0aW9uKFRpbWVEZWx0YSBkdXJhdGlvbiwKICAg
ICAgIHNlbnRfcGFja2V0LnNlcXVlbmNlX251bWJlciA9IHBhY2tldF9zZXF1ZW5jZV9udW1iZXJf
Kys7CiAgICAgICBzZW50X3BhY2tldC5kYXRhX2luX2ZsaWdodCA9IHNlbnRfcGFja2V0LnNpemU7
CiAgICAgICBmb3IgKFBhY2tldFJlc3VsdCYgcGFja2V0IDogb3V0c3RhbmRpbmdfcGFja2V0c18p
Ci0gICAgICAgIHNlbnRfcGFja2V0LmRhdGFfaW5fZmxpZ2h0ICs9IHBhY2tldC5zZW50X3BhY2tl
dC0+c2l6ZTsKKyAgICAgICAgc2VudF9wYWNrZXQuZGF0YV9pbl9mbGlnaHQgKz0gcGFja2V0LnNl
bnRfcGFja2V0LnNpemU7CiAgICAgICBVcGRhdGUoJnN0YXRlXywgY29udHJvbGxlcl8tPk9uU2Vu
dFBhY2tldChzZW50X3BhY2tldCkpOwogCiAgICAgICBUaW1lRGVsdGEgdGltZV9pbl9mbGlnaHQg
PSBzZW50X3BhY2tldC5zaXplIC8gYWN0dWFsX2JhbmR3aWR0aDsKQEAgLTEyMCw3ICsxMjAsNyBA
QCB2b2lkIE5ldHdvcmtDb250cm9sbGVyVGVzdGVyOjpSdW5TaW11bGF0aW9uKFRpbWVEZWx0YSBk
dXJhdGlvbiwKICAgICAgIFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayBmZWVkYmFjazsKICAgICAg
IGZlZWRiYWNrLnByaW9yX2luX2ZsaWdodCA9IERhdGFTaXplOjpaZXJvKCk7CiAgICAgICBmb3Ig
KFBhY2tldFJlc3VsdCYgcGFja2V0IDogb3V0c3RhbmRpbmdfcGFja2V0c18pCi0gICAgICAgIGZl
ZWRiYWNrLnByaW9yX2luX2ZsaWdodCArPSBwYWNrZXQuc2VudF9wYWNrZXQtPnNpemU7CisgICAg
ICAgIGZlZWRiYWNrLnByaW9yX2luX2ZsaWdodCArPSBwYWNrZXQuc2VudF9wYWNrZXQuc2l6ZTsK
ICAgICAgIHdoaWxlICghb3V0c3RhbmRpbmdfcGFja2V0c18uZW1wdHkoKSAmJgogICAgICAgICAg
ICAgIGN1cnJlbnRfdGltZV8gPj0gb3V0c3RhbmRpbmdfcGFja2V0c18uZnJvbnQoKS5yZWNlaXZl
X3RpbWUgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0aW9uX2Rl
bGF5KSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBOZXR3b3JrQ29udHJvbGxlclRlc3Rlcjo6
UnVuU2ltdWxhdGlvbihUaW1lRGVsdGEgZHVyYXRpb24sCiAgICAgICAgICAgZmVlZGJhY2sucGFj
a2V0X2ZlZWRiYWNrcy5iYWNrKCkucmVjZWl2ZV90aW1lICsgcHJvcGFnYXRpb25fZGVsYXk7CiAg
ICAgICBmZWVkYmFjay5kYXRhX2luX2ZsaWdodCA9IERhdGFTaXplOjpaZXJvKCk7CiAgICAgICBm
b3IgKFBhY2tldFJlc3VsdCYgcGFja2V0IDogb3V0c3RhbmRpbmdfcGFja2V0c18pCi0gICAgICAg
IGZlZWRiYWNrLmRhdGFfaW5fZmxpZ2h0ICs9IHBhY2tldC5zZW50X3BhY2tldC0+c2l6ZTsKKyAg
ICAgICAgZmVlZGJhY2suZGF0YV9pbl9mbGlnaHQgKz0gcGFja2V0LnNlbnRfcGFja2V0LnNpemU7
CiAgICAgICBVcGRhdGUoJnN0YXRlXywgY29udHJvbGxlcl8tPk9uVHJhbnNwb3J0UGFja2V0c0Zl
ZWRiYWNrKGZlZWRiYWNrKSk7CiAgICAgfQogICAgIGN1cnJlbnRfdGltZV8gKz0gcGFja2V0X2lu
dGVydmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3VuaXRzL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3VuaXRzL0JVSUxELmduCmluZGV4IDdkYmRkZjRlNjIyZjRlZDdmYmMx
ZjczZmNjOTUyZGUzNDI4ZmJlNmIuLjdlMTUwZjE3NjY3OWIyMzM0MzU3MWUxZDE0OGIyYjMwOTI5
YmNlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS91bml0cy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvQlVJTEQuZ24KQEAgLTksNiArOSw3IEBACiBpbXBvcnQo
Ii4uLy4uL3dlYnJ0Yy5nbmkiKQogCiBydGNfc291cmNlX3NldCgiZGF0YV9yYXRlIikgeworICB2
aXNpYmlsaXR5ID0gWyAiKiIgXQogICBzb3VyY2VzID0gWwogICAgICJkYXRhX3JhdGUuY2MiLAog
ICAgICJkYXRhX3JhdGUuaCIsCkBAIC0xOCwxMSArMTksMTMgQEAgcnRjX3NvdXJjZV9zZXQoImRh
dGFfcmF0ZSIpIHsKICAgICAiOmRhdGFfc2l6ZSIsCiAgICAgIjp0aW1lX2RlbHRhIiwKICAgICAi
Li4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKLSAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBw
cm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIsCisgICAgIi4uLy4uL3J0
Y19iYXNlL3VuaXRzOnVuaXRfYmFzZSIsCiAgIF0KIH0KIAogcnRjX3NvdXJjZV9zZXQoImRhdGFf
c2l6ZSIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgc291cmNlcyA9IFsKICAgICAiZGF0
YV9zaXplLmNjIiwKICAgICAiZGF0YV9zaXplLmgiLApAQCAtMzAsMTAgKzMzLDEzIEBAIHJ0Y19z
b3VyY2Vfc2V0KCJkYXRhX3NpemUiKSB7CiAKICAgZGVwcyA9IFsKICAgICAiLi4vLi4vcnRjX2Jh
c2U6Y2hlY2tzIiwKLSAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAg
ICIuLi8uLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIsCisgICAgIi4uLy4uL3J0Y19iYXNlL3VuaXRz
OnVuaXRfYmFzZSIsCiAgIF0KIH0KKwogcnRjX3NvdXJjZV9zZXQoInRpbWVfZGVsdGEiKSB7Cisg
IHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIHNvdXJjZXMgPSBbCiAgICAgInRpbWVfZGVsdGEuY2Mi
LAogICAgICJ0aW1lX2RlbHRhLmgiLApAQCAtNDEsMTEgKzQ3LDEzIEBAIHJ0Y19zb3VyY2Vfc2V0
KCJ0aW1lX2RlbHRhIikgewogCiAgIGRlcHMgPSBbCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNr
cyIsCi0gICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4v
cnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAorICAgICIuLi8uLi9ydGNfYmFzZS91bml0czp1bml0X2Jh
c2UiLAogICBdCiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJ0aW1lc3RhbXAiKSB7CisgIHZpc2liaWxp
dHkgPSBbICIqIiBdCiAgIHNvdXJjZXMgPSBbCiAgICAgInRpbWVzdGFtcC5jYyIsCiAgICAgInRp
bWVzdGFtcC5oIiwKQEAgLTU0LDcgKzYyLDggQEAgcnRjX3NvdXJjZV9zZXQoInRpbWVzdGFtcCIp
IHsKICAgZGVwcyA9IFsKICAgICAiOnRpbWVfZGVsdGEiLAogICAgICIuLi8uLi9ydGNfYmFzZTpj
aGVja3MiLAotICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4u
Ly4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2UvdW5pdHM6dW5p
dF9iYXNlIiwKICAgXQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRlLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfcmF0ZS5jYwppbmRleCA5
MTcwNjI3NzE1ODQ5ODA5ZmMwZGZjZDZjMzg1NWUwNzg3NzVlZWEyLi5kNzJkOTU4YzAyOGY5NzZi
MmMxNTBmMmQ2N2RmMGEzY2JkYzBmNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRlLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3JhdGUu
Y2MKQEAgLTE0LDcgKzE0LDcgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLXN0ZDo6c3RyaW5n
IFRvU3RyaW5nKGNvbnN0IERhdGFSYXRlJiB2YWx1ZSkgeworc3RkOjpzdHJpbmcgVG9TdHJpbmco
RGF0YVJhdGUgdmFsdWUpIHsKICAgY2hhciBidWZbNjRdOwogICBydGM6OlNpbXBsZVN0cmluZ0J1
aWxkZXIgc2IoYnVmKTsKICAgaWYgKHZhbHVlLklzSW5maW5pdGUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFf
cmF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Vu
aXRzL2RhdGFfcmF0ZS5oCmluZGV4IDRiYjk4OGI2NTg4OGJiOTM0YWRkYWFkZmQwNjI5ZjYxOTYy
NjJlOTIuLjcxMTkyODQ4NzRlOTJiN2M1NGU4ZDJjZGE1NTU1ODkyYTVhM2JmNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9k
YXRhX3JhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdW5pdHMvZGF0YV9yYXRlLmgKQEAgLTE1LDIyICsxNSwxNyBAQAogI2luY2x1ZGUgPG9z
dHJlYW0+ICAvLyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKICNlbmRpZiAg
ICAgICAgICAgICAgLy8gVU5JVF9URVNUCiAKLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRl
IDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1
ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKKyNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KIAogI2luY2x1ZGUgImFwaS91bml0cy9kYXRhX3NpemUuaCIKICNpbmNsdWRlICJhcGkvdW5p
dHMvdGltZV9kZWx0YS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3VuaXRzL3VuaXRfYmFzZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVz
cGFjZSBkYXRhX3JhdGVfaW1wbCB7Ci1jb25zdGV4cHIgaW50NjRfdCBrUGx1c0luZmluaXR5VmFs
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7Ci0KIGlubGluZSBpbnQ2NF90
IE1pY3JvYml0cyhjb25zdCBEYXRhU2l6ZSYgc2l6ZSkgewogICBjb25zdGV4cHIgaW50NjRfdCBr
TWF4QmVmb3JlQ29udmVyc2lvbiA9CiAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKSAvIDgwMDAwMDA7CkBAIC00MywxODQgKzM4LDY0IEBAIGlubGluZSBpbnQ2NF90IE1p
Y3JvYml0cyhjb25zdCBEYXRhU2l6ZSYgc2l6ZSkgewogLy8gRGF0YVJhdGUgaXMgYSBjbGFzcyB0
aGF0IHJlcHJlc2VudHMgYSBnaXZlbiBkYXRhIHJhdGUuIFRoaXMgY2FuIGJlIHVzZWQgdG8KIC8v
IHJlcHJlc2VudCBiYW5kd2lkdGgsIGVuY29kaW5nIGJpdHJhdGUsIGV0Yy4gVGhlIGludGVybmFs
IHN0b3JhZ2UgaXMgYml0cyBwZXIKIC8vIHNlY29uZCAoYnBzKS4KLWNsYXNzIERhdGFSYXRlIHsK
K2NsYXNzIERhdGFSYXRlIGZpbmFsIDogcHVibGljIHJ0Y191bml0c19pbXBsOjpSZWxhdGl2ZVVu
aXQ8RGF0YVJhdGU+IHsKICBwdWJsaWM6CiAgIERhdGFSYXRlKCkgPSBkZWxldGU7Ci0gIHN0YXRp
YyBjb25zdGV4cHIgRGF0YVJhdGUgWmVybygpIHsgcmV0dXJuIERhdGFSYXRlKDApOyB9Ci0gIHN0
YXRpYyBjb25zdGV4cHIgRGF0YVJhdGUgSW5maW5pdHkoKSB7Ci0gICAgcmV0dXJuIERhdGFSYXRl
KGRhdGFfcmF0ZV9pbXBsOjprUGx1c0luZmluaXR5VmFsKTsKLSAgfQorICBzdGF0aWMgY29uc3Rl
eHByIERhdGFSYXRlIEluZmluaXR5KCkgeyByZXR1cm4gUGx1c0luZmluaXR5KCk7IH0KICAgdGVt
cGxhdGUgPGludDY0X3QgYnBzPgogICBzdGF0aWMgY29uc3RleHByIERhdGFSYXRlIEJpdHNQZXJT
ZWMoKSB7Ci0gICAgc3RhdGljX2Fzc2VydChicHMgPj0gMCwgIiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoYnBzIDwgZGF0YV9yYXRlX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwsICIiKTsKLSAgICByZXR1
cm4gRGF0YVJhdGUoYnBzKTsKKyAgICByZXR1cm4gRnJvbVN0YXRpY1ZhbHVlPGJwcz4oKTsKICAg
fQogICB0ZW1wbGF0ZSA8aW50NjRfdCBrYnBzPgogICBzdGF0aWMgY29uc3RleHByIERhdGFSYXRl
IEtpbG9iaXRzUGVyU2VjKCkgewotICAgIHN0YXRpY19hc3NlcnQoa2JwcyA+PSAwLCAiIik7Ci0g
ICAgc3RhdGljX2Fzc2VydChrYnBzIDwgZGF0YV9yYXRlX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwg
LyAxMDAwLCAiIik7Ci0gICAgcmV0dXJuIERhdGFSYXRlKGticHMgKiAxMDAwKTsKKyAgICByZXR1
cm4gRnJvbVN0YXRpY0ZyYWN0aW9uPGticHMsIDEwMDA+KCk7CiAgIH0KLQotICB0ZW1wbGF0ZSA8
Ci0gICAgICB0eXBlbmFtZSBULAotICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gIHN0YXRpYyBEYXRhUmF0
ZSBicHMoVCBiaXRzX3Blcl9zZWNvbmQpIHsKLSAgICBSVENfRENIRUNLX0dFKGJpdHNfcGVyX3Nl
Y29uZCwgMCk7Ci0gICAgUlRDX0RDSEVDS19MVChiaXRzX3Blcl9zZWNvbmQsIGRhdGFfcmF0ZV9p
bXBsOjprUGx1c0luZmluaXR5VmFsKTsKLSAgICByZXR1cm4gRGF0YVJhdGUocnRjOjpkY2hlY2tl
ZF9jYXN0PGludDY0X3Q+KGJpdHNfcGVyX3NlY29uZCkpOwotICB9Ci0gIHRlbXBsYXRlIDwKLSAg
ICAgIHR5cGVuYW1lIFQsCi0gICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2lu
dGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgc3RhdGljIERhdGFSYXRlIGti
cHMoVCBraWxvYml0c19wZXJfc2VjKSB7Ci0gICAgUlRDX0RDSEVDS19HRShraWxvYml0c19wZXJf
c2VjLCAwKTsKLSAgICBSVENfRENIRUNLX0xUKGtpbG9iaXRzX3Blcl9zZWMsIGRhdGFfcmF0ZV9p
bXBsOjprUGx1c0luZmluaXR5VmFsIC8gMTAwMCk7Ci0gICAgcmV0dXJuIERhdGFSYXRlOjpicHMo
cnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KGtpbG9iaXRzX3Blcl9zZWMpICogMTAwMCk7Ci0g
IH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6dHlwZSogPQotICAg
ICAgICAgICAgICAgIG51bGxwdHI+Ci0gIHN0YXRpYyBEYXRhUmF0ZSBicHMoVCBiaXRzX3Blcl9z
ZWNvbmQpIHsKLSAgICBpZiAoYml0c19wZXJfc2Vjb25kID09IHN0ZDo6bnVtZXJpY19saW1pdHM8
VD46OmluZmluaXR5KCkpIHsKLSAgICAgIHJldHVybiBJbmZpbml0eSgpOwotICAgIH0gZWxzZSB7
Ci0gICAgICBSVENfRENIRUNLKCFzdGQ6OmlzbmFuKGJpdHNfcGVyX3NlY29uZCkpOwotICAgICAg
UlRDX0RDSEVDS19HRShiaXRzX3Blcl9zZWNvbmQsIDApOwotICAgICAgUlRDX0RDSEVDS19MVChi
aXRzX3Blcl9zZWNvbmQsIGRhdGFfcmF0ZV9pbXBsOjprUGx1c0luZmluaXR5VmFsKTsKLSAgICAg
IHJldHVybiBEYXRhUmF0ZShydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRfdD4oYml0c19wZXJfc2Vj
b25kKSk7Ci0gICAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIGNvbnN0ZXhw
ciBEYXRhUmF0ZSBicHMoVCBiaXRzX3Blcl9zZWNvbmQpIHsKKyAgICByZXR1cm4gRnJvbVZhbHVl
KGJpdHNfcGVyX3NlY29uZCk7CiAgIH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAg
ICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2
YWx1ZT46OnR5cGUqID0KLSAgICAgICAgICAgICAgICBudWxscHRyPgotICBzdGF0aWMgRGF0YVJh
dGUga2JwcyhUIGtpbG9iaXRzX3Blcl9zZWMpIHsKLSAgICByZXR1cm4gRGF0YVJhdGU6OmJwcyhr
aWxvYml0c19wZXJfc2VjICogMWUzKTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRp
YyBjb25zdGV4cHIgRGF0YVJhdGUga2JwcyhUIGtpbG9iaXRzX3Blcl9zZWMpIHsKKyAgICByZXR1
cm4gRnJvbUZyYWN0aW9uPDEwMDA+KGtpbG9iaXRzX3Blcl9zZWMpOwogICB9Ci0KICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQgPSBpbnQ2NF90PgotICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVD46OnR5cGUgYnBzKCkgY29uc3QgewotICAgIFJUQ19E
Q0hFQ0soSXNGaW5pdGUoKSk7Ci0gICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihiaXRz
X3Blcl9zZWNfKTsKKyAgY29uc3RleHByIFQgYnBzKCkgY29uc3QgeworICAgIHJldHVybiBUb1Zh
bHVlPFQ+KCk7CiAgIH0KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBpbnQ2NF90PgotICB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVD46OnR5cGUg
a2JwcygpIGNvbnN0IHsKLSAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOwotICAgIHJldHVybiBy
dGM6OmRjaGVja2VkX2Nhc3Q8VD4oVW5zYWZlS2lsb2JpdHNQZXJTZWMoKSk7Ci0gIH0KLQotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19m
bG9hdGluZ19wb2ludDxUPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFQ+Ojp0
eXBlIGNvbnN0ZXhwciBicHMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIElzSW5maW5pdGUoKSA/IHN0
ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkgOiBiaXRzX3Blcl9zZWNfOwotICB9Ci0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVD46
OnR5cGUgY29uc3RleHByIGticHMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGJwczxUPigpICogMWUt
MzsKKyAgVCBrYnBzKCkgY29uc3QgeworICAgIHJldHVybiBUb0ZyYWN0aW9uPDEwMDAsIFQ+KCk7
CiAgIH0KLQogICBjb25zdGV4cHIgaW50NjRfdCBicHNfb3IoaW50NjRfdCBmYWxsYmFja192YWx1
ZSkgY29uc3QgewotICAgIHJldHVybiBJc0Zpbml0ZSgpID8gYml0c19wZXJfc2VjXyA6IGZhbGxi
YWNrX3ZhbHVlOworICAgIHJldHVybiBUb1ZhbHVlT3IoZmFsbGJhY2tfdmFsdWUpOwogICB9CiAg
IGNvbnN0ZXhwciBpbnQ2NF90IGticHNfb3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkgY29uc3Qg
ewotICAgIHJldHVybiBJc0Zpbml0ZSgpID8gVW5zYWZlS2lsb2JpdHNQZXJTZWMoKSA6IGZhbGxi
YWNrX3ZhbHVlOwotICB9Ci0KLSAgY29uc3RleHByIGJvb2wgSXNaZXJvKCkgY29uc3QgeyByZXR1
cm4gYml0c19wZXJfc2VjXyA9PSAwOyB9Ci0gIGNvbnN0ZXhwciBib29sIElzSW5maW5pdGUoKSBj
b25zdCB7Ci0gICAgcmV0dXJuIGJpdHNfcGVyX3NlY18gPT0gZGF0YV9yYXRlX2ltcGw6OmtQbHVz
SW5maW5pdHlWYWw7Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgSXNGaW5pdGUoKSBjb25zdCB7IHJl
dHVybiAhSXNJbmZpbml0ZSgpOyB9Ci0gIERhdGFSYXRlIENsYW1wZWQoRGF0YVJhdGUgbWluX3Jh
dGUsIERhdGFSYXRlIG1heF9yYXRlKSBjb25zdCB7Ci0gICAgcmV0dXJuIHN0ZDo6bWF4KG1pbl9y
YXRlLCBzdGQ6Om1pbigqdGhpcywgbWF4X3JhdGUpKTsKLSAgfQotICB2b2lkIENsYW1wKERhdGFS
YXRlIG1pbl9yYXRlLCBEYXRhUmF0ZSBtYXhfcmF0ZSkgewotICAgICp0aGlzID0gQ2xhbXBlZCht
aW5fcmF0ZSwgbWF4X3JhdGUpOwotICB9Ci0gIERhdGFSYXRlIG9wZXJhdG9yLShjb25zdCBEYXRh
UmF0ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gRGF0YVJhdGU6OmJwcyhicHMoKSAtIG90
aGVyLmJwcygpKTsKLSAgfQotICBEYXRhUmF0ZSBvcGVyYXRvcisoY29uc3QgRGF0YVJhdGUmIG90
aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIERhdGFSYXRlOjpicHMoYnBzKCkgKyBvdGhlci5icHMo
KSk7Ci0gIH0KLSAgRGF0YVJhdGUmIG9wZXJhdG9yLT0oY29uc3QgRGF0YVJhdGUmIG90aGVyKSB7
Ci0gICAgKnRoaXMgPSAqdGhpcyAtIG90aGVyOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBE
YXRhUmF0ZSYgb3BlcmF0b3IrPShjb25zdCBEYXRhUmF0ZSYgb3RoZXIpIHsKLSAgICAqdGhpcyA9
ICp0aGlzICsgb3RoZXI7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0gIGNvbnN0ZXhwciBkb3Vi
bGUgb3BlcmF0b3IvKGNvbnN0IERhdGFSYXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBi
cHM8ZG91YmxlPigpIC8gb3RoZXIuYnBzPGRvdWJsZT4oKTsKLSAgfQotICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IERhdGFSYXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBi
aXRzX3Blcl9zZWNfID09IG90aGVyLmJpdHNfcGVyX3NlY187Ci0gIH0KLSAgY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBEYXRhUmF0ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4g
Yml0c19wZXJfc2VjXyAhPSBvdGhlci5iaXRzX3Blcl9zZWNfOwotICB9Ci0gIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPD0oY29uc3QgRGF0YVJhdGUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJu
IGJpdHNfcGVyX3NlY18gPD0gb3RoZXIuYml0c19wZXJfc2VjXzsKLSAgfQotICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj49KGNvbnN0IERhdGFSYXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVy
biBiaXRzX3Blcl9zZWNfID49IG90aGVyLmJpdHNfcGVyX3NlY187Ci0gIH0KLSAgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I+KGNvbnN0IERhdGFSYXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVy
biBiaXRzX3Blcl9zZWNfID4gb3RoZXIuYml0c19wZXJfc2VjXzsKLSAgfQotICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcjwoY29uc3QgRGF0YVJhdGUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJu
IGJpdHNfcGVyX3NlY18gPCBvdGhlci5iaXRzX3Blcl9zZWNfOworICAgIHJldHVybiBUb0ZyYWN0
aW9uT3I8MTAwMD4oZmFsbGJhY2tfdmFsdWUpOwogICB9CiAKICBwcml2YXRlOgogICAvLyBCaXRz
IHBlciBzZWNvbmQgdXNlZCBpbnRlcm5hbGx5IHRvIHNpbXBsaWZ5IGRlYnVnZ2luZyBieSBtYWtp
bmcgdGhlIHZhbHVlCiAgIC8vIG1vcmUgcmVjb2duaXphYmxlLgotICBleHBsaWNpdCBjb25zdGV4
cHIgRGF0YVJhdGUoaW50NjRfdCBiaXRzX3Blcl9zZWNvbmQpCi0gICAgICA6IGJpdHNfcGVyX3Nl
Y18oYml0c19wZXJfc2Vjb25kKSB7fQotICBjb25zdGV4cHIgaW50NjRfdCBVbnNhZmVLaWxvYml0
c1BlclNlYygpIGNvbnN0IHsKLSAgICByZXR1cm4gKGJpdHNfcGVyX3NlY18gKyA1MDApIC8gMTAw
MDsKLSAgfQotICBpbnQ2NF90IGJpdHNfcGVyX3NlY187CisgIGZyaWVuZCBjbGFzcyBydGNfdW5p
dHNfaW1wbDo6VW5pdEJhc2U8RGF0YVJhdGU+OworICB1c2luZyBSZWxhdGl2ZVVuaXQ6OlJlbGF0
aXZlVW5pdDsKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIG9uZV9zaWRlZCA9IHRydWU7CiB9Owog
Ci1pbmxpbmUgRGF0YVJhdGUgb3BlcmF0b3IqKGNvbnN0IERhdGFSYXRlJiByYXRlLCBjb25zdCBk
b3VibGUmIHNjYWxhcikgewotICByZXR1cm4gRGF0YVJhdGU6OmJwcyhzdGQ6OnJvdW5kKHJhdGUu
YnBzKCkgKiBzY2FsYXIpKTsKLX0KLWlubGluZSBEYXRhUmF0ZSBvcGVyYXRvciooY29uc3QgZG91
YmxlJiBzY2FsYXIsIGNvbnN0IERhdGFSYXRlJiByYXRlKSB7Ci0gIHJldHVybiByYXRlICogc2Nh
bGFyOwotfQotaW5saW5lIERhdGFSYXRlIG9wZXJhdG9yKihjb25zdCBEYXRhUmF0ZSYgcmF0ZSwg
Y29uc3QgaW50NjRfdCYgc2NhbGFyKSB7Ci0gIHJldHVybiBEYXRhUmF0ZTo6YnBzKHJhdGUuYnBz
KCkgKiBzY2FsYXIpOwotfQotaW5saW5lIERhdGFSYXRlIG9wZXJhdG9yKihjb25zdCBpbnQ2NF90
JiBzY2FsYXIsIGNvbnN0IERhdGFSYXRlJiByYXRlKSB7Ci0gIHJldHVybiByYXRlICogc2NhbGFy
OwotfQotaW5saW5lIERhdGFSYXRlIG9wZXJhdG9yKihjb25zdCBEYXRhUmF0ZSYgcmF0ZSwgY29u
c3QgaW50MzJfdCYgc2NhbGFyKSB7Ci0gIHJldHVybiBEYXRhUmF0ZTo6YnBzKHJhdGUuYnBzKCkg
KiBzY2FsYXIpOwotfQotaW5saW5lIERhdGFSYXRlIG9wZXJhdG9yKihjb25zdCBpbnQzMl90JiBz
Y2FsYXIsIGNvbnN0IERhdGFSYXRlJiByYXRlKSB7Ci0gIHJldHVybiByYXRlICogc2NhbGFyOwot
fQotCi1pbmxpbmUgRGF0YVJhdGUgb3BlcmF0b3IvKGNvbnN0IERhdGFTaXplJiBzaXplLCBjb25z
dCBUaW1lRGVsdGEmIGR1cmF0aW9uKSB7CitpbmxpbmUgRGF0YVJhdGUgb3BlcmF0b3IvKGNvbnN0
IERhdGFTaXplIHNpemUsIGNvbnN0IFRpbWVEZWx0YSBkdXJhdGlvbikgewogICByZXR1cm4gRGF0
YVJhdGU6OmJwcyhkYXRhX3JhdGVfaW1wbDo6TWljcm9iaXRzKHNpemUpIC8gZHVyYXRpb24udXMo
KSk7CiB9Ci1pbmxpbmUgVGltZURlbHRhIG9wZXJhdG9yLyhjb25zdCBEYXRhU2l6ZSYgc2l6ZSwg
Y29uc3QgRGF0YVJhdGUmIHJhdGUpIHsKK2lubGluZSBUaW1lRGVsdGEgb3BlcmF0b3IvKGNvbnN0
IERhdGFTaXplIHNpemUsIGNvbnN0IERhdGFSYXRlIHJhdGUpIHsKICAgcmV0dXJuIFRpbWVEZWx0
YTo6dXMoZGF0YV9yYXRlX2ltcGw6Ok1pY3JvYml0cyhzaXplKSAvIHJhdGUuYnBzKCkpOwogfQot
aW5saW5lIERhdGFTaXplIG9wZXJhdG9yKihjb25zdCBEYXRhUmF0ZSYgcmF0ZSwgY29uc3QgVGlt
ZURlbHRhJiBkdXJhdGlvbikgeworaW5saW5lIERhdGFTaXplIG9wZXJhdG9yKihjb25zdCBEYXRh
UmF0ZSByYXRlLCBjb25zdCBUaW1lRGVsdGEgZHVyYXRpb24pIHsKICAgaW50NjRfdCBtaWNyb2Jp
dHMgPSByYXRlLmJwcygpICogZHVyYXRpb24udXMoKTsKICAgcmV0dXJuIERhdGFTaXplOjpieXRl
cygobWljcm9iaXRzICsgNDAwMDAwMCkgLyA4MDAwMDAwKTsKIH0KLWlubGluZSBEYXRhU2l6ZSBv
cGVyYXRvciooY29uc3QgVGltZURlbHRhJiBkdXJhdGlvbiwgY29uc3QgRGF0YVJhdGUmIHJhdGUp
IHsKK2lubGluZSBEYXRhU2l6ZSBvcGVyYXRvciooY29uc3QgVGltZURlbHRhIGR1cmF0aW9uLCBj
b25zdCBEYXRhUmF0ZSByYXRlKSB7CiAgIHJldHVybiByYXRlICogZHVyYXRpb247CiB9CiAKLXN0
ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IERhdGFSYXRlJiB2YWx1ZSk7CitzdGQ6OnN0cmluZyBU
b1N0cmluZyhEYXRhUmF0ZSB2YWx1ZSk7CiAKICNpZmRlZiBVTklUX1RFU1QKIGlubGluZSBzdGQ6
Om9zdHJlYW0mIG9wZXJhdG9yPDwoICAvLyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6
ODk4MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS91bml0cy9kYXRhX3JhdGVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRlX3VuaXR0ZXN0LmNjCmlu
ZGV4IDhlNWI2NjA1OTQ4ZmQ4OGZkYTUxNTMzYzE1ZWU1MzFlOGM5YjNkOWIuLjk5NjI5OGMxZmNl
ZThiZmY2N2YwY2Y3OGRkMzUyNDFiMTY3MjFhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3JhdGVfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Vu
aXRzL2RhdGFfcmF0ZV91bml0dGVzdC5jYwpAQCAtMTMwLDYgKzEzMCw5IEBAIFRFU1QoRGF0YVJh
dGVUZXN0LCBNYXRoT3BlcmF0aW9ucykgewogCiAgIEVYUEVDVF9FUShyYXRlX2EgLyByYXRlX2Is
IHN0YXRpY19jYXN0PGRvdWJsZT4oa1ZhbHVlQSkgLyBrVmFsdWVCKTsKIAorICBFWFBFQ1RfRVEo
KHJhdGVfYSAvIDEwKS5icHMoKSwga1ZhbHVlQSAvIDEwKTsKKyAgRVhQRUNUX05FQVIoKHJhdGVf
YSAvIDAuNSkuYnBzKCksIGtWYWx1ZUEgKiAyLCAxKTsKKwogICBEYXRhUmF0ZSBtdXRhYmxlX3Jh
dGUgPSBEYXRhUmF0ZTo6YnBzKGtWYWx1ZUEpOwogICBtdXRhYmxlX3JhdGUgKz0gcmF0ZV9iOwog
ICBFWFBFQ1RfRVEobXV0YWJsZV9yYXRlLmJwcygpLCBrVmFsdWVBICsga1ZhbHVlQik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5p
dHMvZGF0YV9zaXplLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3VuaXRzL2RhdGFfc2l6ZS5jYwppbmRleCA0NDQwZjg5ZDAzYzJmZjg0YTFiNTBjZmFi
YWU0M2YxZTk3OWE5ZDRlLi44YTg3Nzg2Yzc3YTNlOTdlYWI0MzNiOTRhYjY1YWNjYTExNzU4OGE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdW5pdHMvZGF0YV9zaXplLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3NpemUuY2MKQEAgLTE0LDcgKzE0LDcgQEAKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKLXN0ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IERhdGFTaXpl
JiB2YWx1ZSkgeworc3RkOjpzdHJpbmcgVG9TdHJpbmcoRGF0YVNpemUgdmFsdWUpIHsKICAgY2hh
ciBidWZbNjRdOwogICBydGM6OlNpbXBsZVN0cmluZ0J1aWxkZXIgc2IoYnVmKTsKICAgaWYgKHZh
bHVlLklzSW5maW5pdGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfc2l6ZS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfc2l6ZS5oCmluZGV4IDg5
NThiMjQ2OTczMGNmMjAwZWZhNDgyNGE4OGU4NGM2ZmI0ZmZjNjUuLmI0Y2JiNjUyZjNjOTA3YzA5
NzE5NmViNWY3MjJlOTY0M2ExOWYzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3NpemUuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9zaXplLmgK
QEAgLTE1LDE0MyArMTUsNDQgQEAKICNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gbm8tcHJlc3VibWl0
LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCiAjZW5kaWYgICAgICAgICAgICAgIC8vIFVOSVRfVEVT
VAogCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0jaW5jbHVkZSA8bGlt
aXRzPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAotI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVf
Y29udmVyc2lvbnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS91bml0cy91bml0X2Jhc2UuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgZGF0YV9zaXplX2ltcGwgewotY29uc3RleHBy
IGludDY0X3Qga1BsdXNJbmZpbml0eVZhbCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46
Om1heCgpOwotfSAgLy8gbmFtZXNwYWNlIGRhdGFfc2l6ZV9pbXBsCi0KIC8vIERhdGFTaXplIGlz
IGEgY2xhc3MgcmVwcmVzZXRpbmcgYSBjb3VudCBvZiBieXRlcy4KLWNsYXNzIERhdGFTaXplIHsK
K2NsYXNzIERhdGFTaXplIGZpbmFsIDogcHVibGljIHJ0Y191bml0c19pbXBsOjpSZWxhdGl2ZVVu
aXQ8RGF0YVNpemU+IHsKICBwdWJsaWM6CiAgIERhdGFTaXplKCkgPSBkZWxldGU7Ci0gIHN0YXRp
YyBjb25zdGV4cHIgRGF0YVNpemUgWmVybygpIHsgcmV0dXJuIERhdGFTaXplKDApOyB9Ci0gIHN0
YXRpYyBjb25zdGV4cHIgRGF0YVNpemUgSW5maW5pdHkoKSB7Ci0gICAgcmV0dXJuIERhdGFTaXpl
KGRhdGFfc2l6ZV9pbXBsOjprUGx1c0luZmluaXR5VmFsKTsKLSAgfQorICBzdGF0aWMgY29uc3Rl
eHByIERhdGFTaXplIEluZmluaXR5KCkgeyByZXR1cm4gUGx1c0luZmluaXR5KCk7IH0KICAgdGVt
cGxhdGUgPGludDY0X3QgYnl0ZXM+CiAgIHN0YXRpYyBjb25zdGV4cHIgRGF0YVNpemUgQnl0ZXMo
KSB7Ci0gICAgc3RhdGljX2Fzc2VydChieXRlcyA+PSAwLCAiIik7Ci0gICAgc3RhdGljX2Fzc2Vy
dChieXRlcyA8IGRhdGFfc2l6ZV9pbXBsOjprUGx1c0luZmluaXR5VmFsLCAiIik7Ci0gICAgcmV0
dXJuIERhdGFTaXplKGJ5dGVzKTsKKyAgICByZXR1cm4gRnJvbVN0YXRpY1ZhbHVlPGJ5dGVzPigp
OwogICB9CiAKICAgdGVtcGxhdGUgPAogICAgICAgdHlwZW5hbWUgVCwKLSAgICAgIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxs
cHRyPgotICBzdGF0aWMgRGF0YVNpemUgYnl0ZXMoVCBieXRlcykgewotICAgIFJUQ19EQ0hFQ0tf
R0UoYnl0ZXMsIDApOwotICAgIFJUQ19EQ0hFQ0tfTFQoYnl0ZXMsIGRhdGFfc2l6ZV9pbXBsOjpr
UGx1c0luZmluaXR5VmFsKTsKLSAgICByZXR1cm4gRGF0YVNpemUocnRjOjpkY2hlY2tlZF9jYXN0
PGludDY0X3Q+KGJ5dGVzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKLSAgICAg
ICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46
OnZhbHVlPjo6dHlwZSogPQotICAgICAgICAgICAgICAgIG51bGxwdHI+CisgICAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPjo6dHlwZSogPSBu
dWxscHRyPgogICBzdGF0aWMgRGF0YVNpemUgYnl0ZXMoVCBieXRlcykgewotICAgIGlmIChieXRl
cyA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpKSB7Ci0gICAgICByZXR1cm4g
SW5maW5pdHkoKTsKLSAgICB9IGVsc2UgewotICAgICAgUlRDX0RDSEVDSyghc3RkOjppc25hbihi
eXRlcykpOwotICAgICAgUlRDX0RDSEVDS19HRShieXRlcywgMCk7Ci0gICAgICBSVENfRENIRUNL
X0xUKGJ5dGVzLCBkYXRhX3NpemVfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCk7Ci0gICAgICByZXR1
cm4gRGF0YVNpemUocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KGJ5dGVzKSk7Ci0gICAgfQor
ICAgIHJldHVybiBGcm9tVmFsdWUoYnl0ZXMpOwogICB9Ci0KICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQgPSBpbnQ2NF90PgotICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFs
PFQ+Ojp2YWx1ZSwgVD46OnR5cGUgYnl0ZXMoKSBjb25zdCB7Ci0gICAgUlRDX0RDSEVDSyhJc0Zp
bml0ZSgpKTsKLSAgICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KGJ5dGVzXyk7Ci0gIH0K
LQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgY29uc3RleHByIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZQotICBieXRl
cygpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNJbmZpbml0ZSgpID8gc3RkOjpudW1lcmljX2xpbWl0
czxUPjo6aW5maW5pdHkoKSA6IGJ5dGVzXzsKKyAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSwgVD46OnR5cGUgYnl0ZXMoKSBjb25zdCB7CisgICAg
cmV0dXJuIFRvVmFsdWU8VD4oKTsKICAgfQogCiAgIGNvbnN0ZXhwciBpbnQ2NF90IGJ5dGVzX29y
KGludDY0X3QgZmFsbGJhY2tfdmFsdWUpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNGaW5pdGUoKSA/
IGJ5dGVzXyA6IGZhbGxiYWNrX3ZhbHVlOwotICB9Ci0KLSAgY29uc3RleHByIGJvb2wgSXNaZXJv
KCkgY29uc3QgeyByZXR1cm4gYnl0ZXNfID09IDA7IH0KLSAgY29uc3RleHByIGJvb2wgSXNJbmZp
bml0ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gYnl0ZXNfID09IGRhdGFfc2l6ZV9pbXBsOjprUGx1
c0luZmluaXR5VmFsOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIElzRmluaXRlKCkgY29uc3QgeyBy
ZXR1cm4gIUlzSW5maW5pdGUoKTsgfQotICBEYXRhU2l6ZSBvcGVyYXRvci0oY29uc3QgRGF0YVNp
emUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIERhdGFTaXplOjpieXRlcyhieXRlcygpIC0g
b3RoZXIuYnl0ZXMoKSk7Ci0gIH0KLSAgRGF0YVNpemUgb3BlcmF0b3IrKGNvbnN0IERhdGFTaXpl
JiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBEYXRhU2l6ZTo6Ynl0ZXMoYnl0ZXMoKSArIG90
aGVyLmJ5dGVzKCkpOwotICB9Ci0gIERhdGFTaXplJiBvcGVyYXRvci09KGNvbnN0IERhdGFTaXpl
JiBvdGhlcikgewotICAgICp0aGlzID0gKnRoaXMgLSBvdGhlcjsKLSAgICByZXR1cm4gKnRoaXM7
Ci0gIH0KLSAgRGF0YVNpemUmIG9wZXJhdG9yKz0oY29uc3QgRGF0YVNpemUmIG90aGVyKSB7Ci0g
ICAgKnRoaXMgPSAqdGhpcyArIG90aGVyOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBjb25z
dGV4cHIgZG91YmxlIG9wZXJhdG9yLyhjb25zdCBEYXRhU2l6ZSYgb3RoZXIpIGNvbnN0IHsKLSAg
ICByZXR1cm4gYnl0ZXM8ZG91YmxlPigpIC8gb3RoZXIuYnl0ZXM8ZG91YmxlPigpOwotICB9Ci0g
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgRGF0YVNpemUmIG90aGVyKSBjb25zdCB7
Ci0gICAgcmV0dXJuIGJ5dGVzXyA9PSBvdGhlci5ieXRlc187Ci0gIH0KLSAgY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBEYXRhU2l6ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4g
Ynl0ZXNfICE9IG90aGVyLmJ5dGVzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9
KGNvbnN0IERhdGFTaXplJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBieXRlc18gPD0gb3Ro
ZXIuYnl0ZXNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgRGF0YVNp
emUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIGJ5dGVzXyA+PSBvdGhlci5ieXRlc187Ci0g
IH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IERhdGFTaXplJiBvdGhlcikgY29u
c3QgewotICAgIHJldHVybiBieXRlc18gPiBvdGhlci5ieXRlc187Ci0gIH0KLSAgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IERhdGFTaXplJiBvdGhlcikgY29uc3QgewotICAgIHJldHVy
biBieXRlc18gPCBvdGhlci5ieXRlc187CisgICAgcmV0dXJuIFRvVmFsdWVPcihmYWxsYmFja192
YWx1ZSk7CiAgIH0KIAogIHByaXZhdGU6Ci0gIGV4cGxpY2l0IGNvbnN0ZXhwciBEYXRhU2l6ZShp
bnQ2NF90IGJ5dGVzKSA6IGJ5dGVzXyhieXRlcykge30KLSAgaW50NjRfdCBieXRlc187CisgIGZy
aWVuZCBjbGFzcyBydGNfdW5pdHNfaW1wbDo6VW5pdEJhc2U8RGF0YVNpemU+OworICB1c2luZyBS
ZWxhdGl2ZVVuaXQ6OlJlbGF0aXZlVW5pdDsKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIG9uZV9z
aWRlZCA9IHRydWU7CiB9OwogCi1pbmxpbmUgRGF0YVNpemUgb3BlcmF0b3IqKGNvbnN0IERhdGFT
aXplJiBzaXplLCBjb25zdCBkb3VibGUmIHNjYWxhcikgewotICByZXR1cm4gRGF0YVNpemU6OmJ5
dGVzKHN0ZDo6cm91bmQoc2l6ZS5ieXRlcygpICogc2NhbGFyKSk7Ci19Ci1pbmxpbmUgRGF0YVNp
emUgb3BlcmF0b3IqKGNvbnN0IGRvdWJsZSYgc2NhbGFyLCBjb25zdCBEYXRhU2l6ZSYgc2l6ZSkg
ewotICByZXR1cm4gc2l6ZSAqIHNjYWxhcjsKLX0KLWlubGluZSBEYXRhU2l6ZSBvcGVyYXRvcioo
Y29uc3QgRGF0YVNpemUmIHNpemUsIGNvbnN0IGludDY0X3QmIHNjYWxhcikgewotICByZXR1cm4g
RGF0YVNpemU6OmJ5dGVzKHNpemUuYnl0ZXMoKSAqIHNjYWxhcik7Ci19Ci1pbmxpbmUgRGF0YVNp
emUgb3BlcmF0b3IqKGNvbnN0IGludDY0X3QmIHNjYWxhciwgY29uc3QgRGF0YVNpemUmIHNpemUp
IHsKLSAgcmV0dXJuIHNpemUgKiBzY2FsYXI7Ci19Ci1pbmxpbmUgRGF0YVNpemUgb3BlcmF0b3Iq
KGNvbnN0IERhdGFTaXplJiBzaXplLCBjb25zdCBpbnQzMl90JiBzY2FsYXIpIHsKLSAgcmV0dXJu
IERhdGFTaXplOjpieXRlcyhzaXplLmJ5dGVzKCkgKiBzY2FsYXIpOwotfQotaW5saW5lIERhdGFT
aXplIG9wZXJhdG9yKihjb25zdCBpbnQzMl90JiBzY2FsYXIsIGNvbnN0IERhdGFTaXplJiBzaXpl
KSB7Ci0gIHJldHVybiBzaXplICogc2NhbGFyOwotfQotaW5saW5lIERhdGFTaXplIG9wZXJhdG9y
Lyhjb25zdCBEYXRhU2l6ZSYgc2l6ZSwgY29uc3QgaW50NjRfdCYgc2NhbGFyKSB7Ci0gIHJldHVy
biBEYXRhU2l6ZTo6Ynl0ZXMoc2l6ZS5ieXRlcygpIC8gc2NhbGFyKTsKLX0KLQotc3RkOjpzdHJp
bmcgVG9TdHJpbmcoY29uc3QgRGF0YVNpemUmIHZhbHVlKTsKK3N0ZDo6c3RyaW5nIFRvU3RyaW5n
KERhdGFTaXplIHZhbHVlKTsKIAogI2lmZGVmIFVOSVRfVEVTVAogaW5saW5lIHN0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PCggIC8vIG5vLXByZXN1Ym1pdC1jaGVjayBUT0RPKHdlYnJ0Yzo4OTgyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3VuaXRzL3RpbWVfZGVsdGEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdW5pdHMvdGltZV9kZWx0YS5jYwppbmRleCBkMzgzODdhNTY2OWFlZTRiOTUy
YWRjY2NhNmQ4ODRiZmVlN2JjMTNjLi5mOTA0NTFiNDI5YTdhMGIxZDk5ZDNiYTk2OGMzZDY2MTVj
YmFkOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdW5pdHMvdGltZV9kZWx0YS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZV9kZWx0YS5jYwpAQCAtMTQsNyArMTQs
NyBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotc3RkOjpzdHJpbmcgVG9TdHJpbmcoY29uc3Qg
VGltZURlbHRhJiB2YWx1ZSkgeworc3RkOjpzdHJpbmcgVG9TdHJpbmcoVGltZURlbHRhIHZhbHVl
KSB7CiAgIGNoYXIgYnVmWzY0XTsKICAgcnRjOjpTaW1wbGVTdHJpbmdCdWlsZGVyIHNiKGJ1Zik7
CiAgIGlmICh2YWx1ZS5Jc1BsdXNJbmZpbml0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZV9kZWx0YS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVf
ZGVsdGEuaAppbmRleCBlYzM2NDE3MmFhMThkZjNhODRmY2NkY2FmYTFmZmFhZjkyY2Q3ZGZkLi42
NDU4MzY5ODkzNzEyMGY5NGUyZjYxMTNkZDY4NTJjYmM5MjRkYjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZV9kZWx0
YS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91
bml0cy90aW1lX2RlbHRhLmgKQEAgLTE1LDIxICsxNSwxMyBAQAogI2luY2x1ZGUgPG9zdHJlYW0+
ICAvLyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKICNlbmRpZiAgICAgICAg
ICAgICAgLy8gVU5JVF9URVNUCiAKLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxjbWF0
aD4KICNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdHJp
bmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewot
bmFtZXNwYWNlIHRpbWVkZWx0YV9pbXBsIHsKLWNvbnN0ZXhwciBpbnQ2NF90IGtQbHVzSW5maW5p
dHlWYWwgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsKLWNvbnN0ZXhwciBp
bnQ2NF90IGtNaW51c0luZmluaXR5VmFsID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6
bWluKCk7Ci19ICAvLyBuYW1lc3BhY2UgdGltZWRlbHRhX2ltcGwKLQogLy8gVGltZURlbHRhIHJl
cHJlc2VudHMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gdGltZXN0YW1wcy4gQ29tbW9ubHkg
dGhpcyBjYW4KIC8vIGJlIGEgZHVyYXRpb24uIEhvd2V2ZXIgc2luY2UgdHdvIFRpbWVzdGFtcHMg
YXJlIG5vdCBndWFyYW50ZWVkIHRvIGhhdmUgdGhlCiAvLyBzYW1lIGVwb2NoICh0aGV5IG1pZ2h0
IGNvbWUgZnJvbSBkaWZmZXJlbnQgY29tcHV0ZXJzLCBtYWtpbmcgZXhhY3QKQEAgLTM3LDI0NSAr
MjksNjkgQEAgY29uc3RleHByIGludDY0X3Qga01pbnVzSW5maW5pdHlWYWwgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptaW4oKTsKIC8vIHVuZGVmaW5lZC4gVG8gc2ltcGxpZnkgdXNh
Z2UsIGl0IGNhbiBiZSBjb25zdHJ1Y3RlZCBhbmQgY29udmVydGVkIHRvCiAvLyBkaWZmZXJlbnQg
dW5pdHMsIHNwZWNpZmljYWxseSBzZWNvbmRzIChzKSwgbWlsbGlzZWNvbmRzIChtcykgYW5kCiAv
LyBtaWNyb3NlY29uZHMgKHVzKS4KLWNsYXNzIFRpbWVEZWx0YSB7CitjbGFzcyBUaW1lRGVsdGEg
ZmluYWwgOiBwdWJsaWMgcnRjX3VuaXRzX2ltcGw6OlJlbGF0aXZlVW5pdDxUaW1lRGVsdGE+IHsK
ICBwdWJsaWM6CiAgIFRpbWVEZWx0YSgpID0gZGVsZXRlOwotICBzdGF0aWMgY29uc3RleHByIFRp
bWVEZWx0YSBaZXJvKCkgeyByZXR1cm4gVGltZURlbHRhKDApOyB9Ci0gIHN0YXRpYyBjb25zdGV4
cHIgVGltZURlbHRhIFBsdXNJbmZpbml0eSgpIHsKLSAgICByZXR1cm4gVGltZURlbHRhKHRpbWVk
ZWx0YV9pbXBsOjprUGx1c0luZmluaXR5VmFsKTsKLSAgfQotICBzdGF0aWMgY29uc3RleHByIFRp
bWVEZWx0YSBNaW51c0luZmluaXR5KCkgewotICAgIHJldHVybiBUaW1lRGVsdGEodGltZWRlbHRh
X2ltcGw6OmtNaW51c0luZmluaXR5VmFsKTsKLSAgfQogICB0ZW1wbGF0ZSA8aW50NjRfdCBzZWNv
bmRzPgogICBzdGF0aWMgY29uc3RleHByIFRpbWVEZWx0YSBTZWNvbmRzKCkgewotICAgIHN0YXRp
Y19hc3NlcnQoc2Vjb25kcyA+IHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbCAvIDEw
MDAwMDAsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNlY29uZHMgPCB0aW1lZGVsdGFfaW1wbDo6
a1BsdXNJbmZpbml0eVZhbCAvIDEwMDAwMDAsICIiKTsKLSAgICByZXR1cm4gVGltZURlbHRhKHNl
Y29uZHMgKiAxMDAwMDAwKTsKKyAgICByZXR1cm4gRnJvbVN0YXRpY0ZyYWN0aW9uPHNlY29uZHMs
IDEwMDAwMDA+KCk7CiAgIH0KICAgdGVtcGxhdGUgPGludDY0X3QgbXM+CiAgIHN0YXRpYyBjb25z
dGV4cHIgVGltZURlbHRhIE1pbGxpcygpIHsKLSAgICBzdGF0aWNfYXNzZXJ0KG1zID4gdGltZWRl
bHRhX2ltcGw6OmtNaW51c0luZmluaXR5VmFsIC8gMTAwMCwgIiIpOwotICAgIHN0YXRpY19hc3Nl
cnQobXMgPCB0aW1lZGVsdGFfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCAvIDEwMDAsICIiKTsKLSAg
ICByZXR1cm4gVGltZURlbHRhKG1zICogMTAwMCk7CisgICAgcmV0dXJuIEZyb21TdGF0aWNGcmFj
dGlvbjxtcywgMTAwMD4oKTsKICAgfQogICB0ZW1wbGF0ZSA8aW50NjRfdCB1cz4KICAgc3RhdGlj
IGNvbnN0ZXhwciBUaW1lRGVsdGEgTWljcm9zKCkgewotICAgIHN0YXRpY19hc3NlcnQodXMgPiB0
aW1lZGVsdGFfaW1wbDo6a01pbnVzSW5maW5pdHlWYWwsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KHVzIDwgdGltZWRlbHRhX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwsICIiKTsKLSAgICByZXR1cm4g
VGltZURlbHRhKHVzKTsKLSAgfQotCi0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVuYW1lIFQsCi0g
ICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46
OnR5cGUqID0gbnVsbHB0cj4KLSAgc3RhdGljIFRpbWVEZWx0YSBzZWNvbmRzKFQgc2Vjb25kcykg
ewotICAgIFJUQ19EQ0hFQ0tfR1Qoc2Vjb25kcywgdGltZWRlbHRhX2ltcGw6OmtNaW51c0luZmlu
aXR5VmFsIC8gMTAwMDAwMCk7Ci0gICAgUlRDX0RDSEVDS19MVChzZWNvbmRzLCB0aW1lZGVsdGFf
aW1wbDo6a1BsdXNJbmZpbml0eVZhbCAvIDEwMDAwMDApOwotICAgIHJldHVybiBUaW1lRGVsdGEo
cnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KHNlY29uZHMpICogMTAwMDAwMCk7CisgICAgcmV0
dXJuIEZyb21TdGF0aWNWYWx1ZTx1cz4oKTsKICAgfQotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBl
bmFtZSBULAotICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxU
Pjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gIHN0YXRpYyBUaW1lRGVsdGEgbXMoVCBtaWxs
aXNlY29uZHMpIHsKLSAgICBSVENfRENIRUNLX0dUKG1pbGxpc2Vjb25kcywgdGltZWRlbHRhX2lt
cGw6OmtNaW51c0luZmluaXR5VmFsIC8gMTAwMCk7Ci0gICAgUlRDX0RDSEVDS19MVChtaWxsaXNl
Y29uZHMsIHRpbWVkZWx0YV9pbXBsOjprUGx1c0luZmluaXR5VmFsIC8gMTAwMCk7Ci0gICAgcmV0
dXJuIFRpbWVEZWx0YShydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRfdD4obWlsbGlzZWNvbmRzKSAq
IDEwMDApOwotICB9Ci0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVuYW1lIFQsCi0gICAgICB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0g
bnVsbHB0cj4KLSAgc3RhdGljIFRpbWVEZWx0YSB1cyhUIG1pY3Jvc2Vjb25kcykgewotICAgIFJU
Q19EQ0hFQ0tfR1QobWljcm9zZWNvbmRzLCB0aW1lZGVsdGFfaW1wbDo6a01pbnVzSW5maW5pdHlW
YWwpOwotICAgIFJUQ19EQ0hFQ0tfTFQobWljcm9zZWNvbmRzLCB0aW1lZGVsdGFfaW1wbDo6a1Bs
dXNJbmZpbml0eVZhbCk7Ci0gICAgcmV0dXJuIFRpbWVEZWx0YShydGM6OmRjaGVja2VkX2Nhc3Q8
aW50NjRfdD4obWljcm9zZWNvbmRzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwK
LSAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9p
bnQ8VD46OnZhbHVlPjo6dHlwZSogPQotICAgICAgICAgICAgICAgIG51bGxwdHI+CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBzdGF0aWMgVGltZURlbHRhIHNlY29uZHMoVCBzZWNvbmRzKSB7
Ci0gICAgcmV0dXJuIFRpbWVEZWx0YTo6dXMoc2Vjb25kcyAqIDFlNik7CisgICAgcmV0dXJuIEZy
b21GcmFjdGlvbjwxMDAwMDAwPihzZWNvbmRzKTsKICAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwKLSAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdf
cG9pbnQ8VD46OnZhbHVlPjo6dHlwZSogPQotICAgICAgICAgICAgICAgIG51bGxwdHI+CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBzdGF0aWMgVGltZURlbHRhIG1zKFQgbWlsbGlzZWNvbmRz
KSB7Ci0gICAgcmV0dXJuIFRpbWVEZWx0YTo6dXMobWlsbGlzZWNvbmRzICogMWUzKTsKKyAgICBy
ZXR1cm4gRnJvbUZyYWN0aW9uPDEwMDA+KG1pbGxpc2Vjb25kcyk7CiAgIH0KLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAgICAgICAgICAgICBudWxs
cHRyPgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgc3RhdGljIFRpbWVEZWx0YSB1cyhUIG1p
Y3Jvc2Vjb25kcykgewotICAgIGlmIChtaWNyb3NlY29uZHMgPT0gc3RkOjpudW1lcmljX2xpbWl0
czxUPjo6aW5maW5pdHkoKSkgewotICAgICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOwotICAgIH0g
ZWxzZSBpZiAobWljcm9zZWNvbmRzID09IC1zdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0
eSgpKSB7Ci0gICAgICByZXR1cm4gTWludXNJbmZpbml0eSgpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICBSVENfRENIRUNLKCFzdGQ6OmlzbmFuKG1pY3Jvc2Vjb25kcykpOwotICAgICAgUlRDX0RDSEVD
S19HVChtaWNyb3NlY29uZHMsIHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbCk7Ci0g
ICAgICBSVENfRENIRUNLX0xUKG1pY3Jvc2Vjb25kcywgdGltZWRlbHRhX2ltcGw6OmtQbHVzSW5m
aW5pdHlWYWwpOwotICAgICAgcmV0dXJuIFRpbWVEZWx0YShydGM6OmRjaGVja2VkX2Nhc3Q8aW50
NjRfdD4obWljcm9zZWNvbmRzKSk7Ci0gICAgfQorICAgIHJldHVybiBGcm9tVmFsdWUobWljcm9z
ZWNvbmRzKTsKICAgfQotCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBl
IHNlY29uZHMoKSBjb25zdCB7Ci0gICAgUlRDX0RDSEVDSyhJc0Zpbml0ZSgpKTsKLSAgICByZXR1
cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KFVuc2FmZVNlY29uZHMoKSk7CisgIFQgc2Vjb25kcygp
IGNvbnN0IHsKKyAgICByZXR1cm4gVG9GcmFjdGlvbjwxMDAwMDAwLCBUPigpOwogICB9CiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIG1zKCkgY29uc3QgewotICAgIFJU
Q19EQ0hFQ0soSXNGaW5pdGUoKSk7Ci0gICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihV
bnNhZmVNaWxsaXMoKSk7CisgIFQgbXMoKSBjb25zdCB7CisgICAgcmV0dXJuIFRvRnJhY3Rpb248
MTAwMCwgVD4oKTsKICAgfQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+Ci0gIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlw
ZSB1cygpIGNvbnN0IHsKLSAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOwotICAgIHJldHVybiBy
dGM6OmRjaGVja2VkX2Nhc3Q8VD4obWljcm9zZWNvbmRzXyk7CisgIFQgdXMoKSBjb25zdCB7Cisg
ICAgcmV0dXJuIFRvVmFsdWU8VD4oKTsKICAgfQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGlu
dDY0X3Q+Ci0gIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZh
bHVlLCBUPjo6dHlwZSBucygpIGNvbnN0IHsKLSAgICBSVENfRENIRUNLX0dFKHVzKCksIHN0ZDo6
bnVtZXJpY19saW1pdHM8VD46Om1pbigpIC8gMTAwMCk7Ci0gICAgUlRDX0RDSEVDS19MRSh1cygp
LCBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSAvIDEwMDApOwotICAgIHJldHVybiBydGM6
OmRjaGVja2VkX2Nhc3Q8VD4odXMoKSAqIDEwMDApOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci0gIGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0
aW5nX3BvaW50PFQ+Ojp2YWx1ZSwgVD46OnR5cGUKLSAgc2Vjb25kcygpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gdXM8VD4oKSAqIDFlLTY7Ci0gIH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGNv
bnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+
Ojp2YWx1ZSwgVD46OnR5cGUKLSAgbXMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHVzPFQ+KCkgKiAx
ZS0zOwotICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBjb25zdGV4cHIgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBl
Ci0gIHVzKCkgY29uc3QgewotICAgIHJldHVybiBJc1BsdXNJbmZpbml0eSgpCi0gICAgICAgICAg
ICAgICA/IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkKLSAgICAgICAgICAgICAg
IDogSXNNaW51c0luZmluaXR5KCkgPyAtc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHko
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1pY3Jvc2Vjb25kc187Ci0g
IH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZSwgVD46OnR5cGUKLSAgbnMo
KSBjb25zdCB7Ci0gICAgcmV0dXJuIHVzPFQ+KCkgKiAxZTM7CisgIFQgbnMoKSBjb25zdCB7Cisg
ICAgcmV0dXJuIFRvTXVsdGlwbGU8MTAwMCwgVD4oKTsKICAgfQogCiAgIGNvbnN0ZXhwciBpbnQ2
NF90IHNlY29uZHNfb3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkgY29uc3QgewotICAgIHJldHVy
biBJc0Zpbml0ZSgpID8gVW5zYWZlU2Vjb25kcygpIDogZmFsbGJhY2tfdmFsdWU7CisgICAgcmV0
dXJuIFRvRnJhY3Rpb25PcjwxMDAwMDAwPihmYWxsYmFja192YWx1ZSk7CiAgIH0KICAgY29uc3Rl
eHByIGludDY0X3QgbXNfb3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkgY29uc3QgewotICAgIHJl
dHVybiBJc0Zpbml0ZSgpID8gVW5zYWZlTWlsbGlzKCkgOiBmYWxsYmFja192YWx1ZTsKKyAgICBy
ZXR1cm4gVG9GcmFjdGlvbk9yPDEwMDA+KGZhbGxiYWNrX3ZhbHVlKTsKICAgfQogICBjb25zdGV4
cHIgaW50NjRfdCB1c19vcihpbnQ2NF90IGZhbGxiYWNrX3ZhbHVlKSBjb25zdCB7Ci0gICAgcmV0
dXJuIElzRmluaXRlKCkgPyBtaWNyb3NlY29uZHNfIDogZmFsbGJhY2tfdmFsdWU7CisgICAgcmV0
dXJuIFRvVmFsdWVPcihmYWxsYmFja192YWx1ZSk7CiAgIH0KIAogICBUaW1lRGVsdGEgQWJzKCkg
Y29uc3QgeyByZXR1cm4gVGltZURlbHRhOjp1cyhzdGQ6OmFicyh1cygpKSk7IH0KLSAgY29uc3Rl
eHByIGJvb2wgSXNaZXJvKCkgY29uc3QgeyByZXR1cm4gbWljcm9zZWNvbmRzXyA9PSAwOyB9Ci0g
IGNvbnN0ZXhwciBib29sIElzRmluaXRlKCkgY29uc3QgeyByZXR1cm4gIUlzSW5maW5pdGUoKTsg
fQotICBjb25zdGV4cHIgYm9vbCBJc0luZmluaXRlKCkgY29uc3QgewotICAgIHJldHVybiBtaWNy
b3NlY29uZHNfID09IHRpbWVkZWx0YV9pbXBsOjprUGx1c0luZmluaXR5VmFsIHx8Ci0gICAgICAg
ICAgIG1pY3Jvc2Vjb25kc18gPT0gdGltZWRlbHRhX2ltcGw6OmtNaW51c0luZmluaXR5VmFsOwot
ICB9Ci0gIGNvbnN0ZXhwciBib29sIElzUGx1c0luZmluaXR5KCkgY29uc3QgewotICAgIHJldHVy
biBtaWNyb3NlY29uZHNfID09IHRpbWVkZWx0YV9pbXBsOjprUGx1c0luZmluaXR5VmFsOwotICB9
Ci0gIGNvbnN0ZXhwciBib29sIElzTWludXNJbmZpbml0eSgpIGNvbnN0IHsKLSAgICByZXR1cm4g
bWljcm9zZWNvbmRzXyA9PSB0aW1lZGVsdGFfaW1wbDo6a01pbnVzSW5maW5pdHlWYWw7Ci0gIH0K
LSAgVGltZURlbHRhIG9wZXJhdG9yKyhjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0g
ICAgaWYgKElzUGx1c0luZmluaXR5KCkgfHwgb3RoZXIuSXNQbHVzSW5maW5pdHkoKSkgewotICAg
ICAgUlRDX0RDSEVDSyghSXNNaW51c0luZmluaXR5KCkpOwotICAgICAgUlRDX0RDSEVDSyghb3Ro
ZXIuSXNNaW51c0luZmluaXR5KCkpOwotICAgICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOwotICAg
IH0gZWxzZSBpZiAoSXNNaW51c0luZmluaXR5KCkgfHwgb3RoZXIuSXNNaW51c0luZmluaXR5KCkp
IHsKLSAgICAgIFJUQ19EQ0hFQ0soIUlzUGx1c0luZmluaXR5KCkpOwotICAgICAgUlRDX0RDSEVD
Syghb3RoZXIuSXNQbHVzSW5maW5pdHkoKSk7Ci0gICAgICByZXR1cm4gTWludXNJbmZpbml0eSgp
OwotICAgIH0KLSAgICByZXR1cm4gVGltZURlbHRhOjp1cyh1cygpICsgb3RoZXIudXMoKSk7Ci0g
IH0KLSAgVGltZURlbHRhIG9wZXJhdG9yLShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7
Ci0gICAgaWYgKElzUGx1c0luZmluaXR5KCkgfHwgb3RoZXIuSXNNaW51c0luZmluaXR5KCkpIHsK
LSAgICAgIFJUQ19EQ0hFQ0soIUlzTWludXNJbmZpbml0eSgpKTsKLSAgICAgIFJUQ19EQ0hFQ0so
IW90aGVyLklzUGx1c0luZmluaXR5KCkpOwotICAgICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOwot
ICAgIH0gZWxzZSBpZiAoSXNNaW51c0luZmluaXR5KCkgfHwgb3RoZXIuSXNQbHVzSW5maW5pdHko
KSkgewotICAgICAgUlRDX0RDSEVDSyghSXNQbHVzSW5maW5pdHkoKSk7Ci0gICAgICBSVENfRENI
RUNLKCFvdGhlci5Jc01pbnVzSW5maW5pdHkoKSk7Ci0gICAgICByZXR1cm4gTWludXNJbmZpbml0
eSgpOwotICAgIH0KLSAgICByZXR1cm4gVGltZURlbHRhOjp1cyh1cygpIC0gb3RoZXIudXMoKSk7
Ci0gIH0KLSAgVGltZURlbHRhJiBvcGVyYXRvci09KGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIpIHsK
LSAgICAqdGhpcyA9ICp0aGlzIC0gb3RoZXI7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0gIFRp
bWVEZWx0YSYgb3BlcmF0b3IrPShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSB7Ci0gICAgKnRoaXMg
PSAqdGhpcyArIG90aGVyOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBjb25zdGV4cHIgZG91
YmxlIG9wZXJhdG9yLyhjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJu
IHVzPGRvdWJsZT4oKSAvIG90aGVyLnVzPGRvdWJsZT4oKTsKLSAgfQotICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4g
bWljcm9zZWNvbmRzXyA9PSBvdGhlci5taWNyb3NlY29uZHNfOwotICB9Ci0gIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yIT0oY29uc3QgVGltZURlbHRhJiBvdGhlcikgY29uc3QgewotICAgIHJldHVy
biBtaWNyb3NlY29uZHNfICE9IG90aGVyLm1pY3Jvc2Vjb25kc187Ci0gIH0KLSAgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0
dXJuIG1pY3Jvc2Vjb25kc18gPD0gb3RoZXIubWljcm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gbWljcm9zZWNvbmRzXyA+PSBvdGhlci5taWNyb3NlY29uZHNfOwotICB9Ci0gIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAg
cmV0dXJuIG1pY3Jvc2Vjb25kc18gPiBvdGhlci5taWNyb3NlY29uZHNfOwotICB9Ci0gIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAg
cmV0dXJuIG1pY3Jvc2Vjb25kc18gPCBvdGhlci5taWNyb3NlY29uZHNfOwotICB9CiAKICBwcml2
YXRlOgotICBleHBsaWNpdCBjb25zdGV4cHIgVGltZURlbHRhKGludDY0X3QgdXMpIDogbWljcm9z
ZWNvbmRzXyh1cykge30KLSAgY29uc3RleHByIGludDY0X3QgVW5zYWZlU2Vjb25kcygpIGNvbnN0
IHsKLSAgICByZXR1cm4gKG1pY3Jvc2Vjb25kc18gKyAobWljcm9zZWNvbmRzXyA+PSAwID8gNTAw
MDAwIDogLTUwMDAwMCkpIC8gMTAwMDAwMDsKLSAgfQotICBjb25zdGV4cHIgaW50NjRfdCBVbnNh
ZmVNaWxsaXMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIChtaWNyb3NlY29uZHNfICsgKG1pY3Jvc2Vj
b25kc18gPj0gMCA/IDUwMCA6IC01MDApKSAvIDEwMDA7Ci0gIH0KLSAgaW50NjRfdCBtaWNyb3Nl
Y29uZHNfOworICBmcmllbmQgY2xhc3MgcnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlPFRpbWVEZWx0
YT47CisgIHVzaW5nIFJlbGF0aXZlVW5pdDo6UmVsYXRpdmVVbml0OworICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgb25lX3NpZGVkID0gZmFsc2U7CiB9OwogCi1pbmxpbmUgVGltZURlbHRhIG9wZXJh
dG9yKihjb25zdCBUaW1lRGVsdGEmIGRlbHRhLCBjb25zdCBkb3VibGUmIHNjYWxhcikgewotICBy
ZXR1cm4gVGltZURlbHRhOjp1cyhzdGQ6OnJvdW5kKGRlbHRhLnVzKCkgKiBzY2FsYXIpKTsKLX0K
LWlubGluZSBUaW1lRGVsdGEgb3BlcmF0b3IqKGNvbnN0IGRvdWJsZSYgc2NhbGFyLCBjb25zdCBU
aW1lRGVsdGEmIGRlbHRhKSB7Ci0gIHJldHVybiBkZWx0YSAqIHNjYWxhcjsKLX0KLWlubGluZSBU
aW1lRGVsdGEgb3BlcmF0b3IqKGNvbnN0IFRpbWVEZWx0YSYgZGVsdGEsIGNvbnN0IGludDY0X3Qm
IHNjYWxhcikgewotICByZXR1cm4gVGltZURlbHRhOjp1cyhkZWx0YS51cygpICogc2NhbGFyKTsK
LX0KLWlubGluZSBUaW1lRGVsdGEgb3BlcmF0b3IqKGNvbnN0IGludDY0X3QmIHNjYWxhciwgY29u
c3QgVGltZURlbHRhJiBkZWx0YSkgewotICByZXR1cm4gZGVsdGEgKiBzY2FsYXI7Ci19Ci1pbmxp
bmUgVGltZURlbHRhIG9wZXJhdG9yKihjb25zdCBUaW1lRGVsdGEmIGRlbHRhLCBjb25zdCBpbnQz
Ml90JiBzY2FsYXIpIHsKLSAgcmV0dXJuIFRpbWVEZWx0YTo6dXMoZGVsdGEudXMoKSAqIHNjYWxh
cik7Ci19Ci1pbmxpbmUgVGltZURlbHRhIG9wZXJhdG9yKihjb25zdCBpbnQzMl90JiBzY2FsYXIs
IGNvbnN0IFRpbWVEZWx0YSYgZGVsdGEpIHsKLSAgcmV0dXJuIGRlbHRhICogc2NhbGFyOwotfQot
Ci1pbmxpbmUgVGltZURlbHRhIG9wZXJhdG9yLyhjb25zdCBUaW1lRGVsdGEmIGRlbHRhLCBjb25z
dCBpbnQ2NF90JiBzY2FsYXIpIHsKLSAgcmV0dXJuIFRpbWVEZWx0YTo6dXMoZGVsdGEudXMoKSAv
IHNjYWxhcik7Ci19Ci1zdGQ6OnN0cmluZyBUb1N0cmluZyhjb25zdCBUaW1lRGVsdGEmIHZhbHVl
KTsKK3N0ZDo6c3RyaW5nIFRvU3RyaW5nKFRpbWVEZWx0YSB2YWx1ZSk7CiAKICNpZmRlZiBVTklU
X1RFU1QKIGlubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoICAvLyBuby1wcmVzdWJtaXQt
Y2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lX2RlbHRhX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVf
ZGVsdGFfdW5pdHRlc3QuY2MKaW5kZXggYmY4YmJjZTY5YmVmZWQ2MTYyMjhkMWI0Y2U0NGMxNjNi
YzQ0N2UzZi4uYTQ2YmE4MzVjYjE4ZjRlNWJiNjJhOWEzOWE4NzNjZGVkMzdkZmYxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRz
L3RpbWVfZGVsdGFfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGFfdW5pdHRlc3QuY2MKQEAgLTEwLDYg
KzEwLDggQEAKIAogI2luY2x1ZGUgImFwaS91bml0cy90aW1lX2RlbHRhLmgiCiAKKyNpbmNsdWRl
IDxsaW1pdHM+CisKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpAQCAtMTA2LDYgKzEwOCwyNyBAQCBURVNUKFRpbWVEZWx0YVRlc3QsIENvbXBhcmlzb25PcGVy
YXRvcnMpIHsKICAgRVhQRUNUX0xUKFRpbWVEZWx0YTo6TWludXNJbmZpbml0eSgpLCBUaW1lRGVs
dGE6Olplcm8oKSk7CiB9CiAKK1RFU1QoVGltZURlbHRhVGVzdCwgQ2xhbXBpbmcpIHsKKyAgY29u
c3QgVGltZURlbHRhIHVwcGVyID0gVGltZURlbHRhOjptcyg4MDApOworICBjb25zdCBUaW1lRGVs
dGEgbG93ZXIgPSBUaW1lRGVsdGE6Om1zKDEwMCk7CisgIGNvbnN0IFRpbWVEZWx0YSB1bmRlciA9
IFRpbWVEZWx0YTo6bXMoMTAwKTsKKyAgY29uc3QgVGltZURlbHRhIGluc2lkZSA9IFRpbWVEZWx0
YTo6bXMoNTAwKTsKKyAgY29uc3QgVGltZURlbHRhIG92ZXIgPSBUaW1lRGVsdGE6Om1zKDEwMDAp
OworICBFWFBFQ1RfRVEodW5kZXIuQ2xhbXBlZChsb3dlciwgdXBwZXIpLCBsb3dlcik7CisgIEVY
UEVDVF9FUShpbnNpZGUuQ2xhbXBlZChsb3dlciwgdXBwZXIpLCBpbnNpZGUpOworICBFWFBFQ1Rf
RVEob3Zlci5DbGFtcGVkKGxvd2VyLCB1cHBlciksIHVwcGVyKTsKKworICBUaW1lRGVsdGEgbXV0
YWJsZV9kZWx0YSA9IGxvd2VyOworICBtdXRhYmxlX2RlbHRhLkNsYW1wKGxvd2VyLCB1cHBlcik7
CisgIEVYUEVDVF9FUShtdXRhYmxlX2RlbHRhLCBsb3dlcik7CisgIG11dGFibGVfZGVsdGEgPSBp
bnNpZGU7CisgIG11dGFibGVfZGVsdGEuQ2xhbXAobG93ZXIsIHVwcGVyKTsKKyAgRVhQRUNUX0VR
KG11dGFibGVfZGVsdGEsIGluc2lkZSk7CisgIG11dGFibGVfZGVsdGEgPSBvdmVyOworICBtdXRh
YmxlX2RlbHRhLkNsYW1wKGxvd2VyLCB1cHBlcik7CisgIEVYUEVDVF9FUShtdXRhYmxlX2RlbHRh
LCB1cHBlcik7Cit9CisKIFRFU1QoVGltZURlbHRhVGVzdCwgQ2FuQmVJbml0aXRpYWxpemVkRnJv
bUxhcmdlSW50KSB7CiAgIGNvbnN0IGludCBrTWF4SW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptYXgoKTsKICAgRVhQRUNUX0VRKFRpbWVEZWx0YTo6c2Vjb25kcyhrTWF4SW50KS51cygp
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3VuaXRzL3RpbWVzdGFtcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS91bml0cy90aW1lc3RhbXAuY2MKaW5kZXggZmViMTQ0Nzg5Y2EyYjU5ZjAy
NGRkOWI3MzUwMTBiNDdkNGY1ZDFkMi4uZDM0MTdjZmIwNWIyZjI2NzNlNDQ3NzlmOTk0MWUzOTU1
M2Q5YjM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3VuaXRzL3RpbWVzdGFtcC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZXN0YW1wLmNjCkBAIC0xMyw3ICsxMyw3
IEBACiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKLXN0ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IFRpbWVzdGFtcCYgdmFs
dWUpIHsKK3N0ZDo6c3RyaW5nIFRvU3RyaW5nKFRpbWVzdGFtcCB2YWx1ZSkgewogICBjaGFyIGJ1
Zls2NF07CiAgIHJ0Yzo6U2ltcGxlU3RyaW5nQnVpbGRlciBzYihidWYpOwogICBpZiAodmFsdWUu
SXNJbmZpbml0ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZXN0YW1wLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZXN0YW1wLmgKaW5kZXggMDI5OGY1
ZGE5NzkzNDJiZGJjMjk5ODA4NzY2MjJiMmVhMDQwYWNmMS4uYTZlNDUwZjY4NTBmNTU5MzMyYzNk
NTZhOWVhM2VlOTQwMmM1NWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVzdGFtcC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lc3RhbXAuaApAQCAt
MTUsMTg5ICsxNSw5NCBAQAogI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBuby1wcmVzdWJtaXQtY2hl
Y2sgVE9ETyh3ZWJydGM6ODk4MikKICNlbmRpZiAgICAgICAgICAgICAgLy8gVU5JVF9URVNUCiAK
LSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogCiAjaW5jbHVkZSAiYXBpL3VuaXRzL3RpbWVfZGVs
dGEuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9u
dW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNw
YWNlIHRpbWVzdGFtcF9pbXBsIHsKLWNvbnN0ZXhwciBpbnQ2NF90IGtQbHVzSW5maW5pdHlWYWwg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsKLWNvbnN0ZXhwciBpbnQ2NF90
IGtNaW51c0luZmluaXR5VmFsID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCk7
Ci19ICAvLyBuYW1lc3BhY2UgdGltZXN0YW1wX2ltcGwKLQogLy8gVGltZXN0YW1wIHJlcHJlc2Vu
dHMgdGhlIHRpbWUgdGhhdCBoYXMgcGFzc2VkIHNpbmNlIHNvbWUgdW5zcGVjaWZpZWQgZXBvY2gu
CiAvLyBUaGUgZXBvY2ggaXMgYXNzdW1lZCB0byBiZSBiZWZvcmUgYW55IHJlcHJlc2VudGVkIHRp
bWVzdGFtcHMsIHRoaXMgbWVhbnMgdGhhdAogLy8gbmVnYXRpdmUgdmFsdWVzIGFyZSBub3QgdmFs
aWQuIFRoZSBtb3N0IG5vdGFibGUgZmVhdHVyZSBpcyB0aGF0IHRoZQogLy8gZGlmZmVyZW5jZSBv
ZiB0d28gVGltZXN0YW1wcyByZXN1bHRzIGluIGEgVGltZURlbHRhLgotY2xhc3MgVGltZXN0YW1w
IHsKK2NsYXNzIFRpbWVzdGFtcCBmaW5hbCA6IHB1YmxpYyBydGNfdW5pdHNfaW1wbDo6VW5pdEJh
c2U8VGltZXN0YW1wPiB7CiAgcHVibGljOgogICBUaW1lc3RhbXAoKSA9IGRlbGV0ZTsKLSAgc3Rh
dGljIGNvbnN0ZXhwciBUaW1lc3RhbXAgUGx1c0luZmluaXR5KCkgewotICAgIHJldHVybiBUaW1l
c3RhbXAodGltZXN0YW1wX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwpOwotICB9Ci0gIHN0YXRpYyBj
b25zdGV4cHIgVGltZXN0YW1wIE1pbnVzSW5maW5pdHkoKSB7Ci0gICAgcmV0dXJuIFRpbWVzdGFt
cCh0aW1lc3RhbXBfaW1wbDo6a01pbnVzSW5maW5pdHlWYWwpOwotICB9CisKICAgdGVtcGxhdGUg
PGludDY0X3Qgc2Vjb25kcz4KICAgc3RhdGljIGNvbnN0ZXhwciBUaW1lc3RhbXAgU2Vjb25kcygp
IHsKLSAgICBzdGF0aWNfYXNzZXJ0KHNlY29uZHMgPj0gMCwgIiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoc2Vjb25kcyA8IHRpbWVzdGFtcF9pbXBsOjprUGx1c0luZmluaXR5VmFsIC8gMTAwMDAwMCwg
IiIpOwotICAgIHJldHVybiBUaW1lc3RhbXAoc2Vjb25kcyAqIDEwMDAwMDApOworICAgIHJldHVy
biBGcm9tU3RhdGljRnJhY3Rpb248c2Vjb25kcywgMTAwMDAwMD4oKTsKICAgfQogICB0ZW1wbGF0
ZSA8aW50NjRfdCBtcz4KICAgc3RhdGljIGNvbnN0ZXhwciBUaW1lc3RhbXAgTWlsbGlzKCkgewot
ICAgIHN0YXRpY19hc3NlcnQobXMgPj0gMCwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQobXMgPCB0
aW1lc3RhbXBfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCAvIDEwMDAsICIiKTsKLSAgICByZXR1cm4g
VGltZXN0YW1wKG1zICogMTAwMCk7CisgICAgcmV0dXJuIEZyb21TdGF0aWNGcmFjdGlvbjxtcywg
MTAwMD4oKTsKICAgfQogICB0ZW1wbGF0ZSA8aW50NjRfdCB1cz4KICAgc3RhdGljIGNvbnN0ZXhw
ciBUaW1lc3RhbXAgTWljcm9zKCkgewotICAgIHN0YXRpY19hc3NlcnQodXMgPj0gMCwgIiIpOwot
ICAgIHN0YXRpY19hc3NlcnQodXMgPCB0aW1lc3RhbXBfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCwg
IiIpOwotICAgIHJldHVybiBUaW1lc3RhbXAodXMpOwotICB9Ci0KLSAgdGVtcGxhdGUgPAotICAg
ICAgdHlwZW5hbWUgVCwKLSAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50
ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICBzdGF0aWMgVGltZXN0YW1wIHNl
Y29uZHMoVCBzZWNvbmRzKSB7Ci0gICAgUlRDX0RDSEVDS19HRShzZWNvbmRzLCAwKTsKLSAgICBS
VENfRENIRUNLX0xUKHNlY29uZHMsIHRpbWVzdGFtcF9pbXBsOjprUGx1c0luZmluaXR5VmFsIC8g
MTAwMDAwMCk7Ci0gICAgcmV0dXJuIFRpbWVzdGFtcChydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRf
dD4oc2Vjb25kcykgKiAxMDAwMDAwKTsKLSAgfQotCi0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVu
YW1lIFQsCi0gICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+
Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgc3RhdGljIFRpbWVzdGFtcCBtcyhUIG1pbGxp
c2Vjb25kcykgewotICAgIFJUQ19EQ0hFQ0tfR0UobWlsbGlzZWNvbmRzLCAwKTsKLSAgICBSVENf
RENIRUNLX0xUKG1pbGxpc2Vjb25kcywgdGltZXN0YW1wX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwg
LyAxMDAwKTsKLSAgICByZXR1cm4gVGltZXN0YW1wKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90
PihtaWxsaXNlY29uZHMpICogMTAwMCk7CisgICAgcmV0dXJuIEZyb21TdGF0aWNWYWx1ZTx1cz4o
KTsKICAgfQogCi0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVuYW1lIFQsCi0gICAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVs
bHB0cj4KLSAgc3RhdGljIFRpbWVzdGFtcCB1cyhUIG1pY3Jvc2Vjb25kcykgewotICAgIFJUQ19E
Q0hFQ0tfR0UobWljcm9zZWNvbmRzLCAwKTsKLSAgICBSVENfRENIRUNLX0xUKG1pY3Jvc2Vjb25k
cywgdGltZXN0YW1wX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwpOwotICAgIHJldHVybiBUaW1lc3Rh
bXAocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KG1pY3Jvc2Vjb25kcykpOwotICB9Ci0KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAgICAgICAg
ICAgICBudWxscHRyPgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgc3RhdGljIFRpbWVzdGFt
cCBzZWNvbmRzKFQgc2Vjb25kcykgewotICAgIHJldHVybiBUaW1lc3RhbXA6OnVzKHNlY29uZHMg
KiAxZTYpOworICAgIHJldHVybiBGcm9tRnJhY3Rpb248MTAwMDAwMD4oc2Vjb25kcyk7CiAgIH0K
LQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6dHlwZSogPQotICAgICAg
ICAgICAgICAgIG51bGxwdHI+CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBzdGF0aWMgVGlt
ZXN0YW1wIG1zKFQgbWlsbGlzZWNvbmRzKSB7Ci0gICAgcmV0dXJuIFRpbWVzdGFtcDo6dXMobWls
bGlzZWNvbmRzICogMWUzKTsKKyAgICByZXR1cm4gRnJvbUZyYWN0aW9uPDEwMDA+KG1pbGxpc2Vj
b25kcyk7CiAgIH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUq
ID0KLSAgICAgICAgICAgICAgICBudWxscHRyPgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
c3RhdGljIFRpbWVzdGFtcCB1cyhUIG1pY3Jvc2Vjb25kcykgewotICAgIGlmIChtaWNyb3NlY29u
ZHMgPT0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSB7Ci0gICAgICBy
ZXR1cm4gUGx1c0luZmluaXR5KCk7Ci0gICAgfSBlbHNlIGlmIChtaWNyb3NlY29uZHMgPT0gLXN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkgewotICAgICAgcmV0dXJuIE1p
bnVzSW5maW5pdHkoKTsKLSAgICB9IGVsc2UgewotICAgICAgUlRDX0RDSEVDSyghc3RkOjppc25h
bihtaWNyb3NlY29uZHMpKTsKLSAgICAgIFJUQ19EQ0hFQ0tfR0UobWljcm9zZWNvbmRzLCAwKTsK
LSAgICAgIFJUQ19EQ0hFQ0tfTFQobWljcm9zZWNvbmRzLCB0aW1lc3RhbXBfaW1wbDo6a1BsdXNJ
bmZpbml0eVZhbCk7Ci0gICAgICByZXR1cm4gVGltZXN0YW1wKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxp
bnQ2NF90PihtaWNyb3NlY29uZHMpKTsKLSAgICB9CisgICAgcmV0dXJuIEZyb21WYWx1ZShtaWNy
b3NlY29uZHMpOwogICB9Ci0KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBpbnQ2NF90PgotICB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVD46OnR5
cGUgc2Vjb25kcygpIGNvbnN0IHsKLSAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOwotICAgIHJl
dHVybiBydGM6OmRjaGVja2VkX2Nhc3Q8VD4oVW5zYWZlU2Vjb25kcygpKTsKKyAgVCBzZWNvbmRz
KCkgY29uc3QgeworICAgIHJldHVybiBUb0ZyYWN0aW9uPDEwMDAwMDAsIFQ+KCk7CiAgIH0KICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBpbnQ2NF90PgotICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVD46OnR5cGUgbXMoKSBjb25zdCB7Ci0gICAg
UlRDX0RDSEVDSyhJc0Zpbml0ZSgpKTsKLSAgICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+
KFVuc2FmZU1pbGxpcygpKTsKKyAgVCBtcygpIGNvbnN0IHsKKyAgICByZXR1cm4gVG9GcmFjdGlv
bjwxMDAwLCBUPigpOwogICB9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0
eXBlIHVzKCkgY29uc3QgewotICAgIFJUQ19EQ0hFQ0soSXNGaW5pdGUoKSk7Ci0gICAgcmV0dXJu
IHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihtaWNyb3NlY29uZHNfKTsKLSAgfQotCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCi0gIHNlY29uZHMoKSBjb25zdCB7
Ci0gICAgcmV0dXJuIHVzPFQ+KCkgKiAxZS02OwotICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19w
b2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCi0gIG1zKCkgY29uc3QgewotICAgIHJldHVybiB1czxU
PigpICogMWUtMzsKLSAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgY29uc3RleHByIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBU
Pjo6dHlwZQotICB1cygpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNQbHVzSW5maW5pdHkoKQotICAg
ICAgICAgICAgICAgPyBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpCi0gICAgICAg
ICAgICAgICA6IElzTWludXNJbmZpbml0eSgpID8gLXN0ZDo6bnVtZXJpY19saW1pdHM8VD46Omlu
ZmluaXR5KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtaWNyb3NlY29u
ZHNfOworICBUIHVzKCkgY29uc3QgeworICAgIHJldHVybiBUb1ZhbHVlPFQ+KCk7CiAgIH0KIAog
ICBjb25zdGV4cHIgaW50NjRfdCBzZWNvbmRzX29yKGludDY0X3QgZmFsbGJhY2tfdmFsdWUpIGNv
bnN0IHsKLSAgICByZXR1cm4gSXNGaW5pdGUoKSA/IFVuc2FmZVNlY29uZHMoKSA6IGZhbGxiYWNr
X3ZhbHVlOworICAgIHJldHVybiBUb0ZyYWN0aW9uT3I8MTAwMDAwMD4oZmFsbGJhY2tfdmFsdWUp
OwogICB9CiAgIGNvbnN0ZXhwciBpbnQ2NF90IG1zX29yKGludDY0X3QgZmFsbGJhY2tfdmFsdWUp
IGNvbnN0IHsKLSAgICByZXR1cm4gSXNGaW5pdGUoKSA/IFVuc2FmZU1pbGxpcygpIDogZmFsbGJh
Y2tfdmFsdWU7CisgICAgcmV0dXJuIFRvRnJhY3Rpb25PcjwxMDAwPihmYWxsYmFja192YWx1ZSk7
CiAgIH0KICAgY29uc3RleHByIGludDY0X3QgdXNfb3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkg
Y29uc3QgewotICAgIHJldHVybiBJc0Zpbml0ZSgpID8gbWljcm9zZWNvbmRzXyA6IGZhbGxiYWNr
X3ZhbHVlOworICAgIHJldHVybiBUb1ZhbHVlT3IoZmFsbGJhY2tfdmFsdWUpOwogICB9CiAKLSAg
Y29uc3RleHByIGJvb2wgSXNGaW5pdGUoKSBjb25zdCB7IHJldHVybiAhSXNJbmZpbml0ZSgpOyB9
Ci0gIGNvbnN0ZXhwciBib29sIElzSW5maW5pdGUoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jv
c2Vjb25kc18gPT0gdGltZWRlbHRhX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwgfHwKLSAgICAgICAg
ICAgbWljcm9zZWNvbmRzXyA9PSB0aW1lZGVsdGFfaW1wbDo6a01pbnVzSW5maW5pdHlWYWw7Ci0g
IH0KLSAgY29uc3RleHByIGJvb2wgSXNQbHVzSW5maW5pdHkoKSBjb25zdCB7Ci0gICAgcmV0dXJu
IG1pY3Jvc2Vjb25kc18gPT0gdGltZWRlbHRhX2ltcGw6OmtQbHVzSW5maW5pdHlWYWw7Ci0gIH0K
LSAgY29uc3RleHByIGJvb2wgSXNNaW51c0luZmluaXR5KCkgY29uc3QgewotICAgIHJldHVybiBt
aWNyb3NlY29uZHNfID09IHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbDsKLSAgfQot
ICBUaW1lc3RhbXAgb3BlcmF0b3IrKGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIpIGNvbnN0IHsKLSAg
ICBpZiAoSXNQbHVzSW5maW5pdHkoKSB8fCBvdGhlci5Jc1BsdXNJbmZpbml0eSgpKSB7CisgIFRp
bWVzdGFtcCBvcGVyYXRvcisoY29uc3QgVGltZURlbHRhIGRlbHRhKSBjb25zdCB7CisgICAgaWYg
KElzUGx1c0luZmluaXR5KCkgfHwgZGVsdGEuSXNQbHVzSW5maW5pdHkoKSkgewogICAgICAgUlRD
X0RDSEVDSyghSXNNaW51c0luZmluaXR5KCkpOwotICAgICAgUlRDX0RDSEVDSyghb3RoZXIuSXNN
aW51c0luZmluaXR5KCkpOworICAgICAgUlRDX0RDSEVDSyghZGVsdGEuSXNNaW51c0luZmluaXR5
KCkpOwogICAgICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOwotICAgIH0gZWxzZSBpZiAoSXNNaW51
c0luZmluaXR5KCkgfHwgb3RoZXIuSXNNaW51c0luZmluaXR5KCkpIHsKKyAgICB9IGVsc2UgaWYg
KElzTWludXNJbmZpbml0eSgpIHx8IGRlbHRhLklzTWludXNJbmZpbml0eSgpKSB7CiAgICAgICBS
VENfRENIRUNLKCFJc1BsdXNJbmZpbml0eSgpKTsKLSAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklz
UGx1c0luZmluaXR5KCkpOworICAgICAgUlRDX0RDSEVDSyghZGVsdGEuSXNQbHVzSW5maW5pdHko
KSk7CiAgICAgICByZXR1cm4gTWludXNJbmZpbml0eSgpOwogICAgIH0KLSAgICByZXR1cm4gVGlt
ZXN0YW1wOjp1cyh1cygpICsgb3RoZXIudXMoKSk7CisgICAgcmV0dXJuIFRpbWVzdGFtcDo6dXMo
dXMoKSArIGRlbHRhLnVzKCkpOwogICB9Ci0gIFRpbWVzdGFtcCBvcGVyYXRvci0oY29uc3QgVGlt
ZURlbHRhJiBvdGhlcikgY29uc3QgewotICAgIGlmIChJc1BsdXNJbmZpbml0eSgpIHx8IG90aGVy
LklzTWludXNJbmZpbml0eSgpKSB7CisgIFRpbWVzdGFtcCBvcGVyYXRvci0oY29uc3QgVGltZURl
bHRhIGRlbHRhKSBjb25zdCB7CisgICAgaWYgKElzUGx1c0luZmluaXR5KCkgfHwgZGVsdGEuSXNN
aW51c0luZmluaXR5KCkpIHsKICAgICAgIFJUQ19EQ0hFQ0soIUlzTWludXNJbmZpbml0eSgpKTsK
LSAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklzUGx1c0luZmluaXR5KCkpOworICAgICAgUlRDX0RD
SEVDSyghZGVsdGEuSXNQbHVzSW5maW5pdHkoKSk7CiAgICAgICByZXR1cm4gUGx1c0luZmluaXR5
KCk7Ci0gICAgfSBlbHNlIGlmIChJc01pbnVzSW5maW5pdHkoKSB8fCBvdGhlci5Jc1BsdXNJbmZp
bml0eSgpKSB7CisgICAgfSBlbHNlIGlmIChJc01pbnVzSW5maW5pdHkoKSB8fCBkZWx0YS5Jc1Bs
dXNJbmZpbml0eSgpKSB7CiAgICAgICBSVENfRENIRUNLKCFJc1BsdXNJbmZpbml0eSgpKTsKLSAg
ICAgIFJUQ19EQ0hFQ0soIW90aGVyLklzTWludXNJbmZpbml0eSgpKTsKKyAgICAgIFJUQ19EQ0hF
Q0soIWRlbHRhLklzTWludXNJbmZpbml0eSgpKTsKICAgICAgIHJldHVybiBNaW51c0luZmluaXR5
KCk7CiAgICAgfQotICAgIHJldHVybiBUaW1lc3RhbXA6OnVzKHVzKCkgLSBvdGhlci51cygpKTsK
KyAgICByZXR1cm4gVGltZXN0YW1wOjp1cyh1cygpIC0gZGVsdGEudXMoKSk7CiAgIH0KLSAgVGlt
ZURlbHRhIG9wZXJhdG9yLShjb25zdCBUaW1lc3RhbXAmIG90aGVyKSBjb25zdCB7CisgIFRpbWVE
ZWx0YSBvcGVyYXRvci0oY29uc3QgVGltZXN0YW1wIG90aGVyKSBjb25zdCB7CiAgICAgaWYgKElz
UGx1c0luZmluaXR5KCkgfHwgb3RoZXIuSXNNaW51c0luZmluaXR5KCkpIHsKICAgICAgIFJUQ19E
Q0hFQ0soIUlzTWludXNJbmZpbml0eSgpKTsKICAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklzUGx1
c0luZmluaXR5KCkpOwpAQCAtMjA5LDQ1ICsxMTQsMjIgQEAgY2xhc3MgVGltZXN0YW1wIHsKICAg
ICB9CiAgICAgcmV0dXJuIFRpbWVEZWx0YTo6dXModXMoKSAtIG90aGVyLnVzKCkpOwogICB9Ci0g
IFRpbWVzdGFtcCYgb3BlcmF0b3ItPShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSB7Ci0gICAgKnRo
aXMgPSAqdGhpcyAtIG90aGVyOworICBUaW1lc3RhbXAmIG9wZXJhdG9yLT0oY29uc3QgVGltZURl
bHRhIGRlbHRhKSB7CisgICAgKnRoaXMgPSAqdGhpcyAtIGRlbHRhOwogICAgIHJldHVybiAqdGhp
czsKICAgfQotICBUaW1lc3RhbXAmIG9wZXJhdG9yKz0oY29uc3QgVGltZURlbHRhJiBvdGhlcikg
ewotICAgICp0aGlzID0gKnRoaXMgKyBvdGhlcjsKKyAgVGltZXN0YW1wJiBvcGVyYXRvcis9KGNv
bnN0IFRpbWVEZWx0YSBkZWx0YSkgeworICAgICp0aGlzID0gKnRoaXMgKyBkZWx0YTsKICAgICBy
ZXR1cm4gKnRoaXM7CiAgIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1l
c3RhbXAmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jvc2Vjb25kc18gPT0gb3RoZXIu
bWljcm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRp
bWVzdGFtcCYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyAhPSBvdGhl
ci5taWNyb3NlY29uZHNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3Qg
VGltZXN0YW1wJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfIDw9IG90
aGVyLm1pY3Jvc2Vjb25kc187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25z
dCBUaW1lc3RhbXAmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jvc2Vjb25kc18gPj0g
b3RoZXIubWljcm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29u
c3QgVGltZXN0YW1wJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfID4g
b3RoZXIubWljcm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29u
c3QgVGltZXN0YW1wJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfIDwg
b3RoZXIubWljcm9zZWNvbmRzXzsKLSAgfQogCiAgcHJpdmF0ZToKLSAgZXhwbGljaXQgY29uc3Rl
eHByIFRpbWVzdGFtcChpbnQ2NF90IHVzKSA6IG1pY3Jvc2Vjb25kc18odXMpIHt9Ci0gIGNvbnN0
ZXhwciBpbnQ2NF90IFVuc2FmZVNlY29uZHMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIChtaWNyb3Nl
Y29uZHNfICsgNTAwMDAwKSAvIDEwMDAwMDA7Ci0gIH0KLSAgY29uc3RleHByIGludDY0X3QgVW5z
YWZlTWlsbGlzKCkgY29uc3QgewotICAgIHJldHVybiAobWljcm9zZWNvbmRzXyArIDUwMCkgLyAx
MDAwOwotICB9Ci0gIGludDY0X3QgbWljcm9zZWNvbmRzXzsKKyAgZnJpZW5kIGNsYXNzIHJ0Y191
bml0c19pbXBsOjpVbml0QmFzZTxUaW1lc3RhbXA+OworICB1c2luZyBVbml0QmFzZTo6VW5pdEJh
c2U7CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBvbmVfc2lkZWQgPSB0cnVlOwogfTsKIAotc3Rk
OjpzdHJpbmcgVG9TdHJpbmcoY29uc3QgVGltZXN0YW1wJiB2YWx1ZSk7CitzdGQ6OnN0cmluZyBU
b1N0cmluZyhUaW1lc3RhbXAgdmFsdWUpOwogCiAjaWZkZWYgVU5JVF9URVNUCiBpbmxpbmUgc3Rk
Ojpvc3RyZWFtJiBvcGVyYXRvcjw8KCAgLy8gbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRj
Ojg5ODIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdmlkZW8vQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vQlVJTEQuZ24KaW5kZXggZDA0MTI2MDIxZGE1YTZjMWEyOTJj
YzViNTI4OWM1MDJlYWE1ZjgwMC4uNWVkNzA4OThmN2I3MDgxZGYwZDI3YjBmZGIxNzlhMmNlOGM5
MWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlby9CVUlMRC5nbgpAQCAtMTMsNiArMTMsOSBAQCBydGNfc291
cmNlX3NldCgidmlkZW9fZnJhbWUiKSB7CiAgIHNvdXJjZXMgPSBbCiAgICAgImNvbG9yX3NwYWNl
LmNjIiwKICAgICAiY29sb3Jfc3BhY2UuaCIsCisgICAgImhkcl9tZXRhZGF0YS5jYyIsCisgICAg
Imhkcl9tZXRhZGF0YS5oIiwKKyAgICAidmlkZW9fY29kZWNfdHlwZS5oIiwKICAgICAidmlkZW9f
Y29udGVudF90eXBlLmNjIiwKICAgICAidmlkZW9fY29udGVudF90eXBlLmgiLAogICAgICJ2aWRl
b19mcmFtZS5jYyIsCkBAIC0zMSw2ICszNCw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ2aWRlb19mcmFt
ZSIpIHsKICAgZGVwcyA9IFsKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4v
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0
ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
Om9wdGlvbmFsIiwKICAgXQogfQpAQCAtNDYsNiArNTAsNyBAQCBydGNfc291cmNlX3NldCgidmlk
ZW9fZnJhbWVfaTQyMCIpIHsKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4v
Li4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICIuLi8uLi9ydGNfYmFzZS9tZW1vcnk6YWxpZ25l
ZF9tYWxsb2MiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAg
Ii8vdGhpcmRfcGFydHkvbGlieXV2IiwKICAgXQogfQpAQCAtNjYsNiArNzEsMjQgQEAgcnRjX3Nv
dXJjZV9zZXQoInZpZGVvX2ZyYW1lX2kwMTAiKSB7CiAgIF0KIH0KIAorcnRjX3NvdXJjZV9zZXQo
ImVuY29kZWRfaW1hZ2UiKSB7CisgIHNvdXJjZXMgPSBbCisgICAgImVuY29kZWRfaW1hZ2UuY2Mi
LAorICAgICJlbmNvZGVkX2ltYWdlLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjp2aWRlb19m
cmFtZSIsCisgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAorCisgICAgIyBUT0RPKGJ1Z3Mud2Vi
cnRjLm9yZy84MzExKSBDbGVhbnVwIHdoZW4ga01heFNwYXRpYWxMYXllcnMgaXMgbW92ZWQgdG8g
cHJvcGVyIGluY2x1ZGUuCisgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9j
YXRpb24iLAorICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi8uLi9ydGNfYmFz
ZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhw
b3J0IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwi
LAorICBdCit9CisKIHJ0Y19zb3VyY2Vfc2V0KCJlbmNvZGVkX2ZyYW1lIikgewogICB2aXNpYmls
aXR5ID0gWyAiKiIgXQogICBzb3VyY2VzID0gWwpAQCAtMTUyLDYgKzE3NSw3IEBAIHJ0Y19zb3Vy
Y2Vfc2V0KCJ2aWRlb19zdHJlYW1fZW5jb2RlciIpIHsKICAgXQogCiAgIGRlcHMgPSBbCisgICAg
Ijp2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAiOnZpZGVvX2ZyYW1lIiwK
IAogICAgICMgRm9yIHJ0cHBhcmFtZXRlcnMuaApAQCAtMTgyLDMgKzIwNiwyMiBAQCBydGNfc291
cmNlX3NldCgidmlkZW9fc3RyZWFtX2VuY29kZXJfY3JlYXRlIikgewogICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiB9CisKK3J0Y19zdGF0aWNfbGlicmFy
eSgiYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IikgeworICB2aXNpYmls
aXR5ID0gWyAiKiIgXQorICBzb3VyY2VzID0gWworICAgICJidWlsdGluX3ZpZGVvX2JpdHJhdGVf
YWxsb2NhdG9yX2ZhY3RvcnkuY2MiLAorICAgICJidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnkuaCIsCisgIF0KKworICBkZXBzID0gWworICAgICI6dmlkZW9fYml0cmF0ZV9h
bGxvY2F0aW9uIiwKKyAgICAiOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAorICAg
ICIuLi8uLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCisgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9f
Y29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKKyAgICAiLi4vLi4vbW9kdWxlcy92aWRlb19j
b2Rpbmc6d2VicnRjX3ZwOV9oZWxwZXJzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6cHRyX3V0aWwi
LAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06ZmFsbHRocm91Z2giLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICBdCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vYnVpbHRpbl92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGY2YWQwNGNiZTI1MjBkOTM0MmQ0OTc5Zjk1
YTc0MDJhMjJkNjUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0
b3JfZmFjdG9yeS5jYwpAQCAtMCwwICsxLDU2IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKwor
I2luY2x1ZGUgImFwaS92aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rv
cnkuaCIKKworI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgIm1lZGlh
L2Jhc2UvY29kZWMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5
L3N2Y19yYXRlX2FsbG9jYXRvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0
aWxpdHkvZGVmYXVsdF92aWRlb19iaXRyYXRlX2FsbG9jYXRvci5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2ZhbGx0aHJvdWdoLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCituYW1lc3BhY2UgeworCitjbGFzcyBCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFj
dG9yeQorICAgIDogcHVibGljIFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkgeworIHB1Ymxp
YzoKKyAgQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSA9IGRlZmF1bHQ7Cisg
IH5CdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpIG92ZXJyaWRlID0gZGVmYXVs
dDsKKworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiBDcmVhdGVWaWRl
b0JpdHJhdGVBbGxvY2F0b3IoCisgICAgICBjb25zdCBWaWRlb0NvZGVjJiBjb2RlYykgb3ZlcnJp
ZGUgeworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+IHJhdGVfYWxs
b2NhdG9yOworICAgIHN3aXRjaCAoY29kZWMuY29kZWNUeXBlKSB7CisgICAgICBjYXNlIGtWaWRl
b0NvZGVjVlA4OgorICAgICAgICBSVENfRkFMTFRIUk9VR0goKTsKKyAgICAgIGNhc2Uga1ZpZGVv
Q29kZWNIMjY0OgorICAgICAgICByYXRlX2FsbG9jYXRvci5yZXNldChuZXcgU2ltdWxjYXN0UmF0
ZUFsbG9jYXRvcihjb2RlYykpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Uga1ZpZGVvQ29k
ZWNWUDk6CisgICAgICAgIHJhdGVfYWxsb2NhdG9yLnJlc2V0KG5ldyBTdmNSYXRlQWxsb2NhdG9y
KGNvZGVjKSk7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmF0ZV9h
bGxvY2F0b3IucmVzZXQobmV3IERlZmF1bHRWaWRlb0JpdHJhdGVBbGxvY2F0b3IoY29kZWMpKTsK
KyAgICB9CisgICAgcmV0dXJuIHJhdGVfYWxsb2NhdG9yOworICB9Cit9OworCit9ICAvLyBuYW1l
c3BhY2UKKworc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+CitD
cmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpIHsKKyAgcmV0dXJuIGFi
c2w6Om1ha2VfdW5pcXVlPEJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PigpOwor
fQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWM4ODBhMDg2M2U4Y2U0MmMxNDYzN2RlN2Q3YjBhNGIzOThkY2RiNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaApA
QCAtMCwwICsxLDI1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVklE
RU9fQlVJTFRJTl9WSURFT19CSVRSQVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hfCisjZGVmaW5lIEFQ
SV9WSURFT19CVUlMVElOX1ZJREVPX0JJVFJBVEVfQUxMT0NBVE9SX0ZBQ1RPUllfSF8KKworI2lu
Y2x1ZGUgPG1lbW9yeT4KKworI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9j
YXRvcl9mYWN0b3J5LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KK0NyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVB
bGxvY2F0b3JGYWN0b3J5KCk7CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAv
LyBBUElfVklERU9fQlVJTFRJTl9WSURFT19CSVRSQVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dmlkZW8vY29sb3Jfc3BhY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW8vY29sb3Jfc3BhY2UuY2MKaW5kZXggYThiZTVjZDgyODAyMDJkNWZj
ZjkzYWM3YzU5ODNiOTZkZTEyZGM2NC4uYWQxMzhhYmU4MDkzZDBkNmJlZmFmNTZkMjQ0MmY4OTk2
NTFlNGM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9jb2xvcl9zcGFjZS5jYwpAQCAtMTAsMTgg
KzEwLDcyIEBACiAKICNpbmNsdWRlICJhcGkvdmlkZW8vY29sb3Jfc3BhY2UuaCIKIAorbmFtZXNw
YWNlIHsKKy8vIFRyeSB0byBjb252ZXJ0IHxlbnVtX3ZhbHVlfCBpbnRvIHRoZSBlbnVtIGNsYXNz
IFQuIHxlbnVtX2JpdG1hc2t8IGlzIGNyZWF0ZWQKKy8vIGJ5IHRoZSBmdW5jaXRvbiBiZWxvdy4g
UmV0dXJucyB0cnVlIGlmIGNvbnZlcnNpb24gd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlCisvLyBvdGhl
cndpc2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgU2V0RnJvbVVpbnQ4KHVpbnQ4X3Qg
ZW51bV92YWx1ZSwgdWludDY0X3QgZW51bV9iaXRtYXNrLCBUKiBvdXQpIHsKKyAgaWYgKChlbnVt
X3ZhbHVlIDwgNjQpICYmICgoZW51bV9iaXRtYXNrID4+IGVudW1fdmFsdWUpICYgMSkpIHsKKyAg
ICAqb3V0ID0gc3RhdGljX2Nhc3Q8VD4oZW51bV92YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cisg
IH0KKyAgcmV0dXJuIGZhbHNlOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIHNlcnZlcyBhcyBhbiBh
c3NlcnQgZm9yIHRoZSBjb25zdGV4cHIgZnVuY3Rpb24gYmVsb3cuIEl0J3Mgb24KKy8vIHB1cnBv
c2Ugbm90IGRlY2xhcmVkIGFzIGNvbnN0ZXhwciBzbyB0aGF0IGl0IGNhdXNlcyBhIGJ1aWxkIHBy
b2JsZW0gaWYgZW51bQorLy8gdmFsdWVzIG9mIDY0IG9yIGFib3ZlIGFyZSB1c2VkLiBUaGUgYml0
bWFzayBhbmQgdGhlIGNvZGUgZ2VuZXJhdGluZyBpdCB3b3VsZAorLy8gaGF2ZSB0byBiZSBleHRl
bmRlZCBpZiB0aGUgc3RhbmRhcmQgaXMgdXBkYXRlZCB0byBpbmNsdWRlIGVudW0gdmFsdWVzID49
IDY0LgoraW50IEVudW1NdXN0QmVMZXNzVGhhbjY0KCkgeworICByZXR1cm4gLTE7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK2NvbnN0ZXhwciBpbnQgTWFrZU1hc2soY29u
c3QgaW50IGluZGV4LCBjb25zdCBpbnQgbGVuZ3RoLCBUICgmdmFsdWVzKVtOXSkgeworICByZXR1
cm4gbGVuZ3RoID4gMQorICAgICAgICAgICAgID8gKE1ha2VNYXNrKGluZGV4LCAxLCB2YWx1ZXMp
ICsKKyAgICAgICAgICAgICAgICBNYWtlTWFzayhpbmRleCArIDEsIGxlbmd0aCAtIDEsIHZhbHVl
cykpCisgICAgICAgICAgICAgOiAoc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWVzW2luZGV4XSkg
PCA2NAorICAgICAgICAgICAgICAgICAgICA/ICh1aW50NjRfdHsxfSA8PCBzdGF0aWNfY2FzdDx1
aW50OF90Pih2YWx1ZXNbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICAgICAgOiBFbnVtTXVzdEJl
TGVzc1RoYW42NCgpKTsKK30KKworLy8gQ3JlYXRlIGEgYml0bWFzayB3aGVyZSBlYWNoIGJpdCBj
b3JyZXNwb25kcyB0byBvbmUgcG90ZW50aWFsIGVudW0gdmFsdWUuCisvLyB8dmFsdWVzfCBzaG91
bGQgYmUgYW4gYXJyYXkgbGlzdGluZyBhbGwgcG9zc2libGUgZW51bSB2YWx1ZXMuIFRoZSBiaXQg
aXMgc2V0CisvLyB0byBvbmUgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZW51bSBleGlzdHMuIE9ubHkg
d29ya3MgZm9yIGVudW1zIHdpdGggdmFsdWVzCisvLyBsZXNzIHRoYW4gNjQuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgc2l6ZV90IE4+Citjb25zdGV4cHIgdWludDY0X3QgQ3JlYXRlRW51bUJpdG1h
c2soVCAoJnZhbHVlcylbTl0pIHsKKyAgcmV0dXJuIE1ha2VNYXNrKDAsIE4sIHZhbHVlcyk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZQorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogQ29sb3JTcGFjZTo6
Q29sb3JTcGFjZSgpID0gZGVmYXVsdDsKK0NvbG9yU3BhY2U6OkNvbG9yU3BhY2UoY29uc3QgQ29s
b3JTcGFjZSYgb3RoZXIpID0gZGVmYXVsdDsKK0NvbG9yU3BhY2U6OkNvbG9yU3BhY2UoQ29sb3JT
cGFjZSYmIG90aGVyKSA9IGRlZmF1bHQ7CitDb2xvclNwYWNlJiBDb2xvclNwYWNlOjpvcGVyYXRv
cj0oY29uc3QgQ29sb3JTcGFjZSYgb3RoZXIpID0gZGVmYXVsdDsKIAogQ29sb3JTcGFjZTo6Q29s
b3JTcGFjZShQcmltYXJ5SUQgcHJpbWFyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFu
c2ZlcklEIHRyYW5zZmVyLAogICAgICAgICAgICAgICAgICAgICAgICBNYXRyaXhJRCBtYXRyaXgs
CiAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlSUQgcmFuZ2UpCisgICAgOiBDb2xvclNwYWNl
KHByaW1hcmllcywgdHJhbnNmZXIsIG1hdHJpeCwgcmFuZ2UsIG51bGxwdHIpIHt9CisKK0NvbG9y
U3BhY2U6OkNvbG9yU3BhY2UoUHJpbWFyeUlEIHByaW1hcmllcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgVHJhbnNmZXJJRCB0cmFuc2ZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgTWF0cml4
SUQgbWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICBSYW5nZUlEIHJhbmdlLAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBIZHJNZXRhZGF0YSogaGRyX21ldGFkYXRhKQogICAgIDog
cHJpbWFyaWVzXyhwcmltYXJpZXMpLAogICAgICAgdHJhbnNmZXJfKHRyYW5zZmVyKSwKICAgICAg
IG1hdHJpeF8obWF0cml4KSwKLSAgICAgIHJhbmdlXyhyYW5nZSkge30KKyAgICAgIHJhbmdlXyhy
YW5nZSksCisgICAgICBoZHJfbWV0YWRhdGFfKGhkcl9tZXRhZGF0YSA/IGFic2w6Om1ha2Vfb3B0
aW9uYWwoKmhkcl9tZXRhZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
YWJzbDo6bnVsbG9wdCkge30KIAogQ29sb3JTcGFjZTo6UHJpbWFyeUlEIENvbG9yU3BhY2U6OnBy
aW1hcmllcygpIGNvbnN0IHsKICAgcmV0dXJuIHByaW1hcmllc187CkBAIC0zOSw0ICs5Myw2MSBA
QCBDb2xvclNwYWNlOjpSYW5nZUlEIENvbG9yU3BhY2U6OnJhbmdlKCkgY29uc3QgewogICByZXR1
cm4gcmFuZ2VfOwogfQogCitjb25zdCBIZHJNZXRhZGF0YSogQ29sb3JTcGFjZTo6aGRyX21ldGFk
YXRhKCkgY29uc3QgeworICByZXR1cm4gaGRyX21ldGFkYXRhXyA/ICYqaGRyX21ldGFkYXRhXyA6
IG51bGxwdHI7Cit9CisKK2Jvb2wgQ29sb3JTcGFjZTo6c2V0X3ByaW1hcmllc19mcm9tX3VpbnQ4
KHVpbnQ4X3QgZW51bV92YWx1ZSkgeworICBjb25zdGV4cHIgUHJpbWFyeUlEIGtQcmltYXJ5SWRz
W10gPSB7CisgICAgICBQcmltYXJ5SUQ6OmtJbnZhbGlkLCAgICBQcmltYXJ5SUQ6OmtCVDcwOSwg
ICAgICBQcmltYXJ5SUQ6OmtVTlNQRUNJRklFRCwKKyAgICAgIFByaW1hcnlJRDo6a0JUNDcwTSwg
ICAgIFByaW1hcnlJRDo6a0JUNDcwQkcsICAgIFByaW1hcnlJRDo6a1NNUFRFMTcwTSwKKyAgICAg
IFByaW1hcnlJRDo6a1NNUFRFMjQwTSwgIFByaW1hcnlJRDo6a0ZJTE0sICAgICAgIFByaW1hcnlJ
RDo6a0JUMjAyMCwKKyAgICAgIFByaW1hcnlJRDo6a1NNUFRFU1Q0MjgsIFByaW1hcnlJRDo6a1NN
UFRFU1Q0MzEsIFByaW1hcnlJRDo6a1NNUFRFU1Q0MzIsCisgICAgICBQcmltYXJ5SUQ6OmtKRURF
Q1AyMn07CisgIGNvbnN0ZXhwciB1aW50NjRfdCBlbnVtX2JpdG1hc2sgPSBDcmVhdGVFbnVtQml0
bWFzayhrUHJpbWFyeUlkcyk7CisKKyAgcmV0dXJuIFNldEZyb21VaW50OChlbnVtX3ZhbHVlLCBl
bnVtX2JpdG1hc2ssICZwcmltYXJpZXNfKTsKK30KKworYm9vbCBDb2xvclNwYWNlOjpzZXRfdHJh
bnNmZXJfZnJvbV91aW50OCh1aW50OF90IGVudW1fdmFsdWUpIHsKKyAgY29uc3RleHByIFRyYW5z
ZmVySUQga1RyYW5zZmVySWRzW10gPSB7CisgICAgICBUcmFuc2ZlcklEOjprSW52YWxpZCwgICAg
ICBUcmFuc2ZlcklEOjprQlQ3MDksCisgICAgICBUcmFuc2ZlcklEOjprVU5TUEVDSUZJRUQsICBU
cmFuc2ZlcklEOjprR0FNTUEyMiwKKyAgICAgIFRyYW5zZmVySUQ6OmtHQU1NQTI4LCAgICAgIFRy
YW5zZmVySUQ6OmtTTVBURTE3ME0sCisgICAgICBUcmFuc2ZlcklEOjprU01QVEUyNDBNLCAgICBU
cmFuc2ZlcklEOjprTElORUFSLAorICAgICAgVHJhbnNmZXJJRDo6a0xPRywgICAgICAgICAgVHJh
bnNmZXJJRDo6a0xPR19TUVJULAorICAgICAgVHJhbnNmZXJJRDo6a0lFQzYxOTY2XzJfNCwgVHJh
bnNmZXJJRDo6a0JUMTM2MV9FQ0csCisgICAgICBUcmFuc2ZlcklEOjprSUVDNjE5NjZfMl8xLCBU
cmFuc2ZlcklEOjprQlQyMDIwXzEwLAorICAgICAgVHJhbnNmZXJJRDo6a0JUMjAyMF8xMiwgICAg
VHJhbnNmZXJJRDo6a1NNUFRFU1QyMDg0LAorICAgICAgVHJhbnNmZXJJRDo6a1NNUFRFU1Q0Mjgs
ICAgVHJhbnNmZXJJRDo6a0FSSUJfU1REX0I2N307CisgIGNvbnN0ZXhwciB1aW50NjRfdCBlbnVt
X2JpdG1hc2sgPSBDcmVhdGVFbnVtQml0bWFzayhrVHJhbnNmZXJJZHMpOworCisgIHJldHVybiBT
ZXRGcm9tVWludDgoZW51bV92YWx1ZSwgZW51bV9iaXRtYXNrLCAmdHJhbnNmZXJfKTsKK30KKwor
Ym9vbCBDb2xvclNwYWNlOjpzZXRfbWF0cml4X2Zyb21fdWludDgodWludDhfdCBlbnVtX3ZhbHVl
KSB7CisgIGNvbnN0ZXhwciBNYXRyaXhJRCBrTWF0cml4SWRzW10gPSB7CisgICAgICBNYXRyaXhJ
RDo6a1JHQiwgICAgICAgTWF0cml4SUQ6OmtCVDcwOSwgICAgICAgIE1hdHJpeElEOjprVU5TUEVD
SUZJRUQsCisgICAgICBNYXRyaXhJRDo6a0ZDQywgICAgICAgTWF0cml4SUQ6OmtCVDQ3MEJHLCAg
ICAgIE1hdHJpeElEOjprU01QVEUxNzBNLAorICAgICAgTWF0cml4SUQ6OmtTTVBURTI0ME0sIE1h
dHJpeElEOjprWUNPQ0csICAgICAgICBNYXRyaXhJRDo6a0JUMjAyMF9OQ0wsCisgICAgICBNYXRy
aXhJRDo6a0JUMjAyMF9DTCwgTWF0cml4SUQ6OmtTTVBURTIwODUsICAgIE1hdHJpeElEOjprQ0RO
Q0xTLAorICAgICAgTWF0cml4SUQ6OmtDRENMUywgICAgIE1hdHJpeElEOjprQlQyMTAwX0lDVENQ
LCBNYXRyaXhJRDo6a0ludmFsaWR9OworICBjb25zdGV4cHIgdWludDY0X3QgZW51bV9iaXRtYXNr
ID0gQ3JlYXRlRW51bUJpdG1hc2soa01hdHJpeElkcyk7CisKKyAgcmV0dXJuIFNldEZyb21VaW50
OChlbnVtX3ZhbHVlLCBlbnVtX2JpdG1hc2ssICZtYXRyaXhfKTsKK30KKworYm9vbCBDb2xvclNw
YWNlOjpzZXRfcmFuZ2VfZnJvbV91aW50OCh1aW50OF90IGVudW1fdmFsdWUpIHsKKyAgY29uc3Rl
eHByIFJhbmdlSUQga1JhbmdlSWRzW10gPSB7UmFuZ2VJRDo6a0ludmFsaWQsIFJhbmdlSUQ6OmtM
aW1pdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZUlEOjprRnVs
bCwgUmFuZ2VJRDo6a0Rlcml2ZWR9OworICBjb25zdGV4cHIgdWludDY0X3QgZW51bV9iaXRtYXNr
ID0gQ3JlYXRlRW51bUJpdG1hc2soa1JhbmdlSWRzKTsKKworICByZXR1cm4gU2V0RnJvbVVpbnQ4
KGVudW1fdmFsdWUsIGVudW1fYml0bWFzaywgJnJhbmdlXyk7Cit9CisKK3ZvaWQgQ29sb3JTcGFj
ZTo6c2V0X2hkcl9tZXRhZGF0YShjb25zdCBIZHJNZXRhZGF0YSogaGRyX21ldGFkYXRhKSB7Cisg
IGhkcl9tZXRhZGF0YV8gPQorICAgICAgaGRyX21ldGFkYXRhID8gYWJzbDo6bWFrZV9vcHRpb25h
bCgqaGRyX21ldGFkYXRhKSA6IGFic2w6Om51bGxvcHQ7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlby9jb2xvcl9zcGFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgKaW5kZXggODEwMjY0N2I2ZmY4
ODQ3YTA0OTAwNGNiYjU5ODU4ZTA4YjRkODQ3MS4uNzlhMTVmNTliMzkzMjg3YmI4OWI5ODY1OGFj
NjRiNDRlMTg2YTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgKQEAgLTEx
LDk1ICsxMSwxNDUgQEAKICNpZm5kZWYgQVBJX1ZJREVPX0NPTE9SX1NQQUNFX0hfCiAjZGVmaW5l
IEFQSV9WSURFT19DT0xPUl9TUEFDRV9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2hkcl9tZXRh
ZGF0YS5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotLy8gVXNlZCB0byByZXByZXNlbnQgYSBj
b2xvciBzcGFjZSBmb3IgdGhlIHB1cnBvc2Ugb2YgY29sb3IgY29udmVyc2lvbi4gVGhpcwotLy8g
Y2xhc3Mgb25seSByZXByZXNlbnRzIGNvbG9yIGluZm9ybWF0aW9uIHRoYXQgY2FuIGJlIHRyYW5z
ZmVycmVkIHRocm91Z2ggdGhlCi0vLyBiaXRzdHJlYW0gb2YgV2ViUlRDJ3MgaW50ZXJuYWwgc3Vw
cG9ydGVkIGNvZGVjczoKKy8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBjb2xvciBpbmZvcm1hdGlv
biBhcyBzcGVjaWZpZWQgaW4gVC1SRUMgSC4yNzMsCisvLyBhdmFpbGFibGUgZnJvbSBodHRwczov
L3d3dy5pdHUuaW50L3JlYy9ULVJFQy1ILjI3My4KKy8vCisvLyBXZWJSVEMncyBzdXBwb3J0ZWQg
Y29kZWNzOgogLy8gLSBWUDkgc3VwcG9ydHMgY29sb3IgcHJvZmlsZXMsIHNlZSBWUDkgQml0c3Ry
ZWFtICYgRGVjb2RpbmcgUHJvY2VzcwogLy8gU3BlY2lmaWNhdGlvbiBWZXJzaW9uIDAuNiBTZWN0
aW9uIDcuMi4yICJDb2xvciBjb25maWcgc2VtYW50aWNzIiBhdmFpbGFibGUKIC8vIGZyb20gaHR0
cHM6Ly93d3cud2VibXByb2plY3Qub3JnLgotLy8gVE9ETyhlbWlyY2FuKTogRXh0cmFjdCB0aGVz
ZSB2YWx1ZXMgZnJvbSBkZWNvZGUgYW5kIGFkZCB0byB0aGUgZXhpc3Rpbmcgb25lcy4KIC8vIC0g
VlA4IG9ubHkgc3VwcG9ydHMgQlQuNjAxLCBzZWUKIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9yZmM2Mzg2I3NlY3Rpb24tOS4yCi0vLyAtIEgyNjQgc3VwcG9ydHMgZGlmZmVyZW50IGNv
bG9yIHByaW1hcmllcywgdHJhbnNmZXIgY2hhcmFjdGVyaXN0aWNzLCBtYXRyaXgKLS8vIGNvZWZm
aWNpZW50cyBhbmQgcmFuZ2UuIFNlZSBULVJFQy1ILjI2NCBFLjIuMSwgIlZVSSBwYXJhbWV0ZXJz
IHNlbWFudGljcyIsCi0vLyBhdmFpbGFibGUgZnJvbSBodHRwczovL3d3dy5pdHUuaW50L3JlYy9U
LVJFQy1ILjI2NC4KKy8vIC0gSDI2NCB1c2VzIHRoZSBleGFjdCBzYW1lIHJlcHJlc2VudGF0aW9u
IGFzIFQtUkVDIEguMjczLiBTZWUgVC1SRUMtSC4yNjQKKy8vIEUuMi4xLCAiVlVJIHBhcmFtZXRl
cnMgc2VtYW50aWNzIiwgYXZhaWxhYmxlIGZyb20KKy8vIGh0dHBzOi8vd3d3Lml0dS5pbnQvcmVj
L1QtUkVDLUguMjY0LgorCiBjbGFzcyBDb2xvclNwYWNlIHsKICBwdWJsaWM6Ci0gIGVudW0gY2xh
c3MgUHJpbWFyeUlEIHsKLSAgICBrSW52YWxpZCwKLSAgICBrQlQ3MDksCi0gICAga0JUNDcwTSwK
LSAgICBrQlQ0NzBCRywKLSAgICBrU01QVEUxNzBNLCAgLy8gSWRlbnRpY2FsIHRvIEJUNjAxCi0g
ICAga1NNUFRFMjQwTSwKLSAgICBrRklMTSwKLSAgICBrQlQyMDIwLAotICAgIGtTTVBURVNUNDI4
LAotICAgIGtTTVBURVNUNDMxLAotICAgIGtTTVBURVNUNDMyLAotICAgIGtKRURFQ1AyMiwKKyAg
ZW51bSBjbGFzcyBQcmltYXJ5SUQgOiB1aW50OF90IHsKKyAgICAvLyBUaGUgaW5kaWNlcyBhcmUg
ZXF1YWwgdG8gdGhlIHZhbHVlcyBzcGVjaWZpZWQgaW4gVC1SRUMgSC4yNzMgVGFibGUgMi4KKyAg
ICBrSW52YWxpZCA9IDAsCisgICAga0JUNzA5ID0gMSwKKyAgICBrVU5TUEVDSUZJRUQgPSAyLAor
ICAgIGtCVDQ3ME0gPSA0LAorICAgIGtCVDQ3MEJHID0gNSwKKyAgICBrU01QVEUxNzBNID0gNiwg
IC8vIElkZW50aWNhbCB0byBCVDYwMQorICAgIGtTTVBURTI0ME0gPSA3LAorICAgIGtGSUxNID0g
OCwKKyAgICBrQlQyMDIwID0gOSwKKyAgICBrU01QVEVTVDQyOCA9IDEwLAorICAgIGtTTVBURVNU
NDMxID0gMTEsCisgICAga1NNUFRFU1Q0MzIgPSAxMiwKKyAgICBrSkVERUNQMjIgPSAyMiwgIC8v
IElkZW50aWNhbCB0byBFQlUzMjEzLUUKKyAgICAvLyBXaGVuIGFkZGluZy9yZW1vdmluZyBlbnRy
aWVzIGhlcmUsIHBsZWFzZSBtYWtlIHN1cmUgdG8gZG8gdGhlCisgICAgLy8gY29ycmVzcG9uZGlu
ZyBjaGFuZ2UgdG8ga1ByaW1hcnlJZHMuCiAgIH07CiAKLSAgZW51bSBjbGFzcyBUcmFuc2ZlcklE
IHsKLSAgICBrSW52YWxpZCwKLSAgICBrQlQ3MDksCi0gICAga0dBTU1BMjIsCi0gICAga0dBTU1B
MjgsCi0gICAga1NNUFRFMTcwTSwKLSAgICBrU01QVEUyNDBNLAotICAgIGtMSU5FQVIsCi0gICAg
a0xPRywKLSAgICBrTE9HX1NRUlQsCi0gICAga0lFQzYxOTY2XzJfNCwKLSAgICBrQlQxMzYxX0VD
RywKLSAgICBrSUVDNjE5NjZfMl8xLAotICAgIGtCVDIwMjBfMTAsCi0gICAga0JUMjAyMF8xMiwK
LSAgICBrU01QVEVTVDIwODQsCi0gICAga1NNUFRFU1Q0MjgsCi0gICAga0FSSUJfU1REX0I2NywK
KyAgZW51bSBjbGFzcyBUcmFuc2ZlcklEIDogdWludDhfdCB7CisgICAgLy8gVGhlIGluZGljZXMg
YXJlIGVxdWFsIHRvIHRoZSB2YWx1ZXMgc3BlY2lmaWVkIGluIFQtUkVDIEguMjczIFRhYmxlIDMu
CisgICAga0ludmFsaWQgPSAwLAorICAgIGtCVDcwOSA9IDEsCisgICAga1VOU1BFQ0lGSUVEID0g
MiwKKyAgICBrR0FNTUEyMiA9IDQsCisgICAga0dBTU1BMjggPSA1LAorICAgIGtTTVBURTE3ME0g
PSA2LAorICAgIGtTTVBURTI0ME0gPSA3LAorICAgIGtMSU5FQVIgPSA4LAorICAgIGtMT0cgPSA5
LAorICAgIGtMT0dfU1FSVCA9IDEwLAorICAgIGtJRUM2MTk2Nl8yXzQgPSAxMSwKKyAgICBrQlQx
MzYxX0VDRyA9IDEyLAorICAgIGtJRUM2MTk2Nl8yXzEgPSAxMywKKyAgICBrQlQyMDIwXzEwID0g
MTQsCisgICAga0JUMjAyMF8xMiA9IDE1LAorICAgIGtTTVBURVNUMjA4NCA9IDE2LAorICAgIGtT
TVBURVNUNDI4ID0gMTcsCisgICAga0FSSUJfU1REX0I2NyA9IDE4LAorICAgIC8vIFdoZW4gYWRk
aW5nL3JlbW92aW5nIGVudHJpZXMgaGVyZSwgcGxlYXNlIG1ha2Ugc3VyZSB0byBkbyB0aGUKKyAg
ICAvLyBjb3JyZXNwb25kaW5nIGNoYW5nZSB0byBrVHJhbnNmZXJJZHMuCiAgIH07CiAKLSAgZW51
bSBjbGFzcyBNYXRyaXhJRCB7Ci0gICAga0ludmFsaWQsCi0gICAga1JHQiwKLSAgICBrQlQ3MDks
Ci0gICAga0ZDQywKLSAgICBrQlQ0NzBCRywKLSAgICBrU01QVEUxNzBNLAotICAgIGtTTVBURTI0
ME0sCi0gICAga1lDT0NHLAotICAgIGtCVDIwMjBfTkNMLAotICAgIGtCVDIwMjBfQ0wsCi0gICAg
a1NNUFRFMjA4NSwKKyAgZW51bSBjbGFzcyBNYXRyaXhJRCA6IHVpbnQ4X3QgeworICAgIC8vIFRo
ZSBpbmRpY2VzIGFyZSBlcXVhbCB0byB0aGUgdmFsdWVzIHNwZWNpZmllZCBpbiBULVJFQyBILjI3
MyBUYWJsZSA0LgorICAgIGtSR0IgPSAwLAorICAgIGtCVDcwOSA9IDEsCisgICAga1VOU1BFQ0lG
SUVEID0gMiwKKyAgICBrRkNDID0gNCwKKyAgICBrQlQ0NzBCRyA9IDUsCisgICAga1NNUFRFMTcw
TSA9IDYsCisgICAga1NNUFRFMjQwTSA9IDcsCisgICAga1lDT0NHID0gOCwKKyAgICBrQlQyMDIw
X05DTCA9IDksCisgICAga0JUMjAyMF9DTCA9IDEwLAorICAgIGtTTVBURTIwODUgPSAxMSwKKyAg
ICBrQ0ROQ0xTID0gMTIsCisgICAga0NEQ0xTID0gMTMsCisgICAga0JUMjEwMF9JQ1RDUCA9IDE0
LAorICAgIGtJbnZhbGlkID0gNjMsCisgICAgLy8gV2hlbiBhZGRpbmcvcmVtb3ZpbmcgZW50cmll
cyBoZXJlLCBwbGVhc2UgbWFrZSBzdXJlIHRvIGRvIHRoZQorICAgIC8vIGNvcnJlc3BvbmRpbmcg
Y2hhbmdlIHRvIGtNYXRyaXhJZHMuCiAgIH07CiAKICAgZW51bSBjbGFzcyBSYW5nZUlEIHsKLSAg
ICBrSW52YWxpZCwKKyAgICAvLyBUaGUgaW5kaWNlcyBhcmUgZXF1YWwgdG8gdGhlIHZhbHVlcyBz
cGVjaWZpZWQgYXQKKyAgICAvLyBodHRwczovL3d3dy53ZWJtcHJvamVjdC5vcmcvZG9jcy9jb250
YWluZXIvI2NvbG91ciBmb3IgdGhlIGVsZW1lbnQgUmFuZ2UuCisgICAga0ludmFsaWQgPSAwLAog
ICAgIC8vIExpbWl0ZWQgUmVjLiA3MDkgY29sb3IgcmFuZ2Ugd2l0aCBSR0IgdmFsdWVzIHJhbmdp
bmcgZnJvbSAxNiB0byAyMzUuCi0gICAga0xpbWl0ZWQsCisgICAga0xpbWl0ZWQgPSAxLAogICAg
IC8vIEZ1bGwgUkdCIGNvbG9yIHJhbmdlIHdpdGggUkdCIHZhbGVlcyBmcm9tIDAgdG8gMjU1Lgot
ICAgIGtGdWxsLAorICAgIGtGdWxsID0gMiwKKyAgICAvLyBSYW5nZSBpcyBkZWZpbmVkIGJ5IE1h
dHJpeENvZWZmaWNpZW50cy9UcmFuc2ZlckNoYXJhY3RlcmlzdGljcy4KKyAgICBrRGVyaXZlZCA9
IDMsCisgICAgLy8gV2hlbiBhZGRpbmcvcmVtb3ZpbmcgZW50cmllcyBoZXJlLCBwbGVhc2UgbWFr
ZSBzdXJlIHRvIGRvIHRoZQorICAgIC8vIGNvcnJlc3BvbmRpbmcgY2hhbmdlIHRvIGtSYW5nZUlk
cy4KICAgfTsKIAogICBDb2xvclNwYWNlKCk7CisgIENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFj
ZSYgb3RoZXIpOworICBDb2xvclNwYWNlKENvbG9yU3BhY2UmJiBvdGhlcik7CisgIENvbG9yU3Bh
Y2UmIG9wZXJhdG9yPShjb25zdCBDb2xvclNwYWNlJiBvdGhlcik7CiAgIENvbG9yU3BhY2UoUHJp
bWFyeUlEIHByaW1hcmllcywKICAgICAgICAgICAgICBUcmFuc2ZlcklEIHRyYW5zZmVyLAogICAg
ICAgICAgICAgIE1hdHJpeElEIG1hdHJpeCwKICAgICAgICAgICAgICBSYW5nZUlEIGZ1bGxfcmFu
Z2UpOworICBDb2xvclNwYWNlKFByaW1hcnlJRCBwcmltYXJpZXMsCisgICAgICAgICAgICAgVHJh
bnNmZXJJRCB0cmFuc2ZlciwKKyAgICAgICAgICAgICBNYXRyaXhJRCBtYXRyaXgsCisgICAgICAg
ICAgICAgUmFuZ2VJRCByYW5nZSwKKyAgICAgICAgICAgICBjb25zdCBIZHJNZXRhZGF0YSogaGRy
X21ldGFkYXRhKTsKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yU3BhY2UmIG90aGVyKSBj
b25zdCB7CisgICAgcmV0dXJuIHByaW1hcmllc18gPT0gb3RoZXIucHJpbWFyaWVzKCkgJiYgdHJh
bnNmZXJfID09IG90aGVyLnRyYW5zZmVyKCkgJiYKKyAgICAgICAgICAgbWF0cml4XyA9PSBvdGhl
ci5tYXRyaXgoKSAmJiByYW5nZV8gPT0gb3RoZXIucmFuZ2UoKSAmJgorICAgICAgICAgICAoKGhk
cl9tZXRhZGF0YV8uaGFzX3ZhbHVlKCkgJiYgb3RoZXIuaGRyX21ldGFkYXRhKCkgJiYKKyAgICAg
ICAgICAgICAqaGRyX21ldGFkYXRhXyA9PSAqb3RoZXIuaGRyX21ldGFkYXRhKCkpIHx8CisgICAg
ICAgICAgICAoIWhkcl9tZXRhZGF0YV8uaGFzX3ZhbHVlKCkgJiYgb3RoZXIuaGRyX21ldGFkYXRh
KCkgPT0gbnVsbHB0cikpOworICB9CiAKICAgUHJpbWFyeUlEIHByaW1hcmllcygpIGNvbnN0Owog
ICBUcmFuc2ZlcklEIHRyYW5zZmVyKCkgY29uc3Q7CiAgIE1hdHJpeElEIG1hdHJpeCgpIGNvbnN0
OwogICBSYW5nZUlEIHJhbmdlKCkgY29uc3Q7CisgIGNvbnN0IEhkck1ldGFkYXRhKiBoZHJfbWV0
YWRhdGEoKSBjb25zdDsKKworICBib29sIHNldF9wcmltYXJpZXNfZnJvbV91aW50OCh1aW50OF90
IGVudW1fdmFsdWUpOworICBib29sIHNldF90cmFuc2Zlcl9mcm9tX3VpbnQ4KHVpbnQ4X3QgZW51
bV92YWx1ZSk7CisgIGJvb2wgc2V0X21hdHJpeF9mcm9tX3VpbnQ4KHVpbnQ4X3QgZW51bV92YWx1
ZSk7CisgIGJvb2wgc2V0X3JhbmdlX2Zyb21fdWludDgodWludDhfdCBlbnVtX3ZhbHVlKTsKKyAg
dm9pZCBzZXRfaGRyX21ldGFkYXRhKGNvbnN0IEhkck1ldGFkYXRhKiBoZHJfbWV0YWRhdGEpOwog
CiAgcHJpdmF0ZToKICAgUHJpbWFyeUlEIHByaW1hcmllc18gPSBQcmltYXJ5SUQ6OmtJbnZhbGlk
OwogICBUcmFuc2ZlcklEIHRyYW5zZmVyXyA9IFRyYW5zZmVySUQ6OmtJbnZhbGlkOwogICBNYXRy
aXhJRCBtYXRyaXhfID0gTWF0cml4SUQ6OmtJbnZhbGlkOwogICBSYW5nZUlEIHJhbmdlXyA9IFJh
bmdlSUQ6OmtJbnZhbGlkOworICBhYnNsOjpvcHRpb25hbDxIZHJNZXRhZGF0YT4gaGRyX21ldGFk
YXRhXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2ltYWdl
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVv
L2VuY29kZWRfaW1hZ2UuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdjNmZhZGVlNzAzYzg5YWNjZTI0OTgxM2Mx
ZDIyMjRhZWYyMjM4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2ltYWdlLmNjCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29k
ZWRfaW1hZ2UuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCituYW1lc3BhY2Ugd2VicnRjIHsK
KworLy8gRkZtcGVnJ3MgZGVjb2RlciwgdXNlZCBieSBIMjY0RGVjb2RlckltcGwsIHJlcXVpcmVz
IHVwIHRvIDggYnl0ZXMgcGFkZGluZyBkdWUKKy8vIHRvIG9wdGltaXplZCBiaXRzdHJlYW0gcmVh
ZGVycy4gU2VlIGF2Y29kZWNfZGVjb2RlX3ZpZGVvMi4KK2NvbnN0IHNpemVfdCBFbmNvZGVkSW1h
Z2U6OmtCdWZmZXJQYWRkaW5nQnl0ZXNIMjY0ID0gODsKKworc2l6ZV90IEVuY29kZWRJbWFnZTo6
R2V0QnVmZmVyUGFkZGluZ0J5dGVzKFZpZGVvQ29kZWNUeXBlIGNvZGVjX3R5cGUpIHsKKyAgc3dp
dGNoIChjb2RlY190eXBlKSB7CisgICAgY2FzZSBrVmlkZW9Db2RlY0gyNjQ6CisgICAgICByZXR1
cm4ga0J1ZmZlclBhZGRpbmdCeXRlc0gyNjQ7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAw
OworICB9Cit9CisKK0VuY29kZWRJbWFnZTo6RW5jb2RlZEltYWdlKCkgOiBFbmNvZGVkSW1hZ2Uo
bnVsbHB0ciwgMCwgMCkge30KKworRW5jb2RlZEltYWdlOjpFbmNvZGVkSW1hZ2UoY29uc3QgRW5j
b2RlZEltYWdlJikgPSBkZWZhdWx0OworCitFbmNvZGVkSW1hZ2U6OkVuY29kZWRJbWFnZSh1aW50
OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgsIHNpemVfdCBzaXplKQorICAgIDogX2J1ZmZlcihi
dWZmZXIpLCBfbGVuZ3RoKGxlbmd0aCksIF9zaXplKHNpemUpIHt9CisKK3ZvaWQgRW5jb2RlZElt
YWdlOjpTZXRFbmNvZGVUaW1lKGludDY0X3QgZW5jb2RlX3N0YXJ0X21zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBlbmNvZGVfZmluaXNoX21zKSB7CisgIHRpbWlu
Z18uZW5jb2RlX3N0YXJ0X21zID0gZW5jb2RlX3N0YXJ0X21zOworICB0aW1pbmdfLmVuY29kZV9m
aW5pc2hfbXMgPSBlbmNvZGVfZmluaXNoX21zOworfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdjNzE5Y2Uz
YTU2NzhkNTFhYzI0ZmM3MzIwMzllZWJkMWI5MGRmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2lt
YWdlLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVm
IEFQSV9WSURFT19FTkNPREVEX0lNQUdFX0hfCisjZGVmaW5lIEFQSV9WSURFT19FTkNPREVEX0lN
QUdFX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vY29sb3Jfc3BhY2UuaCIKKyNpbmNsdWRlICJh
cGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVv
L3ZpZGVvX2NvZGVjX3R5cGUuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29udGVudF90
eXBlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3JvdGF0aW9uLmgiCisjaW5jbHVkZSAi
YXBpL3ZpZGVvL3ZpZGVvX3RpbWluZy5oIgorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8g
Tk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CisKKy8vIFRPRE8oYnVnLndlYnJ0Yy5vcmcvOTM3OCk6IFRoaXMgaXMgYSBsZWdhY3kgYXBpIGNs
YXNzLCB3aGljaCBpcyBzbG93bHkgYmVpbmcKKy8vIGNsZWFuZWQgdXAuIERpcmVjdCB1c2Ugb2Yg
aXRzIG1lbWJlcnMgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQuCitjbGFzcyBSVENfRVhQT1JUIEVu
Y29kZWRJbWFnZSB7CisgcHVibGljOgorICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWZmZXJQYWRk
aW5nQnl0ZXNIMjY0OworCisgIC8vIFNvbWUgZGVjb2RlcnMgcmVxdWlyZSBlbmNvZGVkIGltYWdl
IGJ1ZmZlcnMgdG8gYmUgcGFkZGVkIHdpdGggYSBzbWFsbAorICAvLyBudW1iZXIgb2YgYWRkaXRp
b25hbCBieXRlcyAoZHVlIHRvIG92ZXItcmVhZGluZyBieXRlIHJlYWRlcnMpLgorICBzdGF0aWMg
c2l6ZV90IEdldEJ1ZmZlclBhZGRpbmdCeXRlcyhWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlKTsK
KworICBFbmNvZGVkSW1hZ2UoKTsKKyAgRW5jb2RlZEltYWdlKGNvbnN0IEVuY29kZWRJbWFnZSYp
OworICBFbmNvZGVkSW1hZ2UodWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBzaXplX3Qg
c2l6ZSk7CisKKyAgLy8gVE9ETyhuaXNzZSk6IENoYW5nZSBzdHlsZSB0byB0aW1lc3RhbXAoKSwg
c2V0X3RpbWVzdGFtcCgpLCBmb3IgY29uc2lzdGVuY3kKKyAgLy8gd2l0aCB0aGUgVmlkZW9GcmFt
ZSBjbGFzcy4KKyAgLy8gU2V0IGZyYW1lIHRpbWVzdGFtcCAoOTBrSHopLgorICB2b2lkIFNldFRp
bWVzdGFtcCh1aW50MzJfdCB0aW1lc3RhbXApIHsgdGltZXN0YW1wX3J0cF8gPSB0aW1lc3RhbXA7
IH0KKworICAvLyBHZXQgZnJhbWUgdGltZXN0YW1wICg5MGtIeikuCisgIHVpbnQzMl90IFRpbWVz
dGFtcCgpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF9ydHBfOyB9CisKKyAgdm9pZCBTZXRFbmNv
ZGVUaW1lKGludDY0X3QgZW5jb2RlX3N0YXJ0X21zLCBpbnQ2NF90IGVuY29kZV9maW5pc2hfbXMp
OworCisgIGFic2w6Om9wdGlvbmFsPGludD4gU3BhdGlhbEluZGV4KCkgY29uc3QgeworICAgIHJl
dHVybiBzcGF0aWFsX2luZGV4XzsKKyAgfQorICB2b2lkIFNldFNwYXRpYWxJbmRleChhYnNsOjpv
cHRpb25hbDxpbnQ+IHNwYXRpYWxfaW5kZXgpIHsKKyAgICBSVENfRENIRUNLX0dFKHNwYXRpYWxf
aW5kZXgudmFsdWVfb3IoMCksIDApOworICAgIFJUQ19EQ0hFQ0tfTFQoc3BhdGlhbF9pbmRleC52
YWx1ZV9vcigwKSwga01heFNwYXRpYWxMYXllcnMpOworICAgIHNwYXRpYWxfaW5kZXhfID0gc3Bh
dGlhbF9pbmRleDsKKyAgfQorCisgIGNvbnN0IHdlYnJ0Yzo6Q29sb3JTcGFjZSogQ29sb3JTcGFj
ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gY29sb3Jfc3BhY2VfID8gJipjb2xvcl9zcGFjZV8gOiBu
dWxscHRyOworICB9CisgIHZvaWQgU2V0Q29sb3JTcGFjZShjb25zdCB3ZWJydGM6OkNvbG9yU3Bh
Y2UqIGNvbG9yX3NwYWNlKSB7CisgICAgY29sb3Jfc3BhY2VfID0KKyAgICAgICAgY29sb3Jfc3Bh
Y2UgPyBhYnNsOjptYWtlX29wdGlvbmFsKCpjb2xvcl9zcGFjZSkgOiBhYnNsOjpudWxsb3B0Owor
ICB9CisKKyAgdWludDMyX3QgX2VuY29kZWRXaWR0aCA9IDA7CisgIHVpbnQzMl90IF9lbmNvZGVk
SGVpZ2h0ID0gMDsKKyAgLy8gTlRQIHRpbWUgb2YgdGhlIGNhcHR1cmUgdGltZSBpbiBsb2NhbCB0
aW1lYmFzZSBpbiBtaWxsaXNlY29uZHMuCisgIGludDY0X3QgbnRwX3RpbWVfbXNfID0gMDsKKyAg
aW50NjRfdCBjYXB0dXJlX3RpbWVfbXNfID0gMDsKKyAgRnJhbWVUeXBlIF9mcmFtZVR5cGUgPSBr
VmlkZW9GcmFtZURlbHRhOworICB1aW50OF90KiBfYnVmZmVyOworICBzaXplX3QgX2xlbmd0aDsK
KyAgc2l6ZV90IF9zaXplOworICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uXyA9IGtWaWRlb1JvdGF0
aW9uXzA7CisgIFZpZGVvQ29udGVudFR5cGUgY29udGVudF90eXBlXyA9IFZpZGVvQ29udGVudFR5
cGU6OlVOU1BFQ0lGSUVEOworICBib29sIF9jb21wbGV0ZUZyYW1lID0gZmFsc2U7CisgIGludCBx
cF8gPSAtMTsgIC8vIFF1YW50aXplciB2YWx1ZS4KKworICAvLyBXaGVuIGFuIGFwcGxpY2F0aW9u
IGluZGljYXRlcyBub24temVybyB2YWx1ZXMgaGVyZSwgaXQgaXMgdGFrZW4gYXMgYW4KKyAgLy8g
aW5kaWNhdGlvbiB0aGF0IGFsbCBmdXR1cmUgZnJhbWVzIHdpbGwgYmUgY29uc3RyYWluZWQgd2l0
aCB0aG9zZSBsaW1pdHMKKyAgLy8gdW50aWwgdGhlIGFwcGxpY2F0aW9uIGluZGljYXRlcyBhIGNo
YW5nZSBhZ2Fpbi4KKyAgUGxheW91dERlbGF5IHBsYXlvdXRfZGVsYXlfID0gey0xLCAtMX07CisK
KyAgc3RydWN0IFRpbWluZyB7CisgICAgdWludDhfdCBmbGFncyA9IFZpZGVvU2VuZFRpbWluZzo6
a0ludmFsaWQ7CisgICAgaW50NjRfdCBlbmNvZGVfc3RhcnRfbXMgPSAwOworICAgIGludDY0X3Qg
ZW5jb2RlX2ZpbmlzaF9tcyA9IDA7CisgICAgaW50NjRfdCBwYWNrZXRpemF0aW9uX2ZpbmlzaF9t
cyA9IDA7CisgICAgaW50NjRfdCBwYWNlcl9leGl0X21zID0gMDsKKyAgICBpbnQ2NF90IG5ldHdv
cmtfdGltZXN0YW1wX21zID0gMDsKKyAgICBpbnQ2NF90IG5ldHdvcmsyX3RpbWVzdGFtcF9tcyA9
IDA7CisgICAgaW50NjRfdCByZWNlaXZlX3N0YXJ0X21zID0gMDsKKyAgICBpbnQ2NF90IHJlY2Vp
dmVfZmluaXNoX21zID0gMDsKKyAgfSB0aW1pbmdfOworCisgcHJpdmF0ZToKKyAgdWludDMyX3Qg
dGltZXN0YW1wX3J0cF8gPSAwOworICBhYnNsOjpvcHRpb25hbDxpbnQ+IHNwYXRpYWxfaW5kZXhf
OworICBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkNvbG9yU3BhY2U+IGNvbG9yX3NwYWNlXzsKK307
CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVklERU9fRU5DT0RF
RF9JTUFHRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL2hkcl9tZXRhZGF0YS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9oZHJfbWV0YWRhdGEuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTJhNjY5Yzk4YTNjMGYwNzlhZjVjMTc2OTQ1ZWMyOTgyOGJkMmRkZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
by9oZHJfbWV0YWRhdGEuY2MKQEAgLTAsMCArMSwyMSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMp
IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKKyNpbmNsdWRlICJhcGkvdmlkZW8vaGRyX21ldGFkYXRhLmgiCisKK25hbWVzcGFjZSB3ZWJy
dGMgeworCitIZHJNYXN0ZXJpbmdNZXRhZGF0YTo6Q2hyb21hdGljaXR5OjpDaHJvbWF0aWNpdHko
KSA9IGRlZmF1bHQ7CisKK0hkck1hc3RlcmluZ01ldGFkYXRhOjpIZHJNYXN0ZXJpbmdNZXRhZGF0
YSgpID0gZGVmYXVsdDsKKworSGRyTWV0YWRhdGE6Okhkck1ldGFkYXRhKCkgPSBkZWZhdWx0Owor
Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaGRyX21ldGFkYXRhLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaGRyX21ldGFkYXRh
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjc2YTkwMGM5OTQ4NjQyMTQzMGYwNGRiZWQyYjI4ODcxM2NlZTNiZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlby9oZHJfbWV0YWRhdGEuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogIENv
cHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVklERU9fSERSX01FVEFEQVRBX0hfCisjZGVmaW5l
IEFQSV9WSURFT19IRFJfTUVUQURBVEFfSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1l
c3BhY2Ugd2VicnRjIHsKKworLy8gU01QVEUgU1QgMjA4NiBtYXN0ZXJpbmcgbWV0YWRhdGEsCisv
LyBzZWUgaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2RvY3VtZW50LzgzNTM4OTkuCitzdHJ1
Y3QgSGRyTWFzdGVyaW5nTWV0YWRhdGEgeworICBzdHJ1Y3QgQ2hyb21hdGljaXR5IHsKKyAgICAv
LyB4eSBjaHJvbWF0aWNpdHkgY29vcmRpbmF0ZXMgbXVzdCBiZSBjYWxjdWxhdGVkIGFzIHNwZWNp
ZmllZCBpbiBJU08KKyAgICAvLyAxMTY2NC0zOjIwMTIgU2VjdGlvbiA3LCBhbmQgbXVzdCBiZSBz
cGVjaWZpZWQgd2l0aCBmb3VyIGRlY2ltYWwgcGxhY2VzLgorICAgIC8vIFRoZSB4IGNvb3JkaW5h
dGUgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzAuMDAwMSwgMC43NDAwXSBhbmQgdGhlIHkKKyAgICAv
LyBjb29yZGluYXRlIG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLjAwMDEsIDAuODQwMF0uCisgICAg
ZmxvYXQgeCA9IDAuMGY7CisgICAgZmxvYXQgeSA9IDAuMGY7CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENocm9tYXRpY2l0eSYgcmhzKSBjb25zdCB7CisgICAgICByZXR1cm4geCA9PSByaHMu
eCAmJiB5ID09IHJocy55OworICAgIH0KKworICAgIENocm9tYXRpY2l0eSgpOworICB9OworCisg
IC8vIFRoZSBub21pbmFsIHByaW1hcmllcyBvZiB0aGUgbWFzdGVyaW5nIGRpc3BsYXkuCisgIENo
cm9tYXRpY2l0eSBwcmltYXJ5X3I7CisgIENocm9tYXRpY2l0eSBwcmltYXJ5X2c7CisgIENocm9t
YXRpY2l0eSBwcmltYXJ5X2I7CisKKyAgLy8gVGhlIG5vbWluYWwgY2hyb21hdGljaXR5IG9mIHRo
ZSB3aGl0ZSBwb2ludCBvZiB0aGUgbWFzdGVyaW5nIGRpc3BsYXkuCisgIENocm9tYXRpY2l0eSB3
aGl0ZV9wb2ludDsKKworICAvLyBUaGUgbm9taW5hbCBtYXhpbXVtIGRpc3BsYXkgbHVtaW5hbmNl
IG9mIHRoZSBtYXN0ZXJpbmcgZGlzcGxheS4gU3BlY2lmaWVkCisgIC8vIGluIHRoZSB1bml0IGNh
bmRlbGEvbTIuIFRoZSB2YWx1ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBbNSwgMTAwMDBdIHdpdGgg
emVybworICAvLyBkZWNpbWFsIHBsYWNlcy4KKyAgZmxvYXQgbHVtaW5hbmNlX21heCA9IDAuMGY7
CisKKyAgLy8gVGhlIG5vbWluYWwgbWluaW11bSBkaXNwbGF5IGx1bWluYW5jZSBvZiB0aGUgbWFz
dGVyaW5nIGRpc3BsYXkuIFNwZWNpZmllZAorICAvLyBpbiB0aGUgdW5pdCBjYW5kZWxhL20yLiBU
aGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzAuMDAwMSwgNS4wMDAwXQorICAvLyB3aXRo
IGZvdXIgZGVjaW1hbCBwbGFjZXMuCisgIGZsb2F0IGx1bWluYW5jZV9taW4gPSAwLjBmOworCisg
IEhkck1hc3RlcmluZ01ldGFkYXRhKCk7CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhkck1h
c3RlcmluZ01ldGFkYXRhJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gKChwcmltYXJ5X3IgPT0g
cmhzLnByaW1hcnlfcikgJiYgKHByaW1hcnlfZyA9PSByaHMucHJpbWFyeV9nKSAmJgorICAgICAg
ICAgICAgKHByaW1hcnlfYiA9PSByaHMucHJpbWFyeV9iKSAmJiAod2hpdGVfcG9pbnQgPT0gcmhz
LndoaXRlX3BvaW50KSAmJgorICAgICAgICAgICAgKGx1bWluYW5jZV9tYXggPT0gcmhzLmx1bWlu
YW5jZV9tYXgpICYmCisgICAgICAgICAgICAobHVtaW5hbmNlX21pbiA9PSByaHMubHVtaW5hbmNl
X21pbikpOworICB9Cit9OworCisvLyBIaWdoIGR5bmFtaWMgcmFuZ2UgKEhEUikgbWV0YWRhdGEg
Y29tbW9uIGZvciBIRFIxMCBhbmQgV2ViTS9WUDktYmFzZWQgSERSCisvLyBmb3JtYXRzLiBUaGlz
IHN0cnVjdCByZXBsaWNhdGVzIHRoZSBIRFJNZXRhZGF0YSBzdHJ1Y3QgZGVmaW5lZCBpbgorLy8g
aHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL21lZGlhL2Jhc2UvaGRyX21ldGFk
YXRhLmgKK3N0cnVjdCBIZHJNZXRhZGF0YSB7CisgIEhkck1hc3RlcmluZ01ldGFkYXRhIG1hc3Rl
cmluZ19tZXRhZGF0YTsKKyAgLy8gTWF4IGNvbnRlbnQgbGlnaHQgbGV2ZWwgKENMTCksIGkuZS4g
bWF4aW11bSBicmlnaHRuZXNzIGxldmVsIHByZXNlbnQgaW4gdGhlCisgIC8vIHN0cmVhbSwgaW4g
bml0cy4gMSBuaXQgPSAxIGNhbmRlbGEvbTIuCisgIHVpbnQzMl90IG1heF9jb250ZW50X2xpZ2h0
X2xldmVsID0gMDsKKyAgLy8gTWF4IGZyYW1lLWF2ZXJhZ2UgbGlnaHQgbGV2ZWwgKEZBTEwpLCBp
LmUuIG1heGltdW0gYXZlcmFnZSBicmlnaHRuZXNzIG9mCisgIC8vIHRoZSBicmlnaHRlc3QgZnJh
bWUgaW4gdGhlIHN0cmVhbSwgaW4gbml0cy4KKyAgdWludDMyX3QgbWF4X2ZyYW1lX2F2ZXJhZ2Vf
bGlnaHRfbGV2ZWwgPSAwOworCisgIEhkck1ldGFkYXRhKCk7CisKKyAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEhkck1ldGFkYXRhJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gKAorICAgICAgICAo
bWF4X2NvbnRlbnRfbGlnaHRfbGV2ZWwgPT0gcmhzLm1heF9jb250ZW50X2xpZ2h0X2xldmVsKSAm
JgorICAgICAgICAobWF4X2ZyYW1lX2F2ZXJhZ2VfbGlnaHRfbGV2ZWwgPT0gcmhzLm1heF9mcmFt
ZV9hdmVyYWdlX2xpZ2h0X2xldmVsKSAmJgorICAgICAgICAobWFzdGVyaW5nX21ldGFkYXRhID09
IHJocy5tYXN0ZXJpbmdfbWV0YWRhdGEpKTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YworCisjZW5kaWYgIC8vIEFQSV9WSURFT19IRFJfTUVUQURBVEFfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9pNDIw
X2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvL2k0MjBfYnVmZmVyLmgKaW5kZXggMjgyYjI0MjZjYTM2ZTE1OTIyOGVlNWIzZWU3MTgz
NWM4YmY3NzExOS4uNjMxZTM5NGU1MzRmMGIyNzQ3OWMxYzZmNmRmNjFhMDUxY2M1NWY1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Zp
ZGVvL2k0MjBfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgKQEAgLTExLDE2ICsxMSwxOSBAQAogI2lm
bmRlZiBBUElfVklERU9fSTQyMF9CVUZGRVJfSF8KICNkZWZpbmUgQVBJX1ZJREVPX0k0MjBfQlVG
RkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNs
dWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVv
L3ZpZGVvX3JvdGF0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVtb3J5L2FsaWduZWRfbWFs
bG9jLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8g
UGxhaW4gSTQyMCBidWZmZXIgaW4gc3RhbmRhcmQgbWVtb3J5LgotY2xhc3MgSTQyMEJ1ZmZlciA6
IHB1YmxpYyBJNDIwQnVmZmVySW50ZXJmYWNlIHsKK2NsYXNzIFJUQ19FWFBPUlQgSTQyMEJ1ZmZl
ciA6IHB1YmxpYyBJNDIwQnVmZmVySW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHN0YXRpYyBydGM6
OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlcj4gQ3JlYXRlKGludCB3aWR0aCwgaW50IGhlaWdodCk7
CiAgIHN0YXRpYyBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlcj4gQ3JlYXRlKGludCB3aWR0
aCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS92aWRlby90ZXN0L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvL3Rlc3QvQlVJTEQuZ24KaW5kZXggY2JhNDI0NThkMjIxNWQx
M2M1ZjUwZmU4OTRhYzhmY2E0Yzc4ZmFkMi4uYzgyNjllZmRjMDc5YmJlMzdlZGUyNzdhYWE3ZjM5
YjUxMjA1Yzg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL3Rlc3QvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3Rlc3QvQlVJTEQuZ24KQEAgLTExLDEw
ICsxMSwxMiBAQCBpbXBvcnQoIi4uLy4uLy4uL3dlYnJ0Yy5nbmkiKQogcnRjX3NvdXJjZV9zZXQo
InJ0Y19hcGlfdmlkZW9fdW5pdHRlc3RzIikgewogICB0ZXN0b25seSA9IHRydWUKICAgc291cmNl
cyA9IFsKKyAgICAiY29sb3Jfc3BhY2VfdW5pdHRlc3QuY2MiLAogICAgICJ2aWRlb19iaXRyYXRl
X2FsbG9jYXRpb25fdW5pdHRlc3QuY2MiLAogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uOnZpZGVv
X2JpdHJhdGVfYWxsb2NhdGlvbiIsCisgICAgIi4uOnZpZGVvX2ZyYW1lIiwKICAgICAiLi4vLi4v
Li4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdGVzdC9jb2xvcl9zcGFjZV91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS92aWRlby90ZXN0L2NvbG9yX3NwYWNlX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3MWJjZWY4
NmE2YmM1MmMxZDE2ZWQ5YjM5ZTY0NzYwN2JiMGI1ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdGVzdC9jb2xv
cl9zcGFjZV91bml0dGVzdC5jYwpAQCAtMCwwICsxLDU1IEBACisvKgorICogIENvcHlyaWdodCAo
YykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2NvbG9yX3Nw
YWNlLmgiCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK1RF
U1QoQ29sb3JTcGFjZSwgVGVzdFNldHRpbmdQcmltYXJpZXNGcm9tVWludDgpIHsKKyAgQ29sb3JT
cGFjZSBjb2xvcl9zcGFjZTsKKyAgRVhQRUNUX1RSVUUoY29sb3Jfc3BhY2Uuc2V0X3ByaW1hcmll
c19mcm9tX3VpbnQ4KAorICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ29sb3JTcGFjZTo6UHJp
bWFyeUlEOjprQlQ0NzBCRykpKTsKKyAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlByaW1hcnlJRDo6
a0JUNDcwQkcsIGNvbG9yX3NwYWNlLnByaW1hcmllcygpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbG9y
X3NwYWNlLnNldF9wcmltYXJpZXNfZnJvbV91aW50OCgzKSk7CisgIEVYUEVDVF9GQUxTRShjb2xv
cl9zcGFjZS5zZXRfcHJpbWFyaWVzX2Zyb21fdWludDgoMjMpKTsKKyAgRVhQRUNUX0ZBTFNFKGNv
bG9yX3NwYWNlLnNldF9wcmltYXJpZXNfZnJvbV91aW50OCg2NCkpOworfQorCitURVNUKENvbG9y
U3BhY2UsIFRlc3RTZXR0aW5nVHJhbnNmZXJGcm9tVWludDgpIHsKKyAgQ29sb3JTcGFjZSBjb2xv
cl9zcGFjZTsKKyAgRVhQRUNUX1RSVUUoY29sb3Jfc3BhY2Uuc2V0X3RyYW5zZmVyX2Zyb21fdWlu
dDgoCisgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PihDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpr
QlQyMDIwXzEwKSkpOworICBFWFBFQ1RfRVEoQ29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6a0JUMjAy
MF8xMCwgY29sb3Jfc3BhY2UudHJhbnNmZXIoKSk7CisgIEVYUEVDVF9GQUxTRShjb2xvcl9zcGFj
ZS5zZXRfdHJhbnNmZXJfZnJvbV91aW50OCgzKSk7CisgIEVYUEVDVF9GQUxTRShjb2xvcl9zcGFj
ZS5zZXRfdHJhbnNmZXJfZnJvbV91aW50OCgxOSkpOworICBFWFBFQ1RfRkFMU0UoY29sb3Jfc3Bh
Y2Uuc2V0X3RyYW5zZmVyX2Zyb21fdWludDgoMTI4KSk7Cit9CisKK1RFU1QoQ29sb3JTcGFjZSwg
VGVzdFNldHRpbmdNYXRyaXhGcm9tVWludDgpIHsKKyAgQ29sb3JTcGFjZSBjb2xvcl9zcGFjZTsK
KyAgRVhQRUNUX1RSVUUoY29sb3Jfc3BhY2Uuc2V0X21hdHJpeF9mcm9tX3VpbnQ4KAorICAgICAg
c3RhdGljX2Nhc3Q8dWludDhfdD4oQ29sb3JTcGFjZTo6TWF0cml4SUQ6OmtDRE5DTFMpKSk7Cisg
IEVYUEVDVF9FUShDb2xvclNwYWNlOjpNYXRyaXhJRDo6a0NETkNMUywgY29sb3Jfc3BhY2UubWF0
cml4KCkpOworICBFWFBFQ1RfRkFMU0UoY29sb3Jfc3BhY2Uuc2V0X21hdHJpeF9mcm9tX3VpbnQ4
KDMpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbG9yX3NwYWNlLnNldF9tYXRyaXhfZnJvbV91aW50OCgx
NSkpOworICBFWFBFQ1RfRkFMU0UoY29sb3Jfc3BhY2Uuc2V0X21hdHJpeF9mcm9tX3VpbnQ4KDI1
NSkpOworfQorCitURVNUKENvbG9yU3BhY2UsIFRlc3RTZXR0aW5nUmFuZ2VGcm9tVWludDgpIHsK
KyAgQ29sb3JTcGFjZSBjb2xvcl9zcGFjZTsKKyAgRVhQRUNUX1RSVUUoY29sb3Jfc3BhY2Uuc2V0
X3JhbmdlX2Zyb21fdWludDgoCisgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PihDb2xvclNwYWNl
OjpSYW5nZUlEOjprRnVsbCkpKTsKKyAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlJhbmdlSUQ6OmtG
dWxsLCBjb2xvcl9zcGFjZS5yYW5nZSgpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbG9yX3NwYWNlLnNl
dF9yYW5nZV9mcm9tX3VpbnQ4KDQpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Zp
ZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uY2MK
aW5kZXggNmM1YWQxZWFlNWZhYzE1MGQxMzQwNjgyYzMxMzY5ZjEzMmJmYzQ0OS4uMWIzNTY5MDQ3
ZTBlNzgwOWMzNGQzZWIwZDhiZTUxNDE4ZTM5OWY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxs
b2NhdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmNjCkBAIC0xMCwxMiArMTAsMTEg
QEAKIAogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uaCIKIAot
I2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxjc3RkaW50PgogCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9u
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Zp
ZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oCmlu
ZGV4IDllMjUwMWQ4NWEwOWFhY2I5MTllOWNiOGFmYWY3MGRhZTRlNDljOWIuLmQxNzcxYjQ0YTQz
NWNiODNhMjllYTk0YzYzMWQyODkwMzA3YTljZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9j
YXRpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgKQEAgLTExLDYgKzExLDggQEAKICNp
Zm5kZWYgQVBJX1ZJREVPX1ZJREVPX0JJVFJBVEVfQUxMT0NBVElPTl9IXwogI2RlZmluZSBBUElf
VklERU9fVklERU9fQklUUkFURV9BTExPQ0FUSU9OX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4K
KyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5n
PgogI2luY2x1ZGUgPHZlY3Rvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19jb2RlY190eXBlLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fY29kZWNf
dHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ0NzcyM2NmMDg4Y2RhYjI4MzJiZDFiNTFmYzI4ODEwYjEyMDkz
NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oCkBAIC0wLDAgKzEsMzAgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9WSURFT19WSURFT19DT0RFQ19UWVBF
X0hfCisjZGVmaW5lIEFQSV9WSURFT19WSURFT19DT0RFQ19UWVBFX0hfCisKK25hbWVzcGFjZSB3
ZWJydGMgeworCisvLyBWaWRlbyBjb2RlYyB0eXBlcworZW51bSBWaWRlb0NvZGVjVHlwZSB7Cisg
IC8vIFRoZXJlIGFyZSB2YXJpb3VzIG1lbXNldCguLi4sIDAsIC4uLikgY2FsbHMgaW4gdGhlIGNv
ZGUgdGhhdCByZWx5IG9uCisgIC8vIGtWaWRlb0NvZGVjR2VuZXJpYyBiZWluZyB6ZXJvLgorICBr
VmlkZW9Db2RlY0dlbmVyaWMgPSAwLAorICBrVmlkZW9Db2RlY1ZQOCwKKyAga1ZpZGVvQ29kZWNW
UDksCisgIGtWaWRlb0NvZGVjSDI2NCwKKyAga1ZpZGVvQ29kZWNJNDIwLAorICBrVmlkZW9Db2Rl
Y011bHRpcGxleCwKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBB
UElfVklERU9fVklERU9fQ09ERUNfVFlQRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3Zp
ZGVvX2NvbnRlbnRfdHlwZS5oCmluZGV4IDhjNjQ2MDI4OGQ4MjFjYjY2ZWY3MTQwZDk4OTVlM2M1
Njk4OTM0MjYuLjJkMzhhNjIzNjZjNTc3NTc2YTgyYmZkMmQwYmQ0ODk0ZGJjMjM3MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
by92aWRlb19jb250ZW50X3R5cGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fY29udGVudF90eXBlLmgKQEAgLTEzLDggKzEz
LDYgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogCi0jaW5jbHVkZSA8c3RyaW5nPgotCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIAogZW51bSBjbGFzcyBWaWRlb0NvbnRlbnRUeXBlIDogdWludDhfdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW8vdmlkZW9fZnJhbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuY2MKaW5kZXggNTUyMWFkOGE1ODc0NDEy
MjM3NDNjMmY5YThjOTFkNDM1OTAwNTBkOS4uZWFhZTMzYjJiM2ZmZDg0ZjVmNDJlNTU1M2UwNTNj
MWQyYWFmYWQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19mcmFtZS5jYwpAQCAtNjQs
NiArNjQsMTMgQEAgVmlkZW9GcmFtZTo6QnVpbGRlciYgVmlkZW9GcmFtZTo6QnVpbGRlcjo6c2V0
X2NvbG9yX3NwYWNlKAogICByZXR1cm4gKnRoaXM7CiB9CiAKK1ZpZGVvRnJhbWU6OkJ1aWxkZXIm
IFZpZGVvRnJhbWU6OkJ1aWxkZXI6OnNldF9jb2xvcl9zcGFjZSgKKyAgICBjb25zdCBDb2xvclNw
YWNlKiBjb2xvcl9zcGFjZSkgeworICBjb2xvcl9zcGFjZV8gPQorICAgICAgY29sb3Jfc3BhY2Ug
PyBhYnNsOjptYWtlX29wdGlvbmFsKCpjb2xvcl9zcGFjZSkgOiBhYnNsOjpudWxsb3B0OworICBy
ZXR1cm4gKnRoaXM7Cit9CisKIFZpZGVvRnJhbWU6OlZpZGVvRnJhbWUoY29uc3QgcnRjOjpzY29w
ZWRfcmVmcHRyPFZpZGVvRnJhbWVCdWZmZXI+JiBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCB0aW1lc3RhbXBfdXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19mcmFtZS5o
CmluZGV4IGRjYjUzM2UyOWYwYzA5ZjJiYWU4Nzk3MzEzYmExOGQ1MmU3MTZmZmMuLjJjNWQwODFi
YTYyMWRjNzZkYmE2Y2VmOGZjYzEyOTYyMThlMzk5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19mcmFtZS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92
aWRlb19mcmFtZS5oCkBAIC0xNSwxMiArMTUsMTUgQEAKIAogI2luY2x1ZGUgImFic2wvdHlwZXMv
b3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vY29sb3Jfc3BhY2UuaCIKKyNpbmNsdWRl
ICJhcGkvdmlkZW8vaGRyX21ldGFkYXRhLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2Zy
YW1lX2J1ZmZlci5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19yb3RhdGlvbi5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lz
dGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIFZpZGVvRnJh
bWUgeworY2xhc3MgUlRDX0VYUE9SVCBWaWRlb0ZyYW1lIHsKICBwdWJsaWM6CiAgIC8vIFByZWZl
cnJlZCB3YXkgb2YgYnVpbGRpbmcgVmlkZW9GcmFtZSBvYmplY3RzLgogICBjbGFzcyBCdWlsZGVy
IHsKQEAgLTM3LDYgKzQwLDcgQEAgY2xhc3MgVmlkZW9GcmFtZSB7CiAgICAgQnVpbGRlciYgc2V0
X250cF90aW1lX21zKGludDY0X3QgbnRwX3RpbWVfbXMpOwogICAgIEJ1aWxkZXImIHNldF9yb3Rh
dGlvbihWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKTsKICAgICBCdWlsZGVyJiBzZXRfY29sb3Jfc3Bh
Y2UoY29uc3QgQ29sb3JTcGFjZSYgY29sb3Jfc3BhY2UpOworICAgIEJ1aWxkZXImIHNldF9jb2xv
cl9zcGFjZShjb25zdCBDb2xvclNwYWNlKiBjb2xvcl9zcGFjZSk7CiAKICAgIHByaXZhdGU6CiAg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gdmlkZW9fZnJh
bWVfYnVmZmVyXzsKQEAgLTExMCw4ICsxMTQsMTAgQEAgY2xhc3MgVmlkZW9GcmFtZSB7CiAgIFZp
ZGVvUm90YXRpb24gcm90YXRpb24oKSBjb25zdCB7IHJldHVybiByb3RhdGlvbl87IH0KICAgdm9p
ZCBzZXRfcm90YXRpb24oVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikgeyByb3RhdGlvbl8gPSByb3Rh
dGlvbjsgfQogCi0gIC8vIFNldCBDb2xvciBzcGFjZSB3aGVuIGF2YWlsYWJsZS4KLSAgYWJzbDo6
b3B0aW9uYWw8Q29sb3JTcGFjZT4gY29sb3Jfc3BhY2UoKSBjb25zdCB7IHJldHVybiBjb2xvcl9z
cGFjZV87IH0KKyAgLy8gR2V0IGNvbG9yIHNwYWNlIHdoZW4gYXZhaWxhYmxlLgorICBjb25zdCBD
b2xvclNwYWNlKiBjb2xvcl9zcGFjZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gY29sb3Jfc3BhY2Vf
ID8gJipjb2xvcl9zcGFjZV8gOiBudWxscHRyOworICB9CiAKICAgLy8gR2V0IHJlbmRlciB0aW1l
IGluIG1pbGxpc2Vjb25kcy4KICAgLy8gVE9ETyhuaXNzZSk6IERlcHJlY2F0ZWQuIE1pZ3JhdGUg
YWxsIHVzZXJzIHRvIHRpbWVzdGFtcF91cygpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX3NvdXJjZV9pbnRlcmZh
Y2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
by92aWRlb19zb3VyY2VfaW50ZXJmYWNlLmgKaW5kZXggNGVlNDcxOTQ1NTI5ZGYxMzNjM2Q0ZDE4
MzNmODA2OWU3MGQ4ZTg4Ny4uMmJmNzM3MDRiZmFmMWFiMTNjNjU3Yjc1ZTdmNjU0NDExMmE1NTQx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvL3ZpZGVvX3NvdXJjZV9pbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc291cmNlX2ludGVyZmFj
ZS5oCkBAIC0xNSwxMiArMTUsMTMgQEAKIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc2lua19pbnRlcmZhY2UuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIAogLy8g
VmlkZW9TaW5rV2FudHMgaXMgdXNlZCBmb3Igbm90aWZ5aW5nIHRoZSBzb3VyY2Ugb2YgcHJvcGVy
dGllcyBhIHZpZGVvIGZyYW1lCiAvLyBzaG91bGQgaGF2ZSB3aGVuIGl0IGlzIGRlbGl2ZXJlZCB0
byBhIGNlcnRhaW4gc2luay4KLXN0cnVjdCBWaWRlb1NpbmtXYW50cyB7CitzdHJ1Y3QgUlRDX0VY
UE9SVCBWaWRlb1NpbmtXYW50cyB7CiAgIFZpZGVvU2lua1dhbnRzKCk7CiAgIFZpZGVvU2lua1dh
bnRzKGNvbnN0IFZpZGVvU2lua1dhbnRzJik7CiAgIH5WaWRlb1NpbmtXYW50cygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVv
L3ZpZGVvX3N0cmVhbV9lbmNvZGVyX29ic2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJfb2JzZXJ2
ZXIuaAppbmRleCBiOTQwZWZkZjExNTAwMzFmMTA0ZTJhMzk3MWQ4ZTczNDYwZWI1N2QzLi45OGI1
Y2ZjYjJjZDMwZDlkZmVlMDRiM2ExODM5OTFmOTM2MWE1M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc3RyZWFt
X2VuY29kZXJfb2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJfb2JzZXJ2ZXIuaApAQCAt
MTEsNiArMTEsNyBAQAogI2lmbmRlZiBBUElfVklERU9fVklERU9fU1RSRUFNX0VOQ09ERVJfT0JT
RVJWRVJfSF8KICNkZWZpbmUgQVBJX1ZJREVPX1ZJREVPX1NUUkVBTV9FTkNPREVSX09CU0VSVkVS
X0hfCiAKKyNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAi
YWJzbC90eXBlcy9vcHRpb25hbC5oIgpAQCAtNjgsNiArNjksOSBAQCBjbGFzcyBWaWRlb1N0cmVh
bUVuY29kZXJPYnNlcnZlciA6IHB1YmxpYyBDcHVPdmVydXNlTWV0cmljc09ic2VydmVyIHsKICAg
dmlydHVhbCB2b2lkIE9uU2VuZEVuY29kZWRJbWFnZShjb25zdCBFbmNvZGVkSW1hZ2UmIGVuY29k
ZWRfaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNT
cGVjaWZpY0luZm8qIGNvZGVjX2luZm8pID0gMDsKIAorICB2aXJ0dWFsIHZvaWQgT25FbmNvZGVy
SW1wbGVtZW50YXRpb25DaGFuZ2VkKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGltcGxlbWVu
dGF0aW9uX25hbWUpID0gMDsKKwogICB2aXJ0dWFsIHZvaWQgT25GcmFtZURyb3BwZWQoRHJvcFJl
YXNvbiByZWFzb24pID0gMDsKIAogICAvLyBVc2VkIHRvIGluZGljYXRlIGNoYW5nZSBpbiBjb250
ZW50IHR5cGUsIHdoaWNoIG1heSByZXF1aXJlIGEgY2hhbmdlIGluCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc3Ry
ZWFtX2VuY29kZXJfc2V0dGluZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlcl9zZXR0aW5ncy5oCmluZGV4
IGI2N2YzM2M5ODJkYmJlY2MwOGIxODc3NGI1NDhiZjBkODlmYzU4MzEuLjM3YzFkZTcwMTVmMjFi
M2E4NWQ2OWJmMjBiMDMzMGNiYWNjZmQ5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlcl9z
ZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlcl9zZXR0aW5ncy5oCkBAIC0xMSw2ICsxMSw3
IEBACiAjaWZuZGVmIEFQSV9WSURFT19WSURFT19TVFJFQU1fRU5DT0RFUl9TRVRUSU5HU19IXwog
I2RlZmluZSBBUElfVklERU9fVklERU9fU1RSRUFNX0VOQ09ERVJfU0VUVElOR1NfSF8KIAorI2lu
Y2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CkBAIC0yNCw2ICsyNSw5IEBAIHN0cnVjdCBWaWRlb1N0cmVhbUVuY29kZXJT
ZXR0aW5ncyB7CiAKICAgLy8gT3duZXJzaGlwIHN0YXlzIHdpdGggV2VicnRjVmlkZW9FbmdpbmUg
KGRlbGVnYXRlZCBmcm9tIFBlZXJDb25uZWN0aW9uKS4KICAgVmlkZW9FbmNvZGVyRmFjdG9yeSog
ZW5jb2Rlcl9mYWN0b3J5ID0gbnVsbHB0cjsKKworICAvLyBPd25lcnNoaXAgc3RheXMgd2l0aCBX
ZWJydGNWaWRlb0VuZ2luZSAoZGVsZWdhdGVkIGZyb20gUGVlckNvbm5lY3Rpb24pLgorICBWaWRl
b0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KiBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0gbnVs
bHB0cjsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvQlVJTEQu
Z24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9f
Y29kZWNzL0JVSUxELmduCmluZGV4IDU1Njc0ZDA5MDEwYTk4ZWRhOWEyMzZiNjZiOGM0MmVlNGRj
ZjJkYjYuLmQwYjFiOWJhOGVhNDhiMzJmYzBkMWQ0MTA3ODcwMTM3NDA4OWQ5N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19j
b2RlY3MvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9CVUlMRC5nbgpAQCAtMjgsMTUgKzI4LDE4IEBAIHJ0Y19z
b3VyY2Vfc2V0KCJ2aWRlb19jb2RlY3NfYXBpIikgewogICAgICJ2aWRlb19lbmNvZGVyX2NvbmZp
Zy5jYyIsCiAgICAgInZpZGVvX2VuY29kZXJfY29uZmlnLmgiLAogICAgICJ2aWRlb19lbmNvZGVy
X2ZhY3RvcnkuaCIsCisgICAgInZwOF90ZW1wb3JhbF9sYXllcnMuaCIsCiAgIF0KIAogICBkZXBz
ID0gWwogICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKLSAgICAiLi4vLi4vY29tbW9uX3ZpZGVv
IiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRj
X2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIs
CisgICAgIi4uL3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICIuLi92aWRlbzp2aWRlb19iaXRy
YXRlX2FsbG9jYXRpb24iLAogICAgICIuLi92aWRlbzp2aWRlb19mcmFtZSIsCisgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTU2LDYgKzU5LDcgQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJidWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeSIpIHsKICAg
ICAiOnZpZGVvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9tZWRpYTpydGNfaW50ZXJuYWxfdmlk
ZW9fY29kZWNzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cHRyX3V0aWwiLAorICAgICIuLi8uLi9y
dGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL21lbW9yeSIsCiAgIF0KIH0KQEAgLTc1LDggKzc5LDI5IEBAIHJ0Y19zdGF0aWNfbGli
cmFyeSgiYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkiKSB7CiAgICAgIjp2aWRlb19jb2Rl
Y3NfYXBpIiwKICAgICAiLi4vLi4vbWVkaWE6cnRjX2ludGVybmFsX3ZpZGVvX2NvZGVjcyIsCiAg
ICAgIi4uLy4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKKyAgICAiLi4vLi4vbWVkaWE6cnRjX3Zw
OF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnB0cl91dGls
IiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzIiwKKyAgXQorfQorCitydGNfc3RhdGljX2xpYnJhcnkoImNyZWF0
ZV92cDhfdGVtcG9yYWxfbGF5ZXJzIikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICBhbGxv
d19wb2lzb24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0KKyAgc291cmNlcyA9IFsKKyAg
ICAiY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MiLAorICAgICJjcmVhdGVfdnA4X3RlbXBv
cmFsX2xheWVycy5oIiwKKyAgXQorCisgIGRlcHMgPSBbCisgICAgIjp2aWRlb19jb2RlY3NfYXBp
IiwKKyAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9f
Y29kaW5nOnZpZGVvX2NvZGVjX2ludGVyZmFjZSIsCisgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9f
Y29kaW5nOndlYnJ0Y192cDhfdGVtcG9yYWxfbGF5ZXJzIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dy
YXBwZXJzOnN5c3RlbV93cmFwcGVycyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21lbW9yeTptZW1vcnkiLAogICBdCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvT1dORVJTIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9P
V05FUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGE3MGJkZGQzNGQzYjgzNzVmYTExYjRiMzYwNDNmNTE4OWFiNzVh
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS92aWRlb19jb2RlY3MvT1dORVJTCkBAIC0wLDAgKzEsNCBAQAorbWFnamVkQHdl
YnJ0Yy5vcmcKK25pc3NlQHdlYnJ0Yy5vcmcKK3NwcmFuZ0B3ZWJydGMub3JnCiticmFuZHRyQHdl
YnJ0Yy5vcmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2Rl
Y3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaAppbmRleCAxZjhlNzVjOWFlN2Q1MmFk
YTk1ZjMzYmEwZWM1NzI2MTJkMWI2NThiLi5kNTE2MDc3ZDk5OTFiYjE4YWY4YjAyY2Q3ZTZmZWU5
ZTJkNzAwOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVv
X2NvZGVjcy9idWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oCkBAIC0xNCwxMSArMTQsMTMg
QEAKICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVv
X2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBDcmVhdGVzIGEgbmV3IGZhY3RvcnkgdGhh
dCBjYW4gY3JlYXRlIHRoZSBidWlsdC1pbiB0eXBlcyBvZiB2aWRlbyBkZWNvZGVycy4KLXN0ZDo6
dW5pcXVlX3B0cjxWaWRlb0RlY29kZXJGYWN0b3J5PiBDcmVhdGVCdWlsdGluVmlkZW9EZWNvZGVy
RmFjdG9yeSgpOworUlRDX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9y
eT4KK0NyZWF0ZUJ1aWx0aW5WaWRlb0RlY29kZXJGYWN0b3J5KCk7CiAKIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19j
b2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuY2MKaW5kZXggY2EzODliOTllM2I1
NjEyZDkxY2M3YTg1MjA2MGRjODZmZTFkY2I0Yy4uMWQwODI3Y2JjMGM0ZDk5NmY3MTQ5OTE0OTA4
MGJhZTUzYTRkYzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9y
eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmNjCkBAIC0xMyw2ICsx
Myw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5
LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5o
IgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKQEAgLTU5LDcgKzYwLDcg
QEAgY2xhc3MgQnVpbHRpblZpZGVvRW5jb2RlckZhY3RvcnkgOiBwdWJsaWMgVmlkZW9FbmNvZGVy
RmFjdG9yeSB7CiAgICAgaWYgKElzRm9ybWF0U3VwcG9ydGVkKGludGVybmFsX2VuY29kZXJfZmFj
dG9yeV8tPkdldFN1cHBvcnRlZEZvcm1hdHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0KSkgewogICAgICAgaW50ZXJuYWxfZW5jb2RlciA9Ci0gICAgICAgICAgY3JpY2tldDo6
Q29kZWNOYW1lc0VxKGZvcm1hdC5uYW1lLmNfc3RyKCksIGNyaWNrZXQ6OmtWcDhDb2RlY05hbWUp
CisgICAgICAgICAgYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgY3JpY2tldDo6
a1ZwOENvZGVjTmFtZSkKICAgICAgICAgICAgICAgPyBhYnNsOjptYWtlX3VuaXF1ZTxWUDhFbmNv
ZGVyU2ltdWxjYXN0UHJveHk+KAogICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbF9lbmNvZGVy
X2ZhY3RvcnlfLmdldCgpLCBmb3JtYXQpCiAgICAgICAgICAgICAgIDogaW50ZXJuYWxfZW5jb2Rl
cl9mYWN0b3J5Xy0+Q3JlYXRlVmlkZW9FbmNvZGVyKGZvcm1hdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2J1
aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LmgKaW5kZXggNmE2NjE4ZmIzMjcyNGU0YTEzOGJkYTUxZDUxYmY5OWNmNDFjOWU2ZC4u
MmM0NTM3MjA1YzU5NDE4ZjUyYzEwMGYzMDViYWQ0MzY4YzQ2NDJmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9i
dWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNv
ZGVyX2ZhY3RvcnkuaApAQCAtMTQsMTIgKzE0LDE0IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IAogLy8gQ3JlYXRlcyBhIG5ldyBmYWN0b3J5IHRoYXQgY2FuIGNyZWF0ZSB0aGUgYnVpbHQtaW4g
dHlwZXMgb2YgdmlkZW8gZW5jb2RlcnMuCiAvLyBUaGUgZmFjdG9yeSBoYXMgc2ltdWxjYXN0IHN1
cHBvcnQgZm9yIFZQOC4KLXN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXJGYWN0b3J5PiBDcmVh
dGVCdWlsdGluVmlkZW9FbmNvZGVyRmFjdG9yeSgpOworUlRDX0VYUE9SVCBzdGQ6OnVuaXF1ZV9w
dHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4KK0NyZWF0ZUJ1aWx0aW5WaWRlb0VuY29kZXJGYWN0b3J5
KCk7CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9jcmVhdGVfdnA4
X3RlbXBvcmFsX2xheWVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS92aWRlb19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGQyOTBmMzlmZGQ0NzdlYmEwNWQ0NDk4YTA1YWVmOGNjMDQ1ODI1ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS92aWRlb19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MKQEAgLTAsMCArMSwz
MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNz
L2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgi
CisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBv
cmFsX2xheWVycy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgv
c2NyZWVuc2hhcmVfbGF5ZXJzLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
Y2xvY2suaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK3N0ZDo6dW5pcXVlX3B0cjxWcDhUZW1w
b3JhbExheWVycz4gQ3JlYXRlVnA4VGVtcG9yYWxMYXllcnMoCisgICAgVnA4VGVtcG9yYWxMYXll
cnNUeXBlIHR5cGUsCisgICAgaW50IG51bV90ZW1wb3JhbF9sYXllcnMpIHsKKyAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBWcDhUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBhdHRlcm46Cisg
ICAgICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8RGVmYXVsdFRlbXBvcmFsTGF5ZXJzPihudW1f
dGVtcG9yYWxfbGF5ZXJzKTsKKyAgICBjYXNlIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0JpdHJh
dGVEeW5hbWljOgorICAgICAgLy8gQ29uZmVyZW5jZSBtb2RlIHRlbXBvcmFsIGxheWVyaW5nIGZv
ciBzY3JlZW4gY29udGVudCBpbiBiYXNlIHN0cmVhbS4KKyAgICAgIHJldHVybiBhYnNsOjptYWtl
X3VuaXF1ZTxTY3JlZW5zaGFyZUxheWVycz4obnVtX3RlbXBvcmFsX2xheWVycywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxU
aW1lQ2xvY2soKSk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2Nv
ZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFs
X2xheWVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZjE0YzhlZGEzOWYzNGNlYTVjY2QzZjJkZGZlYTkzYTlk
ZGViMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmgK
QEAgLTAsMCArMSwyNiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBw
cm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX1ZJ
REVPX0NPREVDU19DUkVBVEVfVlA4X1RFTVBPUkFMX0xBWUVSU19IXworI2RlZmluZSBBUElfVklE
RU9fQ09ERUNTX0NSRUFURV9WUDhfVEVNUE9SQUxfTEFZRVJTX0hfCisKKyNpbmNsdWRlIDxtZW1v
cnk+CisKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIK
KworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK3N0ZDo6dW5pcXVlX3B0cjxWcDhUZW1wb3JhbExheWVy
cz4gQ3JlYXRlVnA4VGVtcG9yYWxMYXllcnMoCisgICAgVnA4VGVtcG9yYWxMYXllcnNUeXBlIHR5
cGUsCisgICAgaW50IG51bV90ZW1wb3JhbF9sYXllcnMpOworCit9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCisKKyNlbmRpZiAgLy8gQVBJX1ZJREVPX0NPREVDU19DUkVBVEVfVlA4X1RFTVBPUkFMX0xB
WUVSU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19m
b3JtYXQuaAppbmRleCBjMjViODU3ZmRlN2Y3MDVjMjc0MTQzNWNmMzcwZGQ5OWMzZWUxN2M4Li5l
ZGI3ODE5MWM3NTMxOGZlYzVlYzNiNmMwZTYxYmNjYTZhNDViYWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Nk
cF92aWRlb19mb3JtYXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaApAQCAtMTQsMTEgKzE0
LDEzIEBACiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgInJ0
Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBT
RFAgc3BlY2lmaWNhdGlvbiBmb3IgYSBzaW5nbGUgdmlkZW8gY29kZWMuCiAvLyBOT1RFOiBUaGlz
IGNsYXNzIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQg
bm90aWNlLgotc3RydWN0IFNkcFZpZGVvRm9ybWF0IHsKK3N0cnVjdCBSVENfRVhQT1JUIFNkcFZp
ZGVvRm9ybWF0IHsKICAgdXNpbmcgUGFyYW1ldGVycyA9IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBz
dGQ6OnN0cmluZz47CiAKICAgZXhwbGljaXQgU2RwVmlkZW9Gb3JtYXQoY29uc3Qgc3RkOjpzdHJp
bmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0L0JVSUxELmdu
CmluZGV4IGZhMTkxNjI1YTFhNGMwMjFhNTQ0MmZmOTI0ZmY1ZThlYWQwMzE4MzYuLjZmOWRjYWEy
ZDhhMWRlZTFhNWI3YjU4MjAyZTUxZjdjNTU3MDlkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdGVzdC9CVUlM
RC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dmlkZW9fY29kZWNzL3Rlc3QvQlVJTEQuZ24KQEAgLTIxLDYgKzIxLDcgQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgICAiLi46YnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkiLAog
ICAgICAgIi4uOnJ0Y19zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVycyIsCiAgICAgICAiLi46dmlk
ZW9fY29kZWNzX2FwaSIsCisgICAgICAiLi4vLi46bW9ja192aWRlb19lbmNvZGVyIiwKICAgICAg
ICIuLi8uLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAog
ICAgICAgIi4uLy4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5
IiwKICAgICAgICIuLi8uLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp3ZWJydGNfdnA4IiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlb19jb2RlY3MvdGVzdC9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeV91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19j
b2RlY3MvdGVzdC9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeV91bml0dGVzdC5jYwppbmRl
eCA3Mzk1N2M5OTlmMDRkMzViNjEwMmUwMDdkZTAzMTQxM2E5NjE5Nzg3Li4zMDc1NGQ5YmRiZDFh
MThiOThlM2FlMTlmN2Q2YmJjOGJkMzM5YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rlc3QvYnVpbHRpbl92
aWRlb19lbmNvZGVyX2ZhY3RvcnlfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0L2J1aWx0aW5fdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5X3VuaXR0ZXN0LmNjCkBAIC0yNywxMSArMjcsMTEgQEAgVEVTVChC
dWlsdGluVmlkZW9FbmNvZGVyRmFjdG9yeVRlc3QsIEFubm91bmNlc1ZwOUFjY29yZGluZ1RvQnVp
bGRGbGFncykgewogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0jaWYgZGVmaW5lZChSVENfRElT
QUJMRV9WUDkpCi0gIEVYUEVDVF9GQUxTRShjbGFpbXNfdnA5X3N1cHBvcnQpOwotI2Vsc2UKKyNp
ZiBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogICBFWFBFQ1RfVFJVRShjbGFpbXNfdnA5X3N1cHBv
cnQpOwotI2VuZGlmICAvLyBkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyNlbHNlCisgIEVYUEVD
VF9GQUxTRShjbGFpbXNfdnA5X3N1cHBvcnQpOworI2VuZGlmICAvLyBkZWZpbmVkKFJUQ19FTkFC
TEVfVlA5KQogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rlc3Qv
dmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90
ZXN0L3ZpZGVvX2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlcl91bml0dGVzdC5jYwpp
bmRleCA5OGViZWQyMzA1MTFkODA3NWVlMjU2YmE4MGVkOTdmNWQxZDAyZDViLi5iMzc0ZjNkMWUx
NjM4ZGE3ZjI0OTA2ZjA2ZmE5NDI1MGY5ZGVmOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rlc3QvdmlkZW9f
ZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdGVz
dC92aWRlb19lbmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXJfdW5pdHRlc3QuY2MKQEAg
LTgsMjMgKzgsMjYgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCi0jaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVj
cy92aWRlb19lbmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuaCIKLQogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIuaCIKICNp
bmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlk
ZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRl
b19lbmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuaCIKKyNpbmNsdWRlICJhcGkvdmlk
ZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4LmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fZXJyb3JfY29k
ZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF9y
YXRlX2FsbG9jYXRvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2Zha2VjbG9jay5oIgogI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKKyNp
bmNsdWRlICJ0ZXN0L2dtb2NrLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOworCiBuYW1lc3BhY2UgewogY29u
c3QgaW50IGtXaWR0aCA9IDMyMDsKIGNvbnN0IGludCBrSGVpZ2h0ID0gMjQwOwpAQCAtMzQsNiAr
MzcsMTIgQEAgY29uc3Qgc2l6ZV90IGtNYXhQYXlsb2FkU2l6ZSA9IDgwMDsKIGNvbnN0IGludCBr
RGVmYXVsdE1pblBpeGVsc1BlckZyYW1lID0gMzIwICogMTgwOwogY29uc3QgaW50IGtMb3dUaHJl
c2hvbGQgPSAxMDsKIGNvbnN0IGludCBrSGlnaFRocmVzaG9sZCA9IDIwOworCitWaWRlb0VuY29k
ZXI6OkVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKGJvb2wgdHJ1c3RlZF9yYXRlX2NvbnRyb2xs
ZXIpIHsKKyAgVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBpbmZvOworICBpbmZvLmhhc190cnVz
dGVkX3JhdGVfY29udHJvbGxlciA9IHRydXN0ZWRfcmF0ZV9jb250cm9sbGVyOworICByZXR1cm4g
aW5mbzsKK30KIH0gIC8vIG5hbWVzcGFjZQogCiBjbGFzcyBWaWRlb0VuY29kZXJTb2Z0d2FyZUZh
bGxiYWNrV3JhcHBlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKQEAgLTYyLDkgKzcx
LDcgQEAgY2xhc3MgVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICArK2VuY29kZV9jb3VudF87CiAgICAgICBpZiAo
ZW5jb2RlX2NvbXBsZXRlX2NhbGxiYWNrXyAmJgogICAgICAgICAgIGVuY29kZV9yZXR1cm5fY29k
ZV8gPT0gV0VCUlRDX1ZJREVPX0NPREVDX09LKSB7Ci0gICAgICAgIENvZGVjU3BlY2lmaWNJbmZv
IGluZm87Ci0gICAgICAgIGluZm8uY29kZWNfbmFtZSA9IEltcGxlbWVudGF0aW9uTmFtZSgpOwot
ICAgICAgICBlbmNvZGVfY29tcGxldGVfY2FsbGJhY2tfLT5PbkVuY29kZWRJbWFnZShFbmNvZGVk
SW1hZ2UoKSwgJmluZm8sCisgICAgICAgIGVuY29kZV9jb21wbGV0ZV9jYWxsYmFja18tPk9uRW5j
b2RlZEltYWdlKEVuY29kZWRJbWFnZSgpLCBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgIH0KICAgICAgIHJl
dHVybiBlbmNvZGVfcmV0dXJuX2NvZGVfOwpAQCAtODEsMjYgKzg4LDE5IEBAIGNsYXNzIFZpZGVv
RW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgewogICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKICAgICB9CiAKLSAgICBp
bnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90
IHJ0dCkgb3ZlcnJpZGUgewotICAgICAgKytzZXRfY2hhbm5lbF9wYXJhbWV0ZXJzX2NvdW50XzsK
LSAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Ci0gICAgfQotCiAgICAgaW50MzJf
dCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRl
X2FsbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFt
ZXJhdGUpIG92ZXJyaWRlIHsKICAgICAgICsrc2V0X3JhdGVzX2NvdW50XzsKICAgICAgIHJldHVy
biBXRUJSVENfVklERU9fQ09ERUNfT0s7CiAgICAgfQogCi0gICAgYm9vbCBTdXBwb3J0c05hdGl2
ZUhhbmRsZSgpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICBFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5m
bygpIGNvbnN0IG92ZXJyaWRlIHsKICAgICAgICsrc3VwcG9ydHNfbmF0aXZlX2hhbmRsZV9jb3Vu
dF87Ci0gICAgICByZXR1cm4gc3VwcG9ydHNfbmF0aXZlX2hhbmRsZV87Ci0gICAgfQotCi0gICAg
Y29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ImZha2UtZW5jb2RlciI7IH0KLQotICAgIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIEdl
dFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICAgIHJldHVybiBWaWRlb0Vu
Y29kZXI6OlNjYWxpbmdTZXR0aW5ncyhrTG93VGhyZXNob2xkLCBrSGlnaFRocmVzaG9sZCk7Cisg
ICAgICBFbmNvZGVySW5mbyBpbmZvOworICAgICAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0gU2Nh
bGluZ1NldHRpbmdzKGtMb3dUaHJlc2hvbGQsIGtIaWdoVGhyZXNob2xkKTsKKyAgICAgIGluZm8u
c3VwcG9ydHNfbmF0aXZlX2hhbmRsZSA9IHN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfOworICAgICAg
aW5mby5pbXBsZW1lbnRhdGlvbl9uYW1lID0gImZha2UtZW5jb2RlciI7CisgICAgICByZXR1cm4g
aW5mbzsKICAgICB9CiAKICAgICBpbnQgaW5pdF9lbmNvZGVfY291bnRfID0gMDsKQEAgLTEwOSw3
ICsxMDksNiBAQCBjbGFzcyBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlclRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICBpbnQgZW5jb2RlX2NvdW50XyA9IDA7CiAg
ICAgRW5jb2RlZEltYWdlQ2FsbGJhY2sqIGVuY29kZV9jb21wbGV0ZV9jYWxsYmFja18gPSBudWxs
cHRyOwogICAgIGludCByZWxlYXNlX2NvdW50XyA9IDA7Ci0gICAgaW50IHNldF9jaGFubmVsX3Bh
cmFtZXRlcnNfY291bnRfID0gMDsKICAgICBpbnQgc2V0X3JhdGVzX2NvdW50XyA9IDA7CiAgICAg
bXV0YWJsZSBpbnQgc3VwcG9ydHNfbmF0aXZlX2hhbmRsZV9jb3VudF8gPSAwOwogICAgIGJvb2wg
c3VwcG9ydHNfbmF0aXZlX2hhbmRsZV8gPSBmYWxzZTsKQEAgLTEyMiwxMSArMTIxLDkgQEAgY2xh
c3MgVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVj
aWZpY19pbmZvLAogICAgICAgICBjb25zdCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVu
dGF0aW9uKSBvdmVycmlkZSB7CiAgICAgICArK2NhbGxiYWNrX2NvdW50XzsKLSAgICAgIGxhc3Rf
Y29kZWNfbmFtZV8gPSBjb2RlY19zcGVjaWZpY19pbmZvLT5jb2RlY19uYW1lOwogICAgICAgcmV0
dXJuIFJlc3VsdChSZXN1bHQ6Ok9LLCBjYWxsYmFja19jb3VudF8pOwogICAgIH0KICAgICBpbnQg
Y2FsbGJhY2tfY291bnRfID0gMDsKLSAgICBzdGQ6OnN0cmluZyBsYXN0X2NvZGVjX25hbWVfOwog
ICB9OwogCiAgIHZvaWQgVXRpbGl6ZUZhbGxiYWNrRW5jb2RlcigpOwpAQCAtMTM0LDcgKzEzMSw4
IEBAIGNsYXNzIFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewogICB2b2lkIEVuY29kZUZyYW1lKCk7CiAgIHZvaWQgRW5jb2Rl
RnJhbWUoaW50IGV4cGVjdGVkX3JldCk7CiAgIHZvaWQgQ2hlY2tMYXN0RW5jb2Rlck5hbWUoY29u
c3QgY2hhciogZXhwZWN0ZWRfbmFtZSkgewotICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZF9uYW1l
LCBjYWxsYmFja18ubGFzdF9jb2RlY19uYW1lXy5jX3N0cigpKTsKKyAgICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRfbmFtZSwKKyAgICAgICAgICAgICAgZmFsbGJhY2tfd3JhcHBlcl8tPkdldEVuY29kZXJJ
bmZvKCkuaW1wbGVtZW50YXRpb25fbmFtZSk7CiAgIH0KIAogICB0ZXN0OjpTY29wZWRGaWVsZFRy
aWFscyBvdmVycmlkZV9maWVsZF90cmlhbHNfOwpAQCAtMjcxLDE1ICsyNjksNiBAQCBURVNUX0Yo
VmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0LAogICBFWFBFQ1RfRVEoV0VC
UlRDX1ZJREVPX0NPREVDX09LLCBmYWxsYmFja193cmFwcGVyXy0+UmVsZWFzZSgpKTsKIH0KIAot
VEVTVF9GKFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCwKLSAgICAgICBT
ZXRDaGFubmVsUGFyYW1ldGVyc0ZvcndhcmRlZER1cmluZ0ZhbGxiYWNrKSB7Ci0gIFV0aWxpemVG
YWxsYmFja0VuY29kZXIoKTsKLSAgRVhQRUNUX0VRKDAsIGZha2VfZW5jb2Rlcl8tPnNldF9jaGFu
bmVsX3BhcmFtZXRlcnNfY291bnRfKTsKLSAgZmFsbGJhY2tfd3JhcHBlcl8tPlNldENoYW5uZWxQ
YXJhbWV0ZXJzKDEsIDEpOwotICBFWFBFQ1RfRVEoMSwgZmFrZV9lbmNvZGVyXy0+c2V0X2NoYW5u
ZWxfcGFyYW1ldGVyc19jb3VudF8pOwotICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09L
LCBmYWxsYmFja193cmFwcGVyXy0+UmVsZWFzZSgpKTsKLX0KLQogVEVTVF9GKFZpZGVvRW5jb2Rl
clNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCwKICAgICAgICBTZXRSYXRlc0ZvcndhcmRlZER1
cmluZ0ZhbGxiYWNrKSB7CiAgIFV0aWxpemVGYWxsYmFja0VuY29kZXIoKTsKQEAgLTI5MSwxNSAr
MjgwLDE5IEBAIFRFU1RfRihWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlclRlc3Qs
CiAKIFRFU1RfRihWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlclRlc3QsCiAgICAg
ICAgU3VwcG9ydHNOYXRpdmVIYW5kbGVGb3J3YXJkZWRXaXRob3V0RmFsbGJhY2spIHsKLSAgZmFs
bGJhY2tfd3JhcHBlcl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCk7CisgIGZhbGxiYWNrX3dyYXBw
ZXJfLT5HZXRFbmNvZGVySW5mbygpOwogICBFWFBFQ1RfRVEoMSwgZmFrZV9lbmNvZGVyXy0+c3Vw
cG9ydHNfbmF0aXZlX2hhbmRsZV9jb3VudF8pOwogfQogCiBURVNUX0YoVmlkZW9FbmNvZGVyU29m
dHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0LAogICAgICAgIFN1cHBvcnRzTmF0aXZlSGFuZGxlTm90
Rm9yd2FyZGVkRHVyaW5nRmFsbGJhY2spIHsKKyAgLy8gRmFrZSBlbmNvZGVyIHNpZ25hbHMgc3Vw
cG9ydCBmb3IgbmF0aXZlIGhhbmRsZSwgZGVmYXVsdCAobGlidnB4KSBkb2VzIG5vdC4KKyAgZmFr
ZV9lbmNvZGVyXy0+c3VwcG9ydHNfbmF0aXZlX2hhbmRsZV8gPSB0cnVlOworICBFWFBFQ1RfVFJV
RShmYWxsYmFja193cmFwcGVyXy0+R2V0RW5jb2RlckluZm8oKS5zdXBwb3J0c19uYXRpdmVfaGFu
ZGxlKTsKICAgVXRpbGl6ZUZhbGxiYWNrRW5jb2RlcigpOwotICBmYWxsYmFja193cmFwcGVyXy0+
U3VwcG9ydHNOYXRpdmVIYW5kbGUoKTsKLSAgRVhQRUNUX0VRKDAsIGZha2VfZW5jb2Rlcl8tPnN1
cHBvcnRzX25hdGl2ZV9oYW5kbGVfY291bnRfKTsKKyAgRVhQRUNUX0ZBTFNFKGZhbGxiYWNrX3dy
YXBwZXJfLT5HZXRFbmNvZGVySW5mbygpLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUpOworICAvLyBC
b3RoIHRpbWVzLCBib3RoIGVuY29kZXJzIGFyZSBxdWVyaWVkLgorICBFWFBFQ1RfRVEoMiwgZmFr
ZV9lbmNvZGVyXy0+c3VwcG9ydHNfbmF0aXZlX2hhbmRsZV9jb3VudF8pOwogICBFWFBFQ1RfRVEo
V0VCUlRDX1ZJREVPX0NPREVDX09LLCBmYWxsYmFja193cmFwcGVyXy0+UmVsZWFzZSgpKTsKIH0K
IApAQCAtNDg5LDcgKzQ4Miw3IEBAIFRFU1RfRihGb3JjZWRGYWxsYmFja1Rlc3REaXNhYmxlZCwg
R2V0U2NhbGVTZXR0aW5ncykgewogICBFbmNvZGVGcmFtZUFuZFZlcmlmeUxhc3ROYW1lKCJmYWtl
LWVuY29kZXIiKTsKIAogICAvLyBEZWZhdWx0IG1pbiBwaXhlbHMgcGVyIGZyYW1lIHNob3VsZCBi
ZSB1c2VkLgotICBjb25zdCBhdXRvIHNldHRpbmdzID0gZmFsbGJhY2tfd3JhcHBlcl8tPkdldFNj
YWxpbmdTZXR0aW5ncygpOworICBjb25zdCBhdXRvIHNldHRpbmdzID0gZmFsbGJhY2tfd3JhcHBl
cl8tPkdldEVuY29kZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5nczsKICAgRVhQRUNUX1RSVUUoc2V0
dGluZ3MudGhyZXNob2xkcy5oYXNfdmFsdWUoKSk7CiAgIEVYUEVDVF9FUShrRGVmYXVsdE1pblBp
eGVsc1BlckZyYW1lLCBzZXR0aW5ncy5taW5fcGl4ZWxzX3Blcl9mcmFtZSk7CiB9CkBAIC01MDAs
NyArNDkzLDcgQEAgVEVTVF9GKEZvcmNlZEZhbGxiYWNrVGVzdEVuYWJsZWQsIEdldFNjYWxlU2V0
dGluZ3NXaXRoTm9GYWxsYmFjaykgewogICBFbmNvZGVGcmFtZUFuZFZlcmlmeUxhc3ROYW1lKCJm
YWtlLWVuY29kZXIiKTsKIAogICAvLyBDb25maWd1cmVkIG1pbiBwaXhlbHMgcGVyIGZyYW1lIHNo
b3VsZCBiZSB1c2VkLgotICBjb25zdCBhdXRvIHNldHRpbmdzID0gZmFsbGJhY2tfd3JhcHBlcl8t
PkdldFNjYWxpbmdTZXR0aW5ncygpOworICBjb25zdCBhdXRvIHNldHRpbmdzID0gZmFsbGJhY2tf
d3JhcHBlcl8tPkdldEVuY29kZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5nczsKICAgRVhQRUNUX0VR
KGtNaW5QaXhlbHNQZXJGcmFtZSwgc2V0dGluZ3MubWluX3BpeGVsc19wZXJfZnJhbWUpOwogICBB
U1NFUlRfVFJVRShzZXR0aW5ncy50aHJlc2hvbGRzKTsKICAgRVhQRUNUX0VRKGtMb3dUaHJlc2hv
bGQsIHNldHRpbmdzLnRocmVzaG9sZHMtPmxvdyk7CkBAIC01MTMsNyArNTA2LDcgQEAgVEVTVF9G
KEZvcmNlZEZhbGxiYWNrVGVzdEVuYWJsZWQsIEdldFNjYWxlU2V0dGluZ3NXaXRoRmFsbGJhY2sp
IHsKICAgRW5jb2RlRnJhbWVBbmRWZXJpZnlMYXN0TmFtZSgibGlidnB4Iik7CiAKICAgLy8gQ29u
ZmlndXJlZCBtaW4gcGl4ZWxzIHBlciBmcmFtZSBzaG91bGQgYmUgdXNlZC4KLSAgY29uc3QgYXV0
byBzZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKKyAg
Y29uc3QgYXV0byBzZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRFbmNvZGVySW5mbygp
LnNjYWxpbmdfc2V0dGluZ3M7CiAgIEVYUEVDVF9UUlVFKHNldHRpbmdzLnRocmVzaG9sZHMuaGFz
X3ZhbHVlKCkpOwogICBFWFBFQ1RfRVEoa01pblBpeGVsc1BlckZyYW1lLCBzZXR0aW5ncy5taW5f
cGl4ZWxzX3Blcl9mcmFtZSk7CiB9CkBAIC01MjUsOCArNTE4LDc3IEBAIFRFU1RfRihGb3JjZWRG
YWxsYmFja1Rlc3RFbmFibGVkLCBTY2FsaW5nRGlzYWJsZWRJZlJlc2l6ZU9mZikgewogICBFbmNv
ZGVGcmFtZUFuZFZlcmlmeUxhc3ROYW1lKCJsaWJ2cHgiKTsKIAogICAvLyBTaG91bGQgYmUgZGlz
YWJsZWQgZm9yIGF1dG9tYXRpYyByZXNpemUgb2ZmLgotICBjb25zdCBhdXRvIHNldHRpbmdzID0g
ZmFsbGJhY2tfd3JhcHBlcl8tPkdldFNjYWxpbmdTZXR0aW5ncygpOworICBjb25zdCBhdXRvIHNl
dHRpbmdzID0gZmFsbGJhY2tfd3JhcHBlcl8tPkdldEVuY29kZXJJbmZvKCkuc2NhbGluZ19zZXR0
aW5nczsKICAgRVhQRUNUX0ZBTFNFKHNldHRpbmdzLnRocmVzaG9sZHMuaGFzX3ZhbHVlKCkpOwog
fQogCitURVNUKFNvZnR3YXJlRmFsbGJhY2tFbmNvZGVyVGVzdCwgQm90aFJhdGVDb250cm9sbGVy
c05vdFRydXN0ZWQpIHsKKyAgYXV0byogc3dfZW5jb2RlciA9IG5ldyB0ZXN0aW5nOjpOaWNlTW9j
azxNb2NrVmlkZW9FbmNvZGVyPigpOworICBhdXRvKiBod19lbmNvZGVyID0gbmV3IHRlc3Rpbmc6
Ok5pY2VNb2NrPE1vY2tWaWRlb0VuY29kZXI+KCk7CisKKyAgRVhQRUNUX0NBTEwoKnN3X2VuY29k
ZXIsIEdldEVuY29kZXJJbmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEdldEVu
Y29kZXJJbmZvKGZhbHNlKSkpOworICBFWFBFQ1RfQ0FMTCgqaHdfZW5jb2RlciwgR2V0RW5jb2Rl
ckluZm8oKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oR2V0RW5jb2RlckluZm8oZmFs
c2UpKSk7CisKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gd3JhcHBlciA9CisgICAg
ICBDcmVhdGVWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcigKKyAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPihzd19lbmNvZGVyKSwKKyAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPihod19lbmNvZGVyKSk7CisgIEVYUEVDVF9GQUxTRSh3
cmFwcGVyLT5HZXRFbmNvZGVySW5mbygpLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcik7Cit9
CisKK1RFU1QoU29mdHdhcmVGYWxsYmFja0VuY29kZXJUZXN0LCBTd1JhdGVDb250cm9sbGVyVHJ1
c3RlZCkgeworICBhdXRvKiBzd19lbmNvZGVyID0gbmV3IHRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tW
aWRlb0VuY29kZXI+KCk7CisgIGF1dG8qIGh3X2VuY29kZXIgPSBuZXcgdGVzdGluZzo6TmljZU1v
Y2s8TW9ja1ZpZGVvRW5jb2Rlcj4oKTsKKyAgRVhQRUNUX0NBTEwoKnN3X2VuY29kZXIsIEdldEVu
Y29kZXJJbmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEdldEVuY29kZXJJbmZv
KHRydWUpKSk7CisgIEVYUEVDVF9DQUxMKCpod19lbmNvZGVyLCBHZXRFbmNvZGVySW5mbygpKQor
ICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihHZXRFbmNvZGVySW5mbyhmYWxzZSkpKTsKKwor
ICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiB3cmFwcGVyID0KKyAgICAgIENyZWF0ZVZp
ZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyKAorICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxWaWRlb0VuY29kZXI+KHN3X2VuY29kZXIpLAorICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb0VuY29kZXI+KGh3X2VuY29kZXIpKTsKKyAgRVhQRUNUX0ZBTFNFKHdyYXBwZXItPkdl
dEVuY29kZXJJbmZvKCkuaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKTsKK30KKworVEVTVChT
b2Z0d2FyZUZhbGxiYWNrRW5jb2RlclRlc3QsIEh3UmF0ZUNvbnRyb2xsZXJUcnVzdGVkKSB7Cisg
IGF1dG8qIHN3X2VuY29kZXIgPSBuZXcgdGVzdGluZzo6TmljZU1vY2s8TW9ja1ZpZGVvRW5jb2Rl
cj4oKTsKKyAgYXV0byogaHdfZW5jb2RlciA9IG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrVmlk
ZW9FbmNvZGVyPigpOworICBFWFBFQ1RfQ0FMTCgqc3dfZW5jb2RlciwgR2V0RW5jb2RlckluZm8o
KSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oR2V0RW5jb2RlckluZm8oZmFsc2UpKSk7
CisgIEVYUEVDVF9DQUxMKCpod19lbmNvZGVyLCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldp
bGxSZXBlYXRlZGx5KFJldHVybihHZXRFbmNvZGVySW5mbyh0cnVlKSkpOworCisgIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb0VuY29kZXI+IHdyYXBwZXIgPQorICAgICAgQ3JlYXRlVmlkZW9FbmNvZGVy
U29mdHdhcmVGYWxsYmFja1dyYXBwZXIoCisgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
RW5jb2Rlcj4oc3dfZW5jb2RlciksCisgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5j
b2Rlcj4oaHdfZW5jb2RlcikpOworICBFWFBFQ1RfVFJVRSh3cmFwcGVyLT5HZXRFbmNvZGVySW5m
bygpLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcik7CisKKyAgLy8gVHJpZ2dlciBmYWxsYmFj
ayB0byBzb2Z0d2FyZS4KKyAgRVhQRUNUX0NBTEwoKmh3X2VuY29kZXIsIEVuY29kZSkKKyAgICAg
IC5XaWxsT25jZShSZXR1cm4oV0VCUlRDX1ZJREVPX0NPREVDX0ZBTExCQUNLX1NPRlRXQVJFKSk7
CisgIFZpZGVvRnJhbWUgZnJhbWUgPSBWaWRlb0ZyYW1lOjpCdWlsZGVyKCkuYnVpbGQoKTsKKyAg
d3JhcHBlci0+RW5jb2RlKGZyYW1lLCBudWxscHRyLCBudWxscHRyKTsKKworICBFWFBFQ1RfRkFM
U0Uod3JhcHBlci0+R2V0RW5jb2RlckluZm8oKS5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIp
OworfQorCitURVNUKFNvZnR3YXJlRmFsbGJhY2tFbmNvZGVyVGVzdCwgQm90aFJhdGVDb250cm9s
bGVyc1RydXN0ZWQpIHsKKyAgYXV0byogc3dfZW5jb2RlciA9IG5ldyB0ZXN0aW5nOjpOaWNlTW9j
azxNb2NrVmlkZW9FbmNvZGVyPigpOworICBhdXRvKiBod19lbmNvZGVyID0gbmV3IHRlc3Rpbmc6
Ok5pY2VNb2NrPE1vY2tWaWRlb0VuY29kZXI+KCk7CisgIEVYUEVDVF9DQUxMKCpzd19lbmNvZGVy
LCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihHZXRFbmNv
ZGVySW5mbyh0cnVlKSkpOworICBFWFBFQ1RfQ0FMTCgqaHdfZW5jb2RlciwgR2V0RW5jb2Rlcklu
Zm8oKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oR2V0RW5jb2RlckluZm8odHJ1ZSkp
KTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiB3cmFwcGVyID0KKyAgICAgIENy
ZWF0ZVZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyKAorICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KHN3X2VuY29kZXIpLAorICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb0VuY29kZXI+KGh3X2VuY29kZXIpKTsKKyAgRVhQRUNUX1RSVUUod3JhcHBl
ci0+R2V0RW5jb2RlckluZm8oKS5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIpOworfQorCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2NvZGVjLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92
aWRlb19jb2RlYy5jYwppbmRleCBkMzY1MzViMzEwMDhkMzZkZWMzNDBjYjU1NTNmNzVkOWY4OTg5
ZDJlLi4wODE5YzgyMmEwNmRlNzk5YzEzZDdhNWQyZDgyMDZmNDcwZWQzNzA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29k
ZWNzL3ZpZGVvX2NvZGVjLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fY29kZWMuY2MKQEAgLTExLDEzICsxMSwx
MCBAQAogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fY29kZWMuaCIKIAogI2luY2x1
ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxsaW1pdHM+CiAj
aW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogCisjaW5jbHVkZSAiYWJz
bC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3N0cmluZ3V0aWxzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMTE4LDEwICsxMTUsNiBA
QCBzdGF0aWMgY29uc3QgY2hhcioga1BheWxvYWROYW1lSTQyMCA9ICJJNDIwIjsKIHN0YXRpYyBj
b25zdCBjaGFyKiBrUGF5bG9hZE5hbWVHZW5lcmljID0gIkdlbmVyaWMiOwogc3RhdGljIGNvbnN0
IGNoYXIqIGtQYXlsb2FkTmFtZU11bHRpcGxleCA9ICJNdWx0aXBsZXgiOwogCi1zdGF0aWMgYm9v
bCBDb2RlY05hbWVzRXEoY29uc3QgY2hhciogbmFtZTEsIGNvbnN0IGNoYXIqIG5hbWUyKSB7Ci0g
IHJldHVybiBfc3RyaWNtcChuYW1lMSwgbmFtZTIpID09IDA7Ci19Ci0KIGNvbnN0IGNoYXIqIENv
ZGVjVHlwZVRvUGF5bG9hZFN0cmluZyhWaWRlb0NvZGVjVHlwZSB0eXBlKSB7CiAgIHN3aXRjaCAo
dHlwZSkgewogICAgIGNhc2Uga1ZpZGVvQ29kZWNWUDg6CkBAIC0xMzksMTUgKzEzMiwxNSBAQCBj
b25zdCBjaGFyKiBDb2RlY1R5cGVUb1BheWxvYWRTdHJpbmcoVmlkZW9Db2RlY1R5cGUgdHlwZSkg
ewogfQogCiBWaWRlb0NvZGVjVHlwZSBQYXlsb2FkU3RyaW5nVG9Db2RlY1R5cGUoY29uc3Qgc3Rk
OjpzdHJpbmcmIG5hbWUpIHsKLSAgaWYgKENvZGVjTmFtZXNFcShuYW1lLmNfc3RyKCksIGtQYXls
b2FkTmFtZVZwOCkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUsIGtQYXlsb2Fk
TmFtZVZwOCkpCiAgICAgcmV0dXJuIGtWaWRlb0NvZGVjVlA4OwotICBpZiAoQ29kZWNOYW1lc0Vx
KG5hbWUuY19zdHIoKSwga1BheWxvYWROYW1lVnA5KSkKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9y
ZUNhc2UobmFtZSwga1BheWxvYWROYW1lVnA5KSkKICAgICByZXR1cm4ga1ZpZGVvQ29kZWNWUDk7
Ci0gIGlmIChDb2RlY05hbWVzRXEobmFtZS5jX3N0cigpLCBrUGF5bG9hZE5hbWVIMjY0KSkKKyAg
aWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwga1BheWxvYWROYW1lSDI2NCkpCiAgICAg
cmV0dXJuIGtWaWRlb0NvZGVjSDI2NDsKLSAgaWYgKENvZGVjTmFtZXNFcShuYW1lLmNfc3RyKCks
IGtQYXlsb2FkTmFtZUk0MjApKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lLCBr
UGF5bG9hZE5hbWVJNDIwKSkKICAgICByZXR1cm4ga1ZpZGVvQ29kZWNJNDIwOwotICBpZiAoQ29k
ZWNOYW1lc0VxKG5hbWUuY19zdHIoKSwga1BheWxvYWROYW1lTXVsdGlwbGV4KSkKKyAgaWYgKGFi
c2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwga1BheWxvYWROYW1lTXVsdGlwbGV4KSkKICAgICBy
ZXR1cm4ga1ZpZGVvQ29kZWNNdWx0aXBsZXg7CiAgIHJldHVybiBrVmlkZW9Db2RlY0dlbmVyaWM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2NvZGVjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2NvZGVjLmgKaW5kZXgg
NWI0ZWJiMjVjMDc0NjA0YmJlZWNlODEzYmRkNGY2YjY2MjFjNzY2MC4uOWZiYTYwYzRlODcyNzEw
ZmNjODU3OWVmMjQwOTRmZWJkYmI0NzU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19jb2RlYy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19j
b2RlY3MvdmlkZW9fY29kZWMuaApAQCAtMTEsOSArMTEsMTQgQEAKICNpZm5kZWYgQVBJX1ZJREVP
X0NPREVDU19WSURFT19DT0RFQ19IXwogI2RlZmluZSBBUElfVklERU9fQ09ERUNTX1ZJREVPX0NP
REVDX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0
aW9uLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvZGVjX3R5cGUuaCIKICNpbmNsdWRl
ICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgInJ0
Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC04
Niw4ICs5MSw4IEBAIHN0cnVjdCBWaWRlb0NvZGVjSDI2NCB7CiB9OwogCiAvLyBUcmFuc2xhdGVz
IGZyb20gbmFtZSBvZiBjb2RlYyB0byBjb2RlYyB0eXBlIGFuZCB2aWNlIHZlcnNhLgotY29uc3Qg
Y2hhciogQ29kZWNUeXBlVG9QYXlsb2FkU3RyaW5nKFZpZGVvQ29kZWNUeXBlIHR5cGUpOwotVmlk
ZW9Db2RlY1R5cGUgUGF5bG9hZFN0cmluZ1RvQ29kZWNUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiBu
YW1lKTsKK1JUQ19FWFBPUlQgY29uc3QgY2hhciogQ29kZWNUeXBlVG9QYXlsb2FkU3RyaW5nKFZp
ZGVvQ29kZWNUeXBlIHR5cGUpOworUlRDX0VYUE9SVCBWaWRlb0NvZGVjVHlwZSBQYXlsb2FkU3Ry
aW5nVG9Db2RlY1R5cGUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwogCiB1bmlvbiBWaWRlb0Nv
ZGVjVW5pb24gewogICBWaWRlb0NvZGVjVlA4IFZQODsKQEAgLTk4LDcgKzEwMyw3IEBAIHVuaW9u
IFZpZGVvQ29kZWNVbmlvbiB7CiBlbnVtIGNsYXNzIFZpZGVvQ29kZWNNb2RlIHsga1JlYWx0aW1l
VmlkZW8sIGtTY3JlZW5zaGFyaW5nIH07CiAKIC8vIENvbW1vbiB2aWRlbyBjb2RlYyBwcm9wZXJ0
aWVzCi1jbGFzcyBWaWRlb0NvZGVjIHsKK2NsYXNzIFJUQ19FWFBPUlQgVmlkZW9Db2RlYyB7CiAg
cHVibGljOgogICBWaWRlb0NvZGVjKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2Nv
ZGVjcy92aWRlb19kZWNvZGVyLmgKaW5kZXggNzk5NWZjY2IwNTYzZGE2ZTEwZTNjZTk2OWE1OWQy
ZWNlZTY2Nzk5MS4uMzZjZjgwZmU4NGM3NjNkYjI1ZWYyYWU3Mzk4YjI0MDQyMTYzNDgwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyLmgKQEAgLTE1
LDkgKzE1LDEwIEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2lu
Y2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3Zp
ZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19jb2RlYy5oIgot
I2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAg
LTI1LDcgKzI2LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBzdHJ1Y3QgQ29kZWNTcGVjaWZpY0lu
Zm87CiBjbGFzcyBWaWRlb0NvZGVjOwogCi1jbGFzcyBEZWNvZGVkSW1hZ2VDYWxsYmFjayB7Citj
bGFzcyBSVENfRVhQT1JUIERlY29kZWRJbWFnZUNhbGxiYWNrIHsKICBwdWJsaWM6CiAgIHZpcnR1
YWwgfkRlY29kZWRJbWFnZUNhbGxiYWNrKCkge30KIApAQCAtNDcsNyArNDgsNyBAQCBjbGFzcyBE
ZWNvZGVkSW1hZ2VDYWxsYmFjayB7CiAgIHZpcnR1YWwgaW50MzJfdCBSZWNlaXZlZERlY29kZWRG
cmFtZShjb25zdCB1aW50NjRfdCBwaWN0dXJlSWQpOwogfTsKIAotY2xhc3MgVmlkZW9EZWNvZGVy
IHsKK2NsYXNzIFJUQ19FWFBPUlQgVmlkZW9EZWNvZGVyIHsKICBwdWJsaWM6CiAgIHZpcnR1YWwg
flZpZGVvRGVjb2RlcigpIHt9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3Mv
dmlkZW9fZW5jb2Rlci5jYwppbmRleCAwMDg3ODBlMzhjNGMxOWUyMDA3ZGYzNDQ0NDFkMWI3YWI0
ZjE1YzY0Li4xMzU2ODdjOTcwYjdiNmRiODkxYmQyNmY4ODRjMWE5NjgyZWIyNDczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9f
Y29kZWNzL3ZpZGVvX2VuY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmNjCkBAIC0xMCw2
ICsxMCwxMCBAQAogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgi
CiAKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgor
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gVE9ETyhtZmxvZG1hbik6IEFkZCBkZWZhdWx0IGNv
bXBsZXhpdHkgZm9yIFZQOSBhbmQgVlA5LgpAQCAtNzksNiArODMsMTQgQEAgVmlkZW9FbmNvZGVy
OjpTY2FsaW5nU2V0dGluZ3M6On5TY2FsaW5nU2V0dGluZ3MoKSB7fQogY29uc3RleHByIFZpZGVv
RW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjpLT2ZmCiAgICAgVmlkZW9FbmNvZGVyOjpTY2FsaW5n
U2V0dGluZ3M6OmtPZmY7CiAKK1ZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm86OkVuY29kZXJJbmZv
KCkKKyAgICA6IHNjYWxpbmdfc2V0dGluZ3MoVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6
OmtPZmYpLAorICAgICAgc3VwcG9ydHNfbmF0aXZlX2hhbmRsZShmYWxzZSksCisgICAgICBpbXBs
ZW1lbnRhdGlvbl9uYW1lKCJ1bmtub3duIiksCisgICAgICBoYXNfdHJ1c3RlZF9yYXRlX2NvbnRy
b2xsZXIoZmFsc2UpIHt9CisKK1ZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm86On5FbmNvZGVySW5m
bygpID0gZGVmYXVsdDsKKwogaW50MzJfdCBWaWRlb0VuY29kZXI6OlNldFJhdGVzKHVpbnQzMl90
IGJpdHJhdGUsIHVpbnQzMl90IGZyYW1lcmF0ZSkgewogICBSVENfTk9UUkVBQ0hFRCgpIDw8ICJT
ZXRSYXRlKHVpbnQzMl90LCB1aW50MzJfdCkgaXMgZGVwcmVjYXRlZC4iOwogICByZXR1cm4gLTE7
CkBAIC0xMDEsNCArMTEzLDE0IEBAIGJvb2wgVmlkZW9FbmNvZGVyOjpTdXBwb3J0c05hdGl2ZUhh
bmRsZSgpIGNvbnN0IHsKIGNvbnN0IGNoYXIqIFZpZGVvRW5jb2Rlcjo6SW1wbGVtZW50YXRpb25O
YW1lKCkgY29uc3QgewogICByZXR1cm4gInVua25vd24iOwogfQorCisvLyBUT0RPKHdlYnJ0Yzo5
NzIyKTogUmVtb3ZlIGFuZCBtYWtlIHB1cmUgdmlydHVhbCB3aGVuIHRoZSB0aHJlZSBsZWdhY3kK
Ky8vIG1ldGhvZHMgY2FsbGVkIGhlcmUgYXJlIGdvbmUuCitWaWRlb0VuY29kZXI6OkVuY29kZXJJ
bmZvIFZpZGVvRW5jb2Rlcjo6R2V0RW5jb2RlckluZm8oKSBjb25zdCB7CisgIEVuY29kZXJJbmZv
IGluZm87CisgIGluZm8uc2NhbGluZ19zZXR0aW5ncyA9IEdldFNjYWxpbmdTZXR0aW5ncygpOwor
ICBpbmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBTdXBwb3J0c05hdGl2ZUhhbmRsZSgpOwor
ICBpbmZvLmltcGxlbWVudGF0aW9uX25hbWUgPSBJbXBsZW1lbnRhdGlvbk5hbWUoKTsKKyAgcmV0
dXJuIGluZm87Cit9CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVv
X2VuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oCmluZGV4IDY4ZDliNDQ1NTgwZjM4ODI1M2Qy
NTY5MTVmOWI4Zjk2OTY0YTFkYmQuLmU3ZGViN2RiYjljZGIyNjcwZTA0MjRjMmJhMmQ4YTIwZDIx
MjkyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rl
ci5oCkBAIC0xNiwxMSArMTYsMTIgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2Uu
aCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVj
cy92aWRlb19jb2RlYy5oIgotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2Zy
YW1lLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
c3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTczLDcgKzc0
LDcgQEAgY2xhc3MgRW5jb2RlZEltYWdlQ2FsbGJhY2sgewogICB2aXJ0dWFsIHZvaWQgT25Ecm9w
cGVkRnJhbWUoRHJvcFJlYXNvbiByZWFzb24pIHt9CiB9OwogCi1jbGFzcyBWaWRlb0VuY29kZXIg
eworY2xhc3MgUlRDX0VYUE9SVCBWaWRlb0VuY29kZXIgewogIHB1YmxpYzoKICAgc3RydWN0IFFw
VGhyZXNob2xkcyB7CiAgICAgUXBUaHJlc2hvbGRzKGludCBsLCBpbnQgaCkgOiBsb3cobCksIGhp
Z2goaCkge30KQEAgLTEwMiwxMyArMTAzLDEzIEBAIGNsYXNzIFZpZGVvRW5jb2RlciB7CiAgICAg
U2NhbGluZ1NldHRpbmdzKEtPZmYpOyAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCiAgICAg
flNjYWxpbmdTZXR0aW5ncygpOwogCi0gICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8UXBUaHJlc2hv
bGRzPiB0aHJlc2hvbGRzOworICAgIGFic2w6Om9wdGlvbmFsPFFwVGhyZXNob2xkcz4gdGhyZXNo
b2xkczsKIAogICAgIC8vIFdlIHdpbGwgbmV2ZXIgYXNrIGZvciBhIHJlc29sdXRpb24gbG93ZXIg
dGhhbiB0aGlzLgogICAgIC8vIFRPRE8oa3RoZWxnYXNvbik6IExvd2VyIHRoaXMgbGltaXQgd2hl
biBiZXR0ZXIgdGVzdGluZwogICAgIC8vIG9uIE1lZGlhQ29kZWMgYW5kIGZhbGxiYWNrIGltcGxl
bWVudGF0aW9ucyBhcmUgaW4gcGxhY2UuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1
bS5vcmcvcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD03MjA2Ci0gICAgY29uc3QgaW50IG1pbl9w
aXhlbHNfcGVyX2ZyYW1lID0gMzIwICogMTgwOworICAgIGludCBtaW5fcGl4ZWxzX3Blcl9mcmFt
ZSA9IDMyMCAqIDE4MDsKIAogICAgcHJpdmF0ZToKICAgICAvLyBQcml2YXRlIGNvbnN0cnVjdG9y
OyB0byBnZXQgYW4gb2JqZWN0IHdpdGhvdXQgdGhyZXNob2xkcywgdXNlCkBAIC0xMTYsNiArMTE3
LDM2IEBAIGNsYXNzIFZpZGVvRW5jb2RlciB7CiAgICAgU2NhbGluZ1NldHRpbmdzKCk7CiAgIH07
CiAKKyAgLy8gU3RydWN0IGNvbnRhaW5pbmcgbWV0YWRhdGEgYWJvdXQgdGhlIGVuY29kZXIgaW1w
bGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlLgorICBzdHJ1Y3QgRW5jb2RlckluZm8geworICAgIEVu
Y29kZXJJbmZvKCk7CisgICAgfkVuY29kZXJJbmZvKCk7CisKKyAgICAvLyBBbnkgZW5jb2RlciBp
bXBsZW1lbnRhdGlvbiB3aXNoaW5nIHRvIHVzZSB0aGUgV2ViUlRDIHByb3ZpZGVkCisgICAgLy8g
cXVhbGl0eSBzY2FsZXIgbXVzdCBwb3B1bGF0ZSB0aGlzIGZpZWxkLgorICAgIFNjYWxpbmdTZXR0
aW5ncyBzY2FsaW5nX3NldHRpbmdzOworCisgICAgLy8gSWYgdHJ1ZSwgZW5jb2RlciBzdXBwb3J0
cyB3b3JraW5nIHdpdGggYSBuYXRpdmUgaGFuZGxlIChlLmcuIHRleHR1cmUKKyAgICAvLyBoYW5k
bGUgZm9yIGh3IGNvZGVjcykgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGEgcmF3IEk0MjAgYnVmZmVy
LgorICAgIGJvb2wgc3VwcG9ydHNfbmF0aXZlX2hhbmRsZTsKKworICAgIC8vIFRoZSBuYW1lIG9m
IHRoaXMgcGFydGljdWxhciBlbmNvZGVyIGltcGxlbWVudGF0aW9uLCBlLmcuICJsaWJ2cHgiLgor
ICAgIHN0ZDo6c3RyaW5nIGltcGxlbWVudGF0aW9uX25hbWU7CisKKyAgICAvLyBJZiB0aGlzIGZp
ZWxkIGlzIHRydWUsIHRoZSBlbmNvZGVyIHJhdGUgY29udHJvbGxlciBtdXN0IHBlcmZvcm0KKyAg
ICAvLyB3ZWxsIGV2ZW4gaW4gZGlmZmljdWx0IHNpdHVhdGlvbnMsIGFuZCBwcm9kdWNlIGNsb3Nl
IHRvIHRoZSBzcGVjaWZpZWQKKyAgICAvLyB0YXJnZXQgYml0cmF0ZSBzZWVuIG92ZXIgYSByZWFz
b25hYmxlIHRpbWUgd2luZG93LCBkcm9wIGZyYW1lcyBpZgorICAgIC8vIG5lY2Vzc2FyeSBpbiBv
cmRlciB0byBrZWVwIHRoZSByYXRlIGNvcnJlY3QsIGFuZCByZWFjdCBxdWlja2x5IHRvCisgICAg
Ly8gY2hhbmdpbmcgYml0cmF0ZSB0YXJnZXRzLiBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUs
IHdlIGRpc2FibGUgdGhlCisgICAgLy8gZnJhbWUgZHJvcHBlciBpbiB0aGUgbWVkaWEgb3B0aW1p
emF0aW9uIG1vZHVsZSBhbmQgcmVseSBlbnRpcmVseSBvbiB0aGUKKyAgICAvLyBlbmNvZGVyIHRv
IHByb2R1Y2UgbWVkaWEgYXQgYSBiaXRyYXRlIHRoYXQgY2xvc2VseSBtYXRjaGVzIHRoZSB0YXJn
ZXQuCisgICAgLy8gQW55IG92ZXJzaG9vdGluZyBtYXkgcmVzdWx0IGluIGRlbGF5IGJ1aWxkdXAu
IElmIHRoaXMgbWV0aG9kIHJldHVybnMKKyAgICAvLyBmYWxzZSAoZGVmYXVsdCBiZWhhdmlvciks
IHRoZSBtZWRpYSBvcHQgZnJhbWUgZHJvcHBlciB3aWxsIGRyb3AgaW5wdXQKKyAgICAvLyBmcmFt
ZXMgaWYgaXQgc3VzcGVjdCBlbmNvZGVyIG1pc2JlaGF2aW9yLiBNaXNiZWhhdmlvciBpcyBjb21t
b24sCisgICAgLy8gZXNwZWNpYWxseSBpbiBoYXJkd2FyZSBjb2RlY3MuIERpc2FibGUgbWVkaWEg
b3B0IGF0IHlvdXIgb3duIHJpc2suCisgICAgYm9vbCBoYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xs
ZXI7CisgIH07CisKICAgc3RhdGljIFZpZGVvQ29kZWNWUDggR2V0RGVmYXVsdFZwOFNldHRpbmdz
KCk7CiAgIHN0YXRpYyBWaWRlb0NvZGVjVlA5IEdldERlZmF1bHRWcDlTZXR0aW5ncygpOwogICBz
dGF0aWMgVmlkZW9Db2RlY0gyNjQgR2V0RGVmYXVsdEgyNjRTZXR0aW5ncygpOwpAQCAtMTcxLDE3
ICsyMDIsNiBAQCBjbGFzcyBWaWRlb0VuY29kZXIgewogICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZvLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1lVHlwZT4qIGZyYW1lX3R5cGVz
KSA9IDA7CiAKLSAgLy8gSW5mb3JtIHRoZSBlbmNvZGVyIG9mIHRoZSBuZXcgcGFja2V0IGxvc3Mg
cmF0ZSBhbmQgdGhlIHJvdW5kLXRyaXAgdGltZSBvZgotICAvLyB0aGUgbmV0d29yay4KLSAgLy8K
LSAgLy8gSW5wdXQ6Ci0gIC8vICAgICAgICAgIC0gcGFja2V0X2xvc3MgOiBGcmFjdGlvbiBsb3N0
Ci0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAobG9zcyByYXRlIGluIHBlcmNlbnQgPSAx
MDAgKiBwYWNrZXRMb3NzIC8gMjU1KQotICAvLyAgICAgICAgICAtIHJ0dCAgICAgICAgIDogUm91
bmQtdHJpcCB0aW1lIGluIG1pbGxpc2Vjb25kcwotICAvLyBSZXR1cm4gdmFsdWUgICAgICAgICAg
IDogV0VCUlRDX1ZJREVPX0NPREVDX09LIGlmIE9LCi0gIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgICA8MCAtIEVycm9yczogV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SCi0gIHZpcnR1YWwgaW50
MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBy
dHQpID0gMDsKLQogICAvLyBJbmZvcm0gdGhlIGVuY29kZXIgYWJvdXQgdGhlIG5ldyB0YXJnZXQg
Yml0IHJhdGUuCiAgIC8vCiAgIC8vIElucHV0OgpAQCAtMTk2LDEyICsyMTYsMTcgQEAgY2xhc3Mg
VmlkZW9FbmNvZGVyIHsKICAgdmlydHVhbCBpbnQzMl90IFNldFJhdGVBbGxvY2F0aW9uKGNvbnN0
IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGFsbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZXJhdGUpOwogCi0gIC8vIEFueSBlbmNvZGVy
IGltcGxlbWVudGF0aW9uIHdpc2hpbmcgdG8gdXNlIHRoZSBXZWJSVEMgcHJvdmlkZWQKLSAgLy8g
cXVhbGl0eSBzY2FsZXIgbXVzdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QuCisgIC8vIEdldFNjYWxp
bmdTZXR0aW5ncygpLCBTdXBwb3J0c05hdGl2ZUhhbmRsZSgpLCBJbXBsZW1lbnRhdGlvbk5hbWUo
KSBhcmUKKyAgLy8gZGVwcmVjYXRlZCwgdXNlIEdldEVuY29kZXJJbmZvKCkgaW5zdGVhZC4KICAg
dmlydHVhbCBTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Q7Ci0KICAg
dmlydHVhbCBib29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3Q7CiAgIHZpcnR1YWwgY29u
c3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Q7CisKKyAgLy8gUmV0dXJucyBtZXRh
LWRhdGEgYWJvdXQgdGhlIGVuY29kZXIsIHN1Y2ggYXMgaW1wbGVtZW50YXRpb24gbmFtZS4KKyAg
Ly8gVGhlIG91dHB1dCBvZiB0aGlzIG1ldGhvZCBtYXkgY2hhbmdlIGR1cmluZyBydW50aW1lLiBG
b3IgaW5zdGFuY2UgaWYgYQorICAvLyBoYXJkd2FyZSBlbmNvZGVyIGZhaWxzLCBpdCBtYXkgZmFs
bCBiYWNrIHRvIGRvaW5nIHNvZnR3YXJlIGVuY29kaW5nIHVzaW5nCisgIC8vIGFuIGltcGxlbWVu
dGF0aW9uIHdpdGggZGlmZmVyZW50IGNoYXJhY3RlcmlzdGljcy4KKyAgdmlydHVhbCBFbmNvZGVy
SW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0OwogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ICNlbmRpZiAgLy8gQVBJX1ZJREVPX0NPREVDU19WSURFT19FTkNPREVSX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29k
ZWNzL3ZpZGVvX2VuY29kZXJfY29uZmlnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZpZy5jYwpp
bmRleCA3NDk3N2VhZWEzZmRkNTlmYzU3M2MxYjE4MzA0NDIwOWQ3MWE4OWU5Li42NmZmN2M5NGVi
NDNiNzU2YTMzNjIzYzU5OGQyYjA2M2E2ZTZmNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29k
ZXJfY29uZmlnLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25maWcuY2MKQEAgLTksNyArOSw2
IEBACiAgKi8KICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmln
LmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmln
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9f
Y29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmlnLmgKaW5kZXggZTEwZjA4MTkwYzY4YTMzMmMzMWNj
MmNkYWFkNDllMmNhZWJmOGUzMi4uOWRkOGU0ZmE1ZDAyYzQ0OTVjZGJkOTgzNWM2M2EwY2I1NjMw
YjljMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9f
ZW5jb2Rlcl9jb25maWcuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBBUElfVklERU9fQ09E
RUNTX1ZJREVPX0VOQ09ERVJfQ09ORklHX0hfCiAjZGVmaW5lIEFQSV9WSURFT19DT0RFQ1NfVklE
RU9fRU5DT0RFUl9DT05GSUdfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0
cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9z
b2Z0d2FyZV9mYWxsYmFja193cmFwcGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX3NvZnR3YXJlX2Zh
bGxiYWNrX3dyYXBwZXIuY2MKaW5kZXggOTlmMjk3MDdlNDQxYzAyOTI1MGI3ZWRkOWIwNWQ5ODNj
MWQ5MjE5Yy4uZmQwNjc4NTQzYWJlZmFhM2Q3MzA4NTIzMjNkOWQ0MjUwODdmNmNjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVv
X2NvZGVjcy92aWRlb19lbmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVj
cy92aWRlb19lbmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuY2MKQEAgLTg3LDEyICs4
Nyw5IEBAIGNsYXNzIFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyIGZpbmFsIDog
cHVibGljIFZpZGVvRW5jb2RlciB7CiAgIGludDMyX3QgRW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUm
IGZyYW1lLAogICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNf
c3BlY2lmaWNfaW5mbywKICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RnJhbWVU
eXBlPiogZnJhbWVfdHlwZXMpIG92ZXJyaWRlOwotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0
ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CiAgIGludDMy
X3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0
ZV9hbGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1l
cmF0ZSkgb3ZlcnJpZGU7Ci0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgU2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IG92ZXJy
aWRlOwotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsK
KyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZTsKIAogIHByaXZh
dGU6CiAgIGJvb2wgSW5pdEZhbGxiYWNrRW5jb2RlcigpOwpAQCAtMTYyLDcgKzE1OSw3IEBAIFZp
ZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyOjpWaWRlb0VuY29kZXJTb2Z0d2FyZUZh
bGxiYWNrV3JhcHBlcigKICAgaWYgKGZvcmNlZF9mYWxsYmFja19wb3NzaWJsZV8pIHsKICAgICBH
ZXRGb3JjZWRGYWxsYmFja1BhcmFtc0Zyb21GaWVsZFRyaWFsR3JvdXAoCiAgICAgICAgICZmb3Jj
ZWRfZmFsbGJhY2tfLm1pbl9waXhlbHNfLCAmZm9yY2VkX2ZhbGxiYWNrXy5tYXhfcGl4ZWxzXywK
LSAgICAgICAgZW5jb2Rlcl8tPkdldFNjYWxpbmdTZXR0aW5ncygpLm1pbl9waXhlbHNfcGVyX2Zy
YW1lIC0KKyAgICAgICAgZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5n
cy5taW5fcGl4ZWxzX3Blcl9mcmFtZSAtCiAgICAgICAgICAgICAxKTsgIC8vIE5vIEhXIGJlbG93
LgogICB9CiB9CkBAIC0xODUsOCArMTgyLDYgQEAgYm9vbCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZh
bGxiYWNrV3JhcHBlcjo6SW5pdEZhbGxiYWNrRW5jb2RlcigpIHsKICAgICBmYWxsYmFja19lbmNv
ZGVyXy0+UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKGNhbGxiYWNrXyk7CiAgIGlmIChy
YXRlc19zZXRfKQogICAgIGZhbGxiYWNrX2VuY29kZXJfLT5TZXRSYXRlQWxsb2NhdGlvbihiaXRy
YXRlX2FsbG9jYXRpb25fLCBmcmFtZXJhdGVfKTsKLSAgaWYgKGNoYW5uZWxfcGFyYW1ldGVyc19z
ZXRfKQotICAgIGZhbGxiYWNrX2VuY29kZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRf
bG9zc18sIHJ0dF8pOwogCiAgIC8vIFNpbmNlIHdlJ3JlIHN3aXRjaGluZyB0byB0aGUgZmFsbGJh
Y2sgZW5jb2RlciwgUmVsZWFzZSB0aGUgcmVhbCBlbmNvZGVyLiBJdAogICAvLyBtYXkgYmUgcmUt
aW5pdGlhbGl6ZWQgdmlhIEluaXRFbmNvZGUgbGF0ZXIsIGFuZCBpdCB3aWxsIGNvbnRpbnVlIHRv
IGdldApAQCAtMjA2LDcgKzIwMSw2IEBAIGludDMyX3QgVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxs
YmFja1dyYXBwZXI6OkluaXRFbmNvZGUoCiAgIG1heF9wYXlsb2FkX3NpemVfID0gbWF4X3BheWxv
YWRfc2l6ZTsKICAgLy8gQ2xlYXIgc3RvcmVkIHJhdGUvY2hhbm5lbCBwYXJhbWV0ZXJzLgogICBy
YXRlc19zZXRfID0gZmFsc2U7Ci0gIGNoYW5uZWxfcGFyYW1ldGVyc19zZXRfID0gZmFsc2U7CiAg
IFZhbGlkYXRlU2V0dGluZ3NGb3JGb3JjZWRGYWxsYmFjaygpOwogCiAgIC8vIFRyeSB0byByZWlu
aXQgZm9yY2VkIHNvZnR3YXJlIGNvZGVjIGlmIGl0IGlzIGluIHVzZS4KQEAgLTI3MCwxOCArMjY0
LDYgQEAgaW50MzJfdCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcjo6RW5jb2Rl
KAogICByZXR1cm4gcmV0OwogfQogCi1pbnQzMl90IFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJh
Y2tXcmFwcGVyOjpTZXRDaGFubmVsUGFyYW1ldGVycygKLSAgICB1aW50MzJfdCBwYWNrZXRfbG9z
cywKLSAgICBpbnQ2NF90IHJ0dCkgewotICBjaGFubmVsX3BhcmFtZXRlcnNfc2V0XyA9IHRydWU7
Ci0gIHBhY2tldF9sb3NzXyA9IHBhY2tldF9sb3NzOwotICBydHRfID0gcnR0OwotICBpbnQzMl90
IHJldCA9IGVuY29kZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRfbG9zcywgcnR0KTsK
LSAgaWYgKHVzZV9mYWxsYmFja19lbmNvZGVyXykKLSAgICByZXR1cm4gZmFsbGJhY2tfZW5jb2Rl
cl8tPlNldENoYW5uZWxQYXJhbWV0ZXJzKHBhY2tldF9sb3NzLCBydHQpOwotICByZXR1cm4gcmV0
OwotfQotCiBpbnQzMl90IFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyOjpTZXRS
YXRlQWxsb2NhdGlvbigKICAgICBjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRl
X2FsbG9jYXRpb24sCiAgICAgdWludDMyX3QgZnJhbWVyYXRlKSB7CkBAIC0yOTQsMjkgKzI3Niwy
OSBAQCBpbnQzMl90IFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyOjpTZXRSYXRl
QWxsb2NhdGlvbigKICAgcmV0dXJuIHJldDsKIH0KIAotYm9vbCBWaWRlb0VuY29kZXJTb2Z0d2Fy
ZUZhbGxiYWNrV3JhcHBlcjo6U3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCB7Ci0gIHJldHVy
biB1c2VfZmFsbGJhY2tfZW5jb2Rlcl8gPyBmYWxsYmFja19lbmNvZGVyXy0+U3VwcG9ydHNOYXRp
dmVIYW5kbGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZW5jb2Rlcl8tPlN1
cHBvcnRzTmF0aXZlSGFuZGxlKCk7Ci19CitWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIFZpZGVv
RW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyOjpHZXRFbmNvZGVySW5mbygpCisgICAgY29u
c3QgeworICBFbmNvZGVySW5mbyBmYWxsYmFja19lbmNvZGVyX2luZm8gPSBmYWxsYmFja19lbmNv
ZGVyXy0+R2V0RW5jb2RlckluZm8oKTsKKyAgRW5jb2RlckluZm8gZGVmYXVsdF9lbmNvZGVyX2lu
Zm8gPSBlbmNvZGVyXy0+R2V0RW5jb2RlckluZm8oKTsKKworICBFbmNvZGVySW5mbyBpbmZvID0K
KyAgICAgIHVzZV9mYWxsYmFja19lbmNvZGVyXyA/IGZhbGxiYWNrX2VuY29kZXJfaW5mbyA6IGRl
ZmF1bHRfZW5jb2Rlcl9pbmZvOwogCi1WaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncwotVmlk
ZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXI6OkdldFNjYWxpbmdTZXR0aW5ncygpIGNv
bnN0IHsKICAgaWYgKGZvcmNlZF9mYWxsYmFja19wb3NzaWJsZV8pIHsKICAgICBjb25zdCBhdXRv
IHNldHRpbmdzID0gZm9yY2VkX2ZhbGxiYWNrXy5hY3RpdmVfCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA/IGZhbGxiYWNrX2VuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlbmNvZGVyXy0+R2V0U2NhbGluZ1NldHRpbmdz
KCk7Ci0gICAgcmV0dXJuIHNldHRpbmdzLnRocmVzaG9sZHMKLSAgICAgICAgICAgICAgID8gVmlk
ZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3Moc2V0dGluZ3MudGhyZXNob2xkcy0+bG93LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy50aHJl
c2hvbGRzLT5oaWdoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3JjZWRfZmFsbGJhY2tfLm1pbl9waXhlbHNfKQotICAgICAgICAgICAgICAgOiBWaWRl
b0VuY29kZXI6OlNjYWxpbmdTZXR0aW5nczo6a09mZjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID8gZmFsbGJhY2tfZW5jb2Rlcl9pbmZvLnNjYWxpbmdfc2V0dGluZ3MKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdF9lbmNvZGVyX2luZm8uc2NhbGluZ19zZXR0
aW5nczsKKyAgICBpbmZvLnNjYWxpbmdfc2V0dGluZ3MgPQorICAgICAgICBzZXR0aW5ncy50aHJl
c2hvbGRzCisgICAgICAgICAgICA/IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzKHNldHRp
bmdzLnRocmVzaG9sZHMtPmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0dGluZ3MudGhyZXNob2xkcy0+aGlnaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VkX2ZhbGxiYWNrXy5taW5fcGl4ZWxzXykKKyAg
ICAgICAgICAgIDogVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtPZmY7CisgIH0gZWxz
ZSB7CisgICAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0gZGVmYXVsdF9lbmNvZGVyX2luZm8uc2Nh
bGluZ19zZXR0aW5nczsKICAgfQotICByZXR1cm4gZW5jb2Rlcl8tPkdldFNjYWxpbmdTZXR0aW5n
cygpOwotfQogCi1jb25zdCBjaGFyKiBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBl
cjo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3QgewotICByZXR1cm4gdXNlX2ZhbGxiYWNrX2Vu
Y29kZXJfID8gZmFsbGJhY2tfZW5jb2Rlcl8tPkltcGxlbWVudGF0aW9uTmFtZSgpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBlbmNvZGVyXy0+SW1wbGVtZW50YXRpb25OYW1lKCk7
CisgIHJldHVybiBpbmZvOwogfQogCiBib29sIFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tX
cmFwcGVyOjpJc0ZvcmNlZEZhbGxiYWNrQWN0aXZlKCkgY29uc3QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92
cDhfdGVtcG9yYWxfbGF5ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MDIyM2E0MjA5NjU0NWFjODU3MjdlOGNjZTMxZWU3ODUwNzgzMDQ3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVv
X2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9WSURFT19DT0RFQ1NfVlA4X1RFTVBPUkFMX0xB
WUVSU19IXworI2RlZmluZSBBUElfVklERU9fQ09ERUNTX1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8K
KworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSB3ZWJy
dGMgeworCisvLyBTb21lIG5vdGVzIG9uIHRoZSBwcmVyZXF1aXNpdGVzIG9mIHRoZSBUZW1wb3Jh
bExheWVycyBpbnRlcmZhY2UuCisvLyAqIFZwOFRlbXBvcmFsTGF5ZXJzIGlzIG5vdCB0aHJlYWQg
c2FmZSwgc3luY2hyb25pemF0aW9uIGlzIHRoZSBjYWxsZXIncworLy8gICByZXNwb25zaWJpbGl0
eS4KKy8vICogVGhlIGVuY29kZXIgaXMgYXNzdW1lZCB0byBlbmNvZGUgYWxsIGZyYW1lcyBpbiBv
cmRlciwgYW5kIGNhbGxiYWNrcyB0bworLy8gICBQb3B1bGF0ZUNvZGVjU3BlY2lmaWMoKSAvIEZy
YW1lRW5jb2RlZCgpIG11c3QgaGFwcGVuIGluIHRoZSBzYW1lIG9yZGVyLgorLy8KKy8vIFRoaXMg
bWVhbnMgdGhhdCBpbiB0aGUgY2FzZSBvZiBwaXBlbGluaW5nIGVuY29kZXJzLCBpdCBpcyBPSyB0
byBoYXZlIGEgY2hhaW4KKy8vIG9mIGNhbGxzIHN1Y2ggYXMgdGhpczoKKy8vIC0gVXBkYXRlTGF5
ZXJDb25maWcodGltZXN0YW1wQSkKKy8vIC0gVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wQikK
Ky8vIC0gUG9wdWxhdGVDb2RlY1NwZWNpZmljKHRpbWVzdGFtcEEsIC4uLikKKy8vIC0gVXBkYXRl
TGF5ZXJDb25maWcodGltZXN0YW1wQykKKy8vIC0gT25FbmNvZGVEb25lKHRpbWVzdGFtcEEsIDEy
MzQsIC4uLikKKy8vIC0gVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wQykKKy8vIC0gT25FbmNv
ZGVEb25lKHRpbWVzdGFtcEIsIDAsIC4uLikKKy8vIC0gT25FbmNvZGVEb25lKHRpbWVzdGFtcEMs
IDEyMzQsIC4uLikKKy8vIE5vdGUgdGhhdCBVcGRhdGVMYXllckNvbmZpZygpIGZvciBhIG5ldyBm
cmFtZSBjYW4gaGFwcGVuIGJlZm9yZQorLy8gRnJhbWVFbmNvZGVkKCkgZm9yIGEgcHJldmlvdXMg
b25lLCBidXQgY2FsbHMgdGhlbXNlbHZlcyBtdXN0IGJlIGJvdGgKKy8vIHN5bmNocm9uaXplZCAo
ZS5nLiBydW4gb24gYSB0YXNrIHF1ZXVlKSBhbmQgaW4gb3JkZXIgKHBlciB0eXBlKS4KKworLy8g
VHdvIGRpZmZlcmVudCBmbGF2b3JzIG9mIHRlbXBvcmFsIGxheWVycyBhcmUgY3VycmVudGx5IGF2
YWlsYWJsZToKKy8vIGtGaXhlZFBhdHRlcm4gdXNlcyBhIGZpeGVkIHJlcGVhdGluZyBwYXR0ZXJu
IG9mIDEtNCBsYXllcnMuCisvLyBrQml0cmF0ZUR5bmFtaWMgY2FuIGFsbG9jYXRlIGZyYW1lcyBk
eW5hbWljYWxseSB0byAxIG9yIDIgbGF5ZXJzLCBiYXNlZCBvbgorLy8gdGhlIGJpdHJhdGUgcHJv
ZHVjZWQuCitlbnVtIGNsYXNzIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZSB7IGtGaXhlZFBhdHRlcm4s
IGtCaXRyYXRlRHluYW1pYyB9OworCitzdHJ1Y3QgQ29kZWNTcGVjaWZpY0luZm9WUDg7CisKK3N0
cnVjdCBWcDhFbmNvZGVyQ29uZmlnIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga01heFBl
cmlvZGljaXR5ID0gMTY7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtNYXhMYXllcnMgPSA1
OworCisgIC8vIE51bWJlciBvZiBhY3RpdmUgdGVtcG9yYWwgbGF5ZXJzLiBTZXQgdG8gMCBpZiBu
b3QgdXNlZC4KKyAgdWludDMyX3QgdHNfbnVtYmVyX2xheWVyczsKKyAgLy8gQXJyYXlzIG9mIGxl
bmd0aCB8dHNfbnVtYmVyX2xheWVyc3wsIGluZGljYXRpbmcgKGN1bXVsYXRpdmUpIHRhcmdldCBi
aXRyYXRlCisgIC8vIGFuZCByYXRlIGRlY2ltYXRvciAoZS5nLiA0IGlmIGV2ZXJ5IDR0aCBmcmFt
ZSBpcyBpbiB0aGUgZ2l2ZW4gbGF5ZXIpIGZvcgorICAvLyBlYWNoIGFjdGl2ZSB0ZW1wb3JhbCBs
YXllciwgc3RhcnRpbmcgd2l0aCB0ZW1wb3JhbCBpZCAwLgorICB1aW50MzJfdCB0c190YXJnZXRf
Yml0cmF0ZVtrTWF4TGF5ZXJzXTsKKyAgdWludDMyX3QgdHNfcmF0ZV9kZWNpbWF0b3Jba01heExh
eWVyc107CisKKyAgLy8gVGhlIHBlcmlvZGljaXR5IG9mIHRoZSB0ZW1wb3JhbCBwYXR0ZXJuLiBT
ZXQgdG8gMCBpZiBub3QgdXNlZC4KKyAgdWludDMyX3QgdHNfcGVyaW9kaWNpdHk7CisgIC8vIEFy
cmF5IG9mIGxlbmd0aCB8dHNfcGVyaW9kaWNpdHl8IGluZGljYXRpbmcgdGhlIHNlcXVlbmNlIG9m
IHRlbXBvcmFsIGlkJ3MKKyAgLy8gdG8gYXNzaWduIHRvIGluY29taW5nIGZyYW1lcy4KKyAgdWlu
dDMyX3QgdHNfbGF5ZXJfaWRba01heFBlcmlvZGljaXR5XTsKKworICAvLyBUYXJnZXQgYml0cmF0
ZSwgaW4gYnBzLgorICB1aW50MzJfdCByY190YXJnZXRfYml0cmF0ZTsKKworICAvLyBDbGFtcCBR
UCB0byBtaW4vbWF4LiBVc2UgMCB0byBkaXNhYmxlIGNsYW1waW5nLgorICB1aW50MzJfdCByY19t
aW5fcXVhbnRpemVyOworICB1aW50MzJfdCByY19tYXhfcXVhbnRpemVyOworfTsKKworLy8gRGVm
aW5lZCBiaXQtbWFza2FibGUgcmVmZXJlbmNlIHRvIHRoZSB0aHJlZSBidWZmZXJzIGF2YWlsYWJs
ZSBpbiBWUDguCitlbnVtIGNsYXNzIFZwOEJ1ZmZlclJlZmVyZW5jZSA6IHVpbnQ4X3QgeworICBr
Tm9uZSA9IDAsCisgIGtMYXN0ID0gMSwKKyAga0dvbGRlbiA9IDIsCisgIGtBbHRyZWYgPSA0Cit9
OworCisvLyBUaGlzIGludGVyZmFjZSBkZWZpbmVzIGEgd2F5IG9mIGdldHRpbmcgdGhlIGVuY29k
ZXIgc2V0dGluZ3MgbmVlZGVkIHRvCisvLyByZWFsaXplIGEgdGVtcG9yYWwgbGF5ZXIgc3RydWN0
dXJlLgorY2xhc3MgVnA4VGVtcG9yYWxMYXllcnMgeworIHB1YmxpYzoKKyAgZW51bSBCdWZmZXJG
bGFncyA6IGludCB7CisgICAga05vbmUgPSAwLAorICAgIGtSZWZlcmVuY2UgPSAxLAorICAgIGtV
cGRhdGUgPSAyLAorICAgIGtSZWZlcmVuY2VBbmRVcGRhdGUgPSBrUmVmZXJlbmNlIHwga1VwZGF0
ZSwKKyAgfTsKKyAgZW51bSBGcmVlemVFbnRyb3B5IHsga0ZyZWV6ZUVudHJvcHkgfTsKKworICBz
dHJ1Y3QgRnJhbWVDb25maWcgeworICAgIEZyYW1lQ29uZmlnKCk7CisKKyAgICBGcmFtZUNvbmZp
ZyhCdWZmZXJGbGFncyBsYXN0LCBCdWZmZXJGbGFncyBnb2xkZW4sIEJ1ZmZlckZsYWdzIGFyZik7
CisgICAgRnJhbWVDb25maWcoQnVmZmVyRmxhZ3MgbGFzdCwKKyAgICAgICAgICAgICAgICBCdWZm
ZXJGbGFncyBnb2xkZW4sCisgICAgICAgICAgICAgICAgQnVmZmVyRmxhZ3MgYXJmLAorICAgICAg
ICAgICAgICAgIEZyZWV6ZUVudHJvcHkpOworCisgICAgYm9vbCBkcm9wX2ZyYW1lOworICAgIEJ1
ZmZlckZsYWdzIGxhc3RfYnVmZmVyX2ZsYWdzOworICAgIEJ1ZmZlckZsYWdzIGdvbGRlbl9idWZm
ZXJfZmxhZ3M7CisgICAgQnVmZmVyRmxhZ3MgYXJmX2J1ZmZlcl9mbGFnczsKKworICAgIC8vIFRo
ZSBlbmNvZGVyIGxheWVyIElEIGlzIHVzZWQgdG8gdXRpbGl6ZSB0aGUgY29ycmVjdCBiaXRyYXRl
IGFsbG9jYXRvcgorICAgIC8vIGluc2lkZSB0aGUgZW5jb2Rlci4gSXQgZG9lcyBub3QgY29udHJv
bCByZWZlcmVuY2VzIG5vciBkZXRlcm1pbmUgd2hpY2gKKyAgICAvLyAiYWN0dWFsIiB0ZW1wb3Jh
bCBsYXllciB0aGlzIGlzLiBUaGUgcGFja2V0aXplciB0ZW1wb3JhbCBpbmRleCBkZXRlcm1pbmVz
CisgICAgLy8gd2hpY2ggbGF5ZXIgdGhlIGVuY29kZWQgZnJhbWUgc2hvdWxkIGJlIHBhY2tldGl6
ZWQgaW50by4KKyAgICAvLyBOb3JtYWxseSB0aGVzZSBhcmUgdGhlIHNhbWUsIGJ1dCBjdXJyZW50
IHRlbXBvcmFsLWxheWVyIHN0cmF0ZWdpZXMgZm9yCisgICAgLy8gc2NyZWVuc2hhcmUgdXNlIG9u
ZSBiaXRyYXRlIGFsbG9jYXRvciBmb3IgYWxsIGxheWVycywgYnV0IGF0dGVtcHQgdG8KKyAgICAv
LyBwYWNrZXRpemUgLyB1dGlsaXplIHJlZmVyZW5jZXMgdG8gc3BsaXQgYSBzdHJlYW0gaW50byBt
dWx0aXBsZSBsYXllcnMsCisgICAgLy8gd2l0aCBkaWZmZXJlbnQgcXVhbnRpemVyIHNldHRpbmdz
LCB0byBoaXQgdGFyZ2V0IGJpdHJhdGUuCisgICAgLy8gVE9ETyhwYm9zKTogU2NyZWVuc2hhcmUg
bGF5ZXJzIGFyZSBiZWluZyByZWNvbnNpZGVyZWQgYXQgdGhlIHRpbWUgb2YKKyAgICAvLyB3cml0
aW5nLCB3ZSBtaWdodCBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIGRpc3RpbmN0aW9uLCBhbmQgaGF2
ZSBhIHRlbXBvcmFsCisgICAgLy8gbGF5ZXIgaW1wbHkgYm90aCAodGhlIG5vcm1hbCBjYXNlKS4K
KyAgICBpbnQgZW5jb2Rlcl9sYXllcl9pZDsKKyAgICBpbnQgcGFja2V0aXplcl90ZW1wb3JhbF9p
ZHg7CisKKyAgICBib29sIGxheWVyX3N5bmM7CisKKyAgICBib29sIGZyZWV6ZV9lbnRyb3B5Owor
CisgICAgLy8gSW5kaWNhdGVzIGluIHdoaWNoIG9yZGVyIHRoZSBlbmNvZGVyIHNob3VsZCBzZWFy
Y2ggdGhlIHJlZmVyZW5jZSBidWZmZXJzCisgICAgLy8gd2hlbiBkb2luZyBtb3Rpb24gcHJlZGlj
dGlvbi4gU2V0IHRvIGtOb25lIHRvIHVzZSB1bnNwZWNpZmllZCBvcmRlci4gQW55CisgICAgLy8g
YnVmZmVyIGluZGljYXRlZCBoZXJlIG11c3Qgbm90IGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgbm9f
cmVmIGJpdCBzZXQuCisgICAgLy8gSWYgYWxsIHRocmVlIGJ1ZmZlcnMgY2FuIGJlIHJlZmVyZW5j
ZSwgdGhlIG9uZSBub3QgbGlzdGVkIGhlcmUgc2hvdWxkIGJlCisgICAgLy8gc2VhcmNoZWQgbGFz
dC4KKyAgICBWcDhCdWZmZXJSZWZlcmVuY2UgZmlyc3RfcmVmZXJlbmNlOworICAgIFZwOEJ1ZmZl
clJlZmVyZW5jZSBzZWNvbmRfcmVmZXJlbmNlOworCisgICBwcml2YXRlOgorICAgIEZyYW1lQ29u
ZmlnKEJ1ZmZlckZsYWdzIGxhc3QsCisgICAgICAgICAgICAgICAgQnVmZmVyRmxhZ3MgZ29sZGVu
LAorICAgICAgICAgICAgICAgIEJ1ZmZlckZsYWdzIGFyZiwKKyAgICAgICAgICAgICAgICBib29s
IGZyZWV6ZV9lbnRyb3B5KTsKKyAgfTsKKworICB2aXJ0dWFsIH5WcDhUZW1wb3JhbExheWVycygp
ID0gZGVmYXVsdDsKKworICAvLyBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUsIHRoZSBlbmNv
ZGVyIGlzIGZyZWUgdG8gZHJvcCBmcmFtZXMgZm9yCisgIC8vIGluc3RhbmNlIGluIGFuIGVmZm9y
dCB0byB1cGhvbGQgZW5jb2RpbmcgYml0cmF0ZS4KKyAgLy8gSWYgdGhpcyByZXR1cm4gZmFsc2Us
IHRoZSBlbmNvZGVyIG11c3Qgbm90IGRyb3AgYW55IGZyYW1lcyB1bmxlc3M6CisgIC8vICAxLiBS
ZXF1ZXN0ZWQgdG8gZG8gc28gdmlhIEZyYW1lQ29uZmlnLmRyb3BfZnJhbWUKKyAgLy8gIDIuIFRo
ZSBmcmFtZSB0byBiZSBlbmNvZGVkIGlzIHJlcXVlc3RlZCB0byBiZSBhIGtleWZyYW1lCisgIC8v
ICAzLiBUaGUgZW5jb2RlZCBkZXRlY3RlZCBhIGxhcmdlIG92ZXJzaG9vdCBhbmQgZGVjaWRlZCB0
byBkcm9wIGFuZCB0aGVuCisgIC8vICAgICByZS1lbmNvZGUgdGhlIGltYWdlIGF0IGEgbG93IGJp
dHJhdGUuIEluIHRoaXMgY2FzZSB0aGUgZW5jb2RlciBzaG91bGQKKyAgLy8gICAgIGNhbGwgT25F
bmNvZGVEb25lKCkgb25jZSB3aXRoIHNpemUgPSAwIHRvIGluZGljYXRlIGRyb3AsIGFuZCB0aGVu
IGNhbGwKKyAgLy8gICAgIE9uRW5jb2RlRG9uZSgpIGFnYWluIHdoZW4gdGhlIGZyYW1lIGhhcyBh
Y3R1YWxseSBiZWVuIGVuY29kZWQuCisgIHZpcnR1YWwgYm9vbCBTdXBwb3J0c0VuY29kZXJGcmFt
ZURyb3BwaW5nKCkgY29uc3QgPSAwOworCisgIC8vIE5ldyB0YXJnZXQgYml0cmF0ZSwgcGVyIHRl
bXBvcmFsIGxheWVyLgorICB2aXJ0dWFsIHZvaWQgT25SYXRlc1VwZGF0ZWQoY29uc3Qgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+JiBiaXRyYXRlc19icHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZnJhbWVyYXRlX2ZwcykgPSAwOworCisgIC8vIENhbGxlZCBieSB0aGUgZW5jb2Rl
ciBiZWZvcmUgZW5jb2RpbmcgYSBmcmFtZS4gfGNmZ3wgY29udGFpbnMgdGhlIGN1cnJlbnQKKyAg
Ly8gY29uZmlndXJhdGlvbi4gSWYgdGhlIFRlbXBvcmFsTGF5ZXJzIGluc3RhbmNlIHdpc2hlcyBh
bnkgcGFydCBvZiB0aGF0CisgIC8vIHRvIGJlIGNoYW5nZWQgYmVmb3JlIHRoZSBlbmNvZGUgc3Rl
cCwgfGNmZ3wgc2hvdWxkIGJlIGNoYW5nZWQgYW5kIHRoZW4KKyAgLy8gcmV0dXJuIHRydWUuIElm
IGZhbHNlIGlzIHJldHVybmVkLCB0aGUgZW5jb2RlciB3aWxsIHByb2NlZWQgd2l0aG91dAorICAv
LyB1cGRhdGluZyB0aGUgY29uZmlndXJhdGlvbi4KKyAgdmlydHVhbCBib29sIFVwZGF0ZUNvbmZp
Z3VyYXRpb24oVnA4RW5jb2RlckNvbmZpZyogY2ZnKSA9IDA7CisKKyAgLy8gUmV0dXJucyB0aGUg
cmVjb21tZW5kZWQgVlA4IGVuY29kZSBmbGFncyBuZWVkZWQsIGFuZCBtb3ZlcyB0aGUgdGVtcG9y
YWwKKyAgLy8gcGF0dGVybiB0byB0aGUgbmV4dCBmcmFtZS4KKyAgLy8gVGhlIHRpbWVzdGFtcCBt
YXkgYmUgdXNlZCBhcyBib3RoIGEgdGltZSBhbmQgYSB1bmlxdWUgaWRlbnRpZmllciwgYW5kIHNv
CisgIC8vIHRoZSBjYWxsZXIgbXVzdCBtYWtlIHN1cmUgbm8gdHdvIGZyYW1lcyB1c2UgdGhlIHNh
bWUgdGltZXN0YW1wLgorICAvLyBUaGUgdGltZXN0YW1wIHVzZXMgYSA5MGtIeiBSVFAgY2xvY2su
CisgIC8vIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGZpcnN0IGNhbGwgdGhlIGFjdHVhbCBl
bmNvZGVyIHdpdGggdGhlIHByb3ZpZGVkCisgIC8vIGZyYW1lIGNvbmZpZ3VyYXRpb24sIGFuZCB0
aGVuIE9uRW5jb2RlRG9uZSgpIGJlbG93LgorICB2aXJ0dWFsIEZyYW1lQ29uZmlnIFVwZGF0ZUxh
eWVyQ29uZmlnKHVpbnQzMl90IHJ0cF90aW1lc3RhbXApID0gMDsKKworICAvLyBDYWxsZWQgYWZ0
ZXIgdGhlIGVuY29kZSBzdGVwIGlzIGRvbmUuIHxydHBfdGltZXN0YW1wfCBtdXN0IG1hdGNoIHRo
ZQorICAvLyBwYXJhbWV0ZXIgdXNlIGluIHRoZSBVcGRhdGVMYXllckNvbmZpZygpIGNhbGwuCisg
IC8vIHxpc19rZXlmcmFtZXwgbXVzdCBiZSB0cnVlIGlmZiB0aGUgZW5jb2RlciBkZWNpZGVkIHRv
IGVuY29kZSB0aGlzIGZyYW1lIGFzCisgIC8vIGEga2V5ZnJhbWUuCisgIC8vIElmIHRoZSBlbmNv
ZGVyIGRlY2lkZWQgdG8gZHJvcCB0aGlzIGZyYW1lLCB8c2l6ZV9ieXRlc3wgbXVzdCBiZSBzZXQg
dG8gMCwKKyAgLy8gb3RoZXJ3aXNlIGl0IHNob3VsZCBpbmRpY2F0ZSB0aGUgc2l6ZSBpbiBieXRl
cyBvZiB0aGUgZW5jb2RlZCBmcmFtZS4KKyAgLy8gSWYgfHNpemVfYnl0ZXN8ID4gMCwgYW5kIHx2
cDhfaW5mb3wgaXMgbm90IG51bGwsIHRoZSBUZW1wb3JhbExheWVycworICAvLyBpbnN0YW5jZSBt
eSB1cGRhdGUgfHZwOF9pbmZvfCB3aXRoIGNvZGVjIHNwZWNpZmljIGRhdGEgc3VjaCBhcyB0ZW1w
b3JhbCBpZC4KKyAgLy8gU29tZSBmaWVsZHMgb2YgdGhpcyBzdHJ1Y3QgbWF5IGhhdmUgYWxyZWFk
eSBiZWVuIHBvcHVsYXRlZCBieSB0aGUgZW5jb2RlciwKKyAgLy8gY2hlY2sgYmVmb3JlIG92ZXJ3
cml0aW5nLgorICAvLyBJZiB8c2l6ZV9ieXRlc3wgPiAwLCB8cXB8IHNob3VsZCBpbmRpY2F0ZSB0
aGUgZnJhbWUtbGV2ZWwgUVAgdGhpcyBmcmFtZSB3YXMKKyAgLy8gZW5jb2RlZCBhdC4gSWYgdGhl
IGVuY29kZXIgZG9lcyBub3Qgc3VwcG9ydCBleHRyYWN0aW5nIHRoaXMsIHxxcHwgc2hvdWxkIGJl
CisgIC8vIHNldCB0byAwLgorICB2aXJ0dWFsIHZvaWQgT25FbmNvZGVEb25lKHVpbnQzMl90IHJ0
cF90aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemVfYnl0
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19rZXlmcmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcXAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29kZWNTcGVjaWZpY0luZm9WUDgqIHZwOF9pbmZvKSA9IDA7Cit9OworCit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1ZJREVPX0NPREVDU19WUDhfVEVNUE9SQUxf
TEFZRVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hdWRpby9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2F1ZGlvL0JVSUxELmduCmluZGV4IDkxY2VjZTkzY2I5YWFlNTBhYjUxYWJhNjQ1
MzkxZGU1MzVkMTUzZDEuLmMwNDVhZjYzNzY1MWQzN2U4ODFhZTMxYTg5ZDcyMzdiYmZlOTZiNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1
ZGlvL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2F1ZGlvL0JVSUxELmduCkBAIC0yNiwxOSArMjYsMTMgQEAgcnRjX3N0YXRpY19saWJyYXJ5
KCJhdWRpbyIpIHsKICAgICAiYXVkaW9fdHJhbnNwb3J0X2ltcGwuaCIsCiAgICAgImNoYW5uZWxf
cmVjZWl2ZS5jYyIsCiAgICAgImNoYW5uZWxfcmVjZWl2ZS5oIiwKLSAgICAiY2hhbm5lbF9yZWNl
aXZlX3Byb3h5LmNjIiwKLSAgICAiY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmgiLAogICAgICJjaGFu
bmVsX3NlbmQuY2MiLAogICAgICJjaGFubmVsX3NlbmQuaCIsCi0gICAgImNoYW5uZWxfc2VuZF9w
cm94eS5jYyIsCi0gICAgImNoYW5uZWxfc2VuZF9wcm94eS5oIiwKICAgICAiY29udmVyc2lvbi5o
IiwKICAgICAibnVsbF9hdWRpb19wb2xsZXIuY2MiLAogICAgICJudWxsX2F1ZGlvX3BvbGxlci5o
IiwKICAgICAicmVtaXhfcmVzYW1wbGUuY2MiLAogICAgICJyZW1peF9yZXNhbXBsZS5oIiwKLSAg
ICAidGltZV9pbnRlcnZhbC5jYyIsCi0gICAgInRpbWVfaW50ZXJ2YWwuaCIsCiAgICAgInRyYW5z
cG9ydF9mZWVkYmFja19wYWNrZXRfbG9zc190cmFja2VyLmNjIiwKICAgICAidHJhbnNwb3J0X2Zl
ZWRiYWNrX3BhY2tldF9sb3NzX3RyYWNrZXIuaCIsCiAgIF0KQEAgLTQ5LDcgKzQzLDYgQEAgcnRj
X3N0YXRpY19saWJyYXJ5KCJhdWRpbyIpIHsKICAgfQogCiAgIGRlcHMgPSBbCi0gICAgIi4uOndl
YnJ0Y19jb21tb24iLAogICAgICIuLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uL2FwaTpjYWxs
X2FwaSIsCiAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKQEAgLTY1
LDEyICs1OCwxNCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvIikgewogICAgICIuLi9jb21t
b25fYXVkaW86Y29tbW9uX2F1ZGlvX2MiLAogICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9hdWRp
byIsCiAgICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAorICAgICIuLi9sb2dnaW5n
OnJ0Y19zdHJlYW1fY29uZmlnIiwKICAgICAiLi4vbW9kdWxlcy9hdWRpb19jb2RpbmciLAorICAg
ICIuLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzphdWRpb19lbmNvZGVyX2NuZyIsCiAgICAgIi4uL21v
ZHVsZXMvYXVkaW9fY29kaW5nOmF1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uIiwKICAgICAiLi4vbW9k
dWxlcy9hdWRpb19jb2Rpbmc6YXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZyIsCi0gICAgIi4u
L21vZHVsZXMvYXVkaW9fY29kaW5nOmNuZyIsCiAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNl
IiwKICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nIiwKKyAgICAiLi4vbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgIi4uL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVy
OmJpdHJhdGVfY29udHJvbGxlciIsCiAgICAgIi4uL21vZHVsZXMvcGFjaW5nOnBhY2luZyIsCiAg
ICAgIi4uL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yOnJlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvciIsCkBAIC0xMjgsMjIgKzEyMywzNCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsK
ICAgICAgICJtb2NrX3ZvZV9jaGFubmVsX3Byb3h5LmgiLAogICAgICAgInJlbWl4X3Jlc2FtcGxl
X3VuaXR0ZXN0LmNjIiwKICAgICAgICJ0ZXN0L2F1ZGlvX3N0YXRzX3Rlc3QuY2MiLAotICAgICAg
InRpbWVfaW50ZXJ2YWxfdW5pdHRlc3QuY2MiLAorICAgICAgInRlc3QvbWVkaWFfdHJhbnNwb3J0
X3Rlc3QuY2MiLAogICAgICAgInRyYW5zcG9ydF9mZWVkYmFja19wYWNrZXRfbG9zc190cmFja2Vy
X3VuaXR0ZXN0LmNjIiwKICAgICBdCiAgICAgZGVwcyA9IFsKICAgICAgICI6YXVkaW8iLAogICAg
ICAgIjphdWRpb19lbmRfdG9fZW5kX3Rlc3QiLAorICAgICAgIi4uL2FwaTpsb29wYmFja19tZWRp
YV90cmFuc3BvcnQiLAogICAgICAgIi4uL2FwaTptb2NrX2F1ZGlvX21peGVyIiwKKyAgICAgICIu
Li9hcGk6bW9ja19mcmFtZV9kZWNyeXB0b3IiLAorICAgICAgIi4uL2FwaTptb2NrX2ZyYW1lX2Vu
Y3J5cHRvciIsCiAgICAgICAiLi4vYXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCisgICAgICAi
Li4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKKyAgICAgICIuLi9hcGkvYXVk
aW9fY29kZWNzL29wdXM6YXVkaW9fZGVjb2Rlcl9vcHVzIiwKKyAgICAgICIuLi9hcGkvYXVkaW9f
Y29kZWNzL29wdXM6YXVkaW9fZW5jb2Rlcl9vcHVzIiwKICAgICAgICIuLi9hcGkvdW5pdHM6dGlt
ZV9kZWx0YSIsCisgICAgICAiLi4vY2FsbDptb2NrX2JpdHJhdGVfYWxsb2NhdG9yIiwKICAgICAg
ICIuLi9jYWxsOm1vY2tfY2FsbF9pbnRlcmZhY2VzIiwKICAgICAgICIuLi9jYWxsOm1vY2tfcnRw
X2ludGVyZmFjZXMiLAogICAgICAgIi4uL2NhbGw6cnRwX2ludGVyZmFjZXMiLAogICAgICAgIi4u
L2NhbGw6cnRwX3JlY2VpdmVyIiwKICAgICAgICIuLi9jb21tb25fYXVkaW8iLAogICAgICAgIi4u
L2xvZ2dpbmc6bW9ja3MiLAorICAgICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAog
ICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOm1vY2tfYXVkaW9fZGV2aWNlIiwKKyAgICAg
ICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCisKKyAgICAgICMgRm9yIFRlc3RB
dWRpb0RldmljZU1vZHVsZQorICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2Rl
dmljZV9pbXBsIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX21peGVyOmF1ZGlvX21peGVyX2lt
cGwiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5n
X3N0YXRpc3RpY3MiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzptb2NrcyIs
CkBAIC0xNTEsOSArMTU4LDkgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4v
bW9kdWxlcy9wYWNpbmc6cGFjaW5nIiwKICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOm1vY2tf
cnRwX3J0Y3AiLAogICAgICAgIi4uL21vZHVsZXMvcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwK
KyAgICAgICIuLi9tb2R1bGVzL3V0aWxpdHkiLAogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIs
CiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICAgIi4uL3J0Y19i
YXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfdGFza19x
dWV1ZSIsCiAgICAgICAiLi4vcnRjX2Jhc2U6c2FmZV9jb21wYXJlIiwKICAgICAgICIuLi9zeXN0
ZW1fd3JhcHBlcnM6c3lzdGVtX3dyYXBwZXJzIiwKQEAgLTI2NSw2ICsyNzIsNyBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi90ZXN0OnNpbmdsZV90aHJlYWRlZF90YXNrX3F1
ZXVlIiwKICAgICAgICIuLi90ZXN0OnRlc3RfY29tbW9uIiwKICAgICAgICIuLi90ZXN0OnRlc3Rf
bWFpbiIsCisgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGluZy9n
dGVzdCIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAg
ICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmNjCmluZGV4IDU2
M2U4YTAzNmEzMDNmZGU3ODc5Y2FlZGE2YzUyM2I4YzJkMDQzYjkuLjhkNGFmZTA4ZTM3NjdjYmVi
YjY0ZDZkYmRlNGE3MmNkMjM2MzJhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3Jl
Y2VpdmVfc3RyZWFtLmNjCkBAIC0xMywxNCArMTMsMTcgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAj
aW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2lu
Y2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRp
b19mb3JtYXQuaCIKICNpbmNsdWRlICJhcGkvY2FsbC9hdWRpb19zaW5rLmgiCisjaW5jbHVkZSAi
YXBpL3J0cHBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19zZW5kX3N0cmVhbS5o
IgogI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3N0YXRlLmgiCi0jaW5jbHVkZSAiYXVkaW8vY2hhbm5l
bF9yZWNlaXZlX3Byb3h5LmgiCisjaW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9yZWNlaXZlLmgiCiAj
aW5jbHVkZSAiYXVkaW8vY29udmVyc2lvbi5oIgorI2luY2x1ZGUgImNhbGwvcnRwX2NvbmZpZy5o
IgogI2luY2x1ZGUgImNhbGwvcnRwX3N0cmVhbV9yZWNlaXZlcl9jb250cm9sbGVyX2ludGVyZmFj
ZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUv
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL3J0cF9ydGNwLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5n
X2J1aWxkZXIuaCIKQEAgLTUzLDYgKzU2LDcgQEAgc3RkOjpzdHJpbmcgQXVkaW9SZWNlaXZlU3Ry
ZWFtOjpDb25maWc6OlRvU3RyaW5nKCkgY29uc3QgewogICBzcyA8PCAie3J0cDogIiA8PCBydHAu
VG9TdHJpbmcoKTsKICAgc3MgPDwgIiwgcnRjcF9zZW5kX3RyYW5zcG9ydDogIgogICAgICA8PCAo
cnRjcF9zZW5kX3RyYW5zcG9ydCA/ICIoVHJhbnNwb3J0KSIgOiAibnVsbCIpOworICBzcyA8PCAi
LCBtZWRpYV90cmFuc3BvcnQ6ICIgPDwgKG1lZGlhX3RyYW5zcG9ydCA/ICIoVHJhbnNwb3J0KSIg
OiAibnVsbCIpOwogICBpZiAoIXN5bmNfZ3JvdXAuZW1wdHkoKSkgewogICAgIHNzIDw8ICIsIHN5
bmNfZ3JvdXA6ICIgPDwgc3luY19ncm91cDsKICAgfQpAQCAtNjIsNyArNjYsNyBAQCBzdGQ6OnN0
cmluZyBBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZzo6VG9TdHJpbmcoKSBjb25zdCB7CiAKIG5h
bWVzcGFjZSBpbnRlcm5hbCB7CiBuYW1lc3BhY2Ugewotc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hh
bm5lbFJlY2VpdmVQcm94eT4gQ3JlYXRlQ2hhbm5lbEFuZFByb3h5KAorc3RkOjp1bmlxdWVfcHRy
PHZvZTo6Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2U+IENyZWF0ZUNoYW5uZWxSZWNlaXZlKAogICAg
IHdlYnJ0Yzo6QXVkaW9TdGF0ZSogYXVkaW9fc3RhdGUsCiAgICAgUHJvY2Vzc1RocmVhZCogbW9k
dWxlX3Byb2Nlc3NfdGhyZWFkLAogICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFt
OjpDb25maWcmIGNvbmZpZywKQEAgLTcwLDEzICs3NCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8dm9l
OjpDaGFubmVsUmVjZWl2ZVByb3h5PiBDcmVhdGVDaGFubmVsQW5kUHJveHkoCiAgIFJUQ19EQ0hF
Q0soYXVkaW9fc3RhdGUpOwogICBpbnRlcm5hbDo6QXVkaW9TdGF0ZSogaW50ZXJuYWxfYXVkaW9f
c3RhdGUgPQogICAgICAgc3RhdGljX2Nhc3Q8aW50ZXJuYWw6OkF1ZGlvU3RhdGUqPihhdWRpb19z
dGF0ZSk7Ci0gIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTx2b2U6OkNoYW5uZWxSZWNlaXZlUHJv
eHk+KAotICAgICAgYWJzbDo6bWFrZV91bmlxdWU8dm9lOjpDaGFubmVsUmVjZWl2ZT4oCi0gICAg
ICAgICAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLCBpbnRlcm5hbF9hdWRpb19zdGF0ZS0+YXVkaW9f
ZGV2aWNlX21vZHVsZSgpLAotICAgICAgICAgIGNvbmZpZy5ydGNwX3NlbmRfdHJhbnNwb3J0LCBl
dmVudF9sb2csIGNvbmZpZy5ydHAucmVtb3RlX3NzcmMsCi0gICAgICAgICAgY29uZmlnLmppdHRl
cl9idWZmZXJfbWF4X3BhY2tldHMsCi0gICAgICAgICAgY29uZmlnLmppdHRlcl9idWZmZXJfZmFz
dF9hY2NlbGVyYXRlLCBjb25maWcuZGVjb2Rlcl9mYWN0b3J5LAotICAgICAgICAgIGNvbmZpZy5j
b2RlY19wYWlyX2lkLCBjb25maWcuZnJhbWVfZGVjcnlwdG9yKSk7CisgIHJldHVybiB2b2U6OkNy
ZWF0ZUNoYW5uZWxSZWNlaXZlKAorICAgICAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLCBpbnRlcm5h
bF9hdWRpb19zdGF0ZS0+YXVkaW9fZGV2aWNlX21vZHVsZSgpLAorICAgICAgY29uZmlnLm1lZGlh
X3RyYW5zcG9ydCwgY29uZmlnLnJ0Y3Bfc2VuZF90cmFuc3BvcnQsIGV2ZW50X2xvZywKKyAgICAg
IGNvbmZpZy5ydHAucmVtb3RlX3NzcmMsIGNvbmZpZy5qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRz
LAorICAgICAgY29uZmlnLmppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlLCBjb25maWcuaml0
dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMsCisgICAgICBjb25maWcuZGVjb2Rlcl9mYWN0b3J5LCBj
b25maWcuY29kZWNfcGFpcl9pZCwgY29uZmlnLmZyYW1lX2RlY3J5cHRvciwKKyAgICAgIGNvbmZp
Zy5jcnlwdG9fb3B0aW9ucyk7CiB9CiB9ICAvLyBuYW1lc3BhY2UKIApAQCAtOTIsMTAgKzk2LDEw
IEBAIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6QXVkaW9SZWNlaXZlU3RyZWFtKAogICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9sb2csCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgQ3JlYXRlQ2hhbm5lbEFuZFByb3h5KGF1ZGlvX3N0YXRlLmdldCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfcHJvY2Vzc190
aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZl
bnRfbG9nKSkge30KKyAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVDaGFubmVsUmVjZWl2
ZShhdWRpb19zdGF0ZS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2xvZykpIHt9CiAKIEF1ZGlvUmVjZWl2ZVN0cmVh
bTo6QXVkaW9SZWNlaXZlU3RyZWFtKAogICAgIFJ0cFN0cmVhbVJlY2VpdmVyQ29udHJvbGxlcklu
dGVyZmFjZSogcmVjZWl2ZXJfY29udHJvbGxlciwKQEAgLTEwMywyNSArMTA3LDI2IEBAIEF1ZGlv
UmVjZWl2ZVN0cmVhbTo6QXVkaW9SZWNlaXZlU3RyZWFtKAogICAgIGNvbnN0IHdlYnJ0Yzo6QXVk
aW9SZWNlaXZlU3RyZWFtOjpDb25maWcmIGNvbmZpZywKICAgICBjb25zdCBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiYgYXVkaW9fc3RhdGUsCiAgICAgd2VicnRjOjpSdGNF
dmVudExvZyogZXZlbnRfbG9nLAotICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxSZWNl
aXZlUHJveHk+IGNoYW5uZWxfcHJveHkpCi0gICAgOiBhdWRpb19zdGF0ZV8oYXVkaW9fc3RhdGUp
LCBjaGFubmVsX3Byb3h5XyhzdGQ6Om1vdmUoY2hhbm5lbF9wcm94eSkpIHsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8dm9lOjpDaGFubmVsUmVjZWl2ZUludGVyZmFjZT4gY2hhbm5lbF9yZWNlaXZlKQor
ICAgIDogYXVkaW9fc3RhdGVfKGF1ZGlvX3N0YXRlKSwgY2hhbm5lbF9yZWNlaXZlXyhzdGQ6Om1v
dmUoY2hhbm5lbF9yZWNlaXZlKSkgewogICBSVENfTE9HKExTX0lORk8pIDw8ICJBdWRpb1JlY2Vp
dmVTdHJlYW06ICIgPDwgY29uZmlnLnJ0cC5yZW1vdGVfc3NyYzsKLSAgUlRDX0RDSEVDSyhyZWNl
aXZlcl9jb250cm9sbGVyKTsKLSAgUlRDX0RDSEVDSyhwYWNrZXRfcm91dGVyKTsKICAgUlRDX0RD
SEVDSyhjb25maWcuZGVjb2Rlcl9mYWN0b3J5KTsKICAgUlRDX0RDSEVDSyhjb25maWcucnRjcF9z
ZW5kX3RyYW5zcG9ydCk7CiAgIFJUQ19EQ0hFQ0soYXVkaW9fc3RhdGVfKTsKLSAgUlRDX0RDSEVD
SyhjaGFubmVsX3Byb3h5Xyk7CisgIFJUQ19EQ0hFQ0soY2hhbm5lbF9yZWNlaXZlXyk7CiAKICAg
bW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZyb21UaHJlYWQoKTsKIAotICAv
LyBDb25maWd1cmUgYmFuZHdpZHRoIGVzdGltYXRpb24uCi0gIGNoYW5uZWxfcHJveHlfLT5SZWdp
c3RlclJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKHBhY2tldF9yb3V0ZXIpOwotCi0g
IC8vIFJlZ2lzdGVyIHdpdGggdHJhbnNwb3J0LgotICBydHBfc3RyZWFtX3JlY2VpdmVyXyA9IHJl
Y2VpdmVyX2NvbnRyb2xsZXItPkNyZWF0ZVJlY2VpdmVyKAotICAgICAgY29uZmlnLnJ0cC5yZW1v
dGVfc3NyYywgY2hhbm5lbF9wcm94eV8uZ2V0KCkpOworICBpZiAoIWNvbmZpZy5tZWRpYV90cmFu
c3BvcnQpIHsKKyAgICBSVENfRENIRUNLKHJlY2VpdmVyX2NvbnRyb2xsZXIpOworICAgIFJUQ19E
Q0hFQ0socGFja2V0X3JvdXRlcik7CisgICAgLy8gQ29uZmlndXJlIGJhbmR3aWR0aCBlc3RpbWF0
aW9uLgorICAgIGNoYW5uZWxfcmVjZWl2ZV8tPlJlZ2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9uQ29u
dHJvbE9iamVjdHMocGFja2V0X3JvdXRlcik7CiAKKyAgICAvLyBSZWdpc3RlciB3aXRoIHRyYW5z
cG9ydC4KKyAgICBydHBfc3RyZWFtX3JlY2VpdmVyXyA9IHJlY2VpdmVyX2NvbnRyb2xsZXItPkNy
ZWF0ZVJlY2VpdmVyKAorICAgICAgICBjb25maWcucnRwLnJlbW90ZV9zc3JjLCBjaGFubmVsX3Jl
Y2VpdmVfLmdldCgpKTsKKyAgfQogICBDb25maWd1cmVTdHJlYW0odGhpcywgY29uZmlnLCB0cnVl
KTsKIH0KIApAQCAtMTI5LDggKzEzNCwxMCBAQCBBdWRpb1JlY2VpdmVTdHJlYW06On5BdWRpb1Jl
Y2VpdmVTdHJlYW0oKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNr
ZXJfKTsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAifkF1ZGlvUmVjZWl2ZVN0cmVhbTogIiA8PCBj
b25maWdfLnJ0cC5yZW1vdGVfc3NyYzsKICAgU3RvcCgpOwotICBjaGFubmVsX3Byb3h5Xy0+RGlz
YXNzb2NpYXRlU2VuZENoYW5uZWwoKTsKLSAgY2hhbm5lbF9wcm94eV8tPlJlc2V0UmVjZWl2ZXJD
b25nZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKKyAgY2hhbm5lbF9yZWNlaXZlXy0+U2V0QXNzb2Np
YXRlZFNlbmRDaGFubmVsKG51bGxwdHIpOworICBpZiAoIWNvbmZpZ18ubWVkaWFfdHJhbnNwb3J0
KSB7CisgICAgY2hhbm5lbF9yZWNlaXZlXy0+UmVzZXRSZWNlaXZlckNvbmdlc3Rpb25Db250cm9s
T2JqZWN0cygpOworICB9CiB9CiAKIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpSZWNvbmZpZ3Vy
ZSgKQEAgLTE0NCw3ICsxNTEsNyBAQCB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6U3RhcnQoKSB7
CiAgIGlmIChwbGF5aW5nXykgewogICAgIHJldHVybjsKICAgfQotICBjaGFubmVsX3Byb3h5Xy0+
U3RhcnRQbGF5b3V0KCk7CisgIGNoYW5uZWxfcmVjZWl2ZV8tPlN0YXJ0UGxheW91dCgpOwogICBw
bGF5aW5nXyA9IHRydWU7CiAgIGF1ZGlvX3N0YXRlKCktPkFkZFJlY2VpdmluZ1N0cmVhbSh0aGlz
KTsKIH0KQEAgLTE1NCw3ICsxNjEsNyBAQCB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6U3RvcCgp
IHsKICAgaWYgKCFwbGF5aW5nXykgewogICAgIHJldHVybjsKICAgfQotICBjaGFubmVsX3Byb3h5
Xy0+U3RvcFBsYXlvdXQoKTsKKyAgY2hhbm5lbF9yZWNlaXZlXy0+U3RvcFBsYXlvdXQoKTsKICAg
cGxheWluZ18gPSBmYWxzZTsKICAgYXVkaW9fc3RhdGUoKS0+UmVtb3ZlUmVjZWl2aW5nU3RyZWFt
KHRoaXMpOwogfQpAQCAtMTY1LDExICsxNzIsMTEgQEAgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJl
YW06OlN0YXRzIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6R2V0U3RhdHMoKSBjb25zdCB7CiAgIHN0YXRz
LnJlbW90ZV9zc3JjID0gY29uZmlnXy5ydHAucmVtb3RlX3NzcmM7CiAKICAgd2VicnRjOjpDYWxs
UmVjZWl2ZVN0YXRpc3RpY3MgY2FsbF9zdGF0cyA9Ci0gICAgICBjaGFubmVsX3Byb3h5Xy0+R2V0
UlRDUFN0YXRpc3RpY3MoKTsKKyAgICAgIGNoYW5uZWxfcmVjZWl2ZV8tPkdldFJUQ1BTdGF0aXN0
aWNzKCk7CiAgIC8vIFRPRE8oc29sZW5iZXJnKTogRG9uJ3QgcmV0dXJuIGhlcmUgaWYgd2UgY2Fu
J3QgZ2V0IHRoZSBjb2RlYyAtIHJldHVybiB0aGUKICAgLy8gICAgICAgICAgICAgICAgICBzdGF0
cyB3ZSAqY2FuKiBnZXQuCiAgIHdlYnJ0Yzo6Q29kZWNJbnN0IGNvZGVjX2luc3QgPSB7MH07Ci0g
IGlmICghY2hhbm5lbF9wcm94eV8tPkdldFJlY0NvZGVjKCZjb2RlY19pbnN0KSkgeworICBpZiAo
IWNoYW5uZWxfcmVjZWl2ZV8tPkdldFJlY0NvZGVjKCZjb2RlY19pbnN0KSkgewogICAgIHJldHVy
biBzdGF0czsKICAgfQogCkBAIC0xODYsMTMgKzE5MywxMyBAQCB3ZWJydGM6OkF1ZGlvUmVjZWl2
ZVN0cmVhbTo6U3RhdHMgQXVkaW9SZWNlaXZlU3RyZWFtOjpHZXRTdGF0cygpIGNvbnN0IHsKICAg
aWYgKGNvZGVjX2luc3QucGxmcmVxIC8gMTAwMCA+IDApIHsKICAgICBzdGF0cy5qaXR0ZXJfbXMg
PSBjYWxsX3N0YXRzLmppdHRlclNhbXBsZXMgLyAoY29kZWNfaW5zdC5wbGZyZXEgLyAxMDAwKTsK
ICAgfQotICBzdGF0cy5kZWxheV9lc3RpbWF0ZV9tcyA9IGNoYW5uZWxfcHJveHlfLT5HZXREZWxh
eUVzdGltYXRlKCk7Ci0gIHN0YXRzLmF1ZGlvX2xldmVsID0gY2hhbm5lbF9wcm94eV8tPkdldFNw
ZWVjaE91dHB1dExldmVsRnVsbFJhbmdlKCk7Ci0gIHN0YXRzLnRvdGFsX291dHB1dF9lbmVyZ3kg
PSBjaGFubmVsX3Byb3h5Xy0+R2V0VG90YWxPdXRwdXRFbmVyZ3koKTsKLSAgc3RhdHMudG90YWxf
b3V0cHV0X2R1cmF0aW9uID0gY2hhbm5lbF9wcm94eV8tPkdldFRvdGFsT3V0cHV0RHVyYXRpb24o
KTsKKyAgc3RhdHMuZGVsYXlfZXN0aW1hdGVfbXMgPSBjaGFubmVsX3JlY2VpdmVfLT5HZXREZWxh
eUVzdGltYXRlKCk7CisgIHN0YXRzLmF1ZGlvX2xldmVsID0gY2hhbm5lbF9yZWNlaXZlXy0+R2V0
U3BlZWNoT3V0cHV0TGV2ZWxGdWxsUmFuZ2UoKTsKKyAgc3RhdHMudG90YWxfb3V0cHV0X2VuZXJn
eSA9IGNoYW5uZWxfcmVjZWl2ZV8tPkdldFRvdGFsT3V0cHV0RW5lcmd5KCk7CisgIHN0YXRzLnRv
dGFsX291dHB1dF9kdXJhdGlvbiA9IGNoYW5uZWxfcmVjZWl2ZV8tPkdldFRvdGFsT3V0cHV0RHVy
YXRpb24oKTsKIAogICAvLyBHZXQgaml0dGVyIGJ1ZmZlciBhbmQgdG90YWwgZGVsYXkgKGFsZyAr
IGppdHRlciArIHBsYXlvdXQpIHN0YXRzLgotICBhdXRvIG5zID0gY2hhbm5lbF9wcm94eV8tPkdl
dE5ldHdvcmtTdGF0aXN0aWNzKCk7CisgIGF1dG8gbnMgPSBjaGFubmVsX3JlY2VpdmVfLT5HZXRO
ZXR3b3JrU3RhdGlzdGljcygpOwogICBzdGF0cy5qaXR0ZXJfYnVmZmVyX21zID0gbnMuY3VycmVu
dEJ1ZmZlclNpemU7CiAgIHN0YXRzLmppdHRlcl9idWZmZXJfcHJlZmVycmVkX21zID0gbnMucHJl
ZmVycmVkQnVmZmVyU2l6ZTsKICAgc3RhdHMudG90YWxfc2FtcGxlc19yZWNlaXZlZCA9IG5zLnRv
dGFsU2FtcGxlc1JlY2VpdmVkOwpAQCAtMjA3LDggKzIxNCwxMCBAQCB3ZWJydGM6OkF1ZGlvUmVj
ZWl2ZVN0cmVhbTo6U3RhdHMgQXVkaW9SZWNlaXZlU3RyZWFtOjpHZXRTdGF0cygpIGNvbnN0IHsK
ICAgc3RhdHMuc2Vjb25kYXJ5X2Rpc2NhcmRlZF9yYXRlID0gUTE0VG9GbG9hdChucy5jdXJyZW50
U2Vjb25kYXJ5RGlzY2FyZGVkUmF0ZSk7CiAgIHN0YXRzLmFjY2VsZXJhdGVfcmF0ZSA9IFExNFRv
RmxvYXQobnMuY3VycmVudEFjY2VsZXJhdGVSYXRlKTsKICAgc3RhdHMucHJlZW1wdGl2ZV9leHBh
bmRfcmF0ZSA9IFExNFRvRmxvYXQobnMuY3VycmVudFByZWVtcHRpdmVSYXRlKTsKKyAgc3RhdHMu
aml0dGVyX2J1ZmZlcl9mbHVzaGVzID0gbnMucGFja2V0QnVmZmVyRmx1c2hlczsKKyAgc3RhdHMu
ZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMgPSBucy5kZWxheWVkUGFja2V0T3V0YWdlU2Ft
cGxlczsKIAotICBhdXRvIGRzID0gY2hhbm5lbF9wcm94eV8tPkdldERlY29kaW5nQ2FsbFN0YXRp
c3RpY3MoKTsKKyAgYXV0byBkcyA9IGNoYW5uZWxfcmVjZWl2ZV8tPkdldERlY29kaW5nQ2FsbFN0
YXRpc3RpY3MoKTsKICAgc3RhdHMuZGVjb2RpbmdfY2FsbHNfdG9fc2lsZW5jZV9nZW5lcmF0b3Ig
PSBkcy5jYWxsc190b19zaWxlbmNlX2dlbmVyYXRvcjsKICAgc3RhdHMuZGVjb2RpbmdfY2FsbHNf
dG9fbmV0ZXEgPSBkcy5jYWxsc190b19uZXRlcTsKICAgc3RhdHMuZGVjb2Rpbmdfbm9ybWFsID0g
ZHMuZGVjb2RlZF9ub3JtYWw7CkBAIC0yMjIsMjMgKzIzMSwyMyBAQCB3ZWJydGM6OkF1ZGlvUmVj
ZWl2ZVN0cmVhbTo6U3RhdHMgQXVkaW9SZWNlaXZlU3RyZWFtOjpHZXRTdGF0cygpIGNvbnN0IHsK
IAogdm9pZCBBdWRpb1JlY2VpdmVTdHJlYW06OlNldFNpbmsoQXVkaW9TaW5rSW50ZXJmYWNlKiBz
aW5rKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKLSAg
Y2hhbm5lbF9wcm94eV8tPlNldFNpbmsoc2luayk7CisgIGNoYW5uZWxfcmVjZWl2ZV8tPlNldFNp
bmsoc2luayk7CiB9CiAKIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpTZXRHYWluKGZsb2F0IGdh
aW4pIHsKICAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwotICBj
aGFubmVsX3Byb3h5Xy0+U2V0Q2hhbm5lbE91dHB1dFZvbHVtZVNjYWxpbmcoZ2Fpbik7CisgIGNo
YW5uZWxfcmVjZWl2ZV8tPlNldENoYW5uZWxPdXRwdXRWb2x1bWVTY2FsaW5nKGdhaW4pOwogfQog
CiBzdGQ6OnZlY3RvcjxSdHBTb3VyY2U+IEF1ZGlvUmVjZWl2ZVN0cmVhbTo6R2V0U291cmNlcygp
IGNvbnN0IHsKICAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwot
ICByZXR1cm4gY2hhbm5lbF9wcm94eV8tPkdldFNvdXJjZXMoKTsKKyAgcmV0dXJuIGNoYW5uZWxf
cmVjZWl2ZV8tPkdldFNvdXJjZXMoKTsKIH0KIAogQXVkaW9NaXhlcjo6U291cmNlOjpBdWRpb0Zy
YW1lSW5mbyBBdWRpb1JlY2VpdmVTdHJlYW06OkdldEF1ZGlvRnJhbWVXaXRoSW5mbygKICAgICBp
bnQgc2FtcGxlX3JhdGVfaHosCiAgICAgQXVkaW9GcmFtZSogYXVkaW9fZnJhbWUpIHsKLSAgcmV0
dXJuIGNoYW5uZWxfcHJveHlfLT5HZXRBdWRpb0ZyYW1lV2l0aEluZm8oc2FtcGxlX3JhdGVfaHos
IGF1ZGlvX2ZyYW1lKTsKKyAgcmV0dXJuIGNoYW5uZWxfcmVjZWl2ZV8tPkdldEF1ZGlvRnJhbWVX
aXRoSW5mbyhzYW1wbGVfcmF0ZV9oeiwgYXVkaW9fZnJhbWUpOwogfQogCiBpbnQgQXVkaW9SZWNl
aXZlU3RyZWFtOjpTc3JjKCkgY29uc3QgewpAQCAtMjQ2LDcgKzI1NSw3IEBAIGludCBBdWRpb1Jl
Y2VpdmVTdHJlYW06OlNzcmMoKSBjb25zdCB7CiB9CiAKIGludCBBdWRpb1JlY2VpdmVTdHJlYW06
OlByZWZlcnJlZFNhbXBsZVJhdGUoKSBjb25zdCB7Ci0gIHJldHVybiBjaGFubmVsX3Byb3h5Xy0+
UHJlZmVycmVkU2FtcGxlUmF0ZSgpOworICByZXR1cm4gY2hhbm5lbF9yZWNlaXZlXy0+UHJlZmVy
cmVkU2FtcGxlUmF0ZSgpOwogfQogCiBpbnQgQXVkaW9SZWNlaXZlU3RyZWFtOjppZCgpIGNvbnN0
IHsKQEAgLTI1NiwzMiArMjY1LDI5IEBAIGludCBBdWRpb1JlY2VpdmVTdHJlYW06OmlkKCkgY29u
c3QgewogCiBhYnNsOjpvcHRpb25hbDxTeW5jYWJsZTo6SW5mbz4gQXVkaW9SZWNlaXZlU3RyZWFt
OjpHZXRJbmZvKCkgY29uc3QgewogICBSVENfRENIRUNLX1JVTl9PTigmbW9kdWxlX3Byb2Nlc3Nf
dGhyZWFkX2NoZWNrZXJfKTsKLSAgYWJzbDo6b3B0aW9uYWw8U3luY2FibGU6OkluZm8+IGluZm8g
PSBjaGFubmVsX3Byb3h5Xy0+R2V0U3luY0luZm8oKTsKKyAgYWJzbDo6b3B0aW9uYWw8U3luY2Fi
bGU6OkluZm8+IGluZm8gPSBjaGFubmVsX3JlY2VpdmVfLT5HZXRTeW5jSW5mbygpOwogCiAgIGlm
ICghaW5mbykKICAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKIAotICBpbmZvLT5jdXJyZW50X2Rl
bGF5X21zID0gY2hhbm5lbF9wcm94eV8tPkdldERlbGF5RXN0aW1hdGUoKTsKKyAgaW5mby0+Y3Vy
cmVudF9kZWxheV9tcyA9IGNoYW5uZWxfcmVjZWl2ZV8tPkdldERlbGF5RXN0aW1hdGUoKTsKICAg
cmV0dXJuIGluZm87CiB9CiAKIHVpbnQzMl90IEF1ZGlvUmVjZWl2ZVN0cmVhbTo6R2V0UGxheW91
dFRpbWVzdGFtcCgpIGNvbnN0IHsKICAgLy8gQ2FsbGVkIG9uIHZpZGVvIGNhcHR1cmUgdGhyZWFk
LgotICByZXR1cm4gY2hhbm5lbF9wcm94eV8tPkdldFBsYXlvdXRUaW1lc3RhbXAoKTsKKyAgcmV0
dXJuIGNoYW5uZWxfcmVjZWl2ZV8tPkdldFBsYXlvdXRUaW1lc3RhbXAoKTsKIH0KIAogdm9pZCBB
dWRpb1JlY2VpdmVTdHJlYW06OlNldE1pbmltdW1QbGF5b3V0RGVsYXkoaW50IGRlbGF5X21zKSB7
CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZtb2R1bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl8pOwot
ICByZXR1cm4gY2hhbm5lbF9wcm94eV8tPlNldE1pbmltdW1QbGF5b3V0RGVsYXkoZGVsYXlfbXMp
OworICByZXR1cm4gY2hhbm5lbF9yZWNlaXZlXy0+U2V0TWluaW11bVBsYXlvdXREZWxheShkZWxh
eV9tcyk7CiB9CiAKIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpBc3NvY2lhdGVTZW5kU3RyZWFt
KEF1ZGlvU2VuZFN0cmVhbSogc2VuZF9zdHJlYW0pIHsKICAgUlRDX0RDSEVDS19SVU5fT04oJndv
cmtlcl90aHJlYWRfY2hlY2tlcl8pOwotICBpZiAoc2VuZF9zdHJlYW0pIHsKLSAgICBjaGFubmVs
X3Byb3h5Xy0+QXNzb2NpYXRlU2VuZENoYW5uZWwoc2VuZF9zdHJlYW0tPkdldENoYW5uZWxQcm94
eSgpKTsKLSAgfSBlbHNlIHsKLSAgICBjaGFubmVsX3Byb3h5Xy0+RGlzYXNzb2NpYXRlU2VuZENo
YW5uZWwoKTsKLSAgfQorICBjaGFubmVsX3JlY2VpdmVfLT5TZXRBc3NvY2lhdGVkU2VuZENoYW5u
ZWwoCisgICAgICBzZW5kX3N0cmVhbSA/IHNlbmRfc3RyZWFtLT5HZXRDaGFubmVsKCkgOiBudWxs
cHRyKTsKICAgYXNzb2NpYXRlZF9zZW5kX3N0cmVhbV8gPSBzZW5kX3N0cmVhbTsKIH0KIApAQCAt
Mjk0LDcgKzMwMCw3IEBAIGJvb2wgQXVkaW9SZWNlaXZlU3RyZWFtOjpEZWxpdmVyUnRjcChjb25z
dCB1aW50OF90KiBwYWNrZXQsIHNpemVfdCBsZW5ndGgpIHsKICAgLy8gY2FsbHMgb24gdGhlIHdv
cmtlciB0aHJlYWQuIFdlIHNob3VsZCBtb3ZlIHRvd2FyZHMgYWx3YXlzIHVzaW5nIGEgbmV0d29y
awogICAvLyB0aHJlYWQuIFRoZW4gdGhpcyBjaGVjayBjYW4gYmUgZW5hYmxlZC4KICAgLy8gUlRD
X0RDSEVDSyghdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHJldHVy
biBjaGFubmVsX3Byb3h5Xy0+UmVjZWl2ZWRSVENQUGFja2V0KHBhY2tldCwgbGVuZ3RoKTsKKyAg
cmV0dXJuIGNoYW5uZWxfcmVjZWl2ZV8tPlJlY2VpdmVkUlRDUFBhY2tldChwYWNrZXQsIGxlbmd0
aCk7CiB9CiAKIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpPblJ0cFBhY2tldChjb25zdCBSdHBQ
YWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CkBAIC0zMDIsNyArMzA4LDcgQEAgdm9pZCBBdWRpb1Jl
Y2VpdmVTdHJlYW06Ok9uUnRwUGFja2V0KGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQp
IHsKICAgLy8gY2FsbHMgb24gdGhlIHdvcmtlciB0aHJlYWQuIFdlIHNob3VsZCBtb3ZlIHRvd2Fy
ZHMgYWx3YXlzIHVzaW5nIGEgbmV0d29yawogICAvLyB0aHJlYWQuIFRoZW4gdGhpcyBjaGVjayBj
YW4gYmUgZW5hYmxlZC4KICAgLy8gUlRDX0RDSEVDSyghdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9u
VmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfcHJveHlfLT5PblJ0cFBhY2tldChwYWNrZXQpOwor
ICBjaGFubmVsX3JlY2VpdmVfLT5PblJ0cFBhY2tldChwYWNrZXQpOwogfQogCiBjb25zdCB3ZWJy
dGM6OkF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnJiBBdWRpb1JlY2VpdmVTdHJlYW06OmNvbmZp
ZygpIGNvbnN0IHsKQEAgLTMyOCw3ICszMzQsNyBAQCB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6
Q29uZmlndXJlU3RyZWFtKEF1ZGlvUmVjZWl2ZVN0cmVhbSogc3RyZWFtLAogICBSVENfTE9HKExT
X0lORk8pIDw8ICJBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZ3VyZVN0cmVhbTogIgogICAgICAg
ICAgICAgICAgICAgIDw8IG5ld19jb25maWcuVG9TdHJpbmcoKTsKICAgUlRDX0RDSEVDSyhzdHJl
YW0pOwotICBjb25zdCBhdXRvJiBjaGFubmVsX3Byb3h5ID0gc3RyZWFtLT5jaGFubmVsX3Byb3h5
XzsKKyAgY29uc3QgYXV0byYgY2hhbm5lbF9yZWNlaXZlID0gc3RyZWFtLT5jaGFubmVsX3JlY2Vp
dmVfOwogICBjb25zdCBhdXRvJiBvbGRfY29uZmlnID0gc3RyZWFtLT5jb25maWdfOwogCiAgIC8v
IENvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB3aGljaCBjYW5ub3QgYmUgY2hhbmdlZC4KQEAgLTM0
Miw3ICszNDgsNyBAQCB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlndXJlU3RyZWFtKEF1
ZGlvUmVjZWl2ZVN0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAgIG9sZF9jb25maWcuZGVjb2Rl
cl9mYWN0b3J5ID09IG5ld19jb25maWcuZGVjb2Rlcl9mYWN0b3J5KTsKIAogICBpZiAoZmlyc3Rf
dGltZSB8fCBvbGRfY29uZmlnLnJ0cC5sb2NhbF9zc3JjICE9IG5ld19jb25maWcucnRwLmxvY2Fs
X3NzcmMpIHsKLSAgICBjaGFubmVsX3Byb3h5LT5TZXRMb2NhbFNTUkMobmV3X2NvbmZpZy5ydHAu
bG9jYWxfc3NyYyk7CisgICAgY2hhbm5lbF9yZWNlaXZlLT5TZXRMb2NhbFNTUkMobmV3X2NvbmZp
Zy5ydHAubG9jYWxfc3NyYyk7CiAgIH0KIAogICBpZiAoIWZpcnN0X3RpbWUpIHsKQEAgLTM1NCwx
MSArMzYwLDExIEBAIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpDb25maWd1cmVTdHJlYW0oQXVk
aW9SZWNlaXZlU3RyZWFtKiBzdHJlYW0sCiAgIC8vIHVzaW5nIHRoZSBhY3R1YWwgcGFja2V0IHNp
emUgZm9yIHRoZSBjb25maWd1cmVkIGNvZGVjLgogICBpZiAoZmlyc3RfdGltZSB8fCBvbGRfY29u
ZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zICE9CiAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdfY29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+
U2V0TkFDS1N0YXR1cyhuZXdfY29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zICE9IDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfY29uZmlnLnJ0cC5uYWNrLnJ0cF9o
aXN0b3J5X21zIC8gMjApOworICAgIGNoYW5uZWxfcmVjZWl2ZS0+U2V0TkFDS1N0YXR1cyhuZXdf
Y29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zICE9IDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld19jb25maWcucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgLyAyMCk7
CiAgIH0KICAgaWYgKGZpcnN0X3RpbWUgfHwgb2xkX2NvbmZpZy5kZWNvZGVyX21hcCAhPSBuZXdf
Y29uZmlnLmRlY29kZXJfbWFwKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0UmVjZWl2ZUNvZGVj
cyhuZXdfY29uZmlnLmRlY29kZXJfbWFwKTsKKyAgICBjaGFubmVsX3JlY2VpdmUtPlNldFJlY2Vp
dmVDb2RlY3MobmV3X2NvbmZpZy5kZWNvZGVyX21hcCk7CiAgIH0KIAogICBzdHJlYW0tPmNvbmZp
Z18gPSBuZXdfY29uZmlnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW0uaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFt
LmgKaW5kZXggZTk4MmIwNGQ1NGI4ZTdmMjczZjMzODk1OWQ4MjA2NzZhOGE5NGViNi4uODZiY2Ix
YzZhMmRiNDI1ZWY0NmIyMzZlODZiNDI2YjA5ZTNkNzMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJl
YW0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRp
by9hdWRpb19yZWNlaXZlX3N0cmVhbS5oCkBAIC0xOCw3ICsxOCw2IEBACiAjaW5jbHVkZSAiYXBp
L3J0cF9oZWFkZXJzLmgiCiAjaW5jbHVkZSAiYXVkaW8vYXVkaW9fc3RhdGUuaCIKICNpbmNsdWRl
ICJjYWxsL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmgiCi0jaW5jbHVkZSAiY2FsbC9ydHBfcGFja2V0
X3NpbmtfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9zeW5jYWJsZS5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRf
Y2hlY2tlci5oIgpAQCAtMzIsNyArMzEsNyBAQCBjbGFzcyBSdHBTdHJlYW1SZWNlaXZlckNvbnRy
b2xsZXJJbnRlcmZhY2U7CiBjbGFzcyBSdHBTdHJlYW1SZWNlaXZlckludGVyZmFjZTsKIAogbmFt
ZXNwYWNlIHZvZSB7Ci1jbGFzcyBDaGFubmVsUmVjZWl2ZVByb3h5OworY2xhc3MgQ2hhbm5lbFJl
Y2VpdmVJbnRlcmZhY2U7CiB9ICAvLyBuYW1lc3BhY2Ugdm9lCiAKIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CkBAIC00OCwxMyArNDcsMTQgQEAgY2xhc3MgQXVkaW9SZWNlaXZlU3RyZWFtIGZpbmFsIDog
cHVibGljIHdlYnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyYgY29uZmlnLAogICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0
ZT4mIGF1ZGlvX3N0YXRlLAogICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpSdGNFdmVudExv
ZyogZXZlbnRfbG9nKTsKLSAgLy8gRm9yIHVuaXQgdGVzdHMsIHdoaWNoIG5lZWQgdG8gc3VwcGx5
IGEgbW9jayBjaGFubmVsIHByb3h5LgotICBBdWRpb1JlY2VpdmVTdHJlYW0oUnRwU3RyZWFtUmVj
ZWl2ZXJDb250cm9sbGVySW50ZXJmYWNlKiByZWNlaXZlcl9jb250cm9sbGVyLAotICAgICAgICAg
ICAgICAgICAgICAgUGFja2V0Um91dGVyKiBwYWNrZXRfcm91dGVyLAotICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyYgY29uZmlnLAot
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVk
aW9TdGF0ZT4mIGF1ZGlvX3N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpSdGNF
dmVudExvZyogZXZlbnRfbG9nLAotICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PHZvZTo6Q2hhbm5lbFJlY2VpdmVQcm94eT4gY2hhbm5lbF9wcm94eSk7CisgIC8vIEZvciB1bml0
IHRlc3RzLCB3aGljaCBuZWVkIHRvIHN1cHBseSBhIG1vY2sgY2hhbm5lbCByZWNlaXZlLgorICBB
dWRpb1JlY2VpdmVTdHJlYW0oCisgICAgICBSdHBTdHJlYW1SZWNlaXZlckNvbnRyb2xsZXJJbnRl
cmZhY2UqIHJlY2VpdmVyX2NvbnRyb2xsZXIsCisgICAgICBQYWNrZXRSb3V0ZXIqIHBhY2tldF9y
b3V0ZXIsCisgICAgICBjb25zdCB3ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnJiBj
b25maWcsCisgICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRl
PiYgYXVkaW9fc3RhdGUsCisgICAgICB3ZWJydGM6OlJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCisg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsUmVjZWl2ZUludGVyZmFjZT4gY2hhbm5l
bF9yZWNlaXZlKTsKICAgfkF1ZGlvUmVjZWl2ZVN0cmVhbSgpIG92ZXJyaWRlOwogCiAgIC8vIHdl
YnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFtIGltcGxlbWVudGF0aW9uLgpAQCAtMTAxLDcgKzEwMSw3
IEBAIGNsYXNzIEF1ZGlvUmVjZWl2ZVN0cmVhbSBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OkF1ZGlv
UmVjZWl2ZVN0cmVhbSwKICAgcnRjOjpUaHJlYWRDaGVja2VyIG1vZHVsZV9wcm9jZXNzX3RocmVh
ZF9jaGVja2VyXzsKICAgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyBjb25maWdf
OwogICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiBhdWRpb19zdGF0ZV87
Ci0gIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxSZWNlaXZlUHJveHk+IGNoYW5uZWxfcHJv
eHlfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsUmVjZWl2ZUludGVyZmFj
ZT4gY2hhbm5lbF9yZWNlaXZlXzsKICAgQXVkaW9TZW5kU3RyZWFtKiBhc3NvY2lhdGVkX3NlbmRf
c3RyZWFtXyA9IG51bGxwdHI7CiAKICAgYm9vbCBwbGF5aW5nXyBSVENfR1VBUkRFRF9CWSh3b3Jr
ZXJfdGhyZWFkX2NoZWNrZXJfKSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW1fdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRp
by9hdWRpb19yZWNlaXZlX3N0cmVhbV91bml0dGVzdC5jYwppbmRleCA5N2M0MmM0MzgzZjg0MzYz
NDJiNDc3MDM2ZjZkYzU3ZjA1OTc5NDMzLi43NDIyODEwODU2NjUxNTI3MjhlZmMyZDE3ODlhODNh
NzEzNjU0Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbV91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19yZWNlaXZl
X3N0cmVhbV91bml0dGVzdC5jYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4K
IAogI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfYXVkaW9fbWl4ZXIuaCIKKyNpbmNsdWRlICJhcGkv
dGVzdC9tb2NrX2ZyYW1lX2RlY3J5cHRvci5oIgogI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3JlY2Vp
dmVfc3RyZWFtLmgiCiAjaW5jbHVkZSAiYXVkaW8vY29udmVyc2lvbi5oIgogI2luY2x1ZGUgImF1
ZGlvL21vY2tfdm9lX2NoYW5uZWxfcHJveHkuaCIKQEAgLTgyLDE2ICs4MywxNiBAQCBzdHJ1Y3Qg
Q29uZmlnSGVscGVyIHsKICAgICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDx0ZXN0aW5n
OjpOaWNlTW9jazxNb2NrQXVkaW9EZXZpY2VNb2R1bGU+PigpOwogICAgIGF1ZGlvX3N0YXRlXyA9
IEF1ZGlvU3RhdGU6OkNyZWF0ZShjb25maWcpOwogCi0gICAgY2hhbm5lbF9wcm94eV8gPSBuZXcg
dGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFJlY2VpdmVQcm94eT4oKTsKLSAgICBFWFBF
Q1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFNldExvY2FsU1NSQyhrTG9jYWxTc3JjKSkuVGltZXMo
MSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXROQUNLU3RhdHVzKHRydWUs
IDE1KSkuVGltZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLAorICAgIGNo
YW5uZWxfcmVjZWl2ZV8gPSBuZXcgdGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFJlY2Vp
dmU+KCk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIFNldExvY2FsU1NSQyhr
TG9jYWxTc3JjKSkuVGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8s
IFNldE5BQ0tTdGF0dXModHJ1ZSwgMTUpKS5UaW1lcygxKTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hh
bm5lbF9yZWNlaXZlXywKICAgICAgICAgICAgICAgICBSZWdpc3RlclJlY2VpdmVyQ29uZ2VzdGlv
bkNvbnRyb2xPYmplY3RzKCZwYWNrZXRfcm91dGVyXykpCiAgICAgICAgIC5UaW1lcygxKTsKLSAg
ICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFJlc2V0UmVjZWl2ZXJDb25nZXN0aW9uQ29u
dHJvbE9iamVjdHMoKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9yZWNlaXZlXywgUmVzZXRS
ZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpKQogICAgICAgICAuVGltZXMoMSk7Ci0g
ICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBEaXNhc3NvY2lhdGVTZW5kQ2hhbm5lbCgp
KS5UaW1lcygxKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFNldFJlY2VpdmVD
b2RlY3MoXykpCisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIFNldEFzc29jaWF0
ZWRTZW5kQ2hhbm5lbChudWxscHRyKSkuVGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5u
ZWxfcmVjZWl2ZV8sIFNldFJlY2VpdmVDb2RlY3MoXykpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRs
eShJbnZva2UoW10oY29uc3Qgc3RkOjptYXA8aW50LCBTZHBBdWRpb0Zvcm1hdD4mIGNvZGVjcykg
ewogICAgICAgICAgIEVYUEVDVF9USEFUKGNvZGVjcywgdGVzdGluZzo6SXNFbXB0eSgpKTsKICAg
ICAgICAgfSkpOwpAQCAtMTEzLDMzICsxMTQsMzMgQEAgc3RydWN0IENvbmZpZ0hlbHBlciB7CiAg
ICAgICAgIG5ldyBpbnRlcm5hbDo6QXVkaW9SZWNlaXZlU3RyZWFtKAogICAgICAgICAgICAgJnJ0
cF9zdHJlYW1fcmVjZWl2ZXJfY29udHJvbGxlcl8sICZwYWNrZXRfcm91dGVyXywgc3RyZWFtX2Nv
bmZpZ18sCiAgICAgICAgICAgICBhdWRpb19zdGF0ZV8sICZldmVudF9sb2dfLAotICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFJlY2VpdmVQcm94eT4oY2hhbm5lbF9wcm94
eV8pKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsUmVjZWl2ZUlu
dGVyZmFjZT4oY2hhbm5lbF9yZWNlaXZlXykpKTsKICAgfQogCiAgIEF1ZGlvUmVjZWl2ZVN0cmVh
bTo6Q29uZmlnJiBjb25maWcoKSB7IHJldHVybiBzdHJlYW1fY29uZmlnXzsgfQogICBydGM6OnNj
b3BlZF9yZWZwdHI8TW9ja0F1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyKCkgeyByZXR1cm4gYXVkaW9f
bWl4ZXJfOyB9Ci0gIE1vY2tDaGFubmVsUmVjZWl2ZVByb3h5KiBjaGFubmVsX3Byb3h5KCkgeyBy
ZXR1cm4gY2hhbm5lbF9wcm94eV87IH0KKyAgTW9ja0NoYW5uZWxSZWNlaXZlKiBjaGFubmVsX3Jl
Y2VpdmUoKSB7IHJldHVybiBjaGFubmVsX3JlY2VpdmVfOyB9CiAKICAgdm9pZCBTZXR1cE1vY2tG
b3JHZXRTdGF0cygpIHsKICAgICB1c2luZyB0ZXN0aW5nOjpEb0FsbDsKICAgICB1c2luZyB0ZXN0
aW5nOjpTZXRBcmdQb2ludGVlOwogCi0gICAgQVNTRVJUX1RSVUUoY2hhbm5lbF9wcm94eV8pOwot
ICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgR2V0UlRDUFN0YXRpc3RpY3MoKSkKKyAg
ICBBU1NFUlRfVFJVRShjaGFubmVsX3JlY2VpdmVfKTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5l
bF9yZWNlaXZlXywgR2V0UlRDUFN0YXRpc3RpY3MoKSkKICAgICAgICAgLldpbGxPbmNlKFJldHVy
bihrQ2FsbFN0YXRzKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBHZXREZWxh
eUVzdGltYXRlKCkpCisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIEdldERlbGF5
RXN0aW1hdGUoKSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybihrSml0dGVyQnVmZmVyRGVsYXkg
KyBrUGxheW91dEJ1ZmZlckRlbGF5KSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlf
LCBHZXRTcGVlY2hPdXRwdXRMZXZlbEZ1bGxSYW5nZSgpKQorICAgIEVYUEVDVF9DQUxMKCpjaGFu
bmVsX3JlY2VpdmVfLCBHZXRTcGVlY2hPdXRwdXRMZXZlbEZ1bGxSYW5nZSgpKQogICAgICAgICAu
V2lsbE9uY2UoUmV0dXJuKGtTcGVlY2hPdXRwdXRMZXZlbCkpOwotICAgIEVYUEVDVF9DQUxMKCpj
aGFubmVsX3Byb3h5XywgR2V0VG90YWxPdXRwdXRFbmVyZ3koKSkKKyAgICBFWFBFQ1RfQ0FMTCgq
Y2hhbm5lbF9yZWNlaXZlXywgR2V0VG90YWxPdXRwdXRFbmVyZ3koKSkKICAgICAgICAgLldpbGxP
bmNlKFJldHVybihrVG90YWxPdXRwdXRFbmVyZ3kpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5l
bF9wcm94eV8sIEdldFRvdGFsT3V0cHV0RHVyYXRpb24oKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hh
bm5lbF9yZWNlaXZlXywgR2V0VG90YWxPdXRwdXREdXJhdGlvbigpKQogICAgICAgICAuV2lsbE9u
Y2UoUmV0dXJuKGtUb3RhbE91dHB1dER1cmF0aW9uKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5u
ZWxfcHJveHlfLCBHZXROZXR3b3JrU3RhdGlzdGljcygpKQorICAgIEVYUEVDVF9DQUxMKCpjaGFu
bmVsX3JlY2VpdmVfLCBHZXROZXR3b3JrU3RhdGlzdGljcygpKQogICAgICAgICAuV2lsbE9uY2Uo
UmV0dXJuKGtOZXR3b3JrU3RhdHMpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8s
IEdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9y
ZWNlaXZlXywgR2V0RGVjb2RpbmdDYWxsU3RhdGlzdGljcygpKQogICAgICAgICAuV2lsbE9uY2Uo
UmV0dXJuKGtBdWRpb0RlY29kZVN0YXRzKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJv
eHlfLCBHZXRSZWNDb2RlYyhfKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9yZWNlaXZlXywg
R2V0UmVjQ29kZWMoXykpCiAgICAgICAgIC5XaWxsT25jZShEb0FsbChTZXRBcmdQb2ludGVlPDA+
KGtDb2RlY0luc3QpLCBSZXR1cm4odHJ1ZSkpKTsKICAgfQogCkBAIC0xNDksNyArMTUwLDcgQEAg
c3RydWN0IENvbmZpZ0hlbHBlciB7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1N0YXRlPiBh
dWRpb19zdGF0ZV87CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNb2NrQXVkaW9NaXhlcj4gYXVkaW9f
bWl4ZXJfOwogICBBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyBzdHJlYW1fY29uZmlnXzsKLSAg
dGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFJlY2VpdmVQcm94eT4qIGNoYW5uZWxfcHJv
eHlfID0gbnVsbHB0cjsKKyAgdGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFJlY2VpdmU+
KiBjaGFubmVsX3JlY2VpdmVfID0gbnVsbHB0cjsKICAgUnRwU3RyZWFtUmVjZWl2ZXJDb250cm9s
bGVyIHJ0cF9zdHJlYW1fcmVjZWl2ZXJfY29udHJvbGxlcl87CiAgIE1vY2tUcmFuc3BvcnQgcnRj
cF9zZW5kX3RyYW5zcG9ydF87CiB9OwpAQCAtMjE2LDcgKzIxNyw3IEBAIFRFU1QoQXVkaW9SZWNl
aXZlU3RyZWFtVGVzdCwgQ29uZmlnVG9TdHJpbmcpIHsKICAgICAgICJ7cnRwOiB7cmVtb3RlX3Nz
cmM6IDEyMzQsIGxvY2FsX3NzcmM6IDU2NzgsIHRyYW5zcG9ydF9jYzogb2ZmLCBuYWNrOiAiCiAg
ICAgICAie3J0cF9oaXN0b3J5X21zOiAwfSwgZXh0ZW5zaW9uczogW3t1cmk6ICIKICAgICAgICJ1
cm46aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDpzc3JjLWF1ZGlvLWxldmVsLCBpZDogM31dfSwgIgot
ICAgICAgInJ0Y3Bfc2VuZF90cmFuc3BvcnQ6IG51bGx9IiwKKyAgICAgICJydGNwX3NlbmRfdHJh
bnNwb3J0OiBudWxsLCBtZWRpYV90cmFuc3BvcnQ6IG51bGx9IiwKICAgICAgIGNvbmZpZy5Ub1N0
cmluZygpKTsKIH0KIApAQCAtMjM4LDcgKzIzOSw3IEBAIFRFU1QoQXVkaW9SZWNlaXZlU3RyZWFt
VGVzdCwgUmVjZWl2ZVJ0cFBhY2tldCkgewogICBBU1NFUlRfVFJVRShwYXJzZWRfcGFja2V0LlBh
cnNlKCZydHBfcGFja2V0WzBdLCBydHBfcGFja2V0LnNpemUoKSkpOwogICBwYXJzZWRfcGFja2V0
LnNldF9hcnJpdmFsX3RpbWVfbXMoKHBhY2tldF90aW1lX3VzICsgNTAwKSAvIDEwMDApOwogCi0g
IEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9wcm94eSgpLAorICBFWFBFQ1RfQ0FMTCgqaGVs
cGVyLmNoYW5uZWxfcmVjZWl2ZSgpLAogICAgICAgICAgICAgICBPblJ0cFBhY2tldCh0ZXN0aW5n
OjpSZWYocGFyc2VkX3BhY2tldCkpKTsKIAogICByZWN2X3N0cmVhbS0+T25SdHBQYWNrZXQocGFy
c2VkX3BhY2tldCk7CkBAIC0yNDksNyArMjUwLDcgQEAgVEVTVChBdWRpb1JlY2VpdmVTdHJlYW1U
ZXN0LCBSZWNlaXZlUnRjcFBhY2tldCkgewogICBoZWxwZXIuY29uZmlnKCkucnRwLnRyYW5zcG9y
dF9jYyA9IHRydWU7CiAgIGF1dG8gcmVjdl9zdHJlYW0gPSBoZWxwZXIuQ3JlYXRlQXVkaW9SZWNl
aXZlU3RyZWFtKCk7CiAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHJ0Y3BfcGFja2V0ID0gQ3JlYXRl
UnRjcFNlbmRlclJlcG9ydCgpOwotICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfcHJveHko
KSwKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3JlY2VpdmUoKSwKICAgICAgICAgICAg
ICAgUmVjZWl2ZWRSVENQUGFja2V0KCZydGNwX3BhY2tldFswXSwgcnRjcF9wYWNrZXQuc2l6ZSgp
KSkKICAgICAgIC5XaWxsT25jZShSZXR1cm4odHJ1ZSkpOwogICBFWFBFQ1RfVFJVRShyZWN2X3N0
cmVhbS0+RGVsaXZlclJ0Y3AoJnJ0Y3BfcGFja2V0WzBdLCBydGNwX3BhY2tldC5zaXplKCkpKTsK
QEAgLTMxMSw3ICszMTIsNyBAQCBURVNUKEF1ZGlvUmVjZWl2ZVN0cmVhbVRlc3QsIEdldFN0YXRz
KSB7CiBURVNUKEF1ZGlvUmVjZWl2ZVN0cmVhbVRlc3QsIFNldEdhaW4pIHsKICAgQ29uZmlnSGVs
cGVyIGhlbHBlcjsKICAgYXV0byByZWN2X3N0cmVhbSA9IGhlbHBlci5DcmVhdGVBdWRpb1JlY2Vp
dmVTdHJlYW0oKTsKLSAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3Byb3h5KCksCisgIEVY
UEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9yZWNlaXZlKCksCiAgICAgICAgICAgICAgIFNldENo
YW5uZWxPdXRwdXRWb2x1bWVTY2FsaW5nKEZsb2F0RXEoMC43NjVmKSkpOwogICByZWN2X3N0cmVh
bS0+U2V0R2FpbigwLjc2NWYpOwogfQpAQCAtMzIyLDEwICszMjMsMTAgQEAgVEVTVChBdWRpb1Jl
Y2VpdmVTdHJlYW1UZXN0LCBTdHJlYW1zU2hvdWxkQmVBZGRlZFRvTWl4ZXJPbmNlT25TdGFydCkg
ewogICBhdXRvIHJlY3Zfc3RyZWFtMSA9IGhlbHBlcjEuQ3JlYXRlQXVkaW9SZWNlaXZlU3RyZWFt
KCk7CiAgIGF1dG8gcmVjdl9zdHJlYW0yID0gaGVscGVyMi5DcmVhdGVBdWRpb1JlY2VpdmVTdHJl
YW0oKTsKIAotICBFWFBFQ1RfQ0FMTCgqaGVscGVyMS5jaGFubmVsX3Byb3h5KCksIFN0YXJ0UGxh
eW91dCgpKS5UaW1lcygxKTsKLSAgRVhQRUNUX0NBTEwoKmhlbHBlcjIuY2hhbm5lbF9wcm94eSgp
LCBTdGFydFBsYXlvdXQoKSkuVGltZXMoMSk7Ci0gIEVYUEVDVF9DQUxMKCpoZWxwZXIxLmNoYW5u
ZWxfcHJveHkoKSwgU3RvcFBsYXlvdXQoKSkuVGltZXMoMSk7Ci0gIEVYUEVDVF9DQUxMKCpoZWxw
ZXIyLmNoYW5uZWxfcHJveHkoKSwgU3RvcFBsYXlvdXQoKSkuVGltZXMoMSk7CisgIEVYUEVDVF9D
QUxMKCpoZWxwZXIxLmNoYW5uZWxfcmVjZWl2ZSgpLCBTdGFydFBsYXlvdXQoKSkuVGltZXMoMSk7
CisgIEVYUEVDVF9DQUxMKCpoZWxwZXIyLmNoYW5uZWxfcmVjZWl2ZSgpLCBTdGFydFBsYXlvdXQo
KSkuVGltZXMoMSk7CisgIEVYUEVDVF9DQUxMKCpoZWxwZXIxLmNoYW5uZWxfcmVjZWl2ZSgpLCBT
dG9wUGxheW91dCgpKS5UaW1lcygxKTsKKyAgRVhQRUNUX0NBTEwoKmhlbHBlcjIuY2hhbm5lbF9y
ZWNlaXZlKCksIFN0b3BQbGF5b3V0KCkpLlRpbWVzKDEpOwogICBFWFBFQ1RfQ0FMTCgqaGVscGVy
MS5hdWRpb19taXhlcigpLCBBZGRTb3VyY2UocmVjdl9zdHJlYW0xLmdldCgpKSkKICAgICAgIC5X
aWxsT25jZShSZXR1cm4odHJ1ZSkpOwogICBFWFBFQ1RfQ0FMTCgqaGVscGVyMS5hdWRpb19taXhl
cigpLCBBZGRTb3VyY2UocmVjdl9zdHJlYW0yLmdldCgpKSkKQEAgLTM2NiwxMiArMzY3LDMyIEBA
IFRFU1QoQXVkaW9SZWNlaXZlU3RyZWFtVGVzdCwgUmVjb25maWd1cmVXaXRoVXBkYXRlZENvbmZp
ZykgewogICAgICAgICAgICAgICAgICAgIGtUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcklkICsgMSkp
OwogICBuZXdfY29uZmlnLmRlY29kZXJfbWFwLmVtcGxhY2UoMSwgU2RwQXVkaW9Gb3JtYXQoImZv
byIsIDgwMDAsIDEpKTsKIAotICBNb2NrQ2hhbm5lbFJlY2VpdmVQcm94eSYgY2hhbm5lbF9wcm94
eSA9ICpoZWxwZXIuY2hhbm5lbF9wcm94eSgpOwotICBFWFBFQ1RfQ0FMTChjaGFubmVsX3Byb3h5
LCBTZXRMb2NhbFNTUkMoa0xvY2FsU3NyYyArIDEpKS5UaW1lcygxKTsKLSAgRVhQRUNUX0NBTEwo
Y2hhbm5lbF9wcm94eSwgU2V0TkFDS1N0YXR1cyh0cnVlLCAxNSArIDEpKS5UaW1lcygxKTsKLSAg
RVhQRUNUX0NBTEwoY2hhbm5lbF9wcm94eSwgU2V0UmVjZWl2ZUNvZGVjcyhuZXdfY29uZmlnLmRl
Y29kZXJfbWFwKSk7CisgIE1vY2tDaGFubmVsUmVjZWl2ZSYgY2hhbm5lbF9yZWNlaXZlID0gKmhl
bHBlci5jaGFubmVsX3JlY2VpdmUoKTsKKyAgRVhQRUNUX0NBTEwoY2hhbm5lbF9yZWNlaXZlLCBT
ZXRMb2NhbFNTUkMoa0xvY2FsU3NyYyArIDEpKS5UaW1lcygxKTsKKyAgRVhQRUNUX0NBTEwoY2hh
bm5lbF9yZWNlaXZlLCBTZXROQUNLU3RhdHVzKHRydWUsIDE1ICsgMSkpLlRpbWVzKDEpOworICBF
WFBFQ1RfQ0FMTChjaGFubmVsX3JlY2VpdmUsIFNldFJlY2VpdmVDb2RlY3MobmV3X2NvbmZpZy5k
ZWNvZGVyX21hcCkpOwogCiAgIHJlY3Zfc3RyZWFtLT5SZWNvbmZpZ3VyZShuZXdfY29uZmlnKTsK
IH0KKworVEVTVChBdWRpb1JlY2VpdmVTdHJlYW1UZXN0LCBSZWNvbmZpZ3VyZVdpdGhGcmFtZURl
Y3J5cHRvcikgeworICBDb25maWdIZWxwZXIgaGVscGVyOworICBhdXRvIHJlY3Zfc3RyZWFtID0g
aGVscGVyLkNyZWF0ZUF1ZGlvUmVjZWl2ZVN0cmVhbSgpOworCisgIGF1dG8gbmV3X2NvbmZpZ18w
ID0gaGVscGVyLmNvbmZpZygpOworICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJ
bnRlcmZhY2U+IG1vY2tfZnJhbWVfZGVjcnlwdG9yXzAoCisgICAgICBuZXcgcnRjOjpSZWZDb3Vu
dGVkT2JqZWN0PE1vY2tGcmFtZURlY3J5cHRvcj4oKSk7CisgIG5ld19jb25maWdfMC5mcmFtZV9k
ZWNyeXB0b3IgPSBtb2NrX2ZyYW1lX2RlY3J5cHRvcl8wOworCisgIHJlY3Zfc3RyZWFtLT5SZWNv
bmZpZ3VyZShuZXdfY29uZmlnXzApOworCisgIGF1dG8gbmV3X2NvbmZpZ18xID0gaGVscGVyLmNv
bmZpZygpOworICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IG1v
Y2tfZnJhbWVfZGVjcnlwdG9yXzEoCisgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE1v
Y2tGcmFtZURlY3J5cHRvcj4oKSk7CisgIG5ld19jb25maWdfMS5mcmFtZV9kZWNyeXB0b3IgPSBt
b2NrX2ZyYW1lX2RlY3J5cHRvcl8xOworICBuZXdfY29uZmlnXzEuY3J5cHRvX29wdGlvbnMuc2Zy
YW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbiA9IHRydWU7CisgIHJlY3Zfc3RyZWFtLT5SZWNv
bmZpZ3VyZShuZXdfY29uZmlnXzEpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19zZW5kX3N0cmVhbS5jYwpp
bmRleCBlODIyNjRhODNjYjFjYjI4NWU4M2U4M2FkYzQwOTU1YzYwNWU2Y2I1Li43NWU2ZWZiOWU4
MDBmZDA5MThjY2JiNWJlOWYxYWY3ZGE4ODkxYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19zZW5kX3N0cmVhbS5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRp
b19zZW5kX3N0cmVhbS5jYwpAQCAtMTUsMTIgKzE1LDIyIEBACiAjaW5jbHVkZSA8dmVjdG9yPgog
CiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0KKyNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2VuY29kZXIuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlv
X2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9y
bWF0LmgiCisjaW5jbHVkZSAiYXBpL2NhbGwvdHJhbnNwb3J0LmgiCisjaW5jbHVkZSAiYXBpL2Ny
eXB0by9mcmFtZWVuY3J5cHRvcmludGVyZmFjZS5oIgogI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3N0
YXRlLmgiCi0jaW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9zZW5kX3Byb3h5LmgiCisjaW5jbHVkZSAi
YXVkaW8vY2hhbm5lbF9zZW5kLmgiCiAjaW5jbHVkZSAiYXVkaW8vY29udmVyc2lvbi5oIgorI2lu
Y2x1ZGUgImNhbGwvcnRwX2NvbmZpZy5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9j
b250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3ZhZC9p
bmNsdWRlL3ZhZC5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRf
bG9nL3J0Y19zdHJlYW1fY29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2Z1bmN0aW9uX3ZpZXcuaCIKQEAgLTM4LDEzMCArNDgsMTMyIEBAIGNvbnN0ZXhwciBzaXpl
X3Qga1BhY2tldExvc3NUcmFja2VyTWF4V2luZG93U2l6ZU1zID0gMTUwMDA7CiBjb25zdGV4cHIg
c2l6ZV90IGtQYWNrZXRMb3NzUmF0ZU1pbk51bUFja2VkUGFja2V0cyA9IDUwOwogY29uc3RleHBy
IHNpemVfdCBrUmVjb3ZlcmFibGVQYWNrZXRMb3NzUmF0ZU1pbk51bUFja2VkUGFpcnMgPSA0MDsK
IAotdm9pZCBDYWxsRW5jb2Rlcihjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsU2Vu
ZFByb3h5PiYgY2hhbm5lbF9wcm94eSwKK3ZvaWQgQ2FsbEVuY29kZXIoY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPHZvZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2U+JiBjaGFubmVsX3NlbmQsCiAgICAgICAg
ICAgICAgICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PHZvaWQoQXVkaW9FbmNvZGVyKik+IGxhbWJkYSkg
ewotICBjaGFubmVsX3Byb3h5LT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9FbmNvZGVyPiogZW5jb2Rlcl9wdHIpIHsKKyAgY2hhbm5lbF9zZW5kLT5Nb2RpZnlFbmNvZGVy
KFsmXShzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2Rlcl9wdHIpIHsKICAgICBS
VENfRENIRUNLKGVuY29kZXJfcHRyKTsKICAgICBsYW1iZGEoZW5jb2Rlcl9wdHItPmdldCgpKTsK
ICAgfSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxTZW5kUHJveHk+IENyZWF0
ZUNoYW5uZWxBbmRQcm94eSgKLSAgICBydGM6OlRhc2tRdWV1ZSogd29ya2VyX3F1ZXVlLAotICAg
IFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKLSAgICBSdGNwUnR0U3RhdHMq
IHJ0Y3BfcnR0X3N0YXRzLAotICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCi0gICAgRnJhbWVF
bmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvcikgewotICByZXR1cm4gYWJzbDo6bWFr
ZV91bmlxdWU8dm9lOjpDaGFubmVsU2VuZFByb3h5PigKLSAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PHZvZTo6Q2hhbm5lbFNlbmQ+KHdvcmtlcl9xdWV1ZSwgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjcF9ydHRfc3RhdHMs
IGV2ZW50X2xvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lX2VuY3J5cHRvcikpOwotfQotfSAgLy8gbmFtZXNwYWNlCi0KLS8vIEhlbHBlciBjbGFzcyB0
byB0cmFjayB0aGUgYWN0aXZlbHkgc2VuZGluZyBsaWZldGltZSBvZiB0aGlzIHN0cmVhbS4KLWNs
YXNzIEF1ZGlvU2VuZFN0cmVhbTo6VGltZWRUcmFuc3BvcnQgOiBwdWJsaWMgVHJhbnNwb3J0IHsK
LSBwdWJsaWM6Ci0gIFRpbWVkVHJhbnNwb3J0KFRyYW5zcG9ydCogdHJhbnNwb3J0LCBUaW1lSW50
ZXJ2YWwqIHRpbWVfaW50ZXJ2YWwpCi0gICAgICA6IHRyYW5zcG9ydF8odHJhbnNwb3J0KSwgbGlm
ZXRpbWVfKHRpbWVfaW50ZXJ2YWwpIHt9Ci0gIGJvb2wgU2VuZFJ0cChjb25zdCB1aW50OF90KiBw
YWNrZXQsCi0gICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgY29u
c3QgUGFja2V0T3B0aW9ucyYgb3B0aW9ucykgewotICAgIGlmIChsaWZldGltZV8pIHsKLSAgICAg
IGxpZmV0aW1lXy0+RXh0ZW5kKCk7Cit2b2lkIFVwZGF0ZUV2ZW50TG9nU3RyZWFtQ29uZmlnKFJ0
Y0V2ZW50TG9nKiBldmVudF9sb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnKiBvbGRfY29uZmlnKSB7
CisgIHVzaW5nIFNlbmRDb2RlY1NwZWMgPSBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6U2VuZENv
ZGVjU3BlYzsKKyAgLy8gT25seSB1cGRhdGUgaWYgYW55IG9mIHRoZSB0aGluZ3Mgd2UgbG9nIGhh
dmUgY2hhbmdlZC4KKyAgYXV0byBwYXlsb2FkX3R5cGVzX2VxdWFsID0gW10oY29uc3QgYWJzbDo6
b3B0aW9uYWw8U2VuZENvZGVjU3BlYz4mIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFNlbmRDb2RlY1NwZWM+JiBiKSB7CisgICAgaWYgKGEu
aGFzX3ZhbHVlKCkgJiYgYi5oYXNfdmFsdWUoKSkgeworICAgICAgcmV0dXJuIGEtPmZvcm1hdC5u
YW1lID09IGItPmZvcm1hdC5uYW1lICYmCisgICAgICAgICAgICAgYS0+cGF5bG9hZF90eXBlID09
IGItPnBheWxvYWRfdHlwZTsKICAgICB9Ci0gICAgcmV0dXJuIHRyYW5zcG9ydF8tPlNlbmRSdHAo
cGFja2V0LCBsZW5ndGgsIG9wdGlvbnMpOworICAgIHJldHVybiAhYS5oYXNfdmFsdWUoKSAmJiAh
Yi5oYXNfdmFsdWUoKTsKKyAgfTsKKworICBpZiAob2xkX2NvbmZpZyAmJiBjb25maWcucnRwLnNz
cmMgPT0gb2xkX2NvbmZpZy0+cnRwLnNzcmMgJiYKKyAgICAgIGNvbmZpZy5ydHAuZXh0ZW5zaW9u
cyA9PSBvbGRfY29uZmlnLT5ydHAuZXh0ZW5zaW9ucyAmJgorICAgICAgcGF5bG9hZF90eXBlc19l
cXVhbChjb25maWcuc2VuZF9jb2RlY19zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICBv
bGRfY29uZmlnLT5zZW5kX2NvZGVjX3NwZWMpKSB7CisgICAgcmV0dXJuOwogICB9Ci0gIGJvb2wg
U2VuZFJ0Y3AoY29uc3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKSB7Ci0gICAgcmV0
dXJuIHRyYW5zcG9ydF8tPlNlbmRSdGNwKHBhY2tldCwgbGVuZ3RoKTsKKworICBhdXRvIHJ0Y2xv
Z19jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxydGNsb2c6OlN0cmVhbUNvbmZpZz4oKTsKKyAg
cnRjbG9nX2NvbmZpZy0+bG9jYWxfc3NyYyA9IGNvbmZpZy5ydHAuc3NyYzsKKyAgcnRjbG9nX2Nv
bmZpZy0+cnRwX2V4dGVuc2lvbnMgPSBjb25maWcucnRwLmV4dGVuc2lvbnM7CisgIGlmIChjb25m
aWcuc2VuZF9jb2RlY19zcGVjKSB7CisgICAgcnRjbG9nX2NvbmZpZy0+Y29kZWNzLmVtcGxhY2Vf
YmFjayhjb25maWcuc2VuZF9jb2RlY19zcGVjLT5mb3JtYXQubmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zZW5kX2NvZGVjX3NwZWMtPnBheWxvYWRf
dHlwZSwgMCk7CiAgIH0KLSAgflRpbWVkVHJhbnNwb3J0KCkge30KKyAgZXZlbnRfbG9nLT5Mb2co
YWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc+KAorICAgICAg
c3RkOjptb3ZlKHJ0Y2xvZ19jb25maWcpKSk7Cit9CiAKLSBwcml2YXRlOgotICBUcmFuc3BvcnQq
IHRyYW5zcG9ydF87Ci0gIFRpbWVJbnRlcnZhbCogbGlmZXRpbWVfOwotfTsKK30gIC8vIG5hbWVz
cGFjZQogCiBBdWRpb1NlbmRTdHJlYW06OkF1ZGlvU2VuZFN0cmVhbSgKICAgICBjb25zdCB3ZWJy
dGM6OkF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcsCiAgICAgY29uc3QgcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4mIGF1ZGlvX3N0YXRlLAogICAgIHJ0Yzo6VGFz
a1F1ZXVlKiB3b3JrZXJfcXVldWUsCiAgICAgUHJvY2Vzc1RocmVhZCogbW9kdWxlX3Byb2Nlc3Nf
dGhyZWFkLAotICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFuc3Bv
cnQsCi0gICAgQml0cmF0ZUFsbG9jYXRvciogYml0cmF0ZV9hbGxvY2F0b3IsCisgICAgUnRwVHJh
bnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHJ0cF90cmFuc3BvcnQsCisgICAgQml0cmF0
ZUFsbG9jYXRvckludGVyZmFjZSogYml0cmF0ZV9hbGxvY2F0b3IsCiAgICAgUnRjRXZlbnRMb2cq
IGV2ZW50X2xvZywKICAgICBSdGNwUnR0U3RhdHMqIHJ0Y3BfcnR0X3N0YXRzLAotICAgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPFJ0cFN0YXRlPiYgc3VzcGVuZGVkX3J0cF9zdGF0ZSwKLSAgICBUaW1l
SW50ZXJ2YWwqIG92ZXJhbGxfY2FsbF9saWZldGltZSkKKyAgICBjb25zdCBhYnNsOjpvcHRpb25h
bDxSdHBTdGF0ZT4mIHN1c3BlbmRlZF9ydHBfc3RhdGUpCiAgICAgOiBBdWRpb1NlbmRTdHJlYW0o
Y29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3N0YXRlLAogICAgICAgICAgICAg
ICAgICAgICAgIHdvcmtlcl9xdWV1ZSwKLSAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgcnRwX3RyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAg
ICAgICBiaXRyYXRlX2FsbG9jYXRvciwKICAgICAgICAgICAgICAgICAgICAgICBldmVudF9sb2cs
CiAgICAgICAgICAgICAgICAgICAgICAgcnRjcF9ydHRfc3RhdHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgc3VzcGVuZGVkX3J0cF9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBvdmVyYWxs
X2NhbGxfbGlmZXRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQ2hhbm5lbEFuZFBy
b3h5KHdvcmtlcl9xdWV1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydGNwX3J0dF9zdGF0cywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXZlbnRfbG9nLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25maWcuZnJhbWVfZW5jcnlwdG9yKSkge30KKyAgICAgICAg
ICAgICAgICAgICAgICB2b2U6OkNyZWF0ZUNoYW5uZWxTZW5kKHdvcmtlcl9xdWV1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9wcm9jZXNzX3Ro
cmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZp
Zy5tZWRpYV90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25maWcuc2VuZF90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBydGNwX3J0dF9zdGF0cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2xvZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5mcmFtZV9lbmNyeXB0b3IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuY3J5cHRvX29wdGlv
bnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcu
cnRwLmV4dG1hcF9hbGxvd19taXhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbmZpZy5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcykpIHt9CiAKIEF1ZGlv
U2VuZFN0cmVhbTo6QXVkaW9TZW5kU3RyZWFtKAogICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9TZW5k
U3RyZWFtOjpDb25maWcmIGNvbmZpZywKICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1N0YXRlPiYgYXVkaW9fc3RhdGUsCiAgICAgcnRjOjpUYXNrUXVldWUqIHdvcmtl
cl9xdWV1ZSwKLSAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogdHJhbnNw
b3J0LAotICAgIEJpdHJhdGVBbGxvY2F0b3IqIGJpdHJhdGVfYWxsb2NhdG9yLAorICAgIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiBydHBfdHJhbnNwb3J0LAorICAgIEJpdHJh
dGVBbGxvY2F0b3JJbnRlcmZhY2UqIGJpdHJhdGVfYWxsb2NhdG9yLAogICAgIFJ0Y0V2ZW50TG9n
KiBldmVudF9sb2csCiAgICAgUnRjcFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0cywKICAgICBjb25z
dCBhYnNsOjpvcHRpb25hbDxSdHBTdGF0ZT4mIHN1c3BlbmRlZF9ydHBfc3RhdGUsCi0gICAgVGlt
ZUludGVydmFsKiBvdmVyYWxsX2NhbGxfbGlmZXRpbWUsCi0gICAgc3RkOjp1bmlxdWVfcHRyPHZv
ZTo6Q2hhbm5lbFNlbmRQcm94eT4gY2hhbm5lbF9wcm94eSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
dm9lOjpDaGFubmVsU2VuZEludGVyZmFjZT4gY2hhbm5lbF9zZW5kKQogICAgIDogd29ya2VyX3F1
ZXVlXyh3b3JrZXJfcXVldWUpLAotICAgICAgY29uZmlnXyhDb25maWcobnVsbHB0cikpLAorICAg
ICAgY29uZmlnXyhDb25maWcoLypzZW5kX3RyYW5zcG9ydD0qL251bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpKSwKICAgICAgIGF1ZGlvX3N0
YXRlXyhhdWRpb19zdGF0ZSksCi0gICAgICBjaGFubmVsX3Byb3h5XyhzdGQ6Om1vdmUoY2hhbm5l
bF9wcm94eSkpLAorICAgICAgY2hhbm5lbF9zZW5kXyhzdGQ6Om1vdmUoY2hhbm5lbF9zZW5kKSks
CiAgICAgICBldmVudF9sb2dfKGV2ZW50X2xvZyksCiAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl8o
Yml0cmF0ZV9hbGxvY2F0b3IpLAotICAgICAgdHJhbnNwb3J0Xyh0cmFuc3BvcnQpLAorICAgICAg
cnRwX3RyYW5zcG9ydF8ocnRwX3RyYW5zcG9ydCksCiAgICAgICBwYWNrZXRfbG9zc190cmFja2Vy
XyhrUGFja2V0TG9zc1RyYWNrZXJNYXhXaW5kb3dTaXplTXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrUGFja2V0TG9zc1JhdGVNaW5OdW1BY2tlZFBhY2tldHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrUmVjb3ZlcmFibGVQYWNrZXRMb3NzUmF0ZU1pbk51bUFja2VkUGFpcnMp
LAogICAgICAgcnRwX3J0Y3BfbW9kdWxlXyhudWxscHRyKSwKLSAgICAgIHN1c3BlbmRlZF9ydHBf
c3RhdGVfKHN1c3BlbmRlZF9ydHBfc3RhdGUpLAotICAgICAgb3ZlcmFsbF9jYWxsX2xpZmV0aW1l
XyhvdmVyYWxsX2NhbGxfbGlmZXRpbWUpIHsKKyAgICAgIHN1c3BlbmRlZF9ydHBfc3RhdGVfKHN1
c3BlbmRlZF9ydHBfc3RhdGUpIHsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQXVkaW9TZW5kU3Ry
ZWFtOiAiIDw8IGNvbmZpZy5ydHAuc3NyYzsKICAgUlRDX0RDSEVDSyh3b3JrZXJfcXVldWVfKTsK
ICAgUlRDX0RDSEVDSyhhdWRpb19zdGF0ZV8pOwotICBSVENfRENIRUNLKGNoYW5uZWxfcHJveHlf
KTsKKyAgUlRDX0RDSEVDSyhjaGFubmVsX3NlbmRfKTsKICAgUlRDX0RDSEVDSyhiaXRyYXRlX2Fs
bG9jYXRvcl8pOwotICBSVENfRENIRUNLKHRyYW5zcG9ydCk7Ci0gIFJUQ19EQ0hFQ0sob3ZlcmFs
bF9jYWxsX2xpZmV0aW1lXyk7CisgIC8vIFRPRE8obmlzc2UpOiBFdmVudHVhbGx5LCB3ZSBzaG91
bGQgaGF2ZSBvbmx5IG1lZGlhX3RyYW5zcG9ydC4gQnV0IGZvciB0aGUKKyAgLy8gdGltZSBiZWlu
Zywgd2UgY2FuIGhhdmUgZWl0aGVyLiBXaGVuIG1lZGlhIHRyYW5zcG9ydCBpcyBpbmplY3RlZCwg
dGhlcmUKKyAgLy8gc2hvdWxkIGJlIG5vIHJ0cF90cmFuc3BvcnQsIGFuZCBiZWxvdyBjaGVjayBz
aG91bGQgYmUgc3RyZW5ndGhlbmVkIHRvIFhPUgorICAvLyAoZWl0aGVyIHJ0cF90cmFuc3BvcnQg
b3IgbWVkaWFfdHJhbnNwb3J0IGJ1dCBub3QgYm90aCkuCisgIFJUQ19EQ0hFQ0socnRwX3RyYW5z
cG9ydCB8fCBjb25maWcubWVkaWFfdHJhbnNwb3J0KTsKIAotICBjaGFubmVsX3Byb3h5Xy0+U2V0
UlRDUFN0YXR1cyh0cnVlKTsKLSAgcnRwX3J0Y3BfbW9kdWxlXyA9IGNoYW5uZWxfcHJveHlfLT5H
ZXRSdHBSdGNwKCk7CisgIHJ0cF9ydGNwX21vZHVsZV8gPSBjaGFubmVsX3NlbmRfLT5HZXRSdHBS
dGNwKCk7CiAgIFJUQ19EQ0hFQ0socnRwX3J0Y3BfbW9kdWxlXyk7CiAKICAgQ29uZmlndXJlU3Ry
ZWFtKHRoaXMsIGNvbmZpZywgdHJ1ZSk7CiAKICAgcGFjZXJfdGhyZWFkX2NoZWNrZXJfLkRldGFj
aEZyb21UaHJlYWQoKTsKLSAgLy8gU2lnbmFsIGNvbmdlc3Rpb24gY29udHJvbGxlciB0aGlzIG9i
amVjdCBpcyByZWFkeSBmb3IgT25QYWNrZXQqIGNhbGxiYWNrcy4KLSAgdHJhbnNwb3J0Xy0+UmVn
aXN0ZXJQYWNrZXRGZWVkYmFja09ic2VydmVyKHRoaXMpOworICBpZiAocnRwX3RyYW5zcG9ydF8p
IHsKKyAgICAvLyBTaWduYWwgY29uZ2VzdGlvbiBjb250cm9sbGVyIHRoaXMgb2JqZWN0IGlzIHJl
YWR5IGZvciBPblBhY2tldCoKKyAgICAvLyBjYWxsYmFja3MuCisgICAgcnRwX3RyYW5zcG9ydF8t
PlJlZ2lzdGVyUGFja2V0RmVlZGJhY2tPYnNlcnZlcih0aGlzKTsKKyAgfQogfQogCiBBdWRpb1Nl
bmRTdHJlYW06On5BdWRpb1NlbmRTdHJlYW0oKSB7CiAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVh
ZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBSVENfTE9HKExTX0lORk8pIDw8
ICJ+QXVkaW9TZW5kU3RyZWFtOiAiIDw8IGNvbmZpZ18ucnRwLnNzcmM7CiAgIFJUQ19EQ0hFQ0so
IXNlbmRpbmdfKTsKLSAgdHJhbnNwb3J0Xy0+RGVSZWdpc3RlclBhY2tldEZlZWRiYWNrT2JzZXJ2
ZXIodGhpcyk7Ci0gIGNoYW5uZWxfcHJveHlfLT5SZWdpc3RlclRyYW5zcG9ydChudWxscHRyKTsK
LSAgY2hhbm5lbF9wcm94eV8tPlJlc2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCk7
Ci0gIC8vIExpZmV0aW1lIGNhbiBvbmx5IGJlIHVwZGF0ZWQgYWZ0ZXIgZGVyZWdpc3RlcmluZwot
ICAvLyB8dGltZWRfc2VuZF90cmFuc3BvcnRfYWRhcHRlcl98IGluIHRoZSB1bmRlcmx5aW5nIGNo
YW5uZWwgb2JqZWN0IHRvIGF2b2lkCi0gIC8vIGRhdGEgcmFjZXMgaW4gfGFjdGl2ZV9saWZldGlt
ZV98LgotICBvdmVyYWxsX2NhbGxfbGlmZXRpbWVfLT5FeHRlbmQoYWN0aXZlX2xpZmV0aW1lXyk7
CisgIGlmIChydHBfdHJhbnNwb3J0XykgeworICAgIHJ0cF90cmFuc3BvcnRfLT5EZVJlZ2lzdGVy
UGFja2V0RmVlZGJhY2tPYnNlcnZlcih0aGlzKTsKKyAgICBjaGFubmVsX3NlbmRfLT5SZXNldFNl
bmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpOworICB9CiB9CiAKIGNvbnN0IHdlYnJ0Yzo6
QXVkaW9TZW5kU3RyZWFtOjpDb25maWcmIEF1ZGlvU2VuZFN0cmVhbTo6R2V0Q29uZmlnKCkgY29u
c3QgewpAQCAtMTk2LDUxICsyMDgsNDIgQEAgdm9pZCBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZ3Vy
ZVN0cmVhbSgKICAgICBib29sIGZpcnN0X3RpbWUpIHsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAi
QXVkaW9TZW5kU3RyZWFtOjpDb25maWd1cmVTdHJlYW06ICIKICAgICAgICAgICAgICAgICAgICA8
PCBuZXdfY29uZmlnLlRvU3RyaW5nKCk7Ci0gIGNvbnN0IGF1dG8mIGNoYW5uZWxfcHJveHkgPSBz
dHJlYW0tPmNoYW5uZWxfcHJveHlfOworICBVcGRhdGVFdmVudExvZ1N0cmVhbUNvbmZpZyhzdHJl
YW0tPmV2ZW50X2xvZ18sIG5ld19jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpcnN0X3RpbWUgPyBudWxscHRyIDogJnN0cmVhbS0+Y29uZmlnXyk7CisKKyAgY29uc3QgYXV0
byYgY2hhbm5lbF9zZW5kID0gc3RyZWFtLT5jaGFubmVsX3NlbmRfOwogICBjb25zdCBhdXRvJiBv
bGRfY29uZmlnID0gc3RyZWFtLT5jb25maWdfOwogCisgIC8vIENvbmZpZ3VyYXRpb24gcGFyYW1l
dGVycyB3aGljaCBjYW5ub3QgYmUgY2hhbmdlZC4KKyAgUlRDX0RDSEVDSyhmaXJzdF90aW1lIHx8
CisgICAgICAgICAgICAgb2xkX2NvbmZpZy5zZW5kX3RyYW5zcG9ydCA9PSBuZXdfY29uZmlnLnNl
bmRfdHJhbnNwb3J0KTsKKwogICBpZiAoZmlyc3RfdGltZSB8fCBvbGRfY29uZmlnLnJ0cC5zc3Jj
ICE9IG5ld19jb25maWcucnRwLnNzcmMpIHsKLSAgICBjaGFubmVsX3Byb3h5LT5TZXRMb2NhbFNT
UkMobmV3X2NvbmZpZy5ydHAuc3NyYyk7CisgICAgY2hhbm5lbF9zZW5kLT5TZXRMb2NhbFNTUkMo
bmV3X2NvbmZpZy5ydHAuc3NyYyk7CiAgICAgaWYgKHN0cmVhbS0+c3VzcGVuZGVkX3J0cF9zdGF0
ZV8pIHsKICAgICAgIHN0cmVhbS0+cnRwX3J0Y3BfbW9kdWxlXy0+U2V0UnRwU3RhdGUoKnN0cmVh
bS0+c3VzcGVuZGVkX3J0cF9zdGF0ZV8pOwogICAgIH0KICAgfQogICBpZiAoZmlyc3RfdGltZSB8
fCBvbGRfY29uZmlnLnJ0cC5jX25hbWUgIT0gbmV3X2NvbmZpZy5ydHAuY19uYW1lKSB7Ci0gICAg
Y2hhbm5lbF9wcm94eS0+U2V0UlRDUF9DTkFNRShuZXdfY29uZmlnLnJ0cC5jX25hbWUpOwotICB9
Ci0gIC8vIFRPRE8oc29sZW5iZXJnKTogQ29uZmlnIE5BQ0sgaGlzdG9yeSB3aW5kb3cgKHdoaWNo
IGlzIGEgcGFja2V0IGNvdW50KSwKLSAgLy8gdXNpbmcgdGhlIGFjdHVhbCBwYWNrZXQgc2l6ZSBm
b3IgdGhlIGNvbmZpZ3VyZWQgY29kZWMuCi0gIGlmIChmaXJzdF90aW1lIHx8IG9sZF9jb25maWcu
cnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgIT0KLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld19j
b25maWcucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMpIHsKLSAgICBjaGFubmVsX3Byb3h5LT5TZXRO
QUNLU3RhdHVzKG5ld19jb25maWcucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgIT0gMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19jb25maWcucnRwLm5hY2sucnRwX2hpc3Rv
cnlfbXMgLyAyMCk7Ci0gIH0KLQotICBpZiAoZmlyc3RfdGltZSB8fCBuZXdfY29uZmlnLnNlbmRf
dHJhbnNwb3J0ICE9IG9sZF9jb25maWcuc2VuZF90cmFuc3BvcnQpIHsKLSAgICBpZiAob2xkX2Nv
bmZpZy5zZW5kX3RyYW5zcG9ydCkgewotICAgICAgY2hhbm5lbF9wcm94eS0+UmVnaXN0ZXJUcmFu
c3BvcnQobnVsbHB0cik7Ci0gICAgfQotICAgIGlmIChuZXdfY29uZmlnLnNlbmRfdHJhbnNwb3J0
KSB7Ci0gICAgICBzdHJlYW0tPnRpbWVkX3NlbmRfdHJhbnNwb3J0X2FkYXB0ZXJfLnJlc2V0KG5l
dyBUaW1lZFRyYW5zcG9ydCgKLSAgICAgICAgICBuZXdfY29uZmlnLnNlbmRfdHJhbnNwb3J0LCAm
c3RyZWFtLT5hY3RpdmVfbGlmZXRpbWVfKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHN0cmVhbS0+
dGltZWRfc2VuZF90cmFuc3BvcnRfYWRhcHRlcl8ucmVzZXQobnVsbHB0cik7Ci0gICAgfQotICAg
IGNoYW5uZWxfcHJveHktPlJlZ2lzdGVyVHJhbnNwb3J0KAotICAgICAgICBzdHJlYW0tPnRpbWVk
X3NlbmRfdHJhbnNwb3J0X2FkYXB0ZXJfLmdldCgpKTsKKyAgICBjaGFubmVsX3NlbmQtPlNldFJU
Q1BfQ05BTUUobmV3X2NvbmZpZy5ydHAuY19uYW1lKTsKICAgfQogCiAgIC8vIEVuYWJsZSB0aGUg
ZnJhbWUgZW5jcnlwdG9yIGlmIGEgbmV3IGZyYW1lIGVuY3J5cHRvciBoYXMgYmVlbiBwcm92aWRl
ZC4KICAgaWYgKGZpcnN0X3RpbWUgfHwgbmV3X2NvbmZpZy5mcmFtZV9lbmNyeXB0b3IgIT0gb2xk
X2NvbmZpZy5mcmFtZV9lbmNyeXB0b3IpIHsKLSAgICBjaGFubmVsX3Byb3h5LT5TZXRGcmFtZUVu
Y3J5cHRvcihuZXdfY29uZmlnLmZyYW1lX2VuY3J5cHRvcik7CisgICAgY2hhbm5lbF9zZW5kLT5T
ZXRGcmFtZUVuY3J5cHRvcihuZXdfY29uZmlnLmZyYW1lX2VuY3J5cHRvcik7CisgIH0KKworICBp
ZiAoZmlyc3RfdGltZSB8fAorICAgICAgbmV3X2NvbmZpZy5ydHAuZXh0bWFwX2FsbG93X21peGVk
ICE9IG9sZF9jb25maWcucnRwLmV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIGNoYW5uZWxfc2Vu
ZC0+U2V0RXh0bWFwQWxsb3dNaXhlZChuZXdfY29uZmlnLnJ0cC5leHRtYXBfYWxsb3dfbWl4ZWQp
OwogICB9CiAKICAgY29uc3QgRXh0ZW5zaW9uSWRzIG9sZF9pZHMgPSBGaW5kRXh0ZW5zaW9uSWRz
KG9sZF9jb25maWcucnRwLmV4dGVuc2lvbnMpOwogICBjb25zdCBFeHRlbnNpb25JZHMgbmV3X2lk
cyA9IEZpbmRFeHRlbnNpb25JZHMobmV3X2NvbmZpZy5ydHAuZXh0ZW5zaW9ucyk7CiAgIC8vIEF1
ZGlvIGxldmVsIGluZGljYXRpb24KICAgaWYgKGZpcnN0X3RpbWUgfHwgbmV3X2lkcy5hdWRpb19s
ZXZlbCAhPSBvbGRfaWRzLmF1ZGlvX2xldmVsKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0U2Vu
ZEF1ZGlvTGV2ZWxJbmRpY2F0aW9uU3RhdHVzKG5ld19pZHMuYXVkaW9fbGV2ZWwgIT0gMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2lk
cy5hdWRpb19sZXZlbCk7CisgICAgY2hhbm5lbF9zZW5kLT5TZXRTZW5kQXVkaW9MZXZlbEluZGlj
YXRpb25TdGF0dXMobmV3X2lkcy5hdWRpb19sZXZlbCAhPSAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19pZHMuYXVkaW9fbGV2ZWwpOwog
ICB9CiAgIGJvb2wgdHJhbnNwb3J0X3NlcV9udW1faWRfY2hhbmdlZCA9CiAgICAgICBuZXdfaWRz
LnRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgIT0gb2xkX2lkcy50cmFuc3BvcnRfc2VxdWVuY2Vf
bnVtYmVyOwpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpDb25maWd1
cmVTdHJlYW0oCiAgICAgICAodHJhbnNwb3J0X3NlcV9udW1faWRfY2hhbmdlZCAmJgogICAgICAg
ICF3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BdWRpby1Gb3JjZU5vVFdD
QyIpKSkgewogICAgIGlmICghZmlyc3RfdGltZSkgewotICAgICAgY2hhbm5lbF9wcm94eS0+UmVz
ZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKKyAgICAgIGNoYW5uZWxfc2VuZC0+
UmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKICAgICB9CiAKICAgICBSdGNw
QmFuZHdpZHRoT2JzZXJ2ZXIqIGJhbmR3aWR0aF9vYnNlcnZlciA9IG51bGxwdHI7CkBAIC0yNTYs
MjQgKzI1OSwyNiBAQCB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlndXJlU3RyZWFtKAogICAg
ICAgICBuZXdfaWRzLnRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgIT0gMCAmJgogICAgICAgICAh
d2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tRm9yY2VOb1RXQ0Mi
KTsKICAgICBpZiAoaGFzX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIpIHsKLSAgICAgIGNoYW5u
ZWxfcHJveHktPkVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcigKKyAgICAgIGNoYW5u
ZWxfc2VuZC0+RW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKAogICAgICAgICAgIG5l
d19pZHMudHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcik7CiAgICAgICAvLyBQcm9iaW5nIGluIGFw
cGxpY2F0aW9uIGxpbWl0ZWQgcmVnaW9uIGlzIG9ubHkgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRo
CiAgICAgICAvLyBzZW5kIHNpZGUgY29uZ2VzdGlvbiBjb250cm9sLCB3aWNoIGRlcGVuZHMgb24g
ZmVlZGJhY2sgcGFja2V0cyB3aGljaAogICAgICAgLy8gcmVxdWlyZXMgdHJhbnNwb3J0IHNlcXVl
bmNlIG51bWJlcnMgdG8gYmUgZW5hYmxlZC4KLSAgICAgIHN0cmVhbS0+dHJhbnNwb3J0Xy0+RW5h
YmxlUGVyaW9kaWNBbHJQcm9iaW5nKHRydWUpOwotICAgICAgYmFuZHdpZHRoX29ic2VydmVyID0g
c3RyZWFtLT50cmFuc3BvcnRfLT5HZXRCYW5kd2lkdGhPYnNlcnZlcigpOworICAgICAgaWYgKHN0
cmVhbS0+cnRwX3RyYW5zcG9ydF8pIHsKKyAgICAgICAgc3RyZWFtLT5ydHBfdHJhbnNwb3J0Xy0+
RW5hYmxlUGVyaW9kaWNBbHJQcm9iaW5nKHRydWUpOworICAgICAgICBiYW5kd2lkdGhfb2JzZXJ2
ZXIgPSBzdHJlYW0tPnJ0cF90cmFuc3BvcnRfLT5HZXRCYW5kd2lkdGhPYnNlcnZlcigpOworICAg
ICAgfQorICAgIH0KKyAgICBpZiAoc3RyZWFtLT5ydHBfdHJhbnNwb3J0XykgeworICAgICAgY2hh
bm5lbF9zZW5kLT5SZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKKyAgICAg
ICAgICBzdHJlYW0tPnJ0cF90cmFuc3BvcnRfLCBiYW5kd2lkdGhfb2JzZXJ2ZXIpOwogICAgIH0K
LQotICAgIGNoYW5uZWxfcHJveHktPlJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmpl
Y3RzKHN0cmVhbS0+dHJhbnNwb3J0XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYW5kd2lkdGhfb2JzZXJ2ZXIpOwogICB9Ci0KICAg
Ly8gTUlEIFJUUCBoZWFkZXIgZXh0ZW5zaW9uLgogICBpZiAoKGZpcnN0X3RpbWUgfHwgbmV3X2lk
cy5taWQgIT0gb2xkX2lkcy5taWQgfHwKICAgICAgICBuZXdfY29uZmlnLnJ0cC5taWQgIT0gb2xk
X2NvbmZpZy5ydHAubWlkKSAmJgogICAgICAgbmV3X2lkcy5taWQgIT0gMCAmJiAhbmV3X2NvbmZp
Zy5ydHAubWlkLmVtcHR5KCkpIHsKLSAgICBjaGFubmVsX3Byb3h5LT5TZXRNaWQobmV3X2NvbmZp
Zy5ydHAubWlkLCBuZXdfaWRzLm1pZCk7CisgICAgY2hhbm5lbF9zZW5kLT5TZXRNaWQobmV3X2Nv
bmZpZy5ydHAubWlkLCBuZXdfaWRzLm1pZCk7CiAgIH0KIAogICBpZiAoIVJlY29uZmlndXJlU2Vu
ZENvZGVjKHN0cmVhbSwgbmV3X2NvbmZpZykpIHsKQEAgLTI5NiwxNiArMzAxLDIwIEBAIHZvaWQg
QXVkaW9TZW5kU3RyZWFtOjpTdGFydCgpIHsKICAgICAgIEZpbmRFeHRlbnNpb25JZHMoY29uZmln
Xy5ydHAuZXh0ZW5zaW9ucykudHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciAhPSAwICYmCiAgICAg
ICAhd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tRm9yY2VOb1RX
Q0MiKTsKICAgaWYgKGNvbmZpZ18ubWluX2JpdHJhdGVfYnBzICE9IC0xICYmIGNvbmZpZ18ubWF4
X2JpdHJhdGVfYnBzICE9IC0xICYmCisgICAgICAhY29uZmlnXy5oYXNfZHNjcCAmJgogICAgICAg
KGhhc190cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyIHx8CiAgICAgICAgIXdlYnJ0Yzo6ZmllbGRf
dHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUF1ZGlvLVNlbmRTaWRlQndlIikgfHwKICAgICAgICB3
ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BdWRpby1BQldFTm9UV0NDIikp
KSB7CiAgICAgLy8gQXVkaW8gQldFIGlzIGVuYWJsZWQuCi0gICAgdHJhbnNwb3J0Xy0+cGFja2V0
X3NlbmRlcigpLT5TZXRBY2NvdW50Rm9yQXVkaW9QYWNrZXRzKHRydWUpOworICAgIHJ0cF90cmFu
c3BvcnRfLT5wYWNrZXRfc2VuZGVyKCktPlNldEFjY291bnRGb3JBdWRpb1BhY2tldHModHJ1ZSk7
CisgICAgcnRwX3J0Y3BfbW9kdWxlXy0+U2V0QXNQYXJ0T2ZBbGxvY2F0aW9uKHRydWUpOwogICAg
IENvbmZpZ3VyZUJpdHJhdGVPYnNlcnZlcihjb25maWdfLm1pbl9iaXRyYXRlX2JwcywgY29uZmln
Xy5tYXhfYml0cmF0ZV9icHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18u
Yml0cmF0ZV9wcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzX3RyYW5z
cG9ydF9zZXF1ZW5jZV9udW1iZXIpOworICB9IGVsc2UgeworICAgIHJ0cF9ydGNwX21vZHVsZV8t
PlNldEFzUGFydE9mQWxsb2NhdGlvbihmYWxzZSk7CiAgIH0KLSAgY2hhbm5lbF9wcm94eV8tPlN0
YXJ0U2VuZCgpOworICBjaGFubmVsX3NlbmRfLT5TdGFydFNlbmQoKTsKICAgc2VuZGluZ18gPSB0
cnVlOwogICBhdWRpb19zdGF0ZSgpLT5BZGRTZW5kaW5nU3RyZWFtKHRoaXMsIGVuY29kZXJfc2Ft
cGxlX3JhdGVfaHpfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJf
bnVtX2NoYW5uZWxzXyk7CkBAIC0zMTgsMTQgKzMyNywxNCBAQCB2b2lkIEF1ZGlvU2VuZFN0cmVh
bTo6U3RvcCgpIHsKICAgfQogCiAgIFJlbW92ZUJpdHJhdGVPYnNlcnZlcigpOwotICBjaGFubmVs
X3Byb3h5Xy0+U3RvcFNlbmQoKTsKKyAgY2hhbm5lbF9zZW5kXy0+U3RvcFNlbmQoKTsKICAgc2Vu
ZGluZ18gPSBmYWxzZTsKICAgYXVkaW9fc3RhdGUoKS0+UmVtb3ZlU2VuZGluZ1N0cmVhbSh0aGlz
KTsKIH0KIAogdm9pZCBBdWRpb1NlbmRTdHJlYW06OlNlbmRBdWRpb0RhdGEoc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRnJhbWU+IGF1ZGlvX2ZyYW1lKSB7CiAgIFJUQ19DSEVDS19SVU5TX1NFUklBTEla
RUQoJmF1ZGlvX2NhcHR1cmVfcmFjZV9jaGVja2VyXyk7Ci0gIGNoYW5uZWxfcHJveHlfLT5Qcm9j
ZXNzQW5kRW5jb2RlQXVkaW8oc3RkOjptb3ZlKGF1ZGlvX2ZyYW1lKSk7CisgIGNoYW5uZWxfc2Vu
ZF8tPlByb2Nlc3NBbmRFbmNvZGVBdWRpbyhzdGQ6Om1vdmUoYXVkaW9fZnJhbWUpKTsKIH0KIAog
Ym9vbCBBdWRpb1NlbmRTdHJlYW06OlNlbmRUZWxlcGhvbmVFdmVudChpbnQgcGF5bG9hZF90eXBl
LApAQCAtMzMzLDE0ICszNDIsMTQgQEAgYm9vbCBBdWRpb1NlbmRTdHJlYW06OlNlbmRUZWxlcGhv
bmVFdmVudChpbnQgcGF5bG9hZF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBkdXJhdGlvbl9tcykgewogICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hl
Y2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgcmV0dXJuIGNoYW5uZWxfcHJveHlfLT5T
ZXRTZW5kVGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZShwYXlsb2FkX3R5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZF9m
cmVxdWVuY3kpICYmCi0gICAgICAgICBjaGFubmVsX3Byb3h5Xy0+U2VuZFRlbGVwaG9uZUV2ZW50
T3V0YmFuZChldmVudCwgZHVyYXRpb25fbXMpOworICByZXR1cm4gY2hhbm5lbF9zZW5kXy0+U2V0
U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUocGF5bG9hZF90eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZF9mcmVx
dWVuY3kpICYmCisgICAgICAgICBjaGFubmVsX3NlbmRfLT5TZW5kVGVsZXBob25lRXZlbnRPdXRi
YW5kKGV2ZW50LCBkdXJhdGlvbl9tcyk7CiB9CiAKIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpTZXRN
dXRlZChib29sIG11dGVkKSB7CiAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5D
YWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsX3Byb3h5Xy0+U2V0SW5wdXRNdXRlKG11
dGVkKTsKKyAgY2hhbm5lbF9zZW5kXy0+U2V0SW5wdXRNdXRlKG11dGVkKTsKIH0KIAogd2VicnRj
OjpBdWRpb1NlbmRTdHJlYW06OlN0YXRzIEF1ZGlvU2VuZFN0cmVhbTo6R2V0U3RhdHMoKSBjb25z
dCB7CkBAIC0zNTIsOCArMzYxLDkgQEAgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW06OlN0YXRzIEF1
ZGlvU2VuZFN0cmVhbTo6R2V0U3RhdHMoCiAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVj
a2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbTo6
U3RhdHMgc3RhdHM7CiAgIHN0YXRzLmxvY2FsX3NzcmMgPSBjb25maWdfLnJ0cC5zc3JjOworICBz
dGF0cy50YXJnZXRfYml0cmF0ZV9icHMgPSBjaGFubmVsX3NlbmRfLT5HZXRCaXRyYXRlKCk7CiAK
LSAgd2VicnRjOjpDYWxsU2VuZFN0YXRpc3RpY3MgY2FsbF9zdGF0cyA9IGNoYW5uZWxfcHJveHlf
LT5HZXRSVENQU3RhdGlzdGljcygpOworICB3ZWJydGM6OkNhbGxTZW5kU3RhdGlzdGljcyBjYWxs
X3N0YXRzID0gY2hhbm5lbF9zZW5kXy0+R2V0UlRDUFN0YXRpc3RpY3MoKTsKICAgc3RhdHMuYnl0
ZXNfc2VudCA9IGNhbGxfc3RhdHMuYnl0ZXNTZW50OwogICBzdGF0cy5wYWNrZXRzX3NlbnQgPSBj
YWxsX3N0YXRzLnBhY2tldHNTZW50OwogICAvLyBSVFQgaXNuJ3Qga25vd24gdW50aWwgYSBSVENQ
IHJlcG9ydCBpcyByZWNlaXZlZC4gVW50aWwgdGhlbiwgVm9pY2VFbmdpbmUKQEAgLTM2Nyw3ICsz
NzcsNyBAQCB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbTo6U3RhdHMgQXVkaW9TZW5kU3RyZWFtOjpH
ZXRTdGF0cygKICAgICBzdGF0cy5jb2RlY19wYXlsb2FkX3R5cGUgPSBzcGVjLnBheWxvYWRfdHlw
ZTsKIAogICAgIC8vIEdldCBkYXRhIGZyb20gdGhlIGxhc3QgcmVtb3RlIFJUQ1AgcmVwb3J0Lgot
ICAgIGZvciAoY29uc3QgYXV0byYgYmxvY2sgOiBjaGFubmVsX3Byb3h5Xy0+R2V0UmVtb3RlUlRD
UFJlcG9ydEJsb2NrcygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBibG9jayA6IGNoYW5uZWxf
c2VuZF8tPkdldFJlbW90ZVJUQ1BSZXBvcnRCbG9ja3MoKSkgewogICAgICAgLy8gTG9va3VwIHJl
cG9ydCBmb3Igc2VuZCBzc3JjIG9ubHkuCiAgICAgICBpZiAoYmxvY2suc291cmNlX1NTUkMgPT0g
c3RhdHMubG9jYWxfc3NyYykgewogICAgICAgICBzdGF0cy5wYWNrZXRzX2xvc3QgPSBibG9jay5j
dW11bGF0aXZlX251bV9wYWNrZXRzX2xvc3Q7CkBAIC0zODksNyArMzk5LDcgQEAgd2VicnRjOjpB
dWRpb1NlbmRTdHJlYW06OlN0YXRzIEF1ZGlvU2VuZFN0cmVhbTo6R2V0U3RhdHMoCiAgIHN0YXRz
LnRvdGFsX2lucHV0X2R1cmF0aW9uID0gaW5wdXRfc3RhdHMudG90YWxfZHVyYXRpb247CiAKICAg
c3RhdHMudHlwaW5nX25vaXNlX2RldGVjdGVkID0gYXVkaW9fc3RhdGUoKS0+dHlwaW5nX25vaXNl
X2RldGVjdGVkKCk7Ci0gIHN0YXRzLmFuYV9zdGF0aXN0aWNzID0gY2hhbm5lbF9wcm94eV8tPkdl
dEFOQVN0YXRpc3RpY3MoKTsKKyAgc3RhdHMuYW5hX3N0YXRpc3RpY3MgPSBjaGFubmVsX3NlbmRf
LT5HZXRBTkFTdGF0aXN0aWNzKCk7CiAgIFJUQ19EQ0hFQ0soYXVkaW9fc3RhdGVfLT5hdWRpb19w
cm9jZXNzaW5nKCkpOwogICBzdGF0cy5hcG1fc3RhdGlzdGljcyA9CiAgICAgICBhdWRpb19zdGF0
ZV8tPmF1ZGlvX3Byb2Nlc3NpbmcoKS0+R2V0U3RhdGlzdGljcyhoYXNfcmVtb3RlX3RyYWNrcyk7
CkBAIC00MDYsMjcgKzQxNiwyNCBAQCBib29sIEF1ZGlvU2VuZFN0cmVhbTo6RGVsaXZlclJ0Y3Ao
Y29uc3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKSB7CiAgIC8vIGNhbGxzIG9uIHRo
ZSB3b3JrZXIgdGhyZWFkLiBXZSBzaG91bGQgbW92ZSB0b3dhcmRzIGFsd2F5cyB1c2luZyBhIG5l
dHdvcmsKICAgLy8gdGhyZWFkLiBUaGVuIHRoaXMgY2hlY2sgY2FuIGJlIGVuYWJsZWQuCiAgIC8v
IFJUQ19EQ0hFQ0soIXdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgp
KTsKLSAgcmV0dXJuIGNoYW5uZWxfcHJveHlfLT5SZWNlaXZlZFJUQ1BQYWNrZXQocGFja2V0LCBs
ZW5ndGgpOworICByZXR1cm4gY2hhbm5lbF9zZW5kXy0+UmVjZWl2ZWRSVENQUGFja2V0KHBhY2tl
dCwgbGVuZ3RoKTsKIH0KIAotdWludDMyX3QgQXVkaW9TZW5kU3RyZWFtOjpPbkJpdHJhdGVVcGRh
dGVkKHVpbnQzMl90IGJpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJ0dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGJ3ZV9wZXJpb2RfbXMpIHsKK3VpbnQzMl90
IEF1ZGlvU2VuZFN0cmVhbTo6T25CaXRyYXRlVXBkYXRlZChCaXRyYXRlQWxsb2NhdGlvblVwZGF0
ZSB1cGRhdGUpIHsKICAgLy8gQSBzZW5kIHN0cmVhbSBtYXkgYmUgYWxsb2NhdGVkIGEgYml0cmF0
ZSBvZiB6ZXJvIGlmIHRoZSBhbGxvY2F0b3IgZGVjaWRlcwogICAvLyB0byBkaXNhYmxlIGl0LiBG
b3Igbm93IHdlIGlnbm9yZSB0aGlzIGRlY2lzaW9uIGFuZCBrZWVwIHNlbmRpbmcgb24gbWluCiAg
IC8vIGJpdHJhdGUuCi0gIGlmIChiaXRyYXRlX2JwcyA9PSAwKSB7Ci0gICAgYml0cmF0ZV9icHMg
PSBjb25maWdfLm1pbl9iaXRyYXRlX2JwczsKKyAgaWYgKHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5J
c1plcm8oKSkgeworICAgIHVwZGF0ZS50YXJnZXRfYml0cmF0ZSA9IERhdGFSYXRlOjpicHMoY29u
ZmlnXy5taW5fYml0cmF0ZV9icHMpOwogICB9Ci0gIFJUQ19EQ0hFQ0tfR0UoYml0cmF0ZV9icHMs
IHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb25maWdfLm1pbl9iaXRyYXRlX2JwcykpOworICBSVENf
RENIRUNLX0dFKHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5icHM8aW50PigpLCBjb25maWdfLm1pbl9i
aXRyYXRlX2Jwcyk7CiAgIC8vIFRoZSBiaXRyYXRlIGFsbG9jYXRvciBtaWdodCBhbGxvY2F0ZSBh
biBoaWdoZXIgdGhhbiBtYXggY29uZmlndXJlZCBiaXRyYXRlCiAgIC8vIGlmIHRoZXJlIGlzIHJv
b20sIHRvIGFsbG93IGZvciwgYXMgZXhhbXBsZSwgZXh0cmEgRkVDLiBJZ25vcmUgdGhhdCBmb3Ig
bm93LgotICBjb25zdCB1aW50MzJfdCBtYXhfYml0cmF0ZV9icHMgPSBjb25maWdfLm1heF9iaXRy
YXRlX2JwczsKLSAgaWYgKGJpdHJhdGVfYnBzID4gbWF4X2JpdHJhdGVfYnBzKQotICAgIGJpdHJh
dGVfYnBzID0gbWF4X2JpdHJhdGVfYnBzOworICBjb25zdCBEYXRhUmF0ZSBtYXhfYml0cmF0ZSA9
IERhdGFSYXRlOjpicHMoY29uZmlnXy5tYXhfYml0cmF0ZV9icHMpOworICBpZiAodXBkYXRlLnRh
cmdldF9iaXRyYXRlID4gbWF4X2JpdHJhdGUpCisgICAgdXBkYXRlLnRhcmdldF9iaXRyYXRlID0g
bWF4X2JpdHJhdGU7CiAKLSAgY2hhbm5lbF9wcm94eV8tPlNldEJpdHJhdGUoYml0cmF0ZV9icHMs
IGJ3ZV9wZXJpb2RfbXMpOworICBjaGFubmVsX3NlbmRfLT5PbkJpdHJhdGVBbGxvY2F0aW9uKHVw
ZGF0ZSk7CiAKICAgLy8gVGhlIGFtb3VudCBvZiBhdWRpbyBwcm90ZWN0aW9uIGlzIG5vdCBleHBv
c2VkIGJ5IHRoZSBlbmNvZGVyLCBoZW5jZQogICAvLyBhbHdheXMgcmV0dXJuaW5nIDAuCkBAIC00
NjAsMjUgKzQ2NywyNCBAQCB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6T25QYWNrZXRGZWVkYmFja1Zl
Y3RvcigKICAgLy8gdGhlIHByZXZpb3VzbHkgc2VudCB2YWx1ZSBpcyBubyBsb25nZXIgcmVsZXZh
bnQuIFRoaXMgd2lsbCBiZSB0YWtlbiBjYXJlCiAgIC8vIG9mIHdpdGggc29tZSByZWZhY3Rvcmlu
ZyB3aGljaCBpcyBub3cgYmVpbmcgZG9uZS4KICAgaWYgKHBscikgewotICAgIGNoYW5uZWxfcHJv
eHlfLT5PblR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRlKCpwbHIpOworICAgIGNoYW5uZWxf
c2VuZF8tPk9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUoKnBscik7CiAgIH0KICAgaWYg
KHJwbHIpIHsKLSAgICBjaGFubmVsX3Byb3h5Xy0+T25SZWNvdmVyYWJsZVVwbGlua1BhY2tldExv
c3NSYXRlKCpycGxyKTsKKyAgICBjaGFubmVsX3NlbmRfLT5PblJlY292ZXJhYmxlVXBsaW5rUGFj
a2V0TG9zc1JhdGUoKnJwbHIpOwogICB9CiB9CiAKIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpTZXRU
cmFuc3BvcnRPdmVyaGVhZChpbnQgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpIHsKICAg
UlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7
Ci0gIGNoYW5uZWxfcHJveHlfLT5TZXRUcmFuc3BvcnRPdmVyaGVhZCh0cmFuc3BvcnRfb3Zlcmhl
YWRfcGVyX3BhY2tldCk7CisgIGNoYW5uZWxfc2VuZF8tPlNldFRyYW5zcG9ydE92ZXJoZWFkKHRy
YW5zcG9ydF9vdmVyaGVhZF9wZXJfcGFja2V0KTsKIH0KIAogUnRwU3RhdGUgQXVkaW9TZW5kU3Ry
ZWFtOjpHZXRSdHBTdGF0ZSgpIGNvbnN0IHsKICAgcmV0dXJuIHJ0cF9ydGNwX21vZHVsZV8tPkdl
dFJ0cFN0YXRlKCk7CiB9CiAKLWNvbnN0IHZvZTo6Q2hhbm5lbFNlbmRQcm94eSYgQXVkaW9TZW5k
U3RyZWFtOjpHZXRDaGFubmVsUHJveHkoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0soY2hhbm5lbF9w
cm94eV8uZ2V0KCkpOwotICByZXR1cm4gKmNoYW5uZWxfcHJveHlfLmdldCgpOworY29uc3Qgdm9l
OjpDaGFubmVsU2VuZEludGVyZmFjZSogQXVkaW9TZW5kU3RyZWFtOjpHZXRDaGFubmVsKCkgY29u
c3QgeworICByZXR1cm4gY2hhbm5lbF9zZW5kXy5nZXQoKTsKIH0KIAogaW50ZXJuYWw6OkF1ZGlv
U3RhdGUqIEF1ZGlvU2VuZFN0cmVhbTo6YXVkaW9fc3RhdGUoKSB7CkBAIC01NDksMTIgKzU1NSwx
MiBAQCBib29sIEF1ZGlvU2VuZFN0cmVhbTo6U2V0dXBTZW5kQ29kZWMoQXVkaW9TZW5kU3RyZWFt
KiBzdHJlYW0sCiAKICAgLy8gV3JhcCB0aGUgZW5jb2RlciBpbiBhIGFuIEF1ZGlvRW5jb2RlckNO
RywgaWYgVkFEIGlzIGVuYWJsZWQuCiAgIGlmIChzcGVjLmNuZ19wYXlsb2FkX3R5cGUpIHsKLSAg
ICBBdWRpb0VuY29kZXJDbmc6OkNvbmZpZyBjbmdfY29uZmlnOworICAgIEF1ZGlvRW5jb2RlckNu
Z0NvbmZpZyBjbmdfY29uZmlnOwogICAgIGNuZ19jb25maWcubnVtX2NoYW5uZWxzID0gZW5jb2Rl
ci0+TnVtQ2hhbm5lbHMoKTsKICAgICBjbmdfY29uZmlnLnBheWxvYWRfdHlwZSA9ICpzcGVjLmNu
Z19wYXlsb2FkX3R5cGU7CiAgICAgY25nX2NvbmZpZy5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92
ZShlbmNvZGVyKTsKICAgICBjbmdfY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkTm9ybWFsOwot
ICAgIGVuY29kZXIucmVzZXQobmV3IEF1ZGlvRW5jb2RlckNuZyhzdGQ6Om1vdmUoY25nX2NvbmZp
ZykpKTsKKyAgICBlbmNvZGVyID0gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2RlcihzdGQ6Om1vdmUo
Y25nX2NvbmZpZykpOwogCiAgICAgc3RyZWFtLT5SZWdpc3RlckNuZ1BheWxvYWRUeXBlKAogICAg
ICAgICAqc3BlYy5jbmdfcGF5bG9hZF90eXBlLApAQCAtNTYzLDggKzU2OSw4IEBAIGJvb2wgQXVk
aW9TZW5kU3RyZWFtOjpTZXR1cFNlbmRDb2RlYyhBdWRpb1NlbmRTdHJlYW0qIHN0cmVhbSwKIAog
ICBzdHJlYW0tPlN0b3JlRW5jb2RlclByb3BlcnRpZXMoZW5jb2Rlci0+U2FtcGxlUmF0ZUh6KCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLT5OdW1DaGFubmVscygp
KTsKLSAgc3RyZWFtLT5jaGFubmVsX3Byb3h5Xy0+U2V0RW5jb2RlcihuZXdfY29uZmlnLnNlbmRf
Y29kZWNfc3BlYy0+cGF5bG9hZF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bW92ZShlbmNvZGVyKSk7CisgIHN0cmVhbS0+Y2hhbm5lbF9zZW5kXy0+U2V0
RW5jb2RlcihuZXdfY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+cGF5bG9hZF90eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGVuY29kZXIpKTsKICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTYxMCw3ICs2MTYsNyBAQCBib29sIEF1ZGlvU2VuZFN0cmVhbTo6
UmVjb25maWd1cmVTZW5kQ29kZWMoQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0sCiAgIGlmICghZG9f
bm90X3VwZGF0ZV90YXJnZXRfYml0cmF0ZSAmJiBuZXdfdGFyZ2V0X2JpdHJhdGVfYnBzICYmCiAg
ICAgICBuZXdfdGFyZ2V0X2JpdHJhdGVfYnBzICE9CiAgICAgICAgICAgb2xkX2NvbmZpZy5zZW5k
X2NvZGVjX3NwZWMtPnRhcmdldF9iaXRyYXRlX2JwcykgewotICAgIENhbGxFbmNvZGVyKHN0cmVh
bS0+Y2hhbm5lbF9wcm94eV8sIFsmXShBdWRpb0VuY29kZXIqIGVuY29kZXIpIHsKKyAgICBDYWxs
RW5jb2RlcihzdHJlYW0tPmNoYW5uZWxfc2VuZF8sIFsmXShBdWRpb0VuY29kZXIqIGVuY29kZXIp
IHsKICAgICAgIGVuY29kZXItPk9uUmVjZWl2ZWRUYXJnZXRBdWRpb0JpdHJhdGUoKm5ld190YXJn
ZXRfYml0cmF0ZV9icHMpOwogICAgIH0pOwogICB9CkBAIC02MjgsNyArNjM0LDcgQEAgdm9pZCBB
dWRpb1NlbmRTdHJlYW06OlJlY29uZmlndXJlQU5BKEF1ZGlvU2VuZFN0cmVhbSogc3RyZWFtLAog
ICAgIHJldHVybjsKICAgfQogICBpZiAobmV3X2NvbmZpZy5hdWRpb19uZXR3b3JrX2FkYXB0b3Jf
Y29uZmlnKSB7Ci0gICAgQ2FsbEVuY29kZXIoc3RyZWFtLT5jaGFubmVsX3Byb3h5XywgWyZdKEF1
ZGlvRW5jb2RlciogZW5jb2RlcikgeworICAgIENhbGxFbmNvZGVyKHN0cmVhbS0+Y2hhbm5lbF9z
ZW5kXywgWyZdKEF1ZGlvRW5jb2RlciogZW5jb2RlcikgewogICAgICAgaWYgKGVuY29kZXItPkVu
YWJsZUF1ZGlvTmV0d29ya0FkYXB0b3IoCiAgICAgICAgICAgICAgICpuZXdfY29uZmlnLmF1ZGlv
X25ldHdvcmtfYWRhcHRvcl9jb25maWcsIHN0cmVhbS0+ZXZlbnRfbG9nXykpIHsKICAgICAgICAg
UlRDX0RMT0coTFNfSU5GTykgPDwgIkF1ZGlvIG5ldHdvcmsgYWRhcHRvciBlbmFibGVkIG9uIFNT
UkMgIgpAQCAtNjM4LDcgKzY0NCw3IEBAIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpSZWNvbmZpZ3Vy
ZUFOQShBdWRpb1NlbmRTdHJlYW0qIHN0cmVhbSwKICAgICAgIH0KICAgICB9KTsKICAgfSBlbHNl
IHsKLSAgICBDYWxsRW5jb2RlcihzdHJlYW0tPmNoYW5uZWxfcHJveHlfLCBbJl0oQXVkaW9FbmNv
ZGVyKiBlbmNvZGVyKSB7CisgICAgQ2FsbEVuY29kZXIoc3RyZWFtLT5jaGFubmVsX3NlbmRfLCBb
Jl0oQXVkaW9FbmNvZGVyKiBlbmNvZGVyKSB7CiAgICAgICBlbmNvZGVyLT5EaXNhYmxlQXVkaW9O
ZXR3b3JrQWRhcHRvcigpOwogICAgIH0pOwogICAgIFJUQ19ETE9HKExTX0lORk8pIDw8ICJBdWRp
byBuZXR3b3JrIGFkYXB0b3IgZGlzYWJsZWQgb24gU1NSQyAiCkBAIC02NjIsNyArNjY4LDcgQEAg
dm9pZCBBdWRpb1NlbmRTdHJlYW06OlJlY29uZmlndXJlQ05HKEF1ZGlvU2VuZFN0cmVhbSogc3Ry
ZWFtLAogICB9CiAKICAgLy8gV3JhcCBvciB1bndyYXAgdGhlIGVuY29kZXIgaW4gYW4gQXVkaW9F
bmNvZGVyQ05HLgotICBzdHJlYW0tPmNoYW5uZWxfcHJveHlfLT5Nb2RpZnlFbmNvZGVyKAorICBz
dHJlYW0tPmNoYW5uZWxfc2VuZF8tPk1vZGlmeUVuY29kZXIoCiAgICAgICBbJl0oc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXJfcHRyKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0VuY29kZXI+IG9sZF9lbmNvZGVyKHN0ZDo6bW92ZSgqZW5jb2Rlcl9wdHIpKTsK
ICAgICAgICAgYXV0byBzdWJfZW5jb2RlcnMgPSBvbGRfZW5jb2Rlci0+UmVjbGFpbUNvbnRhaW5l
ZEVuY29kZXJzKCk7CkBAIC02NzYsMTIgKzY4MiwxMiBAQCB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6
UmVjb25maWd1cmVDTkcoQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0sCiAgICAgICAgICAgb2xkX2Vu
Y29kZXIgPSBzdGQ6Om1vdmUodG1wKTsKICAgICAgICAgfQogICAgICAgICBpZiAobmV3X2NvbmZp
Zy5zZW5kX2NvZGVjX3NwZWMtPmNuZ19wYXlsb2FkX3R5cGUpIHsKLSAgICAgICAgICBBdWRpb0Vu
Y29kZXJDbmc6OkNvbmZpZyBjb25maWc7CisgICAgICAgICAgQXVkaW9FbmNvZGVyQ25nQ29uZmln
IGNvbmZpZzsKICAgICAgICAgICBjb25maWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUob2xk
X2VuY29kZXIpOwogICAgICAgICAgIGNvbmZpZy5udW1fY2hhbm5lbHMgPSBjb25maWcuc3BlZWNo
X2VuY29kZXItPk51bUNoYW5uZWxzKCk7CiAgICAgICAgICAgY29uZmlnLnBheWxvYWRfdHlwZSA9
ICpuZXdfY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+Y25nX3BheWxvYWRfdHlwZTsKICAgICAgICAg
ICBjb25maWcudmFkX21vZGUgPSBWYWQ6OmtWYWROb3JtYWw7Ci0gICAgICAgICAgZW5jb2Rlcl9w
dHItPnJlc2V0KG5ldyBBdWRpb0VuY29kZXJDbmcoc3RkOjptb3ZlKGNvbmZpZykpKTsKKyAgICAg
ICAgICAqZW5jb2Rlcl9wdHIgPSBDcmVhdGVDb21mb3J0Tm9pc2VFbmNvZGVyKHN0ZDo6bW92ZShj
b25maWcpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAqZW5jb2Rlcl9wdHIgPSBzdGQ6
Om1vdmUob2xkX2VuY29kZXIpOwogICAgICAgICB9CkBAIC03MDgsMTMgKzcxNCwxOCBAQCB2b2lk
IEF1ZGlvU2VuZFN0cmVhbTo6UmVjb25maWd1cmVCaXRyYXRlT2JzZXJ2ZXIoCiAKICAgYm9vbCBo
YXNfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciA9IG5ld190cmFuc3BvcnRfc2VxX251bV9pZCAh
PSAwOwogICBpZiAobmV3X2NvbmZpZy5taW5fYml0cmF0ZV9icHMgIT0gLTEgJiYgbmV3X2NvbmZp
Zy5tYXhfYml0cmF0ZV9icHMgIT0gLTEgJiYKKyAgICAgICFuZXdfY29uZmlnLmhhc19kc2NwICYm
CiAgICAgICAoaGFzX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgfHwKICAgICAgICAhd2VicnRj
OjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tU2VuZFNpZGVCd2UiKSkpIHsK
KyAgICBzdHJlYW0tPnJ0cF90cmFuc3BvcnRfLT5wYWNrZXRfc2VuZGVyKCktPlNldEFjY291bnRG
b3JBdWRpb1BhY2tldHModHJ1ZSk7CiAgICAgc3RyZWFtLT5Db25maWd1cmVCaXRyYXRlT2JzZXJ2
ZXIoCiAgICAgICAgIG5ld19jb25maWcubWluX2JpdHJhdGVfYnBzLCBuZXdfY29uZmlnLm1heF9i
aXRyYXRlX2JwcywKICAgICAgICAgbmV3X2NvbmZpZy5iaXRyYXRlX3ByaW9yaXR5LCBoYXNfdHJh
bnNwb3J0X3NlcXVlbmNlX251bWJlcik7CisgICAgc3RyZWFtLT5ydHBfcnRjcF9tb2R1bGVfLT5T
ZXRBc1BhcnRPZkFsbG9jYXRpb24odHJ1ZSk7CiAgIH0gZWxzZSB7CisgICAgc3RyZWFtLT5ydHBf
dHJhbnNwb3J0Xy0+cGFja2V0X3NlbmRlcigpLT5TZXRBY2NvdW50Rm9yQXVkaW9QYWNrZXRzKGZh
bHNlKTsKICAgICBzdHJlYW0tPlJlbW92ZUJpdHJhdGVPYnNlcnZlcigpOworICAgIHN0cmVhbS0+
cnRwX3J0Y3BfbW9kdWxlXy0+U2V0QXNQYXJ0T2ZBbGxvY2F0aW9uKGZhbHNlKTsKICAgfQogfQog
CkBAIC03MjQsNyArNzM1LDcgQEAgdm9pZCBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZ3VyZUJpdHJh
dGVPYnNlcnZlcihpbnQgbWluX2JpdHJhdGVfYnBzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhc19wYWNrZXRfZmVlZGJhY2spIHsKICAgUlRD
X0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAg
IFJUQ19EQ0hFQ0tfR0UobWF4X2JpdHJhdGVfYnBzLCBtaW5fYml0cmF0ZV9icHMpOwotICBydGM6
OkV2ZW50IHRocmVhZF9zeW5jX2V2ZW50KGZhbHNlIC8qIG1hbnVhbF9yZXNldCAqLywgZmFsc2Up
OworICBydGM6OkV2ZW50IHRocmVhZF9zeW5jX2V2ZW50OwogICB3b3JrZXJfcXVldWVfLT5Qb3N0
VGFzayhbJl0gewogICAgIC8vIFdlIG1heSBnZXQgYSBjYWxsYmFjayBpbW1lZGlhdGVseSBhcyB0
aGUgb2JzZXJ2ZXIgaXMgcmVnaXN0ZXJlZCwgc28gbWFrZQogICAgIC8vIHN1cmUgdGhlIGJpdHJh
dGUgbGltaXRzIGluIGNvbmZpZ18gYXJlIHVwLXRvLWRhdGUuCkBAIC03NDQsNyArNzU1LDcgQEAg
dm9pZCBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZ3VyZUJpdHJhdGVPYnNlcnZlcihpbnQgbWluX2Jp
dHJhdGVfYnBzLAogCiB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6UmVtb3ZlQml0cmF0ZU9ic2VydmVy
KCkgewogICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRo
cmVhZCgpKTsKLSAgcnRjOjpFdmVudCB0aHJlYWRfc3luY19ldmVudChmYWxzZSAvKiBtYW51YWxf
cmVzZXQgKi8sIGZhbHNlKTsKKyAgcnRjOjpFdmVudCB0aHJlYWRfc3luY19ldmVudDsKICAgd29y
a2VyX3F1ZXVlXy0+UG9zdFRhc2soW3RoaXMsICZ0aHJlYWRfc3luY19ldmVudF0gewogICAgIGJp
dHJhdGVfYWxsb2NhdG9yXy0+UmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CiAgICAgdGhyZWFkX3N5bmNf
ZXZlbnQuU2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19zZW5kX3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uaAppbmRleCAx
ZWE2NzZiNjVkYjc0NTIyMTg2MWFhNTFkNDMwOTQ5OGM2YWFjOTFhLi5iZjk0OTAxZWYwNTc1MGYz
MDY4ZGVlOTAzYTZkMGY1Y2JlZjZkZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19zZW5kX3N0cmVhbS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3NlbmRf
c3RyZWFtLmgKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCi0jaW5jbHVkZSAiYXVkaW8vdGltZV9pbnRlcnZhbC5oIgorI2luY2x1ZGUgImF1
ZGlvL2NoYW5uZWxfc2VuZC5oIgogI2luY2x1ZGUgImF1ZGlvL3RyYW5zcG9ydF9mZWVkYmFja19w
YWNrZXRfbG9zc190cmFja2VyLmgiCiAjaW5jbHVkZSAiY2FsbC9hdWRpb19zZW5kX3N0cmVhbS5o
IgogI2luY2x1ZGUgImNhbGwvYXVkaW9fc3RhdGUuaCIKQEAgLTMwLDEwICszMCw2IEBAIGNsYXNz
IFJ0Y3BCYW5kd2lkdGhPYnNlcnZlcjsKIGNsYXNzIFJ0Y3BSdHRTdGF0czsKIGNsYXNzIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlOwogCi1uYW1lc3BhY2Ugdm9lIHsKLWNsYXNz
IENoYW5uZWxTZW5kUHJveHk7Ci19ICAvLyBuYW1lc3BhY2Ugdm9lCi0KIG5hbWVzcGFjZSBpbnRl
cm5hbCB7CiBjbGFzcyBBdWRpb1N0YXRlOwogCkBAIC00NSwyMyArNDEsMjEgQEAgY2xhc3MgQXVk
aW9TZW5kU3RyZWFtIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtLAogICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0
ZT4mIGF1ZGlvX3N0YXRlLAogICAgICAgICAgICAgICAgICAgcnRjOjpUYXNrUXVldWUqIHdvcmtl
cl9xdWV1ZSwKICAgICAgICAgICAgICAgICAgIFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNz
X3RocmVhZCwKLSAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50
ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICBCaXRyYXRlQWxsb2NhdG9yKiBi
aXRyYXRlX2FsbG9jYXRvciwKKyAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJTZW5kSW50ZXJmYWNlKiBydHBfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgQml0cmF0
ZUFsbG9jYXRvckludGVyZmFjZSogYml0cmF0ZV9hbGxvY2F0b3IsCiAgICAgICAgICAgICAgICAg
ICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgICAgICAgICAgICAgICAgUnRjcFJ0dFN0YXRz
KiBydGNwX3J0dF9zdGF0cywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFs
PFJ0cFN0YXRlPiYgc3VzcGVuZGVkX3J0cF9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgIFRpbWVJ
bnRlcnZhbCogb3ZlcmFsbF9jYWxsX2xpZmV0aW1lKTsKLSAgLy8gRm9yIHVuaXQgdGVzdHMsIHdo
aWNoIG5lZWQgdG8gc3VwcGx5IGEgbW9jayBjaGFubmVsIHByb3h5LgorICAgICAgICAgICAgICAg
ICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8UnRwU3RhdGU+JiBzdXNwZW5kZWRfcnRwX3N0YXRlKTsK
KyAgLy8gRm9yIHVuaXQgdGVzdHMsIHdoaWNoIG5lZWQgdG8gc3VwcGx5IGEgbW9jayBDaGFubmVs
U2VuZC4KICAgQXVkaW9TZW5kU3RyZWFtKGNvbnN0IHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpD
b25maWcmIGNvbmZpZywKICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OkF1ZGlvU3RhdGU+JiBhdWRpb19zdGF0ZSwKICAgICAgICAgICAgICAgICAgIHJ0
Yzo6VGFza1F1ZXVlKiB3b3JrZXJfcXVldWUsCi0gICAgICAgICAgICAgICAgICBSdHBUcmFuc3Bv
cnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAg
Qml0cmF0ZUFsbG9jYXRvciogYml0cmF0ZV9hbGxvY2F0b3IsCisgICAgICAgICAgICAgICAgICBS
dHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogcnRwX3RyYW5zcG9ydCwKKyAgICAg
ICAgICAgICAgICAgIEJpdHJhdGVBbGxvY2F0b3JJbnRlcmZhY2UqIGJpdHJhdGVfYWxsb2NhdG9y
LAogICAgICAgICAgICAgICAgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKICAgICAgICAgICAg
ICAgICAgIFJ0Y3BSdHRTdGF0cyogcnRjcF9ydHRfc3RhdHMsCiAgICAgICAgICAgICAgICAgICBj
b25zdCBhYnNsOjpvcHRpb25hbDxSdHBTdGF0ZT4mIHN1c3BlbmRlZF9ydHBfc3RhdGUsCi0gICAg
ICAgICAgICAgICAgICBUaW1lSW50ZXJ2YWwqIG92ZXJhbGxfY2FsbF9saWZldGltZSwKLSAgICAg
ICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxTZW5kUHJveHk+IGNoYW5u
ZWxfcHJveHkpOworICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5l
bFNlbmRJbnRlcmZhY2U+IGNoYW5uZWxfc2VuZCk7CiAgIH5BdWRpb1NlbmRTdHJlYW0oKSBvdmVy
cmlkZTsKIAogICAvLyB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbSBpbXBsZW1lbnRhdGlvbi4KQEAg
LTgzLDEwICs3Nyw3IEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSBmaW5hbCA6IHB1YmxpYyB3ZWJy
dGM6OkF1ZGlvU2VuZFN0cmVhbSwKICAgYm9vbCBEZWxpdmVyUnRjcChjb25zdCB1aW50OF90KiBw
YWNrZXQsIHNpemVfdCBsZW5ndGgpOwogCiAgIC8vIEltcGxlbWVudHMgQml0cmF0ZUFsbG9jYXRv
ck9ic2VydmVyLgotICB1aW50MzJfdCBPbkJpdHJhdGVVcGRhdGVkKHVpbnQzMl90IGJpdHJhdGVf
YnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJ0dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IGJ3ZV9wZXJpb2RfbXMpIG92ZXJyaWRlOworICB1aW50MzJf
dCBPbkJpdHJhdGVVcGRhdGVkKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSkgb3ZlcnJp
ZGU7CiAKICAgLy8gRnJvbSBQYWNrZXRGZWVkYmFja09ic2VydmVyLgogICB2b2lkIE9uUGFja2V0
QWRkZWQodWludDMyX3Qgc3NyYywgdWludDE2X3Qgc2VxX251bSkgb3ZlcnJpZGU7CkBAIC05Niw3
ICs4Nyw3IEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OkF1
ZGlvU2VuZFN0cmVhbSwKICAgdm9pZCBTZXRUcmFuc3BvcnRPdmVyaGVhZChpbnQgdHJhbnNwb3J0
X292ZXJoZWFkX3Blcl9wYWNrZXQpOwogCiAgIFJ0cFN0YXRlIEdldFJ0cFN0YXRlKCkgY29uc3Q7
Ci0gIGNvbnN0IHZvZTo6Q2hhbm5lbFNlbmRQcm94eSYgR2V0Q2hhbm5lbFByb3h5KCkgY29uc3Q7
CisgIGNvbnN0IHZvZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2UqIEdldENoYW5uZWwoKSBjb25zdDsK
IAogIHByaXZhdGU6CiAgIGNsYXNzIFRpbWVkVHJhbnNwb3J0OwpAQCAtMTMzLDE1ICsxMjQsMTUg
QEAgY2xhc3MgQXVkaW9TZW5kU3RyZWFtIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6QXVkaW9TZW5k
U3RyZWFtLAogICBydGM6OlRhc2tRdWV1ZSogd29ya2VyX3F1ZXVlXzsKICAgd2VicnRjOjpBdWRp
b1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWdfOwogICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpBdWRpb1N0YXRlPiBhdWRpb19zdGF0ZV87Ci0gIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5u
ZWxTZW5kUHJveHk+IGNoYW5uZWxfcHJveHlfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8dm9l
OjpDaGFubmVsU2VuZEludGVyZmFjZT4gY2hhbm5lbF9zZW5kXzsKICAgUnRjRXZlbnRMb2cqIGNv
bnN0IGV2ZW50X2xvZ187CiAKICAgaW50IGVuY29kZXJfc2FtcGxlX3JhdGVfaHpfID0gMDsKICAg
c2l6ZV90IGVuY29kZXJfbnVtX2NoYW5uZWxzXyA9IDA7CiAgIGJvb2wgc2VuZGluZ18gPSBmYWxz
ZTsKIAotICBCaXRyYXRlQWxsb2NhdG9yKiBjb25zdCBiaXRyYXRlX2FsbG9jYXRvcl87Ci0gIFJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiBjb25zdCB0cmFuc3BvcnRfOworICBC
aXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlKiBjb25zdCBiaXRyYXRlX2FsbG9jYXRvcl87CisgIFJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiBjb25zdCBydHBfdHJhbnNwb3J0XzsK
IAogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBwYWNrZXRfbG9zc190cmFja2VyX2NzXzsKICAgVHJh
bnNwb3J0RmVlZGJhY2tQYWNrZXRMb3NzVHJhY2tlciBwYWNrZXRfbG9zc190cmFja2VyXwpAQCAt
MTUwLDEwICsxNDEsNiBAQCBjbGFzcyBBdWRpb1NlbmRTdHJlYW0gZmluYWwgOiBwdWJsaWMgd2Vi
cnRjOjpBdWRpb1NlbmRTdHJlYW0sCiAgIFJ0cFJ0Y3AqIHJ0cF9ydGNwX21vZHVsZV87CiAgIGFi
c2w6Om9wdGlvbmFsPFJ0cFN0YXRlPiBjb25zdCBzdXNwZW5kZWRfcnRwX3N0YXRlXzsKIAotICBz
dGQ6OnVuaXF1ZV9wdHI8VGltZWRUcmFuc3BvcnQ+IHRpbWVkX3NlbmRfdHJhbnNwb3J0X2FkYXB0
ZXJfOwotICBUaW1lSW50ZXJ2YWwgYWN0aXZlX2xpZmV0aW1lXzsKLSAgVGltZUludGVydmFsKiBv
dmVyYWxsX2NhbGxfbGlmZXRpbWVfID0gbnVsbHB0cjsKLQogICAvLyBSRkMgNTI4NTogRWFjaCBk
aXN0aW5jdCBleHRlbnNpb24gTVVTVCBoYXZlIGEgdW5pcXVlIElELiBUaGUgdmFsdWUgMCBpcwog
ICAvLyByZXNlcnZlZCBmb3IgcGFkZGluZyBhbmQgTVVTVCBOT1QgYmUgdXNlZCBhcyBhIGxvY2Fs
IGlkZW50aWZpZXIuCiAgIC8vIFNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIHVzZSAwIGhlcmUgdG8g
aW5kaWNhdGUgIm5vdCBjb25maWd1cmVkIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVk
aW9fc2VuZF9zdHJlYW1fdW5pdHRlc3QuY2MKaW5kZXggMGE5NTRmODZkNjI5YzU1OTVkMjAxNGQ3
NGMxMzc4MjY4ZGUxZTZlMC4uZTQwMGFkYTBlNWFmNDA5YjQyYWM2OGI0YTY2OGJmMWEzNGI0MWRh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXVkaW8vYXVkaW9fc2VuZF9zdHJlYW1fdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW1fdW5pdHRl
c3QuY2MKQEAgLTEzLDcgKzEzLDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJh
YnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJhcGkvdW5pdHMvdGltZV9kZWx0YS5oIgor
I2luY2x1ZGUgImFwaS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9yLmgiCiAjaW5jbHVkZSAiYXVk
aW8vYXVkaW9fc2VuZF9zdHJlYW0uaCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19zdGF0ZS5oIgog
I2luY2x1ZGUgImF1ZGlvL2NvbnZlcnNpb24uaCIKQEAgLTI3LDEyICsyNywxMCBAQAogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydGNwX2JhbmR3aWR0aF9vYnNlcnZlci5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydGNwX3J0dF9zdGF0cy5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2Zha2VjbG9jay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVl
dWUuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9tb2NrX2F1ZGlv
X2VuY29kZXIuaCIKICNpbmNsdWRlICJ0ZXN0L21vY2tfYXVkaW9fZW5jb2Rlcl9mYWN0b3J5Lmgi
Ci0jaW5jbHVkZSAidGVzdC9tb2NrX3RyYW5zcG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IG5hbWVzcGFjZSB0ZXN0IHsKQEAgLTQxLDYgKzM5LDcgQEAgbmFtZXNwYWNlIHsKIHVzaW5nIHRl
c3Rpbmc6Ol87CiB1c2luZyB0ZXN0aW5nOjpFcTsKIHVzaW5nIHRlc3Rpbmc6Ok5lOwordXNpbmcg
dGVzdGluZzo6RmllbGQ7CiB1c2luZyB0ZXN0aW5nOjpJbnZva2U7CiB1c2luZyB0ZXN0aW5nOjpS
ZXR1cm47CiB1c2luZyB0ZXN0aW5nOjpTdHJFcTsKQEAgLTEyOCw3ICsxMjcsNyBAQCBydGM6OnNj
b3BlZF9yZWZwdHI8TW9ja0F1ZGlvRW5jb2RlckZhY3Rvcnk+IFNldHVwRW5jb2RlckZhY3RvcnlN
b2NrKCkgewogCiBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKICAgQ29uZmlnSGVscGVyKGJvb2wgYXVk
aW9fYndlX2VuYWJsZWQsIGJvb2wgZXhwZWN0X3NldF9lbmNvZGVyX2NhbGwpCi0gICAgICA6IHN0
cmVhbV9jb25maWdfKG51bGxwdHIpLAorICAgICAgOiBzdHJlYW1fY29uZmlnXygvKnNlbmRfdHJh
bnNwb3J0PSovbnVsbHB0ciwgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKSwKICAgICAgICAg
YXVkaW9fcHJvY2Vzc2luZ18obmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxNb2NrQXVkaW9Qcm9j
ZXNzaW5nPigpKSwKICAgICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfKCZsaW1pdF9vYnNlcnZlcl8p
LAogICAgICAgICB3b3JrZXJfcXVldWVfKCJDb25maWdIZWxwZXJfd29ya2VyX3F1ZXVlIiksCkBA
IC0xNDIsNyArMTQxLDcgQEAgc3RydWN0IENvbmZpZ0hlbHBlciB7CiAgICAgICAgIG5ldyBydGM6
OlJlZkNvdW50ZWRPYmplY3Q8TW9ja0F1ZGlvRGV2aWNlTW9kdWxlPigpOwogICAgIGF1ZGlvX3N0
YXRlXyA9IEF1ZGlvU3RhdGU6OkNyZWF0ZShjb25maWcpOwogCi0gICAgU2V0dXBEZWZhdWx0Q2hh
bm5lbFByb3h5KGF1ZGlvX2J3ZV9lbmFibGVkKTsKKyAgICBTZXR1cERlZmF1bHRDaGFubmVsU2Vu
ZChhdWRpb19id2VfZW5hYmxlZCk7CiAgICAgU2V0dXBNb2NrRm9yU2V0dXBTZW5kQ29kZWMoZXhw
ZWN0X3NldF9lbmNvZGVyX2NhbGwpOwogCiAgICAgLy8gVXNlIElTQUMgYXMgZGVmYXVsdCBjb2Rl
YyBzbyBhcyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHxjaGFubmVsX3Byb3h5X3wKQEAgLTE1MCw3
ICsxNDksNiBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKICAgICBzdHJlYW1fY29uZmlnXy5zZW5k
X2NvZGVjX3NwZWMgPQogICAgICAgICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6U2VuZENvZGVj
U3BlYyhrSXNhY1BheWxvYWRUeXBlLCBrSXNhY0Zvcm1hdCk7CiAgICAgc3RyZWFtX2NvbmZpZ18u
cnRwLnNzcmMgPSBrU3NyYzsKLSAgICBzdHJlYW1fY29uZmlnXy5ydHAubmFjay5ydHBfaGlzdG9y
eV9tcyA9IDIwMDsKICAgICBzdHJlYW1fY29uZmlnXy5ydHAuY19uYW1lID0ga0NOYW1lOwogICAg
IHN0cmVhbV9jb25maWdfLnJ0cC5leHRlbnNpb25zLnB1c2hfYmFjaygKICAgICAgICAgUnRwRXh0
ZW5zaW9uKFJ0cEV4dGVuc2lvbjo6a0F1ZGlvTGV2ZWxVcmksIGtBdWRpb0xldmVsSWQpKTsKQEAg
LTE2Nyw4ICsxNjUsNyBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKICAgICAgICAgbmV3IGludGVy
bmFsOjpBdWRpb1NlbmRTdHJlYW0oCiAgICAgICAgICAgICBzdHJlYW1fY29uZmlnXywgYXVkaW9f
c3RhdGVfLCAmd29ya2VyX3F1ZXVlXywgJnJ0cF90cmFuc3BvcnRfLAogICAgICAgICAgICAgJmJp
dHJhdGVfYWxsb2NhdG9yXywgJmV2ZW50X2xvZ18sICZydGNwX3J0dF9zdGF0c18sIGFic2w6Om51
bGxvcHQsCi0gICAgICAgICAgICAmYWN0aXZlX2xpZmV0aW1lXywKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxTZW5kUHJveHk+KGNoYW5uZWxfcHJveHlfKSkpOworICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2U+KGNoYW5u
ZWxfc2VuZF8pKSk7CiAgIH0KIAogICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyYgY29uZmlnKCkg
eyByZXR1cm4gc3RyZWFtX2NvbmZpZ187IH0KQEAgLTE3Niw5ICsxNzMsOCBAQCBzdHJ1Y3QgQ29u
ZmlnSGVscGVyIHsKICAgICByZXR1cm4gKnN0YXRpY19jYXN0PE1vY2tBdWRpb0VuY29kZXJGYWN0
b3J5Kj4oCiAgICAgICAgIHN0cmVhbV9jb25maWdfLmVuY29kZXJfZmFjdG9yeS5nZXQoKSk7CiAg
IH0KLSAgTW9ja0NoYW5uZWxTZW5kUHJveHkqIGNoYW5uZWxfcHJveHkoKSB7IHJldHVybiBjaGFu
bmVsX3Byb3h5XzsgfQorICBNb2NrQ2hhbm5lbFNlbmQqIGNoYW5uZWxfc2VuZCgpIHsgcmV0dXJu
IGNoYW5uZWxfc2VuZF87IH0KICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2Uq
IHRyYW5zcG9ydCgpIHsgcmV0dXJuICZydHBfdHJhbnNwb3J0XzsgfQotICBUaW1lSW50ZXJ2YWwq
IGFjdGl2ZV9saWZldGltZSgpIHsgcmV0dXJuICZhY3RpdmVfbGlmZXRpbWVfOyB9CiAKICAgc3Rh
dGljIHZvaWQgQWRkQndlVG9Db25maWcoQXVkaW9TZW5kU3RyZWFtOjpDb25maWcqIGNvbmZpZykg
ewogICAgIGNvbmZpZy0+cnRwLmV4dGVuc2lvbnMucHVzaF9iYWNrKFJ0cEV4dGVuc2lvbigKQEAg
LTE4Niw0NyArMTgyLDQwIEBAIHN0cnVjdCBDb25maWdIZWxwZXIgewogICAgIGNvbmZpZy0+c2Vu
ZF9jb2RlY19zcGVjLT50cmFuc3BvcnRfY2NfZW5hYmxlZCA9IHRydWU7CiAgIH0KIAotICB2b2lk
IFNldHVwRGVmYXVsdENoYW5uZWxQcm94eShib29sIGF1ZGlvX2J3ZV9lbmFibGVkKSB7Ci0gICAg
RVhQRUNUX1RSVUUoY2hhbm5lbF9wcm94eV8gPT0gbnVsbHB0cik7Ci0gICAgY2hhbm5lbF9wcm94
eV8gPSBuZXcgdGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFNlbmRQcm94eT4oKTsKLSAg
ICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIEdldFJ0cFJ0Y3AoKSkuV2lsbFJlcGVhdGVk
bHkoSW52b2tlKFt0aGlzXSgpIHsKKyAgdm9pZCBTZXR1cERlZmF1bHRDaGFubmVsU2VuZChib29s
IGF1ZGlvX2J3ZV9lbmFibGVkKSB7CisgICAgRVhQRUNUX1RSVUUoY2hhbm5lbF9zZW5kXyA9PSBu
dWxscHRyKTsKKyAgICBjaGFubmVsX3NlbmRfID0gbmV3IHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9j
a0NoYW5uZWxTZW5kPigpOworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLCBHZXRSdHBS
dGNwKCkpLldpbGxSZXBlYXRlZGx5KEludm9rZShbdGhpc10oKSB7CiAgICAgICByZXR1cm4gJnRo
aXMtPnJ0cF9ydGNwXzsKICAgICB9KSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlf
LCBTZXRSVENQU3RhdHVzKHRydWUpKS5UaW1lcygxKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5l
bF9wcm94eV8sIFNldExvY2FsU1NSQyhrU3NyYykpLlRpbWVzKDEpOwotICAgIEVYUEVDVF9DQUxM
KCpjaGFubmVsX3Byb3h5XywgU2V0UlRDUF9DTkFNRShTdHJFcShrQ05hbWUpKSkuVGltZXMoMSk7
Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXROQUNLU3RhdHVzKHRydWUsIDEw
KSkuVGltZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXRGcmFtZUVu
Y3J5cHRvcihudWxscHRyKSkuVGltZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJv
eHlfLAorICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLCBTZXRMb2NhbFNTUkMoa1NzcmMp
KS5UaW1lcygxKTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgU2V0UlRDUF9DTkFN
RShTdHJFcShrQ05hbWUpKSkuVGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfc2Vu
ZF8sIFNldEZyYW1lRW5jcnlwdG9yKF8pKS5UaW1lcygxKTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hh
bm5lbF9zZW5kXywgU2V0RXh0bWFwQWxsb3dNaXhlZChmYWxzZSkpLlRpbWVzKDEpOworICAgIEVY
UEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLAogICAgICAgICAgICAgICAgIFNldFNlbmRBdWRpb0xl
dmVsSW5kaWNhdGlvblN0YXR1cyh0cnVlLCBrQXVkaW9MZXZlbElkKSkKICAgICAgICAgLlRpbWVz
KDEpOwogICAgIEVYUEVDVF9DQUxMKHJ0cF90cmFuc3BvcnRfLCBHZXRCYW5kd2lkdGhPYnNlcnZl
cigpKQogICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCZiYW5kd2lkdGhfb2JzZXJ2ZXJf
KSk7CiAgICAgaWYgKGF1ZGlvX2J3ZV9lbmFibGVkKSB7Ci0gICAgICBFWFBFQ1RfQ0FMTCgqY2hh
bm5lbF9wcm94eV8sCisgICAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywKICAgICAgICAg
ICAgICAgICAgIEVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihrVHJhbnNwb3J0U2Vx
dWVuY2VOdW1iZXJJZCkpCiAgICAgICAgICAgLlRpbWVzKDEpOwotICAgICAgRVhQRUNUX0NBTEwo
KmNoYW5uZWxfcHJveHlfLAorICAgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfc2VuZF8sCiAgICAg
ICAgICAgICAgICAgICBSZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKICAg
ICAgICAgICAgICAgICAgICAgICAmcnRwX3RyYW5zcG9ydF8sIEVxKCZiYW5kd2lkdGhfb2JzZXJ2
ZXJfKSkpCiAgICAgICAgICAgLlRpbWVzKDEpOwogICAgIH0gZWxzZSB7Ci0gICAgICBFWFBFQ1Rf
Q0FMTCgqY2hhbm5lbF9wcm94eV8sIFJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmpl
Y3RzKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJ0cF90cmFuc3Bv
cnRfLCBFcShudWxscHRyKSkpCisgICAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgUmVn
aXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZydHBfdHJhbnNwb3J0XywgRXEobnVsbHB0cikpKQogICAgICAg
ICAgIC5UaW1lcygxKTsKICAgICB9Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBS
ZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpKQotICAgICAgICAuVGltZXMoMSk7
Ci0gICAgewotICAgICAgOjp0ZXN0aW5nOjpJblNlcXVlbmNlIHVucmVnaXN0ZXJfb25fZGVzdHJ1
Y3Rpb247Ci0gICAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFJlZ2lzdGVyVHJhbnNw
b3J0KF8pKS5UaW1lcygxKTsKLSAgICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgUmVn
aXN0ZXJUcmFuc3BvcnQobnVsbHB0cikpLlRpbWVzKDEpOwotICAgIH0KKyAgICBFWFBFQ1RfQ0FM
TCgqY2hhbm5lbF9zZW5kXywgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSku
VGltZXMoMSk7CiAgIH0KIAogICB2b2lkIFNldHVwTW9ja0ZvclNldHVwU2VuZENvZGVjKGJvb2wg
ZXhwZWN0X3NldF9lbmNvZGVyX2NhbGwpIHsKICAgICBpZiAoZXhwZWN0X3NldF9lbmNvZGVyX2Nh
bGwpIHsKLSAgICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgU2V0RW5jb2RlckZvck1v
Y2soXywgXykpCisgICAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgU2V0RW5jb2RlckZv
ck1vY2soXywgXykpCiAgICAgICAgICAgLldpbGxPbmNlKEludm9rZSgKICAgICAgICAgICAgICAg
W3RoaXNdKGludCBwYXlsb2FkX3R5cGUsIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBl
bmNvZGVyKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+YXVkaW9fZW5jb2Rlcl8gPSBzdGQ6Om1v
dmUoKmVuY29kZXIpOwpAQCAtMjM3LDcgKzIyNiw3IEBAIHN0cnVjdCBDb25maWdIZWxwZXIgewog
CiAgIHZvaWQgU2V0dXBNb2NrRm9yTW9kaWZ5RW5jb2RlcigpIHsKICAgICAvLyBMZXQgTW9kaWZ5
RW5jb2RlciB0byBpbnZva2UgbW9jayBhdWRpbyBlbmNvZGVyLgotICAgIEVYUEVDVF9DQUxMKCpj
aGFubmVsX3Byb3h5XywgTW9kaWZ5RW5jb2RlcihfKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5l
bF9zZW5kXywgTW9kaWZ5RW5jb2RlcihfKSkKICAgICAgICAgLldpbGxSZXBlYXRlZGx5KEludm9r
ZSgKICAgICAgICAgICAgIFt0aGlzXShydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0VuY29kZXI+Kik+CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyKSB7
CkBAIC0yNDcsMTMgKzIzNiwxMyBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKICAgfQogCiAgIHZv
aWQgU2V0dXBNb2NrRm9yU2VuZFRlbGVwaG9uZUV2ZW50KCkgewotICAgIEVYUEVDVF9UUlVFKGNo
YW5uZWxfcHJveHlfKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFNldFNlbmRU
ZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtUZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtUZWxlcGhvbmVFdmVudFBheWxvYWRGcmVxdWVuY3kpKQorICAgIEVY
UEVDVF9UUlVFKGNoYW5uZWxfc2VuZF8pOworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRf
LCBTZXRTZW5kVGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtUZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga1RlbGVwaG9uZUV2ZW50UGF5bG9hZEZyZXF1ZW5jeSkp
CiAgICAgICAgIC5XaWxsT25jZShSZXR1cm4odHJ1ZSkpOwogICAgIEVYUEVDVF9DQUxMKAotICAg
ICAgICAqY2hhbm5lbF9wcm94eV8sCisgICAgICAgICpjaGFubmVsX3NlbmRfLAogICAgICAgICBT
ZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGtUZWxlcGhvbmVFdmVudENvZGUsIGtUZWxlcGhvbmVF
dmVudER1cmF0aW9uKSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybih0cnVlKSk7CiAgIH0KQEAg
LTI3MSwxMyArMjYwLDE0IEBAIHN0cnVjdCBDb25maWdIZWxwZXIgewogICAgIGJsb2NrLmZyYWN0
aW9uX2xvc3QgPSAwOwogICAgIHJlcG9ydF9ibG9ja3MucHVzaF9iYWNrKGJsb2NrKTsgIC8vIER1
cGxpY2F0ZSBTU1JDLCBiYWQgZnJhY3Rpb25fbG9zdC4KIAotICAgIEVYUEVDVF9UUlVFKGNoYW5u
ZWxfcHJveHlfKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIEdldFJUQ1BTdGF0
aXN0aWNzKCkpCisgICAgRVhQRUNUX1RSVUUoY2hhbm5lbF9zZW5kXyk7CisgICAgRVhQRUNUX0NB
TEwoKmNoYW5uZWxfc2VuZF8sIEdldFJUQ1BTdGF0aXN0aWNzKCkpCiAgICAgICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm4oa0NhbGxTdGF0cykpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3By
b3h5XywgR2V0UmVtb3RlUlRDUFJlcG9ydEJsb2NrcygpKQorICAgIEVYUEVDVF9DQUxMKCpjaGFu
bmVsX3NlbmRfLCBHZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tzKCkpCiAgICAgICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm4ocmVwb3J0X2Jsb2NrcykpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVs
X3Byb3h5XywgR2V0QU5BU3RhdGlzdGljcygpKQorICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Nl
bmRfLCBHZXRBTkFTdGF0aXN0aWNzKCkpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4o
QU5BU3RhdHMoKSkpOworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLCBHZXRCaXRyYXRl
KCkpLldpbGxSZXBlYXRlZGx5KFJldHVybigwKSk7CiAKICAgICBhdWRpb19wcm9jZXNzaW5nX3N0
YXRzXy5lY2hvX3JldHVybl9sb3NzID0ga0VjaG9SZXR1cm5Mb3NzOwogICAgIGF1ZGlvX3Byb2Nl
c3Npbmdfc3RhdHNfLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPQpAQCAtMjk3LDEwICsy
ODcsOSBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKICBwcml2YXRlOgogICBydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9TdGF0ZT4gYXVkaW9fc3RhdGVfOwogICBBdWRpb1NlbmRTdHJlYW06OkNvbmZp
ZyBzdHJlYW1fY29uZmlnXzsKLSAgdGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFNlbmRQ
cm94eT4qIGNoYW5uZWxfcHJveHlfID0gbnVsbHB0cjsKKyAgdGVzdGluZzo6U3RyaWN0TW9jazxN
b2NrQ2hhbm5lbFNlbmQ+KiBjaGFubmVsX3NlbmRfID0gbnVsbHB0cjsKICAgcnRjOjpzY29wZWRf
cmVmcHRyPE1vY2tBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmdfOwogICBBdWRpb1By
b2Nlc3NpbmdTdGF0cyBhdWRpb19wcm9jZXNzaW5nX3N0YXRzXzsKLSAgVGltZUludGVydmFsIGFj
dGl2ZV9saWZldGltZV87CiAgIHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja1J0Y3BCYW5kd2lkdGhP
YnNlcnZlcj4gYmFuZHdpZHRoX29ic2VydmVyXzsKICAgdGVzdGluZzo6TmljZU1vY2s8TW9ja1J0
Y0V2ZW50TG9nPiBldmVudF9sb2dfOwogICB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrUnRwVHJhbnNw
b3J0Q29udHJvbGxlclNlbmQ+IHJ0cF90cmFuc3BvcnRfOwpAQCAtMzE2LDcgKzMwNSw4IEBAIHN0
cnVjdCBDb25maWdIZWxwZXIgewogfSAgLy8gbmFtZXNwYWNlCiAKIFRFU1QoQXVkaW9TZW5kU3Ry
ZWFtVGVzdCwgQ29uZmlnVG9TdHJpbmcpIHsKLSAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgY29u
ZmlnKG51bGxwdHIpOworICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcoLypzZW5kX3Ry
YW5zcG9ydD0qL251bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1l
ZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogICBjb25maWcucnRwLnNzcmMgPSBrU3NyYzsKICAg
Y29uZmlnLnJ0cC5jX25hbWUgPSBrQ05hbWU7CiAgIGNvbmZpZy5taW5fYml0cmF0ZV9icHMgPSAx
MjAwMDsKQEAgLTMyNywxMiArMzE3LDE1IEBAIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgQ29u
ZmlnVG9TdHJpbmcpIHsKICAgY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+dHJhbnNwb3J0X2NjX2Vu
YWJsZWQgPSBmYWxzZTsKICAgY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+Y25nX3BheWxvYWRfdHlw
ZSA9IDQyOwogICBjb25maWcuZW5jb2Rlcl9mYWN0b3J5ID0gTW9ja0F1ZGlvRW5jb2RlckZhY3Rv
cnk6OkNyZWF0ZVVudXNlZEZhY3RvcnkoKTsKKyAgY29uZmlnLnJ0cC5leHRtYXBfYWxsb3dfbWl4
ZWQgPSB0cnVlOwogICBjb25maWcucnRwLmV4dGVuc2lvbnMucHVzaF9iYWNrKAogICAgICAgUnRw
RXh0ZW5zaW9uKFJ0cEV4dGVuc2lvbjo6a0F1ZGlvTGV2ZWxVcmksIGtBdWRpb0xldmVsSWQpKTsK
KyAgY29uZmlnLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0gMjUwMDsKICAgRVhQRUNUX0VRKAot
ICAgICAgIntydHA6IHtzc3JjOiAxMjM0LCBleHRlbnNpb25zOiBbe3VyaTogIgotICAgICAgInVy
bjppZXRmOnBhcmFtczpydHAtaGRyZXh0OnNzcmMtYXVkaW8tbGV2ZWwsIGlkOiAyfV0sIG5hY2s6
ICIKLSAgICAgICJ7cnRwX2hpc3RvcnlfbXM6IDB9LCBjX25hbWU6IGZvb19uYW1lfSwgc2VuZF90
cmFuc3BvcnQ6IG51bGwsICIKKyAgICAgICJ7cnRwOiB7c3NyYzogMTIzNCwgZXh0bWFwLWFsbG93
LW1peGVkOiB0cnVlLCBleHRlbnNpb25zOiBbe3VyaTogIgorICAgICAgInVybjppZXRmOnBhcmFt
czpydHAtaGRyZXh0OnNzcmMtYXVkaW8tbGV2ZWwsIGlkOiAyfV0sICIKKyAgICAgICJjX25hbWU6
IGZvb19uYW1lfSwgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM6IDI1MDAsICIKKyAgICAgICJzZW5k
X3RyYW5zcG9ydDogbnVsbCwgbWVkaWFfdHJhbnNwb3J0OiBudWxsLCAiCiAgICAgICAibWluX2Jp
dHJhdGVfYnBzOiAxMjAwMCwgbWF4X2JpdHJhdGVfYnBzOiAzNDAwMCwgIgogICAgICAgInNlbmRf
Y29kZWNfc3BlYzoge25hY2tfZW5hYmxlZDogdHJ1ZSwgdHJhbnNwb3J0X2NjX2VuYWJsZWQ6IGZh
bHNlLCAiCiAgICAgICAiY25nX3BheWxvYWRfdHlwZTogNDIsIHBheWxvYWRfdHlwZTogMTAzLCAi
CkBAIC0zNTgsNyArMzUxLDcgQEAgVEVTVChBdWRpb1NlbmRTdHJlYW1UZXN0LCBTZW5kVGVsZXBo
b25lRXZlbnQpIHsKIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgU2V0TXV0ZWQpIHsKICAgQ29u
ZmlnSGVscGVyIGhlbHBlcihmYWxzZSwgdHJ1ZSk7CiAgIGF1dG8gc2VuZF9zdHJlYW0gPSBoZWxw
ZXIuQ3JlYXRlQXVkaW9TZW5kU3RyZWFtKCk7Ci0gIEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5l
bF9wcm94eSgpLCBTZXRJbnB1dE11dGUodHJ1ZSkpOworICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNo
YW5uZWxfc2VuZCgpLCBTZXRJbnB1dE11dGUodHJ1ZSkpOwogICBzZW5kX3N0cmVhbS0+U2V0TXV0
ZWQodHJ1ZSk7CiB9CiAKQEAgLTQ0OCw3ICs0NDEsNyBAQCBURVNUKEF1ZGlvU2VuZFN0cmVhbVRl
c3QsIFNlbmRDb2RlY0NhbkFwcGx5VmFkKSB7CiAgIGhlbHBlci5jb25maWcoKS5zZW5kX2NvZGVj
X3NwZWMtPmNuZ19wYXlsb2FkX3R5cGUgPSAxMDU7CiAgIHVzaW5nIDo6dGVzdGluZzo6SW52b2tl
OwogICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBzdG9sZW5fZW5jb2RlcjsKLSAgRVhQ
RUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3Byb3h5KCksIFNldEVuY29kZXJGb3JNb2NrKF8sIF8p
KQorICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfc2VuZCgpLCBTZXRFbmNvZGVyRm9yTW9j
ayhfLCBfKSkKICAgICAgIC5XaWxsT25jZSgKICAgICAgICAgICBJbnZva2UoWyZzdG9sZW5fZW5j
b2Rlcl0oaW50IHBheWxvYWRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXIpIHsKQEAgLTQ2OCwxNyAr
NDYxLDMxIEBAIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgU2VuZENvZGVjQ2FuQXBwbHlWYWQp
IHsKIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgRG9lc05vdFBhc3NIaWdoZXJCaXRyYXRlVGhh
bk1heEJpdHJhdGUpIHsKICAgQ29uZmlnSGVscGVyIGhlbHBlcihmYWxzZSwgdHJ1ZSk7CiAgIGF1
dG8gc2VuZF9zdHJlYW0gPSBoZWxwZXIuQ3JlYXRlQXVkaW9TZW5kU3RyZWFtKCk7Ci0gIEVYUEVD
VF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9wcm94eSgpLAotICAgICAgICAgICAgICBTZXRCaXRyYXRl
KGhlbHBlci5jb25maWcoKS5tYXhfYml0cmF0ZV9icHMsIF8pKTsKLSAgc2VuZF9zdHJlYW0tPk9u
Qml0cmF0ZVVwZGF0ZWQoaGVscGVyLmNvbmZpZygpLm1heF9iaXRyYXRlX2JwcyArIDUwMDAsIDAu
MCwgNTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwMDApOworICBFWFBFQ1Rf
Q0FMTCgqaGVscGVyLmNoYW5uZWxfc2VuZCgpLAorICAgICAgICAgICAgICBPbkJpdHJhdGVBbGxv
Y2F0aW9uKAorICAgICAgICAgICAgICAgICAgRmllbGQoJkJpdHJhdGVBbGxvY2F0aW9uVXBkYXRl
Ojp0YXJnZXRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVxKERhdGFSYXRlOjpi
cHMoaGVscGVyLmNvbmZpZygpLm1heF9iaXRyYXRlX2JwcykpKSkpOworICBCaXRyYXRlQWxsb2Nh
dGlvblVwZGF0ZSB1cGRhdGU7CisgIHVwZGF0ZS50YXJnZXRfYml0cmF0ZSA9IERhdGFSYXRlOjpi
cHMoaGVscGVyLmNvbmZpZygpLm1heF9iaXRyYXRlX2JwcyArIDUwMDApOworICB1cGRhdGUucGFj
a2V0X2xvc3NfcmF0aW8gPSAwOworICB1cGRhdGUucm91bmRfdHJpcF90aW1lID0gVGltZURlbHRh
Ojptcyg1MCk7CisgIHVwZGF0ZS5id2VfcGVyaW9kID0gVGltZURlbHRhOjptcyg2MDAwKTsKKyAg
c2VuZF9zdHJlYW0tPk9uQml0cmF0ZVVwZGF0ZWQodXBkYXRlKTsKIH0KIAogVEVTVChBdWRpb1Nl
bmRTdHJlYW1UZXN0LCBQcm9iaW5nSW50ZXJ2YWxPbkJpdHJhdGVVcGRhdGVkKSB7CiAgIENvbmZp
Z0hlbHBlciBoZWxwZXIoZmFsc2UsIHRydWUpOwogICBhdXRvIHNlbmRfc3RyZWFtID0gaGVscGVy
LkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbSgpOwotICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxf
cHJveHkoKSwgU2V0Qml0cmF0ZShfLCA1MDAwKSk7Ci0gIHNlbmRfc3RyZWFtLT5PbkJpdHJhdGVV
cGRhdGVkKDUwMDAwLCAwLjAsIDUwLCA1MDAwKTsKKworICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNo
YW5uZWxfc2VuZCgpLAorICAgICAgICAgICAgICBPbkJpdHJhdGVBbGxvY2F0aW9uKEZpZWxkKCZC
aXRyYXRlQWxsb2NhdGlvblVwZGF0ZTo6YndlX3BlcmlvZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFcShUaW1lRGVsdGE6Om1zKDUwMDApKSkpKTsKKyAgQml0cmF0
ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlOworICB1cGRhdGUudGFyZ2V0X2JpdHJhdGUgPSBEYXRh
UmF0ZTo6YnBzKGhlbHBlci5jb25maWcoKS5tYXhfYml0cmF0ZV9icHMgKyA1MDAwKTsKKyAgdXBk
YXRlLnBhY2tldF9sb3NzX3JhdGlvID0gMDsKKyAgdXBkYXRlLnJvdW5kX3RyaXBfdGltZSA9IFRp
bWVEZWx0YTo6bXMoNTApOworICB1cGRhdGUuYndlX3BlcmlvZCA9IFRpbWVEZWx0YTo6bXMoNTAw
MCk7CisgIHNlbmRfc3RyZWFtLT5PbkJpdHJhdGVVcGRhdGVkKHVwZGF0ZSk7CiB9CiAKIC8vIFRl
c3QgdGhhdCBBdWRpb1NlbmRTdHJlYW0gZG9lc24ndCByZWNyZWF0ZSB0aGUgZW5jb2RlciB1bm5l
Y2Vzc2FyaWx5LgpAQCAtNDg5LDcgKzQ5Niw3IEBAIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwg
RG9udFJlY3JlYXRlRW5jb2RlcikgewogICAvLyB0byBiZSBjb3JyZWN0LCBpdCdzIGluc3RlYWQg
c2V0LXVwIG1hbnVhbGx5IGhlcmUuIE90aGVyd2lzZSBhIHNpbXBsZSBjaGFuZ2UKICAgLy8gdG8g
Q29uZmlnSGVscGVyIChzYXkgdG8gV2lsbFJlcGVhdGVkbHkpIHdvdWxkIHNpbGVudGx5IG1ha2Ug
dGhpcyB0ZXN0CiAgIC8vIHVzZWxlc3MuCi0gIEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9w
cm94eSgpLCBTZXRFbmNvZGVyRm9yTW9jayhfLCBfKSkKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5j
aGFubmVsX3NlbmQoKSwgU2V0RW5jb2RlckZvck1vY2soXywgXykpCiAgICAgICAuV2lsbE9uY2Uo
UmV0dXJuKHRydWUpKTsKIAogICBoZWxwZXIuY29uZmlnKCkuc2VuZF9jb2RlY19zcGVjID0KQEAg
LTUwNCw0NiArNTExLDQ0IEBAIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgUmVjb25maWd1cmVU
cmFuc3BvcnRDY1Jlc2V0c0ZpcnN0KSB7CiAgIGF1dG8gc2VuZF9zdHJlYW0gPSBoZWxwZXIuQ3Jl
YXRlQXVkaW9TZW5kU3RyZWFtKCk7CiAgIGF1dG8gbmV3X2NvbmZpZyA9IGhlbHBlci5jb25maWco
KTsKICAgQ29uZmlnSGVscGVyOjpBZGRCd2VUb0NvbmZpZygmbmV3X2NvbmZpZyk7Ci0gIEVYUEVD
VF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9wcm94eSgpLAorICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNo
YW5uZWxfc2VuZCgpLAogICAgICAgICAgICAgICBFbmFibGVTZW5kVHJhbnNwb3J0U2VxdWVuY2VO
dW1iZXIoa1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVySWQpKQogICAgICAgLlRpbWVzKDEpOwogICB7
CiAgICAgOjp0ZXN0aW5nOjpJblNlcXVlbmNlIHNlcTsKLSAgICBFWFBFQ1RfQ0FMTCgqaGVscGVy
LmNoYW5uZWxfcHJveHkoKSwgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSkK
KyAgICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfc2VuZCgpLCBSZXNldFNlbmRlckNvbmdl
c3Rpb25Db250cm9sT2JqZWN0cygpKQogICAgICAgICAuVGltZXMoMSk7Ci0gICAgRVhQRUNUX0NB
TEwoKmhlbHBlci5jaGFubmVsX3Byb3h5KCksIFJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRy
b2xPYmplY3RzKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVscGVyLnRyYW5zcG9ydCgpLCBOZShudWxscHRyKSkpCisgICAgRVhQRUNUX0NBTEwoKmhlbHBl
ci5jaGFubmVsX3NlbmQoKSwgUmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBlci50cmFu
c3BvcnQoKSwgTmUobnVsbHB0cikpKQogICAgICAgICAuVGltZXMoMSk7CiAgIH0KICAgc2VuZF9z
dHJlYW0tPlJlY29uZmlndXJlKG5ld19jb25maWcpOwogfQogCi0vLyBDaGVja3MgdGhhdCBBdWRp
b1NlbmRTdHJlYW0gbG9ncyB0aGUgdGltZXMgYXQgd2hpY2ggUlRQIHBhY2tldHMgYXJlIHNlbnQK
LS8vIHRocm91Z2ggaXRzIGludGVyZmFjZS4KLVRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgVXBk
YXRlTGlmZXRpbWUpIHsKKy8vIFZhbGlkYXRlcyB0aGF0IHJlY29uZmlndXJpbmcgdGhlIEF1ZGlv
U2VuZFN0cmVhbSB3aXRoIGEgRnJhbWUgZW5jcnlwdG9yCisvLyBjb3JyZWN0bHkgcmVjb25maWd1
cmVzIG9uIHRoZSBvYmplY3Qgd2l0aG91dCBjcmFzaGluZy4KK1RFU1QoQXVkaW9TZW5kU3RyZWFt
VGVzdCwgUmVjb25maWd1cmVXaXRoRnJhbWVFbmNyeXB0b3IpIHsKICAgQ29uZmlnSGVscGVyIGhl
bHBlcihmYWxzZSwgdHJ1ZSk7CisgIGF1dG8gc2VuZF9zdHJlYW0gPSBoZWxwZXIuQ3JlYXRlQXVk
aW9TZW5kU3RyZWFtKCk7CisgIGF1dG8gbmV3X2NvbmZpZyA9IGhlbHBlci5jb25maWcoKTsKIAot
ICBNb2NrVHJhbnNwb3J0IG1vY2tfdHJhbnNwb3J0OwotICBoZWxwZXIuY29uZmlnKCkuc2VuZF90
cmFuc3BvcnQgPSAmbW9ja190cmFuc3BvcnQ7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVu
Y3J5cHRvckludGVyZmFjZT4gbW9ja19mcmFtZV9lbmNyeXB0b3JfMCgKKyAgICAgIG5ldyBydGM6
OlJlZkNvdW50ZWRPYmplY3Q8TW9ja0ZyYW1lRW5jcnlwdG9yPigpKTsKKyAgbmV3X2NvbmZpZy5m
cmFtZV9lbmNyeXB0b3IgPSBtb2NrX2ZyYW1lX2VuY3J5cHRvcl8wOworICBFWFBFQ1RfQ0FMTCgq
aGVscGVyLmNoYW5uZWxfc2VuZCgpLCBTZXRGcmFtZUVuY3J5cHRvcihOZShudWxscHRyKSkpLlRp
bWVzKDEpOworICBzZW5kX3N0cmVhbS0+UmVjb25maWd1cmUobmV3X2NvbmZpZyk7CiAKLSAgVHJh
bnNwb3J0KiByZWdpc3RlcmVkX3RyYW5zcG9ydDsKLSAgT05fQ0FMTCgqaGVscGVyLmNoYW5uZWxf
cHJveHkoKSwgUmVnaXN0ZXJUcmFuc3BvcnQoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChJbnZv
a2UoWyZyZWdpc3RlcmVkX3RyYW5zcG9ydF0oVHJhbnNwb3J0KiB0cmFuc3BvcnQpIHsKLSAgICAg
ICAgcmVnaXN0ZXJlZF90cmFuc3BvcnQgPSB0cmFuc3BvcnQ7Ci0gICAgICB9KSk7CisgIC8vIE5v
dCB1cGRhdGluZyB0aGUgZnJhbWUgZW5jcnlwdG9yIHNob3VsZG4ndCBmb3JjZSBpdCB0byByZWNv
bmZpZ3VyZS4KKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3NlbmQoKSwgU2V0RnJhbWVF
bmNyeXB0b3IoXykpLlRpbWVzKDApOworICBzZW5kX3N0cmVhbS0+UmVjb25maWd1cmUobmV3X2Nv
bmZpZyk7CiAKLSAgcnRjOjpTY29wZWRGYWtlQ2xvY2sgZmFrZV9jbG9jazsKLSAgY29uc3RleHBy
IGludDY0X3Qga1RpbWVCZXR3ZWVuU2VuZFJ0cENhbGxzTXMgPSAxMDA7Ci0gIHsKLSAgICBhdXRv
IHNlbmRfc3RyZWFtID0gaGVscGVyLkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbSgpOwotICAgIEVYUEVD
VF9DQUxMKG1vY2tfdHJhbnNwb3J0LCBTZW5kUnRwKF8sIF8sIF8pKS5UaW1lcygyKTsKLSAgICBj
b25zdCBQYWNrZXRPcHRpb25zIG9wdGlvbnM7Ci0gICAgcmVnaXN0ZXJlZF90cmFuc3BvcnQtPlNl
bmRSdHAobnVsbHB0ciwgMCwgb3B0aW9ucyk7Ci0gICAgZmFrZV9jbG9jay5BZHZhbmNlVGltZShU
aW1lRGVsdGE6Om1zKGtUaW1lQmV0d2VlblNlbmRSdHBDYWxsc01zKSk7Ci0gICAgcmVnaXN0ZXJl
ZF90cmFuc3BvcnQtPlNlbmRSdHAobnVsbHB0ciwgMCwgb3B0aW9ucyk7Ci0gIH0KLSAgRVhQRUNU
X1RSVUUoIWhlbHBlci5hY3RpdmVfbGlmZXRpbWUoKS0+RW1wdHkoKSk7Ci0gIEVYUEVDVF9FUSho
ZWxwZXIuYWN0aXZlX2xpZmV0aW1lKCktPkxlbmd0aCgpLCBrVGltZUJldHdlZW5TZW5kUnRwQ2Fs
bHNNcyk7CisgIC8vIFVwZGF0aW5nIGZyYW1lIGVuY3J5cHRvciB0byBhIG5ldyBvYmplY3Qgc2hv
dWxkIGZvcmNlIGEgY2FsbCB0byB0aGUgcHJveHkuCisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFt
ZUVuY3J5cHRvckludGVyZmFjZT4gbW9ja19mcmFtZV9lbmNyeXB0b3JfMSgKKyAgICAgIG5ldyBy
dGM6OlJlZkNvdW50ZWRPYmplY3Q8TW9ja0ZyYW1lRW5jcnlwdG9yPigpKTsKKyAgbmV3X2NvbmZp
Zy5mcmFtZV9lbmNyeXB0b3IgPSBtb2NrX2ZyYW1lX2VuY3J5cHRvcl8xOworICBuZXdfY29uZmln
LmNyeXB0b19vcHRpb25zLnNmcmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24gPSB0cnVlOwor
ICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfc2VuZCgpLCBTZXRGcmFtZUVuY3J5cHRvcihO
ZShudWxscHRyKSkpLlRpbWVzKDEpOworICBzZW5kX3N0cmVhbS0+UmVjb25maWd1cmUobmV3X2Nv
bmZpZyk7CiB9CiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVk
aW8vYXVkaW9fdHJhbnNwb3J0X2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb190cmFuc3BvcnRfaW1wbC5jYwppbmRleCA5NGVmNmNi
NjhhNzc1ZDU3ZDdiMzhmM2RiMzk5N2FjNTk5MDJjYTIwLi41Mzk0NTZlMmY0OWFlNmY1Y2NlMGEy
ZWVmN2E1MmQzNzliYTcyOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb190cmFuc3BvcnRfaW1wbC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb190cmFuc3Bv
cnRfaW1wbC5jYwpAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgImF1ZGlvL3JlbWl4X3Jlc2Ft
cGxlLmgiCiAjaW5jbHVkZSAiYXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiY2FsbC9hdWRpb19zZW5kX3N0cmVhbS5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5jYwppbmRleCBlOWY3NTAz
NDc0ZjVmNTQzZmNlNGJkMWQ0N2NkNTQwNjRhYWMxOWU2Li40ODMxNDdmYTllZWQwMGU0ZTYwZmIx
YjRiZGIwNTMxNTYwZjkxMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3JlY2VpdmUuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlLmNj
CkBAIC0xOCwxNCArMTgsMjAgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhdWRpby9hdWRpb19sZXZlbC5oIgogI2luY2x1
ZGUgImF1ZGlvL2NoYW5uZWxfc2VuZC5oIgogI2luY2x1ZGUgImF1ZGlvL3V0aWxpdHkvYXVkaW9f
ZnJhbWVfb3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVu
dHMvcnRjX2V2ZW50X2F1ZGlvX3BsYXlvdXQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvcnRjX2V2ZW50X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1
ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGluZ19t
b2R1bGUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2Rl
dmljZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcmVjZWl2ZV9zdGF0aXN0aWNzLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3Iu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3AuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9jb250cmlidXRpbmdfc291cmNlcy5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3V0aWxpdHkvaW5jbHVkZS9wcm9jZXNzX3RocmVhZC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpAQCAtMzMsNiArMzksOCBAQAogI2luY2x1ZGUgInJ0
Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmlj
cy9zYWZlX21pbm1heC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3JhY2VfY2hlY2tlci5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGlt
ZXV0aWxzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgpA
QCAtNTAsMTMgKzU4LDIyOCBAQCBjb25zdGV4cHIgaW50NjRfdCBrTWluUmV0cmFuc21pc3Npb25X
aW5kb3dNcyA9IDMwOwogY29uc3RleHByIGludCBrVm9pY2VFbmdpbmVNaW5NaW5QbGF5b3V0RGVs
YXlNcyA9IDA7CiBjb25zdGV4cHIgaW50IGtWb2ljZUVuZ2luZU1heE1pblBsYXlvdXREZWxheU1z
ID0gMTAwMDA7CiAKLX0gIC8vIG5hbWVzcGFjZQord2VicnRjOjpGcmFtZVR5cGUgV2VicnRjRnJh
bWVUeXBlRm9yTWVkaWFUcmFuc3BvcnRGcmFtZVR5cGUoCisgICAgTWVkaWFUcmFuc3BvcnRFbmNv
ZGVkQXVkaW9GcmFtZTo6RnJhbWVUeXBlIGZyYW1lX3R5cGUpIHsKKyAgc3dpdGNoIChmcmFtZV90
eXBlKSB7CisgICAgY2FzZSBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lOjpGcmFtZVR5
cGU6OmtTcGVlY2g6CisgICAgICByZXR1cm4ga0F1ZGlvRnJhbWVTcGVlY2g7CisgICAgICBicmVh
azsKKworICAgIGNhc2UgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6RnJhbWVUeXBl
OjoKKyAgICAgICAga0Rpc2NvdW50aW51b3VzVHJhbnNtaXNzaW9uOgorICAgICAgcmV0dXJuIGtB
dWRpb0ZyYW1lQ047CisgICAgICBicmVhazsKKyAgfQorfQorCitXZWJSdGNSVFBIZWFkZXIgQ3Jl
YXRlV2VicnRjUlRQSGVhZGVyRm9yTWVkaWFUcmFuc3BvcnRGcmFtZSgKKyAgICBjb25zdCBNZWRp
YVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lJiBmcmFtZSwKKyAgICB1aW50NjRfdCBjaGFubmVs
X2lkKSB7CisgIHdlYnJ0Yzo6V2ViUnRjUlRQSGVhZGVyIHdlYnJ0Y19oZWFkZXIgPSB7fTsKKyAg
d2VicnRjX2hlYWRlci5oZWFkZXIucGF5bG9hZFR5cGUgPSBmcmFtZS5wYXlsb2FkX3R5cGUoKTsK
KyAgd2VicnRjX2hlYWRlci5oZWFkZXIucGF5bG9hZF90eXBlX2ZyZXF1ZW5jeSA9IGZyYW1lLnNh
bXBsaW5nX3JhdGVfaHooKTsKKyAgd2VicnRjX2hlYWRlci5oZWFkZXIudGltZXN0YW1wID0gZnJh
bWUuc3RhcnRpbmdfc2FtcGxlX2luZGV4KCk7CisgIHdlYnJ0Y19oZWFkZXIuaGVhZGVyLnNlcXVl
bmNlTnVtYmVyID0gZnJhbWUuc2VxdWVuY2VfbnVtYmVyKCk7CisKKyAgd2VicnRjX2hlYWRlci5m
cmFtZVR5cGUgPQorICAgICAgV2VicnRjRnJhbWVUeXBlRm9yTWVkaWFUcmFuc3BvcnRGcmFtZVR5
cGUoZnJhbWUuZnJhbWVfdHlwZSgpKTsKKworICB3ZWJydGNfaGVhZGVyLmhlYWRlci5zc3JjID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNoYW5uZWxfaWQpOworCisgIC8vIFRoZSByZXN0IGFyZSBp
bml0aWFsaXplZCBieSB0aGUgUlRQSGVhZGVyIGNvbnN0cnVjdG9yLgorICByZXR1cm4gd2VicnRj
X2hlYWRlcjsKK30KKworY2xhc3MgQ2hhbm5lbFJlY2VpdmUgOiBwdWJsaWMgQ2hhbm5lbFJlY2Vp
dmVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBNZWRpYVRyYW5zcG9y
dEF1ZGlvU2lua0ludGVyZmFjZSB7CisgcHVibGljOgorICAvLyBVc2VkIGZvciByZWNlaXZlIHN0
cmVhbXMuCisgIENoYW5uZWxSZWNlaXZlKFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3Ro
cmVhZCwKKyAgICAgICAgICAgICAgICAgQXVkaW9EZXZpY2VNb2R1bGUqIGF1ZGlvX2RldmljZV9t
b2R1bGUsCisgICAgICAgICAgICAgICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90
cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgIFRyYW5zcG9ydCogcnRjcF9zZW5kX3RyYW5zcG9y
dCwKKyAgICAgICAgICAgICAgICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9sb2csCisgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IHJlbW90ZV9zc3JjLAorICAgICAgICAgICAgICAgICBzaXplX3Qg
aml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cywKKyAgICAgICAgICAgICAgICAgYm9vbCBqaXR0ZXJf
YnVmZmVyX2Zhc3RfcGxheW91dCwKKyAgICAgICAgICAgICAgICAgaW50IGppdHRlcl9idWZmZXJf
bWluX2RlbGF5X21zLAorICAgICAgICAgICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9E
ZWNvZGVyRmFjdG9yeT4gZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgICAgICAgICAgICBhYnNsOjpv
cHRpb25hbDxBdWRpb0NvZGVjUGFpcklkPiBjb2RlY19wYWlyX2lkLAorICAgICAgICAgICAgICAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5
cHRvciwKKyAgICAgICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlw
dG9fb3B0aW9ucyk7CisgIH5DaGFubmVsUmVjZWl2ZSgpIG92ZXJyaWRlOworCisgIHZvaWQgU2V0
U2luayhBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmspIG92ZXJyaWRlOworCisgIHZvaWQgU2V0UmVj
ZWl2ZUNvZGVjcyhjb25zdCBzdGQ6Om1hcDxpbnQsIFNkcEF1ZGlvRm9ybWF0PiYgY29kZWNzKSBv
dmVycmlkZTsKKworICAvLyBBUEkgbWV0aG9kcworCisgIHZvaWQgU3RhcnRQbGF5b3V0KCkgb3Zl
cnJpZGU7CisgIHZvaWQgU3RvcFBsYXlvdXQoKSBvdmVycmlkZTsKKworICAvLyBDb2RlY3MKKyAg
Ym9vbCBHZXRSZWNDb2RlYyhDb2RlY0luc3QqIGNvZGVjKSBjb25zdCBvdmVycmlkZTsKKworICBi
b29sIFJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KSBvdmVycmlkZTsKKworICAvLyBSdHBQYWNrZXRTaW5rSW50ZXJmYWNlLgorICB2b2lkIE9uUnRw
UGFja2V0KGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIG92ZXJyaWRlOworCisgIC8v
IE11dGluZywgVm9sdW1lIGFuZCBMZXZlbC4KKyAgdm9pZCBTZXRDaGFubmVsT3V0cHV0Vm9sdW1l
U2NhbGluZyhmbG9hdCBzY2FsaW5nKSBvdmVycmlkZTsKKyAgaW50IEdldFNwZWVjaE91dHB1dExl
dmVsRnVsbFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgIC8vIFNlZSBkZXNjcmlwdGlvbiBvZiAi
dG90YWxBdWRpb0VuZXJneSIgaW4gdGhlIFdlYlJUQyBzdGF0cyBzcGVjOgorICAvLyBodHRwczov
L3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNkb20tcnRjbWVkaWFzdHJlYW10cmFja3N0YXRz
LXRvdGFsYXVkaW9lbmVyZ3kKKyAgZG91YmxlIEdldFRvdGFsT3V0cHV0RW5lcmd5KCkgY29uc3Qg
b3ZlcnJpZGU7CisgIGRvdWJsZSBHZXRUb3RhbE91dHB1dER1cmF0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKKyAgLy8gU3RhdHMuCisgIE5ldHdvcmtTdGF0aXN0aWNzIEdldE5ldHdvcmtTdGF0aXN0
aWNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIEF1ZGlvRGVjb2RpbmdDYWxsU3RhdHMgR2V0RGVjb2Rp
bmdDYWxsU3RhdGlzdGljcygpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIEF1ZGlvK1ZpZGVvIFN5
bmMuCisgIHVpbnQzMl90IEdldERlbGF5RXN0aW1hdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgdm9p
ZCBTZXRNaW5pbXVtUGxheW91dERlbGF5KGludCBkZWxheU1zKSBvdmVycmlkZTsKKyAgdWludDMy
X3QgR2V0UGxheW91dFRpbWVzdGFtcCgpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIFByb2R1Y2Vz
IHRoZSB0cmFuc3BvcnQtcmVsYXRlZCB0aW1lc3RhbXBzOyBjdXJyZW50X2RlbGF5X21zIGlzIGxl
ZnQgdW5zZXQuCisgIGFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBHZXRTeW5jSW5mbygp
IGNvbnN0IG92ZXJyaWRlOworCisgIC8vIFJUUCtSVENQCisgIHZvaWQgU2V0TG9jYWxTU1JDKHVu
c2lnbmVkIGludCBzc3JjKSBvdmVycmlkZTsKKworICB2b2lkIFJlZ2lzdGVyUmVjZWl2ZXJDb25n
ZXN0aW9uQ29udHJvbE9iamVjdHMoCisgICAgICBQYWNrZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXIp
IG92ZXJyaWRlOworICB2b2lkIFJlc2V0UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMo
KSBvdmVycmlkZTsKKworICBDYWxsUmVjZWl2ZVN0YXRpc3RpY3MgR2V0UlRDUFN0YXRpc3RpY3Mo
KSBjb25zdCBvdmVycmlkZTsKKyAgdm9pZCBTZXROQUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQg
bWF4TnVtYmVyT2ZQYWNrZXRzKSBvdmVycmlkZTsKKworICBBdWRpb01peGVyOjpTb3VyY2U6OkF1
ZGlvRnJhbWVJbmZvIEdldEF1ZGlvRnJhbWVXaXRoSW5mbygKKyAgICAgIGludCBzYW1wbGVfcmF0
ZV9oeiwKKyAgICAgIEF1ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKSBvdmVycmlkZTsKKworICBpbnQg
UHJlZmVycmVkU2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIEFzc29jaWF0ZSB0
byBhIHNlbmQgY2hhbm5lbC4KKyAgLy8gVXNlZCBmb3Igb2J0YWluaW5nIFJUVCBmb3IgYSByZWNl
aXZlLW9ubHkgY2hhbm5lbC4KKyAgdm9pZCBTZXRBc3NvY2lhdGVkU2VuZENoYW5uZWwoY29uc3Qg
Q2hhbm5lbFNlbmRJbnRlcmZhY2UqIGNoYW5uZWwpIG92ZXJyaWRlOworCisgIHN0ZDo6dmVjdG9y
PFJ0cFNvdXJjZT4gR2V0U291cmNlcygpIGNvbnN0IG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAg
Ym9vbCBSZWNlaXZlUGFja2V0KGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwKKyAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBwYWNrZXRfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UlRQSGVhZGVyJiBoZWFkZXIpOworICBpbnQgUmVzZW5kUGFja2V0cyhjb25zdCB1aW50MTZfdCog
c2VxdWVuY2VfbnVtYmVycywgaW50IGxlbmd0aCk7CisgIHZvaWQgVXBkYXRlUGxheW91dFRpbWVz
dGFtcChib29sIHJ0Y3ApOworCisgIGludCBHZXRSdHBUaW1lc3RhbXBSYXRlSHooKSBjb25zdDsK
KyAgaW50NjRfdCBHZXRSVFQoKSBjb25zdDsKKworICAvLyBNZWRpYVRyYW5zcG9ydEF1ZGlvU2lu
a0ludGVyZmFjZSBvdmVycmlkZTsKKyAgdm9pZCBPbkRhdGEodWludDY0X3QgY2hhbm5lbF9pZCwK
KyAgICAgICAgICAgICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSBmcmFtZSkgb3Zl
cnJpZGU7CisKKyAgaW50MzJfdCBPblJlY2VpdmVkUGF5bG9hZERhdGEoY29uc3QgdWludDhfdCog
cGF5bG9hZERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXls
b2FkU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUnRjUlRQ
SGVhZGVyKiBydHBIZWFkZXIpOworCisgIGJvb2wgUGxheWluZygpIGNvbnN0IHsKKyAgICBydGM6
OkNyaXRTY29wZSBsb2NrKCZwbGF5aW5nX2xvY2tfKTsKKyAgICByZXR1cm4gcGxheWluZ187Cisg
IH0KKworICAvLyBUaHJlYWQgY2hlY2tlcnMgZG9jdW1lbnQgYW5kIGxvY2sgdXNhZ2Ugb2Ygc29t
ZSBtZXRob2RzIHRvIHNwZWNpZmljIHRocmVhZHMKKyAgLy8gd2Uga25vdyBhYm91dC4gVGhlIGdv
YWwgaXMgdG8gZXZlbnR1YWxseSBzcGxpdCB1cCB2b2U6OkNoYW5uZWxSZWNlaXZlIGludG8KKyAg
Ly8gcGFydHMgd2l0aCBzaW5nbGUtdGhyZWFkZWQgc2VtYW50aWNzLCBhbmQgdGhlcmVieSByZWR1
Y2UgdGhlIG5lZWQgZm9yCisgIC8vIGxvY2tzLgorICBydGM6OlRocmVhZENoZWNrZXIgd29ya2Vy
X3RocmVhZF9jaGVja2VyXzsKKyAgcnRjOjpUaHJlYWRDaGVja2VyIG1vZHVsZV9wcm9jZXNzX3Ro
cmVhZF9jaGVja2VyXzsKKyAgLy8gTWV0aG9kcyBhY2Nlc3NlZCBmcm9tIGF1ZGlvIGFuZCB2aWRl
byB0aHJlYWRzIGFyZSBjaGVja2VkIGZvciBzZXF1ZW50aWFsLQorICAvLyBvbmx5IGFjY2Vzcy4g
V2UgZG9uJ3QgbmVjZXNzYXJpbHkgb3duIGFuZCBjb250cm9sIHRoZXNlIHRocmVhZHMsIHNvIHRo
cmVhZAorICAvLyBjaGVja2VycyBjYW5ub3QgYmUgdXNlZC4gRS5nLiBDaHJvbWl1bSBtYXkgdHJh
bnNmZXIgIm93bmVyc2hpcCIgZnJvbSBvbmUKKyAgLy8gYXVkaW8gdGhyZWFkIHRvIGFub3RoZXIs
IGJ1dCBhY2Nlc3MgaXMgc3RpbGwgc2VxdWVudGlhbC4KKyAgcnRjOjpSYWNlQ2hlY2tlciBhdWRp
b190aHJlYWRfcmFjZV9jaGVja2VyXzsKKyAgcnRjOjpSYWNlQ2hlY2tlciB2aWRlb19jYXB0dXJl
X3RocmVhZF9yYWNlX2NoZWNrZXJfOworICBydGM6OkNyaXRpY2FsU2VjdGlvbiBfY2FsbGJhY2tD
cml0U2VjdDsKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gdm9sdW1lX3NldHRpbmdzX2NyaXRzZWN0
XzsKKworICBydGM6OkNyaXRpY2FsU2VjdGlvbiBwbGF5aW5nX2xvY2tfOworICBib29sIHBsYXlp
bmdfIFJUQ19HVUFSREVEX0JZKCZwbGF5aW5nX2xvY2tfKSA9IGZhbHNlOworCisgIFJ0Y0V2ZW50
TG9nKiBjb25zdCBldmVudF9sb2dfOworCisgIC8vIEluZGV4ZWQgYnkgcGF5bG9hZCB0eXBlLgor
ICBzdGQ6Om1hcDx1aW50OF90LCBpbnQ+IHBheWxvYWRfdHlwZV9mcmVxdWVuY2llc187CisKKyAg
c3RkOjp1bmlxdWVfcHRyPFJlY2VpdmVTdGF0aXN0aWNzPiBydHBfcmVjZWl2ZV9zdGF0aXN0aWNz
XzsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0cFJ0Y3A+IF9ydHBSdGNwTW9kdWxlOworICBjb25zdCB1
aW50MzJfdCByZW1vdGVfc3NyY187CisKKyAgLy8gSW5mbyBmb3IgR2V0U291cmNlcyBhbmQgR2V0
U3luY0luZm8gaXMgdXBkYXRlZCBvbiBuZXR3b3JrIG9yIHdvcmtlciB0aHJlYWQsCisgIC8vIHF1
ZXJpZWQgb24gdGhlIHdvcmtlciB0aHJlYWQuCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHJ0cF9z
b3VyY2VzX2xvY2tfOworICBDb250cmlidXRpbmdTb3VyY2VzIGNvbnRyaWJ1dGluZ19zb3VyY2Vz
XyBSVENfR1VBUkRFRF9CWSgmcnRwX3NvdXJjZXNfbG9ja18pOworICBhYnNsOjpvcHRpb25hbDx1
aW50MzJfdD4gbGFzdF9yZWNlaXZlZF9ydHBfdGltZXN0YW1wXworICAgICAgUlRDX0dVQVJERURf
QlkoJnJ0cF9zb3VyY2VzX2xvY2tfKTsKKyAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9y
ZWNlaXZlZF9ydHBfc3lzdGVtX3RpbWVfbXNfCisgICAgICBSVENfR1VBUkRFRF9CWSgmcnRwX3Nv
dXJjZXNfbG9ja18pOworICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBsYXN0X3JlY2VpdmVkX3J0
cF9hdWRpb19sZXZlbF8KKyAgICAgIFJUQ19HVUFSREVEX0JZKCZydHBfc291cmNlc19sb2NrXyk7
CisKKyAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQ29kaW5nTW9kdWxlPiBhdWRpb19jb2RpbmdfOwor
ICBBdWRpb1NpbmtJbnRlcmZhY2UqIGF1ZGlvX3NpbmtfID0gbnVsbHB0cjsKKyAgQXVkaW9MZXZl
bCBfb3V0cHV0QXVkaW9MZXZlbDsKKworICBSZW1vdGVOdHBUaW1lRXN0aW1hdG9yIG50cF9lc3Rp
bWF0b3JfIFJUQ19HVUFSREVEX0JZKHRzX3N0YXRzX2xvY2tfKTsKKworICAvLyBUaW1lc3RhbXAg
b2YgdGhlIGF1ZGlvIHB1bGxlZCBmcm9tIE5ldEVxLgorICBhYnNsOjpvcHRpb25hbDx1aW50MzJf
dD4gaml0dGVyX2J1ZmZlcl9wbGF5b3V0X3RpbWVzdGFtcF87CisKKyAgcnRjOjpDcml0aWNhbFNl
Y3Rpb24gdmlkZW9fc3luY19sb2NrXzsKKyAgdWludDMyX3QgcGxheW91dF90aW1lc3RhbXBfcnRw
XyBSVENfR1VBUkRFRF9CWSh2aWRlb19zeW5jX2xvY2tfKTsKKyAgdWludDMyX3QgcGxheW91dF9k
ZWxheV9tc18gUlRDX0dVQVJERURfQlkodmlkZW9fc3luY19sb2NrXyk7CisKKyAgcnRjOjpDcml0
aWNhbFNlY3Rpb24gdHNfc3RhdHNfbG9ja187CisKKyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGlt
ZXN0YW1wV3JhcEFyb3VuZEhhbmRsZXI+IHJ0cF90c193cmFwYXJvdW5kX2hhbmRsZXJfOworICAv
LyBUaGUgcnRwIHRpbWVzdGFtcCBvZiB0aGUgZmlyc3QgcGxheWVkIG91dCBhdWRpbyBmcmFtZS4K
KyAgaW50NjRfdCBjYXB0dXJlX3N0YXJ0X3J0cF90aW1lX3N0YW1wXzsKKyAgLy8gVGhlIGNhcHR1
cmUgbnRwIHRpbWUgKGluIGxvY2FsIHRpbWViYXNlKSBvZiB0aGUgZmlyc3QgcGxheWVkIG91dCBh
dWRpbworICAvLyBmcmFtZS4KKyAgaW50NjRfdCBjYXB0dXJlX3N0YXJ0X250cF90aW1lX21zXyBS
VENfR1VBUkRFRF9CWSh0c19zdGF0c19sb2NrXyk7CisKKyAgLy8gdXNlcworICBQcm9jZXNzVGhy
ZWFkKiBfbW9kdWxlUHJvY2Vzc1RocmVhZFB0cjsKKyAgQXVkaW9EZXZpY2VNb2R1bGUqIF9hdWRp
b0RldmljZU1vZHVsZVB0cjsKKyAgZmxvYXQgX291dHB1dEdhaW4gUlRDX0dVQVJERURfQlkodm9s
dW1lX3NldHRpbmdzX2NyaXRzZWN0Xyk7CisKKyAgLy8gQW4gYXNzb2NpYXRlZCBzZW5kIGNoYW5u
ZWwuCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGFzc29jX3NlbmRfY2hhbm5lbF9sb2NrXzsKKyAg
Y29uc3QgQ2hhbm5lbFNlbmRJbnRlcmZhY2UqIGFzc29jaWF0ZWRfc2VuZF9jaGFubmVsXworICAg
ICAgUlRDX0dVQVJERURfQlkoYXNzb2Nfc2VuZF9jaGFubmVsX2xvY2tfKTsKKworICBQYWNrZXRS
b3V0ZXIqIHBhY2tldF9yb3V0ZXJfID0gbnVsbHB0cjsKKworICBydGM6OlRocmVhZENoZWNrZXIg
Y29uc3RydWN0aW9uX3RocmVhZF87CisKKyAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIGNvbnN0
IG1lZGlhX3RyYW5zcG9ydF87CisKKyAgLy8gRTJFRSBBdWRpbyBGcmFtZSBEZWNyeXB0aW9uCisg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlw
dG9yXzsKKyAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKK307CiAKIGlu
dDMyX3QgQ2hhbm5lbFJlY2VpdmU6Ok9uUmVjZWl2ZWRQYXlsb2FkRGF0YSgKICAgICBjb25zdCB1
aW50OF90KiBwYXlsb2FkRGF0YSwKICAgICBzaXplX3QgcGF5bG9hZFNpemUsCiAgICAgY29uc3Qg
V2ViUnRjUlRQSGVhZGVyKiBydHBIZWFkZXIpIHsKLSAgaWYgKCFjaGFubmVsX3N0YXRlXy5HZXQo
KS5wbGF5aW5nKSB7CisgIC8vIFdlIHNob3VsZCBub3QgYmUgcmVjZWl2aW5nIGFueSBSVFAgcGFj
a2V0cyBpZiBtZWRpYV90cmFuc3BvcnQgaXMgc2V0LgorICBSVENfQ0hFQ0soIW1lZGlhX3RyYW5z
cG9ydF8pOworCisgIGlmICghUGxheWluZygpKSB7CiAgICAgLy8gQXZvaWQgaW5zZXJ0aW5nIGlu
dG8gTmV0RVEgd2hlbiB3ZSBhcmUgbm90IHBsYXlpbmcuIENvdW50IHRoZQogICAgIC8vIHBhY2tl
dCBhcyBkaXNjYXJkZWQuCiAgICAgcmV0dXJuIDA7CkBAIC04MiwxNCArMzA1LDM1IEBAIGludDMy
X3QgQ2hhbm5lbFJlY2VpdmU6Ok9uUmVjZWl2ZWRQYXlsb2FkRGF0YSgKICAgcmV0dXJuIDA7CiB9
CiAKKy8vIE1lZGlhVHJhbnNwb3J0QXVkaW9TaW5rSW50ZXJmYWNlIG92ZXJyaWRlLgordm9pZCBD
aGFubmVsUmVjZWl2ZTo6T25EYXRhKHVpbnQ2NF90IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSBmcmFtZSkgewor
ICBSVENfQ0hFQ0sobWVkaWFfdHJhbnNwb3J0Xyk7CisKKyAgaWYgKCFQbGF5aW5nKCkpIHsKKyAg
ICAvLyBBdm9pZCBpbnNlcnRpbmcgaW50byBOZXRFUSB3aGVuIHdlIGFyZSBub3QgcGxheWluZy4g
Q291bnQgdGhlCisgICAgLy8gcGFja2V0IGFzIGRpc2NhcmRlZC4KKyAgICByZXR1cm47CisgIH0K
KworICAvLyBTZW5kIGVuY29kZWQgYXVkaW8gZnJhbWUgdG8gRGVjb2RlciAvIE5ldEVxLgorICBp
ZiAoYXVkaW9fY29kaW5nXy0+SW5jb21pbmdQYWNrZXQoCisgICAgICAgICAgZnJhbWUuZW5jb2Rl
ZF9kYXRhKCkuZGF0YSgpLCBmcmFtZS5lbmNvZGVkX2RhdGEoKS5zaXplKCksCisgICAgICAgICAg
Q3JlYXRlV2VicnRjUlRQSGVhZGVyRm9yTWVkaWFUcmFuc3BvcnRGcmFtZShmcmFtZSwgY2hhbm5l
bF9pZCkpICE9CisgICAgICAwKSB7CisgICAgUlRDX0RMT0coTFNfRVJST1IpIDw8ICJDaGFubmVs
UmVjZWl2ZTo6T25EYXRhOiB1bmFibGUgdG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi
cHVzaCBkYXRhIHRvIHRoZSBBQ00iOworICB9Cit9CisKIEF1ZGlvTWl4ZXI6OlNvdXJjZTo6QXVk
aW9GcmFtZUluZm8gQ2hhbm5lbFJlY2VpdmU6OkdldEF1ZGlvRnJhbWVXaXRoSW5mbygKICAgICBp
bnQgc2FtcGxlX3JhdGVfaHosCiAgICAgQXVkaW9GcmFtZSogYXVkaW9fZnJhbWUpIHsKKyAgUlRD
X0RDSEVDS19SVU5TX1NFUklBTElaRUQoJmF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfKTsKICAg
YXVkaW9fZnJhbWUtPnNhbXBsZV9yYXRlX2h6XyA9IHNhbXBsZV9yYXRlX2h6OwogCi0gIHVuc2ln
bmVkIGludCBzc3JjOwotICBSVENfQ0hFQ0tfRVEoR2V0UmVtb3RlU1NSQyhzc3JjKSwgMCk7Ci0g
IGV2ZW50X2xvZ18tPkxvZyhhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudEF1ZGlvUGxheW91dD4o
c3NyYykpOworICBldmVudF9sb2dfLT5Mb2coYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRp
b1BsYXlvdXQ+KHJlbW90ZV9zc3JjXykpOworCiAgIC8vIEdldCAxMG1zIHJhdyBQQ00gZGF0YSBm
cm9tIHRoZSBBQ00gKG1peGVyIGxpbWl0cyBvdXRwdXQgZnJlcXVlbmN5KQogICBib29sIG11dGVk
OwogICBpZiAoYXVkaW9fY29kaW5nXy0+UGxheW91dERhdGExME1zKGF1ZGlvX2ZyYW1lLT5zYW1w
bGVfcmF0ZV9oel8sIGF1ZGlvX2ZyYW1lLApAQCAtMTkxLDYgKzQzNSw3IEBAIEF1ZGlvTWl4ZXI6
OlNvdXJjZTo6QXVkaW9GcmFtZUluZm8gQ2hhbm5lbFJlY2VpdmU6OkdldEF1ZGlvRnJhbWVXaXRo
SW5mbygKIH0KIAogaW50IENoYW5uZWxSZWNlaXZlOjpQcmVmZXJyZWRTYW1wbGVSYXRlKCkgY29u
c3QgeworICBSVENfRENIRUNLX1JVTlNfU0VSSUFMSVpFRCgmYXVkaW9fdGhyZWFkX3JhY2VfY2hl
Y2tlcl8pOwogICAvLyBSZXR1cm4gdGhlIGJpZ2dlciBvZiBwbGF5b3V0IGFuZCByZWNlaXZlIGZy
ZXF1ZW5jeSBpbiB0aGUgQUNNLgogICByZXR1cm4gc3RkOjptYXgoYXVkaW9fY29kaW5nXy0+UmVj
ZWl2ZUZyZXF1ZW5jeSgpLAogICAgICAgICAgICAgICAgICAgYXVkaW9fY29kaW5nXy0+UGxheW91
dEZyZXF1ZW5jeSgpKTsKQEAgLTE5OSwxNCArNDQ0LDE3IEBAIGludCBDaGFubmVsUmVjZWl2ZTo6
UHJlZmVycmVkU2FtcGxlUmF0ZSgpIGNvbnN0IHsKIENoYW5uZWxSZWNlaXZlOjpDaGFubmVsUmVj
ZWl2ZSgKICAgICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCiAgICAgQXVk
aW9EZXZpY2VNb2R1bGUqIGF1ZGlvX2RldmljZV9tb2R1bGUsCisgICAgTWVkaWFUcmFuc3BvcnRJ
bnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCwKICAgICBUcmFuc3BvcnQqIHJ0Y3Bfc2VuZF90cmFu
c3BvcnQsCiAgICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9sb2csCiAgICAgdWludDMyX3QgcmVt
b3RlX3NzcmMsCiAgICAgc2l6ZV90IGppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMsCiAgICAgYm9v
bCBqaXR0ZXJfYnVmZmVyX2Zhc3RfcGxheW91dCwKKyAgICBpbnQgaml0dGVyX2J1ZmZlcl9taW5f
ZGVsYXlfbXMsCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGRl
Y29kZXJfZmFjdG9yeSwKICAgICBhYnNsOjpvcHRpb25hbDxBdWRpb0NvZGVjUGFpcklkPiBjb2Rl
Y19wYWlyX2lkLAotICAgIEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9kZWNyeXB0b3Ip
CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9k
ZWNyeXB0b3IsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cykKICAgICA6IGV2ZW50X2xvZ18ocnRjX2V2ZW50X2xvZyksCiAgICAgICBydHBfcmVjZWl2ZV9z
dGF0aXN0aWNzXygKICAgICAgICAgICBSZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRlKENsb2NrOjpH
ZXRSZWFsVGltZUNsb2NrKCkpKSwKQEAgLTIyMiw3ICs0NzAsMTIgQEAgQ2hhbm5lbFJlY2VpdmU6
OkNoYW5uZWxSZWNlaXZlKAogICAgICAgX2F1ZGlvRGV2aWNlTW9kdWxlUHRyKGF1ZGlvX2Rldmlj
ZV9tb2R1bGUpLAogICAgICAgX291dHB1dEdhaW4oMS4wZiksCiAgICAgICBhc3NvY2lhdGVkX3Nl
bmRfY2hhbm5lbF8obnVsbHB0ciksCi0gICAgICBmcmFtZV9kZWNyeXB0b3JfKGZyYW1lX2RlY3J5
cHRvcikgeworICAgICAgbWVkaWFfdHJhbnNwb3J0XyhtZWRpYV90cmFuc3BvcnQpLAorICAgICAg
ZnJhbWVfZGVjcnlwdG9yXyhmcmFtZV9kZWNyeXB0b3IpLAorICAgICAgY3J5cHRvX29wdGlvbnNf
KGNyeXB0b19vcHRpb25zKSB7CisgIC8vIFRPRE8obmlzc2UpOiBVc2UgX21vZHVsZVByb2Nlc3NU
aHJlYWRQdHIgaW5zdGVhZD8KKyAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkRldGFj
aEZyb21UaHJlYWQoKTsKKwogICBSVENfRENIRUNLKG1vZHVsZV9wcm9jZXNzX3RocmVhZCk7CiAg
IFJUQ19EQ0hFQ0soYXVkaW9fZGV2aWNlX21vZHVsZSk7CiAgIEF1ZGlvQ29kaW5nTW9kdWxlOjpD
b25maWcgYWNtX2NvbmZpZzsKQEAgLTIzMCw2ICs0ODMsNyBAQCBDaGFubmVsUmVjZWl2ZTo6Q2hh
bm5lbFJlY2VpdmUoCiAgIGFjbV9jb25maWcubmV0ZXFfY29uZmlnLmNvZGVjX3BhaXJfaWQgPSBj
b2RlY19wYWlyX2lkOwogICBhY21fY29uZmlnLm5ldGVxX2NvbmZpZy5tYXhfcGFja2V0c19pbl9i
dWZmZXIgPSBqaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzOwogICBhY21fY29uZmlnLm5ldGVxX2Nv
bmZpZy5lbmFibGVfZmFzdF9hY2NlbGVyYXRlID0gaml0dGVyX2J1ZmZlcl9mYXN0X3BsYXlvdXQ7
CisgIGFjbV9jb25maWcubmV0ZXFfY29uZmlnLm1pbl9kZWxheV9tcyA9IGppdHRlcl9idWZmZXJf
bWluX2RlbGF5X21zOwogICBhY21fY29uZmlnLm5ldGVxX2NvbmZpZy5lbmFibGVfbXV0ZWRfc3Rh
dGUgPSB0cnVlOwogICBhdWRpb19jb2RpbmdfLnJlc2V0KEF1ZGlvQ29kaW5nTW9kdWxlOjpDcmVh
dGUoYWNtX2NvbmZpZykpOwogCkBAIC0yMzgsOSArNDkyLDcgQEAgQ2hhbm5lbFJlY2VpdmU6OkNo
YW5uZWxSZWNlaXZlKAogICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXy0+RW5hYmxlUmV0cmFuc21p
dERldGVjdGlvbihyZW1vdGVfc3NyY18sIHRydWUpOwogICBSdHBSdGNwOjpDb25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb247CiAgIGNvbmZpZ3VyYXRpb24uYXVkaW8gPSB0cnVlOwotICAvLyBUT0RP
KG5pc3NlKTogQWxzbyBzZXQgcmVjZWl2ZXJfb25seSA9IHRydWUsIGJ1dCB0aGF0IHNlZW1zIHRv
IGJyZWFrIFJUVAotICAvLyBlc3RpbWF0aW9uLCByZXN1bHRpbmcgaW4gdGVzdCBmYWlsdXJlcyBm
b3IKLSAgLy8gUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QuR2V0Q2FwdHVyZVN0YXJ0TnRw
VGltZVdpdGhPbGRTdGF0c0FwaQorICBjb25maWd1cmF0aW9uLnJlY2VpdmVyX29ubHkgPSB0cnVl
OwogICBjb25maWd1cmF0aW9uLm91dGdvaW5nX3RyYW5zcG9ydCA9IHJ0Y3Bfc2VuZF90cmFuc3Bv
cnQ7CiAgIGNvbmZpZ3VyYXRpb24ucmVjZWl2ZV9zdGF0aXN0aWNzID0gcnRwX3JlY2VpdmVfc3Rh
dGlzdGljc18uZ2V0KCk7CiAKQEAgLTI0OSwyNiArNTAxLDkgQEAgQ2hhbm5lbFJlY2VpdmU6OkNo
YW5uZWxSZWNlaXZlKAogICBfcnRwUnRjcE1vZHVsZS5yZXNldChSdHBSdGNwOjpDcmVhdGVSdHBS
dGNwKGNvbmZpZ3VyYXRpb24pKTsKICAgX3J0cFJ0Y3BNb2R1bGUtPlNldFNlbmRpbmdNZWRpYVN0
YXR1cyhmYWxzZSk7CiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRSZW1vdGVTU1JDKHJlbW90ZV9zc3Jj
Xyk7Ci0gIEluaXQoKTsKLX0KLQotQ2hhbm5lbFJlY2VpdmU6On5DaGFubmVsUmVjZWl2ZSgpIHsK
LSAgVGVybWluYXRlKCk7Ci0gIFJUQ19EQ0hFQ0soIWNoYW5uZWxfc3RhdGVfLkdldCgpLnBsYXlp
bmcpOwotfQotCi12b2lkIENoYW5uZWxSZWNlaXZlOjpJbml0KCkgewotICBjaGFubmVsX3N0YXRl
Xy5SZXNldCgpOwogCi0gIC8vIC0tLSBBZGQgbW9kdWxlcyB0byBwcm9jZXNzIHRocmVhZCAoZm9y
IHBlcmlvZGljIHNjaGVkdWxhdGlvbikKICAgX21vZHVsZVByb2Nlc3NUaHJlYWRQdHItPlJlZ2lz
dGVyTW9kdWxlKF9ydHBSdGNwTW9kdWxlLmdldCgpLCBSVENfRlJPTV9IRVJFKTsKIAotICAvLyAt
LS0gQUNNIGluaXRpYWxpemF0aW9uCi0gIGludCBlcnJvciA9IGF1ZGlvX2NvZGluZ18tPkluaXRp
YWxpemVSZWNlaXZlcigpOwotICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKLQotICAvLyAtLS0g
UlRQL1JUQ1AgbW9kdWxlIGluaXRpYWxpemF0aW9uCi0KICAgLy8gRW5zdXJlIHRoYXQgUlRDUCBp
cyBlbmFibGVkIGJ5IGRlZmF1bHQgZm9yIHRoZSBjcmVhdGVkIGNoYW5uZWwuCiAgIC8vIE5vdGUg
dGhhdCwgdGhlIG1vZHVsZSB3aWxsIGtlZXAgZ2VuZXJhdGluZyBSVENQIHVudGlsIGl0IGlzIGV4
cGxpY2l0bHkKICAgLy8gZGlzYWJsZWQgYnkgdGhlIHVzZXIuCkBAIC0yNzYsNjAgKzUxMSw1NCBA
QCB2b2lkIENoYW5uZWxSZWNlaXZlOjpJbml0KCkgewogICAvLyBiZSB0cmFuc21pdHRlZCBzaW5j
ZSB0aGUgVHJhbnNwb3J0IG9iamVjdCB3aWxsIHRoZW4gYmUgaW52YWxpZC4KICAgLy8gUlRDUCBp
cyBlbmFibGVkIGJ5IGRlZmF1bHQuCiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRSVENQU3RhdHVzKFJ0
Y3BNb2RlOjprQ29tcG91bmQpOworCisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgbWVk
aWFfdHJhbnNwb3J0Xy0+U2V0UmVjZWl2ZUF1ZGlvU2luayh0aGlzKTsKKyAgfQogfQogCi12b2lk
IENoYW5uZWxSZWNlaXZlOjpUZXJtaW5hdGUoKSB7CitDaGFubmVsUmVjZWl2ZTo6fkNoYW5uZWxS
ZWNlaXZlKCkgewogICBSVENfRENIRUNLKGNvbnN0cnVjdGlvbl90aHJlYWRfLkNhbGxlZE9uVmFs
aWRUaHJlYWQoKSk7Ci0gIC8vIE11c3QgYmUgY2FsbGVkIG9uIHRoZSBzYW1lIHRocmVhZCBhcyBJ
bml0KCkuCi0gIHJ0cF9yZWNlaXZlX3N0YXRpc3RpY3NfLT5SZWdpc3RlclJ0Y3BTdGF0aXN0aWNz
Q2FsbGJhY2soTlVMTCk7CisKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBtZWRpYV90
cmFuc3BvcnRfLT5TZXRSZWNlaXZlQXVkaW9TaW5rKG51bGxwdHIpOworICB9CiAKICAgU3RvcFBs
YXlvdXQoKTsKIAotICAvLyBUaGUgb3JkZXIgdG8gc2FmZWx5IHNodXRkb3duIG1vZHVsZXMgaW4g
YSBjaGFubmVsIGlzOgotICAvLyAxLiBEZS1yZWdpc3RlciBjYWxsYmFja3MgaW4gbW9kdWxlcwot
ICAvLyAyLiBEZS1yZWdpc3RlciBtb2R1bGVzIGluIHByb2Nlc3MgdGhyZWFkCi0gIC8vIDMuIERl
c3Ryb3kgbW9kdWxlcwogICBpbnQgZXJyb3IgPSBhdWRpb19jb2RpbmdfLT5SZWdpc3RlclRyYW5z
cG9ydENhbGxiYWNrKE5VTEwpOwogICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKIAotICAvLyBE
ZS1yZWdpc3RlciBtb2R1bGVzIGluIHByb2Nlc3MgdGhyZWFkCiAgIGlmIChfbW9kdWxlUHJvY2Vz
c1RocmVhZFB0cikKICAgICBfbW9kdWxlUHJvY2Vzc1RocmVhZFB0ci0+RGVSZWdpc3Rlck1vZHVs
ZShfcnRwUnRjcE1vZHVsZS5nZXQoKSk7Ci0KLSAgLy8gRW5kIG9mIG1vZHVsZXMgc2h1dGRvd24K
IH0KIAogdm9pZCBDaGFubmVsUmVjZWl2ZTo6U2V0U2luayhBdWRpb1NpbmtJbnRlcmZhY2UqIHNp
bmspIHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRU
aHJlYWQoKSk7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZfY2FsbGJhY2tDcml0U2VjdCk7CiAgIGF1
ZGlvX3NpbmtfID0gc2luazsKIH0KIAotaW50MzJfdCBDaGFubmVsUmVjZWl2ZTo6U3RhcnRQbGF5
b3V0KCkgewotICBpZiAoY2hhbm5lbF9zdGF0ZV8uR2V0KCkucGxheWluZykgewotICAgIHJldHVy
biAwOwotICB9Ci0KLSAgY2hhbm5lbF9zdGF0ZV8uU2V0UGxheWluZyh0cnVlKTsKLQotICByZXR1
cm4gMDsKK3ZvaWQgQ2hhbm5lbFJlY2VpdmU6OlN0YXJ0UGxheW91dCgpIHsKKyAgUlRDX0RDSEVD
Syh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CisgIHJ0Yzo6
Q3JpdFNjb3BlIGxvY2soJnBsYXlpbmdfbG9ja18pOworICBwbGF5aW5nXyA9IHRydWU7CiB9CiAK
LWludDMyX3QgQ2hhbm5lbFJlY2VpdmU6OlN0b3BQbGF5b3V0KCkgewotICBpZiAoIWNoYW5uZWxf
c3RhdGVfLkdldCgpLnBsYXlpbmcpIHsKLSAgICByZXR1cm4gMDsKLSAgfQotCi0gIGNoYW5uZWxf
c3RhdGVfLlNldFBsYXlpbmcoZmFsc2UpOwordm9pZCBDaGFubmVsUmVjZWl2ZTo6U3RvcFBsYXlv
dXQoKSB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlk
VGhyZWFkKCkpOworICBydGM6OkNyaXRTY29wZSBsb2NrKCZwbGF5aW5nX2xvY2tfKTsKKyAgcGxh
eWluZ18gPSBmYWxzZTsKICAgX291dHB1dEF1ZGlvTGV2ZWwuQ2xlYXIoKTsKLQotICByZXR1cm4g
MDsKIH0KIAotaW50MzJfdCBDaGFubmVsUmVjZWl2ZTo6R2V0UmVjQ29kZWMoQ29kZWNJbnN0JiBj
b2RlYykgewotICByZXR1cm4gKGF1ZGlvX2NvZGluZ18tPlJlY2VpdmVDb2RlYygmY29kZWMpKTsK
K2Jvb2wgQ2hhbm5lbFJlY2VpdmU6OkdldFJlY0NvZGVjKENvZGVjSW5zdCogY29kZWMpIGNvbnN0
IHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJl
YWQoKSk7CisgIHJldHVybiAoYXVkaW9fY29kaW5nXy0+UmVjZWl2ZUNvZGVjKGNvZGVjKSA9PSAw
KTsKIH0KIAogc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+IENoYW5uZWxSZWNlaXZlOjpH
ZXRTb3VyY2VzKCkgY29uc3QgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8u
Q2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgaW50NjRfdCBub3dfbXMgPSBydGM6OlRpbWVNaWxs
aXMoKTsKICAgc3RkOjp2ZWN0b3I8UnRwU291cmNlPiBzb3VyY2VzOwogICB7CkBAIC0zNDcsNiAr
NTc2LDcgQEAgc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+IENoYW5uZWxSZWNlaXZlOjpH
ZXRTb3VyY2VzKCkgY29uc3QgewogCiB2b2lkIENoYW5uZWxSZWNlaXZlOjpTZXRSZWNlaXZlQ29k
ZWNzKAogICAgIGNvbnN0IHN0ZDo6bWFwPGludCwgU2RwQXVkaW9Gb3JtYXQ+JiBjb2RlY3MpIHsK
KyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQo
KSk7CiAgIGZvciAoY29uc3QgYXV0byYga3YgOiBjb2RlY3MpIHsKICAgICBSVENfRENIRUNLX0dF
KGt2LnNlY29uZC5jbG9ja3JhdGVfaHosIDEwMDApOwogICAgIHBheWxvYWRfdHlwZV9mcmVxdWVu
Y2llc19ba3YuZmlyc3RdID0ga3Yuc2Vjb25kLmNsb2NrcmF0ZV9oejsKQEAgLTM1NCw3ICs1ODQs
NyBAQCB2b2lkIENoYW5uZWxSZWNlaXZlOjpTZXRSZWNlaXZlQ29kZWNzKAogICBhdWRpb19jb2Rp
bmdfLT5TZXRSZWNlaXZlQ29kZWNzKGNvZGVjcyk7CiB9CiAKLS8vIFRPRE8obmlzc2UpOiBNb3Zl
IHJlY2VpdmUgbG9naWMgdXAgdG8gQXVkaW9SZWNlaXZlU3RyZWFtLgorLy8gTWF5IGJlIGNhbGxl
ZCBvbiBlaXRoZXIgd29ya2VyIHRocmVhZCBvciBuZXR3b3JrIHRocmVhZC4KIHZvaWQgQ2hhbm5l
bFJlY2VpdmU6Ok9uUnRwUGFja2V0KGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIHsK
ICAgaW50NjRfdCBub3dfbXMgPSBydGM6OlRpbWVNaWxsaXMoKTsKICAgdWludDhfdCBhdWRpb19s
ZXZlbDsKQEAgLTM2OSw3ICs1OTksOSBAQCB2b2lkIENoYW5uZWxSZWNlaXZlOjpPblJ0cFBhY2tl
dChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgICAgaWYgKGhhc19hdWRpb19s
ZXZlbCkKICAgICAgIGxhc3RfcmVjZWl2ZWRfcnRwX2F1ZGlvX2xldmVsXyA9IGF1ZGlvX2xldmVs
OwogICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBjc3JjcyA9IHBhY2tldC5Dc3JjcygpOwotICAg
IGNvbnRyaWJ1dGluZ19zb3VyY2VzXy5VcGRhdGUobm93X21zLCBjc3Jjcyk7CisgICAgY29udHJp
YnV0aW5nX3NvdXJjZXNfLlVwZGF0ZSgKKyAgICAgICAgbm93X21zLCBjc3JjcywKKyAgICAgICAg
aGFzX2F1ZGlvX2xldmVsID8gYWJzbDo6b3B0aW9uYWw8dWludDhfdD4oYXVkaW9fbGV2ZWwpIDog
YWJzbDo6bnVsbG9wdCk7CiAgIH0KIAogICAvLyBTdG9yZSBwbGF5b3V0IHRpbWVzdGFtcCBmb3Ig
dGhlIHJlY2VpdmVkIFJUUCBwYWNrZXQKQEAgLTQyOSw2ICs2NjEsMTAgQEAgYm9vbCBDaGFubmVs
UmVjZWl2ZTo6UmVjZWl2ZVBhY2tldChjb25zdCB1aW50OF90KiBwYWNrZXQsCiAgICAgLy8gVXBk
YXRlIHRoZSBmaW5hbCBwYXlsb2FkLgogICAgIHBheWxvYWQgPSBkZWNyeXB0ZWRfYXVkaW9fcGF5
bG9hZC5kYXRhKCk7CiAgICAgcGF5bG9hZF9kYXRhX2xlbmd0aCA9IGRlY3J5cHRlZF9hdWRpb19w
YXlsb2FkLnNpemUoKTsKKyAgfSBlbHNlIGlmIChjcnlwdG9fb3B0aW9uc18uc2ZyYW1lLnJlcXVp
cmVfZnJhbWVfZW5jcnlwdGlvbikgeworICAgIFJUQ19ETE9HKExTX0VSUk9SKQorICAgICAgICA8
PCAiRnJhbWVEZWNyeXB0b3IgcmVxdWlyZWQgYnV0IG5vdCBzZXQsIGRyb3BwaW5nIHBhY2tldCI7
CisgICAgcGF5bG9hZF9kYXRhX2xlbmd0aCA9IDA7CiAgIH0KIAogICBpZiAocGF5bG9hZF9kYXRh
X2xlbmd0aCA9PSAwKSB7CkBAIC00MzksNyArNjc1LDkgQEAgYm9vbCBDaGFubmVsUmVjZWl2ZTo6
UmVjZWl2ZVBhY2tldChjb25zdCB1aW50OF90KiBwYWNrZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJndlYnJ0Y19ydHBfaGVhZGVyKTsKIH0KIAotaW50MzJfdCBDaGFubmVsUmVj
ZWl2ZTo6UmVjZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgpIHsKKy8vIE1heSBiZSBjYWxsZWQgb24gZWl0aGVyIHdvcmtlciB0aHJlYWQgb3IgbmV0d29y
ayB0aHJlYWQuCisvLyBUT0RPKG5pc3NlKTogRHJvcCBhbHdheXMtdHJ1ZSByZXR1cm4gdmFsdWUu
Citib29sIENoYW5uZWxSZWNlaXZlOjpSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkgewogICAvLyBTdG9yZSBwbGF5b3V0IHRpbWVzdGFtcCBmb3Ig
dGhlIHJlY2VpdmVkIFJUQ1AgcGFja2V0CiAgIFVwZGF0ZVBsYXlvdXRUaW1lc3RhbXAodHJ1ZSk7
CiAKQEAgLTQ0OSw3ICs2ODcsNyBAQCBpbnQzMl90IENoYW5uZWxSZWNlaXZlOjpSZWNlaXZlZFJU
Q1BQYWNrZXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgewogICBpbnQ2NF90
IHJ0dCA9IEdldFJUVCgpOwogICBpZiAocnR0ID09IDApIHsKICAgICAvLyBXYWl0aW5nIGZvciB2
YWxpZCBSVFQuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICBpbnQ2
NF90IG5hY2tfd2luZG93X21zID0gcnR0OwpAQCAtNDY1LDQ2ICs3MDMsNDUgQEAgaW50MzJfdCBD
aGFubmVsUmVjZWl2ZTo6UmVjZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgpIHsKICAgaWYgKDAgIT0gX3J0cFJ0Y3BNb2R1bGUtPlJlbW90ZU5UUCgmbnRw
X3NlY3MsICZudHBfZnJhYywgTlVMTCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmcnRwX3RpbWVzdGFtcCkpIHsKICAgICAvLyBXYWl0aW5nIGZvciBSVENQLgot
ICAgIHJldHVybiAwOworICAgIHJldHVybiB0cnVlOwogICB9CiAKICAgewogICAgIHJ0Yzo6Q3Jp
dFNjb3BlIGxvY2soJnRzX3N0YXRzX2xvY2tfKTsKICAgICBudHBfZXN0aW1hdG9yXy5VcGRhdGVS
dGNwVGltZXN0YW1wKHJ0dCwgbnRwX3NlY3MsIG50cF9mcmFjLCBydHBfdGltZXN0YW1wKTsKICAg
fQotICByZXR1cm4gMDsKKyAgcmV0dXJuIHRydWU7CiB9CiAKIGludCBDaGFubmVsUmVjZWl2ZTo6
R2V0U3BlZWNoT3V0cHV0TGV2ZWxGdWxsUmFuZ2UoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29y
a2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICByZXR1cm4gX291
dHB1dEF1ZGlvTGV2ZWwuTGV2ZWxGdWxsUmFuZ2UoKTsKIH0KIAogZG91YmxlIENoYW5uZWxSZWNl
aXZlOjpHZXRUb3RhbE91dHB1dEVuZXJneSgpIGNvbnN0IHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJf
dGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAgIHJldHVybiBfb3V0cHV0
QXVkaW9MZXZlbC5Ub3RhbEVuZXJneSgpOwogfQogCiBkb3VibGUgQ2hhbm5lbFJlY2VpdmU6Okdl
dFRvdGFsT3V0cHV0RHVyYXRpb24oKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVh
ZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICByZXR1cm4gX291dHB1dEF1ZGlv
TGV2ZWwuVG90YWxEdXJhdGlvbigpOwogfQogCiB2b2lkIENoYW5uZWxSZWNlaXZlOjpTZXRDaGFu
bmVsT3V0cHV0Vm9sdW1lU2NhbGluZyhmbG9hdCBzY2FsaW5nKSB7CisgIFJUQ19EQ0hFQ0sod29y
a2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBydGM6OkNyaXRT
Y29wZSBjcygmdm9sdW1lX3NldHRpbmdzX2NyaXRzZWN0Xyk7CiAgIF9vdXRwdXRHYWluID0gc2Nh
bGluZzsKIH0KIAotaW50IENoYW5uZWxSZWNlaXZlOjpTZXRMb2NhbFNTUkModW5zaWduZWQgaW50
IHNzcmMpIHsKK3ZvaWQgQ2hhbm5lbFJlY2VpdmU6OlNldExvY2FsU1NSQyh1aW50MzJfdCBzc3Jj
KSB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhy
ZWFkKCkpOwogICBfcnRwUnRjcE1vZHVsZS0+U2V0U1NSQyhzc3JjKTsKLSAgcmV0dXJuIDA7Ci19
Ci0KLS8vIFRPRE8obmlzc2UpOiBQYXNzIHNzcmMgaW4gcmV0dXJuIHZhbHVlIGluc3RlYWQuCi1p
bnQgQ2hhbm5lbFJlY2VpdmU6OkdldFJlbW90ZVNTUkModW5zaWduZWQgaW50JiBzc3JjKSB7Ci0g
IHNzcmMgPSByZW1vdGVfc3NyY187Ci0gIHJldHVybiAwOwogfQogCiB2b2lkIENoYW5uZWxSZWNl
aXZlOjpSZWdpc3RlclJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAogICAgIFBhY2tl
dFJvdXRlciogcGFja2V0X3JvdXRlcikgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hl
Y2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgUlRDX0RDSEVDSyhwYWNrZXRfcm91dGVy
KTsKICAgUlRDX0RDSEVDSyghcGFja2V0X3JvdXRlcl8pOwogICBjb25zdGV4cHIgYm9vbCByZW1i
X2NhbmRpZGF0ZSA9IGZhbHNlOwpAQCAtNTEzLDEzICs3NTAsMTYgQEAgdm9pZCBDaGFubmVsUmVj
ZWl2ZTo6UmVnaXN0ZXJSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKIH0KIAogdm9p
ZCBDaGFubmVsUmVjZWl2ZTo6UmVzZXRSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygp
IHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJl
YWQoKSk7CiAgIFJUQ19EQ0hFQ0socGFja2V0X3JvdXRlcl8pOwogICBwYWNrZXRfcm91dGVyXy0+
UmVtb3ZlUmVjZWl2ZVJ0cE1vZHVsZShfcnRwUnRjcE1vZHVsZS5nZXQoKSk7CiAgIHBhY2tldF9y
b3V0ZXJfID0gbnVsbHB0cjsKIH0KIAotaW50IENoYW5uZWxSZWNlaXZlOjpHZXRSVFBTdGF0aXN0
aWNzKENhbGxSZWNlaXZlU3RhdGlzdGljcyYgc3RhdHMpIHsKK0NhbGxSZWNlaXZlU3RhdGlzdGlj
cyBDaGFubmVsUmVjZWl2ZTo6R2V0UlRDUFN0YXRpc3RpY3MoKSBjb25zdCB7CisgIFJUQ19EQ0hF
Q0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICAvLyAt
LS0gUnRjcFN0YXRpc3RpY3MKKyAgQ2FsbFJlY2VpdmVTdGF0aXN0aWNzIHN0YXRzOwogCiAgIC8v
IFRoZSBqaXR0ZXIgc3RhdGlzdGljcyBpcyB1cGRhdGVkIGZvciBlYWNoIHJlY2VpdmVkIFJUUCBw
YWNrZXQgYW5kIGlzCiAgIC8vIGJhc2VkIG9uIHJlY2VpdmVkIHBhY2tldHMuCkBAIC01NTYsMTQg
Kzc5NiwxNSBAQCBpbnQgQ2hhbm5lbFJlY2VpdmU6OkdldFJUUFN0YXRpc3RpY3MoQ2FsbFJlY2Vp
dmVTdGF0aXN0aWNzJiBzdGF0cykgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnRzX3N0YXRz
X2xvY2tfKTsKICAgICBzdGF0cy5jYXB0dXJlX3N0YXJ0X250cF90aW1lX21zXyA9IGNhcHR1cmVf
c3RhcnRfbnRwX3RpbWVfbXNfOwogICB9Ci0gIHJldHVybiAwOworICByZXR1cm4gc3RhdHM7CiB9
CiAKLXZvaWQgQ2hhbm5lbFJlY2VpdmU6OlNldE5BQ0tTdGF0dXMoYm9vbCBlbmFibGUsIGludCBt
YXhOdW1iZXJPZlBhY2tldHMpIHsKK3ZvaWQgQ2hhbm5lbFJlY2VpdmU6OlNldE5BQ0tTdGF0dXMo
Ym9vbCBlbmFibGUsIGludCBtYXhfcGFja2V0cykgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJl
YWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgLy8gTm9uZSBvZiB0aGVzZSBm
dW5jdGlvbnMgY2FuIGZhaWwuCi0gIHJ0cF9yZWNlaXZlX3N0YXRpc3RpY3NfLT5TZXRNYXhSZW9y
ZGVyaW5nVGhyZXNob2xkKG1heE51bWJlck9mUGFja2V0cyk7CisgIHJ0cF9yZWNlaXZlX3N0YXRp
c3RpY3NfLT5TZXRNYXhSZW9yZGVyaW5nVGhyZXNob2xkKG1heF9wYWNrZXRzKTsKICAgaWYgKGVu
YWJsZSkKLSAgICBhdWRpb19jb2RpbmdfLT5FbmFibGVOYWNrKG1heE51bWJlck9mUGFja2V0cyk7
CisgICAgYXVkaW9fY29kaW5nXy0+RW5hYmxlTmFjayhtYXhfcGFja2V0cyk7CiAgIGVsc2UKICAg
ICBhdWRpb19jb2RpbmdfLT5EaXNhYmxlTmFjaygpOwogfQpAQCAtNTc0LDU0ICs4MTUsNjEgQEAg
aW50IENoYW5uZWxSZWNlaXZlOjpSZXNlbmRQYWNrZXRzKGNvbnN0IHVpbnQxNl90KiBzZXF1ZW5j
ZV9udW1iZXJzLAogICByZXR1cm4gX3J0cFJ0Y3BNb2R1bGUtPlNlbmROQUNLKHNlcXVlbmNlX251
bWJlcnMsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2hhbm5lbFJlY2VpdmU6OlNldEFzc29jaWF0ZWRT
ZW5kQ2hhbm5lbChDaGFubmVsU2VuZCogY2hhbm5lbCkgewordm9pZCBDaGFubmVsUmVjZWl2ZTo6
U2V0QXNzb2NpYXRlZFNlbmRDaGFubmVsKAorICAgIGNvbnN0IENoYW5uZWxTZW5kSW50ZXJmYWNl
KiBjaGFubmVsKSB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRP
blZhbGlkVGhyZWFkKCkpOwogICBydGM6OkNyaXRTY29wZSBsb2NrKCZhc3NvY19zZW5kX2NoYW5u
ZWxfbG9ja18pOwogICBhc3NvY2lhdGVkX3NlbmRfY2hhbm5lbF8gPSBjaGFubmVsOwogfQogCi1p
bnQgQ2hhbm5lbFJlY2VpdmU6OkdldE5ldHdvcmtTdGF0aXN0aWNzKE5ldHdvcmtTdGF0aXN0aWNz
JiBzdGF0cykgewotICByZXR1cm4gYXVkaW9fY29kaW5nXy0+R2V0TmV0d29ya1N0YXRpc3RpY3Mo
JnN0YXRzKTsKK05ldHdvcmtTdGF0aXN0aWNzIENoYW5uZWxSZWNlaXZlOjpHZXROZXR3b3JrU3Rh
dGlzdGljcygpIGNvbnN0IHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNh
bGxlZE9uVmFsaWRUaHJlYWQoKSk7CisgIE5ldHdvcmtTdGF0aXN0aWNzIHN0YXRzOworICBpbnQg
ZXJyb3IgPSBhdWRpb19jb2RpbmdfLT5HZXROZXR3b3JrU3RhdGlzdGljcygmc3RhdHMpOworICBS
VENfRENIRUNLX0VRKDAsIGVycm9yKTsKKyAgcmV0dXJuIHN0YXRzOwogfQogCi12b2lkIENoYW5u
ZWxSZWNlaXZlOjpHZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKAotICAgIEF1ZGlvRGVjb2RpbmdD
YWxsU3RhdHMqIHN0YXRzKSBjb25zdCB7Ci0gIGF1ZGlvX2NvZGluZ18tPkdldERlY29kaW5nQ2Fs
bFN0YXRpc3RpY3Moc3RhdHMpOworQXVkaW9EZWNvZGluZ0NhbGxTdGF0cyBDaGFubmVsUmVjZWl2
ZTo6R2V0RGVjb2RpbmdDYWxsU3RhdGlzdGljcygpIGNvbnN0IHsKKyAgUlRDX0RDSEVDSyh3b3Jr
ZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CisgIEF1ZGlvRGVjb2Rp
bmdDYWxsU3RhdHMgc3RhdHM7CisgIGF1ZGlvX2NvZGluZ18tPkdldERlY29kaW5nQ2FsbFN0YXRp
c3RpY3MoJnN0YXRzKTsKKyAgcmV0dXJuIHN0YXRzOwogfQogCiB1aW50MzJfdCBDaGFubmVsUmVj
ZWl2ZTo6R2V0RGVsYXlFc3RpbWF0ZSgpIGNvbnN0IHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhy
ZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSB8fAorICAgICAgICAgICAgIG1vZHVs
ZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBydGM6
OkNyaXRTY29wZSBsb2NrKCZ2aWRlb19zeW5jX2xvY2tfKTsKICAgcmV0dXJuIGF1ZGlvX2NvZGlu
Z18tPkZpbHRlcmVkQ3VycmVudERlbGF5TXMoKSArIHBsYXlvdXRfZGVsYXlfbXNfOwogfQogCi1p
bnQgQ2hhbm5lbFJlY2VpdmU6OlNldE1pbmltdW1QbGF5b3V0RGVsYXkoaW50IGRlbGF5TXMpIHsK
LSAgaWYgKChkZWxheU1zIDwga1ZvaWNlRW5naW5lTWluTWluUGxheW91dERlbGF5TXMpIHx8Ci0g
ICAgICAoZGVsYXlNcyA+IGtWb2ljZUVuZ2luZU1heE1pblBsYXlvdXREZWxheU1zKSkgewordm9p
ZCBDaGFubmVsUmVjZWl2ZTo6U2V0TWluaW11bVBsYXlvdXREZWxheShpbnQgZGVsYXlfbXMpIHsK
KyAgUlRDX0RDSEVDSyhtb2R1bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxp
ZFRocmVhZCgpKTsKKyAgLy8gTGltaXQgdG8gcmFuZ2UgYWNjZXB0ZWQgYnkgYm90aCBWb0UgYW5k
IEFDTSwgc28gd2UncmUgYXQgbGVhc3QgZ2V0dGluZyBhcworICAvLyBjbG9zZSBhcyBwb3NzaWJs
ZSwgaW5zdGVhZCBvZiBmYWlsaW5nLgorICBkZWxheV9tcyA9IHJ0Yzo6U2FmZUNsYW1wKGRlbGF5
X21zLCAwLCAxMDAwMCk7CisgIGlmICgoZGVsYXlfbXMgPCBrVm9pY2VFbmdpbmVNaW5NaW5QbGF5
b3V0RGVsYXlNcykgfHwKKyAgICAgIChkZWxheV9tcyA+IGtWb2ljZUVuZ2luZU1heE1pblBsYXlv
dXREZWxheU1zKSkgewogICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiU2V0TWluaW11bVBsYXlv
dXREZWxheSgpIGludmFsaWQgbWluIGRlbGF5IjsKLSAgICByZXR1cm4gLTE7CisgICAgcmV0dXJu
OwogICB9Ci0gIGlmIChhdWRpb19jb2RpbmdfLT5TZXRNaW5pbXVtUGxheW91dERlbGF5KGRlbGF5
TXMpICE9IDApIHsKKyAgaWYgKGF1ZGlvX2NvZGluZ18tPlNldE1pbmltdW1QbGF5b3V0RGVsYXko
ZGVsYXlfbXMpICE9IDApIHsKICAgICBSVENfRExPRyhMU19FUlJPUikKICAgICAgICAgPDwgIlNl
dE1pbmltdW1QbGF5b3V0RGVsYXkoKSBmYWlsZWQgdG8gc2V0IG1pbiBwbGF5b3V0IGRlbGF5IjsK
LSAgICByZXR1cm4gLTE7CiAgIH0KLSAgcmV0dXJuIDA7CiB9CiAKLWludCBDaGFubmVsUmVjZWl2
ZTo6R2V0UGxheW91dFRpbWVzdGFtcCh1bnNpZ25lZCBpbnQmIHRpbWVzdGFtcCkgewotICB1aW50
MzJfdCBwbGF5b3V0X3RpbWVzdGFtcF9ydHAgPSAwOwordWludDMyX3QgQ2hhbm5lbFJlY2VpdmU6
OkdldFBsYXlvdXRUaW1lc3RhbXAoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0tfUlVOU19TRVJJQUxJ
WkVEKCZ2aWRlb19jYXB0dXJlX3RocmVhZF9yYWNlX2NoZWNrZXJfKTsKICAgewogICAgIHJ0Yzo6
Q3JpdFNjb3BlIGxvY2soJnZpZGVvX3N5bmNfbG9ja18pOwotICAgIHBsYXlvdXRfdGltZXN0YW1w
X3J0cCA9IHBsYXlvdXRfdGltZXN0YW1wX3J0cF87Ci0gIH0KLSAgaWYgKHBsYXlvdXRfdGltZXN0
YW1wX3J0cCA9PSAwKSB7Ci0gICAgUlRDX0RMT0coTFNfRVJST1IpIDw8ICJHZXRQbGF5b3V0VGlt
ZXN0YW1wKCkgZmFpbGVkIHRvIHJldHJpZXZlIHRpbWVzdGFtcCI7Ci0gICAgcmV0dXJuIC0xOwor
ICAgIHJldHVybiBwbGF5b3V0X3RpbWVzdGFtcF9ydHBfOwogICB9Ci0gIHRpbWVzdGFtcCA9IHBs
YXlvdXRfdGltZXN0YW1wX3J0cDsKLSAgcmV0dXJuIDA7CiB9CiAKIGFic2w6Om9wdGlvbmFsPFN5
bmNhYmxlOjpJbmZvPiBDaGFubmVsUmVjZWl2ZTo6R2V0U3luY0luZm8oKSBjb25zdCB7CisgIFJU
Q19EQ0hFQ0sobW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJl
YWQoKSk7CiAgIFN5bmNhYmxlOjpJbmZvIGluZm87CiAgIGlmIChfcnRwUnRjcE1vZHVsZS0+UmVt
b3RlTlRQKCZpbmZvLmNhcHR1cmVfdGltZV9udHBfc2VjcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmluZm8uY2FwdHVyZV90aW1lX250cF9mcmFjLCBudWxscHRyLCBudWxscHRy
LApAQCAtNjgzLDYgKzkzMSwxNCBAQCBpbnQgQ2hhbm5lbFJlY2VpdmU6OkdldFJ0cFRpbWVzdGFt
cFJhdGVIeigpIGNvbnN0IHsKIH0KIAogaW50NjRfdCBDaGFubmVsUmVjZWl2ZTo6R2V0UlRUKCkg
Y29uc3QgeworICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIGF1dG8gdGFyZ2V0X3JhdGUg
PSBtZWRpYV90cmFuc3BvcnRfLT5HZXRMYXRlc3RUYXJnZXRUcmFuc2ZlclJhdGUoKTsKKyAgICBp
ZiAodGFyZ2V0X3JhdGUuaGFzX3ZhbHVlKCkpIHsKKyAgICAgIHJldHVybiB0YXJnZXRfcmF0ZS0+
bmV0d29ya19lc3RpbWF0ZS5yb3VuZF90cmlwX3RpbWUubXMoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gMDsKKyAgfQogICBSdGNwTW9kZSBtZXRob2QgPSBfcnRwUnRjcE1vZHVsZS0+UlRDUCgpOwog
ICBpZiAobWV0aG9kID09IFJ0Y3BNb2RlOjprT2ZmKSB7CiAgICAgcmV0dXJuIDA7CkBAIC03MDUs
NiArOTYxLDggQEAgaW50NjRfdCBDaGFubmVsUmVjZWl2ZTo6R2V0UlRUKCkgY29uc3QgewogICBp
bnQ2NF90IGF2Z19ydHQgPSAwOwogICBpbnQ2NF90IG1heF9ydHQgPSAwOwogICBpbnQ2NF90IG1p
bl9ydHQgPSAwOworICAvLyBUT0RPKG5pc3NlKTogVGhpcyBtZXRob2QgY29tcHV0ZXMgUlRUIGJh
c2VkIG9uIHNlbmRlciByZXBvcnRzLCBldmVuIHRob3VnaAorICAvLyBhIHJlY2VpdmUgc3RyZWFt
IGlzIG5vdCBzdXBwb3NlZCB0byBkbyB0aGF0LgogICBpZiAoX3J0cFJ0Y3BNb2R1bGUtPlJUVChy
ZW1vdGVfc3NyY18sICZydHQsICZhdmdfcnR0LCAmbWluX3J0dCwgJm1heF9ydHQpICE9CiAgICAg
ICAwKSB7CiAgICAgcmV0dXJuIDA7CkBAIC03MTIsNSArOTcwLDI5IEBAIGludDY0X3QgQ2hhbm5l
bFJlY2VpdmU6OkdldFJUVCgpIGNvbnN0IHsKICAgcmV0dXJuIHJ0dDsKIH0KIAorfSAgLy8gbmFt
ZXNwYWNlCisKK3N0ZDo6dW5pcXVlX3B0cjxDaGFubmVsUmVjZWl2ZUludGVyZmFjZT4gQ3JlYXRl
Q2hhbm5lbFJlY2VpdmUoCisgICAgUHJvY2Vzc1RocmVhZCogbW9kdWxlX3Byb2Nlc3NfdGhyZWFk
LAorICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhdWRpb19kZXZpY2VfbW9kdWxlLAorICAgIE1lZGlh
VHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQsCisgICAgVHJhbnNwb3J0KiBydGNw
X3NlbmRfdHJhbnNwb3J0LAorICAgIFJ0Y0V2ZW50TG9nKiBydGNfZXZlbnRfbG9nLAorICAgIHVp
bnQzMl90IHJlbW90ZV9zc3JjLAorICAgIHNpemVfdCBqaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRz
LAorICAgIGJvb2wgaml0dGVyX2J1ZmZlcl9mYXN0X3BsYXlvdXQsCisgICAgaW50IGppdHRlcl9i
dWZmZXJfbWluX2RlbGF5X21zLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJG
YWN0b3J5PiBkZWNvZGVyX2ZhY3RvcnksCisgICAgYWJzbDo6b3B0aW9uYWw8QXVkaW9Db2RlY1Bh
aXJJZD4gY29kZWNfcGFpcl9pZCwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0
b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRvciwKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09w
dGlvbnMmIGNyeXB0b19vcHRpb25zKSB7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxDaGFu
bmVsUmVjZWl2ZT4oCisgICAgICBtb2R1bGVfcHJvY2Vzc190aHJlYWQsIGF1ZGlvX2RldmljZV9t
b2R1bGUsIG1lZGlhX3RyYW5zcG9ydCwKKyAgICAgIHJ0Y3Bfc2VuZF90cmFuc3BvcnQsIHJ0Y19l
dmVudF9sb2csIHJlbW90ZV9zc3JjLAorICAgICAgaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cywg
aml0dGVyX2J1ZmZlcl9mYXN0X3BsYXlvdXQsCisgICAgICBqaXR0ZXJfYnVmZmVyX21pbl9kZWxh
eV9tcywgZGVjb2Rlcl9mYWN0b3J5LCBjb2RlY19wYWlyX2lkLAorICAgICAgZnJhbWVfZGVjcnlw
dG9yLCBjcnlwdG9fb3B0aW9ucyk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB2b2UKIH0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlLmgKaW5kZXggODJl
YjRkZmYwYzRiNTU3NDlhM2ZlNjk2NjVhMTM3ZGQ0ZjMzYjM5Ny4uOTAyNzYyMzRhMTM3YTE2YzI5
YWIxNDM5NmQwODE3M2E2YmJkMTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZl
LmgKQEAgLTE3LDIyICsxNywxOCBAQAogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgogI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19taXhlci5oIgorI2luY2x1ZGUgImFwaS9hdWRp
b19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2NhbGwvYXVk
aW9fc2luay5oIgogI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgImFw
aS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRf
aW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgiCi0jaW5j
bHVkZSAiYXVkaW8vYXVkaW9fbGV2ZWwuaCIKKyNpbmNsdWRlICJjYWxsL3J0cF9wYWNrZXRfc2lu
a19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJjYWxsL3N5bmNhYmxlLmgiCi0jaW5jbHVkZSAiY29t
bW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGUuaCIKLSNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcmVtb3RlX250cF90aW1lX2VzdGltYXRvci5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX3BhcnNlci5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1dGluZ19zb3VyY2VzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2No
ZWNrZXIuaCIKIAogLy8gVE9ETyhzb2xlbmJlcmcsIG5pc3NlKTogVGhpcyBmaWxlIGNvbnRhaW5z
IGEgZmV3IE5PTElOVCBtYXJrcywgdG8gc2lsZW5jZQotLy8gd2FybmluZ3MgYWJvdXQgdXNlIG9m
IHVuc2lnbmVkIHNob3J0LCBhbmQgbm9uLWNvbnN0IHJlZmVyZW5jZSBhcmd1bWVudHMuCisvLyB3
YXJuaW5ncyBhYm91dCB1c2Ugb2YgdW5zaWduZWQgc2hvcnQuCiAvLyBUaGVzZSBuZWVkIGNsZWFu
dXAsIGluIGEgc2VwYXJhdGUgY2wuCiAKIG5hbWVzcGFjZSBydGMgewpAQCAtNjYsMjAxICs2Miw4
NSBAQCBzdHJ1Y3QgQ2FsbFJlY2VpdmVTdGF0aXN0aWNzIHsKIAogbmFtZXNwYWNlIHZvZSB7CiAK
LWNsYXNzIENoYW5uZWxTZW5kOworY2xhc3MgQ2hhbm5lbFNlbmRJbnRlcmZhY2U7CiAKLS8vIEhl
bHBlciBjbGFzcyB0byBzaW1wbGlmeSBsb2NraW5nIHNjaGVtZSBmb3IgbWVtYmVycyB0aGF0IGFy
ZSBhY2Nlc3NlZCBmcm9tCi0vLyBtdWx0aXBsZSB0aHJlYWRzLgotLy8gRXhhbXBsZTogYSBtZW1i
ZXIgY2FuIGJlIHNldCBvbiB0aHJlYWQgVDEgYW5kIHJlYWQgYnkgYW4gaW50ZXJuYWwgYXVkaW8K
LS8vIHRocmVhZCBUMi4gQWNjZXNzaW5nIHRoZSBtZW1iZXIgdmlhIHRoaXMgY2xhc3MgZW5zdXJl
cyB0aGF0IHdlIGFyZQotLy8gc2FmZSBhbmQgYWxzbyBhdm9pZCBUU2FuIHYyIHdhcm5pbmdzLgot
Y2xhc3MgQ2hhbm5lbFJlY2VpdmVTdGF0ZSB7Ci0gcHVibGljOgotICBzdHJ1Y3QgU3RhdGUgewot
ICAgIGJvb2wgcGxheWluZyA9IGZhbHNlOwotICB9OwotCi0gIENoYW5uZWxSZWNlaXZlU3RhdGUo
KSB7fQotICB2aXJ0dWFsIH5DaGFubmVsUmVjZWl2ZVN0YXRlKCkge30KLQotICB2b2lkIFJlc2V0
KCkgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmxvY2tfKTsKLSAgICBzdGF0ZV8gPSBTdGF0
ZSgpOwotICB9Ci0KLSAgU3RhdGUgR2V0KCkgY29uc3QgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGxv
Y2soJmxvY2tfKTsKLSAgICByZXR1cm4gc3RhdGVfOwotICB9Ci0KLSAgdm9pZCBTZXRQbGF5aW5n
KGJvb2wgZW5hYmxlKSB7Ci0gICAgcnRjOjpDcml0U2NvcGUgbG9jaygmbG9ja18pOwotICAgIHN0
YXRlXy5wbGF5aW5nID0gZW5hYmxlOwotICB9CisvLyBJbnRlcmZhY2UgY2xhc3MgbmVlZGVkIGZv
ciBBdWRpb1JlY2VpdmVTdHJlYW0gdGVzdHMgdGhhdCB1c2UgYQorLy8gTW9ja0NoYW5uZWxSZWNl
aXZlLgogCi0gcHJpdmF0ZToKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gbG9ja187Ci0gIFN0YXRl
IHN0YXRlXzsKLX07Ci0KLWNsYXNzIENoYW5uZWxSZWNlaXZlIDogcHVibGljIFJ0cERhdGEgewor
Y2xhc3MgQ2hhbm5lbFJlY2VpdmVJbnRlcmZhY2UgOiBwdWJsaWMgUnRwUGFja2V0U2lua0ludGVy
ZmFjZSB7CiAgcHVibGljOgotICAvLyBVc2VkIGZvciByZWNlaXZlIHN0cmVhbXMuCi0gIENoYW5u
ZWxSZWNlaXZlKFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKLSAgICAgICAg
ICAgICAgICAgQXVkaW9EZXZpY2VNb2R1bGUqIGF1ZGlvX2RldmljZV9tb2R1bGUsCi0gICAgICAg
ICAgICAgICAgIFRyYW5zcG9ydCogcnRjcF9zZW5kX3RyYW5zcG9ydCwKLSAgICAgICAgICAgICAg
ICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9sb2csCi0gICAgICAgICAgICAgICAgIHVpbnQzMl90
IHJlbW90ZV9zc3JjLAotICAgICAgICAgICAgICAgICBzaXplX3Qgaml0dGVyX2J1ZmZlcl9tYXhf
cGFja2V0cywKLSAgICAgICAgICAgICAgICAgYm9vbCBqaXR0ZXJfYnVmZmVyX2Zhc3RfcGxheW91
dCwKLSAgICAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rv
cnk+IGRlY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8QXVk
aW9Db2RlY1BhaXJJZD4gY29kZWNfcGFpcl9pZCwKLSAgICAgICAgICAgICAgICAgRnJhbWVEZWNy
eXB0b3JJbnRlcmZhY2UqIGZyYW1lX2RlY3J5cHRvcik7Ci0gIHZpcnR1YWwgfkNoYW5uZWxSZWNl
aXZlKCk7CisgIHZpcnR1YWwgfkNoYW5uZWxSZWNlaXZlSW50ZXJmYWNlKCkgPSBkZWZhdWx0Owog
Ci0gIHZvaWQgU2V0U2luayhBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmspOworICB2aXJ0dWFsIHZv
aWQgU2V0U2luayhBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmspID0gMDsKIAotICB2b2lkIFNldFJl
Y2VpdmVDb2RlY3MoY29uc3Qgc3RkOjptYXA8aW50LCBTZHBBdWRpb0Zvcm1hdD4mIGNvZGVjcyk7
CisgIHZpcnR1YWwgdm9pZCBTZXRSZWNlaXZlQ29kZWNzKAorICAgICAgY29uc3Qgc3RkOjptYXA8
aW50LCBTZHBBdWRpb0Zvcm1hdD4mIGNvZGVjcykgPSAwOwogCi0gIC8vIEFQSSBtZXRob2RzCisg
IHZpcnR1YWwgdm9pZCBTdGFydFBsYXlvdXQoKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBTdG9wUGxh
eW91dCgpID0gMDsKIAotICAvLyBWb0VCYXNlCi0gIGludDMyX3QgU3RhcnRQbGF5b3V0KCk7Ci0g
IGludDMyX3QgU3RvcFBsYXlvdXQoKTsKKyAgdmlydHVhbCBib29sIEdldFJlY0NvZGVjKENvZGVj
SW5zdCogY29kZWMpIGNvbnN0ID0gMDsKIAotICAvLyBDb2RlY3MKLSAgaW50MzJfdCBHZXRSZWND
b2RlYyhDb2RlY0luc3QmIGNvZGVjKTsgIC8vIE5PTElOVAorICB2aXJ0dWFsIGJvb2wgUmVjZWl2
ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpID0gMDsKIAot
ICAvLyBUT0RPKG5pc3NlLCBzb2xlbmJlcmcpOiBEZWxldGUgd2hlbiBWb0VOZXR3b3JrIGlzIGRl
bGV0ZWQuCi0gIGludDMyX3QgUmVjZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgpOwotICB2b2lkIE9uUnRwUGFja2V0KGNvbnN0IFJ0cFBhY2tldFJlY2Vp
dmVkJiBwYWNrZXQpOwotCi0gIC8vIE11dGluZywgVm9sdW1lIGFuZCBMZXZlbC4KLSAgdm9pZCBT
ZXRDaGFubmVsT3V0cHV0Vm9sdW1lU2NhbGluZyhmbG9hdCBzY2FsaW5nKTsKLSAgaW50IEdldFNw
ZWVjaE91dHB1dExldmVsRnVsbFJhbmdlKCkgY29uc3Q7CisgIHZpcnR1YWwgdm9pZCBTZXRDaGFu
bmVsT3V0cHV0Vm9sdW1lU2NhbGluZyhmbG9hdCBzY2FsaW5nKSA9IDA7CisgIHZpcnR1YWwgaW50
IEdldFNwZWVjaE91dHB1dExldmVsRnVsbFJhbmdlKCkgY29uc3QgPSAwOwogICAvLyBTZWUgZGVz
Y3JpcHRpb24gb2YgInRvdGFsQXVkaW9FbmVyZ3kiIGluIHRoZSBXZWJSVEMgc3RhdHMgc3BlYzoK
ICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jZG9tLXJ0Y21lZGlhc3Ry
ZWFtdHJhY2tzdGF0cy10b3RhbGF1ZGlvZW5lcmd5Ci0gIGRvdWJsZSBHZXRUb3RhbE91dHB1dEVu
ZXJneSgpIGNvbnN0OwotICBkb3VibGUgR2V0VG90YWxPdXRwdXREdXJhdGlvbigpIGNvbnN0Owor
ICB2aXJ0dWFsIGRvdWJsZSBHZXRUb3RhbE91dHB1dEVuZXJneSgpIGNvbnN0ID0gMDsKKyAgdmly
dHVhbCBkb3VibGUgR2V0VG90YWxPdXRwdXREdXJhdGlvbigpIGNvbnN0ID0gMDsKIAogICAvLyBT
dGF0cy4KLSAgaW50IEdldE5ldHdvcmtTdGF0aXN0aWNzKE5ldHdvcmtTdGF0aXN0aWNzJiBzdGF0
cyk7ICAvLyBOT0xJTlQKLSAgdm9pZCBHZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKEF1ZGlvRGVj
b2RpbmdDYWxsU3RhdHMqIHN0YXRzKSBjb25zdDsKKyAgdmlydHVhbCBOZXR3b3JrU3RhdGlzdGlj
cyBHZXROZXR3b3JrU3RhdGlzdGljcygpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBBdWRpb0RlY29k
aW5nQ2FsbFN0YXRzIEdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoKSBjb25zdCA9IDA7CiAKICAg
Ly8gQXVkaW8rVmlkZW8gU3luYy4KLSAgdWludDMyX3QgR2V0RGVsYXlFc3RpbWF0ZSgpIGNvbnN0
OwotICBpbnQgU2V0TWluaW11bVBsYXlvdXREZWxheShpbnQgZGVsYXlNcyk7Ci0gIGludCBHZXRQ
bGF5b3V0VGltZXN0YW1wKHVuc2lnbmVkIGludCYgdGltZXN0YW1wKTsgIC8vIE5PTElOVAorICB2
aXJ0dWFsIHVpbnQzMl90IEdldERlbGF5RXN0aW1hdGUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwg
dm9pZCBTZXRNaW5pbXVtUGxheW91dERlbGF5KGludCBkZWxheV9tcykgPSAwOworICB2aXJ0dWFs
IHVpbnQzMl90IEdldFBsYXlvdXRUaW1lc3RhbXAoKSBjb25zdCA9IDA7CiAKICAgLy8gUHJvZHVj
ZXMgdGhlIHRyYW5zcG9ydC1yZWxhdGVkIHRpbWVzdGFtcHM7IGN1cnJlbnRfZGVsYXlfbXMgaXMg
bGVmdCB1bnNldC4KLSAgYWJzbDo6b3B0aW9uYWw8U3luY2FibGU6OkluZm8+IEdldFN5bmNJbmZv
KCkgY29uc3Q7CisgIHZpcnR1YWwgYWJzbDo6b3B0aW9uYWw8U3luY2FibGU6OkluZm8+IEdldFN5
bmNJbmZvKCkgY29uc3QgPSAwOwogCiAgIC8vIFJUUCtSVENQCi0gIGludCBTZXRMb2NhbFNTUkMo
dW5zaWduZWQgaW50IHNzcmMpOwotCi0gIHZvaWQgUmVnaXN0ZXJSZWNlaXZlckNvbmdlc3Rpb25D
b250cm9sT2JqZWN0cyhQYWNrZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXIpOwotICB2b2lkIFJlc2V0
UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKKyAgdmlydHVhbCB2b2lkIFNldExv
Y2FsU1NSQyh1aW50MzJfdCBzc3JjKSA9IDA7CiAKLSAgaW50IEdldFJUUFN0YXRpc3RpY3MoQ2Fs
bFJlY2VpdmVTdGF0aXN0aWNzJiBzdGF0cyk7ICAvLyBOT0xJTlQKLSAgdm9pZCBTZXROQUNLU3Rh
dHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4TnVtYmVyT2ZQYWNrZXRzKTsKKyAgdmlydHVhbCB2b2lk
IFJlZ2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCisgICAgICBQYWNrZXRS
b3V0ZXIqIHBhY2tldF9yb3V0ZXIpID0gMDsKKyAgdmlydHVhbCB2b2lkIFJlc2V0UmVjZWl2ZXJD
b25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSA9IDA7CiAKLSAgLy8gRnJvbSBSdHBEYXRhIGluIHRo
ZSBSVFAvUlRDUCBtb2R1bGUKLSAgaW50MzJfdCBPblJlY2VpdmVkUGF5bG9hZERhdGEoY29uc3Qg
dWludDhfdCogcGF5bG9hZERhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBwYXlsb2FkU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V2ViUnRjUlRQSGVhZGVyKiBydHBIZWFkZXIpIG92ZXJyaWRlOworICB2aXJ0dWFsIENhbGxSZWNl
aXZlU3RhdGlzdGljcyBHZXRSVENQU3RhdGlzdGljcygpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCB2
b2lkIFNldE5BQ0tTdGF0dXMoYm9vbCBlbmFibGUsIGludCBtYXhfcGFja2V0cykgPSAwOwogCi0g
IC8vIEZyb20gQXVkaW9NaXhlcjo6U291cmNlLgotICBBdWRpb01peGVyOjpTb3VyY2U6OkF1ZGlv
RnJhbWVJbmZvIEdldEF1ZGlvRnJhbWVXaXRoSW5mbygKKyAgdmlydHVhbCBBdWRpb01peGVyOjpT
b3VyY2U6OkF1ZGlvRnJhbWVJbmZvIEdldEF1ZGlvRnJhbWVXaXRoSW5mbygKICAgICAgIGludCBz
YW1wbGVfcmF0ZV9oeiwKLSAgICAgIEF1ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKTsKKyAgICAgIEF1
ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKSA9IDA7CiAKLSAgaW50IFByZWZlcnJlZFNhbXBsZVJhdGUo
KSBjb25zdDsKKyAgdmlydHVhbCBpbnQgUHJlZmVycmVkU2FtcGxlUmF0ZSgpIGNvbnN0ID0gMDsK
IAogICAvLyBBc3NvY2lhdGUgdG8gYSBzZW5kIGNoYW5uZWwuCiAgIC8vIFVzZWQgZm9yIG9idGFp
bmluZyBSVFQgZm9yIGEgcmVjZWl2ZS1vbmx5IGNoYW5uZWwuCi0gIHZvaWQgU2V0QXNzb2NpYXRl
ZFNlbmRDaGFubmVsKENoYW5uZWxTZW5kKiBjaGFubmVsKTsKLQotICBzdGQ6OnZlY3RvcjxSdHBT
b3VyY2U+IEdldFNvdXJjZXMoKSBjb25zdDsKLQotIHByaXZhdGU6Ci0gIHZvaWQgSW5pdCgpOwot
ICB2b2lkIFRlcm1pbmF0ZSgpOwotCi0gIGludCBHZXRSZW1vdGVTU1JDKHVuc2lnbmVkIGludCYg
c3NyYyk7ICAvLyBOT0xJTlQKLQotICBib29sIFJlY2VpdmVQYWNrZXQoY29uc3QgdWludDhfdCog
cGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhY2tldF9sZW5ndGgsCi0gICAg
ICAgICAgICAgICAgICAgICBjb25zdCBSVFBIZWFkZXImIGhlYWRlcik7Ci0gIGludCBSZXNlbmRQ
YWNrZXRzKGNvbnN0IHVpbnQxNl90KiBzZXF1ZW5jZV9udW1iZXJzLCBpbnQgbGVuZ3RoKTsKLSAg
dm9pZCBVcGRhdGVQbGF5b3V0VGltZXN0YW1wKGJvb2wgcnRjcCk7Ci0KLSAgaW50IEdldFJ0cFRp
bWVzdGFtcFJhdGVIeigpIGNvbnN0OwotICBpbnQ2NF90IEdldFJUVCgpIGNvbnN0OwotCi0gIHJ0
Yzo6Q3JpdGljYWxTZWN0aW9uIF9jYWxsYmFja0NyaXRTZWN0OwotICBydGM6OkNyaXRpY2FsU2Vj
dGlvbiB2b2x1bWVfc2V0dGluZ3NfY3JpdHNlY3RfOwotCi0gIENoYW5uZWxSZWNlaXZlU3RhdGUg
Y2hhbm5lbF9zdGF0ZV87Ci0KLSAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187CisgIHZp
cnR1YWwgdm9pZCBTZXRBc3NvY2lhdGVkU2VuZENoYW5uZWwoCisgICAgICBjb25zdCBDaGFubmVs
U2VuZEludGVyZmFjZSogY2hhbm5lbCkgPSAwOwogCi0gIC8vIEluZGV4ZWQgYnkgcGF5bG9hZCB0
eXBlLgotICBzdGQ6Om1hcDx1aW50OF90LCBpbnQ+IHBheWxvYWRfdHlwZV9mcmVxdWVuY2llc187
Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPFJlY2VpdmVTdGF0aXN0aWNzPiBydHBfcmVjZWl2ZV9zdGF0
aXN0aWNzXzsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFJ0Y3A+IF9ydHBSdGNwTW9kdWxlOwotICBj
b25zdCB1aW50MzJfdCByZW1vdGVfc3NyY187Ci0KLSAgLy8gSW5mbyBmb3IgR2V0U291cmNlcyBh
bmQgR2V0U3luY0luZm8gaXMgdXBkYXRlZCBvbiBuZXR3b3JrIG9yIHdvcmtlciB0aHJlYWQsCi0g
IC8vIHF1ZXJpZWQgb24gdGhlIHdvcmtlciB0aHJlYWQuCi0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9u
IHJ0cF9zb3VyY2VzX2xvY2tfOwotICBDb250cmlidXRpbmdTb3VyY2VzIGNvbnRyaWJ1dGluZ19z
b3VyY2VzXyBSVENfR1VBUkRFRF9CWSgmcnRwX3NvdXJjZXNfbG9ja18pOwotICBhYnNsOjpvcHRp
b25hbDx1aW50MzJfdD4gbGFzdF9yZWNlaXZlZF9ydHBfdGltZXN0YW1wXwotICAgICAgUlRDX0dV
QVJERURfQlkoJnJ0cF9zb3VyY2VzX2xvY2tfKTsKLSAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4g
bGFzdF9yZWNlaXZlZF9ydHBfc3lzdGVtX3RpbWVfbXNfCi0gICAgICBSVENfR1VBUkRFRF9CWSgm
cnRwX3NvdXJjZXNfbG9ja18pOwotICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBsYXN0X3JlY2Vp
dmVkX3J0cF9hdWRpb19sZXZlbF8KLSAgICAgIFJUQ19HVUFSREVEX0JZKCZydHBfc291cmNlc19s
b2NrXyk7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQ29kaW5nTW9kdWxlPiBhdWRpb19jb2Rp
bmdfOwotICBBdWRpb1NpbmtJbnRlcmZhY2UqIGF1ZGlvX3NpbmtfID0gbnVsbHB0cjsKLSAgQXVk
aW9MZXZlbCBfb3V0cHV0QXVkaW9MZXZlbDsKLQotICBSZW1vdGVOdHBUaW1lRXN0aW1hdG9yIG50
cF9lc3RpbWF0b3JfIFJUQ19HVUFSREVEX0JZKHRzX3N0YXRzX2xvY2tfKTsKLQotICAvLyBUaW1l
c3RhbXAgb2YgdGhlIGF1ZGlvIHB1bGxlZCBmcm9tIE5ldEVxLgotICBhYnNsOjpvcHRpb25hbDx1
aW50MzJfdD4gaml0dGVyX2J1ZmZlcl9wbGF5b3V0X3RpbWVzdGFtcF87Ci0KLSAgcnRjOjpDcml0
aWNhbFNlY3Rpb24gdmlkZW9fc3luY19sb2NrXzsKLSAgdWludDMyX3QgcGxheW91dF90aW1lc3Rh
bXBfcnRwXyBSVENfR1VBUkRFRF9CWSh2aWRlb19zeW5jX2xvY2tfKTsKLSAgdWludDMyX3QgcGxh
eW91dF9kZWxheV9tc18gUlRDX0dVQVJERURfQlkodmlkZW9fc3luY19sb2NrXyk7Ci0KLSAgcnRj
OjpDcml0aWNhbFNlY3Rpb24gdHNfc3RhdHNfbG9ja187Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPHJ0
Yzo6VGltZXN0YW1wV3JhcEFyb3VuZEhhbmRsZXI+IHJ0cF90c193cmFwYXJvdW5kX2hhbmRsZXJf
OwotICAvLyBUaGUgcnRwIHRpbWVzdGFtcCBvZiB0aGUgZmlyc3QgcGxheWVkIG91dCBhdWRpbyBm
cmFtZS4KLSAgaW50NjRfdCBjYXB0dXJlX3N0YXJ0X3J0cF90aW1lX3N0YW1wXzsKLSAgLy8gVGhl
IGNhcHR1cmUgbnRwIHRpbWUgKGluIGxvY2FsIHRpbWViYXNlKSBvZiB0aGUgZmlyc3QgcGxheWVk
IG91dCBhdWRpbwotICAvLyBmcmFtZS4KLSAgaW50NjRfdCBjYXB0dXJlX3N0YXJ0X250cF90aW1l
X21zXyBSVENfR1VBUkRFRF9CWSh0c19zdGF0c19sb2NrXyk7Ci0KLSAgLy8gdXNlcwotICBQcm9j
ZXNzVGhyZWFkKiBfbW9kdWxlUHJvY2Vzc1RocmVhZFB0cjsKLSAgQXVkaW9EZXZpY2VNb2R1bGUq
IF9hdWRpb0RldmljZU1vZHVsZVB0cjsKLSAgZmxvYXQgX291dHB1dEdhaW4gUlRDX0dVQVJERURf
Qlkodm9sdW1lX3NldHRpbmdzX2NyaXRzZWN0Xyk7Ci0KLSAgLy8gQW4gYXNzb2NpYXRlZCBzZW5k
IGNoYW5uZWwuCi0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGFzc29jX3NlbmRfY2hhbm5lbF9sb2Nr
XzsKLSAgQ2hhbm5lbFNlbmQqIGFzc29jaWF0ZWRfc2VuZF9jaGFubmVsXwotICAgICAgUlRDX0dV
QVJERURfQlkoYXNzb2Nfc2VuZF9jaGFubmVsX2xvY2tfKTsKLQotICBQYWNrZXRSb3V0ZXIqIHBh
Y2tldF9yb3V0ZXJfID0gbnVsbHB0cjsKLQotICBydGM6OlRocmVhZENoZWNrZXIgY29uc3RydWN0
aW9uX3RocmVhZF87Ci0KLSAgLy8gRTJFRSBBdWRpbyBGcmFtZSBEZWNyeXB0aW9uCi0gIEZyYW1l
RGVjcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9kZWNyeXB0b3JfID0gbnVsbHB0cjsKKyAgdmlydHVh
bCBzdGQ6OnZlY3RvcjxSdHBTb3VyY2U+IEdldFNvdXJjZXMoKSBjb25zdCA9IDA7CiB9OwogCitz
dGQ6OnVuaXF1ZV9wdHI8Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2U+IENyZWF0ZUNoYW5uZWxSZWNl
aXZlKAorICAgIFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKKyAgICBBdWRp
b0RldmljZU1vZHVsZSogYXVkaW9fZGV2aWNlX21vZHVsZSwKKyAgICBNZWRpYVRyYW5zcG9ydElu
dGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0LAorICAgIFRyYW5zcG9ydCogcnRjcF9zZW5kX3RyYW5z
cG9ydCwKKyAgICBSdGNFdmVudExvZyogcnRjX2V2ZW50X2xvZywKKyAgICB1aW50MzJfdCByZW1v
dGVfc3NyYywKKyAgICBzaXplX3Qgaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cywKKyAgICBib29s
IGppdHRlcl9idWZmZXJfZmFzdF9wbGF5b3V0LAorICAgIGludCBqaXR0ZXJfYnVmZmVyX21pbl9k
ZWxheV9tcywKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gZGVj
b2Rlcl9mYWN0b3J5LAorICAgIGFic2w6Om9wdGlvbmFsPEF1ZGlvQ29kZWNQYWlySWQ+IGNvZGVj
X3BhaXJfaWQsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNl
PiBmcmFtZV9kZWNyeXB0b3IsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlw
dG9fb3B0aW9ucyk7CisKIH0gIC8vIG5hbWVzcGFjZSB2b2UKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWMxYzQ1ODMyNmFjOWFkOTJmMmU1OTM4M2YwNDEz
N2M4OWM2Mjk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxf
cmVjZWl2ZV9wcm94eS5jYworKysgL2Rldi9udWxsCkBAIC0xLDE5NyArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAoYykgMjAxNSBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfcmVjZWl2ZV9wcm94eS5o
IgotCi0jaW5jbHVkZSA8dXRpbGl0eT4KLQotI2luY2x1ZGUgImFwaS9jYWxsL2F1ZGlvX3Npbmsu
aCIKLSNpbmNsdWRlICJhdWRpby9jaGFubmVsX3NlbmRfcHJveHkuaCIKLSNpbmNsdWRlICJjYWxs
L3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsK
LW5hbWVzcGFjZSB2b2UgewotQ2hhbm5lbFJlY2VpdmVQcm94eTo6Q2hhbm5lbFJlY2VpdmVQcm94
eSgpIHt9Ci0KLUNoYW5uZWxSZWNlaXZlUHJveHk6OkNoYW5uZWxSZWNlaXZlUHJveHkoCi0gICAg
c3RkOjp1bmlxdWVfcHRyPENoYW5uZWxSZWNlaXZlPiBjaGFubmVsKQotICAgIDogY2hhbm5lbF8o
c3RkOjptb3ZlKGNoYW5uZWwpKSB7Ci0gIFJUQ19EQ0hFQ0soY2hhbm5lbF8pOwotICBtb2R1bGVf
cHJvY2Vzc190aHJlYWRfY2hlY2tlcl8uRGV0YWNoRnJvbVRocmVhZCgpOwotfQotCi1DaGFubmVs
UmVjZWl2ZVByb3h5Ojp+Q2hhbm5lbFJlY2VpdmVQcm94eSgpIHt9Ci0KLXZvaWQgQ2hhbm5lbFJl
Y2VpdmVQcm94eTo6U2V0TG9jYWxTU1JDKHVpbnQzMl90IHNzcmMpIHsKLSAgUlRDX0RDSEVDSyh3
b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGludCBlcnJv
ciA9IGNoYW5uZWxfLT5TZXRMb2NhbFNTUkMoc3NyYyk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwgZXJy
b3IpOwotfQotCi12b2lkIENoYW5uZWxSZWNlaXZlUHJveHk6OlNldE5BQ0tTdGF0dXMoYm9vbCBl
bmFibGUsIGludCBtYXhfcGFja2V0cykgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hl
Y2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlNldE5BQ0tTdGF0dXMo
ZW5hYmxlLCBtYXhfcGFja2V0cyk7Ci19Ci0KLUNhbGxSZWNlaXZlU3RhdGlzdGljcyBDaGFubmVs
UmVjZWl2ZVByb3h5OjpHZXRSVENQU3RhdGlzdGljcygpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyh3
b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIENhbGxSZWNl
aXZlU3RhdGlzdGljcyBzdGF0cyA9IHswfTsKLSAgaW50IGVycm9yID0gY2hhbm5lbF8tPkdldFJU
UFN0YXRpc3RpY3Moc3RhdHMpOwotICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKLSAgcmV0dXJu
IHN0YXRzOwotfQotCi1ib29sIENoYW5uZWxSZWNlaXZlUHJveHk6OlJlY2VpdmVkUlRDUFBhY2tl
dChjb25zdCB1aW50OF90KiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoKSB7Ci0gIC8vIE1heSBiZSBjYWxsZWQgb24gZWl0
aGVyIHdvcmtlciB0aHJlYWQgb3IgbmV0d29yayB0aHJlYWQuCi0gIHJldHVybiBjaGFubmVsXy0+
UmVjZWl2ZWRSVENQUGFja2V0KHBhY2tldCwgbGVuZ3RoKSA9PSAwOwotfQotCi12b2lkIENoYW5u
ZWxSZWNlaXZlUHJveHk6OlJlZ2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMo
Ci0gICAgUGFja2V0Um91dGVyKiBwYWNrZXRfcm91dGVyKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2Vy
X3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+UmVn
aXN0ZXJSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cyhwYWNrZXRfcm91dGVyKTsKLX0K
LQotdm9pZCBDaGFubmVsUmVjZWl2ZVByb3h5OjpSZXNldFJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRy
b2xPYmplY3RzKCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVk
T25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlJlc2V0UmVjZWl2ZXJDb25nZXN0aW9uQ29u
dHJvbE9iamVjdHMoKTsKLX0KLQotTmV0d29ya1N0YXRpc3RpY3MgQ2hhbm5lbFJlY2VpdmVQcm94
eTo6R2V0TmV0d29ya1N0YXRpc3RpY3MoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3Ro
cmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBOZXR3b3JrU3RhdGlzdGlj
cyBzdGF0cyA9IHswfTsKLSAgaW50IGVycm9yID0gY2hhbm5lbF8tPkdldE5ldHdvcmtTdGF0aXN0
aWNzKHN0YXRzKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Ci0gIHJldHVybiBzdGF0czsK
LX0KLQotQXVkaW9EZWNvZGluZ0NhbGxTdGF0cyBDaGFubmVsUmVjZWl2ZVByb3h5OjpHZXREZWNv
ZGluZ0NhbGxTdGF0aXN0aWNzKCkgY29uc3QgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRf
Y2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgQXVkaW9EZWNvZGluZ0NhbGxTdGF0
cyBzdGF0czsKLSAgY2hhbm5lbF8tPkdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoJnN0YXRzKTsK
LSAgcmV0dXJuIHN0YXRzOwotfQotCi1pbnQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6R2V0U3BlZWNo
T3V0cHV0TGV2ZWxGdWxsUmFuZ2UoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVh
ZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF8tPkdl
dFNwZWVjaE91dHB1dExldmVsRnVsbFJhbmdlKCk7Ci19Ci0KLWRvdWJsZSBDaGFubmVsUmVjZWl2
ZVByb3h5OjpHZXRUb3RhbE91dHB1dEVuZXJneSgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyh3b3Jr
ZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHJldHVybiBjaGFu
bmVsXy0+R2V0VG90YWxPdXRwdXRFbmVyZ3koKTsKLX0KLQotZG91YmxlIENoYW5uZWxSZWNlaXZl
UHJveHk6OkdldFRvdGFsT3V0cHV0RHVyYXRpb24oKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29y
a2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hh
bm5lbF8tPkdldFRvdGFsT3V0cHV0RHVyYXRpb24oKTsKLX0KLQotdWludDMyX3QgQ2hhbm5lbFJl
Y2VpdmVQcm94eTo6R2V0RGVsYXlFc3RpbWF0ZSgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyh3b3Jr
ZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSB8fAotICAgICAgICAgICAg
IG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwot
ICByZXR1cm4gY2hhbm5lbF8tPkdldERlbGF5RXN0aW1hdGUoKTsKLX0KLQotdm9pZCBDaGFubmVs
UmVjZWl2ZVByb3h5OjpTZXRSZWNlaXZlQ29kZWNzKAotICAgIGNvbnN0IHN0ZDo6bWFwPGludCwg
U2RwQXVkaW9Gb3JtYXQ+JiBjb2RlY3MpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2No
ZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRSZWNlaXZlQ29k
ZWNzKGNvZGVjcyk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6U2V0U2luayhBdWRp
b1NpbmtJbnRlcmZhY2UqIHNpbmspIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNr
ZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRTaW5rKHNpbmspOwot
fQotCi12b2lkIENoYW5uZWxSZWNlaXZlUHJveHk6Ok9uUnRwUGFja2V0KGNvbnN0IFJ0cFBhY2tl
dFJlY2VpdmVkJiBwYWNrZXQpIHsKLSAgLy8gTWF5IGJlIGNhbGxlZCBvbiBlaXRoZXIgd29ya2Vy
IHRocmVhZCBvciBuZXR3b3JrIHRocmVhZC4KLSAgY2hhbm5lbF8tPk9uUnRwUGFja2V0KHBhY2tl
dCk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6U2V0Q2hhbm5lbE91dHB1dFZvbHVt
ZVNjYWxpbmcoZmxvYXQgc2NhbGluZykgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hl
Y2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlNldENoYW5uZWxPdXRw
dXRWb2x1bWVTY2FsaW5nKHNjYWxpbmcpOwotfQotCi1BdWRpb01peGVyOjpTb3VyY2U6OkF1ZGlv
RnJhbWVJbmZvIENoYW5uZWxSZWNlaXZlUHJveHk6OkdldEF1ZGlvRnJhbWVXaXRoSW5mbygKLSAg
ICBpbnQgc2FtcGxlX3JhdGVfaHosCi0gICAgQXVkaW9GcmFtZSogYXVkaW9fZnJhbWUpIHsKLSAg
UlRDX0RDSEVDS19SVU5TX1NFUklBTElaRUQoJmF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfKTsK
LSAgcmV0dXJuIGNoYW5uZWxfLT5HZXRBdWRpb0ZyYW1lV2l0aEluZm8oc2FtcGxlX3JhdGVfaHos
IGF1ZGlvX2ZyYW1lKTsKLX0KLQotaW50IENoYW5uZWxSZWNlaXZlUHJveHk6OlByZWZlcnJlZFNh
bXBsZVJhdGUoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0tfUlVOU19TRVJJQUxJWkVEKCZhdWRpb190
aHJlYWRfcmFjZV9jaGVja2VyXyk7Ci0gIHJldHVybiBjaGFubmVsXy0+UHJlZmVycmVkU2FtcGxl
UmF0ZSgpOwotfQotCi12b2lkIENoYW5uZWxSZWNlaXZlUHJveHk6OkFzc29jaWF0ZVNlbmRDaGFu
bmVsKAotICAgIGNvbnN0IENoYW5uZWxTZW5kUHJveHkmIHNlbmRfY2hhbm5lbF9wcm94eSkgewot
ICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgp
KTsKLSAgY2hhbm5lbF8tPlNldEFzc29jaWF0ZWRTZW5kQ2hhbm5lbChzZW5kX2NoYW5uZWxfcHJv
eHkuR2V0Q2hhbm5lbCgpKTsKLX0KLQotdm9pZCBDaGFubmVsUmVjZWl2ZVByb3h5OjpEaXNhc3Nv
Y2lhdGVTZW5kQ2hhbm5lbCgpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJf
LkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRBc3NvY2lhdGVkU2VuZENo
YW5uZWwobnVsbHB0cik7Ci19Ci0KLWFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBDaGFu
bmVsUmVjZWl2ZVByb3h5OjpHZXRTeW5jSW5mbygpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyhtb2R1
bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgcmV0
dXJuIGNoYW5uZWxfLT5HZXRTeW5jSW5mbygpOwotfQotCi11aW50MzJfdCBDaGFubmVsUmVjZWl2
ZVByb3h5OjpHZXRQbGF5b3V0VGltZXN0YW1wKCkgY29uc3QgewotICBSVENfRENIRUNLX1JVTlNf
U0VSSUFMSVpFRCgmdmlkZW9fY2FwdHVyZV90aHJlYWRfcmFjZV9jaGVja2VyXyk7Ci0gIHVuc2ln
bmVkIGludCB0aW1lc3RhbXAgPSAwOwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+R2V0UGxheW91
dFRpbWVzdGFtcCh0aW1lc3RhbXApOwotICBSVENfRENIRUNLKCFlcnJvciB8fCB0aW1lc3RhbXAg
PT0gMCk7Ci0gIHJldHVybiB0aW1lc3RhbXA7Ci19Ci0KLXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94
eTo6U2V0TWluaW11bVBsYXlvdXREZWxheShpbnQgZGVsYXlfbXMpIHsKLSAgUlRDX0RDSEVDSyht
b2R1bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAg
Ly8gTGltaXQgdG8gcmFuZ2UgYWNjZXB0ZWQgYnkgYm90aCBWb0UgYW5kIEFDTSwgc28gd2UncmUg
YXQgbGVhc3QgZ2V0dGluZyBhcwotICAvLyBjbG9zZSBhcyBwb3NzaWJsZSwgaW5zdGVhZCBvZiBm
YWlsaW5nLgotICBkZWxheV9tcyA9IHJ0Yzo6U2FmZUNsYW1wKGRlbGF5X21zLCAwLCAxMDAwMCk7
Ci0gIGludCBlcnJvciA9IGNoYW5uZWxfLT5TZXRNaW5pbXVtUGxheW91dERlbGF5KGRlbGF5X21z
KTsKLSAgaWYgKDAgIT0gZXJyb3IpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJFcnJv
ciBzZXR0aW5nIG1pbmltdW0gcGxheW91dCBkZWxheS4iOwotICB9Ci19Ci0KLWJvb2wgQ2hhbm5l
bFJlY2VpdmVQcm94eTo6R2V0UmVjQ29kZWMoQ29kZWNJbnN0KiBjb2RlY19pbnN0KSBjb25zdCB7
Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFk
KCkpOwotICByZXR1cm4gY2hhbm5lbF8tPkdldFJlY0NvZGVjKCpjb2RlY19pbnN0KSA9PSAwOwot
fQotCi1zdGQ6OnZlY3RvcjxSdHBTb3VyY2U+IENoYW5uZWxSZWNlaXZlUHJveHk6OkdldFNvdXJj
ZXMoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRP
blZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF8tPkdldFNvdXJjZXMoKTsKLX0KLQot
dm9pZCBDaGFubmVsUmVjZWl2ZVByb3h5OjpTdGFydFBsYXlvdXQoKSB7Ci0gIFJUQ19EQ0hFQ0so
d29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBpbnQgZXJy
b3IgPSBjaGFubmVsXy0+U3RhcnRQbGF5b3V0KCk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3Ip
OwotfQotCi12b2lkIENoYW5uZWxSZWNlaXZlUHJveHk6OlN0b3BQbGF5b3V0KCkgewotICBSVENf
RENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAg
aW50IGVycm9yID0gY2hhbm5lbF8tPlN0b3BQbGF5b3V0KCk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwg
ZXJyb3IpOwotfQotfSAgLy8gbmFtZXNwYWNlIHZvZQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVk
aW8vY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3JlY2VpdmVfcHJveHkuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOGViYWNjMzAwZGNmZTNhNzI1ZTljOTQwOTAzZmQwOGI5ZGZiNzU1
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3JlY2VpdmVf
cHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogIENvcHlyaWdo
dCAoYykgMjAxNSBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
Ci0gKi8KLQotI2lmbmRlZiBBVURJT19DSEFOTkVMX1JFQ0VJVkVfUFJPWFlfSF8KLSNkZWZpbmUg
QVVESU9fQ0hBTk5FTF9SRUNFSVZFX1BST1hZX0hfCi0KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVk
ZSA8bWVtb3J5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImFwaS9hdWRpby9hdWRp
b19taXhlci5oIgotI2luY2x1ZGUgImFwaS9ydHByZWNlaXZlcmludGVyZmFjZS5oIgotI2luY2x1
ZGUgImF1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5oIgotI2luY2x1ZGUgImNhbGwvcnRwX3BhY2tldF9z
aW5rX2ludGVyZmFjZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9yYWNlX2NoZWNrZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90
aHJlYWRfY2hlY2tlci5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotY2xhc3MgQXVkaW9TaW5r
SW50ZXJmYWNlOwotY2xhc3MgUGFja2V0Um91dGVyOwotY2xhc3MgUnRwUGFja2V0UmVjZWl2ZWQ7
Ci1jbGFzcyBUcmFuc3BvcnQ7Ci0KLW5hbWVzcGFjZSB2b2UgewotCi1jbGFzcyBDaGFubmVsU2Vu
ZFByb3h5OwotCi0vLyBUaGlzIGNsYXNzIHByb3ZpZGVzIHRoZSAidmlldyIgb2YgYSB2b2U6OkNo
YW5uZWwgdGhhdCB3ZSBuZWVkIHRvIGltcGxlbWVudAotLy8gd2VicnRjOjpBdWRpb1JlY2VpdmVT
dHJlYW0uIEl0IHNlcnZlcyB0d28gcHVycG9zZXM6Ci0vLyAgMS4gQWxsb3cgbW9ja2luZyBqdXN0
IHRoZSBpbnRlcmZhY2VzIHVzZWQsIGluc3RlYWQgb2YgdGhlIGVudGlyZQotLy8gICAgIHZvZTo6
Q2hhbm5lbCBjbGFzcy4KLS8vICAyLiBQcm92aWRlIGEgcmVmaW5lZCBpbnRlcmZhY2UgZm9yIHRo
ZSBzdHJlYW0gY2xhc3NlcywgaW5jbHVkaW5nIGFzc3VtcHRpb25zCi0vLyAgICAgb24gcmV0dXJu
IHZhbHVlcyBhbmQgaW5wdXQgYWRhcHRhdGlvbi4KLWNsYXNzIENoYW5uZWxSZWNlaXZlUHJveHkg
OiBwdWJsaWMgUnRwUGFja2V0U2lua0ludGVyZmFjZSB7Ci0gcHVibGljOgotICBDaGFubmVsUmVj
ZWl2ZVByb3h5KCk7Ci0gIGV4cGxpY2l0IENoYW5uZWxSZWNlaXZlUHJveHkoc3RkOjp1bmlxdWVf
cHRyPENoYW5uZWxSZWNlaXZlPiBjaGFubmVsKTsKLSAgdmlydHVhbCB+Q2hhbm5lbFJlY2VpdmVQ
cm94eSgpOwotCi0gIC8vIFNoYXJlZCB3aXRoIENoYW5uZWxTZW5kUHJveHkKLSAgdmlydHVhbCB2
b2lkIFNldExvY2FsU1NSQyh1aW50MzJfdCBzc3JjKTsKLSAgdmlydHVhbCB2b2lkIFNldE5BQ0tT
dGF0dXMoYm9vbCBlbmFibGUsIGludCBtYXhfcGFja2V0cyk7Ci0gIHZpcnR1YWwgQ2FsbFJlY2Vp
dmVTdGF0aXN0aWNzIEdldFJUQ1BTdGF0aXN0aWNzKCkgY29uc3Q7Ci0gIHZpcnR1YWwgYm9vbCBS
ZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKTsK
LQotICB2aXJ0dWFsIHZvaWQgUmVnaXN0ZXJSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0
cygKLSAgICAgIFBhY2tldFJvdXRlciogcGFja2V0X3JvdXRlcik7Ci0gIHZpcnR1YWwgdm9pZCBS
ZXNldFJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCk7Ci0gIHZpcnR1YWwgTmV0d29y
a1N0YXRpc3RpY3MgR2V0TmV0d29ya1N0YXRpc3RpY3MoKSBjb25zdDsKLSAgdmlydHVhbCBBdWRp
b0RlY29kaW5nQ2FsbFN0YXRzIEdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoKSBjb25zdDsKLSAg
dmlydHVhbCBpbnQgR2V0U3BlZWNoT3V0cHV0TGV2ZWxGdWxsUmFuZ2UoKSBjb25zdDsKLSAgLy8g
U2VlIGRlc2NyaXB0aW9uIG9mICJ0b3RhbEF1ZGlvRW5lcmd5IiBpbiB0aGUgV2ViUlRDIHN0YXRz
IHNwZWM6Ci0gIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtc3RhdHMvI2RvbS1ydGNt
ZWRpYXN0cmVhbXRyYWNrc3RhdHMtdG90YWxhdWRpb2VuZXJneQotICB2aXJ0dWFsIGRvdWJsZSBH
ZXRUb3RhbE91dHB1dEVuZXJneSgpIGNvbnN0OwotICB2aXJ0dWFsIGRvdWJsZSBHZXRUb3RhbE91
dHB1dER1cmF0aW9uKCkgY29uc3Q7Ci0gIHZpcnR1YWwgdWludDMyX3QgR2V0RGVsYXlFc3RpbWF0
ZSgpIGNvbnN0OwotICB2aXJ0dWFsIHZvaWQgU2V0UmVjZWl2ZUNvZGVjcyhjb25zdCBzdGQ6Om1h
cDxpbnQsIFNkcEF1ZGlvRm9ybWF0PiYgY29kZWNzKTsKLSAgdmlydHVhbCB2b2lkIFNldFNpbmso
QXVkaW9TaW5rSW50ZXJmYWNlKiBzaW5rKTsKLQotICAvLyBJbXBsZW1lbnRzIFJ0cFBhY2tldFNp
bmtJbnRlcmZhY2UKLSAgdm9pZCBPblJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYg
cGFja2V0KSBvdmVycmlkZTsKLQotICB2aXJ0dWFsIHZvaWQgU2V0Q2hhbm5lbE91dHB1dFZvbHVt
ZVNjYWxpbmcoZmxvYXQgc2NhbGluZyk7Ci0gIHZpcnR1YWwgQXVkaW9NaXhlcjo6U291cmNlOjpB
dWRpb0ZyYW1lSW5mbyBHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCi0gICAgICBpbnQgc2FtcGxlX3Jh
dGVfaHosCi0gICAgICBBdWRpb0ZyYW1lKiBhdWRpb19mcmFtZSk7Ci0gIHZpcnR1YWwgaW50IFBy
ZWZlcnJlZFNhbXBsZVJhdGUoKSBjb25zdDsKLSAgdmlydHVhbCB2b2lkIEFzc29jaWF0ZVNlbmRD
aGFubmVsKGNvbnN0IENoYW5uZWxTZW5kUHJveHkmIHNlbmRfY2hhbm5lbF9wcm94eSk7Ci0gIHZp
cnR1YWwgdm9pZCBEaXNhc3NvY2lhdGVTZW5kQ2hhbm5lbCgpOwotCi0gIC8vIFByb2R1Y2VzIHRo
ZSB0cmFuc3BvcnQtcmVsYXRlZCB0aW1lc3RhbXBzOyBjdXJyZW50X2RlbGF5X21zIGlzIGxlZnQg
dW5zZXQuCi0gIGFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBHZXRTeW5jSW5mbygpIGNv
bnN0OwotICB2aXJ0dWFsIHVpbnQzMl90IEdldFBsYXlvdXRUaW1lc3RhbXAoKSBjb25zdDsKLSAg
dmlydHVhbCB2b2lkIFNldE1pbmltdW1QbGF5b3V0RGVsYXkoaW50IGRlbGF5X21zKTsKLSAgdmly
dHVhbCBib29sIEdldFJlY0NvZGVjKENvZGVjSW5zdCogY29kZWNfaW5zdCkgY29uc3Q7Ci0gIHZp
cnR1YWwgc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+IEdldFNvdXJjZXMoKSBjb25zdDsK
LSAgdmlydHVhbCB2b2lkIFN0YXJ0UGxheW91dCgpOwotICB2aXJ0dWFsIHZvaWQgU3RvcFBsYXlv
dXQoKTsKLQotIHByaXZhdGU6Ci0gIC8vIFRocmVhZCBjaGVja2VycyBkb2N1bWVudCBhbmQgbG9j
ayB1c2FnZSBvZiBzb21lIG1ldGhvZHMgb24gdm9lOjpDaGFubmVsIHRvCi0gIC8vIHNwZWNpZmlj
IHRocmVhZHMgd2Uga25vdyBhYm91dC4gVGhlIGdvYWwgaXMgdG8gZXZlbnR1YWxseSBzcGxpdCB1
cAotICAvLyB2b2U6OkNoYW5uZWwgaW50byBwYXJ0cyB3aXRoIHNpbmdsZS10aHJlYWRlZCBzZW1h
bnRpY3MsIGFuZCB0aGVyZWJ5IHJlZHVjZQotICAvLyB0aGUgbmVlZCBmb3IgbG9ja3MuCi0gIHJ0
Yzo6VGhyZWFkQ2hlY2tlciB3b3JrZXJfdGhyZWFkX2NoZWNrZXJfOwotICBydGM6OlRocmVhZENo
ZWNrZXIgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfOwotICAvLyBNZXRob2RzIGFjY2Vz
c2VkIGZyb20gYXVkaW8gYW5kIHZpZGVvIHRocmVhZHMgYXJlIGNoZWNrZWQgZm9yIHNlcXVlbnRp
YWwtCi0gIC8vIG9ubHkgYWNjZXNzLiBXZSBkb24ndCBuZWNlc3NhcmlseSBvd24gYW5kIGNvbnRy
b2wgdGhlc2UgdGhyZWFkcywgc28gdGhyZWFkCi0gIC8vIGNoZWNrZXJzIGNhbm5vdCBiZSB1c2Vk
LiBFLmcuIENocm9taXVtIG1heSB0cmFuc2ZlciAib3duZXJzaGlwIiBmcm9tIG9uZQotICAvLyBh
dWRpbyB0aHJlYWQgdG8gYW5vdGhlciwgYnV0IGFjY2VzcyBpcyBzdGlsbCBzZXF1ZW50aWFsLgot
ICBydGM6OlJhY2VDaGVja2VyIGF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfOwotICBydGM6OlJh
Y2VDaGVja2VyIHZpZGVvX2NhcHR1cmVfdGhyZWFkX3JhY2VfY2hlY2tlcl87Ci0gIHN0ZDo6dW5p
cXVlX3B0cjxDaGFubmVsUmVjZWl2ZT4gY2hhbm5lbF87Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihDaGFubmVsUmVjZWl2ZVByb3h5KTsKLX07Ci19ICAvLyBuYW1lc3BhY2Ugdm9l
Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVVESU9fQ0hBTk5FTF9SRUNF
SVZFX1BST1hZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmQuY2MKaW5kZXggZDM3NDhiMzk5
MDlhNDkzZTMyYWQyMTk2ZGY5MjY2NDRhYTg1MmI5OC4uYzQ1OGZlNDY1YjA3MDgwZDRmMTI2MzJi
ODFmODE3YjYyYTNkMTQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9zZW5kLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2VuZC5jYwpAQCAtMTks
MTkgKzE5LDI1IEBACiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRl
ICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgogI2lu
Y2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJh
dWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJjYWxsL3J0
cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImxvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3BsYXlvdXQuaCIKICNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25l
dHdvcmtfYWRhcHRvcl9jb25maWcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9p
bmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3Npbmcvcm1zX2xldmVsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9wYWNpbmcvcGFja2V0X3Jv
dXRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3NfdGhyZWFk
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3Jp
dGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJp
Y3Mvc2FmZV9jb252ZXJzaW9ucy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3JhY2VfY2hlY2tlci5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhdGVfbGltaXRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3Rhc2tfcXVldWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgpAQCAt
NDcsNyArNTMsMjU5IEBAIG5hbWVzcGFjZSB7CiBjb25zdGV4cHIgaW50NjRfdCBrTWF4UmV0cmFu
c21pc3Npb25XaW5kb3dNcyA9IDEwMDA7CiBjb25zdGV4cHIgaW50NjRfdCBrTWluUmV0cmFuc21p
c3Npb25XaW5kb3dNcyA9IDMwOwogCi19ICAvLyBuYW1lc3BhY2UKK01lZGlhVHJhbnNwb3J0RW5j
b2RlZEF1ZGlvRnJhbWU6OkZyYW1lVHlwZQorTWVkaWFUcmFuc3BvcnRGcmFtZVR5cGVGb3JXZWJy
dGNGcmFtZVR5cGUod2VicnRjOjpGcmFtZVR5cGUgZnJhbWVfdHlwZSkgeworICBzd2l0Y2ggKGZy
YW1lX3R5cGUpIHsKKyAgICBjYXNlIGtBdWRpb0ZyYW1lU3BlZWNoOgorICAgICAgcmV0dXJuIE1l
ZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6OkZyYW1lVHlwZTo6a1NwZWVjaDsKKyAgICAg
IGJyZWFrOworCisgICAgY2FzZSBrQXVkaW9GcmFtZUNOOgorICAgICAgcmV0dXJuIE1lZGlhVHJh
bnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6OkZyYW1lVHlwZTo6CisgICAgICAgICAga0Rpc2NvbnRp
bnVvdXNUcmFuc21pc3Npb247CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBS
VENfQ0hFQ0soZmFsc2UpIDw8ICJVbmV4cGVjdGVkIGZyYW1lIHR5cGU9IiA8PCBmcmFtZV90eXBl
OworICAgICAgYnJlYWs7CisgIH0KK30KKworY2xhc3MgUnRwUGFja2V0U2VuZGVyUHJveHk7Citj
bGFzcyBUcmFuc3BvcnRGZWVkYmFja1Byb3h5OworY2xhc3MgVHJhbnNwb3J0U2VxdWVuY2VOdW1i
ZXJQcm94eTsKK2NsYXNzIFZvRVJ0Y3BPYnNlcnZlcjsKKworY2xhc3MgQ2hhbm5lbFNlbmQKKyAg
ICA6IHB1YmxpYyBDaGFubmVsU2VuZEludGVyZmFjZSwKKyAgICAgIHB1YmxpYyBUcmFuc3BvcnQs
CisgICAgICBwdWJsaWMgT3ZlcmhlYWRPYnNlcnZlciwKKyAgICAgIHB1YmxpYyBBdWRpb1BhY2tl
dGl6YXRpb25DYWxsYmFjaywgIC8vIHJlY2VpdmUgZW5jb2RlZCBwYWNrZXRzIGZyb20gdGhlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBQ00KKyAgICAgIHB1
YmxpYyBUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlciB7CisgcHVibGljOgorICAvLyBUT0RPKG5p
c3NlKTogTWFrZSBPblVwbGlua1BhY2tldExvc3NSYXRlIHB1YmxpYywgYW5kIGRlbGV0ZSBmcmll
bmQKKyAgLy8gZGVjbGFyYXRpb24uCisgIGZyaWVuZCBjbGFzcyBWb0VSdGNwT2JzZXJ2ZXI7CisK
KyAgQ2hhbm5lbFNlbmQocnRjOjpUYXNrUXVldWUqIGVuY29kZXJfcXVldWUsCisgICAgICAgICAg
ICAgIFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKKyAgICAgICAgICAgICAg
TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCwKKyAgICAgICAgICAgICAg
VHJhbnNwb3J0KiBydHBfdHJhbnNwb3J0LAorICAgICAgICAgICAgICBSdGNwUnR0U3RhdHMqIHJ0
Y3BfcnR0X3N0YXRzLAorICAgICAgICAgICAgICBSdGNFdmVudExvZyogcnRjX2V2ZW50X2xvZywK
KyAgICAgICAgICAgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvciwK
KyAgICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cywKKyAgICAgICAgICAgICAgYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQsCisgICAgICAgICAgICAg
IGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyk7CisKKyAgfkNoYW5uZWxTZW5kKCkgb3ZlcnJp
ZGU7CisKKyAgLy8gU2VuZCB1c2luZyB0aGlzIGVuY29kZXIsIHdpdGggdGhpcyBwYXlsb2FkIHR5
cGUuCisgIGJvb2wgU2V0RW5jb2RlcihpbnQgcGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2Rlcikgb3ZlcnJpZGU7CisgIHZv
aWQgTW9kaWZ5RW5jb2RlcihydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0VuY29kZXI+Kik+CisgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIpIG92ZXJy
aWRlOworCisgIC8vIEFQSSBtZXRob2RzCisgIHZvaWQgU3RhcnRTZW5kKCkgb3ZlcnJpZGU7Cisg
IHZvaWQgU3RvcFNlbmQoKSBvdmVycmlkZTsKKworICAvLyBDb2RlY3MKKyAgdm9pZCBPbkJpdHJh
dGVBbGxvY2F0aW9uKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSkgb3ZlcnJpZGU7Cisg
IGludCBHZXRCaXRyYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgLy8gTmV0d29yaworICBib29s
IFJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBv
dmVycmlkZTsKKworICAvLyBNdXRpbmcsIFZvbHVtZSBhbmQgTGV2ZWwuCisgIHZvaWQgU2V0SW5w
dXRNdXRlKGJvb2wgZW5hYmxlKSBvdmVycmlkZTsKKworICAvLyBTdGF0cy4KKyAgQU5BU3RhdHMg
R2V0QU5BU3RhdGlzdGljcygpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIFVzZWQgYnkgQXVkaW9T
ZW5kU3RyZWFtLgorICBSdHBSdGNwKiBHZXRSdHBSdGNwKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
Ly8gRFRNRi4KKyAgYm9vbCBTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGludCBldmVudCwgaW50
IGR1cmF0aW9uX21zKSBvdmVycmlkZTsKKyAgYm9vbCBTZXRTZW5kVGVsZXBob25lRXZlbnRQYXls
b2FkVHlwZShpbnQgcGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBwYXlsb2FkX2ZyZXF1ZW5jeSkgb3ZlcnJpZGU7CisKKyAgLy8gUlRQK1JU
Q1AKKyAgdm9pZCBTZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYykgb3ZlcnJpZGU7CisgIHZvaWQg
U2V0TWlkKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsIGludCBleHRlbnNpb25faWQpIG92ZXJyaWRl
OworICB2b2lkIFNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIG92
ZXJyaWRlOworICB2b2lkIFNldFNlbmRBdWRpb0xldmVsSW5kaWNhdGlvblN0YXR1cyhib29sIGVu
YWJsZSwgaW50IGlkKSBvdmVycmlkZTsKKyAgdm9pZCBFbmFibGVTZW5kVHJhbnNwb3J0U2VxdWVu
Y2VOdW1iZXIoaW50IGlkKSBvdmVycmlkZTsKKworICB2b2lkIFJlZ2lzdGVyU2VuZGVyQ29uZ2Vz
dGlvbkNvbnRyb2xPYmplY3RzKAorICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRl
cmZhY2UqIHRyYW5zcG9ydCwKKyAgICAgIFJ0Y3BCYW5kd2lkdGhPYnNlcnZlciogYmFuZHdpZHRo
X29ic2VydmVyKSBvdmVycmlkZTsKKyAgdm9pZCBSZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9s
T2JqZWN0cygpIG92ZXJyaWRlOworICB2b2lkIFNldFJUQ1BfQ05BTUUoYWJzbDo6c3RyaW5nX3Zp
ZXcgY19uYW1lKSBvdmVycmlkZTsKKyAgc3RkOjp2ZWN0b3I8UmVwb3J0QmxvY2s+IEdldFJlbW90
ZVJUQ1BSZXBvcnRCbG9ja3MoKSBjb25zdCBvdmVycmlkZTsKKyAgQ2FsbFNlbmRTdGF0aXN0aWNz
IEdldFJUQ1BTdGF0aXN0aWNzKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgLy8gUHJvY2Vzc0FuZEVu
Y29kZUF1ZGlvKCkgcG9zdHMgYSB0YXNrIG9uIHRoZSBzaGFyZWQgZW5jb2RlciB0YXNrIHF1ZXVl
LAorICAvLyB3aGljaCBpbiB0dXJuIGNhbGxzIChvbiB0aGUgcXVldWUpIFByb2Nlc3NBbmRFbmNv
ZGVBdWRpb09uVGFza1F1ZXVlKCkgd2hlcmUKKyAgLy8gdGhlIGFjdHVhbCBwcm9jZXNzaW5nIG9m
IHRoZSBhdWRpbyB0YWtlcyBwbGFjZS4gVGhlIHByb2Nlc3NpbmcgbWFpbmx5CisgIC8vIGNvbnNp
c3RzIG9mIGVuY29kaW5nIGFuZCBwcmVwYXJpbmcgdGhlIHJlc3VsdCBmb3Igc2VuZGluZyBieSBh
ZGRpbmcgaXQgdG8gYQorICAvLyBzZW5kIHF1ZXVlLgorICAvLyBUaGUgbWFpbiByZWFzb24gZm9y
IHVzaW5nIGEgdGFzayBxdWV1ZSBoZXJlIGlzIHRvIHJlbGVhc2UgdGhlIG5hdGl2ZSwKKyAgLy8g
T1Mtc3BlY2lmaWMsIGF1ZGlvIGNhcHR1cmUgdGhyZWFkIGFzIHNvb24gYXMgcG9zc2libGUgdG8g
ZW5zdXJlIHRoYXQgaXQKKyAgLy8gY2FuIGdvIGJhY2sgdG8gc2xlZXAgYW5kIGJlIHByZXBhcmVk
IHRvIGRlbGl2ZXIgYW4gbmV3IGNhcHR1cmVkIGF1ZGlvCisgIC8vIHBhY2tldC4KKyAgdm9pZCBQ
cm9jZXNzQW5kRW5jb2RlQXVkaW8oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRnJhbWU+IGF1ZGlvX2Zy
YW1lKSBvdmVycmlkZTsKKworICB2b2lkIFNldFRyYW5zcG9ydE92ZXJoZWFkKHNpemVfdCB0cmFu
c3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldCkgb3ZlcnJpZGU7CisKKyAgLy8gVGhlIGV4aXN0ZW5j
ZSBvZiB0aGlzIGZ1bmN0aW9uIGFsb25nc2lkZSBPblVwbGlua1BhY2tldExvc3NSYXRlIGlzCisg
IC8vIGEgY29tcHJvbWlzZS4gV2Ugd2FudCB0aGUgZW5jb2RlciB0byBiZSBhZ25vc3RpYyBvZiB0
aGUgUExSIHNvdXJjZSwgYnV0CisgIC8vIHdlIGFsc28gZG9uJ3Qgd2FudCBpdCB0byByZWNlaXZl
IGNvbmZsaWN0aW5nIGluZm9ybWF0aW9uIGZyb20gVFdDQyBhbmQKKyAgLy8gZnJvbSBSVENQLVhS
LgorICB2b2lkIE9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUoZmxvYXQgcGFja2V0X2xv
c3NfcmF0ZSkgb3ZlcnJpZGU7CisKKyAgdm9pZCBPblJlY292ZXJhYmxlVXBsaW5rUGFja2V0TG9z
c1JhdGUoCisgICAgICBmbG9hdCByZWNvdmVyYWJsZV9wYWNrZXRfbG9zc19yYXRlKSBvdmVycmlk
ZTsKKworICBpbnQ2NF90IEdldFJUVCgpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIEUyRUUgQ3Vz
dG9tIEF1ZGlvIEZyYW1lIEVuY3J5cHRpb24KKyAgdm9pZCBTZXRGcmFtZUVuY3J5cHRvcigKKyAg
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5j
cnlwdG9yKSBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIGNsYXNzIFByb2Nlc3NBbmRFbmNvZGVB
dWRpb1Rhc2s7CisKKyAgLy8gRnJvbSBBdWRpb1BhY2tldGl6YXRpb25DYWxsYmFjayBpbiB0aGUg
QUNNCisgIGludDMyX3QgU2VuZERhdGEoRnJhbWVUeXBlIGZyYW1lVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICB1aW50OF90IHBheWxvYWRUeXBlLAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IHRpbWVTdGFtcCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwYXlsb2FkRGF0
YSwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZFNpemUsCisgICAgICAgICAgICAg
ICAgICAgY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRhdGlvbikgb3ZlcnJp
ZGU7CisKKyAgLy8gRnJvbSBUcmFuc3BvcnQgKGNhbGxlZCBieSB0aGUgUlRQL1JUQ1AgbW9kdWxl
KQorICBib29sIFNlbmRSdHAoY29uc3QgdWludDhfdCogZGF0YSwKKyAgICAgICAgICAgICAgIHNp
emVfdCBsZW4sCisgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRPcHRpb25zJiBwYWNrZXRfb3B0
aW9ucykgb3ZlcnJpZGU7CisgIGJvb2wgU2VuZFJ0Y3AoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGxlbikgb3ZlcnJpZGU7CisKKyAgLy8gRnJvbSBPdmVyaGVhZE9ic2VydmVyIGluIHRoZSBS
VFAvUlRDUCBtb2R1bGUKKyAgdm9pZCBPbk92ZXJoZWFkQ2hhbmdlZChzaXplX3Qgb3ZlcmhlYWRf
Ynl0ZXNfcGVyX3BhY2tldCkgb3ZlcnJpZGU7CisKKyAgdm9pZCBPblVwbGlua1BhY2tldExvc3NS
YXRlKGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpOworICBib29sIElucHV0TXV0ZSgpIGNvbnN0Owor
CisgIGludCBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKGJvb2wgZW5hYmxlLCBSVFBFeHRlbnNp
b25UeXBlIHR5cGUsIGludCBpZCk7CisKKyAgdm9pZCBVcGRhdGVPdmVyaGVhZEZvckVuY29kZXIo
KQorICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChvdmVyaGVhZF9wZXJfcGFja2V0
X2xvY2tfKTsKKworICBpbnQzMl90IFNlbmRSdHBBdWRpbyhGcmFtZVR5cGUgZnJhbWVUeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHBheWxvYWRUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCB0aW1lU3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IHBheWxvYWQsCisgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFJUUEZyYWdtZW50YXRpb25IZWFkZXIqIGZyYWdtZW50YXRpb24pOworCisgIGlu
dDMyX3QgU2VuZE1lZGlhVHJhbnNwb3J0QXVkaW8oRnJhbWVUeXBlIGZyYW1lVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHBheWxvYWRUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVTdGFtcCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBw
YXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJUUEZyYWdt
ZW50YXRpb25IZWFkZXIqIGZyYWdtZW50YXRpb24pOworCisgIC8vIFJldHVybiBtZWRpYSB0cmFu
c3BvcnQgb3IgbnVsbHB0ciBpZiB1c2luZyBSVFAuCisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNl
KiBtZWRpYV90cmFuc3BvcnQoKSB7IHJldHVybiBtZWRpYV90cmFuc3BvcnRfOyB9CisKKyAgLy8g
Q2FsbGVkIG9uIHRoZSBlbmNvZGVyIHRhc2sgcXVldWUgd2hlbiBhIG5ldyBpbnB1dCBhdWRpbyBm
cmFtZSBpcyByZWFkeQorICAvLyBmb3IgZW5jb2RpbmcuCisgIHZvaWQgUHJvY2Vzc0FuZEVuY29k
ZUF1ZGlvT25UYXNrUXVldWUoQXVkaW9GcmFtZSogYXVkaW9faW5wdXQpOworCisgIHZvaWQgT25S
ZWNlaXZlZFJ0dChpbnQ2NF90IHJ0dF9tcyk7CisKKyAgdm9pZCBPblRhcmdldFRyYW5zZmVyUmF0
ZShUYXJnZXRUcmFuc2ZlclJhdGUpIG92ZXJyaWRlOworCisgIC8vIFRocmVhZCBjaGVja2VycyBk
b2N1bWVudCBhbmQgbG9jayB1c2FnZSBvZiBzb21lIG1ldGhvZHMgb24gdm9lOjpDaGFubmVsIHRv
CisgIC8vIHNwZWNpZmljIHRocmVhZHMgd2Uga25vdyBhYm91dC4gVGhlIGdvYWwgaXMgdG8gZXZl
bnR1YWxseSBzcGxpdCB1cAorICAvLyB2b2U6OkNoYW5uZWwgaW50byBwYXJ0cyB3aXRoIHNpbmds
ZS10aHJlYWRlZCBzZW1hbnRpY3MsIGFuZCB0aGVyZWJ5IHJlZHVjZQorICAvLyB0aGUgbmVlZCBm
b3IgbG9ja3MuCisgIHJ0Yzo6VGhyZWFkQ2hlY2tlciB3b3JrZXJfdGhyZWFkX2NoZWNrZXJfOwor
ICBydGM6OlRocmVhZENoZWNrZXIgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfOworICAv
LyBNZXRob2RzIGFjY2Vzc2VkIGZyb20gYXVkaW8gYW5kIHZpZGVvIHRocmVhZHMgYXJlIGNoZWNr
ZWQgZm9yIHNlcXVlbnRpYWwtCisgIC8vIG9ubHkgYWNjZXNzLiBXZSBkb24ndCBuZWNlc3Nhcmls
eSBvd24gYW5kIGNvbnRyb2wgdGhlc2UgdGhyZWFkcywgc28gdGhyZWFkCisgIC8vIGNoZWNrZXJz
IGNhbm5vdCBiZSB1c2VkLiBFLmcuIENocm9taXVtIG1heSB0cmFuc2ZlciAib3duZXJzaGlwIiBm
cm9tIG9uZQorICAvLyBhdWRpbyB0aHJlYWQgdG8gYW5vdGhlciwgYnV0IGFjY2VzcyBpcyBzdGls
bCBzZXF1ZW50aWFsLgorICBydGM6OlJhY2VDaGVja2VyIGF1ZGlvX3RocmVhZF9yYWNlX2NoZWNr
ZXJfOworCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIF9jYWxsYmFja0NyaXRTZWN0OworICBydGM6
OkNyaXRpY2FsU2VjdGlvbiB2b2x1bWVfc2V0dGluZ3NfY3JpdHNlY3RfOworCisgIGJvb2wgc2Vu
ZGluZ18gUlRDX0dVQVJERURfQlkoJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pID0gZmFsc2U7CisK
KyAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187CisKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0
cFJ0Y3A+IF9ydHBSdGNwTW9kdWxlOworCisgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0NvZGluZ01v
ZHVsZT4gYXVkaW9fY29kaW5nXzsKKyAgdWludDMyX3QgX3RpbWVTdGFtcCBSVENfR1VBUkRFRF9C
WShlbmNvZGVyX3F1ZXVlXyk7CisKKyAgdWludDE2X3Qgc2VuZF9zZXF1ZW5jZV9udW1iZXJfOwor
CisgIC8vIHVzZXMKKyAgUHJvY2Vzc1RocmVhZCogY29uc3QgX21vZHVsZVByb2Nlc3NUaHJlYWRQ
dHI7CisgIFRyYW5zcG9ydCogY29uc3QgX3RyYW5zcG9ydFB0cjsgIC8vIFdlYlJ0YyBzb2NrZXQg
b3IgZXh0ZXJuYWwgdHJhbnNwb3J0CisgIFJtc0xldmVsIHJtc19sZXZlbF8gUlRDX0dVQVJERURf
QlkoZW5jb2Rlcl9xdWV1ZV8pOworICBib29sIGlucHV0X211dGVfIFJUQ19HVUFSREVEX0JZKHZv
bHVtZV9zZXR0aW5nc19jcml0c2VjdF8pOworICBib29sIHByZXZpb3VzX2ZyYW1lX211dGVkXyBS
VENfR1VBUkRFRF9CWShlbmNvZGVyX3F1ZXVlXyk7CisgIC8vIFZvZVJUUF9SVENQCisgIC8vIFRP
RE8oaGVucmlrYSk6IGNhbiB0b2RheSBiZSBhY2Nlc3NlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYW5k
IG9uIHRoZQorICAvLyB0YXNrIHF1ZXVlOyBoZW5jZSBwb3RlbnRpYWwgcmFjZS4KKyAgYm9vbCBf
aW5jbHVkZUF1ZGlvTGV2ZWxJbmRpY2F0aW9uOworICBzaXplX3QgdHJhbnNwb3J0X292ZXJoZWFk
X3Blcl9wYWNrZXRfCisgICAgICBSVENfR1VBUkRFRF9CWShvdmVyaGVhZF9wZXJfcGFja2V0X2xv
Y2tfKTsKKyAgc2l6ZV90IHJ0cF9vdmVyaGVhZF9wZXJfcGFja2V0XyBSVENfR1VBUkRFRF9CWShv
dmVyaGVhZF9wZXJfcGFja2V0X2xvY2tfKTsKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gb3Zlcmhl
YWRfcGVyX3BhY2tldF9sb2NrXzsKKyAgLy8gUnRjcEJhbmR3aWR0aE9ic2VydmVyCisgIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxWb0VSdGNwT2JzZXJ2ZXI+IHJ0Y3Bfb2JzZXJ2ZXJfOworCisgIFBh
Y2tldFJvdXRlciogcGFja2V0X3JvdXRlcl8gUlRDX0dVQVJERURfQlkoJndvcmtlcl90aHJlYWRf
Y2hlY2tlcl8pID0KKyAgICAgIG51bGxwdHI7CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxUcmFu
c3BvcnRGZWVkYmFja1Byb3h5PiBmZWVkYmFja19vYnNlcnZlcl9wcm94eV87CisgIGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnRTZXF1ZW5jZU51bWJlclByb3h5PiBzZXFfbnVtX2FsbG9j
YXRvcl9wcm94eV87CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRTZW5kZXJQcm94
eT4gcnRwX3BhY2tldF9zZW5kZXJfcHJveHlfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UmF0
ZUxpbWl0ZXI+IHJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl87CisKKyAgcnRjOjpUaHJlYWRD
aGVja2VyIGNvbnN0cnVjdGlvbl90aHJlYWRfOworCisgIGNvbnN0IGJvb2wgdXNlX3R3Y2NfcGxy
X2Zvcl9hbmFfOworCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGVuY29kZXJfcXVldWVfbG9ja187
CisgIGJvb2wgZW5jb2Rlcl9xdWV1ZV9pc19hY3RpdmVfIFJUQ19HVUFSREVEX0JZKGVuY29kZXJf
cXVldWVfbG9ja18pID0gZmFsc2U7CisgIHJ0Yzo6VGFza1F1ZXVlKiBjb25zdCBlbmNvZGVyX3F1
ZXVlXyA9IG51bGxwdHI7CisKKyAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIGNvbnN0IG1lZGlh
X3RyYW5zcG9ydF87CisgIGludCBtZWRpYV90cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyXyBSVENf
R1VBUkRFRF9CWShlbmNvZGVyX3F1ZXVlXykgPSAwOworCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9u
IG1lZGlhX3RyYW5zcG9ydF9sb2NrXzsKKyAgLy8gQ3VycmVudGx5IHNldCBieSBTZXRMb2NhbFNT
UkMuCisgIHVpbnQ2NF90IG1lZGlhX3RyYW5zcG9ydF9jaGFubmVsX2lkXyBSVENfR1VBUkRFRF9C
WSgmbWVkaWFfdHJhbnNwb3J0X2xvY2tfKSA9CisgICAgICAwOworICAvLyBDYWNoZSBwYXlsb2Fk
IHR5cGUgYW5kIHNhbXBsaW5nIGZyZXF1ZW5jeSBmcm9tIG1vc3QgcmVjZW50IGNhbGwgdG8KKyAg
Ly8gU2V0RW5jb2Rlci4gTmVlZGVkIHRvIHNldCBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0Zy
YW1lIG1ldGFkYXRhLCBhbmQKKyAgLy8gaW52YWxpZGF0ZSBvbiBlbmNvZGVyIGNoYW5nZS4KKyAg
aW50IG1lZGlhX3RyYW5zcG9ydF9wYXlsb2FkX3R5cGVfIFJUQ19HVUFSREVEX0JZKCZtZWRpYV90
cmFuc3BvcnRfbG9ja18pOworICBpbnQgbWVkaWFfdHJhbnNwb3J0X3NhbXBsaW5nX2ZyZXF1ZW5j
eV8KKyAgICAgIFJUQ19HVUFSREVEX0JZKCZtZWRpYV90cmFuc3BvcnRfbG9ja18pOworCisgIC8v
IEUyRUUgQXVkaW8gRnJhbWUgRW5jcnlwdGlvbgorICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVF
bmNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2VuY3J5cHRvcl87CisgIC8vIEUyRUUgRnJhbWUgRW5j
cnlwdGlvbiBPcHRpb25zCisgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0
aW9uc187CisKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gYml0cmF0ZV9jcml0X3NlY3Rpb25fOwor
ICBpbnQgY29uZmlndXJlZF9iaXRyYXRlX2Jwc18gUlRDX0dVQVJERURfQlkoYml0cmF0ZV9jcml0
X3NlY3Rpb25fKSA9IDA7Cit9OwogCiBjb25zdCBpbnQga1RlbGVwaG9uZUV2ZW50QXR0ZW51YXRp
b25kQiA9IDEwOwogCkBAIC0yNTQsNiArNTEyLDIzIEBAIGludDMyX3QgQ2hhbm5lbFNlbmQ6OlNl
bmREYXRhKEZyYW1lVHlwZSBmcmFtZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgcGF5bG9hZFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKSB7CiAgIFJUQ19EQ0hFQ0tf
UlVOX09OKGVuY29kZXJfcXVldWVfKTsKKyAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4g
cGF5bG9hZChwYXlsb2FkRGF0YSwgcGF5bG9hZFNpemUpOworCisgIGlmIChtZWRpYV90cmFuc3Bv
cnQoKSAhPSBudWxscHRyKSB7CisgICAgcmV0dXJuIFNlbmRNZWRpYVRyYW5zcG9ydEF1ZGlvKGZy
YW1lVHlwZSwgcGF5bG9hZFR5cGUsIHRpbWVTdGFtcCwgcGF5bG9hZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRhdGlvbik7CisgIH0gZWxzZSB7CisgICAgcmV0
dXJuIFNlbmRSdHBBdWRpbyhmcmFtZVR5cGUsIHBheWxvYWRUeXBlLCB0aW1lU3RhbXAsIHBheWxv
YWQsCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudGF0aW9uKTsKKyAgfQorfQorCitp
bnQzMl90IENoYW5uZWxTZW5kOjpTZW5kUnRwQXVkaW8oRnJhbWVUeXBlIGZyYW1lVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHBheWxvYWRUeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVTdGFtcCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90
PiBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJUUEZy
YWdtZW50YXRpb25IZWFkZXIqIGZyYWdtZW50YXRpb24pIHsKKyAgUlRDX0RDSEVDS19SVU5fT04o
ZW5jb2Rlcl9xdWV1ZV8pOwogICBpZiAoX2luY2x1ZGVBdWRpb0xldmVsSW5kaWNhdGlvbikgewog
ICAgIC8vIFN0b3JlIGN1cnJlbnQgYXVkaW8gbGV2ZWwgaW4gdGhlIFJUUC9SVENQIG1vZHVsZS4K
ICAgICAvLyBUaGUgbGV2ZWwgd2lsbCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdm9pY2Ut
YWN0aXZpdHkgc3RhdGUKQEAgLTI2OCwxNiArNTQzLDE1IEBAIGludDMyX3QgQ2hhbm5lbFNlbmQ6
OlNlbmREYXRhKEZyYW1lVHlwZSBmcmFtZVR5cGUsCiAgICAgLy8gVE9ETyhiZW53cmlnaHRAd2Vi
cnRjLm9yZykgLSBBbGxvY2F0ZSBlbm91Z2ggdG8gYWx3YXlzIGVuY3J5cHQgaW5saW5lLgogICAg
IC8vIEFsbG9jYXRlIGEgYnVmZmVyIHRvIGhvbGQgdGhlIG1heGltdW0gcG9zc2libGUgZW5jcnlw
dGVkIHBheWxvYWQuCiAgICAgc2l6ZV90IG1heF9jaXBoZXJ0ZXh0X3NpemUgPSBmcmFtZV9lbmNy
eXB0b3JfLT5HZXRNYXhDaXBoZXJ0ZXh0Qnl0ZVNpemUoCi0gICAgICAgIGNyaWNrZXQ6Ok1FRElB
X1RZUEVfQVVESU8sIHBheWxvYWRTaXplKTsKKyAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9B
VURJTywgcGF5bG9hZC5zaXplKCkpOwogICAgIGVuY3J5cHRlZF9hdWRpb19wYXlsb2FkLlNldFNp
emUobWF4X2NpcGhlcnRleHRfc2l6ZSk7CiAKICAgICAvLyBFbmNyeXB0IHRoZSBhdWRpbyBwYXls
b2FkIGludG8gdGhlIGJ1ZmZlci4KICAgICBzaXplX3QgYnl0ZXNfd3JpdHRlbiA9IDA7CiAgICAg
aW50IGVuY3J5cHRfc3RhdHVzID0gZnJhbWVfZW5jcnlwdG9yXy0+RW5jcnlwdCgKICAgICAgICAg
Y3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgX3J0cFJ0Y3BNb2R1bGUtPlNTUkMoKSwKLSAgICAg
ICAgLyphZGRpdGlvbmFsX2RhdGE9Ki9udWxscHRyLAotICAgICAgICBydGM6OkFycmF5Vmlldzxj
b25zdCB1aW50OF90PihwYXlsb2FkRGF0YSwgcGF5bG9hZFNpemUpLAotICAgICAgICBlbmNyeXB0
ZWRfYXVkaW9fcGF5bG9hZCwgJmJ5dGVzX3dyaXR0ZW4pOworICAgICAgICAvKmFkZGl0aW9uYWxf
ZGF0YT0qL251bGxwdHIsIHBheWxvYWQsIGVuY3J5cHRlZF9hdWRpb19wYXlsb2FkLAorICAgICAg
ICAmYnl0ZXNfd3JpdHRlbik7CiAgICAgaWYgKGVuY3J5cHRfc3RhdHVzICE9IDApIHsKICAgICAg
IFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiQ2hhbm5lbDo6U2VuZERhdGEoKSBmYWlsZWQgZW5jcnlw
dCBhdWRpbyBwYXlsb2FkOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZW5jcnlwdF9z
dGF0dXM7CkBAIC0yODYsMTkgKzU2MCwyMyBAQCBpbnQzMl90IENoYW5uZWxTZW5kOjpTZW5kRGF0
YShGcmFtZVR5cGUgZnJhbWVUeXBlLAogICAgIC8vIFJlc2l6ZSB0aGUgYnVmZmVyIHRvIHRoZSBl
eGFjdCBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgdXNlZC4KICAgICBlbmNyeXB0ZWRfYXVkaW9f
cGF5bG9hZC5TZXRTaXplKGJ5dGVzX3dyaXR0ZW4pOwogICAgIC8vIFJld3JpdGUgdGhlIHBheWxv
YWREYXRhIGFuZCBzaXplIHRvIHRoZSBuZXcgZW5jcnlwdGVkIHBheWxvYWQuCi0gICAgcGF5bG9h
ZERhdGEgPSBlbmNyeXB0ZWRfYXVkaW9fcGF5bG9hZC5kYXRhKCk7Ci0gICAgcGF5bG9hZFNpemUg
PSBlbmNyeXB0ZWRfYXVkaW9fcGF5bG9hZC5zaXplKCk7CisgICAgcGF5bG9hZCA9IGVuY3J5cHRl
ZF9hdWRpb19wYXlsb2FkOworICB9IGVsc2UgaWYgKGNyeXB0b19vcHRpb25zXy5zZnJhbWUucmVx
dWlyZV9mcmFtZV9lbmNyeXB0aW9uKSB7CisgICAgUlRDX0RMT0coTFNfRVJST1IpIDw8ICJDaGFu
bmVsOjpTZW5kRGF0YSgpIGZhaWxlZCBzZW5kaW5nIGF1ZGlvIHBheWxvYWQ6ICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIkEgZnJhbWUgZW5jcnlwdG9yIGlzIHJlcXVpcmVkIGJ1dCBvbmUg
aXMgbm90IHNldC4iOworICAgIHJldHVybiAtMTsKICAgfQogCiAgIC8vIFB1c2ggZGF0YSBmcm9t
IEFDTSB0byBSVFAvUlRDUC1tb2R1bGUgdG8gZGVsaXZlciBhdWRpbyBmcmFtZSBmb3IKICAgLy8g
cGFja2V0aXphdGlvbi4KICAgLy8gVGhpcyBjYWxsIHdpbGwgdHJpZ2dlciBUcmFuc3BvcnQ6OlNl
bmRQYWNrZXQoKSBmcm9tIHRoZSBSVFAvUlRDUCBtb2R1bGUuCi0gIGlmICghX3J0cFJ0Y3BNb2R1
bGUtPlNlbmRPdXRnb2luZ0RhdGEoCi0gICAgICAgICAgKEZyYW1lVHlwZSYpZnJhbWVUeXBlLCBw
YXlsb2FkVHlwZSwgdGltZVN0YW1wLAotICAgICAgICAgIC8vIExlYXZpbmcgdGhlIHRpbWUgd2hl
biB0aGlzIGZyYW1lIHdhcwotICAgICAgICAgIC8vIHJlY2VpdmVkIGZyb20gdGhlIGNhcHR1cmUg
ZGV2aWNlIGFzCi0gICAgICAgICAgLy8gdW5kZWZpbmVkIGZvciB2b2ljZSBmb3Igbm93LgotICAg
ICAgICAgIC0xLCBwYXlsb2FkRGF0YSwgcGF5bG9hZFNpemUsIGZyYWdtZW50YXRpb24sIG51bGxw
dHIsIG51bGxwdHIpKSB7CisgIGlmICghX3J0cFJ0Y3BNb2R1bGUtPlNlbmRPdXRnb2luZ0RhdGEo
KEZyYW1lVHlwZSYpZnJhbWVUeXBlLCBwYXlsb2FkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lU3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gTGVhdmluZyB0aGUgdGltZSB3aGVuIHRoaXMgZnJhbWUgd2FzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVjZWl2ZWQgZnJvbSB0
aGUgY2FwdHVyZSBkZXZpY2UgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyB1bmRlZmluZWQgZm9yIHZvaWNlIGZvciBub3cuCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLTEsIHBheWxvYWQuZGF0YSgpLCBwYXlsb2FkLnNpemUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudGF0aW9uLCBu
dWxscHRyLCBudWxscHRyKSkgewogICAgIFJUQ19ETE9HKExTX0VSUk9SKQogICAgICAgICA8PCAi
Q2hhbm5lbFNlbmQ6OlNlbmREYXRhKCkgZmFpbGVkIHRvIHNlbmQgZGF0YSB0byBSVFAvUlRDUCBt
b2R1bGUiOwogICAgIHJldHVybiAtMTsKQEAgLTMwNyw5ICs1ODUsNjggQEAgaW50MzJfdCBDaGFu
bmVsU2VuZDo6U2VuZERhdGEoRnJhbWVUeXBlIGZyYW1lVHlwZSwKICAgcmV0dXJuIDA7CiB9CiAK
K2ludDMyX3QgQ2hhbm5lbFNlbmQ6OlNlbmRNZWRpYVRyYW5zcG9ydEF1ZGlvKAorICAgIEZyYW1l
VHlwZSBmcmFtZVR5cGUsCisgICAgdWludDhfdCBwYXlsb2FkVHlwZSwKKyAgICB1aW50MzJfdCB0
aW1lU3RhbXAsCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gcGF5bG9hZCwKKyAg
ICBjb25zdCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKSB7CisgIFJUQ19E
Q0hFQ0tfUlVOX09OKGVuY29kZXJfcXVldWVfKTsKKyAgLy8gVE9ETyhuaXNzZSk6IFVzZSBudWxs
IF90cmFuc3BvcnRQdHIgZm9yIE1lZGlhVHJhbnNwb3J0LgorICAvLyBSVENfRENIRUNLKF90cmFu
c3BvcnRQdHIgPT0gbnVsbHB0cik7CisgIHVpbnQ2NF90IGNoYW5uZWxfaWQ7CisgIGludCBzYW1w
bGluZ19yYXRlX2h6OworICB7CisgICAgcnRjOjpDcml0U2NvcGUgY3MoJm1lZGlhX3RyYW5zcG9y
dF9sb2NrXyk7CisgICAgaWYgKG1lZGlhX3RyYW5zcG9ydF9wYXlsb2FkX3R5cGVfICE9IHBheWxv
YWRUeXBlKSB7CisgICAgICAvLyBQYXlsb2FkIHR5cGUgaXMgYmVpbmcgY2hhbmdlZCwgbWVkaWFf
dHJhbnNwb3J0X3NhbXBsaW5nX2ZyZXF1ZW5jeV8sCisgICAgICAvLyBubyBsb25nZXIgY3VycmVu
dC4KKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgc2FtcGxpbmdfcmF0ZV9oeiA9IG1lZGlh
X3RyYW5zcG9ydF9zYW1wbGluZ19mcmVxdWVuY3lfOworICAgIGNoYW5uZWxfaWQgPSBtZWRpYV90
cmFuc3BvcnRfY2hhbm5lbF9pZF87CisgIH0KKyAgY29uc3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVk
QXVkaW9GcmFtZSBmcmFtZSgKKyAgICAgIC8qc2FtcGxpbmdfcmF0ZV9oej0qL3NhbXBsaW5nX3Jh
dGVfaHosCisKKyAgICAgIC8vIFRPRE8obmlzc2UpOiBUaW1lc3RhbXAgYW5kIHNhbXBsZSBpbmRl
eCBhcmUgdGhlIHNhbWUgZm9yIGFsbCBzdXBwb3J0ZWQKKyAgICAgIC8vIGF1ZGlvIGNvZGVjcyBl
eGNlcHQgRzcyMi4gUmVmYWN0b3IgYXVkaW8gY29kaW5nIG1vZHVsZSB0byBvbmx5IHVzZQorICAg
ICAgLy8gc2FtcGxlIGluZGV4LCBhbmQgbGVhdmUgdHJhbnNsYXRpb24gdG8gUlRQIHRpbWUsIHdo
ZW4gbmVlZGVkLCBmb3IKKyAgICAgIC8vIFJUUC1zcGVjaWZpYyBjb2RlLgorICAgICAgLypzdGFy
dGluZ19zYW1wbGVfaW5kZXg9Ki90aW1lU3RhbXAsCisKKyAgICAgIC8vIFNhbXBsZSBjb3VudCBp
c24ndCBjb252ZW5pZW50bHkgYXZhaWxhYmxlIGZyb20gdGhlIEF1ZGlvQ29kaW5nTW9kdWxlLAor
ICAgICAgLy8gYW5kIG5lZWRzIHNvbWUgcmVmYWN0b3JpbmcgdG8gd2lyZSB1cCBpbiBhIGdvb2Qg
d2F5LiBGb3Igbm93LCBsZWZ0IGFzCisgICAgICAvLyB6ZXJvLgorICAgICAgLypzYW1wbGVfY291
bnQ9Ki8wLAorCisgICAgICAvKnNlcXVlbmNlX251bWJlcj0qL21lZGlhX3RyYW5zcG9ydF9zZXF1
ZW5jZV9udW1iZXJfLAorICAgICAgTWVkaWFUcmFuc3BvcnRGcmFtZVR5cGVGb3JXZWJydGNGcmFt
ZVR5cGUoZnJhbWVUeXBlKSwgcGF5bG9hZFR5cGUsCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90
PihwYXlsb2FkLmJlZ2luKCksIHBheWxvYWQuZW5kKCkpKTsKKworICAvLyBUT0RPKG5pc3NlKTog
SW50cm9kdWNlIGEgTWVkaWFUcmFuc3BvcnRTZW5kZXIgb2JqZWN0IGJvdW5kIHRvIGEgc3BlY2lm
aWMKKyAgLy8gY2hhbm5lbCBpZC4KKyAgUlRDRXJyb3IgcnRjX2Vycm9yID0KKyAgICAgIG1lZGlh
X3RyYW5zcG9ydCgpLT5TZW5kQXVkaW9GcmFtZShjaGFubmVsX2lkLCBzdGQ6Om1vdmUoZnJhbWUp
KTsKKworICBpZiAoIXJ0Y19lcnJvci5vaygpKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IkZhaWxlZCB0byBzZW5kIGZyYW1lLCBydGNfZXJyb3I9IgorICAgICAgICAgICAgICAgICAgICAg
IDw8IFRvU3RyaW5nKHJ0Y19lcnJvci50eXBlKCkpIDw8ICIsICIKKyAgICAgICAgICAgICAgICAg
ICAgICA8PCBydGNfZXJyb3IubWVzc2FnZSgpOworICAgIHJldHVybiAtMTsKKyAgfQorCisgICsr
bWVkaWFfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl87CisKKyAgcmV0dXJuIDA7Cit9CisKIGJv
b2wgQ2hhbm5lbFNlbmQ6OlNlbmRSdHAoY29uc3QgdWludDhfdCogZGF0YSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUGFja2V0T3B0aW9ucyYgb3B0aW9ucykgeworICAvLyBXZSBzaG91bGQgbm90IGJlIHNlbmRp
bmcgUlRQIHBhY2tldHMgaWYgbWVkaWEgdHJhbnNwb3J0IGlzIGF2YWlsYWJsZS4KKyAgUlRDX0NI
RUNLKCFtZWRpYV90cmFuc3BvcnQoKSk7CisKICAgcnRjOjpDcml0U2NvcGUgY3MoJl9jYWxsYmFj
a0NyaXRTZWN0KTsKIAogICBpZiAoX3RyYW5zcG9ydFB0ciA9PSBOVUxMKSB7CkBAIC0zNDMsMjMg
KzY4MCwyMiBAQCBib29sIENoYW5uZWxTZW5kOjpTZW5kUnRjcChjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuKSB7CiAgIHJldHVybiB0cnVlOwogfQogCi1pbnQgQ2hhbm5lbFNlbmQ6OlBy
ZWZlcnJlZFNhbXBsZVJhdGUoKSBjb25zdCB7Ci0gIC8vIFJldHVybiB0aGUgYmlnZ2VyIG9mIHBs
YXlvdXQgYW5kIHJlY2VpdmUgZnJlcXVlbmN5IGluIHRoZSBBQ00uCi0gIHJldHVybiBzdGQ6Om1h
eChhdWRpb19jb2RpbmdfLT5SZWNlaXZlRnJlcXVlbmN5KCksCi0gICAgICAgICAgICAgICAgICBh
dWRpb19jb2RpbmdfLT5QbGF5b3V0RnJlcXVlbmN5KCkpOwotfQotCiBDaGFubmVsU2VuZDo6Q2hh
bm5lbFNlbmQocnRjOjpUYXNrUXVldWUqIGVuY29kZXJfcXVldWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHJvY2Vzc1RocmVhZCogbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNwb3J0KiBydHBfdHJhbnNwb3J0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BSdHRTdGF0cyogcnRjcF9ydHRfc3RhdHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9sb2csCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRv
cikKKyAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJh
bWVfZW5jcnlwdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5
cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBleHRtYXBfYWxsb3dfbWl4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJ0Y3Bf
cmVwb3J0X2ludGVydmFsX21zKQogICAgIDogZXZlbnRfbG9nXyhydGNfZXZlbnRfbG9nKSwKICAg
ICAgIF90aW1lU3RhbXAoMCksICAvLyBUaGlzIGlzIGp1c3QgYW4gb2Zmc2V0LCBSVFAgbW9kdWxl
IHdpbGwgYWRkIGl0J3Mgb3duCiAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFuZG9tIG9mZnNl
dAogICAgICAgc2VuZF9zZXF1ZW5jZV9udW1iZXJfKDApLAogICAgICAgX21vZHVsZVByb2Nlc3NU
aHJlYWRQdHIobW9kdWxlX3Byb2Nlc3NfdGhyZWFkKSwKLSAgICAgIF90cmFuc3BvcnRQdHIoTlVM
TCksCisgICAgICBfdHJhbnNwb3J0UHRyKHJ0cF90cmFuc3BvcnQpLAogICAgICAgaW5wdXRfbXV0
ZV8oZmFsc2UpLAogICAgICAgcHJldmlvdXNfZnJhbWVfbXV0ZWRfKGZhbHNlKSwKICAgICAgIF9p
bmNsdWRlQXVkaW9MZXZlbEluZGljYXRpb24oZmFsc2UpLApAQCAtMzc0LDQ5ICs3MTAsNTYgQEAg
Q2hhbm5lbFNlbmQ6OkNoYW5uZWxTZW5kKHJ0Yzo6VGFza1F1ZXVlKiBlbmNvZGVyX3F1ZXVlLAog
ICAgICAgdXNlX3R3Y2NfcGxyX2Zvcl9hbmFfKAogICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJp
YWw6OkZpbmRGdWxsTmFtZSgiVXNlVHdjY1BsckZvckFuYSIpID09ICJFbmFibGVkIiksCiAgICAg
ICBlbmNvZGVyX3F1ZXVlXyhlbmNvZGVyX3F1ZXVlKSwKLSAgICAgIGZyYW1lX2VuY3J5cHRvcl8o
ZnJhbWVfZW5jcnlwdG9yKSB7CisgICAgICBtZWRpYV90cmFuc3BvcnRfKG1lZGlhX3RyYW5zcG9y
dCksCisgICAgICBmcmFtZV9lbmNyeXB0b3JfKGZyYW1lX2VuY3J5cHRvciksCisgICAgICBjcnlw
dG9fb3B0aW9uc18oY3J5cHRvX29wdGlvbnMpIHsKICAgUlRDX0RDSEVDSyhtb2R1bGVfcHJvY2Vz
c190aHJlYWQpOwogICBSVENfRENIRUNLKGVuY29kZXJfcXVldWUpOworICBtb2R1bGVfcHJvY2Vz
c190aHJlYWRfY2hlY2tlcl8uRGV0YWNoRnJvbVRocmVhZCgpOworCiAgIGF1ZGlvX2NvZGluZ18u
cmVzZXQoQXVkaW9Db2RpbmdNb2R1bGU6OkNyZWF0ZShBdWRpb0NvZGluZ01vZHVsZTo6Q29uZmln
KCkpKTsKIAogICBSdHBSdGNwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisKKyAgLy8g
V2UgZ3JhZHVhbGx5IHJlbW92ZSBjb2RlcGF0aHMgdGhhdCBkZXBlbmQgb24gUlRQIHdoZW4gdXNp
bmcgbWVkaWEKKyAgLy8gdHJhbnNwb3J0LiBBbGwgb2YgdGhpcyBsb2dpYyBzaG91bGQgYmUgbW92
ZWQgdG8gdGhlIGZ1dHVyZQorICAvLyBSVFBNZWRpYVRyYW5zcG9ydC4gSW4gdGhpcyBjYXNlIGl0
IG1lYW5zIHRoYXQgb3ZlcmhlYWQgYW5kIGJhbmR3aWR0aAorICAvLyBvYnNlcnZlcnMgc2hvdWxk
IG5vdCBiZSBjYWxsZWQgd2hlbiB1c2luZyBtZWRpYSB0cmFuc3BvcnQuCisgIGlmICghbWVkaWFf
dHJhbnNwb3J0XykgeworICAgIGNvbmZpZ3VyYXRpb24ub3ZlcmhlYWRfb2JzZXJ2ZXIgPSB0aGlz
OworICAgIGNvbmZpZ3VyYXRpb24uYmFuZHdpZHRoX2NhbGxiYWNrID0gcnRjcF9vYnNlcnZlcl8u
Z2V0KCk7CisgICAgY29uZmlndXJhdGlvbi50cmFuc3BvcnRfZmVlZGJhY2tfY2FsbGJhY2sgPSBm
ZWVkYmFja19vYnNlcnZlcl9wcm94eV8uZ2V0KCk7CisgIH0KKwogICBjb25maWd1cmF0aW9uLmF1
ZGlvID0gdHJ1ZTsKICAgY29uZmlndXJhdGlvbi5vdXRnb2luZ190cmFuc3BvcnQgPSB0aGlzOwot
ICBjb25maWd1cmF0aW9uLm92ZXJoZWFkX29ic2VydmVyID0gdGhpczsKLSAgY29uZmlndXJhdGlv
bi5iYW5kd2lkdGhfY2FsbGJhY2sgPSBydGNwX29ic2VydmVyXy5nZXQoKTsKIAogICBjb25maWd1
cmF0aW9uLnBhY2VkX3NlbmRlciA9IHJ0cF9wYWNrZXRfc2VuZGVyX3Byb3h5Xy5nZXQoKTsKICAg
Y29uZmlndXJhdGlvbi50cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyX2FsbG9jYXRvciA9CiAgICAg
ICBzZXFfbnVtX2FsbG9jYXRvcl9wcm94eV8uZ2V0KCk7Ci0gIGNvbmZpZ3VyYXRpb24udHJhbnNw
b3J0X2ZlZWRiYWNrX2NhbGxiYWNrID0gZmVlZGJhY2tfb2JzZXJ2ZXJfcHJveHlfLmdldCgpOwog
CiAgIGNvbmZpZ3VyYXRpb24uZXZlbnRfbG9nID0gZXZlbnRfbG9nXzsKICAgY29uZmlndXJhdGlv
bi5ydHRfc3RhdHMgPSBydGNwX3J0dF9zdGF0czsKICAgY29uZmlndXJhdGlvbi5yZXRyYW5zbWlz
c2lvbl9yYXRlX2xpbWl0ZXIgPQogICAgICAgcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXy5n
ZXQoKTsKKyAgY29uZmlndXJhdGlvbi5leHRtYXBfYWxsb3dfbWl4ZWQgPSBleHRtYXBfYWxsb3df
bWl4ZWQ7CisgIGNvbmZpZ3VyYXRpb24ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPSBydGNwX3Jl
cG9ydF9pbnRlcnZhbF9tczsKIAogICBfcnRwUnRjcE1vZHVsZS5yZXNldChSdHBSdGNwOjpDcmVh
dGVSdHBSdGNwKGNvbmZpZ3VyYXRpb24pKTsKICAgX3J0cFJ0Y3BNb2R1bGUtPlNldFNlbmRpbmdN
ZWRpYVN0YXR1cyhmYWxzZSk7Ci0gIEluaXQoKTsKLX0KIAotQ2hhbm5lbFNlbmQ6On5DaGFubmVs
U2VuZCgpIHsKLSAgVGVybWluYXRlKCk7Ci0gIFJUQ19EQ0hFQ0soIWNoYW5uZWxfc3RhdGVfLkdl
dCgpLnNlbmRpbmcpOwotfQotCi12b2lkIENoYW5uZWxTZW5kOjpJbml0KCkgewotICBjaGFubmVs
X3N0YXRlXy5SZXNldCgpOworICAvLyBXZSB3YW50IHRvIGludm9rZSB0aGUgJ1RhcmdldFJhdGVP
YnNlcnZlcicgYW5kIHxPbk92ZXJoZWFkQ2hhbmdlZHwKKyAgLy8gY2FsbGJhY2tzIGFmdGVyIHRo
ZSBhdWRpb19jb2RpbmdfIGlzIGZ1bGx5IGluaXRpYWxpemVkLgorICBpZiAobWVkaWFfdHJhbnNw
b3J0XykgeworICAgIFJUQ19ETE9HKExTX0lORk8pIDw8ICJTZXR0aW5nIG1lZGlhX3RyYW5zcG9y
dF8gcmF0ZSBvYnNlcnZlcnMuIjsKKyAgICBtZWRpYV90cmFuc3BvcnRfLT5BZGRUYXJnZXRUcmFu
c2ZlclJhdGVPYnNlcnZlcih0aGlzKTsKKyAgICBPbk92ZXJoZWFkQ2hhbmdlZChtZWRpYV90cmFu
c3BvcnRfLT5HZXRBdWRpb1BhY2tldE92ZXJoZWFkKCkpOworICB9IGVsc2UgeworICAgIFJUQ19E
TE9HKExTX0lORk8pIDw8ICJOb3Qgc2V0dGluZyBtZWRpYV90cmFuc3BvcnRfIHJhdGUgb2JzZXJ2
ZXJzLiI7CisgIH0KIAotICAvLyAtLS0gQWRkIG1vZHVsZXMgdG8gcHJvY2VzcyB0aHJlYWQgKGZv
ciBwZXJpb2RpYyBzY2hlZHVsYXRpb24pCiAgIF9tb2R1bGVQcm9jZXNzVGhyZWFkUHRyLT5SZWdp
c3Rlck1vZHVsZShfcnRwUnRjcE1vZHVsZS5nZXQoKSwgUlRDX0ZST01fSEVSRSk7CiAKLSAgLy8g
LS0tIEFDTSBpbml0aWFsaXphdGlvbgotICBpbnQgZXJyb3IgPSBhdWRpb19jb2RpbmdfLT5Jbml0
aWFsaXplUmVjZWl2ZXIoKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Ci0KLSAgLy8gLS0t
IFJUUC9SVENQIG1vZHVsZSBpbml0aWFsaXphdGlvbgotCiAgIC8vIEVuc3VyZSB0aGF0IFJUQ1Ag
aXMgZW5hYmxlZCBieSBkZWZhdWx0IGZvciB0aGUgY3JlYXRlZCBjaGFubmVsLgogICAvLyBOb3Rl
IHRoYXQsIHRoZSBtb2R1bGUgd2lsbCBrZWVwIGdlbmVyYXRpbmcgUlRDUCB1bnRpbCBpdCBpcyBl
eHBsaWNpdGx5CiAgIC8vIGRpc2FibGVkIGJ5IHRoZSB1c2VyLgpAQCAtNDI1LDM2ICs3NjgsMzAg
QEAgdm9pZCBDaGFubmVsU2VuZDo6SW5pdCgpIHsKICAgLy8gUlRDUCBpcyBlbmFibGVkIGJ5IGRl
ZmF1bHQuCiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprQ29tcG91
bmQpOwogCi0gIC8vIC0tLSBSZWdpc3RlciBhbGwgcGVybWFuZW50IGNhbGxiYWNrcwotICBlcnJv
ciA9IGF1ZGlvX2NvZGluZ18tPlJlZ2lzdGVyVHJhbnNwb3J0Q2FsbGJhY2sodGhpcyk7CisgIGlu
dCBlcnJvciA9IGF1ZGlvX2NvZGluZ18tPlJlZ2lzdGVyVHJhbnNwb3J0Q2FsbGJhY2sodGhpcyk7
CiAgIFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwogfQogCi12b2lkIENoYW5uZWxTZW5kOjpUZXJt
aW5hdGUoKSB7CitDaGFubmVsU2VuZDo6fkNoYW5uZWxTZW5kKCkgewogICBSVENfRENIRUNLKGNv
bnN0cnVjdGlvbl90aHJlYWRfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIC8vIE11c3QgYmUg
Y2FsbGVkIG9uIHRoZSBzYW1lIHRocmVhZCBhcyBJbml0KCkuCisKKyAgaWYgKG1lZGlhX3RyYW5z
cG9ydF8pIHsKKyAgICBtZWRpYV90cmFuc3BvcnRfLT5SZW1vdmVUYXJnZXRUcmFuc2ZlclJhdGVP
YnNlcnZlcih0aGlzKTsKKyAgfQogCiAgIFN0b3BTZW5kKCk7CiAKLSAgLy8gVGhlIG9yZGVyIHRv
IHNhZmVseSBzaHV0ZG93biBtb2R1bGVzIGluIGEgY2hhbm5lbCBpczoKLSAgLy8gMS4gRGUtcmVn
aXN0ZXIgY2FsbGJhY2tzIGluIG1vZHVsZXMKLSAgLy8gMi4gRGUtcmVnaXN0ZXIgbW9kdWxlcyBp
biBwcm9jZXNzIHRocmVhZAotICAvLyAzLiBEZXN0cm95IG1vZHVsZXMKICAgaW50IGVycm9yID0g
YXVkaW9fY29kaW5nXy0+UmVnaXN0ZXJUcmFuc3BvcnRDYWxsYmFjayhOVUxMKTsKICAgUlRDX0RD
SEVDS19FUSgwLCBlcnJvcik7CiAKLSAgLy8gRGUtcmVnaXN0ZXIgbW9kdWxlcyBpbiBwcm9jZXNz
IHRocmVhZAogICBpZiAoX21vZHVsZVByb2Nlc3NUaHJlYWRQdHIpCiAgICAgX21vZHVsZVByb2Nl
c3NUaHJlYWRQdHItPkRlUmVnaXN0ZXJNb2R1bGUoX3J0cFJ0Y3BNb2R1bGUuZ2V0KCkpOwotCi0g
IC8vIEVuZCBvZiBtb2R1bGVzIHNodXRkb3duCiB9CiAKLWludDMyX3QgQ2hhbm5lbFNlbmQ6OlN0
YXJ0U2VuZCgpIHsKLSAgaWYgKGNoYW5uZWxfc3RhdGVfLkdldCgpLnNlbmRpbmcpIHsKLSAgICBy
ZXR1cm4gMDsKLSAgfQotICBjaGFubmVsX3N0YXRlXy5TZXRTZW5kaW5nKHRydWUpOwordm9pZCBD
aGFubmVsU2VuZDo6U3RhcnRTZW5kKCkgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3Ro
cmVhZF9jaGVja2VyXyk7CisgIFJUQ19EQ0hFQ0soIXNlbmRpbmdfKTsKKyAgc2VuZGluZ18gPSB0
cnVlOwogCiAgIC8vIFJlc3VtZSB0aGUgcHJldmlvdXMgc2VxdWVuY2UgbnVtYmVyIHdoaWNoIHdh
cyByZXNldCBieSBTdG9wU2VuZCgpLiBUaGlzCiAgIC8vIG5lZWRzIHRvIGJlIGRvbmUgYmVmb3Jl
IHxzZW5kaW5nfCBpcyBzZXQgdG8gdHJ1ZSBvbiB0aGUgUlRQL1JUQ1AgbW9kdWxlLgpAQCAtNDYy
LDI2ICs3OTksMjEgQEAgaW50MzJfdCBDaGFubmVsU2VuZDo6U3RhcnRTZW5kKCkgewogICAgIF9y
dHBSdGNwTW9kdWxlLT5TZXRTZXF1ZW5jZU51bWJlcihzZW5kX3NlcXVlbmNlX251bWJlcl8pOwog
ICB9CiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRTZW5kaW5nTWVkaWFTdGF0dXModHJ1ZSk7Ci0gIGlm
IChfcnRwUnRjcE1vZHVsZS0+U2V0U2VuZGluZ1N0YXR1cyh0cnVlKSAhPSAwKSB7Ci0gICAgUlRD
X0RMT0coTFNfRVJST1IpIDw8ICJTdGFydFNlbmQoKSBSVFAvUlRDUCBmYWlsZWQgdG8gc3RhcnQg
c2VuZGluZyI7Ci0gICAgX3J0cFJ0Y3BNb2R1bGUtPlNldFNlbmRpbmdNZWRpYVN0YXR1cyhmYWxz
ZSk7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3MoJl9jYWxsYmFja0NyaXRTZWN0KTsKLSAgICBjaGFu
bmVsX3N0YXRlXy5TZXRTZW5kaW5nKGZhbHNlKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KKyAgaW50
IHJldCA9IF9ydHBSdGNwTW9kdWxlLT5TZXRTZW5kaW5nU3RhdHVzKHRydWUpOworICBSVENfRENI
RUNLX0VRKDAsIHJldCk7CiAgIHsKICAgICAvLyBJdCBpcyBub3cgT0sgdG8gc3RhcnQgcG9zdGlu
ZyB0YXNrcyB0byB0aGUgZW5jb2RlciB0YXNrIHF1ZXVlLgogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNz
KCZlbmNvZGVyX3F1ZXVlX2xvY2tfKTsKICAgICBlbmNvZGVyX3F1ZXVlX2lzX2FjdGl2ZV8gPSB0
cnVlOwogICB9Ci0gIHJldHVybiAwOwogfQogCiB2b2lkIENoYW5uZWxTZW5kOjpTdG9wU2VuZCgp
IHsKLSAgaWYgKCFjaGFubmVsX3N0YXRlXy5HZXQoKS5zZW5kaW5nKSB7CisgIFJUQ19EQ0hFQ0tf
UlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKKyAgaWYgKCFzZW5kaW5nXykgewogICAg
IHJldHVybjsKICAgfQotICBjaGFubmVsX3N0YXRlXy5TZXRTZW5kaW5nKGZhbHNlKTsKKyAgc2Vu
ZGluZ18gPSBmYWxzZTsKIAogICAvLyBQb3N0IGEgdGFzayB0byB0aGUgZW5jb2RlciB0aHJlYWQg
d2hpY2ggc2V0cyBhbiBldmVudCB3aGVuIHRoZSB0YXNrIGlzCiAgIC8vIGV4ZWN1dGVkLiBXZSBr
bm93IHRoYXQgbm8gbW9yZSBlbmNvZGluZyB0YXNrcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSB0YXNr
CkBAIC00OTEsNyArODIzLDcgQEAgdm9pZCBDaGFubmVsU2VuZDo6U3RvcFNlbmQoKSB7CiAgIC8v
IHRvIGFjY2Nlc3MgYW5kIGludmFsaWQgY2hhbm5lbCBvYmplY3QuCiAgIFJUQ19EQ0hFQ0soZW5j
b2Rlcl9xdWV1ZV8pOwogCi0gIHJ0Yzo6RXZlbnQgZmx1c2goZmFsc2UsIGZhbHNlKTsKKyAgcnRj
OjpFdmVudCBmbHVzaDsKICAgewogICAgIC8vIENsZWFyIHxlbmNvZGVyX3F1ZXVlX2lzX2FjdGl2
ZV98IHVuZGVyIGxvY2sgdG8gcHJldmVudCBhbnkgb3RoZXIgdGFza3MKICAgICAvLyB0aGFuIHRo
aXMgZmluYWwgImZsdXNoIHRhc2siIHRvIGJlIHBvc3RlZCBvbiB0aGUgcXVldWUuCkBAIC01MTks
NiArODUxLDcgQEAgdm9pZCBDaGFubmVsU2VuZDo6U3RvcFNlbmQoKSB7CiAKIGJvb2wgQ2hhbm5l
bFNlbmQ6OlNldEVuY29kZXIoaW50IHBheWxvYWRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2RlcikgeworICBSVENf
RENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIFJUQ19EQ0hFQ0tfR0Uo
cGF5bG9hZF90eXBlLCAwKTsKICAgUlRDX0RDSEVDS19MRShwYXlsb2FkX3R5cGUsIDEyNyk7CiAg
IC8vIFRPRE8ob3NzdSk6IE1ha2UgQ29kZWNJbnN0cyB1cCwgZm9yIG5vdzogb25lIGZvciB0aGUg
UlRQL1JUQ1AgbW9kdWxlIGFuZApAQCAtNTQ5LDI1ICs4ODIsNDggQEAgYm9vbCBDaGFubmVsU2Vu
ZDo6U2V0RW5jb2RlcihpbnQgcGF5bG9hZF90eXBlLAogICAgIH0KICAgfQogCisgIGlmIChtZWRp
YV90cmFuc3BvcnRfKSB7CisgICAgcnRjOjpDcml0U2NvcGUgY3MoJm1lZGlhX3RyYW5zcG9ydF9s
b2NrXyk7CisgICAgbWVkaWFfdHJhbnNwb3J0X3BheWxvYWRfdHlwZV8gPSBwYXlsb2FkX3R5cGU7
CisgICAgLy8gVE9ETyhuaXNzZSk6IEN1cnJlbnRseSBicm9rZW4gZm9yIEc3MjIsIHNpbmNlIHRp
bWVzdGFtcHMgcGFzc2VkIHRocm91Z2gKKyAgICAvLyBlbmNvZGVyIHVzZSBSVFAgY2xvY2sgcmF0
aGVyIHRoYW4gc2FtcGxlIGNvdW50LCBhbmQgdGhleSBkaWZmZXIgZm9yIEc3MjIuCisgICAgbWVk
aWFfdHJhbnNwb3J0X3NhbXBsaW5nX2ZyZXF1ZW5jeV8gPSBlbmNvZGVyLT5SdHBUaW1lc3RhbXBS
YXRlSHooKTsKKyAgfQogICBhdWRpb19jb2RpbmdfLT5TZXRFbmNvZGVyKHN0ZDo6bW92ZShlbmNv
ZGVyKSk7CiAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIENoYW5uZWxTZW5kOjpNb2RpZnlFbmNv
ZGVyKAogICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PHZvaWQoc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5j
b2Rlcj4qKT4gbW9kaWZpZXIpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRf
Y2hlY2tlcl8pOwogICBhdWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKG1vZGlmaWVyKTsKIH0K
IAotdm9pZCBDaGFubmVsU2VuZDo6U2V0Qml0UmF0ZShpbnQgYml0cmF0ZV9icHMsIGludDY0X3Qg
cHJvYmluZ19pbnRlcnZhbF9tcykgewordm9pZCBDaGFubmVsU2VuZDo6T25CaXRyYXRlQWxsb2Nh
dGlvbihCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpIHsKKyAgLy8gVGhpcyBtZXRob2Qg
Y2FuIGJlIGNhbGxlZCBvbiB0aGUgd29ya2VyIHRocmVhZCwgbW9kdWxlIHByb2Nlc3MgdGhyZWFk
CisgIC8vIG9yIG9uIGEgVGFza1F1ZXVlIHZpYSBWaWRlb1NlbmRTdHJlYW1JbXBsOjpPbkVuY29k
ZXJDb25maWd1cmF0aW9uQ2hhbmdlZC4KKyAgLy8gVE9ETyhzb2xlbmJlcmcpOiBGaWd1cmUgb3V0
IGEgZ29vZCB3YXkgdG8gY2hlY2sgdGhpcyBvciBlbmZvcmNlIGNhbGxpbmcKKyAgLy8gcnVsZXMu
CisgIC8vIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhy
ZWFkKCkgfHwKKyAgLy8gICAgICAgICAgICBtb2R1bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl8u
Q2FsbGVkT25WYWxpZFRocmVhZCgpKTsKKyAgcnRjOjpDcml0U2NvcGUgbG9jaygmYml0cmF0ZV9j
cml0X3NlY3Rpb25fKTsKKwogICBhdWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2RlcikgewogICAgIGlmICgqZW5jb2Rlcikg
ewotICAgICAgKCplbmNvZGVyKS0+T25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aChiaXRyYXRlX2Jw
cywgcHJvYmluZ19pbnRlcnZhbF9tcyk7CisgICAgICAoKmVuY29kZXIpLT5PblJlY2VpdmVkVXBs
aW5rQWxsb2NhdGlvbih1cGRhdGUpOwogICAgIH0KICAgfSk7Ci0gIHJldHJhbnNtaXNzaW9uX3Jh
dGVfbGltaXRlcl8tPlNldE1heFJhdGUoYml0cmF0ZV9icHMpOworICByZXRyYW5zbWlzc2lvbl9y
YXRlX2xpbWl0ZXJfLT5TZXRNYXhSYXRlKHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5icHMoKSk7Cisg
IGNvbmZpZ3VyZWRfYml0cmF0ZV9icHNfID0gdXBkYXRlLnRhcmdldF9iaXRyYXRlLmJwcygpOwor
fQorCitpbnQgQ2hhbm5lbFNlbmQ6OkdldEJpdHJhdGUoKSBjb25zdCB7CisgIHJ0Yzo6Q3JpdFNj
b3BlIGxvY2soJmJpdHJhdGVfY3JpdF9zZWN0aW9uXyk7CisgIHJldHVybiBjb25maWd1cmVkX2Jp
dHJhdGVfYnBzXzsKIH0KIAogdm9pZCBDaGFubmVsU2VuZDo6T25Ud2NjQmFzZWRVcGxpbmtQYWNr
ZXRMb3NzUmF0ZShmbG9hdCBwYWNrZXRfbG9zc19yYXRlKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09O
KCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgaWYgKCF1c2VfdHdjY19wbHJfZm9yX2FuYV8p
CiAgICAgcmV0dXJuOwogICBhdWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2RlcikgewpAQCAtNTc5LDYgKzkzNSw3IEBAIHZv
aWQgQ2hhbm5lbFNlbmQ6Ok9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUoZmxvYXQgcGFj
a2V0X2xvc3NfcmF0ZSkgewogCiB2b2lkIENoYW5uZWxTZW5kOjpPblJlY292ZXJhYmxlVXBsaW5r
UGFja2V0TG9zc1JhdGUoCiAgICAgZmxvYXQgcmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0ZSkg
eworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIGF1ZGlv
X2NvZGluZ18tPk1vZGlmeUVuY29kZXIoWyZdKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+
KiBlbmNvZGVyKSB7CiAgICAgaWYgKCplbmNvZGVyKSB7CiAgICAgICAoKmVuY29kZXIpLT5PblJl
Y2VpdmVkVXBsaW5rUmVjb3ZlcmFibGVQYWNrZXRMb3NzRnJhY3Rpb24oCkBAIC01OTcsNDcgKzk1
NCwyMiBAQCB2b2lkIENoYW5uZWxTZW5kOjpPblVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0IHBh
Y2tldF9sb3NzX3JhdGUpIHsKICAgfSk7CiB9CiAKLWJvb2wgQ2hhbm5lbFNlbmQ6OkVuYWJsZUF1
ZGlvTmV0d29ya0FkYXB0b3IoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZ19zdHJpbmcpIHsKLSAg
Ym9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gIGF1ZGlvX2NvZGluZ18tPk1vZGlmeUVuY29kZXIoWyZd
KHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmNvZGVyKSB7Ci0gICAgaWYgKCplbmNv
ZGVyKSB7Ci0gICAgICBzdWNjZXNzID0KLSAgICAgICAgICAoKmVuY29kZXIpLT5FbmFibGVBdWRp
b05ldHdvcmtBZGFwdG9yKGNvbmZpZ19zdHJpbmcsIGV2ZW50X2xvZ18pOwotICAgIH0KLSAgfSk7
Ci0gIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkIENoYW5uZWxTZW5kOjpEaXNhYmxlQXVkaW9O
ZXR3b3JrQWRhcHRvcigpIHsKLSAgYXVkaW9fY29kaW5nXy0+TW9kaWZ5RW5jb2RlcihbJl0oc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXIpIHsKLSAgICBpZiAoKmVuY29kZXIp
Ci0gICAgICAoKmVuY29kZXIpLT5EaXNhYmxlQXVkaW9OZXR3b3JrQWRhcHRvcigpOwotICB9KTsK
LX0KLQotdm9pZCBDaGFubmVsU2VuZDo6U2V0UmVjZWl2ZXJGcmFtZUxlbmd0aFJhbmdlKGludCBt
aW5fZnJhbWVfbGVuZ3RoX21zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBtYXhfZnJhbWVfbGVuZ3RoX21zKSB7Ci0gIGF1ZGlvX2NvZGluZ18tPk1v
ZGlmeUVuY29kZXIoWyZdKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmNvZGVyKSB7
Ci0gICAgaWYgKCplbmNvZGVyKSB7Ci0gICAgICAoKmVuY29kZXIpLT5TZXRSZWNlaXZlckZyYW1l
TGVuZ3RoUmFuZ2UobWluX2ZyYW1lX2xlbmd0aF9tcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXhfZnJhbWVfbGVuZ3RoX21zKTsKLSAgICB9Ci0gIH0p
OwotfQotCi12b2lkIENoYW5uZWxTZW5kOjpSZWdpc3RlclRyYW5zcG9ydChUcmFuc3BvcnQqIHRy
YW5zcG9ydCkgewotICBydGM6OkNyaXRTY29wZSBjcygmX2NhbGxiYWNrQ3JpdFNlY3QpOwotICBf
dHJhbnNwb3J0UHRyID0gdHJhbnNwb3J0OwotfQorLy8gVE9ETyhuaXNzZSk6IERlbGV0ZSBhbHdh
eXMtdHJ1ZSByZXR1cm4gdmFsdWUuCitib29sIENoYW5uZWxTZW5kOjpSZWNlaXZlZFJUQ1BQYWNr
ZXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeworICAvLyBNYXkgYmUgY2Fs
bGVkIG9uIGVpdGhlciB3b3JrZXIgdGhyZWFkIG9yIG5ldHdvcmsgdGhyZWFkLgorICBpZiAobWVk
aWFfdHJhbnNwb3J0XykgeworICAgIC8vIElnbm9yZSBSVENQIHBhY2tldHMgd2hpbGUgbWVkaWEg
dHJhbnNwb3J0IGlzIHVzZWQuCisgICAgLy8gVGhvc2UgcGFja2V0cyBzaG91bGQgbm90IGFycml2
ZSwgYnV0IHdlIGFyZSBzZWVpbmcgb2NjYXNpb25hbCBwYWNrZXRzLgorICAgIHJldHVybiAwOwor
ICB9CiAKLWludDMyX3QgQ2hhbm5lbFNlbmQ6OlJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7CiAgIC8vIERlbGl2ZXIgUlRDUCBwYWNrZXQgdG8g
UlRQL1JUQ1AgbW9kdWxlIGZvciBwYXJzaW5nCiAgIF9ydHBSdGNwTW9kdWxlLT5JbmNvbWluZ1J0
Y3BQYWNrZXQoZGF0YSwgbGVuZ3RoKTsKIAogICBpbnQ2NF90IHJ0dCA9IEdldFJUVCgpOwogICBp
ZiAocnR0ID09IDApIHsKICAgICAvLyBXYWl0aW5nIGZvciB2YWxpZCBSVFQuCi0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICBpbnQ2NF90IG5hY2tfd2luZG93X21zID0g
cnR0OwpAQCAtNjQ4LDE2ICs5ODAsMTIgQEAgaW50MzJfdCBDaGFubmVsU2VuZDo6UmVjZWl2ZWRS
VENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsKICAgfQogICBy
ZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLT5TZXRXaW5kb3dTaXplKG5hY2tfd2luZG93X21z
KTsKIAotICAvLyBJbnZva2UgYXVkaW8gZW5jb2RlcnMgT25SZWNlaXZlZFJ0dCgpLgotICBhdWRp
b19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVy
PiogZW5jb2RlcikgewotICAgIGlmICgqZW5jb2RlcikKLSAgICAgICgqZW5jb2RlciktPk9uUmVj
ZWl2ZWRSdHQocnR0KTsKLSAgfSk7Ci0KLSAgcmV0dXJuIDA7CisgIE9uUmVjZWl2ZWRSdHQocnR0
KTsKKyAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQ2hhbm5lbFNlbmQ6OlNldElucHV0TXV0ZShi
b29sIGVuYWJsZSkgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2Vy
Xyk7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZ2b2x1bWVfc2V0dGluZ3NfY3JpdHNlY3RfKTsKICAg
aW5wdXRfbXV0ZV8gPSBlbmFibGU7CiB9CkBAIC02NjcsMjQgKzk5NSwyNiBAQCBib29sIENoYW5u
ZWxTZW5kOjpJbnB1dE11dGUoKSBjb25zdCB7CiAgIHJldHVybiBpbnB1dF9tdXRlXzsKIH0KIAot
aW50IENoYW5uZWxTZW5kOjpTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGludCBldmVudCwgaW50
IGR1cmF0aW9uX21zKSB7Citib29sIENoYW5uZWxTZW5kOjpTZW5kVGVsZXBob25lRXZlbnRPdXRi
YW5kKGludCBldmVudCwgaW50IGR1cmF0aW9uX21zKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3
b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgUlRDX0RDSEVDS19MRSgwLCBldmVudCk7CiAgIFJU
Q19EQ0hFQ0tfR0UoMjU1LCBldmVudCk7CiAgIFJUQ19EQ0hFQ0tfTEUoMCwgZHVyYXRpb25fbXMp
OwogICBSVENfRENIRUNLX0dFKDY1NTM1LCBkdXJhdGlvbl9tcyk7Ci0gIGlmICghU2VuZGluZygp
KSB7Ci0gICAgcmV0dXJuIC0xOworICBpZiAoIXNlbmRpbmdfKSB7CisgICAgcmV0dXJuIGZhbHNl
OwogICB9CiAgIGlmIChfcnRwUnRjcE1vZHVsZS0+U2VuZFRlbGVwaG9uZUV2ZW50T3V0YmFuZCgK
ICAgICAgICAgICBldmVudCwgZHVyYXRpb25fbXMsIGtUZWxlcGhvbmVFdmVudEF0dGVudWF0aW9u
ZEIpICE9IDApIHsKICAgICBSVENfRExPRyhMU19FUlJPUikgPDwgIlNlbmRUZWxlcGhvbmVFdmVu
dE91dGJhbmQoKSBmYWlsZWQgdG8gc2VuZCBldmVudCI7Ci0gICAgcmV0dXJuIC0xOworICAgIHJl
dHVybiBmYWxzZTsKICAgfQotICByZXR1cm4gMDsKKyAgcmV0dXJuIHRydWU7CiB9CiAKLWludCBD
aGFubmVsU2VuZDo6U2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBheWxvYWRf
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHBheWxvYWRfZnJlcXVlbmN5KSB7Citib29sIENoYW5uZWxTZW5kOjpTZXRTZW5kVGVsZXBo
b25lRXZlbnRQYXlsb2FkVHlwZShpbnQgcGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBheWxvYWRfZnJlcXVlbmN5KSB7
CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgUlRDX0RD
SEVDS19MRSgwLCBwYXlsb2FkX3R5cGUpOwogICBSVENfRENIRUNLX0dFKDEyNywgcGF5bG9hZF90
eXBlKTsKICAgQ29kZWNJbnN0IGNvZGVjID0gezB9OwpAQCAtNjk3LDM0ICsxMDI3LDQ0IEBAIGlu
dCBDaGFubmVsU2VuZDo6U2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBheWxv
YWRfdHlwZSwKICAgICAgIFJUQ19ETE9HKExTX0VSUk9SKQogICAgICAgICAgIDw8ICJTZXRTZW5k
VGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZSgpIGZhaWxlZCB0byByZWdpc3RlciAiCiAgICAgICAg
ICAgICAgInNlbmQgcGF5bG9hZCB0eXBlIjsKLSAgICAgIHJldHVybiAtMTsKKyAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgIH0KLSAgcmV0dXJuIDA7CisgIHJldHVybiB0cnVlOwogfQogCi1p
bnQgQ2hhbm5lbFNlbmQ6OlNldExvY2FsU1NSQyh1bnNpZ25lZCBpbnQgc3NyYykgewotICBpZiAo
Y2hhbm5lbF9zdGF0ZV8uR2V0KCkuc2VuZGluZykgewotICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8
PCAiU2V0TG9jYWxTU1JDKCkgYWxyZWFkeSBzZW5kaW5nIjsKLSAgICByZXR1cm4gLTE7Cit2b2lk
IENoYW5uZWxTZW5kOjpTZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYykgeworICBSVENfRENIRUNL
X1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CisgIFJUQ19EQ0hFQ0soIXNlbmRpbmdf
KTsKKworICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZt
ZWRpYV90cmFuc3BvcnRfbG9ja18pOworICAgIG1lZGlhX3RyYW5zcG9ydF9jaGFubmVsX2lkXyA9
IHNzcmM7CiAgIH0KICAgX3J0cFJ0Y3BNb2R1bGUtPlNldFNTUkMoc3NyYyk7Ci0gIHJldHVybiAw
OwogfQogCiB2b2lkIENoYW5uZWxTZW5kOjpTZXRNaWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwg
aW50IGV4dGVuc2lvbl9pZCkgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9j
aGVja2VyXyk7CiAgIGludCByZXQgPSBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKHRydWUsIGtS
dHBFeHRlbnNpb25NaWQsIGV4dGVuc2lvbl9pZCk7CiAgIFJUQ19EQ0hFQ0tfRVEoMCwgcmV0KTsK
ICAgX3J0cFJ0Y3BNb2R1bGUtPlNldE1pZChtaWQpOwogfQogCi1pbnQgQ2hhbm5lbFNlbmQ6OlNl
dFNlbmRBdWRpb0xldmVsSW5kaWNhdGlvblN0YXR1cyhib29sIGVuYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaWQp
IHsKK3ZvaWQgQ2hhbm5lbFNlbmQ6OlNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxs
b3dfbWl4ZWQpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8p
OworICBfcnRwUnRjcE1vZHVsZS0+U2V0RXh0bWFwQWxsb3dNaXhlZChleHRtYXBfYWxsb3dfbWl4
ZWQpOworfQorCit2b2lkIENoYW5uZWxTZW5kOjpTZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25T
dGF0dXMoYm9vbCBlbmFibGUsIGludCBpZCkgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2Vy
X3RocmVhZF9jaGVja2VyXyk7CiAgIF9pbmNsdWRlQXVkaW9MZXZlbEluZGljYXRpb24gPSBlbmFi
bGU7Ci0gIHJldHVybiBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKGVuYWJsZSwga1J0cEV4dGVu
c2lvbkF1ZGlvTGV2ZWwsIGlkKTsKKyAgaW50IHJldCA9IFNldFNlbmRSdHBIZWFkZXJFeHRlbnNp
b24oZW5hYmxlLCBrUnRwRXh0ZW5zaW9uQXVkaW9MZXZlbCwgaWQpOworICBSVENfRENIRUNLX0VR
KDAsIHJldCk7CiB9CiAKIHZvaWQgQ2hhbm5lbFNlbmQ6OkVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1
ZW5jZU51bWJlcihpbnQgaWQpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRf
Y2hlY2tlcl8pOwogICBpbnQgcmV0ID0KICAgICAgIFNldFNlbmRSdHBIZWFkZXJFeHRlbnNpb24o
dHJ1ZSwga1J0cEV4dGVuc2lvblRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyLCBpZCk7CiAgIFJUQ19E
Q0hFQ0tfRVEoMCwgcmV0KTsKQEAgLTczMyw2ICsxMDczLDcgQEAgdm9pZCBDaGFubmVsU2VuZDo6
RW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKGludCBpZCkgewogdm9pZCBDaGFubmVs
U2VuZDo6UmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCiAgICAgUnRwVHJh
bnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHRyYW5zcG9ydCwKICAgICBSdGNwQmFuZHdp
ZHRoT2JzZXJ2ZXIqIGJhbmR3aWR0aF9vYnNlcnZlcikgeworICBSVENfRENIRUNLX1JVTl9PTigm
d29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIFJ0cFBhY2tldFNlbmRlciogcnRwX3BhY2tldF9z
ZW5kZXIgPSB0cmFuc3BvcnQtPnBhY2tldF9zZW5kZXIoKTsKICAgVHJhbnNwb3J0RmVlZGJhY2tP
YnNlcnZlciogdHJhbnNwb3J0X2ZlZWRiYWNrX29ic2VydmVyID0KICAgICAgIHRyYW5zcG9ydC0+
dHJhbnNwb3J0X2ZlZWRiYWNrX29ic2VydmVyKCk7CkBAIC03NTQsNiArMTA5NSw3IEBAIHZvaWQg
Q2hhbm5lbFNlbmQ6OlJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAogfQog
CiB2b2lkIENoYW5uZWxTZW5kOjpSZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygp
IHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwogICBSVENf
RENIRUNLKHBhY2tldF9yb3V0ZXJfKTsKICAgX3J0cFJ0Y3BNb2R1bGUtPlNldFN0b3JlUGFja2V0
c1N0YXR1cyhmYWxzZSwgNjAwKTsKICAgcnRjcF9vYnNlcnZlcl8tPlNldEJhbmR3aWR0aE9ic2Vy
dmVyKG51bGxwdHIpOwpAQCAtNzY0LDM1ICsxMTA2LDI1IEBAIHZvaWQgQ2hhbm5lbFNlbmQ6OlJl
c2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCkgewogICBydHBfcGFja2V0X3NlbmRl
cl9wcm94eV8tPlNldFBhY2tldFNlbmRlcihudWxscHRyKTsKIH0KIAotdm9pZCBDaGFubmVsU2Vu
ZDo6U2V0UlRDUFN0YXR1cyhib29sIGVuYWJsZSkgewotICBfcnRwUnRjcE1vZHVsZS0+U2V0UlRD
UFN0YXR1cyhlbmFibGUgPyBSdGNwTW9kZTo6a0NvbXBvdW5kIDogUnRjcE1vZGU6OmtPZmYpOwot
fQotCi1pbnQgQ2hhbm5lbFNlbmQ6OlNldFJUQ1BfQ05BTUUoY29uc3QgY2hhciBjTmFtZVsyNTZd
KSB7Ci0gIGlmIChfcnRwUnRjcE1vZHVsZS0+U2V0Q05BTUUoY05hbWUpICE9IDApIHsKLSAgICBS
VENfRExPRyhMU19FUlJPUikgPDwgIlNldFJUQ1BfQ05BTUUoKSBmYWlsZWQgdG8gc2V0IFJUQ1Ag
Q05BTUUiOwotICAgIHJldHVybiAtMTsKLSAgfQotICByZXR1cm4gMDsKK3ZvaWQgQ2hhbm5lbFNl
bmQ6OlNldFJUQ1BfQ05BTUUoYWJzbDo6c3RyaW5nX3ZpZXcgY19uYW1lKSB7CisgIFJUQ19EQ0hF
Q0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKKyAgLy8gTm90ZTogU2V0Q05BTUUo
KSBhY2NlcHRzIGEgYyBzdHJpbmcgb2YgbGVuZ3RoIGF0IG1vc3QgMjU1LgorICBjb25zdCBzdGQ6
OnN0cmluZyBjX25hbWVfbGltaXRlZChjX25hbWUuc3Vic3RyKDAsIDI1NSkpOworICBpbnQgcmV0
ID0gX3J0cFJ0Y3BNb2R1bGUtPlNldENOQU1FKGNfbmFtZV9saW1pdGVkLmNfc3RyKCkpICE9IDA7
CisgIFJUQ19EQ0hFQ0tfRVEoMCwgcmV0KSA8PCAiU2V0UlRDUF9DTkFNRSgpIGZhaWxlZCB0byBz
ZXQgUlRDUCBDTkFNRSI7CiB9CiAKLWludCBDaGFubmVsU2VuZDo6R2V0UmVtb3RlUlRDUFJlcG9y
dEJsb2NrcygKLSAgICBzdGQ6OnZlY3RvcjxSZXBvcnRCbG9jaz4qIHJlcG9ydF9ibG9ja3MpIHsK
LSAgaWYgKHJlcG9ydF9ibG9ja3MgPT0gTlVMTCkgewotICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8
PCAiR2V0UmVtb3RlUlRDUFJlcG9ydEJsb2NrKClzIGludmFsaWQgcmVwb3J0X2Jsb2Nrcy4iOwot
ICAgIHJldHVybiAtMTsKLSAgfQotCitzdGQ6OnZlY3RvcjxSZXBvcnRCbG9jaz4gQ2hhbm5lbFNl
bmQ6OkdldFJlbW90ZVJUQ1BSZXBvcnRCbG9ja3MoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0tfUlVO
X09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgLy8gR2V0IHRoZSByZXBvcnQgYmxvY2tz
IGZyb20gdGhlIGxhdGVzdCByZWNlaXZlZCBSVENQIFNlbmRlciBvciBSZWNlaXZlcgogICAvLyBS
ZXBvcnQuIEVhY2ggZWxlbWVudCBpbiB0aGUgdmVjdG9yIGNvbnRhaW5zIHRoZSBzZW5kZXIncyBT
U1JDIGFuZCBhCiAgIC8vIHJlcG9ydCBibG9jayBhY2NvcmRpbmcgdG8gUkZDIDM1NTAuCiAgIHN0
ZDo6dmVjdG9yPFJUQ1BSZXBvcnRCbG9jaz4gcnRjcF9yZXBvcnRfYmxvY2tzOwotICBpZiAoX3J0
cFJ0Y3BNb2R1bGUtPlJlbW90ZVJUQ1BTdGF0KCZydGNwX3JlcG9ydF9ibG9ja3MpICE9IDApIHsK
LSAgICByZXR1cm4gLTE7Ci0gIH0KIAotICBpZiAocnRjcF9yZXBvcnRfYmxvY2tzLmVtcHR5KCkp
Ci0gICAgcmV0dXJuIDA7CisgIGludCByZXQgPSBfcnRwUnRjcE1vZHVsZS0+UmVtb3RlUlRDUFN0
YXQoJnJ0Y3BfcmVwb3J0X2Jsb2Nrcyk7CisgIFJUQ19EQ0hFQ0tfRVEoMCwgcmV0KTsKKworICBz
dGQ6OnZlY3RvcjxSZXBvcnRCbG9jaz4gcmVwb3J0X2Jsb2NrczsKIAogICBzdGQ6OnZlY3RvcjxS
VENQUmVwb3J0QmxvY2s+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHJ0Y3BfcmVwb3J0X2Jsb2Nrcy5i
ZWdpbigpOwogICBmb3IgKDsgaXQgIT0gcnRjcF9yZXBvcnRfYmxvY2tzLmVuZCgpOyArK2l0KSB7
CkBAIC04MDYsMTkgKzExMzgsMTYgQEAgaW50IENoYW5uZWxTZW5kOjpHZXRSZW1vdGVSVENQUmVw
b3J0QmxvY2tzKAogICAgIHJlcG9ydF9ibG9jay5pbnRlcmFycml2YWxfaml0dGVyID0gaXQtPmpp
dHRlcjsKICAgICByZXBvcnRfYmxvY2subGFzdF9TUl90aW1lc3RhbXAgPSBpdC0+bGFzdF9zZW5k
ZXJfcmVwb3J0X3RpbWVzdGFtcDsKICAgICByZXBvcnRfYmxvY2suZGVsYXlfc2luY2VfbGFzdF9T
UiA9IGl0LT5kZWxheV9zaW5jZV9sYXN0X3NlbmRlcl9yZXBvcnQ7Ci0gICAgcmVwb3J0X2Jsb2Nr
cy0+cHVzaF9iYWNrKHJlcG9ydF9ibG9jayk7CisgICAgcmVwb3J0X2Jsb2Nrcy5wdXNoX2JhY2so
cmVwb3J0X2Jsb2NrKTsKICAgfQotICByZXR1cm4gMDsKKyAgcmV0dXJuIHJlcG9ydF9ibG9ja3M7
CiB9CiAKLWludCBDaGFubmVsU2VuZDo6R2V0UlRQU3RhdGlzdGljcyhDYWxsU2VuZFN0YXRpc3Rp
Y3MmIHN0YXRzKSB7Ci0gIC8vIC0tLSBSdGNwU3RhdGlzdGljcwotCi0gIC8vIC0tLSBSVFQKK0Nh
bGxTZW5kU3RhdGlzdGljcyBDaGFubmVsU2VuZDo6R2V0UlRDUFN0YXRpc3RpY3MoKSBjb25zdCB7
CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKKyAgQ2FsbFNl
bmRTdGF0aXN0aWNzIHN0YXRzID0gezB9OwogICBzdGF0cy5ydHRNcyA9IEdldFJUVCgpOwogCi0g
IC8vIC0tLSBEYXRhIGNvdW50ZXJzCi0KICAgc2l6ZV90IGJ5dGVzU2VudCgwKTsKICAgdWludDMy
X3QgcGFja2V0c1NlbnQoMCk7CiAKQEAgLTgzMSwyNCArMTE2MCwxMiBAQCBpbnQgQ2hhbm5lbFNl
bmQ6OkdldFJUUFN0YXRpc3RpY3MoQ2FsbFNlbmRTdGF0aXN0aWNzJiBzdGF0cykgewogICBzdGF0
cy5ieXRlc1NlbnQgPSBieXRlc1NlbnQ7CiAgIHN0YXRzLnBhY2tldHNTZW50ID0gcGFja2V0c1Nl
bnQ7CiAKLSAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmQ6OlNldE5BQ0tTdGF0dXMo
Ym9vbCBlbmFibGUsIGludCBtYXhOdW1iZXJPZlBhY2tldHMpIHsKLSAgLy8gTm9uZSBvZiB0aGVz
ZSBmdW5jdGlvbnMgY2FuIGZhaWwuCi0gIGlmIChlbmFibGUpCi0gICAgYXVkaW9fY29kaW5nXy0+
RW5hYmxlTmFjayhtYXhOdW1iZXJPZlBhY2tldHMpOwotICBlbHNlCi0gICAgYXVkaW9fY29kaW5n
Xy0+RGlzYWJsZU5hY2soKTsKLX0KLQotLy8gQ2FsbGVkIHdoZW4gd2UgYXJlIG1pc3Npbmcgb25l
IG9yIG1vcmUgcGFja2V0cy4KLWludCBDaGFubmVsU2VuZDo6UmVzZW5kUGFja2V0cyhjb25zdCB1
aW50MTZfdCogc2VxdWVuY2VfbnVtYmVycywgaW50IGxlbmd0aCkgewotICByZXR1cm4gX3J0cFJ0
Y3BNb2R1bGUtPlNlbmROQUNLKHNlcXVlbmNlX251bWJlcnMsIGxlbmd0aCk7CisgIHJldHVybiBz
dGF0czsKIH0KIAogdm9pZCBDaGFubmVsU2VuZDo6UHJvY2Vzc0FuZEVuY29kZUF1ZGlvKAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19mcmFtZSkgeworICBSVENfRENIRUNL
X1JVTlNfU0VSSUFMSVpFRCgmYXVkaW9fdGhyZWFkX3JhY2VfY2hlY2tlcl8pOwogICAvLyBBdm9p
ZCBwb3N0aW5nIGFueSBuZXcgdGFza3MgaWYgc2VuZGluZyB3YXMgYWxyZWFkeSBzdG9wcGVkIGlu
IFN0b3BTZW5kKCkuCiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZlbmNvZGVyX3F1ZXVlX2xvY2tfKTsK
ICAgaWYgKCFlbmNvZGVyX3F1ZXVlX2lzX2FjdGl2ZV8pIHsKQEAgLTkxNCw2ICsxMjMxLDcgQEAg
dm9pZCBDaGFubmVsU2VuZDo6VXBkYXRlT3ZlcmhlYWRGb3JFbmNvZGVyKCkgewogfQogCiB2b2lk
IENoYW5uZWxTZW5kOjpTZXRUcmFuc3BvcnRPdmVyaGVhZChzaXplX3QgdHJhbnNwb3J0X292ZXJo
ZWFkX3Blcl9wYWNrZXQpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hl
Y2tlcl8pOwogICBydGM6OkNyaXRTY29wZSBjcygmb3ZlcmhlYWRfcGVyX3BhY2tldF9sb2NrXyk7
CiAgIHRyYW5zcG9ydF9vdmVyaGVhZF9wZXJfcGFja2V0XyA9IHRyYW5zcG9ydF9vdmVyaGVhZF9w
ZXJfcGFja2V0OwogICBVcGRhdGVPdmVyaGVhZEZvckVuY29kZXIoKTsKQEAgLTkyNywzNiArMTI0
NSw0MiBAQCB2b2lkIENoYW5uZWxTZW5kOjpPbk92ZXJoZWFkQ2hhbmdlZChzaXplX3Qgb3Zlcmhl
YWRfYnl0ZXNfcGVyX3BhY2tldCkgewogfQogCiBBTkFTdGF0cyBDaGFubmVsU2VuZDo6R2V0QU5B
U3RhdGlzdGljcygpIGNvbnN0IHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRf
Y2hlY2tlcl8pOwogICByZXR1cm4gYXVkaW9fY29kaW5nXy0+R2V0QU5BU3RhdHMoKTsKIH0KIAog
UnRwUnRjcCogQ2hhbm5lbFNlbmQ6OkdldFJ0cFJ0Y3AoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0so
bW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAg
IHJldHVybiBfcnRwUnRjcE1vZHVsZS5nZXQoKTsKIH0KIAogaW50IENoYW5uZWxTZW5kOjpTZXRT
ZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKGJvb2wgZW5hYmxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJUUEV4dGVuc2lvblR5cGUgdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGlkKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlkKSB7CiAgIGludCBl
cnJvciA9IDA7CiAgIF9ydHBSdGNwTW9kdWxlLT5EZXJlZ2lzdGVyU2VuZFJ0cEhlYWRlckV4dGVu
c2lvbih0eXBlKTsKICAgaWYgKGVuYWJsZSkgewotICAgIGVycm9yID0gX3J0cFJ0Y3BNb2R1bGUt
PlJlZ2lzdGVyU2VuZFJ0cEhlYWRlckV4dGVuc2lvbih0eXBlLCBpZCk7CisgICAgLy8gVE9ETyhu
aXNzZSk6IFJ0cFJ0Y3A6OlJlZ2lzdGVyU2VuZFJ0cEhlYWRlckV4dGVuc2lvbiB0byB0YWtlIGFu
IGludAorICAgIC8vIGFyZ3VtZW50LiBDdXJyZW50bHkgaXQgd2FudHMgYW4gdWludDhfdC4KKyAg
ICBlcnJvciA9IF9ydHBSdGNwTW9kdWxlLT5SZWdpc3RlclNlbmRSdHBIZWFkZXJFeHRlbnNpb24o
CisgICAgICAgIHR5cGUsIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50OF90PihpZCkpOwogICB9CiAg
IHJldHVybiBlcnJvcjsKIH0KIAotaW50IENoYW5uZWxTZW5kOjpHZXRSdHBUaW1lc3RhbXBSYXRl
SHooKSBjb25zdCB7Ci0gIGNvbnN0IGF1dG8gZm9ybWF0ID0gYXVkaW9fY29kaW5nXy0+UmVjZWl2
ZUZvcm1hdCgpOwotICAvLyBEZWZhdWx0IHRvIHRoZSBwbGF5b3V0IGZyZXF1ZW5jeSBpZiB3ZSd2
ZSBub3QgZ290dGVuIGFueSBwYWNrZXRzIHlldC4KLSAgLy8gVE9ETyhvc3N1KTogWmVybyBjbG9j
a3JhdGUgY2FuIG9ubHkgaGFwcGVuIGlmIHdlJ3ZlIGFkZGVkIGFuIGV4dGVybmFsCi0gIC8vIGRl
Y29kZXIgZm9yIGEgZm9ybWF0IHdlIGRvbid0IHN1cHBvcnQgaW50ZXJuYWxseS4gUmVtb3ZlIG9u
Y2UgdGhhdCB3YXkgb2YKLSAgLy8gYWRkaW5nIGRlY29kZXJzIGlzIGdvbmUhCi0gIHJldHVybiAo
Zm9ybWF0ICYmIGZvcm1hdC0+Y2xvY2tyYXRlX2h6ICE9IDApCi0gICAgICAgICAgICAgPyBmb3Jt
YXQtPmNsb2NrcmF0ZV9oegotICAgICAgICAgICAgIDogYXVkaW9fY29kaW5nXy0+UGxheW91dEZy
ZXF1ZW5jeSgpOwotfQotCiBpbnQ2NF90IENoYW5uZWxTZW5kOjpHZXRSVFQoKSBjb25zdCB7Cisg
IGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgLy8gR2V0UlRUIGlzIGdlbmVyYWxseSB1c2Vk
IGluIHRoZSBSVENQIGNvZGVwYXRoLCB3aGVyZSBtZWRpYSB0cmFuc3BvcnQgaXMKKyAgICAvLyBu
b3QgcHJlc2VudCBhbmQgc28gaXQgc2hvdWxkbid0IGJlIG5lZWRlZC4gQnV0IGl0J3MgYWxzbyBp
bnZva2VkIGluCisgICAgLy8gJ0dldFN0YXRzJyBtZXRob2QsIGFuZCBmb3Igbm93IHJldHVybmlu
ZyBtZWRpYSB0cmFuc3BvcnQgUlRUIGhlcmUgZ2l2ZXMKKyAgICAvLyB1cyAiZnJlZSIgcnR0IHN0
YXRzIGZvciBtZWRpYSB0cmFuc3BvcnQuCisgICAgYXV0byB0YXJnZXRfcmF0ZSA9IG1lZGlhX3Ry
YW5zcG9ydF8tPkdldExhdGVzdFRhcmdldFRyYW5zZmVyUmF0ZSgpOworICAgIGlmICh0YXJnZXRf
cmF0ZS5oYXNfdmFsdWUoKSkgeworICAgICAgcmV0dXJuIHRhcmdldF9yYXRlLnZhbHVlKCkubmV0
d29ya19lc3RpbWF0ZS5yb3VuZF90cmlwX3RpbWUubXMoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
MDsKKyAgfQogICBSdGNwTW9kZSBtZXRob2QgPSBfcnRwUnRjcE1vZHVsZS0+UlRDUCgpOwogICBp
ZiAobWV0aG9kID09IFJ0Y3BNb2RlOjprT2ZmKSB7CiAgICAgcmV0dXJuIDA7CkBAIC05ODEsMTYg
KzEzMDUsNTIgQEAgaW50NjRfdCBDaGFubmVsU2VuZDo6R2V0UlRUKCkgY29uc3QgewogICByZXR1
cm4gcnR0OwogfQogCi12b2lkIENoYW5uZWxTZW5kOjpTZXRGcmFtZUVuY3J5cHRvcihGcmFtZUVu
Y3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yKSB7Cit2b2lkIENoYW5uZWxTZW5kOjpT
ZXRGcmFtZUVuY3J5cHRvcigKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJ
bnRlcmZhY2U+IGZyYW1lX2VuY3J5cHRvcikgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2Vy
X3RocmVhZF9jaGVja2VyXyk7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZlbmNvZGVyX3F1ZXVlX2xv
Y2tfKTsKICAgaWYgKGVuY29kZXJfcXVldWVfaXNfYWN0aXZlXykgewogICAgIGVuY29kZXJfcXVl
dWVfLT5Qb3N0VGFzayhbdGhpcywgZnJhbWVfZW5jcnlwdG9yXSgpIHsKLSAgICAgIHRoaXMtPmZy
YW1lX2VuY3J5cHRvcl8gPSBmcmFtZV9lbmNyeXB0b3I7CisgICAgICB0aGlzLT5mcmFtZV9lbmNy
eXB0b3JfID0gc3RkOjptb3ZlKGZyYW1lX2VuY3J5cHRvcik7CiAgICAgfSk7CiAgIH0gZWxzZSB7
Ci0gICAgZnJhbWVfZW5jcnlwdG9yXyA9IGZyYW1lX2VuY3J5cHRvcjsKKyAgICBmcmFtZV9lbmNy
eXB0b3JfID0gc3RkOjptb3ZlKGZyYW1lX2VuY3J5cHRvcik7CiAgIH0KIH0KIAordm9pZCBDaGFu
bmVsU2VuZDo6T25UYXJnZXRUcmFuc2ZlclJhdGUoVGFyZ2V0VHJhbnNmZXJSYXRlIHJhdGUpIHsK
KyAgUlRDX0RDSEVDSyhtZWRpYV90cmFuc3BvcnRfKTsKKyAgT25SZWNlaXZlZFJ0dChyYXRlLm5l
dHdvcmtfZXN0aW1hdGUucm91bmRfdHJpcF90aW1lLm1zKCkpOworfQorCit2b2lkIENoYW5uZWxT
ZW5kOjpPblJlY2VpdmVkUnR0KGludDY0X3QgcnR0X21zKSB7CisgIC8vIEludm9rZSBhdWRpbyBl
bmNvZGVycyBPblJlY2VpdmVkUnR0KCkuCisgIGF1ZGlvX2NvZGluZ18tPk1vZGlmeUVuY29kZXIo
CisgICAgICBbcnR0X21zXShzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2Rlcikg
eworICAgICAgICBpZiAoKmVuY29kZXIpIHsKKyAgICAgICAgICAoKmVuY29kZXIpLT5PblJlY2Vp
dmVkUnR0KHJ0dF9tcyk7CisgICAgICAgIH0KKyAgICAgIH0pOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UKKworc3RkOjp1bmlxdWVfcHRyPENoYW5uZWxTZW5kSW50ZXJmYWNlPiBDcmVhdGVDaGFubmVs
U2VuZCgKKyAgICBydGM6OlRhc2tRdWV1ZSogZW5jb2Rlcl9xdWV1ZSwKKyAgICBQcm9jZXNzVGhy
ZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCisgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2Uq
IG1lZGlhX3RyYW5zcG9ydCwKKyAgICBUcmFuc3BvcnQqIHJ0cF90cmFuc3BvcnQsCisgICAgUnRj
cFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0cywKKyAgICBSdGNFdmVudExvZyogcnRjX2V2ZW50X2xv
ZywKKyAgICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAgIGNv
bnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgYm9vbCBleHRt
YXBfYWxsb3dfbWl4ZWQsCisgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zKSB7CisgIHJl
dHVybiBhYnNsOjptYWtlX3VuaXF1ZTxDaGFubmVsU2VuZD4oCisgICAgICBlbmNvZGVyX3F1ZXVl
LCBtb2R1bGVfcHJvY2Vzc190aHJlYWQsIG1lZGlhX3RyYW5zcG9ydCwgcnRwX3RyYW5zcG9ydCwK
KyAgICAgIHJ0Y3BfcnR0X3N0YXRzLCBydGNfZXZlbnRfbG9nLCBmcmFtZV9lbmNyeXB0b3IsIGNy
eXB0b19vcHRpb25zLAorICAgICAgZXh0bWFwX2FsbG93X21peGVkLCBydGNwX3JlcG9ydF9pbnRl
cnZhbF9tcyk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB2b2UKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2F1ZGlvL2NoYW5uZWxfc2VuZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9zZW5kLmgKaW5kZXggZWY5MmY4ZTg0ZWI2MGYwOGZiYjI3
MjA5ZmE3OTZhNTYyOGUzZDgyYS4uMDgzZTlhNjAyOTMwNjdiZjYwZmUyYWI4Njc1NjU4ZWJjNjQ4
YjExYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXVkaW8vY2hhbm5lbF9zZW5kLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9zZW5kLmgKQEAgLTExLDQyICsxMSwyNiBAQAog
I2lmbmRlZiBBVURJT19DSEFOTkVMX1NFTkRfSF8KICNkZWZpbmUgQVVESU9fQ0hBTk5FTF9TRU5E
X0hfCiAKLSNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmlu
Zz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUu
aCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuaCIKLSNpbmNsdWRl
ICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1
ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9ybXNfbGV2ZWwuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIK
KyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Ny
aXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2Z1bmN0aW9uX3ZpZXcuaCIKICNp
bmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFk
X2NoZWNrZXIuaCIKLQotLy8gVE9ETyhzb2xlbmJlcmcsIG5pc3NlKTogVGhpcyBmaWxlIGNvbnRh
aW5zIGEgZmV3IE5PTElOVCBtYXJrcywgdG8gc2lsZW5jZQotLy8gd2FybmluZ3MgYWJvdXQgdXNl
IG9mIHVuc2lnbmVkIHNob3J0LCBhbmQgbm9uLWNvbnN0IHJlZmVyZW5jZSBhcmd1bWVudHMuCi0v
LyBUaGVzZSBuZWVkIGNsZWFudXAsIGluIGEgc2VwYXJhdGUgY2wuCi0KLW5hbWVzcGFjZSBydGMg
ewotY2xhc3MgVGltZXN0YW1wV3JhcEFyb3VuZEhhbmRsZXI7Ci19CiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogCiBjbGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsKLWNsYXNzIFBhY2tldFJvdXRl
cjsKIGNsYXNzIFByb2Nlc3NUaHJlYWQ7Ci1jbGFzcyBSYXRlTGltaXRlcjsKIGNsYXNzIFJ0Y0V2
ZW50TG9nOwogY2xhc3MgUnRwUnRjcDsKIGNsYXNzIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5k
SW50ZXJmYWNlOwogCi1zdHJ1Y3QgU2VuZGVySW5mbzsKLQogc3RydWN0IENhbGxTZW5kU3RhdGlz
dGljcyB7CiAgIGludDY0X3QgcnR0TXM7CiAgIHNpemVfdCBieXRlc1NlbnQ7CkBAIC02NywyMzkg
KzUxLDc3IEBAIHN0cnVjdCBSZXBvcnRCbG9jayB7CiAKIG5hbWVzcGFjZSB2b2UgewogCi1jbGFz
cyBSdHBQYWNrZXRTZW5kZXJQcm94eTsKLWNsYXNzIFRyYW5zcG9ydEZlZWRiYWNrUHJveHk7Ci1j
bGFzcyBUcmFuc3BvcnRTZXF1ZW5jZU51bWJlclByb3h5OwotY2xhc3MgVm9FUnRjcE9ic2VydmVy
OwotCi0vLyBIZWxwZXIgY2xhc3MgdG8gc2ltcGxpZnkgbG9ja2luZyBzY2hlbWUgZm9yIG1lbWJl
cnMgdGhhdCBhcmUgYWNjZXNzZWQgZnJvbQotLy8gbXVsdGlwbGUgdGhyZWFkcy4KLS8vIEV4YW1w
bGU6IGEgbWVtYmVyIGNhbiBiZSBzZXQgb24gdGhyZWFkIFQxIGFuZCByZWFkIGJ5IGFuIGludGVy
bmFsIGF1ZGlvCi0vLyB0aHJlYWQgVDIuIEFjY2Vzc2luZyB0aGUgbWVtYmVyIHZpYSB0aGlzIGNs
YXNzIGVuc3VyZXMgdGhhdCB3ZSBhcmUKLS8vIHNhZmUgYW5kIGFsc28gYXZvaWQgVFNhbiB2MiB3
YXJuaW5ncy4KLWNsYXNzIENoYW5uZWxTZW5kU3RhdGUgewotIHB1YmxpYzoKLSAgc3RydWN0IFN0
YXRlIHsKLSAgICBib29sIHNlbmRpbmcgPSBmYWxzZTsKLSAgfTsKLQotICBDaGFubmVsU2VuZFN0
YXRlKCkge30KLSAgdmlydHVhbCB+Q2hhbm5lbFNlbmRTdGF0ZSgpIHt9Ci0KLSAgdm9pZCBSZXNl
dCgpIHsKLSAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZsb2NrXyk7Ci0gICAgc3RhdGVfID0gU3Rh
dGUoKTsKLSAgfQotCi0gIFN0YXRlIEdldCgpIGNvbnN0IHsKLSAgICBydGM6OkNyaXRTY29wZSBs
b2NrKCZsb2NrXyk7Ci0gICAgcmV0dXJuIHN0YXRlXzsKLSAgfQotCi0gIHZvaWQgU2V0U2VuZGlu
Zyhib29sIGVuYWJsZSkgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmxvY2tfKTsKLSAgICBz
dGF0ZV8uc2VuZGluZyA9IGVuYWJsZTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgcnRjOjpDcml0aWNh
bFNlY3Rpb24gbG9ja187Ci0gIFN0YXRlIHN0YXRlXzsKLX07Ci0KLWNsYXNzIENoYW5uZWxTZW5k
Ci0gICAgOiBwdWJsaWMgVHJhbnNwb3J0LAotICAgICAgcHVibGljIEF1ZGlvUGFja2V0aXphdGlv
bkNhbGxiYWNrLCAgLy8gcmVjZWl2ZSBlbmNvZGVkIHBhY2tldHMgZnJvbSB0aGUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFDTQotICAgICAgcHVibGljIE92
ZXJoZWFkT2JzZXJ2ZXIgeworY2xhc3MgQ2hhbm5lbFNlbmRJbnRlcmZhY2UgewogIHB1YmxpYzoK
LSAgLy8gVE9ETyhuaXNzZSk6IE1ha2UgT25VcGxpbmtQYWNrZXRMb3NzUmF0ZSBwdWJsaWMsIGFu
ZCBkZWxldGUgZnJpZW5kCi0gIC8vIGRlY2xhcmF0aW9uLgotICBmcmllbmQgY2xhc3MgVm9FUnRj
cE9ic2VydmVyOwotCi0gIENoYW5uZWxTZW5kKHJ0Yzo6VGFza1F1ZXVlKiBlbmNvZGVyX3F1ZXVl
LAotICAgICAgICAgICAgICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCi0g
ICAgICAgICAgICAgIFJ0Y3BSdHRTdGF0cyogcnRjcF9ydHRfc3RhdHMsCi0gICAgICAgICAgICAg
IFJ0Y0V2ZW50TG9nKiBydGNfZXZlbnRfbG9nLAotICAgICAgICAgICAgICBGcmFtZUVuY3J5cHRv
ckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yKTsKLQotICB2aXJ0dWFsIH5DaGFubmVsU2VuZCgp
OworICB2aXJ0dWFsIH5DaGFubmVsU2VuZEludGVyZmFjZSgpID0gZGVmYXVsdDsKIAotICAvLyBT
ZW5kIHVzaW5nIHRoaXMgZW5jb2Rlciwgd2l0aCB0aGlzIHBheWxvYWQgdHlwZS4KLSAgYm9vbCBT
ZXRFbmNvZGVyKGludCBwYXlsb2FkX3R5cGUsIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+
IGVuY29kZXIpOwotICB2b2lkIE1vZGlmeUVuY29kZXIoCi0gICAgICBydGM6OkZ1bmN0aW9uVmll
dzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+IG1vZGlmaWVyKTsKKyAgdmly
dHVhbCBib29sIFJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBwYWNrZXQsIHNpemVf
dCBsZW5ndGgpID0gMDsKIAotICAvLyBBUEkgbWV0aG9kcworICB2aXJ0dWFsIENhbGxTZW5kU3Rh
dGlzdGljcyBHZXRSVENQU3RhdGlzdGljcygpIGNvbnN0ID0gMDsKIAotICAvLyBWb0VCYXNlCi0g
IGludDMyX3QgU3RhcnRTZW5kKCk7Ci0gIHZvaWQgU3RvcFNlbmQoKTsKKyAgdmlydHVhbCBib29s
IFNldEVuY29kZXIoaW50IHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2RlcikgPSAwOworICB2aXJ0dWFsIHZv
aWQgTW9kaWZ5RW5jb2RlcigKKyAgICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PHZvaWQoc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvRW5jb2Rlcj4qKT4gbW9kaWZpZXIpID0gMDsKIAotICAvLyBDb2RlY3MKLSAg
dm9pZCBTZXRCaXRSYXRlKGludCBiaXRyYXRlX2JwcywgaW50NjRfdCBwcm9iaW5nX2ludGVydmFs
X21zKTsKLSAgYm9vbCBFbmFibGVBdWRpb05ldHdvcmtBZGFwdG9yKGNvbnN0IHN0ZDo6c3RyaW5n
JiBjb25maWdfc3RyaW5nKTsKLSAgdm9pZCBEaXNhYmxlQXVkaW9OZXR3b3JrQWRhcHRvcigpOwot
Ci0gIC8vIFRPRE8obmlzc2UpOiBNb2RpZmllcyBkZWNvZGVyLCBidXQgbm90IHVzZWQ/Ci0gIHZv
aWQgU2V0UmVjZWl2ZXJGcmFtZUxlbmd0aFJhbmdlKGludCBtaW5fZnJhbWVfbGVuZ3RoX21zLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X2ZyYW1lX2xlbmd0aF9t
cyk7Ci0KLSAgLy8gTmV0d29yawotICB2b2lkIFJlZ2lzdGVyVHJhbnNwb3J0KFRyYW5zcG9ydCog
dHJhbnNwb3J0KTsKLSAgLy8gVE9ETyhuaXNzZSwgc29sZW5iZXJnKTogRGVsZXRlIHdoZW4gVm9F
TmV0d29yayBpcyBkZWxldGVkLgotICBpbnQzMl90IFJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKLQotICAvLyBNdXRpbmcsIFZvbHVtZSBhbmQg
TGV2ZWwuCi0gIHZvaWQgU2V0SW5wdXRNdXRlKGJvb2wgZW5hYmxlKTsKLQotICAvLyBTdGF0cy4K
LSAgQU5BU3RhdHMgR2V0QU5BU3RhdGlzdGljcygpIGNvbnN0OwotCi0gIC8vIFVzZWQgYnkgQXVk
aW9TZW5kU3RyZWFtLgotICBSdHBSdGNwKiBHZXRSdHBSdGNwKCkgY29uc3Q7Ci0KLSAgLy8gRFRN
Ri4KLSAgaW50IFNlbmRUZWxlcGhvbmVFdmVudE91dGJhbmQoaW50IGV2ZW50LCBpbnQgZHVyYXRp
b25fbXMpOwotICBpbnQgU2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBheWxv
YWRfdHlwZSwgaW50IHBheWxvYWRfZnJlcXVlbmN5KTsKLQotICAvLyBSVFArUlRDUAotICBpbnQg
U2V0TG9jYWxTU1JDKHVuc2lnbmVkIGludCBzc3JjKTsKLQotICB2b2lkIFNldE1pZChjb25zdCBz
dGQ6OnN0cmluZyYgbWlkLCBpbnQgZXh0ZW5zaW9uX2lkKTsKLSAgaW50IFNldFNlbmRBdWRpb0xl
dmVsSW5kaWNhdGlvblN0YXR1cyhib29sIGVuYWJsZSwgdW5zaWduZWQgY2hhciBpZCk7Ci0gIHZv
aWQgRW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKGludCBpZCk7Ci0KLSAgdm9pZCBS
ZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKKyAgdmlydHVhbCB2b2lkIFNl
dExvY2FsU1NSQyh1aW50MzJfdCBzc3JjKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBTZXRNaWQoY29u
c3Qgc3RkOjpzdHJpbmcmIG1pZCwgaW50IGV4dGVuc2lvbl9pZCkgPSAwOworICB2aXJ0dWFsIHZv
aWQgU2V0UlRDUF9DTkFNRShhYnNsOjpzdHJpbmdfdmlldyBjX25hbWUpID0gMDsKKyAgdmlydHVh
bCB2b2lkIFNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpID0gMDsK
KyAgdmlydHVhbCB2b2lkIFNldFNlbmRBdWRpb0xldmVsSW5kaWNhdGlvblN0YXR1cyhib29sIGVu
YWJsZSwgaW50IGlkKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBFbmFibGVTZW5kVHJhbnNwb3J0U2Vx
dWVuY2VOdW1iZXIoaW50IGlkKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBSZWdpc3RlclNlbmRlckNv
bmdlc3Rpb25Db250cm9sT2JqZWN0cygKICAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5k
SW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAgICBSdGNwQmFuZHdpZHRoT2JzZXJ2ZXIqIGJhbmR3
aWR0aF9vYnNlcnZlcik7Ci0gIHZvaWQgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVj
dHMoKTsKLSAgdm9pZCBTZXRSVENQU3RhdHVzKGJvb2wgZW5hYmxlKTsKLSAgaW50IFNldFJUQ1Bf
Q05BTUUoY29uc3QgY2hhciBjTmFtZVsyNTZdKTsKLSAgaW50IEdldFJlbW90ZVJUQ1BSZXBvcnRC
bG9ja3Moc3RkOjp2ZWN0b3I8UmVwb3J0QmxvY2s+KiByZXBvcnRfYmxvY2tzKTsKLSAgaW50IEdl
dFJUUFN0YXRpc3RpY3MoQ2FsbFNlbmRTdGF0aXN0aWNzJiBzdGF0cyk7ICAvLyBOT0xJTlQKLSAg
dm9pZCBTZXROQUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4TnVtYmVyT2ZQYWNrZXRzKTsK
LQotICAvLyBGcm9tIEF1ZGlvUGFja2V0aXphdGlvbkNhbGxiYWNrIGluIHRoZSBBQ00KLSAgaW50
MzJfdCBTZW5kRGF0YShGcmFtZVR5cGUgZnJhbWVUeXBlLAotICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgcGF5bG9hZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZVN0YW1w
LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHBheWxvYWREYXRhLAotICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkU2l6ZSwKLSAgICAgICAgICAgICAgICAgICBjb25z
dCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKSBvdmVycmlkZTsKLQotICAv
LyBGcm9tIFRyYW5zcG9ydCAoY2FsbGVkIGJ5IHRoZSBSVFAvUlRDUCBtb2R1bGUpCi0gIGJvb2wg
U2VuZFJ0cChjb25zdCB1aW50OF90KiBkYXRhLAotICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwK
LSAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldE9wdGlvbnMmIHBhY2tldF9vcHRpb25zKSBvdmVy
cmlkZTsKLSAgYm9vbCBTZW5kUnRjcChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuKSBv
dmVycmlkZTsKLQotICBpbnQgUHJlZmVycmVkU2FtcGxlUmF0ZSgpIGNvbnN0OwotCi0gIGJvb2wg
U2VuZGluZygpIGNvbnN0IHsgcmV0dXJuIGNoYW5uZWxfc3RhdGVfLkdldCgpLnNlbmRpbmc7IH0K
LSAgUnRwUnRjcCogUnRwUnRjcE1vZHVsZVB0cigpIGNvbnN0IHsgcmV0dXJuIF9ydHBSdGNwTW9k
dWxlLmdldCgpOyB9Ci0KLSAgLy8gUHJvY2Vzc0FuZEVuY29kZUF1ZGlvKCkgcG9zdHMgYSB0YXNr
IG9uIHRoZSBzaGFyZWQgZW5jb2RlciB0YXNrIHF1ZXVlLAotICAvLyB3aGljaCBpbiB0dXJuIGNh
bGxzIChvbiB0aGUgcXVldWUpIFByb2Nlc3NBbmRFbmNvZGVBdWRpb09uVGFza1F1ZXVlKCkgd2hl
cmUKLSAgLy8gdGhlIGFjdHVhbCBwcm9jZXNzaW5nIG9mIHRoZSBhdWRpbyB0YWtlcyBwbGFjZS4g
VGhlIHByb2Nlc3NpbmcgbWFpbmx5Ci0gIC8vIGNvbnNpc3RzIG9mIGVuY29kaW5nIGFuZCBwcmVw
YXJpbmcgdGhlIHJlc3VsdCBmb3Igc2VuZGluZyBieSBhZGRpbmcgaXQgdG8gYQotICAvLyBzZW5k
IHF1ZXVlLgotICAvLyBUaGUgbWFpbiByZWFzb24gZm9yIHVzaW5nIGEgdGFzayBxdWV1ZSBoZXJl
IGlzIHRvIHJlbGVhc2UgdGhlIG5hdGl2ZSwKLSAgLy8gT1Mtc3BlY2lmaWMsIGF1ZGlvIGNhcHR1
cmUgdGhyZWFkIGFzIHNvb24gYXMgcG9zc2libGUgdG8gZW5zdXJlIHRoYXQgaXQKLSAgLy8gY2Fu
IGdvIGJhY2sgdG8gc2xlZXAgYW5kIGJlIHByZXBhcmVkIHRvIGRlbGl2ZXIgYW4gbmV3IGNhcHR1
cmVkIGF1ZGlvCi0gIC8vIHBhY2tldC4KLSAgdm9pZCBQcm9jZXNzQW5kRW5jb2RlQXVkaW8oc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRnJhbWU+IGF1ZGlvX2ZyYW1lKTsKLQotICB2b2lkIFNldFRyYW5z
cG9ydE92ZXJoZWFkKHNpemVfdCB0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldCk7Ci0KLSAg
Ly8gRnJvbSBPdmVyaGVhZE9ic2VydmVyIGluIHRoZSBSVFAvUlRDUCBtb2R1bGUKLSAgdm9pZCBP
bk92ZXJoZWFkQ2hhbmdlZChzaXplX3Qgb3ZlcmhlYWRfYnl0ZXNfcGVyX3BhY2tldCkgb3ZlcnJp
ZGU7Ci0KLSAgLy8gVGhlIGV4aXN0ZW5jZSBvZiB0aGlzIGZ1bmN0aW9uIGFsb25nc2lkZSBPblVw
bGlua1BhY2tldExvc3NSYXRlIGlzCi0gIC8vIGEgY29tcHJvbWlzZS4gV2Ugd2FudCB0aGUgZW5j
b2RlciB0byBiZSBhZ25vc3RpYyBvZiB0aGUgUExSIHNvdXJjZSwgYnV0Ci0gIC8vIHdlIGFsc28g
ZG9uJ3Qgd2FudCBpdCB0byByZWNlaXZlIGNvbmZsaWN0aW5nIGluZm9ybWF0aW9uIGZyb20gVFdD
QyBhbmQKLSAgLy8gZnJvbSBSVENQLVhSLgotICB2b2lkIE9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0
TG9zc1JhdGUoZmxvYXQgcGFja2V0X2xvc3NfcmF0ZSk7Ci0KLSAgdm9pZCBPblJlY292ZXJhYmxl
VXBsaW5rUGFja2V0TG9zc1JhdGUoZmxvYXQgcmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0ZSk7
Ci0KLSAgaW50NjRfdCBHZXRSVFQoKSBjb25zdDsKLQotICAvLyBFMkVFIEN1c3RvbSBBdWRpbyBG
cmFtZSBFbmNyeXB0aW9uCi0gIHZvaWQgU2V0RnJhbWVFbmNyeXB0b3IoRnJhbWVFbmNyeXB0b3JJ
bnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvcik7Ci0KLSBwcml2YXRlOgotICBjbGFzcyBQcm9jZXNz
QW5kRW5jb2RlQXVkaW9UYXNrOwotCi0gIHZvaWQgSW5pdCgpOwotICB2b2lkIFRlcm1pbmF0ZSgp
OwotCi0gIHZvaWQgT25VcGxpbmtQYWNrZXRMb3NzUmF0ZShmbG9hdCBwYWNrZXRfbG9zc19yYXRl
KTsKLSAgYm9vbCBJbnB1dE11dGUoKSBjb25zdDsKLQotICBpbnQgUmVzZW5kUGFja2V0cyhjb25z
dCB1aW50MTZfdCogc2VxdWVuY2VfbnVtYmVycywgaW50IGxlbmd0aCk7Ci0KLSAgaW50IFNldFNl
bmRSdHBIZWFkZXJFeHRlbnNpb24oYm9vbCBlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJUUEV4dGVuc2lvblR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBpZCk7Ci0KLSAgdm9pZCBVcGRhdGVPdmVyaGVhZEZvckVu
Y29kZXIoKQotICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChvdmVyaGVhZF9wZXJf
cGFja2V0X2xvY2tfKTsKLQotICBpbnQgR2V0UnRwVGltZXN0YW1wUmF0ZUh6KCkgY29uc3Q7Ci0K
LSAgLy8gQ2FsbGVkIG9uIHRoZSBlbmNvZGVyIHRhc2sgcXVldWUgd2hlbiBhIG5ldyBpbnB1dCBh
dWRpbyBmcmFtZSBpcyByZWFkeQotICAvLyBmb3IgZW5jb2RpbmcuCi0gIHZvaWQgUHJvY2Vzc0Fu
ZEVuY29kZUF1ZGlvT25UYXNrUXVldWUoQXVkaW9GcmFtZSogYXVkaW9faW5wdXQpOwotCi0gIHJ0
Yzo6Q3JpdGljYWxTZWN0aW9uIF9jYWxsYmFja0NyaXRTZWN0OwotICBydGM6OkNyaXRpY2FsU2Vj
dGlvbiB2b2x1bWVfc2V0dGluZ3NfY3JpdHNlY3RfOwotCi0gIENoYW5uZWxTZW5kU3RhdGUgY2hh
bm5lbF9zdGF0ZV87Ci0KLSAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187Ci0KLSAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0cFJ0Y3A+IF9ydHBSdGNwTW9kdWxlOwotCi0gIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb0NvZGluZ01vZHVsZT4gYXVkaW9fY29kaW5nXzsKLSAgdWludDMyX3QgX3RpbWVTdGFt
cCBSVENfR1VBUkRFRF9CWShlbmNvZGVyX3F1ZXVlXyk7Ci0KLSAgdWludDE2X3Qgc2VuZF9zZXF1
ZW5jZV9udW1iZXJfOwotCi0gIC8vIHVzZXMKLSAgUHJvY2Vzc1RocmVhZCogX21vZHVsZVByb2Nl
c3NUaHJlYWRQdHI7Ci0gIFRyYW5zcG9ydCogX3RyYW5zcG9ydFB0cjsgIC8vIFdlYlJ0YyBzb2Nr
ZXQgb3IgZXh0ZXJuYWwgdHJhbnNwb3J0Ci0gIFJtc0xldmVsIHJtc19sZXZlbF8gUlRDX0dVQVJE
RURfQlkoZW5jb2Rlcl9xdWV1ZV8pOwotICBib29sIGlucHV0X211dGVfIFJUQ19HVUFSREVEX0JZ
KHZvbHVtZV9zZXR0aW5nc19jcml0c2VjdF8pOwotICBib29sIHByZXZpb3VzX2ZyYW1lX211dGVk
XyBSVENfR1VBUkRFRF9CWShlbmNvZGVyX3F1ZXVlXyk7Ci0gIC8vIFZvZVJUUF9SVENQCi0gIC8v
IFRPRE8oaGVucmlrYSk6IGNhbiB0b2RheSBiZSBhY2Nlc3NlZCBvbiB0aGUgbWFpbiB0aHJlYWQg
YW5kIG9uIHRoZQotICAvLyB0YXNrIHF1ZXVlOyBoZW5jZSBwb3RlbnRpYWwgcmFjZS4KLSAgYm9v
bCBfaW5jbHVkZUF1ZGlvTGV2ZWxJbmRpY2F0aW9uOwotICBzaXplX3QgdHJhbnNwb3J0X292ZXJo
ZWFkX3Blcl9wYWNrZXRfCi0gICAgICBSVENfR1VBUkRFRF9CWShvdmVyaGVhZF9wZXJfcGFja2V0
X2xvY2tfKTsKLSAgc2l6ZV90IHJ0cF9vdmVyaGVhZF9wZXJfcGFja2V0XyBSVENfR1VBUkRFRF9C
WShvdmVyaGVhZF9wZXJfcGFja2V0X2xvY2tfKTsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gb3Zl
cmhlYWRfcGVyX3BhY2tldF9sb2NrXzsKLSAgLy8gUnRjcEJhbmR3aWR0aE9ic2VydmVyCi0gIHN0
ZDo6dW5pcXVlX3B0cjxWb0VSdGNwT2JzZXJ2ZXI+IHJ0Y3Bfb2JzZXJ2ZXJfOwotCi0gIFBhY2tl
dFJvdXRlciogcGFja2V0X3JvdXRlcl8gPSBudWxscHRyOwotICBzdGQ6OnVuaXF1ZV9wdHI8VHJh
bnNwb3J0RmVlZGJhY2tQcm94eT4gZmVlZGJhY2tfb2JzZXJ2ZXJfcHJveHlfOwotICBzdGQ6OnVu
aXF1ZV9wdHI8VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJQcm94eT4gc2VxX251bV9hbGxvY2F0b3Jf
cHJveHlfOwotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0U2VuZGVyUHJveHk+IHJ0cF9wYWNr
ZXRfc2VuZGVyX3Byb3h5XzsKLSAgc3RkOjp1bmlxdWVfcHRyPFJhdGVMaW1pdGVyPiByZXRyYW5z
bWlzc2lvbl9yYXRlX2xpbWl0ZXJfOwotCi0gIHJ0Yzo6VGhyZWFkQ2hlY2tlciBjb25zdHJ1Y3Rp
b25fdGhyZWFkXzsKLQotICBjb25zdCBib29sIHVzZV90d2NjX3Bscl9mb3JfYW5hXzsKLQotICBy
dGM6OkNyaXRpY2FsU2VjdGlvbiBlbmNvZGVyX3F1ZXVlX2xvY2tfOwotICBib29sIGVuY29kZXJf
cXVldWVfaXNfYWN0aXZlXyBSVENfR1VBUkRFRF9CWShlbmNvZGVyX3F1ZXVlX2xvY2tfKSA9IGZh
bHNlOwotICBydGM6OlRhc2tRdWV1ZSogZW5jb2Rlcl9xdWV1ZV8gPSBudWxscHRyOwotCi0gIC8v
IEUyRUUgQXVkaW8gRnJhbWUgRW5jcnlwdGlvbgotICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSog
ZnJhbWVfZW5jcnlwdG9yXyA9IG51bGxwdHI7CisgICAgICBSdGNwQmFuZHdpZHRoT2JzZXJ2ZXIq
IGJhbmR3aWR0aF9vYnNlcnZlcikgPSAwOworICB2aXJ0dWFsIHZvaWQgUmVzZXRTZW5kZXJDb25n
ZXN0aW9uQ29udHJvbE9iamVjdHMoKSA9IDA7CisgIHZpcnR1YWwgc3RkOjp2ZWN0b3I8UmVwb3J0
QmxvY2s+IEdldFJlbW90ZVJUQ1BSZXBvcnRCbG9ja3MoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwg
QU5BU3RhdHMgR2V0QU5BU3RhdGlzdGljcygpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBib29sIFNl
dFNlbmRUZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlKGludCBwYXlsb2FkX3R5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGF5bG9hZF9mcmVx
dWVuY3kpID0gMDsKKyAgdmlydHVhbCBib29sIFNlbmRUZWxlcGhvbmVFdmVudE91dGJhbmQoaW50
IGV2ZW50LCBpbnQgZHVyYXRpb25fbXMpID0gMDsKKyAgdmlydHVhbCB2b2lkIE9uQml0cmF0ZUFs
bG9jYXRpb24oQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlKSA9IDA7CisgIHZpcnR1YWwg
aW50IEdldEJpdHJhdGUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgdm9pZCBTZXRJbnB1dE11dGUo
Ym9vbCBtdXRlZCkgPSAwOworCisgIHZpcnR1YWwgdm9pZCBQcm9jZXNzQW5kRW5jb2RlQXVkaW8o
CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GcmFtZT4gYXVkaW9fZnJhbWUpID0gMDsKKyAg
dmlydHVhbCB2b2lkIFNldFRyYW5zcG9ydE92ZXJoZWFkKHNpemVfdCB0cmFuc3BvcnRfb3Zlcmhl
YWRfcGVyX3BhY2tldCkgPSAwOworICB2aXJ0dWFsIFJ0cFJ0Y3AqIEdldFJ0cFJ0Y3AoKSBjb25z
dCA9IDA7CisKKyAgdmlydHVhbCB2b2lkIE9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUo
ZmxvYXQgcGFja2V0X2xvc3NfcmF0ZSkgPSAwOworICB2aXJ0dWFsIHZvaWQgT25SZWNvdmVyYWJs
ZVVwbGlua1BhY2tldExvc3NSYXRlKAorICAgICAgZmxvYXQgcmVjb3ZlcmFibGVfcGFja2V0X2xv
c3NfcmF0ZSkgPSAwOworICAvLyBJbiBSVFAgd2UgY3VycmVudGx5IHJlbHkgb24gUlRDUCBwYWNr
ZXRzICh8UmVjZWl2ZWRSVENQUGFja2V0fCkgdG8gaW5mb3JtCisgIC8vIGFib3V0IFJUVC4KKyAg
Ly8gSW4gbWVkaWEgdHJhbnNwb3J0IHdlIHJlbHkgb24gdGhlIFRhcmdldFRyYW5zZmVyUmF0ZU9i
c2VydmVyIGluc3RlYWQuCisgIC8vIEluIG90aGVyIHdvcmRzLCBpZiB5b3UgYXJlIHVzaW5nIFJU
UCwgeW91IHNob3VsZCBleHBlY3QKKyAgLy8gfFJlY2VpdmVkUlRDUFBhY2tldHwgdG8gYmUgY2Fs
bGVkLCBpZiB5b3UgYXJlIHVzaW5nIG1lZGlhIHRyYW5zcG9ydCwKKyAgLy8gfE9uVGFyZ2V0VHJh
bnNmZXJSYXRlfCB3aWxsIGJlIGNhbGxlZC4KKyAgLy8KKyAgLy8gSW4gZnV0dXJlLCBSVFAgbWVk
aWEgd2lsbCBtb3ZlIHRvIHRoZSBtZWRpYSB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb24gYW5kCisg
IC8vIHRoZXNlIGNvbmRpdGlvbnMgd2lsbCBiZSByZW1vdmVkLgorICAvLyBSZXR1cm5zIHRoZSBS
VFQgaW4gbWlsbGlzZWNvbmRzLgorICB2aXJ0dWFsIGludDY0X3QgR2V0UlRUKCkgY29uc3QgPSAw
OworICB2aXJ0dWFsIHZvaWQgU3RhcnRTZW5kKCkgPSAwOworICB2aXJ0dWFsIHZvaWQgU3RvcFNl
bmQoKSA9IDA7CisKKyAgLy8gRTJFRSBDdXN0b20gQXVkaW8gRnJhbWUgRW5jcnlwdGlvbiAoT3B0
aW9uYWwpCisgIHZpcnR1YWwgdm9pZCBTZXRGcmFtZUVuY3J5cHRvcigKKyAgICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yKSA9IDA7
CiB9OwogCitzdGQ6OnVuaXF1ZV9wdHI8Q2hhbm5lbFNlbmRJbnRlcmZhY2U+IENyZWF0ZUNoYW5u
ZWxTZW5kKAorICAgIHJ0Yzo6VGFza1F1ZXVlKiBlbmNvZGVyX3F1ZXVlLAorICAgIFByb2Nlc3NU
aHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKKyAgICBNZWRpYVRyYW5zcG9ydEludGVyZmFj
ZSogbWVkaWFfdHJhbnNwb3J0LAorICAgIFRyYW5zcG9ydCogcnRwX3RyYW5zcG9ydCwKKyAgICBS
dGNwUnR0U3RhdHMqIHJ0Y3BfcnR0X3N0YXRzLAorICAgIFJ0Y0V2ZW50TG9nKiBydGNfZXZlbnRf
bG9nLAorICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IsCisgICAg
Y29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBib29sIGV4
dG1hcF9hbGxvd19taXhlZCwKKyAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMpOworCiB9
ICAvLyBuYW1lc3BhY2Ugdm9lCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxf
c2VuZF9wcm94eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2F1ZGlvL2NoYW5uZWxfc2VuZF9wcm94eS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODA5MWJkYzY3MWJlZWI4OTM1MGE2YTgzYWFjMjk0ZjEyNjAzOTg4NC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmRfcHJveHkuY2MKKysrIC9kZXYv
bnVsbApAQCAtMSwyMDcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRl
ICJhdWRpby9jaGFubmVsX3NlbmRfcHJveHkuaCIKLQotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNp
bmNsdWRlICJhcGkvY2FsbC9hdWRpb19zaW5rLmgiCi0jaW5jbHVkZSAiY2FsbC9ydHBfdHJhbnNw
b3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
bnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2Ug
dm9lIHsKLUNoYW5uZWxTZW5kUHJveHk6OkNoYW5uZWxTZW5kUHJveHkoKSB7fQotCi1DaGFubmVs
U2VuZFByb3h5OjpDaGFubmVsU2VuZFByb3h5KHN0ZDo6dW5pcXVlX3B0cjxDaGFubmVsU2VuZD4g
Y2hhbm5lbCkKLSAgICA6IGNoYW5uZWxfKHN0ZDo6bW92ZShjaGFubmVsKSkgewotICBSVENfRENI
RUNLKGNoYW5uZWxfKTsKLSAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZy
b21UaHJlYWQoKTsKLX0KLQotQ2hhbm5lbFNlbmRQcm94eTo6fkNoYW5uZWxTZW5kUHJveHkoKSB7
fQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OlNldExvY2FsU1NSQyh1aW50MzJfdCBzc3JjKSB7
Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFk
KCkpOwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+U2V0TG9jYWxTU1JDKHNzcmMpOwotICBSVENf
RENIRUNLX0VRKDAsIGVycm9yKTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpTZXROQUNL
U3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4X3BhY2tldHMpIHsKLSAgUlRDX0RDSEVDSyh3b3Jr
ZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5T
ZXROQUNLU3RhdHVzKGVuYWJsZSwgbWF4X3BhY2tldHMpOwotfQotCi1DYWxsU2VuZFN0YXRpc3Rp
Y3MgQ2hhbm5lbFNlbmRQcm94eTo6R2V0UlRDUFN0YXRpc3RpY3MoKSBjb25zdCB7Ci0gIFJUQ19E
Q0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBD
YWxsU2VuZFN0YXRpc3RpY3Mgc3RhdHMgPSB7MH07Ci0gIGludCBlcnJvciA9IGNoYW5uZWxfLT5H
ZXRSVFBTdGF0aXN0aWNzKHN0YXRzKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Ci0gIHJl
dHVybiBzdGF0czsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpSZWdpc3RlclRyYW5zcG9y
dChUcmFuc3BvcnQqIHRyYW5zcG9ydCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hl
Y2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlJlZ2lzdGVyVHJhbnNw
b3J0KHRyYW5zcG9ydCk7Ci19Ci0KLWJvb2wgQ2hhbm5lbFNlbmRQcm94eTo6UmVjZWl2ZWRSVENQ
UGFja2V0KGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgpIHsKLSAgLy8gTWF5IGJlIGNhbGxlZCBvbiBl
aXRoZXIgd29ya2VyIHRocmVhZCBvciBuZXR3b3JrIHRocmVhZC4KLSAgcmV0dXJuIGNoYW5uZWxf
LT5SZWNlaXZlZFJUQ1BQYWNrZXQocGFja2V0LCBsZW5ndGgpID09IDA7Ci19Ci0KLWJvb2wgQ2hh
bm5lbFNlbmRQcm94eTo6U2V0RW5jb2RlcihpbnQgcGF5bG9hZF90eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29k
ZXIpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRU
aHJlYWQoKSk7Ci0gIHJldHVybiBjaGFubmVsXy0+U2V0RW5jb2RlcihwYXlsb2FkX3R5cGUsIHN0
ZDo6bW92ZShlbmNvZGVyKSk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6TW9kaWZ5RW5j
b2RlcigKLSAgICBydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Vu
Y29kZXI+Kik+IG1vZGlmaWVyKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2Vy
Xy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+TW9kaWZ5RW5jb2Rlcihtb2Rp
Zmllcik7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0UlRDUFN0YXR1cyhib29sIGVu
YWJsZSkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxp
ZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlNldFJUQ1BTdGF0dXMoZW5hYmxlKTsKLX0KLQotdm9p
ZCBDaGFubmVsU2VuZFByb3h5OjpTZXRNaWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwgaW50IGV4
dGVuc2lvbl9pZCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVk
T25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlNldE1pZChtaWQsIGV4dGVuc2lvbl9pZCk7
Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0UlRDUF9DTkFNRShjb25zdCBzdGQ6OnN0
cmluZyYgY19uYW1lKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxs
ZWRPblZhbGlkVGhyZWFkKCkpOwotICAvLyBOb3RlOiBWb0VSVFBfUlRDUDo6U2V0UlRDUF9DTkFN
RSgpIGFjY2VwdHMgYSBjaGFyWzI1Nl0gYXJyYXkuCi0gIHN0ZDo6c3RyaW5nIGNfbmFtZV9saW1p
dGVkID0gY19uYW1lLnN1YnN0cigwLCAyNTUpOwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+U2V0
UlRDUF9DTkFNRShjX25hbWVfbGltaXRlZC5jX3N0cigpKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBl
cnJvcik7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0U2VuZEF1ZGlvTGV2ZWxJbmRp
Y2F0aW9uU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgaWQpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJf
dGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGludCBlcnJvciA9IGNo
YW5uZWxfLT5TZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25TdGF0dXMoZW5hYmxlLCBpZCk7Ci0g
IFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OkVu
YWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihpbnQgaWQpIHsKLSAgUlRDX0RDSEVDSyh3
b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxf
LT5FbmFibGVTZW5kVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoaWQpOwotfQotCi12b2lkIENoYW5u
ZWxTZW5kUHJveHk6OlJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAotICAg
IFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAgUnRj
cEJhbmR3aWR0aE9ic2VydmVyKiBiYW5kd2lkdGhfb2JzZXJ2ZXIpIHsKLSAgUlRDX0RDSEVDSyh3
b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxf
LT5SZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cyh0cmFuc3BvcnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYW5kd2lkdGhf
b2JzZXJ2ZXIpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OlJlc2V0U2VuZGVyQ29uZ2Vz
dGlvbkNvbnRyb2xPYmplY3RzKCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tl
cl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlJlc2V0U2VuZGVyQ29uZ2Vz
dGlvbkNvbnRyb2xPYmplY3RzKCk7Ci19Ci0KLXN0ZDo6dmVjdG9yPFJlcG9ydEJsb2NrPiBDaGFu
bmVsU2VuZFByb3h5OjpHZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tzKCkgY29uc3QgewotICBSVENf
RENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAg
c3RkOjp2ZWN0b3I8d2VicnRjOjpSZXBvcnRCbG9jaz4gYmxvY2tzOwotICBpbnQgZXJyb3IgPSBj
aGFubmVsXy0+R2V0UmVtb3RlUlRDUFJlcG9ydEJsb2NrcygmYmxvY2tzKTsKLSAgUlRDX0RDSEVD
S19FUSgwLCBlcnJvcik7Ci0gIHJldHVybiBibG9ja3M7Ci19Ci0KLUFOQVN0YXRzIENoYW5uZWxT
ZW5kUHJveHk6OkdldEFOQVN0YXRpc3RpY3MoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2Vy
X3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5l
bF8tPkdldEFOQVN0YXRpc3RpY3MoKTsKLX0KLQotYm9vbCBDaGFubmVsU2VuZFByb3h5OjpTZXRT
ZW5kVGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZShpbnQgcGF5bG9hZF90eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGF5bG9h
ZF9mcmVxdWVuY3kpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxl
ZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHJldHVybiBjaGFubmVsXy0+U2V0U2VuZFRlbGVwaG9uZUV2
ZW50UGF5bG9hZFR5cGUocGF5bG9hZF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRfZnJlcXVlbmN5KSA9PSAwOwotfQotCi1i
b29sIENoYW5uZWxTZW5kUHJveHk6OlNlbmRUZWxlcGhvbmVFdmVudE91dGJhbmQoaW50IGV2ZW50
LCBpbnQgZHVyYXRpb25fbXMpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJf
LkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHJldHVybiBjaGFubmVsXy0+U2VuZFRlbGVwaG9u
ZUV2ZW50T3V0YmFuZChldmVudCwgZHVyYXRpb25fbXMpID09IDA7Ci19Ci0KLXZvaWQgQ2hhbm5l
bFNlbmRQcm94eTo6U2V0Qml0cmF0ZShpbnQgYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBwcm9iaW5nX2ludGVydmFsX21zKSB7Ci0gIC8vIFRo
aXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgb24gdGhlIHdvcmtlciB0aHJlYWQsIG1vZHVsZSBwcm9j
ZXNzIHRocmVhZAotICAvLyBvciBvbiBhIFRhc2tRdWV1ZSB2aWEgVmlkZW9TZW5kU3RyZWFtSW1w
bDo6T25FbmNvZGVyQ29uZmlndXJhdGlvbkNoYW5nZWQuCi0gIC8vIFRPRE8oc29sZW5iZXJnKTog
RmlndXJlIG91dCBhIGdvb2Qgd2F5IHRvIGNoZWNrIHRoaXMgb3IgZW5mb3JjZSBjYWxsaW5nCi0g
IC8vIHJ1bGVzLgotICAvLyBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVk
T25WYWxpZFRocmVhZCgpIHx8Ci0gIC8vICAgICAgICAgICAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFk
X2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRCaXRSYXRl
KGJpdHJhdGVfYnBzLCBwcm9iaW5nX2ludGVydmFsX21zKTsKLX0KLQotdm9pZCBDaGFubmVsU2Vu
ZFByb3h5OjpTZXRJbnB1dE11dGUoYm9vbCBtdXRlZCkgewotICBSVENfRENIRUNLKHdvcmtlcl90
aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlNldElu
cHV0TXV0ZShtdXRlZCk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6UHJvY2Vzc0FuZEVu
Y29kZUF1ZGlvKAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19mcmFtZSkg
ewotICBSVENfRENIRUNLX1JVTlNfU0VSSUFMSVpFRCgmYXVkaW9fdGhyZWFkX3JhY2VfY2hlY2tl
cl8pOwotICByZXR1cm4gY2hhbm5lbF8tPlByb2Nlc3NBbmRFbmNvZGVBdWRpbyhzdGQ6Om1vdmUo
YXVkaW9fZnJhbWUpKTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpTZXRUcmFuc3BvcnRP
dmVyaGVhZChpbnQgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpIHsKLSAgUlRDX0RDSEVD
Syh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5u
ZWxfLT5TZXRUcmFuc3BvcnRPdmVyaGVhZCh0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldCk7
Ci19Ci0KLVJ0cFJ0Y3AqIENoYW5uZWxTZW5kUHJveHk6OkdldFJ0cFJ0Y3AoKSBjb25zdCB7Ci0g
IFJUQ19EQ0hFQ0sobW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRU
aHJlYWQoKSk7Ci0gIHJldHVybiBjaGFubmVsXy0+R2V0UnRwUnRjcCgpOwotfQotCi12b2lkIENo
YW5uZWxTZW5kUHJveHk6Ok9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUoZmxvYXQgcGFj
a2V0X2xvc3NfcmF0ZSkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2Fs
bGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPk9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0
TG9zc1JhdGUocGFja2V0X2xvc3NfcmF0ZSk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6
T25SZWNvdmVyYWJsZVVwbGlua1BhY2tldExvc3NSYXRlKAotICAgIGZsb2F0IHJlY292ZXJhYmxl
X3BhY2tldF9sb3NzX3JhdGUpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJf
LkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5PblJlY292ZXJhYmxlVXBsaW5r
UGFja2V0TG9zc1JhdGUocmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0ZSk7Ci19Ci0KLXZvaWQg
Q2hhbm5lbFNlbmRQcm94eTo6U3RhcnRTZW5kKCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJl
YWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgaW50IGVycm9yID0gY2hhbm5l
bF8tPlN0YXJ0U2VuZCgpOwotICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKLX0KLQotdm9pZCBD
aGFubmVsU2VuZFByb3h5OjpTdG9wU2VuZCgpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TdG9wU2VuZCgp
OwotfQotCi1DaGFubmVsU2VuZCogQ2hhbm5lbFNlbmRQcm94eTo6R2V0Q2hhbm5lbCgpIGNvbnN0
IHsKLSAgcmV0dXJuIGNoYW5uZWxfLmdldCgpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6
OlNldEZyYW1lRW5jcnlwdG9yKAotICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9l
bmNyeXB0b3IpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9u
VmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRGcmFtZUVuY3J5cHRvcihmcmFtZV9lbmNy
eXB0b3IpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugdm9lCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby9jaGFubmVsX3NlbmRfcHJveHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2VuZF9wcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxYjhiNGEwMmNlNWVlY2Q4ZDY5Yzg4NmU1MjA4MWVmZWRlYjlhYjU2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2VuZF9wcm94eS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAy
MDE1IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwot
Ci0jaWZuZGVmIEFVRElPX0NIQU5ORUxfU0VORF9QUk9YWV9IXwotI2RlZmluZSBBVURJT19DSEFO
TkVMX1NFTkRfUFJPWFlfSF8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzdHJpbmc+
Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19l
bmNvZGVyLmgiCi0jaW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9zZW5kLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3JhY2VfY2hlY2tl
ci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCi0KLW5hbWVzcGFjZSB3
ZWJydGMgewotCi1jbGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsKLWNsYXNzIFJ0Y3BCYW5k
d2lkdGhPYnNlcnZlcjsKLWNsYXNzIFJ0cFJ0Y3A7Ci1jbGFzcyBSdHBUcmFuc3BvcnRDb250cm9s
bGVyU2VuZEludGVyZmFjZTsKLWNsYXNzIFRyYW5zcG9ydDsKLQotbmFtZXNwYWNlIHZvZSB7Ci0K
LS8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgdGhlICJ2aWV3IiBvZiBhIHZvZTo6Q2hhbm5lbCB0aGF0
IHdlIG5lZWQgdG8gaW1wbGVtZW50Ci0vLyB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbS4gSXQgc2Vy
dmVzIHR3byBwdXJwb3NlczoKLS8vICAxLiBBbGxvdyBtb2NraW5nIGp1c3QgdGhlIGludGVyZmFj
ZXMgdXNlZCwgaW5zdGVhZCBvZiB0aGUgZW50aXJlCi0vLyAgICAgdm9lOjpDaGFubmVsIGNsYXNz
LgotLy8gIDIuIFByb3ZpZGUgYSByZWZpbmVkIGludGVyZmFjZSBmb3IgdGhlIHN0cmVhbSBjbGFz
c2VzLCBpbmNsdWRpbmcgYXNzdW1wdGlvbnMKLS8vICAgICBvbiByZXR1cm4gdmFsdWVzIGFuZCBp
bnB1dCBhZGFwdGF0aW9uLgotY2xhc3MgQ2hhbm5lbFNlbmRQcm94eSB7Ci0gcHVibGljOgotICBD
aGFubmVsU2VuZFByb3h5KCk7Ci0gIGV4cGxpY2l0IENoYW5uZWxTZW5kUHJveHkoc3RkOjp1bmlx
dWVfcHRyPENoYW5uZWxTZW5kPiBjaGFubmVsKTsKLSAgdmlydHVhbCB+Q2hhbm5lbFNlbmRQcm94
eSgpOwotCi0gIC8vIFNoYXJlZCB3aXRoIENoYW5uZWxSZWNlaXZlUHJveHkKLSAgdmlydHVhbCB2
b2lkIFNldExvY2FsU1NSQyh1aW50MzJfdCBzc3JjKTsKLSAgdmlydHVhbCB2b2lkIFNldE5BQ0tT
dGF0dXMoYm9vbCBlbmFibGUsIGludCBtYXhfcGFja2V0cyk7Ci0gIHZpcnR1YWwgQ2FsbFNlbmRT
dGF0aXN0aWNzIEdldFJUQ1BTdGF0aXN0aWNzKCkgY29uc3Q7Ci0gIHZpcnR1YWwgdm9pZCBSZWdp
c3RlclRyYW5zcG9ydChUcmFuc3BvcnQqIHRyYW5zcG9ydCk7Ci0gIHZpcnR1YWwgYm9vbCBSZWNl
aXZlZFJUQ1BQYWNrZXQoY29uc3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKTsKLQot
ICB2aXJ0dWFsIGJvb2wgU2V0RW5jb2RlcihpbnQgcGF5bG9hZF90eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmNvZGVyKTsKLSAg
dmlydHVhbCB2b2lkIE1vZGlmeUVuY29kZXIoCi0gICAgICBydGM6OkZ1bmN0aW9uVmlldzx2b2lk
KHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+IG1vZGlmaWVyKTsKLQotICB2aXJ0dWFs
IHZvaWQgU2V0UlRDUFN0YXR1cyhib29sIGVuYWJsZSk7Ci0gIHZpcnR1YWwgdm9pZCBTZXRNaWQo
Y29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwgaW50IGV4dGVuc2lvbl9pZCk7Ci0gIHZpcnR1YWwgdm9p
ZCBTZXRSVENQX0NOQU1FKGNvbnN0IHN0ZDo6c3RyaW5nJiBjX25hbWUpOwotICB2aXJ0dWFsIHZv
aWQgU2V0U2VuZEF1ZGlvTGV2ZWxJbmRpY2F0aW9uU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgaWQp
OwotICB2aXJ0dWFsIHZvaWQgRW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKGludCBp
ZCk7Ci0gIHZpcnR1YWwgdm9pZCBSZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0
cygKLSAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFuc3BvcnQs
Ci0gICAgICBSdGNwQmFuZHdpZHRoT2JzZXJ2ZXIqIGJhbmR3aWR0aF9vYnNlcnZlcik7Ci0gIHZp
cnR1YWwgdm9pZCBSZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpOwotICB2aXJ0
dWFsIHN0ZDo6dmVjdG9yPFJlcG9ydEJsb2NrPiBHZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tzKCkg
Y29uc3Q7Ci0gIHZpcnR1YWwgQU5BU3RhdHMgR2V0QU5BU3RhdGlzdGljcygpIGNvbnN0OwotICB2
aXJ0dWFsIGJvb2wgU2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBheWxvYWRf
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBwYXlsb2FkX2ZyZXF1ZW5jeSk7Ci0gIHZpcnR1YWwgYm9vbCBTZW5kVGVsZXBob25lRXZlbnRP
dXRiYW5kKGludCBldmVudCwgaW50IGR1cmF0aW9uX21zKTsKLSAgdmlydHVhbCB2b2lkIFNldEJp
dHJhdGUoaW50IGJpdHJhdGVfYnBzLCBpbnQ2NF90IHByb2JpbmdfaW50ZXJ2YWxfbXMpOwotICB2
aXJ0dWFsIHZvaWQgU2V0SW5wdXRNdXRlKGJvb2wgbXV0ZWQpOwotCi0gIHZpcnR1YWwgdm9pZCBQ
cm9jZXNzQW5kRW5jb2RlQXVkaW8oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRnJhbWU+IGF1ZGlvX2Zy
YW1lKTsKLSAgdmlydHVhbCB2b2lkIFNldFRyYW5zcG9ydE92ZXJoZWFkKGludCB0cmFuc3BvcnRf
b3ZlcmhlYWRfcGVyX3BhY2tldCk7Ci0gIHZpcnR1YWwgUnRwUnRjcCogR2V0UnRwUnRjcCgpIGNv
bnN0OwotCi0gIHZpcnR1YWwgdm9pZCBPblR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRlKGZs
b2F0IHBhY2tldF9sb3NzX3JhdGUpOwotICB2aXJ0dWFsIHZvaWQgT25SZWNvdmVyYWJsZVVwbGlu
a1BhY2tldExvc3NSYXRlKAotICAgICAgZmxvYXQgcmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0
ZSk7Ci0gIHZpcnR1YWwgdm9pZCBTdGFydFNlbmQoKTsKLSAgdmlydHVhbCB2b2lkIFN0b3BTZW5k
KCk7Ci0KLSAgLy8gTmVlZGVkIGJ5IENoYW5uZWxSZWNlaXZlUHJveHk6OkFzc29jaWF0ZVNlbmRD
aGFubmVsLgotICB2aXJ0dWFsIENoYW5uZWxTZW5kKiBHZXRDaGFubmVsKCkgY29uc3Q7Ci0KLSAg
Ly8gRTJFRSBDdXN0b20gQXVkaW8gRnJhbWUgRW5jcnlwdGlvbiAoT3B0aW9uYWwpCi0gIHZpcnR1
YWwgdm9pZCBTZXRGcmFtZUVuY3J5cHRvcihGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVf
ZW5jcnlwdG9yKTsKLQotIHByaXZhdGU6Ci0gIC8vIFRocmVhZCBjaGVja2VycyBkb2N1bWVudCBh
bmQgbG9jayB1c2FnZSBvZiBzb21lIG1ldGhvZHMgb24gdm9lOjpDaGFubmVsIHRvCi0gIC8vIHNw
ZWNpZmljIHRocmVhZHMgd2Uga25vdyBhYm91dC4gVGhlIGdvYWwgaXMgdG8gZXZlbnR1YWxseSBz
cGxpdCB1cAotICAvLyB2b2U6OkNoYW5uZWwgaW50byBwYXJ0cyB3aXRoIHNpbmdsZS10aHJlYWRl
ZCBzZW1hbnRpY3MsIGFuZCB0aGVyZWJ5IHJlZHVjZQotICAvLyB0aGUgbmVlZCBmb3IgbG9ja3Mu
Ci0gIHJ0Yzo6VGhyZWFkQ2hlY2tlciB3b3JrZXJfdGhyZWFkX2NoZWNrZXJfOwotICBydGM6OlRo
cmVhZENoZWNrZXIgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfOwotICAvLyBNZXRob2Rz
IGFjY2Vzc2VkIGZyb20gYXVkaW8gYW5kIHZpZGVvIHRocmVhZHMgYXJlIGNoZWNrZWQgZm9yIHNl
cXVlbnRpYWwtCi0gIC8vIG9ubHkgYWNjZXNzLiBXZSBkb24ndCBuZWNlc3NhcmlseSBvd24gYW5k
IGNvbnRyb2wgdGhlc2UgdGhyZWFkcywgc28gdGhyZWFkCi0gIC8vIGNoZWNrZXJzIGNhbm5vdCBi
ZSB1c2VkLiBFLmcuIENocm9taXVtIG1heSB0cmFuc2ZlciAib3duZXJzaGlwIiBmcm9tIG9uZQot
ICAvLyBhdWRpbyB0aHJlYWQgdG8gYW5vdGhlciwgYnV0IGFjY2VzcyBpcyBzdGlsbCBzZXF1ZW50
aWFsLgotICBydGM6OlJhY2VDaGVja2VyIGF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfOwotICBy
dGM6OlJhY2VDaGVja2VyIHZpZGVvX2NhcHR1cmVfdGhyZWFkX3JhY2VfY2hlY2tlcl87Ci0gIHN0
ZDo6dW5pcXVlX3B0cjxDaGFubmVsU2VuZD4gY2hhbm5lbF87Ci0KLSAgUlRDX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihDaGFubmVsU2VuZFByb3h5KTsKLX07Ci19ICAvLyBuYW1lc3BhY2Ugdm9l
Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVVESU9fQ0hBTk5FTF9TRU5E
X1BST1hZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hdWRpby9tb2NrX3ZvZV9jaGFubmVsX3Byb3h5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9tb2NrX3ZvZV9jaGFubmVsX3Byb3h5LmgK
aW5kZXggOTEwODU4ZmUxMzBjYWM4ZDk0Zjg0Y2IwYzU5YjhiMWFmZjVlMmY2OC4uZWVlMjVjNWEy
ZDUzMmNiMjQ1ZDk5Y2Y0ZGQ0ODczZTk3NDM5MjQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbW9ja192b2VfY2hhbm5lbF9wcm94
eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlv
L21vY2tfdm9lX2NoYW5uZWxfcHJveHkuaApAQCAtMTYsMTUgKzE2LDE2IEBACiAjaW5jbHVkZSA8
c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfcmVj
ZWl2ZV9wcm94eS5oIgotI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfc2VuZF9wcm94eS5oIgorI2lu
Y2x1ZGUgImFwaS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9yLmgiCisjaW5jbHVkZSAiYXVkaW8v
Y2hhbm5lbF9yZWNlaXZlLmgiCisjaW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9zZW5kLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5oIgogI2lu
Y2x1ZGUgInRlc3QvZ21vY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVz
dCB7CiAKLWNsYXNzIE1vY2tDaGFubmVsUmVjZWl2ZVByb3h5IDogcHVibGljIHZvZTo6Q2hhbm5l
bFJlY2VpdmVQcm94eSB7CitjbGFzcyBNb2NrQ2hhbm5lbFJlY2VpdmUgOiBwdWJsaWMgdm9lOjpD
aGFubmVsUmVjZWl2ZUludGVyZmFjZSB7CiAgcHVibGljOgogICBNT0NLX01FVEhPRDEoU2V0TG9j
YWxTU1JDLCB2b2lkKHVpbnQzMl90IHNzcmMpKTsKICAgTU9DS19NRVRIT0QyKFNldE5BQ0tTdGF0
dXMsIHZvaWQoYm9vbCBlbmFibGUsIGludCBtYXhfcGFja2V0cykpOwpAQCAtNDYsMTAgKzQ3LDEw
IEBAIGNsYXNzIE1vY2tDaGFubmVsUmVjZWl2ZVByb3h5IDogcHVibGljIHZvZTo6Q2hhbm5lbFJl
Y2VpdmVQcm94eSB7CiAgICAgICAgICAgICAgICBBdWRpb01peGVyOjpTb3VyY2U6OkF1ZGlvRnJh
bWVJbmZvKGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQXVkaW9GcmFtZSogYXVkaW9fZnJhbWUpKTsKICAgTU9DS19D
T05TVF9NRVRIT0QwKFByZWZlcnJlZFNhbXBsZVJhdGUsIGludCgpKTsKLSAgTU9DS19NRVRIT0Qx
KEFzc29jaWF0ZVNlbmRDaGFubmVsLAotICAgICAgICAgICAgICAgdm9pZChjb25zdCB2b2U6OkNo
YW5uZWxTZW5kUHJveHkmIHNlbmRfY2hhbm5lbF9wcm94eSkpOwotICBNT0NLX01FVEhPRDAoRGlz
YXNzb2NpYXRlU2VuZENoYW5uZWwsIHZvaWQoKSk7CisgIE1PQ0tfTUVUSE9EMShTZXRBc3NvY2lh
dGVkU2VuZENoYW5uZWwsCisgICAgICAgICAgICAgICB2b2lkKGNvbnN0IHZvZTo6Q2hhbm5lbFNl
bmRJbnRlcmZhY2UqIHNlbmRfY2hhbm5lbCkpOwogICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0UGxh
eW91dFRpbWVzdGFtcCwgdWludDMyX3QoKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRTeW5j
SW5mbywgYWJzbDo6b3B0aW9uYWw8U3luY2FibGU6OkluZm8+KCkpOwogICBNT0NLX01FVEhPRDEo
U2V0TWluaW11bVBsYXlvdXREZWxheSwgdm9pZChpbnQgZGVsYXlfbXMpKTsKICAgTU9DS19DT05T
VF9NRVRIT0QxKEdldFJlY0NvZGVjLCBib29sKENvZGVjSW5zdCogY29kZWNfaW5zdCkpOwogICBN
T0NLX01FVEhPRDEoU2V0UmVjZWl2ZUNvZGVjcywKQEAgLTU5LDcgKzYwLDcgQEAgY2xhc3MgTW9j
a0NoYW5uZWxSZWNlaXZlUHJveHkgOiBwdWJsaWMgdm9lOjpDaGFubmVsUmVjZWl2ZVByb3h5IHsK
ICAgTU9DS19NRVRIT0QwKFN0b3BQbGF5b3V0LCB2b2lkKCkpOwogfTsKIAotY2xhc3MgTW9ja0No
YW5uZWxTZW5kUHJveHkgOiBwdWJsaWMgdm9lOjpDaGFubmVsU2VuZFByb3h5IHsKK2NsYXNzIE1v
Y2tDaGFubmVsU2VuZCA6IHB1YmxpYyB2b2U6OkNoYW5uZWxTZW5kSW50ZXJmYWNlIHsKICBwdWJs
aWM6CiAgIC8vIEdNb2NrIGRvZXNuJ3QgbGlrZSBtb3ZlLW9ubHkgdHlwZXMsIGxpa2Ugc3RkOjp1
bmlxdWVfcHRyLgogICB2aXJ0dWFsIGJvb2wgU2V0RW5jb2RlcihpbnQgcGF5bG9hZF90eXBlLApA
QCAtNzEsMTAgKzcyLDEwIEBAIGNsYXNzIE1vY2tDaGFubmVsU2VuZFByb3h5IDogcHVibGljIHZv
ZTo6Q2hhbm5lbFNlbmRQcm94eSB7CiAgIE1PQ0tfTUVUSE9EMSgKICAgICAgIE1vZGlmeUVuY29k
ZXIsCiAgICAgICB2b2lkKHJ0Yzo6RnVuY3Rpb25WaWV3PHZvaWQoc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvRW5jb2Rlcj4qKT4gbW9kaWZpZXIpKTsKLSAgTU9DS19NRVRIT0QxKFNldFJUQ1BTdGF0dXMs
IHZvaWQoYm9vbCBlbmFibGUpKTsKKyAgTU9DS19NRVRIT0QyKFNldE1pZCwgdm9pZChjb25zdCBz
dGQ6OnN0cmluZyYgbWlkLCBpbnQgZXh0ZW5zaW9uX2lkKSk7CiAgIE1PQ0tfTUVUSE9EMShTZXRM
b2NhbFNTUkMsIHZvaWQodWludDMyX3Qgc3NyYykpOwotICBNT0NLX01FVEhPRDEoU2V0UlRDUF9D
TkFNRSwgdm9pZChjb25zdCBzdGQ6OnN0cmluZyYgY19uYW1lKSk7Ci0gIE1PQ0tfTUVUSE9EMihT
ZXROQUNLU3RhdHVzLCB2b2lkKGJvb2wgZW5hYmxlLCBpbnQgbWF4X3BhY2tldHMpKTsKKyAgTU9D
S19NRVRIT0QxKFNldFJUQ1BfQ05BTUUsIHZvaWQoYWJzbDo6c3RyaW5nX3ZpZXcgY19uYW1lKSk7
CisgIE1PQ0tfTUVUSE9EMShTZXRFeHRtYXBBbGxvd01peGVkLCB2b2lkKGJvb2wgZXh0bWFwX2Fs
bG93X21peGVkKSk7CiAgIE1PQ0tfTUVUSE9EMihTZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25T
dGF0dXMsIHZvaWQoYm9vbCBlbmFibGUsIGludCBpZCkpOwogICBNT0NLX01FVEhPRDEoRW5hYmxl
U2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyLCB2b2lkKGludCBpZCkpOwogICBNT0NLX01FVEhP
RDIoUmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMsCkBAIC04Nyw5ICs4OCw4
IEBAIGNsYXNzIE1vY2tDaGFubmVsU2VuZFByb3h5IDogcHVibGljIHZvZTo6Q2hhbm5lbFNlbmRQ
cm94eSB7CiAgIE1PQ0tfTUVUSE9EMihTZXRTZW5kVGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZSwK
ICAgICAgICAgICAgICAgIGJvb2woaW50IHBheWxvYWRfdHlwZSwgaW50IHBheWxvYWRfZnJlcXVl
bmN5KSk7CiAgIE1PQ0tfTUVUSE9EMihTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kLCBib29sKGlu
dCBldmVudCwgaW50IGR1cmF0aW9uX21zKSk7Ci0gIE1PQ0tfTUVUSE9EMihTZXRCaXRyYXRlLCB2
b2lkKGludCBiaXRyYXRlX2JwcywgaW50NjRfdCBwcm9iaW5nX2ludGVydmFsX21zKSk7CisgIE1P
Q0tfTUVUSE9EMShPbkJpdHJhdGVBbGxvY2F0aW9uLCB2b2lkKEJpdHJhdGVBbGxvY2F0aW9uVXBk
YXRlIHVwZGF0ZSkpOwogICBNT0NLX01FVEhPRDEoU2V0SW5wdXRNdXRlLCB2b2lkKGJvb2wgbXV0
ZWQpKTsKLSAgTU9DS19NRVRIT0QxKFJlZ2lzdGVyVHJhbnNwb3J0LCB2b2lkKFRyYW5zcG9ydCog
dHJhbnNwb3J0KSk7CiAgIE1PQ0tfTUVUSE9EMihSZWNlaXZlZFJUQ1BQYWNrZXQsIGJvb2woY29u
c3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKSk7CiAgIC8vIEdNb2NrIGRvZXNuJ3Qg
bGlrZSBtb3ZlLW9ubHkgdHlwZXMsIGxpa2Ugc3RkOjp1bmlxdWVfcHRyLgogICB2aXJ0dWFsIHZv
aWQgUHJvY2Vzc0FuZEVuY29kZUF1ZGlvKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRp
b19mcmFtZSkgewpAQCAtOTcsMTUgKzk3LDE5IEBAIGNsYXNzIE1vY2tDaGFubmVsU2VuZFByb3h5
IDogcHVibGljIHZvZTo6Q2hhbm5lbFNlbmRQcm94eSB7CiAgIH0KICAgTU9DS19NRVRIT0QxKFBy
b2Nlc3NBbmRFbmNvZGVBdWRpb0Zvck1vY2ssCiAgICAgICAgICAgICAgICB2b2lkKHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0ZyYW1lPiogYXVkaW9fZnJhbWUpKTsKLSAgTU9DS19NRVRIT0QxKFNldFRy
YW5zcG9ydE92ZXJoZWFkLCB2b2lkKGludCB0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldCkp
OworICBNT0NLX01FVEhPRDEoU2V0VHJhbnNwb3J0T3ZlcmhlYWQsCisgICAgICAgICAgICAgICB2
b2lkKHNpemVfdCB0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldCkpOwogICBNT0NLX0NPTlNU
X01FVEhPRDAoR2V0UnRwUnRjcCwgUnRwUnRjcCooKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChH
ZXRCaXRyYXRlLCBpbnQoKSk7CiAgIE1PQ0tfTUVUSE9EMShPblR3Y2NCYXNlZFVwbGlua1BhY2tl
dExvc3NSYXRlLCB2b2lkKGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpKTsKICAgTU9DS19NRVRIT0Qx
KE9uUmVjb3ZlcmFibGVVcGxpbmtQYWNrZXRMb3NzUmF0ZSwKICAgICAgICAgICAgICAgIHZvaWQo
ZmxvYXQgcmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0ZSkpOworICBNT0NLX0NPTlNUX01FVEhP
RDAoR2V0UlRULCBpbnQ2NF90KCkpOwogICBNT0NLX01FVEhPRDAoU3RhcnRTZW5kLCB2b2lkKCkp
OwogICBNT0NLX01FVEhPRDAoU3RvcFNlbmQsIHZvaWQoKSk7Ci0gIE1PQ0tfTUVUSE9EMShTZXRG
cmFtZUVuY3J5cHRvciwKLSAgICAgICAgICAgICAgIHZvaWQoRnJhbWVFbmNyeXB0b3JJbnRlcmZh
Y2UqIGZyYW1lX2VuY3J5cHRvcikpOworICBNT0NLX01FVEhPRDEoCisgICAgICBTZXRGcmFtZUVu
Y3J5cHRvciwKKyAgICAgIHZvaWQocnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50
ZXJmYWNlPiBmcmFtZV9lbmNyeXB0b3IpKTsKIH07CiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9udWxsX2F1ZGlvX3BvbGxlci5j
YwppbmRleCBjMjJiM2Q4NzkxMTU4MTFjZTZkMGQxZDI3NGRiMWJmZDM3MThjMjdkLi5kMmIxMTk5
ZWQ2ZGQyN2Q1OGQzZDdlNDg2NzI4ZTQ5ZjNjMzE4YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9udWxsX2F1ZGlvX3BvbGxlci5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9u
dWxsX2F1ZGlvX3BvbGxlci5jYwpAQCAtOSw4ICs5LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgImF1
ZGlvL251bGxfYXVkaW9fcG9sbGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgor
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IG5hbWVzcGFjZSBpbnRlcm5hbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9udWxsX2F1ZGlvX3BvbGxlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIu
aAppbmRleCBhZmI2ZWRiYWYxNjEzMmY3ODcwODhhY2M2ZjM2NmJkMWNiNjI0NzA4Li5mOTFlYjdk
NmMwNzgyNDQ4Y2M5YTdhNjk0M2I1NTQyYmYzYjdjMTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9udWxsX2F1ZGlvX3BvbGxlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL251
bGxfYXVkaW9fcG9sbGVyLmgKQEAgLTExLDggKzExLDExIEBACiAjaWZuZGVmIEFVRElPX05VTExf
QVVESU9fUE9MTEVSX0hfCiAjZGVmaW5lIEFVRElPX05VTExfQVVESU9fUE9MTEVSX0hfCiAKKyNp
bmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1
ZGUvYXVkaW9fZGV2aWNlX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlaGFu
ZGxlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhf
cmVzYW1wbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby9yZW1peF9yZXNhbXBsZS5jYwppbmRleCA5NzIyMmU5NDdhNGU2MmYzNDVjNzMwNGQ3YjY5
MmFmOWMwZGE1YjY0Li5iMTE1OGRhMjEzZjk2NmI0NDM0MGQ2MjIwZmM5ZTA0ZjY2MmE3ZWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRp
by9yZW1peF9yZXNhbXBsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYwpAQCAtMTMsMTAgKzEzLDcgQEAKICNp
bmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKICNpbmNsdWRlICJhdWRpby91dGlsaXR5
L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vcmVzYW1w
bGVyL2luY2x1ZGUvcHVzaF9yZXNhbXBsZXIuaCIKLSNpbmNsdWRlICJjb21tb25fYXVkaW8vc2ln
bmFsX3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCi0jaW5j
bHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHZvZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2J3ZV9pbnRl
Z3JhdGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXVkaW8vdGVzdC9hdWRpb19id2VfaW50ZWdyYXRpb25fdGVzdC5jYwppbmRleCA4ZWMyYTdj
ZjRhNTc0ZTE1M2NhYTE0M2VlNjQ3ZjQxMzNmYzllZTkyLi45ZmE5NWIxN2I4ZTQ2ZDk0ZWViZDY0
MWMzN2MwMjI2MWNjZjgwZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2J3ZV9pbnRlZ3JhdGlvbl90ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rl
c3QvYXVkaW9fYndlX2ludGVncmF0aW9uX3Rlc3QuY2MKQEAgLTEyMyw4ICsxMjMsOCBAQCBjbGFz
cyBOb0JhbmR3aWR0aERyb3BBZnRlckR0eCA6IHB1YmxpYyBBdWRpb0J3ZVRlc3QgewogICAgIHJl
dHVybiB0ZXN0OjpSZXNvdXJjZVBhdGgoInZvaWNlX2VuZ2luZS9hdWRpb19kdHgxNiIsICJ3YXYi
KTsKICAgfQogCi0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBHZXROZXR3b3JrUGlw
ZUNvbmZpZygpIG92ZXJyaWRlIHsKLSAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcg
cGlwZV9jb25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgR2V0TmV0d29ya1Bp
cGVDb25maWcoKSBvdmVycmlkZSB7CisgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBw
aXBlX2NvbmZpZzsKICAgICBwaXBlX2NvbmZpZy5saW5rX2NhcGFjaXR5X2ticHMgPSA1MDsKICAg
ICBwaXBlX2NvbmZpZy5xdWV1ZV9sZW5ndGhfcGFja2V0cyA9IDE1MDA7CiAgICAgcGlwZV9jb25m
aWcucXVldWVfZGVsYXlfbXMgPSAzMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2J3ZV9pbnRlZ3JhdGlvbl90
ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90
ZXN0L2F1ZGlvX2J3ZV9pbnRlZ3JhdGlvbl90ZXN0LmgKaW5kZXggYzcwYWQxYzkxYjkzZjc3MWI1
ODBmNDYwYWZmNjMxZTJhNmNkNmIxYS4uNGRlMmNhYjMxNjEzYmVjMzU5NjgxMTFhMTBkYzU1ZTNi
OTk1YTdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19id2VfaW50ZWdyYXRpb25fdGVzdC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fYndl
X2ludGVncmF0aW9uX3Rlc3QuaApAQCAtMjcsNyArMjcsNyBAQCBjbGFzcyBBdWRpb0J3ZVRlc3Qg
OiBwdWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgc3Rk
OjpzdHJpbmcgQXVkaW9JbnB1dEZpbGUoKSA9IDA7CiAKLSAgdmlydHVhbCBEZWZhdWx0TmV0d29y
a1NpbXVsYXRpb25Db25maWcgR2V0TmV0d29ya1BpcGVDb25maWcoKSA9IDA7CisgIHZpcnR1YWwg
QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBHZXROZXR3b3JrUGlwZUNvbmZpZygpID0gMDsK
IAogICBzaXplX3QgR2V0TnVtVmlkZW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIHNpemVf
dCBHZXROdW1BdWRpb1N0cmVhbXMoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fZW5k
X3RvX2VuZF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXVkaW8vdGVzdC9hdWRpb19lbmRfdG9fZW5kX3Rlc3QuY2MKaW5kZXggMDJhYmU3MzRiYmZl
MWYyZWM2ODhiNDAyY2ExMjJlMmU1ZDQ4ZDU5Ni4uNWUxODdhZDhmODk4MDkxMjkzNWFkNmEwYmZh
OTBjYzA5YjMzMmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19lbmRfdG9fZW5kX3Rlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19l
bmRfdG9fZW5kX3Rlc3QuY2MKQEAgLTI4LDggKzI4LDggQEAgY29uc3RleHByIGludCBrU2FtcGxl
UmF0ZSA9IDQ4MDAwOwogQXVkaW9FbmRUb0VuZFRlc3Q6OkF1ZGlvRW5kVG9FbmRUZXN0KCkKICAg
ICA6IEVuZFRvRW5kVGVzdChDYWxsVGVzdDo6a0RlZmF1bHRUaW1lb3V0TXMpIHt9CiAKLURlZmF1
bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBBdWRpb0VuZFRvRW5kVGVzdDo6R2V0TmV0d29ya1Bp
cGVDb25maWcoKSBjb25zdCB7Ci0gIHJldHVybiBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25m
aWcoKTsKK0J1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgQXVkaW9FbmRUb0VuZFRlc3Q6Okdl
dE5ldHdvcmtQaXBlQ29uZmlnKCkgY29uc3QgeworICByZXR1cm4gQnVpbHRJbk5ldHdvcmtCZWhh
dmlvckNvbmZpZygpOwogfQogCiBzaXplX3QgQXVkaW9FbmRUb0VuZFRlc3Q6OkdldE51bVZpZGVv
U3RyZWFtcygpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fZW5kX3RvX2VuZF90ZXN0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2Vu
ZF90b19lbmRfdGVzdC5oCmluZGV4IDlkZGE4MzRkMjJiNGVkNmU1ZWUyYTBmMmY0ODcyM2NmNGMw
MGMwMDIuLmJhMWUwYzdkNmVmOGVlYzc3MGYzYmNkZDgxM2JmYjIyNzQ1YTQ4MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3Qv
YXVkaW9fZW5kX3RvX2VuZF90ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19lbmRfdG9fZW5kX3Rlc3QuaApAQCAtMjks
NyArMjksNyBAQCBjbGFzcyBBdWRpb0VuZFRvRW5kVGVzdCA6IHB1YmxpYyB0ZXN0OjpFbmRUb0Vu
ZFRlc3QgewogICBjb25zdCBBdWRpb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtKCkgY29uc3QgeyBy
ZXR1cm4gc2VuZF9zdHJlYW1fOyB9CiAgIGNvbnN0IEF1ZGlvUmVjZWl2ZVN0cmVhbSogcmVjZWl2
ZV9zdHJlYW0oKSBjb25zdCB7IHJldHVybiByZWNlaXZlX3N0cmVhbV87IH0KIAotICB2aXJ0dWFs
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBHZXROZXR3b3JrUGlwZUNvbmZpZygpIGNv
bnN0OworICB2aXJ0dWFsIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgR2V0TmV0d29ya1Bp
cGVDb25maWcoKSBjb25zdDsKIAogICBzaXplX3QgR2V0TnVtVmlkZW9TdHJlYW1zKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgIHNpemVfdCBHZXROdW1BdWRpb1N0cmVhbXMoKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1
ZGlvL3Rlc3QvYXVkaW9fc3RhdHNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fc3RhdHNfdGVzdC5jYwppbmRleCAwMTk2
NzllMDc4MmY4NmIwYjc2YTRiOTAzMWVlYmM3OTNhM2UyMzQ5Li41NTZhMTZkZmE2ZDUwNTYzM2Y5
OTcyZDA5NjUyYmNjMTdmMDE5YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX3N0YXRzX3Rlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRp
b19zdGF0c190ZXN0LmNjCkBAIC0zMiw4ICszMiw4IEBAIGNsYXNzIE5vTG9zc1Rlc3QgOiBwdWJs
aWMgQXVkaW9FbmRUb0VuZFRlc3QgewogCiAgIE5vTG9zc1Rlc3QoKSA9IGRlZmF1bHQ7CiAKLSAg
RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIEdldE5ldHdvcmtQaXBlQ29uZmlnKCkgY29u
c3Qgb3ZlcnJpZGUgewotICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBwaXBlX2Nv
bmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBHZXROZXR3b3JrUGlwZUNvbmZp
ZygpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIHBp
cGVfY29uZmlnOwogICAgIHBpcGVfY29uZmlnLnF1ZXVlX2RlbGF5X21zID0ga1J0dE1zIC8gMjsK
ICAgICByZXR1cm4gcGlwZV9jb25maWc7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvbG93X2JhbmR3aWR0aF9hdWRp
b190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVk
aW8vdGVzdC9sb3dfYmFuZHdpZHRoX2F1ZGlvX3Rlc3QuY2MKaW5kZXggMTZhM2I5MWU4NzdjZGQ4
OGQ2ZjkzZjhlZDZmMjJiOWJjOTJhYjQzNy4uODU3Zjk4M2Q1Nzc3NWExYTQ3YjEwZjgwOTgwZDY4
YTllOGRlMjVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXVkaW8vdGVzdC9sb3dfYmFuZHdpZHRoX2F1ZGlvX3Rlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9sb3dfYmFu
ZHdpZHRoX2F1ZGlvX3Rlc3QuY2MKQEAgLTE0LDE0ICsxNCwxNSBAQAogI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL3NsZWVwLmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9m
aWxldXRpbHMuaCIKIAotREVGSU5FX2ludChzYW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICAgMTYw
MDAsCi0gICAgICAgICAgICJTYW1wbGUgcmF0ZSAoSHopIG9mIHRoZSBwcm9kdWNlZCBhdWRpbyBm
aWxlcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNhbXBsZV9yYXRlX2h6LAorICAgICAgICAgICAg
ICAgICAgMTYwMDAsCisgICAgICAgICAgICAgICAgICAiU2FtcGxlIHJhdGUgKEh6KSBvZiB0aGUg
cHJvZHVjZWQgYXVkaW8gZmlsZXMuIik7CiAKLURFRklORV9ib29sKHF1aWNrLAotICAgICAgICAg
ICAgZmFsc2UsCi0gICAgICAgICAgICAiRG9uJ3QgZG8gdGhlIGZ1bGwgYXVkaW8gcmVjb3JkaW5n
LiAiCi0gICAgICAgICAgICAiVXNlZCB0byBxdWlja2x5IGNoZWNrIHRoYXQgdGhlIHRlc3QgcnVu
cyB3aXRob3V0IGNyYXNoaW5nLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHF1aWNrLAor
ICAgIGZhbHNlLAorICAgICJEb24ndCBkbyB0aGUgZnVsbCBhdWRpbyByZWNvcmRpbmcuICIKKyAg
ICAiVXNlZCB0byBxdWlja2x5IGNoZWNrIHRoYXQgdGhlIHRlc3QgcnVucyB3aXRob3V0IGNyYXNo
aW5nLiIpOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKQEAgLTg5LDgg
KzkwLDggQEAgY2xhc3MgTW9iaWxlMkdOZXR3b3JrVGVzdCA6IHB1YmxpYyBBdWRpb1F1YWxpdHlU
ZXN0IHsKICAgICAgICAgIHt7Im1heGF2ZXJhZ2ViaXRyYXRlIiwgIjYwMDAifSwgeyJwdGltZSIs
ICI2MCJ9LCB7InN0ZXJlbyIsICIxIn19fSk7CiAgIH0KIAotICBEZWZhdWx0TmV0d29ya1NpbXVs
YXRpb25Db25maWcgR2V0TmV0d29ya1BpcGVDb25maWcoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAg
RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIHBpcGVfY29uZmlnOworICBCdWlsdEluTmV0
d29ya0JlaGF2aW9yQ29uZmlnIEdldE5ldHdvcmtQaXBlQ29uZmlnKCkgY29uc3Qgb3ZlcnJpZGUg
eworICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgcGlwZV9jb25maWc7CiAgICAgcGlw
ZV9jb25maWcubGlua19jYXBhY2l0eV9rYnBzID0gMTI7CiAgICAgcGlwZV9jb25maWcucXVldWVf
bGVuZ3RoX3BhY2tldHMgPSAxNTAwOwogICAgIHBpcGVfY29uZmlnLnF1ZXVlX2RlbGF5X21zID0g
NDAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXVkaW8vdGVzdC9tZWRpYV90cmFuc3BvcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvbWVkaWFfdHJhbnNwb3J0X3Rlc3Qu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjRhZjRhMDg4MTkxMzhiZjY5NjkyNjEzM2YwNGUxZWRlZTNhNjAyMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2F1ZGlvL3Rlc3QvbWVkaWFfdHJhbnNwb3J0X3Rlc3QuY2MKQEAgLTAsMCArMSwxNDMgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRp
b19kZWNvZGVyX2ZhY3RvcnlfdGVtcGxhdGUuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2F1ZGlvX2VuY29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19j
b2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29k
ZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvbG9vcGJh
Y2tfbWVkaWFfdHJhbnNwb3J0LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja19hdWRpb19taXhl
ci5oIgorI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmgiCisjaW5jbHVkZSAi
YXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uaCIKKyNpbmNsdWRlICJjYWxsL3Rlc3QvbW9ja19iaXRy
YXRlX2FsbG9jYXRvci5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZl
bnRfbG9nLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS90ZXN0X2F1
ZGlvX2RldmljZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fbWl4ZXIvYXVkaW9fbWl4ZXJf
aW1wbC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL21vY2tf
YXVkaW9fcHJvY2Vzc2luZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3By
b2Nlc3NfdGhyZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKyNpbmNs
dWRlICJ0ZXN0L21vY2tfdHJhbnNwb3J0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNw
YWNlIHRlc3QgeworCituYW1lc3BhY2UgeworY29uc3RleHByIGludCBrUGF5bG9hZFR5cGVPcHVz
ID0gMTc7Citjb25zdGV4cHIgaW50IGtTYW1wbGluZ0ZyZXF1ZW5jeSA9IDQ4MDAwOworY29uc3Rl
eHByIGludCBrTnVtQ2hhbm5lbHMgPSAyOworY29uc3RleHByIGludCBrV2FudGVkU2FtcGxlcyA9
IDMwMDA7Citjb25zdGV4cHIgaW50IGtUZXN0VGltZW91dE1zID0gMiAqIHJ0Yzo6a051bU1pbGxp
c2Vjc1BlclNlYzsKKworY2xhc3MgVGVzdFJlbmRlcmVyIDogcHVibGljIFRlc3RBdWRpb0Rldmlj
ZU1vZHVsZTo6UmVuZGVyZXIgeworIHB1YmxpYzoKKyAgVGVzdFJlbmRlcmVyKGludCBzYW1wbGlu
Z19mcmVxdWVuY3ksIGludCBudW1fY2hhbm5lbHMsIHNpemVfdCB3YW50ZWRfc2FtcGxlcykKKyAg
ICAgIDogc2FtcGxpbmdfZnJlcXVlbmN5XyhzYW1wbGluZ19mcmVxdWVuY3kpLAorICAgICAgICBu
dW1fY2hhbm5lbHNfKG51bV9jaGFubmVscyksCisgICAgICAgIHdhbnRlZF9zYW1wbGVzXyh3YW50
ZWRfc2FtcGxlcykge30KKyAgflRlc3RSZW5kZXJlcigpIG92ZXJyaWRlID0gZGVmYXVsdDsKKwor
ICBpbnQgU2FtcGxpbmdGcmVxdWVuY3koKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzYW1wbGlu
Z19mcmVxdWVuY3lfOyB9CisgIGludCBOdW1DaGFubmVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bV9jaGFubmVsc187IH0KKworICBib29sIFJlbmRlcihydGM6OkFycmF5Vmlldzxjb25z
dCBpbnQxNl90PiBkYXRhKSBvdmVycmlkZSB7CisgICAgaWYgKGRhdGEuc2l6ZSgpID49IHdhbnRl
ZF9zYW1wbGVzXykgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICB3YW50ZWRfc2Ft
cGxlc18gLT0gZGF0YS5zaXplKCk7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworIHByaXZhdGU6
CisgIGNvbnN0IGludCBzYW1wbGluZ19mcmVxdWVuY3lfOworICBjb25zdCBpbnQgbnVtX2NoYW5u
ZWxzXzsKKyAgc2l6ZV90IHdhbnRlZF9zYW1wbGVzXzsKK307CisKK30gIC8vIG5hbWVzcGFjZQor
CitURVNUKEF1ZGlvV2l0aE1lZGlhVHJhbnNwb3J0LCBEZWxpdmVyc0F1ZGlvKSB7CisgIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gdHJhbnNwb3J0X3RocmVhZCA9IHJ0Yzo6VGhyZWFkOjpD
cmVhdGUoKTsKKyAgdHJhbnNwb3J0X3RocmVhZC0+U3RhcnQoKTsKKyAgTWVkaWFUcmFuc3BvcnRQ
YWlyIHRyYW5zcG9ydF9wYWlyKHRyYW5zcG9ydF90aHJlYWQuZ2V0KCkpOworICBNb2NrVHJhbnNw
b3J0IHJ0Y3Bfc2VuZF90cmFuc3BvcnQ7CisgIE1vY2tUcmFuc3BvcnQgc2VuZF90cmFuc3BvcnQ7
CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZz4gbnVsbF9ldmVudF9sb2cgPSBSdGNFdmVu
dExvZzo6Q3JlYXRlTnVsbCgpOworICBNb2NrQml0cmF0ZUFsbG9jYXRvciBiaXRyYXRlX2FsbG9j
YXRvcjsKKworICBydGM6OnNjb3BlZF9yZWZwdHI8VGVzdEF1ZGlvRGV2aWNlTW9kdWxlPiBhdWRp
b19kZXZpY2UgPQorICAgICAgVGVzdEF1ZGlvRGV2aWNlTW9kdWxlOjpDcmVhdGVUZXN0QXVkaW9E
ZXZpY2VNb2R1bGUoCisgICAgICAgICAgVGVzdEF1ZGlvRGV2aWNlTW9kdWxlOjpDcmVhdGVQdWxz
ZWROb2lzZUNhcHR1cmVyKAorICAgICAgICAgICAgICAvKiBtYXhfYW1wbGl0dWRlPSAqLyAxMDAw
MCwga1NhbXBsaW5nRnJlcXVlbmN5LCBrTnVtQ2hhbm5lbHMpLAorICAgICAgICAgIGFic2w6Om1h
a2VfdW5pcXVlPFRlc3RSZW5kZXJlcj4oa1NhbXBsaW5nRnJlcXVlbmN5LCBrTnVtQ2hhbm5lbHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrV2FudGVkU2FtcGxl
cykpOworCisgIEF1ZGlvU3RhdGU6OkNvbmZpZyBhdWRpb19jb25maWc7CisgIGF1ZGlvX2NvbmZp
Zy5hdWRpb19taXhlciA9IEF1ZGlvTWl4ZXJJbXBsOjpDcmVhdGUoKTsKKyAgLy8gVE9ETyhuaXNz
ZSk6IElzIGEgbW9jayBBdWRpb1Byb2Nlc3NpbmcgZW5vdWdoPworICBhdWRpb19jb25maWcuYXVk
aW9fcHJvY2Vzc2luZyA9CisgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE1vY2tBdWRp
b1Byb2Nlc3Npbmc+KCk7CisgIGF1ZGlvX2NvbmZpZy5hdWRpb19kZXZpY2VfbW9kdWxlID0gYXVk
aW9fZGV2aWNlOworICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9TdGF0ZT4gYXVkaW9fc3RhdGUg
PSBBdWRpb1N0YXRlOjpDcmVhdGUoYXVkaW9fY29uZmlnKTsKKworICAvLyBUT0RPKG5pc3NlKTog
VXNlIHNvbWUgbG9zc2xlc3MgY29kZWM/CisgIGNvbnN0IFNkcEF1ZGlvRm9ybWF0IGF1ZGlvX2Zv
cm1hdCgib3B1cyIsIGtTYW1wbGluZ0ZyZXF1ZW5jeSwga051bUNoYW5uZWxzKTsKKworICAvLyBT
ZXR1cCByZWNlaXZlIHN0cmVhbTsKKyAgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZp
ZyByZWNlaXZlX2NvbmZpZzsKKyAgLy8gVE9ETyhuaXNzZSk6IFVwZGF0ZSBBdWRpb1JlY2VpdmVT
dHJlYW0gdG8gbm90IHJlcXVpcmUgcnRjcF9zZW5kX3RyYW5zcG9ydAorICAvLyB3aGVuIGEgTWVk
aWFUcmFuc3BvcnQgaXMgcHJvdmlkZWQuCisgIHJlY2VpdmVfY29uZmlnLnJ0Y3Bfc2VuZF90cmFu
c3BvcnQgPSAmcnRjcF9zZW5kX3RyYW5zcG9ydDsKKyAgcmVjZWl2ZV9jb25maWcubWVkaWFfdHJh
bnNwb3J0ID0gdHJhbnNwb3J0X3BhaXIuZmlyc3QoKTsKKyAgcmVjZWl2ZV9jb25maWcuZGVjb2Rl
cl9tYXAuZW1wbGFjZShrUGF5bG9hZFR5cGVPcHVzLCBhdWRpb19mb3JtYXQpOworICByZWNlaXZl
X2NvbmZpZy5kZWNvZGVyX2ZhY3RvcnkgPQorICAgICAgQ3JlYXRlQXVkaW9EZWNvZGVyRmFjdG9y
eTxBdWRpb0RlY29kZXJPcHVzPigpOworCisgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyZWFk
PiByZWNlaXZlX3Byb2Nlc3NfdGhyZWFkID0KKyAgICAgIFByb2Nlc3NUaHJlYWQ6OkNyZWF0ZSgi
YXVkaW8gcmVjdiB0aHJlYWQiKTsKKworICB3ZWJydGM6OmludGVybmFsOjpBdWRpb1JlY2VpdmVT
dHJlYW0gcmVjZWl2ZV9zdHJlYW0oCisgICAgICAvKnJ0cF9zdHJlYW1fcmVjZWl2ZXJfY29udHJv
bGxlcj0qL251bGxwdHIsCisgICAgICAvKnBhY2tldF9yb3V0ZXI9Ki9udWxscHRyLCByZWNlaXZl
X3Byb2Nlc3NfdGhyZWFkLmdldCgpLCByZWNlaXZlX2NvbmZpZywKKyAgICAgIGF1ZGlvX3N0YXRl
LCBudWxsX2V2ZW50X2xvZy5nZXQoKSk7CisKKyAgLy8gVE9ETyhuaXNzZSk6IFVwZGF0ZSBBdWRp
b1NlbmRTdHJlYW0gdG8gbm90IHJlcXVpcmUgc2VuZF90cmFuc3BvcnQgd2hlbiBhCisgIC8vIE1l
ZGlhVHJhbnNwb3J0IGlzIHByb3ZpZGVkLgorICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBzZW5k
X2NvbmZpZygmc2VuZF90cmFuc3BvcnQsIHRyYW5zcG9ydF9wYWlyLnNlY29uZCgpKTsKKyAgc2Vu
ZF9jb25maWcuc2VuZF9jb2RlY19zcGVjID0KKyAgICAgIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmln
OjpTZW5kQ29kZWNTcGVjKGtQYXlsb2FkVHlwZU9wdXMsIGF1ZGlvX2Zvcm1hdCk7CisgIHNlbmRf
Y29uZmlnLmVuY29kZXJfZmFjdG9yeSA9IENyZWF0ZUF1ZGlvRW5jb2RlckZhY3Rvcnk8QXVkaW9F
bmNvZGVyT3B1cz4oKTsKKyAgcnRjOjpUYXNrUXVldWUgc2VuZF90cSgiYXVkaW8gc2VuZCBxdWV1
ZSIpOworICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1RocmVhZD4gc2VuZF9wcm9jZXNzX3RocmVh
ZCA9CisgICAgICBQcm9jZXNzVGhyZWFkOjpDcmVhdGUoImF1ZGlvIHNlbmQgdGhyZWFkIik7Cisg
IHdlYnJ0Yzo6aW50ZXJuYWw6OkF1ZGlvU2VuZFN0cmVhbSBzZW5kX3N0cmVhbSgKKyAgICAgIHNl
bmRfY29uZmlnLCBhdWRpb19zdGF0ZSwgJnNlbmRfdHEsIHNlbmRfcHJvY2Vzc190aHJlYWQuZ2V0
KCksCisgICAgICAvKnRyYW5zcG9ydD0qL251bGxwdHIsICZiaXRyYXRlX2FsbG9jYXRvciwgbnVs
bF9ldmVudF9sb2cuZ2V0KCksCisgICAgICAvKnJ0Y3BfcnR0X3N0YXRzPSovbnVsbHB0ciwgYWJz
bDo6b3B0aW9uYWw8UnRwU3RhdGU+KCkpOworCisgIGF1ZGlvX2RldmljZS0+SW5pdCgpOyAgLy8g
U3RhcnRzIHRocmVhZC4KKyAgYXVkaW9fZGV2aWNlLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soYXVk
aW9fc3RhdGUtPmF1ZGlvX3RyYW5zcG9ydCgpKTsKKworICByZWNlaXZlX3N0cmVhbS5TdGFydCgp
OworICBzZW5kX3N0cmVhbS5TdGFydCgpOworICBhdWRpb19kZXZpY2UtPlN0YXJ0UGxheW91dCgp
OworICBhdWRpb19kZXZpY2UtPlN0YXJ0UmVjb3JkaW5nKCk7CisKKyAgRVhQRUNUX1RSVUUoYXVk
aW9fZGV2aWNlLT5XYWl0Rm9yUGxheW91dEVuZChrVGVzdFRpbWVvdXRNcykpOworCisgIGF1ZGlv
X2RldmljZS0+U3RvcFJlY29yZGluZygpOworICBhdWRpb19kZXZpY2UtPlN0b3BQbGF5b3V0KCk7
CisgIHJlY2VpdmVfc3RyZWFtLlN0b3AoKTsKKyAgc2VuZF9zdHJlYW0uU3RvcCgpOworfQorCit9
ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGltZV9pbnRl
cnZhbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlv
L3RpbWVfaW50ZXJ2YWwuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMTAzNDA4
YTNhMjQ2N2U1YTBhMDJmODhlMzkwZDc0ODEzYzZjMWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXVkaW8vdGltZV9pbnRlcnZhbC5jYworKysgL2Rldi9udWxsCkBAIC0xLDU2ICsw
LDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAiYXVkaW8vdGltZV9pbnRl
cnZhbC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L3RpbWV1dGlscy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotVGltZUludGVydmFsOjpUaW1l
SW50ZXJ2YWwoKSA9IGRlZmF1bHQ7Ci1UaW1lSW50ZXJ2YWw6On5UaW1lSW50ZXJ2YWwoKSA9IGRl
ZmF1bHQ7Ci0KLXZvaWQgVGltZUludGVydmFsOjpFeHRlbmQoKSB7Ci0gIEV4dGVuZChydGM6OlRp
bWVNaWxsaXMoKSk7Ci19Ci0KLXZvaWQgVGltZUludGVydmFsOjpFeHRlbmQoaW50NjRfdCB0aW1l
KSB7Ci0gIGlmICghaW50ZXJ2YWxfKSB7Ci0gICAgaW50ZXJ2YWxfLmVtcGxhY2UodGltZSwgdGlt
ZSk7Ci0gIH0gZWxzZSB7Ci0gICAgaWYgKHRpbWUgPCBpbnRlcnZhbF8tPmZpcnN0KSB7Ci0gICAg
ICBpbnRlcnZhbF8tPmZpcnN0ID0gdGltZTsKLSAgICB9Ci0gICAgaWYgKHRpbWUgPiBpbnRlcnZh
bF8tPmxhc3QpIHsKLSAgICAgIGludGVydmFsXy0+bGFzdCA9IHRpbWU7Ci0gICAgfQotICB9Ci19
Ci0KLXZvaWQgVGltZUludGVydmFsOjpFeHRlbmQoY29uc3QgVGltZUludGVydmFsJiBvdGhlcl9p
bnRlcnZhbCkgewotICBpZiAoIW90aGVyX2ludGVydmFsLkVtcHR5KCkpIHsKLSAgICBFeHRlbmQo
b3RoZXJfaW50ZXJ2YWwuaW50ZXJ2YWxfLT5maXJzdCk7Ci0gICAgRXh0ZW5kKG90aGVyX2ludGVy
dmFsLmludGVydmFsXy0+bGFzdCk7Ci0gIH0KLX0KLQotYm9vbCBUaW1lSW50ZXJ2YWw6OkVtcHR5
KCkgY29uc3QgewotICByZXR1cm4gIWludGVydmFsXzsKLX0KLQotaW50NjRfdCBUaW1lSW50ZXJ2
YWw6Okxlbmd0aCgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyhpbnRlcnZhbF8pOwotICByZXR1cm4g
aW50ZXJ2YWxfLT5sYXN0IC0gaW50ZXJ2YWxfLT5maXJzdDsKLX0KLQotVGltZUludGVydmFsOjpJ
bnRlcnZhbDo6SW50ZXJ2YWwoaW50NjRfdCBmaXJzdCwgaW50NjRfdCBsYXN0KQotICAgIDogZmly
c3QoZmlyc3QpLCBsYXN0KGxhc3QpIHt9Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rp
bWVfaW50ZXJ2YWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2F1ZGlvL3RpbWVfaW50ZXJ2YWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlm
ZTI5ZDlkNTY5YTEwNTZkNTkxMzFkNTg3NmUyYzkwYjk2ZDQ5OS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby90aW1lX2ludGVydmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
NSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBBVURJT19USU1FX0lO
VEVSVkFMX0hfCi0jZGVmaW5lIEFVRElPX1RJTUVfSU5URVJWQUxfSF8KLQotI2luY2x1ZGUgPHN0
ZGludC5oPgotCi0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgotCi1uYW1lc3BhY2Ug
d2VicnRjIHsKLQotLy8gVGhpcyBjbGFzcyBsb2dzIHRoZSBmaXJzdCBhbmQgbGFzdCB0aW1lIGl0
cyBFeHRlbmQoKSBmdW5jdGlvbiBpcyBjYWxsZWQuCi0vLwotLy8gVGhpcyBjbGFzcyBpcyBub3Qg
dGhyZWFkLXNhZmU7IEV4dGVuZCgpIGNhbGxzIHNob3VsZCBvbmx5IGJlIG1hZGUgYnkgYQotLy8g
c2luZ2xlIHRocmVhZCBhdCBhIHRpbWUsIHN1Y2ggYXMgd2l0aGluIGEgbG9jayBvciBkZXN0cnVj
dG9yLgotLy8KLS8vIEV4YW1wbGUgdXNhZ2U6Ci0vLyAgIC8vIGxldCB4IDwgeSA8IHogPCB1IDwg
dgotLy8gICBydGM6OlRpbWVJbnRlcnZhbCBpbnRlcnZhbDsKLS8vICAgLi4uICAvLyAgIGludGVy
dmFsLkV4dGVuZCgpOyAvLyBhdCB0aW1lIHgKLS8vICAgLi4uCi0vLyAgIGludGVydmFsLkV4dGVu
ZCgpOyAvLyBhdCB0aW1lIHkKLS8vICAgLi4uCi0vLyAgIGludGVydmFsLkV4dGVuZCgpOyAvLyBh
dCB0aW1lIHUKLS8vICAgLi4uCi0vLyAgIGludGVydmFsLkV4dGVuZCh6KTsgLy8gYXQgdGltZSB2
Ci0vLyAgIC4uLgotLy8gICBpZiAoIWludGVydmFsLkVtcHR5KCkpIHsKLS8vICAgICBpbnQ2NF90
IGFjdGl2ZV90aW1lID0gaW50ZXJ2YWwuTGVuZ3RoKCk7IC8vIHJldHVybnMgKHUgLSB4KQotLy8g
ICB9Ci1jbGFzcyBUaW1lSW50ZXJ2YWwgewotIHB1YmxpYzoKLSAgVGltZUludGVydmFsKCk7Ci0g
IH5UaW1lSW50ZXJ2YWwoKTsKLSAgLy8gRXh0ZW5kIHRoZSBpbnRlcnZhbCB3aXRoIHRoZSBjdXJy
ZW50IHRpbWUuCi0gIHZvaWQgRXh0ZW5kKCk7Ci0gIC8vIEV4dGVuZCB0aGUgaW50ZXJ2YWwgd2l0
aCBhIGdpdmVuIHRpbWUuCi0gIHZvaWQgRXh0ZW5kKGludDY0X3QgdGltZSk7Ci0gIC8vIFRha2Ug
dGhlIGNvbnZleCBodWxsIHdpdGggYW5vdGhlciBpbnRlcnZhbC4KLSAgdm9pZCBFeHRlbmQoY29u
c3QgVGltZUludGVydmFsJiBvdGhlcl9pbnRlcnZhbCk7Ci0gIC8vIFRydWUgaWZmIEV4dGVuZCBo
YXMgbmV2ZXIgYmVlbiBjYWxsZWQuCi0gIGJvb2wgRW1wdHkoKSBjb25zdDsKLSAgLy8gUmV0dXJu
cyB0aGUgdGltZSBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgdGljaywgaW4gbWlsbGlz
ZWNvbmRzLgotICBpbnQ2NF90IExlbmd0aCgpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgc3RydWN0
IEludGVydmFsIHsKLSAgICBJbnRlcnZhbChpbnQ2NF90IGZpcnN0LCBpbnQ2NF90IGxhc3QpOwot
Ci0gICAgaW50NjRfdCBmaXJzdCwgbGFzdDsKLSAgfTsKLSAgYWJzbDo6b3B0aW9uYWw8SW50ZXJ2
YWw+IGludGVydmFsXzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAv
LyBBVURJT19USU1FX0lOVEVSVkFMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90aW1lX2ludGVydmFsX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGltZV9pbnRl
cnZhbF91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVmZjZlMzYz
ZGEyMTYxZGJkZWU2ODA3MTk4NzJmYjI5NjUyNmU5Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hdWRpby90aW1lX2ludGVydmFsX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAg
LTEsNDggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgImF1ZGlvL3RpbWVf
aW50ZXJ2YWwuaCIKLSNpbmNsdWRlICJhcGkvdW5pdHMvdGltZV9kZWx0YS5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2Zha2VjbG9jay5oIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKLQotbmFtZXNw
YWNlIHdlYnJ0YyB7Ci0KLVRFU1QoVGltZUludGVydmFsVGVzdCwgVGltZUluTXMpIHsKLSAgcnRj
OjpTY29wZWRGYWtlQ2xvY2sgZmFrZV9jbG9jazsKLSAgVGltZUludGVydmFsIGludGVydmFsOwot
ICBpbnRlcnZhbC5FeHRlbmQoKTsKLSAgZmFrZV9jbG9jay5BZHZhbmNlVGltZShUaW1lRGVsdGE6
Om1zKDEwMCkpOwotICBpbnRlcnZhbC5FeHRlbmQoKTsKLSAgRVhQRUNUX0VRKGludGVydmFsLkxl
bmd0aCgpLCAxMDApOwotfQotCi1URVNUKFRpbWVJbnRlcnZhbFRlc3QsIEVtcHR5KSB7Ci0gIFRp
bWVJbnRlcnZhbCBpbnRlcnZhbDsKLSAgRVhQRUNUX1RSVUUoaW50ZXJ2YWwuRW1wdHkoKSk7Ci0g
IGludGVydmFsLkV4dGVuZCgpOwotICBFWFBFQ1RfRkFMU0UoaW50ZXJ2YWwuRW1wdHkoKSk7Ci0g
IGludGVydmFsLkV4dGVuZCgyMDApOwotICBFWFBFQ1RfRkFMU0UoaW50ZXJ2YWwuRW1wdHkoKSk7
Ci19Ci0KLVRFU1QoVGltZUludGVydmFsVGVzdCwgTW9ub3RvbmVJbmNyZWFzaW5nKSB7Ci0gIGNv
bnN0IHNpemVfdCBwb2ludF9jb3VudCA9IDc7Ci0gIGNvbnN0IGludDY0X3QgaW50ZXJ2YWxfcG9p
bnRzW10gPSB7MywgMiwgNSwgMCwgNCwgMSwgNn07Ci0gIGNvbnN0IGludDY0X3QgaW50ZXJ2YWxf
ZGlmZmVyZW5jZXNbXSA9IHswLCAxLCAzLCA1LCA1LCA1LCA2fTsKLSAgVGltZUludGVydmFsIGlu
dGVydmFsOwotICBFWFBFQ1RfVFJVRShpbnRlcnZhbC5FbXB0eSgpKTsKLSAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwb2ludF9jb3VudDsgKytpKSB7Ci0gICAgaW50ZXJ2YWwuRXh0ZW5kKGludGVy
dmFsX3BvaW50c1tpXSk7Ci0gICAgRVhQRUNUX0VRKGludGVydmFsX2RpZmZlcmVuY2VzW2ldLCBp
bnRlcnZhbC5MZW5ndGgoKSk7Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
dHJhbnNwb3J0X2ZlZWRiYWNrX3BhY2tldF9sb3NzX3RyYWNrZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90cmFuc3BvcnRfZmVlZGJhY2tfcGFj
a2V0X2xvc3NfdHJhY2tlci5jYwppbmRleCBjN2FjZDc2NmM0NDg1OTI1YjRkYTdhOWMwMjgxMzdk
MzVkZWY5ZmNhLi5mNDE0MzliNDk0ZmNkMzhiM2EzYTE2NzViNjMzODZmYWZhYTRkZThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90
cmFuc3BvcnRfZmVlZGJhY2tfcGFja2V0X2xvc3NfdHJhY2tlci5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90cmFuc3BvcnRfZmVlZGJhY2tf
cGFja2V0X2xvc3NfdHJhY2tlci5jYwpAQCAtMTAsMTEgKzEwLDExIEBACiAKICNpbmNsdWRlICJh
dWRpby90cmFuc3BvcnRfZmVlZGJhY2tfcGFja2V0X2xvc3NfdHJhY2tlci5oIgogCisjaW5jbHVk
ZSA8aXRlcmF0b3I+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RyYW5zcG9ydF9mZWVk
YmFjay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L251bWVyaWNzL21vZF9vcHMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3V0aWxpdHkvQlVJTEQuZ24KaW5k
ZXggNzZjMDlhNTFhMzgwZTFjODQ2NTVhZmEwOTZlODRlMTAxNGY3YzdlYi4uMTFhNjViZGQ0NjM4
YWQ1YmZiZWY1NmJmOWU5MzQxZjJlY2ZmM2I4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9CVUlMRC5nbgorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby91dGlsaXR5L0JV
SUxELmduCkBAIC0yMSw3ICsyMSw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZnJhbWVf
b3BlcmF0aW9ucyIpIHsKICAgXQogCiAgIGRlcHMgPSBbCi0gICAgIi4uLy4uOndlYnJ0Y19jb21t
b24iLAogICAgICIuLi8uLi9hcGkvYXVkaW86YXVkaW9fZnJhbWVfYXBpIiwKICAgICAiLi4vLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVy
YXRpb25zLmNjCmluZGV4IGZiMWYzYjA3NzExYjc5ZGQ0YmMwNTliYzE5MjFkZjI4ZmVhMjZiZWQu
LjFhODIzMmIwMmIzYWU0YmVkOWIyZGNmMjFlOGMxMzYxZWIxY2Q4MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3V0aWxpdHkvYXVk
aW9fZnJhbWVfb3BlcmF0aW9ucy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuY2MKQEAg
LTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDxjc3RkaW50PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0
eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuaAppbmRl
eCA1OTkzNTIzNTZmNjJmMzkzNDZkZjg5ZTAyOTdjNmMyMTE1MmE2NzE5Li5jMTQ0NWI2OTEwOThl
Mzk5MzRhZmZkYWY5YTgzOWQxNDJlYWFkNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1lX29wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuaApAQCAtMTIsNiArMTIsNyBAQAog
I2RlZmluZSBBVURJT19VVElMSVRZX0FVRElPX0ZSQU1FX09QRVJBVElPTlNfSF8KIAogI2luY2x1
ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogCiAjaW5jbHVkZSAiYXBpL2F1ZGlv
L2F1ZGlvX2ZyYW1lLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2J1aWxkX292ZXJyaWRlcy9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9idWlsZF9vdmVycmlkZXMvT1dORVJTCmluZGV4IDUy
NGUyNjc2ZmY1MmJmZWYzODkzMDAzNmFiZmVmODViMjYwNzJiZjQuLjU0NjVlZDhlNmE4NjllMWU3
NDI0NzQwMjRkZjk5N2I0MGFjNTI1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2J1aWxkX292ZXJyaWRlcy9PV05FUlMKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYnVpbGRfb3ZlcnJpZGVzL09XTkVS
UwpAQCAtMSArMSwyIEBACittYm9uYWRlaUB3ZWJydGMub3JnCiBwaG9nbHVuZEB3ZWJydGMub3Jn
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9i
dWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaQppbmRleCA4MWNiM2U3M2FlMjMy
OWY5MmRlMjE5Nzg1NTJhODc3OGFiODJmMjE0Li42NjkwNDRkYjgxY2IyMTg1YmUzNzRiMGIxMDAy
NzA5M2M1NjgzYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkKQEAg
LTEyLDggKzEyLDggQEAgZW5hYmxlX2phdmFfdGVtcGxhdGVzID0gdHJ1ZQogIyBTb21lIG5vbi1D
aHJvbWl1bSBidWlsZHMgZG9uJ3QgdXNlIENocm9taXVtJ3MgdGhpcmRfcGFydHkvYmludXRpbHMu
CiBsaW51eF91c2VfYnVuZGxlZF9iaW51dGlsc19vdmVycmlkZSA9IHRydWUKIAotIyBWYXJpYWJs
ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIHN1cHBvcnQgbXVsdGlwbGUgYnVpbGQgc2NlbmFyaW9zLCBs
aWtlIGhhdmluZwotIyBDaHJvbWl1bSBzcGVjaWZpYyB0YXJnZXRzIGluIGEgY2xpZW50IHByb2pl
Y3QncyBHTiBmaWxlIGV0Yy4KKyMgRG9uJ3Qgc2V0IHRoaXMgdmFyaWFibGUgdG8gdHJ1ZSB3aGVu
IGJ1aWxkaW5nIHN0YWRhbG9uZSBXZWJSVEMsIGl0IGlzCisjIG9ubHkgbmVlZGVkIHRvIHN1cHBv
cnQgYm90aCBXZWJSVEMgc3RhbmRhbG9uZSBhbmQgQ2hyb21pdW0gYnVpbGRzLgogYnVpbGRfd2l0
aF9jaHJvbWl1bSA9IGZhbHNlCiAKICMgVXNlIG91ciBvd24gc3VwcHJlc3Npb25zIGZpbGVzLgpA
QCAtNDIsNyArNDIsNyBAQCBpZiAoaG9zdF9vcyA9PSAibWFjIikgewogICAgICAgICAgICAgICAg
ICAgICAgICAgWyB0YXJnZXRfb3MgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIp
CiAgIGFzc2VydChfcmVzdWx0ICE9IDIsCi0gICAgICAgICAiRG8gbm90IGFsbG93IGJ1aWxkaW5n
IHRhcmdldHMgd2l0aCB0aGUgZGVmYXVsdCIgKworICAgICAgICAgIkRvIG5vdCBhbGxvdyBidWls
ZGluZyB0YXJnZXRzIHdpdGggdGhlIGRlZmF1bHQgIiArCiAgICAgICAgICAgICAgImhlcm1ldGlj
IHRvb2xjaGFpbiBpZiB0aGUgbWluaW11bSBPUyB2ZXJzaW9uIGlzIG5vdCBtZXQuIikKICAgdXNl
X3N5c3RlbV94Y29kZSA9IF9yZXN1bHQgPT0gMAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvQlVJTEQuZ24KaW5kZXggNjExZDll
OGFkYjEzYzdiNTI5MTA4ZmM3Y2ZkMzE0YjA4NjE2YjBkZC4uZjZiYTRlYzg0OTA4MjlmNDRhZjM4
ZTI1NDU4ZDBiNjk4ODllYjAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL0JVSUxELmduCkBAIC0zOCwxMSArMzgsMTQgQEAg
cnRjX3NvdXJjZV9zZXQoImNhbGxfaW50ZXJmYWNlcyIpIHsKICAgICAiLi4vYXBpL2F1ZGlvX2Nv
ZGVjczphdWRpb19jb2RlY3NfYXBpIiwKICAgICAiLi4vYXBpL3RyYW5zcG9ydDpuZXR3b3JrX2Nv
bnRyb2wiLAogICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2UiLAorICAg
ICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAiLi4vbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICIuLi9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzIiwKICAgICAiLi4vcnRjX2Jhc2U6
YXVkaW9fZm9ybWF0X3RvX3N0cmluZyIsCisgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAg
Ii4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92
ZWQiLAorICAgICIuLi9ydGNfYmFzZS9uZXR3b3JrOnNlbnRfcGFja2V0IiwKICAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CkBAIC0xNjEs
NiArMTY0LDkgQEAgcnRjX3NvdXJjZV9zZXQoImJpdHJhdGVfYWxsb2NhdG9yIikgewogICAgICJi
aXRyYXRlX2FsbG9jYXRvci5oIiwKICAgXQogICBkZXBzID0gWworICAgICIuLi9hcGk6Yml0cmF0
ZV9hbGxvY2F0aW9uIiwKKyAgICAiLi4vYXBpL3VuaXRzOmRhdGFfcmF0ZSIsCisgICAgIi4uL2Fw
aS91bml0czp0aW1lX2RlbHRhIiwKICAgICAiLi4vbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIi
LAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9h
cHByb3ZlZCIsCkBAIC0xOTMsNyArMTk5LDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjYWxsIikg
ewogICAgICI6cnRwX3NlbmRlciIsCiAgICAgIjpzaW11bGF0ZWRfbmV0d29yayIsCiAgICAgIjp2
aWRlb19zdHJlYW1fYXBpIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uL2FwaTpj
YWxsZmFjdG9yeV9hcGkiLAogICAgICIuLi9hcGk6c2ltdWxhdGVkX25ldHdvcmtfYXBpIiwKICAg
ICAiLi4vYXBpOnRyYW5zcG9ydF9hcGkiLApAQCAtMjE3LDYgKzIyMiw3IEBAIHJ0Y19zdGF0aWNf
bGlicmFyeSgiY2FsbCIpIHsKICAgICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAogICAg
ICIuLi9ydGNfYmFzZTpzYWZlX21pbm1heCIsCiAgICAgIi4uL3J0Y19iYXNlOnNlcXVlbmNlZF90
YXNrX2NoZWNrZXIiLAorICAgICIuLi9ydGNfYmFzZS9leHBlcmltZW50czpmaWVsZF90cmlhbF9w
YXJzZXIiLAogICAgICIuLi9ydGNfYmFzZS9zeW5jaHJvbml6YXRpb246cndfbG9ja193cmFwcGVy
IiwKICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmZp
ZWxkX3RyaWFsIiwKQEAgLTIzNiw3ICsyNDIsNiBAQCBydGNfc291cmNlX3NldCgidmlkZW9fc3Ry
ZWFtX2FwaSIpIHsKICAgXQogICBkZXBzID0gWwogICAgICI6cnRwX2ludGVyZmFjZXMiLAotICAg
ICIuLi86d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rp
b25fYXBpIiwKICAgICAiLi4vYXBpOnRyYW5zcG9ydF9hcGkiLAogICAgICIuLi9hcGkvdmlkZW86
dmlkZW9fZnJhbWUiLApAQCAtMjU3LDYgKzI2Miw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJzaW11bGF0
ZWRfbmV0d29yayIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLi9hcGk6c2ltdWxhdGVkX25l
dHdvcmtfYXBpIiwKKyAgICAiLi4vYXBpL3VuaXRzOmRhdGFfcmF0ZSIsCisgICAgIi4uL2FwaS91
bml0czpkYXRhX3NpemUiLAorICAgICIuLi9hcGkvdW5pdHM6dGltZV9kZWx0YSIsCiAgICAgIi4u
L3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXM6b3B0aW9uYWwiLApAQCAtMjgzLDEwICsyOTEsMTAgQEAgcnRjX3NvdXJjZV9zZXQoImZha2Vf
bmV0d29yayIpIHsKICAgICAiOmNhbGxfaW50ZXJmYWNlcyIsCiAgICAgIjpzaW11bGF0ZWRfbmV0
d29yayIsCiAgICAgIjpzaW11bGF0ZWRfcGFja2V0X3JlY2VpdmVyIiwKLSAgICAiLi46d2VicnRj
X2NvbW1vbiIsCiAgICAgIi4uL2FwaTpzaW11bGF0ZWRfbmV0d29ya19hcGkiLAogICAgICIuLi9h
cGk6dHJhbnNwb3J0X2FwaSIsCiAgICAgIi4uL21vZHVsZXM6bW9kdWxlX2FwaSIsCisgICAgIi4u
L21vZHVsZXMvdXRpbGl0eSIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwK
ICAgICAiLi4vcnRjX2Jhc2U6c2VxdWVuY2VkX3Rhc2tfY2hlY2tlciIsCiAgICAgIi4uL3N5c3Rl
bV93cmFwcGVycyIsCkBAIC0zMjIsOCArMzMwLDkgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7
CiAgICAgICAiOnJ0cF9yZWNlaXZlciIsCiAgICAgICAiOnJ0cF9zZW5kZXIiLAogICAgICAgIjpz
aW11bGF0ZWRfbmV0d29yayIsCi0gICAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4v
YXBpOmFycmF5X3ZpZXciLAorICAgICAgIi4uL2FwaTpmYWtlX21lZGlhX3RyYW5zcG9ydCIsCisg
ICAgICAiLi4vYXBpOmZha2VfbWVkaWFfdHJhbnNwb3J0IiwKICAgICAgICIuLi9hcGk6bGliamlu
Z2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgICAiLi4vYXBpOm1vY2tfYXVkaW9fbWl4ZXIi
LAogICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3Rv
cnkiLApAQCAtMzU5LDYgKzM2OCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAg
Ii8vdGVzdGluZy9nbW9jayIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgICBdCiAgICAgaWYgKCFidWlsZF93
aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CiAgICAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZy
b20gdGhlIENocm9taXVtIENsYW5nIHBsdWdpbiAoYnVncy53ZWJydGMub3JnLzE2MykuCkBAIC0z
NzgsMTIgKzM4OCwxMyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6Y2FsbF9p
bnRlcmZhY2VzIiwKICAgICAgICI6c2ltdWxhdGVkX25ldHdvcmsiLAogICAgICAgIjp2aWRlb19z
dHJlYW1fYXBpIiwKLSAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi9hcGk6c2lt
dWxhdGVkX25ldHdvcmtfYXBpIiwKICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5f
YXVkaW9fZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAgICIuLi9hcGkvdmlkZW86YnVpbHRpbl92aWRl
b19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9f
Yml0cmF0ZV9hbGxvY2F0aW9uIiwKICAgICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2Nv
ZGVjc19hcGkiLAogICAgICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAorICAgICAg
Ii4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19pbXBsX291dHB1dCIsCiAgICAgICAiLi4vbW9kdWxl
cy9hdWRpb19jb2RpbmciLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlIiwKICAgICAg
ICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfaW1wbCIsCkBAIC00MjYsNiAr
NDM3LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vbW9kdWxlcy9wYWNp
bmciLAogICAgICAgIi4uL3J0Y19iYXNlOnJhdGVfbGltaXRlciIsCiAgICAgICAiLi4vcnRjX2Jh
c2U6cnRjX2Jhc2UiLAorICAgICAgIi4uL3J0Y19iYXNlL25ldHdvcms6c2VudF9wYWNrZXQiLAog
ICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICBdCiAgIH0KQEAgLTQzNyw3ICs0NDks
NyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBdCiAgICAgZGVwcyA9IFsKICAgICAg
ICI6Yml0cmF0ZV9hbGxvY2F0b3IiLAotICAgICAgIi8vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAg
ICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICBdCiAgIH0KICAgcnRjX3NvdXJjZV9zZXQo
Im1vY2tfY2FsbF9pbnRlcmZhY2VzIikgewpAQCAtNDQ4LDExICs0NjAsMTQgQEAgaWYgKHJ0Y19p
bmNsdWRlX3Rlc3RzKSB7CiAgICAgXQogICAgIGRlcHMgPSBbCiAgICAgICAiOmNhbGxfaW50ZXJm
YWNlcyIsCi0gICAgICAiLy90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgICAiLi4vdGVzdDp0ZXN0
X3N1cHBvcnQiLAogICAgIF0KICAgfQogCiAgIHJ0Y190ZXN0KCJmYWtlX25ldHdvcmtfdW5pdHRl
c3RzIikgeworICAgIHNvdXJjZXMgPSBbCisgICAgICAidGVzdC9mYWtlX25ldHdvcmtfcGlwZV91
bml0dGVzdC5jYyIsCisgICAgXQogICAgIGRlcHMgPSBbCiAgICAgICAiOmNhbGxfaW50ZXJmYWNl
cyIsCiAgICAgICAiOmZha2VfbmV0d29yayIsCkBAIC00NjIsMTAgKzQ3Nyw4IEBAIGlmIChydGNf
aW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAgICAiLi4v
dGVzdDp0ZXN0X2NvbW1vbiIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4u
L3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgIF0KLSAg
ICBzb3VyY2VzID0gWwotICAgICAgInRlc3QvZmFrZV9uZXR3b3JrX3BpcGVfdW5pdHRlc3QuY2Mi
LAotICAgIF0KICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9hdWRpb19yZWNlaXZlX3N0cmVhbS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRpb19yZWNlaXZlX3N0cmVhbS5o
CmluZGV4IDljODkwYjFjZGEzNzU4NTMxNDFmODRiYjZkZDE0YTc5OWFhYmIxZjYuLjM2Y2MwNTkz
OTY3NGJlZjFiMTI1YjUxYTRkMzExZWZiZTI4NDQzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYXVkaW9fcmVjZWl2ZV9zdHJlYW0u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2F1
ZGlvX3JlY2VpdmVfc3RyZWFtLmgKQEAgLTE5LDEwICsxOSwxMSBAQAogI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29k
ZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgorI2luY2x1ZGUg
ImFwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3Bv
cnRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJhcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcu
aCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQog
I2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpAQCAtNjIsNiArNjMsNyBAQCBjbGFzcyBBdWRpb1JlY2VpdmVTdHJlYW0gewogICAgIGZsb2F0
IHNlY29uZGFyeV9kaXNjYXJkZWRfcmF0ZSA9IDAuMGY7CiAgICAgZmxvYXQgYWNjZWxlcmF0ZV9y
YXRlID0gMC4wZjsKICAgICBmbG9hdCBwcmVlbXB0aXZlX2V4cGFuZF9yYXRlID0gMC4wZjsKKyAg
ICB1aW50NjRfdCBkZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlcyA9IDA7CiAgICAgaW50MzJf
dCBkZWNvZGluZ19jYWxsc190b19zaWxlbmNlX2dlbmVyYXRvciA9IDA7CiAgICAgaW50MzJfdCBk
ZWNvZGluZ19jYWxsc190b19uZXRlcSA9IDA7CiAgICAgaW50MzJfdCBkZWNvZGluZ19ub3JtYWwg
PSAwOwpAQCAtNzAsNiArNzIsNyBAQCBjbGFzcyBBdWRpb1JlY2VpdmVTdHJlYW0gewogICAgIGlu
dDMyX3QgZGVjb2RpbmdfcGxjX2NuZyA9IDA7CiAgICAgaW50MzJfdCBkZWNvZGluZ19tdXRlZF9v
dXRwdXQgPSAwOwogICAgIGludDY0X3QgY2FwdHVyZV9zdGFydF9udHBfdGltZV9tcyA9IDA7Cisg
ICAgdWludDY0X3Qgaml0dGVyX2J1ZmZlcl9mbHVzaGVzID0gMDsKICAgfTsKIAogICBzdHJ1Y3Qg
Q29uZmlnIHsKQEAgLTEwNiw5ICsxMDksMTIgQEAgY2xhc3MgQXVkaW9SZWNlaXZlU3RyZWFtIHsK
IAogICAgIFRyYW5zcG9ydCogcnRjcF9zZW5kX3RyYW5zcG9ydCA9IG51bGxwdHI7CiAKKyAgICBN
ZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0ID0gbnVsbHB0cjsKKwogICAg
IC8vIE5ldEVxIHNldHRpbmdzLgogICAgIHNpemVfdCBqaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRz
ID0gNTA7CiAgICAgYm9vbCBqaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSA9IGZhbHNlOwor
ICAgIGludCBqaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcyA9IDA7CiAKICAgICAvLyBJZGVudGlm
aWVyIGZvciBhbiBBL1Ygc3luY2hyb25pemF0aW9uIGdyb3VwLiBFbXB0eSBzdHJpbmcgdG8gZGlz
YWJsZS4KICAgICAvLyBUT0RPKHBib3MpOiBTeW5jaHJvbml6ZSBzdHJlYW1zIGluIGEgc3luYyBn
cm91cCwgbm90IGp1c3Qgb25lIHZpZGVvCkBAIC0xMjIsNiArMTI4LDkgQEAgY2xhc3MgQXVkaW9S
ZWNlaXZlU3RyZWFtIHsKIAogICAgIGFic2w6Om9wdGlvbmFsPEF1ZGlvQ29kZWNQYWlySWQ+IGNv
ZGVjX3BhaXJfaWQ7CiAKKyAgICAvLyBQZXIgUGVlckNvbm5lY3Rpb24gY3J5cHRvIG9wdGlvbnMu
CisgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zOworCiAgICAgLy8gQW4g
b3B0aW9uYWwgY3VzdG9tIGZyYW1lIGRlY3J5cHRvciB0aGF0IGFsbG93cyB0aGUgZW50aXJlIGZy
YW1lIHRvIGJlCiAgICAgLy8gZGVjcnlwdGVkIGluIHdoYXRldmVyIHdheSB0aGUgY2FsbGVyIGNo
b3Nlcy4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkKICAgICAvLyBkZWZhdWx0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRpb19z
ZW5kX3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvYXVkaW9fc2VuZF9zdHJlYW0uY2MKaW5kZXggZTJjZjIwY2Y4NDQ4MGU2ZjQ3ZWM3ZDMz
NDcwMjA1YzMwYjQ1NjUyYy4uMzAzYjQ5Y2JmYjMxOTY2NzIxODc4NWQ4MjQwNjdiNzdhYThlOTU3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9hdWRpb19zZW5kX3N0cmVhbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jYWxsL2F1ZGlvX3NlbmRfc3RyZWFtLmNjCkBAIC05LDYgKzksOSBA
QAogICovCiAKICNpbmNsdWRlICJjYWxsL2F1ZGlvX3NlbmRfc3RyZWFtLmgiCisKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3N0cmluZ3MvYXVkaW9fZm9ybWF0X3RvX3N0cmluZy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKQEAgLTE4LDggKzIxLDEyIEBAIG5h
bWVzcGFjZSB3ZWJydGMgewogQXVkaW9TZW5kU3RyZWFtOjpTdGF0czo6U3RhdHMoKSA9IGRlZmF1
bHQ7CiBBdWRpb1NlbmRTdHJlYW06OlN0YXRzOjp+U3RhdHMoKSA9IGRlZmF1bHQ7CiAKK0F1ZGlv
U2VuZFN0cmVhbTo6Q29uZmlnOjpDb25maWcoVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1l
ZGlhX3RyYW5zcG9ydCkKKyAgICA6IHNlbmRfdHJhbnNwb3J0KHNlbmRfdHJhbnNwb3J0KSwgbWVk
aWFfdHJhbnNwb3J0KG1lZGlhX3RyYW5zcG9ydCkge30KKwogQXVkaW9TZW5kU3RyZWFtOjpDb25m
aWc6OkNvbmZpZyhUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0KQotICAgIDogc2VuZF90cmFuc3Bv
cnQoc2VuZF90cmFuc3BvcnQpIHt9CisgICAgOiBDb25maWcoc2VuZF90cmFuc3BvcnQsIG51bGxw
dHIpIHt9CiAKIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjp+Q29uZmlnKCkgPSBkZWZhdWx0Owog
CkBAIC0yNyw3ICszNCw5IEBAIHN0ZDo6c3RyaW5nIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjpU
b1N0cmluZygpIGNvbnN0IHsKICAgY2hhciBidWZbMTAyNF07CiAgIHJ0Yzo6U2ltcGxlU3RyaW5n
QnVpbGRlciBzcyhidWYpOwogICBzcyA8PCAie3J0cDogIiA8PCBydHAuVG9TdHJpbmcoKTsKKyAg
c3MgPDwgIiwgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM6ICIgPDwgcnRjcF9yZXBvcnRfaW50ZXJ2
YWxfbXM7CiAgIHNzIDw8ICIsIHNlbmRfdHJhbnNwb3J0OiAiIDw8IChzZW5kX3RyYW5zcG9ydCA/
ICIoVHJhbnNwb3J0KSIgOiAibnVsbCIpOworICBzcyA8PCAiLCBtZWRpYV90cmFuc3BvcnQ6ICIg
PDwgKG1lZGlhX3RyYW5zcG9ydCA/ICIoVHJhbnNwb3J0KSIgOiAibnVsbCIpOwogICBzcyA8PCAi
LCBtaW5fYml0cmF0ZV9icHM6ICIgPDwgbWluX2JpdHJhdGVfYnBzOwogICBzcyA8PCAiLCBtYXhf
Yml0cmF0ZV9icHM6ICIgPDwgbWF4X2JpdHJhdGVfYnBzOwogICBzcyA8PCAiLCBzZW5kX2NvZGVj
X3NwZWM6ICIKQEAgLTQ0LDYgKzUzLDcgQEAgc3RkOjpzdHJpbmcgQXVkaW9TZW5kU3RyZWFtOjpD
b25maWc6OlJ0cDo6VG9TdHJpbmcoKSBjb25zdCB7CiAgIGNoYXIgYnVmWzEwMjRdOwogICBydGM6
OlNpbXBsZVN0cmluZ0J1aWxkZXIgc3MoYnVmKTsKICAgc3MgPDwgIntzc3JjOiAiIDw8IHNzcmM7
CisgIHNzIDw8ICIsIGV4dG1hcC1hbGxvdy1taXhlZDogIiA8PCAoZXh0bWFwX2FsbG93X21peGVk
ID8gInRydWUiIDogImZhbHNlIik7CiAgIHNzIDw8ICIsIGV4dGVuc2lvbnM6IFsiOwogICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyArK2kpIHsKICAgICBzcyA8PCBl
eHRlbnNpb25zW2ldLlRvU3RyaW5nKCk7CkBAIC01Miw3ICs2Miw2IEBAIHN0ZDo6c3RyaW5nIEF1
ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjpSdHA6OlRvU3RyaW5nKCkgY29uc3QgewogICAgIH0KICAg
fQogICBzcyA8PCAnXSc7Ci0gIHNzIDw8ICIsIG5hY2s6ICIgPDwgbmFjay5Ub1N0cmluZygpOwog
ICBzcyA8PCAiLCBjX25hbWU6ICIgPDwgY19uYW1lOwogICBzcyA8PCAnfSc7CiAgIHJldHVybiBz
cy5zdHIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvYXVkaW9fc2VuZF9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYXVkaW9fc2VuZF9zdHJlYW0uaAppbmRleCA2MWUyNTMx
MjIyOWU5MDAxNWFlNDc2ZmFlYzI4ZmZlM2EzNjFlZDBhLi5jOTk2ZGFiODNkNzAwMDU1MDUyMjll
MjQ0YWY0OTNlN2U4ZDJmODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jYWxsL2F1ZGlvX3NlbmRfc3RyZWFtLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRpb19zZW5kX3N0cmVhbS5o
CkBAIC0yMSw3ICsyMSw5IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNv
ZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5o
IgogI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8v
Y3J5cHRvb3B0aW9ucy5oIgogI2luY2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVlbmNyeXB0b3JpbnRl
cmZhY2UuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfY29uZmlnLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vz
c2luZ19zdGF0aXN0aWNzLmgiCkBAIC01NywxMCArNTksMTMgQEAgY2xhc3MgQXVkaW9TZW5kU3Ry
ZWFtIHsKIAogICAgIEFOQVN0YXRzIGFuYV9zdGF0aXN0aWNzOwogICAgIEF1ZGlvUHJvY2Vzc2lu
Z1N0YXRzIGFwbV9zdGF0aXN0aWNzOworCisgICAgaW50NjRfdCB0YXJnZXRfYml0cmF0ZV9icHMg
PSAwOwogICB9OwogCiAgIHN0cnVjdCBDb25maWcgewogICAgIENvbmZpZygpID0gZGVsZXRlOwor
ICAgIENvbmZpZyhUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LCBNZWRpYVRyYW5zcG9ydEludGVy
ZmFjZSogbWVkaWFfdHJhbnNwb3J0KTsKICAgICBleHBsaWNpdCBDb25maWcoVHJhbnNwb3J0KiBz
ZW5kX3RyYW5zcG9ydCk7CiAgICAgfkNvbmZpZygpOwogICAgIHN0ZDo6c3RyaW5nIFRvU3RyaW5n
KCkgY29uc3Q7CkBAIC03OCwyMCArODMsMjUgQEAgY2xhc3MgQXVkaW9TZW5kU3RyZWFtIHsKICAg
ICAgIC8vIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIGV4dGVuc2lvbnMuCiAgICAgICBzdGQ6OnN0
cmluZyBtaWQ7CiAKKyAgICAgIC8vIENvcnJlc3BvbmRzIHRvIHRoZSBTRFAgYXR0cmlidXRlIGV4
dG1hcC1hbGxvdy1taXhlZC4KKyAgICAgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkID0gZmFsc2U7
CisKICAgICAgIC8vIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyB1c2VkIGZvciB0aGUgc2VudCBzdHJl
YW0uCiAgICAgICBzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+IGV4dGVuc2lvbnM7CiAKLSAgICAg
IC8vIFNlZSBOYWNrQ29uZmlnIGZvciBkZXNjcmlwdGlvbi4KLSAgICAgIE5hY2tDb25maWcgbmFj
azsKLQogICAgICAgLy8gUlRDUCBDTkFNRSwgc2VlIFJGQyAzNTUwLgogICAgICAgc3RkOjpzdHJp
bmcgY19uYW1lOwogICAgIH0gcnRwOwogCisgICAgLy8gVGltZSBpbnRlcnZhbCBiZXR3ZWVuIFJU
Q1AgcmVwb3J0IGZvciBhdWRpbworICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IDUw
MDA7CisKICAgICAvLyBUcmFuc3BvcnQgZm9yIG91dGdvaW5nIHBhY2tldHMuIFRoZSB0cmFuc3Bv
cnQgaXMgZXhwZWN0ZWQgdG8gZXhpc3QgZm9yCiAgICAgLy8gdGhlIGVudGlyZSBsaWZlIG9mIHRo
ZSBBdWRpb1NlbmRTdHJlYW0gYW5kIGlzIG93bmVkIGJ5IHRoZSBBUEkgY2xpZW50LgogICAgIFRy
YW5zcG9ydCogc2VuZF90cmFuc3BvcnQgPSBudWxscHRyOwogCisgICAgTWVkaWFUcmFuc3BvcnRJ
bnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCA9IG51bGxwdHI7CisKICAgICAvLyBCaXRyYXRlIGxp
bWl0cyB1c2VkIGZvciB2YXJpYWJsZSBhdWRpbyBiaXRyYXRlIHN0cmVhbXMuIFNldCBib3RoIHRv
IC0xIHRvCiAgICAgLy8gZGlzYWJsZSBhdWRpbyBiaXRyYXRlIGFkYXB0YXRpb24uCiAgICAgLy8g
Tm90ZTogVGhpcyBpcyBzdGlsbCBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBhbmQgbm90IHJlYWR5
IGZvciByZWFsIHVzYWdlLgpAQCAtOTksNiArMTA5LDcgQEAgY2xhc3MgQXVkaW9TZW5kU3RyZWFt
IHsKICAgICBpbnQgbWF4X2JpdHJhdGVfYnBzID0gLTE7CiAKICAgICBkb3VibGUgYml0cmF0ZV9w
cmlvcml0eSA9IDEuMDsKKyAgICBib29sIGhhc19kc2NwID0gZmFsc2U7CiAKICAgICAvLyBEZWZp
bmVzIHdoZXRoZXIgdG8gdHVybiBvbiBhdWRpbyBuZXR3b3JrIGFkYXB0b3IsIGFuZCBkZWZpbmVz
IGl0cyBjb25maWcKICAgICAvLyBzdHJpbmcuCkBAIC0xMzAsNiArMTQxLDkgQEAgY2xhc3MgQXVk
aW9TZW5kU3RyZWFtIHsKICAgICAvLyBUcmFjayBJRCBhcyBzcGVjaWZpZWQgZHVyaW5nIHRyYWNr
IGNyZWF0aW9uLgogICAgIHN0ZDo6c3RyaW5nIHRyYWNrX2lkOwogCisgICAgLy8gUGVyIFBlZXJD
b25uZWN0aW9uIGNyeXB0byBvcHRpb25zLgorICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlw
dG9fb3B0aW9uczsKKwogICAgIC8vIEFuIG9wdGlvbmFsIGN1c3RvbSBmcmFtZSBlbmNyeXB0b3Ig
dGhhdCBhbGxvd3MgdGhlIGVudGlyZSBmcmFtZSB0byBiZQogICAgIC8vIGVuY3J5cHRvciBpbiB3
aGF0ZXZlciB3YXkgdGhlIGNhbGxlciBjaG9zZXMuIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5CiAg
ICAgLy8gZGVmYXVsdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NhbGwvYml0cmF0ZV9hbGxvY2F0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfYWxsb2NhdG9yLmNjCmluZGV4
IGFjYjE5YWU2ZmIyYmZmMGJjZGEwMjVmMzhlOTU2NzBmY2FmMGUyOGEuLjY2MDk4MWMzMGUzOTll
ZGViMDY5YTE1MTY0MGM2ZDM1Nzg4ZWRiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYml0cmF0ZV9hbGxvY2F0b3IuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2Fs
bG9jYXRvci5jYwpAQCAtMTYsNiArMTYsOCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBpL3VuaXRzL2RhdGFfcmF0ZS5oIgorI2luY2x1ZGUg
ImFwaS91bml0cy90aW1lX2RlbHRhLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9iaXRyYXRlX2NvbnRy
b2xsZXIvaW5jbHVkZS9iaXRyYXRlX2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCkBAIC01MCwxMCArNTIsMTIg
QEAgZG91YmxlIE1lZGlhUmF0aW8odWludDMyX3QgYWxsb2NhdGVkX2JpdHJhdGUsIHVpbnQzMl90
IHByb3RlY3Rpb25fYml0cmF0ZSkgewogCiBCaXRyYXRlQWxsb2NhdG9yOjpCaXRyYXRlQWxsb2Nh
dG9yKExpbWl0T2JzZXJ2ZXIqIGxpbWl0X29ic2VydmVyKQogICAgIDogbGltaXRfb2JzZXJ2ZXJf
KGxpbWl0X29ic2VydmVyKSwKLSAgICAgIGxhc3RfYml0cmF0ZV9icHNfKDApLAorICAgICAgbGFz
dF90YXJnZXRfYnBzXygwKSwKKyAgICAgIGxhc3RfbGlua19jYXBhY2l0eV9icHNfKDApLAogICAg
ICAgbGFzdF9ub25femVyb19iaXRyYXRlX2Jwc18oa0RlZmF1bHRCaXRyYXRlQnBzKSwKICAgICAg
IGxhc3RfZnJhY3Rpb25fbG9zc18oMCksCiAgICAgICBsYXN0X3J0dF8oMCksCisgICAgICBsYXN0
X2J3ZV9wZXJpb2RfbXNfKDEwMDApLAogICAgICAgbnVtX3BhdXNlX2V2ZW50c18oMCksCiAgICAg
ICBjbG9ja18oQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSksCiAgICAgICBsYXN0X2J3ZV9sb2df
dGltZV8oMCksCkBAIC04OCwxMSArOTIsMTMgQEAgdWludDhfdCBCaXRyYXRlQWxsb2NhdG9yOjpH
ZXRUcmFuc21pc3Npb25NYXhCaXRyYXRlTXVsdGlwbGllcigpIHsKIH0KIAogdm9pZCBCaXRyYXRl
QWxsb2NhdG9yOjpPbk5ldHdvcmtDaGFuZ2VkKHVpbnQzMl90IHRhcmdldF9iaXRyYXRlX2JwcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsaW5rX2Nh
cGFjaXR5X2JwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90IGZyYWN0aW9uX2xvc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBydHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50NjRfdCBid2VfcGVyaW9kX21zKSB7CiAgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxM
WSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKLSAgbGFzdF9iaXRyYXRlX2Jwc18gPSB0YXJnZXRfYml0
cmF0ZV9icHM7CisgIGxhc3RfdGFyZ2V0X2Jwc18gPSB0YXJnZXRfYml0cmF0ZV9icHM7CisgIGxh
c3RfbGlua19jYXBhY2l0eV9icHNfID0gbGlua19jYXBhY2l0eV9icHM7CiAgIGxhc3Rfbm9uX3pl
cm9fYml0cmF0ZV9icHNfID0KICAgICAgIHRhcmdldF9iaXRyYXRlX2JwcyA+IDAgPyB0YXJnZXRf
Yml0cmF0ZV9icHMgOiBsYXN0X25vbl96ZXJvX2JpdHJhdGVfYnBzXzsKICAgbGFzdF9mcmFjdGlv
bl9sb3NzXyA9IGZyYWN0aW9uX2xvc3M7CkBAIC0xMDcsMTEgKzExMywxOCBAQCB2b2lkIEJpdHJh
dGVBbGxvY2F0b3I6Ok9uTmV0d29ya0NoYW5nZWQodWludDMyX3QgdGFyZ2V0X2JpdHJhdGVfYnBz
LAogICB9CiAKICAgT2JzZXJ2ZXJBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSBBbGxvY2F0ZUJpdHJh
dGVzKHRhcmdldF9iaXRyYXRlX2Jwcyk7CisgIE9ic2VydmVyQWxsb2NhdGlvbiBiYW5kd2lkdGhf
YWxsb2NhdGlvbiA9IEFsbG9jYXRlQml0cmF0ZXMobGlua19jYXBhY2l0eV9icHMpOwogCiAgIGZv
ciAoYXV0byYgY29uZmlnIDogYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXykgewogICAgIHVpbnQz
Ml90IGFsbG9jYXRlZF9iaXRyYXRlID0gYWxsb2NhdGlvbltjb25maWcub2JzZXJ2ZXJdOwotICAg
IHVpbnQzMl90IHByb3RlY3Rpb25fYml0cmF0ZSA9IGNvbmZpZy5vYnNlcnZlci0+T25CaXRyYXRl
VXBkYXRlZCgKLSAgICAgICAgYWxsb2NhdGVkX2JpdHJhdGUsIGxhc3RfZnJhY3Rpb25fbG9zc18s
IGxhc3RfcnR0XywgbGFzdF9id2VfcGVyaW9kX21zXyk7CisgICAgdWludDMyX3QgYWxsb2NhdGVk
X2JhbmR3aWR0aCA9IGJhbmR3aWR0aF9hbGxvY2F0aW9uW2NvbmZpZy5vYnNlcnZlcl07CisgICAg
Qml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlOworICAgIHVwZGF0ZS50YXJnZXRfYml0cmF0
ZSA9IERhdGFSYXRlOjpicHMoYWxsb2NhdGVkX2JpdHJhdGUpOworICAgIHVwZGF0ZS5saW5rX2Nh
cGFjaXR5ID0gRGF0YVJhdGU6OmJwcyhhbGxvY2F0ZWRfYmFuZHdpZHRoKTsKKyAgICB1cGRhdGUu
cGFja2V0X2xvc3NfcmF0aW8gPSBsYXN0X2ZyYWN0aW9uX2xvc3NfIC8gMjU2LjA7CisgICAgdXBk
YXRlLnJvdW5kX3RyaXBfdGltZSA9IFRpbWVEZWx0YTo6bXMobGFzdF9ydHRfKTsKKyAgICB1cGRh
dGUuYndlX3BlcmlvZCA9IFRpbWVEZWx0YTo6bXMobGFzdF9id2VfcGVyaW9kX21zXyk7CisgICAg
dWludDMyX3QgcHJvdGVjdGlvbl9iaXRyYXRlID0gY29uZmlnLm9ic2VydmVyLT5PbkJpdHJhdGVV
cGRhdGVkKHVwZGF0ZSk7CiAKICAgICBpZiAoYWxsb2NhdGVkX2JpdHJhdGUgPT0gMCAmJiBjb25m
aWcuYWxsb2NhdGVkX2JpdHJhdGVfYnBzID4gMCkgewogICAgICAgaWYgKHRhcmdldF9iaXRyYXRl
X2JwcyA+IDApCkBAIC0xNjMsMTUgKzE3NiwyMiBAQCB2b2lkIEJpdHJhdGVBbGxvY2F0b3I6OkFk
ZE9ic2VydmVyKEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2JzZXJ2ZXIsCiAgICAgICAgIGNv
bmZpZy5iaXRyYXRlX3ByaW9yaXR5LCBjb25maWcuaGFzX3BhY2tldF9mZWVkYmFjaykpOwogICB9
CiAKLSAgT2JzZXJ2ZXJBbGxvY2F0aW9uIGFsbG9jYXRpb247Ci0gIGlmIChsYXN0X2JpdHJhdGVf
YnBzXyA+IDApIHsKKyAgaWYgKGxhc3RfdGFyZ2V0X2Jwc18gPiAwKSB7CiAgICAgLy8gQ2FsY3Vs
YXRlIGEgbmV3IGFsbG9jYXRpb24gYW5kIHVwZGF0ZSBhbGwgb2JzZXJ2ZXJzLgotICAgIGFsbG9j
YXRpb24gPSBBbGxvY2F0ZUJpdHJhdGVzKGxhc3RfYml0cmF0ZV9icHNfKTsKKworICAgIE9ic2Vy
dmVyQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0gQWxsb2NhdGVCaXRyYXRlcyhsYXN0X3RhcmdldF9i
cHNfKTsKKyAgICBPYnNlcnZlckFsbG9jYXRpb24gYmFuZHdpZHRoX2FsbG9jYXRpb24gPQorICAg
ICAgICBBbGxvY2F0ZUJpdHJhdGVzKGxhc3RfbGlua19jYXBhY2l0eV9icHNfKTsKICAgICBmb3Ig
KGF1dG8mIGNvbmZpZyA6IGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18pIHsKICAgICAgIHVpbnQz
Ml90IGFsbG9jYXRlZF9iaXRyYXRlID0gYWxsb2NhdGlvbltjb25maWcub2JzZXJ2ZXJdOwotICAg
ICAgdWludDMyX3QgcHJvdGVjdGlvbl9iaXRyYXRlID0gY29uZmlnLm9ic2VydmVyLT5PbkJpdHJh
dGVVcGRhdGVkKAotICAgICAgICAgIGFsbG9jYXRlZF9iaXRyYXRlLCBsYXN0X2ZyYWN0aW9uX2xv
c3NfLCBsYXN0X3J0dF8sCi0gICAgICAgICAgbGFzdF9id2VfcGVyaW9kX21zXyk7CisgICAgICB1
aW50MzJfdCBiYW5kd2lkdGggPSBiYW5kd2lkdGhfYWxsb2NhdGlvbltjb25maWcub2JzZXJ2ZXJd
OworICAgICAgQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlOworICAgICAgdXBkYXRlLnRh
cmdldF9iaXRyYXRlID0gRGF0YVJhdGU6OmJwcyhhbGxvY2F0ZWRfYml0cmF0ZSk7CisgICAgICB1
cGRhdGUubGlua19jYXBhY2l0eSA9IERhdGFSYXRlOjpicHMoYmFuZHdpZHRoKTsKKyAgICAgIHVw
ZGF0ZS5wYWNrZXRfbG9zc19yYXRpbyA9IGxhc3RfZnJhY3Rpb25fbG9zc18gLyAyNTYuMDsKKyAg
ICAgIHVwZGF0ZS5yb3VuZF90cmlwX3RpbWUgPSBUaW1lRGVsdGE6Om1zKGxhc3RfcnR0Xyk7Cisg
ICAgICB1cGRhdGUuYndlX3BlcmlvZCA9IFRpbWVEZWx0YTo6bXMobGFzdF9id2VfcGVyaW9kX21z
Xyk7CisgICAgICB1aW50MzJfdCBwcm90ZWN0aW9uX2JpdHJhdGUgPSBjb25maWcub2JzZXJ2ZXIt
Pk9uQml0cmF0ZVVwZGF0ZWQodXBkYXRlKTsKICAgICAgIGNvbmZpZy5hbGxvY2F0ZWRfYml0cmF0
ZV9icHMgPSBhbGxvY2F0ZWRfYml0cmF0ZTsKICAgICAgIGlmIChhbGxvY2F0ZWRfYml0cmF0ZSA+
IDApCiAgICAgICAgIGNvbmZpZy5tZWRpYV9yYXRpbyA9IE1lZGlhUmF0aW8oYWxsb2NhdGVkX2Jp
dHJhdGUsIHByb3RlY3Rpb25fYml0cmF0ZSk7CkBAIC0xODAsOSArMjAwLDE0IEBAIHZvaWQgQml0
cmF0ZUFsbG9jYXRvcjo6QWRkT2JzZXJ2ZXIoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNl
cnZlciwKICAgICAvLyBDdXJyZW50bHksIGFuIGVuY29kZXIgaXMgbm90IGFsbG93ZWQgdG8gcHJv
ZHVjZSBmcmFtZXMuCiAgICAgLy8gQnV0IHdlIHN0aWxsIGhhdmUgdG8gcmV0dXJuIHRoZSBpbml0
aWFsIGNvbmZpZyBiaXRyYXRlICsgbGV0IHRoZQogICAgIC8vIG9ic2VydmVyIGtub3cgdGhhdCBp
dCBjYW4gbm90IHByb2R1Y2UgZnJhbWVzLgotICAgIGFsbG9jYXRpb24gPSBBbGxvY2F0ZUJpdHJh
dGVzKGxhc3Rfbm9uX3plcm9fYml0cmF0ZV9icHNfKTsKLSAgICBvYnNlcnZlci0+T25CaXRyYXRl
VXBkYXRlZCgwLCBsYXN0X2ZyYWN0aW9uX2xvc3NfLCBsYXN0X3J0dF8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGFzdF9id2VfcGVyaW9kX21zXyk7CisKKyAgICBCaXRyYXRlQWxs
b2NhdGlvblVwZGF0ZSB1cGRhdGU7CisgICAgdXBkYXRlLnRhcmdldF9iaXRyYXRlID0gRGF0YVJh
dGU6Olplcm8oKTsKKyAgICB1cGRhdGUubGlua19jYXBhY2l0eSA9IERhdGFSYXRlOjpaZXJvKCk7
CisgICAgdXBkYXRlLnBhY2tldF9sb3NzX3JhdGlvID0gbGFzdF9mcmFjdGlvbl9sb3NzXyAvIDI1
Ni4wOworICAgIHVwZGF0ZS5yb3VuZF90cmlwX3RpbWUgPSBUaW1lRGVsdGE6Om1zKGxhc3RfcnR0
Xyk7CisgICAgdXBkYXRlLmJ3ZV9wZXJpb2QgPSBUaW1lRGVsdGE6Om1zKGxhc3RfYndlX3Blcmlv
ZF9tc18pOworICAgIG9ic2VydmVyLT5PbkJpdHJhdGVVcGRhdGVkKHVwZGF0ZSk7CiAgIH0KICAg
VXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwogfQpAQCAtMjQ4LDcgKzI3Myw4IEBAIHZvaWQgQml0
cmF0ZUFsbG9jYXRvcjo6UmVtb3ZlT2JzZXJ2ZXIoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBv
YnNlcnZlcikgewogICBVcGRhdGVBbGxvY2F0aW9uTGltaXRzKCk7CiB9CiAKLWludCBCaXRyYXRl
QWxsb2NhdG9yOjpHZXRTdGFydEJpdHJhdGUoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNl
cnZlcikgeworaW50IEJpdHJhdGVBbGxvY2F0b3I6OkdldFN0YXJ0Qml0cmF0ZSgKKyAgICBCaXRy
YXRlQWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVyKSBjb25zdCB7CiAgIFJUQ19EQ0hFQ0tfQ0FM
TEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKICAgY29uc3QgYXV0byYgaXQg
PSBGaW5kT2JzZXJ2ZXJDb25maWcob2JzZXJ2ZXIpOwogICBpZiAoaXQgPT0gYml0cmF0ZV9vYnNl
cnZlcl9jb25maWdzXy5lbmQoKSkgewpAQCAtMjcyLDYgKzI5OCwxNyBAQCB2b2lkIEJpdHJhdGVB
bGxvY2F0b3I6OlNldEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3koCiAgIGJpdHJhdGVfYWxsb2Nh
dGlvbl9zdHJhdGVneV8gPSBzdGQ6Om1vdmUoYml0cmF0ZV9hbGxvY2F0aW9uX3N0cmF0ZWd5KTsK
IH0KIAorQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJDb25maWdzOjpjb25zdF9pdGVyYXRvcgor
Qml0cmF0ZUFsbG9jYXRvcjo6RmluZE9ic2VydmVyQ29uZmlnKAorICAgIGNvbnN0IEJpdHJhdGVB
bGxvY2F0b3JPYnNlcnZlciogb2JzZXJ2ZXIpIGNvbnN0IHsKKyAgZm9yIChhdXRvIGl0ID0gYml0
cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5iZWdpbigpOworICAgICAgIGl0ICE9IGJpdHJhdGVfb2Jz
ZXJ2ZXJfY29uZmlnc18uZW5kKCk7ICsraXQpIHsKKyAgICBpZiAoaXQtPm9ic2VydmVyID09IG9i
c2VydmVyKQorICAgICAgcmV0dXJuIGl0OworICB9CisgIHJldHVybiBiaXRyYXRlX29ic2VydmVy
X2NvbmZpZ3NfLmVuZCgpOworfQorCiBCaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckNvbmZpZ3M6
Oml0ZXJhdG9yCiBCaXRyYXRlQWxsb2NhdG9yOjpGaW5kT2JzZXJ2ZXJDb25maWcoY29uc3QgQml0
cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikgewogICBmb3IgKGF1dG8gaXQgPSBiaXRy
YXRlX29ic2VydmVyX2NvbmZpZ3NfLmJlZ2luKCk7CkBAIC0yODMsMTkgKzMyMCwxOSBAQCBCaXRy
YXRlQWxsb2NhdG9yOjpGaW5kT2JzZXJ2ZXJDb25maWcoY29uc3QgQml0cmF0ZUFsbG9jYXRvck9i
c2VydmVyKiBvYnNlcnZlcikgewogfQogCiBCaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckFsbG9j
YXRpb24gQml0cmF0ZUFsbG9jYXRvcjo6QWxsb2NhdGVCaXRyYXRlcygKLSAgICB1aW50MzJfdCBi
aXRyYXRlKSB7CisgICAgdWludDMyX3QgYml0cmF0ZSkgY29uc3QgewogICBpZiAoYml0cmF0ZV9v
YnNlcnZlcl9jb25maWdzXy5lbXB0eSgpKQogICAgIHJldHVybiBPYnNlcnZlckFsbG9jYXRpb24o
KTsKIAogICBpZiAoYml0cmF0ZV9hbGxvY2F0aW9uX3N0cmF0ZWd5XyAhPSBudWxscHRyKSB7Ci0g
ICAgc3RkOjp2ZWN0b3I8Y29uc3QgcnRjOjpCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFj
a0NvbmZpZyo+Ci0gICAgICAgIHRyYWNrX2NvbmZpZ3MoYml0cmF0ZV9vYnNlcnZlcl9jb25maWdz
Xy5zaXplKCkpOwotICAgIGludCBpID0gMDsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGMgOiBiaXRy
YXRlX29ic2VydmVyX2NvbmZpZ3NfKSB7Ci0gICAgICB0cmFja19jb25maWdzW2krK10gPSAmYzsK
LSAgICB9CisgICAgLy8gTm90ZTogVGhpcyBpbnRlbnRpb25hbGx5IGNhdXNlcyBzbGljaW5nLCB3
ZSBvbmx5IGNvcHkgdGhlIGZpZWxkcyBpbgorICAgIC8vIE9ic2VydmVyQ29uZmlnIHRoYXQgYXJl
IGluaGVyaXRlZCBmcm9tIFRyYWNrQ29uZmlnLgorICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6Qml0cmF0
ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWc+IHRyYWNrX2NvbmZpZ3MoCisgICAgICAg
IGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18uYmVnaW4oKSwgYml0cmF0ZV9vYnNlcnZlcl9jb25m
aWdzXy5lbmQoKSk7CisKICAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gdHJhY2tfYWxsb2NhdGlv
bnMgPQotICAgICAgICBiaXRyYXRlX2FsbG9jYXRpb25fc3RyYXRlZ3lfLT5BbGxvY2F0ZUJpdHJh
dGVzKGJpdHJhdGUsIHRyYWNrX2NvbmZpZ3MpOworICAgICAgICBiaXRyYXRlX2FsbG9jYXRpb25f
c3RyYXRlZ3lfLT5BbGxvY2F0ZUJpdHJhdGVzKAorICAgICAgICAgICAgYml0cmF0ZSwgc3RkOjpt
b3ZlKHRyYWNrX2NvbmZpZ3MpKTsKICAgICAvLyBUaGUgc3RyYXRlZ3kgc2hvdWxkIHJldHVybiBh
bGxvY2F0aW9uIGZvciBhbGwgdHJhY2tzLgogICAgIFJUQ19DSEVDSyh0cmFja19hbGxvY2F0aW9u
cy5zaXplKCkgPT0gYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5zaXplKCkpOwogICAgIE9ic2Vy
dmVyQWxsb2NhdGlvbiBhbGxvY2F0aW9uOwpAQCAtMzMxLDcgKzM2OCw4IEBAIEJpdHJhdGVBbGxv
Y2F0b3I6Ok9ic2VydmVyQWxsb2NhdGlvbiBCaXRyYXRlQWxsb2NhdG9yOjpBbGxvY2F0ZUJpdHJh
dGVzKAogICByZXR1cm4gTWF4UmF0ZUFsbG9jYXRpb24oYml0cmF0ZSwgc3VtX21heF9iaXRyYXRl
cyk7CiB9CiAKLUJpdHJhdGVBbGxvY2F0b3I6Ok9ic2VydmVyQWxsb2NhdGlvbiBCaXRyYXRlQWxs
b2NhdG9yOjpaZXJvUmF0ZUFsbG9jYXRpb24oKSB7CitCaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZl
ckFsbG9jYXRpb24gQml0cmF0ZUFsbG9jYXRvcjo6WmVyb1JhdGVBbGxvY2F0aW9uKCkKKyAgICBj
b25zdCB7CiAgIE9ic2VydmVyQWxsb2NhdGlvbiBhbGxvY2F0aW9uOwogICBmb3IgKGNvbnN0IGF1
dG8mIG9ic2VydmVyX2NvbmZpZyA6IGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18pCiAgICAgYWxs
b2NhdGlvbltvYnNlcnZlcl9jb25maWcub2JzZXJ2ZXJdID0gMDsKQEAgLTMzOSw3ICszNzcsNyBA
QCBCaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckFsbG9jYXRpb24gQml0cmF0ZUFsbG9jYXRvcjo6
WmVyb1JhdGVBbGxvY2F0aW9uKCkgewogfQogCiBCaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckFs
bG9jYXRpb24gQml0cmF0ZUFsbG9jYXRvcjo6TG93UmF0ZUFsbG9jYXRpb24oCi0gICAgdWludDMy
X3QgYml0cmF0ZSkgeworICAgIHVpbnQzMl90IGJpdHJhdGUpIGNvbnN0IHsKICAgT2JzZXJ2ZXJB
bGxvY2F0aW9uIGFsbG9jYXRpb247CiAgIC8vIFN0YXJ0IGJ5IGFsbG9jYXRpbmcgYml0cmF0ZSB0
byBvYnNlcnZlcnMgZW5mb3JjaW5nIGEgbWluIGJpdHJhdGUsIGhlbmNlCiAgIC8vIHJlbWFpbmlu
Z19iaXRyYXRlIG1pZ2h0IHR1cm4gbmVnYXRpdmUuCkBAIC00MDAsNyArNDM4LDcgQEAgQml0cmF0
ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJBbGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6Okxvd1JhdGVB
bGxvY2F0aW9uKAogLy8gbWluX2JpdHJhdGVfYnBzIHZhbHVlcywgdW50aWwgb25lIG9mIHRoZSBv
YnNlcnZlcnMgaGl0cyBpdHMgbWF4X2JpdHJhdGVfYnBzLgogQml0cmF0ZUFsbG9jYXRvcjo6T2Jz
ZXJ2ZXJBbGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6Ok5vcm1hbFJhdGVBbGxvY2F0aW9uKAog
ICAgIHVpbnQzMl90IGJpdHJhdGUsCi0gICAgdWludDMyX3Qgc3VtX21pbl9iaXRyYXRlcykgewor
ICAgIHVpbnQzMl90IHN1bV9taW5fYml0cmF0ZXMpIGNvbnN0IHsKICAgT2JzZXJ2ZXJBbGxvY2F0
aW9uIGFsbG9jYXRpb247CiAgIE9ic2VydmVyQWxsb2NhdGlvbiBvYnNlcnZlcnNfY2FwYWNpdGll
czsKICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlcl9jb25maWcgOiBiaXRyYXRlX29ic2VydmVy
X2NvbmZpZ3NfKSB7CkBAIC00MjAsNyArNDU4LDcgQEAgQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2
ZXJBbGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6Ok5vcm1hbFJhdGVBbGxvY2F0aW9uKAogCiBC
aXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckFsbG9jYXRpb24gQml0cmF0ZUFsbG9jYXRvcjo6TWF4
UmF0ZUFsbG9jYXRpb24oCiAgICAgdWludDMyX3QgYml0cmF0ZSwKLSAgICB1aW50MzJfdCBzdW1f
bWF4X2JpdHJhdGVzKSB7CisgICAgdWludDMyX3Qgc3VtX21heF9iaXRyYXRlcykgY29uc3Qgewog
ICBPYnNlcnZlckFsbG9jYXRpb24gYWxsb2NhdGlvbjsKIAogICBmb3IgKGNvbnN0IGF1dG8mIG9i
c2VydmVyX2NvbmZpZyA6IGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18pIHsKQEAgLTQ1NywxMCAr
NDk1LDExIEBAIHVpbnQzMl90IEJpdHJhdGVBbGxvY2F0b3I6Ok9ic2VydmVyQ29uZmlnOjpNaW5C
aXRyYXRlV2l0aEh5c3RlcmVzaXMoKSBjb25zdCB7CiAgIHJldHVybiBtaW5fYml0cmF0ZTsKIH0K
IAotdm9pZCBCaXRyYXRlQWxsb2NhdG9yOjpEaXN0cmlidXRlQml0cmF0ZUV2ZW5seSh1aW50MzJf
dCBiaXRyYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGluY2x1ZGVfemVyb19hbGxvY2F0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heF9tdWx0aXBsaWVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYnNlcnZlckFsbG9jYXRpb24qIGFs
bG9jYXRpb24pIHsKK3ZvaWQgQml0cmF0ZUFsbG9jYXRvcjo6RGlzdHJpYnV0ZUJpdHJhdGVFdmVu
bHkoCisgICAgdWludDMyX3QgYml0cmF0ZSwKKyAgICBib29sIGluY2x1ZGVfemVyb19hbGxvY2F0
aW9ucywKKyAgICBpbnQgbWF4X211bHRpcGxpZXIsCisgICAgT2JzZXJ2ZXJBbGxvY2F0aW9uKiBh
bGxvY2F0aW9uKSBjb25zdCB7CiAgIFJUQ19EQ0hFQ0tfRVEoYWxsb2NhdGlvbi0+c2l6ZSgpLCBi
aXRyYXRlX29ic2VydmVyX2NvbmZpZ3NfLnNpemUoKSk7CiAKICAgT2JzZXJ2ZXJTb3J0aW5nTWFw
IGxpc3RfbWF4X2JpdHJhdGVzOwpAQCAtNDkxLDggKzUzMCw5IEBAIHZvaWQgQml0cmF0ZUFsbG9j
YXRvcjo6RGlzdHJpYnV0ZUJpdHJhdGVFdmVubHkodWludDMyX3QgYml0cmF0ZSwKICAgfQogfQog
Ci1ib29sIEJpdHJhdGVBbGxvY2F0b3I6OkVub3VnaEJpdHJhdGVGb3JBbGxPYnNlcnZlcnModWlu
dDMyX3QgYml0cmF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBzdW1fbWluX2JpdHJhdGVzKSB7Citib29sIEJpdHJhdGVBbGxv
Y2F0b3I6OkVub3VnaEJpdHJhdGVGb3JBbGxPYnNlcnZlcnMoCisgICAgdWludDMyX3QgYml0cmF0
ZSwKKyAgICB1aW50MzJfdCBzdW1fbWluX2JpdHJhdGVzKSBjb25zdCB7CiAgIGlmIChiaXRyYXRl
IDwgc3VtX21pbl9iaXRyYXRlcykKICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUxMSw3ICs1NTEs
NyBAQCBib29sIEJpdHJhdGVBbGxvY2F0b3I6OkVub3VnaEJpdHJhdGVGb3JBbGxPYnNlcnZlcnMo
dWludDMyX3QgYml0cmF0ZSwKIHZvaWQgQml0cmF0ZUFsbG9jYXRvcjo6RGlzdHJpYnV0ZUJpdHJh
dGVSZWxhdGl2ZWx5KAogICAgIHVpbnQzMl90IHJlbWFpbmluZ19iaXRyYXRlLAogICAgIGNvbnN0
IE9ic2VydmVyQWxsb2NhdGlvbiYgb2JzZXJ2ZXJzX2NhcGFjaXRpZXMsCi0gICAgT2JzZXJ2ZXJB
bGxvY2F0aW9uKiBhbGxvY2F0aW9uKSB7CisgICAgT2JzZXJ2ZXJBbGxvY2F0aW9uKiBhbGxvY2F0
aW9uKSBjb25zdCB7CiAgIFJUQ19EQ0hFQ0tfRVEoYWxsb2NhdGlvbi0+c2l6ZSgpLCBiaXRyYXRl
X29ic2VydmVyX2NvbmZpZ3NfLnNpemUoKSk7CiAgIFJUQ19EQ0hFQ0tfRVEob2JzZXJ2ZXJzX2Nh
cGFjaXRpZXMuc2l6ZSgpLCBiaXRyYXRlX29ic2VydmVyX2NvbmZpZ3NfLnNpemUoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
Yml0cmF0ZV9hbGxvY2F0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvYml0cmF0ZV9hbGxvY2F0b3IuaAppbmRleCA0N2RmN2UwMTUxMmVhYTMyN2Q3
MDE2MDIyZWIxODVmZTI1MTQ4NTgyLi4wNTlmNzdiOTY3MTc5YWIwMjM1NGUwMDEwMjZjZDVlNDMx
NDlkNjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL2JpdHJhdGVfYWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2FsbG9jYXRvci5oCkBAIC0xOSw2ICsx
OSw3IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRl
ICJhcGkvY2FsbC9iaXRyYXRlX2FsbG9jYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9iaXRy
YXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2VxdWVuY2VkX3Rh
c2tfY2hlY2tlci5oIgogCkBAIC0zNCwxMCArMzUsNyBAQCBjbGFzcyBCaXRyYXRlQWxsb2NhdG9y
T2JzZXJ2ZXIgewogIHB1YmxpYzoKICAgLy8gUmV0dXJucyB0aGUgYW1vdW50IG9mIHByb3RlY3Rp
b24gdXNlZCBieSB0aGUgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyCiAgIC8vIGltcGxlbWVudGF0
aW9uLCBhcyBiaXRyYXRlIGluIGJwcy4KLSAgdmlydHVhbCB1aW50MzJfdCBPbkJpdHJhdGVVcGRh
dGVkKHVpbnQzMl90IGJpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50NjRfdCBydHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IGJ3ZV9wZXJpb2RfbXMpID0gMDsKKyAgdmlydHVhbCB1aW50MzJfdCBPbkJpdHJh
dGVVcGRhdGVkKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSkgPSAwOwogCiAgcHJvdGVj
dGVkOgogICB2aXJ0dWFsIH5CaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIoKSB7fQpAQCAtNzMsNyAr
NzEsNyBAQCBjbGFzcyBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsKICAgdmlydHVhbCB2b2lk
IEFkZE9ic2VydmVyKEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2JzZXJ2ZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNZWRpYVN0cmVhbUFsbG9jYXRpb25Db25maWcgY29uZmlnKSA9
IDA7CiAgIHZpcnR1YWwgdm9pZCBSZW1vdmVPYnNlcnZlcihCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2
ZXIqIG9ic2VydmVyKSA9IDA7Ci0gIHZpcnR1YWwgaW50IEdldFN0YXJ0Qml0cmF0ZShCaXRyYXRl
QWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVyKSA9IDA7CisgIHZpcnR1YWwgaW50IEdldFN0YXJ0
Qml0cmF0ZShCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVyKSBjb25zdCA9IDA7CiAK
ICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgfkJpdHJhdGVBbGxvY2F0b3JJbnRlcmZhY2UoKSA9IGRl
ZmF1bHQ7CkBAIC0xMDQsNiArMTAyLDcgQEAgY2xhc3MgQml0cmF0ZUFsbG9jYXRvciA6IHB1Ymxp
YyBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsKIAogICAvLyBBbGxvY2F0ZSB0YXJnZXRfYml0
cmF0ZSBhY3Jvc3MgdGhlIHJlZ2lzdGVyZWQgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVycy4KICAg
dm9pZCBPbk5ldHdvcmtDaGFuZ2VkKHVpbnQzMl90IHRhcmdldF9iaXRyYXRlX2JwcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxpbmtfY2FwYWNpdHlfYnBzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3NzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgaW50NjRfdCBydHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGJ3ZV9w
ZXJpb2RfbXMpOwpAQCAtMTIwLDcgKzExOSw3IEBAIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3IgOiBw
dWJsaWMgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSB7CiAKICAgLy8gUmV0dXJucyBpbml0aWFs
IGJpdHJhdGUgYWxsb2NhdGVkIGZvciB8b2JzZXJ2ZXJ8LiBJZiB8b2JzZXJ2ZXJ8IGlzIG5vdCBp
bgogICAvLyB0aGUgbGlzdCBvZiBhZGRlZCBvYnNlcnZlcnMsIGEgYmVzdCBndWVzcyBpcyByZXR1
cm5lZC4KLSAgaW50IEdldFN0YXJ0Qml0cmF0ZShCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqIG9i
c2VydmVyKSBvdmVycmlkZTsKKyAgaW50IEdldFN0YXJ0Qml0cmF0ZShCaXRyYXRlQWxsb2NhdG9y
T2JzZXJ2ZXIqIG9ic2VydmVyKSBjb25zdCBvdmVycmlkZTsKIAogICAvLyBTZXRzIGV4dGVybmFs
IGFsbG9jYXRpb24gc3RyYXRlZ3kuIElmIHN0cmF0ZWd5IGlzIG5vdCBzZXQgZGVmYXVsdCBXZWJS
VEMKICAgLy8gYWxsb2NhdGlvbiBtZWNoYW5pc20gd2lsbCBiZSB1c2VkLiBUaGUgc3RyYXRlZ3kg
bWF5IGJlIGNoYW5nZWQgZHVyaW5nIGNhbGwuCkBAIC0xNzEsMzEgKzE3MCwzNCBAQCBjbGFzcyBC
aXRyYXRlQWxsb2NhdG9yIDogcHVibGljIEJpdHJhdGVBbGxvY2F0b3JJbnRlcmZhY2UgewogICB2
b2lkIFVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKSBSVENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tl
cl8pOwogCiAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8T2JzZXJ2ZXJDb25maWc+IE9ic2VydmVyQ29u
ZmlnczsKKyAgT2JzZXJ2ZXJDb25maWdzOjpjb25zdF9pdGVyYXRvciBGaW5kT2JzZXJ2ZXJDb25m
aWcoCisgICAgICBjb25zdCBCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVyKSBjb25z
dAorICAgICAgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKICAgT2JzZXJ2ZXJDb25m
aWdzOjppdGVyYXRvciBGaW5kT2JzZXJ2ZXJDb25maWcoCiAgICAgICBjb25zdCBCaXRyYXRlQWxs
b2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVyKSBSVENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tlcl8p
OwogCiAgIHR5cGVkZWYgc3RkOjptdWx0aW1hcDx1aW50MzJfdCwgY29uc3QgT2JzZXJ2ZXJDb25m
aWcqPiBPYnNlcnZlclNvcnRpbmdNYXA7CiAgIHR5cGVkZWYgc3RkOjptYXA8Qml0cmF0ZUFsbG9j
YXRvck9ic2VydmVyKiwgaW50PiBPYnNlcnZlckFsbG9jYXRpb247CiAKLSAgT2JzZXJ2ZXJBbGxv
Y2F0aW9uIEFsbG9jYXRlQml0cmF0ZXModWludDMyX3QgYml0cmF0ZSkKKyAgT2JzZXJ2ZXJBbGxv
Y2F0aW9uIEFsbG9jYXRlQml0cmF0ZXModWludDMyX3QgYml0cmF0ZSkgY29uc3QKICAgICAgIFJU
Q19SVU5fT04oJnNlcXVlbmNlZF9jaGVja2VyXyk7CiAKICAgLy8gQWxsb2NhdGVzIHplcm8gYml0
cmF0ZSB0byBhbGwgb2JzZXJ2ZXJzLgotICBPYnNlcnZlckFsbG9jYXRpb24gWmVyb1JhdGVBbGxv
Y2F0aW9uKCkgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKKyAgT2JzZXJ2ZXJBbGxv
Y2F0aW9uIFplcm9SYXRlQWxsb2NhdGlvbigpIGNvbnN0IFJUQ19SVU5fT04oJnNlcXVlbmNlZF9j
aGVja2VyXyk7CiAgIC8vIEFsbG9jYXRlcyBiaXRyYXRlIHRvIG9ic2VydmVycyB3aGVuIHRoZXJl
IGlzbid0IGVub3VnaCB0byBhbGxvY2F0ZSB0aGUKICAgLy8gbWluaW11bSB0byBhbGwgb2JzZXJ2
ZXJzLgotICBPYnNlcnZlckFsbG9jYXRpb24gTG93UmF0ZUFsbG9jYXRpb24odWludDMyX3QgYml0
cmF0ZSkKKyAgT2JzZXJ2ZXJBbGxvY2F0aW9uIExvd1JhdGVBbGxvY2F0aW9uKHVpbnQzMl90IGJp
dHJhdGUpIGNvbnN0CiAgICAgICBSVENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwogICAv
LyBBbGxvY2F0ZXMgYml0cmF0ZSB0byBhbGwgb2JzZXJ2ZXJzIHdoZW4gdGhlIGF2YWlsYWJsZSBi
YW5kd2lkdGggaXMgZW5vdWdoCiAgIC8vIHRvIGFsbG9jYXRlIHRoZSBtaW5pbXVtIHRvIGFsbCBv
YnNlcnZlcnMgYnV0IG5vdCBlbm91Z2ggdG8gYWxsb2NhdGUgdGhlCiAgIC8vIG1heCBiaXRyYXRl
IG9mIGVhY2ggb2JzZXJ2ZXIuCiAgIE9ic2VydmVyQWxsb2NhdGlvbiBOb3JtYWxSYXRlQWxsb2Nh
dGlvbih1aW50MzJfdCBiaXRyYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3Qgc3VtX21pbl9iaXRyYXRlcykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN1bV9taW5fYml0cmF0ZXMpIGNvbnN0CiAg
ICAgICBSVENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwogICAvLyBBbGxvY2F0ZXMgYml0
cmF0ZSB0byBvYnNlcnZlcnMgd2hlbiB0aGVyZSBpcyBlbm91Z2ggYXZhaWxhYmxlIGJhbmR3aWR0
aAogICAvLyBmb3IgYWxsIG9ic2VydmVycyB0byBiZSBhbGxvY2F0ZWQgdGhlaXIgbWF4IGJpdHJh
dGUuCiAgIE9ic2VydmVyQWxsb2NhdGlvbiBNYXhSYXRlQWxsb2NhdGlvbih1aW50MzJfdCBiaXRy
YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3Vt
X21heF9iaXRyYXRlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IHN1bV9tYXhfYml0cmF0ZXMpIGNvbnN0CiAgICAgICBSVENfUlVOX09OKCZzZXF1ZW5j
ZWRfY2hlY2tlcl8pOwogCiAgIC8vIFNwbGl0cyB8Yml0cmF0ZXwgZXZlbmx5IHRvIG9ic2VydmVy
cyBhbHJlYWR5IGluIHxhbGxvY2F0aW9ufC4KQEAgLTIwNSw5ICsyMDcsMTAgQEAgY2xhc3MgQml0
cmF0ZUFsbG9jYXRvciA6IHB1YmxpYyBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsKICAgdm9p
ZCBEaXN0cmlidXRlQml0cmF0ZUV2ZW5seSh1aW50MzJfdCBiaXRyYXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jbHVkZV96ZXJvX2FsbG9jYXRpb25zLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhfbXVsdGlwbGllciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPYnNlcnZlckFsbG9jYXRpb24qIGFsbG9jYXRpb24pCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZXJBbGxvY2F0aW9uKiBhbGxvY2F0aW9u
KSBjb25zdAogICAgICAgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKLSAgYm9vbCBF
bm91Z2hCaXRyYXRlRm9yQWxsT2JzZXJ2ZXJzKHVpbnQzMl90IGJpdHJhdGUsIHVpbnQzMl90IHN1
bV9taW5fYml0cmF0ZXMpCisgIGJvb2wgRW5vdWdoQml0cmF0ZUZvckFsbE9ic2VydmVycyh1aW50
MzJfdCBiaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3Qgc3VtX21pbl9iaXRyYXRlcykgY29uc3QKICAgICAgIFJUQ19SVU5fT04oJnNlcXVlbmNlZF9j
aGVja2VyXyk7CiAKICAgLy8gRnJvbSB0aGUgYXZhaWxhYmxlIHxiaXRyYXRlfCwgZWFjaCBvYnNl
cnZlciB3aWxsIGJlIGFsbG9jYXRlZCBhCkBAIC0yMTksNyArMjIyLDcgQEAgY2xhc3MgQml0cmF0
ZUFsbG9jYXRvciA6IHB1YmxpYyBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsKICAgdm9pZCBE
aXN0cmlidXRlQml0cmF0ZVJlbGF0aXZlbHkoCiAgICAgICB1aW50MzJfdCBiaXRyYXRlLAogICAg
ICAgY29uc3QgT2JzZXJ2ZXJBbGxvY2F0aW9uJiBvYnNlcnZlcnNfY2FwYWNpdGllcywKLSAgICAg
IE9ic2VydmVyQWxsb2NhdGlvbiogYWxsb2NhdGlvbikgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2No
ZWNrZXJfKTsKKyAgICAgIE9ic2VydmVyQWxsb2NhdGlvbiogYWxsb2NhdGlvbikgY29uc3QgUlRD
X1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKIAogICAvLyBBbGxvdyBwYWNrZXRzIHRvIGJl
IHRyYW5zbWl0dGVkIGluIHVwIHRvIDIgdGltZXMgbWF4IHZpZGVvIGJpdHJhdGUgaWYgdGhlCiAg
IC8vIGJhbmR3aWR0aCBlc3RpbWF0ZSBhbGxvd3MgaXQuCkBAIC0yMzIsNyArMjM1LDggQEAgY2xh
c3MgQml0cmF0ZUFsbG9jYXRvciA6IHB1YmxpYyBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsK
ICAgTGltaXRPYnNlcnZlciogY29uc3QgbGltaXRfb2JzZXJ2ZXJfIFJUQ19HVUFSREVEX0JZKCZz
ZXF1ZW5jZWRfY2hlY2tlcl8pOwogICAvLyBTdG9yZWQgaW4gYSBsaXN0IHRvIGtlZXAgdHJhY2sg
b2YgdGhlIGluc2VydGlvbiBvcmRlci4KICAgT2JzZXJ2ZXJDb25maWdzIGJpdHJhdGVfb2JzZXJ2
ZXJfY29uZmlnc18gUlRDX0dVQVJERURfQlkoJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0gIHVpbnQz
Ml90IGxhc3RfYml0cmF0ZV9icHNfIFJUQ19HVUFSREVEX0JZKCZzZXF1ZW5jZWRfY2hlY2tlcl8p
OworICB1aW50MzJfdCBsYXN0X3RhcmdldF9icHNfIFJUQ19HVUFSREVEX0JZKCZzZXF1ZW5jZWRf
Y2hlY2tlcl8pOworICB1aW50MzJfdCBsYXN0X2xpbmtfY2FwYWNpdHlfYnBzXyBSVENfR1VBUkRF
RF9CWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKICAgdWludDMyX3QgbGFzdF9ub25femVyb19iaXRy
YXRlX2Jwc18gUlRDX0dVQVJERURfQlkoJnNlcXVlbmNlZF9jaGVja2VyXyk7CiAgIHVpbnQ4X3Qg
bGFzdF9mcmFjdGlvbl9sb3NzXyBSVENfR1VBUkRFRF9CWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsK
ICAgaW50NjRfdCBsYXN0X3J0dF8gUlRDX0dVQVJERURfQlkoJnNlcXVlbmNlZF9jaGVja2VyXyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL2JpdHJhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYwpp
bmRleCAyOTYxZmQ0MDljZTk4OTIzNDg3YTJjM2RjNjRiOTNkYTk2NDcyNGFkLi4wNzcxZjc5OGVk
Y2Q4YjE5ZDM3OTc1OWJjOGU0NGIwOGUyM2MzNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfYWxsb2NhdG9yX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvYml0cmF0ZV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKQEAgLTU5LDE1ICs1OSwxMyBAQCBjbGFz
cyBUZXN0Qml0cmF0ZU9ic2VydmVyIDogcHVibGljIEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciB7
CiAgICAgcHJvdGVjdGlvbl9yYXRpb18gPSBwcm90ZWN0aW9uX3JhdGlvOwogICB9CiAKLSAgdWlu
dDMyX3QgT25CaXRyYXRlVXBkYXRlZCh1aW50MzJfdCBiaXRyYXRlX2JwcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90IGZyYWN0aW9uX2xvc3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBydHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCBwcm9iaW5nX2ludGVydmFsX21zKSBvdmVycmlkZSB7Ci0gICAgbGFzdF9iaXRyYXRlX2Jw
c18gPSBiaXRyYXRlX2JwczsKLSAgICBsYXN0X2ZyYWN0aW9uX2xvc3NfID0gZnJhY3Rpb25fbG9z
czsKLSAgICBsYXN0X3J0dF9tc18gPSBydHQ7Ci0gICAgbGFzdF9wcm9iaW5nX2ludGVydmFsX21z
XyA9IHByb2JpbmdfaW50ZXJ2YWxfbXM7Ci0gICAgcmV0dXJuIGJpdHJhdGVfYnBzICogcHJvdGVj
dGlvbl9yYXRpb187CisgIHVpbnQzMl90IE9uQml0cmF0ZVVwZGF0ZWQoQml0cmF0ZUFsbG9jYXRp
b25VcGRhdGUgdXBkYXRlKSBvdmVycmlkZSB7CisgICAgbGFzdF9iaXRyYXRlX2Jwc18gPSB1cGRh
dGUudGFyZ2V0X2JpdHJhdGUuYnBzKCk7CisgICAgbGFzdF9mcmFjdGlvbl9sb3NzXyA9CisgICAg
ICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50OF90Pih1cGRhdGUucGFja2V0X2xvc3NfcmF0aW8g
KiAyNTYpOworICAgIGxhc3RfcnR0X21zXyA9IHVwZGF0ZS5yb3VuZF90cmlwX3RpbWUubXMoKTsK
KyAgICBsYXN0X3Byb2JpbmdfaW50ZXJ2YWxfbXNfID0gdXBkYXRlLmJ3ZV9wZXJpb2QubXMoKTsK
KyAgICByZXR1cm4gdXBkYXRlLnRhcmdldF9iaXRyYXRlLmJwcygpICogcHJvdGVjdGlvbl9yYXRp
b187CiAgIH0KICAgdWludDMyX3QgbGFzdF9iaXRyYXRlX2Jwc187CiAgIHVpbnQ4X3QgbGFzdF9m
cmFjdGlvbl9sb3NzXzsKQEAgLTc2LDYgKzc0LDE4IEBAIGNsYXNzIFRlc3RCaXRyYXRlT2JzZXJ2
ZXIgOiBwdWJsaWMgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyIHsKICAgZG91YmxlIHByb3RlY3Rp
b25fcmF0aW9fOwogfTsKIAorY2xhc3MgQml0cmF0ZUFsbG9jYXRvckZvclRlc3QgOiBwdWJsaWMg
Qml0cmF0ZUFsbG9jYXRvciB7CisgcHVibGljOgorICB1c2luZyBCaXRyYXRlQWxsb2NhdG9yOjpC
aXRyYXRlQWxsb2NhdG9yOworICB2b2lkIE9uTmV0d29ya0NoYW5nZWQodWludDMyX3QgdGFyZ2V0
X2JpdHJhdGVfYnBzLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmcmFjdGlvbl9s
b3NzLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBydHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90IGJ3ZV9wZXJpb2RfbXMpIHsKKyAgICBCaXRyYXRlQWxsb2NhdG9y
OjpPbk5ldHdvcmtDaGFuZ2VkKHRhcmdldF9iaXRyYXRlX2JwcywgdGFyZ2V0X2JpdHJhdGVfYnBz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25fbG9zcywg
cnR0LCBid2VfcGVyaW9kX21zKTsKKyAgfQorfTsKKwogbmFtZXNwYWNlIHsKIGNvbnN0ZXhwciBp
bnQ2NF90IGtEZWZhdWx0UHJvYmluZ0ludGVydmFsTXMgPSAzMDAwOwogY29uc3QgZG91YmxlIGtE
ZWZhdWx0Qml0cmF0ZVByaW9yaXR5ID0gMS4wOwpAQCAtODMsNyArOTMsOCBAQCBjb25zdCBkb3Vi
bGUga0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkgPSAxLjA7CiAKIGNsYXNzIEJpdHJhdGVBbGxvY2F0
b3JUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgotICBCaXRyYXRl
QWxsb2NhdG9yVGVzdCgpIDogYWxsb2NhdG9yXyhuZXcgQml0cmF0ZUFsbG9jYXRvcigmbGltaXRf
b2JzZXJ2ZXJfKSkgeworICBCaXRyYXRlQWxsb2NhdG9yVGVzdCgpCisgICAgICA6IGFsbG9jYXRv
cl8obmV3IEJpdHJhdGVBbGxvY2F0b3JGb3JUZXN0KCZsaW1pdF9vYnNlcnZlcl8pKSB7CiAgICAg
YWxsb2NhdG9yXy0+T25OZXR3b3JrQ2hhbmdlZCgzMDAwMDB1LCAwLCAwLCBrRGVmYXVsdFByb2Jp
bmdJbnRlcnZhbE1zKTsKICAgfQogICB+Qml0cmF0ZUFsbG9jYXRvclRlc3QoKSB7fQpAQCAtMTAw
LDcgKzExMSw3IEBAIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3JUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7CiAgIH0KIAogICBOaWNlTW9jazxNb2NrTGltaXRPYnNlcnZlcj4gbGltaXRfb2Jz
ZXJ2ZXJfOwotICBzdGQ6OnVuaXF1ZV9wdHI8Qml0cmF0ZUFsbG9jYXRvcj4gYWxsb2NhdG9yXzsK
KyAgc3RkOjp1bmlxdWVfcHRyPEJpdHJhdGVBbGxvY2F0b3JGb3JUZXN0PiBhbGxvY2F0b3JfOwog
fTsKIAogVEVTVF9GKEJpdHJhdGVBbGxvY2F0b3JUZXN0LCBVcGRhdGluZ0JpdHJhdGVPYnNlcnZl
cikgewpAQCAtMjE2LDcgKzIyNyw3IEBAIFRFU1RfRihCaXRyYXRlQWxsb2NhdG9yVGVzdCwgUmVt
b3ZlT2JzZXJ2ZXJUcmlnZ2Vyc0xpbWl0T2JzZXJ2ZXIpIHsKIGNsYXNzIEJpdHJhdGVBbGxvY2F0
b3JUZXN0Tm9FbmZvcmNlTWluIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVk
OgogICBCaXRyYXRlQWxsb2NhdG9yVGVzdE5vRW5mb3JjZU1pbigpCi0gICAgICA6IGFsbG9jYXRv
cl8obmV3IEJpdHJhdGVBbGxvY2F0b3IoJmxpbWl0X29ic2VydmVyXykpIHsKKyAgICAgIDogYWxs
b2NhdG9yXyhuZXcgQml0cmF0ZUFsbG9jYXRvckZvclRlc3QoJmxpbWl0X29ic2VydmVyXykpIHsK
ICAgICBhbGxvY2F0b3JfLT5Pbk5ldHdvcmtDaGFuZ2VkKDMwMDAwMHUsIDAsIDAsIGtEZWZhdWx0
UHJvYmluZ0ludGVydmFsTXMpOwogICB9CiAgIH5CaXRyYXRlQWxsb2NhdG9yVGVzdE5vRW5mb3Jj
ZU1pbigpIHt9CkBAIC0yMzIsNyArMjQzLDcgQEAgY2xhc3MgQml0cmF0ZUFsbG9jYXRvclRlc3RO
b0VuZm9yY2VNaW4gOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgICAgICAgICAg
ICBlbmZvcmNlX21pbl9iaXRyYXRlLCB0cmFja19pZCwgYml0cmF0ZV9wcmlvcml0eSwgZmFsc2V9
KTsKICAgfQogICBOaWNlTW9jazxNb2NrTGltaXRPYnNlcnZlcj4gbGltaXRfb2JzZXJ2ZXJfOwot
ICBzdGQ6OnVuaXF1ZV9wdHI8Qml0cmF0ZUFsbG9jYXRvcj4gYWxsb2NhdG9yXzsKKyAgc3RkOjp1
bmlxdWVfcHRyPEJpdHJhdGVBbGxvY2F0b3JGb3JUZXN0PiBhbGxvY2F0b3JfOwogfTsKIAogLy8g
VGhlIGZvbGxvd2luZyB0aHJlZSB0ZXN0cyB2ZXJpZnkgZW5mb3JjaW5nIGEgbWluaW11bSBiaXRy
YXRlIHdvcmtzIGFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfZXN0aW1hdG9yX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2VzdGltYXRvcl90ZXN0
cy5jYwppbmRleCA3NjZlMzhjOTc4OGNjNDA5ZWQ0Nzk4OThjYTFiNzMxYzMzYzQ3NzM0Li4wODYy
ODI3ZDNhMjRhMzk2ZDMwZGM3NzQyNDdjNWE2YzIxYmJlMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfZXN0aW1hdG9y
X3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvYml0cmF0ZV9lc3RpbWF0b3JfdGVzdHMuY2MKQEAgLTQ2LDggKzQ2LDYgQEAgY2xhc3Mg
TG9nT2JzZXJ2ZXIgewogIHByaXZhdGU6CiAgIGNsYXNzIENhbGxiYWNrIDogcHVibGljIHJ0Yzo6
TG9nU2luayB7CiAgICBwdWJsaWM6Ci0gICAgQ2FsbGJhY2soKSA6IGRvbmVfKGZhbHNlLCBmYWxz
ZSkge30KLQogICAgIHZvaWQgT25Mb2dNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdl
KSBvdmVycmlkZSB7CiAgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0X3NlY3RfKTsKICAg
ICAgIC8vIElnbm9yZSBsb2cgbGluZXMgdGhhdCBhcmUgZHVlIHRvIG1pc3NpbmcgQVNUIGV4dGVu
c2lvbnMsIHRoZXNlIGFyZQpAQCAtMTExLDE0ICsxMDksMTQgQEAgY2xhc3MgQml0cmF0ZUVzdGlt
YXRvclRlc3QgOiBwdWJsaWMgdGVzdDo6Q2FsbFRlc3QgewogICAgICAgICAgICZ0YXNrX3F1ZXVl
XywKICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAogICAgICAg
ICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11
bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmln
KCkpKSwKICAgICAgICAgICBzZW5kZXJfY2FsbF8uZ2V0KCksIHBheWxvYWRfdHlwZV9tYXBfKSk7
CiAgICAgICBzZW5kX3RyYW5zcG9ydF8tPlNldFJlY2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5SZWNl
aXZlcigpKTsKICAgICAgIHJlY2VpdmVfdHJhbnNwb3J0Xy5yZXNldChuZXcgdGVzdDo6RGlyZWN0
VHJhbnNwb3J0KAogICAgICAgICAgICZ0YXNrX3F1ZXVlXywKICAgICAgICAgICBhYnNsOjptYWtl
X3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAogICAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRp
bWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxh
dGlvbkNvbmZpZygpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAgICAgICByZWNlaXZl
cl9jYWxsXy5nZXQoKSwgcGF5bG9hZF90eXBlX21hcF8pKTsKICAgICAgIHJlY2VpdmVfdHJhbnNw
b3J0Xy0+U2V0UmVjZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZlcigpKTsKIApAQCAtMTI2LDYg
KzEyNCw4IEBAIGNsYXNzIEJpdHJhdGVFc3RpbWF0b3JUZXN0IDogcHVibGljIHRlc3Q6OkNhbGxU
ZXN0IHsKICAgICAgIHZpZGVvX3NlbmRfY29uZmlnLnJ0cC5zc3Jjcy5wdXNoX2JhY2soa1ZpZGVv
U2VuZFNzcmNzWzBdKTsKICAgICAgIHZpZGVvX3NlbmRfY29uZmlnLmVuY29kZXJfc2V0dGluZ3Mu
ZW5jb2Rlcl9mYWN0b3J5ID0KICAgICAgICAgICAmZmFrZV9lbmNvZGVyX2ZhY3RvcnlfOworICAg
ICAgdmlkZW9fc2VuZF9jb25maWcuZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9m
YWN0b3J5ID0KKyAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKTsKICAg
ICAgIHZpZGVvX3NlbmRfY29uZmlnLnJ0cC5wYXlsb2FkX25hbWUgPSAiRkFLRSI7CiAgICAgICB2
aWRlb19zZW5kX2NvbmZpZy5ydHAucGF5bG9hZF90eXBlID0ga0Zha2VWaWRlb1NlbmRQYXlsb2Fk
VHlwZTsKICAgICAgIFNldFZpZGVvU2VuZENvbmZpZyh2aWRlb19zZW5kX2NvbmZpZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2Nh
bGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2Nh
bGwuY2MKaW5kZXggNjM1ODc0YjJkNjI0YTY1MmM5NjNhZjBjOWM4ODcwMWVjZjRjY2FhMy4uOTVm
NjRlOTI0OTkwNThkMjVmMjI5NWU1OTk2MzZjOWJhOWVmN2E2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbC5jYwpAQCAt
MjIsNyArMjIsNiBAQAogI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmgiCiAj
aW5jbHVkZSAiYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uaCIKICNpbmNsdWRlICJhdWRpby9hdWRp
b19zdGF0ZS5oIgotI2luY2x1ZGUgImF1ZGlvL3RpbWVfaW50ZXJ2YWwuaCIKICNpbmNsdWRlICJj
YWxsL2JpdHJhdGVfYWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiY2FsbC9jYWxsLmgiCiAjaW5jbHVk
ZSAiY2FsbC9mbGV4ZmVjX3JlY2VpdmVfc3RyZWFtX2ltcGwuaCIKQEAgLTMwLDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJjYWxsL3J0cF9zdHJlYW1fcmVjZWl2ZXJfY29udHJvbGxlci5oIgogI2luY2x1
ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaCIKICNpbmNsdWRlICJsb2dn
aW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0cmVhbV9j
b25maWcuaCIKLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9hdWRpb19zZW5kX3N0cmVhbV9jb25maWcuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9pbmNvbWluZy5oIgogI2luY2x1ZGUg
ImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21p
bmcuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF92
aWRlb19yZWNlaXZlX3N0cmVhbV9jb25maWcuaCIKQEAgLTU2LDYgKzU0LDcgQEAKICNpbmNsdWRl
ICJydGNfYmFzZS9zeW5jaHJvbml6YXRpb24vcndfbG9ja193cmFwcGVyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvdGFza19xdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0
aW9ucy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3RyYWNlX2V2ZW50LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xv
Y2suaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jcHVfaW5mby5oIgpAQCAt
MTQ2LDE4ICsxNDUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8cnRjbG9nOjpTdHJlYW1Db25maWc+IENy
ZWF0ZVJ0Y0xvZ1N0cmVhbUNvbmZpZygKICAgcmV0dXJuIHJ0Y2xvZ19jb25maWc7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gQ3JlYXRlUnRjTG9nU3RyZWFtQ29u
ZmlnKAotICAgIGNvbnN0IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcpIHsKLSAgYXV0
byBydGNsb2dfY29uZmlnID0gYWJzbDo6bWFrZV91bmlxdWU8cnRjbG9nOjpTdHJlYW1Db25maWc+
KCk7Ci0gIHJ0Y2xvZ19jb25maWctPmxvY2FsX3NzcmMgPSBjb25maWcucnRwLnNzcmM7Ci0gIHJ0
Y2xvZ19jb25maWctPnJ0cF9leHRlbnNpb25zID0gY29uZmlnLnJ0cC5leHRlbnNpb25zOwotICBp
ZiAoY29uZmlnLnNlbmRfY29kZWNfc3BlYykgewotICAgIHJ0Y2xvZ19jb25maWctPmNvZGVjcy5l
bXBsYWNlX2JhY2soY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+Zm9ybWF0Lm5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc2VuZF9jb2RlY19zcGVjLT5w
YXlsb2FkX3R5cGUsIDApOwotICB9Ci0gIHJldHVybiBydGNsb2dfY29uZmlnOwotfQotCiB9ICAv
LyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTIzNiw2ICsyMjMsMTUgQEAg
Y2xhc3MgQ2FsbCBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OkNhbGwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBhbGxvY2F0ZWRfd2l0aG91dF9mZWVkYmFja19icHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhc19wYWNrZXRfZmVlZGJh
Y2spIG92ZXJyaWRlOwogCisgIC8vIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgd2hlbiB0aGUgbWVk
aWEgdHJhbnNwb3J0IGlzIGNyZWF0ZWQgYW5kIHdoZW4gdGhlCisgIC8vIG1lZGlhIHRyYW5zcG9y
dCBpcyBiZWluZyBkZXN0cnVjdGVkLgorICAvLyBXZSBvbmx5IGFsbG93IG9uZSBtZWRpYSB0cmFu
c3BvcnQgcGVyIGNvbm5lY3Rpb24uCisgIC8vCisgIC8vIEl0IHNob3VsZCBiZSBjYWxsZWQgd2l0
aCBub24tbnVsbCBhcmd1bWVudCBhdCBtb3N0IG9uY2UsIGFuZCBpZiBpdCB3YXMKKyAgLy8gY2Fs
bGVkIHdpdGggbm9uLW51bGwgYXJndW1lbnQsIGl0IGhhcyB0byBiZSBjYWxsZWQgd2l0aCBhIG51
bGwgYXJndW1lbnQKKyAgLy8gYXQgbGVhc3Qgb25jZSBhZnRlciB0aGF0LgorICB2b2lkIE1lZGlh
VHJhbnNwb3J0Q2hhbmdlKE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQp
IG92ZXJyaWRlOworCiAgcHJpdmF0ZToKICAgRGVsaXZlcnlTdGF0dXMgRGVsaXZlclJ0Y3AoTWVk
aWFUeXBlIG1lZGlhX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIHBhY2tldCwKQEAgLTI1Niw2ICsyNTIsMTAgQEAgY2xhc3MgQ2FsbCBmaW5hbCA6IHB1
YmxpYyB3ZWJydGM6OkNhbGwsCiAgIHZvaWQgVXBkYXRlSGlzdG9ncmFtcygpOwogICB2b2lkIFVw
ZGF0ZUFnZ3JlZ2F0ZU5ldHdvcmtTdGF0ZSgpOwogCisgIC8vICBJZiB8bWVkaWFfdHJhbnNwb3J0
fCBpcyBub3QgbnVsbCwgaXQgcmVnaXN0ZXJzIHRoZSByYXRlIG9ic2VydmVyIGZvciB0aGUKKyAg
Ly8gIG1lZGlhIHRyYW5zcG9ydC4KKyAgdm9pZCBSZWdpc3RlclJhdGVPYnNlcnZlcigpIFJUQ19M
T0NLU19FWENMVURFRCh0YXJnZXRfb2JzZXJ2ZXJfY3JpdF8pOworCiAgIENsb2NrKiBjb25zdCBj
bG9ja187CiAKICAgY29uc3QgaW50IG51bV9jcHVfY29yZXNfOwpAQCAtMzQ2LDcgKzM0Niw2IEBA
IGNsYXNzIENhbGwgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpDYWxsLAogICBhYnNsOjpvcHRpb25h
bDxpbnQ2NF90PiBsYXN0X3JlY2VpdmVkX3J0cF9hdWRpb19tc187CiAgIGFic2w6Om9wdGlvbmFs
PGludDY0X3Q+IGZpcnN0X3JlY2VpdmVkX3J0cF92aWRlb19tc187CiAgIGFic2w6Om9wdGlvbmFs
PGludDY0X3Q+IGxhc3RfcmVjZWl2ZWRfcnRwX3ZpZGVvX21zXzsKLSAgVGltZUludGVydmFsIHNl
bnRfcnRwX2F1ZGlvX3RpbWVyX21zXzsKIAogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBsYXN0X2Jh
bmR3aWR0aF9icHNfY3JpdF87CiAgIHVpbnQzMl90IGxhc3RfYmFuZHdpZHRoX2Jwc18gUlRDX0dV
QVJERURfQlkoJmxhc3RfYmFuZHdpZHRoX2Jwc19jcml0Xyk7CkBAIC0zNzQsNiArMzczLDE1IEBA
IGNsYXNzIENhbGwgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpDYWxsLAogICAvLyBEZWNsYXJlZCBs
YXN0IHNpbmNlIGl0IHdpbGwgaXNzdWUgY2FsbGJhY2tzIGZyb20gYSB0YXNrIHF1ZXVlLiBEZWNs
YXJpbmcgaXQKICAgLy8gbGFzdCBlbnN1cmVzIHRoYXQgaXQgaXMgZGVzdHJveWVkIGZpcnN0IGFu
ZCBhbnkgcnVubmluZyB0YXNrcyBhcmUgZmluaXNoZWQuCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBU
cmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZT4gdHJhbnNwb3J0X3NlbmRfOworCisgIC8v
IFRoaXMgaXMgYSBwcmVjYXV0aW9uLCBzaW5jZSB8TWVkaWFUcmFuc3BvcnRDaGFuZ2V8IGlzIG5v
dCBndWFyYW50ZWVkIHRvIGJlCisgIC8vIGludm9rZWQgb24gYSBwYXJ0aWN1bGFyIHRocmVhZC4K
KyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gdGFyZ2V0X29ic2VydmVyX2NyaXRfOworICBib29sIGlz
X3RhcmdldF9yYXRlX29ic2VydmVyX3JlZ2lzdGVyZWRfCisgICAgICBSVENfR1VBUkRFRF9CWSgm
dGFyZ2V0X29ic2VydmVyX2NyaXRfKSA9IGZhbHNlOworICBNZWRpYVRyYW5zcG9ydEludGVyZmFj
ZSogbWVkaWFfdHJhbnNwb3J0XworICAgICAgUlRDX0dVQVJERURfQlkoJnRhcmdldF9vYnNlcnZl
cl9jcml0XykgPSBudWxscHRyOworCiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oQ2Fs
bCk7CiB9OwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCkBAIC00NDQsNyArNDUyLDYgQEAgQ2Fs
bDo6Q2FsbChjb25zdCBDYWxsOjpDb25maWcmIGNvbmZpZywKICAgICAgIHZpZGVvX3NlbmRfZGVs
YXlfc3RhdHNfKG5ldyBTZW5kRGVsYXlTdGF0cyhjbG9ja18pKSwKICAgICAgIHN0YXJ0X21zXyhj
bG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSB7CiAgIFJUQ19EQ0hFQ0soY29uZmlnLmV2ZW50
X2xvZyAhPSBudWxscHRyKTsKLSAgdHJhbnNwb3J0X3NlbmQtPlJlZ2lzdGVyVGFyZ2V0VHJhbnNm
ZXJSYXRlT2JzZXJ2ZXIodGhpcyk7CiAgIHRyYW5zcG9ydF9zZW5kXyA9IHN0ZDo6bW92ZSh0cmFu
c3BvcnRfc2VuZCk7CiAgIHRyYW5zcG9ydF9zZW5kX3B0cl8gPSB0cmFuc3BvcnRfc2VuZF8uZ2V0
KCk7CiAKQEAgLTQ4Niw2ICs0OTMsNDMgQEAgQ2FsbDo6fkNhbGwoKSB7CiAgIFVwZGF0ZUhpc3Rv
Z3JhbXMoKTsKIH0KIAordm9pZCBDYWxsOjpSZWdpc3RlclJhdGVPYnNlcnZlcigpIHsKKyAgcnRj
OjpDcml0U2NvcGUgbG9jaygmdGFyZ2V0X29ic2VydmVyX2NyaXRfKTsKKworICBpZiAoaXNfdGFy
Z2V0X3JhdGVfb2JzZXJ2ZXJfcmVnaXN0ZXJlZF8pIHsKKyAgICByZXR1cm47CisgIH0KKworICBp
c190YXJnZXRfcmF0ZV9vYnNlcnZlcl9yZWdpc3RlcmVkXyA9IHRydWU7CisKKyAgaWYgKG1lZGlh
X3RyYW5zcG9ydF8pIHsKKyAgICBtZWRpYV90cmFuc3BvcnRfLT5BZGRUYXJnZXRUcmFuc2ZlclJh
dGVPYnNlcnZlcih0aGlzKTsKKyAgfSBlbHNlIHsKKyAgICB0cmFuc3BvcnRfc2VuZF9wdHJfLT5S
ZWdpc3RlclRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKHRoaXMpOworICB9Cit9CisKK3ZvaWQg
Q2FsbDo6TWVkaWFUcmFuc3BvcnRDaGFuZ2UoTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlh
X3RyYW5zcG9ydCkgeworICBydGM6OkNyaXRTY29wZSBsb2NrKCZ0YXJnZXRfb2JzZXJ2ZXJfY3Jp
dF8pOworCisgIGlmIChpc190YXJnZXRfcmF0ZV9vYnNlcnZlcl9yZWdpc3RlcmVkXykgeworICAg
IC8vIE9ubHkgdXNlZCB0byB1bnJlZ2lzdGVyIHJhdGUgb2JzZXJ2ZXIgZnJvbSBtZWRpYSB0cmFu
c3BvcnQuIFJlZ2lzdHJhdGlvbgorICAgIC8vIGhhcHBlbnMgd2hlbiB0aGUgc3RyZWFtIGlzIGNy
ZWF0ZWQuCisgICAgaWYgKCFtZWRpYV90cmFuc3BvcnQgJiYgbWVkaWFfdHJhbnNwb3J0Xykgewor
ICAgICAgbWVkaWFfdHJhbnNwb3J0Xy0+UmVtb3ZlVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIo
dGhpcyk7CisgICAgICBtZWRpYV90cmFuc3BvcnRfID0gbnVsbHB0cjsKKyAgICAgIGlzX3Rhcmdl
dF9yYXRlX29ic2VydmVyX3JlZ2lzdGVyZWRfID0gZmFsc2U7CisgICAgfQorICB9IGVsc2UgaWYg
KG1lZGlhX3RyYW5zcG9ydCkgeworICAgIFJUQ19EQ0hFQ0sobWVkaWFfdHJhbnNwb3J0XyA9PSBu
dWxscHRyIHx8CisgICAgICAgICAgICAgICBtZWRpYV90cmFuc3BvcnRfID09IG1lZGlhX3RyYW5z
cG9ydCkKKyAgICAgICAgPDwgIm1lZGlhX3RyYW5zcG9ydF89IiA8PCAobWVkaWFfdHJhbnNwb3J0
XyAhPSBudWxscHRyKQorICAgICAgICA8PCAiLCAobWVkaWFfdHJhbnNwb3J0Xz09bWVkaWFfdHJh
bnNwb3J0KT0iCisgICAgICAgIDw8IChtZWRpYV90cmFuc3BvcnRfID09IG1lZGlhX3RyYW5zcG9y
dCk7CisgICAgbWVkaWFfdHJhbnNwb3J0XyA9IG1lZGlhX3RyYW5zcG9ydDsKKyAgfQorfQorCiB2
b2lkIENhbGw6OlVwZGF0ZUhpc3RvZ3JhbXMoKSB7CiAgIFJUQ19ISVNUT0dSQU1fQ09VTlRTXzEw
MDAwMCgKICAgICAgICJXZWJSVEMuQ2FsbC5MaWZldGltZUluU2Vjb25kcyIsCkBAIC00OTUsMTEg
KzUzOSw2IEBAIHZvaWQgQ2FsbDo6VXBkYXRlSGlzdG9ncmFtcygpIHsKIHZvaWQgQ2FsbDo6VXBk
YXRlU2VuZEhpc3RvZ3JhbXMoaW50NjRfdCBmaXJzdF9zZW50X3BhY2tldF9tcykgewogICBpZiAo
Zmlyc3Rfc2VudF9wYWNrZXRfbXMgPT0gLTEpCiAgICAgcmV0dXJuOwotICBpZiAoIXNlbnRfcnRw
X2F1ZGlvX3RpbWVyX21zXy5FbXB0eSgpKSB7Ci0gICAgUlRDX0hJU1RPR1JBTV9DT1VOVFNfMTAw
MDAwKAotICAgICAgICAiV2ViUlRDLkNhbGwuVGltZVNlbmRpbmdBdWRpb1J0cFBhY2tldHNJblNl
Y29uZHMiLAotICAgICAgICBzZW50X3J0cF9hdWRpb190aW1lcl9tc18uTGVuZ3RoKCkgLyAxMDAw
KTsKLSAgfQogICBpbnQ2NF90IGVsYXBzZWRfc2VjID0KICAgICAgIChjbG9ja18tPlRpbWVJbk1p
bGxpc2Vjb25kcygpIC0gZmlyc3Rfc2VudF9wYWNrZXRfbXMpIC8gMTAwMDsKICAgaWYgKGVsYXBz
ZWRfc2VjIDwgbWV0cmljczo6a01pblJ1blRpbWVJblNlY29uZHMpCkBAIC01NzgsOSArNjE3LDE2
IEBAIHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtKiBDYWxsOjpDcmVhdGVBdWRpb1NlbmRTdHJlYW0o
CiAgICAgY29uc3Qgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyYgY29uZmlnKSB7CiAg
IFRSQUNFX0VWRU5UMCgid2VicnRjIiwgIkNhbGw6OkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbSIpOwog
ICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJmNvbmZpZ3VyYXRpb25fc2VxdWVuY2Vf
Y2hlY2tlcl8pOwotICBldmVudF9sb2dfLT5Mb2coYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRB
dWRpb1NlbmRTdHJlYW1Db25maWc+KAotICAgICAgQ3JlYXRlUnRjTG9nU3RyZWFtQ29uZmlnKGNv
bmZpZykpKTsKIAorICB7CisgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmdGFyZ2V0X29ic2VydmVy
X2NyaXRfKTsKKyAgICBSVENfRENIRUNLKG1lZGlhX3RyYW5zcG9ydF8gPT0gY29uZmlnLm1lZGlh
X3RyYW5zcG9ydCk7CisgIH0KKworICBSZWdpc3RlclJhdGVPYnNlcnZlcigpOworCisgIC8vIFN0
cmVhbSBjb25maWcgaXMgbG9nZ2VkIGluIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlndXJlU3RyZWFt
LCBhcyBpdCBtYXkKKyAgLy8gY2hhbmdlIGR1cmluZyB0aGUgc3RyZWFtJ3MgbGlmZXRpbWUuCiAg
IGFic2w6Om9wdGlvbmFsPFJ0cFN0YXRlPiBzdXNwZW5kZWRfcnRwX3N0YXRlOwogICB7CiAgICAg
Y29uc3QgYXV0byYgaXRlciA9IHN1c3BlbmRlZF9hdWRpb19zZW5kX3NzcmNzXy5maW5kKGNvbmZp
Zy5ydHAuc3NyYyk7CkBAIC01OTYsNyArNjQyLDcgQEAgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW0q
IENhbGw6OkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbSgKICAgICAgIGNvbmZpZywgY29uZmlnXy5hdWRp
b19zdGF0ZSwgdHJhbnNwb3J0X3NlbmRfcHRyXy0+R2V0V29ya2VyUXVldWUoKSwKICAgICAgIG1v
ZHVsZV9wcm9jZXNzX3RocmVhZF8uZ2V0KCksIHRyYW5zcG9ydF9zZW5kX3B0cl8sCiAgICAgICBi
aXRyYXRlX2FsbG9jYXRvcl8uZ2V0KCksIGV2ZW50X2xvZ18sIGNhbGxfc3RhdHNfLmdldCgpLAot
ICAgICAgc3VzcGVuZGVkX3J0cF9zdGF0ZSwgJnNlbnRfcnRwX2F1ZGlvX3RpbWVyX21zXyk7Cisg
ICAgICBzdXNwZW5kZWRfcnRwX3N0YXRlKTsKICAgewogICAgIFdyaXRlTG9ja1Njb3BlZCB3cml0
ZV9sb2NrKCpzZW5kX2NyaXRfKTsKICAgICBSVENfRENIRUNLKGF1ZGlvX3NlbmRfc3NyY3NfLmZp
bmQoY29uZmlnLnJ0cC5zc3JjKSA9PQpAQCAtNzA4LDYgKzc1NCw4IEBAIHdlYnJ0Yzo6VmlkZW9T
ZW5kU3RyZWFtKiBDYWxsOjpDcmVhdGVWaWRlb1NlbmRTdHJlYW0oCiAgIFRSQUNFX0VWRU5UMCgi
d2VicnRjIiwgIkNhbGw6OkNyZWF0ZVZpZGVvU2VuZFN0cmVhbSIpOwogICBSVENfRENIRUNLX0NB
TExFRF9TRVFVRU5USUFMTFkoJmNvbmZpZ3VyYXRpb25fc2VxdWVuY2VfY2hlY2tlcl8pOwogCisg
IFJlZ2lzdGVyUmF0ZU9ic2VydmVyKCk7CisKICAgdmlkZW9fc2VuZF9kZWxheV9zdGF0c18tPkFk
ZFNzcmNzKGNvbmZpZyk7CiAgIGZvciAoc2l6ZV90IHNzcmNfaW5kZXggPSAwOyBzc3JjX2luZGV4
IDwgY29uZmlnLnJ0cC5zc3Jjcy5zaXplKCk7CiAgICAgICAgKytzc3JjX2luZGV4KSB7CkBAIC0x
MDQ0LDYgKzEwOTIsMTggQEAgdm9pZCBDYWxsOjpPblNlbnRQYWNrZXQoY29uc3QgcnRjOjpTZW50
UGFja2V0JiBzZW50X3BhY2tldCkgewogfQogCiB2b2lkIENhbGw6Ok9uVGFyZ2V0VHJhbnNmZXJS
YXRlKFRhcmdldFRyYW5zZmVyUmF0ZSBtc2cpIHsKKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcv
OTcxOSkKKyAgLy8gQ2FsbDo6T25UYXJnZXRUcmFuc2ZlclJhdGUgcmVxdWlyZXMgdGhhdCBvbiB0
YXJnZXQgdHJhbnNmZXIgcmF0ZSBpcyBpbnZva2VkCisgIC8vIGZyb20gdGhlIHdvcmtlciBxdWV1
ZSAoYmVjYXVzZSBiaXRyYXRlX2FsbG9jYXRvcl8gcmVxdWlyZXMgaXQpLiBNZWRpYQorICAvLyB0
cmFuc3BvcnQgZG9lcyBub3QgZ3VhcmFudGVlIHRoZSBjYWxsYmFjayBvbiB0aGUgd29ya2VyIHF1
ZXVlLgorICAvLyBXaGVuIHRoZSB0aHJlYWRpbmcgbW9kZWwgZm9yIE1lZGlhVHJhbnNwb3J0SW50
ZXJmYWNlIGlzIHVwZGF0ZSwgcmVjb25zaWRlcgorICAvLyBjaGFuZ2luZyB0aGlzIGltcGxlbWVu
dGF0aW9uLgorICBpZiAoIXRyYW5zcG9ydF9zZW5kX3B0cl8tPkdldFdvcmtlclF1ZXVlKCktPklz
Q3VycmVudCgpKSB7CisgICAgdHJhbnNwb3J0X3NlbmRfcHRyXy0+R2V0V29ya2VyUXVldWUoKS0+
UG9zdFRhc2soCisgICAgICAgIFt0aGlzLCBtc2ddIHsgdGhpcy0+T25UYXJnZXRUcmFuc2ZlclJh
dGUobXNnKTsgfSk7CisgICAgcmV0dXJuOworICB9CisKICAgdWludDMyX3QgdGFyZ2V0X2JpdHJh
dGVfYnBzID0gbXNnLnRhcmdldF9yYXRlLmJwcygpOwogICBpbnQgbG9zc19yYXRpb18yNTUgPSBt
c2cubmV0d29ya19lc3RpbWF0ZS5sb3NzX3JhdGVfcmF0aW8gKiAyNTU7CiAgIHVpbnQ4X3QgZnJh
Y3Rpb25fbG9zcyA9CkBAIC0xMDU3LDggKzExMTcsOSBAQCB2b2lkIENhbGw6Ok9uVGFyZ2V0VHJh
bnNmZXJSYXRlKFRhcmdldFRyYW5zZmVyUmF0ZSBtc2cpIHsKICAgfQogICAvLyBGb3IgY29udHJv
bGxpbmcgdGhlIHJhdGUgb2YgZmVlZGJhY2sgbWVzc2FnZXMuCiAgIHJlY2VpdmVfc2lkZV9jY18u
T25CaXRyYXRlQ2hhbmdlZCh0YXJnZXRfYml0cmF0ZV9icHMpOwotICBiaXRyYXRlX2FsbG9jYXRv
cl8tPk9uTmV0d29ya0NoYW5nZWQodGFyZ2V0X2JpdHJhdGVfYnBzLCBmcmFjdGlvbl9sb3NzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnR0X21zLCBwcm9iaW5nX2lu
dGVydmFsX21zKTsKKyAgYml0cmF0ZV9hbGxvY2F0b3JfLT5Pbk5ldHdvcmtDaGFuZ2VkKHRhcmdl
dF9iaXRyYXRlX2JwcywgYmFuZHdpZHRoX2JwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyYWN0aW9uX2xvc3MsIHJ0dF9tcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2JpbmdfaW50ZXJ2YWxfbXMpOwogCiAgIC8vIElnbm9yZSB1
cGRhdGVzIGlmIGJpdHJhdGUgaXMgemVybyAodGhlIGFnZ3JlZ2F0ZSBuZXR3b3JrIHN0YXRlIGlz
IGRvd24pLgogICBpZiAodGFyZ2V0X2JpdHJhdGVfYnBzID09IDApIHsKQEAgLTEyMTUsOCArMTI3
NiwxMCBAQCBQYWNrZXRSZWNlaXZlcjo6RGVsaXZlcnlTdGF0dXMgQ2FsbDo6RGVsaXZlclJ0cChN
ZWRpYVR5cGUgbWVkaWFfdHlwZSwKIAogICBpZiAocGFja2V0X3RpbWVfdXMgIT0gLTEpIHsKICAg
ICBpZiAocmVjZWl2ZV90aW1lX2NhbGN1bGF0b3JfKSB7CisgICAgICAvLyBSZXBhaXIgcGFja2V0
X3RpbWVfdXMgZm9yIGNsb2NrIHJlc2V0cyBieSBjb21wYXJpbmcgYSBuZXcgcmVhZCBvZgorICAg
ICAgLy8gdGhlIHNhbWUgY2xvY2sgKFRpbWVVVENNaWNyb3MpIHRvIGEgbW9ub3RvbmljIGNsb2Nr
IHJlYWRpbmcuCiAgICAgICBwYWNrZXRfdGltZV91cyA9IHJlY2VpdmVfdGltZV9jYWxjdWxhdG9y
Xy0+UmVjb25jaWxlUmVjZWl2ZVRpbWVzKAotICAgICAgICAgIHBhY2tldF90aW1lX3VzLCBjbG9j
a18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKKyAgICAgICAgICBwYWNrZXRfdGltZV91cywgcnRj
OjpUaW1lVVRDTWljcm9zKCksIGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkpOwogICAgIH0K
ICAgICBwYXJzZWRfcGFja2V0LnNldF9hcnJpdmFsX3RpbWVfbXMoKHBhY2tldF90aW1lX3VzICsg
NTAwKSAvIDEwMDApOwogICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGwuaAppbmRleCA0MTY3Mjk2ZDc1NmM1NDdm
NDM0ZWZkNmM1NTNhZTY5NzE2MDliM2U0Li5jMGUzMWMwOTAyYjNjOTZkY2QwMTA3YzdhODNlOGM1
YzhmNmM4MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jYWxsL2NhbGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jYWxsL2NhbGwuaApAQCAtMjQsMTEgKzI0LDEwIEBACiAjaW5jbHVkZSAiY2Fs
bC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJj
YWxsL3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmgiCiAjaW5jbHVkZSAiY2FsbC92aWRlb19zZW5kX3N0
cmVhbS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1
ZGUpCiAjaW5jbHVkZSAicnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
bmV0d29yay9zZW50X3BhY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdvcmtyb3V0ZS5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApA
QCAtNTgsNiArNTcsMTEgQEAgY2xhc3MgQ2FsbCB7CiAKICAgdmlydHVhbCBBdWRpb1NlbmRTdHJl
YW0qIENyZWF0ZUF1ZGlvU2VuZFN0cmVhbSgKICAgICAgIGNvbnN0IEF1ZGlvU2VuZFN0cmVhbTo6
Q29uZmlnJiBjb25maWcpID0gMDsKKworICAvLyBHZXRzIGNhbGxlZCB3aGVuIG1lZGlhIHRyYW5z
cG9ydCBpcyBjcmVhdGVkIG9yIHJlbW92ZWQuCisgIHZpcnR1YWwgdm9pZCBNZWRpYVRyYW5zcG9y
dENoYW5nZSgKKyAgICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnRf
aW50ZXJmYWNlKSA9IDA7CisKICAgdmlydHVhbCB2b2lkIERlc3Ryb3lBdWRpb1NlbmRTdHJlYW0o
QXVkaW9TZW5kU3RyZWFtKiBzZW5kX3N0cmVhbSkgPSAwOwogCiAgIHZpcnR1YWwgQXVkaW9SZWNl
aXZlU3RyZWFtKiBDcmVhdGVBdWRpb1JlY2VpdmVTdHJlYW0oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxfY29uZmlnLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX2NvbmZp
Zy5jYwppbmRleCBkMzQyNWFhNTc5OTdhOTZlZjI5NzAyYjA4ZTEzMGVjNGEyYjk1YThjLi5iMTQ5
Yzg4OWVhZTAyOGI5ZGQzOTgzYzZlMDM0OTE1MTZmMjVkNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxfY29uZmlnLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbF9j
b25maWcuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgImNhbGwvY2FsbF9jb25maWcu
aCIKIAorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IAogQ2FsbENvbmZpZzo6Q2FsbENvbmZpZyhSdGNFdmVudExvZyogZXZlbnRfbG9nKSA6IGV2ZW50
X2xvZyhldmVudF9sb2cpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbF9wZXJmX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX3BlcmZfdGVzdHMuY2MKaW5kZXgg
OGZjZDU2NmY4MWE4MjQxZGUwYWQyZmE2YjFhNWY2NGUyMDk3MWFmYi4uNzJhYTc4YzVmNzc3MGVh
YzEzMzQxNjM5MTdlMmZjNzBjYzljMGJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX3BlcmZfdGVzdHMuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX3BlcmZfdGVz
dHMuY2MKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAiYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaCIKKyNpbmNsdWRlICJh
cGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25maWcuaCIKICNpbmNsdWRlICJjYWxsL2Nh
bGwuaCIKQEAgLTY0LDcgKzY1LDcgQEAgY2xhc3MgQ2FsbFBlcmZUZXN0IDogcHVibGljIHRlc3Q6
OkNhbGxUZXN0IHsKIAogICB2b2lkIFRlc3RNaW5UcmFuc21pdEJpdHJhdGUoYm9vbCBwYWRfdG9f
bWluX2JpdHJhdGUpOwogCi0gIHZvaWQgVGVzdENhcHR1cmVOdHBUaW1lKGNvbnN0IERlZmF1bHRO
ZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyYgbmV0X2NvbmZpZywKKyAgdm9pZCBUZXN0Q2FwdHVyZU50
cFRpbWUoY29uc3QgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyYgbmV0X2NvbmZpZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRocmVzaG9sZF9tcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHN0YXJ0X3RpbWVfbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBydW5fdGltZV9tcyk7CkBAIC0xNTIsNyArMTUzLDcgQEAgdm9pZCBDYWxsUGVyZlRlc3Q6
OlRlc3RBdWRpb1ZpZGVvU3luYyhGZWNNb2RlIGZlYywKICAgY29uc3QgdWludDMyX3Qga0F1ZGlv
U2VuZFNzcmMgPSAxMjM0OwogICBjb25zdCB1aW50MzJfdCBrQXVkaW9SZWN2U3NyYyA9IDU2Nzg7
CiAKLSAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGF1ZGlvX25ldF9jb25maWc7Cisg
IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgYXVkaW9fbmV0X2NvbmZpZzsKICAgYXVkaW9f
bmV0X2NvbmZpZy5xdWV1ZV9kZWxheV9tcyA9IDUwMDsKICAgYXVkaW9fbmV0X2NvbmZpZy5sb3Nz
X3BlcmNlbnQgPSA1OwogCkBAIC0yMTcsNyArMjE4LDcgQEAgdm9pZCBDYWxsUGVyZlRlc3Q6OlRl
c3RBdWRpb1ZpZGVvU3luYyhGZWNNb2RlIGZlYywKICAgICAgICAgdGVzdDo6UGFja2V0VHJhbnNw
b3J0OjprU2VuZGVyLCB2aWRlb19wdF9tYXAsCiAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZh
a2VOZXR3b3JrUGlwZT4oCiAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBh
YnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0
d29ya0JlaGF2aW9yQ29uZmlnKCkpKSk7CiAgICAgdmlkZW9fc2VuZF90cmFuc3BvcnQtPlNldFJl
Y2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5SZWNlaXZlcigpKTsKIAogICAgIHJlY2VpdmVfdHJhbnNw
b3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6UGFja2V0VHJhbnNwb3J0PigKQEAgLTIyNSwx
MyArMjI2LDE0IEBAIHZvaWQgQ2FsbFBlcmZUZXN0OjpUZXN0QXVkaW9WaWRlb1N5bmMoRmVjTW9k
ZSBmZWMsCiAgICAgICAgIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1JlY2VpdmVyLCBwYXlsb2Fk
X3R5cGVfbWFwXywKICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigK
ICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVl
PFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25m
aWcoKSkpKTsKICAgICByZWNlaXZlX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIoc2VuZGVyX2NhbGxf
LT5SZWNlaXZlcigpKTsKIAogICAgIENyZWF0ZVNlbmRDb25maWcoMSwgMCwgMCwgdmlkZW9fc2Vu
ZF90cmFuc3BvcnQuZ2V0KCkpOwogICAgIENyZWF0ZU1hdGNoaW5nUmVjZWl2ZUNvbmZpZ3MocmVj
ZWl2ZV90cmFuc3BvcnQuZ2V0KCkpOwogCi0gICAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgYXVk
aW9fc2VuZF9jb25maWcoYXVkaW9fc2VuZF90cmFuc3BvcnQuZ2V0KCkpOworICAgIEF1ZGlvU2Vu
ZFN0cmVhbTo6Q29uZmlnIGF1ZGlvX3NlbmRfY29uZmlnKGF1ZGlvX3NlbmRfdHJhbnNwb3J0Lmdl
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVk
aWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgICAgYXVkaW9fc2VuZF9jb25maWcucnRwLnNzcmMg
PSBrQXVkaW9TZW5kU3NyYzsKICAgICBhdWRpb19zZW5kX2NvbmZpZy5zZW5kX2NvZGVjX3NwZWMg
PSBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6U2VuZENvZGVjU3BlYygKICAgICAgICAga0F1ZGlv
U2VuZFBheWxvYWRUeXBlLCB7IklTQUMiLCAxNjAwMCwgMX0pOwpAQCAtMzM3LDE0ICszMzksMTQg
QEAgVEVTVF9GKENhbGxQZXJmVGVzdCwgUGxheXNPdXRBdWRpb0FuZFZpZGVvSW5TeW5jV2l0aFZp
ZGVvRmFzdGVyVGhhbkF1ZGlvRHJpZnQpIHsKIH0KIAogdm9pZCBDYWxsUGVyZlRlc3Q6OlRlc3RD
YXB0dXJlTnRwVGltZSgKLSAgICBjb25zdCBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcm
IG5ldF9jb25maWcsCisgICAgY29uc3QgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyYgbmV0
X2NvbmZpZywKICAgICBpbnQgdGhyZXNob2xkX21zLAogICAgIGludCBzdGFydF90aW1lX21zLAog
ICAgIGludCBydW5fdGltZV9tcykgewogICBjbGFzcyBDYXB0dXJlTnRwVGltZU9ic2VydmVyIDog
cHVibGljIHRlc3Q6OkVuZFRvRW5kVGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBydGM6OlZpZGVvU2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiB7CiAgICBwdWJs
aWM6Ci0gICAgQ2FwdHVyZU50cFRpbWVPYnNlcnZlcihjb25zdCBEZWZhdWx0TmV0d29ya1NpbXVs
YXRpb25Db25maWcmIG5ldF9jb25maWcsCisgICAgQ2FwdHVyZU50cFRpbWVPYnNlcnZlcihjb25z
dCBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnJiBuZXRfY29uZmlnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHRocmVzaG9sZF9tcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzdGFydF90aW1lX21zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJ1
bl90aW1lX21zKQpAQCAtNDYxLDcgKzQ2Myw3IEBAIHZvaWQgQ2FsbFBlcmZUZXN0OjpUZXN0Q2Fw
dHVyZU50cFRpbWUoCiAgICAgfQogCiAgICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF87Ci0g
ICAgY29uc3QgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIG5ldF9jb25maWdfOworICAg
IGNvbnN0IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgbmV0X2NvbmZpZ187CiAgICAgQ2xv
Y2sqIGNvbnN0IGNsb2NrXzsKICAgICBpbnQgdGhyZXNob2xkX21zXzsKICAgICBpbnQgc3RhcnRf
dGltZV9tc187CkBAIC00NzgsMTAgKzQ4MCwxMCBAQCB2b2lkIENhbGxQZXJmVGVzdDo6VGVzdENh
cHR1cmVOdHBUaW1lKAogICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9CiAKLS8vIEZsYWt5IHRlc3Rz
LCBkaXNhYmxlZCBvbiBNYWMgZHVlIHRvIHdlYnJ0Yzo4MjkxLgotI2lmICEoZGVmaW5lZChXRUJS
VENfTUFDKSkKKy8vIEZsYWt5IHRlc3RzLCBkaXNhYmxlZCBvbiBNYWMgYW5kIFdpbmRvd3MgZHVl
IHRvIHdlYnJ0Yzo4MjkxLgorI2lmICEoZGVmaW5lZChXRUJSVENfTUFDKSB8fCBkZWZpbmVkKFdF
QlJUQ19XSU4pKQogVEVTVF9GKENhbGxQZXJmVGVzdCwgQ2FwdHVyZU50cFRpbWVXaXRoTmV0d29y
a0RlbGF5KSB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBuZXRfY29uZmlnOwor
ICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIG5ldF9jb25maWc7CiAgIG5ldF9jb25maWcu
cXVldWVfZGVsYXlfbXMgPSAxMDA7CiAgIC8vIFRPRE8od3UpOiBsb3dlciB0aGUgdGhyZXNob2xk
IGFzIHRoZSBjYWxjdWxhdGlvbi9lc3RpbWF0YXRpb24gYmVjb21lcyBtb3JlCiAgIC8vIGFjY3Vy
YXRlLgpAQCAtNDkyLDcgKzQ5NCw3IEBAIFRFU1RfRihDYWxsUGVyZlRlc3QsIENhcHR1cmVOdHBU
aW1lV2l0aE5ldHdvcmtEZWxheSkgewogfQogCiBURVNUX0YoQ2FsbFBlcmZUZXN0LCBDYXB0dXJl
TnRwVGltZVdpdGhOZXR3b3JrSml0dGVyKSB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNv
bmZpZyBuZXRfY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIG5ldF9jb25m
aWc7CiAgIG5ldF9jb25maWcucXVldWVfZGVsYXlfbXMgPSAxMDA7CiAgIG5ldF9jb25maWcuZGVs
YXlfc3RhbmRhcmRfZGV2aWF0aW9uX21zID0gMTA7CiAgIC8vIFRPRE8od3UpOiBsb3dlciB0aGUg
dGhyZXNob2xkIGFzIHRoZSBjYWxjdWxhdGlvbi9lc3RpbWF0YXRpb24gYmVjb21lcyBtb3JlCkBA
IC03MjQsMTIgKzcyNiwxMyBAQCBURVNUX0YoQ2FsbFBlcmZUZXN0LCBNQVlCRV9LZWVwc0hpZ2hC
aXRyYXRlV2hlblJlY29uZmlndXJpbmdTZW5kZXIpIHsKICAgICBCaXRyYXRlT2JzZXJ2ZXIoKQog
ICAgICAgICA6IEVuZFRvRW5kVGVzdChrRGVmYXVsdFRpbWVvdXRNcyksCiAgICAgICAgICAgRmFr
ZUVuY29kZXIoQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSksCi0gICAgICAgICAgdGltZV90b19y
ZWNvbmZpZ3VyZV8oZmFsc2UsIGZhbHNlKSwKICAgICAgICAgICBlbmNvZGVyX2luaXRzXygwKSwK
ICAgICAgICAgICBsYXN0X3NldF9iaXRyYXRlX2ticHNfKDApLAogICAgICAgICAgIHNlbmRfc3Ry
ZWFtXyhudWxscHRyKSwKICAgICAgICAgICBmcmFtZV9nZW5lcmF0b3JfKG51bGxwdHIpLAotICAg
ICAgICAgIGVuY29kZXJfZmFjdG9yeV8odGhpcykge30KKyAgICAgICAgICBlbmNvZGVyX2ZhY3Rv
cnlfKHRoaXMpLAorICAgICAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfKAorICAgICAg
ICAgICAgICBDcmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpKSB7fQog
CiAgICAgaW50MzJfdCBJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNvbmZpZywKICAgICAg
ICAgICAgICAgICAgICAgICAgaW50MzJfdCBudW1iZXJfb2ZfY29yZXMsCkBAIC03NjcsOCArNzcw
LDkgQEAgVEVTVF9GKENhbGxQZXJmVGVzdCwgTUFZQkVfS2VlcHNIaWdoQml0cmF0ZVdoZW5SZWNv
bmZpZ3VyaW5nU2VuZGVyKSB7CiAgICAgICByZXR1cm4gRmFrZUVuY29kZXI6OlNldFJhdGVBbGxv
Y2F0aW9uKHJhdGVfYWxsb2NhdGlvbiwgZnJhbWVyYXRlKTsKICAgICB9CiAKLSAgICB2b2lkIE1v
ZGlmeVNlbmRlckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpIG92ZXJyaWRlIHsKLSAg
ICAgIGNvbmZpZy0+Yml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMgPSBrSW5pdGlhbEJp
dHJhdGVLYnBzICogMTAwMDsKKyAgICB2b2lkIE1vZGlmeVNlbmRlckJpdHJhdGVDb25maWcoCisg
ICAgICAgIEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIG92ZXJyaWRlIHsKKyAg
ICAgIGJpdHJhdGVfY29uZmlnLT5zdGFydF9iaXRyYXRlX2JwcyA9IGtJbml0aWFsQml0cmF0ZUti
cHMgKiAxMDAwOwogICAgIH0KIAogICAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdzKApAQCAtNzc2
LDYgKzc4MCw4IEBAIFRFU1RfRihDYWxsUGVyZlRlc3QsIE1BWUJFX0tlZXBzSGlnaEJpdHJhdGVX
aGVuUmVjb25maWd1cmluZ1NlbmRlcikgewogICAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1JlY2Vp
dmVTdHJlYW06OkNvbmZpZz4qIHJlY2VpdmVfY29uZmlncywKICAgICAgICAgVmlkZW9FbmNvZGVy
Q29uZmlnKiBlbmNvZGVyX2NvbmZpZykgb3ZlcnJpZGUgewogICAgICAgc2VuZF9jb25maWctPmVu
Y29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gJmVuY29kZXJfZmFjdG9yeV87CisgICAg
ICBzZW5kX2NvbmZpZy0+ZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5
ID0KKyAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKTsKICAgICAgIGVu
Y29kZXJfY29uZmlnLT5tYXhfYml0cmF0ZV9icHMgPSAyICoga1JlY29uZmlndXJlVGhyZXNob2xk
S2JwcyAqIDEwMDA7CiAgICAgICBlbmNvZGVyX2NvbmZpZy0+dmlkZW9fc3RyZWFtX2ZhY3Rvcnkg
PQogICAgICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8VmlkZW9TdHJlYW1GYWN0b3J5
PigpOwpAQCAtODExLDYgKzgxNyw3IEBAIFRFU1RfRihDYWxsUGVyZlRlc3QsIE1BWUJFX0tlZXBz
SGlnaEJpdHJhdGVXaGVuUmVjb25maWd1cmluZ1NlbmRlcikgewogICAgIFZpZGVvU2VuZFN0cmVh
bSogc2VuZF9zdHJlYW1fOwogICAgIHRlc3Q6OkZyYW1lR2VuZXJhdG9yQ2FwdHVyZXIqIGZyYW1l
X2dlbmVyYXRvcl87CiAgICAgdGVzdDo6VmlkZW9FbmNvZGVyUHJveHlGYWN0b3J5IGVuY29kZXJf
ZmFjdG9yeV87CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rv
cnk+IGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfOwogICAgIFZpZGVvRW5jb2RlckNvbmZpZyBl
bmNvZGVyX2NvbmZpZ187CiAgIH0gdGVzdDsKIApAQCAtODY1LDggKzg3Miw4IEBAIHZvaWQgQ2Fs
bFBlcmZUZXN0OjpUZXN0TWluQXVkaW9WaWRlb0JpdHJhdGUoCiAgICAgICAgICAgbWF4X2J3ZV8o
bWF4X2J3ZSkge30KIAogICAgcHJvdGVjdGVkOgotICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlv
bkNvbmZpZyBHZXRGYWtlTmV0d29ya1BpcGVDb25maWcoKSB7Ci0gICAgICBEZWZhdWx0TmV0d29y
a1NpbXVsYXRpb25Db25maWcgcGlwZV9jb25maWc7CisgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlv
ckNvbmZpZyBHZXRGYWtlTmV0d29ya1BpcGVDb25maWcoKSB7CisgICAgICBCdWlsdEluTmV0d29y
a0JlaGF2aW9yQ29uZmlnIHBpcGVfY29uZmlnOwogICAgICAgcGlwZV9jb25maWcubGlua19jYXBh
Y2l0eV9rYnBzID0gdGVzdF9iaXRyYXRlX2Zyb21fOwogICAgICAgcmV0dXJuIHBpcGVfY29uZmln
OwogICAgIH0KQEAgLTkwMyw3ICs5MTAsNyBAQCB2b2lkIENhbGxQZXJmVGVzdDo6VGVzdE1pbkF1
ZGlvVmlkZW9CaXRyYXRlKAogICAgICAgICAgICAgICAgPyB0ZXN0X2JpdHJhdGUgPD0gdGVzdF9i
aXRyYXRlX3RvXwogICAgICAgICAgICAgICAgOiB0ZXN0X2JpdHJhdGUgPj0gdGVzdF9iaXRyYXRl
X3RvXzsKICAgICAgICAgICAgdGVzdF9iaXRyYXRlICs9IHRlc3RfYml0cmF0ZV9zdGVwXykgewot
ICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgcGlwZV9jb25maWc7CisgICAg
ICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgcGlwZV9jb25maWc7CiAgICAgICAgIHBp
cGVfY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IHRlc3RfYml0cmF0ZTsKICAgICAgICAgc2Vu
ZF9zaW11bGF0ZWRfbmV0d29ya18tPlNldENvbmZpZyhwaXBlX2NvbmZpZyk7CiAgICAgICAgIHJl
Y2VpdmVfc2ltdWxhdGVkX25ldHdvcmtfLT5TZXRDb25maWcocGlwZV9jb25maWcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxs
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9jYWxsX3VuaXR0ZXN0LmNjCmluZGV4IDhhZTA0MDA4ZjljYTNiYTg0YzI5NzNmZjJjYWRi
MTMwMWJiMThiNjQuLjc3MGYyNTUzMTNjYzFkNDdiODk4OWM0M2MzMTAwODYwNWUyMGUxMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
Y2FsbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jYWxsL2NhbGxfdW5pdHRlc3QuY2MKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1
ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVp
bHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9mYWtlX21l
ZGlhX3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfYXVkaW9fbWl4ZXIuaCIK
ICNpbmNsdWRlICJhdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbS5oIgogI2luY2x1ZGUgImF1ZGlv
L2F1ZGlvX3NlbmRfc3RyZWFtLmgiCkBAIC02Miw3ICs2Myw4IEBAIFRFU1QoQ2FsbFRlc3QsIENv
bnN0cnVjdERlc3RydWN0KSB7CiAKIFRFU1QoQ2FsbFRlc3QsIENyZWF0ZURlc3Ryb3lfQXVkaW9T
ZW5kU3RyZWFtKSB7CiAgIENhbGxIZWxwZXIgY2FsbDsKLSAgQXVkaW9TZW5kU3RyZWFtOjpDb25m
aWcgY29uZmlnKG51bGxwdHIpOworICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcoLypz
ZW5kX3RyYW5zcG9ydD0qL251bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogICBjb25maWcucnRwLnNzcmMgPSA0MjsK
ICAgQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0gPSBjYWxsLT5DcmVhdGVBdWRpb1NlbmRTdHJlYW0o
Y29uZmlnKTsKICAgRVhQRUNUX05FKHN0cmVhbSwgbnVsbHB0cik7CkBAIC04NCw3ICs4Niw4IEBA
IFRFU1QoQ2FsbFRlc3QsIENyZWF0ZURlc3Ryb3lfQXVkaW9SZWNlaXZlU3RyZWFtKSB7CiAKIFRF
U1QoQ2FsbFRlc3QsIENyZWF0ZURlc3Ryb3lfQXVkaW9TZW5kU3RyZWFtcykgewogICBDYWxsSGVs
cGVyIGNhbGw7Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGNvbmZpZyhudWxscHRyKTsKKyAg
QXVkaW9TZW5kU3RyZWFtOjpDb25maWcgY29uZmlnKC8qc2VuZF90cmFuc3BvcnQ9Ki9udWxscHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9u
dWxscHRyKTsKICAgc3RkOjpsaXN0PEF1ZGlvU2VuZFN0cmVhbSo+IHN0cmVhbXM7CiAgIGZvciAo
aW50IGkgPSAwOyBpIDwgMjsgKytpKSB7CiAgICAgZm9yICh1aW50MzJfdCBzc3JjID0gMDsgc3Ny
YyA8IDEyMzQ1Njc7IHNzcmMgKz0gMzQ1NjcpIHsKQEAgLTE0Miw3ICsxNDUsOCBAQCBURVNUKENh
bGxUZXN0LCBDcmVhdGVEZXN0cm95X0Fzc29jaWF0ZUF1ZGlvU2VuZFJlY2VpdmVTdHJlYW1zX1Jl
Y3ZGaXJzdCkgewogICBBdWRpb1JlY2VpdmVTdHJlYW0qIHJlY3Zfc3RyZWFtID0gY2FsbC0+Q3Jl
YXRlQXVkaW9SZWNlaXZlU3RyZWFtKHJlY3ZfY29uZmlnKTsKICAgRVhQRUNUX05FKHJlY3Zfc3Ry
ZWFtLCBudWxscHRyKTsKIAotICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBzZW5kX2NvbmZpZyhu
dWxscHRyKTsKKyAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgc2VuZF9jb25maWcoLypzZW5kX3Ry
YW5zcG9ydD0qL251bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgIHNlbmRfY29uZmlnLnJ0cC5zc3JjID0g
Nzc3OwogICBBdWRpb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtID0gY2FsbC0+Q3JlYXRlQXVkaW9T
ZW5kU3RyZWFtKHNlbmRfY29uZmlnKTsKICAgRVhQRUNUX05FKHNlbmRfc3RyZWFtLCBudWxscHRy
KTsKQEAgLTE2MCw3ICsxNjQsOCBAQCBURVNUKENhbGxUZXN0LCBDcmVhdGVEZXN0cm95X0Fzc29j
aWF0ZUF1ZGlvU2VuZFJlY2VpdmVTdHJlYW1zX1JlY3ZGaXJzdCkgewogCiBURVNUKENhbGxUZXN0
LCBDcmVhdGVEZXN0cm95X0Fzc29jaWF0ZUF1ZGlvU2VuZFJlY2VpdmVTdHJlYW1zX1NlbmRGaXJz
dCkgewogICBDYWxsSGVscGVyIGNhbGw7Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIHNlbmRf
Y29uZmlnKG51bGxwdHIpOworICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBzZW5kX2NvbmZpZygv
KnNlbmRfdHJhbnNwb3J0PSovbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgc2VuZF9jb25maWcucnRw
LnNzcmMgPSA3Nzc7CiAgIEF1ZGlvU2VuZFN0cmVhbSogc2VuZF9zdHJlYW0gPSBjYWxsLT5DcmVh
dGVBdWRpb1NlbmRTdHJlYW0oc2VuZF9jb25maWcpOwogICBFWFBFQ1RfTkUoc2VuZF9zdHJlYW0s
IG51bGxwdHIpOwpAQCAtMjYzLDcgKzI2OCw4IEBAIFRFU1QoQ2FsbFRlc3QsIFJlY3JlYXRpbmdB
dWRpb1N0cmVhbVdpdGhTYW1lU3NyY1JldXNlc1J0cFN0YXRlKSB7CiAgIENhbGxIZWxwZXIgY2Fs
bDsKIAogICBhdXRvIGNyZWF0ZV9zdHJlYW1fYW5kX2dldF9ydHBfc3RhdGUgPSBbJl0odWludDMy
X3Qgc3NyYykgewotICAgIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGNvbmZpZyhudWxscHRyKTsK
KyAgICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcoLypzZW5kX3RyYW5zcG9ydD0qL251
bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNw
b3J0PSovbnVsbHB0cik7CiAgICAgY29uZmlnLnJ0cC5zc3JjID0gc3NyYzsKICAgICBBdWRpb1Nl
bmRTdHJlYW0qIHN0cmVhbSA9IGNhbGwtPkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbShjb25maWcpOwog
ICAgIGNvbnN0IFJ0cFN0YXRlIHJ0cF9zdGF0ZSA9CkBAIC0yODQsNCArMjkwLDI3IEBAIFRFU1Qo
Q2FsbFRlc3QsIFJlY3JlYXRpbmdBdWRpb1N0cmVhbVdpdGhTYW1lU3NyY1JldXNlc1J0cFN0YXRl
KSB7CiAgIEVYUEVDVF9FUShydHBfc3RhdGUxLm1lZGlhX2hhc19iZWVuX3NlbnQsIHJ0cF9zdGF0
ZTIubWVkaWFfaGFzX2JlZW5fc2VudCk7CiB9CiAKK1RFU1QoQ2FsbFRlc3QsIFJlZ2lzdGVyTWVk
aWFUcmFuc3BvcnRCaXRyYXRlQ2FsbGJhY2tzSW5DcmVhdGVTdHJlYW0pIHsKKyAgQ2FsbEhlbHBl
ciBjYWxsOworICBNZWRpYVRyYW5zcG9ydFNldHRpbmdzIHNldHRpbmdzOworICB3ZWJydGM6OkZh
a2VNZWRpYVRyYW5zcG9ydCBmYWtlX21lZGlhX3RyYW5zcG9ydChzZXR0aW5ncyk7CisKKyAgRVhQ
RUNUX0VRKDAsIGZha2VfbWVkaWFfdHJhbnNwb3J0LnRhcmdldF9yYXRlX29ic2VydmVyc19zaXpl
KCkpOworICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcoLypzZW5kX3RyYW5zcG9ydD0q
L251bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5z
cG9ydD0qLyZmYWtlX21lZGlhX3RyYW5zcG9ydCk7CisKKyAgY2FsbC0+TWVkaWFUcmFuc3BvcnRD
aGFuZ2UoJmZha2VfbWVkaWFfdHJhbnNwb3J0KTsKKyAgQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0g
PSBjYWxsLT5DcmVhdGVBdWRpb1NlbmRTdHJlYW0oY29uZmlnKTsKKworICAvLyBXZSBnZXQgMiBz
dWJzY3JpYmVyczogb25lIHN1YnNjcmliZXIgZnJvbSBjYWxsLmNjLCBhbmQgb25lIGZyb20KKyAg
Ly8gQ2hhbm5lbFNlbmQuCisgIEVYUEVDVF9FUSgyLCBmYWtlX21lZGlhX3RyYW5zcG9ydC50YXJn
ZXRfcmF0ZV9vYnNlcnZlcnNfc2l6ZSgpKTsKKworICBjYWxsLT5EZXN0cm95QXVkaW9TZW5kU3Ry
ZWFtKHN0cmVhbSk7CisgIEVYUEVDVF9FUSgxLCBmYWtlX21lZGlhX3RyYW5zcG9ydC50YXJnZXRf
cmF0ZV9vYnNlcnZlcnNfc2l6ZSgpKTsKKworICBjYWxsLT5NZWRpYVRyYW5zcG9ydENoYW5nZShu
dWxscHRyKTsKKyAgRVhQRUNUX0VRKDAsIGZha2VfbWVkaWFfdHJhbnNwb3J0LnRhcmdldF9yYXRl
X29ic2VydmVyc19zaXplKCkpOworfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxm
YWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2Fs
bC9jYWxsZmFjdG9yeS5jYwppbmRleCBmYTdkMGZhYzY2OTYzNzZjZGNjMzljZTllYWZkNzkxYWE0
ZjVlZjE2Li5hYjA1N2JlMDI4YmI1ZmM0ZmVhN2NiMzY4MGZjNDFhMjNlMzU4NDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxm
YWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvY2FsbGZhY3RvcnkuY2MKQEAgLTMwLDcgKzMwLDcgQEAgYm9vbCBQYXJzZUNvbmZpZ1Bh
cmFtKHN0ZDo6c3RyaW5nIGV4cF9uYW1lLCBpbnQqIGZpZWxkKSB7CiAgIHJldHVybiAoc3NjYW5m
KGdyb3VwLmNfc3RyKCksICIlZCIsIGZpZWxkKSA9PSAxKTsKIH0KIAotYWJzbDo6b3B0aW9uYWw8
d2VicnRjOjpEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc+IFBhcnNlRGVncmFkYXRpb25D
b25maWcoCithYnNsOjpvcHRpb25hbDx3ZWJydGM6OkJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25m
aWc+IFBhcnNlRGVncmFkYXRpb25Db25maWcoCiAgICAgYm9vbCBzZW5kKSB7CiAgIHN0ZDo6c3Ry
aW5nIGV4cF9wcmVmaXggPSAiV2ViUlRDRmFrZU5ldHdvcmsiOwogICBpZiAoc2VuZCkgewpAQCAt
MzksNyArMzksNyBAQCBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkRlZmF1bHROZXR3b3JrU2ltdWxh
dGlvbkNvbmZpZz4gUGFyc2VEZWdyYWRhdGlvbkNvbmZpZygKICAgICBleHBfcHJlZml4ICs9ICJS
ZWNlaXZlIjsKICAgfQogCi0gIHdlYnJ0Yzo6RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmln
IGNvbmZpZzsKKyAgd2VicnRjOjpCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsK
ICAgYm9vbCBjb25maWd1cmVkID0gZmFsc2U7CiAgIGNvbmZpZ3VyZWQgfD0KICAgICAgIFBhcnNl
Q29uZmlnUGFyYW0oZXhwX3ByZWZpeCArICJEZWxheU1zIiwgJmNvbmZpZy5xdWV1ZV9kZWxheV9t
cyk7CkBAIC02MywxNSArNjMsMTUgQEAgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpEZWZhdWx0TmV0
d29ya1NpbXVsYXRpb25Db25maWc+IFBhcnNlRGVncmFkYXRpb25Db25maWcoCiAgIGNvbmZpZ3Vy
ZWQgfD0gUGFyc2VDb25maWdQYXJhbShleHBfcHJlZml4ICsgIkF2Z0J1cnN0TG9zc0xlbmd0aCIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29uZmlnLmF2Z19idXJzdF9sb3Nz
X2xlbmd0aCk7CiAgIHJldHVybiBjb25maWd1cmVkCi0gICAgICAgICAgICAgPyBhYnNsOjpvcHRp
b25hbDx3ZWJydGM6OkRlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZz4oY29uZmlnKQorICAg
ICAgICAgICAgID8gYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpCdWlsdEluTmV0d29ya0JlaGF2aW9y
Q29uZmlnPihjb25maWcpCiAgICAgICAgICAgICAgOiBhYnNsOjpudWxsb3B0OwogfQogfSAgLy8g
bmFtZXNwYWNlCiAKIENhbGwqIENhbGxGYWN0b3J5OjpDcmVhdGVDYWxsKGNvbnN0IENhbGw6OkNv
bmZpZyYgY29uZmlnKSB7Ci0gIGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6RGVmYXVsdE5ldHdvcmtT
aW11bGF0aW9uQ29uZmlnPgotICAgICAgc2VuZF9kZWdyYWRhdGlvbl9jb25maWcgPSBQYXJzZURl
Z3JhZGF0aW9uQ29uZmlnKHRydWUpOwotICBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkRlZmF1bHRO
ZXR3b3JrU2ltdWxhdGlvbkNvbmZpZz4KKyAgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpCdWlsdElu
TmV0d29ya0JlaGF2aW9yQ29uZmlnPiBzZW5kX2RlZ3JhZGF0aW9uX2NvbmZpZyA9CisgICAgICBQ
YXJzZURlZ3JhZGF0aW9uQ29uZmlnKHRydWUpOworICBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkJ1
aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWc+CiAgICAgICByZWNlaXZlX2RlZ3JhZGF0aW9uX2Nv
bmZpZyA9IFBhcnNlRGVncmFkYXRpb25Db25maWcoZmFsc2UpOwogCiAgIGlmIChzZW5kX2RlZ3Jh
ZGF0aW9uX2NvbmZpZyB8fCByZWNlaXZlX2RlZ3JhZGF0aW9uX2NvbmZpZykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9kZWdyYWRl
ZF9jYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2Fs
bC9kZWdyYWRlZF9jYWxsLmNjCmluZGV4IDgxODEzMTBlNzhjY2JjYjc3NTJlMjlmYTMyZTQzMWYw
MWQ1NDAwNTAuLmE3ZWY0MWQ0OTA1NzlkMjc1ODFmNmU3NTU2YzI5YTNhNjMyN2NiM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZGVn
cmFkZWRfY2FsbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL2RlZ3JhZGVkX2NhbGwuY2MKQEAgLTE3LDggKzE3LDggQEAKIG5hbWVzcGFjZSB3
ZWJydGMgewogRGVncmFkZWRDYWxsOjpEZWdyYWRlZENhbGwoCiAgICAgc3RkOjp1bmlxdWVfcHRy
PENhbGw+IGNhbGwsCi0gICAgYWJzbDo6b3B0aW9uYWw8RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9u
Q29uZmlnPiBzZW5kX2NvbmZpZywKLSAgICBhYnNsOjpvcHRpb25hbDxEZWZhdWx0TmV0d29ya1Np
bXVsYXRpb25Db25maWc+IHJlY2VpdmVfY29uZmlnKQorICAgIGFic2w6Om9wdGlvbmFsPEJ1aWx0
SW5OZXR3b3JrQmVoYXZpb3JDb25maWc+IHNlbmRfY29uZmlnLAorICAgIGFic2w6Om9wdGlvbmFs
PEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWc+IHJlY2VpdmVfY29uZmlnKQogICAgIDogY2xv
Y2tfKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgY2FsbF8oc3RkOjptb3ZlKGNh
bGwpKSwKICAgICAgIHNlbmRfY29uZmlnXyhzZW5kX2NvbmZpZyksCkBAIC0xODMsNiArMTgzLDgg
QEAgYm9vbCBEZWdyYWRlZENhbGw6OlNlbmRSdHAoY29uc3QgdWludDhfdCogcGFja2V0LAogICAg
IHJ0Yzo6U2VudFBhY2tldCBzZW50X3BhY2tldDsKICAgICBzZW50X3BhY2tldC5wYWNrZXRfaWQg
PSBvcHRpb25zLnBhY2tldF9pZDsKICAgICBzZW50X3BhY2tldC5zZW5kX3RpbWVfbXMgPSBjbG9j
a18tPlRpbWVJbk1pbGxpc2Vjb25kcygpOworICAgIHNlbnRfcGFja2V0LmluZm8uaW5jbHVkZWRf
aW5fZmVlZGJhY2sgPSBvcHRpb25zLmluY2x1ZGVkX2luX2ZlZWRiYWNrOworICAgIHNlbnRfcGFj
a2V0LmluZm8uaW5jbHVkZWRfaW5fYWxsb2NhdGlvbiA9IG9wdGlvbnMuaW5jbHVkZWRfaW5fYWxs
b2NhdGlvbjsKICAgICBzZW50X3BhY2tldC5pbmZvLnBhY2tldF9zaXplX2J5dGVzID0gbGVuZ3Ro
OwogICAgIHNlbnRfcGFja2V0LmluZm8ucGFja2V0X3R5cGUgPSBydGM6OlBhY2tldFR5cGU6OmtE
YXRhOwogICAgIGNhbGxfLT5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQpOwpAQCAtMjEzLDQgKzIx
NSwxMCBAQCBQYWNrZXRSZWNlaXZlcjo6RGVsaXZlcnlTdGF0dXMgRGVncmFkZWRDYWxsOjpEZWxp
dmVyUGFja2V0KAogICByZXR1cm4gc3RhdHVzOwogfQogCit2b2lkIERlZ3JhZGVkQ2FsbDo6TWVk
aWFUcmFuc3BvcnRDaGFuZ2UoCisgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3Ry
YW5zcG9ydCkgeworICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NzE5KSBXZSBzaG91bGQgYWRk
IHN1cHBvcnQgZm9yIG1lZGlhIHRyYW5zcG9ydCBoZXJlCisgIC8vIGF0IHNvbWUgcG9pbnQuCit9
CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZGVncmFkZWRfY2FsbC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9kZWdyYWRlZF9jYWxsLmgKaW5k
ZXggM2MwYjgwZGY4NmFkMzVhZTlkMjJmYTIzOTQxN2FmM2JmOWQ2OTk3Ni4uZDc4YjFkMTAyNmNm
ZThiMWUxNjU4ZGI5OGM0NzQyOTkzNmUyMzhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9kZWdyYWRlZF9jYWxsLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9kZWdyYWRlZF9jYWxs
LmgKQEAgLTI4LDggKzI4LDggQEAgY2xhc3MgRGVncmFkZWRDYWxsIDogcHVibGljIENhbGwsIHBy
aXZhdGUgVHJhbnNwb3J0LCBwcml2YXRlIFBhY2tldFJlY2VpdmVyIHsKICBwdWJsaWM6CiAgIGV4
cGxpY2l0IERlZ3JhZGVkQ2FsbCgKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsPiBjYWxsLAot
ICAgICAgYWJzbDo6b3B0aW9uYWw8RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnPiBzZW5k
X2NvbmZpZywKLSAgICAgIGFic2w6Om9wdGlvbmFsPERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNv
bmZpZz4gcmVjZWl2ZV9jb25maWcpOworICAgICAgYWJzbDo6b3B0aW9uYWw8QnVpbHRJbk5ldHdv
cmtCZWhhdmlvckNvbmZpZz4gc2VuZF9jb25maWcsCisgICAgICBhYnNsOjpvcHRpb25hbDxCdWls
dEluTmV0d29ya0JlaGF2aW9yQ29uZmlnPiByZWNlaXZlX2NvbmZpZyk7CiAgIH5EZWdyYWRlZENh
bGwoKSBvdmVycmlkZTsKIAogICAvLyBJbXBsZW1lbnRzIENhbGwuCkBAIC05MSwxMyArOTEsMTQg
QEAgY2xhc3MgRGVncmFkZWRDYWxsIDogcHVibGljIENhbGwsIHByaXZhdGUgVHJhbnNwb3J0LCBw
cml2YXRlIFBhY2tldFJlY2VpdmVyIHsKICAgQ2xvY2sqIGNvbnN0IGNsb2NrXzsKICAgY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPENhbGw+IGNhbGxfOwogCi0gIGNvbnN0IGFic2w6Om9wdGlvbmFsPERl
ZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZz4gc2VuZF9jb25maWdfOworICB2b2lkIE1lZGlh
VHJhbnNwb3J0Q2hhbmdlKE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQp
IG92ZXJyaWRlOworICBjb25zdCBhYnNsOjpvcHRpb25hbDxCdWlsdEluTmV0d29ya0JlaGF2aW9y
Q29uZmlnPiBzZW5kX2NvbmZpZ187CiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhy
ZWFkPiBzZW5kX3Byb2Nlc3NfdGhyZWFkXzsKICAgU2ltdWxhdGVkTmV0d29yayogc2VuZF9zaW11
bGF0ZWRfbmV0d29ya187CiAgIHN0ZDo6dW5pcXVlX3B0cjxGYWtlTmV0d29ya1BpcGU+IHNlbmRf
cGlwZV87CiAgIHNpemVfdCBudW1fc2VuZF9zdHJlYW1zXzsKIAotICBjb25zdCBhYnNsOjpvcHRp
b25hbDxEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc+IHJlY2VpdmVfY29uZmlnXzsKKyAg
Y29uc3QgYWJzbDo6b3B0aW9uYWw8QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZz4gcmVjZWl2
ZV9jb25maWdfOwogICBTaW11bGF0ZWROZXR3b3JrKiByZWNlaXZlX3NpbXVsYXRlZF9uZXR3b3Jr
XzsKICAgc3RkOjp1bmlxdWVfcHRyPEZha2VOZXR3b3JrUGlwZT4gcmVjZWl2ZV9waXBlXzsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL2Zha2VfbmV0d29ya19waXBlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5jYwppbmRleCBlNzAyYzFiNmY1Yzdl
ZjhiNzM4NWNhY2RkZDBjOTQ4MWQyNGEwNzE3Li4zYmQyZThmNDhiMTZhMjJjNjE0M2Y1YjY3NmVk
OGVmOTJiOWI4ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jYWxsL2Zha2VfbmV0d29ya19waXBlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZmFrZV9uZXR3b3JrX3BpcGUuY2MKQEAg
LTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJjYWxsL2NhbGwuaCIKICNpbmNsdWRlICJjYWxsL2Zh
a2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29yay5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3NfdGhyZWFkLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNs
dWRlL2Nsb2NrLmgiCiAKQEAgLTkwLDcgKzkxLDYgQEAgRmFrZU5ldHdvcmtQaXBlOjpGYWtlTmV0
d29ya1BpcGUoCiAgICAgICBkcm9wcGVkX3BhY2tldHNfKDApLAogICAgICAgc2VudF9wYWNrZXRz
XygwKSwKICAgICAgIHRvdGFsX3BhY2tldF9kZWxheV91c18oMCksCi0gICAgICBuZXh0X3Byb2Nl
c3NfdGltZV91c18oY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSksCiAgICAgICBsYXN0X2xv
Z190aW1lX3VzXyhjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSB7fQogCiBGYWtlTmV0d29y
a1BpcGU6OkZha2VOZXR3b3JrUGlwZSgKQEAgLTEwNSw3ICsxMDUsNiBAQCBGYWtlTmV0d29ya1Bp
cGU6OkZha2VOZXR3b3JrUGlwZSgKICAgICAgIGRyb3BwZWRfcGFja2V0c18oMCksCiAgICAgICBz
ZW50X3BhY2tldHNfKDApLAogICAgICAgdG90YWxfcGFja2V0X2RlbGF5X3VzXygwKSwKLSAgICAg
IG5leHRfcHJvY2Vzc190aW1lX3VzXyhjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSwKICAg
ICAgIGxhc3RfbG9nX3RpbWVfdXNfKGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkpIHt9CiAK
IEZha2VOZXR3b3JrUGlwZTo6fkZha2VOZXR3b3JrUGlwZSgpID0gZGVmYXVsdDsKQEAgLTE1NCw4
ICsxNTMsOCBAQCBib29sIEZha2VOZXR3b3JrUGlwZTo6RW5xdWV1ZVBhY2tldChydGM6OkNvcHlP
bldyaXRlQnVmZmVyIHBhY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNfcnRjcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlh
VHlwZSBtZWRpYV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6b3B0aW9uYWw8aW50NjRfdD4gcGFja2V0X3RpbWVfdXMpIHsKLSAgaW50NjRfdCB0aW1lX25v
d191cyA9IGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCk7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNy
aXQoJnByb2Nlc3NfbG9ja18pOworICBpbnQ2NF90IHRpbWVfbm93X3VzID0gY2xvY2tfLT5UaW1l
SW5NaWNyb3NlY29uZHMoKTsKICAgc2l6ZV90IHBhY2tldF9zaXplID0gcGFja2V0LnNpemUoKTsK
ICAgTmV0d29ya1BhY2tldCBuZXRfcGFja2V0KHN0ZDo6bW92ZShwYWNrZXQpLCB0aW1lX25vd191
cywgdGltZV9ub3dfdXMsIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19y
dGNwLCBtZWRpYV90eXBlLCBwYWNrZXRfdGltZV91cyk7CkBAIC0xNjksNiArMTY4LDEyIEBAIGJv
b2wgRmFrZU5ldHdvcmtQaXBlOjpFbnF1ZXVlUGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIg
cGFja2V0LAogICAgIHBhY2tldHNfaW5fZmxpZ2h0Xy5wb3BfYmFjaygpOwogICAgICsrZHJvcHBl
ZF9wYWNrZXRzXzsKICAgfQorICBpZiAobmV0d29ya19iZWhhdmlvcl8tPk5leHREZWxpdmVyeVRp
bWVVcygpKSB7CisgICAgcnRjOjpDcml0U2NvcGUgY3JpdCgmcHJvY2Vzc190aHJlYWRfbG9ja18p
OworICAgIGlmIChwcm9jZXNzX3RocmVhZF8pCisgICAgICBwcm9jZXNzX3RocmVhZF8tPldha2VV
cChudWxscHRyKTsKKyAgfQorCiAgIHJldHVybiBzZW50OwogfQogCkBAIC0yMDEsMTAgKzIwNiwx
MSBAQCBzaXplX3QgRmFrZU5ldHdvcmtQaXBlOjpTZW50UGFja2V0cygpIHsKIH0KIAogdm9pZCBG
YWtlTmV0d29ya1BpcGU6OlByb2Nlc3MoKSB7Ci0gIGludDY0X3QgdGltZV9ub3dfdXMgPSBjbG9j
a18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOworICBpbnQ2NF90IHRpbWVfbm93X3VzOwogICBzdGQ6
OnF1ZXVlPE5ldHdvcmtQYWNrZXQ+IHBhY2tldHNfdG9fZGVsaXZlcjsKICAgewogICAgIHJ0Yzo6
Q3JpdFNjb3BlIGNyaXQoJnByb2Nlc3NfbG9ja18pOworICAgIHRpbWVfbm93X3VzID0gY2xvY2tf
LT5UaW1lSW5NaWNyb3NlY29uZHMoKTsKICAgICBpZiAodGltZV9ub3dfdXMgLSBsYXN0X2xvZ190
aW1lX3VzXyA+IGtMb2dJbnRlcnZhbE1zICogMTAwMCkgewogICAgICAgaW50NjRfdCBxdWV1ZWlu
Z19kZWxheV91cyA9IDA7CiAgICAgICBpZiAoIXBhY2tldHNfaW5fZmxpZ2h0Xy5lbXB0eSgpKQpA
QCAtMjUwLDkgKzI1NiwxMSBAQCB2b2lkIEZha2VOZXR3b3JrUGlwZTo6UHJvY2VzcygpIHsKICAg
ICAgICAgLy8gYXJyaXZlZCwgZHVlIHRvIE5ldHdvcmtQcm9jZXNzIGJlaW5nIGNhbGxlZCB0b28g
bGF0ZS4gRm9yIHN0YXRzLCB1c2UKICAgICAgICAgLy8gdGhlIHRpbWUgaXQgc2hvdWxkIGhhdmUg
YmVlbiBvbiB0aGUgbGluay4KICAgICAgICAgdG90YWxfcGFja2V0X2RlbGF5X3VzXyArPSBhZGRl
ZF9kZWxheV91czsKKyAgICAgICAgKytzZW50X3BhY2tldHNfOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgKytkcm9wcGVkX3BhY2tldHNfOwogICAgICAgfQogICAgIH0KLSAgICBzZW50X3BhY2tl
dHNfICs9IHBhY2tldHNfdG9fZGVsaXZlci5zaXplKCk7CiAgIH0KIAogICBydGM6OkNyaXRTY29w
ZSBjcml0KCZjb25maWdfbG9ja18pOwpAQCAtMjYxLDEwICsyNjksNiBAQCB2b2lkIEZha2VOZXR3
b3JrUGlwZTo6UHJvY2VzcygpIHsKICAgICBwYWNrZXRzX3RvX2RlbGl2ZXIucG9wKCk7CiAgICAg
RGVsaXZlck5ldHdvcmtQYWNrZXQoJnBhY2tldCk7CiAgIH0KLSAgYWJzbDo6b3B0aW9uYWw8aW50
NjRfdD4gZGVsaXZlcnlfdXMgPSBuZXR3b3JrX2JlaGF2aW9yXy0+TmV4dERlbGl2ZXJ5VGltZVVz
KCk7Ci0gIG5leHRfcHJvY2Vzc190aW1lX3VzXyA9IGRlbGl2ZXJ5X3VzCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA/ICpkZWxpdmVyeV91cwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiB0aW1lX25vd191cyArIGtEZWZhdWx0UHJvY2Vzc0ludGVydmFsTXMgKiAxMDAwOwog
fQogCiB2b2lkIEZha2VOZXR3b3JrUGlwZTo6RGVsaXZlck5ldHdvcmtQYWNrZXQoTmV0d29ya1Bh
Y2tldCogcGFja2V0KSB7CkBAIC0yOTEsOCArMjk1LDE3IEBAIHZvaWQgRmFrZU5ldHdvcmtQaXBl
OjpEZWxpdmVyTmV0d29ya1BhY2tldChOZXR3b3JrUGFja2V0KiBwYWNrZXQpIHsKIAogaW50NjRf
dCBGYWtlTmV0d29ya1BpcGU6OlRpbWVVbnRpbE5leHRQcm9jZXNzKCkgewogICBydGM6OkNyaXRT
Y29wZSBjcml0KCZwcm9jZXNzX2xvY2tfKTsKLSAgaW50NjRfdCBkZWxheV91cyA9IG5leHRfcHJv
Y2Vzc190aW1lX3VzXyAtIGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCk7Ci0gIHJldHVybiBz
dGQ6Om1heDxpbnQ2NF90PigoZGVsYXlfdXMgKyA1MDApIC8gMTAwMCwgMCk7CisgIGFic2w6Om9w
dGlvbmFsPGludDY0X3Q+IGRlbGl2ZXJ5X3VzID0gbmV0d29ya19iZWhhdmlvcl8tPk5leHREZWxp
dmVyeVRpbWVVcygpOworICBpZiAoZGVsaXZlcnlfdXMpIHsKKyAgICBpbnQ2NF90IGRlbGF5X3Vz
ID0gKmRlbGl2ZXJ5X3VzIC0gY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsKKyAgICByZXR1
cm4gc3RkOjptYXg8aW50NjRfdD4oKGRlbGF5X3VzICsgNTAwKSAvIDEwMDAsIDApOworICB9Cisg
IHJldHVybiBrRGVmYXVsdFByb2Nlc3NJbnRlcnZhbE1zOworfQorCit2b2lkIEZha2VOZXR3b3Jr
UGlwZTo6UHJvY2Vzc1RocmVhZEF0dGFjaGVkKFByb2Nlc3NUaHJlYWQqIHByb2Nlc3NfdGhyZWFk
KSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZwcm9jZXNzX3RocmVhZF9sb2NrXyk7CisgIHByb2Nl
c3NfdGhyZWFkXyA9IHByb2Nlc3NfdGhyZWFkOwogfQogCiBib29sIEZha2VOZXR3b3JrUGlwZTo6
SGFzVHJhbnNwb3J0KCkgY29uc3QgewpAQCAtMzE2LDMxICszMjksOCBAQCB2b2lkIEZha2VOZXR3
b3JrUGlwZTo6UmVzZXRTdGF0cygpIHsKICAgdG90YWxfcGFja2V0X2RlbGF5X3VzXyA9IDA7CiB9
CiAKLXZvaWQgRmFrZU5ldHdvcmtQaXBlOjpBZGRUb1BhY2tldERyb3BDb3VudCgpIHsKLSAgcnRj
OjpDcml0U2NvcGUgY3JpdCgmcHJvY2Vzc19sb2NrXyk7Ci0gICsrZHJvcHBlZF9wYWNrZXRzXzsK
LX0KLQotdm9pZCBGYWtlTmV0d29ya1BpcGU6OkFkZFRvUGFja2V0U2VudENvdW50KGludCBjb3Vu
dCkgewotICBydGM6OkNyaXRTY29wZSBjcml0KCZwcm9jZXNzX2xvY2tfKTsKLSAgc2VudF9wYWNr
ZXRzXyArPSBjb3VudDsKLX0KLQotdm9pZCBGYWtlTmV0d29ya1BpcGU6OkFkZFRvVG90YWxEZWxh
eShpbnQgZGVsYXlfdXMpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3JpdCgmcHJvY2Vzc19sb2NrXyk7
Ci0gIHRvdGFsX3BhY2tldF9kZWxheV91c18gKz0gZGVsYXlfdXM7Ci19Ci0KIGludDY0X3QgRmFr
ZU5ldHdvcmtQaXBlOjpHZXRUaW1lSW5NaWNyb3NlY29uZHMoKSBjb25zdCB7CiAgIHJldHVybiBj
bG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOwogfQogCi1ib29sIEZha2VOZXR3b3JrUGlwZTo6
U2hvdWxkUHJvY2VzcyhpbnQ2NF90IHRpbWVfbm93X3VzKSBjb25zdCB7Ci0gIHJldHVybiB0aW1l
X25vd191cyA+PSBuZXh0X3Byb2Nlc3NfdGltZV91c187Ci19Ci0KLXZvaWQgRmFrZU5ldHdvcmtQ
aXBlOjpTZXRUaW1lVG9OZXh0UHJvY2VzcyhpbnQ2NF90IHNraXBfdXMpIHsKLSAgbmV4dF9wcm9j
ZXNzX3RpbWVfdXNfICs9IHNraXBfdXM7Ci19Ci0KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
ZmFrZV9uZXR3b3JrX3BpcGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvZmFrZV9uZXR3b3JrX3BpcGUuaAppbmRleCBmODVlODJlZmM1ZWU0NmVkYzQw
YTlkMTBlNWRjOWEyNjQyZjBmOTY2Li5iMWI0Y2VlMTRkMGU2MWQxMDE5MjdjOTRlOWI3YjRlNTgx
OGZiNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL2Zha2VfbmV0d29ya19waXBlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oCkBAIC0yMyw3ICsy
Myw2IEBACiAjaW5jbHVkZSAiYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaCIKICNpbmNsdWRl
ICJjYWxsL2NhbGwuaCIKICNpbmNsdWRlICJjYWxsL3NpbXVsYXRlZF9wYWNrZXRfcmVjZWl2ZXIu
aCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQog
I2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jcml0aWNhbHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlv
bnMuaCIKQEAgLTE0MCw2ICsxMzksNyBAQCBjbGFzcyBGYWtlTmV0d29ya1BpcGUgOiBwdWJsaWMg
d2VicnRjOjpTaW11bGF0ZWRQYWNrZXRSZWNlaXZlckludGVyZmFjZSwKICAgLy8gcGFja2V0cyBy
ZWFkeSB0byBiZSBkZWxpdmVyZWQuCiAgIHZvaWQgUHJvY2VzcygpIG92ZXJyaWRlOwogICBpbnQ2
NF90IFRpbWVVbnRpbE5leHRQcm9jZXNzKCkgb3ZlcnJpZGU7CisgIHZvaWQgUHJvY2Vzc1RocmVh
ZEF0dGFjaGVkKFByb2Nlc3NUaHJlYWQqIHByb2Nlc3NfdGhyZWFkKSBvdmVycmlkZTsKIAogICAv
LyBHZXQgc3RhdGlzdGljcy4KICAgZmxvYXQgUGVyY2VudGFnZUxvc3MoKTsKQEAgLTE1MCw5ICsx
NTAsNiBAQCBjbGFzcyBGYWtlTmV0d29ya1BpcGUgOiBwdWJsaWMgd2VicnRjOjpTaW11bGF0ZWRQ
YWNrZXRSZWNlaXZlckludGVyZmFjZSwKIAogIHByb3RlY3RlZDoKICAgdm9pZCBEZWxpdmVyUGFj
a2V0V2l0aExvY2soTmV0d29ya1BhY2tldCogcGFja2V0KTsKLSAgdm9pZCBBZGRUb1BhY2tldERy
b3BDb3VudCgpOwotICB2b2lkIEFkZFRvUGFja2V0U2VudENvdW50KGludCBjb3VudCk7Ci0gIHZv
aWQgQWRkVG9Ub3RhbERlbGF5KGludCBkZWxheV91cyk7CiAgIGludDY0X3QgR2V0VGltZUluTWlj
cm9zZWNvbmRzKCkgY29uc3Q7CiAgIGJvb2wgU2hvdWxkUHJvY2VzcyhpbnQ2NF90IHRpbWVfbm93
X3VzKSBjb25zdDsKICAgdm9pZCBTZXRUaW1lVG9OZXh0UHJvY2VzcyhpbnQ2NF90IHNraXBfdXMp
OwpAQCAtMTk3LDYgKzE5NCw5IEBAIGNsYXNzIEZha2VOZXR3b3JrUGlwZSA6IHB1YmxpYyB3ZWJy
dGM6OlNpbXVsYXRlZFBhY2tldFJlY2VpdmVySW50ZXJmYWNlLAogICAvLyBwcm9jZXNzZXMsIHN1
Y2ggYXMgdGhlIHBhY2tldCBxdWV1ZXMuCiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHByb2Nlc3Nf
bG9ja187CiAKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gcHJvY2Vzc190aHJlYWRfbG9ja187Cisg
IFByb2Nlc3NUaHJlYWQqIHByb2Nlc3NfdGhyZWFkXyBSVENfR1VBUkRFRF9CWShwcm9jZXNzX3Ro
cmVhZF9sb2NrXykgPSBudWxscHRyOworCiAgIC8vIFBhY2tldHMgIGFyZSBhZGRlZCBhdCB0aGUg
YmFjayBvZiB0aGUgZGVxdWUsIHRoaXMgbWFrZXMgdGhlIGRlcXVlIG9yZGVyZWQKICAgLy8gYnkg
aW5jcmVhc2luZyBzZW5kIHRpbWUuIFRoZSBjb21tb24gY2FzZSB3aGVuIHJlbW92aW5nIHBhY2tl
dHMgZnJvbSB0aGUKICAgLy8gZGVxdWUgaXMgcmVtb3ZpbmcgZWFybHkgcGFja2V0cywgd2hpY2gg
d2lsbCBiZSBjbG9zZSB0byB0aGUgZnJvbnQgb2YgdGhlCkBAIC0yMTAsOSArMjEwLDYgQEAgY2xh
c3MgRmFrZU5ldHdvcmtQaXBlIDogcHVibGljIHdlYnJ0Yzo6U2ltdWxhdGVkUGFja2V0UmVjZWl2
ZXJJbnRlcmZhY2UsCiAgIHNpemVfdCBkcm9wcGVkX3BhY2tldHNfIFJUQ19HVUFSREVEX0JZKHBy
b2Nlc3NfbG9ja18pOwogICBzaXplX3Qgc2VudF9wYWNrZXRzXyBSVENfR1VBUkRFRF9CWShwcm9j
ZXNzX2xvY2tfKTsKICAgaW50NjRfdCB0b3RhbF9wYWNrZXRfZGVsYXlfdXNfIFJUQ19HVUFSREVE
X0JZKHByb2Nlc3NfbG9ja18pOwotCi0gIGludDY0X3QgbmV4dF9wcm9jZXNzX3RpbWVfdXNfOwot
CiAgIGludDY0X3QgbGFzdF9sb2dfdGltZV91c187CiAKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihGYWtlTmV0d29ya1BpcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mbGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mbGV4ZmVjX3Jl
Y2VpdmVfc3RyZWFtLmNjCmluZGV4IGFiMTM4MzY4YmEwZWE5OTgxNjZjNmE5ZjkyMjI2ZTZkODRk
Mjk4ZGEuLmFiNmRkZTM3YjQ2ZDc2OWNkZDljYjZlMzFkMWNjYTM1NWZmODVkYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZmxleGZl
Y19yZWNlaXZlX3N0cmVhbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jYWxsL2ZsZXhmZWNfcmVjZWl2ZV9zdHJlYW0uY2MKQEAgLTEwLDYgKzEwLDgg
QEAKIAogI2luY2x1ZGUgImNhbGwvZmxleGZlY19yZWNlaXZlX3N0cmVhbS5oIgogCisjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBGbGV4ZmVjUmVj
ZWl2ZVN0cmVhbTo6Q29uZmlnOjpDb25maWcoVHJhbnNwb3J0KiBydGNwX3NlbmRfdHJhbnNwb3J0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9mbGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jYWxsL2ZsZXhmZWNfcmVjZWl2ZV9zdHJlYW0uaAppbmRleCBjY2Mz
MDE0MzBlODQ0YTM4OGJkY2E4MTc5ZjIyYjQ4MDA4MWNkN2QzLi45NDlhZDc0MmFhMDNmNjZkNzIx
YWI1MGI4NzVlMWJjYmFmNWIzYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2ZsZXhmZWNfcmVjZWl2ZV9zdHJlYW0uaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2ZsZXhmZWNfcmVj
ZWl2ZV9zdHJlYW0uaApAQCAtMTIsNyArMTIsNiBAQAogI2RlZmluZSBDQUxMX0ZMRVhGRUNfUkVD
RUlWRV9TVFJFQU1fSF8KIAogI2luY2x1ZGUgPHN0ZGludC5oPgotCiAjaW5jbHVkZSA8c3RyaW5n
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtMjAsNyArMTksNiBAQAogI2luY2x1ZGUgImFwaS9y
dHBfaGVhZGVycy5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAi
Y2FsbC9ydHBfcGFja2V0X3NpbmtfaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVz
LmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
cGFja2V0X3JlY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3BhY2tldF9yZWNlaXZlci5oCmluZGV4IGYwNWU0MDlkNzlkMTM2Yzk4YzA4MmQ1
MDljZjkwNmQzN2Q3NTZhMDYuLjAyYTAxNTUwZGVmNjUyMzRhODk0MTc2NjhkNzg0YzU1NWNjNmIw
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvcGFja2V0X3JlY2VpdmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9wYWNrZXRfcmVjZWl2ZXIuaApAQCAtMTYsNyArMTYsNiBAQAog
I2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgiCi0jaW5jbHVk
ZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJy
dGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmFt
cHVwX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9yYW1wdXBfdGVzdHMuY2MKaW5kZXggOGViNDUxYWMwNGY3M2E3Yjg1YWViYzgyZWZmZTQw
YjdiMTU2OTk5Yi4uOTczNTQyMWYzMGVjNTFjYjBlYmM1ZjYxZTU2ZmNlZDA1MjVkZTYwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9y
YW1wdXBfdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9yYW1wdXBfdGVzdHMuY2MKQEAgLTExLDcgKzExLDkgQEAKICNpbmNsdWRlICJj
YWxsL3JhbXB1cF90ZXN0cy5oIgogCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5o
IgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9vdXRwdXQvcnRjX2V2ZW50X2xvZ19v
dXRwdXRfZmlsZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2ZsYWdzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2Vu
Y29kZS5oIgpAQCAtMzgsNiArNDAsMTAgQEAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IEdlbmVyYXRl
U3NyY3Moc2l6ZV90IG51bV9zdHJlYW1zLCB1aW50MzJfdCBzc3JjX29mZnNldCkgewogfQogfSAg
Ly8gbmFtZXNwYWNlCiAKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHJhbXBfZHVtcF9uYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiRmlsZW5hbWUgZm9y
IGR1bXBlZCByZWNlaXZlZCBSVFAgc3RyZWFtLiIpOworCiBSYW1wVXBUZXN0ZXI6OlJhbXBVcFRl
c3RlcihzaXplX3QgbnVtX3ZpZGVvX3N0cmVhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgbnVtX2F1ZGlvX3N0cmVhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbnVtX2ZsZXhmZWNfc3RyZWFtcywKQEAgLTQ4LDcgKzU0LDYgQEAgUmFtcFVwVGVzdGVy
OjpSYW1wVXBUZXN0ZXIoc2l6ZV90IG51bV92aWRlb19zdHJlYW1zLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCByZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJl
cG9ydF9wZXJmX3N0YXRzKQogICAgIDogRW5kVG9FbmRUZXN0KHRlc3Q6OkNhbGxUZXN0OjprTG9u
Z1RpbWVvdXRNcyksCi0gICAgICBzdG9wX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAogICAgICAgY2xv
Y2tfKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgbnVtX3ZpZGVvX3N0cmVhbXNf
KG51bV92aWRlb19zdHJlYW1zKSwKICAgICAgIG51bV9hdWRpb19zdHJlYW1zXyhudW1fYXVkaW9f
c3RyZWFtcyksCkBAIC03OSwxMSArODQsMTIgQEAgUmFtcFVwVGVzdGVyOjpSYW1wVXBUZXN0ZXIo
c2l6ZV90IG51bV92aWRlb19zdHJlYW1zLAogCiBSYW1wVXBUZXN0ZXI6On5SYW1wVXBUZXN0ZXIo
KSB7fQogCi12b2lkIFJhbXBVcFRlc3Rlcjo6TW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpD
b25maWcqIGNvbmZpZykgewordm9pZCBSYW1wVXBUZXN0ZXI6Ok1vZGlmeVNlbmRlckJpdHJhdGVD
b25maWcoCisgICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykgewogICBpZiAo
c3RhcnRfYml0cmF0ZV9icHNfICE9IDApIHsKLSAgICBjb25maWctPmJpdHJhdGVfY29uZmlnLnN0
YXJ0X2JpdHJhdGVfYnBzID0gc3RhcnRfYml0cmF0ZV9icHNfOworICAgIGJpdHJhdGVfY29uZmln
LT5zdGFydF9iaXRyYXRlX2JwcyA9IHN0YXJ0X2JpdHJhdGVfYnBzXzsKICAgfQotICBjb25maWct
PmJpdHJhdGVfY29uZmlnLm1pbl9iaXRyYXRlX2JwcyA9IDEwMDAwOworICBiaXRyYXRlX2NvbmZp
Zy0+bWluX2JpdHJhdGVfYnBzID0gMTAwMDA7CiB9CiAKIHZvaWQgUmFtcFVwVGVzdGVyOjpPblZp
ZGVvU3RyZWFtc0NyZWF0ZWQoCkBAIC00NDgsOCArNDU0LDkgQEAgdm9pZCBSYW1wVXBEb3duVXBU
ZXN0ZXI6OlBvbGxTdGF0cygpIHsKICAgfSB3aGlsZSAoIXN0b3BfZXZlbnRfLldhaXQoa1BvbGxJ
bnRlcnZhbE1zKSk7CiB9CiAKLXZvaWQgUmFtcFVwRG93blVwVGVzdGVyOjpNb2RpZnlSZWNlaXZl
ckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpIHsKLSAgY29uZmlnLT5iaXRyYXRlX2Nv
bmZpZy5taW5fYml0cmF0ZV9icHMgPSAxMDAwMDsKK3ZvaWQgUmFtcFVwRG93blVwVGVzdGVyOjpN
b2RpZnlSZWNlaXZlckJpdHJhdGVDb25maWcoCisgICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRy
YXRlX2NvbmZpZykgeworICBiaXRyYXRlX2NvbmZpZy0+bWluX2JpdHJhdGVfYnBzID0gMTAwMDA7
CiB9CiAKIHN0ZDo6c3RyaW5nIFJhbXBVcERvd25VcFRlc3Rlcjo6R2V0TW9kaWZpZXJTdHJpbmco
KSBjb25zdCB7CkBAIC01NjYsNyArNTczLDIzIEBAIHZvaWQgUmFtcFVwRG93blVwVGVzdGVyOjpF
dm9sdmVUZXN0U3RhdGUoaW50IGJpdHJhdGVfYnBzLCBib29sIHN1c3BlbmRlZCkgewogCiBjbGFz
cyBSYW1wVXBUZXN0IDogcHVibGljIHRlc3Q6OkNhbGxUZXN0IHsKICBwdWJsaWM6Ci0gIFJhbXBV
cFRlc3QoKSB7fQorICBSYW1wVXBUZXN0KCkgeworICAgIHN0ZDo6c3RyaW5nIGR1bXBfbmFtZShG
TEFHX3JhbXBfZHVtcF9uYW1lKTsKKyAgICBpZiAoIWR1bXBfbmFtZS5lbXB0eSgpKSB7CisgICAg
ICBzZW5kX2V2ZW50X2xvZ18gPSBSdGNFdmVudExvZzo6Q3JlYXRlKFJ0Y0V2ZW50TG9nOjpFbmNv
ZGluZ1R5cGU6OkxlZ2FjeSk7CisgICAgICByZWN2X2V2ZW50X2xvZ18gPSBSdGNFdmVudExvZzo6
Q3JlYXRlKFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6OkxlZ2FjeSk7CisgICAgICBib29sIGV2
ZW50X2xvZ19zdGFydGVkID0KKyAgICAgICAgICBzZW5kX2V2ZW50X2xvZ18tPlN0YXJ0TG9nZ2lu
ZygKKyAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dPdXRwdXRGaWxl
PigKKyAgICAgICAgICAgICAgICAgIGR1bXBfbmFtZSArICIuc2VuZC5ydGMuZGF0IiwgUnRjRXZl
bnRMb2c6OmtVbmxpbWl0ZWRPdXRwdXQpLAorICAgICAgICAgICAgICBSdGNFdmVudExvZzo6a0lt
bWVkaWF0ZU91dHB1dCkgJiYKKyAgICAgICAgICByZWN2X2V2ZW50X2xvZ18tPlN0YXJ0TG9nZ2lu
ZygKKyAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dPdXRwdXRGaWxl
PigKKyAgICAgICAgICAgICAgICAgIGR1bXBfbmFtZSArICIucmVjdi5ydGMuZGF0IiwgUnRjRXZl
bnRMb2c6OmtVbmxpbWl0ZWRPdXRwdXQpLAorICAgICAgICAgICAgICBSdGNFdmVudExvZzo6a0lt
bWVkaWF0ZU91dHB1dCk7CisgICAgICBSVENfRENIRUNLKGV2ZW50X2xvZ19zdGFydGVkKTsKKyAg
ICB9CisgIH0KIH07CiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrU3RhcnRCaXRyYXRlQnBzID0g
NjAwMDA7CkBAIC02NjcsMTMgKzY5MCw3IEBAIFRFU1RfRihSYW1wVXBUZXN0LCBUcmFuc3BvcnRT
ZXF1ZW5jZU51bWJlclNpbXVsY2FzdFJlZFJ0eCkgewogICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9
CiAKLS8vIFRPRE8oYnVncy53ZWJydGMub3JnLzg4NzgpCi0jaWYgZGVmaW5lZChXRUJSVENfTUFD
KQotI2RlZmluZSBNQVlCRV9BdWRpb1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyIERJU0FCTEVEX0F1
ZGlvVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIKLSNlbHNlCi0jZGVmaW5lIE1BWUJFX0F1ZGlvVHJh
bnNwb3J0U2VxdWVuY2VOdW1iZXIgQXVkaW9UcmFuc3BvcnRTZXF1ZW5jZU51bWJlcgotI2VuZGlm
Ci1URVNUX0YoUmFtcFVwVGVzdCwgTUFZQkVfQXVkaW9UcmFuc3BvcnRTZXF1ZW5jZU51bWJlcikg
eworVEVTVF9GKFJhbXBVcFRlc3QsIEF1ZGlvVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKICAg
UmFtcFVwVGVzdGVyIHRlc3QoMCwgMSwgMCwgMzAwMDAwLCAxMDAwMCwKICAgICAgICAgICAgICAg
ICAgICAgUnRwRXh0ZW5zaW9uOjprVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJVcmksIGZhbHNlLCBm
YWxzZSwKICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yYW1wdXBfdGVzdHMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmFtcHVwX3Rlc3Rz
LmgKaW5kZXggNmNjNjVjZTJhMjI0MzQ4OGVjOTFhNWRlM2MzMzdhZTMxNWY5MDk5Ny4uYjdkNGFm
NWY1YTg4OThmYWZhMGI2YjNhMTM0NTcwNmNiODJjOTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yYW1wdXBfdGVzdHMuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JhbXB1cF90
ZXN0cy5oCkBAIC02Nyw3ICs2Nyw3IEBAIGNsYXNzIFJhbXBVcFRlc3RlciA6IHB1YmxpYyB0ZXN0
OjpFbmRUb0VuZFRlc3QgewogCiAgIHJ0Yzo6RXZlbnQgc3RvcF9ldmVudF87CiAgIENsb2NrKiBj
b25zdCBjbG9ja187Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBmb3J3YXJkX3Ry
YW5zcG9ydF9jb25maWdfOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGZvcndhcmRf
dHJhbnNwb3J0X2NvbmZpZ187CiAgIGNvbnN0IHNpemVfdCBudW1fdmlkZW9fc3RyZWFtc187CiAg
IGNvbnN0IHNpemVfdCBudW1fYXVkaW9fc3RyZWFtc187CiAgIGNvbnN0IHNpemVfdCBudW1fZmxl
eGZlY19zdHJlYW1zXzsKQEAgLTgzLDcgKzgzLDcgQEAgY2xhc3MgUmFtcFVwVGVzdGVyIDogcHVi
bGljIHRlc3Q6OkVuZFRvRW5kVGVzdCB7CiAgIHR5cGVkZWYgc3RkOjptYXA8dWludDMyX3QsIHVp
bnQzMl90PiBTc3JjTWFwOwogICBjbGFzcyBWaWRlb1N0cmVhbUZhY3Rvcnk7CiAKLSAgdm9pZCBN
b2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSBvdmVycmlkZTsKKyAg
dm9pZCBNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0
ZV9jb25maWcpIG92ZXJyaWRlOwogICB2b2lkIE9uVmlkZW9TdHJlYW1zQ3JlYXRlZCgKICAgICAg
IFZpZGVvU2VuZFN0cmVhbSogc2VuZF9zdHJlYW0sCiAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxW
aWRlb1JlY2VpdmVTdHJlYW0qPiYgcmVjZWl2ZV9zdHJlYW1zKSBvdmVycmlkZTsKQEAgLTE0Miw3
ICsxNDIsNyBAQCBjbGFzcyBSYW1wVXBEb3duVXBUZXN0ZXIgOiBwdWJsaWMgUmFtcFVwVGVzdGVy
IHsKICAgICBrVHJhbnNpdGlvblRvTmV4dFN0YXRlLAogICB9OwogCi0gIHZvaWQgTW9kaWZ5UmVj
ZWl2ZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKTsKKyAgdm9pZCBNb2RpZnlSZWNl
aXZlckJpdHJhdGVDb25maWcoQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykgb3Zl
cnJpZGU7CiAKICAgc3RkOjpzdHJpbmcgR2V0TW9kaWZpZXJTdHJpbmcoKSBjb25zdDsKICAgaW50
IEdldEV4cGVjdGVkSGlnaEJpdHJhdGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0
b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3Jl
Y2VpdmVfdGltZV9jYWxjdWxhdG9yLmNjCmluZGV4IDE2YzZhNDNjYzNmZmMwNTQ5MjkxNmExOTQ2
MDRhZjVkYzdmYzFmZjIuLmI3MDU2NzMyZThiNjVhODgyMmM5MWFjNWZkNTZkNTFjOTQxNmQzOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5jYwpAQCAt
OSw1OSArOSwxMTIgQEAKICAqLwogCiAjaW5jbHVkZSAiY2FsbC9yZWNlaXZlX3RpbWVfY2FsY3Vs
YXRvci5oIgorCisjaW5jbHVkZSA8c3RyaW5nPgorCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2Vy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
ZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewotdXNpbmcg
Ojp3ZWJydGM6OmZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWU7CiB1c2luZyA6OndlYnJ0Yzo6Zmll
bGRfdHJpYWw6OklzRW5hYmxlZDsKIAotY29uc3QgY2hhciBrQndlUmVjZWl2ZVRpbWVDb3JyZWN0
aW9uW10gPSAiV2ViUlRDLUJ3ZVJlY2VpdmVUaW1lQ29ycmVjdGlvbiI7Citjb25zdCBjaGFyIGtC
d2VSZWNlaXZlVGltZUNvcnJlY3Rpb25bXSA9ICJXZWJSVEMtQndlLVJlY2VpdmVUaW1lRml4IjsK
IH0gIC8vIG5hbWVzcGFjZQogCi1SZWNlaXZlVGltZUNhbGN1bGF0b3I6OlJlY2VpdmVUaW1lQ2Fs
Y3VsYXRvcihpbnQ2NF90IG1pbl9kZWx0YV9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgbWF4X2RlbHRhX2RpZmZfbXMpCi0gICAgOiBtaW5f
ZGVsdGFfdXNfKG1pbl9kZWx0YV9tcyAqIDEwMDApLAotICAgICAgbWF4X2RlbHRhX2RpZmZfdXNf
KG1heF9kZWx0YV9kaWZmX21zICogMTAwMCkge30KK1JlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZp
Zzo6UmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnKCkKKyAgICA6IG1heF9wYWNrZXRfdGltZV9y
ZXBhaXIoIm1heHJlcCIsIFRpbWVEZWx0YTo6bXMoMjAwMCkpLAorICAgICAgc3RhbGxfdGhyZXNo
b2xkKCJzdGFsbCIsIFRpbWVEZWx0YTo6bXMoNSkpLAorICAgICAgdG9sZXJhbmNlKCJ0b2wiLCBU
aW1lRGVsdGE6Om1zKDEpKSwKKyAgICAgIG1heF9zdGFsbCgibWF4c3RhbGwiLCBUaW1lRGVsdGE6
OnNlY29uZHMoNSkpIHsKKyAgc3RkOjpzdHJpbmcgdHJpYWxfc3RyaW5nID0KKyAgICAgIGZpZWxk
X3RyaWFsOjpGaW5kRnVsbE5hbWUoa0J3ZVJlY2VpdmVUaW1lQ29ycmVjdGlvbik7CisgIFBhcnNl
RmllbGRUcmlhbCgKKyAgICAgIHsmbWF4X3BhY2tldF90aW1lX3JlcGFpciwgJnN0YWxsX3RocmVz
aG9sZCwgJnRvbGVyYW5jZSwgJm1heF9zdGFsbH0sCisgICAgICB0cmlhbF9zdHJpbmcpOworfQor
UmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnOjpSZWNlaXZlVGltZUNhbGN1bGF0b3JDb25maWco
CisgICAgY29uc3QgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnJikgPSBkZWZhdWx0OworUmVj
ZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnOjp+UmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnKCkg
PSBkZWZhdWx0OworCitSZWNlaXZlVGltZUNhbGN1bGF0b3I6OlJlY2VpdmVUaW1lQ2FsY3VsYXRv
cigpCisgICAgOiBjb25maWdfKFJlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZygpKSB7fQogCiBz
dGQ6OnVuaXF1ZV9wdHI8UmVjZWl2ZVRpbWVDYWxjdWxhdG9yPgogUmVjZWl2ZVRpbWVDYWxjdWxh
dG9yOjpDcmVhdGVGcm9tRmllbGRUcmlhbCgpIHsKICAgaWYgKCFJc0VuYWJsZWQoa0J3ZVJlY2Vp
dmVUaW1lQ29ycmVjdGlvbikpCiAgICAgcmV0dXJuIG51bGxwdHI7Ci0gIGludCBtaW4sIG1heDsK
LSAgaWYgKHNzY2FuZihGaW5kRnVsbE5hbWUoa0J3ZVJlY2VpdmVUaW1lQ29ycmVjdGlvbikuY19z
dHIoKSwgIkVuYWJsZWQsJWQsJWQiLAotICAgICAgICAgICAgICZtaW4sICZtYXgpICE9IDIpIHsK
LSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJJbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJz
IHByb3ZpZGVkLiI7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0gIH0KLSAgcmV0dXJuIGFic2w6Om1h
a2VfdW5pcXVlPFJlY2VpdmVUaW1lQ2FsY3VsYXRvcj4obWluLCBtYXgpOworICByZXR1cm4gYWJz
bDo6bWFrZV91bmlxdWU8UmVjZWl2ZVRpbWVDYWxjdWxhdG9yPigpOwogfQogCi1pbnQ2NF90IFJl
Y2VpdmVUaW1lQ2FsY3VsYXRvcjo6UmVjb25jaWxlUmVjZWl2ZVRpbWVzKGludDY0X3QgcGFja2V0
X3RpbWVfdXNfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IHNhZmVfdGltZV91c18pIHsKLSAgaWYgKCFyZWNlaXZlX3RpbWVfb2Zm
c2V0X3VzXykgewotICAgIHJlY2VpdmVfdGltZV9vZmZzZXRfdXNfID0gc2FmZV90aW1lX3VzXyAt
IHBhY2tldF90aW1lX3VzXzsKLSAgfSBlbHNlIHsKLSAgICBpbnQ2NF90IHNhZmVfZGVsdGFfdXMg
PSBzYWZlX3RpbWVfdXNfIC0gbGFzdF9zYWZlX3RpbWVfdXNfOwotICAgIGludDY0X3QgcGFja2V0
X2RlbHRhX3VzXyA9IHBhY2tldF90aW1lX3VzXyAtIGxhc3RfcGFja2V0X3RpbWVfdXNfOwotICAg
IGludDY0X3QgZGVsdGFfZGlmZiA9IHBhY2tldF9kZWx0YV91c18gLSBzYWZlX2RlbHRhX3VzOwot
ICAgIC8vIFBhY2tldCB0aW1lIHNob3VsZCBub3QgZGVjcmVhc2Ugc2lnbmlmaWNhbnRseSwgYSBs
YXJnZSBkZWNyZWFzZSBpbmRpY2F0ZXMKLSAgICAvLyBhIHJlc2V0IG9mIHRoZSBwYWNrZXQgdGlt
ZSBjbG9jayBhbmQgd2Ugc2hvdWxkIHJlc2V0IHRoZSBvZmZlc3QKLSAgICAvLyBwYXJhbWV0ZXIu
IFRoZSBzYWZlIHJlZmVyZW5jZSB0aW1lIGNhbiBpbmNyZWFzZSBpbiBsYXJnZSBqdW1wcyBpZiB0
aGUKLSAgICAvLyB0aHJlYWQgbWVhc3VyaW5nIGl0IGlzIGJhY2tncm91bmRlZCBmb3IgbG9uZ2Vy
IHBlcmlvZHMuIEJ1dCBpZiB0aGUgcGFja2V0Ci0gICAgLy8gdGltZSBpbmNyZWFzZXMgc2lnbmlm
aWNhbnRseSBtb3JlIHRoYW4gdGhlIHNhZmUgdGltZSwgaXQgaW5kaWNhdGVzIGEKLSAgICAvLyBj
bG9jayByZXNldCBhbmQgd2Ugc2hvdWxkIHJlc2V0IHRoZSBvZmZzZXQuCi0KLSAgICBpZiAocGFj
a2V0X2RlbHRhX3VzXyA8IG1pbl9kZWx0YV91c18gfHwgZGVsdGFfZGlmZiA+IG1heF9kZWx0YV9k
aWZmX3VzXykgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVjZWl2ZWQgYSBjbG9j
ayBqdW1wIG9mICIgPDwgZGVsdGFfZGlmZgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
IHJlc2V0dGluZyBvZmZzZXQiOwotICAgICAgcmVjZWl2ZV90aW1lX29mZnNldF91c18gPSBzYWZl
X3RpbWVfdXNfIC0gcGFja2V0X3RpbWVfdXNfOworaW50NjRfdCBSZWNlaXZlVGltZUNhbGN1bGF0
b3I6OlJlY29uY2lsZVJlY2VpdmVUaW1lcyhpbnQ2NF90IHBhY2tldF90aW1lX3VzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHN5
c3RlbV90aW1lX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90IHNhZmVfdGltZV91cykgeworICBpbnQ2NF90IHN0YWxsX3RpbWVf
dXMgPSBzeXN0ZW1fdGltZV91cyAtIHBhY2tldF90aW1lX3VzOworICBpZiAodG90YWxfc3lzdGVt
X3RpbWVfcGFzc2VkX3VzXyA8IGNvbmZpZ18uc3RhbGxfdGhyZXNob2xkLT51cygpKSB7CisgICAg
c3RhbGxfdGltZV91cyA9IHJ0Yzo6U2FmZU1pbihzdGFsbF90aW1lX3VzLCBjb25maWdfLm1heF9z
dGFsbC0+dXMoKSk7CisgIH0KKyAgaW50NjRfdCBjb3JyZWN0ZWRfdGltZV91cyA9IHNhZmVfdGlt
ZV91cyAtIHN0YWxsX3RpbWVfdXM7CisKKyAgaWYgKGxhc3RfcGFja2V0X3RpbWVfdXNfID09IC0x
ICYmIHN0YWxsX3RpbWVfdXMgPCAwKSB7CisgICAgc3RhdGljX2Nsb2NrX29mZnNldF91c18gPSBz
dGFsbF90aW1lX3VzOworICAgIGNvcnJlY3RlZF90aW1lX3VzICs9IHN0YXRpY19jbG9ja19vZmZz
ZXRfdXNfOworICB9IGVsc2UgaWYgKGxhc3RfcGFja2V0X3RpbWVfdXNfID4gMCkgeworICAgIC8v
IEFsbCByZXBhaXJzIGRlcGVuZCBvbiB2YXJpYWJsZXMgYmVpbmcgaW50aWFsaXplZAorICAgIGlu
dDY0X3QgcGFja2V0X3RpbWVfZGVsdGFfdXMgPSBwYWNrZXRfdGltZV91cyAtIGxhc3RfcGFja2V0
X3RpbWVfdXNfOworICAgIGludDY0X3Qgc3lzdGVtX3RpbWVfZGVsdGFfdXMgPSBzeXN0ZW1fdGlt
ZV91cyAtIGxhc3Rfc3lzdGVtX3RpbWVfdXNfOworICAgIGludDY0X3Qgc2FmZV90aW1lX2RlbHRh
X3VzID0gc2FmZV90aW1lX3VzIC0gbGFzdF9zYWZlX3RpbWVfdXNfOworCisgICAgLy8gUmVwYWly
IGJhY2t3YXJkcyBjbG9jayByZXNldHMgZHVyaW5nIGluaXRpYWwgc3RhbGwuIEluIHRoaXMgY2Fz
ZSwgdGhlCisgICAgLy8gcmVzZXQgaXMgb2JzZXJ2ZWQgb25seSBpbiBwYWNrZXQgdGltZSBidXQg
bmV2ZXIgaW4gc3lzdGVtIHRpbWUuCisgICAgaWYgKHN5c3RlbV90aW1lX2RlbHRhX3VzIDwgMCkK
KyAgICAgIHRvdGFsX3N5c3RlbV90aW1lX3Bhc3NlZF91c18gKz0gY29uZmlnXy5zdGFsbF90aHJl
c2hvbGQtPnVzKCk7CisgICAgZWxzZQorICAgICAgdG90YWxfc3lzdGVtX3RpbWVfcGFzc2VkX3Vz
XyArPSBzeXN0ZW1fdGltZV9kZWx0YV91czsKKyAgICBpZiAocGFja2V0X3RpbWVfZGVsdGFfdXMg
PCAwICYmCisgICAgICAgIHRvdGFsX3N5c3RlbV90aW1lX3Bhc3NlZF91c18gPCBjb25maWdfLnN0
YWxsX3RocmVzaG9sZC0+dXMoKSkgeworICAgICAgc3RhdGljX2Nsb2NrX29mZnNldF91c18gLT0g
cGFja2V0X3RpbWVfZGVsdGFfdXM7CisgICAgfQorICAgIGNvcnJlY3RlZF90aW1lX3VzICs9IHN0
YXRpY19jbG9ja19vZmZzZXRfdXNfOworCisgICAgLy8gRGV0ZWN0IHJlc2V0cyBpbmJldHdlZW4g
Y2xvY2sgcmVhZGluZ3MgaW4gc29ja2V0IGFuZCBhcHAuCisgICAgYm9vbCBmb3J3YXJkX2Nsb2Nr
X3Jlc2V0ID0KKyAgICAgICAgY29ycmVjdGVkX3RpbWVfdXMgKyBjb25maWdfLnRvbGVyYW5jZS0+
dXMoKSA8IGxhc3RfY29ycmVjdGVkX3RpbWVfdXNfOworICAgIGJvb2wgb2J2aW91c19iYWNrd2Fy
ZF9jbG9ja19yZXNldCA9IHN5c3RlbV90aW1lX3VzIDwgcGFja2V0X3RpbWVfdXM7CisKKyAgICAv
LyBIYXJkZXIgY2FzZSB3aXRoIGJhY2t3YXJkIGNsb2NrIHJlc2V0IGR1cmluZyBzdGFsbCwgdGhl
IHJlc2V0IGJlaW5nCisgICAgLy8gc21hbGxlciB0aGFuIHRoZSBzdGFsbC4gQ29tcGVuc2F0ZSB0
aHJvdWdob3V0IHRoZSBzdGFsbC4KKyAgICBib29sIHNtYWxsX2JhY2t3YXJkX2Nsb2NrX3Jlc2V0
ID0KKyAgICAgICAgIW9idmlvdXNfYmFja3dhcmRfY2xvY2tfcmVzZXQgJiYKKyAgICAgICAgc2Fm
ZV90aW1lX2RlbHRhX3VzID4gc3lzdGVtX3RpbWVfZGVsdGFfdXMgKyBjb25maWdfLnRvbGVyYW5j
ZS0+dXMoKTsKKyAgICBib29sIHN0YWxsX3N0YXJ0ID0KKyAgICAgICAgcGFja2V0X3RpbWVfZGVs
dGFfdXMgPj0gMCAmJgorICAgICAgICBzeXN0ZW1fdGltZV9kZWx0YV91cyA+IHBhY2tldF90aW1l
X2RlbHRhX3VzICsgY29uZmlnXy50b2xlcmFuY2UtPnVzKCk7CisgICAgYm9vbCBzdGFsbF9pc19v
dmVyID0gc2FmZV90aW1lX2RlbHRhX3VzID4gY29uZmlnXy5zdGFsbF90aHJlc2hvbGQtPnVzKCk7
CisgICAgYm9vbCBwYWNrZXRfdGltZV9jYXVnaHRfdXAgPQorICAgICAgICBwYWNrZXRfdGltZV9k
ZWx0YV91cyA8IDAgJiYgc3lzdGVtX3RpbWVfZGVsdGFfdXMgPj0gMDsKKyAgICBpZiAoc3RhbGxf
c3RhcnQgJiYgc21hbGxfYmFja3dhcmRfY2xvY2tfcmVzZXQpCisgICAgICBzbWFsbF9yZXNldF9k
dXJpbmdfc3RhbGxfID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChzdGFsbF9pc19vdmVyIHx8IHBhY2tl
dF90aW1lX2NhdWdodF91cCkKKyAgICAgIHNtYWxsX3Jlc2V0X2R1cmluZ19zdGFsbF8gPSBmYWxz
ZTsKKworICAgIC8vIElmIHJlc2V0cyBhcmUgZGV0ZWN0ZWQsIGFkdmFuY2UgdGltZSBieSAoY2Fw
cGVkKSBwYWNrZXQgdGltZSBpbmNyZWFzZS4KKyAgICBpZiAoZm9yd2FyZF9jbG9ja19yZXNldCB8
fCBvYnZpb3VzX2JhY2t3YXJkX2Nsb2NrX3Jlc2V0IHx8CisgICAgICAgIHNtYWxsX3Jlc2V0X2R1
cmluZ19zdGFsbF8pIHsKKyAgICAgIGNvcnJlY3RlZF90aW1lX3VzID0gbGFzdF9jb3JyZWN0ZWRf
dGltZV91c18gKworICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlNhZmVDbGFtcChwYWNr
ZXRfdGltZV9kZWx0YV91cywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uZmlnXy5tYXhfcGFja2V0X3RpbWVfcmVwYWlyLT51cygpKTsKICAgICB9CiAgIH0K
LSAgbGFzdF9wYWNrZXRfdGltZV91c18gPSBwYWNrZXRfdGltZV91c187Ci0gIGxhc3Rfc2FmZV90
aW1lX3VzXyA9IHNhZmVfdGltZV91c187Ci0gIHJldHVybiBwYWNrZXRfdGltZV91c18gKyAqcmVj
ZWl2ZV90aW1lX29mZnNldF91c187CisKKyAgbGFzdF9jb3JyZWN0ZWRfdGltZV91c18gPSBjb3Jy
ZWN0ZWRfdGltZV91czsKKyAgbGFzdF9wYWNrZXRfdGltZV91c18gPSBwYWNrZXRfdGltZV91czsK
KyAgbGFzdF9zeXN0ZW1fdGltZV91c18gPSBzeXN0ZW1fdGltZV91czsKKyAgbGFzdF9zYWZlX3Rp
bWVfdXNfID0gc2FmZV90aW1lX3VzOworICByZXR1cm4gY29ycmVjdGVkX3RpbWVfdXM7CiB9CisK
IH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1l
X2NhbGN1bGF0b3IuaAppbmRleCBhODIxN2NkMTAxMjU5ZjhiMzgxYWRiMDgyMjc5ZDgzNzVkYzIx
ZjE0Li4yNjlkNGVmOTEwMDkwODRkMjBkYzA0ZjAwMTAyNDI2MDgwYzQyNjdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVf
dGltZV9jYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5oCkBAIC0xMCwxMyArMTAsMjQg
QEAKICNpZm5kZWYgQ0FMTF9SRUNFSVZFX1RJTUVfQ0FMQ1VMQVRPUl9IXwogI2RlZmluZSBDQUxM
X1JFQ0VJVkVfVElNRV9DQUxDVUxBVE9SX0hfCiAKLSNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfdW5pdHMuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKK3N0cnVjdCBSZWNlaXZlVGltZUNhbGN1bGF0b3JDb25maWcgeworICBSZWNl
aXZlVGltZUNhbGN1bGF0b3JDb25maWcoKTsKKyAgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmln
KGNvbnN0IFJlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZyYpOworICBSZWNlaXZlVGltZUNhbGN1
bGF0b3JDb25maWcmIG9wZXJhdG9yPShjb25zdCBSZWNlaXZlVGltZUNhbGN1bGF0b3JDb25maWcm
KSA9CisgICAgICBkZWZhdWx0OworICB+UmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnKCk7Cisg
IEZpZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiBtYXhfcGFja2V0X3RpbWVfcmVwYWlyOwor
ICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4gc3RhbGxfdGhyZXNob2xkOworICBGaWVs
ZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4gdG9sZXJhbmNlOworICBGaWVsZFRyaWFsUGFyYW1l
dGVyPFRpbWVEZWx0YT4gbWF4X3N0YWxsOworfTsKKwogLy8gVGhlIHJlY2VpdmUgdGltZSBjYWxj
dWxhdG9yIHNlcnZlcyB0aGUgcHVycG9zZSBvZiBjb21iaW5pbmcgcGFja2V0IHRpbWUKIC8vIHN0
YW1wcyB3aXRoIGEgc2FmZWx5IGluY3JlbWVudGFsIGNsb2NrLiBUaGlzIGFzc3VtZXMgdGhhdCB0
aGUgcGFja2V0IHRpbWUKIC8vIHN0YW1wcyBhcmUgYmFzZWQgb24gbG93ZXIgbGF5ZXIgdGltZXN0
YW1wcyB0aGF0IGhhdmUgbW9yZSBhY2N1cmF0ZSB0aW1lCkBAIC0yOCwyMCArMzksMjAgQEAgbmFt
ZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBSZWNlaXZlVGltZUNhbGN1bGF0b3IgewogIHB1YmxpYzoK
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZWNlaXZlVGltZUNhbGN1bGF0b3I+IENyZWF0ZUZy
b21GaWVsZFRyaWFsKCk7Ci0gIC8vIFRoZSBtaW4gZGVsdGEgaXMgdXNlZCB0byBjb3JyZWN0IGZv
ciBqdW1wcyBiYWNrd2FyZHMgaW4gdGltZSwgdG8gYWxsb3cgc29tZQotICAvLyBwYWNrZXQgcmVv
cmRlcmluZyBhIHNtYWxsIG5lZ2F0aXZlIHZhbHVlIGlzIGFwcHJvcHJpYXRlIHRvIHVzZS4gVGhl
IG1heAotICAvLyBkZWx0YSBkaWZmZXJlbmNlIGlzIHVzZWQgYXMgbWFyZ2luIHdoZW4gZGV0ZWN0
aW5nIHdoZW4gcGFja2V0IHRpbWUKLSAgLy8gaW5jcmVhc2VzIG1vcmUgdGhhbiB0aGUgc2FmZSBj
bG9jay4gVGhpcyBzaG91bGQgYmUgbGFyZ2VyIHRoYW4gdGhlIGxhcmdlc3QKLSAgLy8gZXhwZWN0
ZWQgc3lzbXRlbSBpbmR1Y2VkIGRlbGF5IGluIHRoZSBzYWZlIGNsb2NrIHRpbWVzdGFtcC4KLSAg
UmVjZWl2ZVRpbWVDYWxjdWxhdG9yKGludDY0X3QgbWluX2RlbHRhX21zLCBpbnQ2NF90IG1heF9k
ZWx0YV9kaWZmX21zKTsKLSAgaW50NjRfdCBSZWNvbmNpbGVSZWNlaXZlVGltZXMoaW50NjRfdCBw
YWNrZXRfdGltZV91c18sIGludDY0X3Qgc2FmZV90aW1lX3VzXyk7CisgIFJlY2VpdmVUaW1lQ2Fs
Y3VsYXRvcigpOworICBpbnQ2NF90IFJlY29uY2lsZVJlY2VpdmVUaW1lcyhpbnQ2NF90IHBhY2tl
dF90aW1lX3VzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBzeXN0
ZW1fdGltZV91c18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qgc2Fm
ZV90aW1lX3VzXyk7CiAKICBwcml2YXRlOgotICBjb25zdCBpbnQ2NF90IG1pbl9kZWx0YV91c187
Ci0gIGNvbnN0IGludDY0X3QgbWF4X2RlbHRhX2RpZmZfdXNfOwotICBhYnNsOjpvcHRpb25hbDxp
bnQ2NF90PiByZWNlaXZlX3RpbWVfb2Zmc2V0X3VzXzsKLSAgaW50NjRfdCBsYXN0X3BhY2tldF90
aW1lX3VzXyA9IDA7Ci0gIGludDY0X3QgbGFzdF9zYWZlX3RpbWVfdXNfID0gMDsKKyAgaW50NjRf
dCBsYXN0X2NvcnJlY3RlZF90aW1lX3VzXyA9IC0xOworICBpbnQ2NF90IGxhc3RfcGFja2V0X3Rp
bWVfdXNfID0gLTE7CisgIGludDY0X3QgbGFzdF9zeXN0ZW1fdGltZV91c18gPSAtMTsKKyAgaW50
NjRfdCBsYXN0X3NhZmVfdGltZV91c18gPSAtMTsKKyAgaW50NjRfdCB0b3RhbF9zeXN0ZW1fdGlt
ZV9wYXNzZWRfdXNfID0gMDsKKyAgaW50NjRfdCBzdGF0aWNfY2xvY2tfb2Zmc2V0X3VzXyA9IDA7
CisgIGludDY0X3Qgc21hbGxfcmVzZXRfZHVyaW5nX3N0YWxsXyA9IGZhbHNlOworICBSZWNlaXZl
VGltZUNhbGN1bGF0b3JDb25maWcgY29uZmlnXzsKIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CiAjZW5kaWYgIC8vIENBTExfUkVDRUlWRV9USU1FX0NBTENVTEFUT1JfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90
aW1lX2NhbGN1bGF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVfdGltZV9jYWxjdWxhdG9yX3VuaXR0ZXN0LmNjCmlu
ZGV4IDkyZDVhMjc5ZWFlMTEyNDJiNzg2Yjc3YzE1ZmU0MjVlZGZhMjliYTIuLjM4ZWY1NGVjZTc5
NDExMmNjOWRhZDgxNWMyNGI0OTUxM2M3MGQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3Jf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvcl91bml0dGVzdC5jYwpAQCAtMTAsNjUgKzEw
LDIzNyBAQAogCiAjaW5jbHVkZSAiY2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5oIgogCisj
aW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHR1cGxl
PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgor
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9yYW5k
b20uaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJ0ZXN0L2d0
ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewogbmFtZXNwYWNl
IHsKIAotaW50NjRfdCBSZWNvbmNpbGVNcyhSZWNlaXZlVGltZUNhbGN1bGF0b3IqIGNhbGMsCi0g
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfbXMsCi0gICAgICAgICAgICAg
ICAgICAgIGludDY0X3Qgc2FmZV90aW1lX21zKSB7Ci0gIHJldHVybiBjYWxjLT5SZWNvbmNpbGVS
ZWNlaXZlVGltZXMocGFja2V0X3RpbWVfbXMgKiAxMDAwLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNhZmVfdGltZV9tcyAqIDEwMDApIC8KLSAgICAgICAgIDEwMDA7Ci19
Ci19ICAvLyBuYW1lc3BhY2UKK2NsYXNzIEVtdWxhdGVkQ2xvY2sgeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgRW11bGF0ZWRDbG9jayhpbnQgc2VlZCwgZmxvYXQgZHJpZnQgPSAwLjBmKQorICAgICAg
OiByYW5kb21fKHNlZWQpLCBjbG9ja191c18ocmFuZG9tXy5SYW5kPHVpbnQzMl90PigpKSwgZHJp
ZnRfKGRyaWZ0KSB7fQorICB2aXJ0dWFsIH5FbXVsYXRlZENsb2NrKCkgPSBkZWZhdWx0OworICBp
bnQ2NF90IEdldENsb2NrVXMoKSBjb25zdCB7IHJldHVybiBjbG9ja191c187IH0KIAotVEVTVChS
ZWNlaXZlVGltZUNhbGN1bGF0b3JUZXN0LCBVc2VzU21hbGxlckluY3JlbWVudHMpIHsKLSAgaW50
NjRfdCBrTWluRGVsdGFNcyA9IC0yMDsKLSAgaW50NjRfdCBrTWF4RGVsdGFEaWZmTXMgPSAxMDA7
Ci0gIFJlY2VpdmVUaW1lQ2FsY3VsYXRvciBjYWxjKGtNaW5EZWx0YU1zLCBrTWF4RGVsdGFEaWZm
TXMpOwotICAvLyBJbml0aWFsaXplIG9mZnNldC4KLSAgUmVjb25jaWxlTXMoJmNhbGMsIDEwMDAw
LCAyMDAwMCk7Ci0KLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDAxMCwgMjAxMDAp
LCAyMDAxMCk7Ci0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAwMjAsIDIwMTAwKSwg
MjAwMjApOwotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMDMwLCAyMDEwMCksIDIw
MDMwKTsKLQotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMTEwLCAyMDIwMCksIDIw
MTEwKTsKLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDEyMCwgMjAyMDApLCAyMDEy
MCk7Ci0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAxMzAsIDIwMjAwKSwgMjAxMzAp
OwotCi0gIC8vIFNtYWxsIGp1bXBzIGJhY2t3YXJkcyBhcmUgbGV0IHRyb3VnaCwgdGhleSBtaWdo
dCBiZSBkdWUgdG8gcmVvcmRlcmluZy4KLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAx
MDEyMCwgMjAyMDApLCAyMDEyMCk7Ci0gIC8vIFRoZSBzYWZlIGNsb2NrIG1pZ2h0IGJlIHNtYWxs
ZXIgdGhhbiB0aGUgcGFja2V0IGNsb2NrLgotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMs
IDEwMjEwLCAyMDIwMCksIDIwMjEwKTsKLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAx
MDI0MCwgMjAyMDApLCAyMDI0MCk7Ci19CisgcHJvdGVjdGVkOgorICBpbnQ2NF90IFVwZGF0ZUNs
b2NrKGludDY0X3QgdGltZV91cykgeworICAgIGlmICghbGFzdF9xdWVyeV91c18pCisgICAgICBs
YXN0X3F1ZXJ5X3VzXyA9IHRpbWVfdXM7CisgICAgaW50NjRfdCBza2lwX3VzID0gdGltZV91cyAt
ICpsYXN0X3F1ZXJ5X3VzXzsKKyAgICBhY2N1bXVsYXRlZF9kcmlmdF91c18gKz0gc2tpcF91cyAq
IGRyaWZ0XzsKKyAgICBpbnQ2NF90IGRyaWZ0X2NvcnJlY3Rpb25fdXMgPSBzdGF0aWNfY2FzdDxp
bnQ2NF90PihhY2N1bXVsYXRlZF9kcmlmdF91c18pOworICAgIGFjY3VtdWxhdGVkX2RyaWZ0X3Vz
XyAtPSBkcmlmdF9jb3JyZWN0aW9uX3VzOworICAgIGNsb2NrX3VzXyArPSBza2lwX3VzICsgZHJp
ZnRfY29ycmVjdGlvbl91czsKKyAgICBsYXN0X3F1ZXJ5X3VzXyA9IHRpbWVfdXM7CisgICAgcmV0
dXJuIHNraXBfdXM7CisgIH0KKyAgUmFuZG9tIHJhbmRvbV87CiAKLVRFU1QoUmVjZWl2ZVRpbWVD
YWxjdWxhdG9yVGVzdCwgQ29ycmVjdHNKdW1wcykgewotICBpbnQ2NF90IGtNaW5EZWx0YU1zID0g
LTIwOwotICBpbnQ2NF90IGtNYXhEZWx0YURpZmZNcyA9IDEwMDsKLSAgUmVjZWl2ZVRpbWVDYWxj
dWxhdG9yIGNhbGMoa01pbkRlbHRhTXMsIGtNYXhEZWx0YURpZmZNcyk7Ci0gIC8vIEluaXRpYWxp
emUgb2Zmc2V0LgotICBSZWNvbmNpbGVNcygmY2FsYywgMTAwMDAsIDIwMDAwKTsKLQotICBFWFBF
Q1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMDEwLCAyMDEwMCksIDIwMDEwKTsKLSAgRVhQRUNU
X0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDAyMCwgMjAxMDApLCAyMDAyMCk7Ci0gIEVYUEVDVF9F
UShSZWNvbmNpbGVNcygmY2FsYywgMTAwMzAsIDIwMTAwKSwgMjAwMzApOwotCi0gIC8vIEp1bXAg
Zm9yd2FyZCBpbiB0aW1lLgotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMjQwLCAy
MDIwMCksIDIwMjAwKTsKLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDI1MCwgMjAy
MDApLCAyMDIxMCk7Ci0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAyNjAsIDIwMjAw
KSwgMjAyMjApOwotCi0gIC8vIEp1bXAgYmFja3dhcmQgaW4gdGltZS4KLSAgRVhQRUNUX0VRKFJl
Y29uY2lsZU1zKCZjYWxjLCAxMDIzMCwgMjAzMDApLCAyMDMwMCk7Ci0gIEVYUEVDVF9FUShSZWNv
bmNpbGVNcygmY2FsYywgMTAyNDAsIDIwMzAwKSwgMjAzMTApOwotICBFWFBFQ1RfRVEoUmVjb25j
aWxlTXMoJmNhbGMsIDEwMjUwLCAyMDMwMCksIDIwMzIwKTsKLX0KKyBwcml2YXRlOgorICBpbnQ2
NF90IGNsb2NrX3VzXzsKKyAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9xdWVyeV91c187
CisgIGZsb2F0IGRyaWZ0XzsKKyAgZmxvYXQgYWNjdW11bGF0ZWRfZHJpZnRfdXNfID0gMDsKK307
CiAKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0CitjbGFzcyBFbXVsYXRlZE1vbm90b25lb3VzQ2xvY2sg
OiBwdWJsaWMgRW11bGF0ZWRDbG9jayB7CisgcHVibGljOgorICBleHBsaWNpdCBFbXVsYXRlZE1v
bm90b25lb3VzQ2xvY2soaW50IHNlZWQpIDogRW11bGF0ZWRDbG9jayhzZWVkKSB7fQorICB+RW11
bGF0ZWRNb25vdG9uZW91c0Nsb2NrKCkgPSBkZWZhdWx0OworCisgIGludDY0X3QgUXVlcnkoaW50
NjRfdCB0aW1lX3VzKSB7CisgICAgaW50NjRfdCBza2lwX3VzID0gVXBkYXRlQ2xvY2sodGltZV91
cyk7CisKKyAgICAvLyBJbiBhIHN0YWxsCisgICAgaWYgKHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNf
ID4gMCkgeworICAgICAgaWYgKEdldENsb2NrVXMoKSA+IHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNf
KSB7CisgICAgICAgIHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNfID0gMDsKKyAgICAgICAgcmV0dXJu
IEdldENsb2NrVXMoKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBzdGFsbF9yZWNv
dmVyeV90aW1lX3VzXzsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDaGVjayBpZiB3ZSBlbnRl
ciBhIHN0YWxsCisgICAgZm9yIChpbnQgayA9IDA7IGsgPCBza2lwX3VzOyArK2spIHsKKyAgICAg
IGlmIChyYW5kb21fLlJhbmQ8ZG91YmxlPigpIDwga0NoYW5jZU9mU3RhbGxQZXJVcykgeworICAg
ICAgICBpbnQ2NF90IHN0YWxsX2R1cmF0aW9uX3VzID0KKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludDY0X3Q+KHJhbmRvbV8uUmFuZDxmbG9hdD4oKSAqIGtNYXhTdGFsbER1cmF0aW9uVXMpOwor
ICAgICAgICBzdGFsbF9yZWNvdmVyeV90aW1lX3VzXyA9IEdldENsb2NrVXMoKSArIHN0YWxsX2R1
cmF0aW9uX3VzOworICAgICAgICByZXR1cm4gc3RhbGxfcmVjb3ZlcnlfdGltZV91c187CisgICAg
ICB9CisgICAgfQorICAgIHJldHVybiBHZXRDbG9ja1VzKCk7CisgIH0KKworICB2b2lkIEZvcmNl
U3RhbGxVcygpIHsKKyAgICBpbnQ2NF90IHN0YWxsX2R1cmF0aW9uX3VzID0KKyAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4ocmFuZG9tXy5SYW5kPGZsb2F0PigpICoga01heFN0YWxsRHVyYXRp
b25Vcyk7CisgICAgc3RhbGxfcmVjb3ZlcnlfdGltZV91c18gPSBHZXRDbG9ja1VzKCkgKyBzdGFs
bF9kdXJhdGlvbl91czsKKyAgfQorCisgIGJvb2wgU3RhbGxlZCgpIGNvbnN0IHsgcmV0dXJuIHN0
YWxsX3JlY292ZXJ5X3RpbWVfdXNfID4gMDsgfQorCisgIGludDY0X3QgR2V0UmVtYWluaW5nU3Rh
bGwoaW50NjRfdCB0aW1lX3VzKSBjb25zdCB7CisgICAgcmV0dXJuIHN0YWxsX3JlY292ZXJ5X3Rp
bWVfdXNfID4gMCA/IHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNfIC0gR2V0Q2xvY2tVcygpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDA7CisgIH0KKworICBjb25zdCBp
bnQ2NF90IGtNYXhTdGFsbER1cmF0aW9uVXMgPSBydGM6OmtOdW1NaWNyb3NlY3NQZXJTZWM7CisK
KyBwcml2YXRlOgorICBjb25zdCBmbG9hdCBrQ2hhbmNlT2ZTdGFsbFBlclVzID0gNWUtNmY7Cisg
IGludDY0X3Qgc3RhbGxfcmVjb3ZlcnlfdGltZV91c18gPSAwOworfTsKIAorY2xhc3MgRW11bGF0
ZWROb25Nb25vdG9uZW91c0Nsb2NrIDogcHVibGljIEVtdWxhdGVkQ2xvY2sgeworIHB1YmxpYzoK
KyAgRW11bGF0ZWROb25Nb25vdG9uZW91c0Nsb2NrKGludCBzZWVkLCBpbnQ2NF90IGR1cmF0aW9u
X3VzLCBmbG9hdCBkcmlmdCA9IDApCisgICAgICA6IEVtdWxhdGVkQ2xvY2soc2VlZCwgZHJpZnQp
IHsKKyAgICBQcmVnZW5lcmF0ZShkdXJhdGlvbl91cyk7CisgIH0KKyAgfkVtdWxhdGVkTm9uTW9u
b3RvbmVvdXNDbG9jaygpID0gZGVmYXVsdDsKKworICB2b2lkIFByZWdlbmVyYXRlKGludDY0X3Qg
ZHVyYXRpb25fdXMpIHsKKyAgICBpbnQ2NF90IHRpbWVfc2luY2VfcmVzZXRfdXMgPSBrTWluVGlt
ZUJldHdlZW5SZXNldHNVczsKKyAgICBpbnQ2NF90IGNsb2NrX29mZnNldF91cyA9IDA7CisgICAg
Zm9yIChpbnQ2NF90IHRpbWVfdXMgPSAwOyB0aW1lX3VzIDwgZHVyYXRpb25fdXM7IHRpbWVfdXMg
Kz0ga1Jlc29sdXRpb25VcykgeworICAgICAgaW50NjRfdCBza2lwX3VzID0gVXBkYXRlQ2xvY2so
dGltZV91cyk7CisgICAgICB0aW1lX3NpbmNlX3Jlc2V0X3VzICs9IHNraXBfdXM7CisgICAgICBp
bnQ2NF90IHJlc2V0X3VzID0gMDsKKyAgICAgIGlmICh0aW1lX3NpbmNlX3Jlc2V0X3VzID49IGtN
aW5UaW1lQmV0d2VlblJlc2V0c1VzKSB7CisgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgc2tp
cF91czsgKytrKSB7CisgICAgICAgICAgaWYgKHJhbmRvbV8uUmFuZDxkb3VibGU+KCkgPCBrQ2hh
bmNlT2ZSZXNldFBlclVzKSB7CisgICAgICAgICAgICByZXNldF91cyA9IHN0YXRpY19jYXN0PGlu
dDY0X3Q+KDIgKiByYW5kb21fLlJhbmQ8ZmxvYXQ+KCkgKgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrTWF4QWJzUmVzZXRVcykgLQorICAgICAgICAgICAgICAg
ICAgICAgICBrTWF4QWJzUmVzZXRVczsKKyAgICAgICAgICAgIGNsb2NrX29mZnNldF91cyArPSBy
ZXNldF91czsKKyAgICAgICAgICAgIHRpbWVfc2luY2VfcmVzZXRfdXMgPSAwOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBwcmVnZW5l
cmF0ZWRfY2xvY2tfLmVtcGxhY2VfYmFjayhHZXRDbG9ja1VzKCkgKyBjbG9ja19vZmZzZXRfdXMp
OworICAgICAgcmVzZXRzX3VzXy5lbXBsYWNlX2JhY2socmVzZXRfdXMpOworICAgIH0KKyAgfQor
CisgIGludDY0X3QgUXVlcnkoaW50NjRfdCB0aW1lX3VzKSB7CisgICAgc2l6ZV90IGl4U3RhcnQg
PQorICAgICAgICAobGFzdF9yZXNldF9xdWVyeV90aW1lX3VzXyArIChrUmVzb2x1dGlvblVzID4+
IDEpKSAvIGtSZXNvbHV0aW9uVXMgKyAxOworICAgIHNpemVfdCBpeEVuZCA9ICh0aW1lX3VzICsg
KGtSZXNvbHV0aW9uVXMgPj4gMSkpIC8ga1Jlc29sdXRpb25VczsKKyAgICBpZiAoaXhFbmQgPj0g
cHJlZ2VuZXJhdGVkX2Nsb2NrXy5zaXplKCkpCisgICAgICByZXR1cm4gLTE7CisgICAgbGFzdF9y
ZXNldF9zaXplX3VzXyA9IDA7CisgICAgZm9yIChzaXplX3QgaXggPSBpeFN0YXJ0OyBpeCA8PSBp
eEVuZDsgKytpeCkgeworICAgICAgaWYgKHJlc2V0c191c19baXhdICE9IDApIHsKKyAgICAgICAg
bGFzdF9yZXNldF9zaXplX3VzXyA9IHJlc2V0c191c19baXhdOworICAgICAgfQorICAgIH0KKyAg
ICBsYXN0X3Jlc2V0X3F1ZXJ5X3RpbWVfdXNfID0gdGltZV91czsKKyAgICByZXR1cm4gcHJlZ2Vu
ZXJhdGVkX2Nsb2NrX1tpeEVuZF07CisgIH0KKworICBib29sIFdhc1Jlc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbGFzdF9yZXNldF9zaXplX3VzXyAhPSAwOyB9CisgIGJvb2wgV2FzTmVnYXRpdmVSZXNl
dCgpIGNvbnN0IHsgcmV0dXJuIGxhc3RfcmVzZXRfc2l6ZV91c18gPCAwOyB9CisgIGludDY0X3Qg
R2V0TGFzdFJlc2V0VXMoKSBjb25zdCB7IHJldHVybiBsYXN0X3Jlc2V0X3NpemVfdXNfOyB9CisK
KyBwcml2YXRlOgorICBjb25zdCBmbG9hdCBrQ2hhbmNlT2ZSZXNldFBlclVzID0gMWUtNmY7Cisg
IGNvbnN0IGludDY0X3Qga01heEFic1Jlc2V0VXMgPSBydGM6OmtOdW1NaWNyb3NlY3NQZXJTZWM7
CisgIGNvbnN0IGludDY0X3Qga01pblRpbWVCZXR3ZWVuUmVzZXRzVXMgPSAzICogcnRjOjprTnVt
TWljcm9zZWNzUGVyU2VjOworICBjb25zdCBpbnQ2NF90IGtSZXNvbHV0aW9uVXMgPSBydGM6OmtO
dW1NaWNyb3NlY3NQZXJNaWxsaXNlYzsKKyAgaW50NjRfdCBsYXN0X3Jlc2V0X3F1ZXJ5X3RpbWVf
dXNfID0gMDsKKyAgaW50NjRfdCBsYXN0X3Jlc2V0X3NpemVfdXNfID0gMDsKKyAgc3RkOjp2ZWN0
b3I8aW50NjRfdD4gcHJlZ2VuZXJhdGVkX2Nsb2NrXzsKKyAgc3RkOjp2ZWN0b3I8aW50NjRfdD4g
cmVzZXRzX3VzXzsKK307CisKK1RFU1QoQ2xvY2tSZXBhaXIsIE5vQ2xvY2tEcmlmdCkgeworICBj
b25zdCBpbnQga1NlZWRzID0gMTA7CisgIGNvbnN0IGludCBrRmlyc3RTZWVkID0gMTsKKyAgY29u
c3QgaW50NjRfdCBrUnVudGltZVVzID0gMTAgKiBydGM6OmtOdW1NaWNyb3NlY3NQZXJTZWM7Cisg
IGNvbnN0IGZsb2F0IGtEcmlmdCA9IDAuMGY7CisgIGNvbnN0IGludDY0X3Qga01heFBhY2tldElu
dGVyYXJyaXZhbFVzID0gNTAgKiBydGM6OmtOdW1NaWNyb3NlY3NQZXJNaWxsaXNlYzsKKyAgZm9y
IChpbnQgc2VlZCA9IGtGaXJzdFNlZWQ7IHNlZWQgPCBrU2VlZHMgKyBrRmlyc3RTZWVkOyArK3Nl
ZWQpIHsKKyAgICBFbXVsYXRlZE1vbm90b25lb3VzQ2xvY2sgbW9ub3RvbmVfY2xvY2soc2VlZCk7
CisgICAgRW11bGF0ZWROb25Nb25vdG9uZW91c0Nsb2NrIG5vbl9tb25vdG9uZV9jbG9jaygKKyAg
ICAgICAgc2VlZCArIDEsIGtSdW50aW1lVXMgKyBydGM6OmtOdW1NaWNyb3NlY3NQZXJTZWMsIGtE
cmlmdCk7CisgICAgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yIHJlY2VwdGlvbl90aW1lX3RyYWNrZXI7
CisgICAgaW50NjRfdCBjb3JyZWN0ZWRfY2xvY2tfMCA9IDA7CisgICAgaW50NjRfdCByZXNldF9k
dXJpbmdfc3RhbGxfdG9sX3VzID0gMDsKKyAgICBib29sIGluaXRpYWxfY2xvY2tfc3RhbGwgPSB0
cnVlOworICAgIGludDY0X3QgYWNjdW11bGF0ZWRfdXBwZXJfYm91bmRfdG9sZXJhbmNlX3VzID0g
MDsKKyAgICBpbnQ2NF90IGFjY3VtdWxhdGVkX2xvd2VyX2JvdW5kX3RvbGVyYW5jZV91cyA9IDA7
CisgICAgUmFuZG9tIHJhbmRvbSgxKTsKKyAgICBtb25vdG9uZV9jbG9jay5Gb3JjZVN0YWxsVXMo
KTsKKyAgICBpbnQ2NF90IGxhc3RfdGltZV91cyA9IDA7CisgICAgYm9vbCBhZGRfdG9sZXJhbmNl
X29uX25leHRfcGFja2V0ID0gZmFsc2U7CisgICAgaW50NjRfdCBtb25vdG9uZV9ub2lzZV91cyA9
IDEwMDA7CisKKyAgICBmb3IgKGludDY0X3QgdGltZV91cyA9IDA7IHRpbWVfdXMgPCBrUnVudGlt
ZVVzOworICAgICAgICAgdGltZV91cyArPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyYW5kb20uUmFu
ZDxmbG9hdD4oKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtN
YXhQYWNrZXRJbnRlcmFycml2YWxVcykpIHsKKyAgICAgIGludDY0X3Qgc29ja2V0X3RpbWVfdXMg
PSBub25fbW9ub3RvbmVfY2xvY2suUXVlcnkodGltZV91cyk7CisgICAgICBpbnQ2NF90IG1vbm90
b25lX3VzID0gbW9ub3RvbmVfY2xvY2suUXVlcnkodGltZV91cykgKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIgKiByYW5kb20uUmFuZDxmbG9hdD4oKSAqIG1vbm90b25lX25vaXNlX3Vz
IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25vdG9uZV9ub2lzZV91czsKKyAgICAg
IGludDY0X3Qgc3lzdGVtX3RpbWVfdXMgPSBub25fbW9ub3RvbmVfY2xvY2suUXVlcnkoCisgICAg
ICAgICAgdGltZV91cyArIG1vbm90b25lX2Nsb2NrLkdldFJlbWFpbmluZ1N0YWxsKHRpbWVfdXMp
KTsKKworICAgICAgaW50NjRfdCBjb3JyZWN0ZWRfY2xvY2tfdXMgPSByZWNlcHRpb25fdGltZV90
cmFja2VyLlJlY29uY2lsZVJlY2VpdmVUaW1lcygKKyAgICAgICAgICBzb2NrZXRfdGltZV91cywg
c3lzdGVtX3RpbWVfdXMsIG1vbm90b25lX3VzKTsKKyAgICAgIGlmICh0aW1lX3VzID09IDApCisg
ICAgICAgIGNvcnJlY3RlZF9jbG9ja18wID0gY29ycmVjdGVkX2Nsb2NrX3VzOworCisgICAgICBp
ZiAoYWRkX3RvbGVyYW5jZV9vbl9uZXh0X3BhY2tldCkKKyAgICAgICAgYWNjdW11bGF0ZWRfbG93
ZXJfYm91bmRfdG9sZXJhbmNlX3VzIC09ICh0aW1lX3VzIC0gbGFzdF90aW1lX3VzKTsKKworICAg
ICAgLy8gUGVyZmVjdCByZXBhaXIgY2Fubm90IGJlIGFjaGl2ZXZlZCBpZiBub24tbW9ub3RvbmUg
Y2xvY2sgcmVzZXRzIGR1cmluZworICAgICAgLy8gYSBtb25vdG9uZSBjbG9jayBzdGFsbC4KKyAg
ICAgIGFkZF90b2xlcmFuY2Vfb25fbmV4dF9wYWNrZXQgPSBmYWxzZTsKKyAgICAgIGlmIChtb25v
dG9uZV9jbG9jay5TdGFsbGVkKCkgJiYgbm9uX21vbm90b25lX2Nsb2NrLldhc1Jlc2V0KCkpIHsK
KyAgICAgICAgcmVzZXRfZHVyaW5nX3N0YWxsX3RvbF91cyA9CisgICAgICAgICAgICBzdGQ6Om1h
eChyZXNldF9kdXJpbmdfc3RhbGxfdG9sX3VzLCB0aW1lX3VzIC0gbGFzdF90aW1lX3VzKTsKKyAg
ICAgICAgaWYgKG5vbl9tb25vdG9uZV9jbG9jay5XYXNOZWdhdGl2ZVJlc2V0KCkpIHsKKyAgICAg
ICAgICBhZGRfdG9sZXJhbmNlX29uX25leHRfcGFja2V0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoaW5pdGlhbF9jbG9ja19zdGFsbCAmJiAhbm9uX21vbm90b25lX2Nsb2NrLldhc05l
Z2F0aXZlUmVzZXQoKSkgeworICAgICAgICAgIC8vIFBvc2l0aXZlIHJlc2V0cyBkdXJpbmcgYW4g
aW5pdGlhbCBjbG9jayBzdGFsbCBjYW5ub3QgYmUgcmVwYWlyZWQKKyAgICAgICAgICAvLyBhbmQg
ZXJyb3Igd2lsbCBwcm9wYWdhdGUgdGhyb3VnaCByZXN0IG9mIHRyYWNlLgorICAgICAgICAgIGFj
Y3VtdWxhdGVkX3VwcGVyX2JvdW5kX3RvbGVyYW5jZV91cyArPQorICAgICAgICAgICAgICBzdGQ6
OmFicyhub25fbW9ub3RvbmVfY2xvY2suR2V0TGFzdFJlc2V0VXMoKSk7CisgICAgICAgIH0KKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHJlc2V0X2R1cmluZ19zdGFsbF90b2xfdXMgPSAwOworICAg
ICAgICBpbml0aWFsX2Nsb2NrX3N0YWxsID0gZmFsc2U7CisgICAgICB9CisgICAgICBpbnQ2NF90
IGVyciA9IGNvcnJlY3RlZF9jbG9ja191cyAtIGNvcnJlY3RlZF9jbG9ja18wIC0gdGltZV91czsK
KworICAgICAgLy8gUmVzZXRzIGR1cmluZyBzdGFsbHMgbWF5IGxlYWQgdG8gc21hbGwgZXJyb3Jz
IHRlbXBvcmFyaWx5LgorICAgICAgaW50NjRfdCBsb3dlcl90b2xfdXMgPSBhY2N1bXVsYXRlZF9s
b3dlcl9ib3VuZF90b2xlcmFuY2VfdXMgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNldF9kdXJpbmdfc3RhbGxfdG9sX3VzIC0gbW9ub3RvbmVfbm9pc2VfdXMgLQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyICogcnRjOjprTnVtTWljcm9zZWNzUGVyTWlsbGlzZWM7Cisg
ICAgICBFWFBFQ1RfR0UoZXJyLCBsb3dlcl90b2xfdXMpOworICAgICAgaW50NjRfdCB1cHBlcl90
b2xfdXMgPSBhY2N1bXVsYXRlZF91cHBlcl9ib3VuZF90b2xlcmFuY2VfdXMgKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb25vdG9uZV9ub2lzZV91cyArCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIgKiBydGM6OmtOdW1NaWNyb3NlY3NQZXJNaWxsaXNlYzsKKyAgICAgIEVY
UEVDVF9MRShlcnIsIHVwcGVyX3RvbF91cyk7CisKKyAgICAgIGxhc3RfdGltZV91cyA9IHRpbWVf
dXM7CisgICAgfQorICB9Cit9Cit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSB0ZXN0
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0Y3BfZGVtdXhlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRjcF9kZW11eGVyLmNjCmluZGV4
IGQ0NDFjMDViM2RiODViYzNhNmU5OWI4NGQ0OTg3MTdjNGU3ZTg2ODYuLmEwNmQyYTQ2MDRjNDAz
ODA3YzBhMjhhNmRmNjgyNTgzMjE0MzhiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRjcF9kZW11eGVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRjcF9kZW11eGVyLmNj
CkBAIC0xMyw3ICsxMyw2IEBACiAjaW5jbHVkZSAiYXBpL3J0cF9oZWFkZXJzLmgiCiAjaW5jbHVk
ZSAiY2FsbC9ydGNwX3BhY2tldF9zaW5rX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImNhbGwvcnRw
X3J0Y3BfZGVtdXhlcl9oZWxwZXIuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NhbGwvcnRjcF9kZW11eGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydGNwX2RlbXV4ZXJfdW5pdHRlc3Qu
Y2MKaW5kZXggODA4MzY0YWNjNWU4NDM0Njc0YmMxYjI5ZjQwNWNlN2Y3MmFjZTc2YS4uNmNlYjdh
YjVkOWQ2OWU5MzdmMTQ2OGEwOGQyMDUwYjE3YjgwMTA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydGNwX2RlbXV4ZXJfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2Fs
bC9ydGNwX2RlbXV4ZXJfdW5pdHRlc3QuY2MKQEAgLTE2LDcgKzE2LDYgQEAKICNpbmNsdWRlICJh
YnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKICNpbmNs
dWRlICJjYWxsL3J0Y3BfcGFja2V0X3NpbmtfaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiY29tbW9u
X3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ieWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hcnJh
eXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2NvbmZpZy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2NvbmZp
Zy5jYwppbmRleCAxNDQ1YzI1NTJlNDkyOTQ4ZTYyNjk5OGQ3ZTBiYzhmYWJmNzkxNGIwLi5jY2U3
OGFkNjRjN2Q5MTEzMGZmMjJlOWI0MDU0M2MzMmQ5NDYzNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9jb25maWcuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfY29u
ZmlnLmNjCkBAIC0xMCw2ICsxMCw5IEBACiAKICNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcuaCIK
IAorI2luY2x1ZGUgPGNzdGRpbnQ+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CkBAIC02MCw2ICs2Myw3IEBAIHN0ZDo6c3RyaW5nIFJ0cENvbmZpZzo6VG9TdHJpbmco
KSBjb25zdCB7CiAgICAgIDw8IChydGNwX21vZGUgPT0gUnRjcE1vZGU6OmtDb21wb3VuZCA/ICJS
dGNwTW9kZTo6a0NvbXBvdW5kIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAiUnRjcE1vZGU6OmtSZWR1Y2VkU2l6ZSIpOwogICBzcyA8PCAiLCBtYXhfcGFja2V0
X3NpemU6ICIgPDwgbWF4X3BhY2tldF9zaXplOworICBzcyA8PCAiLCBleHRtYXAtYWxsb3ctbWl4
ZWQ6ICIgPDwgKGV4dG1hcF9hbGxvd19taXhlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICBzcyA8
PCAiLCBleHRlbnNpb25zOiBbIjsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHRlbnNpb25z
LnNpemUoKTsgKytpKSB7CiAgICAgc3MgPDwgZXh0ZW5zaW9uc1tpXS5Ub1N0cmluZygpOwpAQCAt
MTA4LDE4ICsxMTIsNCBAQCBzdGQ6OnN0cmluZyBSdHBDb25maWc6OlJ0eDo6VG9TdHJpbmcoKSBj
b25zdCB7CiAgIHNzIDw8ICd9JzsKICAgcmV0dXJuIHNzLnN0cigpOwogfQotCi1SdGNwQ29uZmln
OjpSdGNwQ29uZmlnKCkgPSBkZWZhdWx0OwotUnRjcENvbmZpZzo6UnRjcENvbmZpZyhjb25zdCBS
dGNwQ29uZmlnJikgPSBkZWZhdWx0OwotUnRjcENvbmZpZzo6flJ0Y3BDb25maWcoKSA9IGRlZmF1
bHQ7Ci0KLXN0ZDo6c3RyaW5nIFJ0Y3BDb25maWc6OlRvU3RyaW5nKCkgY29uc3QgewotICBjaGFy
IGJ1ZlsxMDI0XTsKLSAgcnRjOjpTaW1wbGVTdHJpbmdCdWlsZGVyIHNzKGJ1Zik7Ci0gIHNzIDw8
ICJ7dmlkZW9fcmVwb3J0X2ludGVydmFsX21zOiAiIDw8IHZpZGVvX3JlcG9ydF9pbnRlcnZhbF9t
czsKLSAgc3MgPDwgIiwgYXVkaW9fcmVwb3J0X2ludGVydmFsX21zOiAiIDw8IGF1ZGlvX3JlcG9y
dF9pbnRlcnZhbF9tczsKLSAgc3MgPDwgJ30nOwotICByZXR1cm4gc3Muc3RyKCk7Ci19Ci0KIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfY29uZmlnLmgKaW5kZXggOGY4ZDAzYTNh
ODI0MmE2YjE5ZjVjNWY2NWJkMWMyYjYzODZiNmEwNS4uOTdhZTk1MTc2NWMyYmQyM2U0NTJhMWZk
MTQwZTExNWEzNTg2OWJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfY29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfY29uZmlnLmgKQEAgLTExLDYgKzExLDgg
QEAKICNpZm5kZWYgQ0FMTF9SVFBfQ09ORklHX0hfCiAjZGVmaW5lIENBTExfUlRQX0NPTkZJR19I
XwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8
c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtNzQsNiArNzYsOSBAQCBzdHJ1Y3QgUnRw
Q29uZmlnIHsKICAgLy8gTWF4IFJUUCBwYWNrZXQgc2l6ZSBkZWxpdmVyZWQgdG8gc2VuZCB0cmFu
c3BvcnQgZnJvbSBWaWRlb0VuZ2luZS4KICAgc2l6ZV90IG1heF9wYWNrZXRfc2l6ZSA9IGtEZWZh
dWx0TWF4UGFja2V0U2l6ZTsKIAorICAvLyBDb3JyZXNwb25kcyB0byB0aGUgU0RQIGF0dHJpYnV0
ZSBleHRtYXAtYWxsb3ctbWl4ZWQuCisgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkID0gZmFsc2U7
CisKICAgLy8gUlRQIGhlYWRlciBleHRlbnNpb25zIHRvIHVzZSBmb3IgdGhpcyBzZW5kIHN0cmVh
bS4KICAgc3RkOjp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiBleHRlbnNpb25zOwogCkBAIC0xMjksMTcg
KzEzNCw1IEBAIHN0cnVjdCBSdHBDb25maWcgewogICAvLyBSVENQIENOQU1FLCBzZWUgUkZDIDM1
NTAuCiAgIHN0ZDo6c3RyaW5nIGNfbmFtZTsKIH07Ci0KLXN0cnVjdCBSdGNwQ29uZmlnIHsKLSAg
UnRjcENvbmZpZygpOwotICBSdGNwQ29uZmlnKGNvbnN0IFJ0Y3BDb25maWcmKTsKLSAgflJ0Y3BD
b25maWcoKTsKLSAgc3RkOjpzdHJpbmcgVG9TdHJpbmcoKSBjb25zdDsKLQotICAvLyBUaW1lIGlu
dGVydmFsIGJldHdlZW4gUlRDUCByZXBvcnQgZm9yIHZpZGVvCi0gIGludDY0X3QgdmlkZW9fcmVw
b3J0X2ludGVydmFsX21zID0gMTAwMDsKLSAgLy8gVGltZSBpbnRlcnZhbCBiZXR3ZWVuIFJUQ1Ag
cmVwb3J0IGZvciBhdWRpbwotICBpbnQ2NF90IGF1ZGlvX3JlcG9ydF9pbnRlcnZhbF9tcyA9IDUw
MDA7Ci19OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogI2VuZGlmICAvLyBDQUxMX1JUUF9DT05G
SUdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvcnRwX2RlbXV4ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9kZW11eGVyX3VuaXR0ZXN0LmNjCmluZGV4IGI1
ZWRlM2NkMDNhMGNlNWY3ZGZkYTgxNWFjODkxMDAyNzFiNmQ1MzYuLjNiODIwMGU3ODE5ODg5YTUx
NjNjOWNjZGQwOGE3Y2ZhNzYxMjdmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2RlbXV4ZXJfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfZGVtdXhl
cl91bml0dGVzdC5jYwpAQCAtMTcsNyArMTcsNiBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgogI2luY2x1ZGUgImNhbGwvc3NyY19iaW5kaW5nX29ic2VydmVyLmgiCiAjaW5jbHVk
ZSAiY2FsbC90ZXN0L21vY2tfcnRwX3BhY2tldF9zaW5rX2ludGVyZmFjZS5oIgotI2luY2x1ZGUg
ImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9k
dWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
cnRwX3BheWxvYWRfcGFyYW1zLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMuY2MKaW5kZXggZmZiZGExYTJkYmUzYTMy
ODY2OTE4NGU2MmFmNjJjOTdiZGFlYjgzNi4uMmEzMmVlZjc4MzMyZTgwMzNlZGJlOGZkZGViMTFi
ODgwOGIzNGRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMuY2MKQEAg
LTE0NCw2ICsxNDQsOCBAQCBSVFBWaWRlb0hlYWRlciBSdHBQYXlsb2FkUGFyYW1zOjpHZXRSdHBW
aWRlb0hlYWRlcigKICAgcnRwX3ZpZGVvX2hlYWRlci5yb3RhdGlvbiA9IGltYWdlLnJvdGF0aW9u
XzsKICAgcnRwX3ZpZGVvX2hlYWRlci5jb250ZW50X3R5cGUgPSBpbWFnZS5jb250ZW50X3R5cGVf
OwogICBydHBfdmlkZW9faGVhZGVyLnBsYXlvdXRfZGVsYXkgPSBpbWFnZS5wbGF5b3V0X2RlbGF5
XzsKKyAgcnRwX3ZpZGVvX2hlYWRlci53aWR0aCA9IGltYWdlLl9lbmNvZGVkV2lkdGg7CisgIHJ0
cF92aWRlb19oZWFkZXIuaGVpZ2h0ID0gaW1hZ2UuX2VuY29kZWRIZWlnaHQ7CiAKICAgU2V0Vmlk
ZW9UaW1pbmcoaW1hZ2UsICZydHBfdmlkZW9faGVhZGVyLnZpZGVvX3RpbWluZyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRw
X3BheWxvYWRfcGFyYW1zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3BhcmFtcy5oCmluZGV4IGY2ODI5Y2FjZTVjNjI5ZTU1YTJl
YzljZDVhNDcxY2Q0OWE1NWRlODkuLmI5MWJmZTRiMmM1ZGIwMGUwMmYzOWMxOWI5MmE3MDU2NDZh
YTBkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvcnRwX3BheWxvYWRfcGFyYW1zLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMuaApAQCAtMTYsNyAr
MTYsNiBAQAogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCiAj
aW5jbHVkZSAiY2FsbC9ydHBfY29uZmlnLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAv
LyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3ZpZGVvX2hlYWRlci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3BhcmFtc191
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvcnRwX3BheWxvYWRfcGFyYW1zX3VuaXR0ZXN0LmNjCmluZGV4IGEzY2IzNzlkMThhNjU1NTQ4
NjgyMjI5MTM3ZTNlOGZkYmY1NTFiNTAuLjlhNTE5YmEwYTdmNzMwZmM1OGI4MGU2OWJmNGExM2Vm
YmIxMWQ3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvcnRwX3BheWxvYWRfcGFyYW1zX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3BheWxvYWRfcGFyYW1z
X3VuaXR0ZXN0LmNjCkBAIC0zMDksOSArMzA5LDEzIEBAIGNsYXNzIFJ0cFBheWxvYWRQYXJhbXNW
cDhUb0dlbmVyaWNUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3Qgc2hhcmVkX2ZyYW1lX2lkLAogICAgICAgICAgICAgICAgICAgICAg
ICBGcmFtZVR5cGUgZnJhbWVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXJTeW5j
IGxheWVyX3N5bmMsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c2V0PGludDY0
X3Q+JiBleHBlY3RlZF9kZXBzKSB7CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c2V0PGludDY0X3Q+JiBleHBlY3RlZF9kZXBzLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50
MTZfdCB3aWR0aCA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGhlaWdodCA9
IDApIHsKICAgICBFbmNvZGVkSW1hZ2UgZW5jb2RlZF9pbWFnZTsKICAgICBlbmNvZGVkX2ltYWdl
Ll9mcmFtZVR5cGUgPSBmcmFtZV90eXBlOworICAgIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRXaWR0
aCA9IHdpZHRoOworICAgIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRIZWlnaHQgPSBoZWlnaHQ7CiAK
ICAgICBDb2RlY1NwZWNpZmljSW5mbyBjb2RlY19pbmZve307CiAgICAgY29kZWNfaW5mby5jb2Rl
Y1R5cGUgPSBrVmlkZW9Db2RlY1ZQODsKQEAgLTMzMCw2ICszMzQsOSBAQCBjbGFzcyBSdHBQYXls
b2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAg
IHN0ZDo6c2V0PGludDY0X3Q+IGFjdHVhbF9kZXBzKGhlYWRlci5nZW5lcmljLT5kZXBlbmRlbmNp
ZXMuYmVnaW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuZ2Vu
ZXJpYy0+ZGVwZW5kZW5jaWVzLmVuZCgpKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZGVwcywg
YWN0dWFsX2RlcHMpOworCisgICAgRVhQRUNUX0VRKGhlYWRlci53aWR0aCwgd2lkdGgpOworICAg
IEVYUEVDVF9FUShoZWFkZXIuaGVpZ2h0LCBoZWlnaHQpOwogICB9CiAKICBwcm90ZWN0ZWQ6CkBA
IC0zMzksMTMgKzM0NiwxMyBAQCBjbGFzcyBSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5lcmljVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogfTsKIAogVEVTVF9GKFJ0cFBheWxvYWRQYXJh
bXNWcDhUb0dlbmVyaWNUZXN0LCBLZXlmcmFtZSkgewotICBDb252ZXJ0QW5kQ2hlY2soMCwgMCwg
a1ZpZGVvRnJhbWVLZXksIGtOb1N5bmMsIHt9KTsKKyAgQ29udmVydEFuZENoZWNrKDAsIDAsIGtW
aWRlb0ZyYW1lS2V5LCBrTm9TeW5jLCB7fSwgNDgwLCAzNjApOwogICBDb252ZXJ0QW5kQ2hlY2so
MCwgMSwga1ZpZGVvRnJhbWVEZWx0YSwga05vU3luYywgezB9KTsKLSAgQ29udmVydEFuZENoZWNr
KDAsIDIsIGtWaWRlb0ZyYW1lS2V5LCBrTm9TeW5jLCB7fSk7CisgIENvbnZlcnRBbmRDaGVjaygw
LCAyLCBrVmlkZW9GcmFtZUtleSwga05vU3luYywge30sIDQ4MCwgMzYwKTsKIH0KIAogVEVTVF9G
KFJ0cFBheWxvYWRQYXJhbXNWcDhUb0dlbmVyaWNUZXN0LCBUb29IaWdoVGVtcG9yYWxJbmRleCkg
ewotICBDb252ZXJ0QW5kQ2hlY2soMCwgMCwga1ZpZGVvRnJhbWVLZXksIGtOb1N5bmMsIHt9KTsK
KyAgQ29udmVydEFuZENoZWNrKDAsIDAsIGtWaWRlb0ZyYW1lS2V5LCBrTm9TeW5jLCB7fSwgNDgw
LCAzNjApOwogCiAgIEVuY29kZWRJbWFnZSBlbmNvZGVkX2ltYWdlOwogICBlbmNvZGVkX2ltYWdl
Ll9mcmFtZVR5cGUgPSBrVmlkZW9GcmFtZURlbHRhOwpAQCAtMzYyLDcgKzM2OSw3IEBAIFRFU1Rf
RihSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCwgVG9vSGlnaFRlbXBvcmFsSW5kZXgp
IHsKIAogVEVTVF9GKFJ0cFBheWxvYWRQYXJhbXNWcDhUb0dlbmVyaWNUZXN0LCBMYXllclN5bmMp
IHsKICAgLy8gMDIxMjAyMTIgcGF0dGVybgotICBDb252ZXJ0QW5kQ2hlY2soMCwgMCwga1ZpZGVv
RnJhbWVLZXksIGtOb1N5bmMsIHt9KTsKKyAgQ29udmVydEFuZENoZWNrKDAsIDAsIGtWaWRlb0Zy
YW1lS2V5LCBrTm9TeW5jLCB7fSwgNDgwLCAzNjApOwogICBDb252ZXJ0QW5kQ2hlY2soMiwgMSwg
a1ZpZGVvRnJhbWVEZWx0YSwga05vU3luYywgezB9KTsKICAgQ29udmVydEFuZENoZWNrKDEsIDIs
IGtWaWRlb0ZyYW1lRGVsdGEsIGtOb1N5bmMsIHswfSk7CiAgIENvbnZlcnRBbmRDaGVjaygyLCAz
LCBrVmlkZW9GcmFtZURlbHRhLCBrTm9TeW5jLCB7MCwgMSwgMn0pOwpAQCAtMzc1LDcgKzM4Miw3
IEBAIFRFU1RfRihSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCwgTGF5ZXJTeW5jKSB7
CiAKIFRFU1RfRihSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCwgRnJhbWVJZEdhcHMp
IHsKICAgLy8gMDEwMSBwYXR0ZXJuCi0gIENvbnZlcnRBbmRDaGVjaygwLCAwLCBrVmlkZW9GcmFt
ZUtleSwga05vU3luYywge30pOworICBDb252ZXJ0QW5kQ2hlY2soMCwgMCwga1ZpZGVvRnJhbWVL
ZXksIGtOb1N5bmMsIHt9LCA0ODAsIDM2MCk7CiAgIENvbnZlcnRBbmRDaGVjaygxLCAxLCBrVmlk
ZW9GcmFtZURlbHRhLCBrTm9TeW5jLCB7MH0pOwogCiAgIENvbnZlcnRBbmRDaGVjaygwLCA1LCBr
VmlkZW9GcmFtZURlbHRhLCBrTm9TeW5jLCB7MH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xs
ZXJfc2VuZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuY2MKaW5kZXggNTRhZWYyMWZkOWVhZmM5
MTMzYzM2M2U1NTZlYmYyMzJjNmVkNGYzNy4uNTI2NWM5NWFmYjgxMDQxMjhkMzQwZjcyNjlkOTUx
OWQ2ZDc3NzI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF90cmFuc3BvcnRf
Y29udHJvbGxlcl9zZW5kLmNjCkBAIC0yNiwxMSArMjYsNiBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90
IGtNYXhPdmVyaGVhZEJ5dGVzID0gNTAwOwogY29uc3QgY2hhciBrVGFza1F1ZXVlRXhwZXJpbWVu
dFtdID0gIldlYlJUQy1UYXNrUXVldWVDb25nZXN0aW9uQ29udHJvbCI7CiB1c2luZyBUYXNrUXVl
dWVDb250cm9sbGVyID0gd2VicnRjOjp3ZWJydGNfY2M6OlNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRy
b2xsZXI7CiAKLWJvb2wgVGFza1F1ZXVlRXhwZXJpbWVudEVuYWJsZWQoKSB7Ci0gIHN0ZDo6c3Ry
aW5nIHRyaWFsID0gd2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtUYXNrUXVldWVF
eHBlcmltZW50KTsKLSAgcmV0dXJuIHRyaWFsLmZpbmQoIkVuYWJsZSIpID09IDA7Ci19Ci0KIHN0
ZDo6dW5pcXVlX3B0cjxTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVySW50ZXJmYWNlPiBDcmVh
dGVDb250cm9sbGVyKAogICAgIENsb2NrKiBjbG9jaywKICAgICBydGM6OlRhc2tRdWV1ZSogdGFz
a19xdWV1ZSwKQEAgLTcwLDkgKzY1LDkgQEAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQ6OlJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kKAogICAgICAgcmV0cmFuc21pc3Npb25fcmF0ZV9saW1p
dGVyXyhjbG9jaywga1JldHJhbnNtaXRXaW5kb3dTaXplTXMpLAogICAgICAgdGFza19xdWV1ZV8o
InJ0cF9zZW5kX2NvbnRyb2xsZXIiKSB7CiAgIC8vIENyZWF0ZWQgYWZ0ZXIgdGFza19xdWV1ZSB0
byBiZSBhYmxlIHRvIHBvc3QgdG8gdGhlIHRhc2sgcXVldWUgaW50ZXJuYWxseS4KLSAgc2VuZF9z
aWRlX2NjXyA9Ci0gICAgICBDcmVhdGVDb250cm9sbGVyKGNsb2NrLCAmdGFza19xdWV1ZV8sIGV2
ZW50X2xvZywgJnBhY2VyXywgYml0cmF0ZV9jb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAg
IFRhc2tRdWV1ZUV4cGVyaW1lbnRFbmFibGVkKCksIGNvbnRyb2xsZXJfZmFjdG9yeSk7CisgIHNl
bmRfc2lkZV9jY18gPSBDcmVhdGVDb250cm9sbGVyKAorICAgICAgY2xvY2ssICZ0YXNrX3F1ZXVl
XywgZXZlbnRfbG9nLCAmcGFjZXJfLCBiaXRyYXRlX2NvbmZpZywKKyAgICAgICFmaWVsZF90cmlh
bDo6SXNEaXNhYmxlZChrVGFza1F1ZXVlRXhwZXJpbWVudCksIGNvbnRyb2xsZXJfZmFjdG9yeSk7
CiAKICAgcHJvY2Vzc190aHJlYWRfLT5SZWdpc3Rlck1vZHVsZSgmcGFjZXJfLCBSVENfRlJPTV9I
RVJFKTsKICAgcHJvY2Vzc190aHJlYWRfLT5SZWdpc3Rlck1vZHVsZShzZW5kX3NpZGVfY2NfLmdl
dCgpLCBSVENfRlJPTV9IRVJFKTsKQEAgLTkwLDE4ICs4NSwyMCBAQCBSdHBWaWRlb1NlbmRlcklu
dGVyZmFjZSogUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQ6OkNyZWF0ZVJ0cFZpZGVvU2VuZGVy
KAogICAgIHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBTdGF0ZT4gc3VzcGVuZGVkX3NzcmNzLAogICAg
IGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBQYXlsb2FkU3RhdGU+JiBzdGF0ZXMsCiAgICAg
Y29uc3QgUnRwQ29uZmlnJiBydHBfY29uZmlnLAotICAgIGNvbnN0IFJ0Y3BDb25maWcmIHJ0Y3Bf
Y29uZmlnLAorICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcywKICAgICBUcmFuc3BvcnQq
IHNlbmRfdHJhbnNwb3J0LAogICAgIGNvbnN0IFJ0cFNlbmRlck9ic2VydmVycyYgb2JzZXJ2ZXJz
LAogICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZlY0Nv
bnRyb2xsZXI+IGZlY19jb250cm9sbGVyKSB7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRy
b2xsZXI+IGZlY19jb250cm9sbGVyLAorICAgIGNvbnN0IFJ0cFNlbmRlckZyYW1lRW5jcnlwdGlv
bkNvbmZpZyYgZnJhbWVfZW5jcnlwdGlvbl9jb25maWcpIHsKICAgdmlkZW9fcnRwX3NlbmRlcnNf
LnB1c2hfYmFjayhhYnNsOjptYWtlX3VuaXF1ZTxSdHBWaWRlb1NlbmRlcj4oCi0gICAgICBzc3Jj
cywgc3VzcGVuZGVkX3NzcmNzLCBzdGF0ZXMsIHJ0cF9jb25maWcsIHJ0Y3BfY29uZmlnLCBzZW5k
X3RyYW5zcG9ydCwKLSAgICAgIG9ic2VydmVycywKKyAgICAgIHNzcmNzLCBzdXNwZW5kZWRfc3Ny
Y3MsIHN0YXRlcywgcnRwX2NvbmZpZywgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMsCisgICAgICBz
ZW5kX3RyYW5zcG9ydCwgb2JzZXJ2ZXJzLAogICAgICAgLy8gVE9ETyhob2xtZXIpOiBSZW1vdmUg
dGhpcyBjaXJjdWxhciBkZXBlbmRlbmN5IGJ5IGluamVjdGluZwogICAgICAgLy8gdGhlIHBhcnRz
IG9mIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlIHRoYXQgYXJlIHJlYWxseSB1
c2VkLgotICAgICAgdGhpcywgZXZlbnRfbG9nLCAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVy
XywKLSAgICAgIHN0ZDo6bW92ZShmZWNfY29udHJvbGxlcikpKTsKKyAgICAgIHRoaXMsIGV2ZW50
X2xvZywgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIHN0ZDo6bW92ZShmZWNfY29udHJv
bGxlciksCisgICAgICBmcmFtZV9lbmNyeXB0aW9uX2NvbmZpZy5mcmFtZV9lbmNyeXB0b3IsCisg
ICAgICBmcmFtZV9lbmNyeXB0aW9uX2NvbmZpZy5jcnlwdG9fb3B0aW9ucykpOwogICByZXR1cm4g
dmlkZW9fcnRwX3NlbmRlcnNfLmJhY2soKS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2Nv
bnRyb2xsZXJfc2VuZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5oCmluZGV4IDZhYWYyOWQ2YmMz
N2I4MzMyM2M3OGFhM2U0NTMwMTI2MWYwMjM0MTYuLmYxYzQ2Y2MwNzg1NWRkZWY3ZTQxMmM2Njgw
ZDE5YzViNjhjMjlkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF90cmFuc3Bv
cnRfY29udHJvbGxlcl9zZW5kLmgKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJjYWxsL3J0
cF9iaXRyYXRlX2NvbmZpZ3VyYXRvci5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9j
b250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfdmlkZW9fc2Vu
ZGVyLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVk
ZSkKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9pbmNsdWRlL3NlbmRf
c2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9wYWNpbmcvcGFja2V0X3JvdXRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNs
dWRlL3Byb2Nlc3NfdGhyZWFkLmgiCkBAIC0yOSw3ICsyOCw5IEBACiAjaW5jbHVkZSAicnRjX2Jh
c2UvdGFza19xdWV1ZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKKwogY2xhc3MgQ2xvY2s7Citj
bGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsKIGNsYXNzIFJ0Y0V2ZW50TG9nOwogCiAvLyBU
T0RPKG5pc3NlKTogV2hlbiB3ZSBnZXQgdGhlIHVuZGVybHlpbmcgdHJhbnNwb3J0cyBoZXJlLCB3
ZSBzaG91bGQKQEAgLTUyLDExICs1MywxMiBAQCBjbGFzcyBSdHBUcmFuc3BvcnRDb250cm9sbGVy
U2VuZCBmaW5hbAogICAgICAgY29uc3Qgc3RkOjptYXA8dWludDMyX3QsIFJ0cFBheWxvYWRTdGF0
ZT4mCiAgICAgICAgICAgc3RhdGVzLCAgLy8gbW92ZSBzdGF0ZXMgaW50byBSdHBUcmFuc3BvcnRD
b250cm9sbGVyU2VuZAogICAgICAgY29uc3QgUnRwQ29uZmlnJiBydHBfY29uZmlnLAotICAgICAg
Y29uc3QgUnRjcENvbmZpZyYgcnRjcF9jb25maWcsCisgICAgICBpbnQgcnRjcF9yZXBvcnRfaW50
ZXJ2YWxfbXMsCiAgICAgICBUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LAogICAgICAgY29uc3Qg
UnRwU2VuZGVyT2JzZXJ2ZXJzJiBvYnNlcnZlcnMsCiAgICAgICBSdGNFdmVudExvZyogZXZlbnRf
bG9nLAotICAgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+IGZlY19jb250cm9sbGVy
KSBvdmVycmlkZTsKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNfY29u
dHJvbGxlciwKKyAgICAgIGNvbnN0IFJ0cFNlbmRlckZyYW1lRW5jcnlwdGlvbkNvbmZpZyYgZnJh
bWVfZW5jcnlwdGlvbl9jb25maWcpIG92ZXJyaWRlOwogICB2b2lkIERlc3Ryb3lSdHBWaWRlb1Nl
bmRlcigKICAgICAgIFJ0cFZpZGVvU2VuZGVySW50ZXJmYWNlKiBydHBfdmlkZW9fc2VuZGVyKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5z
cG9ydF9jb250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgKaW5kZXggNWM1MWM1NGZlMTNjZjEwMmZj
YzVhZmRkMDJjMWE1ZmRmZGI2OTdiNy4uOTg2ODU4NWNkZjgxMTM5MjhhMWFkNjNkZDY1ZWVjYzk3
MWNjMmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF90cmFu
c3BvcnRfY29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5oCkBAIC0yMCwxMCArMjAsMTIgQEAKIAog
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYml0cmF0ZV9j
b25zdHJhaW50cy5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgogI2lu
Y2x1ZGUgImFwaS9mZWNfY29udHJvbGxlci5oIgogI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvYml0
cmF0ZV9zZXR0aW5ncy5oIgogI2luY2x1ZGUgImNhbGwvcnRwX2NvbmZpZy5oIgogI2luY2x1ZGUg
ImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCisjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAKIG5hbWVzcGFjZSBydGMgewpA
QCAtMzUsNiArMzcsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgQ2FsbFN0YXRzOwog
Y2xhc3MgQ2FsbFN0YXRzT2JzZXJ2ZXI7CitjbGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsK
IGNsYXNzIFRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyOwogY2xhc3MgVHJhbnNwb3J0OwogY2xh
c3MgTW9kdWxlOwpAQCAtNjIsNiArNjUsMTEgQEAgc3RydWN0IFJ0cFNlbmRlck9ic2VydmVycyB7
CiAgIFNlbmRQYWNrZXRPYnNlcnZlciogc2VuZF9wYWNrZXRfb2JzZXJ2ZXI7CiB9OwogCitzdHJ1
Y3QgUnRwU2VuZGVyRnJhbWVFbmNyeXB0aW9uQ29uZmlnIHsKKyAgRnJhbWVFbmNyeXB0b3JJbnRl
cmZhY2UqIGZyYW1lX2VuY3J5cHRvciA9IG51bGxwdHI7CisgIENyeXB0b09wdGlvbnMgY3J5cHRv
X29wdGlvbnM7Cit9OworCiAvLyBBbiBSdHBUcmFuc3BvcnRDb250cm9sbGVyIHNob3VsZCBvd24g
ZXZlcnl0aGluZyByZWxhdGVkIHRvIHRoZSBSVFAKIC8vIHRyYW5zcG9ydCB0by9mcm9tIGEgcmVt
b3RlIGVuZHBvaW50LiBXZSBzaG91bGQgaGF2ZSBzZXBhcmF0ZQogLy8gaW50ZXJmYWNlcyBmb3Ig
c2VuZCBhbmQgcmVjZWl2ZSBzaWRlLCBldmVuIGlmIHRoZXkgYXJlIGltcGxlbWVudGVkCkBAIC05
NywxMSArMTA1LDEyIEBAIGNsYXNzIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNl
IHsKICAgICAgIC8vIFRPRE8oaG9sbWVyKTogTW92ZSBzdGF0ZXMgaW50byBSdHBUcmFuc3BvcnRD
b250cm9sbGVyU2VuZC4KICAgICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBQYXlsb2Fk
U3RhdGU+JiBzdGF0ZXMsCiAgICAgICBjb25zdCBSdHBDb25maWcmIHJ0cF9jb25maWcsCi0gICAg
ICBjb25zdCBSdGNwQ29uZmlnJiBydGNwX2NvbmZpZywKKyAgICAgIGludCBydGNwX3JlcG9ydF9p
bnRlcnZhbF9tcywKICAgICAgIFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQsCiAgICAgICBjb25z
dCBSdHBTZW5kZXJPYnNlcnZlcnMmIG9ic2VydmVycywKICAgICAgIFJ0Y0V2ZW50TG9nKiBldmVu
dF9sb2csCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlcj4gZmVjX2NvbnRyb2xs
ZXIpID0gMDsKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNfY29udHJv
bGxlciwKKyAgICAgIGNvbnN0IFJ0cFNlbmRlckZyYW1lRW5jcnlwdGlvbkNvbmZpZyYgZnJhbWVf
ZW5jcnlwdGlvbl9jb25maWcpID0gMDsKICAgdmlydHVhbCB2b2lkIERlc3Ryb3lSdHBWaWRlb1Nl
bmRlcigKICAgICAgIFJ0cFZpZGVvU2VuZGVySW50ZXJmYWNlKiBydHBfdmlkZW9fc2VuZGVyKSA9
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvcnRwX3ZpZGVvX3NlbmRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3ZpZGVvX3NlbmRlci5jYwppbmRleCAxMGQ3ZTdkYWVk
YTZkMzIxNzU2Y2FmOTkyODQ1ZWRhOGQ3Y2NhNTIyLi5iYTFiOTkyZTk1MDI1YWNhNThiYzZjYzJj
ZmExMTkwY2ViODM4MWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3J0cF92aWRlb19zZW5kZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlkZW9fc2VuZGVyLmNjCkBA
IC00MCw4ICs0MCw4IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qga1BhdGhNVFUgPSAxNTAwOwogCiBz
dGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwUnRjcD4+IENyZWF0ZVJ0cFJ0Y3BNb2R1bGVz
KAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiYgc3NyY3MsCi0gICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8dWludDMyX3Q+JiBwcm90ZWN0ZWRfbWVkaWFfc3NyY3MsCi0gICAgY29uc3QgUnRj
cENvbmZpZyYgcnRjcF9jb25maWcsCisgICAgY29uc3QgUnRwQ29uZmlnJiBydHBfY29uZmlnLAor
ICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcywKICAgICBUcmFuc3BvcnQqIHNlbmRfdHJh
bnNwb3J0LAogICAgIFJ0Y3BJbnRyYUZyYW1lT2JzZXJ2ZXIqIGludHJhX2ZyYW1lX2NhbGxiYWNr
LAogICAgIFJ0Y3BCYW5kd2lkdGhPYnNlcnZlciogYmFuZHdpZHRoX2NhbGxiYWNrLApAQCAtNTYs
OCArNTYsMTEgQEAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFJ0Y3A+PiBDcmVhdGVS
dHBSdGNwTW9kdWxlcygKICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgIFJhdGVMaW1p
dGVyKiByZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXIsCiAgICAgT3ZlcmhlYWRPYnNlcnZlciog
b3ZlcmhlYWRfb2JzZXJ2ZXIsCi0gICAgUnRwS2VlcEFsaXZlQ29uZmlnIGtlZXBhbGl2ZV9jb25m
aWcpIHsKKyAgICBSdHBLZWVwQWxpdmVDb25maWcga2VlcGFsaXZlX2NvbmZpZywKKyAgICBGcmFt
ZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAgIGNvbnN0IENyeXB0b09w
dGlvbnMmIGNyeXB0b19vcHRpb25zKSB7CiAgIFJUQ19EQ0hFQ0tfR1Qoc3NyY3Muc2l6ZSgpLCAw
KTsKKwogICBSdHBSdGNwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgIGNvbmZpZ3Vy
YXRpb24uYXVkaW8gPSBmYWxzZTsKICAgY29uZmlndXJhdGlvbi5yZWNlaXZlcl9vbmx5ID0gZmFs
c2U7CkBAIC03OSwxMiArODIsMTUgQEAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFJ0
Y3A+PiBDcmVhdGVSdHBSdGNwTW9kdWxlcygKICAgY29uZmlndXJhdGlvbi5yZXRyYW5zbWlzc2lv
bl9yYXRlX2xpbWl0ZXIgPSByZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXI7CiAgIGNvbmZpZ3Vy
YXRpb24ub3ZlcmhlYWRfb2JzZXJ2ZXIgPSBvdmVyaGVhZF9vYnNlcnZlcjsKICAgY29uZmlndXJh
dGlvbi5rZWVwYWxpdmVfY29uZmlnID0ga2VlcGFsaXZlX2NvbmZpZzsKLSAgY29uZmlndXJhdGlv
bi5ydGNwX2ludGVydmFsX2NvbmZpZy52aWRlb19pbnRlcnZhbF9tcyA9Ci0gICAgICBydGNwX2Nv
bmZpZy52aWRlb19yZXBvcnRfaW50ZXJ2YWxfbXM7Ci0gIGNvbmZpZ3VyYXRpb24ucnRjcF9pbnRl
cnZhbF9jb25maWcuYXVkaW9faW50ZXJ2YWxfbXMgPQotICAgICAgcnRjcF9jb25maWcuYXVkaW9f
cmVwb3J0X2ludGVydmFsX21zOworICBjb25maWd1cmF0aW9uLmZyYW1lX2VuY3J5cHRvciA9IGZy
YW1lX2VuY3J5cHRvcjsKKyAgY29uZmlndXJhdGlvbi5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24g
PQorICAgICAgY3J5cHRvX29wdGlvbnMuc2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbjsK
KyAgY29uZmlndXJhdGlvbi5leHRtYXBfYWxsb3dfbWl4ZWQgPSBydHBfY29uZmlnLmV4dG1hcF9h
bGxvd19taXhlZDsKKyAgY29uZmlndXJhdGlvbi5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IHJ0
Y3BfcmVwb3J0X2ludGVydmFsX21zOworCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxS
dHBSdGNwPj4gbW9kdWxlczsKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDMyX3Q+JiBmbGV4ZmVj
X3Byb3RlY3RlZF9zc3JjcyA9IHByb3RlY3RlZF9tZWRpYV9zc3JjczsKKyAgY29uc3Qgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+JiBmbGV4ZmVjX3Byb3RlY3RlZF9zc3JjcyA9CisgICAgICBydHBfY29u
ZmlnLmZsZXhmZWMucHJvdGVjdGVkX21lZGlhX3NzcmNzOwogICBmb3IgKHVpbnQzMl90IHNzcmMg
OiBzc3JjcykgewogICAgIGJvb2wgZW5hYmxlX2ZsZXhmZWMgPSBmbGV4ZmVjX3NlbmRlciAhPSBu
dWxscHRyICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZmluZChmbGV4ZmVjX3By
b3RlY3RlZF9zc3Jjcy5iZWdpbigpLApAQCAtMTc3LDEzICsxODMsMTUgQEAgUnRwVmlkZW9TZW5k
ZXI6OlJ0cFZpZGVvU2VuZGVyKAogICAgIHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBTdGF0ZT4gc3Vz
cGVuZGVkX3NzcmNzLAogICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBQYXlsb2FkU3Rh
dGU+JiBzdGF0ZXMsCiAgICAgY29uc3QgUnRwQ29uZmlnJiBydHBfY29uZmlnLAotICAgIGNvbnN0
IFJ0Y3BDb25maWcmIHJ0Y3BfY29uZmlnLAorICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9t
cywKICAgICBUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LAogICAgIGNvbnN0IFJ0cFNlbmRlck9i
c2VydmVycyYgb2JzZXJ2ZXJzLAogICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJm
YWNlKiB0cmFuc3BvcnQsCiAgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKICAgICBSYXRlTGlt
aXRlciogcmV0cmFuc21pc3Npb25fbGltaXRlciwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29u
dHJvbGxlcj4gZmVjX2NvbnRyb2xsZXIpCisgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xs
ZXI+IGZlY19jb250cm9sbGVyLAorICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9l
bmNyeXB0b3IsCisgICAgY29uc3QgQ3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpCiAgICAg
OiBzZW5kX3NpZGVfYndlX3dpdGhfb3ZlcmhlYWRfKAogICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRf
dHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVNlbmRTaWRlQndlLVdpdGhPdmVyaGVhZCIpKSwKICAg
ICAgIGFjdGl2ZV8oZmFsc2UpLApAQCAtMTkxLDI1ICsxOTksMjYgQEAgUnRwVmlkZW9TZW5kZXI6
OlJ0cFZpZGVvU2VuZGVyKAogICAgICAgc3VzcGVuZGVkX3NzcmNzXyhzdGQ6Om1vdmUoc3VzcGVu
ZGVkX3NzcmNzKSksCiAgICAgICBmbGV4ZmVjX3NlbmRlcl8oTWF5YmVDcmVhdGVGbGV4ZmVjU2Vu
ZGVyKHJ0cF9jb25maWcsIHN1c3BlbmRlZF9zc3Jjc18pKSwKICAgICAgIGZlY19jb250cm9sbGVy
XyhzdGQ6Om1vdmUoZmVjX2NvbnRyb2xsZXIpKSwKLSAgICAgIHJ0cF9tb2R1bGVzXygKLSAgICAg
ICAgICBDcmVhdGVSdHBSdGNwTW9kdWxlcyhzc3JjcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBydHBfY29uZmlnLmZsZXhmZWMucHJvdGVjdGVkX21lZGlhX3NzcmNzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Y3BfY29uZmlnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbmRfdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9ic2VydmVycy5pbnRyYV9mcmFtZV9jYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0cmFuc3BvcnQtPkdldEJhbmR3aWR0aE9ic2VydmVyKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9ic2VydmVycy5ydGNwX3J0dF9zdGF0cywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGV4ZmVjX3NlbmRlcl8uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb2JzZXJ2ZXJzLmJpdHJhdGVfb2JzZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb2JzZXJ2ZXJzLmZyYW1lX2NvdW50X29ic2VydmVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9ic2VydmVycy5ydGNwX3R5cGVfb2JzZXJ2ZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJzLnNlbmRfZGVsYXlfb2JzZXJ2ZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJzLnNlbmRfcGFja2V0X29ic2VydmVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2xvZywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXRyYW5zbWlzc2lvbl9saW1pdGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNwb3J0LT5rZWVwYWxpdmVfY29uZmlnKCkpKSwKKyAgICAgIHJ0cF9tb2R1bGVzXyhDcmVh
dGVSdHBSdGNwTW9kdWxlcyhzc3JjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBydHBfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbmRfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9ic2VydmVycy5pbnRyYV9mcmFtZV9jYWxsYmFjaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQtPkdldEJhbmR3aWR0aE9ic2Vy
dmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5ydGNw
X3J0dF9zdGF0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4
ZmVjX3NlbmRlcl8uZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb2JzZXJ2ZXJzLmJpdHJhdGVfb2JzZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JzZXJ2ZXJzLmZyYW1lX2NvdW50X29ic2VydmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5ydGNwX3R5cGVfb2JzZXJ2
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJzLnNl
bmRfZGVsYXlfb2JzZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb2JzZXJ2ZXJzLnNlbmRfcGFja2V0X29ic2VydmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV2ZW50X2xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXRyYW5zbWlzc2lvbl9saW1pdGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhbnNwb3J0LT5rZWVwYWxpdmVfY29uZmlnKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZW5jcnlwdG9yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyeXB0b19vcHRpb25zKSksCiAgICAgICBydHBf
Y29uZmlnXyhydHBfY29uZmlnKSwKICAgICAgIHRyYW5zcG9ydF8odHJhbnNwb3J0KSwKICAgICAg
IHRyYW5zcG9ydF9vdmVyaGVhZF9ieXRlc19wZXJfcGFja2V0XygwKSwKQEAgLTI0Niw5ICsyNTUs
NiBAQCBSdHBWaWRlb1NlbmRlcjo6UnRwVmlkZW9TZW5kZXIoCiAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcnRwX2NvbmZpZ18uZXh0ZW5zaW9ucy5zaXplKCk7ICsraSkgewogICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBleHRlbnNpb24gPSBydHBfY29uZmlnXy5leHRlbnNpb25zW2ldLnVyaTsKICAg
ICBpbnQgaWQgPSBydHBfY29uZmlnXy5leHRlbnNpb25zW2ldLmlkOwotICAgIC8vIE9uZS1ieXRl
LWV4dGVuc2lvbiBsb2NhbCBpZGVudGlmaWVycyBhcmUgaW4gdGhlIHJhbmdlIDEtMTQgaW5jbHVz
aXZlLgotICAgIFJUQ19EQ0hFQ0tfR0UoaWQsIDEpOwotICAgIFJUQ19EQ0hFQ0tfTEUoaWQsIDE0
KTsKICAgICBSVENfRENIRUNLKFJ0cEV4dGVuc2lvbjo6SXNTdXBwb3J0ZWRGb3JWaWRlbyhleHRl
bnNpb24pKTsKICAgICBmb3IgKGF1dG8mIHJ0cF9ydGNwIDogcnRwX21vZHVsZXNfKSB7CiAgICAg
ICBSVENfQ0hFQ0socnRwX3J0Y3AtPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKGV4dGVuc2lv
biwgaWQpKTsKQEAgLTU5MiwxMiArNTk4LDE0IEBAIHZvaWQgUnRwVmlkZW9TZW5kZXI6Ok9uQml0
cmF0ZVVwZGF0ZWQodWludDMyX3QgYml0cmF0ZV9icHMsCiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2so
JmNyaXRfKTsKICAgdWludDMyX3QgcGF5bG9hZF9iaXRyYXRlX2JwcyA9IGJpdHJhdGVfYnBzOwog
ICBpZiAoc2VuZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXykgewotICAgIHBheWxvYWRfYml0cmF0
ZV9icHMgLT0gQ2FsY3VsYXRlT3ZlcmhlYWRSYXRlQnBzKAorICAgIHVpbnQzMl90IG92ZXJoZWFk
X2JwcyA9IENhbGN1bGF0ZU92ZXJoZWFkUmF0ZUJwcygKICAgICAgICAgQ2FsY3VsYXRlUGFja2V0
UmF0ZSgKICAgICAgICAgICAgIGJpdHJhdGVfYnBzLAogICAgICAgICAgICAgcnRwX2NvbmZpZ18u
bWF4X3BhY2tldF9zaXplICsgdHJhbnNwb3J0X292ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXRfKSwK
ICAgICAgICAgb3ZlcmhlYWRfYnl0ZXNfcGVyX3BhY2tldF8gKyB0cmFuc3BvcnRfb3ZlcmhlYWRf
Ynl0ZXNfcGVyX3BhY2tldF8sCiAgICAgICAgIGJpdHJhdGVfYnBzKTsKKyAgICBSVENfRENIRUNL
X0xFKG92ZXJoZWFkX2JwcywgYml0cmF0ZV9icHMpOworICAgIHBheWxvYWRfYml0cmF0ZV9icHMg
PSBiaXRyYXRlX2JwcyAtIG92ZXJoZWFkX2JwczsKICAgfQogCiAgIC8vIEdldCB0aGUgZW5jb2Rl
ciB0YXJnZXQgcmF0ZS4gSXQgaXMgdGhlIGVzdGltYXRlZCBuZXR3b3JrIHJhdGUgLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBf
dmlkZW9fc2VuZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL3J0cF92aWRlb19zZW5kZXIuaAppbmRleCBkYjMyOWJlMDBiMDQ0NzBmYjM5MTdmNDIw
ZGY0ODVjM2Q1YjhiMjkwLi5hZGFjNDZiY2Q4MTMwODQ2NTRiMzZjZjc0MjExN2NmNTJmMWE3Y2Zh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL3J0cF92aWRlb19zZW5kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3J0cF92aWRlb19zZW5kZXIuaApAQCAtMjMsNyArMjMsNiBAQAog
I2luY2x1ZGUgImNhbGwvcnRwX3BheWxvYWRfcGFyYW1zLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBf
dHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJjYWxsL3J0
cF92aWRlb19zZW5kZXJfaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAv
LyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cv
cnRjX2V2ZW50X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4
ZmVjX3NlbmRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92aWRl
b19oZWFkZXIuaCIKQEAgLTM2LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK2Ns
YXNzIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlOwogY2xhc3MgUlRQRnJhZ21lbnRhdGlvbkhlYWRl
cjsKIGNsYXNzIFJ0cFJ0Y3A7CiBjbGFzcyBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVy
ZmFjZTsKQEAgLTUzLDEzICs1MywxNSBAQCBjbGFzcyBSdHBWaWRlb1NlbmRlciA6IHB1YmxpYyBS
dHBWaWRlb1NlbmRlckludGVyZmFjZSwKICAgICAgIHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBTdGF0
ZT4gc3VzcGVuZGVkX3NzcmNzLAogICAgICAgY29uc3Qgc3RkOjptYXA8dWludDMyX3QsIFJ0cFBh
eWxvYWRTdGF0ZT4mIHN0YXRlcywKICAgICAgIGNvbnN0IFJ0cENvbmZpZyYgcnRwX2NvbmZpZywK
LSAgICAgIGNvbnN0IFJ0Y3BDb25maWcmIHJ0Y3BfY29uZmlnLAorICAgICAgaW50IHJ0Y3BfcmVw
b3J0X2ludGVydmFsX21zLAogICAgICAgVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwKICAgICAg
IGNvbnN0IFJ0cFNlbmRlck9ic2VydmVycyYgb2JzZXJ2ZXJzLAogICAgICAgUnRwVHJhbnNwb3J0
Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHRyYW5zcG9ydCwKICAgICAgIFJ0Y0V2ZW50TG9nKiBl
dmVudF9sb2csCiAgICAgICBSYXRlTGltaXRlciogcmV0cmFuc21pc3Npb25fbGltaXRlciwgIC8v
IG1vdmUgaW5zaWRlIFJ0cFRyYW5zcG9ydAotICAgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRy
b2xsZXI+IGZlY19jb250cm9sbGVyKTsKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9s
bGVyPiBmZWNfY29udHJvbGxlciwKKyAgICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFt
ZV9lbmNyeXB0b3IsCisgICAgICBjb25zdCBDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucyk7
ICAvLyBtb3ZlIGluc2lkZSBSdHBUcmFuc3BvcnQKICAgflJ0cFZpZGVvU2VuZGVyKCkgb3ZlcnJp
ZGU7CiAKICAgLy8gUmVnaXN0ZXJQcm9jZXNzVGhyZWFkIHJlZ2lzdGVyIHxtb2R1bGVfcHJvY2Vz
c190aHJlYWR8IHdpdGggdGhvc2Ugb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlkZW9fc2VuZGVyX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBf
dmlkZW9fc2VuZGVyX3VuaXR0ZXN0LmNjCmluZGV4IGU5MWJmYzRhZWIxNGYyNjhlMzA5ZWFmYzA0
MDUyNjlkMjkzY2MyOTMuLjhhYjg5ZDYxMDRjNDY1YWJmZmM5ODY3YzRiOGQzNGNjY2ZhYWJjOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvcnRwX3ZpZGVvX3NlbmRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF92aWRlb19zZW5kZXJfdW5pdHRlc3QuY2MK
QEAgLTEwMiwxMiArMTAyLDEzIEBAIGNsYXNzIFJ0cFZpZGVvU2VuZGVyVGVzdEZpeHR1cmUgewog
ICAgIHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBTdGF0ZT4gc3VzcGVuZGVkX3NzcmNzOwogICAgIHJv
dXRlcl8gPSBhYnNsOjptYWtlX3VuaXF1ZTxSdHBWaWRlb1NlbmRlcj4oCiAgICAgICAgIGNvbmZp
Z18ucnRwLnNzcmNzLCBzdXNwZW5kZWRfc3NyY3MsIHN1c3BlbmRlZF9wYXlsb2FkX3N0YXRlcywK
LSAgICAgICAgY29uZmlnXy5ydHAsIGNvbmZpZ18ucnRjcCwgJnRyYW5zcG9ydF8sCisgICAgICAg
IGNvbmZpZ18ucnRwLCBjb25maWdfLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zLCAmdHJhbnNwb3J0
XywKICAgICAgICAgQ3JlYXRlT2JzZXJ2ZXJzKCZjYWxsX3N0YXRzXywgJmVuY29kZXJfZmVlZGJh
Y2tfLCAmc3RhdHNfcHJveHlfLAogICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXRzX3Byb3h5
XywgJnN0YXRzX3Byb3h5XywgJnN0YXRzX3Byb3h5XywKICAgICAgICAgICAgICAgICAgICAgICAg
ICZzdGF0c19wcm94eV8sICZzdGF0c19wcm94eV8sICZzZW5kX2RlbGF5X3N0YXRzXyksCiAgICAg
ICAgICZ0cmFuc3BvcnRfY29udHJvbGxlcl8sICZldmVudF9sb2dfLCAmcmV0cmFuc21pc3Npb25f
cmF0ZV9saW1pdGVyXywKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmVjQ29udHJvbGxlckRl
ZmF1bHQ+KCZjbG9ja18pKTsKKyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmVjQ29udHJvbGxl
ckRlZmF1bHQ+KCZjbG9ja18pLCBudWxscHRyLAorICAgICAgICBDcnlwdG9PcHRpb25ze30pOwog
ICB9CiAKICAgUnRwVmlkZW9TZW5kZXIqIHJvdXRlcigpIHsgcmV0dXJuIHJvdXRlcl8uZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvc2ltdWxhdGVkX25ldHdvcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmNjCmluZGV4IGVlNThkY2U3MTgy
NDhhYTEwNmJjM2E4MTdhMzRhOTIxYzg5MjlmYTYuLjc3YmUxNDgyMWMyYWVmMWViNzdmNWZmYTY2
ZjE3ZmJlNDY0MGIyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NhbGwvc2ltdWxhdGVkX25ldHdvcmsuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9zaW11bGF0ZWRfbmV0d29yay5jYwpA
QCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4K
ICNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgImFwaS91bml0cy9kYXRhX3JhdGUuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTI2LDYgKzI3LDkgQEAgU2ltdWxhdGVkTmV0d29yazo6
flNpbXVsYXRlZE5ldHdvcmsoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgU2ltdWxhdGVkTmV0d29yazo6
U2V0Q29uZmlnKGNvbnN0IFNpbXVsYXRlZE5ldHdvcms6OkNvbmZpZyYgY29uZmlnKSB7CiAgIHJ0
Yzo6Q3JpdFNjb3BlIGNyaXQoJmNvbmZpZ19sb2NrXyk7CisgIGlmIChjb25maWdfLmxpbmtfY2Fw
YWNpdHlfa2JwcyAhPSBjb25maWcubGlua19jYXBhY2l0eV9rYnBzKSB7CisgICAgcmVzZXRfY2Fw
YWNpdHlfZGVsYXlfZXJyb3JfID0gdHJ1ZTsKKyAgfQogICBjb25maWdfID0gY29uZmlnOyAgLy8g
U2hhbGxvdyBjb3B5IG9mIHRoZSBzdHJ1Y3QuCiAgIGRvdWJsZSBwcm9iX2xvc3MgPSBjb25maWcu
bG9zc19wZXJjZW50IC8gMTAwLjA7CiAgIGlmIChjb25maWdfLmF2Z19idXJzdF9sb3NzX2xlbmd0
aCA9PSAtMSkgewpAQCAtNjQsNDIgKzY4LDQ1IEBAIGJvb2wgU2ltdWxhdGVkTmV0d29yazo6RW5x
dWV1ZVBhY2tldChQYWNrZXRJbkZsaWdodEluZm8gcGFja2V0KSB7CiAgICAgLy8gVG9vIG1hbnkg
cGFja2V0IG9uIHRoZSBsaW5rLCBkcm9wIHRoaXMgb25lLgogICAgIHJldHVybiBmYWxzZTsKICAg
fQotCi0gIC8vIERlbGF5IGludHJvZHVjZWQgYnkgdGhlIGxpbmsgY2FwYWNpdHkuCi0gIGludDY0
X3QgY2FwYWNpdHlfZGVsYXlfbXMgPSAwOwotICBpZiAoY29uZmlnLmxpbmtfY2FwYWNpdHlfa2Jw
cyA+IDApIHsKLSAgICAvLyBVc2luZyBieXRlcyBwZXIgbWlsbGlzZWNvbmQgdG8gYXZvaWQgbG9z
aW5nIHByZWNpc2lvbi4KLSAgICBjb25zdCBpbnQ2NF90IGJ5dGVzX3Blcl9taWxsaXNlY29uZCA9
IGNvbmZpZy5saW5rX2NhcGFjaXR5X2ticHMgLyA4OwotICAgIC8vIFRvIHJvdW5kIHRvIHRoZSBj
bG9zZXN0IG1pbGxpc2Vjb25kIHdlIGFkZCBoYWxmIGEgbWlsbGlzZWNvbmRzIHdvcnRoIG9mCi0g
ICAgLy8gYnl0ZXMgdG8gdGhlIGRlbGF5IGNhbGN1bGF0aW9uLgotICAgIGNhcGFjaXR5X2RlbGF5
X21zID0gKHBhY2tldC5zaXplICsgY2FwYWNpdHlfZGVsYXlfZXJyb3JfYnl0ZXNfICsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBieXRlc19wZXJfbWlsbGlzZWNvbmQgLyAyKSAvCi0gICAgICAg
ICAgICAgICAgICAgICAgICBieXRlc19wZXJfbWlsbGlzZWNvbmQ7Ci0gICAgY2FwYWNpdHlfZGVs
YXlfZXJyb3JfYnl0ZXNfICs9Ci0gICAgICAgIHBhY2tldC5zaXplIC0gY2FwYWNpdHlfZGVsYXlf
bXMgKiBieXRlc19wZXJfbWlsbGlzZWNvbmQ7Ci0gIH0KICAgaW50NjRfdCBuZXR3b3JrX3N0YXJ0
X3RpbWVfdXMgPSBwYWNrZXQuc2VuZF90aW1lX3VzOwotCiAgIHsKICAgICBydGM6OkNyaXRTY29w
ZSBjcml0KCZjb25maWdfbG9ja18pOworICAgIGlmIChyZXNldF9jYXBhY2l0eV9kZWxheV9lcnJv
cl8pIHsKKyAgICAgIGNhcGFjaXR5X2RlbGF5X2Vycm9yX2J5dGVzXyA9IDA7CisgICAgICByZXNl
dF9jYXBhY2l0eV9kZWxheV9lcnJvcl8gPSBmYWxzZTsKKyAgICB9CiAgICAgaWYgKHBhdXNlX3Ry
YW5zbWlzc2lvbl91bnRpbF91c18pIHsKICAgICAgIG5ldHdvcmtfc3RhcnRfdGltZV91cyA9CiAg
ICAgICAgICAgc3RkOjptYXgobmV0d29ya19zdGFydF90aW1lX3VzLCAqcGF1c2VfdHJhbnNtaXNz
aW9uX3VudGlsX3VzXyk7CiAgICAgICBwYXVzZV90cmFuc21pc3Npb25fdW50aWxfdXNfLnJlc2V0
KCk7CiAgICAgfQogICB9CisKKyAgLy8gRGVsYXkgaW50cm9kdWNlZCBieSB0aGUgbGluayBjYXBh
Y2l0eS4KKyAgVGltZURlbHRhIGNhcGFjaXR5X2RlbGF5ID0gVGltZURlbHRhOjpaZXJvKCk7Cisg
IGlmIChjb25maWcubGlua19jYXBhY2l0eV9rYnBzID4gMCkgeworICAgIGNvbnN0IERhdGFSYXRl
IGxpbmtfY2FwYWNpdHkgPSBEYXRhUmF0ZTo6a2Jwcyhjb25maWcubGlua19jYXBhY2l0eV9rYnBz
KTsKKyAgICBpbnQ2NF90IGNvbXBlbnNhdGVkX3NpemUgPQorICAgICAgICBzdGF0aWNfY2FzdDxp
bnQ2NF90PihwYWNrZXQuc2l6ZSkgKyBjYXBhY2l0eV9kZWxheV9lcnJvcl9ieXRlc187CisgICAg
Y2FwYWNpdHlfZGVsYXkgPSBEYXRhU2l6ZTo6Ynl0ZXMoY29tcGVuc2F0ZWRfc2l6ZSkgLyBsaW5r
X2NhcGFjaXR5OworCisgICAgY2FwYWNpdHlfZGVsYXlfZXJyb3JfYnl0ZXNfICs9CisgICAgICAg
IHBhY2tldC5zaXplIC0gKGNhcGFjaXR5X2RlbGF5ICogbGlua19jYXBhY2l0eSkuYnl0ZXMoKTsK
KyAgfQorCiAgIC8vIENoZWNrIGlmIHRoZXJlIGFscmVhZHkgYXJlIHBhY2tldHMgb24gdGhlIGxp
bmsgYW5kIGNoYW5nZSBuZXR3b3JrIHN0YXJ0CiAgIC8vIHRpbWUgZm9yd2FyZCBpZiB0aGVyZSBp
cy4KICAgaWYgKCFjYXBhY2l0eV9saW5rXy5lbXB0eSgpICYmCiAgICAgICBuZXR3b3JrX3N0YXJ0
X3RpbWVfdXMgPCBjYXBhY2l0eV9saW5rXy5iYWNrKCkuYXJyaXZhbF90aW1lX3VzKQogICAgIG5l
dHdvcmtfc3RhcnRfdGltZV91cyA9IGNhcGFjaXR5X2xpbmtfLmJhY2soKS5hcnJpdmFsX3RpbWVf
dXM7CiAKLSAgaW50NjRfdCBhcnJpdmFsX3RpbWVfdXMgPSBuZXR3b3JrX3N0YXJ0X3RpbWVfdXMg
KyBjYXBhY2l0eV9kZWxheV9tcyAqIDEwMDA7CisgIGludDY0X3QgYXJyaXZhbF90aW1lX3VzID0g
bmV0d29ya19zdGFydF90aW1lX3VzICsgY2FwYWNpdHlfZGVsYXkudXMoKTsKICAgY2FwYWNpdHlf
bGlua18ucHVzaCh7cGFja2V0LCBhcnJpdmFsX3RpbWVfdXN9KTsKICAgcmV0dXJuIHRydWU7CiB9
CiAKIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IFNpbXVsYXRlZE5ldHdvcms6Ok5leHREZWxpdmVy
eVRpbWVVcygpIGNvbnN0IHsKKyAgcnRjOjpDcml0U2NvcGUgY3JpdCgmcHJvY2Vzc19sb2NrXyk7
CiAgIGlmICghZGVsYXlfbGlua18uZW1wdHkoKSkKICAgICByZXR1cm4gZGVsYXlfbGlua18uYmVn
aW4oKS0+YXJyaXZhbF90aW1lX3VzOwogICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvc2ltdWxh
dGVkX25ldHdvcmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvc2ltdWxhdGVkX25ldHdvcmsuaAppbmRleCAwZjg0NTMyODNhODhkZDk5ZGVlZGY3Yzhk
ZGVhY2MyNmQyOTJkOGVhLi5lOTc4MDI3MDkyYzc3OTNkZDNjZTQzMGQ5YmI3M2VmMzc3NWQyZWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9zaW11bGF0ZWRfbmV0d29yay5oCkBAIC0yOCw3ICsyOCw3IEBA
IG5hbWVzcGFjZSB3ZWJydGMgewogLy8gY2FwYWNpdHkgaW50cm9kdWNlZCBkZWxheS4KIGNsYXNz
IFNpbXVsYXRlZE5ldHdvcmsgOiBwdWJsaWMgTmV0d29ya0JlaGF2aW9ySW50ZXJmYWNlIHsKICBw
dWJsaWM6Ci0gIHVzaW5nIENvbmZpZyA9IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZzsK
KyAgdXNpbmcgQ29uZmlnID0gQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZzsKICAgZXhwbGlj
aXQgU2ltdWxhdGVkTmV0d29yayhDb25maWcgY29uZmlnLCB1aW50NjRfdCByYW5kb21fc2VlZCA9
IDEpOwogICB+U2ltdWxhdGVkTmV0d29yaygpIG92ZXJyaWRlOwogCkBAIC00OSw2ICs0OSw3IEBA
IGNsYXNzIFNpbXVsYXRlZE5ldHdvcmsgOiBwdWJsaWMgTmV0d29ya0JlaGF2aW9ySW50ZXJmYWNl
IHsKICAgICBpbnQ2NF90IGFycml2YWxfdGltZV91czsKICAgfTsKICAgcnRjOjpDcml0aWNhbFNl
Y3Rpb24gY29uZmlnX2xvY2tfOworICBib29sIHJlc2V0X2NhcGFjaXR5X2RlbGF5X2Vycm9yXyBS
VENfR1VBUkRFRF9CWShjb25maWdfbG9ja18pID0gZmFsc2U7CiAKICAgLy8gfHByb2Nlc3NfbG9j
a3wgZ3VhcmRzIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQgaW4gZGVsYXkgYW5kIGxvc3MK
ICAgLy8gcHJvY2Vzc2VzLCBzdWNoIGFzIHRoZSBwYWNrZXQgcXVldWVzLgpAQCAtNTYsNyArNTcs
NyBAQCBjbGFzcyBTaW11bGF0ZWROZXR3b3JrIDogcHVibGljIE5ldHdvcmtCZWhhdmlvckludGVy
ZmFjZSB7CiAgIHN0ZDo6cXVldWU8UGFja2V0SW5mbz4gY2FwYWNpdHlfbGlua18gUlRDX0dVQVJE
RURfQlkocHJvY2Vzc19sb2NrXyk7CiAgIFJhbmRvbSByYW5kb21fOwogCi0gIHN0ZDo6ZGVxdWU8
UGFja2V0SW5mbz4gZGVsYXlfbGlua187CisgIHN0ZDo6ZGVxdWU8UGFja2V0SW5mbz4gZGVsYXlf
bGlua18gUlRDX0dVQVJERURfQlkocHJvY2Vzc19sb2NrXyk7CiAKICAgLy8gTGluayBjb25maWd1
cmF0aW9uLgogICBDb25maWcgY29uZmlnXyBSVENfR1VBUkRFRF9CWShjb25maWdfbG9ja18pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2Fs
bC90ZXN0L2Zha2VfbmV0d29ya19waXBlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0L2Zha2VfbmV0d29ya19waXBlX3VuaXR0
ZXN0LmNjCmluZGV4IDA5ZTU4NTI0MWE0MDc2NzdhZjM3ZTlhN2MyNjZmZGFlYjE2MjQwNzQuLmRl
NWFlYzcxMzUyY2NjN2FlMDQ4ODFjYTYxYmFlM2I3OGMyYTZkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdGVzdC9mYWtlX25ldHdv
cmtfcGlwZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jYWxsL3Rlc3QvZmFrZV9uZXR3b3JrX3BpcGVfdW5pdHRlc3QuY2MKQEAgLTcz
LDcgKzczLDcgQEAgY2xhc3MgRmFrZU5ldHdvcmtQaXBlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgewogCiAvLyBUZXN0IHRoZSBjYXBhY2l0eSBsaW5rIGFuZCB2ZXJpZnkgd2UgZ2V0IGFz
IG1hbnkgcGFja2V0cyBhcyB3ZSBleHBlY3QuCiBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwg
Q2FwYWNpdHlUZXN0KSB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7
CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICBjb25maWcucXVldWVf
bGVuZ3RoX3BhY2tldHMgPSAyMDsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IDgwOwog
ICBNb2NrUmVjZWl2ZXIgcmVjZWl2ZXI7CkBAIC0xMTMsNyArMTEzLDcgQEAgVEVTVF9GKEZha2VO
ZXR3b3JrUGlwZVRlc3QsIENhcGFjaXR5VGVzdCkgewogCiAvLyBUZXN0IHRoZSBleHRyYSBuZXR3
b3JrIGRlbGF5LgogVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIEV4dHJhRGVsYXlUZXN0KSB7
Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgIEJ1aWx0SW5OZXR3
b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICBjb25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMg
PSAyMDsKICAgY29uZmlnLnF1ZXVlX2RlbGF5X21zID0gMTAwOwogICBjb25maWcubGlua19jYXBh
Y2l0eV9rYnBzID0gODA7CkBAIC0xNDksNyArMTQ5LDcgQEAgVEVTVF9GKEZha2VOZXR3b3JrUGlw
ZVRlc3QsIEV4dHJhRGVsYXlUZXN0KSB7CiAvLyBUZXN0IHRoZSBudW1iZXIgb2YgYnVmZmVycyBh
bmQgcGFja2V0cyBhcmUgZHJvcHBlZCB3aGVuIHNlbmRpbmcgdG9vIG1hbnkKIC8vIHBhY2tldHMg
dG9vIHF1aWNrbHkuCiBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgUXVldWVMZW5ndGhUZXN0
KSB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgIEJ1aWx0SW5O
ZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICBjb25maWcucXVldWVfbGVuZ3RoX3BhY2tl
dHMgPSAyOwogICBjb25maWcubGlua19jYXBhY2l0eV9rYnBzID0gODA7CiAgIE1vY2tSZWNlaXZl
ciByZWNlaXZlcjsKQEAgLTE3Myw3ICsxNzMsNyBAQCBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVz
dCwgUXVldWVMZW5ndGhUZXN0KSB7CiAKIC8vIFRlc3Qgd2UgZ2V0IHN0YXRpc3RpY3MgYXMgZXhw
ZWN0ZWQuCiBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgU3RhdGlzdGljc1Rlc3QpIHsKLSAg
RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtC
ZWhhdmlvckNvbmZpZyBjb25maWc7CiAgIGNvbmZpZy5xdWV1ZV9sZW5ndGhfcGFja2V0cyA9IDI7
CiAgIGNvbmZpZy5xdWV1ZV9kZWxheV9tcyA9IDIwOwogICBjb25maWcubGlua19jYXBhY2l0eV9r
YnBzID0gODA7CkBAIC0yMDUsNyArMjA1LDcgQEAgVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3Qs
IFN0YXRpc3RpY3NUZXN0KSB7CiAvLyBDaGFuZ2UgdGhlIGxpbmsgY2FwYWNpdHkgaGFsZi13YXkg
dGhyb3VnaCB0aGUgdGVzdCBhbmQgdmVyaWZ5IHRoYXQgdGhlCiAvLyBkZWxpdmVyeSB0aW1lcyBj
aGFuZ2UgYWNjb3JkaW5nbHkuCiBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgQ2hhbmdpbmdD
YXBhY2l0eVdpdGhFbXB0eVBpcGVUZXN0KSB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNv
bmZpZyBjb25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICBj
b25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMgPSAyMDsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlf
a2JwcyA9IDgwOwogICBNb2NrUmVjZWl2ZXIgcmVjZWl2ZXI7CkBAIC0yNjYsNyArMjY2LDcgQEAg
VEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIENoYW5naW5nQ2FwYWNpdHlXaXRoRW1wdHlQaXBl
VGVzdCkgewogLy8gQ2hhbmdlIHRoZSBsaW5rIGNhcGFjaXR5IGhhbGYtd2F5IHRocm91Z2ggdGhl
IHRlc3QgYW5kIHZlcmlmeSB0aGF0IHRoZQogLy8gZGVsaXZlcnkgdGltZXMgY2hhbmdlIGFjY29y
ZGluZ2x5LgogVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIENoYW5naW5nQ2FwYWNpdHlXaXRo
UGFja2V0c0luUGlwZVRlc3QpIHsKLSAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNv
bmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBjb25maWc7CiAgIGNvbmZpZy5x
dWV1ZV9sZW5ndGhfcGFja2V0cyA9IDIwOwogICBjb25maWcubGlua19jYXBhY2l0eV9rYnBzID0g
ODA7CiAgIE1vY2tSZWNlaXZlciByZWNlaXZlcjsKQEAgLTMyMSw3ICszMjEsNyBAQCBURVNUX0Yo
RmFrZU5ldHdvcmtQaXBlVGVzdCwgQ2hhbmdpbmdDYXBhY2l0eVdpdGhQYWNrZXRzSW5QaXBlVGVz
dCkgewogCiAvLyBBdCBmaXJzdCBkaXNhbGxvdyByZW9yZGVyaW5nIGFuZCB0aGVuIGFsbG93IHJl
b3JkZXJpbmcuCiBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgRGlzYWxsb3dSZW9yZGVyaW5n
VGhlbkFsbG93UmVvcmRlcmluZykgewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcg
Y29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgY29uZmln
LnF1ZXVlX2xlbmd0aF9wYWNrZXRzID0gMTAwMDsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2Jw
cyA9IDgwMDsKICAgY29uZmlnLnF1ZXVlX2RlbGF5X21zID0gMTAwOwpAQCAtMzc0LDcgKzM3NCw3
IEBAIFRFU1RfRihGYWtlTmV0d29ya1BpcGVUZXN0LCBCdXJzdExvc3MpIHsKICAgY29uc3QgaW50
IGtOdW1QYWNrZXRzID0gMTAwMDA7CiAgIGNvbnN0IGludCBrUGFja2V0U2l6ZSA9IDEwOwogCi0g
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgIEJ1aWx0SW5OZXR3b3Jr
QmVoYXZpb3JDb25maWcgY29uZmlnOwogICBjb25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMgPSBr
TnVtUGFja2V0czsKICAgY29uZmlnLmxvc3NfcGVyY2VudCA9IGtMb3NzUGVyY2VudDsKICAgY29u
ZmlnLmF2Z19idXJzdF9sb3NzX2xlbmd0aCA9IGtBdmdCdXJzdExlbmd0aDsKQEAgLTQwOSw3ICs0
MDksNyBAQCBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgQnVyc3RMb3NzKSB7CiB9CiAKIFRF
U1RfRihGYWtlTmV0d29ya1BpcGVUZXN0LCBTZXRSZWNlaXZlcikgewotICBEZWZhdWx0TmV0d29y
a1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmln
IGNvbmZpZzsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IDgwMDsKICAgTW9ja1JlY2Vp
dmVyIHJlY2VpdmVyOwogICBhdXRvIHNpbXVsYXRlZF9uZXR3b3JrID0gYWJzbDo6bWFrZV91bmlx
dWU8U2ltdWxhdGVkTmV0d29yaz4oY29uZmlnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdGVzdC9tb2NrX2JpdHJhdGVfYWxsb2Nh
dG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3Rl
c3QvbW9ja19iaXRyYXRlX2FsbG9jYXRvci5oCmluZGV4IDcxNGMwMjU0MWYxNzJhZDVkNWNkNjk0
YTgwOTJjYTE0M2I5NTQ0YzguLmYwMGVkNzljNTlmYjc4Mjg5ZjhkOTA0ZDg5YWZlODY1YjU5Yjll
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvdGVzdC9tb2NrX2JpdHJhdGVfYWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0L21vY2tfYml0cmF0ZV9hbGxvY2F0
b3IuaApAQCAtMjEsNyArMjEsNyBAQCBjbGFzcyBNb2NrQml0cmF0ZUFsbG9jYXRvciA6IHB1Ymxp
YyBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsKICAgTU9DS19NRVRIT0QyKEFkZE9ic2VydmVy
LAogICAgICAgICAgICAgICAgdm9pZChCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqLCBNZWRpYVN0
cmVhbUFsbG9jYXRpb25Db25maWcpKTsKICAgTU9DS19NRVRIT0QxKFJlbW92ZU9ic2VydmVyLCB2
b2lkKEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciopKTsKLSAgTU9DS19NRVRIT0QxKEdldFN0YXJ0
Qml0cmF0ZSwgaW50KEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciopKTsKKyAgTU9DS19DT05TVF9N
RVRIT0QxKEdldFN0YXJ0Qml0cmF0ZSwgaW50KEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciopKTsK
IH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAjZW5kaWYgIC8vIENBTExfVEVTVF9NT0NLX0JJ
VFJBVEVfQUxMT0NBVE9SX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jYWxsL3Rlc3QvbW9ja19ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJf
c2VuZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC90
ZXN0L21vY2tfcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaAppbmRleCAzNzU4N2IyYjc2
YjliZTE5ZGZhNjhiYzRhZTczYTQ1OGVjYmI0ZTE5Li40ZDM0ZDA2ZTA1NjdiOTllZjQwYTA5MzU3
ZmRlYzQ2NTQxMzRhZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3Rlc3QvbW9ja19ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2Vu
ZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
dGVzdC9tb2NrX3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kLmgKQEAgLTE3LDEyICsxNywx
NCBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9iaXRyYXRlX2NvbnN0cmFp
bnRzLmgiCisjaW5jbHVkZSAiYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmgiCisjaW5jbHVkZSAi
YXBpL2NyeXB0by9mcmFtZWVuY3J5cHRvcmludGVyZmFjZS5oIgogI2luY2x1ZGUgImNhbGwvcnRw
X3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvaW5jbHVkZS9uZXR3b3JrX2NoYW5nZWRfb2JzZXJ2ZXIu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdv
cmtyb3V0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhdGVfbGltaXRlci5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL3NvY2tldC5oIgogI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CkBAIC0zMCwxNyArMzIsMTggQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBN
b2NrUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQKICAgICA6IHB1YmxpYyBSdHBUcmFuc3BvcnRD
b250cm9sbGVyU2VuZEludGVyZmFjZSB7CiAgcHVibGljOgotICBNT0NLX01FVEhPRDkoCisgIE1P
Q0tfTUVUSE9EMTAoCiAgICAgICBDcmVhdGVSdHBWaWRlb1NlbmRlciwKICAgICAgIFJ0cFZpZGVv
U2VuZGVySW50ZXJmYWNlKihjb25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4mLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBTdGF0ZT4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjptYXA8dWludDMyX3QsIFJ0cFBh
eWxvYWRTdGF0ZT4mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJ0cENv
bmZpZyYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUnRjcENvbmZpZyYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFs
X21zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcG9ydCosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUnRwU2VuZGVyT2JzZXJ2ZXJzJiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNFdmVudExvZyosCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+KSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJ0cFNlbmRlckZyYW1lRW5jcnlw
dGlvbkNvbmZpZyYpKTsKICAgTU9DS19NRVRIT0QxKERlc3Ryb3lSdHBWaWRlb1NlbmRlciwgdm9p
ZChSdHBWaWRlb1NlbmRlckludGVyZmFjZSopKTsKICAgTU9DS19NRVRIT0QwKEdldFdvcmtlclF1
ZXVlLCBydGM6OlRhc2tRdWV1ZSooKSk7CiAgIE1PQ0tfTUVUSE9EMChwYWNrZXRfcm91dGVyLCBQ
YWNrZXRSb3V0ZXIqKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19yZWNlaXZlX3N0cmVhbS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19yZWNlaXZlX3N0cmVhbS5o
CmluZGV4IDQ5ZWZlNGZjZWFhNWVlNDY0NzE5MmIwOGE3ZjNlMDVjZWFjYTIyYTkuLjJjZDVmMTYz
MWEwOWIxNWEwMTk1MzE1YjdlYjg4YzNmMTZmYzcxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fcmVjZWl2ZV9zdHJlYW0u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3Zp
ZGVvX3JlY2VpdmVfc3RyZWFtLmgKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+
CiAKICNpbmNsdWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRv
L2NyeXB0b29wdGlvbnMuaCIKICNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKICNpbmNsdWRl
ICJhcGkvcnRwcGFyYW1ldGVycy5oIgogI2luY2x1ZGUgImFwaS9ydHByZWNlaXZlcmludGVyZmFj
ZS5oIgpAQCAtMjUsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3RpbWlu
Zy5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgogI2lu
Y2x1ZGUgImNhbGwvcnRwX2NvbmZpZy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8g
Tk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvZnJh
bWVfY2FsbGJhY2suaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRjcF9z
dGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNw
X2RlZmluZXMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNzIEZyYW1lRGVjcnlwdG9y
SW50ZXJmYWNlOwogY2xhc3MgUnRwUGFja2V0U2lua0ludGVyZmFjZTsKIGNsYXNzIFZpZGVvRGVj
b2RlckZhY3Rvcnk7CiAKQEAgLTIxNSw2ICsyMTYsMTQgQEAgY2xhc3MgVmlkZW9SZWNlaXZlU3Ry
ZWFtIHsKICAgICAvLyBUT0RPKG5pc3NlKTogVXNlZCB3aXRoIFZpZGVvRGVjb2RlckZhY3Rvcnk6
OkxlZ2FjeUNyZWF0ZVZpZGVvRGVjb2Rlci4KICAgICAvLyBEZWxldGUgd2hlbiB0aGF0IG1ldGhv
ZCBpcyByZXRpcmVkLgogICAgIHN0ZDo6c3RyaW5nIHN0cmVhbV9pZDsKKworICAgIC8vIEFuIG9w
dGlvbmFsIGN1c3RvbSBmcmFtZSBkZWNyeXB0b3IgdGhhdCBhbGxvd3MgdGhlIGVudGlyZSBmcmFt
ZSB0byBiZQorICAgIC8vIGRlY3J5cHRlZCBpbiB3aGF0ZXZlciB3YXkgdGhlIGNhbGxlciBjaG9z
ZXMuIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5CisgICAgLy8gZGVmYXVsdC4KKyAgICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlw
dG9yOworCisgICAgLy8gUGVyIFBlZXJDb25uZWN0aW9uIGNyeXB0b2dyYXBoeSBvcHRpb25zLgor
ICAgIENyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnM7CiAgIH07CiAKICAgLy8gU3RhcnRzIHN0
cmVhbSBhY3Rpdml0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fc2VuZF9zdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmNjCmluZGV4
IDZiOTNmZTI4MjM4YTRiOGUzNWRhMjMwZmRhZTQ1NWM2OGRjNTEzZTEuLmM4YmEzMDhmYTU0MjM2
YTJiZjA1NzMzYTQxNDZiMTE5YzRkNzM3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fc2VuZF9zdHJlYW0uY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19zZW5k
X3N0cmVhbS5jYwpAQCAtOSw2ICs5LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgImNhbGwvdmlkZW9f
c2VuZF9zdHJlYW0uaCIKKworI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJhcGkvY3J5
cHRvL2ZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
cy9zdHJpbmdfYnVpbGRlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTc1LDExICs3OSw5
IEBAIHN0ZDo6c3RyaW5nIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnOjpUb1N0cmluZygpIGNvbnN0
IHsKICAgc3MgPDwgIntlbmNvZGVyX3NldHRpbmdzOiB7IGV4cGVyaW1lbnRfY3B1X2xvYWRfZXN0
aW1hdG9yOiAiCiAgICAgIDw8IChlbmNvZGVyX3NldHRpbmdzLmV4cGVyaW1lbnRfY3B1X2xvYWRf
ZXN0aW1hdG9yID8gIm9uIiA6ICJvZmYiKSA8PCAifX0iOwogICBzcyA8PCAiLCBydHA6ICIgPDwg
cnRwLlRvU3RyaW5nKCk7Ci0gIHNzIDw8ICIsIHJ0Y3A6ICIgPDwgcnRjcC5Ub1N0cmluZygpOwor
ICBzcyA8PCAiLCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tczogIiA8PCBydGNwX3JlcG9ydF9pbnRl
cnZhbF9tczsKICAgc3MgPDwgIiwgcHJlX2VuY29kZV9jYWxsYmFjazogIgogICAgICA8PCAocHJl
X2VuY29kZV9jYWxsYmFjayA/ICIoVmlkZW9TaW5rSW50ZXJmYWNlKSIgOiAibnVsbHB0ciIpOwot
ICBzcyA8PCAiLCBwb3N0X2VuY29kZV9jYWxsYmFjazogIgotICAgICA8PCAocG9zdF9lbmNvZGVf
Y2FsbGJhY2sgPyAiKEVuY29kZWRGcmFtZU9ic2VydmVyKSIgOiAibnVsbHB0ciIpOwogICBzcyA8
PCAiLCByZW5kZXJfZGVsYXlfbXM6ICIgPDwgcmVuZGVyX2RlbGF5X21zOwogICBzcyA8PCAiLCB0
YXJnZXRfZGVsYXlfbXM6ICIgPDwgdGFyZ2V0X2RlbGF5X21zOwogICBzcyA8PCAiLCBzdXNwZW5k
X2JlbG93X21pbl9iaXRyYXRlOiAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmgK
aW5kZXggM2ZmNjI0ZDIzMGJkOTk4MTFjYzQwZWYxZDgzNTBiNzcyMGFiMTkyYS4uNGQzZDljMGM1
NzRjYjdmNzZjNmU5ZjliOTUxNDAyODRlZjZlYmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19zZW5kX3N0cmVhbS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9f
c2VuZF9zdHJlYW0uaApAQCAtMTEsMjQgKzExLDI5IEBACiAjaWZuZGVmIENBTExfVklERU9fU0VO
RF9TVFJFQU1fSF8KICNkZWZpbmUgQ0FMTF9WSURFT19TRU5EX1NUUkVBTV9IXwogCisjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRl
IDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJhcGkv
Y3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKKyNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgor
I2luY2x1ZGUgImFwaS92aWRlby92aWRlb19jb250ZW50X3R5cGUuaCIKKyNpbmNsdWRlICJhcGkv
dmlkZW8vdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc2lua19pbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc291cmNlX2ludGVyZmFjZS5oIgog
I2luY2x1ZGUgImFwaS92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlcl9zZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25maWcuaCIKLSNpbmNsdWRl
ICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNh
bGwvcnRwX2NvbmZpZy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1
aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvZnJhbWVfY2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRjcF9zdGF0aXN0aWNz
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNzIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNl
OworCiBjbGFzcyBWaWRlb1NlbmRTdHJlYW0gewogIHB1YmxpYzoKICAgc3RydWN0IFN0cmVhbVN0
YXRzIHsKQEAgLTEwOCw3ICsxMTMsOCBAQCBjbGFzcyBWaWRlb1NlbmRTdHJlYW0gewogCiAgICAg
UnRwQ29uZmlnIHJ0cDsKIAotICAgIFJ0Y3BDb25maWcgcnRjcDsKKyAgICAvLyBUaW1lIGludGVy
dmFsIGJldHdlZW4gUlRDUCByZXBvcnQgZm9yIHZpZGVvCisgICAgaW50IHJ0Y3BfcmVwb3J0X2lu
dGVydmFsX21zID0gMTAwMDsKIAogICAgIC8vIFRyYW5zcG9ydCBmb3Igb3V0Z29pbmcgcGFja2V0
cy4KICAgICBUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0ID0gbnVsbHB0cjsKQEAgLTExNywxMiAr
MTIzLDYgQEAgY2xhc3MgVmlkZW9TZW5kU3RyZWFtIHsKICAgICAvLyBlZmZlY3RzLCBzbmFwc2hv
dHMgZXRjLiAnbnVsbHB0cicgZGlzYWJsZXMgdGhlIGNhbGxiYWNrLgogICAgIHJ0Yzo6VmlkZW9T
aW5rSW50ZXJmYWNlPFZpZGVvRnJhbWU+KiBwcmVfZW5jb2RlX2NhbGxiYWNrID0gbnVsbHB0cjsK
IAotICAgIC8vIENhbGxlZCBmb3IgZWFjaCBlbmNvZGVkIGZyYW1lLCBlLmcuIHVzZWQgZm9yIGZp
bGUgc3RvcmFnZS4gJ251bGxwdHInCi0gICAgLy8gZGlzYWJsZXMgdGhlIGNhbGxiYWNrLiBBbHNv
IG1lYXN1cmVzIHRpbWluZyBhbmQgcGFzc2VzIHRoZSB0aW1lCi0gICAgLy8gc3BlbnQgb24gZW5j
b2RpbmcuIFRoaXMgdGltaW5nIHdpbGwgbm90IGZpcmUgaWYgZW5jb2RpbmcgdGFrZXMgbG9uZ2Vy
Ci0gICAgLy8gdGhhbiB0aGUgbWVhc3VyaW5nIHdpbmRvdywgc2luY2UgdGhlIHNhbXBsZSBkYXRh
IHdpbGwgaGF2ZSBiZWVuIGRyb3BwZWQuCi0gICAgRW5jb2RlZEZyYW1lT2JzZXJ2ZXIqIHBvc3Rf
ZW5jb2RlX2NhbGxiYWNrID0gbnVsbHB0cjsKLQogICAgIC8vIEV4cGVjdGVkIGRlbGF5IG5lZWRl
ZCBieSB0aGUgcmVuZGVyZXIsIGkuZS4gdGhlIGZyYW1lIHdpbGwgYmUgZGVsaXZlcmVkCiAgICAg
Ly8gdGhpcyBtYW55IG1pbGxpc2Vjb25kcywgaWYgcG9zc2libGUsIGVhcmxpZXIgdGhhbiBleHBl
Y3RlZCByZW5kZXIgdGltZS4KICAgICAvLyBPbmx5IHZhbGlkIGlmIHxsb2NhbF9yZW5kZXJlcnwg
aXMgc2V0LgpAQCAtMTQzLDYgKzE0MywxNCBAQCBjbGFzcyBWaWRlb1NlbmRTdHJlYW0gewogICAg
IC8vIFRyYWNrIElEIGFzIHNwZWNpZmllZCBkdXJpbmcgdHJhY2sgY3JlYXRpb24uCiAgICAgc3Rk
OjpzdHJpbmcgdHJhY2tfaWQ7CiAKKyAgICAvLyBBbiBvcHRpb25hbCBjdXN0b20gZnJhbWUgZW5j
cnlwdG9yIHRoYXQgYWxsb3dzIHRoZSBlbnRpcmUgZnJhbWUgdG8gYmUKKyAgICAvLyBlbmNyeXB0
ZWQgaW4gd2hhdGV2ZXIgd2F5IHRoZSBjYWxsZXIgY2hvb3Nlcy4gVGhpcyBpcyBub3QgcmVxdWly
ZWQgYnkKKyAgICAvLyBkZWZhdWx0LgorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZy
YW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9lbmNyeXB0b3I7CisKKyAgICAvLyBQZXIgUGVl
ckNvbm5lY3Rpb24gY3J5cHRvZ3JhcGh5IG9wdGlvbnMuCisgICAgQ3J5cHRvT3B0aW9ucyBjcnlw
dG9fb3B0aW9uczsKKwogICAgcHJpdmF0ZToKICAgICAvLyBBY2Nlc3MgdG8gdGhlIGNvcHkgY29u
c3RydWN0b3IgaXMgcHJpdmF0ZSB0byBmb3JjZSB1c2Ugb2YgdGhlIENvcHkoKQogICAgIC8vIG1l
dGhvZCBmb3IgdGhvc2UgZXhjZXB0aW9uYWwgY2FzZXMgd2hlcmUgd2UgZG8gdXNlIGl0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29kZXJl
dmlldy5zZXR0aW5ncyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvZGVyZXZpZXcuc2V0dGluZ3MKaW5kZXggZDhjZjYxMjVmNGUzYTUyMmJlNThkZDg1Y2JjNzg4
YmE4MmM2YWM1Yy4uMTcyNGVkZGMwNzJkZWZlMWY0MWZmMGZmZGUxMTZjMzA0NDYzODdkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29kZXJl
dmlldy5zZXR0aW5ncworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb2RlcmV2aWV3LnNldHRpbmdzCkBAIC0xLDUgKzEsNCBAQAogIyBUaGlzIGZpbGUgaXMg
dXNlZCBieSBnaXQtY2wgdG8gZ2V0IHJlcG9zaXRvcnkgc3BlY2lmaWMgaW5mb3JtYXRpb24uCi1D
Q19MSVNUOiB3ZWJydGMtcmV2aWV3c0B3ZWJydGMub3JnCiBDT0RFX1JFVklFV19TRVJWRVI6IGNv
ZGVyZXZpZXcud2VicnRjLm9yZwogR0VSUklUX0hPU1Q6IFRydWUKIFBST0pFQ1Q6IHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX2F1ZGlvL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX2F1ZGlvL0JVSUxELmduCmluZGV4IGFiY2ZlOWFkMTY4M2ZiYmI1ODcwN2E3
ZGI2NTJiMzlkM2U5YzJlMGIuLjc0YjBjNjAyOWZkZTY4NzdkOWRiMzBlZGViOTE1ZmE0MzFmN2E4
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl9hdWRpby9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vQlVJTEQuZ24KQEAgLTQ3LDEwICs0NywxMCBAQCBy
dGNfc3RhdGljX2xpYnJhcnkoImNvbW1vbl9hdWRpbyIpIHsKICAgZGVwcyA9IFsKICAgICAiOmNv
bW1vbl9hdWRpb19jIiwKICAgICAiOnNpbmNfcmVzYW1wbGVyIiwKLSAgICAiLi46d2VicnRjX2Nv
bW1vbiIsCiAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlOmd0ZXN0
X3Byb2QiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uL3J0
Y19iYXNlOnNhbml0aXplciIsCiAgICAgIi4uL3J0Y19iYXNlL21lbW9yeTphbGlnbmVkX2FycmF5
IiwKICAgICAiLi4vcnRjX2Jhc2UvbWVtb3J5OmFsaWduZWRfbWFsbG9jIiwKICAgICAiLi4vcnRj
X2Jhc2Uvc3lzdGVtOmFyY2giLApAQCAtMTgxLDcgKzE4MSw2IEBAIHJ0Y19zb3VyY2Vfc2V0KCJj
b21tb25fYXVkaW9fYyIpIHsKICAgZGVwcyA9IFsKICAgICAiOmNvbW1vbl9hdWRpb19jX2FybV9h
c20iLAogICAgICI6Y29tbW9uX2F1ZGlvX2NjIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAg
ICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlOmNvbXBpbGVfYXNzZXJ0
X2MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCkBAIC0yMDEsNyArMjAw
LDYgQEAgcnRjX3NvdXJjZV9zZXQoImNvbW1vbl9hdWRpb19jYyIpIHsKICAgXQogCiAgIGRlcHMg
PSBbCi0gICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9h
cHByb3ZlZCIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVycyIsCiAgIF0KQEAgLTIxMiw3ICsyMTAs
NiBAQCBydGNfc291cmNlX3NldCgic2luY19yZXNhbXBsZXIiKSB7CiAgICAgInJlc2FtcGxlci9z
aW5jX3Jlc2FtcGxlci5oIiwKICAgXQogICBkZXBzID0gWwotICAgICIuLjp3ZWJydGNfY29tbW9u
IiwKICAgICAiLi4vcnRjX2Jhc2U6Z3Rlc3RfcHJvZCIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKICAgICAiLi4vcnRjX2Jhc2UvbWVtb3J5OmFsaWduZWRfbWFsbG9jIiwK
QEAgLTM4MSw3ICszNzgsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6Zmly
X2ZpbHRlciIsCiAgICAgICAiOmZpcl9maWx0ZXJfZmFjdG9yeSIsCiAgICAgICAiOnNpbmNfcmVz
YW1wbGVyIiwKLSAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi9ydGNfYmFzZTpj
aGVja3MiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIu
Li9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCkBAIC0zODksNiArMzg1LDcgQEAgaWYg
KHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmNwdV9mZWF0
dXJlc19hcGkiLAogICAgICAgIi4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi90ZXN0OnRl
c3RfbWFpbiIsCisgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGlu
Zy9ndGVzdCIsCiAgICAgXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vYXVkaW9fY29udmVydGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vYXVkaW9fY29u
dmVydGVyLmgKaW5kZXggNzY5ZDcyNGUyZmI2OWUwYjQzMjkzM2U3NzBjYWYyOWNiNTBjMGZmMi4u
MjRhNWU3MmNlZTkwNDA4OTBhOTdlMjZiYjBlMDIzYmMxZjQzODY5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2F1ZGlv
X2NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl9hdWRpby9hdWRpb19jb252ZXJ0ZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lm
bmRlZiBDT01NT05fQVVESU9fQVVESU9fQ09OVkVSVEVSX0hfCiAjZGVmaW5lIENPTU1PTl9BVURJ
T19BVURJT19DT05WRVJURVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRp
by9jaGFubmVsX2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl9hdWRpby9jaGFubmVsX2J1ZmZlci5jYwppbmRleCAzOGQyMzFlMDlkMDY0
NzFmOTliZDI4ZmYyNjY4ZjAxNGRmYThlMjQyLi5iOWI4YzI1ZTM3NTA2ZWQzODk5Zjg0ZjBhOWY5
ZGNlN2M5ZjAxYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vY2hhbm5lbF9idWZmZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2NoYW5uZWxfYnVm
ZmVyLmNjCkBAIC0xMCw2ICsxMCw5IEBACiAKICNpbmNsdWRlICJjb21tb25fYXVkaW8vY2hhbm5l
bF9idWZmZXIuaCIKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisKKyNpbmNsdWRlICJjb21tb25fYXVk
aW8vaW5jbHVkZS9hdWRpb191dGlsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2Zpcl9maWx0ZXJfYy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVy
X2MuY2MKaW5kZXggMzQxODQzNDY3MmFjZTNlMjFhYjJhZjBlNGM0OGY3NzNkOGZhZGRmMS4uYjZl
YzI3YWQyNmJkYTZmY2I5YjBjOTI0OGU4YjM3YWYzYzI0ZWM0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2Zpcl9maWx0
ZXJfYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fYXVkaW8vZmlyX2ZpbHRlcl9jLmNjCkBAIC0xMSwxMSArMTEsOCBAQAogI2luY2x1ZGUg
ImNvbW1vbl9hdWRpby9maXJfZmlsdGVyX2MuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgotCiAj
aW5jbHVkZSA8bWVtb3J5PgogCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2Zpcl9maWx0ZXJfbmVv
bi5oIgotI2luY2x1ZGUgImNvbW1vbl9hdWRpby9maXJfZmlsdGVyX3NzZS5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJf
ZmlsdGVyX2ZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9mYWN0b3J5LmNjCmluZGV4IDMyNDNiMjdlZjlh
ZDJkZjYyNGM1YWM3ZWQ3ZGRmYzliNzdiNjUxMmEuLjE5NTI4ZTMxMmVjNTRjYzYxNzVjMzU4ZWMz
YWM3OWNmMjRkZTg3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVyX2ZhY3RvcnkuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2Zpcl9m
aWx0ZXJfZmFjdG9yeS5jYwpAQCAtMTMsMTIgKzEzLDEyIEBACiAjaW5jbHVkZSAiY29tbW9uX2F1
ZGlvL2Zpcl9maWx0ZXJfYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3N5c3RlbS9hcmNoLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2lu
Y2x1ZGUvY3B1X2ZlYXR1cmVzX3dyYXBwZXIuaCIKIAogI2lmIGRlZmluZWQoV0VCUlRDX0hBU19O
RU9OKQogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9maXJfZmlsdGVyX25lb24uaCIKICNlbGlmIGRl
ZmluZWQoV0VCUlRDX0FSQ0hfWDg2X0ZBTUlMWSkKICNpbmNsdWRlICJjb21tb25fYXVkaW8vZmly
X2ZpbHRlcl9zc2UuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jcHVfZmVh
dHVyZXNfd3JhcHBlci5oIiAgLy8ga1NTRTIsIFdlYlJ0Y19HLi4uCiAjZW5kaWYKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9zc2UuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVyX3NzZS5o
CmluZGV4IDc3MDdmOTMzZDllZTZiN2IxMzA1YzU2OTRjN2JkZGE2NTMwZTAxY2EuLmI3NjhhMzdh
YTE1NDRiMDhhNmNlYTNlYzEzNzc4ZmMyMzM0NmQ0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVyX3Nz
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl9hdWRpby9maXJfZmlsdGVyX3NzZS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIENPTU1P
Tl9BVURJT19GSVJfRklMVEVSX1NTRV9IXwogI2RlZmluZSBDT01NT05fQVVESU9fRklSX0ZJTFRF
Ul9TU0VfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2lu
Y2x1ZGUgImNvbW1vbl9hdWRpby9maXJfZmlsdGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vaW5jbHVkZS9hdWRp
b191dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fYXVkaW8vaW5jbHVkZS9hdWRpb191dGlsLmgKaW5kZXggZGUyNDJhNDliZThiNjYzNDg0YThi
OWViNGU1ZmFlY2IwMzgyN2FmNC4uYmNhNTcxODA0NGM5MGU4NjE5MWEyMjE4ZWViY2NhNTIyZWZj
MTYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0
aWwuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBDT01NT05fQVVESU9fSU5DTFVERV9BVURJ
T19VVElMX0hfCiAjZGVmaW5lIENPTU1PTl9BVURJT19JTkNMVURFX0FVRElPX1VUSUxfSF8KIAor
I2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0
aD4KICNpbmNsdWRlIDxjc3RyaW5nPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3JlYWxfZm91cmllci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3JlYWxfZm91
cmllci5oCmluZGV4IGEzZTRkZDE2YTgyYzIxMzQ5ZWZhNjA4MjhkOTdhYTljNTc4MmY4MTUuLjRk
MGQ4YmYzOGVlOTBiNjJhNjgxYmQzYzk0MDU4MDJkOGY3NGZkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZWFsX2Zv
dXJpZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fYXVkaW8vcmVhbF9mb3VyaWVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgQ09N
TU9OX0FVRElPX1JFQUxfRk9VUklFUl9IXwogI2RlZmluZSBDT01NT05fQVVESU9fUkVBTF9GT1VS
SUVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxjb21wbGV4PgogI2luY2x1
ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3JlYWxfZm91cmllcl9vb3VyYS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3JlYWxfZm91cmll
cl9vb3VyYS5oCmluZGV4IGJiOGVlZjk2ZGZmNmVmMTAzZDM5NDkxZmJkMDlkNmRiMWVhMWQwNzIu
LmIzNmM4NGYxMGI2YjIzODIxMmU2MzdhYjUwNWIzZDU4NGUyMzBhZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZWFs
X2ZvdXJpZXJfb291cmEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVhbF9mb3VyaWVyX29vdXJhLmgKQEAgLTExLDYgKzExLDcg
QEAKICNpZm5kZWYgQ09NTU9OX0FVRElPX1JFQUxfRk9VUklFUl9PT1VSQV9IXwogI2RlZmluZSBD
T01NT05fQVVESU9fUkVBTF9GT1VSSUVSX09PVVJBX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4K
ICNpbmNsdWRlIDxjb21wbGV4PgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2Ft
cGxlci9wdXNoX3Jlc2FtcGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvcHVzaF9yZXNhbXBsZXIuY2MKaW5kZXgg
MzE4ZDk3YjcyYzI4YWQ1MGYzYjAzMzdhYWYzYjNmZDg1NWE1NDJjOC4uOWI4OTg2N2U1YTBkYzkz
MDMzNTI3NmVlMDk4M2MyYTczOTYxMzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3Jlc2Ft
cGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fYXVkaW8vcmVzYW1wbGVyL3B1c2hfcmVzYW1wbGVyLmNjCkBAIC0xMCwxMiArMTAsMTIg
QEAKIAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yZXNhbXBsZXIvaW5jbHVkZS9wdXNoX3Jlc2Ft
cGxlci5oIgogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5oIgogI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0
aWwuaCIKLSNpbmNsdWRlICJjb21tb25fYXVkaW8vcmVzYW1wbGVyL2luY2x1ZGUvcmVzYW1wbGVy
LmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3NpbmNfcmVzYW1wbGVy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIv
cHVzaF9zaW5jX3Jlc2FtcGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3NpbmNfcmVzYW1wbGVyLmgKaW5k
ZXggMWZmZTczZjc5YmEyODA2ZGFhOTMyNjhhMWY4NTk3ZGMxMTYyYTRiOS4uZGI5Y2RjMWZkNGIz
M2U4YTU2MmJjYjMyMjYyMTBiZTdhZDQyOGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3Np
bmNfcmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3NpbmNfcmVzYW1wbGVyLmgKQEAgLTEx
LDYgKzExLDggQEAKICNpZm5kZWYgQ09NTU9OX0FVRElPX1JFU0FNUExFUl9QVVNIX1NJTkNfUkVT
QU1QTEVSX0hfCiAjZGVmaW5lIENPTU1PTl9BVURJT19SRVNBTVBMRVJfUFVTSF9TSU5DX1JFU0FN
UExFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jl
c2FtcGxlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9yZXNhbXBsZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3Jl
c2FtcGxlci5jYwppbmRleCBhYTNhNGJhYzJhYTJiYzIzNDQ3Y2UyOGY1NzY2MmNkOTZiM2VkNzI1
Li5lNGQyYWEyYjYxNTU5ZWQ0NTA5OTcwZjZlNTU0OWEyN2NmZjAwNTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVz
YW1wbGVyL3Jlc2FtcGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3Jlc2FtcGxlci5jYwpAQCAtMTIsNiAr
MTIsNyBAQAogICogQSB3cmFwcGVyIGZvciByZXNhbXBsaW5nIGEgbnVtZXJvdXMgYW1vdW50IG9m
IHNhbXBsaW5nIGNvbWJpbmF0aW9ucy4KICAqLwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBs
ZXIvc2luY19yZXNhbXBsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyLmNjCmluZGV4IDVh
YTIwNjFhYjc1ZWM0ZGIxMjJlMDk5Njc1NjZkMTA3ZGFmNmJjNDEuLjQ2MDE1MTQwMzAzMTEyZDNl
MmM3YmQ1ZDkxN2Q5NjdkOTE2YTI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNhbXBs
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlci5jYwpAQCAtODgsMTMgKzg4LDEzIEBA
CiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlci5oIgogCiAj
aW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZy5o
PgotCiAjaW5jbHVkZSA8bGltaXRzPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBl
cnMvaW5jbHVkZS9jcHVfZmVhdHVyZXNfd3JhcHBlci5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFw
cGVycy9pbmNsdWRlL2NwdV9mZWF0dXJlc193cmFwcGVyLmgiICAvLyBrU1NFMiwgV2ViUnRjX0cu
Li4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNh
bXBsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNhbXBsZXIuaAppbmRleCA4YTgzM2NlODhjOTlhMzJm
ODBiZGZmZDgyNTYxODYyYjU0MjNhNTY5Li4wYmU0MzE4ZTMzOTIyMDcwNDU3ZGUwNTk1Yjg3OTU3
OGRkZGRiNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2Ft
cGxlci9zaW5jX3Jlc2FtcGxlci5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaWZuZGVmIENPTU1PTl9B
VURJT19SRVNBTVBMRVJfU0lOQ19SRVNBTVBMRVJfSF8KICNkZWZpbmUgQ09NTU9OX0FVRElPX1JF
U0FNUExFUl9TSU5DX1JFU0FNUExFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVk
ZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlcl9zc2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVz
YW1wbGVyX3NzZS5jYwppbmRleCAzOTA2YTc5NzUyOGE0MjVkMDM2MjFlYTE3MDYxNGZkZDBlMWJi
OTI3Li5mNmEyNGQwYTBlMGQzNDE3NDczMmU2OGE5MWY4MzIwNDYwNWZhYjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8v
cmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyX3NzZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1w
bGVyX3NzZS5jYwpAQCAtMTEsMTAgKzExLDEyIEBACiAvLyBNb2RpZmllZCBmcm9tIHRoZSBDaHJv
bWl1bSBvcmlnaW5hbDoKIC8vIHNyYy9tZWRpYS9iYXNlL3NpbWQvc2luY19yZXNhbXBsZXJfc3Nl
LmNjCiAKLSNpbmNsdWRlICJjb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyLmgi
Ci0KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx4
bW1pbnRyaW4uaD4KIAorI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNh
bXBsZXIuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGZsb2F0IFNpbmNSZXNhbXBsZXI6OkNv
bnZvbHZlX1NTRShjb25zdCBmbG9hdCogaW5wdXRfcHRyLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Ntb290aGluZ19m
aWx0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fYXVkaW8vc21vb3RoaW5nX2ZpbHRlci5jYwppbmRleCBkNDI2YmRhMjUwMTM0M2NjNzIxYTVi
MmMwZjUyZmI2NmMwMzUyOTBlLi4wZDVhYWE0ODU0MTU5MDRlYjNjY2RiMDIzZmEyYjM3YjgxZmQ4
NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fYXVkaW8vc21vb3RoaW5nX2ZpbHRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vc21vb3RoaW5nX2ZpbHRlci5j
YwpAQCAtMTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSA8Y21hdGg+CiAKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vc21vb3RoaW5nX2ZpbHRlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Ntb290aGluZ19maWx0
ZXIuaAppbmRleCBjZmY3NDY5NTNhYTgwYWQ5MGNkZDVkMjllM2Q5MTUxNzFiMzViZjIzLi5jNDY3
ZDg1NDI2OTU2Zjg4OGNmMDI1Y2JjZGE1OWI4ZTQwZTBkMDExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vc21vb3RoaW5n
X2ZpbHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl9hdWRpby9zbW9vdGhpbmdfZmlsdGVyLmgKQEAgLTExLDkgKzExLDEwIEBACiAjaWZu
ZGVmIENPTU1PTl9BVURJT19TTU9PVEhJTkdfRklMVEVSX0hfCiAjZGVmaW5lIENPTU1PTl9BVURJ
T19TTU9PVEhJTkdfRklMVEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby92YWQvdmFkLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3ZhZC92YWQuY2MKaW5kZXgg
MWNiMzMyYTYxZDg4N2ZkMjRkYjE1YWVhNWI4YzFlYTdlODkxNWExMi4uOTg3ZWQ1MjZjMDBhOTc5
M2NhOTdmY2EzMGIzMjQ4YmU2NmIwNjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3ZhZC92YWQuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3ZhZC92
YWQuY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUg
ImNvbW1vbl9hdWRpby92YWQvaW5jbHVkZS93ZWJydGNfdmFkLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlv
L3dhdl9maWxlLmNjCmluZGV4IDAyMDlmNTJkMmM3MzU5MmVhYTYzZGEyNWYyYmQ5MWQzZTk3YmVl
ODUuLjkwYTg5MjgxZTVjZDQ4ZGMyZTMyYzIwNTUzYzAwZjFkMWY4Nzg1YmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93
YXZfZmlsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKQEAgLTEwLDM1ICsxMCw0NSBAQAogCiAjaW5jbHVk
ZSAiY29tbW9uX2F1ZGlvL3dhdl9maWxlLmgiCiAKKyNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1
ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8bGltaXRzPgorI2lu
Y2x1ZGUgPHR5cGVfdHJhaXRzPgogCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVk
aW9fdXRpbC5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby93YXZfaGVhZGVyLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7
CiAKIC8vIFdlIHdyaXRlIDE2LWJpdCBQQ00gV0FWIGZpbGVzLgotc3RhdGljIGNvbnN0IFdhdkZv
cm1hdCBrV2F2Rm9ybWF0ID0ga1dhdkZvcm1hdFBjbTsKLXN0YXRpYyBjb25zdCBzaXplX3Qga0J5
dGVzUGVyU2FtcGxlID0gMjsKK2NvbnN0ZXhwciBXYXZGb3JtYXQga1dhdkZvcm1hdCA9IGtXYXZG
b3JtYXRQY207CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxX
YXZGb3JtYXQ+Ojp2YWx1ZSwgIiIpOworY29uc3RleHByIHNpemVfdCBrQnl0ZXNQZXJTYW1wbGUg
PSAyOwogCiAvLyBEb2Vzbid0IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBmaWxlIGhhbmRsZSBhbmQg
d29uJ3QgY2xvc2UgaXQuCiBjbGFzcyBSZWFkYWJsZVdhdkZpbGUgOiBwdWJsaWMgUmVhZGFibGVX
YXYgewogIHB1YmxpYzoKICAgZXhwbGljaXQgUmVhZGFibGVXYXZGaWxlKEZJTEUqIGZpbGUpIDog
ZmlsZV8oZmlsZSkge30KKyAgUmVhZGFibGVXYXZGaWxlKGNvbnN0IFJlYWRhYmxlV2F2RmlsZSYp
ID0gZGVsZXRlOworICBSZWFkYWJsZVdhdkZpbGUmIG9wZXJhdG9yPShjb25zdCBSZWFkYWJsZVdh
dkZpbGUmKSA9IGRlbGV0ZTsKICAgc2l6ZV90IFJlYWQodm9pZCogYnVmLCBzaXplX3QgbnVtX2J5
dGVzKSBvdmVycmlkZSB7CiAgICAgcmV0dXJuIGZyZWFkKGJ1ZiwgMSwgbnVtX2J5dGVzLCBmaWxl
Xyk7CiAgIH0KKyAgYm9vbCBFb2YoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmZW9mKGZpbGVf
KSAhPSAwOyB9CisgIGJvb2wgU2Vla0ZvcndhcmQodWludDMyX3QgbnVtX2J5dGVzKSBvdmVycmlk
ZSB7CisgICAgcmV0dXJuIGZzZWVrKGZpbGVfLCBudW1fYnl0ZXMsIFNFRUtfQ1VSKSA9PSAwOwor
ICB9CiAKICBwcml2YXRlOgogICBGSUxFKiBmaWxlXzsKIH07CiAKK30gIC8vIG5hbWVzcGFjZQor
CiBXYXZSZWFkZXI6OldhdlJlYWRlcihjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpCiAgICAg
OiBXYXZSZWFkZXIocnRjOjpPcGVuUGxhdGZvcm1GaWxlUmVhZE9ubHkoZmlsZW5hbWUpKSB7fQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fYXVkaW8vd2F2X2hlYWRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCmluZGV4IDhmYzVmZWY1MDg1
MjMwNjY4Mzc5ZGVjMGYyOTQ3NjQzMDU1MmM2NzMuLmU0OWI3NDg5YjJlZmEzZWFlZDZhYmFlNmQ2
YTcyNDMxMDBkY2VmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNj
CkBAIC0xNCwxMyArMTQsMTMgQEAKIAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby93YXZfaGVhZGVy
LmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRl
IDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2lu
Y2x1ZGUvYXVkaW9fdXRpbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zYW5pdGl6ZXIuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
QEAgLTMyLDYgKzMyLDExIEBAIHN0cnVjdCBDaHVua0hlYWRlciB7CiB9Owogc3RhdGljX2Fzc2Vy
dChzaXplb2YoQ2h1bmtIZWFkZXIpID09IDgsICJDaHVua0hlYWRlciBzaXplIik7CiAKK3N0cnVj
dCBSaWZmSGVhZGVyIHsKKyAgQ2h1bmtIZWFkZXIgaGVhZGVyOworICB1aW50MzJfdCBGb3JtYXQ7
Cit9OworCiAvLyBXZSBjYW4ndCBuZXN0IHRoaXMgZGVmaW5pdGlvbiBpbiBXYXZIZWFkZXIsIGJl
Y2F1c2UgVlMyMDEzIGdpdmVzIGFuIGVycm9yCiAvLyBvbiBzaXplb2YoV2F2SGVhZGVyOjpmbXQp
OiAiZXJyb3IgQzIwNzA6ICd1bmtub3duJzogaWxsZWdhbCBzaXplb2Ygb3BlcmFuZCIuCiBzdHJ1
Y3QgRm10U3ViY2h1bmsgewpAQCAtNDYsMTEgKzUxLDEyIEBAIHN0cnVjdCBGbXRTdWJjaHVuayB7
CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihGbXRTdWJjaHVuaykgPT0gMjQsICJGbXRTdWJjaHVuayBz
aXplIik7CiBjb25zdCB1aW50MzJfdCBrRm10U3ViY2h1bmtTaXplID0gc2l6ZW9mKEZtdFN1YmNo
dW5rKSAtIHNpemVvZihDaHVua0hlYWRlcik7CiAKKy8vIFNpbXBsZSB3YXYgaGVhZGVyLiBJdCBk
b2VzIG5vdCBpbmNsdWRlIGNodW5rcyB0aGF0IGFyZSBub3QgZXNzZW50aWFsIHRvIHJlYWQKKy8v
IGF1ZGlvIHNhbXBsZXMuCiBzdHJ1Y3QgV2F2SGVhZGVyIHsKLSAgc3RydWN0IHsKLSAgICBDaHVu
a0hlYWRlciBoZWFkZXI7Ci0gICAgdWludDMyX3QgRm9ybWF0OwotICB9IHJpZmY7CisgIFdhdkhl
YWRlcihjb25zdCBXYXZIZWFkZXImKSA9IGRlZmF1bHQ7CisgIFdhdkhlYWRlciYgb3BlcmF0b3I9
KGNvbnN0IFdhdkhlYWRlciYpID0gZGVmYXVsdDsKKyAgUmlmZkhlYWRlciByaWZmOwogICBGbXRT
dWJjaHVuayBmbXQ7CiAgIHN0cnVjdCB7CiAgICAgQ2h1bmtIZWFkZXIgaGVhZGVyOwpAQCAtNTgs
NiArNjQsODcgQEAgc3RydWN0IFdhdkhlYWRlciB7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2Yo
V2F2SGVhZGVyKSA9PSBrV2F2SGVhZGVyU2l6ZSwgIm5vIHBhZGRpbmcgaW4gaGVhZGVyIik7CiAK
KyNpZmRlZiBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCitzdGF0aWMgaW5saW5lIHZvaWQgV3Jp
dGVMRTE2KHVpbnQxNl90KiBmLCB1aW50MTZfdCB4KSB7CisgICpmID0geDsKK30KK3N0YXRpYyBp
bmxpbmUgdm9pZCBXcml0ZUxFMzIodWludDMyX3QqIGYsIHVpbnQzMl90IHgpIHsKKyAgKmYgPSB4
OworfQorc3RhdGljIGlubGluZSB2b2lkIFdyaXRlRm91ckNDKHVpbnQzMl90KiBmLCBjaGFyIGEs
IGNoYXIgYiwgY2hhciBjLCBjaGFyIGQpIHsKKyAgKmYgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
YSkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYikgPDwgOCB8CisgICAgICAgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGMpIDw8IDE2IHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGQpIDw8IDI0OworfQor
CitzdGF0aWMgaW5saW5lIHVpbnQxNl90IFJlYWRMRTE2KHVpbnQxNl90IHgpIHsKKyAgcmV0dXJu
IHg7Cit9CitzdGF0aWMgaW5saW5lIHVpbnQzMl90IFJlYWRMRTMyKHVpbnQzMl90IHgpIHsKKyAg
cmV0dXJuIHg7Cit9CitzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIFJlYWRGb3VyQ0ModWludDMy
X3QgeCkgeworICByZXR1cm4gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJngp
LCA0KTsKK30KKyNlbHNlCisjZXJyb3IgIldyaXRlIGJlLXRvLWxlIGNvbnZlcnNpb24gZnVuY3Rp
b25zIgorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgUmlmZkNodW5rU2l6ZShzaXpl
X3QgYnl0ZXNfaW5fcGF5bG9hZCkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJ5
dGVzX2luX3BheWxvYWQgKyBrV2F2SGVhZGVyU2l6ZSAtCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZW9mKENodW5rSGVhZGVyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMy
X3QgQnl0ZVJhdGUoc2l6ZV90IG51bV9jaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHNhbXBsZV9yYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgYnl0ZXNfcGVyX3NhbXBsZSkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG51bV9jaGFubmVscyAqIHNhbXBsZV9yYXRlICogYnl0ZXNfcGVyX3NhbXBsZSk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgdWludDE2X3QgQmxvY2tBbGlnbihzaXplX3QgbnVtX2NoYW5uZWxzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlc19wZXJfc2FtcGxl
KSB7CisgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MTZfdD4obnVtX2NoYW5uZWxzICogYnl0ZXNf
cGVyX3NhbXBsZSk7Cit9CisKKy8vIEZpbmRzIGEgY2h1bmsgaGF2aW5nIHRoZSBzb3VnaHQgSUQu
IElmIGZvdW5kLCB0aGVuIHxyZWFkYWJsZXwgcG9pbnRzIHRvIHRoZQorLy8gZmlyc3QgYnl0ZSBv
ZiB0aGUgc291Z2h0IGNodW5rIGRhdGEuIElmIG5vdCBmb3VuZCwgdGhlIGVuZCBvZiB0aGUgZmls
ZSBpcworLy8gcmVhY2hlZC4KK3ZvaWQgRmluZFdhdmVDaHVuayhDaHVua0hlYWRlciogY2h1bmtf
aGVhZGVyLAorICAgICAgICAgICAgICAgICAgIFJlYWRhYmxlV2F2KiByZWFkYWJsZSwKKyAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBzb3VnaHRfY2h1bmtfaWQpIHsKKyAgUlRD
X0RDSEVDS19FUShzb3VnaHRfY2h1bmtfaWQuc2l6ZSgpLCA0KTsKKyAgd2hpbGUgKCFyZWFkYWJs
ZS0+RW9mKCkpIHsKKyAgICBpZiAocmVhZGFibGUtPlJlYWQoY2h1bmtfaGVhZGVyLCBzaXplb2Yo
KmNodW5rX2hlYWRlcikpICE9CisgICAgICAgIHNpemVvZigqY2h1bmtfaGVhZGVyKSkKKyAgICAg
IHJldHVybjsgIC8vIEVPRi4KKyAgICBpZiAoUmVhZEZvdXJDQyhjaHVua19oZWFkZXItPklEKSA9
PSBzb3VnaHRfY2h1bmtfaWQpCisgICAgICByZXR1cm47ICAvLyBTb3VnaHQgY2h1bmsgZm91bmQu
CisgICAgLy8gSWdub3JlIGN1cnJlbnQgY2h1bmsgYnkgc2tpcHBpbmcgaXRzIHBheWxvYWQuCisg
ICAgaWYgKCFyZWFkYWJsZS0+U2Vla0ZvcndhcmQoY2h1bmtfaGVhZGVyLT5TaXplKSkKKyAgICAg
IHJldHVybjsgIC8vIEVPRiBvciBlcnJvci4KKyAgfQorICByZXR1cm47ICAvLyBFT0YuCit9CisK
K2Jvb2wgUmVhZEZtdENodW5rRGF0YShGbXRTdWJjaHVuayogZm10X3N1YmNodW5rLCBSZWFkYWJs
ZVdhdiogcmVhZGFibGUpIHsKKyAgLy8gUmVhZHMgImZtdCAiIGNodW5rIHBheWxvYWQuCisgIGlm
IChyZWFkYWJsZS0+UmVhZCgmKGZtdF9zdWJjaHVuay0+QXVkaW9Gb3JtYXQpLCBrRm10U3ViY2h1
bmtTaXplKSAhPQorICAgICAga0ZtdFN1YmNodW5rU2l6ZSkKKyAgICByZXR1cm4gZmFsc2U7Cisg
IGNvbnN0IHVpbnQzMl90IGZtdF9zaXplID0gUmVhZExFMzIoZm10X3N1YmNodW5rLT5oZWFkZXIu
U2l6ZSk7CisgIGlmIChmbXRfc2l6ZSAhPSBrRm10U3ViY2h1bmtTaXplKSB7CisgICAgLy8gVGhl
cmUgaXMgYW4gb3B0aW9uYWwgdHdvLWJ5dGUgZXh0ZW5zaW9uIGZpZWxkIHBlcm1pdHRlZCB0byBi
ZSBwcmVzZW50CisgICAgLy8gd2l0aCBQQ00sIGJ1dCB3aGljaCBtdXN0IGJlIHplcm8uCisgICAg
aW50MTZfdCBleHRfc2l6ZTsKKyAgICBpZiAoa0ZtdFN1YmNodW5rU2l6ZSArIHNpemVvZihleHRf
c2l6ZSkgIT0gZm10X3NpemUpCisgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJlYWRhYmxl
LT5SZWFkKCZleHRfc2l6ZSwgc2l6ZW9mKGV4dF9zaXplKSkgIT0gc2l6ZW9mKGV4dF9zaXplKSkK
KyAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZXh0X3NpemUgIT0gMCkKKyAgICAgIHJldHVy
biBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIGJv
b2wgQ2hlY2tXYXZQYXJhbWV0ZXJzKHNpemVfdCBudW1fY2hhbm5lbHMsCkBAIC0xMTIsNDcgKzE5
OSw2IEBAIGJvb2wgQ2hlY2tXYXZQYXJhbWV0ZXJzKHNpemVfdCBudW1fY2hhbm5lbHMsCiAgIHJl
dHVybiB0cnVlOwogfQogCi0jaWZkZWYgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgotc3RhdGlj
IGlubGluZSB2b2lkIFdyaXRlTEUxNih1aW50MTZfdCogZiwgdWludDE2X3QgeCkgewotICAqZiA9
IHg7Ci19Ci1zdGF0aWMgaW5saW5lIHZvaWQgV3JpdGVMRTMyKHVpbnQzMl90KiBmLCB1aW50MzJf
dCB4KSB7Ci0gICpmID0geDsKLX0KLXN0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUZvdXJDQyh1aW50
MzJfdCogZiwgY2hhciBhLCBjaGFyIGIsIGNoYXIgYywgY2hhciBkKSB7Ci0gICpmID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGEpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGIpIDw8IDggfAotICAg
ICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihjKSA8PCAxNiB8IHN0YXRpY19jYXN0PHVpbnQzMl90
PihkKSA8PCAyNDsKLX0KLQotc3RhdGljIGlubGluZSB1aW50MTZfdCBSZWFkTEUxNih1aW50MTZf
dCB4KSB7Ci0gIHJldHVybiB4OwotfQotc3RhdGljIGlubGluZSB1aW50MzJfdCBSZWFkTEUzMih1
aW50MzJfdCB4KSB7Ci0gIHJldHVybiB4OwotfQotc3RhdGljIGlubGluZSBzdGQ6OnN0cmluZyBS
ZWFkRm91ckNDKHVpbnQzMl90IHgpIHsKLSAgcmV0dXJuIHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KCZ4KSwgNCk7Ci19Ci0jZWxzZQotI2Vycm9yICJXcml0ZSBiZS10by1sZSBj
b252ZXJzaW9uIGZ1bmN0aW9ucyIKLSNlbmRpZgotCi1zdGF0aWMgaW5saW5lIHVpbnQzMl90IFJp
ZmZDaHVua1NpemUoc2l6ZV90IGJ5dGVzX2luX3BheWxvYWQpIHsKLSAgcmV0dXJuIHN0YXRpY19j
YXN0PHVpbnQzMl90PihieXRlc19pbl9wYXlsb2FkICsga1dhdkhlYWRlclNpemUgLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihDaHVua0hlYWRlcikpOwotfQotCi1zdGF0
aWMgaW5saW5lIHVpbnQzMl90IEJ5dGVSYXRlKHNpemVfdCBudW1fY2hhbm5lbHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ5dGVzX3Blcl9zYW1wbGUpIHsKLSAgcmV0dXJuIHN0
YXRpY19jYXN0PHVpbnQzMl90PihudW1fY2hhbm5lbHMgKiBzYW1wbGVfcmF0ZSAqIGJ5dGVzX3Bl
cl9zYW1wbGUpOwotfQotCi1zdGF0aWMgaW5saW5lIHVpbnQxNl90IEJsb2NrQWxpZ24oc2l6ZV90
IG51bV9jaGFubmVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
Ynl0ZXNfcGVyX3NhbXBsZSkgewotICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KG51bV9j
aGFubmVscyAqIGJ5dGVzX3Blcl9zYW1wbGUpOwotfQotCiB2b2lkIFdyaXRlV2F2SGVhZGVyKHVp
bnQ4X3QqIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9jaGFubmVscywKICAg
ICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlLApAQCAtMTYyLDcgKzIwOCw3IEBAIHZv
aWQgV3JpdGVXYXZIZWFkZXIodWludDhfdCogYnVmLAogICBSVENfQ0hFQ0soQ2hlY2tXYXZQYXJh
bWV0ZXJzKG51bV9jaGFubmVscywgc2FtcGxlX3JhdGUsIGZvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBieXRlc19wZXJfc2FtcGxlLCBudW1fc2FtcGxlcykpOwogCi0gIFdh
dkhlYWRlciBoZWFkZXI7CisgIGF1dG8gaGVhZGVyID0gcnRjOjpNc2FuVW5pbml0aWFsaXplZDxX
YXZIZWFkZXI+KHt9KTsKICAgY29uc3Qgc2l6ZV90IGJ5dGVzX2luX3BheWxvYWQgPSBieXRlc19w
ZXJfc2FtcGxlICogbnVtX3NhbXBsZXM7CiAKICAgV3JpdGVGb3VyQ0MoJmhlYWRlci5yaWZmLmhl
YWRlci5JRCwgJ1InLCAnSScsICdGJywgJ0YnKTsKQEAgLTE5NCwyNSArMjQwLDM4IEBAIGJvb2wg
UmVhZFdhdkhlYWRlcihSZWFkYWJsZVdhdiogcmVhZGFibGUsCiAgICAgICAgICAgICAgICAgICAg
V2F2Rm9ybWF0KiBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc19wZXJf
c2FtcGxlLAogICAgICAgICAgICAgICAgICAgIHNpemVfdCogbnVtX3NhbXBsZXMpIHsKLSAgV2F2
SGVhZGVyIGhlYWRlcjsKLSAgaWYgKHJlYWRhYmxlLT5SZWFkKCZoZWFkZXIsIGtXYXZIZWFkZXJT
aXplIC0gc2l6ZW9mKGhlYWRlci5kYXRhKSkgIT0KLSAgICAgIGtXYXZIZWFkZXJTaXplIC0gc2l6
ZW9mKGhlYWRlci5kYXRhKSkKKyAgYXV0byBoZWFkZXIgPSBydGM6Ok1zYW5VbmluaXRpYWxpemVk
PFdhdkhlYWRlcj4oe30pOworCisgIC8vIFJlYWQgUklGRiBjaHVuay4KKyAgaWYgKHJlYWRhYmxl
LT5SZWFkKCZoZWFkZXIucmlmZiwgc2l6ZW9mKGhlYWRlci5yaWZmKSkgIT0gc2l6ZW9mKGhlYWRl
ci5yaWZmKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChSZWFkRm91ckNDKGhlYWRlci5yaWZm
LmhlYWRlci5JRCkgIT0gIlJJRkYiKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKFJlYWRGb3Vy
Q0MoaGVhZGVyLnJpZmYuRm9ybWF0KSAhPSAiV0FWRSIpCiAgICAgcmV0dXJuIGZhbHNlOwogCi0g
IGNvbnN0IHVpbnQzMl90IGZtdF9zaXplID0gUmVhZExFMzIoaGVhZGVyLmZtdC5oZWFkZXIuU2l6
ZSk7Ci0gIGlmIChmbXRfc2l6ZSAhPSBrRm10U3ViY2h1bmtTaXplKSB7Ci0gICAgLy8gVGhlcmUg
aXMgYW4gb3B0aW9uYWwgdHdvLWJ5dGUgZXh0ZW5zaW9uIGZpZWxkIHBlcm1pdHRlZCB0byBiZSBw
cmVzZW50Ci0gICAgLy8gd2l0aCBQQ00sIGJ1dCB3aGljaCBtdXN0IGJlIHplcm8uCi0gICAgaW50
MTZfdCBleHRfc2l6ZTsKLSAgICBpZiAoa0ZtdFN1YmNodW5rU2l6ZSArIHNpemVvZihleHRfc2l6
ZSkgIT0gZm10X3NpemUpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHJlYWRhYmxlLT5S
ZWFkKCZleHRfc2l6ZSwgc2l6ZW9mKGV4dF9zaXplKSkgIT0gc2l6ZW9mKGV4dF9zaXplKSkKLSAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZXh0X3NpemUgIT0gMCkKLSAgICAgIHJldHVybiBm
YWxzZTsKKyAgLy8gRmluZCAiZm10ICIgYW5kICJkYXRhIiBjaHVua3MuIFdoaWxlIHRoZSBvZmZp
Y2lhbCBXYXZlIGZpbGUgc3BlY2lmaWNhdGlvbgorICAvLyBkb2VzIG5vdCBwdXQgcmVxdWlyZW1l
bnRzIG9uIHRoZSBjaHVua3Mgb3JkZXIsIGl0IGlzIHVuY29tbW9uIHRvIGZpbmQgdGhlCisgIC8v
ICJkYXRhIiBjaHVuayBiZWZvcmUgdGhlICJmbXQgIiBvbmUuIFRoZSBjb2RlIGJlbG93IGZhaWxz
IGlmIHRoaXMgaXMgbm90IHRoZQorICAvLyBjYXNlLgorICBGaW5kV2F2ZUNodW5rKCZoZWFkZXIu
Zm10LmhlYWRlciwgcmVhZGFibGUsICJmbXQgIik7CisgIGlmIChSZWFkRm91ckNDKGhlYWRlci5m
bXQuaGVhZGVyLklEKSAhPSAiZm10ICIpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ2Fu
bm90IGZpbmQgJ2ZtdCAnIGNodW5rLiI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmICgh
UmVhZEZtdENodW5rRGF0YSgmaGVhZGVyLmZtdCwgcmVhZGFibGUpKSB7CisgICAgUlRDX0xPRyhM
U19FUlJPUikgPDwgIkNhbm5vdCByZWFkICdmbXQgJyBjaHVuay4iOworICAgIHJldHVybiBmYWxz
ZTsKKyAgfQorICBpZiAocmVhZGFibGUtPkVvZigpKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIidmbXQgJyBjaHVuayBwbGFjZWQgYWZ0ZXIgJ2RhdGEnIGNodW5rLiI7CisgICAgcmV0dXJu
IGZhbHNlOwogICB9Ci0gIGlmIChyZWFkYWJsZS0+UmVhZCgmaGVhZGVyLmRhdGEsIHNpemVvZiho
ZWFkZXIuZGF0YSkpICE9IHNpemVvZihoZWFkZXIuZGF0YSkpCisgIEZpbmRXYXZlQ2h1bmsoJmhl
YWRlci5kYXRhLmhlYWRlciwgcmVhZGFibGUsICJkYXRhIik7CisgIGlmIChSZWFkRm91ckNDKGhl
YWRlci5kYXRhLmhlYWRlci5JRCkgIT0gImRhdGEiKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIkNhbm5vdCBmaW5kICdkYXRhJyBjaHVuay4iOwogICAgIHJldHVybiBmYWxzZTsKKyAgfQog
CiAgIC8vIFBhcnNlIG5lZWRlZCBmaWVsZHMuCiAgICpmb3JtYXQgPSBzdGF0aWNfY2FzdDxXYXZG
b3JtYXQ+KFJlYWRMRTE2KGhlYWRlci5mbXQuQXVkaW9Gb3JtYXQpKTsKQEAgLTIyNCwxNiArMjgz
LDYgQEAgYm9vbCBSZWFkV2F2SGVhZGVyKFJlYWRhYmxlV2F2KiByZWFkYWJsZSwKICAgICByZXR1
cm4gZmFsc2U7CiAgICpudW1fc2FtcGxlcyA9IGJ5dGVzX2luX3BheWxvYWQgLyAqYnl0ZXNfcGVy
X3NhbXBsZTsKIAotICAvLyBTYW5pdHkgY2hlY2sgcmVtYWluaW5nIGZpZWxkcy4KLSAgaWYgKFJl
YWRGb3VyQ0MoaGVhZGVyLnJpZmYuaGVhZGVyLklEKSAhPSAiUklGRiIpCi0gICAgcmV0dXJuIGZh
bHNlOwotICBpZiAoUmVhZEZvdXJDQyhoZWFkZXIucmlmZi5Gb3JtYXQpICE9ICJXQVZFIikKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIGlmIChSZWFkRm91ckNDKGhlYWRlci5mbXQuaGVhZGVyLklEKSAh
PSAiZm10ICIpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoUmVhZEZvdXJDQyhoZWFkZXIuZGF0
YS5oZWFkZXIuSUQpICE9ICJkYXRhIikKLSAgICByZXR1cm4gZmFsc2U7Ci0KICAgaWYgKFJlYWRM
RTMyKGhlYWRlci5yaWZmLmhlYWRlci5TaXplKSA8IFJpZmZDaHVua1NpemUoYnl0ZXNfaW5fcGF5
bG9hZCkpCiAgICAgcmV0dXJuIGZhbHNlOwogICBpZiAoUmVhZExFMzIoaGVhZGVyLmZtdC5CeXRl
UmF0ZSkgIT0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5oCmluZGV4IDg3MmQz
YWJjZTVjYTRjZGM5NDBjYTkxNDQwNDQxZTcyMzdiY2JlMGIuLmE1MTliYTU1NmY1NGYwMzY1NDk0
YmViNjM3ZDhkNmI3YmEyNDk2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFk
ZXIuaApAQCAtMjEsOCArMjEsMTEgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrV2F2SGVhZGVyU2l6
ZSA9IDQ0OwogY2xhc3MgUmVhZGFibGVXYXYgewogIHB1YmxpYzoKICAgLy8gUmV0dXJucyB0aGUg
bnVtYmVyIG9mIGJ5dGVzIHJlYWQuCi0gIHNpemVfdCB2aXJ0dWFsIFJlYWQodm9pZCogYnVmLCBz
aXplX3QgbnVtX2J5dGVzKSA9IDA7Ci0gIHZpcnR1YWwgflJlYWRhYmxlV2F2KCkge30KKyAgdmly
dHVhbCBzaXplX3QgUmVhZCh2b2lkKiBidWYsIHNpemVfdCBudW1fYnl0ZXMpID0gMDsKKyAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoZSBlbmQtb2YtZmlsZSBoYXMgYmVlbiByZWFjaGVkLgorICB2aXJ0
dWFsIGJvb2wgRW9mKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIGJvb2wgU2Vla0ZvcndhcmQodWlu
dDMyX3QgbnVtX2J5dGVzKSA9IDA7CisgIHZpcnR1YWwgflJlYWRhYmxlV2F2KCkgPSBkZWZhdWx0
OwogfTsKIAogZW51bSBXYXZGb3JtYXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFkZXJfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVk
aW8vd2F2X2hlYWRlcl91bml0dGVzdC5jYwppbmRleCBiNzE2OWI1M2M4ZjFiMWExYzFjNGZkMjRi
Y2RlODYwYjQxMDgxN2VlLi4yZTJlZGE1YTZmMmQwOGYyM2NmYmE1ZGNkNDlmOWMzZmM1YTdhMGRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fYXVkaW8vd2F2X2hlYWRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlcl91bml0dGVz
dC5jYwpAQCAtMTksMTIgKzE5LDYgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyBEb2Vzbid0IHRh
a2Ugb3duZXJzaGlwIG9mIHRoZSBidWZmZXIuCiBjbGFzcyBSZWFkYWJsZVdhdkJ1ZmZlciA6IHB1
YmxpYyBSZWFkYWJsZVdhdiB7CiAgcHVibGljOgotICBSZWFkYWJsZVdhdkJ1ZmZlcihjb25zdCB1
aW50OF90KiBidWYsIHNpemVfdCBzaXplKQotICAgICAgOiBidWZfKGJ1ZiksCi0gICAgICAgIHNp
emVfKHNpemUpLAotICAgICAgICBwb3NfKDApLAotICAgICAgICBidWZfZXhoYXVzdGVkXyhmYWxz
ZSksCi0gICAgICAgIGNoZWNrX3JlYWRfc2l6ZV8odHJ1ZSkge30KICAgUmVhZGFibGVXYXZCdWZm
ZXIoY29uc3QgdWludDhfdCogYnVmLCBzaXplX3Qgc2l6ZSwgYm9vbCBjaGVja19yZWFkX3NpemUp
CiAgICAgICA6IGJ1Zl8oYnVmKSwKICAgICAgICAgc2l6ZV8oc2l6ZSksCkBAIC01Nyw2ICs1MSwy
NyBAQCBjbGFzcyBSZWFkYWJsZVdhdkJ1ZmZlciA6IHB1YmxpYyBSZWFkYWJsZVdhdiB7CiAgICAg
cmV0dXJuIG51bV9ieXRlczsKICAgfQogCisgIGJvb2wgRW9mKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcG9zXyA9PSBzaXplXzsgfQorCisgIGJvb2wgU2Vla0ZvcndhcmQodWludDMyX3QgbnVt
X2J5dGVzKSBvdmVycmlkZSB7CisgICAgLy8gVmVyaWZ5IHdlIGRvbid0IHRyeSB0byByZWFkIG91
dHNpZGUgb2YgYSBwcm9wZXJseSBzaXplZCBoZWFkZXIuCisgICAgaWYgKHNpemVfID49IGtXYXZI
ZWFkZXJTaXplKQorICAgICAgRVhQRUNUX0dFKHNpemVfLCBwb3NfICsgbnVtX2J5dGVzKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoYnVmX2V4aGF1c3RlZF8pOworCisgICAgY29uc3Qgc2l6ZV90IGJ5dGVz
X3JlbWFpbmluZyA9IHNpemVfIC0gcG9zXzsKKyAgICBpZiAobnVtX2J5dGVzID4gYnl0ZXNfcmVt
YWluaW5nKSB7CisgICAgICAvLyBFcnJvcjogY2Fubm90IHNlZWsgYmV5b25kIEVPRi4KKyAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG51bV9ieXRlcyA9PSBieXRlc19yZW1haW5p
bmcpIHsKKyAgICAgIC8vIFRoZXJlIHNob3VsZCBub3QgYmUgYW5vdGhlciByZWFkIGF0dGVtcHQg
YWZ0ZXIgdGhpcyBwb2ludC4KKyAgICAgIGJ1Zl9leGhhdXN0ZWRfID0gdHJ1ZTsKKyAgICB9Cisg
ICAgcG9zXyArPSBudW1fYnl0ZXM7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKwogIHByaXZhdGU6
CiAgIGNvbnN0IHVpbnQ4X3QqIGJ1Zl87CiAgIGNvbnN0IHNpemVfdCBzaXplXzsKQEAgLTEwMyw3
ICsxMTgsNyBAQCBURVNUKFdhdkhlYWRlclRlc3QsIFJlYWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7
CiAgIC8vIGludmFsaWQgZmllbGQgaXMgaW5kaWNhdGVkIGluIHRoZSBhcnJheSBuYW1lLCBhbmQg
aW4gdGhlIGNvbW1lbnRzIHdpdGgKICAgLy8gKkJBRCouCiAgIHsKLSAgICBzdGF0aWMgY29uc3Qg
dWludDhfdCBrQmFkUmlmZklEW10gPSB7CisgICAgY29uc3RleHByIHVpbnQ4X3Qga0JhZFJpZmZJ
RFtdID0gewogICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgICAgIC8vIGNsYW5nIGZv
cm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGluZSBjb21tZW50cy4KICAgICAgICdSJywgJ2kn
LCAnZicsICdmJywgIC8vICpCQUQqCkBAIC0xMjEsMTIgKzEzNiwxMyBAQCBURVNUKFdhdkhlYWRl
clRlc3QsIFJlYWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7CiAgICAgICAweDk5LCAweGQwLCAweDVi
LCAweDA3LCAgLy8gc2l6ZSBvZiBwYXlsb2FkOiAxMjM0NTc2ODkKICAgICAgICAgLy8gY2xhbmct
Zm9ybWF0IG9uCiAgICAgfTsKLSAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtCYWRSaWZmSUQsIHNp
emVvZihrQmFkUmlmZklEKSk7CisgICAgUmVhZGFibGVXYXZCdWZmZXIgcihrQmFkUmlmZklELCBz
aXplb2Yoa0JhZFJpZmZJRCksCisgICAgICAgICAgICAgICAgICAgICAgICAvKmNoZWNrX3JlYWRf
c2l6ZT0qL2ZhbHNlKTsKICAgICBFWFBFQ1RfRkFMU0UoUmVhZFdhdkhlYWRlcigmciwgJm51bV9j
aGFubmVscywgJnNhbXBsZV9yYXRlLCAmZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZieXRlc19wZXJfc2FtcGxlLCAmbnVtX3NhbXBsZXMpKTsKICAgfQogICB7Ci0gICAg
c3RhdGljIGNvbnN0IHVpbnQ4X3Qga0JhZEJpdHNQZXJTYW1wbGVbXSA9IHsKKyAgICBjb25zdGV4
cHIgdWludDhfdCBrQmFkQml0c1BlclNhbXBsZVtdID0gewogICAgICAgICAvLyBjbGFuZy1mb3Jt
YXQgb2ZmCiAgICAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGlu
ZSBjb21tZW50cy4KICAgICAgICdSJywgJ0knLCAnRicsICdGJywKQEAgLTE0NCwxMiArMTYwLDEz
IEBAIFRFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhFcnJvcnMpIHsKICAgICAg
IDB4OTksIDB4ZDAsIDB4NWIsIDB4MDcsICAvLyBzaXplIG9mIHBheWxvYWQ6IDEyMzQ1NzY4OQog
ICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KICAgICB9OwotICAgIFJlYWRhYmxlV2F2QnVmZmVy
IHIoa0JhZEJpdHNQZXJTYW1wbGUsIHNpemVvZihrQmFkQml0c1BlclNhbXBsZSkpOworICAgIFJl
YWRhYmxlV2F2QnVmZmVyIHIoa0JhZEJpdHNQZXJTYW1wbGUsIHNpemVvZihrQmFkQml0c1BlclNh
bXBsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAvKmNoZWNrX3JlYWRfc2l6ZT0qL3RydWUp
OwogICAgIEVYUEVDVF9GQUxTRShSZWFkV2F2SGVhZGVyKCZyLCAmbnVtX2NoYW5uZWxzLCAmc2Ft
cGxlX3JhdGUsICZmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVz
X3Blcl9zYW1wbGUsICZudW1fc2FtcGxlcykpOwogICB9CiAgIHsKLSAgICBzdGF0aWMgY29uc3Qg
dWludDhfdCBrQmFkQnl0ZVJhdGVbXSA9IHsKKyAgICBjb25zdGV4cHIgdWludDhfdCBrQmFkQnl0
ZVJhdGVbXSA9IHsKICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgICAgICAvLyBjbGFu
ZyBmb3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxpbmUgY29tbWVudHMuCiAgICAgICAnUics
ICdJJywgJ0YnLCAnRicsCkBAIC0xNjcsMTIgKzE4NCwxMyBAQCBURVNUKFdhdkhlYWRlclRlc3Qs
IFJlYWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7CiAgICAgICAweDk5LCAweGQwLCAweDViLCAweDA3
LCAgLy8gc2l6ZSBvZiBwYXlsb2FkOiAxMjM0NTc2ODkKICAgICAgICAgLy8gY2xhbmctZm9ybWF0
IG9uCiAgICAgfTsKLSAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtCYWRCeXRlUmF0ZSwgc2l6ZW9m
KGtCYWRCeXRlUmF0ZSkpOworICAgIFJlYWRhYmxlV2F2QnVmZmVyIHIoa0JhZEJ5dGVSYXRlLCBz
aXplb2Yoa0JhZEJ5dGVSYXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qY2hlY2tfcmVh
ZF9zaXplPSovdHJ1ZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFJlYWRXYXZIZWFkZXIoJnIsICZudW1f
Y2hhbm5lbHMsICZzYW1wbGVfcmF0ZSwgJmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmYnl0ZXNfcGVyX3NhbXBsZSwgJm51bV9zYW1wbGVzKSk7CiAgIH0KICAgewotICAg
IHN0YXRpYyBjb25zdCB1aW50OF90IGtCYWRGbXRIZWFkZXJTaXplW10gPSB7CisgICAgY29uc3Rl
eHByIHVpbnQ4X3Qga0JhZEZtdEhlYWRlclNpemVbXSA9IHsKICAgICAgICAgLy8gY2xhbmctZm9y
bWF0IG9mZgogICAgICAgICAvLyBjbGFuZyBmb3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxp
bmUgY29tbWVudHMuCiAgICAgICAnUicsICdJJywgJ0YnLCAnRicsCkBAIC0xOTEsMTIgKzIwOSwx
MyBAQCBURVNUKFdhdkhlYWRlclRlc3QsIFJlYWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7CiAgICAg
ICAweDk5LCAweGQwLCAweDViLCAweDA3LCAgLy8gc2l6ZSBvZiBwYXlsb2FkOiAxMjM0NTc2ODkK
ICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAgICAgfTsKLSAgICBSZWFkYWJsZVdhdkJ1ZmZl
ciByKGtCYWRGbXRIZWFkZXJTaXplLCBzaXplb2Yoa0JhZEZtdEhlYWRlclNpemUpLCBmYWxzZSk7
CisgICAgUmVhZGFibGVXYXZCdWZmZXIgcihrQmFkRm10SGVhZGVyU2l6ZSwgc2l6ZW9mKGtCYWRG
bXRIZWFkZXJTaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qY2hlY2tfcmVhZF9zaXpl
PSovZmFsc2UpOwogICAgIEVYUEVDVF9GQUxTRShSZWFkV2F2SGVhZGVyKCZyLCAmbnVtX2NoYW5u
ZWxzLCAmc2FtcGxlX3JhdGUsICZmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmJ5dGVzX3Blcl9zYW1wbGUsICZudW1fc2FtcGxlcykpOwogICB9CiAgIHsKLSAgICBzdGF0
aWMgY29uc3QgdWludDhfdCBrTm9uWmVyb0V4dGVuc2lvbkZpZWxkW10gPSB7CisgICAgY29uc3Rl
eHByIHVpbnQ4X3Qga05vblplcm9FeHRlbnNpb25GaWVsZFtdID0gewogICAgICAgICAvLyBjbGFu
Zy1mb3JtYXQgb2ZmCiAgICAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0
IGlubGluZSBjb21tZW50cy4KICAgICAgICdSJywgJ0knLCAnRicsICdGJywKQEAgLTIxNiwxMiAr
MjM1LDEyIEBAIFRFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhFcnJvcnMpIHsK
ICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAgICAgfTsKICAgICBSZWFkYWJsZVdhdkJ1ZmZl
ciByKGtOb25aZXJvRXh0ZW5zaW9uRmllbGQsIHNpemVvZihrTm9uWmVyb0V4dGVuc2lvbkZpZWxk
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qY2hlY2tfcmVhZF9zaXplPSovZmFsc2UpOwogICAgIEVYUEVDVF9GQUxTRShSZWFkV2F2
SGVhZGVyKCZyLCAmbnVtX2NoYW5uZWxzLCAmc2FtcGxlX3JhdGUsICZmb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVzX3Blcl9zYW1wbGUsICZudW1fc2FtcGxlcykp
OwogICB9CiAgIHsKLSAgICBzdGF0aWMgY29uc3QgdWludDhfdCBrTWlzc2luZ0RhdGFDaHVua1td
ID0geworICAgIGNvbnN0ZXhwciB1aW50OF90IGtNaXNzaW5nRGF0YUNodW5rW10gPSB7CiAgICAg
ICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKICAgICAgICAgLy8gY2xhbmcgZm9ybWF0dGluZyBkb2Vz
bid0IHJlc3BlY3QgaW5saW5lIGNvbW1lbnRzLgogICAgICAgJ1InLCAnSScsICdGJywgJ0YnLApA
QCAtMjM3LDEyICsyNTYsMTMgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkV2F2SGVhZGVyV2l0
aEVycm9ycykgewogICAgICAgOCwgMCwgIC8vIGJpdHMgcGVyIHNhbXBsZTogMSAqIDgKICAgICAg
ICAgLy8gY2xhbmctZm9ybWF0IG9uCiAgICAgfTsKLSAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtN
aXNzaW5nRGF0YUNodW5rLCBzaXplb2Yoa01pc3NpbmdEYXRhQ2h1bmspKTsKKyAgICBSZWFkYWJs
ZVdhdkJ1ZmZlciByKGtNaXNzaW5nRGF0YUNodW5rLCBzaXplb2Yoa01pc3NpbmdEYXRhQ2h1bmsp
LAorICAgICAgICAgICAgICAgICAgICAgICAgLypjaGVja19yZWFkX3NpemU9Ki90cnVlKTsKICAg
ICBFWFBFQ1RfRkFMU0UoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFubmVscywgJnNhbXBsZV9y
YXRlLCAmZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc19wZXJf
c2FtcGxlLCAmbnVtX3NhbXBsZXMpKTsKICAgfQogICB7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ4
X3Qga01pc3NpbmdGbXRBbmREYXRhQ2h1bmtzW10gPSB7CisgICAgY29uc3RleHByIHVpbnQ4X3Qg
a01pc3NpbmdGbXRBbmREYXRhQ2h1bmtzW10gPSB7CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBv
ZmYKICAgICAgICAgLy8gY2xhbmcgZm9ybWF0dGluZyBkb2Vzbid0IHJlc3BlY3QgaW5saW5lIGNv
bW1lbnRzLgogICAgICAgJ1InLCAnSScsICdGJywgJ0YnLApAQCAtMjUxLDcgKzI3MSw4IEBAIFRF
U1QoV2F2SGVhZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhFcnJvcnMpIHsKICAgICAgICAgLy8g
Y2xhbmctZm9ybWF0IG9uCiAgICAgfTsKICAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtNaXNzaW5n
Rm10QW5kRGF0YUNodW5rcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrTWlzc2lu
Z0ZtdEFuZERhdGFDaHVua3MpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrTWlz
c2luZ0ZtdEFuZERhdGFDaHVua3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgLypjaGVja19y
ZWFkX3NpemU9Ki90cnVlKTsKICAgICBFWFBFQ1RfRkFMU0UoUmVhZFdhdkhlYWRlcigmciwgJm51
bV9jaGFubmVscywgJnNhbXBsZV9yYXRlLCAmZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZieXRlc19wZXJfc2FtcGxlLCAmbnVtX3NhbXBsZXMpKTsKICAgfQpAQCAtMjU5
LDExICsyODAsMTEgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkV2F2SGVhZGVyV2l0aEVycm9y
cykgewogCiAvLyBUcnkgd3JpdGluZyBhbmQgcmVhZGluZyBhIHZhbGlkIFdBViBoZWFkZXIgYW5k
IG1ha2Ugc3VyZSBpdCBsb29rcyBPSy4KIFRFU1QoV2F2SGVhZGVyVGVzdCwgV3JpdGVBbmRSZWFk
V2F2SGVhZGVyKSB7Ci0gIHN0YXRpYyBjb25zdCBpbnQga1NpemUgPSA0ICsga1dhdkhlYWRlclNp
emUgKyA0OworICBjb25zdGV4cHIgaW50IGtTaXplID0gNCArIGtXYXZIZWFkZXJTaXplICsgNDsK
ICAgdWludDhfdCBidWZba1NpemVdOwogICBtZW1zZXQoYnVmLCAweGE0LCBzaXplb2YoYnVmKSk7
CiAgIFdyaXRlV2F2SGVhZGVyKGJ1ZiArIDQsIDE3LCAxMjM0NSwga1dhdkZvcm1hdEFMYXcsIDEs
IDEyMzQ1NzY4OSk7Ci0gIHN0YXRpYyBjb25zdCB1aW50OF90IGtFeHBlY3RlZEJ1ZltdID0gewor
ICBjb25zdGV4cHIgdWludDhfdCBrRXhwZWN0ZWRCdWZbXSA9IHsKICAgICAgIC8vIGNsYW5nLWZv
cm1hdCBvZmYKICAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGlu
ZSBjb21tZW50cy4KICAgICAweGE0LCAweGE0LCAweGE0LCAweGE0LCAgLy8gdW50b3VjaGVkIGJ5
dGVzIGJlZm9yZSBoZWFkZXIKQEAgLTI5MSw3ICszMTIsOCBAQCBURVNUKFdhdkhlYWRlclRlc3Qs
IFdyaXRlQW5kUmVhZFdhdkhlYWRlcikgewogICBXYXZGb3JtYXQgZm9ybWF0ID0ga1dhdkZvcm1h
dFBjbTsKICAgc2l6ZV90IGJ5dGVzX3Blcl9zYW1wbGUgPSAwOwogICBzaXplX3QgbnVtX3NhbXBs
ZXMgPSAwOwotICBSZWFkYWJsZVdhdkJ1ZmZlciByKGJ1ZiArIDQsIHNpemVvZihidWYpIC0gOCk7
CisgIFJlYWRhYmxlV2F2QnVmZmVyIHIoYnVmICsgNCwgc2l6ZW9mKGJ1ZikgLSA4LAorICAgICAg
ICAgICAgICAgICAgICAgIC8qY2hlY2tfcmVhZF9zaXplPSovdHJ1ZSk7CiAgIEVYUEVDVF9UUlVF
KFJlYWRXYXZIZWFkZXIoJnIsICZudW1fY2hhbm5lbHMsICZzYW1wbGVfcmF0ZSwgJmZvcm1hdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNfcGVyX3NhbXBsZSwgJm51bV9zYW1w
bGVzKSk7CiAgIEVYUEVDVF9FUSgxN3UsIG51bV9jaGFubmVscyk7CkBAIC0zMDMsMjQgKzMyNSw2
NyBAQCBURVNUKFdhdkhlYWRlclRlc3QsIFdyaXRlQW5kUmVhZFdhdkhlYWRlcikgewogCiAvLyBU
cnkgcmVhZGluZyBhbiBhdHlwaWNhbCBidXQgdmFsaWQgV0FWIGhlYWRlciBhbmQgbWFrZSBzdXJl
IGl0J3MgcGFyc2VkIE9LLgogVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkQXR5cGljYWxXYXZIZWFk
ZXIpIHsKLSAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qga0J1ZltdID0geworICBjb25zdGV4cHIgdWlu
dDhfdCBrQnVmW10gPSB7CiAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgICAvLyBjbGFu
ZyBmb3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxpbmUgY29tbWVudHMuCiAgICAgJ1InLCAn
SScsICdGJywgJ0YnLAotICAgIDB4M2QsIDB4ZDEsIDB4NWIsIDB4MDcsICAvLyBzaXplIG9mIHdo
b2xlIGZpbGUgLSA4ICsgYW4gZXh0cmEgMTI4IGJ5dGVzIG9mCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICJtZXRhZGF0YSI6IDEyMzQ1NzY4OSArIDQ0IC0gOCArIDEyOC4gKGF0eXBp
Y2FsKQorICAgIDB4YmYsIDB4ZDAsIDB4NWIsIDB4MDcsICAvLyBTaXplIG9mIHdob2xlIGZpbGUg
LSA4ICsgZXh0cmEgMiBieXRlcyBvZiB6ZXJvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGV4dGVuc2lvbjogMTIzNDU3Njg5ICsgNDQgLSA4ICsgMiAoYXR5cGljYWwpLgogICAgICdX
JywgJ0EnLCAnVicsICdFJywKICAgICAnZicsICdtJywgJ3QnLCAnICcsCi0gICAgMTgsIDAsIDAs
IDAsICAvLyBzaXplIG9mIGZtdCBibG9jayAod2l0aCBhbiBhdHlwaWNhbCBleHRlbnNpb24gc2l6
ZSBmaWVsZCkKLSAgICA2LCAwLCAgLy8gZm9ybWF0OiBBLWxhdyAoNikKLSAgICAxNywgMCwgIC8v
IGNoYW5uZWxzOiAxNwotICAgIDB4MzksIDB4MzAsIDAsIDAsICAvLyBzYW1wbGUgcmF0ZTogMTIz
NDUKLSAgICAweGM5LCAweDMzLCAweDAzLCAwLCAgLy8gYnl0ZSByYXRlOiAxICogMTcgKiAxMjM0
NQotICAgIDE3LCAwLCAgLy8gYmxvY2sgYWxpZ246IE51bUNoYW5uZWxzICogQnl0ZXNQZXJTYW1w
bGUKLSAgICA4LCAwLCAgLy8gYml0cyBwZXIgc2FtcGxlOiAxICogOAotICAgIDAsIDAsICAvLyB6
ZXJvIGV4dGVuc2lvbiBzaXplIGZpZWxkIChhdHlwaWNhbCkKKyAgICAxOCwgMCwgMCwgMCwgICAg
ICAgICAgICAgLy8gU2l6ZSBvZiBmbXQgYmxvY2sgKHdpdGggYW4gYXR5cGljYWwgZXh0ZW5zaW9u
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpemUgZmllbGQpLgorICAgIDYsIDAs
ICAgICAgICAgICAgICAgICAgICAvLyBGb3JtYXQ6IEEtbGF3ICg2KS4KKyAgICAxNywgMCwgICAg
ICAgICAgICAgICAgICAgLy8gQ2hhbm5lbHM6IDE3LgorICAgIDB4MzksIDB4MzAsIDAsIDAsICAg
ICAgICAvLyBTYW1wbGUgcmF0ZTogMTIzNDUuCisgICAgMHhjOSwgMHgzMywgMHgwMywgMCwgICAg
IC8vIEJ5dGUgcmF0ZTogMSAqIDE3ICogMTIzNDUuCisgICAgMTcsIDAsICAgICAgICAgICAgICAg
ICAgIC8vIEJsb2NrIGFsaWduOiBOdW1DaGFubmVscyAqIEJ5dGVzUGVyU2FtcGxlLgorICAgIDgs
IDAsICAgICAgICAgICAgICAgICAgICAvLyBCaXRzIHBlciBzYW1wbGU6IDEgKiA4LgorICAgIDAs
IDAsICAgICAgICAgICAgICAgICAgICAvLyBaZXJvIGV4dGVuc2lvbiBzaXplIGZpZWxkIChhdHlw
aWNhbCkuCiAgICAgJ2QnLCAnYScsICd0JywgJ2EnLAotICAgIDB4OTksIDB4ZDAsIDB4NWIsIDB4
MDcsICAvLyBzaXplIG9mIHBheWxvYWQ6IDEyMzQ1NzY4OQorICAgIDB4OTksIDB4ZDAsIDB4NWIs
IDB4MDcsICAvLyBTaXplIG9mIHBheWxvYWQ6IDEyMzQ1NzY4OS4KKyAgICAgIC8vIGNsYW5nLWZv
cm1hdCBvbgorICB9OworCisgIHNpemVfdCBudW1fY2hhbm5lbHMgPSAwOworICBpbnQgc2FtcGxl
X3JhdGUgPSAwOworICBXYXZGb3JtYXQgZm9ybWF0ID0ga1dhdkZvcm1hdFBjbTsKKyAgc2l6ZV90
IGJ5dGVzX3Blcl9zYW1wbGUgPSAwOworICBzaXplX3QgbnVtX3NhbXBsZXMgPSAwOworICBSZWFk
YWJsZVdhdkJ1ZmZlciByKGtCdWYsIHNpemVvZihrQnVmKSwgLypjaGVja19yZWFkX3NpemU9Ki90
cnVlKTsKKyAgRVhQRUNUX1RSVUUoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFubmVscywgJnNh
bXBsZV9yYXRlLCAmZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc19w
ZXJfc2FtcGxlLCAmbnVtX3NhbXBsZXMpKTsKKyAgRVhQRUNUX0VRKDE3dSwgbnVtX2NoYW5uZWxz
KTsKKyAgRVhQRUNUX0VRKDEyMzQ1LCBzYW1wbGVfcmF0ZSk7CisgIEVYUEVDVF9FUShrV2F2Rm9y
bWF0QUxhdywgZm9ybWF0KTsKKyAgRVhQRUNUX0VRKDF1LCBieXRlc19wZXJfc2FtcGxlKTsKKyAg
RVhQRUNUX0VRKDEyMzQ1NzY4OXUsIG51bV9zYW1wbGVzKTsKK30KKworLy8gVHJ5IHJlYWRpbmcg
YSB2YWxpZCBXQVYgaGVhZGVyIHdoaWNoIGNvbnRhaW5zIGFuIG9wdGlvbmFsIGNodW5rIGFuZCBt
YWtlIHN1cmUKKy8vIGl0J3MgcGFyc2VkIE9LLgorVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkV2F2
SGVhZGVyV2l0aE9wdGlvbmFsQ2h1bmspIHsKKyAgY29uc3RleHByIHVpbnQ4X3Qga0J1ZltdID0g
eworICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgICAgLy8gY2xhbmcgZm9ybWF0dGluZyBk
b2Vzbid0IHJlc3BlY3QgaW5saW5lIGNvbW1lbnRzLgorICAgICdSJywgJ0knLCAnRicsICdGJywK
KyAgICAweGNkLCAweGQwLCAweDViLCAweDA3LCAgLy8gU2l6ZSBvZiB3aG9sZSBmaWxlIC0gOCAr
IGFuIGV4dHJhIDE2IGJ5dGVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICJt
ZXRhZGF0YSIgKDggYnl0ZXMgaGVhZGVyLCAxNiBieXRlcyBwYXlsb2FkKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gMTIzNDU3Njg5ICsgNDQgLSA4ICsgMTYuCisgICAgJ1cnLCAn
QScsICdWJywgJ0UnLAorICAgICdmJywgJ20nLCAndCcsICcgJywKKyAgICAxNiwgMCwgMCwgMCwg
ICAgICAgICAgICAgLy8gU2l6ZSBvZiBmbXQgYmxvY2suCisgICAgNiwgMCwgICAgICAgICAgICAg
ICAgICAgIC8vIEZvcm1hdDogQS1sYXcgKDYpLgorICAgIDE3LCAwLCAgICAgICAgICAgICAgICAg
ICAvLyBDaGFubmVsczogMTcuCisgICAgMHgzOSwgMHgzMCwgMCwgMCwgICAgICAgIC8vIFNhbXBs
ZSByYXRlOiAxMjM0NS4KKyAgICAweGM5LCAweDMzLCAweDAzLCAwLCAgICAgLy8gQnl0ZSByYXRl
OiAxICogMTcgKiAxMjM0NS4KKyAgICAxNywgMCwgICAgICAgICAgICAgICAgICAgLy8gQmxvY2sg
YWxpZ246IE51bUNoYW5uZWxzICogQnl0ZXNQZXJTYW1wbGUuCisgICAgOCwgMCwgICAgICAgICAg
ICAgICAgICAgIC8vIEJpdHMgcGVyIHNhbXBsZTogMSAqIDguCisgICAgJ0wnLCAnSScsICdTJywg
J1QnLCAgICAgIC8vIE1ldGFkYXRhIGNodW5rIElELgorICAgIDE2LCAwLCAwLCAwLCAgICAgICAg
ICAgICAvLyBNZXRhZGF0YSBjaHVuayBwYXlsb2FkIHNpemUuCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgIC8vIE1ldGFkYXRhICgxNiBieXRlcyku
CisgICAgJ2QnLCAnYScsICd0JywgJ2EnLAorICAgIDB4OTksIDB4ZDAsIDB4NWIsIDB4MDcsICAv
LyBTaXplIG9mIHBheWxvYWQ6IDEyMzQ1NzY4OS4KICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgog
ICB9OwogCkBAIC0zMjksNyArMzk0LDcgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkQXR5cGlj
YWxXYXZIZWFkZXIpIHsKICAgV2F2Rm9ybWF0IGZvcm1hdCA9IGtXYXZGb3JtYXRQY207CiAgIHNp
emVfdCBieXRlc19wZXJfc2FtcGxlID0gMDsKICAgc2l6ZV90IG51bV9zYW1wbGVzID0gMDsKLSAg
UmVhZGFibGVXYXZCdWZmZXIgcihrQnVmLCBzaXplb2Yoa0J1ZikpOworICBSZWFkYWJsZVdhdkJ1
ZmZlciByKGtCdWYsIHNpemVvZihrQnVmKSwgLypjaGVja19yZWFkX3NpemU9Ki90cnVlKTsKICAg
RVhQRUNUX1RSVUUoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFubmVscywgJnNhbXBsZV9yYXRl
LCAmZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc19wZXJfc2FtcGxl
LCAmbnVtX3NhbXBsZXMpKTsKICAgRVhQRUNUX0VRKDE3dSwgbnVtX2NoYW5uZWxzKTsKQEAgLTMz
OSw0ICs0MDQsMzcgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkQXR5cGljYWxXYXZIZWFkZXIp
IHsKICAgRVhQRUNUX0VRKDEyMzQ1NzY4OXUsIG51bV9zYW1wbGVzKTsKIH0KIAorLy8gVHJ5IHJl
YWRpbmcgYW4gaW52YWxpZCBXQVYgaGVhZGVyIHdoaWNoIGhhcyB0aGUgdGhlIGRhdGEgY2h1bmsg
YmVmb3JlIHRoZQorLy8gZm9ybWF0IG9uZSBhbmQgbWFrZSBzdXJlIGl0J3Mgbm90IHBhcnNlZC4K
K1RFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhEYXRhQmVmb3JlRm9ybWF0KSB7
CisgIGNvbnN0ZXhwciB1aW50OF90IGtCdWZbXSA9IHsKKyAgICAgIC8vIGNsYW5nLWZvcm1hdCBv
ZmYKKyAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGluZSBjb21t
ZW50cy4KKyAgICAnUicsICdJJywgJ0YnLCAnRicsCisgICAgNTIsICAwLCAgIDAsICAgMCwgICAg
Ly8gU2l6ZSBvZiB3aG9sZSBmaWxlIC0gODogMTYgKyA0NCAtIDguCisgICAgJ1cnLCAnQScsICdW
JywgJ0UnLAorICAgICdkJywgJ2EnLCAndCcsICdhJywKKyAgICAxNiwgMCwgMCwgMCwgICAgICAg
ICAvLyBEYXRhIGNodW5rIHBheWxvYWQgc2l6ZS4KKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAgLy8gRGF0YSAxNiBieXRlcy4KKyAgICAnZicsICdt
JywgJ3QnLCAnICcsCisgICAgMTYsICAwLCAgIDAsICAgMCwgICAgLy8gU2l6ZSBvZiBmbXQgYmxv
Y2suCisgICAgNiwgICAwLCAgICAgICAgICAgICAgLy8gRm9ybWF0OiBBLWxhdyAoNikuCisgICAg
MSwgICAwLCAgICAgICAgICAgICAgLy8gQ2hhbm5lbHM6IDEuCisgICAgNjAsICAwLCAgIDAsICAg
MCwgICAgLy8gU2FtcGxlIHJhdGU6IDYwLgorICAgIDYwLCAgMCwgICAwLCAgIDAsICAgIC8vIEJ5
dGUgcmF0ZTogMSAqIDEgKiA2MC4KKyAgICAxLCAgIDAsICAgICAgICAgICAgICAvLyBCbG9jayBh
bGlnbjogTnVtQ2hhbm5lbHMgKiBCeXRlc1BlclNhbXBsZS4KKyAgICA4LCAgIDAsICAgICAgICAg
ICAgICAvLyBCaXRzIHBlciBzYW1wbGU6IDEgKiA4LgorICAgICAgLy8gY2xhbmctZm9ybWF0IG9u
CisgIH07CisKKyAgc2l6ZV90IG51bV9jaGFubmVscyA9IDA7CisgIGludCBzYW1wbGVfcmF0ZSA9
IDA7CisgIFdhdkZvcm1hdCBmb3JtYXQgPSBrV2F2Rm9ybWF0UGNtOworICBzaXplX3QgYnl0ZXNf
cGVyX3NhbXBsZSA9IDA7CisgIHNpemVfdCBudW1fc2FtcGxlcyA9IDA7CisgIFJlYWRhYmxlV2F2
QnVmZmVyIHIoa0J1Ziwgc2l6ZW9mKGtCdWYpLCAvKmNoZWNrX3JlYWRfc2l6ZT0qL2ZhbHNlKTsK
KyAgRVhQRUNUX0ZBTFNFKFJlYWRXYXZIZWFkZXIoJnIsICZudW1fY2hhbm5lbHMsICZzYW1wbGVf
cmF0ZSwgJmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVzX3Blcl9z
YW1wbGUsICZudW1fc2FtcGxlcykpOworfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25f
dHlwZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl90eXBlcy5oCmluZGV4IDk5YzQwNjRhM2NmNjYwZDEzMjZhZDU5MGU0ZjY4ZmEzNDQ0M2VkMGEu
Ljg0OGI4OTlhMGRkMWY0ODljNTI2ZDBiMjU0NTFhNTUwNGMyYjJiMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl90eXBlcy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl90eXBl
cy5oCkBAIC0xMSwxNiArMTEsMTUgQEAKICNpZm5kZWYgQ09NTU9OX1RZUEVTX0hfCiAjZGVmaW5l
IENPTU1PTl9UWVBFU19IXwogCi0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0jaW5jbHVkZSA8c3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxzdGRk
ZWYuaD4gIC8vIEZvciBzaXplX3QKKyNpbmNsdWRlIDxjc3RkaW50PgogCi0jaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKIC8vIFRPRE8o
c3ByYW5nKTogUmVtb3ZlIHRoaXMgaW5jbHVkZSB3aGVuIGFsbCB1c2FnZSBpbmNsdWRlcyBpdCBk
aXJlY3RseS4KICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgi
CisvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy83NjYwKTogRGVsZXRlIGluY2x1ZGUgb25jZSBkb3du
c3RyZWFtIGNvZGUgaXMgdXBkYXRlZC4KKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29kZWNf
dHlwZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2RlcHJlY2F0aW9uLmgiCiAKICNpZiBkZWZpbmVkKF9NU0NfVkVSKQogLy8gRGlzYWJsZSAibmV3
IGJlaGF2aW9yOiBlbGVtZW50cyBvZiBhcnJheSB3aWxsIGJlIGRlZmF1bHQgaW5pdGlhbGl6ZWQi
CkBAIC0zMCwxNiArMjksNiBAQAogCiAjZGVmaW5lIFJUUF9QQVlMT0FEX05BTUVfU0laRSAzMnUK
IAotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikgfHwgZGVmaW5lZChXSU4zMikKLS8vIENvbXBhcmVz
IHR3byBzdHJpbmdzIHdpdGhvdXQgcmVnYXJkIHRvIGNhc2UuCi0jZGVmaW5lIFNUUl9DQVNFX0NN
UChzMSwgczIpIDo6X3N0cmljbXAoczEsIHMyKQotLy8gQ29tcGFyZXMgY2hhcmFjdGVycyBvZiB0
d28gc3RyaW5ncyB3aXRob3V0IHJlZ2FyZCB0byBjYXNlLgotI2RlZmluZSBTVFJfTkNBU0VfQ01Q
KHMxLCBzMiwgbikgOjpfc3RybmljbXAoczEsIHMyLCBuKQotI2Vsc2UKLSNkZWZpbmUgU1RSX0NB
U0VfQ01QKHMxLCBzMikgOjpzdHJjYXNlY21wKHMxLCBzMikKLSNkZWZpbmUgU1RSX05DQVNFX0NN
UChzMSwgczIsIG4pIDo6c3RybmNhc2VjbXAoczEsIHMyLCBuKQotI2VuZGlmCi0KIG5hbWVzcGFj
ZSB3ZWJydGMgewogCiBlbnVtIEZyYW1lVHlwZSB7CkBAIC01MCwyOSArMzksNiBAQCBlbnVtIEZy
YW1lVHlwZSB7CiAgIGtWaWRlb0ZyYW1lRGVsdGEgPSA0LAogfTsKIAotLy8gU3RhdGlzdGljcyBm
b3IgYW4gUlRDUCBjaGFubmVsCi1zdHJ1Y3QgUnRjcFN0YXRpc3RpY3MgewotICBSdGNwU3RhdGlz
dGljcygpCi0gICAgICA6IGZyYWN0aW9uX2xvc3QoMCksCi0gICAgICAgIHBhY2tldHNfbG9zdCgw
KSwKLSAgICAgICAgZXh0ZW5kZWRfaGlnaGVzdF9zZXF1ZW5jZV9udW1iZXIoMCksCi0gICAgICAg
IGppdHRlcigwKSB7fQotCi0gIHVpbnQ4X3QgZnJhY3Rpb25fbG9zdDsKLSAgaW50MzJfdCBwYWNr
ZXRzX2xvc3Q7ICAvLyBEZWZpbmVkIGFzIGEgMjQgYml0IHNpZ25lZCBpbnRlZ2VyIGluIFJUQ1AK
LSAgdWludDMyX3QgZXh0ZW5kZWRfaGlnaGVzdF9zZXF1ZW5jZV9udW1iZXI7Ci0gIHVpbnQzMl90
IGppdHRlcjsKLX07Ci0KLWNsYXNzIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sgewotIHB1YmxpYzoK
LSAgdmlydHVhbCB+UnRjcFN0YXRpc3RpY3NDYWxsYmFjaygpIHt9Ci0KLSAgdmlydHVhbCB2b2lk
IFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFJ0Y3BTdGF0aXN0aWNzJiBzdGF0aXN0aWNzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYykgPSAwOwotICB2aXJ0
dWFsIHZvaWQgQ05hbWVDaGFuZ2VkKGNvbnN0IGNoYXIqIGNuYW1lLCB1aW50MzJfdCBzc3JjKSA9
IDA7Ci19OwotCiAvLyBTdGF0aXN0aWNzIGZvciBSVENQIHBhY2tldCB0eXBlcy4KIHN0cnVjdCBS
dGNwUGFja2V0VHlwZUNvdW50ZXIgewogICBSdGNwUGFja2V0VHlwZUNvdW50ZXIoKQpAQCAtMjA3
LDcgKzE3Myw3IEBAIHN0cnVjdCBDb2RlY0luc3QgewogCiAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDb2RlY0luc3QmIG90aGVyKSBjb25zdCB7CiAgICAgcmV0dXJuIHBsdHlwZSA9PSBvdGhlci5w
bHR5cGUgJiYKLSAgICAgICAgICAgKFNUUl9DQVNFX0NNUChwbG5hbWUsIG90aGVyLnBsbmFtZSkg
PT0gMCkgJiYKKyAgICAgICAgICAgYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsIG90aGVy
LnBsbmFtZSkgJiYKICAgICAgICAgICAgcGxmcmVxID09IG90aGVyLnBsZnJlcSAmJiBwYWNzaXpl
ID09IG90aGVyLnBhY3NpemUgJiYKICAgICAgICAgICAgY2hhbm5lbHMgPT0gb3RoZXIuY2hhbm5l
bHMgJiYgcmF0ZSA9PSBvdGhlci5yYXRlOwogICB9CkBAIC0yMTgsODAgKzE4NCw2IEBAIHN0cnVj
dCBDb2RlY0luc3QgewogLy8gUlRQCiBlbnVtIHsga1J0cENzcmNTaXplID0gMTUgfTsgIC8vIFJG
QyAzNTUwIHBhZ2UgMTMKIAotLy8gTkVURVEgc3RhdGlzdGljcy4KLXN0cnVjdCBOZXR3b3JrU3Rh
dGlzdGljcyB7Ci0gIC8vIGN1cnJlbnQgaml0dGVyIGJ1ZmZlciBzaXplIGluIG1zCi0gIHVpbnQx
Nl90IGN1cnJlbnRCdWZmZXJTaXplOwotICAvLyBwcmVmZXJyZWQgKG9wdGltYWwpIGJ1ZmZlciBz
aXplIGluIG1zCi0gIHVpbnQxNl90IHByZWZlcnJlZEJ1ZmZlclNpemU7Ci0gIC8vIGFkZGluZyBl
eHRyYSBkZWxheSBkdWUgdG8gInBlYWt5IGppdHRlciIKLSAgYm9vbCBqaXR0ZXJQZWFrc0ZvdW5k
OwotICAvLyBTdGF0cyBiZWxvdyBjb3JyZXNwb25kIHRvIHNpbWlsYXJseS1uYW1lZCBmaWVsZHMg
aW4gdGhlIFdlYlJUQyBzdGF0cyBzcGVjLgotICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2Vi
cnRjLXN0YXRzLyNkb20tcnRjbWVkaWFzdHJlYW10cmFja3N0YXRzCi0gIHVpbnQ2NF90IHRvdGFs
U2FtcGxlc1JlY2VpdmVkOwotICB1aW50NjRfdCBjb25jZWFsZWRTYW1wbGVzOwotICB1aW50NjRf
dCBjb25jZWFsbWVudEV2ZW50czsKLSAgdWludDY0X3Qgaml0dGVyQnVmZmVyRGVsYXlNczsKLSAg
Ly8gU3RhdHMgYmVsb3cgRE8gTk9UIGNvcnJlc3BvbmQgZGlyZWN0bHkgdG8gYW55dGhpbmcgaW4g
dGhlIFdlYlJUQyBzdGF0cwotICAvLyBMb3NzIHJhdGUgKG5ldHdvcmsgKyBsYXRlKTsgZnJhY3Rp
b24gYmV0d2VlbiAwIGFuZCAxLCBzY2FsZWQgdG8gUTE0LgotICB1aW50MTZfdCBjdXJyZW50UGFj
a2V0TG9zc1JhdGU7Ci0gIC8vIExhdGUgbG9zcyByYXRlOyBmcmFjdGlvbiBiZXR3ZWVuIDAgYW5k
IDEsIHNjYWxlZCB0byBRMTQuCi0gIHVuaW9uIHsKLSAgICBSVENfREVQUkVDQVRFRCB1aW50MTZf
dCBjdXJyZW50RGlzY2FyZFJhdGU7Ci0gIH07Ci0gIC8vIGZyYWN0aW9uIChvZiBvcmlnaW5hbCBz
dHJlYW0pIG9mIHN5bnRoZXNpemVkIGF1ZGlvIGluc2VydGVkIHRocm91Z2gKLSAgLy8gZXhwYW5z
aW9uIChpbiBRMTQpCi0gIHVpbnQxNl90IGN1cnJlbnRFeHBhbmRSYXRlOwotICAvLyBmcmFjdGlv
biAob2Ygb3JpZ2luYWwgc3RyZWFtKSBvZiBzeW50aGVzaXplZCBzcGVlY2ggaW5zZXJ0ZWQgdGhy
b3VnaAotICAvLyBleHBhbnNpb24gKGluIFExNCkKLSAgdWludDE2X3QgY3VycmVudFNwZWVjaEV4
cGFuZFJhdGU7Ci0gIC8vIGZyYWN0aW9uIG9mIHN5bnRoZXNpemVkIHNwZWVjaCBpbnNlcnRlZCB0
aHJvdWdoIHByZS1lbXB0aXZlIGV4cGFuc2lvbgotICAvLyAoaW4gUTE0KQotICB1aW50MTZfdCBj
dXJyZW50UHJlZW1wdGl2ZVJhdGU7Ci0gIC8vIGZyYWN0aW9uIG9mIGRhdGEgcmVtb3ZlZCB0aHJv
dWdoIGFjY2VsZXJhdGlvbiAoaW4gUTE0KQotICB1aW50MTZfdCBjdXJyZW50QWNjZWxlcmF0ZVJh
dGU7Ci0gIC8vIGZyYWN0aW9uIG9mIGRhdGEgY29taW5nIGZyb20gc2Vjb25kYXJ5IGRlY29kaW5n
IChpbiBRMTQpCi0gIHVpbnQxNl90IGN1cnJlbnRTZWNvbmRhcnlEZWNvZGVkUmF0ZTsKLSAgLy8g
RnJhY3Rpb24gb2Ygc2Vjb25kYXJ5IGRhdGEsIGluY2x1ZGluZyBGRUMgYW5kIFJFRCwgdGhhdCBp
cyBkaXNjYXJkZWQgKGluCi0gIC8vIFExNCkuIERpc2NhcmRpbmcgb2Ygc2Vjb25kYXJ5IGRhdGEg
Y2FuIGJlIGNhdXNlZCBieSB0aGUgcmVjZXB0aW9uIG9mIHRoZQotICAvLyBwcmltYXJ5IGRhdGEs
IG9ic29sZXRpbmcgdGhlIHNlY29uZGFyeSBkYXRhLiBJdCBjYW4gYWxzbyBiZSBjYXVzZWQgYnkg
ZWFybHkKLSAgLy8gb3IgbGF0ZSBhcnJpdmFsIG9mIHNlY29uZGFyeSBkYXRhLgotICB1aW50MTZf
dCBjdXJyZW50U2Vjb25kYXJ5RGlzY2FyZGVkUmF0ZTsKLSAgLy8gY2xvY2stZHJpZnQgaW4gcGFy
dHMtcGVyLW1pbGxpb24gKG5lZ2F0aXZlIG9yIHBvc2l0aXZlKQotICBpbnQzMl90IGNsb2NrRHJp
ZnRQUE07Ci0gIC8vIGF2ZXJhZ2UgcGFja2V0IHdhaXRpbmcgdGltZSBpbiB0aGUgaml0dGVyIGJ1
ZmZlciAobXMpCi0gIGludCBtZWFuV2FpdGluZ1RpbWVNczsKLSAgLy8gbWVkaWFuIHBhY2tldCB3
YWl0aW5nIHRpbWUgaW4gdGhlIGppdHRlciBidWZmZXIgKG1zKQotICBpbnQgbWVkaWFuV2FpdGlu
Z1RpbWVNczsKLSAgLy8gbWluIHBhY2tldCB3YWl0aW5nIHRpbWUgaW4gdGhlIGppdHRlciBidWZm
ZXIgKG1zKQotICBpbnQgbWluV2FpdGluZ1RpbWVNczsKLSAgLy8gbWF4IHBhY2tldCB3YWl0aW5n
IHRpbWUgaW4gdGhlIGppdHRlciBidWZmZXIgKG1zKQotICBpbnQgbWF4V2FpdGluZ1RpbWVNczsK
LSAgLy8gYWRkZWQgc2FtcGxlcyBpbiBvZmYgbW9kZSBkdWUgdG8gcGFja2V0IGxvc3MKLSAgc2l6
ZV90IGFkZGVkU2FtcGxlczsKLX07Ci0KLS8vIFN0YXRpc3RpY3MgZm9yIGNhbGxzIHRvIEF1ZGlv
Q29kaW5nTW9kdWxlOjpQbGF5b3V0RGF0YTEwTXMoKS4KLXN0cnVjdCBBdWRpb0RlY29kaW5nQ2Fs
bFN0YXRzIHsKLSAgQXVkaW9EZWNvZGluZ0NhbGxTdGF0cygpCi0gICAgICA6IGNhbGxzX3RvX3Np
bGVuY2VfZ2VuZXJhdG9yKDApLAotICAgICAgICBjYWxsc190b19uZXRlcSgwKSwKLSAgICAgICAg
ZGVjb2RlZF9ub3JtYWwoMCksCi0gICAgICAgIGRlY29kZWRfcGxjKDApLAotICAgICAgICBkZWNv
ZGVkX2NuZygwKSwKLSAgICAgICAgZGVjb2RlZF9wbGNfY25nKDApLAotICAgICAgICBkZWNvZGVk
X211dGVkX291dHB1dCgwKSB7fQotCi0gIGludCBjYWxsc190b19zaWxlbmNlX2dlbmVyYXRvcjsg
IC8vIE51bWJlciBvZiBjYWxscyB3aGVyZSBzaWxlbmNlIGdlbmVyYXRlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIE5ldEVxIHdhcyBkaXNlbmdhZ2VkIGZyb20g
ZGVjb2RpbmcuCi0gIGludCBjYWxsc190b19uZXRlcTsgICAgICAgICAgICAgIC8vIE51bWJlciBv
ZiBjYWxscyB0byBOZXRFcS4KLSAgaW50IGRlY29kZWRfbm9ybWFsOyAgLy8gTnVtYmVyIG9mIGNh
bGxzIHdoZXJlIGF1ZGlvIFJUUCBwYWNrZXQgZGVjb2RlZC4KLSAgaW50IGRlY29kZWRfcGxjOyAg
ICAgLy8gTnVtYmVyIG9mIGNhbGxzIHJlc3VsdGVkIGluIFBMQy4KLSAgaW50IGRlY29kZWRfY25n
OyAgLy8gTnVtYmVyIG9mIGNhbGxzIHdoZXJlIGNvbWZvcnQgbm9pc2UgZ2VuZXJhdGVkIGR1ZSB0
byBEVFguCi0gIGludCBkZWNvZGVkX3BsY19jbmc7ICAgICAgIC8vIE51bWJlciBvZiBjYWxscyBy
ZXN1bHRlZCB3aGVyZSBQTEMgZmFkZWQgdG8gQ05HLgotICBpbnQgZGVjb2RlZF9tdXRlZF9vdXRw
dXQ7ICAvLyBOdW1iZXIgb2YgY2FsbHMgcmV0dXJuaW5nIGEgbXV0ZWQgc3RhdGUgb3V0cHV0Lgot
fTsKLQogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CiAvLyBWaWRlbyBzcGVjaWZpYyB0eXBlcwogLy8gPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CkBAIC0zMzAsMTggKzIyMiw2IEBAIGVudW0gUHJvZmlsZSB7CiAKIH0gIC8vIG5hbWVzcGFjZSBI
MjY0CiAKLS8vIFZpZGVvIGNvZGVjIHR5cGVzCi1lbnVtIFZpZGVvQ29kZWNUeXBlIHsKLSAgLy8g
VGhlcmUgYXJlIHZhcmlvdXMgbWVtc2V0KC4uLiwgMCwgLi4uKSBjYWxscyBpbiB0aGUgY29kZSB0
aGF0IHJlbHkgb24KLSAgLy8ga1ZpZGVvQ29kZWNHZW5lcmljIGJlaW5nIHplcm8uCi0gIGtWaWRl
b0NvZGVjR2VuZXJpYyA9IDAsCi0gIGtWaWRlb0NvZGVjVlA4LAotICBrVmlkZW9Db2RlY1ZQOSwK
LSAga1ZpZGVvQ29kZWNIMjY0LAotICBrVmlkZW9Db2RlY0k0MjAsCi0gIGtWaWRlb0NvZGVjTXVs
dGlwbGV4LAotfTsKLQogc3RydWN0IFNwYXRpYWxMYXllciB7CiAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTcGF0aWFsTGF5ZXImIG90aGVyKSBjb25zdDsKICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFNwYXRpYWxMYXllciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9
CkBAIC0zNjEsOSArMjQxLDYgQEAgc3RydWN0IFNwYXRpYWxMYXllciB7CiAvLyBzZXR0aW5ncyBz
dWNoIGFzIHJlc29sdXRpb24uCiB0eXBlZGVmIFNwYXRpYWxMYXllciBTaW11bGNhc3RTdHJlYW07
CiAKLS8vIFRPRE8oc3ByYW5nKTogUmVtb3ZlIHRoaXMgd2hlbiBkb3duc3RyZWFtIHByb2plY3Rz
IGhhdmUgYmVlbiB1cGRhdGVkLgotdXNpbmcgQml0cmF0ZUFsbG9jYXRpb24gPSBWaWRlb0JpdHJh
dGVBbGxvY2F0aW9uOwotCiAvLyBCYW5kd2lkdGggb3Zlci11c2UgZGV0ZWN0b3Igb3B0aW9ucy4g
IFRoZXNlIGFyZSB1c2VkIHRvIGRyaXZlCiAvLyBleHBlcmltZW50YXRpb24gd2l0aCBiYW5kd2lk
dGggZXN0aW1hdGlvbiBwYXJhbWV0ZXJzLgogLy8gU2VlIG1vZHVsZXMvcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL0JVSUxELmduIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL0JVSUxELmdu
CmluZGV4IDQzNzgwYzExM2Q1MDdmYjRiNjY4MmY5ZmVmODNiZTUzMGJhZjc1OTcuLjEyNWJjZmM1
NTgzMzdlMGUyM2M3MWU4OTI5ZjYzZDA4OGY5ZDQ2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9CVUlMRC5nbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8v
QlVJTEQuZ24KQEAgLTI2LDcgKzI2LDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb21tb25fdmlk
ZW8iKSB7CiAgICAgImgyNjQvc3BzX3Z1aV9yZXdyaXRlci5oIiwKICAgICAiaTQyMF9idWZmZXJf
cG9vbC5jYyIsCiAgICAgImluY2x1ZGUvYml0cmF0ZV9hZGp1c3Rlci5oIiwKLSAgICAiaW5jbHVk
ZS9mcmFtZV9jYWxsYmFjay5oIiwKICAgICAiaW5jbHVkZS9pNDIwX2J1ZmZlcl9wb29sLmgiLAog
ICAgICJpbmNsdWRlL2luY29taW5nX3ZpZGVvX3N0cmVhbS5oIiwKICAgICAiaW5jbHVkZS92aWRl
b19mcmFtZS5oIiwKQEAgLTM0LDcgKzMzLDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb21tb25f
dmlkZW8iKSB7CiAgICAgImluY29taW5nX3ZpZGVvX3N0cmVhbS5jYyIsCiAgICAgImxpYnl1di9p
bmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIsCiAgICAgImxpYnl1di93ZWJydGNfbGlieXV2LmNjIiwK
LSAgICAidmlkZW9fZnJhbWUuY2MiLAogICAgICJ2aWRlb19mcmFtZV9idWZmZXIuY2MiLAogICAg
ICJ2aWRlb19yZW5kZXJfZnJhbWVzLmNjIiwKICAgICAidmlkZW9fcmVuZGVyX2ZyYW1lcy5oIiwK
QEAgLTQyLDYgKzQwLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb21tb25fdmlkZW8iKSB7CiAK
ICAgZGVwcyA9IFsKICAgICAiLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uL2FwaS92aWRlbzpl
bmNvZGVkX2ltYWdlIiwKICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdGlv
biIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRvciIsCiAgICAgIi4u
L2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCkBAIC05Niw2ICs5NSw3IEBAIGlmIChydGNfaW5jbHVk
ZV90ZXN0cykgewogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAg
ICAgICIuLi90ZXN0OmZpbGV1dGlscyIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X21haW4iLAorICAg
ICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICIuLi90ZXN0OnZpZGVvX3Rlc3RfY29t
bW9uIiwKICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgICAgIi8vdGhpcmRfcGFydHkvbGli
eXV2IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl92aWRlby9iaXRyYXRlX2FkanVzdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2JpdHJhdGVfYWRqdXN0ZXIuY2MK
aW5kZXggMTYzYzRiMTk4MTQ3NGIzOTJiYjg3MDcyMDZmN2FkNTc4NWY5NjllYS4uYWMyMWYyYmQy
MDM4N2E2NzMxNzI3YjQ4MDEwZWJjMjA1YWUxMmRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2JpdHJhdGVfYWRqdXN0
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX3ZpZGVvL2JpdHJhdGVfYWRqdXN0ZXIuY2MKQEAgLTEzLDcgKzEzLDYgQEAKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
dGltZXV0aWxzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L2gyNjRfYml0c3RyZWFtX3BhcnNlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9o
MjY0L2gyNjRfYml0c3RyZWFtX3BhcnNlci5jYwppbmRleCAyZTYzYjlkNGExNmVmNWU2MWEzY2Zj
YjFmNWViMDQxMTFjOWM5NDU5Li5mM2QyZjhhNmJmODA0ZGUzMTQzM2NkMmQ3Y2I1NGFhMDBhOGI1
M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2
NF9iaXRzdHJlYW1fcGFyc2VyLmNjCkBAIC05LDEzICs5LDEyIEBACiAgKi8KICNpbmNsdWRlICJj
b21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuaCIKIAotI2luY2x1ZGUgPG1l
bW9yeT4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAotI2luY2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgotCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21t
b24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9iaXRidWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVh
bV9wYXJzZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl92aWRlby9oMjY0L2gyNjRfYml0c3RyZWFtX3BhcnNlci5oCmluZGV4IGIzZmFjN2JiMjE1
NzI2ZWZmODJmZjMzYWExZTIzNzRhY2VlZTMyMzIuLjk2MmM5YzE2YWQyZjQ2ZmJhZDdlNDdkM2My
NjRmNTg2NmEyMWJhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L2gyNjRfYml0c3RyZWFtX3BhcnNlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRl
by9oMjY0L2gyNjRfYml0c3RyZWFtX3BhcnNlci5oCkBAIC0xNywxMCArMTcsNiBAQAogI2luY2x1
ZGUgImNvbW1vbl92aWRlby9oMjY0L3Bwc19wYXJzZXIuaCIKICNpbmNsdWRlICJjb21tb25fdmlk
ZW8vaDI2NC9zcHNfcGFyc2VyLmgiCiAKLW5hbWVzcGFjZSBydGMgewotY2xhc3MgQml0QnVmZmVy
V3JpdGVyOwotfQotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gU3RhdGVmdWwgSDI2NCBiaXRz
dHJlYW0gcGFyc2VyIChkdWUgdG8gU1BTL1BQUykuIFVzZWQgdG8gcGFyc2Ugb3V0IFFQIHZhbHVl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5jYwppbmRl
eCA2MGVkOTRkNDAzMTE2NzU4NjVlZjg0NGNmODg0NjU2ODZlZWIwZjUxLi41ZTU4YmE2MmU5MTMw
ODUzNGZkZmJiZWFmOTQyN2I3ZGYwNjk2Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25f
dmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAi
Y29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisK
IG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIEgyNjQgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9o
MjY0X2NvbW1vbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaAppbmRleCBhNThhOWY1NWE1OWNkZGE0NjA3
OTIyMmY3YTJiYTU2ODJlYzUyMzQxLi4wMjc4MzNiN2NkN2MyNmZlOGQwZjg4YzkxMGYxZGI4ODk0
ZGQ2NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L2gyNjRfY29tbW9u
LmgKQEAgLTExLDcgKzExLDggQEAKICNpZm5kZWYgQ09NTU9OX1ZJREVPX0gyNjRfSDI2NF9DT01N
T05fSF8KICNkZWZpbmUgQ09NTU9OX1ZJREVPX0gyNjRfSDI2NF9DT01NT05fSF8KIAotI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNp
bmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRl
by9oMjY0L3Bwc19wYXJzZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9wcHNfcGFyc2VyLmNjCmluZGV4IDViYzI5ZjM1OTI1
N2QxY2RmMTRkZWFjM2I1OWNlYWRhNTQ0Njk4Y2QuLjQ2NGY2MDgxZTMxZTBjNWI2NTNiNDY3ZWY5
N2IzMWI4ZTA4ZjZmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Bwc19wYXJzZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvcHBz
X3BhcnNlci5jYwpAQCAtMTAsMTIgKzEwLDEyIEBACiAKICNpbmNsdWRlICJjb21tb25fdmlkZW8v
aDI2NC9wcHNfcGFyc2VyLmgiCiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8Y3N0ZGlu
dD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9oMjY0
X2NvbW1vbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogI2RlZmlu
ZSBSRVRVUk5fRU1QVFlfT05fRkFJTCh4KSBcCiAgIGlmICghKHgpKSB7ICAgICAgICAgICAgICAg
ICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl92aWRlby9oMjY0L3Nwc19wYXJzZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfcGFyc2VyLmNjCmlu
ZGV4IGI2Nzk5YTNiZTQwODQwNDYxYWZkYTIwYTE0MGJjMmVmOWI2NGU3NjQuLmM2ZjZkNDc0NjZi
MTVjYmYxM2NkZjlmOGNmZjliYzU4MGQwNmZkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Nwc19wYXJzZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X3ZpZGVvL2gyNjQvc3BzX3BhcnNlci5jYwpAQCAtMTAsMTIgKzEwLDExIEBACiAKICNpbmNsdWRl
ICJjb21tb25fdmlkZW8vaDI2NC9zcHNfcGFyc2VyLmgiCiAKLSNpbmNsdWRlIDxtZW1vcnk+Cisj
aW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJjb21tb25f
dmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHsKIHR5cGVkZWYg
YWJzbDo6b3B0aW9uYWw8d2VicnRjOjpTcHNQYXJzZXI6OlNwc1N0YXRlPiBPcHRpb25hbFNwczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl92aWRlby9oMjY0L3Nwc192dWlfcmV3cml0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jld3JpdGVy
LmNjCmluZGV4IDc0OWI2MmU2ZDIxZDMxM2FmMDQwNzQzNmMwZGNiMDlkNzA1MmQ5ZTAuLjNlYWIx
MWYxODhjZWJiMGZmOGM4M2IxNTkzZDhiYzM1YjUyMmQ4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Nwc192
dWlfcmV3cml0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3Z1aV9yZXdyaXRlci5jYwpAQCAtMTEsMTggKzEx
LDE3IEBACiAKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jld3JpdGVyLmgi
CiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0
cmluZy5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVk
ZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKKyNpbmNsdWRlICJjb21tb25fdmlk
ZW8vaDI2NC9zcHNfcGFyc2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYml0YnVmZmVyLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAKLSNpbmNsdWRl
ICJjb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5oIgotI2luY2x1ZGUgImNvbW1vbl92aWRl
by9oMjY0L3Nwc19wYXJzZXIuaCIKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIFRoZSBtYXhp
bXVtIGV4cGVjdGVkIGdyb3d0aCBmcm9tIGFkZGluZyBhIFZVSSB0byB0aGUgU1BTLiBJdCdzIGFj
dHVhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jld3JpdGVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jl
d3JpdGVyLmgKaW5kZXggMjMzMDUxZDJkNjFkZmI2Zjg1Nzk5YzMwYmFkY2Q2OWI4NmQ5ZDA2OC4u
MjBkMWRkMGNkYmZlZjY4ODAwN2I5YzIzNjI4NDZmY2FlODcxNGQwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQv
c3BzX3Z1aV9yZXdyaXRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Nwc192dWlfcmV3cml0ZXIuaApAQCAtMTIsMTQg
KzEyLDEzIEBACiAjaWZuZGVmIENPTU1PTl9WSURFT19IMjY0X1NQU19WVUlfUkVXUklURVJfSF8K
ICNkZWZpbmUgQ09NTU9OX1ZJREVPX0gyNjRfU1BTX1ZVSV9SRVdSSVRFUl9IXwogCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3BhcnNlci5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogCi1uYW1lc3BhY2UgcnRjIHsKLWNsYXNzIEJp
dEJ1ZmZlcjsKLX0KLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEEgY2xhc3MgdGhhdCBjYW4g
cGFyc2UgYW4gU1BTIGJsb2NrIG9mIGEgTkFMIHVuaXQgYW5kIGlmIG5lY2Vzc2FyeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3Zp
ZGVvL2k0MjBfYnVmZmVyX3Bvb2wuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaTQyMF9idWZmZXJfcG9vbC5jYwppbmRleCBjNDAzZWVi
NGZjYmExNGE0OTlmMmIwOTEwNDBjZDMxNTg4MTdkZGI1Li4yZTZjZGM4M2I1MWI2YmZiNGY4ODlm
ODQ4NTE4ODlhZTFmY2IwOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaTQyMF9idWZmZXJfcG9vbC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaTQy
MF9idWZmZXJfcG9vbC5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAiY29tbW9uX3Zp
ZGVvL2luY2x1ZGUvaTQyMF9idWZmZXJfcG9vbC5oIgogCisjaW5jbHVkZSA8bGltaXRzPgorCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3Zp
ZGVvL2luY2x1ZGUvYml0cmF0ZV9hZGp1c3Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvYml0cmF0ZV9hZGp1c3Rlci5o
CmluZGV4IGVlMzEyZTRmOWE0NTJlNzU5YmUzOWRkNWE1NjlkZjFjNWM5ZGZkNTcuLmJjMmM2YmI4
NDkzNmQzOWI5Mjk1N2YwYTQ4MmNjNjk5NmVkMTFlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2JpdHJh
dGVfYWRqdXN0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9iaXRyYXRlX2FkanVzdGVyLmgKQEAgLTExLDEwICsx
MSwxMyBAQAogI2lmbmRlZiBDT01NT05fVklERU9fSU5DTFVERV9CSVRSQVRFX0FESlVTVEVSX0hf
CiAjZGVmaW5lIENPTU1PTl9WSURFT19JTkNMVURFX0JJVFJBVEVfQURKVVNURVJfSF8KIAotI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50
Lmg+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZV9zdGF0aXN0aWNz
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9mcmFtZV9jYWxsYmFjay5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUv
ZnJhbWVfY2FsbGJhY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM4ODNjMWQ4
ZDJmNjg4YTM2NzNiMGFlMzYyZTdlZjhiYWNiMzk0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9mcmFtZV9jYWxsYmFjay5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgQ09N
TU9OX1ZJREVPX0lOQ0xVREVfRlJBTUVfQ0FMTEJBQ0tfSF8KLSNkZWZpbmUgQ09NTU9OX1ZJREVP
X0lOQ0xVREVfRlJBTUVfQ0FMTEJBQ0tfSF8KLQotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1
ZGUgPHN0ZGludC5oPgotCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVp
bGQvaW5jbHVkZSkKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIFZpZGVvRnJhbWU7Ci0K
LXN0cnVjdCBFbmNvZGVkRnJhbWUgewotIHB1YmxpYzoKLSAgRW5jb2RlZEZyYW1lKCkKLSAgICAg
IDogZGF0YV8obnVsbHB0ciksCi0gICAgICAgIGxlbmd0aF8oMCksCi0gICAgICAgIGZyYW1lX3R5
cGVfKGtFbXB0eUZyYW1lKSwKLSAgICAgICAgc3RyZWFtX2lkXygwKSwKLSAgICAgICAgdGltZXN0
YW1wXygwKSB7fQotICBFbmNvZGVkRnJhbWUoY29uc3QgdWludDhfdCogZGF0YSwKLSAgICAgICAg
ICAgICAgIHNpemVfdCBsZW5ndGgsCi0gICAgICAgICAgICAgICBGcmFtZVR5cGUgZnJhbWVfdHlw
ZSwKLSAgICAgICAgICAgICAgIHNpemVfdCBzdHJlYW1faWQsCi0gICAgICAgICAgICAgICB1aW50
MzJfdCB0aW1lc3RhbXApCi0gICAgICA6IGRhdGFfKGRhdGEpLAotICAgICAgICBsZW5ndGhfKGxl
bmd0aCksCi0gICAgICAgIGZyYW1lX3R5cGVfKGZyYW1lX3R5cGUpLAotICAgICAgICBzdHJlYW1f
aWRfKHN0cmVhbV9pZCksCi0gICAgICAgIHRpbWVzdGFtcF8odGltZXN0YW1wKSB7fQotCi0gIGNv
bnN0IHVpbnQ4X3QqIGRhdGFfOwotICBjb25zdCBzaXplX3QgbGVuZ3RoXzsKLSAgY29uc3QgRnJh
bWVUeXBlIGZyYW1lX3R5cGVfOwotICBjb25zdCBzaXplX3Qgc3RyZWFtX2lkXzsKLSAgY29uc3Qg
dWludDMyX3QgdGltZXN0YW1wXzsKLX07Ci0KLWNsYXNzIEVuY29kZWRGcmFtZU9ic2VydmVyIHsK
LSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBFbmNvZGVkRnJhbWVDYWxsYmFjayhjb25zdCBFbmNv
ZGVkRnJhbWUmIGVuY29kZWRfZnJhbWUpID0gMDsKLQotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+
RW5jb2RlZEZyYW1lT2JzZXJ2ZXIoKSB7fQotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywot
Ci0jZW5kaWYgIC8vIENPTU1PTl9WSURFT19JTkNMVURFX0ZSQU1FX0NBTExCQUNLX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25f
dmlkZW8vaW5jbHVkZS9pNDIwX2J1ZmZlcl9wb29sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9pNDIwX2J1ZmZlcl9wb29s
LmgKaW5kZXggNzlmN2VlYzIzYWYwOGZkMGVhNjU2ODc0MDY2NjU5ZmQwMDI4NmQ4Ny4uMmRjZWUx
OTVmYWQxZTczYjI4YjJjYjBlYzQxZTc4NGY2Mzc0MjU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvaTQy
MF9idWZmZXJfcG9vbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2k0MjBfYnVmZmVyX3Bvb2wuaApAQCAtMTEsMTIg
KzExLDEzIEBACiAjaWZuZGVmIENPTU1PTl9WSURFT19JTkNMVURFX0k0MjBfQlVGRkVSX1BPT0xf
SF8KICNkZWZpbmUgQ09NTU9OX1ZJREVPX0lOQ0xVREVfSTQyMF9CVUZGRVJfUE9PTF9IXwogCi0j
aW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGxpc3Q+CiAK
ICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9y
YWNlX2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl92aWRlby9pbmNsdWRlL2luY29taW5nX3ZpZGVvX3N0cmVhbS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvaW5j
b21pbmdfdmlkZW9fc3RyZWFtLmgKaW5kZXggODA2MzA2MWQzMTMyNzIyODAyMmQ5ZTliNTQ0ZDVi
NDQ3N2QzYTAwZi4uZmU4ZDEwZTIxNmEwZGZiZDA4YTY4YThiZTlkMGE2ZWYxOTc1OWZmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X3ZpZGVvL2luY2x1ZGUvaW5jb21pbmdfdmlkZW9fc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvaW5jb21p
bmdfdmlkZW9fc3RyZWFtLmgKQEAgLTExLDEwICsxMSwxNCBAQAogI2lmbmRlZiBDT01NT05fVklE
RU9fSU5DTFVERV9JTkNPTUlOR19WSURFT19TVFJFQU1fSF8KICNkZWZpbmUgQ09NTU9OX1ZJREVP
X0lOQ0xVREVfSU5DT01JTkdfVklERU9fU1RSRUFNX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4K
KworI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgImFwaS92aWRl
by92aWRlb19zaW5rX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby92aWRlb19y
ZW5kZXJfZnJhbWVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9j
aGVja2VyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS92aWRl
b19mcmFtZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaAppbmRleCA1NjU4NzBlNGRjMzY0NzE4MjRh
ODZiZjJjZTQ0ZTBjMTY2Njc2N2I2Li5iYTI4MGYyYThjZGNiZjg2YzhkYmIwNTI4YWU4MmE5NzNm
MjVmMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVv
X2ZyYW1lLmgKQEAgLTExLDkxICsxMSw3IEBACiAjaWZuZGVmIENPTU1PTl9WSURFT19JTkNMVURF
X1ZJREVPX0ZSQU1FX0hfCiAjZGVmaW5lIENPTU1PTl9WSURFT19JTkNMVURFX1ZJREVPX0ZSQU1F
X0hfCiAKLS8vIFRPRE8obmlzc2UpOiBUaGlzIGhlYWRlciBmaWxlIHNob3VsZCBldmVudHVhbGx5
IGJlIGRlbGV0ZWQuIFRoZQotLy8gRW5jb2RlZEltYWdlIGNsYXNzIHN0YXlzIGluIHRoaXMgZmls
ZSB1bnRpbCB3ZSBoYXZlIGZpZ3VyZWQgb3V0IGhvdwotLy8gdG8gcmVmYWN0b3IgYW5kIGNsZWFu
IHVwIHJlbGF0ZWQgaW50ZXJmYWNlcywgYXQgd2hpY2ggcG9pbnQgaXQKLS8vIHNob3VsZCBiZSBt
b3ZlZCB0byBzb21ld2hlcmUgdW5kZXIgYXBpLy4KLQotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKLSNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29udGVudF90eXBlLmgiCi0jaW5j
bHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3JvdGF0aW9uLmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVvL3Zp
ZGVvX3RpbWluZy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxk
L2luY2x1ZGUpCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBUT0RPKHBib3MpOiBSZW5hbWUg
RW5jb2RlZEZyYW1lIGFuZCByZWZvcm1hdCB0aGlzIGNsYXNzJyBtZW1iZXJzLgotY2xhc3MgRW5j
b2RlZEltYWdlIHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBjb25zdCBzaXplX3Qga0J1ZmZlclBhZGRp
bmdCeXRlc0gyNjQ7Ci0KLSAgLy8gU29tZSBkZWNvZGVycyByZXF1aXJlIGVuY29kZWQgaW1hZ2Ug
YnVmZmVycyB0byBiZSBwYWRkZWQgd2l0aCBhIHNtYWxsCi0gIC8vIG51bWJlciBvZiBhZGRpdGlv
bmFsIGJ5dGVzIChkdWUgdG8gb3Zlci1yZWFkaW5nIGJ5dGUgcmVhZGVycykuCi0gIHN0YXRpYyBz
aXplX3QgR2V0QnVmZmVyUGFkZGluZ0J5dGVzKFZpZGVvQ29kZWNUeXBlIGNvZGVjX3R5cGUpOwot
Ci0gIEVuY29kZWRJbWFnZSgpOwotICBFbmNvZGVkSW1hZ2UoY29uc3QgRW5jb2RlZEltYWdlJik7
Ci0gIEVuY29kZWRJbWFnZSh1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgsIHNpemVfdCBz
aXplKTsKLQotICAvLyBUT0RPKG5pc3NlKTogQ2hhbmdlIHN0eWxlIHRvIHRpbWVzdGFtcCgpLCBz
ZXRfdGltZXN0YW1wKCksIGZvciBjb25zaXN0ZW5jeQotICAvLyB3aXRoIHRoZSBWaWRlb0ZyYW1l
IGNsYXNzLgotICAvLyBTZXQgZnJhbWUgdGltZXN0YW1wICg5MGtIeikuCi0gIHZvaWQgU2V0VGlt
ZXN0YW1wKHVpbnQzMl90IHRpbWVzdGFtcCkgeyB0aW1lc3RhbXBfcnRwXyA9IHRpbWVzdGFtcDsg
fQotCi0gIC8vIEdldCBmcmFtZSB0aW1lc3RhbXAgKDkwa0h6KS4KLSAgdWludDMyX3QgVGltZXN0
YW1wKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3J0cF87IH0KLQotICB2b2lkIFNldEVuY29k
ZVRpbWUoaW50NjRfdCBlbmNvZGVfc3RhcnRfbXMsIGludDY0X3QgZW5jb2RlX2ZpbmlzaF9tcyk7
Ci0KLSAgYWJzbDo6b3B0aW9uYWw8aW50PiBTcGF0aWFsSW5kZXgoKSBjb25zdCB7Ci0gICAgaWYg
KHNwYXRpYWxfaW5kZXhfIDwgMCkKLSAgICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwotICAgIHJl
dHVybiBzcGF0aWFsX2luZGV4XzsKLSAgfQotICB2b2lkIFNldFNwYXRpYWxJbmRleChhYnNsOjpv
cHRpb25hbDxpbnQ+IHNwYXRpYWxfaW5kZXgpIHsKLSAgICBSVENfRENIRUNLX0dFKHNwYXRpYWxf
aW5kZXgudmFsdWVfb3IoMCksIDApOwotICAgIFJUQ19EQ0hFQ0tfTFQoc3BhdGlhbF9pbmRleC52
YWx1ZV9vcigwKSwga01heFNwYXRpYWxMYXllcnMpOwotICAgIHNwYXRpYWxfaW5kZXhfID0gc3Bh
dGlhbF9pbmRleC52YWx1ZV9vcigtMSk7Ci0gIH0KLQotICB1aW50MzJfdCBfZW5jb2RlZFdpZHRo
ID0gMDsKLSAgdWludDMyX3QgX2VuY29kZWRIZWlnaHQgPSAwOwotICAvLyBOVFAgdGltZSBvZiB0
aGUgY2FwdHVyZSB0aW1lIGluIGxvY2FsIHRpbWViYXNlIGluIG1pbGxpc2Vjb25kcy4KLSAgaW50
NjRfdCBudHBfdGltZV9tc18gPSAwOwotICBpbnQ2NF90IGNhcHR1cmVfdGltZV9tc18gPSAwOwot
ICBGcmFtZVR5cGUgX2ZyYW1lVHlwZSA9IGtWaWRlb0ZyYW1lRGVsdGE7Ci0gIHVpbnQ4X3QqIF9i
dWZmZXI7Ci0gIHNpemVfdCBfbGVuZ3RoOwotICBzaXplX3QgX3NpemU7Ci0gIFZpZGVvUm90YXRp
b24gcm90YXRpb25fID0ga1ZpZGVvUm90YXRpb25fMDsKLSAgVmlkZW9Db250ZW50VHlwZSBjb250
ZW50X3R5cGVfID0gVmlkZW9Db250ZW50VHlwZTo6VU5TUEVDSUZJRUQ7Ci0gIGJvb2wgX2NvbXBs
ZXRlRnJhbWUgPSBmYWxzZTsKLSAgaW50IHFwXyA9IC0xOyAgLy8gUXVhbnRpemVyIHZhbHVlLgot
Ci0gIC8vIFdoZW4gYW4gYXBwbGljYXRpb24gaW5kaWNhdGVzIG5vbi16ZXJvIHZhbHVlcyBoZXJl
LCBpdCBpcyB0YWtlbiBhcyBhbgotICAvLyBpbmRpY2F0aW9uIHRoYXQgYWxsIGZ1dHVyZSBmcmFt
ZXMgd2lsbCBiZSBjb25zdHJhaW5lZCB3aXRoIHRob3NlIGxpbWl0cwotICAvLyB1bnRpbCB0aGUg
YXBwbGljYXRpb24gaW5kaWNhdGVzIGEgY2hhbmdlIGFnYWluLgotICBQbGF5b3V0RGVsYXkgcGxh
eW91dF9kZWxheV8gPSB7LTEsIC0xfTsKLQotICBzdHJ1Y3QgVGltaW5nIHsKLSAgICB1aW50OF90
IGZsYWdzID0gVmlkZW9TZW5kVGltaW5nOjprSW52YWxpZDsKLSAgICBpbnQ2NF90IGVuY29kZV9z
dGFydF9tcyA9IDA7Ci0gICAgaW50NjRfdCBlbmNvZGVfZmluaXNoX21zID0gMDsKLSAgICBpbnQ2
NF90IHBhY2tldGl6YXRpb25fZmluaXNoX21zID0gMDsKLSAgICBpbnQ2NF90IHBhY2VyX2V4aXRf
bXMgPSAwOwotICAgIGludDY0X3QgbmV0d29ya190aW1lc3RhbXBfbXMgPSAwOwotICAgIGludDY0
X3QgbmV0d29yazJfdGltZXN0YW1wX21zID0gMDsKLSAgICBpbnQ2NF90IHJlY2VpdmVfc3RhcnRf
bXMgPSAwOwotICAgIGludDY0X3QgcmVjZWl2ZV9maW5pc2hfbXMgPSAwOwotICB9IHRpbWluZ187
Ci0KLSBwcml2YXRlOgotICB1aW50MzJfdCB0aW1lc3RhbXBfcnRwXyA9IDA7Ci0gIC8vIC0xIG1l
YW5zIG5vdCBzZXQuIFVzZSBhIHBsYWluIGludCByYXRoZXIgdGhhbiBvcHRpb25hbCwgdG8ga2Vl
cCB0aGlzIGNsYXNzCi0gIC8vIGNvcHlhYmxlIHdpdGggbWVtY3B5LgotICBpbnQgc3BhdGlhbF9p
bmRleF8gPSAtMTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKy8vIFRPRE8obmlzc2Up
OiBEZWxldGUgdGhpcyBmaWxlLCBhZnRlciBkb3duc3RyZWFtIGNvZGUgaXMgdXBkYXRlZC4KKyNp
bmNsdWRlICJhcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oIgogCiAjZW5kaWYgIC8vIENPTU1PTl9W
SURFT19JTkNMVURFX1ZJREVPX0ZSQU1FX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFt
ZV9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oCmluZGV4IDExYmI4MTI1MzE2
YWFjOTEyZDFmZjg1OWFhYWRkNzMwYTgyMWNmOGEuLmY4MTM4NTFiOWE5ZWE3MWFkNTc3ZTQ5MGZm
ZDY2YzFlNzE3ODY4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRl
by9pbmNsdWRlL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oCkBAIC0xMSw1MSArMTEsMTUgQEAKICNpZm5k
ZWYgQ09NTU9OX1ZJREVPX0lOQ0xVREVfVklERU9fRlJBTUVfQlVGRkVSX0hfCiAjZGVmaW5lIENP
TU1PTl9WSURFT19JTkNMVURFX1ZJREVPX0ZSQU1FX0JVRkZFUl9IXwogCi0jaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPHN0ZGludC5oPgogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2Zy
YW1lX2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NhbGxiYWNrLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9y
ZWZfcHRyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi0vLyBEZXByZWNhdGVkLiBQbGVhc2Ug
dXNlIFdyYXBJNDIwQnVmZmVyKC4uLikgaW5zdGVhZC4KLWNsYXNzIFdyYXBwZWRJNDIwQnVmZmVy
IDogcHVibGljIEk0MjBCdWZmZXJJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgV3JhcHBlZEk0MjBC
dWZmZXIoaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiB5X3BsYW5lLAotICAgICAgICAgICAgICAgICAg
ICBpbnQgeV9zdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHVfcGxh
bmUsCi0gICAgICAgICAgICAgICAgICAgIGludCB1X3N0cmlkZSwKLSAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCogdl9wbGFuZSwKLSAgICAgICAgICAgICAgICAgICAgaW50IHZfc3Ry
aWRlLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNhbGxiYWNrMDx2b2lkPiYgbm9f
bG9uZ2VyX3VzZWQpOwotICBpbnQgd2lkdGgoKSBjb25zdCBvdmVycmlkZTsKLSAgaW50IGhlaWdo
dCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gIGNvbnN0IHVpbnQ4X3QqIERhdGFZKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gIGNvbnN0IHVpbnQ4X3QqIERhdGFVKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGNvbnN0
IHVpbnQ4X3QqIERhdGFWKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGludCBTdHJpZGVZKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gIGludCBTdHJpZGVVKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGludCBTdHJpZGVW
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICBmcmllbmQgY2xhc3MgcnRjOjpSZWZD
b3VudGVkT2JqZWN0PFdyYXBwZWRJNDIwQnVmZmVyPjsKLSAgfldyYXBwZWRJNDIwQnVmZmVyKCkg
b3ZlcnJpZGU7Ci0KLSAgY29uc3QgaW50IHdpZHRoXzsKLSAgY29uc3QgaW50IGhlaWdodF87Ci0g
IGNvbnN0IHVpbnQ4X3QqIGNvbnN0IHlfcGxhbmVfOwotICBjb25zdCB1aW50OF90KiBjb25zdCB1
X3BsYW5lXzsKLSAgY29uc3QgdWludDhfdCogY29uc3Qgdl9wbGFuZV87Ci0gIGNvbnN0IGludCB5
X3N0cmlkZV87Ci0gIGNvbnN0IGludCB1X3N0cmlkZV87Ci0gIGNvbnN0IGludCB2X3N0cmlkZV87
Ci0gIHJ0Yzo6Q2FsbGJhY2swPHZvaWQ+IG5vX2xvbmdlcl91c2VkX2NiXzsKLX07Ci0KIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBXcmFwSTQyMEJ1ZmZlcigKICAgICBp
bnQgd2lkdGgsCiAgICAgaW50IGhlaWdodCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNvbWluZ192aWRlb19zdHJl
YW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25f
dmlkZW8vaW5jb21pbmdfdmlkZW9fc3RyZWFtLmNjCmluZGV4IGVmY2E1MTQ1NTY2OThmNmY4M2Jk
MTEzN2U3ODA2MzQ0MmMwOTQ5MzkuLmM4YjEyZTc0N2ZmNmM4Yzk3OWEyZDA1OTliMzYwOGUxMmY2
NzllMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl92aWRlby9pbmNvbWluZ192aWRlb19zdHJlYW0uY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY29taW5nX3Zp
ZGVvX3N0cmVhbS5jYwpAQCAtMTEsOSArMTEsMTEgQEAKICNpbmNsdWRlICJjb21tb25fdmlkZW8v
aW5jbHVkZS9pbmNvbWluZ192aWRlb19zdHJlYW0uaCIKIAogI2luY2x1ZGUgPG1lbW9yeT4KKyNp
bmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2lu
Y2x1ZGUgImNvbW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJhbWVzLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvdGltZXV0aWxzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvdHJhY2VfZXZlbnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlk
ZW8vbGlieXV2L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19s
aWJ5dXYuaAppbmRleCA0Y2JmZWMyMDE4N2UyMjA0MDI3MjcwZDgwMjg5MWZkMWM3ZjM5ZWUwLi5k
MzI0ODM0MGQ4NzVmZWE4MTc1MTgzNTcyYmJiMjNlOWI2ZGViN2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vbGlieXV2
L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2
LmgKQEAgLTE1LDExICsxNSwxNCBAQAogI2lmbmRlZiBDT01NT05fVklERU9fTElCWVVWX0lOQ0xV
REVfV0VCUlRDX0xJQllVVl9IXwogI2RlZmluZSBDT01NT05fVklERU9fTElCWVVWX0lOQ0xVREVf
V0VCUlRDX0xJQllVVl9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUu
aCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKSAg
Ly8gVmlkZW9UeXBlcy4KKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgi
CisjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNp
bmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX3ZpZGVvL2xpYnl1di93ZWJydGNfbGlieXV2LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di93ZWJydGNfbGlieXV2
LmNjCmluZGV4IDZiZGZhYmQ1ZTljNzZmOWVjNzI4OThhYjIwZTZiMGY5MDIxNzVmNmIuLjZlM2Zi
M2VkMzVhNGE0MDNhYTUyMzVlOTc4MWU5NWIxMDIzNDEwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYvd2Vi
cnRjX2xpYnl1di5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vbGlieXV2L3dlYnJ0Y19saWJ5dXYuY2MKQEAgLTEyNCwyOSArMTI0
LDYgQEAgaW50IEV4dHJhY3RCdWZmZXIoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRfZnJhbWUsIHNp
emVfdCBzaXplLCB1aW50OF90KiBidWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnVm
ZmVyKTsKIH0KIAotaW50IENvbnZlcnROVjEyVG9SR0I1NjUoY29uc3QgdWludDhfdCogc3JjX2Zy
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogZHN0X2ZyYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGhlaWdodCkgewotICBpbnQgYWJzX2hlaWdodCA9IChoZWlnaHQgPCAwKSA/IC1oZWlnaHQgOiBo
ZWlnaHQ7Ci0gIGNvbnN0IHVpbnQ4X3QqIHlwbGFuZSA9IHNyY19mcmFtZTsKLSAgY29uc3QgdWlu
dDhfdCogdXZJbnRlcmxhY2VkID0gc3JjX2ZyYW1lICsgKHdpZHRoICogYWJzX2hlaWdodCk7Ci0K
LSAgcmV0dXJuIGxpYnl1djo6TlYxMlRvUkdCNTY1KHlwbGFuZSwgd2lkdGgsIHV2SW50ZXJsYWNl
ZCwgKHdpZHRoICsgMSkgPj4gMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9m
cmFtZSwgd2lkdGgsIHdpZHRoLCBoZWlnaHQpOwotfQotCi1pbnQgQ29udmVydFJHQjI0VG9BUkdC
KGNvbnN0IHVpbnQ4X3QqIHNyY19mcmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCogZHN0X2ZyYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBk
c3Rfc3RyaWRlKSB7Ci0gIGlmIChkc3Rfc3RyaWRlID09IDApCi0gICAgZHN0X3N0cmlkZSA9IHdp
ZHRoOwotICByZXR1cm4gbGlieXV2OjpSR0IyNFRvQVJHQihzcmNfZnJhbWUsIHdpZHRoLCBkc3Rf
ZnJhbWUsIGRzdF9zdHJpZGUsIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
ZWlnaHQpOwotfQotCiBpbnQgQ29udmVydFZpZGVvVHlwZShWaWRlb1R5cGUgdmlkZW9fdHlwZSkg
ewogICBzd2l0Y2ggKHZpZGVvX3R5cGUpIHsKICAgICBjYXNlIFZpZGVvVHlwZTo6a1Vua25vd246
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fdmlkZW8vdmlkZW9fZnJhbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWUuY2MKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGY0NjE4MTQ2NzExMTgzY2ZhYTM3ZWUyNTdkZDIzMjBhY2JmN2ZhNTUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1l
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMp
IDIwMTIgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICov
Ci0KLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgotCi0jaW5j
bHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBzd2FwCi0KLSNpbmNs
dWRlICJydGNfYmFzZS9iaW5kLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0KLW5h
bWVzcGFjZSB3ZWJydGMgewotCi0vLyBGRm1wZWcncyBkZWNvZGVyLCB1c2VkIGJ5IEgyNjREZWNv
ZGVySW1wbCwgcmVxdWlyZXMgdXAgdG8gOCBieXRlcyBwYWRkaW5nIGR1ZQotLy8gdG8gb3B0aW1p
emVkIGJpdHN0cmVhbSByZWFkZXJzLiBTZWUgYXZjb2RlY19kZWNvZGVfdmlkZW8yLgotY29uc3Qg
c2l6ZV90IEVuY29kZWRJbWFnZTo6a0J1ZmZlclBhZGRpbmdCeXRlc0gyNjQgPSA4OwotCi1zaXpl
X3QgRW5jb2RlZEltYWdlOjpHZXRCdWZmZXJQYWRkaW5nQnl0ZXMoVmlkZW9Db2RlY1R5cGUgY29k
ZWNfdHlwZSkgewotICBzd2l0Y2ggKGNvZGVjX3R5cGUpIHsKLSAgICBjYXNlIGtWaWRlb0NvZGVj
SDI2NDoKLSAgICAgIHJldHVybiBrQnVmZmVyUGFkZGluZ0J5dGVzSDI2NDsKLSAgICBkZWZhdWx0
OgotICAgICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotRW5jb2RlZEltYWdlOjpFbmNvZGVkSW1hZ2Uo
KSA6IEVuY29kZWRJbWFnZShudWxscHRyLCAwLCAwKSB7fQotCi1FbmNvZGVkSW1hZ2U6OkVuY29k
ZWRJbWFnZShjb25zdCBFbmNvZGVkSW1hZ2UmKSA9IGRlZmF1bHQ7Ci0KLUVuY29kZWRJbWFnZTo6
RW5jb2RlZEltYWdlKHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IHNpemUp
Ci0gICAgOiBfYnVmZmVyKGJ1ZmZlciksIF9sZW5ndGgobGVuZ3RoKSwgX3NpemUoc2l6ZSkge30K
LQotdm9pZCBFbmNvZGVkSW1hZ2U6OlNldEVuY29kZVRpbWUoaW50NjRfdCBlbmNvZGVfc3RhcnRf
bXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGVuY29kZV9maW5p
c2hfbXMpIHsKLSAgdGltaW5nXy5lbmNvZGVfc3RhcnRfbXMgPSBlbmNvZGVfc3RhcnRfbXM7Ci0g
IHRpbWluZ18uZW5jb2RlX2ZpbmlzaF9tcyA9IGVuY29kZV9maW5pc2hfbXM7Ci19Ci19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2Zy
YW1lX2J1ZmZlci5jYwppbmRleCBiZTBiNDkyN2JiZWZiNGNjMGQ3M2YxMzQyMzgyYjg1YzBkOTli
Nzg3Li41Zjg5YjRhY2I5NmQ5NDdkYTI0NmM0Y2U0MmY5MTNmYzU1ODk3MGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8v
dmlkZW9fZnJhbWVfYnVmZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZV9idWZmZXIuY2MKQEAgLTIwMyw1
NyArMjAzLDYgQEAgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IEkwMTBC
dWZmZXJCYXNlOjpUb0k0MjAoKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1XcmFwcGVkSTQyMEJ1
ZmZlcjo6V3JhcHBlZEk0MjBCdWZmZXIoaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCogeV9wbGFuZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgeV9zdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCogdV9wbGFuZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgdV9zdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCogdl9wbGFuZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgdl9zdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpDYWxsYmFjazA8dm9pZD4mIG5vX2xvbmdlcl91c2VkKQotICAg
IDogd2lkdGhfKHdpZHRoKSwKLSAgICAgIGhlaWdodF8oaGVpZ2h0KSwKLSAgICAgIHlfcGxhbmVf
KHlfcGxhbmUpLAotICAgICAgdV9wbGFuZV8odV9wbGFuZSksCi0gICAgICB2X3BsYW5lXyh2X3Bs
YW5lKSwKLSAgICAgIHlfc3RyaWRlXyh5X3N0cmlkZSksCi0gICAgICB1X3N0cmlkZV8odV9zdHJp
ZGUpLAotICAgICAgdl9zdHJpZGVfKHZfc3RyaWRlKSwKLSAgICAgIG5vX2xvbmdlcl91c2VkX2Ni
Xyhub19sb25nZXJfdXNlZCkge30KLQotV3JhcHBlZEk0MjBCdWZmZXI6On5XcmFwcGVkSTQyMEJ1
ZmZlcigpIHsKLSAgbm9fbG9uZ2VyX3VzZWRfY2JfKCk7Ci19Ci0KLWludCBXcmFwcGVkSTQyMEJ1
ZmZlcjo6d2lkdGgoKSBjb25zdCB7Ci0gIHJldHVybiB3aWR0aF87Ci19Ci0KLWludCBXcmFwcGVk
STQyMEJ1ZmZlcjo6aGVpZ2h0KCkgY29uc3QgewotICByZXR1cm4gaGVpZ2h0XzsKLX0KLQotY29u
c3QgdWludDhfdCogV3JhcHBlZEk0MjBCdWZmZXI6OkRhdGFZKCkgY29uc3QgewotICByZXR1cm4g
eV9wbGFuZV87Ci19Ci1jb25zdCB1aW50OF90KiBXcmFwcGVkSTQyMEJ1ZmZlcjo6RGF0YVUoKSBj
b25zdCB7Ci0gIHJldHVybiB1X3BsYW5lXzsKLX0KLWNvbnN0IHVpbnQ4X3QqIFdyYXBwZWRJNDIw
QnVmZmVyOjpEYXRhVigpIGNvbnN0IHsKLSAgcmV0dXJuIHZfcGxhbmVfOwotfQotCi1pbnQgV3Jh
cHBlZEk0MjBCdWZmZXI6OlN0cmlkZVkoKSBjb25zdCB7Ci0gIHJldHVybiB5X3N0cmlkZV87Ci19
Ci1pbnQgV3JhcHBlZEk0MjBCdWZmZXI6OlN0cmlkZVUoKSBjb25zdCB7Ci0gIHJldHVybiB1X3N0
cmlkZV87Ci19Ci1pbnQgV3JhcHBlZEk0MjBCdWZmZXI6OlN0cmlkZVYoKSBjb25zdCB7Ci0gIHJl
dHVybiB2X3N0cmlkZV87Ci19Ci0KIHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJm
YWNlPiBXcmFwSTQyMEJ1ZmZlcigKICAgICBpbnQgd2lkdGgsCiAgICAgaW50IGhlaWdodCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl92aWRlby92aWRlb19yZW5kZXJfZnJhbWVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX3JlbmRlcl9mcmFtZXMuY2MKaW5k
ZXggNWEwYjBiMDA3MTJkNWI0NDAwOGIzNjNmMjNlYjQ5OGZhNDg3OTQ5Zi4uODE1MjYyNWY1YjJl
ZjRkNWNmNjQ0ZTgxMWY3MzkzODBlM2M3ZTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX3JlbmRlcl9mcmFt
ZXMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX3ZpZGVvL3ZpZGVvX3JlbmRlcl9mcmFtZXMuY2MKQEAgLTEwLDggKzEwLDEwIEBACiAKICNp
bmNsdWRlICJjb21tb25fdmlkZW8vdmlkZW9fcmVuZGVyX2ZyYW1lcy5oIgogCisjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fdmlkZW8vdmlkZW9fcmVuZGVyX2ZyYW1lcy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX3JlbmRlcl9mcmFtZXMu
aAppbmRleCAyMjI2NTc3ZGMzZWYxZWE1ZDVkMjExOTQ5NTE0Y2M5NTdmN2ZmMGZjLi4yYzRiZGQ5
MTc3ZGNkMDI1ZjY1MDhlMmRkOTExYzQ0YWU1MDU3YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fcmVuZGVy
X2ZyYW1lcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJhbWVzLmgKQEAgLTExLDggKzExLDggQEAKICNp
Zm5kZWYgQ09NTU9OX1ZJREVPX1ZJREVPX1JFTkRFUl9GUkFNRVNfSF8KICNkZWZpbmUgQ09NTU9O
X1ZJREVPX1ZJREVPX1JFTkRFUl9GUkFNRVNfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2lu
Y2x1ZGUgPHN0ZGludC5oPgotCiAjaW5jbHVkZSA8bGlzdD4KIAogI2luY2x1ZGUgImFic2wvdHlw
ZXMvb3B0aW9uYWwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2RhdGEvdm9pY2VfZW5naW5lL3N0ZXJlb19ydHBfZmlsZXMvcnRwcGxheS5l
eGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9kYXRhL3ZvaWNl
X2VuZ2luZS9zdGVyZW9fcnRwX2ZpbGVzL3J0cHBsYXkuZXhlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmOTM4Yzhm
YjIyMGY3MzQwNmUyMzI5NTgxN2U3MWM1ZmRlNThkNGYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDg3MDQwCnpjbWVGYWR3ZipZKWktfFRtUTBkSyZPajBmNUZ0d043RjBBTSU3OUQ9ISN6MDNrVSle
Ml4lQUc/UVZRb0YzVzEzeQp6c2huJl9kOCtwRVJJMyEqK0NGXysral95djZBfV49eipaNF9ZJUU/
N3NxRkVmTSFfViYkaF9hUiZ6VldFS0s9ZFAKemY4SWFkJng9bXhvVkN8cGQrb0s/VVZIN2VGSF5C
MURBXkBSYSFSdDROSiFFU0prdmtGR31lNmhTQVVXNUM5amstCno7bnxHOHAxWkBnX147PH4tTVRk
Vi1MKnhsKkw/NGBIUSV8aj11VU81UWdxWDtNUWhaJWlxeU1xeHBoc152aFV0aQp6ZFBSMC1Adzko
TV9Xen4qcE9aaV5BVzRnRFpmVlgzTyo1MEY5K0drI1N2RDc1WklUb3U/Wjd7OEAmZyNPTCVidSYK
emk4dU99e0ZkNHNsOVhuYEBQdlFKU1kmK0A0ZzM+ZFRPSEV2XmImRE0xP2wqSDY0K0t6MVd4Xlgj
diQ/UylaMEhsCnp0VmFIU2hXPnYtRT4mKF91THZ5RWhaczdBa0h2UX5iQ0QkN2M8QytRUU5CWH1s
N2tueFNKNFo7aHlDK1FRdjBSSwp6OWN1LU1YeChWbDwqSU1OVFZvTDxKbiR+K2VEeSEhMXV5O1hG
dVZ4eCtgeW15UGs4PUlaeWttUW5GQE5kelhmbTIKeitCRyo1Z0gtTzU3VCVuMSFAS3A0Py0zJjVM
SDFHKHpVVGZFVUolZyNfd1dBIzJeaWtgbzJIa1NsKzNeR3g8eS1LCnpHZShxMitiK1lPanpqa0Ny
VERJRGtoczxfTm8qZil4Sjs1KGFBfjM+QHRnNjhnYlFJWVlRdyRXR0oyXjQqN2otMAp6KGpkaHF6
OX50dThsO3hDS1kxPWRvIWNtKF5Ud0JAOzRgbTshdkMyaU51NGh+MT9ncSZRN1d7VlJHX3ByYkhe
RCMKel99PnpWZ2g7RHdhUHpTczhzcyhqbzdKdm4/KWFKem8oRG9PbjN6aHJfXjEwTiQkSVJeO3wo
ZFlXQjcwSnpNWVY/CnpMMjIjMz9UQXl9ZHklKShEc2F0KFI+cSRLRntAbn02R1ZaKGBIQmlPQFlo
T3c4aX0yJEVNQzQ3NnMpOTVOKXBuIwp6PHUqMkl2YyNQQ2IjQVJAJDVfQX0zX3BAekNXWlRven5a
JXdCdVZTP0d9IW9AUFJPZStpRX5nbz15eDh4PGJlQD4Kej5IUihMY2hxJUMmd3V4aEtlK3lEKzdG
Q2JrXzAtVDhkbTNTSWs+VG9iI0AlZXVHZS1mNE0weEg1X1lebj5pOVVECno5cTJmbUV4KyZzZjtS
MTFpTkM/QmRhYlI3a21OQD92PTQyfThDXl9aZWlIUipYPlpJNUo0YjxgS3NESD8/LTNhIwp6WTFR
QE1YZTtycGIrd25hbStsWU1FWWt6V15sSHYzK3xqX0dVVThAYUI7dzwhN0goRjNzRVhlUjUhN2xr
QUUwSmEKeihAV2M5OEw8QV4lbX1eOTVBSzdZd1o9bnx7NklJSlNseXdIa0Z1R3pvRVZXYGMkbkMk
bDMhck5idE1aTkdIV0s3CnpSPz1VWjFwVy15T0Jkcy0zU3xmUm5gZnd+dUVGO1RpXkd9M3ljNWk4
VTRgfTklVndTeE9nI2kpRzxBfno+ZSpjVAp6Qj1UWnt7TH41WF4xezk8dyF+UzxrSyFmUktpM3Zm
KHN4YDhyVlE3UEI3Nmx8amt9OFByTnFgSEh0b2FCbUVwXiUKemozPHs7ODNvfWdkVStUeHdXU0F6
QGF3ZyFCXypyZUJfWCRWK1BtPntjRG16ZUh0VDY+cnxKWSp7KFB6KHt+Y15LCnpXWXk5eGdtVmw3
Mm0zTUEtPFE3eUIzaVNUejFIenpIZnNfZjdmRXFsTDREOHRxSUlSeHtpV0BDSl5eRVlyaXtsXgp6
bUQ2VCFCPl57JVhKYH54NSRMZiVUejNgSWdDTVd4NjlVVm96Wlg0MylDR0k+K0Q9bV5uKWxsenNX
cSpHciloXkEKeitNciEtPT5SflIqLVR7Um1TXiQ4WU1mUjQjcDlCczJZNVlPVnNIQThxKj0qLTJU
PCE9OHs0Tkgtbl55eUN8bHlMCno8VWElfjcrd2spTUZVK3llKX1xX3Y/cDVLckMwWnM/JEltV1pJ
QllgeTl1P0k0fmBafEUkd3BpPzsmOztibjRafAp6U09xIT9GRFl9RT8kLW5EMkx0VmApa29qO3tQ
IWJaPURvVW8/KjticHZZIUxEYGsyRzYybTB2IWE9ZT9VQDd9cXUKekgrJHRNS1A0Wlc/Uj53Mz1a
bXh4TmhOSCk5Rjw5Xlp6YUB5dG0wNSpoeXsrWnB1Mzd5QEpkdWVKRzQxeWltV1BICnooTzFkdWh6
fXsqYSUlR0BzKSpzcUYkM0krJTF4Z1BDR1pGTiRhQkNfVSMraDgpK3tTK2syWkVgZGxGeSVlJkVm
TAp6bGtDbT0yUmRTUSlecSVxWV9JbUE8TT5sSXRaTU1eNC0xaEktM2JnKEo+UHdpVkBQSDlRe3hQ
TDtTakFUSyZZYlYKejwpITtzIzd0em5JdTFGYSZXUVFITCR0RlZJTUhDVWd0fm97NVVSMHx6MUJ1
VnA7RX1LaSlRWl89cj9Jb25JPlZACnpBPDd4fTsod3NxOXE1dnA4YytDViVoSlpvcmFRJCRCRzlL
YjkrUTtPNUhxWGooPSVEYzM0TmlIZ2p2bj9wdTBmfAp6aDIxMGxrYFE3RW9IKHReVGlTbFpzX1dU
NVY5b0hhU1htKEskez1oP3ZAeTw5Y2VvWXV0PklfamImQHNkTUlUdkYKeiF+WUMtcTgwe25Wakk0
VjE9PWlXVkBjRGoycS1qOClFV24rUDNKVDw0bkZ3PG83OStoRmZpQ1ZHZnF1RWBuXkotCnpFeWZz
REY8OG1jZ1coXjd3ck8rczNpe3E/XjxkU3FAQjt2Y199Y2tgS2ZrJlM0QSNPNzZOOGFpZzEtfWA/
Y2s2Iwp6eHwhPGY0a1Q9UFY2WjF9MHhCZiZUT2o1aDd4bjlRODFxO2JmWkZOJCVAQGVjNDlTYD9P
SyQjNUpta3lHdVpWe24KenJCcEs8Ti0qfDtjbiE8VmUtI2dJeCVtT3s7RTxjNHQ7bWFxVSpSRzRK
cFFvISlubXdaNiNoRnooM3s7bSktUTRZCnomb0Z8SyQlczhONENCO0toY0x6eTF7bilPNFkjNDFO
aCZ7fEx6USlKQyV6JSM8d15MJD5yNnF2MVhnUX1HTH10Kwp6UmBPK0pXc05JKFR4MUhVK1EjfFlD
PyZ8WlFERzI9az5CR1lgentoUSpyK089ZGxHclYmIUV0bldxZWRGbUZIby0KemUhMW02NWNBRGNr
WD9UODdvWmliUE94bHh0cU5aVmM5YD9RQVVefHoxd097NDVrI3dKNVZXWk1pN2pwQldTfUx+CnpE
UH1JaDJUciZIQzdGJTtYKnAlfnZZYmwocHEyNUhtczElZmJ4UWJlen56NU95OWZvIzRTemBRT09e
bCFnfHJiYQp6M3dmQkdkRyZsTXQzZmgzJU8tSkVAPmkqaTEjQEc9VSErUkNUYUBZc2Zrdn0xOGRf
bUNEfVlfdnwxIU5iTkRjTXwKekpPNDJpSmdFQ3g1ezxjRytoYFBocHUjTT1vTzBIMHlCTjRaek1S
bWApSGB+RGRAM0k2dy1jRE9VMmdzWCNNYTtpCnpUVVBfYl80QVIrc3N+SGshQnhIRVp9bU1jZzQ/
Qy1Hd0BaIzJSXjBUKUExYXdJTUx2Jlk7Y0NqWUJOV1dyLTNrcAp6b0V2ciU4O2RQQVVVYFl3QGUx
bEp3fjhNRjBmQ2lJU20jPzxLZURoeXFoKGR7PHxOaXchamRlaylyN1Q7cSF7RTgKelVgenQqZWVu
RkdMK1Y4aEhuZT9KTHVQfS1rcEpGZntfYGsqYChqZmhRei12anQ8JE5VdkM5djwxbD8obndtbXpS
Cnokbjd6UShIPDhLWHlrU14rYD1uSTBLSyVvQTtBfDdLeGdKXlhTXkd+PGUjVVpyYHxQXntMTFpq
Yk1HQVY/V1Y1OQp6JFZpQCkyaUIqaUFzN3VqN1ViaXV3T1V3cFlyN00lNkpSJTcyQ2wrYTshcEha
JTJMSnVlVklVdE0oTVNaUGVVdXoKejJCUihYN0t+T3VSPmkqbk1DZ2Vrc1FleU9ZOHE/fXVzWC04
XyYhcmYoZkxIO3phYkc7dzJINGhNdVhVfmRhX3goCno4WlkoZVUwUzE4UXM1MXAmO3hPaWQpRlEr
RUYxdGtWN2NQNE8xPlZwMTQ+V3FodiQ8M1BZYnV3RXghTzgkMTM4TAp6SmRWKXs8MXdYdUFrc1c3
MmJIbmYyQilPdjUkU1IjRE56O1E0Wk0yMisrTnlsOGZ4TUQ0TjF0PjsxMlBURGVqJTYKej9aJFFX
cSROKk5LOD9IVWJxOEFucnxPNHo3ZXZlTExDITNxNVA8d2JaZEcmPDlFODhsN0EhKnFTPmFvV3Qt
bVpwCnp0PmhPUjxaX35JJG1GVj9ga3BrcSlObU8mJjN0bik8KUM1VnB6MT0pNyVSSVNRWiFfJTsk
dDJ+UnlNZWRYTnJSNgp6KzZRe2I2djNaXiN3M2dAOCFqc2thc048dUMwRUVhOF9AUypKWm85Q2Na
KiQ9dT9YVy10dihtXmZ+cDhVU2hXVyEKeiU8YXFFbV92VjZuZmFaKiswTXJGOWFLaExYSzh5flhR
LXlfOFB0S0ReRUNjS3UtN3pnYUVybEdabiFCcmNVLVdCCnp8TXQmOTloeD9IMSQ8PH4mQyF9MHRE
O05GRCl+Y1o1KnZxbF57bCR5XjAhZ3tva1Q0fmF9K0J0QENDZVQ4cTN2Mwp6OCpYLTVXY1dtRGJX
Nz9PbCRwYl9lK1BVJE9GeEljO2RwO1NZSVBoYHVoZUR8TksoZik2IUFPcXNLJmlYRVpxUyYKekFt
b0tsdyNkViM1KmthfVBHNEdNb30/Xm9rZlAtRWpxe3FhdVcmUClaTFg3NXlWKmpnWkhjPlNsVWRL
cSM5VXw3CnpVRSg8angqK0AqJGA0bC1weXluTEttNkIhNStYMmlOUzxFMyMhMFNUamhqXz96YD5G
e3YkZ0BSS0RSKXhETkkkbgp6RmswPm0zTGRfUCN4eCEwV2FXP08pQWFGdEd2THY9OT9AWFF4ZUVD
ZENQQ0hCUzVkfVU9NDUwcWN0Vns+KSN1NCgKem9uKT1VU3Q7ZmQqfnQ9PXhvazhsU1crPmw9ZGc2
PGNiQ0FLcDZpNGUleEllSHEhdnUlRztJPE84JUt2fVA4MHFpCnopJD93dT1ndlFoZGFgY2dNbUIq
dF5tTFhfXjMtIXBrK1g3KVktKmFlMGxvU1BUZSp7a3l0YUAjc1c2I3xhJWE9Kwp6TFhhP3dpd1lg
UGQwc0ZZTEtFPD5zcnBgbUJ8Pj8ldjVUU0ZtYjA9fG5AT3I3JCZhPmNoaXAoRihTS00pOXgxUXQK
eiMrPD5uWkUydCFXP1VLSHk0Klh4JmEzQTVmKnYpYVdxK2dXVGtUWGJic0htQjs0cFEyJT1vbUtl
VyohNzliZWtNCnplSSt1WWYlMCNoaXw7KnBfQVRAOS1NKmE9SSR2QilpTm5hdEVhPnIjKmtzcDcy
enA8YnlpfChMPzFjO1VHRXc3Pwp6Z1l7QDI5Jjh9KkFjejtMKlM/bmg+Zkt0U01eZkReO0VCQ1Q0
VkF+KyRmUyFqbm8yJGNBal90ej0kVSN4ZWZ5Pm8KejMhQm4oQCFkViFFOXYqYjJsZVEpLVRFMzJ5
enIzSSRZaHptKkE9JjQrdlc1KilfbG93ZVlAMSN2e1V9SUh8ZEp6CnpPZ019Y3FTeiVjVylzK0Em
Rk9ueDljNShUJCp0cWYmJDFUeUlAYV9odko5NldgUU90VDxDMm1BMmNhVWErbCtLKAp6LSVnQkZA
cmxHTGszb2t9SzAwV0hNXyZscFF5YkFGbiVhY2I8dSV4I3t3KVdDWHFxYTsxeWc5KU9aUWFyT3cy
TSEKejNjMCRNZ2A5ZDI3UmEpTG5DNkgwMSEoK1FHfCpfbD0/STl0K15JWUdlMyY1QzJ9QzVoIX4/
YjcpfiUzdFF4Xnh4CnpvbmB9VjU2PkBgVm00cWVZb2l2M1pZPWhgMiEpWjN8TUdAcVpQYz5TU0Jt
cUhKT3JkPjJDeDlyJXA/JHtJKldWZQp6NmckYjtXKW5oREppPTJFP2RKfGc5fSZuXihGY2tQSyZj
WGAxd21OWU5CI2pHYCYjLU5GWDl6PW9PJThRdSp+UTEKekdDVCp2QyNjdG1LKi1lVHFTdWdKenJD
ZWpTemRiM1NQVC1MVjJHYXdSSCpLWj0rYV8wTFFXeVhsZzYyeTBubDcrCnp5PDFYPkxUdFhYRzcp
c2NLcDQ1OWE1ZytqbGtSKWgyKWdDSTM3ZWZRe2hOUU0lX0xkQ2pydE18Um9kUnZScDNCbQp6Mnho
bShNRzQ+PjNRYU9aZCFlUEdkSHo8PHFZNj9nZ1Vze2o5clZEUWtGTGdkVmpzcUxiRjUra0ZQYTs7
dFdZSEIKejlgViYkays7Um5qQSNqOWxzZzxoJmt5JmRBST1eUFg0SDV8LUVpfH1HI1FqZjxGKys5
JTk4blZhfShIIVZTRTVqCnpGV3JjUzZUMUFHO3R7JitxTlpIKThPeF97LSE4ZU82XlBKbFMpKil2
VkdIRioyclFIVzNiJng0JiEjfDRQWmExSQp6eTwjIS1paDBPTW08Ym1fJjc1SXEhYFY0V0tQVkBD
QmotclVuVD8hO25RIyNsSVV6JT4+eDMxbVFkfCtBRnY5Ui0KempKcmJvPTh3cVBpRUQhaV5+TWxp
ZkgkWn55VyhMcjkrdF40JjU5Zkl3VjVsP2tgakNiYHNOIW0oOFokRkMhIVVECnpSaDEjJFFIYS1J
RDEwTip3aD07Kio4PkM1OFQxRV9ATXEyKDdLST1mYTwpRytePz9RRCh6MjROVGt3UyoqNzMydQp6
aFd7Y0hFRFVaVjVGKHRsSElCflVHWENPTk4hbXVwRVQ1KCtDRGlDMGh3Vzc/LUA/TlM1RkgxcV89
Ny1ZKiNyaVQKekwoRlBRdk1GbSMkQXxXMWooMC0qNHF6Wns4JlA4V083YmJ1Q0oxZShNPV52Nm5I
P2RFUz9BZUZoOzVWdmklV0FaCno4cGk1Z0dMPSp4dCZkX0FuNTlzTythdmZCeCNraX5RQy1iPXY/
bF55cVpFMT54dzwzP2xMJDU7OTA0N0V7dlJNWgp6TklTenNteUM0dCFNMlNFUTl8VHUld0l9U1JB
ZVIqdzVqRFImRjctQmx4JHpSa2BkeTZMSno3bldSfnRyUSE9KHcKemllWFFydihkaDRjakhKVkdi
ZjgmZVRuKk1XSWUzS1h5cVNGcm9xJH5hNFU1ZlU3WmlWdj14bEJ4fkZIVnFuaF85CnpkOUN3cCgt
KyMqT3MoQ24/WG94VFFJRHVvTEcycjVVTXRFUlgtZU5XM1MpKD0zejRJKj5TXiN4XndDV0FSaytu
TAp6cTgtN1Irci1zSmxRWFgmN0FYb1ImZkYkdllPel5FM19PSCNxZCpiVFBNQUprdE82azY0ckwq
KT1pJGdid280UnAKemVPPHhAV1RQRjxoeTlgZjJ1V15zIUo7SXFGU2lXOWYofldOKUVXemNhK3JX
cU56XmNeZmZFPkN0TlNQe2NGZUhOCnpaQjEpI1NEWjZ1cyRhM3tKUkxKVHp+ZUBrejBVRn1MJkBJ
Q3N2IVROc1klZkRgSDEqMlgjVFRmKDR5P141YGx5cwp6blU2XlgydlFnQHpeI0NWUTk+YWJIM3da
bzFsaSh4MXZrPXIwKTM9V1Q0MnpkMipkP0IoMHhkMj8zMHVRVEheXngKekUhU3FRTWBLQ0tJOGw+
SSVwU3VKMTdNb2lkI0B5fF9MfVRmQGUqUmg8fDFBcHoqKFJpXkZTaDB2Zk55U2t8O2hACno5WiNm
M3RfNDZ4SS0tNXJKeClwUyUrO3JvbWRCMH5KNjRmUDtEOWFGOypvbzhtI0Y3WlQra044Z2RfYU5S
UG09dgp6TWUpV1lEeyhZaXtCVEB1R3R1NXBwfWkmMEA+bik4Uj5AbmlFQCpMU0ApKUtqc1huSU4+
JElzMkxXZGZtK0FMNGcKek1lcnEmWlkpaSpSRVhBeyF7VU9FdGclVGt0VHAqYTdFbkE/ZmFyJFB1
fHpTUWdwcSY8JXAkKWNWVGtzczskSTtRCnpZVm81cjdEIU9yaVVNam84LT4/cUJWNFM9XnQ4flUh
PjVTN0VYMFRlUHdXe3lsMlIkZkxzflhRXmtUV3FpXi1xMgp6a19TWUhsfHMmVUNhWFlGJkNgVFgk
NkZqenFoNms+JWBkTT1PNFZkZ0Q3MnVNUlQte0twPX1hcWN8REBKellubWUKelN0MzApQ1JNbEEl
cTxtMTY5UGVRM21rPiM8RWBSPDUmPXJMUyM7ellOcm1NPTluJkk+TjJqYVBsM2IyOEdvWlFHCnpx
KVBPZGpMQl5rTkE+S0RYa0pzNnprejdjcFFwPCRLTkM7KD5GT2pRMT11bElDc0hka0E7cHRMYkNN
QFppZVJrJQp6WFFYT2ohcWw+MVR2UXd0SXshZTVpeXZHciMzUSM9QUp5fVQza1cpTCYyJS1iSjgq
UW1rJkN+eGpPP0AyQ3Ngc0AKejM1SzRjcHlYcDlFUUo0e0E7S2VzcEhSdDlBJFcheyV1SWd+VH1L
TUJjV1VINnlhUWp9JFM3a1M3QFp1d1d4bkk8CnpHRmYtJnsoJiN4SW1lUHU8e1YmWC0zQzZWVFlK
ckJJSjhjQ2kybnppSDhUNU9udk1zYEZXbSNuWHs1PCpgeUc0egp6dD17SlM+SXYyWHFFakQlYmw5
JXNUenV6TmRabFVqKD9vKmlrQSU/aTVyfmRPZlRkUFhoc1NtZjdSZncjVnxeXlcKejc4U25vQ3Yz
RXlnVUU5X3JoRForayE4KDZZalNQK1NZbntfZi08eXxUPlNxK2IlWHE3UUFvWmhedmU2I3dKaXpk
CnpDUD1mfHtWJkloUyZgRT0jbVVsKTRRdiM8Kk5JRypraVY+NHo8U19yaT4hcWhZRFFXXmpkJDJr
TCU5T1R1M3BSMQp6ent6d30xUz5oSFJ2TW5KcChqKiU2Xnk8KVV2YFJ5K0xsbDdAZCRaZiFoeEF3
cih0SmxWaH1mZEBYfn1hWkpWZT0KejtTUXNTOWNTMDA3elhWaCNERyN1QTxFQ2BwQHd0JSglPkIo
NERvbUFkN2ZgM2lGWnYwZDhZOF5vNFF0Rzs5RDlkCno3b0wwbUY4dHhLO1Q8Vjs5SnJMIWs+WmJF
e3xlY3lTWXJ0Z3NpaTFsUjwwS0R6ckk2MF9lWkgqOVU+UGtLSzQrcQp6cm1uM1pQdnJAe0pXRDZ2
TFJPJipKSjdzJTU7KCkzd1hWMGNuSX1NNiNNOWh6JVR2SU0ySHB6dDdidmREc141fSMKelJgandD
Sl52QDlIKDAlPj95SEk+UzFgNmUxfFdhQW1ueD0/NEcqU1I5R3xMS0Z8aTI4NHtfWmorVD9MYitk
RlZjCnpze1gmRShsOGBlX3Z4LURMNndaQz5uU3x3YEFeZXBeJDkzdXtfaEJvUDVlZCFKamlffU4j
T3Q+bX1DeDdoaFQ4Xgp6PkxaRCVncSladmF0OG9CUVgmWUMlT3xSUSstNkJ+eFRzUlBWPmxgVHY/
NVVPdVhGeiN4JXFST0BhRipqdXMrOUIKemw3em4yKj5wdyhpWlQrOHJyU2xKQXNMYTJBeGUqYilK
QVp1UmshPkgpbDxXTmd3WUVzaW12VWMhNCEkRjVkait5Cno+bEJzJXhUNWJ5MitPbzk7ezZEOUdy
WEBAdUMrVX5MLUIhTE4wK2JiP3JWY3B7MVZKTVQjX0Y9P003O2MkRzd8TAp6MylvK3BWemwrY3d8
aC15KTNHPz5Daz5LdWpReGNqTl9eailfYFdsN3hwdkglS29HJGdTaDJqZXNfWXY/RHxzKE0Kektx
az9Cd2FiMGA/IUs3NClwU2Z5SmhVY1Y+dkRxSj1qPjMzam54YVpifD5jUjMpSkordVNnUUByK0Y8
cSQtZE5QCnotaVZmJClibTtYdno3MytQdVVmaGNGTHhEZFIhc182cGhUfXZtWmsmTER9Q095Xjl0
Tz80UzdlMjN1R3ZmPkZnaAp6XjZ8R1pKKWpPeD9wKFMpVkZ4O1ptPEBfS0cme3c1NWljaE9tcj1t
e2QlJExXZFRDMylYPU8je0IlWiM2PG9ucmEKeld2WWNPdlZ7MDc7RGZmejR6UWsqend6OylqYmll
ZkkqRFNfWFl7d0ZVd3YoOyZAYyVjLWtrPi09UE0zT0xgN08+CnpTYztJV2daJWhecFBjfFo2VFN0
Tjw5OHYhPWp3dilDfFRoPDNHJnU5dzYhKDIxZEVMbjNCdHJXNklMO2Uhaz9uYgp6d2MqREp4OXUl
ZGpOKzshaEN1ak5mUTkmVDBQMVBzbyNOJGJkUHh1ZVVBKzheKDV0PD1VQXE+TzBuQUNyVGsmY2IK
eiNmUTlOVkZxYT9aUnVWai0mPEhsJTluY2c0MTQhcl5tQTd3Xjc4PEw5a2M4VWUrQnZwMGI9Y21r
UEVOelczYFJRCnpKVFJTfTI+SG1oXmkrVlNyKUpRVDgmQX1SUTE5KGRKZDUmUjtDP1IjNnBVWXF7
R29DSXxJclk5aChFd0xuZWNEbgp6M25KYXg8QkNITlIxVT87PXZoK0k2OFhlTkMjQXBTTDZSfHc/
USptYFR6KXtjXzdsM19zciVnJmdVWClfJGl+Q2wKej0mTi05RmNjVWpnaGMxTmxrc25+ODNMYGxP
OGM3PHEkX0tNZDRmJXNkaS11R1RufkVtdEVuTG5GNTF0c3VMZURSCnozemg7VGVkfHtJVyUmZVkq
e2BfdWB7PjxwWkp6PGFjN2pIS0AoM1Vfb1QxeDBkVEVKZUNOVjBoN3FoOXZuNEAzbwp6YzQhflI1
cXtsSDM5TmV2bEB+JWZURE96K1R0WllkP2tWWXgyNW93LWJ+eFRNQylXdXAxNyMjQ1lofHwydkVQ
dnwKeldVJVhtaztkfGFMfk5sYFUqeXo3Wm1icFB3UWhaZEdtNDdtTEUrOE8pM2p7fVVlPnZyNG9p
SXFpZSN9NE4ya152Cnpfd0FLYHVucHc8Q0EtfUdGZGo8JGFyUTtZbSZ9V0B3TkVfMEZWX2h2NXph
K1oxUWFYbzladWNqNikhej15bjtSRQp6KTteNTt2SVVScDVRdHs7LUg2dUYtJTYpSWJVPmhALWIr
VWVMY1NJKFJUQ181QmpUaSZBKEQtUGxnUnA8NXJmN0IKejZ2SFpKVXpVYHp4M3kyNEhtQGlQal58
Umg2SUx6QUtaOHFHWWImKjR0KjkldXUpdkQhRUYjSU0/eHlZcEVOaiFwCnpSQnZ0T1FVRTEybFlm
bkljUlJmIytiTEoqa0U3bDcxWE49WkF2XmxtSWlrZjYlRlB9ZCs4LXstekxIJHVtJExSYgp6I0tF
JGNCZkNUUFdmUGdUUEJ4bUZxWnJSLSUwaD9pY3NyRlNCUWN2MjdZd3tQQGw2TH1yZlhkd1h2fTIh
ZzNNQE4KenpDfFk4YUJVTSpNOGJUPlhoKE17P0pPIUM0aEl+PXgwJDE0cFFEcF5vdWE7dDhSZ3Ew
eGkqb3RDZDNgXmE/dDxiCnoyUj15XmFKKW8lNTlBLTQkUD00ZlI1JEB5UiNPTGtCTWtKcTJuSkg3
K21WVXBASGJRRHBIV1h9SVZpV0IwOHV5Jgp6KGR1fmcyYjlJPERrSzQ8Wj0pfEclPj9vJTtkUjUt
MjxAM2pgTSs3dXB9SzRuNjhPVEEtcWRaPGA9JnFfbmhrLSQKej1GNjZZPzJOZ2pGUGcofnoqaWxZ
VE93ZGgrdSR5MHljWko1RSVfM0xjezFDQC1iUGhfQy1fa0VaQndaZldJX2I9Cno3fitCdWl5QGYl
MGshNGQ7TVNEOSV7UUNLbSRBUTx5bG8xUkVwakt5NWtaZ1phfk9yZFkkMnpeUzhgQHFpMnZGbwp6
MHQtS25HPDVjbWZObnh9NzhMbnFyVno0YHBXbHlYTEw2aDhETEEzKzVASWNKKW9KMWUhRjY8MitB
Q3FrRkVQZnoKelNsUCooPzFHdmpPYl87YkxnJl9EbztPOXZucV4tfWxeVXhWOV5ZJjAkbHcxQClQ
X3stOXJvSWdfV3A+Zm45SUkmCno5TWAoenpIVzVgSjVfUUxSWDhGX2J7cDN3N1AlUX1TJkdQajJN
OzkmVTsqYWZAb29NaDdYMj9XTUYkK25mYlJyXgp6IVBHMiUqaS1Udm5WbD9wPnY0NFk8fjswUF9a
LUNrSCt0aW4yYHtWVWpmKGAmeD0jJGZoSWRGejRHPmUoTFd3JEsKemtid3FJVjhKK1NLK2BHRyVR
YzghI3JhfjhzX1A3clRjN2x8dSooUkBhYFJVSjBmbzh5Sk0ybStgWEA0Zjc+OStqCnpXa0xhamJ3
dXpjZ0RobVdGcUxROUNkfWo5SHErK3AhJnVVOXc8I0MxT3BBaXNDLU0pXnlARDMlVX05TW4/My0h
RAp6dzhiIWkhfGs4VS1XK2JER2J8Zmo8enk/SWBmQEJyeEVjUEl5WTw9NVhlRz12WSMhfW1pZmJG
KVBQPS0remlNZ1UKem85b2hwezVAS3xwZz1jbDlreUg1cHtwWGcrdGxlbVhLZWIyT2N6I3oqYTVF
aDN6THdvMT4jUTR6I0o+QypDSE1qCno3WWl0Ky0oYjNHYilERW0wQVhoWWBFT3tUey0mKFNGTlNB
RGBuOGl4IVdxeG5ecTBrJG9FQlo+Jl8wU01qVlI1Uwp6SG8mJmpgcCZWMmc0WX4tRndgVW1aSHhA
UVVDUX12bXNXSH1OTHs8ZD4tPjg3Y21ZKyVrUCV4aEVYSTZOP3A7bCUKej1IT2VzZnB1dUA/aTRB
c1QpVyVuY1BmTChqelFWVWJ7UjlhUTQ8P2VuYzM3R1k9ck9jPm5gWkFMMCQ8Z0dhQytDCnpZYzlD
XnE/eFhkQFZOK0liP3UtNlgzYChJYEJteUdHQDQtO0pkUGE/WXAwJll0MnhINCQpTTVkcEFeYnNv
KzJqZgp6ZmNCWUZyQEBUOT9qWTVRKjRwJjMoT1Jjb219IWxadm1BUklWb2NPSlBCMGB1SjF9Sjha
LV89c2k/PEJhUEIjYm4KelopazNUSWw3OHI3QlZBIUchZW10RzBxcWh0P15nISYoTCNkcCh+Pz9t
JT9uPFZzKkAxbEg5Nnc5cU1ydzdsR0JLCnpkP2w3fipfPmpKKT5WWUhfaHI/VVowZ2t6MkNWMkpf
NTxNbklnMWxaLTBVdVFibWl8b0V1VV9AZ2dNd2dIZHlqQAp6NiZxRUgwcUQoPVptajFiVkJFdkVv
UGV4Kl8pcWF3cD5AVnZLNWFhfXR9S1QzSmghNWI5REpkKEZtNHMoakFeXiMKekxuY2w7M0FLOUJS
NGM4K0t9fDNneTUpT35SeHNWTWV+P3RDWGRtMGk+dDxKTE44PyhMKUE1MXRIVG5NQ05HZVVWCnpe
eWBncldkWSZEZVp1S2xsZzN1TmJ2MiVuPCFZeHNSYWstNVBQWDJ5WipuN0B0I3w2MW9GYlFZJU1A
ck1ZJVoxewp6YlVXKVQ+Q2d0ZllyLTBMdlIpSjEwVmY/Nm5IclNzIWUkQjQhb21WcjhqczF6QFhu
dG5SeVNSJkkqdGBrUSh4Y14KenB7MVpjTnRjSzAwTTtuOzVUQiZnT0VDOzI8MyM5cVNocEQ3d2Jg
YVA+IWl3YXIqQllBWFdnOztOSDdRQjh1P0RHCnp5JTJKKDxWNl5vWCFkJGc4TXpFekshRXllN2lQ
NlRwe3xMck8zMGBiOEI4MHl3blN0eUZjX0diQCkzVXRCNDJoZwp6LTtHdjIoeUM+TSVRKDdBNHY8
fWI+YFJQWEZmODVyczxgUUMzT2pERFBte05hWDNxLW9iMTZIPE5kKz9eREJedW8KemtafkllNEt3
b3w2cWt1IU5+M1pHcDVIY281RFcodDJKJUhpYWZHO1FfJm1ZbUFpKEVDcXsyfTl6RjAlVXZ1TUFY
CnomQCNSZShtLVZxbzVPZnAlWCgtfmd7aWRXTy1YeDRMeCQqX2h7JGMtTl49YlFLc1V3NCMwdXw2
SWpzUnR7TDl+fgp6WTAtSSE4KSZ1OUk0Uk87Plc5JHxkdWNGNVZ7ZzcwZG92YXZ3aEw5WG5+N3Mj
X3xCfDNTR25adHNGSVYyWmo9KloKenc8X0M5YEx4ZCorVUpocnpsPDk+YWU3YVlmZ2FxaiVIbnck
X2BzOXxnfDszVipvQWdZRDBUSUVkVVd5VmMpZFEpCnomZUEoUmFWWF9feDwxZGpQP0A2N2JMO2F3
M3paQT5kMHVeOS1hPSkoS0NlS1pTR1o4ZypYSUBLXk5KVEw5KH5AMAp6YG48YH0lfktZdHlMRnBo
aDdyTXk4WF9fLXpPfTsrQzJMRmluWjFndVVZfDE+PiEqfk9sMSk4eTEydkJ5dW0yQS0KejF1XyUk
ZUcjbEJ1NHNxTXFJVn1TSnI/aWdjSFIzMno5fWZtaVcod3NoYGdNPUI8JDkpKD5zO1AlP0ZqQCkp
aDg5CnpQUXY0dSkpalU8UFFZVk0+azA9UiREcnBtQTVeaCUrWlh8aHBCPGZUR3UrWUhjRWJeIT9W
dkZjY0ZnJi1MJWpzZQp6MyRKTiEoPGU2a1lkUmRrS2dBJjVUbG9pcXZLS2JAdENJJEhWYyMtI0Bm
aGEtd2NqNjRDP29wKVVuZGsjenlDfV4Kek51T1VGSChzMVNlP0Q3Vz8zYGNIVmFYdGJyV21SI0w9
bkEjOFdqUTJrRnMwc1RPMyR5bmwteHxmZmdpVGtNYypDCnpTLV57MVhXTz12K21LdztJQGBYYis+
V1BGdCtPNGQmejVwVGxidmBeVGNFeSlPPDBpNV4rfW82RVRmJmc2bUY+Uwp6RT9EcFctUzFVKmJH
IU4jc196PXR1STt1N01YfWxkaXtgWWNSIWNaSFVmRjdFOVd7TlFJPVF2WCk+Pm8zKHxONkIKel9T
UENabyhmdmE5SVo3REptcU1nSkstdX0+V01zIUp1THxsYTJSOWRiKFBKJVBDWl9fciooSH1kK1Yt
fS0zLXl3Cnpsd0UzY0ZYUjc0Qk1SJUFUZj1Zcm9TckNMbVFANDRALTUqU0JVKXd8MSFgd2Y1e2o4
RDwxMGtBVVNGTWU5UmsoZgp6O0liT04tT09OJjU4PnJVUl88elYkcE9kdnZfcFgodz9OJHtMNW0p
RzdgOHNgIz00Zz4xSXJUWDZpQjdDYjtSXmgKej5MbTZpXzZ5bmx2bT9fYk1XIVctT3U0Tjxaa3R+
NmYkfEJWSSQ0THxFfkFCI0ghSyR2Rz5JREcrTD5HMmgtdyU2CnpUTm0ySSheeCMmI2dpOUxxUU1C
aztXeXJiejlBb2kxK2QpQypAJURCcCNgLSs3M1c4NSliUEtmVj9hMSFXZE5nUQp6eDlePkdCa0l8
ZGRpe3pydGpyPmxAMTQ2cDJaajBgPVc8eGBmTHB7RUwrbXw9YTEqZz4hPnlObGRkaShePWxHQGkK
em9ecDczXyZYOXxpKmhYM09WVGEzWjl8QnthbSNId0I0WEVmLWc0Vl4jOEVFM2N5QFhEYHRhcWZE
PX5FPyMmUVVACnpJKyMlTjV+Pz8kZEpAPmleI0xOMVQzMjQoc3ZFOUhzRjM9aUlkNFdZXzBQa2kt
UlE2bl9DTmR5R0tVWX41NUVlWQp6MDR5c1E/RHZjRzhJPGxoMmtCbz9gWTA+QytUQjBmPDMjPnpE
U2FsVGtII09+JiY+UTQqaGc3QShvdSlgMjhRejYKemBwZXlKYil+ZilUPCNYZkJeKzF9LWpBfj5B
UnYrOVUmYUB9X3M4Rz40ZkJkMkhCKEZ7Vmw9YnFwWCtmZDt9VThkCnpiJVhrcExmbHdCMSpXOyZZ
XllrTiQ5TmNhTXQpKDFIKEJoZWVedVpoM2hicGRSIzlMIT9Hc0tDeUQoV0F3cG1iVgp6dVJAdjZE
bE1II2RuYDRYNkptV2dSSX1xbzY0Mz5+RjcwUXw9a183ODJvQV5MR255Xk80bUtzVCE0WUlxIWl6
RmwKekN4KXJtK0A+PVc2NUlHRHRBNih1SiljX0lUOz51YUloYElWLUdncTBFdjxVPjNCM1p4MmUz
QWkwc0N3PCZ2bUZsCnpfPlV4aGpsX1I5d3pIdTVNNz1ZeDZ5ODV1Ry04bWpKfFYxRTImKiFRZyUh
e3VSI0RockNhQHxBWXZPb25ZUWljUgp6aEJhR2dSVSFYMSFjP1pmTXUpMmplTDEwRGlhJEojUmNS
RDA2dDlxUE4rSHNPO3o4Nj1ASEE0O0AkZWZgJCltJjkKejZQK2lCJmRvJlVTKDZTcnNuOVVXZWpU
I1lhKF41P2pIeTswaFJ4dHxHZXpgQndkOXQ1TktSYGtNa0UoZytpeXs/CnpWYE58aDdkcUJEdjln
YVdQUX1IcChpezBRRnZRO15fUWRnYFNeZWBvUFB6R01QKW4jaHAmbT05TUczVnFwJSQzawp6M2Qo
U2tQPTtjZm1vQDxudjR9dHN3cXtsekdpcj5yVnZuckhyK1U+ZW9WRmhlcm0hJFFnQkZ8N1NAdXk/
cFFXbikKem1hNGpFaXgzJHRXfStQUGleQFZOYXA0PUc2bEg/Z1E7X1hiUG9NX1gkMTx1MTRHKyRk
PXZaXkNJSHAkJkxLUzE1Cno1bGA0K3I7WmV4NWc/QEg9bWVoRitrZ3skKnQmb28pbmAqJjIkeG96
en4qSnhTWHhibW5oOGcpRiVSLVZQI1FldQp6eVREXlZAJVJQdElMWUxaamtoQSotXkpGQThYUHhA
M3IkMX1KMSh7enBgKE8yVEYlbEF4SEVDbGQ5bSR3VDdTOUkKenUxdUMrREVCJmBedlpiJURwZGlX
VilHa1F7VE80UGx8d2RNVERRbERUMjM4VXIwRms7Y2tjK0plX3tOdSpFWGJLCno0fGM8TztmKC08
emZabGNAcVFzb2wjPUVVOF5rQ2Qjdl9hJEJKPTM1MyN9WXhsO004THUtTUUxP3sjIUlqZ3RQSQp6
bDcyKTxtenpueDxKZitINmUmakdxazhOeXRvUE04djYob19tbX5KRnRQIXhSOGZYOG1oeVoqP2Vx
bHFKPEZ2YCYKej08cytWYCRyPUNPQ3RNc2tVPFpUVXMjcHFjKXdvVGdnVDU0UGF2RyNnITJtRkph
Nkgmck9SISg8QDA+fDFsPGhTCnppZXJNNilZdkdSNE97MyR7ZjBRaldeU0MpK3UpUjY1UkMrKFBK
RS1rIT5mZHdqIUlDenJkIzltPC07Nm1FQCltJAp6aUBiNCFpdmdQPzVfVGFwNXtRZkVmcWZIdWBu
d3pvXip7PClIQHpWIVJIUGAtIW8/PVI2fSNUZSoxMk9VU2AranAKens7ans7c2EoaHdkMztNZTNY
QylxeDc/RjgqQ1huKGN6QkwtPGlKY0lERWJyYGUjQEwrRndnQEZmank3P2Z3KVo+CnotQ3F2dEtZ
fnRiPHBLTERJUT1sa0woP2M0cEpgcHNpKW9iRCt3RyNVYGJKYVpxRjV4c0A/TWE4TVZGIzZMbk4w
Vwp6ZDhESiRPdHVDMjdzQ0JXQzc8X19aR3U8YDcjLWUzSnpAPnMhZEslRCZ1dE9TbjNga0hpfngj
b0d4bEBmcDx1Q30KelA1PnJCXmJpSX1feitzeHlFfm8rMEQ4JTduNiRxeyRpOTVhcmlgaVkyXkAx
djNHcWhId0QhT157MGdnX3taTDAlCnpmJDw/NUJCN053dUA4YkQ9ejx1WXE7VDJTSkUjYnNpd2RK
UDc1ZTU9a1U7YURASmJ4QiFtP2U/T1NETks0fVo3Ngp6VFkmfEBuZTxuJU8lSFRWSW1QMXgkVSF7
VDtZMHwoVzJoTEdGTEYrfCFfR2A0dTVtY1MkXkIwWGRHTzV7KiE0JEgKenQwd3pXd1JyQkFzS3Bl
ak1RVzV3KT8oe2NvOzZnIUhiTVZ0TDd5ckNgWXdMeDJ8PDR3MFRUTi1NLVE+KWFwY1IwCnotZmI9
fCFiRlV+Q3RLYFB6WDtXQFdwIzB9cWR2cmMpdE57JXdGM3FqakhNWkVteHNAVyl8dFVyJWZ8NEN6
I0BsaAp6YCN6TWA8NTtrRSYzJG1uVWNya01peGIqdyY2Ty0pM1ZIe3g3dDFjYms1N0c/Qk8rKzhm
Jl9FU2VFcm50SVo4VWQKejBNMD5RSkhUblQwRGx3KEh+R0hDQj9vR3JIdUZoSG5ecXY3IVopdmlh
XmIrJTVvI055MDMmITZlQzxSJnkkY1VTCnpJUFZTRyV0UE5tcCFYcSExPWBIVFJZYykobVFOM2VZ
WWY4cDxBfHo/LVN2Vz5ITkA4RUlxUEsxcnlDcU5XT2RLYQp6Tno4ZUEtNWBQfkxXSUJIQSsqZzVT
NmcjeTQ4el9Zem1yJF5BeElVcTk1KExgQF9RQCo8aGhNbGhDaWtZLVhYOWEKejdlVUBkTXRVWkc+
M0tNRz4oKl4/RUtRUll1d3M8ZCZjazUkeipeQXF0aT1sc2lSWnZ8YlBIISNqQWlLZENlWVZgCnpm
RyhXbz9YPlNnSkRFXlVVUEhURkdLfUwpIVVsOUJfTTtjRDliaFpfaHtZMHpweX59Y09WQGNGKXV8
QilQKT59RAp6dXwlJWImSj4zUk42KHs4ZHVpKmZvMWV+dzdoYyFkQU1uX2Z7UWdkeDtfWSRteFZq
N3JeJF9DajFkQGpETUs1amwKem93SXJwNGt+OWdyMTYhPU5gYyplPWl9PURMJGU1I2Z8Y35MeXZM
dGVMZmhpdyZ0YmAwOWFGam9MMGB8fjNlYjktCnpBXylRQDsoVVd5ekJSX3h4aD92YzRYMWI8bFpJ
Tk9vO2dMbnt3e21jcmlTe3ZpaThEVGg7RGBYKTxlV0FUPlU9Mwp6Y3tIZExYWUJ4OVotRUNiYTNN
fHtnIW9NKylQbEt2WFhLeUx4ZTBTUDY4MEF6en5hSXM+WWwzMS1LWSM1aigmdFAKemZjYUdXMV5M
UzFObDV3VWBsUnY2cUNQZDRNQTg7LVlAKGc3V0UmJX5Pe2ljZWBqVFhmKmh3UldrJV8zWk9gdylF
Cno2XnA3VFZESGhlNno1OXVAKmdOclJHNDFfVHhMeCpzYSZtIys9YyE/SHJpcEV8OXIleHklLW5V
QmBFYHJYZHBZSAp6clotaTFCdEo0JGMkeit4KGxIKk1xfl9qU3M3JUhWNTNyKEtWU1FoMmVVQ0ZQ
I1p3d21DUmgtPVFEYHpmKT9fKyYKekN6KUA8dnk9NDNhUDQmOTN4KE5+YkVCdihMTDJgME00WVRJ
bGIoKCE9YFRrSlkwUyVfKSsyPlZqKFJxIWxKP1NyCnpzMzx3VUxQJENEbHt7bHlQYXV2ZzUjd0Mq
IUVZM3A1QUI4d1gmdH5FNkkwZSRBODx0OClmKUZJQmpgXnF7VFdTdgp6NURnXkhkKGFydTZCcmFG
ZCt7SjdqeTxyMCM0eUd4aXN6RE4qJXpoRnZ6fCMyeXU7IyorZHVHa09rMUU7JVd4S04KejVjP0o0
KmokTy1kZ296VSVLRTQpVUIqfEBiOHBpfWJpel9RZVV+fj8ycTY5Q0FaUXFfbSNIWTY8dUd8UT1D
TCEmCnpjcERtKUhzcHlHRFQyZzBaRCM5JHpvdUl+MzBqanZxYzd1QUY8e2JFdEprbVFWNHlsSXFy
eEAoaTlleDBpZHUrYQp6KU5GZk5PTkstcCpwcjRaQlo3WSl6elp0cjNecnRrXy1scTNFQC0yQD5S
QFZ8YihlSmRQR2QlZjw2fklnTHBYQWUKemc7NWItZkprS35IbShxPExCeTw5KiZMMDcjLUNBYHUl
YmZHdSh1eSZRRG9lZ0ZSVmZ+ZGhKfXxFI15RQzVDYmFICnpQVEpSIStqU2gzMlZUR1BRNTgxOHVo
UU9pb1Qoc2R2O2N4Wj9+VXl7M2s5N1cqPEsrUzx8WGRaTF5ROTMlbS1TKgp6KlhXaENDbj1ARVRr
OzBCTjI3K3A4Yz9zfFUheiNFMWo0dzlWfWd3Y0U4aVZ6NytiXnRgaVpETHN0YnZhIzc/bEwKek91
Nys9KWVWLXM1MlVLZCNfQEA0d0djO2lJX0VwTyNnLUtRcEMmIWFTWD5eZTtYZ0pWSmpiQX5GMXs4
TSgtWngoCnpaQUVINk99YlNYYT9OdHw1cjZtNU1IbktTbmApYjt1MGI/Nmk0MD9HITBtSVRNM3hL
VlVtTj5PKVphVEI4PThkMwp6LVdUc2xrK35Id1N2OD9fUGwkejM1ISFJSkI7fD5Id09GUXJPNGdZ
PyQxbjs/WShPbHduVHA+U2VWak5qTXpeTlQKem9zcD8jVn17bDMkUyZgOFdSQEZfRXNwWiZxbTt+
RUU3e3cwRzY1b3U4Qm1aT29IfF9kYGNQN3xnXjx2NkI8P1IhCnoxakhTVTYwR0RNVSNCdlB4YElw
Rm80XnNNPmNOc35FSXVJYUltKDdEY191Q1N6STd5LXorZyMkZzdEVlY0ZX4mdgp6SUojKzVpbTxC
P1Epei10QkB3KyRyfFMpUCZMYlU0NHdsV2EtemRhU2ZXTyojVDR3PzQqMUJvc3sqVnkxbTxBM0IK
em1xd31RKFdPYWM+RChXNlQ1bHlMPFc8YnNMSVlIZ1MzV35+c0AoaUlxMUFPbG00XkkpVllfbFlz
MzI7WndEflhzCnokcClre3N7VkJ1Njs+RyF7cCZKJWhte2UjNHQrbmwma3UofDVMM20oKSZuOG55
ZEdAfTtEMTcodUN+N0U9OD93fQp6WHhAK354K3FVOVopNChhU0ZtTXYtRXsxWHgme1YhbGJgbVBq
YWtONVF4MCo7Q2NSITtHfTRMTERIaXppXi1ecCYKeilIaChoO2tCdFFPMkc9UEg1PzkmVzlUOFM+
RFB+aj54RGRQdjwoUX1vS0tDPmh9clVPUHk7ZSFGNzVTJXYyKy1aCnpJYUgkRDdRIzlIbSs0RzQ+
b1lAdjZiKFg8NUtEKk08KWFleVk9Z0hSOGBIKk9qRHZmQjMzPnhXOXB1TnhmaDtuPgp6VmgkaFF0
T0dAQTI3ZHhkZlNGcjtpbSNRIyhaPShAZm09PEZoVnAjNT5JaGkjTWViO01wM2l8cGEjKjteTVVF
QGsKelQ5MEZgZCt0U1ItOEIlVj9nKk1wKXxpMT9VIVVVYkZWRDVCbklzSl8paX04akRlUnVHdjJ+
Y1N4PTlYbEdxJCkmCnppMyRpMUZBcEIzWmRWUjwtZ0xWITs5MlhVbFQwfDg7dEBmZ2N4NkstP0lr
U3hjJGg3TTYmV25hb295aT94aDkjOAp6VmFBcT1Kc2wtajN0IX1Seit3bUQ3aCFORFZ9b3NjSTR3
RENYQ30lc1IlMSlWYFY4aHNJT09OQUhnR3pwN2hvS1UKeikpRU8tRzxLMHUhRnNsJiVfVE15blRs
V1ZgcHtCek1kTTAlQVRFKGVEZHooTitfdm9CUkF8ITdCQVY5XyZFX0dSCnpge3Q8YEtHaDgkelRm
YjZyeStEVChoSEJRQThYY19COWsqPmBQJTVtKXVvQFpuTHswVW5oO0xvQ0RhNmN8SWA5Kwp6b2Yz
alUzdUs4RjVjPXAxUClDMTU+cSlmaVFRTyg4VnI0ZXpKOHZmIUMpcURlSkNlPyU/WFNSU24we0Rn
NGF9bDIKemdSUW8qOEVlI3goKjEydjk0eCVneExlSkEkJWNfMSZPYCl8SFZnLW5GQERCKDIjaCk0
U3pzRURHXjcpZTUreXJ3CnpPXkk0R0wlfnM8bzc5M0NDOTF2RXJYND1oWDFXcGEybnh7bCtHaS0o
KDZ2fGNnWCRIKSVmZlI2Mzl0SyZpSiphewp6NSNoeitIVmZnViooUTtmbWJJX0hKRUF5JSlaOzJk
fDZQeSUzcmBKYVlPJF97alhpZU95LUp2PDxhaUlgSzxBZn0Keil7U1NOUVBGP3VfNDFNUj0jPDVn
NFdwI1MkPFEmbjNtfmZeNTRIPVA+JWRuNllmSmc0PUp2KU0oRzVrRTk9JjRgCnpicH5zc0U+aEMh
bi0tMGY+fHEpIXNZI1VkN2xyaWI7M3wzOXFlZkE4ckR5fXpQWDlfUG8qO3FNMG51JGNsWHxkMgp6
ODFYX31IVWYqQGFvNz5mdDdfVXNGeUYyPHc5ezI8Rk5teE1wWU93fENmfUxBTXh6OFIoZDEqJEJa
R35oRW85WnIKeml9aHt1PXBeQzchTmdoT0EqfUgzbTQxbkRDP0t9ejd6Tj5vNyEmbmE0X3FRTDU2
VkBUODthMlV4Z29nP3YkUzhrCnozRSVBKGxpdFZDJldWY25KUTBjZjBQKVdVMEVsN1FrRGc3QD98
SHVOSFJaSUFYc19lLW1PVUhLITRaczFqQ20jZAp6VjleWFkjQWA/bHpAeGEqUVZqVUc7XktSVVE2
Ql8hYVc9M1V5Sj1YcnQ8PDxpbjkrUE9yWGczK3V3M0o3bVlGODAKejZMdTRzRnN2JDBVKjleUzJv
MGJQbWVoSWpDYDlaR1M2cSNKZGFMU3VTe1NZK3JzMjhfaFdqRiUhLVpFMGRqT3NhCnpYfn5QdURU
NjlyKEtBfS1fITM2Q1cjdWZ4ZjN9Pz9TQSpgTjVaM05waHlpPGBuPXczQGhFQlE2Kk5xS0BnSkEz
bwp6P1VXYH08Q30zazZpVHI5RjUyTXM0RzVge2dKKXxURUUlQTkrODFrWEZifVA7R2JOfHNNR2pn
ZmMpT3tXdSRzTzsKems/WUApMys8NHdqQnlONlRxczFgMkFoZWs1KHhqMVhXKW5ZNWpCPXVaaWQ+
QihKbkc+NHNpcE01IV9He19oVUpoCnpMaGdmR01rRTQqT0FOfiptWjI2Yyk1ISEqWWxXe3xKLTd3
dUNJXj5ibH1ESnFPYXt7aj5FTSlpaDtLPWZRcntCSAp6MilrND9XYSZzfTV4NFZUcUBeYUJ6fXt6
cEpveWlHLVhKWCo8SzhiKjszWkk4OUl4cTU/I24wTE89QD96TmJ5VkkKelhLc1A9dGBmP2FYV0Iw
YzNfO2ckU3wwPHkkRmEtTGM0SEk2RjFEQklqUjtAfFd9PjcqRVZ1Qy1CWWp+Nk09RVYpCnpAUE9N
QjJxRTx1QlV7SkxqK2BEMmAlR2pwYHgpdHU3NCEtNUMoUHxQPGBfUnlKN1pJMkJEQEs8VXhBb3ZP
OXNpYAp6eFp3PT44KUVZPW1RVXJqQD0teWF7ZUBfNCVURzNVZyQmb3ZJJjhJU2tXQWJVWD1rZ0x0
dC1va2VCKiopX1F0SkQKelZRMHdFSEYyTEMha3llOFN6WTJ1NkcoLUAtXmRIYHpkXlhRanlAV3J7
ejh1PmVaJjApOURTeVZnT1E8T2I9NWpNCnpPOyV7Kj1jV3JUVmd+VTFGaHJZRTQ0NHwtQml1dFA2
b1pKcW9CWjBiTm01U3AxVTZBPWJiK2s7eG9PejI7bXdKSQp6NGRmJCVVfHk4VSNiJlFlWkhBYjtO
SjZzTXlwU3glZHYtYU5PU3UqIWwhY08lQT53bn1zSS09TCtUNGJ6NVdRZ1kKekomSmJFJEY/TG16
e2pDX0JrQGhAY1QrU2tCS0dfayVrP3l4JmM/QjVqITc9QDt8cygkVUhWNUhFRjVHYmBAN3dXCnpC
ZUpJbUJhVnZpTlBsK2B6NUJRMSUqRXNZTT8jJnotbjxfdCZWcGZibXV2WGI/fV40ayRrLWc8VlNL
YyVYOWFJVAp6ZSRGcV5IRzU1fHUxKFdMcV5RVUJFVWYmTkBBenJtWWlUakE5VzJIaTw+c2QteElk
P09JI1leZyY7a19vYXlDbE8KekUyZlIqcDVteFMkNGI5JXg3XlolMWlFI0EjKz1mRko0Rm8maXlM
Uk9qKyRIQS1vTDl6YWI/cn1yflNMbzZ8JHV3CnpkUDBPRFRhMzg/TF9rKDkkQnVgci1NV2smU2la
dklqYXtzO0lCRXUhPXR5OFdSK1FTRVI+WT9kaDJ5Ky1Xc1JzVwp6ZkEzdlVVMlM3QXVGQVEhcGBT
bXE5VDhPJE1aO0o4RFNDZEVvPUA8ZihETSNGbW1Yeyo5JnRZVVEpblhFQlNWfHsKeiU9OXZaUERW
SDc1UCErbjlLMGdmVnglPmxwWkZrPUQ1cUA9cnxwfSV3WFZnbSE5JWc3bWlDUT5HY1FLPEg8e3RK
Cno/ZHp7QU5BSzc9aGF4Kz5qSnlFfCs8emV5QHh2WSRDODQ3eHdvP1I4Q31EezJ7c2xGUDhJQHEy
KSlrMWBzNUBmfQp6P2N+MmZ2SVRzQWZHOE9FKjwxbD5vQWEpKnc3NEt2UUQpTWppMyhlfDktSE5B
JHM+RTRyZTZFaV9zbzVBIVk+eWQKemZ7VzlaNkJ3KFlhSlp8P3pQdHkhRT0wZkEqSkFqPzd6aF9S
bE1Lb1Mqakg8YSQlTEFWYipQY2BPQH13MXNuXy12CnopJDVePU15N0QhbGE0cVVQU3skRU40VF9h
SGE0WE5JVl5LM2M1QUojcko/UlhHfk11bWA4M3w8Q0xGRXkoKjNSYgp6ZXo2ZmtWIUpHKHhpUDFI
MEtUaERPQGxTSHNhZVQja1c3QTAxcEJseCkwcklOPDQ4Q2RGTyNIMD91QkZvWF43YjAKelk3PDBU
RzFXeXJPOWFvdTY1Kl43bF9zfD44ZGJebmQ/eEEtbTYmVl8jRW9EfT9SLVV5TXFVRyhFV1N+N3Zs
Mi1PCnpKeFA+NmUjb0NgXnQ5SHd4NzN7eC1Zbn5lQkZ1QWREeXhaQnBRJlBVQ0k5KnpRSihFP3d7
MlNnSmgoalBVPkx3UAp6NDV6Y3orLTNhRlNVUkJraCl2fVB6RntLTys4TyV+SmsreSFOakN5Rmko
VigoaH1hSilxM09EamwxPHdUZnZuVXYKelY7PTVaI196RG1oLXUrIXcjKlopSUQ9NXhHSXRHS3lU
fFZfZDVHMnxZfER+dGo3X25Ee0Y4XzAkQnZsUlBVQil4CnoxRygpdyRtfl45V0AxNyUmeno4JTM+
aCRVdHJZciM4PFpTLUYtfkh7Ykc+e1kxbDVvVWJDfHdrXiN3NWVAUnpXUQp6ZXlgfXRaZF4xPEN5
KSFUQlhgZGVSKTclVjl9NzBJbE9aYFNpP0pOXj5Kd0A4RURkZm5DZE5IalRkbGArYkw4fnUKeiY8
NGB3VVV+X05AZClheT82V0FDVj1GMFhLSmBSanpVWkwyRSZEZ2hFU24mI0Z1SVhnYkc+fHxnc2kk
VWlGVy1JCnppNCpsZmVnU3F1IXh0NUE7ViolfV5NXnF+SmJsPChfJHh+UE5fYjZmcCZxN0I/Nkdg
ZWNVOEMtMkgxM3A+cVF2Ugp6SSRQWS1icUZlSVVGKFlRMHZzaVRNX2M4MklJeFdpNy0qWWZFRGZk
PWhxNVFCYV9pYE14Wk57eVlMZVZTdXs9MFIKenY+N1Q8P1NfTU8yelI9fFMobHN0MyZHXzZ6fG58
V0wrNn12bXU2KGdBbFMzMWJCKGMtMUNzd240bntkVEJkUlI3CnpicT9WeGB7bE9SMilpOy1qY3Za
fU04I2w/SmlGPDJOMG5UOz9Fbj1HTnxZNDQ1ZnJmTj4kVSEtZT96LXQlTDkzSQp6a3kpNlFVeWdA
aU9sfD4zOzhTaU1qVTFAWF55O0leTTJaS1EkSVArSz14dlkmTnQ2MjlNQkQqWEZkcTlEbEVPc14K
ekFQOWxBNityLWNwbz9tWEI/LSluQnFOODtnNXc1TXgkUW94Rj5YVVdSVXFJMGVWRlk7QHVMO3Je
LUNgX240aXFtCno9Snlgfml7Yk8pbyNzYkpJKD9xUD1rVj0qPV4pWn07YDNMMGVoQXAmSkl2Mmhj
bG85TiEyOGVlYz9mdTtAalZIagp6UWhjPTZaTEttfFooaSY+VXtyaEUta09kfCZ4P2hgbzNuS15U
NXcpMEFsfT4tPH1gWjRUQFFeSnFSSEMjVldWUTgKeiYoUilyTXlOYDNucXdhPjNOX1V0Q2d6cU9l
Xyt1KTRYSjNhN2c9O2EjYW0/N1JxQll5WDR7byZtaUY7VT9SQkAtCnpWPmhOb1d8YSEpNiRKZkNk
KS1PVTM2V1dzMytQbkBKcX5VT25ofXxHd2QmTTl7JGllMEJFPyR+bWxzaXZObiY5Ywp6KGt7ZFVx
QyUyXlU9RDd+R2NaM0h7SFklMyl2TW4lPUhSQTclIWVzTCsxR1M5dV5DNHl2QXFQNy1YVHckVXho
SVAKekh3QndIPSNDNWQwWHU9e3NhZUpvYmlRbihqSzM+M1hXO0wwbnZYak55M3c0Tlc0d2JYKExs
RXcmc2JScTZ5VTxDCnowdnJOaTZ9QHh8PmJ1ejNacDxGJnJzV1U/cVU7cUkpZGclSi00fUp5S3NU
dWkhcTNBSz5YOU8hMTxgRk5eKTkqagp6RSkpZSVFTE07Mlh5NjFFR2xOd1A/Z25nfkw+UUJuZ0pe
Q01NcDxYcT1EfGUoQ0UyfGdkQX51Tk5haFlCaTVweVQKem9pOVdzIzFzd3VCez9TdmEmNHw0WlZL
cj1jbVNyNUtFWUc2ZklYUEUpKGxrPngyZ1JGYWFFQklgK01UQy15cSEqCnpOSmRZZmktYyZMWVk4
RzlVU1Z+WUY7V3tHcD1QcytGNzJka1Q+QyZUZGVedHgzKSo3IVpUNzxDTVYrS0ljM30oVQp6NUhv
czN5TVlyVyR3dHp2K3NVelE+X2I/TGBaS0MqPHk9WlJSV3UrRitQOTFgPUcxUm5LTiVmNHxBRVZ+
ND91NW0KenE5THxDUEpnU1NRVGpxUCtpKU1rUlV7cnZxJkluNGItTmI4bz1SNUhSPENDbzRqOFIo
dnkjZ0IqZEJifHg2fm1nCnpRUEJzVFpQX25CZ2lBVVRGb0BMM0Z0TF5lT3AxRjJnfitJeSooa0F8
YzkrRUYwUit5V3BScE51e0dXeDUtWGVzWgp6NHE7YiE7bmVpRkpwPUZQNjx3QVAmS284XnExMkY8
QnxoOW9RaWkpXitKJnUxVF5kN3wjRHVAU3JUJk9edyNaYEIKem4yPkVpJGhOP2tZKVRkVnZiezNl
Vm49MHp7RCFHWExGVGtSTis3RXhNdnpualNoM3B0bGNXR0BQYSt3NVJmK0cwCnpCRTxDe3JHYyE5
WitzSmkhTzFrdGNYO2NCZDZDbnJ1JDNqaU4jRjNnclM1MW1qeihVTlJ9JEBSP1pmbXgrNGRqcQp6
N3tuUmEzR1BRK0xfXzROIX1pP01tI0E7RnJjVnpYLUx5TTB0NGBAZWYrNE9XYFN5SGcwIUxlTV5H
RU9JY2E1S1gKem57dF5OWGN+Y3ZjQ3VOIWpuS0Q9T18/b3RkeD59XiZPU15CYXxhSH5aT3d3ZWlU
bVY3Y1dILWh6R3wpJUJtJW9GCnpgQ3sqeXNrTTtSSnhAfiRaNShtLUM8JEhFOGgxLWRvfE9ZTFRG
TD4xNSM4WlhMVUcwSFZ6bSptdzFsYTBCS1Jmegp6SV4xd0VZXl9HP2ROPTdic0NsSWNUI0FnckZu
Szk1WlpkKyUhOTZYZSgkfXlxZk4mbW1BbVl+ZytAe2tKQnNDJm4Keip1RHpSSktVPll2NmBIeUQz
R19AaDAxRlFufGg4fFM9TFVNVkFoUUckaVd8VDwkWCZhVkxZdVI+fXJFcFg0WHptCnpRT203Y2ox
YXFWO1NgaXdkUkRRNT59Vm87ZE9aPGF1NGNCO0BEYU5LaVVkRT0pa2VtZzlMNj49Jld1RnBMdz98
Ngp6el9jXlBAPFo+QDFFU3o5US1GQHJIZkMkNXVpMTw+MXFfVHdqRWw5Py15ejdvZlB7WDc4ellQ
WT9SMSZeel5eSVMKej1AcyVydjw/P3QxZkBMVVE7KjBHSzc/MjdkYyswaXhicXdMV3k1YDktOU4x
ZzApUzFDe01SJCs0Z2VON0A+N1NpCnpJMlJMVXhGT2krTmYkTl5WVk1YUUlnN150VmZoTjRqUlNH
TT5PLW8tN2tDJCFEdjJUVTFQd0hpI3NvSW1CNVhtPQp6TSY9R3dBbl83RG5AeTYyRTRDOElGekkm
TUtJXlJ2ckwydn1pRSkoPV5rUVZDQD0zNE0+fmUlbF9SeDk9RHVuSHEKek1PWHBGckc8ZSkjMW5B
VlM9MGV1eG1mZlJlbVBiPHYyY2FgWTtMVTVzTSl5NmNlQV5SKngwO0k9Kz0xQDAjZFRnCnpqVHtZ
X0dvdUdEISh5KGREI1F+PD0rJGU1QnQ9fTwrOFpiS3ZDI0Y8MSVETWVZfnh1RGwtWUVAJkd9KXAh
cmVgRwp6a1BIUWZFNWxwWUFoYEEmMnU0SlBPKzB+dyNZISg2ZHM8KWhSMGQ3RlltI14mRiV6Y1NC
dUJIfHsqRGhGUU9eUiQKellnO240VD9Oe3BXMjNQSFYtbHtTVTFqOTQtUUQmQzVkMD5fTEt7JTVi
PjFVMT1qJTZAWWx+Q18pbyZofF88QzRTCnpVMzdWZmItJFFqeFhoWUklVyg9fEtDKHE9bUE2UkUw
SEQ2PCMkP1dEc0d4dGdoeyNpMFE9MT9uNTBvSCg3MiNlOwp6PylweFhjZyRfRT1SQ3lRSyg8el85
eDgya3FCdEl6T0lqWio9PVRIWDArNmlZS1BJJjNCM09LXkdjRSlzcHQjVG4Kek5jdXYkdH5LYVIj
d1hBWXdFVkF+Tit7UlJSZzQ9O2lNPGFKKGZONWtIJmtsNXlJZiFIVWJIRE1MNl8qeGNkcEcmCnpO
SF8/JTBNe0hDY0hQYVNFbmJ8QSs/eDsrWFJ8JG17SD1lWkp3cGA3YWBCWjI4ZCE1KW4laiNGTSVz
cDtnZkw7fgp6N0tHTF5hSiVRQ20zSmZKaCotbiZEeisjSDlTJHVPM2xiUk8lV291MDNXSGw3T3dF
bHojeyZ8PGpSPEFANXtkfGMKeis9M1pjSWBqSE1FN3k1SXFCWT4mOz49MnYyTlVIaGtxdnkreW9p
WWE/SmMxLXp4SCVRSmBUJjtzbSNYbyRnVX08CnpmLUFDWCs3QHJlWFUreGxUbE9ANVhyNFI0ezBk
e1NkNDBVPCltIXs8Z1k9ZGU7X25wdmgxflE8dWNRYTg/bkpNfgp6Z1Y8UV5pVXRhM3hsd1BLMTVv
U3V4aW81WnooN1MjUGczMmo8TFQ+YSNKKlpQYHkqbjtxWkg3UWwzYXt9Qz1SYDUKejRDKH08ZnQ9
QTYwJTdpKFdgY31BVmo+UjgpaT90SkxrK29pMkxgYUMwejJ+S3JGKFczcF5DNmwkUVVfWUJ0S0F3
CnpHSEY2fFlQMDslUjZNaVNBe35iaT8wNkhpdD0xcEhIX31keXk/Y002STY4VHFVKXE3c1B3PmdP
K2I9emg/LTBKZgp6aV9jNT1eeCpTJWUyeE1CPE1uPU5IOXEmP2IwMG4qLXtZNVJIfjZLQz8jMHZ4
cFlpem82clg9SWBsVUhvYEFVQkYKekJrdT9KZDxyXjw3ZTRlOStDeks4N1B9NUxxeFZPfHlGRTZg
ZFQrKmlxO2E0YFpvVU1ORXAtRGkxaTJGMChHUGFPCnp5TyZ9R156dWZMYEkwNV9ZYCh8YnNWbGRM
WTBWcF51OStMczFCSk5zeERaPnYkY3dNb041NEY8UGluK0RgRi1UNwp6IzxlJT53OFhtKVZpZExA
Xzk3WThMOHNoOF9ja0VHNDtqYXZ2VmMoejswfkd9VjMzTUUyeHoycEE4MnBKXj9kUCEKem1gPHUk
NUltXkc9LXd4KytCeDxoQVBTSVVGRzlKbz55eS08QW5GeF4hJjMpaUdiIX5BdVVXTXpjKUBPR2JP
UTBOCno5c045Wmp0UFJyTlAjaXxpZD1oQEl3NyhOR3EqOFh4ODJPc2JvNnM8TmlacFdqSGslOHJE
YEU/dTI0cS0yWmJ+cAp6TzwpI2JCRF5YUEUqQ191TilrYVNBT2k5eCZOaEtfd2NQUihKal9LKEQp
Oz5XXmFPVShJQmJsPGdCWFhpQGomQnIKekchKXhYe1NvUEU9XmdgOTIkQXxuK2R2T2hPZXhSO2df
eUchdkxOKWg3YygpOzAlS2N8Wko+dVREO0ZhamIyUXhqCnpDRFB1KTlpeEdfbEMjQ3pAcj0lM1A5
MFopQX47cXFQMzVSWm1VX01WYnRQTmc4RilSSj1fPmghITBWfTg3cEFaVQp6e2U0NyNVbEtKNyZx
PlReJUt+VGAyMi11XlUyT1ctOGhkZFdxZ2N6JiFsajZxNyNpY1hIPU0xM2tBbTJ1dkshdHAKenVl
NSY5PE0xX04kUmI/JWZpWWthXypKflUyZ1ZCeUotbCtmTjJYdCp4KUsjI01qckhEIXVkXmorWjd4
e1NfMT1ICnpEQlNPPj92ZnV8TlNQfUpPRGVqcyQxT0drWng7OF89eks2SVlRUWxJI0kwQl52UGZP
LT92QH1EQjw8K3c9JWEqIQp6VTtsfnkyeSV5WGt5fntANEo8KVY2UW44JU99dSl7N2NnKDRFY0hE
dDN5QjdOIVhzcGxMODIkblBFUm8hX1JoLUkKelNfVl9KTVAlejFAKi0/bHJETypFVFpeNygpeHpa
OERuQEpNbDZvUUIoUGtKY1Z9ZXgtaj0jfUYxfEgyM2ZxPU9UCnotJD5UMUByYX5jTmgwMmVVRzs7
dy1WLWN1aEc1Q2whU3p0e0F5NkVFZ1J5QypeQjQ4Ql9GfXxOcCVWWE45djlgQQp6TypzdyM0VHQ7
RyZ0aU08V0dRYT80eCNRWWFnaUdQVFFHOWk3TEFnTVJFMDJ1c1UpKEU9Xl8hXkQjV0o0IVlZMUwK
ek9nT097cVVsNEBlbCU1S2tvTzg4e0tVZTY5LV5zU00kWUBEaS1lbHxeaWBvST9OOX19QXtPKH5j
S0d3WUs+SD9hCnpKYypaN3dfXytVKTkzPDVzN0BpOEEyKn5iUylAUEp5dFFIZ3o3Q3dmT35+M09S
QWE3MWEtYXQrVUBWVER7dk1WSgp6ZndDRFA4Z1pTZFE1WWQjSXw1Jk9yMXBraXlFQVVyPyhEUFE7
fVJuZTt0alRuY0dLUmYjVEdadjghPnw2bWlpaEAKek1XQXxFZmB7PypSa1V3REdTSzZ2bEZxZTt3
MXo0QzNLSihhPzQ0KTYzcjI1NTBUKXA8YCExcXxVRnNWT1ZrVzQ2Cno1aVlCdStMZnI2VFI4enYx
YjhkWE8mayhTP0k7eDtDdko+THZOTUpFbTxiQE5BIWRMKkQ5e2B6JVc2PWZ6V3NfYAp6e1ZlOEZk
ZDJVSWF1Iz8rMyVyNkxmRVR8WF54STBsQCZmOSlYcWppVSMlSDhXbShzRHlYUVBqfT1BJn4oMUhi
aUUKekprdXoqN1dsVn1vdCszZ1RaWSQtVSREVU13N35CJHMlYCFnZEpeIV4wYShTZVAoclAtVH5l
LVBmcCpsJkRFS0ctCnppITMlcDk2fkoycGJ9QSVYKGVROHdeQ19jRkhZMnQjR1c5S0lrdVR5U1BY
OSpxSmtnKXNQSSgwdjNyNEoqfk84Tgp6UlhyMGYzX0AxMTg8N0l4dlolbiFqME4jLUYleyR3bj14
dWthMXchSXRyQVdGQUYrN2hReitAYiRRX2J1RiYpRzEKenN4Kl9SSEV7Xmw7NzMhJGV2dHc9dUdz
WDRRJUdKKGZ4QzdXO2BGcmdHfWs5fjJDZ3xJN1JyWTNNK2tmJXt4PjF3CnpyJFkpWCNHYH09S2FU
Y0ZoIVlNdCkrbEJNR3x9TVk5aShvYSphSStWYUAlaDBXTyh5NVd1MTFpVilIcTJeQjx0JQp6U2Aw
dHhiMn1OISp0djReQSF1VChRb1ArRkg7KShUNCZ9bnd3RX1kZkA/OTtLQ08xY2N3WktIeVZsRyt5
IWQ3ZT8KelAkQztfeDUrSyU7Mzw2TldvNlBiOXV+I0IlVlFhNFlGTnorUFpLRmlrfTAyfmtuanV2
bntMOGw/KmFyO2NMSTVxCnpOSHtsJXlvLT9NMncxai1PcUJyZ1N8SEM4MmBBYmA0PWF5N08yfkBe
PzJya0ktRGVgdDJsOTB5cChsd1BDZ2kwOAp6X0diJlorQyl+PXdEUTtqTj9zPENBRi0wQFhEKUZp
MGA0e1RgWGlAcVEzalNNSVpLckJPTyhyJkQ2P1kpbHdwTykKemFJPSt4WS1AU0FQUWIzU1V8JkYj
eFdGYGdsWW19aEtAU1MzQllkbFhQUEN3fTB5PFArI2FSVztpdjFkPztqcVo/Cno8eFV8MWFVaVRi
ZTdrX1haXjBzaHZefjY5S3pFeF48NCYjOTVuZH1tJnNtQHFMcSoqfk1QKThRTmNjMG1HU1RwZAp6
KjlsQiFWTk5Mei15O0NgVDdVXmVaSWJ9cVdgU0BRQy16YHQrJEw9LT9Kc1kyR2BHdHc0UkRQeF5E
dCtAKEJXLXwKek4pZVomTnRidUNOMTNSN2xCMzhBbHwxOGU/VVNIX3lBI2VlRUAxTyU/dUc/V2Uq
d2NUSTJKNW12dklBUzBBbWo7CnpmJkVATypeJTV8Rmhwfmp7N0A1V0ZFX3UxaFJ9OT5xQDVaZy09
QiNZRjRpJmZAQUZJM0d7MUIkSzE9WWEhUk82cAp6SVFSSmMxRGAmOFBVN1FpQGdxI2Btc1RPWTkt
cTdMUyU9UmllMTNxPmdaVFVpcFAlRk5EfH4qQiYtM2BTO25SKUoKej4tY0Q9PTQ/anlkRFRXLT9B
QV9ZJEBlIy1kd2AzZGZzNk5uQGk5SzE7blI9TDhHTz1FYXQ9UERASHJRcyRAb21lCnpYRXJ8Q3NZ
UlBGbXp5Y310bkdTUEpMUXReenNqVCoxR1ZNQXhFWV9qQFZOKHtXXyV2UE0/MUEtXkVrQF9lNm08
Pgp6clh4PWE8PnA4NTYmb05AcElqJDVLWmJ7PFBvQmxEY09AX09BenMtMEI0IzVZN3ZjVU01YEt7
LXszMkUrZ2J6NGAKekZXfWhYTCtFOCNrYHdyb0UlKzEqZXgoSiErSmV1cDtDPjR9JEFadGQ7RU9H
SSgxSV91O0w5IWVOKCs5WTE7NTNECnpoYntPVzdKUmhAUzFrQj8zJT0yV008Tm0oTjFgZysqSzl0
YjdFTjJzTV5ycFE4fEV3b2E+ZFE7T14qeUF7QTM4Pgp6dV8xJmZoWSszYExVPyl6O2Rlc18ma1B8
dkpBfC1mMjtyMz5nIVV3WXl0QXhPQEZua0RJRyo4YEg2ZUMrQytkTmwKelJuUVZoSn07U0VKZH0o
cHBwd1pLbiV4SGRRMHdaVztSR2pGdXxFcXhSPlhwTl4tYTYoTlhMQWt1YiQySyo2UzV0CnowJDcw
ZTZMYG1sJSErPXo8NDJPUF4oTFA+RmAhT0JQdGBONUZ5UUIlMEB4bE1JNzRAUmhRaUhRYl9oMW08
dlclOQp6KCtJUmAoQVU/OUl+UkBkSDZkSnslZCZ8O188bXFqMGdEMVBKLWB3aHgyLSsoVko5Z2dv
djt3UG56fm9Cc25IRWcKek4mWD83VnpPY0BWZSV5Zj9yVjV9ISh6YzNpVWpjYTZjRmBCYVlYYk4h
KG4wUzY5VVhxVT5hezUlcFg9LW1qVko3CnpDZChwbFolQmEhRjVDeyNVNj13PWV0MnR1KEl7ZHZN
S0hTaENDSllrNGh2SV8xVU1ATkNZbk05bjV9KTIyN3pWewp6bWpkQ0UzezJlMjZjSCt+JE9MfGNB
X05seiE/OSF7YHIkQmBrYnchX24qXklPRm9Ea3tmbTlhQnp5d294YyZLaCgKejZSMFBGUjJGVzZw
dDk4QUYjTURqIU0teUxDUytpTzdiZHx9S0Vne0ZFdCpiWXt3Mn09KFlqN3k/SX5QYFAyfXJ3Cno3
cHlHcislTGMydG5TQSZYcmt5N1V9SV59SzU7S34waXNiRWc0V09zNHpWKjRuVlZzMXV5IXdrd199
aC12Y3N7TAp6b3BmNzx2cUJLK0cpN305M2N8MmU0WW8/MChyVmZ5cyhmWjVIVSVmZzltXmxYZVFq
OG1adnVuaj9wKXNlOEBPKyoKeipTdmNkX288dmlCSiR3JDRJUnNidXkjQzRMKlB7RTA9e21nb1hz
dTlkNTlnajFHNjFSNDl1PjkrWjZYI3Y5YiQ7Cnp7SEd2PkpvcyU3IXE/WWRTWXpfZTc4WH03PENo
aGh3RTBhYHJqZG0rZjtgdE8jVCpwPDdZPlUqWWhBcX1wb2NTUgp6RGhebmtDfmUwelVWKi15THxN
VVFRUENGIzxCVj56UG9HSSNzI0REYE9meWVGTXBEQ01ofm5CYDM2XnhBc3JkfiMKentGNnBIOGd9
U3VXWDNNQHJIQnBUSHZpZWhBZC1YTXgrNT9mamNNcUBWcj1IayEwKUt3UiFma2crYiF3bjBqPGE/
Cno9Z0BXPVRFX3J0NkBRZlNeclJDNUYqQFRXQDEkK3srOTQ7UlFtUXhIMyRzQ0pFNXVPP0greDxD
KDVzI0ZCSU85Qgp6ZlJmKXpMNz1scEo1X3t+Jm5YNGxpcTV4RUsrUUhFQEJ4Y2ZqdFNSM3dqOyg1
eGN2JGZ6aENTKiFJMiNzQHgqX08KelVuOVU+Pyo4Sn5vcDM3bnJqNHxmcU9UI0gmZ25LfVZUeSRf
YiUyUnE8ZUcpYVEhU2ZARXNYOEBUekJqO1Izd31RCnp2TmlsU1hsJTQ4MWNkRj9aNm0wdCkyISMw
Xys4YVlZeHZVVlAzWj1YKGJUJkpRcFd9V1NuOEFibHw9SjVTKShCYgp6ZXdPdmlafkl9XiohalFA
PVpqTHgmbmppeSpgPDg7LTApS1ImPF83UXJMK1MtSlZCSzUtVjRkUFJIODFFJk1zeGsKelMqNWk4
QDBEV0lnKWI2Qys/eSg1NXNKOSU+Pj8lJkQ/LThMWVg4NFEja3laQTF1MWN9e3VSUyspPDF2UCZI
N19XCnpuSiE0UCliaCtQUSkrNDQ2N2Vsb2FYNyhOdTh4bXZ1LX44LTtQPzBfeUBzXngkcWRvYVdB
bXg/cml1MVBfdXE+Kgp6RyY+WHE5UzE+Sj0pRnZPe0hyMGxBXnVaKEt7dnsjdGZRZShgYSktallY
cnM2ayZZVipAaGNfd3FXaVJ+KTBuSz8KejEyY0c4ODBRcz5ffDFSe3E2TmhEX1lvLTtvb1c2TWIm
ITNZK0pKcl51OTlCXmUzbmp6UkJtQWEybC02b3NmVj8jCno2KzdfT0xjQGlZcyp9VFpEIV9oTDBw
NFQqTjFzWkcxJmJjYkt8UW1RPWxEQFBjcE1vR15hZjRQZiVTc3g5Sj1NQgp6aCg4Qm8yeV9IX2Ro
eDUhPSFNKnUyWXpIJFImM3hXSVMydj9OUEg0TyQoJmZ6PiNmX2lBfVBxJWY/QjhiZDt3XlEKenlR
X3VHISZuMG9SUW5RezQqfGdDOWRsVWxMYWV1cHRtNC1ZeDJCT3J5T2RwTVN5TiVJTSZlRWFrdTNa
aFZYYGNXCno0aWlqOFNNbVBzQVZLUllUR3dNUVFqaXdvMEZMe3F4Sy05TmxXMWM0VUVzJnM5emgw
aVAjOFp9d3JibTNjKkJNdAp6e0FMMWRiZ2drT0pBaHhrdGpEbiRqS19QbUp5XmJvSH41Mkw4KXpj
N1JtSn55SCFROWJYTCYwZFhjMFRleTgjZnQKeihEYGQzS25lVkRAcXsxR3RsP0c5Q2M5I35TZFlk
OWZgTWF6UGRETG9CRWZ7KSVDVkg0cGBFXjNlKDtfSVJ2Pld2Cnp4OFZsZG8lS2c2S2ttU1JBJGwk
S0kpWis/MHFxWndMeHJsKUYzMiowQ1VOJi1We3M8RzljOy1qXndMSHF4XjVNXwp6YiloOyRhZj9Y
O0BrKzh+eUM1bkFzflJwOWZ4U0REWC04bE92SG94YkEhS2F3cmJmcSt1SjFNWSNWPi18QXElTUYK
emlIXmdXXjtyaUBGOygpbWIhMngzI1pSNi1IaitkVWMjTDl3Xm4qPFFWXyhLP2RNOEJ2SX1VK1hD
d0BhKytsJW1RCnpBTklOZ1BNfF9LbDdAcTZfdjB6WXRuV3h2M28zZjYyJHppIzlBMFlWKUhsNkc/
ZSZeeXVSYXBnRlBeYiVEUWM7bgp6TX14dDskLXk4V2o3OV9SMktnMXxmPWZ0RHc7USt7aHl2U3tl
MCZPcVArd0JMJHpNc3VkQ2F9Qjx1c0l7T0s7aSsKenlfMHZvUU16Q0koNWFvby1LRTg5cHk1aGhM
dlghMzUyZmN8SUtDY2JxTTJAb0J2fmpBaTtDIyQtQH1Sb2BtKzI3Cnp7RnQzR0IwTHBfNTVJa3Fv
Jj9HfWQkZERFK0YrNDdLaW95ViZTOD0pdlBpbTNrYChZQHAoMnl5Vl9DYEVmQEdOPgp6KiNsYz9t
TG9gZGFpdTMlRVp+MkJRbXxOSChjMXhVNUc/TFNRNENBQWcya3NYMk9ZLVowenZRWXYqfV5Ub3tj
THEKelpaKVlEZj81X1QrI3NrS2pWeDRYbEtSS2xxP1FVJmxnfW9Gbj5nJkt0c1NFPiZvfUFlNnF1
a2wpfShne2UlLVBQCnpobzhpWF5JWjVRYU4/Mnp5Z2B0QjJQVipEKipkWDdaQWJHZFk3MXE8JSVe
fipENDBaNUBtKV9xMEJsaG5FNldTPQp6PWZxMVdrMVpeJDxXR3kyQDtwcE90TjcxU1h6JlJpT3Jj
I14kKHZHV2xkSElyTFlvcmd3Xj9YYXlwRW58TUxkc3sKenF2Xz00QUVJX01gQG5fVmRfTnhQPVVj
OFp2dHJoY04hTWdFWVl8KEJRdzxadU9MLUF+MkQ2SGZPcmQkUG1YYm90Cnp0S0A/fXI8eEVOcyU0
MG1NVzhsMCRsbigpQXlBdUEkPV4oJlUwS0R1UWZPRD5IJnMkLUdiO0lTUSlzd0Ffd2Z8awp6b0ZM
enRMWXJVN3dHYFVvRCF3ai03N1goNXJxR3JtVVkkWilVZDY5VnB7KSReKih0T2VFQlZ3RStBVVQ1
IVczRTwKenpuYDIheTh+bGIzVDxeMngyNGRPQVYyWHEkJClDUXpMRm1tRkM+dFNSczhTYjFwO1lg
SylIaV9aeFhZJDhTajwrCnpyNmxzIUVxSmZ1emZJdmtBbl5ZZWQrITF0UmR3eDtwTHJ3PCQtb1JT
Qm1ue3JtfW5wYjB6cjhNYUtiUGw3eV4/Xwp6a2BYMGhORzQzaWtjND9lUHkoUj9tZFJtUz5aNyRx
VFBmT1dUbD1mR3dGK256Mm9paTIhNzNVQSM3OXE8czZqOVoKejVTam1YP1FfbSNjeGJpdi1fUCZm
LSp1OTsmd2l9XmV5elJ0K0gzekpnMT8yfkglSVV2VkVBYE9ART5DTXRfYzNhCno0RkE+JHstWF40
PF9Qe3s0MVkhaHt8U2FhRWB0OWcheWd7T2V+Uko5TWV2X3lffiMjJVlKYlpQaEpUOGdEWmtHJQp6
e1AmbXtDRFhpeztsQ29gVFpQQEUhK2BfYiVvcW99d3BtQjBkbntsUyYyfS1FQnNgRU57N2VpMkpm
fj1zJjd5eT4KenNHP0NlJTIrdlFsPVR1P2t4KWZDWVc3TEk4RG9NTV9keypXM1h2dUFYMWQlN0Uw
Yilja01MNWctXlgxUFdnMylXCnohOy1DXyFHV0BvM2xtRlUyVX5ieVBIJGd+Vlh4YEBFRjcmUE9R
UTJHQyh7MVNrMXx6KENzO3lXYEU4Sm02N3VTQQp6Z1JHYTNIKyZtcHdTPklvK2FUazg4RHpKdzco
VHxqaHhUKUU2fF5aayZTJU5tVF5qcj1tNXtVO05rMTMtM3paX3QKem8jazYwZ2pJfHpCNDc3KkRM
a3ZOSDQ7KT5eTj52cyM4NG42Yk11ZjVoamJlc0s/dnsmKWs7QG9nPG5iTUZQSmRyCnpzTShlWXle
JChSdTQ1ISpCSXBkWjBXZVVjZTUreE4xbT87c1ZfK19VbHw7S08jfU58OWF6QGkoak9tZXlvUGk9
JAp6SjZgayokPz4hZD9qdGxZbWlNJn1jMC1sJUo0dlkmaThPbEtjeWNZKUxSKFJeITYyby1QX1ZP
blk5dkpBMnJWM1UKeihhQylKS2BgSG5JNHh1dWUyQCZQeTtkaHRJYyVFd2NtKURgQnIzMnRGKSZ4
MDk5LVpNcEw5MWpFMElsMnsoRGs1CnotKSpJV2xNd2hHOEdrVnVSWHpTem0waWdBSWRjbCFsTDhg
I1ppR2BHRkJOVmk2c3dwVGpFN2BldFUzVXg7Tlp1eQp6M20+dTd6QlhqeT9AN1RjPHFXcX1QfTI4
UzY+PW9qbnNFOSpgbj1oTjQ8OGFxQjZBOCQ3STh6KEU5R3F8bjE2dFcKekluKChvV1JsTk1ESFBI
fjNuPzZpR2dRTGFDZ1ozQDMmdVlzNkd7QERnbG99XzhnUmJSI2EoVFlVRCNmT3FVO1JqCnpWaiE3
fkxAVy1kYUkxIT5ndDtoTUJxS1N1Rz1oNTxhNHxTWXZoRlV3X3NSUFZraFhqN1g5JEdFZCRUfm9A
UFI8NAp6bWZ+S2xjJmw1T0VDdkdwdzF1YiQoMEpINyNsdiFNbDBUTVV5NGN4NUNRKHV5KGs7cTNB
XztrWHF1d2A/XiQ7aVIKeklAeUktdGslJW9uOClAJXA/YnQ7KD55RXtBbD97LXgwPEQqe2VDI31a
KWZlXnE/fWAjTVpJPi1tJSkrX2E5JSh2CnpkRFdlKXJeSl5FZDFCTmRDbXlqPkctTCF6ejZkM1Ey
TVE4fmdXQXxvNEVQUkJJYXpIRzFEKU5uXzZ4OEdHJUhDcwp6R0cxNVlkYEdIVWk5fkV3K0YyNHly
TT03Z05aMWBlVyFWWnJAYV9rc2pqa1k7JngxX0ZKbV5gR2w1SGRiPiRFYUQKel89NVV8OUQyZHxj
NEdLKkM3XkFoRDxJPzdjMCV3KWt0QCtJQnU2YXJsTTd1MnlBVTYtRmRNQ3xwPzJaP1J9bjhNCnpN
WG5eZiY+cGVLUGIram1AUUBedjFjOTJ6VFYyPk1ZbjNydkR3XypKTVRXMzJfMUFXflI2KDF2JFRp
JDlQQGU8Pwp6OTt9bz5ran0wVmNIdlh6T1Q7cUFUM3lMQDtrfTVKR0hBbWRBekdkb3d1cUc8U0xu
aUYqd2F5MXhLSFJSd2hQMlcKekJuTkxCU21ZfFAzcU9qbyVHVmRWQW8xXj5DQGI/fHRJTGphUiNA
cD93OGIqZHtES0QkNzdGanYobXI2JDFPYXxZCno4PHpRM3tyaCViVEokIzhOVzBMfEQ7RkNDdkE5
T3JnK0Uwc2tRMWowVzA3Nj5XeUNJRFRqO3ZSRSg5WU1YN0hwTQp6QV5TYUlLXjJ4fTd3KEskO0Yp
KlZTamU3XlNXeE1ZZ0l3Vz1nKU90bG0yTVpOTUopMkM2dVFSU2gzZ3wwPTRuPH0KemhGd1VBU2xE
SjN4aEJ8IW4yMUhic245amlFfVVoSUtHYmxgYkZIcFNqNkQkeFRWOWNDbDNoM3l2QitPZz0kZFI3
CnpfQ3plcVI7dyReRTw2Pm51b1Z9JXJxfjVaTWlCemR6b3BRMTFMYFAoVlAwWiYtRG5wWUJObnpo
aWQ8ODFtb1E/SAp6VXM+cHlXKjJVWVNlVHR3Kkwxc1piSHVfe1F7PFhxN3A2eG5eNkx2LSo+KWk8
VnF4fUxUe0c9TVYjTEM+cz5uNDkKejwzcSRFZUAmcmx3cTV1VnZ6eXAmezdvMVN0Z2Y1diFVcXcl
YC0kby1hKyZQSD5rJkppRDk9Snk0Jkh+MyohZWR6Cnp6ak4ldTt9Tl8ydz1sbkUkUjNaX0BrRTZk
eTU9SlA1aiNKbEx8cW9VUCN2K21wUXpDeVNGVCtzaVAtVXZHUWFjZQp6TFFjZmEmIXwjWTl7UFg4
P3RZPzdpKEs+ViFteC1QfDBNSCFHd01ITD1jbjFyPmRMblpyX2Fle2E2ZUowTVhtKlEKejtyKW1t
UG4ycSpze3IhQkI2ZmE4dC0yUTRnfSs0WD8lJlApRTx6dWI/UHYoVjs0fDdUb01La3VzOSt2dGIm
YXRMCno/P2hRKVFTNz9iRjZAZ35EVDRXOTNTRjJtfDEpQng0NFBBe3UybDRgQ0BiNF9NWHV9WTB2
fX5YVzdxWHxWVT11IQp6LWhCYDRoN2daMT9ufEEwcEpmKHVicWEtPXBJYHRXN3ZZZSZWQWxZI1dI
KG05bTt6cHY1SGF1d1dgK25DO2tQMjkKejdLcGdOMF9xck5WRzwmaXlUV2pXMnA2R0FNQVRueGFG
T08tQ1MjcyRadzJSSkM+YVJaXm8rWEZVVkZzdSh2PUV9CnpXbUN8T0F5U1hJQ31PYilxWUFkQnJi
YUMwVk5Ad0I2fFIjbFRxPUw3IVJ7SlZEJTNHNntrOFBPI3dFaVg8ODVZQgp6NGpzdFlOfXViUWZF
VU0haWdSVnMmREw/aDZpWF9CcEY8MGRXT195PnA0VUxtNnVzdHg3bmJ0MDBqeWsxYGhZb3cKenBG
Pk9iMHhaSjhSTDx1bTJsRGs7OzBDWnAmeDJxcEVJKDRQbVQxbVhacHUkPCleRDxuWk8rcWYkeypL
azlrfEpzCnota2hpM2xzfkBOSShVO1VxZDhCckRTdHc8RFE9VF9CSnVNfWReO3BwPXZZVyQySURq
MkMqZSRpVFRISlBfJiRSOwp6OUZhI20+cmYkQlcqTnh9IWhtKzg0JCN7YE1DTik4Yk9Mc2dQUWMq
KjJPR2UzMFQqbHhWdm8/SnohNm07bzFTckEKelp4cz9NS0AlYDNWNXA8LTVONzY4IWxXR28zVWhC
b1JHNlQ5S3oqYUU9I2gwVjlze0JTSEptRUgrXm11QXV6SlRzCnoySGN0dj5ePWdjc2E7Qnx0M1Ip
XzNPb1lCOXQkeHxtOTtRZFZHP1d4OyFRK1Q1RX1ONUQ9JEY8VTRzTDdOIzJKagp6VGJMNWloUGNJ
N2w0dXlmc2dqU0BkQVI0eU5+d0otSzRQJSFrUG82SUFkJkNvPUo9fEIkUWQxSzFUWGxJdHs7ZHoK
ej1zN3NfUyg4ZFFlYlJ4ZnRTKCRpOHhuPCVAd2E2eD9SdnREI2xBbnN2SnR2YnlnKW1We08rUXB2
UCUkPlVqX0xeCnpIQCNvPCViM01QRiRuQ1l3cztxd204Szd9SSNIKWxESVFVXnpFSzxJOGwtbTZU
JXo1aVhLZnY1UyUtb1VzWnwxVAp6VHBZP2EyKT0lfjBHJnB2Rz9kfGVFSn1KVXZ6S0dIe14xUyhx
UmRZd1BseVE8JTQmbjtHUldNPUYpRlBHTmJWdD4Kelckd0FPXnYyPSYyK3RAS3BMU0dMSy1WO0w2
dE1aMF9QK3ptNEMpWkI/dnBVVE03flAmO151bWgtNCFsSF9DYmR+CnpQITlWZUM/US0/JnVqa2B1
IVBmaGZVZk1oVGZEeT9sPkZAdj43dHZGIWVxaXpVMzxaPz0jND5KXkw+YlNrSDhOSgp6I3k3bXlD
aVdCdmwqV1QlU2M2RzFoOz9FRFRocStZakh0ckkqPUZIWjQzKGkmKjQhQlBLX3EhIUF9eTNXKFgk
Rl4KeiMxYlA/UnlJMC1oSyNDMDJ2KCRMdSNgN0xyVzhGcWFUZXpaTHpyJHJkZHIoVnQ1eURrb0Mk
cWQ1Pkc/PnhjK0BPCnpWenJnaE5veU5YYCV4dm0xfD5+YXgoKHVjZUtjeVptVElRNW97QzdUKT14
K0VHWFYjU2ZHcVlxeXFCUihnNFBkIwp6d35VOUU+TEMtKDxqd3N1Mz1+fGo8U2cjdHV2QGspdDd1
fWw3ZV59PXYzO09VKyt3RWopQyhPTVZSUzt4MiZlflUKemlXM1QjTSVCK2oqaSkpakE+M2ZXZEFl
eiYjRjRtSXpJMlpsYWlQZ3dnQ0oyc1FqNFMwRXRkSEU7MlpUdGp8YmAtCnpEN291bEtANXgjMWR8
bEJvWF9fNEhWJHBwWT5MQ0plUl9ZJFZhbENqaFVKPE5XczxWQjNBVCUoWTdeSzBGdWlyTQp6M1ow
NjMjYlNlRjUoQUw1T1lfLWBqTF88aGRJRDAheColMD9NMFZyKWVRUUFRdm1KTUFzYE5zU0pnXztm
e1pIODUKelpTRlRTKWpRQ1AwaHEpcVkxKi1FIVAkZDxCfE5fTWcmSGhrc3ZkdUE9eygmRmlUPUlz
YF9KM0tuTUo8dDNwYDtXCnpabSRwVThPe3d1anlXIWdzaDJCPjJ9NXlNIVduUmshe0g8WXpkPzgl
UEIpT3d8TENYSCNBRU5pemxKMjtWaDA8Ngp6KEAoOFpEKnA1YjZCaCQkZWlFRXdmV3lCeGFhbioq
ZXJNdkkyS0AyMnhSYD5rM1VEMHkwPkNjZEVkX2lBeWs+dnsKekZhVTU1YTdxQWVhQkJ0TFRFSj1P
aGE+IyEwRE9WTHpkOHdIdFpTO2tBRTh3VFptPSM7cWlpa014SzhyIyVgNmY7Cnp2aSVnWWs5ZiF3
Wmp+S0lNMHBybkIrUVpSUmlYenoyY200U15FKnpxNTIwaXJkWWl2bEA4MmA2UCM3JVJBMH5UfQp6
PT5fZytMeUB4JXdMbmRSOWcmU2kmMHZZdHt6dTkwOTAodGEoPitaMFBKPTxKSHIxUFdyMTsxMlh5
MV5LNU1Vd28KeitXRFJyZD15SG5pMVhNfDdCSjFZZ35IJDdWYE1+bzhOKVUzY25KM0BBPG1MUW9F
cEptT1cmViY8RHtObCgkcGRfCnp8SFV8d2FWaHY5T1VobzVLeCliM01IO3lhNEUpT0UrejZXZ1Z4
e2dyTzFmJlZsPXdhSGFZI0pPWEA4QTtwIzFDZwp6ZUxrV0J7PUowdXhEOz4+KmU5K21pSCNFMEl3
PiVkTW91QH4zVWBlYTkpNFNAP2xOR3codUI+anhqXiFQZiY5dX4KekNySDdqaUFkckZHIXRJTj9u
Zm5wTTFQVFdOVX1eJC13KjVWKTdaNlByNHE/S2NFKEREa05iLT9iKTNkRVIpTUh6CnpZSTgteEUw
UG9PTU4tTS1CKFZfdnlKTnAmOVA2Y2tGc21hVjRVQEBodSkzfWg5e29HPSZOaTAjZzVFK1ZBQ1RJ
WAp6anF2KX5BRllATHBOSnxxIShYIz9uIVlgYVB8PHx2NzxOe28wa0d4fSR6Vzd2VURTeCM+O1kx
QUhWd3AraGI0e2gKenpKJX5qQUEpTyRLPSZvNjlxKW5kSmprX1IxSzZnR1UhazQxRkdtdHM/PWtZ
fjtEKHVXXnhXR3tZYyZYbFkoUWdZCnpWZ2N0aENwTWpgQGIrc3VIUHBLLSlDZi1kQypNTXooSUZW
U04kQFhnNVJ+fGAqZF9jWCFId2o9OSN+dUlUIXFrWgp6Mm1YSFFDJUI3aHomMG5qcU19SH4wfWlx
dVYyZF89WGU2cU14Y1QhYTRyfDJPQ3B4bi17dytlbUNZbTw9RmtiQikKeiRoITFUbk49c21lRVBL
TVhDUSZSN29sUCRIMjZXKkY7Jk1ES0Z2SV8mYEA+UldtKnM5YTFhWUdmPC1tJDJZSEJSCnp6Ryk5
cW4ldnBgMnlQK0lQMEBGIXIwQHNtOE1FJW42c190MnVURWlfSHkxRDd0S212OEUjUDIoTnMwbF9r
fG84egp6Pzk7Pl9ALUImUV5XR0FGWG13b29kKS1JO0A2a1FKXz9LYU54NFheJUY2Wng3QGE7UUlD
fXNHfT5VIzZVbn1ePGYKemBefFQ8empEWGxyT3JPJWohOGM9O3cjaDFmODVzSGZ8a0t+YCQ/Z0k8
UzBYby1EbUk9KDsxNVF2UkVlfilec1c0CnpadyZafmZVZHx1OEc+NFRNRiNwdzhUZU1JPWxBcFBk
fkZXeUxsKFpjTioxeVpANUZERDFxd1pxNEhqQ3tJcGRsXgp6UDNLSCZafitKNkh1LX54UHZXQ3tl
REMyQ0VmS2ZhSj9GM0NfcU9uUmV9MV45TWZabjtodEshOU4mZmFgOVhjIzkKendeSj9jLUUxekU9
cm9kWnhjPmF9OXBQfGVkfFNvP3w3cWdkaUlvJTJwPC1mUXRLQmpBI3ZIQ0t0KHttb3ZFJXtECnpx
bDl1ampRbjI2SGlTZ08/anVhUDBefVklcH0+N2RLRGw1R3g8I1B1RU9icHcqSFo9VTI1NzRTV3ha
WnFUZ0dlOQp6eDItc1A/QiV3YHZzPlRucCVkRXtHPlJ0XzxhcCMjTV9CNTJvK1BgbVFDXnNCJDVt
fit1ND5Dc0tDVEVNP3k5emkKenRKO3BibihkQT52UTNNbTNgRyhUITt4N31xTEBNfFh4WEtEV2JY
MWBRfWB5YllQdCNaR1UhTlIzdz9WaThgUThgCno1JShGMHd9dmhSTCU0KWhDOyZHbEYmMkheTTR9
WikpV3R3M0lgKmdtYTYoRHc8XzQwI15pSzBBKXVFdV9LR21FNAp6eSQ1c29eR3koYTBRfjd8UGh1
czQkNVhxSEsoclJVU1NpTkNWckRZck0wM3pfQCVfZSZaNzBFIWRRc2pfNExXK2EKenpUMWM7MnQt
ekJLYUFPfm9rfD8xLUVWRyVSSWM3QC07Q2MmZTktVCU9dzxsZilSYCFnYUhAJV5iRDVlNCl3dXdR
CnpAUCFmQ1htUT59YGNGanQpMS1lLSlFXzdQOCUqRSFwKS02OTctdyN2Km58YztkRTJLRSpUWEBf
U3hWMj1YM0pNaQp6MXolfHFeWU87Qm49RF5aNTxuSiVRQ29ha0QoRTBgeVVXekMkcnBQKGpWIVNY
UXFWPkZBejxHSSlBbnByK2xucmgKellQYGpQIUhfUmIoTndMIVRRbDNfamNwcnVlQT9DKUpgVlRZ
KjtBXnRoOXNQfXcwQSR3K1AoR29pVDk2ZW1EWkwxCnplYXx5T25uV2YqIWk4PSM/SkR9aTVKS1Q2
NE19e34oNHhtUEk7M25JKzA9Kl54ZjF1c1g1PjxWbVN7MVc5Pk5AQAp6cHw9WE8hTHNOMVJ3aEAx
b1A8QU1GNTlHdnZNfiRxVX5+c0lhUSl7dy15dUpFY1V9KUE8fk9UbSN4PiVXZG5VdzEKemhjcnN1
NTlAKzFTbl89S2QlbHk5Xl5FbCs+UmllelRjZHFNWD1aT08kNXJpSVlwUXpBYnJVMjJANFJUUGRo
WWRYCnpFVXQ7YG9qK2ZOaG50JEowKiVsPkVLP08ybEdwaWtaN2Ewem13bU1MZWFsQnwyQ205fSNX
TSk8bCkoT2xpO1k8Sgp6d1FvU2FWZTRiazhIQW5LIWJqenlrdktWIWdHPjx+NkQ+Z18+SmkrI1dn
VDFKd1JGNSsqMTB2Kmp8SmJrbUVvfkAKemJRTiZsd3sjK21QO25LbnNmdkg0RG4zc01QeT1GcCtQ
P0lKcmN+aU09MlduXztmWFRLU0BCaHJGX2FwQTw5U1J3CnoyPDY9cUFzcyVVeElTTlUkKl4rNEx3
ZE13TXNtVlE8VW0tdHJUfHNCRV5sTDNxcWVFaGZMKD9Dc3RqfVl2MCVZYgp6Q0pNS0UpMVZ3dCEo
TTB6ZyVhbUNFOUFPUm5XLSs0UCF8eD9VdmQ7QmErMUJoTiV3O0s+Y1VseV47P2BzN0dRb0MKeitk
M3xwJl5TT2g2fkopVDZYejx8SitSMEJmZFgxYyRwWEVGUnBWWkM8LUp6SCFhNF4kMEg0QzV5I2lZ
R3ZMb2QqCnoqLT9KP01ESHBtJUpsKUZ1U3B+Y1hjYW5vV0BwPVlzIT9qd1hxKjBOWU0mMEEzKWx+
fENRSktgeyVKN34mX2AzYQp6ZD1aSklrPkwmQCt+azFPU1FXNlF7MWJkNlp+RnUyKm55IUJMOFY5
JDRvT01mMj9DbnFiTVo3fEpocnZFUHZnbUYKekp7RiU/ZWxMNWptZj15bTYla3sqS2Z0M0kpUFo5
OF5ZOHteRTFCU0haeyZTanhrNzB9MTFGLWp1WWxCUXgtaWVICnpaQFJHREh6P0c5UUZnWio0LUFM
JlAzeXYkLXFYJGM4Ri1kWXV9Ql56Uz0jKmo0aj5yIyZMclE+KyRLdkdJKEZKeAp6YUVOUXVEOUkh
JXpOZmpzKERjRmFPJEZVZT1XPjA2YE5wMl47flQ/a04yNThtMX14Zjg1Xk9leCpHY1MlYWsjZkAK
ekB1fXk5djV8JVF6KEwjfCROcDkhRX5qOEpfKTE1VWZkUCMxVyV+Nk9OI3ZEcDhyeCMleDhxQHk3
JW48KiEkJUBsCnpgNz43YFJUK2BXLWNuekdAblc/OS0tIU55fEU+SjVMdFYzWSl6c3tmOyNfWSEp
T29zJXxBfTF0Rk1nJWxgfishZQp6a2R0PCkhTHpCJj8kckh3M3F3Zkx7ckhFX1owdVQ+eEw9aU5a
WjdIQ0d7bFV9XzVOaGFNZmROPEQ8UDFxRyFXSmMKemVmPm9EZDhUR1BVZU43T0hUR21UWTgjVyQt
cVppYXBIcD8pVTcwcHZ7dHJiMF8mRHcpaExSVjBodFpKZzh2P049CnpkVFRTdGE2djtmSXRoQmpI
aXsxayYlfD5YVHN4aFNBU1Q+dEx7dn5XOVAmPFZGNmkxNloteT5UdykxdGQmXztgKQp6Zm8+T2V2
NV5YKWcpamhNPzJjYD1QPTd7RE8oJV5fdVVJSkl0Mk4hbnNETUk8RSMxOFNxSlpWX250dE4qSSlr
dkIKemcmc0RqSFlPZnZ6ZEQtPnM8V3t7NlpWZWdfcF8jcUJ+bWAqbDFRZGFMbChnenVwYk55JDFm
UXhzRyFrNnUlb2tFCnolYnVzRnpTOX4qYjhoam8qdTtwVGRHe3pOYWo3M3UrbX1WQ3F4SEk1KFIh
PT07ZCEpJjdoZGkmZ3lRYG5CP3hxQwp6fDNoKFFfaFAyXkd1KHImJUM9cEVsbUx0YFFTYS01P15v
O3Q7fUh0M0tQfD8qZkElVzkwSyhMOHNwXkJ7QW95XjMKeiR7KmJvIz5pYl4qZDwqNzU/bVgqRjZq
I29OQS1vNXVJdms9ck1+YyMqcF8kVTFCb2RlbzdoQ3RQRnlFYXFuOGtPCno/UEd8JC1vT1hhUiQz
JiljalZSJChmNnRoeH5AdEkkQFB3PjU4Qyk0KWBaYzxVbmIyfStQSyZXKDhqM35wcDlSUAp6YTU3
bXFWQlcwPzNfKnghPmpQdzRZVlQqTHkrMGdFNmtRaVdkVGopQzk9LTAxIVV3N1NmejxSelVFMV4p
WlY7UCgKelNjUyVLNEI8LWQycVlEKS1Ad2B7ZjxwNjtpRWpSc0djaVQyWG8yajdkcWpefENAeipq
TnNvUXFTKlNVckktYmVfCnojekJ8NGAjdS1yeD9ZTmxJPipsPW9uc0psXnVgZ3RhYTkxWE8oUUVN
aEFSSV9CY3VYYnF9O0M3Ynt+X0FuJSl+dwp6ckJoLTN2O0tsdGl8O3wtUm99eVVPbG5fYHNscERO
enZaSDJmakE8KXJjTGZPbXstMjAmcGR7bmE/MzkyR2Z6T0wKenw3KWJyZlN3fitYXyg+Qis9R29y
djJubVAoZiZhWDdEWElNR30mK0lRdFk+VWlTSnAhOElXJXNGUUN2TjQyMjE8CnpnRGpJayRxOEg7
ezN1Wkg4aFR4Q2khXjduOzk1T1o1ZD9PRHh5SXp2IVVNZDgranBWR2w1e31gU0YwRSNRdT1SJgp6
TnZAaVhUSWh2elVvNF9pSyZsQEl8NTFOWlklMk0zUSVOXk5felgjK1AlUT0kSSozcjQ4b0x5fXFe
OEMlQStYWWEKejBrPzZSNVZycnFMZndYc3ArVS1WVGkoKT1lWi1mJTkpfjJ6bXV9LTk1eXItQHdR
Qnh0ST54flhPWHg5M093KD10Cno4U0VpN1A1MHY7a3RVUmg9RFRoQForVUhGVFU4Kio4XkBTaSs4
TWQ+TXB6RFBMbHRFUjAmaX18JEE3V15JejhXeQp6Ml97dncxcDJrbGhoP159TkIzaEJHPDskWmEh
Xlk0QHJ5dV5BRng+a1YtTUBVU2c2RTk8YEllQzhBZk9qZGpkaDUKejJrYHRuNkpgM0dnSG0oeHFI
WTZDUEV4ISs2YHFGM2Z9bDRDJCU/YzFaZiYoWjRfNz0waytmPmJDRlNGOWU0Z19UCnojV3Y0ezNg
bHtYZjwzRFU5VStOemhlPUdfWGM3fmIlKWNXcHFUY2hqOU9OJm96cmRFbWVAMGErTFZ1djVoUjhL
fgp6TUxBczEoWnUlR3lOYEYzTDYmPnRBU3luJl40bExyMC03NG5hOSNea2c+TXtSQExKVWw0NHJ8
VFNpYT03RCk5SjsKekEwXylKJCs8TzBiOCVlPWUyMClUMk8pRDlWSWYzQ0sqZSNQVFR5VXBXM2Fy
enNRZmx8Z1V+K0hfWkYmcGdoNk19Cnp5eEpPJVpwQ3pSMUx6STlhMD0pP2ZeKlNNPTUhRUZqUlZf
TzlCb14xQFlwIyo0U3tIOENNPzJfWmU8Y2dgb3Jlawp6NkomKGdCLXwpY2ZGdzJJZEkyUUc7bXZt
PjJVaj54MWFqMnE7MiQ5aW4pVj9tVjlHQjw8ME5ydzJHUzsxVSU1byoKekFvUXpDK0M5fXREX1cj
KT88RXlPKT0mOF88b2JUa2t+NEQwTmV0SFh3REQyISUySXo0dWk8e3dVV1Bgb145VlVBCnpORSU7
YG5oSmB+ITV2KkpOVF58NTktRDRjMmBvdiMtXkstIWJFTFo8Ul42cj5uZSMmM012Xi12I29xTmJ1
XiZmQQp6LWBWanN2RzBZV0pufjMlQmk8YiVCQSY1UUtCNHhlaEhwck09a05eJXM4eig7NWNhNlVT
LTQrVjEqekgpYXJnZUgKenRzJkRCOGt+TnwyTHxHYkt3dSRDSlJnfWBzMHBSKnBscjlMeTxnVXxs
fDRwfHklakotaCNfITdpV3RKWHFxZDRxCnpgTHhFK2ByQ3cmdHU9PCQ7RzZnU2BeTERXN2I3JFF0
SmJUSGEoX1dQIyhsQVVYcGA4PWMkWEZaemghYFgqMFQ0JQp6PHA2Z1JkTWJ2RT8rM1c9SG8jPjxw
IzBZaWE1cz1SezxnO2RuRkN6aHZ+TCpUSUNBYFY0c2ZIc0NVIVEhOE5NZD0Kek85bldpdD8mbCZ3
O2JRQHtxJFJtWjxPbj05cEMxUEF3LVJEUGh3T3sqLVBXd1FfJDd5a0JvMHZCa31xJE5GNjJQCnph
S09gc04qKnNndXNzczJQczZnVDFuP3c3TXJjVjdSXkI5SDVfP29ka1ApcU0odSYqYUdgNTwrUlJE
bm1fIWJFbgp6WGxvR0pQNTAmMlZKb3pFWT1JXyhja09ZWjNYZ0JvMHw4PyZQMjxkKy11RGgqXlMy
e3ZrMCpONmtMPUI/cD1vQ3kKem98aWg/SFp1aD9LcWRDIW5VR1UpdUxrJGxMNGVYbVdnT09nTnEj
fTspJXBjQiRVNWpxQWFqWjRUX3g/SWhlbChECnplcVhffjJgdU4zVWNufCElbndYPDE7a1c5NCo2
TG88bCtfJGVefWhqZ0d8dF8pK1hgd1lPcVpONnU8KF9mTldOIQp6YWBQNWYmQkJ8WFEmMWAhK3Qj
Vk4rc3l0OFg9YEppcXVtYWhFMGRAbztsO1pzIUhgczcqc21WV3V8MSNtZmYoZkIKekdYe14+UXo1
b3IxZUV9QDAlcUVWWCNXZ20tTHJWcDFQMHZtalp5M2xocFB8ajMmMkdJcD9sNFJ7WnhsVXJaNGBM
CnpweUFEK3ApaEZwMn1CKmhGM2ZTTno1SWJhPWsmT3YwYCE2b0ZZWWpRS3NGUk1SUjsybjlxRlhn
WjY+akd7X3Yycwp6Ril0Rm0mVWRII0k8TkBLPEJ4JHJRfWY1VithITd9PH5idGtZe0tiSipjZnRS
RThNWGVkNGpne1BnN3k0JlYpY1QKekYqN0A+TlQ9c3xjRyFqOHZJayhve24pJDVQeUV1OGlsb2Qj
d0NoU315fEgkWT8hfVVlNU4rNklJVDh0UFFEfU5fCno1dzEhIVVCIVJIQz1pcDJtey1INFVSbClo
Q31TJUBUfGlKaThZcnFNem56X1BxVyE0ZTBiZERya0I/JVBCT2Z+awp6ISpIKXNfZXwjY1BmJHBs
emVfPGNYNTkje3EyYktxZVEwSFAtfD1BbDdxbmZoJTN0SkZoQ1ZeWTV8OUNrZTt0VV4KenF4K1Nh
VmF3NnxYMm00MnskdSZGaiYkc1lNdyRRIUxZeSFIR3JoISt7QCV2NndGJVRIM1hiQSNuQD87TUt1
ezs0Cno7ZFZwX0F+cyg5VXVufkd1Kn5YZig+SCFvbzR5T2xNfXRQUVg2K2VrJnMpKUkoPVRoKUJv
aSNVUm1hMnA/YF9xMgp6LT8zR1hffjwqZj5RZkx1akgmZCopXzx7OHxMIVhPemZHJklpKkQ2RWJQ
Zkk7WVNmM2F4PlZwR3BtdlJZMCRQNzYKenpvdTxacHRnLUN0STtXKkw4bFBnSGJsWnpgUyliZlpi
bkUrUDVkflRfejFhKSh8UUl4bGhfIXM5OTM0ZW53NjdDCnpORDlXZXRGPzIrVHEoQm5IX3dDTj9H
VlFyZTNJUFlFZ3JlU3Fwe3FBUDcmNFFYfV9BP2QlPjE5KX50QntHPTRmVAp6SXp6KjtjTTgpVnIh
a1koZjNlcnNrRmozemJndSFxcCkyZV5nRGQ4KkE8cHJiVTQoIWRJfEU9TVpFciFwaElzSFQKemNz
ZDJRJDR6cik7aHM5VDx9QUpNX2JjbDF4YmRSOV9kKTFfMXomX2xyUDQ0RSsoSW0keGM4enxvOTV1
JiVWUDF+CnolTzFSZCQ/bTxaMjUwQm50aWtXUDR+UnsxOFUjeG8qUExCe0BpNyM/Jnk9PE0oS0lB
TzR5aD9sZnNrSHE5eHhWYAp6Kj9aUTA0KTx9RnhHUDJYYmpkdyUhdmpfJTBTdVNoTmtpOXlxJSk5
aFdYNlcydXglPGA5KEBgME5sI2kpKkAzdHkKeikyelFoRFBoa2pydClYUmFqakgxe3x3TWpJcz59
eXJNeExiO25PUytlU0RedjRPdW9zODlHK3NHPGxORjghbVV0CnpkQTgzREBmUFNvRDl8eWArbzlg
RlZvNjxvayF5QV5wMnYyTlkrOXdqRmBnJnxhPSFIMF87TGVkKj9iZTR7LX5LYgp6XkViWUhTOWdU
aG5mNzhFXiUlKFN7U1JiazV1JkdIIUNuX0Y3YURpZWJvYkpaSWM5Z2RsWjBIZ2dfOERzc0ExSUAK
emUrMX1zdnVmeUpxIWxrfW1TfWEpT29udlN7bWxuKWp2ekRraj5iI0V4cj94TU5WU1UpeCk4IUFR
VjU7RTN4UEJBCnpARjVESkd5OUJKcE02Rlk+cHFrZlVUN2RfNz9TUHQhXkllS21+YmktbXs9RUoz
UG99Y01IZmRabTR2VXEyQCpFYgp6YEdjWUIkcW1XWEp5V2xVS2JITmY0fEpDYT99NVFxR0B6X0R3
RTZ5dV5CaV58NzIlNVNkfT1VekxHVXskdXV3QU8KemZ6KHMjOG54Kj9pP0V8SCV3QjJ9UFFuVktH
NloybG1RXm9iLS17MFlIcytRSCYjSEBhQEBRKnhxfi1MSjJIWX52CnpkVDUrb0N7TzFAWGs8Yz1r
ejdYNkZvaHluem5kSXoyJlJYOzBGMFIhZHFtZ2E9djBkWjYyd0Y4MSVrdGhne2UydAp6Q19ndTRB
UmVTRFBTRj9Ybz9WYkt4UjdpTlE4dlN3JjJYI3AwZ0MmZkxQVDQ4QmY5MGpscFNPTUQ7Ml8lXldD
VUwKenZZVWBUZE9zMGI9eXMhd3R3UTR6djtrcnRvKz5tVShPP3NeXnR3MDwzVHh8LVlBWHVsX2Vj
JEh0YilAQmNUa3VtCno5dHImXkVOI0xKY292SFdAdHtETSZ9RFF2VnokfGByNFhBbD5KO0l4Sy13
Y2ZZN3srUWlfO3M8JFpAeH1ATlg0NAp6XkBtS0hhMj1mU1J0bSFOJnJIR0REUmFsYzZaa1pOaEgk
fHtOfkprI0g/aiN+QW19UShqVn5ob3sjbm5IamMoKGcKem1fZDk8dVl6Un57OFI3KG8+aWVJM3lF
SjZlMn5tViFZfG8ydldEe095VCZ5YHdrODQ3czFJaFgyfGh4JnhKQDk7CnojQ0whbVNPMldHUVVu
IWBCcl42fEpuOG9tZzV7NWhNZGVhRF9hUHhSO1JuY3hTV3U7Y3NhN2h6NnswMGgrPEAyMAp6QE5S
YHdDfGdSdGNhVyRGZCZpY0JoZjxDZlo9Oy18TXZ9eGxockskdzM9bWdwNj0oYFZMWnVPbmx7dT5M
Mm59Um4Kei0oZ2pIZlh0eHRRPmJPWi1uTT5VNFlKflY0WiNZWlBOdE1RLShATjNmV2F3e0hoZDVm
WVZqWj1TYE5IJXE1TXtMCnokXiswODNvNlBobjdSQ2QhcmprMUQ5PH1RbHAtUmMmMnBoSnFGekoj
MVd9SShnYlFKQExWKiNeYGg2NDxkbCRmWQp6bUopRnRPUUF+bTBqdzlkeER0ZU51eFR6OWp3Nis1
dit8Z1hBc0g3I2xsYCp7KF4xZGYqemkhJjJ0VUUkZXQwTjcKelUoTj0zdkxreFpIeXBeP0BLQWFl
SVh1KHxtRUxVLT94Syp7NUl9dV8lN0B5JkBHem82RlErYVNXdj51Nk1BLXVvCno1MGVUak1YUSFB
JSZaV35XaSFIS1czOSQ2NnJ6Q1hgRT5EeCpKPUY3Kk8ydVBwM311YFNpIzh7QGJDXjAyS2dhUAp6
R2JoZ2k+dm9JVWs0cUtEY0A+SmlBS3RwZ3htZV9ldGU4Iz10SnN3c2BXOXRHdkhiYD5sdnVjbGRf
M1l+OUNHQHYKeld7MTRlYEY5RkAyOE8wbEZmYFF8MHQzY0Z6ZGNoNyhCX3tkQWdQPnA0Vl5gN2U7
KWVub2xwV3BjUj1MXzkwZ2pUCnphRU44Xk5NUGh7U1VOWW5aUXswKEZZSGViclFsSkokY0JMeD5+
ZDVvbnJMX2NnJVorWjVQdys9RTVLfkZrQGZiWQp6UTFKWDYpV0ZhYVA7WUFxdmxSTWdrc1UtaVo9
O0I7IWx+UCtTUSNSQ0d8N09fMWB2K2lNb197JjRHVDBvaDcjfGEKejslOHF5S2FgQW5QQVpHPXN2
ZE5PIVhNeHREY2VwYSlKNDI9OGo+IXdfOTllaktWRDB6KENtVzJXRUdhTmN4all+CnpjUD1CV1pH
P3IoYFRXSm0jZUR1dTxXaGQkYiRsJVVrOFBzfV9AUyY2bGVkSXBOUHxJPT9GbkVGUEtQflp5K0kk
fAp6JGtQVD9zNW5kPzt4Pk9zOENMUH1WQ3loP3lKcShIZXUyZ15WfnA+YnVxeHMoIztlOWVEPik+
PFZRfEVVMjBxQn4KekdreXI8cDtVfGNfe0ZYRzI0YzdHVl82bUAhWnxsbmg3TWtVM3d6UUw7KCNi
I1JXbGJJRlJvN2Y5NXUtZyM3aSFyCnp4aWlRM1FXMEFtI0JCWHV0WTN5TkNnKVVOSSFDYk5rSGY+
fkh+Q14tcTthSEFFfXM7R29YI2l0MWR1TV9TUjV0ewp6cC1CPFBkRGJ2JT9XbSY9Vy1BPDVPNjlg
R0glLVV3NG9WfmpMTEhNQSZxeFNxI2tXbiZvPnlsVGM3bTI1RiZJUDEKekQkKylYeiQoRWJCVGR0
bmAxRFB5Nj1VJDBTS05OWjcoYl5CJkcqbVJnYVFHUCkjdHVNYllEWDVXQkpWSGZnbWcxCnptRmNw
OWM7bzw9RlpraGA7PV4yNiR3U3hOVSkxLX1nV3Bgd0QhKXB9PDNMdFgxKSlJUkZRRTRLY0pNZVZN
fEcjYwp6NEpZbj4yeEQ7VjNKdmo3JCRiPkw0fnVkKWRVMzNjMDJ0T2tzUD9CJkRefjVzJCpXYSg9
b1lhQjlGU1QtOHx1WFEKejZ0I2RpYTA3QzJgPlFhYzErV05KQnkwNVk2cm15Zjg4fjc/RDEhNEMt
KmAjX3dGTyFycHRnOSlxbTxINXE/RCEtCnpuby1XQElKKCU9NlYpdjR6MH50MSo/NVJnVjJfdmlX
M2Q+RVpYWXhaVVpzNmhgTyFkaFI0NkxDR287JSU3R3JkRAp6NldPdiZFQzZhRjU4OTxSTFJOQWNr
KCZyWVQ3czhte2l+SEBhRmh+UCl2NmY3YDhqb0hmIXNgUDFZO1FDT2R5O2sKenpVdnZ6NXs4byY4
YiokKm0zYU0+bm5lfWdwVm96KCh5d0lBQi0lX2ZsOHMjfjZ1dkEpZFV5PTNHfWUrTjFtXzg9Cnpw
OXdnblQ8b00zJHVARXpWa1NNRSY3emBOYyVBJUZgbk1mcWx9a2RiYzlQdlRudFcocHU/b0s+dnA1
RDVRZVhmJQp6a3NwamdDNThUM1dhTkF2fEV2ekM4NzRlNzRzUjhjZnNLOUszPyRfN1pWS2E1WjJw
V1NobWE7WFBtIXc8UjdZJlcKenRxd1RSJWtqUVl1dSkrYiM+clY+RFFhVzQtcmh6ST9FRnlqM1lM
ZnM2PlEhTzg3YThlQ14lZV45WVZuJTVYQ30+CnpXbW5Vaj1zT2o+VUZ9aV9NIXAzVXZyUU9sVmBL
TTVBfUNwP1AxSmclPGZsPHM2ZUlZe2NfOT1SREM3SnVzZE1NNAp6akB5SkNtMndLKEx6Q248Mzls
IUZ3LUo2cHR8K05rVUtRdlVRWk13a19UbkFyTkZ0NiFtRT07Sz9KZWRGQkY5LV4KekM/KTtZRzdM
WntPeVEzcFhPTCNDYjBuM1F1TTN6aCU8Sn0jZkpRVmRtZUZoQWhXKnAqSVBzbHZGdnFQcSE+KCU1
CnpvRFEtLT50KW1sbX5yWG1MbmxaVj81emUwZFUkUlk3QFQmbXlHZ2YhY3QxI247Qkp5VXwyRyZp
UjU8dDVaSj93MQp6SmwlI2JAbzkmRVVAaWtaeXR7UTlvYGNwZXRuXk45Wi0qYGhnIUBoWTk+fSgp
NWc/cWhAdWx9byshP14rVnxiVmMKelU7K0ZiUHpRTDloJkhlemAwLSlQTU5FezVZYGNNTWlRSEBk
MXIqdEtCaVZ2dj1OTU99WWBkT3BYJndsemwmeHNkCnpgUW0pQ3gqYnVoZ05DXzt0VDJKSDxETnNW
eFg+SiEzfWotU3JAKWpERjxsMX1nbj53SU5pWmN2T21WRSZHY3VpQAp6QDw9aHRvU3YkdStYKld7
b0pwKT5SZ20jXktAbCk4Y2Y3IVVLfUR6ZU81WmYwOVAzQEBQMWooJjgkYi1meEdmNnsKejNeKStL
M3xgMEhCM31DbCluajI4Qyp3R28qTEpAJWRYK0lXMVZXZVROP15uaEVfanFmbngwdHdmLWVgYkds
RHMwCnokNTE1S0RuTWNpQyg4NkYrcEVUTWlTVFNxdiNiYzheTm5uY0laPEhkN05DYWtRMXRsWVNT
YkROZGhrYG1raDNWewp6XztJWFNGbTlOOWRodTliMipOe3khcE9wX1M8Wi1BUHxSYjV7JDxPalFo
fihBR3B8eUM2aVBuKUpxb1dHRWppVnsKenpaMFZCLUJVP2t7YlcqPHA/LXF0RVk/TFNFfHVecUc+
YiNTRzAlI0BWP1hgPSRCLUA7UzV6ODRofEVXMXY5Ul5YCnpgMEs+QUVpTSZvQXo8eUROTX1aTjRU
ViVrak1ubEt4O3coaU1vMTQhVDhCdDRoR2d4PTR1YkVqWm9fNmModmcxOwp6PUpPeUpyVkJiazsx
ZHY4WipjI1JVeGxaYGN5S1Urb1FyYF9EX2x2VEdreDVlI1FJPGFlPn1VYSpFNW1kS2Z8b1IKelF6
dGcxemE8dG4/JDFJYV9fQUpxJWxZZ0pjTVhiaTRhSF8oWCFzbHRHNUlZV1Y0PXw5SWtBR0NiejQr
RW1YP2lQCnpCd0RVdzhjK1NSb0BQfmQ4eH1yUE5rfVRIUEc1dnxjXnB2RGllTm04MFlQQW9OYlM9
SV4hTzJ0cDU4UFUyRzVVUwp6MCNhNjJhSCU+cG1gQm5mYDlsJUx7bDklMDhqYFo3dH50ZDk5OURp
ck43QWxRdHskPj54NnxUUiRiMXZRbHxxMnYKekxJfVJRQEQ+WT0mclAhbXBSYzBvRX1kSD5kYFlf
MjcpbGhTRkt+a2F4P24rMVVfZFY9dFlKa3NFTm59V3JUfTNoCno+ND96aGIyRmBjRE1hSXlwQWti
e1hlIzckWFRvazhWdytNWjFldntGNyQpYXYyQXxrRV9oKUxWU1EyeThVJjxSagp6M2BwNUNOWkk0
Vz5fSjIlNGc5KzdnMHQmQiNfanx3dzctazFAfiZMSCFuPlJ3TiRKMzw5MzFGST8+UHs9VXA4ZnIK
ekB4fWFVajUhcVpDbkl5ZjR4P3RxS0BndyllVyVHJFpJLVJvQGJlfTdvRUdMSCpIIy1fc2VFYFh3
QmI/fEZRJVhxCnpyPlJNZz03LVhWalVAeEVOKCM1cEl6PmMqbCF3MChpZF5BZi1ZT1AkQjgwQkZE
ZFFGMWV6WkIwaUNxaWdFQjVjMwp6K2FpcFpmWFpsazZ2aEBvJE1nQEE5JjIkYyR8UzM7YiM2KkJ0
JWAmQVQ3X1JCQj54KE9nZVNeNVJFO1ljX0cpVm8Kekh3Qjc+UUskeXQpZUt5JlQjfSo9SlZmRUYt
fWUrJE9nX1JwQFFGREhaRyFjK0goO2RVTF5raD5IY017O0tmfjtCCnowZ0xab0JhaSUqYGxocmBo
VFhvRm9paDxqX3ZzZ3MoTWx2IUFSKzR6N15RSmJLSD9sRzFzYD52TnAkTWpMX1liMAp6SjRzVyRg
IUFUZHVvdyVKOFpoP2U4Z2pBISM8dzd4IShGKXMpeWA+U0Z5eUtIZHlARWIqfmlAcHtHUCZ7R15C
JCEKemIrR351KCZRU19rQjhvN3oxcmxUKXI4QS1vT2RkfSg3P0MmX3cwZmcyOFBeeThyeFAjMSRt
Py03NzBoOEwqPTQ+Cnoja0otZHNsQjdFVkQhaX1APF5sUEROdUB5TSMmckhPVDBELV9kc3M0ZjQz
VVo8SzNRS3hSZlNRUWhuRj5GVSlMRQp6PCViZ1NeJGwpQzwzelp2eG1yeFI5Mlc2bztJVUw2KChu
dVE9fHtyM2RofTEtM3IpOVZXQUZPTlU4ZSVLWW5kI3wKenNKJXA1ckRMMDdnVjtnal4qcUBRU2M4
bj47bFdxZEc4cXNxTWYjZ1ghamVuelNZNkA1Q1JYLTdFdylDLWY8NFdECnpHMjB5PHdCfm0wUm5k
Yl5jcnQ1T0NFXmRNYk5xWU57QlZxVDRQUzxhcy1eXypmR3N3ZTh+UkpnaWQ9fDJiO3RQNgp6I1dq
JCkwPUNqU3IqNj19IVh3U0FqOCg1ay0hS1Q2cHBUUXFGazFTQmBhd156aChVUTNgSCshalJxUSNY
UjI+ZWcKej1qfVA2Tl5qa0JMWWR3Z1JSOGVCZWtkeHtLX210dkdzKyZOK254UiUxJGEmTkZeQERP
UDBCdlRIc1ooUE12R0UrCnpLUnJoZjhWTmhlY2B6XyhRcGVqPDhpbnFzPGN5dylWbnRnUDx1Qm1u
MXViTmtgTk8kdUBUTz1wcUZsPV4lc1d0RAp6O0RjdV44fF9QQk5uJT05NWhwWV8oaipKIVd7fSpI
bXxHSGRQdm14fj5TUXxERmVmeGNgQ19sQ2h3MW5oYXlUNkgKelF7OUtnY2hsSnQ9TmttTiEtckZ0
PGg3JnlwTiV3fExqODB2PStuUDJvQlM4Rll4PzteVEwxMnx4YkNqV0tIZDFiCnp8TVQ0N0puJDla
Q31fODhQbWVOYVhIXjt0Tn5LWWU3dTJyOUBnZCQ1UDU7fVQ1MHA/JnMpTzFldE0+MihOaDxYdAp6
dFNXRmpZeVh9VHtjdVlRNyh1bHVYZ0N5OUh7dG5GUXF7WTBqWlU+IXdNUykxUj5lP0xMem5iNzhw
RlFwPFNzVlIKelpVKChUMmtgZj9wX3FFb2kxak9hXiNkX080K2J1RllqLWdOKmc0MTJFUUAhPXo/
SU84PD5VZEg4Y2BwQHQwLUBiCnpQbmZNcio2JUNFKEM2SFl4UDt3d0khc3F0eW1nU05QcGZ1RnBM
YlgyVWNrR3BIRlJ6Ym1sRTl6M2wpVnpuUGtLYgp6d09wKWQ3ZlF5ZCZBRjxYOFEjRyYpNGM8NiV2
PmJVbkkzcj8xI2M/SVhjTFhUZCpCVVhSX3Ywb3JkVGtKcUtpN3UKenJ4NXVIMG40O3FLeDBiQzA2
UVlHSW8qU0YxdHVfbllfVjJRJX1wdWg0YFRFUjtfantDelE5bntGJGQ3NC14cSNOCnpEQ2hYciRN
flV9JGg/S2o9VjVNZE1MO2UhczZ5c1lCJUhfRWkwREcqJiFzOVk2blp9bmhxcUJFdW52fjBfTTI0
VAp6eyNicWh4bk54VXtESSlAc3khY3xuV0x1SUtsWipUPmdfREdtQVYmcEwrJlFScGlDREIkNEBP
MFVaSkhlLWtvKDkKejs2Kyk7cCVeMiUmZXB2RWBEPy11JHZEeGFEJllyRWRKQmNTVjJBaihrJT5+
IThiaEplcGNjfjEhKSVLIXJKdF9mCnpfYXd9MHdiUCEzMGZeJjc4bTwkfjFId0Nlb3UkSHRXVU55
dWFkT0ExM1ljVCVoTG9hdkhhMkQ8KjBWVWhDe15NKAp6Vl9fYExFXkBKVEV6ME9aIXZjd1pDPXwx
Yzs7am5VR19Fal53MWdCI2VsKk9fZEA/S1pWM0R3WD8qajt+TkVtPjkKekllT2s2SX1pJjhSemRj
VmVBd3JfVjswZSkhbz85cFlPOWdEP0YlcjhgRGMtZU5eZ3hKJkNFZUxUbnFtcC15U3xlCnpCTF8o
cndoNH1UdFZuJH5oJVpzIUhCZVl8VHt6cztxKDw1bC1XWl8oaHJoeTFTb3Q/R0Q8S25sektLPlZw
dEpFVwp6ZyhNYHdLS21pRV92d1VxXjYpNW14Q2opUnByY3FzV089fE0hOT57amZgQl5aUXB5JmF4
cHEqSXdFcS19P3Bac0gKem43VV9nUzlpNC15fTUqfTJzZEUmYFM5JkJ4LT5reF95KVlTTDNwXkJm
P0BKaklwRSkzaiVmbWxjWTJxXzAyK294Cno2YElneD1Ab3NZYmhWaGdCZkRBXnpTdTZ5Unw/PFl1
MnY8fUQmPldneE1lTDR5RmB6YzhFfT5jNDxKbF4kJnw9TQp6WEFJVW4mY3soMSZVekBxXkIrLUN3
T35TclRSKERwaVFKd2Z3P2AkblI9dX48fDYjdjs/fF4qb3V6Yz9yb1VENygKekxLRSNNOG4jaVlX
eUp4cWw4byYld0RYWUsmRl9hUHZgKWViSFNCbHxWV01aT2E4OU9aKzk7WXM2d1Ahb25vek1FCnpo
YW4kRkVyPXNJR0Axbm9kSylxKj9HIylsfEJleyRefkB6Pys7eCZkSiVxJkhQTkFOclB6NEowTCRE
PHZWO0o+Vgp6MUhmX3Q/fDxPSlBlQF5FaisrRE5EP01WdjBNezRZaEJLTTRxMnY3SXtIRnRqazBI
UUJZQmpWWk82R1c5bERENkAKekN7fHsqYnlAVUVafHdTNG5+PXxLdFBNfDdgbVJOVjNKMklPYiZw
LXhqQTM9TDZ9UU9ARV5IX1o1NWtCYFVFVFoxCnozc1UrenJGNzcycV9sX1NVcmVlMGxZUkBtMH5V
R3s3SjhGdWcqUTVzVygpZj9WZDY+QWdsMDxtUCFAan0jMFlGZAp6Km4/cnRBPis7QDFPfnhEaUI1
ViorPDgzKEpxbjYmNEJTJnVnQEZFfjdpK3FnQE54LW4wXnZPKTt6ZD0hYUhAYiYKenA7USl5bU82
JjBnTjgrfmprZWlVZkl3SSFUI0glTnhyRDtDUU1rOEA7Zmtmey0/d3xtNHZhYD5uOElyOC1rQF59
Cno4Xjw3bHRsS0p1KXpIJXN3Qy03M3RtLWhrbENYc35Gb1prY3ohdys7bmBrPmlDP1pveU4/OzNa
Yz84T2k9JF5ldAp6RXh1MDRYSkxfUCozIVhFY1dXbE9USGVCPSh8QmswVz9UUzE2M200dGw7Ni1r
ZCUkdUs1Qj1pazA8NylfMUdpdTsKemQ1fHdpIyhVWGh0az1VPjZ9VVR6RkYxJmA+fDVZQEFJPWJ0
MWEzOX1md3FFaE1ZaUF8Q3w1a0Z6ezB0Q0pSRGswCnokO2x4VF9RP15MRj52en5oTU4rd1A2SUJU
XlcrJHI2Vy07PEUxQyFRbj1GTDdmNmlQKkRIOyFPe0NrUURnfG14VAp6alkkbmw7Zj8ycXZOa3FE
PjhyOHtSV3ZjPF9gaElFY3FPUXhEZEJudU9QZG1RPnpOSWI0O3ZnWiFBNENzbE1xa1MKenM9MmZ+
VUlPfkEyeVp0Y0RUT0JOYD9iPm5pV042eygpPmI8KWZKRTkkPE5yPkoqQ1U/bWNvbHkwMVRXaihQ
X1p8Cno+OHpwcHRmMmIqKEZ2QTFlbjFgdVlnfT54bFZYUjQzO1VBTClGfjV8Z1p8d3A8aDNZZGEk
QDl1TkgyXzdCQVdHXwp6VV9gXml3VEhrXjNQSEhuaGBRV0ZtNWRpTkEpeWIrITVnX3FZQHAtLVVW
Kl4re0VoUlU0LXs8SllYYXZePD9gKzkKemMkP1RxX31CYjwpUCpJYl85QzBMSUsweTY7PShJPyF6
K19mRjUjN2lASmZBbnI4Y30kNkpEdGZQWkhLS2Elbis/Cno3PTdLcDJpKV5Nak9fM29hUDt5b0Al
M3VxKyUtdGRMcjRwNGBvOylWPSo+O3twenZhWDx8MXJkbWB6fjRyejF6SQp6RjZzOyhaUD0zJV84
N3cralRObDshWX4jfldgeXFiP3xUWW9oRkFwUGpwVjFXPCR9JFZyOyZUP21qbngqM2dDZy0KemBE
KjJrZHRrQVA2azFgdERnMmBoWCVNZm1gfVpCKShJSXZoYlgjRnc1JW1zSyR4ZmA/b05LNWBKWDlx
WWo8RzVjCnpZWGI4UnU3c2cxU1BJIX1GNHNkNj5md0dJS2FtO3JLPX1sM1F8MG1pJGAobk1CNHE+
dyVrX2pWXktoaiUxO1lMTAp6OD5wXj1IcTd+WDt8cyZ9WDt2KEkqcFF8VkZzSj9JeG0/cGQ3UzIw
fF9zcW51VVpWM05ySUR2SmBZRFplRl55ZmgKellOZEMwU0ZUcCtIR3B5JFp3KXUzbTQtYmdWVzFl
PWV6UyMob1hkZmh1P05hfTAqeitfekR9V1I2bXEhKFh+eHswCno9b31sMTsyKT5wQDF4KiotZSpO
MU9hcWN3ZmtGbXBoWGw1ZTJpfVpFKW15b296WSNTe3NoZGpQfDQ4MVNCPTAqIwp6QDdiTy00NH43
PD9HMTghaFRJK3otSDdwfDA1aVEra05ZT2pScStQTUp1Y01TMWFgS01TTH5BKU45Rj11KmFzb3IK
enUyfHNfb2FrV208OyF+YiM8UlN5NlYxJG12OEk8VigoKUBmey1sKklTdz9EYEdFOD9pJjF1O2RF
bUFURCVRRUxfCnpPM0J8VEJ9MWY/KnY0bTxYeUFNO0lVODwqYX1QUDZKPDglQClzV34rQ0NBQytJ
MEIwQmpfNjREZDJubVNKZDtGawp6bCgzR2Q+NilXeShyd0htMTYoYDFhPEZgM2NmXkRGTWRGUyhZ
NlVNKzh+OFg/S35mOyFnbzshMXZyKFc9V1AwTm0KelN5TV8+Jj1ZI0V2Q0ZKZ2MheSljciNqdTVQ
Z3tzKmlDUkojdl9CNkcycE5UTCF3YXheQjIlfkY4VHVOJSpMOWhiCnpedktULUQ5TmBgbEJaTFdR
Xlhgb0Elc2olPXV2U0c1e2AjKG1KdHBvOyFwcl57MyRzO05SREB0PEEtZng7Ylk0bAp6LTFJJFlY
OWkmQCk7cEw/TEVUPURgJjhoSENmbCZETjA9PEcxIXkwJHBlTVZhKDx7RktXfmFCVUNfNzhRVH09
NW4KemkmUF4qPG0xPVNAaXVqfiY0QVFETHleQm9rdn5rNFNCYTZjTktlYDFOUWNTTXdQNXhgVjJE
bzJBTm05fmRRaylaCnopen16S2JSTU1PLWxnRjdRKmVuPVVORzt8PzQkfDFGI3o+WXZKNSFlaD9L
SEV2PX1yOHY7Vl88N0RGZnhCfE9aSQp6NE1raVFHNl9GfVozSjV6TzMlS0JPMV82OD4hISN+UC1N
UyprOW4wdHN0YGtCbEpaaGVnRFVUKyVYPV5pYUtRIWcKenFeRlZLa35ZbUFWOGVBYCtPNEhZNz9M
XzUjWX5lPHlUQi1HJT1MPlVzWmxNfEcwMC0zNShsTCk9JDx2O3JzYF9DCnp1PEFkaGEzfWp1c2RQ
V01mSXwxJEBVQUNxaFAxeTxpYV88aXtQSl5ePmdgc0hSYUxEeWdCNj8mdiVeanJUQXlSJQp6WWVD
Tyo8UjwrNTdUUDgqeUExPHdSalgrKkxpaTFFZ2JUeU1WVEBXdEc8MWdhZH0kaUduSipeJF9EcnU5
MH13ZFkKemBBSFome3NBVjxlJkRtdCZQMmlPMHRNbjZaYkhGYnE9SC1kRS1OQGIwbXVQSmF7VTk/
T2NzfWhPT3FGZT1DSzYhCnpAJkBFaCY4c209X2gxSDU7WThna0psVVUzbFBJSythbVEkYzF7eWlo
Ki1sfHNRckowQWdyUVF7JDNZPFZocy1ENAp6IyNiKiFjRHUyQGtwfSE5IVYoUVV2ZzlHVHVwWkhs
U0YhMCtCKmlleVc0MH4+K2x3WU40eDsjSnkkNypfKlAtaCsKelhmWjVuIVZQTlMzd0V1e2ZhSCl7
b1dJM0RFSFpDSyZKeDZYM04mdilgfnl7aG1SfTc5VFckSjBITEd6Z2YzcEAzCnoqOF5ld0ckTzNv
SXBKXitoKGg4bmpMc3ooZCheU3NkTnh9THVZYmktanV4PGZJP2VnTWg1UitoWWFWMSs7JmkxcQp6
VCgxcGhwJUJBdjhoJGFXMyZuRWtkP156MSZmNkhgdjZEYjIkOWkjSTZCNXdqcEBwcnVZPHJqdWRS
cERIeDlhZ0EKei0tYjxPSmNDQ05yPWx6Ul9iYnVsclVwdG5wdTteI3wyWjdhV2RrRmU1P3BvO2tL
U0d8YWlgQVhpQ1RRYG1kcz5GCnoxKXlKbGlXMlJPWCYqO0hZTnJNWUtKeEVadiU3ajkzQXxWWGNv
KWp3Q34mJEJ2QjA/K2ZydDBwU25mWF49I0ZRbAp6TXF4RyM0ZzImJlplVnEoIWZRWnpZLWlzZjxS
X3ZHI3JYfT1RM25heFdHP0JJcmFZUmp3MUs9ZCo0PjFGYnYjTmYKenVyZjI/Skhne1FyYzV6QiFI
JHo7RyM5S1J3OERhM3U+d2N9M3woVGo7KStYJCU5an1Tb2VsZHdWbVpOfUJNNFNECnpzVHFWPDZN
KWF3JnRMSGE3PlBQdj42XnArJXchZCY3SXJLfGw4KFR6U1NDVnlCX2d5fUJ0azF1aGFmXnJUYEBT
cwp6cyQmKEojMyYteFZfRHlZYmdWTTt6TyV3N3BYMHZ0WXZgWW1sRkBEV0Q7WV9HOVU9aC09fXtW
R1EyVEt+eXQwO3UKek87fk45Rm97PUItQ200LWZCOSV8X0JwWkBjKGYyMjRadGJAa3l0WldFbWs4
O29ZaTY4bX03d1Zqa19CbWdwXnQ8CnprPmUwbWlsYW08M2lNZFZGR0E8WTF9Y15rSHolUk87ZXQh
NCRuJXRgP0dLXldjaWJ1V1hDP3Q+MmxlTUkpU29TWAp6cl92X1VmRjZiPEt7dT57TXZ0OUdjYktw
YEIlK3teQm4pQnVSNTBUKjA0Ny1fV3s3MDBnYEVHT0BMcl93ekk9Oz8Kej1mNVk3cmpMPjI3QHFe
aiYmY3RKPXFRcWlxIzdfXzs9ITVaPzBsblYxUzUmayRWVTxSN3p7PURqcChCcjk2PXpzCnoyN343
VjNvOWNMITcxPUxjMjJUZ19pUjNCS35HdktFa2NFWm9nIWhXIUNYJi08flc/R1AoO2FgRmNDOHBZ
M1VHQQp6NyViVT8wOE5EYldpJm5RKTZnTVc1fEtmVG5vdEh0Q2RoVGMzZiF5WUlldGpqOThpdX1Z
TlVrbVdFPUojZHxDe2oKejd7QyF9YSNqfk1ZcVFHP28+eChaWjJhQEA2SWZfaXZ1VjNidGtDe1V4
bS1gVlR1aXkjZU9OM3NsSjNET3s4bDRZCnpOTjdOfXErcG09WENKI084OE5aZDRTRkVhe0s3S1Vs
QDA5ezZiIyVHb3U1KldUUGVzKjZ5eXBxTmQ2ZHQwbDdGPgp6TWU8PWZLfWdZRVg+VTFaNCN3d3kz
ckp4RkRrXkNKZF9QQ05lQCh0OGlvVihXSXVRQDA7KXZvcG1WI3RGSGphK1MKem12czh+WUt6MUhM
M297fCNuYD9ScSplTTZ6b2s8ZmBXMmR8PyU1bllneVVkRDFDZDVqdV9uXzYwWThkS2l1NUxtCnp3
MmRPJk9PZnQ2Izdjb2hZOE5BMkNgQWYzUjM4TnE3M25RdnE/OEBxaE1OJHhvSVY9SEY7YTkmaU9a
QXttbjxjJgp6Tjg0VHhEeGFscV4jb087SHFoOT9QaTFZLUxGcVh+PXtaVTE4N0hQa2xCdipAOD43
WT1Ke1MyQkt5NllnUUVuZGMKekdIZWRLb0YqXmJJQjJFYldEJlkram9DKlVgbFROY01QbDM0RGh2
ckE9OXFrakUpeHEyYT9sRnxsNTUmMUM+bFdpCnpwQHglZjtpK0l2V2xoTnQhaVk8REQwN0AoNiR3
d1ZzVk55a2pYJjM5SCtGYl9FMCsjc3h0QzRsRyhaY3A3QG0+VQp6YmViSCpXeUs8ezVzZXtAemc1
JVRpIXpHdEB3aWZuNiMoNW09cllIc2s8SGdBbzNrbUtNa3M8XyVCQzVAJX4meksKelBWUDxRWlh4
JjFnSkxuKihCXnZpK2NmKz1NcUhncWJpUGUhVEx8cmtnIVp6QyM+OE4yQVRNQT1adllxN0VucDRw
Cno/dl5Sdy1pREQoKUptZkJJQyp9TkpwWVY1WjxnWSlebUtuZCl9cWdEKU8hLTBDa1VzRmFQfHw5
UV5HMGYoZng2Vgp6Pkk7ZzxpeiRhVDMyMT87MlVTdWtKKHJPak49KG1eb3Y/QyVMa15wV2wwa18z
RWo8djI/S180dFRITHAlJDs5eVUKeipMMGNIKURuaV4/OERoaFFKPHUhS21ENm4xWkopT2d3QHw7
MT9qUnNsO14oKCg8a1g+dnJOYjFgbn5GSHt5bHlLCnpNemtgMHh+Q2Bvd3FFfXw1Rk1XQW9LRTRU
bkd2MX1pdHZhVy1xfUZFekV8KTNgI3pFZythNDB8I3Q1NWIqZU19Iwp6O0J6MWU0U2h5Q21YVn1n
SWNsVFZoYmdQZXEjbElpdUE8Oz9ye0VgMkBVeH1oKE1hUWZPM1JvdmdiXlNOMlZvPmoKejcoYEAl
ZzZfJjs3MmlsbWhZNHY1QSQ3a1l3U04oYiZvUXp6VjlKVjdjeFRYVHJhPTVrJXdBJGRFRFdCKW1e
MnEqCnp5aG1hRElYYTl2RGVkPXhQQF5XV1pZLVBvJj5vRXg1WDk9OVB+ayt3N1ozNmd0UWJ0PkQt
SV9zZktDSkBDYDFpTAp6O2BUd2ItWlJKT3k8PlM1XippTTM5ZzEpJU1LfSRMRmhgMVQyPUNTZWR9
a3I9R3oqXj47U1c+JVMpXkM1K3JYMG4KemNVbDwrcn5zNmEoen17RFltTUd8djttRlIxdWluZVhQ
TjR6SURTTk5SOGJ0cVVTfGFaSlQrekJwdDM9TlVNQnxtCnpkPUwkd09nbC09TD89dDkzUl4oSEdr
TWgqTiE2dXZ0cWh9P0FZTWhsPStudCN7SDFzPmhRI3R+d1M5eHA3fDFEZAp6ekNkdzROTzhLdklD
WHpxWXNfeCFefjheRDFTXlpTe1VrYSZ4WX1AVSl1Wm0tUHY7SXVrO1J9Z2dTfHtaaVlSNDUKel9r
T3glZmlmJVQ9Km5TKlJ6IWgrTlApalpmZSNQXjJhNjNaXzx+Z0otVmQ9Yzc+UEdSQzA/fS1EbVJx
JTY3bSpuCnpmd3hvUz9ke2paMjB8VnYyRFRSS0FXeyhkN3JaS2Q2QDxYUj1zJWVVVkgqRFBDTGM7
Y3ojYnghZmY2NmIwIUUzQwp6PyVxJGt1QyUxWShAUjdTRUAhPSFqbWB4RVFONmUmdD1zcktrUHM3
Y2lBTj9aOWFaI2x4ZmQ2Z0o5Tis5dHllWDYKenV3bSZ3Tn41MEFIfkArO1N4T19gbj5OeEdFe05J
ZWdLcF4lcWAlMGojakhFZnRrdkZPWUApJk5qUygyakEzPUtGCnojU2pgVUk/emJkaXo7TXBwRTUh
PlN4T1NGUDN5YUlqMCFLZFExd2wjakpWSk5jXytNKkh9JnY2RDI0RGxKZjZ+NAp6YE9tOS1jbCRy
ZF5JeXpFYWpmYEFFRGw2SEVtSGluT2pyJV9XQ1V6NS00QlFDeSQ7JWhebkR9KmFyRzIpUWZMfCgK
elpYNT9mN3hXQWBxZ0Z3ZDswUlV7SHokRn54JnZGZGdtSnJzLWslS0pWfVh1aVB6KWlqYGRpTHNW
X0UjZS1JIWgyCnpyN1VAO2ooWGIjQCNQRTxKbEtoLVQwYk00PktnPjJpNUFkJEtGK19WaHU/I3lN
SFczU2pXWkYmNDArPS1TOzljTQp6KHFqd29zKGFRZkpgeEJTcDZrc2QhO2A2Vm5WUUdjMXgmUnZ3
VjB7NUZtKHgyP19nPnJRPUxxJFZRTXs3eS1aIWoKeilIT19QVihKRV9aZXI/WXJmeTtDMTVBQzBz
U2gqdFFLbWt8KUYrdHdCdllTYT5lRWMhIVBNdU94fF54e24wa1B6Cnp1UUJ4P1F7UTZoNXZDcXg+
SXRUUCM4aVEpOVpjPEg+UkcxdEZ0d01kK3orVWYpSilZZFJtKVU4UXc+Wl9Wcm51fAp6alpBZWl3
VDd3bk8hWUUjNjtzelJ3VFk9NG43V0NubzArPFdzU2h5cUEqTWRlKUpMSmRfRjZifjJReGotKVpO
U3UKejlxe3wjfEVkeiR2Y1FEPXJZd1JRcXd6cGhyenw3MkdZQj5BPmBxZChkcjN8RUUyJG0ocCg+
dCNnVlpNdkxzY0Y0CnpKNT1TfEhxdlhzPSpsVWtlRilXJUNPe3E5KCstdDteYzFOe1N4XjtjRVRv
QEZGPj9EQGpBdG4+bUd5MD8kfjcjVQp6JX4waj5lQD5tZHJvNlYmWGlpVHpXKkUoTl57ZF8wJWJp
fjFyMExWQTh8VDs3eVFANzhTaTlAJSt+d1p0eD5eTHcKemFlQiEya2w8bF9CZm1yd0h9QEc2Un1Z
fXklPEZQRXh8JjU3NX5qUms7eC0+S2FtbndSeFRvR1RhbkJwYy14UnA/CnoweWN3Pl8+diNuTTNI
UyQ9MnktenkxbilGSFJZPShSRSUjaFBNVUN8YWRLd248Y1hRbkNyLSpWUFJnN3lkQ0NsRQp6JURw
I0NuUGp4QXN5Qyp7ZSZzTExJcWNXXyt0WV4lbUtrc1FaZVJWXjtPbFI/PnZVbWomO0lWJkA+aDtl
ey0palgKekFOT1B6e0EwSEs3NFpAIWZCa05mQHhKUjw0KTZjMz97fCY9ZDtJVDk7RDJIWGx6N1VR
Sjd5U0RKO3ZLSThwQHkpCnpsVHZUMmNoXi1fKkVxO2ZXdDRUeGpMUkkkdDgwems+SmBrelZSVEBx
bHVhSUVPPGhISzRNcys5blglSTBAbUFOZQp6QSN4KHcrJjBuY3R0cEcrP3M4WHE5byVTUj5aQSEt
UmZzayVITEVma0Z4S2R1bTNtezFrMUh5Kzhsamwyb1V0Qk8KektCTEZ1dTklZk50ITktbXdaaUx9
bHsmbyFjOC07XlFnODVhYWE/TjZEc0YtbG5penVRalprWlI7e2lyQHtqQWk8CnptQndZV1FZKCM+
dnI/PCNJNSE3dlk5KGhhQ2M4U2Y1cmVzZHdBQ0pDYiF8Zz1PPzQlbk9JYkY8Rns1Zm17ZnVKSQp6
ajBQdj9VZEUrKlc/JjlyJlBIZFEkQlQkUGFVOUR2OE0pO1NGTVhHLXR9UzJUTkVeI1ZhMkA1OTR0
RV5xc2pJbHQKejtwSj9MbUtJcWBZP2hxNGJCbmxUKXdQdmVNT3wmSnFyJUowdz1PTHhTeGBMUm9N
UzZxVDNvejw8RXxZbzRmTG9YCnpacWtISUUqMEN2LWczOGhoTEpeWHRNaj1sIzBwR0h0c0VRMlJr
O3pGYWFtcEVZTDNrbER8fEluTDJoWkhtXjEtQAp6WSZNJlNgQ2AlKDxEP3NBKyVSPjw0VT4ofDwo
fHU/aXJWXiYrMm5WRXdfJk56PEVTdnMjTUh1bW9PIzkpXkFmWlgKelM0T1NsRT87R1IlQFFRalRV
U0AoUzwpOUZNKiZwVmRMMz5RKn1vaSFfcklENyUwaXZiaUBmfWMqPGpeWlRqI0I9CnpsQmU2dE83
UjlgPTQzWUlXP2ZRPkd7SmZ0SEteRk11YGBUelRhTHg7dUIpdj5aPng7czdTPFZeQVQoK21aZXRa
MQp6VT1fODtJTTdCa3deSmpVVHdWVlNSaEQoKmpMYSpsakokYSFoXjtTckVLPE5nNlJVTlJaVD45
XzdCNGp+RGtgIz0KemlAQSZwKX1yZ2BpSTZlZ2s/T2dnK0pFX3FXITF9bGJ3MEZnWVZXZFpNaDNa
OCk7VD0yKkwjaVNIOHBqMjhPdipwCno8P2lMYTZePmYock8ycmotdnRAcngqYVFoKW91cjN6ZFQ0
XnQ9bXlpeDRnRmNaVT1nKmx2SWAmRzBMbUR2LW5ZKAp6bCE1QSs4cHJiVDhyZzN+MkY4Jn5RaFQr
eWpTP0QxYiU+ZntVQ3ZpZV49UGoxKWw/ZU05RT18N2hlbHQkKE96OV4KekwpWFRUTDh6PmdpPE9N
NlhaIzklNCk8IVMhO059Z1FDP2YmJGZYel53SDIhPUlCRXg9RmYpKyhJJTdxaGtHY3kyCnp5NCgr
OUM2e21UQT1kYVooNjY8WEReX3EkY1YpR0U+OVBxR0dtSCFCJH0xT0NGTFJmPlJ+dHZxR09rIXJT
eU9gJQp6TFBSdUhtMUNUKjxZWTVzX0RDKSEraUs0fGhxdTc3QjR5PURjbEQoWCRiJjwyc2MqUXtz
bU1YQ3FheHkzRXdARTUKeilKQV4kQ1khalVmVV5KdFFSKkI0VEI7ciZRckgoSzcpQ1Bwe2lyUl5Q
MG9veHBOcHRGaXQ/VWAlMnszU245V3NKCnpxU016ZSM5Kyo9VDE4ZTlEKGRTd1p+ZGY4amd2MW1Q
UCkzTSR5YytVWihFQUBpQSY2QiVnUXx0TE1TTnIrJk1Obgp6eWEpem5mUUdBTCRQVlYzYSp0PCV4
NHQ1YHJXfEFPYncrZFUoITNubyhtNlJjaSFEMEh2QH5DPnIrUnJVST5nZVkKelJwb0J1eFVtaTFA
P3x2K3RKZ2pEd3YwKC0jI3l0Qm5iQUhYQ0V+NUNGSjReX0paY0Q7I19PJiNNJCM4P3hAc2M1Cnol
ZWBPZ1FGZ2tqTjZnLW1NQHAxJiY2PlUjQlRpVEt4TzhjPyRBK3FkWl4hKChYJVhieyN6PFBtVVhq
cz1RelU8dgp6MXJ5MlRId0ZgbEVWPlpDZCRFXlNSPVQ0QEZxZ0JqdihufUJjI1JjUS05fCFqO0cw
JWtYUVZiSFN6fDsrWFJTaH4KenVOPSNiOWBtbng5MXxWKTxzQWopMSNDNWI2JGU7UktmKkdaK2pM
RDFPdGNtSi19bT0wbEQyZnxRb0l+cT1+KDdsCnpvPnkwUVhDJCRNM3JyRkg8citEVUhFaXVJPGBE
eVojaHUxUTRIJkk0ITtSKmdyNng5cFUren5sX291Vnh0Tmh8JQp6UGIxYWtLUEJ3SCM+P2ZYLTwh
V0xmJHZNO2B4NXZzbG1HO0Vhb2lta2k2a0s3fEphe04rJnxAcEQzJDclU2RCKHcKejcmPklnS3hJ
c1ZhQDUlSVk0bF5DbjMlRE5pMzZqNXk3QVg0JExxIWNWYVNNTnI3fWpST2lVWCRXU29SQD9aQjly
CnojQXtRQnopSnAmQTFDUylWdk5jbSQ/RGpGbDdrWjg+eW5hVWhzNE8zTHg0Q2JWdEB1Tno9Q1pi
aXMqYzhRWiFtYgp6UGVIT0BVK20waTk1PSkkeCV9JiZFeVY+XlpiQ3s1K3h3bEhtY3VPb1IwN3Js
ZmBEeStLTGM2LU0qeWIpe2w/flMKekJMTCQ3dmpPPTRKRD5gJThTcFVSY1l4O3J1S3x0JElzeGkm
SWIwJGo4JkN1JjJkb0MlM3dSanRkJSZ9Um1qR2BBCnpQNjJ1V2hJQn5EMkZ3TiYwYDNIQzJLKlpF
NmtzPnRaLTllPE5vYyZaZ20jMHRtQTYpXmU2PHk5YEM5OCt2Q1FHNwp6V3dwbXc7YmREQHc2VExs
NVoyI3k/JHc7Ti0wTmheSGJ6eCgjZFVRP3RqMVBqVUZmSn49cEdKaHY9IUFKNTNQblAKejlrdGIx
NzB0bjMzaGpPd3JRb3JzTDBETXpJJT47fVVVI3wyMzhhTnMzcCM0K2U5TjgyNzBmLTdJPy1yY2hV
TChtCnpHTn43RmJrc0lmVj9UZ2EmaztNZU1DPnpgUzV5I2pTVyNFJGhAZSFLZCZebjZCK0BhRzx3
ezNHYiVsZT1AcD5JQQp6PmIrUFRjPFpwUFVReVFvcVNFSV5pb0g+I0wyMzRZeDwqRXNGTyhaez04
eV9QRT9zJGImKml3NjgqOGRUd1BLSVEKemkyVlcxdklfZV9WcnE+SnN1UnhhdUpkPkAjTmRFaWQq
QFkpODFZbSV0RmVIXzxgTCExO1glZ0E+dFZ2dDNPMz00CnpeQ3ZEc2VuSX0kKFVSUkVvdzg3TEtE
TmRZc3tAO20qcGNGTHNjSS1tSEF0ejBsfCs0Y2d+TTNtc1BZPEZFd2FxYgp6bSRtPnI0IyVBd21a
eX4mYit0N2h1Z1NNKHdGbCtabXNVIS1obndUQnlBI2MjelBqR1E2O1EqOGx0aHVrZ0JgVn4Kek5M
ZD1uWWlRZVR3YjhLKGdAbEhMcU52NyM0NWVGTU50TXFubEMjMl5BUGcoMlFCVHglI1AldWAyTVBu
TGU3QkYpCnpVIS1rZ1NHNUslXiotLUpZLUhnaDZ9andMRHMoaD14bEpJSVktNyshWjI/REI/clAt
TVM2a2tJI1hoWVJ4akMjIQp6Tio8KmhrVj0kfDxaWVNIdnpvUSpAfkFkNUFJcF59QlI1eT5UUCNv
MT12SCRqd1JoSW0tQmx8a2FFMXxFdj48dDwKenBNcmp9cTNfR0FSQWcyJiViM1Y3ZzQwaEVwQk8o
Tk52WUgtNkxoZDByMGxPJDhrRVl4X0BpSH1DTyRyWEslNyFKCnpQJnFfNVJIQFdVPyN2TmFrR0dg
TmBmNiYlYSRGaSQlbFd0KHtLM0YrMj8+Z1gjMDMxNVQhS29TJl81RDAqfEZjPwp6MWw9JjVXX1V0
RXpsMD5SNygmVmJRcEJHPVBOJm1wO3R+Pks2QWJZSzZBfWdgWCMzb15ZQHJRfCVtMzFsM2kwbzkK
em0jZGxjdW9kITZlO2M/ZnwxUU59dWp1PEBScSFwOD1uI0lPPT0pUER6VEtiZi0kPHFXenhzIV5I
eGN0R0FSUkNzCnprTzd6Z208WSVPT2FlPj50ZG84ZHFSSzBFSWhVSEFJaUV8I2V8bHlDbXh9LU5P
ZEZTcXxNYml9RSoxYXZJTCNtdgp6bHlXWExoZjdeU0NNWTx1bjhUJjZDS0hzIUVMZXE3MV5USTxy
aGk8I2NFQ1dMZSRlMHtoTUBfR055Q1BaTkZGKXIKejhzcTNPKlFUVWljWVdIfWFwfmhUQ1FRdG5H
JnlVXjRMNDRtSGhvNisldnJOPEdMPGlAc0J9fjxjVUhVWnRYV1o4CnpTSElIakAla0Y+VERBSl8r
bUA4d3pWd2MtY2ZWJiU8SnhzaT53bjxpdTxfbT5aVkVLPm59YXw0QHNeKzVjbUQkcQp6e2A2LUx7
cm5lT0FBYVBRemp9MXJ1ZVUkO187M0U+aVFvUzJfZlApZXxOUVoofE5QVVJwWj8xOyYrZ2N7PiQm
SXUKemBvZkY1X3Z+JWlfdE81PjEyNGJ3PlQ5cFJAd2JDLTl5PEtpLWB7QGMkaCteZzlld31VQGU/
MU17UDNmWEtsejh5CnplayM9UT4xVXNKcDhuI0AqKU99Z2QoTkd8KDJHYWR4JkxiWmJMTj1tVDV7
KiomQSZOK0xCWWFCKjF7ck5GKXMxawp6dmlNZHB8NmxMXi15OzlabXZpezwrbnVQYnQ5MyoqeDlf
YVFhUypxX3l0SDdeTFE4UUAoUEdqc0VHZSlRJjQoTl4Kel5VfnReMXMzfDY3Y0UkalEhSHdXN2g1
ZnlxanFWRGprN0UpQT5GKD0oOU9maSl6YUp8RjFIOW9zJD1PfjNwZHdOCnohbSZgSTFEOFhMaXNY
dkdETUEpWVIwXlctcWwxKEVGNkFiMHZ1TGhUVVMpc2dxcFRlNlc1N1FFMC16bW0zSj9OKAp6M2l0
d1cySmpgSTMoeVVxVTdtQ0pVSTJVcmhARnpkPT5RYEVNIUBDMlloZ0RJRmN+bHRVOyEpdWxtTTBo
P2ZfSCoKem9QWmlZSi1gY0MxIXd7VTA2enZpMj4zYlJtd0Blbi12T1FtSlAmdllAQ00pejtCQ05y
Zk1iQUBmS0xGWTBHfFFBCnowQ1dNKTFMVTdWKjVMY3RXVUxuZV55fGQ7QkhgZ31eUVZ6ZGxxM0J6
eFVgZjglJj10MjszamYyRmlfMSVFdG87Vwp6KXsyUiNsQG49SCR7QkE9b3I3YTlkPV8mIzEpUX5q
RTJ5aWpFTUx0UGB5M3duKzh2ZChxT1JFS2IyRj00Y1F2YCMKeiVEcH19KF9vN2ZXX1RvRDxid2sp
MlE8UnJZYCQ5Vj1KSHd9Jk9XJFkkMSpxNTZxTEl3b0xta2wmS2dqNnRHU3pmCno9bWE8V1lGMllP
elVBMVA8IWxaUlV+RTBIMiNXYENVQ3wmfiV5bT9WOGlZekFBXjxsOUI/bTt8UCVzbioyajhIZwp6
OGFRfURRI1BZOHJsNmRyMTctbm8wMmFXX2ZRNWh9S3E9cmh6I1JZd2ZFOG0jTiZ9YVkwY2IkRUhs
JlFARzgkNjIKemg3M1NUMkszPFckdylDYWFMe0NNJn0xTVViand0bm5CUmdrRnBobS1ob0FKZUo5
TGpLTztHN35BalpWTDlDdXpMCno9fVpyNkM3cmNKQytTa280aTxHeUtZYmBjKUVTP0RWVkl+Pnp4
ZVdxQTVBZytALU94MlB5RkdmTjIqUEt8SU9kUgp6XlJIUjhfcHNeMj1KdXdTPWsyPXhpSlR1REpO
TCtpKEF3Vj5ucD1NfEBIaFlHKFAxQk0mclFfJio1QilFY3NafSYKejxGWipWbTFYbjR5emtibktR
bEhmaXwqSyQ+Zl4qO1ErVkEmZT0+MGRrNGI+S3RNeWhIWEJlP2Yzb2U3Jjw7TUN0CnoqaG90ZjUy
SHdsbHQqKiRSRnYwI0o1MHAoNnY4S1hVVj92REpkO1dDQkc8R3wld1ZWVk1nNlBgaHR+bjxfeFU+
Wgp6ZmtMa24/VCtCfF4rbmxWWFBBWjQqKDJnfl9ERSpReTtFYCpCT3xwKioyP144OFNAd0JhX09Y
R0VYLU5ScklWN3UKeiZGMjwheGo7Pmk9clVrfioyP1Q7b2ZIPCo5P154UkgwfTxzaXxFOE9RNSph
eGMpdk5tP1F5b3dwQ1BUeiphRnlDCno0Xjk9TXY/OFdNT1B8fTNaN2k1JHdpKDVSQXN4dzkqSChN
MCFNPWdSVnZmdGZeM3UmVjJnRVpAdFZZSSppI35rTwp6STI9YXdqP0Jwemo2YEokJmZ1WSY1bTY/
aldAYzNhRGU1O01qPkE5NC1SV0BHSSU9e2VQcno5IWhmYDgzbWF7cUgKelNxP2BCczVzaXNxVyFt
PVd3bXRiVFNNI0o8P2l3b1NkZH1xQ287eSEhN2gyciNLfnx1VW0pU29HTEoyNWlCWGBVCnpaVXdl
MkQjaTU2dDVSYkYrdk5CYm1+eHojZzt8ZSVrZzd8PHpCMW1jOzthSGM9NFJyXyNCVUs2clUqc2Fe
dVE4Kgp6c21GbU1eNXFTZyUkYlZHKHpvWWZeUCZzbW9LcmV+P21KZHpyXm1EdkFPJUZaakBsfmBj
VD5hPXpyOU5IdV5LPkUKejFMNlZUPnR7I0lnWVkhfk5XM2JmT2hCYGxvYmxWVE1lYikwS15vaGBm
Slh0MzBpRk9uMzN2K2RHfmhZRlVjZjdXCnp3KmM9MEpfMzlTSTFUc2BhMVFWbEttbG5QRkBYTW4w
ZjBlKHBAM240ayRfYWQxaSUhKTQ4VXhGOElUODkxWHY2eAp6MmU8JHBLbSp7SzxaRExaazEzUyRZ
WEkyKkpQeVVKMHtqZns3cjxNOUdrYChKU1NEYTBVPEg4WSRad2NHclJrTUUKei0oZzw8dUc4YmNY
T2I0RjNncD59VkdMUjJPdD9AeDdmPyl2YkpfM1ZQU2EmSmVNYjRMQEZBM1VebSVCPzd5c1BQCnpZ
blM7Nl9JfHd8aXQrSnBhRl4zem9GJTQxZ0VMd1ZkSlM2bDwhN0wyd0RDeXszRShCalQkS3NsdCtD
PjxJMWJAMgp6YklZNnpIO0hTMkYtY3RSS0o3QzF5UFcwVG57WURDekk0I2NkfGxsKHRANHN8V1Ba
RF8ocEZUfV85Z3lYZGE5YEsKenhAajFlNkdTbWJuPXUqQEtZe0diNHZpaEZEblJhRyh7fTsoP3Fy
dSRINCRCPDh+aFIodnNZREdpaSY3fGptb0xkCnp4emJae3I4Qm5oVUAzPnRobXdieERufF4jUz9S
cWhOeylMdWFoK2RVOEdSdjBCfm8wbDZwUzB6Oy1YN3laR345Ygp6NSFXa0lhSm0wMEYrX2R+aW9Z
K2BJcDlvP0Z+eCp1JSs4eThNUFd5WiFpRVckTGgjQCNgJi00emt5dVY3OW8peDMKenlURUZkUUle
JCNgZXdWb2ojVl81Z0w0VTZwRyRxVWNZI1J+e0ZJfXx7MWMyd0wlYWZTc1lSfmtKZHh8fT5jTCRG
CnpFZlF1IXh0cSN7bXtxPXhSY0NKVHE5UXBuUzN7cUJTI3dNaTglb0EoR184dkhwazN5QUR+eipl
OE5iZGk7e3FFPwp6T2YqJSpCbEp5Q1VCKk5kb2lnZWFYMyl3ckRJT04yOThpUUFYanpTJVJjYktB
KDhUKXBLWGI+NzlvQFlvPEcpYTEKem1vKEZ5cU4xRnxhdVRBN0NkY2d0eUh2VFFNdlYxYU1eb3Ym
Qi0wTFdCe0xnbSZONn5xYkFATz84VFQyYFJFZUw4CnpsfGlMZkVIZ3JIeEdYND9rOWszayY2WENH
JTFhOUhZQ0o/JFVLKmg7VmNlMTtxN2ZvdmNCUilWUzd6R1dWc21MTwp6XzUwR0MxIzNoQGspO0Bo
TkVIRUZfN3o9KW07JGFHNnxPe3VSfV5WSV4+Xjkjd2B1RTxlMUE+c1cyeEk/OG5ffjkKei14UFJN
bUt2X2BfXmxlcUgtIz0mQ3NwIXkkPzliXzghNllYWW93UFg2Y3MxT3lEVCFuajJrentZK21LMCk2
TVVICnotPFFEdSF6Rk5zblJeVHs1ZlhJdV58VHhJe3FLS00zMFJ4M1IqYC1PZXhUeEp1Mipxc197
elYoTCs9RFU1b1B4UQp6XmdFKT1HQT9+UFYxRks8QHZGRTV6eSFjZEtyV3lOUHprc2p1bz5fZVU+
RCMzOzBRbmZvQ29NUHNKSWtCQ1NWU3IKejcqR1hoMEJpI00wYE41ODRadWYkRjk2RG9EbFEzLTA+
fWlJMDlKcSN1bk89YXohUUxkZlZUbEIwaU9ZND99YjBXCnpJS1R8UjA+Q1lSV3FeOVhURUgmPXpY
Uis1OH5fe3h7Qk8lXjlyZyU0MFBJXmRWYjcqJTNaT3AjYCkqQ3hvTXs+ZQp6ITJWNnNVO3dzSm8z
TUEmbG5CNWNQWk8yWmY3U21mbD0oJH5fSj9CR1V2QUV+NmZMd1l6fjB+NzFxKlFGVzA1JnUKeigm
Sjg3aykqfUQ1akF4bGhxJX40biN8eDJAajhmQ2d4MmtJTDNRKypFWDRDKyM+S2Q1dGFmYkokJj5D
Q1RVSiVHCnplTVBYenp8YTVKLWojPH1RRWQ0fUAqclJnVlV3VT9sX2Z4Y1REc1FXZkZ6UD1xNTtG
XjBGT1l6VyswSXlFVjlVJgp6aFhAKTMxKWRtbzVEWFoyaTBtVCE8XlVSeU8rZkA3Rm8+VzUwd1Q9
bW59cVNiYXNIcUEtclZvSXghdSo+KW02VmIKej1YWHczcFZOV1d2LVooUnU7RmgtQyZkciM1QiZe
bW0jenBWej1FYjx3fH0lVyskVlhVQUN3WkdUNlJzMC12RUN4CnpHVFQ0UktrdlY8Iys4LV9ud2Jz
amJBNUJOKTNWQ1hfRGNpYWVjOy1KbCZ0SylCNWhlK2Z2SCtEcSswIWNLaDFBdAp6YFNwbnpzWDZI
WjI+Z3RVZT1JRzxzbDRwUCp1K09Ze3IkcGZZM3V3RmZGdiQwQzl+e2FXIVg5OUgtbnpObCU0dHIK
emRjVVdvaTthSGsla1N9RENFZHp2Mn1BPExyMWVqTTBIMWBFcCMkUCQlOHZObWRLbiYrYFp3X0xE
O3BvRXcrcE49CnptdFBWNj09YG99IX43dCF2YThHWFZuX1A3P3dGcEBIemhxVzVHRHJBJmQlfE4q
NntuJS1jT24tK3hEfC17UE9zJAp6dTZ7MEowOShIeEF2IVQ3diRXLWJlazchJjN7VSQ1JEB5S3pQ
dkU+bktNQW5Jc08rQGxqQmJOYykxbjgkR2JgaE4KeiR9IyRiQmFicWM7OF5Eck5QJk1lbn0maXdN
M3BaYmYkaSt7RWBqTWY/N1JlJG1AemFmQlJ3clRkc3VxZXl0fW1BCnpLUndCUlU7YG4wcjZyfEBP
REFUZkNJMjh7UCo8cnFLZilxOEoqeWx0MUdkV2BnRG5ecUtuPFArIWF0JS0mdz5sZgp6X3FxJW43
P31Ifks1OUtRcXBTczgyTXg+NE5sQVpIVzcmUkx0en48R3ElNk9ePHNjPyFKVk1xbF4+YlV4ZlFX
XkYKeiFPe2pwYSMoN3syIUVJcEwyNlM1cTs8IyROV3pHJChxfko3MHJEJlRtLV5VdzYkOShCezxe
JlhqZjh5IVVrVHFICnpWRyEjSmlffiRqe2NySH5TOG1IK2NhU3pSNGMwa2ZoKWMmMTc8aUNSZyNX
enNgN2VkI3xFMTBqZEtSKXkxRF5fawp6KDdeQ0FuX1hVQjBna34jPiskSEglRjgyRzteNnFlaDJY
YzlSdWNHSSQlcnchOFcxVzFQYk1LeytFX2dPK316USYKejlAWHFzdVMmSStPfkV6enxJaHlsMVlw
byZWMVNxRURwc2lWZndrVGBZN01Za0lvTnNLbmN7cnhlQ2l4QHpIeDNrCnpCfkcqKD1NSGhseFpC
LVU5YGZTNkJ5V3s+JnBZSDkjd0BteTljOENrMT5RYDJEfjhDfkAoWEZHJUlYUUZSaC1JSgp6Wj5v
SD9MMlhrOSlQMj1oS2RheD4tU0tzN2s+fC08PFghUitzWVdCe1AmJEZXTStAaXxeZWJBP1ktaT9+
TjZqI24KeiQrej52e0NtRGc+PUZrPnNCOSVZeGwkZ05tdCtJZ05CdnpycHtkVCZwe09RJDhnKVB+
cGNGSSFPLTdzMTkmYEBmCnpMSiFjPkkxK1EqOSM2b1YmMzYwfksxWGE0KD9vJGREbFV0TXFPUjtO
MmduYShGTU4hKjZsLUo/UmUqUW17ckRJQAp6aGt3TmJOaFRSZGE+LV9MZlY3fDs9P2lvcTlaamR2
PCNaJGNvYklFaT1wfW0zOUx+bHVxYW55WVY3T1ViUitWJXMKei1DaWY/ZXRMKWdSJHRPZClfdj03
eVBsbjdrR0VyLUcwcDtLcEw1KDw+WVI0UXg9VVQ7aiZ2OGU9aU0mdVYwVlhtCnp6Jit4Z2J9TV5O
Y3kreDdVUTNVNyh1Pyg7X3F1dCNKYjE4VV55YV92JDdPYGZsSD10MmE7TDFVcztnJklrLURrRQp6
YnpBK0tvfjlTK2daaE8yTmdHeX0pIWNnNEklOGZpWjwpY1k5eTNgcT4lO285UzZEN3YmT1R4cipn
PHhRVTEhQ3QKekdPeGotY3JKZ1J1aSlHR0s3TkhxaTlkQHhAcmhfRlpOVTExPFNKVUZzYlQ3QWx0
TU88eyR4OHpyYT5xSylrMkw+CnpPVms7P2h3ey08UkRoWlRkSXhZM3tzR1dDUE9nKCtUQWtMVkNi
ZWlSZVVaK2YzK017XjhRbnZWKENfRktkWTMrPQp6Um1gVyZYSDA0O2JDVVV7eHh5P2s4Xzkpb3BO
diR1Ulh6US11NUU9ZmhqbktZKmJIYEA4OStjbWZPQWB9YExsZDUKenBUJHF8Yk5tNlhCeDtDbzVo
K1l6aUUtaiU1aUFgVUV1V1YhJHhPTFAtalQhOT51TWR5LSpAVXFSaWN7Zil8elFZCnpwVjhPIUom
aTFCI2FleD4hUFllRTljIU1JWnx3bU1zQUFXJit0fHdQWWt5Pj9KS3M4Mm8hM0FjMz5TQ3wlfHEr
Wgp6Y0M7VEE7JGA/I3s1YCZkZ0doQ2ZOUDNaMUw3d041I2lXMnRCZU98OWBILXZ3dGQ1ZihOZnI3
T1pBUk15NCY3KlAKemtmU3k1UHVoPnM2WkFVMExvMXQoOEUrPD0tPGMyMW5rPFM5V3NfSlFkeW5P
X2I/Z1pIbnRqaSV6JGg4fk5uVzN+Cno7Nl4qY1NQI1RlPFh+NjFle3U4Tk9LdlI0UGsob344fCtw
MHA3TlQzY0dkXiFGK0lvWTxaYmZxZFkoREx0amdEJAp6bzZJOGZsdiEtdkhTZT01SzliTWxgVFI0
IW5fdVVAYTFQaXRsRmo1RWN+SklMTHR3UD8pZV5OeVpDN0Vzd2w9bFcKejJkdUJIdihgaUZYWHt0
JVBqO3dYISl7PGwqfkQmVj1oJm18TiVsOzhpTWBUWlhLJTF+KzI3Y2c/Rlk4dyM1cH1jCnotaUBS
eyU5QndDd0V9NXpRNGNmJU8rJnctJDhrcUkxPCUyfGFWT0grPn1ybE9YUFNOMzh6NyZQXyo5VV5i
RyhzPQp6N0NYZ1drKVMqMjY/JlV+I2hQZzRUODc9bFBQOXwoamRyRyYxQTFaZmZxKklhPjdzaDVV
TWRBLWJyQUk2Umg2U2cKenNqK0g7bnhmdU5HdF5BPXU5fk1sUD5hK3V3TmtCQ3VgKSpyd2FobDBL
fjUjN0N5Wj8tPklqXjQyN1FraiFPSkFGCnpAIVBsK1FLVVdqaTlBNjRhVlU4fT5lOGtaKH1Tb08p
eTVyZ0JKUFBfJE1mLSpjczRtbEIjbyF0WCtCKj09Z0BVQAp6M3goSDduTmNqM3owRWZBVUhsQEM3
MlFPWm0+XzB9TWRFcVVUY245eHYwVXNJVXgtMih1TSQtIVduPng8MTgqMiMKemw2eGVNY0E/WDBS
bDFpaFd8NSR1aD9gdDtvNDRhSkpkUCp1QiVhSz5eUGFwOVB2cng3ST92P1VGcnM3bGNzPzFoCnpv
Nmh0Mlkjelo2PSZPM0hgKz5YSy1SdClDIyZ+KCZOXmhIWSFuXkFFditgP2p1WTVMXkVuJW17UDA+
SlZWM3FkMwp6KmdJN1pkI3pvfiQjZzJYaSRIXnAkdXFLb1lOYypEbUU4Sm4zKWdXd3h+RW1LM2Yw
WkQzdjlrcHxFakI1RE9RZlAKeitkNjRJVjs0QnZvbTAqd0MpdTZpJkhgTDNxQkA4SkdtbDB5KEYk
fURUfDx4SStTdFFNeEY0UjJ1aUAmWEhtT1ZNCnprdyZCYFgrY15PT2M+enEwUD9YVTl5Rl5IPXxY
eWRleDtCIUdLZFRUSjxCMVokUTwlTVN3TlBNNjx8Uj1DVndOSgp6a31jI2p2V3g1Xm0mZ14reHRy
dGB4bDRXe3lfa19fNyF2d0EzR3tGPXlDb3toPlhPSV5vUGpeWFJpV1BBezd0QCoKelUqYXt1YzVS
am0pR2slMTd4PSolM2tgX2xoeGlPIWY7VyY7cSQrSnF2dVFKUDMoS1hlWF5gMiQ5QXxEWXViVW0l
CnpYbSp9ZTFpYVZxJUElaCpDYSNIYmEqRiY4Pzk+KGNxcjUzXiQtREE1ITA9RDEzUnVQSnM8eGBE
Plp3TW1zY05CRwp6RTM2cDIkOz9zaFJqaTZ2cC0hczJzKnRZZHl5QyNrM2t9MHhFTy1HO01BT2s2
djteJXlNZCZJckBSSytTV1V4Q1AKemlmIX5+bCNCYjNpRFc3OyZ9PWV+RUYpe2xIZ2IkcVcyPC19
emFYeE4jPEdSSHRxZ3JuMT9sVmhtYWIjZndefS07CnopNWVqR3Y3X2BKT1lsbTMyd2dfO3hJYjlI
UCFkalJrTyhxfnpyaFJHMG9JYXQxaCUtJk9aZDxISzJIPX4jN0hxdQp6RUQrbkE2SFlJOG1eOz5l
JE5ka2R1R18pdz1UMzZ4eVVXfjkrKkB1Plo/cEglKlVfVyFfQllffXozeDQ/amB5LVIKeiUzQkVq
ITxYS0N6SiN5bFRYPSp4JU5tMT5FQitSNUVMdz9mYSpkYil3cVQxbUVRe3FmSDl7QXZ3UipTeU1K
SFJtCnp0UmREfFZDaXFIK1pNS2V1JTJ7Z2Zha0sjK0d5Pnc4clpTK0tzeSlNWHB7WVMoQ3gtZmJM
V0VGJi0+aWo7fmEzbAp6YUVeaVhKPj9BV2hJKCYlIzk4algwJHhJODlFUDk1JWB3SFhjc2libV5L
bVNCaGgmaXtCJFJSKkxsYzN1ZChpPU8KekorU3M2ZFhpUSFwRF5wMU9+R21uRl44TWUlbjlhUyY0
cCR8SGklYGlSamlQMFd1TFJsPl4/Z0w5I0l3VV41PU1HCnpWQS1xdVlqJU8lVlFvTnp5TXh7aTBk
MVlsanF+N3AwWCZ0UjVORUJrIUZrfD54WWI8fnhQNj5FLUpSKkswUjU/Zwp6c3NyRUQkMVNoflBD
QUNxPEwlKDNeZD92RkZwJGRnPE9nentqeUJ0e1IwZHVRK3MlU2BFeHRlOzBibEdsSVp8MSYKenE2
JF91UmsoXiQ3UmM4d2J4YSlyJHNEV0JzTUAtQC1tNyFIbyUoTmpsT0V3NV8wRCpVYlFfITYmKUZ7
bXBSV1pyCnp6aVMmZTQ1SStyNzttPzkrQiMjTWlPdj5oaGw1LU9LRmMyVzdxYFNjP1ZTVCgmPiFk
Q3M7fXk9MkNKYzlMNThhZwp6dj07Uk9GS1FDNEJBU1l8WU81Tmo+c2kkNWlCOH1ZXmI7PHx2JXE1
aE96c2QyTkdIPEhebE4mUy1sbzZPbnI2N1UKeipGMG9pSEdlV0l2ayoySj83fjs8Qnh9Y0dgNiNn
UmBeMGZeU2A9QXh0WXl8Sj55fnhUcyR0aSRWe0NzOzArMVJaCnowaVU0MFhkK3EpQilHNmUyTjVT
OzVYc19ZKE1SK2I+MCVoaj8+STNUe0p9aSZvfHJFZGl4MCZidjBpS3pKSFgtYAp6N0dIeyFmWiM9
T1Jvb0RfI1JDeH1zeylCTUxke1RiKUROYHJGSlFxUTB+XnA4N3ZRenstfDwpMj1MdGI8dT19ZT8K
ejI+M3FaPUBqfTZ5K0NWJHZ9YG9Ebk43ZkpOZFFecyZVKnVFNCtoUjI0bCp6aWAxJm83Z3VuOElk
XnM9Uj53dF40CnpnUztIJU5CSWVVbVM1blBMRjxiN0ojTDZmIVUoSGlXSkNXUkwlfUUlSmd9IXdM
dWdTSCMwcDhVdFRFXzBsIVVzWAp6b35TUHhoPSF0VV5jb3RFYSlDTUNMMzRxNSYhWTNfQkR3K2dz
e3xNJTJuWFgza297VVg5N297QnhFWEdWTCttaVMKem1LfD0jKiRMcFk9NlVPVi1FQ09HbTxtN0hQ
eyhASWoqaylKMGteNFFJdl9WJiVtd1RnaWx1O0ZmaFl3MEhqMXIpCno7QksmTmhyIVAtMHU7fVJe
TUs9SlY4dDd2U2RAdFMhak01U1NjYj9qU3hiaDROODM7fmsmIVk9QjU2dHFVVDJBVwp6LSE7NC1G
VzN3NSFufDV1eEVKQkswfE1sdGZKMURub2ZUdW5TcVdCPm0yNkc2cmBpa2NCMEpjTGJhdlklYzdv
RiMKemNyJUN2Z1ZjbnZTfWRHSnUhZ0omaXYtXmF2MnFLI2x6I3xWN2puUC07Vk1Fa1I4M1NRWGIx
di1gbFE7Wnd9U3ReCnpUa3FHMF4tKjE8UHdLUCF5dVBSfWdVQChGN3daeXpBQUlafUU3JUdGUHJI
XkNaYmV1UHR0TThhNj1mbUkxZk95dgp6Ki1DYmgtREUjR09wY053YSp+X3tPfSQ3aWxOK1IlbCN1
KHhwZ31Za1c8Q3ZSNkI8ZFFDPDBHZVFrJTh8IykrY3wKekc+SW1JS2hjeCtwe2R8OHJxZktZSnRP
SERrZ0NhYUQpPElAYlQqdyE9aEtDQkRnNio7UEs5KG9KeHEmJHBVJT9yClUpV3xIR2tFMC12bG4/
fnl7byZfNzBtZXRvMHt7UjMKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvQlVJ
TEQuZ24KaW5kZXggNDNkMWRmZTlmNzEyOThkMzk1ZWEyZDk3NjMxOGYyNTFjZmIyZTA3Ny4uNGVk
MDdhZjk4MzBhNTI5MzgxOWFmN2Y3ZDBjNGZiMjhjYWVmYTEwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvQlVJTEQuZ24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvQlVJ
TEQuZ24KQEAgLTYwLDYgKzYwLDMyIEBAIGdyb3VwKCJleGFtcGxlcyIpIHsKICAgfQogfQogCity
dGNfc291cmNlX3NldCgicmVhZF9hdXRoX2ZpbGUiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBz
b3VyY2VzID0gWworICAgICJ0dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlLmNjIiwKKyAgICAidHVy
bnNlcnZlci9yZWFkX2F1dGhfZmlsZS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZSIsCisgIF0KK30KKworaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CisgIHJ0
Y190ZXN0KCJleGFtcGxlc191bml0dGVzdHMiKSB7CisgICAgdGVzdG9ubHkgPSB0cnVlCisgICAg
c291cmNlcyA9IFsKKyAgICAgICJ0dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlX3VuaXR0ZXN0LmNj
IiwKKyAgICBdCisgICAgZGVwcyA9IFsKKyAgICAgICI6cmVhZF9hdXRoX2ZpbGUiLAorICAgICAg
Ii4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIvL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKyAgICAg
ICIvL3Rlc3RpbmcvZ3Rlc3QiLAorICAgIF0KKyAgfQorfQorCiBpZiAoaXNfYW5kcm9pZCkgewog
ICBydGNfYW5kcm9pZF9hcGsoIkFwcFJUQ01vYmlsZSIpIHsKICAgICB0ZXN0b25seSA9IHRydWUK
QEAgLTE2NiwxNSArMTkyLDEyIEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgICAiLi4vYnVpbGQv
YW5kcm9pZC9hZGJfcmV2ZXJzZV9mb3J3YXJkZXIucHkiLAogICAgICAgIi4uL2V4YW1wbGVzL2Fu
ZHJvaWR0ZXN0cy92aWRlb19xdWFsaXR5X2xvb3BiYWNrX3Rlc3QucHkiLAogICAgICAgIi4uL3Jl
c291cmNlcy9yZWZlcmVuY2VfdmlkZW9fNjQweDM2MF8zMGZwcy55NG0iLAotICAgICAgIi4uL3J0
Y190b29scy9iYXJjb2RlX3Rvb2xzL2JhcmNvZGVfZGVjb2Rlci5weSIsCi0gICAgICAiLi4vcnRj
X3Rvb2xzL2JhcmNvZGVfdG9vbHMvaGVscGVyX2Z1bmN0aW9ucy5weSIsCiAgICAgICAiLi4vcnRj
X3Rvb2xzL2NvbXBhcmVfdmlkZW9zLnB5IiwKICAgICAgICIuLi9ydGNfdG9vbHMvdGVzdGluZy9w
cmVidWlsdF9hcHBydGMuemlwIiwKICAgICAgICIuLi9ydGNfdG9vbHMvdGVzdGluZy9nb2xhbmcv
bGludXgvZ28udGFyLmd6IiwKICAgICAgICIuLi9ydGNfdG9vbHMvdGVzdGluZy9idWlsZF9hcHBy
dGMucHkiLAogICAgICAgIi4uL3J0Y190b29scy90ZXN0aW5nL3V0aWxzLnB5IiwKICAgICAgICIu
Li90b29sc193ZWJydGMvdmlkZW9fcXVhbGl0eV90b29sY2hhaW4vbGludXgvZmZtcGVnIiwKLSAg
ICAgICIuLi90b29sc193ZWJydGMvdmlkZW9fcXVhbGl0eV90b29sY2hhaW4vbGludXgvenhpbmci
LAogICAgICAgIiR7cm9vdF9vdXRfZGlyfS9mcmFtZV9hbmFseXplcl9ob3N0IiwKICAgICBdCiAg
IH0KQEAgLTQ4MCw4ICs1MDMsMTAgQEAgaWYgKGlzX2lvcyB8fCAoaXNfbWFjICYmIHRhcmdldF9j
cHUgIT0gIng4NiIpKSB7CiAgICAgICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9u
X2FwaSIsCiAgICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5IiwKICAgICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19l
bmNvZGVyX2ZhY3RvcnkiLAorICAgICAgICAiLi4vYXBpL3ZpZGVvOmJ1aWx0aW5fdmlkZW9fYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAgICAgICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9s
b2dfaW1wbF9iYXNlIiwKICAgICAgICAgIi4uL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCisgICAg
ICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICAgIi4uL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICAgIi4uL3BjOmxp
YmppbmdsZV9wZWVyY29ubmVjdGlvbiIsCiAgICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIs
CkBAIC02MjUsMTIgKzY1MCwxMyBAQCBpZiAoaXNfaW9zIHx8IChpc19tYWMgJiYgdGFyZ2V0X2Nw
dSAhPSAieDg2IikpIHsKICAgICAgIHJ0Y19pb3NfeGN0ZXN0X3Rlc3QoImFwcHJ0Y21vYmlsZV90
ZXN0cyIpIHsKICAgICAgICAgaW5mb19wbGlzdCA9ICJvYmpjL0FwcFJUQ01vYmlsZS9pb3MvSW5m
by5wbGlzdCIKICAgICAgICAgc291cmNlcyA9IFsKLSAgICAgICAgICAib2JqYy9BcHBSVENNb2Jp
bGUvaW9zL21haW4ubSIsCisgICAgICAgICAgIm9iamMvQXBwUlRDTW9iaWxlL3Rlc3RzL21haW4u
bW0iLAogICAgICAgICBdCiAgICAgICAgIGRlcHMgPSBbCiAgICAgICAgICAgIjpBcHBSVENNb2Jp
bGVfbGliIiwKICAgICAgICAgICAiOmFwcHJ0Y21vYmlsZV90ZXN0X3NvdXJjZXMiLAogICAgICAg
ICAgICIuLi9zZGs6ZnJhbWV3b3JrX29iamMiLAorICAgICAgICAgICIvL3Rlc3Q6dGVzdF9zdXBw
b3J0IiwKICAgICAgICAgXQogICAgICAgICBsZGZsYWdzID0gWyAiLWFsbF9sb2FkIiBdCiAgICAg
ICB9CkBAIC02NTUsMTEgKzY4MSwxNCBAQCBpZiAoaXNfbGludXggfHwgaXNfd2luKSB7CiAgICAg
ICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRf
Y29uc3RydWN0cyIgXQogICAgIH0KICAgICBkZXBzID0gWworICAgICAgIi4uL2FwaTpjcmVhdGVf
cGVlcmNvbm5lY3Rpb25fZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29u
bmVjdGlvbl9hcGkiLAogICAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKICAg
ICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICAgIi4uL3J0Y19iYXNlOnN0cmluZ3V0aWxz
IiwKICAgICAgICIuLi9ydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90IiwKKyAgICAgICIuLi9z
eXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICAgIi4uL3Rlc3Q6ZmllbGRfdHJpYWwi
LAogICAgIF0KICAgICBpZiAoaXNfd2luKSB7CiAgICAgICBzb3VyY2VzICs9IFsKQEAgLTY5Niw2
ICs3MjUsNyBAQCBpZiAoaXNfbGludXggfHwgaXNfd2luKSB7CiAgICAgICAiLi4vYXBpL3ZpZGVv
X2NvZGVjczpidWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeSIsCiAgICAgICAiLi4vbWVkaWE6
cnRjX2F1ZGlvX3ZpZGVvIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19k
ZXZpY2UiLAorICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAg
Ii4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICIu
Li9tb2R1bGVzL3ZpZGVvX2NhcHR1cmU6dmlkZW9fY2FwdHVyZV9tb2R1bGUiLAogICAgICAgIi4u
L3BjOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbiIsCkBAIC03MTgsMTAgKzc0OCwxMSBAQCBpZiAo
aXNfbGludXggfHwgaXNfd2luKSB7CiAgICAgICAicGVlcmNvbm5lY3Rpb24vc2VydmVyL3V0aWxz
LmgiLAogICAgIF0KICAgICBkZXBzID0gWwotICAgICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAg
ICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi9ydGNfYmFzZTpz
dHJpbmd1dGlscyIsCiAgICAgICAiLi4vcnRjX3Rvb2xzOmNvbW1hbmRfbGluZV9wYXJzZXIiLAor
ICAgICAgIi4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCisgICAgICAiLi4vdGVzdDpm
aWVsZF90cmlhbCIsCiAgICAgXQogICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19j
bGFuZykgewogICAgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFu
ZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgpAQCAtNzUwLDYgKzc4MSw3IEBAIGlmIChp
c19saW51eCB8fCBpc193aW4pIHsKICAgICAgICJ0dXJuc2VydmVyL3R1cm5zZXJ2ZXJfbWFpbi5j
YyIsCiAgICAgXQogICAgIGRlcHMgPSBbCisgICAgICAiOnJlYWRfYXV0aF9maWxlIiwKICAgICAg
ICIuLi9wMnA6cnRjX3AycCIsCiAgICAgICAiLi4vcGM6cnRjX3BjIiwKICAgICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZSIsCkBAIC04MDcsNiArODM5LDcgQEAgaWYgKGlzX3dpbiB8fCBpc19hbmRy
b2lkKSB7CiAgICAgICBjb25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL3dpbjp3aW5kb3dlZCIg
XQogICAgIH0KICAgICBkZXBzID0gWworICAgICAgIi4uL2FwaTpjcmVhdGVfcGVlcmNvbm5lY3Rp
b25fZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGki
LAogICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3Rv
cnkiLAogICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2Zh
Y3RvcnkiLApAQCAtODE2LDYgKzg0OSw3IEBAIGlmIChpc193aW4gfHwgaXNfYW5kcm9pZCkgewog
ICAgICAgIi4uL21lZGlhOnJ0Y19tZWRpYSIsCiAgICAgICAiLi4vbWVkaWE6cnRjX21lZGlhX2Jh
c2UiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZSIsCisgICAg
ICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgICAiLi4vbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgIi4uL21vZHVsZXMvdmlk
ZW9fY2FwdHVyZTp2aWRlb19jYXB0dXJlX21vZHVsZSIsCiAgICAgICAiLi4vcGM6bGliamluZ2xl
X3BlZXJjb25uZWN0aW9uIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL0RFUFMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9ERVBTCmluZGV4IDZhOWE5ZjA5Y2ZmZWYzN2ZmYzMy
MTU2YTNiYzViZGM5YjYzYWEyYTguLjViMzc4NDU1OTAwYjUzNzE0MmU5YTgxZWE3NjlhNmExZjI3
ZTdiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2V4YW1wbGVzL0RFUFMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvZXhhbXBsZXMvREVQUwpAQCAtOCw1ICs4LDYgQEAgaW5jbHVkZV9ydWxlcyA9IFsK
ICAgIitwMnAiLAogICAiK3BjIiwKICAgIitzZGsvb2JqYyIsCisgICIrc3lzdGVtX3dyYXBwZXJz
L2luY2x1ZGUiLAogICAiK3RoaXJkX3BhcnR5L2xpYnl1diIsCiBdCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hYXJwcm9qZWN0
L09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1w
bGVzL2FhcnByb2plY3QvT1dORVJTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjNGU1NDE3NGU2MGY2NTkwZGNjYTk4
YTk4MDY3NzdjYzFmOWMxMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hYXJwcm9qZWN0L09XTkVSUwpAQCAtMCww
ICsxIEBACitzYWthbEB3ZWJydGMub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL0FuZHJvaWRNYW5pZmVz
dC54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxl
cy9hbmRyb2lkYXBwL0FuZHJvaWRNYW5pZmVzdC54bWwKaW5kZXggZDZlMGZmMDQxNzQ0NGRiOWQx
OWMyMGYyN2M2MGNkOGY0NmY5ZmUxMC4uNTc2NDQ5YmIxNGU5ZWRlZmU0MDVkY2I0N2FlNWExMjNj
NDE5NjYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFwcC9BbmRyb2lkTWFuaWZlc3QueG1sCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAv
QW5kcm9pZE1hbmlmZXN0LnhtbApAQCAtMTgsNyArMTgsOCBAQAogICAgIDx1c2VzLXBlcm1pc3Np
b24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uSU5URVJORVQiIC8+CiAgICAgPHVz
ZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5XUklURV9FWFRF
Uk5BTF9TVE9SQUdFIi8+CiAgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJv
aWQucGVybWlzc2lvbi5BQ0NFU1NfTkVUV09SS19TVEFURSIgLz4KLSAgICA8dXNlcy1wZXJtaXNz
aW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLkNBUFRVUkVfVklERU9fT1VUUFVU
IiAvPgorICAgIDx1c2VzLXBlcm1pc3Npb24gdG9vbHM6aWdub3JlPSJQcm90ZWN0ZWRQZXJtaXNz
aW9ucyIKKyAgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNz
aW9uLkNBUFRVUkVfVklERU9fT1VUUFVUIiAvPgogCiAgICAgPCEtLSBUaGlzIGlzIGEgdGVzdCBh
cHBsaWNhdGlvbiB0aGF0IHNob3VsZCBhbHdheXMgYmUgZGVidWdnYWJsZS4gLS0+CiAgICAgPGFw
cGxpY2F0aW9uIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvYXBwX25hbWUiCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lk
YXBwL3Jlcy9sYXlvdXQvYWN0aXZpdHlfY29ubmVjdC54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3Jlcy9sYXlvdXQvYWN0
aXZpdHlfY29ubmVjdC54bWwKaW5kZXggODM3MDdmNzJlZDA3ZjdjYmQ3MTQ0NWVhNGNlNGMzNzg0
MjZiZDk2My4uM2M1OTE4OTY0NDRhODI1ZDljMGRkODhhMjc1YTAzZTQ3YTc3ODE1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMv
YW5kcm9pZGFwcC9yZXMvbGF5b3V0L2FjdGl2aXR5X2Nvbm5lY3QueG1sCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvcmVz
L2xheW91dC9hY3Rpdml0eV9jb25uZWN0LnhtbApAQCAtMSw2ICsxLDcgQEAKIDw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8TGluZWFyTGF5b3V0CiAgICAgeG1sbnM6YW5k
cm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHht
bG5zOnRvb2xzPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS90b29scyIKICAgICBhbmRyb2lk
OmxheW91dF9tYXJnaW49IjE2ZHAiCiAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3Bh
cmVudCIKICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKQEAgLTIxLDcg
KzIyLDkgQEAKICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXIiCiAgICAgICAgIGFuZHJv
aWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iOGRwIj4KIAorICAgICAgICA8IS0tIFRPRE8oY3JidWcu
Y29tLzkwMDkxMik6IEZpeCBhbmQgcmVtb3ZlIGxpbnQgaWdub3JlIC0tPgogICAgICAgICA8RWRp
dFRleHQKKyAgICAgICAgICAgIHRvb2xzOmlnbm9yZT0iTGFiZWxGb3IiCiAgICAgICAgICAgICBh
bmRyb2lkOmlkPSJAK2lkL3Jvb21fZWRpdHRleHQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91
dF93aWR0aD0iMGRwIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2Nv
bnRlbnQiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvQ2FsbEFjdGl2
aXR5LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFt
cGxlcy9hbmRyb2lkYXBwL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvQ2FsbEFjdGl2aXR5LmphdmEK
aW5kZXggY2NjMmMzYmQ5M2Q4MDcwZTQzNjM2NzFlMjczNDc4NTA3NGJiOWVhYy4uNDM5NjE1MDZh
YjkzYjMyZDVlYjM3YzcyYzczNTZhYTZmYWNiYjI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFwcC9zcmMvb3Jn
L2FwcHNwb3QvYXBwcnRjL0NhbGxBY3Rpdml0eS5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvc3JjL29yZy9hcHBz
cG90L2FwcHJ0Yy9DYWxsQWN0aXZpdHkuamF2YQpAQCAtMTcxLDcgKzE3MSw3IEBAIHB1YmxpYyBj
bGFzcyBDYWxsQWN0aXZpdHkgZXh0ZW5kcyBBY3Rpdml0eSBpbXBsZW1lbnRzIEFwcFJUQ0NsaWVu
dC5TaWduYWxpbmdFdmVuCiAgIHByaXZhdGUgUm9vbUNvbm5lY3Rpb25QYXJhbWV0ZXJzIHJvb21D
b25uZWN0aW9uUGFyYW1ldGVyczsKICAgQE51bGxhYmxlCiAgIHByaXZhdGUgUGVlckNvbm5lY3Rp
b25QYXJhbWV0ZXJzIHBlZXJDb25uZWN0aW9uUGFyYW1ldGVyczsKLSAgcHJpdmF0ZSBib29sZWFu
IGljZUNvbm5lY3RlZDsKKyAgcHJpdmF0ZSBib29sZWFuIGNvbm5lY3RlZDsKICAgcHJpdmF0ZSBi
b29sZWFuIGlzRXJyb3I7CiAgIHByaXZhdGUgYm9vbGVhbiBjYWxsQ29udHJvbEZyYWdtZW50Vmlz
aWJsZSA9IHRydWU7CiAgIHByaXZhdGUgbG9uZyBjYWxsU3RhcnRlZFRpbWVNczsKQEAgLTIwMyw3
ICsyMDMsNyBAQCBwdWJsaWMgY2xhc3MgQ2FsbEFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1w
bGVtZW50cyBBcHBSVENDbGllbnQuU2lnbmFsaW5nRXZlbgogICAgIGdldFdpbmRvdygpLmdldERl
Y29yVmlldygpLnNldFN5c3RlbVVpVmlzaWJpbGl0eShnZXRTeXN0ZW1VaVZpc2liaWxpdHkoKSk7
CiAgICAgc2V0Q29udGVudFZpZXcoUi5sYXlvdXQuYWN0aXZpdHlfY2FsbCk7CiAKLSAgICBpY2VD
b25uZWN0ZWQgPSBmYWxzZTsKKyAgICBjb25uZWN0ZWQgPSBmYWxzZTsKICAgICBzaWduYWxpbmdQ
YXJhbWV0ZXJzID0gbnVsbDsKIAogICAgIC8vIENyZWF0ZSBVSSBjb250cm9scy4KQEAgLTU1Myw3
ICs1NTMsNyBAQCBwdWJsaWMgY2xhc3MgQ2FsbEFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1w
bGVtZW50cyBBcHBSVENDbGllbnQuU2lnbmFsaW5nRXZlbgogCiAgIC8vIEhlbHBlciBmdW5jdGlv
bnMuCiAgIHByaXZhdGUgdm9pZCB0b2dnbGVDYWxsQ29udHJvbEZyYWdtZW50VmlzaWJpbGl0eSgp
IHsKLSAgICBpZiAoIWljZUNvbm5lY3RlZCB8fCAhY2FsbEZyYWdtZW50LmlzQWRkZWQoKSkgewor
ICAgIGlmICghY29ubmVjdGVkIHx8ICFjYWxsRnJhZ21lbnQuaXNBZGRlZCgpKSB7CiAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIC8vIFNob3cvaGlkZSBjYWxsIGNvbnRyb2wgZnJhZ21lbnQKQEAg
LTY0OSw3ICs2NDksNyBAQCBwdWJsaWMgY2xhc3MgQ2FsbEFjdGl2aXR5IGV4dGVuZHMgQWN0aXZp
dHkgaW1wbGVtZW50cyBBcHBSVENDbGllbnQuU2lnbmFsaW5nRXZlbgogICAgICAgYXVkaW9NYW5h
Z2VyLnN0b3AoKTsKICAgICAgIGF1ZGlvTWFuYWdlciA9IG51bGw7CiAgICAgfQotICAgIGlmIChp
Y2VDb25uZWN0ZWQgJiYgIWlzRXJyb3IpIHsKKyAgICBpZiAoY29ubmVjdGVkICYmICFpc0Vycm9y
KSB7CiAgICAgICBzZXRSZXN1bHQoUkVTVUxUX09LKTsKICAgICB9IGVsc2UgewogICAgICAgc2V0
UmVzdWx0KFJFU1VMVF9DQU5DRUxFRCk7CkBAIC05MTEsOCArOTExLDYgQEAgcHVibGljIGNsYXNz
IENhbGxBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5IGltcGxlbWVudHMgQXBwUlRDQ2xpZW50LlNp
Z25hbGluZ0V2ZW4KICAgICAgIEBPdmVycmlkZQogICAgICAgcHVibGljIHZvaWQgcnVuKCkgewog
ICAgICAgICBsb2dBbmRUb2FzdCgiSUNFIGNvbm5lY3RlZCwgZGVsYXk9IiArIGRlbHRhICsgIm1z
Iik7Ci0gICAgICAgIGljZUNvbm5lY3RlZCA9IHRydWU7Ci0gICAgICAgIGNhbGxDb25uZWN0ZWQo
KTsKICAgICAgIH0KICAgICB9KTsKICAgfQpAQCAtOTIzLDcgKzkyMSwzMCBAQCBwdWJsaWMgY2xh
c3MgQ2FsbEFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1wbGVtZW50cyBBcHBSVENDbGllbnQu
U2lnbmFsaW5nRXZlbgogICAgICAgQE92ZXJyaWRlCiAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7
CiAgICAgICAgIGxvZ0FuZFRvYXN0KCJJQ0UgZGlzY29ubmVjdGVkIik7Ci0gICAgICAgIGljZUNv
bm5lY3RlZCA9IGZhbHNlOworICAgICAgfQorICAgIH0pOworICB9CisKKyAgQE92ZXJyaWRlCisg
IHB1YmxpYyB2b2lkIG9uQ29ubmVjdGVkKCkgeworICAgIGZpbmFsIGxvbmcgZGVsdGEgPSBTeXN0
ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIGNhbGxTdGFydGVkVGltZU1zOworICAgIHJ1bk9uVWlU
aHJlYWQobmV3IFJ1bm5hYmxlKCkgeworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgdm9p
ZCBydW4oKSB7CisgICAgICAgIGxvZ0FuZFRvYXN0KCJEVExTIGNvbm5lY3RlZCwgZGVsYXk9IiAr
IGRlbHRhICsgIm1zIik7CisgICAgICAgIGNvbm5lY3RlZCA9IHRydWU7CisgICAgICAgIGNhbGxD
b25uZWN0ZWQoKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJs
aWMgdm9pZCBvbkRpc2Nvbm5lY3RlZCgpIHsKKyAgICBydW5PblVpVGhyZWFkKG5ldyBSdW5uYWJs
ZSgpIHsKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAg
ICBsb2dBbmRUb2FzdCgiRFRMUyBkaXNjb25uZWN0ZWQiKTsKKyAgICAgICAgY29ubmVjdGVkID0g
ZmFsc2U7CiAgICAgICAgIGRpc2Nvbm5lY3QoKTsKICAgICAgIH0KICAgICB9KTsKQEAgLTkzNyw3
ICs5NTgsNyBAQCBwdWJsaWMgY2xhc3MgQ2FsbEFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1w
bGVtZW50cyBBcHBSVENDbGllbnQuU2lnbmFsaW5nRXZlbgogICAgIHJ1bk9uVWlUaHJlYWQobmV3
IFJ1bm5hYmxlKCkgewogICAgICAgQE92ZXJyaWRlCiAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7
Ci0gICAgICAgIGlmICghaXNFcnJvciAmJiBpY2VDb25uZWN0ZWQpIHsKKyAgICAgICAgaWYgKCFp
c0Vycm9yICYmIGNvbm5lY3RlZCkgewogICAgICAgICAgIGh1ZEZyYWdtZW50LnVwZGF0ZUVuY29k
ZXJTdGF0aXN0aWNzKHJlcG9ydHMpOwogICAgICAgICB9CiAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lk
YXBwL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvUGVlckNvbm5lY3Rpb25DbGllbnQuamF2YSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRh
cHAvc3JjL29yZy9hcHBzcG90L2FwcHJ0Yy9QZWVyQ29ubmVjdGlvbkNsaWVudC5qYXZhCmluZGV4
IDk0MTM1ZGVkNGQ2NDg3MTNjZTU0YTUyZWYzOWVkOTJhZmY3MDkxMjIuLmY4NWE3ODhmM2QxNmM2
NzA5NTQ5ZDRjOGMzZWZlOThmOWM4ZmYyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvc3JjL29yZy9hcHBz
cG90L2FwcHJ0Yy9QZWVyQ29ubmVjdGlvbkNsaWVudC5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvc3JjL29yZy9h
cHBzcG90L2FwcHJ0Yy9QZWVyQ29ubmVjdGlvbkNsaWVudC5qYXZhCkBAIC01Miw2ICs1Miw3IEBA
IGltcG9ydCBvcmcud2VicnRjLk1lZGlhU3RyZWFtVHJhY2s7CiBpbXBvcnQgb3JnLndlYnJ0Yy5N
ZWRpYVN0cmVhbVRyYWNrLk1lZGlhVHlwZTsKIGltcG9ydCBvcmcud2VicnRjLlBlZXJDb25uZWN0
aW9uOwogaW1wb3J0IG9yZy53ZWJydGMuUGVlckNvbm5lY3Rpb24uSWNlQ29ubmVjdGlvblN0YXRl
OworaW1wb3J0IG9yZy53ZWJydGMuUGVlckNvbm5lY3Rpb24uUGVlckNvbm5lY3Rpb25TdGF0ZTsK
IGltcG9ydCBvcmcud2VicnRjLlBlZXJDb25uZWN0aW9uRmFjdG9yeTsKIGltcG9ydCBvcmcud2Vi
cnRjLlJ0cFBhcmFtZXRlcnM7CiBpbXBvcnQgb3JnLndlYnJ0Yy5SdHBSZWNlaXZlcjsKQEAgLTI5
MywxMSArMjk0LDIzIEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbkNsaWVudCB7CiAgICAg
dm9pZCBvbkljZUNvbm5lY3RlZCgpOwogCiAgICAgLyoqCi0gICAgICogQ2FsbGJhY2sgZmlyZWQg
b25jZSBjb25uZWN0aW9uIGlzIGNsb3NlZCAoSWNlQ29ubmVjdGlvblN0YXRlIGlzCisgICAgICog
Q2FsbGJhY2sgZmlyZWQgb25jZSBjb25uZWN0aW9uIGlzIGRpc2Nvbm5lY3RlZCAoSWNlQ29ubmVj
dGlvblN0YXRlIGlzCiAgICAgICogRElTQ09OTkVDVEVEKS4KICAgICAgKi8KICAgICB2b2lkIG9u
SWNlRGlzY29ubmVjdGVkKCk7CiAKKyAgICAvKioKKyAgICAgKiBDYWxsYmFjayBmaXJlZCBvbmNl
IERUTFMgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCAoUGVlckNvbm5lY3Rpb25TdGF0ZQorICAg
ICAqIGlzIENPTk5FQ1RFRCkuCisgICAgICovCisgICAgdm9pZCBvbkNvbm5lY3RlZCgpOworCisg
ICAgLyoqCisgICAgICogQ2FsbGJhY2sgZmlyZWQgb25jZSBEVExTIGNvbm5lY3Rpb24gaXMgZGlz
Y29ubmVjdGVkIChQZWVyQ29ubmVjdGlvblN0YXRlCisgICAgICogaXMgRElTQ09OTkVDVEVEKS4K
KyAgICAgKi8KKyAgICB2b2lkIG9uRGlzY29ubmVjdGVkKCk7CisKICAgICAvKioKICAgICAgKiBD
YWxsYmFjayBmaXJlZCBvbmNlIHBlZXIgY29ubmVjdGlvbiBpcyBjbG9zZWQuCiAgICAgICovCkBA
IC0xMjYzLDYgKzEyNzYsMjAgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uQ2xpZW50IHsK
ICAgICAgIH0pOwogICAgIH0KIAorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQ29u
bmVjdGlvbkNoYW5nZShmaW5hbCBQZWVyQ29ubmVjdGlvbi5QZWVyQ29ubmVjdGlvblN0YXRlIG5l
d1N0YXRlKSB7CisgICAgICBleGVjdXRvci5leGVjdXRlKCgpIC0+IHsKKyAgICAgICAgTG9nLmQo
VEFHLCAiUGVlckNvbm5lY3Rpb25TdGF0ZTogIiArIG5ld1N0YXRlKTsKKyAgICAgICAgaWYgKG5l
d1N0YXRlID09IFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKSB7CisgICAgICAgICAgZXZl
bnRzLm9uQ29ubmVjdGVkKCk7CisgICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUgPT0gUGVlckNv
bm5lY3Rpb25TdGF0ZS5ESVNDT05ORUNURUQpIHsKKyAgICAgICAgICBldmVudHMub25EaXNjb25u
ZWN0ZWQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZSA9PSBQZWVyQ29ubmVjdGlvblN0
YXRlLkZBSUxFRCkgeworICAgICAgICAgIHJlcG9ydEVycm9yKCJEVExTIGNvbm5lY3Rpb24gZmFp
bGVkLiIpOworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAg
ICBwdWJsaWMgdm9pZCBvbkljZUdhdGhlcmluZ0NoYW5nZShQZWVyQ29ubmVjdGlvbi5JY2VHYXRo
ZXJpbmdTdGF0ZSBuZXdTdGF0ZSkgewogICAgICAgTG9nLmQoVEFHLCAiSWNlR2F0aGVyaW5nU3Rh
dGU6ICIgKyBuZXdTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkanVuaXQvT1dORVJTIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGp1bml0L09X
TkVSUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYzRlNTQxNzRlNjBmNjU5MGRjY2E5OGE5ODA2Nzc3Y2MxZjljMTE4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGp1bml0L09XTkVSUwpAQCAtMCwwICsxIEBACitzYWthbEB3
ZWJydGMub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkanVuaXQvc3JjL29yZy9hcHBzcG90L2FwcHJ0Yy9UQ1BD
aGFubmVsQ2xpZW50VGVzdC5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGp1bml0L3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvVENQ
Q2hhbm5lbENsaWVudFRlc3QuamF2YQppbmRleCA4YzVmMzhjY2IzMWIxNmFmZTViYTNlZThiMjg0
NDdmN2Y2Zjc5NTNmLi5hODgwNmVjNWY3ZDY3YzE2YjA5ZmMzN2JkNjFjZDRkM2QzYTljY2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFt
cGxlcy9hbmRyb2lkanVuaXQvc3JjL29yZy9hcHBzcG90L2FwcHJ0Yy9UQ1BDaGFubmVsQ2xpZW50
VGVzdC5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2V4YW1wbGVzL2FuZHJvaWRqdW5pdC9zcmMvb3JnL2FwcHNwb3QvYXBwcnRjL1RDUENoYW5uZWxD
bGllbnRUZXN0LmphdmEKQEAgLTM4LDEwICszOCwxMCBAQCBwdWJsaWMgY2xhc3MgVENQQ2hhbm5l
bENsaWVudFRlc3QgewogICAgKiBIb3cgbG9uZyB3ZSB3YWl0IGJlZm9yZSB0cnlpbmcgdG8gY29u
bmVjdCB0byB0aGUgc2VydmVyLiBOb3RlOiB3YXMKICAgICogcHJldmlvdXNseSBvbmx5IDEwLCB3
aGljaCB3YXMgdG9vIHNob3J0ICh0ZXN0cyB3ZXJlIGZsYWt5KS4KICAgICovCi0gIHByaXZhdGUg
c3RhdGljIGZpbmFsIGludCBTRVJWRVJfV0FJVCA9IDEwMDsKLSAgcHJpdmF0ZSBzdGF0aWMgZmlu
YWwgaW50IENPTk5FQ1RfVElNRU9VVCA9IDEwMDsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50
IFNFTkRfVElNRU9VVCA9IDEwMDsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERJU0NPTk5F
Q1RfVElNRU9VVCA9IDEwMDsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFUlZFUl9XQUlU
ID0gMzAwOworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09OTkVDVF9USU1FT1VUID0gMTAw
MDsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFTkRfVElNRU9VVCA9IDEwMDA7CisgIHBy
aXZhdGUgc3RhdGljIGZpbmFsIGludCBESVNDT05ORUNUX1RJTUVPVVQgPSAxMDAwOwogICBwcml2
YXRlIHN0YXRpYyBmaW5hbCBpbnQgVEVSTUlOQVRJT05fVElNRU9VVCA9IDEwMDA7CiAgIHByaXZh
dGUgc3RhdGljIGZpbmFsIFN0cmluZyBURVNUX01FU1NBR0VfU0VSVkVSID0gIkhlbGxvLCBTZXJ2
ZXIhIjsKICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRFU1RfTUVTU0FHRV9DTElFTlQg
PSAiSGVsbG8sIENsaWVudCEiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZG5hdGl2ZWFwaS9CVUlMRC5nbiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRu
YXRpdmVhcGkvQlVJTEQuZ24KaW5kZXggNTU2OGViMTFkZGUzZWJmM2I5NTFiMDJhNjJhYTY4NTUx
MzI4NjVlMS4uNzkyODY0MGNjNmY1Y2FhZWFlYTljNmE3MTU2Y2QwZDY2MTNmOWM3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMv
YW5kcm9pZG5hdGl2ZWFwaS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkbmF0aXZlYXBpL0JVSUxELmduCkBAIC00
OSwxMCArNDksMTIgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICIvL2FwaTpsaWJqaW5nbGVf
cGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIvL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9h
dWRpb19kZWNvZGVyX2ZhY3RvcnkiLAogICAgICAgIi8vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGlu
X2F1ZGlvX2VuY29kZXJfZmFjdG9yeSIsCisgICAgICAiLy9hcGkvdmlkZW86YnVpbHRpbl92aWRl
b19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAgICIvL2xvZ2dpbmc6cnRjX2V2ZW50
X2xvZ19pbXBsX2Jhc2UiLAogICAgICAgIi8vbWVkaWE6cnRjX2F1ZGlvX3ZpZGVvIiwKICAgICAg
ICIvL21lZGlhOnJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3MiLAogICAgICAgIi8vbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nIiwKKyAgICAgICIvL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGki
LAogICAgICAgIi8vbW9kdWxlcy91dGlsaXR5OnV0aWxpdHkiLAogICAgICAgIi8vcGM6bGliamlu
Z2xlX3BlZXJjb25uZWN0aW9uIiwKICAgICAgICIvL3J0Y19iYXNlOnJ0Y19iYXNlIiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVz
L2FuZHJvaWRuYXRpdmVhcGkvam5pL2FuZHJvaWRjYWxsY2xpZW50LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZG5hdGl2ZWFwaS9q
bmkvYW5kcm9pZGNhbGxjbGllbnQuY2MKaW5kZXggMDA1ZjM2OWE2ZDEwNDYyMmRkZGIwYmRiZWY4
MDcxYTgxMmYyMTIzMy4uYTEzOTRjZDAxYzUyM2RjNjkwNDgzMGYzYWM5YWY5ODc2YzQ5ZDVhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvYW5kcm9pZG5hdGl2ZWFwaS9qbmkvYW5kcm9pZGNhbGxjbGllbnQuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZG5h
dGl2ZWFwaS9qbmkvYW5kcm9pZGNhbGxjbGllbnQuY2MKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNs
dWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAj
aW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5o
IgogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgorI2luY2x1ZGUgImFw
aS92aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNs
dWRlICJleGFtcGxlcy9hbmRyb2lkbmF0aXZlYXBpL2dlbmVyYXRlZF9qbmkvam5pL0NhbGxDbGll
bnRfam5pLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3Rvcnku
aCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5oIgpAQCAt
OTksNyArMTAwLDggQEAgdm9pZCBBbmRyb2lkQ2FsbENsaWVudDo6Q2FsbChKTklFbnYqIGVudiwK
ICAgcmVtb3RlX3NpbmtfID0gd2VicnRjOjpKYXZhVG9OYXRpdmVWaWRlb1NpbmsoZW52LCByZW1v
dGVfc2luay5vYmooKSk7CiAKICAgdmlkZW9fc291cmNlXyA9IHdlYnJ0Yzo6Q3JlYXRlSmF2YVZp
ZGVvU291cmNlKGVudiwgc2lnbmFsaW5nX3RocmVhZF8uZ2V0KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICov
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlz
X3NjcmVlbmNhc3Q9ICovIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogYWxpZ25fdGltZXN0YW1wcz0gKi8gdHJ1ZSk7CiAKICAgQ3JlYXRl
UGVlckNvbm5lY3Rpb24oKTsKICAgQ29ubmVjdCgpOwpAQCAtMTU5LDYgKzE2MSw3IEBAIHZvaWQg
QW5kcm9pZENhbGxDbGllbnQ6OkNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgpIHsKICAgICAg
ICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5KCksCiAgICAgICAg
ICAgYWJzbDo6bWFrZV91bmlxdWU8d2VicnRjOjpJbnRlcm5hbEVuY29kZXJGYWN0b3J5PigpLAog
ICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6SW50ZXJuYWxEZWNvZGVyRmFjdG9y
eT4oKSwKKyAgICAgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0
b3JGYWN0b3J5KCksCiAgICAgICAgICAgbnVsbHB0ciAvKiBhdWRpb19taXhlciAqLywgd2VicnRj
OjpBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpOwogICBSVENfTE9HKExTX0lORk8p
IDw8ICJNZWRpYSBlbmdpbmUgY3JlYXRlZDogIiA8PCBtZWRpYV9lbmdpbmUuZ2V0KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1w
bGVzL2FuZHJvaWR0ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL0FuZHJvaWRNYW5p
ZmVzdC54bWwKaW5kZXggN2NkNTJiYzUzMWQ3NGI5ZTg2MWYwYjVjMzA2MmM5NWEzYTQ1NjRhZS4u
ZGFlMmU5ODBhNmE2MGE3ZjM0ZmVhYjhmOTNmNzcxZjRmZGMxZTkwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRl
c3RzL0FuZHJvaWRNYW5pZmVzdC54bWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL0FuZHJvaWRNYW5pZmVzdC54bWwK
QEAgLTE0LDcgKzE0LDcgQEAKICAgICAgIHBhY2thZ2U9Im9yZy5hcHBzcG90LmFwcHJ0Yy50ZXN0
Ij4KIAogICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Np
b24uUlVOX0lOU1RSVU1FTlRBVElPTiIgLz4KLSAgICA8dXNlcy1zZGsgYW5kcm9pZDptaW5TZGtW
ZXJzaW9uPSIxMyIgYW5kcm9pZDp0YXJnZXRTZGtWZXJzaW9uPSIyMSIgLz4KKyAgICA8dXNlcy1z
ZGsgYW5kcm9pZDptaW5TZGtWZXJzaW9uPSIxNiIgYW5kcm9pZDp0YXJnZXRTZGtWZXJzaW9uPSIy
MSIgLz4KIAogICAgIDxhcHBsaWNhdGlvbj4KICAgICAgICAgPHVzZXMtbGlicmFyeSBhbmRyb2lk
Om5hbWU9ImFuZHJvaWQudGVzdC5ydW5uZXIiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkdGVzdHMvc3JjL29y
Zy9hcHBzcG90L2FwcHJ0Yy90ZXN0L1BlZXJDb25uZWN0aW9uQ2xpZW50VGVzdC5qYXZhIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRl
c3RzL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvdGVzdC9QZWVyQ29ubmVjdGlvbkNsaWVudFRlc3Qu
amF2YQppbmRleCBlMjY3NDAxN2U0NTZlMDU5NzYxYmFmNTAyZmExNzkwNTI2OWEwMTBiLi5jMTY1
ZjU5YjAzM2Q1M2ZkZDA5MmFmNzMzYTE4MGNjN2RhNDY1ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkdGVzdHMv
c3JjL29yZy9hcHBzcG90L2FwcHJ0Yy90ZXN0L1BlZXJDb25uZWN0aW9uQ2xpZW50VGVzdC5qYXZh
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVz
L2FuZHJvaWR0ZXN0cy9zcmMvb3JnL2FwcHNwb3QvYXBwcnRjL3Rlc3QvUGVlckNvbm5lY3Rpb25D
bGllbnRUZXN0LmphdmEKQEAgLTE4Myw2ICsxODMsMTYgQEAgcHVibGljIGNsYXNzIFBlZXJDb25u
ZWN0aW9uQ2xpZW50VGVzdCBpbXBsZW1lbnRzIFBlZXJDb25uZWN0aW9uRXZlbnRzIHsKICAgICB9
CiAgIH0KIAorICBAT3ZlcnJpZGUKKyAgcHVibGljIHZvaWQgb25Db25uZWN0ZWQoKSB7CisgICAg
TG9nLmQoVEFHLCAiRFRMUyBDb25uZWN0ZWQiKTsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJs
aWMgdm9pZCBvbkRpc2Nvbm5lY3RlZCgpIHsKKyAgICBMb2cuZChUQUcsICJEVExTIERpc2Nvbm5l
Y3RlZCIpOworICB9CisKICAgQE92ZXJyaWRlCiAgIHB1YmxpYyB2b2lkIG9uUGVlckNvbm5lY3Rp
b25DbG9zZWQoKSB7CiAgICAgTG9nLmQoVEFHLCAiUGVlckNvbm5lY3Rpb24gY2xvc2VkIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFt
cGxlcy9hbmRyb2lkdGVzdHMvdmlkZW9fcXVhbGl0eV9sb29wYmFja190ZXN0LnB5IGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3Rz
L3ZpZGVvX3F1YWxpdHlfbG9vcGJhY2tfdGVzdC5weQppbmRleCAxOWRkMzdjM2QzNmJmYzg0ZWNj
OTgyNGFhYTY2MDdmNzNjMjFlZGQzLi5mYzE5OGE4MjZmNzk2MjQ0NGI2NDg1ODY4YjRiMjBhM2Q1
ZDZlMjk3IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9leGFtcGxlcy9hbmRyb2lkdGVzdHMvdmlkZW9fcXVhbGl0eV9sb29wYmFja190ZXN0LnB5
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVz
L2FuZHJvaWR0ZXN0cy92aWRlb19xdWFsaXR5X2xvb3BiYWNrX3Rlc3QucHkKQEAgLTE5MCwyMCAr
MTkwLDEzIEBAIGRlZiBSdW5UZXN0KGFuZHJvaWRfZGV2aWNlLCBhZGJfcGF0aCwgYnVpbGRfZGly
LCB0ZW1wX2RpciwgbnVtX3JldHJpZXMsCiAgICMgUnVuIGNvbXBhcmlzb24gc2NyaXB0LgogICBj
b21wYXJlX3NjcmlwdCA9IG9zLnBhdGguam9pbihTUkNfRElSLCAncnRjX3Rvb2xzJywgJ2NvbXBh
cmVfdmlkZW9zLnB5JykKICAgZnJhbWVfYW5hbHl6ZXIgPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGly
LCAnZnJhbWVfYW5hbHl6ZXJfaG9zdCcpCi0gIHp4aW5nX3BhdGggPSBvcy5wYXRoLmpvaW4oVE9P
TENIQUlOX0RJUiwgJ3p4aW5nJykKLSAgc3RhdHNfZmlsZV9yZWYgPSBvcy5wYXRoLmpvaW4odGVt
cF9kaXIsICdzdGF0c19yZWYudHh0JykKLSAgc3RhdHNfZmlsZV90ZXN0ID0gb3MucGF0aC5qb2lu
KHRlbXBfZGlyLCAnc3RhdHNfdGVzdC50eHQnKQogCiAgIGFyZ3MgPSBbCiAgICAgICAnLS1yZWZf
dmlkZW8nLCByZWZlcmVuY2VfdmlkZW9feXV2LAogICAgICAgJy0tdGVzdF92aWRlbycsIHRlc3Rf
dmlkZW9feXV2LAogICAgICAgJy0teXV2X2ZyYW1lX3dpZHRoJywgJzY0MCcsCiAgICAgICAnLS15
dXZfZnJhbWVfaGVpZ2h0JywgJzM2MCcsCi0gICAgICAnLS1zdGF0c19maWxlX3JlZicsIHN0YXRz
X2ZpbGVfcmVmLAotICAgICAgJy0tc3RhdHNfZmlsZV90ZXN0Jywgc3RhdHNfZmlsZV90ZXN0LAog
ICAgICAgJy0tZnJhbWVfYW5hbHl6ZXInLCBmcmFtZV9hbmFseXplciwKLSAgICAgICctLWZmbXBl
Z19wYXRoJywgZmZtcGVnX3BhdGgsCi0gICAgICAnLS16eGluZ19wYXRoJywgenhpbmdfcGF0aCwK
ICAgXQogICBpZiBjaGFydGpzb25fcmVzdWx0X2ZpbGU6CiAgICAgYXJncy5leHRlbmQoWyctLWNo
YXJ0anNvbl9yZXN1bHRfZmlsZScsIGNoYXJ0anNvbl9yZXN1bHRfZmlsZV0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpj
L0FwcFJUQ01vYmlsZS9BUkRBcHBDbGllbnQubSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL0FSREFwcENsaWVudC5t
CmluZGV4IDlhMGQzNjk1ZjkxNjE1NDY5Yzk5MGQxMTIyZDFhZWVjZGJmZjYwZTUuLjhiM2QxMDU3
OTdlMmZmZjY4NjFhYmE1ZGVhM2UxMGVlOTljYTExMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxl
L0FSREFwcENsaWVudC5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL0FSREFwcENsaWVudC5tCkBAIC00MDAs
MTAgKzQwMCwxNSBAQCAtICh2b2lkKXBlZXJDb25uZWN0aW9uOihSVENQZWVyQ29ubmVjdGlvbiAq
KXBlZXJDb25uZWN0aW9uCiAgICAgZGlkQ2hhbmdlSWNlQ29ubmVjdGlvblN0YXRlOihSVENJY2VD
b25uZWN0aW9uU3RhdGUpbmV3U3RhdGUgewogICBSVENMb2coQCJJQ0Ugc3RhdGUgY2hhbmdlZDog
JWxkIiwgKGxvbmcpbmV3U3RhdGUpOwogICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeewotICAgIFtfZGVsZWdhdGUgYXBwQ2xpZW50OnNlbGYgZGlkQ2hhbmdlQ29u
bmVjdGlvblN0YXRlOm5ld1N0YXRlXTsKKyAgICBbc2VsZi5kZWxlZ2F0ZSBhcHBDbGllbnQ6c2Vs
ZiBkaWRDaGFuZ2VDb25uZWN0aW9uU3RhdGU6bmV3U3RhdGVdOwogICB9KTsKIH0KIAorLSAodm9p
ZClwZWVyQ29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24gKilwZWVyQ29ubmVjdGlvbgorICAg
IGRpZENoYW5nZUNvbm5lY3Rpb25TdGF0ZTooUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSluZXdTdGF0
ZSB7CisgIFJUQ0xvZyhAIklDRStEVExTIHN0YXRlIGNoYW5nZWQ6ICVsZCIsIChsb25nKW5ld1N0
YXRlKTsKK30KKwogLSAodm9pZClwZWVyQ29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24gKilw
ZWVyQ29ubmVjdGlvbgogICAgIGRpZENoYW5nZUljZUdhdGhlcmluZ1N0YXRlOihSVENJY2VHYXRo
ZXJpbmdTdGF0ZSluZXdTdGF0ZSB7CiAgIFJUQ0xvZyhAIklDRSBnYXRoZXJpbmcgc3RhdGUgY2hh
bmdlZDogJWxkIiwgKGxvbmcpbmV3U3RhdGUpOwpAQCAtNDUwLDE2ICs0NTUsMTYgQEAgLSAodm9p
ZClwZWVyQ29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24gKilwZWVyQ29ubmVjdGlvbgogICAg
ICAgICAgIFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46a0FSREFwcENsaWVudEVycm9y
RG9tYWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTprQVJEQXBw
Q2xpZW50RXJyb3JDcmVhdGVTRFAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVz
ZXJJbmZvOnVzZXJJbmZvXTsKLSAgICAgIFtfZGVsZWdhdGUgYXBwQ2xpZW50OnNlbGYgZGlkRXJy
b3I6c2RwRXJyb3JdOworICAgICAgW3NlbGYuZGVsZWdhdGUgYXBwQ2xpZW50OnNlbGYgZGlkRXJy
b3I6c2RwRXJyb3JdOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgICBfX3dlYWsgQVJEQXBwQ2xp
ZW50ICp3ZWFrU2VsZiA9IHNlbGY7Ci0gICAgW19wZWVyQ29ubmVjdGlvbiBzZXRMb2NhbERlc2Ny
aXB0aW9uOnNkcAotICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
RXJyb3IgKmVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgQVJEQXBwQ2xpZW50ICpz
dHJvbmdTZWxmID0gd2Vha1NlbGY7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgW3N0cm9uZ1Nl
bGYgcGVlckNvbm5lY3Rpb246c3Ryb25nU2VsZi5wZWVyQ29ubmVjdGlvbgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRTZXRTZXNzaW9uRGVzY3JpcHRpb25XaXRoRXJyb3I6ZXJyb3Jd
OwotICAgICAgICAgICAgICAgICAgICAgICB9XTsKKyAgICBbc2VsZi5wZWVyQ29ubmVjdGlvbiBz
ZXRMb2NhbERlc2NyaXB0aW9uOnNkcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBUkRBcHBDbGllbnQgKnN0cm9uZ1NlbGYgPSB3ZWFrU2VsZjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW3N0cm9uZ1NlbGYgcGVlckNvbm5lY3Rpb246c3Ryb25nU2VsZi5wZWVy
Q29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU2V0U2Vzc2lv
bkRlc2NyaXB0aW9uV2l0aEVycm9yOmVycm9yXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IH1dOwogICAgIEFSRFNlc3Npb25EZXNjcmlwdGlvbk1lc3NhZ2UgKm1lc3NhZ2UgPQogICAgICAg
ICBbW0FSRFNlc3Npb25EZXNjcmlwdGlvbk1lc3NhZ2UgYWxsb2NdIGluaXRXaXRoRGVzY3JpcHRp
b246c2RwXTsKICAgICBbc2VsZiBzZW5kU2lnbmFsaW5nTWVzc2FnZTptZXNzYWdlXTsKQEAgLTQ4
MCwyMiArNDg1LDIxIEBAIC0gKHZvaWQpcGVlckNvbm5lY3Rpb246KFJUQ1BlZXJDb25uZWN0aW9u
ICopcGVlckNvbm5lY3Rpb24KICAgICAgICAgICBbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9t
YWluOmtBUkRBcHBDbGllbnRFcnJvckRvbWFpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvZGU6a0FSREFwcENsaWVudEVycm9yU2V0U0RQCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1c2VySW5mbzp1c2VySW5mb107Ci0gICAgICBbX2RlbGVnYXRlIGFw
cENsaWVudDpzZWxmIGRpZEVycm9yOnNkcEVycm9yXTsKKyAgICAgIFtzZWxmLmRlbGVnYXRlIGFw
cENsaWVudDpzZWxmIGRpZEVycm9yOnNkcEVycm9yXTsKICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgLy8gSWYgd2UncmUgYW5zd2VyaW5nIGFuZCB3ZSd2ZSBqdXN0IHNldCB0aGUgcmVtb3RlIG9m
ZmVyIHdlIG5lZWQgdG8gY3JlYXRlCiAgICAgLy8gYW4gYW5zd2VyIGFuZCBzZXQgdGhlIGxvY2Fs
IGRlc2NyaXB0aW9uLgotICAgIGlmICghX2lzSW5pdGlhdG9yICYmICFfcGVlckNvbm5lY3Rpb24u
bG9jYWxEZXNjcmlwdGlvbikgeworICAgIGlmICghc2VsZi5pc0luaXRpYXRvciAmJiAhc2VsZi5w
ZWVyQ29ubmVjdGlvbi5sb2NhbERlc2NyaXB0aW9uKSB7CiAgICAgICBSVENNZWRpYUNvbnN0cmFp
bnRzICpjb25zdHJhaW50cyA9IFtzZWxmIGRlZmF1bHRBbnN3ZXJDb25zdHJhaW50c107CiAgICAg
ICBfX3dlYWsgQVJEQXBwQ2xpZW50ICp3ZWFrU2VsZiA9IHNlbGY7Ci0gICAgICBbX3BlZXJDb25u
ZWN0aW9uIGFuc3dlckZvckNvbnN0cmFpbnRzOmNvbnN0cmFpbnRzCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyOl4oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uICpzZHAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNFcnJvciAq
ZXJyb3IpIHsKLSAgICAgICAgQVJEQXBwQ2xpZW50ICpzdHJvbmdTZWxmID0gd2Vha1NlbGY7Ci0g
ICAgICAgIFtzdHJvbmdTZWxmIHBlZXJDb25uZWN0aW9uOnN0cm9uZ1NlbGYucGVlckNvbm5lY3Rp
b24KLSAgICAgICAgICAgIGRpZENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbjpzZHAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjplcnJvcl07Ci0gICAgICB9XTsKKyAgICAg
IFtzZWxmLnBlZXJDb25uZWN0aW9uIGFuc3dlckZvckNvbnN0cmFpbnRzOmNvbnN0cmFpbnRzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcjpeKFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbiAqc2RwLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBUkRBcHBDbGllbnQgKnN0cm9uZ1NlbGYgPSB3ZWFrU2VsZjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cm9uZ1NlbGYgcGVlckNvbm5lY3Rpb246c3Ry
b25nU2VsZi5wZWVyQ29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uOnNkcAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOmVycm9yXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH1dOwogICAgIH0KICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpj
L0FwcFJUQ01vYmlsZS9BUkRTdGF0c0J1aWxkZXIubSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL0FSRFN0YXRzQnVp
bGRlci5tCmluZGV4IGNmZTJlYzVjZDgyODU2OTAwN2YyMzliMWRlYmQ3NzM4Y2UxZGJkOWUuLmY5
YTE5MjAzOTkyMTFiZjdhNjNjMGFkZmE3N2YzMjFjN2VkYTQzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRD
TW9iaWxlL0FSRFN0YXRzQnVpbGRlci5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL0FSRFN0YXRzQnVpbGRl
ci5tCkBAIC0xNjcsMjMgKzE2Nyw0MyBAQCAtIChpbnQpY2FsY3VsYXRlQXZnUVAgewogICByZXR1
cm4gZGVsdGFGcmFtZXNFbmNvZGVkICE9IDAgPyBkZWx0YVFQU3VtIC8gZGVsdGFGcmFtZXNFbmNv
ZGVkIDogMDsKIH0KIAorLSAodm9pZCl1cGRhdGVCd2VTdGF0T2ZLZXk6KE5TU3RyaW5nICopa2V5
IHZhbHVlOihOU1N0cmluZyAqKXZhbHVlIHsKKyAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAi
Z29vZ0F2YWlsYWJsZVNlbmRCYW5kd2lkdGgiXSkgeworICAgIF9hdmFpbGFibGVTZW5kQncgPSBb
QVJEQml0cmF0ZVRyYWNrZXIgYml0cmF0ZVN0cmluZ0ZvckJpdHJhdGU6dmFsdWUuZG91YmxlVmFs
dWVdOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0F2YWlsYWJsZVJl
Y2VpdmVCYW5kd2lkdGgiXSkgeworICAgIF9hdmFpbGFibGVSZWN2QncgPSBbQVJEQml0cmF0ZVRy
YWNrZXIgYml0cmF0ZVN0cmluZ0ZvckJpdHJhdGU6dmFsdWUuZG91YmxlVmFsdWVdOworICB9IGVs
c2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0FjdHVhbEVuY0JpdHJhdGUiXSkgewor
ICAgIF9hY3R1YWxFbmNCaXRyYXRlID0gW0FSREJpdHJhdGVUcmFja2VyIGJpdHJhdGVTdHJpbmdG
b3JCaXRyYXRlOnZhbHVlLmRvdWJsZVZhbHVlXTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxU
b1N0cmluZzpAImdvb2dUYXJnZXRFbmNCaXRyYXRlIl0pIHsKKyAgICBfdGFyZ2V0RW5jQml0cmF0
ZSA9IFtBUkRCaXRyYXRlVHJhY2tlciBiaXRyYXRlU3RyaW5nRm9yQml0cmF0ZTp2YWx1ZS5kb3Vi
bGVWYWx1ZV07CisgIH0KK30KKwogLSAodm9pZClwYXJzZUJ3ZVN0YXRzUmVwb3J0OihSVENMZWdh
Y3lTdGF0c1JlcG9ydCAqKXN0YXRzUmVwb3J0IHsKLSAgW3N0YXRzUmVwb3J0LnZhbHVlcyBlbnVt
ZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XigKLSAgICAgIE5TU3RyaW5nICprZXksIE5T
U3RyaW5nICp2YWx1ZSwgQk9PTCAqc3RvcCkgewotICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmlu
ZzpAImdvb2dBdmFpbGFibGVTZW5kQmFuZHdpZHRoIl0pIHsKLSAgICAgIF9hdmFpbGFibGVTZW5k
QncgPQotICAgICAgICAgIFtBUkRCaXRyYXRlVHJhY2tlciBiaXRyYXRlU3RyaW5nRm9yQml0cmF0
ZTp2YWx1ZS5kb3VibGVWYWx1ZV07Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmlu
ZzpAImdvb2dBdmFpbGFibGVSZWNlaXZlQmFuZHdpZHRoIl0pIHsKLSAgICAgIF9hdmFpbGFibGVS
ZWN2QncgPQotICAgICAgICAgIFtBUkRCaXRyYXRlVHJhY2tlciBiaXRyYXRlU3RyaW5nRm9yQml0
cmF0ZTp2YWx1ZS5kb3VibGVWYWx1ZV07Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0
cmluZzpAImdvb2dBY3R1YWxFbmNCaXRyYXRlIl0pIHsKLSAgICAgIF9hY3R1YWxFbmNCaXRyYXRl
ID0KLSAgICAgICAgICBbQVJEQml0cmF0ZVRyYWNrZXIgYml0cmF0ZVN0cmluZ0ZvckJpdHJhdGU6
dmFsdWUuZG91YmxlVmFsdWVdOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6
QCJnb29nVGFyZ2V0RW5jQml0cmF0ZSJdKSB7Ci0gICAgICBfdGFyZ2V0RW5jQml0cmF0ZSA9Ci0g
ICAgICAgICAgW0FSREJpdHJhdGVUcmFja2VyIGJpdHJhdGVTdHJpbmdGb3JCaXRyYXRlOnZhbHVl
LmRvdWJsZVZhbHVlXTsKLSAgICB9Ci0gIH1dOworICBbc3RhdHNSZXBvcnQudmFsdWVzCisgICAg
ICBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqa2V5LCBOU1N0
cmluZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgW3NlbGYgdXBkYXRlQndlU3RhdE9m
S2V5OmtleSB2YWx1ZTp2YWx1ZV07CisgICAgICB9XTsKK30KKworLSAodm9pZCl1cGRhdGVDb25u
ZWN0aW9uU3RhdE9mS2V5OihOU1N0cmluZyAqKWtleSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSB7
CisgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dSdHQiXSkgeworICAgIF9jb25uUnR0
ID0gdmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nTG9jYWxD
YW5kaWRhdGVUeXBlIl0pIHsKKyAgICBfbG9jYWxDYW5kVHlwZSA9IHZhbHVlOworICB9IGVsc2Ug
aWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ1JlbW90ZUNhbmRpZGF0ZVR5cGUiXSkgewor
ICAgIF9yZW1vdGVDYW5kVHlwZSA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRv
U3RyaW5nOkAiZ29vZ1RyYW5zcG9ydFR5cGUiXSkgeworICAgIF90cmFuc3BvcnRUeXBlID0gdmFs
dWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1JlY2VpdmVkIl0p
IHsKKyAgICBOU0ludGVnZXIgYnl0ZUNvdW50ID0gdmFsdWUuaW50ZWdlclZhbHVlOworICAgIFtf
Y29ublJlY3ZCaXRyYXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRlQ291bnQ6
Ynl0ZUNvdW50XTsKKyAgICBfY29ublJlY3ZCaXRyYXRlID0gX2Nvbm5SZWN2Qml0cmF0ZVRyYWNr
ZXIuYml0cmF0ZVN0cmluZzsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImJ5
dGVzU2VudCJdKSB7CisgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZhbHVlLmludGVnZXJWYWx1
ZTsKKyAgICBbX2Nvbm5TZW5kQml0cmF0ZVRyYWNrZXIgdXBkYXRlQml0cmF0ZVdpdGhDdXJyZW50
Qnl0ZUNvdW50OmJ5dGVDb3VudF07CisgICAgX2Nvbm5TZW5kQml0cmF0ZSA9IF9jb25uU2VuZEJp
dHJhdGVUcmFja2VyLmJpdHJhdGVTdHJpbmc7CisgIH0KIH0KIAogLSAodm9pZClwYXJzZUNvbm5l
Y3Rpb25TdGF0c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7CkBA
IC0xOTEsMjYgKzIxMSwxMCBAQCAtICh2b2lkKXBhcnNlQ29ubmVjdGlvblN0YXRzUmVwb3J0OihS
VENMZWdhY3lTdGF0c1JlcG9ydCAqKXN0YXRzUmVwb3J0IHsKICAgaWYgKCFbYWN0aXZlQ29ubmVj
dGlvbiBpc0VxdWFsVG9TdHJpbmc6QCJ0cnVlIl0pIHsKICAgICByZXR1cm47CiAgIH0KLSAgW3N0
YXRzUmVwb3J0LnZhbHVlcyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XigKLSAg
ICAgIE5TU3RyaW5nICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAqc3RvcCkgewotICAgIGlm
IChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dSdHQiXSkgewotICAgICAgX2Nvbm5SdHQgPSB2
YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0xvY2FsQ2Fu
ZGlkYXRlVHlwZSJdKSB7Ci0gICAgICBfbG9jYWxDYW5kVHlwZSA9IHZhbHVlOwotICAgIH0gZWxz
ZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nUmVtb3RlQ2FuZGlkYXRlVHlwZSJdKSB7
Ci0gICAgICBfcmVtb3RlQ2FuZFR5cGUgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNF
cXVhbFRvU3RyaW5nOkAiZ29vZ1RyYW5zcG9ydFR5cGUiXSkgewotICAgICAgX3RyYW5zcG9ydFR5
cGUgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiYnl0ZXNS
ZWNlaXZlZCJdKSB7Ci0gICAgICBOU0ludGVnZXIgYnl0ZUNvdW50ID0gdmFsdWUuaW50ZWdlclZh
bHVlOwotICAgICAgW19jb25uUmVjdkJpdHJhdGVUcmFja2VyIHVwZGF0ZUJpdHJhdGVXaXRoQ3Vy
cmVudEJ5dGVDb3VudDpieXRlQ291bnRdOwotICAgICAgX2Nvbm5SZWN2Qml0cmF0ZSA9IF9jb25u
UmVjdkJpdHJhdGVUcmFja2VyLmJpdHJhdGVTdHJpbmc7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlz
RXF1YWxUb1N0cmluZzpAImJ5dGVzU2VudCJdKSB7Ci0gICAgICBOU0ludGVnZXIgYnl0ZUNvdW50
ID0gdmFsdWUuaW50ZWdlclZhbHVlOwotICAgICAgW19jb25uU2VuZEJpdHJhdGVUcmFja2VyIHVw
ZGF0ZUJpdHJhdGVXaXRoQ3VycmVudEJ5dGVDb3VudDpieXRlQ291bnRdOwotICAgICAgX2Nvbm5T
ZW5kQml0cmF0ZSA9IF9jb25uU2VuZEJpdHJhdGVUcmFja2VyLmJpdHJhdGVTdHJpbmc7Ci0gICAg
fQotICB9XTsKKyAgW3N0YXRzUmVwb3J0LnZhbHVlcworICAgICAgZW51bWVyYXRlS2V5c0FuZE9i
amVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcgKnZhbHVlLCBCT09MICpz
dG9wKSB7CisgICAgICAgIFtzZWxmIHVwZGF0ZUNvbm5lY3Rpb25TdGF0T2ZLZXk6a2V5IHZhbHVl
OnZhbHVlXTsKKyAgICAgIH1dOwogfQogCiAtICh2b2lkKXBhcnNlU2VuZFNzcmNTdGF0c1JlcG9y
dDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7CkBAIC0yMjQsNTAgKzIyOCw1
OCBAQCAtICh2b2lkKXBhcnNlU2VuZFNzcmNTdGF0c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNSZXBv
cnQgKilzdGF0c1JlcG9ydCB7CiAgIH0KIH0KIAorLSAodm9pZCl1cGRhdGVBdWRpb1NlbmRTdGF0
T2ZLZXk6KE5TU3RyaW5nICopa2V5IHZhbHVlOihOU1N0cmluZyAqKXZhbHVlIHsKKyAgaWYgKFtr
ZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0NvZGVjTmFtZSJdKSB7CisgICAgX2F1ZGlvU2VuZENv
ZGVjID0gdmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1Nl
bnQiXSkgeworICAgIE5TSW50ZWdlciBieXRlQ291bnQgPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7Cisg
ICAgW19hdWRpb1NlbmRCaXRyYXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRl
Q291bnQ6Ynl0ZUNvdW50XTsKKyAgICBfYXVkaW9TZW5kQml0cmF0ZSA9IF9hdWRpb1NlbmRCaXRy
YXRlVHJhY2tlci5iaXRyYXRlU3RyaW5nOworICB9Cit9CisKIC0gKHZvaWQpcGFyc2VBdWRpb1Nl
bmRTdGF0c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7Ci0gIFtz
dGF0c1JlcG9ydC52YWx1ZXMgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oCi0g
ICAgICBOU1N0cmluZyAqa2V5LCBOU1N0cmluZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsKLSAgICBp
ZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nQ29kZWNOYW1lIl0pIHsKLSAgICAgIF9hdWRp
b1NlbmRDb2RlYyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6
QCJieXRlc1NlbnQiXSkgewotICAgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZhbHVlLmludGVn
ZXJWYWx1ZTsKLSAgICAgIFtfYXVkaW9TZW5kQml0cmF0ZVRyYWNrZXIgdXBkYXRlQml0cmF0ZVdp
dGhDdXJyZW50Qnl0ZUNvdW50OmJ5dGVDb3VudF07Ci0gICAgICBfYXVkaW9TZW5kQml0cmF0ZSA9
IF9hdWRpb1NlbmRCaXRyYXRlVHJhY2tlci5iaXRyYXRlU3RyaW5nOwotICAgIH0KLSAgfV07Cisg
IFtzdGF0c1JlcG9ydC52YWx1ZXMKKyAgICAgIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdC
bG9jazpeKE5TU3RyaW5nICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAqc3RvcCkgeworICAg
ICAgICBbc2VsZiB1cGRhdGVBdWRpb1NlbmRTdGF0T2ZLZXk6a2V5IHZhbHVlOnZhbHVlXTsKKyAg
ICAgIH1dOworfQorCistICh2b2lkKXVwZGF0ZVZpZGVvU2VuZFN0YXRPZktleTooTlNTdHJpbmcg
KilrZXkgdmFsdWU6KE5TU3RyaW5nICopdmFsdWUgeworICBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJnb29nQ29kZWNOYW1lIl0pIHsKKyAgICBfdmlkZW9TZW5kQ29kZWMgPSB2YWx1ZTsKKyAg
fSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZUhlaWdodElucHV0Il0p
IHsKKyAgICBfdmlkZW9JbnB1dEhlaWdodCA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNF
cXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lV2lkdGhJbnB1dCJdKSB7CisgICAgX3ZpZGVvSW5wdXRX
aWR0aCA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0Zy
YW1lUmF0ZUlucHV0Il0pIHsKKyAgICBfdmlkZW9JbnB1dEZwcyA9IHZhbHVlOworICB9IGVsc2Ug
aWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lSGVpZ2h0U2VudCJdKSB7CisgICAg
X3ZpZGVvU2VuZEhlaWdodCA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3Ry
aW5nOkAiZ29vZ0ZyYW1lV2lkdGhTZW50Il0pIHsKKyAgICBfdmlkZW9TZW5kV2lkdGggPSB2YWx1
ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVJhdGVTZW50
Il0pIHsKKyAgICBfdmlkZW9TZW5kRnBzID0gdmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0Vx
dWFsVG9TdHJpbmc6QCJnb29nQXZnRW5jb2RlTXMiXSkgeworICAgIF92aWRlb0VuY29kZU1zID0g
dmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1NlbnQiXSkg
eworICAgIE5TSW50ZWdlciBieXRlQ291bnQgPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7CisgICAgW192
aWRlb1NlbmRCaXRyYXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRlQ291bnQ6
Ynl0ZUNvdW50XTsKKyAgICBfdmlkZW9TZW5kQml0cmF0ZSA9IF92aWRlb1NlbmRCaXRyYXRlVHJh
Y2tlci5iaXRyYXRlU3RyaW5nOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAi
cXBTdW0iXSkgeworICAgIF9vbGRWaWRlb1FQU3VtID0gX3ZpZGVvUVBTdW07CisgICAgX3ZpZGVv
UVBTdW0gPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9T
dHJpbmc6QCJmcmFtZXNFbmNvZGVkIl0pIHsKKyAgICBfb2xkRnJhbWVzRW5jb2RlZCA9IF9mcmFt
ZXNFbmNvZGVkOworICAgIF9mcmFtZXNFbmNvZGVkID0gdmFsdWUuaW50ZWdlclZhbHVlOworICB9
CiB9CiAKIC0gKHZvaWQpcGFyc2VWaWRlb1NlbmRTdGF0c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNS
ZXBvcnQgKilzdGF0c1JlcG9ydCB7Ci0gIFtzdGF0c1JlcG9ydC52YWx1ZXMgZW51bWVyYXRlS2V5
c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oCi0gICAgICBOU1N0cmluZyAqa2V5LCBOU1N0cmluZyAq
dmFsdWUsIEJPT0wgKnN0b3ApIHsKLSAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29n
Q29kZWNOYW1lIl0pIHsKLSAgICAgIF92aWRlb1NlbmRDb2RlYyA9IHZhbHVlOwotICAgIH0gZWxz
ZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVIZWlnaHRJbnB1dCJdKSB7Ci0g
ICAgICBfdmlkZW9JbnB1dEhlaWdodCA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0Vx
dWFsVG9TdHJpbmc6QCJnb29nRnJhbWVXaWR0aElucHV0Il0pIHsKLSAgICAgIF92aWRlb0lucHV0
V2lkdGggPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29v
Z0ZyYW1lUmF0ZUlucHV0Il0pIHsKLSAgICAgIF92aWRlb0lucHV0RnBzID0gdmFsdWU7Ci0gICAg
fSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZUhlaWdodFNlbnQiXSkg
ewotICAgICAgX3ZpZGVvU2VuZEhlaWdodCA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBp
c0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVXaWR0aFNlbnQiXSkgewotICAgICAgX3ZpZGVvU2Vu
ZFdpZHRoID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdv
b2dGcmFtZVJhdGVTZW50Il0pIHsKLSAgICAgIF92aWRlb1NlbmRGcHMgPSB2YWx1ZTsKLSAgICB9
IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0F2Z0VuY29kZU1zIl0pIHsKLSAg
ICAgIF92aWRlb0VuY29kZU1zID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxU
b1N0cmluZzpAImJ5dGVzU2VudCJdKSB7Ci0gICAgICBOU0ludGVnZXIgYnl0ZUNvdW50ID0gdmFs
dWUuaW50ZWdlclZhbHVlOwotICAgICAgW192aWRlb1NlbmRCaXRyYXRlVHJhY2tlciB1cGRhdGVC
aXRyYXRlV2l0aEN1cnJlbnRCeXRlQ291bnQ6Ynl0ZUNvdW50XTsKLSAgICAgIF92aWRlb1NlbmRC
aXRyYXRlID0gX3ZpZGVvU2VuZEJpdHJhdGVUcmFja2VyLmJpdHJhdGVTdHJpbmc7Ci0gICAgfSBl
bHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAInFwU3VtIl0pIHsKLSAgICAgIF9vbGRWaWRl
b1FQU3VtID0gX3ZpZGVvUVBTdW07Ci0gICAgICBfdmlkZW9RUFN1bSA9IHZhbHVlLmludGVnZXJW
YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWVzRW5jb2Rl
ZCJdKSB7Ci0gICAgICBfb2xkRnJhbWVzRW5jb2RlZCA9IF9mcmFtZXNFbmNvZGVkOwotICAgICAg
X2ZyYW1lc0VuY29kZWQgPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7Ci0gICAgfQotICB9XTsKKyAgW3N0
YXRzUmVwb3J0LnZhbHVlcworICAgICAgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2Nr
Ol4oTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcgKnZhbHVlLCBCT09MICpzdG9wKSB7CisgICAgICAg
IFtzZWxmIHVwZGF0ZVZpZGVvU2VuZFN0YXRPZktleTprZXkgdmFsdWU6dmFsdWVdOworICAgICAg
fV07CiB9CiAKIC0gKHZvaWQpcGFyc2VSZWN2U3NyY1N0YXRzUmVwb3J0OihSVENMZWdhY3lTdGF0
c1JlcG9ydCAqKXN0YXRzUmVwb3J0IHsKQEAgLTI4MSw0NCArMjkzLDUyIEBAIC0gKHZvaWQpcGFy
c2VSZWN2U3NyY1N0YXRzUmVwb3J0OihSVENMZWdhY3lTdGF0c1JlcG9ydCAqKXN0YXRzUmVwb3J0
IHsKICAgfQogfQogCistICh2b2lkKXVwZGF0ZUF1ZGlvUmVjdlN0YXRPZktleTooTlNTdHJpbmcg
KilrZXkgdmFsdWU6KE5TU3RyaW5nICopdmFsdWUgeworICBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJnb29nQ29kZWNOYW1lIl0pIHsKKyAgICBfYXVkaW9SZWN2Q29kZWMgPSB2YWx1ZTsKKyAg
fSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImJ5dGVzUmVjZWl2ZWQiXSkgeworICAg
IE5TSW50ZWdlciBieXRlQ291bnQgPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7CisgICAgW19hdWRpb1Jl
Y3ZCaXRyYXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRlQ291bnQ6Ynl0ZUNv
dW50XTsKKyAgICBfYXVkaW9SZWN2Qml0cmF0ZSA9IF9hdWRpb1JlY3ZCaXRyYXRlVHJhY2tlci5i
aXRyYXRlU3RyaW5nOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ1Nw
ZWVjaEV4cGFuZFJhdGUiXSkgeworICAgIF9hdWRpb0V4cGFuZFJhdGUgPSB2YWx1ZTsKKyAgfSBl
bHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dDdXJyZW50RGVsYXlNcyJdKSB7Cisg
ICAgX2F1ZGlvQ3VycmVudERlbGF5ID0gdmFsdWU7CisgIH0KK30KKwogLSAodm9pZClwYXJzZUF1
ZGlvUmVjdlN0YXRzUmVwb3J0OihSVENMZWdhY3lTdGF0c1JlcG9ydCAqKXN0YXRzUmVwb3J0IHsK
LSAgW3N0YXRzUmVwb3J0LnZhbHVlcyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6
XigKLSAgICAgIE5TU3RyaW5nICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAqc3RvcCkgewot
ICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dDb2RlY05hbWUiXSkgewotICAgICAg
X2F1ZGlvUmVjdkNvZGVjID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0
cmluZzpAImJ5dGVzUmVjZWl2ZWQiXSkgewotICAgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZh
bHVlLmludGVnZXJWYWx1ZTsKLSAgICAgIFtfYXVkaW9SZWN2Qml0cmF0ZVRyYWNrZXIgdXBkYXRl
Qml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50OmJ5dGVDb3VudF07Ci0gICAgICBfYXVkaW9SZWN2
Qml0cmF0ZSA9IF9hdWRpb1JlY3ZCaXRyYXRlVHJhY2tlci5iaXRyYXRlU3RyaW5nOwotICAgIH0g
ZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nU3BlZWNoRXhwYW5kUmF0ZSJdKSB7
Ci0gICAgICBfYXVkaW9FeHBhbmRSYXRlID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlz
RXF1YWxUb1N0cmluZzpAImdvb2dDdXJyZW50RGVsYXlNcyJdKSB7Ci0gICAgICBfYXVkaW9DdXJy
ZW50RGVsYXkgPSB2YWx1ZTsKLSAgICB9Ci0gIH1dOworICBbc3RhdHNSZXBvcnQudmFsdWVzCisg
ICAgICBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqa2V5LCBO
U1N0cmluZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgW3NlbGYgdXBkYXRlQXVkaW9S
ZWN2U3RhdE9mS2V5OmtleSB2YWx1ZTp2YWx1ZV07CisgICAgICB9XTsKK30KKworLSAodm9pZCl1
cGRhdGVWaWRlb1JlY3ZTdGF0T2ZLZXk6KE5TU3RyaW5nICopa2V5IHZhbHVlOihOU1N0cmluZyAq
KXZhbHVlIHsKKyAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lSGVpZ2h0UmVj
ZWl2ZWQiXSkgeworICAgIF92aWRlb1JlY3ZIZWlnaHQgPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChb
a2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVdpZHRoUmVjZWl2ZWQiXSkgeworICAgIF92
aWRlb1JlY3ZXaWR0aCA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5n
OkAiZ29vZ0ZyYW1lUmF0ZVJlY2VpdmVkIl0pIHsKKyAgICBfdmlkZW9SZWN2RnBzID0gdmFsdWU7
CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVSYXRlRGVjb2Rl
ZCJdKSB7CisgICAgX3ZpZGVvRGVjb2RlZEZwcyA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkg
aXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lUmF0ZU91dHB1dCJdKSB7CisgICAgX3ZpZGVvT3V0
cHV0RnBzID0gdmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29n
RGVjb2RlTXMiXSkgeworICAgIF92aWRlb0RlY29kZU1zID0gdmFsdWU7CisgIH0gZWxzZSBpZiAo
W2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1JlY2VpdmVkIl0pIHsKKyAgICBOU0ludGVnZXIg
Ynl0ZUNvdW50ID0gdmFsdWUuaW50ZWdlclZhbHVlOworICAgIFtfdmlkZW9SZWN2Qml0cmF0ZVRy
YWNrZXIgdXBkYXRlQml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50OmJ5dGVDb3VudF07CisgICAg
X3ZpZGVvUmVjdkJpdHJhdGUgPSBfdmlkZW9SZWN2Qml0cmF0ZVRyYWNrZXIuYml0cmF0ZVN0cmlu
ZzsKKyAgfQogfQogCiAtICh2b2lkKXBhcnNlVmlkZW9SZWN2U3RhdHNSZXBvcnQ6KFJUQ0xlZ2Fj
eVN0YXRzUmVwb3J0ICopc3RhdHNSZXBvcnQgewotICBbc3RhdHNSZXBvcnQudmFsdWVzIGVudW1l
cmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKAotICAgICAgTlNTdHJpbmcgKmtleSwgTlNT
dHJpbmcgKnZhbHVlLCBCT09MICpzdG9wKSB7Ci0gICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5n
OkAiZ29vZ0ZyYW1lSGVpZ2h0UmVjZWl2ZWQiXSkgewotICAgICAgX3ZpZGVvUmVjdkhlaWdodCA9
IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVX
aWR0aFJlY2VpdmVkIl0pIHsKLSAgICAgIF92aWRlb1JlY3ZXaWR0aCA9IHZhbHVlOwotICAgIH0g
ZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVSYXRlUmVjZWl2ZWQiXSkg
ewotICAgICAgX3ZpZGVvUmVjdkZwcyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0Vx
dWFsVG9TdHJpbmc6QCJnb29nRnJhbWVSYXRlRGVjb2RlZCJdKSB7Ci0gICAgICBfdmlkZW9EZWNv
ZGVkRnBzID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdv
b2dGcmFtZVJhdGVPdXRwdXQiXSkgewotICAgICAgX3ZpZGVvT3V0cHV0RnBzID0gdmFsdWU7Ci0g
ICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dEZWNvZGVNcyJdKSB7Ci0g
ICAgICBfdmlkZW9EZWNvZGVNcyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFs
VG9TdHJpbmc6QCJieXRlc1JlY2VpdmVkIl0pIHsKLSAgICAgIE5TSW50ZWdlciBieXRlQ291bnQg
PSB2YWx1ZS5pbnRlZ2VyVmFsdWU7Ci0gICAgICBbX3ZpZGVvUmVjdkJpdHJhdGVUcmFja2VyIHVw
ZGF0ZUJpdHJhdGVXaXRoQ3VycmVudEJ5dGVDb3VudDpieXRlQ291bnRdOwotICAgICAgX3ZpZGVv
UmVjdkJpdHJhdGUgPSBfdmlkZW9SZWN2Qml0cmF0ZVRyYWNrZXIuYml0cmF0ZVN0cmluZzsKLSAg
ICB9Ci0gIH1dOworICBbc3RhdHNSZXBvcnQudmFsdWVzCisgICAgICBlbnVtZXJhdGVLZXlzQW5k
T2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqa2V5LCBOU1N0cmluZyAqdmFsdWUsIEJPT0wg
KnN0b3ApIHsKKyAgICAgICAgW3NlbGYgdXBkYXRlVmlkZW9SZWN2U3RhdE9mS2V5OmtleSB2YWx1
ZTp2YWx1ZV07CisgICAgICB9XTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUv
aW9zL0FSRE1haW5WaWV3Q29udHJvbGxlci5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvaW9zL0FSRE1haW5WaWV3
Q29udHJvbGxlci5tCmluZGV4IGZhZTNmN2I4YWE3MjY3YzZkYjQ1YmVmMjYyZWQ5YjM1NjBjNmIy
MGQuLjYzYjNkZDc2Y2FkMDI1ZDliYzk4NTExMGFkYzUyMzMxNDQyOGFlMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMv
QXBwUlRDTW9iaWxlL2lvcy9BUkRNYWluVmlld0NvbnRyb2xsZXIubQorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmls
ZS9pb3MvQVJETWFpblZpZXdDb250cm9sbGVyLm0KQEAgLTMyLDE0ICszMiwxNyBAQCBAaW50ZXJm
YWNlIEFSRE1haW5WaWV3Q29udHJvbGxlciAoKSA8CiAgICAgQVJETWFpblZpZXdEZWxlZ2F0ZSwK
ICAgICBBUkRWaWRlb0NhbGxWaWV3Q29udHJvbGxlckRlbGVnYXRlLAogICAgIFJUQ0F1ZGlvU2Vz
c2lvbkRlbGVnYXRlPgorQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBBUkRNYWluVmlldyAq
bWFpblZpZXc7CitAcHJvcGVydHkobm9uYXRvbWljLCBzdHJvbmcpIEFWQXVkaW9QbGF5ZXIgKmF1
ZGlvUGxheWVyOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gQVJETWFpblZpZXdDb250cm9sbGVy
IHsKLSAgQVJETWFpblZpZXcgKl9tYWluVmlldzsKLSAgQVZBdWRpb1BsYXllciAqX2F1ZGlvUGxh
eWVyOwogICBCT09MIF91c2VNYW51YWxBdWRpbzsKIH0KIAorQHN5bnRoZXNpemUgbWFpblZpZXcg
PSBfbWFpblZpZXc7CitAc3ludGhlc2l6ZSBhdWRpb1BsYXllciA9IF9hdWRpb1BsYXllcjsKKwog
LSAodm9pZCl2aWV3RGlkTG9hZCB7CiAgIFtzdXBlciB2aWV3RGlkTG9hZF07CiAgIGlmIChbW1tO
U1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBhcmd1bWVudHNdIGNvbnRhaW5zT2JqZWN0Omxvb3Bi
YWNrTGF1bmNoUHJvY2Vzc0FyZ3VtZW50XSkgewpAQCAtMTY1LDEzICsxNjgsMTMgQEAgLSAodm9p
ZClhdWRpb1Nlc3Npb25EaWRTdGFydFBsYXlPclJlY29yZDooUlRDQXVkaW9TZXNzaW9uICopc2Vz
c2lvbiB7CiAgIC8vIFN0b3AgcGxheWJhY2sgb24gbWFpbiBxdWV1ZSBhbmQgdGhlbiBjb25maWd1
cmUgV2ViUlRDLgogICBbUlRDRGlzcGF0Y2hlciBkaXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3Bh
dGNoZXJUeXBlTWFpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57Ci0g
ICAgaWYgKF9tYWluVmlldy5pc0F1ZGlvTG9vcFBsYXlpbmcpIHsKLSAgICAgIFJUQ0xvZyhAIlN0
b3BwaW5nIGF1ZGlvIGxvb3AgZHVlIHRvIFdlYlJUQyBzdGFydC4iKTsKLSAgICAgIFtfYXVkaW9Q
bGF5ZXIgc3RvcF07Ci0gICAgfQotICAgIFJUQ0xvZyhAIlNldHRpbmcgaXNBdWRpb0VuYWJsZWQg
dG8gWUVTLiIpOwotICAgIHNlc3Npb24uaXNBdWRpb0VuYWJsZWQgPSBZRVM7Ci0gIH1dOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYubWFpblZpZXcuaXNBdWRpb0xv
b3BQbGF5aW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ0xvZyhA
IlN0b3BwaW5nIGF1ZGlvIGxvb3AgZHVlIHRvIFdlYlJUQyBzdGFydC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuYXVkaW9QbGF5ZXIgc3RvcF07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSVENMb2coQCJTZXR0aW5nIGlzQXVkaW9FbmFibGVkIHRvIFlFUy4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uaXNBdWRpb0VuYWJsZWQgPSBZRVM7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV07CiB9CiAKIC0gKHZvaWQpYXVkaW9TZXNz
aW9uRGlkU3RvcFBsYXlPclJlY29yZDooUlRDQXVkaW9TZXNzaW9uICopc2Vzc2lvbiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxl
cy9vYmpjL0FwcFJUQ01vYmlsZS9pb3MvQVJEVmlkZW9DYWxsVmlld0NvbnRyb2xsZXIubSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBw
UlRDTW9iaWxlL2lvcy9BUkRWaWRlb0NhbGxWaWV3Q29udHJvbGxlci5tCmluZGV4IDI4MjdiZjk0
NDIzY2IwMjNlNDVlYTk4NGY1ZTc3Njg3YWU3NjRhMGEuLmY3ZjRhODc3ZWYwYWExZWQxMzFhNzEy
MjliNGFmZjIwN2RiYWNjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL2lvcy9BUkRWaWRlb0Nh
bGxWaWV3Q29udHJvbGxlci5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL2lvcy9BUkRWaWRlb0NhbGxWaWV3
Q29udHJvbGxlci5tCkBAIC0yNyw2ICsyNyw3IEBAIEBpbnRlcmZhY2UgQVJEVmlkZW9DYWxsVmll
d0NvbnRyb2xsZXIgKCkgPEFSREFwcENsaWVudERlbGVnYXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUlRDQXVkaW9TZXNzaW9uRGVsZWdhdGU+CiBAcHJvcGVy
dHkobm9uYXRvbWljLCBzdHJvbmcpIFJUQ1ZpZGVvVHJhY2sgKnJlbW90ZVZpZGVvVHJhY2s7CiBA
cHJvcGVydHkobm9uYXRvbWljLCByZWFkb25seSkgQVJEVmlkZW9DYWxsVmlldyAqdmlkZW9DYWxs
VmlldzsKK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQVZBdWRpb1Nlc3Npb25Qb3J0T3Zl
cnJpZGUgcG9ydE92ZXJyaWRlOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gQVJEVmlkZW9DYWxs
Vmlld0NvbnRyb2xsZXIgewpAQCAtMzQsMTIgKzM1LDEyIEBAIEBpbXBsZW1lbnRhdGlvbiBBUkRW
aWRlb0NhbGxWaWV3Q29udHJvbGxlciB7CiAgIFJUQ1ZpZGVvVHJhY2sgKl9yZW1vdGVWaWRlb1Ry
YWNrOwogICBBUkRDYXB0dXJlQ29udHJvbGxlciAqX2NhcHR1cmVDb250cm9sbGVyOwogICBBUkRG
aWxlQ2FwdHVyZUNvbnRyb2xsZXIgKl9maWxlQ2FwdHVyZUNvbnRyb2xsZXIgTlNfQVZBSUxBQkxF
X0lPUygxMCk7Ci0gIEFWQXVkaW9TZXNzaW9uUG9ydE92ZXJyaWRlIF9wb3J0T3ZlcnJpZGU7CiB9
CiAKIEBzeW50aGVzaXplIHZpZGVvQ2FsbFZpZXcgPSBfdmlkZW9DYWxsVmlldzsKIEBzeW50aGVz
aXplIHJlbW90ZVZpZGVvVHJhY2sgPSBfcmVtb3RlVmlkZW9UcmFjazsKIEBzeW50aGVzaXplIGRl
bGVnYXRlID0gX2RlbGVnYXRlOworQHN5bnRoZXNpemUgcG9ydE92ZXJyaWRlID0gX3BvcnRPdmVy
cmlkZTsKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRGb3JSb29tOihOU1N0cmluZyAqKXJvb20KICAg
ICAgICAgICAgICAgICAgaXNMb29wYmFjazooQk9PTClpc0xvb3BiYWNrCkBAIC0xNjgsNyArMTY5
LDcgQEAgLSAodm9pZCl2aWRlb0NhbGxWaWV3RGlkQ2hhbmdlUm91dGU6KEFSRFZpZGVvQ2FsbFZp
ZXcgKil2aWV3IHsKICAgICBbc2Vzc2lvbiBsb2NrRm9yQ29uZmlndXJhdGlvbl07CiAgICAgTlNF
cnJvciAqZXJyb3IgPSBuaWw7CiAgICAgaWYgKFtzZXNzaW9uIG92ZXJyaWRlT3V0cHV0QXVkaW9Q
b3J0Om92ZXJyaWRlIGVycm9yOiZlcnJvcl0pIHsKLSAgICAgIF9wb3J0T3ZlcnJpZGUgPSBvdmVy
cmlkZTsKKyAgICAgIHNlbGYucG9ydE92ZXJyaWRlID0gb3ZlcnJpZGU7CiAgICAgfSBlbHNlIHsK
ICAgICAgIFJUQ0xvZ0Vycm9yKEAiRXJyb3Igb3ZlcnJpZGluZyBvdXRwdXQgcG9ydDogJUAiLAog
ICAgICAgICAgICAgICAgICAgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2Jq
Yy9BcHBSVENNb2JpbGUvbWFjL0FQUFJUQ1ZpZXdDb250cm9sbGVyLm0gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9t
YWMvQVBQUlRDVmlld0NvbnRyb2xsZXIubQppbmRleCA5ZjVlZDQwYjFiNDFjMjhlYTFjZjFlZDcz
YWYzNjVkNTQ2MWI3YmMyLi5hOTcyYTIwZTRlYTg5ODk2NGIxZWJlMDIyMmE4ZDJjNDQwYmJiZmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9l
eGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9tYWMvQVBQUlRDVmlld0NvbnRyb2xsZXIubQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpj
L0FwcFJUQ01vYmlsZS9tYWMvQVBQUlRDVmlld0NvbnRyb2xsZXIubQpAQCAtMzksNiArMzksNyBA
QCBAaW50ZXJmYWNlIEFQUFJUQ01haW5WaWV3IDogTlNWaWV3CiBAcHJvcGVydHkobm9uYXRvbWlj
LCB3ZWFrKSBpZDxBUFBSVENNYWluVmlld0RlbGVnYXRlPiBkZWxlZ2F0ZTsKIEBwcm9wZXJ0eShu
b25hdG9taWMsIHJlYWRvbmx5KSBOU1ZpZXc8UlRDVmlkZW9SZW5kZXJlcj4qIGxvY2FsVmlkZW9W
aWV3OwogQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVmlldzxSVENWaWRlb1JlbmRl
cmVyPiogcmVtb3RlVmlkZW9WaWV3OworQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIE5T
VGV4dFZpZXcqIGxvZ1ZpZXc7CiAKIC0gKHZvaWQpZGlzcGxheUxvZ01lc3NhZ2U6KE5TU3RyaW5n
KiltZXNzYWdlOwogCkBAIC01Miw3ICs1Myw2IEBAIEBpbXBsZW1lbnRhdGlvbiBBUFBSVENNYWlu
VmlldyAgewogICBOU0J1dHRvbiogX2Nvbm5lY3RCdXR0b247CiAgIE5TQnV0dG9uKiBfbG9vcGJh
Y2tCdXR0b247CiAgIE5TVGV4dEZpZWxkKiBfcm9vbUZpZWxkOwotICBOU1RleHRWaWV3KiBfbG9n
VmlldzsKICAgQ0dTaXplIF9sb2NhbFZpZGVvU2l6ZTsKICAgQ0dTaXplIF9yZW1vdGVWaWRlb1Np
emU7CiB9CkBAIC02MCwxNCArNjAsMTMgQEAgQGltcGxlbWVudGF0aW9uIEFQUFJUQ01haW5WaWV3
ICB7CiBAc3ludGhlc2l6ZSBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZTsKIEBzeW50aGVzaXplIGxvY2Fs
VmlkZW9WaWV3ID0gX2xvY2FsVmlkZW9WaWV3OwogQHN5bnRoZXNpemUgcmVtb3RlVmlkZW9WaWV3
ID0gX3JlbW90ZVZpZGVvVmlldzsKLQorQHN5bnRoZXNpemUgbG9nVmlldyA9IF9sb2dWaWV3Owog
CiAtICh2b2lkKWRpc3BsYXlMb2dNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgewogICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgIF9sb2dWaWV3LnN0
cmluZyA9Ci0gICAgICAgIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQFxuIiwgX2xv
Z1ZpZXcuc3RyaW5nLCBtZXNzYWdlXTsKLSAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2Uo
X2xvZ1ZpZXcuc3RyaW5nLmxlbmd0aCwgMCk7Ci0gICAgW19sb2dWaWV3IHNjcm9sbFJhbmdlVG9W
aXNpYmxlOnJhbmdlXTsKKyAgICBzZWxmLmxvZ1ZpZXcuc3RyaW5nID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIlQCVAXG4iLCBzZWxmLmxvZ1ZpZXcuc3RyaW5nLCBtZXNzYWdlXTsKKyAg
ICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2Uoc2VsZi5sb2dWaWV3LnN0cmluZy5sZW5ndGgs
IDApOworICAgIFtzZWxmLmxvZ1ZpZXcgc2Nyb2xsUmFuZ2VUb1Zpc2libGU6cmFuZ2VdOwogICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvdGVzdHMvbWFpbi5tbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9i
aWxlL3Rlc3RzL21haW4ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzYyNWZmZDdiZjgxY2E4M2VlMjY2YmZhMTk5
ZmE5ZWYzMDQ4MDM1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL3Rlc3RzL21haW4u
bW0KQEAgLTAsMCArMSwyMSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2ltcG9ydCA8VUlLaXQv
VUlLaXQuaD4KKworI2luY2x1ZGUgInRlc3QvaW9zL2NvdmVyYWdlX3V0aWxfaW9zLmgiCisKK2lu
dCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKKyAgcnRjOjp0ZXN0OjpDb25maWd1cmVD
b3ZlcmFnZVJlcG9ydFBhdGgoKTsKKworICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICByZXR1cm4g
VUlBcHBsaWNhdGlvbk1haW4oYXJnYywgYXJndiwgbmlsLCBuaWwpOworICB9Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9v
YmpjbmF0aXZlYXBpL29iamMvb2JqY2NhbGxjbGllbnQubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjbmF0aXZlYXBpL29iamMvb2JqY2Nh
bGxjbGllbnQubW0KaW5kZXggYzM4NGRhM2VmOGNiYmI3NzZkZDA1ZmM1NDA1NWMyMDk5ZGIxMTFj
Zi4uYzdiMmFmNDIxMjNlNDk1ZDdlNzJhZTY2Y2VjZmQxNTdlMzIzODFkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqY25h
dGl2ZWFwaS9vYmpjL29iamNjYWxsY2xpZW50Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamNuYXRpdmVhcGkvb2JqYy9vYmpjY2Fs
bGNsaWVudC5tbQpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3Mv
YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29k
ZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJj
b25uZWN0aW9uaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9f
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJy
dGNtZWRpYWVuZ2luZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNs
dWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJzZGsvb2JqYy9uYXRpdmUvYXBpL3Zp
ZGVvX2NhcHR1cmVyLmgiCkBAIC0xMTYsMTIgKzExNywxNiBAQCB2b2lkIE9iakNDYWxsQ2xpZW50
OjpDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IHZpZGVvRW5jb2RlckZhY3RvcnkgPQogICAgICAgd2Vi
cnRjOjpPYmpDVG9OYXRpdmVWaWRlb0VuY29kZXJGYWN0b3J5KFtbUlRDRGVmYXVsdFZpZGVvRW5j
b2RlckZhY3RvcnkgYWxsb2NdIGluaXRdKTsKIAorICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpW
aWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PiB2aWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5
ID0KKyAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rv
cnkoKTsKKwogICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+
IG1lZGlhX2VuZ2luZSA9CiAgICAgICBjcmlja2V0OjpXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6
OkNyZWF0ZShudWxscHRyIC8qIGFkbSAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3Rv
cnkoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdl
YnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh2aWRlb0VuY29kZXJG
YWN0b3J5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bW92ZSh2aWRlb0RlY29kZXJGYWN0b3J5KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh2aWRlb0JpdHJhdGVBbGxvY2F0b3JG
YWN0b3J5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIgLyogYXVkaW9fbWl4ZXIgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVh
dGUoKSk7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIk1lZGlhIGVuZ2luZSBjcmVhdGVkOiAiIDw8
IG1lZGlhX2VuZ2luZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9jb25kdWN0
b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxl
cy9wZWVyY29ubmVjdGlvbi9jbGllbnQvY29uZHVjdG9yLmNjCmluZGV4IGMyNTI1OWNlMzRkZjM1
Y2E0YzM4NDU2OGY4ZWY5MjQ4ZmNhN2QwMmEuLmE3ODFjNGExODc0YWEzMmIwZDljZjgzMDdiZDU1
MGFhMDk2Njg4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9jb25kdWN0b3IuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVl
cmNvbm5lY3Rpb24vY2xpZW50L2NvbmR1Y3Rvci5jYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgog
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3Rvcnku
aCIKKyNpbmNsdWRlICJhcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCIKICNpbmNs
dWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5o
IgogI2luY2x1ZGUgImV4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9kZWZhdWx0cy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2ZsYWdkZWZzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQv
ZmxhZ2RlZnMuaAppbmRleCA1NjRlMGU5NWY5MGM3YzU1ZmM5MzI1ZjkzZmQwMmM3ZTk4NjU1MjRm
Li41MWY5YzlhNDI1NWE0YWFlM2ZhZjQ4MGY2NTViMGE3NzVhY2Y0MWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29u
bmVjdGlvbi9jbGllbnQvZmxhZ2RlZnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvZmxhZ2RlZnMu
aApAQCAtMTksMjAgKzE5LDI5IEBAIGV4dGVybiBjb25zdCB1aW50MTZfdCBrRGVmYXVsdFNlcnZl
clBvcnQ7ICAvLyBGcm9tIGRlZmF1bHRzLltofGNjXQogLy8gaGVhZGVyIGZpbGUgc28gdGhhdCB0
aGV5IGNhbiBiZSBzaGFyZWQgYWNyb3NzIHRoZSBkaWZmZXJlbnQgbWFpbi5jYydzCiAvLyBmb3Ig
ZWFjaCBwbGF0Zm9ybS4KIAotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBt
ZXNzYWdlIik7Ci1ERUZJTkVfYm9vbChhdXRvY29ubmVjdCwKLSAgICAgICAgICAgIGZhbHNlLAot
ICAgICAgICAgICAgIkNvbm5lY3QgdG8gdGhlIHNlcnZlciB3aXRob3V0IHVzZXIgIgotICAgICAg
ICAgICAgImludGVydmVudGlvbi4iKTsKLURFRklORV9zdHJpbmcoc2VydmVyLCAibG9jYWxob3N0
IiwgIlRoZSBzZXJ2ZXIgdG8gY29ubmVjdCB0by4iKTsKLURFRklORV9pbnQocG9ydCwKLSAgICAg
ICAgICAga0RlZmF1bHRTZXJ2ZXJQb3J0LAotICAgICAgICAgICAiVGhlIHBvcnQgb24gd2hpY2gg
dGhlIHNlcnZlciBpcyBsaXN0ZW5pbmcuIik7Ci1ERUZJTkVfYm9vbCgKK1dFQlJUQ19ERUZJTkVf
Ym9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbChhdXRvY29ubmVjdCwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAg
ICAgICAgICAiQ29ubmVjdCB0byB0aGUgc2VydmVyIHdpdGhvdXQgdXNlciAiCisgICAgICAgICAg
ICAgICAgICAgImludGVydmVudGlvbi4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHNlcnZlciwg
ImxvY2FsaG9zdCIsICJUaGUgc2VydmVyIHRvIGNvbm5lY3QgdG8uIik7CitXRUJSVENfREVGSU5F
X2ludChwb3J0LAorICAgICAgICAgICAgICAgICAga0RlZmF1bHRTZXJ2ZXJQb3J0LAorICAgICAg
ICAgICAgICAgICAgIlRoZSBwb3J0IG9uIHdoaWNoIHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nLiIp
OworV0VCUlRDX0RFRklORV9ib29sKAogICAgIGF1dG9jYWxsLAogICAgIGZhbHNlLAogICAgICJD
YWxsIHRoZSBmaXJzdCBhdmFpbGFibGUgb3RoZXIgY2xpZW50IG9uICIKICAgICAidGhlIHNlcnZl
ciB3aXRob3V0IHVzZXIgaW50ZXJ2ZW50aW9uLiAgTm90ZTogdGhpcyBmbGFnIHNob3VsZCBvbmx5
IGJlIHNldCAiCiAgICAgInRvIHRydWUgb24gb25lIG9mIHRoZSB0d28gY2xpZW50cy4iKTsKIAor
V0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgZm9yY2VfZmllbGR0cmlhbHMsCisgICAgIiIsCisg
ICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlcy4gVGhpcyBmbGFn
IHNwZWNpZmllcyB0aGUgZmllbGQgIgorICAgICJ0cmlhbHMgaW4gZWZmZWN0LiBFLmcuIHJ1bm5p
bmcgd2l0aCAiCisgICAgIi0tZm9yY2VfZmllbGR0cmlhbHM9V2ViUlRDLUZvb0ZlYXR1cmUvRW5h
YmxlZC8gIgorICAgICJ3aWxsIGFzc2lnbiB0aGUgZ3JvdXAgRW5hYmxlZCB0byBmaWVsZCB0cmlh
bCBXZWJSVEMtRm9vRmVhdHVyZS4gTXVsdGlwbGUgIgorICAgICJ0cmlhbHMgYXJlIHNlcGFyYXRl
ZCBieSBcIi9cIiIpOworCiAjZW5kaWYgIC8vIEVYQU1QTEVTX1BFRVJDT05ORUNUSU9OX0NMSUVO
VF9GTEFHREVGU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2xpbnV4L21haW4uY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVy
Y29ubmVjdGlvbi9jbGllbnQvbGludXgvbWFpbi5jYwppbmRleCA1MDE3OWM0YmE1NTEwY2YxZWQ3
YTNjMmVkYTZmYTAwYWY3ZGM3YjE4Li42YzM0NjgzZDJlYTkxZDYxMDUxZTc4ZGUwOWU3ZmRkMmU5
ZTM4NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbGludXgvbWFpbi5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29u
bmVjdGlvbi9jbGllbnQvbGludXgvbWFpbi5jYwpAQCAtMTcsNiArMTcsOCBAQAogCiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3NsYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgor
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCisjaW5jbHVk
ZSAidGVzdC9maWVsZF90cmlhbC5oIgogCiBjbGFzcyBDdXN0b21Tb2NrZXRTZXJ2ZXIgOiBwdWJs
aWMgcnRjOjpQaHlzaWNhbFNvY2tldFNlcnZlciB7CiAgcHVibGljOgpAQCAtNzUsNiArNzcsMTEg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgIHJldHVybiAwOwogICB9
CiAKKyAgd2VicnRjOjp0ZXN0OjpWYWxpZGF0ZUZpZWxkVHJpYWxzU3RyaW5nT3JEaWUoRkxBR19m
b3JjZV9maWVsZHRyaWFscyk7CisgIC8vIEluaXRGaWVsZFRyaWFsc0Zyb21TdHJpbmcgc3RvcmVz
IHRoZSBjaGFyKiwgc28gdGhlIGNoYXIgYXJyYXkgbXVzdCBvdXRsaXZlCisgIC8vIHRoZSBhcHBs
aWNhdGlvbi4KKyAgd2VicnRjOjpmaWVsZF90cmlhbDo6SW5pdEZpZWxkVHJpYWxzRnJvbVN0cmlu
ZyhGTEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsKKwogICAvLyBBYm9ydCBpZiB0aGUgdXNlciBzcGVj
aWZpZXMgYSBwb3J0IHRoYXQgaXMgb3V0c2lkZSB0aGUgYWxsb3dlZAogICAvLyByYW5nZSBbMSwg
NjU1MzVdLgogICBpZiAoKEZMQUdfcG9ydCA8IDEpIHx8IChGTEFHX3BvcnQgPiA2NTUzNSkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4
YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9saW51eC9tYWluX3duZC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9u
L2NsaWVudC9saW51eC9tYWluX3duZC5jYwppbmRleCA1MmIwZDg4NTIzYzNjYTgyM2RjOTg3MDc0
MTI1MzhkYjBkZjlhYWU1Li4yZjc3NzdkMWVlYTFlNmUzOGQxYmI5MGZlOWY1ZjYwMjM4NjIyOTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9l
eGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbGludXgvbWFpbl93bmQuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5l
Y3Rpb24vY2xpZW50L2xpbnV4L21haW5fd25kLmNjCkBAIC0xOCwxMSArMTgsOCBAQAogI2luY2x1
ZGUgImV4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9kZWZhdWx0cy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1
di9pbmNsdWRlL2xpYnl1di9jb252ZXJ0X2Zyb20uaCIKIAotdXNpbmcgcnRjOjpzcHJpbnRmbjsK
LQogbmFtZXNwYWNlIHsKIAogLy8KQEAgLTE1MCw3ICsxNDcsNyBAQCBHdGtNYWluV25kOjpHdGtN
YWluV25kKGNvbnN0IGNoYXIqIHNlcnZlciwKICAgICAgIGF1dG9jb25uZWN0XyhhdXRvY29ubmVj
dCksCiAgICAgICBhdXRvY2FsbF8oYXV0b2NhbGwpIHsKICAgY2hhciBidWZmZXJbMTBdOwotICBz
cHJpbnRmbihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJWkiLCBwb3J0KTsKKyAgc25wcmludGYo
YnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiVpIiwgcG9ydCk7CiAgIHBvcnRfID0gYnVmZmVyOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVu
dC9tYWluLmNjCmluZGV4IDI1ZGRlMWVmNjU4NWQ4MjU3OGE3OWY0NTQ1MmJlYTRiNmQ2MTZmZWYu
LmY5MmU2MDZjMzM4MTE5ZTIyZTQzYjExMzU3ZmZiOGJhYzIzMGFhNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25u
ZWN0aW9uL2NsaWVudC9tYWluLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9tYWluLmNjCkBAIC0x
Niw2ICsxNiw4IEBACiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsYWRhcHRlci5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3dpbjMyc29ja2V0aW5pdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3dpbjMyc29j
a2V0c2VydmVyLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJp
YWwuaCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAKIGludCBQQVNDQUwgd1dpbk1h
aW4oSElOU1RBTkNFIGluc3RhbmNlLAogICAgICAgICAgICAgICAgICAgICBISU5TVEFOQ0UgcHJl
dl9pbnN0YW5jZSwKQEAgLTM2LDYgKzM4LDExIEBAIGludCBQQVNDQUwgd1dpbk1haW4oSElOU1RB
TkNFIGluc3RhbmNlLAogICAgIHJldHVybiAwOwogICB9CiAKKyAgd2VicnRjOjp0ZXN0OjpWYWxp
ZGF0ZUZpZWxkVHJpYWxzU3RyaW5nT3JEaWUoRkxBR19mb3JjZV9maWVsZHRyaWFscyk7CisgIC8v
IEluaXRGaWVsZFRyaWFsc0Zyb21TdHJpbmcgc3RvcmVzIHRoZSBjaGFyKiwgc28gdGhlIGNoYXIg
YXJyYXkgbXVzdCBvdXRsaXZlCisgIC8vIHRoZSBhcHBsaWNhdGlvbi4KKyAgd2VicnRjOjpmaWVs
ZF90cmlhbDo6SW5pdEZpZWxkVHJpYWxzRnJvbVN0cmluZyhGTEFHX2ZvcmNlX2ZpZWxkdHJpYWxz
KTsKKwogICAvLyBBYm9ydCBpZiB0aGUgdXNlciBzcGVjaWZpZXMgYSBwb3J0IHRoYXQgaXMgb3V0
c2lkZSB0aGUgYWxsb3dlZAogICAvLyByYW5nZSBbMSwgNjU1MzVdLgogICBpZiAoKEZMQUdfcG9y
dCA8IDEpIHx8IChGTEFHX3BvcnQgPiA2NTUzNSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2Ns
aWVudC9tYWluX3duZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9tYWluX3duZC5jYwppbmRleCAzYWQy
NDg4NDNhODE1YjBhOTAwNTY4MmU0ZmYwMWEzZDA0Yzk4OTljLi44ZWRkMWU3NmYzNTAzMTRkZTAz
MDQwMzVhMTkzY2QyMTAxYTc5Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbWFpbl93
bmQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L21haW5fd25kLmNjCkBAIC0xNywxNCArMTcsMTEg
QEAKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9s
aWJ5dXYvY29udmVydF9hcmdiLmgiCiAKIEFUT00gTWFpblduZDo6d25kX2NsYXNzXyA9IDA7CiBj
b25zdCB3Y2hhcl90IE1haW5XbmQ6OmtDbGFzc05hbWVbXSA9IEwiV2ViUlRDX01haW5XbmQiOwog
Ci11c2luZyBydGM6OnNwcmludGZuOwotCiBuYW1lc3BhY2UgewogCiBjb25zdCBjaGFyIGtDb25u
ZWN0aW5nW10gPSAiQ29ubmVjdGluZy4uLiAiOwpAQCAtODYsOCArODMsOCBAQCBNYWluV25kOjpN
YWluV25kKGNvbnN0IGNoYXIqIHNlcnZlciwKICAgICAgIHNlcnZlcl8oc2VydmVyKSwKICAgICAg
IGF1dG9fY29ubmVjdF8oYXV0b19jb25uZWN0KSwKICAgICAgIGF1dG9fY2FsbF8oYXV0b19jYWxs
KSB7Ci0gIGNoYXIgYnVmZmVyWzEwXSA9IHswfTsKLSAgc3ByaW50Zm4oYnVmZmVyLCBzaXplb2Yo
YnVmZmVyKSwgIiVpIiwgcG9ydCk7CisgIGNoYXIgYnVmZmVyWzEwXTsKKyAgc25wcmludGYoYnVm
ZmVyLCBzaXplb2YoYnVmZmVyKSwgIiVpIiwgcG9ydCk7CiAgIHBvcnRfID0gYnVmZmVyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9l
eGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvcGVlcl9jb25uZWN0aW9uX2NsaWVudC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJj
b25uZWN0aW9uL2NsaWVudC9wZWVyX2Nvbm5lY3Rpb25fY2xpZW50LmNjCmluZGV4IGJiNzlkMTY3
OTExMTk4ZGM1NTYxMzlkOTQ2MGJkNzMxYjM3Y2M3NzguLmYxNzNlNDI3OTNhMjVhZWQ4Yzc3MmZl
YzRjNTcyMWIxYzg2ZDgyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9wZWVyX2Nvbm5l
Y3Rpb25fY2xpZW50LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9wZWVyX2Nvbm5lY3Rpb25fY2xp
ZW50LmNjCkBAIC0xNCwxNCArMTQsMTEgQEAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0aGVs
cGVycy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKICNpZmRlZiBXSU4z
MgogI2luY2x1ZGUgInJ0Y19iYXNlL3dpbjMyc29ja2V0c2VydmVyLmgiCiAjZW5kaWYKIAotdXNp
bmcgcnRjOjpzcHJpbnRmbjsKLQogbmFtZXNwYWNlIHsKIAogLy8gVGhpcyBpcyBvdXIgbWFnaWNh
bCBoYW5ndXAgc2lnbmFsLgpAQCAtMTM2LDcgKzEzMyw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25D
bGllbnQ6OkRvQ29ubmVjdCgpIHsKICAgaGFuZ2luZ19nZXRfLnJlc2V0KENyZWF0ZUNsaWVudFNv
Y2tldChzZXJ2ZXJfYWRkcmVzc18uaXBhZGRyKCkuZmFtaWx5KCkpKTsKICAgSW5pdFNvY2tldFNp
Z25hbHMoKTsKICAgY2hhciBidWZmZXJbMTAyNF07Ci0gIHNwcmludGZuKGJ1ZmZlciwgc2l6ZW9m
KGJ1ZmZlciksICJHRVQgL3NpZ25faW4/JXMgSFRUUC8xLjBcclxuXHJcbiIsCisgIHNucHJpbnRm
KGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJHRVQgL3NpZ25faW4/JXMgSFRUUC8xLjBcclxuXHJc
biIsCiAgICAgICAgICAgIGNsaWVudF9uYW1lXy5jX3N0cigpKTsKICAgb25jb25uZWN0X2RhdGFf
ID0gYnVmZmVyOwogCkBAIC0xNTgsOSArMTU1LDkgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbkNsaWVu
dDo6U2VuZFRvUGVlcihpbnQgcGVlcl9pZCwgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsK
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgY2hhciBoZWFkZXJzWzEwMjRdOwotICBzcHJpbnRmbiho
ZWFkZXJzLCBzaXplb2YoaGVhZGVycyksCisgIHNucHJpbnRmKGhlYWRlcnMsIHNpemVvZihoZWFk
ZXJzKSwKICAgICAgICAgICAgIlBPU1QgL21lc3NhZ2U/cGVlcl9pZD0laSZ0bz0laSBIVFRQLzEu
MFxyXG4iCi0gICAgICAgICAgICJDb250ZW50LUxlbmd0aDogJWlcclxuIgorICAgICAgICAgICAi
Q29udGVudC1MZW5ndGg6ICV6dVxyXG4iCiAgICAgICAgICAgICJDb250ZW50LVR5cGU6IHRleHQv
cGxhaW5cclxuIgogICAgICAgICAgICAiXHJcbiIsCiAgICAgICAgICAgIG15X2lkXywgcGVlcl9p
ZCwgbWVzc2FnZS5sZW5ndGgoKSk7CkBAIC0xOTAsNyArMTg3LDcgQEAgYm9vbCBQZWVyQ29ubmVj
dGlvbkNsaWVudDo6U2lnbk91dCgpIHsKIAogICAgIGlmIChteV9pZF8gIT0gLTEpIHsKICAgICAg
IGNoYXIgYnVmZmVyWzEwMjRdOwotICAgICAgc3ByaW50Zm4oYnVmZmVyLCBzaXplb2YoYnVmZmVy
KSwKKyAgICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCiAgICAgICAgICAgICAg
ICAiR0VUIC9zaWduX291dD9wZWVyX2lkPSVpIEhUVFAvMS4wXHJcblxyXG4iLCBteV9pZF8pOwog
ICAgICAgb25jb25uZWN0X2RhdGFfID0gYnVmZmVyOwogICAgICAgcmV0dXJuIENvbm5lY3RDb250
cm9sU29ja2V0KCk7CkBAIC0yMzcsNyArMjM0LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkNsaWVu
dDo6T25Db25uZWN0KHJ0Yzo6QXN5bmNTb2NrZXQqIHNvY2tldCkgewogCiB2b2lkIFBlZXJDb25u
ZWN0aW9uQ2xpZW50OjpPbkhhbmdpbmdHZXRDb25uZWN0KHJ0Yzo6QXN5bmNTb2NrZXQqIHNvY2tl
dCkgewogICBjaGFyIGJ1ZmZlclsxMDI0XTsKLSAgc3ByaW50Zm4oYnVmZmVyLCBzaXplb2YoYnVm
ZmVyKSwgIkdFVCAvd2FpdD9wZWVyX2lkPSVpIEhUVFAvMS4wXHJcblxyXG4iLAorICBzbnByaW50
ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiR0VUIC93YWl0P3BlZXJfaWQ9JWkgSFRUUC8xLjBc
clxuXHJcbiIsCiAgICAgICAgICAgIG15X2lkXyk7CiAgIGludCBsZW4gPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cmxlbihidWZmZXIpKTsKICAgaW50IHNlbnQgPSBzb2NrZXQtPlNlbmQoYnVmZmVyLCBs
ZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL21haW4uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9zZXJ2
ZXIvbWFpbi5jYwppbmRleCAwNzViNmVhMmQzZjdhMDZmNzE4Njg3NmIzNzE1NWUyZTVlNGRkNTQy
Li41MjE0Y2E1Y2E1NTExNTRjZjkyYTE5NTVmZWNlMTAwZDFhNDE3MTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29u
bmVjdGlvbi9zZXJ2ZXIvbWFpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9zZXJ2ZXIvbWFpbi5jYwpAQCAt
MTgsNyArMTgsMTkgQEAKICNpbmNsdWRlICJleGFtcGxlcy9wZWVyY29ubmVjdGlvbi9zZXJ2ZXIv
ZGF0YV9zb2NrZXQuaCIKICNpbmNsdWRlICJleGFtcGxlcy9wZWVyY29ubmVjdGlvbi9zZXJ2ZXIv
cGVlcl9jaGFubmVsLmgiCiAjaW5jbHVkZSAiZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVy
L3V0aWxzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZmxhZ3MuaCIKICNpbmNsdWRlICJydGNfdG9v
bHMvc2ltcGxlX2NvbW1hbmRfbGluZV9wYXJzZXIuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBl
cnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgorI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIK
KworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgZm9yY2VfZmllbGR0cmlhbHMsCisgICAgIiIs
CisgICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlcy4gVGhpcyBm
bGFnIHNwZWNpZmllcyB0aGUgZmllbGQgIgorICAgICJ0cmlhbHMgaW4gZWZmZWN0LiBFLmcuIHJ1
bm5pbmcgd2l0aCAiCisgICAgIi0tZm9yY2VfZmllbGR0cmlhbHM9V2ViUlRDLUZvb0ZlYXR1cmUv
RW5hYmxlZC8gIgorICAgICJ3aWxsIGFzc2lnbiB0aGUgZ3JvdXAgRW5hYmxlZCB0byBmaWVsZCB0
cmlhbCBXZWJSVEMtRm9vRmVhdHVyZS4gTXVsdGlwbGUgIgorICAgICJ0cmlhbHMgYXJlIHNlcGFy
YXRlZCBieSBcIi9cIiIpOwogCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhDb25uZWN0aW9ucyA9
IChGRF9TRVRTSVpFIC0gMik7CiAKQEAgLTYyLDYgKzc0LDExIEBAIGludCBtYWluKGludCBhcmdj
LCBjaGFyKiBhcmd2W10pIHsKICAgICByZXR1cm4gMDsKICAgfQogCisgIHdlYnJ0Yzo6dGVzdDo6
VmFsaWRhdGVGaWVsZFRyaWFsc1N0cmluZ09yRGllKEZMQUdfZm9yY2VfZmllbGR0cmlhbHMpOwor
ICAvLyBJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5nIHN0b3JlcyB0aGUgY2hhciosIHNvIHRoZSBj
aGFyIGFycmF5IG11c3Qgb3V0bGl2ZQorICAvLyB0aGUgYXBwbGljYXRpb24uCisgIHdlYnJ0Yzo6
ZmllbGRfdHJpYWw6OkluaXRGaWVsZFRyaWFsc0Zyb21TdHJpbmcoRkxBR19mb3JjZV9maWVsZHRy
aWFscyk7CisKICAgaW50IHBvcnQgPSBzdHJ0b2woKHBhcnNlci5HZXRGbGFnKCJwb3J0IikpLmNf
c3RyKCksIE5VTEwsIDEwKTsKIAogICAvLyBBYm9ydCBpZiB0aGUgdXNlciBzcGVjaWZpZXMgYSBw
b3J0IHRoYXQgaXMgb3V0c2lkZSB0aGUgYWxsb3dlZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2Vy
dmVyL3BlZXJfY2hhbm5lbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZlci9wZWVyX2NoYW5uZWwuY2MKaW5k
ZXggNmVmMDhkN2IyMWQ3M2I2ZjIyOTlhZGI2OWNlNzJiMmZhZjJlZjg1MC4uYjIzYjdlMDRlMjFk
NmJiYzBiOWNlNWQyMjA3NWUwNzM1ZmRmMTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVy
L3BlZXJfY2hhbm5lbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9zZXJ2ZXIvcGVlcl9jaGFubmVsLmNjCkBA
IC0xOSw5ICsxOSw2IEBACiAjaW5jbHVkZSAiZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVy
L2RhdGFfc29ja2V0LmgiCiAjaW5jbHVkZSAiZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVy
L3V0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKLQotdXNpbmcgcnRjOjpzcHJpbnRmbjsKIAogLy8gU2V0
IHRvIHRoZSBwZWVyIGlkIG9mIHRoZSBvcmlnaW5hdG9yIHdoZW4gbWVzc2FnZXMgYXJlIGJlaW5n
CiAvLyBleGNoYW5nZWQgYmV0d2VlbiBwZWVycywgYnV0IHNldCB0byB0aGUgaWQgb2YgdGhlIHJl
Y2VpdmluZyBwZWVyCkBAIC05OCw3ICs5NSw3IEBAIHN0ZDo6c3RyaW5nIENoYW5uZWxNZW1iZXI6
OkdldEVudHJ5KCkgY29uc3QgewogCiAgIC8vIG5hbWUsIDExLWRpZ2l0IGludCwgMS1kaWdpdCBi
b29sLCBuZXdsaW5lLCBudWxsCiAgIGNoYXIgZW50cnlba01heE5hbWVMZW5ndGggKyAxNV07Ci0g
IHNwcmludGZuKGVudHJ5LCBzaXplb2YoZW50cnkpLCAiJXMsJWQsJWRcbiIsCisgIHNucHJpbnRm
KGVudHJ5LCBzaXplb2YoZW50cnkpLCAiJXMsJWQsJWRcbiIsCiAgICAgICAgICAgIG5hbWVfLnN1
YnN0cigwLCBrTWF4TmFtZUxlbmd0aCkuY19zdHIoKSwgaWRfLCBjb25uZWN0ZWRfKTsKICAgcmV0
dXJuIGVudHJ5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvZXhhbXBsZXMvc3R1bnByb2Jlci9tYWluLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvc3R1bnByb2Jlci9tYWluLmNjCmlu
ZGV4IDQ1YTc2ZjUyMzc0M2U2ZmFmYTFiZTg1ZjQ0OWJhZGZhM2M3ZjY4NTUuLjZkYTk2ZTQ2OTk4
MmYwNWU3M2JhYWIyYjM0OGEyMTI0ZjU0YTQ3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3N0dW5wcm9iZXIvbWFpbi5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9z
dHVucHJvYmVyL21haW4uY2MKQEAgLTE0LDcgKzE0LDcgQEAKIAogI2luY2x1ZGUgPG1hcD4KICNp
bmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3N0cmVhbT4gIC8vIG5vLXByZXN1Ym1pdC1jaGVj
ayBUT0RPKHdlYnJ0Yzo4OTgyKQorI2luY2x1ZGUgPHNzdHJlYW0+CiAKICNpbmNsdWRlICJwMnAv
YmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3RvcnkuaCIKICNpbmNsdWRlICJwMnAvc3R1bnByb2Jl
ci9zdHVucHJvYmVyLmgiCkBAIC0zMywxNiArMzMsMjEgQEAKIHVzaW5nIHN0dW5wcm9iZXI6OlN0
dW5Qcm9iZXI7CiB1c2luZyBzdHVucHJvYmVyOjpBc3luY0NhbGxiYWNrOwogCi1ERUZJTkVfYm9v
bChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKLURFRklORV9pbnQoaW50ZXJ2
YWwsIDEwLCAiSW50ZXJ2YWwgb2YgY29uc2VjdXRpdmUgc3R1biBwaW5ncyBpbiBtaWxsaXNlY29u
ZHMiKTsKLURFRklORV9ib29sKHNoYXJlZF9zb2NrZXQsIGZhbHNlLCAiU2hhcmUgc29ja2V0IG1v
ZGUgZm9yIGRpZmZlcmVudCByZW1vdGUgSVBzIik7Ci1ERUZJTkVfaW50KHBpbmdzX3Blcl9pcCwK
LSAgICAgICAgICAgMTAsCi0gICAgICAgICAgICJOdW1iZXIgb2YgY29uc2VjdXRpdmUgc3R1biBw
aW5ncyB0byBzZW5kIGZvciBlYWNoIElQIik7Ci1ERUZJTkVfaW50KHRpbWVvdXQsCi0gICAgICAg
ICAgIDEwMDAsCi0gICAgICAgICAgICJNaWxsaXNlY29uZHMgb2Ygd2FpdCBhZnRlciB0aGUgbGFz
dCBwaW5nIHNlbnQgYmVmb3JlIGV4aXRpbmciKTsKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVG
SU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNzYWdlIik7CitXRUJSVENfREVG
SU5FX2ludChpbnRlcnZhbCwKKyAgICAgICAgICAgICAgICAgIDEwLAorICAgICAgICAgICAgICAg
ICAgIkludGVydmFsIG9mIGNvbnNlY3V0aXZlIHN0dW4gcGluZ3MgaW4gbWlsbGlzZWNvbmRzIik7
CitXRUJSVENfREVGSU5FX2Jvb2woc2hhcmVkX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICBm
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAiU2hhcmUgc29ja2V0IG1vZGUgZm9yIGRpZmZlcmVu
dCByZW1vdGUgSVBzIik7CitXRUJSVENfREVGSU5FX2ludChwaW5nc19wZXJfaXAsCisgICAgICAg
ICAgICAgICAgICAxMCwKKyAgICAgICAgICAgICAgICAgICJOdW1iZXIgb2YgY29uc2VjdXRpdmUg
c3R1biBwaW5ncyB0byBzZW5kIGZvciBlYWNoIElQIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAg
ICB0aW1lb3V0LAorICAgIDEwMDAsCisgICAgIk1pbGxpc2Vjb25kcyBvZiB3YWl0IGFmdGVyIHRo
ZSBsYXN0IHBpbmcgc2VudCBiZWZvcmUgZXhpdGluZyIpOworV0VCUlRDX0RFRklORV9zdHJpbmco
CiAgICAgc2VydmVycywKICAgICAic3R1bi5sLmdvb2dsZS5jb206MTkzMDIsc3R1bjEubC5nb29n
bGUuY29tOjE5MzAyLHN0dW4yLmwuZ29vZ2xlLmNvbToxOTMwMiIsCiAgICAgIkNvbW1hIHNlcGFy
YXRlZCBTVFVOIHNlcnZlciBhZGRyZXNzZXMgd2l0aCBwb3J0cyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZl
ci9yZWFkX2F1dGhfZmlsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGU1NDY1ZTgyZmU4MzM5YjAxZDUyN2NmNDY0MmUwM2EwNmJmNjYyYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1
cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuY2MKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2luY2x1ZGUgImV4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKKworbmFtZXNwYWNlIHdlYnJ0Y19l
eGFtcGxlcyB7CisKK3N0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gUmVhZEF1dGhG
aWxlKHN0ZDo6aXN0cmVhbSogcykgeworICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJp
bmc+IG5hbWVfdG9fa2V5OworICBmb3IgKHN0ZDo6c3RyaW5nIGxpbmU7IHN0ZDo6Z2V0bGluZSgq
cywgbGluZSk7KSB7CisgICAgY29uc3Qgc2l6ZV90IHNlcCA9IGxpbmUuZmluZCgnPScpOworICAg
IGlmIChzZXAgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgICBjb250aW51ZTsKKyAgICBjaGFy
IGJ1ZlszMl07CisgICAgc2l6ZV90IGxlbiA9IHJ0Yzo6aGV4X2RlY29kZShidWYsIHNpemVvZihi
dWYpLCBsaW5lLmRhdGEoKSArIHNlcCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lLnNpemUoKSAtIHNlcCAtIDEpOworICAgIGlmIChsZW4gPiAwKSB7CisgICAgICBu
YW1lX3RvX2tleS5lbXBsYWNlKGxpbmUuc3Vic3RyKDAsIHNlcCksIHN0ZDo6c3RyaW5nKGJ1Ziwg
bGVuKSk7CisgICAgfQorICB9CisgIHJldHVybiBuYW1lX3RvX2tleTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0Y19leGFtcGxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci9yZWFkX2F1dGhfZmlsZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVy
bnNlcnZlci9yZWFkX2F1dGhfZmlsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMTM5Yzk5MjQwY2FlOWQxYTFm
N2JhNDgzZTU5NWMzMzFmMWMwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy90dXJuc2VydmVyL3JlYWRfYXV0aF9m
aWxlLmgKQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRD
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBFWEFN
UExFU19UVVJOU0VSVkVSX1JFQURfQVVUSF9GSUxFX0hfCisjZGVmaW5lIEVYQU1QTEVTX1RVUk5T
RVJWRVJfUkVBRF9BVVRIX0ZJTEVfSF8KKworI2luY2x1ZGUgPGlzdHJlYW0+CisjaW5jbHVkZSA8
bWFwPgorI2luY2x1ZGUgPHN0cmluZz4KKworbmFtZXNwYWNlIHdlYnJ0Y19leGFtcGxlcyB7CisK
K3N0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gUmVhZEF1dGhGaWxlKHN0ZDo6aXN0
cmVhbSogcyk7CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGNfZXhhbXBsZXMKKworI2VuZGlmICAv
LyBFWEFNUExFU19UVVJOU0VSVkVSX1JFQURfQVVUSF9GSUxFX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy90dXJuc2VydmVy
L3JlYWRfYXV0aF9maWxlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci9yZWFkX2F1dGhfZmlsZV91bml0dGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YTZmMzMyYzI3YTU3NjY5ZjRmMmI0NTU5MmVjZTNmMzJhYzZiYzIy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci9yZWFkX2F1dGhfZmlsZV91bml0dGVzdC5jYwpAQCAt
MCwwICsxLDQ0IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSA8c3N0cmVhbT4KKwor
I2luY2x1ZGUgImV4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuaCIKKyNpbmNsdWRl
ICJ0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGNfZXhhbXBsZXMgeworCitURVNUKFJl
YWRBdXRoRmlsZSwgSGFuZGxlc0VtcHR5RmlsZSkgeworICBzdGQ6OmlzdHJpbmdzdHJlYW0gZW1w
dHk7CisgIGF1dG8gbWFwID0gUmVhZEF1dGhGaWxlKCZlbXB0eSk7CisgIEVYUEVDVF9UUlVFKG1h
cC5lbXB0eSgpKTsKK30KKworVEVTVChSZWFkQXV0aEZpbGUsIFJlY29nbml6ZXNWYWxpZFVzZXIp
IHsKKyAgc3RkOjppc3RyaW5nc3RyZWFtIGZpbGUoImZvbz1kZWFkYmVhZlxuIik7CisgIGF1dG8g
bWFwID0gUmVhZEF1dGhGaWxlKCZmaWxlKTsKKyAgQVNTRVJUX05FKG1hcC5maW5kKCJmb28iKSwg
bWFwLmVuZCgpKTsKKyAgRVhQRUNUX0VRKG1hcFsiZm9vIl0sICJceGRlXHhhZFx4YmVceGFmIik7
Cit9CisKK1RFU1QoUmVhZEF1dGhGaWxlLCBFbXB0eVZhbHVlRm9ySW52YWxpZEhleCkgeworICBz
dGQ6OmlzdHJpbmdzdHJlYW0gZmlsZSgKKyAgICAgICJmb289ZGVhZGJlYWZcbiIKKyAgICAgICJi
YXI9eHh4eGludmFsaWRoZXhcbiIKKyAgICAgICJiYXo9Y2FmZVxuIik7CisgIGF1dG8gbWFwID0g
UmVhZEF1dGhGaWxlKCZmaWxlKTsKKyAgQVNTRVJUX05FKG1hcC5maW5kKCJmb28iKSwgbWFwLmVu
ZCgpKTsKKyAgRVhQRUNUX0VRKG1hcFsiZm9vIl0sICJceGRlXHhhZFx4YmVceGFmIik7CisgIEVY
UEVDVF9FUShtYXAuZmluZCgiYmFyIiksIG1hcC5lbmQoKSk7CisgIEFTU0VSVF9ORShtYXAuZmlu
ZCgiYmF6IiksIG1hcC5lbmQoKSk7CisgIEVYUEVDVF9FUShtYXBbImJheiJdLCAiXHhjYVx4ZmUi
KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Y19leGFtcGxlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZl
ci90dXJuc2VydmVyX21haW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy90dXJuc2VydmVyL3R1cm5zZXJ2ZXJfbWFpbi5jYwppbmRleCBlZGMw
YjY5OWI0Yzc2MjhkMzU0NTFlOThmMGE4ZTlmOTQzZjM3MzZjLi44NTBmYzJkOWM4OWEyMTViOWUx
MmU5ODgwNTg1YWMwNDE5Yjk0ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy90dXJuc2VydmVyL3R1cm5zZXJ2ZXJfbWFpbi5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxl
cy90dXJuc2VydmVyL3R1cm5zZXJ2ZXJfbWFpbi5jYwpAQCAtOCwzOSArOCw0NCBAQAogICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgogICovCiAKLSNpbmNsdWRlIDxpb3N0cmVhbT4gIC8vIE5PTElOVAorI2luY2x1ZGUgPGZzdHJl
YW0+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHN0cmlu
Zz4KIAorI2luY2x1ZGUgImV4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuaCIKICNp
bmNsdWRlICJwMnAvYmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3RvcnkuaCIKICNpbmNsdWRlICJw
MnAvYmFzZS90dXJuc2VydmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmN1ZHBzb2NrZXQu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9vcHRpb25zZmlsZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3N0cmluZ2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogCi1zdGF0aWMg
Y29uc3QgY2hhciBrU29mdHdhcmVbXSA9ICJsaWJqaW5nbGUgVHVyblNlcnZlciI7CituYW1lc3Bh
Y2UgeworY29uc3QgY2hhciBrU29mdHdhcmVbXSA9ICJsaWJqaW5nbGUgVHVyblNlcnZlciI7CiAK
IGNsYXNzIFR1cm5GaWxlQXV0aCA6IHB1YmxpYyBjcmlja2V0OjpUdXJuQXV0aEludGVyZmFjZSB7
CiAgcHVibGljOgotICBleHBsaWNpdCBUdXJuRmlsZUF1dGgoY29uc3Qgc3RkOjpzdHJpbmcmIHBh
dGgpIDogZmlsZV8ocGF0aCkgeyBmaWxlXy5Mb2FkKCk7IH0KKyAgZXhwbGljaXQgVHVybkZpbGVB
dXRoKHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gbmFtZV90b19rZXkpCisgICAg
ICA6IG5hbWVfdG9fa2V5XyhzdGQ6Om1vdmUobmFtZV90b19rZXkpKSB7fQorCiAgIHZpcnR1YWwg
Ym9vbCBHZXRLZXkoY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByZWFsbSwKICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZyoga2V5KSB7CiAgICAgLy8gRmlsZSBpcyBzdG9yZWQgYXMgbGluZXMgb2YgPHVz
ZXJuYW1lPj08SEExPi4KICAgICAvLyBHZW5lcmF0ZSBIQTEgdmlhICJlY2hvIC1uICI8dXNlcm5h
bWU+OjxyZWFsbT46PHBhc3N3b3JkPiIgfCBtZDVzdW0iCi0gICAgc3RkOjpzdHJpbmcgaGV4Owot
ICAgIGJvb2wgcmV0ID0gZmlsZV8uR2V0U3RyaW5nVmFsdWUodXNlcm5hbWUsICZoZXgpOwotICAg
IGlmIChyZXQpIHsKLSAgICAgIGNoYXIgYnVmWzMyXTsKLSAgICAgIHNpemVfdCBsZW4gPSBydGM6
OmhleF9kZWNvZGUoYnVmLCBzaXplb2YoYnVmKSwgaGV4KTsKLSAgICAgICprZXkgPSBzdGQ6OnN0
cmluZyhidWYsIGxlbik7Ci0gICAgfQotICAgIHJldHVybiByZXQ7CisgICAgYXV0byBpdCA9IG5h
bWVfdG9fa2V5Xy5maW5kKHVzZXJuYW1lKTsKKyAgICBpZiAoaXQgPT0gbmFtZV90b19rZXlfLmVu
ZCgpKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgICprZXkgPSBpdC0+c2Vjb25kOworICAgIHJl
dHVybiB0cnVlOwogICB9CiAKICBwcml2YXRlOgotICBydGM6Ok9wdGlvbnNGaWxlIGZpbGVfOwor
ICBjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5hbWVfdG9fa2V5XzsK
IH07CiAKK30gIC8vIG5hbWVzcGFjZQorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltd
KSB7CiAgIGlmIChhcmdjICE9IDUpIHsKICAgICBzdGQ6OmNlcnIgPDwgInVzYWdlOiB0dXJuc2Vy
dmVyIGludC1hZGRyIGV4dC1pcCByZWFsbSBhdXRoLWZpbGUiCkBAIC03MCw3ICs3NSwxMSBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgIH0KIAogICBjcmlja2V0OjpUdXJu
U2VydmVyIHNlcnZlcihtYWluKTsKLSAgVHVybkZpbGVBdXRoIGF1dGgoYXJndls0XSk7CisgIHN0
ZDo6ZnN0cmVhbSBhdXRoX2ZpbGUoYXJndls0XSwgc3RkOjpmc3RyZWFtOjppbik7CisKKyAgVHVy
bkZpbGVBdXRoIGF1dGgoYXV0aF9maWxlLmlzX29wZW4oKQorICAgICAgICAgICAgICAgICAgICAg
ICAgPyB3ZWJydGNfZXhhbXBsZXM6OlJlYWRBdXRoRmlsZSgmYXV0aF9maWxlKQorICAgICAgICAg
ICAgICAgICAgICAgICAgOiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+KCkpOwog
ICBzZXJ2ZXIuc2V0X3JlYWxtKGFyZ3ZbM10pOwogICBzZXJ2ZXIuc2V0X3NvZnR3YXJlKGtTb2Z0
d2FyZSk7CiAgIHNlcnZlci5zZXRfYXV0aF9ob29rKCZhdXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3VuaXR5cGx1Z2lu
L3NpbXBsZV9wZWVyX2Nvbm5lY3Rpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy91bml0eXBsdWdpbi9zaW1wbGVfcGVlcl9jb25uZWN0aW9u
LmNjCmluZGV4IDM2ZTE5MzdlYWQ3ZDkyYzRlMTEyNTZkMTc2ODY1N2UzYjdmYzI2NWUuLmJmNmE2
ODI3YjAzMDcxY2Y2NjQ4YjdhMWYyOTQ4YmY0ODE1NjUxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3VuaXR5cGx1Z2luL3Np
bXBsZV9wZWVyX2Nvbm5lY3Rpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdW5pdHlwbHVnaW4vc2ltcGxlX3BlZXJfY29ubmVjdGlv
bi5jYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgog
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3Rvcnku
aCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5LmgiCisjaW5jbHVkZSAiYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvc291cmNlcHJveHkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUv
aW50ZXJuYWxkZWNvZGVyZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5h
bGVuY29kZXJmYWN0b3J5LmgiCkBAIC00NDgsNyArNDQ5LDggQEAgdm9pZCBTaW1wbGVQZWVyQ29u
bmVjdGlvbjo6QWRkU3RyZWFtcyhib29sIGF1ZGlvX29ubHkpIHsKIAogICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OmpuaTo6QW5kcm9pZFZpZGVvVHJhY2tTb3VyY2U+IHNvdXJjZSgKICAg
ICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDx3ZWJydGM6OmpuaTo6QW5kcm9pZFZpZGVv
VHJhY2tTb3VyY2U+KAotICAgICAgICAgICAgZ19zaWduYWxpbmdfdGhyZWFkLmdldCgpLCBlbnYs
IGZhbHNlKSk7CisgICAgICAgICAgICBnX3NpZ25hbGluZ190aHJlYWQuZ2V0KCksIGVudiwgLyog
aXNfc2NyZWVuY2FzdD0gKi8gZmFsc2UsCisgICAgICAgICAgICAvKiBhbGlnbl90aW1lc3RhbXBz
PSAqLyB0cnVlKSk7CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja1Nv
dXJjZVByb3h5PiBwcm94eV9zb3VyY2UgPQogICAgICAgICB3ZWJydGM6OlZpZGVvVHJhY2tTb3Vy
Y2VQcm94eTo6Q3JlYXRlKGdfc2lnbmFsaW5nX3RocmVhZC5nZXQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3dvcmtlcl90aHJlYWQuZ2V0KCksIHNv
dXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9pbmZyYS9jb25maWcvY3EuY2ZnIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvaW5mcmEvY29uZmlnL2NxLmNmZwppbmRleCBjN2I1ZWY5MjNiOGFkZTQyNjY3
NzNiMWQzOTA4Y2VjZjUxYmM0NzQzLi4xYzBmMDIyOGY4MTFkNGRjMTc0YjM4M2Q5MDZmNGMzYjA1
Y2YzNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9pbmZyYS9jb25maWcvY3EuY2ZnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2luZnJhL2NvbmZpZy9jcS5jZmcKQEAgLTM2LDcgKzM2LDYgQEAgdmVy
aWZpZXJzIHsKICAgICAgIGJ1aWxkZXJzIHsgbmFtZTogImlvc19hcm02NF9yZWwiIH0KICAgICAg
IGJ1aWxkZXJzIHsgbmFtZTogImlvc19kYmciIH0KICAgICAgIGJ1aWxkZXJzIHsgbmFtZTogImlv
c19yZWwiIH0KLSAgICAgIGJ1aWxkZXJzIHsgbmFtZTogImlvczMyX3NpbV9pb3M5X2RiZyIgfQog
ICAgICAgYnVpbGRlcnMgeyBuYW1lOiAiaW9zNjRfc2ltX2lvczlfZGJnIiB9CiAgICAgICBidWls
ZGVycyB7IG5hbWU6ICJpb3M2NF9zaW1faW9zMTBfZGJnIiB9CiAgICAgICBidWlsZGVycyB7IG5h
bWU6ICJpb3NfYXBpX2ZyYW1ld29yayIgfQpAQCAtNjMsNyArNjIsMTIgQEAgdmVyaWZpZXJzIHsK
ICAgICAgIGJ1aWxkZXJzIHsgbmFtZTogIm1hY19jaHJvbWl1bV9jb21waWxlIiB9CiAgICAgICBi
dWlsZGVycyB7IG5hbWU6ICJtYWNfY29tcGlsZV9kYmciIH0KICAgICAgIGJ1aWxkZXJzIHsgbmFt
ZTogIm1hY19yZWwiIH0KLSAgICAgIGJ1aWxkZXJzIHsgbmFtZTogInByZXN1Ym1pdCIgfQorICAg
ICAgYnVpbGRlcnMgeworICAgICAgICBuYW1lOiAicHJlc3VibWl0IgorICAgICAgICAjIFByZXN1
Ym1pdCBidWlsZGVyIHNob3VsZCBiZSByZS1ydW4gZXZlcnkgdGltZSBDUSBpcyB0cmlnZ2VyZWQK
KyAgICAgICAgIyBmb3IgbGFzdCBtaW51dGUgbGludCwgT1dORVJTLCBldGMgY2hlY2tzLgorICAg
ICAgICBkaXNhYmxlX3JldXNlOiB0cnVlCisgICAgICB9CiAgICAgICBidWlsZGVycyB7IG5hbWU6
ICJ3aW5fYXNhbiIgfQogICAgICAgYnVpbGRlcnMgeyBuYW1lOiAid2luX2Nocm9taXVtX2NvbXBp
bGUiIH0KICAgICAgIGJ1aWxkZXJzIHsgbmFtZTogIndpbl9jbGFuZ19kYmciIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L0JVSUxELmduCmluZGV4IDM4NzExOTNiYWRjZDdmNjgxMDc3ZWQ3MDI5ODgwMWIwZGY1MWYwM2Qu
LjU3NTk1MmMzMTVmOWMzMTgyMDU0Yzk5ODcyMzdjYWEzOWNmNWQyYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvQlVJTEQuZ24K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9C
VUlMRC5nbgpAQCAtNDIsNiArNDIsNyBAQCBydGNfc291cmNlX3NldCgicnRjX2V2ZW50X2xvZ19h
cGkiKSB7CiAgICAgIi4uL3J0Y19iYXNlOnB0cl91dGlsIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRj
X2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIH0KIApAQCAtNTMs
NyArNTQsNiBAQCBydGNfc291cmNlX3NldCgicnRjX3N0cmVhbV9jb25maWciKSB7CiAKICAgZGVw
cyA9IFsKICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIs
CiAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgXQogfQpAQCAt
ODcsNiArODcsNyBAQCBydGNfc291cmNlX3NldCgicnRjX2V2ZW50X2F1ZGlvIikgewogICAgICI6
cnRjX2V2ZW50X2xvZ19hcGkiLAogICAgICI6cnRjX3N0cmVhbV9jb25maWciLAogICAgICIuLi9t
b2R1bGVzL2F1ZGlvX2NvZGluZzphdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnIiwKKyAgICAi
Li4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vcnRjX2Jhc2U6cHRyX3V0aWwiLAogICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCkBAIC0xMzAsNiArMTMx
LDcgQEAgcnRjX3NvdXJjZV9zZXQoInJ0Y19ldmVudF9ydHBfcnRjcCIpIHsKICAgICAiOnJ0Y19l
dmVudF9sb2dfYXBpIiwKICAgICAiLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi9tb2R1bGVz
L3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCisgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAg
ICAgIi4uL3J0Y19iYXNlOnB0cl91dGlsIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBw
cm92ZWQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLApAQCAt
MTQ3LDQwICsxNDksNjIgQEAgcnRjX3NvdXJjZV9zZXQoInJ0Y19ldmVudF92aWRlbyIpIHsKICAg
ZGVwcyA9IFsKICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKICAgICAiOnJ0Y19zdHJlYW1fY29u
ZmlnIiwKKyAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vcnRjX2Jhc2U6cHRyX3V0
aWwiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiB9
CiAKKyMgVE9ETyhlbGFkYWxvbik6IEJyZWFrIGRvd24gaW50byAoMSkgZW5jb2RlciBhbmQgKDIp
IGRlY29kZXI7IHdlIGRvbid0IG5lZWQKKyMgdGhlIGRlY29kZXIgY29kZSBpbiB0aGUgV2ViUlRD
IGxpYnJhcnksIG9ubHkgaW4gdW5pdCB0ZXN0cyBhbmQgdG9vbHMuCiBydGNfc3RhdGljX2xpYnJh
cnkoInJ0Y19ldmVudF9sb2dfaW1wbF9lbmNvZGVyIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIg
XQogICBzb3VyY2VzID0gWwotICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xv
Z19lbmNvZGVyX2xlZ2FjeS5jYyIsCi0gICAgInJ0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZl
bnRfbG9nX2VuY29kZXJfbGVnYWN5LmgiLAorICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxv
Yl9lbmNvZGluZy5jYyIsCisgICAgInJ0Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5n
LmgiLAorICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuY2MiLAorICAg
ICJydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuaCIsCisgICAgInJ0Y19ldmVu
dF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmNjIiwKKyAgICAicnRj
X2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb24uaCIsCisgICAg
InJ0Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQuY2MiLAorICAgICJydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvdmFyaW50LmgiLAogICBdCiAKICAgZGVmaW5lcyA9IFtdCiAKICAgZGVwcyA9IFsKLSAg
ICAiOmljZV9sb2ciLAotICAgICI6cnRjX2V2ZW50X2F1ZGlvIiwKLSAgICAiOnJ0Y19ldmVudF9i
d2UiLAotICAgICI6cnRjX2V2ZW50X2xvZ19hcGkiLAotICAgICI6cnRjX2V2ZW50X2xvZ19pbXBs
X291dHB1dCIsCi0gICAgIjpydGNfZXZlbnRfcGFjaW5nIiwKLSAgICAiOnJ0Y19ldmVudF9ydHBf
cnRjcCIsCi0gICAgIjpydGNfZXZlbnRfdmlkZW8iLAotICAgICI6cnRjX3N0cmVhbV9jb25maWci
LAotICAgICIuLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzphdWRpb19uZXR3b3JrX2FkYXB0b3IiLAot
ICAgICIuLi9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcjpyZW1vdGVfYml0cmF0ZV9l
c3RpbWF0b3IiLAotICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAg
ICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5nczpzdHJpbmdzIiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiAKICAgaWYg
KHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAgICBkZWZpbmVzICs9IFsgIkVOQUJMRV9SVENfRVZF
TlRfTE9HIiBdCi0gICAgZGVwcyArPSBbICI6cnRjX2V2ZW50X2xvZ19wcm90byIgXQorICAgIGRl
cHMgKz0gWworICAgICAgIjppY2VfbG9nIiwKKyAgICAgICI6cnRjX2V2ZW50X2F1ZGlvIiwKKyAg
ICAgICI6cnRjX2V2ZW50X2J3ZSIsCisgICAgICAiOnJ0Y19ldmVudF9sb2cyX3Byb3RvIiwKKyAg
ICAgICI6cnRjX2V2ZW50X2xvZ19hcGkiLAorICAgICAgIjpydGNfZXZlbnRfbG9nX2ltcGxfb3V0
cHV0IiwKKyAgICAgICI6cnRjX2V2ZW50X2xvZ19wcm90byIsCisgICAgICAiOnJ0Y19ldmVudF9w
YWNpbmciLAorICAgICAgIjpydGNfZXZlbnRfcnRwX3J0Y3AiLAorICAgICAgIjpydGNfZXZlbnRf
dmlkZW8iLAorICAgICAgIjpydGNfc3RyZWFtX2NvbmZpZyIsCisgICAgICAiLi4vYXBpOmFycmF5
X3ZpZXciLAorICAgICAgIi4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmF1ZGlvX25ldHdvcmtfYWRh
cHRvciIsCisgICAgICAiLi4vbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3I6cmVtb3Rl
X2JpdHJhdGVfZXN0aW1hdG9yIiwKKyAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNw
X2Zvcm1hdCIsCisgICAgXQorICAgIHNvdXJjZXMgKz0gWworICAgICAgInJ0Y19ldmVudF9sb2cv
ZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbGVnYWN5LmNjIiwKKyAgICAgICJydGNfZXZl
bnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5oIiwKKyAgICAgICJy
dGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25ld19mb3JtYXQuY2Mi
LAorICAgICAgInJ0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbmV3
X2Zvcm1hdC5oIiwKKyAgICBdCiAgIH0KIH0KIApAQCAtMjExLDggKzIzNSw3IEBAIHJ0Y19zdGF0
aWNfbGlicmFyeSgicnRjX2V2ZW50X2xvZ19pbXBsX2Jhc2UiKSB7CiAgIGRlcHMgPSBbCiAgICAg
IjppY2VfbG9nIiwKICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKLSAgICAiOnJ0Y19ldmVudF9s
b2dfaW1wbF9lbmNvZGVyIiwKLSAgICAiOnJ0Y19ldmVudF9sb2dfaW1wbF9vdXRwdXQiLAorICAg
ICIuLi9hcGk6bGliamluZ2xlX2xvZ2dpbmdfYXBpIiwKICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tz
IiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi9ydGNfYmFz
ZTpydGNfdGFza19xdWV1ZSIsCkBAIC0yMjMsNyArMjQ2LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5
KCJydGNfZXZlbnRfbG9nX2ltcGxfYmFzZSIpIHsKIAogICBpZiAocnRjX2VuYWJsZV9wcm90b2J1
ZikgewogICAgIGRlZmluZXMgKz0gWyAiRU5BQkxFX1JUQ19FVkVOVF9MT0ciIF0KLSAgICBkZXBz
ICs9IFsgIjpydGNfZXZlbnRfbG9nX3Byb3RvIiBdCisgICAgZGVwcyArPSBbICI6cnRjX2V2ZW50
X2xvZ19pbXBsX2VuY29kZXIiIF0KICAgfQogfQogCkBAIC0yNDYsNiArMjY5LDcgQEAgcnRjX3Nv
dXJjZV9zZXQoImZha2VfcnRjX2V2ZW50X2xvZyIpIHsKIAogaWYgKHJ0Y19lbmFibGVfcHJvdG9i
dWYpIHsKICAgcHJvdG9fbGlicmFyeSgicnRjX2V2ZW50X2xvZ19wcm90byIpIHsKKyAgICB2aXNp
YmlsaXR5ID0gWyAiKiIgXQogICAgIHNvdXJjZXMgPSBbCiAgICAgICAicnRjX2V2ZW50X2xvZy9y
dGNfZXZlbnRfbG9nLnByb3RvIiwKICAgICBdCkBAIC0yNTMsNiArMjc3LDcgQEAgaWYgKHJ0Y19l
bmFibGVfcHJvdG9idWYpIHsKICAgfQogCiAgIHByb3RvX2xpYnJhcnkoInJ0Y19ldmVudF9sb2cy
X3Byb3RvIikgeworICAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgICAgc291cmNlcyA9IFsKICAg
ICAgICJydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnByb3RvIiwKICAgICBdCkBAIC0yNjIs
OCArMjg3LDYgQEAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAgcnRjX3N0YXRpY19saWJy
YXJ5KCJydGNfZXZlbnRfbG9nX3BhcnNlciIpIHsKICAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQog
ICAgIHNvdXJjZXMgPSBbCi0gICAgICAicnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNl
ci5jYyIsCi0gICAgICAicnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5oIiwKICAg
ICAgICJydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5jYyIsCiAgICAgICAi
cnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlcl9uZXcuaCIsCiAgICAgICAicnRjX2V2
ZW50X2xvZy9ydGNfZXZlbnRfcHJvY2Vzc29yLmgiLApAQCAtMjc0LDEzICsyOTcsMTMgQEAgaWYg
KHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAgICAgICI6cnRjX2V2ZW50X2J3ZSIsCiAgICAgICAi
OnJ0Y19ldmVudF9sb2cyX3Byb3RvIiwKICAgICAgICI6cnRjX2V2ZW50X2xvZ19hcGkiLAorICAg
ICAgIjpydGNfZXZlbnRfbG9nX2ltcGxfZW5jb2RlciIsCiAgICAgICAiOnJ0Y19ldmVudF9sb2df
cHJvdG8iLAogICAgICAgIjpydGNfc3RyZWFtX2NvbmZpZyIsCi0gICAgICAiLi46d2VicnRjX2Nv
bW1vbiIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAg
ICAgIi4uL2NhbGw6dmlkZW9fc3RyZWFtX2FwaSIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19j
b2Rpbmc6YXVkaW9fbmV0d29ya19hZGFwdG9yIiwKLSAgICAgICIuLi9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlcjp0cmFuc3BvcnRfZmVlZGJhY2siLAorICAgICAgIi4uL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL3J0cDp0cmFuc3BvcnRfZmVlZGJhY2siLAogICAgICAgIi4uL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yOnJlbW90ZV9iaXRyYXRlX2VzdGltYXRvciIs
CiAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcCIsCiAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRj
cDpydHBfcnRjcF9mb3JtYXQiLApAQCAtMjk4LDYgKzMyMSw5IEBAIGlmIChydGNfZW5hYmxlX3By
b3RvYnVmKSB7CiAgICAgICBhc3NlcnQocnRjX2VuYWJsZV9wcm90b2J1ZikKICAgICAgIGRlZmlu
ZXMgPSBbICJFTkFCTEVfUlRDX0VWRU5UX0xPRyIgXQogICAgICAgc291cmNlcyA9IFsKKyAgICAg
ICAgInJ0Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nX3VuaXR0ZXN0LmNjIiwKKyAg
ICAgICAgInJ0Y19ldmVudF9sb2cvZW5jb2Rlci9kZWx0YV9lbmNvZGluZ191bml0dGVzdC5jYyIs
CisgICAgICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2Nv
bW1vbl91bml0dGVzdC5jYyIsCiAgICAgICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2
ZW50X2xvZ19lbmNvZGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgInJ0Y19ldmVudF9sb2cvb3V0
cHV0L3J0Y19ldmVudF9sb2dfb3V0cHV0X2ZpbGVfdW5pdHRlc3QuY2MiLAogICAgICAgICAicnRj
X2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0LmNjIiwKQEAgLTMwOSw2ICszMzUsNyBA
QCBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgICAgICAiOmljZV9sb2ciLAogICAgICAg
ICAiOnJ0Y19ldmVudF9hdWRpbyIsCiAgICAgICAgICI6cnRjX2V2ZW50X2J3ZSIsCisgICAgICAg
ICI6cnRjX2V2ZW50X2xvZzJfcHJvdG8iLAogICAgICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwK
ICAgICAgICAgIjpydGNfZXZlbnRfbG9nX2ltcGxfYmFzZSIsCiAgICAgICAgICI6cnRjX2V2ZW50
X2xvZ19pbXBsX2VuY29kZXIiLApAQCAtMzMyLDYgKzM1OSw3IEBAIGlmIChydGNfZW5hYmxlX3By
b3RvYnVmKSB7CiAgICAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAgICIvL3Rl
c3RpbmcvZ3Rlc3QiLAogICAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5IiwKKyAgICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlv
bmFsIiwKICAgICAgIF0KICAgICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFu
ZykgewogICAgICAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIENocm9taXVtIENsYW5n
IHBsdWdpbiAoYnVncy53ZWJydGMub3JnLzE2MykuCkBAIC0zNjIsNDkgKzM5MCw2IEBAIGlmIChy
dGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAgICAgICB9CiAgICAgfQogICB9Ci0KLSAgaWYgKHJ0Y19p
bmNsdWRlX3Rlc3RzKSB7Ci0gICAgcnRjX2V4ZWN1dGFibGUoInJ0Y19ldmVudF9sb2cydGV4dCIp
IHsKLSAgICAgIHRlc3Rvbmx5ID0gdHJ1ZQotICAgICAgc291cmNlcyA9IFsKLSAgICAgICAgInJ0
Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzJ0ZXh0LmNjIiwKLSAgICAgIF0KLSAgICAgIGRlcHMg
PSBbCi0gICAgICAgICI6cnRjX2V2ZW50X2xvZ19hcGkiLAotICAgICAgICAiOnJ0Y19ldmVudF9s
b2dfcGFyc2VyIiwKLSAgICAgICAgIi4uLzp3ZWJydGNfY29tbW9uIiwKLSAgICAgICAgIi4uL2Nh
bGw6dmlkZW9fc3RyZWFtX2FwaSIsCi0gICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9y
dGNwX2Zvcm1hdCIsCi0gICAgICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAotICAgICAgICAiLi4v
cnRjX2Jhc2U6cHJvdG9idWZfdXRpbHMiLAotICAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLAotICAgICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAotCi0gICAgICAg
ICMgVE9ETyhrd2liZXJnKTogUmVtb3ZlIHRoaXMgZGVwZW5kZW5jeS4KLSAgICAgICAgIi4uL2Fw
aS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCi0gICAgICAgICIuLi9tb2R1bGVzL2F1
ZGlvX2NvZGluZzphdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnIiwKLSAgICAgICAgIi4uL21v
ZHVsZXMvcnRwX3J0Y3AiLAotICAgICAgXQotICAgICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVt
ICYmIGlzX2NsYW5nKSB7Ci0gICAgICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hy
b21pdW0gQ2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KLSAgICAgICAgc3VwcHJl
c3NlZF9jb25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2NsYW5nOmZpbmRfYmFkX2NvbnN0cnVj
dHMiIF0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7Ci0g
ICAgcnRjX2V4ZWN1dGFibGUoInJ0Y19ldmVudF9sb2cyc3RhdHMiKSB7Ci0gICAgICB0ZXN0b25s
eSA9IHRydWUKLSAgICAgIHNvdXJjZXMgPSBbCi0gICAgICAgICJydGNfZXZlbnRfbG9nL3J0Y19l
dmVudF9sb2cyc3RhdHMuY2MiLAotICAgICAgXQotICAgICAgZGVwcyA9IFsKLSAgICAgICAgIjpy
dGNfZXZlbnRfbG9nX2FwaSIsCi0gICAgICAgICI6cnRjX2V2ZW50X2xvZ19wcm90byIsCi0gICAg
ICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAotICAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLAotICAgICAgXQotICAgIH0KLSAgfQogfQogCiBydGNfc291cmNlX3NldCgiaWNl
X2xvZyIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmcuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMTM3ZjEzZmMxYTQw
MmY2ZDgwODM4N2E3NmE0MDk0OTQ1ODVmZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5j
b2Rlci9ibG9iX2VuY29kaW5nLmNjCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogIENvcHlyaWdo
dCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5j
b2RpbmcuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKworI2luY2x1ZGUgImxvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9lbmNvZGVyL3ZhcmludC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK3N0ZDo6c3RyaW5nIEVuY29kZUJsb2JzKGNvbnN0
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgYmxvYnMpIHsKKyAgUlRDX0RDSEVDSyghYmxvYnMu
ZW1wdHkoKSk7CisKKyAgc2l6ZV90IHJlc3VsdF9sZW5ndGhfYm91bmQgPSBrTWF4VmFySW50TGVu
Z3RoQnl0ZXMgKiBibG9icy5zaXplKCk7CisgIGZvciAoY29uc3QgYXV0byYgYmxvYiA6IGJsb2Jz
KSB7CisgICAgLy8gUHJvdmlkaW5nIGFuIGlucHV0IHNvIGxvbmcgdGhhdCBpdCB3b3VsZCBjYXVz
ZSBhIHdyYXAtYXJvdW5kIGlzIGFuIGVycm9yLgorICAgIFJUQ19EQ0hFQ0tfR0UocmVzdWx0X2xl
bmd0aF9ib3VuZCArIGJsb2IubGVuZ3RoKCksIHJlc3VsdF9sZW5ndGhfYm91bmQpOworICAgIHJl
c3VsdF9sZW5ndGhfYm91bmQgKz0gYmxvYi5sZW5ndGgoKTsKKyAgfQorCisgIHN0ZDo6c3RyaW5n
IHJlc3VsdDsKKyAgcmVzdWx0LnJlc2VydmUocmVzdWx0X2xlbmd0aF9ib3VuZCk7CisKKyAgLy8g
Rmlyc3QsIGVuY29kZSBhbGwgb2YgdGhlIGxlbmd0aHMuCisgIGZvciAoYWJzbDo6c3RyaW5nX3Zp
ZXcgYmxvYiA6IGJsb2JzKSB7CisgICAgcmVzdWx0ICs9IEVuY29kZVZhckludChibG9iLmxlbmd0
aCgpKTsKKyAgfQorCisgIC8vIFNlY29uZCwgZW5jb2RlIHRoZSBhY3R1YWwgYmxvYnMuCisgIGZv
ciAoYWJzbDo6c3RyaW5nX3ZpZXcgYmxvYiA6IGJsb2JzKSB7CisgICAgcmVzdWx0LmFwcGVuZChi
bG9iLmRhdGEoKSwgYmxvYi5sZW5ndGgoKSk7CisgIH0KKworICBSVENfRENIRUNLX0xFKHJlc3Vs
dC5zaXplKCksIHJlc3VsdF9sZW5ndGhfYm91bmQpOworICByZXR1cm4gcmVzdWx0OworfQorCitz
dGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4gRGVjb2RlQmxvYnMoYWJzbDo6c3RyaW5nX3Zp
ZXcgZW5jb2RlZF9ibG9icywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbnVtX29mX2Jsb2JzKSB7CisgIGlmIChlbmNvZGVkX2Jsb2JzLmVtcHR5KCkp
IHsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJDb3JydXB0IGlucHV0OyBlbXB0eSBpbnB1
dC4iOworICAgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4oKTsKKyAgfQor
CisgIGlmIChudW1fb2ZfYmxvYnMgPT0gMHUpIHsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpCisg
ICAgICAgIDw8ICJDb3JydXB0IGlucHV0OyBudW1iZXIgb2YgYmxvYnMgbXVzdCBiZSBncmVhdGVy
IHRoYW4gMC4iOworICAgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4oKTsK
KyAgfQorCisgIHNpemVfdCByZWFkX2lkeCA9IDA7CisKKyAgLy8gUmVhZCB0aGUgbGVuZ3RocyBv
ZiBhbGwgYmxvYnMuCisgIHN0ZDo6dmVjdG9yPHVpbnQ2NF90PiBsZW5ndGhzKG51bV9vZl9ibG9i
cyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX29mX2Jsb2JzOyArK2kpIHsKKyAgICBp
ZiAocmVhZF9pZHggPj0gZW5jb2RlZF9ibG9icy5sZW5ndGgoKSkgeworICAgICAgUlRDX0RDSEVD
S19FUShyZWFkX2lkeCwgZW5jb2RlZF9ibG9icy5sZW5ndGgoKSk7CisgICAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJDb3JydXB0IGlucHV0OyBleGNlc3NpdmUgbnVtYmVyIG9mIGJsb2JzLiI7
CisgICAgICByZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+KCk7CisgICAgfQor
CisgICAgY29uc3Qgc2l6ZV90IHJlYWRfYnl0ZXMgPQorICAgICAgICBEZWNvZGVWYXJJbnQoZW5j
b2RlZF9ibG9icy5zdWJzdHIocmVhZF9pZHgpLCAmbGVuZ3Roc1tpXSk7CisgICAgaWYgKHJlYWRf
Ynl0ZXMgPT0gMCkgeworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ29ycnVwdCBpbnB1
dDsgdmFyaW50IGRlY29kaW5nIGZhaWxlZC4iOworICAgICAgcmV0dXJuIHN0ZDo6dmVjdG9yPGFi
c2w6OnN0cmluZ192aWV3PigpOworICAgIH0KKworICAgIHJlYWRfaWR4ICs9IHJlYWRfYnl0ZXM7
CisKKyAgICAvLyBOb3RlOiBJdCBtaWdodCBiZSB0aGF0IHJlYWRfaWR4ID09IGVuY29kZWRfYmxv
YnMubGVuZ3RoKCksIGlmIHRoaXMKKyAgICAvLyBpcyB0aGUgbGFzdCBpdGVyYXRpb24sIGFuZCBh
bGwgb2YgdGhlIGJsb2JzIGFyZSB0aGUgZW1wdHkgc3RyaW5nLgorICAgIFJUQ19EQ0hFQ0tfTEUo
cmVhZF9pZHgsIGVuY29kZWRfYmxvYnMubGVuZ3RoKCkpOworICB9CisKKyAgLy8gUmVhZCB0aGUg
YmxvYnMgdGhlbXNlbHZlcy4KKyAgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IGJsb2Jz
KG51bV9vZl9ibG9icyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX29mX2Jsb2JzOyAr
K2kpIHsKKyAgICBpZiAocmVhZF9pZHggKyBsZW5ndGhzW2ldIDwgcmVhZF9pZHgpIHsgIC8vIFdy
YXAtYXJvdW5kIGRldGVjdGlvbi4KKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNvcnJ1
cHQgaW5wdXQ7IHVucmVhc29uYWJseSBsYXJnZSBibG9iIHNlcXVlbmNlLiI7CisgICAgICByZXR1
cm4gc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+KCk7CisgICAgfQorCisgICAgaWYgKHJl
YWRfaWR4ICsgbGVuZ3Roc1tpXSA+IGVuY29kZWRfYmxvYnMubGVuZ3RoKCkpIHsKKyAgICAgIFJU
Q19MT0coTFNfV0FSTklORykgPDwgIkNvcnJ1cHQgaW5wdXQ7IGJsb2Igc2l6ZXMgZXhjZWVkIGlu
cHV0IHNpemUuIjsKKyAgICAgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4o
KTsKKyAgICB9CisKKyAgICBibG9ic1tpXSA9IGVuY29kZWRfYmxvYnMuc3Vic3RyKHJlYWRfaWR4
LCBsZW5ndGhzW2ldKTsKKyAgICByZWFkX2lkeCArPSBsZW5ndGhzW2ldOworICB9CisKKyAgaWYg
KHJlYWRfaWR4ICE9IGVuY29kZWRfYmxvYnMubGVuZ3RoKCkpIHsKKyAgICBSVENfTE9HKExTX1dB
Uk5JTkcpIDw8ICJDb3JydXB0IGlucHV0OyB1bnJlY29nbml6ZWQgdHJhaWxlci4iOworICAgIHJl
dHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4oKTsKKyAgfQorCisgIHJldHVybiBi
bG9iczsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvYmxvYl9lbmNvZGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGluZy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjMyYTEwZDI3N2Y3ZmQ2YWUxNzAzMGE3NzRhMDNlOGI3MWQ5NjBkOGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nLmgKQEAgLTAsMCArMSw1
MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRf
TE9HX0VOQ09ERVJfQkxPQl9FTkNPRElOR19IXworI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9M
T0dfRU5DT0RFUl9CTE9CX0VOQ09ESU5HX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVk
ZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25h
bWVzcGFjZSB3ZWJydGMgeworCisvLyBFbmNvZGUvZGVjb2RlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5n
cywgd2hvc2UgbGVuZ3RoIGlzIG5vdCBrbm93biB0byBiZQorLy8gZGlzY2VybmFibGUgZnJvbSB0
aGUgYmxvYiBpdHNlbGYgKGkuZS4gd2l0aG91dCBiZWluZyB0cmFuc21pdHRlZCBPT0IpLAorLy8g
aW4gYSB3YXkgdGhhdCB3b3VsZCBhbGxvdyB1cyB0byBzZXBhcmF0ZSB0aGVtIGFnYWluIG9uIHRo
ZSBkZWNvZGluZyBzaWRlLgorLy8gVGhlIG51bWJlciBvZiBibG9icyBpcyBhc3N1bWVkIHRvIGJl
IHRyYW5zbWl0dGVkIE9PQi4gRm9yIGV4YW1wbGUsIGlmCisvLyBtdWx0aXBsZSBzZXF1ZW5jZXMg
b2YgZGlmZmVyZW50IGJsb2JzIGFyZSBzZW50LCBidXQgYWxsIHNlcXVlbmNlcyBjb250YWluCisv
LyB0aGUgc2FtZSBudW1iZXIgb2YgYmxvYnMsIGl0IGlzIGJlbmVmaWNpYWwgdG8gbm90IGVuY29k
ZSB0aGUgbnVtYmVyIG9mIGJsb2JzLgorLy8KKy8vIEVuY29kZUJsb2JzKCkgbXVzdCBiZSBnaXZl
biBhIG5vbi1lbXB0eSB2ZWN0b3IuIFRoZSBibG9icyB0aGVtc2VsdmVzIG1heQorLy8gYmUgZXF1
YWwgdG8gIiIsIHRob3VnaC4KKy8vIEVuY29kZUJsb2JzKCkgbWF5IG5vdCBmYWlsLgorLy8gRW5j
b2RlQmxvYnMoKSBuZXZlciByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuCisvLworLy8gQ2FsbGlu
ZyBEZWNvZGVCbG9icygpIG9uIGFuIGVtcHR5IHN0cmluZywgb3Igd2l0aCB8bnVtX29mX2Jsb2Jz
fCBzZXQgdG8gMCwKKy8vIGlzIGFuIGVycm9yLgorLy8gRGVjb2RlQmxvYnMoKSByZXR1cm5zIGFu
IGVtcHR5IHZlY3RvciBpZiBpdCBmYWlscywgZS5nLiBkdWUgdG8gYSBtaXNtYXRjaAorLy8gYmV0
d2VlbiB8bnVtX29mX2Jsb2JzfCBhbmQgfGVuY29kZWRfYmxvYnN8LCB3aGljaCBjYW4gaGFwcGVu
IGlmCisvLyB8ZW5jb2RlZF9ibG9ic3wgaXMgY29ycnVwdGVkLgorLy8gV2hlbiBzdWNjZXNzZnVs
LCBEZWNvZGVCbG9icygpIHJldHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5nX3ZpZXcgb2JqZWN0cywK
Ky8vIHdoaWNoIHJlZmVyIHRvIHRoZSBvcmlnaW5hbCBpbnB1dCAofGVuY29kZWRfYmxvYnN8KSwg
YW5kIHRoZXJlZm9yZSBtYXkKKy8vIG5vdCBvdXRsaXZlIGl0LgorLy8KKy8vIE5vdGUgdGhhdCB0
aGUgcmV0dXJuZWQgc3RkOjpzdHJpbmcgbWlnaHQgaGF2ZSBiZWVuIHJlc2VydmVkIGZvciBzaWdu
aWZpY2FudGx5CisvLyBtb3JlIG1lbW9yeSB0aGFuIGl0IGVuZHMgdXAgdXNpbmcuIElmIHRoZSBj
YWxsZXIgdG8gRW5jb2RlQmxvYnMoKSBpbnRlbmRzCisvLyB0byBzdG9yZSB0aGUgcmVzdWx0IGxv
bmctdGVybSwgaGUgc2hvdWxkIGNvbnNpZGVyIHNocmlua190b19maXQoKS1pbmcgaXQuCitzdGQ6
OnN0cmluZyBFbmNvZGVCbG9icyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGJsb2Jz
KTsKK3N0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PiBEZWNvZGVCbG9icyhhYnNsOjpzdHJp
bmdfdmlldyBlbmNvZGVkX2Jsb2JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBudW1fb2ZfYmxvYnMpOworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CisKKyNlbmRpZiAgLy8gTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09ERVJfQkxPQl9FTkNPRElO
R19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGluZ191bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmdfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWQwOGUwZmViODcwN2Y3NjEwNzM4YTliOWUyZGNkYmY1ODQxYWU3MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmdfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSwx
NTIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGluZy5oIgorCisjaW5jbHVkZSA8c3RyaW5nPgorI2lu
Y2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVy
L3ZhcmludC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInRlc3Qv
Z3Rlc3QuaCIKKwordXNpbmcgQ2hhclQgPSBzdGQ6OnN0cmluZzo6dmFsdWVfdHlwZTsKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKK25hbWVzcGFjZSB7CisKK3ZvaWQgVGVzdEVuY29kaW5nQW5kRGVj
b2RpbmcoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBibG9icykgeworICBSVENfRENI
RUNLKCFibG9icy5lbXB0eSgpKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBlbmNvZGVkID0gRW5j
b2RlQmxvYnMoYmxvYnMpOworICBBU1NFUlRfRkFMU0UoZW5jb2RlZC5lbXB0eSgpKTsKKworICBj
b25zdCBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4gZGVjb2RlZCA9CisgICAgICBEZWNv
ZGVCbG9icyhlbmNvZGVkLCBibG9icy5zaXplKCkpOworCisgIEFTU0VSVF9FUShkZWNvZGVkLnNp
emUoKSwgYmxvYnMuc2l6ZSgpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZWNvZGVkLnNp
emUoKTsgKytpKSB7CisgICAgQVNTRVJUX0VRKGRlY29kZWRbaV0sIGJsb2JzW2ldKTsKKyAgfQor
fQorCit2b2lkIFRlc3RHcmFjZWZ1bEVycm9ySGFuZGxpbmcoYWJzbDo6c3RyaW5nX3ZpZXcgZW5j
b2RlZF9ibG9icywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX29m
X2Jsb2JzKSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PiBkZWNvZGVk
ID0KKyAgICAgIERlY29kZUJsb2JzKGVuY29kZWRfYmxvYnMsIG51bV9vZl9ibG9icyk7CisgIEVY
UEVDVF9UUlVFKGRlY29kZWQuZW1wdHkoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitURVNU
KEJsb2JFbmNvZGluZywgRW1wdHlCbG9iKSB7CisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKHsi
In0pOworfQorCitURVNUKEJsb2JFbmNvZGluZywgU2luZ2xlQ2hhcmFjdGVyQmxvYikgeworICBU
ZXN0RW5jb2RpbmdBbmREZWNvZGluZyh7ImEifSk7Cit9CisKK1RFU1QoQmxvYkVuY29kaW5nLCBM
b25nQmxvYikgeworICBzdGQ6OnN0cmluZyBibG9iID0gIiI7CisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICBibG9iICs9IHN0ZDo6dG9fc3RyaW5nKGkgKyAxKSAr
ICIgTWlzc2lzc2lwcGlcbiI7CisgIH0KKyAgVGVzdEVuY29kaW5nQW5kRGVjb2Rpbmcoe2Jsb2J9
KTsKK30KKworVEVTVChCbG9iRW5jb2RpbmcsIEJsb2JzT2ZWYXJpb3VzTGVuZ3RocykgeworICBj
b25zdGV4cHIgc2l6ZV90IGtKdW1wID0gMHhmMDMyZDsgIC8vIEFyYml0cmFyeS4KKyAgY29uc3Rl
eHByIHNpemVfdCBrTWF4ID0gMHhmZmZmZmY7ICAvLyBBcmJpdHJhcnkuCisKKyAgc3RkOjpzdHJp
bmcgYmxvYjsKKyAgYmxvYi5yZXNlcnZlKGtNYXgpOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwga01heDsgaSArPSBrSnVtcCkgeworICAgIGJsb2IuYXBwZW5kKGtKdW1wLCAneCcpOworICAg
IFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKHtibG9ifSk7CisgIH0KK30KKworVEVTVChCbG9iRW5j
b2RpbmcsIE11bHRpcGxlQmxvYnMpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGJsb2Jz
OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgYmxvYnMucHVz
aF9iYWNrKHN0ZDo6dG9fc3RyaW5nKGkgKyAxKSArICIgTWlzc2lzc2lwcGlcbiIpOworICB9Cisg
IFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJsb2JzKTsKK30KKworVEVTVChCbG9iRW5jb2Rpbmcs
IERlY29kZUJsb2JzSGFuZGxlc0Vycm9yc0dyYWNlZnVsbHlFbXB0eUlucHV0KSB7CisgIFRlc3RH
cmFjZWZ1bEVycm9ySGFuZGxpbmcoIiIsIDEpOworfQorCitURVNUKEJsb2JFbmNvZGluZywgRGVj
b2RlQmxvYnNIYW5kbGVzRXJyb3JzR3JhY2VmdWxseVplcm9CbG9icykgeworICBjb25zdCBzdGQ6
OnN0cmluZyBlbmNvZGVkID0gRW5jb2RlQmxvYnMoeyJhIn0pOworICBBU1NFUlRfRkFMU0UoZW5j
b2RlZC5lbXB0eSgpKTsKKyAgVGVzdEdyYWNlZnVsRXJyb3JIYW5kbGluZyhlbmNvZGVkLCAwKTsK
K30KKworVEVTVChCbG9iRW5jb2RpbmcsIERlY29kZUJsb2JzSGFuZGxlc0Vycm9yc0dyYWNlZnVs
bHlCbG9iTGVuZ3RoVG9vU21hbGwpIHsKKyAgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IEVuY29kZUJs
b2JzKHsiYWIifSk7CisgIEFTU0VSVF9GQUxTRShlbmNvZGVkLmVtcHR5KCkpOworICBBU1NFUlRf
RVEoZW5jb2RlZFswXSwgMHgwMik7CisgIGVuY29kZWRbMF0gPSAweDAxOworICBUZXN0R3JhY2Vm
dWxFcnJvckhhbmRsaW5nKGVuY29kZWQsIDEpOworfQorCitURVNUKEJsb2JFbmNvZGluZywgRGVj
b2RlQmxvYnNIYW5kbGVzRXJyb3JzR3JhY2VmdWxseUJsb2JMZW5ndGhUb29MYXJnZSkgeworICBz
dGQ6OnN0cmluZyBlbmNvZGVkID0gRW5jb2RlQmxvYnMoeyJhIn0pOworICBBU1NFUlRfRkFMU0Uo
ZW5jb2RlZC5lbXB0eSgpKTsKKyAgQVNTRVJUX0VRKGVuY29kZWRbMF0sIDB4MDEpOworICBlbmNv
ZGVkWzBdID0gMHgwMjsKKyAgVGVzdEdyYWNlZnVsRXJyb3JIYW5kbGluZyhlbmNvZGVkLCAxKTsK
K30KKworVEVTVChCbG9iRW5jb2RpbmcsCisgICAgIERlY29kZUJsb2JzSGFuZGxlc0Vycm9yc0dy
YWNlZnVsbHlOdW1iZXJPZkJsb2JzSW5jb3JyZWN0bHlIaWdoKSB7CisgIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiBibG9icyA9IHsiYSIsICJiIn07CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGVuY29kZWQgPSBFbmNvZGVCbG9icyhibG9icyk7CisgIC8vIFRlc3QgZm9jdXMgLSB0d28gZW1w
dHkgc3RyaW5ncyBlbmNvZGVkLCBidXQgRGVjb2RlQmxvYnMoKSB0b2xkIHdheSBtb3JlCisgIC8v
IGJsb2JzIGFyZSBpbiB0aGUgc3RyaW5ncyB0aGFuIGNvdWxkIGJlIGV4cGVjdGVkLgorICBUZXN0
R3JhY2VmdWxFcnJvckhhbmRsaW5nKGVuY29kZWQsIDEwMDApOworCisgIC8vIFRlc3Qgc2FuaXR5
IC0gc2hvdyB0aGF0IERlY29kZUJsb2JzKCkgd291bGQgaGF2ZSB3b3JrZWQgaWYgaXQgZ290IHRo
ZQorICAvLyBjb3JyZWN0IGlucHV0LgorICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhibG9icyk7
Cit9CisKK1RFU1QoQmxvYkVuY29kaW5nLCBEZWNvZGVCbG9ic0hhbmRsZXNFcnJvcnNHcmFjZWZ1
bGx5RGVmZWN0aXZlVmFySW50KSB7CisgIHN0ZDo6c3RyaW5nIGRlZmVjdGl2ZV92YXJpbnQ7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga01heFZhckludExlbmd0aEJ5dGVzOyArK2kpIHsKKyAg
ICBBU1NFUlRfTEUoa01heFZhckludExlbmd0aEJ5dGVzLCAweGZmdSk7CisgICAgZGVmZWN0aXZl
X3ZhcmludCArPSBzdGF0aWNfY2FzdDxDaGFyVD4oc3RhdGljX2Nhc3Q8c2l6ZV90PigweDgwdSkg
fCBpKTsKKyAgfQorICBkZWZlY3RpdmVfdmFyaW50ICs9IDB4MDF1OworCisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGRlZmVjdGl2ZV9lbmNvZGVkID0gZGVmZWN0aXZlX3ZhcmludCArICJ3aGF0ZXZlciI7
CisKKyAgVGVzdEdyYWNlZnVsRXJyb3JIYW5kbGluZyhkZWZlY3RpdmVfZW5jb2RlZCwgMSk7Cit9
CisKK1RFU1QoQmxvYkVuY29kaW5nLCBEZWNvZGVCbG9ic0hhbmRsZXNFcnJvcnNHcmFjZWZ1bGx5
TGVuZ3RoU3VtV3JhcEFyb3VuZCkgeworICBzdGQ6OnN0cmluZyBtYXhfc2l6ZV92YXJpbnQ7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga01heFZhckludExlbmd0aEJ5dGVzIC0gMTsgKytpKSB7
CisgICAgbWF4X3NpemVfdmFyaW50ICs9IDB4ZmZ1OworICB9CisgIG1heF9zaXplX3ZhcmludCAr
PSAweDdmdTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBkZWZlY3RpdmVfZW5jb2RlZCA9CisgICAg
ICBtYXhfc2l6ZV92YXJpbnQgKyBtYXhfc2l6ZV92YXJpbnQgKyAid2hhdGV2ZXIiOworCisgIFRl
c3RHcmFjZWZ1bEVycm9ySGFuZGxpbmcoZGVmZWN0aXZlX2VuY29kZWQsIDIpOworfQorCit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9kZWx0YV9lbmNv
ZGluZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29kaW5nLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVl
MzM0Yjk4ZDAwMDliYWRmNDNkYWE0NTA1YTNkMGUzZmE5OWYzMzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvZW5jb2Rlci9kZWx0YV9lbmNvZGluZy5jYwpAQCAtMCwwICsxLDk3NCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5j
b2Rlci9kZWx0YV9lbmNvZGluZy5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1
ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9lbmNvZGVyL3ZhcmludC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25h
bWVzcGFjZSB7CisKKy8vIFRPRE8oZWxhZGFsb24pOiBPbmx5IGJ1aWxkIHRoZSBkZWNvZGVyIGlu
IHRvb2xzIGFuZCB1bml0IHRlc3RzLgorCitib29sIGdfZm9yY2VfdW5zaWduZWRfZm9yX3Rlc3Rp
bmcgPSBmYWxzZTsKK2Jvb2wgZ19mb3JjZV9zaWduZWRfZm9yX3Rlc3RpbmcgPSBmYWxzZTsKKwor
c2l6ZV90IEJpdHNUb0J5dGVzKHNpemVfdCBiaXRzKSB7CisgIHJldHVybiAoYml0cyAvIDgpICsg
KGJpdHMgJSA4ID4gMCA/IDEgOiAwKTsKK30KKworLy8gVE9ETyhlbGFkYWxvbik6IFJlcGxhY2Ug
Ynkgc29tZXRoaW5nIG1vcmUgZWZmaWNpZW50LgordWludDY0X3QgVW5zaWduZWRCaXRXaWR0aCh1
aW50NjRfdCBpbnB1dCwgYm9vbCB6ZXJvX3ZhbF9hc196ZXJvX3dpZHRoID0gZmFsc2UpIHsKKyAg
aWYgKHplcm9fdmFsX2FzX3plcm9fd2lkdGggJiYgaW5wdXQgPT0gMCkgeworICAgIHJldHVybiAw
OworICB9CisKKyAgdWludDY0X3Qgd2lkdGggPSAwOworICBkbyB7ICAvLyBpbnB1dCA9PSAwIC0+
IHdpZHRoID09IDEKKyAgICB3aWR0aCArPSAxOworICAgIGlucHV0ID4+PSAxOworICB9IHdoaWxl
IChpbnB1dCAhPSAwKTsKKyAgcmV0dXJuIHdpZHRoOworfQorCit1aW50NjRfdCBTaWduZWRCaXRX
aWR0aCh1aW50NjRfdCBtYXhfcG9zX21hZ25pdHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ2NF90IG1heF9uZWdfbWFnbml0dWRlKSB7CisgIGNvbnN0IHVpbnQ2NF90IGJpdHdpZHRo
X3BvcyA9IFVuc2lnbmVkQml0V2lkdGgobWF4X3Bvc19tYWduaXR1ZGUsIHRydWUpOworICBjb25z
dCB1aW50NjRfdCBiaXR3aWR0aF9uZWcgPQorICAgICAgKG1heF9uZWdfbWFnbml0dWRlID4gMCkg
PyBVbnNpZ25lZEJpdFdpZHRoKG1heF9uZWdfbWFnbml0dWRlIC0gMSwgdHJ1ZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogMDsKKyAgcmV0dXJuIDEgKyBzdGQ6Om1heChiaXR3aWR0
aF9wb3MsIGJpdHdpZHRoX25lZyk7Cit9CisKKy8vIFJldHVybiB0aGUgbWF4aW11bSBpbnRlZ2Vy
IG9mIGEgZ2l2ZW4gYml0IHdpZHRoLgorLy8gRXhhbXBsZXM6CisvLyBNYXhVbnNpZ25lZFZhbHVl
T2ZCaXRXaWR0aCgxKSA9IDB4MDEKKy8vIE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKDYpID0g
MHgzZgorLy8gTWF4VW5zaWduZWRWYWx1ZU9mQml0V2lkdGgoOCkgPSAweGZmCisvLyBNYXhVbnNp
Z25lZFZhbHVlT2ZCaXRXaWR0aCgzMikgPSAweGZmZmZmZmZmCit1aW50NjRfdCBNYXhVbnNpZ25l
ZFZhbHVlT2ZCaXRXaWR0aCh1aW50NjRfdCBiaXRfd2lkdGgpIHsKKyAgUlRDX0RDSEVDS19HRShi
aXRfd2lkdGgsIDEpOworICBSVENfRENIRUNLX0xFKGJpdF93aWR0aCwgNjQpOworICByZXR1cm4g
KGJpdF93aWR0aCA9PSA2NCkgPyBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkg
PDwgYml0X3dpZHRoKSAtIDEpOworfQorCisvLyBDb21wdXRlcyB0aGUgZGVsdGEgYmV0d2VlbiB8
cHJldmlvdXN8IGFuZCB8Y3VycmVudHwsIHVuZGVyIHRoZSBhc3N1bXB0aW9uCisvLyB0aGF0IHdy
YXAtYXJvdW5kIG9jY3VycyBhZnRlciB8d2lkdGh8IGlzIGV4Y2VlZGVkLgordWludDY0X3QgVW5z
aWduZWREZWx0YSh1aW50NjRfdCBwcmV2aW91cywgdWludDY0X3QgY3VycmVudCwgdWludDY0X3Qg
Yml0X21hc2spIHsKKyAgcmV0dXJuIChjdXJyZW50IC0gcHJldmlvdXMpICYgYml0X21hc2s7Cit9
CisKKy8vIERldGVybWluZXMgdGhlIGVuY29kaW5nIHR5cGUgKGUuZy4gZml4ZWQtc2l6ZSBlbmNv
ZGluZykuCisvLyBHaXZlbiBhbiBlbmNvZGluZyB0eXBlLCBtYXkgYWxzbyBkaXN0aW5ndWlzaCBi
ZXR3ZWVuIHNvbWUgdmFyaWFudHMgb2YgaXQKKy8vIChlLmcuIHdoaWNoIGZpZWxkcyBvZiB0aGUg
Zml4ZWQtc2l6ZSBlbmNvZGluZyBhcmUgZXhwbGljaXRseSBtZW50aW9uZWQgYnkKKy8vIHRoZSBo
ZWFkZXIsIGFuZCB3aGljaCBhcmUgaW1wbGljaXRseSBhc3N1bWVkIHRvIGhvbGQgY2VydGFpbiBk
ZWZhdWx0IHZhbHVlcykuCitlbnVtIGNsYXNzIEVuY29kaW5nVHlwZSB7CisgIGtGaXhlZFNpemVV
bnNpZ25lZERlbHRhc05vRWFybHlXcmFwTm9PcHQgPSAwLAorICBrRml4ZWRTaXplU2lnbmVkRGVs
dGFzRWFybHlXcmFwQW5kT3B0U3VwcG9ydGVkID0gMSwKKyAga1Jlc2VydmVkMSA9IDIsCisgIGtS
ZXNlcnZlZDIgPSAzLAorICBrTnVtYmVyT2ZFbmNvZGluZ1R5cGVzICAvLyBLZWVwIGxhc3QKK307
CisKKy8vIFRoZSB3aWR0aCBvZiBlYWNoIGZpZWxkIGluIHRoZSBlbmNvZGluZyBoZWFkZXIuIE5v
dGUgdGhhdCB0aGlzIGlzIHRoZQorLy8gd2lkdGggaW4gY2FzZSB0aGUgZmllbGQgZXhpc3RzOyBu
b3QgYWxsIGZpZWxkcyBvY2N1ciBpbiBhbGwgZW5jb2RpbmcgdHlwZXMuCitjb25zdGV4cHIgc2l6
ZV90IGtCaXRzSW5IZWFkZXJGb3JFbmNvZGluZ1R5cGUgPSAyOworY29uc3RleHByIHNpemVfdCBr
Qml0c0luSGVhZGVyRm9yRGVsdGFXaWR0aEJpdHMgPSA2OworY29uc3RleHByIHNpemVfdCBrQml0
c0luSGVhZGVyRm9yU2lnbmVkRGVsdGFzID0gMTsKK2NvbnN0ZXhwciBzaXplX3Qga0JpdHNJbkhl
YWRlckZvclZhbHVlc09wdGlvbmFsID0gMTsKK2NvbnN0ZXhwciBzaXplX3Qga0JpdHNJbkhlYWRl
ckZvclZhbHVlV2lkdGhCaXRzID0gNjsKKworc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXpl
X3Q+KEVuY29kaW5nVHlwZTo6a051bWJlck9mRW5jb2RpbmdUeXBlcykgPD0KKyAgICAgICAgICAg
ICAgICAgIDEgPDwga0JpdHNJbkhlYWRlckZvckVuY29kaW5nVHlwZSwKKyAgICAgICAgICAgICAg
Ik5vdCBhbGwgZW5jb2RpbmcgdHlwZXMgZml0LiIpOworCisvLyBEZWZhdWx0IHZhbHVlcyBmb3Ig
d2hlbiB0aGUgZW5jb2RpbmcgaGVhZGVyIGRvZXMgbm90IHNwZWNpZnkgZXhwbGljaXRseS4KK2Nv
bnN0ZXhwciBib29sIGtEZWZhdWx0U2lnbmVkRGVsdGFzID0gZmFsc2U7Citjb25zdGV4cHIgYm9v
bCBrRGVmYXVsdFZhbHVlc09wdGlvbmFsID0gZmFsc2U7Citjb25zdGV4cHIgdWludDY0X3Qga0Rl
ZmF1bHRWYWx1ZVdpZHRoQml0cyA9IDY0OworCisvLyBXcmFwIEJpdEJ1ZmZlcldyaXRlciBhbmQg
ZXh0ZW5kIGl0cyBmdW5jdGlvbmFsaXR5IGJ5ICgxKSBrZWVwaW5nIHRyYWNrIG9mCisvLyB0aGUg
bnVtYmVyIG9mIGJpdHMgd3JpdHRlbiBhbmQgKDIpIG93bmluZyBpdHMgYnVmZmVyLgorY2xhc3Mg
Qml0V3JpdGVyIGZpbmFsIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEJpdFdyaXRlcihzaXplX3Qg
Ynl0ZV9jb3VudCkKKyAgICAgIDogYnVmZmVyXyhieXRlX2NvdW50LCAnXDAnKSwKKyAgICAgICAg
Yml0X3dyaXRlcl8ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJmJ1ZmZlcl9bMF0pLCBidWZm
ZXJfLnNpemUoKSksCisgICAgICAgIHdyaXR0ZW5fYml0c18oMCksCisgICAgICAgIHZhbGlkXyh0
cnVlKSB7CisgICAgUlRDX0RDSEVDS19HVChieXRlX2NvdW50LCAwKTsKKyAgfQorCisgIHZvaWQg
V3JpdGVCaXRzKHVpbnQ2NF90IHZhbCwgc2l6ZV90IGJpdF9jb3VudCkgeworICAgIFJUQ19EQ0hF
Q0sodmFsaWRfKTsKKyAgICBjb25zdCBib29sIHN1Y2Nlc3MgPSBiaXRfd3JpdGVyXy5Xcml0ZUJp
dHModmFsLCBiaXRfY291bnQpOworICAgIFJUQ19EQ0hFQ0soc3VjY2Vzcyk7CisgICAgd3JpdHRl
bl9iaXRzXyArPSBiaXRfY291bnQ7CisgIH0KKworICB2b2lkIFdyaXRlQml0cyhjb25zdCBzdGQ6
OnN0cmluZyYgaW5wdXQpIHsKKyAgICBSVENfRENIRUNLKHZhbGlkXyk7CisgICAgZm9yIChzdGQ6
OnN0cmluZzo6dmFsdWVfdHlwZSBjIDogaW5wdXQpIHsKKyAgICAgIFdyaXRlQml0cyhjLCA4ICog
c2l6ZW9mKHN0ZDo6c3RyaW5nOjp2YWx1ZV90eXBlKSk7CisgICAgfQorICB9CisKKyAgLy8gUmV0
dXJucyBldmVyeXRoaW5nIHRoYXQgd2FzIHdyaXR0ZW4gc28gZmFyLgorICAvLyBOb3RoaW5nIG1v
cmUgbWF5IGJlIHdyaXR0ZW4gYWZ0ZXIgdGhpcyBpcyBjYWxsZWQuCisgIHN0ZDo6c3RyaW5nIEdl
dFN0cmluZygpIHsKKyAgICBSVENfRENIRUNLKHZhbGlkXyk7CisgICAgdmFsaWRfID0gZmFsc2U7
CisKKyAgICBidWZmZXJfLnJlc2l6ZShCaXRzVG9CeXRlcyh3cml0dGVuX2JpdHNfKSk7CisgICAg
d3JpdHRlbl9iaXRzXyA9IDA7CisKKyAgICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgICAgc3RkOjpz
d2FwKGJ1ZmZlcl8sIHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgcHJpdmF0
ZToKKyAgc3RkOjpzdHJpbmcgYnVmZmVyXzsKKyAgcnRjOjpCaXRCdWZmZXJXcml0ZXIgYml0X3dy
aXRlcl87CisgIC8vIE5vdGU6IENvdW50aW5nIGJpdHMgaW5zdGVhZCBvZiBieXRlcyB3cmFwcyBh
cm91bmQgZWFybGllciB0aGFuIGl0IGhhcyB0bywKKyAgLy8gd2hpY2ggbWVhbnMgdGhlIG1heGlt
dW0gbGVuZ3RoIGlzIGxvd2VyIHRoYW4gaXQgY291bGQgYmUuIFdlIGRvbid0IGV4cGVjdAorICAv
LyB0byBnbyBhbnl3aGVyZSBuZWFyIHRoZSBsaW1pdCwgdGhvdWdoLCBzbyB0aGlzIGlzIGdvb2Qg
ZW5vdWdoLgorICBzaXplX3Qgd3JpdHRlbl9iaXRzXzsKKyAgYm9vbCB2YWxpZF87CisKKyAgUlRD
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihCaXRXcml0ZXIpOworfTsKKworLy8gUGFyYW1ldGVy
cyBmb3IgZml4ZWQtc2l6ZSBkZWx0YS1lbmNvZGluZy9kZWNvZGluZy4KKy8vIFRoZXNlIGFyZSB0
YWlsb3JlZCBmb3IgdGhlIHNlcXVlbmNlIHdoaWNoIHdpbGwgYmUgZW5jb2RlZCAoZS5nLiB3aWR0
aHMpLgorY2xhc3MgRml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnMgZmluYWwgeworIHB1Ymxp
YzoKKyAgc3RhdGljIGJvb2wgVmFsaWRQYXJhbWV0ZXJzKHVpbnQ2NF90IGRlbHRhX3dpZHRoX2Jp
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNpZ25lZF9kZWx0YXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHZhbHVlc19vcHRpb25hbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbHVlX3dpZHRoX2JpdHMpIHsKKyAg
ICByZXR1cm4gKDEgPD0gZGVsdGFfd2lkdGhfYml0cyAmJiBkZWx0YV93aWR0aF9iaXRzIDw9IDY0
ICYmCisgICAgICAgICAgICAxIDw9IHZhbHVlX3dpZHRoX2JpdHMgJiYgdmFsdWVfd2lkdGhfYml0
cyA8PSA2NCAmJgorICAgICAgICAgICAgZGVsdGFfd2lkdGhfYml0cyA8PSB2YWx1ZV93aWR0aF9i
aXRzKTsKKyAgfQorCisgIEZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJhbWV0ZXJzKHVpbnQ2NF90IGRl
bHRhX3dpZHRoX2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2ln
bmVkX2RlbHRhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2YWx1ZXNf
b3B0aW9uYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbHVl
X3dpZHRoX2JpdHMpCisgICAgICA6IGRlbHRhX3dpZHRoX2JpdHNfKGRlbHRhX3dpZHRoX2JpdHMp
LAorICAgICAgICBzaWduZWRfZGVsdGFzXyhzaWduZWRfZGVsdGFzKSwKKyAgICAgICAgdmFsdWVz
X29wdGlvbmFsXyh2YWx1ZXNfb3B0aW9uYWwpLAorICAgICAgICB2YWx1ZV93aWR0aF9iaXRzXyh2
YWx1ZV93aWR0aF9iaXRzKSwKKyAgICAgICAgZGVsdGFfbWFza18oTWF4VW5zaWduZWRWYWx1ZU9m
Qml0V2lkdGgoZGVsdGFfd2lkdGhfYml0c18pKSwKKyAgICAgICAgdmFsdWVfbWFza18oTWF4VW5z
aWduZWRWYWx1ZU9mQml0V2lkdGgodmFsdWVfd2lkdGhfYml0c18pKSB7CisgICAgUlRDX0RDSEVD
SyhWYWxpZFBhcmFtZXRlcnMoZGVsdGFfd2lkdGhfYml0cywgc2lnbmVkX2RlbHRhcywgdmFsdWVz
X29wdGlvbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3dpZHRoX2Jp
dHMpKTsKKyAgfQorCisgIC8vIE51bWJlciBvZiBiaXRzIG5lY2Vzc2FyeSB0byBob2xkIHRoZSB3
aWRlc3QoKikgb2YgdGhlIGRlbHRhcyBiZXR3ZWVuIHRoZQorICAvLyB2YWx1ZXMgaW4gdGhlIHNl
cXVlbmNlLgorICAvLyAoKikgLSBXaWRlc3QgbWlnaHQgbm90IGJlIHRoZSBsYXJnZXN0LCBpZiBz
aWduZWQgZGVsdGFzIGFyZSB1c2VkLgorICB1aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzKCkgY29u
c3QgeyByZXR1cm4gZGVsdGFfd2lkdGhfYml0c187IH0KKworICAvLyBXaGV0aGVyIGRlbHRhcyBh
cmUgc2lnbmVkLgorICBib29sIHNpZ25lZF9kZWx0YXMoKSBjb25zdCB7IHJldHVybiBzaWduZWRf
ZGVsdGFzXzsgfQorCisgIC8vIFdoZXRoZXIgdGhlIHZhbHVlcyBvZiB0aGUgc2VxdWVuY2UgYXJl
IG9wdGlvbmFsLiBUaGF0IGlzLCBpdCBtYXkgYmUKKyAgLy8gdGhhdCBzb21lIG9mIHRoZW0gZG8g
bm90IGhhdmUgYSB2YWx1ZSAobm90IGV2ZW4gYSBzZW50aW5lbCB2YWx1ZSBpbmRpY2F0aW5nCisg
IC8vIGludmFsaWRpdHkpLgorICBib29sIHZhbHVlc19vcHRpb25hbCgpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlc19vcHRpb25hbF87IH0KKworICAvLyBOdW1iZXIgb2YgYml0cyBuZWNlc3NhcnkgdG8g
aG9sZCB0aGUgbGFyZ2VzdCB2YWx1ZSBpbiB0aGUgc2VxdWVuY2UuCisgIHVpbnQ2NF90IHZhbHVl
X3dpZHRoX2JpdHMoKSBjb25zdCB7IHJldHVybiB2YWx1ZV93aWR0aF9iaXRzXzsgfQorCisgIC8v
IE1hc2tzIHdoZXJlIG9ubHkgdGhlIGJpdHMgcmVsZXZhbnQgdG8gdGhlIGRlbHRhcy92YWx1ZXMg
YXJlIHR1cm5lZCBvbi4KKyAgdWludDY0X3QgZGVsdGFfbWFzaygpIGNvbnN0IHsgcmV0dXJuIGRl
bHRhX21hc2tfOyB9CisgIHVpbnQ2NF90IHZhbHVlX21hc2soKSBjb25zdCB7IHJldHVybiB2YWx1
ZV9tYXNrXzsgfQorCisgIHZvaWQgU2V0U2lnbmVkRGVsdGFzKGJvb2wgc2lnbmVkX2RlbHRhcykg
eyBzaWduZWRfZGVsdGFzXyA9IHNpZ25lZF9kZWx0YXM7IH0KKyAgdm9pZCBTZXREZWx0YVdpZHRo
Qml0cyh1aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzKSB7CisgICAgZGVsdGFfd2lkdGhfYml0c18g
PSBkZWx0YV93aWR0aF9iaXRzOworICAgIGRlbHRhX21hc2tfID0gTWF4VW5zaWduZWRWYWx1ZU9m
Qml0V2lkdGgoZGVsdGFfd2lkdGhfYml0cyk7CisgIH0KKworIHByaXZhdGU6CisgIHVpbnQ2NF90
IGRlbHRhX3dpZHRoX2JpdHNfOyAgLy8gTm9ybWFsbHkgY29uc3QsIGJ1dCBtdXRhYmxlIGluIHRl
c3RzLgorICBib29sIHNpZ25lZF9kZWx0YXNfOyAgICAgICAgIC8vIE5vcm1hbGx5IGNvbnN0LCBi
dXQgbXV0YWJsZSBpbiB0ZXN0cy4KKyAgY29uc3QgYm9vbCB2YWx1ZXNfb3B0aW9uYWxfOworICBj
b25zdCB1aW50NjRfdCB2YWx1ZV93aWR0aF9iaXRzXzsKKworICB1aW50NjRfdCBkZWx0YV9tYXNr
XzsgIC8vIE5vcm1hbGx5IGNvbnN0LCBidXQgbXV0YWJsZSBpbiB0ZXN0cy4KKyAgY29uc3QgdWlu
dDY0X3QgdmFsdWVfbWFza187Cit9OworCisvLyBQZXJmb3JtcyBkZWx0YS1lbmNvZGluZyBvZiBh
IHNpbmdsZSAobm9uLWVtcHR5KSBzZXF1ZW5jZSBvZiB2YWx1ZXMsIHVzaW5nCisvLyBhbiBlbmNv
ZGluZyB3aGVyZSBhbGwgZGVsdGFzIGFyZSBlbmNvZGVkIHVzaW5nIHRoZSBzYW1lIG51bWJlciBv
ZiBiaXRzLgorLy8gKFdpdGggdGhlIGV4Y2VwdGlvbiBvZiBvcHRpb25hbCBlbGVtZW50czsgdGhv
c2UgYXJlIGVuY29kZWQgYXMgYSBiaXQgdmVjdG9yCisvLyB3aXRoIG9uZSBiaXQgcGVyIGVsZW1l
bnQsIHBsdXMgYSBmaXhlZCBudW1iZXIgb2YgYml0cyBmb3IgZXZlcnkgZWxlbWVudCB0aGF0Cisv
LyBoYXMgYSB2YWx1ZS4pCitjbGFzcyBGaXhlZExlbmd0aERlbHRhRW5jb2RlciBmaW5hbCB7Cisg
cHVibGljOgorICAvLyBTZWUgd2VicnRjOjpFbmNvZGVEZWx0YXMoKSBmb3IgZ2VuZXJhbCBkZXRh
aWxzLgorICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybiBhIGJpdCBwYXR0ZXJuIHRoYXQgd291bGQg
YWxsb3cgdGhlIGRlY29kZXIgdG8KKyAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgd2FzIHByb2R1
Y2VkIGJ5IEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyLCBhbmQgY2FuCisgIC8vIHRoZXJlZm9yZSBi
ZSBkZWNvZGVkIGJ5IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyLCBvciB3aGV0aGVyIGl0IHdhcyBw
cm9kdWNlZAorICAvLyBieSBhIGRpZmZlcmVudCBlbmNvZGVyLgorICBzdGF0aWMgc3RkOjpzdHJp
bmcgRW5jb2RlRGVsdGFzKAorICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+JiB2YWx1ZXMp
OworCisgcHJpdmF0ZToKKyAgLy8gQ2FsY3VsYXRlIG1pbi9tYXggdmFsdWVzIG9mIHVuc2lnbmVk
L3NpZ25lZCBkZWx0YXMsIGdpdmVuIHRoZSBiaXQgd2lkdGgKKyAgLy8gb2YgYWxsIHRoZSB2YWx1
ZXMgaW4gdGhlIHNlcmllcy4KKyAgc3RhdGljIHZvaWQgQ2FsY3VsYXRlTWluQW5kTWF4RGVsdGFz
KAorICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+JiB2YWx1ZXMsCisgICAgICB1aW50NjRf
dCBiaXRfd2lkdGgsCisgICAgICB1aW50NjRfdCogbWF4X3Vuc2lnbmVkX2RlbHRhLAorICAgICAg
dWludDY0X3QqIG1heF9wb3Nfc2lnbmVkX2RlbHRhLAorICAgICAgdWludDY0X3QqIG1pbl9uZWdf
c2lnbmVkX2RlbHRhKTsKKworICAvLyBObyBlZmZlY3Qgb3V0c2lkZSBvZiB1bml0IHRlc3RzLgor
ICAvLyBJbiB1bml0IHRlc3RzLCBtYXkgbGVhZCB0byBmb3JjaW5nIHNpZ25lZC91bnNpZ25lZCBk
ZWx0YXMsIGV0Yy4KKyAgc3RhdGljIHZvaWQgQ29uc2lkZXJUZXN0T3ZlcnJpZGVzKEZpeGVkTGVu
Z3RoRW5jb2RpbmdQYXJhbWV0ZXJzKiBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzX3NpZ25lZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRlbHRhX3dpZHRoX2JpdHNfdW5zaWdu
ZWQpOworCisgIC8vIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyIG9iamVjdHMgYXJlIHRvIGJlIGNy
ZWF0ZWQgYnkgRW5jb2RlRGVsdGFzKCkgYW5kCisgIC8vIHJlbGVhc2VkIGJ5IGl0IGJlZm9yZSBp
dCByZXR1cm5zLiBUaGV5J3JlIG1vc3RseSBhIGNvbnZlbmllbnQgd2F5IHRvCisgIC8vIGF2b2lk
IGhhdmluZyB0byBwYXNzIGEgbG90IG9mIHN0YXRlIGJldHdlZW4gZGlmZmVyZW50IGZ1bmN0aW9u
cy4KKyAgLy8gVGhlcmVmb3JlLCBpdCB3YXMgZGVlbWVkIGFjY2VwdGFibGUgdG8gbGV0IHRoZW0g
aGF2ZSBhIHJlZmVyZW5jZSB0bworICAvLyB8dmFsdWVzfCwgd2hvc2UgbGlmZXRpbWUgbXVzdCBl
eGNlZWQgdGhlIGxpZmV0aW1lIG9mIHx0aGlzfC4KKyAgRml4ZWRMZW5ndGhEZWx0YUVuY29kZXIo
Y29uc3QgRml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnMmIHBhcmFtcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
Pj4mIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGV4aXN0ZW50X3Zh
bHVlc19jb3VudCk7CisKKyAgLy8gUGVyZm9ybSBkZWx0YS1lbmNvZGluZyB1c2luZyB0aGUgcGFy
YW1ldGVycyBnaXZlbiB0byB0aGUgY3RvciBvbiB0aGUKKyAgLy8gc2VxdWVuY2Ugb2YgdmFsdWVz
IGdpdmVuIHRvIHRoZSBjdG9yLgorICBzdGQ6OnN0cmluZyBFbmNvZGUoKTsKKworICAvLyBFeGFj
dCBsZW5ndGhzLgorICBzaXplX3QgT3V0cHV0TGVuZ3RoQnl0ZXMoc2l6ZV90IGV4aXN0ZW50X3Zh
bHVlc19jb3VudCkgY29uc3Q7CisgIHNpemVfdCBIZWFkZXJMZW5ndGhCaXRzKCkgY29uc3Q7Cisg
IHNpemVfdCBFbmNvZGVkRGVsdGFzTGVuZ3RoQml0cyhzaXplX3QgZXhpc3RlbnRfdmFsdWVzX2Nv
dW50KSBjb25zdDsKKworICAvLyBFbmNvZGUgdGhlIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgaW50
byB0aGUgc3RyZWFtLgorICB2b2lkIEVuY29kZUhlYWRlcigpOworCisgIC8vIEVuY29kZSBhIGdp
dmVuIGRlbHRhIGludG8gdGhlIHN0cmVhbS4KKyAgdm9pZCBFbmNvZGVEZWx0YSh1aW50NjRfdCBw
cmV2aW91cywgdWludDY0X3QgY3VycmVudCk7CisgIHZvaWQgRW5jb2RlVW5zaWduZWREZWx0YSh1
aW50NjRfdCBwcmV2aW91cywgdWludDY0X3QgY3VycmVudCk7CisgIHZvaWQgRW5jb2RlU2lnbmVk
RGVsdGEodWludDY0X3QgcHJldmlvdXMsIHVpbnQ2NF90IGN1cnJlbnQpOworCisgIC8vIFRoZSBw
YXJhbWV0ZXJzIGFjY29yZGluZyB0byB3aGljaCBlbmNvZGluZyB3aWxsIGJlIGRvbmUgKHdpZHRo
IG9mCisgIC8vIGZpZWxkcywgd2hldGhlciBzaWduZWQgZGVsdGFzIHNob3VsZCBiZSB1c2VkLCBl
dGMuKQorICBjb25zdCBGaXhlZExlbmd0aEVuY29kaW5nUGFyYW1ldGVycyBwYXJhbXNfOworCisg
IC8vIFRoZSBlbmNvZGluZyBzY2hlbWUgYXNzdW1lcyB0aGF0IGF0IGxlYXN0IG9uZSB2YWx1ZSBp
cyB0cmFuc21pdHRlZCBPT0IsCisgIC8vIHNvIHRoYXQgdGhlIGZpcnN0IHZhbHVlIGNhbiBiZSBl
bmNvZGVkIGFzIGEgZGVsdGEgZnJvbSB0aGF0IE9PQiB2YWx1ZSwKKyAgLy8gd2hpY2ggaXMgfGJh
c2VffC4KKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2VfOworCisgIC8vIFRo
ZSB2YWx1ZXMgdG8gYmUgZW5jb2RlZC4KKyAgLy8gTm90ZTogVGhpcyBpcyBhIG5vbi1vd25pbmcg
cmVmZXJlbmNlLiBTZWUgY29tbWVudCBhYm92ZSBjdG9yIGZvciBkZXRhaWxzLgorICBjb25zdCBz
dGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+JiB2YWx1ZXNfOworCisgIC8vIEJ1
ZmZlciBpbnRvIHdoaWNoIGVuY29kZWQgdmFsdWVzIHdpbGwgYmUgd3JpdHRlbi4KKyAgLy8gVGhp
cyBpcyBjcmVhdGVkIGR5bm1pY2FsbHkgYXMgYSB3YXkgdG8gZW5mb3JjZSB0aGF0IHRoZSByZXN0
IG9mIHRoZQorICAvLyBjdG9yIGhhcyBmaW5pc2hlZCBydW5uaW5nIHdoZW4gdGhpcyBpcyBjb25z
dHJ1Y3RlZCwgc28gdGhhdCB0aGUgbG93ZXIKKyAgLy8gYm91bmQgb24gdGhlIGJ1ZmZlciBzaXpl
IHdvdWxkIGJlIGd1YXJhbnRlZWQgY29ycmVjdC4KKyAgc3RkOjp1bmlxdWVfcHRyPEJpdFdyaXRl
cj4gd3JpdGVyXzsKKworICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZpeGVkTGVuZ3Ro
RGVsdGFFbmNvZGVyKTsKK307CisKKy8vIFRPRE8oZWxhZGFsb24pOiBSZWR1Y2UgdGhlIG51bWJl
ciBvZiBwYXNzZXMuCitzdGQ6OnN0cmluZyBGaXhlZExlbmd0aERlbHRhRW5jb2Rlcjo6RW5jb2Rl
RGVsdGFzKAorICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4mIHZhbHVlcykgeworICBSVENfRENI
RUNLKCF2YWx1ZXMuZW1wdHkoKSk7CisKKyAgLy8gQXMgYSBzcGVjaWFsIGNhc2UsIGlmIGFsbCBv
ZiB0aGUgZWxlbWVudHMgYXJlIGlkZW50aWNhbCB0byB0aGUgYmFzZSwKKyAgLy8gKGluY2x1ZGlu
ZywgZm9yIG9wdGlvbmFsIGZpZWxkcywgYWJvdXQgdGhlaXIgZXhpc3RlbmNlL25vbi1leGlzdGVu
Y2UpLAorICAvLyB0aGUgZW1wdHkgc3RyaW5nIGlzIHVzZWQgdG8gc2lnbmFsIHRoYXQuCisgIGlm
IChzdGQ6OmFsbF9vZigKKyAgICAgICAgICB2YWx1ZXMuY2JlZ2luKCksIHZhbHVlcy5jZW5kKCks
CisgICAgICAgICAgW2Jhc2VdKGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiB2YWwpIHsgcmV0dXJu
IHZhbCA9PSBiYXNlOyB9KSkgeworICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworICB9CisKKyAg
Ym9vbCBub25fZGVjcmVhc2luZyA9IHRydWU7CisgIHVpbnQ2NF90IG1heF92YWx1ZV9pbmNsdWRp
bmdfYmFzZSA9IGJhc2UudmFsdWVfb3IoMHUpOworICBzaXplX3QgZXhpc3RlbnRfdmFsdWVzX2Nv
dW50ID0gMDsKKyAgeworICAgIHVpbnQ2NF90IHByZXZpb3VzID0gYmFzZS52YWx1ZV9vcigwdSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
IGlmICghdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAg
fQorICAgICAgKytleGlzdGVudF92YWx1ZXNfY291bnQ7CisgICAgICBub25fZGVjcmVhc2luZyAm
PSAocHJldmlvdXMgPD0gdmFsdWVzW2ldLnZhbHVlKCkpOworICAgICAgbWF4X3ZhbHVlX2luY2x1
ZGluZ19iYXNlID0KKyAgICAgICAgICBzdGQ6Om1heChtYXhfdmFsdWVfaW5jbHVkaW5nX2Jhc2Us
IHZhbHVlc1tpXS52YWx1ZSgpKTsKKyAgICAgIHByZXZpb3VzID0gdmFsdWVzW2ldLnZhbHVlKCk7
CisgICAgfQorICB9CisKKyAgLy8gSWYgdGhlIHNlcXVlbmNlIGlzIG5vbi1kZWNyZWFzaW5nLCBp
dCBtYXkgYmUgYXNzdW1lZCB0byBoYXZlIHdpZHRoID0gNjQ7CisgIC8vIHRoZXJlJ3Mgbm8gcmVh
c29uIHRvIGVuY29kZSB0aGUgYWN0dWFsIG1heCB3aWR0aCBpbiB0aGUgZW5jb2RpbmcgaGVhZGVy
LgorICBjb25zdCB1aW50NjRfdCB2YWx1ZV93aWR0aF9iaXRzID0KKyAgICAgIG5vbl9kZWNyZWFz
aW5nID8gNjQgOiBVbnNpZ25lZEJpdFdpZHRoKG1heF92YWx1ZV9pbmNsdWRpbmdfYmFzZSk7CisK
KyAgdWludDY0X3QgbWF4X3Vuc2lnbmVkX2RlbHRhOworICB1aW50NjRfdCBtYXhfcG9zX3NpZ25l
ZF9kZWx0YTsKKyAgdWludDY0X3QgbWluX25lZ19zaWduZWRfZGVsdGE7CisgIENhbGN1bGF0ZU1p
bkFuZE1heERlbHRhcyhiYXNlLCB2YWx1ZXMsIHZhbHVlX3dpZHRoX2JpdHMsICZtYXhfdW5zaWdu
ZWRfZGVsdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4X3Bvc19zaWduZWRfZGVs
dGEsICZtaW5fbmVnX3NpZ25lZF9kZWx0YSk7CisKKyAgY29uc3QgdWludDY0X3QgZGVsdGFfd2lk
dGhfYml0c191bnNpZ25lZCA9CisgICAgICBVbnNpZ25lZEJpdFdpZHRoKG1heF91bnNpZ25lZF9k
ZWx0YSk7CisgIGNvbnN0IHVpbnQ2NF90IGRlbHRhX3dpZHRoX2JpdHNfc2lnbmVkID0KKyAgICAg
IFNpZ25lZEJpdFdpZHRoKG1heF9wb3Nfc2lnbmVkX2RlbHRhLCBtaW5fbmVnX3NpZ25lZF9kZWx0
YSk7CisKKyAgLy8gTm90ZTogUHJlZmVyZW5jZSBmb3IgdW5zaWduZWQgaWYgdGhlIHR3byBoYXZl
IHRoZSBzYW1lIHdpZHRoIChlZmZpY2llbmN5KS4KKyAgY29uc3QgYm9vbCBzaWduZWRfZGVsdGFz
ID0KKyAgICAgIGRlbHRhX3dpZHRoX2JpdHNfc2lnbmVkIDwgZGVsdGFfd2lkdGhfYml0c191bnNp
Z25lZDsKKyAgY29uc3QgdWludDY0X3QgZGVsdGFfd2lkdGhfYml0cyA9CisgICAgICBzaWduZWRf
ZGVsdGFzID8gZGVsdGFfd2lkdGhfYml0c19zaWduZWQgOiBkZWx0YV93aWR0aF9iaXRzX3Vuc2ln
bmVkOworCisgIGNvbnN0IGJvb2wgdmFsdWVzX29wdGlvbmFsID0KKyAgICAgICFiYXNlLmhhc192
YWx1ZSgpIHx8IChleGlzdGVudF92YWx1ZXNfY291bnQgPCB2YWx1ZXMuc2l6ZSgpKTsKKworICBG
aXhlZExlbmd0aEVuY29kaW5nUGFyYW1ldGVycyBwYXJhbXMoZGVsdGFfd2lkdGhfYml0cywgc2ln
bmVkX2RlbHRhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
c19vcHRpb25hbCwgdmFsdWVfd2lkdGhfYml0cyk7CisKKyAgLy8gTm8gZWZmZWN0IGluIHByb2R1
Y3Rpb24uCisgIENvbnNpZGVyVGVzdE92ZXJyaWRlcygmcGFyYW1zLCBkZWx0YV93aWR0aF9iaXRz
X3NpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhX3dpZHRoX2JpdHNfdW5zaWdu
ZWQpOworCisgIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyIGVuY29kZXIocGFyYW1zLCBiYXNlLCB2
YWx1ZXMsIGV4aXN0ZW50X3ZhbHVlc19jb3VudCk7CisgIHJldHVybiBlbmNvZGVyLkVuY29kZSgp
OworfQorCit2b2lkIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpDYWxjdWxhdGVNaW5BbmRNYXhE
ZWx0YXMoCisgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiYgdmFsdWVzLAorICAgIHVpbnQ2NF90
IGJpdF93aWR0aCwKKyAgICB1aW50NjRfdCogbWF4X3Vuc2lnbmVkX2RlbHRhX291dCwKKyAgICB1
aW50NjRfdCogbWF4X3Bvc19zaWduZWRfZGVsdGFfb3V0LAorICAgIHVpbnQ2NF90KiBtaW5fbmVn
X3NpZ25lZF9kZWx0YV9vdXQpIHsKKyAgUlRDX0RDSEVDSyghdmFsdWVzLmVtcHR5KCkpOworICBS
VENfRENIRUNLKG1heF91bnNpZ25lZF9kZWx0YV9vdXQpOworICBSVENfRENIRUNLKG1heF9wb3Nf
c2lnbmVkX2RlbHRhX291dCk7CisgIFJUQ19EQ0hFQ0sobWluX25lZ19zaWduZWRfZGVsdGFfb3V0
KTsKKworICBjb25zdCB1aW50NjRfdCBiaXRfbWFzayA9IE1heFVuc2lnbmVkVmFsdWVPZkJpdFdp
ZHRoKGJpdF93aWR0aCk7CisKKyAgdWludDY0X3QgbWF4X3Vuc2lnbmVkX2RlbHRhID0gMDsKKyAg
dWludDY0X3QgbWF4X3Bvc19zaWduZWRfZGVsdGEgPSAwOworICB1aW50NjRfdCBtaW5fbmVnX3Np
Z25lZF9kZWx0YSA9IDA7CisKKyAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHByZXYgPSBiYXNl
OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGlm
ICghdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAg
ICBpZiAoIXByZXYuaGFzX3ZhbHVlKCkpIHsKKyAgICAgIC8vIElmIHRoZSBiYXNlIGlzIG5vbi1l
eGlzdGVudCwgdGhlIGZpcnN0IGV4aXN0ZW50IHZhbHVlIGlzIGVuY29kZWQgYXMKKyAgICAgIC8v
IGEgdmFyaW50LCByYXRoZXIgdGhhbiBhcyBhIGRlbHRhLgorICAgICAgUlRDX0RDSEVDSyghYmFz
ZS5oYXNfdmFsdWUoKSk7CisgICAgICBwcmV2ID0gdmFsdWVzW2ldOworICAgICAgY29udGludWU7
CisgICAgfQorCisgICAgY29uc3QgdWludDY0X3QgY3VycmVudCA9IHZhbHVlc1tpXS52YWx1ZSgp
OworCisgICAgY29uc3QgdWludDY0X3QgZm9yd2FyZF9kZWx0YSA9IFVuc2lnbmVkRGVsdGEoKnBy
ZXYsIGN1cnJlbnQsIGJpdF9tYXNrKTsKKyAgICBjb25zdCB1aW50NjRfdCBiYWNrd2FyZF9kZWx0
YSA9IFVuc2lnbmVkRGVsdGEoY3VycmVudCwgKnByZXYsIGJpdF9tYXNrKTsKKworICAgIG1heF91
bnNpZ25lZF9kZWx0YSA9IHN0ZDo6bWF4KG1heF91bnNpZ25lZF9kZWx0YSwgZm9yd2FyZF9kZWx0
YSk7CisKKyAgICBpZiAoZm9yd2FyZF9kZWx0YSA8IGJhY2t3YXJkX2RlbHRhKSB7CisgICAgICBt
YXhfcG9zX3NpZ25lZF9kZWx0YSA9IHN0ZDo6bWF4KG1heF9wb3Nfc2lnbmVkX2RlbHRhLCBmb3J3
YXJkX2RlbHRhKTsKKyAgICB9IGVsc2UgeworICAgICAgbWluX25lZ19zaWduZWRfZGVsdGEgPSBz
dGQ6Om1heChtaW5fbmVnX3NpZ25lZF9kZWx0YSwgYmFja3dhcmRfZGVsdGEpOworICAgIH0KKwor
ICAgIHByZXYgPSBjdXJyZW50OworICB9CisKKyAgKm1heF91bnNpZ25lZF9kZWx0YV9vdXQgPSBt
YXhfdW5zaWduZWRfZGVsdGE7CisgICptYXhfcG9zX3NpZ25lZF9kZWx0YV9vdXQgPSBtYXhfcG9z
X3NpZ25lZF9kZWx0YTsKKyAgKm1pbl9uZWdfc2lnbmVkX2RlbHRhX291dCA9IG1pbl9uZWdfc2ln
bmVkX2RlbHRhOworfQorCit2b2lkIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpDb25zaWRlclRl
c3RPdmVycmlkZXMoCisgICAgRml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnMqIHBhcmFtcywK
KyAgICB1aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzX3NpZ25lZCwKKyAgICB1aW50NjRfdCBkZWx0
YV93aWR0aF9iaXRzX3Vuc2lnbmVkKSB7CisgIGlmIChnX2ZvcmNlX3Vuc2lnbmVkX2Zvcl90ZXN0
aW5nKSB7CisgICAgcGFyYW1zLT5TZXREZWx0YVdpZHRoQml0cyhkZWx0YV93aWR0aF9iaXRzX3Vu
c2lnbmVkKTsKKyAgICBwYXJhbXMtPlNldFNpZ25lZERlbHRhcyhmYWxzZSk7CisgIH0gZWxzZSBp
ZiAoZ19mb3JjZV9zaWduZWRfZm9yX3Rlc3RpbmcpIHsKKyAgICBwYXJhbXMtPlNldERlbHRhV2lk
dGhCaXRzKGRlbHRhX3dpZHRoX2JpdHNfc2lnbmVkKTsKKyAgICBwYXJhbXMtPlNldFNpZ25lZERl
bHRhcyh0cnVlKTsKKyAgfSBlbHNlIHsKKyAgICAvLyBVbmNoYW5nZWQuCisgIH0KK30KKworRml4
ZWRMZW5ndGhEZWx0YUVuY29kZXI6OkZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyKAorICAgIGNvbnN0
IEZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgYWJzbDo6b3B0aW9u
YWw8dWludDY0X3Q+IGJhc2UsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+PiYgdmFsdWVzLAorICAgIHNpemVfdCBleGlzdGVudF92YWx1ZXNfY291bnQpCisg
ICAgOiBwYXJhbXNfKHBhcmFtcyksIGJhc2VfKGJhc2UpLCB2YWx1ZXNfKHZhbHVlcykgeworICBS
VENfRENIRUNLKCF2YWx1ZXNfLmVtcHR5KCkpOworICB3cml0ZXJfID0KKyAgICAgIGFic2w6Om1h
a2VfdW5pcXVlPEJpdFdyaXRlcj4oT3V0cHV0TGVuZ3RoQnl0ZXMoZXhpc3RlbnRfdmFsdWVzX2Nv
dW50KSk7Cit9CisKK3N0ZDo6c3RyaW5nIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpFbmNvZGUo
KSB7CisgIEVuY29kZUhlYWRlcigpOworCisgIGlmIChwYXJhbXNfLnZhbHVlc19vcHRpb25hbCgp
KSB7CisgICAgLy8gRW5jb2RlIHdoaWNoIHZhbHVlcyBleGlzdCBhbmQgd2hpY2ggZG9uJ3QuCisg
ICAgZm9yIChhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gdmFsdWUgOiB2YWx1ZXNfKSB7CisgICAg
ICB3cml0ZXJfLT5Xcml0ZUJpdHModmFsdWUuaGFzX3ZhbHVlKCkgPyAxdSA6IDB1LCAxKTsKKyAg
ICB9CisgIH0KKworICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gcHJldmlvdXMgPSBiYXNlXzsK
KyAgZm9yIChhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gdmFsdWUgOiB2YWx1ZXNfKSB7CisgICAg
aWYgKCF2YWx1ZS5oYXNfdmFsdWUoKSkgeworICAgICAgUlRDX0RDSEVDSyhwYXJhbXNfLnZhbHVl
c19vcHRpb25hbCgpKTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGlmICghcHJldmlv
dXMuaGFzX3ZhbHVlKCkpIHsKKyAgICAgIC8vIElmIHRoZSBiYXNlIGlzIG5vbi1leGlzdGVudCwg
dGhlIGZpcnN0IGV4aXN0ZW50IHZhbHVlIGlzIGVuY29kZWQgYXMKKyAgICAgIC8vIGEgdmFyaW50
LCByYXRoZXIgdGhhbiBhcyBhIGRlbHRhLgorICAgICAgUlRDX0RDSEVDSyghYmFzZV8uaGFzX3Zh
bHVlKCkpOworICAgICAgd3JpdGVyXy0+V3JpdGVCaXRzKEVuY29kZVZhckludCh2YWx1ZS52YWx1
ZSgpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIEVuY29kZURlbHRhKHByZXZpb3VzLnZhbHVlKCks
IHZhbHVlLnZhbHVlKCkpOworICAgIH0KKworICAgIHByZXZpb3VzID0gdmFsdWU7CisgIH0KKwor
ICByZXR1cm4gd3JpdGVyXy0+R2V0U3RyaW5nKCk7Cit9CisKK3NpemVfdCBGaXhlZExlbmd0aERl
bHRhRW5jb2Rlcjo6T3V0cHV0TGVuZ3RoQnl0ZXMoCisgICAgc2l6ZV90IGV4aXN0ZW50X3ZhbHVl
c19jb3VudCkgY29uc3QgeworICByZXR1cm4gQml0c1RvQnl0ZXMoSGVhZGVyTGVuZ3RoQml0cygp
ICsKKyAgICAgICAgICAgICAgICAgICAgIEVuY29kZWREZWx0YXNMZW5ndGhCaXRzKGV4aXN0ZW50
X3ZhbHVlc19jb3VudCkpOworfQorCitzaXplX3QgRml4ZWRMZW5ndGhEZWx0YUVuY29kZXI6Okhl
YWRlckxlbmd0aEJpdHMoKSBjb25zdCB7CisgIGlmIChwYXJhbXNfLnNpZ25lZF9kZWx0YXMoKSA9
PSBrRGVmYXVsdFNpZ25lZERlbHRhcyAmJgorICAgICAgcGFyYW1zXy52YWx1ZXNfb3B0aW9uYWwo
KSA9PSBrRGVmYXVsdFZhbHVlc09wdGlvbmFsICYmCisgICAgICBwYXJhbXNfLnZhbHVlX3dpZHRo
X2JpdHMoKSA9PSBrRGVmYXVsdFZhbHVlV2lkdGhCaXRzKSB7CisgICAgcmV0dXJuIGtCaXRzSW5I
ZWFkZXJGb3JFbmNvZGluZ1R5cGUgKyBrQml0c0luSGVhZGVyRm9yRGVsdGFXaWR0aEJpdHM7Cisg
IH0gZWxzZSB7CisgICAgcmV0dXJuIGtCaXRzSW5IZWFkZXJGb3JFbmNvZGluZ1R5cGUgKyBrQml0
c0luSGVhZGVyRm9yRGVsdGFXaWR0aEJpdHMgKworICAgICAgICAgICBrQml0c0luSGVhZGVyRm9y
U2lnbmVkRGVsdGFzICsga0JpdHNJbkhlYWRlckZvclZhbHVlc09wdGlvbmFsICsKKyAgICAgICAg
ICAga0JpdHNJbkhlYWRlckZvclZhbHVlV2lkdGhCaXRzOworICB9Cit9CisKK3NpemVfdCBGaXhl
ZExlbmd0aERlbHRhRW5jb2Rlcjo6RW5jb2RlZERlbHRhc0xlbmd0aEJpdHMoCisgICAgc2l6ZV90
IGV4aXN0ZW50X3ZhbHVlc19jb3VudCkgY29uc3QgeworICBpZiAoIXBhcmFtc18udmFsdWVzX29w
dGlvbmFsKCkpIHsKKyAgICByZXR1cm4gdmFsdWVzXy5zaXplKCkgKiBwYXJhbXNfLmRlbHRhX3dp
ZHRoX2JpdHMoKTsKKyAgfSBlbHNlIHsKKyAgICBSVENfRENIRUNLX0VRKHN0ZDo6Y291bnRfaWYo
dmFsdWVzXy5iZWdpbigpLCB2YWx1ZXNfLmVuZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbXShhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gdmFsKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbC5oYXNfdmFsdWUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSksCisgICAgICAgICAgICAgICAgICBleGlzdGVudF92YWx1
ZXNfY291bnQpOworICAgIC8vIE9uZSBiaXQgZm9yIGVhY2ggZGVsdGEsIHRvIGluZGljYXRlIGlm
IHRoZSB2YWx1ZSBleGlzdHMsIGFuZCBkZWx0YV93aWR0aAorICAgIC8vIGZvciBlYWNoIGV4aXN0
ZW50IHZhbHVlLCB0byBpbmRpY2F0ZSB0aGUgZGVsdGEgaXRzZWxmLgorICAgIC8vIElmIGJhc2Vf
IGlzIG5vbi1leGlzdGVudCwgdGhlIGZpcnN0IHZhbHVlIChpZiBhbnkpIGlzIGVuY29kZWQgYXMg
YSB2YXJpbnQKKyAgICAvLyByYXRoZXIgdGhhbiBhcyBhIGRlbHRhLgorICAgIGNvbnN0IHNpemVf
dCBleGlzdGVuY2VfYml0bWFwX3NpemVfYml0cyA9IDEgKiB2YWx1ZXNfLnNpemUoKTsKKyAgICBj
b25zdCBib29sIGZpcnN0X3ZhbHVlX2lzX3ZhcmludCA9CisgICAgICAgICFiYXNlXy5oYXNfdmFs
dWUoKSAmJiBleGlzdGVudF92YWx1ZXNfY291bnQgPj0gMTsKKyAgICBjb25zdCBzaXplX3QgZmly
c3RfdmFsdWVfdmFyaW50X3NpemVfYml0cyA9IDggKiBrTWF4VmFySW50TGVuZ3RoQnl0ZXM7Cisg
ICAgY29uc3Qgc2l6ZV90IGRlbHRhc19jb3VudCA9IGV4aXN0ZW50X3ZhbHVlc19jb3VudCAtIGZp
cnN0X3ZhbHVlX2lzX3ZhcmludDsKKyAgICBjb25zdCBzaXplX3QgZGVsdGFzX3NpemVfYml0cyA9
IGRlbHRhc19jb3VudCAqIHBhcmFtc18uZGVsdGFfd2lkdGhfYml0cygpOworICAgIHJldHVybiBl
eGlzdGVuY2VfYml0bWFwX3NpemVfYml0cyArIGZpcnN0X3ZhbHVlX3ZhcmludF9zaXplX2JpdHMg
KworICAgICAgICAgICBkZWx0YXNfc2l6ZV9iaXRzOworICB9Cit9CisKK3ZvaWQgRml4ZWRMZW5n
dGhEZWx0YUVuY29kZXI6OkVuY29kZUhlYWRlcigpIHsKKyAgUlRDX0RDSEVDSyh3cml0ZXJfKTsK
KworICBjb25zdCBFbmNvZGluZ1R5cGUgZW5jb2RpbmdfdHlwZSA9CisgICAgICAocGFyYW1zXy52
YWx1ZV93aWR0aF9iaXRzKCkgPT0ga0RlZmF1bHRWYWx1ZVdpZHRoQml0cyAmJgorICAgICAgIHBh
cmFtc18uc2lnbmVkX2RlbHRhcygpID09IGtEZWZhdWx0U2lnbmVkRGVsdGFzICYmCisgICAgICAg
cGFyYW1zXy52YWx1ZXNfb3B0aW9uYWwoKSA9PSBrRGVmYXVsdFZhbHVlc09wdGlvbmFsKQorICAg
ICAgICAgID8gRW5jb2RpbmdUeXBlOjprRml4ZWRTaXplVW5zaWduZWREZWx0YXNOb0Vhcmx5V3Jh
cE5vT3B0CisgICAgICAgICAgOiBFbmNvZGluZ1R5cGU6OmtGaXhlZFNpemVTaWduZWREZWx0YXNF
YXJseVdyYXBBbmRPcHRTdXBwb3J0ZWQ7CisKKyAgd3JpdGVyXy0+V3JpdGVCaXRzKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihlbmNvZGluZ190eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgIGtCaXRz
SW5IZWFkZXJGb3JFbmNvZGluZ1R5cGUpOworCisgIC8vIE5vdGU6IFNpbmNlIGl0J3MgbWVhbmlu
Z2xlc3MgZm9yIGEgZmllbGQgdG8gYmUgb2Ygd2lkdGggMCwgd2hlbiBpdCBjb21lcworICAvLyB0
byBmaWVsZHMgdGhhdCByZWxhdGUgd2lkdGhzLCB3ZSBlbmNvZGUgIHdpZHRoIDEgYXMgMCwgd2lk
dGggMiBhcyAxLAorCisgIHdyaXRlcl8tPldyaXRlQml0cyhwYXJhbXNfLmRlbHRhX3dpZHRoX2Jp
dHMoKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICBrQml0c0luSGVhZGVyRm9yRGVsdGFXaWR0
aEJpdHMpOworCisgIGlmIChlbmNvZGluZ190eXBlID09IEVuY29kaW5nVHlwZTo6a0ZpeGVkU2l6
ZVVuc2lnbmVkRGVsdGFzTm9FYXJseVdyYXBOb09wdCkgeworICAgIHJldHVybjsKKyAgfQorCisg
IHdyaXRlcl8tPldyaXRlQml0cyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocGFyYW1zXy5zaWduZWRf
ZGVsdGFzKCkpLAorICAgICAgICAgICAgICAgICAgICAga0JpdHNJbkhlYWRlckZvclNpZ25lZERl
bHRhcyk7CisgIHdyaXRlcl8tPldyaXRlQml0cyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocGFyYW1z
Xy52YWx1ZXNfb3B0aW9uYWwoKSksCisgICAgICAgICAgICAgICAgICAgICBrQml0c0luSGVhZGVy
Rm9yVmFsdWVzT3B0aW9uYWwpOworICB3cml0ZXJfLT5Xcml0ZUJpdHMocGFyYW1zXy52YWx1ZV93
aWR0aF9iaXRzKCkgLSAxLAorICAgICAgICAgICAgICAgICAgICAga0JpdHNJbkhlYWRlckZvclZh
bHVlV2lkdGhCaXRzKTsKK30KKwordm9pZCBGaXhlZExlbmd0aERlbHRhRW5jb2Rlcjo6RW5jb2Rl
RGVsdGEodWludDY0X3QgcHJldmlvdXMsIHVpbnQ2NF90IGN1cnJlbnQpIHsKKyAgaWYgKHBhcmFt
c18uc2lnbmVkX2RlbHRhcygpKSB7CisgICAgRW5jb2RlU2lnbmVkRGVsdGEocHJldmlvdXMsIGN1
cnJlbnQpOworICB9IGVsc2UgeworICAgIEVuY29kZVVuc2lnbmVkRGVsdGEocHJldmlvdXMsIGN1
cnJlbnQpOworICB9Cit9CisKK3ZvaWQgRml4ZWRMZW5ndGhEZWx0YUVuY29kZXI6OkVuY29kZVVu
c2lnbmVkRGVsdGEodWludDY0X3QgcHJldmlvdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnQpIHsKKyAgUlRDX0RDSEVD
Syh3cml0ZXJfKTsKKyAgY29uc3QgdWludDY0X3QgZGVsdGEgPSBVbnNpZ25lZERlbHRhKHByZXZp
b3VzLCBjdXJyZW50LCBwYXJhbXNfLnZhbHVlX21hc2soKSk7CisgIHdyaXRlcl8tPldyaXRlQml0
cyhkZWx0YSwgcGFyYW1zXy5kZWx0YV93aWR0aF9iaXRzKCkpOworfQorCit2b2lkIEZpeGVkTGVu
Z3RoRGVsdGFFbmNvZGVyOjpFbmNvZGVTaWduZWREZWx0YSh1aW50NjRfdCBwcmV2aW91cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGN1
cnJlbnQpIHsKKyAgUlRDX0RDSEVDSyh3cml0ZXJfKTsKKworICBjb25zdCB1aW50NjRfdCBmb3J3
YXJkX2RlbHRhID0KKyAgICAgIFVuc2lnbmVkRGVsdGEocHJldmlvdXMsIGN1cnJlbnQsIHBhcmFt
c18udmFsdWVfbWFzaygpKTsKKyAgY29uc3QgdWludDY0X3QgYmFja3dhcmRfZGVsdGEgPQorICAg
ICAgVW5zaWduZWREZWx0YShjdXJyZW50LCBwcmV2aW91cywgcGFyYW1zXy52YWx1ZV9tYXNrKCkp
OworCisgIHVpbnQ2NF90IGRlbHRhOworICBpZiAoZm9yd2FyZF9kZWx0YSA8PSBiYWNrd2FyZF9k
ZWx0YSkgeworICAgIGRlbHRhID0gZm9yd2FyZF9kZWx0YTsKKyAgfSBlbHNlIHsKKyAgICAvLyBD
b21wdXRlIHRoZSB1bnNpZ25lZCByZXByZXNlbnRhdGlvbiBvZiBhIG5lZ2F0aXZlIGRlbHRhLgor
ICAgIC8vIFRoaXMgaXMgdGhlIHR3bydzIGNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24gb2YgdGhp
cyBuZWdhdGl2ZSB2YWx1ZSwKKyAgICAvLyB3aGVuIGRlbHRhcyBhcmUgb2Ygd2lkdGggcGFyYW1z
Xy5kZWx0YV9tYXNrKCkuCisgICAgUlRDX0RDSEVDS19HRShwYXJhbXNfLmRlbHRhX21hc2soKSwg
YmFja3dhcmRfZGVsdGEpOworICAgIFJUQ19EQ0hFQ0tfTFQocGFyYW1zXy5kZWx0YV9tYXNrKCkg
LSBiYWNrd2FyZF9kZWx0YSwgcGFyYW1zXy5kZWx0YV9tYXNrKCkpOworICAgIGRlbHRhID0gcGFy
YW1zXy5kZWx0YV9tYXNrKCkgLSBiYWNrd2FyZF9kZWx0YSArIDE7CisgICAgUlRDX0RDSEVDS19M
RShkZWx0YSwgcGFyYW1zXy5kZWx0YV9tYXNrKCkpOworICB9CisKKyAgd3JpdGVyXy0+V3JpdGVC
aXRzKGRlbHRhLCBwYXJhbXNfLmRlbHRhX3dpZHRoX2JpdHMoKSk7Cit9CisKKy8vIFBlcmZvcm0g
ZGVjb2Rpbmcgb2YgYSBhIGRlbHRhLWVuY29kZWQgc3RyZWFtLCBleHRyYWN0aW5nIHRoZSBvcmln
aW5hbAorLy8gc2VxdWVuY2Ugb2YgdmFsdWVzLgorY2xhc3MgRml4ZWRMZW5ndGhEZWx0YURlY29k
ZXIgZmluYWwgeworIHB1YmxpYzoKKyAgLy8gQ2hlY2tzIHdoZXRoZXIgRml4ZWRMZW5ndGhEZWx0
YURlY29kZXIgaXMgYSBzdWl0YWJsZSBkZWNvZGVyIGZvciB0aGlzCisgIC8vIGJpdHN0cmVhbS4g
Tm90ZSB0aGF0IHRoaXMgZG9lcyBOT1QgaW1wbHkgdGhhdCBzdHJlYW0gaXMgdmFsaWQsIGFuZCB3
aWxsCisgIC8vIGJlIGRlY29kZWQgc3VjY2Vzc2Z1bGx5LiBJdCBET0VTIGltcGx5IHRoYXQgYWxs
IG90aGVyIGRlY29kZXIgY2xhc3NlcworICAvLyB3aWxsIGZhaWwgdG8gZGVjb2RlIHRoaXMgaW5w
dXQsIHRob3VnaC4KKyAgc3RhdGljIGJvb2wgSXNTdWl0YWJsZURlY29kZXJGb3IoY29uc3Qgc3Rk
OjpzdHJpbmcmIGlucHV0KTsKKworICAvLyBBc3N1bWluZyB0aGF0IHxpbnB1dHwgaXMgdGhlIHJl
c3VsdCBvZiBmaXhlZC1zaXplIGRlbHRhLWVuY29kaW5nCisgIC8vIHRoYXQgdG9vayBwbGFjZSB3
aXRoIHRoZSBzYW1lIHZhbHVlIHRvIHxiYXNlfCBhbmQgb3ZlciB8bnVtX29mX2RlbHRhc3wKKyAg
Ly8gb3JpZ2luYWwgdmFsdWVzLCB0aGlzIHdpbGwgcmV0dXJuIHRoZSBzZXF1ZW5jZSBvZiBvcmln
aW5hbCB2YWx1ZXMuCisgIC8vIElmIGFuIGVycm9yIG9jY3VycyAoY2FuIGhhcHBlbiBpZiB8aW5w
dXR8IGlzIGNvcnJ1cHQpLCBhbiBlbXB0eQorICAvLyB2ZWN0b3Igd2lsbCBiZSByZXR1cm5lZC4K
KyAgc3RhdGljIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gRGVjb2RlRGVs
dGFzKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LAorICAgICAgYWJzbDo6b3B0aW9u
YWw8dWludDY0X3Q+IGJhc2UsCisgICAgICBzaXplX3QgbnVtX29mX2RlbHRhcyk7CisKKyBwcml2
YXRlOgorICAvLyBSZWFkcyB0aGUgZW5jb2RpbmcgaGVhZGVyIGluIHxpbnB1dHwgYW5kIHJldHVy
bnMgYSBGaXhlZExlbmd0aERlbHRhRGVjb2RlcgorICAvLyB3aXRoIHRoZSBjb3JyZXNwb25kaW5n
IGNvbmZpZ3VyYXRpb24sIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVjb2RlIHRoZQorICAvLyB2YWx1
ZXMgaW4gfGlucHV0fC4KKyAgLy8gSWYgdGhlIGVuY29kaW5nIGhlYWRlciBpcyBjb3JydXB0IChj
b250YWlucyBhbiBpbGxlZ2FsIGNvbmZpZ3VyYXRpb24pLAorICAvLyBudWxscHRyIHdpbGwgYmUg
cmV0dXJuZWQuCisgIC8vIFdoZW4gYSB2YWxpZCBGaXhlZExlbmd0aERlbHRhRGVjb2RlciBpcyBy
ZXR1cm5lZCwgdGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQKKyAgLy8gdGhlIGVudGlyZSBzdHJlYW0g
aXMgZnJlZSBvZiBlcnJvci4gUmF0aGVyLCBvbmx5IHRoZSBlbmNvZGluZyBoZWFkZXIgaXMKKyAg
Ly8gZXhhbWluZWQgYW5kIGd1YXJhbnRlZWQuCisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rml4
ZWRMZW5ndGhEZWx0YURlY29kZXI+IENyZWF0ZSgKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBp
bnB1dCwKKyAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgICAgc2l6ZV90
IG51bV9vZl9kZWx0YXMpOworCisgIC8vIEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyIG9iamVjdHMg
YXJlIHRvIGJlIGNyZWF0ZWQgYnkgRGVjb2RlRGVsdGFzKCkgYW5kCisgIC8vIHJlbGVhc2VkIGJ5
IGl0IGJlZm9yZSBpdCByZXR1cm5zLiBUaGV5J3JlIG1vc3RseSBhIGNvbnZlbmllbnQgd2F5IHRv
CisgIC8vIGF2b2lkIGhhdmluZyB0byBwYXNzIGEgbG90IG9mIHN0YXRlIGJldHdlZW4gZGlmZmVy
ZW50IGZ1bmN0aW9ucy4KKyAgLy8gVGhlcmVmb3JlLCBpdCB3YXMgZGVlbWVkIGFjY2VwdGFibGUg
dGhhdCB8cmVhZGVyfCBkb2VzIG5vdCBvd24gdGhlIGJ1ZmZlcgorICAvLyBpdCByZWFkcywgbWVh
bmluZyB0aGUgbGlmZXRpbWUgb2YgfHRoaXN8IG11c3Qgbm90IGV4Y2VlZCB0aGUgbGlmZXRpbWUK
KyAgLy8gb2YgfHJlYWRlcnwncyB1bmRlcmx5aW5nIGJ1ZmZlci4KKyAgRml4ZWRMZW5ndGhEZWx0
YURlY29kZXIoc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6Qml0QnVmZmVyPiByZWFkZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJhbWV0ZXJzJiBw
YXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
PiBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX29mX2RlbHRhcyk7
CisKKyAgLy8gUGVyZm9ybSB0aGUgZGVjb2RpbmcgdXNpbmcgdGhlIHBhcmFtZXRlcnMgZ2l2ZW4g
dG8gdGhlIGN0b3IuCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gRGVj
b2RlKCk7CisKKyAgLy8gRGVjb2RlIGEgdmFyaW50IGFuZCB3cml0ZSBpdCB0byB8b3V0cHV0fC4g
UmV0dXJuIHZhbHVlIGluZGljYXRlcyBzdWNjZXNzCisgIC8vIG9yIGZhaWx1cmUuIEluIGNhc2Ug
b2YgZmFpbHVyZSwgbm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCB0aGUgY29udGVudHMKKyAg
Ly8gb2YgfG91dHB1dHwgb3IgdGhlIHJlc3VsdHMgb2YgYWRkaXRpb25hbCByZWFkcy4KKyAgYm9v
bCBQYXJzZVZhckludCh1aW50NjRfdCogb3V0cHV0KTsKKworICAvLyBBdHRlbXB0IHRvIHBhcnNl
IGEgZGVsdGEgZnJvbSB0aGUgaW5wdXQgcmVhZGVyLgorICAvLyBSZXR1cm5zIHRydWUvZmFsc2Ug
Zm9yIHN1Y2Nlc3MvZmFpbHVyZS4KKyAgLy8gV3JpdGVzIHRoZSBkZWx0YSBpbnRvIHxkZWx0YXwg
aWYgc3VjY2Vzc2Z1bC4KKyAgYm9vbCBQYXJzZURlbHRhKHVpbnQ2NF90KiBkZWx0YSk7CisKKyAg
Ly8gQWRkIHxkZWx0YXwgdG8gfGJhc2V8IHRvIHByb2R1Y2UgdGhlIG5leHQgdmFsdWUgaW4gYSBz
ZXF1ZW5jZS4KKyAgLy8gVGhlIGRlbHRhIGlzIGFwcGxpZWQgYXMgc2lnbmVkL3Vuc2lnbmVkIGRl
cGVuZGluZyBvbiB0aGUgcGFyYW1ldGVycworICAvLyBnaXZlbiB0byB0aGUgY3Rvci4gV3JhcC1h
cm91bmQgaXMgdGFrZW4gaW50byBhY2NvdW50IGFjY29yZGluZyB0byB0aGUKKyAgLy8gdmFsdWVz
JyB3aWR0aCwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBhZm9yZW1lbnRpb25lZCBlbmNvZGluZyBwYXJh
bWV0ZXJzLgorICB1aW50NjRfdCBBcHBseURlbHRhKHVpbnQ2NF90IGJhc2UsIHVpbnQ2NF90IGRl
bHRhKSBjb25zdDsKKworICAvLyBIZWxwZXJzIGZvciBBcHBseURlbHRhKCkuCisgIHVpbnQ2NF90
IEFwcGx5VW5zaWduZWREZWx0YSh1aW50NjRfdCBiYXNlLCB1aW50NjRfdCBkZWx0YSkgY29uc3Q7
CisgIHVpbnQ2NF90IEFwcGx5U2lnbmVkRGVsdGEodWludDY0X3QgYmFzZSwgdWludDY0X3QgZGVs
dGEpIGNvbnN0OworCisgIC8vIFJlYWRlciBvZiB0aGUgaW5wdXQgc3RyZWFtIHRvIGJlIGRlY29k
ZWQuIERvZXMgbm90IG93biB0aGF0IGJ1ZmZlci4KKyAgLy8gU2VlIGNvbW1lbnQgYWJvdmUgY3Rv
ciBmb3IgZGV0YWlscy4KKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6Qml0QnVmZmVyPiBy
ZWFkZXJfOworCisgIC8vIFRoZSBwYXJhbWV0ZXJzIGFjY29yZGluZyB0byB3aGljaCBlbmNvZGlu
ZyB3aWxsIGJlIGRvbmUgKHdpZHRoIG9mCisgIC8vIGZpZWxkcywgd2hldGhlciBzaWduZWQgZGVs
dGFzIHNob3VsZCBiZSB1c2VkLCBldGMuKQorICBjb25zdCBGaXhlZExlbmd0aEVuY29kaW5nUGFy
YW1ldGVycyBwYXJhbXNfOworCisgIC8vIFRoZSBlbmNvZGluZyBzY2hlbWUgYXNzdW1lcyB0aGF0
IGF0IGxlYXN0IG9uZSB2YWx1ZSBpcyB0cmFuc21pdHRlZCBPT0IsCisgIC8vIHNvIHRoYXQgdGhl
IGZpcnN0IHZhbHVlIGNhbiBiZSBlbmNvZGVkIGFzIGEgZGVsdGEgZnJvbSB0aGF0IE9PQiB2YWx1
ZSwKKyAgLy8gd2hpY2ggaXMgfGJhc2VffC4KKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0
X3Q+IGJhc2VfOworCisgIC8vIFRoZSBudW1iZXIgb2YgdmFsdWVzIHRvIGJlIGtub3duIHRvIGJl
IGRlY29kZWQuCisgIGNvbnN0IHNpemVfdCBudW1fb2ZfZGVsdGFzXzsKKworICBSVENfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyKTsKK307CisKK2Jvb2wg
Rml4ZWRMZW5ndGhEZWx0YURlY29kZXI6OklzU3VpdGFibGVEZWNvZGVyRm9yKGNvbnN0IHN0ZDo6
c3RyaW5nJiBpbnB1dCkgeworICBpZiAoaW5wdXQubGVuZ3RoKCkgPCBrQml0c0luSGVhZGVyRm9y
RW5jb2RpbmdUeXBlKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcnRjOjpCaXRCdWZm
ZXIgcmVhZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZpbnB1dFswXSksCisg
ICAgICAgICAgICAgICAgICAgICAgICBrQml0c0luSGVhZGVyRm9yRW5jb2RpbmdUeXBlKTsKKwor
ICB1aW50MzJfdCBlbmNvZGluZ190eXBlX2JpdHM7CisgIGNvbnN0IGJvb2wgcmVzdWx0ID0KKyAg
ICAgIHJlYWRlci5SZWFkQml0cygmZW5jb2RpbmdfdHlwZV9iaXRzLCBrQml0c0luSGVhZGVyRm9y
RW5jb2RpbmdUeXBlKTsKKyAgUlRDX0RDSEVDSyhyZXN1bHQpOworCisgIGNvbnN0IGF1dG8gZW5j
b2RpbmdfdHlwZSA9IHN0YXRpY19jYXN0PEVuY29kaW5nVHlwZT4oZW5jb2RpbmdfdHlwZV9iaXRz
KTsKKyAgcmV0dXJuIGVuY29kaW5nX3R5cGUgPT0KKyAgICAgICAgICAgICBFbmNvZGluZ1R5cGU6
OmtGaXhlZFNpemVVbnNpZ25lZERlbHRhc05vRWFybHlXcmFwTm9PcHQgfHwKKyAgICAgICAgIGVu
Y29kaW5nX3R5cGUgPT0KKyAgICAgICAgICAgICBFbmNvZGluZ1R5cGU6OmtGaXhlZFNpemVTaWdu
ZWREZWx0YXNFYXJseVdyYXBBbmRPcHRTdXBwb3J0ZWQ7Cit9CisKK3N0ZDo6dmVjdG9yPGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90Pj4gRml4ZWRMZW5ndGhEZWx0YURlY29kZXI6OkRlY29kZURlbHRh
cygKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsCisgICAgYWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGJhc2UsCisgICAgc2l6ZV90IG51bV9vZl9kZWx0YXMpIHsKKyAgYXV0byBkZWNvZGVy
ID0gRml4ZWRMZW5ndGhEZWx0YURlY29kZXI6OkNyZWF0ZShpbnB1dCwgYmFzZSwgbnVtX29mX2Rl
bHRhcyk7CisgIGlmICghZGVjb2RlcikgeworICAgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpv
cHRpb25hbDx1aW50NjRfdD4+KCk7CisgIH0KKworICByZXR1cm4gZGVjb2Rlci0+RGVjb2RlKCk7
Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxGaXhlZExlbmd0aERlbHRhRGVjb2Rlcj4gRml4ZWRMZW5n
dGhEZWx0YURlY29kZXI6OkNyZWF0ZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsCisg
ICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgc2l6ZV90IG51bV9vZl9kZWx0
YXMpIHsKKyAgaWYgKGlucHV0Lmxlbmd0aCgpIDwga0JpdHNJbkhlYWRlckZvckVuY29kaW5nVHlw
ZSkgeworICAgIHJldHVybiBudWxscHRyOworICB9CisKKyAgYXV0byByZWFkZXIgPSBhYnNsOjpt
YWtlX3VuaXF1ZTxydGM6OkJpdEJ1ZmZlcj4oCisgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPigmaW5wdXRbMF0pLCBpbnB1dC5sZW5ndGgoKSk7CisKKyAgLy8gRW5jb2Rpbmcg
dHlwZQorICB1aW50MzJfdCBlbmNvZGluZ190eXBlX2JpdHM7CisgIGNvbnN0IGJvb2wgcmVzdWx0
ID0KKyAgICAgIHJlYWRlci0+UmVhZEJpdHMoJmVuY29kaW5nX3R5cGVfYml0cywga0JpdHNJbkhl
YWRlckZvckVuY29kaW5nVHlwZSk7CisgIFJUQ19EQ0hFQ0socmVzdWx0KTsKKyAgY29uc3QgRW5j
b2RpbmdUeXBlIGVuY29kaW5nID0gc3RhdGljX2Nhc3Q8RW5jb2RpbmdUeXBlPihlbmNvZGluZ190
eXBlX2JpdHMpOworICBpZiAoZW5jb2RpbmcgIT0gRW5jb2RpbmdUeXBlOjprRml4ZWRTaXplVW5z
aWduZWREZWx0YXNOb0Vhcmx5V3JhcE5vT3B0ICYmCisgICAgICBlbmNvZGluZyAhPQorICAgICAg
ICAgIEVuY29kaW5nVHlwZTo6a0ZpeGVkU2l6ZVNpZ25lZERlbHRhc0Vhcmx5V3JhcEFuZE9wdFN1
cHBvcnRlZCkgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlVucmVjb2duaXplZCBlbmNv
ZGluZyB0eXBlLiI7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKworICB1aW50MzJfdCByZWFk
X2J1ZmZlcjsKKworICAvLyBkZWx0YV93aWR0aF9iaXRzCisgIGlmICghcmVhZGVyLT5SZWFkQml0
cygmcmVhZF9idWZmZXIsIGtCaXRzSW5IZWFkZXJGb3JEZWx0YVdpZHRoQml0cykpIHsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgfQorICBSVENfRENIRUNLX0xFKHJlYWRfYnVmZmVyLCA2NCAtIDEp
OyAgLy8gU2VlIGVuY29kaW5nIGZvciAtMSdzIHJhdGlvbmFsZS4KKyAgY29uc3QgdWludDY0X3Qg
ZGVsdGFfd2lkdGhfYml0cyA9CisgICAgICByZWFkX2J1ZmZlciArIDE7ICAvLyBTZWUgZW5jb2Rp
bmcgZm9yICsxJ3MgcmF0aW9uYWxlLgorCisgIC8vIHNpZ25lZF9kZWx0YXMsIHZhbHVlc19vcHRp
b25hbCwgdmFsdWVfd2lkdGhfYml0cworICBib29sIHNpZ25lZF9kZWx0YXM7CisgIGJvb2wgdmFs
dWVzX29wdGlvbmFsOworICB1aW50NjRfdCB2YWx1ZV93aWR0aF9iaXRzOworICBpZiAoZW5jb2Rp
bmcgPT0gRW5jb2RpbmdUeXBlOjprRml4ZWRTaXplVW5zaWduZWREZWx0YXNOb0Vhcmx5V3JhcE5v
T3B0KSB7CisgICAgc2lnbmVkX2RlbHRhcyA9IGtEZWZhdWx0U2lnbmVkRGVsdGFzOworICAgIHZh
bHVlc19vcHRpb25hbCA9IGtEZWZhdWx0VmFsdWVzT3B0aW9uYWw7CisgICAgdmFsdWVfd2lkdGhf
Yml0cyA9IGtEZWZhdWx0VmFsdWVXaWR0aEJpdHM7CisgIH0gZWxzZSB7CisgICAgLy8gc2lnbmVk
X2RlbHRhcworICAgIGlmICghcmVhZGVyLT5SZWFkQml0cygmcmVhZF9idWZmZXIsIGtCaXRzSW5I
ZWFkZXJGb3JTaWduZWREZWx0YXMpKSB7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cisg
ICAgc2lnbmVkX2RlbHRhcyA9IHJ0Yzo6ZGNoZWNrZWRfY2FzdDxib29sPihyZWFkX2J1ZmZlcik7
CisKKyAgICAvLyB2YWx1ZXNfb3B0aW9uYWwKKyAgICBpZiAoIXJlYWRlci0+UmVhZEJpdHMoJnJl
YWRfYnVmZmVyLCBrQml0c0luSGVhZGVyRm9yVmFsdWVzT3B0aW9uYWwpKSB7CisgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisgICAgUlRDX0RDSEVDS19MRShyZWFkX2J1ZmZlciwgMSk7Cisg
ICAgdmFsdWVzX29wdGlvbmFsID0gcnRjOjpkY2hlY2tlZF9jYXN0PGJvb2w+KHJlYWRfYnVmZmVy
KTsKKworICAgIC8vIHZhbHVlX3dpZHRoX2JpdHMKKyAgICBpZiAoIXJlYWRlci0+UmVhZEJpdHMo
JnJlYWRfYnVmZmVyLCBrQml0c0luSGVhZGVyRm9yVmFsdWVXaWR0aEJpdHMpKSB7CisgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgUlRDX0RDSEVDS19MRShyZWFkX2J1ZmZlciwgNjQg
LSAxKTsgIC8vIFNlZSBlbmNvZGluZyBmb3IgLTEncyByYXRpb25hbGUuCisgICAgdmFsdWVfd2lk
dGhfYml0cyA9IHJlYWRfYnVmZmVyICsgMTsgIC8vIFNlZSBlbmNvZGluZyBmb3IgKzEncyByYXRp
b25hbGUuCisgIH0KKworICAvLyBOb3RlOiBCZWNhdXNlIG9mIHRoZSB3YXkgdGhlIHBhcmFtZXRl
cnMgYXJlIHJlYWQsIGl0IGlzIG5vdCBwb3NzaWJsZQorICAvLyBmb3IgaWxsZWdhbCB2YWx1ZXMg
dG8gYmUgcmVhZC4gV2UgY2hlY2sgbmV2ZXJ0aGVsZXNzLCBpbiBjYXNlIHRoZSBjb2RlCisgIC8v
IGNoYW5nZXMgaW4gdGhlIGZ1dHVyZSBpbiBhIHdheSB0aGF0IGJyZWFrcyB0aGlzIHByb21pc2Uu
CisgIGlmICghRml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnM6OlZhbGlkUGFyYW1ldGVycygK
KyAgICAgICAgICBkZWx0YV93aWR0aF9iaXRzLCBzaWduZWRfZGVsdGFzLCB2YWx1ZXNfb3B0aW9u
YWwsIHZhbHVlX3dpZHRoX2JpdHMpKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ29y
cnVwdCBsb2c7IGlsbGVnYWwgZW5jb2RpbmcgcGFyYW1ldGVycy4iOworICAgIHJldHVybiBudWxs
cHRyOworICB9CisKKyAgRml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnMgcGFyYW1zKGRlbHRh
X3dpZHRoX2JpdHMsIHNpZ25lZF9kZWx0YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZXNfb3B0aW9uYWwsIHZhbHVlX3dpZHRoX2JpdHMpOworICByZXR1cm4g
YWJzbDo6V3JhcFVuaXF1ZShuZXcgRml4ZWRMZW5ndGhEZWx0YURlY29kZXIoc3RkOjptb3ZlKHJl
YWRlciksIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJhc2UsIG51bV9vZl9kZWx0YXMpKTsKK30KKworRml4ZWRMZW5ndGhEZWx0
YURlY29kZXI6OkZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyKAorICAgIHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OkJpdEJ1ZmZlcj4gcmVhZGVyLAorICAgIGNvbnN0IEZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJh
bWV0ZXJzJiBwYXJhbXMsCisgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAg
c2l6ZV90IG51bV9vZl9kZWx0YXMpCisgICAgOiByZWFkZXJfKHN0ZDo6bW92ZShyZWFkZXIpKSwK
KyAgICAgIHBhcmFtc18ocGFyYW1zKSwKKyAgICAgIGJhc2VfKGJhc2UpLAorICAgICAgbnVtX29m
X2RlbHRhc18obnVtX29mX2RlbHRhcykgeworICBSVENfRENIRUNLKHJlYWRlcl8pOworfQorCitz
dGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IEZpeGVkTGVuZ3RoRGVsdGFEZWNv
ZGVyOjpEZWNvZGUoKSB7CisgIFJUQ19EQ0hFQ0socmVhZGVyXyk7CisKKyAgc3RkOjp2ZWN0b3I8
Ym9vbD4gZXhpc3RpbmdfdmFsdWVzKG51bV9vZl9kZWx0YXNfKTsKKyAgaWYgKHBhcmFtc18udmFs
dWVzX29wdGlvbmFsKCkpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9vZl9kZWx0
YXNfOyArK2kpIHsKKyAgICAgIHVpbnQzMl90IGV4aXN0czsKKyAgICAgIGlmICghcmVhZGVyXy0+
UmVhZEJpdHMoJmV4aXN0cywgMXUpKSB7CisgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwg
IkZhaWxlZCB0byByZWFkIGV4aXN0ZW5jZS1pbmRpY2F0aW5nIGJpdC4iOworICAgICAgICByZXR1
cm4gc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PigpOworICAgICAgfQorICAg
ICAgUlRDX0RDSEVDS19MRShleGlzdHMsIDF1KTsKKyAgICAgIGV4aXN0aW5nX3ZhbHVlc1tpXSA9
IChleGlzdHMgPT0gMSk7CisgICAgfQorICB9IGVsc2UgeworICAgIHN0ZDo6ZmlsbChleGlzdGlu
Z192YWx1ZXMuYmVnaW4oKSwgZXhpc3RpbmdfdmFsdWVzLmVuZCgpLCB0cnVlKTsKKyAgfQorCisg
IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBwcmV2aW91cyA9IGJhc2VfOworICBzdGQ6OnZlY3Rv
cjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHZhbHVlcyhudW1fb2ZfZGVsdGFzXyk7CisKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fb2ZfZGVsdGFzXzsgKytpKSB7CisgICAgaWYgKCFl
eGlzdGluZ192YWx1ZXNbaV0pIHsKKyAgICAgIFJUQ19EQ0hFQ0socGFyYW1zXy52YWx1ZXNfb3B0
aW9uYWwoKSk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBpZiAoIXByZXZpb3VzKSB7
CisgICAgICAvLyBJZiB0aGUgYmFzZSBpcyBub24tZXhpc3RlbnQsIHRoZSBmaXJzdCBleGlzdGVu
dCB2YWx1ZSBpcyBlbmNvZGVkIGFzCisgICAgICAvLyBhIHZhcmludCwgcmF0aGVyIHRoYW4gYXMg
YSBkZWx0YS4KKyAgICAgIFJUQ19EQ0hFQ0soIWJhc2VfLmhhc192YWx1ZSgpKTsKKyAgICAgIHVp
bnQ2NF90IGZpcnN0X3ZhbHVlOworICAgICAgaWYgKCFQYXJzZVZhckludCgmZmlyc3RfdmFsdWUp
KSB7CisgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byByZWFkIGZpcnN0
IHZhbHVlLiI7CisgICAgICAgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50
NjRfdD4+KCk7CisgICAgICB9CisgICAgICB2YWx1ZXNbaV0gPSBmaXJzdF92YWx1ZTsKKyAgICB9
IGVsc2UgeworICAgICAgdWludDY0X3QgZGVsdGE7CisgICAgICBpZiAoIVBhcnNlRGVsdGEoJmRl
bHRhKSkgeworICAgICAgICByZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0
X3Q+PigpOworICAgICAgfQorICAgICAgdmFsdWVzW2ldID0gQXBwbHlEZWx0YShwcmV2aW91cy52
YWx1ZSgpLCBkZWx0YSk7CisgICAgfQorCisgICAgcHJldmlvdXMgPSB2YWx1ZXNbaV07CisgIH0K
KworICByZXR1cm4gdmFsdWVzOworfQorCitib29sIEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpQ
YXJzZVZhckludCh1aW50NjRfdCogb3V0cHV0KSB7CisgIFJUQ19EQ0hFQ0socmVhZGVyXyk7Cisg
IHJldHVybiBEZWNvZGVWYXJJbnQocmVhZGVyXy5nZXQoKSwgb3V0cHV0KSAhPSAwOworfQorCiti
b29sIEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpQYXJzZURlbHRhKHVpbnQ2NF90KiBkZWx0YSkg
eworICBSVENfRENIRUNLKHJlYWRlcl8pOworCisgIC8vIEJpdEJ1ZmZlciBhbmQgQml0QnVmZmVy
V3JpdGVyIHJlYWQvd3JpdGUgaGlnaGVyIGJpdHMgYmVmb3JlIGxvd2VyIGJpdHMuCisKKyAgY29u
c3Qgc2l6ZV90IGxvd2VyX2JpdF9jb3VudCA9CisgICAgICBzdGQ6Om1pbjx1aW50NjRfdD4ocGFy
YW1zXy5kZWx0YV93aWR0aF9iaXRzKCksIDMydSk7CisgIGNvbnN0IHNpemVfdCBoaWdoZXJfYml0
X2NvdW50ID0gKHBhcmFtc18uZGVsdGFfd2lkdGhfYml0cygpIDw9IDMydSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogcGFyYW1zXy5kZWx0YV93aWR0aF9iaXRzKCkgLSAzMnU7CisKKyAgdWlu
dDMyX3QgbG93ZXJfYml0czsKKyAgdWludDMyX3QgaGlnaGVyX2JpdHM7CisKKyAgaWYgKGhpZ2hl
cl9iaXRfY291bnQgPiAwKSB7CisgICAgaWYgKCFyZWFkZXJfLT5SZWFkQml0cygmaGlnaGVyX2Jp
dHMsIGhpZ2hlcl9iaXRfY291bnQpKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJG
YWlsZWQgdG8gcmVhZCBoaWdoZXIgaGFsZiBvZiBkZWx0YS4iOworICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBoaWdoZXJfYml0cyA9IDA7CisgIH0KKworICBpZiAo
IXJlYWRlcl8tPlJlYWRCaXRzKCZsb3dlcl9iaXRzLCBsb3dlcl9iaXRfY291bnQpKSB7CisgICAg
UlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHJlYWQgbG93ZXIgaGFsZiBvZiBkZWx0
YS4iOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGNvbnN0IHVpbnQ2NF90IGxvd2VyX2Jp
dHNfNjQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obG93ZXJfYml0cyk7CisgIGNvbnN0IHVpbnQ2
NF90IGhpZ2hlcl9iaXRzXzY0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGhpZ2hlcl9iaXRzKTsK
KworICAqZGVsdGEgPSAoaGlnaGVyX2JpdHNfNjQgPDwgMzIpIHwgbG93ZXJfYml0c182NDsKKyAg
cmV0dXJuIHRydWU7Cit9CisKK3VpbnQ2NF90IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpBcHBs
eURlbHRhKHVpbnQ2NF90IGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50NjRfdCBkZWx0YSkgY29uc3QgeworICBSVENfRENIRUNLX0xFKGJhc2Us
IE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKHBhcmFtc18udmFsdWVfd2lkdGhfYml0cygpKSk7
CisgIFJUQ19EQ0hFQ0tfTEUoZGVsdGEsIE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKHBhcmFt
c18uZGVsdGFfd2lkdGhfYml0cygpKSk7CisgIHJldHVybiBwYXJhbXNfLnNpZ25lZF9kZWx0YXMo
KSA/IEFwcGx5U2lnbmVkRGVsdGEoYmFzZSwgZGVsdGEpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IEFwcGx5VW5zaWduZWREZWx0YShiYXNlLCBkZWx0YSk7Cit9CisKK3VpbnQ2
NF90IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpBcHBseVVuc2lnbmVkRGVsdGEodWludDY0X3Qg
YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDY0X3QgZGVsdGEpIGNvbnN0IHsKKyAgLy8gTm90ZTogTWF5IHN0aWxsIGJlIHVzZWQg
aWYgc2lnbmVkIGRlbHRhcyB1c2VkLgorICBSVENfRENIRUNLX0xFKGJhc2UsIE1heFVuc2lnbmVk
VmFsdWVPZkJpdFdpZHRoKHBhcmFtc18udmFsdWVfd2lkdGhfYml0cygpKSk7CisgIFJUQ19EQ0hF
Q0tfTEUoZGVsdGEsIE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKHBhcmFtc18uZGVsdGFfd2lk
dGhfYml0cygpKSk7CisgIHJldHVybiAoYmFzZSArIGRlbHRhKSAmIHBhcmFtc18udmFsdWVfbWFz
aygpOworfQorCit1aW50NjRfdCBGaXhlZExlbmd0aERlbHRhRGVjb2Rlcjo6QXBwbHlTaWduZWRE
ZWx0YSh1aW50NjRfdCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDY0X3QgZGVsdGEpIGNvbnN0IHsKKyAgUlRDX0RDSEVDSyhwYXJh
bXNfLnNpZ25lZF9kZWx0YXMoKSk7CisgIFJUQ19EQ0hFQ0tfTEUoYmFzZSwgTWF4VW5zaWduZWRW
YWx1ZU9mQml0V2lkdGgocGFyYW1zXy52YWx1ZV93aWR0aF9iaXRzKCkpKTsKKyAgUlRDX0RDSEVD
S19MRShkZWx0YSwgTWF4VW5zaWduZWRWYWx1ZU9mQml0V2lkdGgocGFyYW1zXy5kZWx0YV93aWR0
aF9iaXRzKCkpKTsKKworICBjb25zdCB1aW50NjRfdCB0b3BfYml0ID0gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAocGFyYW1zXy5kZWx0YV93
aWR0aF9iaXRzKCkgLSAxKTsKKworICBjb25zdCBib29sIHBvc2l0aXZlX2RlbHRhID0gKChkZWx0
YSAmIHRvcF9iaXQpID09IDApOworICBpZiAocG9zaXRpdmVfZGVsdGEpIHsKKyAgICByZXR1cm4g
QXBwbHlVbnNpZ25lZERlbHRhKGJhc2UsIGRlbHRhKTsKKyAgfQorCisgIGNvbnN0IHVpbnQ2NF90
IGRlbHRhX2FicyA9ICh+ZGVsdGEgJiBwYXJhbXNfLmRlbHRhX21hc2soKSkgKyAxOworICByZXR1
cm4gKGJhc2UgLSBkZWx0YV9hYnMpICYgcGFyYW1zXy52YWx1ZV9tYXNrKCk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZQorCitzdGQ6OnN0cmluZyBFbmNvZGVEZWx0YXMoYWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiYgdmFsdWVzKSB7CisgIC8vIFRPRE8oZWxhZGFsb24p
OiBTdXBwb3J0IGFkZGl0aW9uYWwgZW5jb2RpbmdzLgorICByZXR1cm4gRml4ZWRMZW5ndGhEZWx0
YUVuY29kZXI6OkVuY29kZURlbHRhcyhiYXNlLCB2YWx1ZXMpOworfQorCitzdGQ6OnZlY3Rvcjxh
YnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IERlY29kZURlbHRhcygKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyYgaW5wdXQsCisgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgc2l6
ZV90IG51bV9vZl9kZWx0YXMpIHsKKyAgUlRDX0RDSEVDS19HVChudW1fb2ZfZGVsdGFzLCAwKTsg
IC8vIEFsbG93cyBlbXB0eSB2ZWN0b3IgdG8gaW5kaWNhdGUgZXJyb3IuCisKKyAgLy8gVGhlIGVt
cHR5IHN0cmluZyBpcyBhIHNwZWNpYWwgY2FzZSBpbmRpY2F0aW5nIHRoYXQgYWxsIHZhbHVlcyB3
ZXJlIGVxdWFsCisgIC8vIHRvIHRoZSBiYXNlLgorICBpZiAoaW5wdXQuZW1wdHkoKSkgeworICAg
IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gcmVzdWx0KG51bV9vZl9kZWx0
YXMpOworICAgIHN0ZDo6ZmlsbChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBiYXNlKTsK
KyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKyAgaWYgKEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVy
OjpJc1N1aXRhYmxlRGVjb2RlckZvcihpbnB1dCkpIHsKKyAgICByZXR1cm4gRml4ZWRMZW5ndGhE
ZWx0YURlY29kZXI6OkRlY29kZURlbHRhcyhpbnB1dCwgYmFzZSwgbnVtX29mX2RlbHRhcyk7Cisg
IH0KKworICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJDb3VsZCBub3QgZGVjb2RlIGRlbHRhLWVu
Y29kZWQgc3RyZWFtLiI7CisgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50
NjRfdD4+KCk7Cit9CisKK3ZvaWQgU2V0Rml4ZWRMZW5ndGhFbmNvZGVyRGVsdGFTaWduZWRuZXNz
Rm9yVGVzdGluZyhib29sIHNpZ25lZG5lc3MpIHsKKyAgZ19mb3JjZV91bnNpZ25lZF9mb3JfdGVz
dGluZyA9ICFzaWduZWRuZXNzOworICBnX2ZvcmNlX3NpZ25lZF9mb3JfdGVzdGluZyA9IHNpZ25l
ZG5lc3M7Cit9CisKK3ZvaWQgVW5zZXRGaXhlZExlbmd0aEVuY29kZXJEZWx0YVNpZ25lZG5lc3NG
b3JUZXN0aW5nKCkgeworICBnX2ZvcmNlX3Vuc2lnbmVkX2Zvcl90ZXN0aW5nID0gZmFsc2U7Cisg
IGdfZm9yY2Vfc2lnbmVkX2Zvcl90ZXN0aW5nID0gZmFsc2U7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29kaW5nLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZW5jb2Rlci9kZWx0YV9lbmNvZGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNWU4YjdmNDNjZGQ0
YjlkNDI5MGZiZDRmYzg2MGRmNTY2ZDUxZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5j
b2Rlci9kZWx0YV9lbmNvZGluZy5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX0RFTFRBX0VOQ09E
SU5HX0hfCisjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX0RFTFRBX0VOQ09E
SU5HX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVk
ZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gRW5j
b2RlIHx2YWx1ZXN8IGFzIGEgc2VxdWVuY2Ugb2YgZGVsdGFzIGZvbGxvd2luZyBvbiB8YmFzZXwg
YW5kIHJldHVybiBpdC4KKy8vIElmIGFsbCBvZiB0aGUgdmFsdWVzIHdlcmUgZXF1YWwgdG8gdGhl
IGJhc2UsIGFuIGVtcHR5IHN0cmluZyB3aWxsIGJlCisvLyByZXR1cm5lZDsgdGhpcyBpcyBhIHZh
bGlkIGVuY29kaW5nIG9mIHRoYXQgZWRnZSBjYXNlLgorLy8gfGJhc2V8IGlzIG5vdCBndWFyYW50
ZWVkIHRvIGJlIHdyaXR0ZW4gaW50byB8b3V0cHV0fCwgYW5kIG11c3QgdGhlcmVmb3JlCisvLyBi
ZSBwcm92aWRlZCBzZXBhcmF0ZWx5IHRvIHRoZSBkZWNvZGVyLgorLy8gVGhpcyBmdW5jdGlvbiBu
ZXZlciBmYWlscy4KKy8vIFRPRE8oZWxhZGFsb24pOiBTcGxpdCBpbnRvIG9wdGlvbmFsIGFuZCBu
b24tb3B0aW9uYWwgdmFyaWFudHMgKGVmZmljaWVuY3kpLgorc3RkOjpzdHJpbmcgRW5jb2RlRGVs
dGFzKGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4mIHZhbHVlcyk7
CisKKy8vIEVuY29kZURlbHRhcygpIGFuZCBEZWNvZGVEZWx0YXMoKSBhcmUgaW52ZXJzZSBvcGVy
YXRpb25zOworLy8gaW52b2tpbmcgRGVjb2RlRGVsdGFzKCkgb3ZlciB0aGUgb3V0cHV0IG9mIEVu
Y29kZURlbHRhcygpLCB3aWxsIHJldHVybgorLy8gdGhlIGlucHV0IG9yaWdpbmFsbHkgZ2l2ZW4g
dG8gRW5jb2RlRGVsdGFzKCkuCisvLyB8bnVtX29mX2RlbHRhc3wgbXVzdCBiZSBncmVhdGVyIHRo
YW4gemVyby4gSWYgaW5wdXQgaXMgbm90IGEgdmFsaWQgZW5jb2RpbmcKKy8vIG9mIHxudW1fb2Zf
ZGVsdGFzfCBlbGVtZW50cyBiYXNlZCBvbiB8YmFzZXwsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGFu
IGVtcHR5CisvLyB2ZWN0b3IsIHdoaWNoIHNpZ25hbHMgYW4gZXJyb3IuCisvLyBUT0RPKGVsYWRh
bG9uKTogU3BsaXQgaW50byBvcHRpb25hbCBhbmQgbm9uLW9wdGlvbmFsIHZhcmlhbnRzIChlZmZp
Y2llbmN5KS4KK3N0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gRGVjb2RlRGVs
dGFzKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwKKyAgICBhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4gYmFzZSwKKyAgICBzaXplX3QgbnVtX29mX2RlbHRhcyk7CisKK30gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9E
RUxUQV9FTkNPRElOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2Rp
bmdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9kZWx0YV9lbmNvZGluZ191bml0dGVzdC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jYTQ0MDEwZWRhYzMwMDVhZjUxZjkwY2RkZjU5MzgyNGY0NTVmYTE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmdfdW5pdHRlc3Qu
Y2MKQEAgLTAsMCArMSw2OTMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAi
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuaCIKKworI2luY2x1
ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bnVtZXJpYz4KKyNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dmVjdG9yPgorCisj
aW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5
c2l6ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3JhbmRvbS5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CisKK3ZvaWQgU2V0Rml4ZWRMZW5ndGhFbmNvZGVyRGVsdGFTaWduZWRuZXNzRm9yVGVzdGluZyhi
b29sIHNpZ25lZG5lc3MpOwordm9pZCBVbnNldEZpeGVkTGVuZ3RoRW5jb2RlckRlbHRhU2lnbmVk
bmVzc0ZvclRlc3RpbmcoKTsKKworbmFtZXNwYWNlIHsKKworZW51bSBjbGFzcyBEZWx0YVNpZ25l
ZG5lc3MgeyBrTm9PdmVycmlkZSwga0ZvcmNlVW5zaWduZWQsIGtGb3JjZVNpZ25lZCB9OworCit2
b2lkIE1heWJlU2V0U2lnbmVkbmVzcyhEZWx0YVNpZ25lZG5lc3Mgc2lnbmVkbmVzcykgeworICBz
d2l0Y2ggKHNpZ25lZG5lc3MpIHsKKyAgICBjYXNlIERlbHRhU2lnbmVkbmVzczo6a05vT3ZlcnJp
ZGU6CisgICAgICBVbnNldEZpeGVkTGVuZ3RoRW5jb2RlckRlbHRhU2lnbmVkbmVzc0ZvclRlc3Rp
bmcoKTsKKyAgICAgIHJldHVybjsKKyAgICBjYXNlIERlbHRhU2lnbmVkbmVzczo6a0ZvcmNlVW5z
aWduZWQ6CisgICAgICBTZXRGaXhlZExlbmd0aEVuY29kZXJEZWx0YVNpZ25lZG5lc3NGb3JUZXN0
aW5nKGZhbHNlKTsKKyAgICAgIHJldHVybjsKKyAgICBjYXNlIERlbHRhU2lnbmVkbmVzczo6a0Zv
cmNlU2lnbmVkOgorICAgICAgU2V0Rml4ZWRMZW5ndGhFbmNvZGVyRGVsdGFTaWduZWRuZXNzRm9y
VGVzdGluZyh0cnVlKTsKKyAgICAgIHJldHVybjsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOwor
fQorCit1aW50NjRfdCBSYW5kb21XaXRoTWF4Qml0V2lkdGgoUmFuZG9tKiBwcm5nLCB1aW50NjRf
dCBtYXhfd2lkdGgpIHsKKyAgUlRDX0RDSEVDS19HRShtYXhfd2lkdGgsIDF1KTsKKyAgUlRDX0RD
SEVDS19MRShtYXhfd2lkdGgsIDY0dSk7CisKKyAgY29uc3QgdWludDY0X3QgbG93ID0gcHJuZy0+
UmFuZChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOworICBjb25zdCB1aW50
NjRfdCBoaWdoID0KKyAgICAgIG1heF93aWR0aCA+IDMydSA/IHBybmctPlJhbmQoc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSA6IDB1OworCisgIGNvbnN0IHVpbnQ2NF90IHJh
bmRvbV9iZWZvcmVfbWFzayA9IChoaWdoIDw8IDMyKSB8IGxvdzsKKworICBpZiAobWF4X3dpZHRo
IDwgNjQpIHsKKyAgICByZXR1cm4gcmFuZG9tX2JlZm9yZV9tYXNrICYgKChzdGF0aWNfY2FzdDx1
aW50NjRfdD4oMSkgPDwgbWF4X3dpZHRoKSAtIDEpOworICB9IGVsc2UgeworICAgIHJldHVybiBy
YW5kb21fYmVmb3JlX21hc2s7CisgIH0KK30KKworLy8gRW5jb2RlcyB8dmFsdWVzfCBiYXNlZCBv
biB8YmFzZXwsIHRoZW4gZGVjb2RlcyB0aGUgcmVzdWx0IGFuZCBtYWtlcyBzdXJlCisvLyB0aGF0
IGl0IGlzIGVxdWFsIHRvIHRoZSBvcmlnaW5hbCBpbnB1dC4KKy8vIElmIHxlbmNvZGVkX3N0cmlu
Z3wgaXMgbm9uLW51bGwsIHRoZSBlbmNvZGVkIHJlc3VsdCB3aWxsIGFsc28gYmUgd3JpdHRlbgor
Ly8gaW50byBpdC4KK3ZvaWQgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoCisgICAgYWJzbDo6b3B0
aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9u
YWw8dWludDY0X3Q+PiYgdmFsdWVzLAorICAgIHN0ZDo6c3RyaW5nKiBlbmNvZGVkX3N0cmluZyA9
IG51bGxwdHIpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IEVuY29kZURlbHRhcyhi
YXNlLCB2YWx1ZXMpOworICBpZiAoZW5jb2RlZF9zdHJpbmcpIHsKKyAgICAqZW5jb2RlZF9zdHJp
bmcgPSBlbmNvZGVkOworICB9CisKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+PiBkZWNvZGVkID0KKyAgICAgIERlY29kZURlbHRhcyhlbmNvZGVkLCBiYXNlLCB2
YWx1ZXMuc2l6ZSgpKTsKKworICBFWFBFQ1RfRVEoZGVjb2RlZCwgdmFsdWVzKTsKK30KKworc3Rk
Ojp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBDcmVhdGVTZXF1ZW5jZUJ5Rmlyc3RW
YWx1ZSgKKyAgICB1aW50NjRfdCBmaXJzdCwKKyAgICBzaXplX3Qgc2VxdWVuY2VfbGVuZ3RoKSB7
CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gc2VxdWVuY2Uoc2VxdWVu
Y2VfbGVuZ3RoKTsKKyAgc3RkOjppb3RhKHNlcXVlbmNlLmJlZ2luKCksIHNlcXVlbmNlLmVuZCgp
LCBmaXJzdCk7CisgIHJldHVybiBzZXF1ZW5jZTsKK30KKworc3RkOjp2ZWN0b3I8YWJzbDo6b3B0
aW9uYWw8dWludDY0X3Q+PiBDcmVhdGVTZXF1ZW5jZUJ5TGFzdFZhbHVlKAorICAgIHVpbnQ2NF90
IGxhc3QsCisgICAgc2l6ZV90IG51bV92YWx1ZXMpIHsKKyAgY29uc3QgdWludDY0X3QgZmlyc3Qg
PSBsYXN0IC0gbnVtX3ZhbHVlcyArIDE7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90Pj4gcmVzdWx0KG51bV92YWx1ZXMpOworICBzdGQ6OmlvdGEocmVzdWx0LmJlZ2luKCks
IHJlc3VsdC5lbmQoKSwgZmlyc3QpOworICByZXR1cm4gcmVzdWx0OworfQorCisvLyBJZiB8c2Vx
dWVuY2VfbGVuZ3RofCBpcyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBkZWx0YXMsIHRoZSBz
ZXF1ZW5jZSBvZgorLy8gZGVsdGFzIHdpbGwgd3JhcCBhcm91bmQuCitzdGQ6OnZlY3RvcjxhYnNs
OjpvcHRpb25hbDx1aW50NjRfdD4+IENyZWF0ZVNlcXVlbmNlQnlPcHRpb25hbERlbHRhcygKKyAg
ICB1aW50NjRfdCBmaXJzdCwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4+JiBkZWx0YXMsCisgICAgc2l6ZV90IHNlcXVlbmNlX2xlbmd0aCkgeworICBSVENf
RENIRUNLX0dFKHNlcXVlbmNlX2xlbmd0aCwgMSk7CisKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0
aW9uYWw8dWludDY0X3Q+PiBzZXF1ZW5jZShzZXF1ZW5jZV9sZW5ndGgpOworCisgIHVpbnQ2NF90
IHByZXZpb3VzID0gZmlyc3Q7CisgIGZvciAoc2l6ZV90IGkgPSAwLCBuZXh0X2RlbHRhX2luZGV4
ID0gMDsgaSA8IHNlcXVlbmNlLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGRlbHRhc1tuZXh0X2Rl
bHRhX2luZGV4XS5oYXNfdmFsdWUoKSkgeworICAgICAgc2VxdWVuY2VbaV0gPQorICAgICAgICAg
IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PihwcmV2aW91cyArIGRlbHRhc1tuZXh0X2RlbHRhX2lu
ZGV4XS52YWx1ZSgpKTsKKyAgICAgIHByZXZpb3VzID0gc2VxdWVuY2VbaV0udmFsdWUoKTsKKyAg
ICB9CisgICAgbmV4dF9kZWx0YV9pbmRleCA9IChuZXh0X2RlbHRhX2luZGV4ICsgMSkgJSBkZWx0
YXMuc2l6ZSgpOworICB9CisKKyAgcmV0dXJuIHNlcXVlbmNlOworfQorCitzaXplX3QgRW5jb2Rp
bmdMZW5ndGhVcHBlckJvdW5kKHNpemVfdCBkZWx0YV9tYXhfYml0X3dpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX29mX2RlbHRhcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGVsdGFTaWduZWRuZXNzIHNpZ25lZG5lc3Nfb3ZlcnJpZGUp
IHsKKyAgYWJzbDo6b3B0aW9uYWw8c2l6ZV90PiBzbWFsbGVzdF9oZWFkZXJfc2l6ZV9ieXRlczsK
KyAgc3dpdGNoIChzaWduZWRuZXNzX292ZXJyaWRlKSB7CisgICAgY2FzZSBEZWx0YVNpZ25lZG5l
c3M6OmtOb092ZXJyaWRlOgorICAgIGNhc2UgRGVsdGFTaWduZWRuZXNzOjprRm9yY2VVbnNpZ25l
ZDoKKyAgICAgIHNtYWxsZXN0X2hlYWRlcl9zaXplX2J5dGVzID0gMTsKKyAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRGVsdGFTaWduZWRuZXNzOjprRm9yY2VTaWduZWQ6CisgICAgICBzbWFsbGVzdF9o
ZWFkZXJfc2l6ZV9ieXRlcyA9IDI7CisgICAgICBicmVhazsKKyAgfQorICBSVENfRENIRUNLKHNt
YWxsZXN0X2hlYWRlcl9zaXplX2J5dGVzKTsKKworICByZXR1cm4gZGVsdGFfbWF4X2JpdF93aWR0
aCAqIG51bV9vZl9kZWx0YXMgKyAqc21hbGxlc3RfaGVhZGVyX3NpemVfYnl0ZXM7Cit9CisKKy8v
IElmIHxzZXF1ZW5jZV9sZW5ndGh8IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGRlbHRh
cywgdGhlIHNlcXVlbmNlIG9mCisvLyBkZWx0YXMgd2lsbCB3cmFwIGFyb3VuZC4KK3N0ZDo6dmVj
dG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gQ3JlYXRlU2VxdWVuY2VCeURlbHRhcygKKyAg
ICB1aW50NjRfdCBmaXJzdCwKKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50NjRfdD4mIGRlbHRh
cywKKyAgICBzaXplX3Qgc2VxdWVuY2VfbGVuZ3RoKSB7CisgIFJUQ19EQ0hFQ0soIWRlbHRhcy5l
bXB0eSgpKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBvcHRpb25h
bF9kZWx0YXMoZGVsdGFzLnNpemUoKSk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVsdGFz
LnNpemUoKTsgKytpKSB7CisgICAgb3B0aW9uYWxfZGVsdGFzW2ldID0gYWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+KGRlbHRhc1tpXSk7CisgIH0KKyAgcmV0dXJuIENyZWF0ZVNlcXVlbmNlQnlPcHRp
b25hbERlbHRhcyhmaXJzdCwgb3B0aW9uYWxfZGVsdGFzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX2xlbmd0aCk7Cit9CisKKy8vIFRlc3RzIG9mIHRo
ZSBkZWx0YSBlbmNvZGluZywgcGFyYW1ldGVyaXplZCBieSB0aGUgbnVtYmVyIG9mIHZhbHVlcwor
Ly8gaW4gdGhlIHNlcXVlbmNlIGNyZWF0ZWQgYnkgdGhlIHRlc3QuCitjbGFzcyBEZWx0YUVuY29k
aW5nVGVzdAorICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTwKKyAgICAgICAg
ICBzdGQ6OnR1cGxlPERlbHRhU2lnbmVkbmVzcywgc2l6ZV90LCBib29sLCB1aW50NjRfdD4+IHsK
KyBwdWJsaWM6CisgIERlbHRhRW5jb2RpbmdUZXN0KCkKKyAgICAgIDogc2lnbmVkbmVzc18oc3Rk
OjpnZXQ8MD4oR2V0UGFyYW0oKSkpLAorICAgICAgICBudW1fb2ZfdmFsdWVzXyhzdGQ6OmdldDwx
PihHZXRQYXJhbSgpKSksCisgICAgICAgIG9wdGlvbmFsX3ZhbHVlc18oc3RkOjpnZXQ8Mj4oR2V0
UGFyYW0oKSkpLAorICAgICAgICBwYXJ0aWFsX3JhbmRvbV9zZWVkXyhzdGQ6OmdldDwzPihHZXRQ
YXJhbSgpKSkgeworICAgIE1heWJlU2V0U2lnbmVkbmVzcyhzaWduZWRuZXNzXyk7CisgIH0KKwor
ICB+RGVsdGFFbmNvZGluZ1Rlc3QoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgLy8gUnVubmlu
ZyB3aXRoIHRoZSBzYW1lIHNlZWQgZm9yIGFsbCB2YXJpYW50cyB3b3VsZCBtYWtlIGFsbCB0ZXN0
cyBzdGFydAorICAvLyB3aXRoIHRoZSBzYW1lIHNlcXVlbmNlOyBhdm9pZCB0aGlzIGJ5IG1ha2lu
ZyB0aGUgc2VlZCBkaWZmZXJlbnQuCisgIHVpbnQ2NF90IFNlZWQoKSBjb25zdCB7CisgICAgLy8g
TXVsdGlwbHkgZXZlcnl0aGluZyBidXQgYnkgZGlmZmVyZW50IHByaW1lcyB0byBwcm9kdWNlIHVu
aXF1ZSByZXN1bHRzLgorICAgIHJldHVybiAyICogc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpZ25l
ZG5lc3NfKSArIDMgKiBudW1fb2ZfdmFsdWVzXyArCisgICAgICAgICAgIDUgKiBvcHRpb25hbF92
YWx1ZXNfICsgNyAqIHBhcnRpYWxfcmFuZG9tX3NlZWRfOworICB9CisKKyAgY29uc3QgRGVsdGFT
aWduZWRuZXNzIHNpZ25lZG5lc3NfOworICBjb25zdCB1aW50NjRfdCBudW1fb2ZfdmFsdWVzXzsK
KyAgY29uc3QgYm9vbCBvcHRpb25hbF92YWx1ZXNfOworICBjb25zdCB1aW50NjRfdCBwYXJ0aWFs
X3JhbmRvbV9zZWVkXzsgIC8vIEV4cGxhaW5lZCB3aGVyZSBpdCdzIHVzZWQuCit9OworCitURVNU
X1AoRGVsdGFFbmNvZGluZ1Rlc3QsIEFsbFZhbHVlc0VxdWFsVG9FeGlzdGVudEJhc2VWYWx1ZSkg
eworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKyAgc3RkOjp2
ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMobnVtX29mX3ZhbHVlc18pOwor
ICBzdGQ6OmZpbGwodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSwgYmFzZSk7CisgIHN0ZDo6
c3RyaW5nIGVuY29kZWQ7CisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcywg
JmVuY29kZWQpOworCisgIC8vIEFkZGl0aW9uYWwgcmVxdWlyZW1lbnQgLSB0aGUgZW5jb2Rpbmcg
c2hvdWxkIGJlIGVmZmljaWVudCBpbiB0aGlzCisgIC8vIGNhc2UgLSB0aGUgZW1wdHkgc3RyaW5n
IHdpbGwgYmUgdXNlZC4KKyAgRVhQRUNUX1RSVUUoZW5jb2RlZC5lbXB0eSgpKTsKK30KKworVEVT
VF9QKERlbHRhRW5jb2RpbmdUZXN0LCBBbGxWYWx1ZXNFcXVhbFRvTm9uRXhpc3RlbnRCYXNlVmFs
dWUpIHsKKyAgaWYgKCFvcHRpb25hbF92YWx1ZXNfKSB7CisgICAgcmV0dXJuOyAgLy8gVGVzdCBp
cnJlbGV2YW50IGZvciB0aGlzIGNhc2UuCisgIH0KKworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4gYmFzZTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2
YWx1ZXMobnVtX29mX3ZhbHVlc18pOworICBzdGQ6OmZpbGwodmFsdWVzLmJlZ2luKCksIHZhbHVl
cy5lbmQoKSwgYmFzZSk7CisgIHN0ZDo6c3RyaW5nIGVuY29kZWQ7CisgIFRlc3RFbmNvZGluZ0Fu
ZERlY29kaW5nKGJhc2UsIHZhbHVlcywgJmVuY29kZWQpOworCisgIC8vIEFkZGl0aW9uYWwgcmVx
dWlyZW1lbnQgLSB0aGUgZW5jb2Rpbmcgc2hvdWxkIGJlIGVmZmljaWVudCBpbiB0aGlzCisgIC8v
IGNhc2UgLSB0aGUgZW1wdHkgc3RyaW5nIHdpbGwgYmUgdXNlZC4KKyAgRVhQRUNUX1RSVUUoZW5j
b2RlZC5lbXB0eSgpKTsKK30KKworVEVTVF9QKERlbHRhRW5jb2RpbmdUZXN0LCBCYXNlTm9uRXhp
c3RlbnRCdXRTb21lT3RoZXJWYWx1ZXNFeGlzdCkgeworICBpZiAoIW9wdGlvbmFsX3ZhbHVlc18p
IHsKKyAgICByZXR1cm47ICAvLyBUZXN0IGlycmVsZXZhbnQgZm9yIHRoaXMgY2FzZS4KKyAgfQor
CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlOworICBzdGQ6OnZlY3Rvcjxh
YnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHZhbHVlcyhudW1fb2ZfdmFsdWVzXyk7CisKKyAgUmFu
ZG9tIHBybmcoU2VlZCgpKTsKKworICBjb25zdCB1aW50NjRfdCBtYXhfYml0X3dpZHRoID0gMSAr
IHBybmcuUmFuZCg2Myk7ICAvLyBbMSwgNjRdCisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2
YWx1ZXMuc2l6ZSgpOykgeworICAgIC8vIExlYXZlIGEgcmFuZG9tIG51bWJlciBvZiB2YWx1ZXMg
YXMgbm9uLWV4aXN0ZW50LgorICAgIGNvbnN0IHNpemVfdCBub25fZXhpc3RlbnRfY291bnQgPSBw
cm5nLlJhbmQodmFsdWVzLnNpemUoKSAtIGkgLSAxKTsKKyAgICBpICs9IG5vbl9leGlzdGVudF9j
b3VudDsKKworICAgIC8vIEFzc2lnbiByYW5kb20gdmFsdWVzIHRvIGEgcmFuZG9tIG51bWJlciBv
ZiB2YWx1ZXMuIChBdCBsZWFzdCBvbmUsIHRvCisgICAgLy8gcHJldmVudCB0aGlzIGl0ZXJhdGlv
biBvZiB0aGUgb3V0ZXIgbG9vcCBmcm9tIGJlaW5nIGEgbm8tb3AuKQorICAgIGNvbnN0IHNpemVf
dCBleGlzdGVudF9jb3VudCA9CisgICAgICAgIHN0ZDo6bWF4PHNpemVfdD4ocHJuZy5SYW5kKHZh
bHVlcy5zaXplKCkgLSBpIC0gMSksIDEpOworICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZXhp
c3RlbnRfY291bnQ7ICsraikgeworICAgICAgdmFsdWVzW2kgKyBqXSA9IFJhbmRvbVdpdGhNYXhC
aXRXaWR0aCgmcHJuZywgbWF4X2JpdF93aWR0aCk7CisgICAgfQorICAgIGkgKz0gZXhpc3RlbnRf
Y291bnQ7CisgIH0KKworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2YWx1ZXMpOwor
fQorCitURVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIE1pbkRlbHRhTm9XcmFwQXJvdW5kKSB7Cisg
IGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlKDM0MzIpOworCisgIGF1dG8gdmFs
dWVzID0gQ3JlYXRlU2VxdWVuY2VCeUZpcnN0VmFsdWUoYmFzZS52YWx1ZSgpICsgMSwgbnVtX29m
X3ZhbHVlc18pOworICBBU1NFUlRfR1QodmFsdWVzW3ZhbHVlcy5zaXplKCkgLSAxXSwgYmFzZSkg
PDwgIlNhbml0eTsgbXVzdCBub3Qgd3JhcCBhcm91bmQiOworCisgIGlmIChvcHRpb25hbF92YWx1
ZXNfKSB7CisgICAgLy8gQXJiaXRyYXJpbHkgbWFrZSBvbmUgb2YgdGhlIHZhbHVlcyBub24tZXhp
c3RlbnQsIHRvIGZvcmNlCisgICAgLy8gb3B0aW9uYWwtc3VwcG9ydGluZyBlbmNvZGluZy4KKyAg
ICB2YWx1ZXNbMF0gPSBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgfQorCisgIFRlc3RF
bmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKK1RFU1RfUChEZWx0YUVuY29k
aW5nVGVzdCwgQmlnRGVsdGFOb1dyYXBBcm91bmQpIHsKKyAgY29uc3QgdWludDY0X3Qga0JpZ0Rl
bHRhID0gMTMyODI4OworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMy
KTsKKworICBhdXRvIHZhbHVlcyA9CisgICAgICBDcmVhdGVTZXF1ZW5jZUJ5Rmlyc3RWYWx1ZShi
YXNlLnZhbHVlKCkgKyBrQmlnRGVsdGEsIG51bV9vZl92YWx1ZXNfKTsKKyAgQVNTRVJUX0dUKHZh
bHVlc1t2YWx1ZXMuc2l6ZSgpIC0gMV0sIGJhc2UpIDw8ICJTYW5pdHk7IG11c3Qgbm90IHdyYXAg
YXJvdW5kIjsKKworICBpZiAob3B0aW9uYWxfdmFsdWVzXykgeworICAgIC8vIEFyYml0cmFyaWx5
IG1ha2Ugb25lIG9mIHRoZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0byBmb3JjZQorICAgIC8vIG9w
dGlvbmFsLXN1cHBvcnRpbmcgZW5jb2RpbmcuCisgICAgdmFsdWVzWzBdID0gYWJzbDo6b3B0aW9u
YWw8dWludDY0X3Q+KCk7CisgIH0KKworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2
YWx1ZXMpOworfQorCitURVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIE1heERlbHRhTm9XcmFwQXJv
dW5kKSB7CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlKDM0MzIpOworCisg
IGF1dG8gdmFsdWVzID0gQ3JlYXRlU2VxdWVuY2VCeUxhc3RWYWx1ZShzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudW1fb2ZfdmFsdWVzXyk7CisgIEFTU0VSVF9HVCh2YWx1ZXNbdmFsdWVzLnNpemUo
KSAtIDFdLCBiYXNlKSA8PCAiU2FuaXR5OyBtdXN0IG5vdCB3cmFwIGFyb3VuZCI7CisKKyAgaWYg
KG9wdGlvbmFsX3ZhbHVlc18pIHsKKyAgICAvLyBBcmJpdHJhcmlseSBtYWtlIG9uZSBvZiB0aGUg
dmFsdWVzIG5vbi1leGlzdGVudCwgdG8gZm9yY2UKKyAgICAvLyBvcHRpb25hbC1zdXBwb3J0aW5n
IGVuY29kaW5nLgorICAgIHZhbHVlc1swXSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOwor
ICB9CisKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworVEVT
VF9QKERlbHRhRW5jb2RpbmdUZXN0LCBTbWFsbERlbHRhV2l0aFdyYXBBcm91bmRDb21wYXJlZFRv
QmFzZSkgeworICBpZiAob3B0aW9uYWxfdmFsdWVzXyAmJiBudW1fb2ZfdmFsdWVzXyA9PSAxKSB7
CisgICAgcmV0dXJuOyAgLy8gSW5hcHBsaWNhYmxlCisgIH0KKworICBjb25zdCBhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4gYmFzZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkp
OworCisgIGF1dG8gdmFsdWVzID0gQ3JlYXRlU2VxdWVuY2VCeURlbHRhcygqYmFzZSwgezEsIDEw
LCAzfSwgbnVtX29mX3ZhbHVlc18pOworICBBU1NFUlRfTFQodmFsdWVzWzBdLCBiYXNlKSA8PCAi
U2FuaXR5OyBtdXN0IHdyYXAgYXJvdW5kIjsKKworICBpZiAob3B0aW9uYWxfdmFsdWVzXykgewor
ICAgIC8vIEFyYml0cmFyaWx5IG1ha2Ugb25lIG9mIHRoZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0
byBmb3JjZQorICAgIC8vIG9wdGlvbmFsLXN1cHBvcnRpbmcgZW5jb2RpbmcuCisgICAgdmFsdWVz
WzFdID0gYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgIH0KKworICBUZXN0RW5jb2RpbmdB
bmREZWNvZGluZyhiYXNlLCB2YWx1ZXMpOworfQorCitURVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3Qs
IFNtYWxsRGVsdGFXaXRoV3JhcEFyb3VuZEluVmFsdWVTZXF1ZW5jZSkgeworICBpZiAobnVtX29m
X3ZhbHVlc18gPT0gMSB8fCAob3B0aW9uYWxfdmFsdWVzXyAmJiBudW1fb2ZfdmFsdWVzXyA8IDMp
KSB7CisgICAgcmV0dXJuOyAgLy8gSW5hcHBsaWNhYmxlLgorICB9CisKKyAgY29uc3QgYWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+IGJhc2Uoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpIC0gMik7CisKKyAgYXV0byB2YWx1ZXMgPSBDcmVhdGVTZXF1ZW5jZUJ5RGVsdGFzKCpiYXNl
LCB7MSwgMTAsIDN9LCBudW1fb2ZfdmFsdWVzXyk7CisgIEFTU0VSVF9MVCh2YWx1ZXNbdmFsdWVz
LnNpemUoKSAtIDFdLCB2YWx1ZXNbMF0pIDw8ICJTYW5pdHk7IG11c3Qgd3JhcCBhcm91bmQiOwor
CisgIGlmIChvcHRpb25hbF92YWx1ZXNfKSB7CisgICAgLy8gQXJiaXRyYXJpbHkgbWFrZSBvbmUg
b2YgdGhlIHZhbHVlcyBub24tZXhpc3RlbnQsIHRvIGZvcmNlCisgICAgLy8gb3B0aW9uYWwtc3Vw
cG9ydGluZyBlbmNvZGluZy4KKyAgICBSVENfRENIRUNLX0dUKHZhbHVlcy5zaXplKCkgLSAxLCAx
dSk7ICAvLyBXcmFwIGFyb3VuZCBub3QgY2FuY2VsbGVkLgorICAgIHZhbHVlc1sxXSA9IGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICB9CisKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2Rpbmco
YmFzZSwgdmFsdWVzKTsKK30KKworLy8gU3VwcHJlc3MgImludGVncmFsIGNvbnN0YW50IG92ZXJm
bG93IiB3YXJuaW5nOyB0aGlzIGlzIHRoZSB0ZXN0J3MgZm9jdXMuCisjaWZkZWYgX01TQ19WRVIK
KyNwcmFnbWEgd2FybmluZyhwdXNoKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MzA3KQor
I2VuZGlmCitURVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIEJpZ0RlbHRhV2l0aFdyYXBBcm91bmRD
b21wYXJlZFRvQmFzZSkgeworICBpZiAob3B0aW9uYWxfdmFsdWVzXyAmJiBudW1fb2ZfdmFsdWVz
XyA9PSAxKSB7CisgICAgcmV0dXJuOyAgLy8gSW5hcHBsaWNhYmxlCisgIH0KKworICBjb25zdCB1
aW50NjRfdCBrQmlnRGVsdGEgPSAxMzI4Mjg7CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2
NF90PiBiYXNlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSAtCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtCaWdEZWx0YSArIDMpOworCisgIGF1dG8g
dmFsdWVzID0KKyAgICAgIENyZWF0ZVNlcXVlbmNlQnlGaXJzdFZhbHVlKGJhc2UudmFsdWUoKSAr
IGtCaWdEZWx0YSwgbnVtX29mX3ZhbHVlc18pOworICBBU1NFUlRfTFQodmFsdWVzWzBdLCBiYXNl
LnZhbHVlKCkpIDw8ICJTYW5pdHk7IG11c3Qgd3JhcCBhcm91bmQiOworCisgIGlmIChvcHRpb25h
bF92YWx1ZXNfKSB7CisgICAgLy8gQXJiaXRyYXJpbHkgbWFrZSBvbmUgb2YgdGhlIHZhbHVlcyBu
b24tZXhpc3RlbnQsIHRvIGZvcmNlCisgICAgLy8gb3B0aW9uYWwtc3VwcG9ydGluZyBlbmNvZGlu
Zy4KKyAgICB2YWx1ZXNbMV0gPSBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgfQorCisg
IFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKK1RFU1RfUChEZWx0
YUVuY29kaW5nVGVzdCwgQmlnRGVsdGFXaXRoV3JhcEFyb3VuZEluVmFsdWVTZXF1ZW5jZSkgewor
ICBpZiAobnVtX29mX3ZhbHVlc18gPT0gMSB8fCAob3B0aW9uYWxfdmFsdWVzXyAmJiBudW1fb2Zf
dmFsdWVzXyA8IDMpKSB7CisgICAgcmV0dXJuOyAgLy8gSW5hcHBsaWNhYmxlLgorICB9CisKKyAg
Y29uc3QgdWludDY0X3Qga0JpZ0RlbHRhID0gMTMyODI4OworICBjb25zdCBhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4gYmFzZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgLQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQmlnRGVsdGEgKyAzKTsKKwor
ICBhdXRvIHZhbHVlcyA9IENyZWF0ZVNlcXVlbmNlQnlGaXJzdFZhbHVlKHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDY0X3Q+OjptYXgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudW1fb2ZfdmFsdWVzXyk7CisgIEFTU0VSVF9MVCh2YWx1ZXNbdmFsdWVzLnNp
emUoKSAtIDFdLCB2YWx1ZXNbMF0pIDw8ICJTYW5pdHk7IG11c3Qgd3JhcCBhcm91bmQiOworCisg
IGlmIChvcHRpb25hbF92YWx1ZXNfKSB7CisgICAgLy8gQXJiaXRyYXJpbHkgbWFrZSBvbmUgb2Yg
dGhlIHZhbHVlcyBub24tZXhpc3RlbnQsIHRvIGZvcmNlCisgICAgLy8gb3B0aW9uYWwtc3VwcG9y
dGluZyBlbmNvZGluZy4KKyAgICBSVENfRENIRUNLX0dUKHZhbHVlcy5zaXplKCkgLSAxLCAxdSk7
ICAvLyBXcmFwIGFyb3VuZCBub3QgY2FuY2VsbGVkLgorICAgIHZhbHVlc1sxXSA9IGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90PigpOworICB9CisKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFz
ZSwgdmFsdWVzKTsKK30KKyNpZmRlZiBfTVNDX1ZFUgorI3ByYWdtYSB3YXJuaW5nKHBvcCkKKyNl
bmRpZgorCitURVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIE1heERlbHRhV2l0aFdyYXBBcm91bmRD
b21wYXJlZFRvQmFzZSkgeworICBpZiAob3B0aW9uYWxfdmFsdWVzXyAmJiBudW1fb2ZfdmFsdWVz
XyA9PSAxKSB7CisgICAgcmV0dXJuOyAgLy8gSW5hcHBsaWNhYmxlCisgIH0KKworICBjb25zdCBh
YnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKyAgYXV0byB2YWx1ZXMgPSBDcmVh
dGVTZXF1ZW5jZUJ5Rmlyc3RWYWx1ZSgqYmFzZSAtIDEsIG51bV9vZl92YWx1ZXNfKTsKKworICBp
ZiAob3B0aW9uYWxfdmFsdWVzXykgeworICAgIC8vIEFyYml0cmFyaWx5IG1ha2Ugb25lIG9mIHRo
ZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0byBmb3JjZQorICAgIC8vIG9wdGlvbmFsLXN1cHBvcnRp
bmcgZW5jb2RpbmcuCisgICAgdmFsdWVzWzFdID0gYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7
CisgIH0KKworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2YWx1ZXMpOworfQorCitU
RVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIE1heERlbHRhV2l0aFdyYXBBcm91bmRJblZhbHVlU2Vx
dWVuY2UpIHsKKyAgaWYgKG51bV9vZl92YWx1ZXNfID09IDEgfHwgKG9wdGlvbmFsX3ZhbHVlc18g
JiYgbnVtX29mX3ZhbHVlc18gPCAzKSkgeworICAgIHJldHVybjsgIC8vIEluYXBwbGljYWJsZS4K
KyAgfQorCisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlKDM0MzIpOworCisg
IGF1dG8gdmFsdWVzID0gQ3JlYXRlU2VxdWVuY2VCeURlbHRhcygKKyAgICAgICpiYXNlLCB7MCwg
c3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpLCAzfSwgbnVtX29mX3ZhbHVlc18p
OworICAvLyBXcmFwcyBhcm91bmQgY29udGludW91c2x5IGJ5IHZpcnR1ZSBvZiBiZWluZyBtYXgo
KTsgd2lsbCBub3QgQVNTRVJULgorCisgIGlmIChvcHRpb25hbF92YWx1ZXNfKSB7CisgICAgLy8g
QXJiaXRyYXJpbHkgbWFrZSBvbmUgb2YgdGhlIHZhbHVlcyBub24tZXhpc3RlbnQsIHRvIGZvcmNl
CisgICAgLy8gb3B0aW9uYWwtc3VwcG9ydGluZyBlbmNvZGluZy4KKyAgICBSVENfRENIRUNLX0dU
KHZhbHVlcy5zaXplKCkgLSAxLCAxdSk7ICAvLyBXcmFwIGFyb3VuZCBub3QgY2FuY2VsbGVkLgor
ICAgIHZhbHVlc1sxXSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICB9CisKKyAgVGVz
dEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworLy8gSWYgbnVtX29mX3Zh
bHVlc18gPT0gMSwgYSB6ZXJvIGRlbHRhIHdpbGwgeWllbGQgYW4gZW1wdHkgc3RyaW5nOyB0aGF0
J3MKKy8vIGFscmVhZHkgY292ZXJlZCBieSBBbGxWYWx1ZXNFcXVhbFRvRXhpc3RlbnRCYXNlVmFs
dWUsIGJ1dCBpdCBkb2Vzbid0IGh1cnQgdG8KKy8vIHRlc3QgYWdhaW4uIEZvciBhbGwgb3RoZXIg
Y2FzZXMsIHdlIGhhdmUgYSBuZXcgdGVzdC4KK1RFU1RfUChEZWx0YUVuY29kaW5nVGVzdCwgWmVy
b0RlbHRhKSB7CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlKDM0MzIpOwor
CisgIC8vIEFyYml0cmFyeSBzZXF1ZW5jZSBvZiBkZWx0YXMgd2l0aCBpbnRlbnRpb25hbCB6ZXJv
IGRlbHRhcywgYXMgd2VsbCBhcworICAvLyBjb25zZWN1dGl2ZSB6ZXJvcy4KKyAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8dWludDY0X3Q+IGRlbHRhcyA9IHswLCAgICAgIDMxMiwgMTEsIDEsICAxLCAwLCAw
LCAxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MDAzMjEsIDMs
ICAgMywgIDEyLCA1LCAwLCA2fTsKKyAgYXV0byB2YWx1ZXMgPSBDcmVhdGVTZXF1ZW5jZUJ5RGVs
dGFzKGJhc2UudmFsdWUoKSwgZGVsdGFzLCBudW1fb2ZfdmFsdWVzXyk7CisKKyAgaWYgKG9wdGlv
bmFsX3ZhbHVlc18pIHsKKyAgICAvLyBBcmJpdHJhcmlseSBtYWtlIG9uZSBvZiB0aGUgdmFsdWVz
IG5vbi1leGlzdGVudCwgdG8gZm9yY2UKKyAgICAvLyBvcHRpb25hbC1zdXBwb3J0aW5nIGVuY29k
aW5nLgorICAgIHZhbHVlc1swXSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICB9CisK
KyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoCisgICAgU2lnbmVkbmVzc092ZXJyaWRlQW5kTnVtYmVyT2ZWYWx1ZXNJ
blNlcXVlbmNlLAorICAgIERlbHRhRW5jb2RpbmdUZXN0LAorICAgIDo6dGVzdGluZzo6Q29tYmlu
ZSg6OnRlc3Rpbmc6OlZhbHVlcyhEZWx0YVNpZ25lZG5lc3M6OmtOb092ZXJyaWRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWx0YVNpZ25lZG5lc3M6OmtGb3Jj
ZVVuc2lnbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWx0
YVNpZ25lZG5lc3M6OmtGb3JjZVNpZ25lZCksCisgICAgICAgICAgICAgICAgICAgICAgIDo6dGVz
dGluZzo6VmFsdWVzKDEsIDIsIDEwMCwgMTAwMDApLAorICAgICAgICAgICAgICAgICAgICAgICA6
OnRlc3Rpbmc6OkJvb2woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1
ZXMoMTAsIDIwLCAzMCkpKTsKKworLy8gVGVzdHMgb3ZlciB0aGUgcXVhbGl0eSBvZiB0aGUgY29t
cHJlc3Npb24gKGFzIG9wcG9zZWQgdG8gaXRzIGNvcnJlY3RuZXNzKS4KKy8vIE5vdCB0byBiZSBj
b25mdXNlZCB3aXRoIHRlc3RzIG9mIHJ1bnRpbWUgZWZmaWNpZW5jeS4KK2NsYXNzIERlbHRhRW5j
b2RpbmdDb21wcmVzc2lvblF1YWxpdHlUZXN0CisgICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPAorICAgICAgICAgIHN0ZDo6dHVwbGU8RGVsdGFTaWduZWRuZXNzLCB1aW50NjRf
dCwgdWludDY0X3QsIHVpbnQ2NF90Pj4geworIHB1YmxpYzoKKyAgRGVsdGFFbmNvZGluZ0NvbXBy
ZXNzaW9uUXVhbGl0eVRlc3QoKQorICAgICAgOiBzaWduZWRuZXNzXyhzdGQ6OmdldDwwPihHZXRQ
YXJhbSgpKSksCisgICAgICAgIGRlbHRhX21heF9iaXRfd2lkdGhfKHN0ZDo6Z2V0PDE+KEdldFBh
cmFtKCkpKSwKKyAgICAgICAgbnVtX29mX3ZhbHVlc18oc3RkOjpnZXQ8Mj4oR2V0UGFyYW0oKSkp
LAorICAgICAgICBwYXJ0aWFsX3JhbmRvbV9zZWVkXyhzdGQ6OmdldDwzPihHZXRQYXJhbSgpKSkg
eworICAgIE1heWJlU2V0U2lnbmVkbmVzcyhzaWduZWRuZXNzXyk7CisgIH0KKworICB+RGVsdGFF
bmNvZGluZ0NvbXByZXNzaW9uUXVhbGl0eVRlc3QoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAg
Ly8gUnVubmluZyB3aXRoIHRoZSBzYW1lIHNlZWQgZm9yIGFsbCB2YXJpYW50cyB3b3VsZCBtYWtl
IGFsbCB0ZXN0cyBzdGFydAorICAvLyB3aXRoIHRoZSBzYW1lIHNlcXVlbmNlOyBhdm9pZCB0aGlz
IGJ5IG1ha2luZyB0aGUgc2VlZCBkaWZmZXJlbnQuCisgIHVpbnQ2NF90IFNlZWQoKSBjb25zdCB7
CisgICAgLy8gTXVsdGlwbHkgZXZlcnl0aGluZyBidXQgYnkgZGlmZmVyZW50IHByaW1lcyB0byBw
cm9kdWNlIHVuaXF1ZSByZXN1bHRzLgorICAgIHJldHVybiAyICogc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHNpZ25lZG5lc3NfKSArIDMgKiBkZWx0YV9tYXhfYml0X3dpZHRoXyArCisgICAgICAgICAg
IDUgKiBkZWx0YV9tYXhfYml0X3dpZHRoXyArIDcgKiBudW1fb2ZfdmFsdWVzXyArCisgICAgICAg
ICAgIDExICogcGFydGlhbF9yYW5kb21fc2VlZF87CisgIH0KKworICBjb25zdCBEZWx0YVNpZ25l
ZG5lc3Mgc2lnbmVkbmVzc187CisgIGNvbnN0IHVpbnQ2NF90IGRlbHRhX21heF9iaXRfd2lkdGhf
OworICBjb25zdCB1aW50NjRfdCBudW1fb2ZfdmFsdWVzXzsKKyAgY29uc3QgdWludDY0X3QgcGFy
dGlhbF9yYW5kb21fc2VlZF87ICAvLyBFeHBsYWluZWQgd2hlcmUgaXQncyB1c2VkLgorfTsKKwor
Ly8gSWYgbm8gd3JhcC1hcm91bmQgb2NjdXJzIGluIHRoZSBzdHJlYW0sIHRoZSB3aWR0aCBvZiB0
aGUgdmFsdWVzIGRvZXMgbm90CisvLyBtYXR0ZXIgdG8gY29tcHJlc3Npb24gcGVyZm9ybWFuY2U7
IG9ubHkgdGhlIGRlbHRhcyBtYXR0ZXIuCitURVNUX1AoRGVsdGFFbmNvZGluZ0NvbXByZXNzaW9u
UXVhbGl0eVRlc3QsCisgICAgICAgQmFzZURvZXNOb3RBZmZlY3RFZmZpY2llbmN5SWZOb1dyYXBB
cm91bmQpIHsKKyAgLy8gMS4gQmFzZXMgd2hpY2ggd2lsbCBub3QgcHJvZHVjZSBhIHdyYXAtYXJv
dW5kLgorICAvLyAyLiBUaGUgbGFzdCBiYXNlIC0gMHhmZmZmZmZmZmZmZmZmZmZmIC0gZG9lcyBj
YXVzZSBhIHdyYXAtYXJvdW5kLCBidXQKKyAgLy8gICAgdGhhdCBzdGlsbCB3b3JrcywgYmVjYXVz
ZSB0aGUgd2lkdGggaXMgNjQgYW55d2F5LCBhbmQgZG9lcyBub3QKKyAgLy8gICAgbmVlZCB0byBi
ZSBjb252ZXllZCBleHBsaWNpdGx5IGluIHRoZSBlbmNvZGluZyBoZWFkZXIuCisgIGNvbnN0IHVp
bnQ2NF90IGJhc2VzW10gPSB7MCwgMHg1NSwgMHhmZmZmZmZmZiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCl9OworICBjb25z
dCBzaXplX3Qga0ludGVuZGVkV3JhcEFyb3VuZEJhc2VJbmRleCA9IGFycmF5c2l6ZShiYXNlcyk7
CisKKyAgc3RkOjp2ZWN0b3I8dWludDY0X3Q+IGRlbHRhcyhudW1fb2ZfdmFsdWVzXyk7CisKKyAg
Ly8gQWxsb3dzIHVzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWx0YXMgZG8gbm90IHByb2R1Y2Ug
YSB3cmFwLWFyb3VuZC4KKyAgdWludDY0X3QgbGFzdF9lbGVtZW50W2FycmF5c2l6ZShiYXNlcyld
OworICBtZW1jcHkobGFzdF9lbGVtZW50LCBiYXNlcywgc2l6ZW9mKGJhc2VzKSk7CisKKyAgLy8g
QXZvaWQgZW1wdHkgfGRlbHRhc3wgZHVlIHRvIGZpcnN0IGVsZW1lbnQgY2F1c2luZyB3cmFwLWFy
b3VuZC4KKyAgZGVsdGFzWzBdID0gMTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNp
emUobGFzdF9lbGVtZW50KTsgKytpKSB7CisgICAgbGFzdF9lbGVtZW50W2ldICs9IDE7CisgIH0K
KworICBSYW5kb20gcHJuZyhTZWVkKCkpOworCisgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgZGVs
dGFzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgdWludDY0X3QgZGVsdGEgPSBSYW5kb21XaXRo
TWF4Qml0V2lkdGgoJnBybmcsIGRlbHRhX21heF9iaXRfd2lkdGhfKTsKKworICAgIGJvb2wgd3Jh
cF9hcm91bmQgPSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGFycmF5c2l6ZShs
YXN0X2VsZW1lbnQpOyArK2opIHsKKyAgICAgIGlmIChqID09IGtJbnRlbmRlZFdyYXBBcm91bmRC
YXNlSW5kZXgpIHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisKKyAgICAgIGxhc3RfZWxl
bWVudFtqXSArPSBkZWx0YTsKKyAgICAgIGlmIChsYXN0X2VsZW1lbnRbal0gPCBiYXNlc1tqXSkg
eworICAgICAgICB3cmFwX2Fyb3VuZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgICAgfQor
ICAgIH0KKworICAgIGlmICh3cmFwX2Fyb3VuZCkgeworICAgICAgZGVsdGFzLnJlc2l6ZShpKTsK
KyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlbHRhc1tpXSA9IGRlbHRhOworICB9CisKKyAg
c3RkOjpzdHJpbmcgZW5jb2RpbmdzW2FycmF5c2l6ZShiYXNlcyldOworCisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXJyYXlzaXplKGJhc2VzKTsgKytpKSB7CisgICAgY29uc3QgYXV0byB2YWx1
ZXMgPQorICAgICAgICBDcmVhdGVTZXF1ZW5jZUJ5RGVsdGFzKGJhc2VzW2ldLCBkZWx0YXMsIG51
bV9vZl92YWx1ZXNfKTsKKyAgICAvLyBQcm9kdWNlIHRoZSBlbmNvZGluZyBhbmQgd3JpdGUgaXQg
dG8gZW5jb2RpbmdzW2ldLgorICAgIC8vIEJ5IHVzaW5nIFRlc3RFbmNvZGluZ0FuZERlY29kaW5n
KCkgdG8gZG8gdGhpcywgd2UgYWxzbyBzYW5pdHktdGVzdAorICAgIC8vIHRoZSBlbmNvZGluZy9k
ZWNvZGluZywgdGhvdWdoIHRoYXQgaXMgbm90IHRoZSB0ZXN0J3MgZm9jdXMuCisgICAgVGVzdEVu
Y29kaW5nQW5kRGVjb2RpbmcoYmFzZXNbaV0sIHZhbHVlcywgJmVuY29kaW5nc1tpXSk7CisgICAg
RVhQRUNUX0xFKGVuY29kaW5nc1tpXS5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgRW5jb2RpbmdM
ZW5ndGhVcHBlckJvdW5kKGRlbHRhX21heF9iaXRfd2lkdGhfLCBudW1fb2ZfdmFsdWVzXywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZG5lc3NfKSk7CisgIH0K
KworICAvLyBUZXN0IGZvY3VzIC0gYWxsIG9mIHRoZSBlbmNvZGluZ3Mgc2hvdWxkIGJlIHRoZSBz
YW1lLCBhcyB0aGV5IGFyZSBiYXNlZAorICAvLyBvbiB0aGUgc2FtZSBkZWx0YSBzZXF1ZW5jZSwg
YW5kIGRvIG5vdCBjb250YWluIGEgd3JhcC1hcm91bmQuCisgIGZvciAoc2l6ZV90IGkgPSAxOyBp
IDwgYXJyYXlzaXplKGVuY29kaW5ncyk7ICsraSkgeworICAgIEVYUEVDVF9FUShlbmNvZGluZ3Nb
aV0sIGVuY29kaW5nc1swXSk7CisgIH0KK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisg
ICAgU2lnbmVkbmVzc092ZXJyaWRlQW5kRGVsdGFNYXhCaXRXaWR0aEFuZE51bWJlck9mVmFsdWVz
SW5TZXF1ZW5jZSwKKyAgICBEZWx0YUVuY29kaW5nQ29tcHJlc3Npb25RdWFsaXR5VGVzdCwKKyAg
ICA6OnRlc3Rpbmc6OkNvbWJpbmUoCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKERlbHRhU2ln
bmVkbmVzczo6a05vT3ZlcnJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhU2ln
bmVkbmVzczo6a0ZvcmNlVW5zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlbHRh
U2lnbmVkbmVzczo6a0ZvcmNlU2lnbmVkKSwKKyAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoMSwg
NCwgOCwgMTUsIDE2LCAxNywgMzEsIDMyLCAzMywgNjMsIDY0KSwKKyAgICAgICAgOjp0ZXN0aW5n
OjpWYWx1ZXMoMSwgMiwgMTAwLCAxMDAwMCksCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDEx
LCAxMiwgMTMpKSk7CisKKy8vIFNpbWlsYXIgdG8gRGVsdGFFbmNvZGluZ1Rlc3QsIGJ1dCBpbnN0
ZWFkIG9mIHNlbWktc3VyZ2ljYWxseSBwcm9kdWNpbmcKKy8vIHNwZWNpZmljIGNhc2VzLCBwcm9k
dWNlIGxhcmdlIGFtb3VudCBvZiBzZW1pLXJlYWxpc3RpYyBpbnB1dHMuCitjbGFzcyBEZWx0YUVu
Y29kaW5nRnV6emVyTGlrZVRlc3QKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08CisgICAgICAgICAgc3RkOjp0dXBsZTxEZWx0YVNpZ25lZG5lc3MsIHVpbnQ2NF90LCB1aW50
NjRfdCwgYm9vbCwgdWludDY0X3Q+PiB7CisgcHVibGljOgorICBEZWx0YUVuY29kaW5nRnV6emVy
TGlrZVRlc3QoKQorICAgICAgOiBzaWduZWRuZXNzXyhzdGQ6OmdldDwwPihHZXRQYXJhbSgpKSks
CisgICAgICAgIGRlbHRhX21heF9iaXRfd2lkdGhfKHN0ZDo6Z2V0PDE+KEdldFBhcmFtKCkpKSwK
KyAgICAgICAgbnVtX29mX3ZhbHVlc18oc3RkOjpnZXQ8Mj4oR2V0UGFyYW0oKSkpLAorICAgICAg
ICBvcHRpb25hbF92YWx1ZXNfKHN0ZDo6Z2V0PDM+KEdldFBhcmFtKCkpKSwKKyAgICAgICAgcGFy
dGlhbF9yYW5kb21fc2VlZF8oc3RkOjpnZXQ8ND4oR2V0UGFyYW0oKSkpIHsKKyAgICBNYXliZVNl
dFNpZ25lZG5lc3Moc2lnbmVkbmVzc18pOworICB9CisKKyAgfkRlbHRhRW5jb2RpbmdGdXp6ZXJM
aWtlVGVzdCgpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworICAvLyBSdW5uaW5nIHdpdGggdGhlIHNh
bWUgc2VlZCBmb3IgYWxsIHZhcmlhbnRzIHdvdWxkIG1ha2UgYWxsIHRlc3RzIHN0YXJ0CisgIC8v
IHdpdGggdGhlIHNhbWUgc2VxdWVuY2U7IGF2b2lkIHRoaXMgYnkgbWFraW5nIHRoZSBzZWVkIGRp
ZmZlcmVudC4KKyAgdWludDY0X3QgU2VlZCgpIGNvbnN0IHsKKyAgICAvLyBNdWx0aXBseSBldmVy
eXRoaW5nIGJ1dCBieSBkaWZmZXJlbnQgcHJpbWVzIHRvIHByb2R1Y2UgdW5pcXVlIHJlc3VsdHMu
CisgICAgcmV0dXJuIDIgKiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2lnbmVkbmVzc18pICsgMyAq
IGRlbHRhX21heF9iaXRfd2lkdGhfICsKKyAgICAgICAgICAgNSAqIGRlbHRhX21heF9iaXRfd2lk
dGhfICsgNyAqIG51bV9vZl92YWx1ZXNfICsKKyAgICAgICAgICAgMTEgKiBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob3B0aW9uYWxfdmFsdWVzXykgKworICAgICAgICAgICAxMyAqIHBhcnRpYWxfcmFu
ZG9tX3NlZWRfOworICB9CisKKyAgY29uc3QgRGVsdGFTaWduZWRuZXNzIHNpZ25lZG5lc3NfOwor
ICBjb25zdCB1aW50NjRfdCBkZWx0YV9tYXhfYml0X3dpZHRoXzsKKyAgY29uc3QgdWludDY0X3Qg
bnVtX29mX3ZhbHVlc187CisgIGNvbnN0IGJvb2wgb3B0aW9uYWxfdmFsdWVzXzsKKyAgY29uc3Qg
dWludDY0X3QgcGFydGlhbF9yYW5kb21fc2VlZF87ICAvLyBFeHBsYWluZWQgd2hlcmUgaXQncyB1
c2VkLgorfTsKKworVEVTVF9QKERlbHRhRW5jb2RpbmdGdXp6ZXJMaWtlVGVzdCwgVGVzdCkgewor
ICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKworICBSYW5kb20g
cHJuZyhTZWVkKCkpOworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGRl
bHRhcyhudW1fb2ZfdmFsdWVzXyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVsdGFzLnNp
emUoKTsgKytpKSB7CisgICAgaWYgKCFvcHRpb25hbF92YWx1ZXNfIHx8IHBybmcuUmFuZDxib29s
PigpKSB7CisgICAgICBkZWx0YXNbaV0gPSBSYW5kb21XaXRoTWF4Qml0V2lkdGgoJnBybmcsIGRl
bHRhX21heF9iaXRfd2lkdGhfKTsKKyAgICB9CisgIH0KKyAgY29uc3QgYXV0byB2YWx1ZXMgPQor
ICAgICAgQ3JlYXRlU2VxdWVuY2VCeU9wdGlvbmFsRGVsdGFzKGJhc2UudmFsdWUoKSwgZGVsdGFz
LCBudW1fb2ZfdmFsdWVzXyk7CisKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFs
dWVzKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisgICAgU2lnbmVkbmVzc092ZXJy
aWRlQW5kRGVsdGFNYXhCaXRXaWR0aEFuZE51bWJlck9mVmFsdWVzSW5TZXF1ZW5jZSwKKyAgICBE
ZWx0YUVuY29kaW5nRnV6emVyTGlrZVRlc3QsCisgICAgOjp0ZXN0aW5nOjpDb21iaW5lKAorICAg
ICAgICA6OnRlc3Rpbmc6OlZhbHVlcyhEZWx0YVNpZ25lZG5lc3M6OmtOb092ZXJyaWRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBEZWx0YVNpZ25lZG5lc3M6OmtGb3JjZVVuc2lnbmVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBEZWx0YVNpZ25lZG5lc3M6OmtGb3JjZVNpZ25lZCks
CisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDEsIDQsIDgsIDE1LCAxNiwgMTcsIDMxLCAzMiwg
MzMsIDYzLCA2NCksCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDEsIDIsIDEwMCwgMTAwMDAp
LAorICAgICAgICA6OnRlc3Rpbmc6OkJvb2woKSwKKyAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMo
MjEsIDIyLCAyMykpKTsKKworY2xhc3MgRGVsdGFFbmNvZGluZ1NwZWNpZmljRWRnZUNhc2VzVGVz
dAorICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTwKKyAgICAgICAgICBzdGQ6
OnR1cGxlPERlbHRhU2lnbmVkbmVzcywgdWludDY0X3QsIGJvb2w+PiB7CisgcHVibGljOgorICBE
ZWx0YUVuY29kaW5nU3BlY2lmaWNFZGdlQ2FzZXNUZXN0KCkgeworICAgIFVuc2V0Rml4ZWRMZW5n
dGhFbmNvZGVyRGVsdGFTaWduZWRuZXNzRm9yVGVzdGluZygpOworICB9CisKKyAgfkRlbHRhRW5j
b2RpbmdTcGVjaWZpY0VkZ2VDYXNlc1Rlc3QoKSBvdmVycmlkZSA9IGRlZmF1bHQ7Cit9OworCisv
LyBUaGlzIGNhc2UgaXMgc3BlY2lhbCBiZWNhdXNlIGl0IHByb2R1Y2VzIGlkZW50aWNhbCBmb3J3
YXJkL2JhY2t3YXJkIGRlbHRhcy4KK1RFU1RfRihEZWx0YUVuY29kaW5nU3BlY2lmaWNFZGdlQ2Fz
ZXNUZXN0LCBTaWduZWREZWx0YVdpdGhPbmx5VG9wQml0T24pIHsKKyAgTWF5YmVTZXRTaWduZWRu
ZXNzKERlbHRhU2lnbmVkbmVzczo6a0ZvcmNlU2lnbmVkKTsKKworICBjb25zdCBhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKworICBjb25zdCB1aW50NjRfdCBkZWx0YSA9IHN0
YXRpY19jYXN0PHVpbnQ2NF90PigxKSA8PCA2MzsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMgPSB7YmFzZS52YWx1ZSgpICsgZGVsdGF9OworCisg
IFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKK1RFU1RfRihEZWx0
YUVuY29kaW5nU3BlY2lmaWNFZGdlQ2FzZXNUZXN0LCBNYXhpbXVtVW5zaWduZWREZWx0YSkgewor
ICBNYXliZVNldFNpZ25lZG5lc3MoRGVsdGFTaWduZWRuZXNzOjprRm9yY2VVbnNpZ25lZCk7CisK
KyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UoKHN0YXRpY19jYXN0PHVpbnQ2
NF90PigxKSA8PCA2MykgKyAweDEyMyk7CisKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0
aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMgPSB7YmFzZS52YWx1ZSgpIC0gMX07CisKKyAgVGVzdEVu
Y29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworLy8gQ2hlY2sgdGhhdCwgaWYg
YWxsIGRlbHRhcyBhcmUgc2V0IHRvIC0xLCB0aGluZ3Mgc3RpbGwgd29yay4KK1RFU1RfUChEZWx0
YUVuY29kaW5nU3BlY2lmaWNFZGdlQ2FzZXNUZXN0LCBSZXZlcnNlU2VxdWVuY2UpIHsKKyAgTWF5
YmVTZXRTaWduZWRuZXNzKHN0ZDo6Z2V0PDA+KEdldFBhcmFtKCkpKTsKKyAgY29uc3QgdWludDY0
X3Qgd2lkdGggPSBzdGQ6OmdldDwxPihHZXRQYXJhbSgpKTsKKyAgY29uc3QgYm9vbCB3cmFwX2Fy
b3VuZCA9IHN0ZDo6Z2V0PDI+KEdldFBhcmFtKCkpOworCisgIGNvbnN0IHVpbnQ2NF90IHZhbHVl
X21hc2sgPSAod2lkdGggPT0gNjQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PyBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6ICgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IHdpZHRoKSAt
IDEpOworCisgIGNvbnN0IHVpbnQ2NF90IGJhc2UgPSB3cmFwX2Fyb3VuZCA/IDF1IDogKDB4Zjgy
ZDMgJiB2YWx1ZV9tYXNrKTsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+PiB2YWx1ZXMgPSB7CisgICAgICAoYmFzZSAtIDF1KSAmIHZhbHVlX21hc2ssIChiYXNl
IC0gMnUpICYgdmFsdWVfbWFzaywKKyAgICAgIChiYXNlIC0gM3UpICYgdmFsdWVfbWFza307CisK
KyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoCisgICAgXywKKyAgICBEZWx0YUVuY29kaW5nU3BlY2lmaWNFZGdlQ2Fz
ZXNUZXN0LAorICAgIDo6dGVzdGluZzo6Q29tYmluZSgKKyAgICAgICAgOjp0ZXN0aW5nOjpWYWx1
ZXMoRGVsdGFTaWduZWRuZXNzOjprTm9PdmVycmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGVsdGFTaWduZWRuZXNzOjprRm9yY2VVbnNpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgRGVsdGFTaWduZWRuZXNzOjprRm9yY2VTaWduZWQpLAorICAgICAgICA6OnRlc3Rpbmc6
OlZhbHVlcygxLCA0LCA4LCAxNSwgMTYsIDE3LCAzMSwgMzIsIDMzLCA2MywgNjQpLAorICAgICAg
ICA6OnRlc3Rpbmc6OkJvb2woKSkpOworCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyLmgKaW5kZXggYmViNzEx
YzlkZDgyZjcyYjk1ZjVkYzg1ZjEwMmUxNjQ4MTE2ZjhiYi4uNmNlNzUwZjY3ZTc2MGExZGMyN2Vh
ZDhmNmQ4ZmJlYWEyZTM2ZWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50
X2xvZ19lbmNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVy
LmgKQEAgLTIyLDcgKzIyLDggQEAgY2xhc3MgUnRjRXZlbnRMb2dFbmNvZGVyIHsKICBwdWJsaWM6
CiAgIHZpcnR1YWwgflJ0Y0V2ZW50TG9nRW5jb2RlcigpID0gZGVmYXVsdDsKIAotICB2aXJ0dWFs
IHN0ZDo6c3RyaW5nIEVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3VzKSA9IDA7Cisg
IHZpcnR1YWwgc3RkOjpzdHJpbmcgRW5jb2RlTG9nU3RhcnQoaW50NjRfdCB0aW1lc3RhbXBfdXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB1dGNfdGltZV91
cykgPSAwOwogICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIEVuY29kZUxvZ0VuZChpbnQ2NF90IHRpbWVz
dGFtcF91cykgPSAwOwogCiAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgRW5jb2RlQmF0Y2goCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbi5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43YWVhNDc2MTFkNmMzZGE2YzU1NzM1YjI5NmY3YjE5ZWM5YmI0M2NhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbi5jYwpAQCAt
MCwwICsxLDQwIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImxvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb24uaCIKKwor
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVz
cGFjZSB7CisvLyBXZSB1c2UgMHgzZmZmIGJlY2F1c2UgdGhhdCBnaXZlcyBkZWNlbnQgcHJlY2lz
aW9uIChjb21wYXJlZCB0byB0aGUgdW5kZXJseWluZworLy8gbWVhc3VyZW1lbnQgcHJvZHVjaW5n
IHRoZSBwYWNrZXQgbG9zcyBmcmFjdGlvbikgb24gdGhlIG9uZSBoYW5kLCB3aGlsZQorLy8gYWxs
b3dpbmcgdXMgdG8gdXNlIG5vIG1vcmUgdGhhbiAyIGJ5dGVzIGluIHZhcmludCBmb3JtIG9uIHRo
ZSBvdGhlciBoYW5kLgorLy8gKFdlIG1pZ2h0IGFsc28gZml4ZWQtc2l6ZSBlbmNvZGUgdXNpbmcg
YXQgbW9zdCAxNCBiaXRzLikKK2NvbnN0ZXhwciB1aW50MzJfdCBrUGFja2V0TG9zc0ZyYWN0aW9u
UmFuZ2UgPSAoMSA8PCAxNCkgLSAxOyAgLy8gMHgzZmZmCitjb25zdGV4cHIgZmxvYXQga1BhY2tl
dExvc3NGcmFjdGlvblJhbmdlRmxvYXQgPQorICAgIHN0YXRpY19jYXN0PGZsb2F0PihrUGFja2V0
TG9zc0ZyYWN0aW9uUmFuZ2UpOworfSAgLy8gbmFtZXNwYWNlCisKK3VpbnQzMl90IENvbnZlcnRQ
YWNrZXRMb3NzRnJhY3Rpb25Ub1Byb3RvRm9ybWF0KGZsb2F0IHBhY2tldF9sb3NzX2ZyYWN0aW9u
KSB7CisgIFJUQ19EQ0hFQ0tfR0UocGFja2V0X2xvc3NfZnJhY3Rpb24sIDApOworICBSVENfRENI
RUNLX0xFKHBhY2tldF9sb3NzX2ZyYWN0aW9uLCAxKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQzMl90PihwYWNrZXRfbG9zc19mcmFjdGlvbiAqIGtQYWNrZXRMb3NzRnJhY3Rpb25SYW5nZSk7
Cit9CisKK2Jvb2wgUGFyc2VQYWNrZXRMb3NzRnJhY3Rpb25Gcm9tUHJvdG9Gb3JtYXQodWludDMy
X3QgcHJvdG9fcGFja2V0X2xvc3NfZnJhY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsb2F0KiBvdXRwdXQpIHsKKyAgaWYgKHByb3RvX3BhY2tldF9s
b3NzX2ZyYWN0aW9uID49IGtQYWNrZXRMb3NzRnJhY3Rpb25SYW5nZSkgeworICAgIHJldHVybiBm
YWxzZTsKKyAgfQorICAqb3V0cHV0ID0gcHJvdG9fcGFja2V0X2xvc3NfZnJhY3Rpb24gLyBrUGFj
a2V0TG9zc0ZyYWN0aW9uUmFuZ2VGbG9hdDsKKyAgcmV0dXJuIHRydWU7Cit9Cit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2Vu
Y29kZXJfY29tbW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29t
bW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDI5ZjhlZDJhZDczZmM1YTllYWFhNzZmY2RhMTIwZjVjYjUyYzY5
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rl
cl9jb21tb24uaApAQCAtMCwwICsxLDkzIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lm
bmRlZiBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9SVENfRVZFTlRfTE9HX0VOQ09ERVJf
Q09NTU9OX0hfCisjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX1JUQ19FVkVO
VF9MT0dfRU5DT0RFUl9DT01NT05fSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVk
ZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCituYW1lc3BhY2Ugd2VicnRjIHsK
KworLy8gQ29udmVydCBiZXR3ZWVuIHRoZSBwYWNrZXQgZnJhY3Rpb24gbG9zcyAoYSBmbG9hdGlu
ZyBwb2ludCBudW1iZXIgaW4KKy8vIHRoZSByYW5nZSBbMC4wLCAxLjBdKSwgYW5kIGEgdWludDMy
X3Qgd2l0aCB1cCB0byBhIGZpeGVkIG51bWJlciBvZiBiaXRzLgorLy8gVGhlIGxhdHRlciBjYW4g
YmUgbW9yZSBlZmZpY2llbnRseSBzdG9yZWQgaW4gYSBwcm90b2J1ZiBhbmQvb3IgZGVsdGEtZW5j
b2RlZC4KK3VpbnQzMl90IENvbnZlcnRQYWNrZXRMb3NzRnJhY3Rpb25Ub1Byb3RvRm9ybWF0KGZs
b2F0IHBhY2tldF9sb3NzX2ZyYWN0aW9uKTsKK2Jvb2wgUGFyc2VQYWNrZXRMb3NzRnJhY3Rpb25G
cm9tUHJvdG9Gb3JtYXQodWludDMyX3QgcHJvdG9fcGFja2V0X2xvc3NfZnJhY3Rpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBvdXRwdXQpOwor
Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKK25hbWVzcGFjZSB3ZWJydGNfZXZlbnRfbG9nZ2lu
ZyB7CisKKy8vIFByb2R1Y2UgYW4gdW5zaWduZWQgcmVwcmVzZW50YXRpb24gb2YgYSBzaWduZWQg
aW50ZWdlci4gT24gdHdvJ3MgY29tcGxlbWVudAorLy8gbWFjaGluZXMsIHRoaXMgaXMgZXF1aXZh
bGVudCB0bzoKKy8vIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxzdGQ6Om1ha2Vf
dW5zaWduZWQ8VD4+KHkpKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1aW50NjRfdCBUb1Vuc2ln
bmVkKFQgeSkgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCAi
Iik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zaWduZWQ8VD46OnZhbHVlLCAiIik7CisKKyAg
Ly8gTm90ZSB0aGF0IGEgc2lnbmVkIGludGVnZXIgd2hvc2Ugd2lkdGggaXMgTiBiaXRzLCBoYXMg
Ti0xIGRpZ2l0cy4KKyAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdp
dHMgPCA2NCwgIiIpOworCisgIGNvbnN0ZXhwciBUIE1JTl9UID0gc3RkOjpudW1lcmljX2xpbWl0
czxUPjo6bWluKCk7CisgIGNvbnN0ZXhwciBUIE1BWF9UID0gc3RkOjpudW1lcmljX2xpbWl0czxU
Pjo6bWF4KCk7CisKKyAgc3RhdGljX2Fzc2VydChNQVhfVCArIE1JTl9UICsgMSA+PSAwLCAiTUFY
X1QgPj0gYWJzKE1JTl9UKSAtIDEiKTsKKworICBpZiAoeSA+PSAwKSB7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih5KTsKKyAgfSBlbHNlIHsKKyAgICAvLyB5IGlzIGluIHRoZSBy
YW5nZSBbTUlOX1QsIC0xXSwgc28gKHkgLSBNSU5fVCkgaXMgaW4gdGhlCisgICAgLy8gcmFuZ2Ug
WzAsIGFicyhNSU5fVCkgLSAxXS4gVGhpcyBpcyByZXByZXNlbnRhYmxlIGluIGEgVAorICAgIC8v
IGJlY2F1c2UgTUFYX1QgPj0gYWJzKE1JTl9UKSAtIDEsIGFzIHBlciB0aGUgc3RhdGljX2Fzc2Vy
dCBhYm92ZS4KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KE1BWF9UKSArIDEgKyBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oeSAtIE1JTl9UKTsKKyAgfQorfQorCisvLyBBc3N1bWluZyB4
ID0gVG9VbnNpZ25lZCh5KSwgcmV0dXJuIHx5fC4KKy8vIE5vdGU6IHN0YXRpY19jYXN0PFQ+KHgp
IHdvdWxkIHdvcmsgb24gbW9zdCBwbGF0Zm9ybXMgYW5kIGNvbXBpbGVycywgYnV0CisvLyBpbnZv
bHZlcyB1bmRlZmluZWQgYmVoYXZpb3IuIFRoaXMgZnVuY3Rpb24gaXMgd2VsbC1kZWZpbmVkLCBh
bmQgY2FuIGJlCisvLyBvcHRpbWl6ZWQgdG8gYSBub29wIGZvciA2NCBiaXQgdHlwZXMsIG9yIGEg
ZmV3IGFyaXRobWV0aWMKKy8vIGluc3RydWN0aW9ucyBhbmQgYSBzaW5nbGUgY29uZGl0aW9uYWwg
anVtcCBmb3IgbmFycm93ZXIgdHlwZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgVG9T
aWduZWQodWludDY0X3QgeCwgVCogeSkgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdy
YWw8VD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zaWduZWQ8VD46OnZh
bHVlLCAiIik7CisKKyAgLy8gTm90ZSB0aGF0IGEgc2lnbmVkIGludGVnZXIgd2hvc2Ugd2lkdGgg
aXMgTiBiaXRzLCBoYXMgTi0xIGRpZ2l0cy4KKyAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNf
bGltaXRzPFQ+OjpkaWdpdHMgPCA2NCwgIiIpOworCisgIGNvbnN0ZXhwciBUIE1JTl9UID0gc3Rk
OjpudW1lcmljX2xpbWl0czxUPjo6bWluKCk7CisgIGNvbnN0ZXhwciBUIE1BWF9UID0gc3RkOjpu
dW1lcmljX2xpbWl0czxUPjo6bWF4KCk7CisKKyAgdXNpbmcgVU5TSUdORURfVCA9IHR5cGVuYW1l
IHN0ZDo6bWFrZV91bnNpZ25lZDxUPjo6dHlwZTsKKyAgY29uc3RleHByIGF1dG8gTUFYX1VOU0lH
TkVEX1QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFVOU0lHTkVEX1Q+OjptYXgoKTsKKyAgaWYgKHgg
PiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oTUFYX1VOU0lHTkVEX1QpKSB7CisgICAgcmV0dXJuIGZh
bHNlOyAgLy8gfHh8IGNhbm5vdCBiZSByZXByZXNlbnRlZCB1c2luZyBhIFQuCisgIH0KKworICBp
ZiAoeCA8PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oTUFYX1QpKSB7CisgICAgLy8gVGhlIG9yaWdp
bmFsIHZhbHVlIHdhcyBwb3NpdGl2ZSwgc28gaXQgaXMgc2FmZSB0byBqdXN0IHN0YXRpY19jYXN0
LgorICAgICp5ID0gc3RhdGljX2Nhc3Q8VD4oeCk7CisgIH0gZWxzZSB7ICAvLyB4ID4gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KE1BWF9UKQorICAgIGNvbnN0IHVpbnQ2NF90IG5lZ194ID0geCAtIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihNQVhfVCkgLSAxOworICAgICp5ID0gc3RhdGljX2Nhc3Q8VD4o
bmVnX3gpICsgTUlOX1Q7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0Y19ldmVudF9sb2dnaW5nCisKKyNlbmRpZiAgLy8gTE9HR0lOR19SVENfRVZFTlRf
TE9HX0VOQ09ERVJfUlRDX0VWRU5UX0xPR19FTkNPREVSX0NPTU1PTl9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbl91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb25fdW5pdHRlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTdkOTQ0MDZhZTBkMmY2ZTFjYjFlNjU2YTcxZjhiNDcxZTgzZmNkYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21t
b25fdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
KyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2Vu
Y29kZXJfY29tbW9uLmgiCisKKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCituYW1l
c3BhY2Ugd2VicnRjX2V2ZW50X2xvZ2dpbmcgeworbmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBTaWduZWRuZXNzQ29udmVyc2lvblRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CisgcHVibGljOgorICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8VD46
OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zaWduZWQ8VD46OnZhbHVlLCAi
Iik7Cit9OworCitUWVBFRF9URVNUX0NBU0VfUChTaWduZWRuZXNzQ29udmVyc2lvblRlc3QpOwor
CitUWVBFRF9URVNUX1AoU2lnbmVkbmVzc0NvbnZlcnNpb25UZXN0LCBDb3JyZWN0bHlDb252ZXJ0
c0xlZ2FsVmFsdWVzKSB7CisgIHVzaW5nIFQgPSBUeXBlUGFyYW07CisgIHN0ZDo6dmVjdG9yPFQ+
IGxlZ2FsX3ZhbHVlcyA9IHtzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbigpICsg
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+
OjptYXgoKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVy
aWNfbGltaXRzPFQ+OjptYXgoKX07CisgIGZvciAoVCB2YWwgOiBsZWdhbF92YWx1ZXMpIHsKKyAg
ICBjb25zdCBhdXRvIHVuc2lnbmVkX3ZhbCA9IFRvVW5zaWduZWQodmFsKTsKKyAgICBUIHNpZ25l
ZF92YWw7CisgICAgQVNTRVJUX1RSVUUoVG9TaWduZWQ8VD4odW5zaWduZWRfdmFsLCAmc2lnbmVk
X3ZhbCkpCisgICAgICAgIDw8ICJGYWlsZWQgb24gIiA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
dW5zaWduZWRfdmFsKSA8PCAiLiI7CisgICAgRVhQRUNUX0VRKHZhbCwgc2lnbmVkX3ZhbCkKKyAg
ICAgICAgPDwgIkZhaWxlZCBvbiAiIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bnNpZ25lZF92
YWwpIDw8ICIuIjsKKyAgfQorfQorCitUWVBFRF9URVNUX1AoU2lnbmVkbmVzc0NvbnZlcnNpb25U
ZXN0LCBGYWlsc09uQ29udmVydGluZ0lsbGVnYWxWYWx1ZXMpIHsKKyAgdXNpbmcgVCA9IFR5cGVQ
YXJhbTsKKworICAvLyBOb3RlIHRoYXQgYSBzaWduZWQgaW50ZWdlciB3aG9zZSB3aWR0aCBpcyBO
IGJpdHMsIGhhcyBOLTEgZGlnaXRzLgorICBjb25zdGV4cHIgYm9vbCB3aWR0aF9pc182NCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cyA9PSA2MzsKKworICBpZiAod2lkdGhfaXNfNjQp
IHsKKyAgICByZXR1cm47ICAvLyBUZXN0IGlycmVsZXZhbnQ7IGlsbGVnYWwgdmFsdWVzIGRvIG5v
dCBleGlzdC4KKyAgfQorCisgIGNvbnN0IHVpbnQ2NF90IG1heF9sZWdhbF92YWx1ZSA9IFRvVW5z
aWduZWQoc3RhdGljX2Nhc3Q8VD4oLTEpKTsKKworICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50NjRf
dD4gaWxsZWdhbF92YWx1ZXMgPSB7CisgICAgICBtYXhfbGVnYWxfdmFsdWUgKyAxdSwgbWF4X2xl
Z2FsX3ZhbHVlICsgMnUsCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCkgLSAxdSwKKyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKX07CisK
KyAgZm9yICh1aW50NjRfdCB1bnNpZ25lZF92YWwgOiBpbGxlZ2FsX3ZhbHVlcykgeworICAgIFQg
c2lnbmVkX3ZhbDsKKyAgICBFWFBFQ1RfRkFMU0UoVG9TaWduZWQ8VD4odW5zaWduZWRfdmFsLCAm
c2lnbmVkX3ZhbCkpCisgICAgICAgIDw8ICJGYWlsZWQgb24gIiA8PCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4odW5zaWduZWRfdmFsKSA8PCAiLiI7CisgIH0KK30KKworUkVHSVNURVJfVFlQRURfVEVT
VF9DQVNFX1AoU2lnbmVkbmVzc0NvbnZlcnNpb25UZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ29ycmVjdGx5Q29udmVydHNMZWdhbFZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZhaWxzT25Db252ZXJ0aW5nSWxsZWdhbFZhbHVlcyk7CisKK3VzaW5nIFR5cGVzID0g
Ojp0ZXN0aW5nOjpUeXBlczxpbnQ4X3QsIGludDE2X3QsIGludDMyX3QsIGludDY0X3Q+OworCitJ
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChfLCBTaWduZWRuZXNzQ29udmVyc2lvblRlc3Qs
IFR5cGVzKTsKKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjX2V2ZW50
X2xvZ2dpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rl
cl9sZWdhY3kuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbGVnYWN5
LmNjCmluZGV4IDdlZjhkNjc3YzYwOTA3MmUxMDZiMDRlNzI1MWQ2YjJhNDhjZWU4ZDAuLjI5NjM2
ZWRlOTIyZjJkNDQ5MjhlMzczMGQxZTI1ZTZjMmFiN2Y2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
bmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9sZWdhY3kuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29k
ZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5jYwpAQCAtNDcsNyArNDcsNiBAQAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2lnbm9yZV93dW5kZWYuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nLmgiCiAKLSNpZmRlZiBFTkFCTEVfUlRDX0VWRU5UX0xPRwogCiAvLyAqLnBiLmggZmlsZXMg
YXJlIGdlbmVyYXRlZCBhdCBidWlsZC10aW1lIGJ5IHRoZSBwcm90b2J1ZiBjb21waWxlci4KIFJU
Q19QVVNIX0lHTk9SSU5HX1dVTkRFRigpCkBAIC0yMjMsNyArMjIyLDggQEAgQ29udmVydEljZUNh
bmRpZGF0ZVBhaXJFdmVudFR5cGUoSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSB0eXBlKSB7CiAK
IH0gIC8vIG5hbWVzcGFjZQogCi1zdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6
OkVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3VzKSB7CitzdGQ6OnN0cmluZyBSdGNF
dmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90IHV0Y190aW1lX3VzKSB7CiAgIHJ0Y2xvZzo6RXZlbnQgcnRjbG9nX2V2ZW50OwogICBy
dGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpOwogICBydGNsb2dfZXZl
bnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6TE9HX1NUQVJUKTsKQEAgLTM1NywzNyArMzU3LDM3
IEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlKGNvbnN0IFJ0
Y0V2ZW50JiBldmVudCkgewogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpF
bmNvZGVBbHJTdGF0ZSgKICAgICBjb25zdCBSdGNFdmVudEFsclN0YXRlJiBldmVudCkgewogICBy
dGNsb2c6OkV2ZW50IHJ0Y2xvZ19ldmVudDsKLSAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBf
dXMoZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3Vz
KGV2ZW50LnRpbWVzdGFtcF91cygpKTsKICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6
RXZlbnQ6OkFMUl9TVEFURV9FVkVOVCk7CiAKICAgYXV0byogYWxyX3N0YXRlID0gcnRjbG9nX2V2
ZW50Lm11dGFibGVfYWxyX3N0YXRlKCk7Ci0gIGFscl9zdGF0ZS0+c2V0X2luX2FscihldmVudC5p
bl9hbHJfKTsKKyAgYWxyX3N0YXRlLT5zZXRfaW5fYWxyKGV2ZW50LmluX2FscigpKTsKICAgcmV0
dXJuIFNlcmlhbGl6ZSgmcnRjbG9nX2V2ZW50KTsKIH0KIAogc3RkOjpzdHJpbmcgUnRjRXZlbnRM
b2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAogICAgIGNvbnN0
IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVu
dCBydGNsb2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRp
bWVzdGFtcF91c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1l
c3RhbXBfdXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpBVURJ
T19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQpOwogCiAgIGF1dG8qIGF1ZGlvX25ldHdvcmtfYWRh
cHRhdGlvbiA9CiAgICAgICBydGNsb2dfZXZlbnQubXV0YWJsZV9hdWRpb19uZXR3b3JrX2FkYXB0
YXRpb24oKTsKLSAgaWYgKGV2ZW50LmNvbmZpZ18tPmJpdHJhdGVfYnBzKQotICAgIGF1ZGlvX25l
dHdvcmtfYWRhcHRhdGlvbi0+c2V0X2JpdHJhdGVfYnBzKCpldmVudC5jb25maWdfLT5iaXRyYXRl
X2Jwcyk7Ci0gIGlmIChldmVudC5jb25maWdfLT5mcmFtZV9sZW5ndGhfbXMpCisgIGlmIChldmVu
dC5jb25maWcoKS5iaXRyYXRlX2JwcykKKyAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb24tPnNl
dF9iaXRyYXRlX2JwcygqZXZlbnQuY29uZmlnKCkuYml0cmF0ZV9icHMpOworICBpZiAoZXZlbnQu
Y29uZmlnKCkuZnJhbWVfbGVuZ3RoX21zKQogICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi0+
c2V0X2ZyYW1lX2xlbmd0aF9tcygKLSAgICAgICAgKmV2ZW50LmNvbmZpZ18tPmZyYW1lX2xlbmd0
aF9tcyk7Ci0gIGlmIChldmVudC5jb25maWdfLT51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24p
IHsKKyAgICAgICAgKmV2ZW50LmNvbmZpZygpLmZyYW1lX2xlbmd0aF9tcyk7CisgIGlmIChldmVu
dC5jb25maWcoKS51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24pIHsKICAgICBhdWRpb19uZXR3
b3JrX2FkYXB0YXRpb24tPnNldF91cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24oCi0gICAgICAg
ICpldmVudC5jb25maWdfLT51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24pOworICAgICAgICAq
ZXZlbnQuY29uZmlnKCkudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKTsKICAgfQotICBpZiAo
ZXZlbnQuY29uZmlnXy0+ZW5hYmxlX2ZlYykKLSAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb24t
PnNldF9lbmFibGVfZmVjKCpldmVudC5jb25maWdfLT5lbmFibGVfZmVjKTsKLSAgaWYgKGV2ZW50
LmNvbmZpZ18tPmVuYWJsZV9kdHgpCi0gICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRf
ZW5hYmxlX2R0eCgqZXZlbnQuY29uZmlnXy0+ZW5hYmxlX2R0eCk7Ci0gIGlmIChldmVudC5jb25m
aWdfLT5udW1fY2hhbm5lbHMpCi0gICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfbnVt
X2NoYW5uZWxzKCpldmVudC5jb25maWdfLT5udW1fY2hhbm5lbHMpOworICBpZiAoZXZlbnQuY29u
ZmlnKCkuZW5hYmxlX2ZlYykKKyAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb24tPnNldF9lbmFi
bGVfZmVjKCpldmVudC5jb25maWcoKS5lbmFibGVfZmVjKTsKKyAgaWYgKGV2ZW50LmNvbmZpZygp
LmVuYWJsZV9kdHgpCisgICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfZW5hYmxlX2R0
eCgqZXZlbnQuY29uZmlnKCkuZW5hYmxlX2R0eCk7CisgIGlmIChldmVudC5jb25maWcoKS5udW1f
Y2hhbm5lbHMpCisgICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfbnVtX2NoYW5uZWxz
KCpldmVudC5jb25maWcoKS5udW1fY2hhbm5lbHMpOwogCiAgIHJldHVybiBTZXJpYWxpemUoJnJ0
Y2xvZ19ldmVudCk7CiB9CkBAIC0zOTUsMTEgKzM5NSwxMSBAQCBzdGQ6OnN0cmluZyBSdGNFdmVu
dExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUF1ZGlvTmV0d29ya0FkYXB0YXRpb24oCiBzdGQ6OnN0
cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUF1ZGlvUGxheW91dCgKICAgICBj
b25zdCBSdGNFdmVudEF1ZGlvUGxheW91dCYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNs
b2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFt
cF91c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBf
dXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpBVURJT19QTEFZ
T1VUX0VWRU5UKTsKIAogICBhdXRvKiBwbGF5b3V0X2V2ZW50ID0gcnRjbG9nX2V2ZW50Lm11dGFi
bGVfYXVkaW9fcGxheW91dF9ldmVudCgpOwotICBwbGF5b3V0X2V2ZW50LT5zZXRfbG9jYWxfc3Ny
YyhldmVudC5zc3JjXyk7CisgIHBsYXlvdXRfZXZlbnQtPnNldF9sb2NhbF9zc3JjKGV2ZW50LnNz
cmMoKSk7CiAKICAgcmV0dXJuIFNlcmlhbGl6ZSgmcnRjbG9nX2V2ZW50KTsKIH0KQEAgLTQwNywx
NSArNDA3LDE1IEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2Rl
QXVkaW9QbGF5b3V0KAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNv
ZGVBdWRpb1JlY2VpdmVTdHJlYW1Db25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb1JlY2Vp
dmVTdHJlYW1Db25maWcmIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZlbnQgcnRjbG9nX2V2ZW50Owot
ICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXNfKTsKKyAg
cnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwogICBy
dGNsb2dfZXZlbnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6QVVESU9fUkVDRUlWRVJfQ09ORklH
X0VWRU5UKTsKIAogICBydGNsb2c6OkF1ZGlvUmVjZWl2ZUNvbmZpZyogcmVjZWl2ZXJfY29uZmln
ID0KICAgICAgIHJ0Y2xvZ19ldmVudC5tdXRhYmxlX2F1ZGlvX3JlY2VpdmVyX2NvbmZpZygpOwot
ICByZWNlaXZlcl9jb25maWctPnNldF9yZW1vdGVfc3NyYyhldmVudC5jb25maWdfLT5yZW1vdGVf
c3NyYyk7Ci0gIHJlY2VpdmVyX2NvbmZpZy0+c2V0X2xvY2FsX3NzcmMoZXZlbnQuY29uZmlnXy0+
bG9jYWxfc3NyYyk7CisgIHJlY2VpdmVyX2NvbmZpZy0+c2V0X3JlbW90ZV9zc3JjKGV2ZW50LmNv
bmZpZygpLnJlbW90ZV9zc3JjKTsKKyAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfbG9jYWxfc3NyYyhl
dmVudC5jb25maWcoKS5sb2NhbF9zc3JjKTsKIAotICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVu
dC5jb25maWdfLT5ydHBfZXh0ZW5zaW9ucykgeworICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVu
dC5jb25maWcoKS5ydHBfZXh0ZW5zaW9ucykgewogICAgIHJ0Y2xvZzo6UnRwSGVhZGVyRXh0ZW5z
aW9uKiBleHRlbnNpb24gPQogICAgICAgICByZWNlaXZlcl9jb25maWctPmFkZF9oZWFkZXJfZXh0
ZW5zaW9ucygpOwogICAgIGV4dGVuc2lvbi0+c2V0X25hbWUoZS51cmkpOwpAQCAtNDI4LDE1ICs0
MjgsMTUgQEAgc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVBdWRp
b1JlY2VpdmVTdHJlYW1Db25maWcoCiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdh
Y3k6OkVuY29kZUF1ZGlvU2VuZFN0cmVhbUNvbmZpZygKICAgICBjb25zdCBSdGNFdmVudEF1ZGlv
U2VuZFN0cmVhbUNvbmZpZyYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7
Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOwor
ICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAg
IHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpBVURJT19TRU5ERVJfQ09ORklH
X0VWRU5UKTsKIAogICBydGNsb2c6OkF1ZGlvU2VuZENvbmZpZyogc2VuZGVyX2NvbmZpZyA9CiAg
ICAgICBydGNsb2dfZXZlbnQubXV0YWJsZV9hdWRpb19zZW5kZXJfY29uZmlnKCk7CiAKLSAgc2Vu
ZGVyX2NvbmZpZy0+c2V0X3NzcmMoZXZlbnQuY29uZmlnXy0+bG9jYWxfc3NyYyk7CisgIHNlbmRl
cl9jb25maWctPnNldF9zc3JjKGV2ZW50LmNvbmZpZygpLmxvY2FsX3NzcmMpOwogCi0gIGZvciAo
Y29uc3QgYXV0byYgZSA6IGV2ZW50LmNvbmZpZ18tPnJ0cF9leHRlbnNpb25zKSB7CisgIGZvciAo
Y29uc3QgYXV0byYgZSA6IGV2ZW50LmNvbmZpZygpLnJ0cF9leHRlbnNpb25zKSB7CiAgICAgcnRj
bG9nOjpSdHBIZWFkZXJFeHRlbnNpb24qIGV4dGVuc2lvbiA9CiAgICAgICAgIHNlbmRlcl9jb25m
aWctPmFkZF9oZWFkZXJfZXh0ZW5zaW9ucygpOwogICAgIGV4dGVuc2lvbi0+c2V0X25hbWUoZS51
cmkpOwpAQCAtNDQ5LDEyICs0NDksMTIgQEAgc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVy
TGVnYWN5OjpFbmNvZGVBdWRpb1NlbmRTdHJlYW1Db25maWcoCiBzdGQ6OnN0cmluZyBSdGNFdmVu
dExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUJ3ZVVwZGF0ZURlbGF5QmFzZWQoCiAgICAgY29uc3Qg
UnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkJiBldmVudCkgewogICBydGNsb2c6OkV2ZW50IHJ0
Y2xvZ19ldmVudDsKLSAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0
YW1wX3VzXyk7CisgIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFt
cF91cygpKTsKICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZlbnQ6OkRFTEFZX0JB
U0VEX0JXRV9VUERBVEUpOwogCiAgIGF1dG8qIGJ3ZV9ldmVudCA9IHJ0Y2xvZ19ldmVudC5tdXRh
YmxlX2RlbGF5X2Jhc2VkX2J3ZV91cGRhdGUoKTsKLSAgYndlX2V2ZW50LT5zZXRfYml0cmF0ZV9i
cHMoZXZlbnQuYml0cmF0ZV9icHNfKTsKLSAgYndlX2V2ZW50LT5zZXRfZGV0ZWN0b3Jfc3RhdGUo
Q29udmVydERldGVjdG9yU3RhdGUoZXZlbnQuZGV0ZWN0b3Jfc3RhdGVfKSk7CisgIGJ3ZV9ldmVu
dC0+c2V0X2JpdHJhdGVfYnBzKGV2ZW50LmJpdHJhdGVfYnBzKCkpOworICBid2VfZXZlbnQtPnNl
dF9kZXRlY3Rvcl9zdGF0ZShDb252ZXJ0RGV0ZWN0b3JTdGF0ZShldmVudC5kZXRlY3Rvcl9zdGF0
ZSgpKSk7CiAKICAgcmV0dXJuIFNlcmlhbGl6ZSgmcnRjbG9nX2V2ZW50KTsKIH0KQEAgLTQ2Miwx
MyArNDYyLDEzIEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2Rl
QndlVXBkYXRlRGVsYXlCYXNlZCgKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2Fj
eTo6RW5jb2RlQndlVXBkYXRlTG9zc0Jhc2VkKAogICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRl
TG9zc0Jhc2VkJiBldmVudCkgewogICBydGNsb2c6OkV2ZW50IHJ0Y2xvZ19ldmVudDsKLSAgcnRj
bG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIHJ0Y2xv
Z19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91cygpKTsKICAgcnRjbG9n
X2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZlbnQ6OkxPU1NfQkFTRURfQldFX1VQREFURSk7CiAK
ICAgYXV0byogYndlX2V2ZW50ID0gcnRjbG9nX2V2ZW50Lm11dGFibGVfbG9zc19iYXNlZF9id2Vf
dXBkYXRlKCk7Ci0gIGJ3ZV9ldmVudC0+c2V0X2JpdHJhdGVfYnBzKGV2ZW50LmJpdHJhdGVfYnBz
Xyk7Ci0gIGJ3ZV9ldmVudC0+c2V0X2ZyYWN0aW9uX2xvc3MoZXZlbnQuZnJhY3Rpb25fbG9zc18p
OwotICBid2VfZXZlbnQtPnNldF90b3RhbF9wYWNrZXRzKGV2ZW50LnRvdGFsX3BhY2tldHNfKTsK
KyAgYndlX2V2ZW50LT5zZXRfYml0cmF0ZV9icHMoZXZlbnQuYml0cmF0ZV9icHMoKSk7CisgIGJ3
ZV9ldmVudC0+c2V0X2ZyYWN0aW9uX2xvc3MoZXZlbnQuZnJhY3Rpb25fbG9zcygpKTsKKyAgYndl
X2V2ZW50LT5zZXRfdG90YWxfcGFja2V0cyhldmVudC50b3RhbF9wYWNrZXRzKCkpOwogCiAgIHJl
dHVybiBTZXJpYWxpemUoJnJ0Y2xvZ19ldmVudCk7CiB9CkBAIC00NzYsMTUgKzQ3NiwxNSBAQCBz
dGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUJ3ZVVwZGF0ZUxvc3NC
YXNlZCgKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlSWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZygKICAgICBjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25m
aWcmIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZlbnQgZW5jb2RlZF9ydGNfZXZlbnQ7Ci0gIGVuY29k
ZWRfcnRjX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIGVu
Y29kZWRfcnRjX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwog
ICBlbmNvZGVkX3J0Y19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpJQ0VfQ0FORElEQVRF
X1BBSVJfQ09ORklHKTsKIAogICBhdXRvKiBlbmNvZGVkX2ljZV9ldmVudCA9CiAgICAgICBlbmNv
ZGVkX3J0Y19ldmVudC5tdXRhYmxlX2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWcoKTsKICAgZW5j
b2RlZF9pY2VfZXZlbnQtPnNldF9jb25maWdfdHlwZSgKLSAgICAgIENvbnZlcnRJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnVHlwZShldmVudC50eXBlXykpOwotICBlbmNvZGVkX2ljZV9ldmVudC0+c2V0
X2NhbmRpZGF0ZV9wYWlyX2lkKGV2ZW50LmNhbmRpZGF0ZV9wYWlyX2lkXyk7Ci0gIGNvbnN0IGF1
dG8mIGRlc2MgPSBldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjXzsKKyAgICAgIENvbnZlcnRJY2VD
YW5kaWRhdGVQYWlyQ29uZmlnVHlwZShldmVudC50eXBlKCkpKTsKKyAgZW5jb2RlZF9pY2VfZXZl
bnQtPnNldF9jYW5kaWRhdGVfcGFpcl9pZChldmVudC5jYW5kaWRhdGVfcGFpcl9pZCgpKTsKKyAg
Y29uc3QgYXV0byYgZGVzYyA9IGV2ZW50LmNhbmRpZGF0ZV9wYWlyX2Rlc2MoKTsKICAgZW5jb2Rl
ZF9pY2VfZXZlbnQtPnNldF9sb2NhbF9jYW5kaWRhdGVfdHlwZSgKICAgICAgIENvbnZlcnRJY2VD
YW5kaWRhdGVUeXBlKGRlc2MubG9jYWxfY2FuZGlkYXRlX3R5cGUpKTsKICAgZW5jb2RlZF9pY2Vf
ZXZlbnQtPnNldF9sb2NhbF9yZWxheV9wcm90b2NvbCgKQEAgLTUwNSwyOCArNTA1LDI4IEBAIHN0
ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlSWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZygKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlSWNl
Q2FuZGlkYXRlUGFpckV2ZW50KAogICAgIGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpciYg
ZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBlbmNvZGVkX3J0Y19ldmVudDsKLSAgZW5jb2RlZF9y
dGNfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXNfKTsKKyAgZW5jb2Rl
ZF9ydGNfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIGVu
Y29kZWRfcnRjX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJ
Ul9FVkVOVCk7CiAKICAgYXV0byogZW5jb2RlZF9pY2VfZXZlbnQgPQogICAgICAgZW5jb2RlZF9y
dGNfZXZlbnQubXV0YWJsZV9pY2VfY2FuZGlkYXRlX3BhaXJfZXZlbnQoKTsKICAgZW5jb2RlZF9p
Y2VfZXZlbnQtPnNldF9ldmVudF90eXBlKAotICAgICAgQ29udmVydEljZUNhbmRpZGF0ZVBhaXJF
dmVudFR5cGUoZXZlbnQudHlwZV8pKTsKLSAgZW5jb2RlZF9pY2VfZXZlbnQtPnNldF9jYW5kaWRh
dGVfcGFpcl9pZChldmVudC5jYW5kaWRhdGVfcGFpcl9pZF8pOworICAgICAgQ29udmVydEljZUNh
bmRpZGF0ZVBhaXJFdmVudFR5cGUoZXZlbnQudHlwZSgpKSk7CisgIGVuY29kZWRfaWNlX2V2ZW50
LT5zZXRfY2FuZGlkYXRlX3BhaXJfaWQoZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQoKSk7CiAgIHJl
dHVybiBTZXJpYWxpemUoJmVuY29kZWRfcnRjX2V2ZW50KTsKIH0KIAogc3RkOjpzdHJpbmcgUnRj
RXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVQcm9iZUNsdXN0ZXJDcmVhdGVkKAogICAgIGNv
bnN0IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVu
dCBydGNsb2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRp
bWVzdGFtcF91c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1l
c3RhbXBfdXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpCV0Vf
UFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0VWRU5UKTsKIAogICBhdXRvKiBwcm9iZV9jbHVzdGVyID0g
cnRjbG9nX2V2ZW50Lm11dGFibGVfcHJvYmVfY2x1c3RlcigpOwotICBwcm9iZV9jbHVzdGVyLT5z
ZXRfaWQoZXZlbnQuaWRfKTsKLSAgcHJvYmVfY2x1c3Rlci0+c2V0X2JpdHJhdGVfYnBzKGV2ZW50
LmJpdHJhdGVfYnBzXyk7Ci0gIHByb2JlX2NsdXN0ZXItPnNldF9taW5fcGFja2V0cyhldmVudC5t
aW5fcHJvYmVzXyk7Ci0gIHByb2JlX2NsdXN0ZXItPnNldF9taW5fYnl0ZXMoZXZlbnQubWluX2J5
dGVzXyk7CisgIHByb2JlX2NsdXN0ZXItPnNldF9pZChldmVudC5pZCgpKTsKKyAgcHJvYmVfY2x1
c3Rlci0+c2V0X2JpdHJhdGVfYnBzKGV2ZW50LmJpdHJhdGVfYnBzKCkpOworICBwcm9iZV9jbHVz
dGVyLT5zZXRfbWluX3BhY2tldHMoZXZlbnQubWluX3Byb2JlcygpKTsKKyAgcHJvYmVfY2x1c3Rl
ci0+c2V0X21pbl9ieXRlcyhldmVudC5taW5fYnl0ZXMoKSk7CiAKICAgcmV0dXJuIFNlcmlhbGl6
ZSgmcnRjbG9nX2V2ZW50KTsKIH0KQEAgLTUzNCwxMiArNTM0LDEyIEBAIHN0ZDo6c3RyaW5nIFJ0
Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlUHJvYmVDbHVzdGVyQ3JlYXRlZCgKIHN0ZDo6
c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlUHJvYmVSZXN1bHRGYWlsdXJl
KAogICAgIGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlJiBldmVudCkgewogICBydGNs
b2c6OkV2ZW50IHJ0Y2xvZ19ldmVudDsKLSAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMo
ZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2
ZW50LnRpbWVzdGFtcF91cygpKTsKICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZl
bnQ6OkJXRV9QUk9CRV9SRVNVTFRfRVZFTlQpOwogCiAgIGF1dG8qIHByb2JlX3Jlc3VsdCA9IHJ0
Y2xvZ19ldmVudC5tdXRhYmxlX3Byb2JlX3Jlc3VsdCgpOwotICBwcm9iZV9yZXN1bHQtPnNldF9p
ZChldmVudC5pZF8pOwotICBwcm9iZV9yZXN1bHQtPnNldF9yZXN1bHQoQ29udmVydFByb2JlUmVz
dWx0VHlwZShldmVudC5mYWlsdXJlX3JlYXNvbl8pKTsKKyAgcHJvYmVfcmVzdWx0LT5zZXRfaWQo
ZXZlbnQuaWQoKSk7CisgIHByb2JlX3Jlc3VsdC0+c2V0X3Jlc3VsdChDb252ZXJ0UHJvYmVSZXN1
bHRUeXBlKGV2ZW50LmZhaWx1cmVfcmVhc29uKCkpKTsKIAogICByZXR1cm4gU2VyaWFsaXplKCZy
dGNsb2dfZXZlbnQpOwogfQpAQCAtNTQ3LDcwICs1NDcsNzEgQEAgc3RkOjpzdHJpbmcgUnRjRXZl
bnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVQcm9iZVJlc3VsdEZhaWx1cmUoCiBzdGQ6OnN0cmlu
ZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZVByb2JlUmVzdWx0U3VjY2VzcygKICAg
ICBjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2VzcyYgZXZlbnQpIHsKICAgcnRjbG9nOjpF
dmVudCBydGNsb2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50
LnRpbWVzdGFtcF91c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50
aW1lc3RhbXBfdXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpC
V0VfUFJPQkVfUkVTVUxUX0VWRU5UKTsKIAogICBhdXRvKiBwcm9iZV9yZXN1bHQgPSBydGNsb2df
ZXZlbnQubXV0YWJsZV9wcm9iZV9yZXN1bHQoKTsKLSAgcHJvYmVfcmVzdWx0LT5zZXRfaWQoZXZl
bnQuaWRfKTsKKyAgcHJvYmVfcmVzdWx0LT5zZXRfaWQoZXZlbnQuaWQoKSk7CiAgIHByb2JlX3Jl
c3VsdC0+c2V0X3Jlc3VsdChydGNsb2c6OkJ3ZVByb2JlUmVzdWx0OjpTVUNDRVNTKTsKLSAgcHJv
YmVfcmVzdWx0LT5zZXRfYml0cmF0ZV9icHMoZXZlbnQuYml0cmF0ZV9icHNfKTsKKyAgcHJvYmVf
cmVzdWx0LT5zZXRfYml0cmF0ZV9icHMoZXZlbnQuYml0cmF0ZV9icHMoKSk7CiAKICAgcmV0dXJu
IFNlcmlhbGl6ZSgmcnRjbG9nX2V2ZW50KTsKIH0KIAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dF
bmNvZGVyTGVnYWN5OjpFbmNvZGVSdGNwUGFja2V0SW5jb21pbmcoCiAgICAgY29uc3QgUnRjRXZl
bnRSdGNwUGFja2V0SW5jb21pbmcmIGV2ZW50KSB7Ci0gIHJldHVybiBFbmNvZGVSdGNwUGFja2V0
KGV2ZW50LnRpbWVzdGFtcF91c18sIGV2ZW50LnBhY2tldF8sIHRydWUpOworICByZXR1cm4gRW5j
b2RlUnRjcFBhY2tldChldmVudC50aW1lc3RhbXBfdXMoKSwgZXZlbnQucGFja2V0KCksIHRydWUp
OwogfQogCiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZVJ0Y3BQ
YWNrZXRPdXRnb2luZygKICAgICBjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZyYgZXZl
bnQpIHsKLSAgcmV0dXJuIEVuY29kZVJ0Y3BQYWNrZXQoZXZlbnQudGltZXN0YW1wX3VzXywgZXZl
bnQucGFja2V0XywgZmFsc2UpOworICByZXR1cm4gRW5jb2RlUnRjcFBhY2tldChldmVudC50aW1l
c3RhbXBfdXMoKSwgZXZlbnQucGFja2V0KCksIGZhbHNlKTsKIH0KIAogc3RkOjpzdHJpbmcgUnRj
RXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVSdHBQYWNrZXRJbmNvbWluZygKICAgICBjb25z
dCBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nJiBldmVudCkgewotICByZXR1cm4gRW5jb2RlUnRw
UGFja2V0KGV2ZW50LnRpbWVzdGFtcF91c18sIGV2ZW50LmhlYWRlcl8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgZXZlbnQucGFja2V0X2xlbmd0aF8sIFBhY2VkUGFja2V0SW5mbzo6a05vdEFQ
cm9iZSwKKyAgcmV0dXJuIEVuY29kZVJ0cFBhY2tldChldmVudC50aW1lc3RhbXBfdXMoKSwgZXZl
bnQuaGVhZGVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucGFja2V0X2xlbmd0
aCgpLCBQYWNlZFBhY2tldEluZm86OmtOb3RBUHJvYmUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJ1ZSk7CiB9CiAKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5j
b2RlUnRwUGFja2V0T3V0Z29pbmcoCiAgICAgY29uc3QgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2lu
ZyYgZXZlbnQpIHsKLSAgcmV0dXJuIEVuY29kZVJ0cFBhY2tldChldmVudC50aW1lc3RhbXBfdXNf
LCBldmVudC5oZWFkZXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnBhY2tldF9s
ZW5ndGhfLCBldmVudC5wcm9iZV9jbHVzdGVyX2lkXywgZmFsc2UpOworICByZXR1cm4gRW5jb2Rl
UnRwUGFja2V0KGV2ZW50LnRpbWVzdGFtcF91cygpLCBldmVudC5oZWFkZXIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBldmVudC5wYWNrZXRfbGVuZ3RoKCksIGV2ZW50LnByb2JlX2NsdXN0
ZXJfaWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKIHN0ZDo6c3Ry
aW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlVmlkZW9SZWNlaXZlU3RyZWFtQ29u
ZmlnKAogICAgIGNvbnN0IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnJiBldmVudCkg
ewogICBydGNsb2c6OkV2ZW50IHJ0Y2xvZ19ldmVudDsKLSAgcnRjbG9nX2V2ZW50LnNldF90aW1l
c3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0
YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91cygpKTsKICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0
Y2xvZzo6RXZlbnQ6OlZJREVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCk7CiAKICAgcnRjbG9nOjpW
aWRlb1JlY2VpdmVDb25maWcqIHJlY2VpdmVyX2NvbmZpZyA9CiAgICAgICBydGNsb2dfZXZlbnQu
bXV0YWJsZV92aWRlb19yZWNlaXZlcl9jb25maWcoKTsKLSAgcmVjZWl2ZXJfY29uZmlnLT5zZXRf
cmVtb3RlX3NzcmMoZXZlbnQuY29uZmlnXy0+cmVtb3RlX3NzcmMpOwotICByZWNlaXZlcl9jb25m
aWctPnNldF9sb2NhbF9zc3JjKGV2ZW50LmNvbmZpZ18tPmxvY2FsX3NzcmMpOworICByZWNlaXZl
cl9jb25maWctPnNldF9yZW1vdGVfc3NyYyhldmVudC5jb25maWcoKS5yZW1vdGVfc3NyYyk7Cisg
IHJlY2VpdmVyX2NvbmZpZy0+c2V0X2xvY2FsX3NzcmMoZXZlbnQuY29uZmlnKCkubG9jYWxfc3Ny
Yyk7CiAKICAgLy8gVE9ETyhwZXJraik6IEFkZCBmaWVsZCBmb3IgcnNpZC4KLSAgcmVjZWl2ZXJf
Y29uZmlnLT5zZXRfcnRjcF9tb2RlKENvbnZlcnRSdGNwTW9kZShldmVudC5jb25maWdfLT5ydGNw
X21vZGUpKTsKLSAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfcmVtYihldmVudC5jb25maWdfLT5yZW1i
KTsKKyAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfcnRjcF9tb2RlKENvbnZlcnRSdGNwTW9kZShldmVu
dC5jb25maWcoKS5ydGNwX21vZGUpKTsKKyAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfcmVtYihldmVu
dC5jb25maWcoKS5yZW1iKTsKIAotICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWdf
LT5ydHBfZXh0ZW5zaW9ucykgeworICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWco
KS5ydHBfZXh0ZW5zaW9ucykgewogICAgIHJ0Y2xvZzo6UnRwSGVhZGVyRXh0ZW5zaW9uKiBleHRl
bnNpb24gPQogICAgICAgICByZWNlaXZlcl9jb25maWctPmFkZF9oZWFkZXJfZXh0ZW5zaW9ucygp
OwogICAgIGV4dGVuc2lvbi0+c2V0X25hbWUoZS51cmkpOwogICAgIGV4dGVuc2lvbi0+c2V0X2lk
KGUuaWQpOwogICB9CiAKLSAgZm9yIChjb25zdCBhdXRvJiBkIDogZXZlbnQuY29uZmlnXy0+Y29k
ZWNzKSB7CisgIGZvciAoY29uc3QgYXV0byYgZCA6IGV2ZW50LmNvbmZpZygpLmNvZGVjcykgewog
ICAgIHJ0Y2xvZzo6RGVjb2RlckNvbmZpZyogZGVjb2RlciA9IHJlY2VpdmVyX2NvbmZpZy0+YWRk
X2RlY29kZXJzKCk7CiAgICAgZGVjb2Rlci0+c2V0X25hbWUoZC5wYXlsb2FkX25hbWUpOwogICAg
IGRlY29kZXItPnNldF9wYXlsb2FkX3R5cGUoZC5wYXlsb2FkX3R5cGUpOwogICAgIGlmIChkLnJ0
eF9wYXlsb2FkX3R5cGUgIT0gMCkgewogICAgICAgcnRjbG9nOjpSdHhNYXAqIHJ0eCA9IHJlY2Vp
dmVyX2NvbmZpZy0+YWRkX3J0eF9tYXAoKTsKICAgICAgIHJ0eC0+c2V0X3BheWxvYWRfdHlwZShk
LnBheWxvYWRfdHlwZSk7Ci0gICAgICBydHgtPm11dGFibGVfY29uZmlnKCktPnNldF9ydHhfc3Ny
YyhldmVudC5jb25maWdfLT5ydHhfc3NyYyk7CisgICAgICBydHgtPm11dGFibGVfY29uZmlnKCkt
PnNldF9ydHhfc3NyYyhldmVudC5jb25maWcoKS5ydHhfc3NyYyk7CiAgICAgICBydHgtPm11dGFi
bGVfY29uZmlnKCktPnNldF9ydHhfcGF5bG9hZF90eXBlKGQucnR4X3BheWxvYWRfdHlwZSk7CiAg
ICAgfQogICB9CkBAIC02MjEsMTkgKzYyMiwxOSBAQCBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0Vu
Y29kZXJMZWdhY3k6OkVuY29kZVZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZygKIHN0ZDo6c3RyaW5n
IFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlVmlkZW9TZW5kU3RyZWFtQ29uZmlnKAog
ICAgIGNvbnN0IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnJiBldmVudCkgewogICBydGNs
b2c6OkV2ZW50IHJ0Y2xvZ19ldmVudDsKLSAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMo
ZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2
ZW50LnRpbWVzdGFtcF91cygpKTsKICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZl
bnQ6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQpOwogCiAgIHJ0Y2xvZzo6VmlkZW9TZW5kQ29u
ZmlnKiBzZW5kZXJfY29uZmlnID0KICAgICAgIHJ0Y2xvZ19ldmVudC5tdXRhYmxlX3ZpZGVvX3Nl
bmRlcl9jb25maWcoKTsKIAogICAvLyBUT0RPKHBlcmtqKTogcnRjbG9nOjpWaWRlb1NlbmRDb25m
aWcgc2hvdWxkIG9ubHkgY29udGFpbiBvbmUgU1NSQy4KLSAgc2VuZGVyX2NvbmZpZy0+YWRkX3Nz
cmNzKGV2ZW50LmNvbmZpZ18tPmxvY2FsX3NzcmMpOwotICBpZiAoZXZlbnQuY29uZmlnXy0+cnR4
X3NzcmMgIT0gMCkgewotICAgIHNlbmRlcl9jb25maWctPmFkZF9ydHhfc3NyY3MoZXZlbnQuY29u
ZmlnXy0+cnR4X3NzcmMpOworICBzZW5kZXJfY29uZmlnLT5hZGRfc3NyY3MoZXZlbnQuY29uZmln
KCkubG9jYWxfc3NyYyk7CisgIGlmIChldmVudC5jb25maWcoKS5ydHhfc3NyYyAhPSAwKSB7Cisg
ICAgc2VuZGVyX2NvbmZpZy0+YWRkX3J0eF9zc3JjcyhldmVudC5jb25maWcoKS5ydHhfc3NyYyk7
CiAgIH0KIAotICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWdfLT5ydHBfZXh0ZW5z
aW9ucykgeworICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWcoKS5ydHBfZXh0ZW5z
aW9ucykgewogICAgIHJ0Y2xvZzo6UnRwSGVhZGVyRXh0ZW5zaW9uKiBleHRlbnNpb24gPQogICAg
ICAgICBzZW5kZXJfY29uZmlnLT5hZGRfaGVhZGVyX2V4dGVuc2lvbnMoKTsKICAgICBleHRlbnNp
b24tPnNldF9uYW1lKGUudXJpKTsKQEAgLTY0MiwxMyArNjQzLDEzIEBAIHN0ZDo6c3RyaW5nIFJ0
Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlVmlkZW9TZW5kU3RyZWFtQ29uZmlnKAogCiAg
IC8vIFRPRE8ocGVya2opOiBydGNsb2c6OlZpZGVvU2VuZENvbmZpZyBzaG91bGQgY29udGFpbiBt
YW55IHBvc3NpYmxlIGNvZGVjCiAgIC8vIGNvbmZpZ3VyYXRpb25zLgotICBmb3IgKGNvbnN0IGF1
dG8mIGNvZGVjIDogZXZlbnQuY29uZmlnXy0+Y29kZWNzKSB7CisgIGZvciAoY29uc3QgYXV0byYg
Y29kZWMgOiBldmVudC5jb25maWcoKS5jb2RlY3MpIHsKICAgICBzZW5kZXJfY29uZmlnLT5zZXRf
cnR4X3BheWxvYWRfdHlwZShjb2RlYy5ydHhfcGF5bG9hZF90eXBlKTsKICAgICBydGNsb2c6OkVu
Y29kZXJDb25maWcqIGVuY29kZXIgPSBzZW5kZXJfY29uZmlnLT5tdXRhYmxlX2VuY29kZXIoKTsK
ICAgICBlbmNvZGVyLT5zZXRfbmFtZShjb2RlYy5wYXlsb2FkX25hbWUpOwogICAgIGVuY29kZXIt
PnNldF9wYXlsb2FkX3R5cGUoY29kZWMucGF5bG9hZF90eXBlKTsKIAotICAgIGlmIChldmVudC5j
b25maWdfLT5jb2RlY3Muc2l6ZSgpID4gMSkgeworICAgIGlmIChldmVudC5jb25maWcoKS5jb2Rl
Y3Muc2l6ZSgpID4gMSkgewogICAgICAgUlRDX0xPRyhXQVJOSU5HKQogICAgICAgICAgIDw8ICJM
b2dWaWRlb1NlbmRTdHJlYW1Db25maWcgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgb25lICIKICAg
ICAgICAgICA8PCAiY29kZWMuIExvZ2dpbmcgY29kZWMgOiIgPDwgY29kZWMucGF5bG9hZF9uYW1l
OwpAQCAtNzU2LDUgKzc1NywzIEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2Fj
eTo6U2VyaWFsaXplKHJ0Y2xvZzo6RXZlbnQqIGV2ZW50KSB7CiB9CiAKIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKLQotI2VuZGlmICAvLyBFTkFCTEVfUlRDX0VWRU5UX0xPRwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5oCmluZGV4IDg3ZGIwMzllM2FmZjNm
MTZlYjljYWVhYzU3MjJlMTE1NjdkYTU1ZDAuLjMxMDVkYzFlNjhjNmI5MzhlYTg5MGM3ZDI2MWI5
ZjI3NjY3MDJiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5j
b2Rlcl9sZWdhY3kuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJf
bGVnYWN5LmgKQEAgLTE4LDggKzE4LDYgQEAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9s
b2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9i
dWZmZXIuaCIKIAotI2lmIGRlZmluZWQoRU5BQkxFX1JUQ19FVkVOVF9MT0cpCi0KIG5hbWVzcGFj
ZSB3ZWJydGMgewogCiBuYW1lc3BhY2UgcnRjbG9nIHsKQEAgLTUyLDcgKzUwLDggQEAgY2xhc3Mg
UnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5IGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50TG9nRW5jb2Rl
ciB7CiAgcHVibGljOgogICB+UnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5KCkgb3ZlcnJpZGUgPSBk
ZWZhdWx0OwogCi0gIHN0ZDo6c3RyaW5nIEVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1w
X3VzKSBvdmVycmlkZTsKKyAgc3RkOjpzdHJpbmcgRW5jb2RlTG9nU3RhcnQoaW50NjRfdCB0aW1l
c3RhbXBfdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdXRjX3RpbWVf
dXMpIG92ZXJyaWRlOwogICBzdGQ6OnN0cmluZyBFbmNvZGVMb2dFbmQoaW50NjRfdCB0aW1lc3Rh
bXBfdXMpIG92ZXJyaWRlOwogCiAgIHN0ZDo6c3RyaW5nIEVuY29kZUJhdGNoKApAQCAtMTA1LDYg
KzEwNCw0IEBAIGNsYXNzIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeSBmaW5hbCA6IHB1YmxpYyBS
dGNFdmVudExvZ0VuY29kZXIgewogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKLSNlbmRpZiAg
Ly8gRU5BQkxFX1JUQ19FVkVOVF9MT0cKLQogI2VuZGlmICAvLyBMT0dHSU5HX1JUQ19FVkVOVF9M
T0dfRU5DT0RFUl9SVENfRVZFTlRfTE9HX0VOQ09ERVJfTEVHQUNZX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbmV3X2Zvcm1hdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9uZXdfZm9ybWF0LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc5ZGMzNzlmNDhiNDFhNDYwZDVmNDYyMTcyYzIxNGYxMjI3NTk4YzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbmV3X2Zvcm1hdC5jYwpA
QCAtMCwwICsxLDEzMzYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25ld19mb3Jt
YXQuaCIKKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkv
YXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Js
b2JfZW5jb2RpbmcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9k
ZWx0YV9lbmNvZGluZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVy
L3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb24uaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hbHJfc3RhdGUuaCIKKyNpbmNsdWRlICJsb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb24u
aCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRp
b19wbGF5b3V0LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgiCisjaW5jbHVkZSAibG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnLmgi
CisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3Vw
ZGF0ZV9kZWxheV9iYXNlZC5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVu
dHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5oIgorI2luY2x1ZGUgImxvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5oIgorI2lu
Y2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRh
dGVfcGFpcl9jb25maWcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9wcm9iZV9jbHVzdGVyX2NyZWF0ZWQuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0
Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfZmFpbHVyZS5oIgorI2lu
Y2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3Vs
dF9zdWNjZXNzLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfcnRjcF9wYWNrZXRfaW5jb21pbmcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9vdXRnb2luZy5oIgorI2luY2x1ZGUg
ImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21p
bmcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9y
dHBfcGFja2V0X291dGdvaW5nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2
ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgiCisjaW5jbHVkZSAi
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1f
Y29uZmlnLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19zdHJlYW1fY29u
ZmlnLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFw
dG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2N2by5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYXBwLmgiCisjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYnllLmgiCisjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvY29tbW9uX2hlYWRlci5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2V4dGVuZGVkX2ppdHRlcl9yZXBvcnQu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRl
ZF9yZXBvcnRzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNr
ZXQvcHNmYi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0
L3JlY2VpdmVyX3JlcG9ydC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcGFja2V0L3J0cGZiLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQvc2Rlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
cGFja2V0L3NlbmRlcl9yZXBvcnQuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfcGFja2V0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvaWdub3JlX3d1bmRlZi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKKworLy8gKi5wYi5oIGZpbGVzIGFyZSBnZW5lcmF0ZWQgYXQgYnVpbGQtdGltZSBieSB0aGUg
cHJvdG9idWYgY29tcGlsZXIuCitSVENfUFVTSF9JR05PUklOR19XVU5ERUYoKQorI2lmZGVmIFdF
QlJUQ19BTkRST0lEX1BMQVRGT1JNX0JVSUxECisjaW5jbHVkZSAiZXh0ZXJuYWwvd2VicnRjL3dl
YnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzIucGIuaCIKKyNlbHNlCisj
aW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnBiLmgiCisjZW5k
aWYKK1JUQ19QT1BfSUdOT1JJTkdfV1VOREVGKCkKKwordXNpbmcgd2VicnRjX2V2ZW50X2xvZ2dp
bmc6OlRvVW5zaWduZWQ7CisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1lc3BhY2UgeworcnRj
bG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkRldGVjdG9yU3RhdGUgQ29udmVydFRvUHJvdG9G
b3JtYXQoCisgICAgQmFuZHdpZHRoVXNhZ2Ugc3RhdGUpIHsKKyAgc3dpdGNoIChzdGF0ZSkgewor
ICAgIGNhc2UgQmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1hbDoKKyAgICAgIHJldHVybiBydGNsb2cy
OjpEZWxheUJhc2VkQndlVXBkYXRlczo6QldFX05PUk1BTDsKKyAgICBjYXNlIEJhbmR3aWR0aFVz
YWdlOjprQndVbmRlcnVzaW5nOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkRlbGF5QmFzZWRCd2VV
cGRhdGVzOjpCV0VfVU5ERVJVU0lORzsKKyAgICBjYXNlIEJhbmR3aWR0aFVzYWdlOjprQndPdmVy
dXNpbmc6CisgICAgICByZXR1cm4gcnRjbG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkJXRV9P
VkVSVVNJTkc7CisgICAgY2FzZSBCYW5kd2lkdGhVc2FnZTo6a0xhc3Q6CisgICAgICBSVENfTk9U
UkVBQ0hFRCgpOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBydGNsb2cyOjpE
ZWxheUJhc2VkQndlVXBkYXRlczo6QldFX1VOS05PV05fU1RBVEU7Cit9CisKK3J0Y2xvZzI6OkJ3
ZVByb2JlUmVzdWx0RmFpbHVyZTo6RmFpbHVyZVJlYXNvbiBDb252ZXJ0VG9Qcm90b0Zvcm1hdCgK
KyAgICBQcm9iZUZhaWx1cmVSZWFzb24gZmFpbHVyZV9yZWFzb24pIHsKKyAgc3dpdGNoIChmYWls
dXJlX3JlYXNvbikgeworICAgIGNhc2UgUHJvYmVGYWlsdXJlUmVhc29uOjprSW52YWxpZFNlbmRS
ZWNlaXZlSW50ZXJ2YWw6CisgICAgICByZXR1cm4gcnRjbG9nMjo6QndlUHJvYmVSZXN1bHRGYWls
dXJlOjpJTlZBTElEX1NFTkRfUkVDRUlWRV9JTlRFUlZBTDsKKyAgICBjYXNlIFByb2JlRmFpbHVy
ZVJlYXNvbjo6a0ludmFsaWRTZW5kUmVjZWl2ZVJhdGlvOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6
OkJ3ZVByb2JlUmVzdWx0RmFpbHVyZTo6SU5WQUxJRF9TRU5EX1JFQ0VJVkVfUkFUSU87CisgICAg
Y2FzZSBQcm9iZUZhaWx1cmVSZWFzb246OmtUaW1lb3V0OgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6
OkJ3ZVByb2JlUmVzdWx0RmFpbHVyZTo6VElNRU9VVDsKKyAgICBjYXNlIFByb2JlRmFpbHVyZVJl
YXNvbjo6a0xhc3Q6CisgICAgICBSVENfTk9UUkVBQ0hFRCgpOworICB9CisgIFJUQ19OT1RSRUFD
SEVEKCk7CisgIHJldHVybiBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1cmU6OlVOS05PV047
Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgcmVjb2duaXplZCBleHRlbnNpb25z
IHRoYXQgd2Ugc2hvdWxkIGxvZworLy8gYW5kIGZhbHNlIGlmIHRoZXJlIGFyZSBubyBleHRlbnNp
b25zIG9yIGFsbCBleHRlbnNpb25zIGFyZSB0eXBlcyB3ZSBkb24ndAorLy8gbG9nLiBUaGUgcHJv
dG9idWYgcmVwcmVzZW50YXRpb24gb2YgdGhlIGhlYWRlciBjb25maWdzIGlzIHdyaXR0ZW4gdG8K
Ky8vIHxwcm90b19jb25maWd8LgorYm9vbCBDb252ZXJ0VG9Qcm90b0Zvcm1hdChjb25zdCBzdGQ6
OnZlY3RvcjxSdHBFeHRlbnNpb24+JiBleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBydGNsb2cyOjpSdHBIZWFkZXJFeHRlbnNpb25Db25maWcqIHByb3RvX2NvbmZpZykgewor
ICBzaXplX3QgdW5rbm93bl9leHRlbnNpb25zID0gMDsKKyAgZm9yIChhdXRvJiBleHRlbnNpb24g
OiBleHRlbnNpb25zKSB7CisgICAgaWYgKGV4dGVuc2lvbi51cmkgPT0gUnRwRXh0ZW5zaW9uOjpr
QXVkaW9MZXZlbFVyaSkgeworICAgICAgcHJvdG9fY29uZmlnLT5zZXRfYXVkaW9fbGV2ZWxfaWQo
ZXh0ZW5zaW9uLmlkKTsKKyAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbi51cmkgPT0gUnRwRXh0ZW5z
aW9uOjprVGltZXN0YW1wT2Zmc2V0VXJpKSB7CisgICAgICBwcm90b19jb25maWctPnNldF90cmFu
c21pc3Npb25fdGltZV9vZmZzZXRfaWQoZXh0ZW5zaW9uLmlkKTsKKyAgICB9IGVsc2UgaWYgKGV4
dGVuc2lvbi51cmkgPT0gUnRwRXh0ZW5zaW9uOjprQWJzU2VuZFRpbWVVcmkpIHsKKyAgICAgIHBy
b3RvX2NvbmZpZy0+c2V0X2Fic29sdXRlX3NlbmRfdGltZV9pZChleHRlbnNpb24uaWQpOworICAg
IH0gZWxzZSBpZiAoZXh0ZW5zaW9uLnVyaSA9PSBSdHBFeHRlbnNpb246OmtUcmFuc3BvcnRTZXF1
ZW5jZU51bWJlclVyaSkgeworICAgICAgcHJvdG9fY29uZmlnLT5zZXRfdHJhbnNwb3J0X3NlcXVl
bmNlX251bWJlcl9pZChleHRlbnNpb24uaWQpOworICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9uLnVy
aSA9PSBSdHBFeHRlbnNpb246OmtWaWRlb1JvdGF0aW9uVXJpKSB7CisgICAgICBwcm90b19jb25m
aWctPnNldF92aWRlb19yb3RhdGlvbl9pZChleHRlbnNpb24uaWQpOworICAgIH0gZWxzZSB7Cisg
ICAgICArK3Vua25vd25fZXh0ZW5zaW9uczsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHVua25vd25f
ZXh0ZW5zaW9ucyA8IGV4dGVuc2lvbnMuc2l6ZSgpOworfQorCitydGNsb2cyOjpJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZQorQ29udmVydFRvUHJvdG9G
b3JtYXQoSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgdHlwZSkgeworICBzd2l0Y2ggKHR5cGUp
IHsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlOjprQWRkZWQ6CisgICAgICBy
ZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6QURERUQ7CisgICAgY2FzZSBJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a1VwZGF0ZWQ6CisgICAgICByZXR1cm4gcnRjbG9n
Mjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VVBEQVRFRDsKKyAgICBjYXNlIEljZUNhbmRpZGF0
ZVBhaXJDb25maWdUeXBlOjprRGVzdHJveWVkOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNh
bmRpZGF0ZVBhaXJDb25maWc6OkRFU1RST1lFRDsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJD
b25maWdUeXBlOjprU2VsZWN0ZWQ6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRl
UGFpckNvbmZpZzo6U0VMRUNURUQ7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlw
ZTo6a051bVZhbHVlczoKKyAgICAgIFJUQ19OT1RSRUFDSEVEKCk7CisgIH0KKyAgUlRDX05PVFJF
QUNIRUQoKTsKKyAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05P
V05fQ09ORklHX1RZUEU7Cit9CisKK3J0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6Oklj
ZUNhbmRpZGF0ZVR5cGUgQ29udmVydFRvUHJvdG9Gb3JtYXQoCisgICAgSWNlQ2FuZGlkYXRlVHlw
ZSB0eXBlKSB7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSWNlQ2FuZGlkYXRlVHlwZTo6
a1Vua25vd246CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6
VU5LTk9XTl9DQU5ESURBVEVfVFlQRTsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVR5cGU6OmtMb2Nh
bDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpMT0NBTDsK
KyAgICBjYXNlIEljZUNhbmRpZGF0ZVR5cGU6OmtTdHVuOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6
OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlNUVU47CisgICAgY2FzZSBJY2VDYW5kaWRhdGVUeXBl
OjprUHJmbHg6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6
UFJGTFg7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVUeXBlOjprUmVsYXk6CisgICAgICByZXR1cm4g
cnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6UkVMQVk7CisgICAgY2FzZSBJY2VDYW5k
aWRhdGVUeXBlOjprTnVtVmFsdWVzOgorICAgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgfQorICBS
VENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZp
Zzo6VU5LTk9XTl9DQU5ESURBVEVfVFlQRTsKK30KKworcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZzo6UHJvdG9jb2wgQ29udmVydFRvUHJvdG9Gb3JtYXQoCisgICAgSWNlQ2FuZGlkYXRl
UGFpclByb3RvY29sIHByb3RvY29sKSB7CisgIHN3aXRjaCAocHJvdG9jb2wpIHsKKyAgICBjYXNl
IEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbDo6a1Vua25vd246CisgICAgICByZXR1cm4gcnRjbG9n
Mjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9QUk9UT0NPTDsKKyAgICBjYXNlIElj
ZUNhbmRpZGF0ZVBhaXJQcm90b2NvbDo6a1VkcDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VD
YW5kaWRhdGVQYWlyQ29uZmlnOjpVRFA7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyUHJvdG9j
b2w6OmtUY3A6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6
VENQOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprU3NsdGNwOgorICAgICAg
cmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlNTTFRDUDsKKyAgICBjYXNl
IEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbDo6a1RsczoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpUTFM7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyUHJv
dG9jb2w6OmtOdW1WYWx1ZXM6CisgICAgICBSVENfTk9UUkVBQ0hFRCgpOworICB9CisgIFJUQ19O
T1RSRUFDSEVEKCk7CisgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpV
TktOT1dOX1BST1RPQ09MOworfQorCitydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpB
ZGRyZXNzRmFtaWx5IENvbnZlcnRUb1Byb3RvRm9ybWF0KAorICAgIEljZUNhbmRpZGF0ZVBhaXJB
ZGRyZXNzRmFtaWx5IGFkZHJlc3NfZmFtaWx5KSB7CisgIHN3aXRjaCAoYWRkcmVzc19mYW1pbHkp
IHsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5OjprVW5rbm93bjoKKyAg
ICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX0FERFJF
U1NfRkFNSUxZOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHk6OmtJcHY0
OgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OklQVjQ7Cisg
ICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6a0lwdjY6CisgICAgICByZXR1
cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SVBWNjsKKyAgICBjYXNlIEljZUNh
bmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5OjprTnVtVmFsdWVzOgorICAgICAgUlRDX05PVFJFQUNI
RUQoKTsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gcnRjbG9nMjo6SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9BRERSRVNTX0ZBTUlMWTsKK30KKworcnRjbG9nMjo6
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6TmV0d29ya1R5cGUgQ29udmVydFRvUHJvdG9Gb3JtYXQo
CisgICAgSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGUgbmV0d29ya190eXBlKSB7CisgIHN3aXRjaCAo
bmV0d29ya190eXBlKSB7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a1Vua25v
d246CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9X
Tl9ORVRXT1JLX1RZUEU7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a0V0aGVy
bmV0OgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkVUSEVS
TkVUOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtMb29wYmFjazoKKyAgICAg
IHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpMT09QQkFDSzsKKyAgICBj
YXNlIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprV2lmaToKKyAgICAgIHJldHVybiBydGNsb2cy
OjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpXSUZJOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlTmV0
d29ya1R5cGU6OmtWcG46CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNv
bmZpZzo6VlBOOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtDZWxsdWxhcjoK
KyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpDRUxMVUxBUjsK
KyAgICBjYXNlIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprTnVtVmFsdWVzOgorICAgICAgUlRD
X05PVFJFQUNIRUQoKTsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gcnRjbG9n
Mjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9ORVRXT1JLX1RZUEU7Cit9CisKK3J0
Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudDo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSBD
b252ZXJ0VG9Qcm90b0Zvcm1hdCgKKyAgICBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlIHR5cGUp
IHsKKyAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBl
OjprQ2hlY2tTZW50OgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVu
dDo6Q0hFQ0tfU0VOVDsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGU6OmtDaGVj
a1JlY2VpdmVkOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudDo6
Q0hFQ0tfUkVDRUlWRUQ7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hl
Y2tSZXNwb25zZVNlbnQ6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckV2
ZW50OjpDSEVDS19SRVNQT05TRV9TRU5UOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpckV2ZW50
VHlwZTo6a0NoZWNrUmVzcG9uc2VSZWNlaXZlZDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VD
YW5kaWRhdGVQYWlyRXZlbnQ6OkNIRUNLX1JFU1BPTlNFX1JFQ0VJVkVEOworICAgIGNhc2UgSWNl
Q2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a051bVZhbHVlczoKKyAgICAgIFJUQ19OT1RSRUFDSEVE
KCk7CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRp
ZGF0ZVBhaXJFdmVudDo6VU5LTk9XTl9DSEVDS19UWVBFOworfQorCisvLyBDb3BpZXMgYWxsIFJU
Q1AgYmxvY2tzIGV4Y2VwdCBBUFAsIFNERVMgYW5kIHVua25vd24gZnJvbSB8cGFja2V0fCB0bwor
Ly8gfGJ1ZmZlcnwuIHxidWZmZXJ8IG11c3QgaGF2ZSBzcGFjZSBmb3IgfElQX1BBQ0tFVF9TSVpF
fCBieXRlcy4gfHBhY2tldHwgbXVzdAorLy8gYmUgYXQgbW9zdCB8SVBfUEFDS0VUX1NJWkV8IGJ5
dGVzIGxvbmcuCitzaXplX3QgUmVtb3ZlTm9uV2hpdGVsaXN0ZWRSdGNwQmxvY2tzKGNvbnN0IHJ0
Yzo6QnVmZmVyJiBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QqIGJ1ZmZlcikgeworICBSVENfRENIRUNLKHBhY2tldC5zaXplKCkgPD0gSVBfUEFD
S0VUX1NJWkUpOworICBSVENfRENIRUNLKGJ1ZmZlciAhPSBudWxscHRyKTsKKyAgcnRjcDo6Q29t
bW9uSGVhZGVyIGhlYWRlcjsKKyAgY29uc3QgdWludDhfdCogYmxvY2tfYmVnaW4gPSBwYWNrZXQu
ZGF0YSgpOworICBjb25zdCB1aW50OF90KiBwYWNrZXRfZW5kID0gcGFja2V0LmRhdGEoKSArIHBh
Y2tldC5zaXplKCk7CisgIHNpemVfdCBidWZmZXJfbGVuZ3RoID0gMDsKKyAgd2hpbGUgKGJsb2Nr
X2JlZ2luIDwgcGFja2V0X2VuZCkgeworICAgIGlmICghaGVhZGVyLlBhcnNlKGJsb2NrX2JlZ2lu
LCBwYWNrZXRfZW5kIC0gYmxvY2tfYmVnaW4pKSB7CisgICAgICBicmVhazsgIC8vIEluY29ycmVj
dCBtZXNzYWdlIGhlYWRlci4KKyAgICB9CisgICAgY29uc3QgdWludDhfdCogbmV4dF9ibG9jayA9
IGhlYWRlci5OZXh0UGFja2V0KCk7CisgICAgUlRDX0RDSEVDS19HVChuZXh0X2Jsb2NrLCBibG9j
a19iZWdpbik7CisgICAgUlRDX0RDSEVDS19MRShuZXh0X2Jsb2NrLCBwYWNrZXRfZW5kKTsKKyAg
ICBzaXplX3QgYmxvY2tfc2l6ZSA9IG5leHRfYmxvY2sgLSBibG9ja19iZWdpbjsKKyAgICBzd2l0
Y2ggKGhlYWRlci50eXBlKCkpIHsKKyAgICAgIGNhc2UgcnRjcDo6QnllOjprUGFja2V0VHlwZToK
KyAgICAgIGNhc2UgcnRjcDo6RXh0ZW5kZWRKaXR0ZXJSZXBvcnQ6OmtQYWNrZXRUeXBlOgorICAg
ICAgY2FzZSBydGNwOjpFeHRlbmRlZFJlcG9ydHM6OmtQYWNrZXRUeXBlOgorICAgICAgY2FzZSBy
dGNwOjpQc2ZiOjprUGFja2V0VHlwZToKKyAgICAgIGNhc2UgcnRjcDo6UmVjZWl2ZXJSZXBvcnQ6
OmtQYWNrZXRUeXBlOgorICAgICAgY2FzZSBydGNwOjpSdHBmYjo6a1BhY2tldFR5cGU6CisgICAg
ICBjYXNlIHJ0Y3A6OlNlbmRlclJlcG9ydDo6a1BhY2tldFR5cGU6CisgICAgICAgIC8vIFdlIGxv
ZyBzZW5kZXIgcmVwb3J0cywgcmVjZWl2ZXIgcmVwb3J0cywgYnllIG1lc3NhZ2VzCisgICAgICAg
IC8vIGludGVyLWFycml2YWwgaml0dGVyLCB0aGlyZC1wYXJ0eSBsb3NzIHJlcG9ydHMsIHBheWxv
YWQtc3BlY2lmaWMKKyAgICAgICAgLy8gZmVlZGJhY2sgYW5kIGV4dGVuZGVkIHJlcG9ydHMuCisg
ICAgICAgIC8vIFRPRE8odGVyZWxpdXMpOiBBcyBhbiBvcHRpbWl6YXRpb24sIGRvbid0IGNvcHkg
YW55dGhpbmcgaWYgYWxsIGJsb2NrcworICAgICAgICAvLyBpbiB0aGUgcGFja2V0IGFyZSB3aGl0
ZWxpc3RlZCB0eXBlcy4KKyAgICAgICAgbWVtY3B5KGJ1ZmZlciArIGJ1ZmZlcl9sZW5ndGgsIGJs
b2NrX2JlZ2luLCBibG9ja19zaXplKTsKKyAgICAgICAgYnVmZmVyX2xlbmd0aCArPSBibG9ja19z
aXplOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgcnRjcDo6QXBwOjprUGFja2V0VHlwZToK
KyAgICAgIGNhc2UgcnRjcDo6U2Rlczo6a1BhY2tldFR5cGU6CisgICAgICBkZWZhdWx0OgorICAg
ICAgICAvLyBXZSBkb24ndCBsb2cgc2VuZGVyIGRlc2NyaXB0aW9ucywgYXBwbGljYXRpb24gZGVm
aW5lZCBtZXNzYWdlcworICAgICAgICAvLyBvciBtZXNzYWdlIGJsb2NrcyBvZiB1bmtub3duIHR5
cGUuCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGJsb2NrX2JlZ2luICs9IGJsb2NrX3Np
emU7CisgIH0KKyAgcmV0dXJuIGJ1ZmZlcl9sZW5ndGg7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBFdmVudFR5cGUsIHR5cGVuYW1lIFByb3RvVHlwZT4KK3ZvaWQgRW5jb2RlUnRjcFBhY2tldChy
dGM6OkFycmF5Vmlldzxjb25zdCBFdmVudFR5cGUqPiBiYXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICBQcm90b1R5cGUqIHByb3RvX2JhdGNoKSB7CisgIGlmIChiYXRjaC5zaXplKCkgPT0gMCkg
eworICAgIHJldHVybjsKKyAgfQorCisgIC8vIEJhc2UgZXZlbnQKKyAgY29uc3QgRXZlbnRUeXBl
KiBjb25zdCBiYXNlX2V2ZW50ID0gYmF0Y2hbMF07CisgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0
YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgeworICAgIHVpbnQ4X3QgYnVm
ZmVyW0lQX1BBQ0tFVF9TSVpFXTsKKyAgICBzaXplX3QgYnVmZmVyX2xlbmd0aCA9CisgICAgICAg
IFJlbW92ZU5vbldoaXRlbGlzdGVkUnRjcEJsb2NrcyhiYXNlX2V2ZW50LT5wYWNrZXQoKSwgYnVm
ZmVyKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3Jhd19wYWNrZXQoYnVmZmVyLCBidWZmZXJfbGVu
Z3RoKTsKKyAgfQorCisgIGlmIChiYXRjaC5zaXplKCkgPT0gMSkgeworICAgIHJldHVybjsKKyAg
fQorCisgIC8vIERlbHRhIGVuY29kaW5nCisgIHByb3RvX2JhdGNoLT5zZXRfbnVtYmVyX29mX2Rl
bHRhcyhiYXRjaC5zaXplKCkgLSAxKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+PiB2YWx1ZXMoYmF0Y2guc2l6ZSgpIC0gMSk7CisgIHN0ZDo6c3RyaW5nIGVuY29kZWRf
ZGVsdGFzOworCisgIC8vIHRpbWVzdGFtcF9tcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZh
bHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtp
ICsgMV07CisgICAgdmFsdWVzW2ldID0gVG9VbnNpZ25lZChldmVudC0+dGltZXN0YW1wX21zKCkp
OworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKFRvVW5zaWduZWQoYmFzZV9l
dmVudC0+dGltZXN0YW1wX21zKCkpLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVt
cHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tc19kZWx0YXMoZW5jb2Rl
ZF9kZWx0YXMpOworICB9CisKKyAgLy8gcmF3X3BhY2tldAorICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gc2NydWJlZF9wYWNrZXRzKGJhdGNoLnNpemUoKSAtIDEpOworICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNjcnViZWRfcGFja2V0cy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50
VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgc2NydWJlZF9wYWNrZXRzW2ldLnJlc2l6
ZShldmVudC0+cGFja2V0KCkuc2l6ZSgpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihzdGQ6
OnN0cmluZzo6dmFsdWVfdHlwZSkgPT0gc2l6ZW9mKHVpbnQ4X3QpLCAiIik7CisgICAgY29uc3Qg
c2l6ZV90IGJ1ZmZlcl9sZW5ndGggPSBSZW1vdmVOb25XaGl0ZWxpc3RlZFJ0Y3BCbG9ja3MoCisg
ICAgICAgIGV2ZW50LT5wYWNrZXQoKSwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnNjcnVi
ZWRfcGFja2V0c1tpXVswXSkpOworICAgIGlmIChidWZmZXJfbGVuZ3RoIDwgZXZlbnQtPnBhY2tl
dCgpLnNpemUoKSkgeworICAgICAgc2NydWJlZF9wYWNrZXRzW2ldLnJlc2l6ZShidWZmZXJfbGVu
Z3RoKTsKKyAgICB9CisgIH0KKyAgcHJvdG9fYmF0Y2gtPnNldF9yYXdfcGFja2V0X2Jsb2JzKEVu
Y29kZUJsb2JzKHNjcnViZWRfcGFja2V0cykpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXZl
bnRUeXBlLCB0eXBlbmFtZSBQcm90b1R5cGU+Cit2b2lkIEVuY29kZVJ0cFBhY2tldChjb25zdCBz
dGQ6OnZlY3Rvcjxjb25zdCBFdmVudFR5cGUqPiYgYmF0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICBQcm90b1R5cGUqIHByb3RvX2JhdGNoKSB7CisgIGlmIChiYXRjaC5zaXplKCkgPT0gMCkgewor
ICAgIHJldHVybjsKKyAgfQorCisgIC8vIEJhc2UgZXZlbnQKKyAgY29uc3QgRXZlbnRUeXBlKiBj
b25zdCBiYXNlX2V2ZW50ID0gYmF0Y2hbMF07CisgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1w
X21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF9tYXJr
ZXIoYmFzZV9ldmVudC0+aGVhZGVyKCkuTWFya2VyKCkpOworICAvLyBUT0RPKHRlcmVsaXVzKTog
SXMgcGF5bG9hZCB0eXBlIG5lZWRlZD8KKyAgcHJvdG9fYmF0Y2gtPnNldF9wYXlsb2FkX3R5cGUo
YmFzZV9ldmVudC0+aGVhZGVyKCkuUGF5bG9hZFR5cGUoKSk7CisgIHByb3RvX2JhdGNoLT5zZXRf
c2VxdWVuY2VfbnVtYmVyKGJhc2VfZXZlbnQtPmhlYWRlcigpLlNlcXVlbmNlTnVtYmVyKCkpOwor
ICBwcm90b19iYXRjaC0+c2V0X3J0cF90aW1lc3RhbXAoYmFzZV9ldmVudC0+aGVhZGVyKCkuVGlt
ZXN0YW1wKCkpOworICBwcm90b19iYXRjaC0+c2V0X3NzcmMoYmFzZV9ldmVudC0+aGVhZGVyKCku
U3NyYygpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF9wYXlsb2FkX3NpemUoYmFzZV9ldmVudC0+cGF5
bG9hZF9sZW5ndGgoKSk7CisgIHByb3RvX2JhdGNoLT5zZXRfaGVhZGVyX3NpemUoYmFzZV9ldmVu
dC0+aGVhZGVyX2xlbmd0aCgpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF9wYWRkaW5nX3NpemUoYmFz
ZV9ldmVudC0+cGFkZGluZ19sZW5ndGgoKSk7CisKKyAgLy8gQWRkIGhlYWRlciBleHRlbnNpb25z
IChiYXNlIGV2ZW50KS4KKyAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2VfdHJhbnNwb3J0
X3NlcXVlbmNlX251bWJlcjsKKyAgeworICAgIHVpbnQxNl90IHNlcW51bTsKKyAgICBpZiAoYmFz
ZV9ldmVudC0+aGVhZGVyKCkudGVtcGxhdGUgR2V0RXh0ZW5zaW9uPFRyYW5zcG9ydFNlcXVlbmNl
TnVtYmVyPigKKyAgICAgICAgICAgICZzZXFudW0pKSB7CisgICAgICBwcm90b19iYXRjaC0+c2V0
X3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIoc2VxbnVtKTsKKyAgICAgIGJhc2VfdHJhbnNwb3J0
X3NlcXVlbmNlX251bWJlciA9IHNlcW51bTsKKyAgICB9CisgIH0KKworICBhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4gdW5zaWduZWRfYmFzZV90cmFuc21pc3Npb25fdGltZV9vZmZzZXQ7CisgIHsK
KyAgICBpbnQzMl90IG9mZnNldDsKKyAgICBpZiAoYmFzZV9ldmVudC0+aGVhZGVyKCkudGVtcGxh
dGUgR2V0RXh0ZW5zaW9uPFRyYW5zbWlzc2lvbk9mZnNldD4oCisgICAgICAgICAgICAmb2Zmc2V0
KSkgeworICAgICAgcHJvdG9fYmF0Y2gtPnNldF90cmFuc21pc3Npb25fdGltZV9vZmZzZXQob2Zm
c2V0KTsKKyAgICAgIHVuc2lnbmVkX2Jhc2VfdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0ID0gVG9V
bnNpZ25lZChvZmZzZXQpOworICAgIH0KKyAgfQorCisgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
PiBiYXNlX2Fic29sdXRlX3NlbmRfdGltZTsKKyAgeworICAgIHVpbnQzMl90IHNlbmR0aW1lOwor
ICAgIGlmIChiYXNlX2V2ZW50LT5oZWFkZXIoKS50ZW1wbGF0ZSBHZXRFeHRlbnNpb248QWJzb2x1
dGVTZW5kVGltZT4oCisgICAgICAgICAgICAmc2VuZHRpbWUpKSB7CisgICAgICBwcm90b19iYXRj
aC0+c2V0X2Fic29sdXRlX3NlbmRfdGltZShzZW5kdGltZSk7CisgICAgICBiYXNlX2Fic29sdXRl
X3NlbmRfdGltZSA9IHNlbmR0aW1lOworICAgIH0KKyAgfQorCisgIGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90PiBiYXNlX3ZpZGVvX3JvdGF0aW9uOworICB7CisgICAgVmlkZW9Sb3RhdGlvbiB2aWRl
b19yb3RhdGlvbjsKKyAgICBpZiAoYmFzZV9ldmVudC0+aGVhZGVyKCkudGVtcGxhdGUgR2V0RXh0
ZW5zaW9uPFZpZGVvT3JpZW50YXRpb24+KAorICAgICAgICAgICAgJnZpZGVvX3JvdGF0aW9uKSkg
eworICAgICAgcHJvdG9fYmF0Y2gtPnNldF92aWRlb19yb3RhdGlvbigKKyAgICAgICAgICBDb252
ZXJ0VmlkZW9Sb3RhdGlvblRvQ1ZPQnl0ZSh2aWRlb19yb3RhdGlvbikpOworICAgICAgYmFzZV92
aWRlb19yb3RhdGlvbiA9IENvbnZlcnRWaWRlb1JvdGF0aW9uVG9DVk9CeXRlKHZpZGVvX3JvdGF0
aW9uKTsKKyAgICB9CisgIH0KKworICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZV9hdWRp
b19sZXZlbDsKKyAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2Vfdm9pY2VfYWN0aXZpdHk7
CisgIHsKKyAgICBib29sIHZvaWNlX2FjdGl2aXR5OworICAgIHVpbnQ4X3QgYXVkaW9fbGV2ZWw7
CisgICAgaWYgKGJhc2VfZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRlIEdldEV4dGVuc2lvbjxBdWRp
b0xldmVsPigmdm9pY2VfYWN0aXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXVkaW9fbGV2ZWwpKSB7CisgICAgICBS
VENfRENIRUNLX0xFKGF1ZGlvX2xldmVsLCAweDdGdSk7CisgICAgICBiYXNlX2F1ZGlvX2xldmVs
ID0gYXVkaW9fbGV2ZWw7CisgICAgICBwcm90b19iYXRjaC0+c2V0X2F1ZGlvX2xldmVsKGF1ZGlv
X2xldmVsKTsKKworICAgICAgYmFzZV92b2ljZV9hY3Rpdml0eSA9IHZvaWNlX2FjdGl2aXR5Owor
ICAgICAgcHJvdG9fYmF0Y2gtPnNldF92b2ljZV9hY3Rpdml0eSh2b2ljZV9hY3Rpdml0eSk7Cisg
ICAgfQorICB9CisKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAxKSB7CisgICAgcmV0dXJuOworICB9
CisKKyAgLy8gRGVsdGEgZW5jb2RpbmcKKyAgcHJvdG9fYmF0Y2gtPnNldF9udW1iZXJfb2ZfZGVs
dGFzKGJhdGNoLnNpemUoKSAtIDEpOworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50
NjRfdD4+IHZhbHVlcyhiYXRjaC5zaXplKCkgLSAxKTsKKyAgc3RkOjpzdHJpbmcgZW5jb2RlZF9k
ZWx0YXM7CisKKyAgLy8gdGltZXN0YW1wX21zIChldmVudCkKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0g
YmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IFRvVW5zaWduZWQoZXZlbnQtPnRpbWVzdGFt
cF9tcygpKTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhUb1Vuc2lnbmVk
KGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2Rl
bHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXNfZGVsdGFz
KGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIG1hcmtlciAoUlRQIGJhc2UpCisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRU
eXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBldmVudC0+aGVhZGVy
KCkuTWFya2VyKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9l
dmVudC0+aGVhZGVyKCkuTWFya2VyKCksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMu
ZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfbWFya2VyX2RlbHRhcyhlbmNvZGVkX2Rl
bHRhcyk7CisgIH0KKworICAvLyBwYXlsb2FkX3R5cGUgKFJUUCBiYXNlKQorICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50VHlwZSog
ZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmhlYWRlcigpLlBh
eWxvYWRUeXBlKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9l
dmVudC0+aGVhZGVyKCkuUGF5bG9hZFR5cGUoKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2Rl
bHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9wYXlsb2FkX3R5cGVfZGVsdGFz
KGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIHNlcXVlbmNlX251bWJlciAoUlRQIGJhc2Up
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29u
c3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBldmVu
dC0+aGVhZGVyKCkuU2VxdWVuY2VOdW1iZXIoKTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVu
Y29kZURlbHRhcyhiYXNlX2V2ZW50LT5oZWFkZXIoKS5TZXF1ZW5jZU51bWJlcigpLCB2YWx1ZXMp
OworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0
X3NlcXVlbmNlX251bWJlcl9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gcnRw
X3RpbWVzdGFtcCAoUlRQIGJhc2UpCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNp
emUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsK
KyAgICB2YWx1ZXNbaV0gPSBldmVudC0+aGVhZGVyKCkuVGltZXN0YW1wKCk7CisgIH0KKyAgZW5j
b2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+aGVhZGVyKCkuVGltZXN0YW1w
KCksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3Rv
X2JhdGNoLT5zZXRfcnRwX3RpbWVzdGFtcF9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisK
KyAgLy8gc3NyYyAoUlRQIGJhc2UpCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNp
emUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsK
KyAgICB2YWx1ZXNbaV0gPSBldmVudC0+aGVhZGVyKCkuU3NyYygpOworICB9CisgIGVuY29kZWRf
ZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPmhlYWRlcigpLlNzcmMoKSwgdmFsdWVz
KTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNl
dF9zc3JjX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBwYXlsb2FkX3NpemUg
KFJUUCBiYXNlKQorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkg
eworICAgIGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVz
W2ldID0gZXZlbnQtPnBheWxvYWRfbGVuZ3RoKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBF
bmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+cGF5bG9hZF9sZW5ndGgoKSwgdmFsdWVzKTsKKyAgaWYg
KCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9wYXlsb2Fk
X3NpemVfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIGhlYWRlcl9zaXplIChS
VFAgYmFzZSkKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tp
XSA9IGV2ZW50LT5oZWFkZXJfbGVuZ3RoKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNv
ZGVEZWx0YXMoYmFzZV9ldmVudC0+aGVhZGVyX2xlbmd0aCgpLCB2YWx1ZXMpOworICBpZiAoIWVu
Y29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X2hlYWRlcl9zaXpl
X2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBwYWRkaW5nX3NpemUgKFJUUCBi
YXNlKQorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAg
IGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0g
ZXZlbnQtPnBhZGRpbmdfbGVuZ3RoKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVE
ZWx0YXMoYmFzZV9ldmVudC0+cGFkZGluZ19sZW5ndGgoKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNv
ZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9wYWRkaW5nX3NpemVf
ZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIHRyYW5zcG9ydF9zZXF1ZW5jZV9u
dW1iZXIgKFJUUCBleHRlbnNpb24pCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNp
emUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsK
KyAgICB1aW50MTZfdCBzZXFudW07CisgICAgaWYgKGV2ZW50LT5oZWFkZXIoKS50ZW1wbGF0ZSBH
ZXRFeHRlbnNpb248VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI+KAorICAgICAgICAgICAgJnNlcW51
bSkpIHsKKyAgICAgIHZhbHVlc1tpXSA9IHNlcW51bTsKKyAgICB9IGVsc2UgeworICAgICAgdmFs
dWVzW2ldLnJlc2V0KCk7CisgICAgfQorICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVs
dGFzKGJhc2VfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciwgdmFsdWVzKTsKKyAgaWYgKCFlbmNv
ZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90cmFuc3BvcnRfc2Vx
dWVuY2VfbnVtYmVyX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyB0cmFuc21p
c3Npb25fdGltZV9vZmZzZXQgKFJUUCBleHRlbnNpb24pCisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJh
dGNoW2kgKyAxXTsKKyAgICBpbnQzMl90IG9mZnNldDsKKyAgICBpZiAoZXZlbnQtPmhlYWRlcigp
LnRlbXBsYXRlIEdldEV4dGVuc2lvbjxUcmFuc21pc3Npb25PZmZzZXQ+KCZvZmZzZXQpKSB7Cisg
ICAgICB2YWx1ZXNbaV0gPSBUb1Vuc2lnbmVkKG9mZnNldCk7CisgICAgfSBlbHNlIHsKKyAgICAg
IHZhbHVlc1tpXS5yZXNldCgpOworICAgIH0KKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29k
ZURlbHRhcyh1bnNpZ25lZF9iYXNlX3RyYW5zbWlzc2lvbl90aW1lX29mZnNldCwgdmFsdWVzKTsK
KyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90
cmFuc21pc3Npb25fdGltZV9vZmZzZXRfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisg
IC8vIGFic29sdXRlX3NlbmRfdGltZSAoUlRQIGV4dGVuc2lvbikKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50
ID0gYmF0Y2hbaSArIDFdOworICAgIHVpbnQzMl90IHNlbmR0aW1lOworICAgIGlmIChldmVudC0+
aGVhZGVyKCkudGVtcGxhdGUgR2V0RXh0ZW5zaW9uPEFic29sdXRlU2VuZFRpbWU+KCZzZW5kdGlt
ZSkpIHsKKyAgICAgIHZhbHVlc1tpXSA9IHNlbmR0aW1lOworICAgIH0gZWxzZSB7CisgICAgICB2
YWx1ZXNbaV0ucmVzZXQoKTsKKyAgICB9CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVE
ZWx0YXMoYmFzZV9hYnNvbHV0ZV9zZW5kX3RpbWUsIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9k
ZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfYWJzb2x1dGVfc2VuZF90aW1l
X2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyB2aWRlb19yb3RhdGlvbiAoUlRQ
IGV4dGVuc2lvbikKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIFZpZGVv
Um90YXRpb24gdmlkZW9fcm90YXRpb247CisgICAgaWYgKGV2ZW50LT5oZWFkZXIoKS50ZW1wbGF0
ZSBHZXRFeHRlbnNpb248VmlkZW9PcmllbnRhdGlvbj4oCisgICAgICAgICAgICAmdmlkZW9fcm90
YXRpb24pKSB7CisgICAgICB2YWx1ZXNbaV0gPSBDb252ZXJ0VmlkZW9Sb3RhdGlvblRvQ1ZPQnl0
ZSh2aWRlb19yb3RhdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tpXS5yZXNldCgp
OworICAgIH0KKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX3ZpZGVv
X3JvdGF0aW9uLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAg
ICBwcm90b19iYXRjaC0+c2V0X3ZpZGVvX3JvdGF0aW9uX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7
CisgIH0KKworICAvLyBhdWRpb19sZXZlbCAoUlRQIGV4dGVuc2lvbikKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2
ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIGJvb2wgdm9pY2VfYWN0aXZpdHk7CisgICAgdWludDhf
dCBhdWRpb19sZXZlbDsKKyAgICBpZiAoZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRlIEdldEV4dGVu
c2lvbjxBdWRpb0xldmVsPigmdm9pY2VfYWN0aXZpdHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmF1ZGlvX2xldmVsKSkgeworICAg
ICAgUlRDX0RDSEVDS19MRShhdWRpb19sZXZlbCwgMHg3RnUpOworICAgICAgdmFsdWVzW2ldID0g
YXVkaW9fbGV2ZWw7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tpXS5yZXNldCgpOworICAg
IH0KKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX2F1ZGlvX2xldmVs
LCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19i
YXRjaC0+c2V0X2F1ZGlvX2xldmVsX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAv
LyB2b2ljZV9hY3Rpdml0eSAoUlRQIGV4dGVuc2lvbikKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0
Y2hbaSArIDFdOworICAgIGJvb2wgdm9pY2VfYWN0aXZpdHk7CisgICAgdWludDhfdCBhdWRpb19s
ZXZlbDsKKyAgICBpZiAoZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRlIEdldEV4dGVuc2lvbjxBdWRp
b0xldmVsPigmdm9pY2VfYWN0aXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmF1ZGlvX2xldmVsKSkgeworICAgICAgUlRDX0RD
SEVDS19MRShhdWRpb19sZXZlbCwgMHg3RnUpOworICAgICAgdmFsdWVzW2ldID0gdm9pY2VfYWN0
aXZpdHk7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tpXS5yZXNldCgpOworICAgIH0KKyAg
fQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX3ZvaWNlX2FjdGl2aXR5LCB2
YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRj
aC0+c2V0X3ZvaWNlX2FjdGl2aXR5X2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KK30KK30g
IC8vIG5hbWVzcGFjZQorCitzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6
OkVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHV0Y190aW1lX3Vz
KSB7CisgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtIGV2ZW50X3N0cmVhbTsKKyAgcnRjbG9nMjo6QmVn
aW5Mb2dFdmVudCogcHJvdG9fYmF0Y2ggPSBldmVudF9zdHJlYW0uYWRkX2JlZ2luX2xvZ19ldmVu
dHMoKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXModGltZXN0YW1wX3VzIC8gMTAw
MCk7CisgIHByb3RvX2JhdGNoLT5zZXRfdmVyc2lvbigyKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF91
dGNfdGltZV9tcyh1dGNfdGltZV91cyAvIDEwMDApOworICByZXR1cm4gZXZlbnRfc3RyZWFtLlNl
cmlhbGl6ZUFzU3RyaW5nKCk7Cit9CisKK3N0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2Rlck5l
d0Zvcm1hdDo6RW5jb2RlTG9nRW5kKGludDY0X3QgdGltZXN0YW1wX3VzKSB7CisgIHJ0Y2xvZzI6
OkV2ZW50U3RyZWFtIGV2ZW50X3N0cmVhbTsKKyAgcnRjbG9nMjo6RW5kTG9nRXZlbnQqIHByb3Rv
X2JhdGNoID0gZXZlbnRfc3RyZWFtLmFkZF9lbmRfbG9nX2V2ZW50cygpOworICBwcm90b19iYXRj
aC0+c2V0X3RpbWVzdGFtcF9tcyh0aW1lc3RhbXBfdXMgLyAxMDAwKTsKKyAgcmV0dXJuIGV2ZW50
X3N0cmVhbS5TZXJpYWxpemVBc1N0cmluZygpOworfQorCitzdGQ6OnN0cmluZyBSdGNFdmVudExv
Z0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZUJhdGNoKAorICAgIHN0ZDo6ZGVxdWU8c3RkOjp1bmlx
dWVfcHRyPFJ0Y0V2ZW50Pj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luLAorICAgIHN0ZDo6ZGVxdWU8
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCkgeworICBydGNs
b2cyOjpFdmVudFN0cmVhbSBldmVudF9zdHJlYW07CisgIHN0ZDo6c3RyaW5nIGVuY29kZWRfb3V0
cHV0OworCisgIHsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudEFsclN0YXRlKj4gYWxy
X3N0YXRlX2V2ZW50czsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29y
a0FkYXB0YXRpb24qPgorICAgICAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb25fZXZlbnRzOwor
ICAgIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0Kj4gYXVkaW9fcGxheW91
dF9ldmVudHM7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJl
YW1Db25maWcqPgorICAgICAgICBhdWRpb19yZWN2X3N0cmVhbV9jb25maWdzOworICAgIHN0ZDo6
dmVjdG9yPGNvbnN0IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKj4gYXVkaW9fc2VuZF9z
dHJlYW1fY29uZmlnczsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZURl
bGF5QmFzZWQqPiBid2VfZGVsYXlfYmFzZWRfdXBkYXRlczsKKyAgICBzdGQ6OnZlY3Rvcjxjb25z
dCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCo+IGJ3ZV9sb3NzX2Jhc2VkX3VwZGF0ZXM7Cisg
ICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkKj4KKyAgICAg
ICAgcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50czsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBS
dGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZSo+IHByb2JlX3Jlc3VsdF9mYWlsdXJlX2V2ZW50czsK
KyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2Vzcyo+IHByb2Jl
X3Jlc3VsdF9zdWNjZXNzX2V2ZW50czsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudFJ0
Y3BQYWNrZXRJbmNvbWluZyo+IGluY29taW5nX3J0Y3BfcGFja2V0czsKKyAgICBzdGQ6OnZlY3Rv
cjxjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZyo+IG91dGdvaW5nX3J0Y3BfcGFja2V0
czsKKyAgICBzdGQ6Om1hcDx1aW50MzJfdCAvKiBTU1JDICovLCBzdGQ6OnZlY3Rvcjxjb25zdCBS
dGNFdmVudFJ0cFBhY2tldEluY29taW5nKj4+CisgICAgICAgIGluY29taW5nX3J0cF9wYWNrZXRz
OworICAgIHN0ZDo6bWFwPHVpbnQzMl90IC8qIFNTUkMgKi8sIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0
Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcqPj4KKyAgICAgICAgb3V0Z29pbmdfcnRwX3BhY2tldHM7
CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcq
PgorICAgICAgICB2aWRlb19yZWN2X3N0cmVhbV9jb25maWdzOworICAgIHN0ZDo6dmVjdG9yPGNv
bnN0IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKj4gdmlkZW9fc2VuZF9zdHJlYW1fY29u
ZmlnczsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25m
aWcqPiBpY2VfY2FuZGlkYXRlX2NvbmZpZ3M7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZl
bnRJY2VDYW5kaWRhdGVQYWlyKj4gaWNlX2NhbmRpZGF0ZV9ldmVudHM7CisKKyAgICBmb3IgKGF1
dG8gaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICBzd2l0Y2ggKCgqaXQpLT5H
ZXRUeXBlKCkpIHsKKyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6QWxyU3RhdGVFdmVudDog
eworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PGNvbnN0IFJ0Y0V2ZW50QWxyU3RhdGUqIGNvbnN0PihpdC0+Z2V0KCkpOworICAgICAgICAgIGFs
cl9zdGF0ZV9ldmVudHMucHVzaF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6QXVkaW9OZXR3b3JrQWRhcHRh
dGlvbjogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiogY29uc3Q+KAorICAg
ICAgICAgICAgICAgICAgaXQtPmdldCgpKTsKKyAgICAgICAgICBhdWRpb19uZXR3b3JrX2FkYXB0
YXRpb25fZXZlbnRzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OkF1ZGlvUGxheW91dDogeworICAg
ICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0
IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KiBjb25zdD4oaXQtPmdldCgpKTsKKyAgICAgICAgICBhdWRp
b19wbGF5b3V0X2V2ZW50cy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpBdWRpb1JlY2VpdmVTdHJl
YW1Db25maWc6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxjb25zdCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyogY29uc3Q+
KAorICAgICAgICAgICAgICAgICAgaXQtPmdldCgpKTsKKyAgICAgICAgICBhdWRpb19yZWN2X3N0
cmVhbV9jb25maWdzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OkF1ZGlvU2VuZFN0cmVhbUNvbmZp
ZzogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGNvbnN0IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKiBjb25zdD4oCisgICAgICAg
ICAgICAgICAgICBpdC0+Z2V0KCkpOworICAgICAgICAgIGF1ZGlvX3NlbmRfc3RyZWFtX2NvbmZp
Z3MucHVzaF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6QndlVXBkYXRlRGVsYXlCYXNlZDogeworICAgICAg
ICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0
Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCogY29uc3Q+KGl0LT5nZXQoKSk7CisgICAgICAgICAg
YndlX2RlbGF5X2Jhc2VkX3VwZGF0ZXMucHVzaF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6QndlVXBkYXRl
TG9zc0Jhc2VkOiB7CisgICAgICAgICAgYXV0byogcnRjX2V2ZW50ID0KKyAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQqIGNvbnN0PihpdC0+
Z2V0KCkpOworICAgICAgICAgIGJ3ZV9sb3NzX2Jhc2VkX3VwZGF0ZXMucHVzaF9iYWNrKHJ0Y19l
dmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNFdmVu
dDo6VHlwZTo6UHJvYmVDbHVzdGVyQ3JlYXRlZDogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVu
dCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVzdGVy
Q3JlYXRlZCogY29uc3Q+KGl0LT5nZXQoKSk7CisgICAgICAgICAgcHJvYmVfY2x1c3Rlcl9jcmVh
dGVkX2V2ZW50cy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpQcm9iZVJlc3VsdEZhaWx1cmU6IHsK
KyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxj
b25zdCBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZSogY29uc3Q+KGl0LT5nZXQoKSk7CisgICAg
ICAgICAgcHJvYmVfcmVzdWx0X2ZhaWx1cmVfZXZlbnRzLnB1c2hfYmFjayhydGNfZXZlbnQpOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6
OlByb2JlUmVzdWx0U3VjY2VzczogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzKiBj
b25zdD4oaXQtPmdldCgpKTsKKyAgICAgICAgICBwcm9iZV9yZXN1bHRfc3VjY2Vzc19ldmVudHMu
cHVzaF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6UnRjcFBhY2tldEluY29taW5nOiB7CisgICAgICAgICAg
YXV0byogcnRjX2V2ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZl
bnRSdGNwUGFja2V0SW5jb21pbmcqIGNvbnN0PihpdC0+Z2V0KCkpOworICAgICAgICAgIGluY29t
aW5nX3J0Y3BfcGFja2V0cy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpSdGNwUGFja2V0T3V0Z29p
bmc6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZyogY29uc3Q+KGl0LT5nZXQoKSk7
CisgICAgICAgICAgb3V0Z29pbmdfcnRjcF9wYWNrZXRzLnB1c2hfYmFjayhydGNfZXZlbnQpOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6
OlJ0cFBhY2tldEluY29taW5nOiB7CisgICAgICAgICAgYXV0byogcnRjX2V2ZW50ID0KKyAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyogY29u
c3Q+KGl0LT5nZXQoKSk7CisgICAgICAgICAgYXV0byYgdiA9IGluY29taW5nX3J0cF9wYWNrZXRz
W3J0Y19ldmVudC0+aGVhZGVyKCkuU3NyYygpXTsKKyAgICAgICAgICB2LmVtcGxhY2VfYmFjayhy
dGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRj
RXZlbnQ6OlR5cGU6OlJ0cFBhY2tldE91dGdvaW5nOiB7CisgICAgICAgICAgYXV0byogcnRjX2V2
ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRSdHBQYWNrZXRP
dXRnb2luZyogY29uc3Q+KGl0LT5nZXQoKSk7CisgICAgICAgICAgYXV0byYgdiA9IG91dGdvaW5n
X3J0cF9wYWNrZXRzW3J0Y19ldmVudC0+aGVhZGVyKCkuU3NyYygpXTsKKyAgICAgICAgICB2LmVt
cGxhY2VfYmFjayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OlZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZzogeworICAg
ICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0
IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnKiBjb25zdD4oCisgICAgICAgICAgICAg
ICAgICBpdC0+Z2V0KCkpOworICAgICAgICAgIHZpZGVvX3JlY3Zfc3RyZWFtX2NvbmZpZ3MucHVz
aF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBSdGNFdmVudDo6VHlwZTo6VmlkZW9TZW5kU3RyZWFtQ29uZmlnOiB7CisgICAgICAgICAg
YXV0byogcnRjX2V2ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZl
bnRWaWRlb1NlbmRTdHJlYW1Db25maWcqIGNvbnN0PigKKyAgICAgICAgICAgICAgICAgIGl0LT5n
ZXQoKSk7CisgICAgICAgICAgdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlncy5wdXNoX2JhY2socnRj
X2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2
ZW50OjpUeXBlOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOiB7CisgICAgICAgICAgYXV0byogcnRj
X2V2ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnKiBjb25zdD4oCisgICAgICAgICAgICAgICAgICBpdC0+Z2V0KCkpOwor
ICAgICAgICAgIGljZV9jYW5kaWRhdGVfY29uZmlncy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpJ
Y2VDYW5kaWRhdGVQYWlyRXZlbnQ6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXIqIGNv
bnN0PihpdC0+Z2V0KCkpOworICAgICAgICAgIGljZV9jYW5kaWRhdGVfZXZlbnRzLnB1c2hfYmFj
ayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAg
fQorCisgICAgRW5jb2RlQWxyU3RhdGUoYWxyX3N0YXRlX2V2ZW50cywgJmV2ZW50X3N0cmVhbSk7
CisgICAgRW5jb2RlQXVkaW9OZXR3b3JrQWRhcHRhdGlvbihhdWRpb19uZXR3b3JrX2FkYXB0YXRp
b25fZXZlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV2ZW50X3N0cmVh
bSk7CisgICAgRW5jb2RlQXVkaW9QbGF5b3V0KGF1ZGlvX3BsYXlvdXRfZXZlbnRzLCAmZXZlbnRf
c3RyZWFtKTsKKyAgICBFbmNvZGVBdWRpb1JlY3ZTdHJlYW1Db25maWcoYXVkaW9fcmVjdl9zdHJl
YW1fY29uZmlncywgJmV2ZW50X3N0cmVhbSk7CisgICAgRW5jb2RlQXVkaW9TZW5kU3RyZWFtQ29u
ZmlnKGF1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZ3MsICZldmVudF9zdHJlYW0pOworICAgIEVuY29k
ZUJ3ZVVwZGF0ZURlbGF5QmFzZWQoYndlX2RlbGF5X2Jhc2VkX3VwZGF0ZXMsICZldmVudF9zdHJl
YW0pOworICAgIEVuY29kZUJ3ZVVwZGF0ZUxvc3NCYXNlZChid2VfbG9zc19iYXNlZF91cGRhdGVz
LCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVQcm9iZUNsdXN0ZXJDcmVhdGVkKHByb2JlX2Ns
dXN0ZXJfY3JlYXRlZF9ldmVudHMsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZVByb2JlUmVz
dWx0RmFpbHVyZShwcm9iZV9yZXN1bHRfZmFpbHVyZV9ldmVudHMsICZldmVudF9zdHJlYW0pOwor
ICAgIEVuY29kZVByb2JlUmVzdWx0U3VjY2Vzcyhwcm9iZV9yZXN1bHRfc3VjY2Vzc19ldmVudHMs
ICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZVJ0Y3BQYWNrZXRJbmNvbWluZyhpbmNvbWluZ19y
dGNwX3BhY2tldHMsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZVJ0Y3BQYWNrZXRPdXRnb2lu
ZyhvdXRnb2luZ19ydGNwX3BhY2tldHMsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZVJ0cFBh
Y2tldEluY29taW5nKGluY29taW5nX3J0cF9wYWNrZXRzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBF
bmNvZGVSdHBQYWNrZXRPdXRnb2luZyhvdXRnb2luZ19ydHBfcGFja2V0cywgJmV2ZW50X3N0cmVh
bSk7CisgICAgRW5jb2RlVmlkZW9SZWN2U3RyZWFtQ29uZmlnKHZpZGVvX3JlY3Zfc3RyZWFtX2Nv
bmZpZ3MsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZVZpZGVvU2VuZFN0cmVhbUNvbmZpZyh2
aWRlb19zZW5kX3N0cmVhbV9jb25maWdzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVJY2VD
YW5kaWRhdGVQYWlyQ29uZmlnKGljZV9jYW5kaWRhdGVfY29uZmlncywgJmV2ZW50X3N0cmVhbSk7
CisgICAgRW5jb2RlSWNlQ2FuZGlkYXRlUGFpckV2ZW50KGljZV9jYW5kaWRhdGVfZXZlbnRzLCAm
ZXZlbnRfc3RyZWFtKTsKKyAgfSAgLy8gRGVhbGxvY2F0ZSB0aGUgdGVtcG9yYXJ5IHZlY3RvcnMu
CisKKyAgcmV0dXJuIGV2ZW50X3N0cmVhbS5TZXJpYWxpemVBc1N0cmluZygpOworfQorCit2b2lk
IFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlQWxyU3RhdGUoCisgICAgcnRjOjpB
cnJheVZpZXc8Y29uc3QgUnRjRXZlbnRBbHJTdGF0ZSo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2
ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBSdGNFdmVudEFsclN0YXRl
KiBiYXNlX2V2ZW50IDogYmF0Y2gpIHsKKyAgICBydGNsb2cyOjpBbHJTdGF0ZSogcHJvdG9fYmF0
Y2ggPSBldmVudF9zdHJlYW0tPmFkZF9hbHJfc3RhdGVzKCk7CisgICAgcHJvdG9fYmF0Y2gtPnNl
dF90aW1lc3RhbXBfbXMoYmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpOworICAgIHByb3RvX2Jh
dGNoLT5zZXRfaW5fYWxyKGJhc2VfZXZlbnQtPmluX2FscigpKTsKKyAgfQorICAvLyBUT0RPKHRl
cmVsaXVzKTogU2hvdWxkIHdlIGRlbHRhLWNvbXByZXNzIHRoaXMgZXZlbnQgdHlwZT8KK30KKwor
dm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZUF1ZGlvTmV0d29ya0FkYXB0
YXRpb24oCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFw
dGF0aW9uKj4gYmF0Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkg
eworICBpZiAoYmF0Y2guc2l6ZSgpID09IDApCisgICAgcmV0dXJuOworCisgIC8vIEJhc2UgZXZl
bnQKKyAgY29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKiBjb25zdCBiYXNlX2V2
ZW50ID0gYmF0Y2hbMF07CisgIHJ0Y2xvZzI6OkF1ZGlvTmV0d29ya0FkYXB0YXRpb25zKiBwcm90
b19iYXRjaCA9CisgICAgICBldmVudF9zdHJlYW0tPmFkZF9hdWRpb19uZXR3b3JrX2FkYXB0YXRp
b25zKCk7CisgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVz
dGFtcF9tcygpKTsKKyAgaWYgKGJhc2VfZXZlbnQtPmNvbmZpZygpLmJpdHJhdGVfYnBzLmhhc192
YWx1ZSgpKQorICAgIHByb3RvX2JhdGNoLT5zZXRfYml0cmF0ZV9icHMoYmFzZV9ldmVudC0+Y29u
ZmlnKCkuYml0cmF0ZV9icHMudmFsdWUoKSk7CisgIGlmIChiYXNlX2V2ZW50LT5jb25maWcoKS5m
cmFtZV9sZW5ndGhfbXMuaGFzX3ZhbHVlKCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X2ZyYW1l
X2xlbmd0aF9tcygKKyAgICAgICAgYmFzZV9ldmVudC0+Y29uZmlnKCkuZnJhbWVfbGVuZ3RoX21z
LnZhbHVlKCkpOworICB9CisgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlX3VwbGlua19w
YWNrZXRfbG9zc19mcmFjdGlvbjsKKyAgaWYgKGJhc2VfZXZlbnQtPmNvbmZpZygpLnVwbGlua19w
YWNrZXRfbG9zc19mcmFjdGlvbi5oYXNfdmFsdWUoKSkgeworICAgIGJhc2VfdXBsaW5rX3BhY2tl
dF9sb3NzX2ZyYWN0aW9uID0gQ29udmVydFBhY2tldExvc3NGcmFjdGlvblRvUHJvdG9Gb3JtYXQo
CisgICAgICAgIGJhc2VfZXZlbnQtPmNvbmZpZygpLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlv
bi52YWx1ZSgpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3VwbGlua19wYWNrZXRfbG9zc19mcmFj
dGlvbigKKyAgICAgICAgYmFzZV91cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24udmFsdWUoKSk7
CisgIH0KKyAgaWYgKGJhc2VfZXZlbnQtPmNvbmZpZygpLmVuYWJsZV9mZWMuaGFzX3ZhbHVlKCkp
CisgICAgcHJvdG9fYmF0Y2gtPnNldF9lbmFibGVfZmVjKGJhc2VfZXZlbnQtPmNvbmZpZygpLmVu
YWJsZV9mZWMudmFsdWUoKSk7CisgIGlmIChiYXNlX2V2ZW50LT5jb25maWcoKS5lbmFibGVfZHR4
Lmhhc192YWx1ZSgpKQorICAgIHByb3RvX2JhdGNoLT5zZXRfZW5hYmxlX2R0eChiYXNlX2V2ZW50
LT5jb25maWcoKS5lbmFibGVfZHR4LnZhbHVlKCkpOworICAvLyBOb3RlIHRoYXQgfG51bV9jaGFu
bmVsc19kZWx0YXN8IGVuY29kZXMgTiBhcyBOLTEsIHRvIGtlZXAgZGVsdGFzIHNtYWxsZXIsCisg
IC8vIGJ1dCB0aGVyZSdzIG5vIHJlYXNvbiB0byBkbyB0aGUgc2FtZSBmb3IgdGhlIGJhc2UgZXZl
bnQncyB2YWx1ZSwgc2luY2UKKyAgLy8gbm8gYml0cyB3aWxsIGJlIHNwYXJlZC4KKyAgaWYgKGJh
c2VfZXZlbnQtPmNvbmZpZygpLm51bV9jaGFubmVscy5oYXNfdmFsdWUoKSkKKyAgICBwcm90b19i
YXRjaC0+c2V0X251bV9jaGFubmVscyhiYXNlX2V2ZW50LT5jb25maWcoKS5udW1fY2hhbm5lbHMu
dmFsdWUoKSk7CisKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAxKQorICAgIHJldHVybjsKKworICAv
LyBEZWx0YSBlbmNvZGluZworICBwcm90b19iYXRjaC0+c2V0X251bWJlcl9vZl9kZWx0YXMoYmF0
Y2guc2l6ZSgpIC0gMSk7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4g
dmFsdWVzKGJhdGNoLnNpemUoKSAtIDEpOworICBzdGQ6OnN0cmluZyBlbmNvZGVkX2RlbHRhczsK
KworICAvLyB0aW1lc3RhbXBfbXMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24qIGV2
ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IFRvVW5zaWduZWQoZXZlbnQtPnRp
bWVzdGFtcF9tcygpKTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhUb1Vu
c2lnbmVkKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNv
ZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXNf
ZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIGJpdHJhdGVfYnBzCisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgUnRjRXZl
bnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICBpZiAo
ZXZlbnQtPmNvbmZpZygpLmJpdHJhdGVfYnBzLmhhc192YWx1ZSgpKSB7CisgICAgICB2YWx1ZXNb
aV0gPSBUb1Vuc2lnbmVkKGV2ZW50LT5jb25maWcoKS5iaXRyYXRlX2Jwcy52YWx1ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgdmFsdWVzW2ldLnJlc2V0KCk7CisgICAgfQorICB9CisgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiB1bnNpZ25lZF9iYXNlX2JpdHJhdGVfYnBzID0KKyAg
ICAgIGJhc2VfZXZlbnQtPmNvbmZpZygpLmJpdHJhdGVfYnBzLmhhc192YWx1ZSgpCisgICAgICAg
ICAgPyBUb1Vuc2lnbmVkKGJhc2VfZXZlbnQtPmNvbmZpZygpLmJpdHJhdGVfYnBzLnZhbHVlKCkp
CisgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgZW5jb2RlZF9kZWx0
YXMgPSBFbmNvZGVEZWx0YXModW5zaWduZWRfYmFzZV9iaXRyYXRlX2JwcywgdmFsdWVzKTsKKyAg
aWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9iaXRy
YXRlX2Jwc19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gZnJhbWVfbGVuZ3Ro
X21zCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAg
Y29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKiBldmVudCA9IGJhdGNoW2kgKyAx
XTsKKyAgICBpZiAoZXZlbnQtPmNvbmZpZygpLmZyYW1lX2xlbmd0aF9tcy5oYXNfdmFsdWUoKSkg
eworICAgICAgdmFsdWVzW2ldID0gVG9VbnNpZ25lZChldmVudC0+Y29uZmlnKCkuZnJhbWVfbGVu
Z3RoX21zLnZhbHVlKCkpOworICAgIH0gZWxzZSB7CisgICAgICB2YWx1ZXNbaV0ucmVzZXQoKTsK
KyAgICB9CisgIH0KKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHVuc2lnbmVkX2Jh
c2VfZnJhbWVfbGVuZ3RoX21zID0KKyAgICAgIGJhc2VfZXZlbnQtPmNvbmZpZygpLmZyYW1lX2xl
bmd0aF9tcy5oYXNfdmFsdWUoKQorICAgICAgICAgID8gVG9VbnNpZ25lZChiYXNlX2V2ZW50LT5j
b25maWcoKS5mcmFtZV9sZW5ndGhfbXMudmFsdWUoKSkKKyAgICAgICAgICA6IGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90PigpOworICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyh1bnNpZ25l
ZF9iYXNlX2ZyYW1lX2xlbmd0aF9tcywgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5l
bXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9mcmFtZV9sZW5ndGhfbXNfZGVsdGFzKGVu
Y29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbgor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0
IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiogZXZlbnQgPSBiYXRjaFtpICsgMV07Cisg
ICAgaWYgKGV2ZW50LT5jb25maWcoKS51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24uaGFzX3Zh
bHVlKCkpIHsKKyAgICAgIHZhbHVlc1tpXSA9IENvbnZlcnRQYWNrZXRMb3NzRnJhY3Rpb25Ub1By
b3RvRm9ybWF0KAorICAgICAgICAgIGV2ZW50LT5jb25maWcoKS51cGxpbmtfcGFja2V0X2xvc3Nf
ZnJhY3Rpb24udmFsdWUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tpXS5yZXNldCgp
OworICAgIH0KKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX3VwbGlu
a19wYWNrZXRfbG9zc19mcmFjdGlvbiwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5l
bXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF91cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rp
b25fZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIGVuYWJsZV9mZWMKKyAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBSdGNF
dmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24qIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZh
bHVlc1tpXSA9IGV2ZW50LT5jb25maWcoKS5lbmFibGVfZmVjOworICB9CisgIGVuY29kZWRfZGVs
dGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPmNvbmZpZygpLmVuYWJsZV9mZWMsIHZhbHVl
cyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5z
ZXRfZW5hYmxlX2ZlY19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gZW5hYmxl
X2R0eAorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAg
IGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiogZXZlbnQgPSBiYXRjaFtpICsg
MV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmNvbmZpZygpLmVuYWJsZV9kdHg7CisgIH0KKyAg
ZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+Y29uZmlnKCkuZW5hYmxl
X2R0eCwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJv
dG9fYmF0Y2gtPnNldF9lbmFibGVfZHR4X2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKwor
ICAvLyBudW1fY2hhbm5lbHMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24qIGV2ZW50
ID0gYmF0Y2hbaSArIDFdOworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHNpemVfdD4gbnVtX2No
YW5uZWxzID0gZXZlbnQtPmNvbmZpZygpLm51bV9jaGFubmVsczsKKyAgICBpZiAobnVtX2NoYW5u
ZWxzLmhhc192YWx1ZSgpKSB7CisgICAgICAvLyBTaW5jZSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxz
IGlzIGFsd2F5cyBncmVhdGVyIHRoYW4gMCwgd2UgY2FuIGVuY29kZQorICAgICAgLy8gTiBjaGFu
bmVscyBhcyBOLTEsIHRoZXJlYnkgbWFraW5nIHN1cmUgdGhhdCB3ZSBnZXQgc21hbGxlciBkZWx0
YXMuCisgICAgICAvLyBUaGF0IGlzLCBhIHRvZ2dsZSBvZiAxLT4yLT4xIGNhbiBiZSBlbmNvZGVk
IGFzIGRlbHRhcyB2ZWN0b3IgKDEsIDEpLAorICAgICAgLy8gcmF0aGVyIHRoYW4gYXMgKDEsIDMp
IG9yICgxLCAtMSksIGVpdGhlciBvZiB3aGljaCB3b3VsZCByZXF1aXJlIHR3bworICAgICAgLy8g
Yml0cyBwZXIgZGVsdGEuCisgICAgICBSVENfRENIRUNLX0dUKG51bV9jaGFubmVscy52YWx1ZSgp
LCAwdSk7CisgICAgICB2YWx1ZXNbaV0gPSBudW1fY2hhbm5lbHMudmFsdWUoKSAtIDE7CisgICAg
fSBlbHNlIHsKKyAgICAgIHZhbHVlc1tpXS5yZXNldCgpOworICAgIH0KKyAgfQorICAvLyBJbiB0
aGUgYmFzZSBldmVudCwgTiBjaGFubmVscyBlbmNvZGVkIGFzIE4gY2hhbm5lbHMsIGJ1dCBmb3Ig
ZGVsdGEKKyAgLy8gY29tcHJlc3Npb24gcHVycG9zZXMsIGFsc28gc2hpZnRlZCBkb3duIGJ5IDEu
CisgIGFic2w6Om9wdGlvbmFsPHNpemVfdD4gc2hpZnRlZF9iYXNlX251bV9jaGFubmVsczsKKyAg
aWYgKGJhc2VfZXZlbnQtPmNvbmZpZygpLm51bV9jaGFubmVscy5oYXNfdmFsdWUoKSkgeworICAg
IFJUQ19EQ0hFQ0tfR1QoYmFzZV9ldmVudC0+Y29uZmlnKCkubnVtX2NoYW5uZWxzLnZhbHVlKCks
IDB1KTsKKyAgICBzaGlmdGVkX2Jhc2VfbnVtX2NoYW5uZWxzID0gYmFzZV9ldmVudC0+Y29uZmln
KCkubnVtX2NoYW5uZWxzLnZhbHVlKCkgLSAxOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5j
b2RlRGVsdGFzKHNoaWZ0ZWRfYmFzZV9udW1fY2hhbm5lbHMsIHZhbHVlcyk7CisgIGlmICghZW5j
b2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfbnVtX2NoYW5uZWxz
X2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29k
ZXJOZXdGb3JtYXQ6OkVuY29kZUF1ZGlvUGxheW91dCgKKyAgICBydGM6OkFycmF5Vmlldzxjb25z
dCBSdGNFdmVudEF1ZGlvUGxheW91dCo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFt
KiBldmVudF9zdHJlYW0pIHsKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAwKQorICAgIHJldHVybjsK
KworICAvLyBCYXNlIGV2ZW50CisgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KiBjb25zdCBi
YXNlX2V2ZW50ID0gYmF0Y2hbMF07CisgIHJ0Y2xvZzI6OkF1ZGlvUGxheW91dEV2ZW50cyogcHJv
dG9fYmF0Y2ggPQorICAgICAgZXZlbnRfc3RyZWFtLT5hZGRfYXVkaW9fcGxheW91dF9ldmVudHMo
KTsKKyAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXMoYmFzZV9ldmVudC0+dGltZXN0YW1w
X21zKCkpOworICBwcm90b19iYXRjaC0+c2V0X2xvY2FsX3NzcmMoYmFzZV9ldmVudC0+c3NyYygp
KTsKKworICBpZiAoYmF0Y2guc2l6ZSgpID09IDEpCisgICAgcmV0dXJuOworCisgIC8vIERlbHRh
IGVuY29kaW5nCisgIHByb3RvX2JhdGNoLT5zZXRfbnVtYmVyX29mX2RlbHRhcyhiYXRjaC5zaXpl
KCkgLSAxKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMo
YmF0Y2guc2l6ZSgpIC0gMSk7CisgIHN0ZDo6c3RyaW5nIGVuY29kZWRfZGVsdGFzOworCisgIC8v
IHRpbWVzdGFtcF9tcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsr
aSkgeworICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KiBldmVudCA9IGJhdGNoW2kgKyAx
XTsKKyAgICB2YWx1ZXNbaV0gPSBUb1Vuc2lnbmVkKGV2ZW50LT50aW1lc3RhbXBfbXMoKSk7Cisg
IH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoVG9VbnNpZ25lZChiYXNlX2V2ZW50
LT50aW1lc3RhbXBfbXMoKSksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHko
KSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zX2RlbHRhcyhlbmNvZGVkX2Rl
bHRhcyk7CisgIH0KKworICAvLyBsb2NhbF9zc3JjCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQqIGV2
ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IGV2ZW50LT5zc3JjKCk7CisgIH0K
KyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+c3NyYygpLCB2YWx1
ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+
c2V0X2xvY2FsX3NzcmNfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorfQorCit2b2lkIFJ0
Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlQXVkaW9SZWN2U3RyZWFtQ29uZmlnKAor
ICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmln
Kj4gYmF0Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBm
b3IgKGNvbnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKiBiYXNlX2V2ZW50IDog
YmF0Y2gpIHsKKyAgICBydGNsb2cyOjpBdWRpb1JlY3ZTdHJlYW1Db25maWcqIHByb3RvX2JhdGNo
ID0KKyAgICAgICAgZXZlbnRfc3RyZWFtLT5hZGRfYXVkaW9fcmVjdl9zdHJlYW1fY29uZmlncygp
OworICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFt
cF9tcygpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3JlbW90ZV9zc3JjKGJhc2VfZXZlbnQtPmNv
bmZpZygpLnJlbW90ZV9zc3JjKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2xvY2FsX3NzcmMoYmFz
ZV9ldmVudC0+Y29uZmlnKCkubG9jYWxfc3NyYyk7CisKKyAgICBydGNsb2cyOjpSdHBIZWFkZXJF
eHRlbnNpb25Db25maWcqIHByb3RvX2NvbmZpZyA9CisgICAgICAgIHByb3RvX2JhdGNoLT5tdXRh
YmxlX2hlYWRlcl9leHRlbnNpb25zKCk7CisgICAgYm9vbCBoYXNfcmVjb2duaXplZF9leHRlbnNp
b25zID0KKyAgICAgICAgQ29udmVydFRvUHJvdG9Gb3JtYXQoYmFzZV9ldmVudC0+Y29uZmlnKCku
cnRwX2V4dGVuc2lvbnMsIHByb3RvX2NvbmZpZyk7CisgICAgaWYgKCFoYXNfcmVjb2duaXplZF9l
eHRlbnNpb25zKQorICAgICAgcHJvdG9fYmF0Y2gtPmNsZWFyX2hlYWRlcl9leHRlbnNpb25zKCk7
CisgIH0KK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZUF1ZGlv
U2VuZFN0cmVhbUNvbmZpZygKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudEF1ZGlv
U2VuZFN0cmVhbUNvbmZpZyo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVu
dF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyog
YmFzZV9ldmVudCA6IGJhdGNoKSB7CisgICAgcnRjbG9nMjo6QXVkaW9TZW5kU3RyZWFtQ29uZmln
KiBwcm90b19iYXRjaCA9CisgICAgICAgIGV2ZW50X3N0cmVhbS0+YWRkX2F1ZGlvX3NlbmRfc3Ry
ZWFtX2NvbmZpZ3MoKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2
ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9zc3JjKGJhc2VfZXZl
bnQtPmNvbmZpZygpLmxvY2FsX3NzcmMpOworCisgICAgcnRjbG9nMjo6UnRwSGVhZGVyRXh0ZW5z
aW9uQ29uZmlnKiBwcm90b19jb25maWcgPQorICAgICAgICBwcm90b19iYXRjaC0+bXV0YWJsZV9o
ZWFkZXJfZXh0ZW5zaW9ucygpOworICAgIGJvb2wgaGFzX3JlY29nbml6ZWRfZXh0ZW5zaW9ucyA9
CisgICAgICAgIENvbnZlcnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQtPmNvbmZpZygpLnJ0cF9l
eHRlbnNpb25zLCBwcm90b19jb25maWcpOworICAgIGlmICghaGFzX3JlY29nbml6ZWRfZXh0ZW5z
aW9ucykKKyAgICAgIHByb3RvX2JhdGNoLT5jbGVhcl9oZWFkZXJfZXh0ZW5zaW9ucygpOworICB9
Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVCd2VVcGRhdGVE
ZWxheUJhc2VkKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVs
YXlCYXNlZCo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0p
IHsKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAwKQorICAgIHJldHVybjsKKworICAvLyBCYXNlIGV2
ZW50CisgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCogY29uc3QgYmFzZV9ldmVu
dCA9IGJhdGNoWzBdOworICBydGNsb2cyOjpEZWxheUJhc2VkQndlVXBkYXRlcyogcHJvdG9fYmF0
Y2ggPQorICAgICAgZXZlbnRfc3RyZWFtLT5hZGRfZGVsYXlfYmFzZWRfYndlX3VwZGF0ZXMoKTsK
KyAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXMoYmFzZV9ldmVudC0+dGltZXN0YW1wX21z
KCkpOworICBwcm90b19iYXRjaC0+c2V0X2JpdHJhdGVfYnBzKGJhc2VfZXZlbnQtPmJpdHJhdGVf
YnBzKCkpOworICBwcm90b19iYXRjaC0+c2V0X2RldGVjdG9yX3N0YXRlKAorICAgICAgQ29udmVy
dFRvUHJvdG9Gb3JtYXQoYmFzZV9ldmVudC0+ZGV0ZWN0b3Jfc3RhdGUoKSkpOworCisgIGlmIChi
YXRjaC5zaXplKCkgPT0gMSkKKyAgICByZXR1cm47CisKKyAgLy8gRGVsdGEgZW5jb2RpbmcKKyAg
cHJvdG9fYmF0Y2gtPnNldF9udW1iZXJfb2ZfZGVsdGFzKGJhdGNoLnNpemUoKSAtIDEpOworICBz
dGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHZhbHVlcyhiYXRjaC5zaXplKCkg
LSAxKTsKKyAgc3RkOjpzdHJpbmcgZW5jb2RlZF9kZWx0YXM7CisKKyAgLy8gdGltZXN0YW1wX21z
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29u
c3QgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAg
ICB2YWx1ZXNbaV0gPSBUb1Vuc2lnbmVkKGV2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgIH0KKyAg
ZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoVG9VbnNpZ25lZChiYXNlX2V2ZW50LT50aW1l
c3RhbXBfbXMoKSksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgewor
ICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7
CisgIH0KKworICAvLyBiaXRyYXRlX2JwcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVl
cy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCog
ZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmJpdHJhdGVfYnBz
KCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+Yml0
cmF0ZV9icHMoKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7Cisg
ICAgcHJvdG9fYmF0Y2gtPnNldF9iaXRyYXRlX2Jwc19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOwor
ICB9CisKKyAgLy8gZGV0ZWN0b3Jfc3RhdGUKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQq
IGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9CisgICAgICAgIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihDb252ZXJ0VG9Qcm90b0Zvcm1hdChldmVudC0+ZGV0ZWN0b3Jfc3RhdGUo
KSkpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKAorICAgICAgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KENvbnZlcnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQtPmRldGVjdG9y
X3N0YXRlKCkpKSwKKyAgICAgIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHko
KSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfZGV0ZWN0b3Jfc3RhdGVfZGVsdGFzKGVuY29kZWRf
ZGVsdGFzKTsKKyAgfQorfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5j
b2RlQndlVXBkYXRlTG9zc0Jhc2VkKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50
QndlVXBkYXRlTG9zc0Jhc2VkKj4gYmF0Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2
ZW50X3N0cmVhbSkgeworICBpZiAoYmF0Y2guc2l6ZSgpID09IDApCisgICAgcmV0dXJuOworCisg
IC8vIEJhc2UgZXZlbnQKKyAgY29uc3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQqIGNvbnN0
IGJhc2VfZXZlbnQgPSBiYXRjaFswXTsKKyAgcnRjbG9nMjo6TG9zc0Jhc2VkQndlVXBkYXRlcyog
cHJvdG9fYmF0Y2ggPQorICAgICAgZXZlbnRfc3RyZWFtLT5hZGRfbG9zc19iYXNlZF9id2VfdXBk
YXRlcygpOworICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1l
c3RhbXBfbXMoKSk7CisgIHByb3RvX2JhdGNoLT5zZXRfYml0cmF0ZV9icHMoYmFzZV9ldmVudC0+
Yml0cmF0ZV9icHMoKSk7CisgIHByb3RvX2JhdGNoLT5zZXRfZnJhY3Rpb25fbG9zcyhiYXNlX2V2
ZW50LT5mcmFjdGlvbl9sb3NzKCkpOworICBwcm90b19iYXRjaC0+c2V0X3RvdGFsX3BhY2tldHMo
YmFzZV9ldmVudC0+dG90YWxfcGFja2V0cygpKTsKKworICBpZiAoYmF0Y2guc2l6ZSgpID09IDEp
CisgICAgcmV0dXJuOworCisgIC8vIERlbHRhIGVuY29kaW5nCisgIHByb3RvX2JhdGNoLT5zZXRf
bnVtYmVyX29mX2RlbHRhcyhiYXRjaC5zaXplKCkgLSAxKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMoYmF0Y2guc2l6ZSgpIC0gMSk7CisgIHN0ZDo6c3Ry
aW5nIGVuY29kZWRfZGVsdGFzOworCisgIC8vIHRpbWVzdGFtcF9tcworICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBk
YXRlTG9zc0Jhc2VkKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBUb1Vu
c2lnbmVkKGV2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBF
bmNvZGVEZWx0YXMoVG9VbnNpZ25lZChiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSksIHZhbHVl
cyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5z
ZXRfdGltZXN0YW1wX21zX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBiaXRy
YXRlX2JwcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgewor
ICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkKiBldmVudCA9IGJhdGNoW2kgKyAx
XTsKKyAgICB2YWx1ZXNbaV0gPSBldmVudC0+Yml0cmF0ZV9icHMoKTsKKyAgfQorICBlbmNvZGVk
X2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX2V2ZW50LT5iaXRyYXRlX2JwcygpLCB2YWx1ZXMp
OworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0
X2JpdHJhdGVfYnBzX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBmcmFjdGlv
bl9sb3NzCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7Cisg
ICAgY29uc3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQqIGV2ZW50ID0gYmF0Y2hbaSArIDFd
OworICAgIHZhbHVlc1tpXSA9IGV2ZW50LT5mcmFjdGlvbl9sb3NzKCk7CisgIH0KKyAgZW5jb2Rl
ZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+ZnJhY3Rpb25fbG9zcygpLCB2YWx1
ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+
c2V0X2ZyYWN0aW9uX2xvc3NfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIHRv
dGFsX3BhY2tldHMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCogZXZlbnQgPSBiYXRjaFtp
ICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPnRvdGFsX3BhY2tldHMoKTsKKyAgfQorICBl
bmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX2V2ZW50LT50b3RhbF9wYWNrZXRzKCks
IHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2Jh
dGNoLT5zZXRfdG90YWxfcGFja2V0c19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9Cit9CisK
K3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVQcm9iZUNsdXN0ZXJDcmVh
dGVkKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRl
ZCo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAg
Zm9yIChjb25zdCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQqIGJhc2VfZXZlbnQgOiBiYXRj
aCkgeworICAgIHJ0Y2xvZzI6OkJ3ZVByb2JlQ2x1c3RlciogcHJvdG9fYmF0Y2ggPSBldmVudF9z
dHJlYW0tPmFkZF9wcm9iZV9jbHVzdGVycygpOworICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0
YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0
X2lkKGJhc2VfZXZlbnQtPmlkKCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfYml0cmF0ZV9icHMo
YmFzZV9ldmVudC0+Yml0cmF0ZV9icHMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9taW5fcGFj
a2V0cyhiYXNlX2V2ZW50LT5taW5fcHJvYmVzKCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfbWlu
X2J5dGVzKGJhc2VfZXZlbnQtPm1pbl9ieXRlcygpKTsKKyAgfQorfQorCit2b2lkIFJ0Y0V2ZW50
TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlUHJvYmVSZXN1bHRGYWlsdXJlKAorICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlKj4gYmF0Y2gsCisgICAg
cnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBmb3IgKGNvbnN0IFJ0Y0V2
ZW50UHJvYmVSZXN1bHRGYWlsdXJlKiBiYXNlX2V2ZW50IDogYmF0Y2gpIHsKKyAgICBydGNsb2cy
OjpCd2VQcm9iZVJlc3VsdEZhaWx1cmUqIHByb3RvX2JhdGNoID0KKyAgICAgICAgZXZlbnRfc3Ry
ZWFtLT5hZGRfcHJvYmVfZmFpbHVyZSgpOworICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1w
X21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2lk
KGJhc2VfZXZlbnQtPmlkKCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfZmFpbHVyZSgKKyAgICAg
ICAgQ29udmVydFRvUHJvdG9Gb3JtYXQoYmFzZV9ldmVudC0+ZmFpbHVyZV9yZWFzb24oKSkpOwor
ICB9CisgIC8vIFRPRE8odGVyZWxpdXMpOiBTaG91bGQgd2UgZGVsdGEtY29tcHJlc3MgdGhpcyBl
dmVudCB0eXBlPworfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2Rl
UHJvYmVSZXN1bHRTdWNjZXNzKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50UHJv
YmVSZXN1bHRTdWNjZXNzKj4gYmF0Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50
X3N0cmVhbSkgeworICBmb3IgKGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzKiBiYXNl
X2V2ZW50IDogYmF0Y2gpIHsKKyAgICBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdFN1Y2Nlc3MqIHBy
b3RvX2JhdGNoID0KKyAgICAgICAgZXZlbnRfc3RyZWFtLT5hZGRfcHJvYmVfc3VjY2VzcygpOwor
ICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9t
cygpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2lkKGJhc2VfZXZlbnQtPmlkKCkpOworICAgIHBy
b3RvX2JhdGNoLT5zZXRfYml0cmF0ZV9icHMoYmFzZV9ldmVudC0+Yml0cmF0ZV9icHMoKSk7Cisg
IH0KKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YS1jb21wcmVzcyB0aGlzIGV2
ZW50IHR5cGU/Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVS
dGNwUGFja2V0SW5jb21pbmcoCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRSdGNw
UGFja2V0SW5jb21pbmcqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRf
c3RyZWFtKSB7CisgIGlmIChiYXRjaC5lbXB0eSgpKSB7CisgICAgcmV0dXJuOworICB9CisgIEVu
Y29kZVJ0Y3BQYWNrZXQoYmF0Y2gsIGV2ZW50X3N0cmVhbS0+YWRkX2luY29taW5nX3J0Y3BfcGFj
a2V0cygpKTsKK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZVJ0
Y3BQYWNrZXRPdXRnb2luZygKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFJ0Y3BQ
YWNrZXRPdXRnb2luZyo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9z
dHJlYW0pIHsKKyAgaWYgKGJhdGNoLmVtcHR5KCkpIHsKKyAgICByZXR1cm47CisgIH0KKyAgRW5j
b2RlUnRjcFBhY2tldChiYXRjaCwgZXZlbnRfc3RyZWFtLT5hZGRfb3V0Z29pbmdfcnRjcF9wYWNr
ZXRzKCkpOworfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlUnRw
UGFja2V0SW5jb21pbmcoCisgICAgY29uc3Qgc3RkOjptYXA8dWludDMyX3QsIHN0ZDo6dmVjdG9y
PGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcqPj4mCisgICAgICAgIGJhdGNoLAorICAg
IHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChhdXRvIGl0IDog
YmF0Y2gpIHsKKyAgICBSVENfRENIRUNLKCFpdC5zZWNvbmQuZW1wdHkoKSk7CisgICAgRW5jb2Rl
UnRwUGFja2V0KGl0LnNlY29uZCwgZXZlbnRfc3RyZWFtLT5hZGRfaW5jb21pbmdfcnRwX3BhY2tl
dHMoKSk7CisgIH0KK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29k
ZVJ0cFBhY2tldE91dGdvaW5nKAorICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBzdGQ6OnZl
Y3Rvcjxjb25zdCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nKj4+JgorICAgICAgICBiYXRjaCwK
KyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7CisgIGZvciAoYXV0byBp
dCA6IGJhdGNoKSB7CisgICAgUlRDX0RDSEVDSyghaXQuc2Vjb25kLmVtcHR5KCkpOworICAgIEVu
Y29kZVJ0cFBhY2tldChpdC5zZWNvbmQsIGV2ZW50X3N0cmVhbS0+YWRkX291dGdvaW5nX3J0cF9w
YWNrZXRzKCkpOworICB9Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpF
bmNvZGVWaWRlb1JlY3ZTdHJlYW1Db25maWcoCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRj
RXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpFdmVu
dFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7CisgIGZvciAoY29uc3QgUnRjRXZlbnRWaWRlb1JlY2Vp
dmVTdHJlYW1Db25maWcqIGJhc2VfZXZlbnQgOiBiYXRjaCkgeworICAgIHJ0Y2xvZzI6OlZpZGVv
UmVjdlN0cmVhbUNvbmZpZyogcHJvdG9fYmF0Y2ggPQorICAgICAgICBldmVudF9zdHJlYW0tPmFk
ZF92aWRlb19yZWN2X3N0cmVhbV9jb25maWdzKCk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90aW1l
c3RhbXBfbXMoYmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpOworICAgIHByb3RvX2JhdGNoLT5z
ZXRfcmVtb3RlX3NzcmMoYmFzZV9ldmVudC0+Y29uZmlnKCkucmVtb3RlX3NzcmMpOworICAgIHBy
b3RvX2JhdGNoLT5zZXRfbG9jYWxfc3NyYyhiYXNlX2V2ZW50LT5jb25maWcoKS5sb2NhbF9zc3Jj
KTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3J0eF9zc3JjKGJhc2VfZXZlbnQtPmNvbmZpZygpLnJ0
eF9zc3JjKTsKKworICAgIHJ0Y2xvZzI6OlJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyogcHJvdG9f
Y29uZmlnID0KKyAgICAgICAgcHJvdG9fYmF0Y2gtPm11dGFibGVfaGVhZGVyX2V4dGVuc2lvbnMo
KTsKKyAgICBib29sIGhhc19yZWNvZ25pemVkX2V4dGVuc2lvbnMgPQorICAgICAgICBDb252ZXJ0
VG9Qcm90b0Zvcm1hdChiYXNlX2V2ZW50LT5jb25maWcoKS5ydHBfZXh0ZW5zaW9ucywgcHJvdG9f
Y29uZmlnKTsKKyAgICBpZiAoIWhhc19yZWNvZ25pemVkX2V4dGVuc2lvbnMpCisgICAgICBwcm90
b19iYXRjaC0+Y2xlYXJfaGVhZGVyX2V4dGVuc2lvbnMoKTsKKyAgfQorfQorCit2b2lkIFJ0Y0V2
ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlVmlkZW9TZW5kU3RyZWFtQ29uZmlnKAorICAg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKj4gYmF0
Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBmb3IgKGNv
bnN0IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKiBiYXNlX2V2ZW50IDogYmF0Y2gpIHsK
KyAgICBydGNsb2cyOjpWaWRlb1NlbmRTdHJlYW1Db25maWcqIHByb3RvX2JhdGNoID0KKyAgICAg
ICAgZXZlbnRfc3RyZWFtLT5hZGRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlncygpOworICAgIHBy
b3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsK
KyAgICBwcm90b19iYXRjaC0+c2V0X3NzcmMoYmFzZV9ldmVudC0+Y29uZmlnKCkubG9jYWxfc3Ny
Yyk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9ydHhfc3NyYyhiYXNlX2V2ZW50LT5jb25maWcoKS5y
dHhfc3NyYyk7CisKKyAgICBydGNsb2cyOjpSdHBIZWFkZXJFeHRlbnNpb25Db25maWcqIHByb3Rv
X2NvbmZpZyA9CisgICAgICAgIHByb3RvX2JhdGNoLT5tdXRhYmxlX2hlYWRlcl9leHRlbnNpb25z
KCk7CisgICAgYm9vbCBoYXNfcmVjb2duaXplZF9leHRlbnNpb25zID0KKyAgICAgICAgQ29udmVy
dFRvUHJvdG9Gb3JtYXQoYmFzZV9ldmVudC0+Y29uZmlnKCkucnRwX2V4dGVuc2lvbnMsIHByb3Rv
X2NvbmZpZyk7CisgICAgaWYgKCFoYXNfcmVjb2duaXplZF9leHRlbnNpb25zKQorICAgICAgcHJv
dG9fYmF0Y2gtPmNsZWFyX2hlYWRlcl9leHRlbnNpb25zKCk7CisgIH0KK30KKwordm9pZCBSdGNF
dmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZUljZUNhbmRpZGF0ZVBhaXJDb25maWcoCisg
ICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKj4g
YmF0Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBmb3Ig
KGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyogYmFzZV9ldmVudCA6IGJhdGNo
KSB7CisgICAgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyogcHJvdG9fYmF0Y2ggPQor
ICAgICAgICBldmVudF9zdHJlYW0tPmFkZF9pY2VfY2FuZGlkYXRlX2NvbmZpZ3MoKTsKKworICAg
IHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygp
KTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2NvbmZpZ190eXBlKENvbnZlcnRUb1Byb3RvRm9ybWF0
KGJhc2VfZXZlbnQtPnR5cGUoKSkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfY2FuZGlkYXRlX3Bh
aXJfaWQoYmFzZV9ldmVudC0+Y2FuZGlkYXRlX3BhaXJfaWQoKSk7CisgICAgY29uc3QgYXV0byYg
ZGVzYyA9IGJhc2VfZXZlbnQtPmNhbmRpZGF0ZV9wYWlyX2Rlc2MoKTsKKyAgICBwcm90b19iYXRj
aC0+c2V0X2xvY2FsX2NhbmRpZGF0ZV90eXBlKAorICAgICAgICBDb252ZXJ0VG9Qcm90b0Zvcm1h
dChkZXNjLmxvY2FsX2NhbmRpZGF0ZV90eXBlKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9sb2Nh
bF9yZWxheV9wcm90b2NvbCgKKyAgICAgICAgQ29udmVydFRvUHJvdG9Gb3JtYXQoZGVzYy5sb2Nh
bF9yZWxheV9wcm90b2NvbCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfbG9jYWxfbmV0d29ya190
eXBlKAorICAgICAgICBDb252ZXJ0VG9Qcm90b0Zvcm1hdChkZXNjLmxvY2FsX25ldHdvcmtfdHlw
ZSkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfbG9jYWxfYWRkcmVzc19mYW1pbHkoCisgICAgICAg
IENvbnZlcnRUb1Byb3RvRm9ybWF0KGRlc2MubG9jYWxfYWRkcmVzc19mYW1pbHkpKTsKKyAgICBw
cm90b19iYXRjaC0+c2V0X3JlbW90ZV9jYW5kaWRhdGVfdHlwZSgKKyAgICAgICAgQ29udmVydFRv
UHJvdG9Gb3JtYXQoZGVzYy5yZW1vdGVfY2FuZGlkYXRlX3R5cGUpKTsKKyAgICBwcm90b19iYXRj
aC0+c2V0X3JlbW90ZV9hZGRyZXNzX2ZhbWlseSgKKyAgICAgICAgQ29udmVydFRvUHJvdG9Gb3Jt
YXQoZGVzYy5yZW1vdGVfYWRkcmVzc19mYW1pbHkpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2Nh
bmRpZGF0ZV9wYWlyX3Byb3RvY29sKAorICAgICAgICBDb252ZXJ0VG9Qcm90b0Zvcm1hdChkZXNj
LmNhbmRpZGF0ZV9wYWlyX3Byb3RvY29sKSk7CisgIH0KKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNo
b3VsZCB3ZSBkZWx0YS1jb21wcmVzcyB0aGlzIGV2ZW50IHR5cGU/Cit9CisKK3ZvaWQgUnRjRXZl
bnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVJY2VDYW5kaWRhdGVQYWlyRXZlbnQoCisgICAg
cnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyKj4gYmF0Y2gsCisg
ICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBmb3IgKGNvbnN0IFJ0
Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpciogYmFzZV9ldmVudCA6IGJhdGNoKSB7CisgICAgcnRjbG9n
Mjo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50KiBwcm90b19iYXRjaCA9CisgICAgICAgIGV2ZW50X3N0
cmVhbS0+YWRkX2ljZV9jYW5kaWRhdGVfZXZlbnRzKCk7CisKKyAgICBwcm90b19iYXRjaC0+c2V0
X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisKKyAgICBwcm90b19i
YXRjaC0+c2V0X2V2ZW50X3R5cGUoQ29udmVydFRvUHJvdG9Gb3JtYXQoYmFzZV9ldmVudC0+dHlw
ZSgpKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9jYW5kaWRhdGVfcGFpcl9pZChiYXNlX2V2ZW50
LT5jYW5kaWRhdGVfcGFpcl9pZCgpKTsKKyAgfQorICAvLyBUT0RPKHRlcmVsaXVzKTogU2hvdWxk
IHdlIGRlbHRhLWNvbXByZXNzIHRoaXMgZXZlbnQgdHlwZT8KK30KKworfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVy
X25ld19mb3JtYXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9uZXdf
Zm9ybWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RmYTQ5MDExNGI0ZWI4ODNiYzc4OTYxNTE0OThlOTgxMTBh
ODgwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5j
b2Rlcl9uZXdfZm9ybWF0LmgKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChj
KSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX1JUQ19FVkVOVF9MT0df
RU5DT0RFUl9ORVdfRk9STUFUX0hfCisjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNP
REVSX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9ORVdfRk9STUFUX0hfCisKKyNpbmNsdWRlIDxkZXF1
ZT4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0cmluZz4K
KyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlci5o
IgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworbmFtZXNwYWNlIHJ0Y2xvZzIgeworY2xhc3MgRXZl
bnRTdHJlYW07ICAvLyBBdXRvLWdlbmVyYXRlZCBmcm9tIHByb3RvYnVmLgorfSAgLy8gbmFtZXNw
YWNlIHJ0Y2xvZzIKKworY2xhc3MgUnRjRXZlbnRBbHJTdGF0ZTsKK2NsYXNzIFJ0Y0V2ZW50QXVk
aW9OZXR3b3JrQWRhcHRhdGlvbjsKK2NsYXNzIFJ0Y0V2ZW50QXVkaW9QbGF5b3V0OworY2xhc3Mg
UnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc7CitjbGFzcyBSdGNFdmVudEF1ZGlvU2Vu
ZFN0cmVhbUNvbmZpZzsKK2NsYXNzIFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZDsKK2NsYXNz
IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkOworY2xhc3MgUnRjRXZlbnRMb2dnaW5nU3RhcnRl
ZDsKK2NsYXNzIFJ0Y0V2ZW50TG9nZ2luZ1N0b3BwZWQ7CitjbGFzcyBSdGNFdmVudFByb2JlQ2x1
c3RlckNyZWF0ZWQ7CitjbGFzcyBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZTsKK2NsYXNzIFJ0
Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzOworY2xhc3MgUnRjRXZlbnRSdGNwUGFja2V0SW5jb21p
bmc7CitjbGFzcyBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZzsKK2NsYXNzIFJ0Y0V2ZW50UnRw
UGFja2V0SW5jb21pbmc7CitjbGFzcyBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nOworY2xhc3Mg
UnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWc7CitjbGFzcyBSdGNFdmVudFZpZGVvU2Vu
ZFN0cmVhbUNvbmZpZzsKK2NsYXNzIFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzsKK2Ns
YXNzIFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcjsKK2NsYXNzIFJ0cFBhY2tldDsKKworY2xhc3Mg
UnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0IGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50TG9nRW5j
b2RlciB7CisgcHVibGljOgorICB+UnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0KCkgb3ZlcnJp
ZGUgPSBkZWZhdWx0OworCisgIHN0ZDo6c3RyaW5nIEVuY29kZUJhdGNoKAorICAgICAgc3RkOjpk
ZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+Pjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4sCisg
ICAgICBzdGQ6OmRlcXVlPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4+Ojpjb25zdF9pdGVyYXRv
ciBlbmQpIG92ZXJyaWRlOworCisgIHN0ZDo6c3RyaW5nIEVuY29kZUxvZ1N0YXJ0KGludDY0X3Qg
dGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHV0Y190
aW1lX3VzKSBvdmVycmlkZTsKKyAgc3RkOjpzdHJpbmcgRW5jb2RlTG9nRW5kKGludDY0X3QgdGlt
ZXN0YW1wX3VzKSBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIC8vIEVuY29kaW5nIGVudHJ5LXBv
aW50IGZvciB0aGUgdmFyaW91cyBSdGNFdmVudCBzdWJjbGFzc2VzLgorICB2b2lkIEVuY29kZUFs
clN0YXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QWxyU3RhdGUqPiBiYXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsK
KyAgdm9pZCBFbmNvZGVBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAorICAgICAgcnRjOjpBcnJheVZp
ZXc8Y29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKj4gYmF0Y2gsCisgICAgICBy
dGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVBdWRpb1Bs
YXlvdXQocnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQqPiBiYXRjaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0
cmVhbSk7CisgIHZvaWQgRW5jb2RlQXVkaW9SZWN2U3RyZWFtQ29uZmlnKAorICAgICAgcnRjOjpB
cnJheVZpZXc8Y29uc3QgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWcqPiBiYXRjaCwK
KyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2b2lkIEVuY29k
ZUF1ZGlvU2VuZFN0cmVhbUNvbmZpZygKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2
ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKj4gYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0
cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVCd2VVcGRhdGVEZWxheUJhc2VkKAor
ICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkKj4g
YmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9p
ZCBFbmNvZGVCd2VVcGRhdGVMb3NzQmFzZWQoCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBS
dGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCo+IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRT
dHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlTG9nZ2luZ1N0YXJ0ZWQocnRjOjpB
cnJheVZpZXc8Y29uc3QgUnRjRXZlbnRMb2dnaW5nU3RhcnRlZCo+IGJhdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOwor
ICB2b2lkIEVuY29kZUxvZ2dpbmdTdG9wcGVkKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50
TG9nZ2luZ1N0b3BwZWQqPiBiYXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGNs
b2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVQcm9iZUNsdXN0
ZXJDcmVhdGVkKAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRQcm9iZUNsdXN0
ZXJDcmVhdGVkKj4gYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3Ry
ZWFtKTsKKyAgdm9pZCBFbmNvZGVQcm9iZVJlc3VsdEZhaWx1cmUoCisgICAgICBydGM6OkFycmF5
Vmlldzxjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZSo+IGJhdGNoLAorICAgICAgcnRj
bG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlUHJvYmVSZXN1
bHRTdWNjZXNzKAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRQcm9iZVJlc3Vs
dFN1Y2Nlc3MqPiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJl
YW0pOworICB2b2lkIEVuY29kZVJ0Y3BQYWNrZXRJbmNvbWluZygKKyAgICAgIHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nKj4gYmF0Y2gsCisgICAgICBydGNs
b2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVSdGNwUGFja2V0
T3V0Z29pbmcoCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRP
dXRnb2luZyo+IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVh
bSk7CisgIHZvaWQgRW5jb2RlUnRwUGFja2V0SW5jb21pbmcoCisgICAgICBjb25zdCBzdGQ6Om1h
cDx1aW50MzJfdCwgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyo+
PiYKKyAgICAgICAgICBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9z
dHJlYW0pOworICB2b2lkIEVuY29kZVJ0cFBhY2tldE91dGdvaW5nKAorICAgICAgY29uc3Qgc3Rk
OjptYXA8dWludDMyX3QsIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29p
bmcqPj4mCisgICAgICAgICAgYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZl
bnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVWaWRlb1JlY3ZTdHJlYW1Db25maWcoCisgICAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyo+IGJh
dGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQg
RW5jb2RlVmlkZW9TZW5kU3RyZWFtQ29uZmlnKAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qg
UnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWcqPiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2
ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2b2lkIEVuY29kZUljZUNhbmRpZGF0ZVBhaXJD
b25maWcoCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBh
aXJDb25maWcqPiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJl
YW0pOworICB2b2lkIEVuY29kZUljZUNhbmRpZGF0ZVBhaXJFdmVudCgKKyAgICAgIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcio+IGJhdGNoLAorICAgICAgcnRj
bG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCisKKyNlbmRpZiAgLy8gTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09ERVJfUlRDX0VW
RU5UX0xPR19FTkNPREVSX05FV19GT1JNQVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVy
L3J0Y19ldmVudF9sb2dfZW5jb2Rlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19l
dmVudF9sb2dfZW5jb2Rlcl91bml0dGVzdC5jYwppbmRleCA5OTBmYTYwODBiYjk0NjEzZDU0MzQ3
NDQ2MGI4N2Y4YTNjNDZjMDhlLi44NTZiZWM2NmU3Y2NjMDgxYzM2NDA3YThjMjY0MWQxNWRhNDdj
YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX3VuaXR0
ZXN0LmNjCkBAIC0xMSw5ICsxMSwxMSBAQAogI2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUgPGxp
bWl0cz4KICNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHVwbGU+CiAKICNpbmNsdWRlICJh
YnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5j
b2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbGVnYWN5LmgiCisjaW5jbHVkZSAibG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25ld19mb3JtYXQuaCIK
ICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hbHJfc3Rh
dGUuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9h
dWRpb19uZXR3b3JrX2FkYXB0YXRpb24uaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19wbGF5b3V0LmgiCkBAIC0zOSwxNTYgKzQxLDM1NyBA
QAogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLQotY2xh
c3MgUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFt
PGludD4geworY2xhc3MgUnRjRXZlbnRMb2dFbmNvZGVyVGVzdAorICAgIDogcHVibGljIHRlc3Rp
bmc6OlRlc3RXaXRoUGFyYW08c3RkOjp0dXBsZTxpbnQsIGJvb2wsIHNpemVfdCwgYm9vbD4+IHsK
ICBwcm90ZWN0ZWQ6CiAgIFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QoKQotICAgICAgOiBlbmNvZGVy
XyhuZXcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5KSwKLSAgICAgICAgc2VlZF8oR2V0UGFyYW0o
KSksCisgICAgICA6IHNlZWRfKHN0ZDo6Z2V0PDA+KEdldFBhcmFtKCkpKSwKICAgICAgICAgcHJu
Z18oc2VlZF8pLAotICAgICAgICBnZW5fKHNlZWRfICogODgwMDAxVUwpIHt9CisgICAgICAgIG5l
d19lbmNvZGluZ18oc3RkOjpnZXQ8MT4oR2V0UGFyYW0oKSkpLAorICAgICAgICBldmVudF9jb3Vu
dF8oc3RkOjpnZXQ8Mj4oR2V0UGFyYW0oKSkpLAorICAgICAgICBmb3JjZV9yZXBlYXRlZF9maWVs
ZHNfKHN0ZDo6Z2V0PDM+KEdldFBhcmFtKCkpKSwKKyAgICAgICAgZ2VuXyhzZWVkXyAqIDg4MDAw
MVVMKSwKKyAgICAgICAgdmVyaWZpZXJfKG5ld19lbmNvZGluZ18gPyBSdGNFdmVudExvZzo6RW5j
b2RpbmdUeXBlOjpOZXdGb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBS
dGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpMZWdhY3kpIHsKKyAgICBpZiAobmV3X2VuY29kaW5n
XykKKyAgICAgIGVuY29kZXJfID0gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dFbmNvZGVy
TmV3Rm9ybWF0PigpOworICAgIGVsc2UKKyAgICAgIGVuY29kZXJfID0gYWJzbDo6bWFrZV91bmlx
dWU8UnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5PigpOworICB9CiAgIH5SdGNFdmVudExvZ0VuY29k
ZXJUZXN0KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OwogCiAgIC8vIEFOQSBldmVudHMgaGF2ZSBzb21l
IG9wdGlvbmFsIGZpZWxkcywgc28gd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBnZXQKICAg
Ly8gY29ycmVjdCBiZWhhdmlvciBib3RoIHdoZW4gYWxsIG9mIHRoZSB2YWx1ZXMgYXJlIHRoZXJl
LCBhcyB3ZWxsIGFzIHdoZW4KICAgLy8gb25seSBzb21lLgogICB2b2lkIFRlc3RSdGNFdmVudEF1
ZGlvTmV0d29ya0FkYXB0YXRpb24oCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVy
UnVudGltZUNvbmZpZz4gcnVudGltZV9jb25maWcpOworICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4+Jik7CisKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIEV2ZW50VHlwZT4KKyAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50VHlw
ZT4gTmV3UnRwUGFja2V0KAorICAgICAgdWludDMyX3Qgc3NyYywKKyAgICAgIGNvbnN0IFJ0cEhl
YWRlckV4dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCk7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFBhcnNlZFR5cGU+CisgIGNvbnN0IHN0ZDo6dmVjdG9yPFBhcnNlZFR5cGU+KiBHZXRSdHBQYWNr
ZXRzQnlTc3JjKAorICAgICAgY29uc3QgUGFyc2VkUnRjRXZlbnRMb2dOZXcqIHBhcnNlZF9sb2cs
CisgICAgICB1aW50MzJfdCBzc3JjKTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXZlbnRUeXBl
LCB0eXBlbmFtZSBQYXJzZWRUeXBlPgorICB2b2lkIFRlc3RSdHBQYWNrZXRzKCk7CiAKICAgc3Rk
OjpkZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+PiBoaXN0b3J5XzsKLSAgLy8gVE9ETyhl
bGFkYWxvbik6IE9uY2Ugd2UgaGF2ZSBtb3JlIHRoYW4gb25lIHBvc3NpYmxlIGVuY29kZXIsIHBh
cmFtZXRlcml6ZQotICAvLyBlbmNvZGVyIHNlbGVjdGlvbi4KICAgc3RkOjp1bmlxdWVfcHRyPFJ0
Y0V2ZW50TG9nRW5jb2Rlcj4gZW5jb2Rlcl87CiAgIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3IHBhcnNl
ZF9sb2dfOwogICBjb25zdCB1aW50NjRfdCBzZWVkXzsKICAgUmFuZG9tIHBybmdfOworICBjb25z
dCBib29sIG5ld19lbmNvZGluZ187CisgIGNvbnN0IHNpemVfdCBldmVudF9jb3VudF87CisgIGNv
bnN0IGJvb2wgZm9yY2VfcmVwZWF0ZWRfZmllbGRzXzsKICAgdGVzdDo6RXZlbnRHZW5lcmF0b3Ig
Z2VuXzsKKyAgdGVzdDo6RXZlbnRWZXJpZmllciB2ZXJpZmllcl87CiB9OwogCi1URVNUX1AoUnRj
RXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRBbHJTdGF0ZSkgewotICBzdGQ6OnVuaXF1ZV9w
dHI8UnRjRXZlbnRBbHJTdGF0ZT4gZXZlbnQgPSBnZW5fLk5ld0FsclN0YXRlKCk7Ci0gIGhpc3Rv
cnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgpKTsKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyVGVz
dDo6VGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbigKKyAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPj4mCisg
ICAgICAgIGV2ZW50cykgeworICBBU1NFUlRfVFJVRShoaXN0b3J5Xy5lbXB0eSgpKSA8PCAiRnVu
Y3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHBlciB0ZXN0LiI7CisKKyAgZm9yIChhdXRvJiBl
dmVudCA6IGV2ZW50cykgeworICAgIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgpKTsK
KyAgfQogCiAgIHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBlbmNvZGVyXy0+RW5jb2RlQmF0Y2goaGlz
dG9yeV8uYmVnaW4oKSwgaGlzdG9yeV8uZW5kKCkpOwogICBBU1NFUlRfVFJVRShwYXJzZWRfbG9n
Xy5QYXJzZVN0cmluZyhlbmNvZGVkKSk7Ci0gIGNvbnN0IGF1dG8mIGFscl9zdGF0ZV9ldmVudHMg
PSBwYXJzZWRfbG9nXy5hbHJfc3RhdGVfZXZlbnRzKCk7CisgIGNvbnN0IGF1dG8mIGFuYV9jb25m
aWdzID0gcGFyc2VkX2xvZ18uYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uX2V2ZW50cygpOwogCi0g
IEFTU0VSVF9FUShhbHJfc3RhdGVfZXZlbnRzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSh0
ZXN0OjpWZXJpZnlMb2dnZWRBbHJTdGF0ZUV2ZW50KCpldmVudCwgYWxyX3N0YXRlX2V2ZW50c1sw
XSkpOworICBBU1NFUlRfRVEoYW5hX2NvbmZpZ3Muc2l6ZSgpLCBldmVudHMuc2l6ZSgpKTsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICB2ZXJpZmll
cl8uVmVyaWZ5TG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50KCpldmVudHNbaV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmFf
Y29uZmlnc1tpXSk7CisgIH0KIH0KIAotdm9pZCBSdGNFdmVudExvZ0VuY29kZXJUZXN0OjpUZXN0
UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b0VuY29kZXJSdW50aW1lQ29uZmlnPiBydW50aW1lX2NvbmZpZykgewotICAvLyBUaGlzIGZ1bmN0
aW9uIGlzIGNhbGxlZCByZXBlYXRlZGx5LiBDbGVhciBzdGF0ZSBiZXR3ZWVuIGNhbGxzLgotICBo
aXN0b3J5Xy5jbGVhcigpOwotICBhdXRvIG9yaWdpbmFsX3J1bnRpbWVfY29uZmlnID0gKnJ1bnRp
bWVfY29uZmlnOwotICBhdXRvIGV2ZW50ID0gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRp
b05ldHdvcmtBZGFwdGF0aW9uPigKLSAgICAgIHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOwot
ICBjb25zdCBpbnQ2NF90IHRpbWVzdGFtcF91cyA9IGV2ZW50LT50aW1lc3RhbXBfdXNfOwotICBo
aXN0b3J5Xy5wdXNoX2JhY2soc3RkOjptb3ZlKGV2ZW50KSk7Cit0ZW1wbGF0ZSA8Pgorc3RkOjp1
bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc+IFJ0Y0V2ZW50TG9nRW5jb2RlclRl
c3Q6Ok5ld1J0cFBhY2tldCgKKyAgICB1aW50MzJfdCBzc3JjLAorICAgIGNvbnN0IFJ0cEhlYWRl
ckV4dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCkgeworICByZXR1cm4gZ2VuXy5OZXdSdHBQYWNr
ZXRJbmNvbWluZyhzc3JjLCBleHRlbnNpb25fbWFwLCBmYWxzZSk7Cit9CisKK3RlbXBsYXRlIDw+
CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZz4gUnRjRXZlbnRMb2dF
bmNvZGVyVGVzdDo6TmV3UnRwUGFja2V0KAorICAgIHVpbnQzMl90IHNzcmMsCisgICAgY29uc3Qg
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBleHRlbnNpb25fbWFwKSB7CisgIHJldHVybiBnZW5fLk5l
d1J0cFBhY2tldE91dGdvaW5nKHNzcmMsIGV4dGVuc2lvbl9tYXAsIGZhbHNlKTsKK30KKwordGVt
cGxhdGUgPD4KK2NvbnN0IHN0ZDo6dmVjdG9yPExvZ2dlZFJ0cFBhY2tldEluY29taW5nPioKK1J0
Y0V2ZW50TG9nRW5jb2RlclRlc3Q6OkdldFJ0cFBhY2tldHNCeVNzcmMoCisgICAgY29uc3QgUGFy
c2VkUnRjRXZlbnRMb2dOZXcqIHBhcnNlZF9sb2csCisgICAgdWludDMyX3Qgc3NyYykgeworICBj
b25zdCBhdXRvJiBpbmNvbWluZ19zdHJlYW1zID0gcGFyc2VkX2xvZy0+aW5jb21pbmdfcnRwX3Bh
Y2tldHNfYnlfc3NyYygpOworICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IGluY29taW5nX3N0
cmVhbXMpIHsKKyAgICBpZiAoc3RyZWFtLnNzcmMgPT0gc3NyYykgeworICAgICAgcmV0dXJuICZz
dHJlYW0uaW5jb21pbmdfcGFja2V0czsKKyAgICB9CisgIH0KKyAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3RlbXBsYXRlIDw+Citjb25zdCBzdGQ6OnZlY3RvcjxMb2dnZWRSdHBQYWNrZXRPdXRnb2lu
Zz4qCitSdGNFdmVudExvZ0VuY29kZXJUZXN0OjpHZXRSdHBQYWNrZXRzQnlTc3JjKAorICAgIGNv
bnN0IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3KiBwYXJzZWRfbG9nLAorICAgIHVpbnQzMl90IHNzcmMp
IHsKKyAgY29uc3QgYXV0byYgb3V0Z29pbmdfc3RyZWFtcyA9IHBhcnNlZF9sb2ctPm91dGdvaW5n
X3J0cF9wYWNrZXRzX2J5X3NzcmMoKTsKKyAgZm9yIChjb25zdCBhdXRvJiBzdHJlYW0gOiBvdXRn
b2luZ19zdHJlYW1zKSB7CisgICAgaWYgKHN0cmVhbS5zc3JjID09IHNzcmMpIHsKKyAgICAgIHJl
dHVybiAmc3RyZWFtLm91dGdvaW5nX3BhY2tldHM7CisgICAgfQorICB9CisgIHJldHVybiBudWxs
cHRyOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXZlbnRUeXBlLCB0eXBlbmFtZSBQYXJzZWRU
eXBlPgordm9pZCBSdGNFdmVudExvZ0VuY29kZXJUZXN0OjpUZXN0UnRwUGFja2V0cygpIHsKKyAg
Ly8gU1NSQ3Mgd2lsbCBiZSByYW5kb21seSBhc3NpZ25lZCBvdXQgb2YgdGhpcyBzbWFsbCBwb29s
LCBzaWduaWZpY2FudCBvbmx5CisgIC8vIGluIHRoYXQgaXQgYWxzbyBjb3ZlcnMgc3VjaCBlZGdl
IGNhc2VzIGFzIFNTUkMgPSAwIGFuZCBTU1JDID0gMHhmZmZmZmZmZi4KKyAgLy8gVGhlIHBvb2wg
aXMgaW50ZW50aW9uYWxseSBzbWFsbCwgc28gYXMgdG8gcHJvZHVjZSBjb2xsaXNpb25zLgorICBj
b25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4ga1NzcmNQb29sID0gezB4MDAwMDAwMDAsIDB4MTIz
NDU2NzgsIDB4YWJjZGVmMDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHhmZmZmZmZmZiwgMHgyMDE3MTAyNCwgMHgxOTg0MDczMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5ODMxMjMwfTsKKworICAvLyBUT0RPKHRl
cmVsaXVzKTogVGVzdCBleHRlbnNpb25zIGZvciBsZWdhY3kgZW5jb2RpbmcsIHRvby4KKyAgUnRw
SGVhZGVyRXh0ZW5zaW9uTWFwIGV4dGVuc2lvbl9tYXA7CisgIGlmIChuZXdfZW5jb2RpbmdfKSB7
CisgICAgZXh0ZW5zaW9uX21hcCA9IGdlbl8uTmV3UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKHRydWUp
OworICB9CisKKyAgLy8gU2ltdWxhdGUgfGV2ZW50X2NvdW50X3wgUlRQIHBhY2tldHMsIHdpdGgg
U1NSQ3MgYXNzaWduZWQgcmFuZG9tbHkKKyAgLy8gb3V0IG9mIHRoZSBzbWFsbCBwb29sIGFib3Zl
LgorICBzdGQ6Om1hcDx1aW50MzJfdCwgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV2ZW50
VHlwZT4+PiBldmVudHNfYnlfc3NyYzsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9j
b3VudF87ICsraSkgeworICAgIGNvbnN0IHVpbnQzMl90IHNzcmMgPSBrU3NyY1Bvb2xbcHJuZ18u
UmFuZChrU3NyY1Bvb2wuc2l6ZSgpIC0gMSldOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFR5
cGU+IGV2ZW50ID0KKyAgICAgICAgKGV2ZW50c19ieV9zc3JjW3NzcmNdLmVtcHR5KCkgfHwgIWZv
cmNlX3JlcGVhdGVkX2ZpZWxkc18pCisgICAgICAgICAgICA/IE5ld1J0cFBhY2tldDxFdmVudFR5
cGU+KHNzcmMsIGV4dGVuc2lvbl9tYXApCisgICAgICAgICAgICA6IGV2ZW50c19ieV9zc3JjW3Nz
cmNdWzBdLT5Db3B5KCk7CisgICAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5Db3B5KCkpOwor
ICAgIGV2ZW50c19ieV9zc3JjW3NzcmNdLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoZXZlbnQpKTsK
KyAgfQogCisgIC8vIEVuY29kZSBhbmQgcGFyc2UuCiAgIHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBl
bmNvZGVyXy0+RW5jb2RlQmF0Y2goaGlzdG9yeV8uYmVnaW4oKSwgaGlzdG9yeV8uZW5kKCkpOwog
ICBBU1NFUlRfVFJVRShwYXJzZWRfbG9nXy5QYXJzZVN0cmluZyhlbmNvZGVkKSk7Ci0gIGNvbnN0
IGF1dG8mIGFuYV9jb25maWdzID0gcGFyc2VkX2xvZ18uYXVkaW9fbmV0d29ya19hZGFwdGF0aW9u
X2V2ZW50cygpOwotICBBU1NFUlRfRVEoYW5hX2NvbmZpZ3Muc2l6ZSgpLCAxdSk7CiAKLSAgRVhQ
RUNUX0VRKGFuYV9jb25maWdzWzBdLnRpbWVzdGFtcF91cywgdGltZXN0YW1wX3VzKTsKLSAgRVhQ
RUNUX0VRKGFuYV9jb25maWdzWzBdLmNvbmZpZywgb3JpZ2luYWxfcnVudGltZV9jb25maWcpOwor
ICAvLyBGb3IgZWFjaCBTU1JDLCBtYWtlIHN1cmUgdGhlIFJUUCBwYWNrZXRzIGFzc29jaWF0ZWQg
d2l0aCBpdCB0byBoYXZlIGJlZW4KKyAgLy8gY29ycmVjdGx5IGVuY29kZWQgYW5kIHBhcnNlZC4K
KyAgZm9yIChhdXRvIGl0ID0gZXZlbnRzX2J5X3NzcmMuYmVnaW4oKTsgaXQgIT0gZXZlbnRzX2J5
X3NzcmMuZW5kKCk7ICsraXQpIHsKKyAgICBjb25zdCB1aW50MzJfdCBzc3JjID0gaXQtPmZpcnN0
OworICAgIGNvbnN0IGF1dG8mIG9yaWdpbmFsX3BhY2tldHMgPSBpdC0+c2Vjb25kOworICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPFBhcnNlZFR5cGU+KiBwYXJzZWRfcnRwX3BhY2tldHMgPQorICAgICAg
ICBHZXRSdHBQYWNrZXRzQnlTc3JjPFBhcnNlZFR5cGU+KCZwYXJzZWRfbG9nXywgc3NyYyk7Cisg
ICAgQVNTRVJUX05FKHBhcnNlZF9ydHBfcGFja2V0cywgbnVsbHB0cik7CisgICAgQVNTRVJUX0VR
KG9yaWdpbmFsX3BhY2tldHMuc2l6ZSgpLCBwYXJzZWRfcnRwX3BhY2tldHMtPnNpemUoKSk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcmlnaW5hbF9wYWNrZXRzLnNpemUoKTsgKytpKSB7
CisgICAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkUnRwUGFja2V0PEV2ZW50VHlwZSwgUGFyc2Vk
VHlwZT4oCisgICAgICAgICAgKm9yaWdpbmFsX3BhY2tldHNbaV0sICgqcGFyc2VkX3J0cF9wYWNr
ZXRzKVtpXSk7CisgICAgfQorICB9Cit9CisKK1RFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0
LCBSdGNFdmVudEFsclN0YXRlKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudEFsclN0YXRlPj4gZXZlbnRzKGV2ZW50X2NvdW50Xyk7CisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICBldmVudHNbaV0gPSAoaSA9PSAwIHx8ICFm
b3JjZV9yZXBlYXRlZF9maWVsZHNfKSA/IGdlbl8uTmV3QWxyU3RhdGUoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZXZlbnRzWzBdLT5Db3B5
KCk7CisgICAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50c1tpXS0+Q29weSgpKTsKKyAgfQorCisg
IHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBlbmNvZGVyXy0+RW5jb2RlQmF0Y2goaGlzdG9yeV8uYmVn
aW4oKSwgaGlzdG9yeV8uZW5kKCkpOworICBBU1NFUlRfVFJVRShwYXJzZWRfbG9nXy5QYXJzZVN0
cmluZyhlbmNvZGVkKSk7CisgIGNvbnN0IGF1dG8mIGFscl9zdGF0ZV9ldmVudHMgPSBwYXJzZWRf
bG9nXy5hbHJfc3RhdGVfZXZlbnRzKCk7CisKKyAgQVNTRVJUX0VRKGFscl9zdGF0ZV9ldmVudHMu
c2l6ZSgpLCBldmVudF9jb3VudF8pOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2Nv
dW50XzsgKytpKSB7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEFsclN0YXRlRXZlbnQoKmV2
ZW50c1tpXSwgYWxyX3N0YXRlX2V2ZW50c1tpXSk7CisgIH0KIH0KIAogVEVTVF9QKFJ0Y0V2ZW50
TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbkJpdHJhdGUpIHsK
LSAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1
bnRpbWVDb25maWc+KCk7Ci0gIGNvbnN0IGludCBiaXRyYXRlX2JwcyA9IHJ0Yzo6Y2hlY2tlZF9j
YXN0PGludD4oCi0gICAgICBwcm5nXy5SYW5kKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpKSk7Ci0gIHJ1bnRpbWVfY29uZmlnLT5iaXRyYXRlX2JwcyA9IGJpdHJhdGVfYnBz
OwotICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKHN0ZDo6bW92ZShydW50aW1l
X2NvbmZpZykpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05l
dHdvcmtBZGFwdGF0aW9uPj4gZXZlbnRzKAorICAgICAgZXZlbnRfY291bnRfKTsKKyAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIGlmIChpID09IDAgfHwg
IWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18pIHsKKyAgICAgIGF1dG8gcnVudGltZV9jb25maWcgPSBh
YnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPigpOworICAgICAgY29u
c3QgaW50IGJpdHJhdGVfYnBzID0gcnRjOjpjaGVja2VkX2Nhc3Q8aW50PigKKyAgICAgICAgICBw
cm5nXy5SYW5kKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSk7CisgICAg
ICBydW50aW1lX2NvbmZpZy0+Yml0cmF0ZV9icHMgPSBiaXRyYXRlX2JwczsKKyAgICAgIGV2ZW50
c1tpXSA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4o
CisgICAgICAgICAgc3RkOjptb3ZlKHJ1bnRpbWVfY29uZmlnKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIGV2ZW50c1tpXSA9IGV2ZW50c1swXS0+Q29weSgpOworICAgIH0KKyAgfQorICBUZXN0UnRj
RXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKGV2ZW50cyk7CiB9CiAKIFRFU1RfUChSdGNFdmVu
dExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb25GcmFtZUxlbmd0
aCkgewotICBhdXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNv
ZGVyUnVudGltZUNvbmZpZz4oKTsKLSAgY29uc3QgaW50IGZyYW1lX2xlbmd0aF9tcyA9IHBybmdf
LlJhbmQoMSwgMTAwMCk7Ci0gIHJ1bnRpbWVfY29uZmlnLT5mcmFtZV9sZW5ndGhfbXMgPSBmcmFt
ZV9sZW5ndGhfbXM7Ci0gIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oc3RkOjpt
b3ZlKHJ1bnRpbWVfY29uZmlnKSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24+PiBldmVudHMoCisgICAgICBldmVudF9jb3VudF8p
OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytpKSB7CisgICAgaWYg
KGkgPT0gMCB8fCAhZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykgeworICAgICAgYXV0byBydW50aW1l
X2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+KCk7
CisgICAgICBjb25zdCBpbnQgZnJhbWVfbGVuZ3RoX21zID0gcHJuZ18uUmFuZCgxLCAxMDAwKTsK
KyAgICAgIHJ1bnRpbWVfY29uZmlnLT5mcmFtZV9sZW5ndGhfbXMgPSBmcmFtZV9sZW5ndGhfbXM7
CisgICAgICBldmVudHNbaV0gPSBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudEF1ZGlvTmV0d29y
a0FkYXB0YXRpb24+KAorICAgICAgICAgIHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOworICAg
IH0gZWxzZSB7CisgICAgICBldmVudHNbaV0gPSBldmVudHNbMF0tPkNvcHkoKTsKKyAgICB9Cisg
IH0KKyAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihldmVudHMpOwogfQogCiBU
RVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0
aW9uUGFja2V0TG9zcykgewotICAvLyBUbyBzaW1wbGlmeSB0aGUgdGVzdCwgd2UganVzdCBjaGVj
ayBwb3dlcnMgb2YgdHdvLgotICBjb25zdCBmbG9hdCBwbHIgPSBzdGQ6OnBvdygwLjVmLCBwcm5n
Xy5SYW5kKDEsIDgpKTsKLSAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVl
PEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+KCk7Ci0gIHJ1bnRpbWVfY29uZmlnLT51cGxpbmtf
cGFja2V0X2xvc3NfZnJhY3Rpb24gPSBwbHI7Ci0gIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0Fk
YXB0YXRpb24oc3RkOjptb3ZlKHJ1bnRpbWVfY29uZmlnKSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24+PiBldmVudHMoCisgICAg
ICBldmVudF9jb3VudF8pOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50Xzsg
KytpKSB7CisgICAgaWYgKGkgPT0gMCB8fCAhZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykgeworICAg
ICAgLy8gVG8gc2ltcGxpZnkgdGhlIHRlc3QsIHdlIGp1c3QgY2hlY2sgcG93ZXJzIG9mIHR3by4K
KyAgICAgIGNvbnN0IGZsb2F0IHBsciA9IHN0ZDo6cG93KDAuNWYsIHBybmdfLlJhbmQoMSwgOCkp
OworICAgICAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5j
b2RlclJ1bnRpbWVDb25maWc+KCk7CisgICAgICBydW50aW1lX2NvbmZpZy0+dXBsaW5rX3BhY2tl
dF9sb3NzX2ZyYWN0aW9uID0gcGxyOworICAgICAgZXZlbnRzW2ldID0gYWJzbDo6bWFrZV91bmlx
dWU8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPigKKyAgICAgICAgICBzdGQ6Om1vdmUo
cnVudGltZV9jb25maWcpKTsKKyAgICB9IGVsc2UgeworICAgICAgZXZlbnRzW2ldID0gZXZlbnRz
WzBdLT5Db3B5KCk7CisgICAgfQorICB9CisgIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0
YXRpb24oZXZlbnRzKTsKIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2
ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbkZlYykgewotICAvLyBUaGUgdGVzdCBtaWdodCBiZSB0
cml2aWFsbHkgcGFzc2luZyBmb3Igb25lIG9mIHRoZSB0d28gYm9vbGVhbiB2YWx1ZXMsIHNvCi0g
IC8vIGZvciBzYWZldHkncyBzYWtlLCB3ZSB0ZXN0IGJvdGguCi0gIGZvciAoYm9vbCBmZWNfZW5h
YmxlZCA6IHtmYWxzZSwgdHJ1ZX0pIHsKLSAgICBhdXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6
bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZz4oKTsKLSAgICBydW50aW1lX2Nv
bmZpZy0+ZW5hYmxlX2ZlYyA9IGZlY19lbmFibGVkOwotICAgIFRlc3RSdGNFdmVudEF1ZGlvTmV0
d29ya0FkYXB0YXRpb24oc3RkOjptb3ZlKHJ1bnRpbWVfY29uZmlnKSk7CisgIHN0ZDo6dmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24+PiBldmVudHMo
CisgICAgICBldmVudF9jb3VudF8pOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2Nv
dW50XzsgKytpKSB7CisgICAgaWYgKGkgPT0gMCB8fCAhZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykg
eworICAgICAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5j
b2RlclJ1bnRpbWVDb25maWc+KCk7CisgICAgICBydW50aW1lX2NvbmZpZy0+ZW5hYmxlX2ZlYyA9
IHBybmdfLlJhbmQ8Ym9vbD4oKTsKKyAgICAgIGV2ZW50c1tpXSA9IGFic2w6Om1ha2VfdW5pcXVl
PFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4oCisgICAgICAgICAgc3RkOjptb3ZlKHJ1
bnRpbWVfY29uZmlnKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGV2ZW50c1tpXSA9IGV2ZW50c1sw
XS0+Q29weSgpOworICAgIH0KICAgfQorICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0
aW9uKGV2ZW50cyk7CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVu
dEF1ZGlvTmV0d29ya0FkYXB0YXRpb25EdHgpIHsKLSAgLy8gVGhlIHRlc3QgbWlnaHQgYmUgdHJp
dmlhbGx5IHBhc3NpbmcgZm9yIG9uZSBvZiB0aGUgdHdvIGJvb2xlYW4gdmFsdWVzLCBzbwotICAv
LyBmb3Igc2FmZXR5J3Mgc2FrZSwgd2UgdGVzdCBib3RoLgotICBmb3IgKGJvb2wgZHR4X2VuYWJs
ZWQgOiB7ZmFsc2UsIHRydWV9KSB7Ci0gICAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1h
a2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+KCk7Ci0gICAgcnVudGltZV9jb25m
aWctPmVuYWJsZV9kdHggPSBkdHhfZW5hYmxlZDsKLSAgICBUZXN0UnRjRXZlbnRBdWRpb05ldHdv
cmtBZGFwdGF0aW9uKHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOworICBzdGQ6OnZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPj4gZXZlbnRzKAor
ICAgICAgZXZlbnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3Vu
dF87ICsraSkgeworICAgIGlmIChpID09IDAgfHwgIWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18pIHsK
KyAgICAgIGF1dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29k
ZXJSdW50aW1lQ29uZmlnPigpOworICAgICAgcnVudGltZV9jb25maWctPmVuYWJsZV9kdHggPSBw
cm5nXy5SYW5kPGJvb2w+KCk7CisgICAgICBldmVudHNbaV0gPSBhYnNsOjptYWtlX3VuaXF1ZTxS
dGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24+KAorICAgICAgICAgIHN0ZDo6bW92ZShydW50
aW1lX2NvbmZpZykpOworICAgIH0gZWxzZSB7CisgICAgICBldmVudHNbaV0gPSBldmVudHNbMF0t
PkNvcHkoKTsKKyAgICB9CiAgIH0KKyAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlv
bihldmVudHMpOwogfQogCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRB
dWRpb05ldHdvcmtBZGFwdGF0aW9uQ2hhbm5lbHMpIHsKLSAgLy8gVGhlIHRlc3QgbWlnaHQgYmUg
dHJpdmlhbGx5IHBhc3NpbmcgZm9yIG9uZSBvZiB0aGUgdHdvIHBvc3NpYmxlIHZhbHVlcywgc28K
LSAgLy8gZm9yIHNhZmV0eSdzIHNha2UsIHdlIHRlc3QgYm90aC4KLSAgZm9yIChzaXplX3QgY2hh
bm5lbHMgOiB7MSwgMn0pIHsKLSAgICBhdXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6bWFrZV91
bmlxdWU8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZz4oKTsKLSAgICBydW50aW1lX2NvbmZpZy0+
bnVtX2NoYW5uZWxzID0gY2hhbm5lbHM7Ci0gICAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRh
cHRhdGlvbihzdGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4+IGV2ZW50cygKKyAgICAg
IGV2ZW50X2NvdW50Xyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyAr
K2kpIHsKKyAgICBpZiAoaSA9PSAwIHx8ICFmb3JjZV9yZXBlYXRlZF9maWVsZHNfKSB7CisgICAg
ICBhdXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyUnVu
dGltZUNvbmZpZz4oKTsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLT5udW1fY2hhbm5lbHMgPSBwcm5n
Xy5SYW5kKDEsIDIpOworICAgICAgZXZlbnRzW2ldID0gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZl
bnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPigKKyAgICAgICAgICBzdGQ6Om1vdmUocnVudGltZV9j
b25maWcpKTsKKyAgICB9IGVsc2UgeworICAgICAgZXZlbnRzW2ldID0gZXZlbnRzWzBdLT5Db3B5
KCk7CisgICAgfQogICB9CisgIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oZXZl
bnRzKTsKIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QXVkaW9O
ZXR3b3JrQWRhcHRhdGlvbkFsbCkgewotICBjb25zdCBpbnQgYml0cmF0ZV9icHMgPSBydGM6OmNo
ZWNrZWRfY2FzdDxpbnQ+KAotICAgICAgcHJuZ18uUmFuZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSkpOwotICBjb25zdCBpbnQgZnJhbWVfbGVuZ3RoX21zID0gcHJuZ18u
UmFuZCgxLCAxMDAwKTsKLSAgY29uc3QgZmxvYXQgcGxyID0gc3RkOjpwb3coMC41ZiwgcHJuZ18u
UmFuZCgxLCA4KSk7Ci0gIGZvciAoYm9vbCBmZWNfZW5hYmxlZCA6IHtmYWxzZSwgdHJ1ZX0pIHsK
LSAgICBmb3IgKGJvb2wgZHR4X2VuYWJsZWQgOiB7ZmFsc2UsIHRydWV9KSB7Ci0gICAgICBmb3Ig
KHNpemVfdCBjaGFubmVscyA6IHsxLCAyfSkgewotICAgICAgICBhdXRvIHJ1bnRpbWVfY29uZmln
ID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZz4oKTsKLSAgICAg
ICAgcnVudGltZV9jb25maWctPmJpdHJhdGVfYnBzID0gYml0cmF0ZV9icHM7Ci0gICAgICAgIHJ1
bnRpbWVfY29uZmlnLT5mcmFtZV9sZW5ndGhfbXMgPSBmcmFtZV9sZW5ndGhfbXM7Ci0gICAgICAg
IHJ1bnRpbWVfY29uZmlnLT51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24gPSBwbHI7Ci0gICAg
ICAgIHJ1bnRpbWVfY29uZmlnLT5lbmFibGVfZmVjID0gZmVjX2VuYWJsZWQ7Ci0gICAgICAgIHJ1
bnRpbWVfY29uZmlnLT5lbmFibGVfZHR4ID0gZHR4X2VuYWJsZWQ7Ci0gICAgICAgIHJ1bnRpbWVf
Y29uZmlnLT5udW1fY2hhbm5lbHMgPSBjaGFubmVsczsKLQotICAgICAgICBUZXN0UnRjRXZlbnRB
dWRpb05ldHdvcmtBZGFwdGF0aW9uKHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOwotICAgICAg
fQorICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFw
dGF0aW9uPj4gZXZlbnRzKAorICAgICAgZXZlbnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIGlmIChpID09IDAgfHwgIWZvcmNlX3Jl
cGVhdGVkX2ZpZWxkc18pIHsKKyAgICAgIGF1dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjptYWtl
X3VuaXF1ZTxBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPigpOworICAgICAgcnVudGltZV9jb25m
aWctPmJpdHJhdGVfYnBzID0gcnRjOjpjaGVja2VkX2Nhc3Q8aW50PigKKyAgICAgICAgICBwcm5n
Xy5SYW5kKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSk7CisgICAgICBy
dW50aW1lX2NvbmZpZy0+ZnJhbWVfbGVuZ3RoX21zID0gcHJuZ18uUmFuZCgxLCAxMDAwKTsKKyAg
ICAgIHJ1bnRpbWVfY29uZmlnLT51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24gPQorICAgICAg
ICAgIHN0ZDo6cG93KDAuNWYsIHBybmdfLlJhbmQoMSwgOCkpOworICAgICAgcnVudGltZV9jb25m
aWctPmVuYWJsZV9mZWMgPSBwcm5nXy5SYW5kPGJvb2w+KCk7CisgICAgICBydW50aW1lX2NvbmZp
Zy0+ZW5hYmxlX2R0eCA9IHBybmdfLlJhbmQ8Ym9vbD4oKTsKKyAgICAgIHJ1bnRpbWVfY29uZmln
LT5udW1fY2hhbm5lbHMgPSBwcm5nXy5SYW5kKDEsIDIpOworICAgICAgZXZlbnRzW2ldID0gYWJz
bDo6bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPigKKyAgICAgICAg
ICBzdGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsKKyAgICB9IGVsc2UgeworICAgICAgZXZlbnRz
W2ldID0gZXZlbnRzWzBdLT5Db3B5KCk7CiAgICAgfQogICB9CisgIFRlc3RSdGNFdmVudEF1ZGlv
TmV0d29ya0FkYXB0YXRpb24oZXZlbnRzKTsKIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2Rl
clRlc3QsIFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KSB7Ci0gIHVpbnQzMl90IHNzcmMgPSBwcm5nXy5S
YW5kPHVpbnQzMl90PigpOwotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb1BsYXlvdXQ+
IGV2ZW50ID0gZ2VuXy5OZXdBdWRpb1BsYXlvdXQoc3NyYyk7Ci0gIGhpc3RvcnlfLnB1c2hfYmFj
ayhldmVudC0+Q29weSgpKTsKKyAgLy8gU1NSQ3Mgd2lsbCBiZSByYW5kb21seSBhc3NpZ25lZCBv
dXQgb2YgdGhpcyBzbWFsbCBwb29sLCBzaWduaWZpY2FudCBvbmx5CisgIC8vIGluIHRoYXQgaXQg
YWxzbyBjb3ZlcnMgc3VjaCBlZGdlIGNhc2VzIGFzIFNTUkMgPSAwIGFuZCBTU1JDID0gMHhmZmZm
ZmZmZi4KKyAgLy8gVGhlIHBvb2wgaXMgaW50ZW50aW9uYWxseSBzbWFsbCwgc28gYXMgdG8gcHJv
ZHVjZSBjb2xsaXNpb25zLgorICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4ga1NzcmNQb29s
ID0gezB4MDAwMDAwMDAsIDB4MTIzNDU2NzgsIDB4YWJjZGVmMDEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZmZmZmZmZiwgMHgyMDE3MTAyNCwgMHgxOTg0
MDczMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5ODMx
MjMwfTsKKworICBzdGQ6Om1hcDx1aW50MzJfdCwgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFJ0Y0V2ZW50QXVkaW9QbGF5b3V0Pj4+CisgICAgICBvcmlnaW5hbF9ldmVudHNfYnlfc3NyYzsK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIGNvbnN0
IHVpbnQzMl90IHNzcmMgPSBrU3NyY1Bvb2xbcHJuZ18uUmFuZChrU3NyY1Bvb2wuc2l6ZSgpIC0g
MSldOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvUGxheW91dD4gZXZlbnQgPQor
ICAgICAgICAob3JpZ2luYWxfZXZlbnRzX2J5X3NzcmNbc3NyY10uZW1wdHkoKSB8fCAhZm9yY2Vf
cmVwZWF0ZWRfZmllbGRzXykKKyAgICAgICAgICAgID8gZ2VuXy5OZXdBdWRpb1BsYXlvdXQoc3Ny
YykKKyAgICAgICAgICAgIDogb3JpZ2luYWxfZXZlbnRzX2J5X3NzcmNbc3NyY11bMF0tPkNvcHko
KTsKKyAgICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnQtPkNvcHkoKSk7CisgICAgb3JpZ2luYWxf
ZXZlbnRzX2J5X3NzcmNbc3NyY10ucHVzaF9iYWNrKHN0ZDo6bW92ZShldmVudCkpOworICB9CiAK
ICAgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IGVuY29kZXJfLT5FbmNvZGVCYXRjaChoaXN0b3J5Xy5i
ZWdpbigpLCBoaXN0b3J5Xy5lbmQoKSk7CiAgIEFTU0VSVF9UUlVFKHBhcnNlZF9sb2dfLlBhcnNl
U3RyaW5nKGVuY29kZWQpKTsKIAotICBjb25zdCBhdXRvJiBwbGF5b3V0X2V2ZW50cyA9IHBhcnNl
ZF9sb2dfLmF1ZGlvX3BsYXlvdXRfZXZlbnRzKCk7Ci0gIEFTU0VSVF9FUShwbGF5b3V0X2V2ZW50
cy5zaXplKCksIDF1KTsKLSAgY29uc3QgYXV0byBwbGF5b3V0X3N0cmVhbSA9IHBsYXlvdXRfZXZl
bnRzLmZpbmQoc3NyYyk7Ci0gIEFTU0VSVF9UUlVFKHBsYXlvdXRfc3RyZWFtICE9IHBsYXlvdXRf
ZXZlbnRzLmVuZCgpKTsKLSAgQVNTRVJUX0VRKHBsYXlvdXRfc3RyZWFtLT5zZWNvbmQuc2l6ZSgp
LCAxdSk7Ci0gIExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50IHBsYXlvdXRfZXZlbnQgPSBwbGF5b3V0
X3N0cmVhbS0+c2Vjb25kWzBdOwotICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRBdWRp
b1BsYXlvdXRFdmVudCgqZXZlbnQsIHBsYXlvdXRfZXZlbnQpKTsKKyAgY29uc3QgYXV0byYgcGFy
c2VkX3BsYXlvdXRfZXZlbnRzX2J5X3NzcmMgPQorICAgICAgcGFyc2VkX2xvZ18uYXVkaW9fcGxh
eW91dF9ldmVudHMoKTsKKworICAvLyBTYW1lIG51bWJlciBvZiBkaXN0aW5jdCBTU1JDcy4KKyAg
QVNTRVJUX0VRKHBhcnNlZF9wbGF5b3V0X2V2ZW50c19ieV9zc3JjLnNpemUoKSwKKyAgICAgICAg
ICAgIG9yaWdpbmFsX2V2ZW50c19ieV9zc3JjLnNpemUoKSk7CisKKyAgZm9yIChhdXRvJiBvcmln
aW5hbF9ldmVudF9pdCA6IG9yaWdpbmFsX2V2ZW50c19ieV9zc3JjKSB7CisgICAgY29uc3QgdWlu
dDMyX3Qgc3NyYyA9IG9yaWdpbmFsX2V2ZW50X2l0LmZpcnN0OworICAgIGNvbnN0IGF1dG8mIG9y
aWdpbmFsX3BsYXlvdXRfZXZlbnRzID0gb3JpZ2luYWxfZXZlbnRfaXQuc2Vjb25kOworCisgICAg
Y29uc3QgYXV0byYgcGFyc2VkX2V2ZW50X2l0ID0gcGFyc2VkX3BsYXlvdXRfZXZlbnRzX2J5X3Nz
cmMuZmluZChzc3JjKTsKKyAgICBBU1NFUlRfVFJVRShwYXJzZWRfZXZlbnRfaXQgIT0gcGFyc2Vk
X3BsYXlvdXRfZXZlbnRzX2J5X3NzcmMuZW5kKCkpOworICAgIGNvbnN0IGF1dG8mIHBhcnNlZF9w
bGF5b3V0X2V2ZW50cyA9IHBhcnNlZF9ldmVudF9pdC0+c2Vjb25kOworCisgICAgLy8gU2FtZSBu
dW1iZXIgcGxheW91dCBldmVudHMgZm9yIHRoZSBTU1JDIHVuZGVyIGV4YW1pbmF0aW9uLgorICAg
IEFTU0VSVF9FUShvcmlnaW5hbF9wbGF5b3V0X2V2ZW50cy5zaXplKCksIHBhcnNlZF9wbGF5b3V0
X2V2ZW50cy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcmlnaW5hbF9w
bGF5b3V0X2V2ZW50cy5zaXplKCk7ICsraSkgeworICAgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dl
ZEF1ZGlvUGxheW91dEV2ZW50KCpvcmlnaW5hbF9wbGF5b3V0X2V2ZW50c1tpXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfcGxheW91dF9ldmVu
dHNbaV0pOworICAgIH0KKyAgfQogfQogCisvLyBUT0RPKGVsYWRhbG9uL3RlcmVsaXVzKTogVGVz
dCB3aXRoIG11bHRpcGxlIGV2ZW50cyBpbiB0aGUgYmF0Y2guCiBURVNUX1AoUnRjRXZlbnRMb2dF
bmNvZGVyVGVzdCwgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWcpIHsKICAgdWludDMy
X3Qgc3NyYyA9IHBybmdfLlJhbmQ8dWludDMyX3Q+KCk7CiAgIFJ0cEhlYWRlckV4dGVuc2lvbk1h
cCBleHRlbnNpb25zID0gZ2VuXy5OZXdSdHBIZWFkZXJFeHRlbnNpb25NYXAoKTsKQEAgLTIwMSw5
ICs0MDQsMTAgQEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QXVkaW9S
ZWNlaXZlU3RyZWFtQ29uZmlnKSB7CiAgIGNvbnN0IGF1dG8mIGF1ZGlvX3JlY3ZfY29uZmlncyA9
IHBhcnNlZF9sb2dfLmF1ZGlvX3JlY3ZfY29uZmlncygpOwogCiAgIEFTU0VSVF9FUShhdWRpb19y
ZWN2X2NvbmZpZ3Muc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dl
ZEF1ZGlvUmVjdkNvbmZpZygqZXZlbnQsIGF1ZGlvX3JlY3ZfY29uZmlnc1swXSkpOworICB2ZXJp
Zmllcl8uVmVyaWZ5TG9nZ2VkQXVkaW9SZWN2Q29uZmlnKCpldmVudCwgYXVkaW9fcmVjdl9jb25m
aWdzWzBdKTsKIH0KIAorLy8gVE9ETyhlbGFkYWxvbi90ZXJlbGl1cyk6IFRlc3Qgd2l0aCBtdWx0
aXBsZSBldmVudHMgaW4gdGhlIGJhdGNoLgogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3Qs
IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKSB7CiAgIHVpbnQzMl90IHNzcmMgPSBwcm5n
Xy5SYW5kPHVpbnQzMl90PigpOwogICBSdHBIZWFkZXJFeHRlbnNpb25NYXAgZXh0ZW5zaW9ucyA9
IGdlbl8uTmV3UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKCk7CkBAIC0yMTYsMzcgKzQyMCw1MSBAQCBU
RVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25m
aWcpIHsKICAgY29uc3QgYXV0byYgYXVkaW9fc2VuZF9jb25maWdzID0gcGFyc2VkX2xvZ18uYXVk
aW9fc2VuZF9jb25maWdzKCk7CiAKICAgQVNTRVJUX0VRKGF1ZGlvX3NlbmRfY29uZmlncy5zaXpl
KCksIDF1KTsKLSAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQXVkaW9TZW5kQ29uZmln
KCpldmVudCwgYXVkaW9fc2VuZF9jb25maWdzWzBdKSk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dn
ZWRBdWRpb1NlbmRDb25maWcoKmV2ZW50LCBhdWRpb19zZW5kX2NvbmZpZ3NbMF0pOwogfQogCiBU
RVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2Vk
KSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQ+IGV2ZW50
ID0KLSAgICAgIGdlbl8uTmV3QndlVXBkYXRlRGVsYXlCYXNlZCgpOwotICBoaXN0b3J5Xy5wdXNo
X2JhY2soZXZlbnQtPkNvcHkoKSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQ+PiBldmVudHMoCisgICAgICBldmVudF9jb3VudF8pOwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytpKSB7CisgICAgZXZlbnRz
W2ldID0gKGkgPT0gMCB8fCAhZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykKKyAgICAgICAgICAgICAg
ICAgICAgPyBnZW5fLk5ld0J3ZVVwZGF0ZURlbGF5QmFzZWQoKQorICAgICAgICAgICAgICAgICAg
ICA6IGV2ZW50c1swXS0+Q29weSgpOworICAgIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudHNbaV0t
PkNvcHkoKSk7CisgIH0KIAogICBzdGQ6OnN0cmluZyBlbmNvZGVkID0gZW5jb2Rlcl8tPkVuY29k
ZUJhdGNoKGhpc3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVuZCgpKTsKICAgQVNTRVJUX1RSVUUo
cGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOworCiAgIGNvbnN0IGF1dG8mIGJ3ZV9k
ZWxheV91cGRhdGVzID0gcGFyc2VkX2xvZ18uYndlX2RlbGF5X3VwZGF0ZXMoKTsKKyAgQVNTRVJU
X0VRKGJ3ZV9kZWxheV91cGRhdGVzLnNpemUoKSwgZXZlbnRfY291bnRfKTsKIAotICBBU1NFUlRf
RVEoYndlX2RlbGF5X3VwZGF0ZXMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAg
dGVzdDo6VmVyaWZ5TG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSgqZXZlbnQsIGJ3ZV9kZWxheV91
cGRhdGVzWzBdKSk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kp
IHsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSgqZXZlbnRz
W2ldLCBid2VfZGVsYXlfdXBkYXRlc1tpXSk7CisgIH0KIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9n
RW5jb2RlclRlc3QsIFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkKSB7Ci0gIHN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZD4gZXZlbnQgPQotICAgICAgZ2VuXy5OZXdC
d2VVcGRhdGVMb3NzQmFzZWQoKTsKLSAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5Db3B5KCkp
OworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFz
ZWQ+PiBldmVudHMoZXZlbnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVu
dF9jb3VudF87ICsraSkgeworICAgIGV2ZW50c1tpXSA9IChpID09IDAgfHwgIWZvcmNlX3JlcGVh
dGVkX2ZpZWxkc18pCisgICAgICAgICAgICAgICAgICAgID8gZ2VuXy5OZXdCd2VVcGRhdGVMb3Nz
QmFzZWQoKQorICAgICAgICAgICAgICAgICAgICA6IGV2ZW50c1swXS0+Q29weSgpOworICAgIGhp
c3RvcnlfLnB1c2hfYmFjayhldmVudHNbaV0tPkNvcHkoKSk7CisgIH0KIAogICBzdGQ6OnN0cmlu
ZyBlbmNvZGVkID0gZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhpc3RvcnlfLmJlZ2luKCksIGhpc3Rv
cnlfLmVuZCgpKTsKICAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoZW5jb2Rl
ZCkpOworCiAgIGNvbnN0IGF1dG8mIGJ3ZV9sb3NzX3VwZGF0ZXMgPSBwYXJzZWRfbG9nXy5id2Vf
bG9zc191cGRhdGVzKCk7CisgIEFTU0VSVF9FUShid2VfbG9zc191cGRhdGVzLnNpemUoKSwgZXZl
bnRfY291bnRfKTsKIAotICBBU1NFUlRfRVEoYndlX2xvc3NfdXBkYXRlcy5zaXplKCksIDF1KTsK
LSAgRVhQRUNUX1RSVUUoCi0gICAgICB0ZXN0OjpWZXJpZnlMb2dnZWRCd2VMb3NzQmFzZWRVcGRh
dGUoKmV2ZW50LCBid2VfbG9zc191cGRhdGVzWzBdKSk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlTG9z
c0Jhc2VkVXBkYXRlKCpldmVudHNbaV0sIGJ3ZV9sb3NzX3VwZGF0ZXNbaV0pOworICB9CiB9CiAK
Ky8vIFRPRE8oZWxhZGFsb24vdGVyZWxpdXMpOiBUZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRzIGlu
IHRoZSBiYXRjaC4KIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEljZUNh
bmRpZGF0ZVBhaXJDb25maWcpIHsKICAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50SWNlQ2FuZGlk
YXRlUGFpckNvbmZpZz4gZXZlbnQgPQogICAgICAgZ2VuXy5OZXdJY2VDYW5kaWRhdGVQYWlyQ29u
ZmlnKCk7CkBAIC0yNTgsMTAgKzQ3NiwxMSBAQCBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVz
dCwgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKSB7CiAgICAgICBwYXJzZWRfbG9nXy5p
Y2VfY2FuZGlkYXRlX3BhaXJfY29uZmlncygpOwogCiAgIEFTU0VSVF9FUShpY2VfY2FuZGlkYXRl
X3BhaXJfY29uZmlncy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9n
Z2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZygKLSAgICAgICpldmVudCwgaWNlX2NhbmRpZGF0ZV9w
YWlyX2NvbmZpZ3NbMF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBh
aXJDb25maWcoKmV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnc1swXSk7CiB9CiAKKy8vIFRPRE8oZWxh
ZGFsb24vdGVyZWxpdXMpOiBUZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRzIGluIHRoZSBiYXRjaC4K
IFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXIp
IHsKICAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcj4gZXZlbnQgPSBn
ZW5fLk5ld0ljZUNhbmRpZGF0ZVBhaXIoKTsKICAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5D
b3B5KCkpOwpAQCAtMjcyLDE4ICs0OTEsMjEgQEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRl
c3QsIFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcikgewogICAgICAgcGFyc2VkX2xvZ18uaWNlX2Nh
bmRpZGF0ZV9wYWlyX2V2ZW50cygpOwogCiAgIEFTU0VSVF9FUShpY2VfY2FuZGlkYXRlX3BhaXJf
ZXZlbnRzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRJY2VD
YW5kaWRhdGVQYWlyRXZlbnQoCi0gICAgICAqZXZlbnQsIGljZV9jYW5kaWRhdGVfcGFpcl9ldmVu
dHNbMF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCgq
ZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNl
X2NhbmRpZGF0ZV9wYWlyX2V2ZW50c1swXSk7CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29k
ZXJUZXN0LCBSdGNFdmVudExvZ2dpbmdTdGFydGVkKSB7CiAgIGNvbnN0IGludDY0X3QgdGltZXN0
YW1wX3VzID0gcnRjOjpUaW1lTWljcm9zKCk7CisgIGNvbnN0IGludDY0X3QgdXRjX3RpbWVfdXMg
PSBydGM6OlRpbWVVVENNaWNyb3MoKTsKIAotICBBU1NFUlRfVFJVRShwYXJzZWRfbG9nXy5QYXJz
ZVN0cmluZyhlbmNvZGVyXy0+RW5jb2RlTG9nU3RhcnQodGltZXN0YW1wX3VzKSkpOworICBBU1NF
UlRfVFJVRShwYXJzZWRfbG9nXy5QYXJzZVN0cmluZygKKyAgICAgIGVuY29kZXJfLT5FbmNvZGVM
b2dTdGFydCh0aW1lc3RhbXBfdXMsIHV0Y190aW1lX3VzKSkpOwogICBjb25zdCBhdXRvJiBzdGFy
dF9sb2dfZXZlbnRzID0gcGFyc2VkX2xvZ18uc3RhcnRfbG9nX2V2ZW50cygpOwogCiAgIEFTU0VS
VF9FUShzdGFydF9sb2dfZXZlbnRzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfRVEoc3RhcnRfbG9n
X2V2ZW50c1swXS50aW1lc3RhbXBfdXMsIHRpbWVzdGFtcF91cyk7CisgIHZlcmlmaWVyXy5WZXJp
ZnlMb2dnZWRTdGFydEV2ZW50KHRpbWVzdGFtcF91cywgdXRjX3RpbWVfdXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xvZ19ldmVudHNbMF0pOwogfQogCiBURVNU
X1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRMb2dnaW5nU3RvcHBlZCkgewpAQCAt
MjkzLDkgKzUxNSwxMCBAQCBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRM
b2dnaW5nU3RvcHBlZCkgewogICBjb25zdCBhdXRvJiBzdG9wX2xvZ19ldmVudHMgPSBwYXJzZWRf
bG9nXy5zdG9wX2xvZ19ldmVudHMoKTsKIAogICBBU1NFUlRfRVEoc3RvcF9sb2dfZXZlbnRzLnNp
emUoKSwgMXUpOwotICBFWFBFQ1RfRVEoc3RvcF9sb2dfZXZlbnRzWzBdLnRpbWVzdGFtcF91cywg
dGltZXN0YW1wX3VzKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFN0b3BFdmVudCh0aW1lc3Rh
bXBfdXMsIHN0b3BfbG9nX2V2ZW50c1swXSk7CiB9CiAKKy8vIFRPRE8oZWxhZGFsb24vdGVyZWxp
dXMpOiBUZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRzIGluIHRoZSBiYXRjaC4KIFRFU1RfUChSdGNF
dmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQpIHsKICAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZD4gZXZlbnQgPQogICAgICAg
Z2VuXy5OZXdQcm9iZUNsdXN0ZXJDcmVhdGVkKCk7CkBAIC0zMDcsMTAgKzUzMCwxMSBAQCBURVNU
X1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkKSB7
CiAgICAgICBwYXJzZWRfbG9nXy5id2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50cygpOwog
CiAgIEFTU0VSVF9FUShid2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50cy5zaXplKCksIDF1
KTsKLSAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRl
ZEV2ZW50KAotICAgICAgKmV2ZW50LCBid2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50c1sw
XSkpOworICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50
KAorICAgICAgKmV2ZW50LCBid2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50c1swXSk7CiB9
CiAKKy8vIFRPRE8oZWxhZGFsb24vdGVyZWxpdXMpOiBUZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRz
IGluIHRoZSBiYXRjaC4KIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFBy
b2JlUmVzdWx0RmFpbHVyZSkgewogICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRQcm9iZVJlc3Vs
dEZhaWx1cmU+IGV2ZW50ID0KICAgICAgIGdlbl8uTmV3UHJvYmVSZXN1bHRGYWlsdXJlKCk7CkBA
IC0zMjEsMTAgKzU0NSwxMSBAQCBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZl
bnRQcm9iZVJlc3VsdEZhaWx1cmUpIHsKICAgY29uc3QgYXV0byYgYndlX3Byb2JlX2ZhaWx1cmVf
ZXZlbnRzID0gcGFyc2VkX2xvZ18uYndlX3Byb2JlX2ZhaWx1cmVfZXZlbnRzKCk7CiAKICAgQVNT
RVJUX0VRKGJ3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50cy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX1RS
VUUodGVzdDo6VmVyaWZ5TG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQoCi0gICAgICAqZXZlbnQs
IGJ3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50c1swXSkpOworICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2Vk
QndlUHJvYmVGYWlsdXJlRXZlbnQoKmV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYndlX3Byb2JlX2ZhaWx1cmVfZXZlbnRzWzBdKTsKIH0KIAorLy8g
VE9ETyhlbGFkYWxvbi90ZXJlbGl1cyk6IFRlc3Qgd2l0aCBtdWx0aXBsZSBldmVudHMgaW4gdGhl
IGJhdGNoLgogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50UHJvYmVSZXN1
bHRTdWNjZXNzKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFByb2JlUmVzdWx0U3VjY2Vz
cz4gZXZlbnQgPQogICAgICAgZ2VuXy5OZXdQcm9iZVJlc3VsdFN1Y2Nlc3MoKTsKQEAgLTMzNSw3
OCArNTYwLDY3IEBAIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFByb2Jl
UmVzdWx0U3VjY2VzcykgewogICBjb25zdCBhdXRvJiBid2VfcHJvYmVfc3VjY2Vzc19ldmVudHMg
PSBwYXJzZWRfbG9nXy5id2VfcHJvYmVfc3VjY2Vzc19ldmVudHMoKTsKIAogICBBU1NFUlRfRVEo
YndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSh0ZXN0
OjpWZXJpZnlMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCgKLSAgICAgICpldmVudCwgYndlX3By
b2JlX3N1Y2Nlc3NfZXZlbnRzWzBdKSk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRCd2VQcm9i
ZVN1Y2Nlc3NFdmVudCgqZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBid2VfcHJvYmVfc3VjY2Vzc19ldmVudHNbMF0pOwogfQogCiBURVNUX1AoUnRj
RXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmcpIHsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nPiBldmVudCA9Ci0gICAgICBn
ZW5fLk5ld1J0Y3BQYWNrZXRJbmNvbWluZygpOwotICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnQt
PkNvcHkoKSk7CisgIGlmICghbmV3X2VuY29kaW5nXyAmJiBmb3JjZV9yZXBlYXRlZF9maWVsZHNf
KSB7CisgICAgLy8gVGhlIG9sZCBlbmNvZGluZyBkb2VzIG5vdCB3b3JrIHdpdGggZHVwbGljYXRl
ZCBwYWNrZXRzLiBTaW5jZSB0aGUgbGVnYWN5CisgICAgLy8gZW5jb2RpbmcgaXMgYmVpbmcgcGhh
c2VkIG91dCwgd2Ugd2lsbCBub3QgZml4IHRoaXMuCisgICAgcmV0dXJuOworICB9CisKKyAgc3Rk
Ojp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nPj4gZXZl
bnRzKGV2ZW50X2NvdW50Xyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRf
OyArK2kpIHsKKyAgICBldmVudHNbaV0gPSAoaSA9PSAwIHx8ICFmb3JjZV9yZXBlYXRlZF9maWVs
ZHNfKQorICAgICAgICAgICAgICAgICAgICA/IGdlbl8uTmV3UnRjcFBhY2tldEluY29taW5nKCkK
KyAgICAgICAgICAgICAgICAgICAgOiBldmVudHNbMF0tPkNvcHkoKTsKKyAgICBoaXN0b3J5Xy5w
dXNoX2JhY2soZXZlbnRzW2ldLT5Db3B5KCkpOworICB9CiAKICAgc3RkOjpzdHJpbmcgZW5jb2Rl
ZCA9IGVuY29kZXJfLT5FbmNvZGVCYXRjaChoaXN0b3J5Xy5iZWdpbigpLCBoaXN0b3J5Xy5lbmQo
KSk7CiAgIEFTU0VSVF9UUlVFKHBhcnNlZF9sb2dfLlBhcnNlU3RyaW5nKGVuY29kZWQpKTsKKwog
ICBjb25zdCBhdXRvJiBpbmNvbWluZ19ydGNwX3BhY2tldHMgPSBwYXJzZWRfbG9nXy5pbmNvbWlu
Z19ydGNwX3BhY2tldHMoKTsKKyAgQVNTRVJUX0VRKGluY29taW5nX3J0Y3BfcGFja2V0cy5zaXpl
KCksIGV2ZW50X2NvdW50Xyk7CiAKLSAgQVNTRVJUX0VRKGluY29taW5nX3J0Y3BfcGFja2V0cy5z
aXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICB0ZXN0OjpWZXJpZnlMb2dnZWRSdGNw
UGFja2V0SW5jb21pbmcoKmV2ZW50LCBpbmNvbWluZ19ydGNwX3BhY2tldHNbMF0pKTsKKyAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIHZlcmlmaWVyXy5W
ZXJpZnlMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcoKmV2ZW50c1tpXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX3J0Y3BfcGFja2V0c1tpXSk7
CisgIH0KIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50UnRjcFBh
Y2tldE91dGdvaW5nKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0Y3BQYWNrZXRPdXRn
b2luZz4gZXZlbnQgPQotICAgICAgZ2VuXy5OZXdSdGNwUGFja2V0T3V0Z29pbmcoKTsKLSAgaGlz
dG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5Db3B5KCkpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmc+PiBldmVudHMoZXZlbnRfY291bnRfKTsK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIGV2ZW50
c1tpXSA9IChpID09IDAgfHwgIWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18pCisgICAgICAgICAgICAg
ICAgICAgID8gZ2VuXy5OZXdSdGNwUGFja2V0T3V0Z29pbmcoKQorICAgICAgICAgICAgICAgICAg
ICA6IGV2ZW50c1swXS0+Q29weSgpOworICAgIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudHNbaV0t
PkNvcHkoKSk7CisgIH0KIAogICBzdGQ6OnN0cmluZyBlbmNvZGVkID0gZW5jb2Rlcl8tPkVuY29k
ZUJhdGNoKGhpc3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVuZCgpKTsKICAgQVNTRVJUX1RSVUUo
cGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOworCiAgIGNvbnN0IGF1dG8mIG91dGdv
aW5nX3J0Y3BfcGFja2V0cyA9IHBhcnNlZF9sb2dfLm91dGdvaW5nX3J0Y3BfcGFja2V0cygpOwor
ICBBU1NFUlRfRVEob3V0Z29pbmdfcnRjcF9wYWNrZXRzLnNpemUoKSwgZXZlbnRfY291bnRfKTsK
IAotICBBU1NFUlRfRVEob3V0Z29pbmdfcnRjcF9wYWNrZXRzLnNpemUoKSwgMXUpOwotICBFWFBF
Q1RfVFJVRSgKLSAgICAgIHRlc3Q6OlZlcmlmeUxvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZygqZXZl
bnQsIG91dGdvaW5nX3J0Y3BfcGFja2V0c1swXSkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGV2ZW50X2NvdW50XzsgKytpKSB7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFJ0Y3BQYWNr
ZXRPdXRnb2luZygqZXZlbnRzW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0Z29pbmdfcnRjcF9wYWNrZXRzW2ldKTsKKyAgfQogfQogCiBURVNUX1Ao
UnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZykgewotICB1
aW50MzJfdCBzc3JjID0gcHJuZ18uUmFuZDx1aW50MzJfdD4oKTsKLSAgUnRwSGVhZGVyRXh0ZW5z
aW9uTWFwIGV4dGVuc2lvbl9tYXA7ICAvLyBUT0RPKHRlcmVsaXVzKTogVGVzdCBleHRlbnNpb25z
IHRvby4KLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc+IGV2ZW50
ID0KLSAgICAgIGdlbl8uTmV3UnRwUGFja2V0SW5jb21pbmcoc3NyYywgZXh0ZW5zaW9uX21hcCk7
Ci0gIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgpKTsKLQotICBzdGQ6OnN0cmluZyBl
bmNvZGVkID0gZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhpc3RvcnlfLmJlZ2luKCksIGhpc3Rvcnlf
LmVuZCgpKTsKLSAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoZW5jb2RlZCkp
OwotICBjb25zdCBhdXRvJiBpbmNvbWluZ19ydHBfcGFja2V0c19ieV9zc3JjID0KLSAgICAgIHBh
cnNlZF9sb2dfLmluY29taW5nX3J0cF9wYWNrZXRzX2J5X3NzcmMoKTsKLQotICBBU1NFUlRfRVEo
aW5jb21pbmdfcnRwX3BhY2tldHNfYnlfc3NyYy5zaXplKCksIDF1KTsKLSAgY29uc3QgYXV0byYg
c3RyZWFtID0gaW5jb21pbmdfcnRwX3BhY2tldHNfYnlfc3NyY1swXTsKLSAgRVhQRUNUX0VRKHN0
cmVhbS5zc3JjLCBzc3JjKTsKLSAgQVNTRVJUX0VRKHN0cmVhbS5pbmNvbWluZ19wYWNrZXRzLnNp
emUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIHRlc3Q6OlZlcmlmeUxvZ2dlZFJ0cFBh
Y2tldEluY29taW5nKCpldmVudCwgc3RyZWFtLmluY29taW5nX3BhY2tldHNbMF0pKTsKKyAgVGVz
dFJ0cFBhY2tldHM8UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZywgTG9nZ2VkUnRwUGFja2V0SW5j
b21pbmc+KCk7CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFJ0
cFBhY2tldE91dGdvaW5nKSB7Ci0gIHVpbnQzMl90IHNzcmMgPSBwcm5nXy5SYW5kPHVpbnQzMl90
PigpOwotICBSdHBIZWFkZXJFeHRlbnNpb25NYXAgZXh0ZW5zaW9uX21hcDsgIC8vIFRPRE8odGVy
ZWxpdXMpOiBUZXN0IGV4dGVuc2lvbnMgdG9vLgotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRS
dHBQYWNrZXRPdXRnb2luZz4gZXZlbnQgPQotICAgICAgZ2VuXy5OZXdSdHBQYWNrZXRPdXRnb2lu
Zyhzc3JjLCBleHRlbnNpb25fbWFwKTsKLSAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5Db3B5
KCkpOwotCi0gIHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBlbmNvZGVyXy0+RW5jb2RlQmF0Y2goaGlz
dG9yeV8uYmVnaW4oKSwgaGlzdG9yeV8uZW5kKCkpOwotICBBU1NFUlRfVFJVRShwYXJzZWRfbG9n
Xy5QYXJzZVN0cmluZyhlbmNvZGVkKSk7Ci0gIGNvbnN0IGF1dG8mIG91dGdvaW5nX3J0cF9wYWNr
ZXRzX2J5X3NzcmMgPQotICAgICAgcGFyc2VkX2xvZ18ub3V0Z29pbmdfcnRwX3BhY2tldHNfYnlf
c3NyYygpOwotCi0gIEFTU0VSVF9FUShvdXRnb2luZ19ydHBfcGFja2V0c19ieV9zc3JjLnNpemUo
KSwgMXUpOwotICBjb25zdCBhdXRvJiBzdHJlYW0gPSBvdXRnb2luZ19ydHBfcGFja2V0c19ieV9z
c3JjWzBdOwotICBFWFBFQ1RfRVEoc3RyZWFtLnNzcmMsIHNzcmMpOwotICBBU1NFUlRfRVEoc3Ry
ZWFtLm91dGdvaW5nX3BhY2tldHMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAg
dGVzdDo6VmVyaWZ5TG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcoKmV2ZW50LCBzdHJlYW0ub3V0Z29p
bmdfcGFja2V0c1swXSkpOworICBUZXN0UnRwUGFja2V0czxSdGNFdmVudFJ0cFBhY2tldE91dGdv
aW5nLCBMb2dnZWRSdHBQYWNrZXRPdXRnb2luZz4oKTsKIH0KIAorLy8gVE9ETyhlbGFkYWxvbi90
ZXJlbGl1cyk6IFRlc3Qgd2l0aCBtdWx0aXBsZSBldmVudHMgaW4gdGhlIGJhdGNoLgogVEVTVF9Q
KFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmln
KSB7CiAgIHVpbnQzMl90IHNzcmMgPSBwcm5nXy5SYW5kPHVpbnQzMl90PigpOwogICBSdHBIZWFk
ZXJFeHRlbnNpb25NYXAgZXh0ZW5zaW9ucyA9IGdlbl8uTmV3UnRwSGVhZGVyRXh0ZW5zaW9uTWFw
KCk7CkBAIC00MTksOSArNjMzLDEwIEBAIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBS
dGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZykgewogICBjb25zdCBhdXRvJiB2aWRlb19y
ZWN2X2NvbmZpZ3MgPSBwYXJzZWRfbG9nXy52aWRlb19yZWN2X2NvbmZpZ3MoKTsKIAogICBBU1NF
UlRfRVEodmlkZW9fcmVjdl9jb25maWdzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSh0ZXN0
OjpWZXJpZnlMb2dnZWRWaWRlb1JlY3ZDb25maWcoKmV2ZW50LCB2aWRlb19yZWN2X2NvbmZpZ3Nb
MF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFZpZGVvUmVjdkNvbmZpZygqZXZlbnQsIHZp
ZGVvX3JlY3ZfY29uZmlnc1swXSk7CiB9CiAKKy8vIFRPRE8oZWxhZGFsb24vdGVyZWxpdXMpOiBU
ZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRzIGluIHRoZSBiYXRjaC4KIFRFU1RfUChSdGNFdmVudExv
Z0VuY29kZXJUZXN0LCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZykgewogICB1aW50MzJf
dCBzc3JjID0gcHJuZ18uUmFuZDx1aW50MzJfdD4oKTsKICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFw
IGV4dGVuc2lvbnMgPSBnZW5fLk5ld1J0cEhlYWRlckV4dGVuc2lvbk1hcCgpOwpAQCAtNDM0LDEx
ICs2NDksMTUgQEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50VmlkZW9T
ZW5kU3RyZWFtQ29uZmlnKSB7CiAgIGNvbnN0IGF1dG8mIHZpZGVvX3NlbmRfY29uZmlncyA9IHBh
cnNlZF9sb2dfLnZpZGVvX3NlbmRfY29uZmlncygpOwogCiAgIEFTU0VSVF9FUSh2aWRlb19zZW5k
X2NvbmZpZ3Muc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZFZp
ZGVvU2VuZENvbmZpZygqZXZlbnQsIHZpZGVvX3NlbmRfY29uZmlnc1swXSkpOworICB2ZXJpZmll
cl8uVmVyaWZ5TG9nZ2VkVmlkZW9TZW5kQ29uZmlnKCpldmVudCwgdmlkZW9fc2VuZF9jb25maWdz
WzBdKTsKIH0KIAotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUmFuZG9tU2VlZHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBSdGNFdmVudExvZ0VuY29kZXJUZXN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoMSwgMiwgMywgNCwgNSkpOworSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoCisgICAgUmFuZG9tU2VlZHMsCisgICAgUnRjRXZlbnRMb2dFbmNvZGVyVGVz
dCwKKyAgICA6OnRlc3Rpbmc6OkNvbWJpbmUoLyogUmFuZG9tIHNlZWQqOiAqLyA6OnRlc3Rpbmc6
OlZhbHVlcygxLCAyLCAzLCA0LCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgLyogRW5jb2Rp
bmc6ICovIDo6dGVzdGluZzo6Qm9vbCgpLAorICAgICAgICAgICAgICAgICAgICAgICAvKiBFdmVu
dCBjb3VudDogKi8gOjp0ZXN0aW5nOjpWYWx1ZXMoMSwgMiwgMTAsIDEwMCksCisgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFJlcGVhdGVkIGZpZWxkczogKi8gOjp0ZXN0aW5nOjpCb29sKCkpKTsK
IAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvdmFy
aW50LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvdmFyaW50LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxZTI5ZTg0ODBi
ZDVhYTExY2EyZTFiNjQwNTdiZGE4NmRjZjQzYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZW5jb2Rlci92YXJpbnQuY2MKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMp
IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQuaCIKKwor
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCisvLyBUT0RPKGVsYWRhbG9uKTogQWRkIHVu
aXQgdGVzdHMuCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjb25zdCBzaXplX3Qga01heFZhcklu
dExlbmd0aEJ5dGVzID0gMTA7ICAvLyBjZWlsKDY0IC8gNy4wKSBpcyAxMC4KKworc3RkOjpzdHJp
bmcgRW5jb2RlVmFySW50KHVpbnQ2NF90IGlucHV0KSB7CisgIHN0ZDo6c3RyaW5nIG91dHB1dDsK
KyAgb3V0cHV0LnJlc2VydmUoa01heFZhckludExlbmd0aEJ5dGVzKTsKKworICBkbyB7CisgICAg
dWludDhfdCBieXRlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaW5wdXQgJiAweDdmKTsKKyAgICBp
bnB1dCA+Pj0gNzsKKyAgICBpZiAoaW5wdXQgPiAwKSB7CisgICAgICBieXRlIHw9IDB4ODA7Cisg
ICAgfQorICAgIG91dHB1dCArPSBieXRlOworICB9IHdoaWxlIChpbnB1dCA+IDApOworCisgIFJU
Q19EQ0hFQ0tfR0Uob3V0cHV0LnNpemUoKSwgMXUpOworICBSVENfRENIRUNLX0xFKG91dHB1dC5z
aXplKCksIGtNYXhWYXJJbnRMZW5ndGhCeXRlcyk7CisKKyAgcmV0dXJuIG91dHB1dDsKK30KKwor
Ly8gVGhlcmUgaXMgc29tZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlIGZsYXZvcnMgb2Yg
dGhpcyBmdW5jdGlvbi4KKy8vIEZvciBwZXJmb3JtYW5jZSdzIHNha2UsIGl0J3MgYmVzdCB0byBq
dXN0IGtlZXAgaXQuCitzaXplX3QgRGVjb2RlVmFySW50KGFic2w6OnN0cmluZ192aWV3IGlucHV0
LCB1aW50NjRfdCogb3V0cHV0KSB7CisgIFJUQ19EQ0hFQ0sob3V0cHV0KTsKKworICB1aW50NjRf
dCBkZWNvZGVkID0gMDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGgoKSAm
JiBpIDwga01heFZhckludExlbmd0aEJ5dGVzOyArK2kpIHsKKyAgICBkZWNvZGVkICs9IChzdGF0
aWNfY2FzdDx1aW50NjRfdD4oaW5wdXRbaV0gJiAweDdmKQorICAgICAgICAgICAgICAgIDw8IHN0
YXRpY19jYXN0PHVpbnQ2NF90Pig3ICogaSkpOworICAgIGlmICghKGlucHV0W2ldICYgMHg4MCkp
IHsKKyAgICAgICpvdXRwdXQgPSBkZWNvZGVkOworICAgICAgcmV0dXJuIGkgKyAxOworICAgIH0K
KyAgfQorCisgIHJldHVybiAwOworfQorCisvLyBUaGVyZSBpcyBzb21lIGNvZGUgZHVwbGljYXRp
b24gYmV0d2VlbiB0aGUgZmxhdm9ycyBvZiB0aGlzIGZ1bmN0aW9uLgorLy8gRm9yIHBlcmZvcm1h
bmNlJ3Mgc2FrZSwgaXQncyBiZXN0IHRvIGp1c3Qga2VlcCBpdC4KK3NpemVfdCBEZWNvZGVWYXJJ
bnQocnRjOjpCaXRCdWZmZXIqIGlucHV0LCB1aW50NjRfdCogb3V0cHV0KSB7CisgIFJUQ19EQ0hF
Q0sob3V0cHV0KTsKKworICB1aW50NjRfdCBkZWNvZGVkID0gMDsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBrTWF4VmFySW50TGVuZ3RoQnl0ZXM7ICsraSkgeworICAgIHVpbnQ4X3QgYnl0ZTsK
KyAgICBpZiAoIWlucHV0LT5SZWFkVUludDgoJmJ5dGUpKSB7CisgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgICAgZGVjb2RlZCArPQorICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGUg
JiAweDdmKSA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oNyAqIGkpKTsKKyAgICBpZiAoIShieXRl
ICYgMHg4MCkpIHsKKyAgICAgICpvdXRwdXQgPSBkZWNvZGVkOworICAgICAgcmV0dXJuIGkgKyAx
OworICAgIH0KKyAgfQorCisgIHJldHVybiAwOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3Zh
cmludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk1NDk0YWU3NTNmYzI1ODdlN2NiYjBlM2ZhY2M5NGVjZjEzNjgy
YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQuaApAQCAtMCwwICsx
LDQ1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBMT0dHSU5HX1JUQ19FVkVO
VF9MT0dfRU5DT0RFUl9WQVJJTlRfSF8KKyNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VO
Q09ERVJfVkFSSU5UX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL3N0
cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9iaXRidWZmZXIuaCIKKwor
bmFtZXNwYWNlIHdlYnJ0YyB7CisKK2V4dGVybiBjb25zdCBzaXplX3Qga01heFZhckludExlbmd0
aEJ5dGVzOworCisvLyBFbmNvZGUgYSBnaXZlbiB1aW50NjRfdCBhcyBhIHZhcmludC4gRnJvbSBs
ZWFzdCB0byBtb3N0IHNpZ25pZmljYW50LAorLy8gZWFjaCBiYXRjaCBvZiBzZXZlbiBiaXRzIGFy
ZSBwdXQgaW50byB0aGUgbG93ZXIgYml0cyBvZiBhIGJ5dGUsIGFuZCB0aGUgbGFzdAorLy8gcmVt
YWluaW5nIGJpdCBpbiB0aGF0IGJ5dGUgKHRoZSBoaWdoZXN0IG9uZSkgbWFya3Mgd2hldGhlciBh
ZGRpdGlvbmFsIGJ5dGVzCisvLyBmb2xsb3cgKHdoaWNoIGhhcHBlbnMgaWYgYW5kIG9ubHkgaWYg
dGhlcmUgYXJlIG90aGVyIGJpdHMgaW4gfGlucHV0fCB3aGljaAorLy8gYXJlIG5vbi16ZXJvKS4K
Ky8vIE5vdGVzOiBJZiBpbnB1dCA9PSAwLCBvbmUgYnl0ZSBpcyB1c2VkLiBJZiBpbnB1dCBpcyB1
aW50NjRfdDo6bWF4LCBleGFjdGx5CisvLyBrTWF4VmFySW50TGVuZ3RoQnl0ZXMgYXJlIHVzZWQu
CitzdGQ6OnN0cmluZyBFbmNvZGVWYXJJbnQodWludDY0X3QgaW5wdXQpOworCisvLyBJbnZlcnNl
IG9mIEVuY29kZVZhckludCgpLgorLy8gSWYgZGVjb2RpbmcgaXMgc3VjY2Vzc2Z1bCwgYSBub24t
emVybyBudW1iZXIgaXMgcmV0dXJuZWQsIGluZGljYXRpbmcgdGhlCisvLyBudW1iZXIgb2YgYnl0
ZXMgcmVhZCBmcm9tIHxpbnB1dHwsIGFuZCB0aGUgZGVjb2RlZCB2YXJpbnQgaXMgd3JpdHRlbgor
Ly8gaW50byB8b3V0cHV0fC4KKy8vIElmIG5vdCBzdWNjZXNzZnVsLCAwIGlzIHJldHVybmVkLCBh
bmQgfG91dHB1dHwgaXMgbm90IG1vZGlmaWVkLgorc2l6ZV90IERlY29kZVZhckludChhYnNsOjpz
dHJpbmdfdmlldyBpbnB1dCwgdWludDY0X3QqIG91dHB1dCk7CisKKy8vIFNhbWUgYXMgb3RoZXIg
dmVyc2lvbiwgYnV0IHVzZXMgYSBydGM6OkJpdEJ1ZmZlciBmb3IgaW5wdXQuCisvLyBTb21lIGJp
dHMgbWF5IGJlIGNvbnN1bWVkIGV2ZW4gaWYgYSB2YXJpbnQgZmFpbHMgdG8gYmUgcmVhZC4KK3Np
emVfdCBEZWNvZGVWYXJJbnQocnRjOjpCaXRCdWZmZXIqIGlucHV0LCB1aW50NjRfdCogb3V0cHV0
KTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIExPR0dJTkdfUlRDX0VW
RU5UX0xPR19FTkNPREVSX1ZBUklOVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgKaW5kZXggMjFkNmU0OGUwZjUyOTA0
NTAwNDkyZjNhZWFhOWVjNmQzYjk2N2Y0Ny4uN2FlNjM3NThiMTU4YWIzMDZlMTFmMDU1MGM4OThk
OGRjNThkN2FlMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oCkBAIC01NywxMiArNTcsMTMgQEAgY2xhc3MgUnRjRXZl
bnQgewogCiAgIHZpcnR1YWwgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3QgPSAwOwogCi0gIHZp
cnR1YWwgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3QgPSAwOwotCi0gIGNv
bnN0IGludDY0X3QgdGltZXN0YW1wX3VzXzsKKyAgaW50NjRfdCB0aW1lc3RhbXBfbXMoKSBjb25z
dCB7IHJldHVybiB0aW1lc3RhbXBfdXNfIC8gMTAwMDsgfQorICBpbnQ2NF90IHRpbWVzdGFtcF91
cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91c187IH0KIAogIHByb3RlY3RlZDoKICAgZXhw
bGljaXQgUnRjRXZlbnQoaW50NjRfdCB0aW1lc3RhbXBfdXMpIDogdGltZXN0YW1wX3VzXyh0aW1l
c3RhbXBfdXMpIHt9CisKKyAgY29uc3QgaW50NjRfdCB0aW1lc3RhbXBfdXNfOwogfTsKIAogfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
YWxyX3N0YXRlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmNjCmluZGV4
IGMxZjFiMzk1MzIwMzMwMTBiNWM2YzgxYjRmNDg2NTZjMTY4NWQ2NmMuLjhlNWMyY2E4MmY3MWNj
OWZkZWZmOGJiNWQ3NTZiYTY0ZGE3MmU2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X2Fscl9zdGF0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hbHJfc3Rh
dGUuY2MKQEAgLTI4LDggKzI4LDggQEAgYm9vbCBSdGNFdmVudEFsclN0YXRlOjpJc0NvbmZpZ0V2
ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudD4gUnRjRXZlbnRBbHJTdGF0ZTo6Q29weSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6Oldy
YXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNFdmVudEFsclN0YXRlKCp0aGlzKSk7CitzdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnRBbHJTdGF0ZT4gUnRjRXZlbnRBbHJTdGF0ZTo6Q29weSgpIGNvbnN0
IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRBbHJTdGF0ZT4obmV3IFJ0Y0V2
ZW50QWxyU3RhdGUoKnRoaXMpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9hbHJfc3RhdGUuaAppbmRleCBlNzM3YzkxNWUxZDU2MTExOGZjMGViNDY0NzBl
OGRhZTZmZjY4YzczLi45NzY5NTg1ZDNkNjgyNjQ3N2QyZThhNzU2NzYxODA0N2EzMTU4ODA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hbHJfc3RhdGUuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF9hbHJfc3RhdGUuaApAQCAtMjYsMTIgKzI2LDE0IEBAIGNsYXNz
IFJ0Y0V2ZW50QWxyU3RhdGUgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXND
b25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVu
dD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBbHJT
dGF0ZT4gQ29weSgpIGNvbnN0OwogCi0gIGNvbnN0IGJvb2wgaW5fYWxyXzsKKyAgYm9vbCBpbl9h
bHIoKSBjb25zdCB7IHJldHVybiBpbl9hbHJfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudEFs
clN0YXRlKGNvbnN0IFJ0Y0V2ZW50QWxyU3RhdGUmIG90aGVyKTsKKworICBjb25zdCBib29sIGlu
X2Fscl87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb24uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb24uY2MKaW5kZXggZGNmMmQ3ZGU1
OTIyNGFmMmQ2NGMxMTFjZWJkNmZiNDQ1YWQ1Mjc5YS4uNTcxYjlhOTNkM2ViN2RlZTllNjJjMDM3
ZWQ5Njg0OTg4ZDNlNDhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVk
aW9fbmV0d29ya19hZGFwdGF0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1
ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi5jYwpAQCAtMTQsMTIgKzE0LDE1IEBACiAKICNpbmNsdWRl
ICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9h
dWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmln
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CiBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb246OlJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRh
cHRhdGlvbigKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZz4g
Y29uZmlnKQotICAgIDogY29uZmlnXyhzdGQ6Om1vdmUoY29uZmlnKSkge30KKyAgICA6IGNvbmZp
Z18oc3RkOjptb3ZlKGNvbmZpZykpIHsKKyAgUlRDX0RDSEVDSyhjb25maWdfKTsKK30KIAogUnRj
RXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uOjpSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRp
b24oCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uJiBvdGhlcikKQEAg
LTM2LDcgKzM5LDggQEAgYm9vbCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb246OklzQ29u
ZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PFJ0Y0V2ZW50PiBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb246OkNvcHkoKSBjb25zdCB7
CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPgorUnRjRXZl
bnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uOjpDb3B5KCkgY29uc3QgewogICByZXR1cm4gYWJzbDo6
V3JhcFVuaXF1ZShuZXcgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKCp0aGlzKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX25ldHdvcmtfYWRh
cHRhdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0
aW9uLmgKaW5kZXggNjVmYmFkODYyMWQwM2VhN2Q2ZjJiYTI2Y2M1Zjc1OTIyNTVhMTYyNC4uZWM2
Y2ExMTI1YzQwYTNlNmFlMmY5NWU3NTcxOTI3YjQ1MWFkYjVlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLmgKQEAgLTI5LDEyICsy
OSwxNCBAQCBjbGFzcyBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24gZmluYWwgOiBwdWJs
aWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBz
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPiBDb3B5KCkgY29u
c3Q7CiAKLSAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IEF1ZGlvRW5jb2RlclJ1bnRpbWVD
b25maWc+IGNvbmZpZ187CisgIGNvbnN0IEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWcmIGNvbmZp
ZygpIGNvbnN0IHsgcmV0dXJuICpjb25maWdfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudEF1
ZGlvTmV0d29ya0FkYXB0YXRpb24oY29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9u
JiBvdGhlcik7CisKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IEF1ZGlvRW5jb2RlclJ1
bnRpbWVDb25maWc+IGNvbmZpZ187CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19wbGF5b3V0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcGxheW91dC5jYwppbmRleCBhOTY0M2JhODY4YzAzOGQ4
MWQwYTM1NTcyMzlmOWQ4ZjJhMGUzZmM4Li42YzRhYTk4ZDNlMjM4Y2FjMzI1M2RmMjUzM2RhMGMx
MDYzZjIyMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19wbGF5
b3V0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3BsYXlvdXQuY2MKQEAg
LTI3LDggKzI3LDkgQEAgYm9vbCBSdGNFdmVudEF1ZGlvUGxheW91dDo6SXNDb25maWdFdmVudCgp
IGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+
IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0OjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3Jh
cFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KCp0aGlzKSk7CitzdGQ6
OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb1BsYXlvdXQ+IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0OjpD
b3B5KCkgY29uc3QgeworICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudEF1ZGlvUGxh
eW91dD4oCisgICAgICBuZXcgUnRjRXZlbnRBdWRpb1BsYXlvdXQoKnRoaXMpKTsKIH0KIAogfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
YXVkaW9fcGxheW91dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcGxheW91dC5o
CmluZGV4IDMwODBmNWI5ZjBlNzJlYjFhZGQzYTlkMjE2ZTY1Y2VkN2VjZjUzNjMuLjRiNDBmNWMw
MjcyOGFhNmI0ZjIwM2RkYzAxZjZjOTczMzVkNWRmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVu
dHMvcnRjX2V2ZW50X2F1ZGlvX3BsYXlvdXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9hdWRpb19wbGF5b3V0LmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lOR19SVENf
RVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfQVVESU9fUExBWU9VVF9IXwogI2RlZmluZSBMT0dH
SU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9BVURJT19QTEFZT1VUX0hfCiAKKyNp
bmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJsb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgpAQCAtMjYsMTIgKzI3LDE0IEBAIGNs
YXNzIFJ0Y0V2ZW50QXVkaW9QbGF5b3V0IGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50IHsKIAogICBi
b29sIElzQ29uZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8
UnRjRXZlbnQ+IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2
ZW50QXVkaW9QbGF5b3V0PiBDb3B5KCkgY29uc3Q7CiAKLSAgY29uc3QgdWludDMyX3Qgc3NyY187
CisgIHVpbnQzMl90IHNzcmMoKSBjb25zdCB7IHJldHVybiBzc3JjXzsgfQogCiAgcHJpdmF0ZToK
ICAgUnRjRXZlbnRBdWRpb1BsYXlvdXQoY29uc3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQmIG90aGVy
KTsKKworICBjb25zdCB1aW50MzJfdCBzc3JjXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3Ry
ZWFtX2NvbmZpZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3Ry
ZWFtX2NvbmZpZy5jYwppbmRleCBmZWU3YzNjNzY2YzNkMWRhNDhiZWI4OGMwN2U1MGUwM2EwZWQw
NTU1Li5mZGVmMzkzZDU0NmMxYTg5MTY2MmEyNTU0ZDJkMDc3OWE5MTc3NWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0cmVhbV9jb25maWcuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmln
LmNjCkBAIC0xNCwxMiArMTQsMTUgQEAKIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5o
IgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogUnRj
RXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc6OlJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFt
Q29uZmlnKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmln
KQotICAgIDogY29uZmlnXyhzdGQ6Om1vdmUoY29uZmlnKSkge30KKyAgICA6IGNvbmZpZ18oc3Rk
Ojptb3ZlKGNvbmZpZykpIHsKKyAgUlRDX0RDSEVDSyhjb25maWdfKTsKK30KIAogUnRjRXZlbnRB
dWRpb1JlY2VpdmVTdHJlYW1Db25maWc6OlJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmln
KAogICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnJiBvdGhlcikKQEAg
LTM2LDkgKzM5LDkgQEAgYm9vbCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZzo6SXND
b25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudD4gUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc6OkNvcHkoKSBjb25z
dCB7Ci0gIGF1dG8gY29uZmlnX2NvcHkgPSBhYnNsOjptYWtlX3VuaXF1ZTxydGNsb2c6OlN0cmVh
bUNvbmZpZz4oKmNvbmZpZ18pOwotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4o
CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc+CitSdGNF
dmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZzo6Q29weSgpIGNvbnN0IHsKKyAgcmV0dXJuIGFi
c2w6OldyYXBVbmlxdWU8UnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc+KAogICAgICAg
bmV3IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKCp0aGlzKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZp
Zy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmln
LmgKaW5kZXggMjc1NzY1MDMxNDM2MjA5ZDI5OWZlN2FkZDc1NjFkZDNjMzQxOGI1NS4uMmI3M2Y2
M2YwMDBkZmYwNmY5NGYzOWJiYTBjYzNiM2E3NjM0OGZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2
ZW50cy9ydGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgKQEAgLTMxLDEz
ICszMSwxNSBAQCBjbGFzcyBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyBmaW5hbCA6
IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7
CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZz4gQ29w
eSgpIGNvbnN0OwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVh
bUNvbmZpZz4gY29uZmlnXzsKKyAgY29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWcmIGNvbmZpZygp
IGNvbnN0IHsgcmV0dXJuICpjb25maWdfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudEF1ZGlv
UmVjZWl2ZVN0cmVhbUNvbmZpZygKICAgICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3Ry
ZWFtQ29uZmlnJiBvdGhlcik7CisKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IHJ0Y2xv
Zzo6U3RyZWFtQ29uZmlnPiBjb25maWdfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29u
ZmlnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmln
LmNjCmluZGV4IDQ3OTM5YzdiZGMzMmVmNTFhZjBiOTA5MmQwNDk5ZTViYTg4ZTQ5NDQuLmYxYTg1
YmZmNjk0NjUwMDQ0NmZlOGUzMThiOWFhMGZhZTFjM2M0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
dmVudHMvcnRjX2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF9hdWRpb19zZW5kX3N0cmVhbV9jb25maWcuY2MKQEAgLTE0LDEyICsx
NCwxNSBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAibG9n
Z2luZy9ydGNfZXZlbnRfbG9nL3J0Y19zdHJlYW1fY29uZmlnLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBSdGNFdmVudEF1ZGlvU2VuZFN0
cmVhbUNvbmZpZzo6UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcoCiAgICAgc3RkOjp1bmlx
dWVfcHRyPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWcpCi0gICAgOiBjb25maWdfKHN0ZDo6
bW92ZShjb25maWcpKSB7fQorICAgIDogY29uZmlnXyhzdGQ6Om1vdmUoY29uZmlnKSkgeworICBS
VENfRENIRUNLKGNvbmZpZ18pOworfQogCiBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZzo6
UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb1Nl
bmRTdHJlYW1Db25maWcmIG90aGVyKQpAQCAtMzYsOSArMzksMTAgQEAgYm9vbCBSdGNFdmVudEF1
ZGlvU2VuZFN0cmVhbUNvbmZpZzo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRBdWRpb1NlbmRTdHJl
YW1Db25maWc6OkNvcHkoKSBjb25zdCB7Ci0gIGF1dG8gY29uZmlnX2NvcHkgPSBhYnNsOjptYWtl
X3VuaXF1ZTxydGNsb2c6OlN0cmVhbUNvbmZpZz4oKmNvbmZpZ18pOwotICByZXR1cm4gYWJzbDo6
V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKCp0
aGlzKSk7CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc+CitS
dGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZzo6Q29weSgpIGNvbnN0IHsKKyAgcmV0dXJuIGFi
c2w6OldyYXBVbmlxdWU8UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc+KAorICAgICAgbmV3
IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3Nl
bmRfc3RyZWFtX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9z
dHJlYW1fY29uZmlnLmgKaW5kZXggYjI0OGE2MTkxNTAxOWU5N2E2ZTc1ODk3N2JhNjAyYTk1YzBk
ZmMzMS4uYzBlZmE5NTA5MDFiYmVkYzIwNWRlNDMxZDVkZTFhNjhkNjI2ZGFmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnLmgKQEAg
LTMxLDEyICszMSwxNCBAQCBjbGFzcyBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyBmaW5h
bCA6IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJp
ZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZz4gQ29w
eSgpIGNvbnN0OwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVh
bUNvbmZpZz4gY29uZmlnXzsKKyAgY29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWcmIGNvbmZpZygp
IGNvbnN0IHsgcmV0dXJuICpjb25maWdfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudEF1ZGlv
U2VuZFN0cmVhbUNvbmZpZyhjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyYgb3Ro
ZXIpOworCisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZp
Zz4gY29uZmlnXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfZGVsYXlfYmFzZWQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2RlbGF5X2Jhc2VkLmNjCmluZGV4IDhjMTc5NzEy
NjA1MjBiYmFmMzJhMjM2MTBkZTdkMTFhYTU2ZmQzNTkuLmRjYzg3NDIxZjg3MzdkN2UzM2ZjNmRl
MmNmNmUzMDZkY2YxZjJiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3
ZV91cGRhdGVfZGVsYXlfYmFzZWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndl
X3VwZGF0ZV9kZWxheV9iYXNlZC5jYwpAQCAtMzYsOCArMzYsMTAgQEAgYm9vbCBSdGNFdmVudEJ3
ZVVwZGF0ZURlbGF5QmFzZWQ6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiBmYWxz
ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5
QmFzZWQ6OkNvcHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50
PihuZXcgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkKCp0aGlzKSk7CitzdGQ6OnVuaXF1ZV9w
dHI8UnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkPiBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFz
ZWQ6OkNvcHkoKQorICAgIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZl
bnRCd2VVcGRhdGVEZWxheUJhc2VkPigKKyAgICAgIG5ldyBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5
QmFzZWQoKnRoaXMpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9kZWxheV9iYXNlZC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9kZWxheV9iYXNlZC5oCmluZGV4IDNmNDdkYzdm
OTcwNDVkMjc5ZWRhMjJiZDliYjhhNGZiNjIxZDk4M2IuLmE5N2Q0OWY1YTU0ZTQ3YmMwOTgyYmY5
NDU1YjFkM2RkNDE0MWM5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3
ZV91cGRhdGVfZGVsYXlfYmFzZWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2Vf
dXBkYXRlX2RlbGF5X2Jhc2VkLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lOR19S
VENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfQldFX1VQREFURV9ERUxBWV9CQVNFRF9IXwog
I2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9CV0VfVVBEQVRF
X0RFTEFZX0JBU0VEX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+
CiAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgpA
QCAtMjksMTMgKzMwLDE2IEBAIGNsYXNzIFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCBmaW5h
bCA6IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJp
ZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQ+IENvcHko
KSBjb25zdDsKIAotICBjb25zdCBpbnQzMl90IGJpdHJhdGVfYnBzXzsKLSAgY29uc3QgQmFuZHdp
ZHRoVXNhZ2UgZGV0ZWN0b3Jfc3RhdGVfOworICBpbnQzMl90IGJpdHJhdGVfYnBzKCkgY29uc3Qg
eyByZXR1cm4gYml0cmF0ZV9icHNfOyB9CisgIEJhbmR3aWR0aFVzYWdlIGRldGVjdG9yX3N0YXRl
KCkgY29uc3QgeyByZXR1cm4gZGV0ZWN0b3Jfc3RhdGVfOyB9CiAKICBwcml2YXRlOgogICBSdGNF
dmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQoY29uc3QgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2Vk
JiBvdGhlcik7CisKKyAgY29uc3QgaW50MzJfdCBiaXRyYXRlX2Jwc187CisgIGNvbnN0IEJhbmR3
aWR0aFVzYWdlIGRldGVjdG9yX3N0YXRlXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNl
ZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5jYwpp
bmRleCBiMGU3MmRkYjBhYTc5NGZkNjczMzNiMDY1MjQ3MTNhMThjZGY2OThjLi44NDUzMjM4Y2Y5
MDNiMzhlOTE0NTI5MTMxMTA4ZWI4YTU4NTJlOTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9id2VfdXBkYXRlX2xvc3NfYmFzZWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfYndlX3VwZGF0ZV9sb3NzX2Jhc2VkLmNjCkBAIC0zOCw4ICszOCwxMCBAQCBib29s
IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRCd2VV
cGRhdGVMb3NzQmFzZWQ6OkNvcHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVl
PFJ0Y0V2ZW50PihuZXcgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQoKnRoaXMpKTsKK3N0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZD4gUnRjRXZlbnRCd2VVcGRhdGVM
b3NzQmFzZWQ6OkNvcHkoKQorICAgIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8
UnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQ+KAorICAgICAgbmV3IFJ0Y0V2ZW50QndlVXBkYXRl
TG9zc0Jhc2VkKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9sb3NzX2Jhc2VkLmgKaW5kZXggMmQ0ZmZk
YTFiMWVhNmVkNjZkMDE4MDBkZTc0OWQ2YTFkNDI4ODdkOC4uYjRmODg3NzVmYjcyZWFhOTYxOGFh
YTkxOWVjMTM2Y2M1ZDgzZmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
YndlX3VwZGF0ZV9sb3NzX2Jhc2VkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndl
X3VwZGF0ZV9sb3NzX2Jhc2VkLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lOR19S
VENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfQldFX1VQREFURV9MT1NTX0JBU0VEX0hfCiAj
ZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FVkVOVFNfUlRDX0VWRU5UX0JXRV9VUERBVEVf
TE9TU19CQVNFRF9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5Pgog
CiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIKQEAg
LTI4LDE0ICsyOSwxOCBAQCBjbGFzcyBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCBmaW5hbCA6
IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7
CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZD4gQ29weSgpIGNv
bnN0OwogCi0gIGNvbnN0IGludDMyX3QgYml0cmF0ZV9icHNfOwotICBjb25zdCB1aW50OF90IGZy
YWN0aW9uX2xvc3NfOwotICBjb25zdCBpbnQzMl90IHRvdGFsX3BhY2tldHNfOworICBpbnQzMl90
IGJpdHJhdGVfYnBzKCkgY29uc3QgeyByZXR1cm4gYml0cmF0ZV9icHNfOyB9CisgIHVpbnQ4X3Qg
ZnJhY3Rpb25fbG9zcygpIGNvbnN0IHsgcmV0dXJuIGZyYWN0aW9uX2xvc3NfOyB9CisgIGludDMy
X3QgdG90YWxfcGFja2V0cygpIGNvbnN0IHsgcmV0dXJuIHRvdGFsX3BhY2tldHNfOyB9CiAKICBw
cml2YXRlOgogICBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZChjb25zdCBSdGNFdmVudEJ3ZVVw
ZGF0ZUxvc3NCYXNlZCYgb3RoZXIpOworCisgIGNvbnN0IGludDMyX3QgYml0cmF0ZV9icHNfOwor
ICBjb25zdCB1aW50OF90IGZyYWN0aW9uX2xvc3NfOworICBjb25zdCBpbnQzMl90IHRvdGFsX3Bh
Y2tldHNfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyLmNjCmluZGV4IGZhMzJkZTY4ZDVlYWI3YzFhMmZm
N2U1NzM2NzUzYjAxNTBiMjZhMDEuLjljMzE3MzdlYTVlZTYxMTM1MTgwN2UxYjA0MDU3ZDBjNTYy
N2VjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVf
cGFpci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXIu
Y2MKQEAgLTM1LDggKzM1LDEwIEBAIGJvb2wgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyOjpJc0Nv
bmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudD4gUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyOjpDb3B5KCkgY29uc3QgewotICBy
ZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRl
UGFpcigqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcj4g
UnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyOjpDb3B5KCkKKyAgICBjb25zdCB7CisgIHJldHVybiBh
YnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcj4oCisgICAgICBuZXcgUnRj
RXZlbnRJY2VDYW5kaWRhdGVQYWlyKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFp
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyLmgKaW5kZXgg
ZjQ5YTBkMTc5MmNiNDMxYmVmYzM3YmFkYzZiMTY5M2RmYWIzYWIxMS4uNzQxNGZlYzc5YjFlOGIw
NjJkMjA0ZDU3ODY3NDZkZjE0NzNjYTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
aWNlX2NhbmRpZGF0ZV9wYWlyLmgKQEAgLTM2LDEzICszNiwxNiBAQCBjbGFzcyBSdGNFdmVudElj
ZUNhbmRpZGF0ZVBhaXIgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25m
aWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4g
Q29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRJY2VDYW5k
aWRhdGVQYWlyPiBDb3B5KCkgY29uc3Q7CiAKLSAgY29uc3QgSWNlQ2FuZGlkYXRlUGFpckV2ZW50
VHlwZSB0eXBlXzsKLSAgY29uc3QgdWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWRfOworICBJY2VD
YW5kaWRhdGVQYWlyRXZlbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlXzsgfQorICB1
aW50MzJfdCBjYW5kaWRhdGVfcGFpcl9pZCgpIGNvbnN0IHsgcmV0dXJuIGNhbmRpZGF0ZV9wYWly
X2lkXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyKGNvbnN0IFJ0
Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpciYgb3RoZXIpOworCisgIGNvbnN0IEljZUNhbmRpZGF0ZVBh
aXJFdmVudFR5cGUgdHlwZV87CisgIGNvbnN0IHVpbnQzMl90IGNhbmRpZGF0ZV9wYWlyX2lkXzsK
IH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnLmNjCmluZGV4IGY4OWRlNzc0MGM3YmU5
OGViZDYyZjhmMGE2ZWVmM2MyNWQwODdkZmIuLmZiYjhhNzNkZmJlYTU5ZjY2ZmYzYmY1NmU2NDU0
Yzc0NDU0ZjU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5k
aWRhdGVfcGFpcl9jb25maWcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfaWNlX2Nh
bmRpZGF0ZV9wYWlyX2NvbmZpZy5jYwpAQCAtNjQsOCArNjQsMTAgQEAgYm9vbCBSdGNFdmVudElj
ZUNhbmRpZGF0ZVBhaXJDb25maWc6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiBm
YWxzZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNFdmVudEljZUNhbmRpZGF0
ZVBhaXJDb25maWc6OkNvcHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0
Y0V2ZW50PihuZXcgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKCp0aGlzKSk7CitzdGQ6
OnVuaXF1ZV9wdHI8UnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnPgorUnRjRXZlbnRJY2VD
YW5kaWRhdGVQYWlyQ29uZmlnOjpDb3B5KCkgY29uc3QgeworICByZXR1cm4gYWJzbDo6V3JhcFVu
aXF1ZTxSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWc+KAorICAgICAgbmV3IFJ0Y0V2ZW50
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZygqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3Bh
aXJfY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXJf
Y29uZmlnLmgKaW5kZXggMWY2ZWI4Y2ViMGZmZmU4ZTg3ZDFmZTQ4OWUyNmUyM2VmMmJiOTZlYy4u
NDBiZGJhYTc3MWU4MWMwY2ZiNmE5ZDAxMzJiN2NkZWY0MmI5Y2Q3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWcuaApAQCAtOTIs
MTQgKzkyLDIwIEBAIGNsYXNzIFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyBmaW5hbCA6
IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7
CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWc+IENvcHko
KSBjb25zdDsKIAotICBjb25zdCBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZSB0eXBlXzsKLSAg
Y29uc3QgdWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWRfOwotICBjb25zdCBJY2VDYW5kaWRhdGVQ
YWlyRGVzY3JpcHRpb24gY2FuZGlkYXRlX3BhaXJfZGVzY187CisgIEljZUNhbmRpZGF0ZVBhaXJD
b25maWdUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlXzsgfQorICB1aW50MzJfdCBjYW5k
aWRhdGVfcGFpcl9pZCgpIGNvbnN0IHsgcmV0dXJuIGNhbmRpZGF0ZV9wYWlyX2lkXzsgfQorICBj
b25zdCBJY2VDYW5kaWRhdGVQYWlyRGVzY3JpcHRpb24mIGNhbmRpZGF0ZV9wYWlyX2Rlc2MoKSBj
b25zdCB7CisgICAgcmV0dXJuIGNhbmRpZGF0ZV9wYWlyX2Rlc2NfOworICB9CiAKICBwcml2YXRl
OgogICBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWcoY29uc3QgUnRjRXZlbnRJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnJiBvdGhlcik7CisKKyAgY29uc3QgSWNlQ2FuZGlkYXRlUGFpckNvbmZp
Z1R5cGUgdHlwZV87CisgIGNvbnN0IHVpbnQzMl90IGNhbmRpZGF0ZV9wYWlyX2lkXzsKKyAgY29u
c3QgSWNlQ2FuZGlkYXRlUGFpckRlc2NyaXB0aW9uIGNhbmRpZGF0ZV9wYWlyX2Rlc2NfOwogfTsK
IAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
cHJvYmVfY2x1c3Rlcl9jcmVhdGVkLmNjCmluZGV4IGE2MDc2NWRiZDBmMWJlZmY5YmRiYmI0NGYx
MzRkMjRjZmY4ZjRlNWUuLmMxMWE2Y2U3OGViNTZlMGJmOTM2M2I0Y2Y4YTFhNmIyYWFjZGZlNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRl
ZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9jbHVzdGVyX2NyZWF0ZWQu
Y2MKQEAgLTM5LDggKzM5LDEwIEBAIGJvb2wgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkOjpJ
c0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudD4gUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkOjpDb3B5KCkgY29uc3Qg
ewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50UHJvYmVD
bHVzdGVyQ3JlYXRlZCgqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UHJvYmVDbHVz
dGVyQ3JlYXRlZD4gUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkOjpDb3B5KCkKKyAgICBjb25z
dCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRl
ZD4oCisgICAgICBuZXcgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkKCp0aGlzKSk7CiB9CiAK
IH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJv
YmVfY2x1c3Rlcl9jcmVhdGVkLmgKaW5kZXggM2U4YzIxZjVjOTIxOTgzOTY3MzMzNGViMDgxNmRj
YTEyNTE0NTBmMC4uYWQ3NTdlZGQ1MzBlMGNmODVhMTVlMThlNDRjMjVjZjE1ZDQwMTg2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkLmgKQEAg
LTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENf
RVZFTlRfUFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0hfCiAjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5U
X0xPR19FVkVOVFNfUlRDX0VWRU5UX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9IXwogCisjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIKQEAgLTI5LDE1ICszMCwyMCBAQCBjbGFzcyBS
dGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAg
IGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRj
RXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkPiBDb3B5KCkgY29uc3Q7CisKKyAgaW50MzJfdCBpZCgp
IGNvbnN0IHsgcmV0dXJuIGlkXzsgfQorICBpbnQzMl90IGJpdHJhdGVfYnBzKCkgY29uc3QgeyBy
ZXR1cm4gYml0cmF0ZV9icHNfOyB9CisgIHVpbnQzMl90IG1pbl9wcm9iZXMoKSBjb25zdCB7IHJl
dHVybiBtaW5fcHJvYmVzXzsgfQorICB1aW50MzJfdCBtaW5fYnl0ZXMoKSBjb25zdCB7IHJldHVy
biBtaW5fYnl0ZXNfOyB9CisKKyBwcml2YXRlOgorICBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0
ZWQoY29uc3QgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkJiBvdGhlcik7CiAKICAgY29uc3Qg
aW50MzJfdCBpZF87CiAgIGNvbnN0IGludDMyX3QgYml0cmF0ZV9icHNfOwogICBjb25zdCB1aW50
MzJfdCBtaW5fcHJvYmVzXzsKICAgY29uc3QgdWludDMyX3QgbWluX2J5dGVzXzsKLQotIHByaXZh
dGU6Ci0gIFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZChjb25zdCBSdGNFdmVudFByb2JlQ2x1
c3RlckNyZWF0ZWQmIG90aGVyKTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9mYWlsdXJlLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuY2MKaW5kZXggYWE2
MDkxY2E3NzViNTRiOTJkYjkwOGE3MWUwMTE1NDY1NjVmMjhiNi4uMjk1MDAzYWU4ZDA0OTExNDEx
NGUyNDk0ZjQ4ZTcwNThiMWI3YjQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZl
bnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
cHJvYmVfcmVzdWx0X2ZhaWx1cmUuY2MKQEAgLTMzLDggKzMzLDEwIEBAIGJvb2wgUnRjRXZlbnRQ
cm9iZVJlc3VsdEZhaWx1cmU6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiBmYWxz
ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNFdmVudFByb2JlUmVzdWx0RmFp
bHVyZTo6Q29weSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+
KG5ldyBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZSgqdGhpcykpOworc3RkOjp1bmlxdWVfcHRy
PFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlPiBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZTo6
Q29weSgpCisgICAgY29uc3QgeworICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudFBy
b2JlUmVzdWx0RmFpbHVyZT4oCisgICAgICBuZXcgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUo
KnRoaXMpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9mYWlsdXJlLmgKaW5kZXggMTgxYzY5NDAzNzBkZGQwNjM2
Yzk5ZTIxZTU1MmI5NjVjMzRmMjg5OC4uMGM0MGYwY2QxYjExZWI5MzA5ZmM2YTZhY2Y3ZjljNWJk
YjY3ZWNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0
X2ZhaWx1cmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfZmFp
bHVyZS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19F
VkVOVFNfUlRDX0VWRU5UX1BST0JFX1JFU1VMVF9GQUlMVVJFX0hfCiAjZGVmaW5lIExPR0dJTkdf
UlRDX0VWRU5UX0xPR19FVkVOVFNfUlRDX0VWRU5UX1BST0JFX1JFU1VMVF9GQUlMVVJFX0hfCiAK
KyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJsb2dn
aW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgpAQCAtMzMsMTMgKzM0LDE2IEBA
IGNsYXNzIFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlIGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50
IHsKIAogICBib29sIElzQ29uZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICBzdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnQ+IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVf
cHRyPFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlPiBDb3B5KCkgY29uc3Q7CiAKLSAgY29uc3Qg
aW50MzJfdCBpZF87Ci0gIGNvbnN0IFByb2JlRmFpbHVyZVJlYXNvbiBmYWlsdXJlX3JlYXNvbl87
CisgIGludDMyX3QgaWQoKSBjb25zdCB7IHJldHVybiBpZF87IH0KKyAgUHJvYmVGYWlsdXJlUmVh
c29uIGZhaWx1cmVfcmVhc29uKCkgY29uc3QgeyByZXR1cm4gZmFpbHVyZV9yZWFzb25fOyB9CiAK
ICBwcml2YXRlOgogICBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZShjb25zdCBSdGNFdmVudFBy
b2JlUmVzdWx0RmFpbHVyZSYgb3RoZXIpOworCisgIGNvbnN0IGludDMyX3QgaWRfOworICBjb25z
dCBQcm9iZUZhaWx1cmVSZWFzb24gZmFpbHVyZV9yZWFzb25fOwogfTsKIAogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVz
dWx0X3N1Y2Nlc3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfc3Vj
Y2Vzcy5jYwppbmRleCA1NTkwNzI5NWRlYmQ2MTNkOTM1MDhkYmU3NWI2ZDEwZTZjYzNhMmNjLi5k
NWY5ZTJmNzgwY2E5Nzc1NjZmNDFjNGMzMzM0YTVlMTQ0MmQ2OGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfc3VjY2Vzcy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfc3VjY2Vzcy5jYwpAQCAtMzIsOCArMzIsMTAg
QEAgYm9vbCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2Vzczo6SXNDb25maWdFdmVudCgpIGNvbnN0
IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2
ZW50UHJvYmVSZXN1bHRTdWNjZXNzOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3Jh
cFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzKCp0aGlzKSk7
CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3M+IFJ0Y0V2ZW50UHJv
YmVSZXN1bHRTdWNjZXNzOjpDb3B5KCkKKyAgICBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFw
VW5pcXVlPFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzPigKKyAgICAgIG5ldyBSdGNFdmVudFBy
b2JlUmVzdWx0U3VjY2VzcygqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfc3VjY2Vzcy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X3N1Y2Nlc3MuaAppbmRleCAx
NWZmMTgzM2JmMDRkMWM2MmFkYTEzNmVkMzgwM2RiZmRjYmQ1OWE5Li5hMDhkYWRkMjEyYmE4MjNm
MDU4ZmQyOTI1MzI4ZGI2MDAzNmFjM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19l
dmVudF9wcm9iZV9yZXN1bHRfc3VjY2Vzcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X3Byb2JlX3Jlc3VsdF9zdWNjZXNzLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lO
R19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfUFJPQkVfUkVTVUxUX1NVQ0NFU1NfSF8K
ICNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfUFJPQkVfUkVT
VUxUX1NVQ0NFU1NfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4K
IAogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCkBA
IC0yNiwxMyArMjcsMTYgQEAgY2xhc3MgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3MgZmluYWwg
OiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJy
aWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRl
OworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3M+IENvcHkoKSBj
b25zdDsKIAotICBjb25zdCBpbnQzMl90IGlkXzsKLSAgY29uc3QgaW50MzJfdCBiaXRyYXRlX2Jw
c187CisgIGludDMyX3QgaWQoKSBjb25zdCB7IHJldHVybiBpZF87IH0KKyAgaW50MzJfdCBiaXRy
YXRlX2JwcygpIGNvbnN0IHsgcmV0dXJuIGJpdHJhdGVfYnBzXzsgfQogCiAgcHJpdmF0ZToKICAg
UnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3MoY29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nl
c3MmIG90aGVyKTsKKworICBjb25zdCBpbnQzMl90IGlkXzsKKyAgY29uc3QgaW50MzJfdCBiaXRy
YXRlX2Jwc187CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9pbmNvbWluZy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVu
dHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X2luY29taW5nLmNjCmluZGV4IDExOTkzOGM3ZjcxODg0
ODA5ZDU0ODJiMDAwODQxMWMxNjBjZDc2ZTMuLjQ1YTQxOGYxZjY5YzJiYzc4NjA4NmNmZGU5OTA5
ZmE3MWJmNDI4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFj
a2V0X2luY29taW5nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0
X2luY29taW5nLmNjCkBAIC0zMyw4ICszMywxMCBAQCBib29sIFJ0Y0V2ZW50UnRjcFBhY2tldElu
Y29taW5nOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmc6OkNvcHko
KSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50PihuZXcgUnRjRXZl
bnRSdGNwUGFja2V0SW5jb21pbmcoKnRoaXMpKTsKK3N0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0
Y3BQYWNrZXRJbmNvbWluZz4gUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmc6OkNvcHkoKQorICAg
IGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRSdGNwUGFja2V0SW5j
b21pbmc+KAorICAgICAgbmV3IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nKCp0aGlzKSk7CiB9
CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X3J0Y3BfcGFja2V0X2luY29taW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9y
dGNwX3BhY2tldF9pbmNvbWluZy5oCmluZGV4IDZkOTA0OTUzYTQ4YTg4NzZjMjM3MGViZDdlMDg5
MjcyMzNjMjY3N2UuLjgzOTRmZTAwNWNkNTYzODJhY2Y2M2ExMmUzOTA5MzhlMDZkYTRmMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X2luY29taW5nLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRjcF9wYWNrZXRfaW5jb21pbmcuaApAQCAt
MTEsNiArMTEsNyBAQAogI2lmbmRlZiBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19F
VkVOVF9SVENQX1BBQ0tFVF9JTkNPTUlOR19IXwogI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9M
T0dfRVZFTlRTX1JUQ19FVkVOVF9SVENQX1BBQ0tFVF9JTkNPTUlOR19IXwogCisjaW5jbHVkZSA8
c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcu
aCIKQEAgLTI4LDEyICsyOSwxNCBAQCBjbGFzcyBSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZyBm
aW5hbCA6IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3Zl
cnJpZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZz4gQ29w
eSgpIGNvbnN0OwogCi0gIHJ0Yzo6QnVmZmVyIHBhY2tldF87CisgIGNvbnN0IHJ0Yzo6QnVmZmVy
JiBwYWNrZXQoKSBjb25zdCB7IHJldHVybiBwYWNrZXRfOyB9CiAKICBwcml2YXRlOgogICBSdGNF
dmVudFJ0Y3BQYWNrZXRJbmNvbWluZyhjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZyYg
b3RoZXIpOworCisgIHJ0Yzo6QnVmZmVyIHBhY2tldF87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9v
dXRnb2luZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X291dGdvaW5n
LmNjCmluZGV4IDQwODVhYzBmMzEzNjJhZWY5ZDVlNTdmMjEyOTA5NWRlOTNlNmE3NDQuLmI1ODNl
NTYxNGEyMDQwY2U4ZWE3MjRjZjBlZDk2YThlYjNmZTI0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
dmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X291dGdvaW5nLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVu
dHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X291dGdvaW5nLmNjCkBAIC0zMyw4ICszMywxMCBAQCBi
b29sIFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdvaW5nOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgewog
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRS
dGNwUGFja2V0T3V0Z29pbmc6OkNvcHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5p
cXVlPFJ0Y0V2ZW50PihuZXcgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcoKnRoaXMpKTsKK3N0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZz4gUnRjRXZlbnRSdGNwUGFj
a2V0T3V0Z29pbmc6OkNvcHkoKQorICAgIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlx
dWU8UnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmc+KAorICAgICAgbmV3IFJ0Y0V2ZW50UnRjcFBh
Y2tldE91dGdvaW5nKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X291dGdvaW5nLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9vdXRnb2luZy5oCmluZGV4IDNhYTll
NzE5OWFkNjMzYzFlNzY2MWI0OTI2MTNhYmRmNjAwOGU4ZGUuLmI0N2I4NWQwYjM2MzVkMThiMDcx
ZTQ2NWQ2Yjg2NGZmZWMwOTA5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X3J0Y3BfcGFja2V0X291dGdvaW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRj
cF9wYWNrZXRfb3V0Z29pbmcuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBMT0dHSU5HX1JU
Q19FVkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9SVENQX1BBQ0tFVF9PVVRHT0lOR19IXwogI2Rl
ZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9SVENQX1BBQ0tFVF9P
VVRHT0lOR19IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAj
aW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKQEAgLTI4LDEyICsyOSwxNCBAQCBjbGFzcyBSdGNF
dmVudFJ0Y3BQYWNrZXRPdXRnb2luZyBmaW5hbCA6IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9v
bCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0
Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVu
dFJ0Y3BQYWNrZXRPdXRnb2luZz4gQ29weSgpIGNvbnN0OwogCi0gIHJ0Yzo6QnVmZmVyIHBhY2tl
dF87CisgIGNvbnN0IHJ0Yzo6QnVmZmVyJiBwYWNrZXQoKSBjb25zdCB7IHJldHVybiBwYWNrZXRf
OyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZyhjb25zdCBSdGNF
dmVudFJ0Y3BQYWNrZXRPdXRnb2luZyYgb3RoZXIpOworCisgIHJ0Yzo6QnVmZmVyIHBhY2tldF87
CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZl
bnRfcnRwX3BhY2tldF9pbmNvbWluZy5jYwppbmRleCA4ZTE1ZDAyMTc1MWI2ODVjZjlhNWNjZWFk
NGIyMTc4ZTgxODc5MmE5Li44OThjMGFhZjhlZTY0ZjE1YjBmNGFjNmU4Nzk5MzQ2ZGRkYmNiNDI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5n
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuY2MK
QEAgLTEyLDE4ICsxMiwyNiBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogUnRj
RXZlbnRSdHBQYWNrZXRJbmNvbWluZzo6UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZygKICAgICBj
b25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KQotICAgIDogcGFja2V0X2xlbmd0aF8ocGFj
a2V0LnNpemUoKSkgeworICAgIDogcGF5bG9hZF9sZW5ndGhfKHBhY2tldC5wYXlsb2FkX3NpemUo
KSksCisgICAgICBoZWFkZXJfbGVuZ3RoXyhwYWNrZXQuaGVhZGVyc19zaXplKCkpLAorICAgICAg
cGFkZGluZ19sZW5ndGhfKHBhY2tldC5wYWRkaW5nX3NpemUoKSkgewogICBoZWFkZXJfLkNvcHlI
ZWFkZXJGcm9tKHBhY2tldCk7CisgIFJUQ19EQ0hFQ0tfRVEocGFja2V0LnNpemUoKSwKKyAgICAg
ICAgICAgICAgICBwYXlsb2FkX2xlbmd0aF8gKyBoZWFkZXJfbGVuZ3RoXyArIHBhZGRpbmdfbGVu
Z3RoXyk7CiB9CiAKIFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc6OlJ0Y0V2ZW50UnRwUGFja2V0
SW5jb21pbmcoCiAgICAgY29uc3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyYgb3RoZXIpCi0g
ICAgOiBSdGNFdmVudChvdGhlci50aW1lc3RhbXBfdXNfKSwgcGFja2V0X2xlbmd0aF8ob3RoZXIu
cGFja2V0X2xlbmd0aF8pIHsKKyAgICA6IFJ0Y0V2ZW50KG90aGVyLnRpbWVzdGFtcF91c18pLAor
ICAgICAgcGF5bG9hZF9sZW5ndGhfKG90aGVyLnBheWxvYWRfbGVuZ3RoXyksCisgICAgICBoZWFk
ZXJfbGVuZ3RoXyhvdGhlci5oZWFkZXJfbGVuZ3RoXyksCisgICAgICBwYWRkaW5nX2xlbmd0aF8o
b3RoZXIucGFkZGluZ19sZW5ndGhfKSB7CiAgIGhlYWRlcl8uQ29weUhlYWRlckZyb20ob3RoZXIu
aGVhZGVyXyk7CiB9CiAKQEAgLTM3LDggKzQ1LDEwIEBAIGJvb2wgUnRjRXZlbnRSdHBQYWNrZXRJ
bmNvbWluZzo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc6OkNvcHko
KSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50PihuZXcgUnRjRXZl
bnRSdHBQYWNrZXRJbmNvbWluZygqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRw
UGFja2V0SW5jb21pbmc+IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc6OkNvcHkoKQorICAgIGNv
bnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWlu
Zz4oCisgICAgICBuZXcgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZygqdGhpcykpOwogfQogCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9ydHBfcGFja2V0X2luY29taW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFj
a2V0X2luY29taW5nLmgKaW5kZXggNmIxNDFiNmQ1NzYyMmU2ZDI5YjE5YTYxNzQ5ZmI2Y2IzMzYx
MzljNS4uMWUzNTczNTFiM2NmMjZkYTAzMWM4ZjFiOThmOTVmMjM4OWZhZmY3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuaApAQCAtMjksMTMgKzI5
LDI0IEBAIGNsYXNzIFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcgZmluYWwgOiBwdWJsaWMgUnRj
RXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZz4gQ29weSgpIGNvbnN0OwogCi0gIFJ0
cFBhY2tldCBoZWFkZXJfOyAgICAgICAgICAgIC8vIE9ubHkgdGhlIHBhY2tldCdzIGhlYWRlciB3
aWxsIGJlIHN0b3JlZCBoZXJlLgotICBjb25zdCBzaXplX3QgcGFja2V0X2xlbmd0aF87ICAvLyBM
ZW5ndGggYmVmb3JlIHN0cmlwcGluZyBhd2F5IGFsbCBidXQgaGVhZGVyLgorICBzaXplX3QgcGFj
a2V0X2xlbmd0aCgpIGNvbnN0IHsKKyAgICByZXR1cm4gcGF5bG9hZF9sZW5ndGhfICsgaGVhZGVy
X2xlbmd0aF8gKyBwYWRkaW5nX2xlbmd0aF87CisgIH0KKworICBjb25zdCBSdHBQYWNrZXQmIGhl
YWRlcigpIGNvbnN0IHsgcmV0dXJuIGhlYWRlcl87IH0KKyAgc2l6ZV90IHBheWxvYWRfbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gcGF5bG9hZF9sZW5ndGhfOyB9CisgIHNpemVfdCBoZWFkZXJfbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gaGVhZGVyX2xlbmd0aF87IH0KKyAgc2l6ZV90IHBhZGRpbmdf
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ19sZW5ndGhfOyB9CiAKICBwcml2YXRlOgog
ICBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nKGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21p
bmcmIG90aGVyKTsKKworICBSdHBQYWNrZXQgaGVhZGVyXzsgICAgICAgICAgICAvLyBPbmx5IHRo
ZSBwYWNrZXQncyBoZWFkZXIgd2lsbCBiZSBzdG9yZWQgaGVyZS4KKyAgY29uc3Qgc2l6ZV90IHBh
eWxvYWRfbGVuZ3RoXzsgIC8vIE1lZGlhIHBheWxvYWQsIGV4Y2x1ZGluZyBoZWFkZXIgYW5kIHBh
ZGRpbmcuCisgIGNvbnN0IHNpemVfdCBoZWFkZXJfbGVuZ3RoXzsgICAvLyBSVFAgaGVhZGVyLgor
ICBjb25zdCBzaXplX3QgcGFkZGluZ19sZW5ndGhfOyAgLy8gUlRQIHBhZGRpbmcuCiB9OwogCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9ydHBfcGFja2V0X291dGdvaW5nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3Bh
Y2tldF9vdXRnb2luZy5jYwppbmRleCAxMDM0NDBhZDZlOTY2MWRhZGVkMGZlMWZlYWMyNWEwMjJk
ZjBkYTNmLi4wNTA0NzRlZGRhN2MwMmMwY2ZmNGYzNDczMGIwYWQ2YTdmNGQ5ZjdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X291dGdvaW5nLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfb3V0Z29pbmcuY2MKQEAgLTEyLDIw
ICsxMiwyOCBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBSdGNFdmVudFJ0cFBh
Y2tldE91dGdvaW5nOjpSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nKAogICAgIGNvbnN0IFJ0cFBh
Y2tldFRvU2VuZCYgcGFja2V0LAogICAgIGludCBwcm9iZV9jbHVzdGVyX2lkKQotICAgIDogcGFj
a2V0X2xlbmd0aF8ocGFja2V0LnNpemUoKSksIHByb2JlX2NsdXN0ZXJfaWRfKHByb2JlX2NsdXN0
ZXJfaWQpIHsKKyAgICA6IHBheWxvYWRfbGVuZ3RoXyhwYWNrZXQucGF5bG9hZF9zaXplKCkpLAor
ICAgICAgaGVhZGVyX2xlbmd0aF8ocGFja2V0LmhlYWRlcnNfc2l6ZSgpKSwKKyAgICAgIHBhZGRp
bmdfbGVuZ3RoXyhwYWNrZXQucGFkZGluZ19zaXplKCkpLAorICAgICAgcHJvYmVfY2x1c3Rlcl9p
ZF8ocHJvYmVfY2x1c3Rlcl9pZCkgewogICBoZWFkZXJfLkNvcHlIZWFkZXJGcm9tKHBhY2tldCk7
CisgIFJUQ19EQ0hFQ0tfRVEocGFja2V0LnNpemUoKSwKKyAgICAgICAgICAgICAgICBwYXlsb2Fk
X2xlbmd0aF8gKyBoZWFkZXJfbGVuZ3RoXyArIHBhZGRpbmdfbGVuZ3RoXyk7CiB9CiAKIFJ0Y0V2
ZW50UnRwUGFja2V0T3V0Z29pbmc6OlJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcoCiAgICAgY29u
c3QgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZyYgb3RoZXIpCiAgICAgOiBSdGNFdmVudChvdGhl
ci50aW1lc3RhbXBfdXNfKSwKLSAgICAgIHBhY2tldF9sZW5ndGhfKG90aGVyLnBhY2tldF9sZW5n
dGhfKSwKKyAgICAgIHBheWxvYWRfbGVuZ3RoXyhvdGhlci5wYXlsb2FkX2xlbmd0aF8pLAorICAg
ICAgaGVhZGVyX2xlbmd0aF8ob3RoZXIuaGVhZGVyX2xlbmd0aF8pLAorICAgICAgcGFkZGluZ19s
ZW5ndGhfKG90aGVyLnBhZGRpbmdfbGVuZ3RoXyksCiAgICAgICBwcm9iZV9jbHVzdGVyX2lkXyhv
dGhlci5wcm9iZV9jbHVzdGVyX2lkXykgewogICBoZWFkZXJfLkNvcHlIZWFkZXJGcm9tKG90aGVy
LmhlYWRlcl8pOwogfQpAQCAtNDAsOCArNDgsMTAgQEAgYm9vbCBSdGNFdmVudFJ0cFBhY2tldE91
dGdvaW5nOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZzo6Q29weSgp
IGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNFdmVu
dFJ0cFBhY2tldE91dGdvaW5nKCp0aGlzKSk7CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdHBQ
YWNrZXRPdXRnb2luZz4gUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZzo6Q29weSgpCisgICAgY29u
c3QgeworICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5n
PigKKyAgICAgIG5ldyBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nKCp0aGlzKSk7CiB9CiAKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X3J0cF9wYWNrZXRfb3V0Z29pbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNr
ZXRfb3V0Z29pbmcuaAppbmRleCAxNzFhMjFjNDIwZTQxNjc2ZjNmMzMwNTBjYWNjMWM2ZTJkNjFj
NDU1Li5lYmRkYzE0MjMxZjNhZjE5M2YyZDAyMjNkMzM3OTY2ZjAxN2M1MDQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X291dGdvaW5nLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9vdXRnb2luZy5oCkBAIC0zMCwxNCArMzAs
MjcgQEAgY2xhc3MgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZyBmaW5hbCA6IHB1YmxpYyBSdGNF
dmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6dW5p
cXVlX3B0cjxSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nPiBDb3B5KCkgY29uc3Q7CiAKLSAgUnRw
UGFja2V0IGhlYWRlcl87ICAgICAgICAgICAgLy8gT25seSB0aGUgcGFja2V0J3MgaGVhZGVyIHdp
bGwgYmUgc3RvcmVkIGhlcmUuCi0gIGNvbnN0IHNpemVfdCBwYWNrZXRfbGVuZ3RoXzsgIC8vIExl
bmd0aCBiZWZvcmUgc3RyaXBwaW5nIGF3YXkgYWxsIGJ1dCBoZWFkZXIuCi0gIGNvbnN0IGludCBw
cm9iZV9jbHVzdGVyX2lkXzsKKyAgc2l6ZV90IHBhY2tldF9sZW5ndGgoKSBjb25zdCB7CisgICAg
cmV0dXJuIHBheWxvYWRfbGVuZ3RoXyArIGhlYWRlcl9sZW5ndGhfICsgcGFkZGluZ19sZW5ndGhf
OworICB9CisKKyAgY29uc3QgUnRwUGFja2V0JiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiBoZWFk
ZXJfOyB9CisgIHNpemVfdCBwYXlsb2FkX2xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHBheWxvYWRf
bGVuZ3RoXzsgfQorICBzaXplX3QgaGVhZGVyX2xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGhlYWRl
cl9sZW5ndGhfOyB9CisgIHNpemVfdCBwYWRkaW5nX2xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHBh
ZGRpbmdfbGVuZ3RoXzsgfQorICBpbnQgcHJvYmVfY2x1c3Rlcl9pZCgpIGNvbnN0IHsgcmV0dXJu
IHByb2JlX2NsdXN0ZXJfaWRfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudFJ0cFBhY2tldE91
dGdvaW5nKGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcmIG90aGVyKTsKKworICBSdHBQ
YWNrZXQgaGVhZGVyXzsgICAgICAgICAgICAvLyBPbmx5IHRoZSBwYWNrZXQncyBoZWFkZXIgd2ls
bCBiZSBzdG9yZWQgaGVyZS4KKyAgY29uc3Qgc2l6ZV90IHBheWxvYWRfbGVuZ3RoXzsgIC8vIE1l
ZGlhIHBheWxvYWQsIGV4Y2x1ZGluZyBoZWFkZXIgYW5kIHBhZGRpbmcuCisgIGNvbnN0IHNpemVf
dCBoZWFkZXJfbGVuZ3RoXzsgICAvLyBSVFAgaGVhZGVyLgorICBjb25zdCBzaXplX3QgcGFkZGlu
Z19sZW5ndGhfOyAgLy8gUlRQIHBhZGRpbmcuCisgIC8vIFRPRE8oZWxhZGFsb24pOiBEZWxldGUg
fHByb2JlX2NsdXN0ZXJfaWRffCBhbG9uZyB3aXRoIGxlZ2FjeSBlbmNvZGluZy4KKyAgY29uc3Qg
aW50IHByb2JlX2NsdXN0ZXJfaWRfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29u
ZmlnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29u
ZmlnLmNjCmluZGV4IDdmNGRkOWI3YjgwN2M0YjEyZmQzODliZDQyNmQ0ZmRlYjZjNTg2NDAuLjVk
ZWM5N2JmODM3NzJlOTEyYjE5ODZiMDIyMjFjNTVkOWU4OGUyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF92aWRlb19yZWNlaXZlX3N0cmVhbV9jb25maWcuY2MKQEAg
LTEzLDEyICsxMywxNSBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKIFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnOjpSdGNFdmVudFZp
ZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZygKICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjbG9nOjpTdHJl
YW1Db25maWc+IGNvbmZpZykKLSAgICA6IGNvbmZpZ18oc3RkOjptb3ZlKGNvbmZpZykpIHt9Cisg
ICAgOiBjb25maWdfKHN0ZDo6bW92ZShjb25maWcpKSB7CisgIFJUQ19EQ0hFQ0soY29uZmlnXyk7
Cit9CiAKIFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnOjpSdGNFdmVudFZpZGVvUmVj
ZWl2ZVN0cmVhbUNvbmZpZygKICAgICBjb25zdCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNv
bmZpZyYgb3RoZXIpCkBAIC0zNSw4ICszOCw5IEBAIGJvb2wgUnRjRXZlbnRWaWRlb1JlY2VpdmVT
dHJlYW1Db25maWc6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29u
ZmlnOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4o
CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWc+CitSdGNF
dmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZzo6Q29weSgpIGNvbnN0IHsKKyAgcmV0dXJuIGFi
c2w6OldyYXBVbmlxdWU8UnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWc+KAogICAgICAg
bmV3IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnKCp0aGlzKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2NvbmZp
Zy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmln
LmgKaW5kZXggYzYyNjNjM2ZkYmUyMmM3Y2NiNjkxZDdiZTg4MjU1MDIzNWZmNDQ4Mi4uODAxYmE3
ZGRkNDRkODE0NjhlNDE1NGY2MWMyNzFhNjI1ZTEyYmFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2
ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgKQEAgLTI4LDEz
ICsyOCwxNSBAQCBjbGFzcyBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyBmaW5hbCA6
IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7
CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZz4gQ29w
eSgpIGNvbnN0OwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVh
bUNvbmZpZz4gY29uZmlnXzsKKyAgY29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWcmIGNvbmZpZygp
IGNvbnN0IHsgcmV0dXJuICpjb25maWdfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudFZpZGVv
UmVjZWl2ZVN0cmVhbUNvbmZpZygKICAgICAgIGNvbnN0IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3Ry
ZWFtQ29uZmlnJiBvdGhlcik7CisKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IHJ0Y2xv
Zzo6U3RyZWFtQ29uZmlnPiBjb25maWdfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29u
ZmlnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmln
LmNjCmluZGV4IGI0Yjc4YThhNTJhNzVjMTNjY2VjNmY3MTRhMTNlMzA1MzU0NjViYmQuLmRjNGIx
Njc0MzhjYmE3OTNlMWFlYzg4OGFkYzE2NDcyY2JmODljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
dmVudHMvcnRjX2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF92aWRlb19zZW5kX3N0cmVhbV9jb25maWcuY2MKQEAgLTM1LDggKzM1
LDEwIEBAIGJvb2wgUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWc6OklzQ29uZmlnRXZlbnQo
KSBjb25zdCB7CiAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+
IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4g
YWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29u
ZmlnKCp0aGlzKSk7CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25m
aWc+CitSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZzo6Q29weSgpIGNvbnN0IHsKKyAgcmV0
dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWc+KAorICAg
ICAgbmV3IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKCp0aGlzKSk7CiB9CiAKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Zp
ZGVvX3NlbmRfc3RyZWFtX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9f
c2VuZF9zdHJlYW1fY29uZmlnLmgKaW5kZXggMzQ3MmY4ODU1YmU2NjlkZDEzY2E2OGViNjUxZTE4
ODUzYTUzZWIwZi4uZmUyNzRjOGMzYTU1ZmQzNTBmODNhZDUwMGNlYTQ4MjA2MmIyOTZjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmln
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmln
LmgKQEAgLTI4LDEyICsyOCwxNCBAQCBjbGFzcyBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZp
ZyBmaW5hbCA6IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qg
b3ZlcnJpZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZp
Zz4gQ29weSgpIGNvbnN0OwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6
OlN0cmVhbUNvbmZpZz4gY29uZmlnXzsKKyAgY29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWcmIGNv
bmZpZygpIGNvbnN0IHsgcmV0dXJuICpjb25maWdfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVu
dFZpZGVvU2VuZFN0cmVhbUNvbmZpZyhjb25zdCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZp
ZyYgb3RoZXIpOworCisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVh
bUNvbmZpZz4gY29uZmlnXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuY2MKaW5k
ZXggNzNhNTk4ZDZiMWUzMmE4YzQxOGEyMzMyODE2NWRkOGUyYjEyYzhlZS4uYjQ4ZmU5MjM0ZmQ3
NGZjNzJhODkxMWZmNGJhYWM1NWE3MTYwNGJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVu
dF9sb2cuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuY2MKQEAgLTEwLDggKzEwLDE0IEBA
CiAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgogCisj
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCitz
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2c+IFJ0Y0V2ZW50TG9nOjpDcmVhdGVOdWxsKCkgewor
ICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dOdWxsSW1wbD4oKTsKK30KKwog
Ym9vbCBSdGNFdmVudExvZ051bGxJbXBsOjpTdGFydExvZ2dpbmcoCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJ0Y0V2ZW50TG9nT3V0cHV0PiBvdXRwdXQsCiAgICAgaW50NjRfdCBvdXRwdXRfcGVyaW9k
X21zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19l
dmVudF9sb2cuaAppbmRleCAwYzcxNDA2OTAyNDFkODA4NzQwYTE5NDBlNzQ5MTg5ZTllNjRjNWMy
Li43ZDkwMGMwMDY4NmY4NjA3MjhjOTIwMjAwNGFmODFiZmExZGY4OGNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvcnRjX2V2ZW50X2xvZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgKQEAgLTEx
LDkgKzExLDggQEAKICNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9HX1JUQ19FVkVOVF9MT0df
SF8KICNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRfTE9HX1JUQ19FVkVOVF9MT0dfSF8KIAorI2lu
Y2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0j
aW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFwaS9ydGNldmVudGxvZ291dHB1dC5oIgog
I2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCkBAIC0y
OSwxMCArMjgsOSBAQCBjbGFzcyBSdGNFdmVudExvZyB7CiAgIGVudW0gOiBzaXplX3QgeyBrVW5s
aW1pdGVkT3V0cHV0ID0gMCB9OwogICBlbnVtIDogaW50NjRfdCB7IGtJbW1lZGlhdGVPdXRwdXQg
PSAwIH07CiAKLSAgLy8gVE9ETyhlbGFkYWxvbik6IFR3byBzdGFnZXMgYXJlIHVwY29taW5nLgot
ICAvLyAxLiBFeHRlbmQgdGhpcyB0byBhY3R1YWxseSBzdXBwb3J0IHRoZSBuZXcgZW5jb2Rpbmcu
Ci0gIC8vIDIuIEdldCByaWQgb2YgdGhlIGxlZ2FjeSBlbmNvZGluZywgYWxsb3dpbmcgdXMgdG8g
Z2V0IHJpZCBvZiB0aGlzIGVudW0uCi0gIGVudW0gY2xhc3MgRW5jb2RpbmdUeXBlIHsgTGVnYWN5
IH07CisgIC8vIFRPRE8oZWxhZGFsb24pOiAgR2V0IHJpZCBvZiB0aGUgbGVnYWN5IGVuY29kaW5n
IGFuZCB0aGlzIGVudW0gb25jZSBhbGwKKyAgLy8gY2xpZW50cyBoYXZlIG1pZ3JhdGVkIHRvIHRo
ZSBuZXcgZm9ybWF0LgorICBlbnVtIGNsYXNzIEVuY29kaW5nVHlwZSB7IExlZ2FjeSwgTmV3Rm9y
bWF0IH07CiAKICAgdmlydHVhbCB+UnRjRXZlbnRMb2coKSB7fQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvcnRjX2V2ZW50X2xvZzIucHJvdG8gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzIucHJvdG8KaW5k
ZXggNGNhYzQ1NTNjZWQ0MzQ3YmEzYTI3ZDNiYjA4YWY0MTUyZDM3MTcyNS4uOTk1ODUzYjU2NWNj
MWUxOGQzMGVkOGJhY2QxODBhZjVkNzVhZDVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVu
dF9sb2cyLnByb3RvCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMi5wcm90bwpAQCAtMTAsMjAg
KzEwLDE3IEBAIHBhY2thZ2Ugd2VicnRjLnJ0Y2xvZzI7CiAvLyBzaW5nbGUgRXZlbnRTdHJlYW0g
b2JqZWN0IGNvbnRhaW5pbmcgdGhlIHNhbWUgZXZlbnRzLiBIZW5jZSwgaXQgaXMgbm90CiAvLyBu
ZWNlc3NhcnkgdG8gd2FpdCBmb3IgdGhlIGVudGlyZSBsb2cgdG8gYmUgY29tcGxldGUgYmVmb3Jl
IGJlZ2lubmluZyB0bwogLy8gd3JpdGUgaXQgdG8gYSBmaWxlLgorLy8gTm90ZTogRm9yIGFsbCBY
X2RlbHRhcyBmaWVsZHMsIHdlIHJlbHkgb24gdGhlIGRlZmF1bHQgdmFsdWUgYmVpbmcgYW4KKy8v
IGVtcHR5IHN0cmluZy4KIG1lc3NhZ2UgRXZlbnRTdHJlYW0gewogICAvLyBEZXByZWNhdGVkIC0g
TWFpbnRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbGQgZXZlbnQgbG9nLgotICAv
LyBUT0RPKHRlcmVsaXVzKTogTWF5YmUgd2UgY2FuIHJlbW92ZSB0aGlzIGFuZCBpbnN0ZWFkIGNo
ZWNrIHRoZSBzdHJlYW0gZm9yCi0gIC8vIHByZXNlbmNlIG9mIGEgdmVyc2lvbiBmaWVsZC4gVGhh
dCByZXF1aXJlcyBhIGN1c3RvbSBwcm90b2J1ZiBwYXJzZXIsIGJ1dCB3ZQotICAvLyBoYXZlIHRo
YXQgYWxyZWFkeSBhbnl3YXkuCiAgIHJlcGVhdGVkIEV2ZW50IHN0cmVhbSA9IDEgW2RlcHJlY2F0
ZWQgPSB0cnVlXTsKLSAgLy8gcmVxdWlyZWQgLSBUaGUgdmVyc2lvbiBudW1iZXIgbXVzdCBiZSAy
IGZvciB0aGlzIHZlcnNpb24gb2YgdGhlIGV2ZW50IGxvZy4KLSAgb3B0aW9uYWwgdWludDMyIHZl
cnNpb24gPSAyOwotICByZXBlYXRlZCBJbmNvbWluZ1J0cFBhY2tldHMgaW5jb21pbmdfcnRwX3Bh
Y2tldHMgPSAzOwotICByZXBlYXRlZCBPdXRnb2luZ1J0cFBhY2tldHMgb3V0Z29pbmdfcnRwX3Bh
Y2tldHMgPSA0OwotICByZXBlYXRlZCBJbmNvbWluZ1J0Y3BQYWNrZXRzIGluY29taW5nX3J0Y3Bf
cGFja2V0cyA9IDU7Ci0gIHJlcGVhdGVkIE91dGdvaW5nUnRjcFBhY2tldHMgb3V0Z29pbmdfcnRj
cF9wYWNrZXRzID0gNjsKLSAgcmVwZWF0ZWQgQXVkaW9QbGF5b3V0RXZlbnRzIGF1ZGlvX3BsYXlv
dXRfZXZlbnRzID0gNzsKLSAgLy8gVGhlIGZpZWxkIHRhZ3MgOC0xNSBhcmUgcmVzZXJ2ZWQgZm9y
IHRoZSBtb3N0IGNvbW1vbiBldmVudHMKKyAgcmVwZWF0ZWQgSW5jb21pbmdSdHBQYWNrZXRzIGlu
Y29taW5nX3J0cF9wYWNrZXRzID0gMjsKKyAgcmVwZWF0ZWQgT3V0Z29pbmdSdHBQYWNrZXRzIG91
dGdvaW5nX3J0cF9wYWNrZXRzID0gMzsKKyAgcmVwZWF0ZWQgSW5jb21pbmdSdGNwUGFja2V0cyBp
bmNvbWluZ19ydGNwX3BhY2tldHMgPSA0OworICByZXBlYXRlZCBPdXRnb2luZ1J0Y3BQYWNrZXRz
IG91dGdvaW5nX3J0Y3BfcGFja2V0cyA9IDU7CisgIHJlcGVhdGVkIEF1ZGlvUGxheW91dEV2ZW50
cyBhdWRpb19wbGF5b3V0X2V2ZW50cyA9IDY7CisgIC8vIFRoZSBmaWVsZCB0YWdzIDctMTUgYXJl
IHJlc2VydmVkIGZvciB0aGUgbW9zdCBjb21tb24gZXZlbnRzLgogICByZXBlYXRlZCBCZWdpbkxv
Z0V2ZW50IGJlZ2luX2xvZ19ldmVudHMgPSAxNjsKICAgcmVwZWF0ZWQgRW5kTG9nRXZlbnQgZW5k
X2xvZ19ldmVudHMgPSAxNzsKICAgcmVwZWF0ZWQgTG9zc0Jhc2VkQndlVXBkYXRlcyBsb3NzX2Jh
c2VkX2J3ZV91cGRhdGVzID0gMTg7CkBAIC0zMiw2ICsyOSw5IEBAIG1lc3NhZ2UgRXZlbnRTdHJl
YW0gewogICByZXBlYXRlZCBCd2VQcm9iZUNsdXN0ZXIgcHJvYmVfY2x1c3RlcnMgPSAyMTsKICAg
cmVwZWF0ZWQgQndlUHJvYmVSZXN1bHRTdWNjZXNzIHByb2JlX3N1Y2Nlc3MgPSAyMjsKICAgcmVw
ZWF0ZWQgQndlUHJvYmVSZXN1bHRGYWlsdXJlIHByb2JlX2ZhaWx1cmUgPSAyMzsKKyAgcmVwZWF0
ZWQgQWxyU3RhdGUgYWxyX3N0YXRlcyA9IDI0OworICByZXBlYXRlZCBJY2VDYW5kaWRhdGVQYWly
Q29uZmlnIGljZV9jYW5kaWRhdGVfY29uZmlncyA9IDI1OworICByZXBlYXRlZCBJY2VDYW5kaWRh
dGVQYWlyRXZlbnQgaWNlX2NhbmRpZGF0ZV9ldmVudHMgPSAyNjsKIAogICByZXBlYXRlZCBBdWRp
b1JlY3ZTdHJlYW1Db25maWcgYXVkaW9fcmVjdl9zdHJlYW1fY29uZmlncyA9IDEwMTsKICAgcmVw
ZWF0ZWQgQXVkaW9TZW5kU3RyZWFtQ29uZmlnIGF1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZ3MgPSAx
MDI7CkBAIC00NSwxMzYgKzQ1LDIwNiBAQCBtZXNzYWdlIEV2ZW50IHsKIH0KIAogbWVzc2FnZSBJ
bmNvbWluZ1J0cFBhY2tldHMgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1l
c3RhbXBfbXMgPSAxOwogCi0gIC8vIFJUUCBtYXJrZXIgYml0LCB1c2VkIHRvIGxhYmVsIGJvdW5k
YXJpZXMgd2l0aGluIGUuZy4gdmlkZW8gZnJhbWVzLgorICAvLyByZXF1aXJlZCAtIFJUUCBtYXJr
ZXIgYml0LCB1c2VkIHRvIGxhYmVsIGJvdW5kYXJpZXMgYmV0d2VlbiB2aWRlbyBmcmFtZXMuCiAg
IG9wdGlvbmFsIGJvb2wgbWFya2VyID0gMjsKIAotICAvLyBSVFAgcGF5bG9hZCB0eXBlLgorICAv
LyByZXF1aXJlZCAtIFJUUCBwYXlsb2FkIHR5cGUuCiAgIG9wdGlvbmFsIHVpbnQzMiBwYXlsb2Fk
X3R5cGUgPSAzOwogCi0gIC8vIFJUUCBzZXF1ZW5jZSBudW1iZXIuCisgIC8vIHJlcXVpcmVkIC0g
UlRQIHNlcXVlbmNlIG51bWJlci4KICAgb3B0aW9uYWwgdWludDMyIHNlcXVlbmNlX251bWJlciA9
IDQ7CiAKLSAgLy8gUlRQIG1vbm90b25pYyBjbG9jayB0aW1lc3RhbXAgKG5vdCBhY3R1YWwgdGlt
ZSkuCisgIC8vIHJlcXVpcmVkIC0gUlRQIG1vbm90b25pYyBjbG9jayB0aW1lc3RhbXAgKG5vdCBh
Y3R1YWwgdGltZSkuCiAgIG9wdGlvbmFsIGZpeGVkMzIgcnRwX3RpbWVzdGFtcCA9IDU7CiAKLSAg
Ly8gU3luY2hyb25pemF0aW9uIHNvdXJjZSBvZiB0aGlzIHBhY2tldCdzIFJUUCBzdHJlYW0uCisg
IC8vIHJlcXVpcmVkIC0gU3luY2hyb25pemF0aW9uIHNvdXJjZSBvZiB0aGlzIHBhY2tldCdzIFJU
UCBzdHJlYW0uCiAgIG9wdGlvbmFsIGZpeGVkMzIgc3NyYyA9IDY7CiAKICAgLy8gVE9ETyh0ZXJl
bGl1cy9kaW5vcik6IEFkZCBDU1JDcy4gRmllbGQgbnVtYmVyIDcgcmVzZXJ2ZWQgZm9yIHRoaXMg
cHVycG9zZS4KIAotICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIG9mIHRoZSBwYWNrZXQgaW5jbHVk
aW5nIGJvdGggcGF5bG9hZCBhbmQgaGVhZGVyLgotICBvcHRpb25hbCB1aW50MzIgcGFja2V0X3Np
emUgPSA4OworICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIG1lZGlh
IHBheWxvYWQsIG5vdCBpbmNsdWRpbmcKKyAgLy8gUlRQIGhlYWRlciBvciBwYWRkaW5nLiBUaGUg
cGFja2V0IHNpemUgaXMgdGhlIHN1bSBvZiBwYXlsb2FkLCBoZWFkZXIgYW5kCisgIC8vIHBhZGRp
bmcuCisgIG9wdGlvbmFsIHVpbnQzMiBwYXlsb2FkX3NpemUgPSA4OworCisgIC8vIHJlcXVpcmVk
IC0gVGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgUlRQIGhlYWRlci4KKyAgb3B0aW9uYWwgdWlu
dDMyIGhlYWRlcl9zaXplID0gOTsKKworICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIChpbiBieXRl
cykgb2YgdGhlIHBhZGRpbmcuCisgIG9wdGlvbmFsIHVpbnQzMiBwYWRkaW5nX3NpemUgPSAxMDsK
KworICAvLyBvcHRpb25hbCAtIHJlcXVpcmVkIGlmIHRoZSBiYXRjaCBjb250YWlucyBkZWx0YSBl
bmNvZGVkIGV2ZW50cy4KKyAgb3B0aW9uYWwgdWludDMyIG51bWJlcl9vZl9kZWx0YXMgPSAxMTsK
KworICAvLyBGaWVsZCBudW1iZXJzIDEyLTE0IHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLgogCiAg
IC8vIE9wdGlvbmFsIGhlYWRlciBleHRlbnNpb25zLgotICBvcHRpb25hbCBpbnQzMiB0cmFuc21p
c3Npb25fdGltZV9vZmZzZXQgPSA5OwotICBvcHRpb25hbCB1aW50MzIgYWJzb2x1dGVfc2VuZF90
aW1lID0gMTA7Ci0gIG9wdGlvbmFsIHVpbnQzMiB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyID0g
MTE7Ci0gIG9wdGlvbmFsIHVpbnQzMiBhdWRpb19sZXZlbCA9IDEyOwotICAvLyBUT0RPKHRlcmVs
aXVzKTogQWRkIGhlYWRlciBleHRlbnNpb25zIGxpa2UgdmlkZW8gcm90YXRpb24sIHBsYXlvdXQg
ZGVsYXk/Ci0KLSAgLy8gRGVsdGEgZW5jb2RpbmdzCi0gIG9wdGlvbmFsIGJ5dGVzIHRpbWVzdGFt
cF9kZWx0YXNfbXMgPSAxMDE7CisgIG9wdGlvbmFsIHVpbnQzMiB0cmFuc3BvcnRfc2VxdWVuY2Vf
bnVtYmVyID0gMTU7CisgIG9wdGlvbmFsIGludDMyIHRyYW5zbWlzc2lvbl90aW1lX29mZnNldCA9
IDE2OworICBvcHRpb25hbCB1aW50MzIgYWJzb2x1dGVfc2VuZF90aW1lID0gMTc7CisgIG9wdGlv
bmFsIHVpbnQzMiB2aWRlb19yb3RhdGlvbiA9IDE4OworICAvLyB8YXVkaW9fbGV2ZWx8IGFuZCB8
dm9pY2VfYWN0aXZpdHl8IGFyZSBhbHdheXMgdXNlZCBpbiBjb25qdW5jdGlvbi4KKyAgb3B0aW9u
YWwgdWludDMyIGF1ZGlvX2xldmVsID0gMTk7CisgIG9wdGlvbmFsIGJvb2wgdm9pY2VfYWN0aXZp
dHkgPSAyMDsKKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IEFkZCBvdGhlciBoZWFkZXIgZXh0ZW5zaW9u
cyBsaWtlIHBsYXlvdXQgZGVsYXk/CisKKyAgLy8gRGVsdGEgZW5jb2RpbmdzLgorICBvcHRpb25h
bCBieXRlcyB0aW1lc3RhbXBfbXNfZGVsdGFzID0gMTAxOwogICBvcHRpb25hbCBieXRlcyBtYXJr
ZXJfZGVsdGFzID0gMTAyOwogICBvcHRpb25hbCBieXRlcyBwYXlsb2FkX3R5cGVfZGVsdGFzID0g
MTAzOwogICBvcHRpb25hbCBieXRlcyBzZXF1ZW5jZV9udW1iZXJfZGVsdGFzID0gMTA0OwogICBv
cHRpb25hbCBieXRlcyBydHBfdGltZXN0YW1wX2RlbHRhcyA9IDEwNTsKKyAgLy8gRmllbGQgbnVt
YmVyIDEwNyByZXNlcnZlZCBmb3IgQ1NSQy4KICAgb3B0aW9uYWwgYnl0ZXMgc3NyY19kZWx0YXMg
PSAxMDY7Ci0gIG9wdGlvbmFsIGJ5dGVzIHBhY2tldF9zaXplX2RlbHRhcyA9IDEwNzsKLSAgb3B0
aW9uYWwgYnl0ZXMgdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X2RlbHRhcyA9IDEwODsKLSAgb3B0
aW9uYWwgYnl0ZXMgYWJzb2x1dGVfc2VuZF90aW1lX2RlbHRhcyA9IDEwOTsKLSAgb3B0aW9uYWwg
Ynl0ZXMgdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9kZWx0YXMgPSAxMTA7Ci0gIG9wdGlvbmFs
IGJ5dGVzIGF1ZGlvX2xldmVsX2RlbHRhcyA9IDExMTsKKyAgb3B0aW9uYWwgYnl0ZXMgcGF5bG9h
ZF9zaXplX2RlbHRhcyA9IDEwODsKKyAgb3B0aW9uYWwgYnl0ZXMgaGVhZGVyX3NpemVfZGVsdGFz
ID0gMTA5OworICBvcHRpb25hbCBieXRlcyBwYWRkaW5nX3NpemVfZGVsdGFzID0gMTEwOworICAv
LyBGaWVsZCBudW1iZXIgMTExLTExNCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4KKyAgb3B0aW9u
YWwgYnl0ZXMgdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9kZWx0YXMgPSAxMTU7CisgIG9wdGlv
bmFsIGJ5dGVzIHRyYW5zbWlzc2lvbl90aW1lX29mZnNldF9kZWx0YXMgPSAxMTY7CisgIG9wdGlv
bmFsIGJ5dGVzIGFic29sdXRlX3NlbmRfdGltZV9kZWx0YXMgPSAxMTc7CisgIG9wdGlvbmFsIGJ5
dGVzIHZpZGVvX3JvdGF0aW9uX2RlbHRhcyA9IDExODsKKyAgLy8gfGF1ZGlvX2xldmVsfCBhbmQg
fHZvaWNlX2FjdGl2aXR5fCBhcmUgYWx3YXlzIHVzZWQgaW4gY29uanVuY3Rpb24uCisgIG9wdGlv
bmFsIGJ5dGVzIGF1ZGlvX2xldmVsX2RlbHRhcyA9IDExOTsKKyAgb3B0aW9uYWwgYnl0ZXMgdm9p
Y2VfYWN0aXZpdHlfZGVsdGFzID0gMTIwOwogfQogCiBtZXNzYWdlIE91dGdvaW5nUnRwUGFja2V0
cyB7CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAK
LSAgLy8gUlRQIG1hcmtlciBiaXQsIHVzZWQgdG8gbGFiZWwgYm91bmRhcmllcyB3aXRoaW4gZS5n
LiB2aWRlbyBmcmFtZXMuCisgIC8vIHJlcXVpcmVkIC0gUlRQIG1hcmtlciBiaXQsIHVzZWQgdG8g
bGFiZWwgYm91bmRhcmllcyBiZXR3ZWVuIHZpZGVvIGZyYW1lcy4KICAgb3B0aW9uYWwgYm9vbCBt
YXJrZXIgPSAyOwogCisgIC8vIHJlcXVpcmVkIC0gUlRQIHBheWxvYWQgdHlwZS4KICAgb3B0aW9u
YWwgdWludDMyIHBheWxvYWRfdHlwZSA9IDM7CiAKLSAgLy8gUlRQIHNlcXVlbmNlIG51bWJlci4K
KyAgLy8gcmVxdWlyZWQgLSBSVFAgc2VxdWVuY2UgbnVtYmVyLgogICBvcHRpb25hbCB1aW50MzIg
c2VxdWVuY2VfbnVtYmVyID0gNDsKIAotICAvLyBSVFAgbW9ub3RvbmljIGNsb2NrIHRpbWVzdGFt
cCAobm90IGFjdHVhbCB0aW1lKS4KKyAgLy8gcmVxdWlyZWQgLSBSVFAgbW9ub3RvbmljIGNsb2Nr
IHRpbWVzdGFtcCAobm90IGFjdHVhbCB0aW1lKS4KICAgb3B0aW9uYWwgZml4ZWQzMiBydHBfdGlt
ZXN0YW1wID0gNTsKIAotICAvLyBTeW5jaHJvbml6YXRpb24gc291cmNlIG9mIHRoaXMgcGFja2V0
J3MgUlRQIHN0cmVhbS4KKyAgLy8gcmVxdWlyZWQgLSBTeW5jaHJvbml6YXRpb24gc291cmNlIG9m
IHRoaXMgcGFja2V0J3MgUlRQIHN0cmVhbS4KICAgb3B0aW9uYWwgZml4ZWQzMiBzc3JjID0gNjsK
IAogICAvLyBUT0RPKHRlcmVsaXVzL2Rpbm9yKTogQWRkIENTUkNzLiBGaWVsZCBudW1iZXIgNyBy
ZXNlcnZlZCBmb3IgdGhpcyBwdXJwb3NlLgogCi0gIC8vIHJlcXVpcmVkIC0gVGhlIHNpemUgb2Yg
dGhlIHBhY2tldCBpbmNsdWRpbmcgYm90aCBwYXlsb2FkIGFuZCBoZWFkZXIuCi0gIG9wdGlvbmFs
IHVpbnQzMiBwYWNrZXRfc2l6ZSA9IDg7CisgIC8vIHJlcXVpcmVkIC0gVGhlIHNpemUgKGluIGJ5
dGVzKSBvZiB0aGUgbWVkaWEgcGF5bG9hZCwgbm90IGluY2x1ZGluZworICAvLyBSVFAgaGVhZGVy
IG9yIHBhZGRpbmcuIFRoZSBwYWNrZXQgc2l6ZSBpcyB0aGUgc3VtIG9mIHBheWxvYWQsIGhlYWRl
ciBhbmQKKyAgLy8gcGFkZGluZy4KKyAgb3B0aW9uYWwgdWludDMyIHBheWxvYWRfc2l6ZSA9IDg7
CisKKyAgLy8gcmVxdWlyZWQgLSBUaGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBSVFAgaGVhZGVy
LgorICBvcHRpb25hbCB1aW50MzIgaGVhZGVyX3NpemUgPSA5OworCisgIC8vIHJlcXVpcmVkIC0g
VGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgcGFkZGluZy4KKyAgb3B0aW9uYWwgdWludDMyIHBh
ZGRpbmdfc2l6ZSA9IDEwOworCisgIC8vIG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgdGhlIGJhdGNo
IGNvbnRhaW5zIGRlbHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25hbCB1aW50MzIgbnVtYmVy
X29mX2RlbHRhcyA9IDExOworCisgIC8vIEZpZWxkIG51bWJlcnMgMTItMTQgcmVzZXJ2ZWQgZm9y
IGZ1dHVyZSB1c2UuCiAKICAgLy8gT3B0aW9uYWwgaGVhZGVyIGV4dGVuc2lvbnMuCi0gIG9wdGlv
bmFsIGludDMyIHRyYW5zbWlzc2lvbl90aW1lX29mZnNldCA9IDk7Ci0gIG9wdGlvbmFsIHVpbnQz
MiBhYnNvbHV0ZV9zZW5kX3RpbWUgPSAxMDsKLSAgb3B0aW9uYWwgdWludDMyIHRyYW5zcG9ydF9z
ZXF1ZW5jZV9udW1iZXIgPSAxMTsKLSAgb3B0aW9uYWwgdWludDMyIGF1ZGlvX2xldmVsID0gMTI7
Ci0gIC8vIFRPRE8odGVyZWxpdXMpOiBBZGQgaGVhZGVyIGV4dGVuc2lvbnMgbGlrZSB2aWRlbyBy
b3RhdGlvbiwgcGxheW91dCBkZWxheT8KLQotICAvLyBEZWx0YSBlbmNvZGluZ3MKLSAgb3B0aW9u
YWwgYnl0ZXMgdGltZXN0YW1wX2RlbHRhc19tcyA9IDEwMTsKKyAgb3B0aW9uYWwgdWludDMyIHRy
YW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgPSAxNTsKKyAgb3B0aW9uYWwgaW50MzIgdHJhbnNtaXNz
aW9uX3RpbWVfb2Zmc2V0ID0gMTY7CisgIG9wdGlvbmFsIHVpbnQzMiBhYnNvbHV0ZV9zZW5kX3Rp
bWUgPSAxNzsKKyAgb3B0aW9uYWwgdWludDMyIHZpZGVvX3JvdGF0aW9uID0gMTg7CisgIC8vIHxh
dWRpb19sZXZlbHwgYW5kIHx2b2ljZV9hY3Rpdml0eXwgYXJlIGFsd2F5cyB1c2VkIGluIGNvbmp1
bmN0aW9uLgorICBvcHRpb25hbCB1aW50MzIgYXVkaW9fbGV2ZWwgPSAxOTsKKyAgb3B0aW9uYWwg
Ym9vbCB2b2ljZV9hY3Rpdml0eSA9IDIwOworICAvLyBUT0RPKHRlcmVsaXVzKTogQWRkIG90aGVy
IGhlYWRlciBleHRlbnNpb25zIGxpa2UgcGxheW91dCBkZWxheT8KKworICAvLyBEZWx0YSBlbmNv
ZGluZ3MuCisgIG9wdGlvbmFsIGJ5dGVzIHRpbWVzdGFtcF9tc19kZWx0YXMgPSAxMDE7CiAgIG9w
dGlvbmFsIGJ5dGVzIG1hcmtlcl9kZWx0YXMgPSAxMDI7CiAgIG9wdGlvbmFsIGJ5dGVzIHBheWxv
YWRfdHlwZV9kZWx0YXMgPSAxMDM7CiAgIG9wdGlvbmFsIGJ5dGVzIHNlcXVlbmNlX251bWJlcl9k
ZWx0YXMgPSAxMDQ7CiAgIG9wdGlvbmFsIGJ5dGVzIHJ0cF90aW1lc3RhbXBfZGVsdGFzID0gMTA1
OwogICBvcHRpb25hbCBieXRlcyBzc3JjX2RlbHRhcyA9IDEwNjsKLSAgb3B0aW9uYWwgYnl0ZXMg
cGFja2V0X3NpemVfZGVsdGFzID0gMTA3OwotICBvcHRpb25hbCBieXRlcyBwcm9iZV9jbHVzdGVy
X2lkX2RlbHRhcyA9IDEwODsKLSAgb3B0aW9uYWwgYnl0ZXMgdHJhbnNtaXNzaW9uX3RpbWVfb2Zm
c2V0X2RlbHRhcyA9IDEwOTsKLSAgb3B0aW9uYWwgYnl0ZXMgYWJzb2x1dGVfc2VuZF90aW1lX2Rl
bHRhcyA9IDExMDsKLSAgb3B0aW9uYWwgYnl0ZXMgdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9k
ZWx0YXMgPSAxMTE7CisgIC8vIEZpZWxkIG51bWJlciAxMDcgcmVzZXJ2ZWQgZm9yIENTUkMuCisg
IG9wdGlvbmFsIGJ5dGVzIHBheWxvYWRfc2l6ZV9kZWx0YXMgPSAxMDg7CisgIG9wdGlvbmFsIGJ5
dGVzIGhlYWRlcl9zaXplX2RlbHRhcyA9IDEwOTsKKyAgb3B0aW9uYWwgYnl0ZXMgcGFkZGluZ19z
aXplX2RlbHRhcyA9IDExMDsKKyAgLy8gRmllbGQgbnVtYmVyIDExMS0xMTQgcmVzZXJ2ZWQgZm9y
IGZ1dHVyZSB1c2UuCisgIG9wdGlvbmFsIGJ5dGVzIHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJf
ZGVsdGFzID0gMTE1OworICBvcHRpb25hbCBieXRlcyB0cmFuc21pc3Npb25fdGltZV9vZmZzZXRf
ZGVsdGFzID0gMTE2OworICBvcHRpb25hbCBieXRlcyBhYnNvbHV0ZV9zZW5kX3RpbWVfZGVsdGFz
ID0gMTE3OworICBvcHRpb25hbCBieXRlcyB2aWRlb19yb3RhdGlvbl9kZWx0YXMgPSAxMTg7Cisg
IC8vIHxhdWRpb19sZXZlbHwgYW5kIHx2b2ljZV9hY3Rpdml0eXwgYXJlIGFsd2F5cyB1c2VkIGlu
IGNvbmp1bmN0aW9uLgorICBvcHRpb25hbCBieXRlcyBhdWRpb19sZXZlbF9kZWx0YXMgPSAxMTk7
CisgIG9wdGlvbmFsIGJ5dGVzIHZvaWNlX2FjdGl2aXR5X2RlbHRhcyA9IDEyMDsKIH0KIAogbWVz
c2FnZSBJbmNvbWluZ1J0Y3BQYWNrZXRzIHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgaW50
NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAvLyByZXF1aXJlZCAtIFRoZSB3aG9sZSBwYWNrZXQg
aW5jbHVkaW5nIGJvdGggcGF5bG9hZCBhbmQgaGVhZGVyLgogICBvcHRpb25hbCBieXRlcyByYXdf
cGFja2V0ID0gMjsKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IEZlYXNpYmxlIHRvIGxvZyBwYXJzZWQg
UlRDUCBpbnN0ZWFkPwogCi0gIC8vIERlbHRhIGVuY29kaW5ncwotICBvcHRpb25hbCBieXRlcyB0
aW1lc3RhbXBfZGVsdGFzX21zID0gMTAxOwotICBvcHRpb25hbCBieXRlcyByYXdfcGFja2V0X2Rl
bHRhcyA9IDEwMjsKKyAgLy8gb3B0aW9uYWwgLSByZXF1aXJlZCBpZiB0aGUgYmF0Y2ggY29udGFp
bnMgZGVsdGEgZW5jb2RlZCBldmVudHMuCisgIG9wdGlvbmFsIHVpbnQzMiBudW1iZXJfb2ZfZGVs
dGFzID0gMzsKKworICAvLyBEZWx0YS9ibG9iIGVuY29kaW5ncy4KKyAgb3B0aW9uYWwgYnl0ZXMg
dGltZXN0YW1wX21zX2RlbHRhcyA9IDEwMTsKKyAgb3B0aW9uYWwgYnl0ZXMgcmF3X3BhY2tldF9i
bG9icyA9IDEwMjsKIH0KIAogbWVzc2FnZSBPdXRnb2luZ1J0Y3BQYWNrZXRzIHsKKyAgLy8gcmVx
dWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAvLyByZXF1aXJl
ZCAtIFRoZSB3aG9sZSBwYWNrZXQgaW5jbHVkaW5nIGJvdGggcGF5bG9hZCBhbmQgaGVhZGVyLgog
ICBvcHRpb25hbCBieXRlcyByYXdfcGFja2V0ID0gMjsKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IEZl
YXNpYmxlIHRvIGxvZyBwYXJzZWQgUlRDUCBpbnN0ZWFkPwogCi0gIC8vIERlbHRhIGVuY29kaW5n
cwotICBvcHRpb25hbCBieXRlcyB0aW1lc3RhbXBfZGVsdGFzX21zID0gMTAxOwotICBvcHRpb25h
bCBieXRlcyByYXdfcGFja2V0X2RlbHRhcyA9IDEwMjsKKyAgLy8gb3B0aW9uYWwgLSByZXF1aXJl
ZCBpZiB0aGUgYmF0Y2ggY29udGFpbnMgZGVsdGEgZW5jb2RlZCBldmVudHMuCisgIG9wdGlvbmFs
IHVpbnQzMiBudW1iZXJfb2ZfZGVsdGFzID0gMzsKKworICAvLyBEZWx0YS9ibG9iIGVuY29kaW5n
cy4KKyAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1wX21zX2RlbHRhcyA9IDEwMTsKKyAgb3B0aW9u
YWwgYnl0ZXMgcmF3X3BhY2tldF9ibG9icyA9IDEwMjsKIH0KIAogbWVzc2FnZSBBdWRpb1BsYXlv
dXRFdmVudHMgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMg
PSAxOwogCiAgIC8vIHJlcXVpcmVkIC0gVGhlIFNTUkMgb2YgdGhlIGF1ZGlvIHN0cmVhbSBhc3Nv
Y2lhdGVkIHdpdGggdGhlIHBsYXlvdXQgZXZlbnQuCiAgIG9wdGlvbmFsIHVpbnQzMiBsb2NhbF9z
c3JjID0gMjsKIAotICAvLyBEZWx0YSBlbmNvZGluZ3MKLSAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0
YW1wX2RlbHRhc19tcyA9IDEwMTsKKyAgLy8gb3B0aW9uYWwgLSByZXF1aXJlZCBpZiB0aGUgYmF0
Y2ggY29udGFpbnMgZGVsdGEgZW5jb2RlZCBldmVudHMuCisgIG9wdGlvbmFsIHVpbnQzMiBudW1i
ZXJfb2ZfZGVsdGFzID0gMzsKKworICAvLyBEZWx0YSBlbmNvZGluZ3MuCisgIG9wdGlvbmFsIGJ5
dGVzIHRpbWVzdGFtcF9tc19kZWx0YXMgPSAxMDE7CiAgIG9wdGlvbmFsIGJ5dGVzIGxvY2FsX3Nz
cmNfZGVsdGFzID0gMTAyOwogfQogCiBtZXNzYWdlIEJlZ2luTG9nRXZlbnQgeworICAvLyByZXF1
aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOworCisgIC8vIHJlcXVpcmVk
CisgIG9wdGlvbmFsIHVpbnQzMiB2ZXJzaW9uID0gMjsKKworICAvLyByZXF1aXJlZAorICBvcHRp
b25hbCBpbnQ2NCB1dGNfdGltZV9tcyA9IDM7CiB9CiAKIG1lc3NhZ2UgRW5kTG9nRXZlbnQgewor
ICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogfQogCiBt
ZXNzYWdlIExvc3NCYXNlZEJ3ZVVwZGF0ZXMgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBp
bnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCiAgIC8vIFRPRE8odGVyZWxpdXMpOiBVcGRhdGUgbG9n
IGludGVyZmFjZSB0byB1bnNpZ25lZC4KQEAgLTE5MSwyOSArMjYxLDM3IEBAIG1lc3NhZ2UgTG9z
c0Jhc2VkQndlVXBkYXRlcyB7CiAgIC8vIHJlcXVpcmVkIC0gVG90YWwgbnVtYmVyIG9mIHBhY2tl
dHMgdGhhdCB0aGUgQldFIHVwZGF0ZSBpcyBiYXNlZCBvbi4KICAgb3B0aW9uYWwgdWludDMyIHRv
dGFsX3BhY2tldHMgPSA0OwogCi0gIC8vIERlbHRhIGVuY29kaW5ncwotICBvcHRpb25hbCBieXRl
cyB0aW1lc3RhbXBfZGVsdGFzX21zID0gMTAxOwotICBvcHRpb25hbCBieXRlcyBiaXRyYXRlX2Rl
bHRhc19icHMgPSAxMDI7CisgIC8vIG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgdGhlIGJhdGNoIGNv
bnRhaW5zIGRlbHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25hbCB1aW50MzIgbnVtYmVyX29m
X2RlbHRhcyA9IDU7CisKKyAgLy8gRGVsdGEgZW5jb2RpbmdzLgorICBvcHRpb25hbCBieXRlcyB0
aW1lc3RhbXBfbXNfZGVsdGFzID0gMTAxOworICBvcHRpb25hbCBieXRlcyBiaXRyYXRlX2Jwc19k
ZWx0YXMgPSAxMDI7CiAgIG9wdGlvbmFsIGJ5dGVzIGZyYWN0aW9uX2xvc3NfZGVsdGFzID0gMTAz
OwogICBvcHRpb25hbCBieXRlcyB0b3RhbF9wYWNrZXRzX2RlbHRhcyA9IDEwNDsKIH0KIAogbWVz
c2FnZSBEZWxheUJhc2VkQndlVXBkYXRlcyB7CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFsIGlu
dDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKICAgLy8gcmVxdWlyZWQgLSBCYW5kd2lkdGggZXN0aW1h
dGUgKGluIGJwcykgYWZ0ZXIgdGhlIHVwZGF0ZS4KICAgb3B0aW9uYWwgdWludDMyIGJpdHJhdGVf
YnBzID0gMjsKIAogICBlbnVtIERldGVjdG9yU3RhdGUgewotICAgIEJXRV9OT1JNQUwgPSAwOwot
ICAgIEJXRV9VTkRFUlVTSU5HID0gMTsKLSAgICBCV0VfT1ZFUlVTSU5HID0gMjsKKyAgICBCV0Vf
VU5LTk9XTl9TVEFURSA9IDA7CisgICAgQldFX05PUk1BTCA9IDE7CisgICAgQldFX1VOREVSVVNJ
TkcgPSAyOworICAgIEJXRV9PVkVSVVNJTkcgPSAzOwogICB9CiAgIG9wdGlvbmFsIERldGVjdG9y
U3RhdGUgZGV0ZWN0b3Jfc3RhdGUgPSAzOwogCi0gIC8vIERlbHRhIGVuY29kaW5ncwotICBvcHRp
b25hbCBieXRlcyB0aW1lc3RhbXBfZGVsdGFzX21zID0gMTAxOwotICBvcHRpb25hbCBieXRlcyBi
aXRyYXRlX2RlbHRhc19icHMgPSAxMDI7CisgIC8vIG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgdGhl
IGJhdGNoIGNvbnRhaW5zIGRlbHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25hbCB1aW50MzIg
bnVtYmVyX29mX2RlbHRhcyA9IDQ7CisKKyAgLy8gRGVsdGEgZW5jb2RpbmdzLgorICBvcHRpb25h
bCBieXRlcyB0aW1lc3RhbXBfbXNfZGVsdGFzID0gMTAxOworICBvcHRpb25hbCBieXRlcyBiaXRy
YXRlX2Jwc19kZWx0YXMgPSAxMDI7CiAgIG9wdGlvbmFsIGJ5dGVzIGRldGVjdG9yX3N0YXRlX2Rl
bHRhcyA9IDEwMzsKIH0KIApAQCAtMjIxLDE1ICsyOTksMTcgQEAgbWVzc2FnZSBEZWxheUJhc2Vk
QndlVXBkYXRlcyB7CiBtZXNzYWdlIFJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyB7CiAgIC8vIE9w
dGlvbmFsIElEcyBmb3IgdGhlIGhlYWRlciBleHRlbnNpb25zLiBFYWNoIElEIGlzIGEgNC1iaXQg
bnVtYmVyIHRoYXQgaXMKICAgLy8gb25seSBzZXQgaWYgdGhhdCBleHRlbnNpb24gaXMgY29uZmln
dXJlZC4KLSAgLy8gVE9ETyh0ZXJlbGl1cyk6IENhbiB3ZSBza2lwIHRyYW5zbWlzc2lvbl90aW1l
X29mZnNldD8gV2hlbiBpcyBpdCB1c2VkPworICAvLyBUT0RPOiBDYW4gd2Ugc2tpcCBhdWRpbyBs
ZXZlbD8KICAgb3B0aW9uYWwgaW50MzIgdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X2lkID0gMTsK
ICAgb3B0aW9uYWwgaW50MzIgYWJzb2x1dGVfc2VuZF90aW1lX2lkID0gMjsKICAgb3B0aW9uYWwg
aW50MzIgdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9pZCA9IDM7Ci0gIG9wdGlvbmFsIGludDMy
IGF1ZGlvX2xldmVsX2lkID0gNDsKLSAgLy8gVE9ETyh0ZXJlbGl1cyk6IEFkZCB2aWRlb19yb3Rh
dGlvbiBhbmQgcGxheW91dCBkZWxheT8KKyAgb3B0aW9uYWwgaW50MzIgdmlkZW9fcm90YXRpb25f
aWQgPSA0OworICBvcHRpb25hbCBpbnQzMiBhdWRpb19sZXZlbF9pZCA9IDU7CisgIC8vIFRPRE8o
dGVyZWxpdXMpOiBBZGQgb3RoZXIgaGVhZGVyIGV4dGVuc2lvbnMgbGlrZSBwbGF5b3V0IGRlbGF5
PwogfQogCiBtZXNzYWdlIFZpZGVvUmVjdlN0cmVhbUNvbmZpZyB7CisgIC8vIHJlcXVpcmVkCiAg
IG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKICAgLy8gcmVxdWlyZWQgLSBTeW5j
aHJvbml6YXRpb24gc291cmNlIChzdHJlYW0gaWRlbnRpZmllcikgdG8gYmUgcmVjZWl2ZWQuCkBA
IC0yMzgsNDIgKzMxOCwzOCBAQCBtZXNzYWdlIFZpZGVvUmVjdlN0cmVhbUNvbmZpZyB7CiAgIC8v
IHJlcXVpcmVkIC0gU2VuZGVyIFNTUkMgdXNlZCBmb3Igc2VuZGluZyBSVENQIChzdWNoIGFzIHJl
Y2VpdmVyIHJlcG9ydHMpLgogICBvcHRpb25hbCB1aW50MzIgbG9jYWxfc3NyYyA9IDM7CiAKLSAg
Ly8gcmVxdWlyZWQgaWYgUlRYIGlzIGNvbmZpZ3VyZWQKKyAgLy8gb3B0aW9uYWwgLSByZXF1aXJl
ZCBpZiBSVFggaXMgY29uZmlndXJlZC4gU1NSQyBmb3IgdGhlIFJUWCBzdHJlYW0uCiAgIG9wdGlv
bmFsIHVpbnQzMiBydHhfc3NyYyA9IDQ7CiAKLSAgLy8gb3B0aW9uYWwgLSBSVFAgc291cmNlIHN0
cmVhbSBJRAotICBvcHRpb25hbCBieXRlcyByc2lkID0gNTsKLQogICAvLyBJRHMgZm9yIHRoZSBo
ZWFkZXIgZXh0ZW5zaW9uIHdlIGNhcmUgYWJvdXQuIE9ubHkgcmVxdWlyZWQgaWYgdGhlcmUgYXJl
CiAgIC8vIGhlYWRlciBleHRlbnNpb25zIGNvbmZpZ3VyZWQuCi0gIG9wdGlvbmFsIFJ0cEhlYWRl
ckV4dGVuc2lvbkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9ucyA9IDY7CisgIG9wdGlvbmFsIFJ0cEhl
YWRlckV4dGVuc2lvbkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9ucyA9IDU7CiAKICAgLy8gVE9ETyh0
ZXJlbGl1cyk6IERvIHdlIG5lZWQgY29kZWMtcGF5bG9hZCBtYXBwaW5nPyBJZiBzbyBhbmQgcnR4
X3NzcmMgaXMKICAgLy8gdXNlZCwgd2UgYWxzbyBuZWVkIGEgbWFwIGJldHdlZW4gUlRQIHBheWxv
YWQgdHlwZSBhbmQgUlRYIHBheWxvYWQgdHlwZS4KIH0KIAogbWVzc2FnZSBWaWRlb1NlbmRTdHJl
YW1Db25maWcgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMg
PSAxOwogCi0gIC8vIFN5bmNocm9uaXphdGlvbiBzb3VyY2UgKHN0cmVhbSBpZGVudGlmaWVyKSBm
b3Igb3V0Z29pbmcgc3RyZWFtLgotICAvLyBPbmUgc3RyZWFtIGNhbiBoYXZlIHNldmVyYWwgc3Ny
Y3MgZm9yIGUuZy4gc2ltdWxjYXN0LgorICAvLyByZXF1aXJlZCAtIFN5bmNocm9uaXphdGlvbiBz
b3VyY2UgKHN0cmVhbSBpZGVudGlmaWVyKSBmb3Igb3V0Z29pbmcgc3RyZWFtLgorICAvLyBXaGVu
IHVzaW5nIHNpbXVsY2FzdCwgYSBzZXBhcmF0ZSBjb25maWcgc2hvdWxkIGJlIGxvZ2dlZCBmb3Ig
ZWFjaCBzdHJlYW0uCiAgIG9wdGlvbmFsIHVpbnQzMiBzc3JjID0gMjsKIAotICAvLyBTU1JDIGZv
ciB0aGUgUlRYIHN0cmVhbQorICAvLyBvcHRpb25hbCAtIHJlcXVpcmVkIGlmIFJUWCBpcyBjb25m
aWd1cmVkLiBTU1JDIGZvciB0aGUgUlRYIHN0cmVhbS4KICAgb3B0aW9uYWwgdWludDMyIHJ0eF9z
c3JjID0gMzsKIAotICAvLyBSVFAgc291cmNlIHN0cmVhbSBJRAotICBvcHRpb25hbCBieXRlcyBy
c2lkID0gNDsKLQogICAvLyBJRHMgZm9yIHRoZSBoZWFkZXIgZXh0ZW5zaW9uIHdlIGNhcmUgYWJv
dXQuIE9ubHkgcmVxdWlyZWQgaWYgdGhlcmUgYXJlCiAgIC8vIGhlYWRlciBleHRlbnNpb25zIGNv
bmZpZ3VyZWQuCi0gIG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyBoZWFkZXJfZXh0
ZW5zaW9ucyA9IDU7CisgIG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyBoZWFkZXJf
ZXh0ZW5zaW9ucyA9IDQ7CiAKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IERvIHdlIG5lZWQgY29kZWMt
cGF5bG9hZCBtYXBwaW5nPyBJZiBzbyBhbmQgcnR4X3NzcmMgaXMKICAgLy8gdXNlZCwgd2UgYWxz
byBuZWVkIGEgbWFwIGJldHdlZW4gUlRQIHBheWxvYWQgdHlwZSBhbmQgUlRYIHBheWxvYWQgdHlw
ZS4KIH0KIAogbWVzc2FnZSBBdWRpb1JlY3ZTdHJlYW1Db25maWcgeworICAvLyByZXF1aXJlZAog
ICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCiAgIC8vIHJlcXVpcmVkIC0gU3lu
Y2hyb25pemF0aW9uIHNvdXJjZSAoc3RyZWFtIGlkZW50aWZpZXIpIHRvIGJlIHJlY2VpdmVkLgpA
QCAtMjg0LDM4ICszNjAsMzMgQEAgbWVzc2FnZSBBdWRpb1JlY3ZTdHJlYW1Db25maWcgewogCiAg
IC8vIEZpZWxkIG51bWJlciA0IHJlc2VydmVkIGZvciBSVFggU1NSQy4KIAotICAvLyBvcHRpb25h
bCAtIFJUUCBzb3VyY2Ugc3RyZWFtIElECi0gIG9wdGlvbmFsIGJ5dGVzIHJzaWQgPSA1OwotCiAg
IC8vIElEcyBmb3IgdGhlIGhlYWRlciBleHRlbnNpb24gd2UgY2FyZSBhYm91dC4gT25seSByZXF1
aXJlZCBpZiB0aGVyZSBhcmUKICAgLy8gaGVhZGVyIGV4dGVuc2lvbnMgY29uZmlndXJlZC4KLSAg
b3B0aW9uYWwgUnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnIGhlYWRlcl9leHRlbnNpb25zID0gNjsK
KyAgb3B0aW9uYWwgUnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnIGhlYWRlcl9leHRlbnNpb25zID0g
NTsKIAogICAvLyBUT0RPKHRlcmVsaXVzKTogRG8gd2UgbmVlZCBjb2RlYy1wYXlsb2FkIG1hcHBp
bmc/IElmIHNvIGFuZCBydHhfc3NyYyBpcwogICAvLyB1c2VkLCB3ZSBhbHNvIG5lZWQgYSBtYXAg
YmV0d2VlbiBSVFAgcGF5bG9hZCB0eXBlIGFuZCBSVFggcGF5bG9hZCB0eXBlLgogfQogCiBtZXNz
YWdlIEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyB7CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFsIGlu
dDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKLSAgLy8gU3luY2hyb25pemF0aW9uIHNvdXJjZSAoc3Ry
ZWFtIGlkZW50aWZpZXIpIGZvciBvdXRnb2luZyBzdHJlYW0uCi0gIC8vIE9uZSBzdHJlYW0gY2Fu
IGhhdmUgc2V2ZXJhbCBzc3JjcyBmb3IgZS5nLiBzaW11bGNhc3QuCisgIC8vIHJlcXVpcmVkIC0g
U3luY2hyb25pemF0aW9uIHNvdXJjZSAoc3RyZWFtIGlkZW50aWZpZXIpIGZvciBvdXRnb2luZyBz
dHJlYW0uCiAgIG9wdGlvbmFsIHVpbnQzMiBzc3JjID0gMjsKIAotICAvLyBGaWVsZCBudW1iZXIg
MyByZXNlcnZlZCBmb3IgUlRYIFNTUkMKLQotICAvLyBSVFAgc291cmNlIHN0cmVhbSBJRAotICBv
cHRpb25hbCBieXRlcyByc2lkID0gNDsKKyAgLy8gRmllbGQgbnVtYmVyIDMgcmVzZXJ2ZWQgZm9y
IFJUWCBTU1JDLgogCiAgIC8vIElEcyBmb3IgdGhlIGhlYWRlciBleHRlbnNpb24gd2UgY2FyZSBh
Ym91dC4gT25seSByZXF1aXJlZCBpZiB0aGVyZSBhcmUKICAgLy8gaGVhZGVyIGV4dGVuc2lvbnMg
Y29uZmlndXJlZC4KLSAgb3B0aW9uYWwgUnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnIGhlYWRlcl9l
eHRlbnNpb25zID0gNTsKKyAgb3B0aW9uYWwgUnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnIGhlYWRl
cl9leHRlbnNpb25zID0gNDsKIAogICAvLyBUT0RPKHRlcmVsaXVzKTogRG8gd2UgbmVlZCBjb2Rl
Yy1wYXlsb2FkIG1hcHBpbmc/IElmIHNvIGFuZCBydHhfc3NyYyBpcwogICAvLyB1c2VkLCB3ZSBh
bHNvIG5lZWQgYSBtYXAgYmV0d2VlbiBSVFAgcGF5bG9hZCB0eXBlIGFuZCBSVFggcGF5bG9hZCB0
eXBlLgogfQogCiBtZXNzYWdlIEF1ZGlvTmV0d29ya0FkYXB0YXRpb25zIHsKKyAgLy8gcmVxdWly
ZWQKICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAvLyBCaXQgcmF0ZSB0
aGF0IHRoZSBhdWRpbyBlbmNvZGVyIGlzIG9wZXJhdGluZyBhdC4KQEAgLTMyOCw3ICszOTksMTIg
QEAgbWVzc2FnZSBBdWRpb05ldHdvcmtBZGFwdGF0aW9ucyB7CiAKICAgLy8gUGFja2V0IGxvc3Mg
ZnJhY3Rpb24gdGhhdCB0aGUgZW5jb2RlcidzIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbiAoRkVD
KSBpcwogICAvLyBvcHRpbWl6ZWQgZm9yLgotICBvcHRpb25hbCBmbG9hdCB1cGxpbmtfcGFja2V0
X2xvc3NfZnJhY3Rpb24gPSA0OworICAvLyBJbnN0ZWFkIG9mIGVuY29kaW5nIGEgZmxvYXQsIHdl
IGVuY29kZSBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMTYzODMsIHdoaWNoCisgIC8vIGlmIGRpdmlk
ZWQgYnkgMTYzODMsIHdpbGwgZ2l2ZSBhIHZhbHVlIGNsb3NlIHRvIHRoZSBvcmlnaW5hbCBmbG9h
dC4KKyAgLy8gVGhlIHZhbHVlIDE2MzgzICgyXjE0IC0gMSkgd2FzIGNob3NlbiBzbyB0aGF0IGl0
IHdvdWxkIGdpdmUgZ29vZCBwcmVjaXNpb24KKyAgLy8gb24gdGhlIG9uZSBoYW5kLCBhbmQgd291
bGQgYmUgZW5jb2RhYmxlIHdpdGggdHdvIGJ5dGVzIGluIHZhcmludCBmb3JtCisgIC8vIG9uIHRo
ZSBvdGhlciBoYW5kLgorICBvcHRpb25hbCB1aW50MzIgdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0
aW9uID0gNDsKIAogICAvLyBXaGV0aGVyIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbiAoRkVDKSBp
cyB0dXJuZWQgb24gb3Igb2ZmLgogICBvcHRpb25hbCBib29sIGVuYWJsZV9mZWMgPSA1OwpAQCAt
MzM5LDEwICs0MTUsMTMgQEAgbWVzc2FnZSBBdWRpb05ldHdvcmtBZGFwdGF0aW9ucyB7CiAgIC8v
IE51bWJlciBvZiBhdWRpbyBjaGFubmVscyB0aGF0IGVhY2ggZW5jb2RlZCBwYWNrZXQgY29uc2lz
dHMgb2YuCiAgIG9wdGlvbmFsIHVpbnQzMiBudW1fY2hhbm5lbHMgPSA3OwogCi0gIC8vIERlbHRh
IGVuY29kaW5ncwotICBvcHRpb25hbCBieXRlcyB0aW1lc3RhbXBfZGVsdGFzX21zID0gMTAxOwot
ICBvcHRpb25hbCBieXRlcyBiaXRyYXRlX2RlbHRhc19icHMgPSAxMDI7Ci0gIG9wdGlvbmFsIGJ5
dGVzIGZyYW1lX2xlbmd0aF9kZWx0YXNfbXMgPSAxMDM7CisgIC8vIG9wdGlvbmFsIC0gcmVxdWly
ZWQgaWYgdGhlIGJhdGNoIGNvbnRhaW5zIGRlbHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25h
bCB1aW50MzIgbnVtYmVyX29mX2RlbHRhcyA9IDg7CisKKyAgLy8gRGVsdGEgZW5jb2RpbmdzLgor
ICBvcHRpb25hbCBieXRlcyB0aW1lc3RhbXBfbXNfZGVsdGFzID0gMTAxOworICBvcHRpb25hbCBi
eXRlcyBiaXRyYXRlX2Jwc19kZWx0YXMgPSAxMDI7CisgIG9wdGlvbmFsIGJ5dGVzIGZyYW1lX2xl
bmd0aF9tc19kZWx0YXMgPSAxMDM7CiAgIG9wdGlvbmFsIGJ5dGVzIHVwbGlua19wYWNrZXRfbG9z
c19mcmFjdGlvbl9kZWx0YXMgPSAxMDQ7CiAgIG9wdGlvbmFsIGJ5dGVzIGVuYWJsZV9mZWNfZGVs
dGFzID0gMTA1OwogICBvcHRpb25hbCBieXRlcyBlbmFibGVfZHR4X2RlbHRhcyA9IDEwNjsKQEAg
LTM1MCw2ICs0MjksNyBAQCBtZXNzYWdlIEF1ZGlvTmV0d29ya0FkYXB0YXRpb25zIHsKIH0KIAog
bWVzc2FnZSBCd2VQcm9iZUNsdXN0ZXIgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2
NCB0aW1lc3RhbXBfbXMgPSAxOwogCiAgIC8vIHJlcXVpcmVkIC0gVGhlIGlkIG9mIHRoaXMgcHJv
YmUgY2x1c3Rlci4KQEAgLTM2Niw2ICs0NDYsNyBAQCBtZXNzYWdlIEJ3ZVByb2JlQ2x1c3RlciB7
CiB9CiAKIG1lc3NhZ2UgQndlUHJvYmVSZXN1bHRTdWNjZXNzIHsKKyAgLy8gcmVxdWlyZWQKICAg
b3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAvLyByZXF1aXJlZCAtIFRoZSBp
ZCBvZiB0aGlzIHByb2JlIGNsdXN0ZXIuCkBAIC0zNzYsNiArNDU3LDcgQEAgbWVzc2FnZSBCd2VQ
cm9iZVJlc3VsdFN1Y2Nlc3MgewogfQogCiBtZXNzYWdlIEJ3ZVByb2JlUmVzdWx0RmFpbHVyZSB7
CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKICAg
Ly8gcmVxdWlyZWQgLSBUaGUgaWQgb2YgdGhpcyBwcm9iZSBjbHVzdGVyLgpAQCAtMzkxLDMgKzQ3
MywxMDEgQEAgbWVzc2FnZSBCd2VQcm9iZVJlc3VsdEZhaWx1cmUgewogICAvLyByZXF1aXJlZAog
ICBvcHRpb25hbCBGYWlsdXJlUmVhc29uIGZhaWx1cmUgPSAzOwogfQorCittZXNzYWdlIEFsclN0
YXRlIHsKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsK
KworICAvLyByZXF1aXJlZCAtIFRydWUgaWYgdGhlIHNlbmQgcmF0ZSBpcyBhcHBsaWNhdGlvbiBs
aW1pdGVkLgorICBvcHRpb25hbCBib29sIGluX2FsciA9IDI7Cit9CisKK21lc3NhZ2UgSWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZyB7CisgIGVudW0gSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgewor
ICAgIFVOS05PV05fQ09ORklHX1RZUEUgPSAwOworICAgIEFEREVEID0gMTsKKyAgICBVUERBVEVE
ID0gMjsKKyAgICBERVNUUk9ZRUQgPSAzOworICAgIFNFTEVDVEVEID0gNDsKKyAgfQorCisgIGVu
dW0gSWNlQ2FuZGlkYXRlVHlwZSB7CisgICAgVU5LTk9XTl9DQU5ESURBVEVfVFlQRSA9IDA7Cisg
ICAgTE9DQUwgPSAxOworICAgIFNUVU4gPSAyOworICAgIFBSRkxYID0gMzsKKyAgICBSRUxBWSA9
IDQ7CisgIH0KKworICBlbnVtIFByb3RvY29sIHsKKyAgICBVTktOT1dOX1BST1RPQ09MID0gMDsK
KyAgICBVRFAgPSAxOworICAgIFRDUCA9IDI7CisgICAgU1NMVENQID0gMzsKKyAgICBUTFMgPSA0
OworICB9CisKKyAgZW51bSBBZGRyZXNzRmFtaWx5IHsKKyAgICBVTktOT1dOX0FERFJFU1NfRkFN
SUxZID0gMDsKKyAgICBJUFY0ID0gMTsKKyAgICBJUFY2ID0gMjsKKyAgfQorCisgIGVudW0gTmV0
d29ya1R5cGUgeworICAgIFVOS05PV05fTkVUV09SS19UWVBFID0gMDsKKyAgICBFVEhFUk5FVCA9
IDE7CisgICAgV0lGSSA9IDI7CisgICAgQ0VMTFVMQVIgPSAzOworICAgIFZQTiA9IDQ7CisgICAg
TE9PUEJBQ0sgPSA1OworICB9CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgaW50NjQgdGlt
ZXN0YW1wX21zID0gMTsKKworICAvLyByZXF1aXJlZAorICBvcHRpb25hbCBJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnVHlwZSBjb25maWdfdHlwZSA9IDI7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9u
YWwgdWludDMyIGNhbmRpZGF0ZV9wYWlyX2lkID0gMzsKKworICAvLyByZXF1aXJlZAorICBvcHRp
b25hbCBJY2VDYW5kaWRhdGVUeXBlIGxvY2FsX2NhbmRpZGF0ZV90eXBlID0gNDsKKworICAvLyBy
ZXF1aXJlZAorICBvcHRpb25hbCBQcm90b2NvbCBsb2NhbF9yZWxheV9wcm90b2NvbCA9IDU7CisK
KyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgTmV0d29ya1R5cGUgbG9jYWxfbmV0d29ya190eXBl
ID0gNjsKKworICAvLyByZXF1aXJlZAorICBvcHRpb25hbCBBZGRyZXNzRmFtaWx5IGxvY2FsX2Fk
ZHJlc3NfZmFtaWx5ID0gNzsKKworICAvLyByZXF1aXJlZAorICBvcHRpb25hbCBJY2VDYW5kaWRh
dGVUeXBlIHJlbW90ZV9jYW5kaWRhdGVfdHlwZSA9IDg7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0
aW9uYWwgQWRkcmVzc0ZhbWlseSByZW1vdGVfYWRkcmVzc19mYW1pbHkgPSA5OworCisgIC8vIHJl
cXVpcmVkCisgIG9wdGlvbmFsIFByb3RvY29sIGNhbmRpZGF0ZV9wYWlyX3Byb3RvY29sID0gMTA7
Cit9CisKK21lc3NhZ2UgSWNlQ2FuZGlkYXRlUGFpckV2ZW50IHsKKyAgZW51bSBJY2VDYW5kaWRh
dGVQYWlyRXZlbnRUeXBlIHsKKyAgICBVTktOT1dOX0NIRUNLX1RZUEUgPSAwOworICAgIENIRUNL
X1NFTlQgPSAxOworICAgIENIRUNLX1JFQ0VJVkVEID0gMjsKKyAgICBDSEVDS19SRVNQT05TRV9T
RU5UID0gMzsKKyAgICBDSEVDS19SRVNQT05TRV9SRUNFSVZFRCA9IDQ7CisgIH0KKworICAvLyBy
ZXF1aXJlZAorICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOworCisgIC8vIHJlcXVp
cmVkCisgIG9wdGlvbmFsIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgZXZlbnRfdHlwZSA9IDI7
CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgdWludDMyIGNhbmRpZGF0ZV9wYWlyX2lkID0g
MzsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnJ0cF9kdW1wLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL3J0Y19ldmVudF9sb2cycnRwX2R1bXAuY2MKaW5kZXggYTNkMzQ1NmE3YmRlYWI3ZTJiY2Q5
ZDMyYTFiZmFjMmMyMWY5ZDM3OC4uZGE3ZGY2NGZhZGRmNjFhMTNlNDFkMTJmYmQ1OGU3MmY0NTZh
MGZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cycnRwX2R1bXAuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL3J0Y19ldmVudF9sb2cycnRwX2R1bXAuY2MKQEAgLTMyLDMxICszMiwzMiBAQCBuYW1l
c3BhY2UgewogCiB1c2luZyBNZWRpYVR5cGUgPSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpNZWRpYVR5cGU7CiAKLURFRklORV9ib29sKAorV0VCUlRDX0RFRklORV9ib29sKAogICAgIGF1
ZGlvLAogICAgIHRydWUsCiAgICAgIlVzZSAtLW5vYXVkaW8gdG8gZXhjbHVkZSBhdWRpbyBwYWNr
ZXRzIGZyb20gdGhlIGNvbnZlcnRlZCBSVFBkdW1wIGZpbGUuIik7Ci1ERUZJTkVfYm9vbCgKK1dF
QlJUQ19ERUZJTkVfYm9vbCgKICAgICB2aWRlbywKICAgICB0cnVlLAogICAgICJVc2UgLS1ub3Zp
ZGVvIHRvIGV4Y2x1ZGUgdmlkZW8gcGFja2V0cyBmcm9tIHRoZSBjb252ZXJ0ZWQgUlRQZHVtcCBm
aWxlLiIpOwotREVGSU5FX2Jvb2woCitXRUJSVENfREVGSU5FX2Jvb2woCiAgICAgZGF0YSwKICAg
ICB0cnVlLAogICAgICJVc2UgLS1ub2RhdGEgdG8gZXhjbHVkZSBkYXRhIHBhY2tldHMgZnJvbSB0
aGUgY29udmVydGVkIFJUUGR1bXAgZmlsZS4iKTsKLURFRklORV9ib29sKAorV0VCUlRDX0RFRklO
RV9ib29sKAogICAgIHJ0cCwKICAgICB0cnVlLAogICAgICJVc2UgLS1ub3J0cCB0byBleGNsdWRl
IFJUUCBwYWNrZXRzIGZyb20gdGhlIGNvbnZlcnRlZCBSVFBkdW1wIGZpbGUuIik7Ci1ERUZJTkVf
Ym9vbCgKK1dFQlJUQ19ERUZJTkVfYm9vbCgKICAgICBydGNwLAogICAgIHRydWUsCiAgICAgIlVz
ZSAtLW5vcnRjcCB0byBleGNsdWRlIFJUQ1AgcGFja2V0cyBmcm9tIHRoZSBjb252ZXJ0ZWQgUlRQ
ZHVtcCBmaWxlLiIpOwotREVGSU5FX3N0cmluZyhzc3JjLAotICAgICAgICAgICAgICAiIiwKLSAg
ICAgICAgICAgICAgIlN0b3JlIG9ubHkgcGFja2V0cyB3aXRoIHRoaXMgU1NSQyAoZGVjaW1hbCBv
ciBoZXgsIHRoZSBsYXR0ZXIgIgotICAgICAgICAgICAgICAic3RhcnRpbmcgd2l0aCAweCkuIik7
Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UuIik7CitXRUJS
VENfREVGSU5FX3N0cmluZygKKyAgICBzc3JjLAorICAgICIiLAorICAgICJTdG9yZSBvbmx5IHBh
Y2tldHMgd2l0aCB0aGlzIFNTUkMgKGRlY2ltYWwgb3IgaGV4LCB0aGUgbGF0dGVyICIKKyAgICAi
c3RhcnRpbmcgd2l0aCAweCkuIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQ
cmludHMgdGhpcyBtZXNzYWdlLiIpOwogCiAvLyBQYXJzZXMgdGhlIGlucHV0IHN0cmluZyBmb3Ig
YSB2YWxpZCBTU1JDLiBJZiBhIHZhbGlkIFNTUkMgaXMgZm91bmQsIGl0IGlzCiAvLyB3cml0dGVu
IHRvIHRoZSBvdXRwdXQgdmFyaWFibGUgfHNzcmN8LCBhbmQgdHJ1ZSBpcyByZXR1cm5lZC4gT3Ro
ZXJ3aXNlLApAQCAtOTcsOSArOTgsMTAgQEAgYm9vbCBTaG91bGRTa2lwU3RyZWFtKE1lZGlhVHlw
ZSBtZWRpYV90eXBlLAogLy8gQ29udmVydCBhIExvZ2dlZFJ0cFBhY2tldEluY29taW5nIHRvIGEg
dGVzdDo6UnRwUGFja2V0LiBIZWFkZXIgZXh0ZW5zaW9uIElEcwogLy8gYXJlIGFsbG9jYXRlZCBh
Y2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkIGV4dGVuc2lvbiBtYXAuIFRoaXMgbWlnaHQgbm90IG1h
dGNoCiAvLyB0aGUgZXh0ZW5zaW9uIG1hcCB1c2VkIGluIHRoZSBhY3R1YWwgY2FsbC4KLXZvaWQg
Q29udmVydFJ0cFBhY2tldChjb25zdCB3ZWJydGM6OkxvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBp
bmNvbWluZywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4
dGVuc2lvbk1hcCBkZWZhdWx0X2V4dGVuc2lvbl9tYXAsCi0gICAgICAgICAgICAgICAgICAgICAg
d2VicnRjOjp0ZXN0OjpSdHBQYWNrZXQqIHBhY2tldCkgewordm9pZCBDb252ZXJ0UnRwUGFja2V0
KAorICAgIGNvbnN0IHdlYnJ0Yzo6TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIGluY29taW5nLAor
ICAgIGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBkZWZhdWx0X2V4dGVuc2lv
bl9tYXAsCisgICAgd2VicnRjOjp0ZXN0OjpSdHBQYWNrZXQqIHBhY2tldCkgewogICB3ZWJydGM6
OlJ0cFBhY2tldCByZWNvbnN0cnVjdGVkX3BhY2tldCgmZGVmYXVsdF9leHRlbnNpb25fbWFwKTsK
IAogICByZWNvbnN0cnVjdGVkX3BhY2tldC5TZXRNYXJrZXIoaW5jb21pbmcucnRwLmhlYWRlci5t
YXJrZXJCaXQpOwpAQCAtMTk2LDggKzE5OCw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBh
cmd2W10pIHsKICAgICByZXR1cm4gLTE7CiAgIH0KIAotICBzdGQ6OmNvdXQgPDwgIkZvdW5kICIg
PDwgcGFyc2VkX3N0cmVhbS5HZXROdW1iZXJPZkV2ZW50cygpCi0gICAgICAgICAgICA8PCAiIGV2
ZW50cyBpbiB0aGUgaW5wdXQgZmlsZS4iIDw8IHN0ZDo6ZW5kbDsKICAgaW50IHJ0cF9jb3VudGVy
ID0gMCwgcnRjcF9jb3VudGVyID0gMDsKICAgYm9vbCBoZWFkZXJfb25seSA9IGZhbHNlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzJzdGF0cy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZl
bnRfbG9nMnN0YXRzLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjhjODI5ZjQ5
ZjEzYzBjNTFhYzkwODU1YzU2ZjQ4MzNkMzk3Y2EzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnN0YXRzLmNjCisrKyAv
ZGV2L251bGwKQEAgLTEsMjY1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
Ci0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5j
bHVkZSA8aW50dHlwZXMuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSA8ZnN0cmVh
bT4KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c3RyaW5n
PgotI2luY2x1ZGUgPHR1cGxlPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9y
PgotCi0jaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL2lnbm9yZV93dW5kZWYuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCi0KLS8vIEZpbGVzIGdlbmVyYXRlZCBhdCBidWlsZC10aW1lIGJ5IHRoZSBwcm90
b2J1ZiBjb21waWxlci4KLVJUQ19QVVNIX0lHTk9SSU5HX1dVTkRFRigpCi0jaWZkZWYgV0VCUlRD
X0FORFJPSURfUExBVEZPUk1fQlVJTEQKLSNpbmNsdWRlICJleHRlcm5hbC93ZWJydGMvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLnBiLmgiCi0jZWxzZQotI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLnBiLmgiCi0jZW5kaWYKLVJU
Q19QT1BfSUdOT1JJTkdfV1VOREVGKCkKLQotbmFtZXNwYWNlIHsKLQotREVGSU5FX2Jvb2woaGVs
cCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNzYWdlLiIpOwotCi1zdHJ1Y3QgU3RhdHMgewotICBp
bnQgY291bnQgPSAwOwotICBzaXplX3QgdG90YWxfc2l6ZSA9IDA7Ci19OwotCi0vLyBXZSBhcmUg
ZHVwbGljYXRpbmcgc29tZSBwYXJ0cyBvZiB0aGUgcGFyc2VyIGhlcmUgYmVjYXVzZSB3ZSB3YW50
IHRvIGdldAotLy8gYWNjZXNzIHRvIHJhdyBwcm90b2J1ZiBldmVudHMuCi1zdGQ6OnBhaXI8dWlu
dDY0X3QsIGJvb2w+IFBhcnNlVmFySW50KHN0ZDo6aXN0cmVhbSYgc3RyZWFtKSB7Ci0gIHVpbnQ2
NF90IHZhcmludCA9IDA7Ci0gIGZvciAoc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOyBieXRlc19yZWFk
IDwgMTA7ICsrYnl0ZXNfcmVhZCkgewotICAgIC8vIFRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBv
ZiBlYWNoIGJ5dGUgaXMgMCBpZiBpdCBpcyB0aGUgbGFzdCBieXRlIGluCi0gICAgLy8gdGhlIHZh
cmludCBhbmQgMSBvdGhlcndpc2UuIFRodXMsIHdlIHRha2UgdGhlIDcgbGVhc3Qgc2lnbmlmaWNh
bnQgYml0cwotICAgIC8vIG9mIGVhY2ggYnl0ZSBhbmQgc2hpZnQgdGhlbSA3IGJpdHMgZm9yIGVh
Y2ggYnl0ZSByZWFkIHByZXZpb3VzbHkgdG8gZ2V0Ci0gICAgLy8gdGhlICh1bnNpZ25lZCkgaW50
ZWdlci4KLSAgICBpbnQgYnl0ZSA9IHN0cmVhbS5nZXQoKTsKLSAgICBpZiAoc3RyZWFtLmVvZigp
KSB7Ci0gICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodmFyaW50LCBmYWxzZSk7Ci0gICAgfQot
ICAgIFJUQ19EQ0hFQ0tfR0UoYnl0ZSwgMCk7Ci0gICAgUlRDX0RDSEVDS19MRShieXRlLCAyNTUp
OwotICAgIHZhcmludCB8PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnl0ZSAmIDB4N0YpIDw8ICg3
ICogYnl0ZXNfcmVhZCk7Ci0gICAgaWYgKChieXRlICYgMHg4MCkgPT0gMCkgewotICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKHZhcmludCwgdHJ1ZSk7Ci0gICAgfQotICB9Ci0gIHJldHVybiBz
dGQ6Om1ha2VfcGFpcih2YXJpbnQsIGZhbHNlKTsKLX0KLQotYm9vbCBQYXJzZUV2ZW50cyhjb25z
dCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHdl
YnJ0Yzo6cnRjbG9nOjpFdmVudD4qIGV2ZW50cykgewotICBzdGQ6Omlmc3RyZWFtIHN0cmVhbShm
aWxlbmFtZSwgc3RkOjppb3NfYmFzZTo6aW4gfCBzdGQ6Omlvc19iYXNlOjpiaW5hcnkpOwotICBp
ZiAoIXN0cmVhbS5nb29kKCkgfHwgIXN0cmVhbS5pc19vcGVuKCkpIHsKLSAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJDb3VsZCBub3Qgb3BlbiBmaWxlIGZvciByZWFkaW5nLiI7Ci0gICAgcmV0
dXJuIGZhbHNlOwotICB9Ci0KLSAgY29uc3Qgc2l6ZV90IGtNYXhFdmVudFNpemUgPSAoMXUgPDwg
MTYpIC0gMTsKLSAgc3RkOjp2ZWN0b3I8Y2hhcj4gdG1wX2J1ZmZlcihrTWF4RXZlbnRTaXplKTsK
LSAgdWludDY0X3QgdGFnOwotICB1aW50NjRfdCBtZXNzYWdlX2xlbmd0aDsKLSAgYm9vbCBzdWNj
ZXNzOwotCi0gIFJUQ19EQ0hFQ0soc3RyZWFtLmdvb2QoKSk7Ci0KLSAgd2hpbGUgKDEpIHsKLSAg
ICAvLyBDaGVjayB3aGV0aGVyIHdlIGhhdmUgcmVhY2hlZCBlbmQgb2YgZmlsZS4KLSAgICBzdHJl
YW0ucGVlaygpOwotICAgIGlmIChzdHJlYW0uZW9mKCkpIHsKLSAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIC8vIFJlYWQgdGhlIG5leHQgbWVzc2FnZSB0YWcuIFRoZSB0YWcgbnVtYmVy
IGlzIGRlZmluZWQgYXMKLSAgICAvLyAoZmllbGRudW1iZXIgPDwgMykgfCB3aXJlX3R5cGUuIElu
IG91ciBjYXNlLCB0aGUgZmllbGQgbnVtYmVyIGlzCi0gICAgLy8gc3VwcG9zZWQgdG8gYmUgMSBh
bmQgdGhlIHdpcmUgdHlwZSBmb3IgYW4gbGVuZ3RoLWRlbGltaXRlZCBmaWVsZCBpcyAyLgotICAg
IGNvbnN0IHVpbnQ2NF90IGtFeHBlY3RlZFRhZyA9ICgxIDw8IDMpIHwgMjsKLSAgICBzdGQ6OnRp
ZSh0YWcsIHN1Y2Nlc3MpID0gUGFyc2VWYXJJbnQoc3RyZWFtKTsKLSAgICBpZiAoIXN1Y2Nlc3Mp
IHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykKLSAgICAgICAgICA8PCAiTWlzc2luZyBmaWVs
ZCB0YWcgZnJvbSBiZWdpbm5pbmcgb2YgcHJvdG9idWYgZXZlbnQuIjsKLSAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9IGVsc2UgaWYgKHRhZyAhPSBrRXhwZWN0ZWRUYWcpIHsKLSAgICAgIFJUQ19M
T0coTFNfV0FSTklORykKLSAgICAgICAgICA8PCAiVW5leHBlY3RlZCBmaWVsZCB0YWcgYXQgYmVn
aW5uaW5nIG9mIHByb3RvYnVmIGV2ZW50LiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgLy8gUmVhZCB0aGUgbGVuZ3RoIGZpZWxkLgotICAgIHN0ZDo6dGllKG1lc3NhZ2VfbGVu
Z3RoLCBzdWNjZXNzKSA9IFBhcnNlVmFySW50KHN0cmVhbSk7Ci0gICAgaWYgKCFzdWNjZXNzKSB7
Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJNaXNzaW5nIG1lc3NhZ2UgbGVuZ3RoIGFm
dGVyIHByb3RvYnVmIGZpZWxkIHRhZy4iOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxz
ZSBpZiAobWVzc2FnZV9sZW5ndGggPiBrTWF4RXZlbnRTaXplKSB7Ci0gICAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJQcm90b2J1ZiBtZXNzYWdlIGxlbmd0aCBpcyB0b28gbGFyZ2UuIjsKLSAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBSZWFkIHRoZSBuZXh0IHByb3RvYnVm
IGV2ZW50IHRvIGEgdGVtcG9yYXJ5IGNoYXIgYnVmZmVyLgotICAgIHN0cmVhbS5yZWFkKHRtcF9i
dWZmZXIuZGF0YSgpLCBtZXNzYWdlX2xlbmd0aCk7Ci0gICAgaWYgKHN0cmVhbS5nY291bnQoKSAh
PSBzdGF0aWNfY2FzdDxpbnQ+KG1lc3NhZ2VfbGVuZ3RoKSkgewotICAgICAgUlRDX0xPRyhMU19X
QVJOSU5HKSA8PCAiRmFpbGVkIHRvIHJlYWQgcHJvdG9idWYgbWVzc2FnZSBmcm9tIGZpbGUuIjsK
LSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBQYXJzZSB0aGUgcHJvdG9idWYg
ZXZlbnQgZnJvbSB0aGUgYnVmZmVyLgotICAgIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudCBldmVudDsK
LSAgICBpZiAoIWV2ZW50LlBhcnNlRnJvbUFycmF5KHRtcF9idWZmZXIuZGF0YSgpLCBtZXNzYWdl
X2xlbmd0aCkpIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byBwYXJz
ZSBwcm90b2J1ZiBtZXNzYWdlLiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGV2
ZW50cy0+cHVzaF9iYWNrKGV2ZW50KTsKLSAgfQotfQotCi0vLyBUT0RPKHRlcmVsaXVzKTogU2hv
dWxkIHRoaXMgYmUgcGxhY2VkIGluIHNvbWUgdXRpbGl0eSBmaWxlIGluc3RlYWQ/Ci1zdGQ6OnN0
cmluZyBFdmVudFR5cGVUb1N0cmluZyh3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkV2ZW50VHlwZSBl
dmVudF90eXBlKSB7Ci0gIHN3aXRjaCAoZXZlbnRfdHlwZSkgewotICAgIGNhc2Ugd2VicnRjOjpy
dGNsb2c6OkV2ZW50OjpVTktOT1dOX0VWRU5UOgotICAgICAgcmV0dXJuICJVTktOT1dOX0VWRU5U
IjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6TE9HX1NUQVJUOgotICAgICAgcmV0
dXJuICJMT0dfU1RBUlQiOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpMT0dfRU5E
OgotICAgICAgcmV0dXJuICJMT0dfRU5EIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVu
dDo6UlRQX0VWRU5UOgotICAgICAgcmV0dXJuICJSVFBfRVZFTlQiOwotICAgIGNhc2Ugd2VicnRj
OjpydGNsb2c6OkV2ZW50OjpSVENQX0VWRU5UOgotICAgICAgcmV0dXJuICJSVENQX0VWRU5UIjsK
LSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6QVVESU9fUExBWU9VVF9FVkVOVDoKLSAg
ICAgIHJldHVybiAiQVVESU9fUExBWU9VVF9FVkVOVCI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xv
Zzo6RXZlbnQ6OkxPU1NfQkFTRURfQldFX1VQREFURToKLSAgICAgIHJldHVybiAiTE9TU19CQVNF
RF9CV0VfVVBEQVRFIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6REVMQVlfQkFT
RURfQldFX1VQREFURToKLSAgICAgIHJldHVybiAiREVMQVlfQkFTRURfQldFX1VQREFURSI7Ci0g
ICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OlZJREVPX1JFQ0VJVkVSX0NPTkZJR19FVkVO
VDoKLSAgICAgIHJldHVybiAiVklERU9fUkVDVl9DT05GSUciOwotICAgIGNhc2Ugd2VicnRjOjpy
dGNsb2c6OkV2ZW50OjpWSURFT19TRU5ERVJfQ09ORklHX0VWRU5UOgotICAgICAgcmV0dXJuICJW
SURFT19TRU5EX0NPTkZJRyI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkFVRElP
X1JFQ0VJVkVSX0NPTkZJR19FVkVOVDoKLSAgICAgIHJldHVybiAiQVVESU9fUkVDVl9DT05GSUci
OwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpBVURJT19TRU5ERVJfQ09ORklHX0VW
RU5UOgotICAgICAgcmV0dXJuICJBVURJT19TRU5EX0NPTkZJRyI7Ci0gICAgY2FzZSB3ZWJydGM6
OnJ0Y2xvZzo6RXZlbnQ6OkFVRElPX05FVFdPUktfQURBUFRBVElPTl9FVkVOVDoKLSAgICAgIHJl
dHVybiAiQVVESU9fTkVUV09SS19BREFQVEFUSU9OIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9n
OjpFdmVudDo6QldFX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9FVkVOVDoKLSAgICAgIHJldHVybiAi
QldFX1BST0JFX0NSRUFURUQiOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpCV0Vf
UFJPQkVfUkVTVUxUX0VWRU5UOgotICAgICAgcmV0dXJuICJCV0VfUFJPQkVfUkVTVUxUIjsKLSAg
ICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6QUxSX1NUQVRFX0VWRU5UOgotICAgICAgcmV0
dXJuICJBTFJfU1RBVEVfRVZFTlQiOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpJ
Q0VfQ0FORElEQVRFX1BBSVJfQ09ORklHOgotICAgICAgcmV0dXJuICJJQ0VfQ0FORElEQVRFX1BB
SVJfQ09ORklHIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFU
RV9QQUlSX0VWRU5UOgotICAgICAgcmV0dXJuICJJQ0VfQ0FORElEQVRFX1BBSVJfRVZFTlQiOwot
ICB9Ci0gIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIHJldHVybiAiVU5LTk9XTl9FVkVOVCI7Ci19Ci0K
LX0gIC8vIG5hbWVzcGFjZQotCi0vLyBUaGlzIHV0aWxpdHkgd2lsbCBwcmludCBiYXNpYyBpbmZv
cm1hdGlvbiBhYm91dCBlYWNoIHBhY2tldCB0byBzdGRvdXQuCi0vLyBOb3RlIHRoYXQgcGFyc2Vy
IHdpbGwgYXNzZXJ0IGlmIHRoZSBwcm90b2J1ZiBldmVudCBpcyBtaXNzaW5nIHNvbWUgcmVxdWly
ZWQKLS8vIGZpZWxkcyBhbmQgd2UgYXR0ZW1wdCB0byBhY2Nlc3MgdGhlbS4gV2UgZG9uJ3QgaGFu
ZGxlIHRoaXMgYXQgdGhlIG1vbWVudC4KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10p
IHsKLSAgc3RkOjpzdHJpbmcgcHJvZ3JhbV9uYW1lID0gYXJndlswXTsKLSAgc3RkOjpzdHJpbmcg
dXNhZ2UgPQotICAgICAgIlRvb2wgZm9yIGZpbGUgdXNhZ2Ugc3RhdGlzdGljcyBmcm9tIGFuIFJ0
Y0V2ZW50TG9nLlxuIgotICAgICAgIlJ1biAiICsKLSAgICAgIHByb2dyYW1fbmFtZSArCi0gICAg
ICAiIC0taGVscCBmb3IgdXNhZ2UuXG4iCi0gICAgICAiRXhhbXBsZSB1c2FnZTpcbiIgKwotICAg
ICAgcHJvZ3JhbV9uYW1lICsgIiBpbnB1dC5yZWxcbiI7Ci0gIGlmIChydGM6OkZsYWdMaXN0OjpT
ZXRGbGFnc0Zyb21Db21tYW5kTGluZSgmYXJnYywgYXJndiwgdHJ1ZSkgfHwgRkxBR19oZWxwIHx8
Ci0gICAgICBhcmdjICE9IDIpIHsKLSAgICBzdGQ6OmNvdXQgPDwgdXNhZ2U7Ci0gICAgaWYgKEZM
QUdfaGVscCkgewotICAgICAgcnRjOjpGbGFnTGlzdDo6UHJpbnQobnVsbHB0ciwgZmFsc2UpOwot
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotICB9Ci0gIHN0ZDo6c3RyaW5n
IGZpbGVfbmFtZSA9IGFyZ3ZbMV07Ci0KLSAgc3RkOjp2ZWN0b3I8d2VicnRjOjpydGNsb2c6OkV2
ZW50PiBldmVudHM7Ci0gIGlmICghUGFyc2VFdmVudHMoZmlsZV9uYW1lLCAmZXZlbnRzKSkgewot
ICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gcGFyc2UgZXZlbnQgbG9nLiI7Ci0g
ICAgcmV0dXJuIC0xOwotICB9Ci0KLSAgLy8gR2V0IGZpbGUgc2l6ZQotICBGSUxFKiBmaWxlID0g
Zm9wZW4oZmlsZV9uYW1lLmNfc3RyKCksICJyYiIpOwotICBmc2VlayhmaWxlLCAwTCwgU0VFS19F
TkQpOwotICBpbnQ2NF90IGZpbGVfc2l6ZSA9IGZ0ZWxsKGZpbGUpOwotICBmY2xvc2UoZmlsZSk7
Ci0KLSAgLy8gV2UgYXJlIGRlbGliZXJhdGVseSB1c2luZyBsb3cgbGV2ZWwgcHJvdG9idWYgZnVu
Y3Rpb25zIHRvIGdldCB0aGUgc3RhdHMKLSAgLy8gc2luY2UgdGhlIGNvbnZlbmllbmNlIGZ1bmN0
aW9ucyBpbiB0aGUgcGFyc2VyIHdvdWxkIENIRUNLIHRoYXQgdGhlIGV2ZW50cwotICAvLyBhcmUg
d2VsbCBmb3JtZWQuCi0gIHN0ZDo6bWFwPHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6RXZlbnRUeXBl
LCBTdGF0cz4gc3RhdHM7Ci0gIGludCBtYWxmb3JtZWRfZXZlbnRzID0gMDsKLSAgc2l6ZV90IG1h
bGZvcm1lZF9ldmVudF9zaXplID0gMDsKLSAgc2l6ZV90IGFjY3VtdWxhdGVkX2V2ZW50X3NpemUg
PSAwOwotICBmb3IgKGNvbnN0IHdlYnJ0Yzo6cnRjbG9nOjpFdmVudCYgZXZlbnQgOiBldmVudHMp
IHsKLSAgICBzaXplX3Qgc2VyaWFsaXplZF9zaXplID0gZXZlbnQuQnl0ZVNpemVMb25nKCk7Ci0g
ICAgLy8gV2hlbiB0aGUgZXZlbnQgaXMgd3JpdHRlbiBvbiB0aGUgZGlzaywgaXQgaXMgcGFydCBv
ZiBhbiBFdmVudFN0cmVhbQotICAgIC8vIG9iamVjdC4gVGhlIGV2ZW50IHN0cmVhbSB3aWxsIHBy
ZXBlbmQgYSAxIGJ5dGUgZmllbGQgbnVtYmVyL3dpcmUgdHlwZSwKLSAgICAvLyBhbmQgYSB2YXJp
bnQgZW5jb2RpbmcgKGJhc2UgMTI4KSBvZiB0aGUgZXZlbnQgbGVuZ3RoLgotICAgIHNlcmlhbGl6
ZWRfc2l6ZSA9Ci0gICAgICAgIDEgKyAoMSArIChzZXJpYWxpemVkX3NpemUgPiAxMjcpICsgKHNl
cmlhbGl6ZWRfc2l6ZSA+IDE2MzgzKSkgKwotICAgICAgICBzZXJpYWxpemVkX3NpemU7Ci0KLSAg
ICBpZiAoZXZlbnQuaGFzX3R5cGUoKSAmJiBldmVudC5oYXNfdGltZXN0YW1wX3VzKCkpIHsKLSAg
ICAgIHN0YXRzW2V2ZW50LnR5cGUoKV0uY291bnQrKzsKLSAgICAgIHN0YXRzW2V2ZW50LnR5cGUo
KV0udG90YWxfc2l6ZSArPSBzZXJpYWxpemVkX3NpemU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8v
IFRoZSBldmVudCBpcyBtaXNzaW5nIHRoZSB0eXBlIG9yIHRoZSB0aW1lc3RhbXAgZmllbGQuCi0g
ICAgICBtYWxmb3JtZWRfZXZlbnRzKys7Ci0gICAgICBtYWxmb3JtZWRfZXZlbnRfc2l6ZSArPSBz
ZXJpYWxpemVkX3NpemU7Ci0gICAgfQotICAgIGFjY3VtdWxhdGVkX2V2ZW50X3NpemUgKz0gc2Vy
aWFsaXplZF9zaXplOwotICB9Ci0KLSAgcHJpbnRmKCJUeXBlICAgICAgICAgICAgICAgICAgXHRD
b3VudFx0VG90YWwgc2l6ZVx0QXZlcmFnZSBzaXplXHRQZXJjZW50XG4iKTsKLSAgcHJpbnRmKAot
ICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotICAgICAgIlxuIik7Ci0gIGZvciAoY29uc3QgYXV0byBp
dCA6IHN0YXRzKSB7Ci0gICAgcHJpbnRmKCIlLTIyc1x0JTVkXHQlMTB6dVx0JTEyLjJsZlx0JTcu
MmxmXG4iLAotICAgICAgICAgICBFdmVudFR5cGVUb1N0cmluZyhpdC5maXJzdCkuY19zdHIoKSwg
aXQuc2Vjb25kLmNvdW50LAotICAgICAgICAgICBpdC5zZWNvbmQudG90YWxfc2l6ZSwKLSAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihpdC5zZWNvbmQudG90YWxfc2l6ZSkgLyBpdC5zZWNv
bmQuY291bnQsCi0gICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oaXQuc2Vjb25kLnRvdGFs
X3NpemUpIC8gZmlsZV9zaXplICogMTAwKTsKLSAgfQotICBpZiAobWFsZm9ybWVkX2V2ZW50cyAh
PSAwKSB7Ci0gICAgcHJpbnRmKCIlLTIyc1x0JTVkXHQlMTB6dVx0JTEyLjJsZlx0JTcuMmxmXG4i
LCAiTUFMRk9STUVEIiwKLSAgICAgICAgICAgbWFsZm9ybWVkX2V2ZW50cywgbWFsZm9ybWVkX2V2
ZW50X3NpemUsCi0gICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obWFsZm9ybWVkX2V2ZW50
X3NpemUpIC8gbWFsZm9ybWVkX2V2ZW50cywKLSAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91Ymxl
PihtYWxmb3JtZWRfZXZlbnRfc2l6ZSkgLyBmaWxlX3NpemUgKiAxMDApOwotICB9Ci0gIGlmIChm
aWxlX3NpemUgLSBhY2N1bXVsYXRlZF9ldmVudF9zaXplICE9IDApIHsKLSAgICBwcmludGYoIldB
Uk5JTkc6ICUiIFBSSWQ2NCAiIGJ5dGVzIG5vdCBhY2NvdW50ZWQgZm9yXG4iLAotICAgICAgICAg
ICBmaWxlX3NpemUgLSBhY2N1bXVsYXRlZF9ldmVudF9zaXplKTsKLSAgfQotCi0gIHJldHVybiAw
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cydGV4dC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9y
dGNfZXZlbnRfbG9nMnRleHQuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3Y2I2
ZWNkZjRiNWE1Y2JiZmJkMzg2OTNjNTIwZDJkZGUzODFiNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cydGV4dC5jYwor
KysgL2Rldi9udWxsCkBAIC0xLDg4MSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAx
NyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQot
I2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8aW9tYW5pcD4gIC8vIHNldGZpbGwsIHNl
dHcKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c3RyaW5n
PgotI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBwYWlyCi0KLSNpbmNsdWRlICJjb21tb25fdHlwZXMu
aCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlcl9uZXcuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0
b3JfY29uZmlnLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNr
ZXQvYnllLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
Y29tbW9uX2hlYWRlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
cGFja2V0L2V4dGVuZGVkX3JlcG9ydHMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC9maXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydGNwX3BhY2tldC9uYWNrLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRjcF9wYWNrZXQvcGxpLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQvcmFwaWRfcmVzeW5jX3JlcXVlc3QuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydGNwX3BhY2tldC9yZWNlaXZlcl9yZXBvcnQuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9yZW1iLmgiCi0jaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvc2Rlcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3NlbmRlcl9yZXBvcnQuaCIKLSNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1ibi5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJyLmgiCi0jaW5jbHVkZSAibW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdHJhbnNwb3J0X2ZlZWRiYWNrLmgiCi0j
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3V0aWxpdHkuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0
cmluZ19idWlsZGVyLmgiCi0KLW5hbWVzcGFjZSB7Ci0KLURFRklORV9ib29sKHVua25vd24sIHRy
dWUsICJVc2UgLS1ub3Vua25vd24gdG8gZXhjbHVkZSB1bmtub3duIGV2ZW50cy4iKTsKLURFRklO
RV9ib29sKHN0YXJ0c3RvcCwgdHJ1ZSwgIlVzZSAtLW5vc3RhcnRzdG9wIHRvIGV4Y2x1ZGUgc3Rh
cnQvc3RvcCBldmVudHMuIik7Ci1ERUZJTkVfYm9vbChjb25maWcsIHRydWUsICJVc2UgLS1ub2Nv
bmZpZyB0byBleGNsdWRlIHN0cmVhbSBjb25maWd1cmF0aW9ucy4iKTsKLURFRklORV9ib29sKGJ3
ZSwgdHJ1ZSwgIlVzZSAtLW5vYndlIHRvIGV4Y2x1ZGUgQldFIGV2ZW50cy4iKTsKLURFRklORV9i
b29sKGluY29taW5nLCB0cnVlLCAiVXNlIC0tbm9pbmNvbWluZyB0byBleGNsdWRlIGluY29taW5n
IHBhY2tldHMuIik7Ci1ERUZJTkVfYm9vbChvdXRnb2luZywgdHJ1ZSwgIlVzZSAtLW5vb3V0Z29p
bmcgdG8gZXhjbHVkZSBwYWNrZXRzLiIpOwotLy8gVE9ETyh0ZXJlbGl1cyk6IE5vdGUgdGhhdCB0
aGUgbWVkaWEgdHlwZSBkb2Vzbid0IHdvcmsgd2l0aCBvdXRnb2luZyBwYWNrZXRzLgotREVGSU5F
X2Jvb2woYXVkaW8sIHRydWUsICJVc2UgLS1ub2F1ZGlvIHRvIGV4Y2x1ZGUgYXVkaW8gcGFja2V0
cy4iKTsKLS8vIFRPRE8odGVyZWxpdXMpOiBOb3RlIHRoYXQgdGhlIG1lZGlhIHR5cGUgZG9lc24n
dCB3b3JrIHdpdGggb3V0Z29pbmcgcGFja2V0cy4KLURFRklORV9ib29sKHZpZGVvLCB0cnVlLCAi
VXNlIC0tbm92aWRlbyB0byBleGNsdWRlIHZpZGVvIHBhY2tldHMuIik7Ci0vLyBUT0RPKHRlcmVs
aXVzKTogTm90ZSB0aGF0IHRoZSBtZWRpYSB0eXBlIGRvZXNuJ3Qgd29yayB3aXRoIG91dGdvaW5n
IHBhY2tldHMuCi1ERUZJTkVfYm9vbChkYXRhLCB0cnVlLCAiVXNlIC0tbm9kYXRhIHRvIGV4Y2x1
ZGUgZGF0YSBwYWNrZXRzLiIpOwotREVGSU5FX2Jvb2wocnRwLCB0cnVlLCAiVXNlIC0tbm9ydHAg
dG8gZXhjbHVkZSBSVFAgcGFja2V0cy4iKTsKLURFRklORV9ib29sKHJ0Y3AsIHRydWUsICJVc2Ug
LS1ub3J0Y3AgdG8gZXhjbHVkZSBSVENQIHBhY2tldHMuIik7Ci1ERUZJTkVfYm9vbChwbGF5b3V0
LCB0cnVlLCAiVXNlIC0tbm9wbGF5b3V0IHRvIGV4Y2x1ZGUgYXVkaW8gcGxheW91dCBldmVudHMu
Iik7Ci1ERUZJTkVfYm9vbChhbmEsIHRydWUsICJVc2UgLS1ub2FuYSB0byBleGNsdWRlIEFOQSBl
dmVudHMuIik7Ci1ERUZJTkVfYm9vbChwcm9iZSwgdHJ1ZSwgIlVzZSAtLW5vcHJvYmUgdG8gZXhj
bHVkZSBwcm9iZSBldmVudHMuIik7Ci1ERUZJTkVfYm9vbChpY2UsIHRydWUsICJVc2UgLS1ub2lj
ZSB0byBleGNsdWRlIElDRSBldmVudHMuIik7Ci0KLURFRklORV9ib29sKHByaW50X2Z1bGxfcGFj
a2V0cywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlByaW50IHRoZSBmdWxsIFJU
UCBoZWFkZXJzIGFuZCBSVENQIHBhY2tldHMgaW4gaGV4LiIpOwotCi0vLyBUT0RPKHRlcmVsaXVz
KTogQWxsb3cgYSBsaXN0IG9mIFNTUkNzLgotREVGSU5FX3N0cmluZyhzc3JjLAotICAgICAgICAg
ICAgICAiIiwKLSAgICAgICAgICAgICAgIlByaW50IG9ubHkgcGFja2V0cyB3aXRoIHRoaXMgU1NS
QyAoZGVjaW1hbCBvciBoZXgsIHRoZSBsYXR0ZXIgIgotICAgICAgICAgICAgICAic3RhcnRpbmcg
d2l0aCAweCkuIik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3Nh
Z2UuIik7Ci0KLXVzaW5nIE1lZGlhVHlwZSA9IHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6
Ok1lZGlhVHlwZTsKLQotc3RhdGljIHVpbnQzMl90IGZpbHRlcmVkX3NzcmMgPSAwOwotCi0vLyBQ
YXJzZXMgdGhlIGlucHV0IHN0cmluZyBmb3IgYSB2YWxpZCBTU1JDLiBJZiBhIHZhbGlkIFNTUkMg
aXMgZm91bmQsIGl0IGlzCi0vLyB3cml0dGVuIHRvIHRoZSBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxl
IHxmaWx0ZXJlZF9zc3JjfCwgYW5kIHRydWUgaXMgcmV0dXJuZWQuCi0vLyBPdGhlcndpc2UsIGZh
bHNlIGlzIHJldHVybmVkLgotLy8gVGhlIGVtcHR5IHN0cmluZyBtdXN0IGJlIHZhbGlkYXRlZCBh
cyB0cnVlLCBiZWNhdXNlIGl0IGlzIHRoZSBkZWZhdWx0IHZhbHVlCi0vLyBvZiB0aGUgY29tbWFu
ZC1saW5lIGZsYWcuIEluIHRoaXMgY2FzZSwgbm8gdmFsdWUgaXMgd3JpdHRlbiB0byB0aGUgb3V0
cHV0Ci0vLyB2YXJpYWJsZS4KLWJvb2wgUGFyc2VTc3JjKHN0ZDo6c3RyaW5nIHN0cikgewotICAv
LyBJZiB0aGUgaW5wdXQgc3RyaW5nIHN0YXJ0cyB3aXRoIDB4IG9yIDBYIGl0IGluZGljYXRlcyBh
IGhleGFkZWNpbWFsIG51bWJlci4KLSAgYXV0byByZWFkX21vZGUgPSBzdGQ6OmRlYzsKLSAgaWYg
KHN0ci5zaXplKCkgPiAyICYmCi0gICAgICAoc3RyLnN1YnN0cigwLCAyKSA9PSAiMHgiIHx8IHN0
ci5zdWJzdHIoMCwgMikgPT0gIjBYIikpIHsKLSAgICByZWFkX21vZGUgPSBzdGQ6OmhleDsKLSAg
ICBzdHIgPSBzdHIuc3Vic3RyKDIpOwotICB9Ci0gIHN0ZDo6c3RyaW5nc3RyZWFtIHNzKHN0cik7
Ci0gIHNzID4+IHJlYWRfbW9kZSA+PiBmaWx0ZXJlZF9zc3JjOwotICByZXR1cm4gc3RyLmVtcHR5
KCkgfHwgKCFzcy5mYWlsKCkgJiYgc3MuZW9mKCkpOwotfQotCi1ib29sIEV4Y2x1ZGVQYWNrZXQo
d2VicnRjOjpQYWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uLAotICAgICAgICAgICAgICAgICAgIE1l
ZGlhVHlwZSBtZWRpYV90eXBlLAotICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHBhY2tldF9z
c3JjKSB7Ci0gIGlmICghRkxBR19vdXRnb2luZyAmJiBkaXJlY3Rpb24gPT0gd2VicnRjOjprT3V0
Z29pbmdQYWNrZXQpCi0gICAgcmV0dXJuIHRydWU7Ci0gIGlmICghRkxBR19pbmNvbWluZyAmJiBk
aXJlY3Rpb24gPT0gd2VicnRjOjprSW5jb21pbmdQYWNrZXQpCi0gICAgcmV0dXJuIHRydWU7Ci0g
IGlmICghRkxBR19hdWRpbyAmJiBtZWRpYV90eXBlID09IE1lZGlhVHlwZTo6QVVESU8pCi0gICAg
cmV0dXJuIHRydWU7Ci0gIGlmICghRkxBR192aWRlbyAmJiBtZWRpYV90eXBlID09IE1lZGlhVHlw
ZTo6VklERU8pCi0gICAgcmV0dXJuIHRydWU7Ci0gIGlmICghRkxBR19kYXRhICYmIG1lZGlhX3R5
cGUgPT0gTWVkaWFUeXBlOjpEQVRBKQotICAgIHJldHVybiB0cnVlOwotICBpZiAoc3RybGVuKEZM
QUdfc3NyYykgPiAwICYmIHBhY2tldF9zc3JjICE9IGZpbHRlcmVkX3NzcmMpCi0gICAgcmV0dXJu
IHRydWU7Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotY29uc3QgY2hhciogU3RyZWFtSW5mbyh3ZWJy
dGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIE1l
ZGlhVHlwZSBtZWRpYV90eXBlKSB7Ci0gIGlmIChkaXJlY3Rpb24gPT0gd2VicnRjOjprT3V0Z29p
bmdQYWNrZXQpIHsKLSAgICBpZiAobWVkaWFfdHlwZSA9PSBNZWRpYVR5cGU6OkFVRElPKQotICAg
ICAgcmV0dXJuICIob3V0LGF1ZGlvKSI7Ci0gICAgZWxzZSBpZiAobWVkaWFfdHlwZSA9PSBNZWRp
YVR5cGU6OlZJREVPKQotICAgICAgcmV0dXJuICIob3V0LHZpZGVvKSI7Ci0gICAgZWxzZSBpZiAo
bWVkaWFfdHlwZSA9PSBNZWRpYVR5cGU6OkRBVEEpCi0gICAgICByZXR1cm4gIihvdXQsZGF0YSki
OwotICAgIGVsc2UKLSAgICAgIHJldHVybiAiKG91dCkiOwotICB9Ci0gIGlmIChkaXJlY3Rpb24g
PT0gd2VicnRjOjprSW5jb21pbmdQYWNrZXQpIHsKLSAgICBpZiAobWVkaWFfdHlwZSA9PSBNZWRp
YVR5cGU6OkFVRElPKQotICAgICAgcmV0dXJuICIoaW4sYXVkaW8pIjsKLSAgICBlbHNlIGlmICht
ZWRpYV90eXBlID09IE1lZGlhVHlwZTo6VklERU8pCi0gICAgICByZXR1cm4gIihpbix2aWRlbyki
OwotICAgIGVsc2UgaWYgKG1lZGlhX3R5cGUgPT0gTWVkaWFUeXBlOjpEQVRBKQotICAgICAgcmV0
dXJuICIoaW4sZGF0YSkiOwotICAgIGVsc2UKLSAgICAgIHJldHVybiAiKGluKSI7Ci0gIH0KLSAg
cmV0dXJuICIodW5rbm93bikiOwotfQotCi0vLyBSZXR1cm4gZGVmYXVsdCB2YWx1ZXMgZm9yIGhl
YWRlciBleHRlbnNpb25zLCB0byB1c2Ugb24gc3RyZWFtcyB3aXRob3V0IHN0b3JlZAotLy8gbWFw
cGluZyBkYXRhLiBDdXJyZW50bHkgdGhpcyBvbmx5IGFwcGxpZXMgdG8gYXVkaW8gc3RyZWFtcywg
c2luY2UgdGhlIG1hcHBpbmcKLS8vIGlzIG5vdCBzdG9yZWQgaW4gdGhlIGV2ZW50IGxvZy4KLS8v
IFRPRE8oaXZvYyk6IFJlbW92ZSB0aGlzIG9uY2UgdGhpcyBtYXBwaW5nIGlzIHN0b3JlZCBpbiB0
aGUgZXZlbnQgbG9nIGZvcgotLy8gICAgICAgICAgICAgYXVkaW8gc3RyZWFtcy4gVHJhY2tpbmcg
YnVnOiB3ZWJydGM6NjM5OQotd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAgR2V0RGVmYXVs
dEhlYWRlckV4dGVuc2lvbk1hcCgpIHsKLSAgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAg
ZGVmYXVsdF9tYXA7Ci0gIGRlZmF1bHRfbWFwLlJlZ2lzdGVyPHdlYnJ0Yzo6QXVkaW9MZXZlbD4o
Ci0gICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a0F1ZGlvTGV2ZWxEZWZhdWx0SWQpOwotICBk
ZWZhdWx0X21hcC5SZWdpc3Rlcjx3ZWJydGM6OlRyYW5zbWlzc2lvbk9mZnNldD4oCi0gICAgICB3
ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a1RpbWVzdGFtcE9mZnNldERlZmF1bHRJZCk7Ci0gIGRlZmF1
bHRfbWFwLlJlZ2lzdGVyPHdlYnJ0Yzo6QWJzb2x1dGVTZW5kVGltZT4oCi0gICAgICB3ZWJydGM6
OlJ0cEV4dGVuc2lvbjo6a0Fic1NlbmRUaW1lRGVmYXVsdElkKTsKLSAgZGVmYXVsdF9tYXAuUmVn
aXN0ZXI8d2VicnRjOjpWaWRlb09yaWVudGF0aW9uPigKLSAgICAgIHdlYnJ0Yzo6UnRwRXh0ZW5z
aW9uOjprVmlkZW9Sb3RhdGlvbkRlZmF1bHRJZCk7Ci0gIGRlZmF1bHRfbWFwLlJlZ2lzdGVyPHdl
YnJ0Yzo6VmlkZW9Db250ZW50VHlwZUV4dGVuc2lvbj4oCi0gICAgICB3ZWJydGM6OlJ0cEV4dGVu
c2lvbjo6a1ZpZGVvQ29udGVudFR5cGVEZWZhdWx0SWQpOwotICBkZWZhdWx0X21hcC5SZWdpc3Rl
cjx3ZWJydGM6OlZpZGVvVGltaW5nRXh0ZW5zaW9uPigKLSAgICAgIHdlYnJ0Yzo6UnRwRXh0ZW5z
aW9uOjprVmlkZW9UaW1pbmdEZWZhdWx0SWQpOwotICBkZWZhdWx0X21hcC5SZWdpc3Rlcjx3ZWJy
dGM6OkZyYW1lTWFya2luZ0V4dGVuc2lvbj4oCi0gICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6
a0ZyYW1lTWFya2luZ0RlZmF1bHRJZCk7Ci0gIGRlZmF1bHRfbWFwLlJlZ2lzdGVyPHdlYnJ0Yzo6
VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI+KAotICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb246OmtU
cmFuc3BvcnRTZXF1ZW5jZU51bWJlckRlZmF1bHRJZCk7Ci0gIGRlZmF1bHRfbWFwLlJlZ2lzdGVy
PHdlYnJ0Yzo6UGxheW91dERlbGF5TGltaXRzPigKLSAgICAgIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9u
OjprUGxheW91dERlbGF5RGVmYXVsdElkKTsKLSAgcmV0dXJuIGRlZmF1bHRfbWFwOwotfQotCi12
b2lkIFByaW50U2VuZGVyUmVwb3J0KGNvbnN0IHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXcm
IHBhcnNlZF9zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6cnRj
cDo6Q29tbW9uSGVhZGVyJiBydGNwX2Jsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICB1aW50
NjRfdCBsb2dfdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlBhY2tl
dERpcmVjdGlvbiBkaXJlY3Rpb24pIHsKLSAgd2VicnRjOjpydGNwOjpTZW5kZXJSZXBvcnQgc3I7
Ci0gIGlmICghc3IuUGFyc2UocnRjcF9ibG9jaykpCi0gICAgcmV0dXJuOwotICBNZWRpYVR5cGUg
bWVkaWFfdHlwZSA9Ci0gICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZShzci5zZW5kZXJf
c3NyYygpLCBkaXJlY3Rpb24pOwotICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlh
X3R5cGUsIHNyLnNlbmRlcl9zc3JjKCkpKQotICAgIHJldHVybjsKLSAgc3RkOjpjb3V0IDw8IGxv
Z190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgPDwgIlJUQ1BfU1IiIDw8IFN0cmVhbUlu
Zm8oZGlyZWN0aW9uLCBtZWRpYV90eXBlKQotICAgICAgICAgICAgPDwgIlx0c3NyYz0iIDw8IHNy
LnNlbmRlcl9zc3JjKCkKLSAgICAgICAgICAgIDw8ICJcdHRpbWVzdGFtcD0iIDw8IHNyLnJ0cF90
aW1lc3RhbXAoKSA8PCBzdGQ6OmVuZGw7Ci19Ci0KLXZvaWQgUHJpbnRSZWNlaXZlclJlcG9ydChj
b25zdCB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3JiBwYXJzZWRfc3RyZWFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6cnRjcDo6Q29tbW9uSGVhZGVyJiBydGNw
X2Jsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxvZ190aW1lc3RhbXAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpQYWNrZXREaXJlY3Rpb24gZGlyZWN0
aW9uKSB7Ci0gIHdlYnJ0Yzo6cnRjcDo6UmVjZWl2ZXJSZXBvcnQgcnI7Ci0gIGlmICghcnIuUGFy
c2UocnRjcF9ibG9jaykpCi0gICAgcmV0dXJuOwotICBNZWRpYVR5cGUgbWVkaWFfdHlwZSA9Ci0g
ICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZShyci5zZW5kZXJfc3NyYygpLCBkaXJlY3Rp
b24pOwotICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIHJyLnNlbmRl
cl9zc3JjKCkpKQotICAgIHJldHVybjsKLSAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwg
Ilx0IgotICAgICAgICAgICAgPDwgIlJUQ1BfUlIiIDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBt
ZWRpYV90eXBlKQotICAgICAgICAgICAgPDwgIlx0c3NyYz0iIDw8IHJyLnNlbmRlcl9zc3JjKCkg
PDwgc3RkOjplbmRsOwotfQotCi12b2lkIFByaW50WHIoY29uc3Qgd2VicnRjOjpQYXJzZWRSdGNF
dmVudExvZ05ldyYgcGFyc2VkX3N0cmVhbSwKLSAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OnJ0
Y3A6OkNvbW1vbkhlYWRlciYgcnRjcF9ibG9jaywKLSAgICAgICAgICAgICB1aW50NjRfdCBsb2df
dGltZXN0YW1wLAotICAgICAgICAgICAgIHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlv
bikgewotICB3ZWJydGM6OnJ0Y3A6OkV4dGVuZGVkUmVwb3J0cyB4cjsKLSAgaWYgKCF4ci5QYXJz
ZShydGNwX2Jsb2NrKSkKLSAgICByZXR1cm47Ci0gIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAg
ICAgIHBhcnNlZF9zdHJlYW0uR2V0TWVkaWFUeXBlKHhyLnNlbmRlcl9zc3JjKCksIGRpcmVjdGlv
bik7Ci0gIGlmIChFeGNsdWRlUGFja2V0KGRpcmVjdGlvbiwgbWVkaWFfdHlwZSwgeHIuc2VuZGVy
X3NzcmMoKSkpCi0gICAgcmV0dXJuOwotICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAi
XHQiCi0gICAgICAgICAgICA8PCAiUlRDUF9YUiIgPDwgU3RyZWFtSW5mbyhkaXJlY3Rpb24sIG1l
ZGlhX3R5cGUpCi0gICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgeHIuc2VuZGVyX3NzcmMoKSA8
PCBzdGQ6OmVuZGw7Ci19Ci0KLXZvaWQgUHJpbnRTZGVzKGNvbnN0IHdlYnJ0Yzo6cnRjcDo6Q29t
bW9uSGVhZGVyJiBydGNwX2Jsb2NrLAotICAgICAgICAgICAgICAgdWludDY0X3QgbG9nX3RpbWVz
dGFtcCwKLSAgICAgICAgICAgICAgIHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbikg
ewotICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICA8PCAi
UlRDUF9TREVTIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgTWVkaWFUeXBlOjpBTlkpCi0gICAg
ICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gIFJUQ19OT1RSRUFDSEVEKCkgPDwgIlNERVMgc2hvdWxk
IGhhdmUgYmVlbiByZWRhY3RlZCB3aGVuIHdyaXRpbmcgdGhlIGxvZyI7Ci19Ci0KLXZvaWQgUHJp
bnRCeWUoY29uc3Qgd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldyYgcGFyc2VkX3N0cmVhbSwK
LSAgICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpydGNwOjpDb21tb25IZWFkZXImIHJ0Y3BfYmxv
Y2ssCi0gICAgICAgICAgICAgIHVpbnQ2NF90IGxvZ190aW1lc3RhbXAsCi0gICAgICAgICAgICAg
IHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbikgewotICB3ZWJydGM6OnJ0Y3A6OkJ5
ZSBieWU7Ci0gIGlmICghYnllLlBhcnNlKHJ0Y3BfYmxvY2spKQotICAgIHJldHVybjsKLSAgTWVk
aWFUeXBlIG1lZGlhX3R5cGUgPQotICAgICAgcGFyc2VkX3N0cmVhbS5HZXRNZWRpYVR5cGUoYnll
LnNlbmRlcl9zc3JjKCksIGRpcmVjdGlvbik7Ci0gIGlmIChFeGNsdWRlUGFja2V0KGRpcmVjdGlv
biwgbWVkaWFfdHlwZSwgYnllLnNlbmRlcl9zc3JjKCkpKQotICAgIHJldHVybjsKLSAgc3RkOjpj
b3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgPDwgIlJUQ1BfQllFIiA8
PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAgICAgIDw8ICJcdHNz
cmM9IiA8PCBieWUuc2VuZGVyX3NzcmMoKSA8PCBzdGQ6OmVuZGw7Ci19Ci0KLXZvaWQgUHJpbnRS
dHBGZWVkYmFjayhjb25zdCB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3JiBwYXJzZWRfc3Ry
ZWFtLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6cnRjcDo6Q29tbW9uSGVh
ZGVyJiBydGNwX2Jsb2NrLAotICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxvZ190aW1l
c3RhbXAsCi0gICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpQYWNrZXREaXJlY3Rpb24gZGly
ZWN0aW9uKSB7Ci0gIHN3aXRjaCAocnRjcF9ibG9jay5mbXQoKSkgewotICAgIGNhc2Ugd2VicnRj
OjpydGNwOjpOYWNrOjprRmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNw
OjpOYWNrIG5hY2s7Ci0gICAgICBpZiAoIW5hY2suUGFyc2UocnRjcF9ibG9jaykpCi0gICAgICAg
IHJldHVybjsKLSAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgICAgICBwYXJzZWRf
c3RyZWFtLkdldE1lZGlhVHlwZShuYWNrLnNlbmRlcl9zc3JjKCksIGRpcmVjdGlvbik7Ci0gICAg
ICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIG5hY2suc2VuZGVyX3Nz
cmMoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICAgIHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0YW1w
IDw8ICJcdCIKLSAgICAgICAgICAgICAgICA8PCAiUlRDUF9OQUNLIiA8PCBTdHJlYW1JbmZvKGRp
cmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgbmFj
ay5zZW5kZXJfc3NyYygpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBj
YXNlIHdlYnJ0Yzo6cnRjcDo6VG1tYnI6OmtGZWVkYmFja01lc3NhZ2VUeXBlOiB7Ci0gICAgICB3
ZWJydGM6OnJ0Y3A6OlRtbWJyIHRtbWJyOwotICAgICAgaWYgKCF0bW1ici5QYXJzZShydGNwX2Js
b2NrKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgTWVkaWFUeXBlIG1lZGlhX3R5cGUgPQotICAg
ICAgICAgIHBhcnNlZF9zdHJlYW0uR2V0TWVkaWFUeXBlKHRtbWJyLnNlbmRlcl9zc3JjKCksIGRp
cmVjdGlvbik7Ci0gICAgICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUs
IHRtbWJyLnNlbmRlcl9zc3JjKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgICBzdGQ6OmNvdXQg
PDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICAgICAgPDwgIlJUQ1BfVE1NQlIi
IDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBtZWRpYV90eXBlKQotICAgICAgICAgICAgICAgIDw8
ICJcdHNzcmM9IiA8PCB0bW1ici5zZW5kZXJfc3NyYygpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6VG1tYm46OmtGZWVkYmFja01lc3Nh
Z2VUeXBlOiB7Ci0gICAgICB3ZWJydGM6OnJ0Y3A6OlRtbWJuIHRtbWJuOwotICAgICAgaWYgKCF0
bW1ibi5QYXJzZShydGNwX2Jsb2NrKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgTWVkaWFUeXBl
IG1lZGlhX3R5cGUgPQotICAgICAgICAgIHBhcnNlZF9zdHJlYW0uR2V0TWVkaWFUeXBlKHRtbWJu
LnNlbmRlcl9zc3JjKCksIGRpcmVjdGlvbik7Ci0gICAgICBpZiAoRXhjbHVkZVBhY2tldChkaXJl
Y3Rpb24sIG1lZGlhX3R5cGUsIHRtbWJuLnNlbmRlcl9zc3JjKCkpKQotICAgICAgICByZXR1cm47
Ci0gICAgICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICAg
ICAgPDwgIlJUQ1BfVE1NQk4iIDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBtZWRpYV90eXBlKQot
ICAgICAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCB0bW1ibi5zZW5kZXJfc3NyYygpIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6UmFw
aWRSZXN5bmNSZXF1ZXN0OjprRmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpy
dGNwOjpSYXBpZFJlc3luY1JlcXVlc3Qgc3JfcmVxOwotICAgICAgaWYgKCFzcl9yZXEuUGFyc2Uo
cnRjcF9ibG9jaykpCi0gICAgICAgIHJldHVybjsKLSAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBl
ID0KLSAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZShzcl9yZXEuc2VuZGVyX3Nz
cmMoKSwgZGlyZWN0aW9uKTsKLSAgICAgIGlmIChFeGNsdWRlUGFja2V0KGRpcmVjdGlvbiwgbWVk
aWFfdHlwZSwgc3JfcmVxLnNlbmRlcl9zc3JjKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgICBz
dGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICAgICAgPDwgIlJU
Q1BfU1JSRVEiIDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBtZWRpYV90eXBlKQotICAgICAgICAg
ICAgICAgIDw8ICJcdHNzcmM9IiA8PCBzcl9yZXEuc2VuZGVyX3NzcmMoKSA8PCBzdGQ6OmVuZGw7
Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OlRyYW5zcG9ydEZl
ZWRiYWNrOjprRmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNwOjpUcmFu
c3BvcnRGZWVkYmFjayB0cmFuc3BvcnRfZmVlZGJhY2s7Ci0gICAgICBpZiAoIXRyYW5zcG9ydF9m
ZWVkYmFjay5QYXJzZShydGNwX2Jsb2NrKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgTWVkaWFU
eXBlIG1lZGlhX3R5cGUgPSBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZSgKLSAgICAgICAgICB0
cmFuc3BvcnRfZmVlZGJhY2suc2VuZGVyX3NzcmMoKSwgZGlyZWN0aW9uKTsKLSAgICAgIGlmIChF
eGNsdWRlUGFja2V0KGRpcmVjdGlvbiwgbWVkaWFfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRyYW5zcG9ydF9mZWVkYmFjay5zZW5kZXJfc3NyYygpKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgICAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgICAg
IDw8ICJSVENQX05FV0ZCIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAg
ICAgICAgICAgICAgICA8PCAiXHRzZW5kZXJfc3NyYz0iIDw8IHRyYW5zcG9ydF9mZWVkYmFjay5z
ZW5kZXJfc3NyYygpCi0gICAgICAgICAgICAgICAgPDwgIlx0bWVkaWFfc3NyYz0iIDw8IHRyYW5z
cG9ydF9mZWVkYmFjay5tZWRpYV9zc3JjKCkKLSAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7
Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgIHN0ZDo6Y291dCA8PCBs
b2dfdGltZXN0YW1wIDw8ICJcdCIKLSAgICAgICAgICAgICAgICA8PCAiUlRDUF9SVFBGQihVTktO
T1dOKSIgPDwgc3RkOjplbmRsOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotdm9pZCBQcmludFBz
RmVlZGJhY2soY29uc3Qgd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldyYgcGFyc2VkX3N0cmVh
bSwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6cnRjcDo6Q29tbW9uSGVhZGVy
JiBydGNwX2Jsb2NrLAotICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbG9nX3RpbWVzdGFt
cCwKLSAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlv
bikgewotICBzd2l0Y2ggKHJ0Y3BfYmxvY2suZm10KCkpIHsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRj
cDo6UGxpOjprRmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNwOjpQbGkg
cGxpOwotICAgICAgaWYgKCFwbGkuUGFyc2UocnRjcF9ibG9jaykpCi0gICAgICAgIHJldHVybjsK
LSAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdl
dE1lZGlhVHlwZShwbGkuc2VuZGVyX3NzcmMoKSwgZGlyZWN0aW9uKTsKLSAgICAgIGlmIChFeGNs
dWRlUGFja2V0KGRpcmVjdGlvbiwgbWVkaWFfdHlwZSwgcGxpLnNlbmRlcl9zc3JjKCkpKQotICAg
ICAgICByZXR1cm47Ci0gICAgICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0g
ICAgICAgICAgICAgICAgPDwgIlJUQ1BfUExJIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVk
aWFfdHlwZSkKLSAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgcGxpLnNlbmRlcl9zc3Jj
KCkgPDwgc3RkOjplbmRsOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ugd2VicnRjOjpy
dGNwOjpGaXI6OmtGZWVkYmFja01lc3NhZ2VUeXBlOiB7Ci0gICAgICB3ZWJydGM6OnJ0Y3A6OkZp
ciBmaXI7Ci0gICAgICBpZiAoIWZpci5QYXJzZShydGNwX2Jsb2NrKSkKLSAgICAgICAgcmV0dXJu
OwotICAgICAgTWVkaWFUeXBlIG1lZGlhX3R5cGUgPQotICAgICAgICAgIHBhcnNlZF9zdHJlYW0u
R2V0TWVkaWFUeXBlKGZpci5zZW5kZXJfc3NyYygpLCBkaXJlY3Rpb24pOwotICAgICAgaWYgKEV4
Y2x1ZGVQYWNrZXQoZGlyZWN0aW9uLCBtZWRpYV90eXBlLCBmaXIuc2VuZGVyX3NzcmMoKSkpCi0g
ICAgICAgIHJldHVybjsKLSAgICAgIHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0YW1wIDw8ICJcdCIK
LSAgICAgICAgICAgICAgICA8PCAiUlRDUF9GSVIiIDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBt
ZWRpYV90eXBlKQotICAgICAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCBmaXIuc2VuZGVyX3Nz
cmMoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSB3ZWJydGM6
OnJ0Y3A6OlJlbWI6OmtGZWVkYmFja01lc3NhZ2VUeXBlOiB7Ci0gICAgICB3ZWJydGM6OnJ0Y3A6
OlJlbWIgcmVtYjsKLSAgICAgIGlmICghcmVtYi5QYXJzZShydGNwX2Jsb2NrKSkKLSAgICAgICAg
cmV0dXJuOwotICAgICAgTWVkaWFUeXBlIG1lZGlhX3R5cGUgPQotICAgICAgICAgIHBhcnNlZF9z
dHJlYW0uR2V0TWVkaWFUeXBlKHJlbWIuc2VuZGVyX3NzcmMoKSwgZGlyZWN0aW9uKTsKLSAgICAg
IGlmIChFeGNsdWRlUGFja2V0KGRpcmVjdGlvbiwgbWVkaWFfdHlwZSwgcmVtYi5zZW5kZXJfc3Ny
YygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAg
PDwgIlx0IgotICAgICAgICAgICAgICAgIDw8ICJSVENQX1JFTUIiIDw8IFN0cmVhbUluZm8oZGly
ZWN0aW9uLCBtZWRpYV90eXBlKQotICAgICAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCByZW1i
LnNlbmRlcl9zc3JjKCkgPDwgc3RkOjplbmRsOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRl
ZmF1bHQ6Ci0gICAgICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAg
ICAgICAgICAgPDwgIlJUQ1BfUFNGQihVTktOT1dOKSIgPDwgc3RkOjplbmRsOwotICAgICAgYnJl
YWs7Ci0gIH0KLX0KLQotZW51bSBjbGFzcyBJbnB1dFNvdXJjZSB7Ci0gIFNURElOLAotICBGSUxF
LAotfTsKLQotdm9pZCBQcmludFVzYWdlR3VpZGUoY29uc3Qgc3RkOjpzdHJpbmcmIHByb2dyYW1f
bmFtZSkgewotICBzdGQ6OmNvdXQKLSAgICAgIDw8ICJUb29sIGZvciBwcmludGluZyBwYWNrZXQg
aW5mb3JtYXRpb24gZnJvbSBhbiBSdGNFdmVudExvZyBhcyB0ZXh0LlxuIgotICAgICAgPDwgIiog
UnVuICIgKyBwcm9ncmFtX25hbWUgKyAiIC0taGVscCBmb3IgdXNhZ2UuXG4iCi0gICAgICA8PCAi
KiBFeGFtcGxlIHVzYWdlIGZvciBwYXJzaW5nIGEgZmlsZTpcbiIKLSAgICAgIDw8ICIgICIgPDwg
cHJvZ3JhbV9uYW1lICsgIiBpbnB1dC5yZWxcbiIKLSAgICAgIDw8ICIqIEV4YW1wbGUgdXNhZ2Ug
Zm9yIHBhcnNpbmcgdGhlIHN0ZGluOlxuIgotICAgICAgPDwgIiAgIiA8PCBwcm9ncmFtX25hbWUg
KyAiXG4iOwotfQotCi0vLyBUT0RPKGVsYWRhbG9uKTogUmV0dXJuIGEgc3RyZWFtIG9yIGZpbGUg
ZGVzY3JpcHRvciBpbnN0ZWFkLgotSW5wdXRTb3VyY2UgUGFyc2VDb21tYW5kTGluZUZsYWdzKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKLSAgaWYgKHJ0Yzo6RmxhZ0xpc3Q6OlNldEZsYWdzRnJv
bUNvbW1hbmRMaW5lKCZhcmdjLCBhcmd2LCB0cnVlKSAhPSAwKSB7Ci0gICAgUHJpbnRVc2FnZUd1
aWRlKGFyZ3ZbMF0pOwotICAgIGV4aXQoLTEpOwotICB9Ci0KLSAgaWYgKEZMQUdfaGVscCkgewot
ICAgIFByaW50VXNhZ2VHdWlkZShhcmd2WzBdKTsKLSAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRs
OwotICAgIHJ0Yzo6RmxhZ0xpc3Q6OlByaW50KG51bGxwdHIsIGZhbHNlKTsKLSAgICBleGl0KDAp
OwotICB9Ci0KLSAgc3dpdGNoIChhcmdjKSB7Ci0gICAgY2FzZSAxOgotICAgICAgcmV0dXJuIElu
cHV0U291cmNlOjpTVERJTjsKLSAgICBjYXNlIDI6Ci0gICAgICByZXR1cm4gSW5wdXRTb3VyY2U6
OkZJTEU7Ci0gICAgZGVmYXVsdDoKLSAgICAgIFByaW50VXNhZ2VHdWlkZShhcmd2WzBdKTsKLSAg
ICAgIGV4aXQoLTEpOwotICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi0vLyBUaGlzIHV0aWxp
dHkgd2lsbCBwcmludCBiYXNpYyBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIHBhY2tldCB0byBzdGRv
dXQuCi0vLyBOb3RlIHRoYXQgcGFyc2VyIHdpbGwgYXNzZXJ0IGlmIHRoZSBwcm90b2J1ZiBldmVu
dCBpcyBtaXNzaW5nIHNvbWUgcmVxdWlyZWQKLS8vIGZpZWxkcyBhbmQgd2UgYXR0ZW1wdCB0byBh
Y2Nlc3MgdGhlbS4gV2UgZG9uJ3QgaGFuZGxlIHRoaXMgYXQgdGhlIG1vbWVudC4KLWludCBtYWlu
KGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKLSAgSW5wdXRTb3VyY2UgaW5wdXRfc291cmNlID0g
UGFyc2VDb21tYW5kTGluZUZsYWdzKGFyZ2MsIGFyZ3YpOwotCi0gIGlmIChzdHJsZW4oRkxBR19z
c3JjKSA+IDApCi0gICAgUlRDX0NIRUNLKFBhcnNlU3NyYyhGTEFHX3NzcmMpKSA8PCAiRmxhZyB2
ZXJpZmljYXRpb24gaGFzIGZhaWxlZC4iOwotCi0gIHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9u
TWFwIGRlZmF1bHRfbWFwID0gR2V0RGVmYXVsdEhlYWRlckV4dGVuc2lvbk1hcCgpOwotICBib29s
IGRlZmF1bHRfbWFwX3VzZWQgPSBmYWxzZTsKLQotICB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9n
TmV3IHBhcnNlZF9zdHJlYW07Ci0KLSAgc3dpdGNoIChpbnB1dF9zb3VyY2UpIHsKLSAgICBjYXNl
IElucHV0U291cmNlOjpTVERJTjogewotICAgICAgaWYgKCFwYXJzZWRfc3RyZWFtLlBhcnNlU3Ry
ZWFtKHN0ZDo6Y2luKSkgewotICAgICAgICBzdGQ6OmNlcnIgPDwgIkVycm9yIHdoaWxlIHBhcnNp
bmcgaW5wdXQgc3RyZWFtLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAg
ICB9Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBJbnB1dFNvdXJjZTo6RklMRTogewot
ICAgICAgaWYgKCFwYXJzZWRfc3RyZWFtLlBhcnNlRmlsZShhcmd2WzFdKSkgewotICAgICAgICBz
dGQ6OmNlcnIgPDwgIkVycm9yIHdoaWxlIHBhcnNpbmcgaW5wdXQgZmlsZTogIiA8PCBhcmd2WzFd
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICAgfQotICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIGRlZmF1bHQ6IHsgUlRDX05PVFJFQUNIRUQoKSA8PCAiVW5zdXBwb3J0ZWQg
aW5wdXQgc291cmNlLiI7IH0KLSAgfQotCi0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2Vk
X3N0cmVhbS5HZXROdW1iZXJPZkV2ZW50cygpOyBpKyspIHsKLSAgICBib29sIGV2ZW50X3JlY29n
bml6ZWQgPSBmYWxzZTsKLSAgICBzd2l0Y2ggKHBhcnNlZF9zdHJlYW0uR2V0RXZlbnRUeXBlKGkp
KSB7Ci0gICAgICBjYXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6
VU5LTk9XTl9FVkVOVDogewotICAgICAgICBpZiAoRkxBR191bmtub3duKSB7Ci0gICAgICAgICAg
c3RkOjpjb3V0IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdFVOS05PV05f
RVZFTlQiCi0gICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAg
ICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0K
LSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpMT0df
U1RBUlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfc3RhcnRzdG9wKSB7Ci0gICAgICAgICAgc3RkOjpj
b3V0IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdExPR19TVEFSVCIKLSAg
ICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50
X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2Fz
ZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkxPR19FTkQ6IHsKLSAg
ICAgICAgaWYgKEZMQUdfc3RhcnRzdG9wKSB7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IHBhcnNl
ZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdExPR19FTkQiCi0gICAgICAgICAgICAgICAg
ICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJz
ZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpSVFBfRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZM
QUdfcnRwKSB7Ci0gICAgICAgICAgc2l6ZV90IGhlYWRlcl9sZW5ndGg7Ci0gICAgICAgICAgc2l6
ZV90IHRvdGFsX2xlbmd0aDsKLSAgICAgICAgICB1aW50OF90IGhlYWRlcltJUF9QQUNLRVRfU0la
RV07Ci0gICAgICAgICAgd2VicnRjOjpQYWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uOwotICAgICAg
ICAgIGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKiBleHRlbnNpb25fbWFwID0K
LSAgICAgICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRSdHBIZWFkZXIoaSwgJmRpcmVjdGlvbiwg
aGVhZGVyLCAmaGVhZGVyX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnRvdGFsX2xlbmd0aCwgbnVsbHB0cik7Ci0KLSAgICAgICAgICBpZiAoZXh0ZW5z
aW9uX21hcCA9PSBudWxscHRyKSB7Ci0gICAgICAgICAgICBleHRlbnNpb25fbWFwID0gJmRlZmF1
bHRfbWFwOwotICAgICAgICAgICAgaWYgKCFkZWZhdWx0X21hcF91c2VkKQotICAgICAgICAgICAg
ICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJVc2luZyBkZWZhdWx0IGhlYWRlciBleHRlbnNpb24g
bWFwIjsKLSAgICAgICAgICAgIGRlZmF1bHRfbWFwX3VzZWQgPSB0cnVlOwotICAgICAgICAgIH0K
LQotICAgICAgICAgIC8vIFBhcnNlIGhlYWRlciB0byBnZXQgU1NSQyBhbmQgUlRQIHRpbWUuCi0g
ICAgICAgICAgd2VicnRjOjpSdHBVdGlsaXR5OjpSdHBIZWFkZXJQYXJzZXIgcnRwX3BhcnNlciho
ZWFkZXIsIGhlYWRlcl9sZW5ndGgpOwotICAgICAgICAgIHdlYnJ0Yzo6UlRQSGVhZGVyIHBhcnNl
ZF9oZWFkZXI7Ci0gICAgICAgICAgcnRwX3BhcnNlci5QYXJzZSgmcGFyc2VkX2hlYWRlciwgZXh0
ZW5zaW9uX21hcCk7Ci0gICAgICAgICAgTWVkaWFUeXBlIG1lZGlhX3R5cGUgPQotICAgICAgICAg
ICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZShwYXJzZWRfaGVhZGVyLnNzcmMsIGRpcmVj
dGlvbik7Ci0KLSAgICAgICAgICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5
cGUsIHBhcnNlZF9oZWFkZXIuc3NyYykpIHsKLSAgICAgICAgICAgIGV2ZW50X3JlY29nbml6ZWQg
PSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgc3Rk
Ojpjb3V0IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdFJUUCIKLSAgICAg
ICAgICAgICAgICAgICAgPDwgU3RyZWFtSW5mbyhkaXJlY3Rpb24sIG1lZGlhX3R5cGUpCi0gICAg
ICAgICAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCBwYXJzZWRfaGVhZGVyLnNzcmMKLSAgICAg
ICAgICAgICAgICAgICAgPDwgIlx0dGltZXN0YW1wPSIgPDwgcGFyc2VkX2hlYWRlci50aW1lc3Rh
bXA7Ci0gICAgICAgICAgaWYgKHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc0Fic29sdXRlU2Vu
ZFRpbWUpIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRBYnNTZW5kVGltZT0iCi0gICAg
ICAgICAgICAgICAgICAgICAgPDwgcGFyc2VkX2hlYWRlci5leHRlbnNpb24uYWJzb2x1dGVTZW5k
VGltZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9u
Lmhhc1ZpZGVvQ29udGVudFR5cGUpIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRDb250
ZW50VHlwZT0iCi0gICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX2hlYWRlci5leHRlbnNpb24udmlkZW9D
b250ZW50VHlwZSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChwYXJzZWRfaGVhZGVyLmV4
dGVuc2lvbi5oYXNWaWRlb1JvdGF0aW9uKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0
Um90YXRpb249IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLnZpZGVv
Um90YXRpb24pOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAocGFyc2VkX2hlYWRlci5leHRl
bnNpb24uaGFzVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKLSAgICAgICAgICAgIHN0ZDo6Y291
dCA8PCAiXHRUcmFuc3BvcnRTZXE9IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHBhcnNlZF9o
ZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBpZiAocGFyc2VkX2hlYWRlci5leHRlbnNpb24uaGFzVHJhbnNtaXNzaW9uVGltZU9m
ZnNldCkgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJcdFRyYW5zbVRpbWVPZmZzZXQ9Igot
ICAgICAgICAgICAgICAgICAgICAgIDw8IHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLnRyYW5zbWlz
c2lvblRpbWVPZmZzZXQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChwYXJzZWRfaGVhZGVy
LmV4dGVuc2lvbi5oYXNBdWRpb0xldmVsKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0
QXVkaW9MZXZlbD0iCi0gICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50Pihw
YXJzZWRfaGVhZGVyLmV4dGVuc2lvbi5hdWRpb0xldmVsKTsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICBpZiAoRkxBR19wcmludF9mdWxs
X3BhY2tldHMpIHsKLSAgICAgICAgICAgIC8vIFRPRE8odGVyZWxpdXMpOiBSZXdyaXRlIHRoaXMg
ZmlsZSB0byB1c2UgcHJpbnRmIGluc3RlYWQgb2YgY291dC4KLSAgICAgICAgICAgIHN0ZDo6Y291
dCA8PCAiXHRcdCIgPDwgc3RkOjpoZXg7Ci0gICAgICAgICAgICBjaGFyIHByZXZfZmlsbCA9IHN0
ZDo6Y291dC5maWxsKCcwJyk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhl
YWRlcl9sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgc3RkOjpzZXR3
KDIpIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihoZWFkZXJbaV0pOwotICAgICAgICAgICAgICBp
ZiAoaSAlIDQgPT0gMykKLSAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIiAiOyAgLy8gU2Vw
YXJhdG9yIGJldHdlZW4gMzItYml0IHdvcmRzLgotICAgICAgICAgICAgfQotICAgICAgICAgICAg
c3RkOjpjb3V0LmZpbGwocHJldl9maWxsKTsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6
OmRlYyA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGV2ZW50
X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2Fz
ZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlJUQ1BfRVZFTlQ6IHsK
LSAgICAgICAgaWYgKEZMQUdfcnRjcCkgewotICAgICAgICAgIHNpemVfdCBsZW5ndGg7Ci0gICAg
ICAgICAgdWludDhfdCBwYWNrZXRbSVBfUEFDS0VUX1NJWkVdOwotICAgICAgICAgIHdlYnJ0Yzo6
UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbjsKLSAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldFJ0
Y3BQYWNrZXQoaSwgJmRpcmVjdGlvbiwgcGFja2V0LCAmbGVuZ3RoKTsKLQotICAgICAgICAgIHdl
YnJ0Yzo6cnRjcDo6Q29tbW9uSGVhZGVyIHJ0Y3BfYmxvY2s7Ci0gICAgICAgICAgY29uc3QgdWlu
dDhfdCogcGFja2V0X2VuZCA9IHBhY2tldCArIGxlbmd0aDsKLSAgICAgICAgICBmb3IgKGNvbnN0
IHVpbnQ4X3QqIG5leHRfYmxvY2sgPSBwYWNrZXQ7IG5leHRfYmxvY2sgIT0gcGFja2V0X2VuZDsK
LSAgICAgICAgICAgICAgIG5leHRfYmxvY2sgPSBydGNwX2Jsb2NrLk5leHRQYWNrZXQoKSkgewot
ICAgICAgICAgICAgcHRyZGlmZl90IHJlbWFpbmluZ19ibG9ja3Nfc2l6ZSA9IHBhY2tldF9lbmQg
LSBuZXh0X2Jsb2NrOwotICAgICAgICAgICAgUlRDX0RDSEVDS19HVChyZW1haW5pbmdfYmxvY2tz
X3NpemUsIDApOwotICAgICAgICAgICAgaWYgKCFydGNwX2Jsb2NrLlBhcnNlKG5leHRfYmxvY2ss
IHJlbWFpbmluZ19ibG9ja3Nfc2l6ZSkpIHsKLSAgICAgICAgICAgICAgUlRDX0xPRyhMU19XQVJO
SU5HKSA8PCAiRmFpbGVkIHRvIHBhcnNlIFJUQ1AiOwotICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgdWludDY0X3QgbG9nX3RpbWVzdGFtcCA9IHBhcnNl
ZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpOwotICAgICAgICAgICAgc3dpdGNoIChydGNwX2Jsb2Nr
LnR5cGUoKSkgewotICAgICAgICAgICAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6U2VuZGVyUmVwb3J0
OjprUGFja2V0VHlwZToKLSAgICAgICAgICAgICAgICBQcmludFNlbmRlclJlcG9ydChwYXJzZWRf
c3RyZWFtLCBydGNwX2Jsb2NrLCBsb2dfdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpcmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2Ugd2VicnRjOjpydGNwOjpSZWNlaXZlclJlcG9ydDo6a1BhY2tldFR5cGU6Ci0g
ICAgICAgICAgICAgICAgUHJpbnRSZWNlaXZlclJlcG9ydChwYXJzZWRfc3RyZWFtLCBydGNwX2Js
b2NrLCBsb2dfdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlyZWN0aW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSB3
ZWJydGM6OnJ0Y3A6OlNkZXM6OmtQYWNrZXRUeXBlOgotICAgICAgICAgICAgICAgIFByaW50U2Rl
cyhydGNwX2Jsb2NrLCBsb2dfdGltZXN0YW1wLCBkaXJlY3Rpb24pOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6RXh0ZW5kZWRSZXBvcnRz
OjprUGFja2V0VHlwZToKLSAgICAgICAgICAgICAgICBQcmludFhyKHBhcnNlZF9zdHJlYW0sIHJ0
Y3BfYmxvY2ssIGxvZ190aW1lc3RhbXAsIGRpcmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIGNhc2Ugd2VicnRjOjpydGNwOjpCeWU6OmtQYWNrZXRUeXBlOgot
ICAgICAgICAgICAgICAgIFByaW50QnllKHBhcnNlZF9zdHJlYW0sIHJ0Y3BfYmxvY2ssIGxvZ190
aW1lc3RhbXAsIGRpcmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGNhc2Ugd2VicnRjOjpydGNwOjpSdHBmYjo6a1BhY2tldFR5cGU6Ci0gICAgICAgICAgICAg
ICAgUHJpbnRSdHBGZWVkYmFjayhwYXJzZWRfc3RyZWFtLCBydGNwX2Jsb2NrLCBsb2dfdGltZXN0
YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OlBzZmI6
OmtQYWNrZXRUeXBlOgotICAgICAgICAgICAgICAgIFByaW50UHNGZWVkYmFjayhwYXJzZWRfc3Ry
ZWFtLCBydGNwX2Jsb2NrLCBsb2dfdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaXJlY3Rpb24pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKEZMQUdfcHJpbnRfZnVsbF9wYWNrZXRzKSB7Ci0gICAgICAgICAgICAgIHN0ZDo6
Y291dCA8PCAiXHRcdCIgPDwgc3RkOjpoZXg7Ci0gICAgICAgICAgICAgIGNoYXIgcHJldl9maWxs
ID0gc3RkOjpjb3V0LmZpbGwoJzAnKTsKLSAgICAgICAgICAgICAgZm9yIChjb25zdCB1aW50OF90
KiBwID0gbmV4dF9ibG9jazsgcCA8IHJ0Y3BfYmxvY2suTmV4dFBhY2tldCgpOwotICAgICAgICAg
ICAgICAgICAgIHArKykgewotICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OnNldHco
MikgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpwKTsKLSAgICAgICAgICAgICAgICBwdHJkaWZm
X3QgY2hhcnNfcHJpbnRlZCA9IHAgLSBuZXh0X2Jsb2NrOwotICAgICAgICAgICAgICAgIGlmIChj
aGFyc19wcmludGVkICUgNCA9PSAzKQotICAgICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICIg
IjsgIC8vIFNlcGFyYXRvciBiZXR3ZWVuIDMyLWJpdCB3b3Jkcy4KLSAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICBzdGQ6OmNvdXQuZmlsbChwcmV2X2ZpbGwpOwotICAgICAgICAgICAgICBz
dGQ6OmNvdXQgPDwgc3RkOjpkZWMgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgfQotICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExv
Z05ldzo6RXZlbnRUeXBlOjpBVURJT19QTEFZT1VUX0VWRU5UOiB7Ci0gICAgICAgIGlmIChGTEFH
X3BsYXlvdXQpIHsKLSAgICAgICAgICBhdXRvIGF1ZGlvX3BsYXlvdXQgPSBwYXJzZWRfc3RyZWFt
LkdldEF1ZGlvUGxheW91dChpKTsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgYXVkaW9fcGxheW91
dC5sb2dfdGltZV91cygpIDw8ICJcdEFVRElPX1BMQVlPVVQiCi0gICAgICAgICAgICAgICAgICAg
IDw8ICJcdHNzcmM9IiA8PCBhdWRpb19wbGF5b3V0LnNzcmMgPDwgc3RkOjplbmRsOwotICAgICAg
ICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAg
ICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5
cGU6OkxPU1NfQkFTRURfQldFX1VQREFURTogewotICAgICAgICBpZiAoRkxBR19id2UpIHsKLSAg
ICAgICAgICBhdXRvIGJ3ZV91cGRhdGUgPSBwYXJzZWRfc3RyZWFtLkdldExvc3NCYXNlZEJ3ZVVw
ZGF0ZShpKTsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgYndlX3VwZGF0ZS5sb2dfdGltZV91cygp
IDw8ICJcdEJXRShMT1NTX0JBU0VEKSIKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0Yml0cmF0
ZV9icHM9IiA8PCBid2VfdXBkYXRlLmJpdHJhdGVfYnBzCi0gICAgICAgICAgICAgICAgICAgIDw8
ICJcdGZyYWN0aW9uX2xvc3Q9IgotICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oYndlX3VwZGF0ZS5mcmFjdGlvbl9sb3N0KQotICAgICAgICAgICAgICAgICAgICA8
PCAiXHRleHBlY3RlZF9wYWNrZXRzPSIgPDwgYndlX3VwZGF0ZS5leHBlY3RlZF9wYWNrZXRzCi0g
ICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVu
dF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNh
c2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpERUxBWV9CQVNFRF9C
V0VfVVBEQVRFOiB7Ci0gICAgICAgIGlmIChGTEFHX2J3ZSkgewotICAgICAgICAgIGF1dG8gYndl
X3VwZGF0ZSA9IHBhcnNlZF9zdHJlYW0uR2V0RGVsYXlCYXNlZEJ3ZVVwZGF0ZShpKTsKLSAgICAg
ICAgICBzdGQ6OmNvdXQgPDwgYndlX3VwZGF0ZS5sb2dfdGltZV91cygpIDw8ICJcdEJXRShERUxB
WV9CQVNFRCkiCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdGJpdHJhdGVfYnBzPSIgPDwgYndl
X3VwZGF0ZS5iaXRyYXRlX2JwcwotICAgICAgICAgICAgICAgICAgICA8PCAiXHRkZXRlY3Rvcl9z
dGF0ZT0iCi0gICAgICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oYndlX3VwZGF0
ZS5kZXRlY3Rvcl9zdGF0ZSkgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50
X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2Fz
ZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OgotICAgICAgICAgIFZJ
REVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDogewotICAgICAgICBpZiAoRkxBR19jb25maWcgJiYg
RkxBR192aWRlbyAmJiBGTEFHX2luY29taW5nKSB7Ci0gICAgICAgICAgd2VicnRjOjpydGNsb2c6
OlN0cmVhbUNvbmZpZyBjb25maWcgPQotICAgICAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldFZp
ZGVvUmVjZWl2ZUNvbmZpZyhpKTsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgcGFyc2VkX3N0cmVh
bS5HZXRUaW1lc3RhbXAoaSkgPDwgIlx0VklERU9fUkVDVl9DT05GSUciCi0gICAgICAgICAgICAg
ICAgICAgIDw8ICJcdHNzcmM9IiA8PCBjb25maWcucmVtb3RlX3NzcmMKLSAgICAgICAgICAgICAg
ICAgICAgPDwgIlx0ZmVlZGJhY2tfc3NyYz0iIDw8IGNvbmZpZy5sb2NhbF9zc3JjOwotICAgICAg
ICAgIHN0ZDo6Y291dCA8PCAiXHRleHRlbnNpb25zPXsiOwotICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgZXh0ZW5zaW9uIDogY29uZmlnLnJ0cF9leHRlbnNpb25zKSB7Ci0gICAgICAgICAgICBz
dGQ6OmNvdXQgPDwgZXh0ZW5zaW9uLlRvU3RyaW5nKCkgPDwgIiwiOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBzdGQ6OmNvdXQgPDwgIn0iOwotICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRjb2Rl
Y3M9eyI7Ci0gICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb2RlYyA6IGNvbmZpZy5jb2RlY3Mp
IHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAie25hbWU6ICIgPDwgY29kZWMucGF5bG9hZF9u
YW1lCi0gICAgICAgICAgICAgICAgICAgICAgPDwgIiwgcGF5bG9hZF90eXBlOiAiIDw8IGNvZGVj
LnBheWxvYWRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgIDw8ICIsIHJ0eF9wYXlsb2FkX3R5
cGU6ICIgPDwgY29kZWMucnR4X3BheWxvYWRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgIDw8
ICJ9IjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8ICJ9IiA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZlbnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgfQotCi0gICAgICBjYXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dO
ZXc6OkV2ZW50VHlwZTo6VklERU9fU0VOREVSX0NPTkZJR19FVkVOVDogewotICAgICAgICBpZiAo
RkxBR19jb25maWcgJiYgRkxBR192aWRlbyAmJiBGTEFHX291dGdvaW5nKSB7Ci0gICAgICAgICAg
c3RkOjp2ZWN0b3I8d2VicnRjOjpydGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmlncyA9Ci0gICAg
ICAgICAgICAgIHBhcnNlZF9zdHJlYW0uR2V0VmlkZW9TZW5kQ29uZmlnKGkpOwotICAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgY29uZmlnIDogY29uZmlncykgewotICAgICAgICAgICAgc3RkOjpj
b3V0IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdFZJREVPX1NFTkRfQ09O
RklHIjsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRzc3Jjcz0iIDw8IGNvbmZpZy5sb2Nh
bF9zc3JjOwotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJcdHJ0eF9zc3Jjcz0iIDw8IGNvbmZp
Zy5ydHhfc3NyYzsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRleHRlbnNpb25zPXsiOwot
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBleHRlbnNpb24gOiBjb25maWcucnRwX2V4dGVu
c2lvbnMpIHsKLSAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8IGV4dGVuc2lvbi5Ub1N0cmluZygp
IDw8ICIsIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAifSI7Ci0g
ICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0Y29kZWNzPXsiOwotICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBjb2RlYyA6IGNvbmZpZy5jb2RlY3MpIHsKLSAgICAgICAgICAgICAgc3RkOjpj
b3V0IDw8ICJ7bmFtZTogIiA8PCBjb2RlYy5wYXlsb2FkX25hbWUKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIsIHBheWxvYWRfdHlwZTogIiA8PCBjb2RlYy5wYXlsb2FkX3R5cGUKLSAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICIsIHJ0eF9wYXlsb2FkX3R5cGU6ICIgPDwgY29kZWMucnR4
X3BheWxvYWRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIn0iOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJ9IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAg
ICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9n
TmV3OjpFdmVudFR5cGU6OgotICAgICAgICAgIEFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDog
ewotICAgICAgICBpZiAoRkxBR19jb25maWcgJiYgRkxBR19hdWRpbyAmJiBGTEFHX2luY29taW5n
KSB7Ci0gICAgICAgICAgd2VicnRjOjpydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcgPQotICAg
ICAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldEF1ZGlvUmVjZWl2ZUNvbmZpZyhpKTsKLSAgICAg
ICAgICBzdGQ6OmNvdXQgPDwgcGFyc2VkX3N0cmVhbS5HZXRUaW1lc3RhbXAoaSkgPDwgIlx0QVVE
SU9fUkVDVl9DT05GSUciCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCBjb25m
aWcucmVtb3RlX3NzcmMKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0ZmVlZGJhY2tfc3NyYz0i
IDw8IGNvbmZpZy5sb2NhbF9zc3JjOwotICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRleHRlbnNp
b25zPXsiOwotICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZXh0ZW5zaW9uIDogY29uZmlnLnJ0
cF9leHRlbnNpb25zKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgZXh0ZW5zaW9uLlRvU3Ry
aW5nKCkgPDwgIiwiOwotICAgICAgICAgIH0KLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIn0iOwot
ICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRjb2RlY3M9eyI7Ci0gICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBjb2RlYyA6IGNvbmZpZy5jb2RlY3MpIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8
PCAie25hbWU6ICIgPDwgY29kZWMucGF5bG9hZF9uYW1lCi0gICAgICAgICAgICAgICAgICAgICAg
PDwgIiwgcGF5bG9hZF90eXBlOiAiIDw8IGNvZGVjLnBheWxvYWRfdHlwZQotICAgICAgICAgICAg
ICAgICAgICAgIDw8ICIsIHJ0eF9wYXlsb2FkX3R5cGU6ICIgPDwgY29kZWMucnR4X3BheWxvYWRf
dHlwZQotICAgICAgICAgICAgICAgICAgICAgIDw8ICJ9IjsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgc3RkOjpjb3V0IDw8ICJ9IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZl
bnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBj
YXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QVVESU9fU0VOREVS
X0NPTkZJR19FVkVOVDogewotICAgICAgICBpZiAoRkxBR19jb25maWcgJiYgRkxBR19hdWRpbyAm
JiBGTEFHX291dGdvaW5nKSB7Ci0gICAgICAgICAgd2VicnRjOjpydGNsb2c6OlN0cmVhbUNvbmZp
ZyBjb25maWcgPQotICAgICAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldEF1ZGlvU2VuZENvbmZp
ZyhpKTsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgcGFyc2VkX3N0cmVhbS5HZXRUaW1lc3RhbXAo
aSkgPDwgIlx0QVVESU9fU0VORF9DT05GSUciCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdHNz
cmM9IiA8PCBjb25maWcubG9jYWxfc3NyYzsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0ZXh0
ZW5zaW9ucz17IjsKLSAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGV4dGVuc2lvbiA6IGNvbmZp
Zy5ydHBfZXh0ZW5zaW9ucykgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8IGV4dGVuc2lvbi5U
b1N0cmluZygpIDw8ICIsIjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8ICJ9
IjsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0Y29kZWNzPXsiOwotICAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgY29kZWMgOiBjb25maWcuY29kZWNzKSB7Ci0gICAgICAgICAgICBzdGQ6OmNv
dXQgPDwgIntuYW1lOiAiIDw8IGNvZGVjLnBheWxvYWRfbmFtZQotICAgICAgICAgICAgICAgICAg
ICAgIDw8ICIsIHBheWxvYWRfdHlwZTogIiA8PCBjb2RlYy5wYXlsb2FkX3R5cGUKLSAgICAgICAg
ICAgICAgICAgICAgICA8PCAiLCBydHhfcGF5bG9hZF90eXBlOiAiIDw8IGNvZGVjLnJ0eF9wYXls
b2FkX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICA8PCAifSI7Ci0gICAgICAgICAgfQotICAg
ICAgICAgIHN0ZDo6Y291dCA8PCAifSIgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAg
IGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAg
ICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OgotICAgICAg
ICAgIEFVRElPX05FVFdPUktfQURBUFRBVElPTl9FVkVOVDogewotICAgICAgICBpZiAoRkxBR19h
bmEpIHsKLSAgICAgICAgICBhdXRvIGFuYV9ldmVudCA9IHBhcnNlZF9zdHJlYW0uR2V0QXVkaW9O
ZXR3b3JrQWRhcHRhdGlvbihpKTsKLSAgICAgICAgICBjaGFyIGJ1ZmZlclszMDBdOwotICAgICAg
ICAgIHJ0Yzo6U2ltcGxlU3RyaW5nQnVpbGRlciBidWlsZGVyKGJ1ZmZlcik7Ci0gICAgICAgICAg
YnVpbGRlciA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRBTkFfVVBEQVRF
IjsKLSAgICAgICAgICBpZiAoYW5hX2V2ZW50LmNvbmZpZy5iaXRyYXRlX2JwcykgewotICAgICAg
ICAgICAgYnVpbGRlciA8PCAiXHRiaXRyYXRlX2Jwcz0iIDw8ICphbmFfZXZlbnQuY29uZmlnLmJp
dHJhdGVfYnBzOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYW5hX2V2ZW50LmNvbmZpZy5m
cmFtZV9sZW5ndGhfbXMpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIgPDwgIlx0ZnJhbWVfbGVuZ3Ro
X21zPSIKLSAgICAgICAgICAgICAgICAgICAgPDwgKmFuYV9ldmVudC5jb25maWcuZnJhbWVfbGVu
Z3RoX21zOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYW5hX2V2ZW50LmNvbmZpZy51cGxp
bmtfcGFja2V0X2xvc3NfZnJhY3Rpb24pIHsKLSAgICAgICAgICAgIGJ1aWxkZXIgPDwgIlx0dXBs
aW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uPSIKLSAgICAgICAgICAgICAgICAgICAgPDwgKmFuYV9l
dmVudC5jb25maWcudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBpZiAoYW5hX2V2ZW50LmNvbmZpZy5lbmFibGVfZmVjKSB7Ci0gICAgICAgICAgICBi
dWlsZGVyIDw8ICJcdGVuYWJsZV9mZWM9IiA8PCAqYW5hX2V2ZW50LmNvbmZpZy5lbmFibGVfZmVj
OwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYW5hX2V2ZW50LmNvbmZpZy5lbmFibGVfZHR4
KSB7Ci0gICAgICAgICAgICBidWlsZGVyIDw8ICJcdGVuYWJsZV9kdHg9IiA8PCAqYW5hX2V2ZW50
LmNvbmZpZy5lbmFibGVfZHR4OwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYW5hX2V2ZW50
LmNvbmZpZy5udW1fY2hhbm5lbHMpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIgPDwgIlx0bnVtX2No
YW5uZWxzPSIgPDwgKmFuYV9ldmVudC5jb25maWcubnVtX2NoYW5uZWxzOwotICAgICAgICAgIH0K
LSAgICAgICAgICBzdGQ6OmNvdXQgPDwgYnVpbGRlci5zdHIoKSA8PCBzdGQ6OmVuZGw7Ci0gICAg
ICAgIH0KLSAgICAgICAgZXZlbnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgfQotCi0gICAgICBjYXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50
VHlwZTo6Ci0gICAgICAgICAgQldFX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9FVkVOVDogewotICAg
ICAgICBpZiAoRkxBR19wcm9iZSkgewotICAgICAgICAgIGF1dG8gcHJvYmVfZXZlbnQgPSBwYXJz
ZWRfc3RyZWFtLkdldEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQoaSk7Ci0gICAgICAgICAgc3RkOjpj
b3V0IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdFBST0JFX0NSRUFURUQo
IgotICAgICAgICAgICAgICAgICAgICA8PCBwcm9iZV9ldmVudC5pZCA8PCAiKSIKLSAgICAgICAg
ICAgICAgICAgICAgPDwgIlx0Yml0cmF0ZV9icHM9IiA8PCBwcm9iZV9ldmVudC5iaXRyYXRlX2Jw
cwotICAgICAgICAgICAgICAgICAgICA8PCAiXHRtaW5fcGFja2V0cz0iIDw8IHByb2JlX2V2ZW50
Lm1pbl9wYWNrZXRzCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdG1pbl9ieXRlcz0iIDw8IHBy
b2JlX2V2ZW50Lm1pbl9ieXRlcyA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZl
bnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBj
YXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QldFX1BST0JFX0ZB
SUxVUkVfRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfcHJvYmUpIHsKLSAgICAgICAgICB3ZWJy
dGM6OkxvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50IHByb2JlX3Jlc3VsdCA9Ci0gICAgICAgICAg
ICAgIHBhcnNlZF9zdHJlYW0uR2V0QndlUHJvYmVGYWlsdXJlKGkpOwotICAgICAgICAgIHN0ZDo6
Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRQUk9CRV9GQUlMVVJF
KCIKLSAgICAgICAgICAgICAgICAgICAgPDwgcHJvYmVfcmVzdWx0LmlkIDw8ICIpIgotICAgICAg
ICAgICAgICAgICAgICA8PCAiXHRmYWlsdXJlX3JlYXNvbj0iCi0gICAgICAgICAgICAgICAgICAg
IDw8IHN0YXRpY19jYXN0PGludD4ocHJvYmVfcmVzdWx0LmZhaWx1cmVfcmVhc29uKQotICAgICAg
ICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZlbnRfcmVj
b2duaXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBjYXNlIHdl
YnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QldFX1BST0JFX1NVQ0NFU1Nf
RVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfcHJvYmUpIHsKLSAgICAgICAgICB3ZWJydGM6Okxv
Z2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50IHByb2JlX3Jlc3VsdCA9Ci0gICAgICAgICAgICAgIHBh
cnNlZF9zdHJlYW0uR2V0QndlUHJvYmVTdWNjZXNzKGkpOwotICAgICAgICAgIHN0ZDo6Y291dCA8
PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRQUk9CRV9TVUNDRVNTKCIKLSAg
ICAgICAgICAgICAgICAgICAgPDwgcHJvYmVfcmVzdWx0LmlkIDw8ICIpIgotICAgICAgICAgICAg
ICAgICAgICA8PCAiXHRiaXRyYXRlX2Jwcz0iIDw8IHByb2JlX3Jlc3VsdC5iaXRyYXRlX2Jwcwot
ICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZl
bnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBj
YXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QUxSX1NUQVRFX0VW
RU5UOiB7Ci0gICAgICAgIGlmIChGTEFHX2J3ZSkgewotICAgICAgICAgIHdlYnJ0Yzo6TG9nZ2Vk
QWxyU3RhdGVFdmVudCBhbHJfc3RhdGUgPSBwYXJzZWRfc3RyZWFtLkdldEFsclN0YXRlKGkpOwot
ICAgICAgICAgIHN0ZDo6Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAi
XHRBTFJfU1RBVEUiCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdGluX2Fscj0iIDw8IGFscl9z
dGF0ZS5pbl9hbHIgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29n
bml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJy
dGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OklDRV9DQU5ESURBVEVfUEFJUl9D
T05GSUc6IHsKLSAgICAgICAgaWYgKEZMQUdfaWNlKSB7Ci0gICAgICAgICAgd2VicnRjOjpMb2dn
ZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnIGljZV9jcF9jb25maWcgPQotICAgICAgICAgICAgICBw
YXJzZWRfc3RyZWFtLkdldEljZUNhbmRpZGF0ZVBhaXJDb25maWcoaSk7Ci0gICAgICAgICAgLy8g
VE9ETyhxaW5nc2kpOiBjb252ZXJ0IHRoZSBudW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIHN0YXRl
cyB0byB0ZXh0Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0
YW1wKGkpCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdElDRV9DQU5ESURBVEVfUEFJUl9DT05G
SUciCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdHR5cGU9IiA8PCBzdGF0aWNfY2FzdDxpbnQ+
KGljZV9jcF9jb25maWcudHlwZSkKLSAgICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwot
ICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVh
azsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpF
dmVudFR5cGU6OklDRV9DQU5ESURBVEVfUEFJUl9FVkVOVDogewotICAgICAgICBpZiAoRkxBR19p
Y2UpIHsKLSAgICAgICAgICB3ZWJydGM6OkxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCBpY2Vf
Y3BfZXZlbnQgPQotICAgICAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldEljZUNhbmRpZGF0ZVBh
aXJFdmVudChpKTsKLSAgICAgICAgICAvLyBUT0RPKHFpbmdzaSk6IGNvbnZlcnQgdGhlIG51bWVy
aWMgcmVwcmVzZW50YXRpb24gb2Ygc3RhdGVzIHRvIHRleHQKLSAgICAgICAgICBzdGQ6OmNvdXQg
PDwgcGFyc2VkX3N0cmVhbS5HZXRUaW1lc3RhbXAoaSkKLSAgICAgICAgICAgICAgICAgICAgPDwg
Ilx0SUNFX0NBTkRJREFURV9QQUlSX0VWRU5UIgotICAgICAgICAgICAgICAgICAgICA8PCAiXHR0
eXBlPSIgPDwgc3RhdGljX2Nhc3Q8aW50PihpY2VfY3BfZXZlbnQudHlwZSkKLSAgICAgICAgICAg
ICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6
ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWV2
ZW50X3JlY29nbml6ZWQpIHsKLSAgICAgIHN0ZDo6Y291dCA8PCAiVW5yZWNvZ25pemVkIGV2ZW50
ICgiCi0gICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PihwYXJzZWRfc3RyZWFtLkdl
dEV2ZW50VHlwZShpKSkgPDwgIikiCi0gICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAg
IH0KLSAgfQotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9n
X2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19pbXBsLmNjCmluZGV4IDU1NGEwMjgzZmQ2
Zjk3MzdhYTA0ZTJlMmE4NGYxZDg4ODg0NDIxNDYuLmMwMjJhM2Q0MTg1Y2YxNDNiOTRlMGUyODFi
YzZmZTcyNWNlZTM2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX2ltcGwuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfaW1wbC5jYwpAQCAtMTgsOCArMTgsOSBAQAogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1
ZGUgImFwaS9ydGNldmVudGxvZ291dHB1dC5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9sZWdhY3kuaCIKLSNpbmNsdWRlICJs
b2dnaW5nL3J0Y19ldmVudF9sb2cvb3V0cHV0L3J0Y19ldmVudF9sb2dfb3V0cHV0X2ZpbGUuaCIK
KyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2Vu
Y29kZXJfbmV3X2Zvcm1hdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ldmVu
dC5oIgpAQCAtNjQsNyArNjUsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nRW5jb2Rl
cj4gQ3JlYXRlRW5jb2RlcigKICAgICBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlIHR5cGUpIHsK
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpM
ZWdhY3k6CisgICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJDcmVhdGluZyBsZWdhY3kgZW5jb2Rl
ciBmb3IgUlRDIGV2ZW50IGxvZy4iOwogICAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFJ0
Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeT4oKTsKKyAgICBjYXNlIFJ0Y0V2ZW50TG9nOjpFbmNvZGlu
Z1R5cGU6Ok5ld0Zvcm1hdDoKKyAgICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkNyZWF0aW5nIG5l
dyBmb3JtYXQgZW5jb2RlciBmb3IgUlRDIGV2ZW50IGxvZy4iOworICAgICAgcmV0dXJuIGFic2w6
Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdD4oKTsKICAgICBkZWZhdWx0
OgogICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVua25vd24gUnRjRXZlbnRMb2cgZW5jb2Rl
ciB0eXBlICgiIDw8IGludCh0eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgPDwgIikiOwpA
QCAtMTY4LDIwICsxNzMsMTkgQEAgYm9vbCBSdGNFdmVudExvZ0ltcGw6OlN0YXJ0TG9nZ2luZyhz
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dPdXRwdXQ+IG91dHB1dCwKICAgICByZXR1cm4gZmFs
c2U7CiAgIH0KIAotICAvLyBUT0RPKHRlcmVsaXVzKTogVGhlIG1hcHBpbmcgYmV0d2VlbiBsb2cg
dGltZXN0YW1wcyBhbmQgVVRDIHNob3VsZCBiZSBzdG9yZWQKLSAgLy8gaW4gdGhlIGV2ZW50X2xv
ZyBTVEFSVCBldmVudC4KICAgY29uc3QgaW50NjRfdCB0aW1lc3RhbXBfdXMgPSBydGM6OlRpbWVN
aWNyb3MoKTsKICAgY29uc3QgaW50NjRfdCB1dGNfdGltZV91cyA9IHJ0Yzo6VGltZVVUQ01pY3Jv
cygpOwogICBSVENfTE9HKExTX0lORk8pIDw8ICJTdGFydGluZyBXZWJSVEMgZXZlbnQgbG9nLiAo
VGltZXN0YW1wLCBVVEMpID0gIgogICAgICAgICAgICAgICAgICAgIDw8ICIoIiA8PCB0aW1lc3Rh
bXBfdXMgPDwgIiwgIiA8PCB1dGNfdGltZV91cyA8PCAiKS4iOwogCiAgIC8vIEJpbmRpbmcgdG8g
fHRoaXN8IGlzIHNhZmUgYmVjYXVzZSB8dGhpc3wgb3V0bGl2ZXMgdGhlIHx0YXNrX3F1ZXVlX3wu
Ci0gIGF1dG8gc3RhcnQgPSBbdGhpcywgdGltZXN0YW1wX3VzXShzdGQ6OnVuaXF1ZV9wdHI8UnRj
RXZlbnRMb2dPdXRwdXQ+IG91dHB1dCkgeworICBhdXRvIHN0YXJ0ID0gW3RoaXMsIHRpbWVzdGFt
cF91cywKKyAgICAgICAgICAgICAgICB1dGNfdGltZV91c10oc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2
ZW50TG9nT3V0cHV0PiBvdXRwdXQpIHsKICAgICBSVENfRENIRUNLX1JVTl9PTih0YXNrX3F1ZXVl
Xy5nZXQoKSk7CiAgICAgUlRDX0RDSEVDSyhvdXRwdXQtPklzQWN0aXZlKCkpOwogICAgIGV2ZW50
X291dHB1dF8gPSBzdGQ6Om1vdmUob3V0cHV0KTsKICAgICBudW1fY29uZmlnX2V2ZW50c193cml0
dGVuXyA9IDA7Ci0gICAgV3JpdGVUb091dHB1dChldmVudF9lbmNvZGVyXy0+RW5jb2RlTG9nU3Rh
cnQodGltZXN0YW1wX3VzKSk7CisgICAgV3JpdGVUb091dHB1dChldmVudF9lbmNvZGVyXy0+RW5j
b2RlTG9nU3RhcnQodGltZXN0YW1wX3VzLCB1dGNfdGltZV91cykpOwogICAgIExvZ0V2ZW50c0Zy
b21NZW1vcnlUb091dHB1dCgpOwogICB9OwogCkBAIC0xOTcsNyArMjAxLDcgQEAgdm9pZCBSdGNF
dmVudExvZ0ltcGw6OlN0b3BMb2dnaW5nKCkgewogCiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlN0
b3BwaW5nIFdlYlJUQyBldmVudCBsb2cuIjsKIAotICBydGM6OkV2ZW50IG91dHB1dF9zdG9wcGVk
KHRydWUsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBvdXRwdXRfc3RvcHBlZDsKIAogICAvLyBCaW5k
aW5nIHRvIHx0aGlzfCBpcyBzYWZlIGJlY2F1c2UgfHRoaXN8IG91dGxpdmVzIHRoZSB8dGFza19x
dWV1ZV98LgogICB0YXNrX3F1ZXVlXy0+UG9zdFRhc2soW3RoaXMsICZvdXRwdXRfc3RvcHBlZF0o
KSB7CkBAIC0zNzIsOCArMzc2LDQgQEAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBSdGNF
dmVudExvZzo6Q3JlYXRlKAogI2VuZGlmICAvLyBFTkFCTEVfUlRDX0VWRU5UX0xPRwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2c+IFJ0Y0V2ZW50TG9nOjpDcmVhdGVOdWxsKCkgewot
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPihuZXcgUnRjRXZlbnRMb2dOdWxs
SW1wbCgpKTsKLX0KLQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L3J0Y19ldmVudF9sb2dfcGFyc2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyLmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDJhZjE4OWFhZDU5MjcwNjY4ZjU3YzMz
NWQyMmMzMWQ0NmIzNWVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5jYworKysgL2Rldi9udWxsCkBAIC0x
LDg1MSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNiBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQot
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgImxvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5oIgotCi0jaW5jbHVkZSA8c3RkaW50
Lmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVk
ZSA8ZnN0cmVhbT4KLSNpbmNsdWRlIDxpc3RyZWFtPgotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRl
IDx1dGlsaXR5PgotCi0jaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9s
b2cuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0
b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvcHJvdG9idWZfdXRpbHMuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLW5h
bWVzcGFjZSB7Ci1SdGNwTW9kZSBHZXRSdW50aW1lUnRjcE1vZGUocnRjbG9nOjpWaWRlb1JlY2Vp
dmVDb25maWc6OlJ0Y3BNb2RlIHJ0Y3BfbW9kZSkgewotICBzd2l0Y2ggKHJ0Y3BfbW9kZSkgewot
ICAgIGNhc2UgcnRjbG9nOjpWaWRlb1JlY2VpdmVDb25maWc6OlJUQ1BfQ09NUE9VTkQ6Ci0gICAg
ICByZXR1cm4gUnRjcE1vZGU6OmtDb21wb3VuZDsKLSAgICBjYXNlIHJ0Y2xvZzo6VmlkZW9SZWNl
aXZlQ29uZmlnOjpSVENQX1JFRFVDRURTSVpFOgotICAgICAgcmV0dXJuIFJ0Y3BNb2RlOjprUmVk
dWNlZFNpemU7Ci0gIH0KLSAgUlRDX05PVFJFQUNIRUQoKTsKLSAgcmV0dXJuIFJ0Y3BNb2RlOjpr
T2ZmOwotfQotCi1QYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlIEdldFJ1bnRpbWVFdmVudFR5
cGUoCi0gICAgcnRjbG9nOjpFdmVudDo6RXZlbnRUeXBlIGV2ZW50X3R5cGUpIHsKLSAgc3dpdGNo
IChldmVudF90eXBlKSB7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpVTktOT1dOX0VWRU5UOgot
ICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OlVOS05PV05fRVZFTlQ7
Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpMT0dfU1RBUlQ6Ci0gICAgICByZXR1cm4gUGFyc2Vk
UnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6TE9HX1NUQVJUOwotICAgIGNhc2UgcnRjbG9nOjpFdmVu
dDo6TE9HX0VORDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpM
T0dfRU5EOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6UlRQX0VWRU5UOgotICAgICAgcmV0dXJu
IFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OlJUUF9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xv
Zzo6RXZlbnQ6OlJUQ1BfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2
ZW50VHlwZTo6UlRDUF9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1BMQVlP
VVRfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6QVVE
SU9fUExBWU9VVF9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkxPU1NfQkFTRURfQldF
X1VQREFURToKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpMT1NT
X0JBU0VEX0JXRV9VUERBVEU7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpERUxBWV9CQVNFRF9C
V0VfVVBEQVRFOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OkRF
TEFZX0JBU0VEX0JXRV9VUERBVEU7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpWSURFT19SRUNF
SVZFUl9DT05GSUdfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50
VHlwZTo6VklERU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVu
dDo6VklERU9fU0VOREVSX0NPTkZJR19FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVu
dExvZzo6RXZlbnRUeXBlOjpWSURFT19TRU5ERVJfQ09ORklHX0VWRU5UOwotICAgIGNhc2UgcnRj
bG9nOjpFdmVudDo6QVVESU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UOgotICAgICAgcmV0dXJuIFBh
cnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OkFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDsK
LSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1NFTkRFUl9DT05GSUdfRVZFTlQ6Ci0gICAg
ICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6QVVESU9fU0VOREVSX0NPTkZJ
R19FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX05FVFdPUktfQURBUFRBVElP
Tl9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpBVURJ
T19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpCV0Vf
UFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50
TG9nOjpFdmVudFR5cGU6OkJXRV9QUk9CRV9DTFVTVEVSX0NSRUFURURfRVZFTlQ7Ci0gICAgY2Fz
ZSBydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfUkVTVUxUX0VWRU5UOgotICAgICAgcmV0dXJuIFBh
cnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OkJXRV9QUk9CRV9SRVNVTFRfRVZFTlQ7Ci0gICAg
Y2FzZSBydGNsb2c6OkV2ZW50OjpBTFJfU1RBVEVfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2Vk
UnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6QUxSX1NUQVRFX0VWRU5UOwotICAgIGNhc2UgcnRjbG9n
OjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRzoKLSAgICAgIHJldHVybiBQYXJzZWRS
dGNFdmVudExvZzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRFX1BBSVJfQ09ORklHOwotICAgIGNh
c2UgcnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlSX0VWRU5UOgotICAgICAgcmV0dXJu
IFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OklDRV9DQU5ESURBVEVfUEFJUl9FVkVOVDsK
LSAgfQotICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6VU5LTk9XTl9FVkVO
VDsKLX0KLQotQmFuZHdpZHRoVXNhZ2UgR2V0UnVudGltZURldGVjdG9yU3RhdGUoCi0gICAgcnRj
bG9nOjpEZWxheUJhc2VkQndlVXBkYXRlOjpEZXRlY3RvclN0YXRlIGRldGVjdG9yX3N0YXRlKSB7
Ci0gIHN3aXRjaCAoZGV0ZWN0b3Jfc3RhdGUpIHsKLSAgICBjYXNlIHJ0Y2xvZzo6RGVsYXlCYXNl
ZEJ3ZVVwZGF0ZTo6QldFX05PUk1BTDoKLSAgICAgIHJldHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3
Tm9ybWFsOwotICAgIGNhc2UgcnRjbG9nOjpEZWxheUJhc2VkQndlVXBkYXRlOjpCV0VfVU5ERVJV
U0lORzoKLSAgICAgIHJldHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3VW5kZXJ1c2luZzsKLSAgICBj
YXNlIHJ0Y2xvZzo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZTo6QldFX09WRVJVU0lORzoKLSAgICAgIHJl
dHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5nOwotICB9Ci0gIFJUQ19OT1RSRUFDSEVE
KCk7Ci0gIHJldHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3Tm9ybWFsOwotfQotCi1JY2VDYW5kaWRh
dGVQYWlyQ29uZmlnVHlwZSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUoCi0g
ICAgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmln
VHlwZSB0eXBlKSB7Ci0gIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnOjpBRERFRDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29u
ZmlnVHlwZTo6a0FkZGVkOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmln
OjpVUERBVEVEOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlOjprVXBk
YXRlZDsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6REVTVFJPWUVE
OgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlOjprRGVzdHJveWVkOwot
ICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpTRUxFQ1RFRDoKLSAgICAg
IHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a1NlbGVjdGVkOwotICB9Ci0gIFJU
Q19OT1RSRUFDSEVEKCk7Ci0gIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a0Fk
ZGVkOwotfQotCi1JY2VDYW5kaWRhdGVUeXBlIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVUeXBlKAot
ICAgIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SWNlQ2FuZGlkYXRlVHlwZSB0eXBl
KSB7Ci0gIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWly
Q29uZmlnOjpMT0NBTDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVUeXBlOjprTG9jYWw7Ci0g
ICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlNUVU46Ci0gICAgICByZXR1
cm4gSWNlQ2FuZGlkYXRlVHlwZTo6a1N0dW47Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0
ZVBhaXJDb25maWc6OlBSRkxYOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVR5cGU6OmtQcmZs
eDsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6UkVMQVk6Ci0gICAg
ICByZXR1cm4gSWNlQ2FuZGlkYXRlVHlwZTo6a1JlbGF5OwotICAgIGNhc2UgcnRjbG9nOjpJY2VD
YW5kaWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX0NBTkRJREFURV9UWVBFOgotICAgICAgcmV0dXJu
IEljZUNhbmRpZGF0ZVR5cGU6OmtVbmtub3duOwotICB9Ci0gIFJUQ19OT1RSRUFDSEVEKCk7Ci0g
IHJldHVybiBJY2VDYW5kaWRhdGVUeXBlOjprVW5rbm93bjsKLX0KLQotSWNlQ2FuZGlkYXRlUGFp
clByb3RvY29sIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2woCi0gICAgcnRjbG9n
OjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpQcm90b2NvbCBwcm90b2NvbCkgewotICBzd2l0Y2gg
KHByb3RvY29sKSB7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVE
UDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtVZHA7Ci0gICAgY2Fz
ZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlRDUDoKLSAgICAgIHJldHVybiBJY2VD
YW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtUY3A7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0
ZVBhaXJDb25maWc6OlNTTFRDUDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyUHJvdG9j
b2w6OmtTc2x0Y3A7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlRM
UzoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtUbHM7Ci0gICAgY2Fz
ZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fUFJPVE9DT0w6Ci0gICAg
ICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprVW5rbm93bjsKLSAgfQotICBSVENf
Tk9UUkVBQ0hFRCgpOwotICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprVW5rbm93
bjsKLX0KLQotSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHkgR2V0UnVudGltZUljZUNhbmRp
ZGF0ZVBhaXJBZGRyZXNzRmFtaWx5KAotICAgIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZp
Zzo6QWRkcmVzc0ZhbWlseSBhZGRyZXNzX2ZhbWlseSkgewotICBzd2l0Y2ggKGFkZHJlc3NfZmFt
aWx5KSB7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OklQVjQ6Ci0g
ICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHk6OmtJcHY0OwotICAgIGNh
c2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJUFY2OgotICAgICAgcmV0dXJuIElj
ZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5OjprSXB2NjsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNl
Q2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9BRERSRVNTX0ZBTUlMWToKLSAgICAgIHJldHVy
biBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6a1Vua25vd247Ci0gIH0KLSAgUlRDX05P
VFJFQUNIRUQoKTsKLSAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5OjprVW5r
bm93bjsKLX0KLQotSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGUgR2V0UnVudGltZUljZUNhbmRpZGF0
ZU5ldHdvcmtUeXBlKAotICAgIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6TmV0d29y
a1R5cGUgbmV0d29ya190eXBlKSB7Ci0gIHN3aXRjaCAobmV0d29ya190eXBlKSB7Ci0gICAgY2Fz
ZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkVUSEVSTkVUOgotICAgICAgcmV0dXJu
IEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprRXRoZXJuZXQ7Ci0gICAgY2FzZSBydGNsb2c6Oklj
ZUNhbmRpZGF0ZVBhaXJDb25maWc6OkxPT1BCQUNLOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0
ZU5ldHdvcmtUeXBlOjprTG9vcGJhY2s7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBh
aXJDb25maWc6OldJRkk6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtX
aWZpOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpWUE46Ci0gICAg
ICByZXR1cm4gSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtWcG47Ci0gICAgY2FzZSBydGNsb2c6
OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkNFTExVTEFSOgotICAgICAgcmV0dXJuIEljZUNhbmRp
ZGF0ZU5ldHdvcmtUeXBlOjprQ2VsbHVsYXI7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0
ZVBhaXJDb25maWc6OlVOS05PV05fTkVUV09SS19UWVBFOgotICAgICAgcmV0dXJuIEljZUNhbmRp
ZGF0ZU5ldHdvcmtUeXBlOjprVW5rbm93bjsKLSAgfQotICBSVENfTk9UUkVBQ0hFRCgpOwotICBy
ZXR1cm4gSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtVbmtub3duOwotfQotCi1JY2VDYW5kaWRh
dGVQYWlyRXZlbnRUeXBlIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlKAotICAg
IHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBl
IHR5cGUpIHsKLSAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0
ZVBhaXJFdmVudDo6Q0hFQ0tfU0VOVDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZl
bnRUeXBlOjprQ2hlY2tTZW50OwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyRXZl
bnQ6OkNIRUNLX1JFQ0VJVkVEOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5
cGU6OmtDaGVja1JlY2VpdmVkOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyRXZl
bnQ6OkNIRUNLX1JFU1BPTlNFX1NFTlQ6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckV2
ZW50VHlwZTo6a0NoZWNrUmVzcG9uc2VTZW50OwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRh
dGVQYWlyRXZlbnQ6OkNIRUNLX1JFU1BPTlNFX1JFQ0VJVkVEOgotICAgICAgcmV0dXJuIEljZUNh
bmRpZGF0ZVBhaXJFdmVudFR5cGU6OmtDaGVja1Jlc3BvbnNlUmVjZWl2ZWQ7Ci0gIH0KLSAgUlRD
X05PVFJFQUNIRUQoKTsKLSAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGU6OmtDaGVj
a1NlbnQ7Ci19Ci0KLXN0ZDo6cGFpcjx1aW50NjRfdCwgYm9vbD4gUGFyc2VWYXJJbnQoc3RkOjpp
c3RyZWFtJiBzdHJlYW0pIHsKLSAgdWludDY0X3QgdmFyaW50ID0gMDsKLSAgZm9yIChzaXplX3Qg
Ynl0ZXNfcmVhZCA9IDA7IGJ5dGVzX3JlYWQgPCAxMDsgKytieXRlc19yZWFkKSB7Ci0gICAgLy8g
VGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIGVhY2ggYnl0ZSBpcyAwIGlmIGl0IGlzIHRoZSBs
YXN0IGJ5dGUgaW4KLSAgICAvLyB0aGUgdmFyaW50IGFuZCAxIG90aGVyd2lzZS4gVGh1cywgd2Ug
dGFrZSB0aGUgNyBsZWFzdCBzaWduaWZpY2FudCBiaXRzCi0gICAgLy8gb2YgZWFjaCBieXRlIGFu
ZCBzaGlmdCB0aGVtIDcgYml0cyBmb3IgZWFjaCBieXRlIHJlYWQgcHJldmlvdXNseSB0byBnZXQK
LSAgICAvLyB0aGUgKHVuc2lnbmVkKSBpbnRlZ2VyLgotICAgIGludCBieXRlID0gc3RyZWFtLmdl
dCgpOwotICAgIGlmIChzdHJlYW0uZW9mKCkpIHsKLSAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cih2YXJpbnQsIGZhbHNlKTsKLSAgICB9Ci0gICAgUlRDX0RDSEVDS19HRShieXRlLCAwKTsKLSAg
ICBSVENfRENIRUNLX0xFKGJ5dGUsIDI1NSk7Ci0gICAgdmFyaW50IHw9IHN0YXRpY19jYXN0PHVp
bnQ2NF90PihieXRlICYgMHg3RikgPDwgKDcgKiBieXRlc19yZWFkKTsKLSAgICBpZiAoKGJ5dGUg
JiAweDgwKSA9PSAwKSB7Ci0gICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodmFyaW50LCB0cnVl
KTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHZhcmludCwgZmFsc2UpOwot
fQotCi12b2lkIEdldEhlYWRlckV4dGVuc2lvbnMoc3RkOjp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiog
aGVhZGVyX2V4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVwZWF0
ZWRQdHJGaWVsZDxydGNsb2c6OlJ0cEhlYWRlckV4dGVuc2lvbj4mCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb3RvX2hlYWRlcl9leHRlbnNpb25zKSB7Ci0gIGhlYWRlcl9leHRlbnNp
b25zLT5jbGVhcigpOwotICBmb3IgKGF1dG8mIHAgOiBwcm90b19oZWFkZXJfZXh0ZW5zaW9ucykg
ewotICAgIFJUQ19DSEVDSyhwLmhhc19uYW1lKCkpOwotICAgIFJUQ19DSEVDSyhwLmhhc19pZCgp
KTsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSA9IHAubmFtZSgpOwotICAgIGludCBpZCA9
IHAuaWQoKTsKLSAgICBoZWFkZXJfZXh0ZW5zaW9ucy0+cHVzaF9iYWNrKFJ0cEV4dGVuc2lvbihu
YW1lLCBpZCkpOwotICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1QYXJzZWRSdGNFdmVudExv
Zzo6UGFyc2VkUnRjRXZlbnRMb2coKSA9IGRlZmF1bHQ7Ci1QYXJzZWRSdGNFdmVudExvZzo6flBh
cnNlZFJ0Y0V2ZW50TG9nKCkgPSBkZWZhdWx0OwotCi1QYXJzZWRSdGNFdmVudExvZzo6QndlUHJv
YmVSZXN1bHRFdmVudDo6QndlUHJvYmVSZXN1bHRFdmVudCgpID0gZGVmYXVsdDsKLVBhcnNlZFJ0
Y0V2ZW50TG9nOjpCd2VQcm9iZVJlc3VsdEV2ZW50OjpCd2VQcm9iZVJlc3VsdEV2ZW50KAotICAg
IGNvbnN0IEJ3ZVByb2JlUmVzdWx0RXZlbnQmKSA9IGRlZmF1bHQ7Ci0KLWJvb2wgUGFyc2VkUnRj
RXZlbnRMb2c6OlBhcnNlRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpIHsKLSAgc3Rk
OjppZnN0cmVhbSBmaWxlKGZpbGVuYW1lLCBzdGQ6Omlvc19iYXNlOjppbiB8IHN0ZDo6aW9zX2Jh
c2U6OmJpbmFyeSk7Ci0gIGlmICghZmlsZS5nb29kKCkgfHwgIWZpbGUuaXNfb3BlbigpKSB7Ci0g
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ291bGQgbm90IG9wZW4gZmlsZSBmb3IgcmVhZGlu
Zy4iOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHJldHVybiBQYXJzZVN0cmVhbShmaWxl
KTsKLX0KLQotYm9vbCBQYXJzZWRSdGNFdmVudExvZzo6UGFyc2VTdHJpbmcoY29uc3Qgc3RkOjpz
dHJpbmcmIHMpIHsKLSAgc3RkOjppc3RyaW5nc3RyZWFtIHN0cmVhbShzLCBzdGQ6Omlvc19iYXNl
OjppbiB8IHN0ZDo6aW9zX2Jhc2U6OmJpbmFyeSk7Ci0gIHJldHVybiBQYXJzZVN0cmVhbShzdHJl
YW0pOwotfQotCi1ib29sIFBhcnNlZFJ0Y0V2ZW50TG9nOjpQYXJzZVN0cmVhbShzdGQ6OmlzdHJl
YW0mIHN0cmVhbSkgewotICBldmVudHNfLmNsZWFyKCk7Ci0gIGNvbnN0IHNpemVfdCBrTWF4RXZl
bnRTaXplID0gKDF1IDw8IDE2KSAtIDE7Ci0gIHN0ZDo6dmVjdG9yPGNoYXI+IHRtcF9idWZmZXIo
a01heEV2ZW50U2l6ZSk7Ci0gIHVpbnQ2NF90IHRhZzsKLSAgdWludDY0X3QgbWVzc2FnZV9sZW5n
dGg7Ci0gIGJvb2wgc3VjY2VzczsKLQotICBSVENfRENIRUNLKHN0cmVhbS5nb29kKCkpOwotCi0g
IHdoaWxlICgxKSB7Ci0gICAgLy8gQ2hlY2sgd2hldGhlciB3ZSBoYXZlIHJlYWNoZWQgZW5kIG9m
IGZpbGUuCi0gICAgc3RyZWFtLnBlZWsoKTsKLSAgICBpZiAoc3RyZWFtLmVvZigpKSB7Ci0gICAg
ICAvLyBQcm9jZXNzIGFsbCBleHRlbnNpb25zIG1hcHMgZm9yIGZhc3RlciBsb29rLXVwIGxhdGVy
LgotICAgICAgZm9yIChhdXRvJiBldmVudF9zdHJlYW0gOiBzdHJlYW1zXykgewotICAgICAgICBy
dHBfZXh0ZW5zaW9uc19tYXBzX1tTdHJlYW1JZChldmVudF9zdHJlYW0uc3NyYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfc3RyZWFtLmRpcmVjdGlvbildID0K
LSAgICAgICAgICAgICZldmVudF9zdHJlYW0ucnRwX2V4dGVuc2lvbnNfbWFwOwotICAgICAgfQot
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy8gUmVhZCB0aGUgbmV4dCBtZXNzYWdl
IHRhZy4gVGhlIHRhZyBudW1iZXIgaXMgZGVmaW5lZCBhcwotICAgIC8vIChmaWVsZG51bWJlciA8
PCAzKSB8IHdpcmVfdHlwZS4gSW4gb3VyIGNhc2UsIHRoZSBmaWVsZCBudW1iZXIgaXMKLSAgICAv
LyBzdXBwb3NlZCB0byBiZSAxIGFuZCB0aGUgd2lyZSB0eXBlIGZvciBhbgotICAgIC8vIGxlbmd0
aC1kZWxpbWl0ZWQgZmllbGQgaXMgMi4KLSAgICBjb25zdCB1aW50NjRfdCBrRXhwZWN0ZWRUYWcg
PSAoMSA8PCAzKSB8IDI7Ci0gICAgc3RkOjp0aWUodGFnLCBzdWNjZXNzKSA9IFBhcnNlVmFySW50
KHN0cmVhbSk7Ci0gICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcp
Ci0gICAgICAgICAgPDwgIk1pc3NpbmcgZmllbGQgdGFnIGZyb20gYmVnaW5uaW5nIG9mIHByb3Rv
YnVmIGV2ZW50LiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmICh0YWcgIT0g
a0V4cGVjdGVkVGFnKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAgICAgPDwg
IlVuZXhwZWN0ZWQgZmllbGQgdGFnIGF0IGJlZ2lubmluZyBvZiBwcm90b2J1ZiBldmVudC4iOwot
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIFJlYWQgdGhlIGxlbmd0aCBmaWVs
ZC4KLSAgICBzdGQ6OnRpZShtZXNzYWdlX2xlbmd0aCwgc3VjY2VzcykgPSBQYXJzZVZhckludChz
dHJlYW0pOwotICAgIGlmICghc3VjY2VzcykgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8
PCAiTWlzc2luZyBtZXNzYWdlIGxlbmd0aCBhZnRlciBwcm90b2J1ZiBmaWVsZCB0YWcuIjsKLSAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKG1lc3NhZ2VfbGVuZ3RoID4ga01heEV2
ZW50U2l6ZSkgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUHJvdG9idWYgbWVzc2Fn
ZSBsZW5ndGggaXMgdG9vIGxhcmdlLiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgLy8gUmVhZCB0aGUgbmV4dCBwcm90b2J1ZiBldmVudCB0byBhIHRlbXBvcmFyeSBjaGFyIGJ1
ZmZlci4KLSAgICBzdHJlYW0ucmVhZCh0bXBfYnVmZmVyLmRhdGEoKSwgbWVzc2FnZV9sZW5ndGgp
OwotICAgIGlmIChzdHJlYW0uZ2NvdW50KCkgIT0gc3RhdGljX2Nhc3Q8aW50PihtZXNzYWdlX2xl
bmd0aCkpIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byByZWFkIHBy
b3RvYnVmIG1lc3NhZ2UgZnJvbSBmaWxlLiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgLy8gUGFyc2UgdGhlIHByb3RvYnVmIGV2ZW50IGZyb20gdGhlIGJ1ZmZlci4KLSAgICBy
dGNsb2c6OkV2ZW50IGV2ZW50OwotICAgIGlmICghZXZlbnQuUGFyc2VGcm9tQXJyYXkodG1wX2J1
ZmZlci5kYXRhKCksIG1lc3NhZ2VfbGVuZ3RoKSkgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5H
KSA8PCAiRmFpbGVkIHRvIHBhcnNlIHByb3RvYnVmIG1lc3NhZ2UuIjsKLSAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICBFdmVudFR5cGUgdHlwZSA9IEdldFJ1bnRpbWVFdmVudFR5cGUo
ZXZlbnQudHlwZSgpKTsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgIGNhc2UgVklERU9fUkVD
RUlWRVJfQ09ORklHX0VWRU5UOiB7Ci0gICAgICAgIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZp
ZyA9IEdldFZpZGVvUmVjZWl2ZUNvbmZpZyhldmVudCk7Ci0gICAgICAgIHN0cmVhbXNfLmVtcGxh
Y2VfYmFjayhjb25maWcucmVtb3RlX3NzcmMsIE1lZGlhVHlwZTo6VklERU8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrSW5jb21pbmdQYWNrZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKSk7
Ci0gICAgICAgIHN0cmVhbXNfLmVtcGxhY2VfYmFjayhjb25maWcubG9jYWxfc3NyYywgTWVkaWFU
eXBlOjpWSURFTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtPdXRnb2luZ1BhY2tl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChj
b25maWcucnRwX2V4dGVuc2lvbnMpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBj
YXNlIFZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQ6IHsKLSAgICAgICAgc3RkOjp2ZWN0b3I8cnRj
bG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZ3MgPSBHZXRWaWRlb1NlbmRDb25maWcoZXZlbnQpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbmZpZ3Muc2l6ZSgpOyBpKyspIHsKLSAg
ICAgICAgICBzdHJlYW1zXy5lbXBsYWNlX2JhY2soCi0gICAgICAgICAgICAgIGNvbmZpZ3NbaV0u
bG9jYWxfc3NyYywgTWVkaWFUeXBlOjpWSURFTywga091dGdvaW5nUGFja2V0LAotICAgICAgICAg
ICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnc1tpXS5ydHBfZXh0ZW5zaW9ucykpOwot
Ci0gICAgICAgICAgc3RyZWFtc18uZW1wbGFjZV9iYWNrKAotICAgICAgICAgICAgICBjb25maWdz
W2ldLnJ0eF9zc3JjLCBNZWRpYVR5cGU6OlZJREVPLCBrT3V0Z29pbmdQYWNrZXQsCi0gICAgICAg
ICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWdzW2ldLnJ0cF9leHRlbnNpb25zKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjYXNlIEFVRElPX1JF
Q0VJVkVSX0NPTkZJR19FVkVOVDogewotICAgICAgICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25m
aWcgPSBHZXRBdWRpb1JlY2VpdmVDb25maWcoZXZlbnQpOwotICAgICAgICBzdHJlYW1zXy5lbXBs
YWNlX2JhY2soY29uZmlnLnJlbW90ZV9zc3JjLCBNZWRpYVR5cGU6OkFVRElPLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga0luY29taW5nUGFja2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucykp
OwotICAgICAgICBzdHJlYW1zXy5lbXBsYWNlX2JhY2soY29uZmlnLmxvY2FsX3NzcmMsIE1lZGlh
VHlwZTo6QVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrT3V0Z29pbmdQYWNr
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAo
Y29uZmlnLnJ0cF9leHRlbnNpb25zKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAg
Y2FzZSBBVURJT19TRU5ERVJfQ09ORklHX0VWRU5UOiB7Ci0gICAgICAgIHJ0Y2xvZzo6U3RyZWFt
Q29uZmlnIGNvbmZpZyA9IEdldEF1ZGlvU2VuZENvbmZpZyhldmVudCk7Ci0gICAgICAgIHN0cmVh
bXNfLmVtcGxhY2VfYmFjayhjb25maWcubG9jYWxfc3NyYywgTWVkaWFUeXBlOjpBVURJTywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtPdXRnb2luZ1BhY2tldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4dGVu
c2lvbnMpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBkZWZhdWx0OgotICAgICAg
ICBicmVhazsKLSAgICB9Ci0KLSAgICBldmVudHNfLnB1c2hfYmFjayhldmVudCk7Ci0gIH0KLX0K
LQotc2l6ZV90IFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXROdW1iZXJPZkV2ZW50cygpIGNvbnN0IHsK
LSAgcmV0dXJuIGV2ZW50c18uc2l6ZSgpOwotfQotCi1pbnQ2NF90IFBhcnNlZFJ0Y0V2ZW50TG9n
OjpHZXRUaW1lc3RhbXAoc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRl
eCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0g
ZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfdGltZXN0YW1wX3VzKCkpOwot
ICByZXR1cm4gZXZlbnQudGltZXN0YW1wX3VzKCk7Ci19Ci0KLVBhcnNlZFJ0Y0V2ZW50TG9nOjpF
dmVudFR5cGUgUGFyc2VkUnRjRXZlbnRMb2c6OkdldEV2ZW50VHlwZSgKLSAgICBzaXplX3QgaW5k
ZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsK
LSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NI
RUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICByZXR1cm4gR2V0UnVudGltZUV2ZW50VHlwZShldmVu
dC50eXBlKCkpOwotfQotCi0vLyBUaGUgaGVhZGVyIG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVh
c3QgSVBfUEFDS0VUX1NJWkUgYnl0ZXMuCi13ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCog
UGFyc2VkUnRjRXZlbnRMb2c6OkdldFJ0cEhlYWRlcigKLSAgICBzaXplX3QgaW5kZXgsCi0gICAg
UGFja2V0RGlyZWN0aW9uKiBpbmNvbWluZywKLSAgICB1aW50OF90KiBoZWFkZXIsCi0gICAgc2l6
ZV90KiBoZWFkZXJfbGVuZ3RoLAotICAgIHNpemVfdCogdG90YWxfbGVuZ3RoLAotICAgIGludCog
cHJvYmVfY2x1c3Rlcl9pZCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJl
ck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5k
ZXhdOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShldmVu
dC50eXBlKCksIHJ0Y2xvZzo6RXZlbnQ6OlJUUF9FVkVOVCk7Ci0gIFJUQ19DSEVDSyhldmVudC5o
YXNfcnRwX3BhY2tldCgpKTsKLSAgY29uc3QgcnRjbG9nOjpSdHBQYWNrZXQmIHJ0cF9wYWNrZXQg
PSBldmVudC5ydHBfcGFja2V0KCk7Ci0gIC8vIEdldCBkaXJlY3Rpb24gb2YgcGFja2V0LgotICBS
VENfQ0hFQ0socnRwX3BhY2tldC5oYXNfaW5jb21pbmcoKSk7Ci0gIGlmIChpbmNvbWluZyAhPSBu
dWxscHRyKSB7Ci0gICAgKmluY29taW5nID0gcnRwX3BhY2tldC5pbmNvbWluZygpID8ga0luY29t
aW5nUGFja2V0IDoga091dGdvaW5nUGFja2V0OwotICB9Ci0gIC8vIEdldCBwYWNrZXQgbGVuZ3Ro
LgotICBSVENfQ0hFQ0socnRwX3BhY2tldC5oYXNfcGFja2V0X2xlbmd0aCgpKTsKLSAgaWYgKHRv
dGFsX2xlbmd0aCAhPSBudWxscHRyKSB7Ci0gICAgKnRvdGFsX2xlbmd0aCA9IHJ0cF9wYWNrZXQu
cGFja2V0X2xlbmd0aCgpOwotICB9Ci0gIC8vIEdldCBoZWFkZXIgbGVuZ3RoLgotICBSVENfQ0hF
Q0socnRwX3BhY2tldC5oYXNfaGVhZGVyKCkpOwotICBpZiAoaGVhZGVyX2xlbmd0aCAhPSBudWxs
cHRyKSB7Ci0gICAgKmhlYWRlcl9sZW5ndGggPSBydHBfcGFja2V0LmhlYWRlcigpLnNpemUoKTsK
LSAgfQotICAvLyBHZXQgaGVhZGVyIGNvbnRlbnRzLgotICBpZiAoaGVhZGVyICE9IG51bGxwdHIp
IHsKLSAgICBjb25zdCBzaXplX3Qga01pblJ0cEhlYWRlclNpemUgPSAxMjsKLSAgICBSVENfQ0hF
Q0tfR0UocnRwX3BhY2tldC5oZWFkZXIoKS5zaXplKCksIGtNaW5SdHBIZWFkZXJTaXplKTsKLSAg
ICBSVENfQ0hFQ0tfTEUocnRwX3BhY2tldC5oZWFkZXIoKS5zaXplKCksCi0gICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHNpemVfdD4oSVBfUEFDS0VUX1NJWkUpKTsKLSAgICBtZW1jcHkoaGVh
ZGVyLCBydHBfcGFja2V0LmhlYWRlcigpLmRhdGEoKSwgcnRwX3BhY2tldC5oZWFkZXIoKS5zaXpl
KCkpOwotICAgIHVpbnQzMl90IHNzcmMgPSBCeXRlUmVhZGVyPHVpbnQzMl90Pjo6UmVhZEJpZ0Vu
ZGlhbihoZWFkZXIgKyA4KTsKLSAgICBTdHJlYW1JZCBzdHJlYW1faWQoCi0gICAgICAgIHNzcmMs
IHJ0cF9wYWNrZXQuaW5jb21pbmcoKSA/IGtJbmNvbWluZ1BhY2tldCA6IGtPdXRnb2luZ1BhY2tl
dCk7Ci0gICAgYXV0byBpdCA9IHJ0cF9leHRlbnNpb25zX21hcHNfLmZpbmQoc3RyZWFtX2lkKTsK
LSAgICBpZiAoaXQgIT0gcnRwX2V4dGVuc2lvbnNfbWFwc18uZW5kKCkpIHsKLSAgICAgIHJldHVy
biBpdC0+c2Vjb25kOwotICAgIH0KLSAgfQotICBpZiAocHJvYmVfY2x1c3Rlcl9pZCAhPSBudWxs
cHRyKSB7Ci0gICAgaWYgKHJ0cF9wYWNrZXQuaGFzX3Byb2JlX2NsdXN0ZXJfaWQoKSkgewotICAg
ICAgKnByb2JlX2NsdXN0ZXJfaWQgPSBydHBfcGFja2V0LnByb2JlX2NsdXN0ZXJfaWQoKTsKLSAg
ICAgIFJUQ19DSEVDS19ORSgqcHJvYmVfY2x1c3Rlcl9pZCwgUGFjZWRQYWNrZXRJbmZvOjprTm90
QVByb2JlKTsKLSAgICB9IGVsc2UgewotICAgICAgKnByb2JlX2NsdXN0ZXJfaWQgPSBQYWNlZFBh
Y2tldEluZm86OmtOb3RBUHJvYmU7Ci0gICAgfQotICB9Ci0gIHJldHVybiBudWxscHRyOwotfQot
Ci0vLyBUaGUgcGFja2V0IG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VUX1NJ
WkUgYnl0ZXMuCi12b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRSdGNwUGFja2V0KHNpemVfdCBp
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0RGlyZWN0
aW9uKiBpbmNvbWluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QqIGxlbmd0aCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZl
bnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwot
ICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShldmVudC50eXBl
KCksIHJ0Y2xvZzo6RXZlbnQ6OlJUQ1BfRVZFTlQpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3J0
Y3BfcGFja2V0KCkpOwotICBjb25zdCBydGNsb2c6OlJ0Y3BQYWNrZXQmIHJ0Y3BfcGFja2V0ID0g
ZXZlbnQucnRjcF9wYWNrZXQoKTsKLSAgLy8gR2V0IGRpcmVjdGlvbiBvZiBwYWNrZXQuCi0gIFJU
Q19DSEVDSyhydGNwX3BhY2tldC5oYXNfaW5jb21pbmcoKSk7Ci0gIGlmIChpbmNvbWluZyAhPSBu
dWxscHRyKSB7Ci0gICAgKmluY29taW5nID0gcnRjcF9wYWNrZXQuaW5jb21pbmcoKSA/IGtJbmNv
bWluZ1BhY2tldCA6IGtPdXRnb2luZ1BhY2tldDsKLSAgfQotICAvLyBHZXQgcGFja2V0IGxlbmd0
aC4KLSAgUlRDX0NIRUNLKHJ0Y3BfcGFja2V0Lmhhc19wYWNrZXRfZGF0YSgpKTsKLSAgaWYgKGxl
bmd0aCAhPSBudWxscHRyKSB7Ci0gICAgKmxlbmd0aCA9IHJ0Y3BfcGFja2V0LnBhY2tldF9kYXRh
KCkuc2l6ZSgpOwotICB9Ci0gIC8vIEdldCBwYWNrZXQgY29udGVudHMuCi0gIGlmIChwYWNrZXQg
IT0gbnVsbHB0cikgewotICAgIFJUQ19DSEVDS19MRShydGNwX3BhY2tldC5wYWNrZXRfZGF0YSgp
LnNpemUoKSwKLSAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElQX1BBQ0tF
VF9TSVpFKSk7Ci0gICAgbWVtY3B5KHBhY2tldCwgcnRjcF9wYWNrZXQucGFja2V0X2RhdGEoKS5k
YXRhKCksCi0gICAgICAgICAgIHJ0Y3BfcGFja2V0LnBhY2tldF9kYXRhKCkuc2l6ZSgpKTsKLSAg
fQotfQotCi1ydGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZzo6R2V0VmlkZW9S
ZWNlaXZlQ29uZmlnKAotICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQo
aW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICByZXR1cm4gR2V0VmlkZW9SZWNlaXZlQ29u
ZmlnKGV2ZW50c19baW5kZXhdKTsKLX0KLQotcnRjbG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRj
RXZlbnRMb2c6OkdldFZpZGVvUmVjZWl2ZUNvbmZpZygKLSAgICBjb25zdCBydGNsb2c6OkV2ZW50
JiBldmVudCkgY29uc3QgewotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7Ci0gIFJUQ19D
SEVDSyhldmVudC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VRKGV2ZW50LnR5cGUoKSwgcnRj
bG9nOjpFdmVudDo6VklERU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UKTsKLSAgUlRDX0NIRUNLKGV2
ZW50Lmhhc192aWRlb19yZWNlaXZlcl9jb25maWcoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6VmlkZW9S
ZWNlaXZlQ29uZmlnJiByZWNlaXZlcl9jb25maWcgPQotICAgICAgZXZlbnQudmlkZW9fcmVjZWl2
ZXJfY29uZmlnKCk7Ci0gIC8vIEdldCBTU1JDcy4KLSAgUlRDX0NIRUNLKHJlY2VpdmVyX2NvbmZp
Zy5oYXNfcmVtb3RlX3NzcmMoKSk7Ci0gIGNvbmZpZy5yZW1vdGVfc3NyYyA9IHJlY2VpdmVyX2Nv
bmZpZy5yZW1vdGVfc3NyYygpOwotICBSVENfQ0hFQ0socmVjZWl2ZXJfY29uZmlnLmhhc19sb2Nh
bF9zc3JjKCkpOwotICBjb25maWcubG9jYWxfc3NyYyA9IHJlY2VpdmVyX2NvbmZpZy5sb2NhbF9z
c3JjKCk7Ci0gIGNvbmZpZy5ydHhfc3NyYyA9IDA7Ci0gIC8vIEdldCBSVENQIHNldHRpbmdzLgot
ICBSVENfQ0hFQ0socmVjZWl2ZXJfY29uZmlnLmhhc19ydGNwX21vZGUoKSk7Ci0gIGNvbmZpZy5y
dGNwX21vZGUgPSBHZXRSdW50aW1lUnRjcE1vZGUocmVjZWl2ZXJfY29uZmlnLnJ0Y3BfbW9kZSgp
KTsKLSAgUlRDX0NIRUNLKHJlY2VpdmVyX2NvbmZpZy5oYXNfcmVtYigpKTsKLSAgY29uZmlnLnJl
bWIgPSByZWNlaXZlcl9jb25maWcucmVtYigpOwotCi0gIC8vIEdldCBSVFggbWFwLgotICBzdGQ6
Om1hcDx1aW50MzJfdCwgY29uc3QgcnRjbG9nOjpSdHhDb25maWc+IHJ0eF9tYXA7Ci0gIGZvciAo
aW50IGkgPSAwOyBpIDwgcmVjZWl2ZXJfY29uZmlnLnJ0eF9tYXBfc2l6ZSgpOyBpKyspIHsKLSAg
ICBjb25zdCBydGNsb2c6OlJ0eE1hcCYgbWFwID0gcmVjZWl2ZXJfY29uZmlnLnJ0eF9tYXAoaSk7
Ci0gICAgUlRDX0NIRUNLKG1hcC5oYXNfcGF5bG9hZF90eXBlKCkpOwotICAgIFJUQ19DSEVDSyht
YXAuaGFzX2NvbmZpZygpKTsKLSAgICBSVENfQ0hFQ0sobWFwLmNvbmZpZygpLmhhc19ydHhfc3Ny
YygpKTsKLSAgICBSVENfQ0hFQ0sobWFwLmNvbmZpZygpLmhhc19ydHhfcGF5bG9hZF90eXBlKCkp
OwotICAgIHJ0eF9tYXAuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKG1hcC5wYXlsb2FkX3R5cGUoKSwg
bWFwLmNvbmZpZygpKSk7Ci0gIH0KLQotICAvLyBHZXQgaGVhZGVyIGV4dGVuc2lvbnMuCi0gIEdl
dEhlYWRlckV4dGVuc2lvbnMoJmNvbmZpZy5ydHBfZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAg
ICAgICAgICByZWNlaXZlcl9jb25maWcuaGVhZGVyX2V4dGVuc2lvbnMoKSk7Ci0gIC8vIEdldCBk
ZWNvZGVycy4KLSAgY29uZmlnLmNvZGVjcy5jbGVhcigpOwotICBmb3IgKGludCBpID0gMDsgaSA8
IHJlY2VpdmVyX2NvbmZpZy5kZWNvZGVyc19zaXplKCk7IGkrKykgewotICAgIFJUQ19DSEVDSyhy
ZWNlaXZlcl9jb25maWcuZGVjb2RlcnMoaSkuaGFzX25hbWUoKSk7Ci0gICAgUlRDX0NIRUNLKHJl
Y2VpdmVyX2NvbmZpZy5kZWNvZGVycyhpKS5oYXNfcGF5bG9hZF90eXBlKCkpOwotICAgIGludCBy
dHhfcGF5bG9hZF90eXBlID0gMDsKLSAgICBhdXRvIHJ0eF9pdCA9IHJ0eF9tYXAuZmluZChyZWNl
aXZlcl9jb25maWcuZGVjb2RlcnMoaSkucGF5bG9hZF90eXBlKCkpOwotICAgIGlmIChydHhfaXQg
IT0gcnR4X21hcC5lbmQoKSkgewotICAgICAgcnR4X3BheWxvYWRfdHlwZSA9IHJ0eF9pdC0+c2Vj
b25kLnJ0eF9wYXlsb2FkX3R5cGUoKTsKLSAgICAgIGlmIChjb25maWcucnR4X3NzcmMgIT0gMCAm
JgotICAgICAgICAgIGNvbmZpZy5ydHhfc3NyYyAhPSBydHhfaXQtPnNlY29uZC5ydHhfc3NyYygp
KSB7Ci0gICAgICAgIFJUQ19MT0coTFNfV0FSTklORykKLSAgICAgICAgICAgIDw8ICJSdGNFdmVu
dExvZyBwcm90b2J1ZiBjb250YWluZWQgZGlmZmVyZW50IFNTUkNzIGZvciAiCi0gICAgICAgICAg
ICAgICAiZGlmZmVyZW50IHJlY2VpdmVkIFJUWCBwYXlsb2FkIHR5cGVzLiBXaWxsIG9ubHkgdXNl
ICIKLSAgICAgICAgICAgICAgICJydHhfc3NyYyA9ICIKLSAgICAgICAgICAgIDw8IGNvbmZpZy5y
dHhfc3NyYyA8PCAiLiI7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBjb25maWcucnR4X3NzcmMg
PSBydHhfaXQtPnNlY29uZC5ydHhfc3NyYygpOwotICAgICAgfQotICAgIH0KLSAgICBjb25maWcu
Y29kZWNzLmVtcGxhY2VfYmFjayhyZWNlaXZlcl9jb25maWcuZGVjb2RlcnMoaSkubmFtZSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyX2NvbmZpZy5kZWNvZGVycyhp
KS5wYXlsb2FkX3R5cGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHhfcGF5
bG9hZF90eXBlKTsKLSAgfQotICByZXR1cm4gY29uZmlnOwotfQotCi1zdGQ6OnZlY3RvcjxydGNs
b2c6OlN0cmVhbUNvbmZpZz4gUGFyc2VkUnRjRXZlbnRMb2c6OkdldFZpZGVvU2VuZENvbmZpZygK
LSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1i
ZXJPZkV2ZW50cygpKTsKLSAgcmV0dXJuIEdldFZpZGVvU2VuZENvbmZpZyhldmVudHNfW2luZGV4
XSk7Ci19Ci0KLXN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBQYXJzZWRSdGNFdmVu
dExvZzo6R2V0VmlkZW9TZW5kQ29uZmlnKAotICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50
KSBjb25zdCB7Ci0gIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWdzOwot
ICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShldmVudC50eXBl
KCksIHJ0Y2xvZzo6RXZlbnQ6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQpOwotICBSVENfQ0hF
Q0soZXZlbnQuaGFzX3ZpZGVvX3NlbmRlcl9jb25maWcoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6Vmlk
ZW9TZW5kQ29uZmlnJiBzZW5kZXJfY29uZmlnID0gZXZlbnQudmlkZW9fc2VuZGVyX2NvbmZpZygp
OwotICBpZiAoc2VuZGVyX2NvbmZpZy5ydHhfc3NyY3Nfc2l6ZSgpID4gMCAmJgotICAgICAgc2Vu
ZGVyX2NvbmZpZy5zc3Jjc19zaXplKCkgIT0gc2VuZGVyX2NvbmZpZy5ydHhfc3NyY3Nfc2l6ZSgp
KSB7Ci0gICAgUlRDX0xPRyhXQVJOSU5HKQotICAgICAgICA8PCAiVmlkZW9TZW5kQ29uZmlnIGlz
IGNvbmZpZ3VyZWQgZm9yIFJUWCBidXQgdGhlIG51bWJlciBvZiAiCi0gICAgICAgICAgICJTU1JD
cyBkb2Vzbid0IG1hdGNoIHRoZSBudW1iZXIgb2YgUlRYIFNTUkNzLiI7Ci0gIH0KLSAgY29uZmln
cy5yZXNpemUoc2VuZGVyX2NvbmZpZy5zc3Jjc19zaXplKCkpOwotICBmb3IgKGludCBpID0gMDsg
aSA8IHNlbmRlcl9jb25maWcuc3NyY3Nfc2l6ZSgpOyBpKyspIHsKLSAgICAvLyBHZXQgU1NSQ3Mu
Ci0gICAgY29uZmlnc1tpXS5sb2NhbF9zc3JjID0gc2VuZGVyX2NvbmZpZy5zc3JjcyhpKTsKLSAg
ICBpZiAoc2VuZGVyX2NvbmZpZy5ydHhfc3NyY3Nfc2l6ZSgpID4gMCAmJgotICAgICAgICBpIDwg
c2VuZGVyX2NvbmZpZy5ydHhfc3NyY3Nfc2l6ZSgpKSB7Ci0gICAgICBSVENfQ0hFQ0soc2VuZGVy
X2NvbmZpZy5oYXNfcnR4X3BheWxvYWRfdHlwZSgpKTsKLSAgICAgIGNvbmZpZ3NbaV0ucnR4X3Nz
cmMgPSBzZW5kZXJfY29uZmlnLnJ0eF9zc3JjcyhpKTsKLSAgICB9Ci0gICAgLy8gR2V0IGhlYWRl
ciBleHRlbnNpb25zLgotICAgIEdldEhlYWRlckV4dGVuc2lvbnMoJmNvbmZpZ3NbaV0ucnRwX2V4
dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZW5kZXJfY29uZmlnLmhlYWRlcl9l
eHRlbnNpb25zKCkpOwotCi0gICAgLy8gR2V0IHRoZSBjb2RlYy4KLSAgICBSVENfQ0hFQ0soc2Vu
ZGVyX2NvbmZpZy5oYXNfZW5jb2RlcigpKTsKLSAgICBSVENfQ0hFQ0soc2VuZGVyX2NvbmZpZy5l
bmNvZGVyKCkuaGFzX25hbWUoKSk7Ci0gICAgUlRDX0NIRUNLKHNlbmRlcl9jb25maWcuZW5jb2Rl
cigpLmhhc19wYXlsb2FkX3R5cGUoKSk7Ci0gICAgY29uZmlnc1tpXS5jb2RlY3MuZW1wbGFjZV9i
YWNrKAotICAgICAgICBzZW5kZXJfY29uZmlnLmVuY29kZXIoKS5uYW1lKCksIHNlbmRlcl9jb25m
aWcuZW5jb2RlcigpLnBheWxvYWRfdHlwZSgpLAotICAgICAgICBzZW5kZXJfY29uZmlnLmhhc19y
dHhfcGF5bG9hZF90eXBlKCkgPyBzZW5kZXJfY29uZmlnLnJ0eF9wYXlsb2FkX3R5cGUoKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwKTsKLSAgfQotICBy
ZXR1cm4gY29uZmlnczsKLX0KLQotcnRjbG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRM
b2c6OkdldEF1ZGlvUmVjZWl2ZUNvbmZpZygKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAg
UlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgcmV0dXJuIEdldEF1
ZGlvUmVjZWl2ZUNvbmZpZyhldmVudHNfW2luZGV4XSk7Ci19Ci0KLXJ0Y2xvZzo6U3RyZWFtQ29u
ZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRBdWRpb1JlY2VpdmVDb25maWcoCi0gICAgY29uc3Qg
cnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29u
ZmlnOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShldmVu
dC50eXBlKCksIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCk7Ci0g
IFJUQ19DSEVDSyhldmVudC5oYXNfYXVkaW9fcmVjZWl2ZXJfY29uZmlnKCkpOwotICBjb25zdCBy
dGNsb2c6OkF1ZGlvUmVjZWl2ZUNvbmZpZyYgcmVjZWl2ZXJfY29uZmlnID0KLSAgICAgIGV2ZW50
LmF1ZGlvX3JlY2VpdmVyX2NvbmZpZygpOwotICAvLyBHZXQgU1NSQ3MuCi0gIFJUQ19DSEVDSyhy
ZWNlaXZlcl9jb25maWcuaGFzX3JlbW90ZV9zc3JjKCkpOwotICBjb25maWcucmVtb3RlX3NzcmMg
PSByZWNlaXZlcl9jb25maWcucmVtb3RlX3NzcmMoKTsKLSAgUlRDX0NIRUNLKHJlY2VpdmVyX2Nv
bmZpZy5oYXNfbG9jYWxfc3NyYygpKTsKLSAgY29uZmlnLmxvY2FsX3NzcmMgPSByZWNlaXZlcl9j
b25maWcubG9jYWxfc3NyYygpOwotICAvLyBHZXQgaGVhZGVyIGV4dGVuc2lvbnMuCi0gIEdldEhl
YWRlckV4dGVuc2lvbnMoJmNvbmZpZy5ydHBfZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAg
ICAgICByZWNlaXZlcl9jb25maWcuaGVhZGVyX2V4dGVuc2lvbnMoKSk7Ci0gIHJldHVybiBjb25m
aWc7Ci19Ci0KLXJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRBdWRp
b1NlbmRDb25maWcoc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwg
R2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIHJldHVybiBHZXRBdWRpb1NlbmRDb25maWcoZXZlbnRz
X1tpbmRleF0pOwotfQotCi1ydGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZzo6
R2V0QXVkaW9TZW5kQ29uZmlnKAotICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25z
dCB7Ci0gIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZzsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhh
c190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpB
VURJT19TRU5ERVJfQ09ORklHX0VWRU5UKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19hdWRpb19z
ZW5kZXJfY29uZmlnKCkpOwotICBjb25zdCBydGNsb2c6OkF1ZGlvU2VuZENvbmZpZyYgc2VuZGVy
X2NvbmZpZyA9IGV2ZW50LmF1ZGlvX3NlbmRlcl9jb25maWcoKTsKLSAgLy8gR2V0IFNTUkNzLgot
ICBSVENfQ0hFQ0soc2VuZGVyX2NvbmZpZy5oYXNfc3NyYygpKTsKLSAgY29uZmlnLmxvY2FsX3Nz
cmMgPSBzZW5kZXJfY29uZmlnLnNzcmMoKTsKLSAgLy8gR2V0IGhlYWRlciBleHRlbnNpb25zLgot
ICBHZXRIZWFkZXJFeHRlbnNpb25zKCZjb25maWcucnRwX2V4dGVuc2lvbnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgc2VuZGVyX2NvbmZpZy5oZWFkZXJfZXh0ZW5zaW9ucygpKTsKLSAgcmV0dXJu
IGNvbmZpZzsKLX0KLQotdm9pZCBQYXJzZWRSdGNFdmVudExvZzo6R2V0QXVkaW9QbGF5b3V0KHNp
emVfdCBpbmRleCwgdWludDMyX3QqIHNzcmMpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4
LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBl
dmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hF
Q0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpBVURJT19QTEFZT1VUX0VWRU5UKTsK
LSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19hdWRpb19wbGF5b3V0X2V2ZW50KCkpOwotICBjb25zdCBy
dGNsb2c6OkF1ZGlvUGxheW91dEV2ZW50JiBsb3NzX2V2ZW50ID0gZXZlbnQuYXVkaW9fcGxheW91
dF9ldmVudCgpOwotICBSVENfQ0hFQ0sobG9zc19ldmVudC5oYXNfbG9jYWxfc3NyYygpKTsKLSAg
aWYgKHNzcmMgIT0gbnVsbHB0cikgewotICAgICpzc3JjID0gbG9zc19ldmVudC5sb2NhbF9zc3Jj
KCk7Ci0gIH0KLX0KLQotdm9pZCBQYXJzZWRSdGNFdmVudExvZzo6R2V0TG9zc0Jhc2VkQndlVXBk
YXRlKHNpemVfdCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90KiBiaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBmcmFjdGlvbl9sb3NzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QqIHRvdGFsX3BhY2tldHMp
IGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAg
Y29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNL
KGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6
OkV2ZW50OjpMT1NTX0JBU0VEX0JXRV9VUERBVEUpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX2xv
c3NfYmFzZWRfYndlX3VwZGF0ZSgpKTsKLSAgY29uc3QgcnRjbG9nOjpMb3NzQmFzZWRCd2VVcGRh
dGUmIGxvc3NfZXZlbnQgPSBldmVudC5sb3NzX2Jhc2VkX2J3ZV91cGRhdGUoKTsKLSAgUlRDX0NI
RUNLKGxvc3NfZXZlbnQuaGFzX2JpdHJhdGVfYnBzKCkpOwotICBpZiAoYml0cmF0ZV9icHMgIT0g
bnVsbHB0cikgewotICAgICpiaXRyYXRlX2JwcyA9IGxvc3NfZXZlbnQuYml0cmF0ZV9icHMoKTsK
LSAgfQotICBSVENfQ0hFQ0sobG9zc19ldmVudC5oYXNfZnJhY3Rpb25fbG9zcygpKTsKLSAgaWYg
KGZyYWN0aW9uX2xvc3MgIT0gbnVsbHB0cikgewotICAgICpmcmFjdGlvbl9sb3NzID0gbG9zc19l
dmVudC5mcmFjdGlvbl9sb3NzKCk7Ci0gIH0KLSAgUlRDX0NIRUNLKGxvc3NfZXZlbnQuaGFzX3Rv
dGFsX3BhY2tldHMoKSk7Ci0gIGlmICh0b3RhbF9wYWNrZXRzICE9IG51bGxwdHIpIHsKLSAgICAq
dG90YWxfcGFja2V0cyA9IGxvc3NfZXZlbnQudG90YWxfcGFja2V0cygpOwotICB9Ci19Ci0KLVBh
cnNlZFJ0Y0V2ZW50TG9nOjpCd2VEZWxheUJhc2VkVXBkYXRlCi1QYXJzZWRSdGNFdmVudExvZzo6
R2V0RGVsYXlCYXNlZEJ3ZVVwZGF0ZShzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNL
X0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYg
ZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwot
ICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpERUxBWV9CQVNFRF9C
V0VfVVBEQVRFKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19kZWxheV9iYXNlZF9id2VfdXBkYXRl
KCkpOwotICBjb25zdCBydGNsb2c6OkRlbGF5QmFzZWRCd2VVcGRhdGUmIGRlbGF5X2V2ZW50ID0K
LSAgICAgIGV2ZW50LmRlbGF5X2Jhc2VkX2J3ZV91cGRhdGUoKTsKLQotICBCd2VEZWxheUJhc2Vk
VXBkYXRlIHJlczsKLSAgcmVzLnRpbWVzdGFtcCA9IEdldFRpbWVzdGFtcChpbmRleCk7Ci0gIFJU
Q19DSEVDSyhkZWxheV9ldmVudC5oYXNfYml0cmF0ZV9icHMoKSk7Ci0gIHJlcy5iaXRyYXRlX2Jw
cyA9IGRlbGF5X2V2ZW50LmJpdHJhdGVfYnBzKCk7Ci0gIFJUQ19DSEVDSyhkZWxheV9ldmVudC5o
YXNfZGV0ZWN0b3Jfc3RhdGUoKSk7Ci0gIHJlcy5kZXRlY3Rvcl9zdGF0ZSA9IEdldFJ1bnRpbWVE
ZXRlY3RvclN0YXRlKGRlbGF5X2V2ZW50LmRldGVjdG9yX3N0YXRlKCkpOwotICByZXR1cm4gcmVz
OwotfQotCi12b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRBdWRpb05ldHdvcmtBZGFwdGF0aW9u
KAotICAgIHNpemVfdCBpbmRleCwKLSAgICBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnKiBjb25m
aWcpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsK
LSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NI
RUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNs
b2c6OkV2ZW50OjpBVURJT19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQpOwotICBSVENfQ0hFQ0so
ZXZlbnQuaGFzX2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbigpKTsKLSAgY29uc3QgcnRjbG9nOjpB
dWRpb05ldHdvcmtBZGFwdGF0aW9uJiBhbmFfZXZlbnQgPQotICAgICAgZXZlbnQuYXVkaW9fbmV0
d29ya19hZGFwdGF0aW9uKCk7Ci0gIGlmIChhbmFfZXZlbnQuaGFzX2JpdHJhdGVfYnBzKCkpCi0g
ICAgY29uZmlnLT5iaXRyYXRlX2JwcyA9IGFuYV9ldmVudC5iaXRyYXRlX2JwcygpOwotICBpZiAo
YW5hX2V2ZW50Lmhhc19lbmFibGVfZmVjKCkpCi0gICAgY29uZmlnLT5lbmFibGVfZmVjID0gYW5h
X2V2ZW50LmVuYWJsZV9mZWMoKTsKLSAgaWYgKGFuYV9ldmVudC5oYXNfZW5hYmxlX2R0eCgpKQot
ICAgIGNvbmZpZy0+ZW5hYmxlX2R0eCA9IGFuYV9ldmVudC5lbmFibGVfZHR4KCk7Ci0gIGlmIChh
bmFfZXZlbnQuaGFzX2ZyYW1lX2xlbmd0aF9tcygpKQotICAgIGNvbmZpZy0+ZnJhbWVfbGVuZ3Ro
X21zID0gYW5hX2V2ZW50LmZyYW1lX2xlbmd0aF9tcygpOwotICBpZiAoYW5hX2V2ZW50Lmhhc19u
dW1fY2hhbm5lbHMoKSkKLSAgICBjb25maWctPm51bV9jaGFubmVscyA9IGFuYV9ldmVudC5udW1f
Y2hhbm5lbHMoKTsKLSAgaWYgKGFuYV9ldmVudC5oYXNfdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0
aW9uKCkpCi0gICAgY29uZmlnLT51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24gPQotICAgICAg
ICBhbmFfZXZlbnQudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKCk7Ci19Ci0KLVBhcnNlZFJ0
Y0V2ZW50TG9nOjpCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQKLVBhcnNlZFJ0Y0V2ZW50TG9n
OjpHZXRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkKHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENf
Q0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2
ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUo
KSk7Ci0gIFJUQ19DSEVDS19FUShldmVudC50eXBlKCksIHJ0Y2xvZzo6RXZlbnQ6OkJXRV9QUk9C
RV9DTFVTVEVSX0NSRUFURURfRVZFTlQpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3Byb2JlX2Ns
dXN0ZXIoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6QndlUHJvYmVDbHVzdGVyJiBwY2NfZXZlbnQgPSBl
dmVudC5wcm9iZV9jbHVzdGVyKCk7Ci0gIEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCByZXM7
Ci0gIHJlcy50aW1lc3RhbXAgPSBHZXRUaW1lc3RhbXAoaW5kZXgpOwotICBSVENfQ0hFQ0socGNj
X2V2ZW50Lmhhc19pZCgpKTsKLSAgcmVzLmlkID0gcGNjX2V2ZW50LmlkKCk7Ci0gIFJUQ19DSEVD
SyhwY2NfZXZlbnQuaGFzX2JpdHJhdGVfYnBzKCkpOwotICByZXMuYml0cmF0ZV9icHMgPSBwY2Nf
ZXZlbnQuYml0cmF0ZV9icHMoKTsKLSAgUlRDX0NIRUNLKHBjY19ldmVudC5oYXNfbWluX3BhY2tl
dHMoKSk7Ci0gIHJlcy5taW5fcGFja2V0cyA9IHBjY19ldmVudC5taW5fcGFja2V0cygpOwotICBS
VENfQ0hFQ0socGNjX2V2ZW50Lmhhc19taW5fYnl0ZXMoKSk7Ci0gIHJlcy5taW5fYnl0ZXMgPSBw
Y2NfZXZlbnQubWluX2J5dGVzKCk7Ci0gIHJldHVybiByZXM7Ci19Ci0KLVBhcnNlZFJ0Y0V2ZW50
TG9nOjpCd2VQcm9iZVJlc3VsdEV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRCd2VQcm9iZVJl
c3VsdCgKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBH
ZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVu
dHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tf
RVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfUkVTVUxUX0VWRU5UKTsK
LSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19wcm9iZV9yZXN1bHQoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6
QndlUHJvYmVSZXN1bHQmIHByX2V2ZW50ID0gZXZlbnQucHJvYmVfcmVzdWx0KCk7Ci0gIEJ3ZVBy
b2JlUmVzdWx0RXZlbnQgcmVzOwotICByZXMudGltZXN0YW1wID0gR2V0VGltZXN0YW1wKGluZGV4
KTsKLSAgUlRDX0NIRUNLKHByX2V2ZW50Lmhhc19pZCgpKTsKLSAgcmVzLmlkID0gcHJfZXZlbnQu
aWQoKTsKLQotICBSVENfQ0hFQ0socHJfZXZlbnQuaGFzX3Jlc3VsdCgpKTsKLSAgaWYgKHByX2V2
ZW50LnJlc3VsdCgpID09IHJ0Y2xvZzo6QndlUHJvYmVSZXN1bHQ6OlNVQ0NFU1MpIHsKLSAgICBS
VENfQ0hFQ0socHJfZXZlbnQuaGFzX2JpdHJhdGVfYnBzKCkpOwotICAgIHJlcy5iaXRyYXRlX2Jw
cyA9IHByX2V2ZW50LmJpdHJhdGVfYnBzKCk7Ci0gIH0gZWxzZSBpZiAocHJfZXZlbnQucmVzdWx0
KCkgPT0KLSAgICAgICAgICAgICBydGNsb2c6OkJ3ZVByb2JlUmVzdWx0OjpJTlZBTElEX1NFTkRf
UkVDRUlWRV9JTlRFUlZBTCkgewotICAgIHJlcy5mYWlsdXJlX3JlYXNvbiA9IFByb2JlRmFpbHVy
ZVJlYXNvbjo6a0ludmFsaWRTZW5kUmVjZWl2ZUludGVydmFsOwotICB9IGVsc2UgaWYgKHByX2V2
ZW50LnJlc3VsdCgpID09Ci0gICAgICAgICAgICAgcnRjbG9nOjpCd2VQcm9iZVJlc3VsdDo6SU5W
QUxJRF9TRU5EX1JFQ0VJVkVfUkFUSU8pIHsKLSAgICByZXMuZmFpbHVyZV9yZWFzb24gPSBQcm9i
ZUZhaWx1cmVSZWFzb246OmtJbnZhbGlkU2VuZFJlY2VpdmVSYXRpbzsKLSAgfSBlbHNlIGlmIChw
cl9ldmVudC5yZXN1bHQoKSA9PSBydGNsb2c6OkJ3ZVByb2JlUmVzdWx0OjpUSU1FT1VUKSB7Ci0g
ICAgcmVzLmZhaWx1cmVfcmVhc29uID0gUHJvYmVGYWlsdXJlUmVhc29uOjprVGltZW91dDsKLSAg
fSBlbHNlIHsKLSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICB9Ci0KLSAgcmV0dXJuIHJlczsKLX0K
LQotUGFyc2VkUnRjRXZlbnRMb2c6OkFsclN0YXRlRXZlbnQgUGFyc2VkUnRjRXZlbnRMb2c6Okdl
dEFsclN0YXRlKAotICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5k
ZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9
IGV2ZW50c19baW5kZXhdOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19D
SEVDS19FUShldmVudC50eXBlKCksIHJ0Y2xvZzo6RXZlbnQ6OkFMUl9TVEFURV9FVkVOVCk7Ci0g
IFJUQ19DSEVDSyhldmVudC5oYXNfYWxyX3N0YXRlKCkpOwotICBjb25zdCBydGNsb2c6OkFsclN0
YXRlJiBhbHJfZXZlbnQgPSBldmVudC5hbHJfc3RhdGUoKTsKLSAgQWxyU3RhdGVFdmVudCByZXM7
Ci0gIHJlcy50aW1lc3RhbXAgPSBHZXRUaW1lc3RhbXAoaW5kZXgpOwotICBSVENfQ0hFQ0soYWxy
X2V2ZW50Lmhhc19pbl9hbHIoKSk7Ci0gIHJlcy5pbl9hbHIgPSBhbHJfZXZlbnQuaW5fYWxyKCk7
Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotUGFyc2VkUnRjRXZlbnRMb2c6OkljZUNhbmRpZGF0ZVBh
aXJDb25maWcKLVBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKHNp
emVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZl
bnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBydGNfZXZlbnQgPSBldmVudHNfW2luZGV4
XTsKLSAgUlRDX0NIRUNLKHJ0Y19ldmVudC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VRKHJ0
Y19ldmVudC50eXBlKCksIHJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJUl9DT05GSUcp
OwotICBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnIHJlczsKLSAgY29uc3QgcnRjbG9nOjpJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnJiBjb25maWcgPQotICAgICAgcnRjX2V2ZW50LmljZV9jYW5kaWRhdGVf
cGFpcl9jb25maWcoKTsKLSAgcmVzLnRpbWVzdGFtcCA9IEdldFRpbWVzdGFtcChpbmRleCk7Ci0g
IFJUQ19DSEVDSyhjb25maWcuaGFzX2NvbmZpZ190eXBlKCkpOwotICByZXMudHlwZSA9IEdldFJ1
bnRpbWVJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZShjb25maWcuY29uZmlnX3R5cGUoKSk7Ci0g
IFJUQ19DSEVDSyhjb25maWcuaGFzX2NhbmRpZGF0ZV9wYWlyX2lkKCkpOwotICByZXMuY2FuZGlk
YXRlX3BhaXJfaWQgPSBjb25maWcuY2FuZGlkYXRlX3BhaXJfaWQoKTsKLSAgUlRDX0NIRUNLKGNv
bmZpZy5oYXNfbG9jYWxfY2FuZGlkYXRlX3R5cGUoKSk7Ci0gIHJlcy5sb2NhbF9jYW5kaWRhdGVf
dHlwZSA9Ci0gICAgICBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlVHlwZShjb25maWcubG9jYWxfY2Fu
ZGlkYXRlX3R5cGUoKSk7Ci0gIFJUQ19DSEVDSyhjb25maWcuaGFzX2xvY2FsX3JlbGF5X3Byb3Rv
Y29sKCkpOwotICByZXMubG9jYWxfcmVsYXlfcHJvdG9jb2wgPQotICAgICAgR2V0UnVudGltZUlj
ZUNhbmRpZGF0ZVBhaXJQcm90b2NvbChjb25maWcubG9jYWxfcmVsYXlfcHJvdG9jb2woKSk7Ci0g
IFJUQ19DSEVDSyhjb25maWcuaGFzX2xvY2FsX25ldHdvcmtfdHlwZSgpKTsKLSAgcmVzLmxvY2Fs
X25ldHdvcmtfdHlwZSA9Ci0gICAgICBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGUo
Y29uZmlnLmxvY2FsX25ldHdvcmtfdHlwZSgpKTsKLSAgUlRDX0NIRUNLKGNvbmZpZy5oYXNfbG9j
YWxfYWRkcmVzc19mYW1pbHkoKSk7Ci0gIHJlcy5sb2NhbF9hZGRyZXNzX2ZhbWlseSA9Ci0gICAg
ICBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHkoY29uZmlnLmxvY2FsX2Fk
ZHJlc3NfZmFtaWx5KCkpOwotICBSVENfQ0hFQ0soY29uZmlnLmhhc19yZW1vdGVfY2FuZGlkYXRl
X3R5cGUoKSk7Ci0gIHJlcy5yZW1vdGVfY2FuZGlkYXRlX3R5cGUgPQotICAgICAgR2V0UnVudGlt
ZUljZUNhbmRpZGF0ZVR5cGUoY29uZmlnLnJlbW90ZV9jYW5kaWRhdGVfdHlwZSgpKTsKLSAgUlRD
X0NIRUNLKGNvbmZpZy5oYXNfcmVtb3RlX2FkZHJlc3NfZmFtaWx5KCkpOwotICByZXMucmVtb3Rl
X2FkZHJlc3NfZmFtaWx5ID0KLSAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyQWRkcmVz
c0ZhbWlseShjb25maWcucmVtb3RlX2FkZHJlc3NfZmFtaWx5KCkpOwotICBSVENfQ0hFQ0soY29u
ZmlnLmhhc19jYW5kaWRhdGVfcGFpcl9wcm90b2NvbCgpKTsKLSAgcmVzLmNhbmRpZGF0ZV9wYWly
X3Byb3RvY29sID0KLSAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2woY29u
ZmlnLmNhbmRpZGF0ZV9wYWlyX3Byb3RvY29sKCkpOwotICByZXR1cm4gcmVzOwotfQotCi1QYXJz
ZWRSdGNFdmVudExvZzo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50Ci1QYXJzZWRSdGNFdmVudExvZzo6
R2V0SWNlQ2FuZGlkYXRlUGFpckV2ZW50KHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hF
Q0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50
JiBydGNfZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKHJ0Y19ldmVudC5oYXNf
dHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VRKHJ0Y19ldmVudC50eXBlKCksIHJ0Y2xvZzo6RXZlbnQ6
OklDRV9DQU5ESURBVEVfUEFJUl9FVkVOVCk7Ci0gIEljZUNhbmRpZGF0ZVBhaXJFdmVudCByZXM7
Ci0gIGNvbnN0IHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50JiBldmVudCA9Ci0gICAgICBy
dGNfZXZlbnQuaWNlX2NhbmRpZGF0ZV9wYWlyX2V2ZW50KCk7Ci0gIHJlcy50aW1lc3RhbXAgPSBH
ZXRUaW1lc3RhbXAoaW5kZXgpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX2V2ZW50X3R5cGUoKSk7
Ci0gIHJlcy50eXBlID0gR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUoZXZlbnQu
ZXZlbnRfdHlwZSgpKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19jYW5kaWRhdGVfcGFpcl9pZCgp
KTsKLSAgcmVzLmNhbmRpZGF0ZV9wYWlyX2lkID0gZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQoKTsK
LSAgcmV0dXJuIHJlczsKLX0KLQotLy8gUmV0dXJucyB0aGUgTWVkaWFUeXBlIGZvciByZWdpc3Rl
cmVkIFNTUkNzLiBTZWFyY2ggZnJvbSB0aGUgZW5kIHRvIHVzZSBsYXN0Ci0vLyByZWdpc3RlcmVk
IHR5cGVzIGZpcnN0LgotUGFyc2VkUnRjRXZlbnRMb2c6Ok1lZGlhVHlwZSBQYXJzZWRSdGNFdmVu
dExvZzo6R2V0TWVkaWFUeXBlKAotICAgIHVpbnQzMl90IHNzcmMsCi0gICAgUGFja2V0RGlyZWN0
aW9uIGRpcmVjdGlvbikgY29uc3QgewotICBmb3IgKGF1dG8gcml0ID0gc3RyZWFtc18ucmJlZ2lu
KCk7IHJpdCAhPSBzdHJlYW1zXy5yZW5kKCk7ICsrcml0KSB7Ci0gICAgaWYgKHJpdC0+c3NyYyA9
PSBzc3JjICYmIHJpdC0+ZGlyZWN0aW9uID09IGRpcmVjdGlvbikKLSAgICAgIHJldHVybiByaXQt
Pm1lZGlhX3R5cGU7Ci0gIH0KLSAgcmV0dXJuIE1lZGlhVHlwZTo6QU5ZOwotfQotfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzkzZWM2ZGE3YzM2MWFiYWJhZGM1ZjI2MzQ0MTBmMDI4YWNiOGI2OC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xv
Z19wYXJzZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi0vKgotICogIENvcHly
aWdodCAoYykgMjAxNiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLSNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9HX1JUQ19FVkVOVF9MT0dfUEFS
U0VSX0hfCi0jZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19SVENfRVZFTlRfTE9HX1BBUlNF
Ul9IXwotCi0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHNzdHJlYW0+ICAvLyBuby1wcmVzdWJt
aXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8
dXRpbGl0eT4gIC8vIHBhaXIKLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJjYWxsL3Zp
ZGVvX3JlY2VpdmVfc3RyZWFtLmgiCi0jaW5jbHVkZSAiY2FsbC92aWRlb19zZW5kX3N0cmVhbS5o
IgotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9j
YW5kaWRhdGVfcGFpci5oIgotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWcuaCIKLSNpbmNsdWRlICJsb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfZmFpbHVyZS5oIgot
I2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCi0jaW5jbHVk
ZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19zdHJlYW1fY29uZmlnLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9pZ25vcmVfd3VuZGVmLmgiCi0KLS8vIEZpbGVzIGdlbmVyYXRlZCBhdCBidWlsZC10aW1l
IGJ5IHRoZSBwcm90b2J1ZiBjb21waWxlci4KLVJUQ19QVVNIX0lHTk9SSU5HX1dVTkRFRigpCi0j
aWZkZWYgV0VCUlRDX0FORFJPSURfUExBVEZPUk1fQlVJTEQKLSNpbmNsdWRlICJleHRlcm5hbC93
ZWJydGMvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLnBiLmgiCi0j
ZWxzZQotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLnBiLmgi
Ci0jZW5kaWYKLVJUQ19QT1BfSUdOT1JJTkdfV1VOREVGKCkKLQotbmFtZXNwYWNlIHdlYnJ0YyB7
Ci0KLWVudW0gY2xhc3MgQmFuZHdpZHRoVXNhZ2U7Ci1lbnVtIGNsYXNzIE1lZGlhVHlwZTsKLQot
c3RydWN0IEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc7Ci0KLWNsYXNzIFBhcnNlZFJ0Y0V2ZW50
TG9nIHsKLSAgZnJpZW5kIGNsYXNzIFJ0Y0V2ZW50TG9nVGVzdEhlbHBlcjsKLQotIHB1YmxpYzoK
LSAgUGFyc2VkUnRjRXZlbnRMb2coKTsKLSAgflBhcnNlZFJ0Y0V2ZW50TG9nKCk7Ci0KLSAgc3Ry
dWN0IEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCB7Ci0gICAgdWludDY0X3QgdGltZXN0YW1w
OwotICAgIHVpbnQzMl90IGlkOwotICAgIHVpbnQ2NF90IGJpdHJhdGVfYnBzOwotICAgIHVpbnQz
Ml90IG1pbl9wYWNrZXRzOwotICAgIHVpbnQzMl90IG1pbl9ieXRlczsKLSAgfTsKLQotICBzdHJ1
Y3QgQndlUHJvYmVSZXN1bHRFdmVudCB7Ci0gICAgQndlUHJvYmVSZXN1bHRFdmVudCgpOwotICAg
IEJ3ZVByb2JlUmVzdWx0RXZlbnQoY29uc3QgQndlUHJvYmVSZXN1bHRFdmVudCYpOwotCi0gICAg
dWludDY0X3QgdGltZXN0YW1wOwotICAgIHVpbnQzMl90IGlkOwotICAgIGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90PiBiaXRyYXRlX2JwczsKLSAgICBhYnNsOjpvcHRpb25hbDxQcm9iZUZhaWx1cmVS
ZWFzb24+IGZhaWx1cmVfcmVhc29uOwotICB9OwotCi0gIHN0cnVjdCBCd2VEZWxheUJhc2VkVXBk
YXRlIHsKLSAgICB1aW50NjRfdCB0aW1lc3RhbXA7Ci0gICAgaW50MzJfdCBiaXRyYXRlX2JwczsK
LSAgICBCYW5kd2lkdGhVc2FnZSBkZXRlY3Rvcl9zdGF0ZTsKLSAgfTsKLQotICBzdHJ1Y3QgQWxy
U3RhdGVFdmVudCB7Ci0gICAgdWludDY0X3QgdGltZXN0YW1wOwotICAgIGJvb2wgaW5fYWxyOwot
ICB9OwotCi0gIHN0cnVjdCBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnIHsKLSAgICB1aW50NjRfdCB0
aW1lc3RhbXA7Ci0gICAgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgdHlwZTsKLSAgICB1aW50
MzJfdCBjYW5kaWRhdGVfcGFpcl9pZDsKLSAgICBJY2VDYW5kaWRhdGVUeXBlIGxvY2FsX2NhbmRp
ZGF0ZV90eXBlOwotICAgIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbCBsb2NhbF9yZWxheV9wcm90
b2NvbDsKLSAgICBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZSBsb2NhbF9uZXR3b3JrX3R5cGU7Ci0g
ICAgSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHkgbG9jYWxfYWRkcmVzc19mYW1pbHk7Ci0g
ICAgSWNlQ2FuZGlkYXRlVHlwZSByZW1vdGVfY2FuZGlkYXRlX3R5cGU7Ci0gICAgSWNlQ2FuZGlk
YXRlUGFpckFkZHJlc3NGYW1pbHkgcmVtb3RlX2FkZHJlc3NfZmFtaWx5OwotICAgIEljZUNhbmRp
ZGF0ZVBhaXJQcm90b2NvbCBjYW5kaWRhdGVfcGFpcl9wcm90b2NvbDsKLSAgfTsKLQotICBzdHJ1
Y3QgSWNlQ2FuZGlkYXRlUGFpckV2ZW50IHsKLSAgICB1aW50NjRfdCB0aW1lc3RhbXA7Ci0gICAg
SWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSB0eXBlOwotICAgIHVpbnQzMl90IGNhbmRpZGF0ZV9w
YWlyX2lkOwotICB9OwotCi0gIGVudW0gRXZlbnRUeXBlIHsKLSAgICBVTktOT1dOX0VWRU5UID0g
MCwKLSAgICBMT0dfU1RBUlQgPSAxLAotICAgIExPR19FTkQgPSAyLAotICAgIFJUUF9FVkVOVCA9
IDMsCi0gICAgUlRDUF9FVkVOVCA9IDQsCi0gICAgQVVESU9fUExBWU9VVF9FVkVOVCA9IDUsCi0g
ICAgTE9TU19CQVNFRF9CV0VfVVBEQVRFID0gNiwKLSAgICBERUxBWV9CQVNFRF9CV0VfVVBEQVRF
ID0gNywKLSAgICBWSURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQgPSA4LAotICAgIFZJREVPX1NF
TkRFUl9DT05GSUdfRVZFTlQgPSA5LAotICAgIEFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCA9
IDEwLAotICAgIEFVRElPX1NFTkRFUl9DT05GSUdfRVZFTlQgPSAxMSwKLSAgICBBVURJT19ORVRX
T1JLX0FEQVBUQVRJT05fRVZFTlQgPSAxNiwKLSAgICBCV0VfUFJPQkVfQ0xVU1RFUl9DUkVBVEVE
X0VWRU5UID0gMTcsCi0gICAgQldFX1BST0JFX1JFU1VMVF9FVkVOVCA9IDE4LAotICAgIEFMUl9T
VEFURV9FVkVOVCA9IDE5LAotICAgIElDRV9DQU5ESURBVEVfUEFJUl9DT05GSUcgPSAyMCwKLSAg
ICBJQ0VfQ0FORElEQVRFX1BBSVJfRVZFTlQgPSAyMSwKLSAgfTsKLQotICBlbnVtIGNsYXNzIE1l
ZGlhVHlwZSB7IEFOWSwgQVVESU8sIFZJREVPLCBEQVRBIH07Ci0KLSAgLy8gUmVhZHMgYW4gUnRj
RXZlbnRMb2cgZmlsZSBhbmQgcmV0dXJucyB0cnVlIGlmIHBhcnNpbmcgd2FzIHN1Y2Nlc3NmdWwu
Ci0gIGJvb2wgUGFyc2VGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpOwotCi0gIC8v
IFJlYWRzIGFuIFJ0Y0V2ZW50TG9nIGZyb20gYSBzdHJpbmcgYW5kIHJldHVybnMgdHJ1ZSBpZiBz
dWNjZXNzZnVsLgotICBib29sIFBhcnNlU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKTsKLQot
ICAvLyBSZWFkcyBhbiBSdGNFdmVudExvZyBmcm9tIGFuIGlzdHJlYW0gYW5kIHJldHVybnMgdHJ1
ZSBpZiBzdWNjZXNzZnVsLgotICBib29sIFBhcnNlU3RyZWFtKHN0ZDo6aXN0cmVhbSYgc3RyZWFt
KTsKLQotICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZXZlbnRzIGluIGFuIEV2ZW50U3RyZWFt
LgotICBzaXplX3QgR2V0TnVtYmVyT2ZFdmVudHMoKSBjb25zdDsKLQotICAvLyBSZWFkcyB0aGUg
YXJyaXZhbCB0aW1lc3RhbXAgKGluIG1pY3Jvc2Vjb25kcykgZnJvbSBhIHJ0Y2xvZzo6RXZlbnQu
Ci0gIGludDY0X3QgR2V0VGltZXN0YW1wKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVh
ZHMgdGhlIGV2ZW50IHR5cGUgb2YgdGhlIHJ0Y2xvZzo6RXZlbnQgYXQgfGluZGV4fC4KLSAgRXZl
bnRUeXBlIEdldEV2ZW50VHlwZShzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIHRo
ZSBoZWFkZXIsIGRpcmVjdGlvbiwgaGVhZGVyIGxlbmd0aCBhbmQgcGFja2V0IGxlbmd0aCBmcm9t
IHRoZSBSVFAKLSAgLy8gZXZlbnQgYXQgfGluZGV4fCwgYW5kIHN0b3JlcyB0aGUgdmFsdWVzIGlu
IHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dAotICAvLyBwYXJhbWV0ZXJzLiBFYWNoIG91dHB1dCBw
YXJhbWV0ZXIgY2FuIGJlIHNldCB0byBudWxscHRyIGlmIHRoYXQgdmFsdWUKLSAgLy8gaXNuJ3Qg
bmVlZGVkLgotICAvLyBOQjogVGhlIGhlYWRlciBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxlYXN0
IElQX1BBQ0tFVF9TSVpFIGJ5dGVzLgotICAvLyBSZXR1cm5zOiBhIHBvaW50ZXIgdG8gYSBoZWFk
ZXIgZXh0ZW5zaW9ucyBtYXAgYWNxdWlyZWQgZnJvbSBwYXJzaW5nCi0gIC8vIGNvcnJlc3BvbmRp
bmcgQXVkaW8vVmlkZW8gU2VuZGVyL1JlY2VpdmVyIGNvbmZpZyBldmVudHMuCi0gIC8vIFdhcm5p
bmc6IGlmIHRoZSBzYW1lIFNTUkMgaXMgcmV1c2VkIGJ5IGJvdGggdmlkZW8gYW5kIGF1ZGlvIHN0
cmVhbXMgZHVyaW5nCi0gIC8vIGNhbGwsIGV4dGVuc2lvbnMgbWFwcyBtYXkgYmUgaW5jb3JyZWN0
ICh0aGUgbGFzdCBvbmUgd291bGQgYmUgcmV0dXJuZWQpLgotICB3ZWJydGM6OlJ0cEhlYWRlckV4
dGVuc2lvbk1hcCogR2V0UnRwSGVhZGVyKHNpemVfdCBpbmRleCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrZXREaXJlY3Rpb24qIGluY29taW5nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGhl
YWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QqIGhlYWRlcl9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90KiB0b3RhbF9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50KiBwcm9iZV9jbHVzdGVyX2lkKSBjb25zdDsKLQotICAv
LyBSZWFkcyBwYWNrZXQsIGRpcmVjdGlvbiBhbmQgcGFja2V0IGxlbmd0aCBmcm9tIHRoZSBSVENQ
IGV2ZW50IGF0IHxpbmRleHwsCi0gIC8vIGFuZCBzdG9yZXMgdGhlIHZhbHVlcyBpbiB0aGUgY29y
cmVzcG9uZGluZyBvdXRwdXQgcGFyYW1ldGVycy4KLSAgLy8gRWFjaCBvdXRwdXQgcGFyYW1ldGVy
IGNhbiBiZSBzZXQgdG8gbnVsbHB0ciBpZiB0aGF0IHZhbHVlIGlzbid0IG5lZWRlZC4KLSAgLy8g
TkI6IFRoZSBwYWNrZXQgbXVzdCBoYXZlIHNwYWNlIGZvciBhdCBsZWFzdCBJUF9QQUNLRVRfU0la
RSBieXRlcy4KLSAgdm9pZCBHZXRSdGNwUGFja2V0KHNpemVfdCBpbmRleCwKLSAgICAgICAgICAg
ICAgICAgICAgIFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcsCi0gICAgICAgICAgICAgICAgICAg
ICB1aW50OF90KiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGxlbmd0aCkg
Y29uc3Q7Ci0KLSAgLy8gUmVhZHMgYSB2aWRlbyByZWNlaXZlIGNvbmZpZyBldmVudCB0byBhIFN0
cmVhbUNvbmZpZyBzdHJ1Y3QuCi0gIC8vIE9ubHkgdGhlIGZpZWxkcyB0aGF0IGFyZSBzdG9yZWQg
aW4gdGhlIHByb3RvYnVmIHdpbGwgYmUgd3JpdHRlbi4KLSAgcnRjbG9nOjpTdHJlYW1Db25maWcg
R2V0VmlkZW9SZWNlaXZlQ29uZmlnKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMg
YSB2aWRlbyBzZW5kIGNvbmZpZyBldmVudCB0byBhIFN0cmVhbUNvbmZpZyBzdHJ1Y3QuIElmIHRo
ZSBwcm90bwotICAvLyBjb250YWlucyBtdWx0aXBsZSBTU1JDcyBhbmQgUlRYIFNTUkNzICh0aGlz
IHVzZWQgdG8gYmUgdGhlIGNhc2UgZm9yCi0gIC8vIHNpbXVsY2FzdCBzdHJlYW1zKSB0aGVuIHdl
IHJldHVybiBvbmUgU3RyZWFtQ29uZmlnIHBlciBTU1JDLFJUWF9TU1JDIHBhaXIuCi0gIC8vIE9u
bHkgdGhlIGZpZWxkcyB0aGF0IGFyZSBzdG9yZWQgaW4gdGhlIHByb3RvYnVmIHdpbGwgYmUgd3Jp
dHRlbi4KLSAgc3RkOjp2ZWN0b3I8cnRjbG9nOjpTdHJlYW1Db25maWc+IEdldFZpZGVvU2VuZENv
bmZpZyhzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIGEgYXVkaW8gcmVjZWl2ZSBj
b25maWcgZXZlbnQgdG8gYSBTdHJlYW1Db25maWcgc3RydWN0LgotICAvLyBPbmx5IHRoZSBmaWVs
ZHMgdGhhdCBhcmUgc3RvcmVkIGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdyaXR0ZW4uCi0gIHJ0
Y2xvZzo6U3RyZWFtQ29uZmlnIEdldEF1ZGlvUmVjZWl2ZUNvbmZpZyhzaXplX3QgaW5kZXgpIGNv
bnN0OwotCi0gIC8vIFJlYWRzIGEgY29uZmlnIGV2ZW50IHRvIGEgU3RyZWFtQ29uZmlnIHN0cnVj
dC4KLSAgLy8gT25seSB0aGUgZmllbGRzIHRoYXQgYXJlIHN0b3JlZCBpbiB0aGUgcHJvdG9idWYg
d2lsbCBiZSB3cml0dGVuLgotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBHZXRBdWRpb1NlbmRDb25m
aWcoc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyB0aGUgU1NSQyBmcm9tIHRoZSBh
dWRpbyBwbGF5b3V0IGV2ZW50IGF0IHxpbmRleHwuIFRoZSBTU1JDIGlzIHN0b3JlZAotICAvLyBp
biB0aGUgb3V0cHV0IHBhcmFtZXRlciBzc3JjLiBUaGUgb3V0cHV0IHBhcmFtZXRlciBjYW4gYmUg
c2V0IHRvIG51bGxwdHIKLSAgLy8gYW5kIGluIHRoYXQgY2FzZSB0aGUgZnVuY3Rpb24gb25seSBh
c3NlcnRzIHRoYXQgdGhlIGV2ZW50IGlzIHdlbGwgZm9ybWVkLgotICB2b2lkIEdldEF1ZGlvUGxh
eW91dChzaXplX3QgaW5kZXgsIHVpbnQzMl90KiBzc3JjKSBjb25zdDsKLQotICAvLyBSZWFkcyBi
aXRyYXRlLCBmcmFjdGlvbiBsb3NzIChhcyBkZWZpbmVkIGluIFJGQyAxODg5KSBhbmQgdG90YWwg
bnVtYmVyIG9mCi0gIC8vIGV4cGVjdGVkIHBhY2tldHMgZnJvbSB0aGUgbG9zcyBiYXNlZCBCV0Ug
ZXZlbnQgYXQgfGluZGV4fCBhbmQgc3RvcmVzIHRoZQotICAvLyB2YWx1ZXMgaW4KLSAgLy8gdGhl
IGNvcnJlc3BvbmRpbmcgb3V0cHV0IHBhcmFtZXRlcnMuIEVhY2ggb3V0cHV0IHBhcmFtZXRlciBj
YW4gYmUgc2V0IHRvCi0gIC8vIG51bGxwdHIgaWYgdGhhdAotICAvLyB2YWx1ZSBpc24ndCBuZWVk
ZWQuCi0gIHZvaWQgR2V0TG9zc0Jhc2VkQndlVXBkYXRlKHNpemVfdCBpbmRleCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCogYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGZyYWN0aW9uX2xvc3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QqIHRvdGFsX3BhY2tldHMpIGNvbnN0OwotCi0gIC8vIFJlYWRz
IGJpdHJhdGUgYW5kIGRldGVjdG9yX3N0YXRlIGZyb20gdGhlIGRlbGF5IGJhc2VkIEJXRSBldmVu
dCBhdCB8aW5kZXh8Ci0gIC8vIGFuZCBzdG9yZXMgdGhlIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9u
ZGluZyBvdXRwdXQgcGFyYW1ldGVycy4gRWFjaCBvdXRwdXQKLSAgLy8gcGFyYW1ldGVyIGNhbiBi
ZSBzZXQgdG8gbnVsbHB0ciBpZiB0aGF0Ci0gIC8vIHZhbHVlIGlzbid0IG5lZWRlZC4KLSAgQndl
RGVsYXlCYXNlZFVwZGF0ZSBHZXREZWxheUJhc2VkQndlVXBkYXRlKHNpemVfdCBpbmRleCkgY29u
c3Q7Ci0KLSAgLy8gUmVhZHMgYSBhdWRpbyBuZXR3b3JrIGFkYXB0YXRpb24gZXZlbnQgdG8gYSAo
bm9uLU5VTEwpCi0gIC8vIEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWcgc3RydWN0LiBPbmx5IHRo
ZSBmaWVsZHMgdGhhdCBhcmUKLSAgLy8gc3RvcmVkIGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdy
aXR0ZW4uCi0gIHZvaWQgR2V0QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihzaXplX3QgaW5kZXgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmln
KiBjb25maWcpIGNvbnN0OwotCi0gIEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCBHZXRCd2VQ
cm9iZUNsdXN0ZXJDcmVhdGVkKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgQndlUHJvYmVSZXN1
bHRFdmVudCBHZXRCd2VQcm9iZVJlc3VsdChzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIE1lZGlh
VHlwZSBHZXRNZWRpYVR5cGUodWludDMyX3Qgc3NyYywgUGFja2V0RGlyZWN0aW9uIGRpcmVjdGlv
bikgY29uc3Q7Ci0KLSAgQWxyU3RhdGVFdmVudCBHZXRBbHJTdGF0ZShzaXplX3QgaW5kZXgpIGNv
bnN0OwotCi0gIEljZUNhbmRpZGF0ZVBhaXJDb25maWcgR2V0SWNlQ2FuZGlkYXRlUGFpckNvbmZp
ZyhzaXplX3QgaW5kZXgpIGNvbnN0OwotICBJY2VDYW5kaWRhdGVQYWlyRXZlbnQgR2V0SWNlQ2Fu
ZGlkYXRlUGFpckV2ZW50KHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSBwcml2YXRlOgotICBydGNs
b2c6OlN0cmVhbUNvbmZpZyBHZXRWaWRlb1JlY2VpdmVDb25maWcoY29uc3QgcnRjbG9nOjpFdmVu
dCYgZXZlbnQpIGNvbnN0OwotICBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gR2V0
VmlkZW9TZW5kQ29uZmlnKAotICAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0
OwotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBHZXRBdWRpb1JlY2VpdmVDb25maWcoY29uc3QgcnRj
bG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0OwotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBHZXRBdWRp
b1NlbmRDb25maWcoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0OwotCi0gIHN0ZDo6
dmVjdG9yPHJ0Y2xvZzo6RXZlbnQ+IGV2ZW50c187Ci0KLSAgc3RydWN0IFN0cmVhbSB7Ci0gICAg
U3RyZWFtKHVpbnQzMl90IHNzcmMsCi0gICAgICAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlLAot
ICAgICAgICAgICB3ZWJydGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb24sCi0gICAgICAgICAg
IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwIG1hcCkKLSAgICAgICAgOiBzc3JjKHNzcmMp
LAotICAgICAgICAgIG1lZGlhX3R5cGUobWVkaWFfdHlwZSksCi0gICAgICAgICAgZGlyZWN0aW9u
KGRpcmVjdGlvbiksCi0gICAgICAgICAgcnRwX2V4dGVuc2lvbnNfbWFwKG1hcCkge30KLSAgICB1
aW50MzJfdCBzc3JjOwotICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlOwotICAgIHdlYnJ0Yzo6UGFj
a2V0RGlyZWN0aW9uIGRpcmVjdGlvbjsKLSAgICB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1h
cCBydHBfZXh0ZW5zaW9uc19tYXA7Ci0gIH07Ci0KLSAgLy8gQWxsIGNvbmZpZ3VyZWQgc3RyZWFt
cyBmb3VuZCBpbiB0aGUgZXZlbnQgbG9nLgotICBzdGQ6OnZlY3RvcjxTdHJlYW0+IHN0cmVhbXNf
OwotCi0gIC8vIFRvIGZpbmQgY29uZmlndXJlZCBleHRlbnNpb25zIG1hcCBmb3IgZ2l2ZW4gc3Ry
ZWFtLCB3aGF0IGFyZSBuZWVkZWQgdG8KLSAgLy8gcGFyc2UgYSBoZWFkZXIuCi0gIHR5cGVkZWYg
c3RkOjpwYWlyPHVpbnQzMl90LCB3ZWJydGM6OlBhY2tldERpcmVjdGlvbj4gU3RyZWFtSWQ7Ci0g
IHN0ZDo6bWFwPFN0cmVhbUlkLCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCo+IHJ0cF9l
eHRlbnNpb25zX21hcHNfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYg
IC8vIExPR0dJTkdfUlRDX0VWRU5UX0xPR19SVENfRVZFTlRfTE9HX1BBUlNFUl9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZl
bnRfbG9nX3BhcnNlcl9uZXcuY2MKaW5kZXggNWZhNjllZDYzN2Y2NWVhYzA5MTI5YjQ2ZjgyYjg1
OTVmNDEzODQ1Ny4uNzI3OGVhMThiMWQzM2M0NWMzZDhlNzdlMDBlMTJiZmNlZTk4ZTM5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
cnRjX2V2ZW50X2xvZ19wYXJzZXJfbmV3LmNjCkBAIC0yNCwyMSArMjQsMzAgQEAKICNpbmNsdWRl
ICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL3J0cF9oZWFkZXJzLmgiCiAj
aW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19l
dmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmgiCiAjaW5jbHVk
ZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3
b3JrX2FkYXB0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci90
cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2N2by5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF91dGlsaXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wcm90b2J1Zl91
dGlscy5oIgogCit1c2luZyB3ZWJydGNfZXZlbnRfbG9nZ2luZzo6VG9TaWduZWQ7Cit1c2luZyB3
ZWJydGNfZXZlbnRfbG9nZ2luZzo6VG9VbnNpZ25lZDsKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
IG5hbWVzcGFjZSB7CisvLyBDb252ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgbGVnYWN5IHdpcmUgZm9y
bWF0LgogUnRjcE1vZGUgR2V0UnVudGltZVJ0Y3BNb2RlKHJ0Y2xvZzo6VmlkZW9SZWNlaXZlQ29u
ZmlnOjpSdGNwTW9kZSBydGNwX21vZGUpIHsKICAgc3dpdGNoIChydGNwX21vZGUpIHsKICAgICBj
YXNlIHJ0Y2xvZzo6VmlkZW9SZWNlaXZlQ29uZmlnOjpSVENQX0NPTVBPVU5EOgpAQCAtNTAsNTIg
KzU5LDYgQEAgUnRjcE1vZGUgR2V0UnVudGltZVJ0Y3BNb2RlKHJ0Y2xvZzo6VmlkZW9SZWNlaXZl
Q29uZmlnOjpSdGNwTW9kZSBydGNwX21vZGUpIHsKICAgcmV0dXJuIFJ0Y3BNb2RlOjprT2ZmOwog
fQogCi1QYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlIEdldFJ1bnRpbWVFdmVudFR5cGUo
Ci0gICAgcnRjbG9nOjpFdmVudDo6RXZlbnRUeXBlIGV2ZW50X3R5cGUpIHsKLSAgc3dpdGNoIChl
dmVudF90eXBlKSB7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpVTktOT1dOX0VWRU5UOgotICAg
ICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlVOS05PV05fRVZFTlQ7
Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpMT0dfU1RBUlQ6Ci0gICAgICByZXR1cm4gUGFyc2Vk
UnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6TE9HX1NUQVJUOwotICAgIGNhc2UgcnRjbG9nOjpF
dmVudDo6TE9HX0VORDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRU
eXBlOjpMT0dfRU5EOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6UlRQX0VWRU5UOgotICAgICAg
cmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlJUUF9FVkVOVDsKLSAgICBj
YXNlIHJ0Y2xvZzo6RXZlbnQ6OlJUQ1BfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OkV2ZW50VHlwZTo6UlRDUF9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6
OkFVRElPX1BMQVlPVVRfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OkV2ZW50VHlwZTo6QVVESU9fUExBWU9VVF9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6
OkxPU1NfQkFTRURfQldFX1VQREFURToKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05l
dzo6RXZlbnRUeXBlOjpMT1NTX0JBU0VEX0JXRV9VUERBVEU7Ci0gICAgY2FzZSBydGNsb2c6OkV2
ZW50OjpERUxBWV9CQVNFRF9CV0VfVVBEQVRFOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpFdmVudFR5cGU6OkRFTEFZX0JBU0VEX0JXRV9VUERBVEU7Ci0gICAgY2FzZSBydGNs
b2c6OkV2ZW50OjpWSURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFy
c2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6VklERU9fUkVDRUlWRVJfQ09ORklHX0VWRU5U
OwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6VklERU9fU0VOREVSX0NPTkZJR19FVkVOVDoKLSAg
ICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpWSURFT19TRU5ERVJf
Q09ORklHX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QVVESU9fUkVDRUlWRVJfQ09O
RklHX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6
OkFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkFV
RElPX1NFTkRFUl9DT05GSUdfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dO
ZXc6OkV2ZW50VHlwZTo6QVVESU9fU0VOREVSX0NPTkZJR19FVkVOVDsKLSAgICBjYXNlIHJ0Y2xv
Zzo6RXZlbnQ6OkFVRElPX05FVFdPUktfQURBUFRBVElPTl9FVkVOVDoKLSAgICAgIHJldHVybiBQ
YXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpBVURJT19ORVRXT1JLX0FEQVBUQVRJT05f
RVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfQ0xVU1RFUl9DUkVBVEVE
X0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkJX
RV9QUk9CRV9DTFVTVEVSX0NSRUFURURfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpC
V0VfUFJPQkVfUkVTVUxUX0VWRU5UOgotICAgICAgLy8gUHJvYmUgc3VjY2Vzc2VzIGFuZCBmYWls
dXJlcyBhcmUgY3VycmVudGx5IHN0b3JlZCBpbiB0aGUgc2FtZSBwcm90bwotICAgICAgLy8gbWVz
c2FnZSwgd2UgYXJlIG1vdmluZyB0b3dhcmRzIHNlcGFyYXRlIG1lc3NhZ2VzLiBQcm9iZSByZXN1
bHRzCi0gICAgICAvLyB0aGVyZWZvcmUgbmVlZCBzcGVjaWFsIHRyZWF0bWVudCBpbiB0aGUgcGFy
c2VyLgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlVOS05P
V05fRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBTFJfU1RBVEVfRVZFTlQ6Ci0gICAg
ICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QUxSX1NUQVRFX0VWRU5U
OwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRzoKLSAg
ICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRF
X1BBSVJfQ09ORklHOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlS
X0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OklD
RV9DQU5ESURBVEVfUEFJUl9FVkVOVDsKLSAgfQotICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dO
ZXc6OkV2ZW50VHlwZTo6VU5LTk9XTl9FVkVOVDsKLX0KLQogQmFuZHdpZHRoVXNhZ2UgR2V0UnVu
dGltZURldGVjdG9yU3RhdGUoCiAgICAgcnRjbG9nOjpEZWxheUJhc2VkQndlVXBkYXRlOjpEZXRl
Y3RvclN0YXRlIGRldGVjdG9yX3N0YXRlKSB7CiAgIHN3aXRjaCAoZGV0ZWN0b3Jfc3RhdGUpIHsK
QEAgLTIxMiw2ICsxNzUsMTc1IEBAIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgR2V0UnVudGlt
ZUljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUoCiAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZl
bnRUeXBlOjprQ2hlY2tTZW50OwogfQogCisvLyBDb252ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgdmVy
c2lvbiAyIG9mIHRoZSB3aXJlIGZvcm1hdC4KK0JhbmR3aWR0aFVzYWdlIEdldFJ1bnRpbWVEZXRl
Y3RvclN0YXRlKAorICAgIHJ0Y2xvZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVzOjpEZXRlY3RvclN0
YXRlIGRldGVjdG9yX3N0YXRlKSB7CisgIHN3aXRjaCAoZGV0ZWN0b3Jfc3RhdGUpIHsKKyAgICBj
YXNlIHJ0Y2xvZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVzOjpCV0VfTk9STUFMOgorICAgICAgcmV0
dXJuIEJhbmR3aWR0aFVzYWdlOjprQndOb3JtYWw7CisgICAgY2FzZSBydGNsb2cyOjpEZWxheUJh
c2VkQndlVXBkYXRlczo6QldFX1VOREVSVVNJTkc6CisgICAgICByZXR1cm4gQmFuZHdpZHRoVXNh
Z2U6OmtCd1VuZGVydXNpbmc7CisgICAgY2FzZSBydGNsb2cyOjpEZWxheUJhc2VkQndlVXBkYXRl
czo6QldFX09WRVJVU0lORzoKKyAgICAgIHJldHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVz
aW5nOworICAgIGNhc2UgcnRjbG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkJXRV9VTktOT1dO
X1NUQVRFOgorICAgICAgYnJlYWs7CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJu
IEJhbmR3aWR0aFVzYWdlOjprQndOb3JtYWw7Cit9CisKK1Byb2JlRmFpbHVyZVJlYXNvbiBHZXRS
dW50aW1lUHJvYmVGYWlsdXJlUmVhc29uKAorICAgIHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0RmFp
bHVyZTo6RmFpbHVyZVJlYXNvbiBmYWlsdXJlKSB7CisgIHN3aXRjaCAoZmFpbHVyZSkgeworICAg
IGNhc2UgcnRjbG9nMjo6QndlUHJvYmVSZXN1bHRGYWlsdXJlOjpJTlZBTElEX1NFTkRfUkVDRUlW
RV9JTlRFUlZBTDoKKyAgICAgIHJldHVybiBQcm9iZUZhaWx1cmVSZWFzb246OmtJbnZhbGlkU2Vu
ZFJlY2VpdmVJbnRlcnZhbDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0RmFpbHVy
ZTo6SU5WQUxJRF9TRU5EX1JFQ0VJVkVfUkFUSU86CisgICAgICByZXR1cm4gUHJvYmVGYWlsdXJl
UmVhc29uOjprSW52YWxpZFNlbmRSZWNlaXZlUmF0aW87CisgICAgY2FzZSBydGNsb2cyOjpCd2VQ
cm9iZVJlc3VsdEZhaWx1cmU6OlRJTUVPVVQ6CisgICAgICByZXR1cm4gUHJvYmVGYWlsdXJlUmVh
c29uOjprVGltZW91dDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0RmFpbHVyZTo6
VU5LTk9XTjoKKyAgICAgIGJyZWFrOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVy
biBQcm9iZUZhaWx1cmVSZWFzb246OmtUaW1lb3V0OworfQorCitJY2VDYW5kaWRhdGVQYWlyQ29u
ZmlnVHlwZSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUoCisgICAgcnRjbG9n
Mjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgdHlw
ZSkgeworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBh
aXJDb25maWc6OkFEREVEOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBl
OjprQWRkZWQ7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVUERB
VEVEOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlOjprVXBkYXRlZDsK
KyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkRFU1RST1lFRDoKKyAg
ICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a0Rlc3Ryb3llZDsKKyAgICBj
YXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlNFTEVDVEVEOgorICAgICAgcmV0
dXJuIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlOjprU2VsZWN0ZWQ7CisgICAgY2FzZSBydGNs
b2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX0NPTkZJR19UWVBFOgorICAgICAg
YnJlYWs7CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIEljZUNhbmRpZGF0ZVBh
aXJDb25maWdUeXBlOjprQWRkZWQ7Cit9CisKK0ljZUNhbmRpZGF0ZVR5cGUgR2V0UnVudGltZUlj
ZUNhbmRpZGF0ZVR5cGUoCisgICAgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SWNl
Q2FuZGlkYXRlVHlwZSB0eXBlKSB7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgcnRjbG9n
Mjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6TE9DQUw6CisgICAgICByZXR1cm4gSWNlQ2FuZGlk
YXRlVHlwZTo6a0xvY2FsOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZp
Zzo6U1RVTjoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVUeXBlOjprU3R1bjsKKyAgICBjYXNl
IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlBSRkxYOgorICAgICAgcmV0dXJuIElj
ZUNhbmRpZGF0ZVR5cGU6OmtQcmZseDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBh
aXJDb25maWc6OlJFTEFZOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVR5cGU6OmtSZWxheTsK
KyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fQ0FORElE
QVRFX1RZUEU6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlVHlwZTo6a1Vua25vd247CisgIH0K
KyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIEljZUNhbmRpZGF0ZVR5cGU6OmtVbmtub3du
OworfQorCitJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2wgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBh
aXJQcm90b2NvbCgKKyAgICBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpQcm90b2Nv
bCBwcm90b2NvbCkgeworICBzd2l0Y2ggKHByb3RvY29sKSB7CisgICAgY2FzZSBydGNsb2cyOjpJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVRFA6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFp
clByb3RvY29sOjprVWRwOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZp
Zzo6VENQOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbDo6a1RjcDsKKyAg
ICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlNTTFRDUDoKKyAgICAgIHJl
dHVybiBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtTc2x0Y3A7CisgICAgY2FzZSBydGNsb2cy
OjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpUTFM6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRl
UGFpclByb3RvY29sOjprVGxzOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNv
bmZpZzo6VU5LTk9XTl9QUk9UT0NPTDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyUHJv
dG9jb2w6OmtVbmtub3duOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBJY2VD
YW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtVbmtub3duOworfQorCitJY2VDYW5kaWRhdGVQYWlyQWRk
cmVzc0ZhbWlseSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHkoCisgICAg
cnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6QWRkcmVzc0ZhbWlseSBhZGRyZXNzX2Zh
bWlseSkgeworICBzd2l0Y2ggKGFkZHJlc3NfZmFtaWx5KSB7CisgICAgY2FzZSBydGNsb2cyOjpJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJUFY0OgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBh
aXJBZGRyZXNzRmFtaWx5OjprSXB2NDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBh
aXJDb25maWc6OklQVjY6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1p
bHk6OmtJcHY2OworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5L
Tk9XTl9BRERSRVNTX0ZBTUlMWToKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQWRkcmVz
c0ZhbWlseTo6a1Vua25vd247CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIElj
ZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5OjprVW5rbm93bjsKK30KKworSWNlQ2FuZGlkYXRl
TmV0d29ya1R5cGUgR2V0UnVudGltZUljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlKAorICAgIHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6Ok5ldHdvcmtUeXBlIG5ldHdvcmtfdHlwZSkgewor
ICBzd2l0Y2ggKG5ldHdvcmtfdHlwZSkgeworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRl
UGFpckNvbmZpZzo6RVRIRVJORVQ6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlTmV0d29ya1R5
cGU6OmtFdGhlcm5ldDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OkxPT1BCQUNLOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprTG9vcGJh
Y2s7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpXSUZJOgorICAg
ICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprV2lmaTsKKyAgICBjYXNlIHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlZQTjoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRh
dGVOZXR3b3JrVHlwZTo6a1ZwbjsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJD
b25maWc6OkNFTExVTEFSOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjpr
Q2VsbHVsYXI7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVTktO
T1dOX05FVFdPUktfVFlQRToKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6
a1Vua25vd247CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIEljZUNhbmRpZGF0
ZU5ldHdvcmtUeXBlOjprVW5rbm93bjsKK30KKworSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSBH
ZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSgKKyAgICBydGNsb2cyOjpJY2VDYW5k
aWRhdGVQYWlyRXZlbnQ6OkljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgdHlwZSkgeworICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudDo6Q0hF
Q0tfU0VOVDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tT
ZW50OworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpDSEVDS19SRUNF
SVZFRDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tSZWNl
aXZlZDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudDo6Q0hFQ0tfUkVT
UE9OU0VfU0VOVDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hl
Y2tSZXNwb25zZVNlbnQ7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6
OkNIRUNLX1JFU1BPTlNFX1JFQ0VJVkVEOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJF
dmVudFR5cGU6OmtDaGVja1Jlc3BvbnNlUmVjZWl2ZWQ7CisgICAgY2FzZSBydGNsb2cyOjpJY2VD
YW5kaWRhdGVQYWlyRXZlbnQ6OlVOS05PV05fQ0hFQ0tfVFlQRToKKyAgICAgIGJyZWFrOworICB9
CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBl
OjprQ2hlY2tTZW50OworfQorCitzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+IEdldFJ1bnRpbWVS
dHBIZWFkZXJFeHRlbnNpb25Db25maWcoCisgICAgY29uc3QgcnRjbG9nMjo6UnRwSGVhZGVyRXh0
ZW5zaW9uQ29uZmlnJiBwcm90b19oZWFkZXJfZXh0ZW5zaW9ucykgeworICBzdGQ6OnZlY3RvcjxS
dHBFeHRlbnNpb24+IHJ0cF9leHRlbnNpb25zOworICBpZiAocHJvdG9faGVhZGVyX2V4dGVuc2lv
bnMuaGFzX3RyYW5zbWlzc2lvbl90aW1lX29mZnNldF9pZCgpKSB7CisgICAgcnRwX2V4dGVuc2lv
bnMuZW1wbGFjZV9iYWNrKAorICAgICAgICBSdHBFeHRlbnNpb246OmtUaW1lc3RhbXBPZmZzZXRV
cmksCisgICAgICAgIHByb3RvX2hlYWRlcl9leHRlbnNpb25zLnRyYW5zbWlzc2lvbl90aW1lX29m
ZnNldF9pZCgpKTsKKyAgfQorICBpZiAocHJvdG9faGVhZGVyX2V4dGVuc2lvbnMuaGFzX2Fic29s
dXRlX3NlbmRfdGltZV9pZCgpKSB7CisgICAgcnRwX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAor
ICAgICAgICBSdHBFeHRlbnNpb246OmtBYnNTZW5kVGltZVVyaSwKKyAgICAgICAgcHJvdG9faGVh
ZGVyX2V4dGVuc2lvbnMuYWJzb2x1dGVfc2VuZF90aW1lX2lkKCkpOworICB9CisgIGlmIChwcm90
b19oZWFkZXJfZXh0ZW5zaW9ucy5oYXNfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9pZCgpKSB7
CisgICAgcnRwX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAorICAgICAgICBSdHBFeHRlbnNpb246
OmtUcmFuc3BvcnRTZXF1ZW5jZU51bWJlclVyaSwKKyAgICAgICAgcHJvdG9faGVhZGVyX2V4dGVu
c2lvbnMudHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9pZCgpKTsKKyAgfQorICBpZiAocHJvdG9f
aGVhZGVyX2V4dGVuc2lvbnMuaGFzX2F1ZGlvX2xldmVsX2lkKCkpIHsKKyAgICBydHBfZXh0ZW5z
aW9ucy5lbXBsYWNlX2JhY2soUnRwRXh0ZW5zaW9uOjprQXVkaW9MZXZlbFVyaSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9faGVhZGVyX2V4dGVuc2lvbnMuYXVkaW9fbGV2
ZWxfaWQoKSk7CisgIH0KKyAgaWYgKHByb3RvX2hlYWRlcl9leHRlbnNpb25zLmhhc192aWRlb19y
b3RhdGlvbl9pZCgpKSB7CisgICAgcnRwX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKFJ0cEV4dGVu
c2lvbjo6a1ZpZGVvUm90YXRpb25VcmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByb3RvX2hlYWRlcl9leHRlbnNpb25zLnZpZGVvX3JvdGF0aW9uX2lkKCkpOworICB9CisgIHJl
dHVybiBydHBfZXh0ZW5zaW9uczsKK30KKy8vIEVuZCBvZiBjb252ZXJzaW9uIGZ1bmN0aW9ucy4K
KwogLy8gUmVhZHMgYSBWYXJJbnQgZnJvbSB8c3RyZWFtfCBhbmQgcmV0dXJucyBpdC4gQWxzbyB3
cml0ZXMgdGhlIHJlYWQgYnl0ZXMgdG8KIC8vIHxidWZmZXJ8IHN0YXJ0aW5nIHxieXRlc193cml0
dGVufCBieXRlcyBpbnRvIHRoZSBidWZmZXIuIHxieXRlc193cml0dGVufCBpcwogLy8gaW5jcmVt
ZW50ZWQgZm9yIGVhY2ggd3JpdHRlbiBieXRlLgpAQCAtMjcxLDE1ICs0MDMsMzIyIEBAIHZvaWQg
U29ydFBhY2tldEZlZWRiYWNrVmVjdG9yV2l0aExvc3Moc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJh
Y2s+KiB2ZWMpIHsKICAgc3RkOjpzb3J0KHZlYy0+YmVnaW4oKSwgdmVjLT5lbmQoKSwgTG9zc0hh
bmRsaW5nUGFja2V0RmVlZGJhY2tDb21wYXJhdG9yKCkpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgUHJvdG9UeXBlLCB0eXBlbmFtZSBMb2dnZWRUeXBlPgordm9pZCBTdG9yZVJ0cFBhY2tldHMo
CisgICAgY29uc3QgUHJvdG9UeXBlJiBwcm90bywKKyAgICBzdGQ6Om1hcDx1aW50MzJfdCwgc3Rk
Ojp2ZWN0b3I8TG9nZ2VkVHlwZT4+KiBydHBfcGFja2V0c19tYXApIHsKKyAgUlRDX0NIRUNLKHBy
b3RvLmhhc190aW1lc3RhbXBfbXMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfbWFya2VyKCkp
OworICBSVENfQ0hFQ0socHJvdG8uaGFzX3BheWxvYWRfdHlwZSgpKTsKKyAgUlRDX0NIRUNLKHBy
b3RvLmhhc19zZXF1ZW5jZV9udW1iZXIoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfcnRwX3Rp
bWVzdGFtcCgpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19zc3JjKCkpOworICBSVENfQ0hFQ0so
cHJvdG8uaGFzX3BheWxvYWRfc2l6ZSgpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19oZWFkZXJf
c2l6ZSgpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19wYWRkaW5nX3NpemUoKSk7CisKKyAgLy8g
QmFzZSBldmVudAorICB7CisgICAgUlRQSGVhZGVyIGhlYWRlcjsKKyAgICBoZWFkZXIubWFya2Vy
Qml0ID0gcnRjOjpjaGVja2VkX2Nhc3Q8Ym9vbD4ocHJvdG8ubWFya2VyKCkpOworICAgIGhlYWRl
ci5wYXlsb2FkVHlwZSA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQ4X3Q+KHByb3RvLnBheWxvYWRf
dHlwZSgpKTsKKyAgICBoZWFkZXIuc2VxdWVuY2VOdW1iZXIgPQorICAgICAgICBydGM6OmNoZWNr
ZWRfY2FzdDx1aW50MTZfdD4ocHJvdG8uc2VxdWVuY2VfbnVtYmVyKCkpOworICAgIGhlYWRlci50
aW1lc3RhbXAgPSBydGM6OmNoZWNrZWRfY2FzdDx1aW50MzJfdD4ocHJvdG8ucnRwX3RpbWVzdGFt
cCgpKTsKKyAgICBoZWFkZXIuc3NyYyA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQzMl90Pihwcm90
by5zc3JjKCkpOworICAgIGhlYWRlci5udW1DU1JDcyA9IDA7ICAvLyBUT0RPKHRlcmVsaXVzKTog
SW1wbGVtZW50IENTUkMuCisgICAgaGVhZGVyLnBhZGRpbmdMZW5ndGggPSBydGM6OmNoZWNrZWRf
Y2FzdDxzaXplX3Q+KHByb3RvLnBhZGRpbmdfc2l6ZSgpKTsKKyAgICBoZWFkZXIuaGVhZGVyTGVu
Z3RoID0gcnRjOjpjaGVja2VkX2Nhc3Q8c2l6ZV90Pihwcm90by5oZWFkZXJfc2l6ZSgpKTsKKyAg
ICAvLyBUT0RPKHRlcmVsaXVzKTogU2hvdWxkIHdlIGltcGxlbWVudCBwYXlsb2FkX3R5cGVfZnJl
cXVlbmN5PworICAgIGlmIChwcm90by5oYXNfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcigpKSB7
CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyID0gdHJ1
ZTsKKyAgICAgIGhlYWRlci5leHRlbnNpb24udHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIgPQorICAg
ICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQxNl90Pihwcm90by50cmFuc3BvcnRfc2VxdWVu
Y2VfbnVtYmVyKCkpOworICAgIH0KKyAgICBpZiAocHJvdG8uaGFzX3RyYW5zbWlzc2lvbl90aW1l
X29mZnNldCgpKSB7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zbWlzc2lvblRpbWVP
ZmZzZXQgPSB0cnVlOworICAgICAgaGVhZGVyLmV4dGVuc2lvbi50cmFuc21pc3Npb25UaW1lT2Zm
c2V0ID0KKyAgICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDxpbnQzMl90Pihwcm90by50cmFuc21p
c3Npb25fdGltZV9vZmZzZXQoKSk7CisgICAgfQorICAgIGlmIChwcm90by5oYXNfYWJzb2x1dGVf
c2VuZF90aW1lKCkpIHsKKyAgICAgIGhlYWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5kVGlt
ZSA9IHRydWU7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLmFic29sdXRlU2VuZFRpbWUgPQorICAg
ICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQzMl90Pihwcm90by5hYnNvbHV0ZV9zZW5kX3Rp
bWUoKSk7CisgICAgfQorICAgIGlmIChwcm90by5oYXNfdmlkZW9fcm90YXRpb24oKSkgeworICAg
ICAgaGVhZGVyLmV4dGVuc2lvbi5oYXNWaWRlb1JvdGF0aW9uID0gdHJ1ZTsKKyAgICAgIGhlYWRl
ci5leHRlbnNpb24udmlkZW9Sb3RhdGlvbiA9IENvbnZlcnRDVk9CeXRlVG9WaWRlb1JvdGF0aW9u
KAorICAgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQ4X3Q+KHByb3RvLnZpZGVvX3JvdGF0
aW9uKCkpKTsKKyAgICB9CisgICAgaWYgKHByb3RvLmhhc19hdWRpb19sZXZlbCgpKSB7CisgICAg
ICBSVENfQ0hFQ0socHJvdG8uaGFzX3ZvaWNlX2FjdGl2aXR5KCkpOworICAgICAgaGVhZGVyLmV4
dGVuc2lvbi5oYXNBdWRpb0xldmVsID0gdHJ1ZTsKKyAgICAgIGhlYWRlci5leHRlbnNpb24udm9p
Y2VBY3Rpdml0eSA9CisgICAgICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8Ym9vbD4ocHJvdG8udm9p
Y2VfYWN0aXZpdHkoKSk7CisgICAgICBjb25zdCB1aW50OF90IGF1ZGlvX2xldmVsID0KKyAgICAg
ICAgICBydGM6OmNoZWNrZWRfY2FzdDx1aW50OF90Pihwcm90by5hdWRpb19sZXZlbCgpKTsKKyAg
ICAgIFJUQ19DSEVDS19MRShhdWRpb19sZXZlbCwgMHg3RnUpOworICAgICAgaGVhZGVyLmV4dGVu
c2lvbi5hdWRpb0xldmVsID0gYXVkaW9fbGV2ZWw7CisgICAgfSBlbHNlIHsKKyAgICAgIFJUQ19D
SEVDSyghcHJvdG8uaGFzX3ZvaWNlX2FjdGl2aXR5KCkpOworICAgIH0KKyAgICAoKnJ0cF9wYWNr
ZXRzX21hcClbaGVhZGVyLnNzcmNdLmVtcGxhY2VfYmFjaygKKyAgICAgICAgcHJvdG8udGltZXN0
YW1wX21zKCkgKiAxMDAwLCBoZWFkZXIsIHByb3RvLmhlYWRlcl9zaXplKCksCisgICAgICAgIHBy
b3RvLnBheWxvYWRfc2l6ZSgpICsgaGVhZGVyLmhlYWRlckxlbmd0aCArIGhlYWRlci5wYWRkaW5n
TGVuZ3RoKTsKKyAgfQorCisgIGNvbnN0IHNpemVfdCBudW1iZXJfb2ZfZGVsdGFzID0KKyAgICAg
IHByb3RvLmhhc19udW1iZXJfb2ZfZGVsdGFzKCkgPyBwcm90by5udW1iZXJfb2ZfZGVsdGFzKCkg
OiAwdTsKKyAgaWYgKG51bWJlcl9vZl9kZWx0YXMgPT0gMCkgeworICAgIHJldHVybjsKKyAgfQor
CisgIC8vIHRpbWVzdGFtcF9tcyAoZXZlbnQpCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90Pj4gdGltZXN0YW1wX21zX3ZhbHVlcyA9CisgICAgICBEZWNvZGVEZWx0YXMocHJv
dG8udGltZXN0YW1wX21zX2RlbHRhcygpLAorICAgICAgICAgICAgICAgICAgIFRvVW5zaWduZWQo
cHJvdG8udGltZXN0YW1wX21zKCkpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VR
KHRpbWVzdGFtcF9tc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBt
YXJrZXIgKFJUUCBiYXNlKQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+
IG1hcmtlcl92YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLm1hcmtlcl9kZWx0YXMo
KSwgcHJvdG8ubWFya2VyKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEobWFy
a2VyX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIHBheWxvYWRfdHlw
ZSAoUlRQIGJhc2UpCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gcGF5
bG9hZF90eXBlX3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3RvLnBheWxvYWRfdHlw
ZV9kZWx0YXMoKSwgcHJvdG8ucGF5bG9hZF90eXBlKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBS
VENfQ0hFQ0tfRVEocGF5bG9hZF90eXBlX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMp
OworCisgIC8vIHNlcXVlbmNlX251bWJlciAoUlRQIGJhc2UpCisgIHN0ZDo6dmVjdG9yPGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90Pj4gc2VxdWVuY2VfbnVtYmVyX3ZhbHVlcyA9CisgICAgICBEZWNv
ZGVEZWx0YXMocHJvdG8uc2VxdWVuY2VfbnVtYmVyX2RlbHRhcygpLCBwcm90by5zZXF1ZW5jZV9u
dW1iZXIoKSwKKyAgICAgICAgICAgICAgICAgICBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NI
RUNLX0VRKHNlcXVlbmNlX251bWJlcl92YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsK
KworICAvLyBydHBfdGltZXN0YW1wIChSVFAgYmFzZSkKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0
aW9uYWw8dWludDY0X3Q+PiBydHBfdGltZXN0YW1wX3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAg
ICAgIHByb3RvLnJ0cF90aW1lc3RhbXBfZGVsdGFzKCksIHByb3RvLnJ0cF90aW1lc3RhbXAoKSwg
bnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShydHBfdGltZXN0YW1wX3ZhbHVlcy5z
aXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIHNzcmMgKFJUUCBiYXNlKQorICBzdGQ6
OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHNzcmNfdmFsdWVzID0KKyAgICAgIERl
Y29kZURlbHRhcyhwcm90by5zc3JjX2RlbHRhcygpLCBwcm90by5zc3JjKCksIG51bWJlcl9vZl9k
ZWx0YXMpOworICBSVENfQ0hFQ0tfRVEoc3NyY192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVs
dGFzKTsKKworICAvLyBwYXlsb2FkX3NpemUgKFJUUCBiYXNlKQorICBzdGQ6OnZlY3RvcjxhYnNs
OjpvcHRpb25hbDx1aW50NjRfdD4+IHBheWxvYWRfc2l6ZV92YWx1ZXMgPSBEZWNvZGVEZWx0YXMo
CisgICAgICBwcm90by5wYXlsb2FkX3NpemVfZGVsdGFzKCksIHByb3RvLnBheWxvYWRfc2l6ZSgp
LCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHBheWxvYWRfc2l6ZV92YWx1ZXMu
c2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBoZWFkZXJfc2l6ZSAoUlRQIGJhc2Up
CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gaGVhZGVyX3NpemVfdmFs
dWVzID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJvdG8uaGVhZGVyX3NpemVfZGVsdGFzKCksIHBy
b3RvLmhlYWRlcl9zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEoaGVh
ZGVyX3NpemVfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gcGFkZGlu
Z19zaXplIChSVFAgYmFzZSkKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+
PiBwYWRkaW5nX3NpemVfdmFsdWVzID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJvdG8ucGFkZGlu
Z19zaXplX2RlbHRhcygpLCBwcm90by5wYWRkaW5nX3NpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7
CisgIFJUQ19DSEVDS19FUShwYWRkaW5nX3NpemVfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2Rl
bHRhcyk7CisKKyAgLy8gdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciAoUlRQIGV4dGVuc2lvbikK
KyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB0cmFuc3BvcnRfc2VxdWVu
Y2VfbnVtYmVyX3ZhbHVlczsKKyAgeworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
PiBiYXNlX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgPQorICAgICAgICBwcm90by5oYXNfdHJh
bnNwb3J0X3NlcXVlbmNlX251bWJlcigpCisgICAgICAgICAgICA/IHByb3RvLnRyYW5zcG9ydF9z
ZXF1ZW5jZV9udW1iZXIoKQorICAgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4o
KTsKKyAgICB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyX3ZhbHVlcyA9CisgICAgICAgIERlY29k
ZURlbHRhcyhwcm90by50cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyX2RlbHRhcygpLAorICAgICAg
ICAgICAgICAgICAgICAgYmFzZV90cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyLCBudW1iZXJfb2Zf
ZGVsdGFzKTsKKyAgICBSVENfQ0hFQ0tfRVEodHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl92YWx1
ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgfQorCisgIC8vIHRyYW5zbWlzc2lvbl90
aW1lX29mZnNldCAoUlRQIGV4dGVuc2lvbikKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+PiB0cmFuc21pc3Npb25fdGltZV9vZmZzZXRfdmFsdWVzOworICB7CisgICAgY29u
c3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHVuc2lnbmVkX2Jhc2VfdHJhbnNtaXNzaW9uX3Rp
bWVfb2Zmc2V0ID0KKyAgICAgICAgcHJvdG8uaGFzX3RyYW5zbWlzc2lvbl90aW1lX29mZnNldCgp
CisgICAgICAgICAgICA/IFRvVW5zaWduZWQocHJvdG8udHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0
KCkpCisgICAgICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICAgIHRyYW5z
bWlzc2lvbl90aW1lX29mZnNldF92YWx1ZXMgPQorICAgICAgICBEZWNvZGVEZWx0YXMocHJvdG8u
dHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X2RlbHRhcygpLAorICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWRfYmFzZV90cmFuc21pc3Npb25fdGltZV9vZmZzZXQsIG51bWJlcl9vZl9kZWx0YXMp
OworICAgIFJUQ19DSEVDS19FUSh0cmFuc21pc3Npb25fdGltZV9vZmZzZXRfdmFsdWVzLnNpemUo
KSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIH0KKworICAvLyBhYnNvbHV0ZV9zZW5kX3RpbWUgKFJU
UCBleHRlbnNpb24pCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gYWJz
b2x1dGVfc2VuZF90aW1lX3ZhbHVlczsKKyAgeworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90PiBiYXNlX2Fic29sdXRlX3NlbmRfdGltZSA9CisgICAgICAgIHByb3RvLmhhc19hYnNv
bHV0ZV9zZW5kX3RpbWUoKSA/IHByb3RvLmFic29sdXRlX3NlbmRfdGltZSgpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pigp
OworICAgIGFic29sdXRlX3NlbmRfdGltZV92YWx1ZXMgPQorICAgICAgICBEZWNvZGVEZWx0YXMo
cHJvdG8uYWJzb2x1dGVfc2VuZF90aW1lX2RlbHRhcygpLCBiYXNlX2Fic29sdXRlX3NlbmRfdGlt
ZSwKKyAgICAgICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kZWx0YXMpOworICAgIFJUQ19DSEVD
S19FUShhYnNvbHV0ZV9zZW5kX3RpbWVfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7
CisgIH0KKworICAvLyB2aWRlb19yb3RhdGlvbiAoUlRQIGV4dGVuc2lvbikKKyAgc3RkOjp2ZWN0
b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2aWRlb19yb3RhdGlvbl92YWx1ZXM7CisgIHsK
KyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZV92aWRlb19yb3RhdGlvbiA9
CisgICAgICAgIHByb3RvLmhhc192aWRlb19yb3RhdGlvbigpID8gcHJvdG8udmlkZW9fcm90YXRp
b24oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90PigpOworICAgIHZpZGVvX3JvdGF0aW9uX3ZhbHVlcyA9IERlY29kZURlbHRhcyhw
cm90by52aWRlb19yb3RhdGlvbl9kZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmFzZV92aWRlb19yb3RhdGlvbiwgbnVtYmVyX29mX2RlbHRhcyk7Cisg
ICAgUlRDX0NIRUNLX0VRKHZpZGVvX3JvdGF0aW9uX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9k
ZWx0YXMpOworICB9CisKKyAgLy8gYXVkaW9fbGV2ZWwgKFJUUCBleHRlbnNpb24pCisgIHN0ZDo6
dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gYXVkaW9fbGV2ZWxfdmFsdWVzOworICB7
CisgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2VfYXVkaW9fbGV2ZWwgPQor
ICAgICAgICBwcm90by5oYXNfYXVkaW9fbGV2ZWwoKSA/IHByb3RvLmF1ZGlvX2xldmVsKCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4o
KTsKKyAgICBhdWRpb19sZXZlbF92YWx1ZXMgPSBEZWNvZGVEZWx0YXMocHJvdG8uYXVkaW9fbGV2
ZWxfZGVsdGFzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vf
YXVkaW9fbGV2ZWwsIG51bWJlcl9vZl9kZWx0YXMpOworICAgIFJUQ19DSEVDS19FUShhdWRpb19s
ZXZlbF92YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgfQorCisgIC8vIHZvaWNl
X2FjdGl2aXR5IChSVFAgZXh0ZW5zaW9uKQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4+IHZvaWNlX2FjdGl2aXR5X3ZhbHVlczsKKyAgeworICAgIGNvbnN0IGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90PiBiYXNlX3ZvaWNlX2FjdGl2aXR5ID0KKyAgICAgICAgcHJvdG8uaGFz
X3ZvaWNlX2FjdGl2aXR5KCkgPyBwcm90by52b2ljZV9hY3Rpdml0eSgpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgICAg
dm9pY2VfYWN0aXZpdHlfdmFsdWVzID0gRGVjb2RlRGVsdGFzKHByb3RvLnZvaWNlX2FjdGl2aXR5
X2RlbHRhcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
X3ZvaWNlX2FjdGl2aXR5LCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgICBSVENfQ0hFQ0tfRVEodm9p
Y2VfYWN0aXZpdHlfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIH0KKworICAv
LyBEZWx0YSBkZWNvZGluZworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlcl9vZl9kZWx0
YXM7ICsraSkgeworICAgIFJUQ19DSEVDSyh0aW1lc3RhbXBfbXNfdmFsdWVzW2ldLmhhc192YWx1
ZSgpKTsKKyAgICBSVENfQ0hFQ0sobWFya2VyX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAg
UlRDX0NIRUNLKHBheWxvYWRfdHlwZV92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19D
SEVDSyhzZXF1ZW5jZV9udW1iZXJfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBSVENfQ0hF
Q0socnRwX3RpbWVzdGFtcF92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDSyhz
c3JjX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgUlRDX0NIRUNLKHBheWxvYWRfc2l6ZV92
YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDSyhoZWFkZXJfc2l6ZV92YWx1ZXNb
aV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDSyhwYWRkaW5nX3NpemVfdmFsdWVzW2ldLmhh
c192YWx1ZSgpKTsKKworICAgIGludDY0X3QgdGltZXN0YW1wX21zOworICAgIFJUQ19DSEVDSyhU
b1NpZ25lZCh0aW1lc3RhbXBfbXNfdmFsdWVzW2ldLnZhbHVlKCksICZ0aW1lc3RhbXBfbXMpKTsK
KworICAgIFJUUEhlYWRlciBoZWFkZXI7CisgICAgaGVhZGVyLm1hcmtlckJpdCA9IHJ0Yzo6Y2hl
Y2tlZF9jYXN0PGJvb2w+KCptYXJrZXJfdmFsdWVzW2ldKTsKKyAgICBoZWFkZXIucGF5bG9hZFR5
cGUgPSBydGM6OmNoZWNrZWRfY2FzdDx1aW50OF90PigqcGF5bG9hZF90eXBlX3ZhbHVlc1tpXSk7
CisgICAgaGVhZGVyLnNlcXVlbmNlTnVtYmVyID0KKyAgICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8
dWludDE2X3Q+KCpzZXF1ZW5jZV9udW1iZXJfdmFsdWVzW2ldKTsKKyAgICBoZWFkZXIudGltZXN0
YW1wID0gcnRjOjpjaGVja2VkX2Nhc3Q8dWludDMyX3Q+KCpydHBfdGltZXN0YW1wX3ZhbHVlc1tp
XSk7CisgICAgaGVhZGVyLnNzcmMgPSBydGM6OmNoZWNrZWRfY2FzdDx1aW50MzJfdD4oKnNzcmNf
dmFsdWVzW2ldKTsKKyAgICBoZWFkZXIubnVtQ1NSQ3MgPSAwOyAgLy8gVE9ETyh0ZXJlbGl1cyk6
IEltcGxlbWVudCBDU1JDLgorICAgIGhlYWRlci5wYWRkaW5nTGVuZ3RoID0gcnRjOjpjaGVja2Vk
X2Nhc3Q8c2l6ZV90PigqcGFkZGluZ19zaXplX3ZhbHVlc1tpXSk7CisgICAgaGVhZGVyLmhlYWRl
ckxlbmd0aCA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PHNpemVfdD4oKmhlYWRlcl9zaXplX3ZhbHVlc1tp
XSk7CisgICAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBpbXBsZW1lbnQgcGF5bG9hZF90
eXBlX2ZyZXF1ZW5jeT8KKyAgICBpZiAodHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl92YWx1ZXMu
c2l6ZSgpID4gaSAmJgorICAgICAgICB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyX3ZhbHVlc1tp
XS5oYXNfdmFsdWUoKSkgeworICAgICAgaGVhZGVyLmV4dGVuc2lvbi5oYXNUcmFuc3BvcnRTZXF1
ZW5jZU51bWJlciA9IHRydWU7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVl
bmNlTnVtYmVyID0gcnRjOjpjaGVja2VkX2Nhc3Q8dWludDE2X3Q+KAorICAgICAgICAgIHRyYW5z
cG9ydF9zZXF1ZW5jZV9udW1iZXJfdmFsdWVzW2ldLnZhbHVlKCkpOworICAgIH0KKyAgICBpZiAo
dHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X3ZhbHVlcy5zaXplKCkgPiBpICYmCisgICAgICAgIHRy
YW5zbWlzc2lvbl90aW1lX29mZnNldF92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIGhl
YWRlci5leHRlbnNpb24uaGFzVHJhbnNtaXNzaW9uVGltZU9mZnNldCA9IHRydWU7CisgICAgICBp
bnQzMl90IHRyYW5zbWlzc2lvbl90aW1lX29mZnNldDsKKyAgICAgIFJUQ19DSEVDSyhUb1NpZ25l
ZCh0cmFuc21pc3Npb25fdGltZV9vZmZzZXRfdmFsdWVzW2ldLnZhbHVlKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJnRyYW5zbWlzc2lvbl90aW1lX29mZnNldCkpOworICAgICAgaGVhZGVy
LmV4dGVuc2lvbi50cmFuc21pc3Npb25UaW1lT2Zmc2V0ID0gdHJhbnNtaXNzaW9uX3RpbWVfb2Zm
c2V0OworICAgIH0KKyAgICBpZiAoYWJzb2x1dGVfc2VuZF90aW1lX3ZhbHVlcy5zaXplKCkgPiBp
ICYmCisgICAgICAgIGFic29sdXRlX3NlbmRfdGltZV92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsK
KyAgICAgIGhlYWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5kVGltZSA9IHRydWU7CisgICAg
ICBoZWFkZXIuZXh0ZW5zaW9uLmFic29sdXRlU2VuZFRpbWUgPQorICAgICAgICAgIHJ0Yzo6Y2hl
Y2tlZF9jYXN0PHVpbnQzMl90PihhYnNvbHV0ZV9zZW5kX3RpbWVfdmFsdWVzW2ldLnZhbHVlKCkp
OworICAgIH0KKyAgICBpZiAodmlkZW9fcm90YXRpb25fdmFsdWVzLnNpemUoKSA+IGkgJiYKKyAg
ICAgICAgdmlkZW9fcm90YXRpb25fdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBoZWFk
ZXIuZXh0ZW5zaW9uLmhhc1ZpZGVvUm90YXRpb24gPSB0cnVlOworICAgICAgaGVhZGVyLmV4dGVu
c2lvbi52aWRlb1JvdGF0aW9uID0gQ29udmVydENWT0J5dGVUb1ZpZGVvUm90YXRpb24oCisgICAg
ICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8dWludDhfdD4odmlkZW9fcm90YXRpb25fdmFsdWVzW2ld
LnZhbHVlKCkpKTsKKyAgICB9CisgICAgaWYgKGF1ZGlvX2xldmVsX3ZhbHVlcy5zaXplKCkgPiBp
ICYmIGF1ZGlvX2xldmVsX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSkgeworICAgICAgUlRDX0NIRUNL
KHZvaWNlX2FjdGl2aXR5X3ZhbHVlcy5zaXplKCkgPiBpICYmCisgICAgICAgICAgICAgICAgdm9p
Y2VfYWN0aXZpdHlfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICAgIGhlYWRlci5leHRlbnNp
b24uaGFzQXVkaW9MZXZlbCA9IHRydWU7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLnZvaWNlQWN0
aXZpdHkgPQorICAgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PGJvb2w+KHZvaWNlX2FjdGl2aXR5
X3ZhbHVlc1tpXS52YWx1ZSgpKTsKKyAgICAgIGNvbnN0IHVpbnQ4X3QgYXVkaW9fbGV2ZWwgPQor
ICAgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQ4X3Q+KGF1ZGlvX2xldmVsX3ZhbHVlc1tp
XS52YWx1ZSgpKTsKKyAgICAgIFJUQ19DSEVDS19MRShhdWRpb19sZXZlbCwgMHg3RnUpOworICAg
ICAgaGVhZGVyLmV4dGVuc2lvbi5hdWRpb0xldmVsID0gYXVkaW9fbGV2ZWw7CisgICAgfSBlbHNl
IHsKKyAgICAgIFJUQ19DSEVDSyh2b2ljZV9hY3Rpdml0eV92YWx1ZXMuc2l6ZSgpIDw9IGkgfHwK
KyAgICAgICAgICAgICAgICAhdm9pY2VfYWN0aXZpdHlfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsK
KyAgICB9CisgICAgKCpydHBfcGFja2V0c19tYXApW2hlYWRlci5zc3JjXS5lbXBsYWNlX2JhY2so
CisgICAgICAgIDEwMDAgKiB0aW1lc3RhbXBfbXMsIGhlYWRlciwgaGVhZGVyLmhlYWRlckxlbmd0
aCwKKyAgICAgICAgcGF5bG9hZF9zaXplX3ZhbHVlc1tpXS52YWx1ZSgpICsgaGVhZGVyLmhlYWRl
ckxlbmd0aCArCisgICAgICAgICAgICBoZWFkZXIucGFkZGluZ0xlbmd0aCk7CisgIH0KK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFByb3RvVHlwZSwgdHlwZW5hbWUgTG9nZ2VkVHlwZT4KK3ZvaWQg
U3RvcmVSdGNwUGFja2V0cyhjb25zdCBQcm90b1R5cGUmIHByb3RvLAorICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPExvZ2dlZFR5cGU+KiBydGNwX3BhY2tldHMpIHsKKyAgUlRDX0NI
RUNLKHByb3RvLmhhc190aW1lc3RhbXBfbXMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfcmF3
X3BhY2tldCgpKTsKKworICAvLyBCYXNlIGV2ZW50CisgIHJ0Y3BfcGFja2V0cy0+ZW1wbGFjZV9i
YWNrKHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAwMCwgcHJvdG8ucmF3X3BhY2tldCgpKTsKKwor
ICBjb25zdCBzaXplX3QgbnVtYmVyX29mX2RlbHRhcyA9CisgICAgICBwcm90by5oYXNfbnVtYmVy
X29mX2RlbHRhcygpID8gcHJvdG8ubnVtYmVyX29mX2RlbHRhcygpIDogMHU7CisgIGlmIChudW1i
ZXJfb2ZfZGVsdGFzID09IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyB0aW1lc3RhbXBf
bXMKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB0aW1lc3RhbXBfbXNf
dmFsdWVzID0KKyAgICAgIERlY29kZURlbHRhcyhwcm90by50aW1lc3RhbXBfbXNfZGVsdGFzKCks
CisgICAgICAgICAgICAgICAgICAgVG9VbnNpZ25lZChwcm90by50aW1lc3RhbXBfbXMoKSksIG51
bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEodGltZXN0YW1wX21zX3ZhbHVlcy5zaXpl
KCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIHJhd19wYWNrZXQKKyAgUlRDX0NIRUNLKHBy
b3RvLmhhc19yYXdfcGFja2V0X2Jsb2JzKCkpOworICBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdf
dmlldz4gcmF3X3BhY2tldF92YWx1ZXMgPQorICAgICAgRGVjb2RlQmxvYnMocHJvdG8ucmF3X3Bh
Y2tldF9ibG9icygpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHJhd19wYWNr
ZXRfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gRGVsdGEgZGVjb2Rp
bmcKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJfb2ZfZGVsdGFzOyArK2kpIHsKKyAg
ICBSVENfQ0hFQ0sodGltZXN0YW1wX21zX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgaW50
NjRfdCB0aW1lc3RhbXBfbXM7CisgICAgUlRDX0NIRUNLKFRvU2lnbmVkKHRpbWVzdGFtcF9tc192
YWx1ZXNbaV0udmFsdWUoKSwgJnRpbWVzdGFtcF9tcykpOworCisgICAgcnRjcF9wYWNrZXRzLT5l
bXBsYWNlX2JhY2soCisgICAgICAgIDEwMDAgKiB0aW1lc3RhbXBfbXMsCisgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJhd19wYWNrZXRfdmFsdWVzW2ldLmRhdGEoKSks
CisgICAgICAgIHJhd19wYWNrZXRfdmFsdWVzW2ldLnNpemUoKSk7CisgIH0KK30KKwogfSAgLy8g
bmFtZXNwYWNlCiAKIExvZ2dlZFJ0Y3BQYWNrZXQ6OkxvZ2dlZFJ0Y3BQYWNrZXQodWludDY0X3Qg
dGltZXN0YW1wX3VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90KiBwYWNrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCB0b3RhbF9sZW5ndGgpCiAgICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwgcmF3X2Rh
dGEocGFja2V0LCBwYWNrZXQgKyB0b3RhbF9sZW5ndGgpIHt9CitMb2dnZWRSdGNwUGFja2V0OjpM
b2dnZWRSdGNwUGFja2V0KHVpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhY2tldCkKKyAgICA6IHRpbWVz
dGFtcF91cyh0aW1lc3RhbXBfdXMpLCByYXdfZGF0YShwYWNrZXQuc2l6ZSgpKSB7CisgIG1lbWNw
eShyYXdfZGF0YS5kYXRhKCksIHBhY2tldC5kYXRhKCksIHBhY2tldC5zaXplKCkpOworfQogTG9n
Z2VkUnRjcFBhY2tldDo6TG9nZ2VkUnRjcFBhY2tldChjb25zdCBMb2dnZWRSdGNwUGFja2V0JiBy
aHMpID0gZGVmYXVsdDsKIExvZ2dlZFJ0Y3BQYWNrZXQ6On5Mb2dnZWRSdGNwUGFja2V0KCkgPSBk
ZWZhdWx0OwogCitMb2dnZWRWaWRlb1NlbmRDb25maWc6OkxvZ2dlZFZpZGVvU2VuZENvbmZpZygp
ID0gZGVmYXVsdDsKIExvZ2dlZFZpZGVvU2VuZENvbmZpZzo6TG9nZ2VkVmlkZW9TZW5kQ29uZmln
KAogICAgIGludDY0X3QgdGltZXN0YW1wX3VzLAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Y2xv
Zzo6U3RyZWFtQ29uZmlnPiYgY29uZmlncykKQEAgLTM2MSw3ICs4MDAsNiBAQCBQYXJzZWRSdGNF
dmVudExvZ05ldzo6UGFyc2VkUnRjRXZlbnRMb2dOZXcoCiB9CiAKIHZvaWQgUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OkNsZWFyKCkgewotICBldmVudHNfLmNsZWFyKCk7CiAgIGRlZmF1bHRfZXh0ZW5z
aW9uX21hcF8gPSBHZXREZWZhdWx0SGVhZGVyRXh0ZW5zaW9uTWFwKCk7CiAKICAgaW5jb21pbmdf
cnR4X3NzcmNzXy5jbGVhcigpOwpAQCAtNDc4LDkgKzkxNiw4IEBAIGJvb2wgUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OlBhcnNlU3RyZWFtKAogCiBib29sIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpQYXJz
ZVN0cmVhbUludGVybmFsKAogICAgIHN0ZDo6aXN0cmVhbSYgc3RyZWFtKSB7ICAvLyBuby1wcmVz
dWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKLSAgY29uc3Qgc2l6ZV90IGtNYXhFdmVudFNp
emUgPSAoMXUgPDwgMTYpIC0gMTsKLSAgY29uc3Qgc2l6ZV90IGtNYXhWYXJpbnRTaXplID0gMTA7
Ci0gIHN0ZDo6dmVjdG9yPGNoYXI+IGJ1ZmZlcihrTWF4RXZlbnRTaXplICsgMiAqIGtNYXhWYXJp
bnRTaXplKTsKKyAgY29uc3RleHByIHVpbnQ2NF90IGtNYXhFdmVudFNpemUgPSAxMDAwMDAwMDsg
IC8vIFNhbml0eSBjaGVjay4KKyAgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVyKDB4RkZGRik7CiAK
ICAgUlRDX0RDSEVDSyhzdHJlYW0uZ29vZCgpKTsKIApAQCAtNDkxLDEwICs5MjgsMTIgQEAgYm9v
bCBQYXJzZWRSdGNFdmVudExvZ05ldzo6UGFyc2VTdHJlYW1JbnRlcm5hbCgKICAgICAgIGJyZWFr
OwogICAgIH0KIAotICAgIC8vIFJlYWQgdGhlIG5leHQgbWVzc2FnZSB0YWcuIFRoZSB0YWcgbnVt
YmVyIGlzIGRlZmluZWQgYXMKLSAgICAvLyAoZmllbGRudW1iZXIgPDwgMykgfCB3aXJlX3R5cGUu
IEluIG91ciBjYXNlLCB0aGUgZmllbGQgbnVtYmVyIGlzCi0gICAgLy8gc3VwcG9zZWQgdG8gYmUg
MSBhbmQgdGhlIHdpcmUgdHlwZSBmb3IgYSBsZW5ndGgtZGVsaW1pdGVkIGZpZWxkIGlzIDIuCi0g
ICAgY29uc3QgdWludDY0X3Qga0V4cGVjdGVkVjFUYWcgPSAoMSA8PCAzKSB8IDI7CisgICAgLy8g
UmVhZCB0aGUgbmV4dCBtZXNzYWdlIHRhZy4gUHJvdG9idWYgZGVmaW5lcyB0aGUgbWVzc2FnZSB0
YWcgYXMKKyAgICAvLyAoZmllbGRfbnVtYmVyIDw8IDMpIHwgd2lyZV90eXBlLiBJbiB0aGUgbGVn
YWN5IGVuY29kaW5nLCB0aGUgZmllbGQgbnVtYmVyCisgICAgLy8gaXMgc3VwcG9zZWQgdG8gYmUg
MSBhbmQgdGhlIHdpcmUgdHlwZSBmb3IgYSBsZW5ndGgtZGVsaW1pdGVkIGZpZWxkIGlzIDIuCisg
ICAgLy8gSW4gdGhlIG5ldyBlbmNvZGluZyB3ZSBzdGlsbCBleHBlY3QgdGhlIHdpcmUgdHlwZSB0
byBiZSAyLCBidXQgdGhlIGZpZWxkCisgICAgLy8gbnVtYmVyIHdpbGwgYmUgZ3JlYXRlciB0aGFu
IDEuCisgICAgY29uc3RleHByIHVpbnQ2NF90IGtFeHBlY3RlZFYxVGFnID0gKDEgPDwgMykgfCAy
OwogICAgIHNpemVfdCBieXRlc193cml0dGVuID0gMDsKICAgICBhYnNsOjpvcHRpb25hbDx1aW50
NjRfdD4gdGFnID0KICAgICAgICAgUGFyc2VWYXJJbnQoc3RyZWFtLCBidWZmZXIuZGF0YSgpLCAm
Ynl0ZXNfd3JpdHRlbik7CkBAIC01MDIsOSArOTQxLDEzIEBAIGJvb2wgUGFyc2VkUnRjRXZlbnRM
b2dOZXc6OlBhcnNlU3RyZWFtSW50ZXJuYWwoCiAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpCiAg
ICAgICAgICAgPDwgIk1pc3NpbmcgZmllbGQgdGFnIGZyb20gYmVnaW5uaW5nIG9mIHByb3RvYnVm
IGV2ZW50LiI7CiAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmICgqdGFnICE9IGtF
eHBlY3RlZFYxVGFnKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAgICAgPDwg
IlVuZXhwZWN0ZWQgZmllbGQgdGFnIGF0IGJlZ2lubmluZyBvZiBwcm90b2J1ZiBldmVudC4iOwor
ICAgIH0KKyAgICBjb25zdGV4cHIgdWludDY0X3Qga1dpcmVUeXBlTWFzayA9IDB4MDc7CisgICAg
Y29uc3QgdWludDY0X3Qgd2lyZV90eXBlID0gKnRhZyAmIGtXaXJlVHlwZU1hc2s7CisgICAgaWYg
KHdpcmVfdHlwZSAhPSAyKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJFeHBlY3Rl
ZCBmaWVsZCB0YWcgd2l0aCB3aXJlIHR5cGUgMiAobGVuZ3RoICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlbGltaXRlZCBtZXNzYWdlKS4gRm91bmQgd2lyZSB0eXBlICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgd2lyZV90eXBlOwogICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtNTIwLDYgKzk2Myw4IEBAIGJvb2wgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlBh
cnNlU3RyZWFtSW50ZXJuYWwoCiAgICAgfQogCiAgICAgLy8gUmVhZCB0aGUgbmV4dCBwcm90b2J1
ZiBldmVudCB0byBhIHRlbXBvcmFyeSBjaGFyIGJ1ZmZlci4KKyAgICBpZiAoYnVmZmVyLnNpemUo
KSA8IGJ5dGVzX3dyaXR0ZW4gKyAqbWVzc2FnZV9sZW5ndGgpCisgICAgICBidWZmZXIucmVzaXpl
KGJ5dGVzX3dyaXR0ZW4gKyAqbWVzc2FnZV9sZW5ndGgpOwogICAgIHN0cmVhbS5yZWFkKGJ1ZmZl
ci5kYXRhKCkgKyBieXRlc193cml0dGVuLCAqbWVzc2FnZV9sZW5ndGgpOwogICAgIGlmIChzdHJl
YW0uZ2NvdW50KCkgIT0gc3RhdGljX2Nhc3Q8aW50PigqbWVzc2FnZV9sZW5ndGgpKSB7CiAgICAg
ICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcmVhZCBwcm90b2J1ZiBtZXNzYWdl
IGZyb20gZmlsZS4iOwpAQCAtNTI3LDIxICs5NzIsMzIgQEAgYm9vbCBQYXJzZWRSdGNFdmVudExv
Z05ldzo6UGFyc2VTdHJlYW1JbnRlcm5hbCgKICAgICB9CiAgICAgc2l6ZV90IGJ1ZmZlcl9zaXpl
ID0gYnl0ZXNfd3JpdHRlbiArICptZXNzYWdlX2xlbmd0aDsKIAotICAgIC8vIFBhcnNlIHRoZSBw
cm90b2J1ZiBldmVudCBmcm9tIHRoZSBidWZmZXIuCi0gICAgcnRjbG9nOjpFdmVudFN0cmVhbSBl
dmVudF9zdHJlYW07Ci0gICAgaWYgKCFldmVudF9zdHJlYW0uUGFyc2VGcm9tQXJyYXkoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyX3NpemUpKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJG
YWlsZWQgdG8gcGFyc2UgcHJvdG9idWYgbWVzc2FnZS4iOwotICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KKyAgICBpZiAoKnRhZyA9PSBrRXhwZWN0ZWRWMVRhZykgeworICAgICAgLy8gUGFyc2Ug
dGhlIHByb3RvYnVmIGV2ZW50IGZyb20gdGhlIGJ1ZmZlci4KKyAgICAgIHJ0Y2xvZzo6RXZlbnRT
dHJlYW0gZXZlbnRfc3RyZWFtOworICAgICAgaWYgKCFldmVudF9zdHJlYW0uUGFyc2VGcm9tQXJy
YXkoYnVmZmVyLmRhdGEoKSwgYnVmZmVyX3NpemUpKSB7CisgICAgICAgIFJUQ19MT0coTFNfV0FS
TklORykKKyAgICAgICAgICAgIDw8ICJGYWlsZWQgdG8gcGFyc2UgbGVnYWN5LWZvcm1hdCBwcm90
b2J1ZiBtZXNzYWdlLiI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KIAotICAgIFJU
Q19DSEVDS19FUShldmVudF9zdHJlYW0uc3RyZWFtX3NpemUoKSwgMSk7Ci0gICAgU3RvcmVQYXJz
ZWRFdmVudChldmVudF9zdHJlYW0uc3RyZWFtKDApKTsKLSAgICBldmVudHNfLnB1c2hfYmFjayhl
dmVudF9zdHJlYW0uc3RyZWFtKDApKTsKKyAgICAgIFJUQ19DSEVDS19FUShldmVudF9zdHJlYW0u
c3RyZWFtX3NpemUoKSwgMSk7CisgICAgICBTdG9yZVBhcnNlZExlZ2FjeUV2ZW50KGV2ZW50X3N0
cmVhbS5zdHJlYW0oMCkpOworICAgIH0gZWxzZSB7CisgICAgICAvLyBQYXJzZSB0aGUgcHJvdG9i
dWYgZXZlbnQgZnJvbSB0aGUgYnVmZmVyLgorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0gZXZl
bnRfc3RyZWFtOworICAgICAgaWYgKCFldmVudF9zdHJlYW0uUGFyc2VGcm9tQXJyYXkoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyX3NpemUpKSB7CisgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwg
IkZhaWxlZCB0byBwYXJzZSBuZXctZm9ybWF0IHByb3RvYnVmIG1lc3NhZ2UuIjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgU3RvcmVQYXJzZWROZXdGb3JtYXRFdmVudChl
dmVudF9zdHJlYW0pOworICAgIH0KICAgfQogICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBQYXJz
ZWRSdGNFdmVudExvZ05ldzo6U3RvcmVQYXJzZWRFdmVudChjb25zdCBydGNsb2c6OkV2ZW50JiBl
dmVudCkgewordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVQYXJzZWRMZWdhY3lFdmVu
dChjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgeworICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5
cGUoKSk7CiAgIGlmIChldmVudC50eXBlKCkgIT0gcnRjbG9nOjpFdmVudDo6VklERU9fUkVDRUlW
RVJfQ09ORklHX0VWRU5UICYmCiAgICAgICBldmVudC50eXBlKCkgIT0gcnRjbG9nOjpFdmVudDo6
VklERU9fU0VOREVSX0NPTkZJR19FVkVOVCAmJgogICAgICAgZXZlbnQudHlwZSgpICE9IHJ0Y2xv
Zzo6RXZlbnQ6OkFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCAmJgpAQCAtNTU0LDU1ICsxMDEw
LDYzIEBAIHZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlUGFyc2VkRXZlbnQoY29uc3Qg
cnRjbG9nOjpFdmVudCYgZXZlbnQpIHsKICAgICBsYXN0X3RpbWVzdGFtcF8gPSBzdGQ6Om1heChs
YXN0X3RpbWVzdGFtcF8sIHRpbWVzdGFtcCk7CiAgIH0KIAotICBzd2l0Y2ggKEdldEV2ZW50VHlw
ZShldmVudCkpIHsKLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlZJ
REVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDogeworICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgewor
ICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6VklERU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UOiB7CiAg
ICAgICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcgPSBHZXRWaWRlb1JlY2VpdmVDb25maWco
ZXZlbnQpOwogICAgICAgdmlkZW9fcmVjdl9jb25maWdzXy5lbXBsYWNlX2JhY2soR2V0VGltZXN0
YW1wKGV2ZW50KSwgY29uZmlnKTsKLSAgICAgIGluY29taW5nX3J0cF9leHRlbnNpb25zX21hcHNf
W2NvbmZpZy5yZW1vdGVfc3NyY10gPQotICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChj
b25maWcucnRwX2V4dGVuc2lvbnMpOwotICAgICAgLy8gVE9ETyh0ZXJlbGl1cyk6IEkgZG9uJ3Qg
dW5kZXJzdGFuZCB0aGUgcmVhc29uIGZvciBjb25maWd1cmluZyBoZWFkZXIKLSAgICAgIC8vIGV4
dGVuc2lvbnMgZm9yIHRoZSBsb2NhbCBTU1JDLiBJIHRoaW5rIGl0IHNob3VsZCBiZSByZW1vdmVk
LCBidXQgZm9yCi0gICAgICAvLyBub3cgSSB3YW50IHRvIHByZXNlcnZlIHRoZSBwcmV2aW91cyBm
dW5jdGlvbmFsaXR5LgotICAgICAgaW5jb21pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29uZmln
LmxvY2FsX3NzcmNdID0KLSAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0
cF9leHRlbnNpb25zKTsKKyAgICAgIGlmICghY29uZmlnLnJ0cF9leHRlbnNpb25zLmVtcHR5KCkp
IHsKKyAgICAgICAgaW5jb21pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29uZmlnLnJlbW90ZV9z
c3JjXSA9CisgICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRl
bnNpb25zKTsKKyAgICAgICAgLy8gVE9ETyh0ZXJlbGl1cyk6IEkgZG9uJ3QgdW5kZXJzdGFuZCB0
aGUgcmVhc29uIGZvciBjb25maWd1cmluZyBoZWFkZXIKKyAgICAgICAgLy8gZXh0ZW5zaW9ucyBm
b3IgdGhlIGxvY2FsIFNTUkMuIEkgdGhpbmsgaXQgc2hvdWxkIGJlIHJlbW92ZWQsIGJ1dCBmb3IK
KyAgICAgICAgLy8gbm93IEkgd2FudCB0byBwcmVzZXJ2ZSB0aGUgcHJldmlvdXMgZnVuY3Rpb25h
bGl0eS4KKyAgICAgICAgaW5jb21pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29uZmlnLmxvY2Fs
X3NzcmNdID0KKyAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4
dGVuc2lvbnMpOworICAgICAgfQogICAgICAgaW5jb21pbmdfdmlkZW9fc3NyY3NfLmluc2VydChj
b25maWcucmVtb3RlX3NzcmMpOwogICAgICAgaW5jb21pbmdfdmlkZW9fc3NyY3NfLmluc2VydChj
b25maWcucnR4X3NzcmMpOwogICAgICAgaW5jb21pbmdfcnR4X3NzcmNzXy5pbnNlcnQoY29uZmln
LnJ0eF9zc3JjKTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpFdmVudFR5cGU6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQ6IHsKKyAgICBjYXNl
IHJ0Y2xvZzo6RXZlbnQ6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQ6IHsKICAgICAgIHN0ZDo6
dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWdzID0gR2V0VmlkZW9TZW5kQ29uZmln
KGV2ZW50KTsKICAgICAgIHZpZGVvX3NlbmRfY29uZmlnc18uZW1wbGFjZV9iYWNrKEdldFRpbWVz
dGFtcChldmVudCksIGNvbmZpZ3MpOwogICAgICAgZm9yIChjb25zdCBhdXRvJiBjb25maWcgOiBj
b25maWdzKSB7Ci0gICAgICAgIG91dGdvaW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5s
b2NhbF9zc3JjXSA9Ci0gICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0
cF9leHRlbnNpb25zKTsKLSAgICAgICAgb3V0Z29pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29u
ZmlnLnJ0eF9zc3JjXSA9Ci0gICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmln
LnJ0cF9leHRlbnNpb25zKTsKKyAgICAgICAgaWYgKCFjb25maWcucnRwX2V4dGVuc2lvbnMuZW1w
dHkoKSkgeworICAgICAgICAgIG91dGdvaW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5s
b2NhbF9zc3JjXSA9CisgICAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcu
cnRwX2V4dGVuc2lvbnMpOworICAgICAgICAgIG91dGdvaW5nX3J0cF9leHRlbnNpb25zX21hcHNf
W2NvbmZpZy5ydHhfc3NyY10gPQorICAgICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAo
Y29uZmlnLnJ0cF9leHRlbnNpb25zKTsKKyAgICAgICAgfQogICAgICAgICBvdXRnb2luZ192aWRl
b19zc3Jjc18uaW5zZXJ0KGNvbmZpZy5sb2NhbF9zc3JjKTsKICAgICAgICAgb3V0Z29pbmdfdmlk
ZW9fc3NyY3NfLmluc2VydChjb25maWcucnR4X3NzcmMpOwogICAgICAgICBvdXRnb2luZ19ydHhf
c3NyY3NfLmluc2VydChjb25maWcucnR4X3NzcmMpOwogICAgICAgfQogICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QVVESU9fUkVD
RUlWRVJfQ09ORklHX0VWRU5UOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBVURJT19SRUNF
SVZFUl9DT05GSUdfRVZFTlQ6IHsKICAgICAgIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZyA9
IEdldEF1ZGlvUmVjZWl2ZUNvbmZpZyhldmVudCk7CiAgICAgICBhdWRpb19yZWN2X2NvbmZpZ3Nf
LmVtcGxhY2VfYmFjayhHZXRUaW1lc3RhbXAoZXZlbnQpLCBjb25maWcpOwotICAgICAgaW5jb21p
bmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29uZmlnLnJlbW90ZV9zc3JjXSA9Ci0gICAgICAgICAg
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7Ci0gICAgICBpbmNv
bWluZ19ydHBfZXh0ZW5zaW9uc19tYXBzX1tjb25maWcubG9jYWxfc3NyY10gPQotICAgICAgICAg
IFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4dGVuc2lvbnMpOworICAgICAgaWYg
KCFjb25maWcucnRwX2V4dGVuc2lvbnMuZW1wdHkoKSkgeworICAgICAgICBpbmNvbWluZ19ydHBf
ZXh0ZW5zaW9uc19tYXBzX1tjb25maWcucmVtb3RlX3NzcmNdID0KKyAgICAgICAgICAgIFJ0cEhl
YWRlckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4dGVuc2lvbnMpOworICAgICAgICBpbmNvbWlu
Z19ydHBfZXh0ZW5zaW9uc19tYXBzX1tjb25maWcubG9jYWxfc3NyY10gPQorICAgICAgICAgICAg
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7CisgICAgICB9CiAg
ICAgICBpbmNvbWluZ19hdWRpb19zc3Jjc18uaW5zZXJ0KGNvbmZpZy5yZW1vdGVfc3NyYyk7CiAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRU
eXBlOjpBVURJT19TRU5ERVJfQ09ORklHX0VWRU5UOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50
OjpBVURJT19TRU5ERVJfQ09ORklHX0VWRU5UOiB7CiAgICAgICBydGNsb2c6OlN0cmVhbUNvbmZp
ZyBjb25maWcgPSBHZXRBdWRpb1NlbmRDb25maWcoZXZlbnQpOwogICAgICAgYXVkaW9fc2VuZF9j
b25maWdzXy5lbXBsYWNlX2JhY2soR2V0VGltZXN0YW1wKGV2ZW50KSwgY29uZmlnKTsKLSAgICAg
IG91dGdvaW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5sb2NhbF9zc3JjXSA9Ci0gICAg
ICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7CisgICAg
ICBpZiAoIWNvbmZpZy5ydHBfZXh0ZW5zaW9ucy5lbXB0eSgpKSB7CisgICAgICAgIG91dGdvaW5n
X3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5sb2NhbF9zc3JjXSA9CisgICAgICAgICAgICBS
dHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKTsKKyAgICAgIH0KICAg
ICAgIG91dGdvaW5nX2F1ZGlvX3NzcmNzXy5pbnNlcnQoY29uZmlnLmxvY2FsX3NzcmMpOwogICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlw
ZTo6UlRQX0VWRU5UOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpSVFBfRVZFTlQ6IHsKICAg
ICAgIFBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgICB1aW50OF90IGhlYWRlcltJUF9Q
QUNLRVRfU0laRV07CiAgICAgICBzaXplX3QgaGVhZGVyX2xlbmd0aDsKQEAgLTY0NSw3ICsxMTA5
LDcgQEAgdm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVQYXJzZWRFdmVudChjb25zdCBy
dGNsb2c6OkV2ZW50JiBldmVudCkgewogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgfQotICAg
IGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6UlRDUF9FVkVOVDogeworICAg
IGNhc2UgcnRjbG9nOjpFdmVudDo6UlRDUF9FVkVOVDogewogICAgICAgUGFja2V0RGlyZWN0aW9u
IGRpcmVjdGlvbjsKICAgICAgIHVpbnQ4X3QgcGFja2V0W0lQX1BBQ0tFVF9TSVpFXTsKICAgICAg
IHNpemVfdCB0b3RhbF9sZW5ndGg7CkBAIC03MzEsMTEzICsxMTk1LDc2IEBAIHZvaWQgUGFyc2Vk
UnRjRXZlbnRMb2dOZXc6OlN0b3JlUGFyc2VkRXZlbnQoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZl
bnQpIHsKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpFdmVudFR5cGU6OkxPR19TVEFSVDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVu
dDo6TE9HX1NUQVJUOiB7CiAgICAgICBzdGFydF9sb2dfZXZlbnRzXy5wdXNoX2JhY2soTG9nZ2Vk
U3RhcnRFdmVudChHZXRUaW1lc3RhbXAoZXZlbnQpKSk7CiAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpMT0dfRU5EOiB7CisgICAg
Y2FzZSBydGNsb2c6OkV2ZW50OjpMT0dfRU5EOiB7CiAgICAgICBzdG9wX2xvZ19ldmVudHNfLnB1
c2hfYmFjayhMb2dnZWRTdG9wRXZlbnQoR2V0VGltZXN0YW1wKGV2ZW50KSkpOwogICAgICAgYnJl
YWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QVVE
SU9fUExBWU9VVF9FVkVOVDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QVVESU9fUExBWU9V
VF9FVkVOVDogewogICAgICAgTG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQgcGxheW91dF9ldmVudCA9
IEdldEF1ZGlvUGxheW91dChldmVudCk7CiAgICAgICBhdWRpb19wbGF5b3V0X2V2ZW50c19bcGxh
eW91dF9ldmVudC5zc3JjXS5wdXNoX2JhY2socGxheW91dF9ldmVudCk7CiAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpMT1NTX0JB
U0VEX0JXRV9VUERBVEU6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkxPU1NfQkFTRURfQldF
X1VQREFURTogewogICAgICAgYndlX2xvc3NfdXBkYXRlc18ucHVzaF9iYWNrKEdldExvc3NCYXNl
ZEJ3ZVVwZGF0ZShldmVudCkpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2Vk
UnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6REVMQVlfQkFTRURfQldFX1VQREFURTogeworICAg
IGNhc2UgcnRjbG9nOjpFdmVudDo6REVMQVlfQkFTRURfQldFX1VQREFURTogewogICAgICAgYndl
X2RlbGF5X3VwZGF0ZXNfLnB1c2hfYmFjayhHZXREZWxheUJhc2VkQndlVXBkYXRlKGV2ZW50KSk7
CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZl
bnRUeXBlOjpBVURJT19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQ6IHsKKyAgICBjYXNlIHJ0Y2xv
Zzo6RXZlbnQ6OkFVRElPX05FVFdPUktfQURBUFRBVElPTl9FVkVOVDogewogICAgICAgTG9nZ2Vk
QXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50IGFuYV9ldmVudCA9CiAgICAgICAgICAgR2V0QXVk
aW9OZXR3b3JrQWRhcHRhdGlvbihldmVudCk7CiAgICAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRp
b25fZXZlbnRzXy5wdXNoX2JhY2soYW5hX2V2ZW50KTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9DTFVTVEVS
X0NSRUFURURfRVZFTlQ6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkJXRV9QUk9CRV9DTFVT
VEVSX0NSRUFURURfRVZFTlQ6IHsKICAgICAgIGJ3ZV9wcm9iZV9jbHVzdGVyX2NyZWF0ZWRfZXZl
bnRzXy5wdXNoX2JhY2soCiAgICAgICAgICAgR2V0QndlUHJvYmVDbHVzdGVyQ3JlYXRlZChldmVu
dCkpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OkV2ZW50VHlwZTo6QldFX1BST0JFX0ZBSUxVUkVfRVZFTlQ6IHsKLSAgICAgIGJ3ZV9wcm9iZV9m
YWlsdXJlX2V2ZW50c18ucHVzaF9iYWNrKEdldEJ3ZVByb2JlRmFpbHVyZShldmVudCkpOwotICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlw
ZTo6QldFX1BST0JFX1NVQ0NFU1NfRVZFTlQ6IHsKLSAgICAgIGJ3ZV9wcm9iZV9zdWNjZXNzX2V2
ZW50c18ucHVzaF9iYWNrKEdldEJ3ZVByb2JlU3VjY2VzcyhldmVudCkpOworICAgIGNhc2UgcnRj
bG9nOjpFdmVudDo6QldFX1BST0JFX1JFU1VMVF9FVkVOVDogeworICAgICAgLy8gUHJvYmUgc3Vj
Y2Vzc2VzIGFuZCBmYWlsdXJlcyBhcmUgY3VycmVudGx5IHN0b3JlZCBpbiB0aGUgc2FtZSBwcm90
bworICAgICAgLy8gbWVzc2FnZSwgd2UgYXJlIG1vdmluZyB0b3dhcmRzIHNlcGFyYXRlIG1lc3Nh
Z2VzLiBQcm9iZSByZXN1bHRzCisgICAgICAvLyB0aGVyZWZvcmUgbmVlZCBzcGVjaWFsIHRyZWF0
bWVudCBpbiB0aGUgcGFyc2VyLgorICAgICAgUlRDX0NIRUNLKGV2ZW50Lmhhc19wcm9iZV9yZXN1
bHQoKSk7CisgICAgICBSVENfQ0hFQ0soZXZlbnQucHJvYmVfcmVzdWx0KCkuaGFzX3Jlc3VsdCgp
KTsKKyAgICAgIGlmIChldmVudC5wcm9iZV9yZXN1bHQoKS5yZXN1bHQoKSA9PSBydGNsb2c6OkJ3
ZVByb2JlUmVzdWx0OjpTVUNDRVNTKSB7CisgICAgICAgIGJ3ZV9wcm9iZV9zdWNjZXNzX2V2ZW50
c18ucHVzaF9iYWNrKEdldEJ3ZVByb2JlU3VjY2VzcyhldmVudCkpOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgYndlX3Byb2JlX2ZhaWx1cmVfZXZlbnRzXy5wdXNoX2JhY2soR2V0QndlUHJvYmVG
YWlsdXJlKGV2ZW50KSk7CisgICAgICB9CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQ
YXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpBTFJfU1RBVEVfRVZFTlQ6IHsKKyAgICBj
YXNlIHJ0Y2xvZzo6RXZlbnQ6OkFMUl9TVEFURV9FVkVOVDogewogICAgICAgYWxyX3N0YXRlX2V2
ZW50c18ucHVzaF9iYWNrKEdldEFsclN0YXRlKGV2ZW50KSk7CiAgICAgICBicmVhazsKICAgICB9
Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRF
X1BBSVJfQ09ORklHOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpJQ0VfQ0FORElEQVRFX1BB
SVJfQ09ORklHOiB7CiAgICAgICBpY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnc18ucHVzaF9iYWNr
KEdldEljZUNhbmRpZGF0ZVBhaXJDb25maWcoZXZlbnQpKTsKICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OklDRV9DQU5ESURBVEVf
UEFJUl9FVkVOVDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlS
X0VWRU5UOiB7CiAgICAgICBpY2VfY2FuZGlkYXRlX3BhaXJfZXZlbnRzXy5wdXNoX2JhY2soR2V0
SWNlQ2FuZGlkYXRlUGFpckV2ZW50KGV2ZW50KSk7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAg
Y2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpVTktOT1dOX0VWRU5UOiB7Cisg
ICAgY2FzZSBydGNsb2c6OkV2ZW50OjpVTktOT1dOX0VWRU5UOiB7CiAgICAgICBicmVhazsKICAg
ICB9CiAgIH0KIH0KIAotc2l6ZV90IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXROdW1iZXJPZkV2
ZW50cygpIGNvbnN0IHsKLSAgcmV0dXJuIGV2ZW50c18uc2l6ZSgpOwotfQotCi1pbnQ2NF90IFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRUaW1lc3RhbXAoc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0g
IFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xv
Zzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJldHVybiBHZXRUaW1lc3RhbXAo
ZXZlbnQpOwotfQogCiBpbnQ2NF90IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRUaW1lc3RhbXAo
Y29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKGV2ZW50Lmhh
c190aW1lc3RhbXBfdXMoKSk7CiAgIHJldHVybiBldmVudC50aW1lc3RhbXBfdXMoKTsKIH0KIAot
UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0
RXZlbnRUeXBlKAotICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5k
ZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9
IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0RXZlbnRUeXBlKGV2ZW50KTsKLX0KLQotUGFy
c2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0RXZl
bnRUeXBlKAotICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7Ci0gIFJUQ19D
SEVDSyhldmVudC5oYXNfdHlwZSgpKTsKLSAgaWYgKGV2ZW50LnR5cGUoKSA9PSBydGNsb2c6OkV2
ZW50OjpCV0VfUFJPQkVfUkVTVUxUX0VWRU5UKSB7Ci0gICAgUlRDX0NIRUNLKGV2ZW50Lmhhc19w
cm9iZV9yZXN1bHQoKSk7Ci0gICAgUlRDX0NIRUNLKGV2ZW50LnByb2JlX3Jlc3VsdCgpLmhhc19y
ZXN1bHQoKSk7Ci0gICAgaWYgKGV2ZW50LnByb2JlX3Jlc3VsdCgpLnJlc3VsdCgpID09IHJ0Y2xv
Zzo6QndlUHJvYmVSZXN1bHQ6OlNVQ0NFU1MpCi0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRM
b2dOZXc6OkV2ZW50VHlwZTo6QldFX1BST0JFX1NVQ0NFU1NfRVZFTlQ7Ci0gICAgcmV0dXJuIFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9GQUlMVVJFX0VWRU5UOwot
ICB9Ci0gIHJldHVybiBHZXRSdW50aW1lRXZlbnRUeXBlKGV2ZW50LnR5cGUoKSk7Ci19Ci0KIC8v
IFRoZSBoZWFkZXIgbXVzdCBoYXZlIHNwYWNlIGZvciBhdCBsZWFzdCBJUF9QQUNLRVRfU0laRSBi
eXRlcy4KLWNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKiBQYXJzZWRSdGNFdmVu
dExvZ05ldzo6R2V0UnRwSGVhZGVyKAotICAgIHNpemVfdCBpbmRleCwKLSAgICBQYWNrZXREaXJl
Y3Rpb24qIGluY29taW5nLAotICAgIHVpbnQ4X3QqIGhlYWRlciwKLSAgICBzaXplX3QqIGhlYWRl
cl9sZW5ndGgsCi0gICAgc2l6ZV90KiB0b3RhbF9sZW5ndGgsCi0gICAgaW50KiBwcm9iZV9jbHVz
dGVyX2lkKSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMo
KSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJl
dHVybiBHZXRSdHBIZWFkZXIoZXZlbnQsIGluY29taW5nLCBoZWFkZXIsIGhlYWRlcl9sZW5ndGgs
IHRvdGFsX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICBwcm9iZV9jbHVzdGVyX2lkKTsK
LX0KLQogY29uc3Qgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAqIFBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpHZXRSdHBIZWFkZXIoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQsCiAg
ICAgUGFja2V0RGlyZWN0aW9uKiBpbmNvbWluZywKQEAgLTg5OSwxNSArMTMyNiw2IEBAIGNvbnN0
IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKiBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0
UnRwSGVhZGVyKAogfQogCiAvLyBUaGUgcGFja2V0IG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVh
c3QgSVBfUEFDS0VUX1NJWkUgYnl0ZXMuCi12b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRS
dGNwUGFja2V0KHNpemVfdCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFja2V0RGlyZWN0aW9uKiBpbmNvbWluZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogcGFja2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGxlbmd0aCkgY29uc3QgewotICBSVENfQ0hF
Q0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50
JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICBHZXRSdGNwUGFja2V0KGV2ZW50LCBpbmNvbWlu
ZywgcGFja2V0LCBsZW5ndGgpOwotfQotCiB2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRS
dGNwUGFja2V0KGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYWNrZXREaXJlY3Rpb24qIGluY29taW5nLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBwYWNrZXQsCkBAIC05
MzUsMTIgKzEzNTMsNiBAQCB2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRSdGNwUGFja2V0
KGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50LAogICB9CiB9CiAKLXJ0Y2xvZzo6U3RyZWFtQ29u
ZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRWaWRlb1JlY2VpdmVDb25maWcoCi0gICAgc2l6
ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVu
dHMoKSk7Ci0gIHJldHVybiBHZXRWaWRlb1JlY2VpdmVDb25maWcoZXZlbnRzX1tpbmRleF0pOwot
fQotCiBydGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0VmlkZW9S
ZWNlaXZlQ29uZmlnKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAg
IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZzsKQEAgLTEwMDIsMTIgKzE0MTQsNiBAQCBydGNs
b2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0VmlkZW9SZWNlaXZlQ29u
ZmlnKAogICByZXR1cm4gY29uZmlnOwogfQogCi1zdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNv
bmZpZz4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldFZpZGVvU2VuZENvbmZpZygKLSAgICBzaXpl
X3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50
cygpKTsKLSAgcmV0dXJuIEdldFZpZGVvU2VuZENvbmZpZyhldmVudHNfW2luZGV4XSk7Ci19Ci0K
IHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBQYXJzZWRSdGNFdmVudExvZ05ldzo6
R2V0VmlkZW9TZW5kQ29uZmlnKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25z
dCB7CiAgIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWdzOwpAQCAtMTA0
NiwxMiArMTQ1Miw2IEBAIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBQYXJzZWRS
dGNFdmVudExvZ05ldzo6R2V0VmlkZW9TZW5kQ29uZmlnKAogICByZXR1cm4gY29uZmlnczsKIH0K
IAotcnRjbG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEF1ZGlvUmVj
ZWl2ZUNvbmZpZygKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGlu
ZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgcmV0dXJuIEdldEF1ZGlvUmVjZWl2ZUNvbmZp
ZyhldmVudHNfW2luZGV4XSk7Ci19Ci0KIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpHZXRBdWRpb1JlY2VpdmVDb25maWcoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVu
dCYgZXZlbnQpIGNvbnN0IHsKICAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOwpAQCAtMTA3
MSwxMiArMTQ3MSw2IEBAIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpHZXRBdWRpb1JlY2VpdmVDb25maWcoCiAgIHJldHVybiBjb25maWc7CiB9CiAKLXJ0Y2xvZzo6
U3RyZWFtQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBdWRpb1NlbmRDb25maWcoCi0g
ICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVy
T2ZFdmVudHMoKSk7Ci0gIHJldHVybiBHZXRBdWRpb1NlbmRDb25maWcoZXZlbnRzX1tpbmRleF0p
OwotfQotCiBydGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QXVk
aW9TZW5kQ29uZmlnKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAg
IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZzsKQEAgLTEwOTMsMTMgKzE0ODcsNiBAQCBydGNs
b2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QXVkaW9TZW5kQ29uZmln
KAogICByZXR1cm4gY29uZmlnOwogfQogCi1Mb2dnZWRBdWRpb1BsYXlvdXRFdmVudCBQYXJzZWRS
dGNFdmVudExvZ05ldzo6R2V0QXVkaW9QbGF5b3V0KAotICAgIHNpemVfdCBpbmRleCkgY29uc3Qg
ewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBy
dGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0QXVkaW9Q
bGF5b3V0KGV2ZW50KTsKLX0KLQogTG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQgUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OkdldEF1ZGlvUGxheW91dCgKICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVu
dCkgY29uc3QgewogICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7CkBAIC0xMTEzLDEzICsx
NTAwLDYgQEAgTG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6Okdl
dEF1ZGlvUGxheW91dCgKICAgcmV0dXJuIHJlczsKIH0KIAotTG9nZ2VkQndlTG9zc0Jhc2VkVXBk
YXRlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRMb3NzQmFzZWRCd2VVcGRhdGUoCi0gICAgc2l6
ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVu
dHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0g
IHJldHVybiBHZXRMb3NzQmFzZWRCd2VVcGRhdGUoZXZlbnQpOwotfQotCiBMb2dnZWRCd2VMb3Nz
QmFzZWRVcGRhdGUgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldExvc3NCYXNlZEJ3ZVVwZGF0ZSgK
ICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3QgewogICBSVENfQ0hFQ0soZXZl
bnQuaGFzX3R5cGUoKSk7CkBAIC0xMTM4LDEzICsxNTE4LDYgQEAgTG9nZ2VkQndlTG9zc0Jhc2Vk
VXBkYXRlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRMb3NzQmFzZWRCd2VVcGRhdGUoCiAgIHJl
dHVybiBid2VfdXBkYXRlOwogfQogCi1Mb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRlIFBhcnNlZFJ0
Y0V2ZW50TG9nTmV3OjpHZXREZWxheUJhc2VkQndlVXBkYXRlKAotICAgIHNpemVfdCBpbmRleCkg
Y29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBj
b25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0
RGVsYXlCYXNlZEJ3ZVVwZGF0ZShldmVudCk7Ci19Ci0KIExvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRh
dGUgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldERlbGF5QmFzZWRCd2VVcGRhdGUoCiAgICAgY29u
c3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKGV2ZW50Lmhhc190
eXBlKCkpOwpAQCAtMTE2MiwxMyArMTUzNSw2IEBAIExvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUg
UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldERlbGF5QmFzZWRCd2VVcGRhdGUoCiAgIHJldHVybiBy
ZXM7CiB9CiAKLUxvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudAotUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OkdldEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oc2l6ZV90IGluZGV4KSBjb25zdCB7
Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0
Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJldHVybiBHZXRBdWRpb05l
dHdvcmtBZGFwdGF0aW9uKGV2ZW50KTsKLX0KLQogTG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlv
bkV2ZW50CiBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QXVkaW9OZXR3b3JrQWRhcHRhdGlvbigK
ICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3QgewpAQCAtMTE5NiwxMyArMTU2
Miw2IEBAIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAog
ICByZXR1cm4gcmVzOwogfQogCi1Mb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQKLVBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkKHNpemVfdCBpbmRl
eCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwot
ICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4g
R2V0QndlUHJvYmVDbHVzdGVyQ3JlYXRlZChldmVudCk7Ci19Ci0KIExvZ2dlZEJ3ZVByb2JlQ2x1
c3RlckNyZWF0ZWRFdmVudAogUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEJ3ZVByb2JlQ2x1c3Rl
ckNyZWF0ZWQoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKQEAgLTEy
MjMsMTMgKzE1ODIsNiBAQCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QndlUHJvYmVDbHVzdGVy
Q3JlYXRlZCgKICAgcmV0dXJuIHJlczsKIH0KIAotTG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQg
UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEJ3ZVByb2JlRmFpbHVyZSgKLSAgICBzaXplX3QgaW5k
ZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsK
LSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJu
IEdldEJ3ZVByb2JlRmFpbHVyZShldmVudCk7Ci19Ci0KIExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2
ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRCd2VQcm9iZUZhaWx1cmUoCiAgICAgY29uc3Qg
cnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBl
KCkpOwpAQCAtMTI2MCwxMyArMTYxMiw2IEBAIExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50IFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRCd2VQcm9iZUZhaWx1cmUoCiAgIHJldHVybiByZXM7CiB9
CiAKLUxvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRC
d2VQcm9iZVN1Y2Nlc3MoCi0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19M
VChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2
ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJldHVybiBHZXRCd2VQcm9iZVN1Y2Nlc3MoZXZlbnQp
OwotfQotCiBMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6
R2V0QndlUHJvYmVTdWNjZXNzKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25z
dCB7CiAgIFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKQEAgLTEyODYsMTIgKzE2MzEsNiBA
QCBMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0Qndl
UHJvYmVTdWNjZXNzKAogICByZXR1cm4gcmVzOwogfQogCi1Mb2dnZWRBbHJTdGF0ZUV2ZW50IFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBbHJTdGF0ZShzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAg
UlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9n
OjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJuIEdldEFsclN0YXRlKGV2
ZW50KTsKLX0KLQogTG9nZ2VkQWxyU3RhdGVFdmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0
QWxyU3RhdGUoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKICAgUlRD
X0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwpAQCAtMTMwNiwxMyArMTY0NSw2IEBAIExvZ2dlZEFs
clN0YXRlRXZlbnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEFsclN0YXRlKAogICByZXR1cm4g
cmVzOwogfQogCi1Mb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9n
TmV3OjpHZXRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAotICAgIHNpemVfdCBpbmRleCkgY29uc3Qg
ewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBy
dGNsb2c6OkV2ZW50JiBydGNfZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJuIEdldElj
ZUNhbmRpZGF0ZVBhaXJDb25maWcocnRjX2V2ZW50KTsKLX0KLQogTG9nZ2VkSWNlQ2FuZGlkYXRl
UGFpckNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0SWNlQ2FuZGlkYXRlUGFpckNvbmZp
ZygKICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBydGNfZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NI
RUNLKHJ0Y19ldmVudC5oYXNfdHlwZSgpKTsKQEAgLTEzNDksMTMgKzE2ODEsNiBAQCBMb2dnZWRJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnKAogICByZXR1cm4gcmVzOwogfQogCi1Mb2dnZWRJY2VDYW5kaWRhdGVQYWly
RXZlbnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEljZUNhbmRpZGF0ZVBhaXJFdmVudCgKLSAg
ICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJP
ZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgcnRjX2V2ZW50ID0gZXZlbnRzX1tp
bmRleF07Ci0gIHJldHVybiBHZXRJY2VDYW5kaWRhdGVQYWlyRXZlbnQocnRjX2V2ZW50KTsKLX0K
LQogTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRJ
Y2VDYW5kaWRhdGVQYWlyRXZlbnQoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgcnRjX2V2ZW50
KSBjb25zdCB7CiAgIFJUQ19DSEVDSyhydGNfZXZlbnQuaGFzX3R5cGUoKSk7CkBAIC0xNDM4LDcg
KzE3NjMsOCBAQCBjb25zdCBzdGQ6OnZlY3RvcjxNYXRjaGVkU2VuZEFycml2YWxUaW1lcz4gR2V0
TmV0d29ya1RyYWNlKAogICAgIGNsb2NrLkFkdmFuY2VUaW1lTWljcm9zZWNvbmRzKHRpbWVfdXMg
LSBjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSk7CiAgICAgaWYgKGNsb2NrLlRpbWVJbk1pY3Jv
c2Vjb25kcygpID49IE5leHRSdGNwVGltZSgpKSB7CiAgICAgICBSVENfRENIRUNLX0VRKGNsb2Nr
LlRpbWVJbk1pY3Jvc2Vjb25kcygpLCBOZXh0UnRjcFRpbWUoKSk7Ci0gICAgICBmZWVkYmFja19h
ZGFwdGVyLk9uVHJhbnNwb3J0RmVlZGJhY2socnRjcF9pdGVyYXRvci0+dHJhbnNwb3J0X2ZlZWRi
YWNrKTsKKyAgICAgIGZlZWRiYWNrX2FkYXB0ZXIuUHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNrKAor
ICAgICAgICAgIHJ0Y3BfaXRlcmF0b3ItPnRyYW5zcG9ydF9mZWVkYmFjayk7CiAgICAgICBzdGQ6
OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gZmVlZGJhY2sgPQogICAgICAgICAgIGZlZWRiYWNrX2Fk
YXB0ZXIuR2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKTsKICAgICAgIFNvcnRQYWNrZXRGZWVk
YmFja1ZlY3RvcldpdGhMb3NzKCZmZWVkYmFjayk7CkBAIC0xNDUyLDE0ICsxNzc4LDI1IEBAIGNv
bnN0IHN0ZDo6dmVjdG9yPE1hdGNoZWRTZW5kQXJyaXZhbFRpbWVzPiBHZXROZXR3b3JrVHJhY2Uo
CiAgICAgaWYgKGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygpID49IE5leHRSdHBUaW1lKCkpIHsK
ICAgICAgIFJUQ19EQ0hFQ0tfRVEoY2xvY2suVGltZUluTWljcm9zZWNvbmRzKCksIE5leHRSdHBU
aW1lKCkpOwogICAgICAgY29uc3QgUnRwUGFja2V0VHlwZSYgcnRwX3BhY2tldCA9ICpydHBfaXRl
cmF0b3ItPnNlY29uZDsKKyAgICAgIHJ0Yzo6U2VudFBhY2tldCBzZW50X3BhY2tldDsKKyAgICAg
IHNlbnRfcGFja2V0LnNlbmRfdGltZV9tcyA9IHJ0cF9wYWNrZXQucnRwLmxvZ190aW1lX21zKCk7
CisgICAgICBzZW50X3BhY2tldC5pbmZvLnBhY2tldF9zaXplX2J5dGVzID0gcnRwX3BhY2tldC5y
dHAudG90YWxfbGVuZ3RoOwogICAgICAgaWYgKHJ0cF9wYWNrZXQucnRwLmhlYWRlci5leHRlbnNp
b24uaGFzVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKICAgICAgICAgZmVlZGJhY2tfYWRhcHRl
ci5BZGRQYWNrZXQoCiAgICAgICAgICAgICBydHBfcGFja2V0LnJ0cC5oZWFkZXIuc3NyYywKICAg
ICAgICAgICAgIHJ0cF9wYWNrZXQucnRwLmhlYWRlci5leHRlbnNpb24udHJhbnNwb3J0U2VxdWVu
Y2VOdW1iZXIsCiAgICAgICAgICAgICBydHBfcGFja2V0LnJ0cC50b3RhbF9sZW5ndGgsIFBhY2Vk
UGFja2V0SW5mbygpKTsKLSAgICAgICAgZmVlZGJhY2tfYWRhcHRlci5PblNlbnRQYWNrZXQoCi0g
ICAgICAgICAgICBydHBfcGFja2V0LnJ0cC5oZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVl
bmNlTnVtYmVyLAotICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAubG9nX3RpbWVfbXMoKSk7Cisg
ICAgICAgIHNlbnRfcGFja2V0LnBhY2tldF9pZCA9CisgICAgICAgICAgICBydHBfcGFja2V0LnJ0
cC5oZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyOworICAgICAgICBzZW50
X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2ZlZWRiYWNrID0gdHJ1ZTsKKyAgICAgICAgc2VudF9w
YWNrZXQuaW5mby5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgZmVlZGJh
Y2tfYWRhcHRlci5Qcm9jZXNzU2VudFBhY2tldChzZW50X3BhY2tldCk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBzZW50X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2ZlZWRiYWNrID0gZmFsc2U7
CisgICAgICAgIC8vIFRPRE8oc3J0ZSk6IE1ha2UgaXQgcG9zc2libGUgdG8gaW5kaWNhdGUgdGhh
dCBhbGwgcGFja2V0cyBhcmUgcGFydCBvZgorICAgICAgICAvLyBhbGxvY2F0aW9uLgorICAgICAg
ICBzZW50X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2FsbG9jYXRpb24gPSBmYWxzZTsKKyAgICAg
ICAgZmVlZGJhY2tfYWRhcHRlci5Qcm9jZXNzU2VudFBhY2tldChzZW50X3BhY2tldCk7CiAgICAg
ICB9CiAgICAgICArK3J0cF9pdGVyYXRvcjsKICAgICB9CkBAIC0xNDY4LDQgKzE4MDUsNjEzIEBA
IGNvbnN0IHN0ZDo6dmVjdG9yPE1hdGNoZWRTZW5kQXJyaXZhbFRpbWVzPiBHZXROZXR3b3JrVHJh
Y2UoCiAgIHJldHVybiBydHBfcnRjcF9tYXRjaGVkOwogfQogCisvLyBIZWxwZXIgZnVuY3Rpb25z
IGZvciBuZXcgZm9ybWF0IHN0YXJ0IGhlcmUKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0
b3JlUGFyc2VkTmV3Rm9ybWF0RXZlbnQoCisgICAgY29uc3QgcnRjbG9nMjo6RXZlbnRTdHJlYW0m
IHN0cmVhbSkgeworICBSVENfRENIRUNLX0VRKHN0cmVhbS5zdHJlYW1fc2l6ZSgpLCAwKTsKKwor
ICBSVENfRENIRUNLX0VRKAorICAgICAgc3RyZWFtLmluY29taW5nX3J0cF9wYWNrZXRzX3NpemUo
KSArIHN0cmVhbS5vdXRnb2luZ19ydHBfcGFja2V0c19zaXplKCkgKworICAgICAgICAgIHN0cmVh
bS5pbmNvbWluZ19ydGNwX3BhY2tldHNfc2l6ZSgpICsKKyAgICAgICAgICBzdHJlYW0ub3V0Z29p
bmdfcnRjcF9wYWNrZXRzX3NpemUoKSArCisgICAgICAgICAgc3RyZWFtLmF1ZGlvX3BsYXlvdXRf
ZXZlbnRzX3NpemUoKSArIHN0cmVhbS5iZWdpbl9sb2dfZXZlbnRzX3NpemUoKSArCisgICAgICAg
ICAgc3RyZWFtLmVuZF9sb2dfZXZlbnRzX3NpemUoKSArIHN0cmVhbS5sb3NzX2Jhc2VkX2J3ZV91
cGRhdGVzX3NpemUoKSArCisgICAgICAgICAgc3RyZWFtLmRlbGF5X2Jhc2VkX2J3ZV91cGRhdGVz
X3NpemUoKSArCisgICAgICAgICAgc3RyZWFtLmF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbnNfc2l6
ZSgpICsKKyAgICAgICAgICBzdHJlYW0ucHJvYmVfY2x1c3RlcnNfc2l6ZSgpICsgc3RyZWFtLnBy
b2JlX3N1Y2Nlc3Nfc2l6ZSgpICsKKyAgICAgICAgICBzdHJlYW0ucHJvYmVfZmFpbHVyZV9zaXpl
KCkgKyBzdHJlYW0uYWxyX3N0YXRlc19zaXplKCkgKworICAgICAgICAgIHN0cmVhbS5pY2VfY2Fu
ZGlkYXRlX2NvbmZpZ3Nfc2l6ZSgpICsKKyAgICAgICAgICBzdHJlYW0uaWNlX2NhbmRpZGF0ZV9l
dmVudHNfc2l6ZSgpICsKKyAgICAgICAgICBzdHJlYW0uYXVkaW9fcmVjdl9zdHJlYW1fY29uZmln
c19zaXplKCkgKworICAgICAgICAgIHN0cmVhbS5hdWRpb19zZW5kX3N0cmVhbV9jb25maWdzX3Np
emUoKSArCisgICAgICAgICAgc3RyZWFtLnZpZGVvX3JlY3Zfc3RyZWFtX2NvbmZpZ3Nfc2l6ZSgp
ICsKKyAgICAgICAgICBzdHJlYW0udmlkZW9fc2VuZF9zdHJlYW1fY29uZmlnc19zaXplKCksCisg
ICAgICAxdSk7CisKKyAgaWYgKHN0cmVhbS5pbmNvbWluZ19ydHBfcGFja2V0c19zaXplKCkgPT0g
MSkgeworICAgIFN0b3JlSW5jb21pbmdSdHBQYWNrZXRzKHN0cmVhbS5pbmNvbWluZ19ydHBfcGFj
a2V0cygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLm91dGdvaW5nX3J0cF9wYWNrZXRzX3NpemUo
KSA9PSAxKSB7CisgICAgU3RvcmVPdXRnb2luZ1J0cFBhY2tldHMoc3RyZWFtLm91dGdvaW5nX3J0
cF9wYWNrZXRzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0uaW5jb21pbmdfcnRjcF9wYWNrZXRz
X3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVJbmNvbWluZ1J0Y3BQYWNrZXRzKHN0cmVhbS5pbmNv
bWluZ19ydGNwX3BhY2tldHMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5vdXRnb2luZ19ydGNw
X3BhY2tldHNfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZU91dGdvaW5nUnRjcFBhY2tldHMoc3Ry
ZWFtLm91dGdvaW5nX3J0Y3BfcGFja2V0cygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLmF1ZGlv
X3BsYXlvdXRfZXZlbnRzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVBdWRpb1BsYXlvdXRFdmVu
dChzdHJlYW0uYXVkaW9fcGxheW91dF9ldmVudHMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5i
ZWdpbl9sb2dfZXZlbnRzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVTdGFydEV2ZW50KHN0cmVh
bS5iZWdpbl9sb2dfZXZlbnRzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0uZW5kX2xvZ19ldmVu
dHNfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZVN0b3BFdmVudChzdHJlYW0uZW5kX2xvZ19ldmVu
dHMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5sb3NzX2Jhc2VkX2J3ZV91cGRhdGVzX3NpemUo
KSA9PSAxKSB7CisgICAgU3RvcmVCd2VMb3NzQmFzZWRVcGRhdGUoc3RyZWFtLmxvc3NfYmFzZWRf
YndlX3VwZGF0ZXMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5kZWxheV9iYXNlZF9id2VfdXBk
YXRlc19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlQndlRGVsYXlCYXNlZFVwZGF0ZShzdHJlYW0u
ZGVsYXlfYmFzZWRfYndlX3VwZGF0ZXMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5hdWRpb19u
ZXR3b3JrX2FkYXB0YXRpb25zX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVBdWRpb05ldHdvcmtB
ZGFwdGF0aW9uRXZlbnQoc3RyZWFtLmF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbnMoMCkpOworICB9
IGVsc2UgaWYgKHN0cmVhbS5wcm9iZV9jbHVzdGVyc19zaXplKCkgPT0gMSkgeworICAgIFN0b3Jl
QndlUHJvYmVDbHVzdGVyQ3JlYXRlZChzdHJlYW0ucHJvYmVfY2x1c3RlcnMoMCkpOworICB9IGVs
c2UgaWYgKHN0cmVhbS5wcm9iZV9zdWNjZXNzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVCd2VQ
cm9iZVN1Y2Nlc3NFdmVudChzdHJlYW0ucHJvYmVfc3VjY2VzcygwKSk7CisgIH0gZWxzZSBpZiAo
c3RyZWFtLnByb2JlX2ZhaWx1cmVfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUJ3ZVByb2JlRmFp
bHVyZUV2ZW50KHN0cmVhbS5wcm9iZV9mYWlsdXJlKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0u
YWxyX3N0YXRlc19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlQWxyU3RhdGVFdmVudChzdHJlYW0u
YWxyX3N0YXRlcygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLmljZV9jYW5kaWRhdGVfY29uZmln
c19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyhzdHJlYW0u
aWNlX2NhbmRpZGF0ZV9jb25maWdzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0uaWNlX2NhbmRp
ZGF0ZV9ldmVudHNfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUljZUNhbmRpZGF0ZUV2ZW50KHN0
cmVhbS5pY2VfY2FuZGlkYXRlX2V2ZW50cygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLmF1ZGlv
X3JlY3Zfc3RyZWFtX2NvbmZpZ3Nfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUF1ZGlvUmVjdkNv
bmZpZyhzdHJlYW0uYXVkaW9fcmVjdl9zdHJlYW1fY29uZmlncygwKSk7CisgIH0gZWxzZSBpZiAo
c3RyZWFtLmF1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZ3Nfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9y
ZUF1ZGlvU2VuZENvbmZpZyhzdHJlYW0uYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlncygwKSk7Cisg
IH0gZWxzZSBpZiAoc3RyZWFtLnZpZGVvX3JlY3Zfc3RyZWFtX2NvbmZpZ3Nfc2l6ZSgpID09IDEp
IHsKKyAgICBTdG9yZVZpZGVvUmVjdkNvbmZpZyhzdHJlYW0udmlkZW9fcmVjdl9zdHJlYW1fY29u
ZmlncygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLnZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZ3Nf
c2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZVZpZGVvU2VuZENvbmZpZyhzdHJlYW0udmlkZW9fc2Vu
ZF9zdHJlYW1fY29uZmlncygwKSk7CisgIH0gZWxzZSB7CisgICAgUlRDX05PVFJFQUNIRUQoKTsK
KyAgfQorfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUFsclN0YXRlRXZlbnQo
Y29uc3QgcnRjbG9nMjo6QWxyU3RhdGUmIHByb3RvKSB7CisgIFJUQ19DSEVDSyhwcm90by5oYXNf
dGltZXN0YW1wX21zKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2luX2FscigpKTsKKyAgTG9n
Z2VkQWxyU3RhdGVFdmVudCBhbHJfZXZlbnQ7CisgIGFscl9ldmVudC50aW1lc3RhbXBfdXMgPSBw
cm90by50aW1lc3RhbXBfbXMoKSAqIDEwMDA7CisgIGFscl9ldmVudC5pbl9hbHIgPSBwcm90by5p
bl9hbHIoKTsKKworICBhbHJfc3RhdGVfZXZlbnRzXy5wdXNoX2JhY2soYWxyX2V2ZW50KTsKKyAg
Ly8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YSBlbmNvZGUgdGhpcyBldmVudCB0eXBl
PworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUF1ZGlvUGxheW91dEV2ZW50
KAorICAgIGNvbnN0IHJ0Y2xvZzI6OkF1ZGlvUGxheW91dEV2ZW50cyYgcHJvdG8pIHsKKyAgUlRD
X0NIRUNLKHByb3RvLmhhc190aW1lc3RhbXBfbXMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNf
bG9jYWxfc3NyYygpKTsKKworICAvLyBCYXNlIGV2ZW50CisgIGF1dG8gbWFwX2l0ID0gYXVkaW9f
cGxheW91dF9ldmVudHNfW3Byb3RvLmxvY2FsX3NzcmMoKV07CisgIGF1ZGlvX3BsYXlvdXRfZXZl
bnRzX1twcm90by5sb2NhbF9zc3JjKCldLmVtcGxhY2VfYmFjaygKKyAgICAgIDEwMDAgKiBwcm90
by50aW1lc3RhbXBfbXMoKSwgcHJvdG8ubG9jYWxfc3NyYygpKTsKKworICBjb25zdCBzaXplX3Qg
bnVtYmVyX29mX2RlbHRhcyA9CisgICAgICBwcm90by5oYXNfbnVtYmVyX29mX2RlbHRhcygpID8g
cHJvdG8ubnVtYmVyX29mX2RlbHRhcygpIDogMHU7CisgIGlmIChudW1iZXJfb2ZfZGVsdGFzID09
IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyB0aW1lc3RhbXBfbXMKKyAgc3RkOjp2ZWN0
b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB0aW1lc3RhbXBfbXNfdmFsdWVzID0KKyAgICAg
IERlY29kZURlbHRhcyhwcm90by50aW1lc3RhbXBfbXNfZGVsdGFzKCksCisgICAgICAgICAgICAg
ICAgICAgVG9VbnNpZ25lZChwcm90by50aW1lc3RhbXBfbXMoKSksIG51bWJlcl9vZl9kZWx0YXMp
OworICBSVENfQ0hFQ0tfRVEodGltZXN0YW1wX21zX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9k
ZWx0YXMpOworCisgIC8vIGxvY2FsX3NzcmMKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+PiBsb2NhbF9zc3JjX3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3Rv
LmxvY2FsX3NzcmNfZGVsdGFzKCksIHByb3RvLmxvY2FsX3NzcmMoKSwgbnVtYmVyX29mX2RlbHRh
cyk7CisgIFJUQ19DSEVDS19FUShsb2NhbF9zc3JjX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9k
ZWx0YXMpOworCisgIC8vIERlbHRhIGRlY29kaW5nCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtYmVyX29mX2RlbHRhczsgKytpKSB7CisgICAgUlRDX0NIRUNLKHRpbWVzdGFtcF9tc192YWx1
ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDSyhsb2NhbF9zc3JjX3ZhbHVlc1tpXS5o
YXNfdmFsdWUoKSk7CisgICAgUlRDX0NIRUNLX0xFKGxvY2FsX3NzcmNfdmFsdWVzW2ldLnZhbHVl
KCksCisgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgo
KSk7CisKKyAgICBpbnQ2NF90IHRpbWVzdGFtcF9tczsKKyAgICBSVENfQ0hFQ0soVG9TaWduZWQo
dGltZXN0YW1wX21zX3ZhbHVlc1tpXS52YWx1ZSgpLCAmdGltZXN0YW1wX21zKSk7CisKKyAgICBj
b25zdCB1aW50MzJfdCBsb2NhbF9zc3JjID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGxvY2FsX3NzcmNfdmFsdWVzW2ldLnZhbHVlKCkpOworICAgIGF1ZGlvX3BsYXlvdXRfZXZlbnRz
X1tsb2NhbF9zc3JjXS5lbXBsYWNlX2JhY2soMTAwMCAqIHRpbWVzdGFtcF9tcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3NzcmMpOwor
ICB9Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlSW5jb21pbmdSdHBQYWNr
ZXRzKAorICAgIGNvbnN0IHJ0Y2xvZzI6OkluY29taW5nUnRwUGFja2V0cyYgcHJvdG8pIHsKKyAg
U3RvcmVSdHBQYWNrZXRzKHByb3RvLCAmaW5jb21pbmdfcnRwX3BhY2tldHNfbWFwXyk7Cit9CisK
K3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlT3V0Z29pbmdSdHBQYWNrZXRzKAorICAg
IGNvbnN0IHJ0Y2xvZzI6Ok91dGdvaW5nUnRwUGFja2V0cyYgcHJvdG8pIHsKKyAgU3RvcmVSdHBQ
YWNrZXRzKHByb3RvLCAmb3V0Z29pbmdfcnRwX3BhY2tldHNfbWFwXyk7Cit9CisKK3ZvaWQgUGFy
c2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlSW5jb21pbmdSdGNwUGFja2V0cygKKyAgICBjb25zdCBy
dGNsb2cyOjpJbmNvbWluZ1J0Y3BQYWNrZXRzJiBwcm90bykgeworICBTdG9yZVJ0Y3BQYWNrZXRz
KHByb3RvLCAmaW5jb21pbmdfcnRjcF9wYWNrZXRzXyk7Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OlN0b3JlT3V0Z29pbmdSdGNwUGFja2V0cygKKyAgICBjb25zdCBydGNsb2cyOjpP
dXRnb2luZ1J0Y3BQYWNrZXRzJiBwcm90bykgeworICBTdG9yZVJ0Y3BQYWNrZXRzKHByb3RvLCAm
b3V0Z29pbmdfcnRjcF9wYWNrZXRzXyk7Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OlN0b3JlU3RhcnRFdmVudCgKKyAgICBjb25zdCBydGNsb2cyOjpCZWdpbkxvZ0V2ZW50JiBwcm90
bykgeworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgUlRDX0NIRUNL
KHByb3RvLmhhc192ZXJzaW9uKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3V0Y190aW1lX21z
KCkpOworICBSVENfQ0hFQ0tfRVEocHJvdG8udmVyc2lvbigpLCAyKTsKKyAgTG9nZ2VkU3RhcnRF
dmVudCBzdGFydF9ldmVudChwcm90by50aW1lc3RhbXBfbXMoKSAqIDEwMDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvdG8udXRjX3RpbWVfbXMoKSk7CisKKyAgc3RhcnRfbG9n
X2V2ZW50c18ucHVzaF9iYWNrKHN0YXJ0X2V2ZW50KTsKK30KKwordm9pZCBQYXJzZWRSdGNFdmVu
dExvZ05ldzo6U3RvcmVTdG9wRXZlbnQoY29uc3QgcnRjbG9nMjo6RW5kTG9nRXZlbnQmIHByb3Rv
KSB7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1wX21zKCkpOworICBMb2dnZWRTdG9w
RXZlbnQgc3RvcF9ldmVudChwcm90by50aW1lc3RhbXBfbXMoKSAqIDEwMDApOworCisgIHN0b3Bf
bG9nX2V2ZW50c18ucHVzaF9iYWNrKHN0b3BfZXZlbnQpOworfQorCit2b2lkIFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpTdG9yZUJ3ZUxvc3NCYXNlZFVwZGF0ZSgKKyAgICBjb25zdCBydGNsb2cyOjpM
b3NzQmFzZWRCd2VVcGRhdGVzJiBwcm90bykgeworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVz
dGFtcF9tcygpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19iaXRyYXRlX2JwcygpKTsKKyAgUlRD
X0NIRUNLKHByb3RvLmhhc19mcmFjdGlvbl9sb3NzKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFz
X3RvdGFsX3BhY2tldHMoKSk7CisKKyAgLy8gQmFzZSBldmVudAorICBid2VfbG9zc191cGRhdGVz
Xy5lbXBsYWNlX2JhY2soMTAwMCAqIHByb3RvLnRpbWVzdGFtcF9tcygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvdG8uYml0cmF0ZV9icHMoKSwgcHJvdG8uZnJhY3Rpb25f
bG9zcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8udG90YWxfcGFj
a2V0cygpKTsKKworICBjb25zdCBzaXplX3QgbnVtYmVyX29mX2RlbHRhcyA9CisgICAgICBwcm90
by5oYXNfbnVtYmVyX29mX2RlbHRhcygpID8gcHJvdG8ubnVtYmVyX29mX2RlbHRhcygpIDogMHU7
CisgIGlmIChudW1iZXJfb2ZfZGVsdGFzID09IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAv
LyB0aW1lc3RhbXBfbXMKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB0
aW1lc3RhbXBfbXNfdmFsdWVzID0KKyAgICAgIERlY29kZURlbHRhcyhwcm90by50aW1lc3RhbXBf
bXNfZGVsdGFzKCksCisgICAgICAgICAgICAgICAgICAgVG9VbnNpZ25lZChwcm90by50aW1lc3Rh
bXBfbXMoKSksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEodGltZXN0YW1wX21z
X3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIGJpdHJhdGVfYnBzCisg
IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gYml0cmF0ZV9icHNfdmFsdWVz
ID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJvdG8uYml0cmF0ZV9icHNfZGVsdGFzKCksIHByb3Rv
LmJpdHJhdGVfYnBzKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEoYml0cmF0
ZV9icHNfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gZnJhY3Rpb25f
bG9zcworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGZyYWN0aW9uX2xv
c3NfdmFsdWVzID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJvdG8uZnJhY3Rpb25fbG9zc19kZWx0
YXMoKSwgcHJvdG8uZnJhY3Rpb25fbG9zcygpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NI
RUNLX0VRKGZyYWN0aW9uX2xvc3NfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisK
KyAgLy8gdG90YWxfcGFja2V0cworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRf
dD4+IHRvdGFsX3BhY2tldHNfdmFsdWVzID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJvdG8udG90
YWxfcGFja2V0c19kZWx0YXMoKSwgcHJvdG8udG90YWxfcGFja2V0cygpLCBudW1iZXJfb2ZfZGVs
dGFzKTsKKyAgUlRDX0NIRUNLX0VRKHRvdGFsX3BhY2tldHNfdmFsdWVzLnNpemUoKSwgbnVtYmVy
X29mX2RlbHRhcyk7CisKKyAgLy8gRGVsdGEgZGVjb2RpbmcKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1iZXJfb2ZfZGVsdGFzOyArK2kpIHsKKyAgICBSVENfQ0hFQ0sodGltZXN0YW1wX21z
X3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgaW50NjRfdCB0aW1lc3RhbXBfbXM7CisgICAg
UlRDX0NIRUNLKFRvU2lnbmVkKHRpbWVzdGFtcF9tc192YWx1ZXNbaV0udmFsdWUoKSwgJnRpbWVz
dGFtcF9tcykpOworCisgICAgUlRDX0NIRUNLKGJpdHJhdGVfYnBzX3ZhbHVlc1tpXS5oYXNfdmFs
dWUoKSk7CisgICAgUlRDX0NIRUNLX0xFKGJpdHJhdGVfYnBzX3ZhbHVlc1tpXS52YWx1ZSgpLAor
ICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOwor
ICAgIGNvbnN0IHVpbnQzMl90IGJpdHJhdGVfYnBzID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGJpdHJhdGVfYnBzX3ZhbHVlc1tpXS52YWx1ZSgpKTsKKworICAgIFJUQ19DSEVDSyhm
cmFjdGlvbl9sb3NzX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgUlRDX0NIRUNLX0xFKGZy
YWN0aW9uX2xvc3NfdmFsdWVzW2ldLnZhbHVlKCksCisgICAgICAgICAgICAgICAgIHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7CisgICAgY29uc3QgdWludDMyX3QgZnJhY3Rp
b25fbG9zcyA9CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFjdGlvbl9sb3NzX3Zh
bHVlc1tpXS52YWx1ZSgpKTsKKworICAgIFJUQ19DSEVDSyh0b3RhbF9wYWNrZXRzX3ZhbHVlc1tp
XS5oYXNfdmFsdWUoKSk7CisgICAgUlRDX0NIRUNLX0xFKHRvdGFsX3BhY2tldHNfdmFsdWVzW2ld
LnZhbHVlKCksCisgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+
OjptYXgoKSk7CisgICAgY29uc3QgdWludDMyX3QgdG90YWxfcGFja2V0cyA9CisgICAgICAgIHN0
YXRpY19jYXN0PHVpbnQzMl90Pih0b3RhbF9wYWNrZXRzX3ZhbHVlc1tpXS52YWx1ZSgpKTsKKwor
ICAgIGJ3ZV9sb3NzX3VwZGF0ZXNfLmVtcGxhY2VfYmFjaygxMDAwICogdGltZXN0YW1wX21zLCBi
aXRyYXRlX2JwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25f
bG9zcywgdG90YWxfcGFja2V0cyk7CisgIH0KK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05l
dzo6U3RvcmVCd2VEZWxheUJhc2VkVXBkYXRlKAorICAgIGNvbnN0IHJ0Y2xvZzI6OkRlbGF5QmFz
ZWRCd2VVcGRhdGVzJiBwcm90bykgeworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9t
cygpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19iaXRyYXRlX2JwcygpKTsKKyAgUlRDX0NIRUNL
KHByb3RvLmhhc19kZXRlY3Rvcl9zdGF0ZSgpKTsKKworICAvLyBCYXNlIGV2ZW50CisgIGNvbnN0
IEJhbmR3aWR0aFVzYWdlIGJhc2VfZGV0ZWN0b3Jfc3RhdGUgPQorICAgICAgR2V0UnVudGltZURl
dGVjdG9yU3RhdGUocHJvdG8uZGV0ZWN0b3Jfc3RhdGUoKSk7CisgIGJ3ZV9kZWxheV91cGRhdGVz
Xy5lbXBsYWNlX2JhY2soMTAwMCAqIHByb3RvLnRpbWVzdGFtcF9tcygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3RvLmJpdHJhdGVfYnBzKCksIGJhc2VfZGV0ZWN0b3Jf
c3RhdGUpOworCisgIGNvbnN0IHNpemVfdCBudW1iZXJfb2ZfZGVsdGFzID0KKyAgICAgIHByb3Rv
Lmhhc19udW1iZXJfb2ZfZGVsdGFzKCkgPyBwcm90by5udW1iZXJfb2ZfZGVsdGFzKCkgOiAwdTsK
KyAgaWYgKG51bWJlcl9vZl9kZWx0YXMgPT0gMCkgeworICAgIHJldHVybjsKKyAgfQorCisgIC8v
IHRpbWVzdGFtcF9tcworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHRp
bWVzdGFtcF9tc192YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLnRpbWVzdGFtcF9t
c19kZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICBUb1Vuc2lnbmVkKHByb3RvLnRpbWVzdGFt
cF9tcygpKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUSh0aW1lc3RhbXBfbXNf
dmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gYml0cmF0ZV9icHMKKyAg
c3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBiaXRyYXRlX2Jwc192YWx1ZXMg
PSBEZWNvZGVEZWx0YXMoCisgICAgICBwcm90by5iaXRyYXRlX2Jwc19kZWx0YXMoKSwgcHJvdG8u
Yml0cmF0ZV9icHMoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShiaXRyYXRl
X2Jwc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBkZXRlY3Rvcl9z
dGF0ZQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGRldGVjdG9yX3N0
YXRlX3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3RvLmRldGVjdG9yX3N0YXRlX2Rl
bHRhcygpLAorICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHByb3RvLmRldGVjdG9yX3N0YXRl
KCkpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGRldGVjdG9yX3N0YXRlX3Zh
bHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIERlbHRhIGRlY29kaW5nCisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyX29mX2RlbHRhczsgKytpKSB7CisgICAgUlRD
X0NIRUNLKHRpbWVzdGFtcF9tc192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIGludDY0X3Qg
dGltZXN0YW1wX21zOworICAgIFJUQ19DSEVDSyhUb1NpZ25lZCh0aW1lc3RhbXBfbXNfdmFsdWVz
W2ldLnZhbHVlKCksICZ0aW1lc3RhbXBfbXMpKTsKKworICAgIFJUQ19DSEVDSyhiaXRyYXRlX2Jw
c192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDS19MRShiaXRyYXRlX2Jwc192
YWx1ZXNbaV0udmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MzJfdD46Om1heCgpKTsKKyAgICBjb25zdCB1aW50MzJfdCBiaXRyYXRlX2JwcyA9CisgICAg
ICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihiaXRyYXRlX2Jwc192YWx1ZXNbaV0udmFsdWUoKSk7
CisKKyAgICBSVENfQ0hFQ0soZGV0ZWN0b3Jfc3RhdGVfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsK
KyAgICBjb25zdCBhdXRvIGRldGVjdG9yX3N0YXRlID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8cnRj
bG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkRldGVjdG9yU3RhdGU+KAorICAgICAgICAgICAg
ZGV0ZWN0b3Jfc3RhdGVfdmFsdWVzW2ldLnZhbHVlKCkpOworCisgICAgYndlX2RlbGF5X3VwZGF0
ZXNfLmVtcGxhY2VfYmFjaygxMDAwICogdGltZXN0YW1wX21zLCBiaXRyYXRlX2JwcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFJ1bnRpbWVEZXRlY3RvclN0YXRlKGRl
dGVjdG9yX3N0YXRlKSk7CisgIH0KK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3Rv
cmVCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkKAorICAgIGNvbnN0IHJ0Y2xvZzI6OkJ3ZVByb2JlQ2x1
c3RlciYgcHJvdG8pIHsKKyAgTG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50IHByb2Jl
X2NsdXN0ZXI7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1wX21zKCkpOworICBwcm9i
ZV9jbHVzdGVyLnRpbWVzdGFtcF91cyA9IHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAwMDsKKyAg
UlRDX0NIRUNLKHByb3RvLmhhc19pZCgpKTsKKyAgcHJvYmVfY2x1c3Rlci5pZCA9IHByb3RvLmlk
KCk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfYml0cmF0ZV9icHMoKSk7CisgIHByb2JlX2NsdXN0
ZXIuYml0cmF0ZV9icHMgPSBwcm90by5iaXRyYXRlX2JwcygpOworICBSVENfQ0hFQ0socHJvdG8u
aGFzX21pbl9wYWNrZXRzKCkpOworICBwcm9iZV9jbHVzdGVyLm1pbl9wYWNrZXRzID0gcHJvdG8u
bWluX3BhY2tldHMoKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19taW5fYnl0ZXMoKSk7CisgIHBy
b2JlX2NsdXN0ZXIubWluX2J5dGVzID0gcHJvdG8ubWluX2J5dGVzKCk7CisKKyAgYndlX3Byb2Jl
X2NsdXN0ZXJfY3JlYXRlZF9ldmVudHNfLnB1c2hfYmFjayhwcm9iZV9jbHVzdGVyKTsKKworICAv
LyBUT0RPKHRlcmVsaXVzKTogU2hvdWxkIHdlIGRlbHRhIGVuY29kZSB0aGlzIGV2ZW50IHR5cGU/
Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlQndlUHJvYmVTdWNjZXNzRXZl
bnQoCisgICAgY29uc3QgcnRjbG9nMjo6QndlUHJvYmVSZXN1bHRTdWNjZXNzJiBwcm90bykgewor
ICBMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCBwcm9iZV9yZXN1bHQ7CisgIFJUQ19DSEVDSyhw
cm90by5oYXNfdGltZXN0YW1wX21zKCkpOworICBwcm9iZV9yZXN1bHQudGltZXN0YW1wX3VzID0g
cHJvdG8udGltZXN0YW1wX21zKCkgKiAxMDAwOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2lkKCkp
OworICBwcm9iZV9yZXN1bHQuaWQgPSBwcm90by5pZCgpOworICBSVENfQ0hFQ0socHJvdG8uaGFz
X2JpdHJhdGVfYnBzKCkpOworICBwcm9iZV9yZXN1bHQuYml0cmF0ZV9icHMgPSBwcm90by5iaXRy
YXRlX2JwcygpOworCisgIGJ3ZV9wcm9iZV9zdWNjZXNzX2V2ZW50c18ucHVzaF9iYWNrKHByb2Jl
X3Jlc3VsdCk7CisKKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YSBlbmNvZGUg
dGhpcyBldmVudCB0eXBlPworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUJ3
ZVByb2JlRmFpbHVyZUV2ZW50KAorICAgIGNvbnN0IHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0RmFp
bHVyZSYgcHJvdG8pIHsKKyAgTG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQgcHJvYmVfcmVzdWx0
OworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgcHJvYmVfcmVzdWx0
LnRpbWVzdGFtcF91cyA9IHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAwMDsKKyAgUlRDX0NIRUNL
KHByb3RvLmhhc19pZCgpKTsKKyAgcHJvYmVfcmVzdWx0LmlkID0gcHJvdG8uaWQoKTsKKyAgUlRD
X0NIRUNLKHByb3RvLmhhc19mYWlsdXJlKCkpOworICBwcm9iZV9yZXN1bHQuZmFpbHVyZV9yZWFz
b24gPSBHZXRSdW50aW1lUHJvYmVGYWlsdXJlUmVhc29uKHByb3RvLmZhaWx1cmUoKSk7CisKKyAg
YndlX3Byb2JlX2ZhaWx1cmVfZXZlbnRzXy5wdXNoX2JhY2socHJvYmVfcmVzdWx0KTsKKworICAv
LyBUT0RPKHRlcmVsaXVzKTogU2hvdWxkIHdlIGRlbHRhIGVuY29kZSB0aGlzIGV2ZW50IHR5cGU/
Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlQXVkaW9OZXR3b3JrQWRhcHRh
dGlvbkV2ZW50KAorICAgIGNvbnN0IHJ0Y2xvZzI6OkF1ZGlvTmV0d29ya0FkYXB0YXRpb25zJiBw
cm90bykgeworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKworICAvLyBC
YXNlIGV2ZW50CisgIHsKKyAgICBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnIHJ1bnRpbWVfY29u
ZmlnOworICAgIGlmIChwcm90by5oYXNfYml0cmF0ZV9icHMoKSkgeworICAgICAgcnVudGltZV9j
b25maWcuYml0cmF0ZV9icHMgPSBwcm90by5iaXRyYXRlX2JwcygpOworICAgIH0KKyAgICBpZiAo
cHJvdG8uaGFzX2ZyYW1lX2xlbmd0aF9tcygpKSB7CisgICAgICBydW50aW1lX2NvbmZpZy5mcmFt
ZV9sZW5ndGhfbXMgPSBwcm90by5mcmFtZV9sZW5ndGhfbXMoKTsKKyAgICB9CisgICAgaWYgKHBy
b3RvLmhhc191cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24oKSkgeworICAgICAgZmxvYXQgdXBs
aW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uOworICAgICAgUlRDX0NIRUNLKFBhcnNlUGFja2V0TG9z
c0ZyYWN0aW9uRnJvbVByb3RvRm9ybWF0KAorICAgICAgICAgIHByb3RvLnVwbGlua19wYWNrZXRf
bG9zc19mcmFjdGlvbigpLCAmdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKSk7CisgICAgICBy
dW50aW1lX2NvbmZpZy51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24gPSB1cGxpbmtfcGFja2V0
X2xvc3NfZnJhY3Rpb247CisgICAgfQorICAgIGlmIChwcm90by5oYXNfZW5hYmxlX2ZlYygpKSB7
CisgICAgICBydW50aW1lX2NvbmZpZy5lbmFibGVfZmVjID0gcHJvdG8uZW5hYmxlX2ZlYygpOwor
ICAgIH0KKyAgICBpZiAocHJvdG8uaGFzX2VuYWJsZV9kdHgoKSkgeworICAgICAgcnVudGltZV9j
b25maWcuZW5hYmxlX2R0eCA9IHByb3RvLmVuYWJsZV9kdHgoKTsKKyAgICB9CisgICAgaWYgKHBy
b3RvLmhhc19udW1fY2hhbm5lbHMoKSkgeworICAgICAgLy8gTm90ZTogRW5jb2RpbmcgTiBhcyBO
LTEgb25seSBkb25lIGZvciB8bnVtX2NoYW5uZWxzX2RlbHRhc3wuCisgICAgICBydW50aW1lX2Nv
bmZpZy5udW1fY2hhbm5lbHMgPSBwcm90by5udW1fY2hhbm5lbHMoKTsKKyAgICB9CisgICAgYXVk
aW9fbmV0d29ya19hZGFwdGF0aW9uX2V2ZW50c18uZW1wbGFjZV9iYWNrKDEwMDAgKiBwcm90by50
aW1lc3RhbXBfbXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnVudGltZV9jb25maWcpOworICB9CisKKyAgY29uc3Qgc2l6ZV90IG51bWJlcl9v
Zl9kZWx0YXMgPQorICAgICAgcHJvdG8uaGFzX251bWJlcl9vZl9kZWx0YXMoKSA/IHByb3RvLm51
bWJlcl9vZl9kZWx0YXMoKSA6IDB1OworICBpZiAobnVtYmVyX29mX2RlbHRhcyA9PSAwKSB7Cisg
ICAgcmV0dXJuOworICB9CisKKyAgLy8gdGltZXN0YW1wX21zCisgIHN0ZDo6dmVjdG9yPGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdGltZXN0YW1wX21zX3ZhbHVlcyA9CisgICAgICBEZWNvZGVE
ZWx0YXMocHJvdG8udGltZXN0YW1wX21zX2RlbHRhcygpLAorICAgICAgICAgICAgICAgICAgIFRv
VW5zaWduZWQocHJvdG8udGltZXN0YW1wX21zKCkpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRD
X0NIRUNLX0VRKHRpbWVzdGFtcF9tc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsK
KworICAvLyBiaXRyYXRlX2JwcworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gdW5z
aWduZWRfYmFzZV9iaXRyYXRlX2JwcyA9CisgICAgICBwcm90by5oYXNfYml0cmF0ZV9icHMoKQor
ICAgICAgICAgID8gYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KFRvVW5zaWduZWQocHJvdG8uYml0
cmF0ZV9icHMoKSkpCisgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAg
c3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBiaXRyYXRlX2Jwc192YWx1ZXMg
PSBEZWNvZGVEZWx0YXMoCisgICAgICBwcm90by5iaXRyYXRlX2Jwc19kZWx0YXMoKSwgdW5zaWdu
ZWRfYmFzZV9iaXRyYXRlX2JwcywgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShi
aXRyYXRlX2Jwc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBmcmFt
ZV9sZW5ndGhfbXMKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHVuc2lnbmVkX2Jh
c2VfZnJhbWVfbGVuZ3RoX21zID0KKyAgICAgIHByb3RvLmhhc19mcmFtZV9sZW5ndGhfbXMoKQor
ICAgICAgICAgID8gYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KFRvVW5zaWduZWQocHJvdG8uZnJh
bWVfbGVuZ3RoX21zKCkpKQorICAgICAgICAgIDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7
CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gZnJhbWVfbGVuZ3RoX21z
X3ZhbHVlcyA9CisgICAgICBEZWNvZGVEZWx0YXMocHJvdG8uZnJhbWVfbGVuZ3RoX21zX2RlbHRh
cygpLAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkX2Jhc2VfZnJhbWVfbGVuZ3RoX21zLCBu
dW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGZyYW1lX2xlbmd0aF9tc192YWx1ZXMu
c2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyB1cGxpbmtfcGFja2V0X2xvc3NfZnJh
Y3Rpb24KKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHVwbGlua19wYWNrZXRfbG9z
c19mcmFjdGlvbiA9CisgICAgICBwcm90by5oYXNfdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9u
KCkKKyAgICAgICAgICA/IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pihwcm90by51cGxpbmtfcGFj
a2V0X2xvc3NfZnJhY3Rpb24oKSkKKyAgICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
PigpOworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHVwbGlua19wYWNr
ZXRfbG9zc19mcmFjdGlvbl92YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLnVwbGlu
a19wYWNrZXRfbG9zc19mcmFjdGlvbl9kZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICB1cGxp
bmtfcGFja2V0X2xvc3NfZnJhY3Rpb24sIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tf
RVEodXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9k
ZWx0YXMpOworCisgIC8vIGVuYWJsZV9mZWMKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0
X3Q+IGVuYWJsZV9mZWMgPQorICAgICAgcHJvdG8uaGFzX2VuYWJsZV9mZWMoKSA/IGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90Pihwcm90by5lbmFibGVfZmVjKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgIHN0ZDo6dmVjdG9yPGFi
c2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gZW5hYmxlX2ZlY192YWx1ZXMgPQorICAgICAgRGVjb2Rl
RGVsdGFzKHByb3RvLmVuYWJsZV9mZWNfZGVsdGFzKCksIGVuYWJsZV9mZWMsIG51bWJlcl9vZl9k
ZWx0YXMpOworICBSVENfQ0hFQ0tfRVEoZW5hYmxlX2ZlY192YWx1ZXMuc2l6ZSgpLCBudW1iZXJf
b2ZfZGVsdGFzKTsKKworICAvLyBlbmFibGVfZHR4CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90PiBlbmFibGVfZHR4ID0KKyAgICAgIHByb3RvLmhhc19lbmFibGVfZHR4KCkgPyBhYnNs
OjpvcHRpb25hbDx1aW50NjRfdD4ocHJvdG8uZW5hYmxlX2R0eCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICBzdGQ6OnZlY3Rv
cjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGVuYWJsZV9kdHhfdmFsdWVzID0KKyAgICAgIERl
Y29kZURlbHRhcyhwcm90by5lbmFibGVfZHR4X2RlbHRhcygpLCBlbmFibGVfZHR4LCBudW1iZXJf
b2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGVuYWJsZV9kdHhfdmFsdWVzLnNpemUoKSwgbnVt
YmVyX29mX2RlbHRhcyk7CisKKyAgLy8gbnVtX2NoYW5uZWxzCisgIC8vIE5vdGU6IEZvciBkZWx0
YSBlbmNvZGluZywgYWxsIG51bV9jaGFubmVsIHZhbHVlcywgaW5jbHVkaW5nIHRoZSBiYXNlLAor
ICAvLyB3ZXJlIHNoaWZ0ZWQgZG93biBieSBvbmUsIGJ1dCBpbiB0aGUgYmFzZSBldmVudCwgdGhl
eSB3ZXJlIG5vdC4KKyAgLy8gV2UgbGlrZXdpc2Ugc2hpZnQgdGhlIGJhc2UgZXZlbnQgZG93biBi
eSBvbmUsIHRvIGdldCB0aGUgc2FtZSBiYXNlIGFzCisgIC8vIGVuY29kaW5nIGhhZCwgYnV0IHRo
ZW4gc2hpZnQgYWxsIG9mIHRoZSB2YWx1ZXMgKGV4Y2VwdCB0aGUgYmFzZSkgYmFjayB1cAorICAv
LyAgdG8gdGhlaXIgb3JpZ2luYWwgdmFsdWUuCisgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBz
aGlmdGVkX2Jhc2VfbnVtX2NoYW5uZWxzOworICBpZiAocHJvdG8uaGFzX251bV9jaGFubmVscygp
KSB7CisgICAgc2hpZnRlZF9iYXNlX251bV9jaGFubmVscyA9CisgICAgICAgIGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90Pihwcm90by5udW1fY2hhbm5lbHMoKSAtIDEpOworICB9CisgIHN0ZDo6dmVj
dG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gbnVtX2NoYW5uZWxzX3ZhbHVlcyA9IERlY29k
ZURlbHRhcygKKyAgICAgIHByb3RvLm51bV9jaGFubmVsc19kZWx0YXMoKSwgc2hpZnRlZF9iYXNl
X251bV9jaGFubmVscywgbnVtYmVyX29mX2RlbHRhcyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtX2NoYW5uZWxzX3ZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGlmIChudW1fY2hhbm5l
bHNfdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBudW1fY2hhbm5lbHNfdmFsdWVzW2ld
ID0gbnVtX2NoYW5uZWxzX3ZhbHVlc1tpXS52YWx1ZSgpICsgMTsKKyAgICB9CisgIH0KKyAgUlRD
X0NIRUNLX0VRKG51bV9jaGFubmVsc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsK
KworICAvLyBEZWx0YSBkZWNvZGluZworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlcl9v
Zl9kZWx0YXM7ICsraSkgeworICAgIFJUQ19DSEVDSyh0aW1lc3RhbXBfbXNfdmFsdWVzW2ldLmhh
c192YWx1ZSgpKTsKKyAgICBpbnQ2NF90IHRpbWVzdGFtcF9tczsKKyAgICBSVENfQ0hFQ0soVG9T
aWduZWQodGltZXN0YW1wX21zX3ZhbHVlc1tpXS52YWx1ZSgpLCAmdGltZXN0YW1wX21zKSk7CisK
KyAgICBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnIHJ1bnRpbWVfY29uZmlnOworICAgIGlmIChi
aXRyYXRlX2Jwc192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIGludCBzaWduZWRfYml0
cmF0ZV9icHM7CisgICAgICBSVENfQ0hFQ0soVG9TaWduZWQoYml0cmF0ZV9icHNfdmFsdWVzW2ld
LnZhbHVlKCksICZzaWduZWRfYml0cmF0ZV9icHMpKTsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLmJp
dHJhdGVfYnBzID0gc2lnbmVkX2JpdHJhdGVfYnBzOworICAgIH0KKyAgICBpZiAoZnJhbWVfbGVu
Z3RoX21zX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSkgeworICAgICAgaW50IHNpZ25lZF9mcmFtZV9s
ZW5ndGhfbXM7CisgICAgICBSVENfQ0hFQ0soCisgICAgICAgICAgVG9TaWduZWQoZnJhbWVfbGVu
Z3RoX21zX3ZhbHVlc1tpXS52YWx1ZSgpLCAmc2lnbmVkX2ZyYW1lX2xlbmd0aF9tcykpOworICAg
ICAgcnVudGltZV9jb25maWcuZnJhbWVfbGVuZ3RoX21zID0gc2lnbmVkX2ZyYW1lX2xlbmd0aF9t
czsKKyAgICB9CisgICAgaWYgKHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbl92YWx1ZXNbaV0u
aGFzX3ZhbHVlKCkpIHsKKyAgICAgIGZsb2F0IHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbjsK
KyAgICAgIFJUQ19DSEVDSyhQYXJzZVBhY2tldExvc3NGcmFjdGlvbkZyb21Qcm90b0Zvcm1hdCgK
KyAgICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDx1aW50MzJfdD4oCisgICAgICAgICAgICAgIHVw
bGlua19wYWNrZXRfbG9zc19mcmFjdGlvbl92YWx1ZXNbaV0udmFsdWUoKSksCisgICAgICAgICAg
JnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbikpOworICAgICAgcnVudGltZV9jb25maWcudXBs
aW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uID0gdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uOwor
ICAgIH0KKyAgICBpZiAoZW5hYmxlX2ZlY192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAg
IHJ1bnRpbWVfY29uZmlnLmVuYWJsZV9mZWMgPQorICAgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0
PGJvb2w+KGVuYWJsZV9mZWNfdmFsdWVzW2ldLnZhbHVlKCkpOworICAgIH0KKyAgICBpZiAoZW5h
YmxlX2R0eF92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLmVu
YWJsZV9kdHggPQorICAgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PGJvb2w+KGVuYWJsZV9kdHhf
dmFsdWVzW2ldLnZhbHVlKCkpOworICAgIH0KKyAgICBpZiAobnVtX2NoYW5uZWxzX3ZhbHVlc1tp
XS5oYXNfdmFsdWUoKSkgeworICAgICAgcnVudGltZV9jb25maWcubnVtX2NoYW5uZWxzID0KKyAg
ICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDxzaXplX3Q+KG51bV9jaGFubmVsc192YWx1ZXNbaV0u
dmFsdWUoKSk7CisgICAgfQorICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbl9ldmVudHNfLmVt
cGxhY2VfYmFjaygxMDAwICogdGltZXN0YW1wX21zLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lX2NvbmZpZyk7CisgIH0KK30KKwordm9p
ZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAorICAg
IGNvbnN0IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWcmIHByb3RvKSB7CisgIExvZ2dl
ZEljZUNhbmRpZGF0ZVBhaXJDb25maWcgaWNlX2NvbmZpZzsKKyAgUlRDX0NIRUNLKHByb3RvLmhh
c190aW1lc3RhbXBfbXMoKSk7CisgIGljZV9jb25maWcudGltZXN0YW1wX3VzID0gcHJvdG8udGlt
ZXN0YW1wX21zKCkgKiAxMDAwOworCisgIFJUQ19DSEVDSyhwcm90by5oYXNfY29uZmlnX3R5cGUo
KSk7CisgIGljZV9jb25maWcudHlwZSA9IEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyQ29uZmln
VHlwZShwcm90by5jb25maWdfdHlwZSgpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19jYW5kaWRh
dGVfcGFpcl9pZCgpKTsKKyAgaWNlX2NvbmZpZy5jYW5kaWRhdGVfcGFpcl9pZCA9IHByb3RvLmNh
bmRpZGF0ZV9wYWlyX2lkKCk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfbG9jYWxfY2FuZGlkYXRl
X3R5cGUoKSk7CisgIGljZV9jb25maWcubG9jYWxfY2FuZGlkYXRlX3R5cGUgPQorICAgICAgR2V0
UnVudGltZUljZUNhbmRpZGF0ZVR5cGUocHJvdG8ubG9jYWxfY2FuZGlkYXRlX3R5cGUoKSk7Cisg
IFJUQ19DSEVDSyhwcm90by5oYXNfbG9jYWxfcmVsYXlfcHJvdG9jb2woKSk7CisgIGljZV9jb25m
aWcubG9jYWxfcmVsYXlfcHJvdG9jb2wgPQorICAgICAgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBh
aXJQcm90b2NvbChwcm90by5sb2NhbF9yZWxheV9wcm90b2NvbCgpKTsKKyAgUlRDX0NIRUNLKHBy
b3RvLmhhc19sb2NhbF9uZXR3b3JrX3R5cGUoKSk7CisgIGljZV9jb25maWcubG9jYWxfbmV0d29y
a190eXBlID0KKyAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZShwcm90by5s
b2NhbF9uZXR3b3JrX3R5cGUoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfbG9jYWxfYWRkcmVz
c19mYW1pbHkoKSk7CisgIGljZV9jb25maWcubG9jYWxfYWRkcmVzc19mYW1pbHkgPQorICAgICAg
R2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5KHByb3RvLmxvY2FsX2FkZHJl
c3NfZmFtaWx5KCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3JlbW90ZV9jYW5kaWRhdGVfdHlw
ZSgpKTsKKyAgaWNlX2NvbmZpZy5yZW1vdGVfY2FuZGlkYXRlX3R5cGUgPQorICAgICAgR2V0UnVu
dGltZUljZUNhbmRpZGF0ZVR5cGUocHJvdG8ucmVtb3RlX2NhbmRpZGF0ZV90eXBlKCkpOworICBS
VENfQ0hFQ0socHJvdG8uaGFzX3JlbW90ZV9hZGRyZXNzX2ZhbWlseSgpKTsKKyAgaWNlX2NvbmZp
Zy5yZW1vdGVfYWRkcmVzc19mYW1pbHkgPQorICAgICAgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBh
aXJBZGRyZXNzRmFtaWx5KHByb3RvLnJlbW90ZV9hZGRyZXNzX2ZhbWlseSgpKTsKKyAgUlRDX0NI
RUNLKHByb3RvLmhhc19jYW5kaWRhdGVfcGFpcl9wcm90b2NvbCgpKTsKKyAgaWNlX2NvbmZpZy5j
YW5kaWRhdGVfcGFpcl9wcm90b2NvbCA9CisgICAgICBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFp
clByb3RvY29sKHByb3RvLmNhbmRpZGF0ZV9wYWlyX3Byb3RvY29sKCkpOworCisgIGljZV9jYW5k
aWRhdGVfcGFpcl9jb25maWdzXy5wdXNoX2JhY2soaWNlX2NvbmZpZyk7CisKKyAgLy8gVE9ETyh0
ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YSBlbmNvZGUgdGhpcyBldmVudCB0eXBlPworfQorCit2
b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUljZUNhbmRpZGF0ZUV2ZW50KAorICAgIGNv
bnN0IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudCYgcHJvdG8pIHsKKyAgTG9nZ2VkSWNl
Q2FuZGlkYXRlUGFpckV2ZW50IGljZV9ldmVudDsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190aW1l
c3RhbXBfbXMoKSk7CisgIGljZV9ldmVudC50aW1lc3RhbXBfdXMgPSBwcm90by50aW1lc3RhbXBf
bXMoKSAqIDEwMDA7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfZXZlbnRfdHlwZSgpKTsKKyAgaWNl
X2V2ZW50LnR5cGUgPSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZShwcm90by5l
dmVudF90eXBlKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2NhbmRpZGF0ZV9wYWlyX2lkKCkp
OworICBpY2VfZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQgPSBwcm90by5jYW5kaWRhdGVfcGFpcl9p
ZCgpOworCisgIGljZV9jYW5kaWRhdGVfcGFpcl9ldmVudHNfLnB1c2hfYmFjayhpY2VfZXZlbnQp
OworCisgIC8vIFRPRE8odGVyZWxpdXMpOiBTaG91bGQgd2UgZGVsdGEgZW5jb2RlIHRoaXMgZXZl
bnQgdHlwZT8KK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVWaWRlb1JlY3ZD
b25maWcoCisgICAgY29uc3QgcnRjbG9nMjo6VmlkZW9SZWN2U3RyZWFtQ29uZmlnJiBwcm90bykg
eworICBMb2dnZWRWaWRlb1JlY3ZDb25maWcgc3RyZWFtOworICBSVENfQ0hFQ0socHJvdG8uaGFz
X3RpbWVzdGFtcF9tcygpKTsKKyAgc3RyZWFtLnRpbWVzdGFtcF91cyA9IHByb3RvLnRpbWVzdGFt
cF9tcygpICogMTAwMDsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19yZW1vdGVfc3NyYygpKTsKKyAg
c3RyZWFtLmNvbmZpZy5yZW1vdGVfc3NyYyA9IHByb3RvLnJlbW90ZV9zc3JjKCk7CisgIFJUQ19D
SEVDSyhwcm90by5oYXNfbG9jYWxfc3NyYygpKTsKKyAgc3RyZWFtLmNvbmZpZy5sb2NhbF9zc3Jj
ID0gcHJvdG8ubG9jYWxfc3NyYygpOworICBpZiAocHJvdG8uaGFzX3J0eF9zc3JjKCkpIHsKKyAg
ICBzdHJlYW0uY29uZmlnLnJ0eF9zc3JjID0gcHJvdG8ucnR4X3NzcmMoKTsKKyAgfQorICBpZiAo
cHJvdG8uaGFzX2hlYWRlcl9leHRlbnNpb25zKCkpIHsKKyAgICBzdHJlYW0uY29uZmlnLnJ0cF9l
eHRlbnNpb25zID0KKyAgICAgICAgR2V0UnVudGltZVJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyhw
cm90by5oZWFkZXJfZXh0ZW5zaW9ucygpKTsKKyAgfQorICB2aWRlb19yZWN2X2NvbmZpZ3NfLnB1
c2hfYmFjayhzdHJlYW0pOworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZVZp
ZGVvU2VuZENvbmZpZygKKyAgICBjb25zdCBydGNsb2cyOjpWaWRlb1NlbmRTdHJlYW1Db25maWcm
IHByb3RvKSB7CisgIExvZ2dlZFZpZGVvU2VuZENvbmZpZyBzdHJlYW07CisgIFJUQ19DSEVDSyhw
cm90by5oYXNfdGltZXN0YW1wX21zKCkpOworICBzdHJlYW0udGltZXN0YW1wX3VzID0gcHJvdG8u
dGltZXN0YW1wX21zKCkgKiAxMDAwOworICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7Cisg
IFJUQ19DSEVDSyhwcm90by5oYXNfc3NyYygpKTsKKyAgY29uZmlnLmxvY2FsX3NzcmMgPSBwcm90
by5zc3JjKCk7CisgIGlmIChwcm90by5oYXNfcnR4X3NzcmMoKSkgeworICAgIGNvbmZpZy5ydHhf
c3NyYyA9IHByb3RvLnJ0eF9zc3JjKCk7CisgIH0KKyAgaWYgKHByb3RvLmhhc19oZWFkZXJfZXh0
ZW5zaW9ucygpKSB7CisgICAgY29uZmlnLnJ0cF9leHRlbnNpb25zID0KKyAgICAgICAgR2V0UnVu
dGltZVJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyhwcm90by5oZWFkZXJfZXh0ZW5zaW9ucygpKTsK
KyAgfQorICBzdHJlYW0uY29uZmlncy5wdXNoX2JhY2soY29uZmlnKTsKKyAgdmlkZW9fc2VuZF9j
b25maWdzXy5wdXNoX2JhY2soc3RyZWFtKTsKK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05l
dzo6U3RvcmVBdWRpb1JlY3ZDb25maWcoCisgICAgY29uc3QgcnRjbG9nMjo6QXVkaW9SZWN2U3Ry
ZWFtQ29uZmlnJiBwcm90bykgeworICBMb2dnZWRBdWRpb1JlY3ZDb25maWcgc3RyZWFtOworICBS
VENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgc3RyZWFtLnRpbWVzdGFtcF91
cyA9IHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAwMDsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19y
ZW1vdGVfc3NyYygpKTsKKyAgc3RyZWFtLmNvbmZpZy5yZW1vdGVfc3NyYyA9IHByb3RvLnJlbW90
ZV9zc3JjKCk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfbG9jYWxfc3NyYygpKTsKKyAgc3RyZWFt
LmNvbmZpZy5sb2NhbF9zc3JjID0gcHJvdG8ubG9jYWxfc3NyYygpOworICBpZiAocHJvdG8uaGFz
X2hlYWRlcl9leHRlbnNpb25zKCkpIHsKKyAgICBzdHJlYW0uY29uZmlnLnJ0cF9leHRlbnNpb25z
ID0KKyAgICAgICAgR2V0UnVudGltZVJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyhwcm90by5oZWFk
ZXJfZXh0ZW5zaW9ucygpKTsKKyAgfQorICBhdWRpb19yZWN2X2NvbmZpZ3NfLnB1c2hfYmFjayhz
dHJlYW0pOworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUF1ZGlvU2VuZENv
bmZpZygKKyAgICBjb25zdCBydGNsb2cyOjpBdWRpb1NlbmRTdHJlYW1Db25maWcmIHByb3RvKSB7
CisgIExvZ2dlZEF1ZGlvU2VuZENvbmZpZyBzdHJlYW07CisgIFJUQ19DSEVDSyhwcm90by5oYXNf
dGltZXN0YW1wX21zKCkpOworICBzdHJlYW0udGltZXN0YW1wX3VzID0gcHJvdG8udGltZXN0YW1w
X21zKCkgKiAxMDAwOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3NzcmMoKSk7CisgIHN0cmVhbS5j
b25maWcubG9jYWxfc3NyYyA9IHByb3RvLnNzcmMoKTsKKyAgaWYgKHByb3RvLmhhc19oZWFkZXJf
ZXh0ZW5zaW9ucygpKSB7CisgICAgc3RyZWFtLmNvbmZpZy5ydHBfZXh0ZW5zaW9ucyA9CisgICAg
ICAgIEdldFJ1bnRpbWVSdHBIZWFkZXJFeHRlbnNpb25Db25maWcocHJvdG8uaGVhZGVyX2V4dGVu
c2lvbnMoKSk7CisgIH0KKyAgYXVkaW9fc2VuZF9jb25maWdzXy5wdXNoX2JhY2soc3RyZWFtKTsK
K30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVu
dF9sb2dfcGFyc2VyX25ldy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5oCmlu
ZGV4IDVhYjBjMTViOTJhNzllNTZjNGMwOWNkZjBkNGIwNGVlZjEyZjA2NzYuLjUwZTNiOTkyMmRl
MjZhZGM4ZGU4MDAwZDBlYTZmNGVjNGNiYjViMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZl
bnRfbG9nX3BhcnNlcl9uZXcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXJfbmV3
LmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfZmFpbHVyZS5oIgogI2luY2x1ZGUgImxvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL3J0Y19zdHJlYW1fY29uZmlnLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2lu
Y2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9jb21tb25faGVhZGVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvbmFjay5oIgpAQCAtMzks
OCArMzksMTAgQEAKIFJUQ19QVVNIX0lHTk9SSU5HX1dVTkRFRigpCiAjaWZkZWYgV0VCUlRDX0FO
RFJPSURfUExBVEZPUk1fQlVJTEQKICNpbmNsdWRlICJleHRlcm5hbC93ZWJydGMvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLnBiLmgiCisjaW5jbHVkZSAiZXh0ZXJu
YWwvd2VicnRjL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzIucGIu
aCIKICNlbHNlCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cu
cGIuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzIucGIu
aCIKICNlbmRpZgogUlRDX1BPUF9JR05PUklOR19XVU5ERUYoKQogCkBAIC01NSw3MCArNTcsMTM2
IEBAIHN0cnVjdCBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnOwogLy8gY29uc2lkZXJlZCB0byBv
dXR3ZWlnaCB0aGUgYWRkZWQgbWVtb3J5IGFuZCBydW50aW1lIG92ZXJoZWFkIGluY3VycmVkIGJ5
CiAvLyBhZGRpbmcgYSB2cHRyLgogc3RydWN0IExvZ2dlZEFsclN0YXRlRXZlbnQgewotICBpbnQ2
NF90IHRpbWVzdGFtcF91czsKLSAgYm9vbCBpbl9hbHI7CisgIExvZ2dlZEFsclN0YXRlRXZlbnQo
KSA9IGRlZmF1bHQ7CisgIExvZ2dlZEFsclN0YXRlRXZlbnQoaW50NjRfdCB0aW1lc3RhbXBfdXMs
IGJvb2wgaW5fYWxyKQorICAgICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwgaW5fYWxy
KGluX2Fscikge30KKwogICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGlt
ZXN0YW1wX3VzOyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1l
c3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CisgIGJvb2wgaW5f
YWxyOwogfTsKIAogc3RydWN0IExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50IHsKLSAgaW50NjRfdCB0
aW1lc3RhbXBfdXM7Ci0gIHVpbnQzMl90IHNzcmM7CisgIExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50
KCkgPSBkZWZhdWx0OworICBMb2dnZWRBdWRpb1BsYXlvdXRFdmVudChpbnQ2NF90IHRpbWVzdGFt
cF91cywgdWludDMyX3Qgc3NyYykKKyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyks
IHNzcmMoc3NyYykge30KKwogICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4g
dGltZXN0YW1wX3VzOyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0
aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CisgIHVpbnQz
Ml90IHNzcmM7CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50
IHsKLSAgaW50NjRfdCB0aW1lc3RhbXBfdXM7Ci0gIEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWcg
Y29uZmlnOworICBMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRXZlbnQoKSA9IGRlZmF1bHQ7
CisgIExvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudChpbnQ2NF90IHRpbWVzdGFtcF91
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvRW5jb2Rl
clJ1bnRpbWVDb25maWcmIGNvbmZpZykKKyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91
cyksIGNvbmZpZyhjb25maWcpIHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsg
cmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyBy
ZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOwor
ICBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnIGNvbmZpZzsKIH07CiAKIHN0cnVjdCBMb2dnZWRC
d2VEZWxheUJhc2VkVXBkYXRlIHsKKyAgTG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSgpID0gZGVm
YXVsdDsKKyAgTG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZShpbnQ2NF90IHRpbWVzdGFtcF91cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGJpdHJhdGVfYnBzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJhbmR3aWR0aFVzYWdlIGRldGVjdG9yX3N0YXRlKQorICAg
ICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwKKyAgICAgICAgYml0cmF0ZV9icHMoYml0
cmF0ZV9icHMpLAorICAgICAgICBkZXRlY3Rvcl9zdGF0ZShkZXRlY3Rvcl9zdGF0ZSkge30KKwor
ICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9Cisg
IGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAw
OyB9CisKICAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CiAgIGludDMyX3QgYml0cmF0ZV9icHM7CiAg
IEJhbmR3aWR0aFVzYWdlIGRldGVjdG9yX3N0YXRlOwotICBpbnQ2NF90IGxvZ190aW1lX3VzKCkg
Y29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9Ci0gIGludDY0X3QgbG9nX3RpbWVfbXMoKSBj
b25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CiB9OwogCiBzdHJ1Y3QgTG9nZ2Vk
QndlTG9zc0Jhc2VkVXBkYXRlIHsKKyAgTG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlKCkgPSBkZWZh
dWx0OworICBMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUoaW50NjRfdCB0aW1lc3RhbXBfdXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGJpdHJhdGVfYnBzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3N0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJfdCBleHBlY3RlZF9wYWNrZXRzKQorICAgICAgOiB0aW1lc3RhbXBf
dXModGltZXN0YW1wX3VzKSwKKyAgICAgICAgYml0cmF0ZV9icHMoYml0cmF0ZV9icHMpLAorICAg
ICAgICBmcmFjdGlvbl9sb3N0KGZyYWN0aW9uX2xvc3QpLAorICAgICAgICBleHBlY3RlZF9wYWNr
ZXRzKGV4cGVjdGVkX3BhY2tldHMpIHt9CisKKyAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0
IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQorICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3Qg
eyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCiAgIGludDY0X3QgdGltZXN0YW1wX3Vz
OwogICBpbnQzMl90IGJpdHJhdGVfYnBzOwogICB1aW50OF90IGZyYWN0aW9uX2xvc3Q7CiAgIGlu
dDMyX3QgZXhwZWN0ZWRfcGFja2V0czsKLSAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsg
cmV0dXJuIHRpbWVzdGFtcF91czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyBy
ZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExvZ2dlZEJ3ZVByb2Jl
Q2x1c3RlckNyZWF0ZWRFdmVudCB7CisgIExvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVu
dCgpID0gZGVmYXVsdDsKKyAgTG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50KGludDY0
X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgYml0
cmF0ZV9icHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBt
aW5fcGFja2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IG1pbl9ieXRlcykKKyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksCisgICAgICAg
IGlkKGlkKSwKKyAgICAgICAgYml0cmF0ZV9icHMoYml0cmF0ZV9icHMpLAorICAgICAgICBtaW5f
cGFja2V0cyhtaW5fcGFja2V0cyksCisgICAgICAgIG1pbl9ieXRlcyhtaW5fYnl0ZXMpIHt9CisK
KyAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQor
ICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAw
MDsgfQorCiAgIGludDY0X3QgdGltZXN0YW1wX3VzOwogICBpbnQzMl90IGlkOwogICBpbnQzMl90
IGJpdHJhdGVfYnBzOwogICB1aW50MzJfdCBtaW5fcGFja2V0czsKICAgdWludDMyX3QgbWluX2J5
dGVzOwotICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
OyB9Ci0gIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMg
LyAxMDAwOyB9CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQgeworICBM
b2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCgpID0gZGVmYXVsdDsKKyAgTG9nZ2VkQndlUHJvYmVT
dWNjZXNzRXZlbnQoaW50NjRfdCB0aW1lc3RhbXBfdXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDMyX3QgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
Yml0cmF0ZV9icHMpCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBpZChpZCks
IGJpdHJhdGVfYnBzKGJpdHJhdGVfYnBzKSB7fQorCisgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBj
b25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KKyAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNv
bnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKwogICBpbnQ2NF90IHRpbWVzdGFt
cF91czsKICAgaW50MzJfdCBpZDsKICAgaW50MzJfdCBiaXRyYXRlX2JwczsKLSAgaW50NjRfdCBs
b2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQotICBpbnQ2NF90IGxv
Z190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQogfTsKIAog
c3RydWN0IExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50IHsKKyAgTG9nZ2VkQndlUHJvYmVGYWls
dXJlRXZlbnQoKSA9IGRlZmF1bHQ7CisgIExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50KGludDY0
X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iZUZhaWx1cmVSZWFzb24gZmFpbHVy
ZV9yZWFzb24pCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBpZChpZCksIGZh
aWx1cmVfcmVhc29uKGZhaWx1cmVfcmVhc29uKSB7fQorCisgIGludDY0X3QgbG9nX3RpbWVfdXMo
KSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KKyAgaW50NjRfdCBsb2dfdGltZV9tcygp
IGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKwogICBpbnQ2NF90IHRpbWVz
dGFtcF91czsKICAgaW50MzJfdCBpZDsKICAgUHJvYmVGYWlsdXJlUmVhc29uIGZhaWx1cmVfcmVh
c29uOwotICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
OyB9Ci0gIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMg
LyAxMDAwOyB9CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyB7Cisg
IGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KKyAg
aW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7
IH0KKwogICBpbnQ2NF90IHRpbWVzdGFtcF91czsKICAgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5
cGUgdHlwZTsKICAgdWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWQ7CkBAIC0xMjksMTYgKzE5Nywy
MyBAQCBzdHJ1Y3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyB7CiAgIEljZUNhbmRpZGF0
ZVR5cGUgcmVtb3RlX2NhbmRpZGF0ZV90eXBlOwogICBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0Zh
bWlseSByZW1vdGVfYWRkcmVzc19mYW1pbHk7CiAgIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbCBj
YW5kaWRhdGVfcGFpcl9wcm90b2NvbDsKLSAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsg
cmV0dXJuIHRpbWVzdGFtcF91czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyBy
ZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExvZ2dlZEljZUNhbmRp
ZGF0ZVBhaXJFdmVudCB7CisgIExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCgpID0gZGVmYXVs
dDsKKyAgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50KGludDY0X3QgdGltZXN0YW1wX3VzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY2FuZGlkYXRlX3Bh
aXJfaWQpCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLAorICAgICAgICB0eXBl
KHR5cGUpLAorICAgICAgICBjYW5kaWRhdGVfcGFpcl9pZChjYW5kaWRhdGVfcGFpcl9pZCkge30K
KworICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9
CisgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAx
MDAwOyB9CisKICAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CiAgIEljZUNhbmRpZGF0ZVBhaXJFdmVu
dFR5cGUgdHlwZTsKICAgdWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWQ7Ci0gIGludDY0X3QgbG9n
X3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KLSAgaW50NjRfdCBsb2df
dGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KIH07CiAKIHN0
cnVjdCBMb2dnZWRSdHBQYWNrZXQgewpAQCAtMTUwLDEzICsyMjUsMTUgQEAgc3RydWN0IExvZ2dl
ZFJ0cFBhY2tldCB7CiAgICAgICAgIGhlYWRlcihoZWFkZXIpLAogICAgICAgICBoZWFkZXJfbGVu
Z3RoKGhlYWRlcl9sZW5ndGgpLAogICAgICAgICB0b3RhbF9sZW5ndGgodG90YWxfbGVuZ3RoKSB7
fQorCisgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7
IH0KKyAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAv
IDEwMDA7IH0KKwogICBpbnQ2NF90IHRpbWVzdGFtcF91czsKICAgLy8gVE9ETyh0ZXJlbGl1cyk6
IFRoaXMgYWxsb2NhdGVzIHNwYWNlIGZvciAxNSBDU1JDcyBldmVuIGlmIG5vbmUgYXJlIHVzZWQu
CiAgIFJUUEhlYWRlciBoZWFkZXI7CiAgIHNpemVfdCBoZWFkZXJfbGVuZ3RoOwogICBzaXplX3Qg
dG90YWxfbGVuZ3RoOwotICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGlt
ZXN0YW1wX3VzOyB9Ci0gIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1l
c3RhbXBfdXMgLyAxMDAwOyB9CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcg
ewpAQCAtMTY1LDkgKzI0MiwxMCBAQCBzdHJ1Y3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVhZGVyX2xlbmd0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHRvdGFsX2xlbmd0aCkKICAgICAgIDogcnRwKHRpbWVz
dGFtcF91cywgaGVhZGVyLCBoZWFkZXJfbGVuZ3RoLCB0b3RhbF9sZW5ndGgpIHt9Ci0gIExvZ2dl
ZFJ0cFBhY2tldCBydHA7CiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiBy
dHAudGltZXN0YW1wX3VzOyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVy
biBydHAudGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIExvZ2dlZFJ0cFBhY2tldCBydHA7CiB9
OwogCiBzdHJ1Y3QgTG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcgewpAQCAtMTc2LDIxICsyNTQsMjUg
QEAgc3RydWN0IExvZ2dlZFJ0cFBhY2tldE91dGdvaW5nIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGhlYWRlcl9sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCB0b3RhbF9sZW5ndGgpCiAgICAgICA6IHJ0cCh0aW1lc3RhbXBfdXMsIGhlYWRlciwgaGVh
ZGVyX2xlbmd0aCwgdG90YWxfbGVuZ3RoKSB7fQotICBMb2dnZWRSdHBQYWNrZXQgcnRwOwogICBp
bnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gcnRwLnRpbWVzdGFtcF91czsgfQog
ICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gcnRwLnRpbWVzdGFtcF91cyAv
IDEwMDA7IH0KKworICBMb2dnZWRSdHBQYWNrZXQgcnRwOwogfTsKIAogc3RydWN0IExvZ2dlZFJ0
Y3BQYWNrZXQgewogICBMb2dnZWRSdGNwUGFja2V0KHVpbnQ2NF90IHRpbWVzdGFtcF91cywKICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwYWNrZXQsCiAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHRvdGFsX2xlbmd0aCk7CisgIExvZ2dlZFJ0Y3BQYWNrZXQodWludDY0X3QgdGlt
ZXN0YW1wX3VzLCBjb25zdCBzdGQ6OnN0cmluZyYgcGFja2V0KTsKICAgTG9nZ2VkUnRjcFBhY2tl
dChjb25zdCBMb2dnZWRSdGNwUGFja2V0Jik7CiAgIH5Mb2dnZWRSdGNwUGFja2V0KCk7Ci0gIGlu
dDY0X3QgdGltZXN0YW1wX3VzOwotICBzdGQ6OnZlY3Rvcjx1aW50OF90PiByYXdfZGF0YTsKKwog
ICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CiAg
IGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAw
OyB9CisKKyAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CisgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHJh
d19kYXRhOwogfTsKIAogc3RydWN0IExvZ2dlZFJ0Y3BQYWNrZXRJbmNvbWluZyB7CkBAIC0xOTgs
OSArMjgwLDEzIEBAIHN0cnVjdCBMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogcGFja2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHRvdGFsX2xlbmd0aCkKICAgICAgIDogcnRjcCh0aW1lc3RhbXBf
dXMsIHBhY2tldCwgdG90YWxfbGVuZ3RoKSB7fQotICBMb2dnZWRSdGNwUGFja2V0IHJ0Y3A7Cisg
IExvZ2dlZFJ0Y3BQYWNrZXRJbmNvbWluZyh1aW50NjRfdCB0aW1lc3RhbXBfdXMsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBwYWNrZXQpCisgICAgICA6IHJ0Y3AodGltZXN0YW1wX3VzLCBwYWNrZXQpIHt9
CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHJ0Y3AudGltZXN0YW1w
X3VzOyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiBydGNwLnRpbWVz
dGFtcF91cyAvIDEwMDA7IH0KKworICBMb2dnZWRSdGNwUGFja2V0IHJ0Y3A7CiB9OwogCiBzdHJ1
Y3QgTG9nZ2VkUnRjcFBhY2tldE91dGdvaW5nIHsKQEAgLTIwOCw5NyArMjk0LDE1MCBAQCBzdHJ1
Y3QgTG9nZ2VkUnRjcFBhY2tldE91dGdvaW5nIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCB0b3RhbF9sZW5ndGgpCiAgICAgICA6IHJ0Y3AodGltZXN0YW1wX3VzLCBwYWNrZXQsIHRvdGFs
X2xlbmd0aCkge30KLSAgTG9nZ2VkUnRjcFBhY2tldCBydGNwOworICBMb2dnZWRSdGNwUGFja2V0
T3V0Z29pbmcodWludDY0X3QgdGltZXN0YW1wX3VzLCBjb25zdCBzdGQ6OnN0cmluZyYgcGFja2V0
KQorICAgICAgOiBydGNwKHRpbWVzdGFtcF91cywgcGFja2V0KSB7fQorCiAgIGludDY0X3QgbG9n
X3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiBydGNwLnRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90
IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gcnRjcC50aW1lc3RhbXBfdXMgLyAxMDAwOyB9
CisKKyAgTG9nZ2VkUnRjcFBhY2tldCBydGNwOwogfTsKIAogc3RydWN0IExvZ2dlZFJ0Y3BQYWNr
ZXRSZWNlaXZlclJlcG9ydCB7Ci0gIGludDY0X3QgdGltZXN0YW1wX3VzOwotICBydGNwOjpSZWNl
aXZlclJlcG9ydCBycjsKKyAgTG9nZ2VkUnRjcFBhY2tldFJlY2VpdmVyUmVwb3J0KCkgPSBkZWZh
dWx0OworICBMb2dnZWRSdGNwUGFja2V0UmVjZWl2ZXJSZXBvcnQoaW50NjRfdCB0aW1lc3RhbXBf
dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGNwOjpSZWNlaXZl
clJlcG9ydCYgcnIpCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBycihycikg
e30KKwogICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
OyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMg
LyAxMDAwOyB9CisKKyAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CisgIHJ0Y3A6OlJlY2VpdmVyUmVw
b3J0IHJyOwogfTsKIAogc3RydWN0IExvZ2dlZFJ0Y3BQYWNrZXRTZW5kZXJSZXBvcnQgewotICBp
bnQ2NF90IHRpbWVzdGFtcF91czsKLSAgcnRjcDo6U2VuZGVyUmVwb3J0IHNyOworICBMb2dnZWRS
dGNwUGFja2V0U2VuZGVyUmVwb3J0KCkgPSBkZWZhdWx0OworICBMb2dnZWRSdGNwUGFja2V0U2Vu
ZGVyUmVwb3J0KGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Y3A6OlNlbmRlclJlcG9ydCYgc3IpCisgICAgICA6IHRpbWVzdGFtcF91
cyh0aW1lc3RhbXBfdXMpLCBzcihzcikge30KKwogICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29u
c3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25z
dCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgaW50NjRfdCB0aW1lc3RhbXBf
dXM7CisgIHJ0Y3A6OlNlbmRlclJlcG9ydCBzcjsKIH07CiAKIHN0cnVjdCBMb2dnZWRSdGNwUGFj
a2V0UmVtYiB7Ci0gIGludDY0X3QgdGltZXN0YW1wX3VzOwotICBydGNwOjpSZW1iIHJlbWI7Cisg
IExvZ2dlZFJ0Y3BQYWNrZXRSZW1iKCkgPSBkZWZhdWx0OworICBMb2dnZWRSdGNwUGFja2V0UmVt
YihpbnQ2NF90IHRpbWVzdGFtcF91cywgY29uc3QgcnRjcDo6UmVtYiYgcmVtYikKKyAgICAgIDog
dGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIHJlbWIocmVtYikge30KKwogICBpbnQ2NF90IGxv
Z190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CiAgIGludDY0X3QgbG9n
X3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgaW50
NjRfdCB0aW1lc3RhbXBfdXM7CisgIHJ0Y3A6OlJlbWIgcmVtYjsKIH07CiAKIHN0cnVjdCBMb2dn
ZWRSdGNwUGFja2V0TmFjayB7Ci0gIGludDY0X3QgdGltZXN0YW1wX3VzOwotICBydGNwOjpOYWNr
IG5hY2s7CisgIExvZ2dlZFJ0Y3BQYWNrZXROYWNrKCkgPSBkZWZhdWx0OworICBMb2dnZWRSdGNw
UGFja2V0TmFjayhpbnQ2NF90IHRpbWVzdGFtcF91cywgY29uc3QgcnRjcDo6TmFjayYgbmFjaykK
KyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIG5hY2sobmFjaykge30KKwogICBp
bnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CiAgIGlu
dDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9
CisKKyAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CisgIHJ0Y3A6Ok5hY2sgbmFjazsKIH07CiAKIHN0
cnVjdCBMb2dnZWRSdGNwUGFja2V0VHJhbnNwb3J0RmVlZGJhY2sgewotICBpbnQ2NF90IHRpbWVz
dGFtcF91czsKLSAgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2sgdHJhbnNwb3J0X2ZlZWRiYWNrOwor
ICBMb2dnZWRSdGNwUGFja2V0VHJhbnNwb3J0RmVlZGJhY2soKSA9IGRlZmF1bHQ7CisgIExvZ2dl
ZFJ0Y3BQYWNrZXRUcmFuc3BvcnRGZWVkYmFjaygKKyAgICAgIGludDY0X3QgdGltZXN0YW1wX3Vz
LAorICAgICAgY29uc3QgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2smIHRyYW5zcG9ydF9mZWVkYmFj
aykKKyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIHRyYW5zcG9ydF9mZWVkYmFj
ayh0cmFuc3BvcnRfZmVlZGJhY2spIHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0
IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3Qg
eyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3Vz
OworICBydGNwOjpUcmFuc3BvcnRGZWVkYmFjayB0cmFuc3BvcnRfZmVlZGJhY2s7CiB9OwogCiBz
dHJ1Y3QgTG9nZ2VkU3RhcnRFdmVudCB7CiAgIGV4cGxpY2l0IExvZ2dlZFN0YXJ0RXZlbnQoaW50
NjRfdCB0aW1lc3RhbXBfdXMpCi0gICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpIHt9
Ci0gIGludDY0X3QgdGltZXN0YW1wX3VzOworICAgICAgOiBMb2dnZWRTdGFydEV2ZW50KHRpbWVz
dGFtcF91cywgdGltZXN0YW1wX3VzIC8gMTAwMCkge30KKworICBMb2dnZWRTdGFydEV2ZW50KGlu
dDY0X3QgdGltZXN0YW1wX3VzLCBpbnQ2NF90IHV0Y19zdGFydF90aW1lX21zKQorICAgICAgOiB0
aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwgdXRjX3N0YXJ0X3RpbWVfbXModXRjX3N0YXJ0X3Rp
bWVfbXMpIHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVz
dGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0
YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBpbnQ2NF90IHV0
Y19zdGFydF90aW1lX21zOwogfTsKIAogc3RydWN0IExvZ2dlZFN0b3BFdmVudCB7CiAgIGV4cGxp
Y2l0IExvZ2dlZFN0b3BFdmVudChpbnQ2NF90IHRpbWVzdGFtcF91cykgOiB0aW1lc3RhbXBfdXMo
dGltZXN0YW1wX3VzKSB7fQotICBpbnQ2NF90IHRpbWVzdGFtcF91czsKKwogICBpbnQ2NF90IGxv
Z190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CiAgIGludDY0X3QgbG9n
X3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgaW50
NjRfdCB0aW1lc3RhbXBfdXM7CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkQXVkaW9SZWN2Q29uZmlnIHsK
KyAgTG9nZ2VkQXVkaW9SZWN2Q29uZmlnKCkgPSBkZWZhdWx0OwogICBMb2dnZWRBdWRpb1JlY3ZD
b25maWcoaW50NjRfdCB0aW1lc3RhbXBfdXMsIGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNv
bmZpZykKICAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIGNvbmZpZyhjb25maWcp
IHt9Ci0gIGludDY0X3QgdGltZXN0YW1wX3VzOwotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25m
aWc7CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91
czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
IC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBydGNsb2c6OlN0cmVhbUNv
bmZpZyBjb25maWc7CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkQXVkaW9TZW5kQ29uZmlnIHsKKyAgTG9n
Z2VkQXVkaW9TZW5kQ29uZmlnKCkgPSBkZWZhdWx0OwogICBMb2dnZWRBdWRpb1NlbmRDb25maWco
aW50NjRfdCB0aW1lc3RhbXBfdXMsIGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZykK
ICAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIGNvbmZpZyhjb25maWcpIHt9Ci0g
IGludDY0X3QgdGltZXN0YW1wX3VzOwotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7CisK
ICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQog
ICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAw
MDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBydGNsb2c6OlN0cmVhbUNvbmZpZyBj
b25maWc7CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkVmlkZW9SZWN2Q29uZmlnIHsKKyAgTG9nZ2VkVmlk
ZW9SZWN2Q29uZmlnKCkgPSBkZWZhdWx0OwogICBMb2dnZWRWaWRlb1JlY3ZDb25maWcoaW50NjRf
dCB0aW1lc3RhbXBfdXMsIGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZykKICAgICAg
IDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIGNvbmZpZyhjb25maWcpIHt9Ci0gIGludDY0
X3QgdGltZXN0YW1wX3VzOwotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7CisKICAgaW50
NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2
NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQor
CisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7
CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkVmlkZW9TZW5kQ29uZmlnIHsKKyAgTG9nZ2VkVmlkZW9TZW5k
Q29uZmlnKCk7CiAgIExvZ2dlZFZpZGVvU2VuZENvbmZpZyhpbnQ2NF90IHRpbWVzdGFtcF91cywK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFt
Q29uZmlnPiYgY29uZmlncyk7CiAgIExvZ2dlZFZpZGVvU2VuZENvbmZpZyhjb25zdCBMb2dnZWRW
aWRlb1NlbmRDb25maWcmKTsKICAgfkxvZ2dlZFZpZGVvU2VuZENvbmZpZygpOwotICBpbnQ2NF90
IHRpbWVzdGFtcF91czsKLSAgc3RkOjp2ZWN0b3I8cnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZp
Z3M7CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91
czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
IC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBzdGQ6OnZlY3RvcjxydGNs
b2c6OlN0cmVhbUNvbmZpZz4gY29uZmlnczsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpA
QCAtNDc3LDMwICs2MTYsNiBAQCBjbGFzcyBQYXJzZWRSdGNFdmVudExvZ05ldyB7CiAgIGZyaWVu
ZCBjbGFzcyBSdGNFdmVudExvZ1Rlc3RIZWxwZXI7CiAKICBwdWJsaWM6Ci0gIH5QYXJzZWRSdGNF
dmVudExvZ05ldygpOwotCi0gIGVudW0gY2xhc3MgRXZlbnRUeXBlIHsKLSAgICBVTktOT1dOX0VW
RU5UID0gMCwKLSAgICBMT0dfU1RBUlQgPSAxLAotICAgIExPR19FTkQgPSAyLAotICAgIFJUUF9F
VkVOVCA9IDMsCi0gICAgUlRDUF9FVkVOVCA9IDQsCi0gICAgQVVESU9fUExBWU9VVF9FVkVOVCA9
IDUsCi0gICAgTE9TU19CQVNFRF9CV0VfVVBEQVRFID0gNiwKLSAgICBERUxBWV9CQVNFRF9CV0Vf
VVBEQVRFID0gNywKLSAgICBWSURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQgPSA4LAotICAgIFZJ
REVPX1NFTkRFUl9DT05GSUdfRVZFTlQgPSA5LAotICAgIEFVRElPX1JFQ0VJVkVSX0NPTkZJR19F
VkVOVCA9IDEwLAotICAgIEFVRElPX1NFTkRFUl9DT05GSUdfRVZFTlQgPSAxMSwKLSAgICBBVURJ
T19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQgPSAxNiwKLSAgICBCV0VfUFJPQkVfQ0xVU1RFUl9D
UkVBVEVEX0VWRU5UID0gMTcsCi0gICAgQldFX1BST0JFX0ZBSUxVUkVfRVZFTlQgPSAxOCwKLSAg
ICBCV0VfUFJPQkVfU1VDQ0VTU19FVkVOVCA9IDE5LAotICAgIEFMUl9TVEFURV9FVkVOVCA9IDIw
LAotICAgIElDRV9DQU5ESURBVEVfUEFJUl9DT05GSUcgPSAyMSwKLSAgICBJQ0VfQ0FORElEQVRF
X1BBSVJfRVZFTlQgPSAyMiwKLSAgfTsKLQogICBlbnVtIGNsYXNzIE1lZGlhVHlwZSB7IEFOWSwg
QVVESU8sIFZJREVPLCBEQVRBIH07CiAgIGVudW0gY2xhc3MgVW5jb25maWd1cmVkSGVhZGVyRXh0
ZW5zaW9ucyB7CiAgICAga0RvbnRQYXJzZSwKQEAgLTU0MSw2ICs2NTYsOCBAQCBjbGFzcyBQYXJz
ZWRSdGNFdmVudExvZ05ldyB7CiAgICAgICBVbmNvbmZpZ3VyZWRIZWFkZXJFeHRlbnNpb25zIHBh
cnNlX3VuY29uZmlndXJlZF9oZWFkZXJfZXh0ZW5zaW9ucyA9CiAgICAgICAgICAgVW5jb25maWd1
cmVkSGVhZGVyRXh0ZW5zaW9uczo6a0RvbnRQYXJzZSk7CiAKKyAgflBhcnNlZFJ0Y0V2ZW50TG9n
TmV3KCk7CisKICAgLy8gQ2xlYXJzIHByZXZpb3VzbHkgcGFyc2VkIGV2ZW50cyBhbmQgcmVzZXRz
IHRoZSBQYXJzZWRSdGNFdmVudExvZ05ldyB0byBhbgogICAvLyBlbXB0eSBzdGF0ZS4KICAgdm9p
ZCBDbGVhcigpOwpAQCAtNTU1LDExMSArNjcyLDggQEAgY2xhc3MgUGFyc2VkUnRjRXZlbnRMb2dO
ZXcgewogICBib29sIFBhcnNlU3RyZWFtKAogICAgICAgc3RkOjppc3RyZWFtJiBzdHJlYW0pOyAg
Ly8gbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCiAKLSAgLy8gUmV0dXJucyB0
aGUgbnVtYmVyIG9mIGV2ZW50cyBpbiBhbiBFdmVudFN0cmVhbS4KLSAgc2l6ZV90IEdldE51bWJl
ck9mRXZlbnRzKCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgdGhlIGFycml2YWwgdGltZXN0YW1wIChp
biBtaWNyb3NlY29uZHMpIGZyb20gYSBydGNsb2c6OkV2ZW50LgotICBpbnQ2NF90IEdldFRpbWVz
dGFtcChzaXplX3QgaW5kZXgpIGNvbnN0OwotICBpbnQ2NF90IEdldFRpbWVzdGFtcChjb25zdCBy
dGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgdGhlIGV2ZW50IHR5cGUg
b2YgdGhlIHJ0Y2xvZzo6RXZlbnQgYXQgfGluZGV4fC4KLSAgRXZlbnRUeXBlIEdldEV2ZW50VHlw
ZShzaXplX3QgaW5kZXgpIGNvbnN0OwotICBFdmVudFR5cGUgR2V0RXZlbnRUeXBlKGNvbnN0IHJ0
Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdDsKLQotICAvLyBSZWFkcyB0aGUgaGVhZGVyLCBkaXJl
Y3Rpb24sIGhlYWRlciBsZW5ndGggYW5kIHBhY2tldCBsZW5ndGggZnJvbSB0aGUgUlRQCi0gIC8v
IGV2ZW50IGF0IHxpbmRleHwsIGFuZCBzdG9yZXMgdGhlIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9u
ZGluZyBvdXRwdXQKLSAgLy8gcGFyYW1ldGVycy4gRWFjaCBvdXRwdXQgcGFyYW1ldGVyIGNhbiBi
ZSBzZXQgdG8gbnVsbHB0ciBpZiB0aGF0IHZhbHVlCi0gIC8vIGlzbid0IG5lZWRlZC4KLSAgLy8g
TkI6IFRoZSBoZWFkZXIgbXVzdCBoYXZlIHNwYWNlIGZvciBhdCBsZWFzdCBJUF9QQUNLRVRfU0la
RSBieXRlcy4KLSAgLy8gUmV0dXJuczogYSBwb2ludGVyIHRvIGEgaGVhZGVyIGV4dGVuc2lvbnMg
bWFwIGFjcXVpcmVkIGZyb20gcGFyc2luZwotICAvLyBjb3JyZXNwb25kaW5nIEF1ZGlvL1ZpZGVv
IFNlbmRlci9SZWNlaXZlciBjb25maWcgZXZlbnRzLgotICAvLyBXYXJuaW5nOiBpZiB0aGUgc2Ft
ZSBTU1JDIGlzIHJldXNlZCBieSBib3RoIHZpZGVvIGFuZCBhdWRpbyBzdHJlYW1zIGR1cmluZwot
ICAvLyBjYWxsLCBleHRlbnNpb25zIG1hcHMgbWF5IGJlIGluY29ycmVjdCAodGhlIGxhc3Qgb25l
IHdvdWxkIGJlIHJldHVybmVkKS4KLSAgY29uc3Qgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25N
YXAqIEdldFJ0cEhlYWRlcigKLSAgICAgIHNpemVfdCBpbmRleCwKLSAgICAgIFBhY2tldERpcmVj
dGlvbiogaW5jb21pbmcsCi0gICAgICB1aW50OF90KiBoZWFkZXIsCi0gICAgICBzaXplX3QqIGhl
YWRlcl9sZW5ndGgsCi0gICAgICBzaXplX3QqIHRvdGFsX2xlbmd0aCwKLSAgICAgIGludCogcHJv
YmVfY2x1c3Rlcl9pZCkgY29uc3Q7Ci0gIGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9u
TWFwKiBHZXRSdHBIZWFkZXIoCi0gICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCwKLSAg
ICAgIFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcsCi0gICAgICB1aW50OF90KiBoZWFkZXIsCi0g
ICAgICBzaXplX3QqIGhlYWRlcl9sZW5ndGgsCi0gICAgICBzaXplX3QqIHRvdGFsX2xlbmd0aCwK
LSAgICAgIGludCogcHJvYmVfY2x1c3Rlcl9pZCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgcGFja2V0
LCBkaXJlY3Rpb24gYW5kIHBhY2tldCBsZW5ndGggZnJvbSB0aGUgUlRDUCBldmVudCBhdCB8aW5k
ZXh8LAotICAvLyBhbmQgc3RvcmVzIHRoZSB2YWx1ZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgb3V0
cHV0IHBhcmFtZXRlcnMuCi0gIC8vIEVhY2ggb3V0cHV0IHBhcmFtZXRlciBjYW4gYmUgc2V0IHRv
IG51bGxwdHIgaWYgdGhhdCB2YWx1ZSBpc24ndCBuZWVkZWQuCi0gIC8vIE5COiBUaGUgcGFja2V0
IG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VUX1NJWkUgYnl0ZXMuCi0gIHZv
aWQgR2V0UnRjcFBhY2tldChzaXplX3QgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICBQYWNr
ZXREaXJlY3Rpb24qIGluY29taW5nLAotICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogcGFj
a2V0LAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgpIGNvbnN0OwotICB2b2lk
IEdldFJ0Y3BQYWNrZXQoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQsCi0gICAgICAgICAgICAg
ICAgICAgICBQYWNrZXREaXJlY3Rpb24qIGluY29taW5nLAotICAgICAgICAgICAgICAgICAgICAg
dWludDhfdCogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgpIGNv
bnN0OwotCi0gIC8vIFJlYWRzIGEgdmlkZW8gcmVjZWl2ZSBjb25maWcgZXZlbnQgdG8gYSBTdHJl
YW1Db25maWcgc3RydWN0LgotICAvLyBPbmx5IHRoZSBmaWVsZHMgdGhhdCBhcmUgc3RvcmVkIGlu
IHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdyaXR0ZW4uCi0gIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIEdl
dFZpZGVvUmVjZWl2ZUNvbmZpZyhzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIGEg
dmlkZW8gc2VuZCBjb25maWcgZXZlbnQgdG8gYSBTdHJlYW1Db25maWcgc3RydWN0LiBJZiB0aGUg
cHJvdG8KLSAgLy8gY29udGFpbnMgbXVsdGlwbGUgU1NSQ3MgYW5kIFJUWCBTU1JDcyAodGhpcyB1
c2VkIHRvIGJlIHRoZSBjYXNlIGZvcgotICAvLyBzaW11bGNhc3Qgc3RyZWFtcykgdGhlbiB3ZSBy
ZXR1cm4gb25lIFN0cmVhbUNvbmZpZyBwZXIgU1NSQyxSVFhfU1NSQyBwYWlyLgotICAvLyBPbmx5
IHRoZSBmaWVsZHMgdGhhdCBhcmUgc3RvcmVkIGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdyaXR0
ZW4uCi0gIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBHZXRWaWRlb1NlbmRDb25m
aWcoc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyBhIGF1ZGlvIHJlY2VpdmUgY29u
ZmlnIGV2ZW50IHRvIGEgU3RyZWFtQ29uZmlnIHN0cnVjdC4KLSAgLy8gT25seSB0aGUgZmllbGRz
IHRoYXQgYXJlIHN0b3JlZCBpbiB0aGUgcHJvdG9idWYgd2lsbCBiZSB3cml0dGVuLgotICBydGNs
b2c6OlN0cmVhbUNvbmZpZyBHZXRBdWRpb1JlY2VpdmVDb25maWcoc2l6ZV90IGluZGV4KSBjb25z
dDsKLQotICAvLyBSZWFkcyBhIGNvbmZpZyBldmVudCB0byBhIFN0cmVhbUNvbmZpZyBzdHJ1Y3Qu
Ci0gIC8vIE9ubHkgdGhlIGZpZWxkcyB0aGF0IGFyZSBzdG9yZWQgaW4gdGhlIHByb3RvYnVmIHdp
bGwgYmUgd3JpdHRlbi4KLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgR2V0QXVkaW9TZW5kQ29uZmln
KHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgdGhlIFNTUkMgZnJvbSB0aGUgYXVk
aW8gcGxheW91dCBldmVudCBhdCB8aW5kZXh8LiBUaGUgU1NSQyBpcyBzdG9yZWQKLSAgLy8gaW4g
dGhlIG91dHB1dCBwYXJhbWV0ZXIgc3NyYy4gVGhlIG91dHB1dCBwYXJhbWV0ZXIgY2FuIGJlIHNl
dCB0byBudWxscHRyCi0gIC8vIGFuZCBpbiB0aGF0IGNhc2UgdGhlIGZ1bmN0aW9uIG9ubHkgYXNz
ZXJ0cyB0aGF0IHRoZSBldmVudCBpcyB3ZWxsIGZvcm1lZC4KLSAgTG9nZ2VkQXVkaW9QbGF5b3V0
RXZlbnQgR2V0QXVkaW9QbGF5b3V0KHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMg
Yml0cmF0ZSwgZnJhY3Rpb24gbG9zcyAoYXMgZGVmaW5lZCBpbiBSRkMgMTg4OSkgYW5kIHRvdGFs
IG51bWJlciBvZgotICAvLyBleHBlY3RlZCBwYWNrZXRzIGZyb20gdGhlIGxvc3MgYmFzZWQgQldF
IGV2ZW50IGF0IHxpbmRleHwgYW5kIHN0b3JlcyB0aGUKLSAgLy8gdmFsdWVzIGluCi0gIC8vIHRo
ZSBjb3JyZXNwb25kaW5nIG91dHB1dCBwYXJhbWV0ZXJzLiBFYWNoIG91dHB1dCBwYXJhbWV0ZXIg
Y2FuIGJlIHNldCB0bwotICAvLyBudWxscHRyIGlmIHRoYXQKLSAgLy8gdmFsdWUgaXNuJ3QgbmVl
ZGVkLgotICBMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUgR2V0TG9zc0Jhc2VkQndlVXBkYXRlKHNp
emVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgYml0cmF0ZSBhbmQgZGV0ZWN0b3Jfc3Rh
dGUgZnJvbSB0aGUgZGVsYXkgYmFzZWQgQldFIGV2ZW50IGF0IHxpbmRleHwKLSAgLy8gYW5kIHN0
b3JlcyB0aGUgdmFsdWVzIGluIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBwYXJhbWV0ZXJzLiBF
YWNoIG91dHB1dAotICAvLyBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0byBudWxscHRyIGlmIHRoYXQK
LSAgLy8gdmFsdWUgaXNuJ3QgbmVlZGVkLgotICBMb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRlIEdl
dERlbGF5QmFzZWRCd2VVcGRhdGUoc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyBh
IGF1ZGlvIG5ldHdvcmsgYWRhcHRhdGlvbiBldmVudCB0byBhIChub24tTlVMTCkKLSAgLy8gQXVk
aW9FbmNvZGVyUnVudGltZUNvbmZpZyBzdHJ1Y3QuIE9ubHkgdGhlIGZpZWxkcyB0aGF0IGFyZQot
ICAvLyBzdG9yZWQgaW4gdGhlIHByb3RvYnVmIHdpbGwgYmUgd3JpdHRlbi4KLSAgTG9nZ2VkQXVk
aW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50IEdldEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oCi0gICAg
ICBzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIExvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRF
dmVudCBHZXRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkKAotICAgICAgc2l6ZV90IGluZGV4KSBjb25z
dDsKLQotICBMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCBHZXRCd2VQcm9iZUZhaWx1cmUoc2l6
ZV90IGluZGV4KSBjb25zdDsKLSAgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQgR2V0QndlUHJv
YmVTdWNjZXNzKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KICAgTWVkaWFUeXBlIEdldE1lZGlhVHlw
ZSh1aW50MzJfdCBzc3JjLCBQYWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdDsKIAotICBM
b2dnZWRBbHJTdGF0ZUV2ZW50IEdldEFsclN0YXRlKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAg
TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyBHZXRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKHNp
emVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50IEdldElj
ZUNhbmRpZGF0ZVBhaXJFdmVudChzaXplX3QgaW5kZXgpIGNvbnN0OwotCiAgIC8vIENvbmZpZ3Vy
ZWQgU1NSQ3MuCiAgIGNvbnN0IHN0ZDo6c2V0PHVpbnQzMl90PiYgaW5jb21pbmdfcnR4X3NzcmNz
KCkgY29uc3QgewogICAgIHJldHVybiBpbmNvbWluZ19ydHhfc3NyY3NfOwpAQCAtODQxLDcgKzg1
NSwzNiBAQCBjbGFzcyBQYXJzZWRSdGNFdmVudExvZ05ldyB7CiAgIGJvb2wgUGFyc2VTdHJlYW1J
bnRlcm5hbCgKICAgICAgIHN0ZDo6aXN0cmVhbSYgc3RyZWFtKTsgIC8vIG5vLXByZXN1Ym1pdC1j
aGVjayBUT0RPKHdlYnJ0Yzo4OTgyKQogCi0gIHZvaWQgU3RvcmVQYXJzZWRFdmVudChjb25zdCBy
dGNsb2c6OkV2ZW50JiBldmVudCk7CisgIHZvaWQgU3RvcmVQYXJzZWRMZWdhY3lFdmVudChjb25z
dCBydGNsb2c6OkV2ZW50JiBldmVudCk7CisKKyAgLy8gUmVhZHMgdGhlIGFycml2YWwgdGltZXN0
YW1wIChpbiBtaWNyb3NlY29uZHMpIGZyb20gYSBydGNsb2c6OkV2ZW50LgorICBpbnQ2NF90IEdl
dFRpbWVzdGFtcChjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3Q7CisKKyAgLy8gUmVh
ZHMgdGhlIGhlYWRlciwgZGlyZWN0aW9uLCBoZWFkZXIgbGVuZ3RoIGFuZCBwYWNrZXQgbGVuZ3Ro
IGZyb20gdGhlIFJUUAorICAvLyBldmVudCBhdCB8aW5kZXh8LCBhbmQgc3RvcmVzIHRoZSB2YWx1
ZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgb3V0cHV0CisgIC8vIHBhcmFtZXRlcnMuIEVhY2ggb3V0
cHV0IHBhcmFtZXRlciBjYW4gYmUgc2V0IHRvIG51bGxwdHIgaWYgdGhhdCB2YWx1ZQorICAvLyBp
c24ndCBuZWVkZWQuCisgIC8vIE5COiBUaGUgaGVhZGVyIG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQg
bGVhc3QgSVBfUEFDS0VUX1NJWkUgYnl0ZXMuCisgIC8vIFJldHVybnM6IGEgcG9pbnRlciB0byBh
IGhlYWRlciBleHRlbnNpb25zIG1hcCBhY3F1aXJlZCBmcm9tIHBhcnNpbmcKKyAgLy8gY29ycmVz
cG9uZGluZyBBdWRpby9WaWRlbyBTZW5kZXIvUmVjZWl2ZXIgY29uZmlnIGV2ZW50cy4KKyAgLy8g
V2FybmluZzogaWYgdGhlIHNhbWUgU1NSQyBpcyByZXVzZWQgYnkgYm90aCB2aWRlbyBhbmQgYXVk
aW8gc3RyZWFtcyBkdXJpbmcKKyAgLy8gY2FsbCwgZXh0ZW5zaW9ucyBtYXBzIG1heSBiZSBpbmNv
cnJlY3QgKHRoZSBsYXN0IG9uZSB3b3VsZCBiZSByZXR1cm5lZCkuCisgIGNvbnN0IHdlYnJ0Yzo6
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKiBHZXRSdHBIZWFkZXIoCisgICAgICBjb25zdCBydGNsb2c6
OkV2ZW50JiBldmVudCwKKyAgICAgIFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcsCisgICAgICB1
aW50OF90KiBoZWFkZXIsCisgICAgICBzaXplX3QqIGhlYWRlcl9sZW5ndGgsCisgICAgICBzaXpl
X3QqIHRvdGFsX2xlbmd0aCwKKyAgICAgIGludCogcHJvYmVfY2x1c3Rlcl9pZCkgY29uc3Q7CisK
KyAgLy8gUmVhZHMgcGFja2V0LCBkaXJlY3Rpb24gYW5kIHBhY2tldCBsZW5ndGggZnJvbSB0aGUg
UlRDUCBldmVudCBhdCB8aW5kZXh8LAorICAvLyBhbmQgc3RvcmVzIHRoZSB2YWx1ZXMgaW4gdGhl
IGNvcnJlc3BvbmRpbmcgb3V0cHV0IHBhcmFtZXRlcnMuCisgIC8vIEVhY2ggb3V0cHV0IHBhcmFt
ZXRlciBjYW4gYmUgc2V0IHRvIG51bGxwdHIgaWYgdGhhdCB2YWx1ZSBpc24ndCBuZWVkZWQuCisg
IC8vIE5COiBUaGUgcGFja2V0IG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VU
X1NJWkUgYnl0ZXMuCisgIHZvaWQgR2V0UnRjcFBhY2tldChjb25zdCBydGNsb2c6OkV2ZW50JiBl
dmVudCwKKyAgICAgICAgICAgICAgICAgICAgIFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcsCisg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QqIGxlbmd0aCkgY29uc3Q7CiAKICAgcnRjbG9nOjpTdHJlYW1Db25maWcgR2V0Vmlk
ZW9SZWNlaXZlQ29uZmlnKGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdDsKICAgc3Rk
Ojp2ZWN0b3I8cnRjbG9nOjpTdHJlYW1Db25maWc+IEdldFZpZGVvU2VuZENvbmZpZygKQEAgLTg3
Myw3ICs5MTYsMzEgQEAgY2xhc3MgUGFyc2VkUnRjRXZlbnRMb2dOZXcgewogICBMb2dnZWRJY2VD
YW5kaWRhdGVQYWlyRXZlbnQgR2V0SWNlQ2FuZGlkYXRlUGFpckV2ZW50KAogICAgICAgY29uc3Qg
cnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0OwogCi0gIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6RXZl
bnQ+IGV2ZW50c187CisgIC8vIFBhcnNpbmcgZnVuY3Rpb25zIGZvciBuZXcgZm9ybWF0LgorICB2
b2lkIFN0b3JlUGFyc2VkTmV3Rm9ybWF0RXZlbnQoY29uc3QgcnRjbG9nMjo6RXZlbnRTdHJlYW0m
IGV2ZW50KTsKKyAgdm9pZCBTdG9yZUluY29taW5nUnRwUGFja2V0cyhjb25zdCBydGNsb2cyOjpJ
bmNvbWluZ1J0cFBhY2tldHMmIHByb3RvKTsKKyAgdm9pZCBTdG9yZU91dGdvaW5nUnRwUGFja2V0
cyhjb25zdCBydGNsb2cyOjpPdXRnb2luZ1J0cFBhY2tldHMmIHByb3RvKTsKKyAgdm9pZCBTdG9y
ZUluY29taW5nUnRjcFBhY2tldHMoY29uc3QgcnRjbG9nMjo6SW5jb21pbmdSdGNwUGFja2V0cyYg
cHJvdG8pOworICB2b2lkIFN0b3JlT3V0Z29pbmdSdGNwUGFja2V0cyhjb25zdCBydGNsb2cyOjpP
dXRnb2luZ1J0Y3BQYWNrZXRzJiBwcm90byk7CisgIHZvaWQgU3RvcmVBdWRpb1BsYXlvdXRFdmVu
dChjb25zdCBydGNsb2cyOjpBdWRpb1BsYXlvdXRFdmVudHMmIHByb3RvKTsKKyAgdm9pZCBTdG9y
ZVN0YXJ0RXZlbnQoY29uc3QgcnRjbG9nMjo6QmVnaW5Mb2dFdmVudCYgcHJvdG8pOworICB2b2lk
IFN0b3JlU3RvcEV2ZW50KGNvbnN0IHJ0Y2xvZzI6OkVuZExvZ0V2ZW50JiBwcm90byk7CisgIHZv
aWQgU3RvcmVCd2VMb3NzQmFzZWRVcGRhdGUoY29uc3QgcnRjbG9nMjo6TG9zc0Jhc2VkQndlVXBk
YXRlcyYgcHJvdG8pOworICB2b2lkIFN0b3JlQndlRGVsYXlCYXNlZFVwZGF0ZShjb25zdCBydGNs
b2cyOjpEZWxheUJhc2VkQndlVXBkYXRlcyYgcHJvdG8pOworICB2b2lkIFN0b3JlQXVkaW9OZXR3
b3JrQWRhcHRhdGlvbkV2ZW50KAorICAgICAgY29uc3QgcnRjbG9nMjo6QXVkaW9OZXR3b3JrQWRh
cHRhdGlvbnMmIHByb3RvKTsKKyAgdm9pZCBTdG9yZUJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQoY29u
c3QgcnRjbG9nMjo6QndlUHJvYmVDbHVzdGVyJiBwcm90byk7CisgIHZvaWQgU3RvcmVCd2VQcm9i
ZVN1Y2Nlc3NFdmVudChjb25zdCBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdFN1Y2Nlc3MmIHByb3Rv
KTsKKyAgdm9pZCBTdG9yZUJ3ZVByb2JlRmFpbHVyZUV2ZW50KGNvbnN0IHJ0Y2xvZzI6OkJ3ZVBy
b2JlUmVzdWx0RmFpbHVyZSYgcHJvdG8pOworICB2b2lkIFN0b3JlQWxyU3RhdGVFdmVudChjb25z
dCBydGNsb2cyOjpBbHJTdGF0ZSYgcHJvdG8pOworICB2b2lkIFN0b3JlSWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZygKKyAgICAgIGNvbnN0IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWcmIHBy
b3RvKTsKKyAgdm9pZCBTdG9yZUljZUNhbmRpZGF0ZUV2ZW50KGNvbnN0IHJ0Y2xvZzI6OkljZUNh
bmRpZGF0ZVBhaXJFdmVudCYgcHJvdG8pOworICB2b2lkIFN0b3JlQXVkaW9SZWN2Q29uZmlnKGNv
bnN0IHJ0Y2xvZzI6OkF1ZGlvUmVjdlN0cmVhbUNvbmZpZyYgcHJvdG8pOworICB2b2lkIFN0b3Jl
QXVkaW9TZW5kQ29uZmlnKGNvbnN0IHJ0Y2xvZzI6OkF1ZGlvU2VuZFN0cmVhbUNvbmZpZyYgcHJv
dG8pOworICB2b2lkIFN0b3JlVmlkZW9SZWN2Q29uZmlnKGNvbnN0IHJ0Y2xvZzI6OlZpZGVvUmVj
dlN0cmVhbUNvbmZpZyYgcHJvdG8pOworICB2b2lkIFN0b3JlVmlkZW9TZW5kQ29uZmlnKGNvbnN0
IHJ0Y2xvZzI6OlZpZGVvU2VuZFN0cmVhbUNvbmZpZyYgcHJvdG8pOworICAvLyBFbmQgb2YgbmV3
IHBhcnNpbmcgZnVuY3Rpb25zLgogCiAgIHN0cnVjdCBTdHJlYW0gewogICAgIFN0cmVhbSh1aW50
MzJfdCBzc3JjLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdC5jYwppbmRleCBlMjM4Zjg0ODg0NjE4YWMx
OTA3M2U3MzA0ZTAxZWUxNzQ2ZTRiYzkxLi5mN2I3ODk4OTkzZjdjOTJiOTE1N2Q5YTc5MThlOTI0
ZDgxMTBjYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdC5jYwpAQCAtMTAxLDEzICsxMDEsMTYg
QEAgc3RydWN0IEV2ZW50Q291bnRzIHsKIH07CiAKIGNsYXNzIFJ0Y0V2ZW50TG9nU2Vzc2lvbgot
ICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnR1cGxlPHVpbnQ2NF90
LCBpbnQ2NF90Pj4geworICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTwKKyAg
ICAgICAgICBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBpbnQ2NF90LCBSdGNFdmVudExvZzo6RW5jb2Rp
bmdUeXBlPj4gewogIHB1YmxpYzoKICAgUnRjRXZlbnRMb2dTZXNzaW9uKCkKICAgICAgIDogc2Vl
ZF8oc3RkOjpnZXQ8MD4oR2V0UGFyYW0oKSkpLAogICAgICAgICBwcm5nXyhzZWVkXyksCisgICAg
ICAgIG91dHB1dF9wZXJpb2RfbXNfKHN0ZDo6Z2V0PDE+KEdldFBhcmFtKCkpKSwKKyAgICAgICAg
ZW5jb2RpbmdfdHlwZV8oc3RkOjpnZXQ8Mj4oR2V0UGFyYW0oKSkpLAogICAgICAgICBnZW5fKHNl
ZWRfICogODgwMDAxVUwpLAotICAgICAgICBvdXRwdXRfcGVyaW9kX21zXyhzdGQ6OmdldDwxPihH
ZXRQYXJhbSgpKSkgeworICAgICAgICB2ZXJpZmllcl8oZW5jb2RpbmdfdHlwZV8pIHsKICAgICBj
bG9ja18uU2V0VGltZU1pY3Jvcyhwcm5nXy5SYW5kPHVpbnQzMl90PigpKTsKICAgICAvLyBGaW5k
IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHRlc3QsIGluIG9yZGVyIHRvIHVzZSBpdCBhcyBhIHRl
bXBvcmFyeQogICAgIC8vIGZpbGVuYW1lLgpAQCAtMTY2LDEyICsxNjksMTUgQEAgY2xhc3MgUnRj
RXZlbnRMb2dTZXNzaW9uCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0
Y3BQYWNrZXRPdXRnb2luZz4+IG91dGdvaW5nX3J0Y3BfbGlzdF87CiAKICAgaW50NjRfdCBzdGFy
dF90aW1lX3VzXzsKKyAgaW50NjRfdCB1dGNfc3RhcnRfdGltZV91c187CiAgIGludDY0X3Qgc3Rv
cF90aW1lX3VzXzsKIAogICBjb25zdCB1aW50NjRfdCBzZWVkXzsKICAgUmFuZG9tIHBybmdfOwor
ICBjb25zdCBpbnQ2NF90IG91dHB1dF9wZXJpb2RfbXNfOworICBjb25zdCBSdGNFdmVudExvZzo6
RW5jb2RpbmdUeXBlIGVuY29kaW5nX3R5cGVfOwogICB0ZXN0OjpFdmVudEdlbmVyYXRvciBnZW5f
OwotICBpbnQ2NF90IG91dHB1dF9wZXJpb2RfbXNfOworICB0ZXN0OjpFdmVudFZlcmlmaWVyIHZl
cmlmaWVyXzsKICAgcnRjOjpTY29wZWRGYWtlQ2xvY2sgY2xvY2tfOwogICBzdGQ6OnN0cmluZyB0
ZW1wX2ZpbGVuYW1lXzsKIH07CkBAIC0yODQsOCArMjkwLDcgQEAgdm9pZCBSdGNFdmVudExvZ1Nl
c3Npb246OldyaXRlTG9nKEV2ZW50Q291bnRzIGNvdW50LAogICAvLyBNYXliZSBhbHdheXMgdXNl
IHRoZSBTY29wZWRGYWtlQ2xvY2ssIGJ1dCBjb25kaXRpb25hbGx5IFNsZWVwTXMoKT8KIAogICAv
LyBUaGUgbG9nIGZpbGUgd2lsbCBiZSBmbHVzaGVkIHRvIGRpc2sgd2hlbiB0aGUgZXZlbnRfbG9n
IGdvZXMgb3V0IG9mIHNjb3BlLgotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2c+IGV2ZW50
X2xvZygKLSAgICAgIFJ0Y0V2ZW50TG9nOjpDcmVhdGUoUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlw
ZTo6TGVnYWN5KSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZz4gZXZlbnRfbG9nKFJ0
Y0V2ZW50TG9nOjpDcmVhdGUoZW5jb2RpbmdfdHlwZV8pKTsKIAogICAvLyBXZSBjYW4ndCBzZW5k
IG9yIHJlY2VpdmUgcGFja2V0cyB3aXRob3V0IGNvbmZpZ3VyZWQgc3RyZWFtcy4KICAgUlRDX0NI
RUNLX0dFKGNvdW50LnZpZGVvX3JlY3Zfc3RyZWFtcywgMSk7CkBAIC0zMDYsNiArMzExLDcgQEAg
dm9pZCBSdGNFdmVudExvZ1Nlc3Npb246OldyaXRlTG9nKEV2ZW50Q291bnRzIGNvdW50LAogICAg
ICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nT3V0cHV0RmlsZT4odGVtcF9maWxl
bmFtZV8sIDEwMDAwMDAwKSwKICAgICAgICAgICBvdXRwdXRfcGVyaW9kX21zXyk7CiAgICAgICBz
dGFydF90aW1lX3VzXyA9IHJ0Yzo6VGltZU1pY3JvcygpOworICAgICAgdXRjX3N0YXJ0X3RpbWVf
dXNfID0gcnRjOjpUaW1lVVRDTWljcm9zKCk7CiAgICAgfQogCiAgICAgY2xvY2tfLkFkdmFuY2VU
aW1lTWljcm9zKHBybmdfLlJhbmQoMjApICogMTAwMCk7CkBAIC00NjUsMTkgKzQ3MSwxOCBAQCB2
b2lkIFJ0Y0V2ZW50TG9nU2Vzc2lvbjo6UmVhZEFuZFZlcmlmeUxvZygpIHsKICAgLy8gU3RhcnQg
YW5kIHN0b3AgZXZlbnRzLgogICBhdXRvJiBwYXJzZWRfc3RhcnRfbG9nX2V2ZW50cyA9IHBhcnNl
ZF9sb2cuc3RhcnRfbG9nX2V2ZW50cygpOwogICBBU1NFUlRfRVEocGFyc2VkX3N0YXJ0X2xvZ19l
dmVudHMuc2l6ZSgpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKTsKLSAgRVhQRUNUX1RSVUUoCi0g
ICAgICB0ZXN0OjpWZXJpZnlMb2dnZWRTdGFydEV2ZW50KHN0YXJ0X3RpbWVfdXNfLCBwYXJzZWRf
c3RhcnRfbG9nX2V2ZW50c1swXSkpOworICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkU3RhcnRFdmVu
dChzdGFydF90aW1lX3VzXywgdXRjX3N0YXJ0X3RpbWVfdXNfLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJzZWRfc3RhcnRfbG9nX2V2ZW50c1swXSk7CiAKICAgYXV0byYg
cGFyc2VkX3N0b3BfbG9nX2V2ZW50cyA9IHBhcnNlZF9sb2cuc3RvcF9sb2dfZXZlbnRzKCk7CiAg
IEFTU0VSVF9FUShwYXJzZWRfc3RvcF9sb2dfZXZlbnRzLnNpemUoKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PigxKSk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgdGVzdDo6VmVyaWZ5TG9nZ2VkU3RvcEV2
ZW50KHN0b3BfdGltZV91c18sIHBhcnNlZF9zdG9wX2xvZ19ldmVudHNbMF0pKTsKKyAgdmVyaWZp
ZXJfLlZlcmlmeUxvZ2dlZFN0b3BFdmVudChzdG9wX3RpbWVfdXNfLCBwYXJzZWRfc3RvcF9sb2df
ZXZlbnRzWzBdKTsKIAogICBhdXRvJiBwYXJzZWRfYWxyX3N0YXRlX2V2ZW50cyA9IHBhcnNlZF9s
b2cuYWxyX3N0YXRlX2V2ZW50cygpOwogICBBU1NFUlRfRVEocGFyc2VkX2Fscl9zdGF0ZV9ldmVu
dHMuc2l6ZSgpLCBhbHJfc3RhdGVfbGlzdF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwYXJzZWRfYWxyX3N0YXRlX2V2ZW50cy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9U
UlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEFsclN0YXRlRXZlbnQoKmFscl9zdGF0ZV9saXN0X1tpXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9h
bHJfc3RhdGVfZXZlbnRzW2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEFsclN0YXRl
RXZlbnQoKmFscl9zdGF0ZV9saXN0X1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJzZWRfYWxyX3N0YXRlX2V2ZW50c1tpXSk7CiAgIH0KIAogICBjb25zdCBh
dXRvJiBwYXJzZWRfYXVkaW9fcGxheW91dF9tYXAgPSBwYXJzZWRfbG9nLmF1ZGlvX3BsYXlvdXRf
ZXZlbnRzKCk7CkBAIC00ODgsOCArNDkzLDggQEAgdm9pZCBSdGNFdmVudExvZ1Nlc3Npb246OlJl
YWRBbmRWZXJpZnlMb2coKSB7CiAgICAgY29uc3QgYXV0byYgYXVkaW9fcGxheW91dF9zdHJlYW0g
PSBhdWRpb19wbGF5b3V0X21hcF9bc3NyY107CiAgICAgQVNTRVJUX0VRKHBhcnNlZF9hdWRpb19w
bGF5b3V0X3N0cmVhbS5zaXplKCksIGF1ZGlvX3BsYXlvdXRfc3RyZWFtLnNpemUoKSk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfYXVkaW9fcGxheW91dF9tYXAuc2l6ZSgpOyBp
KyspIHsKLSAgICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEF1ZGlvUGxheW91dEV2
ZW50KAotICAgICAgICAgICphdWRpb19wbGF5b3V0X3N0cmVhbVtpXSwgcGFyc2VkX2F1ZGlvX3Bs
YXlvdXRfc3RyZWFtW2ldKSk7CisgICAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQXVkaW9QbGF5
b3V0RXZlbnQoKmF1ZGlvX3BsYXlvdXRfc3RyZWFtW2ldLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9hdWRpb19wbGF5b3V0X3N0cmVhbVtpXSk7
CiAgICAgfQogICB9CiAKQEAgLTQ5OCwyMiArNTAzLDIyIEBAIHZvaWQgUnRjRXZlbnRMb2dTZXNz
aW9uOjpSZWFkQW5kVmVyaWZ5TG9nKCkgewogICBBU1NFUlRfRVEocGFyc2VkX2F1ZGlvX25ldHdv
cmtfYWRhcHRhdGlvbl9ldmVudHMuc2l6ZSgpLAogICAgICAgICAgICAgYW5hX2NvbmZpZ3NfbGlz
dF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfYXVkaW9fbmV0d29y
a19hZGFwdGF0aW9uX2V2ZW50cy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6
OlZlcmlmeUxvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCgKLSAgICAgICAgKmFuYV9j
b25maWdzX2xpc3RfW2ldLCBwYXJzZWRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uX2V2ZW50c1tp
XSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRXZl
bnQoCisgICAgICAgICphbmFfY29uZmlnc19saXN0X1tpXSwgcGFyc2VkX2F1ZGlvX25ldHdvcmtf
YWRhcHRhdGlvbl9ldmVudHNbaV0pOwogICB9CiAKICAgYXV0byYgcGFyc2VkX2J3ZV9kZWxheV91
cGRhdGVzID0gcGFyc2VkX2xvZy5id2VfZGVsYXlfdXBkYXRlcygpOwogICBBU1NFUlRfRVEocGFy
c2VkX2J3ZV9kZWxheV91cGRhdGVzLnNpemUoKSwgYndlX2RlbGF5X2xpc3RfLnNpemUoKSk7CiAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2J3ZV9kZWxheV91cGRhdGVzLnNpemUoKTsg
aSsrKSB7Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQndlRGVsYXlCYXNlZFVw
ZGF0ZSgKLSAgICAgICAgKmJ3ZV9kZWxheV9saXN0X1tpXSwgcGFyc2VkX2J3ZV9kZWxheV91cGRh
dGVzW2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUo
KmJ3ZV9kZWxheV9saXN0X1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJzZWRfYndlX2RlbGF5X3VwZGF0ZXNbaV0pOwogICB9CiAKICAgYXV0byYg
cGFyc2VkX2J3ZV9sb3NzX3VwZGF0ZXMgPSBwYXJzZWRfbG9nLmJ3ZV9sb3NzX3VwZGF0ZXMoKTsK
ICAgQVNTRVJUX0VRKHBhcnNlZF9id2VfbG9zc191cGRhdGVzLnNpemUoKSwgYndlX2xvc3NfbGlz
dF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfYndlX2xvc3NfdXBk
YXRlcy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3
ZUxvc3NCYXNlZFVwZGF0ZSgKLSAgICAgICAgKmJ3ZV9sb3NzX2xpc3RfW2ldLCBwYXJzZWRfYndl
X2xvc3NfdXBkYXRlc1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRCd2VMb3NzQmFz
ZWRVcGRhdGUoKmJ3ZV9sb3NzX2xpc3RfW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyc2VkX2J3ZV9sb3NzX3VwZGF0ZXNbaV0pOwogICB9CiAKICAg
YXV0byYgcGFyc2VkX2J3ZV9wcm9iZV9jbHVzdGVyX2NyZWF0ZWRfZXZlbnRzID0KQEAgLTUyMSwz
MCArNTI2LDMwIEBAIHZvaWQgUnRjRXZlbnRMb2dTZXNzaW9uOjpSZWFkQW5kVmVyaWZ5TG9nKCkg
ewogICBBU1NFUlRfRVEocGFyc2VkX2J3ZV9wcm9iZV9jbHVzdGVyX2NyZWF0ZWRfZXZlbnRzLnNp
emUoKSwKICAgICAgICAgICAgIHByb2JlX2NyZWF0aW9uX2xpc3RfLnNpemUoKSk7CiAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2J3ZV9wcm9iZV9jbHVzdGVyX2NyZWF0ZWRfZXZlbnRz
LnNpemUoKTsgaSsrKSB7Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQndlUHJv
YmVDbHVzdGVyQ3JlYXRlZEV2ZW50KAotICAgICAgICAqcHJvYmVfY3JlYXRpb25fbGlzdF9baV0s
IHBhcnNlZF9id2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50c1tpXSkpOworICAgIHZlcmlm
aWVyXy5WZXJpZnlMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQoCisgICAgICAgICpw
cm9iZV9jcmVhdGlvbl9saXN0X1tpXSwgcGFyc2VkX2J3ZV9wcm9iZV9jbHVzdGVyX2NyZWF0ZWRf
ZXZlbnRzW2ldKTsKICAgfQogCiAgIGF1dG8mIHBhcnNlZF9id2VfcHJvYmVfZmFpbHVyZV9ldmVu
dHMgPSBwYXJzZWRfbG9nLmJ3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50cygpOwogICBBU1NFUlRfRVEo
cGFyc2VkX2J3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50cy5zaXplKCksIHByb2JlX2ZhaWx1cmVfbGlz
dF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfYndlX3Byb2JlX2Zh
aWx1cmVfZXZlbnRzLnNpemUoKTsgaSsrKSB7Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5
TG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQoCi0gICAgICAgICpwcm9iZV9mYWlsdXJlX2xpc3Rf
W2ldLCBwYXJzZWRfYndlX3Byb2JlX2ZhaWx1cmVfZXZlbnRzW2ldKSk7CisgICAgdmVyaWZpZXJf
LlZlcmlmeUxvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50KAorICAgICAgICAqcHJvYmVfZmFpbHVy
ZV9saXN0X1tpXSwgcGFyc2VkX2J3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50c1tpXSk7CiAgIH0KIAog
ICBhdXRvJiBwYXJzZWRfYndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRzID0gcGFyc2VkX2xvZy5id2Vf
cHJvYmVfc3VjY2Vzc19ldmVudHMoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF9id2VfcHJvYmVfc3Vj
Y2Vzc19ldmVudHMuc2l6ZSgpLCBwcm9iZV9zdWNjZXNzX2xpc3RfLnNpemUoKSk7CiAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2J3ZV9wcm9iZV9zdWNjZXNzX2V2ZW50cy5zaXplKCk7
IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZVByb2JlU3VjY2Vz
c0V2ZW50KAotICAgICAgICAqcHJvYmVfc3VjY2Vzc19saXN0X1tpXSwgcGFyc2VkX2J3ZV9wcm9i
ZV9zdWNjZXNzX2V2ZW50c1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRCd2VQcm9i
ZVN1Y2Nlc3NFdmVudCgKKyAgICAgICAgKnByb2JlX3N1Y2Nlc3NfbGlzdF9baV0sIHBhcnNlZF9i
d2VfcHJvYmVfc3VjY2Vzc19ldmVudHNbaV0pOwogICB9CiAKICAgYXV0byYgcGFyc2VkX2ljZV9j
YW5kaWRhdGVfcGFpcl9jb25maWdzID0KICAgICAgIHBhcnNlZF9sb2cuaWNlX2NhbmRpZGF0ZV9w
YWlyX2NvbmZpZ3MoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF9pY2VfY2FuZGlkYXRlX3BhaXJfY29u
Zmlncy5zaXplKCksIGljZV9jb25maWdfbGlzdF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwYXJzZWRfaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZ3Muc2l6ZSgpOyBpKyspIHsK
LSAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmln
KAotICAgICAgICAqaWNlX2NvbmZpZ19saXN0X1tpXSwgcGFyc2VkX2ljZV9jYW5kaWRhdGVfcGFp
cl9jb25maWdzW2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBh
aXJDb25maWcoCisgICAgICAgICppY2VfY29uZmlnX2xpc3RfW2ldLCBwYXJzZWRfaWNlX2NhbmRp
ZGF0ZV9wYWlyX2NvbmZpZ3NbaV0pOwogICB9CiAKICAgYXV0byYgcGFyc2VkX2ljZV9jYW5kaWRh
dGVfcGFpcl9ldmVudHMgPQpAQCAtNTUyLDggKzU1Nyw4IEBAIHZvaWQgUnRjRXZlbnRMb2dTZXNz
aW9uOjpSZWFkQW5kVmVyaWZ5TG9nKCkgewogICBBU1NFUlRfRVEocGFyc2VkX2ljZV9jYW5kaWRh
dGVfcGFpcl9ldmVudHMuc2l6ZSgpLAogICAgICAgICAgICAgcGFyc2VkX2ljZV9jYW5kaWRhdGVf
cGFpcl9ldmVudHMuc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfaWNl
X2NhbmRpZGF0ZV9wYWlyX2V2ZW50cy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRl
c3Q6OlZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCgKLSAgICAgICAgKmljZV9ldmVu
dF9saXN0X1tpXSwgcGFyc2VkX2ljZV9jYW5kaWRhdGVfcGFpcl9ldmVudHNbaV0pKTsKKyAgICB2
ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50KAorICAgICAgICAqaWNl
X2V2ZW50X2xpc3RfW2ldLCBwYXJzZWRfaWNlX2NhbmRpZGF0ZV9wYWlyX2V2ZW50c1tpXSk7CiAg
IH0KIAogICBhdXRvJiBwYXJzZWRfaW5jb21pbmdfcnRwX3BhY2tldHNfYnlfc3NyYyA9CkBAIC01
NjYsOCArNTcxLDggQEAgdm9pZCBSdGNFdmVudExvZ1Nlc3Npb246OlJlYWRBbmRWZXJpZnlMb2co
KSB7CiAgICAgY29uc3QgYXV0byYgcnRwX3N0cmVhbSA9IGluY29taW5nX3J0cF9tYXBfW3NzcmNd
OwogICAgIEFTU0VSVF9FUShwYXJzZWRfcnRwX3N0cmVhbS5zaXplKCksIHJ0cF9zdHJlYW0uc2l6
ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9ydHBfc3RyZWFtLnNpemUo
KTsgaSsrKSB7Ci0gICAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRSdHBQYWNrZXRJ
bmNvbWluZygqcnRwX3N0cmVhbVtpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9ydHBfc3RyZWFtW2ldKSk7CisgICAgICB2ZXJp
Zmllcl8uVmVyaWZ5TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcoKnJ0cF9zdHJlYW1baV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX3J0cF9zdHJl
YW1baV0pOwogICAgIH0KICAgfQogCkBAIC01ODEsNDcgKzU4Niw0NyBAQCB2b2lkIFJ0Y0V2ZW50
TG9nU2Vzc2lvbjo6UmVhZEFuZFZlcmlmeUxvZygpIHsKICAgICBjb25zdCBhdXRvJiBydHBfc3Ry
ZWFtID0gb3V0Z29pbmdfcnRwX21hcF9bc3NyY107CiAgICAgQVNTRVJUX0VRKHBhcnNlZF9ydHBf
c3RyZWFtLnNpemUoKSwgcnRwX3N0cmVhbS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcGFyc2VkX3J0cF9zdHJlYW0uc2l6ZSgpOyBpKyspIHsKLSAgICAgIEVYUEVDVF9UUlVF
KHRlc3Q6OlZlcmlmeUxvZ2dlZFJ0cFBhY2tldE91dGdvaW5nKCpydHBfc3RyZWFtW2ldLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2Vk
X3J0cF9zdHJlYW1baV0pKTsKKyAgICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRSdHBQYWNrZXRP
dXRnb2luZygqcnRwX3N0cmVhbVtpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJzZWRfcnRwX3N0cmVhbVtpXSk7CiAgICAgfQogICB9CiAKICAgYXV0
byYgcGFyc2VkX2luY29taW5nX3J0Y3BfcGFja2V0cyA9IHBhcnNlZF9sb2cuaW5jb21pbmdfcnRj
cF9wYWNrZXRzKCk7CiAgIEFTU0VSVF9FUShwYXJzZWRfaW5jb21pbmdfcnRjcF9wYWNrZXRzLnNp
emUoKSwgaW5jb21pbmdfcnRjcF9saXN0Xy5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHBhcnNlZF9pbmNvbWluZ19ydGNwX3BhY2tldHMuc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBF
Q1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcoCi0gICAgICAgICpp
bmNvbWluZ19ydGNwX2xpc3RfW2ldLCBwYXJzZWRfaW5jb21pbmdfcnRjcF9wYWNrZXRzW2ldKSk7
CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFJ0Y3BQYWNrZXRJbmNvbWluZygqaW5jb21pbmdf
cnRjcF9saXN0X1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcnNlZF9pbmNvbWluZ19ydGNwX3BhY2tldHNbaV0pOwogICB9CiAKICAgYXV0byYgcGFy
c2VkX291dGdvaW5nX3J0Y3BfcGFja2V0cyA9IHBhcnNlZF9sb2cub3V0Z29pbmdfcnRjcF9wYWNr
ZXRzKCk7CiAgIEFTU0VSVF9FUShwYXJzZWRfb3V0Z29pbmdfcnRjcF9wYWNrZXRzLnNpemUoKSwg
b3V0Z29pbmdfcnRjcF9saXN0Xy5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
cnNlZF9vdXRnb2luZ19ydGNwX3BhY2tldHMuc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1RfVFJV
RSh0ZXN0OjpWZXJpZnlMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmcoCi0gICAgICAgICpvdXRnb2lu
Z19ydGNwX2xpc3RfW2ldLCBwYXJzZWRfb3V0Z29pbmdfcnRjcF9wYWNrZXRzW2ldKSk7CisgICAg
dmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZygqb3V0Z29pbmdfcnRjcF9s
aXN0X1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cnNlZF9vdXRnb2luZ19ydGNwX3BhY2tldHNbaV0pOwogICB9CiAgIGF1dG8mIHBhcnNlZF9hdWRp
b19yZWN2X2NvbmZpZ3MgPSBwYXJzZWRfbG9nLmF1ZGlvX3JlY3ZfY29uZmlncygpOwogICBBU1NF
UlRfRVEocGFyc2VkX2F1ZGlvX3JlY3ZfY29uZmlncy5zaXplKCksIGF1ZGlvX3JlY3ZfY29uZmln
X2xpc3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2F1ZGlvX3Jl
Y3ZfY29uZmlncy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxv
Z2dlZEF1ZGlvUmVjdkNvbmZpZygKLSAgICAgICAgKmF1ZGlvX3JlY3ZfY29uZmlnX2xpc3RfW2ld
LCBwYXJzZWRfYXVkaW9fcmVjdl9jb25maWdzW2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxv
Z2dlZEF1ZGlvUmVjdkNvbmZpZygqYXVkaW9fcmVjdl9jb25maWdfbGlzdF9baV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfYXVkaW9fcmVjdl9jb25m
aWdzW2ldKTsKICAgfQogICBhdXRvJiBwYXJzZWRfYXVkaW9fc2VuZF9jb25maWdzID0gcGFyc2Vk
X2xvZy5hdWRpb19zZW5kX2NvbmZpZ3MoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF9hdWRpb19zZW5k
X2NvbmZpZ3Muc2l6ZSgpLCBhdWRpb19zZW5kX2NvbmZpZ19saXN0Xy5zaXplKCkpOwogICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9hdWRpb19zZW5kX2NvbmZpZ3Muc2l6ZSgpOyBpKysp
IHsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRBdWRpb1NlbmRDb25maWcoCi0g
ICAgICAgICphdWRpb19zZW5kX2NvbmZpZ19saXN0X1tpXSwgcGFyc2VkX2F1ZGlvX3NlbmRfY29u
Zmlnc1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRBdWRpb1NlbmRDb25maWcoKmF1
ZGlvX3NlbmRfY29uZmlnX2xpc3RfW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyc2VkX2F1ZGlvX3NlbmRfY29uZmlnc1tpXSk7CiAgIH0KICAgYXV0byYg
cGFyc2VkX3ZpZGVvX3JlY3ZfY29uZmlncyA9IHBhcnNlZF9sb2cudmlkZW9fcmVjdl9jb25maWdz
KCk7CiAgIEFTU0VSVF9FUShwYXJzZWRfdmlkZW9fcmVjdl9jb25maWdzLnNpemUoKSwgdmlkZW9f
cmVjdl9jb25maWdfbGlzdF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJz
ZWRfdmlkZW9fcmVjdl9jb25maWdzLnNpemUoKTsgaSsrKSB7Ci0gICAgRVhQRUNUX1RSVUUodGVz
dDo6VmVyaWZ5TG9nZ2VkVmlkZW9SZWN2Q29uZmlnKAotICAgICAgICAqdmlkZW9fcmVjdl9jb25m
aWdfbGlzdF9baV0sIHBhcnNlZF92aWRlb19yZWN2X2NvbmZpZ3NbaV0pKTsKKyAgICB2ZXJpZmll
cl8uVmVyaWZ5TG9nZ2VkVmlkZW9SZWN2Q29uZmlnKCp2aWRlb19yZWN2X2NvbmZpZ19saXN0X1tp
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF92aWRl
b19yZWN2X2NvbmZpZ3NbaV0pOwogICB9CiAgIGF1dG8mIHBhcnNlZF92aWRlb19zZW5kX2NvbmZp
Z3MgPSBwYXJzZWRfbG9nLnZpZGVvX3NlbmRfY29uZmlncygpOwogICBBU1NFUlRfRVEocGFyc2Vk
X3ZpZGVvX3NlbmRfY29uZmlncy5zaXplKCksIHZpZGVvX3NlbmRfY29uZmlnX2xpc3RfLnNpemUo
KSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX3ZpZGVvX3NlbmRfY29uZmlncy5z
aXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZFZpZGVvU2Vu
ZENvbmZpZygKLSAgICAgICAgKnZpZGVvX3NlbmRfY29uZmlnX2xpc3RfW2ldLCBwYXJzZWRfdmlk
ZW9fc2VuZF9jb25maWdzW2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFZpZGVvU2Vu
ZENvbmZpZygqdmlkZW9fc2VuZF9jb25maWdfbGlzdF9baV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfdmlkZW9fc2VuZF9jb25maWdzW2ldKTsKICAg
fQogCiAgIC8vIENsZWFuIHVwIHRlbXBvcmFyeSBmaWxlIC0gY2FuIGJlIHByZXR0eSBzbG93LgpA
QCAtNjgwLDcgKzY4NSwyNSBAQCBURVNUX1AoUnRjRXZlbnRMb2dTZXNzaW9uLCBTdGFydExvZ2dp
bmdJblRoZU1pZGRsZSkgewogICBSZWFkQW5kVmVyaWZ5TG9nKCk7CiB9CiAKLVRFU1QoUnRjRXZl
bnRMb2dUZXN0LCBDaXJjdWxhckJ1ZmZlcktlZXBzTW9zdFJlY2VudEV2ZW50cykgeworSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AoCisgICAgUnRjRXZlbnRMb2dUZXN0LAorICAgIFJ0Y0V2ZW50TG9n
U2Vzc2lvbiwKKyAgICA6OnRlc3Rpbmc6OkNvbWJpbmUoCisgICAgICAgIDo6dGVzdGluZzo6VmFs
dWVzKDEyMzQ1NjcsIDc2NTQzMjEpLAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcyhSdGNFdmVu
dExvZzo6a0ltbWVkaWF0ZU91dHB1dCwgMSwgNSksCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVz
KFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6OkxlZ2FjeSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TmV3Rm9ybWF0KSkpOworCitjbGFzcyBS
dGNFdmVudExvZ0NpcmN1bGFyQnVmZmVyVGVzdAorICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVz
dFdpdGhQYXJhbTxSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlPiB7CisgcHVibGljOgorICBSdGNF
dmVudExvZ0NpcmN1bGFyQnVmZmVyVGVzdCgpCisgICAgICA6IGVuY29kaW5nX3R5cGVfKEdldFBh
cmFtKCkpLCB2ZXJpZmllcl8oZW5jb2RpbmdfdHlwZV8pIHt9CisgIGNvbnN0IFJ0Y0V2ZW50TG9n
OjpFbmNvZGluZ1R5cGUgZW5jb2RpbmdfdHlwZV87CisgIGNvbnN0IHRlc3Q6OkV2ZW50VmVyaWZp
ZXIgdmVyaWZpZXJfOworfTsKKworVEVTVF9QKFJ0Y0V2ZW50TG9nQ2lyY3VsYXJCdWZmZXJUZXN0
LCBLZWVwc01vc3RSZWNlbnRFdmVudHMpIHsKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IE1heWJlIG1h
a2UgYSBzZXBhcmF0ZSBSdGNFdmVudExvZ0ltcGxUZXN0IHRoYXQgY2FuIGFjY2VzcwogICAvLyB0
aGUgc2l6ZSBvZiB0aGUgY3ljbGljIGJ1ZmZlcj8KICAgY29uc3RleHByIHNpemVfdCBrTnVtRXZl
bnRzID0gMjAwMDA7CkBAIC02OTksOCArNzIyLDcgQEAgVEVTVChSdGNFdmVudExvZ1Rlc3QsIENp
cmN1bGFyQnVmZmVyS2VlcHNNb3N0UmVjZW50RXZlbnRzKSB7CiAKICAgLy8gV2hlbiBsb2dfZHVt
cGVyIGdvZXMgb3V0IG9mIHNjb3BlLCBpdCBjYXVzZXMgdGhlIGxvZyBmaWxlIHRvIGJlIGZsdXNo
ZWQKICAgLy8gdG8gZGlzay4KLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBsb2dfZHVt
cGVyKAotICAgICAgUnRjRXZlbnRMb2c6OkNyZWF0ZShSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBl
OjpMZWdhY3kpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBsb2dfZHVtcGVyKFJ0
Y0V2ZW50TG9nOjpDcmVhdGUoZW5jb2RpbmdfdHlwZV8pKTsKIAogICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGtOdW1FdmVudHM7IGkrKykgewogICAgIC8vIFRoZSBwdXJwb3NlIG9mIHRoZSB0ZXN0
IGlzIHRvIHZlcmlmeSB0aGF0IHRoZSBsb2cgY2FuIGhhbmRsZQpAQCAtNzE0LDYgKzczNiw3IEBA
IFRFU1QoUnRjRXZlbnRMb2dUZXN0LCBDaXJjdWxhckJ1ZmZlcktlZXBzTW9zdFJlY2VudEV2ZW50
cykgewogICAgIGZha2VfY2xvY2stPkFkdmFuY2VUaW1lTWljcm9zKDEwMDAwKTsKICAgfQogICBp
bnQ2NF90IHN0YXJ0X3RpbWVfdXMgPSBydGM6OlRpbWVNaWNyb3MoKTsKKyAgaW50NjRfdCB1dGNf
c3RhcnRfdGltZV91cyA9IHJ0Yzo6VGltZVVUQ01pY3JvcygpOwogICBsb2dfZHVtcGVyLT5TdGFy
dExvZ2dpbmcoCiAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudExvZ091dHB1dEZpbGU+
KHRlbXBfZmlsZW5hbWUsIDEwMDAwMDAwKSwKICAgICAgIFJ0Y0V2ZW50TG9nOjprSW1tZWRpYXRl
T3V0cHV0KTsKQEAgLTcyNywxMSArNzUwLDEyIEBAIFRFU1QoUnRjRXZlbnRMb2dUZXN0LCBDaXJj
dWxhckJ1ZmZlcktlZXBzTW9zdFJlY2VudEV2ZW50cykgewogCiAgIGNvbnN0IGF1dG8mIHN0YXJ0
X2xvZ19ldmVudHMgPSBwYXJzZWRfbG9nLnN0YXJ0X2xvZ19ldmVudHMoKTsKICAgQVNTRVJUX0VR
KHN0YXJ0X2xvZ19ldmVudHMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlm
eUxvZ2dlZFN0YXJ0RXZlbnQoc3RhcnRfdGltZV91cywgc3RhcnRfbG9nX2V2ZW50c1swXSkpOwor
ICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkU3RhcnRFdmVudChzdGFydF90aW1lX3VzLCB1dGNfc3Rh
cnRfdGltZV91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbG9n
X2V2ZW50c1swXSk7CiAKICAgY29uc3QgYXV0byYgc3RvcF9sb2dfZXZlbnRzID0gcGFyc2VkX2xv
Zy5zdG9wX2xvZ19ldmVudHMoKTsKICAgQVNTRVJUX0VRKHN0b3BfbG9nX2V2ZW50cy5zaXplKCks
IDF1KTsKLSAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkU3RvcEV2ZW50KHN0b3BfdGlt
ZV91cywgc3RvcF9sb2dfZXZlbnRzWzBdKSk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRTdG9w
RXZlbnQoc3RvcF90aW1lX3VzLCBzdG9wX2xvZ19ldmVudHNbMF0pOwogCiAgIGNvbnN0IGF1dG8m
IHByb2JlX3N1Y2Nlc3NfZXZlbnRzID0gcGFyc2VkX2xvZy5id2VfcHJvYmVfc3VjY2Vzc19ldmVu
dHMoKTsKICAgLy8gSWYgdGhlIGZvbGxvd2luZyBmYWlscywgaXQgcHJvYmFibHkgbWVhbnMgdGhh
dCBrTnVtRXZlbnRzIGlzbid0IGxhcmdlcgpAQCAtNzUyLDE5ICs3NzYsMjAgQEAgVEVTVChSdGNF
dmVudExvZ1Rlc3QsIENpcmN1bGFyQnVmZmVyS2VlcHNNb3N0UmVjZW50RXZlbnRzKSB7CiAgIGZh
a2VfY2xvY2stPlNldFRpbWVNaWNyb3MoZmlyc3RfdGltZXN0YW1wX3VzKTsKICAgZm9yIChzaXpl
X3QgaSA9IDE7IGkgPCBwcm9iZV9zdWNjZXNzX2V2ZW50cy5zaXplKCk7IGkrKykgewogICAgIGZh
a2VfY2xvY2stPkFkdmFuY2VUaW1lTWljcm9zKDEwMDAwKTsKLSAgICBBU1NFUlRfVFJVRSh0ZXN0
OjpWZXJpZnlMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCgKKyAgICB2ZXJpZmllcl8uVmVyaWZ5
TG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQoCiAgICAgICAgIFJ0Y0V2ZW50UHJvYmVSZXN1bHRT
dWNjZXNzKGZpcnN0X2lkICsgaSwgZmlyc3RfYml0cmF0ZV9icHMgKyBpICogMTAwMCksCi0gICAg
ICAgIHByb2JlX3N1Y2Nlc3NfZXZlbnRzW2ldKSk7CisgICAgICAgIHByb2JlX3N1Y2Nlc3NfZXZl
bnRzW2ldKTsKICAgfQogfQogCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgKKyAgICBSdGNFdmVu
dExvZ1Rlc3QsCisgICAgUnRjRXZlbnRMb2dDaXJjdWxhckJ1ZmZlclRlc3QsCisgICAgOjp0ZXN0
aW5nOjpWYWx1ZXMoUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TGVnYWN5LAorICAgICAgICAg
ICAgICAgICAgICAgIFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6Ok5ld0Zvcm1hdCkpOworCiAv
LyBUT0RPKHRlcmVsaXVzKTogVmVyaWZ5IHBhcnNlciBiZWhhdmlvciBpZiB0aGUgdGltZXN0YW1w
cyBhcmUgbm90CiAvLyBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaW4gdGhlIGxvZy4KIAotSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoCi0gICAgUnRjRXZlbnRMb2dUZXN0LAotICAgIFJ0Y0V2ZW50
TG9nU2Vzc2lvbiwKLSAgICA6OnRlc3Rpbmc6OkNvbWJpbmUoOjp0ZXN0aW5nOjpWYWx1ZXMoMTIz
NDU2NywgNzY1NDMyMSksCi0gICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVz
KFJ0Y0V2ZW50TG9nOjprSW1tZWRpYXRlT3V0cHV0LCAxLCA1KSkpOwogCiB9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdF9oZWxw
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdF9oZWxwZXIuY2MKaW5kZXggOWY2
MjQwY2JlMWU2YmY3Nzc3MWRmMWIxMzdkYmU5ZDM3ZjEwYjYzOC4uZTg3ODA4ZDEyNWMzZTQ5M2Mx
MWYxNWM3N2E5ZGFmMDE2NDNiNTI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2df
dW5pdHRlc3RfaGVscGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0X2hl
bHBlci5jYwpAQCAtMTIsMTIgKzEyLDE1IEBACiAKICNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIG1l
bWNtcAogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVk
ZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19h
ZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfY3ZvLmgiCkBAIC0yNSw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTYyLDYgKzY2LDE2IEBAIHZvaWQgU2h1ZmZsZUlu
UGxhY2UoUmFuZG9tKiBwcm5nLCBydGM6OkFycmF5VmlldzxUPiBhcnJheSkgewogICAgIHN0ZDo6
c3dhcChhcnJheVtpXSwgYXJyYXlbb3RoZXJdKTsKICAgfQogfQorCithYnNsOjpvcHRpb25hbDxp
bnQ+IEdldEV4dGVuc2lvbklkKGNvbnN0IHN0ZDo6dmVjdG9yPFJ0cEV4dGVuc2lvbj4mIGV4dGVu
c2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB1cmkpIHsKKyAgZm9yIChjb25zdCBhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zKSB7
CisgICAgaWYgKGV4dGVuc2lvbi51cmkgPT0gdXJpKQorICAgICAgcmV0dXJuIGV4dGVuc2lvbi5p
ZDsKKyAgfQorICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAK
IHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEFsclN0YXRlPiBFdmVudEdlbmVyYXRvcjo6TmV3QWxy
U3RhdGUoKSB7CkBAIC0yNjYsNyArMjgwLDggQEAgdm9pZCBFdmVudEdlbmVyYXRvcjo6UmFuZG9t
aXplUnRwUGFja2V0KAogICAgIHNpemVfdCBwYWRkaW5nX3NpemUsCiAgICAgdWludDMyX3Qgc3Ny
YywKICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXAsCi0gICAg
UnRwUGFja2V0KiBydHBfcGFja2V0KSB7CisgICAgUnRwUGFja2V0KiBydHBfcGFja2V0LAorICAg
IGJvb2wgYWxsX2NvbmZpZ3VyZWRfZXh0cykgewogICBjb25zdGV4cHIgaW50IGtNYXhQYXlsb2Fk
VHlwZSA9IDEyNzsKICAgcnRwX3BhY2tldC0+U2V0UGF5bG9hZFR5cGUocHJuZ18uUmFuZChrTWF4
UGF5bG9hZFR5cGUpKTsKICAgcnRwX3BhY2tldC0+U2V0TWFya2VyKHBybmdfLlJhbmQ8Ym9vbD4o
KSk7CkBAIC0yODEsMTYgKzI5NiwzMCBAQCB2b2lkIEV2ZW50R2VuZXJhdG9yOjpSYW5kb21pemVS
dHBQYWNrZXQoCiAgIH0KICAgcnRwX3BhY2tldC0+U2V0Q3NyY3MoY3NyY3MpOwogCi0gIGlmIChl
eHRlbnNpb25fbWFwLklzUmVnaXN0ZXJlZChUcmFuc21pc3Npb25PZmZzZXQ6OmtJZCkpCisgIGlm
IChleHRlbnNpb25fbWFwLklzUmVnaXN0ZXJlZChUcmFuc21pc3Npb25PZmZzZXQ6OmtJZCkgJiYK
KyAgICAgIChhbGxfY29uZmlndXJlZF9leHRzIHx8IHBybmdfLlJhbmQ8Ym9vbD4oKSkpIHsKICAg
ICBydHBfcGFja2V0LT5TZXRFeHRlbnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0Pihwcm5nXy5SYW5k
KDB4MDBmZmZmZmYpKTsKLSAgaWYgKGV4dGVuc2lvbl9tYXAuSXNSZWdpc3RlcmVkKEF1ZGlvTGV2
ZWw6OmtJZCkpCisgIH0KKworICBpZiAoZXh0ZW5zaW9uX21hcC5Jc1JlZ2lzdGVyZWQoQXVkaW9M
ZXZlbDo6a0lkKSAmJgorICAgICAgKGFsbF9jb25maWd1cmVkX2V4dHMgfHwgcHJuZ18uUmFuZDxi
b29sPigpKSkgewogICAgIHJ0cF9wYWNrZXQtPlNldEV4dGVuc2lvbjxBdWRpb0xldmVsPihwcm5n
Xy5SYW5kPGJvb2w+KCksIHBybmdfLlJhbmQoMTI3KSk7Ci0gIGlmIChleHRlbnNpb25fbWFwLklz
UmVnaXN0ZXJlZChBYnNvbHV0ZVNlbmRUaW1lOjprSWQpKQorICB9CisKKyAgaWYgKGV4dGVuc2lv
bl9tYXAuSXNSZWdpc3RlcmVkKEFic29sdXRlU2VuZFRpbWU6OmtJZCkgJiYKKyAgICAgIChhbGxf
Y29uZmlndXJlZF9leHRzIHx8IHBybmdfLlJhbmQ8Ym9vbD4oKSkpIHsKICAgICBydHBfcGFja2V0
LT5TZXRFeHRlbnNpb248QWJzb2x1dGVTZW5kVGltZT4ocHJuZ18uUmFuZCgweDAwZmZmZmZmKSk7
Ci0gIGlmIChleHRlbnNpb25fbWFwLklzUmVnaXN0ZXJlZChWaWRlb09yaWVudGF0aW9uOjprSWQp
KQorICB9CisKKyAgaWYgKGV4dGVuc2lvbl9tYXAuSXNSZWdpc3RlcmVkKFZpZGVvT3JpZW50YXRp
b246OmtJZCkgJiYKKyAgICAgIChhbGxfY29uZmlndXJlZF9leHRzIHx8IHBybmdfLlJhbmQ8Ym9v
bD4oKSkpIHsKICAgICBydHBfcGFja2V0LT5TZXRFeHRlbnNpb248VmlkZW9PcmllbnRhdGlvbj4o
cHJuZ18uUmFuZCgzKSk7Ci0gIGlmIChleHRlbnNpb25fbWFwLklzUmVnaXN0ZXJlZChUcmFuc3Bv
cnRTZXF1ZW5jZU51bWJlcjo6a0lkKSkKKyAgfQorCisgIGlmIChleHRlbnNpb25fbWFwLklzUmVn
aXN0ZXJlZChUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcjo6a0lkKSAmJgorICAgICAgKGFsbF9jb25m
aWd1cmVkX2V4dHMgfHwgcHJuZ18uUmFuZDxib29sPigpKSkgewogICAgIHJ0cF9wYWNrZXQtPlNl
dEV4dGVuc2lvbjxUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcj4ocHJuZ18uUmFuZDx1aW50MTZfdD4o
KSk7CisgIH0KIAogICBSVENfQ0hFQ0tfTEUocnRwX3BhY2tldC0+aGVhZGVyc19zaXplKCkgKyBw
YXlsb2FkX3NpemUsIElQX1BBQ0tFVF9TSVpFKTsKIApAQCAtMjk5LDEyICszMjgsMTMgQEAgdm9p
ZCBFdmVudEdlbmVyYXRvcjo6UmFuZG9taXplUnRwUGFja2V0KAogICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBheWxvYWRfc2l6ZTsgaSsrKSB7CiAgICAgcGF5bG9hZFtpXSA9IHBybmdfLlJhbmQ8
dWludDhfdD4oKTsKICAgfQotICBSVENfQ0hFQ0socnRwX3BhY2tldC0+U2V0UGFkZGluZyhwYWRk
aW5nX3NpemUsICZwcm5nXykpOworICBSVENfQ0hFQ0socnRwX3BhY2tldC0+U2V0UGFkZGluZyhw
YWRkaW5nX3NpemUpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0SW5j
b21pbmc+IEV2ZW50R2VuZXJhdG9yOjpOZXdSdHBQYWNrZXRJbmNvbWluZygKICAgICB1aW50MzJf
dCBzc3JjLAotICAgIGNvbnN0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCkg
eworICAgIGNvbnN0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCwKKyAgICBi
b29sIGFsbF9jb25maWd1cmVkX2V4dHMpIHsKICAgY29uc3RleHByIHNpemVfdCBrTWF4UGFkZGlu
Z0xlbmd0aCA9IDIyNDsKICAgY29uc3QgYm9vbCBwYWRkaW5nID0gcHJuZ18uUmFuZCgwLCA5KSA9
PSAwOyAgLy8gTGV0IHBhZGRpbmcgYmUgMTAlIHByb2JhYmxlLgogICBjb25zdCBzaXplX3QgcGFk
ZGluZ19zaXplID0gIXBhZGRpbmcgPyAwdSA6IHBybmdfLlJhbmQoMHUsIGtNYXhQYWRkaW5nTGVu
Z3RoKTsKQEAgLTMyNSwxNCArMzU1LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0cFBh
Y2tldEluY29taW5nPiBFdmVudEdlbmVyYXRvcjo6TmV3UnRwUGFja2V0SW5jb21pbmcoCiAKICAg
UnRwUGFja2V0UmVjZWl2ZWQgcnRwX3BhY2tldCgmZXh0ZW5zaW9uX21hcCk7CiAgIFJhbmRvbWl6
ZVJ0cFBhY2tldChwYXlsb2FkX3NpemUsIHBhZGRpbmdfc2l6ZSwgc3NyYywgZXh0ZW5zaW9uX21h
cCwKLSAgICAgICAgICAgICAgICAgICAgICZydHBfcGFja2V0KTsKKyAgICAgICAgICAgICAgICAg
ICAgICZydHBfcGFja2V0LCBhbGxfY29uZmlndXJlZF9leHRzKTsKIAogICByZXR1cm4gYWJzbDo6
bWFrZV91bmlxdWU8UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZz4ocnRwX3BhY2tldCk7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nPiBFdmVudEdlbmVyYXRv
cjo6TmV3UnRwUGFja2V0T3V0Z29pbmcoCiAgICAgdWludDMyX3Qgc3NyYywKLSAgICBjb25zdCBS
dHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXApIHsKKyAgICBjb25zdCBSdHBIZWFk
ZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXAsCisgICAgYm9vbCBhbGxfY29uZmlndXJlZF9l
eHRzKSB7CiAgIGNvbnN0ZXhwciBzaXplX3Qga01heFBhZGRpbmdMZW5ndGggPSAyMjQ7CiAgIGNv
bnN0IGJvb2wgcGFkZGluZyA9IHBybmdfLlJhbmQoMCwgOSkgPT0gMDsgIC8vIExldCBwYWRkaW5n
IGJlIDEwJSBwcm9iYWJsZS4KICAgY29uc3Qgc2l6ZV90IHBhZGRpbmdfc2l6ZSA9ICFwYWRkaW5n
ID8gMHUgOiBwcm5nXy5SYW5kKDB1LCBrTWF4UGFkZGluZ0xlbmd0aCk7CkBAIC0zNTQsMzMgKzM4
NSwzNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZz4gRXZlbnRH
ZW5lcmF0b3I6Ok5ld1J0cFBhY2tldE91dGdvaW5nKAogICBSdHBQYWNrZXRUb1NlbmQgcnRwX3Bh
Y2tldCgmZXh0ZW5zaW9uX21hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01heEhl
YWRlclNpemUgKyBwYXlsb2FkX3NpemUgKyBwYWRkaW5nX3NpemUpOwogICBSYW5kb21pemVSdHBQ
YWNrZXQocGF5bG9hZF9zaXplLCBwYWRkaW5nX3NpemUsIHNzcmMsIGV4dGVuc2lvbl9tYXAsCi0g
ICAgICAgICAgICAgICAgICAgICAmcnRwX3BhY2tldCk7CisgICAgICAgICAgICAgICAgICAgICAm
cnRwX3BhY2tldCwgYWxsX2NvbmZpZ3VyZWRfZXh0cyk7CiAKICAgaW50IHByb2JlX2NsdXN0ZXJf
aWQgPSBwcm5nXy5SYW5kKDAsIDEwMDAwMCk7CiAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxS
dGNFdmVudFJ0cFBhY2tldE91dGdvaW5nPihydHBfcGFja2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmVfY2x1c3Rlcl9pZCk7CiB9
CiAKLVJ0cEhlYWRlckV4dGVuc2lvbk1hcCBFdmVudEdlbmVyYXRvcjo6TmV3UnRwSGVhZGVyRXh0
ZW5zaW9uTWFwKCkgeworUnRwSGVhZGVyRXh0ZW5zaW9uTWFwIEV2ZW50R2VuZXJhdG9yOjpOZXdS
dHBIZWFkZXJFeHRlbnNpb25NYXAoCisgICAgYm9vbCBjb25maWd1cmVfYWxsKSB7CiAgIFJ0cEhl
YWRlckV4dGVuc2lvbk1hcCBleHRlbnNpb25fbWFwOwogICBzdGQ6OnZlY3RvcjxpbnQ+IGlkKFJ0
cEV4dGVuc2lvbjo6a09uZUJ5dGVIZWFkZXJFeHRlbnNpb25NYXhJZCAtCiAgICAgICAgICAgICAg
ICAgICAgICAgUnRwRXh0ZW5zaW9uOjprTWluSWQgKyAxKTsKICAgc3RkOjppb3RhKGlkLmJlZ2lu
KCksIGlkLmVuZCgpLCBSdHBFeHRlbnNpb246OmtNaW5JZCk7CiAgIFNodWZmbGVJblBsYWNlKCZw
cm5nXywgcnRjOjpBcnJheVZpZXc8aW50PihpZCkpOwogCi0gIGlmIChwcm5nXy5SYW5kPGJvb2w+
KCkpIHsKKyAgaWYgKGNvbmZpZ3VyZV9hbGwgfHwgcHJuZ18uUmFuZDxib29sPigpKSB7CiAgICAg
ZXh0ZW5zaW9uX21hcC5SZWdpc3RlcjxBdWRpb0xldmVsPihpZFswXSk7CiAgIH0KLSAgaWYgKHBy
bmdfLlJhbmQ8Ym9vbD4oKSkgeworICBpZiAoY29uZmlndXJlX2FsbCB8fCBwcm5nXy5SYW5kPGJv
b2w+KCkpIHsKICAgICBleHRlbnNpb25fbWFwLlJlZ2lzdGVyPFRyYW5zbWlzc2lvbk9mZnNldD4o
aWRbMV0pOwogICB9Ci0gIGlmIChwcm5nXy5SYW5kPGJvb2w+KCkpIHsKKyAgaWYgKGNvbmZpZ3Vy
ZV9hbGwgfHwgcHJuZ18uUmFuZDxib29sPigpKSB7CiAgICAgZXh0ZW5zaW9uX21hcC5SZWdpc3Rl
cjxBYnNvbHV0ZVNlbmRUaW1lPihpZFsyXSk7CiAgIH0KLSAgaWYgKHBybmdfLlJhbmQ8Ym9vbD4o
KSkgeworICBpZiAoY29uZmlndXJlX2FsbCB8fCBwcm5nXy5SYW5kPGJvb2w+KCkpIHsKICAgICBl
eHRlbnNpb25fbWFwLlJlZ2lzdGVyPFZpZGVvT3JpZW50YXRpb24+KGlkWzNdKTsKICAgfQotICBp
ZiAocHJuZ18uUmFuZDxib29sPigpKSB7CisgIGlmIChjb25maWd1cmVfYWxsIHx8IHBybmdfLlJh
bmQ8Ym9vbD4oKSkgewogICAgIGV4dGVuc2lvbl9tYXAuUmVnaXN0ZXI8VHJhbnNwb3J0U2VxdWVu
Y2VOdW1iZXI+KGlkWzRdKTsKICAgfQogCkBAIC00NjksMzk2ICs1MDEsMzE3IEBAIEV2ZW50R2Vu
ZXJhdG9yOjpOZXdWaWRlb1NlbmRTdHJlYW1Db25maWcoCiAgIHJldHVybiBhYnNsOjptYWtlX3Vu
aXF1ZTxSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZz4oc3RkOjptb3ZlKGNvbmZpZykpOwog
fQogCi1ib29sIFZlcmlmeUxvZ2dlZEFsclN0YXRlRXZlbnQoY29uc3QgUnRjRXZlbnRBbHJTdGF0
ZSYgb3JpZ2luYWxfZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
TG9nZ2VkQWxyU3RhdGVFdmVudCYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVu
dC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVy
biBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmluX2Fscl8gIT0gbG9nZ2VkX2V2ZW50Lmlu
X2FscikKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVlOwordm9pZCBFdmVudFZlcmlm
aWVyOjpWZXJpZnlMb2dnZWRBbHJTdGF0ZUV2ZW50KAorICAgIGNvbnN0IFJ0Y0V2ZW50QWxyU3Rh
dGUmIG9yaWdpbmFsX2V2ZW50LAorICAgIGNvbnN0IExvZ2dlZEFsclN0YXRlRXZlbnQmIGxvZ2dl
ZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX21z
KCksIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2
ZW50LmluX2FscigpLCBsb2dnZWRfZXZlbnQuaW5fYWxyKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dn
ZWRBdWRpb1BsYXlvdXRFdmVudCgKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkQXVk
aW9QbGF5b3V0RXZlbnQoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQmIG9yaWdpbmFs
X2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50JiBsb2dnZWRfZXZlbnQp
IHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50Lmxv
Z190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuc3Ny
Y18gIT0gbG9nZ2VkX2V2ZW50LnNzcmMpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1
ZTsKKyAgICBjb25zdCBMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCYgbG9nZ2VkX2V2ZW50KSBjb25z
dCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2
ZW50LmxvZ190aW1lX21zKCkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuc3NyYygpLCBs
b2dnZWRfZXZlbnQuc3NyYyk7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkQXVkaW9OZXR3b3JrQWRh
cHRhdGlvbkV2ZW50KAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRBdWRpb05ldHdv
cmtBZGFwdGF0aW9uRXZlbnQoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0
aW9uJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0
aW9uRXZlbnQmIGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1w
X3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNvbmZpZ18tPmJpdHJhdGVfYnBzICE9IGxvZ2dlZF9ldmVu
dC5jb25maWcuYml0cmF0ZV9icHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxf
ZXZlbnQuY29uZmlnXy0+ZW5hYmxlX2R0eCAhPSBsb2dnZWRfZXZlbnQuY29uZmlnLmVuYWJsZV9k
dHgpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuY29uZmlnXy0+ZW5h
YmxlX2ZlYyAhPSBsb2dnZWRfZXZlbnQuY29uZmlnLmVuYWJsZV9mZWMpCi0gICAgcmV0dXJuIGZh
bHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuY29uZmlnXy0+ZnJhbWVfbGVuZ3RoX21zICE9Ci0g
ICAgICBsb2dnZWRfZXZlbnQuY29uZmlnLmZyYW1lX2xlbmd0aF9tcykKLSAgICByZXR1cm4gZmFs
c2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5jb25maWdfLT5udW1fY2hhbm5lbHMgIT0gbG9nZ2Vk
X2V2ZW50LmNvbmZpZy5udW1fY2hhbm5lbHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3Jp
Z2luYWxfZXZlbnQuY29uZmlnXy0+dXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uICE9Ci0gICAg
ICBsb2dnZWRfZXZlbnQuY29uZmlnLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbikKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkQndl
RGVsYXlCYXNlZFVwZGF0ZSgKKyAgICBjb25zdCBMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0aW9u
RXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQu
dGltZXN0YW1wX21zKCksIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKworICBFWFBFQ1Rf
RVEob3JpZ2luYWxfZXZlbnQuY29uZmlnKCkuYml0cmF0ZV9icHMsCisgICAgICAgICAgICBsb2dn
ZWRfZXZlbnQuY29uZmlnLmJpdHJhdGVfYnBzKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50
LmNvbmZpZygpLmVuYWJsZV9kdHgsIGxvZ2dlZF9ldmVudC5jb25maWcuZW5hYmxlX2R0eCk7Cisg
IEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5jb25maWcoKS5lbmFibGVfZmVjLCBsb2dnZWRfZXZl
bnQuY29uZmlnLmVuYWJsZV9mZWMpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY29uZmln
KCkuZnJhbWVfbGVuZ3RoX21zLAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy5mcmFt
ZV9sZW5ndGhfbXMpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY29uZmlnKCkubnVtX2No
YW5uZWxzLAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy5udW1fY2hhbm5lbHMpOwor
CisgIC8vIHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbgorICBBU1NFUlRfRVEob3JpZ2luYWxf
ZXZlbnQuY29uZmlnKCkudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uLmhhc192YWx1ZSgpLAor
ICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rp
b24uaGFzX3ZhbHVlKCkpOworICBpZiAob3JpZ2luYWxfZXZlbnQuY29uZmlnKCkudXBsaW5rX3Bh
Y2tldF9sb3NzX2ZyYWN0aW9uLmhhc192YWx1ZSgpKSB7CisgICAgY29uc3QgZmxvYXQgb3JpZ2lu
YWwgPQorICAgICAgICBvcmlnaW5hbF9ldmVudC5jb25maWcoKS51cGxpbmtfcGFja2V0X2xvc3Nf
ZnJhY3Rpb24udmFsdWUoKTsKKyAgICBjb25zdCBmbG9hdCBsb2dnZWQgPQorICAgICAgICBsb2dn
ZWRfZXZlbnQuY29uZmlnLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbi52YWx1ZSgpOworICAg
IGNvbnN0IGZsb2F0IHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbl9kZWx0YSA9IHN0ZDo6YWJz
KG9yaWdpbmFsIC0gbG9nZ2VkKTsKKyAgICBFWFBFQ1RfTEUodXBsaW5rX3BhY2tldF9sb3NzX2Zy
YWN0aW9uX2RlbHRhLCAwLjAwMDFmKTsKKyAgfQorfQorCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZl
cmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoCiAgICAgY29uc3QgUnRjRXZlbnRCd2VVcGRh
dGVEZWxheUJhc2VkJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRCd2VEZWxheUJh
c2VkVXBkYXRlJiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFt
cF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwot
ICBpZiAob3JpZ2luYWxfZXZlbnQuYml0cmF0ZV9icHNfICE9IGxvZ2dlZF9ldmVudC5iaXRyYXRl
X2JwcykKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5kZXRlY3Rvcl9z
dGF0ZV8gIT0gbG9nZ2VkX2V2ZW50LmRldGVjdG9yX3N0YXRlKQotICAgIHJldHVybiBmYWxzZTsK
LSAgcmV0dXJuIHRydWU7CisgICAgY29uc3QgTG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSYgbG9n
Z2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBf
bXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxf
ZXZlbnQuYml0cmF0ZV9icHMoKSwgbG9nZ2VkX2V2ZW50LmJpdHJhdGVfYnBzKTsKKyAgRVhQRUNU
X0VRKG9yaWdpbmFsX2V2ZW50LmRldGVjdG9yX3N0YXRlKCksIGxvZ2dlZF9ldmVudC5kZXRlY3Rv
cl9zdGF0ZSk7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlKAordm9p
ZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUoCiAgICAgY29u
c3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0
IExvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5h
bF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAg
IHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmJpdHJhdGVfYnBzXyAhPSBsb2dn
ZWRfZXZlbnQuYml0cmF0ZV9icHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxf
ZXZlbnQuZnJhY3Rpb25fbG9zc18gIT0gbG9nZ2VkX2V2ZW50LmZyYWN0aW9uX2xvc3QpCi0gICAg
cmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQudG90YWxfcGFja2V0c18gIT0gbG9n
Z2VkX2V2ZW50LmV4cGVjdGVkX3BhY2tldHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBWZXJpZnlMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQo
CisgICAgY29uc3QgTG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlJiBsb2dnZWRfZXZlbnQpIGNvbnN0
IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZl
bnQubG9nX3RpbWVfbXMoKSk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5iaXRyYXRlX2Jw
cygpLCBsb2dnZWRfZXZlbnQuYml0cmF0ZV9icHMpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZl
bnQuZnJhY3Rpb25fbG9zcygpLCBsb2dnZWRfZXZlbnQuZnJhY3Rpb25fbG9zdCk7CisgIEVYUEVD
VF9FUShvcmlnaW5hbF9ldmVudC50b3RhbF9wYWNrZXRzKCksIGxvZ2dlZF9ldmVudC5leHBlY3Rl
ZF9wYWNrZXRzKTsKK30KKwordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRCd2VQcm9i
ZUNsdXN0ZXJDcmVhdGVkRXZlbnQoCiAgICAgY29uc3QgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVh
dGVkJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVh
dGVkRXZlbnQmIGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1w
X3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0g
IGlmIChvcmlnaW5hbF9ldmVudC5pZF8gIT0gbG9nZ2VkX2V2ZW50LmlkKQotICAgIHJldHVybiBm
YWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmJpdHJhdGVfYnBzXyAhPSBsb2dnZWRfZXZlbnQu
Yml0cmF0ZV9icHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQubWlu
X3Byb2Jlc18gIT0gbG9nZ2VkX2V2ZW50Lm1pbl9wYWNrZXRzKQotICAgIHJldHVybiBmYWxzZTsK
LSAgaWYgKG9yaWdpbmFsX2V2ZW50Lm1pbl9ieXRlc18gIT0gbG9nZ2VkX2V2ZW50Lm1pbl9ieXRl
cykKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmVyaWZ5
TG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQoCisgICAgY29uc3QgTG9nZ2VkQndlUHJvYmVDbHVz
dGVyQ3JlYXRlZEV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdp
bmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7Cisg
IEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5pZCgpLCBsb2dnZWRfZXZlbnQuaWQpOworICBFWFBF
Q1RfRVEob3JpZ2luYWxfZXZlbnQuYml0cmF0ZV9icHMoKSwgbG9nZ2VkX2V2ZW50LmJpdHJhdGVf
YnBzKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50Lm1pbl9wcm9iZXMoKSwgbG9nZ2VkX2V2
ZW50Lm1pbl9wYWNrZXRzKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50Lm1pbl9ieXRlcygp
LCBsb2dnZWRfZXZlbnQubWluX2J5dGVzKTsKK30KKwordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJp
ZnlMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCgKICAgICBjb25zdCBSdGNFdmVudFByb2JlUmVz
dWx0RmFpbHVyZSYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQndlUHJvYmVGYWls
dXJlRXZlbnQmIGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1w
X3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0g
IGlmIChvcmlnaW5hbF9ldmVudC5pZF8gIT0gbG9nZ2VkX2V2ZW50LmlkKQotICAgIHJldHVybiBm
YWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmZhaWx1cmVfcmVhc29uXyAhPSBsb2dnZWRfZXZl
bnQuZmFpbHVyZV9yZWFzb24pCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKKyAg
ICBjb25zdCBMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7
CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50
LmxvZ190aW1lX21zKCkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuaWQoKSwgbG9nZ2Vk
X2V2ZW50LmlkKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmZhaWx1cmVfcmVhc29uKCks
IGxvZ2dlZF9ldmVudC5mYWlsdXJlX3JlYXNvbik7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkQndl
UHJvYmVTdWNjZXNzRXZlbnQoCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZEJ3ZVBy
b2JlU3VjY2Vzc0V2ZW50KAogICAgIGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzJiBv
cmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCYgbG9n
Z2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dl
ZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFs
X2V2ZW50LmlkXyAhPSBsb2dnZWRfZXZlbnQuaWQpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAo
b3JpZ2luYWxfZXZlbnQuYml0cmF0ZV9icHNfICE9IGxvZ2dlZF9ldmVudC5iaXRyYXRlX2JwcykK
LSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVlOworICAgIGNvbnN0IExvZ2dlZEJ3ZVBy
b2JlU3VjY2Vzc0V2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdp
bmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7Cisg
IEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5pZCgpLCBsb2dnZWRfZXZlbnQuaWQpOworICBFWFBF
Q1RfRVEob3JpZ2luYWxfZXZlbnQuYml0cmF0ZV9icHMoKSwgbG9nZ2VkX2V2ZW50LmJpdHJhdGVf
YnBzKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAordm9p
ZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAogICAg
IGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCi0g
ICAgY29uc3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgbG9nZ2VkX2V2ZW50KSB7Ci0g
IGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGlt
ZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAob3JpZ2luYWxfZXZlbnQudHlwZV8g
IT0gbG9nZ2VkX2V2ZW50LnR5cGUpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxf
ZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWRfICE9IGxvZ2dlZF9ldmVudC5jYW5kaWRhdGVfcGFpcl9p
ZCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFp
cl9kZXNjXy5sb2NhbF9jYW5kaWRhdGVfdHlwZSAhPQotICAgICAgbG9nZ2VkX2V2ZW50LmxvY2Fs
X2NhbmRpZGF0ZV90eXBlKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50
LmNhbmRpZGF0ZV9wYWlyX2Rlc2NfLmxvY2FsX3JlbGF5X3Byb3RvY29sICE9Ci0gICAgICBsb2dn
ZWRfZXZlbnQubG9jYWxfcmVsYXlfcHJvdG9jb2wpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAo
b3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzY18ubG9jYWxfbmV0d29ya190eXBlICE9
Ci0gICAgICBsb2dnZWRfZXZlbnQubG9jYWxfbmV0d29ya190eXBlKQotICAgIHJldHVybiBmYWxz
ZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2Rlc2NfLmxvY2FsX2FkZHJl
c3NfZmFtaWx5ICE9Ci0gICAgICBsb2dnZWRfZXZlbnQubG9jYWxfYWRkcmVzc19mYW1pbHkpCi0g
ICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVz
Y18ucmVtb3RlX2NhbmRpZGF0ZV90eXBlICE9Ci0gICAgICBsb2dnZWRfZXZlbnQucmVtb3RlX2Nh
bmRpZGF0ZV90eXBlKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNh
bmRpZGF0ZV9wYWlyX2Rlc2NfLnJlbW90ZV9hZGRyZXNzX2ZhbWlseSAhPQotICAgICAgbG9nZ2Vk
X2V2ZW50LnJlbW90ZV9hZGRyZXNzX2ZhbWlseSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChv
cmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjXy5jYW5kaWRhdGVfcGFpcl9wcm90b2Nv
bCAhPQotICAgICAgbG9nZ2VkX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX3Byb3RvY29sKQotICAgIHJl
dHVybiBmYWxzZTsKLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWZXJpZnlMb2dnZWRJY2VD
YW5kaWRhdGVQYWlyRXZlbnQoCisgICAgY29uc3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZp
ZyYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1l
c3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOworCisgIEVYUEVDVF9FUShv
cmlnaW5hbF9ldmVudC50eXBlKCksIGxvZ2dlZF9ldmVudC50eXBlKTsKKyAgRVhQRUNUX0VRKG9y
aWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2lkKCksIGxvZ2dlZF9ldmVudC5jYW5kaWRhdGVf
cGFpcl9pZCk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNj
KCkubG9jYWxfY2FuZGlkYXRlX3R5cGUsCisgICAgICAgICAgICBsb2dnZWRfZXZlbnQubG9jYWxf
Y2FuZGlkYXRlX3R5cGUpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3Bh
aXJfZGVzYygpLmxvY2FsX3JlbGF5X3Byb3RvY29sLAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50
LmxvY2FsX3JlbGF5X3Byb3RvY29sKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNhbmRp
ZGF0ZV9wYWlyX2Rlc2MoKS5sb2NhbF9uZXR3b3JrX3R5cGUsCisgICAgICAgICAgICBsb2dnZWRf
ZXZlbnQubG9jYWxfbmV0d29ya190eXBlKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNh
bmRpZGF0ZV9wYWlyX2Rlc2MoKS5sb2NhbF9hZGRyZXNzX2ZhbWlseSwKKyAgICAgICAgICAgIGxv
Z2dlZF9ldmVudC5sb2NhbF9hZGRyZXNzX2ZhbWlseSk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9l
dmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjKCkucmVtb3RlX2NhbmRpZGF0ZV90eXBlLAorICAgICAg
ICAgICAgbG9nZ2VkX2V2ZW50LnJlbW90ZV9jYW5kaWRhdGVfdHlwZSk7CisgIEVYUEVDVF9FUShv
cmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjKCkucmVtb3RlX2FkZHJlc3NfZmFtaWx5
LAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LnJlbW90ZV9hZGRyZXNzX2ZhbWlseSk7CisgIEVY
UEVDVF9FUShvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjKCkuY2FuZGlkYXRlX3Bh
aXJfcHJvdG9jb2wsCisgICAgICAgICAgICBsb2dnZWRfZXZlbnQuY2FuZGlkYXRlX3BhaXJfcHJv
dG9jb2wpOworfQorCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0
ZVBhaXJFdmVudCgKICAgICBjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXImIG9yaWdpbmFs
X2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCYgbG9nZ2VkX2V2
ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVu
dC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAob3JpZ2luYWxfZXZl
bnQudHlwZV8gIT0gbG9nZ2VkX2V2ZW50LnR5cGUpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAo
b3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWRfICE9IGxvZ2dlZF9ldmVudC5jYW5kaWRh
dGVfcGFpcl9pZCkKLSAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgTG9nZ2VkSWNlQ2FuZGlk
YXRlUGFpckV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFs
X2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CiAKLSAg
cmV0dXJuIHRydWU7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50eXBlKCksIGxvZ2dlZF9l
dmVudC50eXBlKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2lk
KCksIGxvZ2dlZF9ldmVudC5jYW5kaWRhdGVfcGFpcl9pZCk7CiB9CiAKLWJvb2wgVmVyaWZ5TG9n
Z2VkUnRwSGVhZGVyKGNvbnN0IFJ0cFBhY2tldCYgb3JpZ2luYWxfaGVhZGVyLAordm9pZCBWZXJp
ZnlMb2dnZWRSdHBIZWFkZXIoY29uc3QgUnRwUGFja2V0JiBvcmlnaW5hbF9oZWFkZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSVFBIZWFkZXImIGxvZ2dlZF9oZWFkZXIpIHsK
ICAgLy8gU3RhbmRhcmQgUlRQIGhlYWRlci4KLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5NYXJrZXIo
KSAhPSBsb2dnZWRfaGVhZGVyLm1hcmtlckJpdCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChv
cmlnaW5hbF9oZWFkZXIuUGF5bG9hZFR5cGUoKSAhPSBsb2dnZWRfaGVhZGVyLnBheWxvYWRUeXBl
KQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5TZXF1ZW5jZU51bWJl
cigpICE9IGxvZ2dlZF9oZWFkZXIuc2VxdWVuY2VOdW1iZXIpCi0gICAgcmV0dXJuIGZhbHNlOwot
ICBpZiAob3JpZ2luYWxfaGVhZGVyLlRpbWVzdGFtcCgpICE9IGxvZ2dlZF9oZWFkZXIudGltZXN0
YW1wKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5Tc3JjKCkgIT0g
bG9nZ2VkX2hlYWRlci5zc3JjKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2hl
YWRlci5Dc3JjcygpLnNpemUoKSAhPSBsb2dnZWRfaGVhZGVyLm51bUNTUkNzKQotICAgIHJldHVy
biBmYWxzZTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb2dnZWRfaGVhZGVyLm51bUNTUkNz
OyBpKyspIHsKLSAgICBpZiAob3JpZ2luYWxfaGVhZGVyLkNzcmNzKClbaV0gIT0gbG9nZ2VkX2hl
YWRlci5hcnJPZkNTUkNzW2ldKQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9CisgIEVYUEVDVF9F
UShvcmlnaW5hbF9oZWFkZXIuTWFya2VyKCksIGxvZ2dlZF9oZWFkZXIubWFya2VyQml0KTsKKyAg
RVhQRUNUX0VRKG9yaWdpbmFsX2hlYWRlci5QYXlsb2FkVHlwZSgpLCBsb2dnZWRfaGVhZGVyLnBh
eWxvYWRUeXBlKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2hlYWRlci5TZXF1ZW5jZU51bWJlcigp
LCBsb2dnZWRfaGVhZGVyLnNlcXVlbmNlTnVtYmVyKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2hl
YWRlci5UaW1lc3RhbXAoKSwgbG9nZ2VkX2hlYWRlci50aW1lc3RhbXApOworICBFWFBFQ1RfRVEo
b3JpZ2luYWxfaGVhZGVyLlNzcmMoKSwgbG9nZ2VkX2hlYWRlci5zc3JjKTsKIAotICBpZiAob3Jp
Z2luYWxfaGVhZGVyLmhlYWRlcnNfc2l6ZSgpICE9IGxvZ2dlZF9oZWFkZXIuaGVhZGVyTGVuZ3Ro
KQotICAgIHJldHVybiBmYWxzZTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2hlYWRlci5oZWFkZXJz
X3NpemUoKSwgbG9nZ2VkX2hlYWRlci5oZWFkZXJMZW5ndGgpOwogCiAgIC8vIFRyYW5zbWlzc2lv
bk9mZnNldCBoZWFkZXIgZXh0ZW5zaW9uLgotICBpZiAob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVu
c2lvbjxUcmFuc21pc3Npb25PZmZzZXQ+KCkgIT0KLSAgICAgIGxvZ2dlZF9oZWFkZXIuZXh0ZW5z
aW9uLmhhc1RyYW5zbWlzc2lvblRpbWVPZmZzZXQpCi0gICAgcmV0dXJuIGZhbHNlOworICBBU1NF
UlRfRVEob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxUcmFuc21pc3Npb25PZmZzZXQ+KCks
CisgICAgICAgICAgICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNUcmFuc21pc3Npb25UaW1l
T2Zmc2V0KTsKICAgaWYgKGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zbWlzc2lvblRp
bWVPZmZzZXQpIHsKICAgICBpbnQzMl90IG9mZnNldDsKLSAgICBvcmlnaW5hbF9oZWFkZXIuR2V0
RXh0ZW5zaW9uPFRyYW5zbWlzc2lvbk9mZnNldD4oJm9mZnNldCk7Ci0gICAgaWYgKG9mZnNldCAh
PSBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi50cmFuc21pc3Npb25UaW1lT2Zmc2V0KQotICAgICAg
cmV0dXJuIGZhbHNlOworICAgIEFTU0VSVF9UUlVFKG9yaWdpbmFsX2hlYWRlci5HZXRFeHRlbnNp
b248VHJhbnNtaXNzaW9uT2Zmc2V0Pigmb2Zmc2V0KSk7CisgICAgRVhQRUNUX0VRKG9mZnNldCwg
bG9nZ2VkX2hlYWRlci5leHRlbnNpb24udHJhbnNtaXNzaW9uVGltZU9mZnNldCk7CiAgIH0KIAog
ICAvLyBBYnNvbHV0ZVNlbmRUaW1lIGhlYWRlciBleHRlbnNpb24uCi0gIGlmIChvcmlnaW5hbF9o
ZWFkZXIuSGFzRXh0ZW5zaW9uPEFic29sdXRlU2VuZFRpbWU+KCkgIT0KLSAgICAgIGxvZ2dlZF9o
ZWFkZXIuZXh0ZW5zaW9uLmhhc0Fic29sdXRlU2VuZFRpbWUpCi0gICAgcmV0dXJuIGZhbHNlOwor
ICBBU1NFUlRfRVEob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxBYnNvbHV0ZVNlbmRUaW1l
PigpLAorICAgICAgICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5k
VGltZSk7CiAgIGlmIChsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0ZVNlbmRUaW1l
KSB7CiAgICAgdWludDMyX3Qgc2VuZHRpbWU7Ci0gICAgb3JpZ2luYWxfaGVhZGVyLkdldEV4dGVu
c2lvbjxBYnNvbHV0ZVNlbmRUaW1lPigmc2VuZHRpbWUpOwotICAgIGlmIChzZW5kdGltZSAhPSBs
b2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1lKQotICAgICAgcmV0dXJuIGZh
bHNlOworICAgIEFTU0VSVF9UUlVFKG9yaWdpbmFsX2hlYWRlci5HZXRFeHRlbnNpb248QWJzb2x1
dGVTZW5kVGltZT4oJnNlbmR0aW1lKSk7CisgICAgRVhQRUNUX0VRKHNlbmR0aW1lLCBsb2dnZWRf
aGVhZGVyLmV4dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1lKTsKICAgfQogCiAgIC8vIFRyYW5zcG9y
dFNlcXVlbmNlTnVtYmVyIGhlYWRlciBleHRlbnNpb24uCi0gIGlmIChvcmlnaW5hbF9oZWFkZXIu
SGFzRXh0ZW5zaW9uPFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyPigpICE9Ci0gICAgICBsb2dnZWRf
aGVhZGVyLmV4dGVuc2lvbi5oYXNUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcikKLSAgICByZXR1cm4g
ZmFsc2U7CisgIEFTU0VSVF9FUShvcmlnaW5hbF9oZWFkZXIuSGFzRXh0ZW5zaW9uPFRyYW5zcG9y
dFNlcXVlbmNlTnVtYmVyPigpLAorICAgICAgICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24u
aGFzVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpOwogICBpZiAobG9nZ2VkX2hlYWRlci5leHRlbnNp
b24uaGFzVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKICAgICB1aW50MTZfdCBzZXFudW07Ci0g
ICAgb3JpZ2luYWxfaGVhZGVyLkdldEV4dGVuc2lvbjxUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcj4o
JnNlcW51bSk7Ci0gICAgaWYgKHNlcW51bSAhPSBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi50cmFu
c3BvcnRTZXF1ZW5jZU51bWJlcikKLSAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlRfVFJV
RShvcmlnaW5hbF9oZWFkZXIuR2V0RXh0ZW5zaW9uPFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyPigm
c2VxbnVtKSk7CisgICAgRVhQRUNUX0VRKHNlcW51bSwgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24u
dHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpOwogICB9CiAKICAgLy8gQXVkaW9MZXZlbCBoZWFkZXIg
ZXh0ZW5zaW9uLgotICBpZiAob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxBdWRpb0xldmVs
PigpICE9Ci0gICAgICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNBdWRpb0xldmVsKQotICAg
IHJldHVybiBmYWxzZTsKKyAgQVNTRVJUX0VRKG9yaWdpbmFsX2hlYWRlci5IYXNFeHRlbnNpb248
QXVkaW9MZXZlbD4oKSwKKyAgICAgICAgICAgIGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc0F1
ZGlvTGV2ZWwpOwogICBpZiAobG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzQXVkaW9MZXZlbCkg
ewogICAgIGJvb2wgdm9pY2VfYWN0aXZpdHk7CiAgICAgdWludDhfdCBhdWRpb19sZXZlbDsKLSAg
ICBvcmlnaW5hbF9oZWFkZXIuR2V0RXh0ZW5zaW9uPEF1ZGlvTGV2ZWw+KCZ2b2ljZV9hY3Rpdml0
eSwgJmF1ZGlvX2xldmVsKTsKLSAgICBpZiAodm9pY2VfYWN0aXZpdHkgIT0gbG9nZ2VkX2hlYWRl
ci5leHRlbnNpb24udm9pY2VBY3Rpdml0eSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
YXVkaW9fbGV2ZWwgIT0gbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uYXVkaW9MZXZlbCkKLSAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlRfVFJVRShvcmlnaW5hbF9oZWFkZXIuR2V0RXh0ZW5z
aW9uPEF1ZGlvTGV2ZWw+KCZ2b2ljZV9hY3Rpdml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhdWRpb19sZXZlbCkpOworICAgIEVY
UEVDVF9FUSh2b2ljZV9hY3Rpdml0eSwgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24udm9pY2VBY3Rp
dml0eSk7CisgICAgRVhQRUNUX0VRKGF1ZGlvX2xldmVsLCBsb2dnZWRfaGVhZGVyLmV4dGVuc2lv
bi5hdWRpb0xldmVsKTsKICAgfQogCiAgIC8vIFZpZGVvT3JpZW50YXRpb24gaGVhZGVyIGV4dGVu
c2lvbi4KLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5IYXNFeHRlbnNpb248VmlkZW9PcmllbnRhdGlv
bj4oKSAhPQotICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzVmlkZW9Sb3RhdGlvbikK
LSAgICByZXR1cm4gZmFsc2U7CisgIEFTU0VSVF9FUShvcmlnaW5hbF9oZWFkZXIuSGFzRXh0ZW5z
aW9uPFZpZGVvT3JpZW50YXRpb24+KCksCisgICAgICAgICAgICBsb2dnZWRfaGVhZGVyLmV4dGVu
c2lvbi5oYXNWaWRlb1JvdGF0aW9uKTsKICAgaWYgKGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhh
c1ZpZGVvUm90YXRpb24pIHsKICAgICB1aW50OF90IHJvdGF0aW9uOwotICAgIG9yaWdpbmFsX2hl
YWRlci5HZXRFeHRlbnNpb248VmlkZW9PcmllbnRhdGlvbj4oJnJvdGF0aW9uKTsKLSAgICBpZiAo
Q29udmVydENWT0J5dGVUb1ZpZGVvUm90YXRpb24ocm90YXRpb24pICE9Ci0gICAgICAgIGxvZ2dl
ZF9oZWFkZXIuZXh0ZW5zaW9uLnZpZGVvUm90YXRpb24pCi0gICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgQVNTRVJUX1RSVUUob3JpZ2luYWxfaGVhZGVyLkdldEV4dGVuc2lvbjxWaWRlb09yaWVudGF0
aW9uPigmcm90YXRpb24pKTsKKyAgICBFWFBFQ1RfRVEoQ29udmVydENWT0J5dGVUb1ZpZGVvUm90
YXRpb24ocm90YXRpb24pLAorICAgICAgICAgICAgICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi52
aWRlb1JvdGF0aW9uKTsKICAgfQotCi0gIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZlcmlmeUxv
Z2dlZFJ0cFBhY2tldEluY29taW5nKAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRS
dHBQYWNrZXRJbmNvbWluZygKICAgICBjb25zdCBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nJiBv
cmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyYgbG9nZ2Vk
X2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9l
dmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAob3JpZ2luYWxf
ZXZlbnQuaGVhZGVyXy5oZWFkZXJzX3NpemUoKSAhPSBsb2dnZWRfZXZlbnQucnRwLmhlYWRlcl9s
ZW5ndGgpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmIChvcmlnaW5hbF9ldmVudC5wYWNrZXRf
bGVuZ3RoXyAhPSBsb2dnZWRfZXZlbnQucnRwLnRvdGFsX2xlbmd0aCkKLSAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgaWYgKChvcmlnaW5hbF9ldmVudC5oZWFkZXJfLmRhdGEoKVswXSAmIDB4MjApICE9
IDAgJiYgIC8vIGhhcyBwYWRkaW5nCi0gICAgICBvcmlnaW5hbF9ldmVudC5wYWNrZXRfbGVuZ3Ro
XyAtIG9yaWdpbmFsX2V2ZW50LmhlYWRlcl8uaGVhZGVyc19zaXplKCkgIT0KLSAgICAgICAgICBs
b2dnZWRfZXZlbnQucnRwLmhlYWRlci5wYWRkaW5nTGVuZ3RoKSB7Ci0gICAgLy8gQ3VycmVudGx5
LCBSVEMgZXZlbnRsb2cgZW5jb2Rlci1wYXJzZXIgY2FuIG9ubHkgbWFpbnRhaW4gcGFkZGluZyBs
ZW5ndGgKLSAgICAvLyBpZiBwYWNrZXQgaXMgZnVsbCBwYWRkaW5nLgotICAgIC8vIFRPRE8od2Vi
cnRjOjk3MzApOiBDaGFuZ2UgdGhlIGNvbmRpdGlvbiB0byBzb21ldGhpbmcgbGlrZQotICAgIC8v
IG9yaWdpbmFsX2V2ZW50LnBhZGRpbmdfbGVuZ3RoXyAhPSBsb2dnZWRfZXZlbnQucnRwLmhlYWRl
ci5wYWRkaW5nTGVuZ3RoLgotICAgIHJldHVybiBmYWxzZTsKLSAgfQorICAgIGNvbnN0IExvZ2dl
ZFJ0cFBhY2tldEluY29taW5nJiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9y
aWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7
CisKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmhlYWRlcigpLmhlYWRlcnNfc2l6ZSgpLAor
ICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXJfbGVuZ3RoKTsKKworICBFWFBFQ1Rf
RVEob3JpZ2luYWxfZXZlbnQucGFja2V0X2xlbmd0aCgpLCBsb2dnZWRfZXZlbnQucnRwLnRvdGFs
X2xlbmd0aCk7CiAKLSAgaWYgKCFWZXJpZnlMb2dnZWRSdHBIZWFkZXIob3JpZ2luYWxfZXZlbnQu
aGVhZGVyXywgbG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXIpKQotICAgIHJldHVybiBmYWxzZTsKKyAg
Ly8gQ3VycmVudGx5LCBSVEMgZXZlbnRsb2cgZW5jb2Rlci1wYXJzZXIgY2FuIG9ubHkgbWFpbnRh
aW4gcGFkZGluZyBsZW5ndGgKKyAgLy8gaWYgcGFja2V0IGlzIGZ1bGwgcGFkZGluZy4KKyAgRVhQ
RUNUX0VRKG9yaWdpbmFsX2V2ZW50LnBhZGRpbmdfbGVuZ3RoKCksCisgICAgICAgICAgICBsb2dn
ZWRfZXZlbnQucnRwLmhlYWRlci5wYWRkaW5nTGVuZ3RoKTsKIAotICByZXR1cm4gdHJ1ZTsKKyAg
VmVyaWZ5TG9nZ2VkUnRwSGVhZGVyKG9yaWdpbmFsX2V2ZW50LmhlYWRlcigpLCBsb2dnZWRfZXZl
bnQucnRwLmhlYWRlcik7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0T3V0Z29pbmco
Cit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZFJ0cFBhY2tldE91dGdvaW5nKAogICAg
IGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNv
bnN0IExvZ2dlZFJ0cFBhY2tldE91dGdvaW5nJiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdp
bmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3VzKCkpCi0g
ICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmIChvcmlnaW5hbF9ldmVudC5oZWFkZXJfLmhlYWRlcnNf
c2l6ZSgpICE9IGxvZ2dlZF9ldmVudC5ydHAuaGVhZGVyX2xlbmd0aCkKLSAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnBhY2tldF9sZW5ndGhfICE9IGxvZ2dlZF9ldmVu
dC5ydHAudG90YWxfbGVuZ3RoKQotICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAoKG9yaWdpbmFs
X2V2ZW50LmhlYWRlcl8uZGF0YSgpWzBdICYgMHgyMCkgIT0gMCAmJiAgLy8gaGFzIHBhZGRpbmcK
LSAgICAgIG9yaWdpbmFsX2V2ZW50LnBhY2tldF9sZW5ndGhfIC0gb3JpZ2luYWxfZXZlbnQuaGVh
ZGVyXy5oZWFkZXJzX3NpemUoKSAhPQotICAgICAgICAgIGxvZ2dlZF9ldmVudC5ydHAuaGVhZGVy
LnBhZGRpbmdMZW5ndGgpIHsKLSAgICAvLyBDdXJyZW50bHksIFJUQyBldmVudGxvZyBlbmNvZGVy
LXBhcnNlciBjYW4gb25seSBtYWludGFpbiBwYWRkaW5nIGxlbmd0aAotICAgIC8vIGlmIHBhY2tl
dCBpcyBmdWxsIHBhZGRpbmcuCi0gICAgLy8gVE9ETyh3ZWJydGM6OTczMCk6IENoYW5nZSB0aGUg
Y29uZGl0aW9uIHRvIHNvbWV0aGluZyBsaWtlCi0gICAgLy8gb3JpZ2luYWxfZXZlbnQucGFkZGlu
Z19sZW5ndGhfICE9IGxvZ2dlZF9ldmVudC5ydHAuaGVhZGVyLnBhZGRpbmdMZW5ndGguCi0gICAg
cmV0dXJuIGZhbHNlOwotICB9CisgICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcmIGxv
Z2dlZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1w
X21zKCksIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKworICBFWFBFQ1RfRVEob3JpZ2lu
YWxfZXZlbnQuaGVhZGVyKCkuaGVhZGVyc19zaXplKCksCisgICAgICAgICAgICBsb2dnZWRfZXZl
bnQucnRwLmhlYWRlcl9sZW5ndGgpOworCisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5wYWNr
ZXRfbGVuZ3RoKCksIGxvZ2dlZF9ldmVudC5ydHAudG90YWxfbGVuZ3RoKTsKKworICAvLyBDdXJy
ZW50bHksIFJUQyBldmVudGxvZyBlbmNvZGVyLXBhcnNlciBjYW4gb25seSBtYWludGFpbiBwYWRk
aW5nIGxlbmd0aAorICAvLyBpZiBwYWNrZXQgaXMgZnVsbCBwYWRkaW5nLgorICBFWFBFQ1RfRVEo
b3JpZ2luYWxfZXZlbnQucGFkZGluZ19sZW5ndGgoKSwKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVu
dC5ydHAuaGVhZGVyLnBhZGRpbmdMZW5ndGgpOwogCiAgIC8vIFRPRE8odGVyZWxpdXMpOiBQcm9i
ZSBjbHVzdGVyIElEIGlzbid0IHBhcnNlZCwgdXNlZCBvciB0ZXN0ZWQuIFVubGVzcwogICAvLyBz
b21lb25lIGhhcyBhIHN0cm9uZyByZWFzb24gdG8ga2VlcCBpdCwgaXQnbGwgYmUgcmVtb3ZlZC4K
IAotICBpZiAoIVZlcmlmeUxvZ2dlZFJ0cEhlYWRlcihvcmlnaW5hbF9ldmVudC5oZWFkZXJfLCBs
b2dnZWRfZXZlbnQucnRwLmhlYWRlcikpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIHJldHVybiB0
cnVlOworICBWZXJpZnlMb2dnZWRSdHBIZWFkZXIob3JpZ2luYWxfZXZlbnQuaGVhZGVyKCksIGxv
Z2dlZF9ldmVudC5ydHAuaGVhZGVyKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRSdGNwUGFja2V0
SW5jb21pbmcoCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZFJ0Y3BQYWNrZXRJbmNv
bWluZygKICAgICBjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZyYgb3JpZ2luYWxfZXZl
bnQsCi0gICAgY29uc3QgTG9nZ2VkUnRjcFBhY2tldEluY29taW5nJiBsb2dnZWRfZXZlbnQpIHsK
LSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190
aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmIChvcmlnaW5hbF9ldmVudC5wYWNr
ZXRfLnNpemUoKSAhPSBsb2dnZWRfZXZlbnQucnRjcC5yYXdfZGF0YS5zaXplKCkpCi0gICAgcmV0
dXJuIGZhbHNlOwotICBpZiAobWVtY21wKG9yaWdpbmFsX2V2ZW50LnBhY2tldF8uZGF0YSgpLCBs
b2dnZWRfZXZlbnQucnRjcC5yYXdfZGF0YS5kYXRhKCksCi0gICAgICAgICAgICAgb3JpZ2luYWxf
ZXZlbnQucGFja2V0Xy5zaXplKCkpICE9IDApIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAg
cmV0dXJuIHRydWU7CisgICAgY29uc3QgTG9nZ2VkUnRjcFBhY2tldEluY29taW5nJiBsb2dnZWRf
ZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygp
LCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CisKKyAgQVNTRVJUX0VRKG9yaWdpbmFsX2V2
ZW50LnBhY2tldCgpLnNpemUoKSwgbG9nZ2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEuc2l6ZSgpKTsK
KyAgRVhQRUNUX0VRKAorICAgICAgbWVtY21wKG9yaWdpbmFsX2V2ZW50LnBhY2tldCgpLmRhdGEo
KSwgbG9nZ2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEuZGF0YSgpLAorICAgICAgICAgICAgIG9yaWdp
bmFsX2V2ZW50LnBhY2tldCgpLnNpemUoKSksCisgICAgICAwKTsKIH0KIAotYm9vbCBWZXJpZnlM
b2dnZWRSdGNwUGFja2V0T3V0Z29pbmcoCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dl
ZFJ0Y3BQYWNrZXRPdXRnb2luZygKICAgICBjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2lu
ZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkUnRjcFBhY2tldE91dGdvaW5nJiBs
b2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9n
Z2VkX2V2ZW50LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmIChvcmln
aW5hbF9ldmVudC5wYWNrZXRfLnNpemUoKSAhPSBsb2dnZWRfZXZlbnQucnRjcC5yYXdfZGF0YS5z
aXplKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAobWVtY21wKG9yaWdpbmFsX2V2ZW50LnBh
Y2tldF8uZGF0YSgpLCBsb2dnZWRfZXZlbnQucnRjcC5yYXdfZGF0YS5kYXRhKCksCi0gICAgICAg
ICAgICAgb3JpZ2luYWxfZXZlbnQucGFja2V0Xy5zaXplKCkpICE9IDApIHsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgY29uc3QgTG9nZ2VkUnRjcFBhY2tldE91dGdvaW5nJiBsb2dnZWRfZXZlbnQp
IGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dn
ZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CisKKyAgQVNTRVJUX0VRKG9yaWdpbmFsX2V2ZW50LnBh
Y2tldCgpLnNpemUoKSwgbG9nZ2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEuc2l6ZSgpKTsKKyAgRVhQ
RUNUX0VRKAorICAgICAgbWVtY21wKG9yaWdpbmFsX2V2ZW50LnBhY2tldCgpLmRhdGEoKSwgbG9n
Z2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEuZGF0YSgpLAorICAgICAgICAgICAgIG9yaWdpbmFsX2V2
ZW50LnBhY2tldCgpLnNpemUoKSksCisgICAgICAwKTsKK30KKwordm9pZCBFdmVudFZlcmlmaWVy
OjpWZXJpZnlMb2dnZWRTdGFydEV2ZW50KAorICAgIGludDY0X3Qgc3RhcnRfdGltZV91cywKKyAg
ICBpbnQ2NF90IHV0Y19zdGFydF90aW1lX3VzLAorICAgIGNvbnN0IExvZ2dlZFN0YXJ0RXZlbnQm
IGxvZ2dlZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEoc3RhcnRfdGltZV91cyAvIDEwMDAs
IGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKyAgaWYgKGVuY29kaW5nX3R5cGVfID09IFJ0
Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6Ok5ld0Zvcm1hdCkgeworICAgIEVYUEVDVF9FUSh1dGNf
c3RhcnRfdGltZV91cyAvIDEwMDAsIGxvZ2dlZF9ldmVudC51dGNfc3RhcnRfdGltZV9tcyk7CiAg
IH0KLSAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkU3RhcnRFdmVudChpbnQ2
NF90IHN0YXJ0X3RpbWVfdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9n
Z2VkU3RhcnRFdmVudCYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChzdGFydF90aW1lX3VzICE9IGxv
Z2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRy
dWU7Cit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZFN0b3BFdmVudCgKKyAgICBpbnQ2
NF90IHN0b3BfdGltZV91cywKKyAgICBjb25zdCBMb2dnZWRTdG9wRXZlbnQmIGxvZ2dlZF9ldmVu
dCkgY29uc3QgeworICBFWFBFQ1RfRVEoc3RvcF90aW1lX3VzIC8gMTAwMCwgbG9nZ2VkX2V2ZW50
LmxvZ190aW1lX21zKCkpOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZFN0b3BFdmVudChpbnQ2NF90
IHN0b3BfdGltZV91cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvZ2dlZFN0
b3BFdmVudCYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChzdG9wX3RpbWVfdXMgIT0gbG9nZ2VkX2V2
ZW50LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKK3Zv
aWQgVmVyaWZ5TG9nZ2VkU3RyZWFtQ29uZmlnKGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnJiBv
cmlnaW5hbF9jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGNs
b2c6OlN0cmVhbUNvbmZpZyYgbG9nZ2VkX2NvbmZpZykgeworICBFWFBFQ1RfRVEob3JpZ2luYWxf
Y29uZmlnLmxvY2FsX3NzcmMsIGxvZ2dlZF9jb25maWcubG9jYWxfc3NyYyk7CisgIEVYUEVDVF9F
UShvcmlnaW5hbF9jb25maWcucmVtb3RlX3NzcmMsIGxvZ2dlZF9jb25maWcucmVtb3RlX3NzcmMp
OworICBFWFBFQ1RfRVEob3JpZ2luYWxfY29uZmlnLnJ0eF9zc3JjLCBsb2dnZWRfY29uZmlnLnJ0
eF9zc3JjKTsKKworICBFWFBFQ1RfRVEob3JpZ2luYWxfY29uZmlnLnJ0cF9leHRlbnNpb25zLnNp
emUoKSwKKyAgICAgICAgICAgIGxvZ2dlZF9jb25maWcucnRwX2V4dGVuc2lvbnMuc2l6ZSgpKTsK
KyAgc2l6ZV90IHJlY29nbml6ZWRfZXh0ZW5zaW9ucyA9IDA7CisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwga01heE51bUV4dGVuc2lvbnM7IGkrKykgeworICAgIGF1dG8gb3JpZ2luYWxfaWQgPQor
ICAgICAgICBHZXRFeHRlbnNpb25JZChvcmlnaW5hbF9jb25maWcucnRwX2V4dGVuc2lvbnMsIGtF
eHRlbnNpb25zW2ldLm5hbWUpOworICAgIGF1dG8gbG9nZ2VkX2lkID0KKyAgICAgICAgR2V0RXh0
ZW5zaW9uSWQobG9nZ2VkX2NvbmZpZy5ydHBfZXh0ZW5zaW9ucywga0V4dGVuc2lvbnNbaV0ubmFt
ZSk7CisgICAgRVhQRUNUX0VRKG9yaWdpbmFsX2lkLCBsb2dnZWRfaWQpCisgICAgICAgIDw8ICJJ
RHMgZm9yICIgPDwga0V4dGVuc2lvbnNbaV0ubmFtZSA8PCAiIGRvbid0IG1hdGNoLiBPcmlnaW5h
bCBJRCAiCisgICAgICAgIDw8IG9yaWdpbmFsX2lkLnZhbHVlX29yKC0xKSA8PCAiLiBQYXJzZWQg
SUQgIiA8PCBsb2dnZWRfaWQudmFsdWVfb3IoLTEpCisgICAgICAgIDw8ICIuIjsKKyAgICBpZiAo
b3JpZ2luYWxfaWQpIHsKKyAgICAgIHJlY29nbml6ZWRfZXh0ZW5zaW9ucysrOworICAgIH0KKyAg
fQorICBFWFBFQ1RfRVEocmVjb2duaXplZF9leHRlbnNpb25zLCBvcmlnaW5hbF9jb25maWcucnRw
X2V4dGVuc2lvbnMuc2l6ZSgpKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRBdWRpb1JlY3ZDb25m
aWcoCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZEF1ZGlvUmVjdkNvbmZpZygKICAg
ICBjb25zdCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQs
Ci0gICAgY29uc3QgTG9nZ2VkQXVkaW9SZWN2Q29uZmlnJiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYg
KG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3Vz
KCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoKm9yaWdpbmFsX2V2ZW50LmNvbmZpZ18gIT0g
bG9nZ2VkX2V2ZW50LmNvbmZpZykKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVlOwor
ICAgIGNvbnN0IExvZ2dlZEF1ZGlvUmVjdkNvbmZpZyYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7Cisg
IEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50Lmxv
Z190aW1lX21zKCkpOworICBWZXJpZnlMb2dnZWRTdHJlYW1Db25maWcob3JpZ2luYWxfZXZlbnQu
Y29uZmlnKCksIGxvZ2dlZF9ldmVudC5jb25maWcpOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZEF1
ZGlvU2VuZENvbmZpZygKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkQXVkaW9TZW5k
Q29uZmlnKAogICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnJiBvcmlnaW5h
bF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRBdWRpb1NlbmRDb25maWcmIGxvZ2dlZF9ldmVudCkg
ewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRfZXZlbnQubG9n
X3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmICgqb3JpZ2luYWxfZXZlbnQuY29u
ZmlnXyAhPSBsb2dnZWRfZXZlbnQuY29uZmlnKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJu
IHRydWU7CisgICAgY29uc3QgTG9nZ2VkQXVkaW9TZW5kQ29uZmlnJiBsb2dnZWRfZXZlbnQpIGNv
bnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRf
ZXZlbnQubG9nX3RpbWVfbXMoKSk7CisgIFZlcmlmeUxvZ2dlZFN0cmVhbUNvbmZpZyhvcmlnaW5h
bF9ldmVudC5jb25maWcoKSwgbG9nZ2VkX2V2ZW50LmNvbmZpZyk7CiB9CiAKLWJvb2wgVmVyaWZ5
TG9nZ2VkVmlkZW9SZWN2Q29uZmlnKAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRW
aWRlb1JlY3ZDb25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25m
aWcmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZFZpZGVvUmVjdkNvbmZpZyYgbG9n
Z2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dl
ZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKCpvcmlnaW5h
bF9ldmVudC5jb25maWdfICE9IGxvZ2dlZF9ldmVudC5jb25maWcpCi0gICAgcmV0dXJuIGZhbHNl
OwotICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBMb2dnZWRWaWRlb1JlY3ZDb25maWcmIGxvZ2dl
ZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX21z
KCksIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKyAgVmVyaWZ5TG9nZ2VkU3RyZWFtQ29u
ZmlnKG9yaWdpbmFsX2V2ZW50LmNvbmZpZygpLCBsb2dnZWRfZXZlbnQuY29uZmlnKTsKIH0KIAot
Ym9vbCBWZXJpZnlMb2dnZWRWaWRlb1NlbmRDb25maWcoCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZl
cmlmeUxvZ2dlZFZpZGVvU2VuZENvbmZpZygKICAgICBjb25zdCBSdGNFdmVudFZpZGVvU2VuZFN0
cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkVmlkZW9TZW5kQ29u
ZmlnJiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18g
IT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOworICAgIGNv
bnN0IExvZ2dlZFZpZGVvU2VuZENvbmZpZyYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVD
VF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1l
X21zKCkpOwogICAvLyBUT0RPKHRlcmVsaXVzKTogSW4gdGhlIHBhc3QsIHdlIGFsbG93ZWQgc3Rv
cmluZyBtdWx0aXBsZSBSdGNTdHJlYW1Db25maWdzCiAgIC8vIGluIHRoZSBzYW1lIFJ0Y0V2ZW50
VmlkZW9TZW5kU3RyZWFtQ29uZmlnLiBMb29rIGludG8gd2hldGhlciB3ZSBzaG91bGQgZHJvcAog
ICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBpbiB0aGUgcGFyc2VyLgotICBpZiAobG9nZ2Vk
X2V2ZW50LmNvbmZpZ3Muc2l6ZSgpICE9IDEpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoKm9y
aWdpbmFsX2V2ZW50LmNvbmZpZ18gIT0gbG9nZ2VkX2V2ZW50LmNvbmZpZ3NbMF0pCi0gICAgcmV0
dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKKyAgQVNTRVJUX0VRKGxvZ2dlZF9ldmVudC5jb25m
aWdzLnNpemUoKSwgMXUpOworICBWZXJpZnlMb2dnZWRTdHJlYW1Db25maWcob3JpZ2luYWxfZXZl
bnQuY29uZmlnKCksIGxvZ2dlZF9ldmVudC5jb25maWdzWzBdKTsKIH0KIAogfSAgLy8gbmFtZXNw
YWNlIHRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0X2hlbHBl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3RfaGVscGVyLmgKaW5kZXggZjRkMTg3
NjUyODdiZTRkYzE1NjYzM2VjM2JiNDhkM2M4OTI3ZDUyMi4uODE3NjBiNzU1NTM2MDhhZmZhYWFl
MzYwZDgyYWUwYjkwOGYwZThiYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5p
dHRlc3RfaGVscGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3RfaGVscGVy
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF92aWRlb19yZWNlaXZlX3N0cmVhbV9jb25maWcuaCIKICNpbmNsdWRlICJs
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF92aWRlb19zZW5kX3N0cmVhbV9j
b25maWcuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19w
YXJzZXJfbmV3LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19zdHJlYW1f
Y29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
cmVjZWl2ZXJfcmVwb3J0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQvcmVwb3J0X2Jsb2NrLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9wYWNrZXQvc2VuZGVyX3JlcG9ydC5oIgpAQCAtNzAsMjEgKzcxLDMyIEBAIGNsYXNz
IEV2ZW50R2VuZXJhdG9yIHsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdGNwUGFja2V0
T3V0Z29pbmc+IE5ld1J0Y3BQYWNrZXRPdXRnb2luZygpOwogCisgIC8vIHxhbGxfY29uZmlndXJl
ZF9leHRzfCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIFJUUCBwYWNrZXQgZXhoaWJpdHMgYWxsCisg
IC8vIGNvbmZpZ3VyZWQgZXh0ZW5zaW9ucywgb3IgYSByYW5kb20gc3Vic2V0IHRoZXJlb2YuCiAg
IHZvaWQgUmFuZG9taXplUnRwUGFja2V0KHNpemVfdCBwYXlsb2FkX3NpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBwYWRkaW5nX3NpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IHNzcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJ0
cEhlYWRlckV4dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgUnRwUGFja2V0KiBydHBfcGFja2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
UnRwUGFja2V0KiBydHBfcGFja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFs
bF9jb25maWd1cmVkX2V4dHMpOwogCisgIC8vIHxhbGxfY29uZmlndXJlZF9leHRzfCBkZXRlcm1p
bmVzIHdoZXRoZXIgdGhlIFJUUCBwYWNrZXQgZXhoaWJpdHMgYWxsCisgIC8vIGNvbmZpZ3VyZWQg
ZXh0ZW5zaW9ucywgb3IgYSByYW5kb20gc3Vic2V0IHRoZXJlb2YuCiAgIHN0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudFJ0cFBhY2tldEluY29taW5nPiBOZXdSdHBQYWNrZXRJbmNvbWluZygKICAgICAg
IHVpbnQzMl90IHNzcmMsCi0gICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVu
c2lvbl9tYXApOworICAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBleHRlbnNpb25f
bWFwLAorICAgICAgYm9vbCBhbGxfY29uZmlndXJlZF9leHRzID0gdHJ1ZSk7CiAKKyAgLy8gfGFs
bF9jb25maWd1cmVkX2V4dHN8IGRldGVybWluZXMgd2hldGhlciB0aGUgUlRQIHBhY2tldCBleGhp
Yml0cyBhbGwKKyAgLy8gY29uZmlndXJlZCBleHRlbnNpb25zLCBvciBhIHJhbmRvbSBzdWJzZXQg
dGhlcmVvZi4KICAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmc+IE5l
d1J0cFBhY2tldE91dGdvaW5nKAogICAgICAgdWludDMyX3Qgc3NyYywKLSAgICAgIGNvbnN0IFJ0
cEhlYWRlckV4dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCk7CisgICAgICBjb25zdCBSdHBIZWFk
ZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXAsCisgICAgICBib29sIGFsbF9jb25maWd1cmVk
X2V4dHMgPSB0cnVlKTsKIAotICBSdHBIZWFkZXJFeHRlbnNpb25NYXAgTmV3UnRwSGVhZGVyRXh0
ZW5zaW9uTWFwKCk7CisgIC8vIHxjb25maWd1cmVfYWxsfCBkZXRlcm1pbmVzIHdoZXRoZXIgYWxs
IHN1cHBvcnRlZCBleHRlbnNpb25zIGFyZSBjb25maWd1cmVkLAorICAvLyBvciBhIHJhbmRvbSBz
dWJzZXQuCisgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcCBOZXdSdHBIZWFkZXJFeHRlbnNpb25NYXAo
Ym9vbCBjb25maWd1cmVfYWxsID0gZmFsc2UpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVu
dEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZz4gTmV3QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKAog
ICAgICAgdWludDMyX3Qgc3NyYywKQEAgLTExMCw4MCArMTIyLDExMSBAQCBjbGFzcyBFdmVudEdl
bmVyYXRvciB7CiAgIFJhbmRvbSBwcm5nXzsKIH07CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkQWxyU3Rh
dGVFdmVudChjb25zdCBSdGNFdmVudEFsclN0YXRlJiBvcmlnaW5hbF9ldmVudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRBbHJTdGF0ZUV2ZW50JiBsb2dnZWRf
ZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZEF1ZGlvUGxheW91dEV2ZW50KGNvbnN0IFJ0Y0V2
ZW50QXVkaW9QbGF5b3V0JiBvcmlnaW5hbF9ldmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgTG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQmIGxvZ2dlZF9ldmVudCk7
Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50KAotICAgIGNv
bnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiYgb3JpZ2luYWxfZXZlbnQsCi0gICAg
Y29uc3QgTG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50JiBsb2dnZWRfZXZlbnQpOwot
Ci1ib29sIFZlcmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoCi0gICAgY29uc3QgUnRjRXZl
bnRCd2VVcGRhdGVEZWxheUJhc2VkJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRC
d2VEZWxheUJhc2VkVXBkYXRlJiBsb2dnZWRfZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZEJ3
ZUxvc3NCYXNlZFVwZGF0ZSgKLSAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCYg
b3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlJiBsb2dn
ZWRfZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVu
dCgKLSAgICBjb25zdCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQmIG9yaWdpbmFsX2V2ZW50
LAotICAgIGNvbnN0IExvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCYgbG9nZ2VkX2V2
ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCgKLSAgICBjb25z
dCBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZSYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3Qg
TG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5
TG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQoCi0gICAgY29uc3QgUnRjRXZlbnRQcm9iZVJlc3Vs
dFN1Y2Nlc3MmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZEJ3ZVByb2JlU3VjY2Vz
c0V2ZW50JiBsb2dnZWRfZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBh
aXJDb25maWcoCi0gICAgY29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnJiBvcmln
aW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnJiBsb2dn
ZWRfZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCgKLSAg
ICBjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXImIG9yaWdpbmFsX2V2ZW50LAotICAgIGNv
bnN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBW
ZXJpZnlMb2dnZWRSdHBQYWNrZXRJbmNvbWluZygKLSAgICBjb25zdCBSdGNFdmVudFJ0cFBhY2tl
dEluY29taW5nJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRJbmNv
bWluZyYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRSdHBQYWNrZXRPdXRnb2lu
ZygKLSAgICBjb25zdCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nJiBvcmlnaW5hbF9ldmVudCwK
LSAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRPdXRnb2luZyYgbG9nZ2VkX2V2ZW50KTsKLQotYm9v
bCBWZXJpZnlMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcoCi0gICAgY29uc3QgUnRjRXZlbnRSdGNw
UGFja2V0SW5jb21pbmcmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNr
ZXRJbmNvbWluZyYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRSdGNwUGFja2V0
T3V0Z29pbmcoCi0gICAgY29uc3QgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcmIG9yaWdpbmFs
X2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZyYgbG9nZ2VkX2V2ZW50
KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRTdGFydEV2ZW50KGludDY0X3Qgc3RhcnRfdGltZV91cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRTdGFydEV2ZW50JiBsb2dn
ZWRfZXZlbnQpOwotYm9vbCBWZXJpZnlMb2dnZWRTdG9wRXZlbnQoaW50NjRfdCBzdG9wX3RpbWVf
dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRTdG9wRXZlbnQmIGxv
Z2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkQXVkaW9SZWN2Q29uZmlnKAotICAgIGNv
bnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnJiBvcmlnaW5hbF9ldmVudCwKLSAg
ICBjb25zdCBMb2dnZWRBdWRpb1JlY3ZDb25maWcmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVy
aWZ5TG9nZ2VkQXVkaW9TZW5kQ29uZmlnKAotICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9TZW5kU3Ry
ZWFtQ29uZmlnJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRBdWRpb1NlbmRDb25m
aWcmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkVmlkZW9SZWN2Q29uZmlnKAot
ICAgIGNvbnN0IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnJiBvcmlnaW5hbF9ldmVu
dCwKLSAgICBjb25zdCBMb2dnZWRWaWRlb1JlY3ZDb25maWcmIGxvZ2dlZF9ldmVudCk7CitjbGFz
cyBFdmVudFZlcmlmaWVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEV2ZW50VmVyaWZpZXIoUnRj
RXZlbnRMb2c6OkVuY29kaW5nVHlwZSBlbmNvZGluZ190eXBlKQorICAgICAgOiBlbmNvZGluZ190
eXBlXyhlbmNvZGluZ190eXBlKSB7fQorCisgIHZvaWQgVmVyaWZ5TG9nZ2VkQWxyU3RhdGVFdmVu
dChjb25zdCBSdGNFdmVudEFsclN0YXRlJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IExvZ2dlZEFsclN0YXRlRXZlbnQmIGxvZ2dlZF9ldmVu
dCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCgKKyAgICAg
IGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0JiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0
IExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQg
VmVyaWZ5TG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50KAorICAgICAgY29uc3QgUnRj
RXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0
IExvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCYgbG9nZ2VkX2V2ZW50KSBjb25zdDsK
KworICB2b2lkIFZlcmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoCisgICAgICBjb25zdCBS
dGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3Qg
TG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lk
IFZlcmlmeUxvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSgKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50Qndl
VXBkYXRlTG9zc0Jhc2VkJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZEJ3ZUxv
c3NCYXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dl
ZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCgKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50UHJvYmVD
bHVzdGVyQ3JlYXRlZCYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRCd2VQcm9i
ZUNsdXN0ZXJDcmVhdGVkRXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJp
ZnlMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCgKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50UHJvYmVS
ZXN1bHRGYWlsdXJlJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZEJ3ZVByb2Jl
RmFpbHVyZUV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5TG9nZ2Vk
QndlUHJvYmVTdWNjZXNzRXZlbnQoCisgICAgICBjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0U3Vj
Y2VzcyYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NF
dmVudCYgbG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dlZEljZUNhbmRp
ZGF0ZVBhaXJDb25maWcoCisgICAgICBjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25m
aWcmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNv
bmZpZyYgbG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dlZEljZUNhbmRp
ZGF0ZVBhaXJFdmVudCgKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpciYgb3Jp
Z2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQmIGxv
Z2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRSdHBQYWNrZXRJbmNvbWlu
ZygKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcmIG9yaWdpbmFsX2V2ZW50
LAorICAgICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIGxvZ2dlZF9ldmVudCkgY29u
c3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRSdHBQYWNrZXRPdXRnb2luZygKKyAgICAgIGNvbnN0
IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3Qg
TG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIEV2ZW50VHlwZSwgdHlwZW5hbWUgUGFyc2VkVHlwZT4KKyAgdm9pZCBWZXJp
ZnlMb2dnZWRSdHBQYWNrZXQoY29uc3QgRXZlbnRUeXBlJiBvcmlnaW5hbF9ldmVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFyc2VkVHlwZSYgbG9nZ2VkX2V2ZW50KSB7
CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoUGFyc2VkVHlwZSkgPT0gMCwKKyAgICAgICAgICAg
ICAgICAgICJZb3UgaGF2ZSB0byB1c2Ugb25lIG9mIHRoZSB0d28gZGVmaW5lZCB0ZW1wbGF0ZSAi
CisgICAgICAgICAgICAgICAgICAic3BlY2lhbGl6YXRpb25zIG9mIFZlcmlmeUxvZ2dlZFJ0cFBh
Y2tldCIpOworICB9CisKKyAgdGVtcGxhdGUgPD4KKyAgdm9pZCBWZXJpZnlMb2dnZWRSdHBQYWNr
ZXQoY29uc3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyYgb3JpZ2luYWxfZXZlbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBs
b2dnZWRfZXZlbnQpIHsKKyAgICBWZXJpZnlMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyhvcmlnaW5h
bF9ldmVudCwgbG9nZ2VkX2V2ZW50KTsKKyAgfQorCisgIHRlbXBsYXRlIDw+CisgIHZvaWQgVmVy
aWZ5TG9nZ2VkUnRwUGFja2V0KGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcmIG9yaWdp
bmFsX2V2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRSdHBQ
YWNrZXRPdXRnb2luZyYgbG9nZ2VkX2V2ZW50KSB7CisgICAgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0
T3V0Z29pbmcob3JpZ2luYWxfZXZlbnQsIGxvZ2dlZF9ldmVudCk7CisgIH0KKworICB2b2lkIFZl
cmlmeUxvZ2dlZFJ0Y3BQYWNrZXRJbmNvbWluZygKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50UnRjcFBh
Y2tldEluY29taW5nJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNr
ZXRJbmNvbWluZyYgbG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dlZFJ0
Y3BQYWNrZXRPdXRnb2luZygKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdvaW5n
JiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZyYg
bG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dlZFN0YXJ0RXZlbnQoaW50
NjRfdCBzdGFydF90aW1lX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCB1dGNfc3RhcnRfdGltZV91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IExvZ2dlZFN0YXJ0RXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisgIHZvaWQgVmVyaWZ5TG9n
Z2VkU3RvcEV2ZW50KGludDY0X3Qgc3RvcF90aW1lX3VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBMb2dnZWRTdG9wRXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAg
dm9pZCBWZXJpZnlMb2dnZWRBdWRpb1JlY3ZDb25maWcoCisgICAgICBjb25zdCBSdGNFdmVudEF1
ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dn
ZWRBdWRpb1JlY3ZDb25maWcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlM
b2dnZWRBdWRpb1NlbmRDb25maWcoCisgICAgICBjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVh
bUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRBdWRpb1NlbmRDb25m
aWcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRWaWRlb1JlY3ZD
b25maWcoCisgICAgICBjb25zdCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3Jp
Z2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRWaWRlb1JlY3ZDb25maWcmIGxvZ2dlZF9l
dmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRWaWRlb1NlbmRDb25maWcoCisgICAg
ICBjb25zdCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCisg
ICAgICBjb25zdCBMb2dnZWRWaWRlb1NlbmRDb25maWcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CiAK
LWJvb2wgVmVyaWZ5TG9nZ2VkVmlkZW9TZW5kQ29uZmlnKAotICAgIGNvbnN0IFJ0Y0V2ZW50Vmlk
ZW9TZW5kU3RyZWFtQ29uZmlnJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRWaWRl
b1NlbmRDb25maWcmIGxvZ2dlZF9ldmVudCk7CisgcHJpdmF0ZToKKyAgUnRjRXZlbnRMb2c6OkVu
Y29kaW5nVHlwZSBlbmNvZGluZ190eXBlXzsKK307CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX3N0cmVhbV9jb25m
aWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oCmluZGV4IGQ5NWM4MzU5ZWNlODI5Zjcw
NTI3YmE0MThjYjIzNDhjOWU1NzZlODguLmE5ZGE0ODE0ZTZiMzg4NDgxMDIyYmFmYzRiNWFhYjdm
OGQ0OTRkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oCkBAIC0xMSwxMiArMTEsMTIgQEAKICNpZm5kZWYgTE9H
R0lOR19SVENfRVZFTlRfTE9HX1JUQ19TVFJFQU1fQ09ORklHX0hfCiAjZGVmaW5lIExPR0dJTkdf
UlRDX0VWRU5UX0xPR19SVENfU1RSRUFNX0NPTkZJR19IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9y
dHBfaGVhZGVycy5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAi
Y29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiBuYW1lc3BhY2UgcnRjbG9nIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvQlVJTEQuZ24KaW5kZXggODU4YjI3MmY1
NTgwZGMyYTRiMTZlZmZmMzdkNDA4N2I0Y2U2ZWMxOC4uYjZmOThjNjdiNzI3ODIyN2QxN2M2Njc2
NDY0ZDlmODIxMzY5ZTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvQlVJTEQuZ24KQEAgLTQyLDYgKzQyLDcgQEAgcnRj
X3NvdXJjZV9zZXQoInJ0Y19oMjY0X3Byb2ZpbGVfaWQiKSB7CiAgICAgIi4uOndlYnJ0Y19jb21t
b24iLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0K
QEAgLTEzNiw3ICsxMzcsOSBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19tZWRpYV9iYXNlIikg
ewogICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZ19zdGF0
aXN0aWNzIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICIuLi9ydGNfYmFzZTpy
dGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwK
ICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdCIsCisgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIApAQCAtMTU5LDYgKzE2Miw1MiBAQCBydGNf
c3RhdGljX2xpYnJhcnkoInJ0Y19jb25zdGFudHMiKSB7CiAgIF0KIH0KIAorcnRjX3N0YXRpY19s
aWJyYXJ5KCJydGNfc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlciIpIHsKKyAgdmlzaWJpbGl0eSA9
IFsgIioiIF0KKyAgZGVmaW5lcyA9IFtdCisgIGxpYnMgPSBbXQorICBzb3VyY2VzID0gWworICAg
ICJlbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5jYyIsCisgICAgImVuZ2luZS9zaW11
bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uL2FwaS92
aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRpb24iLAorICAgICIuLi9hcGkvdmlkZW86dmlkZW9f
ZnJhbWVfaTQyMCIsCisgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIs
CisgICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGVjX2ludGVyZmFjZSIsCisg
ICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKKyAgICAi
Li4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAorICAgICIuLi9ydGNfYmFzZTpzZXF1ZW5jZWRfdGFza19jaGVja2VyIiwKKyAgICAiLi4vc3lz
dGVtX3dyYXBwZXJzIiwKKyAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICAgICIv
L3RoaXJkX3BhcnR5L2xpYnl1diIsCisgIF0KKyAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYm
IGlzX2NsYW5nKSB7CisgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBD
bGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgorICAgIHN1cHByZXNzZWRfY29uZmln
cyArPSBbICIvL2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCisgIH0K
K30KKworcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5
IikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICBkZWZpbmVzID0gW10KKyAgbGlicyA9IFtd
CisgIHNvdXJjZXMgPSBbCisgICAgImVuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHku
Y2MiLAorICAgICJlbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5LmgiLAorICBdCisg
IGRlcHMgPSBbCisgICAgIjpydGNfc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlciIsCisgICAgIi4u
L2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCisgIF0KKyAgaWYgKCFidWlsZF93
aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CisgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9t
IHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgorICAgIHN1
cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25z
dHJ1Y3RzIiBdCisgIH0KK30KKwogcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfaW50ZXJuYWxfdmlk
ZW9fY29kZWNzIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBhbGxvd19wb2lzb24gPSBb
ICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0KQEAgLTE2Niw4ICsyMTUsOSBAQCBydGNfc3RhdGlj
X2xpYnJhcnkoInJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3MiKSB7CiAgIGxpYnMgPSBbXQogICBk
ZXBzID0gWwogICAgICI6cnRjX2gyNjRfcHJvZmlsZV9pZCIsCisgICAgIjpydGNfc2ltdWxjYXN0
X2VuY29kZXJfYWRhcHRlciIsCisgICAgIjpydGNfdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5
IiwKICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwK
LSAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQogICBzb3VyY2VzID0gWwpAQCAtMTgzLDkg
KzIzMyw5IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2ludGVybmFsX3ZpZGVvX2NvZGVjcyIp
IHsKICAgICAiZW5naW5lL3Njb3BlZHZpZGVvZGVjb2Rlci5oIiwKICAgICAiZW5naW5lL3Njb3Bl
ZHZpZGVvZW5jb2Rlci5jYyIsCiAgICAgImVuZ2luZS9zY29wZWR2aWRlb2VuY29kZXIuaCIsCi0g
ICAgImVuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmNjIiwKLSAgICAiZW5naW5lL3Np
bXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIuaCIsCi0gICAgImVuZ2luZS92cDhfZW5jb2Rlcl9zaW11
bGNhc3RfcHJveHkuY2MiLAorCisgICAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy83OTI1KTogc3Rv
cCBleHBvcnRpbmcgdGhpcyBoZWFkZXIgb25jZSBkb3duc3RyZWFtCisgICAgIyB0YXJnZXRzIGRl
cGVuZCBvbiA6cnRjX3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eSBkaXJlY3RseS4KICAgICAi
ZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eS5oIiwKICAgICAiZW5naW5lL3dlYnJ0
Y3ZpZGVvZGVjb2RlcmZhY3RvcnkuaCIsCiAgICAgImVuZ2luZS93ZWJydGN2aWRlb2VuY29kZXJm
YWN0b3J5LmgiLApAQCAtMjAyLDI0ICsyNTIsMjAgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNf
aW50ZXJuYWxfdmlkZW9fY29kZWNzIikgewogICBkZXBzICs9IFsKICAgICAiOnJ0Y19jb25zdGFu
dHMiLAogICAgICI6cnRjX21lZGlhX2Jhc2UiLAotICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAg
ICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbiIsCi0gICAgIi4uL2FwaS92
aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKKyAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwK
ICAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczpydGNfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlcnMi
LAogICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAogICAgICIuLi9j
YWxsOmNhbGxfaW50ZXJmYWNlcyIsCiAgICAgIi4uL2NhbGw6dmlkZW9fc3RyZWFtX2FwaSIsCi0g
ICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKICAgICAi
Li4vbW9kdWxlcy92aWRlb19jb2Rpbmc6d2VicnRjX2gyNjQiLAogICAgICIuLi9tb2R1bGVzL3Zp
ZGVvX2NvZGluZzp3ZWJydGNfbXVsdGlwbGV4IiwKICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rp
bmc6d2VicnRjX3ZwOCIsCiAgICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOndlYnJ0Y192cDki
LAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9h
cHByb3ZlZCIsCi0gICAgIi4uL3J0Y19iYXNlOnNlcXVlbmNlZF90YXNrX2NoZWNrZXIiLAotICAg
ICIuLi9zeXN0ZW1fd3JhcHBlcnMiLAotICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlczpvcHRpb25hbCIsCi0gICAgIi8vdGhpcmRfcGFydHkvbGlieXV2IiwKKyAgICAiLi4v
cnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzIiwKICAgXQogfQogCkBAIC0yMzIsMTIgKzI3OCwxNSBAQCBydGNfc3Rh
dGljX2xpYnJhcnkoInJ0Y19hdWRpb192aWRlbyIpIHsKICAgZGVmaW5lcyA9IFtdCiAgIGxpYnMg
PSBbXQogICBkZXBzID0gWworICAgICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0
b3JfZmFjdG9yeSIsCisgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAg
ICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXA6YWVjX2R1bXAiLAogICAgICIu
Li9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAogICAgICIuLi9t
b2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RpbmciLAogICAgICIuLi9tb2R1bGVzL3ZpZGVv
X2NvZGluZzp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAgICAgIi4uL3J0Y19iYXNlOmF1ZGlvX2Zv
cm1hdF90b19zdHJpbmciLAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi9ydGNf
YmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L2Jh
c2U2NCIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uL3N5
c3RlbV93cmFwcGVyczptZXRyaWNzIiwKQEAgLTMwNSw2ICszNTQsNyBAQCBydGNfc3RhdGljX2xp
YnJhcnkoInJ0Y19hdWRpb192aWRlbyIpIHsKICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29u
bmVjdGlvbl9hcGkiLAogICAgICIuLi9hcGk6dHJhbnNwb3J0X2FwaSIsCiAgICAgIi4uL2FwaS9h
dWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCisgICAgIi4uL2FwaS92aWRlbzpidWlsdGlu
X3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICIuLi9hcGkvdmlkZW86dmlk
ZW9fZnJhbWUiLAogICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCiAgICAgIi4u
L2FwaS92aWRlb19jb2RlY3M6cnRjX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXJzIiwKQEAgLTMy
Miw3ICszNzIsMTAgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYXVkaW9fdmlkZW8iKSB7CiAg
ICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVl
dWUiLAogICAgICIuLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIsCisgICAgIi4uL3J0Y19iYXNlL2V4
cGVyaW1lbnRzOm5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50IiwKICAgICAiLi4v
c3lzdGVtX3dyYXBwZXJzIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpA
QCAtMzkxLDI0ICs0NDQsMjkgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgaW5jbHVk
ZV9kaXJzID0gW10KICAgICBkZXBzID0gWwogICAgICAgIjpydGNfYXVkaW9fdmlkZW8iLAorICAg
ICAgIjpydGNfc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlciIsCiAgICAgICAiLi4vYXBpOmxpYmpp
bmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFt
ZV9pNDIwIiwKICAgICAgICIuLi9jYWxsOnZpZGVvX3N0cmVhbV9hcGkiLAogICAgICAgIi4uL2Nv
bW1vbl92aWRlbzpjb21tb25fdmlkZW8iLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fY29kaW5n
OnJlbnRfYV9jb2RlYyIsCisgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIs
CiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAog
ICAgICAgIi4uL21vZHVsZXMvcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAgICIuLi9t
b2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAogICAgICAgIi4uL21v
ZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKICAgICAgICIuLi9wMnA6
cnRjX3AycCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAgICIuLi9ydGNfYmFz
ZTpndW5pdF9oZWxwZXJzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCiAg
ICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAogICAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncyIsCiAgICAgXQogICAgIHNvdXJjZXMgPSBbCiAgICAgICAiYmFzZS9mYWtlZnJh
bWVzb3VyY2UuY2MiLAogICAgICAgImJhc2UvZmFrZWZyYW1lc291cmNlLmgiLAorICAgICAgImJh
c2UvZmFrZW1lZGlhZW5naW5lLmNjIiwKICAgICAgICJiYXNlL2Zha2VtZWRpYWVuZ2luZS5oIiwK
ICAgICAgICJiYXNlL2Zha2VuZXR3b3JraW50ZXJmYWNlLmgiLAogICAgICAgImJhc2UvZmFrZXJ0
cC5jYyIsCkBAIC00NTAsNyArNTA4LDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAg
ICAiLi4vY2FsbDptb2NrX3J0cF9pbnRlcmZhY2VzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZSIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICAgIi4u
L3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNf
dGFza19xdWV1ZV9mb3JfdGVzdCIsCiAgICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2ln
c2xvdCIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLApAQCAtNDg2LDggKzU0MywxMCBA
QCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6cnRjX2F1ZGlvX3ZpZGVvIiwKICAg
ICAgICI6cnRjX2NvbnN0YW50cyIsCiAgICAgICAiOnJ0Y19kYXRhIiwKKyAgICAgICIuLi9hcGkv
dGVzdC92aWRlbzpmdW5jdGlvbl92aWRlb19mYWN0b3J5IiwKICAgICAgICIuLi9hcGkvdW5pdHM6
dGltZV9kZWx0YSIsCiAgICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAorICAg
ICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAgIi4uL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZzptb2NrcyIsCiAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcCIsCiAg
ICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKQEAg
LTQ5NSwxMSArNTU0LDEzIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL3Bj
OnJ0Y19wYyIsCiAgICAgICAiLi4vcGM6cnRjX3BjX2Jhc2UiLAogICAgICAgIi4uL3J0Y19iYXNl
OmNoZWNrcyIsCisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCisgICAgICAiLi4v
cnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y190
YXNrX3F1ZXVlIiwKICAgICAgICIuLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIsCiAgICAgICAiLi4v
dGVzdDpmaWVsZF90cmlhbCIsCi0gICAgICAiLi4vdGVzdDp0ZXN0X2NvbW1vbiIsCiAgICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICBdCiAgICAgc291cmNlcyA9IFsKICAg
ICAgICJiYXNlL2NvZGVjX3VuaXR0ZXN0LmNjIiwKQEAgLTU2OCwxMyArNjI5LDE4IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpydGNfbWVkaWEiLAogICAgICAgIjpydGNfbWVk
aWFfYmFzZSIsCiAgICAgICAiOnJ0Y19tZWRpYV90ZXN0c191dGlscyIsCisgICAgICAiOnJ0Y19z
aW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyIiwKKyAgICAgICI6cnRjX3ZwOF9lbmNvZGVyX3NpbXVs
Y2FzdF9wcm94eSIsCiAgICAgICAiOnJ0Y192cDlfcHJvZmlsZSIsCiAgICAgICAiLi4vYXBpOmNy
ZWF0ZV9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2FwaSIsCiAgICAgICAiLi4vYXBpOmxpYmppbmds
ZV9wZWVyY29ubmVjdGlvbl9hcGkiLAorICAgICAgIi4uL2FwaTptb2NrX3ZpZGVvX2JpdHJhdGVf
YWxsb2NhdG9yIiwKKyAgICAgICIuLi9hcGk6bW9ja192aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9m
YWN0b3J5IiwKICAgICAgICIuLi9hcGk6bW9ja192aWRlb19jb2RlY19mYWN0b3J5IiwKICAgICAg
ICIuLi9hcGk6c2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9hcGkiLAogICAgICAgIi4uL2FwaS9hdWRp
b19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkiLAogICAgICAgIi4uL2FwaS9h
dWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLAorICAgICAgIi4uL2Fw
aS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICAg
Ii4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRpb24iLAogICAgICAgIi4uL2FwaS92
aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczpidWlsdGluX3Zp
ZGVvX2RlY29kZXJfZmFjdG9yeSIsCkBAIC01OTIsNyArNjU4LDYgQEAgaWYgKHJ0Y19pbmNsdWRl
X3Rlc3RzKSB7CiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uL3J0Y19i
YXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0
c19tYWluIiwKLSAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAg
ICAiLi4vdGVzdDphdWRpb19jb2RlY19tb2NrcyIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBv
cnQiLAogICAgICAgIi4uL3Rlc3Q6dmlkZW9fdGVzdF9jb21tb24iLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvT1dORVJTIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvT1dORVJTCmluZGV4
IDYzNGVhZjJiZmE3OWUxODcxYTdiMDYwOGNmNWMwMjA1NTYyYjdjNTIuLjQ1NDRlOWY0ODA2MTM4
NjcwODIzZGI4NGJhM2ViYmFhNGQ0N2YzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9PV05FUlMKQEAgLTQsNiArNCw3IEBA
IHNwcmFuZ0B3ZWJydGMub3JnCiBtYWdqZWRAd2VicnRjLm9yZwogbWZsb2RtYW5Ad2VicnRjLm9y
ZwogcGVya2pAd2VicnRjLm9yZworc2hhbXBzb25Ad2VicnRjLm9yZwogc29sZW5iZXJnQHdlYnJ0
Yy5vcmcKIAogIyBUaGVzZSBhcmUgZm9yIHRoZSBjb21tb24gY2FzZSBvZiBhZGRpbmcgb3IgcmVu
YW1pbmcgZmlsZXMuIElmIHlvdSdyZSBkb2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9jb2RlYy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvY29kZWMuY2MKaW5k
ZXggY2FmMzIxMjExMjViMWRiZWMwY2E4Y2YyMGY5NjE4OTQ4OTMxNWZlOC4uMGExYzcxNTZhZjgw
ZTA1OTlkMTllNTI3NTJiOGUyZDczMWE1MWIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9jb2RlYy5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2NvZGVjLmNj
CkBAIC0xMiwxMyArMTIsMTMgQEAKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvaDI2NF9wcm9maWxl
X2xldmVsX2lkLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS92cDlfcHJvZmlsZS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJp
bmdzL3N0cmluZ19idWlsZGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIK
IAogbmFtZXNwYWNlIGNyaWNrZXQgewogCkBAIC0yNiw4ICsyNiw4IEBAIEZlZWRiYWNrUGFyYW1z
OjpGZWVkYmFja1BhcmFtcygpID0gZGVmYXVsdDsKIEZlZWRiYWNrUGFyYW1zOjp+RmVlZGJhY2tQ
YXJhbXMoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgRmVlZGJhY2tQYXJhbTo6b3BlcmF0b3I9PShjb25z
dCBGZWVkYmFja1BhcmFtJiBvdGhlcikgY29uc3QgewotICByZXR1cm4gX3N0cmljbXAob3RoZXIu
aWQoKS5jX3N0cigpLCBpZCgpLmNfc3RyKCkpID09IDAgJiYKLSAgICAgICAgIF9zdHJpY21wKG90
aGVyLnBhcmFtKCkuY19zdHIoKSwgcGFyYW0oKS5jX3N0cigpKSA9PSAwOworICByZXR1cm4gYWJz
bDo6RXF1YWxzSWdub3JlQ2FzZShvdGhlci5pZCgpLCBpZCgpKSAmJgorICAgICAgICAgYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShvdGhlci5wYXJhbSgpLCBwYXJhbSgpKTsKIH0KIAogYm9vbCBGZWVk
YmFja1BhcmFtczo6b3BlcmF0b3I9PShjb25zdCBGZWVkYmFja1BhcmFtcyYgb3RoZXIpIGNvbnN0
IHsKQEAgLTk3LDcgKzk3LDcgQEAgYm9vbCBDb2RlYzo6TWF0Y2hlcyhjb25zdCBDb2RlYyYgY29k
ZWMpIGNvbnN0IHsKICAgY29uc3QgaW50IGtNYXhTdGF0aWNQYXlsb2FkSWQgPSA5NTsKICAgcmV0
dXJuIChpZCA8PSBrTWF4U3RhdGljUGF5bG9hZElkIHx8IGNvZGVjLmlkIDw9IGtNYXhTdGF0aWNQ
YXlsb2FkSWQpCiAgICAgICAgICAgICAgPyAoaWQgPT0gY29kZWMuaWQpCi0gICAgICAgICAgICAg
OiAoX3N0cmljbXAobmFtZS5jX3N0cigpLCBjb2RlYy5uYW1lLmNfc3RyKCkpID09IDApOworICAg
ICAgICAgICAgIDogKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwgY29kZWMubmFtZSkpOwog
fQogCiBib29sIENvZGVjOjpHZXRQYXJhbShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgc3RkOjpz
dHJpbmcqIG91dCkgY29uc3QgewpAQCAtMjM1LDcgKzIzNSw3IEBAIFZpZGVvQ29kZWMmIFZpZGVv
Q29kZWM6Om9wZXJhdG9yPShjb25zdCBWaWRlb0NvZGVjJiBjKSA9IGRlZmF1bHQ7CiBWaWRlb0Nv
ZGVjJiBWaWRlb0NvZGVjOjpvcGVyYXRvcj0oVmlkZW9Db2RlYyYmIGMpID0gZGVmYXVsdDsKIAog
dm9pZCBWaWRlb0NvZGVjOjpTZXREZWZhdWx0UGFyYW1ldGVycygpIHsKLSAgaWYgKF9zdHJpY21w
KGtIMjY0Q29kZWNOYW1lLCBuYW1lLmNfc3RyKCkpID09IDApIHsKKyAgaWYgKGFic2w6OkVxdWFs
c0lnbm9yZUNhc2Uoa0gyNjRDb2RlY05hbWUsIG5hbWUpKSB7CiAgICAgLy8gVGhpcyBkZWZhdWx0
IGlzIHNldCBmb3IgYWxsIEguMjY0IGNvZGVjcyBjcmVhdGVkIGJlY2F1c2UKICAgICAvLyB0aGF0
IHdhcyB0aGUgZGVmYXVsdCBiZWZvcmUgcGFja2V0aXphdGlvbiBtb2RlIHN1cHBvcnQgd2FzIGFk
ZGVkLgogICAgIC8vIFRPRE8oaHRhKTogTW92ZSB0aGlzIHRvIHRoZSBwbGFjZXMgdGhhdCBjcmVh
dGUgVmlkZW9Db2RlY3MgZnJvbQpAQCAtMjY4LDEwICsyNjgsMTAgQEAgc3RhdGljIGJvb2wgSXNT
YW1lSDI2NFBhY2tldGl6YXRpb25Nb2RlKGNvbnN0IENvZGVjUGFyYW1ldGVyTWFwJiBvdXJzLAog
Ym9vbCBWaWRlb0NvZGVjOjpNYXRjaGVzKGNvbnN0IFZpZGVvQ29kZWMmIG90aGVyKSBjb25zdCB7
CiAgIGlmICghQ29kZWM6Ok1hdGNoZXMob3RoZXIpKQogICAgIHJldHVybiBmYWxzZTsKLSAgaWYg
KENvZGVjTmFtZXNFcShuYW1lLmNfc3RyKCksIGtIMjY0Q29kZWNOYW1lKSkKKyAgaWYgKGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwga0gyNjRDb2RlY05hbWUpKQogICAgIHJldHVybiB3ZWJy
dGM6OkgyNjQ6OklzU2FtZUgyNjRQcm9maWxlKHBhcmFtcywgb3RoZXIucGFyYW1zKSAmJgogICAg
ICAgICAgICBJc1NhbWVIMjY0UGFja2V0aXphdGlvbk1vZGUocGFyYW1zLCBvdGhlci5wYXJhbXMp
OwotICBpZiAoQ29kZWNOYW1lc0VxKG5hbWUuY19zdHIoKSwga1ZwOUNvZGVjTmFtZSkpCisgIGlm
IChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUsIGtWcDlDb2RlY05hbWUpKQogICAgIHJldHVy
biB3ZWJydGM6OklzU2FtZVZQOVByb2ZpbGUocGFyYW1zLCBvdGhlci5wYXJhbXMpOwogICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTI4NSwxNiArMjg1LDE2IEBAIFZpZGVvQ29kZWMgVmlkZW9Db2RlYzo6
Q3JlYXRlUnR4Q29kZWMoaW50IHJ0eF9wYXlsb2FkX3R5cGUsCiAKIFZpZGVvQ29kZWM6OkNvZGVj
VHlwZSBWaWRlb0NvZGVjOjpHZXRDb2RlY1R5cGUoKSBjb25zdCB7CiAgIGNvbnN0IGNoYXIqIHBh
eWxvYWRfbmFtZSA9IG5hbWUuY19zdHIoKTsKLSAgaWYgKF9zdHJpY21wKHBheWxvYWRfbmFtZSwg
a1JlZENvZGVjTmFtZSkgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXls
b2FkX25hbWUsIGtSZWRDb2RlY05hbWUpKSB7CiAgICAgcmV0dXJuIENPREVDX1JFRDsKICAgfQot
ICBpZiAoX3N0cmljbXAocGF5bG9hZF9uYW1lLCBrVWxwZmVjQ29kZWNOYW1lKSA9PSAwKSB7Cisg
IGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBheWxvYWRfbmFtZSwga1VscGZlY0NvZGVjTmFt
ZSkpIHsKICAgICByZXR1cm4gQ09ERUNfVUxQRkVDOwogICB9Ci0gIGlmIChfc3RyaWNtcChwYXls
b2FkX25hbWUsIGtGbGV4ZmVjQ29kZWNOYW1lKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKHBheWxvYWRfbmFtZSwga0ZsZXhmZWNDb2RlY05hbWUpKSB7CiAgICAgcmV0dXJu
IENPREVDX0ZMRVhGRUM7CiAgIH0KLSAgaWYgKF9zdHJpY21wKHBheWxvYWRfbmFtZSwga1J0eENv
ZGVjTmFtZSkgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25h
bWUsIGtSdHhDb2RlY05hbWUpKSB7CiAgICAgcmV0dXJuIENPREVDX1JUWDsKICAgfQogCkBAIC0z
NjIsMTQgKzM2Miw2IEBAIGJvb2wgSGFzVHJhbnNwb3J0Q2MoY29uc3QgQ29kZWMmIGNvZGVjKSB7
CiAgICAgICBGZWVkYmFja1BhcmFtKGtSdGNwRmJQYXJhbVRyYW5zcG9ydENjLCBrUGFyYW1WYWx1
ZUVtcHR5KSk7CiB9CiAKLWJvb2wgQ29kZWNOYW1lc0VxKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
MSwgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUyKSB7Ci0gIHJldHVybiBDb2RlY05hbWVzRXEobmFt
ZTEuY19zdHIoKSwgbmFtZTIuY19zdHIoKSk7Ci19Ci0KLWJvb2wgQ29kZWNOYW1lc0VxKGNvbnN0
IGNoYXIqIG5hbWUxLCBjb25zdCBjaGFyKiBuYW1lMikgewotICByZXR1cm4gX3N0cmljbXAobmFt
ZTEsIG5hbWUyKSA9PSAwOwotfQotCiBjb25zdCBWaWRlb0NvZGVjKiBGaW5kTWF0Y2hpbmdDb2Rl
YygKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgc3VwcG9ydGVkX2NvZGVjcywK
ICAgICBjb25zdCBWaWRlb0NvZGVjJiBjb2RlYykgewpAQCAtMzg3LDEyICszNzksMTIgQEAgYm9v
bCBJc1NhbWVDb2RlYyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZTEsCiAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lMiwKICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNQ
YXJhbWV0ZXJNYXAmIHBhcmFtczIpIHsKICAgLy8gSWYgZGlmZmVyZW50IG5hbWVzIChjYXNlIGlu
c2Vuc2l0aXZlKSwgdGhlbiBub3Qgc2FtZSBmb3JtYXRzLgotICBpZiAoIUNvZGVjTmFtZXNFcShu
YW1lMSwgbmFtZTIpKQorICBpZiAoIWFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZTEsIG5hbWUy
KSkKICAgICByZXR1cm4gZmFsc2U7CiAgIC8vIEZvciBldmVyeSBmb3JtYXQgYmVzaWRlcyBIMjY0
IGFuZCBWUDksIGNvbXBhcmluZyBuYW1lcyBpcyBlbm91Z2guCi0gIGlmIChDb2RlY05hbWVzRXEo
bmFtZTEuY19zdHIoKSwga0gyNjRDb2RlY05hbWUpKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3Jl
Q2FzZShuYW1lMSwga0gyNjRDb2RlY05hbWUpKQogICAgIHJldHVybiB3ZWJydGM6OkgyNjQ6Oklz
U2FtZUgyNjRQcm9maWxlKHBhcmFtczEsIHBhcmFtczIpOwotICBpZiAoQ29kZWNOYW1lc0VxKG5h
bWUxLmNfc3RyKCksIGtWcDlDb2RlY05hbWUpKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2Fz
ZShuYW1lMSwga1ZwOUNvZGVjTmFtZSkpCiAgICAgcmV0dXJuIHdlYnJ0Yzo6SXNTYW1lVlA5UHJv
ZmlsZShwYXJhbXMxLCBwYXJhbXMyKTsKICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2NvZGVj
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNl
L2NvZGVjLmgKaW5kZXggZGIxMzNmNmUyN2Y2NDRmNTFlMGQ3OWRhODI5Y2MyNTNmMDAxMzkyMi4u
MGNhNjUzNTI4N2JlZWIyOWZmNTU5OGRmMWYyNWNiYWYxNDA5MGQ1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9jb2RlYy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jh
c2UvY29kZWMuaApAQCAtMTgsOCArMTgsOCBAQAogCiAjaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKLSNp
bmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1
ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0
ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKQEAgLTYyLDcgKzYyLDcg
QEAgY2xhc3MgRmVlZGJhY2tQYXJhbXMgewogICBzdGQ6OnZlY3RvcjxGZWVkYmFja1BhcmFtPiBw
YXJhbXNfOwogfTsKIAotc3RydWN0IENvZGVjIHsKK3N0cnVjdCBSVENfRVhQT1JUIENvZGVjIHsK
ICAgaW50IGlkOwogICBzdGQ6OnN0cmluZyBuYW1lOwogICBpbnQgY2xvY2tyYXRlOwpAQCAtMTQy
LDcgKzE0Miw3IEBAIHN0cnVjdCBBdWRpb0NvZGVjIDogcHVibGljIENvZGVjIHsKICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEF1ZGlvQ29kZWMmIGMpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
Yyk7IH0KIH07CiAKLXN0cnVjdCBWaWRlb0NvZGVjIDogcHVibGljIENvZGVjIHsKK3N0cnVjdCBS
VENfRVhQT1JUIFZpZGVvQ29kZWMgOiBwdWJsaWMgQ29kZWMgewogICAvLyBDcmVhdGVzIGEgY29k
ZWMgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4KICAgVmlkZW9Db2RlYyhpbnQgaWQsIGNvbnN0
IHN0ZDo6c3RyaW5nJiBuYW1lKTsKICAgLy8gQ3JlYXRlcyBhIGNvZGVjIHdpdGggdGhlIGdpdmVu
IG5hbWUgYW5kIGVtcHR5IGlkLgpAQCAtMjE1LDggKzIxNSw2IEBAIGNvbnN0IENvZGVjKiBGaW5k
Q29kZWNCeUlkKGNvbnN0IHN0ZDo6dmVjdG9yPENvZGVjPiYgY29kZWNzLCBpbnQgcGF5bG9hZF90
eXBlKSB7CiAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIENvZGVjTmFtZXNFcShjb25zdCBz
dGQ6OnN0cmluZyYgbmFtZTEsIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lMik7Ci1ib29sIENvZGVj
TmFtZXNFcShjb25zdCBjaGFyKiBuYW1lMSwgY29uc3QgY2hhciogbmFtZTIpOwogYm9vbCBIYXNO
YWNrKGNvbnN0IENvZGVjJiBjb2RlYyk7CiBib29sIEhhc1JlbWIoY29uc3QgQ29kZWMmIGNvZGVj
KTsKIGJvb2wgSGFzUnJ0cihjb25zdCBDb2RlYyYgY29kZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtlbWVkaWFl
bmdpbmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL2Zha2VtZWRpYWVuZ2luZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDgyMDZmZDc3NzcyYWM5Mzg4
YjA4NjBlMjlmNTU4ODUwZmUzMzlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuY2MK
QEAgLTAsMCArMSw1OTggQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtZWRpYS9i
YXNlL2Zha2VtZWRpYWVuZ2luZS5oIgorCisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUg
ImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2UgY3JpY2tldCB7CisKK0Zh
a2VWb2ljZU1lZGlhQ2hhbm5lbDo6RHRtZkluZm86OkR0bWZJbmZvKHVpbnQzMl90IHNzcmMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXZlbnRfY29kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkdXJhdGlvbikK
KyAgICA6IHNzcmMoc3NyYyksIGV2ZW50X2NvZGUoZXZlbnRfY29kZSksIGR1cmF0aW9uKGR1cmF0
aW9uKSB7fQorCitGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlZvaWNlQ2hhbm5lbEF1ZGlvU2luazo6
Vm9pY2VDaGFubmVsQXVkaW9TaW5rKAorICAgIEF1ZGlvU291cmNlKiBzb3VyY2UpCisgICAgOiBz
b3VyY2VfKHNvdXJjZSkgeworICBzb3VyY2VfLT5TZXRTaW5rKHRoaXMpOworfQorRmFrZVZvaWNl
TWVkaWFDaGFubmVsOjpWb2ljZUNoYW5uZWxBdWRpb1Npbms6On5Wb2ljZUNoYW5uZWxBdWRpb1Np
bmsoKSB7CisgIGlmIChzb3VyY2VfKSB7CisgICAgc291cmNlXy0+U2V0U2luayhudWxscHRyKTsK
KyAgfQorfQordm9pZCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlZvaWNlQ2hhbm5lbEF1ZGlvU2lu
azo6T25EYXRhKAorICAgIGNvbnN0IHZvaWQqIGF1ZGlvX2RhdGEsCisgICAgaW50IGJpdHNfcGVy
X3NhbXBsZSwKKyAgICBpbnQgc2FtcGxlX3JhdGUsCisgICAgc2l6ZV90IG51bWJlcl9vZl9jaGFu
bmVscywKKyAgICBzaXplX3QgbnVtYmVyX29mX2ZyYW1lcykge30KK3ZvaWQgRmFrZVZvaWNlTWVk
aWFDaGFubmVsOjpWb2ljZUNoYW5uZWxBdWRpb1Npbms6Ok9uQ2xvc2UoKSB7CisgIHNvdXJjZV8g
PSBudWxscHRyOworfQorQXVkaW9Tb3VyY2UqIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6Vm9pY2VD
aGFubmVsQXVkaW9TaW5rOjpzb3VyY2UoKSBjb25zdCB7CisgIHJldHVybiBzb3VyY2VfOworfQor
CitGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbChGYWtlVm9pY2VF
bmdpbmUqIGVuZ2luZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IGVuZ2luZV8oZW5naW5lKSwg
bWF4X2Jwc18oLTEpIHsKKyAgb3V0cHV0X3NjYWxpbmdzX1swXSA9IDEuMDsgIC8vIEZvciBkZWZh
dWx0IGNoYW5uZWwuCisgIFNldE9wdGlvbnMob3B0aW9ucyk7Cit9CitGYWtlVm9pY2VNZWRpYUNo
YW5uZWw6On5GYWtlVm9pY2VNZWRpYUNoYW5uZWwoKSB7CisgIGlmIChlbmdpbmVfKSB7CisgICAg
ZW5naW5lXy0+VW5yZWdpc3RlckNoYW5uZWwodGhpcyk7CisgIH0KK30KK2NvbnN0IHN0ZDo6dmVj
dG9yPEF1ZGlvQ29kZWM+JiBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OnJlY3ZfY29kZWNzKCkgY29u
c3QgeworICByZXR1cm4gcmVjdl9jb2RlY3NfOworfQorY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9D
b2RlYz4mIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6c2VuZF9jb2RlY3MoKSBjb25zdCB7CisgIHJl
dHVybiBzZW5kX2NvZGVjc187Cit9Citjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgRmFr
ZVZvaWNlTWVkaWFDaGFubmVsOjpjb2RlY3MoKSBjb25zdCB7CisgIHJldHVybiBzZW5kX2NvZGVj
cygpOworfQorY29uc3Qgc3RkOjp2ZWN0b3I8RmFrZVZvaWNlTWVkaWFDaGFubmVsOjpEdG1mSW5m
bz4mCitGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OmR0bWZfaW5mb19xdWV1ZSgpIGNvbnN0IHsKKyAg
cmV0dXJuIGR0bWZfaW5mb19xdWV1ZV87Cit9Citjb25zdCBBdWRpb09wdGlvbnMmIEZha2VWb2lj
ZU1lZGlhQ2hhbm5lbDo6b3B0aW9ucygpIGNvbnN0IHsKKyAgcmV0dXJuIG9wdGlvbnNfOworfQor
aW50IEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6bWF4X2JwcygpIGNvbnN0IHsKKyAgcmV0dXJuIG1h
eF9icHNfOworfQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlNldFNlbmRQYXJhbWV0ZXJz
KAorICAgIGNvbnN0IEF1ZGlvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgeworICBzZXRfc2VuZF9y
dGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOworICByZXR1cm4gKFNldFNlbmRDb2RlY3MocGFy
YW1zLmNvZGVjcykgJiYKKyAgICAgICAgICBTZXRTZW5kRXh0bWFwQWxsb3dNaXhlZChwYXJhbXMu
ZXh0bWFwX2FsbG93X21peGVkKSAmJgorICAgICAgICAgIFNldFNlbmRSdHBIZWFkZXJFeHRlbnNp
b25zKHBhcmFtcy5leHRlbnNpb25zKSAmJgorICAgICAgICAgIFNldE1heFNlbmRCYW5kd2lkdGgo
cGFyYW1zLm1heF9iYW5kd2lkdGhfYnBzKSAmJgorICAgICAgICAgIFNldE9wdGlvbnMocGFyYW1z
Lm9wdGlvbnMpKTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRSZWN2UGFyYW1l
dGVycygKKyAgICBjb25zdCBBdWRpb1JlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKKyAgc2V0X3Jl
Y3ZfcnRjcF9wYXJhbWV0ZXJzKHBhcmFtcy5ydGNwKTsKKyAgcmV0dXJuIChTZXRSZWN2Q29kZWNz
KHBhcmFtcy5jb2RlY3MpICYmCisgICAgICAgICAgU2V0UmVjdlJ0cEhlYWRlckV4dGVuc2lvbnMo
cGFyYW1zLmV4dGVuc2lvbnMpKTsKK30KK3ZvaWQgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRQ
bGF5b3V0KGJvb2wgcGxheW91dCkgeworICBzZXRfcGxheW91dChwbGF5b3V0KTsKK30KK3ZvaWQg
RmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRTZW5kKGJvb2wgc2VuZCkgeworICBzZXRfc2VuZGlu
ZyhzZW5kKTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRBdWRpb1NlbmQodWlu
dDMyX3Qgc3NyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBlbmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEF1ZGlvT3B0aW9ucyogb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQXVkaW9Tb3VyY2UqIHNvdXJjZSkgeworICBpZiAoIVNldExvY2FsU291cmNlKHNz
cmMsIHNvdXJjZSkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKCFSdHBIZWxwZXI8
Vm9pY2VNZWRpYUNoYW5uZWw+OjpNdXRlU3RyZWFtKHNzcmMsICFlbmFibGUpKSB7CisgICAgcmV0
dXJuIGZhbHNlOworICB9CisgIGlmIChlbmFibGUgJiYgb3B0aW9ucykgeworICAgIHJldHVybiBT
ZXRPcHRpb25zKCpvcHRpb25zKTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZv
aWNlTWVkaWFDaGFubmVsOjpIYXNTb3VyY2UodWludDMyX3Qgc3NyYykgY29uc3QgeworICByZXR1
cm4gbG9jYWxfc2lua3NfLmZpbmQoc3NyYykgIT0gbG9jYWxfc2lua3NfLmVuZCgpOworfQorYm9v
bCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OkFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1z
JiBzcCkgeworICBpZiAoIVJ0cEhlbHBlcjxWb2ljZU1lZGlhQ2hhbm5lbD46OkFkZFJlY3ZTdHJl
YW0oc3ApKQorICAgIHJldHVybiBmYWxzZTsKKyAgb3V0cHV0X3NjYWxpbmdzX1tzcC5maXJzdF9z
c3JjKCldID0gMS4wOworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFu
bmVsOjpSZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMpIHsKKyAgaWYgKCFSdHBIZWxwZXI8
Vm9pY2VNZWRpYUNoYW5uZWw+OjpSZW1vdmVSZWN2U3RyZWFtKHNzcmMpKQorICAgIHJldHVybiBm
YWxzZTsKKyAgb3V0cHV0X3NjYWxpbmdzXy5lcmFzZShzc3JjKTsKKyAgcmV0dXJuIHRydWU7Cit9
Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6Q2FuSW5zZXJ0RHRtZigpIHsKKyAgZm9yIChz
dGQ6OnZlY3RvcjxBdWRpb0NvZGVjPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzZW5kX2NvZGVjc18u
YmVnaW4oKTsKKyAgICAgICBpdCAhPSBzZW5kX2NvZGVjc18uZW5kKCk7ICsraXQpIHsKKyAgICAv
LyBGaW5kIHRoZSBEVE1GIHRlbGVwaG9uZSBldmVudCAiY29kZWMiLgorICAgIGlmIChhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKGl0LT5uYW1lLCAidGVsZXBob25lLWV2ZW50IikpIHsKKyAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgfQorICByZXR1cm4gZmFsc2U7Cit9Citib29sIEZha2VWb2lj
ZU1lZGlhQ2hhbm5lbDo6SW5zZXJ0RHRtZih1aW50MzJfdCBzc3JjLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV2ZW50X2NvZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHVyYXRpb24pIHsKKyAgZHRtZl9pbmZvX3F1ZXVl
Xy5wdXNoX2JhY2soRHRtZkluZm8oc3NyYywgZXZlbnRfY29kZSwgZHVyYXRpb24pKTsKKyAgcmV0
dXJuIHRydWU7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0T3V0cHV0Vm9sdW1l
KHVpbnQzMl90IHNzcmMsIGRvdWJsZSB2b2x1bWUpIHsKKyAgaWYgKDAgPT0gc3NyYykgeworICAg
IHN0ZDo6bWFwPHVpbnQzMl90LCBkb3VibGU+OjppdGVyYXRvciBpdDsKKyAgICBmb3IgKGl0ID0g
b3V0cHV0X3NjYWxpbmdzXy5iZWdpbigpOyBpdCAhPSBvdXRwdXRfc2NhbGluZ3NfLmVuZCgpOyAr
K2l0KSB7CisgICAgICBpdC0+c2Vjb25kID0gdm9sdW1lOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKKyAgfSBlbHNlIGlmIChvdXRwdXRfc2NhbGluZ3NfLmZpbmQoc3NyYykgIT0gb3V0cHV0X3Nj
YWxpbmdzXy5lbmQoKSkgeworICAgIG91dHB1dF9zY2FsaW5nc19bc3NyY10gPSB2b2x1bWU7Cisg
ICAgcmV0dXJuIHRydWU7CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorYm9vbCBGYWtlVm9pY2VN
ZWRpYUNoYW5uZWw6OkdldE91dHB1dFZvbHVtZSh1aW50MzJfdCBzc3JjLCBkb3VibGUqIHZvbHVt
ZSkgeworICBpZiAob3V0cHV0X3NjYWxpbmdzXy5maW5kKHNzcmMpID09IG91dHB1dF9zY2FsaW5n
c18uZW5kKCkpCisgICAgcmV0dXJuIGZhbHNlOworICAqdm9sdW1lID0gb3V0cHV0X3NjYWxpbmdz
X1tzc3JjXTsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6
R2V0U3RhdHMoVm9pY2VNZWRpYUluZm8qIGluZm8pIHsKKyAgcmV0dXJuIGZhbHNlOworfQordm9p
ZCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlNldFJhd0F1ZGlvU2luaygKKyAgICB1aW50MzJfdCBz
c3JjLAorICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkF1ZGlvU2lua0ludGVyZmFjZT4gc2lu
aykgeworICBzaW5rXyA9IHN0ZDo6bW92ZShzaW5rKTsKK30KK3N0ZDo6dmVjdG9yPHdlYnJ0Yzo6
UnRwU291cmNlPiBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OkdldFNvdXJjZXMoCisgICAgdWludDMy
X3Qgc3NyYykgY29uc3QgeworICByZXR1cm4gc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+
KCk7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0UmVjdkNvZGVjcygKKyAgICBj
b25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKSB7CisgIGlmIChmYWlsX3NldF9y
ZWN2X2NvZGVjcygpKSB7CisgICAgLy8gRmFrZSB0aGUgZmFpbHVyZSBpbiBTZXRSZWN2Q29kZWNz
LgorICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZWN2X2NvZGVjc18gPSBjb2RlY3M7CisgIHJl
dHVybiB0cnVlOworfQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlNldFNlbmRDb2RlY3Mo
CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGNvZGVjcykgeworICBpZiAoZmFp
bF9zZXRfc2VuZF9jb2RlY3MoKSkgeworICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0U2Vu
ZENvZGVjcy4KKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgc2VuZF9jb2RlY3NfID0gY29kZWNz
OworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRNYXhT
ZW5kQmFuZHdpZHRoKGludCBicHMpIHsKKyAgbWF4X2Jwc18gPSBicHM7CisgIHJldHVybiB0cnVl
OworfQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlNldE9wdGlvbnMoY29uc3QgQXVkaW9P
cHRpb25zJiBvcHRpb25zKSB7CisgIC8vIERvZXMgYSAibWVyZ2UiIG9mIGN1cnJlbnQgb3B0aW9u
cyBhbmQgc2V0IG9wdGlvbnMuCisgIG9wdGlvbnNfLlNldEFsbChvcHRpb25zKTsKKyAgcmV0dXJu
IHRydWU7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0TG9jYWxTb3VyY2UodWlu
dDMyX3Qgc3NyYywgQXVkaW9Tb3VyY2UqIHNvdXJjZSkgeworICBhdXRvIGl0ID0gbG9jYWxfc2lu
a3NfLmZpbmQoc3NyYyk7CisgIGlmIChzb3VyY2UpIHsKKyAgICBpZiAoaXQgIT0gbG9jYWxfc2lu
a3NfLmVuZCgpKSB7CisgICAgICBSVENfQ0hFQ0soaXQtPnNlY29uZC0+c291cmNlKCkgPT0gc291
cmNlKTsKKyAgICB9IGVsc2UgeworICAgICAgbG9jYWxfc2lua3NfLmluc2VydChzdGQ6Om1ha2Vf
cGFpcigKKyAgICAgICAgICBzc3JjLCBhYnNsOjptYWtlX3VuaXF1ZTxWb2ljZUNoYW5uZWxBdWRp
b1Npbms+KHNvdXJjZSkpKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKGl0ICE9IGxvY2Fs
X3NpbmtzXy5lbmQoKSkgeworICAgICAgbG9jYWxfc2lua3NfLmVyYXNlKGl0KTsKKyAgICB9Cisg
IH0KKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ29tcGFyZUR0bWZJbmZvKGNvbnN0IEZha2VW
b2ljZU1lZGlhQ2hhbm5lbDo6RHRtZkluZm8mIGluZm8sCisgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCBzc3JjLAorICAgICAgICAgICAgICAgICAgICAgaW50IGV2ZW50X2NvZGUsCisgICAg
ICAgICAgICAgICAgICAgICBpbnQgZHVyYXRpb24pIHsKKyAgcmV0dXJuIChpbmZvLmR1cmF0aW9u
ID09IGR1cmF0aW9uICYmIGluZm8uZXZlbnRfY29kZSA9PSBldmVudF9jb2RlICYmCisgICAgICAg
ICAgaW5mby5zc3JjID09IHNzcmMpOworfQorCitGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OkZha2VW
aWRlb01lZGlhQ2hhbm5lbChGYWtlVmlkZW9FbmdpbmUqIGVuZ2luZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9u
cykKKyAgICA6IGVuZ2luZV8oZW5naW5lKSwgbWF4X2Jwc18oLTEpIHsKKyAgU2V0T3B0aW9ucyhv
cHRpb25zKTsKK30KK0Zha2VWaWRlb01lZGlhQ2hhbm5lbDo6fkZha2VWaWRlb01lZGlhQ2hhbm5l
bCgpIHsKKyAgaWYgKGVuZ2luZV8pIHsKKyAgICBlbmdpbmVfLT5VbnJlZ2lzdGVyQ2hhbm5lbCh0
aGlzKTsKKyAgfQorfQorY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIEZha2VWaWRlb01l
ZGlhQ2hhbm5lbDo6cmVjdl9jb2RlY3MoKSBjb25zdCB7CisgIHJldHVybiByZWN2X2NvZGVjc187
Cit9Citjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgRmFrZVZpZGVvTWVkaWFDaGFubmVs
OjpzZW5kX2NvZGVjcygpIGNvbnN0IHsKKyAgcmV0dXJuIHNlbmRfY29kZWNzXzsKK30KK2NvbnN0
IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OmNvZGVjcygp
IGNvbnN0IHsKKyAgcmV0dXJuIHNlbmRfY29kZWNzKCk7Cit9Citib29sIEZha2VWaWRlb01lZGlh
Q2hhbm5lbDo6cmVuZGVyaW5nKCkgY29uc3QgeworICByZXR1cm4gcGxheW91dCgpOworfQorY29u
c3QgVmlkZW9PcHRpb25zJiBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6Om9wdGlvbnMoKSBjb25zdCB7
CisgIHJldHVybiBvcHRpb25zXzsKK30KK2NvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBydGM6OlZp
ZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+Kj4mCitGYWtlVmlkZW9NZWRpYUNo
YW5uZWw6OnNpbmtzKCkgY29uc3QgeworICByZXR1cm4gc2lua3NfOworfQoraW50IEZha2VWaWRl
b01lZGlhQ2hhbm5lbDo6bWF4X2JwcygpIGNvbnN0IHsKKyAgcmV0dXJuIG1heF9icHNfOworfQor
Ym9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OlNldFNlbmRQYXJhbWV0ZXJzKAorICAgIGNvbnN0
IFZpZGVvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgeworICBzZXRfc2VuZF9ydGNwX3BhcmFtZXRl
cnMocGFyYW1zLnJ0Y3ApOworICByZXR1cm4gKFNldFNlbmRDb2RlY3MocGFyYW1zLmNvZGVjcykg
JiYKKyAgICAgICAgICBTZXRTZW5kRXh0bWFwQWxsb3dNaXhlZChwYXJhbXMuZXh0bWFwX2FsbG93
X21peGVkKSAmJgorICAgICAgICAgIFNldFNlbmRSdHBIZWFkZXJFeHRlbnNpb25zKHBhcmFtcy5l
eHRlbnNpb25zKSAmJgorICAgICAgICAgIFNldE1heFNlbmRCYW5kd2lkdGgocGFyYW1zLm1heF9i
YW5kd2lkdGhfYnBzKSk7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6U2V0UmVjdlBh
cmFtZXRlcnMoCisgICAgY29uc3QgVmlkZW9SZWN2UGFyYW1ldGVycyYgcGFyYW1zKSB7CisgIHNl
dF9yZWN2X3J0Y3BfcGFyYW1ldGVycyhwYXJhbXMucnRjcCk7CisgIHJldHVybiAoU2V0UmVjdkNv
ZGVjcyhwYXJhbXMuY29kZWNzKSAmJgorICAgICAgICAgIFNldFJlY3ZSdHBIZWFkZXJFeHRlbnNp
b25zKHBhcmFtcy5leHRlbnNpb25zKSk7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6
QWRkU2VuZFN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSB7CisgIHJldHVybiBSdHBIZWxw
ZXI8VmlkZW9NZWRpYUNoYW5uZWw+OjpBZGRTZW5kU3RyZWFtKHNwKTsKK30KK2Jvb2wgRmFrZVZp
ZGVvTWVkaWFDaGFubmVsOjpSZW1vdmVTZW5kU3RyZWFtKHVpbnQzMl90IHNzcmMpIHsKKyAgcmV0
dXJuIFJ0cEhlbHBlcjxWaWRlb01lZGlhQ2hhbm5lbD46OlJlbW92ZVNlbmRTdHJlYW0oc3NyYyk7
Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6R2V0U2VuZENvZGVjKFZpZGVvQ29kZWMq
IHNlbmRfY29kZWMpIHsKKyAgaWYgKHNlbmRfY29kZWNzXy5lbXB0eSgpKSB7CisgICAgcmV0dXJu
IGZhbHNlOworICB9CisgICpzZW5kX2NvZGVjID0gc2VuZF9jb2RlY3NfWzBdOworICByZXR1cm4g
dHJ1ZTsKK30KK2Jvb2wgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpTZXRTaW5rKAorICAgIHVpbnQz
Ml90IHNzcmMsCisgICAgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1l
Piogc2luaykgeworICBpZiAoc3NyYyAhPSAwICYmIHNpbmtzXy5maW5kKHNzcmMpID09IHNpbmtz
Xy5lbmQoKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAoc3NyYyAhPSAwKSB7Cisg
ICAgc2lua3NfW3NzcmNdID0gc2luazsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFr
ZVZpZGVvTWVkaWFDaGFubmVsOjpIYXNTaW5rKHVpbnQzMl90IHNzcmMpIGNvbnN0IHsKKyAgcmV0
dXJuIHNpbmtzXy5maW5kKHNzcmMpICE9IHNpbmtzXy5lbmQoKSAmJiBzaW5rc18uYXQoc3NyYykg
IT0gbnVsbHB0cjsKK30KK2Jvb2wgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpTZXRTZW5kKGJvb2wg
c2VuZCkgeworICByZXR1cm4gc2V0X3NlbmRpbmcoc2VuZCk7Cit9Citib29sIEZha2VWaWRlb01l
ZGlhQ2hhbm5lbDo6U2V0VmlkZW9TZW5kKAorICAgIHVpbnQzMl90IHNzcmMsCisgICAgY29uc3Qg
VmlkZW9PcHRpb25zKiBvcHRpb25zLAorICAgIHJ0Yzo6VmlkZW9Tb3VyY2VJbnRlcmZhY2U8d2Vi
cnRjOjpWaWRlb0ZyYW1lPiogc291cmNlKSB7CisgIGlmIChvcHRpb25zKSB7CisgICAgaWYgKCFT
ZXRPcHRpb25zKCpvcHRpb25zKSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQor
ICBzb3VyY2VzX1tzc3JjXSA9IHNvdXJjZTsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VW
aWRlb01lZGlhQ2hhbm5lbDo6SGFzU291cmNlKHVpbnQzMl90IHNzcmMpIGNvbnN0IHsKKyAgcmV0
dXJuIHNvdXJjZXNfLmZpbmQoc3NyYykgIT0gc291cmNlc18uZW5kKCkgJiYgc291cmNlc18uYXQo
c3NyYykgIT0gbnVsbHB0cjsKK30KK2Jvb2wgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpBZGRSZWN2
U3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIHsKKyAgaWYgKCFSdHBIZWxwZXI8VmlkZW9N
ZWRpYUNoYW5uZWw+OjpBZGRSZWN2U3RyZWFtKHNwKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHNp
bmtzX1tzcC5maXJzdF9zc3JjKCldID0gTlVMTDsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZh
a2VWaWRlb01lZGlhQ2hhbm5lbDo6UmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSB7Cisg
IGlmICghUnRwSGVscGVyPFZpZGVvTWVkaWFDaGFubmVsPjo6UmVtb3ZlUmVjdlN0cmVhbShzc3Jj
KSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHNpbmtzXy5lcmFzZShzc3JjKTsKKyAgcmV0dXJuIHRy
dWU7Cit9Cit2b2lkIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6RmlsbEJpdHJhdGVJbmZvKEJhbmR3
aWR0aEVzdGltYXRpb25JbmZvKiBid2VfaW5mbykgeworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNo
YW5uZWw6OkdldFN0YXRzKFZpZGVvTWVkaWFJbmZvKiBpbmZvKSB7CisgIHJldHVybiBmYWxzZTsK
K30KK3N0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNlPiBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6
OkdldFNvdXJjZXMoCisgICAgdWludDMyX3Qgc3NyYykgY29uc3QgeworICByZXR1cm4ge307Cit9
Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6U2V0UmVjdkNvZGVjcygKKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKSB7CisgIGlmIChmYWlsX3NldF9yZWN2X2Nv
ZGVjcygpKSB7CisgICAgLy8gRmFrZSB0aGUgZmFpbHVyZSBpbiBTZXRSZWN2Q29kZWNzLgorICAg
IHJldHVybiBmYWxzZTsKKyAgfQorICByZWN2X2NvZGVjc18gPSBjb2RlY3M7CisgIHJldHVybiB0
cnVlOworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OlNldFNlbmRDb2RlY3MoCisgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNvZGVjcykgeworICBpZiAoZmFpbF9zZXRf
c2VuZF9jb2RlY3MoKSkgeworICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0U2VuZENvZGVj
cy4KKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgc2VuZF9jb2RlY3NfID0gY29kZWNzOworCisg
IHJldHVybiB0cnVlOworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OlNldE9wdGlvbnMo
Y29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKSB7CisgIG9wdGlvbnNfID0gb3B0aW9uczsKKyAg
cmV0dXJuIHRydWU7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6U2V0TWF4U2VuZEJh
bmR3aWR0aChpbnQgYnBzKSB7CisgIG1heF9icHNfID0gYnBzOworICByZXR1cm4gdHJ1ZTsKK30K
KworRmFrZURhdGFNZWRpYUNoYW5uZWw6OkZha2VEYXRhTWVkaWFDaGFubmVsKHZvaWQqIHVudXNl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEYXRh
T3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IHNlbmRfYmxvY2tlZF8oZmFsc2UpLCBtYXhfYnBzXygt
MSkge30KK0Zha2VEYXRhTWVkaWFDaGFubmVsOjp+RmFrZURhdGFNZWRpYUNoYW5uZWwoKSB7fQor
Y29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgRmFrZURhdGFNZWRpYUNoYW5uZWw6OnJlY3Zf
Y29kZWNzKCkgY29uc3QgeworICByZXR1cm4gcmVjdl9jb2RlY3NfOworfQorY29uc3Qgc3RkOjp2
ZWN0b3I8RGF0YUNvZGVjPiYgRmFrZURhdGFNZWRpYUNoYW5uZWw6OnNlbmRfY29kZWNzKCkgY29u
c3QgeworICByZXR1cm4gc2VuZF9jb2RlY3NfOworfQorY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNv
ZGVjPiYgRmFrZURhdGFNZWRpYUNoYW5uZWw6OmNvZGVjcygpIGNvbnN0IHsKKyAgcmV0dXJuIHNl
bmRfY29kZWNzKCk7Cit9CitpbnQgRmFrZURhdGFNZWRpYUNoYW5uZWw6Om1heF9icHMoKSBjb25z
dCB7CisgIHJldHVybiBtYXhfYnBzXzsKK30KK2Jvb2wgRmFrZURhdGFNZWRpYUNoYW5uZWw6OlNl
dFNlbmRQYXJhbWV0ZXJzKGNvbnN0IERhdGFTZW5kUGFyYW1ldGVycyYgcGFyYW1zKSB7CisgIHNl
dF9zZW5kX3J0Y3BfcGFyYW1ldGVycyhwYXJhbXMucnRjcCk7CisgIHJldHVybiAoU2V0U2VuZENv
ZGVjcyhwYXJhbXMuY29kZWNzKSAmJgorICAgICAgICAgIFNldE1heFNlbmRCYW5kd2lkdGgocGFy
YW1zLm1heF9iYW5kd2lkdGhfYnBzKSk7Cit9Citib29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpT
ZXRSZWN2UGFyYW1ldGVycyhjb25zdCBEYXRhUmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgeworICBz
ZXRfcmVjdl9ydGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOworICByZXR1cm4gU2V0UmVjdkNv
ZGVjcyhwYXJhbXMuY29kZWNzKTsKK30KK2Jvb2wgRmFrZURhdGFNZWRpYUNoYW5uZWw6OlNldFNl
bmQoYm9vbCBzZW5kKSB7CisgIHJldHVybiBzZXRfc2VuZGluZyhzZW5kKTsKK30KK2Jvb2wgRmFr
ZURhdGFNZWRpYUNoYW5uZWw6OlNldFJlY2VpdmUoYm9vbCByZWNlaXZlKSB7CisgIHNldF9wbGF5
b3V0KHJlY2VpdmUpOworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZURhdGFNZWRpYUNoYW5u
ZWw6OkFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgeworICBpZiAoIVJ0cEhl
bHBlcjxEYXRhTWVkaWFDaGFubmVsPjo6QWRkUmVjdlN0cmVhbShzcCkpCisgICAgcmV0dXJuIGZh
bHNlOworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZURhdGFNZWRpYUNoYW5uZWw6OlJlbW92
ZVJlY3ZTdHJlYW0odWludDMyX3Qgc3NyYykgeworICBpZiAoIVJ0cEhlbHBlcjxEYXRhTWVkaWFD
aGFubmVsPjo6UmVtb3ZlUmVjdlN0cmVhbShzc3JjKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJl
dHVybiB0cnVlOworfQorYm9vbCBGYWtlRGF0YU1lZGlhQ2hhbm5lbDo6U2VuZERhdGEoY29uc3Qg
U2VuZERhdGFQYXJhbXMmIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIHBheWxvYWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTZW5kRGF0YVJlc3VsdCogcmVzdWx0KSB7CisgIGlmIChz
ZW5kX2Jsb2NrZWRfKSB7CisgICAgKnJlc3VsdCA9IFNEUl9CTE9DSzsKKyAgICByZXR1cm4gZmFs
c2U7CisgIH0gZWxzZSB7CisgICAgbGFzdF9zZW50X2RhdGFfcGFyYW1zXyA9IHBhcmFtczsKKyAg
ICBsYXN0X3NlbnRfZGF0YV8gPSBzdGQ6OnN0cmluZyhwYXlsb2FkLmRhdGE8Y2hhcj4oKSwgcGF5
bG9hZC5zaXplKCkpOworICAgIHJldHVybiB0cnVlOworICB9Cit9CitTZW5kRGF0YVBhcmFtcyBG
YWtlRGF0YU1lZGlhQ2hhbm5lbDo6bGFzdF9zZW50X2RhdGFfcGFyYW1zKCkgeworICByZXR1cm4g
bGFzdF9zZW50X2RhdGFfcGFyYW1zXzsKK30KK3N0ZDo6c3RyaW5nIEZha2VEYXRhTWVkaWFDaGFu
bmVsOjpsYXN0X3NlbnRfZGF0YSgpIHsKKyAgcmV0dXJuIGxhc3Rfc2VudF9kYXRhXzsKK30KK2Jv
b2wgRmFrZURhdGFNZWRpYUNoYW5uZWw6OmlzX3NlbmRfYmxvY2tlZCgpIHsKKyAgcmV0dXJuIHNl
bmRfYmxvY2tlZF87Cit9Cit2b2lkIEZha2VEYXRhTWVkaWFDaGFubmVsOjpzZXRfc2VuZF9ibG9j
a2VkKGJvb2wgYmxvY2tlZCkgeworICBzZW5kX2Jsb2NrZWRfID0gYmxvY2tlZDsKK30KK2Jvb2wg
RmFrZURhdGFNZWRpYUNoYW5uZWw6OlNldFJlY3ZDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8RGF0
YUNvZGVjPiYgY29kZWNzKSB7CisgIGlmIChmYWlsX3NldF9yZWN2X2NvZGVjcygpKSB7CisgICAg
Ly8gRmFrZSB0aGUgZmFpbHVyZSBpbiBTZXRSZWN2Q29kZWNzLgorICAgIHJldHVybiBmYWxzZTsK
KyAgfQorICByZWN2X2NvZGVjc18gPSBjb2RlY3M7CisgIHJldHVybiB0cnVlOworfQorYm9vbCBG
YWtlRGF0YU1lZGlhQ2hhbm5lbDo6U2V0U2VuZENvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxEYXRh
Q29kZWM+JiBjb2RlY3MpIHsKKyAgaWYgKGZhaWxfc2V0X3NlbmRfY29kZWNzKCkpIHsKKyAgICAv
LyBGYWtlIHRoZSBmYWlsdXJlIGluIFNldFNlbmRDb2RlY3MuCisgICAgcmV0dXJuIGZhbHNlOwor
ICB9CisgIHNlbmRfY29kZWNzXyA9IGNvZGVjczsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZh
a2VEYXRhTWVkaWFDaGFubmVsOjpTZXRNYXhTZW5kQmFuZHdpZHRoKGludCBicHMpIHsKKyAgbWF4
X2Jwc18gPSBicHM7CisgIHJldHVybiB0cnVlOworfQorCitGYWtlVm9pY2VFbmdpbmU6OkZha2VW
b2ljZUVuZ2luZSgpIDogZmFpbF9jcmVhdGVfY2hhbm5lbF8oZmFsc2UpIHsKKyAgLy8gQWRkIGEg
ZmFrZSBhdWRpbyBjb2RlYy4gTm90ZSB0aGF0IHRoZSBuYW1lIG11c3Qgbm90IGJlICIiIGFzIHRo
ZXJlIGFyZQorICAvLyBzYW5pdHkgY2hlY2tzIGFnYWluc3QgdGhhdC4KKyAgY29kZWNzXy5wdXNo
X2JhY2soQXVkaW9Db2RlYygxMDEsICJmYWtlX2F1ZGlvX2NvZGVjIiwgMCwgMCwgMSkpOworfQor
UnRwQ2FwYWJpbGl0aWVzIEZha2VWb2ljZUVuZ2luZTo6R2V0Q2FwYWJpbGl0aWVzKCkgY29uc3Qg
eworICByZXR1cm4gUnRwQ2FwYWJpbGl0aWVzKCk7Cit9Cit2b2lkIEZha2VWb2ljZUVuZ2luZTo6
SW5pdCgpIHt9CitydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiBGYWtlVm9p
Y2VFbmdpbmU6OkdldEF1ZGlvU3RhdGUoKSBjb25zdCB7CisgIHJldHVybiBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPigpOworfQorVm9pY2VNZWRpYUNoYW5uZWwqIEZha2VW
b2ljZUVuZ2luZTo6Q3JlYXRlTWVkaWFDaGFubmVsKAorICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwK
KyAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAorICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYg
b3B0aW9ucywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25z
KSB7CisgIGlmIChmYWlsX2NyZWF0ZV9jaGFubmVsXykgeworICAgIHJldHVybiBudWxscHRyOwor
ICB9CisKKyAgRmFrZVZvaWNlTWVkaWFDaGFubmVsKiBjaCA9IG5ldyBGYWtlVm9pY2VNZWRpYUNo
YW5uZWwodGhpcywgb3B0aW9ucyk7CisgIGNoYW5uZWxzXy5wdXNoX2JhY2soY2gpOworICByZXR1
cm4gY2g7Cit9CitGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIEZha2VWb2ljZUVuZ2luZTo6R2V0Q2hh
bm5lbChzaXplX3QgaW5kZXgpIHsKKyAgcmV0dXJuIChjaGFubmVsc18uc2l6ZSgpID4gaW5kZXgp
ID8gY2hhbm5lbHNfW2luZGV4XSA6IE5VTEw7Cit9Cit2b2lkIEZha2VWb2ljZUVuZ2luZTo6VW5y
ZWdpc3RlckNoYW5uZWwoVm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5uZWwpIHsKKyAgY2hhbm5lbHNf
LmVyYXNlKHN0ZDo6ZmluZChjaGFubmVsc18uYmVnaW4oKSwgY2hhbm5lbHNfLmVuZCgpLCBjaGFu
bmVsKSk7Cit9Citjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgRmFrZVZvaWNlRW5naW5l
OjpzZW5kX2NvZGVjcygpIGNvbnN0IHsKKyAgcmV0dXJuIGNvZGVjc187Cit9Citjb25zdCBzdGQ6
OnZlY3RvcjxBdWRpb0NvZGVjPiYgRmFrZVZvaWNlRW5naW5lOjpyZWN2X2NvZGVjcygpIGNvbnN0
IHsKKyAgcmV0dXJuIGNvZGVjc187Cit9Cit2b2lkIEZha2VWb2ljZUVuZ2luZTo6U2V0Q29kZWNz
KGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MpIHsKKyAgY29kZWNzXyA9IGNv
ZGVjczsKK30KK2ludCBGYWtlVm9pY2VFbmdpbmU6OkdldElucHV0TGV2ZWwoKSB7CisgIHJldHVy
biAwOworfQorYm9vbCBGYWtlVm9pY2VFbmdpbmU6OlN0YXJ0QWVjRHVtcChydGM6OlBsYXRmb3Jt
RmlsZSBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG1h
eF9zaXplX2J5dGVzKSB7CisgIHJldHVybiBmYWxzZTsKK30KK3ZvaWQgRmFrZVZvaWNlRW5naW5l
OjpTdG9wQWVjRHVtcCgpIHt9Citib29sIEZha2VWb2ljZUVuZ2luZTo6U3RhcnRSdGNFdmVudExv
ZyhydGM6OlBsYXRmb3JtRmlsZSBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50NjRfdCBtYXhfc2l6ZV9ieXRlcykgeworICByZXR1cm4gZmFsc2U7Cit9Cit2
b2lkIEZha2VWb2ljZUVuZ2luZTo6U3RvcFJ0Y0V2ZW50TG9nKCkge30KKworRmFrZVZpZGVvRW5n
aW5lOjpGYWtlVmlkZW9FbmdpbmUoKQorICAgIDogY2FwdHVyZV8oZmFsc2UpLCBmYWlsX2NyZWF0
ZV9jaGFubmVsXyhmYWxzZSkgeworICAvLyBBZGQgYSBmYWtlIHZpZGVvIGNvZGVjLiBOb3RlIHRo
YXQgdGhlIG5hbWUgbXVzdCBub3QgYmUgIiIgYXMgdGhlcmUgYXJlCisgIC8vIHNhbml0eSBjaGVj
a3MgYWdhaW5zdCB0aGF0LgorICBjb2RlY3NfLnB1c2hfYmFjayhWaWRlb0NvZGVjKDAsICJmYWtl
X3ZpZGVvX2NvZGVjIikpOworfQorUnRwQ2FwYWJpbGl0aWVzIEZha2VWaWRlb0VuZ2luZTo6R2V0
Q2FwYWJpbGl0aWVzKCkgY29uc3QgeworICByZXR1cm4gUnRwQ2FwYWJpbGl0aWVzKCk7Cit9Citi
b29sIEZha2VWaWRlb0VuZ2luZTo6U2V0T3B0aW9ucyhjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlv
bnMpIHsKKyAgb3B0aW9uc18gPSBvcHRpb25zOworICByZXR1cm4gdHJ1ZTsKK30KK1ZpZGVvTWVk
aWFDaGFubmVsKiBGYWtlVmlkZW9FbmdpbmU6OkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICB3ZWJy
dGM6OkNhbGwqIGNhbGwsCisgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKKyAgICBjb25z
dCBWaWRlb09wdGlvbnMmIG9wdGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25z
JiBjcnlwdG9fb3B0aW9ucykgeworICBpZiAoZmFpbF9jcmVhdGVfY2hhbm5lbF8pIHsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgfQorCisgIEZha2VWaWRlb01lZGlhQ2hhbm5lbCogY2ggPSBuZXcg
RmFrZVZpZGVvTWVkaWFDaGFubmVsKHRoaXMsIG9wdGlvbnMpOworICBjaGFubmVsc18uZW1wbGFj
ZV9iYWNrKGNoKTsKKyAgcmV0dXJuIGNoOworfQorRmFrZVZpZGVvTWVkaWFDaGFubmVsKiBGYWtl
VmlkZW9FbmdpbmU6OkdldENoYW5uZWwoc2l6ZV90IGluZGV4KSB7CisgIHJldHVybiAoY2hhbm5l
bHNfLnNpemUoKSA+IGluZGV4KSA/IGNoYW5uZWxzX1tpbmRleF0gOiBudWxscHRyOworfQordm9p
ZCBGYWtlVmlkZW9FbmdpbmU6OlVucmVnaXN0ZXJDaGFubmVsKFZpZGVvTWVkaWFDaGFubmVsKiBj
aGFubmVsKSB7CisgIGF1dG8gaXQgPSBzdGQ6OmZpbmQoY2hhbm5lbHNfLmJlZ2luKCksIGNoYW5u
ZWxzXy5lbmQoKSwgY2hhbm5lbCk7CisgIFJUQ19EQ0hFQ0soaXQgIT0gY2hhbm5lbHNfLmVuZCgp
KTsKKyAgY2hhbm5lbHNfLmVyYXNlKGl0KTsKK30KK3N0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IEZh
a2VWaWRlb0VuZ2luZTo6Y29kZWNzKCkgY29uc3QgeworICByZXR1cm4gY29kZWNzXzsKK30KK3Zv
aWQgRmFrZVZpZGVvRW5naW5lOjpTZXRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2Rl
Yz4gY29kZWNzKSB7CisgIGNvZGVjc18gPSBjb2RlY3M7Cit9Citib29sIEZha2VWaWRlb0VuZ2lu
ZTo6U2V0Q2FwdHVyZShib29sIGNhcHR1cmUpIHsKKyAgY2FwdHVyZV8gPSBjYXB0dXJlOworICBy
ZXR1cm4gdHJ1ZTsKK30KKworRmFrZU1lZGlhRW5naW5lOjpGYWtlTWVkaWFFbmdpbmUoKQorICAg
IDogQ29tcG9zaXRlTWVkaWFFbmdpbmUoYWJzbDo6bWFrZV91bmlxdWU8RmFrZVZvaWNlRW5naW5l
PigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZVZp
ZGVvRW5naW5lPigpKSwKKyAgICAgIHZvaWNlXyhzdGF0aWNfY2FzdDxGYWtlVm9pY2VFbmdpbmUq
Pigmdm9pY2UoKSkpLAorICAgICAgdmlkZW9fKHN0YXRpY19jYXN0PEZha2VWaWRlb0VuZ2luZSo+
KCZ2aWRlbygpKSkge30KK0Zha2VNZWRpYUVuZ2luZTo6fkZha2VNZWRpYUVuZ2luZSgpIHt9Cit2
b2lkIEZha2VNZWRpYUVuZ2luZTo6U2V0QXVkaW9Db2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8QXVk
aW9Db2RlYz4mIGNvZGVjcykgeworICB2b2ljZV8tPlNldENvZGVjcyhjb2RlY3MpOworfQordm9p
ZCBGYWtlTWVkaWFFbmdpbmU6OlNldFZpZGVvQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVv
Q29kZWM+JiBjb2RlY3MpIHsKKyAgdmlkZW9fLT5TZXRDb2RlY3MoY29kZWNzKTsKK30KKworRmFr
ZVZvaWNlTWVkaWFDaGFubmVsKiBGYWtlTWVkaWFFbmdpbmU6OkdldFZvaWNlQ2hhbm5lbChzaXpl
X3QgaW5kZXgpIHsKKyAgcmV0dXJuIHZvaWNlXy0+R2V0Q2hhbm5lbChpbmRleCk7Cit9CitGYWtl
VmlkZW9NZWRpYUNoYW5uZWwqIEZha2VNZWRpYUVuZ2luZTo6R2V0VmlkZW9DaGFubmVsKHNpemVf
dCBpbmRleCkgeworICByZXR1cm4gdmlkZW9fLT5HZXRDaGFubmVsKGluZGV4KTsKK30KKwordm9p
ZCBGYWtlTWVkaWFFbmdpbmU6OnNldF9mYWlsX2NyZWF0ZV9jaGFubmVsKGJvb2wgZmFpbCkgewor
ICB2b2ljZV8tPmZhaWxfY3JlYXRlX2NoYW5uZWxfID0gZmFpbDsKKyAgdmlkZW9fLT5mYWlsX2Ny
ZWF0ZV9jaGFubmVsXyA9IGZhaWw7Cit9CisKK0RhdGFNZWRpYUNoYW5uZWwqIEZha2VEYXRhRW5n
aW5lOjpDcmVhdGVDaGFubmVsKGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcpIHsKKyAgRmFrZURh
dGFNZWRpYUNoYW5uZWwqIGNoID0gbmV3IEZha2VEYXRhTWVkaWFDaGFubmVsKHRoaXMsIERhdGFP
cHRpb25zKCkpOworICBjaGFubmVsc18ucHVzaF9iYWNrKGNoKTsKKyAgcmV0dXJuIGNoOworfQor
RmFrZURhdGFNZWRpYUNoYW5uZWwqIEZha2VEYXRhRW5naW5lOjpHZXRDaGFubmVsKHNpemVfdCBp
bmRleCkgeworICByZXR1cm4gKGNoYW5uZWxzXy5zaXplKCkgPiBpbmRleCkgPyBjaGFubmVsc19b
aW5kZXhdIDogTlVMTDsKK30KK3ZvaWQgRmFrZURhdGFFbmdpbmU6OlVucmVnaXN0ZXJDaGFubmVs
KERhdGFNZWRpYUNoYW5uZWwqIGNoYW5uZWwpIHsKKyAgY2hhbm5lbHNfLmVyYXNlKHN0ZDo6Zmlu
ZChjaGFubmVsc18uYmVnaW4oKSwgY2hhbm5lbHNfLmVuZCgpLCBjaGFubmVsKSk7Cit9Cit2b2lk
IEZha2VEYXRhRW5naW5lOjpTZXREYXRhQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2Rl
Yz4mIGRhdGFfY29kZWNzKSB7CisgIGRhdGFfY29kZWNzXyA9IGRhdGFfY29kZWNzOworfQorY29u
c3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgRmFrZURhdGFFbmdpbmU6OmRhdGFfY29kZWNzKCkg
eworICByZXR1cm4gZGF0YV9jb2RlY3NfOworfQorCit9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmgKaW5kZXggNjJiZDZiYTVi
YTUwZjIxNGE2OWY5ZjcxYmI0MzZmM2U5ZjE2MWRlYS4uZTNhMDYzODcxNTI4MmNiYTdhMjFiYjFm
NzVkYzFlYTY2ZmNkNjQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2Zha2VtZWRpYWVu
Z2luZS5oCkBAIC0xNywxMCArMTcsOCBAQAogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJp
bmc+CiAjaW5jbHVkZSA8dHVwbGU+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvY2Fs
bC9hdWRpb19zaW5rLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9hdWRpb3NvdXJjZS5oIgogI2lu
Y2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFlbmdpbmUuaCIKQEAgLTI4LDEwICsyNiw4IEBACiAjaW5j
bHVkZSAibWVkaWEvYmFzZS9zdHJlYW1wYXJhbXMuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUv
d2VicnRjdmlkZW9lbmdpbmUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
aW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9uZXR3b3Jrcm91dGUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgog
CiB1c2luZyB3ZWJydGM6OlJ0cEV4dGVuc2lvbjsKIApAQCAtMTI4LDcgKzEyNCw3IEBAIGNsYXNz
IFJ0cEhlbHBlciA6IHB1YmxpYyBCYXNlIHsKICAgICB9CiAgICAgcmVjZWl2ZV9zdHJlYW1zXy5w
dXNoX2JhY2soc3ApOwogICAgIHJ0cF9yZWNlaXZlX3BhcmFtZXRlcnNfW3NwLmZpcnN0X3NzcmMo
KV0gPQotICAgICAgICBDcmVhdGVSdHBQYXJhbWV0ZXJzV2l0aE9uZUVuY29kaW5nKCk7CisgICAg
ICAgIENyZWF0ZVJ0cFBhcmFtZXRlcnNXaXRoRW5jb2RpbmdzKHNwKTsKICAgICByZXR1cm4gdHJ1
ZTsKICAgfQogICB2aXJ0dWFsIGJvb2wgUmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSB7
CkBAIC0yNTYsNiArMjUyLDEyIEBAIGNsYXNzIFJ0cEhlbHBlciA6IHB1YmxpYyBCYXNlIHsKICAg
ICByZWN2X2V4dGVuc2lvbnNfID0gZXh0ZW5zaW9uczsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQor
ICBib29sIFNldFNlbmRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSB7
CisgICAgaWYgKEJhc2U6OkV4dG1hcEFsbG93TWl4ZWQoKSAhPSBleHRtYXBfYWxsb3dfbWl4ZWQp
IHsKKyAgICAgIEJhc2U6OlNldEV4dG1hcEFsbG93TWl4ZWQoZXh0bWFwX2FsbG93X21peGVkKTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH0KICAgYm9vbCBTZXRTZW5kUnRwSGVhZGVyRXh0
ZW5zaW9ucyhjb25zdCBzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+JiBleHRlbnNpb25zKSB7CiAg
ICAgc2VuZF9leHRlbnNpb25zXyA9IGV4dGVuc2lvbnM7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0y
NjcsMTEgKzI2OSwxMSBAQCBjbGFzcyBSdHBIZWxwZXIgOiBwdWJsaWMgQmFzZSB7CiAgICAgcmVj
dl9ydGNwX3BhcmFtZXRlcnNfID0gcGFyYW1zOwogICB9CiAgIHZpcnR1YWwgdm9pZCBPblBhY2tl
dFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7
CiAgICAgcnRwX3BhY2tldHNfLnB1c2hfYmFjayhzdGQ6OnN0cmluZyhwYWNrZXQtPmRhdGE8Y2hh
cj4oKSwgcGFja2V0LT5zaXplKCkpKTsKICAgfQogICB2aXJ0dWFsIHZvaWQgT25SdGNwUmVjZWl2
ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICAgIHJ0Y3Bf
cGFja2V0c18ucHVzaF9iYWNrKHN0ZDo6c3RyaW5nKHBhY2tldC0+ZGF0YTxjaGFyPigpLCBwYWNr
ZXQtPnNpemUoKSkpOwogICB9CiAgIHZpcnR1YWwgdm9pZCBPblJlYWR5VG9TZW5kKGJvb2wgcmVh
ZHkpIHsgcmVhZHlfdG9fc2VuZF8gPSByZWFkeTsgfQpAQCAtMzEyLDE4NyArMzE0LDcyIEBAIGNs
YXNzIFJ0cEhlbHBlciA6IHB1YmxpYyBCYXNlIHsKIGNsYXNzIEZha2VWb2ljZU1lZGlhQ2hhbm5l
bCA6IHB1YmxpYyBSdHBIZWxwZXI8Vm9pY2VNZWRpYUNoYW5uZWw+IHsKICBwdWJsaWM6CiAgIHN0
cnVjdCBEdG1mSW5mbyB7Ci0gICAgRHRtZkluZm8odWludDMyX3Qgc3NyYywgaW50IGV2ZW50X2Nv
ZGUsIGludCBkdXJhdGlvbikKLSAgICAgICAgOiBzc3JjKHNzcmMpLCBldmVudF9jb2RlKGV2ZW50
X2NvZGUpLCBkdXJhdGlvbihkdXJhdGlvbikge30KKyAgICBEdG1mSW5mbyh1aW50MzJfdCBzc3Jj
LCBpbnQgZXZlbnRfY29kZSwgaW50IGR1cmF0aW9uKTsKICAgICB1aW50MzJfdCBzc3JjOwogICAg
IGludCBldmVudF9jb2RlOwogICAgIGludCBkdXJhdGlvbjsKICAgfTsKICAgZXhwbGljaXQgRmFr
ZVZvaWNlTWVkaWFDaGFubmVsKEZha2VWb2ljZUVuZ2luZSogZW5naW5lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKQotICAgICAg
OiBlbmdpbmVfKGVuZ2luZSksIG1heF9icHNfKC0xKSB7Ci0gICAgb3V0cHV0X3NjYWxpbmdzX1sw
XSA9IDEuMDsgIC8vIEZvciBkZWZhdWx0IGNoYW5uZWwuCi0gICAgU2V0T3B0aW9ucyhvcHRpb25z
KTsKLSAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRp
b25zJiBvcHRpb25zKTsKICAgfkZha2VWb2ljZU1lZGlhQ2hhbm5lbCgpOwotICBjb25zdCBzdGQ6
OnZlY3RvcjxBdWRpb0NvZGVjPiYgcmVjdl9jb2RlY3MoKSBjb25zdCB7IHJldHVybiByZWN2X2Nv
ZGVjc187IH0KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHNlbmRfY29kZWNzKCkg
Y29uc3QgeyByZXR1cm4gc2VuZF9jb2RlY3NfOyB9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlv
Q29kZWM+JiBjb2RlY3MoKSBjb25zdCB7IHJldHVybiBzZW5kX2NvZGVjcygpOyB9Ci0gIGNvbnN0
IHN0ZDo6dmVjdG9yPER0bWZJbmZvPiYgZHRtZl9pbmZvX3F1ZXVlKCkgY29uc3QgewotICAgIHJl
dHVybiBkdG1mX2luZm9fcXVldWVfOwotICB9Ci0gIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG9wdGlvbnNfOyB9Ci0gIGludCBtYXhfYnBzKCkgY29uc3QgeyBy
ZXR1cm4gbWF4X2Jwc187IH0KLSAgdmlydHVhbCBib29sIFNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0
IEF1ZGlvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgewotICAgIHNldF9zZW5kX3J0Y3BfcGFyYW1l
dGVycyhwYXJhbXMucnRjcCk7Ci0gICAgcmV0dXJuIChTZXRTZW5kQ29kZWNzKHBhcmFtcy5jb2Rl
Y3MpICYmCi0gICAgICAgICAgICBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJhbXMuZXh0
ZW5zaW9ucykgJiYKLSAgICAgICAgICAgIFNldE1heFNlbmRCYW5kd2lkdGgocGFyYW1zLm1heF9i
YW5kd2lkdGhfYnBzKSAmJgotICAgICAgICAgICAgU2V0T3B0aW9ucyhwYXJhbXMub3B0aW9ucykp
OwotICB9Ci0KLSAgdmlydHVhbCBib29sIFNldFJlY3ZQYXJhbWV0ZXJzKGNvbnN0IEF1ZGlvUmVj
dlBhcmFtZXRlcnMmIHBhcmFtcykgewotICAgIHNldF9yZWN2X3J0Y3BfcGFyYW1ldGVycyhwYXJh
bXMucnRjcCk7Ci0gICAgcmV0dXJuIChTZXRSZWN2Q29kZWNzKHBhcmFtcy5jb2RlY3MpICYmCi0g
ICAgICAgICAgICBTZXRSZWN2UnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJhbXMuZXh0ZW5zaW9ucykp
OwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFBsYXlvdXQoYm9vbCBwbGF5b3V0KSB7IHNldF9w
bGF5b3V0KHBsYXlvdXQpOyB9Ci0gIHZpcnR1YWwgdm9pZCBTZXRTZW5kKGJvb2wgc2VuZCkgeyBz
ZXRfc2VuZGluZyhzZW5kKTsgfQotICB2aXJ0dWFsIGJvb2wgU2V0QXVkaW9TZW5kKHVpbnQzMl90
IHNzcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRpb25zKiBvcHRpb25zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvU291cmNlKiBzb3VyY2UpIHsKLSAgICBpZiAoIVNl
dExvY2FsU291cmNlKHNzcmMsIHNvdXJjZSkpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgaWYgKCFSdHBIZWxwZXI8Vm9pY2VNZWRpYUNoYW5uZWw+OjpNdXRlU3RyZWFtKHNzcmMs
ICFlbmFibGUpKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChlbmFibGUg
JiYgb3B0aW9ucykgewotICAgICAgcmV0dXJuIFNldE9wdGlvbnMoKm9wdGlvbnMpOwotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYg
cmVjdl9jb2RlY3MoKSBjb25zdDsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHNl
bmRfY29kZWNzKCkgY29uc3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2Rl
Y3MoKSBjb25zdDsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8RHRtZkluZm8+JiBkdG1mX2luZm9fcXVl
dWUoKSBjb25zdDsKKyAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKCkgY29uc3Q7CisgIGlu
dCBtYXhfYnBzKCkgY29uc3Q7CisgIGJvb2wgU2V0U2VuZFBhcmFtZXRlcnMoY29uc3QgQXVkaW9T
ZW5kUGFyYW1ldGVycyYgcGFyYW1zKSBvdmVycmlkZTsKIAotICBib29sIEhhc1NvdXJjZSh1aW50
MzJfdCBzc3JjKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxvY2FsX3NpbmtzXy5maW5kKHNzcmMpICE9
IGxvY2FsX3NpbmtzXy5lbmQoKTsKLSAgfQorICBib29sIFNldFJlY3ZQYXJhbWV0ZXJzKGNvbnN0
IEF1ZGlvUmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgb3ZlcnJpZGU7CiAKLSAgdmlydHVhbCBib29s
IEFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgewotICAgIGlmICghUnRwSGVs
cGVyPFZvaWNlTWVkaWFDaGFubmVsPjo6QWRkUmVjdlN0cmVhbShzcCkpCi0gICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgb3V0cHV0X3NjYWxpbmdzX1tzcC5maXJzdF9zc3JjKCldID0gMS4wOwotICAg
IHJldHVybiB0cnVlOwotICB9Ci0gIHZpcnR1YWwgYm9vbCBSZW1vdmVSZWN2U3RyZWFtKHVpbnQz
Ml90IHNzcmMpIHsKLSAgICBpZiAoIVJ0cEhlbHBlcjxWb2ljZU1lZGlhQ2hhbm5lbD46OlJlbW92
ZVJlY3ZTdHJlYW0oc3NyYykpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgb3V0cHV0X3NjYWxp
bmdzXy5lcmFzZShzc3JjKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICB2b2lkIFNldFBsYXlv
dXQoYm9vbCBwbGF5b3V0KSBvdmVycmlkZTsKKyAgdm9pZCBTZXRTZW5kKGJvb2wgc2VuZCkgb3Zl
cnJpZGU7CisgIGJvb2wgU2V0QXVkaW9TZW5kKHVpbnQzMl90IHNzcmMsCisgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZW5hYmxlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb09wdGlv
bnMqIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgIEF1ZGlvU291cmNlKiBzb3VyY2UpIG92
ZXJyaWRlOwogCi0gIHZpcnR1YWwgYm9vbCBDYW5JbnNlcnREdG1mKCkgewotICAgIGZvciAoc3Rk
Ojp2ZWN0b3I8QXVkaW9Db2RlYz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2VuZF9jb2RlY3NfLmJl
Z2luKCk7Ci0gICAgICAgICBpdCAhPSBzZW5kX2NvZGVjc18uZW5kKCk7ICsraXQpIHsKLSAgICAg
IC8vIEZpbmQgdGhlIERUTUYgdGVsZXBob25lIGV2ZW50ICJjb2RlYyIuCi0gICAgICBpZiAoX3N0
cmljbXAoaXQtPm5hbWUuY19zdHIoKSwgInRlbGVwaG9uZS1ldmVudCIpID09IDApIHsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQot
ICB2aXJ0dWFsIGJvb2wgSW5zZXJ0RHRtZih1aW50MzJfdCBzc3JjLCBpbnQgZXZlbnRfY29kZSwg
aW50IGR1cmF0aW9uKSB7Ci0gICAgZHRtZl9pbmZvX3F1ZXVlXy5wdXNoX2JhY2soRHRtZkluZm8o
c3NyYywgZXZlbnRfY29kZSwgZHVyYXRpb24pKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBi
b29sIEhhc1NvdXJjZSh1aW50MzJfdCBzc3JjKSBjb25zdDsKIAotICB2aXJ0dWFsIGJvb2wgU2V0
T3V0cHV0Vm9sdW1lKHVpbnQzMl90IHNzcmMsIGRvdWJsZSB2b2x1bWUpIHsKLSAgICBpZiAoMCA9
PSBzc3JjKSB7Ci0gICAgICBzdGQ6Om1hcDx1aW50MzJfdCwgZG91YmxlPjo6aXRlcmF0b3IgaXQ7
Ci0gICAgICBmb3IgKGl0ID0gb3V0cHV0X3NjYWxpbmdzXy5iZWdpbigpOyBpdCAhPSBvdXRwdXRf
c2NhbGluZ3NfLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGl0LT5zZWNvbmQgPSB2b2x1bWU7Ci0g
ICAgICB9Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKG91dHB1dF9zY2FsaW5n
c18uZmluZChzc3JjKSAhPSBvdXRwdXRfc2NhbGluZ3NfLmVuZCgpKSB7Ci0gICAgICBvdXRwdXRf
c2NhbGluZ3NfW3NzcmNdID0gdm9sdW1lOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IHJldHVybiBmYWxzZTsKLSAgfQotICBib29sIEdldE91dHB1dFZvbHVtZSh1aW50MzJfdCBzc3Jj
LCBkb3VibGUqIHZvbHVtZSkgewotICAgIGlmIChvdXRwdXRfc2NhbGluZ3NfLmZpbmQoc3NyYykg
PT0gb3V0cHV0X3NjYWxpbmdzXy5lbmQoKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICAqdm9s
dW1lID0gb3V0cHV0X3NjYWxpbmdzX1tzc3JjXTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBi
b29sIEFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgb3ZlcnJpZGU7CisgIGJv
b2wgUmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSBvdmVycmlkZTsKKworICBib29sIENh
bkluc2VydER0bWYoKSBvdmVycmlkZTsKKyAgYm9vbCBJbnNlcnREdG1mKHVpbnQzMl90IHNzcmMs
IGludCBldmVudF9jb2RlLCBpbnQgZHVyYXRpb24pIG92ZXJyaWRlOworCisgIGJvb2wgU2V0T3V0
cHV0Vm9sdW1lKHVpbnQzMl90IHNzcmMsIGRvdWJsZSB2b2x1bWUpIG92ZXJyaWRlOworICBib29s
IEdldE91dHB1dFZvbHVtZSh1aW50MzJfdCBzc3JjLCBkb3VibGUqIHZvbHVtZSk7CiAKLSAgdmly
dHVhbCBib29sIEdldFN0YXRzKFZvaWNlTWVkaWFJbmZvKiBpbmZvKSB7IHJldHVybiBmYWxzZTsg
fQorICBib29sIEdldFN0YXRzKFZvaWNlTWVkaWFJbmZvKiBpbmZvKSBvdmVycmlkZTsKIAotICB2
aXJ0dWFsIHZvaWQgU2V0UmF3QXVkaW9TaW5rKAorICB2b2lkIFNldFJhd0F1ZGlvU2luaygKICAg
ICAgIHVpbnQzMl90IHNzcmMsCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpBdWRpb1Np
bmtJbnRlcmZhY2U+IHNpbmspIHsKLSAgICBzaW5rXyA9IHN0ZDo6bW92ZShzaW5rKTsKLSAgfQor
ICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6QXVkaW9TaW5rSW50ZXJmYWNlPiBzaW5rKSBv
dmVycmlkZTsKIAotICB2aXJ0dWFsIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNlPiBHZXRT
b3VyY2VzKHVpbnQzMl90IHNzcmMpIGNvbnN0IHsKLSAgICByZXR1cm4gc3RkOjp2ZWN0b3I8d2Vi
cnRjOjpSdHBTb3VyY2U+KCk7Ci0gIH0KKyAgc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+
IEdldFNvdXJjZXModWludDMyX3Qgc3NyYykgY29uc3Qgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgog
ICBjbGFzcyBWb2ljZUNoYW5uZWxBdWRpb1NpbmsgOiBwdWJsaWMgQXVkaW9Tb3VyY2U6OlNpbmsg
ewogICAgcHVibGljOgotICAgIGV4cGxpY2l0IFZvaWNlQ2hhbm5lbEF1ZGlvU2luayhBdWRpb1Nv
dXJjZSogc291cmNlKSA6IHNvdXJjZV8oc291cmNlKSB7Ci0gICAgICBzb3VyY2VfLT5TZXRTaW5r
KHRoaXMpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5Wb2ljZUNoYW5uZWxBdWRpb1NpbmsoKSB7Ci0g
ICAgICBpZiAoc291cmNlXykgewotICAgICAgICBzb3VyY2VfLT5TZXRTaW5rKG51bGxwdHIpOwot
ICAgICAgfQotICAgIH0KKyAgICBleHBsaWNpdCBWb2ljZUNoYW5uZWxBdWRpb1NpbmsoQXVkaW9T
b3VyY2UqIHNvdXJjZSk7CisgICAgflZvaWNlQ2hhbm5lbEF1ZGlvU2luaygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvX2RhdGEsCiAgICAgICAgICAgICAgICAg
aW50IGJpdHNfcGVyX3NhbXBsZSwKICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGUsCiAg
ICAgICAgICAgICAgICAgc2l6ZV90IG51bWJlcl9vZl9jaGFubmVscywKLSAgICAgICAgICAgICAg
ICBzaXplX3QgbnVtYmVyX29mX2ZyYW1lcykgb3ZlcnJpZGUge30KLSAgICB2b2lkIE9uQ2xvc2Uo
KSBvdmVycmlkZSB7IHNvdXJjZV8gPSBudWxscHRyOyB9Ci0gICAgQXVkaW9Tb3VyY2UqIHNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIHNvdXJjZV87IH0KKyAgICAgICAgICAgICAgICBzaXplX3QgbnVt
YmVyX29mX2ZyYW1lcykgb3ZlcnJpZGU7CisgICAgdm9pZCBPbkNsb3NlKCkgb3ZlcnJpZGU7Cisg
ICAgQXVkaW9Tb3VyY2UqIHNvdXJjZSgpIGNvbnN0OwogCiAgICBwcml2YXRlOgogICAgIEF1ZGlv
U291cmNlKiBzb3VyY2VfOwogICB9OwogCi0gIGJvb2wgU2V0UmVjdkNvZGVjcyhjb25zdCBzdGQ6
OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKSB7Ci0gICAgaWYgKGZhaWxfc2V0X3JlY3ZfY29k
ZWNzKCkpIHsKLSAgICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0UmVjdkNvZGVjcy4KLSAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmVjdl9jb2RlY3NfID0gY29kZWNzOwotICAg
IHJldHVybiB0cnVlOwotICB9Ci0gIGJvb2wgU2V0U2VuZENvZGVjcyhjb25zdCBzdGQ6OnZlY3Rv
cjxBdWRpb0NvZGVjPiYgY29kZWNzKSB7Ci0gICAgaWYgKGZhaWxfc2V0X3NlbmRfY29kZWNzKCkp
IHsKLSAgICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0U2VuZENvZGVjcy4KLSAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgc2VuZF9jb2RlY3NfID0gY29kZWNzOwotICAgIHJldHVy
biB0cnVlOwotICB9Ci0gIGJvb2wgU2V0TWF4U2VuZEJhbmR3aWR0aChpbnQgYnBzKSB7Ci0gICAg
bWF4X2Jwc18gPSBicHM7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgYm9vbCBTZXRPcHRpb25z
KGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykgewotICAgIC8vIERvZXMgYSAibWVyZ2UiIG9m
IGN1cnJlbnQgb3B0aW9ucyBhbmQgc2V0IG9wdGlvbnMuCi0gICAgb3B0aW9uc18uU2V0QWxsKG9w
dGlvbnMpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIGJvb2wgU2V0TG9jYWxTb3VyY2UodWlu
dDMyX3Qgc3NyYywgQXVkaW9Tb3VyY2UqIHNvdXJjZSkgewotICAgIGF1dG8gaXQgPSBsb2NhbF9z
aW5rc18uZmluZChzc3JjKTsKLSAgICBpZiAoc291cmNlKSB7Ci0gICAgICBpZiAoaXQgIT0gbG9j
YWxfc2lua3NfLmVuZCgpKSB7Ci0gICAgICAgIFJUQ19DSEVDSyhpdC0+c2Vjb25kLT5zb3VyY2Uo
KSA9PSBzb3VyY2UpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgbG9jYWxfc2lua3NfLmluc2Vy
dChzdGQ6Om1ha2VfcGFpcigKLSAgICAgICAgICAgIHNzcmMsIGFic2w6Om1ha2VfdW5pcXVlPFZv
aWNlQ2hhbm5lbEF1ZGlvU2luaz4oc291cmNlKSkpOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0g
ICAgICBpZiAoaXQgIT0gbG9jYWxfc2lua3NfLmVuZCgpKSB7Ci0gICAgICAgIGxvY2FsX3Npbmtz
Xy5lcmFzZShpdCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9CisgIGJv
b2wgU2V0UmVjdkNvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKTsK
KyAgYm9vbCBTZXRTZW5kQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2Rl
Y3MpOworICBib29sIFNldE1heFNlbmRCYW5kd2lkdGgoaW50IGJwcyk7CisgIGJvb2wgU2V0T3B0
aW9ucyhjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMpOworICBib29sIFNldExvY2FsU291cmNl
KHVpbnQzMl90IHNzcmMsIEF1ZGlvU291cmNlKiBzb3VyY2UpOwogCiAgIEZha2VWb2ljZUVuZ2lu
ZSogZW5naW5lXzsKICAgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4gcmVjdl9jb2RlY3NfOwpAQCAt
NTA2LDEzNiArMzkzLDU1IEBAIGNsYXNzIEZha2VWb2ljZU1lZGlhQ2hhbm5lbCA6IHB1YmxpYyBS
dHBIZWxwZXI8Vm9pY2VNZWRpYUNoYW5uZWw+IHsKIH07CiAKIC8vIEEgaGVscGVyIGZ1bmN0aW9u
IHRvIGNvbXBhcmUgdGhlIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6RHRtZkluZm8uCi1pbmxpbmUg
Ym9vbCBDb21wYXJlRHRtZkluZm8oY29uc3QgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpEdG1mSW5m
byYgaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzc3JjLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBldmVudF9jb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBkdXJhdGlvbikgewotICByZXR1cm4gKGluZm8uZHVyYXRpb24gPT0g
ZHVyYXRpb24gJiYgaW5mby5ldmVudF9jb2RlID09IGV2ZW50X2NvZGUgJiYKLSAgICAgICAgICBp
bmZvLnNzcmMgPT0gc3NyYyk7Ci19Citib29sIENvbXBhcmVEdG1mSW5mbyhjb25zdCBGYWtlVm9p
Y2VNZWRpYUNoYW5uZWw6OkR0bWZJbmZvJiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3Qgc3NyYywKKyAgICAgICAgICAgICAgICAgICAgIGludCBldmVudF9jb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgaW50IGR1cmF0aW9uKTsKIAogY2xhc3MgRmFrZVZpZGVvTWVkaWFDaGFu
bmVsIDogcHVibGljIFJ0cEhlbHBlcjxWaWRlb01lZGlhQ2hhbm5lbD4gewogIHB1YmxpYzoKLSAg
RmFrZVZpZGVvTWVkaWFDaGFubmVsKEZha2VWaWRlb0VuZ2luZSogZW5naW5lLCBjb25zdCBWaWRl
b09wdGlvbnMmIG9wdGlvbnMpCi0gICAgICA6IGVuZ2luZV8oZW5naW5lKSwgbWF4X2Jwc18oLTEp
IHsKLSAgICBTZXRPcHRpb25zKG9wdGlvbnMpOwotICB9CisgIEZha2VWaWRlb01lZGlhQ2hhbm5l
bChGYWtlVmlkZW9FbmdpbmUqIGVuZ2luZSwgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKTsK
IAogICB+RmFrZVZpZGVvTWVkaWFDaGFubmVsKCk7CiAKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8Vmlk
ZW9Db2RlYz4mIHJlY3ZfY29kZWNzKCkgY29uc3QgeyByZXR1cm4gcmVjdl9jb2RlY3NfOyB9Ci0g
IGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBzZW5kX2NvZGVjcygpIGNvbnN0IHsgcmV0
dXJuIHNlbmRfY29kZWNzXzsgfQotICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29k
ZWNzKCkgY29uc3QgeyByZXR1cm4gc2VuZF9jb2RlY3MoKTsgfQotICBib29sIHJlbmRlcmluZygp
IGNvbnN0IHsgcmV0dXJuIHBsYXlvdXQoKTsgfQotICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlv
bnMoKSBjb25zdCB7IHJldHVybiBvcHRpb25zXzsgfQorICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRl
b0NvZGVjPiYgcmVjdl9jb2RlY3MoKSBjb25zdDsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9D
b2RlYz4mIHNlbmRfY29kZWNzKCkgY29uc3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29k
ZWM+JiBjb2RlY3MoKSBjb25zdDsKKyAgYm9vbCByZW5kZXJpbmcoKSBjb25zdDsKKyAgY29uc3Qg
VmlkZW9PcHRpb25zJiBvcHRpb25zKCkgY29uc3Q7CiAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90
LCBydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+Kj4mCi0gIHNpbmtz
KCkgY29uc3QgewotICAgIHJldHVybiBzaW5rc187Ci0gIH0KLSAgaW50IG1heF9icHMoKSBjb25z
dCB7IHJldHVybiBtYXhfYnBzXzsgfQotICBib29sIFNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0IFZp
ZGVvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgb3ZlcnJpZGUgewotICAgIHNldF9zZW5kX3J0Y3Bf
cGFyYW1ldGVycyhwYXJhbXMucnRjcCk7Ci0gICAgcmV0dXJuIChTZXRTZW5kQ29kZWNzKHBhcmFt
cy5jb2RlY3MpICYmCi0gICAgICAgICAgICBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJh
bXMuZXh0ZW5zaW9ucykgJiYKLSAgICAgICAgICAgIFNldE1heFNlbmRCYW5kd2lkdGgocGFyYW1z
Lm1heF9iYW5kd2lkdGhfYnBzKSk7Ci0gIH0KLSAgYm9vbCBTZXRSZWN2UGFyYW1ldGVycyhjb25z
dCBWaWRlb1JlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIG92ZXJyaWRlIHsKLSAgICBzZXRfcmVjdl9y
dGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOwotICAgIHJldHVybiAoU2V0UmVjdkNvZGVjcyhw
YXJhbXMuY29kZWNzKSAmJgotICAgICAgICAgICAgU2V0UmVjdlJ0cEhlYWRlckV4dGVuc2lvbnMo
cGFyYW1zLmV4dGVuc2lvbnMpKTsKLSAgfQotICBib29sIEFkZFNlbmRTdHJlYW0oY29uc3QgU3Ry
ZWFtUGFyYW1zJiBzcCkgb3ZlcnJpZGUgewotICAgIHJldHVybiBSdHBIZWxwZXI8VmlkZW9NZWRp
YUNoYW5uZWw+OjpBZGRTZW5kU3RyZWFtKHNwKTsKLSAgfQotICBib29sIFJlbW92ZVNlbmRTdHJl
YW0odWludDMyX3Qgc3NyYykgb3ZlcnJpZGUgewotICAgIHJldHVybiBSdHBIZWxwZXI8VmlkZW9N
ZWRpYUNoYW5uZWw+OjpSZW1vdmVTZW5kU3RyZWFtKHNzcmMpOwotICB9Ci0KLSAgYm9vbCBHZXRT
ZW5kQ29kZWMoVmlkZW9Db2RlYyogc2VuZF9jb2RlYykgb3ZlcnJpZGUgewotICAgIGlmIChzZW5k
X2NvZGVjc18uZW1wdHkoKSkgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAqc2Vu
ZF9jb2RlYyA9IHNlbmRfY29kZWNzX1swXTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBzaW5r
cygpIGNvbnN0OworICBpbnQgbWF4X2JwcygpIGNvbnN0OworICBib29sIFNldFNlbmRQYXJhbWV0
ZXJzKGNvbnN0IFZpZGVvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgb3ZlcnJpZGU7CisgIGJvb2wg
U2V0UmVjdlBhcmFtZXRlcnMoY29uc3QgVmlkZW9SZWN2UGFyYW1ldGVycyYgcGFyYW1zKSBvdmVy
cmlkZTsKKyAgYm9vbCBBZGRTZW5kU3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIG92ZXJy
aWRlOworICBib29sIFJlbW92ZVNlbmRTdHJlYW0odWludDMyX3Qgc3NyYykgb3ZlcnJpZGU7CisK
KyAgYm9vbCBHZXRTZW5kQ29kZWMoVmlkZW9Db2RlYyogc2VuZF9jb2RlYykgb3ZlcnJpZGU7CiAg
IGJvb2wgU2V0U2luayh1aW50MzJfdCBzc3JjLAotICAgICAgICAgICAgICAgcnRjOjpWaWRlb1Np
bmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiogc2luaykgb3ZlcnJpZGUgewotICAgIGlm
IChzc3JjICE9IDAgJiYgc2lua3NfLmZpbmQoc3NyYykgPT0gc2lua3NfLmVuZCgpKSB7Ci0gICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChzc3JjICE9IDApIHsKLSAgICAgIHNpbmtz
X1tzc3JjXSA9IHNpbms7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIGJvb2wgSGFz
U2luayh1aW50MzJfdCBzc3JjKSBjb25zdCB7Ci0gICAgcmV0dXJuIHNpbmtzXy5maW5kKHNzcmMp
ICE9IHNpbmtzXy5lbmQoKSAmJiBzaW5rc18uYXQoc3NyYykgIT0gbnVsbHB0cjsKLSAgfQorICAg
ICAgICAgICAgICAgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiog
c2luaykgb3ZlcnJpZGU7CisgIGJvb2wgSGFzU2luayh1aW50MzJfdCBzc3JjKSBjb25zdDsKIAot
ICBib29sIFNldFNlbmQoYm9vbCBzZW5kKSBvdmVycmlkZSB7IHJldHVybiBzZXRfc2VuZGluZyhz
ZW5kKTsgfQorICBib29sIFNldFNlbmQoYm9vbCBzZW5kKSBvdmVycmlkZTsKICAgYm9vbCBTZXRW
aWRlb1NlbmQoCiAgICAgICB1aW50MzJfdCBzc3JjLAogICAgICAgY29uc3QgVmlkZW9PcHRpb25z
KiBvcHRpb25zLAotICAgICAgcnRjOjpWaWRlb1NvdXJjZUludGVyZmFjZTx3ZWJydGM6OlZpZGVv
RnJhbWU+KiBzb3VyY2UpIG92ZXJyaWRlIHsKLSAgICBpZiAob3B0aW9ucykgewotICAgICAgaWYg
KCFTZXRPcHRpb25zKCpvcHRpb25zKSkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9
Ci0gICAgfQotICAgIHNvdXJjZXNfW3NzcmNdID0gc291cmNlOwotICAgIHJldHVybiB0cnVlOwot
ICB9CisgICAgICBydGM6OlZpZGVvU291cmNlSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4q
IHNvdXJjZSkgb3ZlcnJpZGU7CiAKLSAgYm9vbCBIYXNTb3VyY2UodWludDMyX3Qgc3NyYykgY29u
c3QgewotICAgIHJldHVybiBzb3VyY2VzXy5maW5kKHNzcmMpICE9IHNvdXJjZXNfLmVuZCgpICYm
Ci0gICAgICAgICAgIHNvdXJjZXNfLmF0KHNzcmMpICE9IG51bGxwdHI7Ci0gIH0KLSAgYm9vbCBB
ZGRSZWN2U3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIG92ZXJyaWRlIHsKLSAgICBpZiAo
IVJ0cEhlbHBlcjxWaWRlb01lZGlhQ2hhbm5lbD46OkFkZFJlY3ZTdHJlYW0oc3ApKQotICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHNpbmtzX1tzcC5maXJzdF9zc3JjKCldID0gTlVMTDsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLSAgfQotICBib29sIFJlbW92ZVJlY3ZTdHJlYW0odWludDMyX3Qgc3NyYykg
b3ZlcnJpZGUgewotICAgIGlmICghUnRwSGVscGVyPFZpZGVvTWVkaWFDaGFubmVsPjo6UmVtb3Zl
UmVjdlN0cmVhbShzc3JjKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzaW5rc18uZXJhc2Uo
c3NyYyk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAgYm9vbCBIYXNTb3VyY2UodWludDMyX3Qg
c3NyYykgY29uc3Q7CisgIGJvb2wgQWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNw
KSBvdmVycmlkZTsKKyAgYm9vbCBSZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMpIG92ZXJy
aWRlOwogCi0gIHZvaWQgRmlsbEJpdHJhdGVJbmZvKEJhbmR3aWR0aEVzdGltYXRpb25JbmZvKiBi
d2VfaW5mbykgb3ZlcnJpZGUge30KLSAgYm9vbCBHZXRTdGF0cyhWaWRlb01lZGlhSW5mbyogaW5m
bykgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgdm9pZCBGaWxsQml0cmF0ZUluZm8oQmFu
ZHdpZHRoRXN0aW1hdGlvbkluZm8qIGJ3ZV9pbmZvKSBvdmVycmlkZTsKKyAgYm9vbCBHZXRTdGF0
cyhWaWRlb01lZGlhSW5mbyogaW5mbykgb3ZlcnJpZGU7CiAKLSAgc3RkOjp2ZWN0b3I8d2VicnRj
OjpSdHBTb3VyY2U+IEdldFNvdXJjZXModWludDMyX3Qgc3NyYykgY29uc3Qgb3ZlcnJpZGUgewot
ICAgIHJldHVybiB7fTsKLSAgfQorICBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlJ0cFNvdXJjZT4gR2V0
U291cmNlcyh1aW50MzJfdCBzc3JjKSBjb25zdCBvdmVycmlkZTsKIAogIHByaXZhdGU6Ci0gIGJv
b2wgU2V0UmVjdkNvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKSB7
Ci0gICAgaWYgKGZhaWxfc2V0X3JlY3ZfY29kZWNzKCkpIHsKLSAgICAgIC8vIEZha2UgdGhlIGZh
aWx1cmUgaW4gU2V0UmVjdkNvZGVjcy4KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
cmVjdl9jb2RlY3NfID0gY29kZWNzOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIGJvb2wgU2V0
U2VuZENvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKSB7Ci0gICAg
aWYgKGZhaWxfc2V0X3NlbmRfY29kZWNzKCkpIHsKLSAgICAgIC8vIEZha2UgdGhlIGZhaWx1cmUg
aW4gU2V0U2VuZENvZGVjcy4KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgc2VuZF9j
b2RlY3NfID0gY29kZWNzOwotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgYm9vbCBTZXRPcHRp
b25zKGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykgewotICAgIG9wdGlvbnNfID0gb3B0aW9u
czsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICBib29sIFNldE1heFNlbmRCYW5kd2lkdGgoaW50
IGJwcykgewotICAgIG1heF9icHNfID0gYnBzOwotICAgIHJldHVybiB0cnVlOwotICB9CisgIGJv
b2wgU2V0UmVjdkNvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKTsK
KyAgYm9vbCBTZXRTZW5kQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBjb2Rl
Y3MpOworICBib29sIFNldE9wdGlvbnMoY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKTsKKyAg
Ym9vbCBTZXRNYXhTZW5kQmFuZHdpZHRoKGludCBicHMpOwogCiAgIEZha2VWaWRlb0VuZ2luZSog
ZW5naW5lXzsKICAgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gcmVjdl9jb2RlY3NfOwpAQCAtNjUy
LDc4ICs0NTgsMzMgQEAgY2xhc3MgRGF0YU9wdGlvbnMge307CiAKIGNsYXNzIEZha2VEYXRhTWVk
aWFDaGFubmVsIDogcHVibGljIFJ0cEhlbHBlcjxEYXRhTWVkaWFDaGFubmVsPiB7CiAgcHVibGlj
OgotICBleHBsaWNpdCBGYWtlRGF0YU1lZGlhQ2hhbm5lbCh2b2lkKiB1bnVzZWQsIGNvbnN0IERh
dGFPcHRpb25zJiBvcHRpb25zKQotICAgICAgOiBzZW5kX2Jsb2NrZWRfKGZhbHNlKSwgbWF4X2Jw
c18oLTEpIHt9Ci0gIH5GYWtlRGF0YU1lZGlhQ2hhbm5lbCgpIHt9Ci0gIGNvbnN0IHN0ZDo6dmVj
dG9yPERhdGFDb2RlYz4mIHJlY3ZfY29kZWNzKCkgY29uc3QgeyByZXR1cm4gcmVjdl9jb2RlY3Nf
OyB9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIHNlbmRfY29kZWNzKCkgY29uc3Qg
eyByZXR1cm4gc2VuZF9jb2RlY3NfOyB9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4m
IGNvZGVjcygpIGNvbnN0IHsgcmV0dXJuIHNlbmRfY29kZWNzKCk7IH0KLSAgaW50IG1heF9icHMo
KSBjb25zdCB7IHJldHVybiBtYXhfYnBzXzsgfQotCi0gIHZpcnR1YWwgYm9vbCBTZXRTZW5kUGFy
YW1ldGVycyhjb25zdCBEYXRhU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgewotICAgIHNldF9zZW5k
X3J0Y3BfcGFyYW1ldGVycyhwYXJhbXMucnRjcCk7Ci0gICAgcmV0dXJuIChTZXRTZW5kQ29kZWNz
KHBhcmFtcy5jb2RlY3MpICYmCi0gICAgICAgICAgICBTZXRNYXhTZW5kQmFuZHdpZHRoKHBhcmFt
cy5tYXhfYmFuZHdpZHRoX2JwcykpOwotICB9Ci0gIHZpcnR1YWwgYm9vbCBTZXRSZWN2UGFyYW1l
dGVycyhjb25zdCBEYXRhUmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgewotICAgIHNldF9yZWN2X3J0
Y3BfcGFyYW1ldGVycyhwYXJhbXMucnRjcCk7Ci0gICAgcmV0dXJuIFNldFJlY3ZDb2RlY3MocGFy
YW1zLmNvZGVjcyk7Ci0gIH0KLSAgdmlydHVhbCBib29sIFNldFNlbmQoYm9vbCBzZW5kKSB7IHJl
dHVybiBzZXRfc2VuZGluZyhzZW5kKTsgfQotICB2aXJ0dWFsIGJvb2wgU2V0UmVjZWl2ZShib29s
IHJlY2VpdmUpIHsKLSAgICBzZXRfcGxheW91dChyZWNlaXZlKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LSAgfQotICB2aXJ0dWFsIGJvb2wgQWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNw
KSB7Ci0gICAgaWYgKCFSdHBIZWxwZXI8RGF0YU1lZGlhQ2hhbm5lbD46OkFkZFJlY3ZTdHJlYW0o
c3ApKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIHZpcnR1
YWwgYm9vbCBSZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMpIHsKLSAgICBpZiAoIVJ0cEhl
bHBlcjxEYXRhTWVkaWFDaGFubmVsPjo6UmVtb3ZlUmVjdlN0cmVhbShzc3JjKSkKLSAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHZpcnR1YWwgYm9vbCBTZW5k
RGF0YShjb25zdCBTZW5kRGF0YVBhcmFtcyYgcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgcGF5bG9hZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFNlbmREYXRhUmVzdWx0KiByZXN1bHQpIHsKLSAgICBpZiAoc2VuZF9ibG9ja2Vk
XykgewotICAgICAgKnJlc3VsdCA9IFNEUl9CTE9DSzsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9IGVsc2UgewotICAgICAgbGFzdF9zZW50X2RhdGFfcGFyYW1zXyA9IHBhcmFtczsKLSAgICAg
IGxhc3Rfc2VudF9kYXRhXyA9IHN0ZDo6c3RyaW5nKHBheWxvYWQuZGF0YTxjaGFyPigpLCBwYXls
b2FkLnNpemUoKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0KLQotICBTZW5kRGF0
YVBhcmFtcyBsYXN0X3NlbnRfZGF0YV9wYXJhbXMoKSB7IHJldHVybiBsYXN0X3NlbnRfZGF0YV9w
YXJhbXNfOyB9Ci0gIHN0ZDo6c3RyaW5nIGxhc3Rfc2VudF9kYXRhKCkgeyByZXR1cm4gbGFzdF9z
ZW50X2RhdGFfOyB9Ci0gIGJvb2wgaXNfc2VuZF9ibG9ja2VkKCkgeyByZXR1cm4gc2VuZF9ibG9j
a2VkXzsgfQotICB2b2lkIHNldF9zZW5kX2Jsb2NrZWQoYm9vbCBibG9ja2VkKSB7IHNlbmRfYmxv
Y2tlZF8gPSBibG9ja2VkOyB9CisgIGV4cGxpY2l0IEZha2VEYXRhTWVkaWFDaGFubmVsKHZvaWQq
IHVudXNlZCwgY29uc3QgRGF0YU9wdGlvbnMmIG9wdGlvbnMpOworICB+RmFrZURhdGFNZWRpYUNo
YW5uZWwoKTsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgcmVjdl9jb2RlY3MoKSBj
b25zdDsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgc2VuZF9jb2RlY3MoKSBjb25z
dDsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgY29kZWNzKCkgY29uc3Q7CisgIGlu
dCBtYXhfYnBzKCkgY29uc3Q7CisKKyAgYm9vbCBTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBEYXRh
U2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgb3ZlcnJpZGU7CisgIGJvb2wgU2V0UmVjdlBhcmFtZXRl
cnMoY29uc3QgRGF0YVJlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIG92ZXJyaWRlOworICBib29sIFNl
dFNlbmQoYm9vbCBzZW5kKSBvdmVycmlkZTsKKyAgYm9vbCBTZXRSZWNlaXZlKGJvb2wgcmVjZWl2
ZSkgb3ZlcnJpZGU7CisgIGJvb2wgQWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNw
KSBvdmVycmlkZTsKKyAgYm9vbCBSZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMpIG92ZXJy
aWRlOworCisgIGJvb2wgU2VuZERhdGEoY29uc3QgU2VuZERhdGFQYXJhbXMmIHBhcmFtcywKKyAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBwYXlsb2FkLAorICAg
ICAgICAgICAgICAgIFNlbmREYXRhUmVzdWx0KiByZXN1bHQpIG92ZXJyaWRlOworCisgIFNlbmRE
YXRhUGFyYW1zIGxhc3Rfc2VudF9kYXRhX3BhcmFtcygpOworICBzdGQ6OnN0cmluZyBsYXN0X3Nl
bnRfZGF0YSgpOworICBib29sIGlzX3NlbmRfYmxvY2tlZCgpOworICB2b2lkIHNldF9zZW5kX2Js
b2NrZWQoYm9vbCBibG9ja2VkKTsKIAogIHByaXZhdGU6Ci0gIGJvb2wgU2V0UmVjdkNvZGVjcyhj
b25zdCBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+JiBjb2RlY3MpIHsKLSAgICBpZiAoZmFpbF9zZXRf
cmVjdl9jb2RlY3MoKSkgewotICAgICAgLy8gRmFrZSB0aGUgZmFpbHVyZSBpbiBTZXRSZWN2Q29k
ZWNzLgotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZWN2X2NvZGVjc18gPSBjb2Rl
Y3M7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgYm9vbCBTZXRTZW5kQ29kZWNzKGNvbnN0IHN0
ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGNvZGVjcykgewotICAgIGlmIChmYWlsX3NldF9zZW5kX2Nv
ZGVjcygpKSB7Ci0gICAgICAvLyBGYWtlIHRoZSBmYWlsdXJlIGluIFNldFNlbmRDb2RlY3MuCi0g
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHNlbmRfY29kZWNzXyA9IGNvZGVjczsKLSAg
ICByZXR1cm4gdHJ1ZTsKLSAgfQotICBib29sIFNldE1heFNlbmRCYW5kd2lkdGgoaW50IGJwcykg
ewotICAgIG1heF9icHNfID0gYnBzOwotICAgIHJldHVybiB0cnVlOwotICB9CisgIGJvb2wgU2V0
UmVjdkNvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+JiBjb2RlY3MpOworICBib29s
IFNldFNlbmRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgY29kZWNzKTsKKyAg
Ym9vbCBTZXRNYXhTZW5kQmFuZHdpZHRoKGludCBicHMpOwogCiAgIHN0ZDo6dmVjdG9yPERhdGFD
b2RlYz4gcmVjdl9jb2RlY3NfOwogICBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+IHNlbmRfY29kZWNz
XzsKQEAgLTczMywyMzMgKzQ5NCw5OCBAQCBjbGFzcyBGYWtlRGF0YU1lZGlhQ2hhbm5lbCA6IHB1
YmxpYyBSdHBIZWxwZXI8RGF0YU1lZGlhQ2hhbm5lbD4gewogICBpbnQgbWF4X2Jwc187CiB9Owog
Ci0vLyBBIGJhc2UgY2xhc3MgZm9yIGFsbCBvZiB0aGUgc2hhcmVkIHBhcnRzIGJldHdlZW4gRmFr
ZVZvaWNlRW5naW5lCi0vLyBhbmQgRmFrZVZpZGVvRW5naW5lLgotY2xhc3MgRmFrZUJhc2VFbmdp
bmUgewotIHB1YmxpYzoKLSAgRmFrZUJhc2VFbmdpbmUoKSA6IG9wdGlvbnNfY2hhbmdlZF8oZmFs
c2UpLCBmYWlsX2NyZWF0ZV9jaGFubmVsXyhmYWxzZSkge30KLSAgdm9pZCBzZXRfZmFpbF9jcmVh
dGVfY2hhbm5lbChib29sIGZhaWwpIHsgZmFpbF9jcmVhdGVfY2hhbm5lbF8gPSBmYWlsOyB9Ci0K
LSAgUnRwQ2FwYWJpbGl0aWVzIEdldENhcGFiaWxpdGllcygpIGNvbnN0IHsgcmV0dXJuIGNhcGFi
aWxpdGllc187IH0KLSAgdm9pZCBzZXRfcnRwX2hlYWRlcl9leHRlbnNpb25zKGNvbnN0IHN0ZDo6
dmVjdG9yPFJ0cEV4dGVuc2lvbj4mIGV4dGVuc2lvbnMpIHsKLSAgICBjYXBhYmlsaXRpZXNfLmhl
YWRlcl9leHRlbnNpb25zID0gZXh0ZW5zaW9uczsKLSAgfQotCi0gIHZvaWQgc2V0X3J0cF9oZWFk
ZXJfZXh0ZW5zaW9ucygKLSAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OlJ0cEhlYWRl
ckV4dGVuc2lvbj4mIGV4dGVuc2lvbnMpIHsKLSAgICBmb3IgKGNvbnN0IGNyaWNrZXQ6OlJ0cEhl
YWRlckV4dGVuc2lvbiYgZXh0IDogZXh0ZW5zaW9ucykgewotICAgICAgUnRwRXh0ZW5zaW9uIHdl
YnJ0Y19leHQ7Ci0gICAgICB3ZWJydGNfZXh0LnVyaSA9IGV4dC51cmk7Ci0gICAgICB3ZWJydGNf
ZXh0LmlkID0gZXh0LmlkOwotICAgICAgY2FwYWJpbGl0aWVzXy5oZWFkZXJfZXh0ZW5zaW9ucy5w
dXNoX2JhY2sod2VicnRjX2V4dCk7Ci0gICAgfQotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIEZs
YWcgdXNlZCBieSBvcHRpb25zbWVzc2FnZWhhbmRsZXJfdW5pdHRlc3QgZm9yIGNoZWNraW5nIHdo
ZXRoZXIgYW55Ci0gIC8vIHJlbGV2YW50IHNldHRpbmcgaGFzIGJlZW4gdXBkYXRlZC4KLSAgLy8g
VE9ETyh0aGFsb3VuKTogUmVwbGFjZSB3aXRoIGV4cGxpY2l0IGNoZWNrcyBvZiBiZWZvcmUgJiBh
ZnRlciB2YWx1ZXMuCi0gIGJvb2wgb3B0aW9uc19jaGFuZ2VkXzsKLSAgYm9vbCBmYWlsX2NyZWF0
ZV9jaGFubmVsXzsKLSAgUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllc187Ci19OwotCi1jbGFz
cyBGYWtlVm9pY2VFbmdpbmUgOiBwdWJsaWMgRmFrZUJhc2VFbmdpbmUgeworY2xhc3MgRmFrZVZv
aWNlRW5naW5lIDogcHVibGljIFZvaWNlRW5naW5lSW50ZXJmYWNlIHsKICBwdWJsaWM6Ci0gIEZh
a2VWb2ljZUVuZ2luZSgpIHsKLSAgICAvLyBBZGQgYSBmYWtlIGF1ZGlvIGNvZGVjLiBOb3RlIHRo
YXQgdGhlIG5hbWUgbXVzdCBub3QgYmUgIiIgYXMgdGhlcmUgYXJlCi0gICAgLy8gc2FuaXR5IGNo
ZWNrcyBhZ2FpbnN0IHRoYXQuCi0gICAgY29kZWNzXy5wdXNoX2JhY2soQXVkaW9Db2RlYygxMDEs
ICJmYWtlX2F1ZGlvX2NvZGVjIiwgMCwgMCwgMSkpOwotICB9Ci0gIHZvaWQgSW5pdCgpIHt9Ci0g
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+IEdldEF1ZGlvU3RhdGUoKSBj
b25zdCB7Ci0gICAgcmV0dXJuIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+
KCk7Ci0gIH0KLQotICBWb2ljZU1lZGlhQ2hhbm5lbCogQ3JlYXRlQ2hhbm5lbCh3ZWJydGM6OkNh
bGwqIGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlh
Q29uZmlnJiBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykgewotICAgIGlmIChmYWlsX2NyZWF0ZV9jaGFubmVsXykg
ewotICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgRmFrZVZvaWNlTWVkaWFDaGFu
bmVsKiBjaCA9IG5ldyBGYWtlVm9pY2VNZWRpYUNoYW5uZWwodGhpcywgb3B0aW9ucyk7Ci0gICAg
Y2hhbm5lbHNfLnB1c2hfYmFjayhjaCk7Ci0gICAgcmV0dXJuIGNoOwotICB9Ci0gIEZha2VWb2lj
ZU1lZGlhQ2hhbm5lbCogR2V0Q2hhbm5lbChzaXplX3QgaW5kZXgpIHsKLSAgICByZXR1cm4gKGNo
YW5uZWxzXy5zaXplKCkgPiBpbmRleCkgPyBjaGFubmVsc19baW5kZXhdIDogTlVMTDsKLSAgfQot
ICB2b2lkIFVucmVnaXN0ZXJDaGFubmVsKFZvaWNlTWVkaWFDaGFubmVsKiBjaGFubmVsKSB7Ci0g
ICAgY2hhbm5lbHNfLmVyYXNlKHN0ZDo6ZmluZChjaGFubmVsc18uYmVnaW4oKSwgY2hhbm5lbHNf
LmVuZCgpLCBjaGFubmVsKSk7Ci0gIH0KKyAgRmFrZVZvaWNlRW5naW5lKCk7CisgIFJ0cENhcGFi
aWxpdGllcyBHZXRDYXBhYmlsaXRpZXMoKSBjb25zdCBvdmVycmlkZTsKKyAgdm9pZCBJbml0KCkg
b3ZlcnJpZGU7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+IEdldEF1
ZGlvU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKworICBWb2ljZU1lZGlhQ2hhbm5lbCogQ3JlYXRl
TWVkaWFDaGFubmVsKAorICAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAorICAgICAgY29uc3QgTWVk
aWFDb25maWcmIGNvbmZpZywKKyAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywKKyAg
ICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIG92ZXJyaWRl
OworICBGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIEdldENoYW5uZWwoc2l6ZV90IGluZGV4KTsKKyAg
dm9pZCBVbnJlZ2lzdGVyQ2hhbm5lbChWb2ljZU1lZGlhQ2hhbm5lbCogY2hhbm5lbCk7CiAKICAg
Ly8gVE9ETyhvc3N1KTogRm9yIHByb3BlciB0ZXN0aW5nLCBUaGVzZSBzaG91bGQgZWl0aGVyIGlu
ZGl2aWR1YWxseSBzZXR0YWJsZQogICAvLyAgICAgICAgICAgICBvciB0aGUgdm9pY2UgZW5naW5l
IHNob3VsZCByZWZlcmVuY2UgbW9ja2FibGUgZmFjdG9yaWVzLgotICBjb25zdCBzdGQ6OnZlY3Rv
cjxBdWRpb0NvZGVjPiYgc2VuZF9jb2RlY3MoKSB7IHJldHVybiBjb2RlY3NfOyB9Ci0gIGNvbnN0
IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiByZWN2X2NvZGVjcygpIHsgcmV0dXJuIGNvZGVjc187
IH0KLSAgdm9pZCBTZXRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGNvZGVj
cykgeyBjb2RlY3NfID0gY29kZWNzOyB9Ci0KLSAgaW50IEdldElucHV0TGV2ZWwoKSB7IHJldHVy
biAwOyB9Ci0KLSAgYm9vbCBTdGFydEFlY0R1bXAocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwgaW50
NjRfdCBtYXhfc2l6ZV9ieXRlcykgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHZvaWQg
U3RvcEFlY0R1bXAoKSB7fQotCi0gIGJvb2wgU3RhcnRSdGNFdmVudExvZyhydGM6OlBsYXRmb3Jt
RmlsZSBmaWxlLCBpbnQ2NF90IG1heF9zaXplX2J5dGVzKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwot
ICB9Ci0KLSAgdm9pZCBTdG9wUnRjRXZlbnRMb2coKSB7fQorICBjb25zdCBzdGQ6OnZlY3RvcjxB
dWRpb0NvZGVjPiYgc2VuZF9jb2RlY3MoKSBjb25zdCBvdmVycmlkZTsKKyAgY29uc3Qgc3RkOjp2
ZWN0b3I8QXVkaW9Db2RlYz4mIHJlY3ZfY29kZWNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIHZvaWQg
U2V0Q29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MpOworICBpbnQg
R2V0SW5wdXRMZXZlbCgpOworICBib29sIFN0YXJ0QWVjRHVtcChydGM6OlBsYXRmb3JtRmlsZSBm
aWxlLCBpbnQ2NF90IG1heF9zaXplX2J5dGVzKSBvdmVycmlkZTsKKyAgdm9pZCBTdG9wQWVjRHVt
cCgpIG92ZXJyaWRlOworICBib29sIFN0YXJ0UnRjRXZlbnRMb2cocnRjOjpQbGF0Zm9ybUZpbGUg
ZmlsZSwgaW50NjRfdCBtYXhfc2l6ZV9ieXRlcyk7CisgIHZvaWQgU3RvcFJ0Y0V2ZW50TG9nKCk7
CiAKICBwcml2YXRlOgogICBzdGQ6OnZlY3RvcjxGYWtlVm9pY2VNZWRpYUNoYW5uZWwqPiBjaGFu
bmVsc187CiAgIHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+IGNvZGVjc187CisgIGJvb2wgZmFpbF9j
cmVhdGVfY2hhbm5lbF87CiAKICAgZnJpZW5kIGNsYXNzIEZha2VNZWRpYUVuZ2luZTsKIH07CiAK
LWNsYXNzIEZha2VWaWRlb0VuZ2luZSA6IHB1YmxpYyBGYWtlQmFzZUVuZ2luZSB7CitjbGFzcyBG
YWtlVmlkZW9FbmdpbmUgOiBwdWJsaWMgVmlkZW9FbmdpbmVJbnRlcmZhY2UgewogIHB1YmxpYzoK
LSAgRmFrZVZpZGVvRW5naW5lKCkgOiBjYXB0dXJlXyhmYWxzZSkgewotICAgIC8vIEFkZCBhIGZh
a2UgdmlkZW8gY29kZWMuIE5vdGUgdGhhdCB0aGUgbmFtZSBtdXN0IG5vdCBiZSAiIiBhcyB0aGVy
ZSBhcmUKLSAgICAvLyBzYW5pdHkgY2hlY2tzIGFnYWluc3QgdGhhdC4KLSAgICBjb2RlY3NfLnB1
c2hfYmFjayhWaWRlb0NvZGVjKDAsICJmYWtlX3ZpZGVvX2NvZGVjIikpOwotICB9Ci0KLSAgYm9v
bCBTZXRPcHRpb25zKGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykgewotICAgIG9wdGlvbnNf
ID0gb3B0aW9uczsKLSAgICBvcHRpb25zX2NoYW5nZWRfID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1
ZTsKLSAgfQotCi0gIFZpZGVvTWVkaWFDaGFubmVsKiBDcmVhdGVDaGFubmVsKHdlYnJ0Yzo6Q2Fs
bCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVkaWFD
b25maWcmIGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmlkZW9PcHRpb25zJiBvcHRpb25zKSB7Ci0gICAgaWYgKGZhaWxfY3JlYXRlX2NoYW5uZWxfKSB7
Ci0gICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBGYWtlVmlkZW9NZWRpYUNoYW5u
ZWwqIGNoID0gbmV3IEZha2VWaWRlb01lZGlhQ2hhbm5lbCh0aGlzLCBvcHRpb25zKTsKLSAgICBj
aGFubmVsc18uZW1wbGFjZV9iYWNrKGNoKTsKLSAgICByZXR1cm4gY2g7Ci0gIH0KLQotICBGYWtl
VmlkZW9NZWRpYUNoYW5uZWwqIEdldENoYW5uZWwoc2l6ZV90IGluZGV4KSB7Ci0gICAgcmV0dXJu
IChjaGFubmVsc18uc2l6ZSgpID4gaW5kZXgpID8gY2hhbm5lbHNfW2luZGV4XSA6IG51bGxwdHI7
Ci0gIH0KLQotICB2b2lkIFVucmVnaXN0ZXJDaGFubmVsKFZpZGVvTWVkaWFDaGFubmVsKiBjaGFu
bmVsKSB7Ci0gICAgYXV0byBpdCA9IHN0ZDo6ZmluZChjaGFubmVsc18uYmVnaW4oKSwgY2hhbm5l
bHNfLmVuZCgpLCBjaGFubmVsKTsKLSAgICBSVENfRENIRUNLKGl0ICE9IGNoYW5uZWxzXy5lbmQo
KSk7Ci0gICAgY2hhbm5lbHNfLmVyYXNlKGl0KTsKLSAgfQotCi0gIGNvbnN0IHN0ZDo6dmVjdG9y
PFZpZGVvQ29kZWM+JiBjb2RlY3MoKSBjb25zdCB7IHJldHVybiBjb2RlY3NfOyB9Ci0KLSAgdm9p
ZCBTZXRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNzKSB7IGNvZGVj
c18gPSBjb2RlY3M7IH0KLQotICBib29sIFNldENhcHR1cmUoYm9vbCBjYXB0dXJlKSB7Ci0gICAg
Y2FwdHVyZV8gPSBjYXB0dXJlOwotICAgIHJldHVybiB0cnVlOwotICB9CisgIEZha2VWaWRlb0Vu
Z2luZSgpOworICBSdHBDYXBhYmlsaXRpZXMgR2V0Q2FwYWJpbGl0aWVzKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgIGJvb2wgU2V0T3B0aW9ucyhjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpOworICBW
aWRlb01lZGlhQ2hhbm5lbCogQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgd2VicnRjOjpDYWxs
KiBjYWxsLAorICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKKyAgICAgIGNvbnN0IFZp
ZGVvT3B0aW9ucyYgb3B0aW9ucywKKyAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYg
Y3J5cHRvX29wdGlvbnMpIG92ZXJyaWRlOworICBGYWtlVmlkZW9NZWRpYUNoYW5uZWwqIEdldENo
YW5uZWwoc2l6ZV90IGluZGV4KTsKKyAgdm9pZCBVbnJlZ2lzdGVyQ2hhbm5lbChWaWRlb01lZGlh
Q2hhbm5lbCogY2hhbm5lbCk7CisgIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IGNvZGVjcygpIGNv
bnN0IG92ZXJyaWRlOworICB2b2lkIFNldENvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0Nv
ZGVjPiBjb2RlY3MpOworICBib29sIFNldENhcHR1cmUoYm9vbCBjYXB0dXJlKTsKIAogIHByaXZh
dGU6CiAgIHN0ZDo6dmVjdG9yPEZha2VWaWRlb01lZGlhQ2hhbm5lbCo+IGNoYW5uZWxzXzsKICAg
c3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNzXzsKICAgYm9vbCBjYXB0dXJlXzsKICAgVmlk
ZW9PcHRpb25zIG9wdGlvbnNfOworICBib29sIGZhaWxfY3JlYXRlX2NoYW5uZWxfOwogCiAgIGZy
aWVuZCBjbGFzcyBGYWtlTWVkaWFFbmdpbmU7CiB9OwogCi1jbGFzcyBGYWtlTWVkaWFFbmdpbmUK
LSAgICA6IHB1YmxpYyBDb21wb3NpdGVNZWRpYUVuZ2luZTxGYWtlVm9pY2VFbmdpbmUsIEZha2VW
aWRlb0VuZ2luZT4geworY2xhc3MgRmFrZU1lZGlhRW5naW5lIDogcHVibGljIENvbXBvc2l0ZU1l
ZGlhRW5naW5lIHsKICBwdWJsaWM6Ci0gIEZha2VNZWRpYUVuZ2luZSgpCi0gICAgICA6IENvbXBv
c2l0ZU1lZGlhRW5naW5lPEZha2VWb2ljZUVuZ2luZSwgRmFrZVZpZGVvRW5naW5lPihzdGQ6OnR1
cGxlPD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6dHVwbGU8PigpKSB7Ci0gIH0KKyAgRmFrZU1lZGlhRW5naW5l
KCk7CiAKLSAgdmlydHVhbCB+RmFrZU1lZGlhRW5naW5lKCkge30KKyAgfkZha2VNZWRpYUVuZ2lu
ZSgpIG92ZXJyaWRlOwogCi0gIHZvaWQgU2V0QXVkaW9Db2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8
QXVkaW9Db2RlYz4mIGNvZGVjcykgewotICAgIHZvaWNlKCkuU2V0Q29kZWNzKGNvZGVjcyk7Ci0g
IH0KLSAgdm9pZCBTZXRWaWRlb0NvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYg
Y29kZWNzKSB7Ci0gICAgdmlkZW8oKS5TZXRDb2RlY3MoY29kZWNzKTsKLSAgfQorICB2b2lkIFNl
dEF1ZGlvQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MpOworICB2
b2lkIFNldFZpZGVvQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBjb2RlY3Mp
OwogCi0gIHZvaWQgU2V0QXVkaW9SdHBIZWFkZXJFeHRlbnNpb25zKAotICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiYgZXh0ZW5zaW9ucykgewotICAgIHZvaWNlKCkuc2V0X3J0
cF9oZWFkZXJfZXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKLSAgfQotICB2b2lkIFNldFZpZGVvUnRw
SGVhZGVyRXh0ZW5zaW9ucygKLSAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFJ0cEV4dGVuc2lvbj4m
IGV4dGVuc2lvbnMpIHsKLSAgICB2aWRlbygpLnNldF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMoZXh0
ZW5zaW9ucyk7Ci0gIH0KKyAgRmFrZVZvaWNlTWVkaWFDaGFubmVsKiBHZXRWb2ljZUNoYW5uZWwo
c2l6ZV90IGluZGV4KTsKKyAgRmFrZVZpZGVvTWVkaWFDaGFubmVsKiBHZXRWaWRlb0NoYW5uZWwo
c2l6ZV90IGluZGV4KTsKIAotICB2b2lkIFNldEF1ZGlvUnRwSGVhZGVyRXh0ZW5zaW9ucygKLSAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OlJ0cEhlYWRlckV4dGVuc2lvbj4mIGV4dGVu
c2lvbnMpIHsKLSAgICB2b2ljZSgpLnNldF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMoZXh0ZW5zaW9u
cyk7Ci0gIH0KLSAgdm9pZCBTZXRWaWRlb1J0cEhlYWRlckV4dGVuc2lvbnMoCi0gICAgICBjb25z
dCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb24+JiBleHRlbnNpb25zKSB7
Ci0gICAgdmlkZW8oKS5zZXRfcnRwX2hlYWRlcl9leHRlbnNpb25zKGV4dGVuc2lvbnMpOwotICB9
CisgIHZvaWQgc2V0X2ZhaWxfY3JlYXRlX2NoYW5uZWwoYm9vbCBmYWlsKTsKIAotICBGYWtlVm9p
Y2VNZWRpYUNoYW5uZWwqIEdldFZvaWNlQ2hhbm5lbChzaXplX3QgaW5kZXgpIHsKLSAgICByZXR1
cm4gdm9pY2UoKS5HZXRDaGFubmVsKGluZGV4KTsKLSAgfQotICBGYWtlVmlkZW9NZWRpYUNoYW5u
ZWwqIEdldFZpZGVvQ2hhbm5lbChzaXplX3QgaW5kZXgpIHsKLSAgICByZXR1cm4gdmlkZW8oKS5H
ZXRDaGFubmVsKGluZGV4KTsKLSAgfQotCi0gIGJvb2wgY2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IHZpZGVvKCkuY2FwdHVyZV87IH0KLSAgYm9vbCBvcHRpb25zX2NoYW5nZWQoKSBjb25zdCB7IHJl
dHVybiB2aWRlbygpLm9wdGlvbnNfY2hhbmdlZF87IH0KLSAgdm9pZCBjbGVhcl9vcHRpb25zX2No
YW5nZWQoKSB7IHZpZGVvKCkub3B0aW9uc19jaGFuZ2VkXyA9IGZhbHNlOyB9Ci0gIHZvaWQgc2V0
X2ZhaWxfY3JlYXRlX2NoYW5uZWwoYm9vbCBmYWlsKSB7Ci0gICAgdm9pY2UoKS5zZXRfZmFpbF9j
cmVhdGVfY2hhbm5lbChmYWlsKTsKLSAgICB2aWRlbygpLnNldF9mYWlsX2NyZWF0ZV9jaGFubmVs
KGZhaWwpOwotICB9CisgcHJpdmF0ZToKKyAgRmFrZVZvaWNlRW5naW5lKiBjb25zdCB2b2ljZV87
CisgIEZha2VWaWRlb0VuZ2luZSogY29uc3QgdmlkZW9fOwogfTsKIAogLy8gSGF2ZSB0byBjb21l
IGFmdGVyd2FyZHMgZHVlIHRvIGRlY2xhcmF0aW9uIG9yZGVyCi1pbmxpbmUgRmFrZVZvaWNlTWVk
aWFDaGFubmVsOjp+RmFrZVZvaWNlTWVkaWFDaGFubmVsKCkgewotICBpZiAoZW5naW5lXykgewot
ICAgIGVuZ2luZV8tPlVucmVnaXN0ZXJDaGFubmVsKHRoaXMpOwotICB9Ci19Ci0KLWlubGluZSBG
YWtlVmlkZW9NZWRpYUNoYW5uZWw6On5GYWtlVmlkZW9NZWRpYUNoYW5uZWwoKSB7Ci0gIGlmIChl
bmdpbmVfKSB7Ci0gICAgZW5naW5lXy0+VW5yZWdpc3RlckNoYW5uZWwodGhpcyk7Ci0gIH0KLX0K
IAogY2xhc3MgRmFrZURhdGFFbmdpbmUgOiBwdWJsaWMgRGF0YUVuZ2luZUludGVyZmFjZSB7CiAg
cHVibGljOgotICB2aXJ0dWFsIERhdGFNZWRpYUNoYW5uZWwqIENyZWF0ZUNoYW5uZWwoY29uc3Qg
TWVkaWFDb25maWcmIGNvbmZpZykgewotICAgIEZha2VEYXRhTWVkaWFDaGFubmVsKiBjaCA9IG5l
dyBGYWtlRGF0YU1lZGlhQ2hhbm5lbCh0aGlzLCBEYXRhT3B0aW9ucygpKTsKLSAgICBjaGFubmVs
c18ucHVzaF9iYWNrKGNoKTsKLSAgICByZXR1cm4gY2g7Ci0gIH0KKyAgRGF0YU1lZGlhQ2hhbm5l
bCogQ3JlYXRlQ2hhbm5lbChjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnKSBvdmVycmlkZTsKIAot
ICBGYWtlRGF0YU1lZGlhQ2hhbm5lbCogR2V0Q2hhbm5lbChzaXplX3QgaW5kZXgpIHsKLSAgICBy
ZXR1cm4gKGNoYW5uZWxzXy5zaXplKCkgPiBpbmRleCkgPyBjaGFubmVsc19baW5kZXhdIDogTlVM
TDsKLSAgfQorICBGYWtlRGF0YU1lZGlhQ2hhbm5lbCogR2V0Q2hhbm5lbChzaXplX3QgaW5kZXgp
OwogCi0gIHZvaWQgVW5yZWdpc3RlckNoYW5uZWwoRGF0YU1lZGlhQ2hhbm5lbCogY2hhbm5lbCkg
ewotICAgIGNoYW5uZWxzXy5lcmFzZShzdGQ6OmZpbmQoY2hhbm5lbHNfLmJlZ2luKCksIGNoYW5u
ZWxzXy5lbmQoKSwgY2hhbm5lbCkpOwotICB9CisgIHZvaWQgVW5yZWdpc3RlckNoYW5uZWwoRGF0
YU1lZGlhQ2hhbm5lbCogY2hhbm5lbCk7CiAKLSAgdmlydHVhbCB2b2lkIFNldERhdGFDb2RlY3Mo
Y29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgZGF0YV9jb2RlY3MpIHsKLSAgICBkYXRhX2Nv
ZGVjc18gPSBkYXRhX2NvZGVjczsKLSAgfQorICB2b2lkIFNldERhdGFDb2RlY3MoY29uc3Qgc3Rk
Ojp2ZWN0b3I8RGF0YUNvZGVjPiYgZGF0YV9jb2RlY3MpOwogCi0gIHZpcnR1YWwgY29uc3Qgc3Rk
Ojp2ZWN0b3I8RGF0YUNvZGVjPiYgZGF0YV9jb2RlY3MoKSB7IHJldHVybiBkYXRhX2NvZGVjc187
IH0KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgZGF0YV9jb2RlY3MoKSBvdmVycmlk
ZTsKIAogIHByaXZhdGU6CiAgIHN0ZDo6dmVjdG9yPEZha2VEYXRhTWVkaWFDaGFubmVsKj4gY2hh
bm5lbHNfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS9mYWtlbmV0d29ya2ludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtlbmV0d29ya2ludGVyZmFj
ZS5oCmluZGV4IDBmMTQ2NTljNDYwNmM5ZGY2YTc2MGU2ZWUzMzgzYjJmOTdhYzlhNTkuLmRmZDM0
MDc3MmI2OTMzOTJiMTVkMzU0NGI3YzRjNmQxZDIyZmNlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZW5ldHdvcmtp
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9iYXNlL2Zha2VuZXR3b3JraW50ZXJmYWNlLmgKQEAgLTE2OSw5ICsxNjksOSBAQCBj
bGFzcyBGYWtlTmV0d29ya0ludGVyZmFjZSA6IHB1YmxpYyBNZWRpYUNoYW5uZWw6Ok5ldHdvcmtJ
bnRlcmZhY2UsCiAgICAgICAgIHN0YXRpY19jYXN0PHJ0Yzo6VHlwZWRNZXNzYWdlRGF0YTxydGM6
OkNvcHlPbldyaXRlQnVmZmVyPio+KG1zZy0+cGRhdGEpOwogICAgIGlmIChkZXN0XykgewogICAg
ICAgaWYgKG1zZy0+bWVzc2FnZV9pZCA9PSBTVF9SVFApIHsKLSAgICAgICAgZGVzdF8tPk9uUGFj
a2V0UmVjZWl2ZWQoJm1zZ19kYXRhLT5kYXRhKCksIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7
CisgICAgICAgIGRlc3RfLT5PblBhY2tldFJlY2VpdmVkKCZtc2dfZGF0YS0+ZGF0YSgpLCBydGM6
OlRpbWVNaWNyb3MoKSk7CiAgICAgICB9IGVsc2UgewotICAgICAgICBkZXN0Xy0+T25SdGNwUmVj
ZWl2ZWQoJm1zZ19kYXRhLT5kYXRhKCksIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7CisgICAg
ICAgIGRlc3RfLT5PblJ0Y3BSZWNlaXZlZCgmbXNnX2RhdGEtPmRhdGEoKSwgcnRjOjpUaW1lTWlj
cm9zKCkpOwogICAgICAgfQogICAgIH0KICAgICBkZWxldGUgbXNnX2RhdGE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2Zh
a2V2aWRlb2NhcHR1cmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS9mYWtldmlkZW9jYXB0dXJlci5jYwppbmRleCA5NDkwMGJhMzdiNmE1
NGIwMGZhNjI2N2I2OWRiZWI1MjM4MzE4NDU3Li5iNWQwMTg5NjA4YTkyMzUyYjhlZDQ1MGViM2U2
NzUyODAzMmZmY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2Zha2V2aWRlb2NhcHR1cmVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZXZpZGVvY2Fw
dHVyZXIuY2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2V2aWRl
b2NhcHR1cmVyLmgiCiAKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewogCkBAIC05NSw3
ICs5Niw3IEBAIGNyaWNrZXQ6OkNhcHR1cmVTdGF0ZSBGYWtlVmlkZW9DYXB0dXJlcjo6U3RhcnQo
CiAgIFNldENhcHR1cmVTdGF0ZShjcmlja2V0OjpDU19SVU5OSU5HKTsKICAgZnJhbWVfc291cmNl
XyA9IGFic2w6Om1ha2VfdW5pcXVlPEZha2VGcmFtZVNvdXJjZT4oCiAgICAgICBmb3JtYXQud2lk
dGgsIGZvcm1hdC5oZWlnaHQsCi0gICAgICBmb3JtYXQuaW50ZXJ2YWwgLyBydGM6OmtOdW1OYW5v
c2Vjc1Blck1pY3Jvc2VjKTsKKyAgICAgIGZvcm1hdC5pbnRlcnZhbCAvIHJ0Yzo6a051bU5hbm9z
ZWNzUGVyTWljcm9zZWMsIHJ0Yzo6VGltZU1pY3JvcygpKTsKICAgZnJhbWVfc291cmNlXy0+U2V0
Um90YXRpb24ocm90YXRpb25fKTsKICAgcmV0dXJuIGNyaWNrZXQ6OkNTX1JVTk5JTkc7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL2gyNjRfcHJvZmlsZV9sZXZlbF9pZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2ZWxfaWQuaAppbmRl
eCBiNGZmODgzNjljNjE0ODlmNGY4NTFiOTVjNTQ2YzI3MWE5YzBmZGY4Li42YTNlN2NkYjMyMTk2
NmY2OTNiZjgzZmI5MGE2MWE5NGM0NzM5Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2gyNjRfcHJvZmlsZV9sZXZlbF9p
ZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2Jhc2UvaDI2NF9wcm9maWxlX2xldmVsX2lkLmgKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8v
IE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhw
b3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIEgyNjQgewpAQCAtNjEsMTgg
KzYyLDE5IEBAIGFic2w6Om9wdGlvbmFsPFByb2ZpbGVMZXZlbElkPiBQYXJzZVByb2ZpbGVMZXZl
bElkKGNvbnN0IGNoYXIqIHN0cik7CiAvLyBjb250YWluZWQgaW4gYW4gU0RQIGtleS12YWx1ZSBt
YXAuIEEgZGVmYXVsdCBwcm9maWxlIGxldmVsIGlkIHdpbGwgYmUKIC8vIHJldHVybmVkIGlmIHRo
ZSBwcm9maWxlLWxldmVsLWlkIGtleSBpcyBtaXNzaW5nLiBOb3RoaW5nIHdpbGwgYmUgcmV0dXJu
ZWQgaWYKIC8vIHRoZSBrZXkgaXMgcHJlc2VudCBidXQgdGhlIHN0cmluZyBpcyBpbnZhbGlkLgot
YWJzbDo6b3B0aW9uYWw8UHJvZmlsZUxldmVsSWQ+IFBhcnNlU2RwUHJvZmlsZUxldmVsSWQoCitS
VENfRVhQT1JUIGFic2w6Om9wdGlvbmFsPFByb2ZpbGVMZXZlbElkPiBQYXJzZVNkcFByb2ZpbGVM
ZXZlbElkKAogICAgIGNvbnN0IENvZGVjUGFyYW1ldGVyTWFwJiBwYXJhbXMpOwogCiAvLyBHaXZl
biB0aGF0IGEgZGVjb2RlciBzdXBwb3J0cyB1cCB0byBhIGdpdmVuIGZyYW1lIHNpemUgKGluIHBp
eGVscykgYXQgdXAgdG8gYQogLy8gZ2l2ZW4gbnVtYmVyIG9mIGZyYW1lcyBwZXIgc2Vjb25kLCBy
ZXR1cm4gdGhlIGhpZ2hlc3QgSC4yNjQgbGV2ZWwgd2hlcmUgaXQKIC8vIGNhbiBndWFyYW50ZWUg
dGhhdCBpdCB3aWxsIGJlIGFibGUgdG8gc3VwcG9ydCBhbGwgdmFsaWQgZW5jb2RlZCBzdHJlYW1z
IHRoYXQKIC8vIGFyZSB3aXRoaW4gdGhhdCBsZXZlbC4KLWFic2w6Om9wdGlvbmFsPExldmVsPiBT
dXBwb3J0ZWRMZXZlbChpbnQgbWF4X2ZyYW1lX3BpeGVsX2NvdW50LCBmbG9hdCBtYXhfZnBzKTsK
K1JUQ19FWFBPUlQgYWJzbDo6b3B0aW9uYWw8TGV2ZWw+IFN1cHBvcnRlZExldmVsKGludCBtYXhf
ZnJhbWVfcGl4ZWxfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBtYXhfZnBzKTsKIAogLy8gUmV0dXJucyBjYW5vbmljYWwgc3RyaW5n
IHJlcHJlc2VudGF0aW9uIGFzIHRocmVlIGhleCBieXRlcyBvZiB0aGUgcHJvZmlsZQogLy8gbGV2
ZWwgaWQsIG9yIHJldHVybnMgbm90aGluZyBmb3IgaW52YWxpZCBwcm9maWxlIGxldmVsIGlkcy4K
LWFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBQcm9maWxlTGV2ZWxJZFRvU3RyaW5nKAorUlRD
X0VYUE9SVCBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gUHJvZmlsZUxldmVsSWRUb1N0cmlu
ZygKICAgICBjb25zdCBQcm9maWxlTGV2ZWxJZCYgcHJvZmlsZV9sZXZlbF9pZCk7CiAKIC8vIEdl
bmVyYXRlIGNvZGVjIHBhcmFtZXRlcnMgdGhhdCB3aWxsIGJlIHVzZWQgYXMgYW5zd2VyIGluIGFu
IFNEUCBuZWdvdGlhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY2hhbm5lbC5jYwpp
bmRleCBjYmEzYmUzMGVkMTYxNmNlMzM3NWFjYWEwYTlkNTc2Mzc2OThjZjllLi4wNjM0YjJlNTc1
ZjhiMmViYWZmYzIyOTllMTJiN2U3ZDA5NDRmYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY2hhbm5lbC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNl
L21lZGlhY2hhbm5lbC5jYwpAQCAtMTYsMTYgKzE2LDE5IEBAIFZpZGVvT3B0aW9uczo6VmlkZW9P
cHRpb25zKCkgPSBkZWZhdWx0OwogVmlkZW9PcHRpb25zOjp+VmlkZW9PcHRpb25zKCkgPSBkZWZh
dWx0OwogCiBNZWRpYUNoYW5uZWw6Ok1lZGlhQ2hhbm5lbChjb25zdCBNZWRpYUNvbmZpZyYgY29u
ZmlnKQotICAgIDogZW5hYmxlX2RzY3BfKGNvbmZpZy5lbmFibGVfZHNjcCksIG5ldHdvcmtfaW50
ZXJmYWNlXyhOVUxMKSB7fQorICAgIDogZW5hYmxlX2RzY3BfKGNvbmZpZy5lbmFibGVfZHNjcCkg
e30KIAotTWVkaWFDaGFubmVsOjpNZWRpYUNoYW5uZWwoKSA6IGVuYWJsZV9kc2NwXyhmYWxzZSks
IG5ldHdvcmtfaW50ZXJmYWNlXyhOVUxMKSB7fQorTWVkaWFDaGFubmVsOjpNZWRpYUNoYW5uZWwo
KSA6IGVuYWJsZV9kc2NwXyhmYWxzZSkge30KIAogTWVkaWFDaGFubmVsOjp+TWVkaWFDaGFubmVs
KCkge30KIAotdm9pZCBNZWRpYUNoYW5uZWw6OlNldEludGVyZmFjZShOZXR3b3JrSW50ZXJmYWNl
KiBpZmFjZSkgewordm9pZCBNZWRpYUNoYW5uZWw6OlNldEludGVyZmFjZSgKKyAgICBOZXR3b3Jr
SW50ZXJmYWNlKiBpZmFjZSwKKyAgICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBt
ZWRpYV90cmFuc3BvcnQpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJm5ldHdvcmtfaW50ZXJmYWNl
X2NyaXRfKTsKICAgbmV0d29ya19pbnRlcmZhY2VfID0gaWZhY2U7Ci0gIFNldERzY3AoZW5hYmxl
X2RzY3BfID8gUHJlZmVycmVkRHNjcCgpIDogcnRjOjpEU0NQX0RFRkFVTFQpOworICBtZWRpYV90
cmFuc3BvcnRfID0gbWVkaWFfdHJhbnNwb3J0OworICBVcGRhdGVEc2NwKCk7CiB9CiAKIGludCBN
ZWRpYUNoYW5uZWw6OkdldFJ0cFNlbmRUaW1lRXh0bklkKCkgY29uc3QgewpAQCAtODQsNiArODcs
MTAgQEAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBBdWRpb1NlbmRQYXJhbWV0
ZXJzOjpUb1N0cmluZ01hcCgpIGNvbnN0IHsKICAgcmV0dXJuIHBhcmFtczsKIH0KIAorY3JpY2tl
dDo6TWVkaWFUeXBlIFZvaWNlTWVkaWFDaGFubmVsOjptZWRpYV90eXBlKCkgY29uc3QgeworICBy
ZXR1cm4gY3JpY2tldDo6TWVkaWFUeXBlOjpNRURJQV9UWVBFX0FVRElPOworfQorCiBWaWRlb1Nl
bmRQYXJhbWV0ZXJzOjpWaWRlb1NlbmRQYXJhbWV0ZXJzKCkgPSBkZWZhdWx0OwogVmlkZW9TZW5k
UGFyYW1ldGVyczo6flZpZGVvU2VuZFBhcmFtZXRlcnMoKSA9IGRlZmF1bHQ7CiAKQEAgLTkzLDEx
ICsxMDAsMTkgQEAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBWaWRlb1NlbmRQ
YXJhbWV0ZXJzOjpUb1N0cmluZ01hcCgpIGNvbnN0IHsKICAgcmV0dXJuIHBhcmFtczsKIH0KIAor
Y3JpY2tldDo6TWVkaWFUeXBlIFZpZGVvTWVkaWFDaGFubmVsOjptZWRpYV90eXBlKCkgY29uc3Qg
eworICByZXR1cm4gY3JpY2tldDo6TWVkaWFUeXBlOjpNRURJQV9UWVBFX1ZJREVPOworfQorCiBE
YXRhTWVkaWFDaGFubmVsOjpEYXRhTWVkaWFDaGFubmVsKCkgPSBkZWZhdWx0OwogRGF0YU1lZGlh
Q2hhbm5lbDo6RGF0YU1lZGlhQ2hhbm5lbChjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnKQogICAg
IDogTWVkaWFDaGFubmVsKGNvbmZpZykge30KIERhdGFNZWRpYUNoYW5uZWw6On5EYXRhTWVkaWFD
aGFubmVsKCkgPSBkZWZhdWx0OwogCitjcmlja2V0OjpNZWRpYVR5cGUgRGF0YU1lZGlhQ2hhbm5l
bDo6bWVkaWFfdHlwZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGNyaWNrZXQ6Ok1lZGlhVHlwZTo6TUVE
SUFfVFlQRV9EQVRBOworfQorCiBib29sIERhdGFNZWRpYUNoYW5uZWw6OkdldFN0YXRzKERhdGFN
ZWRpYUluZm8qIGluZm8pIHsKICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY2hhbm5l
bC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFz
ZS9tZWRpYWNoYW5uZWwuaAppbmRleCBmZjMzNjhjZjQwMWQ1Zjc4YWYwNzc5YzU0N2NmMGIyZWQ3
Y2IyODJlLi5mY2E2ZWU0ZGQ5YmU1YTU1ZmIyNTg1NzAyOGUzMDBhNGY4ZTdhMDg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNl
L21lZGlhY2hhbm5lbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21lZGlhL2Jhc2UvbWVkaWFjaGFubmVsLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNs
dWRlICJhcGkvYXVkaW9fb3B0aW9ucy5oIgogI2luY2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVkZWNy
eXB0b3JpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZW5jcnlwdG9yaW50
ZXJmYWNlLmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJhcGkvcnRjZXJyb3IuaCIKICNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgImFwaS9ydHByZWNlaXZlcmludGVyZmFjZS5oIgpAQCAtMTgzLDE0ICsxODQsMjIg
QEAgY2xhc3MgTWVkaWFDaGFubmVsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAg
TWVkaWFDaGFubmVsKCk7CiAgIH5NZWRpYUNoYW5uZWwoKSBvdmVycmlkZTsKIAotICAvLyBTZXRz
IHRoZSBhYnN0cmFjdCBpbnRlcmZhY2UgY2xhc3MgZm9yIHNlbmRpbmcgUlRQL1JUQ1AgZGF0YS4K
LSAgdmlydHVhbCB2b2lkIFNldEludGVyZmFjZShOZXR3b3JrSW50ZXJmYWNlKiBpZmFjZSk7Cisg
IHZpcnR1YWwgY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUoKSBjb25zdCA9IDA7CisKKyAg
Ly8gU2V0cyB0aGUgYWJzdHJhY3QgaW50ZXJmYWNlIGNsYXNzIGZvciBzZW5kaW5nIFJUUC9SVENQ
IGRhdGEgYW5kCisgIC8vIGludGVyZmFjZSBmb3IgbWVkaWEgdHJhbnNwb3J0IChleHBlcmltZW50
YWwpLiBJZiBtZWRpYSB0cmFuc3BvcnQgaXMKKyAgLy8gcHJvdmlkZWQsIGl0IHNob3VsZCBiZSB1
c2VkIGluc3RlYWQgb2YgUlRQL1JUQ1AuCisgIC8vIFRPRE8oc3VraGFub3YpOiBDdXJyZW50bHkg
bWVkaWEgdHJhbnNwb3J0IGNhbiBjby1leGlzdCB3aXRoIFJUUC9SVENQLCBidXQKKyAgLy8gaW4g
dGhlIGZ1dHVyZSB3ZSB3aWxsIHJlZmFjdG9yIGNvZGUgdG8gc2VuZCBhbGwgZnJhbWVzIHdpdGgg
bWVkaWEKKyAgLy8gdHJhbnNwb3J0LgorICB2aXJ0dWFsIHZvaWQgU2V0SW50ZXJmYWNlKE5ldHdv
cmtJbnRlcmZhY2UqIGlmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6
TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCk7CiAgIC8vIENhbGxlZCB3
aGVuIGEgUlRQIHBhY2tldCBpcyByZWNlaXZlZC4KICAgdmlydHVhbCB2b2lkIE9uUGFja2V0UmVj
ZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpID0g
MDsKICAgLy8gQ2FsbGVkIHdoZW4gYSBSVENQIHBhY2tldCBpcyByZWNlaXZlZC4KICAgdmlydHVh
bCB2b2lkIE9uUnRjcFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0
X3RpbWUpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0
X3RpbWVfdXMpID0gMDsKICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHNvY2tldCdzIGFiaWxpdHkgdG8g
c2VuZCBoYXMgY2hhbmdlZC4KICAgdmlydHVhbCB2b2lkIE9uUmVhZHlUb1NlbmQoYm9vbCByZWFk
eSkgPSAwOwogICAvLyBDYWxsZWQgd2hlbiB0aGUgbmV0d29yayByb3V0ZSB1c2VkIGZvciBzZW5k
aW5nIHBhY2tldHMgY2hhbmdlZC4KQEAgLTI1MSwxNCArMjYwLDI4IEBAIGNsYXNzIE1lZGlhQ2hh
bm5lbCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgcmV0dXJuIG5ldHdvcmtf
aW50ZXJmYWNlXy0+U2V0T3B0aW9uKHR5cGUsIG9wdCwgb3B0aW9uKTsKICAgfQogCisgIHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCgpIHsKKyAgICByZXR1
cm4gbWVkaWFfdHJhbnNwb3J0XzsKKyAgfQorCisgIC8vIENvcnJlc3BvbmRzIHRvIHRoZSBTRFAg
YXR0cmlidXRlIGV4dG1hcC1hbGxvdy1taXhlZCwgc2VlIFJGQzgyODUuCisgIC8vIFNldCB0byB0
cnVlIGlmIGl0J3MgYWxsb3dlZCB0byBtaXggb25lLSBhbmQgdHdvLWJ5dGUgUlRQIGhlYWRlciBl
eHRlbnNpb25zCisgIC8vIGluIHRoZSBzYW1lIHN0cmVhbS4gVGhlIHNldHRlciBhbmQgZ2V0dGVy
IG11c3Qgb25seSBiZSBjYWxsZWQgZnJvbQorICAvLyB3b3JrZXJfdGhyZWFkLgorICB2b2lkIFNl
dEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICBleHRtYXBf
YWxsb3dfbWl4ZWRfID0gZXh0bWFwX2FsbG93X21peGVkOworICB9CisgIGJvb2wgRXh0bWFwQWxs
b3dNaXhlZCgpIGNvbnN0IHsgcmV0dXJuIGV4dG1hcF9hbGxvd19taXhlZF87IH0KKwogIHByb3Rl
Y3RlZDoKICAgdmlydHVhbCBydGM6OkRpZmZTZXJ2Q29kZVBvaW50IFByZWZlcnJlZERzY3AoKSBj
b25zdDsKIAogICBib29sIERzY3BFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZW5hYmxlX2RzY3Bf
OyB9CiAKLSBwcml2YXRlOgogICAvLyBUaGlzIG1ldGhvZCBzZXRzIERTQ1AgfHZhbHVlfCBvbiBi
b3RoIFJUUCBhbmQgUlRDUCBjaGFubmVscy4KLSAgaW50IFNldERzY3AocnRjOjpEaWZmU2VydkNv
ZGVQb2ludCB2YWx1ZSkgeworICBpbnQgVXBkYXRlRHNjcCgpIHsKKyAgICBydGM6OkRpZmZTZXJ2
Q29kZVBvaW50IHZhbHVlID0KKyAgICAgICAgZW5hYmxlX2RzY3BfID8gUHJlZmVycmVkRHNjcCgp
IDogcnRjOjpEU0NQX0RFRkFVTFQ7CiAgICAgaW50IHJldDsKICAgICByZXQgPSBTZXRPcHRpb24o
TmV0d29ya0ludGVyZmFjZTo6U1RfUlRQLCBydGM6OlNvY2tldDo6T1BUX0RTQ1AsIHZhbHVlKTsK
ICAgICBpZiAocmV0ID09IDApIHsKQEAgLTI2Nyw2ICsyOTAsNyBAQCBjbGFzcyBNZWRpYUNoYW5u
ZWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIHJldHVybiByZXQ7CiAgIH0K
IAorIHByaXZhdGU6CiAgIGJvb2wgRG9TZW5kUGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIq
IHBhY2tldCwKICAgICAgICAgICAgICAgICAgICAgYm9vbCBydGNwLAogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlBhY2tldE9wdGlvbnMmIG9wdGlvbnMpIHsKQEAgLTI4Myw3ICszMDcs
OSBAQCBjbGFzcyBNZWRpYUNoYW5uZWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewog
ICAvLyBmcm9tIGFueSBNZWRpYUVuZ2luZSB0aHJlYWRzLiBUaGlzIGNyaXRpY2FsIHNlY3Rpb24g
aXMgdG8gcHJvdGVjdCBhY2Nlc3NpbmcKICAgLy8gb2YgbmV0d29ya19pbnRlcmZhY2VfIG9iamVj
dC4KICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gbmV0d29ya19pbnRlcmZhY2VfY3JpdF87Ci0gIE5l
dHdvcmtJbnRlcmZhY2UqIG5ldHdvcmtfaW50ZXJmYWNlXzsKKyAgTmV0d29ya0ludGVyZmFjZSog
bmV0d29ya19pbnRlcmZhY2VfID0gbnVsbHB0cjsKKyAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydElu
dGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0XyA9IG51bGxwdHI7CisgIGJvb2wgZXh0bWFwX2FsbG93
X21peGVkXyA9IGZhbHNlOwogfTsKIAogLy8gVGhlIHN0YXRzIGluZm9ybWF0aW9uIGlzIHN0cnVj
dHVyZWQgYXMgZm9sbG93czoKQEAgLTQwMiwxNCArNDI4LDYgQEAgc3RydWN0IFZvaWNlU2VuZGVy
SW5mbyA6IHB1YmxpYyBNZWRpYVNlbmRlckluZm8gewogICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vd2VicnRjLXN0YXRzLyNkb20tcnRjbWVkaWFzdHJlYW10cmFja3N0YXRzLXRvdGFsYXVkaW9l
bmVyZ3kKICAgZG91YmxlIHRvdGFsX2lucHV0X2VuZXJneSA9IDAuMDsKICAgZG91YmxlIHRvdGFs
X2lucHV0X2R1cmF0aW9uID0gMC4wOwotICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NTcyKTog
UmVtb3ZlIEFQTSBzdGF0cyBmcm9tIHRoaXMgc3RydWN0LCBzaW5jZSB0aGV5Ci0gIC8vIGFyZSBu
byBsb25nZXIgbmVlZGVkIG5vdyB0aGF0IHdlIGhhdmUgYXBtX3N0YXRpc3RpY3MuCi0gIGludCBl
Y2hvX2RlbGF5X21lZGlhbl9tcyA9IDA7Ci0gIGludCBlY2hvX2RlbGF5X3N0ZF9tcyA9IDA7Ci0g
IGludCBlY2hvX3JldHVybl9sb3NzID0gMDsKLSAgaW50IGVjaG9fcmV0dXJuX2xvc3NfZW5oYW5j
ZW1lbnQgPSAwOwotICBmbG9hdCByZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2QgPSAwLjBmOwotICBm
bG9hdCByZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2RfcmVjZW50X21heCA9IDAuMGY7CiAgIGJvb2wg
dHlwaW5nX25vaXNlX2RldGVjdGVkID0gZmFsc2U7CiAgIHdlYnJ0Yzo6QU5BU3RhdHMgYW5hX3N0
YXRpc3RpY3M7CiAgIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nU3RhdHMgYXBtX3N0YXRpc3RpY3M7
CkBAIC00NTgsNiArNDc2LDEwIEBAIHN0cnVjdCBWb2ljZVJlY2VpdmVySW5mbyA6IHB1YmxpYyBN
ZWRpYVJlY2VpdmVySW5mbyB7CiAgIGludCBkZWNvZGluZ19tdXRlZF9vdXRwdXQgPSAwOwogICAv
LyBFc3RpbWF0ZWQgY2FwdHVyZSBzdGFydCB0aW1lIGluIE5UUCB0aW1lIGluIG1zLgogICBpbnQ2
NF90IGNhcHR1cmVfc3RhcnRfbnRwX3RpbWVfbXMgPSAtMTsKKyAgLy8gQ291bnQgb2YgdGhlIG51
bWJlciBvZiBidWZmZXIgZmx1c2hlcy4KKyAgdWludDY0X3Qgaml0dGVyX2J1ZmZlcl9mbHVzaGVz
ID0gMDsKKyAgLy8gTnVtYmVyIG9mIHNhbXBsZXMgZXhwYW5kZWQgZHVlIHRvIGRlbGF5ZWQgcGFj
a2V0cy4KKyAgdWludDY0X3QgZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMgPSAwOwogfTsK
IAogc3RydWN0IFZpZGVvU2VuZGVySW5mbyA6IHB1YmxpYyBNZWRpYVNlbmRlckluZm8gewpAQCAt
NjQ3LDEyICs2NjksMTQgQEAgc3RydWN0IFJ0cFNlbmRQYXJhbWV0ZXJzIDogUnRwUGFyYW1ldGVy
czxDb2RlYz4gewogICAvLyBUaGlzIGlzIHRoZSB2YWx1ZSB0byBiZSBzZW50IGluIHRoZSBNSUQg
UlRQIGhlYWRlciBleHRlbnNpb24gKGlmIHRoZSBoZWFkZXIKICAgLy8gZXh0ZW5zaW9uIGluIGlu
Y2x1ZGVkIGluIHRoZSBsaXN0IG9mIGV4dGVuc2lvbnMpLgogICBzdGQ6OnN0cmluZyBtaWQ7Cisg
IGJvb2wgZXh0bWFwX2FsbG93X21peGVkID0gZmFsc2U7CiAKICBwcm90ZWN0ZWQ6CiAgIHN0ZDo6
bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gVG9TdHJpbmdNYXAoKSBjb25zdCBvdmVycmlk
ZSB7CiAgICAgYXV0byBwYXJhbXMgPSBSdHBQYXJhbWV0ZXJzPENvZGVjPjo6VG9TdHJpbmdNYXAo
KTsKICAgICBwYXJhbXNbIm1heF9iYW5kd2lkdGhfYnBzIl0gPSBydGM6OlRvU3RyaW5nKG1heF9i
YW5kd2lkdGhfYnBzKTsKICAgICBwYXJhbXNbIm1pZCJdID0gKG1pZC5lbXB0eSgpID8gIjxub3Qg
c2V0PiIgOiBtaWQpOworICAgIHBhcmFtc1siZXh0bWFwLWFsbG93LW1peGVkIl0gPSBleHRtYXBf
YWxsb3dfbWl4ZWQgPyAidHJ1ZSIgOiAiZmFsc2UiOwogICAgIHJldHVybiBwYXJhbXM7CiAgIH0K
IH07CkBAIC02NzQsNiArNjk4LDggQEAgY2xhc3MgVm9pY2VNZWRpYUNoYW5uZWwgOiBwdWJsaWMg
TWVkaWFDaGFubmVsIHsKICAgZXhwbGljaXQgVm9pY2VNZWRpYUNoYW5uZWwoY29uc3QgTWVkaWFD
b25maWcmIGNvbmZpZykKICAgICAgIDogTWVkaWFDaGFubmVsKGNvbmZpZykge30KICAgflZvaWNl
TWVkaWFDaGFubmVsKCkgb3ZlcnJpZGUge30KKworICBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFf
dHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICB2aXJ0dWFsIGJvb2wgU2V0U2VuZFBhcmFtZXRlcnMo
Y29uc3QgQXVkaW9TZW5kUGFyYW1ldGVycyYgcGFyYW1zKSA9IDA7CiAgIHZpcnR1YWwgYm9vbCBT
ZXRSZWN2UGFyYW1ldGVycyhjb25zdCBBdWRpb1JlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpID0gMDsK
ICAgdmlydHVhbCB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgR2V0UnRwU2VuZFBhcmFtZXRlcnModWlu
dDMyX3Qgc3NyYykgY29uc3QgPSAwOwpAQCAtNzQ2LDYgKzc3Miw3IEBAIGNsYXNzIFZpZGVvTWVk
aWFDaGFubmVsIDogcHVibGljIE1lZGlhQ2hhbm5lbCB7CiAgICAgICA6IE1lZGlhQ2hhbm5lbChj
b25maWcpIHt9CiAgIH5WaWRlb01lZGlhQ2hhbm5lbCgpIG92ZXJyaWRlIHt9CiAKKyAgY3JpY2tl
dDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgdmlydHVhbCBib29s
IFNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0IFZpZGVvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgPSAw
OwogICB2aXJ0dWFsIGJvb2wgU2V0UmVjdlBhcmFtZXRlcnMoY29uc3QgVmlkZW9SZWN2UGFyYW1l
dGVycyYgcGFyYW1zKSA9IDA7CiAgIHZpcnR1YWwgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIEdldFJ0
cFNlbmRQYXJhbWV0ZXJzKHVpbnQzMl90IHNzcmMpIGNvbnN0ID0gMDsKQEAgLTg1Nyw2ICs4ODQs
NyBAQCBjbGFzcyBEYXRhTWVkaWFDaGFubmVsIDogcHVibGljIE1lZGlhQ2hhbm5lbCB7CiAgIGV4
cGxpY2l0IERhdGFNZWRpYUNoYW5uZWwoY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZyk7CiAgIH5E
YXRhTWVkaWFDaGFubmVsKCkgb3ZlcnJpZGU7CiAKKyAgY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlh
X3R5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgdmlydHVhbCBib29sIFNldFNlbmRQYXJhbWV0ZXJz
KGNvbnN0IERhdGFTZW5kUGFyYW1ldGVycyYgcGFyYW1zKSA9IDA7CiAgIHZpcnR1YWwgYm9vbCBT
ZXRSZWN2UGFyYW1ldGVycyhjb25zdCBEYXRhUmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9iYXNlL21lZGlhY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY29uZmlnLmgKaW5kZXggZWRhMzg3ZTMxOTExMmIz
MjFmMmZkOGU2OGI2OGYyM2Q1YjBiZjA4OS4uYzhmYzUyMTJhMGY4Y2JjNWIyNzM4NmI1ODdlZjQ2
MDUzY2E1ZmI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFjb25maWcuaApAQCAtNTks
OCArNTksMTcgQEAgc3RydWN0IE1lZGlhQ29uZmlnIHsKICAgICAvLyBUT0RPKGJ1Z3Mud2VicnRj
Lm9yZy84NTA0KTogSWYgYWxsIGdvZXMgd2VsbCwgdGhlIGZsYWcgd2lsbCBiZSByZW1vdmVkCiAg
ICAgLy8gdG9nZXRoZXIgd2l0aCB0aGUgb2xkIG1ldGhvZCBvZiBlc3RpbWF0aW9uLgogICAgIGJv
b2wgZXhwZXJpbWVudF9jcHVfbG9hZF9lc3RpbWF0b3IgPSBmYWxzZTsKKworICAgIC8vIFRpbWUg
aW50ZXJ2YWwgYmV0d2VlbiBSVENQIHJlcG9ydCBmb3IgdmlkZW8KKyAgICBpbnQgcnRjcF9yZXBv
cnRfaW50ZXJ2YWxfbXMgPSAxMDAwOwogICB9IHZpZGVvOwogCisgIC8vIEF1ZGlvLXNwZWNpZmlj
IGNvbmZpZy4KKyAgc3RydWN0IEF1ZGlvIHsKKyAgICAvLyBUaW1lIGludGVydmFsIGJldHdlZW4g
UlRDUCByZXBvcnQgZm9yIGF1ZGlvCisgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0g
NTAwMDsKKyAgfSBhdWRpbzsKKwogICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFDb25maWcm
IG8pIGNvbnN0IHsKICAgICByZXR1cm4gZW5hYmxlX2RzY3AgPT0gby5lbmFibGVfZHNjcCAmJgog
ICAgICAgICAgICB2aWRlby5lbmFibGVfY3B1X2FkYXB0YXRpb24gPT0gby52aWRlby5lbmFibGVf
Y3B1X2FkYXB0YXRpb24gJiYKQEAgLTcxLDcgKzgwLDkgQEAgc3RydWN0IE1lZGlhQ29uZmlnIHsK
ICAgICAgICAgICAgdmlkZW8ucGVyaW9kaWNfYWxyX2JhbmR3aWR0aF9wcm9iaW5nID09CiAgICAg
ICAgICAgICAgICBvLnZpZGVvLnBlcmlvZGljX2Fscl9iYW5kd2lkdGhfcHJvYmluZyAmJgogICAg
ICAgICAgICB2aWRlby5leHBlcmltZW50X2NwdV9sb2FkX2VzdGltYXRvciA9PQotICAgICAgICAg
ICAgICAgby52aWRlby5leHBlcmltZW50X2NwdV9sb2FkX2VzdGltYXRvcjsKKyAgICAgICAgICAg
ICAgIG8udmlkZW8uZXhwZXJpbWVudF9jcHVfbG9hZF9lc3RpbWF0b3IgJiYKKyAgICAgICAgICAg
dmlkZW8ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPT0gby52aWRlby5ydGNwX3JlcG9ydF9pbnRl
cnZhbF9tcyAmJgorICAgICAgICAgICBhdWRpby5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9PSBv
LmF1ZGlvLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zOwogICB9CiAKICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IE1lZGlhQ29uZmlnJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL21lZGlhY29uc3RhbnRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgKaW5kZXggMTRjNDliYWY3MmNi
YWQxYzVhOTIwMjhiNDc5YTBiMTczYzBkYWJjZC4uYzRhMzQwNmZkODVhMjNhOGFhYmEzNDAzYzMx
OWM2ZTgxMWY1YTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMu
aApAQCAtMTMsNiArMTMsOCBAQAogCiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAicnRj
X2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKKwogLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGNvbnN0
YW50cyByZWxhdGVkIHRvIG1lZGlhLgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CkBAIC0xMjcsMTIg
KzEyOSwxMiBAQCBleHRlcm4gY29uc3QgY2hhciBrQ29tZm9ydE5vaXNlQ29kZWNOYW1lW107CiAK
IGV4dGVybiBjb25zdCBjaGFyIGtWcDhDb2RlY05hbWVbXTsKIGV4dGVybiBjb25zdCBjaGFyIGtW
cDlDb2RlY05hbWVbXTsKLWV4dGVybiBjb25zdCBjaGFyIGtIMjY0Q29kZWNOYW1lW107CitSVENf
RVhQT1JUIGV4dGVybiBjb25zdCBjaGFyIGtIMjY0Q29kZWNOYW1lW107CiAKIC8vIFJGQyA2MTg0
IFJUUCBQYXlsb2FkIEZvcm1hdCBmb3IgSC4yNjQgdmlkZW8KLWV4dGVybiBjb25zdCBjaGFyIGtI
MjY0Rm10cFByb2ZpbGVMZXZlbElkW107Ci1leHRlcm4gY29uc3QgY2hhciBrSDI2NEZtdHBMZXZl
bEFzeW1tZXRyeUFsbG93ZWRbXTsKLWV4dGVybiBjb25zdCBjaGFyIGtIMjY0Rm10cFBhY2tldGl6
YXRpb25Nb2RlW107CitSVENfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyIGtIMjY0Rm10cFByb2Zp
bGVMZXZlbElkW107CitSVENfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyIGtIMjY0Rm10cExldmVs
QXN5bW1ldHJ5QWxsb3dlZFtdOworUlRDX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciBrSDI2NEZt
dHBQYWNrZXRpemF0aW9uTW9kZVtdOwogZXh0ZXJuIGNvbnN0IGNoYXIga0gyNjRGbXRwU3Byb3BQ
YXJhbWV0ZXJTZXRzW107CiBleHRlcm4gY29uc3QgY2hhciBrSDI2NFByb2ZpbGVMZXZlbENvbnN0
cmFpbmVkQmFzZWxpbmVbXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFlbmdpbmUuY2MK
aW5kZXggNzZjYWM0YjQzODM0MmUwYWJlMjI2YTcyNzY1ZDA0NjI5ZDU4MjNiNy4uZDUxOThmZTY0
ZjE5MDFlMDAzZGY0ODIyOTM5ODM0ZGNmMWJjZWY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNl
L21lZGlhZW5naW5lLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJtZWRpYS9iYXNl
L21lZGlhZW5naW5lLmgiCiAKKyNpbmNsdWRlIDx1dGlsaXR5PgorCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmlu
Z2VuY29kZS5oIgogCkBAIC0xMDQsNCArMTA2LDMzIEBAIHdlYnJ0Yzo6UlRDRXJyb3IgVmFsaWRh
dGVSdHBQYXJhbWV0ZXJzKAogICByZXR1cm4gd2VicnRjOjpSVENFcnJvcjo6T0soKTsKIH0KIAor
Q29tcG9zaXRlTWVkaWFFbmdpbmU6OkNvbXBvc2l0ZU1lZGlhRW5naW5lKAorICAgIHN0ZDo6dW5p
cXVlX3B0cjxWb2ljZUVuZ2luZUludGVyZmFjZT4gdm9pY2VfZW5naW5lLAorICAgIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb0VuZ2luZUludGVyZmFjZT4gdmlkZW9fZW5naW5lKQorICAgIDogdm9pY2Vf
ZW5naW5lXyhzdGQ6Om1vdmUodm9pY2VfZW5naW5lKSksCisgICAgICB2aWRlb19lbmdpbmVfKHN0
ZDo6bW92ZSh2aWRlb19lbmdpbmUpKSB7fQorCitDb21wb3NpdGVNZWRpYUVuZ2luZTo6fkNvbXBv
c2l0ZU1lZGlhRW5naW5lKCkgPSBkZWZhdWx0OworCitib29sIENvbXBvc2l0ZU1lZGlhRW5naW5l
OjpJbml0KCkgeworICB2b2ljZSgpLkluaXQoKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK1ZvaWNl
RW5naW5lSW50ZXJmYWNlJiBDb21wb3NpdGVNZWRpYUVuZ2luZTo6dm9pY2UoKSB7CisgIHJldHVy
biAqdm9pY2VfZW5naW5lXy5nZXQoKTsKK30KKworVmlkZW9FbmdpbmVJbnRlcmZhY2UmIENvbXBv
c2l0ZU1lZGlhRW5naW5lOjp2aWRlbygpIHsKKyAgcmV0dXJuICp2aWRlb19lbmdpbmVfLmdldCgp
OworfQorCitjb25zdCBWb2ljZUVuZ2luZUludGVyZmFjZSYgQ29tcG9zaXRlTWVkaWFFbmdpbmU6
OnZvaWNlKCkgY29uc3QgeworICByZXR1cm4gKnZvaWNlX2VuZ2luZV8uZ2V0KCk7Cit9CisKK2Nv
bnN0IFZpZGVvRW5naW5lSW50ZXJmYWNlJiBDb21wb3NpdGVNZWRpYUVuZ2luZTo6dmlkZW8oKSBj
b25zdCB7CisgIHJldHVybiAqdmlkZW9fZW5naW5lXy5nZXQoKTsKK30KKwogfTsgIC8vIG5hbWVz
cGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhZW5naW5lLmgKaW5kZXggMDFj
NmZiNjUyNjllYTJlNzI2MTI0ZGU5YWJiNzI4OWQ1NjY1NGJkYi4uMDEzMDBkNDhhYzM3MGI3YTk1
YTZkYWE3ODhhNmY0OTJjNDZjN2EzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFlbmdp
bmUuaApAQCAtMTUsMTMgKzE1LDEzIEBACiAjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpby5o
PgogI2VuZGlmCiAKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1
ZGUgPHR1cGxlPgotI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFw
aS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAiY2FsbC9hdWRpb19zdGF0ZS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29k
ZWMuaCIKQEAgLTQ4LDM3ICs0OCwzMCBAQCBzdHJ1Y3QgUnRwQ2FwYWJpbGl0aWVzIHsKICAgc3Rk
Ojp2ZWN0b3I8d2VicnRjOjpSdHBFeHRlbnNpb24+IGhlYWRlcl9leHRlbnNpb25zOwogfTsKIAot
Ly8gTWVkaWFFbmdpbmVJbnRlcmZhY2UgaXMgYW4gYWJzdHJhY3Rpb24gb2YgYSBtZWRpYSBlbmdp
bmUgd2hpY2ggY2FuIGJlCi0vLyBzdWJjbGFzc2VkIHRvIHN1cHBvcnQgZGlmZmVyZW50IG1lZGlh
IGNvbXBvbmVudHJ5IGJhY2tlbmRzLgotLy8gSXQgc3VwcG9ydHMgdm9pY2UgYW5kIHZpZGVvIG9w
ZXJhdGlvbnMgaW4gdGhlIHNhbWUgY2xhc3MgdG8gZmFjaWxpdGF0ZQotLy8gcHJvcGVyIHN5bmNo
cm9uaXphdGlvbiBiZXR3ZWVuIGJvdGggbWVkaWEgdHlwZXMuCi1jbGFzcyBNZWRpYUVuZ2luZUlu
dGVyZmFjZSB7CitjbGFzcyBWb2ljZUVuZ2luZUludGVyZmFjZSB7CiAgcHVibGljOgotICB2aXJ0
dWFsIH5NZWRpYUVuZ2luZUludGVyZmFjZSgpIHt9CisgIFZvaWNlRW5naW5lSW50ZXJmYWNlKCkg
PSBkZWZhdWx0OworICB2aXJ0dWFsIH5Wb2ljZUVuZ2luZUludGVyZmFjZSgpID0gZGVmYXVsdDsK
KyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihWb2ljZUVuZ2luZUludGVyZmFjZSk7CiAK
ICAgLy8gSW5pdGlhbGl6YXRpb24KICAgLy8gU3RhcnRzIHRoZSBlbmdpbmUuCi0gIHZpcnR1YWwg
Ym9vbCBJbml0KCkgPSAwOworICB2aXJ0dWFsIHZvaWQgSW5pdCgpID0gMDsKKwogICAvLyBUT0RP
KHNvbGVuYmVyZyk6IFJlbW92ZSBvbmNlIFZvRSBBUEkgcmVmYWN0b3JpbmcgaXMgZG9uZS4KICAg
dmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiBHZXRBdWRpb1N0
YXRlKCkgY29uc3QgPSAwOwogCiAgIC8vIE1lZGlhQ2hhbm5lbCBjcmVhdGlvbgogICAvLyBDcmVh
dGVzIGEgdm9pY2UgbWVkaWEgY2hhbm5lbC4gUmV0dXJucyBOVUxMIG9uIGZhaWx1cmUuCi0gIHZp
cnR1YWwgVm9pY2VNZWRpYUNoYW5uZWwqIENyZWF0ZUNoYW5uZWwod2VicnRjOjpDYWxsKiBjYWxs
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlh
Q29uZmlnJiBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKSA9IDA7Ci0gIC8vIENyZWF0ZXMgYSB2aWRl
byBtZWRpYSBjaGFubmVsLCBwYWlyZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHZvaWNlIGNoYW5uZWwu
Ci0gIC8vIFJldHVybnMgTlVMTCBvbiBmYWlsdXJlLgotICB2aXJ0dWFsIFZpZGVvTWVkaWFDaGFu
bmVsKiBDcmVhdGVWaWRlb0NoYW5uZWwoCisgIHZpcnR1YWwgVm9pY2VNZWRpYUNoYW5uZWwqIENy
ZWF0ZU1lZGlhQ2hhbm5lbCgKICAgICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKICAgICAgIGNvbnN0
IE1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMp
ID0gMDsKKyAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywKKyAgICAgIGNvbnN0IHdl
YnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpID0gMDsKIAotICB2aXJ0dWFsIGNv
bnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBhdWRpb19zZW5kX2NvZGVjcygpID0gMDsKLSAg
dmlydHVhbCBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgYXVkaW9fcmVjdl9jb2RlY3Mo
KSA9IDA7Ci0gIHZpcnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldEF1ZGlvQ2FwYWJpbGl0aWVzKCkg
PSAwOwotICB2aXJ0dWFsIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IHZpZGVvX2NvZGVjcygpID0g
MDsKLSAgdmlydHVhbCBSdHBDYXBhYmlsaXRpZXMgR2V0VmlkZW9DYXBhYmlsaXRpZXMoKSA9IDA7
CisgIHZpcnR1YWwgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHNlbmRfY29kZWNzKCkg
Y29uc3QgPSAwOworICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiByZWN2
X2NvZGVjcygpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBSdHBDYXBhYmlsaXRpZXMgR2V0Q2FwYWJp
bGl0aWVzKCkgY29uc3QgPSAwOwogCiAgIC8vIFN0YXJ0cyBBRUMgZHVtcCB1c2luZyBleGlzdGlu
ZyBmaWxlLCBhIG1heGltdW0gZmlsZSBzaXplIGluIGJ5dGVzIGNhbiBiZQogICAvLyBzcGVjaWZp
ZWQuIExvZ2dpbmcgaXMgc3RvcHBlZCBqdXN0IGJlZm9yZSB0aGUgc2l6ZSBsaW1pdCBpcyBleGNl
ZWRlZC4KQEAgLTg5LDY5ICs4Miw2NiBAQCBjbGFzcyBNZWRpYUVuZ2luZUludGVyZmFjZSB7CiAg
IHZpcnR1YWwgdm9pZCBTdG9wQWVjRHVtcCgpID0gMDsKIH07CiAKK2NsYXNzIFZpZGVvRW5naW5l
SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIFZpZGVvRW5naW5lSW50ZXJmYWNlKCkgPSBkZWZhdWx0
OworICB2aXJ0dWFsIH5WaWRlb0VuZ2luZUludGVyZmFjZSgpID0gZGVmYXVsdDsKKyAgUlRDX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihWaWRlb0VuZ2luZUludGVyZmFjZSk7CisKKyAgLy8gQ3Jl
YXRlcyBhIHZpZGVvIG1lZGlhIGNoYW5uZWwsIHBhaXJlZCB3aXRoIHRoZSBzcGVjaWZpZWQgdm9p
Y2UgY2hhbm5lbC4KKyAgLy8gUmV0dXJucyBOVUxMIG9uIGZhaWx1cmUuCisgIHZpcnR1YWwgVmlk
ZW9NZWRpYUNoYW5uZWwqIENyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIHdlYnJ0Yzo6Q2FsbCog
Y2FsbCwKKyAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCisgICAgICBjb25zdCBWaWRl
b09wdGlvbnMmIG9wdGlvbnMsCisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNy
eXB0b19vcHRpb25zKSA9IDA7CisKKyAgdmlydHVhbCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiBj
b2RlY3MoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldENhcGFiaWxp
dGllcygpIGNvbnN0ID0gMDsKK307CisKKy8vIE1lZGlhRW5naW5lSW50ZXJmYWNlIGlzIGFuIGFi
c3RyYWN0aW9uIG9mIGEgbWVkaWEgZW5naW5lIHdoaWNoIGNhbiBiZQorLy8gc3ViY2xhc3NlZCB0
byBzdXBwb3J0IGRpZmZlcmVudCBtZWRpYSBjb21wb25lbnRyeSBiYWNrZW5kcy4KKy8vIEl0IHN1
cHBvcnRzIHZvaWNlIGFuZCB2aWRlbyBvcGVyYXRpb25zIGluIHRoZSBzYW1lIGNsYXNzIHRvIGZh
Y2lsaXRhdGUKKy8vIHByb3BlciBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBib3RoIG1lZGlhIHR5
cGVzLgorY2xhc3MgTWVkaWFFbmdpbmVJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgdmlydHVhbCB+
TWVkaWFFbmdpbmVJbnRlcmZhY2UoKSB7fQorCisgIC8vIEluaXRpYWxpemF0aW9uCisgIC8vIFN0
YXJ0cyB0aGUgZW5naW5lLgorICB2aXJ0dWFsIGJvb2wgSW5pdCgpID0gMDsKKyAgdmlydHVhbCBW
b2ljZUVuZ2luZUludGVyZmFjZSYgdm9pY2UoKSA9IDA7CisgIHZpcnR1YWwgVmlkZW9FbmdpbmVJ
bnRlcmZhY2UmIHZpZGVvKCkgPSAwOworICB2aXJ0dWFsIGNvbnN0IFZvaWNlRW5naW5lSW50ZXJm
YWNlJiB2b2ljZSgpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBjb25zdCBWaWRlb0VuZ2luZUludGVy
ZmFjZSYgdmlkZW8oKSBjb25zdCA9IDA7Cit9OworCiAvLyBDb21wb3NpdGVNZWRpYUVuZ2luZSBj
b25zdHJ1Y3RzIGEgTWVkaWFFbmdpbmUgZnJvbSBzZXBhcmF0ZQogLy8gdm9pY2UgYW5kIHZpZGVv
IGVuZ2luZSBjbGFzc2VzLgotdGVtcGxhdGUgPGNsYXNzIFZPSUNFLCBjbGFzcyBWSURFTz4KIGNs
YXNzIENvbXBvc2l0ZU1lZGlhRW5naW5lIDogcHVibGljIE1lZGlhRW5naW5lSW50ZXJmYWNlIHsK
ICBwdWJsaWM6Ci0gIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzMSwgY2xhc3MuLi4gQXJnczI+Ci0g
IENvbXBvc2l0ZU1lZGlhRW5naW5lKHN0ZDo6dHVwbGU8QXJnczEuLi4+IGZpcnN0X2FyZ3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dHVwbGU8QXJnczIuLi4+IHNlY29uZF9hcmdzKQot
ICAgICAgOiBlbmdpbmVzXyhzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsCi0gICAgICAgICAgICAg
ICAgIHN0ZDo6bW92ZShmaXJzdF9hcmdzKSwKLSAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHNl
Y29uZF9hcmdzKSkge30KLQotICB2aXJ0dWFsIH5Db21wb3NpdGVNZWRpYUVuZ2luZSgpIHt9Ci0g
IHZpcnR1YWwgYm9vbCBJbml0KCkgewotICAgIHZvaWNlKCkuSW5pdCgpOwotICAgIHJldHVybiB0
cnVlOwotICB9Ci0KLSAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0
YXRlPiBHZXRBdWRpb1N0YXRlKCkgY29uc3QgewotICAgIHJldHVybiB2b2ljZSgpLkdldEF1ZGlv
U3RhdGUoKTsKLSAgfQotICB2aXJ0dWFsIFZvaWNlTWVkaWFDaGFubmVsKiBDcmVhdGVDaGFubmVs
KHdlYnJ0Yzo6Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykgewotICAg
IHJldHVybiB2b2ljZSgpLkNyZWF0ZUNoYW5uZWwoY2FsbCwgY29uZmlnLCBvcHRpb25zKTsKLSAg
fQotICB2aXJ0dWFsIFZpZGVvTWVkaWFDaGFubmVsKiBDcmVhdGVWaWRlb0NoYW5uZWwod2VicnRj
OjpDYWxsKiBjYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykgewot
ICAgIHJldHVybiB2aWRlbygpLkNyZWF0ZUNoYW5uZWwoY2FsbCwgY29uZmlnLCBvcHRpb25zKTsK
LSAgfQotCi0gIHZpcnR1YWwgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGF1ZGlvX3Nl
bmRfY29kZWNzKCkgewotICAgIHJldHVybiB2b2ljZSgpLnNlbmRfY29kZWNzKCk7Ci0gIH0KLSAg
dmlydHVhbCBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgYXVkaW9fcmVjdl9jb2RlY3Mo
KSB7Ci0gICAgcmV0dXJuIHZvaWNlKCkucmVjdl9jb2RlY3MoKTsKLSAgfQotICB2aXJ0dWFsIFJ0
cENhcGFiaWxpdGllcyBHZXRBdWRpb0NhcGFiaWxpdGllcygpIHsKLSAgICByZXR1cm4gdm9pY2Uo
KS5HZXRDYXBhYmlsaXRpZXMoKTsKLSAgfQotICB2aXJ0dWFsIHN0ZDo6dmVjdG9yPFZpZGVvQ29k
ZWM+IHZpZGVvX2NvZGVjcygpIHsgcmV0dXJuIHZpZGVvKCkuY29kZWNzKCk7IH0KLSAgdmlydHVh
bCBSdHBDYXBhYmlsaXRpZXMgR2V0VmlkZW9DYXBhYmlsaXRpZXMoKSB7Ci0gICAgcmV0dXJuIHZp
ZGVvKCkuR2V0Q2FwYWJpbGl0aWVzKCk7Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgU3RhcnRBZWNE
dW1wKHJ0Yzo6UGxhdGZvcm1GaWxlIGZpbGUsIGludDY0X3QgbWF4X3NpemVfYnl0ZXMpIHsKLSAg
ICByZXR1cm4gdm9pY2UoKS5TdGFydEFlY0R1bXAoZmlsZSwgbWF4X3NpemVfYnl0ZXMpOwotICB9
Ci0KLSAgdmlydHVhbCB2b2lkIFN0b3BBZWNEdW1wKCkgeyB2b2ljZSgpLlN0b3BBZWNEdW1wKCk7
IH0KLQotIHByb3RlY3RlZDoKLSAgVk9JQ0UmIHZvaWNlKCkgeyByZXR1cm4gZW5naW5lc18uZmly
c3Q7IH0KLSAgVklERU8mIHZpZGVvKCkgeyByZXR1cm4gZW5naW5lc18uc2Vjb25kOyB9Ci0gIGNv
bnN0IFZPSUNFJiB2b2ljZSgpIGNvbnN0IHsgcmV0dXJuIGVuZ2luZXNfLmZpcnN0OyB9Ci0gIGNv
bnN0IFZJREVPJiB2aWRlbygpIGNvbnN0IHsgcmV0dXJuIGVuZ2luZXNfLnNlY29uZDsgfQorICBD
b21wb3NpdGVNZWRpYUVuZ2luZShzdGQ6OnVuaXF1ZV9wdHI8Vm9pY2VFbmdpbmVJbnRlcmZhY2U+
IGF1ZGlvX2VuZ2luZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvRW5naW5lSW50ZXJmYWNlPiB2aWRlb19lbmdpbmUpOworICB+Q29tcG9zaXRlTWVkaWFFbmdp
bmUoKSBvdmVycmlkZTsKKyAgYm9vbCBJbml0KCkgb3ZlcnJpZGU7CisKKyAgVm9pY2VFbmdpbmVJ
bnRlcmZhY2UmIHZvaWNlKCkgb3ZlcnJpZGU7CisgIFZpZGVvRW5naW5lSW50ZXJmYWNlJiB2aWRl
bygpIG92ZXJyaWRlOworICBjb25zdCBWb2ljZUVuZ2luZUludGVyZmFjZSYgdm9pY2UoKSBjb25z
dCBvdmVycmlkZTsKKyAgY29uc3QgVmlkZW9FbmdpbmVJbnRlcmZhY2UmIHZpZGVvKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICBwcml2YXRlOgotICBzdGQ6OnBhaXI8Vk9JQ0UsIFZJREVPPiBlbmdpbmVz
XzsKKyAgc3RkOjp1bmlxdWVfcHRyPFZvaWNlRW5naW5lSW50ZXJmYWNlPiB2b2ljZV9lbmdpbmVf
OworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmdpbmVJbnRlcmZhY2U+IHZpZGVvX2VuZ2luZV87
CiB9OwogCi1lbnVtIERhdGFDaGFubmVsVHlwZSB7IERDVF9OT05FID0gMCwgRENUX1JUUCA9IDEs
IERDVF9TQ1RQID0gMiB9OworZW51bSBEYXRhQ2hhbm5lbFR5cGUgeworICBEQ1RfTk9ORSA9IDAs
CisgIERDVF9SVFAgPSAxLAorICBEQ1RfU0NUUCA9IDIsCisgIERDVF9NRURJQV9UUkFOU1BPUlQg
PSAzCit9OwogCiBjbGFzcyBEYXRhRW5naW5lSW50ZXJmYWNlIHsKICBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNl
L3J0cGRhdGFlbmdpbmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9iYXNlL3J0cGRhdGFlbmdpbmUuY2MKaW5kZXggZmMyYjczMTQxZWRkNzVlMDhl
NmQ2NmIzNWI2NDM4OWNmZGE4ZjNlNi4uYzMzNjdjMGExZjYwYjQ5NGY3YTMzMTNkMWY1NTJjYjdh
ZDZlZGVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5naW5lLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZS5jYwpAQCAt
MTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSA8bWFwPgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L21hdGNoLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5oIgogI2luY2x1ZGUgIm1lZGlh
L2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL3J0cHV0aWxzLmgi
CkBAIC0yMSw3ICsyMiw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zYW5pdGl6ZXIuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7
CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGF0YU1lZGlhQ2hhbm5lbCogUnRwRGF0YUVuZ2luZTo6Q3Jl
YXRlQ2hhbm5lbChjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnKSB7CiBzdGF0aWMgY29uc3QgRGF0
YUNvZGVjKiBGaW5kQ29kZWNCeU5hbWUoY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgY29k
ZWNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lKSB7CiAgIGZvciAoY29uc3QgRGF0YUNvZGVjJiBjb2RlYyA6IGNvZGVjcykg
ewotICAgIGlmIChfc3RyaWNtcChuYW1lLmNfc3RyKCksIGNvZGVjLm5hbWUuY19zdHIoKSkgPT0g
MCkKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lLCBjb2RlYy5uYW1lKSkKICAg
ICAgIHJldHVybiAmY29kZWM7CiAgIH0KICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTQsNyArMTk0
LDcgQEAgYm9vbCBSdHBEYXRhTWVkaWFDaGFubmVsOjpSZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90
IHNzcmMpIHsKIH0KIAogdm9pZCBSdHBEYXRhTWVkaWFDaGFubmVsOjpPblBhY2tldFJlY2VpdmVk
KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCAvKiBw
YWNrZXRfdGltZV91cyAqLykgewogICBSdHBIZWFkZXIgaGVhZGVyOwogICBpZiAoIUdldFJ0cEhl
YWRlcihwYWNrZXQtPmNkYXRhKCksIHBhY2tldC0+c2l6ZSgpLCAmaGVhZGVyKSkgewogICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5naW5lLmgKaW5kZXggOTY2ZDBj
ODE1MTQxNTdkMmUwN2EzYzc3ZDU0ZjYzZjMyZTMwYjZmMy4uNDJlOTE5MDM5ZDAxM2Y5Y2ZhODYz
NzllM2FhYWEyZGFkMjc3Yzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5naW5lLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5n
aW5lLmgKQEAgLTgyLDkgKzgyLDkgQEAgY2xhc3MgUnRwRGF0YU1lZGlhQ2hhbm5lbCA6IHB1Ymxp
YyBEYXRhTWVkaWFDaGFubmVsIHsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogICB2aXJ0dWFsIHZv
aWQgT25QYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0
X3RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90
aW1lX3VzKTsKICAgdmlydHVhbCB2b2lkIE9uUnRjcFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVC
dWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHt9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7fQogICB2aXJ0dWFsIHZvaWQgT25SZWFkeVRvU2Vu
ZChib29sIHJlYWR5KSB7fQogICB2aXJ0dWFsIGJvb2wgU2VuZERhdGEoY29uc3QgU2VuZERhdGFQ
YXJhbXMmIHBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9u
V3JpdGVCdWZmZXImIHBheWxvYWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3J0cGRhdGFlbmdpbmVfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3J0
cGRhdGFlbmdpbmVfdW5pdHRlc3QuY2MKaW5kZXggYzE1YzU1ZjVlNjI3NGU4OGQzNTdmOWQ5NjBk
ZTZjMTZhN2U4ODUxNy4uOWI4ZTEwYjQ1MDA3Y2NlZDY2OThhNWUyNDQyMDNlMDhiNmRkNDVkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS9ydHBkYXRhZW5naW5lX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZV91bml0dGVz
dC5jYwpAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBSdHBEYXRhTWVkaWFDaGFubmVsVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBjcmlja2V0OjpNZWRpYUNvbmZpZyBjb25maWc7CiAg
ICAgY3JpY2tldDo6UnRwRGF0YU1lZGlhQ2hhbm5lbCogY2hhbm5lbCA9CiAgICAgICAgIHN0YXRp
Y19jYXN0PGNyaWNrZXQ6OlJ0cERhdGFNZWRpYUNoYW5uZWwqPihkbWUtPkNyZWF0ZUNoYW5uZWwo
Y29uZmlnKSk7Ci0gICAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKGlmYWNlXy5nZXQoKSk7CisgICAg
Y2hhbm5lbC0+U2V0SW50ZXJmYWNlKGlmYWNlXy5nZXQoKSwgLyptZWRpYV90cmFuc3BvcnQ9Ki9u
dWxscHRyKTsKICAgICBjaGFubmVsLT5TaWduYWxEYXRhUmVjZWl2ZWQuY29ubmVjdChyZWNlaXZl
cl8uZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZha2VE
YXRhUmVjZWl2ZXI6Ok9uRGF0YVJlY2VpdmVkKTsKICAgICByZXR1cm4gY2hhbm5lbDsKQEAgLTMx
NywxMyArMzE3LDEzIEBAIFRFU1RfRihSdHBEYXRhTWVkaWFDaGFubmVsVGVzdCwgUmVjZWl2ZURh
dGEpIHsKICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OlJ0cERhdGFNZWRpYUNoYW5uZWw+IGRt
YyhDcmVhdGVDaGFubmVsKCkpOwogCiAgIC8vIFNldFJlY2VpdmVkIG5vdCBjYWxsZWQuCi0gIGRt
Yy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBydGM6OlBhY2tldFRpbWUoKSk7CisgIGRtYy0+
T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIEVY
UEVDVF9GQUxTRShIYXNSZWNlaXZlZERhdGEoKSk7CiAKICAgZG1jLT5TZXRSZWNlaXZlKHRydWUp
OwogCiAgIC8vIFVua25vd24gcGF5bG9hZCBpZAotICBkbWMtPk9uUGFja2V0UmVjZWl2ZWQoJnBh
Y2tldCwgcnRjOjpQYWNrZXRUaW1lKCkpOworICBkbWMtPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tl
dCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfRkFMU0UoSGFzUmVjZWl2ZWRE
YXRhKCkpOwogCiAgIGNyaWNrZXQ6OkRhdGFDb2RlYyBjb2RlYzsKQEAgLTMzNCw3ICszMzQsNyBA
QCBURVNUX0YoUnRwRGF0YU1lZGlhQ2hhbm5lbFRlc3QsIFJlY2VpdmVEYXRhKSB7CiAgIEFTU0VS
VF9UUlVFKGRtYy0+U2V0UmVjdlBhcmFtZXRlcnMocGFyYW1ldGVycykpOwogCiAgIC8vIFVua25v
d24gc3RyZWFtCi0gIGRtYy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBydGM6OlBhY2tldFRp
bWUoKSk7CisgIGRtYy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCAvKiBwYWNrZXRfdGltZV91
cyAqLyAtMSk7CiAgIEVYUEVDVF9GQUxTRShIYXNSZWNlaXZlZERhdGEoKSk7CiAKICAgY3JpY2tl
dDo6U3RyZWFtUGFyYW1zIHN0cmVhbTsKQEAgLTM0Miw3ICszNDIsNyBAQCBURVNUX0YoUnRwRGF0
YU1lZGlhQ2hhbm5lbFRlc3QsIFJlY2VpdmVEYXRhKSB7CiAgIEFTU0VSVF9UUlVFKGRtYy0+QWRk
UmVjdlN0cmVhbShzdHJlYW0pKTsKIAogICAvLyBGaW5hbGx5IHdvcmtzIQotICBkbWMtPk9uUGFj
a2V0UmVjZWl2ZWQoJnBhY2tldCwgcnRjOjpQYWNrZXRUaW1lKCkpOworICBkbWMtPk9uUGFja2V0
UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfVFJV
RShIYXNSZWNlaXZlZERhdGEoKSk7CiAgIEVYUEVDVF9FUSgiYWJjZGUiLCBHZXRSZWNlaXZlZERh
dGEoKSk7CiAgIEVYUEVDVF9FUSg1VSwgR2V0UmVjZWl2ZWREYXRhTGVuKCkpOwpAQCAtMzU1LDYg
KzM1NSw2IEBAIFRFU1RfRihSdHBEYXRhTWVkaWFDaGFubmVsVGVzdCwgSW52YWxpZFJ0cFBhY2tl
dHMpIHsKICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OlJ0cERhdGFNZWRpYUNoYW5uZWw+IGRt
YyhDcmVhdGVDaGFubmVsKCkpOwogCiAgIC8vIFRvbyBzaG9ydAotICBkbWMtPk9uUGFja2V0UmVj
ZWl2ZWQoJnBhY2tldCwgcnRjOjpQYWNrZXRUaW1lKCkpOworICBkbWMtPk9uUGFja2V0UmVjZWl2
ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfRkFMU0UoSGFz
UmVjZWl2ZWREYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHB1dGlscy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHB1dGlscy5oCmluZGV4IDBm
ZDlhNTk4MTZiNmU3ZTRjMWE4YWIzYzI0ZTk1NGRiMDEwZDZiMjguLmM1ZmUxNGZiM2QzODE3ODg5
MzdkMTVhYjAwMjdkMWIyNTZjODU2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwdXRpbHMuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3J0cHV0aWxzLmgK
QEAgLTEyLDYgKzEyLDcgQEAKICNkZWZpbmUgTUVESUFfQkFTRV9SVFBVVElMU19IXwogCiAjaW5j
bHVkZSAicnRjX2Jhc2UvYnl0ZW9yZGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0
Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiBzdHJ1Y3QgUGFja2V0VGltZVVwZGF0ZVBh
cmFtczsKQEAgLTY4LDkgKzY5LDkgQEAgYm9vbCBJc1ZhbGlkUnRwUnRjcFBhY2tldFNpemUoYm9v
bCBydGNwLCBzaXplX3Qgc2l6ZSk7CiBjb25zdCBjaGFyKiBSdHBSdGNwU3RyaW5nTGl0ZXJhbChi
b29sIHJ0Y3ApOwogCiAvLyBWZXJpZmllcyB0aGF0IGEgcGFja2V0IGhhcyBhIHZhbGlkIFJUUCBo
ZWFkZXIuCi1ib29sIFZhbGlkYXRlUnRwSGVhZGVyKGNvbnN0IHVpbnQ4X3QqIHJ0cCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90KiBoZWFkZXJfbGVuZ3RoKTsKK2Jvb2wgUlRDX0VYUE9SVCBWYWxpZGF0ZVJ0cEhlYWRl
cihjb25zdCB1aW50OF90KiBydHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qq
IGhlYWRlcl9sZW5ndGgpOwogCiAvLyBIZWxwZXIgbWV0aG9kIHdoaWNoIHVwZGF0ZXMgdGhlIGFi
c29sdXRlIHNlbmQgdGltZSBleHRlbnNpb24gaWYgcHJlc2VudC4KIGJvb2wgVXBkYXRlUnRwQWJz
U2VuZFRpbWVFeHRlbnNpb24odWludDhfdCogcnRwLApAQCAtODAsMTAgKzgxLDExIEBAIGJvb2wg
VXBkYXRlUnRwQWJzU2VuZFRpbWVFeHRlbnNpb24odWludDhfdCogcnRwLAogCiAvLyBBcHBsaWVz
IHNwZWNpZmllZCB8b3B0aW9uc3wgdG8gdGhlIHBhY2tldC4gSXQgdXBkYXRlcyB0aGUgYWJzb2x1
dGUgc2VuZCB0aW1lCiAvLyBleHRlbnNpb24gaGVhZGVyIGlmIGl0IGlzIHByZXNlbnQgcHJlc2Vu
dCB0aGVuIHVwZGF0ZXMgSE1BQy4KLWJvb2wgQXBwbHlQYWNrZXRPcHRpb25zKHVpbnQ4X3QqIGRh
dGEsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lVXBkYXRlUGFyYW1zJiBwYWNrZXRfdGlt
ZV9wYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB0aW1lX3VzKTsKK2Jv
b2wgUlRDX0VYUE9SVAorQXBwbHlQYWNrZXRPcHRpb25zKHVpbnQ4X3QqIGRhdGEsCisgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlBhY2tldFRpbWVVcGRhdGVQYXJhbXMmIHBhY2tldF90aW1lX3BhcmFtcywKKyAgICAgICAgICAg
ICAgICAgICB1aW50NjRfdCB0aW1lX3VzKTsKIAogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS90ZXN0dXRpbHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9iYXNlL3Rlc3R1dGlscy5jYwppbmRleCA5M2MyYmM5OGFlZjMyYjg3MDc3
MmIzNTE1MGIyODQ5ZWY2OTA2N2Y1Li41MTJkYzkxZjkzYzMxYjMzZmVhM2M0NTRlODI3ZmMyMWU5
OWMyNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9iYXNlL3Rlc3R1dGlscy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3Rlc3R1dGlscy5jYwpAQCAtMTAsOTAgKzEw
LDE0IEBACiAKICNpbmNsdWRlICJtZWRpYS9iYXNlL3Rlc3R1dGlscy5oIgogCi0jaW5jbHVkZSA8
bWF0aC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNs
dWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL3ZpZGVv
Y2FwdHVyZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9ieXRlYnVmZmVyLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvZ3VuaXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Rlc3R1dGlscy5o
IgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEltcGxlbWVu
dGF0aW9uIG9mIFJhd1J0cFBhY2tldAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotdm9pZCBSYXdSdHBQYWNr
ZXQ6OldyaXRlVG9CeXRlQnVmZmVyKHVpbnQzMl90IGluX3NzcmMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsK
LSAgaWYgKCFidWYpCi0gICAgcmV0dXJuOwotCi0gIGJ1Zi0+V3JpdGVVSW50OCh2ZXJfdG9fY2Mp
OwotICBidWYtPldyaXRlVUludDgobV90b19wdCk7Ci0gIGJ1Zi0+V3JpdGVVSW50MTYoc2VxdWVu
Y2VfbnVtYmVyKTsKLSAgYnVmLT5Xcml0ZVVJbnQzMih0aW1lc3RhbXApOwotICBidWYtPldyaXRl
VUludDMyKGluX3NzcmMpOwotICBidWYtPldyaXRlQnl0ZXMocGF5bG9hZCwgc2l6ZW9mKHBheWxv
YWQpKTsKLX0KLQotYm9vbCBSYXdSdHBQYWNrZXQ6OlJlYWRGcm9tQnl0ZUJ1ZmZlcihydGM6OkJ5
dGVCdWZmZXJSZWFkZXIqIGJ1ZikgewotICBpZiAoIWJ1ZikKLSAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgYm9vbCByZXQgPSB0cnVlOwotICByZXQgJj0gYnVmLT5SZWFkVUludDgoJnZlcl90b19jYyk7
Ci0gIHJldCAmPSBidWYtPlJlYWRVSW50OCgmbV90b19wdCk7Ci0gIHJldCAmPSBidWYtPlJlYWRV
SW50MTYoJnNlcXVlbmNlX251bWJlcik7Ci0gIHJldCAmPSBidWYtPlJlYWRVSW50MzIoJnRpbWVz
dGFtcCk7Ci0gIHJldCAmPSBidWYtPlJlYWRVSW50MzIoJnNzcmMpOwotICByZXQgJj0gYnVmLT5S
ZWFkQnl0ZXMocGF5bG9hZCwgc2l6ZW9mKHBheWxvYWQpKTsKLSAgcmV0dXJuIHJldDsKLX0KLQot
Ym9vbCBSYXdSdHBQYWNrZXQ6OlNhbWVFeGNlcHRTZXFOdW1UaW1lc3RhbXBTc3JjKGNvbnN0IFJh
d1J0cFBhY2tldCYgcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQxNl90IHNlcSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0cywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzc2MpIGNvbnN0IHsKLSAgcmV0dXJu
IHNlcXVlbmNlX251bWJlciA9PSBzZXEgJiYgdGltZXN0YW1wID09IHRzICYmCi0gICAgICAgICB2
ZXJfdG9fY2MgPT0gcGFja2V0LnZlcl90b19jYyAmJiBtX3RvX3B0ID09IHBhY2tldC5tX3RvX3B0
ICYmCi0gICAgICAgICBzc3JjID09IHNzYyAmJiAwID09IG1lbWNtcChwYXlsb2FkLCBwYWNrZXQu
cGF5bG9hZCwgc2l6ZW9mKHBheWxvYWQpKTsKLX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gSW1w
bGVtZW50YXRpb24gb2YgUmF3UnRjcFBhY2tldAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotdm9pZCBSYXdS
dGNwUGFja2V0OjpXcml0ZVRvQnl0ZUJ1ZmZlcihydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1Zikg
Y29uc3QgewotICBpZiAoIWJ1ZikKLSAgICByZXR1cm47Ci0KLSAgYnVmLT5Xcml0ZVVJbnQ4KHZl
cl90b19jb3VudCk7Ci0gIGJ1Zi0+V3JpdGVVSW50OCh0eXBlKTsKLSAgYnVmLT5Xcml0ZVVJbnQx
NihsZW5ndGgpOwotICBidWYtPldyaXRlQnl0ZXMocGF5bG9hZCwgc2l6ZW9mKHBheWxvYWQpKTsK
LX0KLQotYm9vbCBSYXdSdGNwUGFja2V0OjpSZWFkRnJvbUJ5dGVCdWZmZXIocnRjOjpCeXRlQnVm
ZmVyUmVhZGVyKiBidWYpIHsKLSAgaWYgKCFidWYpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGJv
b2wgcmV0ID0gdHJ1ZTsKLSAgcmV0ICY9IGJ1Zi0+UmVhZFVJbnQ4KCZ2ZXJfdG9fY291bnQpOwot
ICByZXQgJj0gYnVmLT5SZWFkVUludDgoJnR5cGUpOwotICByZXQgJj0gYnVmLT5SZWFkVUludDE2
KCZsZW5ndGgpOwotICByZXQgJj0gYnVmLT5SZWFkQnl0ZXMocGF5bG9hZCwgc2l6ZW9mKHBheWxv
YWQpKTsKLSAgcmV0dXJuIHJldDsKLX0KLQotYm9vbCBSYXdSdGNwUGFja2V0OjpFcXVhbHNUbyhj
b25zdCBSYXdSdGNwUGFja2V0JiBwYWNrZXQpIGNvbnN0IHsKLSAgcmV0dXJuIHZlcl90b19jb3Vu
dCA9PSBwYWNrZXQudmVyX3RvX2NvdW50ICYmIHR5cGUgPT0gcGFja2V0LnR5cGUgJiYKLSAgICAg
ICAgIGxlbmd0aCA9PSBwYWNrZXQubGVuZ3RoICYmCi0gICAgICAgICAwID09IG1lbWNtcChwYXls
b2FkLCBwYWNrZXQucGF5bG9hZCwgc2l6ZW9mKHBheWxvYWQpKTsKLX0KLQogLy8gSW1wbGVtZW50
YXRpb24gb2YgVmlkZW9DYXB0dXJlTGlzdGVuZXIuCiBWaWRlb0NhcHR1cmVyTGlzdGVuZXI6OlZp
ZGVvQ2FwdHVyZXJMaXN0ZW5lcihWaWRlb0NhcHR1cmVyKiBjYXB0dXJlcikKICAgICA6IGNhcHR1
cmVyXyhjYXB0dXJlciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3Rlc3R1dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS90ZXN0dXRpbHMuaAppbmRleCBjODQ2
OTYyMzZiNGE0MDJmYzRjNDZlMzQxZGEyOTgzNjEzNmQzNTM2Li42YjYzZmZkMTgwMDAzNjQ2Y2Fh
NTRhZjc1NTc1NGI3ODU2YjVlODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3Rlc3R1dGlscy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdGVzdHV0aWxzLmgK
QEAgLTIwLDEyICsyMCw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCiAKLW5hbWVzcGFj
ZSBydGMgewotY2xhc3MgQnl0ZUJ1ZmZlclJlYWRlcjsKLWNsYXNzIEJ5dGVCdWZmZXJXcml0ZXI7
Ci1jbGFzcyBTdHJlYW1JbnRlcmZhY2U7Ci19ICAvLyBuYW1lc3BhY2UgcnRjCi0KIG5hbWVzcGFj
ZSB3ZWJydGMgewogY2xhc3MgVmlkZW9GcmFtZTsKIH0KQEAgLTQzLDQwICszNyw2IEBAIGlubGlu
ZSBzdGQ6OnZlY3RvcjxUPiBNYWtlVmVjdG9yKGNvbnN0IFQgYVtdLCBzaXplX3QgcykgewogfQog
I2RlZmluZSBNQUtFX1ZFQ1RPUihhKSBjcmlja2V0OjpNYWtlVmVjdG9yKGEsIGFycmF5c2l6ZShh
KSkKIAotc3RydWN0IFJ0cER1bXBQYWNrZXQ7Ci1jbGFzcyBSdHBEdW1wV3JpdGVyOwotCi1zdHJ1
Y3QgUmF3UnRwUGFja2V0IHsKLSAgdm9pZCBXcml0ZVRvQnl0ZUJ1ZmZlcih1aW50MzJfdCBpbl9z
c3JjLCBydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3Q7Ci0gIGJvb2wgUmVhZEZyb21C
eXRlQnVmZmVyKHJ0Yzo6Qnl0ZUJ1ZmZlclJlYWRlciogYnVmKTsKLSAgLy8gQ2hlY2sgaWYgdGhp
cyBwYWNrZXQgaXMgdGhlIHNhbWUgYXMgdGhlIHNwZWNpZmllZCBwYWNrZXQgZXhjZXB0IHRoZQot
ICAvLyBzZXF1ZW5jZSBudW1iZXIgYW5kIHRpbWVzdGFtcCwgd2hpY2ggc2hvdWxkIGJlIHRoZSBz
YW1lIGFzIHRoZSBzcGVjaWZpZWQKLSAgLy8gcGFyYW1ldGVycy4KLSAgYm9vbCBTYW1lRXhjZXB0
U2VxTnVtVGltZXN0YW1wU3NyYyhjb25zdCBSYXdSdHBQYWNrZXQmIHBhY2tldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NjKSBjb25zdDsKLSAgaW50IHNpemUoKSBjb25z
dCB7IHJldHVybiAyODsgfQotCi0gIHVpbnQ4X3QgdmVyX3RvX2NjOwotICB1aW50OF90IG1fdG9f
cHQ7Ci0gIHVpbnQxNl90IHNlcXVlbmNlX251bWJlcjsKLSAgdWludDMyX3QgdGltZXN0YW1wOwot
ICB1aW50MzJfdCBzc3JjOwotICBjaGFyIHBheWxvYWRbMTZdOwotfTsKLQotc3RydWN0IFJhd1J0
Y3BQYWNrZXQgewotICB2b2lkIFdyaXRlVG9CeXRlQnVmZmVyKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRl
ciogYnVmKSBjb25zdDsKLSAgYm9vbCBSZWFkRnJvbUJ5dGVCdWZmZXIocnRjOjpCeXRlQnVmZmVy
UmVhZGVyKiBidWYpOwotICBib29sIEVxdWFsc1RvKGNvbnN0IFJhd1J0Y3BQYWNrZXQmIHBhY2tl
dCkgY29uc3Q7Ci0KLSAgdWludDhfdCB2ZXJfdG9fY291bnQ7Ci0gIHVpbnQ4X3QgdHlwZTsKLSAg
dWludDE2X3QgbGVuZ3RoOwotICBjaGFyIHBheWxvYWRbMTZdOwotfTsKLQogLy8gVGVzdCBoZWxw
ZXIgZm9yIHRlc3RpbmcgVmlkZW9DYXB0dXJlciBpbXBsZW1lbnRhdGlvbnMuCiBjbGFzcyBWaWRl
b0NhcHR1cmVyTGlzdGVuZXIKICAgICA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2Jhc2UvdHVybnV0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9iYXNlL3R1cm51dGlscy5oCmluZGV4IDEzZWQyNmI3YTVmZjdjYzI3NTY5YzI2
NmE4ZGQ2NDUyMmNmZmI2MjMuLjdhYTA2NTFjZWEzZWE1NTlmNGJlYjEzYjUzYjQyMmQxNTdmNGVh
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2Jhc2UvdHVybnV0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS90dXJudXRpbHMuaApAQCAtMTQsMTYgKzE0LDE4IEBA
CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxjc3RkaW50PgogCisjaW5jbHVkZSAicnRj
X2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKKwogbmFtZXNwYWNlIGNyaWNrZXQgewogCiBzdHJ1
Y3QgUGFja2V0T3B0aW9uczsKIAogLy8gRmluZHMgZGF0YSBsb2NhdGlvbiB3aXRoaW4gYSBUVVJO
IENoYW5uZWwgTWVzc2FnZSBvciBUVVJOIFNlbmQgSW5kaWNhdGlvbgogLy8gbWVzc2FnZS4KLWJv
b2wgVW53cmFwVHVyblBhY2tldChjb25zdCB1aW50OF90KiBwYWNrZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHBhY2tldF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCogY29udGVudF9wb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGNvbnRl
bnRfc2l6ZSk7Citib29sIFJUQ19FWFBPUlQgVW53cmFwVHVyblBhY2tldChjb25zdCB1aW50OF90
KiBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFja2V0
X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGNvbnRlbnRf
cG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGNvbnRl
bnRfc2l6ZSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9hZGFw
dGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
YmFzZS92aWRlb2FkYXB0ZXIuY2MKaW5kZXggODQwMTAxYmNlZTM0MDNkNjRiYjhmOTFmNzVjNGQ1
MWViZDA0YjcyZC4uYjJlZDMzMzYxNDkzMDg4NzY2M2I1NzRmM2ZlNThjMDVjYjYyMTA5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
YmFzZS92aWRlb2FkYXB0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2FkYXB0ZXIuY2MKQEAgLTE2OSw4ICsxNjksMTgg
QEAgYm9vbCBWaWRlb0FkYXB0ZXI6OkFkYXB0RnJhbWVSZXNvbHV0aW9uKGludCBpbl93aWR0aCwK
ICAgLy8gT25PdXRwdXRGb3JtYXRSZXF1ZXN0IGFuZCBPblJlc29sdXRpb25GcmFtZXJhdGVSZXF1
ZXN0LgogICBpbnQgbWF4X3BpeGVsX2NvdW50ID0gcmVzb2x1dGlvbl9yZXF1ZXN0X21heF9waXhl
bF9jb3VudF87CiAKLSAgaWYgKG1heF9waXhlbF9jb3VudF8pCi0gICAgbWF4X3BpeGVsX2NvdW50
ID0gc3RkOjptaW4obWF4X3BpeGVsX2NvdW50LCAqbWF4X3BpeGVsX2NvdW50Xyk7CisgIC8vIFNl
bGVjdCB0YXJnZXQgYXNwZWN0IHJhdGlvIGFuZCBtYXggcGl4ZWwgY291bnQgZGVwZW5kaW5nIG9u
IGlucHV0IGZyYW1lCisgIC8vIG9yaWVudGF0aW9uLgorICBhYnNsOjpvcHRpb25hbDxzdGQ6OnBh
aXI8aW50LCBpbnQ+PiB0YXJnZXRfYXNwZWN0X3JhdGlvOworICBpZiAoaW5fd2lkdGggPiBpbl9o
ZWlnaHQpIHsKKyAgICB0YXJnZXRfYXNwZWN0X3JhdGlvID0gdGFyZ2V0X2xhbmRzY2FwZV9hc3Bl
Y3RfcmF0aW9fOworICAgIGlmIChtYXhfbGFuZHNjYXBlX3BpeGVsX2NvdW50XykKKyAgICAgIG1h
eF9waXhlbF9jb3VudCA9IHN0ZDo6bWluKG1heF9waXhlbF9jb3VudCwgKm1heF9sYW5kc2NhcGVf
cGl4ZWxfY291bnRfKTsKKyAgfSBlbHNlIHsKKyAgICB0YXJnZXRfYXNwZWN0X3JhdGlvID0gdGFy
Z2V0X3BvcnRyYWl0X2FzcGVjdF9yYXRpb187CisgICAgaWYgKG1heF9wb3J0cmFpdF9waXhlbF9j
b3VudF8pCisgICAgICBtYXhfcGl4ZWxfY291bnQgPSBzdGQ6Om1pbihtYXhfcGl4ZWxfY291bnQs
ICptYXhfcG9ydHJhaXRfcGl4ZWxfY291bnRfKTsKKyAgfQogCiAgIGludCB0YXJnZXRfcGl4ZWxf
Y291bnQgPQogICAgICAgc3RkOjptaW4ocmVzb2x1dGlvbl9yZXF1ZXN0X3RhcmdldF9waXhlbF9j
b3VudF8sIG1heF9waXhlbF9jb3VudCk7CkBAIC0xOTUsMTkgKzIwNSwxNCBAQCBib29sIFZpZGVv
QWRhcHRlcjo6QWRhcHRGcmFtZVJlc29sdXRpb24oaW50IGluX3dpZHRoLAogICB9CiAKICAgLy8g
Q2FsY3VsYXRlIGhvdyB0aGUgaW5wdXQgc2hvdWxkIGJlIGNyb3BwZWQuCi0gIGlmICghdGFyZ2V0
X2FzcGVjdF9yYXRpb18gfHwgdGFyZ2V0X2FzcGVjdF9yYXRpb18tPmZpcnN0IDw9IDAgfHwKLSAg
ICAgIHRhcmdldF9hc3BlY3RfcmF0aW9fLT5zZWNvbmQgPD0gMCkgeworICBpZiAoIXRhcmdldF9h
c3BlY3RfcmF0aW8gfHwgdGFyZ2V0X2FzcGVjdF9yYXRpby0+Zmlyc3QgPD0gMCB8fAorICAgICAg
dGFyZ2V0X2FzcGVjdF9yYXRpby0+c2Vjb25kIDw9IDApIHsKICAgICAqY3JvcHBlZF93aWR0aCA9
IGluX3dpZHRoOwogICAgICpjcm9wcGVkX2hlaWdodCA9IGluX2hlaWdodDsKICAgfSBlbHNlIHsK
LSAgICAvLyBBZGp1c3QgfHRhcmdldF9hc3BlY3RfcmF0aW9ffCBvcmllbnRhdGlvbiB0byBtYXRj
aCBpbnB1dC4KLSAgICBpZiAoKGluX3dpZHRoID4gaW5faGVpZ2h0KSAhPQotICAgICAgICAodGFy
Z2V0X2FzcGVjdF9yYXRpb18tPmZpcnN0ID4gdGFyZ2V0X2FzcGVjdF9yYXRpb18tPnNlY29uZCkp
IHsKLSAgICAgIHN0ZDo6c3dhcCh0YXJnZXRfYXNwZWN0X3JhdGlvXy0+Zmlyc3QsIHRhcmdldF9h
c3BlY3RfcmF0aW9fLT5zZWNvbmQpOwotICAgIH0KICAgICBjb25zdCBmbG9hdCByZXF1ZXN0ZWRf
YXNwZWN0ID0KLSAgICAgICAgdGFyZ2V0X2FzcGVjdF9yYXRpb18tPmZpcnN0IC8KLSAgICAgICAg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHRhcmdldF9hc3BlY3RfcmF0aW9fLT5zZWNvbmQpOworICAgICAg
ICB0YXJnZXRfYXNwZWN0X3JhdGlvLT5maXJzdCAvCisgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0
Pih0YXJnZXRfYXNwZWN0X3JhdGlvLT5zZWNvbmQpOwogICAgICpjcm9wcGVkX3dpZHRoID0KICAg
ICAgICAgc3RkOjptaW4oaW5fd2lkdGgsIHN0YXRpY19jYXN0PGludD4oaW5faGVpZ2h0ICogcmVx
dWVzdGVkX2FzcGVjdCkpOwogICAgICpjcm9wcGVkX2hlaWdodCA9CkBAIC0yNzQsOSArMjc5LDMz
IEBAIHZvaWQgVmlkZW9BZGFwdGVyOjpPbk91dHB1dEZvcm1hdFJlcXVlc3QoCiAgICAgY29uc3Qg
YWJzbDo6b3B0aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4mIHRhcmdldF9hc3BlY3RfcmF0aW8s
CiAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiYgbWF4X3BpeGVsX2NvdW50LAogICAgIGNv
bnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9mcHMpIHsKKyAgYWJzbDo6b3B0aW9uYWw8c3Rk
OjpwYWlyPGludCwgaW50Pj4gdGFyZ2V0X2xhbmRzY2FwZV9hc3BlY3RfcmF0aW87CisgIGFic2w6
Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQsIGludD4+IHRhcmdldF9wb3J0cmFpdF9hc3BlY3RfcmF0
aW87CisgIGlmICh0YXJnZXRfYXNwZWN0X3JhdGlvICYmIHRhcmdldF9hc3BlY3RfcmF0aW8tPmZp
cnN0ID4gMCAmJgorICAgICAgdGFyZ2V0X2FzcGVjdF9yYXRpby0+c2Vjb25kID4gMCkgeworICAg
IC8vIE1haW50YWluIGlucHV0IG9yaWVudGF0aW9uLgorICAgIGNvbnN0IGludCBtYXhfc2lkZSA9
CisgICAgICAgIHN0ZDo6bWF4KHRhcmdldF9hc3BlY3RfcmF0aW8tPmZpcnN0LCB0YXJnZXRfYXNw
ZWN0X3JhdGlvLT5zZWNvbmQpOworICAgIGNvbnN0IGludCBtaW5fc2lkZSA9CisgICAgICAgIHN0
ZDo6bWluKHRhcmdldF9hc3BlY3RfcmF0aW8tPmZpcnN0LCB0YXJnZXRfYXNwZWN0X3JhdGlvLT5z
ZWNvbmQpOworICAgIHRhcmdldF9sYW5kc2NhcGVfYXNwZWN0X3JhdGlvID0gc3RkOjptYWtlX3Bh
aXIobWF4X3NpZGUsIG1pbl9zaWRlKTsKKyAgICB0YXJnZXRfcG9ydHJhaXRfYXNwZWN0X3JhdGlv
ID0gc3RkOjptYWtlX3BhaXIobWluX3NpZGUsIG1heF9zaWRlKTsKKyAgfQorICBPbk91dHB1dEZv
cm1hdFJlcXVlc3QodGFyZ2V0X2xhbmRzY2FwZV9hc3BlY3RfcmF0aW8sIG1heF9waXhlbF9jb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9wb3J0cmFpdF9hc3BlY3RfcmF0aW8s
IG1heF9waXhlbF9jb3VudCwgbWF4X2Zwcyk7Cit9CisKK3ZvaWQgVmlkZW9BZGFwdGVyOjpPbk91
dHB1dEZvcm1hdFJlcXVlc3QoCisgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8c3RkOjpwYWlyPGlu
dCwgaW50Pj4mIHRhcmdldF9sYW5kc2NhcGVfYXNwZWN0X3JhdGlvLAorICAgIGNvbnN0IGFic2w6
Om9wdGlvbmFsPGludD4mIG1heF9sYW5kc2NhcGVfcGl4ZWxfY291bnQsCisgICAgY29uc3QgYWJz
bDo6b3B0aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4mIHRhcmdldF9wb3J0cmFpdF9hc3BlY3Rf
cmF0aW8sCisgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiYgbWF4X3BvcnRyYWl0X3BpeGVs
X2NvdW50LAorICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9mcHMpIHsKICAgcnRj
OjpDcml0U2NvcGUgY3MoJmNyaXRpY2FsX3NlY3Rpb25fKTsKLSAgdGFyZ2V0X2FzcGVjdF9yYXRp
b18gPSB0YXJnZXRfYXNwZWN0X3JhdGlvOwotICBtYXhfcGl4ZWxfY291bnRfID0gbWF4X3BpeGVs
X2NvdW50OworICB0YXJnZXRfbGFuZHNjYXBlX2FzcGVjdF9yYXRpb18gPSB0YXJnZXRfbGFuZHNj
YXBlX2FzcGVjdF9yYXRpbzsKKyAgbWF4X2xhbmRzY2FwZV9waXhlbF9jb3VudF8gPSBtYXhfbGFu
ZHNjYXBlX3BpeGVsX2NvdW50OworICB0YXJnZXRfcG9ydHJhaXRfYXNwZWN0X3JhdGlvXyA9IHRh
cmdldF9wb3J0cmFpdF9hc3BlY3RfcmF0aW87CisgIG1heF9wb3J0cmFpdF9waXhlbF9jb3VudF8g
PSBtYXhfcG9ydHJhaXRfcGl4ZWxfY291bnQ7CiAgIG1heF9mcHNfID0gbWF4X2ZwczsKICAgbmV4
dF9mcmFtZV90aW1lc3RhbXBfbnNfID0gYWJzbDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9h
ZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL3ZpZGVvYWRhcHRlci5oCmluZGV4IGJiOWFiODAyNmYwODhhY2Q5NDMyOTQ5MWNhMjVk
NGE2MmVhOTQ2ZmEuLjE4NjRkNWNjMGM3YmYzNThkOTViYmRhM2M1ZmJlMjA1NDA3ODA5YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2Jhc2UvdmlkZW9hZGFwdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2FkYXB0ZXIuaApAQCAtNjgsNiArNjgsMTcgQEAg
Y2xhc3MgVmlkZW9BZGFwdGVyIHsKICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1h
eF9waXhlbF9jb3VudCwKICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9mcHMp
OwogCisgIC8vIFNhbWUgYXMgYWJvdmUsIGJ1dCBhbGxvd3Mgc2V0dGluZyB0d28gZGlmZmVyZW50
IHRhcmdldCBhc3BlY3QgcmF0aW9zCisgIC8vIGRlcGVuZGluZyBvbiBpbmNvbWluZyBmcmFtZSBv
cmllbnRhdGlvbi4gVGhpcyBnaXZlcyBtb3JlIGZpbmUtZ3JhaW5lZAorICAvLyBjb250cm9sIGFu
ZCBjYW4gZS5nLiBiZSB1c2VkIHRvIGZvcmNlIGxhbmRzY2FwZSB2aWRlbyB0byBiZSBjcm9wcGVk
IHRvCisgIC8vIHBvcnRyYWl0IHZpZGVvLgorICB2b2lkIE9uT3V0cHV0Rm9ybWF0UmVxdWVzdCgK
KyAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQsIGludD4+JiB0YXJnZXRf
bGFuZHNjYXBlX2FzcGVjdF9yYXRpbywKKyAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4m
IG1heF9sYW5kc2NhcGVfcGl4ZWxfY291bnQsCisgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxz
dGQ6OnBhaXI8aW50LCBpbnQ+PiYgdGFyZ2V0X3BvcnRyYWl0X2FzcGVjdF9yYXRpbywKKyAgICAg
IGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9wb3J0cmFpdF9waXhlbF9jb3VudCwKKyAg
ICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9mcHMpOworCiAgIC8vIFJlcXVlc3Rz
IHRoZSBvdXRwdXQgZnJhbWUgc2l6ZSBmcm9tIHxBZGFwdEZyYW1lUmVzb2x1dGlvbnwgdG8gaGF2
ZSBhcyBjbG9zZQogICAvLyBhcyBwb3NzaWJsZSB0byB8dGFyZ2V0X3BpeGVsX2NvdW50fCBwaXhl
bHMgKGlmIHNldCkgYnV0IG5vIG1vcmUgdGhhbgogICAvLyB8bWF4X3BpeGVsX2NvdW50fC4KQEAg
LTEwMCw5ICsxMTEsMTQgQEAgY2xhc3MgVmlkZW9BZGFwdGVyIHsKICAgLy8gTWF4IG51bWJlciBv
ZiBwaXhlbHMvZnBzIHJlcXVlc3RlZCB2aWEgY2FsbHMgdG8gT25PdXRwdXRGb3JtYXRSZXF1ZXN0
LAogICAvLyBPblJlc29sdXRpb25GcmFtZXJhdGVSZXF1ZXN0IHJlc3BlY3RpdmVseS4KICAgLy8g
VGhlIGFkYXB0ZWQgb3V0cHV0IGZvcm1hdCBpcyB0aGUgbWluaW11bSBvZiB0aGVzZS4KLSAgYWJz
bDo6b3B0aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4gdGFyZ2V0X2FzcGVjdF9yYXRpb18KKyAg
YWJzbDo6b3B0aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4gdGFyZ2V0X2xhbmRzY2FwZV9hc3Bl
Y3RfcmF0aW9fCisgICAgICBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9uXyk7CisgIGFi
c2w6Om9wdGlvbmFsPGludD4gbWF4X2xhbmRzY2FwZV9waXhlbF9jb3VudF8KKyAgICAgIFJUQ19H
VUFSREVEX0JZKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgYWJzbDo6b3B0aW9uYWw8c3RkOjpwYWly
PGludCwgaW50Pj4gdGFyZ2V0X3BvcnRyYWl0X2FzcGVjdF9yYXRpb18KKyAgICAgIFJUQ19HVUFS
REVEX0JZKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgYWJzbDo6b3B0aW9uYWw8aW50PiBtYXhfcG9y
dHJhaXRfcGl4ZWxfY291bnRfCiAgICAgICBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9u
Xyk7Ci0gIGFic2w6Om9wdGlvbmFsPGludD4gbWF4X3BpeGVsX2NvdW50XyBSVENfR1VBUkRFRF9C
WShjcml0aWNhbF9zZWN0aW9uXyk7CiAgIGFic2w6Om9wdGlvbmFsPGludD4gbWF4X2Zwc18gUlRD
X0dVQVJERURfQlkoY3JpdGljYWxfc2VjdGlvbl8pOwogICBpbnQgcmVzb2x1dGlvbl9yZXF1ZXN0
X3RhcmdldF9waXhlbF9jb3VudF8gUlRDX0dVQVJERURfQlkoY3JpdGljYWxfc2VjdGlvbl8pOwog
ICBpbnQgcmVzb2x1dGlvbl9yZXF1ZXN0X21heF9waXhlbF9jb3VudF8gUlRDX0dVQVJERURfQlko
Y3JpdGljYWxfc2VjdGlvbl8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2FkYXB0ZXJfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVv
YWRhcHRlcl91bml0dGVzdC5jYwppbmRleCA2N2E2NjI2MzllNTUxNGU0NDQzOGQyYTVlMDE2ODZh
MDkxZjBiZTU4Li5jNjAwZmMyYzA3MzBjOTkxNmM0YTRhOWMxN2IzODI2YTdhZTg5MjFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9i
YXNlL3ZpZGVvYWRhcHRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvYWRhcHRlcl91bml0dGVzdC5jYwpA
QCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1
ZGUgIm1lZGlhL2Jhc2UvZmFrZWZyYW1lc291cmNlLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9t
ZWRpYWNoYW5uZWwuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL3Rlc3R1dGlscy5oIgogI2luY2x1
ZGUgIm1lZGlhL2Jhc2UvdmlkZW9hZGFwdGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCkBAIC0xMTEyLDQgKzExMTEsNjEgQEAg
VEVTVF9QKFZpZGVvQWRhcHRlclRlc3QsIFRlc3RBZGFwdFRvTWF4KSB7CiAgIEVYUEVDVF9FUSg2
NDAsIG91dF93aWR0aF8pOwogICBFWFBFQ1RfRVEoMzYwLCBvdXRfaGVpZ2h0Xyk7CiB9CisKKy8v
IFRlc3QgYWRqdXN0aW5nIHRvIDE2OjkgaW4gbGFuZHNjYXBlLCBhbmQgOToxNiBpbiBwb3J0cmFp
dC4KK1RFU1QoVmlkZW9BZGFwdGVyVGVzdE11bHRpcGxlT3JpZW50YXRpb24sIFRlc3ROb3JtYWwp
IHsKKyAgVmlkZW9BZGFwdGVyIHZpZGVvX2FkYXB0ZXI7CisgIHZpZGVvX2FkYXB0ZXIuT25PdXRw
dXRGb3JtYXRSZXF1ZXN0KHN0ZDo6bWFrZV9wYWlyKDY0MCwgMzYwKSwgNjQwICogMzYwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcigzNjAsIDY0
MCksIDM2MCAqIDY0MCwgMzApOworCisgIGludCBjcm9wcGVkX3dpZHRoOworICBpbnQgY3JvcHBl
ZF9oZWlnaHQ7CisgIGludCBvdXRfd2lkdGg7CisgIGludCBvdXRfaGVpZ2h0OworICBFWFBFQ1Rf
VFJVRSh2aWRlb19hZGFwdGVyLkFkYXB0RnJhbWVSZXNvbHV0aW9uKAorICAgICAgLyogaW5fd2lk
dGg9ICovIDY0MCwgLyogaW5faGVpZ2h0PSAqLyA0ODAsIC8qIGluX3RpbWVzdGFtcF9ucz0gKi8g
MCwKKyAgICAgICZjcm9wcGVkX3dpZHRoLCAmY3JvcHBlZF9oZWlnaHQsICZvdXRfd2lkdGgsICZv
dXRfaGVpZ2h0KSk7CisgIEVYUEVDVF9FUSg2NDAsIGNyb3BwZWRfd2lkdGgpOworICBFWFBFQ1Rf
RVEoMzYwLCBjcm9wcGVkX2hlaWdodCk7CisgIEVYUEVDVF9FUSg2NDAsIG91dF93aWR0aCk7Cisg
IEVYUEVDVF9FUSgzNjAsIG91dF9oZWlnaHQpOworCisgIEVYUEVDVF9UUlVFKHZpZGVvX2FkYXB0
ZXIuQWRhcHRGcmFtZVJlc29sdXRpb24oCisgICAgICAvKiBpbl93aWR0aD0gKi8gNDgwLCAvKiBp
bl9oZWlnaHQ9ICovIDY0MCwKKyAgICAgIC8qIGluX3RpbWVzdGFtcF9ucz0gKi8gcnRjOjprTnVt
TmFub3NlY3NQZXJTZWMgLyAzMCwgJmNyb3BwZWRfd2lkdGgsCisgICAgICAmY3JvcHBlZF9oZWln
aHQsICZvdXRfd2lkdGgsICZvdXRfaGVpZ2h0KSk7CisgIEVYUEVDVF9FUSgzNjAsIGNyb3BwZWRf
d2lkdGgpOworICBFWFBFQ1RfRVEoNjQwLCBjcm9wcGVkX2hlaWdodCk7CisgIEVYUEVDVF9FUSgz
NjAsIG91dF93aWR0aCk7CisgIEVYUEVDVF9FUSg2NDAsIG91dF9oZWlnaHQpOworfQorCisvLyBG
b3JjZSBvdXRwdXQgdG8gYmUgOToxNiwgZXZlbiBmb3IgbGFuZHNjYXBlIGlucHV0LgorVEVTVChW
aWRlb0FkYXB0ZXJUZXN0TXVsdGlwbGVPcmllbnRhdGlvbiwgVGVzdEZvcmNlUG9ydHJhaXQpIHsK
KyAgVmlkZW9BZGFwdGVyIHZpZGVvX2FkYXB0ZXI7CisgIHZpZGVvX2FkYXB0ZXIuT25PdXRwdXRG
b3JtYXRSZXF1ZXN0KHN0ZDo6bWFrZV9wYWlyKDM2MCwgNjQwKSwgNjQwICogMzYwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcigzNjAsIDY0MCks
IDM2MCAqIDY0MCwgMzApOworCisgIGludCBjcm9wcGVkX3dpZHRoOworICBpbnQgY3JvcHBlZF9o
ZWlnaHQ7CisgIGludCBvdXRfd2lkdGg7CisgIGludCBvdXRfaGVpZ2h0OworICBFWFBFQ1RfVFJV
RSh2aWRlb19hZGFwdGVyLkFkYXB0RnJhbWVSZXNvbHV0aW9uKAorICAgICAgLyogaW5fd2lkdGg9
ICovIDY0MCwgLyogaW5faGVpZ2h0PSAqLyA0ODAsIC8qIGluX3RpbWVzdGFtcF9ucz0gKi8gMCwK
KyAgICAgICZjcm9wcGVkX3dpZHRoLCAmY3JvcHBlZF9oZWlnaHQsICZvdXRfd2lkdGgsICZvdXRf
aGVpZ2h0KSk7CisgIEVYUEVDVF9FUSgyNzAsIGNyb3BwZWRfd2lkdGgpOworICBFWFBFQ1RfRVEo
NDgwLCBjcm9wcGVkX2hlaWdodCk7CisgIEVYUEVDVF9FUSgyNzAsIG91dF93aWR0aCk7CisgIEVY
UEVDVF9FUSg0ODAsIG91dF9oZWlnaHQpOworCisgIEVYUEVDVF9UUlVFKHZpZGVvX2FkYXB0ZXIu
QWRhcHRGcmFtZVJlc29sdXRpb24oCisgICAgICAvKiBpbl93aWR0aD0gKi8gNDgwLCAvKiBpbl9o
ZWlnaHQ9ICovIDY0MCwKKyAgICAgIC8qIGluX3RpbWVzdGFtcF9ucz0gKi8gcnRjOjprTnVtTmFu
b3NlY3NQZXJTZWMgLyAzMCwgJmNyb3BwZWRfd2lkdGgsCisgICAgICAmY3JvcHBlZF9oZWlnaHQs
ICZvdXRfd2lkdGgsICZvdXRfaGVpZ2h0KSk7CisgIEVYUEVDVF9FUSgzNjAsIGNyb3BwZWRfd2lk
dGgpOworICBFWFBFQ1RfRVEoNjQwLCBjcm9wcGVkX2hlaWdodCk7CisgIEVYUEVDVF9FUSgzNjAs
IG91dF93aWR0aCk7CisgIEVYUEVDVF9FUSg2NDAsIG91dF9oZWlnaHQpOworfQorCiB9ICAvLyBu
YW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY2FwdHVyZXIuaApp
bmRleCA4MjZlMzhmYTVhMWFjYmRiMTYyOGU3NzQ1YTEwZDUyMDQ5ODZmYjUyLi4zMjc0MjA2MmFh
OTI4YzAyMTc4ODVjM2QwYWEzODZiYTkxOGUxNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY2FwdHVyZXIuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNl
L3ZpZGVvY2FwdHVyZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIm1lZGlhL2Jhc2Uv
dmlkZW9jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
c3lzdGVtL3J0Y19leHBvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdz
bG90L3NpZ3Nsb3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RpbWVzdGFtcGFsaWduZXIuaCIKQEAgLTcyLDggKzczLDkgQEAgZW51
bSBDYXB0dXJlU3RhdGUgewogLy8gICBtZWRpYSBlbmdpbmUgdGhyZWFkKS4gSGVuY2UsIHRoZSBW
aWRlb0NhcHR1cmUgc3ViY2xhc3NlcyBkb250IG5lZWQgdG8gYmUKIC8vICAgdGhyZWFkIHNhZmUu
CiAvLwotY2xhc3MgVmlkZW9DYXB0dXJlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiwK
LSAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpWaWRlb1NvdXJjZUludGVyZmFjZTx3
ZWJydGM6OlZpZGVvRnJhbWU+IHsKK2NsYXNzIFJUQ19FWFBPUlQgVmlkZW9DYXB0dXJlcgorICAg
IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+LAorICAgICAgcHVibGljIHJ0Yzo6VmlkZW9T
b3VyY2VJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiB7CiAgcHVibGljOgogICBWaWRlb0Nh
cHR1cmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9jYXB0dXJlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9jYXB0dXJl
cl91bml0dGVzdC5jYwppbmRleCAwODBmNGEwOGNhZWFiMDQ4ZDZmYTFlM2JlYjlkYmQwODQ2N2Q5
ZjNmLi4wNzM0NGNhN2FjODVhZTI0NTFiNDk3ZmE0OWU2NzQwZTc1OGJjZmQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3Zp
ZGVvY2FwdHVyZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyX3VuaXR0ZXN0LmNjCkBAIC0x
NSw3ICsxNSw2IEBACiAKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2V2aWRlb2NhcHR1cmVyLmgi
CiAjaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtldmlkZW9yZW5kZXJlci5oIgotI2luY2x1ZGUgIm1l
ZGlhL2Jhc2UvdGVzdHV0aWxzLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS92aWRlb2NhcHR1cmVy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY29tbW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY29tbW9uLmgKaW5kZXggMGZmZDk4OWNi
NjUxNWYwZTVlOWQyMjAwMWI4N2NiZjY0NWNjNzk5OC4uNjQ0N2NiYTNiMmI2OWFjNTNmNTg5YTc3
Y2JhYzU1MDI0YjNlYTY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9jb21tb24uaApA
QCAtMTcsNiArMTcsNyBAQAogCiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAicnRjX2Jh
c2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIK
IAogbmFtZXNwYWNlIGNyaWNrZXQgewpAQCAtMTQ5LDcgKzE1MCw3IEBAIHN0cnVjdCBWaWRlb0Zv
cm1hdFBvZCB7CiAgIHVpbnQzMl90IGZvdXJjYzsgIC8vIENvbG9yIHNwYWNlLiBGT1VSQ0NfQU5Z
IG1lYW5zIHRoYXQgYW55IGNvbG9yIHNwYWNlIGlzIE9LLgogfTsKIAotc3RydWN0IFZpZGVvRm9y
bWF0IDogVmlkZW9Gb3JtYXRQb2Qgeworc3RydWN0IFJUQ19FWFBPUlQgVmlkZW9Gb3JtYXQgOiBW
aWRlb0Zvcm1hdFBvZCB7CiAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IGtNaW5pbXVtSW50ZXJ2YWwg
PQogICAgICAgcnRjOjprTnVtTmFub3NlY3NQZXJTZWMgLyAxMDAwMDsgIC8vIDEwayBmcHMuCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZwOV9wcm9maWxlLmNjCmluZGV4IGEyOGE5MTI3NjJhNzI5
ZTYyNzk2NzQwYWViODQ4MTVjM2I5OTFjMmEuLmM5Y2NhYTlmOWQ3ZGVjMWYwNTkxOTM1ZGRmOTYw
ZjljMGZkNmMzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92cDlfcHJvZmlsZS5jYwpAQCAt
MTUsNyArMTUsNyBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIFByb2ZpbGUgaW5mb3JtYXRp
b24gZm9yIFZQOSB2aWRlby4KLWNvbnN0IGNoYXIga1ZQOUZtdHBQcm9maWxlSWRbXSA9ICJ4LWdv
b2dsZS1wcm9maWxlLWlkIjsKK2NvbnN0IGNoYXIga1ZQOUZtdHBQcm9maWxlSWRbXSA9ICJwcm9m
aWxlLWlkIjsKIAogc3RkOjpzdHJpbmcgVlA5UHJvZmlsZVRvU3RyaW5nKFZQOVByb2ZpbGUgcHJv
ZmlsZSkgewogICBzd2l0Y2ggKHByb2ZpbGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdnA5X3By
b2ZpbGUuaAppbmRleCA1Y2MxZDE2NmE4Nzg5YjE4MjlkN2FhMmQ5MTk1MWNhNWVmZTA4MjU4Li43
NTVjNDZkYTJjYmRiOTYzYjVhZWRjY2FlNGU5NTk2Zjg1NjRmMjA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZwOV9wcm9m
aWxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS92cDlfcHJvZmlsZS5oCkBAIC0xNiw3ICsxNiw2IEBACiAKICNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9f
Zm9ybWF0LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5j
bHVkZSkKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9hZG1faGVscGVycy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Fk
bV9oZWxwZXJzLmgKaW5kZXggYzZlYTNhMjA5ZjJjOWFmMzYzMmJjNDhjMzkzNzZhZDRjOTVhZjI4
MC4uMmEzNWQyNmI0NzE2MTQwNTMzZTk2YTZhZjhhN2RlMzVkZjc2NDQyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Fk
bV9oZWxwZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL2FkbV9oZWxwZXJzLmgKQEAgLTExLDggKzExLDYgQEAKICNpZm5kZWYg
TUVESUFfRU5HSU5FX0FETV9IRUxQRVJTX0hfCiAjZGVmaW5lIE1FRElBX0VOR0lORV9BRE1fSEVM
UEVSU19IXwogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5j
bHVkZSkKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNsYXNzIEF1ZGlvRGV2aWNlTW9kdWxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvZW5naW5lL2FwbV9oZWxwZXJzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2FwbV9oZWxwZXJzX3VuaXR0ZXN0LmNj
CmluZGV4IDQ2NGUwNTNkYzBhOGQxNmJiNmUxZDJiZmY2OWE5OTNiMmQ0ZWY5MmMuLjcwYWMwYzFj
MjFlOGE1MzViY2RiNmEwMzA5OWQ4M2NkMzU2MzljMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9hcG1faGVscGVyc191
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvYXBtX2hlbHBlcnNfdW5pdHRlc3QuY2MKQEAgLTE2NCwxMSArMTY0LDQg
QEAgVEVTVChBcG1IZWxwZXJzVGVzdCwgVHlwaW5nRGV0ZWN0aW9uU3RhdHVzX0VuYWJsZURpc2Fi
bGUpIHsKICAgRVhQRUNUX0VRKFZvaWNlRGV0ZWN0aW9uOjprVmVyeUxvd0xpa2VsaWhvb2QsIHZk
LT5saWtlbGlob29kKCkpOwogICBFWFBFQ1RfRkFMU0UodmQtPmlzX2VuYWJsZWQoKSk7CiB9Ci0K
LS8vIFRPRE8oc29sZW5iZXJnKTogTW92ZSB0aGlzIHRlc3QgdG8gYSBiZXR0ZXIgcGxhY2UgLSBh
ZGRlZCBoZXJlIGZvciB0aGUgc2FrZQotLy8gb2YgZHVwbGljYXRpbmcgYWxsIHJlbGV2YW50IHRl
c3RzIGZyb20gYXVkaW9fcHJvY2Vzc2luZ190ZXN0LmNjLgotVEVTVChBcG1IZWxwZXJzVGVzdCwg
SGlnaFBhc3NGaWx0ZXJfRGVmYXVsdE1vZGUpIHsKLSAgVGVzdEhlbHBlciBoZWxwZXI7Ci0gIEVY
UEVDVF9GQUxTRShoZWxwZXIuYXBtKCktPmhpZ2hfcGFzc19maWx0ZXIoKS0+aXNfZW5hYmxlZCgp
KTsKLX0KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb25zdGFudHMuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29u
c3RhbnRzLmNjCmluZGV4IDczNjY4NWZjNzlmMzY4NGY0ZGY0MTk1ZWViNGY0ODUwM2FlNDU4MTUu
LmZiM2FjNjk4ZTYxNzAyNzhlNWI4ZTgxMzc3ZWQ3OGVkYjJkYWQ2ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb25z
dGFudHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvZW5naW5lL2NvbnN0YW50cy5jYwpAQCAtMTQsNSArMTQsNiBAQCBuYW1lc3BhY2UgY3Jp
Y2tldCB7CiAKIGNvbnN0IGludCBrTWluVmlkZW9CaXRyYXRlQnBzID0gMzAwMDA7CiBjb25zdCBp
bnQga1ZpZGVvTXR1ID0gMTIwMDsKLWNvbnN0IGludCBrVmlkZW9SdHBCdWZmZXJTaXplID0gNjU1
MzY7Citjb25zdCBpbnQga1ZpZGVvUnRwU2VuZEJ1ZmZlclNpemUgPSA2NTUzNjsKK2NvbnN0IGlu
dCBrVmlkZW9SdHBSZWN2QnVmZmVyU2l6ZSA9IDI2MjE0NDsKIH0gIC8vIG5hbWVzcGFjZSBjcmlj
a2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvY29uc3RhbnRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29uc3RhbnRzLmgKaW5kZXggZWE2YzA3NTRhNjVk
OTcyZWJmODYxN2JkYjE0YWE4NjlhMThhNmEyNC4uYjEzNjA2MDU0NjEwMDE5NGVkNmZlNTE0Nzhm
ZWI1YjE1ODM4MzllNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2NvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb25zdGFudHMuaApAQCAt
MTQsNyArMTQsOCBAQAogbmFtZXNwYWNlIGNyaWNrZXQgewogCiBleHRlcm4gY29uc3QgaW50IGtW
aWRlb010dTsKLWV4dGVybiBjb25zdCBpbnQga1ZpZGVvUnRwQnVmZmVyU2l6ZTsKK2V4dGVybiBj
b25zdCBpbnQga1ZpZGVvUnRwU2VuZEJ1ZmZlclNpemU7CitleHRlcm4gY29uc3QgaW50IGtWaWRl
b1J0cFJlY3ZCdWZmZXJTaXplOwogCiBleHRlcm4gY29uc3QgY2hhciBrSDI2NENvZGVjTmFtZVtd
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvY29udmVydF9sZWdhY3lfdmlkZW9fZmFjdG9yeS5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb252ZXJ0X2xl
Z2FjeV92aWRlb19mYWN0b3J5LmNjCmluZGV4IDdkYTFiMGZlMmZkN2MyYjc2MzgyZTIxZmZkZDEy
MzM4ZDE1ZTg4NjguLjI5N2ExNDM0MjViNGMxZWE0MWNjMDUxYWZhNDNhZDkxMzVjM2NkMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2VuZ2luZS9jb252ZXJ0X2xlZ2FjeV92aWRlb19mYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb252ZXJ0X2xlZ2Fj
eV92aWRlb19mYWN0b3J5LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgog
CiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyX2ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfc29mdHdhcmVf
ZmFsbGJhY2tfd3JhcHBlci5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LmgiCkBAIC0xMzAsNyArMTMxLDcgQEAgY2xhc3MgRW5jb2RlckFkYXB0ZXIg
OiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5IHsKICAgICBpZiAoSXNGb3JtYXRT
dXBwb3J0ZWQoaW50ZXJuYWxfZW5jb2Rlcl9mYWN0b3J5Xy0+R2V0U3VwcG9ydGVkRm9ybWF0cygp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQpKSB7CiAgICAgICBpbnRlcm5hbF9l
bmNvZGVyID0KLSAgICAgICAgICBDb2RlY05hbWVzRXEoZm9ybWF0Lm5hbWUuY19zdHIoKSwga1Zw
OENvZGVjTmFtZSkKKyAgICAgICAgICBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1l
LCBrVnA4Q29kZWNOYW1lKQogICAgICAgICAgICAgICA/IGFic2w6Om1ha2VfdW5pcXVlPHdlYnJ0
Yzo6VlA4RW5jb2RlclNpbXVsY2FzdFByb3h5PigKICAgICAgICAgICAgICAgICAgICAgaW50ZXJu
YWxfZW5jb2Rlcl9mYWN0b3J5Xy5nZXQoKSwgZm9ybWF0KQogICAgICAgICAgICAgICA6IGludGVy
bmFsX2VuY29kZXJfZmFjdG9yeV8tPkNyZWF0ZVZpZGVvRW5jb2Rlcihmb3JtYXQpOwpAQCAtMTQx
LDcgKzE0Miw3IEBAIGNsYXNzIEVuY29kZXJBZGFwdGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9F
bmNvZGVyRmFjdG9yeSB7CiAgICAgaWYgKElzRm9ybWF0U3VwcG9ydGVkKGV4dGVybmFsX2VuY29k
ZXJfZmFjdG9yeV8tPkdldFN1cHBvcnRlZEZvcm1hdHMoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0KSkgewogICAgICAgZXh0ZXJuYWxfZW5jb2RlciA9Ci0gICAgICAgICAgQ29k
ZWNOYW1lc0VxKGZvcm1hdC5uYW1lLmNfc3RyKCksIGtWcDhDb2RlY05hbWUpCisgICAgICAgICAg
YWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwga1ZwOENvZGVjTmFtZSkKICAgICAg
ICAgICAgICAgPyBhYnNsOjptYWtlX3VuaXF1ZTx3ZWJydGM6OlNpbXVsY2FzdEVuY29kZXJBZGFw
dGVyPigKICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfZW5jb2Rlcl9mYWN0b3J5Xy5nZXQo
KSwgZm9ybWF0KQogICAgICAgICAgICAgICA6IGV4dGVybmFsX2VuY29kZXJfZmFjdG9yeV8tPkNy
ZWF0ZVZpZGVvRW5jb2Rlcihmb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2NvbnZlcnRfbGVnYWN5X3ZpZGVv
X2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS9jb252ZXJ0X2xlZ2FjeV92aWRlb19mYWN0b3J5LmgKaW5kZXggNWJkMzU4MGE2
ZjEwNDI1ZDMwZmQ5NWQ0MzgxMzY4YmE2ODdlY2JiZi4uMjczODNhYjM4NmU5ZjM5ODNkZTQzMjU3
MzNkZDFlNDg2ZGI2NWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2NvbnZlcnRfbGVnYWN5X3ZpZGVvX2ZhY3Rvcnku
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvY29udmVydF9sZWdhY3lfdmlkZW9fZmFjdG9yeS5oCkBAIC0xMyw2ICsxMyw4IEBACiAK
ICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9y
dC5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIFZpZGVvRW5jb2RlckZhY3Rvcnk7CiBj
bGFzcyBWaWRlb0RlY29kZXJGYWN0b3J5OwpAQCAtMjcsMTAgKzI5LDEyIEBAIGNsYXNzIFdlYlJ0
Y1ZpZGVvRGVjb2RlckZhY3Rvcnk7CiAvLyBuZXcgdHlwZSBvZiBjb2RlYyBmYWN0b3JpZXMuIFRo
ZSBwdXJwb3NlIG9mIHRoZXNlIGZ1bmN0aW9ucyBpcyB0byBwcm92aWRlIGFuCiAvLyBlYXN5IHdh
eSBmb3IgY2xpZW50cyB0byBtaWdyYXRlIHRvIHRoZSBBUEkgd2l0aCBuZXcgZmFjdG9yeSB0eXBl
cy4KIC8vIFRPRE8obWFnamVkKTogUmVtb3ZlIG9uY2Ugb2xkIGZhY3RvcmllcyBhcmUgZ29uZSwg
d2VicnRjOjc5MjUuCi1zdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5
PiBDb252ZXJ0VmlkZW9FbmNvZGVyRmFjdG9yeSgKK1JUQ19FWFBPUlQgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4KK0NvbnZlcnRWaWRlb0VuY29kZXJGYWN0b3J5
KAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5PiBleHRlcm5h
bF9lbmNvZGVyX2ZhY3RvcnkpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29k
ZXJGYWN0b3J5PiBDb252ZXJ0VmlkZW9EZWNvZGVyRmFjdG9yeSgKK1JUQ19FWFBPUlQgc3RkOjp1
bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4KK0NvbnZlcnRWaWRlb0RlY29k
ZXJGYWN0b3J5KAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5
PiBleHRlcm5hbF9kZWNvZGVyX2ZhY3RvcnkpOwogCiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvZW5naW5lL2Zha2V3ZWJydGNjYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGNjYWxsLmNjCmluZGV4IGNlOTli
OWMxMDM0YzA5MjE1NDA4OTQ4ODM2ZTRjOTQ0MzExMmFmNDIuLjZjNWI4Yzc0YjhmMDhkMTgyOWY1
ODUyZWZiM2ZkNDU5MTllYTE0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjY2FsbC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFr
ZXdlYnJ0Y2NhbGwuY2MKQEAgLTEyMyw2ICsxMjMsNyBAQCBGYWtlVmlkZW9TZW5kU3RyZWFtOjpG
YWtlVmlkZW9TZW5kU3RyZWFtKAogICAgICAgc291cmNlXyhudWxscHRyKSwKICAgICAgIG51bV9z
d2FwcGVkX2ZyYW1lc18oMCkgewogICBSVENfRENIRUNLKGNvbmZpZy5lbmNvZGVyX3NldHRpbmdz
LmVuY29kZXJfZmFjdG9yeSAhPSBudWxscHRyKTsKKyAgUlRDX0RDSEVDSyhjb25maWcuZW5jb2Rl
cl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ICE9IG51bGxwdHIpOwogICBSZWNv
bmZpZ3VyZVZpZGVvRW5jb2RlcihzdGQ6Om1vdmUoZW5jb2Rlcl9jb25maWcpKTsKIH0KIApAQCAt
NjQzLDQgKzY0NCw3IEBAIHZvaWQgRmFrZUNhbGw6Ok9uU2VudFBhY2tldChjb25zdCBydGM6OlNl
bnRQYWNrZXQmIHNlbnRfcGFja2V0KSB7CiAgIH0KIH0KIAordm9pZCBGYWtlQ2FsbDo6TWVkaWFU
cmFuc3BvcnRDaGFuZ2UoCisgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVk
aWFfdHJhbnNwb3J0X2ludGVyZmFjZSkge30KKwogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2VuZ2luZS9mYWtld2VicnRjY2FsbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGNjYWxsLmgKaW5kZXggZGJjZWRiOGY0
MTA4ZmU1NWYxYTIxODFiODhhMDMxNmM5YjIwODg5Yi4uMWI2ZGViMDcwMmRhN2YzNWU3NDI1YWUw
MmY2NjMwNTI5MTViZTE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGNjYWxsLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJy
dGNjYWxsLmgKQEAgLTI3Myw2ICsyNzMsOSBAQCBjbGFzcyBGYWtlQ2FsbCBmaW5hbCA6IHB1Ymxp
YyB3ZWJydGM6OkNhbGwsIHB1YmxpYyB3ZWJydGM6OlBhY2tldFJlY2VpdmVyIHsKICAgaW50IEdl
dE51bUNyZWF0ZWRSZWNlaXZlU3RyZWFtcygpIGNvbnN0OwogICB2b2lkIFNldFN0YXRzKGNvbnN0
IHdlYnJ0Yzo6Q2FsbDo6U3RhdHMmIHN0YXRzKTsKIAorICB2b2lkIE1lZGlhVHJhbnNwb3J0Q2hh
bmdlKAorICAgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNw
b3J0X2ludGVyZmFjZSkgb3ZlcnJpZGU7CisKICBwcml2YXRlOgogICB3ZWJydGM6OkF1ZGlvU2Vu
ZFN0cmVhbSogQ3JlYXRlQXVkaW9TZW5kU3RyZWFtKAogICAgICAgY29uc3Qgd2VicnRjOjpBdWRp
b1NlbmRTdHJlYW06OkNvbmZpZyYgY29uZmlnKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2Vi
cnRjdmlkZW9jYXB0dXJlbW9kdWxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVvY2FwdHVyZW1vZHVsZS5oCmlu
ZGV4IDQ3ZjEzOTNjM2YzODE5ZTg1MTcxMGJiODRiYjI4MWE0ZWJkNDBkMzguLjc1NTY4MTFmMmRl
MDE5NjJiZmUwMTRlNTA1NjMyNGMyZDY4NDAwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlkZW9j
YXB0dXJlbW9kdWxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGN2aWRlb2NhcHR1cmVtb2R1bGUuaApAQCAtMTQs
NyArMTQsNiBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS92aWRlby9pNDIw
X2J1ZmZlci5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvdGVzdHV0aWxzLmgiCiAjaW5jbHVkZSAi
bWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvY2FwdHVyZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90
YXNrX3F1ZXVlX2Zvcl90ZXN0LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlkZW9lbmdpbmUu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdp
bmUvZmFrZXdlYnJ0Y3ZpZGVvZW5naW5lLmNjCmluZGV4IDcwODFiNjQ5MzNhOTU2ZjJjMDZhYTVh
ODYyODQ1NzRiMTBmM2RiNzIuLjY5MGYzZTdmODMxZWNhNzYwYTc1YzUxMTQ0MzRjY2RlNmI5MTRi
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlkZW9lbmdpbmUuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGN2aWRl
b2VuZ2luZS5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2Zh
a2V3ZWJydGN2aWRlb2VuZ2luZS5oIgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgi
CiAjaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9z
aW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0
Y3ZpZGVvZGVjb2RlcmZhY3RvcnkuaCIKQEAgLTEyOCw5ICsxMjksNyBAQCBGYWtlV2ViUnRjVmlk
ZW9EZWNvZGVyRmFjdG9yeTo6ZGVjb2RlcnMoKSB7CiAvLyBFbmNvZGVyLgogRmFrZVdlYlJ0Y1Zp
ZGVvRW5jb2Rlcjo6RmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlcigKICAgICBGYWtlV2ViUnRjVmlkZW9F
bmNvZGVyRmFjdG9yeSogZmFjdG9yeSkKLSAgICA6IGluaXRfZW5jb2RlX2V2ZW50XyhmYWxzZSwg
ZmFsc2UpLAotICAgICAgbnVtX2ZyYW1lc19lbmNvZGVkXygwKSwKLSAgICAgIGZhY3RvcnlfKGZh
Y3RvcnkpIHt9CisgICAgOiBudW1fZnJhbWVzX2VuY29kZWRfKDApLCBmYWN0b3J5XyhmYWN0b3J5
KSB7fQogCiBGYWtlV2ViUnRjVmlkZW9FbmNvZGVyOjp+RmFrZVdlYlJ0Y1ZpZGVvRW5jb2Rlcigp
IHsKICAgaWYgKGZhY3RvcnlfKSB7CkBAIC0xNjcsMTEgKzE2Niw2IEBAIGludDMyX3QgRmFrZVdl
YlJ0Y1ZpZGVvRW5jb2Rlcjo6UmVsZWFzZSgpIHsKICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19PSzsKIH0KIAotaW50MzJfdCBGYWtlV2ViUnRjVmlkZW9FbmNvZGVyOjpTZXRDaGFubmVsUGFy
YW1ldGVycyh1aW50MzJfdCBwYWNrZXRMb3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJ0dCkgewotICByZXR1cm4gV0VCUlRD
X1ZJREVPX0NPREVDX09LOwotfQotCiBpbnQzMl90IEZha2VXZWJSdGNWaWRlb0VuY29kZXI6OlNl
dFJhdGVBbGxvY2F0aW9uKAogICAgIGNvbnN0IHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdGlv
biYgYWxsb2NhdGlvbiwKICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIHsKQEAgLTE5NCw4ICsxODgs
NyBAQCBpbnQgRmFrZVdlYlJ0Y1ZpZGVvRW5jb2Rlcjo6R2V0TnVtRW5jb2RlZEZyYW1lcygpIHsK
IAogLy8gVmlkZW8gZW5jb2RlciBmYWN0b3J5LgogRmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3Rv
cnk6OkZha2VXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KCkKLSAgICA6IGNyZWF0ZWRfdmlkZW9f
ZW5jb2Rlcl9ldmVudF8oZmFsc2UsIGZhbHNlKSwKLSAgICAgIG51bV9jcmVhdGVkX2VuY29kZXJz
XygwKSwKKyAgICA6IG51bV9jcmVhdGVkX2VuY29kZXJzXygwKSwKICAgICAgIGVuY29kZXJzX2hh
dmVfaW50ZXJuYWxfc291cmNlc18oZmFsc2UpLAogICAgICAgdnA4X2ZhY3RvcnlfbW9kZV8oZmFs
c2UpIHt9CiAKQEAgLTIxOCw3ICsyMTEsNyBAQCBGYWtlV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9y
eTo6Q3JlYXRlVmlkZW9FbmNvZGVyKAogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7CiAg
IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rlcj4gZW5jb2RlcjsKICAgaWYgKElz
Rm9ybWF0U3VwcG9ydGVkKGZvcm1hdHNfLCBmb3JtYXQpKSB7Ci0gICAgaWYgKENvZGVjTmFtZXNF
cShmb3JtYXQubmFtZS5jX3N0cigpLCBrVnA4Q29kZWNOYW1lKSAmJgorICAgIGlmIChhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCBrVnA4Q29kZWNOYW1lKSAmJgogICAgICAgICAh
dnA4X2ZhY3RvcnlfbW9kZV8pIHsKICAgICAgIC8vIFRoZSBzaW11bGNhc3QgYWRhcHRlciB3aWxs
IGFzayB0aGlzIGZhY3RvcnkgZm9yIG11bHRpcGxlIFZQOAogICAgICAgLy8gZW5jb2RlcnMuIEVu
dGVyIHZwOF9mYWN0b3J5X21vZGUgc28gdGhhdCB3ZSBub3cgY3JlYXRlIHRoZXNlIGVuY29kZXJz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVvZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVvZW5naW5l
LmgKaW5kZXggZjQyODdhMzFkMjYwMjZmZGVlODkzMWJlOTM0N2RiNDg5ODQ2YWUyMy4uNmVkOTJh
Nzg5YjU3ZTJkZDc5MDk4MGQ3YTljODk2MmJhMjQ3ZjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGN2
aWRlb2VuZ2luZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlkZW9lbmdpbmUuaApAQCAtODYsNyArODYsNiBA
QCBjbGFzcyBGYWtlV2ViUnRjVmlkZW9FbmNvZGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNv
ZGVyIHsKICAgaW50MzJfdCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgICAgICB3
ZWJydGM6OkVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgIGludDMy
X3QgUmVsZWFzZSgpIG92ZXJyaWRlOwotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVp
bnQzMl90IHBhY2tldExvc3MsIGludDY0X3QgcnR0KSBvdmVycmlkZTsKICAgaW50MzJfdCBTZXRS
YXRlQWxsb2NhdGlvbihjb25zdCB3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGFsbG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVyYXRlKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvaW50ZXJuYWxk
ZWNvZGVyZmFjdG9yeS5jYwppbmRleCBkZjc0NzczYzg2ZGIyNmVlMzc0ODQxMjQ3YWExMGJiNDAw
YjE5N2FjLi43MjI0MTMzMzhlNTExOThkMmZjNjE2YWY1OWU5OWY5Zjc2MGY3YmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdp
bmUvaW50ZXJuYWxkZWNvZGVyZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvaW50ZXJuYWxkZWNvZGVyZmFjdG9yeS5j
YwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVj
b2RlcmZhY3RvcnkuaCIKIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgogI2luY2x1ZGUgIm1lZGlh
L2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvaDI2NC9pbmNsdWRlL2gyNjQuaCIKQEAgLTU1LDExICs1NiwxMSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8VmlkZW9EZWNvZGVyPiBJbnRlcm5hbERlY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0Rl
Y29kZXIoCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KIAotICBpZiAoY3JpY2tldDo6Q29kZWNO
YW1lc0VxKGZvcm1hdC5uYW1lLCBjcmlja2V0OjprVnA4Q29kZWNOYW1lKSkKKyAgaWYgKGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6OmtWcDhDb2RlY05hbWUpKQog
ICAgIHJldHVybiBWUDhEZWNvZGVyOjpDcmVhdGUoKTsKLSAgaWYgKGNyaWNrZXQ6OkNvZGVjTmFt
ZXNFcShmb3JtYXQubmFtZSwgY3JpY2tldDo6a1ZwOUNvZGVjTmFtZSkpCisgIGlmIChhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCBjcmlja2V0OjprVnA5Q29kZWNOYW1lKSkKICAg
ICByZXR1cm4gVlA5RGVjb2Rlcjo6Q3JlYXRlKCk7Ci0gIGlmIChjcmlja2V0OjpDb2RlY05hbWVz
RXEoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1lKSkKKyAgaWYgKGFic2w6OkVx
dWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1lKSkKICAg
ICByZXR1cm4gSDI2NERlY29kZXI6OkNyZWF0ZSgpOwogCiAgIFJUQ19OT1RSRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9pbnRlcm5hbGVuY29kZXJmYWN0b3J5
LmNjCmluZGV4IGU2YzNjMmU3MmZkNjMyZWFjNzFlYjM4ZGZhYjYxMzI3YTE4YjgyZGYuLmU4MWI3
M2Q1ZTNkNmNmMTVhYzM4Y2Y3ZDM1NTM1ZDE1ZDQyMjBjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9pbnRlcm5hbGVu
Y29kZXJmYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21lZGlhL2VuZ2luZS9pbnRlcm5hbGVuY29kZXJmYWN0b3J5LmNjCkBAIC0xMiw2ICsx
Miw3IEBACiAKICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21h
dGNoLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCiAj
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0Lmgi
CiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5o
IgpAQCAtNDEsMTEgKzQyLDExIEBAIFZpZGVvRW5jb2RlckZhY3Rvcnk6OkNvZGVjSW5mbyBJbnRl
cm5hbEVuY29kZXJGYWN0b3J5OjpRdWVyeVZpZGVvRW5jb2RlcigKIAogc3RkOjp1bmlxdWVfcHRy
PFZpZGVvRW5jb2Rlcj4gSW50ZXJuYWxFbmNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9FbmNvZGVy
KAogICAgIGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIHsKLSAgaWYgKGNyaWNrZXQ6OkNv
ZGVjTmFtZXNFcShmb3JtYXQubmFtZSwgY3JpY2tldDo6a1ZwOENvZGVjTmFtZSkpCisgIGlmIChh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCBjcmlja2V0OjprVnA4Q29kZWNOYW1l
KSkKICAgICByZXR1cm4gVlA4RW5jb2Rlcjo6Q3JlYXRlKCk7Ci0gIGlmIChjcmlja2V0OjpDb2Rl
Y05hbWVzRXEoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUpKQorICBpZiAoYWJz
bDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgY3JpY2tldDo6a1ZwOUNvZGVjTmFtZSkp
CiAgICAgcmV0dXJuIFZQOUVuY29kZXI6OkNyZWF0ZShjcmlja2V0OjpWaWRlb0NvZGVjKGZvcm1h
dCkpOwotICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGZvcm1hdC5uYW1lLCBjcmlja2V0Ojpr
SDI2NENvZGVjTmFtZSkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1l
LCBjcmlja2V0OjprSDI2NENvZGVjTmFtZSkpCiAgICAgcmV0dXJuIEgyNjRFbmNvZGVyOjpDcmVh
dGUoY3JpY2tldDo6VmlkZW9Db2RlYyhmb3JtYXQpKTsKICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IlRyeWluZyB0byBjcmVhdGVkIGVuY29kZXIgb2YgdW5zdXBwb3J0ZWQgZm9ybWF0ICIKICAgICAg
ICAgICAgICAgICAgICAgPDwgZm9ybWF0Lm5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbXVsdGlwbGV4Y29kZWNm
YWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvZW5naW5lL211bHRpcGxleGNvZGVjZmFjdG9yeS5jYwppbmRleCAyMzZhMmU4MWFjYzcyMmQ4
NDg1NTRhODdhZGY0ODQwYzI0ZDc1Zjk0Li5iMzkxMzI0M2VkZWIwNWQxNjNkZDNhMmFiODczZmMw
MGYyMDBjZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbXVsdGlwbGV4Y29kZWNmYWN0b3J5LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9tdWx0aXBs
ZXhjb2RlY2ZhY3RvcnkuY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgPHV0aWxpdHk+
CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvdmlkZW9f
Y29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2NvZGVjLmgi
CiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgpAQCAtMjIsOCArMjMsOCBA
QAogbmFtZXNwYWNlIHsKIAogYm9vbCBJc011bHRpcGxleENvZGVjKGNvbnN0IGNyaWNrZXQ6OlZp
ZGVvQ29kZWMmIGNvZGVjKSB7Ci0gIHJldHVybiBjcmlja2V0OjpDb2RlY05hbWVzRXEoY29kZWMu
bmFtZS5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OmtN
dWx0aXBsZXhDb2RlY05hbWUpOworICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2Rl
Yy5uYW1lLmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6
OmtNdWx0aXBsZXhDb2RlY05hbWUpOwogfQogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkBA
IC00Miw3ICs0Myw3IEBAIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBNdWx0aXBsZXhFbmNv
ZGVyRmFjdG9yeTo6R2V0U3VwcG9ydGVkRm9ybWF0cygpCiAgICAgY29uc3QgewogICBzdGQ6OnZl
Y3RvcjxTZHBWaWRlb0Zvcm1hdD4gZm9ybWF0cyA9IGZhY3RvcnlfLT5HZXRTdXBwb3J0ZWRGb3Jt
YXRzKCk7CiAgIGZvciAoY29uc3QgYXV0byYgZm9ybWF0IDogZm9ybWF0cykgewotICAgIGlmIChj
cmlja2V0OjpDb2RlY05hbWVzRXEoZm9ybWF0Lm5hbWUsIGtNdWx0aXBsZXhBc3NvY2lhdGVkQ29k
ZWNOYW1lKSkgeworICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCBr
TXVsdGlwbGV4QXNzb2NpYXRlZENvZGVjTmFtZSkpIHsKICAgICAgIFNkcFZpZGVvRm9ybWF0IG11
bHRpcGxleF9mb3JtYXQgPSBmb3JtYXQ7CiAgICAgICBtdWx0aXBsZXhfZm9ybWF0LnBhcmFtZXRl
cnNbY3JpY2tldDo6a0NvZGVjUGFyYW1Bc3NvY2lhdGVkQ29kZWNOYW1lXSA9CiAgICAgICAgICAg
Zm9ybWF0Lm5hbWU7CkBAIC04OCw3ICs4OSw3IEBAIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0
PiBNdWx0aXBsZXhEZWNvZGVyRmFjdG9yeTo6R2V0U3VwcG9ydGVkRm9ybWF0cygpCiAgICAgY29u
c3QgewogICBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gZm9ybWF0cyA9IGZhY3RvcnlfLT5H
ZXRTdXBwb3J0ZWRGb3JtYXRzKCk7CiAgIGZvciAoY29uc3QgYXV0byYgZm9ybWF0IDogZm9ybWF0
cykgewotICAgIGlmIChjcmlja2V0OjpDb2RlY05hbWVzRXEoZm9ybWF0Lm5hbWUsIGtNdWx0aXBs
ZXhBc3NvY2lhdGVkQ29kZWNOYW1lKSkgeworICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KGZvcm1hdC5uYW1lLCBrTXVsdGlwbGV4QXNzb2NpYXRlZENvZGVjTmFtZSkpIHsKICAgICAgIFNk
cFZpZGVvRm9ybWF0IG11bHRpcGxleF9mb3JtYXQgPSBmb3JtYXQ7CiAgICAgICBtdWx0aXBsZXhf
Zm9ybWF0LnBhcmFtZXRlcnNbY3JpY2tldDo6a0NvZGVjUGFyYW1Bc3NvY2lhdGVkQ29kZWNOYW1l
XSA9CiAgICAgICAgICAgZm9ybWF0Lm5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbXVsdGlwbGV4Y29kZWNmYWN0
b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvbXVsdGlwbGV4Y29kZWNmYWN0b3J5LmgKaW5kZXggN2E4NTFjOGMxZWNmYzQyMDNjYTgz
ZmFlOTFhYzg2ZWFjNzdmZTY3YS4uYWUwOTlhNGVmM2U3OGIxZWZhZGZiMTkyZDc2OTAzMDE1ZGNi
NTM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL211bHRpcGxleGNvZGVjZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9tdWx0aXBsZXhjb2Rl
Y2ZhY3RvcnkuaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVj
cy92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhw
b3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogLy8gTXVsdGlwbGV4IGNvZGVjIGlzIGEgY29t
cGxldGVseSBtb2R1bGFyL29wdGlvbmFsIGNvZGVjIHRoYXQgYWxsb3dzIHVzZXJzIHRvCkBAIC0z
Niw3ICszNyw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogLy8gYW5kIGRlY29kZXIgaW5zdGFuY2Uo
cykgdXNpbmcgdGhlc2UgZmFjdG9yaWVzLgogLy8gLSBVc2UgTXVsdGlwbGV4KmNvZGVyRmFjdG9y
eSBjbGFzc2VzIGluIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgpIGNhbGxzLgogLy8gLSBT
ZWxlY3QgIm11bHRpcGxleCIgY29kZWMgaW4gU0RQIG5lZ290aWF0aW9uLgotY2xhc3MgTXVsdGlw
bGV4RW5jb2RlckZhY3RvcnkgOiBwdWJsaWMgVmlkZW9FbmNvZGVyRmFjdG9yeSB7CitjbGFzcyBS
VENfRVhQT1JUIE11bHRpcGxleEVuY29kZXJGYWN0b3J5IDogcHVibGljIFZpZGVvRW5jb2RlckZh
Y3RvcnkgewogIHB1YmxpYzoKICAgLy8gfHN1cHBvcnRzX2F1Z21lbnRpbmdfZGF0YXwgZGVmaW5l
cyBpZiB0aGUgZW5jb2RlciB3b3VsZCBzdXBwb3J0IGF1Z21lbnRpbmcKICAgLy8gZGF0YS4gSWYg
c2V0LCB0aGUgZW5jb2RlciBleHBlY3RzIHRvIHJlY2VpdmUgdmlkZW8gZnJhbWUgYnVmZmVycyBv
ZiB0eXBlCkBAIC01NCw3ICs1NSw3IEBAIGNsYXNzIE11bHRpcGxleEVuY29kZXJGYWN0b3J5IDog
cHVibGljIFZpZGVvRW5jb2RlckZhY3RvcnkgewogICBjb25zdCBib29sIHN1cHBvcnRzX2F1Z21l
bnRpbmdfZGF0YV87CiB9OwogCi1jbGFzcyBNdWx0aXBsZXhEZWNvZGVyRmFjdG9yeSA6IHB1Ymxp
YyBWaWRlb0RlY29kZXJGYWN0b3J5IHsKK2NsYXNzIFJUQ19FWFBPUlQgTXVsdGlwbGV4RGVjb2Rl
ckZhY3RvcnkgOiBwdWJsaWMgVmlkZW9EZWNvZGVyRmFjdG9yeSB7CiAgcHVibGljOgogICAvLyB8
c3VwcG9ydHNfYXVnbWVudGluZ19kYXRhfCBkZWZpbmVzIGlmIHRoZSBkZWNvZGVyIHdvdWxkIHN1
cHBvcnQgYXVnbWVudGluZwogICAvLyBkYXRhLiBJZiBzZXQsIHRoZSBkZWNvZGVyIGlzIGV4cGVj
dGVkIHRvIG91dHB1dCB2aWRlbyBmcmFtZSBidWZmZXJzIG9mIHR5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9udWxs
d2VicnRjdmlkZW9lbmdpbmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21lZGlhL2VuZ2luZS9udWxsd2VicnRjdmlkZW9lbmdpbmUuaAppbmRleCA5YWYwZjli
MTMwYzZjMmU0NTY0NTM0ZTkwMjJkZTA3ZTc1N2ZjOGMxLi42MjMyNmRkNGRkZDQzYjM5Njk4ZWRk
MTIyZGUwY2MxYWRkZWY1YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbnVsbHdlYnJ0Y3ZpZGVvZW5naW5lLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5l
L251bGx3ZWJydGN2aWRlb2VuZ2luZS5oCkBAIC0zMCwxNSArMzAsMTkgQEAgY2xhc3MgV2ViUnRj
VmlkZW9FbmNvZGVyRmFjdG9yeTsKIAogLy8gVmlkZW8gZW5naW5lIGltcGxlbWVudGF0aW9uIHRo
YXQgZG9lcyBub3RoaW5nIGFuZCBjYW4gYmUgdXNlZCBpbgogLy8gQ29tcG9zaXRlTWVkaWFFbmdp
bmUuCi1jbGFzcyBOdWxsV2ViUnRjVmlkZW9FbmdpbmUgeworY2xhc3MgTnVsbFdlYlJ0Y1ZpZGVv
RW5naW5lIDogcHVibGljIFZpZGVvRW5naW5lSW50ZXJmYWNlIHsKICBwdWJsaWM6Ci0gIHN0ZDo6
dmVjdG9yPFZpZGVvQ29kZWM+IGNvZGVjcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6dmVjdG9yPFZp
ZGVvQ29kZWM+KCk7IH0KKyAgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNzKCkgY29uc3Qg
b3ZlcnJpZGUgeworICAgIHJldHVybiBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPigpOworICB9CiAK
LSAgUnRwQ2FwYWJpbGl0aWVzIEdldENhcGFiaWxpdGllcygpIGNvbnN0IHsgcmV0dXJuIFJ0cENh
cGFiaWxpdGllcygpOyB9CisgIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBhYmlsaXRpZXMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBSdHBDYXBhYmlsaXRpZXMoKTsgfQogCi0gIFZpZGVvTWVkaWFD
aGFubmVsKiBDcmVhdGVDaGFubmVsKHdlYnJ0Yzo6Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKSB7
CisgIFZpZGVvTWVkaWFDaGFubmVsKiBDcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICB3ZWJydGM6
OkNhbGwqIGNhbGwsCisgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAorICAgICAgY29u
c3QgVmlkZW9PcHRpb25zJiBvcHRpb25zLAorICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRp
b25zJiBjcnlwdG9fb3B0aW9ucykgb3ZlcnJpZGUgewogICAgIHJldHVybiBudWxscHRyOwogICB9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL251bGx3ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9udWxsd2Vi
cnRjdmlkZW9lbmdpbmVfdW5pdHRlc3QuY2MKaW5kZXggNmM3NDBiOGM4YzM3MmFiOGEyOTBjMzFi
ZGNhZTU3NWM4NTViMmFkZi4uZTcxOGQxYmI2OTdlMjE4MjI3MjhmYThjMWY0NWVjYzVlNWQ4NjMz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvZW5naW5lL251bGx3ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbnVsbHdl
YnJ0Y3ZpZGVvZW5naW5lX3VuaXR0ZXN0LmNjCkBAIC05LDYgKzksNyBAQAogICovCiAKICNpbmNs
dWRlICJtZWRpYS9lbmdpbmUvbnVsbHdlYnJ0Y3ZpZGVvZW5naW5lLmgiCisjaW5jbHVkZSAiYWJz
bC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5n
aW5lLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9tb2NrX2F1ZGlv
X2RldmljZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1
ZGlvX3Byb2Nlc3NpbmcuaCIKQEAgLTE4LDggKzE5LDcgQEAKIAogbmFtZXNwYWNlIGNyaWNrZXQg
ewogCi1jbGFzcyBXZWJSdGNNZWRpYUVuZ2luZU51bGxWaWRlbwotICAgIDogcHVibGljIENvbXBv
c2l0ZU1lZGlhRW5naW5lPFdlYlJ0Y1ZvaWNlRW5naW5lLCBOdWxsV2ViUnRjVmlkZW9FbmdpbmU+
IHsKK2NsYXNzIFdlYlJ0Y01lZGlhRW5naW5lTnVsbFZpZGVvIDogcHVibGljIENvbXBvc2l0ZU1l
ZGlhRW5naW5lIHsKICBwdWJsaWM6CiAgIFdlYlJ0Y01lZGlhRW5naW5lTnVsbFZpZGVvKAogICAg
ICAgd2VicnRjOjpBdWRpb0RldmljZU1vZHVsZSogYWRtLApAQCAtMjcsMTMgKzI3LDEzIEBAIGNs
YXNzIFdlYlJ0Y01lZGlhRW5naW5lTnVsbFZpZGVvCiAgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5LAogICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZWNv
ZGVyRmFjdG9yeT4mCiAgICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KQotICAgICAgOiBD
b21wb3NpdGVNZWRpYUVuZ2luZTxXZWJSdGNWb2ljZUVuZ2luZSwgTnVsbFdlYlJ0Y1ZpZGVvRW5n
aW5lPigKLSAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShhZG0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpKSwK
LSAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgpKSB7fQorICAgICAgOiBDb21wb3Np
dGVNZWRpYUVuZ2luZShhYnNsOjptYWtlX3VuaXF1ZTxXZWJSdGNWb2ljZUVuZ2luZT4oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vi
cnRjOjpBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxOdWxsV2ViUnRjVmlkZW9FbmdpbmU+KCkp
IHt9CiB9OwogCiAvLyBTaW1wbGUgdGVzdCB0byBjaGVjayBpZiBOdWxsV2ViUnRjVmlkZW9Fbmdp
bmUgaW1wbGVtZW50cyB0aGUgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3BheWxvYWRfdHlwZV9tYXBwZXIu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdp
bmUvcGF5bG9hZF90eXBlX21hcHBlci5jYwppbmRleCA1ZDJmYjY3NTdjNDQ1YWQyMTI1MTc5MDBl
ODk0ZGM4NDA5ZGY1NjU1Li5hZTRlMzA5ZWY0OTAwZDNiOTE3Zjg5YWQwNjE4ZmRjZWQyNzIxOWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9lbmdpbmUvcGF5bG9hZF90eXBlX21hcHBlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvcGF5bG9hZF90eXBlX21hcHBl
ci5jYwpAQCAtMTIsOCArMTIsOCBAQAogCiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9hc2NpaS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9f
Zm9ybWF0LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5j
bHVkZSkKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAKIG5hbWVzcGFj
ZSBjcmlja2V0IHsKQEAgLTE0MCw3ICsxNDAsOCBAQCBib29sIFBheWxvYWRUeXBlTWFwcGVyOjpT
ZHBBdWRpb0Zvcm1hdE9yZGVyaW5nOjpvcGVyYXRvcigpKAogICAgIGNvbnN0IHdlYnJ0Yzo6U2Rw
QXVkaW9Gb3JtYXQmIGIpIGNvbnN0IHsKICAgaWYgKGEuY2xvY2tyYXRlX2h6ID09IGIuY2xvY2ty
YXRlX2h6KSB7CiAgICAgaWYgKGEubnVtX2NoYW5uZWxzID09IGIubnVtX2NoYW5uZWxzKSB7Ci0g
ICAgICBpbnQgbmFtZV9jbXAgPSBTVFJfQ0FTRV9DTVAoYS5uYW1lLmNfc3RyKCksIGIubmFtZS5j
X3N0cigpKTsKKyAgICAgIGludCBuYW1lX2NtcCA9CisgICAgICAgICAgYWJzbDo6QXNjaWlTdHJU
b0xvd2VyKGEubmFtZSkuY29tcGFyZShhYnNsOjpBc2NpaVN0clRvTG93ZXIoYi5uYW1lKSk7CiAg
ICAgICBpZiAobmFtZV9jbXAgPT0gMCkKICAgICAgICAgcmV0dXJuIGEucGFyYW1ldGVycyA8IGIu
cGFyYW1ldGVyczsKICAgICAgIHJldHVybiBuYW1lX2NtcCA8IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2NvcGVk
dmlkZW9lbmNvZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL3Njb3BlZHZpZGVvZW5jb2Rlci5jYwppbmRleCAwMjY2NTRlMDcyMDRk
MDQ0YjY5ZjVjYjg5NjY2Zjc4YjkyYWIzMWM2Li5kYjExNDhiZjMwZmUyMDA5MzA0YjU3YTc5NzJi
YjhmZjFjY2Y2MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2NvcGVkdmlkZW9lbmNvZGVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zY29wZWR2
aWRlb2VuY29kZXIuY2MKQEAgLTMzLDE0ICszMywxMCBAQCBjbGFzcyBTY29wZWRWaWRlb0VuY29k
ZXIgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXIgewogICBpbnQzMl90IEVuY29kZShjb25z
dCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLAogICAgICAgICAgICAgICAgICBjb25zdCB3ZWJy
dGM6OkNvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZvLAogICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx3ZWJydGM6OkZyYW1lVHlwZT4qIGZyYW1lX3R5cGVzKSBv
dmVycmlkZTsKLSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRf
bG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwogICBpbnQzMl90IFNldFJhdGVzKHVpbnQzMl90
IGJpdHJhdGUsIHVpbnQzMl90IGZyYW1lcmF0ZSkgb3ZlcnJpZGU7CiAgIGludDMyX3QgU2V0UmF0
ZUFsbG9jYXRpb24oY29uc3Qgd2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgb3Zl
cnJpZGU7Ci0gIFNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25zdCBvdmVy
cmlkZTsKLSAgYm9vbCBTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0IG92ZXJyaWRlOwotICBj
b25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsKLQorICBFbmNv
ZGVySW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0IG92ZXJyaWRlOwogICB+U2NvcGVkVmlkZW9F
bmNvZGVyKCkgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgpAQCAtNzUsMTEgKzcxLDYgQEAgaW50MzJf
dCBTY29wZWRWaWRlb0VuY29kZXI6OkVuY29kZSgKICAgcmV0dXJuIGVuY29kZXJfLT5FbmNvZGUo
ZnJhbWUsIGNvZGVjX3NwZWNpZmljX2luZm8sIGZyYW1lX3R5cGVzKTsKIH0KIAotaW50MzJfdCBT
Y29wZWRWaWRlb0VuY29kZXI6OlNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9s
b3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDY0X3QgcnR0KSB7Ci0gIHJldHVybiBlbmNvZGVyXy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFj
a2V0X2xvc3MsIHJ0dCk7Ci19Ci0KIGludDMyX3QgU2NvcGVkVmlkZW9FbmNvZGVyOjpTZXRSYXRl
cyh1aW50MzJfdCBiaXRyYXRlLCB1aW50MzJfdCBmcmFtZXJhdGUpIHsKICAgcmV0dXJuIGVuY29k
ZXJfLT5TZXRSYXRlcyhiaXRyYXRlLCBmcmFtZXJhdGUpOwogfQpAQCAtOTAsMTcgKzgxLDggQEAg
aW50MzJfdCBTY29wZWRWaWRlb0VuY29kZXI6OlNldFJhdGVBbGxvY2F0aW9uKAogICByZXR1cm4g
ZW5jb2Rlcl8tPlNldFJhdGVBbGxvY2F0aW9uKGFsbG9jYXRpb24sIGZyYW1lcmF0ZSk7CiB9CiAK
LXdlYnJ0Yzo6VmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgU2NvcGVkVmlkZW9FbmNvZGVy
OjpHZXRTY2FsaW5nU2V0dGluZ3MoKQotICAgIGNvbnN0IHsKLSAgcmV0dXJuIGVuY29kZXJfLT5H
ZXRTY2FsaW5nU2V0dGluZ3MoKTsKLX0KLQotYm9vbCBTY29wZWRWaWRlb0VuY29kZXI6OlN1cHBv
cnRzTmF0aXZlSGFuZGxlKCkgY29uc3QgewotICByZXR1cm4gZW5jb2Rlcl8tPlN1cHBvcnRzTmF0
aXZlSGFuZGxlKCk7Ci19Ci0KLWNvbnN0IGNoYXIqIFNjb3BlZFZpZGVvRW5jb2Rlcjo6SW1wbGVt
ZW50YXRpb25OYW1lKCkgY29uc3QgewotICByZXR1cm4gZW5jb2Rlcl8tPkltcGxlbWVudGF0aW9u
TmFtZSgpOword2VicnRjOjpWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIFNjb3BlZFZpZGVvRW5j
b2Rlcjo6R2V0RW5jb2RlckluZm8oKSBjb25zdCB7CisgIHJldHVybiBlbmNvZGVyXy0+R2V0RW5j
b2RlckluZm8oKTsKIH0KIAogU2NvcGVkVmlkZW9FbmNvZGVyOjp+U2NvcGVkVmlkZW9FbmNvZGVy
KCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3QuY2MKaW5kZXggYzQyZTFkY2Fl
MjkwODQwYTliMzk4Y2M4MzBkMTJjODFjZjYxNjFjNi4uZGUzZDhkZjA5N2YxNTA1ZDAxZjY0Y2Uz
MGZlN2E2ZTAyMmRjMGZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0LmNj
CkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3NpbXVsY2FzdC5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJz
L2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIApAQCAtMTQwLDcgKzE0MSwxMyBAQCBpbnQgRmluZFNp
bXVsY2FzdEZvcm1hdEluZGV4KGludCB3aWR0aCwgaW50IGhlaWdodCwgc2l6ZV90IG1heF9sYXll
cnMpIHsKIC8vIFNpbXVsY2FzdCBzdHJlYW0gd2lkdGggYW5kIGhlaWdodCBtdXN0IGJvdGggYmUg
ZGl2aWRhYmxlIGJ5CiAvLyB8MiBeIChzaW11bGNhc3RfbGF5ZXJzIC0gMSl8LgogaW50IE5vcm1h
bGl6ZVNpbXVsY2FzdFNpemUoaW50IHNpemUsIHNpemVfdCBzaW11bGNhc3RfbGF5ZXJzKSB7Ci0g
IGNvbnN0IGludCBiYXNlMl9leHBvbmVudCA9IHN0YXRpY19jYXN0PGludD4oc2ltdWxjYXN0X2xh
eWVycykgLSAxOworICBpbnQgYmFzZTJfZXhwb25lbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpbXVs
Y2FzdF9sYXllcnMpIC0gMTsKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiBleHBlcmltZW50
YWxfYmFzZTJfZXhwb25lbnQgPQorICAgICAgd2VicnRjOjpOb3JtYWxpemVTaW11bGNhc3RTaXpl
RXhwZXJpbWVudDo6R2V0QmFzZTJFeHBvbmVudCgpOworICBpZiAoZXhwZXJpbWVudGFsX2Jhc2Uy
X2V4cG9uZW50ICYmCisgICAgICAoc2l6ZSA+ICgxIDw8ICpleHBlcmltZW50YWxfYmFzZTJfZXhw
b25lbnQpKSkgeworICAgIGJhc2UyX2V4cG9uZW50ID0gKmV4cGVyaW1lbnRhbF9iYXNlMl9leHBv
bmVudDsKKyAgfQogICByZXR1cm4gKChzaXplID4+IGJhc2UyX2V4cG9uZW50KSA8PCBiYXNlMl9l
eHBvbmVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3Np
bXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIuY2MKaW5kZXggMzBkYTY4ZWM4NWNhOGI3ZmEwZGU3MWE3
MWM2NWI4Y2Q0ZDE3MjVjOC4uNjI0MWZmOWQzNmQ2OTFkMDM5Y2RmZWM2YzZjNjY2NjEyMmQ1OTY3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdF9l
bmNvZGVyX2FkYXB0ZXIuY2MKQEAgLTE3LDkgKzE3LDkgQEAKICNpbmNsdWRlICJhcGkvdmlkZW8v
aTQyMF9idWZmZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0
aW9uLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3Rvcnku
aCIKLSNpbmNsdWRlICJtZWRpYS9lbmdpbmUvc2NvcGVkdmlkZW9lbmNvZGVyLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKICNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRo
aXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9zY2FsZS5oIgpAQCAtMTI3LDkgKzEyNyw5
IEBAIFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpTaW11bGNhc3RFbmNvZGVyQWRhcHRlcihWaWRl
b0VuY29kZXJGYWN0b3J5KiBmYWN0b3J5LAogICAgICAgZmFjdG9yeV8oZmFjdG9yeSksCiAgICAg
ICB2aWRlb19mb3JtYXRfKGZvcm1hdCksCiAgICAgICBlbmNvZGVkX2NvbXBsZXRlX2NhbGxiYWNr
XyhudWxscHRyKSwKLSAgICAgIGltcGxlbWVudGF0aW9uX25hbWVfKCJTaW11bGNhc3RFbmNvZGVy
QWRhcHRlciIpLAogICAgICAgZXhwZXJpbWVudGFsX2Jvb3N0ZWRfc2NyZWVuc2hhcmVfcXBfKEdl
dFNjcmVlbnNoYXJlQm9vc3RlZFFwVmFsdWUoKSkgewogICBSVENfRENIRUNLKGZhY3RvcnlfKTsK
KyAgZW5jb2Rlcl9pbmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lID0gIlNpbXVsY2FzdEVuY29kZXJB
ZGFwdGVyIjsKIAogICAvLyBUaGUgYWRhcHRlciBpcyB0eXBpY2FsbHkgY3JlYXRlZCBvbiB0aGUg
d29ya2VyIHRocmVhZCwgYnV0IG9wZXJhdGVkIG9uCiAgIC8vIHRoZSBlbmNvZGVyIHRhc2sgcXVl
dWUuCkBAIC0yMDMsNyArMjAzLDggQEAgaW50IFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpJbml0
RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsCiAgICAgc3RhcnRfYml0cmF0ZXMucHVzaF9i
YWNrKHN0cmVhbV9iaXRyYXRlKTsKICAgfQogCi0gIHN0ZDo6c3RyaW5nIGltcGxlbWVudGF0aW9u
X25hbWU7CisgIGVuY29kZXJfaW5mb18uc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSA9IHRydWU7Cisg
IGVuY29kZXJfaW5mb18uc2NhbGluZ19zZXR0aW5ncy50aHJlc2hvbGRzID0gYWJzbDo6bnVsbG9w
dDsKICAgLy8gQ3JlYXRlIHxudW1iZXJfb2Zfc3RyZWFtc3wgb2YgZW5jb2RlciBpbnN0YW5jZXMg
YW5kIGluaXQgdGhlbS4KICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJfb2Zfc3RyZWFtczsg
KytpKSB7CiAgICAgVmlkZW9Db2RlYyBzdHJlYW1fY29kZWM7CkBAIC0yMTIsNiArMjEzLDcgQEAg
aW50IFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMq
IGluc3QsCiAgICAgaWYgKCFkb2luZ19zaW11bGNhc3QpIHsKICAgICAgIHN0cmVhbV9jb2RlYyA9
IGNvZGVjXzsKICAgICAgIHN0cmVhbV9jb2RlYy5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMgPSAx
OworCiAgICAgfSBlbHNlIHsKICAgICAgIC8vIENhcCBzdGFydCBiaXRyYXRlIHRvIHRoZSBtaW4g
Yml0cmF0ZSBpbiBvcmRlciB0byBhdm9pZCBzdHJhbmdlIGNvZGVjCiAgICAgICAvLyBiZWhhdmlv
ci4gU2luY2Ugc2VuZGluZyB3aWxsIGJlIGZhbHNlLCB0aGlzIHNob3VsZCBub3QgbWF0dGVyLgpA
QCAtMjQ3LDYgKzI0OSw3IEBAIGludCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6SW5pdEVuY29k
ZShjb25zdCBWaWRlb0NvZGVjKiBpbnN0LAogICAgICAgUmVsZWFzZSgpOwogICAgICAgcmV0dXJu
IHJldDsKICAgICB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZEltYWdlQ2FsbGJhY2s+
IGNhbGxiYWNrKAogICAgICAgICBuZXcgQWRhcHRlckVuY29kZWRJbWFnZUNhbGxiYWNrKHRoaXMs
IGkpKTsKICAgICBlbmNvZGVyLT5SZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soY2FsbGJh
Y2suZ2V0KCkpOwpAQCAtMjU0LDE3ICsyNTcsNDUgQEAgaW50IFNpbXVsY2FzdEVuY29kZXJBZGFw
dGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJlYW1fY29kZWMud2lkdGgsIHN0cmVhbV9jb2RlYy5oZWlnaHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX3N0cmVhbSk7CiAKLSAgICBpZiAoaSAh
PSAwKSB7Ci0gICAgICBpbXBsZW1lbnRhdGlvbl9uYW1lICs9ICIsICI7CisgICAgaWYgKCFkb2lu
Z19zaW11bGNhc3QpIHsKKyAgICAgIC8vIFdpdGhvdXQgc2ltdWxjYXN0LCBqdXN0IHBhc3MgdGhy
b3VnaCB0aGUgZW5jb2RlciBpbmZvIGZyb20gdGhlIG9uZQorICAgICAgLy8gYWN0aXZlIGVuY29k
ZXIuCisgICAgICBlbmNvZGVyX2luZm9fID0gc3RyZWFtaW5mb3NfWzBdLmVuY29kZXItPkdldEVu
Y29kZXJJbmZvKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGNvbnN0IEVuY29kZXJJbmZvIGVuY29k
ZXJfaW1wbF9pbmZvID0KKyAgICAgICAgICBzdHJlYW1pbmZvc19baV0uZW5jb2Rlci0+R2V0RW5j
b2RlckluZm8oKTsKKworICAgICAgaWYgKGkgPT0gMCkgeworICAgICAgICAvLyBRdWFsaXR5IHNj
YWxpbmcgbm90IGVuYWJsZWQgZm9yIHNpbXVsY2FzdC4KKyAgICAgICAgZW5jb2Rlcl9pbmZvXy5z
Y2FsaW5nX3NldHRpbmdzID0gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtPZmY7CisK
KyAgICAgICAgLy8gRW5jb2RlciBuYW1lIGluZGljYXRlcyBuYW1lcyBvZiBhbGwgc3ViLWVuY29k
ZXJzLgorICAgICAgICBlbmNvZGVyX2luZm9fLmltcGxlbWVudGF0aW9uX25hbWUgPSAiU2ltdWxj
YXN0RW5jb2RlckFkYXB0ZXIgKCI7CisgICAgICAgIGVuY29kZXJfaW5mb18uaW1wbGVtZW50YXRp
b25fbmFtZSArPQorICAgICAgICAgICAgZW5jb2Rlcl9pbXBsX2luZm8uaW1wbGVtZW50YXRpb25f
bmFtZTsKKworICAgICAgICBlbmNvZGVyX2luZm9fLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPQor
ICAgICAgICAgICAgZW5jb2Rlcl9pbXBsX2luZm8uc3VwcG9ydHNfbmF0aXZlX2hhbmRsZTsKKyAg
ICAgICAgZW5jb2Rlcl9pbmZvXy5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIgPQorICAgICAg
ICAgICAgZW5jb2Rlcl9pbXBsX2luZm8uaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgZW5jb2Rlcl9pbmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lICs9
ICIsICI7CisgICAgICAgIGVuY29kZXJfaW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSArPQorICAg
ICAgICAgICAgZW5jb2Rlcl9pbXBsX2luZm8uaW1wbGVtZW50YXRpb25fbmFtZTsKKworICAgICAg
ICAvLyBOYXRpdmUgaGFuZGxlIHN1cHBvcnRlZCBvbmx5IGlmIGFsbCBlbmNvZGVycyBzdXBwb3J0
cyBpdC4KKyAgICAgICAgZW5jb2Rlcl9pbmZvXy5zdXBwb3J0c19uYXRpdmVfaGFuZGxlICY9Cisg
ICAgICAgICAgICBlbmNvZGVyX2ltcGxfaW5mby5zdXBwb3J0c19uYXRpdmVfaGFuZGxlOworCisg
ICAgICAgIC8vIFRydXN0ZWQgcmF0ZSBjb250cm9sbGVyIG9ubHkgaWYgYWxsIGVuY29kZXJzIGhh
dmUgaXQuCisgICAgICAgIGVuY29kZXJfaW5mb18uaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVy
ICY9CisgICAgICAgICAgICBlbmNvZGVyX2ltcGxfaW5mby5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRy
b2xsZXI7CisgICAgICB9CiAgICAgfQotICAgIGltcGxlbWVudGF0aW9uX25hbWUgKz0gc3RyZWFt
aW5mb3NfW2ldLmVuY29kZXItPkltcGxlbWVudGF0aW9uTmFtZSgpOwogICB9CiAKICAgaWYgKGRv
aW5nX3NpbXVsY2FzdCkgewotICAgIGltcGxlbWVudGF0aW9uX25hbWVfID0KLSAgICAgICAgIlNp
bXVsY2FzdEVuY29kZXJBZGFwdGVyICgiICsgaW1wbGVtZW50YXRpb25fbmFtZSArICIpIjsKLSAg
fSBlbHNlIHsKLSAgICBpbXBsZW1lbnRhdGlvbl9uYW1lXyA9IGltcGxlbWVudGF0aW9uX25hbWU7
CisgICAgZW5jb2Rlcl9pbmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lICs9ICIpIjsKICAgfQogCiAg
IC8vIFRvIHNhdmUgbWVtb3J5LCBkb24ndCBzdG9yZSBlbmNvZGVycyB0aGF0IHdlIGRvbid0IHVz
ZS4KQEAgLTM3NywxNSArNDA4LDYgQEAgaW50IFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpSZWdp
c3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNf
T0s7CiB9CiAKLWludCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6U2V0Q2hhbm5lbFBhcmFtZXRl
cnModWludDMyX3QgcGFja2V0X2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0KSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NF
UVVFTlRJQUxMWSgmZW5jb2Rlcl9xdWV1ZV8pOwotICBmb3IgKHNpemVfdCBzdHJlYW1faWR4ID0g
MDsgc3RyZWFtX2lkeCA8IHN0cmVhbWluZm9zXy5zaXplKCk7ICsrc3RyZWFtX2lkeCkgewotICAg
IHN0cmVhbWluZm9zX1tzdHJlYW1faWR4XS5lbmNvZGVyLT5TZXRDaGFubmVsUGFyYW1ldGVycyhw
YWNrZXRfbG9zcywgcnR0KTsKLSAgfQotICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwot
fQotCiBpbnQgU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXI6OlNldFJhdGVBbGxvY2F0aW9uKAogICAg
IGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGJpdHJhdGUsCiAgICAgdWludDMyX3QgbmV3
X2ZyYW1lcmF0ZSkgewpAQCAtNDUyLDcgKzQ3NCw2IEBAIEVuY29kZWRJbWFnZUNhbGxiYWNrOjpS
ZXN1bHQgU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXI6Ok9uRW5jb2RlZEltYWdlKAogICAgIGNvbnN0
IFJUUEZyYWdtZW50YXRpb25IZWFkZXIqIGZyYWdtZW50YXRpb24pIHsKICAgRW5jb2RlZEltYWdl
IHN0cmVhbV9pbWFnZShlbmNvZGVkSW1hZ2UpOwogICBDb2RlY1NwZWNpZmljSW5mbyBzdHJlYW1f
Y29kZWNfc3BlY2lmaWMgPSAqY29kZWNTcGVjaWZpY0luZm87Ci0gIHN0cmVhbV9jb2RlY19zcGVj
aWZpYy5jb2RlY19uYW1lID0gaW1wbGVtZW50YXRpb25fbmFtZV8uY19zdHIoKTsKIAogICBzdHJl
YW1faW1hZ2UuU2V0U3BhdGlhbEluZGV4KHN0cmVhbV9pZHgpOwogCkBAIC01MTcsMzIgKzUzOCw4
IEBAIHZvaWQgU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXI6OkRlc3Ryb3lTdG9yZWRFbmNvZGVycygp
IHsKICAgfQogfQogCi1ib29sIFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpTdXBwb3J0c05hdGl2
ZUhhbmRsZSgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZlbmNv
ZGVyX3F1ZXVlXyk7Ci0gIC8vIFdlIHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzIG1ldGhvZCBi
ZWZvcmUgc3RyZWFtaW5mb3NfIGFyZSBjb25maWd1cmVkLgotICBSVENfRENIRUNLKCFzdHJlYW1p
bmZvc18uZW1wdHkoKSk7Ci0gIGZvciAoY29uc3QgYXV0byYgc3RyZWFtaW5mbyA6IHN0cmVhbWlu
Zm9zXykgewotICAgIGlmICghc3RyZWFtaW5mby5lbmNvZGVyLT5TdXBwb3J0c05hdGl2ZUhhbmRs
ZSgpKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0gIHJldHVybiB0cnVlOwot
fQotCi1WaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBTaW11bGNhc3RFbmNvZGVyQWRhcHRl
cjo6R2V0U2NhbGluZ1NldHRpbmdzKCkKLSAgICBjb25zdCB7Ci0gIC8vIFRPRE8oYnJhbmR0cik6
IEludmVzdGlnYXRlIHdoeSB0aGUgc2VxdWVuY2UgY2hlY2tlciBiZWxvdyBmYWlscyBvbiBtYWMu
Ci0gIC8vIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmZW5jb2Rlcl9xdWV1ZV8pOwot
ICAvLyBUdXJuIG9mZiBxdWFsaXR5IHNjYWxpbmcgZm9yIHNpbXVsY2FzdC4KLSAgaWYgKCFJbml0
aWFsaXplZCgpIHx8IE51bWJlck9mU3RyZWFtcyhjb2RlY18pICE9IDEpIHsKLSAgICByZXR1cm4g
VmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtPZmY7Ci0gIH0KLSAgcmV0dXJuIHN0cmVh
bWluZm9zX1swXS5lbmNvZGVyLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKLX0KLQotY29uc3QgY2hh
ciogU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXI6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsK
LSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZlbmNvZGVyX3F1ZXVlXyk7Ci0gIHJl
dHVybiBpbXBsZW1lbnRhdGlvbl9uYW1lXy5jX3N0cigpOworVmlkZW9FbmNvZGVyOjpFbmNvZGVy
SW5mbyBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6R2V0RW5jb2RlckluZm8oKSBjb25zdCB7Cisg
IHJldHVybiBlbmNvZGVyX2luZm9fOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0
ZXIuaAppbmRleCA1MjY0M2FhNzliMTYyNzAwMTlmNTk2ZTc4OWRhYWU5OTU5MWE5NGI1Li43ODNj
MzQyZDZiOWZjNGEyODliZTc3NThhZjkzYWRjNjRkZGQ3YzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0
X2VuY29kZXJfYWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmgKQEAgLTE5
LDcgKzE5LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCi0jaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3Rv
cnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFj
ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3NlcXVlbmNlZF90YXNrX2NoZWNrZXIuaCIKQEAgLTQ4LDcgKzQ4LDYgQEAgY2xhc3MgU2ltdWxj
YXN0RW5jb2RlckFkYXB0ZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgICAgICAgICAgICBj
b25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+KiBmcmFtZV90eXBlcykgb3ZlcnJpZGU7CiAg
IGludCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soRW5jb2RlZEltYWdlQ2FsbGJhY2sq
IGNhbGxiYWNrKSBvdmVycmlkZTsKLSAgaW50IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90
IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CiAgIGludCBTZXRSYXRlQWxsb2Nh
dGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgbmV3X2ZyYW1lcmF0ZSkgb3ZlcnJpZGU7CiAKQEAgLTYxLDEw
ICs2MCw3IEBAIGNsYXNzIFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyIDogcHVibGljIFZpZGVvRW5j
b2RlciB7CiAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5m
bywKICAgICAgIGNvbnN0IFJUUEZyYWdtZW50YXRpb25IZWFkZXIqIGZyYWdtZW50YXRpb24pOwog
Ci0gIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNv
bnN0IG92ZXJyaWRlOwotCi0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICBwcml2
YXRlOgogICBzdHJ1Y3QgU3RyZWFtSW5mbyB7CkBAIC0xMDQsNyArMTAwLDcgQEAgY2xhc3MgU2lt
dWxjYXN0RW5jb2RlckFkYXB0ZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgVmlkZW9Db2Rl
YyBjb2RlY187CiAgIHN0ZDo6dmVjdG9yPFN0cmVhbUluZm8+IHN0cmVhbWluZm9zXzsKICAgRW5j
b2RlZEltYWdlQ2FsbGJhY2sqIGVuY29kZWRfY29tcGxldGVfY2FsbGJhY2tfOwotICBzdGQ6OnN0
cmluZyBpbXBsZW1lbnRhdGlvbl9uYW1lXzsKKyAgRW5jb2RlckluZm8gZW5jb2Rlcl9pbmZvXzsK
IAogICAvLyBVc2VkIGZvciBjaGVja2luZyB0aGUgc2luZ2xlLXRocmVhZGVkIGFjY2VzcyBvZiB0
aGUgZW5jb2RlciBpbnRlcmZhY2UuCiAgIHJ0Yzo6U2VxdWVuY2VkVGFza0NoZWNrZXIgZW5jb2Rl
cl9xdWV1ZV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlcl91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyX3VuaXR0ZXN0LmNjCmluZGV4IDViN2QxODViOGNj
NmViYWEyYzI0NDg4MGVjMzRlMDVlNjBmYjhmYzMuLjU5NTQxNzU1ZmE1MWRjMzc3YjZlM2U2Mzcx
MGI0MzNlYmMzMzRiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyX3VuaXR0ZXN0LmNjCkBAIC0xNSwx
NiArMTUsMTcgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJh
cGkvdGVzdC9jcmVhdGVfc2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oIgogI2luY2x1ZGUgImFwaS90
ZXN0L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9m
dW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRl
by9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9f
Y29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3Zp
ZGVvX2ZyYW1lX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMu
aCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIm1lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdGVzdF9m
aXh0dXJlX2ltcGwuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFj
dG9yeS5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIApAQCAt
NTUsNyArNTYsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2ltdWxjYXN0VGVzdEZpeHR1cmU+IENyZWF0
ZVNwZWNpZmljU2ltdWxjYXN0VGVzdEZpeHR1cmUoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1vdmUoZGVjb2Rlcl9mYWN0b3J5KSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNkcFZpZGVvRm9ybWF0KGNyaWNrZXQ6OmtWcDhDb2RlY05hbWUp
KTsKIH0KLQogfSAgLy8gbmFtZXNwYWNlCiAKIFRFU1QoU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJT
aW11bGNhc3RUZXN0LCBUZXN0S2V5RnJhbWVSZXF1ZXN0c09uQWxsU3RyZWFtcykgewpAQCAtMTQ0
LDYgKzE0NCwxMiBAQCBURVNUKFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyU2ltdWxjYXN0VGVzdCwK
ICAgZml4dHVyZS0+VGVzdFNwYXRpb1RlbXBvcmFsTGF5ZXJzMzIxUGF0dGVybkVuY29kZXIoKTsK
IH0KIAorVEVTVChTaW11bGNhc3RFbmNvZGVyQWRhcHRlclNpbXVsY2FzdFRlc3QsIFRlc3REZWNv
ZGVXaWR0aEhlaWdodFNldCkgeworICBJbnRlcm5hbEVuY29kZXJGYWN0b3J5IGludGVybmFsX2Vu
Y29kZXJfZmFjdG9yeTsKKyAgYXV0byBmaXh0dXJlID0gQ3JlYXRlU3BlY2lmaWNTaW11bGNhc3RU
ZXN0Rml4dHVyZSgmaW50ZXJuYWxfZW5jb2Rlcl9mYWN0b3J5KTsKKyAgZml4dHVyZS0+VGVzdERl
Y29kZVdpZHRoSGVpZ2h0U2V0KCk7Cit9CisKIGNsYXNzIE1vY2tWaWRlb0VuY29kZXI7CiAKIGNs
YXNzIE1vY2tWaWRlb0VuY29kZXJGYWN0b3J5IDogcHVibGljIFZpZGVvRW5jb2RlckZhY3Rvcnkg
ewpAQCAtMTcwLDcgKzE3Niw5IEBAIGNsYXNzIE1vY2tWaWRlb0VuY29kZXJGYWN0b3J5IDogcHVi
bGljIFZpZGVvRW5jb2RlckZhY3RvcnkgewogY2xhc3MgTW9ja1ZpZGVvRW5jb2RlciA6IHB1Ymxp
YyBWaWRlb0VuY29kZXIgewogIHB1YmxpYzoKICAgZXhwbGljaXQgTW9ja1ZpZGVvRW5jb2RlcihN
b2NrVmlkZW9FbmNvZGVyRmFjdG9yeSogZmFjdG9yeSkKLSAgICAgIDogZmFjdG9yeV8oZmFjdG9y
eSksIGNhbGxiYWNrXyhudWxscHRyKSB7fQorICAgICAgOiBmYWN0b3J5XyhmYWN0b3J5KSwKKyAg
ICAgICAgc2NhbGluZ19zZXR0aW5nc18oVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtP
ZmYpLAorICAgICAgICBjYWxsYmFja18obnVsbHB0cikge30KIAogICAvLyBUT0RPKG5pc3NlKTog
VmFsaWQgb3ZlcnJpZGVzIGNvbW1lbnRlZCBvdXQsIGJlY2F1c2UgdGhlIGdtb2NrCiAgIC8vIG1l
dGhvZHMgZG9uJ3QgdXNlIGFueSBvdmVycmlkZSBkZWNsYXJhdGlvbnMsIGFuZCB3ZSB3YW50IHRv
IGF2b2lkCkBAIC0yMDMsMTAgKzIxMSwxMyBAQCBjbGFzcyBNb2NrVmlkZW9FbmNvZGVyIDogcHVi
bGljIFZpZGVvRW5jb2RlciB7CiAgICAgcmV0dXJuIDA7CiAgIH0KIAotICBNT0NLX01FVEhPRDIo
U2V0Q2hhbm5lbFBhcmFtZXRlcnMsIGludDMyX3QodWludDMyX3QgcGFja2V0TG9zcywgaW50NjRf
dCBydHQpKTsKLQotICBib29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3QgLyogb3ZlcnJp
ZGUgKi8gewotICAgIHJldHVybiBzdXBwb3J0c19uYXRpdmVfaGFuZGxlXzsKKyAgRW5jb2Rlcklu
Zm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZSB7CisgICAgRW5jb2RlckluZm8gaW5m
bzsKKyAgICBpbmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBzdXBwb3J0c19uYXRpdmVfaGFu
ZGxlXzsKKyAgICBpbmZvLmltcGxlbWVudGF0aW9uX25hbWUgPSBpbXBsZW1lbnRhdGlvbl9uYW1l
XzsKKyAgICBpbmZvLnNjYWxpbmdfc2V0dGluZ3MgPSBzY2FsaW5nX3NldHRpbmdzXzsKKyAgICBp
bmZvLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlciA9IGhhc190cnVzdGVkX3JhdGVfY29udHJv
bGxlcl87CisgICAgcmV0dXJuIGluZm87CiAgIH0KIAogICB2aXJ0dWFsIH5Nb2NrVmlkZW9FbmNv
ZGVyKCkgeyBmYWN0b3J5Xy0+RGVzdHJveVZpZGVvRW5jb2Rlcih0aGlzKTsgfQpAQCAtMjI4LDE3
ICsyMzksMzAgQEAgY2xhc3MgTW9ja1ZpZGVvRW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIg
ewogICAgIHN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfID0gZW5hYmxlZDsKICAgfQogCisgIHZvaWQg
c2V0X2ltcGxlbWVudGF0aW9uX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIHsKKyAgICBp
bXBsZW1lbnRhdGlvbl9uYW1lXyA9IG5hbWU7CisgIH0KKwogICB2b2lkIHNldF9pbml0X2VuY29k
ZV9yZXR1cm5fdmFsdWUoaW50MzJfdCB2YWx1ZSkgewogICAgIGluaXRfZW5jb2RlX3JldHVybl92
YWx1ZV8gPSB2YWx1ZTsKICAgfQogCi0gIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gbGFzdF9zZXRf
Yml0cmF0ZSgpIGNvbnN0IHsgcmV0dXJuIGxhc3Rfc2V0X2JpdHJhdGVfOyB9CisgIHZvaWQgc2V0
X3NjYWxpbmdfc2V0dGluZ3MoY29uc3QgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MmIHNl
dHRpbmdzKSB7CisgICAgc2NhbGluZ19zZXR0aW5nc18gPSBzZXR0aW5nczsKKyAgfQogCi0gIE1P
Q0tfQ09OU1RfTUVUSE9EMChJbXBsZW1lbnRhdGlvbk5hbWUsIGNvbnN0IGNoYXIqKCkpOworICB2
b2lkIHNldF9oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIoYm9vbCB0cnVzdGVkKSB7CisgICAg
aGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyXyA9IHRydXN0ZWQ7CisgIH0KKworICBWaWRlb0Jp
dHJhdGVBbGxvY2F0aW9uIGxhc3Rfc2V0X2JpdHJhdGUoKSBjb25zdCB7IHJldHVybiBsYXN0X3Nl
dF9iaXRyYXRlXzsgfQogCiAgcHJpdmF0ZToKICAgTW9ja1ZpZGVvRW5jb2RlckZhY3RvcnkqIGNv
bnN0IGZhY3RvcnlfOwogICBib29sIHN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfID0gZmFsc2U7Cisg
IHN0ZDo6c3RyaW5nIGltcGxlbWVudGF0aW9uX25hbWVfID0gInVua25vd24iOworICBWaWRlb0Vu
Y29kZXI6OlNjYWxpbmdTZXR0aW5ncyBzY2FsaW5nX3NldHRpbmdzXzsKKyAgYm9vbCBoYXNfdHJ1
c3RlZF9yYXRlX2NvbnRyb2xsZXJfID0gZmFsc2U7CiAgIGludDMyX3QgaW5pdF9lbmNvZGVfcmV0
dXJuX3ZhbHVlXyA9IDA7CiAgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gbGFzdF9zZXRfYml0cmF0
ZV87CiAKQEAgLTI2MCw3ICsyODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBN
b2NrVmlkZW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9FbmNvZGVyKAogICBjb25zdCBjaGFy
KiBlbmNvZGVyX25hbWUgPSBlbmNvZGVyX25hbWVzXy5lbXB0eSgpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA/ICJjb2RlY19pbXBsZW1lbnRhdGlvbl9uYW1lIgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBlbmNvZGVyX25hbWVzX1tlbmNvZGVyc18uc2l6ZSgp
XTsKLSAgT05fQ0FMTCgqZW5jb2RlciwgSW1wbGVtZW50YXRpb25OYW1lKCkpLldpbGxCeURlZmF1
bHQoUmV0dXJuKGVuY29kZXJfbmFtZSkpOworICBlbmNvZGVyLT5zZXRfaW1wbGVtZW50YXRpb25f
bmFtZShlbmNvZGVyX25hbWUpOwogICBlbmNvZGVyc18ucHVzaF9iYWNrKGVuY29kZXIuZ2V0KCkp
OwogICByZXR1cm4gZW5jb2RlcjsKIH0KQEAgLTMwMiwxNSArMzI2LDYgQEAgY2xhc3MgVGVzdFNp
bXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZUhlbHBlciB7CiAgICAgcmV0dXJuIG5ldyBTaW11bGNh
c3RFbmNvZGVyQWRhcHRlcihmYWN0b3J5Xy5nZXQoKSwgU2RwVmlkZW9Gb3JtYXQoIlZQOCIpKTsK
ICAgfQogCi0gIHZvaWQgRXhwZWN0Q2FsbFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBh
Y2tldExvc3MsIGludDY0X3QgcnR0KSB7Ci0gICAgRVhQRUNUX1RSVUUoIWZhY3RvcnlfLT5lbmNv
ZGVycygpLmVtcHR5KCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmFjdG9yeV8tPmVu
Y29kZXJzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgIEVYUEVDVF9DQUxMKCpmYWN0b3J5Xy0+ZW5j
b2RlcnMoKVtpXSwKLSAgICAgICAgICAgICAgICAgIFNldENoYW5uZWxQYXJhbWV0ZXJzKHBhY2tl
dExvc3MsIHJ0dCkpCi0gICAgICAgICAgLlRpbWVzKDEpOwotICAgIH0KLSAgfQotCiAgIE1vY2tW
aWRlb0VuY29kZXJGYWN0b3J5KiBmYWN0b3J5KCkgeyByZXR1cm4gZmFjdG9yeV8uZ2V0KCk7IH0K
IAogIHByaXZhdGU6CkBAIC00NTksMTQgKzQ3NCw2IEBAIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5j
b2RlckFkYXB0ZXJGYWtlLCBSZWluaXQpIHsKICAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJfLT5Jbml0
RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsKIH0KIAotVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNv
ZGVyQWRhcHRlckZha2UsIFNldENoYW5uZWxQYXJhbWV0ZXJzKSB7Ci0gIFNldHVwQ29kZWMoKTsK
LSAgY29uc3QgdWludDMyX3QgcGFja2V0TG9zcyA9IDU7Ci0gIGNvbnN0IGludDY0X3QgcnR0ID0g
MzA7Ci0gIGhlbHBlcl8tPkV4cGVjdENhbGxTZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRMb3Nz
LCBydHQpOwotICBhZGFwdGVyXy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0TG9zcywgcnR0
KTsKLX0KLQogVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2UsIEVuY29kZWRD
YWxsYmFja0ZvckRpZmZlcmVudEVuY29kZXJzKSB7CiAgIFNldHVwQ29kZWMoKTsKIApAQCAtNzI4
LDkgKzczNSwxMSBAQCBURVNUX0YoVGVzdFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZSwgU3Vw
cG9ydHNOYXRpdmVIYW5kbGVGb3JTaW5nbGVTdHJlYW1zKSB7CiAgIGFkYXB0ZXJfLT5SZWdpc3Rl
ckVuY29kZUNvbXBsZXRlQ2FsbGJhY2sodGhpcyk7CiAgIEFTU0VSVF9FUSgxdSwgaGVscGVyXy0+
ZmFjdG9yeSgpLT5lbmNvZGVycygpLnNpemUoKSk7CiAgIGhlbHBlcl8tPmZhY3RvcnkoKS0+ZW5j
b2RlcnMoKVswXS0+c2V0X3N1cHBvcnRzX25hdGl2ZV9oYW5kbGUodHJ1ZSk7Ci0gIEVYUEVDVF9U
UlVFKGFkYXB0ZXJfLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgpKTsKKyAgRVhQRUNUX0VRKDAsIGFk
YXB0ZXJfLT5Jbml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsKKyAgRVhQRUNUX1RSVUUoYWRh
cHRlcl8tPkdldEVuY29kZXJJbmZvKCkuc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSk7CiAgIGhlbHBl
cl8tPmZhY3RvcnkoKS0+ZW5jb2RlcnMoKVswXS0+c2V0X3N1cHBvcnRzX25hdGl2ZV9oYW5kbGUo
ZmFsc2UpOwotICBFWFBFQ1RfRkFMU0UoYWRhcHRlcl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCkp
OworICBFWFBFQ1RfRVEoMCwgYWRhcHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwgMTIwMCkp
OworICBFWFBFQ1RfRkFMU0UoYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCkuc3VwcG9ydHNfbmF0
aXZlX2hhbmRsZSk7CiB9CiAKIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtl
LCBTZXRSYXRlc1VuZGVyTWluQml0cmF0ZSkgewpAQCAtNzYzLDcgKzc3Miw4IEBAIFRFU1RfRihU
ZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBTZXRSYXRlc1VuZGVyTWluQml0cmF0ZSkg
ewogfQogCiBURVNUX0YoVGVzdFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZSwgU3VwcG9ydHNJ
bXBsZW1lbnRhdGlvbk5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJTaW11bGNhc3RFbmNvZGVyQWRh
cHRlciIsIGFkYXB0ZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKSk7CisgIEVYUEVDVF9FUSgiU2lt
dWxjYXN0RW5jb2RlckFkYXB0ZXIiLAorICAgICAgICAgICAgYWRhcHRlcl8tPkdldEVuY29kZXJJ
bmZvKCkuaW1wbGVtZW50YXRpb25fbmFtZSk7CiAgIFNpbXVsY2FzdFRlc3RGaXh0dXJlSW1wbDo6
RGVmYXVsdFNldHRpbmdzKAogICAgICAgJmNvZGVjXywgc3RhdGljX2Nhc3Q8Y29uc3QgaW50Kj4o
a1Rlc3RUZW1wb3JhbExheWVyUHJvZmlsZSksCiAgICAgICBrVmlkZW9Db2RlY1ZQOCk7CkBAIC03
NzMsOCArNzgzLDggQEAgVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2UsIFN1
cHBvcnRzSW1wbGVtZW50YXRpb25OYW1lKSB7CiAgIGVuY29kZXJfbmFtZXMucHVzaF9iYWNrKCJj
b2RlYzMiKTsKICAgaGVscGVyXy0+ZmFjdG9yeSgpLT5TZXRFbmNvZGVyTmFtZXMoZW5jb2Rlcl9u
YW1lcyk7CiAgIEVYUEVDVF9FUSgwLCBhZGFwdGVyXy0+SW5pdEVuY29kZSgmY29kZWNfLCAxLCAx
MjAwKSk7Ci0gIEVYUEVDVF9TVFJFUSgiU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXIgKGNvZGVjMSwg
Y29kZWMyLCBjb2RlYzMpIiwKLSAgICAgICAgICAgICAgIGFkYXB0ZXJfLT5JbXBsZW1lbnRhdGlv
bk5hbWUoKSk7CisgIEVYUEVDVF9FUSgiU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXIgKGNvZGVjMSwg
Y29kZWMyLCBjb2RlYzMpIiwKKyAgICAgICAgICAgIGFkYXB0ZXJfLT5HZXRFbmNvZGVySW5mbygp
LmltcGxlbWVudGF0aW9uX25hbWUpOwogCiAgIC8vIFNpbmdsZSBzdHJlYW1zIHNob3VsZCBub3Qg
ZXhwb3NlICJTaW11bGNhc3RFbmNvZGVyQWRhcHRlciIgaW4gbmFtZS4KICAgRVhQRUNUX0VRKDAs
IGFkYXB0ZXJfLT5SZWxlYXNlKCkpOwpAQCAtNzgyLDcgKzc5Miw3IEBAIFRFU1RfRihUZXN0U2lt
dWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBTdXBwb3J0c0ltcGxlbWVudGF0aW9uTmFtZSkgewog
ICBFWFBFQ1RfRVEoMCwgYWRhcHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwgMTIwMCkpOwog
ICBhZGFwdGVyXy0+UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKHRoaXMpOwogICBBU1NF
UlRfRVEoMXUsIGhlbHBlcl8tPmZhY3RvcnkoKS0+ZW5jb2RlcnMoKS5zaXplKCkpOwotICBFWFBF
Q1RfU1RSRVEoImNvZGVjMSIsIGFkYXB0ZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKSk7CisgIEVY
UEVDVF9FUSgiY29kZWMxIiwgYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCkuaW1wbGVtZW50YXRp
b25fbmFtZSk7CiB9CiAKIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLApA
QCAtNzk4LDEwICs4MDgsMTEgQEAgVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZh
a2UsCiAgICAgZW5jb2Rlci0+c2V0X3N1cHBvcnRzX25hdGl2ZV9oYW5kbGUodHJ1ZSk7CiAgIC8v
IElmIG9uZSBlbmNvZGVyIGRvZXNuJ3Qgc3VwcG9ydCBpdCwgdGhlbiBvdmVyYWxsIHN1cHBvcnQg
aXMgZGlzYWJsZWQuCiAgIGhlbHBlcl8tPmZhY3RvcnkoKS0+ZW5jb2RlcnMoKVswXS0+c2V0X3N1
cHBvcnRzX25hdGl2ZV9oYW5kbGUoZmFsc2UpOwotICBFWFBFQ1RfRkFMU0UoYWRhcHRlcl8tPlN1
cHBvcnRzTmF0aXZlSGFuZGxlKCkpOworICBFWFBFQ1RfRkFMU0UoYWRhcHRlcl8tPkdldEVuY29k
ZXJJbmZvKCkuc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSk7CiAgIC8vIE9uY2UgYWxsIGRvLCB0aGVu
IHRoZSBhZGFwdGVyIGNsYWltcyBzdXBwb3J0LgogICBoZWxwZXJfLT5mYWN0b3J5KCktPmVuY29k
ZXJzKClbMF0tPnNldF9zdXBwb3J0c19uYXRpdmVfaGFuZGxlKHRydWUpOwotICBFWFBFQ1RfVFJV
RShhZGFwdGVyXy0+U3VwcG9ydHNOYXRpdmVIYW5kbGUoKSk7CisgIEVYUEVDVF9FUSgwLCBhZGFw
dGVyXy0+SW5pdEVuY29kZSgmY29kZWNfLCAxLCAxMjAwKSk7CisgIEVYUEVDVF9UUlVFKGFkYXB0
ZXJfLT5HZXRFbmNvZGVySW5mbygpLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUpOwogfQogCiAvLyBU
T0RPKG5pc3NlKTogUmV1c2UgZGVmaW5pdGlvbiBpbiB3ZWJydGMvdGVzdC9mYWtlX3RleHR1cmVf
aGFuZGxlLmguCkBAIC04MzcsNyArODQ4LDggQEAgVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVy
QWRhcHRlckZha2UsCiAgIEFTU0VSVF9FUSgzdSwgaGVscGVyXy0+ZmFjdG9yeSgpLT5lbmNvZGVy
cygpLnNpemUoKSk7CiAgIGZvciAoTW9ja1ZpZGVvRW5jb2RlciogZW5jb2RlciA6IGhlbHBlcl8t
PmZhY3RvcnkoKS0+ZW5jb2RlcnMoKSkKICAgICBlbmNvZGVyLT5zZXRfc3VwcG9ydHNfbmF0aXZl
X2hhbmRsZSh0cnVlKTsKLSAgRVhQRUNUX1RSVUUoYWRhcHRlcl8tPlN1cHBvcnRzTmF0aXZlSGFu
ZGxlKCkpOworICBFWFBFQ1RfRVEoMCwgYWRhcHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwg
MTIwMCkpOworICBFWFBFQ1RfVFJVRShhZGFwdGVyXy0+R2V0RW5jb2RlckluZm8oKS5zdXBwb3J0
c19uYXRpdmVfaGFuZGxlKTsKIAogICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9GcmFtZUJ1ZmZl
cj4gYnVmZmVyKAogICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxGYWtlTmF0aXZlQnVm
ZmVyTm9JNDIwPigxMjgwLCA3MjApKTsKQEAgLTk0OCw1ICs5NjAsNTAgQEAgVEVTVF9GKFRlc3RT
aW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2UsIEFjdGl2YXRlc0NvcnJlY3RTdHJlYW1zSW5Jbml0
RW5jb2RlKSB7CiAgIGZyYW1lX3R5cGVzLnJlc2l6ZSgzLCBrVmlkZW9GcmFtZUtleSk7CiAgIEVY
UEVDVF9FUSgwLCBhZGFwdGVyXy0+RW5jb2RlKGlucHV0X2ZyYW1lLCBudWxscHRyLCAmZnJhbWVf
dHlwZXMpKTsKIH0KKworVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2UsIFRy
dXN0ZWRSYXRlQ29udHJvbCkgeworICAvLyBTZXQgdXAgY29tbW9uIHNldHRpbmdzIGZvciB0aHJl
ZSBzdHJlYW1zLgorICBTaW11bGNhc3RUZXN0Rml4dHVyZUltcGw6OkRlZmF1bHRTZXR0aW5ncygK
KyAgICAgICZjb2RlY18sIHN0YXRpY19jYXN0PGNvbnN0IGludCo+KGtUZXN0VGVtcG9yYWxMYXll
clByb2ZpbGUpLAorICAgICAga1ZpZGVvQ29kZWNWUDgpOworICByYXRlX2FsbG9jYXRvcl8ucmVz
ZXQobmV3IFNpbXVsY2FzdFJhdGVBbGxvY2F0b3IoY29kZWNfKSk7CisgIGFkYXB0ZXJfLT5SZWdp
c3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2sodGhpcyk7CisKKyAgLy8gT25seSBlbm91Z2ggc3Rh
cnQgYml0cmF0ZSBmb3IgdGhlIGxvd2VzdCBzdHJlYW0uCisgIEFTU0VSVF9FUSgzdSwgY29kZWNf
Lm51bWJlck9mU2ltdWxjYXN0U3RyZWFtcyk7CisgIGNvZGVjXy5zdGFydEJpdHJhdGUgPSBjb2Rl
Y18uc2ltdWxjYXN0U3RyZWFtWzBdLnRhcmdldEJpdHJhdGUgKworICAgICAgICAgICAgICAgICAg
ICAgICAgY29kZWNfLnNpbXVsY2FzdFN0cmVhbVsxXS5taW5CaXRyYXRlIC0gMTsKKworICAvLyBJ
bnB1dCBkYXRhLgorICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9GcmFtZUJ1ZmZlcj4gYnVmZmVy
KEk0MjBCdWZmZXI6OkNyZWF0ZSgxMjgwLCA3MjApKTsKKyAgVmlkZW9GcmFtZSBpbnB1dF9mcmFt
ZShidWZmZXIsIDEwMCwgMTAwMCwga1ZpZGVvUm90YXRpb25fMTgwKTsKKworICAvLyBObyBlbmNv
ZGVyIHRydXN0ZWQsIHNvIHNpbXVsY2FzdCBhZGFwdGVyIHNob3VsZCBub3QgYmUgZWl0aGVyLgor
ICBFWFBFQ1RfRVEoMCwgYWRhcHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwgMTIwMCkpOwor
ICBFWFBFQ1RfRkFMU0UoYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCkuaGFzX3RydXN0ZWRfcmF0
ZV9jb250cm9sbGVyKTsKKworICAvLyBFbmNvZGUgd2l0aCB0aHJlZSBzdHJlYW1zLgorICBzdGQ6
OnZlY3RvcjxNb2NrVmlkZW9FbmNvZGVyKj4gb3JpZ2luYWxfZW5jb2RlcnMgPQorICAgICAgaGVs
cGVyXy0+ZmFjdG9yeSgpLT5lbmNvZGVycygpOworCisgIC8vIEFsbCBlbmNvZGVycyBhcmUgdHJ1
c3RlZCwgc28gc2ltdWxjYXN0IGFkYXB0ZXIgc2hvdWxkIGJlIHRvby4KKyAgb3JpZ2luYWxfZW5j
b2RlcnNbMF0tPnNldF9oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIodHJ1ZSk7CisgIG9yaWdp
bmFsX2VuY29kZXJzWzFdLT5zZXRfaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKHRydWUpOwor
ICBvcmlnaW5hbF9lbmNvZGVyc1syXS0+c2V0X2hhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcih0
cnVlKTsKKyAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJfLT5Jbml0RW5jb2RlKCZjb2RlY18sIDEsIDEy
MDApKTsKKyAgRVhQRUNUX1RSVUUoYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCkuaGFzX3RydXN0
ZWRfcmF0ZV9jb250cm9sbGVyKTsKKworICAvLyBPbmUgZW5jb2RlciBub3QgdHJ1c3RlZCwgc28g
c2ltdWxjYXN0IGFkYXB0ZXIgc2hvdWxkIG5vdCBiZSBlaXRoZXIuCisgIG9yaWdpbmFsX2VuY29k
ZXJzWzJdLT5zZXRfaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKGZhbHNlKTsKKyAgRVhQRUNU
X0VRKDAsIGFkYXB0ZXJfLT5Jbml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsKKyAgRVhQRUNU
X0ZBTFNFKGFkYXB0ZXJfLT5HZXRFbmNvZGVySW5mbygpLmhhc190cnVzdGVkX3JhdGVfY29udHJv
bGxlcik7CisKKyAgLy8gTm8gZW5jb2RlciB0cnVzdGVkLCBzbyBzaW11bGNhc3QgYWRhcHRlciBz
aG91bGQgbm90IGJlIGVpdGhlci4KKyAgb3JpZ2luYWxfZW5jb2RlcnNbMF0tPnNldF9oYXNfdHJ1
c3RlZF9yYXRlX2NvbnRyb2xsZXIoZmFsc2UpOworICBvcmlnaW5hbF9lbmNvZGVyc1sxXS0+c2V0
X2hhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcihmYWxzZSk7CisgIEVYUEVDVF9FUSgwLCBhZGFw
dGVyXy0+SW5pdEVuY29kZSgmY29kZWNfLCAxLCAxMjAwKSk7CisgIEVYUEVDVF9GQUxTRShhZGFw
dGVyXy0+R2V0RW5jb2RlckluZm8oKS5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIpOworfQor
CiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5l
L3NpbXVsY2FzdF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfdW5pdHRlc3QuY2MKaW5kZXggZjQxNjM2
ODY5Nzg5OTMxNzM5ZDZmOTNhYjA4ZTE2YmI1OTg2NjBmYy4uMGMyNzgxNjA2ODlkZmUzNjM5Y2Y4
ZDA5MTQ5OTEwMjRkNWMyNzYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdF91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
c2ltdWxjYXN0X3VuaXR0ZXN0LmNjCkBAIC0xNzksNyArMTc5LDcgQEAgVEVTVChTaW11bGNhc3RU
ZXN0LCBHZXRDb25maWdXaXRoTm9ybWFsaXplZFJlc29sdXRpb24pIHsKICAgICAgIGtNYXhMYXll
cnMsIDY0MCArIDEsIDM2MCArIDEsIGtNYXhCaXRyYXRlQnBzLCBrQml0cmF0ZVByaW9yaXR5LCBr
UXBNYXgsCiAgICAgICBrTWF4RnBzLCAha1NjcmVlbnNoYXJlKTsKIAotICAvLyBNdXN0IGJlIGRp
dmlkYWJsZSBieSB8MiBeIChudW1fbGF5ZXJzIC0gMSl8LgorICAvLyBNdXN0IGJlIGRpdmlzaWJs
ZSBieSB8MiBeIChudW1fbGF5ZXJzIC0gMSl8LgogICBFWFBFQ1RfRVEoa01heExheWVycywgc3Ry
ZWFtcy5zaXplKCkpOwogICBFWFBFQ1RfRVEoMzIwdSwgc3RyZWFtc1swXS53aWR0aCk7CiAgIEVY
UEVDVF9FUSgxODB1LCBzdHJlYW1zWzBdLmhlaWdodCk7CkBAIC0xODcsNiArMTg3LDQwIEBAIFRF
U1QoU2ltdWxjYXN0VGVzdCwgR2V0Q29uZmlnV2l0aE5vcm1hbGl6ZWRSZXNvbHV0aW9uKSB7CiAg
IEVYUEVDVF9FUSgzNjB1LCBzdHJlYW1zWzFdLmhlaWdodCk7CiB9CiAKK1RFU1QoU2ltdWxjYXN0
VGVzdCwgR2V0Q29uZmlnV2l0aE5vcm1hbGl6ZWRSZXNvbHV0aW9uRGl2aXNpYmxlQnk0KSB7Cisg
IHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJSVEMtTm9y
bWFsaXplU2ltdWxjYXN0UmVzb2x1dGlvbi9FbmFibGVkLTIvIik7CisKKyAgY29uc3Qgc2l6ZV90
IGtNYXhMYXllcnMgPSAyOworICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9IGNy
aWNrZXQ6OkdldFNpbXVsY2FzdENvbmZpZygKKyAgICAgIGtNYXhMYXllcnMsIDcwOSwgNTAxLCBr
TWF4Qml0cmF0ZUJwcywga0JpdHJhdGVQcmlvcml0eSwga1FwTWF4LCBrTWF4RnBzLAorICAgICAg
IWtTY3JlZW5zaGFyZSk7CisKKyAgLy8gTXVzdCBiZSBkaXZpc2libGUgYnkgfDIgXiAyfC4KKyAg
RVhQRUNUX0VRKGtNYXhMYXllcnMsIHN0cmVhbXMuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDM1NHUs
IHN0cmVhbXNbMF0ud2lkdGgpOworICBFWFBFQ1RfRVEoMjUwdSwgc3RyZWFtc1swXS5oZWlnaHQp
OworICBFWFBFQ1RfRVEoNzA4dSwgc3RyZWFtc1sxXS53aWR0aCk7CisgIEVYUEVDVF9FUSg1MDB1
LCBzdHJlYW1zWzFdLmhlaWdodCk7Cit9CisKK1RFU1QoU2ltdWxjYXN0VGVzdCwgR2V0Q29uZmln
V2l0aE5vcm1hbGl6ZWRSZXNvbHV0aW9uRGl2aXNpYmxlQnk4KSB7CisgIHRlc3Q6OlNjb3BlZEZp
ZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJSVEMtTm9ybWFsaXplU2ltdWxjYXN0
UmVzb2x1dGlvbi9FbmFibGVkLTMvIik7CisKKyAgY29uc3Qgc2l6ZV90IGtNYXhMYXllcnMgPSAy
OworICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9IGNyaWNrZXQ6OkdldFNpbXVs
Y2FzdENvbmZpZygKKyAgICAgIGtNYXhMYXllcnMsIDcwOSwgNTAxLCBrTWF4Qml0cmF0ZUJwcywg
a0JpdHJhdGVQcmlvcml0eSwga1FwTWF4LCBrTWF4RnBzLAorICAgICAgIWtTY3JlZW5zaGFyZSk7
CisKKyAgLy8gTXVzdCBiZSBkaXZpc2libGUgYnkgfDIgXiAzfC4KKyAgRVhQRUNUX0VRKGtNYXhM
YXllcnMsIHN0cmVhbXMuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDM1MnUsIHN0cmVhbXNbMF0ud2lk
dGgpOworICBFWFBFQ1RfRVEoMjQ4dSwgc3RyZWFtc1swXS5oZWlnaHQpOworICBFWFBFQ1RfRVEo
NzA0dSwgc3RyZWFtc1sxXS53aWR0aCk7CisgIEVYUEVDVF9FUSg0OTZ1LCBzdHJlYW1zWzFdLmhl
aWdodCk7Cit9CisKIFRFU1QoU2ltdWxjYXN0VGVzdCwgR2V0Q29uZmlnRm9yU2NyZWVuc2hhcmUp
IHsKICAgY29uc3Qgc2l6ZV90IGtNYXhMYXllcnMgPSAzOwogICBzdGQ6OnZlY3RvcjxWaWRlb1N0
cmVhbT4gc3RyZWFtcyA9IGNyaWNrZXQ6OkdldFNpbXVsY2FzdENvbmZpZygKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92
cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5
LmNjCmluZGV4IDRkODU4NjMwYjU4MjRkNzA0ZWU4OWMxYjgwNDE2NDcwZGI5YTJlODYuLjFhMmY1
NzcyNWNlYzI1YWVlNDMwYjQ2OGRjMTU5Mjc4NWI5MzIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhfZW5jb2Rl
cl9zaW11bGNhc3RfcHJveHkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eS5jYwpA
QCAtMTAsOSArMTAsNyBAQAogCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3Np
bXVsY2FzdF9wcm94eS5oIgogCi0jaW5jbHVkZSAibWVkaWEvZW5naW5lL3Njb3BlZHZpZGVvZW5j
b2Rlci5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVy
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
VlA4RW5jb2RlclNpbXVsY2FzdFByb3h5OjpWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHkoVmlkZW9F
bmNvZGVyRmFjdG9yeSogZmFjdG9yeSwKQEAgLTU3LDI4ICs1NSwxNCBAQCBpbnQgVlA4RW5jb2Rl
clNpbXVsY2FzdFByb3h5OjpSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgIHJldHVy
biBlbmNvZGVyXy0+UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKGNhbGxiYWNrKTsKIH0K
IAotaW50IFZQOEVuY29kZXJTaW11bGNhc3RQcm94eTo6U2V0Q2hhbm5lbFBhcmFtZXRlcnModWlu
dDMyX3QgcGFja2V0X2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IHJ0dCkgewotICByZXR1cm4gZW5jb2Rlcl8tPlNldENoYW5u
ZWxQYXJhbWV0ZXJzKHBhY2tldF9sb3NzLCBydHQpOwotfQotCiBpbnQgVlA4RW5jb2RlclNpbXVs
Y2FzdFByb3h5OjpTZXRSYXRlQWxsb2NhdGlvbigKICAgICBjb25zdCBWaWRlb0JpdHJhdGVBbGxv
Y2F0aW9uJiBiaXRyYXRlLAogICAgIHVpbnQzMl90IG5ld19mcmFtZXJhdGUpIHsKICAgcmV0dXJu
IGVuY29kZXJfLT5TZXRSYXRlQWxsb2NhdGlvbihiaXRyYXRlLCBuZXdfZnJhbWVyYXRlKTsKIH0K
IAotVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgVlA4RW5jb2RlclNpbXVsY2FzdFByb3h5
OjpHZXRTY2FsaW5nU2V0dGluZ3MoKQotICAgIGNvbnN0IHsKLSAgcmV0dXJuIGVuY29kZXJfLT5H
ZXRTY2FsaW5nU2V0dGluZ3MoKTsKLX0KLQotYm9vbCBWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHk6
OlN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3QgewotICByZXR1cm4gZW5jb2Rlcl8tPlN1cHBv
cnRzTmF0aXZlSGFuZGxlKCk7Ci19Ci0KLWNvbnN0IGNoYXIqIFZQOEVuY29kZXJTaW11bGNhc3RQ
cm94eTo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3QgewotICByZXR1cm4gZW5jb2Rlcl8tPklt
cGxlbWVudGF0aW9uTmFtZSgpOworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBWUDhFbmNvZGVy
U2ltdWxjYXN0UHJveHk6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICByZXR1cm4gZW5jb2Rl
cl8tPkdldEVuY29kZXJJbmZvKCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Vu
Z2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3Rf
cHJveHkuaAppbmRleCA2ODViY2JlZDZlZjg0NmQ3OWFmYmQzZjgzMzk4OTA4MDhmNjUyYTAwLi5k
MDQ2MjRmMjZjNWQ4NjE1MDdlNjhhNjgyYTIyY2VmY2U4MDY2YzQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2Vu
Y29kZXJfc2ltdWxjYXN0X3Byb3h5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eS5o
CkBAIC0xNiw4ICsxNiw4IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVj
cy92aWRlb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNv
ZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4
L2luY2x1ZGUvdnA4LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC00MiwxNCArNDIsOSBA
QCBjbGFzcyBWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHkgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsK
ICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5m
bywKICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+KiBmcmFtZV90eXBl
cykgb3ZlcnJpZGU7CiAgIGludCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soRW5jb2Rl
ZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKLSAgaW50IFNldENoYW5uZWxQYXJh
bWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CiAgIGlu
dCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbmV3X2ZyYW1lcmF0ZSkgb3ZlcnJp
ZGU7Ci0KLSAgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdz
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgYm9vbCBTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0
IG92ZXJyaWRlOwotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZTsKIAog
IHByaXZhdGU6CiAgIFZpZGVvRW5jb2RlckZhY3RvcnkqIGNvbnN0IGZhY3RvcnlfOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9z
aW11bGNhc3RfcHJveHlfdW5pdHRlc3QuY2MKaW5kZXggZDFkYzlhMzFkZjY2YmM1OTMzZmFmMGI4
Yjc1MDQ1NmQ1NmE5YmM3My4uZDFiMjZiYmU5M2U2OTEzYTdhOWIyNzk3MWUyYzA4Mzk3MWViNTU1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eV91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
dnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5X3VuaXR0ZXN0LmNjCkBAIC0xMCwxMiArMTAsMTEg
QEAKICAqLwogCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9w
cm94eS5oIgotCiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192
aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90
ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmNv
ZGVyZmFjdG9yeS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgv
aW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19j
b2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJ0ZXN0L2dt
b2NrLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgpAQCAtNTIsOSArNTEsNyBAQCBjbGFzcyBN
b2NrRW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICAgICAgICAgICAgICBjb25zdCBD
b2RlY1NwZWNpZmljSW5mbyogY29kZWNTcGVjaWZpY0luZm8sCiAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPEZyYW1lVHlwZT4qIGZyYW1lX3R5cGVzKSAvKiBvdmVycmlkZSAqLyk7CiAK
LSAgTU9DS19NRVRIT0QyKFNldENoYW5uZWxQYXJhbWV0ZXJzLCBpbnQzMl90KHVpbnQzMl90IHBh
Y2tldExvc3MsIGludDY0X3QgcnR0KSk7Ci0KLSAgTU9DS19DT05TVF9NRVRIT0QwKEltcGxlbWVu
dGF0aW9uTmFtZSwgY29uc3QgY2hhciooKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRFbmNv
ZGVySW5mbywgVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyh2b2lkKSk7CiB9OwogCiBURVNUKFZQ
OEVuY29kZXJTaW11bGNhc3RQcm94eSwgQ2hvb3Nlc0NvcnJlY3RJbXBsZW1lbnRhdGlvbikgewpA
QCAtOTQsOCArOTEsMTAgQEAgVEVTVChWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHksIENob29zZXND
b3JyZWN0SW1wbGVtZW50YXRpb24pIHsKIAogICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVyLCBJ
bml0RW5jb2RlKF8sIF8sIF8pKQogICAgICAgLldpbGxPbmNlKFJldHVybihXRUJSVENfVklERU9f
Q09ERUNfT0spKTsKLSAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlciwgSW1wbGVtZW50YXRpb25O
YW1lKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGtJbXBsZW1lbnRhdGlvbk5hbWUu
Y19zdHIoKSkpOworICBWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIGVuY29kZXJfaW5mbzsKKyAg
ZW5jb2Rlcl9pbmZvLmltcGxlbWVudGF0aW9uX25hbWUgPSBrSW1wbGVtZW50YXRpb25OYW1lOwor
ICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVyLCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldp
bGxSZXBlYXRlZGx5KFJldHVybihlbmNvZGVyX2luZm8pKTsKIAogICBFWFBFQ1RfQ0FMTChzaW11
bGNhc3RfZmFjdG9yeSwgQ3JlYXRlVmlkZW9FbmNvZGVyUHJveHkoXykpCiAgICAgICAuVGltZXMo
MSkKQEAgLTEwNSw3ICsxMDQsOCBAQCBURVNUKFZQOEVuY29kZXJTaW11bGNhc3RQcm94eSwgQ2hv
b3Nlc0NvcnJlY3RJbXBsZW1lbnRhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2RwVmlkZW9Gb3JtYXQoIlZQOCIpKTsKICAgRVhQRUNU
X0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKICAgICAgICAgICAgIHNpbXVsY2FzdF9lbmFibGVk
X3Byb3h5LkluaXRFbmNvZGUoJmNvZGVjX3NldHRpbmdzLCA0LCAxMjAwKSk7Ci0gIEVYUEVDVF9F
UShrSW1wbGVtZW50YXRpb25OYW1lLCBzaW11bGNhc3RfZW5hYmxlZF9wcm94eS5JbXBsZW1lbnRh
dGlvbk5hbWUoKSk7CisgIEVYUEVDVF9FUShrSW1wbGVtZW50YXRpb25OYW1lLAorICAgICAgICAg
ICAgc2ltdWxjYXN0X2VuYWJsZWRfcHJveHkuR2V0RW5jb2RlckluZm8oKS5pbXBsZW1lbnRhdGlv
bl9uYW1lKTsKIAogICBOaWNlTW9jazxNb2NrRW5jb2Rlcj4qIG1vY2tfZW5jb2RlcjEgPSBuZXcg
TmljZU1vY2s8TW9ja0VuY29kZXI+KCk7CiAgIE5pY2VNb2NrPE1vY2tFbmNvZGVyPiogbW9ja19l
bmNvZGVyMiA9IG5ldyBOaWNlTW9jazxNb2NrRW5jb2Rlcj4oKTsKQEAgLTExNiwyMyArMTE2LDIz
IEBAIFRFU1QoVlA4RW5jb2RlclNpbXVsY2FzdFByb3h5LCBDaG9vc2VzQ29ycmVjdEltcGxlbWVu
dGF0aW9uKSB7CiAgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIxLCBJbml0RW5jb2RlKF8sIF8s
IF8pKQogICAgICAgLldpbGxPbmNlKAogICAgICAgICAgIFJldHVybihXRUJSVENfVklERU9fQ09E
RUNfRVJSX1NJTVVMQ0FTVF9QQVJBTUVURVJTX05PVF9TVVBQT1JURUQpKTsKLSAgRVhQRUNUX0NB
TEwoKm1vY2tfZW5jb2RlcjEsIEltcGxlbWVudGF0aW9uTmFtZSgpKQotICAgICAgLldpbGxSZXBl
YXRlZGx5KFJldHVybihrSW1wbGVtZW50YXRpb25OYW1lLmNfc3RyKCkpKTsKKyAgRVhQRUNUX0NB
TEwoKm1vY2tfZW5jb2RlcjEsIEdldEVuY29kZXJJbmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVk
bHkoUmV0dXJuKGVuY29kZXJfaW5mbykpOwogCiAgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIy
LCBJbml0RW5jb2RlKF8sIF8sIF8pKQogICAgICAgLldpbGxPbmNlKFJldHVybihXRUJSVENfVklE
RU9fQ09ERUNfT0spKTsKLSAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlcjIsIEltcGxlbWVudGF0
aW9uTmFtZSgpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihrSW1wbGVtZW50YXRpb25O
YW1lLmNfc3RyKCkpKTsKKyAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlcjIsIEdldEVuY29kZXJJ
bmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGVuY29kZXJfaW5mbykpOwogCiAg
IEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIzLCBJbml0RW5jb2RlKF8sIF8sIF8pKQogICAgICAg
LldpbGxPbmNlKFJldHVybihXRUJSVENfVklERU9fQ09ERUNfT0spKTsKLSAgRVhQRUNUX0NBTEwo
Km1vY2tfZW5jb2RlcjMsIEltcGxlbWVudGF0aW9uTmFtZSgpKQotICAgICAgLldpbGxSZXBlYXRl
ZGx5KFJldHVybihrSW1wbGVtZW50YXRpb25OYW1lLmNfc3RyKCkpKTsKKyAgRVhQRUNUX0NBTEwo
Km1vY2tfZW5jb2RlcjMsIEdldEVuY29kZXJJbmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHko
UmV0dXJuKGVuY29kZXJfaW5mbykpOwogCiAgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXI0LCBJ
bml0RW5jb2RlKF8sIF8sIF8pKQogICAgICAgLldpbGxPbmNlKFJldHVybihXRUJSVENfVklERU9f
Q09ERUNfT0spKTsKLSAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlcjQsIEltcGxlbWVudGF0aW9u
TmFtZSgpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihrSW1wbGVtZW50YXRpb25OYW1l
LmNfc3RyKCkpKTsKKyAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlcjQsIEdldEVuY29kZXJJbmZv
KCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGVuY29kZXJfaW5mbykpOwogCiAgIEVY
UEVDVF9DQUxMKG5vbnNpbXVsY2FzdF9mYWN0b3J5LCBDcmVhdGVWaWRlb0VuY29kZXJQcm94eShf
KSkKICAgICAgIC5UaW1lcyg0KQpAQCAtMTQ2LDEyICsxNDYsMzggQEAgVEVTVChWUDhFbmNvZGVy
U2ltdWxjYXN0UHJveHksIENob29zZXNDb3JyZWN0SW1wbGVtZW50YXRpb24pIHsKICAgRVhQRUNU
X0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKICAgICAgICAgICAgIHNpbXVsY2FzdF9kaXNhYmxl
ZF9wcm94eS5Jbml0RW5jb2RlKCZjb2RlY19zZXR0aW5ncywgNCwgMTIwMCkpOwogICBFWFBFQ1Rf
RVEoa1NpbXVsY2FzdEFkYXB0ZWRJbXBsZW1lbnRhdGlvbk5hbWUsCi0gICAgICAgICAgICBzaW11
bGNhc3RfZGlzYWJsZWRfcHJveHkuSW1wbGVtZW50YXRpb25OYW1lKCkpOworICAgICAgICAgICAg
c2ltdWxjYXN0X2Rpc2FibGVkX3Byb3h5LkdldEVuY29kZXJJbmZvKCkuaW1wbGVtZW50YXRpb25f
bmFtZSk7CiAKICAgLy8gQ2xlYW51cC4KICAgc2ltdWxjYXN0X2VuYWJsZWRfcHJveHkuUmVsZWFz
ZSgpOwogICBzaW11bGNhc3RfZGlzYWJsZWRfcHJveHkuUmVsZWFzZSgpOwogfQogCitURVNUKFZQ
OEVuY29kZXJTaW11bGNhc3RQcm94eSwgRm9yd2FyZHNUcnVzdGVkU2V0dGluZykgeworICBOaWNl
TW9jazxNb2NrRW5jb2Rlcj4qIG1vY2tfZW5jb2RlciA9IG5ldyBOaWNlTW9jazxNb2NrRW5jb2Rl
cj4oKTsKKyAgTmljZU1vY2s8TW9ja1ZpZGVvRW5jb2RlckZhY3Rvcnk+IHNpbXVsY2FzdF9mYWN0
b3J5OworCisgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIsIEluaXRFbmNvZGUoXywgXywgXykp
CisgICAgICAuV2lsbE9uY2UoUmV0dXJuKFdFQlJUQ19WSURFT19DT0RFQ19PSykpOworCisgIEVY
UEVDVF9DQUxMKHNpbXVsY2FzdF9mYWN0b3J5LCBDcmVhdGVWaWRlb0VuY29kZXJQcm94eShfKSkK
KyAgICAgIC5UaW1lcygxKQorICAgICAgLldpbGxPbmNlKFJldHVybihtb2NrX2VuY29kZXIpKTsK
KworICBWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHkgc2ltdWxjYXN0X2VuYWJsZWRfcHJveHkoJnNp
bXVsY2FzdF9mYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2RwVmlkZW9Gb3JtYXQoIlZQOCIpKTsKKyAgVmlkZW9Db2RlYyBjb2RlY19z
ZXR0aW5nczsKKyAgd2VicnRjOjp0ZXN0OjpDb2RlY1NldHRpbmdzKGtWaWRlb0NvZGVjVlA4LCAm
Y29kZWNfc2V0dGluZ3MpOworICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLAorICAg
ICAgICAgICAgc2ltdWxjYXN0X2VuYWJsZWRfcHJveHkuSW5pdEVuY29kZSgmY29kZWNfc2V0dGlu
Z3MsIDQsIDEyMDApKTsKKworICBWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIGluZm87CisgIGlu
Zm8uaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyID0gdHJ1ZTsKKyAgRVhQRUNUX0NBTEwoKm1v
Y2tfZW5jb2RlciwgR2V0RW5jb2RlckluZm8oKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGluZm8p
KTsKKworICBFWFBFQ1RfVFJVRSgKKyAgICAgIHNpbXVsY2FzdF9lbmFibGVkX3Byb3h5LkdldEVu
Y29kZXJJbmZvKCkuaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKTsKK30KKwogfSAgLy8gbmFt
ZXNwYWNlIHRlc3RpbmcKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGNt
ZWRpYWVuZ2luZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZS5jYwppbmRleCBlNjBjNTkyYTNmYWJlZWQx
MmViNThmZWQ5YTZiNmVjZDY3ZmRmMDM1Li5iYzdkM2MzZTEyNGZmZWZlYTM2YjAyMWU1YmM2MzVh
MzYwMmViNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlh
ZW5naW5lLmNjCkBAIC0xMSwxMCArMTEsMTAgQEAKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvd2Vi
cnRjbWVkaWFlbmdpbmUuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxtZW1v
cnk+Ci0jaW5jbHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFi
c2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9idWlsdGluX3ZpZGVvX2Jp
dHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3Zp
ZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9f
ZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5n
aW5lLmgiCkBAIC0zOCwyMyArMzgsMjQgQEAgTWVkaWFFbmdpbmVJbnRlcmZhY2UqIENyZWF0ZVdl
YlJ0Y01lZGlhRW5naW5lKAogICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCiAgICAgV2Vi
UnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAogICAgIFdlYlJ0
Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICB2
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZykgeworICBzdGQ6OnVuaXF1
ZV9wdHI8VmlkZW9FbmdpbmVJbnRlcmZhY2U+IHZpZGVvX2VuZ2luZTsKICNpZmRlZiBIQVZFX1dF
QlJUQ19WSURFTwotICB0eXBlZGVmIFdlYlJ0Y1ZpZGVvRW5naW5lIFZpZGVvRW5naW5lOwotICBz
dGQ6OnR1cGxlPHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5PiwKLSAg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeT4+Ci0g
ICAgICB2aWRlb19hcmdzKAotICAgICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9F
bmNvZGVyRmFjdG9yeT4odmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSksCi0gICAgICAgICAgKHN0ZDo6
dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5Pih2aWRlb19kZWNvZGVyX2ZhY3Rv
cnkpKSk7CisgIHZpZGVvX2VuZ2luZSA9IGFic2w6Om1ha2VfdW5pcXVlPFdlYlJ0Y1ZpZGVvRW5n
aW5lPigKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5Pih2
aWRlb19lbmNvZGVyX2ZhY3RvcnkpLAorICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVv
RGVjb2RlckZhY3Rvcnk+KHZpZGVvX2RlY29kZXJfZmFjdG9yeSksCisgICAgICBzdGQ6Om1vdmUo
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkpOwogI2Vsc2UKLSAgdHlwZWRlZiBOdWxs
V2ViUnRjVmlkZW9FbmdpbmUgVmlkZW9FbmdpbmU7Ci0gIHN0ZDo6dHVwbGU8PiB2aWRlb19hcmdz
OworICB2aWRlb19lbmdpbmUgPSBhYnNsOjptYWtlX3VuaXF1ZTxOdWxsV2ViUnRjVmlkZW9Fbmdp
bmU+KCk7CiAjZW5kaWYKLSAgcmV0dXJuIG5ldyBDb21wb3NpdGVNZWRpYUVuZ2luZTxXZWJSdGNW
b2ljZUVuZ2luZSwgVmlkZW9FbmdpbmU+KAotICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKGFk
bSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXVkaW9fbWl4ZXIsIGF1ZGlvX3Byb2Nlc3NpbmcpLAotICAg
ICAgc3RkOjptb3ZlKHZpZGVvX2FyZ3MpKTsKKyAgcmV0dXJuIG5ldyBDb21wb3NpdGVNZWRpYUVu
Z2luZSgKKyAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFdlYlJ0Y1ZvaWNlRW5naW5lPihhZG0sIGF1
ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksIGF1ZGlvX21peGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3Byb2Nlc3NpbmcpLAorICAgICAg
c3RkOjptb3ZlKHZpZGVvX2VuZ2luZSkpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTY3LDEw
ICs2OCw0MyBAQCBNZWRpYUVuZ2luZUludGVyZmFjZSogV2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5
OjpDcmVhdGUoCiAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKICAgICBXZWJSdGNWaWRl
b0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCiAgICAgV2ViUnRjVmlkZW9E
ZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSB7Ci0gIHJldHVybiBDcmVhdGVX
ZWJSdGNNZWRpYUVuZ2luZShhZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwgdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9fZGVjb2Rl
cl9mYWN0b3J5LCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vi
cnRjOjpBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpOworICByZXR1cm4gV2ViUnRj
TWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCisgICAgICBhZG0sIGF1ZGlvX2VuY29kZXJfZmFj
dG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAg
ICB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRl
b0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkpOworfQorCitNZWRpYUVuZ2luZUludGVyZmFjZSog
V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCisgICAgd2VicnRjOjpBdWRpb0Rldmlj
ZU1vZHVsZSogYWRtLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlv
RW5jb2RlckZhY3Rvcnk+JgorICAgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgY29u
c3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeT4mCisgICAg
ICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5
KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSog
dmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVv
Qml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+CisgICAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnkpIHsKKyAgcmV0dXJuIENyZWF0ZVdlYlJ0Y01lZGlhRW5naW5lKAorICAgICAgYWRt
LCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwgdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LAorICAgICAgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LCBzdGQ6Om1vdmUodmlk
ZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSksCisgICAgICBudWxscHRyLCB3ZWJydGM6OkF1
ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKSk7Cit9CisKK01lZGlhRW5naW5lSW50ZXJm
YWNlKiBXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKKyAgICB3ZWJydGM6OkF1ZGlv
RGV2aWNlTW9kdWxlKiBhZG0sCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
QXVkaW9FbmNvZGVyRmFjdG9yeT4mCisgICAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAg
ICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiYK
KyAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIFdlYlJ0Y1ZpZGVvRW5jb2RlckZh
Y3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBXZWJSdGNWaWRlb0RlY29kZXJGYWN0
b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nKSB7CisgIHJldHVybiBXZWJSdGNN
ZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKKyAgICAgIGFkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICAg
IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVv
Qml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSwgYXVkaW9fbWl4ZXIsCisgICAgICBhdWRpb19wcm9j
ZXNzaW5nKTsKIH0KIAogTWVkaWFFbmdpbmVJbnRlcmZhY2UqIFdlYlJ0Y01lZGlhRW5naW5lRmFj
dG9yeTo6Q3JlYXRlKApAQCAtODEsMTEgKzExNSwxNCBAQCBNZWRpYUVuZ2luZUludGVyZmFjZSog
V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCiAgICAgICAgIGF1ZGlvX2RlY29kZXJf
ZmFjdG9yeSwKICAgICBXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2Zh
Y3RvcnksCiAgICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZh
Y3Rvcnk+CisgICAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnksCiAgICAgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCiAgICAgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5n
KSB7CiAgIHJldHVybiBDcmVhdGVXZWJSdGNNZWRpYUVuZ2luZSgKICAgICAgIGFkbSwgYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksIHZpZGVvX2VuY29kZXJfZmFj
dG9yeSwKLSAgICAgIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwgYXVkaW9fbWl4ZXIsIGF1ZGlvX3By
b2Nlc3NpbmcpOworICAgICAgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LCBzdGQ6Om1vdmUodmlkZW9f
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSksCisgICAgICBhdWRpb19taXhlciwgYXVkaW9fcHJv
Y2Vzc2luZyk7CiB9CiAjZW5kaWYKIApAQCAtOTcsMjIgKzEzNCwzNSBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TWVkaWFFbmdpbmVJbnRlcmZhY2U+IFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRl
KAogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IHZpZGVv
X2RlY29kZXJfZmFjdG9yeSwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb01p
eGVyPiBhdWRpb19taXhlciwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1By
b2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcpIHsKKyAgcmV0dXJuIFdlYlJ0Y01lZGlhRW5naW5l
RmFjdG9yeTo6Q3JlYXRlKAorICAgICAgYWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlv
X2RlY29kZXJfZmFjdG9yeSwKKyAgICAgIHN0ZDo6bW92ZSh2aWRlb19lbmNvZGVyX2ZhY3Rvcnkp
LCBzdGQ6Om1vdmUodmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSwKKyAgICAgIHdlYnJ0Yzo6Q3JlYXRl
QnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSwgYXVkaW9fbWl4ZXIsCisgICAg
ICBhdWRpb19wcm9jZXNzaW5nKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE1lZGlhRW5naW5lSW50
ZXJmYWNlPiBXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RldmljZU1vZHVsZT4gYWRtLAorICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9y
eSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiBh
dWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9F
bmNvZGVyRmFjdG9yeT4gdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0
cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5Pgor
ICAgICAgICB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAorICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZykgewogI2lm
ZGVmIEhBVkVfV0VCUlRDX1ZJREVPCi0gIHR5cGVkZWYgV2ViUnRjVmlkZW9FbmdpbmUgVmlkZW9F
bmdpbmU7Ci0gIHN0ZDo6dHVwbGU8c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVy
RmFjdG9yeT4sCi0gICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNv
ZGVyRmFjdG9yeT4+Ci0gICAgICB2aWRlb19hcmdzKHN0ZDo6bW92ZSh2aWRlb19lbmNvZGVyX2Zh
Y3RvcnkpLAotICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUodmlkZW9fZGVjb2Rlcl9mYWN0b3J5
KSk7CisgIGF1dG8gdmlkZW9fZW5naW5lID0gYWJzbDo6bWFrZV91bmlxdWU8V2ViUnRjVmlkZW9F
bmdpbmU+KAorICAgICAgc3RkOjptb3ZlKHZpZGVvX2VuY29kZXJfZmFjdG9yeSksIHN0ZDo6bW92
ZSh2aWRlb19kZWNvZGVyX2ZhY3RvcnkpLAorICAgICAgc3RkOjptb3ZlKHZpZGVvX2JpdHJhdGVf
YWxsb2NhdG9yX2ZhY3RvcnkpKTsKICNlbHNlCi0gIHR5cGVkZWYgTnVsbFdlYlJ0Y1ZpZGVvRW5n
aW5lIFZpZGVvRW5naW5lOwotICBzdGQ6OnR1cGxlPD4gdmlkZW9fYXJnczsKKyAgYXV0byB2aWRl
b19lbmdpbmUgPSBhYnNsOjptYWtlX3VuaXF1ZTxOdWxsV2ViUnRjVmlkZW9FbmdpbmU+KCk7CiAj
ZW5kaWYKLSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYUVuZ2luZUludGVyZmFjZT4oCi0g
ICAgICBuZXcgQ29tcG9zaXRlTWVkaWFFbmdpbmU8V2ViUnRjVm9pY2VFbmdpbmUsIFZpZGVvRW5n
aW5lPigKLSAgICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoYWRtLCBhdWRpb19lbmNvZGVy
X2ZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2RlY29kZXJf
ZmFjdG9yeSwgYXVkaW9fbWl4ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
ZGlvX3Byb2Nlc3NpbmcpLAotICAgICAgICAgIHN0ZDo6bW92ZSh2aWRlb19hcmdzKSkpOworICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1lZGlhRW5naW5lSW50ZXJmYWNlPihuZXcgQ29tcG9zaXRl
TWVkaWFFbmdpbmUoCisgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxXZWJSdGNWb2ljZUVuZ2luZT4o
YWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCBhdWRpb19taXhlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wcm9jZXNzaW5nKSwK
KyAgICAgIHN0ZDo6bW92ZSh2aWRlb19lbmdpbmUpKSk7CiB9CiAKIG5hbWVzcGFjZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZS5oCmluZGV4IGQ4MmVj
Y2Y5ZGMzNDdmYWY5NmY4NjMxZmRmMjY0YjkwMjIxNzNhZjkuLmZiZjQ0NjY3MzI3MTVmMzMyNzhk
ODVmZDNhNTZjYmY0MmRjM2IyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93
ZWJydGNtZWRpYWVuZ2luZS5oCkBAIC0yNSw2ICsyNSw3IEBAIGNsYXNzIEF1ZGlvTWl4ZXI7CiBj
bGFzcyBBdWRpb1Byb2Nlc3Npbmc7CiBjbGFzcyBWaWRlb0RlY29kZXJGYWN0b3J5OwogY2xhc3Mg
VmlkZW9FbmNvZGVyRmFjdG9yeTsKK2NsYXNzIFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk7
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiBuYW1lc3BhY2UgY3JpY2tldCB7CiBjbGFzcyBXZWJS
dGNWaWRlb0RlY29kZXJGYWN0b3J5OwpAQCAtNTAsNiArNTEsMjkgQEAgY2xhc3MgV2ViUnRjTWVk
aWFFbmdpbmVGYWN0b3J5IHsKICAgICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCiAgICAg
ICBXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCiAgICAg
ICBXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkpOworCisg
IHN0YXRpYyBNZWRpYUVuZ2luZUludGVyZmFjZSogQ3JlYXRlKAorICAgICAgd2VicnRjOjpBdWRp
b0RldmljZU1vZHVsZSogYWRtLAorICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9FbmNvZGVyRmFjdG9yeT4mCisgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LAorICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFj
dG9yeT4mCisgICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgV2ViUnRjVmlk
ZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgICAgV2ViUnRjVmlk
ZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCisgICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+IGFwbSk7CisKKyAgc3RhdGljIE1l
ZGlhRW5naW5lSW50ZXJmYWNlKiBDcmVhdGUoCisgICAgICB3ZWJydGM6OkF1ZGlvRGV2aWNlTW9k
dWxlKiBhZG0sCisgICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0Vu
Y29kZXJGYWN0b3J5PiYKKyAgICAgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICBj
b25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiYKKyAg
ICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICBXZWJSdGNWaWRlb0VuY29kZXJG
YWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICBXZWJSdGNWaWRlb0RlY29kZXJG
YWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICAgIHZpZGVvX2JpdHJh
dGVfYWxsb2NhdG9yX2ZhY3RvcnkpOworCiAgIHN0YXRpYyBNZWRpYUVuZ2luZUludGVyZmFjZSog
Q3JlYXRlKAogICAgICAgd2VicnRjOjpBdWRpb0RldmljZU1vZHVsZSogYWRtLAogICAgICAgY29u
c3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9FbmNvZGVyRmFjdG9yeT4mCkBAIC01
OCw2ICs4Miw4IEBAIGNsYXNzIFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeSB7CiAgICAgICAgICAg
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAogICAgICAgV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSog
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAogICAgICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSog
dmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6Vmlk
ZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgICAgICB2aWRlb19iaXRyYXRlX2FsbG9j
YXRvcl9mYWN0b3J5LAogICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9NaXhl
cj4gYXVkaW9fbWl4ZXIsCiAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1By
b2Nlc3Npbmc+IGFwbSk7CiAjZW5kaWYKQEAgLTczLDYgKzk5LDE3IEBAIGNsYXNzIFdlYlJ0Y01l
ZGlhRW5naW5lRmFjdG9yeSB7CiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0Rl
Y29kZXJGYWN0b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCiAgICAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpBdWRpb01peGVyPiBhdWRpb19taXhlciwKICAgICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZyk7CisKKyAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYUVuZ2luZUludGVyZmFjZT4gQ3JlYXRlKAorICAg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGU+IGFkbSwKKyAg
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlv
X2VuY29kZXJfZmFjdG9yeSwKKyAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlv
RGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICAgIHN0ZDo6dW5pcXVl
X3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwK
KyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IHZpZGVv
X2RlY29kZXJfZmFjdG9yeSwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0
cmF0ZUFsbG9jYXRvckZhY3Rvcnk+CisgICAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeSwKKyAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvTWl4ZXI+IGF1
ZGlvX21peGVyLAorICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Qcm9jZXNz
aW5nPiBhdWRpb19wcm9jZXNzaW5nKTsKIH07CiAKIC8vIFZlcmlmeSB0aGF0IGV4dGVuc2lvbiBJ
RHMgYXJlIHdpdGhpbiAxLWJ5dGUgZXh0ZW5zaW9uIHJhbmdlIGFuZCBhcmUgbm90CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdp
bmUvd2VicnRjbWVkaWFlbmdpbmVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmVfdW5pdHRl
c3QuY2MKaW5kZXggNGZhOWE2YjVlZTM1ZDg5Y2JmYzY4NTQ5MTlkMWJmNDRhZDUzOTY0MC4uZWVj
N2RjMzljNDg4MWMzNjlkNGJlNjQyYzlmNmMzY2RiODMxMDA0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y21l
ZGlhZW5naW5lX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZV91bml0dGVzdC5jYwpA
QCAtMTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1
ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRp
bl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2Nv
ZGVjcy9idWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRl
b19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtZWRp
YS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaCIKQEAgLTI0OSw0ICsyNTAsMTUgQEAgVEVTVChX
ZWJSdGNNZWRpYUVuZ2luZUZhY3RvcnlUZXN0LCBDcmVhdGVXaXRoQnVpbHRpbkRlY29kZXJzKSB7
CiAgIEVYUEVDVF9UUlVFKGVuZ2luZSk7CiB9CiAKK1RFU1QoV2ViUnRjTWVkaWFFbmdpbmVGYWN0
b3J5VGVzdCwgQ3JlYXRlV2l0aFZpZGVvQml0cmF0ZUZhY3RvcnkpIHsKKyAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhRW5naW5lSW50ZXJmYWNlPiBlbmdpbmUoV2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5
OjpDcmVhdGUoCisgICAgICBudWxscHRyIC8qIGFkbSAqLywgd2VicnRjOjpDcmVhdGVCdWlsdGlu
QXVkaW9FbmNvZGVyRmFjdG9yeSgpLAorICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9E
ZWNvZGVyRmFjdG9yeSgpLAorICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluVmlkZW9FbmNvZGVy
RmFjdG9yeSgpLAorICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluVmlkZW9EZWNvZGVyRmFjdG9y
eSgpLAorICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFj
dG9yeSgpLAorICAgICAgbnVsbHB0ciAvKiBhdWRpb19taXhlciAqLywgd2VicnRjOjpBdWRpb1By
b2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpKTsKKyAgRVhQRUNUX1RSVUUoZW5naW5lKTsKK30K
KwogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2RlY29kZXJm
YWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9lbmdpbmUvd2VicnRjdmlkZW9kZWNvZGVyZmFjdG9yeS5oCmluZGV4IDAxNmNiMDlkYTAwMGY0
NzRmYWRkNjU2MjI5MzRkZDYzMDhhOTUwZTAuLmYwMGQ5YTY5ZTBlMjY2ZDU4OWQyZmY5NDcyYmQ1
NGE0ZjNlZTI3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2RlY29kZXJmYWN0b3J5LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dl
YnJ0Y3ZpZGVvZGVjb2RlcmZhY3RvcnkuaApAQCAtMTMsOSArMTMsMTAgQEAKIAogI2luY2x1ZGUg
PHN0cmluZz4KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2lu
Y2x1ZGUpCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvZGVjX3R5cGUuaCIKICNpbmNsdWRl
ICJtZWRpYS9iYXNlL2NvZGVjLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIGNsYXNzIFZpZGVvRGVjb2RlcjsKQEAgLTI5LDcgKzMwLDcgQEAgc3RydWN0IFZpZGVvRGVj
b2RlclBhcmFtcyB7CiAKIC8vIERlcHJlY2F0ZWQuIFVzZSB3ZWJydGM6OlZpZGVvRGVjb2RlckZh
Y3RvcnkgaW5zdGVhZC4KIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC93ZWJydGMvaXNz
dWVzL2RldGFpbD9pZD03OTI1Ci1jbGFzcyBXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5IHsKK2Ns
YXNzIFJUQ19FWFBPUlQgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSB7CiAgcHVibGljOgogICAv
LyBDYWxsZXIgdGFrZXMgdGhlIG93bmVyc2hpcCBvZiB0aGUgcmV0dXJuZWQgb2JqZWN0IGFuZCBp
dCBzaG91bGQgYmUgcmVsZWFzZWQKICAgLy8gYnkgY2FsbGluZyBEZXN0cm95VmlkZW9EZWNvZGVy
KCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmNvZGVyZmFjdG9yeS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5j
b2RlcmZhY3RvcnkuaAppbmRleCA5N2FjMDNiNDczZjhmMGM3OGM4NGVlODY1MDM2NTYwY2FkNjE5
MjEzLi5kMzllMGZkNWY5NWFlNDU0MDgwMTUwM2YyZDU1OGZkODBmMjBiNzc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
d2VicnRjdmlkZW9lbmNvZGVyZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuY29kZXJmYWN0b3J5
LmgKQEAgLTE0LDggKzE0LDkgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9y
PgogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkK
KyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oIgogI2luY2x1ZGUgIm1lZGlh
L2Jhc2UvY29kZWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIFZpZGVvRW5jb2RlcjsKQEAgLTI1LDcgKzI2LDcg
QEAgbmFtZXNwYWNlIGNyaWNrZXQgewogCiAvLyBEZXByZWNhdGVkLiBVc2Ugd2VicnRjOjpWaWRl
b0VuY29kZXJGYWN0b3J5IGluc3RlYWQuCiAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Av
d2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9NzkyNQotY2xhc3MgV2ViUnRjVmlkZW9FbmNvZGVyRmFj
dG9yeSB7CitjbGFzcyBSVENfRVhQT1JUIFdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkgewogIHB1
YmxpYzoKICAgdmlydHVhbCB+V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSgpIHt9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Vu
Z2luZS93ZWJydGN2aWRlb2VuZ2luZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZS5jYwppbmRleCA0MGIw
YzQ1YTNkODMyYzExNjZhYzM3NDRlZmFkNjVlN2ZlMDM2ZDAxLi5hNzVkYjczNjk3MDY5YjkzN2Zh
ODhiNjE3YzNlM2Q5YTRmNGI0OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5l
L3dlYnJ0Y3ZpZGVvZW5naW5lLmNjCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSA8c3RyaW5n
PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIK
ICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKICNpbmNsdWRl
ICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgpAQCAtMTExLDggKzExMiw4IEBAIHN0ZDo6
dmVjdG9yPFZpZGVvQ29kZWM+IEFzc2lnblBheWxvYWRUeXBlc0FuZERlZmF1bHRDb2RlY3MoCiAg
ICAgfQogCiAgICAgLy8gQWRkIGFzc29jaWF0ZWQgUlRYIGNvZGVjIGZvciBub24tRkVDIGNvZGVj
cy4KLSAgICBpZiAoIUNvZGVjTmFtZXNFcShjb2RlYy5uYW1lLCBrVWxwZmVjQ29kZWNOYW1lKSAm
JgotICAgICAgICAhQ29kZWNOYW1lc0VxKGNvZGVjLm5hbWUsIGtGbGV4ZmVjQ29kZWNOYW1lKSkg
eworICAgIGlmICghYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBrVWxwZmVjQ29k
ZWNOYW1lKSAmJgorICAgICAgICAhYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBr
RmxleGZlY0NvZGVjTmFtZSkpIHsKICAgICAgIG91dHB1dF9jb2RlY3MucHVzaF9iYWNrKAogICAg
ICAgICAgIFZpZGVvQ29kZWM6OkNyZWF0ZVJ0eENvZGVjKHBheWxvYWRfdHlwZSwgY29kZWMuaWQp
KTsKIApAQCAtMTQ3LDggKzE0OCw4IEBAIGludCBHZXRNYXhGcmFtZXJhdGUoY29uc3Qgd2VicnRj
OjpWaWRlb0VuY29kZXJDb25maWcmIGVuY29kZXJfY29uZmlnLAogfQogCiBib29sIElzVGVtcG9y
YWxMYXllcnNTdXBwb3J0ZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGNvZGVjX25hbWUpIHsKLSAgcmV0
dXJuIENvZGVjTmFtZXNFcShjb2RlY19uYW1lLCBrVnA4Q29kZWNOYW1lKSB8fAotICAgICAgICAg
Q29kZWNOYW1lc0VxKGNvZGVjX25hbWUsIGtWcDlDb2RlY05hbWUpOworICByZXR1cm4gYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShjb2RlY19uYW1lLCBrVnA4Q29kZWNOYW1lKSB8fAorICAgICAgICAg
YWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19uYW1lLCBrVnA5Q29kZWNOYW1lKTsKIH0KIAog
c3RhdGljIHN0ZDo6c3RyaW5nIENvZGVjVmVjdG9yVG9TdHJpbmcoY29uc3Qgc3RkOjp2ZWN0b3I8
VmlkZW9Db2RlYz4mIGNvZGVjcykgewpAQCAtMjIwLDkgKzIyMSw5IEBAIHN0YXRpYyBib29sIFZh
bGlkYXRlU3RyZWFtUGFyYW1zKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIHsKIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgZ2l2ZW4gY29kZWMgaXMgZGlzYWxsb3dlZCBmcm9tIGRvaW5nIHNpbXVsY2Fz
dC4KIGJvb2wgSXNDb2RlY0JsYWNrbGlzdGVkRm9yU2ltdWxjYXN0KGNvbnN0IHN0ZDo6c3RyaW5n
JiBjb2RlY19uYW1lKSB7CiAgIHJldHVybiB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQo
IldlYlJUQy1IMjY0U2ltdWxjYXN0IikKLSAgICA/IENvZGVjTmFtZXNFcShjb2RlY19uYW1lLCBr
VnA5Q29kZWNOYW1lKQotICAgIDogQ29kZWNOYW1lc0VxKGNvZGVjX25hbWUsIGtIMjY0Q29kZWNO
YW1lKSB8fAotICAgICAgQ29kZWNOYW1lc0VxKGNvZGVjX25hbWUsIGtWcDlDb2RlY05hbWUpOwor
ICAgICAgICAgICAgID8gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19uYW1lLCBrVnA5Q29k
ZWNOYW1lKQorICAgICAgICAgICAgIDogYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19uYW1l
LCBrSDI2NENvZGVjTmFtZSkgfHwKKyAgICAgICAgICAgICAgICAgICBhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKGNvZGVjX25hbWUsIGtWcDlDb2RlY05hbWUpOwogfQogCiAvLyBUaGUgc2VsZWN0ZWQg
dGhyZXNob2xkcyBmb3IgUVZHQSBhbmQgVkdBIGNvcnJlc3BvbmRlZCB0byBhIFFQIGFyb3VuZCAx
MC4KQEAgLTMzNywxNCArMzM4LDE0IEBAIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9T
ZW5kU3RyZWFtOjpDb25maWd1cmVWaWRlb0VuY29kZXJTZXR0aW5ncygKICAgICBkZW5vaXNpbmcg
PSBwYXJhbWV0ZXJzXy5vcHRpb25zLnZpZGVvX25vaXNlX3JlZHVjdGlvbi52YWx1ZV9vcihmYWxz
ZSk7CiAgIH0KIAotICBpZiAoQ29kZWNOYW1lc0VxKGNvZGVjLm5hbWUsIGtIMjY0Q29kZWNOYW1l
KSkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBrSDI2NENvZGVj
TmFtZSkpIHsKICAgICB3ZWJydGM6OlZpZGVvQ29kZWNIMjY0IGgyNjRfc2V0dGluZ3MgPQogICAg
ICAgICB3ZWJydGM6OlZpZGVvRW5jb2Rlcjo6R2V0RGVmYXVsdEgyNjRTZXR0aW5ncygpOwogICAg
IGgyNjRfc2V0dGluZ3MuZnJhbWVEcm9wcGluZ09uID0gZnJhbWVfZHJvcHBpbmc7CiAgICAgcmV0
dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8CiAgICAgICAgIHdlYnJ0Yzo6VmlkZW9FbmNv
ZGVyQ29uZmlnOjpIMjY0RW5jb2RlclNwZWNpZmljU2V0dGluZ3M+KGgyNjRfc2V0dGluZ3MpOwog
ICB9Ci0gIGlmIChDb2RlY05hbWVzRXEoY29kZWMubmFtZSwga1ZwOENvZGVjTmFtZSkpIHsKKyAg
aWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwga1ZwOENvZGVjTmFtZSkpIHsK
ICAgICB3ZWJydGM6OlZpZGVvQ29kZWNWUDggdnA4X3NldHRpbmdzID0KICAgICAgICAgd2VicnRj
OjpWaWRlb0VuY29kZXI6OkdldERlZmF1bHRWcDhTZXR0aW5ncygpOwogICAgIHZwOF9zZXR0aW5n
cy5hdXRvbWF0aWNSZXNpemVPbiA9IGF1dG9tYXRpY19yZXNpemU7CkBAIC0zNTQsNyArMzU1LDcg
QEAgV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNWaWRlb1NlbmRTdHJlYW06OkNvbmZpZ3VyZVZp
ZGVvRW5jb2RlclNldHRpbmdzKAogICAgIHJldHVybiBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0
PAogICAgICAgICB3ZWJydGM6OlZpZGVvRW5jb2RlckNvbmZpZzo6VnA4RW5jb2RlclNwZWNpZmlj
U2V0dGluZ3M+KHZwOF9zZXR0aW5ncyk7CiAgIH0KLSAgaWYgKENvZGVjTmFtZXNFcShjb2RlYy5u
YW1lLCBrVnA5Q29kZWNOYW1lKSkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2Rl
Yy5uYW1lLCBrVnA5Q29kZWNOYW1lKSkgewogICAgIHdlYnJ0Yzo6VmlkZW9Db2RlY1ZQOSB2cDlf
c2V0dGluZ3MgPQogICAgICAgICB3ZWJydGM6OlZpZGVvRW5jb2Rlcjo6R2V0RGVmYXVsdFZwOVNl
dHRpbmdzKCk7CiAgICAgY29uc3Qgc2l6ZV90IGRlZmF1bHRfbnVtX3NwYXRpYWxfbGF5ZXJzID0K
QEAgLTQzNiwyMCArNDM3LDI2IEBAIHZvaWQgRGVmYXVsdFVuc2lnbmFsbGVkU3NyY0hhbmRsZXI6
OlNldERlZmF1bHRTaW5rKAogI2lmIGRlZmluZWQoVVNFX0JVSUxUSU5fU1dfQ09ERUNTKQogV2Vi
UnRjVmlkZW9FbmdpbmU6OldlYlJ0Y1ZpZGVvRW5naW5lKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5PiBleHRlcm5hbF92aWRlb19lbmNvZGVyX2ZhY3Rvcnks
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnk+IGV4dGVybmFs
X3ZpZGVvX2RlY29kZXJfZmFjdG9yeSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9E
ZWNvZGVyRmFjdG9yeT4gZXh0ZXJuYWxfdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+CisgICAgICAg
IHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkpCiAgICAgOiBkZWNvZGVyX2ZhY3Rvcnlf
KENvbnZlcnRWaWRlb0RlY29kZXJGYWN0b3J5KAogICAgICAgICAgIHN0ZDo6bW92ZShleHRlcm5h
bF92aWRlb19kZWNvZGVyX2ZhY3RvcnkpKSksCiAgICAgICBlbmNvZGVyX2ZhY3RvcnlfKENvbnZl
cnRWaWRlb0VuY29kZXJGYWN0b3J5KAotICAgICAgICAgIHN0ZDo6bW92ZShleHRlcm5hbF92aWRl
b19lbmNvZGVyX2ZhY3RvcnkpKSkgeworICAgICAgICAgIHN0ZDo6bW92ZShleHRlcm5hbF92aWRl
b19lbmNvZGVyX2ZhY3RvcnkpKSksCisgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xyhz
dGQ6Om1vdmUodmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkpIHsKICAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiV2ViUnRjVmlkZW9FbmdpbmU6OldlYlJ0Y1ZpZGVvRW5naW5lKCkiOwogfQog
I2VuZGlmCiAKIFdlYlJ0Y1ZpZGVvRW5naW5lOjpXZWJSdGNWaWRlb0VuZ2luZSgKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiB2aWRlb19lbmNvZGVyX2Zh
Y3RvcnksCi0gICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4g
dmlkZW9fZGVjb2Rlcl9mYWN0b3J5KQorICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVv
RGVjb2RlckZhY3Rvcnk+IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICB2aWRlb19i
aXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KQogICAgIDogZGVjb2Rlcl9mYWN0b3J5XyhzdGQ6Om1v
dmUodmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSksCi0gICAgICBlbmNvZGVyX2ZhY3RvcnlfKHN0ZDo6
bW92ZSh2aWRlb19lbmNvZGVyX2ZhY3RvcnkpKSB7CisgICAgICBlbmNvZGVyX2ZhY3RvcnlfKHN0
ZDo6bW92ZSh2aWRlb19lbmNvZGVyX2ZhY3RvcnkpKSwKKyAgICAgIGJpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnlfKHN0ZDo6bW92ZSh2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KSkgewog
ICBSVENfTE9HKExTX0lORk8pIDw8ICJXZWJSdGNWaWRlb0VuZ2luZTo6V2ViUnRjVmlkZW9Fbmdp
bmUoKSI7CiB9CiAKQEAgLTQ1NywxNSArNDY0LDE2IEBAIFdlYlJ0Y1ZpZGVvRW5naW5lOjp+V2Vi
UnRjVmlkZW9FbmdpbmUoKSB7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIldlYlJ0Y1ZpZGVvRW5n
aW5lOjp+V2ViUnRjVmlkZW9FbmdpbmUiOwogfQogCi1XZWJSdGNWaWRlb0NoYW5uZWwqIFdlYlJ0
Y1ZpZGVvRW5naW5lOjpDcmVhdGVDaGFubmVsKAorVmlkZW9NZWRpYUNoYW5uZWwqIFdlYlJ0Y1Zp
ZGVvRW5naW5lOjpDcmVhdGVNZWRpYUNoYW5uZWwoCiAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAog
ICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgY29uc3QgVmlkZW9PcHRpb25zJiBv
cHRpb25zKSB7Ci0gIFJUQ19MT0coTFNfSU5GTykgPDwgIkNyZWF0ZUNoYW5uZWwuIE9wdGlvbnM6
ICIgPDwgb3B0aW9ucy5Ub1N0cmluZygpOwotICByZXR1cm4gbmV3IFdlYlJ0Y1ZpZGVvQ2hhbm5l
bChjYWxsLCBjb25maWcsIG9wdGlvbnMsIGVuY29kZXJfZmFjdG9yeV8uZ2V0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXJfZmFjdG9yeV8uZ2V0KCkpOworICAgIGNv
bnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlv
bnMmIGNyeXB0b19vcHRpb25zKSB7CisgIFJUQ19MT0coTFNfSU5GTykgPDwgIkNyZWF0ZU1lZGlh
Q2hhbm5lbC4gT3B0aW9uczogIiA8PCBvcHRpb25zLlRvU3RyaW5nKCk7CisgIHJldHVybiBuZXcg
V2ViUnRjVmlkZW9DaGFubmVsKGNhbGwsIGNvbmZpZywgb3B0aW9ucywgY3J5cHRvX29wdGlvbnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJfZmFjdG9yeV8uZ2V0KCks
IGRlY29kZXJfZmFjdG9yeV8uZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfLmdldCgpKTsKIH0KLQogc3RkOjp2ZWN0b3I8Vmlk
ZW9Db2RlYz4gV2ViUnRjVmlkZW9FbmdpbmU6OmNvZGVjcygpIGNvbnN0IHsKICAgcmV0dXJuIEFz
c2lnblBheWxvYWRUeXBlc0FuZERlZmF1bHRDb2RlY3MoZW5jb2Rlcl9mYWN0b3J5Xy5nZXQoKSk7
CiB9CkBAIC00OTYsNiArNTA0LDExIEBAIFJ0cENhcGFiaWxpdGllcyBXZWJSdGNWaWRlb0VuZ2lu
ZTo6R2V0Q2FwYWJpbGl0aWVzKCkgY29uc3QgewogICBjYXBhYmlsaXRpZXMuaGVhZGVyX2V4dGVu
c2lvbnMucHVzaF9iYWNrKAogICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb24od2VicnRjOjpSdHBF
eHRlbnNpb246OmtGcmFtZU1hcmtpbmdVcmksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a0ZyYW1lTWFya2luZ0RlZmF1bHRJZCkpOworICBpZiAod2Vi
cnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtR2VuZXJpY0Rlc2NyaXB0b3JBZHZl
cnRpc2VkIikpIHsKKyAgICBjYXBhYmlsaXRpZXMuaGVhZGVyX2V4dGVuc2lvbnMucHVzaF9iYWNr
KHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uKAorICAgICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a0dl
bmVyaWNGcmFtZURlc2NyaXB0b3JVcmksCisgICAgICAgIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjpr
R2VuZXJpY0ZyYW1lRGVzY3JpcHRvckRlZmF1bHRJZCkpOworICB9CiAgIC8vIFRPRE8oYnVncy53
ZWJydGMub3JnLzQwNTApOiBBZGQgTUlEIGhlYWRlciBleHRlbnNpb24gYXMgY2FwYWJpbGl0eSBv
bmNlIE1JRAogICAvLyBkZW11eGluZyBpcyBjb21wbGV0ZWQuCiAgIC8vIGNhcGFiaWxpdGllcy5o
ZWFkZXJfZXh0ZW5zaW9ucy5wdXNoX2JhY2sod2VicnRjOjpSdHBFeHRlbnNpb24oCkBAIC01MDcs
MTYgKzUyMCwyMyBAQCBXZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvQ2hhbm5lbCgKICAg
ICB3ZWJydGM6OkNhbGwqIGNhbGwsCiAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKICAg
ICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9P
cHRpb25zJiBjcnlwdG9fb3B0aW9ucywKICAgICB3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnkq
IGVuY29kZXJfZmFjdG9yeSwKLSAgICB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3RvcnkqIGRlY29k
ZXJfZmFjdG9yeSkKKyAgICB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3RvcnkqIGRlY29kZXJfZmFj
dG9yeSwKKyAgICB3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkqIGJpdHJhdGVf
YWxsb2NhdG9yX2ZhY3RvcnkpCiAgICAgOiBWaWRlb01lZGlhQ2hhbm5lbChjb25maWcpLAogICAg
ICAgY2FsbF8oY2FsbCksCiAgICAgICB1bnNpZ25hbGxlZF9zc3JjX2hhbmRsZXJfKCZkZWZhdWx0
X3Vuc2lnbmFsbGVkX3NzcmNfaGFuZGxlcl8pLAogICAgICAgdmlkZW9fY29uZmlnXyhjb25maWcu
dmlkZW8pLAogICAgICAgZW5jb2Rlcl9mYWN0b3J5XyhlbmNvZGVyX2ZhY3RvcnkpLAogICAgICAg
ZGVjb2Rlcl9mYWN0b3J5XyhkZWNvZGVyX2ZhY3RvcnkpLAorICAgICAgYml0cmF0ZV9hbGxvY2F0
b3JfZmFjdG9yeV8oYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSksCisgICAgICBwcmVmZXJyZWRf
ZHNjcF8ocnRjOjpEU0NQX0RFRkFVTFQpLAogICAgICAgZGVmYXVsdF9zZW5kX29wdGlvbnNfKG9w
dGlvbnMpLAotICAgICAgbGFzdF9zdGF0c19sb2dfbXNfKC0xKSB7CisgICAgICBsYXN0X3N0YXRz
X2xvZ19tc18oLTEpLAorICAgICAgZGlzY2FyZF91bmtub3duX3NzcmNfcGFja2V0c18od2VicnRj
OjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKAorICAgICAgICAgICJXZWJSVEMtVmlkZW8tRGlzY2Fy
ZFBhY2tldHNXaXRoVW5rbm93blNzcmMiKSksCisgICAgICBjcnlwdG9fb3B0aW9uc18oY3J5cHRv
X29wdGlvbnMpIHsKICAgUlRDX0RDSEVDSyh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRo
cmVhZCgpKTsKIAogICBydGNwX3JlY2VpdmVyX3JlcG9ydF9zc3JjXyA9IGtEZWZhdWx0UnRjcFJl
Y2VpdmVyUmVwb3J0U3NyYzsKQEAgLTYxMiw2ICs2MzIsOSBAQCBib29sIFdlYlJ0Y1ZpZGVvQ2hh
bm5lbDo6R2V0Q2hhbmdlZFNlbmRQYXJhbWV0ZXJzKAogICAgIGNoYW5nZWRfcGFyYW1zLT5jb2Rl
YyA9IHNlbGVjdGVkX3NlbmRfY29kZWM7CiAKICAgLy8gSGFuZGxlIFJUUCBoZWFkZXIgZXh0ZW5z
aW9ucy4KKyAgaWYgKHBhcmFtcy5leHRtYXBfYWxsb3dfbWl4ZWQgIT0gRXh0bWFwQWxsb3dNaXhl
ZCgpKSB7CisgICAgY2hhbmdlZF9wYXJhbXMtPmV4dG1hcF9hbGxvd19taXhlZCA9IHBhcmFtcy5l
eHRtYXBfYWxsb3dfbWl4ZWQ7CisgIH0KICAgc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBFeHRlbnNp
b24+IGZpbHRlcmVkX2V4dGVuc2lvbnMgPSBGaWx0ZXJSdHBFeHRlbnNpb25zKAogICAgICAgcGFy
YW1zLmV4dGVuc2lvbnMsIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjpJc1N1cHBvcnRlZEZvclZpZGVv
LCB0cnVlKTsKICAgaWYgKCFzZW5kX3J0cF9leHRlbnNpb25zXyB8fCAoKnNlbmRfcnRwX2V4dGVu
c2lvbnNfICE9IGZpbHRlcmVkX2V4dGVuc2lvbnMpKSB7CkBAIC02NDksNyArNjcyLDcgQEAgYm9v
bCBXZWJSdGNWaWRlb0NoYW5uZWw6OkdldENoYW5nZWRTZW5kUGFyYW1ldGVycygKIH0KIAogcnRj
OjpEaWZmU2VydkNvZGVQb2ludCBXZWJSdGNWaWRlb0NoYW5uZWw6OlByZWZlcnJlZERzY3AoKSBj
b25zdCB7Ci0gIHJldHVybiBydGM6OkRTQ1BfQUY0MTsKKyAgcmV0dXJuIHByZWZlcnJlZF9kc2Nw
XzsKIH0KIAogYm9vbCBXZWJSdGNWaWRlb0NoYW5uZWw6OlNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0
IFZpZGVvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgewpAQCAtNjY2LDYgKzY4OSw5IEBAIGJvb2wg
V2ViUnRjVmlkZW9DaGFubmVsOjpTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBWaWRlb1NlbmRQYXJh
bWV0ZXJzJiBwYXJhbXMpIHsKICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJVc2luZyBjb2RlYzog
IiA8PCBjb2RlY19zZXR0aW5ncy5jb2RlYy5Ub1N0cmluZygpOwogICB9CiAKKyAgaWYgKGNoYW5n
ZWRfcGFyYW1zLmV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIFNldEV4dG1hcEFsbG93TWl4ZWQo
KmNoYW5nZWRfcGFyYW1zLmV4dG1hcF9hbGxvd19taXhlZCk7CisgIH0KICAgaWYgKGNoYW5nZWRf
cGFyYW1zLnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucykgewogICAgIHNlbmRfcnRwX2V4dGVuc2lvbnNf
ID0gY2hhbmdlZF9wYXJhbXMucnRwX2hlYWRlcl9leHRlbnNpb25zOwogICB9CkBAIC03NjQsMTEg
Kzc5MCwzNCBAQCB3ZWJydGM6OlJUQ0Vycm9yIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6U2V0UnRwU2Vu
ZFBhcmFtZXRlcnMoCiAgIC8vIGRpZmZlcmVudCBvcmRlciAod2hpY2ggc2hvdWxkIGNoYW5nZSB0
aGUgc2VuZCBjb2RlYykuCiAgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBjdXJyZW50X3BhcmFtZXRl
cnMgPSBHZXRSdHBTZW5kUGFyYW1ldGVycyhzc3JjKTsKICAgaWYgKGN1cnJlbnRfcGFyYW1ldGVy
cy5jb2RlY3MgIT0gcGFyYW1ldGVycy5jb2RlY3MpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8
PCAiVXNpbmcgU2V0UGFyYW1ldGVycyB0byBjaGFuZ2UgdGhlIHNldCBvZiBjb2RlY3MgIgotICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4iOworICAg
IFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiVXNpbmcgU2V0UGFyYW1ldGVycyB0byBjaGFuZ2UgdGhl
IHNldCBvZiBjb2RlY3MgIgorICAgICAgICAgICAgICAgICAgICAgICA8PCAiaXMgbm90IGN1cnJl
bnRseSBzdXBwb3J0ZWQuIjsKICAgICByZXR1cm4gd2VicnRjOjpSVENFcnJvcih3ZWJydGM6OlJU
Q0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IpOwogICB9CiAKKyAgaWYgKCFwYXJhbWV0ZXJzLmVu
Y29kaW5ncy5lbXB0eSgpKSB7CisgICAgY29uc3QgYXV0byYgcHJpb3JpdHkgPSBwYXJhbWV0ZXJz
LmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5OworICAgIHJ0Yzo6RGlmZlNlcnZDb2RlUG9p
bnQgbmV3X2RzY3AgPSBydGM6OkRTQ1BfREVGQVVMVDsKKyAgICBpZiAocHJpb3JpdHkgPT0gMC41
ICogd2VicnRjOjprRGVmYXVsdEJpdHJhdGVQcmlvcml0eSkgeworICAgICAgbmV3X2RzY3AgPSBy
dGM6OkRTQ1BfQ1MxOworICAgIH0gZWxzZSBpZiAocHJpb3JpdHkgPT0gd2VicnRjOjprRGVmYXVs
dEJpdHJhdGVQcmlvcml0eSkgeworICAgICAgbmV3X2RzY3AgPSBydGM6OkRTQ1BfREVGQVVMVDsK
KyAgICB9IGVsc2UgaWYgKHByaW9yaXR5ID09IDIuMCAqIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRl
UHJpb3JpdHkpIHsKKyAgICAgIG5ld19kc2NwID0gcnRjOjpEU0NQX0FGNDI7CisgICAgfSBlbHNl
IGlmIChwcmlvcml0eSA9PSA0LjAgKiB3ZWJydGM6OmtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5KSB7
CisgICAgICBuZXdfZHNjcCA9IHJ0Yzo6RFNDUF9BRjQxOworICAgIH0gZWxzZSB7CisgICAgICBS
VENfTE9HKExTX1dBUk5JTkcpIDw8ICJSZWNlaXZlZCBpbnZhbGlkIHNlbmQgbmV0d29yayBwcmlv
cml0eTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBwcmlvcml0eTsKKyAgICAgIHJl
dHVybiB3ZWJydGM6OlJUQ0Vycm9yKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpJTlZBTElEX1JBTkdF
KTsKKyAgICB9CisKKyAgICBpZiAobmV3X2RzY3AgIT0gcHJlZmVycmVkX2RzY3BfKSB7CisgICAg
ICBwcmVmZXJyZWRfZHNjcF8gPSBuZXdfZHNjcDsKKyAgICAgIE1lZGlhQ2hhbm5lbDo6VXBkYXRl
RHNjcCgpOworICAgIH0KKyAgfQorCiAgIHJldHVybiBpdC0+c2Vjb25kLT5TZXRSdHBQYXJhbWV0
ZXJzKHBhcmFtZXRlcnMpOwogfQogCkBAIC04MzIsOCArODgxLDggQEAgYm9vbCBXZWJSdGNWaWRl
b0NoYW5uZWw6OlNldFJ0cFJlY2VpdmVQYXJhbWV0ZXJzKAogCiAgIHdlYnJ0Yzo6UnRwUGFyYW1l
dGVycyBjdXJyZW50X3BhcmFtZXRlcnMgPSBHZXRSdHBSZWNlaXZlUGFyYW1ldGVycyhzc3JjKTsK
ICAgaWYgKGN1cnJlbnRfcGFyYW1ldGVycyAhPSBwYXJhbWV0ZXJzKSB7Ci0gICAgUlRDX0xPRyhM
U19FUlJPUikgPDwgIkNoYW5naW5nIHRoZSBSVFAgcmVjZWl2ZSBwYXJhbWV0ZXJzIGlzIGN1cnJl
bnRseSAiCi0gICAgICAgICAgICAgICAgICAgICAgPDwgInVuc3VwcG9ydGVkLiI7CisgICAgUlRD
X0RMT0coTFNfRVJST1IpIDw8ICJDaGFuZ2luZyB0aGUgUlRQIHJlY2VpdmUgcGFyYW1ldGVycyBp
cyBjdXJyZW50bHkgIgorICAgICAgICAgICAgICAgICAgICAgICA8PCAidW5zdXBwb3J0ZWQuIjsK
ICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICAgcmV0dXJuIHRydWU7CkBAIC05NDksNyArOTk4LDcg
QEAgYm9vbCBXZWJSdGNWaWRlb0NoYW5uZWw6OlNldFNlbmQoYm9vbCBzZW5kKSB7CiAgIFRSQUNF
X0VWRU5UMCgid2VicnRjIiwgIldlYlJ0Y1ZpZGVvQ2hhbm5lbDo6U2V0U2VuZCIpOwogICBSVENf
TE9HKExTX1ZFUkJPU0UpIDw8ICJTZXRTZW5kOiAiIDw8IChzZW5kID8gInRydWUiIDogImZhbHNl
Iik7CiAgIGlmIChzZW5kICYmICFzZW5kX2NvZGVjXykgewotICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJTZXRTZW5kKHRydWUpIGNhbGxlZCBiZWZvcmUgc2V0dGluZyBjb2RlYy4iOworICAgIFJU
Q19ETE9HKExTX0VSUk9SKSA8PCAiU2V0U2VuZCh0cnVlKSBjYWxsZWQgYmVmb3JlIHNldHRpbmcg
Y29kZWMuIjsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICAgewpAQCAtMTAyOCw2ICsxMDc3LDEx
IEBAIGJvb2wgV2ViUnRjVmlkZW9DaGFubmVsOjpBZGRTZW5kU3RyZWFtKGNvbnN0IFN0cmVhbVBh
cmFtcyYgc3ApIHsKICAgY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuZXhwZXJpbWVudF9jcHVfbG9h
ZF9lc3RpbWF0b3IgPQogICAgICAgdmlkZW9fY29uZmlnXy5leHBlcmltZW50X2NwdV9sb2FkX2Vz
dGltYXRvcjsKICAgY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gZW5j
b2Rlcl9mYWN0b3J5XzsKKyAgY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0
b3JfZmFjdG9yeSA9CisgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XzsKKyAgY29uZmln
LmNyeXB0b19vcHRpb25zID0gY3J5cHRvX29wdGlvbnNfOworICBjb25maWcucnRwLmV4dG1hcF9h
bGxvd19taXhlZCA9IEV4dG1hcEFsbG93TWl4ZWQoKTsKKyAgY29uZmlnLnJ0Y3BfcmVwb3J0X2lu
dGVydmFsX21zID0gdmlkZW9fY29uZmlnXy5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tczsKIAogICBX
ZWJSdGNWaWRlb1NlbmRTdHJlYW0qIHN0cmVhbSA9IG5ldyBXZWJSdGNWaWRlb1NlbmRTdHJlYW0o
CiAgICAgICBjYWxsXywgc3AsIHN0ZDo6bW92ZShjb25maWcpLCBkZWZhdWx0X3NlbmRfb3B0aW9u
c18sCkBAIC0xMTQ0LDYgKzExOTgsNyBAQCBib29sIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6QWRkUmVj
dlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwLAogICB3ZWJydGM6OkZsZXhmZWNSZWNlaXZl
U3RyZWFtOjpDb25maWcgZmxleGZlY19jb25maWcodGhpcyk7CiAgIENvbmZpZ3VyZVJlY2VpdmVy
UnRwKCZjb25maWcsICZmbGV4ZmVjX2NvbmZpZywgc3ApOwogCisgIGNvbmZpZy5jcnlwdG9fb3B0
aW9ucyA9IGNyeXB0b19vcHRpb25zXzsKICAgLy8gVE9ETyhuaXNzZSk6IFJlbmFtZSBjb25maWcg
dmFyaWFibGUgdG8gYXZvaWQgbmVnYXRpb24uCiAgIGNvbmZpZy5kaXNhYmxlX3ByZXJlbmRlcmVy
X3Ntb290aGluZyA9CiAgICAgICAhdmlkZW9fY29uZmlnXy5lbmFibGVfcHJlcmVuZGVyZXJfc21v
b3RoaW5nOwpAQCAtMTMzMiwxMCArMTM4NywxMCBAQCB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6
RmlsbFNlbmRBbmRSZWNlaXZlQ29kZWNTdGF0cygKIH0KIAogdm9pZCBXZWJSdGNWaWRlb0NoYW5u
ZWw6Ok9uUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRU
aW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBjb25zdCB3ZWJydGM6OlBhY2tldFJl
Y2VpdmVyOjpEZWxpdmVyeVN0YXR1cyBkZWxpdmVyeV9yZXN1bHQgPQogICAgICAgY2FsbF8tPlJl
Y2VpdmVyKCktPkRlbGl2ZXJQYWNrZXQod2VicnRjOjpNZWRpYVR5cGU6OlZJREVPLCAqcGFja2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWUudGlt
ZXN0YW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90
aW1lX3VzKTsKICAgc3dpdGNoIChkZWxpdmVyeV9yZXN1bHQpIHsKICAgICBjYXNlIHdlYnJ0Yzo6
UGFja2V0UmVjZWl2ZXI6OkRFTElWRVJZX09LOgogICAgICAgcmV0dXJuOwpAQCAtMTM0NSw2ICsx
NDAwLDEwIEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpPblBhY2tldFJlY2VpdmVkKHJ0Yzo6
Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKICAgICAgIGJyZWFrOwogICB9CiAKKyAgaWYgKGRp
c2NhcmRfdW5rbm93bl9zc3JjX3BhY2tldHNfKSB7CisgICAgcmV0dXJuOworICB9CisKICAgdWlu
dDMyX3Qgc3NyYyA9IDA7CiAgIGlmICghR2V0UnRwU3NyYyhwYWNrZXQtPmNkYXRhKCksIHBhY2tl
dC0+c2l6ZSgpLCAmc3NyYykpIHsKICAgICByZXR1cm47CkBAIC0xMzc5LDcgKzE0MzgsNyBAQCB2
b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRl
QnVmZmVyKiBwYWNrZXQsCiAgIH0KIAogICBpZiAoY2FsbF8tPlJlY2VpdmVyKCktPkRlbGl2ZXJQ
YWNrZXQod2VicnRjOjpNZWRpYVR5cGU6OlZJREVPLCAqcGFja2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWUudGltZXN0YW1wKSAhPQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWVfdXMpICE9CiAgICAg
ICB3ZWJydGM6OlBhY2tldFJlY2VpdmVyOjpERUxJVkVSWV9PSykgewogICAgIFJUQ19MT0coTFNf
V0FSTklORykgPDwgIkZhaWxlZCB0byBkZWxpdmVyIFJUUCBwYWNrZXQgb24gcmUtZGVsaXZlcnku
IjsKICAgICByZXR1cm47CkBAIC0xMzg3LDEzICsxNDQ2LDEzIEBAIHZvaWQgV2ViUnRjVmlkZW9D
aGFubmVsOjpPblBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwK
IH0KIAogdm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6Ok9uUnRjcFJlY2VpdmVkKHJ0Yzo6Q29weU9u
V3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICAv
LyBUT0RPKHBib3MpOiBDaGVjayB3ZWJydGM6OlBhY2tldFJlY2VpdmVyOjpERUxJVkVSWV9PSyBv
bmNlIHdlIGRlbGl2ZXIKICAgLy8gZm9yIGJvdGggYXVkaW8gYW5kIHZpZGVvIG9uIHRoZSBzYW1l
IHBhdGguIFNpbmNlIEJ1bmRsZUZpbHRlciBkb2Vzbid0CiAgIC8vIGZpbHRlciBSVENQIGFueW1v
cmUgaW5jb21pbmcgUlRDUCBwYWNrZXRzIGNvdWxkJ3ZlIGJlZW4gZ29pbmcgdG8gYXVkaW8gKHNv
CiAgIC8vIGxvZ2dpbmcgZmFpbHVyZXMgc3BhbSB0aGUgbG9nKS4KICAgY2FsbF8tPlJlY2VpdmVy
KCktPkRlbGl2ZXJQYWNrZXQod2VicnRjOjpNZWRpYVR5cGU6OlZJREVPLCAqcGFja2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdGltZS50aW1lc3RhbXApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdGltZV91cyk7CiB9CiAK
IHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpPblJlYWR5VG9TZW5kKGJvb2wgcmVhZHkpIHsKQEAg
LTE0MTIsMzEgKzE0NzEsNDYgQEAgdm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6Ok9uTmV0d29ya1Jv
dXRlQ2hhbmdlZCgKICAgICAgIG5ldHdvcmtfcm91dGUucGFja2V0X292ZXJoZWFkKTsKIH0KIAot
dm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6OlNldEludGVyZmFjZShOZXR3b3JrSW50ZXJmYWNlKiBp
ZmFjZSkgewotICBNZWRpYUNoYW5uZWw6OlNldEludGVyZmFjZShpZmFjZSk7Cit2b2lkIFdlYlJ0
Y1ZpZGVvQ2hhbm5lbDo6U2V0SW50ZXJmYWNlKAorICAgIE5ldHdvcmtJbnRlcmZhY2UqIGlmYWNl
LAorICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCkg
eworICAvLyBUT0RPKHN1a2hhbm92KTogVmlkZW8gaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQg
d2l0aCBtZWRpYSB0cmFuc3BvcnQuCisgIFJUQ19DSEVDSyhtZWRpYV90cmFuc3BvcnQgPT0gbnVs
bHB0cik7CisKKyAgTWVkaWFDaGFubmVsOjpTZXRJbnRlcmZhY2UoaWZhY2UsIG1lZGlhX3RyYW5z
cG9ydCk7CiAgIC8vIFNldCB0aGUgUlRQIHJlY3Yvc2VuZCBidWZmZXIgdG8gYSBiaWdnZXIgc2l6
ZS4KIAotICAvLyBUaGUgZ3JvdXAgaGVyZSBjYW4gYmUgZWl0aGVyIGEgcG9zaXRpdmUgaW50ZWdl
ciB3aXRoIGFuIGV4cGxpY2l0IHNpemUsIGluCi0gIC8vIHdoaWNoIGNhc2UgdGhhdCBpcyB1c2Vk
IGFzIHNpemUuIEFsbCBvdGhlciB2YWx1ZXMgc2hhbGwgcmVzdWx0IGluIHRoZQotICAvLyBkZWZh
dWx0IHZhbHVlIGJlaW5nIHVzZWQuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIGdyb3VwX25hbWUgPQot
ICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJXZWJSVEMtSW5jcmVhc2Vk
UmVjZWl2ZWJ1ZmZlcnMiKTsKLSAgaW50IHJlY3ZfYnVmZmVyX3NpemUgPSBrVmlkZW9SdHBCdWZm
ZXJTaXplOwotICBpZiAoIWdyb3VwX25hbWUuZW1wdHkoKSAmJgotICAgICAgKHNzY2FuZihncm91
cF9uYW1lLmNfc3RyKCksICIlZCIsICZyZWN2X2J1ZmZlcl9zaXplKSAhPSAxIHx8Ci0gICAgICAg
cmVjdl9idWZmZXJfc2l6ZSA8PSAwKSkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIklu
dmFsaWQgcmVjZWl2ZSBidWZmZXIgc2l6ZTogIiA8PCBncm91cF9uYW1lOwotICAgIHJlY3ZfYnVm
ZmVyX3NpemUgPSBrVmlkZW9SdHBCdWZmZXJTaXplOwotICB9CiAgIE1lZGlhQ2hhbm5lbDo6U2V0
T3B0aW9uKE5ldHdvcmtJbnRlcmZhY2U6OlNUX1JUUCwgcnRjOjpTb2NrZXQ6Ok9QVF9SQ1ZCVUYs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3ZfYnVmZmVyX3NpemUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICBrVmlkZW9SdHBSZWN2QnVmZmVyU2l6ZSk7CiAKICAgLy8gU3BlY3Vs
YXRpdmUgY2hhbmdlIHRvIGluY3JlYXNlIHRoZSBvdXRib3VuZCBzb2NrZXQgYnVmZmVyIHNpemUu
CiAgIC8vIEluIGIvMTUxNTIyNTcsIHdlIGFyZSBzZWVpbmcgYSBzaWduaWZpY2FudCBudW1iZXIg
b2YgcGFja2V0cyBkaXNjYXJkZWQKICAgLy8gZHVlIHRvIGxhY2sgb2Ygc29ja2V0IGJ1ZmZlciBz
cGFjZSwgYWx0aG91Z2ggaXQncyBub3QgeWV0IGNsZWFyIHdoYXQgdGhlCiAgIC8vIGlkZWFsIHZh
bHVlIHNob3VsZCBiZS4KICAgTWVkaWFDaGFubmVsOjpTZXRPcHRpb24oTmV0d29ya0ludGVyZmFj
ZTo6U1RfUlRQLCBydGM6OlNvY2tldDo6T1BUX1NOREJVRiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAga1ZpZGVvUnRwQnVmZmVyU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGtW
aWRlb1J0cFNlbmRCdWZmZXJTaXplKTsKK30KKwordm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6OlNl
dEZyYW1lRGVjcnlwdG9yKAorICAgIHVpbnQzMl90IHNzcmMsCisgICAgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRvcikgewor
ICBydGM6OkNyaXRTY29wZSBzdHJlYW1fbG9jaygmc3RyZWFtX2NyaXRfKTsKKyAgYXV0byBtYXRj
aGluZ19zdHJlYW0gPSByZWNlaXZlX3N0cmVhbXNfLmZpbmQoc3NyYyk7CisgIGlmIChtYXRjaGlu
Z19zdHJlYW0gIT0gcmVjZWl2ZV9zdHJlYW1zXy5lbmQoKSkgeworICAgIG1hdGNoaW5nX3N0cmVh
bS0+c2Vjb25kLT5TZXRGcmFtZURlY3J5cHRvcihmcmFtZV9kZWNyeXB0b3IpOworICB9Cit9CisK
K3ZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpTZXRGcmFtZUVuY3J5cHRvcigKKyAgICB1aW50MzJf
dCBzc3JjLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRW5jcnlwdG9ySW50
ZXJmYWNlPiBmcmFtZV9lbmNyeXB0b3IpIHsKKyAgcnRjOjpDcml0U2NvcGUgc3RyZWFtX2xvY2so
JnN0cmVhbV9jcml0Xyk7CisgIGF1dG8gbWF0Y2hpbmdfc3RyZWFtID0gc2VuZF9zdHJlYW1zXy5m
aW5kKHNzcmMpOworICBpZiAobWF0Y2hpbmdfc3RyZWFtICE9IHNlbmRfc3RyZWFtc18uZW5kKCkp
IHsKKyAgICBtYXRjaGluZ19zdHJlYW0tPnNlY29uZC0+U2V0RnJhbWVFbmNyeXB0b3IoZnJhbWVf
ZW5jcnlwdG9yKTsKKyAgfSBlbHNlIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiTm8gc3Ry
ZWFtIGZvdW5kIHRvIGF0dGFjaCBmcmFtZSBlbmNyeXB0b3IiOworICB9CiB9CiAKIGFic2w6Om9w
dGlvbmFsPHVpbnQzMl90PiBXZWJSdGNWaWRlb0NoYW5uZWw6OkdldERlZmF1bHRSZWNlaXZlU3Ry
ZWFtU3NyYygpIHsKQEAgLTE0NzQsNiArMTU0OCwxMCBAQCBib29sIFdlYlJ0Y1ZpZGVvQ2hhbm5l
bDo6U2VuZFJ0cChjb25zdCB1aW50OF90KiBkYXRhLAogICBpZiAoRHNjcEVuYWJsZWQoKSkgewog
ICAgIHJ0Y19vcHRpb25zLmRzY3AgPSBQcmVmZXJyZWREc2NwKCk7CiAgIH0KKyAgcnRjX29wdGlv
bnMuaW5mb19zaWduYWxlZF9hZnRlcl9zZW50LmluY2x1ZGVkX2luX2ZlZWRiYWNrID0KKyAgICAg
IG9wdGlvbnMuaW5jbHVkZWRfaW5fZmVlZGJhY2s7CisgIHJ0Y19vcHRpb25zLmluZm9fc2lnbmFs
ZWRfYWZ0ZXJfc2VudC5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0KKyAgICAgIG9wdGlvbnMuaW5j
bHVkZWRfaW5fYWxsb2NhdGlvbjsKICAgcmV0dXJuIE1lZGlhQ2hhbm5lbDo6U2VuZFBhY2tldCgm
cGFja2V0LCBydGNfb3B0aW9ucyk7CiB9CiAKQEAgLTE0ODMsNiArMTU2MSw3IEBAIGJvb2wgV2Vi
UnRjVmlkZW9DaGFubmVsOjpTZW5kUnRjcChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
KSB7CiAgIGlmIChEc2NwRW5hYmxlZCgpKSB7CiAgICAgcnRjX29wdGlvbnMuZHNjcCA9IFByZWZl
cnJlZERzY3AoKTsKICAgfQorCiAgIHJldHVybiBNZWRpYUNoYW5uZWw6OlNlbmRSdGNwKCZwYWNr
ZXQsIHJ0Y19vcHRpb25zKTsKIH0KIApAQCAtMTU2OSw3ICsxNjQ4LDYgQEAgV2ViUnRjVmlkZW9D
aGFubmVsOjpXZWJSdGNWaWRlb1NlbmRTdHJlYW06OldlYlJ0Y1ZpZGVvU2VuZFN0cmVhbSgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB3ZWJydGM6OlJ0Y3BNb2Rl
OjprUmVkdWNlZFNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiB3ZWJydGM6OlJ0Y3BNb2RlOjprQ29tcG91bmQ7CiAgIHBhcmFtZXRlcnNfLmNvbmZpZy5ydHAu
bWlkID0gc2VuZF9wYXJhbXMubWlkOwotCiAgIHJ0cF9wYXJhbWV0ZXJzXy5ydGNwLnJlZHVjZWRf
c2l6ZSA9IHNlbmRfcGFyYW1zLnJ0Y3AucmVkdWNlZF9zaXplOwogCiAgIGlmIChjb2RlY19zZXR0
aW5ncykgewpAQCAtMTY5OSw2ICsxNzc3LDEwIEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpX
ZWJSdGNWaWRlb1NlbmRTdHJlYW06OlNldFNlbmRQYXJhbWV0ZXJzKAogICAgICAgICBwYXJhbWV0
ZXJzXy5jb25maWcucnRwLnJ0Y3BfbW9kZSA9PSB3ZWJydGM6OlJ0Y3BNb2RlOjprUmVkdWNlZFNp
emU7CiAgICAgcmVjcmVhdGVfc3RyZWFtID0gdHJ1ZTsKICAgfQorICBpZiAocGFyYW1zLmV4dG1h
cF9hbGxvd19taXhlZCkgeworICAgIHBhcmFtZXRlcnNfLmNvbmZpZy5ydHAuZXh0bWFwX2FsbG93
X21peGVkID0gKnBhcmFtcy5leHRtYXBfYWxsb3dfbWl4ZWQ7CisgICAgcmVjcmVhdGVfc3RyZWFt
ID0gdHJ1ZTsKKyAgfQogICBpZiAocGFyYW1zLnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucykgewogICAg
IHBhcmFtZXRlcnNfLmNvbmZpZy5ydHAuZXh0ZW5zaW9ucyA9ICpwYXJhbXMucnRwX2hlYWRlcl9l
eHRlbnNpb25zOwogICAgIHJ0cF9wYXJhbWV0ZXJzXy5oZWFkZXJfZXh0ZW5zaW9ucyA9ICpwYXJh
bXMucnRwX2hlYWRlcl9leHRlbnNpb25zOwpAQCAtMTc5OSw2ICsxODgxLDE1IEBAIFdlYlJ0Y1Zp
ZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9TZW5kU3RyZWFtOjpHZXRSdHBQYXJhbWV0ZXJzKCkgY29u
c3QgewogICByZXR1cm4gcnRwX3BhcmFtZXRlcnNfOwogfQogCit2b2lkIFdlYlJ0Y1ZpZGVvQ2hh
bm5lbDo6V2ViUnRjVmlkZW9TZW5kU3RyZWFtOjpTZXRGcmFtZUVuY3J5cHRvcigKKyAgICBydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5j
cnlwdG9yKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ0aHJlYWRfY2hlY2tlcl8pOworICBwYXJh
bWV0ZXJzXy5jb25maWcuZnJhbWVfZW5jcnlwdG9yID0gZnJhbWVfZW5jcnlwdG9yOworICBpZiAo
c3RyZWFtXykgeworICAgIFJlY3JlYXRlV2ViUnRjU3RyZWFtKCk7CisgIH0KK30KKwogdm9pZCBX
ZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvU2VuZFN0cmVhbTo6VXBkYXRlU2VuZFN0YXRl
KCkgewogICBSVENfRENIRUNLX1JVTl9PTigmdGhyZWFkX2NoZWNrZXJfKTsKICAgaWYgKHNlbmRp
bmdfKSB7CkBAIC0yMTYxLDI2ICsyMjUyLDIwIEBAIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRj
VmlkZW9SZWNlaXZlU3RyZWFtOjpHZXRTb3VyY2VzKCkgewogICByZXR1cm4gc3RyZWFtXy0+R2V0
U291cmNlcygpOwogfQogCi1hYnNsOjpvcHRpb25hbDx1aW50MzJfdD4KLVdlYlJ0Y1ZpZGVvQ2hh
bm5lbDo6V2ViUnRjVmlkZW9SZWNlaXZlU3RyZWFtOjpHZXRGaXJzdFByaW1hcnlTc3JjKCkgY29u
c3Qgeword2VicnRjOjpSdHBQYXJhbWV0ZXJzCitXZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1Zp
ZGVvUmVjZWl2ZVN0cmVhbTo6R2V0UnRwUGFyYW1ldGVycygpIGNvbnN0IHsKKyAgd2VicnRjOjpS
dHBQYXJhbWV0ZXJzIHJ0cF9wYXJhbWV0ZXJzOworCiAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBw
cmltYXJ5X3NzcmNzOwogICBzdHJlYW1fcGFyYW1zXy5HZXRQcmltYXJ5U3NyY3MoJnByaW1hcnlf
c3NyY3MpOwotCi0gIGlmIChwcmltYXJ5X3NzcmNzLmVtcHR5KCkpIHsKLSAgICBSVENfTE9HKExT
X1dBUk5JTkcpCi0gICAgICAgIDw8ICJFbXB0eSBwcmltYXJ5IHNzcmNzIHZlY3RvciwgcmV0dXJu
aW5nIGVtcHR5IG9wdGlvbmFsIjsKLSAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKLSAgfSBlbHNl
IHsKLSAgICByZXR1cm4gcHJpbWFyeV9zc3Jjc1swXTsKKyAgZm9yICh1aW50MzJfdCBzc3JjIDog
cHJpbWFyeV9zc3JjcykgeworICAgIHJ0cF9wYXJhbWV0ZXJzLmVuY29kaW5ncy5lbXBsYWNlX2Jh
Y2soKTsKKyAgICBydHBfcGFyYW1ldGVycy5lbmNvZGluZ3MuYmFjaygpLnNzcmMgPSBzc3JjOwog
ICB9Ci19CiAKLXdlYnJ0Yzo6UnRwUGFyYW1ldGVycwotV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJS
dGNWaWRlb1JlY2VpdmVTdHJlYW06OkdldFJ0cFBhcmFtZXRlcnMoKSBjb25zdCB7Ci0gIHdlYnJ0
Yzo6UnRwUGFyYW1ldGVycyBydHBfcGFyYW1ldGVyczsKLSAgcnRwX3BhcmFtZXRlcnMuZW5jb2Rp
bmdzLmVtcGxhY2VfYmFjaygpOwotICBydHBfcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYyA9
IEdldEZpcnN0UHJpbWFyeVNzcmMoKTsKICAgcnRwX3BhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lv
bnMgPSBjb25maWdfLnJ0cC5leHRlbnNpb25zOworICBydHBfcGFyYW1ldGVycy5ydGNwLnJlZHVj
ZWRfc2l6ZSA9CisgICAgICBjb25maWdfLnJ0cC5ydGNwX21vZGUgPT0gd2VicnRjOjpSdGNwTW9k
ZTo6a1JlZHVjZWRTaXplOwogCiAgIHJldHVybiBydHBfcGFyYW1ldGVyczsKIH0KQEAgLTIyMzAs
OSArMjMxNSw5IEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNWaWRlb1JlY2VpdmVT
dHJlYW06OlNldExvY2FsU3NyYygKICAgLy8gcmlnaHQgbm93IHRoaXMgY2FuJ3QgYmUgZG9uZSBk
dWUgdG8gdW5pdHRlc3RzIGRlcGVuZGluZyBvbiByZWNlaXZpbmcgd2hhdAogICAvLyB0aGV5IGFy
ZSBzZW5kaW5nIGZyb20gdGhlIHNhbWUgTWVkaWFDaGFubmVsLgogICBpZiAobG9jYWxfc3NyYyA9
PSBjb25maWdfLnJ0cC5sb2NhbF9zc3JjKSB7Ci0gICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiSWdu
b3JpbmcgY2FsbCB0byBTZXRMb2NhbFNzcmMgYmVjYXVzZSBwYXJhbWV0ZXJzIGFyZSAiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAidW5jaGFuZ2VkOyBsb2NhbF9zc3JjPSIKLSAgICAgICAgICAg
ICAgICAgICAgIDw8IGxvY2FsX3NzcmM7CisgICAgUlRDX0RMT0coTFNfSU5GTykgPDwgIklnbm9y
aW5nIGNhbGwgdG8gU2V0TG9jYWxTc3JjIGJlY2F1c2UgcGFyYW1ldGVycyBhcmUgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICJ1bmNoYW5nZWQ7IGxvY2FsX3NzcmM9IgorICAgICAgICAgICAg
ICAgICAgICAgIDw8IGxvY2FsX3NzcmM7CiAgICAgcmV0dXJuOwogICB9CiAKQEAgLTIzNzIsNiAr
MjQ1NywxNCBAQCBib29sIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9SZWNlaXZlU3Ry
ZWFtOjpJc0RlZmF1bHRTdHJlYW0oKSBjb25zdCB7CiAgIHJldHVybiBkZWZhdWx0X3N0cmVhbV87
CiB9CiAKK3ZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNWaWRlb1JlY2VpdmVTdHJlYW06
OlNldEZyYW1lRGVjcnlwdG9yKAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1l
RGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IpIHsKKyAgY29uZmlnXy5mcmFtZV9k
ZWNyeXB0b3IgPSBmcmFtZV9kZWNyeXB0b3I7CisgIGlmIChzdHJlYW1fKSB7CisgICAgUmVjcmVh
dGVXZWJSdGNWaWRlb1N0cmVhbSgpOworICB9Cit9CisKIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVs
OjpXZWJSdGNWaWRlb1JlY2VpdmVTdHJlYW06OlNldFNpbmsoCiAgICAgcnRjOjpWaWRlb1NpbmtJ
bnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiogc2luaykgewogICBydGM6OkNyaXRTY29wZSBj
cml0KCZzaW5rX2xvY2tfKTsKQEAgLTI2MDcsMTAgKzI3MDAsMTEgQEAgc3RkOjp2ZWN0b3I8d2Vi
cnRjOjpWaWRlb1N0cmVhbT4gRW5jb2RlclN0cmVhbUZhY3Rvcnk6OkNyZWF0ZUVuY29kZXJTdHJl
YW1zKAogICBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlZpZGVvU3RyZWFtPiBsYXllcnM7CiAKICAgaWYg
KGVuY29kZXJfY29uZmlnLm51bWJlcl9vZl9zdHJlYW1zID4gMSB8fAotICAgICAoKENvZGVjTmFt
ZXNFcShjb2RlY19uYW1lXywga1ZwOENvZGVjTmFtZSkgfHwKLSAgICAgICAgQ29kZWNOYW1lc0Vx
KGNvZGVjX25hbWVfLCBrSDI2NENvZGVjTmFtZSkpICYmCisgICAgICAoKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UoY29kZWNfbmFtZV8sIGtWcDhDb2RlY05hbWUpIHx8CisgICAgICAgIGFic2w6OkVx
dWFsc0lnbm9yZUNhc2UoY29kZWNfbmFtZV8sIGtIMjY0Q29kZWNOYW1lKSkgJiYKICAgICAgICBp
c19zY3JlZW5zaGFyZV8gJiYgc2NyZWVuc2hhcmVfY29uZmlnX2V4cGxpY2l0bHlfZW5hYmxlZF8p
KSB7Ci0gICAgYm9vbCB0ZW1wb3JhbF9sYXllcnNfc3VwcG9ydGVkID0gQ29kZWNOYW1lc0VxKGNv
ZGVjX25hbWVfLCBrVnA4Q29kZWNOYW1lKTsKKyAgICBib29sIHRlbXBvcmFsX2xheWVyc19zdXBw
b3J0ZWQgPQorICAgICAgICBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjX25hbWVfLCBrVnA4
Q29kZWNOYW1lKTsKICAgICBsYXllcnMgPSBHZXRTaW11bGNhc3RDb25maWcoZW5jb2Rlcl9jb25m
aWcubnVtYmVyX29mX3N0cmVhbXMsIHdpZHRoLCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAgLypub3QgdXNlZCovLCBlbmNvZGVyX2NvbmZpZy5iaXRyYXRlX3ByaW9y
aXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfcXBfLCAwIC8qbm90X3Vz
ZWQqLywgaXNfc2NyZWVuc2hhcmVfLApAQCAtMjcwMyw3ICsyNzk3LDcgQEAgc3RkOjp2ZWN0b3I8
d2VicnRjOjpWaWRlb1N0cmVhbT4gRW5jb2RlclN0cmVhbUZhY3Rvcnk6OkNyZWF0ZUVuY29kZXJT
dHJlYW1zKAogICBsYXllci5tYXhfcXAgPSBtYXhfcXBfOwogICBsYXllci5iaXRyYXRlX3ByaW9y
aXR5ID0gZW5jb2Rlcl9jb25maWcuYml0cmF0ZV9wcmlvcml0eTsKIAotICBpZiAoQ29kZWNOYW1l
c0VxKGNvZGVjX25hbWVfLCBrVnA5Q29kZWNOYW1lKSkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdu
b3JlQ2FzZShjb2RlY19uYW1lXywga1ZwOUNvZGVjTmFtZSkpIHsKICAgICBSVENfRENIRUNLKGVu
Y29kZXJfY29uZmlnLmVuY29kZXJfc3BlY2lmaWNfc2V0dGluZ3MpOwogICAgIC8vIFVzZSBWUDkg
U1ZDIGxheWVyaW5nIGZyb20gY29kZWMgc2V0dGluZ3Mgd2hpY2ggbWlnaHQgYmUgaW5pdGlhbGl6
ZWQKICAgICAvLyB0aG91Z2ggZmllbGQgdHJpYWwgaW4gQ29uZmlndXJlVmlkZW9FbmNvZGVyU2V0
dGluZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZS5o
CmluZGV4IDhhMWU2YWQ0ZDE3MDM2NDhlZGNmNDU3MGRmNDdhMzM5MTdkM2M2MWEuLjNiNzlhZDQw
YjhhMmQ2NzNmYjg3ZjEyNjRjYThiNTVkNzI0YTlmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2Vu
Z2luZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZS5oCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2NhbGwvdHJhbnNwb3J0
LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnku
aCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRlICJhcGkvdmlk
ZW8vdmlkZW9fc2lua19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc291
cmNlX2ludGVyZmFjZS5oIgpAQCAtNzgsNDMgKzc5LDUzIEBAIGNsYXNzIERlZmF1bHRVbnNpZ25h
bGxlZFNzcmNIYW5kbGVyIDogcHVibGljIFVuc2lnbmFsbGVkU3NyY0hhbmRsZXIgewogfTsKIAog
Ly8gV2ViUnRjVmlkZW9FbmdpbmUgaXMgdXNlZCBmb3IgdGhlIG5ldyBuYXRpdmUgV2ViUlRDIFZp
ZGVvIEFQSSAod2VicnRjOjE2NjcpLgotY2xhc3MgV2ViUnRjVmlkZW9FbmdpbmUgeworY2xhc3Mg
V2ViUnRjVmlkZW9FbmdpbmUgOiBwdWJsaWMgVmlkZW9FbmdpbmVJbnRlcmZhY2UgewogIHB1Ymxp
YzoKICNpZiBkZWZpbmVkKFVTRV9CVUlMVElOX1NXX0NPREVDUykKICAgLy8gSW50ZXJuYWwgU1cg
dmlkZW8gY29kZWNzIHdpbGwgYmUgYWRkZWQgb24gdG9wIG9mIHRoZSBleHRlcm5hbCBjb2RlY3Mu
CiAgIFdlYlJ0Y1ZpZGVvRW5naW5lKAogICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVv
RW5jb2RlckZhY3Rvcnk+IGV4dGVybmFsX3ZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5PgotICAgICAgICAgIGV4dGVy
bmFsX3ZpZGVvX2RlY29kZXJfZmFjdG9yeSk7CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRj
VmlkZW9EZWNvZGVyRmFjdG9yeT4gZXh0ZXJuYWxfdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAg
ICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4K
KyAgICAgICAgICB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KTsKICNlbmRpZgogCiAg
IC8vIFRoZXNlIHZpZGVvIGNvZGVjIGZhY3RvcmllcyByZXByZXNlbnRzIGFsbCB2aWRlbyBjb2Rl
Y3MsIGkuZS4gYm90aCBzb2Z0d2FyZQogICAvLyBhbmQgZXh0ZXJuYWwgaGFyZHdhcmUgY29kZWNz
LgogICBXZWJSdGNWaWRlb0VuZ2luZSgKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZp
ZGVvRW5jb2RlckZhY3Rvcnk+IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgIHN0ZDo6dW5p
cXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IHZpZGVvX2RlY29kZXJfZmFjdG9y
eSk7CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiB2
aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRl
b0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnkpOwogCi0gIHZpcnR1YWwgfldlYlJ0Y1ZpZGVvRW5naW5lKCk7CisgIH5XZWJS
dGNWaWRlb0VuZ2luZSgpIG92ZXJyaWRlOwogCi0gIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCogQ3JlYXRl
Q2hhbm5lbCh3ZWJydGM6OkNhbGwqIGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKTsKKyAgVmlkZW9NZWRp
YUNoYW5uZWwqIENyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwK
KyAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCisgICAgICBjb25zdCBWaWRlb09wdGlv
bnMmIG9wdGlvbnMsCisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19v
cHRpb25zKSBvdmVycmlkZTsKIAotICBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiBjb2RlY3MoKSBj
b25zdDsKLSAgUnRwQ2FwYWJpbGl0aWVzIEdldENhcGFiaWxpdGllcygpIGNvbnN0OworICBzdGQ6
OnZlY3RvcjxWaWRlb0NvZGVjPiBjb2RlY3MoKSBjb25zdCBvdmVycmlkZTsKKyAgUnRwQ2FwYWJp
bGl0aWVzIEdldENhcGFiaWxpdGllcygpIGNvbnN0IG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAg
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gZGVjb2Rl
cl9mYWN0b3J5XzsKICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVy
RmFjdG9yeT4gZW5jb2Rlcl9mYWN0b3J5XzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0
Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgIGJpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnlfOwogfTsKIAogY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsIDogcHVibGljIFZpZGVv
TWVkaWFDaGFubmVsLCBwdWJsaWMgd2VicnRjOjpUcmFuc3BvcnQgewogIHB1YmxpYzoKLSAgV2Vi
UnRjVmlkZW9DaGFubmVsKHdlYnJ0Yzo6Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBW
aWRlb09wdGlvbnMmIG9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlZpZGVv
RW5jb2RlckZhY3RvcnkqIGVuY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgIHdl
YnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeSogZGVjb2Rlcl9mYWN0b3J5KTsKKyAgV2ViUnRjVmlk
ZW9DaGFubmVsKAorICAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAorICAgICAgY29uc3QgTWVkaWFD
b25maWcmIGNvbmZpZywKKyAgICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucywKKyAgICAg
IGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgICB3ZWJy
dGM6OlZpZGVvRW5jb2RlckZhY3RvcnkqIGVuY29kZXJfZmFjdG9yeSwKKyAgICAgIHdlYnJ0Yzo6
VmlkZW9EZWNvZGVyRmFjdG9yeSogZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgd2VicnRjOjpWaWRl
b0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KiBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KTsKICAg
fldlYlJ0Y1ZpZGVvQ2hhbm5lbCgpIG92ZXJyaWRlOwogCiAgIC8vIFZpZGVvTWVkaWFDaGFubmVs
IGltcGxlbWVudGF0aW9uCkBAIC0xNDcsMTMgKzE1OCwyOCBAQCBjbGFzcyBXZWJSdGNWaWRlb0No
YW5uZWwgOiBwdWJsaWMgVmlkZW9NZWRpYUNoYW5uZWwsIHB1YmxpYyB3ZWJydGM6OlRyYW5zcG9y
dCB7CiAgIGJvb2wgR2V0U3RhdHMoVmlkZW9NZWRpYUluZm8qIGluZm8pIG92ZXJyaWRlOwogCiAg
IHZvaWQgT25QYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1l
KSBvdmVycmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVf
dXMpIG92ZXJyaWRlOwogICB2b2lkIE9uUnRjcFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZm
ZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUm
IHBhY2tldF90aW1lKSBvdmVycmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBh
Y2tldF90aW1lX3VzKSBvdmVycmlkZTsKICAgdm9pZCBPblJlYWR5VG9TZW5kKGJvb2wgcmVhZHkp
IG92ZXJyaWRlOwogICB2b2lkIE9uTmV0d29ya1JvdXRlQ2hhbmdlZChjb25zdCBzdGQ6OnN0cmlu
ZyYgdHJhbnNwb3J0X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6TmV0d29ya1JvdXRlJiBuZXR3b3JrX3JvdXRlKSBvdmVycmlkZTsKLSAgdm9pZCBTZXRJbnRl
cmZhY2UoTmV0d29ya0ludGVyZmFjZSogaWZhY2UpIG92ZXJyaWRlOworICB2b2lkIFNldEludGVy
ZmFjZShOZXR3b3JrSW50ZXJmYWNlKiBpZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgd2VicnRj
OjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KSBvdmVycmlkZTsKKwor
ICAvLyBFMkUgRW5jcnlwdGVkIFZpZGVvIEZyYW1lIEFQSQorICAvLyBTZXQgYSBmcmFtZSBkZWNy
eXB0b3IgdG8gYSBwYXJ0aWN1bGFyIHNzcmMgdGhhdCB3aWxsIGludGVyY2VwdCBhbGwKKyAgLy8g
aW5jb21pbmcgdmlkZW8gZnJhbWVzIGFuZCBhdHRlbXB0IHRvIGRlY3J5cHQgdGhlbSBiZWZvcmUg
Zm9yd2FyZGluZyB0aGUKKyAgLy8gcmVzdWx0LgorICB2b2lkIFNldEZyYW1lRGVjcnlwdG9yKHVp
bnQzMl90IHNzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lX2RlY3J5cHRvcikgb3ZlcnJpZGU7CisgIC8vIFNldCBhIGZyYW1lIGVuY3J5
cHRvciB0byBhIHBhcnRpY3VsYXIgc3NyYyB0aGF0IHdpbGwgaW50ZXJjZXB0IGFsbAorICAvLyBv
dXRnb2luZyB2aWRlbyBmcmFtZXMgYW5kIGF0dGVtcHQgdG8gZW5jcnlwdCB0aGVtIGFuZCBmb3J3
YXJkIHRoZSByZXN1bHQKKyAgLy8gdG8gdGhlIHBhY2tldGl6ZXIuCisgIHZvaWQgU2V0RnJhbWVF
bmNyeXB0b3IodWludDMyX3Qgc3NyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZUVuY3J5cHRvckludGVyZmFjZT4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWVfZW5jcnlwdG9yKSBvdmVycmlkZTsKIAogICAvLyBJbXBs
ZW1lbnRlZCBmb3IgVmlkZW9NZWRpYUNoYW5uZWxUZXN0LgogICBib29sIHNlbmRpbmcoKSBjb25z
dCB7IHJldHVybiBzZW5kaW5nXzsgfQpAQCAtMjAxLDYgKzIyNyw3IEBAIGNsYXNzIFdlYlJ0Y1Zp
ZGVvQ2hhbm5lbCA6IHB1YmxpYyBWaWRlb01lZGlhQ2hhbm5lbCwgcHVibGljIHdlYnJ0Yzo6VHJh
bnNwb3J0IHsKICAgICBhYnNsOjpvcHRpb25hbDxWaWRlb0NvZGVjU2V0dGluZ3M+IGNvZGVjOwog
ICAgIGFic2w6Om9wdGlvbmFsPHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uPj4gcnRw
X2hlYWRlcl9leHRlbnNpb25zOwogICAgIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBtaWQ7
CisgICAgYWJzbDo6b3B0aW9uYWw8Ym9vbD4gZXh0bWFwX2FsbG93X21peGVkOwogICAgIGFic2w6
Om9wdGlvbmFsPGludD4gbWF4X2JhbmR3aWR0aF9icHM7CiAgICAgYWJzbDo6b3B0aW9uYWw8Ym9v
bD4gY29uZmVyZW5jZV9tb2RlOwogICAgIGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6UnRjcE1vZGU+
IHJ0Y3BfbW9kZTsKQEAgLTI1Nyw2ICsyODQsOSBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWwg
OiBwdWJsaWMgVmlkZW9NZWRpYUNoYW5uZWwsIHB1YmxpYyB3ZWJydGM6OlRyYW5zcG9ydCB7CiAg
ICAgd2VicnRjOjpSVENFcnJvciBTZXRSdHBQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwUGFy
YW1ldGVycyYgcGFyYW1ldGVycyk7CiAgICAgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIEdldFJ0cFBh
cmFtZXRlcnMoKSBjb25zdDsKIAorICAgIHZvaWQgU2V0RnJhbWVFbmNyeXB0b3IoCisgICAgICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBmcmFt
ZV9lbmNyeXB0b3IpOworCiAgICAgLy8gSW1wbGVtZW50cyBydGM6OlZpZGVvU291cmNlSW50ZXJm
YWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4uCiAgICAgLy8gV2ViUnRjVmlkZW9TZW5kU3RyZWFtIGFj
dHMgYXMgYSBzb3VyY2UgdG8gdGhlIHdlYnJ0Yzo6VmlkZW9TZW5kU3RyZWFtCiAgICAgLy8gaW4g
fHN0cmVhbV98LiBUaGlzIGlzIGRvbmUgdG8gcHJveHkgVmlkZW9TaW5rV2FudHMgZnJvbSB0aGUg
ZW5jb2RlciB0bwpAQCAtMzcxLDYgKzQwMSw5IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCA6
IHB1YmxpYyBWaWRlb01lZGlhQ2hhbm5lbCwgcHVibGljIHdlYnJ0Yzo6VHJhbnNwb3J0IHsKICAg
ICB2b2lkIE9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBJc0RlZmF1bHRTdHJlYW0oKSBjb25zdDsKIAorICAgIHZvaWQgU2V0RnJhbWVE
ZWNyeXB0b3IoCisgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRGVjcnlw
dG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IpOworCiAgICAgdm9pZCBTZXRTaW5rKHJ0Yzo6
VmlkZW9TaW5rSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4qIHNpbmspOwogCiAgICAgVmlk
ZW9SZWNlaXZlckluZm8gR2V0VmlkZW9SZWNlaXZlckluZm8oYm9vbCBsb2dfc3RhdHMpOwpAQCAt
Mzg3LDggKzQyMCw2IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCA6IHB1YmxpYyBWaWRlb01l
ZGlhQ2hhbm5lbCwgcHVibGljIHdlYnJ0Yzo6VHJhbnNwb3J0IHsKIAogICAgIHN0ZDo6c3RyaW5n
IEdldENvZGVjTmFtZUZyb21QYXlsb2FkVHlwZShpbnQgcGF5bG9hZF90eXBlKTsKIAotICAgIGFi
c2w6Om9wdGlvbmFsPHVpbnQzMl90PiBHZXRGaXJzdFByaW1hcnlTc3JjKCkgY29uc3Q7Ci0KICAg
ICB3ZWJydGM6OkNhbGwqIGNvbnN0IGNhbGxfOwogICAgIGNvbnN0IFN0cmVhbVBhcmFtcyBzdHJl
YW1fcGFyYW1zXzsKIApAQCAtNDY2LDYgKzQ5Nyw3IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5l
bCA6IHB1YmxpYyBWaWRlb01lZGlhQ2hhbm5lbCwgcHVibGljIHdlYnJ0Yzo6VHJhbnNwb3J0IHsK
IAogICB3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3RvcnkqIGNvbnN0IGVuY29kZXJfZmFjdG9yeV87
CiAgIHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeSogY29uc3QgZGVjb2Rlcl9mYWN0b3J5XzsK
KyAgd2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KiBjb25zdCBiaXRyYXRlX2Fs
bG9jYXRvcl9mYWN0b3J5XzsKICAgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlY1NldHRpbmdzPiByZWN2
X2NvZGVjc187CiAgIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uPiByZWN2X3J0cF9l
eHRlbnNpb25zXzsKICAgLy8gU2VlIHJlYXNvbiBmb3Iga2VlcGluZyB0cmFjayBvZiB0aGUgRmxl
eEZFQyBwYXlsb2FkIHR5cGUgc2VwYXJhdGVseSBpbgpAQCAtNDc1LDE0ICs1MDcsMTkgQEAgY2xh
c3MgV2ViUnRjVmlkZW9DaGFubmVsIDogcHVibGljIFZpZGVvTWVkaWFDaGFubmVsLCBwdWJsaWMg
d2VicnRjOjpUcmFuc3BvcnQgewogICAvLyBUT0RPKGRlYWRiZWVmKTogRG9uJ3QgZHVwbGljYXRl
IGluZm9ybWF0aW9uIGJldHdlZW4KICAgLy8gc2VuZF9wYXJhbXMvcmVjdl9wYXJhbXMsIHJ0cF9l
eHRlbnNpb25zLCBvcHRpb25zLCBldGMuCiAgIFZpZGVvU2VuZFBhcmFtZXRlcnMgc2VuZF9wYXJh
bXNfOworICBydGM6OkRpZmZTZXJ2Q29kZVBvaW50IHByZWZlcnJlZF9kc2NwXzsKICAgVmlkZW9P
cHRpb25zIGRlZmF1bHRfc2VuZF9vcHRpb25zXzsKICAgVmlkZW9SZWN2UGFyYW1ldGVycyByZWN2
X3BhcmFtc187CiAgIGludDY0X3QgbGFzdF9zdGF0c19sb2dfbXNfOworICBjb25zdCBib29sIGRp
c2NhcmRfdW5rbm93bl9zc3JjX3BhY2tldHNfOwogICAvLyBUaGlzIGlzIGEgc3RyZWFtIHBhcmFt
IHRoYXQgY29tZXMgZnJvbSB0aGUgcmVtb3RlIGRlc2NyaXB0aW9uLCBidXQgd2Fzbid0CiAgIC8v
IHNpZ25hbGVkIHdpdGggYW55IGE9c3NyYyBsaW5lcy4gSXQgaG9sZHMgaW5mb3JtYXRpb24gdGhh
dCB3YXMgc2lnbmFsZWQKICAgLy8gYmVmb3JlIHRoZSB1bnNpZ25hbGVkIHJlY2VpdmUgc3RyZWFt
IGlzIGNyZWF0ZWQgd2hlbiB0aGUgZmlyc3QgcGFja2V0IGlzCiAgIC8vIHJlY2VpdmVkLgogICBT
dHJlYW1QYXJhbXMgdW5zaWduYWxlZF9zdHJlYW1fcGFyYW1zXzsKKyAgLy8gUGVyIHBlZXIgY29u
bmVjdGlvbiBjcnlwdG8gb3B0aW9ucyB0aGF0IGxhc3QgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUg
cGVlcgorICAvLyBjb25uZWN0aW9uLgorICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5
cHRvX29wdGlvbnNfOwogfTsKIAogY2xhc3MgRW5jb2RlclN0cmVhbUZhY3RvcnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS93ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZV91bml0dGVz
dC5jYwppbmRleCBlODdmNjNmZjRhNjVmMmExNDU0NmFiMWFmNzlhNTQwYTRkNWJhNGMwLi5hYjA0
ZmE2YWYzZTVhNjY1MTE1NDkwNWI0MDg4NzAyOWE5MTY1ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlk
ZW9lbmdpbmVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lX3VuaXR0ZXN0LmNjCkBA
IC0xNCwxMCArMTQsMTQgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4K
IAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJh
bWV0ZXJzLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192aWRlb19iaXRyYXRlX2FsbG9jYXRv
ci5oIgorI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFj
dG9yeS5oIgogI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNs
dWRlICJhcGkvdW5pdHMvdGltZV9kZWx0YS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9idWlsdGlu
X3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8v
dmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9i
dWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2Rl
Y3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKQEAgLTEwMSw3ICsxMDUsNyBAQCBi
b29sIEhhc1J0eENvZGVjKGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OlZpZGVvQ29kZWM+JiBj
b2RlY3MsCiAgICAgICAgICAgICAgICAgIGludCBwYXlsb2FkX3R5cGUpIHsKICAgZm9yIChjb25z
dCBjcmlja2V0OjpWaWRlb0NvZGVjJiBjb2RlYyA6IGNvZGVjcykgewogICAgIGludCBhc3NvY2lh
dGVkX3BheWxvYWRfdHlwZTsKLSAgICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGNvZGVjLm5h
bWUuY19zdHIoKSwgInJ0eCIpICYmCisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29k
ZWMubmFtZS5jX3N0cigpLCAicnR4IikgJiYKICAgICAgICAgY29kZWMuR2V0UGFyYW0oY3JpY2tl
dDo6a0NvZGVjUGFyYW1Bc3NvY2lhdGVkUGF5bG9hZFR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICZhc3NvY2lhdGVkX3BheWxvYWRfdHlwZSkgJiYKICAgICAgICAgYXNzb2NpYXRlZF9wYXls
b2FkX3R5cGUgPT0gcGF5bG9hZF90eXBlKSB7CkBAIC0yMTMsNyArMjE3LDggQEAgY2xhc3MgV2Vi
UnRjVmlkZW9FbmdpbmVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGVu
Z2luZV8oc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkZha2VXZWJSdGNWaWRlb0VuY29kZXJGYWN0
b3J5PigKICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5XyksCiAgICAgICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkZha2VXZWJSdGNWaWRlb0RlY29kZXJGYWN0
b3J5PigKLSAgICAgICAgICAgICAgICAgICAgZGVjb2Rlcl9mYWN0b3J5XykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZGVjb2Rlcl9mYWN0b3J5XyksCisgICAgICAgICAgICAgICAgd2VicnRjOjpD
cmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpKSB7CiAgICAgLy8gRW5z
dXJlIGZha2UgY2xvY2sgZG9lc24ndCByZXR1cm4gMCwgd2hpY2ggd2lsbCBjYXVzZSBzb21lIGlu
aXRpYWxpemF0aW9ucwogICAgIC8vIGZhaWwgaW5zaWRlIFJUUCBzZW5kZXJzLgogICAgIGZha2Vf
Y2xvY2tfLkFkdmFuY2VUaW1lTWljcm9zKDEpOwpAQCAtMzE4LDYgKzMyMywyNSBAQCBURVNUX0Yo
V2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBTdXBwb3J0c1ZpZGVvUm90YXRpb25IZWFkZXJFeHRlbnNp
b24pIHsKICAgRkFJTCgpIDw8ICJWaWRlbyBSb3RhdGlvbiBleHRlbnNpb24gbm90IGluIGhlYWRl
ci1leHRlbnNpb24gbGlzdC4iOwogfQogCitjbGFzcyBXZWJSdGNWaWRlb0VuZ2luZVRlc3RXaXRo
R2VuZXJpY0Rlc2NyaXB0b3IKKyAgICA6IHB1YmxpYyBXZWJSdGNWaWRlb0VuZ2luZVRlc3Qgewor
IHB1YmxpYzoKKyAgV2ViUnRjVmlkZW9FbmdpbmVUZXN0V2l0aEdlbmVyaWNEZXNjcmlwdG9yKCkK
KyAgICAgIDogV2ViUnRjVmlkZW9FbmdpbmVUZXN0KCJXZWJSVEMtR2VuZXJpY0Rlc2NyaXB0b3JB
ZHZlcnRpc2VkL0VuYWJsZWQvIikge30KK307CisKK1RFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRl
c3RXaXRoR2VuZXJpY0Rlc2NyaXB0b3IsIEFkdmVydGlzZUdlbmVyaWNEZXNjcmlwdG9yKSB7Cisg
IFJ0cENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMgPSBlbmdpbmVfLkdldENhcGFiaWxpdGllcygp
OworICBBU1NFUlRfRkFMU0UoY2FwYWJpbGl0aWVzLmhlYWRlcl9leHRlbnNpb25zLmVtcHR5KCkp
OworICBmb3IgKGNvbnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uIDogY2FwYWJpbGl0aWVzLmhl
YWRlcl9leHRlbnNpb25zKSB7CisgICAgaWYgKGV4dGVuc2lvbi51cmkgPT0gUnRwRXh0ZW5zaW9u
OjprR2VuZXJpY0ZyYW1lRGVzY3JpcHRvclVyaSkgeworICAgICAgRVhQRUNUX0VRKFJ0cEV4dGVu
c2lvbjo6a0dlbmVyaWNGcmFtZURlc2NyaXB0b3JEZWZhdWx0SWQsIGV4dGVuc2lvbi5pZCk7Cisg
ICAgICByZXR1cm47CisgICAgfQorICB9CisgIEZBSUwoKSA8PCAiR2VuZXJpYyBkZXNjcmlwdG9y
IGV4dGVuc2lvbiBub3QgaW4gaGVhZGVyLWV4dGVuc2lvbiBsaXN0LiI7Cit9CisKIFRFU1RfRihX
ZWJSdGNWaWRlb0VuZ2luZVRlc3QsIENWT1NldEhlYWRlckV4dGVuc2lvbkJlZm9yZUNhcHR1cmVy
KSB7CiAgIC8vIEFsbG9jYXRlIHRoZSBzb3VyY2UgZmlyc3QgdG8gcHJldmVudCBlYXJseSBkZXN0
cnVjdGlvbiBiZWZvcmUgY2hhbm5lbCdzCiAgIC8vIGR0b3IgaXMgY2FsbGVkLgpAQCAtNDMzLDgg
KzQ1Nyw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsIENWT1NldEhlYWRlckV4dGVu
c2lvbkFmdGVyQ2FwdHVyZXIpIHsKIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsIFNldFNl
bmRGYWlsc0JlZm9yZVNldHRpbmdDb2RlY3MpIHsKICAgZW5jb2Rlcl9mYWN0b3J5Xy0+QWRkU3Vw
cG9ydGVkVmlkZW9Db2RlY1R5cGUoIlZQOCIpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01l
ZGlhQ2hhbm5lbD4gY2hhbm5lbCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5n
ZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3RkOjp1bmlxdWVf
cHRyPFZpZGVvTWVkaWFDaGFubmVsPiBjaGFubmVsKGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVs
KAorICAgICAgY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3
ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogCiAgIEVYUEVDVF9UUlVFKGNoYW5uZWwtPkFkZFNl
bmRTdHJlYW0oU3RyZWFtUGFyYW1zOjpDcmVhdGVMZWdhY3koMTIzKSkpOwogCkBAIC00NDcsOCAr
NDcxLDggQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwgU2V0U2VuZEZhaWxzQmVmb3Jl
U2V0dGluZ0NvZGVjcykgewogVEVTVF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwgR2V0U3RhdHNX
aXRob3V0U2VuZENvZGVjc1NldERvZXNOb3RDcmFzaCkgewogICBlbmNvZGVyX2ZhY3RvcnlfLT5B
ZGRTdXBwb3J0ZWRWaWRlb0NvZGVjVHlwZSgiVlA4Iik7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvTWVkaWFDaGFubmVsPiBjaGFubmVsKAotICAgICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGNh
bGxfLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSkpOworICBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IGNoYW5uZWwoZW5naW5lXy5DcmVhdGVNZWRpYUNo
YW5uZWwoCisgICAgICBjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25z
KCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWwtPkFk
ZFNlbmRTdHJlYW0oU3RyZWFtUGFyYW1zOjpDcmVhdGVMZWdhY3koMTIzKSkpOwogICBWaWRlb01l
ZGlhSW5mbyBpbmZvOwogICBjaGFubmVsLT5HZXRTdGF0cygmaW5mbyk7CkBAIC01MzAsNyArNTU0
LDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwgUnR4Q29kZWNBZGRlZEZvckgyNjRD
b2RlYykgewogICAgICAgY29kZWNzLCBGaW5kTWF0Y2hpbmdDb2RlYyhjb2RlY3MsIGNyaWNrZXQ6
OlZpZGVvQ29kZWMoaDI2NF9oaWdoKSktPmlkKSk7CiB9CiAKLSNpZiAhZGVmaW5lZChSVENfRElT
QUJMRV9WUDkpCisjaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIFRFU1RfRihXZWJSdGNWaWRl
b0VuZ2luZVRlc3QsIENhbkNvbnN0cnVjdERlY29kZXJGb3JWcDlFbmNvZGVyRmFjdG9yeSkgewog
ICBlbmNvZGVyX2ZhY3RvcnlfLT5BZGRTdXBwb3J0ZWRWaWRlb0NvZGVjVHlwZSgiVlA5Iik7CiAK
QEAgLTU0MCw3ICs1NjQsNyBAQCBURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBDYW5Db25z
dHJ1Y3REZWNvZGVyRm9yVnA5RW5jb2RlckZhY3RvcnkpIHsKICAgRVhQRUNUX1RSVUUoCiAgICAg
ICBjaGFubmVsLT5BZGRSZWN2U3RyZWFtKGNyaWNrZXQ6OlN0cmVhbVBhcmFtczo6Q3JlYXRlTGVn
YWN5KGtTc3JjKSkpOwogfQotI2VuZGlmICAvLyAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisj
ZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKIFRFU1RfRihXZWJSdGNWaWRlb0Vu
Z2luZVRlc3QsIFByb3BhZ2F0ZXNJbnB1dEZyYW1lVGltZXN0YW1wKSB7CiAgIGVuY29kZXJfZmFj
dG9yeV8tPkFkZFN1cHBvcnRlZFZpZGVvQ29kZWNUeXBlKCJWUDgiKTsKQEAgLTYzMSwxMSArNjU1
LDExIEBAIHNpemVfdCBXZWJSdGNWaWRlb0VuZ2luZVRlc3Q6OkdldEVuZ2luZUNvZGVjSW5kZXgo
CiAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OlZpZGVvQ29kZWM+IGNvZGVjcyA9IGVuZ2lu
ZV8uY29kZWNzKCk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZWNzLnNpemUoKTsgKytp
KSB7CiAgICAgY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyBlbmdpbmVfY29kZWMgPSBjb2RlY3Nb
aV07Ci0gICAgaWYgKCFDb2RlY05hbWVzRXEobmFtZSwgZW5naW5lX2NvZGVjLm5hbWUpKQorICAg
IGlmICghYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lLCBlbmdpbmVfY29kZWMubmFtZSkpCiAg
ICAgICBjb250aW51ZTsKICAgICAvLyBUaGUgdGVzdHMgb25seSB1c2UgSDI2NCBDb25zdHJhaW5l
ZCBCYXNlbGluZS4gTWFrZSBzdXJlIHdlIGRvbid0IHJldHVybgogICAgIC8vIGFuIGludGVybmFs
IEgyNjQgY29kZWMgZnJvbSB0aGUgZW5naW5lIHdpdGggYSBkaWZmZXJlbnQgSDI2NCBwcm9maWxl
LgotICAgIGlmIChDb2RlY05hbWVzRXEobmFtZS5jX3N0cigpLCBrSDI2NENvZGVjTmFtZSkpIHsK
KyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lLmNfc3RyKCksIGtIMjY0Q29kZWNO
YW1lKSkgewogICAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpIMjY0OjpQcm9maWxl
TGV2ZWxJZD4gcHJvZmlsZV9sZXZlbF9pZCA9CiAgICAgICAgICAgd2VicnRjOjpIMjY0OjpQYXJz
ZVNkcFByb2ZpbGVMZXZlbElkKGVuZ2luZV9jb2RlYy5wYXJhbXMpOwogICAgICAgaWYgKHByb2Zp
bGVfbGV2ZWxfaWQtPnByb2ZpbGUgIT0KQEAgLTY1Nyw4ICs2ODEsOCBAQCBjcmlja2V0OjpWaWRl
b0NvZGVjIFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdDo6R2V0RW5naW5lQ29kZWMoCiAKIFZpZGVvTWVk
aWFDaGFubmVsKgogV2ViUnRjVmlkZW9FbmdpbmVUZXN0OjpTZXRTZW5kUGFyYW1zV2l0aEFsbFN1
cHBvcnRlZENvZGVjcygpIHsKLSAgVmlkZW9NZWRpYUNoYW5uZWwqIGNoYW5uZWwgPQotICAgICAg
ZW5naW5lXy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRl
b09wdGlvbnMoKSk7CisgIFZpZGVvTWVkaWFDaGFubmVsKiBjaGFubmVsID0gZW5naW5lXy5DcmVh
dGVNZWRpYUNoYW5uZWwoCisgICAgICBjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlk
ZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKICAgY3JpY2tldDo6VmlkZW9T
ZW5kUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAvLyBXZSBuZWVkIHRvIGxvb2sgdXAgdGhlIGNv
ZGVjIGluIHRoZSBlbmdpbmUgdG8gZ2V0IHRoZSBjb3JyZWN0IHBheWxvYWQgdHlwZS4KICAgZm9y
IChjb25zdCB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0JiBmb3JtYXQgOgpAQCAtNjc3LDggKzcwMSw4
IEBAIFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdDo6U2V0U2VuZFBhcmFtc1dpdGhBbGxTdXBwb3J0ZWRD
b2RlY3MoKSB7CiAKIFZpZGVvTWVkaWFDaGFubmVsKiBXZWJSdGNWaWRlb0VuZ2luZVRlc3Q6OlNl
dFJlY3ZQYXJhbXNXaXRoU3VwcG9ydGVkQ29kZWNzKAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZp
ZGVvQ29kZWM+JiBjb2RlY3MpIHsKLSAgVmlkZW9NZWRpYUNoYW5uZWwqIGNoYW5uZWwgPQotICAg
ICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBW
aWRlb09wdGlvbnMoKSk7CisgIFZpZGVvTWVkaWFDaGFubmVsKiBjaGFubmVsID0gZW5naW5lXy5D
cmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICBjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwg
VmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKICAgY3JpY2tldDo6Vmlk
ZW9SZWN2UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGNvZGVj
czsKICAgRVhQRUNUX1RSVUUoY2hhbm5lbC0+U2V0UmVjdlBhcmFtZXRlcnMocGFyYW1ldGVycykp
OwpAQCAtNzMyLDggKzc1Niw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsIENoYW5u
ZWxXaXRoSDI2NENhbkNoYW5nZVRvVnA4KSB7CiAgIEVYUEVDVF9FUShjcmlja2V0OjpDU19SVU5O
SU5HLAogICAgICAgICAgICAgY2FwdHVyZXIuU3RhcnQoY2FwdHVyZXIuR2V0U3VwcG9ydGVkRm9y
bWF0cygpLT5mcm9udCgpKSk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVs
PiBjaGFubmVsKAotICAgICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgpLCBHZXRN
ZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9N
ZWRpYUNoYW5uZWw+IGNoYW5uZWwoZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICBj
YWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5
cHRvT3B0aW9ucygpKSk7CiAgIGNyaWNrZXQ6OlZpZGVvU2VuZFBhcmFtZXRlcnMgcGFyYW1ldGVy
czsKICAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKEdldEVuZ2luZUNvZGVjKCJIMjY0Iikp
OwogICBFWFBFQ1RfVFJVRShjaGFubmVsLT5TZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSk7
CkBAIC03NjEsOCArNzg1LDggQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwKICAgZW5j
b2Rlcl9mYWN0b3J5Xy0+QWRkU3VwcG9ydGVkVmlkZW9Db2RlY1R5cGUoIlZQOCIpOwogICBlbmNv
ZGVyX2ZhY3RvcnlfLT5BZGRTdXBwb3J0ZWRWaWRlb0NvZGVjVHlwZSgiSDI2NCIpOwogCi0gIHN0
ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gY2hhbm5lbCgKLSAgICAgIGVuZ2luZV8u
Q3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25z
KCkpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBjaGFubmVsKGVuZ2lu
ZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmln
KCksIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBjcmlja2V0
OjpWaWRlb1NlbmRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgIHBhcmFtZXRlcnMuY29kZWNzLnB1
c2hfYmFjayhHZXRFbmdpbmVDb2RlYygiVlA4IikpOwogICBFWFBFQ1RfVFJVRShjaGFubmVsLT5T
ZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSk7CkBAIC03OTYsOCArODIwLDggQEAgVEVTVF9G
KFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwKICAgZW5jb2Rlcl9mYWN0b3J5Xy0+QWRkU3VwcG9ydGVk
VmlkZW9Db2RlY1R5cGUoIlZQOCIpOwogICBlbmNvZGVyX2ZhY3RvcnlfLT5BZGRTdXBwb3J0ZWRW
aWRlb0NvZGVjVHlwZSgiSDI2NCIpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hh
bm5lbD4gY2hhbm5lbCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwg
R2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvTWVkaWFDaGFubmVsPiBjaGFubmVsKGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAg
ICAgY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6
OkNyeXB0b09wdGlvbnMoKSkpOwogICBjcmlja2V0OjpWaWRlb1NlbmRQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7CiAgIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhHZXRFbmdpbmVDb2RlYygiSDI2
NCIpKTsKICAgRVhQRUNUX1RSVUUoY2hhbm5lbC0+U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVy
cykpOwpAQCAtODI4LDggKzg1Miw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsIFNp
bXVsY2FzdEVuYWJsZWRGb3JIMjY0QmVoaW5kRmllbGRUcmlhbCkgewogICAgICAgIldlYlJUQy1I
MjY0U2ltdWxjYXN0L0VuYWJsZWQvIik7CiAgIGVuY29kZXJfZmFjdG9yeV8tPkFkZFN1cHBvcnRl
ZFZpZGVvQ29kZWNUeXBlKCJIMjY0Iik7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFD
aGFubmVsPiBjaGFubmVsKAotICAgICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgp
LCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9NZWRpYUNoYW5uZWw+IGNoYW5uZWwoZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisg
ICAgICBjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCksIHdlYnJ0
Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgIGNyaWNrZXQ6OlZpZGVvU2VuZFBhcmFtZXRlcnMgcGFy
YW1ldGVyczsKICAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKEdldEVuZ2luZUNvZGVjKCJI
MjY0IikpOwogICBFWFBFQ1RfVFJVRShjaGFubmVsLT5TZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0
ZXJzKSk7CkBAIC05ODksOCArMTAxMywxMCBAQCBURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0
LCBHZXRTb3VyY2VzV2l0aE5vbkV4aXN0aW5nU3NyYykgewogVEVTVChXZWJSdGNWaWRlb0VuZ2lu
ZU5ld1ZpZGVvQ29kZWNGYWN0b3J5VGVzdCwgTnVsbEZhY3RvcmllcykgewogICBzdGQ6OnVuaXF1
ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBlbmNvZGVyX2ZhY3Rvcnk7CiAgIHN0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IGRlY29kZXJfZmFjdG9y
eTsKKyAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9y
eT4gcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeTsKICAgV2ViUnRjVmlkZW9FbmdpbmUgZW5naW5lKHN0
ZDo6bW92ZShlbmNvZGVyX2ZhY3RvcnkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojptb3ZlKGRlY29kZXJfZmFjdG9yeSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojptb3ZlKGRlY29kZXJfZmFjdG9yeSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1vdmUocmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkpOwogICBFWFBFQ1RfRVEoMHUsIGVuZ2luZS5j
b2RlY3MoKS5zaXplKCkpOwogfQogCkBAIC0xMDAwLDEzICsxMDI2LDE4IEBAIFRFU1QoV2ViUnRj
VmlkZW9FbmdpbmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3QsIEVtcHR5RmFjdG9yaWVzKSB7CiAg
ICAgICBuZXcgd2VicnRjOjpNb2NrVmlkZW9FbmNvZGVyRmFjdG9yeSgpOwogICB3ZWJydGM6Ok1v
Y2tWaWRlb0RlY29kZXJGYWN0b3J5KiBkZWNvZGVyX2ZhY3RvcnkgPQogICAgICAgbmV3IHdlYnJ0
Yzo6TW9ja1ZpZGVvRGVjb2RlckZhY3RvcnkoKTsKKyAgd2VicnRjOjpNb2NrVmlkZW9CaXRyYXRl
QWxsb2NhdG9yRmFjdG9yeSogcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICBuZXcgd2Vi
cnRjOjpNb2NrVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpOwogICBXZWJSdGNWaWRlb0Vu
Z2luZSBlbmdpbmUoCiAgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVy
RmFjdG9yeT4oZW5jb2Rlcl9mYWN0b3J5KSksCi0gICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0
Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4oZGVjb2Rlcl9mYWN0b3J5KSkpOworICAgICAgKHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+KGRlY29kZXJfZmFjdG9yeSkp
LAorICAgICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZh
Y3Rvcnk+KAorICAgICAgICAgIHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkpKSk7CiAgIEVYUEVDVF9D
QUxMKCplbmNvZGVyX2ZhY3RvcnksIEdldFN1cHBvcnRlZEZvcm1hdHMoKSk7CiAgIEVYUEVDVF9F
USgwdSwgZW5naW5lLmNvZGVjcygpLnNpemUoKSk7CiAgIEVYUEVDVF9DQUxMKCplbmNvZGVyX2Zh
Y3RvcnksIERpZSgpKTsKICAgRVhQRUNUX0NBTEwoKmRlY29kZXJfZmFjdG9yeSwgRGllKCkpOwor
ICBFWFBFQ1RfQ0FMTCgqcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSwgRGllKCkpOwogfQogCiAvLyBU
ZXN0IGZ1bGwgYmVoYXZpb3IgaW4gdGhlIHZpZGVvIGVuZ2luZSB3aGVuIHZpZGVvIGNvZGVjIGZh
Y3RvcmllcyBvZiB0aGUgbmV3CkBAIC0xMDE5LDkgKzEwNTAsMTcgQEAgVEVTVChXZWJSdGNWaWRl
b0VuZ2luZU5ld1ZpZGVvQ29kZWNGYWN0b3J5VGVzdCwgVnA4KSB7CiAgICAgICBuZXcgd2VicnRj
OjpNb2NrVmlkZW9FbmNvZGVyRmFjdG9yeSgpOwogICB3ZWJydGM6Ok1vY2tWaWRlb0RlY29kZXJG
YWN0b3J5KiBkZWNvZGVyX2ZhY3RvcnkgPQogICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1ZpZGVvRGVj
b2RlckZhY3RvcnkoKTsKKyAgd2VicnRjOjpNb2NrVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9y
eSogcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICBuZXcgd2VicnRjOjpNb2NrVmlkZW9C
aXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpOworICBFWFBFQ1RfQ0FMTCgqcmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeSwKKyAgICAgICAgICAgICAgQ3JlYXRlVmlkZW9CaXRyYXRlQWxsb2NhdG9yUHJveHko
RmllbGQoCisgICAgICAgICAgICAgICAgICAmd2VicnRjOjpWaWRlb0NvZGVjOjpjb2RlY1R5cGUs
IHdlYnJ0Yzo6a1ZpZGVvQ29kZWNWUDgpKSkKKyAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1
cm4obmV3IHdlYnJ0Yzo6TW9ja1ZpZGVvQml0cmF0ZUFsbG9jYXRvcigpKSk7CiAgIFdlYlJ0Y1Zp
ZGVvRW5naW5lIGVuZ2luZSgKICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0Vu
Y29kZXJGYWN0b3J5PihlbmNvZGVyX2ZhY3RvcnkpKSwKLSAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PihkZWNvZGVyX2ZhY3RvcnkpKSk7CisgICAgICAo
c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4oZGVjb2Rlcl9mYWN0
b3J5KSksCisgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2Nh
dG9yRmFjdG9yeT4oCisgICAgICAgICAgcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkpKTsKICAgY29u
c3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCB2cDhfZm9ybWF0KCJWUDgiKTsKICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8d2VicnRjOjpTZHBWaWRlb0Zvcm1hdD4gc3VwcG9ydGVkX2Zvcm1hdHMgPSB7dnA4
X2Zvcm1hdH07CiAgIEVYUEVDVF9DQUxMKCplbmNvZGVyX2ZhY3RvcnksIEdldFN1cHBvcnRlZEZv
cm1hdHMoKSkKQEAgLTEwNjYsNyArMTEwNSw3IEBAIFRFU1QoV2ViUnRjVmlkZW9FbmdpbmVOZXdW
aWRlb0NvZGVjRmFjdG9yeVRlc3QsIFZwOCkgewogICBFWFBFQ1RfQ0FMTCgqZW5jb2Rlcl9mYWN0
b3J5LCBRdWVyeVZpZGVvRW5jb2Rlcihmb3JtYXQpKQogICAgICAgLldpbGxSZXBlYXRlZGx5KHRl
c3Rpbmc6OlJldHVybihjb2RlY19pbmZvKSk7CiAgIEZha2VXZWJSdGNWaWRlb0VuY29kZXIqIGNv
bnN0IGVuY29kZXIgPSBuZXcgRmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlcihudWxscHRyKTsKLSAgcnRj
OjpFdmVudCBlbmNvZGVyX2NyZWF0ZWQoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBlbmNv
ZGVyX2NyZWF0ZWQ7CiAgIEVYUEVDVF9DQUxMKCplbmNvZGVyX2ZhY3RvcnksIENyZWF0ZVZpZGVv
RW5jb2RlclByb3h5KGZvcm1hdCkpCiAgICAgICAuV2lsbE9uY2UoCiAgICAgICAgICAgOjp0ZXN0
aW5nOjpEb0FsbCg6OnRlc3Rpbmc6Okludm9rZVdpdGhvdXRBcmdzKApAQCAtMTA4NSw4ICsxMTI0
LDggQEAgVEVTVChXZWJSdGNWaWRlb0VuZ2luZU5ld1ZpZGVvQ29kZWNGYWN0b3J5VGVzdCwgVnA4
KSB7CiAKICAgLy8gQ3JlYXRlIHNlbmQgY2hhbm5lbC4KICAgY29uc3QgaW50IHNlbmRfc3NyYyA9
IDEyMzsKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBzZW5kX2NoYW5uZWwo
Ci0gICAgICBlbmdpbmUuQ3JlYXRlQ2hhbm5lbChjYWxsLmdldCgpLCBHZXRNZWRpYUNvbmZpZygp
LCBWaWRlb09wdGlvbnMoKSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+
IHNlbmRfY2hhbm5lbChlbmdpbmUuQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbC5nZXQo
KSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9u
cygpKSk7CiAgIGNyaWNrZXQ6OlZpZGVvU2VuZFBhcmFtZXRlcnMgc2VuZF9wYXJhbWV0ZXJzOwog
ICBzZW5kX3BhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhlbmdpbmVfY29kZWNzLmF0KDApKTsK
ICAgRVhQRUNUX1RSVUUoc2VuZF9jaGFubmVsLT5TZXRTZW5kUGFyYW1ldGVycyhzZW5kX3BhcmFt
ZXRlcnMpKTsKQEAgLTExMDYsOCArMTE0NSw4IEBAIFRFU1QoV2ViUnRjVmlkZW9FbmdpbmVOZXdW
aWRlb0NvZGVjRmFjdG9yeVRlc3QsIFZwOCkgewogCiAgIC8vIENyZWF0ZSByZWN2IGNoYW5uZWwu
CiAgIGNvbnN0IGludCByZWN2X3NzcmMgPSAzMjE7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01l
ZGlhQ2hhbm5lbD4gcmVjdl9jaGFubmVsKAotICAgICAgZW5naW5lLkNyZWF0ZUNoYW5uZWwoY2Fs
bC5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3RkOjp1bmlx
dWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiByZWN2X2NoYW5uZWwoZW5naW5lLkNyZWF0ZU1lZGlh
Q2hhbm5lbCgKKyAgICAgIGNhbGwuZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9u
cygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBjcmlja2V0OjpWaWRlb1JlY3ZQYXJh
bWV0ZXJzIHJlY3ZfcGFyYW1ldGVyczsKICAgcmVjdl9wYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2Jh
Y2soZW5naW5lX2NvZGVjcy5hdCgwKSk7CiAgIEVYUEVDVF9UUlVFKHJlY3ZfY2hhbm5lbC0+U2V0
UmVjdlBhcmFtZXRlcnMocmVjdl9wYXJhbWV0ZXJzKSk7CkBAIC0xMTE3LDYgKzExNTYsNyBAQCBU
RVNUKFdlYlJ0Y1ZpZGVvRW5naW5lTmV3VmlkZW9Db2RlY0ZhY3RvcnlUZXN0LCBWcDgpIHsKICAg
Ly8gUmVtb3ZlIHN0cmVhbXMgcHJldmlvdXNseSBhZGRlZCB0byBmcmVlIHRoZSBlbmNvZGVyIGFu
ZCBkZWNvZGVyIGluc3RhbmNlLgogICBFWFBFQ1RfQ0FMTCgqZW5jb2Rlcl9mYWN0b3J5LCBEaWUo
KSk7CiAgIEVYUEVDVF9DQUxMKCpkZWNvZGVyX2ZhY3RvcnksIERpZSgpKTsKKyAgRVhQRUNUX0NB
TEwoKnJhdGVfYWxsb2NhdG9yX2ZhY3RvcnksIERpZSgpKTsKICAgRVhQRUNUX1RSVUUoc2VuZF9j
aGFubmVsLT5SZW1vdmVTZW5kU3RyZWFtKHNlbmRfc3NyYykpOwogICBFWFBFQ1RfVFJVRShyZWN2
X2NoYW5uZWwtPlJlbW92ZVJlY3ZTdHJlYW0ocmVjdl9zc3JjKSk7CiB9CkBAIC0xMTI1LDEyICsx
MTY1LDE2IEBAIFRFU1QoV2ViUnRjVmlkZW9FbmdpbmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3Qs
IFZwOCkgewogVEVTVChXZWJSdGNWaWRlb0VuZ2luZU5ld1ZpZGVvQ29kZWNGYWN0b3J5VGVzdCwg
TnVsbERlY29kZXIpIHsKICAgLy8gfGVuZ2luZXwgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGZhY3Rv
cmllcy4KICAgd2VicnRjOjpNb2NrVmlkZW9FbmNvZGVyRmFjdG9yeSogZW5jb2Rlcl9mYWN0b3J5
ID0KLSAgICAgIG5ldyB0ZXN0aW5nOjpTdHJpY3RNb2NrPHdlYnJ0Yzo6TW9ja1ZpZGVvRW5jb2Rl
ckZhY3Rvcnk+KCk7CisgICAgICBuZXcgd2VicnRjOjpNb2NrVmlkZW9FbmNvZGVyRmFjdG9yeSgp
OwogICB3ZWJydGM6Ok1vY2tWaWRlb0RlY29kZXJGYWN0b3J5KiBkZWNvZGVyX2ZhY3RvcnkgPQot
ICAgICAgbmV3IHRlc3Rpbmc6OlN0cmljdE1vY2s8d2VicnRjOjpNb2NrVmlkZW9EZWNvZGVyRmFj
dG9yeT4oKTsKKyAgICAgIG5ldyB3ZWJydGM6Ok1vY2tWaWRlb0RlY29kZXJGYWN0b3J5KCk7Cisg
IHdlYnJ0Yzo6TW9ja1ZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkqIHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnkgPQorICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1ZpZGVvQml0cmF0ZUFsbG9jYXRvckZh
Y3RvcnkoKTsKICAgV2ViUnRjVmlkZW9FbmdpbmUgZW5naW5lKAogICAgICAgKHN0ZDo6dW5pcXVl
X3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+KGVuY29kZXJfZmFjdG9yeSkpLAotICAg
ICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+KGRlY29kZXJf
ZmFjdG9yeSkpKTsKKyAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJG
YWN0b3J5PihkZWNvZGVyX2ZhY3RvcnkpKSwKKyAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRj
OjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PigKKyAgICAgICAgICByYXRlX2FsbG9jYXRv
cl9mYWN0b3J5KSkpOwogICBjb25zdCB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0IHZwOF9mb3JtYXQo
IlZQOCIpOwogICBjb25zdCBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlNkcFZpZGVvRm9ybWF0PiBzdXBw
b3J0ZWRfZm9ybWF0cyA9IHt2cDhfZm9ybWF0fTsKICAgRVhQRUNUX0NBTEwoKmVuY29kZXJfZmFj
dG9yeSwgR2V0U3VwcG9ydGVkRm9ybWF0cygpKQpAQCAtMTE0Nyw4ICsxMTkxLDggQEAgVEVTVChX
ZWJSdGNWaWRlb0VuZ2luZU5ld1ZpZGVvQ29kZWNGYWN0b3J5VGVzdCwgTnVsbERlY29kZXIpIHsK
IAogICAvLyBDcmVhdGUgcmVjdiBjaGFubmVsLgogICBjb25zdCBpbnQgcmVjdl9zc3JjID0gMzIx
OwotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IHJlY3ZfY2hhbm5lbCgKLSAg
ICAgIGVuZ2luZS5DcmVhdGVDaGFubmVsKGNhbGwuZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZp
ZGVvT3B0aW9ucygpKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gcmVj
dl9jaGFubmVsKGVuZ2luZS5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICBjYWxsLmdldCgpLCBH
ZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkp
KTsKICAgY3JpY2tldDo6VmlkZW9SZWN2UGFyYW1ldGVycyByZWN2X3BhcmFtZXRlcnM7CiAgIHJl
Y3ZfcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKGVuZ2luZS5jb2RlY3MoKS5mcm9udCgpKTsK
ICAgRVhQRUNUX1RSVUUocmVjdl9jaGFubmVsLT5TZXRSZWN2UGFyYW1ldGVycyhyZWN2X3BhcmFt
ZXRlcnMpKTsKQEAgLTEyMjMsNyArMTI2Nyw4IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbEJh
c2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDoKICAgV2ViUnRjVmlk
ZW9DaGFubmVsQmFzZVRlc3QoKQogICAgICAgOiBlbmdpbmVfKHdlYnJ0Yzo6Q3JlYXRlQnVpbHRp
blZpZGVvRW5jb2RlckZhY3RvcnkoKSwKLSAgICAgICAgICAgICAgICB3ZWJydGM6OkNyZWF0ZUJ1
aWx0aW5WaWRlb0RlY29kZXJGYWN0b3J5KCkpIHt9CisgICAgICAgICAgICAgICAgd2VicnRjOjpD
cmVhdGVCdWlsdGluVmlkZW9EZWNvZGVyRmFjdG9yeSgpLAorICAgICAgICAgICAgICAgIHdlYnJ0
Yzo6Q3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSkge30KIAogICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CiAgICAgLy8gT25lIHRlc3RjYXNlIGNhbGxzIFNldFVwIGlu
IGEgbG9vcCwgb25seSBjcmVhdGUgY2FsbF8gb25jZS4KQEAgLTEyMzYsMTIgKzEyODEsMTQgQEAg
Y2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CiAgICAgLy8gbmVlZHMgdG8gYmUgZGlzYWJsZWQsIG90aGVyd2lzZSwgdGVzdHMgd2hpY2ggY2hl
Y2sgdGhlIHNpemUgb2YgcmVjZWl2ZWQKICAgICAvLyBmcmFtZXMgYmVjb21lIGZsYWt5LgogICAg
IG1lZGlhX2NvbmZpZy52aWRlby5lbmFibGVfY3B1X2FkYXB0YXRpb24gPSBmYWxzZTsKLSAgICBj
aGFubmVsXy5yZXNldChlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoY2FsbF8uZ2V0KCksIG1lZGlhX2Nv
bmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6
VmlkZW9PcHRpb25zKCkpKTsKKyAgICBjaGFubmVsXy5yZXNldCgKKyAgICAgICAgc3RhdGljX2Nh
c3Q8Y3JpY2tldDo6V2ViUnRjVmlkZW9DaGFubmVsKj4oZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5u
ZWwoCisgICAgICAgICAgICBjYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBjcmlja2V0OjpWaWRl
b09wdGlvbnMoKSwKKyAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSkpOwogICAg
IGNoYW5uZWxfLT5PblJlYWR5VG9TZW5kKHRydWUpOwogICAgIEVYUEVDVF9UUlVFKGNoYW5uZWxf
LmdldCgpICE9IE5VTEwpOwogICAgIG5ldHdvcmtfaW50ZXJmYWNlXy5TZXREZXN0aW5hdGlvbihj
aGFubmVsXy5nZXQoKSk7Ci0gICAgY2hhbm5lbF8tPlNldEludGVyZmFjZSgmbmV0d29ya19pbnRl
cmZhY2VfKTsKKyAgICBjaGFubmVsXy0+U2V0SW50ZXJmYWNlKCZuZXR3b3JrX2ludGVyZmFjZV8s
IC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgICAgY3JpY2tldDo6VmlkZW9SZWN2UGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuY29kZWNzID0gZW5naW5lXy5jb2Rl
Y3MoKTsKICAgICBjaGFubmVsXy0+U2V0UmVjdlBhcmFtZXRlcnMocGFyYW1ldGVycyk7CkBAIC0x
NDExLDcgKzE0NTgsNyBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWxCYXNlVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKIAogICBjcmlja2V0OjpWaWRlb0NvZGVjIEdldEVuZ2luZUNvZGVj
KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7CiAgICAgZm9yIChjb25zdCBjcmlja2V0OjpWaWRl
b0NvZGVjJiBlbmdpbmVfY29kZWMgOiBlbmdpbmVfLmNvZGVjcygpKSB7Ci0gICAgICBpZiAoQ29k
ZWNOYW1lc0VxKG5hbWUsIGVuZ2luZV9jb2RlYy5uYW1lKSkKKyAgICAgIGlmIChhYnNsOjpFcXVh
bHNJZ25vcmVDYXNlKG5hbWUsIGVuZ2luZV9jb2RlYy5uYW1lKSkKICAgICAgICAgcmV0dXJuIGVu
Z2luZV9jb2RlYzsKICAgICB9CiAgICAgLy8gVGhpcyBwb2ludCBzaG91bGQgbmV2ZXIgYmUgcmVh
Y2hlZC4KQEAgLTE0NjUsNjAgKzE1MTIsNyBAQCBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsQmFz
ZVRlc3QsIFNldFNlbmRTZXRzVHJhbnNwb3J0QnVmZmVyU2l6ZXMpIHsKICAgRVhQRUNUX1RSVUUo
U2V0T25lQ29kZWMoRGVmYXVsdENvZGVjKCkpKTsKICAgRVhQRUNUX1RSVUUoU2V0U2VuZCh0cnVl
KSk7CiAgIEVYUEVDVF9FUSg2NCAqIDEwMjQsIG5ldHdvcmtfaW50ZXJmYWNlXy5zZW5kYnVmX3Np
emUoKSk7Ci0gIEVYUEVDVF9FUSg2NCAqIDEwMjQsIG5ldHdvcmtfaW50ZXJmYWNlXy5yZWN2YnVm
X3NpemUoKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCB3ZSBwcm9wZXJseSBzZXQgdGhlIHNlbmQgYW5k
IHJlY3YgYnVmZmVyIHNpemVzIHdoZW4gb3ZlcnJpZGluZwotLy8gdmlhIGZpZWxkIHRyaWFscy4K
LVRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxCYXNlVGVzdCwgT3ZlcnJpZGVzUmVjdkJ1ZmZlclNp
emUpIHsKLSAgLy8gU2V0IGZpZWxkIHRyaWFsIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHJlY3Yg
YnVmZmVyIHNpemUsIGFuZCB0aGVuIHJlLXJ1bgotICAvLyBzZXR1cCB3aGVyZSB0aGUgaW50ZXJm
YWNlIGlzIGNyZWF0ZWQgYW5kIGNvbmZpZ3VyZWQuCi0gIGNvbnN0IGludCBrQ3VzdG9tUmVjdkJ1
ZmZlclNpemUgPSAxMjM0NTY7Ci0gIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmll
bGRfdHJpYWwoCi0gICAgICAiV2ViUlRDLUluY3JlYXNlZFJlY2VpdmVidWZmZXJzLzEyMzQ1Ni8i
KTsKLSAgU2V0VXAoKTsKLQotICBFWFBFQ1RfVFJVRShTZXRPbmVDb2RlYyhEZWZhdWx0Q29kZWMo
KSkpOwotICBFWFBFQ1RfVFJVRShTZXRTZW5kKHRydWUpKTsKLSAgRVhQRUNUX0VRKDY0ICogMTAy
NCwgbmV0d29ya19pbnRlcmZhY2VfLnNlbmRidWZfc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKGtDdXN0
b21SZWN2QnVmZmVyU2l6ZSwgbmV0d29ya19pbnRlcmZhY2VfLnJlY3ZidWZfc2l6ZSgpKTsKLX0K
LQotLy8gVGVzdCB0aGF0IHdlIHByb3Blcmx5IHNldCB0aGUgc2VuZCBhbmQgcmVjdiBidWZmZXIg
c2l6ZXMgd2hlbiBvdmVycmlkaW5nCi0vLyB2aWEgZmllbGQgdHJpYWxzIHdpdGggc3VmZml4Lgot
VEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbEJhc2VUZXN0LCBPdmVycmlkZXNSZWN2QnVmZmVyU2l6
ZVdpdGhTdWZmaXgpIHsKLSAgLy8gU2V0IGZpZWxkIHRyaWFsIHRvIG92ZXJyaWRlIHRoZSBkZWZh
dWx0IHJlY3YgYnVmZmVyIHNpemUsIGFuZCB0aGVuIHJlLXJ1bgotICAvLyBzZXR1cCB3aGVyZSB0
aGUgaW50ZXJmYWNlIGlzIGNyZWF0ZWQgYW5kIGNvbmZpZ3VyZWQuCi0gIGNvbnN0IGludCBrQ3Vz
dG9tUmVjdkJ1ZmZlclNpemUgPSAxMjM0NTY7Ci0gIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRU
cmlhbHMgZmllbGRfdHJpYWwoCi0gICAgICAiV2ViUlRDLUluY3JlYXNlZFJlY2VpdmVidWZmZXJz
LzEyMzQ1Nl9Eb2dmb29kLyIpOwotICBTZXRVcCgpOwotCi0gIEVYUEVDVF9UUlVFKFNldE9uZUNv
ZGVjKERlZmF1bHRDb2RlYygpKSk7Ci0gIEVYUEVDVF9UUlVFKFNldFNlbmQodHJ1ZSkpOwotICBF
WFBFQ1RfRVEoNjQgKiAxMDI0LCBuZXR3b3JrX2ludGVyZmFjZV8uc2VuZGJ1Zl9zaXplKCkpOwot
ICBFWFBFQ1RfRVEoa0N1c3RvbVJlY3ZCdWZmZXJTaXplLCBuZXR3b3JrX2ludGVyZmFjZV8ucmVj
dmJ1Zl9zaXplKCkpOwotfQotCi0vLyBUZXN0IHRoYXQgd2UgcHJvcGVybHkgc2V0IHRoZSBzZW5k
IGFuZCByZWN2IGJ1ZmZlciBzaXplcyB3aGVuIG92ZXJyaWRpbmcKLS8vIHZpYSBmaWVsZCB0cmlh
bHMgdGhhdCBkb24ndCBtYWtlIGFueSBzZW5zZS4KLVRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxC
YXNlVGVzdCwgSW52YWxpZFJlY3ZCdWZmZXJTaXplKSB7Ci0gIC8vIFNldCBib2d1cyBmaWVsZCB0
cmlhbCB2YWx1ZXMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcmVjdiBidWZmZXIgc2l6ZSwgYW5k
Ci0gIC8vIHRoZW4gcmUtcnVuIHNldHVwIHdoZXJlIHRoZSBpbnRlcmZhY2UgaXMgY3JlYXRlZCBh
bmQgY29uZmlndXJlZC4gVGhlCi0gIC8vIGRlZmF1bHQgdmFsdWUgc2hvdWxkIHN0aWxsIGJlIHVz
ZWQuCi0KLSAgZm9yIChzdGQ6OnN0cmluZyBncm91cCA6IHsiICIsICJOb3RBTnVtYmVyIiwgIi0x
IiwgIjAifSkgewotICAgIHN0ZDo6c3RyaW5nIGZpZWxkX3RyaWFsX3N0cmluZyA9ICJXZWJSVEMt
SW5jcmVhc2VkUmVjZWl2ZWJ1ZmZlcnMvIjsKLSAgICBmaWVsZF90cmlhbF9zdHJpbmcgKz0gZ3Jv
dXA7Ci0gICAgZmllbGRfdHJpYWxfc3RyaW5nICs9ICIvIjsKLSAgICB3ZWJydGM6OnRlc3Q6OlNj
b3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFsKGZpZWxkX3RyaWFsX3N0cmluZyk7Ci0gICAgU2V0
VXAoKTsKLQotICAgIEVYUEVDVF9UUlVFKFNldE9uZUNvZGVjKERlZmF1bHRDb2RlYygpKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoU2V0U2VuZCh0cnVlKSk7Ci0gICAgRVhQRUNUX0VRKDY0ICogMTAyNCwg
bmV0d29ya19pbnRlcmZhY2VfLnNlbmRidWZfc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVEoNjQgKiAx
MDI0LCBuZXR3b3JrX2ludGVyZmFjZV8ucmVjdmJ1Zl9zaXplKCkpOwotICB9CisgIEVYUEVDVF9F
USgyNTYgKiAxMDI0LCBuZXR3b3JrX2ludGVyZmFjZV8ucmVjdmJ1Zl9zaXplKCkpOwogfQogCiAv
LyBUZXN0IHRoYXQgc3RhdHMgd29yayBwcm9wZXJseSBmb3IgYSAxLTEgY2FsbC4KQEAgLTE3NTcs
NyArMTc1MSw3IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxCYXNlVGVzdCwgU2V0U2luaykg
ewogICBFWFBFQ1RfVFJVRShTZXREZWZhdWx0Q29kZWMoKSk7CiAgIEVYUEVDVF9UUlVFKFNldFNl
bmQodHJ1ZSkpOwogICBFWFBFQ1RfRVEoMCwgcmVuZGVyZXJfLm51bV9yZW5kZXJlZF9mcmFtZXMo
KSk7Ci0gIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQxLCBydGM6OlBhY2tldFRp
bWUoKSk7CisgIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQxLCAvKiBwYWNrZXRf
dGltZV91cyAqLyAtMSk7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWxfLT5TZXRTaW5rKGtEZWZhdWx0
UmVjZWl2ZVNzcmMsICZyZW5kZXJlcl8pKTsKICAgRVhQRUNUX1RSVUUoU2VuZEZyYW1lKCkpOwog
ICBFWFBFQ1RfRlJBTUVfV0FJVCgxLCBrVmlkZW9XaWR0aCwga1ZpZGVvSGVpZ2h0LCBrVGltZW91
dCk7CkBAIC0yMDQ2LDggKzIwNDAsOSBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWxUZXN0IDog
cHVibGljIFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCB7CiAjZW5kaWYKIAogICAgIGZha2VfY2FsbF8u
cmVzZXQobmV3IEZha2VDYWxsKCkpOwotICAgIGNoYW5uZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRl
Q2hhbm5lbChmYWtlX2NhbGxfLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb09wdGlvbnMoKSkpOworICAgIGNoYW5u
ZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKGZha2VfY2FsbF8uZ2V0KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0TWVkaWFDb25m
aWcoKSwgVmlkZW9PcHRpb25zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKICAgICBjaGFubmVsXy0+T25S
ZWFkeVRvU2VuZCh0cnVlKTsKICAgICBsYXN0X3NzcmNfID0gMTIzOwogICAgIHNlbmRfcGFyYW1l
dGVyc18uY29kZWNzID0gZW5naW5lXy5jb2RlY3MoKTsKQEAgLTIxMjEsNiArMjExNiwyOSBAQCBj
bGFzcyBXZWJSdGNWaWRlb0NoYW5uZWxUZXN0IDogcHVibGljIFdlYlJ0Y1ZpZGVvRW5naW5lVGVz
dCB7CiAgICAgICAgICAgICAgICAgICAgICZCaXRyYXRlQ29uc3RyYWludHM6Om1heF9iaXRyYXRl
X2JwcywgbWF4X2JpdHJhdGVfYnBzKSkpOwogICB9CiAKKyAgdm9pZCBUZXN0RXh0bWFwQWxsb3dN
aXhlZENhbGxlcihib29sIGV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIC8vIEZvciBhIGNhbGxl
ciwgdGhlIGFuc3dlciB3aWxsIGJlIGFwcGxpZWQgaW4gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbgor
ICAgIC8vIHdoZXJlIFNldFNlbmRQYXJhbWV0ZXJzKCkgaXMgY2FsbGVkLgorICAgIEVYUEVDVF9U
UlVFKAorICAgICAgICBjaGFubmVsXy0+QWRkU2VuZFN0cmVhbShjcmlja2V0OjpTdHJlYW1QYXJh
bXM6OkNyZWF0ZUxlZ2FjeShrU3NyYykpKTsKKyAgICBzZW5kX3BhcmFtZXRlcnNfLmV4dG1hcF9h
bGxvd19taXhlZCA9IGV4dG1hcF9hbGxvd19taXhlZDsKKyAgICBFWFBFQ1RfVFJVRShjaGFubmVs
Xy0+U2V0U2VuZFBhcmFtZXRlcnMoc2VuZF9wYXJhbWV0ZXJzXykpOworICAgIGNvbnN0IHdlYnJ0
Yzo6VmlkZW9TZW5kU3RyZWFtOjpDb25maWcmIGNvbmZpZyA9CisgICAgICAgIGZha2VfY2FsbF8t
PkdldFZpZGVvU2VuZFN0cmVhbXMoKVswXS0+R2V0Q29uZmlnKCk7CisgICAgRVhQRUNUX0VRKGV4
dG1hcF9hbGxvd19taXhlZCwgY29uZmlnLnJ0cC5leHRtYXBfYWxsb3dfbWl4ZWQpOworICB9CisK
KyAgdm9pZCBUZXN0RXh0bWFwQWxsb3dNaXhlZENhbGxlZShib29sIGV4dG1hcF9hbGxvd19taXhl
ZCkgeworICAgIC8vIEZvciBhIGNhbGxlZSwgdGhlIGFuc3dlciB3aWxsIGJlIGFwcGxpZWQgaW4g
c2V0IGxvY2FsIGRlc2NyaXB0aW9uCisgICAgLy8gd2hlcmUgU2V0RXh0bWFwQWxsb3dNaXhlZCgp
IGFuZCBBZGRTZW5kU3RyZWFtKCkgYXJlIGNhbGxlZC4KKyAgICBjaGFubmVsXy0+U2V0RXh0bWFw
QWxsb3dNaXhlZChleHRtYXBfYWxsb3dfbWl4ZWQpOworICAgIEVYUEVDVF9UUlVFKAorICAgICAg
ICBjaGFubmVsXy0+QWRkU2VuZFN0cmVhbShjcmlja2V0OjpTdHJlYW1QYXJhbXM6OkNyZWF0ZUxl
Z2FjeShrU3NyYykpKTsKKyAgICBjb25zdCB3ZWJydGM6OlZpZGVvU2VuZFN0cmVhbTo6Q29uZmln
JiBjb25maWcgPQorICAgICAgICBmYWtlX2NhbGxfLT5HZXRWaWRlb1NlbmRTdHJlYW1zKClbMF0t
PkdldENvbmZpZygpOworICAgIEVYUEVDVF9FUShleHRtYXBfYWxsb3dfbWl4ZWQsIGNvbmZpZy5y
dHAuZXh0bWFwX2FsbG93X21peGVkKTsKKyAgfQorCiAgIHZvaWQgVGVzdFNldFNlbmRSdHBIZWFk
ZXJFeHRlbnNpb25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBleHRfdXJpKSB7CiAgICAgLy8gRW5hYmxl
IGV4dGVuc2lvbi4KICAgICBjb25zdCBpbnQgaWQgPSAxOwpAQCAtMjM3Nyw2ICsyMzk1LDIwIEBA
IFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBSZWN2U3RyZWFtTm9SdHgpIHsKICAgQVNT
RVJUX0VRKDBVLCByZWN2X3N0cmVhbS0+R2V0Q29uZmlnKCkucnRwLnJ0eF9zc3JjKTsKIH0KIAor
Ly8gVGVzdCBwcm9wYWdhdGlvbiBvZiBleHRtYXAgYWxsb3cgbWl4ZWQgc2V0dGluZy4KK1RFU1Rf
RihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBTZXRFeHRtYXBBbGxvd01peGVkQXNDYWxsZXIpIHsK
KyAgVGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZXIoLypleHRtYXBfYWxsb3dfbWl4ZWQ9Ki90cnVl
KTsKK30KK1RFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBTZXRFeHRtYXBBbGxvd01peGVk
RGlzYWJsZWRBc0NhbGxlcikgeworICBUZXN0RXh0bWFwQWxsb3dNaXhlZENhbGxlcigvKmV4dG1h
cF9hbGxvd19taXhlZD0qL2ZhbHNlKTsKK30KK1RFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0
LCBTZXRFeHRtYXBBbGxvd01peGVkQXNDYWxsZWUpIHsKKyAgVGVzdEV4dG1hcEFsbG93TWl4ZWRD
YWxsZWUoLypleHRtYXBfYWxsb3dfbWl4ZWQ9Ki90cnVlKTsKK30KK1RFU1RfRihXZWJSdGNWaWRl
b0NoYW5uZWxUZXN0LCBTZXRFeHRtYXBBbGxvd01peGVkRGlzYWJsZWRBc0NhbGxlZSkgeworICBU
ZXN0RXh0bWFwQWxsb3dNaXhlZENhbGxlZSgvKmV4dG1hcF9hbGxvd19taXhlZD0qL2ZhbHNlKTsK
K30KKwogVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIE5vSGVhZGVyRXh0ZXNpb25zQnlE
ZWZhdWx0KSB7CiAgIEZha2VWaWRlb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtID0KICAgICAgIEFk
ZFNlbmRTdHJlYW0oY3JpY2tldDo6U3RyZWFtUGFyYW1zOjpDcmVhdGVMZWdhY3koa1NzcmNzMVsw
XSkpOwpAQCAtMjg1Myw4ICsyODg1LDggQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3Qs
IFNldE1lZGlhQ29uZmlnU3VzcGVuZEJlbG93TWluQml0cmF0ZSkgewogICBNZWRpYUNvbmZpZyBt
ZWRpYV9jb25maWcgPSBHZXRNZWRpYUNvbmZpZygpOwogICBtZWRpYV9jb25maWcudmlkZW8uc3Vz
cGVuZF9iZWxvd19taW5fYml0cmF0ZSA9IHRydWU7CiAKLSAgY2hhbm5lbF8ucmVzZXQoCi0gICAg
ICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoZmFrZV9jYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBW
aWRlb09wdGlvbnMoKSkpOworICBjaGFubmVsXy5yZXNldChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hh
bm5lbCgKKyAgICAgIGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywgVmlkZW9PcHRpb25z
KCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgIGNoYW5uZWxfLT5PblJlYWR5VG9TZW5k
KHRydWUpOwogCiAgIGNoYW5uZWxfLT5TZXRTZW5kUGFyYW1ldGVycyhzZW5kX3BhcmFtZXRlcnNf
KTsKQEAgLTI4NjMsOCArMjg5NSw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBT
ZXRNZWRpYUNvbmZpZ1N1c3BlbmRCZWxvd01pbkJpdHJhdGUpIHsKICAgRVhQRUNUX1RSVUUoc3Ry
ZWFtLT5HZXRDb25maWcoKS5zdXNwZW5kX2JlbG93X21pbl9iaXRyYXRlKTsKIAogICBtZWRpYV9j
b25maWcudmlkZW8uc3VzcGVuZF9iZWxvd19taW5fYml0cmF0ZSA9IGZhbHNlOwotICBjaGFubmVs
Xy5yZXNldCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChmYWtlX2NhbGxfLmdldCgpLCBt
ZWRpYV9jb25maWcsIFZpZGVvT3B0aW9ucygpKSk7CisgIGNoYW5uZWxfLnJlc2V0KGVuZ2luZV8u
Q3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgZmFrZV9jYWxsXy5nZXQoKSwgbWVkaWFfY29uZmln
LCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKICAgY2hhbm5lbF8t
Pk9uUmVhZHlUb1NlbmQodHJ1ZSk7CiAKICAgY2hhbm5lbF8tPlNldFNlbmRQYXJhbWV0ZXJzKHNl
bmRfcGFyYW1ldGVyc18pOwpAQCAtMzIwNCw4ICszMjM2LDggQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVv
Q2hhbm5lbFRlc3QsIEFkYXB0c09uT3ZlcnVzZUFuZENoYW5nZVJlc29sdXRpb24pIHsKICAgcGFy
YW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKGNvZGVjKTsKIAogICBNZWRpYUNvbmZpZyBtZWRpYV9j
b25maWcgPSBHZXRNZWRpYUNvbmZpZygpOwotICBjaGFubmVsXy5yZXNldCgKLSAgICAgIGVuZ2lu
ZV8uQ3JlYXRlQ2hhbm5lbChmYWtlX2NhbGxfLmdldCgpLCBtZWRpYV9jb25maWcsIFZpZGVvT3B0
aW9ucygpKSk7CisgIGNoYW5uZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAor
ICAgICAgZmFrZV9jYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMoKSwgd2Vi
cnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKICAgY2hhbm5lbF8tPk9uUmVhZHlUb1NlbmQodHJ1ZSk7
CiAgIEFTU0VSVF9UUlVFKGNoYW5uZWxfLT5TZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSk7
CiAKQEAgLTMyODUsOCArMzMxNyw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBQ
cmV2aW91c0FkYXB0YXRpb25Eb2VzTm90QXBwbHlUb1NjcmVlbnNoYXJlKSB7CiAKICAgTWVkaWFD
b25maWcgbWVkaWFfY29uZmlnID0gR2V0TWVkaWFDb25maWcoKTsKICAgbWVkaWFfY29uZmlnLnZp
ZGVvLmVuYWJsZV9jcHVfYWRhcHRhdGlvbiA9IHRydWU7Ci0gIGNoYW5uZWxfLnJlc2V0KAotICAg
ICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywg
VmlkZW9PcHRpb25zKCkpKTsKKyAgY2hhbm5lbF8ucmVzZXQoZW5naW5lXy5DcmVhdGVNZWRpYUNo
YW5uZWwoCisgICAgICBmYWtlX2NhbGxfLmdldCgpLCBtZWRpYV9jb25maWcsIFZpZGVvT3B0aW9u
cygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBjaGFubmVsXy0+T25SZWFkeVRvU2Vu
ZCh0cnVlKTsKICAgQVNTRVJUX1RSVUUoY2hhbm5lbF8tPlNldFNlbmRQYXJhbWV0ZXJzKHBhcmFt
ZXRlcnMpKTsKIApAQCAtMzM1OSw4ICszMzkxLDggQEAgdm9pZCBXZWJSdGNWaWRlb0NoYW5uZWxU
ZXN0OjpUZXN0RGVncmFkYXRpb25QcmVmZXJlbmNlKAogCiAgIE1lZGlhQ29uZmlnIG1lZGlhX2Nv
bmZpZyA9IEdldE1lZGlhQ29uZmlnKCk7CiAgIG1lZGlhX2NvbmZpZy52aWRlby5lbmFibGVfY3B1
X2FkYXB0YXRpb24gPSB0cnVlOwotICBjaGFubmVsXy5yZXNldCgKLSAgICAgIGVuZ2luZV8uQ3Jl
YXRlQ2hhbm5lbChmYWtlX2NhbGxfLmdldCgpLCBtZWRpYV9jb25maWcsIFZpZGVvT3B0aW9ucygp
KSk7CisgIGNoYW5uZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAg
ZmFrZV9jYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpD
cnlwdG9PcHRpb25zKCkpKTsKICAgY2hhbm5lbF8tPk9uUmVhZHlUb1NlbmQodHJ1ZSk7CiAKICAg
RVhQRUNUX1RSVUUoY2hhbm5lbF8tPlNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpKTsKQEAg
LTMzOTQsOCArMzQyNiw4IEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsVGVzdDo6VGVzdENwdUFk
YXB0YXRpb24oYm9vbCBlbmFibGVfb3ZlcnVzZSwKICAgaWYgKGVuYWJsZV9vdmVydXNlKSB7CiAg
ICAgbWVkaWFfY29uZmlnLnZpZGVvLmVuYWJsZV9jcHVfYWRhcHRhdGlvbiA9IHRydWU7CiAgIH0K
LSAgY2hhbm5lbF8ucmVzZXQoCi0gICAgICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoZmFrZV9jYWxs
Xy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMoKSkpOworICBjaGFubmVsXy5yZXNl
dChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGZha2VfY2FsbF8uZ2V0KCksIG1l
ZGlhX2NvbmZpZywgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAg
IGNoYW5uZWxfLT5PblJlYWR5VG9TZW5kKHRydWUpOwogCiAgIEVYUEVDVF9UUlVFKGNoYW5uZWxf
LT5TZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSk7CkBAIC00NTc1LDMxICs0NjA3LDU1IEBA
IFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBUZXN0U2V0RHNjcE9wdGlvbnMpIHsKICAg
ICAgIG5ldyBjcmlja2V0OjpGYWtlTmV0d29ya0ludGVyZmFjZSk7CiAgIE1lZGlhQ29uZmlnIGNv
bmZpZzsKICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvQ2hhbm5lbD4gY2hh
bm5lbDsKKyAgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKLSAgY2hhbm5lbC5y
ZXNldChzdGF0aWNfY2FzdDxjcmlja2V0OjpXZWJSdGNWaWRlb0NoYW5uZWwqPigKLSAgICAgIGVu
Z2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgY29uZmlnLCBWaWRlb09wdGlvbnMoKSkp
KTsKLSAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKG5ldHdvcmtfaW50ZXJmYWNlLmdldCgpKTsKKyAg
Y2hhbm5lbC5yZXNldCgKKyAgICAgIHN0YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvQ2hh
bm5lbCo+KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgICAgIGNhbGxfLmdldCgp
LCBjb25maWcsIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpKTsKKyAg
Y2hhbm5lbC0+U2V0SW50ZXJmYWNlKG5ldHdvcmtfaW50ZXJmYWNlLmdldCgpLCAvKm1lZGlhX3Ry
YW5zcG9ydD0qL251bGxwdHIpOwogICAvLyBEZWZhdWx0IHZhbHVlIHdoZW4gRFNDUCBpcyBkaXNh
YmxlZCBzaG91bGQgYmUgRFNDUF9ERUZBVUxULgogICBFWFBFQ1RfRVEocnRjOjpEU0NQX0RFRkFV
TFQsIG5ldHdvcmtfaW50ZXJmYWNlLT5kc2NwKCkpOwogCisgIC8vIERlZmF1bHQgdmFsdWUgd2hl
biBEU0NQIGlzIGVuYWJsZWQgaXMgYWxzbyBEU0NQX0RFRkFVTFQsIHVudGlsIGl0IGlzIHNldAor
ICAvLyB0aHJvdWdoIHJ0cCBwYXJhbWV0ZXJzLgogICBjb25maWcuZW5hYmxlX2RzY3AgPSB0cnVl
OwotICBjaGFubmVsLnJlc2V0KHN0YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvQ2hhbm5l
bCo+KAotICAgICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgpLCBjb25maWcsIFZp
ZGVvT3B0aW9ucygpKSkpOwotICBjaGFubmVsLT5TZXRJbnRlcmZhY2UobmV0d29ya19pbnRlcmZh
Y2UuZ2V0KCkpOworICBjaGFubmVsLnJlc2V0KAorICAgICAgc3RhdGljX2Nhc3Q8Y3JpY2tldDo6
V2ViUnRjVmlkZW9DaGFubmVsKj4oZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICAg
ICAgY2FsbF8uZ2V0KCksIGNvbmZpZywgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0
aW9ucygpKSkpOworICBjaGFubmVsLT5TZXRJbnRlcmZhY2UobmV0d29ya19pbnRlcmZhY2UuZ2V0
KCksIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CisgIEVYUEVDVF9FUShydGM6OkRTQ1Bf
REVGQVVMVCwgbmV0d29ya19pbnRlcmZhY2UtPmRzY3AoKSk7CisKKyAgLy8gQ3JlYXRlIGEgc2Vu
ZCBzdHJlYW0gdG8gY29uZmlndXJlCisgIEVYUEVDVF9UUlVFKGNoYW5uZWwtPkFkZFNlbmRTdHJl
YW0oU3RyZWFtUGFyYW1zOjpDcmVhdGVMZWdhY3koa1NzcmMpKSk7CisgIHBhcmFtZXRlcnMgPSBj
aGFubmVsLT5HZXRSdHBTZW5kUGFyYW1ldGVycyhrU3NyYyk7CisgIEFTU0VSVF9GQUxTRShwYXJh
bWV0ZXJzLmVuY29kaW5ncy5lbXB0eSgpKTsKKworICAvLyBWYXJpb3VzIHByaW9yaXRpZXMgbWFw
IHRvIHZhcmlvdXMgZHNjcCB2YWx1ZXMuCisgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdv
cmtfcHJpb3JpdHkgPSA0LjA7CisgIEFTU0VSVF9UUlVFKGNoYW5uZWwtPlNldFJ0cFNlbmRQYXJh
bWV0ZXJzKGtTc3JjLCBwYXJhbWV0ZXJzKS5vaygpKTsKICAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9B
RjQxLCBuZXR3b3JrX2ludGVyZmFjZS0+ZHNjcCgpKTsKKyAgcGFyYW1ldGVycy5lbmNvZGluZ3Nb
MF0ubmV0d29ya19wcmlvcml0eSA9IDAuNTsKKyAgQVNTRVJUX1RSVUUoY2hhbm5lbC0+U2V0UnRw
U2VuZFBhcmFtZXRlcnMoa1NzcmMsIHBhcmFtZXRlcnMpLm9rKCkpOworICBFWFBFQ1RfRVEocnRj
OjpEU0NQX0NTMSwgbmV0d29ya19pbnRlcmZhY2UtPmRzY3AoKSk7CisKKyAgLy8gQSBiYWQgcHJp
b3JpdHkgZG9lcyBub3QgY2hhbmdlIHRoZSBkc2NwIHZhbHVlLgorICBwYXJhbWV0ZXJzLmVuY29k
aW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5ID0gMC4wOworICBBU1NFUlRfRkFMU0UoY2hhbm5lbC0+
U2V0UnRwU2VuZFBhcmFtZXRlcnMoa1NzcmMsIHBhcmFtZXRlcnMpLm9rKCkpOworICBFWFBFQ1Rf
RVEocnRjOjpEU0NQX0NTMSwgbmV0d29ya19pbnRlcmZhY2UtPmRzY3AoKSk7CiAKICAgLy8gUGFj
a2V0cyBzaG91bGQgYWxzbyBzZWxmLWlkZW50aWZ5IHRoZWlyIGRzY3AgaW4gUGFja2V0T3B0aW9u
cy4KICAgY29uc3QgdWludDhfdCBrRGF0YVsxMF0gPSB7MH07CiAgIEVYUEVDVF9UUlVFKHN0YXRp
Y19jYXN0PHdlYnJ0Yzo6VHJhbnNwb3J0Kj4oY2hhbm5lbC5nZXQoKSkKICAgICAgICAgICAgICAg
ICAgIC0+U2VuZFJ0Y3Aoa0RhdGEsIHNpemVvZihrRGF0YSkpKTsKLSAgRVhQRUNUX0VRKHJ0Yzo6
RFNDUF9BRjQxLCBuZXR3b3JrX2ludGVyZmFjZS0+b3B0aW9ucygpLmRzY3ApOworICBFWFBFQ1Rf
RVEocnRjOjpEU0NQX0NTMSwgbmV0d29ya19pbnRlcmZhY2UtPm9wdGlvbnMoKS5kc2NwKTsKIAog
ICAvLyBWZXJpZnkgdGhhdCBzZXR0aW5nIHRoZSBvcHRpb24gdG8gZmFsc2UgcmVzZXRzIHRoZQog
ICAvLyBEaWZmU2VydkNvZGVQb2ludC4KICAgY29uZmlnLmVuYWJsZV9kc2NwID0gZmFsc2U7Ci0g
IGNoYW5uZWwucmVzZXQoc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRjVmlkZW9DaGFubmVsKj4o
Ci0gICAgICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoY2FsbF8uZ2V0KCksIGNvbmZpZywgVmlkZW9P
cHRpb25zKCkpKSk7Ci0gIGNoYW5uZWwtPlNldEludGVyZmFjZShuZXR3b3JrX2ludGVyZmFjZS5n
ZXQoKSk7CisgIGNoYW5uZWwucmVzZXQoCisgICAgICBzdGF0aWNfY2FzdDxjcmlja2V0OjpXZWJS
dGNWaWRlb0NoYW5uZWwqPihlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgICAgICBj
YWxsXy5nZXQoKSwgY29uZmlnLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25z
KCkpKSk7CisgIGNoYW5uZWwtPlNldEludGVyZmFjZShuZXR3b3JrX2ludGVyZmFjZS5nZXQoKSwg
LyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9ERUZB
VUxULCBuZXR3b3JrX2ludGVyZmFjZS0+ZHNjcCgpKTsKIH0KIApAQCAtNDk1Nyw4ICs1MDEzLDcg
QEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIERlZmF1bHRSZWNlaXZlU3RyZWFtUmVj
b25maWd1cmVzVG9Vc2VSdHgpIHsKICAgbWVtc2V0KGRhdGEsIDAsIHNpemVvZihkYXRhKSk7CiAg
IHJ0Yzo6U2V0QkUzMigmZGF0YVs4XSwgc3NyY3NbMF0pOwogICBydGM6OkNvcHlPbldyaXRlQnVm
ZmVyIHBhY2tldChkYXRhLCBrRGF0YUxlbmd0aCk7Ci0gIHJ0Yzo6UGFja2V0VGltZSBwYWNrZXRf
dGltZTsKLSAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcGFja2V0X3RpbWUp
OworICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCAvKiBwYWNrZXRfdGltZV91
cyAqLyAtMSk7CiAKICAgQVNTRVJUX0VRKDF1LCBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVT
dHJlYW1zKCkuc2l6ZSgpKQogICAgICAgPDwgIk5vIGRlZmF1bHQgcmVjZWl2ZSBzdHJlYW0gY3Jl
YXRlZC4iOwpAQCAtNTExNiw4ICs1MTcxLDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRl
c3QsIFJlY3ZVbnNpZ25hbGVkU3NyY1dpdGhTaWduYWxlZFN0cmVhbUlkKSB7CiAgIG1lbXNldChk
YXRhLCAwLCBzaXplb2YoZGF0YSkpOwogICBydGM6OlNldEJFMzIoJmRhdGFbOF0sIGtJbmNvbWlu
Z1Vuc2lnbmFsbGVkU3NyYyk7CiAgIHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgcGFja2V0KGRhdGEs
IGtEYXRhTGVuZ3RoKTsKLSAgcnRjOjpQYWNrZXRUaW1lIHBhY2tldF90aW1lOwotICBjaGFubmVs
Xy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBwYWNrZXRfdGltZSk7CisgIGNoYW5uZWxfLT5P
blBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKIAogICAv
LyBUaGUgc3RyZWFtIHNob3VsZCBub3cgYmUgY3JlYXRlZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBz
eW5jIGxhYmVsLgogICBFWFBFQ1RfRVEoMXUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0
cmVhbXMoKS5zaXplKCkpOwpAQCAtNTEzMCw3ICs1MTg0LDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVv
Q2hhbm5lbFRlc3QsIFJlY3ZVbnNpZ25hbGVkU3NyY1dpdGhTaWduYWxlZFN0cmVhbUlkKSB7CiAg
IEFTU0VSVF9UUlVFKGNoYW5uZWxfLT5SZW1vdmVSZWN2U3RyZWFtKGtJbmNvbWluZ1Vuc2lnbmFs
bGVkU3NyYykpOwogICBFWFBFQ1RfRVEoMHUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0
cmVhbXMoKS5zaXplKCkpOwogCi0gIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQs
IHBhY2tldF90aW1lKTsKKyAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyog
cGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfRVEoMXUsIGZha2VfY2FsbF8tPkdldFZp
ZGVvUmVjZWl2ZVN0cmVhbXMoKS5zaXplKCkpOwogICBFWFBFQ1RfVFJVRSgKICAgICAgIGZha2Vf
Y2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKVswXS0+R2V0Q29uZmlnKCkuc3luY19ncm91
cC5lbXB0eSgpKTsKQEAgLTUxNTYsOCArNTIxMCw3IEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVs
VGVzdDo6VGVzdFJlY2VpdmVVbnNpZ25hbGVkU3NyY1BhY2tldCgKICAgcnRjOjpTZXQ4KGRhdGEs
IDEsIHBheWxvYWRfdHlwZSk7CiAgIHJ0Yzo6U2V0QkUzMigmZGF0YVs4XSwga0luY29taW5nVW5z
aWduYWxsZWRTc3JjKTsKICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQoZGF0YSwga0Rh
dGFMZW5ndGgpOwotICBydGM6OlBhY2tldFRpbWUgcGFja2V0X3RpbWU7Ci0gIGNoYW5uZWxfLT5P
blBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgY2hhbm5lbF8tPk9uUGFj
a2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogCiAgIGlmIChl
eHBlY3RfY3JlYXRlZF9yZWNlaXZlX3N0cmVhbSkgewogICAgIEVYUEVDVF9FUSgxdSwgZmFrZV9j
YWxsXy0+R2V0VmlkZW9SZWNlaXZlU3RyZWFtcygpLnNpemUoKSkKQEAgLTUxNzAsNiArNTIyMywx
OCBAQCB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3Q6OlRlc3RSZWNlaXZlVW5zaWduYWxlZFNz
cmNQYWNrZXQoCiAgIH0KIH0KIAorY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsRGlzY2FyZFVua25v
d25Tc3JjVGVzdCA6IHB1YmxpYyBXZWJSdGNWaWRlb0NoYW5uZWxUZXN0IHsKKyBwdWJsaWM6Cisg
IFdlYlJ0Y1ZpZGVvQ2hhbm5lbERpc2NhcmRVbmtub3duU3NyY1Rlc3QoKQorICAgICAgOiBXZWJS
dGNWaWRlb0NoYW5uZWxUZXN0KAorICAgICAgICAgICAgIldlYlJUQy1WaWRlby1EaXNjYXJkUGFj
a2V0c1dpdGhVbmtub3duU3NyYy9FbmFibGVkLyIpIHt9Cit9OworCitURVNUX0YoV2ViUnRjVmlk
ZW9DaGFubmVsRGlzY2FyZFVua25vd25Tc3JjVGVzdCwgTm9VbnNpZ25hbGxlZFN0cmVhbUNyZWF0
ZWQpIHsKKyAgVGVzdFJlY2VpdmVVbnNpZ25hbGVkU3NyY1BhY2tldChHZXRFbmdpbmVDb2RlYygi
VlA4IikuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogZXhw
ZWN0X2NyZWF0ZWRfcmVjZWl2ZV9zdHJlYW0gKi8pOworfQorCiBURVNUX0YoV2ViUnRjVmlkZW9D
aGFubmVsVGVzdCwgVnA4UGFja2V0Q3JlYXRlc1Vuc2lnbmFsbGVkU3RyZWFtKSB7CiAgIFRlc3RS
ZWNlaXZlVW5zaWduYWxlZFNzcmNQYWNrZXQoR2V0RW5naW5lQ29kZWMoIlZQOCIpLmlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgLyogZXhwZWN0X2NyZWF0ZWRfcmVj
ZWl2ZV9zdHJlYW0gKi8pOwpAQCAtNTIzMiw4ICs1Mjk3LDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVv
Q2hhbm5lbFRlc3QsIFJlY2VpdmVEaWZmZXJlbnRVbnNpZ25hbGVkU3NyYykgewogICBydHBIZWFk
ZXIuc3NyYyA9IGtJbmNvbWluZ1Vuc2lnbmFsbGVkU3NyYyArIDE7CiAgIGNyaWNrZXQ6OlNldFJ0
cEhlYWRlcihkYXRhLCBzaXplb2YoZGF0YSksIHJ0cEhlYWRlcik7CiAgIHJ0Yzo6Q29weU9uV3Jp
dGVCdWZmZXIgcGFja2V0KGRhdGEsIHNpemVvZihkYXRhKSk7Ci0gIHJ0Yzo6UGFja2V0VGltZSBw
YWNrZXRfdGltZTsKLSAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcGFja2V0
X3RpbWUpOworICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCAvKiBwYWNrZXRf
dGltZV91cyAqLyAtMSk7CiAgIC8vIFZQOCBwYWNrZXQgc2hvdWxkIGNyZWF0ZSBkZWZhdWx0IHJl
Y2VpdmUgc3RyZWFtLgogICBBU1NFUlRfRVEoMXUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2
ZVN0cmVhbXMoKS5zaXplKCkpOwogICBGYWtlVmlkZW9SZWNlaXZlU3RyZWFtKiByZWN2X3N0cmVh
bSA9IGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKVswXTsKQEAgLTUyNDksNyAr
NTMxMyw3IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBSZWNlaXZlRGlmZmVyZW50
VW5zaWduYWxlZFNzcmMpIHsKICAgcnRwSGVhZGVyLnNzcmMgPSBrSW5jb21pbmdVbnNpZ25hbGxl
ZFNzcmMgKyAyOwogICBjcmlja2V0OjpTZXRSdHBIZWFkZXIoZGF0YSwgc2l6ZW9mKGRhdGEpLCBy
dHBIZWFkZXIpOwogICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldDIoZGF0YSwgc2l6ZW9m
KGRhdGEpKTsKLSAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldDIsIHBhY2tldF90
aW1lKTsKKyAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldDIsIC8qIHBhY2tldF90
aW1lX3VzICovIC0xKTsKICAgLy8gVlA5IHBhY2tldCBzaG91bGQgcmVwbGFjZSB0aGUgZGVmYXVs
dCByZWNlaXZlIFNTUkMuCiAgIEFTU0VSVF9FUSgxdSwgZmFrZV9jYWxsXy0+R2V0VmlkZW9SZWNl
aXZlU3RyZWFtcygpLnNpemUoKSk7CiAgIHJlY3Zfc3RyZWFtID0gZmFrZV9jYWxsXy0+R2V0Vmlk
ZW9SZWNlaXZlU3RyZWFtcygpWzBdOwpAQCAtNTI2Niw3ICs1MzMwLDcgQEAgVEVTVF9GKFdlYlJ0
Y1ZpZGVvQ2hhbm5lbFRlc3QsIFJlY2VpdmVEaWZmZXJlbnRVbnNpZ25hbGVkU3NyYykgewogICBy
dHBIZWFkZXIuc3NyYyA9IGtJbmNvbWluZ1Vuc2lnbmFsbGVkU3NyYyArIDM7CiAgIGNyaWNrZXQ6
OlNldFJ0cEhlYWRlcihkYXRhLCBzaXplb2YoZGF0YSksIHJ0cEhlYWRlcik7CiAgIHJ0Yzo6Q29w
eU9uV3JpdGVCdWZmZXIgcGFja2V0MyhkYXRhLCBzaXplb2YoZGF0YSkpOwotICBjaGFubmVsXy0+
T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0MywgcGFja2V0X3RpbWUpOworICBjaGFubmVsXy0+T25Q
YWNrZXRSZWNlaXZlZCgmcGFja2V0MywgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICAvLyBI
MjY0IHBhY2tldCBzaG91bGQgcmVwbGFjZSB0aGUgZGVmYXVsdCByZWNlaXZlIFNTUkMuCiAgIEFT
U0VSVF9FUSgxdSwgZmFrZV9jYWxsXy0+R2V0VmlkZW9SZWNlaXZlU3RyZWFtcygpLnNpemUoKSk7
CiAgIHJlY3Zfc3RyZWFtID0gZmFrZV9jYWxsXy0+R2V0VmlkZW9SZWNlaXZlU3RyZWFtcygpWzBd
OwpAQCAtNTMwMCw4ICs1MzY0LDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsCiAg
IHJ0cF9oZWFkZXIuc3NyYyA9IGtTc3JjczNbMF07CiAgIGNyaWNrZXQ6OlNldFJ0cEhlYWRlcihk
YXRhLCBzaXplb2YoZGF0YSksIHJ0cF9oZWFkZXIpOwogICBydGM6OkNvcHlPbldyaXRlQnVmZmVy
IHBhY2tldChkYXRhLCBzaXplb2YoZGF0YSkpOwotICBydGM6OlBhY2tldFRpbWUgcGFja2V0X3Rp
bWU7Ci0gIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lKTsK
KyAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMg
Ki8gLTEpOwogICAvLyBEZWZhdWx0IHJlY2VpdmUgc3RyZWFtIHNob3VsZCBiZSBjcmVhdGVkLgog
ICBBU1NFUlRfRVEoMXUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKS5zaXpl
KCkpOwogICBGYWtlVmlkZW9SZWNlaXZlU3RyZWFtKiByZWN2X3N0cmVhbTAgPQpAQCAtNTMxOSw3
ICs1MzgyLDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsCiAgIHJ0cF9oZWFkZXIu
c3NyYyA9IGtTc3JjczNbMV07CiAgIGNyaWNrZXQ6OlNldFJ0cEhlYWRlcihkYXRhLCBzaXplb2Yo
ZGF0YSksIHJ0cF9oZWFkZXIpOwogICBwYWNrZXQuU2V0RGF0YShkYXRhLCBzaXplb2YoZGF0YSkp
OwotICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBwYWNrZXRfdGltZSk7Cisg
IGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICov
IC0xKTsKICAgLy8gTmV3IGRlZmF1bHQgcmVjZWl2ZSBzdHJlYW0gc2hvdWxkIGJlIGNyZWF0ZWQs
IGJ1dCBvbGQgc3RyZWFtIHNob3VsZCByZW1haW4uCiAgIEFTU0VSVF9FUSgydSwgZmFrZV9jYWxs
Xy0+R2V0VmlkZW9SZWNlaXZlU3RyZWFtcygpLnNpemUoKSk7CiAgIEVYUEVDVF9FUShyZWN2X3N0
cmVhbTAsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKVswXSk7CkBAIC01NjQ2
LDYgKzU3MDksMjggQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIFNldFJ0cFNlbmRQ
YXJhbWV0ZXJzUHJpb3JpdHlTaW11bGNhc3RTdHJlYW1zKSB7CiAgIEVYUEVDVF9UUlVFKGNoYW5u
ZWxfLT5TZXRWaWRlb1NlbmQocHJpbWFyeV9zc3JjLCBudWxscHRyLCBudWxscHRyKSk7CiB9CiAK
Ky8vIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5uZXR3b3JrX3ByaW9yaXR5IG11c3QgYmUgb25l
IG9mIGEgZmV3IHZhbHVlcworLy8gZGVyaXZlZCBmcm9tIHRoZSBkZWZhdWx0IHByaW9yaXR5LCBj
b3JyZXNwb25kaW5nIHRvIHZlcnktbG93LCBsb3csIG1lZGl1bSwKKy8vIG9yIGhpZ2guCitURVNU
X0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgU2V0UnRwU2VuZFBhcmFtZXRlcnNJbnZhbGlkTmV0
d29ya1ByaW9yaXR5KSB7CisgIEFkZFNlbmRTdHJlYW0oKTsKKyAgd2VicnRjOjpSdHBQYXJhbWV0
ZXJzIHBhcmFtZXRlcnMgPSBjaGFubmVsXy0+R2V0UnRwU2VuZFBhcmFtZXRlcnMobGFzdF9zc3Jj
Xyk7CisgIEVYUEVDVF9FUSgxVUwsIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnNpemUoKSk7CisgIEVY
UEVDVF9FUSh3ZWJydGM6OmtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5LAorICAgICAgICAgICAgcGFy
YW1ldGVycy5lbmNvZGluZ3NbMF0ubmV0d29ya19wcmlvcml0eSk7CisKKyAgZG91YmxlIGdvb2Rf
dmFsdWVzW10gPSB7MC41LCAxLjAsIDIuMCwgNC4wfTsKKyAgZG91YmxlIGJhZF92YWx1ZXNbXSA9
IHstMS4wLCAwLjAsIDAuNDksIDAuNTEsIDEuMSwgMy45OSwgNC4xLCA1LjB9OworICBmb3IgKGF1
dG8gaXQgOiBnb29kX3ZhbHVlcykgeworICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdv
cmtfcHJpb3JpdHkgPSBpdDsKKyAgICBFWFBFQ1RfVFJVRShjaGFubmVsXy0+U2V0UnRwU2VuZFBh
cmFtZXRlcnMobGFzdF9zc3JjXywgcGFyYW1ldGVycykub2soKSk7CisgIH0KKyAgZm9yIChhdXRv
IGl0IDogYmFkX3ZhbHVlcykgeworICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdvcmtf
cHJpb3JpdHkgPSBpdDsKKyAgICBFWFBFQ1RfRkFMU0UoY2hhbm5lbF8tPlNldFJ0cFNlbmRQYXJh
bWV0ZXJzKGxhc3Rfc3NyY18sIHBhcmFtZXRlcnMpLm9rKCkpOworICB9Cit9CisKIFRFU1RfRihX
ZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBHZXRBbmRTZXRSdHBTZW5kUGFyYW1ldGVyc01heEZyYW1l
cmF0ZSkgewogICBjb25zdCBzaXplX3Qga051bVNpbXVsY2FzdFN0cmVhbXMgPSAzOwogICBTZXRV
cFNpbXVsY2FzdCh0cnVlLCBmYWxzZSk7CkBAIC02NjM0LDggKzY3MTksNyBAQCBURVNUX0YoV2Vi
UnRjVmlkZW9DaGFubmVsVGVzdCwgR2V0UnRwUmVjZWl2ZVBhcmFtZXRlcnNXaXRoVW5zaWduYWxl
ZFNzcmMpIHsKICAgcnRwSGVhZGVyLnNzcmMgPSBrSW5jb21pbmdVbnNpZ25hbGxlZFNzcmM7CiAg
IGNyaWNrZXQ6OlNldFJ0cEhlYWRlcihkYXRhLCBzaXplb2YoZGF0YSksIHJ0cEhlYWRlcik7CiAg
IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgcGFja2V0KGRhdGEsIHNpemVvZihkYXRhKSk7Ci0gIHJ0
Yzo6UGFja2V0VGltZSBwYWNrZXRfdGltZTsKLSAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQo
JnBhY2tldCwgcGFja2V0X3RpbWUpOworICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFj
a2V0LCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAKICAgLy8gVGhlIHxzc3JjfCBtZW1iZXIg
c2hvdWxkIHN0aWxsIGJlIHVuc2V0LgogICBydHBfcGFyYW1ldGVycyA9IGNoYW5uZWxfLT5HZXRS
dHBSZWNlaXZlUGFyYW1ldGVycygwKTsKQEAgLTY2OTksMTYgKzY3ODMsMjEgQEAgY2xhc3MgV2Vi
UnRjVmlkZW9DaGFubmVsU2ltdWxjYXN0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAg
ICAgIDogZmFrZV9jYWxsXygpLAogICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfKG5ldyBjcmlja2V0
OjpGYWtlV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSksCiAgICAgICAgIGRlY29kZXJfZmFjdG9y
eV8obmV3IGNyaWNrZXQ6OkZha2VXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KSwKKyAgICAgICAg
bW9ja19yYXRlX2FsbG9jYXRvcl9mYWN0b3J5XygKKyAgICAgICAgICAgIG5ldyB3ZWJydGM6Ok1v
Y2tWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KSwKICAgICAgICAgZW5naW5lXyhzdGQ6OnVu
aXF1ZV9wdHI8Y3JpY2tldDo6RmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3Rvcnk+KAogICAgICAg
ICAgICAgICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfKSwKICAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Y3JpY2tldDo6RmFrZVdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnk+KAotICAgICAg
ICAgICAgICAgICAgICBkZWNvZGVyX2ZhY3RvcnlfKSksCisgICAgICAgICAgICAgICAgICAgIGRl
Y29kZXJfZmFjdG9yeV8pLAorICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6
OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+KAorICAgICAgICAgICAgICAgICAgICBtb2Nr
X3JhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfKSksCiAgICAgICAgIGxhc3Rfc3NyY18oMCkge30KIAog
ICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgewogICAgIGVuY29kZXJfZmFjdG9yeV8tPkFkZFN1cHBv
cnRlZFZpZGVvQ29kZWNUeXBlKCJWUDgiKTsKLSAgICBjaGFubmVsXy5yZXNldCgKLSAgICAgICAg
ZW5naW5lXy5DcmVhdGVDaGFubmVsKCZmYWtlX2NhbGxfLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRl
b09wdGlvbnMoKSkpOworICAgIGNoYW5uZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFu
bmVsKCZmYWtlX2NhbGxfLCBHZXRNZWRpYUNvbmZpZygpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvT3B0aW9ucygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7
CiAgICAgY2hhbm5lbF8tPk9uUmVhZHlUb1NlbmQodHJ1ZSk7CiAgICAgbGFzdF9zc3JjXyA9IDEy
MzsKICAgfQpAQCAtNjg1OCw2ICs2OTQ3LDcgQEAgY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsU2lt
dWxjYXN0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgRmFrZUNhbGwgZmFrZV9jYWxs
XzsKICAgY3JpY2tldDo6RmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIGVuY29kZXJfZmFj
dG9yeV87CiAgIGNyaWNrZXQ6OkZha2VXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiBkZWNvZGVy
X2ZhY3RvcnlfOworICB3ZWJydGM6Ok1vY2tWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KiBt
b2NrX3JhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfOwogICBXZWJSdGNWaWRlb0VuZ2luZSBlbmdpbmVf
OwogICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IGNoYW5uZWxfOwogICB1aW50
MzJfdCBsYXN0X3NzcmNfOwpAQCAtNjkwNSwxNiArNjk5NSwyMCBAQCBURVNUX0YoV2ViUnRjVmlk
ZW9DaGFubmVsU2ltdWxjYXN0VGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2Up
OwogfQogCi0vLyBUaGUgZmFrZSBjbG9jayBuZWVkcyB0byBiZSBpbml0aWFsaXplIGJlZm9yZSB0
aGUgY2FsbC4KLS8vIFNvIGRlZmVyIGNyZWF0aW5nIGNhbGwgaW4gYmFzZSBjbGFzcy4KLWNsYXNz
IFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3RXaXRoQ2xvY2sgOiBwdWJsaWMgV2ViUnRjVmlkZW9DaGFu
bmVsQmFzZVRlc3QgeworY2xhc3MgV2ViUnRjVmlkZW9GYWtlQ2xvY2sgewogIHB1YmxpYzoKLSAg
V2ViUnRjVmlkZW9DaGFubmVsVGVzdFdpdGhDbG9jaygpIHsKKyAgV2ViUnRjVmlkZW9GYWtlQ2xv
Y2soKSB7CiAgICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWUod2VicnRjOjpUaW1lRGVsdGE6Om1z
KDEpKTsgIC8vIGF2b2lkIHRpbWU9MAogICB9CiAgIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGZha2Vf
Y2xvY2tfOwogfTsKIAorLy8gVGhlIGZha2UgY2xvY2sgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQg
YmVmb3JlIHRoZSBjYWxsLCBhbmQgbm90CisvLyBkZXN0cm95ZWQgdW50aWwgYWZ0ZXIgYWxsIHRo
cmVhZHMgc3Bhd25lZCBieSB0aGUgdGVzdCBoYXZlIGJlZW4gc3RvcHBlZC4KKy8vIFRoaXMgbWl4
aW4gZW5zdXJlcyB0aGF0LgorY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsVGVzdFdpdGhDbG9jayA6
IHB1YmxpYyBXZWJSdGNWaWRlb0Zha2VDbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgV2ViUnRjVmlkZW9DaGFubmVsQmFzZVRlc3Qge307CisKIFRF
U1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0V2l0aENsb2NrLCBHZXRTb3VyY2VzKSB7CiAgIHVp
bnQ4X3QgZGF0YTFbXSA9IHsweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAogICAg
ICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9lbmdpbmUvd2VicnRjdm9pY2VlbmdpbmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9pY2VlbmdpbmUuY2MKaW5kZXgg
OGFlN2I5OTFlODA1MzkyZGM5MjU0YWVhODRiMTM4NjE4NmI3M2ZmOS4uMTY2MGJkODZlMTE0YWFm
YmNlYzE2NDdkNjM4OGI5MTVhYWJmNGRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5lLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Vu
Z2luZS93ZWJydGN2b2ljZWVuZ2luZS5jYwpAQCAtMTksOCArMTksMTAgQEAKICNpbmNsdWRlIDx1
dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRj
aC5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9pZC5oIgog
I2luY2x1ZGUgImFwaS9jYWxsL2F1ZGlvX3NpbmsuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJh
bnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVkaW9zb3VyY2UuaCIK
ICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibWVkaWEv
YmFzZS9zdHJlYW1wYXJhbXMuaCIKQEAgLTM4LDEwICs0MCw4IEBACiAjaW5jbHVkZSAicnRjX2Jh
c2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9yYWNlX2NoZWNrZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9i
YXNlNjQvYmFzZTY0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdHJhY2VfZXZlbnQuaCIKICNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgpAQCAtNTgsMTEgKzU4
LDYgQEAgY29uc3RleHByIGludCBrTmFja1J0cEhpc3RvcnlNcyA9IDUwMDA7CiBjb25zdCBpbnQg
a09wdXNNaW5CaXRyYXRlQnBzID0gNjAwMDsKIGNvbnN0IGludCBrT3B1c0JpdHJhdGVGYkJwcyA9
IDMyMDAwOwogCi0vLyBEZWZhdWx0IGF1ZGlvIGRzY3AgdmFsdWUuCi0vLyBTZWUgaHR0cDovL3Rv
b2xzLmlldGYub3JnL2h0bWwvcmZjMjQ3NCBmb3IgZGV0YWlscy4KLS8vIFNlZSBhbHNvIGh0dHA6
Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWplbm5pbmdzLXJ0Y3dlYi1xb3MtMDAKLWNvbnN0
IHJ0Yzo6RGlmZlNlcnZDb2RlUG9pbnQga0F1ZGlvRHNjcFZhbHVlID0gcnRjOjpEU0NQX0VGOwot
CiBjb25zdCBpbnQga01pblRlbGVwaG9uZUV2ZW50Q29kZSA9IDA7ICAvLyBSRkM0NzMzIChTZWN0
aW9uIDIuMy4xKQogY29uc3QgaW50IGtNYXhUZWxlcGhvbmVFdmVudENvZGUgPSAyNTU7CiAKQEAg
LTgzLDEyICs3OCwxMiBAQCBjbGFzcyBQcm94eVNpbmsgOiBwdWJsaWMgd2VicnRjOjpBdWRpb1Np
bmtJbnRlcmZhY2UgewogCiBib29sIFZhbGlkYXRlU3RyZWFtUGFyYW1zKGNvbnN0IFN0cmVhbVBh
cmFtcyYgc3ApIHsKICAgaWYgKHNwLnNzcmNzLmVtcHR5KCkpIHsKLSAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiTm8gU1NSQ3MgaW4gc3RyZWFtIHBhcmFtZXRlcnM6ICIgPDwgc3AuVG9TdHJpbmco
KTsKKyAgICBSVENfRExPRyhMU19FUlJPUikgPDwgIk5vIFNTUkNzIGluIHN0cmVhbSBwYXJhbWV0
ZXJzOiAiIDw8IHNwLlRvU3RyaW5nKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIGlmIChz
cC5zc3Jjcy5zaXplKCkgPiAxKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIk11bHRpcGxl
IFNTUkNzIGluIHN0cmVhbSBwYXJhbWV0ZXJzOiAiCi0gICAgICAgICAgICAgICAgICAgICAgPDwg
c3AuVG9TdHJpbmcoKTsKKyAgICBSVENfRExPRyhMU19FUlJPUikgPDwgIk11bHRpcGxlIFNTUkNz
IGluIHN0cmVhbSBwYXJhbWV0ZXJzOiAiCisgICAgICAgICAgICAgICAgICAgICAgIDw8IHNwLlRv
U3RyaW5nKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIHJldHVybiB0cnVlOwpAQCAtMTEw
LDcgKzEwNSw3IEBAIHN0ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IEF1ZGlvQ29kZWMmIGNvZGVj
KSB7CiB9CiAKIGJvb2wgSXNDb2RlYyhjb25zdCBBdWRpb0NvZGVjJiBjb2RlYywgY29uc3QgY2hh
ciogcmVmX25hbWUpIHsKLSAgcmV0dXJuIChfc3RyaWNtcChjb2RlYy5uYW1lLmNfc3RyKCksIHJl
Zl9uYW1lKSA9PSAwKTsKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFt
ZSwgcmVmX25hbWUpOwogfQogCiBib29sIEZpbmRDb2RlYyhjb25zdCBzdGQ6OnZlY3RvcjxBdWRp
b0NvZGVjPiYgY29kZWNzLApAQCAtMjg0LDYgKzI3OSw3IEBAIHZvaWQgV2ViUnRjVm9pY2VFbmdp
bmU6OkluaXQoKSB7CiAgICAgb3B0aW9ucy5zdGVyZW9fc3dhcHBpbmcgPSBmYWxzZTsKICAgICBv
cHRpb25zLmF1ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMgPSA1MDsKICAgICBvcHRpb25z
LmF1ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlID0gZmFsc2U7CisgICAgb3B0aW9u
cy5hdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcyA9IDA7CiAgICAgb3B0aW9ucy50eXBp
bmdfZGV0ZWN0aW9uID0gdHJ1ZTsKICAgICBvcHRpb25zLmV4cGVyaW1lbnRhbF9hZ2MgPSBmYWxz
ZTsKICAgICBvcHRpb25zLmV4dGVuZGVkX2ZpbHRlcl9hZWMgPSBmYWxzZTsKQEAgLTMwMywxMiAr
Mjk5LDE0IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+IFdlYlJ0Y1Zv
aWNlRW5naW5lOjpHZXRBdWRpb1N0YXRlKCkKICAgcmV0dXJuIGF1ZGlvX3N0YXRlXzsKIH0KIAot
Vm9pY2VNZWRpYUNoYW5uZWwqIFdlYlJ0Y1ZvaWNlRW5naW5lOjpDcmVhdGVDaGFubmVsKAorVm9p
Y2VNZWRpYUNoYW5uZWwqIFdlYlJ0Y1ZvaWNlRW5naW5lOjpDcmVhdGVNZWRpYUNoYW5uZWwoCiAg
ICAgd2VicnRjOjpDYWxsKiBjYWxsLAogICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCi0g
ICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKSB7CisgICAgY29uc3QgQXVkaW9PcHRpb25z
JiBvcHRpb25zLAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlv
bnMpIHsKICAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRU
aHJlYWQoKSk7Ci0gIHJldHVybiBuZXcgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwodGhpcywgY29u
ZmlnLCBvcHRpb25zLCBjYWxsKTsKKyAgcmV0dXJuIG5ldyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5l
bCh0aGlzLCBjb25maWcsIG9wdGlvbnMsIGNyeXB0b19vcHRpb25zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhbGwpOwogfQogCiBib29sIFdlYlJ0Y1ZvaWNlRW5naW5l
OjpBcHBseU9wdGlvbnMoY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zX2luKSB7CkBAIC0zMjAs
MTEgKzMxOCw2IEBAIGJvb2wgV2ViUnRjVm9pY2VFbmdpbmU6OkFwcGx5T3B0aW9ucyhjb25zdCBB
dWRpb09wdGlvbnMmIG9wdGlvbnNfaW4pIHsKICAgLy8gU2V0IGFuZCBhZGp1c3QgZWNobyBjYW5j
ZWxsZXIgb3B0aW9ucy4KICAgLy8ga0VjQ29uZmVyZW5jZSBpcyBBRUMgd2l0aCBoaWdoIHN1cHBy
ZXNzaW9uLgogICB3ZWJydGM6OkVjTW9kZXMgZWNfbW9kZSA9IHdlYnJ0Yzo6a0VjQ29uZmVyZW5j
ZTsKLSAgaWYgKG9wdGlvbnMuYWVjbV9nZW5lcmF0ZV9jb21mb3J0X25vaXNlICYmCi0gICAgICAq
b3B0aW9ucy5hZWNtX2dlbmVyYXRlX2NvbWZvcnRfbm9pc2UpIHsKLSAgICBSVENfTE9HKExTX1dB
Uk5JTkcpCi0gICAgICAgIDw8ICJJZ25vcmluZyBkZXByZWNhdGVkIG1vYmlsZSBBRUMgc2V0dGlu
ZzogY29tZm9ydCBub2lzZSI7Ci0gIH0KIAogI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKICAgaWYg
KG9wdGlvbnMuaW9zX2ZvcmNlX3NvZnR3YXJlX2FlY19IQUNLICYmCkBAIC00OTAsNiArNDgzLDEy
IEBAIGJvb2wgV2ViUnRjVm9pY2VFbmdpbmU6OkFwcGx5T3B0aW9ucyhjb25zdCBBdWRpb09wdGlv
bnMmIG9wdGlvbnNfaW4pIHsKICAgICBhdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0
ZV8gPQogICAgICAgICAqb3B0aW9ucy5hdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0
ZTsKICAgfQorICBpZiAob3B0aW9ucy5hdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcykg
eworICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIk5ldEVxIG1pbmltdW0gZGVsYXkgaXMgIgorICAg
ICAgICAgICAgICAgICAgICAgPDwgKm9wdGlvbnMuYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVs
YXlfbXM7CisgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXNfID0KKyAgICAgICAg
Km9wdGlvbnMuYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXM7CisgIH0KIAogICBpZiAo
b3B0aW9ucy50eXBpbmdfZGV0ZWN0aW9uKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiVHlw
aW5nIGRldGVjdGlvbiBpcyBlbmFibGVkPyAiCkBAIC03MTMsMTYgKzcxMiwyMCBAQCBjbGFzcyBX
ZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjQXVkaW9TZW5kU3RyZWFtCiAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyB0cmFja19pZCwKICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHdlYnJ0
Yzo6QXVkaW9TZW5kU3RyZWFtOjpDb25maWc6OlNlbmRDb2RlY1NwZWM+JgogICAgICAgICAgIHNl
bmRfY29kZWNfc3BlYywKKyAgICAgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkLAogICAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBFeHRlbnNpb24+JiBleHRlbnNpb25zLAogICAgICAg
aW50IG1heF9zZW5kX2JpdHJhdGVfYnBzLAorICAgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFs
X21zLAogICAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+JiBhdWRpb19uZXR3
b3JrX2FkYXB0b3JfY29uZmlnLAogICAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAogICAgICAgd2Vi
cnRjOjpUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LAorICAgICAgd2VicnRjOjpNZWRpYVRyYW5z
cG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0LAogICAgICAgY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6QXVkaW9FbmNvZGVyRmFjdG9yeT4mIGVuY29kZXJfZmFjdG9yeSwKICAg
ICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6QXVkaW9Db2RlY1BhaXJJZD4gY29kZWNf
cGFpcl9pZCwKLSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRW5jcnlwdG9y
SW50ZXJmYWNlPiBmcmFtZV9lbmNyeXB0b3IpCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yLAorICAgICAgY29u
c3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykKICAgICAgIDogY2FsbF8o
Y2FsbCksCi0gICAgICAgIGNvbmZpZ18oc2VuZF90cmFuc3BvcnQpLAorICAgICAgICBjb25maWdf
KHNlbmRfdHJhbnNwb3J0LCBtZWRpYV90cmFuc3BvcnQpLAogICAgICAgICBzZW5kX3NpZGVfYndl
X3dpdGhfb3ZlcmhlYWRfKAogICAgICAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFi
bGVkKCJXZWJSVEMtU2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikpLAogICAgICAgICBtYXhfc2Vu
ZF9iaXRyYXRlX2Jwc18obWF4X3NlbmRfYml0cmF0ZV9icHMpLApAQCAtNzMyLDEyICs3MzUsMTcg
QEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0Y0F1ZGlvU2VuZFN0cmVhbQog
ICAgIGNvbmZpZ18ucnRwLnNzcmMgPSBzc3JjOwogICAgIGNvbmZpZ18ucnRwLm1pZCA9IG1pZDsK
ICAgICBjb25maWdfLnJ0cC5jX25hbWUgPSBjX25hbWU7CisgICAgY29uZmlnXy5ydHAuZXh0bWFw
X2FsbG93X21peGVkID0gZXh0bWFwX2FsbG93X21peGVkOwogICAgIGNvbmZpZ18ucnRwLmV4dGVu
c2lvbnMgPSBleHRlbnNpb25zOworICAgIGNvbmZpZ18uaGFzX2RzY3AgPSBydHBfcGFyYW1ldGVy
c18uZW5jb2RpbmdzWzBdLm5ldHdvcmtfcHJpb3JpdHkgIT0KKyAgICAgICAgICAgICAgICAgICAg
ICAgd2VicnRjOjprRGVmYXVsdEJpdHJhdGVQcmlvcml0eTsKICAgICBjb25maWdfLmF1ZGlvX25l
dHdvcmtfYWRhcHRvcl9jb25maWcgPSBhdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnOwogICAg
IGNvbmZpZ18uZW5jb2Rlcl9mYWN0b3J5ID0gZW5jb2Rlcl9mYWN0b3J5OwogICAgIGNvbmZpZ18u
Y29kZWNfcGFpcl9pZCA9IGNvZGVjX3BhaXJfaWQ7CiAgICAgY29uZmlnXy50cmFja19pZCA9IHRy
YWNrX2lkOwogICAgIGNvbmZpZ18uZnJhbWVfZW5jcnlwdG9yID0gZnJhbWVfZW5jcnlwdG9yOwor
ICAgIGNvbmZpZ18uY3J5cHRvX29wdGlvbnMgPSBjcnlwdG9fb3B0aW9uczsKKyAgICBjb25maWdf
LnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0gcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM7CiAgICAg
cnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5zc3JjID0gc3NyYzsKICAgICBydHBfcGFyYW1l
dGVyc18ucnRjcC5jbmFtZSA9IGNfbmFtZTsKICAgICBydHBfcGFyYW1ldGVyc18uaGVhZGVyX2V4
dGVuc2lvbnMgPSBleHRlbnNpb25zOwpAQCAtNzY4LDYgKzc3NiwxMSBAQCBjbGFzcyBXZWJSdGNW
b2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjQXVkaW9TZW5kU3RyZWFtCiAgICAgUmVjb25maWd1cmVB
dWRpb1NlbmRTdHJlYW0oKTsKICAgfQogCisgIHZvaWQgU2V0RXh0bWFwQWxsb3dNaXhlZChib29s
IGV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIGNvbmZpZ18ucnRwLmV4dG1hcF9hbGxvd19taXhl
ZCA9IGV4dG1hcF9hbGxvd19taXhlZDsKKyAgICBSZWNvbmZpZ3VyZUF1ZGlvU2VuZFN0cmVhbSgp
OworICB9CisKICAgdm9pZCBTZXRNaWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCkgewogICAgIFJU
Q19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwog
ICAgIGlmIChjb25maWdfLnJ0cC5taWQgPT0gbWlkKSB7CkBAIC05MjgsMTIgKzk0MSwxNiBAQCBj
bGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjQXVkaW9TZW5kU3RyZWFtCiAgICAg
Y29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiBvbGRfcnRwX21heF9iaXRyYXRlID0KICAgICAgICAg
cnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5tYXhfYml0cmF0ZV9icHM7CiAgICAgZG91Ymxl
IG9sZF9wcmlvcml0eSA9IHJ0cF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3NbMF0uYml0cmF0ZV9wcmlv
cml0eTsKKyAgICBkb3VibGUgb2xkX2RzY3AgPSBydHBfcGFyYW1ldGVyc18uZW5jb2RpbmdzWzBd
Lm5ldHdvcmtfcHJpb3JpdHk7CiAgICAgcnRwX3BhcmFtZXRlcnNfID0gcGFyYW1ldGVyczsKICAg
ICBjb25maWdfLmJpdHJhdGVfcHJpb3JpdHkgPSBydHBfcGFyYW1ldGVyc18uZW5jb2RpbmdzWzBd
LmJpdHJhdGVfcHJpb3JpdHk7CisgICAgY29uZmlnXy5oYXNfZHNjcCA9IChydHBfcGFyYW1ldGVy
c18uZW5jb2RpbmdzWzBdLm5ldHdvcmtfcHJpb3JpdHkgIT0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkpOwogCiAgICAgYm9vbCByZWNvbmZp
Z3VyZV9zZW5kX3N0cmVhbSA9CiAgICAgICAgIChydHBfcGFyYW1ldGVyc18uZW5jb2RpbmdzWzBd
Lm1heF9iaXRyYXRlX2JwcyAhPSBvbGRfcnRwX21heF9iaXRyYXRlKSB8fAotICAgICAgICAocnRw
X3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5iaXRyYXRlX3ByaW9yaXR5ICE9IG9sZF9wcmlvcml0
eSk7CisgICAgICAgIChydHBfcGFyYW1ldGVyc18uZW5jb2RpbmdzWzBdLmJpdHJhdGVfcHJpb3Jp
dHkgIT0gb2xkX3ByaW9yaXR5KSB8fAorICAgICAgICAocnRwX3BhcmFtZXRlcnNfLmVuY29kaW5n
c1swXS5uZXR3b3JrX3ByaW9yaXR5ICE9IG9sZF9kc2NwKTsKICAgICBpZiAocnRwX3BhcmFtZXRl
cnNfLmVuY29kaW5nc1swXS5tYXhfYml0cmF0ZV9icHMgIT0gb2xkX3J0cF9tYXhfYml0cmF0ZSkg
ewogICAgICAgLy8gVXBkYXRlIHRoZSBiaXRyYXRlIHJhbmdlLgogICAgICAgaWYgKHNlbmRfcmF0
ZSkgewpAQCAtOTY5LDggKzk4Niw4IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpX
ZWJSdGNBdWRpb1NlbmRTdHJlYW0KICAgICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tl
cl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgICBjb25zdCBib29sIGlzX29wdXMgPQogICAg
ICAgICBjb25maWdfLnNlbmRfY29kZWNfc3BlYyAmJgotICAgICAgICAhU1RSX0NBU0VfQ01QKGNv
bmZpZ18uc2VuZF9jb2RlY19zcGVjLT5mb3JtYXQubmFtZS5jX3N0cigpLAotICAgICAgICAgICAg
ICAgICAgICAgIGtPcHVzQ29kZWNOYW1lKTsKKyAgICAgICAgYWJzbDo6RXF1YWxzSWdub3JlQ2Fz
ZShjb25maWdfLnNlbmRfY29kZWNfc3BlYy0+Zm9ybWF0Lm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga09wdXNDb2RlY05hbWUpOwogICAgIGlmIChpc19vcHVzICYmIHdlYnJ0
Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUF1ZGlvLVNlbmRTaWRlQndlIikpIHsK
ICAgICAgIGNvbmZpZ18ubWluX2JpdHJhdGVfYnBzID0ga09wdXNNaW5CaXRyYXRlQnBzOwogCkBA
IC0xMDE0LDggKzEwMzEsNiBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRj
QXVkaW9TZW5kU3RyZWFtCiAgIHZvaWQgVXBkYXRlU2VuZENvZGVjU3BlYygKICAgICAgIGNvbnN0
IHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpDb25maWc6OlNlbmRDb2RlY1NwZWMmIHNlbmRfY29k
ZWNfc3BlYykgewogICAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRP
blZhbGlkVGhyZWFkKCkpOwotICAgIGNvbmZpZ18ucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgPQot
ICAgICAgICBzZW5kX2NvZGVjX3NwZWMubmFja19lbmFibGVkID8ga05hY2tSdHBIaXN0b3J5TXMg
OiAwOwogICAgIGNvbmZpZ18uc2VuZF9jb2RlY19zcGVjID0gc2VuZF9jb2RlY19zcGVjOwogICAg
IGF1dG8gaW5mbyA9CiAgICAgICAgIGNvbmZpZ18uZW5jb2Rlcl9mYWN0b3J5LT5RdWVyeUF1ZGlv
RW5jb2RlcihzZW5kX2NvZGVjX3NwZWMuZm9ybWF0KTsKQEAgLTEwNzcsMTIgKzEwOTIsMTUgQEAg
Y2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0Y0F1ZGlvUmVjZWl2ZVN0cmVhbSB7
CiAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlJ0cEV4dGVuc2lvbj4mIGV4dGVuc2lv
bnMsCiAgICAgICB3ZWJydGM6OkNhbGwqIGNhbGwsCiAgICAgICB3ZWJydGM6OlRyYW5zcG9ydCog
cnRjcF9zZW5kX3RyYW5zcG9ydCwKKyAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZh
Y2UqIG1lZGlhX3RyYW5zcG9ydCwKICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkF1ZGlvRGVjb2RlckZhY3Rvcnk+JiBkZWNvZGVyX2ZhY3RvcnksCiAgICAgICBjb25zdCBz
dGQ6Om1hcDxpbnQsIHdlYnJ0Yzo6U2RwQXVkaW9Gb3JtYXQ+JiBkZWNvZGVyX21hcCwKICAgICAg
IGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6QXVkaW9Db2RlY1BhaXJJZD4gY29kZWNfcGFpcl9pZCwK
ICAgICAgIHNpemVfdCBqaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzLAogICAgICAgYm9vbCBqaXR0
ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSwKLSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IpCisgICAgICBpbnQg
aml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMsCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yLAorICAgICAgY29u
c3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykKICAgICAgIDogY2FsbF8o
Y2FsbCksIGNvbmZpZ18oKSB7CiAgICAgUlRDX0RDSEVDSyhjYWxsKTsKICAgICBjb25maWdfLnJ0
cC5yZW1vdGVfc3NyYyA9IHJlbW90ZV9zc3JjOwpAQCAtMTA5MSw4ICsxMTA5LDEwIEBAIGNsYXNz
IFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpXZWJSdGNBdWRpb1JlY2VpdmVTdHJlYW0gewogICAg
IGNvbmZpZ18ucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgPSB1c2VfbmFjayA/IGtOYWNrUnRwSGlz
dG9yeU1zIDogMDsKICAgICBjb25maWdfLnJ0cC5leHRlbnNpb25zID0gZXh0ZW5zaW9uczsKICAg
ICBjb25maWdfLnJ0Y3Bfc2VuZF90cmFuc3BvcnQgPSBydGNwX3NlbmRfdHJhbnNwb3J0OworICAg
IGNvbmZpZ18ubWVkaWFfdHJhbnNwb3J0ID0gbWVkaWFfdHJhbnNwb3J0OwogICAgIGNvbmZpZ18u
aml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyA9IGppdHRlcl9idWZmZXJfbWF4X3BhY2tldHM7CiAg
ICAgY29uZmlnXy5qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSA9IGppdHRlcl9idWZmZXJf
ZmFzdF9hY2NlbGVyYXRlOworICAgIGNvbmZpZ18uaml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMg
PSBqaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tczsKICAgICBpZiAoIXN0cmVhbV9pZHMuZW1wdHko
KSkgewogICAgICAgY29uZmlnXy5zeW5jX2dyb3VwID0gc3RyZWFtX2lkc1swXTsKICAgICB9CkBA
IC0xMTAwLDYgKzExMjAsNyBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRj
QXVkaW9SZWNlaXZlU3RyZWFtIHsKICAgICBjb25maWdfLmRlY29kZXJfbWFwID0gZGVjb2Rlcl9t
YXA7CiAgICAgY29uZmlnXy5jb2RlY19wYWlyX2lkID0gY29kZWNfcGFpcl9pZDsKICAgICBjb25m
aWdfLmZyYW1lX2RlY3J5cHRvciA9IGZyYW1lX2RlY3J5cHRvcjsKKyAgICBjb25maWdfLmNyeXB0
b19vcHRpb25zID0gY3J5cHRvX29wdGlvbnM7CiAgICAgUmVjcmVhdGVBdWRpb1JlY2VpdmVTdHJl
YW0oKTsKICAgfQogCkBAIC0xMjM3LDExICsxMjU4LDE3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVk
aWFDaGFubmVsOjpXZWJSdGNBdWRpb1JlY2VpdmVTdHJlYW0gewogICBSVENfRElTQUxMT1dfSU1Q
TElDSVRfQ09OU1RSVUNUT1JTKFdlYlJ0Y0F1ZGlvUmVjZWl2ZVN0cmVhbSk7CiB9OwogCi1XZWJS
dGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwoV2ViUnRjVm9pY2VF
bmdpbmUqIGVuZ2luZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6
OkNhbGwqIGNhbGwpCi0gICAgOiBWb2ljZU1lZGlhQ2hhbm5lbChjb25maWcpLCBlbmdpbmVfKGVu
Z2luZSksIGNhbGxfKGNhbGwpIHsKK1dlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpXZWJSdGNWb2lj
ZU1lZGlhQ2hhbm5lbCgKKyAgICBXZWJSdGNWb2ljZUVuZ2luZSogZW5naW5lLAorICAgIGNvbnN0
IE1lZGlhQ29uZmlnJiBjb25maWcsCisgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zLAor
ICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgd2Vi
cnRjOjpDYWxsKiBjYWxsKQorICAgIDogVm9pY2VNZWRpYUNoYW5uZWwoY29uZmlnKSwKKyAgICAg
IGVuZ2luZV8oZW5naW5lKSwKKyAgICAgIGNhbGxfKGNhbGwpLAorICAgICAgYXVkaW9fY29uZmln
Xyhjb25maWcuYXVkaW8pLAorICAgICAgY3J5cHRvX29wdGlvbnNfKGNyeXB0b19vcHRpb25zKSB7
CiAgIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpXZWJS
dGNWb2ljZU1lZGlhQ2hhbm5lbCI7CiAgIFJUQ19EQ0hFQ0soY2FsbCk7CiAgIGVuZ2luZS0+UmVn
aXN0ZXJDaGFubmVsKHRoaXMpOwpAQCAtMTI2NCw3ICsxMjkxLDcgQEAgV2ViUnRjVm9pY2VNZWRp
YUNoYW5uZWw6On5XZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCgpIHsKIH0KIAogcnRjOjpEaWZmU2Vy
dkNvZGVQb2ludCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6UHJlZmVycmVkRHNjcCgpIGNvbnN0
IHsKLSAgcmV0dXJuIGtBdWRpb0RzY3BWYWx1ZTsKKyAgcmV0dXJuIHByZWZlcnJlZF9kc2NwXzsK
IH0KIAogYm9vbCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0U2VuZFBhcmFtZXRlcnMoCkBA
IC0xMjgzLDYgKzEzMTAsMTQgQEAgYm9vbCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0U2Vu
ZFBhcmFtZXRlcnMoCiAgIGlmICghVmFsaWRhdGVSdHBFeHRlbnNpb25zKHBhcmFtcy5leHRlbnNp
b25zKSkgewogICAgIHJldHVybiBmYWxzZTsKICAgfQorCisgIGlmIChFeHRtYXBBbGxvd01peGVk
KCkgIT0gcGFyYW1zLmV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIFNldEV4dG1hcEFsbG93TWl4
ZWQocGFyYW1zLmV4dG1hcF9hbGxvd19taXhlZCk7CisgICAgZm9yIChhdXRvJiBpdCA6IHNlbmRf
c3RyZWFtc18pIHsKKyAgICAgIGl0LnNlY29uZC0+U2V0RXh0bWFwQWxsb3dNaXhlZChwYXJhbXMu
ZXh0bWFwX2FsbG93X21peGVkKTsKKyAgICB9CisgIH0KKwogICBzdGQ6OnZlY3Rvcjx3ZWJydGM6
OlJ0cEV4dGVuc2lvbj4gZmlsdGVyZWRfZXh0ZW5zaW9ucyA9IEZpbHRlclJ0cEV4dGVuc2lvbnMo
CiAgICAgICBwYXJhbXMuZXh0ZW5zaW9ucywgd2VicnRjOjpSdHBFeHRlbnNpb246OklzU3VwcG9y
dGVkRm9yQXVkaW8sIHRydWUpOwogICBpZiAoc2VuZF9ydHBfZXh0ZW5zaW9uc18gIT0gZmlsdGVy
ZWRfZXh0ZW5zaW9ucykgewpAQCAtMTM2NSwxMSArMTQwMCwzNCBAQCB3ZWJydGM6OlJUQ0Vycm9y
IFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpTZXRSdHBTZW5kUGFyYW1ldGVycygKICAgLy8gZGlm
ZmVyZW50IG9yZGVyICh3aGljaCBzaG91bGQgY2hhbmdlIHRoZSBzZW5kIGNvZGVjKS4KICAgd2Vi
cnRjOjpSdHBQYXJhbWV0ZXJzIGN1cnJlbnRfcGFyYW1ldGVycyA9IEdldFJ0cFNlbmRQYXJhbWV0
ZXJzKHNzcmMpOwogICBpZiAoY3VycmVudF9wYXJhbWV0ZXJzLmNvZGVjcyAhPSBwYXJhbWV0ZXJz
LmNvZGVjcykgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJVc2luZyBTZXRQYXJhbWV0ZXJz
IHRvIGNoYW5nZSB0aGUgc2V0IG9mIGNvZGVjcyAiCi0gICAgICAgICAgICAgICAgICAgICAgPDwg
ImlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLiI7CisgICAgUlRDX0RMT0coTFNfRVJST1IpIDw8
ICJVc2luZyBTZXRQYXJhbWV0ZXJzIHRvIGNoYW5nZSB0aGUgc2V0IG9mIGNvZGVjcyAiCisgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4iOwogICAg
IHJldHVybiB3ZWJydGM6OlJUQ0Vycm9yKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRF
RF9QQVJBTUVURVIpOwogICB9CiAKKyAgaWYgKCFwYXJhbWV0ZXJzLmVuY29kaW5ncy5lbXB0eSgp
KSB7CisgICAgYXV0byYgcHJpb3JpdHkgPSBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3b3Jr
X3ByaW9yaXR5OworICAgIHJ0Yzo6RGlmZlNlcnZDb2RlUG9pbnQgbmV3X2RzY3AgPSBydGM6OkRT
Q1BfREVGQVVMVDsKKyAgICBpZiAocHJpb3JpdHkgPT0gMC41ICogd2VicnRjOjprRGVmYXVsdEJp
dHJhdGVQcmlvcml0eSkgeworICAgICAgbmV3X2RzY3AgPSBydGM6OkRTQ1BfQ1MxOworICAgIH0g
ZWxzZSBpZiAocHJpb3JpdHkgPT0gMS4wICogd2VicnRjOjprRGVmYXVsdEJpdHJhdGVQcmlvcml0
eSkgeworICAgICAgbmV3X2RzY3AgPSBydGM6OkRTQ1BfREVGQVVMVDsKKyAgICB9IGVsc2UgaWYg
KHByaW9yaXR5ID09IDIuMCAqIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkpIHsKKyAg
ICAgIG5ld19kc2NwID0gcnRjOjpEU0NQX0VGOworICAgIH0gZWxzZSBpZiAocHJpb3JpdHkgPT0g
NC4wICogd2VicnRjOjprRGVmYXVsdEJpdHJhdGVQcmlvcml0eSkgeworICAgICAgbmV3X2RzY3Ag
PSBydGM6OkRTQ1BfRUY7CisgICAgfSBlbHNlIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIlJlY2VpdmVkIGludmFsaWQgc2VuZCBuZXR3b3JrIHByaW9yaXR5OiAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IHByaW9yaXR5OworICAgICAgcmV0dXJuIHdlYnJ0Yzo6UlRDRXJy
b3Iod2VicnRjOjpSVENFcnJvclR5cGU6OklOVkFMSURfUkFOR0UpOworICAgIH0KKworICAgIGlm
IChuZXdfZHNjcCAhPSBwcmVmZXJyZWRfZHNjcF8pIHsKKyAgICAgIHByZWZlcnJlZF9kc2NwXyA9
IG5ld19kc2NwOworICAgICAgTWVkaWFDaGFubmVsOjpVcGRhdGVEc2NwKCk7CisgICAgfQorICB9
CisKICAgLy8gVE9ETyhtaW55dWUpOiBUaGUgZm9sbG93aW5nIGxlZ2FjeSBhY3Rpb25zIGdvIGlu
dG8KICAgLy8gfFdlYlJ0Y0F1ZGlvU2VuZFN0cmVhbTo6U2V0UnRwUGFyYW1ldGVycygpfCB3aGlj
aCBpcyBjYWxsZWQgYXQgdGhlIGVuZCwKICAgLy8gdGhvdWdoIHRoZXJlIGFyZSB0d28gZGlmZmVy
ZW5jZToKQEAgLTE0NDAsOCArMTQ5OCw4IEBAIGJvb2wgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6
OlNldFJ0cFJlY2VpdmVQYXJhbWV0ZXJzKAogCiAgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBjdXJy
ZW50X3BhcmFtZXRlcnMgPSBHZXRSdHBSZWNlaXZlUGFyYW1ldGVycyhzc3JjKTsKICAgaWYgKGN1
cnJlbnRfcGFyYW1ldGVycyAhPSBwYXJhbWV0ZXJzKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIkNoYW5naW5nIHRoZSBSVFAgcmVjZWl2ZSBwYXJhbWV0ZXJzIGlzIGN1cnJlbnRseSAiCi0g
ICAgICAgICAgICAgICAgICAgICAgPDwgInVuc3VwcG9ydGVkLiI7CisgICAgUlRDX0RMT0coTFNf
RVJST1IpIDw8ICJDaGFuZ2luZyB0aGUgUlRQIHJlY2VpdmUgcGFyYW1ldGVycyBpcyBjdXJyZW50
bHkgIgorICAgICAgICAgICAgICAgICAgICAgICA8PCAidW5zdXBwb3J0ZWQuIjsKICAgICByZXR1
cm4gZmFsc2U7CiAgIH0KICAgcmV0dXJuIHRydWU7CkBAIC0xNjIzLDE3ICsxNjgxLDE3IEBAIGJv
b2wgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OlNldFNlbmRDb2RlY3MoCiAgICAgLy8gVE9ETyhz
b2xlbmJlcmcpOiBCcmVhayBvdXQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uPwogICAgIGZvciAo
Y29uc3QgQXVkaW9Db2RlYyYgY25fY29kZWMgOiBjb2RlY3MpIHsKICAgICAgIGlmIChJc0NvZGVj
KGNuX2NvZGVjLCBrQ25Db2RlY05hbWUpICYmCi0gICAgICAgICAgY25fY29kZWMuY2xvY2tyYXRl
ID09IHNlbmRfY29kZWNfc3BlYy0+Zm9ybWF0LmNsb2NrcmF0ZV9oeikgewotICAgICAgICBzd2l0
Y2ggKGNuX2NvZGVjLmNsb2NrcmF0ZSkgewotICAgICAgICAgIGNhc2UgODAwMDoKLSAgICAgICAg
ICBjYXNlIDE2MDAwOgotICAgICAgICAgIGNhc2UgMzIwMDA6Ci0gICAgICAgICAgICBzZW5kX2Nv
ZGVjX3NwZWMtPmNuZ19wYXlsb2FkX3R5cGUgPSBjbl9jb2RlYy5pZDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcp
Ci0gICAgICAgICAgICAgICAgPDwgIkNOIGZyZXF1ZW5jeSAiIDw8IGNuX2NvZGVjLmNsb2NrcmF0
ZSA8PCAiIG5vdCBzdXBwb3J0ZWQuIjsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNu
X2NvZGVjLmNsb2NrcmF0ZSA9PSBzZW5kX2NvZGVjX3NwZWMtPmZvcm1hdC5jbG9ja3JhdGVfaHog
JiYKKyAgICAgICAgICBjbl9jb2RlYy5jaGFubmVscyA9PSB2b2ljZV9jb2RlY19pbmZvLT5udW1f
Y2hhbm5lbHMpIHsKKyAgICAgICAgaWYgKGNuX2NvZGVjLmNoYW5uZWxzICE9IDEpIHsKKyAgICAg
ICAgICBSVENfTE9HKExTX1dBUk5JTkcpCisgICAgICAgICAgICAgIDw8ICJDTiAjY2hhbm5lbHMg
IiA8PCBjbl9jb2RlYy5jaGFubmVscyA8PCAiIG5vdCBzdXBwb3J0ZWQuIjsKKyAgICAgICAgfSBl
bHNlIGlmIChjbl9jb2RlYy5jbG9ja3JhdGUgIT0gODAwMCAmJiBjbl9jb2RlYy5jbG9ja3JhdGUg
IT0gMTYwMDAgJiYKKyAgICAgICAgICAgICAgICAgICBjbl9jb2RlYy5jbG9ja3JhdGUgIT0gMzIw
MDApIHsKKyAgICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpCisgICAgICAgICAgICAgIDw8ICJD
TiBmcmVxdWVuY3kgIiA8PCBjbl9jb2RlYy5jbG9ja3JhdGUgPDwgIiBub3Qgc3VwcG9ydGVkLiI7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc2VuZF9jb2RlY19zcGVjLT5jbmdfcGF5bG9h
ZF90eXBlID0gY25fY29kZWMuaWQ7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICB9
CkBAIC0xNzYxLDkgKzE4MTksMTEgQEAgYm9vbCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6QWRk
U2VuZFN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSB7CiAgIGFic2w6Om9wdGlvbmFsPHN0
ZDo6c3RyaW5nPiBhdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnID0KICAgICAgIEdldEF1ZGlv
TmV0d29ya0FkYXB0b3JDb25maWcob3B0aW9uc18pOwogICBXZWJSdGNBdWRpb1NlbmRTdHJlYW0q
IHN0cmVhbSA9IG5ldyBXZWJSdGNBdWRpb1NlbmRTdHJlYW0oCi0gICAgICBzc3JjLCBtaWRfLCBz
cC5jbmFtZSwgc3AuaWQsIHNlbmRfY29kZWNfc3BlY18sIHNlbmRfcnRwX2V4dGVuc2lvbnNfLAot
ICAgICAgbWF4X3NlbmRfYml0cmF0ZV9icHNfLCBhdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmln
LCBjYWxsXywgdGhpcywKLSAgICAgIGVuZ2luZSgpLT5lbmNvZGVyX2ZhY3RvcnlfLCBjb2RlY19w
YWlyX2lkXywgbnVsbHB0cik7CisgICAgICBzc3JjLCBtaWRfLCBzcC5jbmFtZSwgc3AuaWQsIHNl
bmRfY29kZWNfc3BlY18sIEV4dG1hcEFsbG93TWl4ZWQoKSwKKyAgICAgIHNlbmRfcnRwX2V4dGVu
c2lvbnNfLCBtYXhfc2VuZF9iaXRyYXRlX2Jwc18sCisgICAgICBhdWRpb19jb25maWdfLnJ0Y3Bf
cmVwb3J0X2ludGVydmFsX21zLCBhdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLAorICAgICAg
Y2FsbF8sIHRoaXMsIG1lZGlhX3RyYW5zcG9ydCgpLCBlbmdpbmUoKS0+ZW5jb2Rlcl9mYWN0b3J5
XywKKyAgICAgIGNvZGVjX3BhaXJfaWRfLCBudWxscHRyLCBjcnlwdG9fb3B0aW9uc18pOwogICBz
ZW5kX3N0cmVhbXNfLmluc2VydChzdGQ6Om1ha2VfcGFpcihzc3JjLCBzdHJlYW0pKTsKIAogICAv
LyBBdCB0aGlzIHBvaW50IHRoZSBzdHJlYW0ncyBsb2NhbCBTU1JDIGhhcyBiZWVuIHVwZGF0ZWQu
IElmIGl0IGlzIHRoZSBmaXJzdApAQCAtMTgyNiw3ICsxODg2LDcgQEAgYm9vbCBXZWJSdGNWb2lj
ZU1lZGlhQ2hhbm5lbDo6QWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSB7CiAK
ICAgY29uc3QgdWludDMyX3Qgc3NyYyA9IHNwLmZpcnN0X3NzcmMoKTsKICAgaWYgKHNzcmMgPT0g
MCkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkFkZFJlY3ZTdHJlYW0gd2l0aCBzc3Jj
PT0wIGlzIG5vdCBzdXBwb3J0ZWQuIjsKKyAgICBSVENfRExPRyhMU19XQVJOSU5HKSA8PCAiQWRk
UmVjdlN0cmVhbSB3aXRoIHNzcmM9PTAgaXMgbm90IHN1cHBvcnRlZC4iOwogICAgIHJldHVybiBm
YWxzZTsKICAgfQogCkBAIC0xODQ0LDEzICsxOTA0LDE1IEBAIGJvb2wgV2ViUnRjVm9pY2VNZWRp
YUNoYW5uZWw6OkFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgewogCiAgIC8v
IENyZWF0ZSBhIG5ldyBjaGFubmVsIGZvciByZWNlaXZpbmcgYXVkaW8gZGF0YS4KICAgcmVjdl9z
dHJlYW1zXy5pbnNlcnQoc3RkOjptYWtlX3BhaXIoCi0gICAgICBzc3JjLCBuZXcgV2ViUnRjQXVk
aW9SZWNlaXZlU3RyZWFtKAotICAgICAgICAgICAgICAgIHNzcmMsIHJlY2VpdmVyX3JlcG9ydHNf
c3NyY18sIHJlY3ZfdHJhbnNwb3J0X2NjX2VuYWJsZWRfLAotICAgICAgICAgICAgICAgIHJlY3Zf
bmFja19lbmFibGVkXywgc3Auc3RyZWFtX2lkcygpLCByZWN2X3J0cF9leHRlbnNpb25zXywKLSAg
ICAgICAgICAgICAgICBjYWxsXywgdGhpcywgZW5naW5lKCktPmRlY29kZXJfZmFjdG9yeV8sIGRl
Y29kZXJfbWFwXywKLSAgICAgICAgICAgICAgICBjb2RlY19wYWlyX2lkXywgZW5naW5lKCktPmF1
ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tldHNfLAotICAgICAgICAgICAgICAgIGVuZ2luZSgp
LT5hdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZV8sCi0gICAgICAgICAgICAgICAg
dW5zaWduYWxlZF9mcmFtZV9kZWNyeXB0b3JfKSkpOworICAgICAgc3NyYywKKyAgICAgIG5ldyBX
ZWJSdGNBdWRpb1JlY2VpdmVTdHJlYW0oCisgICAgICAgICAgc3NyYywgcmVjZWl2ZXJfcmVwb3J0
c19zc3JjXywgcmVjdl90cmFuc3BvcnRfY2NfZW5hYmxlZF8sCisgICAgICAgICAgcmVjdl9uYWNr
X2VuYWJsZWRfLCBzcC5zdHJlYW1faWRzKCksIHJlY3ZfcnRwX2V4dGVuc2lvbnNfLCBjYWxsXywK
KyAgICAgICAgICB0aGlzLCBtZWRpYV90cmFuc3BvcnQoKSwgZW5naW5lKCktPmRlY29kZXJfZmFj
dG9yeV8sIGRlY29kZXJfbWFwXywKKyAgICAgICAgICBjb2RlY19wYWlyX2lkXywgZW5naW5lKCkt
PmF1ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tldHNfLAorICAgICAgICAgIGVuZ2luZSgpLT5h
dWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZV8sCisgICAgICAgICAgZW5naW5lKCkt
PmF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zXywKKyAgICAgICAgICB1bnNpZ25hbGVk
X2ZyYW1lX2RlY3J5cHRvcl8sIGNyeXB0b19vcHRpb25zXykpKTsKICAgcmVjdl9zdHJlYW1zX1tz
c3JjXS0+U2V0UGxheW91dChwbGF5b3V0Xyk7CiAKICAgcmV0dXJuIHRydWU7CkBAIC0xOTc5LDE0
ICsyMDQxLDE0IEBAIGJvb2wgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6Okluc2VydER0bWYodWlu
dDMyX3Qgc3NyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVu
dCwgZHVyYXRpb24pOwogfQogCi12b2lkIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpPblBhY2tl
dFJlY2VpdmVkKAotICAgIHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICBjb25z
dCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7Cit2b2lkIFdlYlJ0Y1ZvaWNlTWVkaWFD
aGFubmVsOjpPblBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBw
YWNrZXRfdGltZV91cykgewogICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2Fs
bGVkT25WYWxpZFRocmVhZCgpKTsKIAogICB3ZWJydGM6OlBhY2tldFJlY2VpdmVyOjpEZWxpdmVy
eVN0YXR1cyBkZWxpdmVyeV9yZXN1bHQgPQogICAgICAgY2FsbF8tPlJlY2VpdmVyKCktPkRlbGl2
ZXJQYWNrZXQod2VicnRjOjpNZWRpYVR5cGU6OkFVRElPLCAqcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWUudGltZXN0YW1wKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lX3VzKTsKKwogICBp
ZiAoZGVsaXZlcnlfcmVzdWx0ICE9IHdlYnJ0Yzo6UGFja2V0UmVjZWl2ZXI6OkRFTElWRVJZX1VO
S05PV05fU1NSQykgewogICAgIHJldHVybjsKICAgfQpAQCAtMjAxNyw4ICsyMDc5LDggQEAgdm9p
ZCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZCgKICAgLy8gUmVtb3Zl
IG9sZGVzdCB1bnNpZ25hbGVkIHN0cmVhbSwgaWYgd2UgaGF2ZSB0b28gbWFueS4KICAgaWYgKHVu
c2lnbmFsZWRfcmVjdl9zc3Jjc18uc2l6ZSgpID4ga01heFVuc2lnbmFsZWRSZWN2U3RyZWFtcykg
ewogICAgIHVpbnQzMl90IHJlbW92ZV9zc3JjID0gdW5zaWduYWxlZF9yZWN2X3NzcmNzXy5mcm9u
dCgpOwotICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlJlbW92aW5nIHVuc2lnbmFsZWQgcmVjZWl2
ZSBzdHJlYW0gd2l0aCBTU1JDPSIKLSAgICAgICAgICAgICAgICAgICAgIDw8IHJlbW92ZV9zc3Jj
OworICAgIFJUQ19ETE9HKExTX0lORk8pIDw8ICJSZW1vdmluZyB1bnNpZ25hbGVkIHJlY2VpdmUg
c3RyZWFtIHdpdGggU1NSQz0iCisgICAgICAgICAgICAgICAgICAgICAgPDwgcmVtb3ZlX3NzcmM7
CiAgICAgUmVtb3ZlUmVjdlN0cmVhbShyZW1vdmVfc3NyYyk7CiAgIH0KICAgUlRDX0RDSEVDS19H
RShrTWF4VW5zaWduYWxlZFJlY3ZTdHJlYW1zLCB1bnNpZ25hbGVkX3JlY3Zfc3NyY3NfLnNpemUo
KSk7CkBAIC0yMDM4LDE5ICsyMTAwLDE4IEBAIHZvaWQgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6
Ok9uUGFja2V0UmVjZWl2ZWQoCiAgICAgU2V0UmF3QXVkaW9TaW5rKHNzcmMsIHN0ZDo6bW92ZShw
cm94eV9zaW5rKSk7CiAgIH0KIAotICBkZWxpdmVyeV9yZXN1bHQgPSBjYWxsXy0+UmVjZWl2ZXIo
KS0+RGVsaXZlclBhY2tldCgKLSAgICAgIHdlYnJ0Yzo6TWVkaWFUeXBlOjpBVURJTywgKnBhY2tl
dCwgcGFja2V0X3RpbWUudGltZXN0YW1wKTsKKyAgZGVsaXZlcnlfcmVzdWx0ID0gY2FsbF8tPlJl
Y2VpdmVyKCktPkRlbGl2ZXJQYWNrZXQod2VicnRjOjpNZWRpYVR5cGU6OkFVRElPLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcGFja2V0LCBw
YWNrZXRfdGltZV91cyk7CiAgIFJUQ19EQ0hFQ0tfTkUod2VicnRjOjpQYWNrZXRSZWNlaXZlcjo6
REVMSVZFUllfVU5LTk9XTl9TU1JDLCBkZWxpdmVyeV9yZXN1bHQpOwogfQogCi12b2lkIFdlYlJ0
Y1ZvaWNlTWVkaWFDaGFubmVsOjpPblJ0Y3BSZWNlaXZlZCgKLSAgICBydGM6OkNvcHlPbldyaXRl
QnVmZmVyKiBwYWNrZXQsCi0gICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkg
ewordm9pZCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6T25SdGNwUmVjZWl2ZWQocnRjOjpDb3B5
T25Xcml0ZUJ1ZmZlciogcGFja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBSVENfRENIRUNLKHdvcmtl
cl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKIAogICAvLyBGb3J3YXJk
IHBhY2tldCB0byBDYWxsIGFzIHdlbGwuCiAgIGNhbGxfLT5SZWNlaXZlcigpLT5EZWxpdmVyUGFj
a2V0KHdlYnJ0Yzo6TWVkaWFUeXBlOjpBVURJTywgKnBhY2tldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWUudGltZXN0YW1wKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIFdlYlJ0Y1Zv
aWNlTWVkaWFDaGFubmVsOjpPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCkBAIC0yMTgyLDYgKzIyNDMs
NyBAQCBib29sIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpHZXRTdGF0cyhWb2ljZU1lZGlhSW5m
byogaW5mbykgewogICAgIHJpbmZvLnNlY29uZGFyeV9kaXNjYXJkZWRfcmF0ZSA9IHN0YXRzLnNl
Y29uZGFyeV9kaXNjYXJkZWRfcmF0ZTsKICAgICByaW5mby5hY2NlbGVyYXRlX3JhdGUgPSBzdGF0
cy5hY2NlbGVyYXRlX3JhdGU7CiAgICAgcmluZm8ucHJlZW1wdGl2ZV9leHBhbmRfcmF0ZSA9IHN0
YXRzLnByZWVtcHRpdmVfZXhwYW5kX3JhdGU7CisgICAgcmluZm8uZGVsYXllZF9wYWNrZXRfb3V0
YWdlX3NhbXBsZXMgPSBzdGF0cy5kZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlczsKICAgICBy
aW5mby5kZWNvZGluZ19jYWxsc190b19zaWxlbmNlX2dlbmVyYXRvciA9CiAgICAgICAgIHN0YXRz
LmRlY29kaW5nX2NhbGxzX3RvX3NpbGVuY2VfZ2VuZXJhdG9yOwogICAgIHJpbmZvLmRlY29kaW5n
X2NhbGxzX3RvX25ldGVxID0gc3RhdHMuZGVjb2RpbmdfY2FsbHNfdG9fbmV0ZXE7CkBAIC0yMTkx
LDYgKzIyNTMsOCBAQCBib29sIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpHZXRTdGF0cyhWb2lj
ZU1lZGlhSW5mbyogaW5mbykgewogICAgIHJpbmZvLmRlY29kaW5nX3BsY19jbmcgPSBzdGF0cy5k
ZWNvZGluZ19wbGNfY25nOwogICAgIHJpbmZvLmRlY29kaW5nX211dGVkX291dHB1dCA9IHN0YXRz
LmRlY29kaW5nX211dGVkX291dHB1dDsKICAgICByaW5mby5jYXB0dXJlX3N0YXJ0X250cF90aW1l
X21zID0gc3RhdHMuY2FwdHVyZV9zdGFydF9udHBfdGltZV9tczsKKyAgICByaW5mby5qaXR0ZXJf
YnVmZmVyX2ZsdXNoZXMgPSBzdGF0cy5qaXR0ZXJfYnVmZmVyX2ZsdXNoZXM7CisKICAgICBpbmZv
LT5yZWNlaXZlcnMucHVzaF9iYWNrKHJpbmZvKTsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9p
Y2VlbmdpbmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2luZS5oCmluZGV4IGJlZGVkZTEyNDgwZGM3N2ZlNzRj
MzBiYjU0Nzg3YzE5NDg3ZDhhYjQuLjIxM2YxYjM5M2Y5ZTJjYTI4ZTA1OWYwNWNmMTFhNWUzZjZj
MjhlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2luZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2lu
ZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOwogCiAv
LyBXZWJSdGNWb2ljZUVuZ2luZSBpcyBhIGNsYXNzIHRvIGJlIHVzZWQgd2l0aCBDb21wb3NpdGVN
ZWRpYUVuZ2luZS4KIC8vIEl0IHVzZXMgdGhlIFdlYlJ0YyBWb2ljZUVuZ2luZSBsaWJyYXJ5IGZv
ciBhdWRpbyBoYW5kbGluZy4KLWNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5lIGZpbmFsIHsKK2NsYXNz
IFdlYlJ0Y1ZvaWNlRW5naW5lIGZpbmFsIDogcHVibGljIFZvaWNlRW5naW5lSW50ZXJmYWNlIHsK
ICAgZnJpZW5kIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOwogCiAgcHVibGljOgpAQCAt
NTAsMTkgKzUwLDIxIEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5lIGZpbmFsIHsKICAgICAgIGNv
bnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVjb2RlckZhY3Rvcnk+JiBkZWNv
ZGVyX2ZhY3RvcnksCiAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb01peGVy
PiBhdWRpb19taXhlciwKICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvUHJv
Y2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZyk7Ci0gIH5XZWJSdGNWb2ljZUVuZ2luZSgpOworICB+
V2ViUnRjVm9pY2VFbmdpbmUoKSBvdmVycmlkZTsKIAogICAvLyBEb2VzIGluaXRpYWxpemF0aW9u
IHRoYXQgbmVlZHMgdG8gb2NjdXIgb24gdGhlIHdvcmtlciB0aHJlYWQuCi0gIHZvaWQgSW5pdCgp
OworICB2b2lkIEluaXQoKSBvdmVycmlkZTsKIAotICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpBdWRpb1N0YXRlPiBHZXRBdWRpb1N0YXRlKCkgY29uc3Q7Ci0gIFZvaWNlTWVkaWFDaGFubmVs
KiBDcmVhdGVDaGFubmVsKHdlYnJ0Yzo6Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKTsKKyAgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4gR2V0QXVkaW9TdGF0ZSgpIGNvbnN0
IG92ZXJyaWRlOworICBWb2ljZU1lZGlhQ2hhbm5lbCogQ3JlYXRlTWVkaWFDaGFubmVsKAorICAg
ICAgd2VicnRjOjpDYWxsKiBjYWxsLAorICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywK
KyAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywKKyAgICAgIGNvbnN0IHdlYnJ0Yzo6
Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIG92ZXJyaWRlOwogCi0gIGNvbnN0IHN0ZDo6
dmVjdG9yPEF1ZGlvQ29kZWM+JiBzZW5kX2NvZGVjcygpIGNvbnN0OwotICBjb25zdCBzdGQ6OnZl
Y3RvcjxBdWRpb0NvZGVjPiYgcmVjdl9jb2RlY3MoKSBjb25zdDsKLSAgUnRwQ2FwYWJpbGl0aWVz
IEdldENhcGFiaWxpdGllcygpIGNvbnN0OworICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVj
PiYgc2VuZF9jb2RlY3MoKSBjb25zdCBvdmVycmlkZTsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVk
aW9Db2RlYz4mIHJlY3ZfY29kZWNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIFJ0cENhcGFiaWxpdGll
cyBHZXRDYXBhYmlsaXRpZXMoKSBjb25zdCBvdmVycmlkZTsKIAogICAvLyBGb3IgdHJhY2tpbmcg
V2ViUnRjIGNoYW5uZWxzLiBOZWVkZWQgYmVjYXVzZSB3ZSBoYXZlIHRvIHBhdXNlIHRoZW0KICAg
Ly8gYWxsIHdoZW4gc3dpdGNoaW5nIGRldmljZXMuCkBAIC03NCwxMCArNzYsMTAgQEAgY2xhc3Mg
V2ViUnRjVm9pY2VFbmdpbmUgZmluYWwgewogICAvLyBzcGVjaWZpZWQuIFdoZW4gdGhlIG1heGlt
dW0gZmlsZSBzaXplIGlzIHJlYWNoZWQsIGxvZ2dpbmcgaXMgc3RvcHBlZCBhbmQKICAgLy8gdGhl
IGZpbGUgaXMgY2xvc2VkLiBJZiBtYXhfc2l6ZV9ieXRlcyBpcyBzZXQgdG8gPD0gMCwgbm8gbGlt
aXQgd2lsbCBiZQogICAvLyB1c2VkLgotICBib29sIFN0YXJ0QWVjRHVtcChydGM6OlBsYXRmb3Jt
RmlsZSBmaWxlLCBpbnQ2NF90IG1heF9zaXplX2J5dGVzKTsKKyAgYm9vbCBTdGFydEFlY0R1bXAo
cnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwgaW50NjRfdCBtYXhfc2l6ZV9ieXRlcykgb3ZlcnJpZGU7
CiAKICAgLy8gU3RvcHMgQUVDIGR1bXAuCi0gIHZvaWQgU3RvcEFlY0R1bXAoKTsKKyAgdm9pZCBT
dG9wQWVjRHVtcCgpIG92ZXJyaWRlOwogCiAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5n
OjpDb25maWcgR2V0QXBtQ29uZmlnRm9yVGVzdCgpIGNvbnN0IHsKICAgICByZXR1cm4gYXBtKCkt
PkdldENvbmZpZygpOwpAQCAtMTMwLDYgKzEzMiw3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5l
IGZpbmFsIHsKICAgLy8gSml0dGVyIGJ1ZmZlciBzZXR0aW5ncyBmb3IgbmV3IHN0cmVhbXMuCiAg
IHNpemVfdCBhdWRpb19qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzXyA9IDUwOwogICBib29sIGF1
ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlXyA9IGZhbHNlOworICBpbnQgYXVkaW9f
aml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXNfID0gMDsKIAogICBSVENfRElTQUxMT1dfSU1QTElD
SVRfQ09OU1RSVUNUT1JTKFdlYlJ0Y1ZvaWNlRW5naW5lKTsKIH07CkBAIC0xNDIsNiArMTQ1LDcg
QEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwgZmluYWwgOiBwdWJsaWMgVm9pY2VNZWRp
YUNoYW5uZWwsCiAgIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKFdlYlJ0Y1ZvaWNlRW5naW5lKiBl
bmdpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25m
aWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9u
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25z
JiBjcnlwdG9fb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpDYWxs
KiBjYWxsKTsKICAgfldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKCkgb3ZlcnJpZGU7CiAKQEAgLTE5
Miw5ICsxOTYsOSBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCBmaW5hbCA6IHB1Ymxp
YyBWb2ljZU1lZGlhQ2hhbm5lbCwKICAgYm9vbCBJbnNlcnREdG1mKHVpbnQzMl90IHNzcmMsIGlu
dCBldmVudCwgaW50IGR1cmF0aW9uKSBvdmVycmlkZTsKIAogICB2b2lkIE9uUGFja2V0UmVjZWl2
ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgb3ZlcnJpZGU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSBvdmVycmlkZTsKICAgdm9p
ZCBPblJ0Y3BSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgb3ZlcnJp
ZGU7CisgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgb3ZlcnJp
ZGU7CiAgIHZvaWQgT25OZXR3b3JrUm91dGVDaGFuZ2VkKGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFu
c3BvcnRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpOZXR3
b3JrUm91dGUmIG5ldHdvcmtfcm91dGUpIG92ZXJyaWRlOwogICB2b2lkIE9uUmVhZHlUb1NlbmQo
Ym9vbCByZWFkeSkgb3ZlcnJpZGU7CkBAIC0yMTgsNiArMjIyLDEwIEBAIGNsYXNzIFdlYlJ0Y1Zv
aWNlTWVkaWFDaGFubmVsIGZpbmFsIDogcHVibGljIFZvaWNlTWVkaWFDaGFubmVsLAogICAgIGlm
IChEc2NwRW5hYmxlZCgpKSB7CiAgICAgICBydGNfb3B0aW9ucy5kc2NwID0gUHJlZmVycmVkRHNj
cCgpOwogICAgIH0KKyAgICBydGNfb3B0aW9ucy5pbmZvX3NpZ25hbGVkX2FmdGVyX3NlbnQuaW5j
bHVkZWRfaW5fZmVlZGJhY2sgPQorICAgICAgICBvcHRpb25zLmluY2x1ZGVkX2luX2ZlZWRiYWNr
OworICAgIHJ0Y19vcHRpb25zLmluZm9fc2lnbmFsZWRfYWZ0ZXJfc2VudC5pbmNsdWRlZF9pbl9h
bGxvY2F0aW9uID0KKyAgICAgICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uOwogICAg
IHJldHVybiBWb2ljZU1lZGlhQ2hhbm5lbDo6U2VuZFBhY2tldCgmcGFja2V0LCBydGNfb3B0aW9u
cyk7CiAgIH0KIApAQCAtMjI3LDYgKzIzNSw3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFu
bmVsIGZpbmFsIDogcHVibGljIFZvaWNlTWVkaWFDaGFubmVsLAogICAgIGlmIChEc2NwRW5hYmxl
ZCgpKSB7CiAgICAgICBydGNfb3B0aW9ucy5kc2NwID0gUHJlZmVycmVkRHNjcCgpOwogICAgIH0K
KwogICAgIHJldHVybiBWb2ljZU1lZGlhQ2hhbm5lbDo6U2VuZFJ0Y3AoJnBhY2tldCwgcnRjX29w
dGlvbnMpOwogICB9CiAKQEAgLTI1OCw2ICsyNjcsNyBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlh
Q2hhbm5lbCBmaW5hbCA6IHB1YmxpYyBWb2ljZU1lZGlhQ2hhbm5lbCwKICAgc3RkOjp2ZWN0b3I8
QXVkaW9Db2RlYz4gcmVjdl9jb2RlY3NfOwogCiAgIGludCBtYXhfc2VuZF9iaXRyYXRlX2Jwc18g
PSAwOworICBydGM6OkRpZmZTZXJ2Q29kZVBvaW50IHByZWZlcnJlZF9kc2NwXyA9IHJ0Yzo6RFND
UF9ERUZBVUxUOwogICBBdWRpb09wdGlvbnMgb3B0aW9uc187CiAgIGFic2w6Om9wdGlvbmFsPGlu
dD4gZHRtZl9wYXlsb2FkX3R5cGVfOwogICBpbnQgZHRtZl9wYXlsb2FkX2ZyZXFfID0gLTE7CkBA
IC0yNjgsNiArMjc4LDggQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwgZmluYWwgOiBw
dWJsaWMgVm9pY2VNZWRpYUNoYW5uZWwsCiAgIGJvb2wgc2VuZF8gPSBmYWxzZTsKICAgd2VicnRj
OjpDYWxsKiBjb25zdCBjYWxsXyA9IG51bGxwdHI7CiAKKyAgY29uc3QgTWVkaWFDb25maWc6OkF1
ZGlvIGF1ZGlvX2NvbmZpZ187CisKICAgLy8gUXVldWUgb2YgdW5zaWduYWxlZCBTU1JDczsgb2xk
ZXN0IGF0IHRoZSBiZWdpbm5pbmcuCiAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiB1bnNpZ25hbGVk
X3JlY3Zfc3NyY3NfOwogCkBAIC0zMDIsNiArMzE0LDkgQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRp
YUNoYW5uZWwgZmluYWwgOiBwdWJsaWMgVm9pY2VNZWRpYUNoYW5uZWwsCiAgIGNvbnN0IHdlYnJ0
Yzo6QXVkaW9Db2RlY1BhaXJJZCBjb2RlY19wYWlyX2lkXyA9CiAgICAgICB3ZWJydGM6OkF1ZGlv
Q29kZWNQYWlySWQ6OkNyZWF0ZSgpOwogCisgIC8vIFBlciBwZWVyIGNvbm5lY3Rpb24gY3J5cHRv
IG9wdGlvbnMgdGhhdCBsYXN0IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHBlZXIKKyAgLy8gY29u
bmVjdGlvbi4KKyAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsK
ICAgLy8gVW5zaWduYWxlZCBzdHJlYW1zIGhhdmUgYW4gb3B0aW9uIHRvIGhhdmUgYSBmcmFtZSBk
ZWNyeXB0b3Igc2V0IG9uIHRoZW0uCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1l
RGVjcnlwdG9ySW50ZXJmYWNlPgogICAgICAgdW5zaWduYWxlZF9mcmFtZV9kZWNyeXB0b3JfOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5lX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5l
X3VuaXR0ZXN0LmNjCmluZGV4IGJiODE2ZWVkMTE4MjdmMmMwY2RjNjI5OTE2NDNlYmRiMDk4MzVm
ODMuLjlmZDVkZmIwYWQ4NWM0Zjc4MzlkYThhMzM0Y2EzZTEzMjkzMDIwNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93
ZWJydGN2b2ljZWVuZ2luZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9pY2VlbmdpbmVfdW5pdHRl
c3QuY2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dXRp
bGl0eT4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS9h
dWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJh
cGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKQEAgLTIxMCw4ICsyMTEsOSBAQCBjbGFzcyBXZWJSdGNW
b2ljZUVuZ2luZVRlc3RGYWtlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogCiAgIGJvb2wgU2V0
dXBDaGFubmVsKCkgewogICAgIEVYUEVDVF9DQUxMKCphcG1fLCBTZXRFeHRyYU9wdGlvbnModGVz
dGluZzo6XykpOwotICAgIGNoYW5uZWxfID0gZW5naW5lXy0+Q3JlYXRlQ2hhbm5lbCgmY2FsbF8s
IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKTsKKyAgICBjaGFubmVsXyA9IGVuZ2luZV8t
PkNyZWF0ZU1lZGlhQ2hhbm5lbCgmY2FsbF8sIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6QXVkaW9PcHRp
b25zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRj
OjpDcnlwdG9PcHRpb25zKCkpOwogICAgIHJldHVybiAoY2hhbm5lbF8gIT0gbnVsbHB0cik7CiAg
IH0KIApAQCAtMjUzLDcgKzI1NSw3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2Ug
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAKICAgdm9pZCBEZWxpdmVyUGFja2V0KGNvbnN0IHZv
aWQqIGRhdGEsIGludCBsZW4pIHsKICAgICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuKTsKLSAgICBjaGFubmVs
Xy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgY2hh
bm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEp
OwogICB9CiAKICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlIHsgZGVsZXRlIGNoYW5uZWxfOyB9
CkBAIC0zNDksNiArMzUxLDMwIEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgRVhQRUNUX0VRKDEyMywgdGVsZXBob25lX2V2ZW50
LmR1cmF0aW9uX21zKTsKICAgfQogCisgIHZvaWQgVGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZXIo
Ym9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICAvLyBGb3IgYSBjYWxsZXIsIHRoZSBhbnN3
ZXIgd2lsbCBiZSBhcHBsaWVkIGluIHNldCByZW1vdGUgZGVzY3JpcHRpb24KKyAgICAvLyB3aGVy
ZSBTZXRTZW5kUGFyYW1ldGVycygpIGlzIGNhbGxlZC4KKyAgICBFWFBFQ1RfVFJVRShTZXR1cENo
YW5uZWwoKSk7CisgICAgRVhQRUNUX1RSVUUoCisgICAgICAgIGNoYW5uZWxfLT5BZGRTZW5kU3Ry
ZWFtKGNyaWNrZXQ6OlN0cmVhbVBhcmFtczo6Q3JlYXRlTGVnYWN5KGtTc3JjWCkpKTsKKyAgICBz
ZW5kX3BhcmFtZXRlcnNfLmV4dG1hcF9hbGxvd19taXhlZCA9IGV4dG1hcF9hbGxvd19taXhlZDsK
KyAgICBTZXRTZW5kUGFyYW1ldGVycyhzZW5kX3BhcmFtZXRlcnNfKTsKKyAgICBjb25zdCB3ZWJy
dGM6OkF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcgPSBHZXRTZW5kU3RyZWFtQ29uZmln
KGtTc3JjWCk7CisgICAgRVhQRUNUX0VRKGV4dG1hcF9hbGxvd19taXhlZCwgY29uZmlnLnJ0cC5l
eHRtYXBfYWxsb3dfbWl4ZWQpOworICB9CisKKyAgdm9pZCBUZXN0RXh0bWFwQWxsb3dNaXhlZENh
bGxlZShib29sIGV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIC8vIEZvciBhIGNhbGxlZSwgdGhl
IGFuc3dlciB3aWxsIGJlIGFwcGxpZWQgaW4gc2V0IGxvY2FsIGRlc2NyaXB0aW9uCisgICAgLy8g
d2hlcmUgU2V0RXh0bWFwQWxsb3dNaXhlZCgpIGFuZCBBZGRTZW5kU3RyZWFtKCkgYXJlIGNhbGxl
ZC4KKyAgICBFWFBFQ1RfVFJVRShTZXR1cENoYW5uZWwoKSk7CisgICAgY2hhbm5lbF8tPlNldEV4
dG1hcEFsbG93TWl4ZWQoZXh0bWFwX2FsbG93X21peGVkKTsKKyAgICBFWFBFQ1RfVFJVRSgKKyAg
ICAgICAgY2hhbm5lbF8tPkFkZFNlbmRTdHJlYW0oY3JpY2tldDo6U3RyZWFtUGFyYW1zOjpDcmVh
dGVMZWdhY3koa1NzcmNYKSkpOworCisgICAgY29uc3Qgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW06
OkNvbmZpZyYgY29uZmlnID0gR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3NyY1gpOworICAgIEVYUEVD
VF9FUShleHRtYXBfYWxsb3dfbWl4ZWQsIGNvbmZpZy5ydHAuZXh0bWFwX2FsbG93X21peGVkKTsK
KyAgfQorCiAgIC8vIFRlc3QgdGhhdCBzZW5kIGJhbmR3aWR0aCBpcyBzZXQgY29ycmVjdGx5Lgog
ICAvLyB8Y29kZWN8IGlzIHRoZSBjb2RlYyB1bmRlciB0ZXN0LgogICAvLyB8bWF4X2JpdHJhdGV8
IGlzIGEgcGFyYW1ldGVyIHRvIHNldCB0byBTZXRNYXhTZW5kQmFuZHdpZHRoKCkuCkBAIC03MzUs
NyArNzYxLDcgQEAgY2xhc3MgV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKIH07CiAKIC8vIFRlc3RzIHRoYXQgd2UgY2FuIGNyZWF0ZSBhbmQgZGVzdHJv
eSBhIGNoYW5uZWwuCi1URVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgQ3JlYXRlQ2hh
bm5lbCkgeworVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIENyZWF0ZU1lZGlhQ2hh
bm5lbCkgewogICBFWFBFQ1RfVFJVRShTZXR1cENoYW5uZWwoKSk7CiB9CiAKQEAgLTExMzcsNiAr
MTE2MywyOCBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgUnRwUGFyYW1ldGVy
c0FyZVBlclN0cmVhbSkgewogICBFWFBFQ1RfRVEoMzIwMDAsIEdldENvZGVjQml0cmF0ZShrU3Ny
Y3M0WzJdKSk7CiB9CiAKKy8vIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5uZXR3b3JrX3ByaW9y
aXR5IG11c3QgYmUgb25lIG9mIGEgZmV3IHZhbHVlcworLy8gZGVyaXZlZCBmcm9tIHRoZSBkZWZh
dWx0IHByaW9yaXR5LCBjb3JyZXNwb25kaW5nIHRvIHZlcnktbG93LCBsb3csIG1lZGl1bSwKKy8v
IG9yIGhpZ2guCitURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0UnRwU2VuZFBh
cmFtZXRlcnNJbnZhbGlkTmV0d29ya1ByaW9yaXR5KSB7CisgIEVYUEVDVF9UUlVFKFNldHVwU2Vu
ZFN0cmVhbSgpKTsKKyAgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBjaGFubmVs
Xy0+R2V0UnRwU2VuZFBhcmFtZXRlcnMoa1NzcmNYKTsKKyAgRVhQRUNUX0VRKDFVTCwgcGFyYW1l
dGVycy5lbmNvZGluZ3Muc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKHdlYnJ0Yzo6a0RlZmF1bHRCaXRy
YXRlUHJpb3JpdHksCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3b3Jr
X3ByaW9yaXR5KTsKKworICBkb3VibGUgZ29vZF92YWx1ZXNbXSA9IHswLjUsIDEuMCwgMi4wLCA0
LjB9OworICBkb3VibGUgYmFkX3ZhbHVlc1tdID0gey0xLjAsIDAuMCwgMC40OSwgMC41MSwgMS4x
LCAzLjk5LCA0LjEsIDUuMH07CisgIGZvciAoYXV0byBpdCA6IGdvb2RfdmFsdWVzKSB7CisgICAg
cGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubmV0d29ya19wcmlvcml0eSA9IGl0OworICAgIEVYUEVD
VF9UUlVFKGNoYW5uZWxfLT5TZXRSdHBTZW5kUGFyYW1ldGVycyhrU3NyY1gsIHBhcmFtZXRlcnMp
Lm9rKCkpOworICB9CisgIGZvciAoYXV0byBpdCA6IGJhZF92YWx1ZXMpIHsKKyAgICBwYXJhbWV0
ZXJzLmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5ID0gaXQ7CisgICAgRVhQRUNUX0ZBTFNF
KGNoYW5uZWxfLT5TZXRSdHBTZW5kUGFyYW1ldGVycyhrU3NyY1gsIHBhcmFtZXRlcnMpLm9rKCkp
OworICB9Cit9CisKIC8vIFRlc3QgdGhhdCBHZXRSdHBTZW5kUGFyYW1ldGVycyByZXR1cm5zIHRo
ZSBjdXJyZW50bHkgY29uZmlndXJlZCBjb2RlY3MuCiBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVU
ZXN0RmFrZSwgR2V0UnRwU2VuZFBhcmFtZXRlcnNDb2RlY3MpIHsKICAgRVhQRUNUX1RSVUUoU2V0
dXBTZW5kU3RyZWFtKCkpOwpAQCAtMTU4NywxOCArMTYzNSw2IEBAIFRFU1RfRihXZWJSdGNWb2lj
ZUVuZ2luZVRlc3RGYWtlLCBTZXRNYXhTZW5kQmFuZHdpZHRoRm9yQXVkaW9Eb2VzbnRBZmZlY3RC
d2UpIHsKICAgU2V0U2VuZFBhcmFtZXRlcnMoc2VuZF9wYXJhbWV0ZXJzXyk7CiB9CiAKLS8vIFRl
c3QgdGhhdCB3ZSBjYW4gZW5hYmxlIE5BQ0sgd2l0aCBvcHVzIGFzIGNhbGxlci4KLVRFU1RfRihX
ZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBTZXRTZW5kQ29kZWNFbmFibGVOYWNrQXNDYWxsZXIp
IHsKLSAgRVhQRUNUX1RSVUUoU2V0dXBTZW5kU3RyZWFtKCkpOwotICBjcmlja2V0OjpBdWRpb1Nl
bmRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhr
T3B1c0NvZGVjKTsKLSAgcGFyYW1ldGVycy5jb2RlY3NbMF0uQWRkRmVlZGJhY2tQYXJhbShjcmlj
a2V0OjpGZWVkYmFja1BhcmFtKAotICAgICAgY3JpY2tldDo6a1J0Y3BGYlBhcmFtTmFjaywgY3Jp
Y2tldDo6a1BhcmFtVmFsdWVFbXB0eSkpOwotICBFWFBFQ1RfRVEoMCwgR2V0U2VuZFN0cmVhbUNv
bmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKLSAgU2V0U2VuZFBhcmFtZXRl
cnMocGFyYW1ldGVycyk7Ci0gIEVYUEVDVF9FUShrUnRwSGlzdG9yeU1zLCBHZXRTZW5kU3RyZWFt
Q29uZmlnKGtTc3JjWCkucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMpOwotfQotCiAvLyBUZXN0IHRo
YXQgd2UgY2FuIGVuYWJsZSBOQUNLIHdpdGggb3B1cyBhcyBjYWxsZWUuCiBURVNUX0YoV2ViUnRj
Vm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0U2VuZENvZGVjRW5hYmxlTmFja0FzQ2FsbGVlKSB7CiAg
IEVYUEVDVF9UUlVFKFNldHVwUmVjdlN0cmVhbSgpKTsKQEAgLTE2MTMsNyArMTY0OSw2IEBAIFRF
U1RfRihXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBTZXRTZW5kQ29kZWNFbmFibGVOYWNrQXND
YWxsZWUpIHsKIAogICBFWFBFQ1RfVFJVRSgKICAgICAgIGNoYW5uZWxfLT5BZGRTZW5kU3RyZWFt
KGNyaWNrZXQ6OlN0cmVhbVBhcmFtczo6Q3JlYXRlTGVnYWN5KGtTc3JjWCkpKTsKLSAgRVhQRUNU
X0VRKGtSdHBIaXN0b3J5TXMsIEdldFNlbmRTdHJlYW1Db25maWcoa1NzcmNYKS5ydHAubmFjay5y
dHBfaGlzdG9yeV9tcyk7CiB9CiAKIC8vIFRlc3QgdGhhdCB3ZSBjYW4gZW5hYmxlIE5BQ0sgb24g
cmVjZWl2ZSBzdHJlYW1zLgpAQCAtMTYyNCwyOSArMTY1OSwxMSBAQCBURVNUX0YoV2ViUnRjVm9p
Y2VFbmdpbmVUZXN0RmFrZSwgU2V0U2VuZENvZGVjRW5hYmxlTmFja1JlY3ZTdHJlYW1zKSB7CiAg
IHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhrT3B1c0NvZGVjKTsKICAgcGFyYW1ldGVycy5j
b2RlY3NbMF0uQWRkRmVlZGJhY2tQYXJhbShjcmlja2V0OjpGZWVkYmFja1BhcmFtKAogICAgICAg
Y3JpY2tldDo6a1J0Y3BGYlBhcmFtTmFjaywgY3JpY2tldDo6a1BhcmFtVmFsdWVFbXB0eSkpOwot
ICBFWFBFQ1RfRVEoMCwgR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9o
aXN0b3J5X21zKTsKICAgRVhQRUNUX0VRKDAsIEdldFJlY3ZTdHJlYW1Db25maWcoa1NzcmNZKS5y
dHAubmFjay5ydHBfaGlzdG9yeV9tcyk7CiAgIFNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMp
OwotICBFWFBFQ1RfRVEoa1J0cEhpc3RvcnlNcywgR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3NyY1gp
LnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKICAgRVhQRUNUX0VRKGtSdHBIaXN0b3J5TXMsIEdl
dFJlY3ZTdHJlYW1Db25maWcoa1NzcmNZKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7CiB9CiAK
LS8vIFRlc3QgdGhhdCB3ZSBjYW4gZGlzYWJsZSBOQUNLLgotVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5n
aW5lVGVzdEZha2UsIFNldFNlbmRDb2RlY0Rpc2FibGVOYWNrKSB7Ci0gIEVYUEVDVF9UUlVFKFNl
dHVwU2VuZFN0cmVhbSgpKTsKLSAgY3JpY2tldDo6QXVkaW9TZW5kUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soa09wdXNDb2RlYyk7Ci0gIHBhcmFt
ZXRlcnMuY29kZWNzWzBdLkFkZEZlZWRiYWNrUGFyYW0oY3JpY2tldDo6RmVlZGJhY2tQYXJhbSgK
LSAgICAgIGNyaWNrZXQ6OmtSdGNwRmJQYXJhbU5hY2ssIGNyaWNrZXQ6OmtQYXJhbVZhbHVlRW1w
dHkpKTsKLSAgU2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycyk7Ci0gIEVYUEVDVF9FUShrUnRw
SGlzdG9yeU1zLCBHZXRTZW5kU3RyZWFtQ29uZmlnKGtTc3JjWCkucnRwLm5hY2sucnRwX2hpc3Rv
cnlfbXMpOwotCi0gIHBhcmFtZXRlcnMuY29kZWNzLmNsZWFyKCk7Ci0gIHBhcmFtZXRlcnMuY29k
ZWNzLnB1c2hfYmFjayhrT3B1c0NvZGVjKTsKLSAgU2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVy
cyk7Ci0gIEVYUEVDVF9FUSgwLCBHZXRTZW5kU3RyZWFtQ29uZmlnKGtTc3JjWCkucnRwLm5hY2su
cnRwX2hpc3RvcnlfbXMpOwotfQotCiAvLyBUZXN0IHRoYXQgd2UgY2FuIGRpc2FibGUgTkFDSyBv
biByZWNlaXZlIHN0cmVhbXMuCiBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0
U2VuZENvZGVjRGlzYWJsZU5hY2tSZWN2U3RyZWFtcykgewogICBFWFBFQ1RfVFJVRShTZXR1cFNl
bmRTdHJlYW0oKSk7CkBAIC0xNjU2LDEzICsxNjczLDExIEBAIFRFU1RfRihXZWJSdGNWb2ljZUVu
Z2luZVRlc3RGYWtlLCBTZXRTZW5kQ29kZWNEaXNhYmxlTmFja1JlY3ZTdHJlYW1zKSB7CiAgIHBh
cmFtZXRlcnMuY29kZWNzWzBdLkFkZEZlZWRiYWNrUGFyYW0oY3JpY2tldDo6RmVlZGJhY2tQYXJh
bSgKICAgICAgIGNyaWNrZXQ6OmtSdGNwRmJQYXJhbU5hY2ssIGNyaWNrZXQ6OmtQYXJhbVZhbHVl
RW1wdHkpKTsKICAgU2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycyk7Ci0gIEVYUEVDVF9FUShr
UnRwSGlzdG9yeU1zLCBHZXRTZW5kU3RyZWFtQ29uZmlnKGtTc3JjWCkucnRwLm5hY2sucnRwX2hp
c3RvcnlfbXMpOwogICBFWFBFQ1RfRVEoa1J0cEhpc3RvcnlNcywgR2V0UmVjdlN0cmVhbUNvbmZp
ZyhrU3NyY1kpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKIAogICBwYXJhbWV0ZXJzLmNvZGVj
cy5jbGVhcigpOwogICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soa09wdXNDb2RlYyk7CiAg
IFNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotICBFWFBFQ1RfRVEoMCwgR2V0U2VuZFN0
cmVhbUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKICAgRVhQRUNUX0VR
KDAsIEdldFJlY3ZTdHJlYW1Db25maWcoa1NzcmNZKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7
CiB9CiAKQEAgLTE2NzUsNyArMTY5MCw2IEBAIFRFU1RfRihXZWJSdGNWb2ljZUVuZ2luZVRlc3RG
YWtlLCBBZGRSZWN2U3RyZWFtRW5hYmxlTmFjaykgewogICBwYXJhbWV0ZXJzLmNvZGVjc1swXS5B
ZGRGZWVkYmFja1BhcmFtKGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0oCiAgICAgICBjcmlja2V0Ojpr
UnRjcEZiUGFyYW1OYWNrLCBjcmlja2V0OjprUGFyYW1WYWx1ZUVtcHR5KSk7CiAgIFNldFNlbmRQ
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotICBFWFBFQ1RfRVEoa1J0cEhpc3RvcnlNcywgR2V0U2Vu
ZFN0cmVhbUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKIAogICBFWFBF
Q1RfVFJVRShBZGRSZWN2U3RyZWFtKGtTc3JjWSkpOwogICBFWFBFQ1RfRVEoa1J0cEhpc3RvcnlN
cywgR2V0UmVjdlN0cmVhbUNvbmZpZyhrU3NyY1kpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsK
QEAgLTI3OTksNiArMjgxMywyMCBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwg
SW5zZXJ0RHRtZk9uU2VuZFN0cmVhbUFzQ2FsbGVlKSB7CiAgIFRlc3RJbnNlcnREdG1mKGtTc3Jj
WCwgZmFsc2UsIGtUZWxlcGhvbmVFdmVudENvZGVjMSk7CiB9CiAKKy8vIFRlc3QgcHJvcGFnYXRp
b24gb2YgZXh0bWFwIGFsbG93IG1peGVkIHNldHRpbmcuCitURVNUX0YoV2ViUnRjVm9pY2VFbmdp
bmVUZXN0RmFrZSwgU2V0RXh0bWFwQWxsb3dNaXhlZEFzQ2FsbGVyKSB7CisgIFRlc3RFeHRtYXBB
bGxvd01peGVkQ2FsbGVyKC8qZXh0bWFwX2FsbG93X21peGVkPSovdHJ1ZSk7Cit9CitURVNUX0Yo
V2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0RXh0bWFwQWxsb3dNaXhlZERpc2FibGVkQXND
YWxsZXIpIHsKKyAgVGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZXIoLypleHRtYXBfYWxsb3dfbWl4
ZWQ9Ki9mYWxzZSk7Cit9CitURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0RXh0
bWFwQWxsb3dNaXhlZEFzQ2FsbGVlKSB7CisgIFRlc3RFeHRtYXBBbGxvd01peGVkQ2FsbGVlKC8q
ZXh0bWFwX2FsbG93X21peGVkPSovdHJ1ZSk7Cit9CitURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVU
ZXN0RmFrZSwgU2V0RXh0bWFwQWxsb3dNaXhlZERpc2FibGVkQXNDYWxsZWUpIHsKKyAgVGVzdEV4
dG1hcEFsbG93TWl4ZWRDYWxsZWUoLypleHRtYXBfYWxsb3dfbWl4ZWQ9Ki9mYWxzZSk7Cit9CisK
IFRFU1RfRihXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBTZXRBdWRpb09wdGlvbnMpIHsKICAg
RVhQRUNUX1RSVUUoU2V0dXBTZW5kU3RyZWFtKCkpOwogICBFWFBFQ1RfVFJVRShBZGRSZWN2U3Ry
ZWFtKGtTc3JjWSkpOwpAQCAtMjkxNCwxMSArMjk0MiwxNSBAQCBURVNUX0YoV2ViUnRjVm9pY2VF
bmdpbmVUZXN0RmFrZSwgU2V0T3B0aW9uT3ZlcnJpZGVzVmlhQ2hhbm5lbHMpIHsKICAgRVhQRUNU
X0NBTEwoKmFwbV8sIFNldEV4dHJhT3B0aW9ucyh0ZXN0aW5nOjpfKSkuVGltZXMoMTApOwogCiAg
IHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbD4gY2hhbm5l
bDEoCi0gICAgICBzdGF0aWNfY2FzdDxjcmlja2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCo+
KGVuZ2luZV8tPkNyZWF0ZUNoYW5uZWwoCi0gICAgICAgICAgJmNhbGxfLCBjcmlja2V0OjpNZWRp
YUNvbmZpZygpLCBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSkpKTsKKyAgICAgIHN0YXRpY19jYXN0
PGNyaWNrZXQ6OldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKj4oCisgICAgICAgICAgZW5naW5lXy0+
Q3JlYXRlTWVkaWFDaGFubmVsKCZjYWxsXywgY3JpY2tldDo6TWVkaWFDb25maWcoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6QXVkaW9PcHRpb25zKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0
aW9ucygpKSkpOwogICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6V2ViUnRjVm9pY2VNZWRpYUNo
YW5uZWw+IGNoYW5uZWwyKAotICAgICAgc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRjVm9pY2VN
ZWRpYUNoYW5uZWwqPihlbmdpbmVfLT5DcmVhdGVDaGFubmVsKAotICAgICAgICAgICZjYWxsXywg
Y3JpY2tldDo6TWVkaWFDb25maWcoKSwgY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpKSk7CisgICAg
ICBzdGF0aWNfY2FzdDxjcmlja2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCo+KAorICAgICAg
ICAgIGVuZ2luZV8tPkNyZWF0ZU1lZGlhQ2hhbm5lbCgmY2FsbF8sIGNyaWNrZXQ6Ok1lZGlhQ29u
ZmlnKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkF1
ZGlvT3B0aW9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMoKSkpKTsKIAogICAvLyBIYXZlIHRvIGFkZCBhIHN0cmVhbSB0byBt
YWtlIFNldFNlbmQgd29yay4KICAgY3JpY2tldDo6U3RyZWFtUGFyYW1zIHN0cmVhbTE7CkBAIC0z
MDE3LDYgKzMwNDksNyBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgVGVzdFNl
dERzY3BPcHRpb25zKSB7CiAgIGNyaWNrZXQ6OkZha2VOZXR3b3JrSW50ZXJmYWNlIG5ldHdvcmtf
aW50ZXJmYWNlOwogICBjcmlja2V0OjpNZWRpYUNvbmZpZyBjb25maWc7CiAgIHN0ZDo6dW5pcXVl
X3B0cjxjcmlja2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbD4gY2hhbm5lbDsKKyAgd2VicnRj
OjpSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKICAgd2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc6
OkNvbmZpZyBhcG1fY29uZmlnOwogICBFWFBFQ1RfQ0FMTCgqYXBtXywgR2V0Q29uZmlnKCkpCkBA
IC0zMDI2LDMyICszMDU5LDU0IEBAIFRFU1RfRihXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBU
ZXN0U2V0RHNjcE9wdGlvbnMpIHsKICAgRVhQRUNUX0NBTEwoKmFwbV8sIFNldEV4dHJhT3B0aW9u
cyh0ZXN0aW5nOjpfKSkuVGltZXMoMyk7CiAKICAgY2hhbm5lbC5yZXNldChzdGF0aWNfY2FzdDxj
cmlja2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCo+KAotICAgICAgZW5naW5lXy0+Q3JlYXRl
Q2hhbm5lbCgmY2FsbF8sIGNvbmZpZywgY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpKSk7Ci0gIGNo
YW5uZWwtPlNldEludGVyZmFjZSgmbmV0d29ya19pbnRlcmZhY2UpOworICAgICAgZW5naW5lXy0+
Q3JlYXRlTWVkaWFDaGFubmVsKCZjYWxsXywgY29uZmlnLCBjcmlja2V0OjpBdWRpb09wdGlvbnMo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlv
bnMoKSkpKTsKKyAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKCZuZXR3b3JrX2ludGVyZmFjZSwgLypt
ZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgLy8gRGVmYXVsdCB2YWx1ZSB3aGVuIERTQ1Ag
aXMgZGlzYWJsZWQgc2hvdWxkIGJlIERTQ1BfREVGQVVMVC4KICAgRVhQRUNUX0VRKHJ0Yzo6RFND
UF9ERUZBVUxULCBuZXR3b3JrX2ludGVyZmFjZS5kc2NwKCkpOwogCiAgIGNvbmZpZy5lbmFibGVf
ZHNjcCA9IHRydWU7CiAgIGNoYW5uZWwucmVzZXQoc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRj
Vm9pY2VNZWRpYUNoYW5uZWwqPigKLSAgICAgIGVuZ2luZV8tPkNyZWF0ZUNoYW5uZWwoJmNhbGxf
LCBjb25maWcsIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKSkpOwotICBjaGFubmVsLT5TZXRJbnRl
cmZhY2UoJm5ldHdvcmtfaW50ZXJmYWNlKTsKKyAgICAgIGVuZ2luZV8tPkNyZWF0ZU1lZGlhQ2hh
bm5lbCgmY2FsbF8sIGNvbmZpZywgY3JpY2tldDo6QXVkaW9PcHRpb25zKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKSk7CisgIGNo
YW5uZWwtPlNldEludGVyZmFjZSgmbmV0d29ya19pbnRlcmZhY2UsIC8qbWVkaWFfdHJhbnNwb3J0
PSovbnVsbHB0cik7CisgIEVYUEVDVF9FUShydGM6OkRTQ1BfREVGQVVMVCwgbmV0d29ya19pbnRl
cmZhY2UuZHNjcCgpKTsKKworICAvLyBDcmVhdGUgYSBzZW5kIHN0cmVhbSB0byBjb25maWd1cmUK
KyAgRVhQRUNUX1RSVUUoCisgICAgICBjaGFubmVsLT5BZGRTZW5kU3RyZWFtKGNyaWNrZXQ6OlN0
cmVhbVBhcmFtczo6Q3JlYXRlTGVnYWN5KGtTc3JjWikpKTsKKyAgcGFyYW1ldGVycyA9IGNoYW5u
ZWwtPkdldFJ0cFNlbmRQYXJhbWV0ZXJzKGtTc3JjWik7CisgIEFTU0VSVF9GQUxTRShwYXJhbWV0
ZXJzLmVuY29kaW5ncy5lbXB0eSgpKTsKKworICAvLyBWYXJpb3VzIHByaW9yaXRpZXMgbWFwIHRv
IHZhcmlvdXMgZHNjcCB2YWx1ZXMuCisgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdvcmtf
cHJpb3JpdHkgPSA0LjA7CisgIEFTU0VSVF9UUlVFKGNoYW5uZWwtPlNldFJ0cFNlbmRQYXJhbWV0
ZXJzKGtTc3JjWiwgcGFyYW1ldGVycykub2soKSk7CiAgIEVYUEVDVF9FUShydGM6OkRTQ1BfRUYs
IG5ldHdvcmtfaW50ZXJmYWNlLmRzY3AoKSk7CisgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5l
dHdvcmtfcHJpb3JpdHkgPSAwLjU7CisgIEFTU0VSVF9UUlVFKGNoYW5uZWwtPlNldFJ0cFNlbmRQ
YXJhbWV0ZXJzKGtTc3JjWiwgcGFyYW1ldGVycykub2soKSk7CisgIEVYUEVDVF9FUShydGM6OkRT
Q1BfQ1MxLCBuZXR3b3JrX2ludGVyZmFjZS5kc2NwKCkpOworCisgIC8vIEEgYmFkIHByaW9yaXR5
IGRvZXMgbm90IGNoYW5nZSB0aGUgZHNjcCB2YWx1ZS4KKyAgcGFyYW1ldGVycy5lbmNvZGluZ3Nb
MF0ubmV0d29ya19wcmlvcml0eSA9IDAuMDsKKyAgQVNTRVJUX0ZBTFNFKGNoYW5uZWwtPlNldFJ0
cFNlbmRQYXJhbWV0ZXJzKGtTc3JjWiwgcGFyYW1ldGVycykub2soKSk7CisgIEVYUEVDVF9FUShy
dGM6OkRTQ1BfQ1MxLCBuZXR3b3JrX2ludGVyZmFjZS5kc2NwKCkpOwogCiAgIC8vIFBhY2tldHMg
c2hvdWxkIGFsc28gc2VsZi1pZGVudGlmeSB0aGVpciBkc2NwIGluIFBhY2tldE9wdGlvbnMuCiAg
IGNvbnN0IHVpbnQ4X3Qga0RhdGFbMTBdID0gezB9OwogICBFWFBFQ1RfVFJVRShjaGFubmVsLT5T
ZW5kUnRjcChrRGF0YSwgc2l6ZW9mKGtEYXRhKSkpOwotICBFWFBFQ1RfRVEocnRjOjpEU0NQX0VG
LCBuZXR3b3JrX2ludGVyZmFjZS5vcHRpb25zKCkuZHNjcCk7CisgIEVYUEVDVF9FUShydGM6OkRT
Q1BfQ1MxLCBuZXR3b3JrX2ludGVyZmFjZS5vcHRpb25zKCkuZHNjcCk7CiAKICAgLy8gVmVyaWZ5
IHRoYXQgc2V0dGluZyB0aGUgb3B0aW9uIHRvIGZhbHNlIHJlc2V0cyB0aGUKICAgLy8gRGlmZlNl
cnZDb2RlUG9pbnQuCiAgIGNvbmZpZy5lbmFibGVfZHNjcCA9IGZhbHNlOwogICBjaGFubmVsLnJl
c2V0KHN0YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKj4oCi0gICAg
ICBlbmdpbmVfLT5DcmVhdGVDaGFubmVsKCZjYWxsXywgY29uZmlnLCBjcmlja2V0OjpBdWRpb09w
dGlvbnMoKSkpKTsKLSAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKCZuZXR3b3JrX2ludGVyZmFjZSk7
CisgICAgICBlbmdpbmVfLT5DcmVhdGVNZWRpYUNoYW5uZWwoJmNhbGxfLCBjb25maWcsIGNyaWNr
ZXQ6OkF1ZGlvT3B0aW9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdl
YnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSkpOworICBjaGFubmVsLT5TZXRJbnRlcmZhY2UoJm5ldHdv
cmtfaW50ZXJmYWNlLCAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogICAvLyBEZWZhdWx0
IHZhbHVlIHdoZW4gRFNDUCBpcyBkaXNhYmxlZCBzaG91bGQgYmUgRFNDUF9ERUZBVUxULgogICBF
WFBFQ1RfRVEocnRjOjpEU0NQX0RFRkFVTFQsIG5ldHdvcmtfaW50ZXJmYWNlLmRzY3AoKSk7CiAK
LSAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKG51bGxwdHIpOworICBjaGFubmVsLT5TZXRJbnRlcmZh
Y2UobnVsbHB0ciwgbnVsbHB0cik7CiB9CiAKIFRFU1RfRihXZWJSdGNWb2ljZUVuZ2luZVRlc3RG
YWtlLCBTZXRPdXRwdXRWb2x1bWUpIHsKQEAgLTMxOTQsOSArMzI0OSw5IEBAIFRFU1RfRihXZWJS
dGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBEZWxpdmVyQXVkaW9QYWNrZXRfQ2FsbCkgewogICBjb25z
dCBjcmlja2V0OjpGYWtlQXVkaW9SZWNlaXZlU3RyZWFtKiBzID0KICAgICAgIGNhbGxfLkdldEF1
ZGlvUmVjZWl2ZVN0cmVhbShrQXVkaW9Tc3JjKTsKICAgRVhQRUNUX0VRKDAsIHMtPnJlY2VpdmVk
X3BhY2tldHMoKSk7Ci0gIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZrUGNtdVBhY2tldCwg
cnRjOjpQYWNrZXRUaW1lKCkpOworICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgma1BjbXVQ
YWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgRVhQRUNUX0VRKDEsIHMtPnJlY2Vp
dmVkX3BhY2tldHMoKSk7Ci0gIGNoYW5uZWxfLT5PblJ0Y3BSZWNlaXZlZCgma1J0Y3BQYWNrZXQs
IHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgY2hhbm5lbF8tPk9uUnRjcFJlY2VpdmVkKCZrUnRjcFBh
Y2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfRVEoMiwgcy0+cmVjZWl2
ZWRfcGFja2V0cygpKTsKIH0KIApAQCAtMzM3NCw4ICszNDI5LDkgQEAgVEVTVChXZWJSdGNWb2lj
ZUVuZ2luZVRlc3QsIFN0YXJ0dXBTaHV0ZG93bikgewogICB3ZWJydGM6OlJ0Y0V2ZW50TG9nTnVs
bEltcGwgZXZlbnRfbG9nOwogICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpDYWxsPiBjYWxsKAog
ICAgICAgd2VicnRjOjpDYWxsOjpDcmVhdGUod2VicnRjOjpDYWxsOjpDb25maWcoJmV2ZW50X2xv
ZykpKTsKLSAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5uZWwgPSBlbmdpbmUuQ3Jl
YXRlQ2hhbm5lbCgKLSAgICAgIGNhbGwuZ2V0KCksIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIGNy
aWNrZXQ6OkF1ZGlvT3B0aW9ucygpKTsKKyAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIGNo
YW5uZWwgPSBlbmdpbmUuQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbC5nZXQoKSwgY3Jp
Y2tldDo6TWVkaWFDb25maWcoKSwgY3JpY2tldDo6QXVkaW9PcHRpb25zKCksCisgICAgICB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMoKSk7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWwgIT0gbnVsbHB0cik7
CiAgIGRlbGV0ZSBjaGFubmVsOwogfQpAQCAtMzM5Nyw4ICszNDUzLDkgQEAgVEVTVChXZWJSdGNW
b2ljZUVuZ2luZVRlc3QsIFN0YXJ0dXBTaHV0ZG93bldpdGhFeHRlcm5hbEFETSkgewogICAgIHdl
YnJ0Yzo6UnRjRXZlbnRMb2dOdWxsSW1wbCBldmVudF9sb2c7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6Q2FsbD4gY2FsbCgKICAgICAgICAgd2VicnRjOjpDYWxsOjpDcmVhdGUod2VicnRj
OjpDYWxsOjpDb25maWcoJmV2ZW50X2xvZykpKTsKLSAgICBjcmlja2V0OjpWb2ljZU1lZGlhQ2hh
bm5lbCogY2hhbm5lbCA9IGVuZ2luZS5DcmVhdGVDaGFubmVsKAotICAgICAgICBjYWxsLmdldCgp
LCBjcmlja2V0OjpNZWRpYUNvbmZpZygpLCBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSk7CisgICAg
Y3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5uZWwgPSBlbmdpbmUuQ3JlYXRlTWVkaWFD
aGFubmVsKAorICAgICAgICBjYWxsLmdldCgpLCBjcmlja2V0OjpNZWRpYUNvbmZpZygpLCBjcmlj
a2V0OjpBdWRpb09wdGlvbnMoKSwKKyAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpOwog
ICAgIEVYUEVDVF9UUlVFKGNoYW5uZWwgIT0gbnVsbHB0cik7CiAgICAgZGVsZXRlIGNoYW5uZWw7
CiAgIH0KQEAgLTM0MTcsNyArMzQ3NCw3IEBAIFRFU1QoV2ViUnRjVm9pY2VFbmdpbmVUZXN0LCBI
YXNDb3JyZWN0UGF5bG9hZFR5cGVNYXBwaW5nKSB7CiAgIGVuZ2luZS5Jbml0KCk7CiAgIGZvciAo
Y29uc3QgY3JpY2tldDo6QXVkaW9Db2RlYyYgY29kZWMgOiBlbmdpbmUuc2VuZF9jb2RlY3MoKSkg
ewogICAgIGF1dG8gaXNfY29kZWMgPSBbJmNvZGVjXShjb25zdCBjaGFyKiBuYW1lLCBpbnQgY2xv
Y2tyYXRlID0gMCkgewotICAgICAgcmV0dXJuIFNUUl9DQVNFX0NNUChjb2RlYy5uYW1lLmNfc3Ry
KCksIG5hbWUpID09IDAgJiYKKyAgICAgIHJldHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNv
ZGVjLm5hbWUsIG5hbWUpICYmCiAgICAgICAgICAgICAgKGNsb2NrcmF0ZSA9PSAwIHx8IGNvZGVj
LmNsb2NrcmF0ZSA9PSBjbG9ja3JhdGUpOwogICAgIH07CiAgICAgaWYgKGlzX2NvZGVjKCJDTiIs
IDE2MDAwKSkgewpAQCAtMzQ2Nyw4ICszNTI0LDkgQEAgVEVTVChXZWJSdGNWb2ljZUVuZ2luZVRl
c3QsIEhhczMyQ2hhbm5lbHMpIHsKICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5u
ZWxzWzMyXTsKICAgc2l6ZV90IG51bV9jaGFubmVscyA9IDA7CiAgIHdoaWxlIChudW1fY2hhbm5l
bHMgPCBhcnJheXNpemUoY2hhbm5lbHMpKSB7Ci0gICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5u
ZWwqIGNoYW5uZWwgPSBlbmdpbmUuQ3JlYXRlQ2hhbm5lbCgKLSAgICAgICAgY2FsbC5nZXQoKSwg
Y3JpY2tldDo6TWVkaWFDb25maWcoKSwgY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpOworICAgIGNy
aWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiBjaGFubmVsID0gZW5naW5lLkNyZWF0ZU1lZGlhQ2hh
bm5lbCgKKyAgICAgICAgY2FsbC5nZXQoKSwgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgY3JpY2tl
dDo6QXVkaW9PcHRpb25zKCksCisgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKICAg
ICBpZiAoIWNoYW5uZWwpCiAgICAgICBicmVhazsKICAgICBjaGFubmVsc1tudW1fY2hhbm5lbHMr
K10gPSBjaGFubmVsOwpAQCAtMzUwMiw3ICszNTYwLDggQEAgVEVTVChXZWJSdGNWb2ljZUVuZ2lu
ZVRlc3QsIFNldFJlY3ZDb2RlY3MpIHsKICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6Q2FsbD4g
Y2FsbCgKICAgICAgIHdlYnJ0Yzo6Q2FsbDo6Q3JlYXRlKHdlYnJ0Yzo6Q2FsbDo6Q29uZmlnKCZl
dmVudF9sb2cpKSk7CiAgIGNyaWNrZXQ6OldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsIGNoYW5uZWwo
JmVuZ2luZSwgY3JpY2tldDo6TWVkaWFDb25maWcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSwgY2FsbC5nZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6QXVk
aW9PcHRpb25zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2VicnRjOjpDcnlwdG9PcHRpb25zKCksIGNhbGwuZ2V0KCkpOwogICBjcmlja2V0OjpBdWRpb1Jl
Y3ZQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgIHBhcmFtZXRlcnMuY29kZWNzID0gZW5naW5lLnJl
Y3ZfY29kZWNzKCk7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWwuU2V0UmVjdlBhcmFtZXRlcnMocGFy
YW1ldGVycykpOwpAQCAtMzU2NCw3ICszNjIzLDcgQEAgVEVTVChXZWJSdGNWb2ljZUVuZ2luZVRl
c3QsIENvbGxlY3RSZWN2Q29kZWNzKSB7CiAgIGF1dG8gZmluZF9jb2RlYyA9IFsmY29kZWNzXShj
b25zdCB3ZWJydGM6OlNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIC0+IGludCB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgIT0gY29kZWNzLnNpemUoKTsgKytpKSB7CiAgICAgICBjb25zdCBjcmlj
a2V0OjpBdWRpb0NvZGVjJiBjb2RlYyA9IGNvZGVjc1tpXTsKLSAgICAgIGlmIChTVFJfQ0FTRV9D
TVAoY29kZWMubmFtZS5jX3N0cigpLCBmb3JtYXQubmFtZS5jX3N0cigpKSA9PSAwICYmCisgICAg
ICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBmb3JtYXQubmFtZSkgJiYK
ICAgICAgICAgICBjb2RlYy5jbG9ja3JhdGUgPT0gZm9ybWF0LmNsb2NrcmF0ZV9oeiAmJgogICAg
ICAgICAgIGNvZGVjLmNoYW5uZWxzID09IGZvcm1hdC5udW1fY2hhbm5lbHMpIHsKICAgICAgICAg
cmV0dXJuIHJ0Yzo6Y2hlY2tlZF9jYXN0PGludD4oaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL09XTkVSUyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvT1dORVJTCmlu
ZGV4IDgyNjJmZjc1MDg5NmZiNjliMWMwNzBkNTkwNTg2MWJhNDZkM2YwYjQuLmJjMjE4MmIxYjYw
ZjJjOWM0MzA2MDI2MmFkZWExMGE4YzkwYmE0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvT1dORVJTCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvT1dORVJTCkBA
IC0xLDIgKzEgQEAKIGplcm9lbmRiQHdlYnJ0Yy5vcmcKLXNoYW1wc29uQHdlYnJ0Yy5vcmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L3NjdHAvc2N0cHRyYW5zcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRyYW5zcG9ydC5jYwppbmRleCBhOGI5NDVhNmYxNzNk
OWJhMDZmMjlhNGJiMjhjNGE1ZmFiYzA5ODIyLi40ZmZhYWY3ZjVhMDQ0OGQxMGZjMzFlZjQwNWNj
M2VmNmI4NDhiZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwdHJhbnNwb3J0LmNj
CkBAIC04NTgsNyArODU4LDcgQEAgdm9pZCBTY3RwVHJhbnNwb3J0OjpPbldyaXRhYmxlU3RhdGUo
cnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0KSB7CiB2b2lkIFNjdHBUcmFu
c3BvcnQ6Ok9uUGFja2V0UmVhZChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3Bv
cnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNr
ZXRfdGltZV91cyAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFn
cykgewogICBSVENfRENIRUNLX1JVTl9PTihuZXR3b3JrX3RocmVhZF8pOwogICBSVENfRENIRUNL
X0VRKHRyYW5zcG9ydF8sIHRyYW5zcG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnQuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRy
YW5zcG9ydC5oCmluZGV4IGE0MDFkOGI3OTVhOGFhOTE0YWUzNjRhYjEzNTUyNjI4YzUzMDc3MjEu
LjVjMmE3NTBlNGYzYzMyMjBjNGU5N2I0YjgwNzE2OTgzYmRkNDMwNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRy
YW5zcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL3NjdHAvc2N0cHRyYW5zcG9ydC5oCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVkZSA8
ZXJybm8uaD4KIAogI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxtZW1vcnk+ICAvLyBmb3IgdW5p
cXVlX3B0ci4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHN0
cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU2N0cFRy
YW5zcG9ydCA6IHB1YmxpYyBTY3RwVHJhbnNwb3J0SW50ZXJuYWwsCiAgIHZpcnR1YWwgdm9pZCBP
blBhY2tldFJlYWQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBmbGFncyk7CiAKICAgLy8gTWV0aG9kcyByZWxhdGVkIHRvIHVzcnNjdHAg
Y2FsbGJhY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwdHJhbnNwb3J0aW50ZXJuYWwuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRyYW5zcG9ydGlu
dGVybmFsLmgKaW5kZXggMDM4MGE4NzBiNGMwYjA4ZDJjZTFiNDY4NDZiNTg4Njg0Y2JhNzdkMC4u
NGMzYjU0MmE1MjFkOGJiNjM0ODM3MjBiODA2NGRhNDY0OTVmNDlhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwdHJh
bnNwb3J0aW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnRpbnRlcm5hbC5oCkBAIC0xNCw3ICsxNCw3
IEBACiAvLyBUT0RPKGRlYWRiZWVmKTogTW92ZSBTQ1RQIGNvZGUgb3V0IG9mIG1lZGlhLywgYW5k
IG1ha2UgaXQgbm90IGRlcGVuZCBvbgogLy8gYW55dGhpbmcgaW4gbWVkaWEvLgogCi0jaW5jbHVk
ZSA8bWVtb3J5PiAgLy8gZm9yIHVuaXF1ZV9wdHIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9CVUlMRC5nbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvQlVJTEQuZ24KaW5kZXgg
ODEyNzI0NDQ2MmIzMzU3MjY2Mjk2YWYyYzM1ODZmMTVjODhiZjZkMC4uZWYwMjk5MTRiMzA5M2My
YmU0MzhmYTIzMGViYWJhYzFjNmYwNDkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL0JVSUxELmduCkBAIC01NCw2
ICs1NCw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJtb2R1bGVfYXBpIikgewogICAgICIuLi9hcGk6bGli
amluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgIi4uL21vZHVsZXMvcnRwX3J0Y3A6cnRw
X3ZpZGVvX2hlYWRlciIsCiAgICAgIi4uL3J0Y19iYXNlOnNhZmVfY29udmVyc2lvbnMiLAorICAg
ICIuLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgIF0KIH0KIApAQCAtMjM2LDYgKzIz
Nyw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIGRlcHMgPSBbCiAgICAgICAiOm1v
ZHVsZV9hcGkiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIuLi90ZXN0OnRl
c3Rfc3VwcG9ydCIsCiAgICAgICAiYXVkaW9fY29kaW5nOmF1ZGlvX2NvZGluZ191bml0dGVzdHMi
LAogICAgICAgImF1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfdW5pdHRlc3RzIiwKICAgICAgICJh
dWRpb19taXhlcjphdWRpb19taXhlcl91bml0dGVzdHMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9CVUlMRC5nbgppbmRleCA0OTgyZDE5YTdiMzAzNmY3NTA4OTAxMmQxZTBl
M2Q3NDE3Y2JmYmM0Li5kZjRiYTIzZmZmNWQzNzc0MDEzOGM3N2I4MDIyMzliNGM2MjgzMTVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9CVUlMRC5nbgpAQCAtMTQsMzIg
KzE0LDYgQEAgaWYgKCFidWlsZF93aXRoX21vemlsbGEpIHsKIAogdmlzaWJpbGl0eSA9IFsgIjoq
IiBdCiAKLWF1ZGlvX2NvZGVjX2RlcHMgPSBbCi0gICI6Y25nIiwKLSAgIjpnNzExIiwKLSAgIjpw
Y20xNmIiLAotXQotaWYgKHJ0Y19pbmNsdWRlX2lsYmMpIHsKLSAgYXVkaW9fY29kZWNfZGVwcyAr
PSBbICI6aWxiYyIgXQotfQotaWYgKHJ0Y19pbmNsdWRlX29wdXMpIHsKLSAgYXVkaW9fY29kZWNf
ZGVwcyArPSBbICI6d2VicnRjX29wdXMiIF0KLX0KLWlmIChjdXJyZW50X2NwdSA9PSAiYXJtIikg
ewotICBhdWRpb19jb2RlY19kZXBzICs9IFsgIjppc2FjX2ZpeCIgXQotfSBlbHNlIHsKLSAgYXVk
aW9fY29kZWNfZGVwcyArPSBbICI6aXNhYyIgXQotfQotYXVkaW9fY29kZWNfZGVwcyArPSBbICI6
ZzcyMiIgXQotaWYgKCFidWlsZF93aXRoX21vemlsbGEgJiYgIWJ1aWxkX3dpdGhfY2hyb21pdW0p
IHsKLSAgYXVkaW9fY29kZWNfZGVwcyArPSBbICI6cmVkIiBdCi19Ci1hdWRpb19jb2RpbmdfZGVw
cyA9IGF1ZGlvX2NvZGVjX2RlcHMgKyBbCi0gICAgICAgICAgICAgICAgICAgICAgIi4uLy4uOndl
YnJ0Y19jb21tb24iLAotICAgICAgICAgICAgICAgICAgICAgICIuLi8uLi9jb21tb25fYXVkaW8i
LAotICAgICAgICAgICAgICAgICAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAotICAgICAg
ICAgICAgICAgICAgICBdCi0KIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZm9ybWF0X2NvbnZl
cnNpb24iKSB7CiAgIHZpc2liaWxpdHkgKz0gd2VicnRjX2RlZmF1bHRfdmlzaWJpbGl0eQogICBz
b3VyY2VzID0gWwpAQCAtNTMsNiArMjcsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2Zv
cm1hdF9jb252ZXJzaW9uIikgewogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIu
Li8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnNh
bml0aXplciIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAog
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0K
IH0KQEAgLTYzLDcgKzM4LDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJyZW50X2FfY29kZWMiKSB7
CiAgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTgwOCk6IE1vdmUgdG8gcHJpdmF0ZSB2aXNpYmls
aXR5IGFzIHNvb24gYXMgdGhhdAogICAjIGNsaWVudCBjb2RlIGdldHMgdXBkYXRlZC4KICAgdmlz
aWJpbGl0eSArPSBbICIqIiBdCi0gIGFsbG93X3BvaXNvbiA9IFsgImF1ZGlvX2NvZGVjcyIgXQog
CiAgIHNvdXJjZXMgPSBbCiAgICAgImFjbTIvYWNtX2NvZGVjX2RhdGFiYXNlLmNjIiwKQEAgLTcy
LDIwICs0NiwxOCBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJlbnRfYV9jb2RlYyIpIHsKICAgICAi
YWNtMi9yZW50X2FfY29kZWMuaCIsCiAgIF0KICAgZGVwcyA9IFsKLSAgICAgICAgICAgIi4uLy4u
L3J0Y19iYXNlOmNoZWNrcyIsCi0gICAgICAgICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCi0g
ICAgICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIs
Ci0gICAgICAgICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAot
ICAgICAgICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCi0gICAgICAgICAgICIuLi8uLi9ydGNf
YmFzZTpwcm90b2J1Zl91dGlscyIsCi0gICAgICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFz
ZV9hcHByb3ZlZCIsCi0gICAgICAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAotICAgICAg
ICAgICAiOmF1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMiLAotICAgICAgICAgICAiOmlzYWNf
Y29tbW9uIiwKLSAgICAgICAgICAgIjppc2FjX2ZpeF9jIiwKLSAgICAgICAgICAgIjpuZXRlcV9k
ZWNvZGVyX2VudW0iLAotICAgICAgICAgXSArIGF1ZGlvX2NvZGVjX2RlcHMKLQorICAgICI6YXVk
aW9fY29kaW5nX21vZHVsZV90eXBlZGVmcyIsCisgICAgIjpuZXRlcV9kZWNvZGVyX2VudW0iLAor
ICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAor
ICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAorICAgICIuLi8u
Li9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi8uLi9ydGNfYmFzZTpwcm90b2J1Zl91dGlscyIs
CisgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vc3lz
dGVtX3dyYXBwZXJzIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwK
KyAgXQogICBkZWZpbmVzID0gYXVkaW9fY29kZWNfZGVmaW5lcwogfQogCkBAIC05NSwxMiArNjcs
MTIgQEAgcnRjX3NvdXJjZV9zZXQoImF1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMiKSB7CiAg
IF0KICAgZGVwcyA9IFsKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL3J0
Y19iYXNlOmRlcHJlY2F0aW9uIiwKICAgXQogfQogCiBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlv
X2NvZGluZyIpIHsKICAgdmlzaWJpbGl0eSArPSBbICIqIiBdCi0gIGFsbG93X3BvaXNvbiA9IFsg
ImF1ZGlvX2NvZGVjcyIgXSAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84Mzk2KTogUmVtb3ZlLgog
ICBzb3VyY2VzID0gWwogICAgICJhY20yL2FjbV9yZWNlaXZlci5jYyIsCiAgICAgImFjbTIvYWNt
X3JlY2VpdmVyLmgiLApAQCAtMTA5LDM3ICs4MSwzNCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1
ZGlvX2NvZGluZyIpIHsKICAgICAiYWNtMi9hdWRpb19jb2RpbmdfbW9kdWxlLmNjIiwKICAgICAi
YWNtMi9jYWxsX3N0YXRpc3RpY3MuY2MiLAogICAgICJhY20yL2NhbGxfc3RhdGlzdGljcy5oIiwK
LSAgICAiYWNtMi9jb2RlY19tYW5hZ2VyLmNjIiwKLSAgICAiYWNtMi9jb2RlY19tYW5hZ2VyLmgi
LAogICAgICJpbmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGUuaCIsCiAgIF0KIAogICBkZWZpbmVz
ID0gW10KIAotICBpZiAocnRjX2luY2x1ZGVfb3B1cykgewotICAgIHB1YmxpY19kZXBzID0gWwot
ICAgICAgIjp3ZWJydGNfb3B1cyIsCi0gICAgXQotICB9Ci0KLSAgZGVwcyA9IGF1ZGlvX2NvZGlu
Z19kZXBzICsgWwotICAgICAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3MiLAot
ICAgICAgICAgICAiLi4vLi4vYXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCi0gICAgICAgICAg
ICIuLjptb2R1bGVfYXBpIiwKLSAgICAgICAgICAgIi4uLy4uL2NvbW1vbl9hdWRpbzpjb21tb25f
YXVkaW9fYyIsCi0gICAgICAgICAgICIuLi8uLi9ydGNfYmFzZTpkZXByZWNhdGlvbiIsCi0gICAg
ICAgICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAotICAgICAgICAgICAiLi4vLi4vYXBpOmFy
cmF5X3ZpZXciLAotICAgICAgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2Rl
Y3NfYXBpIiwKLSAgICAgICAgICAgIjphdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzIiwKLSAg
ICAgICAgICAgIjpuZXRlcSIsCi0gICAgICAgICAgICI6cmVudF9hX2NvZGVjIiwKLSAgICAgICAg
ICAgIi4uLy4uL3J0Y19iYXNlOmF1ZGlvX2Zvcm1hdF90b19zdHJpbmciLAotICAgICAgICAgICAi
Li4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICAgICAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAotICAgICAgICAgICAiLi4vLi4v
bG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCi0gICAgICAgICBdCi0gIGRlZmluZXMgPSBhdWRp
b19jb2RpbmdfZGVmaW5lcworICBkZXBzID0gWworICAgICI6YXVkaW9fY29kaW5nX21vZHVsZV90
eXBlZGVmcyIsCisgICAgIjpuZXRlcSIsCisgICAgIjpuZXRlcV9kZWNvZGVyX2VudW0iLAorICAg
ICI6cmVudF9hX2NvZGVjIiwKKyAgICAiLi46bW9kdWxlX2FwaSIsCisgICAgIi4uOm1vZHVsZV9h
cGlfcHVibGljIiwKKyAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaTph
cnJheV92aWV3IiwKKyAgICAiLi4vLi4vYXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCisgICAg
Ii4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCisgICAgIi4uLy4uL2Nv
bW1vbl9hdWRpbzpjb21tb25fYXVkaW8iLAorICAgICIuLi8uLi9jb21tb25fYXVkaW86Y29tbW9u
X2F1ZGlvX2MiLAorICAgICIuLi8uLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKKyAgICAi
Li4vLi4vcnRjX2Jhc2U6YXVkaW9fZm9ybWF0X3RvX3N0cmluZyIsCisgICAgIi4uLy4uL3J0Y19i
YXNlOmNoZWNrcyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmRlcHJlY2F0aW9uIiwKKyAgICAiLi4v
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBl
cnMiLAorICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KIH0KIAogcnRjX3N0YXRpY19saWJyYXJ5
KCJsZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZSIpIHsKQEAgLTE1MCwyNiArMTE5LDQxIEBAIHJ0
Y19zdGF0aWNfbGlicmFyeSgibGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUiKSB7CiAgIGRlcHMg
PSBbCiAgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvX2Nv
ZGVjczphdWRpb19jb2RlY3NfYXBpIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAg
ICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KIAotcnRjX3N0YXRpY19s
aWJyYXJ5KCJjbmciKSB7Ci0gIHZpc2liaWxpdHkgKz0gWyAiKiIgXQorcnRjX3N0YXRpY19saWJy
YXJ5KCJ3ZWJydGNfY25nIikgeworICB2aXNpYmlsaXR5ICs9IHdlYnJ0Y19kZWZhdWx0X3Zpc2li
aWxpdHkKICAgc291cmNlcyA9IFsKLSAgICAiY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5j
YyIsCi0gICAgImNvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuaCIsCiAgICAgImNvZGVjcy9j
bmcvd2VicnRjX2NuZy5jYyIsCiAgICAgImNvZGVjcy9jbmcvd2VicnRjX2NuZy5oIiwKICAgXQog
CiAgIGRlcHMgPSBbCi0gICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9hcGk6
YXJyYXlfdmlldyIsCi0gICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2Fw
aSIsCi0gICAgIi4uLy4uL2NvbW1vbl9hdWRpbyIsCiAgICAgIi4uLy4uL2NvbW1vbl9hdWRpbzpj
b21tb25fYXVkaW9fYyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4u
L3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6c2FmZV9j
b252ZXJzaW9ucyIsCisgIF0KK30KKworcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19lbmNvZGVy
X2NuZyIpIHsKKyAgdmlzaWJpbGl0eSArPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImNv
ZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MiLAorICAgICJjb2RlY3MvY25nL2F1ZGlvX2Vu
Y29kZXJfY25nLmgiLAorICBdCisKKyAgZGVwcyA9IFsKKyAgICAiOndlYnJ0Y19jbmciLAorICAg
ICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAorICAgICIuLi8uLi9j
b21tb25fYXVkaW8iLAorICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiB9CiAKQEAgLTE4MSwxMCArMTY1
LDEyIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicmVkIikgewogICBdCiAKICAgZGVwcyA9IFsKKyAg
ICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmF1
ZGlvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9jb21tb25fYXVkaW8iLAogICAgICIuLi8uLi9y
dGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAg
XQogfQogCkBAIC0yMDEsNiArMTg3LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJnNzExIikgewog
ICBkZXBzID0gWwogICAgICI6bGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUiLAogICAgICIuLi8u
Ljp3ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8u
Li9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9ydGNfYmFz
ZTpjaGVja3MiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCkBAIC0y
MzUsNiArMjIyLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJnNzIyIikgewogICBkZXBzID0gWwog
ICAgICI6bGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUiLAogICAgICIuLi8uLjp3ZWJydGNfY29t
bW9uIiwKKyAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGkvYXVkaW9f
Y29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzL2c3
MjI6YXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNr
cyIsCkBAIC0yNzAsNiArMjU4LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJpbGJjIikgewogICBk
ZXBzID0gWwogICAgICI6bGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUiLAogICAgICIuLi8uLjp3
ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9h
cGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9hcGkvYXVkaW9f
Y29kZWNzL2lsYmM6YXVkaW9fZW5jb2Rlcl9pbGJjX2NvbmZpZyIsCiAgICAgIi4uLy4uL2NvbW1v
bl9hdWRpbyIsCkBAIC03ODYsNiArNzc1LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJwY20xNmIi
KSB7CiAgICAgIjpnNzExIiwKICAgICAiOmxlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lIiwKICAg
ICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAg
ICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LApAQCAtODIwLDYgKzgxMCw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX29wdXMiKSB7
CiAgIGRlcHMgPSBbCiAgICAgIjphdWRpb19uZXR3b3JrX2FkYXB0b3IiLAogICAgICIuLi8uLjp3
ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9h
cGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9hcGkvYXVkaW9f
Y29kZWNzL29wdXM6YXVkaW9fZW5jb2Rlcl9vcHVzX2NvbmZpZyIsCiAgICAgIi4uLy4uL2NvbW1v
bl9hdWRpbyIsCkBAIC04MjksNiArODIwLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNf
b3B1cyIpIHsKICAgICAiLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAogICAgICIuLi8uLi9z
eXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwi
LAogICBdCiAgIHB1YmxpY19kZXBzID0gWwpAQCAtODgyLDYgKzg3NCw3IEBAIGlmIChydGNfZW5h
YmxlX3Byb3RvYnVmKSB7CiAgICAgcHJvdG9fb3V0X2RpciA9ICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IiCiAgIH0KICAgcHJvdG9fbGlicmFyeSgiYW5hX2NvbmZp
Z19wcm90byIpIHsKKyAgICB2aXNpYmlsaXR5ICs9IFsgIioiIF0KICAgICBzb3VyY2VzID0gWwog
ICAgICAgImF1ZGlvX25ldHdvcmtfYWRhcHRvci9jb25maWcucHJvdG8iLAogICAgIF0KQEAgLTEw
MzIsOCArMTAyNSw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgibmV0ZXEiKSB7CiAgICAgIm5ldGVx
L3JhbmRvbV92ZWN0b3IuaCIsCiAgICAgIm5ldGVxL3JlZF9wYXlsb2FkX3NwbGl0dGVyLmNjIiwK
ICAgICAibmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuaCIsCi0gICAgIm5ldGVxL3J0Y3AuY2Mi
LAotICAgICJuZXRlcS9ydGNwLmgiLAogICAgICJuZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0b3Iu
Y2MiLAogICAgICJuZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0b3IuaCIsCiAgICAgIm5ldGVxL3N5
bmNfYnVmZmVyLmNjIiwKQEAgLTEwNDgsOSArMTAzOSwxMCBAQCBydGNfc3RhdGljX2xpYnJhcnko
Im5ldGVxIikgewogCiAgIGRlcHMgPSBbCiAgICAgIjphdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVk
ZWZzIiwKLSAgICAiOmNuZyIsCiAgICAgIjpuZXRlcV9kZWNvZGVyX2VudW0iLAorICAgICI6d2Vi
cnRjX2NuZyIsCiAgICAgIi4uOm1vZHVsZV9hcGkiLAorICAgICIuLjptb2R1bGVfYXBpX3B1Ymxp
YyIsCiAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9hcGk6YXJyYXlfdmll
dyIsCiAgICAgIi4uLy4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKQEAgLTEw
NjcsNiArMTA1OSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgibmV0ZXEiKSB7CiAgICAgIi4uLy4u
L3J0Y19iYXNlL3N5c3RlbTpmYWxsdGhyb3VnaCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVy
czpmaWVsZF90cmlhbCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtMTEwNSw2
ICsxMDk4LDcgQEAgcnRjX3NvdXJjZV9zZXQoIm5ldGVxX3Rvb2xzX21pbmltYWwiKSB7CiAgICAg
Ii4uL3J0cF9ydGNwIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6
b3B0aW9uYWwiLAogICBdCisgIGRlZmluZXMgPSBhdWRpb19jb2RlY19kZWZpbmVzCiB9CiAKIHJ0
Y19zb3VyY2Vfc2V0KCJuZXRlcV90ZXN0X3Rvb2xzIikgewpAQCAtMTE0MCwxMSArMTEzNCwxMSBA
QCBydGNfc291cmNlX3NldCgibmV0ZXFfdGVzdF90b29scyIpIHsKICAgICAiLi4vLi4vcnRjX2Jh
c2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICIuLi8uLi9y
dGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNl
X3Rlc3RzX3V0aWxzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOmFyY2giLAogICAgICIu
Li8uLi90ZXN0OnJ0cF90ZXN0X3V0aWxzIiwKICAgICAiLi4vcnRwX3J0Y3AiLAogICAgICIuLi9y
dHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIAogICBwdWJsaWNfZGVwcyA9IFsKQEAgLTEyMzgs
NiArMTIzMiw3IEBAIGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAgICAgICAiLi4vLi4vcnRj
X2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uL3J0cF9ydGNwIiwKICAgICAgICIu
Li9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgICBdCiAgICAgcHVibGljX2RlcHMgPSBbCiAg
ICAgICAiLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX3Byb3RvIiwKQEAgLTEyNDYsNiArMTI0
MSwzMCBAQCBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogfQogCiBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKKyAgYXVkaW9fY29kaW5nX2RlcHMgPSBbCisgICAgIi4uLy4uL2NvbW1vbl9hdWRp
byIsCisgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgIi4uLy4uOndlYnJ0Y19jb21t
b24iLAorICAgICI6YXVkaW9fZW5jb2Rlcl9jbmciLAorICAgICI6ZzcxMSIsCisgICAgIjpnNzIy
IiwKKyAgICAiOnBjbTE2YiIsCisgIF0KKyAgaWYgKHJ0Y19pbmNsdWRlX2lsYmMpIHsKKyAgICBh
dWRpb19jb2RpbmdfZGVwcyArPSBbICI6aWxiYyIgXQorICB9CisgIGlmIChydGNfaW5jbHVkZV9v
cHVzKSB7CisgICAgYXVkaW9fY29kaW5nX2RlcHMgKz0gWyAiOndlYnJ0Y19vcHVzIiBdCisgIH0K
KyAgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm0iKSB7CisgICAgYXVkaW9fY29kaW5nX2RlcHMgKz0g
WyAiOmlzYWNfZml4IiBdCisgIH0gZWxzZSB7CisgICAgYXVkaW9fY29kaW5nX2RlcHMgKz0gWyAi
OmlzYWMiIF0KKyAgfQorICBpZiAoIWJ1aWxkX3dpdGhfbW96aWxsYSAmJiAhYnVpbGRfd2l0aF9j
aHJvbWl1bSkgeworICAgIGF1ZGlvX2NvZGluZ19kZXBzICs9IFsgIjpyZWQiIF0KKyAgfQorCiAg
IHJ0Y19zb3VyY2Vfc2V0KCJtb2NrcyIpIHsKICAgICB0ZXN0b25seSA9IHRydWUKICAgICBzb3Vy
Y2VzID0gWwpAQCAtMTMzMCwxMCArMTM0OSwxMSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsK
ICAgICBkZXBzID0gWwogICAgICAgIjphdWRpb19jb2RpbmciLAogICAgICAgIjphdWRpb19jb2Rp
bmdfbW9kdWxlX3R5cGVkZWZzIiwKKyAgICAgICI6YXVkaW9fZW5jb2Rlcl9jbmciLAogICAgICAg
IjphdWRpb19mb3JtYXRfY29udmVyc2lvbiIsCi0gICAgICAiOmNuZyIsCiAgICAgICAiOnBjbTE2
Yl9jIiwKICAgICAgICI6cmVkIiwKKyAgICAgICI6d2VicnRjX29wdXNfYyIsCiAgICAgICAiLi46
bW9kdWxlX2FwaSIsCiAgICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4vLi4v
YXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCkBAIC0xMzU5LDYgKzEzNzksNyBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAogICAgICAg
Ii4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIs
CisgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICAgIF0KICAg
ICBkZWZpbmVzID0gYXVkaW9fY29kaW5nX2RlZmluZXMKQEAgLTE0MTQsNiArMTQzNSw3IEBAIGlm
IChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgICAgICAgICI6bmV0ZXFfdG9vbHMiLAogICAg
ICAgICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAgICAg
ICAgIi4uLy4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKyAgICAgICAgICAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgICAgICAgICAgIi8vdGVzdGluZy9ndGVz
dCIsCiAgICAgICAgICAgIF0KICAgfQpAQCAtMTQ3Nyw2ICsxNDk5LDcgQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgICAgICAgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTphcmNoIiwK
ICAgICAgICAgICAgICAiLi4vLi4vdGVzdDp0ZXN0X21haW4iLAogICAgICAgICAgICAgICIvL3Rl
c3RpbmcvZ3Rlc3QiLAorICAgICAgICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAg
ICAgICAgICAgIF0gKyBhdWRpb19jb2RpbmdfZGVwcwogCiAgICAgZGF0YSA9IGF1ZGlvX2RlY29k
ZXJfdW5pdHRlc3RzX3Jlc291cmNlcwpAQCAtMTUwMSw3ICsxNTI0LDcgQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgcnRjX3NvdXJjZV9zZXQoIm5ldGVxX3Rlc3RfZmFjdG9yeSIpIHsK
ICAgICAgIHRlc3Rvbmx5ID0gdHJ1ZQogICAgICAgdmlzaWJpbGl0eSArPSB3ZWJydGNfZGVmYXVs
dF92aXNpYmlsaXR5Ci0gICAgICBkZWZpbmVzID0gW10KKyAgICAgIGRlZmluZXMgPSBhdWRpb19j
b2RlY19kZWZpbmVzCiAgICAgICBkZXBzID0gWwogICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hl
Y2tzIiwKICAgICAgICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwKQEAgLTE1OTQsNiArMTYxNyw3
IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uLy4uL2FwaTpsaWJqaW5nbGVf
cGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHBy
b3ZlZCIsCiAgICAgICAiLi4vLi4vdGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4uLy4uL3Rlc3Q6
dGVzdF9zdXBwb3J0IiwKICAgICAgICIuLi9hdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICIvL3Rl
c3RpbmcvZ3Rlc3QiLAogICAgIF0KQEAgLTE2NjEsNiArMTY4NSw3IEBAIGlmIChydGNfaW5jbHVk
ZV90ZXN0cykgewogICAgIGRlcHMgPSBhdWRpb19jb2RpbmdfZGVwcyArIFsKICAgICAgICAgICAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgICAgICAgICAgICAi
OmF1ZGlvX2NvZGluZyIsCisgICAgICAgICAgICAgIjphdWRpb19lbmNvZGVyX2NuZyIsCiAgICAg
ICAgICAgICAgIjpuZXRlcV9pbnB1dF9hdWRpb190b29scyIsCiAgICAgICAgICAgICAgIi4uLy4u
L2FwaS9hdWRpbzphdWRpb19mcmFtZV9hcGkiLAogICAgICAgICAgICAgICIuLi8uLi9hcGkvYXVk
aW9fY29kZWNzL2c3MTE6YXVkaW9fZW5jb2Rlcl9nNzExIiwKQEAgLTE3NTYsNyArMTc4MSw2IEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpuZXRlcV90ZXN0X3N1cHBvcnQiLAog
ICAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi8uLi90ZXN0OmZpbGV1dGlscyIsCiAgICAgICAiLi4v
Li4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgIF0KICAgfQpAQCAtMTk1Niw2ICsxOTgwLDcgQEAg
aWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLAogICAgICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi8uLi90
ZXN0OnRlc3RfbWFpbiIsCisgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAg
Ii8vdGVzdGluZy9ndGVzdCIsCiAgICAgXQogICB9CkBAIC0xOTY4LDggKzE5OTMsNiBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJhY20yL2FjbV9yZWNlaXZlcl91bml0dGVzdC5j
YyIsCiAgICAgICAiYWNtMi9hdWRpb19jb2RpbmdfbW9kdWxlX3VuaXR0ZXN0LmNjIiwKICAgICAg
ICJhY20yL2NhbGxfc3RhdGlzdGljc191bml0dGVzdC5jYyIsCi0gICAgICAiYWNtMi9jb2RlY19t
YW5hZ2VyX3VuaXR0ZXN0LmNjIiwKLSAgICAgICJhY20yL3JlbnRfYV9jb2RlY191bml0dGVzdC5j
YyIsCiAgICAgICAiYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9p
bXBsX3VuaXR0ZXN0LmNjIiwKICAgICAgICJhdWRpb19uZXR3b3JrX2FkYXB0b3IvYml0cmF0ZV9j
b250cm9sbGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJhdWRpb19uZXR3b3JrX2FkYXB0b3IvY2hh
bm5lbF9jb250cm9sbGVyX3VuaXR0ZXN0LmNjIiwKQEAgLTIwNDgsOSArMjA3MSw5IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjphY21fc2VuZF90ZXN0IiwKICAgICAgICI6YXVk
aW9fY29kaW5nIiwKICAgICAgICI6YXVkaW9fY29kaW5nX21vZHVsZV90eXBlZGVmcyIsCisgICAg
ICAiOmF1ZGlvX2VuY29kZXJfY25nIiwKICAgICAgICI6YXVkaW9fZm9ybWF0X2NvbnZlcnNpb24i
LAogICAgICAgIjphdWRpb19uZXR3b3JrX2FkYXB0b3IiLAotICAgICAgIjpjbmciLAogICAgICAg
IjpnNzExIiwKICAgICAgICI6aWxiYyIsCiAgICAgICAiOmlzYWMiLApAQCAtMjA2NCw2ICsyMDg3
LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOnBjbTE2YiIsCiAgICAgICAi
OnJlZCIsCiAgICAgICAiOnJlbnRfYV9jb2RlYyIsCisgICAgICAiOndlYnJ0Y19jbmciLAogICAg
ICAgIjp3ZWJydGNfb3B1cyIsCiAgICAgICAiLi46bW9kdWxlX2FwaSIsCiAgICAgICAiLi4vLi46
d2VicnRjX2NvbW1vbiIsCkBAIC0yMDc5LDYgKzIxMDMsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICAgICIuLi8uLi9sb2dnaW5nOm1vY2tzIiwKICAgICAgICIuLi8uLi9sb2dnaW5n
OnJ0Y19ldmVudF9hdWRpbyIsCiAgICAgICAiLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2Fw
aSIsCisgICAgICAiLi4vLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAogICAg
ICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cHJvdG9i
dWZfdXRpbHMiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKQEAgLTIwOTgsNiAr
MjEyMyw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgImNvZGVjcy9vcHVzL3Rl
c3Q6dGVzdF91bml0dGVzdCIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgICBdCiAKICAgICBkZWZpbmVzID0g
YXVkaW9fY29kaW5nX2RlZmluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL09XTkVSUyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL09X
TkVSUwppbmRleCBjMWFkYzU2MWI4OTVkZDgyMjQ3ZDMyZjM0ODFmMjRhZjQ3YzczYzg5Li40NmY5
OTU4Njg0MmIzOTE1MWQyMGFiN2M2ZjYzODc2ZWU1OGQwYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9P
V05FUlMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvT1dORVJTCkBAIC00LDYgKzQsNyBAQCBrd2liZXJnQHdlYnJ0Yy5v
cmcKIG1pbnl1ZUB3ZWJydGMub3JnCiBqYW4uc2tvZ2x1bmRAd2VicnRjLm9yZwogb3NzdUB3ZWJy
dGMub3JnCitpdm9jQHdlYnJ0Yy5vcmcKIAogIyBUaGVzZSBhcmUgZm9yIHRoZSBjb21tb24gY2Fz
ZSBvZiBhZGRpbmcgb3IgcmVuYW1pbmcgZmlsZXMuIElmIHlvdSdyZSBkb2luZwogIyBzdHJ1Y3R1
cmFsIGNoYW5nZXMsIHBsZWFzZSBnZXQgYSByZXZpZXcgZnJvbSBhIHJldmlld2VyIGluIHRoaXMg
ZmlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX2NvZGVjX2RhdGFiYXNlLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYWNtMi9hY21fY29kZWNfZGF0YWJhc2UuY2MKaW5kZXggMzExYWYyZGYzZmY2ZTk0ZmQ1OTMz
ZjI5ZWUxOWExODUxMDY1ZWIxNC4uY2FkYTgwYzA2MTg4NDM4OWExZGFhMDQyNDkwOTlhMmU4YzRi
M2FlMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fY29kZWNfZGF0YWJhc2UuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvYWNtMi9hY21fY29kZWNfZGF0YWJhc2UuY2MKQEAgLTE3LDcgKzE3LDkgQEAKIC8vIHJl
ZmVyZW5jZXMsIHdoZXJlIGFwcHJvcHJpYXRlLgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2FjbTIvYWNtX2NvZGVjX2RhdGFiYXNlLmgiCiAKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNpbmNsdWRlICJhcGkvYXJy
YXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2Nv
ZGVjLmgiCiAKICNpZiAoKGRlZmluZWQgV0VCUlRDX0NPREVDX0lTQUMpICYmIChkZWZpbmVkIFdF
QlJUQ19DT0RFQ19JU0FDRlgpKQogI2Vycm9yIGlTQUMgYW5kIGlTQUNGWCBjb2RlY3MgY2Fubm90
IGJlIGVuYWJsZWQgYXQgdGhlIHNhbWUgdGltZQpAQCAtMjM5LDEyICsyNDEsMTIgQEAgaW50IEFD
TUNvZGVjREI6OkNvZGVjTnVtYmVyKGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCkgewogICB9
CiAKICAgLy8gQ29tZm9ydCBOb2lzZSBpcyBzcGVjaWFsIGNhc2UsIHBhY2tldC1zaXplICYgcmF0
ZSBpcyBub3QgY2hlY2tlZC4KLSAgaWYgKFNUUl9DQVNFX0NNUChkYXRhYmFzZV9bY29kZWNfaWRd
LnBsbmFtZSwgIkNOIikgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShkYXRh
YmFzZV9bY29kZWNfaWRdLnBsbmFtZSwgIkNOIikpIHsKICAgICByZXR1cm4gY29kZWNfaWQ7CiAg
IH0KIAogICAvLyBSRUQgaXMgc3BlY2lhbCBjYXNlLCBwYWNrZXQtc2l6ZSAmIHJhdGUgaXMgbm90
IGNoZWNrZWQuCi0gIGlmIChTVFJfQ0FTRV9DTVAoZGF0YWJhc2VfW2NvZGVjX2lkXS5wbG5hbWUs
ICJyZWQiKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGRhdGFiYXNlX1tj
b2RlY19pZF0ucGxuYW1lLCAicmVkIikpIHsKICAgICByZXR1cm4gY29kZWNfaWQ7CiAgIH0KIApA
QCAtMjcyLDEyICsyNzQsMTIgQEAgaW50IEFDTUNvZGVjREI6OkNvZGVjTnVtYmVyKGNvbnN0IENv
ZGVjSW5zdCYgY29kZWNfaW5zdCkgewogCiAgIC8vIENoZWNrIHRoZSB2YWxpZGl0eSBvZiByYXRl
LiBDb2RlY3Mgd2l0aCBtdWx0aXBsZSByYXRlcyBoYXZlIHRoZWlyIG93bgogICAvLyBmdW5jdGlv
biBmb3IgdGhpcy4KLSAgaWYgKFNUUl9DQVNFX0NNUCgiaXNhYyIsIGNvZGVjX2luc3QucGxuYW1l
KSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKCJpc2FjIiwgY29kZWNfaW5z
dC5wbG5hbWUpKSB7CiAgICAgcmV0dXJuIElzSVNBQ1JhdGVWYWxpZChjb2RlY19pbnN0LnJhdGUp
ID8gY29kZWNfaWQgOiBrSW52YWxpZFJhdGU7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKCJp
bGJjIiwgY29kZWNfaW5zdC5wbG5hbWUpID09IDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVh
bHNJZ25vcmVDYXNlKCJpbGJjIiwgY29kZWNfaW5zdC5wbG5hbWUpKSB7CiAgICAgcmV0dXJuIElz
SUxCQ1JhdGVWYWxpZChjb2RlY19pbnN0LnJhdGUsIGNvZGVjX2luc3QucGFjc2l6ZSkgPyBjb2Rl
Y19pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDoga0ludmFsaWRSYXRlOwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUCgi
b3B1cyIsIGNvZGVjX2luc3QucGxuYW1lKSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZSgib3B1cyIsIGNvZGVjX2luc3QucGxuYW1lKSkgewogICAgIHJldHVybiBJ
c09wdXNSYXRlVmFsaWQoY29kZWNfaW5zdC5yYXRlKSA/IGNvZGVjX2lkIDoga0ludmFsaWRSYXRl
OwogICB9CiAKQEAgLTI5Niw3ICsyOTgsNyBAQCBpbnQgQUNNQ29kZWNEQjo6Q29kZWNJZChjb25z
dCBDb2RlY0luc3QmIGNvZGVjX2luc3QpIHsKIGludCBBQ01Db2RlY0RCOjpDb2RlY0lkKGNvbnN0
IGNoYXIqIHBheWxvYWRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmVxdWVu
Y3ksCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2hhbm5lbHMpIHsKLSAgZm9yIChj
b25zdCBDb2RlY0luc3QmIGNpIDogUmVudEFDb2RlYzo6RGF0YWJhc2UoKSkgeworICBmb3IgKGNv
bnN0IENvZGVjSW5zdCYgY2kgOiBkYXRhYmFzZV8pIHsKICAgICBib29sIG5hbWVfbWF0Y2ggPSBm
YWxzZTsKICAgICBib29sIGZyZXF1ZW5jeV9tYXRjaCA9IGZhbHNlOwogICAgIGJvb2wgY2hhbm5l
bHNfbWF0Y2ggPSBmYWxzZTsKQEAgLTMwNCwxMCArMzA2LDEwIEBAIGludCBBQ01Db2RlY0RCOjpD
b2RlY0lkKGNvbnN0IGNoYXIqIHBheWxvYWRfbmFtZSwKICAgICAvLyBQYXlsb2FkIG5hbWUsIHNh
bXBsaW5nIGZyZXF1ZW5jeSBhbmQgbnVtYmVyIG9mIGNoYW5uZWxzIG5lZWQgdG8gbWF0Y2guCiAg
ICAgLy8gTk9URSEgSWYgfGZyZXF1ZW5jeXwgaXMgLTEsIHRoZSBmcmVxdWVuY3kgaXMgbm90IGFw
cGxpY2FibGUsIGFuZCBpcwogICAgIC8vIGFsd2F5cyB0cmVhdGVkIGFzIHRydWUsIGxpa2UgZm9y
IFJFRC4KLSAgICBuYW1lX21hdGNoID0gKFNUUl9DQVNFX0NNUChjaS5wbG5hbWUsIHBheWxvYWRf
bmFtZSkgPT0gMCk7CisgICAgbmFtZV9tYXRjaCA9IGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY2ku
cGxuYW1lLCBwYXlsb2FkX25hbWUpOwogICAgIGZyZXF1ZW5jeV9tYXRjaCA9IChmcmVxdWVuY3kg
PT0gY2kucGxmcmVxKSB8fCAoZnJlcXVlbmN5ID09IC0xKTsKICAgICAvLyBUaGUgbnVtYmVyIG9m
IGNoYW5uZWxzIG11c3QgbWF0Y2ggZm9yIGFsbCBjb2RlY3MgYnV0IE9wdXMuCi0gICAgaWYgKFNU
Ul9DQVNFX0NNUChwYXlsb2FkX25hbWUsICJvcHVzIikgIT0gMCkgeworICAgIGlmICghYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25hbWUsICJvcHVzIikpIHsKICAgICAgIGNoYW5uZWxz
X21hdGNoID0gKGNoYW5uZWxzID09IGNpLmNoYW5uZWxzKTsKICAgICB9IGVsc2UgewogICAgICAg
Ly8gRm9yIG9wdXMgd2UganVzdCBjaGVjayB0aGF0IG51bWJlciBvZiBjaGFubmVscyBpcyB2YWxp
ZC4KQEAgLTMxNiw3ICszMTgsNyBAQCBpbnQgQUNNQ29kZWNEQjo6Q29kZWNJZChjb25zdCBjaGFy
KiBwYXlsb2FkX25hbWUsCiAKICAgICBpZiAobmFtZV9tYXRjaCAmJiBmcmVxdWVuY3lfbWF0Y2gg
JiYgY2hhbm5lbHNfbWF0Y2gpIHsKICAgICAgIC8vIFdlIGhhdmUgZm91bmQgYSBtYXRjaGluZyBj
b2RlYyBpbiB0aGUgbGlzdC4KLSAgICAgIHJldHVybiAmY2kgLSBSZW50QUNvZGVjOjpEYXRhYmFz
ZSgpLmRhdGEoKTsKKyAgICAgIHJldHVybiAmY2kgLSBkYXRhYmFzZV87CiAgICAgfQogICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIv
YWNtX3JlY2VpdmVfdGVzdC5jYwppbmRleCAyZDdmMjk2MGRlNTg5YmRhNGQ5MzVhYzMzMjk0YTZl
NTlmNjE5ZmE1Li5jMTQ5ZWMxYjBiYzIxZGVmZTlhZDMwY2M4ZmI3MTM4ZWU2ZDQzOGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9h
Y21fcmVjZWl2ZV90ZXN0LmNjCkBAIC0xNCw2ICsxNCw3IEBACiAKICNpbmNsdWRlIDxtZW1vcnk+
CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2F1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCkBA
IC0zMCwxMSArMzEsMTEgQEAgbmFtZXNwYWNlIHsKIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29k
ZWMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQsIG90aGVyd2lzZSBmYWxzZS4gQ2hhbmdlcwogLy8gdGhl
IG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhlIE9wdXMgY29kZWMgdG8gYWx3YXlzIGJlIDEuCiBi
b29sIE1vZGlmeUFuZFVzZVRoaXNDb2RlYyhDb2RlY0luc3QqIGNvZGVjX3BhcmFtKSB7Ci0gIGlm
IChTVFJfQ0FTRV9DTVAoY29kZWNfcGFyYW0tPnBsbmFtZSwgIkNOIikgPT0gMCAmJgorICBpZiAo
YWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19wYXJhbS0+cGxuYW1lLCAiQ04iKSAmJgogICAg
ICAgY29kZWNfcGFyYW0tPnBsZnJlcSA9PSA0ODAwMCkKICAgICByZXR1cm4gZmFsc2U7ICAvLyBT
a2lwIDQ4IGtIeiBjb21mb3J0IG5vaXNlLgogCi0gIGlmIChTVFJfQ0FTRV9DTVAoY29kZWNfcGFy
YW0tPnBsbmFtZSwgInRlbGVwaG9uZS1ldmVudCIpID09IDApCisgIGlmIChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKGNvZGVjX3BhcmFtLT5wbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSkKICAgICBy
ZXR1cm4gZmFsc2U7ICAvLyBTa2lwIERURk0uCiAKICAgcmV0dXJuIHRydWU7CkBAIC02NSwzOSAr
NjYsNDMgQEAgYm9vbCBSZW1hcFBsdHlwZUFuZFVzZVRoaXNDb2RlYyhjb25zdCBjaGFyKiBwbG5h
bWUsCiAgICAgcmV0dXJuIGZhbHNlOyAgLy8gRG9uJ3QgdXNlIG5vbi1tb25vIGNvZGVjcy4KIAog
ICAvLyBSZS1tYXAgcGx0eXBlcyB0byB0aG9zZSB1c2VkIGluIHRoZSBOZXRFcSB0ZXN0IGZpbGVz
LgotICBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgIlBDTVUiKSA9PSAwICYmIHBsZnJlcSA9PSA4
MDAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgIlBDTVUiKSAmJiBw
bGZyZXEgPT0gODAwMCkgewogICAgICpwbHR5cGUgPSAwOwotICB9IGVsc2UgaWYgKFNUUl9DQVNF
X0NNUChwbG5hbWUsICJQQ01BIikgPT0gMCAmJiBwbGZyZXEgPT0gODAwMCkgeworICB9IGVsc2Ug
aWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAiUENNQSIpICYmIHBsZnJlcSA9PSA4
MDAwKSB7CiAgICAgKnBsdHlwZSA9IDg7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFt
ZSwgIkNOIikgPT0gMCAmJiBwbGZyZXEgPT0gODAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVx
dWFsc0lnbm9yZUNhc2UocGxuYW1lLCAiQ04iKSAmJiBwbGZyZXEgPT0gODAwMCkgewogICAgICpw
bHR5cGUgPSAxMzsKLSAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAocGxuYW1lLCAiQ04iKSA9PSAw
ICYmIHBsZnJlcSA9PSAxNjAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNh
c2UocGxuYW1lLCAiQ04iKSAmJiBwbGZyZXEgPT0gMTYwMDApIHsKICAgICAqcGx0eXBlID0gOTg7
Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgIkNOIikgPT0gMCAmJiBwbGZyZXEg
PT0gMzIwMDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwg
IkNOIikgJiYgcGxmcmVxID09IDMyMDAwKSB7CiAgICAgKnBsdHlwZSA9IDk5OwotICB9IGVsc2Ug
aWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJJTEJDIikgPT0gMCkgeworICB9IGVsc2UgaWYgKGFi
c2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAiSUxCQyIpKSB7CiAgICAgKnBsdHlwZSA9IDEw
MjsKLSAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAocGxuYW1lLCAiSVNBQyIpID09IDAgJiYgcGxm
cmVxID09IDE2MDAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5h
bWUsICJJU0FDIikgJiYgcGxmcmVxID09IDE2MDAwKSB7CiAgICAgKnBsdHlwZSA9IDEwMzsKLSAg
fSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAocGxuYW1lLCAiSVNBQyIpID09IDAgJiYgcGxmcmVxID09
IDMyMDAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJJ
U0FDIikgJiYgcGxmcmVxID09IDMyMDAwKSB7CiAgICAgKnBsdHlwZSA9IDEwNDsKLSAgfSBlbHNl
IGlmIChTVFJfQ0FTRV9DTVAocGxuYW1lLCAidGVsZXBob25lLWV2ZW50IikgPT0gMCAmJiBwbGZy
ZXEgPT0gODAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1l
LCAidGVsZXBob25lLWV2ZW50IikgJiYKKyAgICAgICAgICAgICBwbGZyZXEgPT0gODAwMCkgewog
ICAgICpwbHR5cGUgPSAxMDY7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgInRl
bGVwaG9uZS1ldmVudCIpID09IDAgJiYgcGxmcmVxID09IDE2MDAwKSB7CisgIH0gZWxzZSBpZiAo
YWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSAmJgorICAg
ICAgICAgICAgIHBsZnJlcSA9PSAxNjAwMCkgewogICAgICpwbHR5cGUgPSAxMTQ7Ci0gIH0gZWxz
ZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgInRlbGVwaG9uZS1ldmVudCIpID09IDAgJiYgcGxm
cmVxID09IDMyMDAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5h
bWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSAmJgorICAgICAgICAgICAgIHBsZnJlcSA9PSAzMjAwMCkg
ewogICAgICpwbHR5cGUgPSAxMTU7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwg
InRlbGVwaG9uZS1ldmVudCIpID09IDAgJiYgcGxmcmVxID09IDQ4MDAwKSB7CisgIH0gZWxzZSBp
ZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSAmJgor
ICAgICAgICAgICAgIHBsZnJlcSA9PSA0ODAwMCkgewogICAgICpwbHR5cGUgPSAxMTY7Ci0gIH0g
ZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgInJlZCIpID09IDApIHsKKyAgfSBlbHNlIGlm
IChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgInJlZCIpKSB7CiAgICAgKnBsdHlwZSA9
IDExNzsKLSAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAocGxuYW1lLCAiTDE2IikgPT0gMCAmJiBw
bGZyZXEgPT0gODAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxu
YW1lLCAiTDE2IikgJiYgcGxmcmVxID09IDgwMDApIHsKICAgICAqcGx0eXBlID0gOTM7Ci0gIH0g
ZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgIkwxNiIpID09IDAgJiYgcGxmcmVxID09IDE2
MDAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJMMTYi
KSAmJiBwbGZyZXEgPT0gMTYwMDApIHsKICAgICAqcGx0eXBlID0gOTQ7Ci0gIH0gZWxzZSBpZiAo
U1RSX0NBU0VfQ01QKHBsbmFtZSwgIkwxNiIpID09IDAgJiYgcGxmcmVxID09IDMyMDAwKSB7Cisg
IH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJMMTYiKSAmJiBwbGZy
ZXEgPT0gMzIwMDApIHsKICAgICAqcGx0eXBlID0gOTU7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0Vf
Q01QKHBsbmFtZSwgIkc3MjIiKSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdu
b3JlQ2FzZShwbG5hbWUsICJHNzIyIikpIHsKICAgICAqcGx0eXBlID0gOTsKICAgfSBlbHNlIHsK
ICAgICAvLyBEb24ndCB1c2UgYW55IG90aGVyIGNvZGVjcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Fj
bTIvYWNtX3JlY2VpdmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuY2MKaW5kZXggZjYz
MTc0NmI4OGY0YmZiOGU1MGJhYWRiZDM2ZTI5NTBlMmU0M2ZkYi4uZDNhZjdjMDM0MTg4NTFhMTZj
NDliZmMzMjU0Y2FjYjJhYjNkMGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuY2MKQEAgLTEwLDIxICsxMCwyMSBA
QAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuaCIK
IAotI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gbWFsbG9jCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+
ICAvLyBzb3J0CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j
bHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmlu
Z3MvbWF0Y2guaCIKKyNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKLSNpbmNsdWRlICJjb21tb25fYXVk
aW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5Lmgi
Ci0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NhbGxfc3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvaW5jbHVkZS9uZXRlcS5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX2RlY29kZXJfZW51bS5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZl
X2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9hdWRpb19mb3JtYXRf
dG9fc3RyaW5nLmgiCkBAIC05Miw3ICs5Miw3IEBAIGludCBBY21SZWNlaXZlcjo6SW5zZXJ0UGFj
a2V0KGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciYgcnRwX2hlYWRlciwKICAgICB9CiAgICAgcmVjZWl2
ZV90aW1lc3RhbXAgPSBOb3dJblRpbWVzdGFtcChjaS0+cGxmcmVxKTsKIAotICAgIGlmIChTVFJf
Q0FTRV9DTVAoY2ktPnBsbmFtZSwgImNuIikgPT0gMCkgeworICAgIGlmIChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKGNpLT5wbG5hbWUsICJjbiIpKSB7CiAgICAgICBpZiAobGFzdF9hdWRpb19kZWNv
ZGVyXyAmJiBsYXN0X2F1ZGlvX2RlY29kZXJfLT5jaGFubmVscyA+IDEpIHsKICAgICAgICAgLy8g
VGhpcyBpcyBhIENORyBhbmQgdGhlIGF1ZGlvIGNvZGVjIGlzIG5vdCBtb25vLCBzbyBza2lwIHB1
c2hpbmcgaW4KICAgICAgICAgLy8gcGFja2V0cyBpbnRvIE5ldEVxLgpAQCAtMzQ1LDYgKzM0NSwx
MyBAQCB2b2lkIEFjbVJlY2VpdmVyOjpHZXROZXR3b3JrU3RhdGlzdGljcyhOZXR3b3JrU3RhdGlz
dGljcyogYWNtX3N0YXQpIHsKICAgYWNtX3N0YXQtPmNvbmNlYWxlZFNhbXBsZXMgPSBuZXRlcV9s
aWZldGltZV9zdGF0LmNvbmNlYWxlZF9zYW1wbGVzOwogICBhY21fc3RhdC0+Y29uY2VhbG1lbnRF
dmVudHMgPSBuZXRlcV9saWZldGltZV9zdGF0LmNvbmNlYWxtZW50X2V2ZW50czsKICAgYWNtX3N0
YXQtPmppdHRlckJ1ZmZlckRlbGF5TXMgPSBuZXRlcV9saWZldGltZV9zdGF0LmppdHRlcl9idWZm
ZXJfZGVsYXlfbXM7CisgIGFjbV9zdGF0LT5kZWxheWVkUGFja2V0T3V0YWdlU2FtcGxlcyA9Cisg
ICAgICBuZXRlcV9saWZldGltZV9zdGF0LmRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzOwor
CisgIE5ldEVxT3BlcmF0aW9uc0FuZFN0YXRlIG5ldGVxX29wZXJhdGlvbnNfYW5kX3N0YXRlID0K
KyAgICAgIG5ldGVxXy0+R2V0T3BlcmF0aW9uc0FuZFN0YXRlKCk7CisgIGFjbV9zdGF0LT5wYWNr
ZXRCdWZmZXJGbHVzaGVzID0KKyAgICAgIG5ldGVxX29wZXJhdGlvbnNfYW5kX3N0YXRlLnBhY2tl
dF9idWZmZXJfZmx1c2hlczsKIH0KIAogaW50IEFjbVJlY2VpdmVyOjpEZWNvZGVyQnlQYXlsb2Fk
VHlwZSh1aW50OF90IHBheWxvYWRfdHlwZSwKQEAgLTM5MSw3ICszOTgsNyBAQCBjb25zdCBhYnNs
OjpvcHRpb25hbDxDb2RlY0luc3Q+IEFjbVJlY2VpdmVyOjpSdHBIZWFkZXJUb0RlY29kZXIoCiAg
ICAgdWludDhfdCBmaXJzdF9wYXlsb2FkX2J5dGUpIGNvbnN0IHsKICAgY29uc3QgYWJzbDo6b3B0
aW9uYWw8Q29kZWNJbnN0PiBjaSA9CiAgICAgICBuZXRlcV8tPkdldERlY29kZXIocnRwX2hlYWRl
ci5wYXlsb2FkVHlwZSk7Ci0gIGlmIChjaSAmJiBTVFJfQ0FTRV9DTVAoY2ktPnBsbmFtZSwgInJl
ZCIpID09IDApIHsKKyAgaWYgKGNpICYmIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY2ktPnBsbmFt
ZSwgInJlZCIpKSB7CiAgICAgLy8gVGhpcyBpcyBhIFJFRCBwYWNrZXQuIEdldCB0aGUgcGF5bG9h
ZCBvZiB0aGUgYXVkaW8gY29kZWMuCiAgICAgcmV0dXJuIG5ldGVxXy0+R2V0RGVjb2RlcihmaXJz
dF9wYXlsb2FkX2J5dGUgJiAweDdmKTsKICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Fj
bTIvYWNtX3JlY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlci5oCmluZGV4IGEyYWU3
MjNkZWVlNmFjZGJjN2Y0M2ZmMmYzMjJjOGZmZTdjNDI0OGQuLjhlN2Q4Mzk3OGMwZDdhMTNhMzli
NjJiOTIxOWNkNGI0ZTMwYTMwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lm
bmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19BQ00yX0FDTV9SRUNFSVZFUl9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX0NPRElOR19BQ00yX0FDTV9SRUNFSVZFUl9IXwogCisjaW5jbHVkZSA8c3Rk
aW50Lmg+CiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJp
bmc+CkBAIC0xOCwxOSArMTksMjEgQEAKIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgotI2luY2x1ZGUgImFwaS9hdWRpby9hdWRp
b19mcmFtZS5oIgotI2luY2x1ZGUgImNvbW1vbl9hdWRpby92YWQvaW5jbHVkZS93ZWJydGNfdmFk
LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCisjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9hY20yL2NhbGxfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
cml0aWNhbHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNzIENsb2NrOwogc3RydWN0IENvZGVjSW5z
dDsKIGNsYXNzIE5ldEVxOworc3RydWN0IFJUUEhlYWRlcjsKK3N0cnVjdCBXZWJSdGNSVFBIZWFk
ZXI7CiAKIG5hbWVzcGFjZSBhY20yIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVj
ZWl2ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlcl91bml0dGVzdC5jYwpp
bmRleCAyOWYyYTQ1NjY5YjNkOTlmMjFlZGMwNDAyZDE2YzFmZWQwYmUxZjExLi40NjM4NGZlYmI1
NzQ5ZjQ1ZDBlZDJkYzcxNTUzZTk0NDQwOTM5NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2Fj
bV9yZWNlaXZlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlcl91bml0
dGVzdC5jYwpAQCAtNzMsMTIgKzczLDEyIEBAIGNsYXNzIEFjbVJlY2VpdmVyVGVzdE9sZEFwaSA6
IHB1YmxpYyBBdWRpb1BhY2tldGl6YXRpb25DYWxsYmFjaywKICAgICAvLyBJZiB3ZSBoYXZlIGEg
Y29tcGF0aWJsZSBDTiBzcGVjaWZpY2F0aW9uLCBzdGFjayBhIENORyBvbiB0b3AuCiAgICAgYXV0
byBpdCA9IGNuZ19wYXlsb2FkX3R5cGVzLmZpbmQoaW5mby5zYW1wbGVfcmF0ZV9oeik7CiAgICAg
aWYgKGl0ICE9IGNuZ19wYXlsb2FkX3R5cGVzLmVuZCgpKSB7Ci0gICAgICBBdWRpb0VuY29kZXJD
bmc6OkNvbmZpZyBjb25maWc7CisgICAgICBBdWRpb0VuY29kZXJDbmdDb25maWcgY29uZmlnOwog
ICAgICAgY29uZmlnLnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKGVuYyk7CiAgICAgICBjb25m
aWcubnVtX2NoYW5uZWxzID0gMTsKICAgICAgIGNvbmZpZy5wYXlsb2FkX3R5cGUgPSBpdC0+c2Vj
b25kOwogICAgICAgY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkTm9ybWFsOwotICAgICAgZW5j
ID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyQ25nPihzdGQ6Om1vdmUoY29uZmlnKSk7
CisgICAgICBlbmMgPSBDcmVhdGVDb21mb3J0Tm9pc2VFbmNvZGVyKHN0ZDo6bW92ZShjb25maWcp
KTsKICAgICB9CiAKICAgICAvLyBBY3R1YWxseSBzdGFydCB1c2luZyB0aGUgbmV3IGVuY29kZXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2Fj
bV9yZXNhbXBsZXIuY2MKaW5kZXggYzBiMjA2NDQ1Mzc1OWNkNGZkYmYxNjdiMWFkYzViMzI0MDdj
YjRiMC4uY2EzNTgzZTMyY2RlYTQ2NGI5OTQ2YzZhYjljOGM1ZmU1YzM3NGM1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvYWNtMi9hY21fcmVzYW1wbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jlc2Ft
cGxlci5jYwpAQCAtMTMsNyArMTMsNiBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUg
PHN0cmluZy5oPgogCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9pbmNsdWRlL3Jl
c2FtcGxlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Fj
bTIvYWNtX3Jlc2FtcGxlci5oCmluZGV4IDkwNGVhNTI0Zjg4MzlhNjA0ZGE4YTM4NmY3YWE1MjQ3
NDU3YWRmODMuLjk2YmE5M2E3NjIyOTk1Y2U5YWNhMzE1YmY1YWFhZDkzNDk0YmQ2ZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jl
c2FtcGxlci5oCkBAIC0xMSw2ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5H
X0FDTTJfQUNNX1JFU0FNUExFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19BQ00y
X0FDTV9SRVNBTVBMRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGlu
dC5oPgorCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9pbmNsdWRlL3B1c2hfcmVz
YW1wbGVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9h
dWRpb19jb2RpbmdfbW9kdWxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hdWRpb19jb2RpbmdfbW9kdWxlLmNj
CmluZGV4IDYwYWZlYjY5YmRlZDM5Y2ZjMzdmMjRmYzNmNzUxMDUzOWM5YmNjMTIuLmMwYWFiM2Ez
MGZhNTM5YTNiYjkwZWE4YjEzMGZkYjAyN2Y1N2NjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIv
YXVkaW9fY29kaW5nX21vZHVsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2F1ZGlvX2NvZGluZ19tb2R1
bGUuY2MKQEAgLTEwLDI4ICsxMCwyOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCiAKKyNpbmNsdWRlIDxhc3NlcnQuaD4K
ICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KIAorI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9tYXRjaC5oIgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVjX21hbmFnZXIuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvaW5j
bHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21v
ZHVsZV9jb21tb25fdHlwZXNfcHVibGljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGlj
YWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90
aHJlYWRfYW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9t
ZXRyaWNzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBuYW1lc3BhY2UgewogCi1zdHJ1Y3Qg
RW5jb2RlckZhY3RvcnkgewotICBBdWRpb0VuY29kZXIqIGV4dGVybmFsX3NwZWVjaF9lbmNvZGVy
ID0gbnVsbHB0cjsKLSAgYWNtMjo6Q29kZWNNYW5hZ2VyIGNvZGVjX21hbmFnZXI7Ci0gIGFjbTI6
OlJlbnRBQ29kZWMgcmVudF9hX2NvZGVjOwotfTsKLQogY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGVJ
bXBsIGZpbmFsIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlIHsKICBwdWJsaWM6CiAgIGV4cGxp
Y2l0IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbChjb25zdCBBdWRpb0NvZGluZ01vZHVsZTo6Q29uZmln
JiBjb25maWcpOwpAQCAtNDEsMTIgKzQyLDYgQEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGVJbXBs
IGZpbmFsIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlIHsKICAgLy8gICBTZW5kZXIKICAgLy8K
IAotICAvLyBDYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciBDb2RlYywgQ05HLCBSRUQu
Ci0gIGludCBSZWdpc3RlclNlbmRDb2RlYyhjb25zdCBDb2RlY0luc3QmIHNlbmRfY29kZWMpIG92
ZXJyaWRlOwotCi0gIHZvaWQgUmVnaXN0ZXJFeHRlcm5hbFNlbmRDb2RlYygKLSAgICAgIEF1ZGlv
RW5jb2RlciogZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXIpIG92ZXJyaWRlOwotCiAgIHZvaWQgTW9k
aWZ5RW5jb2RlcihydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Vu
Y29kZXI+Kik+CiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIpIG92ZXJyaWRlOwog
CkBAIC02NSwyNiArNjAsMTAgQEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGVJbXBsIGZpbmFsIDog
cHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlIHsKICAgLy8gQWRkIDEwIG1zIG9mIHJhdyAoUENNKSBh
dWRpbyBkYXRhIHRvIHRoZSBlbmNvZGVyLgogICBpbnQgQWRkMTBNc0RhdGEoY29uc3QgQXVkaW9G
cmFtZSYgYXVkaW9fZnJhbWUpIG92ZXJyaWRlOwogCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0gIC8vIChSRUQpIFJlZHVuZGFudCBDb2RpbmcKLSAgLy8KLQot
ICAvLyBDb25maWd1cmUgUkVEIHN0YXR1cyBpLmUuIG9uL29mZi4KLSAgaW50IFNldFJFRFN0YXR1
cyhib29sIGVuYWJsZV9yZWQpIG92ZXJyaWRlOwotCi0gIC8vIEdldCBSRUQgc3RhdHVzLgotICBi
b29sIFJFRFN0YXR1cygpIGNvbnN0IG92ZXJyaWRlOwotCiAgIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgIC8vIChGRUMpIEZvcndhcmQgRXJyb3IgQ29ycmVjdGlv
biAoY29kZWMgaW50ZXJuYWwpCiAgIC8vCiAKLSAgLy8gQ29uZmlndXJlIEZFQyBzdGF0dXMgaS5l
LiBvbi9vZmYuCi0gIGludCBTZXRDb2RlY0ZFQyhib29sIGVuYWJsZWRfY29kZWNfZmVjKSBvdmVy
cmlkZTsKLQotICAvLyBHZXQgRkVDIHN0YXR1cy4KLSAgYm9vbCBDb2RlY0ZFQygpIGNvbnN0IG92
ZXJyaWRlOwotCiAgIC8vIFNldCB0YXJnZXQgcGFja2V0IGxvc3MgcmF0ZQogICBpbnQgU2V0UGFj
a2V0TG9zc1JhdGUoaW50IGxvc3NfcmF0ZSkgb3ZlcnJpZGU7CiAKQEAgLTk0LDE0ICs3Myw2IEBA
IGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0NvZGluZ01v
ZHVsZSB7CiAgIC8vICAgKENORykgQ29tZm9ydCBOb2lzZSBHZW5lcmF0aW9uCiAgIC8vCiAKLSAg
aW50IFNldFZBRChib29sIGVuYWJsZV9kdHggPSB0cnVlLAotICAgICAgICAgICAgIGJvb2wgZW5h
YmxlX3ZhZCA9IGZhbHNlLAotICAgICAgICAgICAgIEFDTVZBRE1vZGUgbW9kZSA9IFZBRE5vcm1h
bCkgb3ZlcnJpZGU7Ci0KLSAgaW50IFZBRChib29sKiBkdHhfZW5hYmxlZCwKLSAgICAgICAgICBi
b29sKiB2YWRfZW5hYmxlZCwKLSAgICAgICAgICBBQ01WQURNb2RlKiBtb2RlKSBjb25zdCBvdmVy
cmlkZTsKLQogICBpbnQgUmVnaXN0ZXJWQURDYWxsYmFjayhBQ01WQURDYWxsYmFjayogdmFkX2Nh
bGxiYWNrKSBvdmVycmlkZTsKIAogICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwpAQCAtMTIyLDExICs5Myw2IEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbCBm
aW5hbCA6IHB1YmxpYyBBdWRpb0NvZGluZ01vZHVsZSB7CiAgIGJvb2wgUmVnaXN0ZXJSZWNlaXZl
Q29kZWMoaW50IHJ0cF9wYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU2RwQXVkaW9Gb3JtYXQmIGF1ZGlvX2Zvcm1hdCkgb3ZlcnJpZGU7CiAKLSAgaW50IFJl
Z2lzdGVyUmVjZWl2ZUNvZGVjKGNvbnN0IENvZGVjSW5zdCYgcmVjZWl2ZV9jb2RlYykgb3ZlcnJp
ZGU7Ci0gIGludCBSZWdpc3RlclJlY2VpdmVDb2RlYygKLSAgICAgIGNvbnN0IENvZGVjSW5zdCYg
cmVjZWl2ZV9jb2RlYywKLSAgICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0RlY29kZXI+KCk+IGlzYWNfZmFjdG9yeSkgb3ZlcnJpZGU7Ci0KICAgaW50IFJlZ2lzdGVy
RXh0ZXJuYWxSZWNlaXZlQ29kZWMoaW50IHJ0cF9wYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvRGVjb2RlciogZXh0ZXJuYWxfZGVjb2RlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6LApAQCAt
MjE0LDExICsxODAsNiBAQCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZUltcGwgZmluYWwgOiBwdWJs
aWMgQXVkaW9Db2RpbmdNb2R1bGUgewogICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGhpc3RvZ3JhbV9u
YW1lXzsKICAgfTsKIAotICBpbnQgUmVnaXN0ZXJSZWNlaXZlQ29kZWNVbmxvY2tlZCgKLSAgICAg
IGNvbnN0IENvZGVjSW5zdCYgY29kZWMsCi0gICAgICBydGM6OkZ1bmN0aW9uVmlldzxzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9EZWNvZGVyPigpPiBpc2FjX2ZhY3RvcnkpCi0gICAgICBSVENfRVhDTFVT
SVZFX0xPQ0tTX1JFUVVJUkVEKGFjbV9jcml0X3NlY3RfKTsKLQogICBpbnQgQWRkMTBNc0RhdGFJ
bnRlcm5hbChjb25zdCBBdWRpb0ZyYW1lJiBhdWRpb19mcmFtZSwgSW5wdXREYXRhKiBpbnB1dF9k
YXRhKQogICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChhY21fY3JpdF9zZWN0Xyk7
CiAgIGludCBFbmNvZGUoY29uc3QgSW5wdXREYXRhJiBpbnB1dF9kYXRhKQpAQCAtMjU2LDEyICsy
MTcsNyBAQCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZUltcGwgZmluYWwgOiBwdWJsaWMgQXVkaW9D
b2RpbmdNb2R1bGUgewogICBhY20yOjpBY21SZWNlaXZlciByZWNlaXZlcl87ICAvLyBBY21SZWNl
aXZlciBoYXMgaXQncyBvd24gaW50ZXJuYWwgbG9jay4KICAgQ2hhbmdlTG9nZ2VyIGJpdHJhdGVf
bG9nZ2VyXyBSVENfR1VBUkRFRF9CWShhY21fY3JpdF9zZWN0Xyk7CiAKLSAgc3RkOjp1bmlxdWVf
cHRyPEVuY29kZXJGYWN0b3J5PiBlbmNvZGVyX2ZhY3RvcnlfCi0gICAgICBSVENfR1VBUkRFRF9C
WShhY21fY3JpdF9zZWN0Xyk7Ci0KLSAgLy8gQ3VycmVudCBlbmNvZGVyIHN0YWNrLCBlaXRoZXIg
b2J0YWluZWQgZnJvbQotICAvLyBlbmNvZGVyX2ZhY3RvcnlfLT5yZW50X2FfY29kZWMuUmVudEVu
Y29kZXJTdGFjayBvciBwcm92aWRlZCBieSBhIGNhbGwgdG8KLSAgLy8gUmVnaXN0ZXJFbmNvZGVy
LgorICAvLyBDdXJyZW50IGVuY29kZXIgc3RhY2ssIHByb3ZpZGVkIGJ5IGEgY2FsbCB0byBSZWdp
c3RlckVuY29kZXIuCiAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29kZXJfc3Rh
Y2tfIFJUQ19HVUFSREVEX0JZKGFjbV9jcml0X3NlY3RfKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9EZWNvZGVyPiBpc2FjX2RlY29kZXJfMTZrXwpAQCAtMzk3LDI4ICszNTMsNiBAQCBjbGFz
cyBSYXdBdWRpb0VuY29kZXJXcmFwcGVyIGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7CiAg
IEF1ZGlvRW5jb2RlciogZW5jXzsKIH07CiAKLS8vIFJldHVybiBmYWxzZSBvbiBlcnJvci4KLWJv
b2wgQ3JlYXRlU3BlZWNoRW5jb2RlcklmTmVjZXNzYXJ5KEVuY29kZXJGYWN0b3J5KiBlZikgewot
ICBhdXRvKiBzcCA9IGVmLT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1zKCk7Ci0gIGlmIChz
cC0+c3BlZWNoX2VuY29kZXIpIHsKLSAgICAvLyBEbyBub3RoaW5nOyB3ZSBhbHJlYWR5IGhhdmUg
YSBzcGVlY2ggZW5jb2Rlci4KLSAgfSBlbHNlIGlmIChlZi0+Y29kZWNfbWFuYWdlci5HZXRDb2Rl
Y0luc3QoKSkgewotICAgIFJUQ19EQ0hFQ0soIWVmLT5leHRlcm5hbF9zcGVlY2hfZW5jb2Rlcik7
Ci0gICAgLy8gV2UgaGF2ZSBubyBzcGVlY2ggZW5jb2RlciwgYnV0IHdlIGhhdmUgYSBzcGVjaWZp
Y2F0aW9uIGZvciBtYWtpbmcgb25lLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+
IGVuYyA9Ci0gICAgICAgIGVmLT5yZW50X2FfY29kZWMuUmVudEVuY29kZXIoKmVmLT5jb2RlY19t
YW5hZ2VyLkdldENvZGVjSW5zdCgpKTsKLSAgICBpZiAoIWVuYykKLSAgICAgIHJldHVybiBmYWxz
ZTsgIC8vIEVuY29kZXIgc3BlYyB3YXMgYmFkLgotICAgIHNwLT5zcGVlY2hfZW5jb2RlciA9IHN0
ZDo6bW92ZShlbmMpOwotICB9IGVsc2UgaWYgKGVmLT5leHRlcm5hbF9zcGVlY2hfZW5jb2Rlcikg
ewotICAgIFJUQ19EQ0hFQ0soIWVmLT5jb2RlY19tYW5hZ2VyLkdldENvZGVjSW5zdCgpKTsKLSAg
ICAvLyBXZSBoYXZlIGFuIGV4dGVybmFsIHNwZWVjaCBlbmNvZGVyLgotICAgIHNwLT5zcGVlY2hf
ZW5jb2RlciA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KAotICAgICAgICBuZXcgUmF3
QXVkaW9FbmNvZGVyV3JhcHBlcihlZi0+ZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXIpKTsKLSAgfQot
ICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OkNoYW5nZUxv
Z2dlcjo6TWF5YmVMb2coaW50IHZhbHVlKSB7CiAgIGlmICh2YWx1ZSAhPSBsYXN0X3ZhbHVlXyB8
fCBmaXJzdF90aW1lXykgewogICAgIGZpcnN0X3RpbWVfID0gZmFsc2U7CkBAIC00MzMsNyArMzY3
LDYgQEAgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpBdWRpb0NvZGluZ01vZHVsZUltcGwoCiAgICAg
ICBleHBlY3RlZF9pbl90c18oMHhEODdGM0Y5RiksCiAgICAgICByZWNlaXZlcl8oY29uZmlnKSwK
ICAgICAgIGJpdHJhdGVfbG9nZ2VyXygiV2ViUlRDLkF1ZGlvLlRhcmdldEJpdHJhdGVJbkticHMi
KSwKLSAgICAgIGVuY29kZXJfZmFjdG9yeV8obmV3IEVuY29kZXJGYWN0b3J5KSwKICAgICAgIGVu
Y29kZXJfc3RhY2tfKG51bGxwdHIpLAogICAgICAgcHJldmlvdXNfcGx0eXBlXygyNTUpLAogICAg
ICAgcmVjZWl2ZXJfaW5pdGlhbGl6ZWRfKGZhbHNlKSwKQEAgLTU0MSw2OSArNDc0LDI5IEBAIGlu
dDMyX3QgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpFbmNvZGUoY29uc3QgSW5wdXREYXRhJiBpbnB1
dF9kYXRhKSB7CiAvLyAgIFNlbmRlcgogLy8KIAotLy8gQ2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcyBmb3IgQ29kZWMsIENORywgUkVELgotaW50IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6UmVn
aXN0ZXJTZW5kQ29kZWMoY29uc3QgQ29kZWNJbnN0JiBzZW5kX2NvZGVjKSB7Ci0gIHJ0Yzo6Q3Jp
dFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgaWYgKCFlbmNvZGVyX2ZhY3RvcnlfLT5j
b2RlY19tYW5hZ2VyLlJlZ2lzdGVyRW5jb2RlcihzZW5kX2NvZGVjKSkgewotICAgIHJldHVybiAt
MTsKLSAgfQotICBpZiAoZW5jb2Rlcl9mYWN0b3J5Xy0+Y29kZWNfbWFuYWdlci5HZXRDb2RlY0lu
c3QoKSkgewotICAgIGVuY29kZXJfZmFjdG9yeV8tPmV4dGVybmFsX3NwZWVjaF9lbmNvZGVyID0g
bnVsbHB0cjsKLSAgfQotICBpZiAoIUNyZWF0ZVNwZWVjaEVuY29kZXJJZk5lY2Vzc2FyeShlbmNv
ZGVyX2ZhY3RvcnlfLmdldCgpKSkgewotICAgIHJldHVybiAtMTsKLSAgfQotICBhdXRvKiBzcCA9
IGVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMoKTsKLSAgaWYg
KHNwLT5zcGVlY2hfZW5jb2RlcikKLSAgICBlbmNvZGVyX3N0YWNrXyA9IGVuY29kZXJfZmFjdG9y
eV8tPnJlbnRfYV9jb2RlYy5SZW50RW5jb2RlclN0YWNrKHNwKTsKLSAgcmV0dXJuIDA7Ci19Ci0K
LXZvaWQgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpSZWdpc3RlckV4dGVybmFsU2VuZENvZGVjKAot
ICAgIEF1ZGlvRW5jb2RlciogZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXIpIHsKLSAgcnRjOjpDcml0
U2NvcGUgbG9jaygmYWNtX2NyaXRfc2VjdF8pOwotICBlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19t
YW5hZ2VyLlVuc2V0Q29kZWNJbnN0KCk7Ci0gIGVuY29kZXJfZmFjdG9yeV8tPmV4dGVybmFsX3Nw
ZWVjaF9lbmNvZGVyID0gZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXI7Ci0gIFJUQ19DSEVDSyhDcmVh
dGVTcGVlY2hFbmNvZGVySWZOZWNlc3NhcnkoZW5jb2Rlcl9mYWN0b3J5Xy5nZXQoKSkpOwotICBh
dXRvKiBzcCA9IGVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMo
KTsKLSAgUlRDX0NIRUNLKHNwLT5zcGVlY2hfZW5jb2Rlcik7Ci0gIGVuY29kZXJfc3RhY2tfID0g
ZW5jb2Rlcl9mYWN0b3J5Xy0+cmVudF9hX2NvZGVjLlJlbnRFbmNvZGVyU3RhY2soc3ApOwotfQot
CiB2b2lkIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6TW9kaWZ5RW5jb2RlcigKICAgICBydGM6OkZ1
bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+IG1vZGlmaWVy
KSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLQotICAvLyBXaXBl
IHRoZSBlbmNvZGVyIGZhY3RvcnksIHNvIHRoYXQgZXZlcnl0aGluZyB0aGF0IHJlbGllcyBvbiBp
dCB3aWxsIGZhaWwuCi0gIC8vIFdlIGRvbid0IHdhbnQgdGhlIGNvbXBsZXhpdHkgb2Ygc3VwcG9y
dGluZyBzd2FwcGluZyBiYWNrIGFuZCBmb3J0aC4KLSAgaWYgKGVuY29kZXJfZmFjdG9yeV8pIHsK
LSAgICBlbmNvZGVyX2ZhY3RvcnlfLnJlc2V0KCk7Ci0gICAgUlRDX0NIRUNLKCFlbmNvZGVyX3N0
YWNrXyk7ICAvLyBFbnN1cmUgd2UgaGFkbid0IHN0YXJ0ZWQgdXNpbmcgdGhlIGZhY3RvcnkuCi0g
IH0KLQogICBtb2RpZmllcigmZW5jb2Rlcl9zdGFja18pOwogfQogCiAvLyBHZXQgY3VycmVudCBz
ZW5kIGNvZGVjLgogYWJzbDo6b3B0aW9uYWw8Q29kZWNJbnN0PiBBdWRpb0NvZGluZ01vZHVsZUlt
cGw6OlNlbmRDb2RlYygpIGNvbnN0IHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmYWNtX2NyaXRf
c2VjdF8pOwotICBpZiAoZW5jb2Rlcl9mYWN0b3J5XykgewotICAgIGF1dG8qIGNpID0gZW5jb2Rl
cl9mYWN0b3J5Xy0+Y29kZWNfbWFuYWdlci5HZXRDb2RlY0luc3QoKTsKLSAgICBpZiAoY2kpIHsK
LSAgICAgIHJldHVybiAqY2k7Ci0gICAgfQotICAgIENyZWF0ZVNwZWVjaEVuY29kZXJJZk5lY2Vz
c2FyeShlbmNvZGVyX2ZhY3RvcnlfLmdldCgpKTsKLSAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9FbmNvZGVyPiYgZW5jID0KLSAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xy0+Y29kZWNfbWFu
YWdlci5HZXRTdGFja1BhcmFtcygpLT5zcGVlY2hfZW5jb2RlcjsKLSAgICBpZiAoZW5jKSB7Ci0g
ICAgICByZXR1cm4gYWNtMjo6Q29kZWNNYW5hZ2VyOjpGb3JnZUNvZGVjSW5zdChlbmMuZ2V0KCkp
OwotICAgIH0KLSAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgaWYgKGVuY29kZXJfc3RhY2tf
KSB7CisgICAgQ29kZWNJbnN0IGNpOworICAgIGNpLmNoYW5uZWxzID0gZW5jb2Rlcl9zdGFja18t
Pk51bUNoYW5uZWxzKCk7CisgICAgY2kucGxmcmVxID0gZW5jb2Rlcl9zdGFja18tPlNhbXBsZVJh
dGVIeigpOworICAgIGNpLnBhY3NpemUgPSBydGM6OkNoZWNrZWREaXZFeGFjdCgKKyAgICAgICAg
c3RhdGljX2Nhc3Q8aW50PihlbmNvZGVyX3N0YWNrXy0+TWF4MTBNc0ZyYW1lc0luQVBhY2tldCgp
ICogY2kucGxmcmVxKSwKKyAgICAgICAgMTAwKTsKKyAgICBjaS5wbHR5cGUgPSAtMTsgIC8vIE5v
dCB2YWxpZC4KKyAgICBjaS5yYXRlID0gLTE7ICAgIC8vIE5vdCB2YWxpZC4KKyAgICBzdGF0aWMg
Y29uc3QgY2hhciBrTmFtZVtdID0gImV4dGVybmFsIjsKKyAgICBtZW1jcHkoY2kucGxuYW1lLCBr
TmFtZSwgc2l6ZW9mKGtOYW1lKSk7CisgICAgcmV0dXJuIGNpOwogICB9IGVsc2UgewotICAgIHJl
dHVybiBlbmNvZGVyX3N0YWNrXwotICAgICAgICAgICAgICAgPyBhYnNsOjpvcHRpb25hbDxDb2Rl
Y0luc3Q+KAotICAgICAgICAgICAgICAgICAgICAgYWNtMjo6Q29kZWNNYW5hZ2VyOjpGb3JnZUNv
ZGVjSW5zdChlbmNvZGVyX3N0YWNrXy5nZXQoKSkpCi0gICAgICAgICAgICAgICA6IGFic2w6Om51
bGxvcHQ7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CiAgIH0KIH0KIApAQCAtODAwLDU5ICs2
OTMsMTAgQEAgaW50IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6UHJlcHJvY2Vzc1RvQWRkRGF0YShj
b25zdCBBdWRpb0ZyYW1lJiBpbl9mcmFtZSwKICAgcmV0dXJuIDA7CiB9CiAKLS8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAgIChSRUQpIFJlZHVuZGFudCBDb2Rp
bmcKLS8vCi0KLWJvb2wgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpSRURTdGF0dXMoKSBjb25zdCB7
Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgcmV0dXJuIGVuY29k
ZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMoKS0+dXNlX3JlZDsKLX0K
LQotLy8gQ29uZmlndXJlIFJFRCBzdGF0dXMgaS5lIG9uL29mZi4KLWludCBBdWRpb0NvZGluZ01v
ZHVsZUltcGw6OlNldFJFRFN0YXR1cyhib29sIGVuYWJsZV9yZWQpIHsKLSNpZmRlZiBXRUJSVENf
Q09ERUNfUkVECi0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgQ3Jl
YXRlU3BlZWNoRW5jb2RlcklmTmVjZXNzYXJ5KGVuY29kZXJfZmFjdG9yeV8uZ2V0KCkpOwotICBp
ZiAoIWVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuU2V0Q29weVJlZChlbmFibGVfcmVk
KSkgewotICAgIHJldHVybiAtMTsKLSAgfQotICBhdXRvKiBzcCA9IGVuY29kZXJfZmFjdG9yeV8t
PmNvZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMoKTsKLSAgaWYgKHNwLT5zcGVlY2hfZW5jb2Rl
cikKLSAgICBlbmNvZGVyX3N0YWNrXyA9IGVuY29kZXJfZmFjdG9yeV8tPnJlbnRfYV9jb2RlYy5S
ZW50RW5jb2RlclN0YWNrKHNwKTsKLSAgcmV0dXJuIDA7Ci0jZWxzZQotICBSVENfTE9HKExTX1dB
Uk5JTkcpIDw8ICIgIFdFQlJUQ19DT0RFQ19SRUQgaXMgdW5kZWZpbmVkIjsKLSAgcmV0dXJuIC0x
OwotI2VuZGlmCi19Ci0KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CiAvLyAgIChGRUMpIEZvcndhcmQgRXJyb3IgQ29ycmVjdGlvbiAoY29kZWMgaW50ZXJuYWwpCiAv
LwogCi1ib29sIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6Q29kZWNGRUMoKSBjb25zdCB7Ci0gIHJ0
Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgcmV0dXJuIGVuY29kZXJfZmFj
dG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMoKS0+dXNlX2NvZGVjX2ZlYzsKLX0K
LQotaW50IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6U2V0Q29kZWNGRUMoYm9vbCBlbmFibGVfY29k
ZWNfZmVjKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgQ3Jl
YXRlU3BlZWNoRW5jb2RlcklmTmVjZXNzYXJ5KGVuY29kZXJfZmFjdG9yeV8uZ2V0KCkpOwotICBp
ZiAoIWVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuU2V0Q29kZWNGRUMoZW5hYmxlX2Nv
ZGVjX2ZlYykpIHsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgYXV0byogc3AgPSBlbmNvZGVyX2Zh
Y3RvcnlfLT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1zKCk7Ci0gIGlmIChzcC0+c3BlZWNo
X2VuY29kZXIpCi0gICAgZW5jb2Rlcl9zdGFja18gPSBlbmNvZGVyX2ZhY3RvcnlfLT5yZW50X2Ff
Y29kZWMuUmVudEVuY29kZXJTdGFjayhzcCk7Ci0gIGlmIChlbmFibGVfY29kZWNfZmVjKSB7Ci0g
ICAgcmV0dXJuIHNwLT51c2VfY29kZWNfZmVjID8gMCA6IC0xOwotICB9IGVsc2UgewotICAgIFJU
Q19EQ0hFQ0soIXNwLT51c2VfY29kZWNfZmVjKTsKLSAgICByZXR1cm4gMDsKLSAgfQotfQotCiBp
bnQgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpTZXRQYWNrZXRMb3NzUmF0ZShpbnQgbG9zc19yYXRl
KSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKICAgaWYgKEhhdmVW
YWxpZEVuY29kZXIoIlNldFBhY2tldExvc3NSYXRlIikpIHsKQEAgLTg2MSwzNiArNzA1LDYgQEAg
aW50IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6U2V0UGFja2V0TG9zc1JhdGUoaW50IGxvc3NfcmF0
ZSkgewogICByZXR1cm4gMDsKIH0KIAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KLS8vICAgKFZBRCkgVm9pY2UgQWN0aXZpdHkgRGV0ZWN0aW9uCi0vLwotaW50IEF1
ZGlvQ29kaW5nTW9kdWxlSW1wbDo6U2V0VkFEKGJvb2wgZW5hYmxlX2R0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZV92YWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQUNNVkFETW9kZSBtb2RlKSB7Ci0gIC8vIE5vdGU6IHxlbmFibGVf
dmFkfCBpcyBub3QgdXNlZDsgVkFEIGlzIGVuYWJsZWQgYmFzZWQgb24gdGhlIERUWCBzZXR0aW5n
LgotICBSVENfRENIRUNLX0VRKGVuYWJsZV9kdHgsIGVuYWJsZV92YWQpOwotICBydGM6OkNyaXRT
Y29wZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0gIENyZWF0ZVNwZWVjaEVuY29kZXJJZk5lY2Vz
c2FyeShlbmNvZGVyX2ZhY3RvcnlfLmdldCgpKTsKLSAgaWYgKCFlbmNvZGVyX2ZhY3RvcnlfLT5j
b2RlY19tYW5hZ2VyLlNldFZBRChlbmFibGVfZHR4LCBtb2RlKSkgewotICAgIHJldHVybiAtMTsK
LSAgfQotICBhdXRvKiBzcCA9IGVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0U3Rh
Y2tQYXJhbXMoKTsKLSAgaWYgKHNwLT5zcGVlY2hfZW5jb2RlcikKLSAgICBlbmNvZGVyX3N0YWNr
XyA9IGVuY29kZXJfZmFjdG9yeV8tPnJlbnRfYV9jb2RlYy5SZW50RW5jb2RlclN0YWNrKHNwKTsK
LSAgcmV0dXJuIDA7Ci19Ci0KLS8vIEdldCBWQUQvRFRYIHNldHRpbmdzLgotaW50IEF1ZGlvQ29k
aW5nTW9kdWxlSW1wbDo6VkFEKGJvb2wqIGR0eF9lbmFibGVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wqIHZhZF9lbmFibGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFDTVZBRE1vZGUqIG1vZGUpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgbG9jaygm
YWNtX2NyaXRfc2VjdF8pOwotICBjb25zdCBhdXRvKiBzcCA9IGVuY29kZXJfZmFjdG9yeV8tPmNv
ZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMoKTsKLSAgKmR0eF9lbmFibGVkID0gKnZhZF9lbmFi
bGVkID0gc3AtPnVzZV9jbmc7Ci0gICptb2RlID0gc3AtPnZhZF9tb2RlOwotICByZXR1cm4gMDsK
LX0KLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vICAgUmVj
ZWl2ZXIKIC8vCkBAIC05NDksNTkgKzc2Myw2IEBAIGJvb2wgQXVkaW9Db2RpbmdNb2R1bGVJbXBs
OjpSZWdpc3RlclJlY2VpdmVDb2RlYygKICAgcmV0dXJuIHJlY2VpdmVyXy5BZGRDb2RlYyhydHBf
cGF5bG9hZF90eXBlLCBhdWRpb19mb3JtYXQpOwogfQogCi1pbnQgQXVkaW9Db2RpbmdNb2R1bGVJ
bXBsOjpSZWdpc3RlclJlY2VpdmVDb2RlYyhjb25zdCBDb2RlY0luc3QmIGNvZGVjKSB7Ci0gIHJ0
Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgYXV0byogZWYgPSBlbmNvZGVy
X2ZhY3RvcnlfLmdldCgpOwotICByZXR1cm4gUmVnaXN0ZXJSZWNlaXZlQ29kZWNVbmxvY2tlZCgK
LSAgICAgIGNvZGVjLCBbJl0geyByZXR1cm4gZWYtPnJlbnRfYV9jb2RlYy5SZW50SXNhY0RlY29k
ZXIoY29kZWMucGxmcmVxKTsgfSk7Ci19Ci0KLWludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OlJl
Z2lzdGVyUmVjZWl2ZUNvZGVjKAotICAgIGNvbnN0IENvZGVjSW5zdCYgY29kZWMsCi0gICAgcnRj
OjpGdW5jdGlvblZpZXc8c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4oKT4gaXNhY19mYWN0
b3J5KSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgcmV0dXJu
IFJlZ2lzdGVyUmVjZWl2ZUNvZGVjVW5sb2NrZWQoY29kZWMsIGlzYWNfZmFjdG9yeSk7Ci19Ci0K
LWludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OlJlZ2lzdGVyUmVjZWl2ZUNvZGVjVW5sb2NrZWQo
Ci0gICAgY29uc3QgQ29kZWNJbnN0JiBjb2RlYywKLSAgICBydGM6OkZ1bmN0aW9uVmlldzxzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPigpPiBpc2FjX2ZhY3RvcnkpIHsKLSAgUlRDX0RDSEVD
SyhyZWNlaXZlcl9pbml0aWFsaXplZF8pOwotICBpZiAoY29kZWMuY2hhbm5lbHMgPiAyKSB7Ci0g
ICAgUlRDX0xPR19GKExTX0VSUk9SKSA8PCAiVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGNoYW5uZWxz
OiAiIDw8IGNvZGVjLmNoYW5uZWxzOwotICAgIHJldHVybiAtMTsKLSAgfQotCi0gIGF1dG8gY29k
ZWNfaWQgPSBhY20yOjpSZW50QUNvZGVjOjpDb2RlY0lkQnlQYXJhbXMoY29kZWMucGxuYW1lLCBj
b2RlYy5wbGZyZXEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29kZWMuY2hhbm5lbHMpOwotICBpZiAoIWNvZGVjX2lkKSB7Ci0gICAgUlRDX0xP
R19GKExTX0VSUk9SKQotICAgICAgICA8PCAiV3JvbmcgY29kZWMgcGFyYW1zIHRvIGJlIHJlZ2lz
dGVyZWQgYXMgcmVjZWl2ZSBjb2RlYyI7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIGF1dG8gY29k
ZWNfaW5kZXggPSBhY20yOjpSZW50QUNvZGVjOjpDb2RlY0luZGV4RnJvbUlkKCpjb2RlY19pZCk7
Ci0gIFJUQ19DSEVDSyhjb2RlY19pbmRleCkgPDwgIkludmFsaWQgY29kZWMgSUQ6ICIgPDwgc3Rh
dGljX2Nhc3Q8aW50PigqY29kZWNfaWQpOwotCi0gIC8vIENoZWNrIGlmIHRoZSBwYXlsb2FkLXR5
cGUgaXMgdmFsaWQuCi0gIGlmICghYWNtMjo6UmVudEFDb2RlYzo6SXNQYXlsb2FkVHlwZVZhbGlk
KGNvZGVjLnBsdHlwZSkpIHsKLSAgICBSVENfTE9HX0YoTFNfRVJST1IpIDw8ICJJbnZhbGlkIHBh
eWxvYWQgdHlwZSAiIDw8IGNvZGVjLnBsdHlwZSA8PCAiIGZvciAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICA8PCBjb2RlYy5wbG5hbWU7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0KLSAgQXVkaW9E
ZWNvZGVyKiBpc2FjX2RlY29kZXIgPSBudWxscHRyOwotICBpZiAoU1RSX0NBU0VfQ01QKGNvZGVj
LnBsbmFtZSwgImlzYWMiKSA9PSAwKSB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rl
cj4mIHNhdmVkX2lzYWNfZGVjb2RlciA9Ci0gICAgICAgIGNvZGVjLnBsZnJlcSA9PSAxNjAwMCA/
IGlzYWNfZGVjb2Rlcl8xNmtfIDogaXNhY19kZWNvZGVyXzMya187Ci0gICAgaWYgKCFzYXZlZF9p
c2FjX2RlY29kZXIpIHsKLSAgICAgIHNhdmVkX2lzYWNfZGVjb2RlciA9IGlzYWNfZmFjdG9yeSgp
OwotICAgIH0KLSAgICBpc2FjX2RlY29kZXIgPSBzYXZlZF9pc2FjX2RlY29kZXIuZ2V0KCk7Ci0g
IH0KLSAgcmV0dXJuIHJlY2VpdmVyXy5BZGRDb2RlYygqY29kZWNfaW5kZXgsIGNvZGVjLnBsdHlw
ZSwgY29kZWMuY2hhbm5lbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWMucGxm
cmVxLCBpc2FjX2RlY29kZXIsIGNvZGVjLnBsbmFtZSk7Ci19Ci0KIGludCBBdWRpb0NvZGluZ01v
ZHVsZUltcGw6OlJlZ2lzdGVyRXh0ZXJuYWxSZWNlaXZlQ29kZWMoCiAgICAgaW50IHJ0cF9wYXls
b2FkX3R5cGUsCiAgICAgQXVkaW9EZWNvZGVyKiBleHRlcm5hbF9kZWNvZGVyLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvYWNtMi9hdWRpb19jb2RpbmdfbW9kdWxlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNt
Mi9hdWRpb19jb2RpbmdfbW9kdWxlX3VuaXR0ZXN0LmNjCmluZGV4IDVhYzYxMDJjNjgyMDk5ODhh
ZGJiMDJiN2IxY2E1Y2MwNDhmZjA1MjcuLjRlMjYyZjdiMDM4YTNiZGY5ZjEzNmYzYTU2NGE0OTUy
YTdhMjZjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYXVkaW9fY29kaW5nX21vZHVsZV91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2F1ZGlvX2NvZGluZ19tb2R1bGVfdW5pdHRlc3QuY2MK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
b29scy9wYWNrZXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29s
cy9ydHBfZmlsZV9zb3VyY2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24u
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3Nh
Z2VkaWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25z
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCkBAIC00Miw3ICs0Myw2
IEBACiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCIKICNpbmNsdWRlICJydGNfYmFz
ZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVk
ZS9jbG9jay5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBw
ZXIuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9zbGVlcC5oIgogI2luY2x1
ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L21vY2tfYXVkaW9fZGVjb2Rlci5oIgpA
QCAtNDA4LDEyICs0MDgsMTIgQEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGVUZXN0V2l0aENvbWZv
cnROb2lzZU9sZEFwaQogICAgICAgICAgICAgICBhY21fLT5SZWdpc3RlclJlY2VpdmVDb2RlYygK
ICAgICAgICAgICAgICAgICAgIHJ0cF9wYXlsb2FkX3R5cGUsIFNkcEF1ZGlvRm9ybWF0KCJjbiIs
IGtTYW1wbGVSYXRlSHosIDEpKSk7CiAgICAgYWNtXy0+TW9kaWZ5RW5jb2RlcihbJl0oc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuYykgewotICAgICAgQXVkaW9FbmNvZGVyQ25nOjpD
b25maWcgY29uZmlnOworICAgICAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnIGNvbmZpZzsKICAgICAg
IGNvbmZpZy5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZSgqZW5jKTsKICAgICAgIGNvbmZpZy5u
dW1fY2hhbm5lbHMgPSAxOwogICAgICAgY29uZmlnLnBheWxvYWRfdHlwZSA9IHJ0cF9wYXlsb2Fk
X3R5cGU7CiAgICAgICBjb25maWcudmFkX21vZGUgPSBWYWQ6OmtWYWROb3JtYWw7Ci0gICAgICAq
ZW5jID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyQ25nPihzdGQ6Om1vdmUoY29uZmln
KSk7CisgICAgICAqZW5jID0gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2RlcihzdGQ6Om1vdmUoY29u
ZmlnKSk7CiAgICAgfSk7CiAgIH0KIApAQCAtNDgxLDcgKzQ4MSw2IEBAIGNsYXNzIEF1ZGlvQ29k
aW5nTW9kdWxlTXRUZXN0T2xkQXBpIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlVGVzdE9sZEFw
aSB7CiAgICAgICAgIHNlbmRfdGhyZWFkXyhDYlNlbmRUaHJlYWQsIHRoaXMsICJzZW5kIiksCiAg
ICAgICAgIGluc2VydF9wYWNrZXRfdGhyZWFkXyhDYkluc2VydFBhY2tldFRocmVhZCwgdGhpcywg
Imluc2VydF9wYWNrZXQiKSwKICAgICAgICAgcHVsbF9hdWRpb190aHJlYWRfKENiUHVsbEF1ZGlv
VGhyZWFkLCB0aGlzLCAicHVsbF9hdWRpbyIpLAotICAgICAgICB0ZXN0X2NvbXBsZXRlXyhFdmVu
dFdyYXBwZXI6OkNyZWF0ZSgpKSwKICAgICAgICAgc2VuZF9jb3VudF8oMCksCiAgICAgICAgIGlu
c2VydF9wYWNrZXRfY291bnRfKDApLAogICAgICAgICBwdWxsX2F1ZGlvX2NvdW50XygwKSwKQEAg
LTUxMiw4ICs1MTEsOCBAQCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZU10VGVzdE9sZEFwaSA6IHB1
YmxpYyBBdWRpb0NvZGluZ01vZHVsZVRlc3RPbGRBcGkgewogICAgIGluc2VydF9wYWNrZXRfdGhy
ZWFkXy5TdG9wKCk7CiAgIH0KIAotICBFdmVudFR5cGVXcmFwcGVyIFJ1blRlc3QoKSB7Ci0gICAg
cmV0dXJuIHRlc3RfY29tcGxldGVfLT5XYWl0KDEwICogNjAgKiAxMDAwKTsgIC8vIDEwIG1pbnV0
ZXMnIHRpbWVvdXQuCisgIGJvb2wgUnVuVGVzdCgpIHsKKyAgICByZXR1cm4gdGVzdF9jb21wbGV0
ZV8uV2FpdCgxMCAqIDYwICogMTAwMCk7ICAvLyAxMCBtaW51dGVzJyB0aW1lb3V0LgogICB9CiAK
ICAgdmlydHVhbCBib29sIFRlc3REb25lKCkgewpAQCAtNTM4LDEyICs1MzcsMTIgQEAgY2xhc3Mg
QXVkaW9Db2RpbmdNb2R1bGVNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVU
ZXN0T2xkQXBpIHsKICAgICBTbGVlcE1zKDEpOwogICAgIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkg
ewogICAgICAgLy8gRW5kIHRoZSB0ZXN0IGVhcmx5IGlmIGEgZmF0YWwgZmFpbHVyZSAoQVNTRVJU
XyopIGhhcyBvY2N1cnJlZC4KLSAgICAgIHRlc3RfY29tcGxldGVfLT5TZXQoKTsKKyAgICAgIHRl
c3RfY29tcGxldGVfLlNldCgpOwogICAgIH0KICAgICArK3NlbmRfY291bnRfOwogICAgIEluc2Vy
dEF1ZGlvQW5kVmVyaWZ5RW5jb2RpbmcoKTsKICAgICBpZiAoVGVzdERvbmUoKSkgewotICAgICAg
dGVzdF9jb21wbGV0ZV8tPlNldCgpOworICAgICAgdGVzdF9jb21wbGV0ZV8uU2V0KCk7CiAgICAg
fQogICAgIHJldHVybiB0cnVlOwogICB9CkBAIC01OTIsNyArNTkxLDcgQEAgY2xhc3MgQXVkaW9D
b2RpbmdNb2R1bGVNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVUZXN0T2xk
QXBpIHsKICAgcnRjOjpQbGF0Zm9ybVRocmVhZCBzZW5kX3RocmVhZF87CiAgIHJ0Yzo6UGxhdGZv
cm1UaHJlYWQgaW5zZXJ0X3BhY2tldF90aHJlYWRfOwogICBydGM6OlBsYXRmb3JtVGhyZWFkIHB1
bGxfYXVkaW9fdGhyZWFkXzsKLSAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4g
dGVzdF9jb21wbGV0ZV87CisgIHJ0Yzo6RXZlbnQgdGVzdF9jb21wbGV0ZV87CiAgIGludCBzZW5k
X2NvdW50XzsKICAgaW50IGluc2VydF9wYWNrZXRfY291bnRfOwogICBpbnQgcHVsbF9hdWRpb19j
b3VudF8gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CkBAIC02MDcsNyArNjA2LDcgQEAgY2xh
c3MgQXVkaW9Db2RpbmdNb2R1bGVNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1
bGVUZXN0T2xkQXBpIHsKICNkZWZpbmUgTUFZQkVfRG9UZXN0IERvVGVzdAogI2VuZGlmCiBURVNU
X0YoQXVkaW9Db2RpbmdNb2R1bGVNdFRlc3RPbGRBcGksIE1BWUJFX0RvVGVzdCkgewotICBFWFBF
Q1RfRVEoa0V2ZW50U2lnbmFsZWQsIFJ1blRlc3QoKSk7CisgIEVYUEVDVF9UUlVFKFJ1blRlc3Qo
KSk7CiB9CiAKIC8vIFRoaXMgaXMgYSBtdWx0aS10aHJlYWRlZCBBQ00gdGVzdCB1c2luZyBpU0FD
LiBUaGUgdGVzdCBlbmNvZGVzIGF1ZGlvCkBAIC03MTcsNyArNzE2LDcgQEAgY2xhc3MgQWNtSXNh
Y010VGVzdE9sZEFwaSA6IHB1YmxpYyBBdWRpb0NvZGluZ01vZHVsZU10VGVzdE9sZEFwaSB7CiAj
ZW5kaWYKICNpZiBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FDKSB8fCBkZWZpbmVkKFdFQlJUQ19D
T0RFQ19JU0FDRlgpCiBURVNUX0YoQWNtSXNhY010VGVzdE9sZEFwaSwgTUFZQkVfRG9UZXN0KSB7
Ci0gIEVYUEVDVF9FUShrRXZlbnRTaWduYWxlZCwgUnVuVGVzdCgpKTsKKyAgRVhQRUNUX1RSVUUo
UnVuVGVzdCgpKTsKIH0KICNlbmRpZgogCkBAIC03MzQsNyArNzMzLDYgQEAgY2xhc3MgQWNtUmVS
ZWdpc3RlcklzYWNNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVUZXN0T2xk
QXBpIHsKICAgICAgICAgY29kZWNfcmVnaXN0cmF0aW9uX3RocmVhZF8oQ2JDb2RlY1JlZ2lzdHJh
dGlvblRocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvZGVjX3JlZ2lzdHJhdGlvbiIpLAot
ICAgICAgICB0ZXN0X2NvbXBsZXRlXyhFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSwKICAgICAgICAg
Y29kZWNfcmVnaXN0ZXJlZF8oZmFsc2UpLAogICAgICAgICByZWNlaXZlX3BhY2tldF9jb3VudF8o
MCksCiAgICAgICAgIG5leHRfaW5zZXJ0X3BhY2tldF90aW1lX21zXygwKSwKQEAgLTc4MSw4ICs3
NzksOCBAQCBjbGFzcyBBY21SZVJlZ2lzdGVySXNhY010VGVzdE9sZEFwaSA6IHB1YmxpYyBBdWRp
b0NvZGluZ01vZHVsZVRlc3RPbGRBcGkgewogICAgIGNvZGVjX3JlZ2lzdHJhdGlvbl90aHJlYWRf
LlN0b3AoKTsKICAgfQogCi0gIEV2ZW50VHlwZVdyYXBwZXIgUnVuVGVzdCgpIHsKLSAgICByZXR1
cm4gdGVzdF9jb21wbGV0ZV8tPldhaXQoMTAgKiA2MCAqIDEwMDApOyAgLy8gMTAgbWludXRlcycg
dGltZW91dC4KKyAgYm9vbCBSdW5UZXN0KCkgeworICAgIHJldHVybiB0ZXN0X2NvbXBsZXRlXy5X
YWl0KDEwICogNjAgKiAxMDAwKTsgIC8vIDEwIG1pbnV0ZXMnIHRpbWVvdXQuCiAgIH0KIAogICBz
dGF0aWMgYm9vbCBDYlJlY2VpdmVUaHJlYWQodm9pZCogY29udGV4dCkgewpAQCAtODQ1LDcgKzg0
Myw3IEBAIGNsYXNzIEFjbVJlUmVnaXN0ZXJJc2FjTXRUZXN0T2xkQXBpIDogcHVibGljIEF1ZGlv
Q29kaW5nTW9kdWxlVGVzdE9sZEFwaSB7CiAgICAgU2xlZXBNcygxKTsKICAgICBpZiAoSGFzRmF0
YWxGYWlsdXJlKCkpIHsKICAgICAgIC8vIEVuZCB0aGUgdGVzdCBlYXJseSBpZiBhIGZhdGFsIGZh
aWx1cmUgKEFTU0VSVF8qKSBoYXMgb2NjdXJyZWQuCi0gICAgICB0ZXN0X2NvbXBsZXRlXy0+U2V0
KCk7CisgICAgICB0ZXN0X2NvbXBsZXRlXy5TZXQoKTsKICAgICB9CiAgICAgcnRjOjpDcml0U2Nv
cGUgbG9jaygmY3JpdF9zZWN0Xyk7CiAgICAgaWYgKCFjb2RlY19yZWdpc3RlcmVkXyAmJgpAQCAt
ODU2LDE0ICs4NTQsMTQgQEAgY2xhc3MgQWNtUmVSZWdpc3RlcklzYWNNdFRlc3RPbGRBcGkgOiBw
dWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVUZXN0T2xkQXBpIHsKICAgICAgIGNvZGVjX3JlZ2lzdGVy
ZWRfID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGNvZGVjX3JlZ2lzdGVyZWRfICYmIHJlY2VpdmVf
cGFja2V0X2NvdW50XyA+IGtOdW1QYWNrZXRzKSB7Ci0gICAgICB0ZXN0X2NvbXBsZXRlXy0+U2V0
KCk7CisgICAgICB0ZXN0X2NvbXBsZXRlXy5TZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7
CiAgIH0KIAogICBydGM6OlBsYXRmb3JtVGhyZWFkIHJlY2VpdmVfdGhyZWFkXzsKICAgcnRjOjpQ
bGF0Zm9ybVRocmVhZCBjb2RlY19yZWdpc3RyYXRpb25fdGhyZWFkXzsKLSAgY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gdGVzdF9jb21wbGV0ZV87CisgIHJ0Yzo6RXZlbnQgdGVz
dF9jb21wbGV0ZV87CiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfc2VjdF87CiAgIGJvb2wg
Y29kZWNfcmVnaXN0ZXJlZF8gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CiAgIGludCByZWNl
aXZlX3BhY2tldF9jb3VudF8gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CkBAIC04ODAsNyAr
ODc4LDcgQEAgY2xhc3MgQWNtUmVSZWdpc3RlcklzYWNNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVk
aW9Db2RpbmdNb2R1bGVUZXN0T2xkQXBpIHsKICNlbmRpZgogI2lmIGRlZmluZWQoV0VCUlRDX0NP
REVDX0lTQUMpIHx8IGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUNGWCkKIFRFU1RfRihBY21SZVJl
Z2lzdGVySXNhY010VGVzdE9sZEFwaSwgTUFZQkVfRG9UZXN0KSB7Ci0gIEVYUEVDVF9FUShrRXZl
bnRTaWduYWxlZCwgUnVuVGVzdCgpKTsKKyAgRVhQRUNUX1RSVUUoUnVuVGVzdCgpKTsKIH0KICNl
bmRpZgogCkBAIC0xMTg1LDE0ICsxMTgzLDE0IEBAIGNsYXNzIEFjbVNlbmRlckJpdEV4YWN0bmVz
c09sZEFwaSA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QsCiAKICAgICAvLyBFeHRyYWN0IGFuZCB2
ZXJpZnkgdGhlIGF1ZGlvIGNoZWNrc3VtLgogICAgIHN0ZDo6c3RyaW5nIGNoZWNrc3VtX3N0cmlu
ZyA9IGF1ZGlvX2NoZWNrc3VtLkZpbmlzaCgpOwotICAgIEVYUEVDVF9FUShhdWRpb19jaGVja3N1
bV9yZWYsIGNoZWNrc3VtX3N0cmluZyk7CisgICAgRXhwZWN0Q2hlY2tzdW1FcShhdWRpb19jaGVj
a3N1bV9yZWYsIGNoZWNrc3VtX3N0cmluZyk7CiAKICAgICAvLyBFeHRyYWN0IGFuZCB2ZXJpZnkg
dGhlIHBheWxvYWQgY2hlY2tzdW0uCiAgICAgcnRjOjpCdWZmZXIgY2hlY2tzdW1fcmVzdWx0KHBh
eWxvYWRfY2hlY2tzdW1fLT5TaXplKCkpOwogICAgIHBheWxvYWRfY2hlY2tzdW1fLT5GaW5pc2go
Y2hlY2tzdW1fcmVzdWx0LmRhdGEoKSwgY2hlY2tzdW1fcmVzdWx0LnNpemUoKSk7CiAgICAgY2hl
Y2tzdW1fc3RyaW5nID0KICAgICAgICAgcnRjOjpoZXhfZW5jb2RlKGNoZWNrc3VtX3Jlc3VsdC5k
YXRhPGNoYXI+KCksIGNoZWNrc3VtX3Jlc3VsdC5zaXplKCkpOwotICAgIEVYUEVDVF9FUShwYXls
b2FkX2NoZWNrc3VtX3JlZiwgY2hlY2tzdW1fc3RyaW5nKTsKKyAgICBFeHBlY3RDaGVja3N1bUVx
KHBheWxvYWRfY2hlY2tzdW1fcmVmLCBjaGVja3N1bV9zdHJpbmcpOwogCiAgICAgLy8gVmVyaWZ5
IG51bWJlciBvZiBwYWNrZXRzIHByb2R1Y2VkLgogICAgIEVYUEVDVF9FUShleHBlY3RlZF9wYWNr
ZXRzLCBwYWNrZXRfY291bnRfKTsKQEAgLTEyMDEsNiArMTE5OSwxOCBAQCBjbGFzcyBBY21TZW5k
ZXJCaXRFeGFjdG5lc3NPbGRBcGkgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0LAogICAgIHJlbW92
ZShvdXRwdXRfZmlsZV9uYW1lLmNfc3RyKCkpOwogICB9CiAKKyAgLy8gSGVscGVyOiByZXN1bHQg
bXVzdCBiZSBvbmUgdGhlICJ8Ii1zZXBhcmF0ZWQgY2hlY2tzdW1zLgorICB2b2lkIEV4cGVjdENo
ZWNrc3VtRXEoc3RkOjpzdHJpbmcgcmVmLCBzdGQ6OnN0cmluZyByZXN1bHQpIHsKKyAgICBpZiAo
cmVmLnNpemUoKSA9PSByZXN1bHQuc2l6ZSgpKSB7CisgICAgICAvLyBPbmx5IG9uZSBjaGVja3N1
bTogY2xlYXJlciBtZXNzYWdlLgorICAgICAgRVhQRUNUX0VRKHJlZiwgcmVzdWx0KTsKKyAgICB9
IGVsc2UgeworICAgICAgRVhQRUNUX05FKHJlZi5maW5kKHJlc3VsdCksIHN0ZDo6c3RyaW5nOjpu
cG9zKQorICAgICAgICAgIDw8IHJlc3VsdCA8PCAiIG11c3QgYmUgb25lIG9mIHRoZXNlOlxuIgor
ICAgICAgICAgIDw8IHJlZjsKKyAgICB9CisgIH0KKwogICAvLyBJbmhlcml0ZWQgZnJvbSB0ZXN0
OjpQYWNrZXRTb3VyY2UuCiAgIHN0ZDo6dW5pcXVlX3B0cjx0ZXN0OjpQYWNrZXQ+IE5leHRQYWNr
ZXQoKSBvdmVycmlkZSB7CiAgICAgYXV0byBwYWNrZXQgPSBzZW5kX3Rlc3RfLT5OZXh0UGFja2V0
KCk7CkBAIC0xNDM4LDIxICsxNDQ4LDM1IEBAIFRFU1RfRihBY21TZW5kZXJCaXRFeGFjdG5lc3NP
bGRBcGksIE1BWUJFX0c3MjJfc3RlcmVvXzIwbXMpIHsKICAgICAgIDUwLCB0ZXN0OjpBY21SZWNl
aXZlVGVzdE9sZEFwaTo6a1N0ZXJlb091dHB1dCk7CiB9CiAKK25hbWVzcGFjZSB7CisvLyBDaGVj
a3N1bSBkZXBlbmRzIG9uIGxpYm9wdXMgYmVpbmcgY29tcGlsZWQgd2l0aCBvciB3aXRob3V0IFNT
RS4KK2NvbnN0IHN0ZDo6c3RyaW5nIGF1ZGlvX21heWJlX3NzZSA9CisgICAgIjNlMjg1Yjc0NTEw
ZTYyMDYyZmJkODE0MmRhY2QxNmU5fCIKKyAgICAiZmQ1ZDU3ZDZkNzY2OTA4ZTZhNzIxMWUyYTVj
N2Y3OGEiOworY29uc3Qgc3RkOjpzdHJpbmcgcGF5bG9hZF9tYXliZV9zc2UgPQorICAgICI3OGNm
OGYwMzE1NzM1OGFjZGM2OWY2ODM1Y2FhMGQ5YnwiCisgICAgImI2OTNiZDk1YzJlZTIzNTRmOTIz
NDBkZDA5ZTlkYTY4IjsKKy8vIENvbW1vbiBjaGVja3N1bXMuCitjb25zdCBzdGQ6OnN0cmluZyBh
dWRpb19jaGVja3N1bSA9CisgICAgQWNtUmVjZWl2ZXJCaXRFeGFjdG5lc3NPbGRBcGk6OlBsYXRm
b3JtQ2hlY2tzdW0oCisgICAgICAgIGF1ZGlvX21heWJlX3NzZSwKKyAgICAgICAgYXVkaW9fbWF5
YmVfc3NlLAorICAgICAgICAiNDM5ZTk3YWQxOTMyYzQ5OTIzYjVkYTAyOWMxN2RkNWUiLAorICAg
ICAgICAiMDM4ZWM5MGY1ZjNmYzIzMjBmMzA5MGY4ZWNlZjZiYjciLAorICAgICAgICAiMDM4ZWM5
MGY1ZjNmYzIzMjBmMzA5MGY4ZWNlZjZiYjciKTsKK2NvbnN0IHN0ZDo6c3RyaW5nIHBheWxvYWRf
Y2hlY2tzdW0gPQorICAgIEFjbVJlY2VpdmVyQml0RXhhY3RuZXNzT2xkQXBpOjpQbGF0Zm9ybUNo
ZWNrc3VtKAorICAgICAgICBwYXlsb2FkX21heWJlX3NzZSwKKyAgICAgICAgcGF5bG9hZF9tYXli
ZV9zc2UsCisgICAgICAgICJhYjg4YjFhMDQ5YzM2YmRmZWI3ZThiMDU3ZWY2OTgyYSIsCisgICAg
ICAgICIyN2ZlZjdiNzk5MzkzMzQ3ZWMzYjU2OTQzNjlhMWMzNiIsCisgICAgICAgICIyN2ZlZjdi
Nzk5MzkzMzQ3ZWMzYjU2OTQzNjlhMWMzNiIpOworfTsgIC8vIG5hbWVzcGFjZQorCiBURVNUX0Yo
QWNtU2VuZGVyQml0RXhhY3RuZXNzT2xkQXBpLCBPcHVzX3N0ZXJlb18yMG1zKSB7CiAgIEFTU0VS
VF9OT19GQVRBTF9GQUlMVVJFKFNldFVwVGVzdCgib3B1cyIsIDQ4MDAwLCAyLCAxMjAsIDk2MCwg
OTYwKSk7Ci0gIFJ1bihBY21SZWNlaXZlckJpdEV4YWN0bmVzc09sZEFwaTo6UGxhdGZvcm1DaGVj
a3N1bSgKLSAgICAgICAgICAiM2UyODViNzQ1MTBlNjIwNjJmYmQ4MTQyZGFjZDE2ZTkiLAotICAg
ICAgICAgICIzZTI4NWI3NDUxMGU2MjA2MmZiZDgxNDJkYWNkMTZlOSIsCi0gICAgICAgICAgIjQz
OWU5N2FkMTkzMmM0OTkyM2I1ZGEwMjljMTdkZDVlIiwKLSAgICAgICAgICAiMDM4ZWM5MGY1ZjNm
YzIzMjBmMzA5MGY4ZWNlZjZiYjciLAotICAgICAgICAgICIwMzhlYzkwZjVmM2ZjMjMyMGYzMDkw
ZjhlY2VmNmJiNyIpLAotICAgICAgQWNtUmVjZWl2ZXJCaXRFeGFjdG5lc3NPbGRBcGk6OlBsYXRm
b3JtQ2hlY2tzdW0oCi0gICAgICAgICAgIjc4Y2Y4ZjAzMTU3MzU4YWNkYzY5ZjY4MzVjYWEwZDli
IiwKLSAgICAgICAgICAiNzhjZjhmMDMxNTczNThhY2RjNjlmNjgzNWNhYTBkOWIiLAotICAgICAg
ICAgICJhYjg4YjFhMDQ5YzM2YmRmZWI3ZThiMDU3ZWY2OTgyYSIsCi0gICAgICAgICAgIjI3ZmVm
N2I3OTkzOTMzNDdlYzNiNTY5NDM2OWExYzM2IiwKLSAgICAgICAgICAiMjdmZWY3Yjc5OTM5MzM0
N2VjM2I1Njk0MzY5YTFjMzYiKSwKLSAgICAgIDUwLCB0ZXN0OjpBY21SZWNlaXZlVGVzdE9sZEFw
aTo6a1N0ZXJlb091dHB1dCk7CisgIFJ1bihhdWRpb19jaGVja3N1bSwgcGF5bG9hZF9jaGVja3N1
bSwgNTAsCisgICAgICB0ZXN0OjpBY21SZWNlaXZlVGVzdE9sZEFwaTo6a1N0ZXJlb091dHB1dCk7
CiB9CiAKIFRFU1RfRihBY21TZW5kZXJCaXRFeGFjdG5lc3NOZXdBcGksIE1BWUJFX09wdXNGcm9t
Rm9ybWF0X3N0ZXJlb18yMG1zKSB7CkBAIC0xNDYwLDE5ICsxNDg0LDggQEAgVEVTVF9GKEFjbVNl
bmRlckJpdEV4YWN0bmVzc05ld0FwaSwgTUFZQkVfT3B1c0Zyb21Gb3JtYXRfc3RlcmVvXzIwbXMp
IHsKICAgICAgIFNkcEF1ZGlvRm9ybWF0KCJvcHVzIiwgNDgwMDAsIDIsIHt7InN0ZXJlbyIsICIx
In19KSk7CiAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKFNldFVwVGVzdEV4dGVybmFsRW5jb2Rl
cigKICAgICAgIEF1ZGlvRW5jb2Rlck9wdXM6Ok1ha2VBdWRpb0VuY29kZXIoKmNvbmZpZywgMTIw
KSwgMTIwKSk7Ci0gIFJ1bihBY21SZWNlaXZlckJpdEV4YWN0bmVzc09sZEFwaTo6UGxhdGZvcm1D
aGVja3N1bSgKLSAgICAgICAgICAiM2UyODViNzQ1MTBlNjIwNjJmYmQ4MTQyZGFjZDE2ZTkiLAot
ICAgICAgICAgICIzZTI4NWI3NDUxMGU2MjA2MmZiZDgxNDJkYWNkMTZlOSIsCi0gICAgICAgICAg
IjQzOWU5N2FkMTkzMmM0OTkyM2I1ZGEwMjljMTdkZDVlIiwKLSAgICAgICAgICAiMDM4ZWM5MGY1
ZjNmYzIzMjBmMzA5MGY4ZWNlZjZiYjciLAotICAgICAgICAgICIwMzhlYzkwZjVmM2ZjMjMyMGYz
MDkwZjhlY2VmNmJiNyIpLAotICAgICAgQWNtUmVjZWl2ZXJCaXRFeGFjdG5lc3NPbGRBcGk6OlBs
YXRmb3JtQ2hlY2tzdW0oCi0gICAgICAgICAgIjc4Y2Y4ZjAzMTU3MzU4YWNkYzY5ZjY4MzVjYWEw
ZDliIiwKLSAgICAgICAgICAiNzhjZjhmMDMxNTczNThhY2RjNjlmNjgzNWNhYTBkOWIiLAotICAg
ICAgICAgICJhYjg4YjFhMDQ5YzM2YmRmZWI3ZThiMDU3ZWY2OTgyYSIsCi0gICAgICAgICAgIjI3
ZmVmN2I3OTkzOTMzNDdlYzNiNTY5NDM2OWExYzM2IiwKLSAgICAgICAgICAiMjdmZWY3Yjc5OTM5
MzM0N2VjM2I1Njk0MzY5YTFjMzYiKSwKLSAgICAgIDUwLCB0ZXN0OjpBY21SZWNlaXZlVGVzdE9s
ZEFwaTo6a1N0ZXJlb091dHB1dCk7CisgIFJ1bihhdWRpb19jaGVja3N1bSwgcGF5bG9hZF9jaGVj
a3N1bSwgNTAsCisgICAgICB0ZXN0OjpBY21SZWNlaXZlVGVzdE9sZEFwaTo6a1N0ZXJlb091dHB1
dCk7CiB9CiAKIFRFU1RfRihBY21TZW5kZXJCaXRFeGFjdG5lc3NOZXdBcGksIE9wdXNGcm9tRm9y
bWF0X3N0ZXJlb18yMG1zX3ZvaXApIHsKQEAgLTE0ODIsMTUgKzE0OTUsMTkgQEAgVEVTVF9GKEFj
bVNlbmRlckJpdEV4YWN0bmVzc05ld0FwaSwgT3B1c0Zyb21Gb3JtYXRfc3RlcmVvXzIwbXNfdm9p
cCkgewogICBjb25maWctPmFwcGxpY2F0aW9uID0gQXVkaW9FbmNvZGVyT3B1c0NvbmZpZzo6QXBw
bGljYXRpb25Nb2RlOjprVm9pcDsKICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoU2V0VXBUZXN0
RXh0ZXJuYWxFbmNvZGVyKAogICAgICAgQXVkaW9FbmNvZGVyT3B1czo6TWFrZUF1ZGlvRW5jb2Rl
cigqY29uZmlnLCAxMjApLCAxMjApKTsKKyAgLy8gQ2hlY2tzdW0gZGVwZW5kcyBvbiBsaWJvcHVz
IGJlaW5nIGNvbXBpbGVkIHdpdGggb3Igd2l0aG91dCBTU0UuCisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGF1ZGlvX21heWJlX3NzZSA9CisgICAgICAiYjAzMjVkZjRlODEwNGYwNGUwM2FmMjNjMGI3NTgw
MGV8IgorICAgICAgIjNjZDRlMWJjMmFjZDk0NDBiYjllOTdhZjM0MDgwZmZjIjsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgcGF5bG9hZF9tYXliZV9zc2UgPQorICAgICAgIjRlYWIyMjU5YjZmZTI0YzIy
ZGQyNDJhMTEzZTBiM2Q5fCIKKyAgICAgICI0ZmMwYWYwYWEwNmMyNjQ1NGFmMDk4MzJkM2VjMWI0
ZSI7CiAgIFJ1bihBY21SZWNlaXZlckJpdEV4YWN0bmVzc09sZEFwaTo6UGxhdGZvcm1DaGVja3N1
bSgKLSAgICAgICAgICAiYjAzMjVkZjRlODEwNGYwNGUwM2FmMjNjMGI3NTgwMGUiLAotICAgICAg
ICAgICJiMDMyNWRmNGU4MTA0ZjA0ZTAzYWYyM2MwYjc1ODAwZSIsCi0gICAgICAgICAgIjFjODEx
MjFmNWQ5Mjg2YTVhODY1ZDAxZGJhYjIyY2U4IiwKKyAgICAgICAgICBhdWRpb19tYXliZV9zc2Us
IGF1ZGlvX21heWJlX3NzZSwgIjFjODExMjFmNWQ5Mjg2YTVhODY1ZDAxZGJhYjIyY2U4IiwKICAg
ICAgICAgICAiMTFkNTQ3Zjg5MTQyZTllZjAzZjM3ZDdjYTdmMzIzNzkiLAogICAgICAgICAgICIx
MWQ1NDdmODkxNDJlOWVmMDNmMzdkN2NhN2YzMjM3OSIpLAogICAgICAgQWNtUmVjZWl2ZXJCaXRF
eGFjdG5lc3NPbGRBcGk6OlBsYXRmb3JtQ2hlY2tzdW0oCi0gICAgICAgICAgIjRlYWIyMjU5YjZm
ZTI0YzIyZGQyNDJhMTEzZTBiM2Q5IiwKLSAgICAgICAgICAiNGVhYjIyNTliNmZlMjRjMjJkZDI0
MmExMTNlMGIzZDkiLAorICAgICAgICAgIHBheWxvYWRfbWF5YmVfc3NlLCBwYXlsb2FkX21heWJl
X3NzZSwKICAgICAgICAgICAiODM5ZWE2MDM5OTQ0NzI2OGVlMGYwMjYyYTUwYjc1ZmQiLAogICAg
ICAgICAgICIxODE1ZmQ1NTg5Y2FkMGM2ZjZjZjk0NmM3NmI4MWFlYiIsCiAgICAgICAgICAgIjE4
MTVmZDU1ODljYWQwYzZmNmNmOTQ2Yzc2YjgxYWViIiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20y
L2NhbGxfc3RhdGlzdGljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jYWxsX3N0YXRpc3RpY3MuaAppbmRleCA5
ZGNlZDY0NzVhODBjNzczZjRjMTQyOTBiZjdmNzcwNjc0YWUwMzdhLi41ZDk0YWM0NTM4OTFkYjhk
MzUxYjc1NTY5MTQ1OTk2ZDRmZWZlYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NhbGxfc3Rh
dGlzdGljcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvY2FsbF9zdGF0aXN0aWNzLmgKQEAgLTEyLDcgKzEy
LDcgQEAKICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfQUNNMl9DQUxMX1NUQVRJU1RJQ1Nf
SF8KIAogI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19mcmFtZS5oIgotI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzLmgiCiAKIC8v
CiAvLyBUaGlzIGNsYXNzIGlzIGZvciBib29rIGtlZXBpbmcgb2YgY2FsbHMgdG8gQUNNLiBJdCBp
cyBub3QgdXNlZnVsIHRvIGxvZyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvY29kZWNfbWFu
YWdlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2FjbTIvY29kZWNfbWFuYWdlci5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjI5ZTBmMWExZTI3YjkwY2M5MDU0ZDgzNzdlYjJmODViNGRjZDUwNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2Nv
ZGVjX21hbmFnZXIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgKGMpIDIwMTUgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQot
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVj
X21hbmFnZXIuaCIKLQotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotLy8jaW5jbHVkZSAi
cnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2FjbTIvcmVudF9hX2NvZGVjLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotCi1u
YW1lc3BhY2Ugd2VicnRjIHsKLW5hbWVzcGFjZSBhY20yIHsKLQotbmFtZXNwYWNlIHsKLQotLy8g
Q2hlY2sgaWYgdGhlIGdpdmVuIGNvZGVjIGlzIGEgdmFsaWQgdG8gYmUgcmVnaXN0ZXJlZCBhcyBz
ZW5kIGNvZGVjLgotaW50IElzVmFsaWRTZW5kQ29kZWMoY29uc3QgQ29kZWNJbnN0JiBzZW5kX2Nv
ZGVjKSB7Ci0gIGlmICgoc2VuZF9jb2RlYy5jaGFubmVscyAhPSAxKSAmJiAoc2VuZF9jb2RlYy5j
aGFubmVscyAhPSAyKSkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJXcm9uZyBudW1iZXIg
b2YgY2hhbm5lbHMgKCIgPDwgc2VuZF9jb2RlYy5jaGFubmVscwotICAgICAgICAgICAgICAgICAg
ICAgIDw8ICIpLCBvbmx5IG1vbm8gYW5kIHN0ZXJlbyBhcmUgc3VwcG9ydGVkKSI7Ci0gICAgcmV0
dXJuIC0xOwotICB9Ci0KLSAgYXV0byBtYXliZV9jb2RlY19pZCA9IFJlbnRBQ29kZWM6OkNvZGVj
SWRCeUluc3Qoc2VuZF9jb2RlYyk7Ci0gIGlmICghbWF5YmVfY29kZWNfaWQpIHsKLSAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiSW52YWxpZCBjb2RlYyBzZXR0aW5nIGZvciB0aGUgc2VuZCBjb2Rl
Yy4iOwotICAgIHJldHVybiAtMTsKLSAgfQotCi0gIC8vIFRlbGVwaG9uZS1ldmVudCBjYW5ub3Qg
YmUgYSBzZW5kIGNvZGVjLgotICBpZiAoIVNUUl9DQVNFX0NNUChzZW5kX2NvZGVjLnBsbmFtZSwg
InRlbGVwaG9uZS1ldmVudCIpKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgInRlbGVwaG9u
ZS1ldmVudCBjYW5ub3QgYmUgYSBzZW5kIGNvZGVjIjsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLQot
ICBpZiAoIVJlbnRBQ29kZWM6OklzU3VwcG9ydGVkTnVtQ2hhbm5lbHMoKm1heWJlX2NvZGVjX2lk
LCBzZW5kX2NvZGVjLmNoYW5uZWxzKQotICAgICAgICAgICAudmFsdWVfb3IoZmFsc2UpKSB7Ci0g
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgc2VuZF9jb2RlYy5jaGFubmVscwotICAgICAgICAgICAg
ICAgICAgICAgIDw8ICIgbnVtYmVyIG9mIGNoYW5uZWxzIG5vdCBzdXBwb3J0ZWQgZm9yICIKLSAg
ICAgICAgICAgICAgICAgICAgICA8PCBzZW5kX2NvZGVjLnBsbmFtZSA8PCAiLiI7Ci0gICAgcmV0
dXJuIC0xOwotICB9Ci0gIHJldHVybiBSZW50QUNvZGVjOjpDb2RlY0luZGV4RnJvbUlkKCptYXli
ZV9jb2RlY19pZCkudmFsdWVfb3IoLTEpOwotfQotCi1ib29sIElzT3B1cyhjb25zdCBDb2RlY0lu
c3QmIGNvZGVjKSB7Ci0gIHJldHVybgotI2lmZGVmIFdFQlJUQ19DT0RFQ19PUFVTCi0gICAgICAh
U1RSX0NBU0VfQ01QKGNvZGVjLnBsbmFtZSwgIm9wdXMiKSB8fAotI2VuZGlmCi0gICAgICBmYWxz
ZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLUNvZGVjTWFuYWdlcjo6Q29kZWNNYW5hZ2VyKCkg
ewotICB0aHJlYWRfY2hlY2tlcl8uRGV0YWNoRnJvbVRocmVhZCgpOwotfQotCi1Db2RlY01hbmFn
ZXI6On5Db2RlY01hbmFnZXIoKSA9IGRlZmF1bHQ7Ci0KLWJvb2wgQ29kZWNNYW5hZ2VyOjpSZWdp
c3RlckVuY29kZXIoY29uc3QgQ29kZWNJbnN0JiBzZW5kX2NvZGVjKSB7Ci0gIFJUQ19EQ0hFQ0so
dGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGludCBjb2RlY19pZCA9
IElzVmFsaWRTZW5kQ29kZWMoc2VuZF9jb2RlYyk7Ci0KLSAgLy8gQ2hlY2sgZm9yIHJlcG9ydGVk
IGVycm9ycyBmcm9tIGZ1bmN0aW9uIElzVmFsaWRTZW5kQ29kZWMoKS4KLSAgaWYgKGNvZGVjX2lk
IDwgMCkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHN3aXRjaCAoUmVudEFDb2RlYzo6
UmVnaXN0ZXJSZWRQYXlsb2FkVHlwZSgKLSAgICAgICZjb2RlY19zdGFja19wYXJhbXNfLnJlZF9w
YXlsb2FkX3R5cGVzLCBzZW5kX2NvZGVjKSkgewotICAgIGNhc2UgUmVudEFDb2RlYzo6UmVnaXN0
cmF0aW9uUmVzdWx0OjprT2s6Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFJlbnRBQ29k
ZWM6OlJlZ2lzdHJhdGlvblJlc3VsdDo6a0JhZEZyZXE6Ci0gICAgICBSVENfTE9HKExTX0VSUk9S
KQotICAgICAgICAgIDw8ICJSZWdpc3RlclNlbmRDb2RlYygpIGZhaWxlZCwgaW52YWxpZCBmcmVx
dWVuY3kgZm9yIFJFRCIKLSAgICAgICAgICAgICAiIHJlZ2lzdHJhdGlvbiI7Ci0gICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgY2FzZSBSZW50QUNvZGVjOjpSZWdpc3RyYXRpb25SZXN1bHQ6OmtTa2lw
OgotICAgICAgYnJlYWs7Ci0gIH0KLSAgc3dpdGNoIChSZW50QUNvZGVjOjpSZWdpc3RlckNuZ1Bh
eWxvYWRUeXBlKAotICAgICAgJmNvZGVjX3N0YWNrX3BhcmFtc18uY25nX3BheWxvYWRfdHlwZXMs
IHNlbmRfY29kZWMpKSB7Ci0gICAgY2FzZSBSZW50QUNvZGVjOjpSZWdpc3RyYXRpb25SZXN1bHQ6
OmtPazoKLSAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgUmVudEFDb2RlYzo6UmVnaXN0cmF0
aW9uUmVzdWx0OjprQmFkRnJlcToKLSAgICAgIFJUQ19MT0coTFNfRVJST1IpCi0gICAgICAgICAg
PDwgIlJlZ2lzdGVyU2VuZENvZGVjKCkgZmFpbGVkLCBpbnZhbGlkIGZyZXF1ZW5jeSBmb3IgQ05H
IgotICAgICAgICAgICAgICIgcmVnaXN0cmF0aW9uIjsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBjYXNlIFJlbnRBQ29kZWM6OlJlZ2lzdHJhdGlvblJlc3VsdDo6a1NraXA6Ci0gICAgICBicmVh
azsKLSAgfQotCi0gIGlmIChJc09wdXMoc2VuZF9jb2RlYykpIHsKLSAgICAvLyBWQUQvRFRYIG5v
dCBzdXBwb3J0ZWQuCi0gICAgY29kZWNfc3RhY2tfcGFyYW1zXy51c2VfY25nID0gZmFsc2U7Ci0g
IH0KLQotICBzZW5kX2NvZGVjX2luc3RfID0gc2VuZF9jb2RlYzsKLSAgcmVjcmVhdGVfZW5jb2Rl
cl8gPSB0cnVlOyAgLy8gQ2FsbGVyIG11c3QgcmVjcmVhdGUgaXQuCi0gIHJldHVybiB0cnVlOwot
fQotCi1Db2RlY0luc3QgQ29kZWNNYW5hZ2VyOjpGb3JnZUNvZGVjSW5zdCgKLSAgICBjb25zdCBB
dWRpb0VuY29kZXIqIGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyKSB7Ci0gIENvZGVjSW5zdCBjaTsK
LSAgY2kuY2hhbm5lbHMgPSBleHRlcm5hbF9zcGVlY2hfZW5jb2Rlci0+TnVtQ2hhbm5lbHMoKTsK
LSAgY2kucGxmcmVxID0gZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXItPlNhbXBsZVJhdGVIeigpOwot
ICBjaS5wYWNzaXplID0gcnRjOjpDaGVja2VkRGl2RXhhY3QoCi0gICAgICBzdGF0aWNfY2FzdDxp
bnQ+KGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyLT5NYXgxME1zRnJhbWVzSW5BUGFja2V0KCkgKgot
ICAgICAgICAgICAgICAgICAgICAgICBjaS5wbGZyZXEpLAotICAgICAgMTAwKTsKLSAgY2kucGx0
eXBlID0gLTE7ICAvLyBOb3QgdmFsaWQuCi0gIGNpLnJhdGUgPSAtMTsgICAgLy8gTm90IHZhbGlk
LgotICBzdGF0aWMgY29uc3QgY2hhciBrTmFtZVtdID0gImV4dGVybmFsIjsKLSAgbWVtY3B5KGNp
LnBsbmFtZSwga05hbWUsIHNpemVvZihrTmFtZSkpOwotICByZXR1cm4gY2k7Ci19Ci0KLWJvb2wg
Q29kZWNNYW5hZ2VyOjpTZXRDb3B5UmVkKGJvb2wgZW5hYmxlKSB7Ci0gIGlmIChlbmFibGUgJiYg
Y29kZWNfc3RhY2tfcGFyYW1zXy51c2VfY29kZWNfZmVjKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJO
SU5HKSA8PCAiQ29kZWMgaW50ZXJuYWwgRkVDIGFuZCBSRUQgY2Fubm90IGJlIGNvLWVuYWJsZWQu
IjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgaWYgKGVuYWJsZSAmJiBzZW5kX2NvZGVjX2lu
c3RfICYmCi0gICAgICBjb2RlY19zdGFja19wYXJhbXNfLnJlZF9wYXlsb2FkX3R5cGVzLmNvdW50
KHNlbmRfY29kZWNfaW5zdF8tPnBsZnJlcSkgPAotICAgICAgICAgIDEpIHsKLSAgICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJDYW5ub3QgZW5hYmxlIFJFRCBhdCAiIDw8IHNlbmRfY29kZWNfaW5z
dF8tPnBsZnJlcQotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBIei4iOwotICAgIHJldHVy
biBmYWxzZTsKLSAgfQotICBjb2RlY19zdGFja19wYXJhbXNfLnVzZV9yZWQgPSBlbmFibGU7Ci0g
IHJldHVybiB0cnVlOwotfQotCi1ib29sIENvZGVjTWFuYWdlcjo6U2V0VkFEKGJvb2wgZW5hYmxl
LCBBQ01WQURNb2RlIG1vZGUpIHsKLSAgLy8gU2FuaXR5IGNoZWNrIG9mIHRoZSBtb2RlLgotICBS
VENfRENIRUNLKG1vZGUgPT0gVkFETm9ybWFsIHx8IG1vZGUgPT0gVkFETG93Qml0cmF0ZSB8fCBt
b2RlID09IFZBREFnZ3IgfHwKLSAgICAgICAgICAgICBtb2RlID09IFZBRFZlcnlBZ2dyKTsKLQot
ICAvLyBDaGVjayB0aGF0IHRoZSBzZW5kIGNvZGVjIGlzIG1vbm8uIFdlIGRvbid0IHN1cHBvcnQg
VkFEL0RUWCBmb3Igc3RlcmVvCi0gIC8vIHNlbmRpbmcuCi0gIGNvbnN0IGJvb2wgc3RlcmVvX3Nl
bmQgPQotICAgICAgY29kZWNfc3RhY2tfcGFyYW1zXy5zcGVlY2hfZW5jb2RlcgotICAgICAgICAg
ID8gKGNvZGVjX3N0YWNrX3BhcmFtc18uc3BlZWNoX2VuY29kZXItPk51bUNoYW5uZWxzKCkgIT0g
MSkKLSAgICAgICAgICA6IGZhbHNlOwotICBpZiAoZW5hYmxlICYmIHN0ZXJlb19zZW5kKSB7Ci0g
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZBRC9EVFggbm90IHN1cHBvcnRlZCBmb3Igc3RlcmVv
IHNlbmRpbmciOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8vIFRPRE8oa3dpYmVyZyk6
IFRoaXMgZG9lc24ndCBwcm90ZWN0IE9wdXMgd2hlbiBpbmplY3RlZCBhcyBhbiBleHRlcm5hbAot
ICAvLyBlbmNvZGVyLgotICBpZiAoc2VuZF9jb2RlY19pbnN0XyAmJiBJc09wdXMoKnNlbmRfY29k
ZWNfaW5zdF8pKSB7Ci0gICAgLy8gVkFEL0RUWCBub3Qgc3VwcG9ydGVkLCBidXQgZG9uJ3QgZmFp
bC4KLSAgICBlbmFibGUgPSBmYWxzZTsKLSAgfQotCi0gIGNvZGVjX3N0YWNrX3BhcmFtc18udXNl
X2NuZyA9IGVuYWJsZTsKLSAgY29kZWNfc3RhY2tfcGFyYW1zXy52YWRfbW9kZSA9IG1vZGU7Ci0g
IHJldHVybiB0cnVlOwotfQotCi1ib29sIENvZGVjTWFuYWdlcjo6U2V0Q29kZWNGRUMoYm9vbCBl
bmFibGVfY29kZWNfZmVjKSB7Ci0gIGlmIChlbmFibGVfY29kZWNfZmVjICYmIGNvZGVjX3N0YWNr
X3BhcmFtc18udXNlX3JlZCkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNvZGVjIGlu
dGVybmFsIEZFQyBhbmQgUkVEIGNhbm5vdCBiZSBjby1lbmFibGVkLiI7Ci0gICAgcmV0dXJuIGZh
bHNlOwotICB9Ci0KLSAgY29kZWNfc3RhY2tfcGFyYW1zXy51c2VfY29kZWNfZmVjID0gZW5hYmxl
X2NvZGVjX2ZlYzsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQ29kZWNNYW5hZ2VyOjpNYWtl
RW5jb2RlcihSZW50QUNvZGVjKiByYWMsIEF1ZGlvQ29kaW5nTW9kdWxlKiBhY20pIHsKLSAgUlRD
X0RDSEVDSyhyYWMpOwotICBSVENfRENIRUNLKGFjbSk7Ci0KLSAgaWYgKCFyZWNyZWF0ZV9lbmNv
ZGVyXykgewotICAgIGJvb2wgZXJyb3IgPSBmYWxzZTsKLSAgICAvLyBUcnkgdG8gcmUtdXNlIHRo
ZSBzcGVlY2ggZW5jb2RlciB3ZSd2ZSBnaXZlbiB0byB0aGUgQUNNLgotICAgIGFjbS0+TW9kaWZ5
RW5jb2RlcihbJl0oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXIpIHsKLSAg
ICAgIGlmICghKmVuY29kZXIpIHsKLSAgICAgICAgLy8gVGhlcmUgaXMgbm8gZXhpc3RpbmcgZW5j
b2Rlci4KLSAgICAgICAgcmVjcmVhdGVfZW5jb2Rlcl8gPSB0cnVlOwotICAgICAgICByZXR1cm47
Ci0gICAgICB9Ci0KLSAgICAgIC8vIEV4dHJhY3QgdGhlIHNwZWVjaCBlbmNvZGVyIGZyb20gdGhl
IEFDTS4KLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuYyA9IHN0ZDo6bW92
ZSgqZW5jb2Rlcik7Ci0gICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBhdXRvIHN1Yl9lbmMg
PSBlbmMtPlJlY2xhaW1Db250YWluZWRFbmNvZGVycygpOwotICAgICAgICBpZiAoc3ViX2VuYy5l
bXB0eSgpKSB7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgUlRDX0NIRUNL
X0VRKDEsIHN1Yl9lbmMuc2l6ZSgpKTsKLQotICAgICAgICAvLyBSZXBsYWNlIGVuYyB3aXRoIGl0
cyBzdWIgZW5jb2Rlci4gV2UgbmVlZCB0byBwdXQgdGhlIHN1YiBlbmNvZGVyIGluCi0gICAgICAg
IC8vIGEgdGVtcG9yYXJ5IGZpcnN0LCBzaW5jZSBvdGhlcndpc2UgdGhlIG9sZCB2YWx1ZSBvZiBl
bmMgd291bGQgYmUKLSAgICAgICAgLy8gZGVzdHJveWVkIGJlZm9yZSB0aGUgbmV3IHZhbHVlIGdv
dCBhc3NpZ25lZCwgd2hpY2ggd291bGQgYmUgYmFkCi0gICAgICAgIC8vIHNpbmNlIHRoZSBuZXcg
dmFsdWUgaXMgYSBwYXJ0IG9mIHRoZSBvbGQgdmFsdWUuCi0gICAgICAgIGF1dG8gdG1wX2VuYyA9
IHN0ZDo6bW92ZShzdWJfZW5jWzBdKTsKLSAgICAgICAgZW5jID0gc3RkOjptb3ZlKHRtcF9lbmMp
OwotICAgICAgfQotCi0gICAgICAvLyBXcmFwIGl0IGluIGEgbmV3IGVuY29kZXIgc3RhY2sgYW5k
IHB1dCBpdCBiYWNrLgotICAgICAgY29kZWNfc3RhY2tfcGFyYW1zXy5zcGVlY2hfZW5jb2RlciA9
IHN0ZDo6bW92ZShlbmMpOwotICAgICAgKmVuY29kZXIgPSByYWMtPlJlbnRFbmNvZGVyU3RhY2so
JmNvZGVjX3N0YWNrX3BhcmFtc18pOwotICAgICAgaWYgKCEqZW5jb2RlcikgewotICAgICAgICBl
cnJvciA9IHRydWU7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmICghcmVjcmVhdGVfZW5jb2Rlcl8pIHsKLSAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgfQotCi0gIGlmICghc2VuZF9jb2RlY19pbnN0Xykgewot
ICAgIC8vIFdlIGRvbid0IGhhdmUgdGhlIGluZm9ybWF0aW9uIHdlIG5lZWQgdG8gY3JlYXRlIGEg
bmV3IHNwZWVjaCBlbmNvZGVyLgotICAgIC8vIChUaGlzIGlzIG5vdCBhbiBlcnJvci4pCi0gICAg
cmV0dXJuIHRydWU7Ci0gIH0KLQotICBjb2RlY19zdGFja19wYXJhbXNfLnNwZWVjaF9lbmNvZGVy
ID0gcmFjLT5SZW50RW5jb2Rlcigqc2VuZF9jb2RlY19pbnN0Xyk7Ci0gIGF1dG8gc3RhY2sgPSBy
YWMtPlJlbnRFbmNvZGVyU3RhY2soJmNvZGVjX3N0YWNrX3BhcmFtc18pOwotICBpZiAoIXN0YWNr
KSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGFjbS0+U2V0RW5jb2RlcihzdGQ6Om1vdmUo
c3RhY2spKTsKLSAgcmVjcmVhdGVfZW5jb2Rlcl8gPSBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZSBhY20yCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9hY20yL2NvZGVjX21hbmFnZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvY29kZWNfbWFuYWdl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmJhZDk2NzA4ODA1MDhjNzZmMTY4
MTU3Njk4NTMwNzA1NzFlZDhkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2FjbTIvY29kZWNfbWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19BVURJ
T19DT0RJTkdfQUNNMl9DT0RFQ19NQU5BR0VSX0hfCi0jZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09E
SU5HX0FDTTJfQ09ERUNfTUFOQUdFUl9IXwotCi0jaW5jbHVkZSA8bWFwPgotCi0jaW5jbHVkZSAi
YWJzbC90eXBlcy9vcHRpb25hbC5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9M
SU5UKGJ1aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9y
ZW50X2FfY29kZWMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1
ZGlvX2NvZGluZ19tb2R1bGUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNs
dWRlL2F1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9j
b25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIK
LQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIEF1ZGlvRGVjb2RlcjsKLWNsYXNzIEF1ZGlv
RW5jb2RlcjsKLQotbmFtZXNwYWNlIGFjbTIgewotCi1jbGFzcyBDb2RlY01hbmFnZXIgZmluYWwg
ewotIHB1YmxpYzoKLSAgQ29kZWNNYW5hZ2VyKCk7Ci0gIH5Db2RlY01hbmFnZXIoKTsKLQotICAv
LyBQYXJzZXMgdGhlIGdpdmVuIHNwZWNpZmljYXRpb24uIE9uIHN1Y2Nlc3MsIHJldHVybnMgdHJ1
ZSBhbmQgdXBkYXRlcyB0aGUKLSAgLy8gc3RvcmVkIENvZGVjSW5zdCBhbmQgc3RhY2sgcGFyYW1l
dGVyczsgb24gZXJyb3IsIHJldHVybnMgZmFsc2UuCi0gIGJvb2wgUmVnaXN0ZXJFbmNvZGVyKGNv
bnN0IENvZGVjSW5zdCYgc2VuZF9jb2RlYyk7Ci0KLSAgc3RhdGljIENvZGVjSW5zdCBGb3JnZUNv
ZGVjSW5zdChjb25zdCBBdWRpb0VuY29kZXIqIGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyKTsKLQot
ICBjb25zdCBDb2RlY0luc3QqIEdldENvZGVjSW5zdCgpIGNvbnN0IHsKLSAgICByZXR1cm4gc2Vu
ZF9jb2RlY19pbnN0XyA/ICYqc2VuZF9jb2RlY19pbnN0XyA6IG51bGxwdHI7Ci0gIH0KLQotICB2
b2lkIFVuc2V0Q29kZWNJbnN0KCkgeyBzZW5kX2NvZGVjX2luc3RfID0gYWJzbDo6bnVsbG9wdDsg
fQotCi0gIGNvbnN0IFJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVycyogR2V0U3RhY2tQYXJhbXMo
KSBjb25zdCB7Ci0gICAgcmV0dXJuICZjb2RlY19zdGFja19wYXJhbXNfOwotICB9Ci0gIFJlbnRB
Q29kZWM6OlN0YWNrUGFyYW1ldGVycyogR2V0U3RhY2tQYXJhbXMoKSB7IHJldHVybiAmY29kZWNf
c3RhY2tfcGFyYW1zXzsgfQotCi0gIGJvb2wgU2V0Q29weVJlZChib29sIGVuYWJsZSk7Ci0KLSAg
Ym9vbCBTZXRWQUQoYm9vbCBlbmFibGUsIEFDTVZBRE1vZGUgbW9kZSk7Ci0KLSAgYm9vbCBTZXRD
b2RlY0ZFQyhib29sIGVuYWJsZV9jb2RlY19mZWMpOwotCi0gIC8vIFVzZXMgdGhlIHByb3ZpZGVk
IFJlbnQtQS1Db2RlYyB0byBjcmVhdGUgYSBuZXcgZW5jb2RlciBzdGFjaywgaWYgd2UgaGF2ZSBh
Ci0gIC8vIGNvbXBsZXRlIHNwZWNpZmljYXRpb247IGlmIHNvLCBpdCBpcyB0aGVuIHBhc3NlZCB0
byBzZXRfZW5jb2Rlci4gT24gZXJyb3IsCi0gIC8vIHJldHVybnMgZmFsc2UuCi0gIGJvb2wgTWFr
ZUVuY29kZXIoUmVudEFDb2RlYyogcmFjLCBBdWRpb0NvZGluZ01vZHVsZSogYWNtKTsKLQotIHBy
aXZhdGU6Ci0gIHJ0Yzo6VGhyZWFkQ2hlY2tlciB0aHJlYWRfY2hlY2tlcl87Ci0gIGFic2w6Om9w
dGlvbmFsPENvZGVjSW5zdD4gc2VuZF9jb2RlY19pbnN0XzsKLSAgUmVudEFDb2RlYzo6U3RhY2tQ
YXJhbWV0ZXJzIGNvZGVjX3N0YWNrX3BhcmFtc187Ci0gIGJvb2wgcmVjcmVhdGVfZW5jb2Rlcl8g
PSB0cnVlOyAgLy8gTmVlZCB0byByZWNyZWF0ZSBlbmNvZGVyPwotCi0gIFJUQ19ESVNBTExPV19D
T1BZX0FORF9BU1NJR04oQ29kZWNNYW5hZ2VyKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBhY20y
Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0jZW5kaWYgIC8vIE1PRFVMRVNfQVVESU9fQ09ESU5H
X0FDTTJfQ09ERUNfTUFOQUdFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jb2RlY19tYW5h
Z2VyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jb2RlY19tYW5hZ2VyX3VuaXR0ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTVlYTVmNTJlMjU1NjI0OGQ2YzA3ZDQyZWMz
ZmEyYjRhM2IzODc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2FjbTIvY29kZWNfbWFuYWdlcl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBA
IC0xLDcwICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
Ci0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8bWVtb3J5
PgotCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jb2RlY19tYW5hZ2VyLmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuaCIKLSNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAidGVzdC9tb2NrX2F1ZGlvX2VuY29kZXIu
aCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgYWNtMiB7Ci0KLXVzaW5nIDo6dGVz
dGluZzo6UmV0dXJuOwotCi1uYW1lc3BhY2UgewotCi0vLyBDcmVhdGUgYSBNb2NrQXVkaW9FbmNv
ZGVyIHdpdGggc29tZSByZWFzb25hYmxlIGRlZmF1bHQgYmVoYXZpb3IuCi1zdGQ6OnVuaXF1ZV9w
dHI8TW9ja0F1ZGlvRW5jb2Rlcj4gQ3JlYXRlTW9ja0VuY29kZXIoKSB7Ci0gIGF1dG8gZW5jID0g
c3RkOjp1bmlxdWVfcHRyPE1vY2tBdWRpb0VuY29kZXI+KG5ldyBNb2NrQXVkaW9FbmNvZGVyKTsK
LSAgRVhQRUNUX0NBTEwoKmVuYywgU2FtcGxlUmF0ZUh6KCkpLldpbGxSZXBlYXRlZGx5KFJldHVy
big4MDAwKSk7Ci0gIEVYUEVDVF9DQUxMKCplbmMsIE51bUNoYW5uZWxzKCkpLldpbGxSZXBlYXRl
ZGx5KFJldHVybigxKSk7Ci0gIEVYUEVDVF9DQUxMKCplbmMsIE1heDEwTXNGcmFtZXNJbkFQYWNr
ZXQoKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDEpKTsKLSAgcmV0dXJuIGVuYzsKLX0KLQotfSAg
Ly8gbmFtZXNwYWNlCi0KLVRFU1QoQ29kZWNNYW5hZ2VyVGVzdCwgRXh0ZXJuYWxFbmNvZGVyRmVj
KSB7Ci0gIGF1dG8gZW5jMCA9IENyZWF0ZU1vY2tFbmNvZGVyKCk7Ci0gIGF1dG8gZW5jMSA9IENy
ZWF0ZU1vY2tFbmNvZGVyKCk7Ci0gIGF1dG8gZW5jMiA9IENyZWF0ZU1vY2tFbmNvZGVyKCk7Ci0g
IHsKLSAgICA6OnRlc3Rpbmc6OkluU2VxdWVuY2UgczsKLSAgICBFWFBFQ1RfQ0FMTCgqZW5jMCwg
U2V0RmVjKGZhbHNlKSkuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKLSAgICBFWFBFQ1RfQ0FMTCgq
ZW5jMSwgU2V0RmVjKHRydWUpKS5XaWxsT25jZShSZXR1cm4odHJ1ZSkpOwotICAgIEVYUEVDVF9D
QUxMKCplbmMyLCBTZXRGZWModHJ1ZSkpLldpbGxPbmNlKFJldHVybihmYWxzZSkpOwotICB9Ci0K
LSAgQ29kZWNNYW5hZ2VyIGNtOwotICBSZW50QUNvZGVjIHJhYzsKLQotICAvLyB1c2VfY29kZWNf
ZmVjIHN0YXJ0cyBvdXQgZmFsc2UuCi0gIEVYUEVDVF9GQUxTRShjbS5HZXRTdGFja1BhcmFtcygp
LT51c2VfY29kZWNfZmVjKTsKLSAgY20uR2V0U3RhY2tQYXJhbXMoKS0+c3BlZWNoX2VuY29kZXIg
PSBzdGQ6Om1vdmUoZW5jMCk7Ci0gIEVYUEVDVF9UUlVFKHJhYy5SZW50RW5jb2RlclN0YWNrKGNt
LkdldFN0YWNrUGFyYW1zKCkpKTsKLSAgRVhQRUNUX0ZBTFNFKGNtLkdldFN0YWNrUGFyYW1zKCkt
PnVzZV9jb2RlY19mZWMpOwotCi0gIC8vIFNldCBpdCB0byB0cnVlLgotICBFWFBFQ1RfRVEodHJ1
ZSwgY20uU2V0Q29kZWNGRUModHJ1ZSkpOwotICBFWFBFQ1RfVFJVRShjbS5HZXRTdGFja1BhcmFt
cygpLT51c2VfY29kZWNfZmVjKTsKLSAgY20uR2V0U3RhY2tQYXJhbXMoKS0+c3BlZWNoX2VuY29k
ZXIgPSBzdGQ6Om1vdmUoZW5jMSk7Ci0gIEVYUEVDVF9UUlVFKHJhYy5SZW50RW5jb2RlclN0YWNr
KGNtLkdldFN0YWNrUGFyYW1zKCkpKTsKLSAgRVhQRUNUX1RSVUUoY20uR2V0U3RhY2tQYXJhbXMo
KS0+dXNlX2NvZGVjX2ZlYyk7Ci0KLSAgLy8gU3dpdGNoIHRvIGEgY29kZWMgdGhhdCBkb2Vzbid0
IHN1cHBvcnQgaXQuCi0gIGNtLkdldFN0YWNrUGFyYW1zKCktPnNwZWVjaF9lbmNvZGVyID0gc3Rk
Ojptb3ZlKGVuYzIpOwotICBFWFBFQ1RfVFJVRShyYWMuUmVudEVuY29kZXJTdGFjayhjbS5HZXRT
dGFja1BhcmFtcygpKSk7Ci0gIEVYUEVDVF9GQUxTRShjbS5HZXRTdGFja1BhcmFtcygpLT51c2Vf
Y29kZWNfZmVjKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGFjbTIKLX0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNt
Mi9yZW50X2FfY29kZWMuY2MKaW5kZXggNDVkNzhkNzRhNWRkNGU4YTk2ZTg0MzUxMTA3YTNiNDE2
MmRjZDlhMi4uYmZkZGM0MmJjOTExODc2Y2Y1OWI2ZWRhODUwNzgwMWIxZDA2YTBkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2Ff
Y29kZWMuY2MKQEAgLTEzLDM0ICsxMyw5IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1
ZGlvX2VuY29kZXJfY25nLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L2c3MTEvYXVkaW9fZW5jb2Rlcl9wY20uaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rl
cl9nNzIyLmgiCi0jaWZkZWYgV0VCUlRDX0NPREVDX0lMQkMKLSNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuaCIgIC8vIG5vZ25jaGVj
awotI2VuZGlmCi0jaWZkZWYgV0VCUlRDX0NPREVDX0lTQUNGWAotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC9pbmNsdWRlL2F1ZGlvX2RlY29kZXJfaXNhY2Zp
eC5oIiAgLy8gbm9nbmNoZWNrCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L2lzYWMvZml4L2luY2x1ZGUvYXVkaW9fZW5jb2Rlcl9pc2FjZml4LmgiICAvLyBub2duY2hlY2sK
LSNlbmRpZgotI2lmZGVmIFdFQlJUQ19DT0RFQ19JU0FDCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi9pbmNsdWRlL2F1ZGlvX2RlY29kZXJfaXNhYy5oIiAg
Ly8gbm9nbmNoZWNrCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMv
bWFpbi9pbmNsdWRlL2F1ZGlvX2VuY29kZXJfaXNhYy5oIiAgLy8gbm9nbmNoZWNrCi0jZW5kaWYK
LSNpZmRlZiBXRUJSVENfQ09ERUNfT1BVUwotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5oIgotI2VuZGlmCi0jaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19lbmNvZGVyX3BjbTE2Yi5oIgot
I2lmZGVmIFdFQlJUQ19DT0RFQ19SRUQKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvcmVkL2F1ZGlvX2VuY29kZXJfY29weV9yZWQuaCIgIC8vIG5vZ25jaGVjawotI2VuZGlm
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fY29kZWNfZGF0YWJhc2Uu
aCIKIAotI2lmIGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUNGWCkgfHwgZGVmaW5lZChXRUJSVENf
Q09ERUNfSVNBQykKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9s
b2NrZWRfYmFuZHdpZHRoX2luZm8uaCIKLSNlbmRpZgotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5h
bWVzcGFjZSBhY20yIHsKIApAQCAtNTQsNyArMjksOCBAQCBhYnNsOjpvcHRpb25hbDxSZW50QUNv
ZGVjOjpDb2RlY0lkPiBSZW50QUNvZGVjOjpDb2RlY0lkQnlQYXJhbXMoCiAKIGFic2w6Om9wdGlv
bmFsPENvZGVjSW5zdD4gUmVudEFDb2RlYzo6Q29kZWNJbnN0QnlJZChDb2RlY0lkIGNvZGVjX2lk
KSB7CiAgIGFic2w6Om9wdGlvbmFsPGludD4gbWkgPSBDb2RlY0luZGV4RnJvbUlkKGNvZGVjX2lk
KTsKLSAgcmV0dXJuIG1pID8gYWJzbDo6b3B0aW9uYWw8Q29kZWNJbnN0PihEYXRhYmFzZSgpWypt
aV0pIDogYWJzbDo6bnVsbG9wdDsKKyAgcmV0dXJuIG1pID8gYWJzbDo6b3B0aW9uYWw8Q29kZWNJ
bnN0PihBQ01Db2RlY0RCOjpkYXRhYmFzZV9bKm1pXSkKKyAgICAgICAgICAgIDogYWJzbDo6bnVs
bG9wdDsKIH0KIAogYWJzbDo6b3B0aW9uYWw8UmVudEFDb2RlYzo6Q29kZWNJZD4gUmVudEFDb2Rl
Yzo6Q29kZWNJZEJ5SW5zdCgKQEAgLTgwLDIwICs1Niw2IEBAIGFic2w6Om9wdGlvbmFsPENvZGVj
SW5zdD4gUmVudEFDb2RlYzo6Q29kZWNJbnN0QnlQYXJhbXMoCiAgIHJldHVybiBjaTsKIH0KIAot
YWJzbDo6b3B0aW9uYWw8Ym9vbD4gUmVudEFDb2RlYzo6SXNTdXBwb3J0ZWROdW1DaGFubmVscyhD
b2RlY0lkIGNvZGVjX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2NoYW5uZWxzKSB7Ci0gIGF1dG8gaSA9IENvZGVj
SW5kZXhGcm9tSWQoY29kZWNfaWQpOwotICByZXR1cm4gaSA/IGFic2w6Om9wdGlvbmFsPGJvb2w+
KAotICAgICAgICAgICAgICAgICBBQ01Db2RlY0RCOjpjb2RlY19zZXR0aW5nc19bKmldLmNoYW5u
ZWxfc3VwcG9ydCA+PQotICAgICAgICAgICAgICAgICBudW1fY2hhbm5lbHMpCi0gICAgICAgICAg
IDogYWJzbDo6bnVsbG9wdDsKLX0KLQotcnRjOjpBcnJheVZpZXc8Y29uc3QgQ29kZWNJbnN0PiBS
ZW50QUNvZGVjOjpEYXRhYmFzZSgpIHsKLSAgcmV0dXJuIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IENv
ZGVjSW5zdD4oQUNNQ29kZWNEQjo6ZGF0YWJhc2VfLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOdW1iZXJPZkNvZGVjcygpKTsKLX0KLQogYWJzbDo6b3B0aW9uYWw8
TmV0RXFEZWNvZGVyPiBSZW50QUNvZGVjOjpOZXRFcURlY29kZXJGcm9tQ29kZWNJZCgKICAgICBD
b2RlY0lkIGNvZGVjX2lkLAogICAgIHNpemVfdCBudW1fY2hhbm5lbHMpIHsKQEAgLTEwNiwyMDAg
KzY4LDUgQEAgYWJzbDo6b3B0aW9uYWw8TmV0RXFEZWNvZGVyPiBSZW50QUNvZGVjOjpOZXRFcURl
Y29kZXJGcm9tQ29kZWNJZCgKICAgICAgICAgICAgICA6IG5lZDsKIH0KIAotUmVudEFDb2RlYzo6
UmVnaXN0cmF0aW9uUmVzdWx0IFJlbnRBQ29kZWM6OlJlZ2lzdGVyQ25nUGF5bG9hZFR5cGUoCi0g
ICAgc3RkOjptYXA8aW50LCBpbnQ+KiBwdF9tYXAsCi0gICAgY29uc3QgQ29kZWNJbnN0JiBjb2Rl
Y19pbnN0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoY29kZWNfaW5zdC5wbG5hbWUsICJDTiIpICE9
IDApCi0gICAgcmV0dXJuIFJlZ2lzdHJhdGlvblJlc3VsdDo6a1NraXA7Ci0gIHN3aXRjaCAoY29k
ZWNfaW5zdC5wbGZyZXEpIHsKLSAgICBjYXNlIDgwMDA6Ci0gICAgY2FzZSAxNjAwMDoKLSAgICBj
YXNlIDMyMDAwOgotICAgIGNhc2UgNDgwMDA6Ci0gICAgICAoKnB0X21hcClbY29kZWNfaW5zdC5w
bGZyZXFdID0gY29kZWNfaW5zdC5wbHR5cGU7Ci0gICAgICByZXR1cm4gUmVnaXN0cmF0aW9uUmVz
dWx0OjprT2s7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBSZWdpc3RyYXRpb25SZXN1bHQ6
OmtCYWRGcmVxOwotICB9Ci19Ci0KLVJlbnRBQ29kZWM6OlJlZ2lzdHJhdGlvblJlc3VsdCBSZW50
QUNvZGVjOjpSZWdpc3RlclJlZFBheWxvYWRUeXBlKAotICAgIHN0ZDo6bWFwPGludCwgaW50Piog
cHRfbWFwLAotICAgIGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCkgewotICBpZiAoU1RSX0NB
U0VfQ01QKGNvZGVjX2luc3QucGxuYW1lLCAiUkVEIikgIT0gMCkKLSAgICByZXR1cm4gUmVnaXN0
cmF0aW9uUmVzdWx0OjprU2tpcDsKLSAgc3dpdGNoIChjb2RlY19pbnN0LnBsZnJlcSkgewotICAg
IGNhc2UgODAwMDoKLSAgICAgICgqcHRfbWFwKVtjb2RlY19pbnN0LnBsZnJlcV0gPSBjb2RlY19p
bnN0LnBsdHlwZTsKLSAgICAgIHJldHVybiBSZWdpc3RyYXRpb25SZXN1bHQ6OmtPazsKLSAgICBk
ZWZhdWx0OgotICAgICAgcmV0dXJuIFJlZ2lzdHJhdGlvblJlc3VsdDo6a0JhZEZyZXE7Ci0gIH0K
LX0KLQotbmFtZXNwYWNlIHsKLQotLy8gUmV0dXJucyBhIG5ldyBzcGVlY2ggZW5jb2Rlciwgb3Ig
bnVsbCBvbiBlcnJvci4KLS8vIFRPRE8oa3dpYmVyZyk6IERvbid0IGhhbmRsZSBlcnJvcnMgaGVy
ZSAoYnVnIDUwMzMpCi1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBDcmVhdGVFbmNvZGVy
KAotICAgIGNvbnN0IENvZGVjSW5zdCYgc3BlZWNoX2luc3QsCi0gICAgY29uc3QgcnRjOjpzY29w
ZWRfcmVmcHRyPExvY2tlZElzYWNCYW5kd2lkdGhJbmZvPiYgYndpbmZvKSB7Ci0jaWYgZGVmaW5l
ZChXRUJSVENfQ09ERUNfSVNBQ0ZYKQotICBpZiAoU1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBs
bmFtZSwgImlzYWMiKSA9PSAwKQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNv
ZGVyPigKLSAgICAgICAgbmV3IEF1ZGlvRW5jb2RlcklzYWNGaXhJbXBsKHNwZWVjaF9pbnN0LCBi
d2luZm8pKTsKLSNlbmRpZgotI2lmIGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUMpCi0gIGlmIChT
VFJfQ0FTRV9DTVAoc3BlZWNoX2luc3QucGxuYW1lLCAiaXNhYyIpID09IDApCi0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KAotICAgICAgICBuZXcgQXVkaW9FbmNvZGVy
SXNhY0Zsb2F0SW1wbChzcGVlY2hfaW5zdCwgYndpbmZvKSk7Ci0jZW5kaWYKLSNpZmRlZiBXRUJS
VENfQ09ERUNfT1BVUwotICBpZiAoU1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBsbmFtZSwgIm9w
dXMiKSA9PSAwKQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPihuZXcg
QXVkaW9FbmNvZGVyT3B1c0ltcGwoc3BlZWNoX2luc3QpKTsKLSNlbmRpZgotICBpZiAoU1RSX0NB
U0VfQ01QKHNwZWVjaF9pbnN0LnBsbmFtZSwgInBjbXUiKSA9PSAwKQotICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPihuZXcgQXVkaW9FbmNvZGVyUGNtVShzcGVlY2hfaW5z
dCkpOwotICBpZiAoU1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBsbmFtZSwgInBjbWEiKSA9PSAw
KQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPihuZXcgQXVkaW9FbmNv
ZGVyUGNtQShzcGVlY2hfaW5zdCkpOwotICBpZiAoU1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBs
bmFtZSwgImwxNiIpID09IDApCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29k
ZXI+KG5ldyBBdWRpb0VuY29kZXJQY20xNkIoc3BlZWNoX2luc3QpKTsKLSNpZmRlZiBXRUJSVENf
Q09ERUNfSUxCQwotICBpZiAoU1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBsbmFtZSwgImlsYmMi
KSA9PSAwKQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPihuZXcgQXVk
aW9FbmNvZGVySWxiY0ltcGwoc3BlZWNoX2luc3QpKTsKLSNlbmRpZgotICBpZiAoU1RSX0NBU0Vf
Q01QKHNwZWVjaF9pbnN0LnBsbmFtZSwgImc3MjIiKSA9PSAwKQotICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9FbmNvZGVyPihuZXcgQXVkaW9FbmNvZGVyRzcyMkltcGwoc3BlZWNoX2lu
c3QpKTsKLSAgUlRDX0xPR19GKExTX0VSUk9SKSA8PCAiQ291bGQgbm90IGNyZWF0ZSBlbmNvZGVy
IG9mIHR5cGUgIgotICAgICAgICAgICAgICAgICAgICAgIDw8IHNwZWVjaF9pbnN0LnBsbmFtZTsK
LSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KCk7Ci19Ci0KLXN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0VuY29kZXI+IENyZWF0ZVJlZEVuY29kZXIoCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2RlciwKLSAgICBpbnQgcmVkX3BheWxvYWRfdHlwZSkgewot
I2lmZGVmIFdFQlJUQ19DT0RFQ19SRUQKLSAgQXVkaW9FbmNvZGVyQ29weVJlZDo6Q29uZmlnIGNv
bmZpZzsKLSAgY29uZmlnLnBheWxvYWRfdHlwZSA9IHJlZF9wYXlsb2FkX3R5cGU7Ci0gIGNvbmZp
Zy5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShlbmNvZGVyKTsKLSAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0VuY29kZXI+KAotICAgICAgbmV3IEF1ZGlvRW5jb2RlckNvcHlSZWQoc3Rk
Ojptb3ZlKGNvbmZpZykpKTsKLSNlbHNlCi0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9F
bmNvZGVyPigpOwotI2VuZGlmCi19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IENy
ZWF0ZUNuZ0VuY29kZXIoCi0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2Rl
ciwKLSAgICBpbnQgcGF5bG9hZF90eXBlLAotICAgIEFDTVZBRE1vZGUgdmFkX21vZGUpIHsKLSAg
QXVkaW9FbmNvZGVyQ25nOjpDb25maWcgY29uZmlnOwotICBjb25maWcubnVtX2NoYW5uZWxzID0g
ZW5jb2Rlci0+TnVtQ2hhbm5lbHMoKTsKLSAgY29uZmlnLnBheWxvYWRfdHlwZSA9IHBheWxvYWRf
dHlwZTsKLSAgY29uZmlnLnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKGVuY29kZXIpOwotICBz
d2l0Y2ggKHZhZF9tb2RlKSB7Ci0gICAgY2FzZSBWQUROb3JtYWw6Ci0gICAgICBjb25maWcudmFk
X21vZGUgPSBWYWQ6OmtWYWROb3JtYWw7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFZBRExvd0Jp
dHJhdGU6Ci0gICAgICBjb25maWcudmFkX21vZGUgPSBWYWQ6OmtWYWRMb3dCaXRyYXRlOwotICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBWQURBZ2dyOgotICAgICAgY29uZmlnLnZhZF9tb2RlID0gVmFk
OjprVmFkQWdncmVzc2l2ZTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgVkFEVmVyeUFnZ3I6Ci0g
ICAgICBjb25maWcudmFkX21vZGUgPSBWYWQ6OmtWYWRWZXJ5QWdncmVzc2l2ZTsKLSAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBSVENfRkFUQUwoKTsKLSAgfQotICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4obmV3IEF1ZGlvRW5jb2RlckNuZyhzdGQ6Om1vdmUo
Y29uZmlnKSkpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPiBDcmVhdGVJc2Fj
RGVjb2RlcigKLSAgICBpbnQgc2FtcGxlX3JhdGVfaHosCi0gICAgY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPExvY2tlZElzYWNCYW5kd2lkdGhJbmZvPiYgYndpbmZvKSB7Ci0jaWYgZGVmaW5lZChX
RUJSVENfQ09ERUNfSVNBQ0ZYKQotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rl
cj4oCi0gICAgICBuZXcgQXVkaW9EZWNvZGVySXNhY0ZpeEltcGwoc2FtcGxlX3JhdGVfaHosIGJ3
aW5mbykpOwotI2VsaWYgZGVmaW5lZChXRUJSVENfQ09ERUNfSVNBQykKLSAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0RlY29kZXI+KAotICAgICAgbmV3IEF1ZGlvRGVjb2RlcklzYWNGbG9h
dEltcGwoc2FtcGxlX3JhdGVfaHosIGJ3aW5mbykpOwotI2Vsc2UKLSAgUlRDX0ZBVEFMKCkgPDwg
ImlTQUMgaXMgbm90IHN1cHBvcnRlZC4iOwotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
RGVjb2Rlcj4oKTsKLSNlbmRpZgotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotUmVudEFDb2RlYzo6
UmVudEFDb2RlYygpIHsKLSNpZiBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FDRlgpIHx8IGRlZmlu
ZWQoV0VCUlRDX0NPREVDX0lTQUMpCi0gIGlzYWNfYmFuZHdpZHRoX2luZm9fID0gbmV3IExvY2tl
ZElzYWNCYW5kd2lkdGhJbmZvOwotI2VuZGlmCi19Ci1SZW50QUNvZGVjOjp+UmVudEFDb2RlYygp
ID0gZGVmYXVsdDsKLQotc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gUmVudEFDb2RlYzo6
UmVudEVuY29kZXIoCi0gICAgY29uc3QgQ29kZWNJbnN0JiBjb2RlY19pbnN0KSB7Ci0gIHJldHVy
biBDcmVhdGVFbmNvZGVyKGNvZGVjX2luc3QsIGlzYWNfYmFuZHdpZHRoX2luZm9fKTsKLX0KLQot
UmVudEFDb2RlYzo6U3RhY2tQYXJhbWV0ZXJzOjpTdGFja1BhcmFtZXRlcnMoKSB7Ci0gIC8vIFJl
Z2lzdGVyIHRoZSBkZWZhdWx0IHBheWxvYWQgdHlwZXMgZm9yIFJFRCBhbmQgQ05HLgotICBmb3Ig
KGNvbnN0IENvZGVjSW5zdCYgY2kgOiBSZW50QUNvZGVjOjpEYXRhYmFzZSgpKSB7Ci0gICAgUmVu
dEFDb2RlYzo6UmVnaXN0ZXJDbmdQYXlsb2FkVHlwZSgmY25nX3BheWxvYWRfdHlwZXMsIGNpKTsK
LSAgICBSZW50QUNvZGVjOjpSZWdpc3RlclJlZFBheWxvYWRUeXBlKCZyZWRfcGF5bG9hZF90eXBl
cywgY2kpOwotICB9Ci19Ci0KLVJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVyczo6flN0YWNrUGFy
YW1ldGVycygpID0gZGVmYXVsdDsKLQotc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gUmVu
dEFDb2RlYzo6UmVudEVuY29kZXJTdGFjaygKLSAgICBTdGFja1BhcmFtZXRlcnMqIHBhcmFtKSB7
Ci0gIGlmICghcGFyYW0tPnNwZWVjaF9lbmNvZGVyKQotICAgIHJldHVybiBudWxscHRyOwotCi0g
IGlmIChwYXJhbS0+dXNlX2NvZGVjX2ZlYykgewotICAgIC8vIFN3aXRjaCBGRUMgb24uIE9uIGZh
aWx1cmUsIHJlbWVtYmVyIHRoYXQgRkVDIGlzIG9mZi4KLSAgICBpZiAoIXBhcmFtLT5zcGVlY2hf
ZW5jb2Rlci0+U2V0RmVjKHRydWUpKQotICAgICAgcGFyYW0tPnVzZV9jb2RlY19mZWMgPSBmYWxz
ZTsKLSAgfSBlbHNlIHsKLSAgICAvLyBTd2l0Y2ggRkVDIG9mZi4gVGhpcyBzaG91bGRuJ3QgZmFp
bC4KLSAgICBjb25zdCBib29sIHN1Y2Nlc3MgPSBwYXJhbS0+c3BlZWNoX2VuY29kZXItPlNldEZl
YyhmYWxzZSk7Ci0gICAgUlRDX0RDSEVDSyhzdWNjZXNzKTsKLSAgfQotCi0gIGF1dG8gcHQgPSBb
JnBhcmFtXShjb25zdCBzdGQ6Om1hcDxpbnQsIGludD4mIG0pIHsKLSAgICBhdXRvIGl0ID0gbS5m
aW5kKHBhcmFtLT5zcGVlY2hfZW5jb2Rlci0+U2FtcGxlUmF0ZUh6KCkpOwotICAgIHJldHVybiBp
dCA9PSBtLmVuZCgpID8gYWJzbDo6bnVsbG9wdCA6IGFic2w6Om9wdGlvbmFsPGludD4oaXQtPnNl
Y29uZCk7Ci0gIH07Ci0gIGF1dG8gY25nX3B0ID0gcHQocGFyYW0tPmNuZ19wYXlsb2FkX3R5cGVz
KTsKLSAgcGFyYW0tPnVzZV9jbmcgPQotICAgICAgcGFyYW0tPnVzZV9jbmcgJiYgY25nX3B0ICYm
IHBhcmFtLT5zcGVlY2hfZW5jb2Rlci0+TnVtQ2hhbm5lbHMoKSA9PSAxOwotICBhdXRvIHJlZF9w
dCA9IHB0KHBhcmFtLT5yZWRfcGF5bG9hZF90eXBlcyk7Ci0gIHBhcmFtLT51c2VfcmVkID0gcGFy
YW0tPnVzZV9yZWQgJiYgcmVkX3B0OwotCi0gIGlmIChwYXJhbS0+dXNlX2NuZyB8fCBwYXJhbS0+
dXNlX3JlZCkgewotICAgIC8vIFRoZSBSRUQgYW5kIENORyBlbmNvZGVycyBuZWVkIHRvIGJlIGlu
IHN5bmMgd2l0aCB0aGUgc3BlZWNoIGVuY29kZXIsIHNvCi0gICAgLy8gcmVzZXQgdGhlIGxhdHRl
ciB0byBlbnN1cmUgaXRzIGJ1ZmZlciBpcyBlbXB0eS4KLSAgICBwYXJhbS0+c3BlZWNoX2VuY29k
ZXItPlJlc2V0KCk7Ci0gIH0KLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2Rl
cl9zdGFjayA9Ci0gICAgICBzdGQ6Om1vdmUocGFyYW0tPnNwZWVjaF9lbmNvZGVyKTsKLSAgaWYg
KHBhcmFtLT51c2VfcmVkKSB7Ci0gICAgZW5jb2Rlcl9zdGFjayA9IENyZWF0ZVJlZEVuY29kZXIo
c3RkOjptb3ZlKGVuY29kZXJfc3RhY2spLCAqcmVkX3B0KTsKLSAgfQotICBpZiAocGFyYW0tPnVz
ZV9jbmcpIHsKLSAgICBlbmNvZGVyX3N0YWNrID0KLSAgICAgICAgQ3JlYXRlQ25nRW5jb2Rlcihz
dGQ6Om1vdmUoZW5jb2Rlcl9zdGFjayksICpjbmdfcHQsIHBhcmFtLT52YWRfbW9kZSk7Ci0gIH0K
LSAgcmV0dXJuIGVuY29kZXJfc3RhY2s7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RlY29k
ZXI+IFJlbnRBQ29kZWM6OlJlbnRJc2FjRGVjb2RlcihpbnQgc2FtcGxlX3JhdGVfaHopIHsKLSAg
cmV0dXJuIENyZWF0ZUlzYWNEZWNvZGVyKHNhbXBsZV9yYXRlX2h6LCBpc2FjX2JhbmR3aWR0aF9p
bmZvXyk7Ci19Ci0KIH0gIC8vIG5hbWVzcGFjZSBhY20yCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50
X2FfY29kZWMuaAppbmRleCBiMGFkMzgyZDhhOWIyNDNkMmNjZWI3YWEwMTNjNTBmMDI1MDEwYjUx
Li4yY2YxYzZlMThjOWU2ZjhiMDYwYzA1NDA4YzYyNWU0M2RhMmQ4NjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9hY20yL3JlbnRfYV9jb2RlYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmgK
QEAgLTMxLDggKzMxLDcgQEAgY2xhc3MgTG9ja2VkSXNhY0JhbmR3aWR0aEluZm87CiAKIG5hbWVz
cGFjZSBhY20yIHsKIAotY2xhc3MgUmVudEFDb2RlYyB7Ci0gcHVibGljOgorc3RydWN0IFJlbnRB
Q29kZWMgewogICBlbnVtIGNsYXNzIENvZGVjSWQgewogI2lmIGRlZmluZWQoV0VCUlRDX0NPREVD
X0lTQUMpIHx8IGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUNGWCkKICAgICBrSVNBQywKQEAgLTEz
Myw2NCArMTMyLDkgQEAgY2xhc3MgUmVudEFDb2RlYyB7CiAgICAgcmV0dXJuIHBheWxvYWRfdHlw
ZSA+PSAwICYmIHBheWxvYWRfdHlwZSA8PSAxMjc7CiAgIH0KIAotICBzdGF0aWMgcnRjOjpBcnJh
eVZpZXc8Y29uc3QgQ29kZWNJbnN0PiBEYXRhYmFzZSgpOwotCi0gIHN0YXRpYyBhYnNsOjpvcHRp
b25hbDxib29sPiBJc1N1cHBvcnRlZE51bUNoYW5uZWxzKENvZGVjSWQgY29kZWNfaWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBu
dW1fY2hhbm5lbHMpOwotCiAgIHN0YXRpYyBhYnNsOjpvcHRpb25hbDxOZXRFcURlY29kZXI+IE5l
dEVxRGVjb2RlckZyb21Db2RlY0lkKAogICAgICAgQ29kZWNJZCBjb2RlY19pZCwKICAgICAgIHNp
emVfdCBudW1fY2hhbm5lbHMpOwotCi0gIC8vIFBhcnNlIGNvZGVjX2luc3QgYW5kIGV4dHJhY3Qg
cGF5bG9hZCB0eXBlcy4gSWYgdGhlIGdpdmVuIENvZGVjSW5zdCB3YXMgZm9yCi0gIC8vIHRoZSB3
cm9uZyBzb3J0IG9mIGNvZGVjLCByZXR1cm4ga1NraXA7IG90aGVyd2lzZSwgaWYgdGhlIHJhdGUg
d2FzIGlsbGVnYWwsCi0gIC8vIHJldHVybiBrQmFkRnJlcTsgb3RoZXJ3aXNlLCB1cGRhdGUgdGhl
IGdpdmVuIFJUUCB0aW1lc3RhbXAgcmF0ZSAoSHopIC0+Ci0gIC8vIHBheWxvYWQgdHlwZSBtYXAg
YW5kIHJldHVybiBrT2suCi0gIGVudW0gY2xhc3MgUmVnaXN0cmF0aW9uUmVzdWx0IHsga09rLCBr
U2tpcCwga0JhZEZyZXEgfTsKLSAgc3RhdGljIFJlZ2lzdHJhdGlvblJlc3VsdCBSZWdpc3RlckNu
Z1BheWxvYWRUeXBlKHN0ZDo6bWFwPGludCwgaW50PiogcHRfbWFwLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNJbnN0JiBjb2Rl
Y19pbnN0KTsKLSAgc3RhdGljIFJlZ2lzdHJhdGlvblJlc3VsdCBSZWdpc3RlclJlZFBheWxvYWRU
eXBlKHN0ZDo6bWFwPGludCwgaW50PiogcHRfbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNJbnN0JiBjb2RlY19pbnN0KTsK
LQotICBSZW50QUNvZGVjKCk7Ci0gIH5SZW50QUNvZGVjKCk7Ci0KLSAgLy8gQ3JlYXRlcyBhbmQg
cmV0dXJucyBhbiBhdWRpbyBlbmNvZGVyIGJ1aWx0IHRvIHRoZSBnaXZlbiBzcGVjaWZpY2F0aW9u
LgotICAvLyBSZXR1cm5zIG51bGwgaW4gY2FzZSBvZiBlcnJvci4KLSAgc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvRW5jb2Rlcj4gUmVudEVuY29kZXIoY29uc3QgQ29kZWNJbnN0JiBjb2RlY19pbnN0KTsK
LQotICBzdHJ1Y3QgU3RhY2tQYXJhbWV0ZXJzIHsKLSAgICBTdGFja1BhcmFtZXRlcnMoKTsKLSAg
ICB+U3RhY2tQYXJhbWV0ZXJzKCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVy
PiBzcGVlY2hfZW5jb2RlcjsKLQotICAgIGJvb2wgdXNlX2NvZGVjX2ZlYyA9IGZhbHNlOwotICAg
IGJvb2wgdXNlX3JlZCA9IGZhbHNlOwotICAgIGJvb2wgdXNlX2NuZyA9IGZhbHNlOwotICAgIEFD
TVZBRE1vZGUgdmFkX21vZGUgPSBWQUROb3JtYWw7Ci0KLSAgICAvLyBNYXBzIGZyb20gUlRQIHRp
bWVzdGFtcCByYXRlIChpbiBIeikgdG8gcGF5bG9hZCB0eXBlLgotICAgIHN0ZDo6bWFwPGludCwg
aW50PiBjbmdfcGF5bG9hZF90eXBlczsKLSAgICBzdGQ6Om1hcDxpbnQsIGludD4gcmVkX3BheWxv
YWRfdHlwZXM7Ci0gIH07Ci0KLSAgLy8gQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBhdWRpbyBlbmNv
ZGVyIHN0YWNrIGNvbnN0cnVjdGVkIHRvIHRoZSBnaXZlbgotICAvLyBzcGVjaWZpY2F0aW9uLiBJ
ZiB0aGUgc3BlY2lmaWNhdGlvbiBpc24ndCBjb21wYXRpYmxlIHdpdGggdGhlIGVuY29kZXIsIGl0
Ci0gIC8vIHdpbGwgYmUgY2hhbmdlZCB0byBtYXRjaCAodGhpbmdzIHdpbGwgYmUgc3dpdGNoZWQg
b2ZmKS4gVGhlIHNwZWVjaCBlbmNvZGVyCi0gIC8vIHdpbGwgYmUgc3RvbGVuLiBJZiB0aGUgc3Bl
Y2lmaWNhdGlvbiBpc24ndCBjb21wbGV0ZSwgcmV0dXJucyBudWxscHRyLgotICBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9FbmNvZGVyPiBSZW50RW5jb2RlclN0YWNrKFN0YWNrUGFyYW1ldGVycyogcGFy
YW0pOwotCi0gIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYW4gaVNBQyBkZWNvZGVyLgotICBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPiBSZW50SXNhY0RlY29kZXIoaW50IHNhbXBsZV9yYXRl
X2h6KTsKLQotIHByaXZhdGU6Ci0gIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IHNwZWVj
aF9lbmNvZGVyXzsKLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gY25nX2VuY29kZXJf
OwotICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiByZWRfZW5jb2Rlcl87Ci0gIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxMb2NrZWRJc2FjQmFuZHdpZHRoSW5mbz4gaXNhY19iYW5kd2lkdGhfaW5m
b187Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW50QUNvZGVjKTsKIH07CiAK
IH0gIC8vIG5hbWVzcGFjZSBhY20yCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2Rl
Y191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjX3VuaXR0ZXN0LmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDMzMjljZmIxMTM1OWNmNWQyN2MzNDE3YTE5OTgz
Y2E4MTZkYjVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2FjbTIvcmVudF9hX2NvZGVjX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEs
MjI4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8bWVtb3J5Pgot
Ci0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvYWNtMi9yZW50X2FfY29kZWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIK
LSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAidGVzdC9tb2NrX2F1ZGlvX2VuY29k
ZXIuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgYWNtMiB7Ci0KLXVzaW5nIDo6
dGVzdGluZzo6UmV0dXJuOwotCi1uYW1lc3BhY2UgewotCi1jb25zdCBpbnQga0RhdGFMZW5ndGhT
YW1wbGVzID0gODA7Ci1jb25zdCBpbnQga1BhY2tldFNpemVTYW1wbGVzID0gMiAqIGtEYXRhTGVu
Z3RoU2FtcGxlczsKLWNvbnN0IGludDE2X3Qga1plcm9EYXRhW2tEYXRhTGVuZ3RoU2FtcGxlc10g
PSB7MH07Ci1jb25zdCBDb2RlY0luc3Qga0RlZmF1bHRDb2RlY0luc3QgPSB7MCwgInBjbXUiLCA4
MDAwLCBrUGFja2V0U2l6ZVNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMSwgNjQwMDB9OwotY29uc3QgaW50IGtDbmdQdCA9IDEzOwotCi1jbGFzcyBNYXJrZXIg
ZmluYWwgewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKE1hcmssIHZvaWQoc3RkOjpzdHJpbmcg
ZGVzYykpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlCi0KLWNsYXNzIFJlbnRBQ29kZWNUZXN0RiA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdm9pZCBDcmVhdGVDb2Rl
YygpIHsKLSAgICBhdXRvIHNwZWVjaF9lbmNvZGVyID0gcmVudF9hX2NvZGVjXy5SZW50RW5jb2Rl
cihrRGVmYXVsdENvZGVjSW5zdCk7Ci0gICAgQVNTRVJUX1RSVUUoc3BlZWNoX2VuY29kZXIpOwot
ICAgIFJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVycyBwYXJhbTsKLSAgICBwYXJhbS51c2VfY25n
ID0gdHJ1ZTsKLSAgICBwYXJhbS5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShzcGVlY2hfZW5j
b2Rlcik7Ci0gICAgZW5jb2Rlcl8gPSByZW50X2FfY29kZWNfLlJlbnRFbmNvZGVyU3RhY2soJnBh
cmFtKTsKLSAgfQotCi0gIHZvaWQgRW5jb2RlQW5kVmVyaWZ5KHNpemVfdCBleHBlY3RlZF9vdXRf
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBleHBlY3RlZF90aW1lc3Rh
bXAsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBleHBlY3RlZF9wYXlsb2FkX3R5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgIGludCBleHBlY3RlZF9zZW5kX2V2ZW5faWZfZW1wdHkpIHsK
LSAgICBydGM6OkJ1ZmZlciBvdXQ7Ci0gICAgQXVkaW9FbmNvZGVyOjpFbmNvZGVkSW5mbyBlbmNv
ZGVkX2luZm87Ci0gICAgZW5jb2RlZF9pbmZvID0gZW5jb2Rlcl8tPkVuY29kZSh0aW1lc3RhbXBf
LCBrWmVyb0RhdGEsICZvdXQpOwotICAgIHRpbWVzdGFtcF8gKz0ga0RhdGFMZW5ndGhTYW1wbGVz
OwotICAgIEVYUEVDVF9UUlVFKGVuY29kZWRfaW5mby5yZWR1bmRhbnQuZW1wdHkoKSk7Ci0gICAg
RVhQRUNUX0VRKGV4cGVjdGVkX291dF9sZW5ndGgsIGVuY29kZWRfaW5mby5lbmNvZGVkX2J5dGVz
KTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfdGltZXN0YW1wLCBlbmNvZGVkX2luZm8uZW5jb2Rl
ZF90aW1lc3RhbXApOwotICAgIGlmIChleHBlY3RlZF9wYXlsb2FkX3R5cGUgPj0gMCkKLSAgICAg
IEVYUEVDVF9FUShleHBlY3RlZF9wYXlsb2FkX3R5cGUsIGVuY29kZWRfaW5mby5wYXlsb2FkX3R5
cGUpOwotICAgIGlmIChleHBlY3RlZF9zZW5kX2V2ZW5faWZfZW1wdHkgPj0gMCkKLSAgICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxib29sPihleHBlY3RlZF9zZW5kX2V2ZW5faWZfZW1wdHkpLAot
ICAgICAgICAgICAgICAgIGVuY29kZWRfaW5mby5zZW5kX2V2ZW5faWZfZW1wdHkpOwotICB9Ci0K
LSAgUmVudEFDb2RlYyByZW50X2FfY29kZWNfOwotICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNv
ZGVyPiBlbmNvZGVyXzsKLSAgdWludDMyX3QgdGltZXN0YW1wXyA9IDA7Ci19OwotCi0vLyBUaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCBDTkcgZnJhbWVzIGFyZSBkZWxpdmVyZWQgYXMgZXhwZWN0ZWQu
IFNpbmNlIHRoZSBmcmFtZQotLy8gc2l6ZSBpcyBzZXQgdG8gMjAgbXMsIHdlIGV4cGVjdCB0aGUg
Zmlyc3QgZW5jb2RlIGNhbGwgdG8gcHJvZHVjZSBubyBvdXRwdXQKLS8vICh3aGljaCBpcyBzaWdu
YWxlZCBhcyAwIGJ5dGVzIG91dHB1dCBvZiB0eXBlIGtOb0VuY29kaW5nKS4gVGhlIG5leHQgZW5j
b2RlCi0vLyBjYWxsIHNob3VsZCBwcm9kdWNlIG9uZSBTSUQgZnJhbWUgb2YgOSBieXRlcy4gVGhl
IHRoaXJkIGNhbGwgc2hvdWxkIG5vdAotLy8gcmVzdWx0IGluIGFueSBvdXRwdXQgKGp1c3QgbGlr
ZSB0aGUgZmlyc3Qgb25lKS4gVGhlIGZvdXJ0aCBhbmQgZmluYWwgZW5jb2RlCi0vLyBjYWxsIHNo
b3VsZCBwcm9kdWNlIGFuICJlbXB0eSBmcmFtZSIsIHdoaWNoIGlzIGxpa2Ugbm8gb3V0cHV0LCBi
dXQgd2l0aAotLy8gQXVkaW9FbmNvZGVyOjpFbmNvZGVkSW5mbzo6c2VuZF9ldmVuX2lmX2VtcHR5
IHNldCB0byB0cnVlLiAoVGhlIHJlYXNvbiB0bwotLy8gcHJvZHVjZSBhbiBlbXB0eSBmcmFtZSBp
cyB0byBkcml2ZSBzZW5kaW5nIG9mIERUTUYgcGFja2V0cyBpbiB0aGUgUlRQL1JUQ1AKLS8vIG1v
ZHVsZS4pCi1URVNUX0YoUmVudEFDb2RlY1Rlc3RGLCBWZXJpZnlDbmdGcmFtZXMpIHsKLSAgQ3Jl
YXRlQ29kZWMoKTsKLSAgdWludDMyX3QgZXhwZWN0ZWRfdGltZXN0YW1wID0gdGltZXN0YW1wXzsK
LSAgLy8gVmVyaWZ5IG5vIGZyYW1lLgotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJGaXJzdCBlbmNv
ZGluZyIpOwotICAgIEVuY29kZUFuZFZlcmlmeSgwLCBleHBlY3RlZF90aW1lc3RhbXAsIC0xLCAt
MSk7Ci0gIH0KLQotICAvLyBWZXJpZnkgU0lEIGZyYW1lIGRlbGl2ZXJlZC4KLSAgewotICAgIFND
T1BFRF9UUkFDRSgiU2Vjb25kIGVuY29kaW5nIik7Ci0gICAgRW5jb2RlQW5kVmVyaWZ5KDksIGV4
cGVjdGVkX3RpbWVzdGFtcCwga0NuZ1B0LCAxKTsKLSAgfQotCi0gIC8vIFZlcmlmeSBubyBmcmFt
ZS4KLSAgewotICAgIFNDT1BFRF9UUkFDRSgiVGhpcmQgZW5jb2RpbmciKTsKLSAgICBFbmNvZGVB
bmRWZXJpZnkoMCwgZXhwZWN0ZWRfdGltZXN0YW1wLCAtMSwgLTEpOwotICB9Ci0KLSAgLy8gVmVy
aWZ5IE5vRW5jb2RpbmcuCi0gIGV4cGVjdGVkX3RpbWVzdGFtcCArPSAyICoga0RhdGFMZW5ndGhT
YW1wbGVzOwotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJGb3VydGggZW5jb2RpbmciKTsKLSAgICBF
bmNvZGVBbmRWZXJpZnkoMCwgZXhwZWN0ZWRfdGltZXN0YW1wLCBrQ25nUHQsIDEpOwotICB9Ci19
Ci0KLVRFU1QoUmVudEFDb2RlY1Rlc3QsIEV4dGVybmFsRW5jb2RlcikgewotICBjb25zdCBpbnQg
a1NhbXBsZVJhdGVIeiA9IDgwMDA7Ci0gIGF1dG8qIGV4dGVybmFsX2VuY29kZXIgPSBuZXcgTW9j
a0F1ZGlvRW5jb2RlcjsKLSAgRVhQRUNUX0NBTEwoKmV4dGVybmFsX2VuY29kZXIsIFNhbXBsZVJh
dGVIeigpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihrU2FtcGxlUmF0ZUh6KSk7Ci0g
IEVYUEVDVF9DQUxMKCpleHRlcm5hbF9lbmNvZGVyLCBOdW1DaGFubmVscygpKS5XaWxsUmVwZWF0
ZWRseShSZXR1cm4oMSkpOwotICBFWFBFQ1RfQ0FMTCgqZXh0ZXJuYWxfZW5jb2RlciwgU2V0RmVj
KGZhbHNlKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKHRydWUpKTsKLQotICBSZW50QUNvZGVjIHJh
YzsKLSAgUmVudEFDb2RlYzo6U3RhY2tQYXJhbWV0ZXJzIHBhcmFtOwotICBwYXJhbS5zcGVlY2hf
ZW5jb2RlciA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KGV4dGVybmFsX2VuY29kZXIp
OwotICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmNvZGVyX3N0YWNrID0gcmFjLlJl
bnRFbmNvZGVyU3RhY2soJnBhcmFtKTsKLSAgRVhQRUNUX0VRKGV4dGVybmFsX2VuY29kZXIsIGVu
Y29kZXJfc3RhY2suZ2V0KCkpOwotICBjb25zdCBpbnQga1BhY2tldFNpemVTYW1wbGVzID0ga1Nh
bXBsZVJhdGVIeiAvIDEwMDsKLSAgaW50MTZfdCBhdWRpb1trUGFja2V0U2l6ZVNhbXBsZXNdID0g
ezB9OwotICBydGM6OkJ1ZmZlciBlbmNvZGVkOwotICBBdWRpb0VuY29kZXI6OkVuY29kZWRJbmZv
IGluZm87Ci0KLSAgTWFya2VyIG1hcmtlcjsKLSAgewotICAgIDo6dGVzdGluZzo6SW5TZXF1ZW5j
ZSBzOwotICAgIGluZm8uZW5jb2RlZF90aW1lc3RhbXAgPSAwOwotICAgIEVYUEVDVF9DQUxMKCpl
eHRlcm5hbF9lbmNvZGVyLAotICAgICAgICAgICAgICAgIEVuY29kZUltcGwoMCwgcnRjOjpBcnJh
eVZpZXc8Y29uc3QgaW50MTZfdD4oYXVkaW8pLCAmZW5jb2RlZCkpCi0gICAgICAgIC5XaWxsT25j
ZShSZXR1cm4oaW5mbykpOwotICAgIEVYUEVDVF9DQUxMKG1hcmtlciwgTWFyaygiQSIpKTsKLSAg
ICBFWFBFQ1RfQ0FMTChtYXJrZXIsIE1hcmsoIkIiKSk7Ci0gICAgRVhQRUNUX0NBTEwobWFya2Vy
LCBNYXJrKCJDIikpOwotICB9Ci0KLSAgaW5mbyA9IGVuY29kZXJfc3RhY2stPkVuY29kZSgwLCBh
dWRpbywgJmVuY29kZWQpOwotICBFWFBFQ1RfRVEoMHUsIGluZm8uZW5jb2RlZF90aW1lc3RhbXAp
OwotICBtYXJrZXIuTWFyaygiQSIpOwotCi0gIC8vIENoYW5nZSB0byBpbnRlcm5hbCBlbmNvZGVy
LgotICBDb2RlY0luc3QgY29kZWNfaW5zdCA9IGtEZWZhdWx0Q29kZWNJbnN0OwotICBjb2RlY19p
bnN0LnBhY3NpemUgPSBrUGFja2V0U2l6ZVNhbXBsZXM7Ci0gIHBhcmFtLnNwZWVjaF9lbmNvZGVy
ID0gcmFjLlJlbnRFbmNvZGVyKGNvZGVjX2luc3QpOwotICBBU1NFUlRfVFJVRShwYXJhbS5zcGVl
Y2hfZW5jb2Rlcik7Ci0gIEF1ZGlvRW5jb2RlciogZW5jID0gcGFyYW0uc3BlZWNoX2VuY29kZXIu
Z2V0KCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IHN0YWNrID0gcmFjLlJlbnRF
bmNvZGVyU3RhY2soJnBhcmFtKTsKLSAgRVhQRUNUX0VRKGVuYywgc3RhY2suZ2V0KCkpOwotCi0g
IC8vIERvbid0IGV4cGVjdCBhbnkgbW9yZSBjYWxscyB0byB0aGUgZXh0ZXJuYWwgZW5jb2Rlci4K
LSAgaW5mbyA9IHN0YWNrLT5FbmNvZGUoMSwgYXVkaW8sICZlbmNvZGVkKTsKLSAgbWFya2VyLk1h
cmsoIkIiKTsKLSAgZW5jb2Rlcl9zdGFjay5yZXNldCgpOwotICBtYXJrZXIuTWFyaygiQyIpOwot
fQotCi0vLyBWZXJpZnkgdGhhdCB0aGUgc3BlZWNoIGVuY29kZXIncyBSZXNldCBtZXRob2QgaXMg
Y2FsbGVkIHdoZW4gQ05HIG9yIFJFRAotLy8gKG9yIGJvdGgpIGFyZSBzd2l0Y2hlZCBvbiwgYnV0
IG5vdCB3aGVuIHRoZXkncmUgc3dpdGNoZWQgb2ZmLgotdm9pZCBUZXN0Q25nQW5kUmVkUmVzZXRT
cGVlY2hFbmNvZGVyKGJvb2wgdXNlX2NuZywgYm9vbCB1c2VfcmVkKSB7Ci0gIGF1dG8gbWFrZV9l
bmMgPSBbXSB7Ci0gICAgYXV0byBzcGVlY2hfZW5jb2RlciA9Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxNb2NrQXVkaW9FbmNvZGVyPihuZXcgTW9ja0F1ZGlvRW5jb2Rlcik7Ci0gICAgRVhQRUNU
X0NBTEwoKnNwZWVjaF9lbmNvZGVyLCBOdW1DaGFubmVscygpKS5XaWxsUmVwZWF0ZWRseShSZXR1
cm4oMSkpOwotICAgIEVYUEVDVF9DQUxMKCpzcGVlY2hfZW5jb2RlciwgTWF4MTBNc0ZyYW1lc0lu
QVBhY2tldCgpKQotICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDIpKTsKLSAgICBFWFBF
Q1RfQ0FMTCgqc3BlZWNoX2VuY29kZXIsIFNhbXBsZVJhdGVIeigpKS5XaWxsUmVwZWF0ZWRseShS
ZXR1cm4oODAwMCkpOwotICAgIEVYUEVDVF9DQUxMKCpzcGVlY2hfZW5jb2RlciwgU2V0RmVjKGZh
bHNlKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKHRydWUpKTsKLSAgICByZXR1cm4gc3BlZWNoX2Vu
Y29kZXI7Ci0gIH07Ci0gIGF1dG8gc3BlZWNoX2VuY29kZXIxID0gbWFrZV9lbmMoKTsKLSAgYXV0
byBzcGVlY2hfZW5jb2RlcjIgPSBtYWtlX2VuYygpOwotICBNYXJrZXIgbWFya2VyOwotICB7Ci0g
ICAgOjp0ZXN0aW5nOjpJblNlcXVlbmNlIHM7Ci0gICAgRVhQRUNUX0NBTEwobWFya2VyLCBNYXJr
KCJkaXNhYmxlZCIpKTsKLSAgICBFWFBFQ1RfQ0FMTChtYXJrZXIsIE1hcmsoImVuYWJsZWQiKSk7
Ci0gICAgaWYgKHVzZV9jbmcgfHwgdXNlX3JlZCkKLSAgICAgIEVYUEVDVF9DQUxMKCpzcGVlY2hf
ZW5jb2RlcjIsIFJlc2V0KCkpOwotICB9Ci0KLSAgUmVudEFDb2RlYzo6U3RhY2tQYXJhbWV0ZXJz
IHBhcmFtMSwgcGFyYW0yOwotICBwYXJhbTEuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUoc3Bl
ZWNoX2VuY29kZXIxKTsKLSAgcGFyYW0yLnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKHNwZWVj
aF9lbmNvZGVyMik7Ci0gIHBhcmFtMi51c2VfY25nID0gdXNlX2NuZzsKLSAgcGFyYW0yLnVzZV9y
ZWQgPSB1c2VfcmVkOwotICBtYXJrZXIuTWFyaygiZGlzYWJsZWQiKTsKLSAgUmVudEFDb2RlYyBy
YWM7Ci0gIHJhYy5SZW50RW5jb2RlclN0YWNrKCZwYXJhbTEpOwotICBtYXJrZXIuTWFyaygiZW5h
YmxlZCIpOwotICByYWMuUmVudEVuY29kZXJTdGFjaygmcGFyYW0yKTsKLX0KLQotVEVTVChSZW50
QUNvZGVjVGVzdCwgQ25nUmVzZXRzU3BlZWNoRW5jb2RlcikgewotICBUZXN0Q25nQW5kUmVkUmVz
ZXRTcGVlY2hFbmNvZGVyKHRydWUsIGZhbHNlKTsKLX0KLQotVEVTVChSZW50QUNvZGVjVGVzdCwg
UmVkUmVzZXRzU3BlZWNoRW5jb2RlcikgewotICBUZXN0Q25nQW5kUmVkUmVzZXRTcGVlY2hFbmNv
ZGVyKGZhbHNlLCB0cnVlKTsKLX0KLQotVEVTVChSZW50QUNvZGVjVGVzdCwgQ25nQW5kUmVkUmVz
ZXRzU3BlZWNoRW5jb2RlcikgewotICBUZXN0Q25nQW5kUmVkUmVzZXRTcGVlY2hFbmNvZGVyKHRy
dWUsIHRydWUpOwotfQotCi1URVNUKFJlbnRBQ29kZWNUZXN0LCBOb0NuZ0FuZFJlZE5vU3BlZWNo
RW5jb2RlclJlc2V0KSB7Ci0gIFRlc3RDbmdBbmRSZWRSZXNldFNwZWVjaEVuY29kZXIoZmFsc2Us
IGZhbHNlKTsKLX0KLQotVEVTVChSZW50QUNvZGVjVGVzdCwgUmVudEVuY29kZXJFcnJvcikgewot
ICBjb25zdCBDb2RlY0luc3QgY29kZWNfaW5zdCA9IHsKLSAgICAgIDAsICJSb2JlcnQnKTsgRFJP
UCBUQUJMRSBTdHVkZW50czsiLCA4MDAwLCAxNjAsIDEsIDY0MDAwfTsKLSAgUmVudEFDb2RlYyBy
ZW50X2FfY29kZWM7Ci0gIEVYUEVDVF9GQUxTRShyZW50X2FfY29kZWMuUmVudEVuY29kZXIoY29k
ZWNfaW5zdCkpOwotfQotCi1URVNUKFJlbnRBQ29kZWNUZXN0LCBSZW50RW5jb2RlclN0YWNrV2l0
aG91dFNwZWVjaEVuY29kZXIpIHsKLSAgUmVudEFDb2RlYzo6U3RhY2tQYXJhbWV0ZXJzIHNwOwot
ICBFWFBFQ1RfRVEobnVsbHB0ciwgc3Auc3BlZWNoX2VuY29kZXIpOwotICBFWFBFQ1RfRVEobnVs
bHB0ciwgUmVudEFDb2RlYygpLlJlbnRFbmNvZGVyU3RhY2soJnNwKSk7Ci19Ci0KLX0gIC8vIG5h
bWVzcGFjZSBhY20yCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9h
dWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFwdG9yX2ltcGwuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFwdG9yX2ltcGwuY2MKaW5k
ZXggYzQ4MzJhMzZkZTRhNTU3ZTU3N2U2ZTVkNzM0NzYwNjA1OTgyODhlYy4uOWU0N2EwNmY3Y2Fj
OWMzYmRmYWZlNTQ5ZjExNGMzNjk3ZmUzMjMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0
d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1
ZGlvX25ldHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5jYwpAQCAtMTAs
OSArMTAsMTQgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdv
cmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5oIgogCisjaW5jbHVkZSA8c3Rk
aW50Lmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVk
aW9fbmV0d29ya19hZGFwdG9yL2NvbnRyb2xsZXJfbWFuYWdlci5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9kZWJ1Z19kdW1wX3dyaXRlci5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9l
dmVudF9sb2dfd3JpdGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1
ZGUvZmllbGRfdHJpYWwuaCIKIApAQCAtNDEsMTcgKzQ2LDcgQEAgQXVkaW9OZXR3b3JrQWRhcHRv
ckltcGw6OkF1ZGlvTmV0d29ya0FkYXB0b3JJbXBsKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrRXZlbnRMb2dNaW5CaXRyYXRlQ2hhbmdlQnBzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrRXZlbnRMb2dNaW5CaXRyYXRlQ2hhbmdlRnJhY3Rpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtFdmVudExvZ01pblBhY2tldExvc3ND
aGFuZ2VGcmFjdGlvbikKLSAgICAgICAgICAgICAgOiBudWxscHRyKSwKLSAgICAgIGVuYWJsZV9i
aXRyYXRlX2FkYXB0YXRpb25fKAotICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5h
YmxlZCgiV2ViUlRDLUF1ZGlvLUJpdHJhdGVBZGFwdGF0aW9uIikpLAotICAgICAgZW5hYmxlX2R0
eF9hZGFwdGF0aW9uXygKLSAgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQo
IldlYlJUQy1BdWRpby1EdHhBZGFwdGF0aW9uIikpLAotICAgICAgZW5hYmxlX2ZlY19hZGFwdGF0
aW9uXygKLSAgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1B
dWRpby1GZWNBZGFwdGF0aW9uIikpLAotICAgICAgZW5hYmxlX2NoYW5uZWxfYWRhcHRhdGlvbl8o
Ci0gICAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8t
Q2hhbm5lbEFkYXB0YXRpb24iKSksCi0gICAgICBlbmFibGVfZnJhbWVfbGVuZ3RoX2FkYXB0YXRp
b25fKHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgKLSAgICAgICAgICAiV2ViUlRDLUF1
ZGlvLUZyYW1lTGVuZ3RoQWRhcHRhdGlvbiIpKSB7CisgICAgICAgICAgICAgIDogbnVsbHB0cikg
ewogICBSVENfRENIRUNLKGNvbnRyb2xsZXJfbWFuYWdlcl8pOwogfQogCkBAIC0xNTIsMjQgKzE0
Nyw2IEBAIEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWcgQXVkaW9OZXR3b3JrQWRhcHRvckltcGw6
OkdldEVuY29kZXJSdW50aW1lQ29uZmlnKCkgewogICB9CiAgIHByZXZfY29uZmlnXyA9IGNvbmZp
ZzsKIAotICAvLyBQcmV2ZW50IGNlcnRhaW4gY29udHJvbGxlcnMgZnJvbSB0YWtpbmcgYWN0aW9u
IChkZXRlcm1pbmVkIGJ5IGZpZWxkIHRyaWFscykKLSAgaWYgKCFlbmFibGVfYml0cmF0ZV9hZGFw
dGF0aW9uXyAmJiBjb25maWcuYml0cmF0ZV9icHMpIHsKLSAgICBjb25maWcuYml0cmF0ZV9icHMu
cmVzZXQoKTsKLSAgfQotICBpZiAoIWVuYWJsZV9kdHhfYWRhcHRhdGlvbl8gJiYgY29uZmlnLmVu
YWJsZV9kdHgpIHsKLSAgICBjb25maWcuZW5hYmxlX2R0eC5yZXNldCgpOwotICB9Ci0gIGlmICgh
ZW5hYmxlX2ZlY19hZGFwdGF0aW9uXyAmJiBjb25maWcuZW5hYmxlX2ZlYykgewotICAgIGNvbmZp
Zy5lbmFibGVfZmVjLnJlc2V0KCk7Ci0gICAgY29uZmlnLnVwbGlua19wYWNrZXRfbG9zc19mcmFj
dGlvbi5yZXNldCgpOwotICB9Ci0gIGlmICghZW5hYmxlX2ZyYW1lX2xlbmd0aF9hZGFwdGF0aW9u
XyAmJiBjb25maWcuZnJhbWVfbGVuZ3RoX21zKSB7Ci0gICAgY29uZmlnLmZyYW1lX2xlbmd0aF9t
cy5yZXNldCgpOwotICB9Ci0gIGlmICghZW5hYmxlX2NoYW5uZWxfYWRhcHRhdGlvbl8gJiYgY29u
ZmlnLm51bV9jaGFubmVscykgewotICAgIGNvbmZpZy5udW1fY2hhbm5lbHMucmVzZXQoKTsKLSAg
fQotCiAgIGlmIChkZWJ1Z19kdW1wX3dyaXRlcl8pCiAgICAgZGVidWdfZHVtcF93cml0ZXJfLT5E
dW1wRW5jb2RlclJ1bnRpbWVDb25maWcoY29uZmlnLCBydGM6OlRpbWVNaWxsaXMoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0
b3JfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRh
cHRvcl9pbXBsLmgKaW5kZXggZTIwOGVkMjYwN2MzNDQ2MzJiYTc2NzE4ZmJmMDM0MjYzN2VhZTRh
Yy4uNGMxYzE5YjdlYTI4Y2IxYzVlN2FkNzYwYmUwYTQxZWUxYWRkMDJhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9p
bXBsLmgKQEAgLTExLDE3ICsxMSwyMSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19B
VURJT19ORVRXT1JLX0FEQVBUT1JfQVVESU9fTkVUV09SS19BREFQVE9SX0lNUExfSF8KICNkZWZp
bmUgTU9EVUxFU19BVURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0FVRElPX05FVFdP
UktfQURBUFRPUl9JTVBMX0hfCiAKKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9jb250cm9sbGVyX21hbmFnZXIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZGVi
dWdfZHVtcF93cml0ZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRh
cHRvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRh
cHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFz
cyBDb250cm9sbGVyTWFuYWdlcjsKK2NsYXNzIEV2ZW50TG9nV3JpdGVyOwogY2xhc3MgUnRjRXZl
bnRMb2c7CiAKIGNsYXNzIEF1ZGlvTmV0d29ya0FkYXB0b3JJbXBsIGZpbmFsIDogcHVibGljIEF1
ZGlvTmV0d29ya0FkYXB0b3IgewpAQCAtNzksMTIgKzgzLDYgQEAgY2xhc3MgQXVkaW9OZXR3b3Jr
QWRhcHRvckltcGwgZmluYWwgOiBwdWJsaWMgQXVkaW9OZXR3b3JrQWRhcHRvciB7CiAKICAgQU5B
U3RhdHMgc3RhdHNfOwogCi0gIGNvbnN0IGJvb2wgZW5hYmxlX2JpdHJhdGVfYWRhcHRhdGlvbl87
Ci0gIGNvbnN0IGJvb2wgZW5hYmxlX2R0eF9hZGFwdGF0aW9uXzsKLSAgY29uc3QgYm9vbCBlbmFi
bGVfZmVjX2FkYXB0YXRpb25fOwotICBjb25zdCBib29sIGVuYWJsZV9jaGFubmVsX2FkYXB0YXRp
b25fOwotICBjb25zdCBib29sIGVuYWJsZV9mcmFtZV9sZW5ndGhfYWRhcHRhdGlvbl87Ci0KICAg
UlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihBdWRpb05ldHdvcmtBZGFwdG9ySW1wbCk7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29y
a19hZGFwdG9yX2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3Iv
YXVkaW9fbmV0d29ya19hZGFwdG9yX2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggNTk0OGFjMzY0NDBk
YTBmMDJjNGEyZmM1ZmFkZGMwNDdlZmEwMzk1NC4uYmU5NTUwYTdhNzYzZTVkZTM0NWNjMjA3M2Uw
YmM2NWFjYzViODAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1
ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbF91bml0dGVzdC5jYwpAQCAt
NTEsNyArNTEsNyBAQCBNQVRDSEVSX1AoSXNSdGNFdmVudEFuYUNvbmZpZ0VxdWFsVG8sIGNvbmZp
ZywgIiIpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICAgYXV0byBhbmFfZXZlbnQgPSBzdGF0
aWNfY2FzdDxSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24qPihhcmcpOwotICByZXR1cm4g
KmFuYV9ldmVudC0+Y29uZmlnXyA9PSBjb25maWc7CisgIHJldHVybiBhbmFfZXZlbnQtPmNvbmZp
ZygpID09IGNvbmZpZzsKIH0KIAogTUFUQ0hFUl9QKEVuY29kZXJSdW50aW1lQ29uZmlnSXMsIGNv
bmZpZywgIiIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9iaXRy
YXRlX2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9iaXRyYXRlX2Nv
bnRyb2xsZXIuaAppbmRleCAyODJmNTk5YjZkYTMwMjU1NDdjNTAyMGFlZDdmZDI1OWNiZDZkYmUw
Li42YjYzMzBiMDMwMTUyYjIxZTJlZDgyMDU1ODJkNzc3NDBmYzI2ZDFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYml0cmF0ZV9jb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2JpdHJhdGVfY29udHJvbGxlci5oCkBAIC0xMSw3ICsx
MSwxMSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBU
T1JfQklUUkFURV9DT05UUk9MTEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FV
RElPX05FVFdPUktfQURBUFRPUl9CSVRSQVRFX0NPTlRST0xMRVJfSF8KIAorI2luY2x1ZGUgPHN0
ZGRlZi5oPgorCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9jb250cm9sbGVyLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1
ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Nv
bnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY2hhbm5lbF9jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRp
b19uZXR3b3JrX2FkYXB0b3IvY2hhbm5lbF9jb250cm9sbGVyLmgKaW5kZXggMjNjYmVmNjYzYjRm
YmZjNTU1MWMyMzcyNzhlNTBmMjcxZTVkZWFjMS4uMGQ3NzViMWM3N2YxYzk3MzExNDY3ZDc4OTdi
YWY4OWVhNDQ3YjdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2No
YW5uZWxfY29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9jaGFu
bmVsX2NvbnRyb2xsZXIuaApAQCAtMTEsNyArMTEsMTEgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0NIQU5ORUxfQ09OVFJPTExFUl9IXwogI2Rl
ZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1JfQ0hBTk5FTF9D
T05UUk9MTEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2luY2x1ZGUgImFic2wvdHlw
ZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3
b3JrX2FkYXB0b3IvY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25m
aWcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2RlYnVn
X2R1bXBfd3JpdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2RlYnVnX2R1bXBf
d3JpdGVyLmNjCmluZGV4IDgxODM2MmVkMGRhN2VhM2EzYTdjZjdhMzM5YWIyNjdhNjAzN2QwMzUu
LjhlMDRlOGVhZmM5MzcxZjFmZjM1NDcxOTA2Yjg3ZmQ5MmIzMDVhNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9kZWJ1Z19kdW1wX3dyaXRlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZGVidWdfZHVtcF93cml0ZXIuY2MKQEAgLTEwLDEwICsx
MCwxMiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19h
ZGFwdG9yL2RlYnVnX2R1bXBfd3JpdGVyLmgiCiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlv
bmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
aWdub3JlX3d1bmRlZi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVy
c2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wcm90b2J1Zl91dGlscy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3N5c3RlbS9maWxlX3dyYXBwZXIuaCIKIAogI2lmIFdFQlJUQ19FTkFCTEVfUFJP
VE9CVUYKIFJUQ19QVVNIX0lHTk9SSU5HX1dVTkRFRigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRp
b19uZXR3b3JrX2FkYXB0b3IvZHR4X2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtf
YWRhcHRvci9kdHhfY29udHJvbGxlci5oCmluZGV4IGZiNDBkYjI4YjIwY2NhNzNlOTU5MzIyZjQy
ZDRkNGRiYTg3YWZjZDAuLmQzMzM0ZWNhOWVmMDAxYjUyODQwYzRiZjUwN2ZmZjBlMmNmZDEwZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9kdHhfY29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9kdHhfY29udHJvbGxlci5oCkBAIC0x
MSw3ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElPX05FVFdPUktf
QURBUFRPUl9EVFhfQ09OVFJPTExFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19B
VURJT19ORVRXT1JLX0FEQVBUT1JfRFRYX0NPTlRST0xMRVJfSF8KIAorI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9j
b25maWcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2
ZW50X2xvZ193cml0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9n
X3dyaXRlci5jYwppbmRleCA0YTkyMzQzZDk2ODhiZDA5YWFmOThlMzUyMGE2MTU3OWQzMDk2MDMz
Li43OTI1Yjg5MTI3NzUwMWRlMGRjNjJiNzA0ZTk5ZDU5OThjNDhkNDMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlci5jYwpAQCAtOSwxMyArOSwx
NyBAQAogICovCiAKICNpbmNsdWRlIDxtYXRoLmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCiAjaW5jbHVkZSAi
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFw
dGF0aW9uLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3Iv
ZXZlbnRfbG9nX3dyaXRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9y
L2V2ZW50X2xvZ193cml0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9ldmVudF9s
b2dfd3JpdGVyLmgKaW5kZXggZmNhOGU1M2I2NjRiZjFiZjNkZTg5ZTUwZTk4YTgyZThiMDkwOTI2
Ny4uNzJiNTI0NWUxMTVhNmZmZDUwMjA1ZDEwYTNjOGNiYTllMWRjODk5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlci5oCkBAIC0xMSw3ICsxMSw3
IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElPX05FVFdPUktfQURBUFRPUl9F
VkVOVF9MT0dfV1JJVEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElPX05F
VFdPUktfQURBUFRPUl9FVkVOVF9MT0dfV1JJVEVSX0hfCiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2Fk
YXB0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2Fk
YXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9ldmVudF9sb2dfd3JpdGVyX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXJfdW5p
dHRlc3QuY2MKaW5kZXggZGY5NzU5NDdjYTEzYTFmNDNhYzhjZWI4ZTc1YTViZjRjY2Q1MjQ0Ni4u
NDIxODljM2UxMWMzMjFmYTAzNjM5YTY3M2RjYTIyMzA2Nzc5ZTBjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXJfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXJfdW5pdHRlc3Qu
Y2MKQEAgLTM2LDcgKzM2LDcgQEAgTUFUQ0hFUl9QKElzUnRjRXZlbnRBbmFDb25maWdFcXVhbFRv
LCBjb25maWcsICIiKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIGF1dG8gYW5hX2V2ZW50
ID0gc3RhdGljX2Nhc3Q8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKj4oYXJnKTsKLSAg
cmV0dXJuICphbmFfZXZlbnQtPmNvbmZpZ18gPT0gY29uZmlnOworICByZXR1cm4gYW5hX2V2ZW50
LT5jb25maWcoKSA9PSBjb25maWc7CiB9CiAKIHN0cnVjdCBFdmVudExvZ1dyaXRlclN0YXRlcyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJf
cGxyX2Jhc2VkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVy
X3Bscl9iYXNlZC5jYwppbmRleCA3YWI3MmM5NDM3ZTM3MjE5ZDI0ZmQxZTBhMTI3OTlkNGI1ZDg3
ZDg4Li45MzZlMjI0MjlhYzg4ODU0ZmNkNzJlY2E3NTIxN2U3ZDMyNmFhMTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJfcGxyX2Jhc2VkLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9wbHJfYmFz
ZWQuY2MKQEAgLTEwLDcgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9wbHJfYmFzZWQuaCIKIAotI2lu
Y2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0
d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVyX3Bscl9iYXNlZC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0
d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVyX3Bscl9iYXNlZC5oCmluZGV4IGI2Njg4M2VmNTUy
ZTUxNGIwMzhlODJiMjVlNGQ2ZGM5NzI3YzY0YWQuLmI3ZDNkNTYxNzNlNmJhOGRlMmQ2Y2IzNTIw
M2I5Y2UzMWJkMzdlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9m
ZWNfY29udHJvbGxlcl9wbHJfYmFzZWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0
b3IvZmVjX2NvbnRyb2xsZXJfcGxyX2Jhc2VkLmgKQEAgLTEzLDggKzEzLDEwIEBACiAKICNpbmNs
dWRlIDxtZW1vcnk+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVk
ZSAiY29tbW9uX2F1ZGlvL3Ntb290aGluZ19maWx0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlci5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlv
X25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvdXRpbC90aHJlc2hvbGRfY3VydmUuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlv
X25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9ycGxyX2Jhc2VkLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVk
aW9fbmV0d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVyX3JwbHJfYmFzZWQuY2MKaW5kZXggYzhj
ZmQzMTYwN2M0NmUzMGE0Y2VmYzVhNDFmYzM0OTQ1N2IyNjQxNC4uNmMzMGI4ZjJjMDc0M2U3NDAw
OGU2YTIyZDQxZTYwMThhOGMwMzNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19h
ZGFwdG9yL2ZlY19jb250cm9sbGVyX3JwbHJfYmFzZWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0
d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVyX3JwbHJfYmFzZWQuY2MKQEAgLTEwLDkgKzEwLDYg
QEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRv
ci9mZWNfY29udHJvbGxlcl9ycGxyX2Jhc2VkLmgiCiAKLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5j
bHVkZSA8dXRpbGl0eT4KLQogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNf
Y29udHJvbGxlcl9ycGxyX2Jhc2VkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVj
X2NvbnRyb2xsZXJfcnBscl9iYXNlZC5oCmluZGV4IDlhM2MzN2MzZDFkOGNlMDZjMjA4YWY3Mjcy
MGZhN2QxNjg2YTFlMTMuLjQyMWNiNzBhYmQxOGJhYWFiY2ZjNmEwZmFkZjQzNzY0Zjg3YjA1ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9y
cGxyX2Jhc2VkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2ZlY19jb250cm9s
bGVyX3JwbHJfYmFzZWQuaApAQCAtMTEsOSArMTEsOSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElP
X0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1JfRkVDX0NPTlRST0xMRVJfUlBMUl9CQVNFRF9I
XwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1JfRkVD
X0NPTlRST0xMRVJfUlBMUl9CQVNFRF9IXwogCi0jaW5jbHVkZSA8bWVtb3J5PgotCisjaW5jbHVk
ZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2F1ZGlvX25ldHdvcmtfYWRhcHRvci9jb250cm9sbGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19h
ZGFwdG9yX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci91dGlsL3RocmVzaG9sZF9jdXJ2ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19h
ZGFwdG9yL2ZyYW1lX2xlbmd0aF9jb250cm9sbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19h
ZGFwdG9yL2ZyYW1lX2xlbmd0aF9jb250cm9sbGVyLmNjCmluZGV4IDQwZTk3Y2IzNzFlNDNjMjcw
Zjc3MWVjZjA2MGUxZjBlNjM2MTVmMDIuLmIxMjNjN2M3MGVkNWU4N2Y4MjU4NjNjMDlhMmMzZmE2
ODY2NjRmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mcmFtZV9s
ZW5ndGhfY29udHJvbGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZnJh
bWVfbGVuZ3RoX2NvbnRyb2xsZXIuY2MKQEAgLTExLDEwICsxMSwxMCBAQAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mcmFtZV9sZW5ndGhfY29u
dHJvbGxlci5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZnJhbWVfbGVuZ3RoX2NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mcmFtZV9sZW5ndGhfY29udHJvbGxlci5o
CmluZGV4IGYwODRmZDAzODJmMTYwNzk1OWQwYzAxOGM1ZGY0MmI2OTViYWI5MjYuLmYwYTVhYWJh
OWEyYTZhMmE3ZDQ2NTM3NTY0MDA0MTRhNmUxYjhlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlv
X25ldHdvcmtfYWRhcHRvci9mcmFtZV9sZW5ndGhfY29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1
ZGlvX25ldHdvcmtfYWRhcHRvci9mcmFtZV9sZW5ndGhfY29udHJvbGxlci5oCkBAIC0xMSwxMCAr
MTEsMTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQ
VE9SX0ZSQU1FX0xFTkdUSF9DT05UUk9MTEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09E
SU5HX0FVRElPX05FVFdPUktfQURBUFRPUl9GUkFNRV9MRU5HVEhfQ09OVFJPTExFUl9IXwogCisj
aW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAor
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25l
dHdvcmtfYWRhcHRvcl9jb25maWcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0
d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2Nv
bmZpZy5oCmluZGV4IDI1N2E3OWFmMThkOTE5NGYxZDAwNjVlYjBhYWRkOGMzOTY4OTM5MGMuLjk0
ZThlZDk2MWU3ZTY4M2JmMGQ4OWJlNTdiMTBlMmJlMzQ3Y2VmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25m
aWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3
b3JrX2FkYXB0b3JfY29uZmlnLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19B
VURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0lOQ0xVREVfQVVESU9fTkVUV09SS19B
REFQVE9SX0NPTkZJR19IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRX
T1JLX0FEQVBUT1JfSU5DTFVERV9BVURJT19ORVRXT1JLX0FEQVBUT1JfQ09ORklHX0hfCiAKKyNp
bmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvYXVkaW9fZm9ybWF0
X2NvbnZlcnNpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvYXVkaW9fZm9ybWF0X2NvbnZlcnNpb24uY2MK
aW5kZXggZTM4YWEzMzMzNTA1Yzc2NDIwZmI1NGY3ODkyZWY2NDk3Zjg3ZmNmMS4uZjA2ODMwMWFk
ZjkxNjg1NzZjYjExMzA2ZmRiY2ZmYTcxZTU2NDU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L2F1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9hdWRpb19mb3Jt
YXRfY29udmVyc2lvbi5jYwpAQCAtMTEsMTEgKzExLDEyIEBACiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2F1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uLmgiCiAKICNpbmNsdWRl
IDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAotI2lu
Y2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0
Y2guaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9zYW5pdGl6ZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBA
IC00MSwxMSArNDIsMTEgQEAgQ29kZWNJbnN0IE1ha2VDb2RlY0luc3QoaW50IHBheWxvYWRfdHlw
ZSwKIH0gIC8vIG5hbWVzcGFjZQogCiBTZHBBdWRpb0Zvcm1hdCBDb2RlY0luc3RUb1NkcChjb25z
dCBDb2RlY0luc3QmIGNpKSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoY2kucGxuYW1lLCAiZzcyMiIp
ID09IDApIHsKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY2kucGxuYW1lLCAiZzcyMiIp
KSB7CiAgICAgUlRDX0NIRUNLX0VRKDE2MDAwLCBjaS5wbGZyZXEpOwogICAgIFJUQ19DSEVDSyhj
aS5jaGFubmVscyA9PSAxIHx8IGNpLmNoYW5uZWxzID09IDIpOwogICAgIHJldHVybiB7Imc3MjIi
LCA4MDAwLCBjaS5jaGFubmVsc307Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKGNpLnBsbmFt
ZSwgIm9wdXMiKSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShj
aS5wbG5hbWUsICJvcHVzIikpIHsKICAgICBSVENfQ0hFQ0tfRVEoNDgwMDAsIGNpLnBsZnJlcSk7
CiAgICAgUlRDX0NIRUNLKGNpLmNoYW5uZWxzID09IDEgfHwgY2kuY2hhbm5lbHMgPT0gMik7CiAg
ICAgcmV0dXJuIGNpLmNoYW5uZWxzID09IDEKQEAgLTU3LDEyICs1OCwxMiBAQCBTZHBBdWRpb0Zv
cm1hdCBDb2RlY0luc3RUb1NkcChjb25zdCBDb2RlY0luc3QmIGNpKSB7CiB9CiAKIENvZGVjSW5z
dCBTZHBUb0NvZGVjSW5zdChpbnQgcGF5bG9hZF90eXBlLCBjb25zdCBTZHBBdWRpb0Zvcm1hdCYg
YXVkaW9fZm9ybWF0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoYXVkaW9fZm9ybWF0Lm5hbWUuY19z
dHIoKSwgImc3MjIiKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGF1ZGlv
X2Zvcm1hdC5uYW1lLCAiZzcyMiIpKSB7CiAgICAgUlRDX0NIRUNLX0VRKDgwMDAsIGF1ZGlvX2Zv
cm1hdC5jbG9ja3JhdGVfaHopOwogICAgIFJUQ19DSEVDSyhhdWRpb19mb3JtYXQubnVtX2NoYW5u
ZWxzID09IDEgfHwgYXVkaW9fZm9ybWF0Lm51bV9jaGFubmVscyA9PSAyKTsKICAgICByZXR1cm4g
TWFrZUNvZGVjSW5zdChwYXlsb2FkX3R5cGUsICJnNzIyIiwgMTYwMDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXVkaW9fZm9ybWF0Lm51bV9jaGFubmVscyk7Ci0gIH0gZWxzZSBpZiAoU1RS
X0NBU0VfQ01QKGF1ZGlvX2Zvcm1hdC5uYW1lLmNfc3RyKCksICJvcHVzIikgPT0gMCkgeworICB9
IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoYXVkaW9fZm9ybWF0Lm5hbWUsICJvcHVz
IikpIHsKICAgICBSVENfQ0hFQ0tfRVEoNDgwMDAsIGF1ZGlvX2Zvcm1hdC5jbG9ja3JhdGVfaHop
OwogICAgIFJUQ19DSEVDS19FUSgyLCBhdWRpb19mb3JtYXQubnVtX2NoYW5uZWxzKTsKICAgICBj
b25zdCBpbnQgbnVtX2NoYW5uZWxzID0gWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9j
bmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJf
Y25nLmNjCmluZGV4IDA1NTE5MDQ5N2E1NGMyODQzNmVkNDAxMjk1ZDJhMDE1MTZlZTQzNjAuLjQ3
Njk1NGZlNjBkMDZkMDQ3OGNiYjViZDQ3ZDI3ZDNjODlkOWNlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9h
dWRpb19lbmNvZGVyX2NuZy5jYwpAQCAtMTAsNDAgKzEwLDcyIEBACiAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmgiCiAKLSNpbmNs
dWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25n
L3dlYnJ0Y19jbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKwogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKIG5hbWVzcGFjZSB7CiAKIGNvbnN0IGludCBrTWF4RnJhbWVTaXplTXMgPSA2
MDsKIAotfSAgLy8gbmFtZXNwYWNlCi0KLUF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnOjpDb25maWco
KSA9IGRlZmF1bHQ7Ci1BdWRpb0VuY29kZXJDbmc6OkNvbmZpZzo6Q29uZmlnKENvbmZpZyYmKSA9
IGRlZmF1bHQ7Ci1BdWRpb0VuY29kZXJDbmc6OkNvbmZpZzo6fkNvbmZpZygpID0gZGVmYXVsdDsK
LQotYm9vbCBBdWRpb0VuY29kZXJDbmc6OkNvbmZpZzo6SXNPaygpIGNvbnN0IHsKLSAgaWYgKG51
bV9jaGFubmVscyAhPSAxKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKCFzcGVlY2hfZW5jb2Rl
cikKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChudW1fY2hhbm5lbHMgIT0gc3BlZWNoX2VuY29k
ZXItPk51bUNoYW5uZWxzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoc2lkX2ZyYW1lX2lu
dGVydmFsX21zIDwKLSAgICAgIHN0YXRpY19jYXN0PGludD4oc3BlZWNoX2VuY29kZXItPk1heDEw
TXNGcmFtZXNJbkFQYWNrZXQoKSAqIDEwKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChudW1f
Y25nX2NvZWZmaWNpZW50cyA+IFdFQlJUQ19DTkdfTUFYX0xQQ19PUkRFUiB8fAotICAgICAgbnVt
X2NuZ19jb2VmZmljaWVudHMgPD0gMCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVl
OwotfQotCi1BdWRpb0VuY29kZXJDbmc6OkF1ZGlvRW5jb2RlckNuZyhDb25maWcmJiBjb25maWcp
CitjbGFzcyBBdWRpb0VuY29kZXJDbmcgZmluYWwgOiBwdWJsaWMgQXVkaW9FbmNvZGVyIHsKKyBw
dWJsaWM6CisgIGV4cGxpY2l0IEF1ZGlvRW5jb2RlckNuZyhBdWRpb0VuY29kZXJDbmdDb25maWcm
JiBjb25maWcpOworICB+QXVkaW9FbmNvZGVyQ25nKCkgb3ZlcnJpZGU7CisKKyAgLy8gTm90IGNv
cHlhYmxlIG9yIG1vdmVhYmxlLgorICBBdWRpb0VuY29kZXJDbmcoY29uc3QgQXVkaW9FbmNvZGVy
Q25nJikgPSBkZWxldGU7CisgIEF1ZGlvRW5jb2RlckNuZyhBdWRpb0VuY29kZXJDbmcmJikgPSBk
ZWxldGU7CisgIEF1ZGlvRW5jb2RlckNuZyYgb3BlcmF0b3I9KGNvbnN0IEF1ZGlvRW5jb2RlckNu
ZyYpID0gZGVsZXRlOworICBBdWRpb0VuY29kZXJDbmcmIG9wZXJhdG9yPShBdWRpb0VuY29kZXJD
bmcmJikgPSBkZWxldGU7CisKKyAgaW50IFNhbXBsZVJhdGVIeigpIGNvbnN0IG92ZXJyaWRlOwor
ICBzaXplX3QgTnVtQ2hhbm5lbHMoKSBjb25zdCBvdmVycmlkZTsKKyAgaW50IFJ0cFRpbWVzdGFt
cFJhdGVIeigpIGNvbnN0IG92ZXJyaWRlOworICBzaXplX3QgTnVtMTBNc0ZyYW1lc0luTmV4dFBh
Y2tldCgpIGNvbnN0IG92ZXJyaWRlOworICBzaXplX3QgTWF4MTBNc0ZyYW1lc0luQVBhY2tldCgp
IGNvbnN0IG92ZXJyaWRlOworICBpbnQgR2V0VGFyZ2V0Qml0cmF0ZSgpIGNvbnN0IG92ZXJyaWRl
OworICBFbmNvZGVkSW5mbyBFbmNvZGVJbXBsKHVpbnQzMl90IHJ0cF90aW1lc3RhbXAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgaW50MTZfdD4gYXVkaW8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpCdWZmZXIqIGVuY29kZWQpIG92ZXJyaWRl
OworICB2b2lkIFJlc2V0KCkgb3ZlcnJpZGU7CisgIGJvb2wgU2V0RmVjKGJvb2wgZW5hYmxlKSBv
dmVycmlkZTsKKyAgYm9vbCBTZXREdHgoYm9vbCBlbmFibGUpIG92ZXJyaWRlOworICBib29sIFNl
dEFwcGxpY2F0aW9uKEFwcGxpY2F0aW9uIGFwcGxpY2F0aW9uKSBvdmVycmlkZTsKKyAgdm9pZCBT
ZXRNYXhQbGF5YmFja1JhdGUoaW50IGZyZXF1ZW5jeV9oeikgb3ZlcnJpZGU7CisgIHJ0Yzo6QXJy
YXlWaWV3PHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+PiBSZWNsYWltQ29udGFpbmVkRW5j
b2RlcnMoKQorICAgICAgb3ZlcnJpZGU7CisgIHZvaWQgT25SZWNlaXZlZFVwbGlua1BhY2tldExv
c3NGcmFjdGlvbigKKyAgICAgIGZsb2F0IHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbikgb3Zl
cnJpZGU7CisgIHZvaWQgT25SZWNlaXZlZFVwbGlua1JlY292ZXJhYmxlUGFja2V0TG9zc0ZyYWN0
aW9uKAorICAgICAgZmxvYXQgdXBsaW5rX3JlY292ZXJhYmxlX3BhY2tldF9sb3NzX2ZyYWN0aW9u
KSBvdmVycmlkZTsKKyAgdm9pZCBPblJlY2VpdmVkVXBsaW5rQmFuZHdpZHRoKAorICAgICAgaW50
IHRhcmdldF9hdWRpb19iaXRyYXRlX2JwcywKKyAgICAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+
IGJ3ZV9wZXJpb2RfbXMpIG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgRW5jb2RlZEluZm8gRW5j
b2RlUGFzc2l2ZShzaXplX3QgZnJhbWVzX3RvX2VuY29kZSwgcnRjOjpCdWZmZXIqIGVuY29kZWQp
OworICBFbmNvZGVkSW5mbyBFbmNvZGVBY3RpdmUoc2l6ZV90IGZyYW1lc190b19lbmNvZGUsIHJ0
Yzo6QnVmZmVyKiBlbmNvZGVkKTsKKyAgc2l6ZV90IFNhbXBsZXNQZXIxMG1zRnJhbWUoKSBjb25z
dDsKKworICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBzcGVlY2hfZW5jb2Rlcl87Cisg
IGNvbnN0IGludCBjbmdfcGF5bG9hZF90eXBlXzsKKyAgY29uc3QgaW50IG51bV9jbmdfY29lZmZp
Y2llbnRzXzsKKyAgY29uc3QgaW50IHNpZF9mcmFtZV9pbnRlcnZhbF9tc187CisgIHN0ZDo6dmVj
dG9yPGludDE2X3Q+IHNwZWVjaF9idWZmZXJfOworICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gcnRw
X3RpbWVzdGFtcHNfOworICBib29sIGxhc3RfZnJhbWVfYWN0aXZlXzsKKyAgc3RkOjp1bmlxdWVf
cHRyPFZhZD4gdmFkXzsKKyAgc3RkOjp1bmlxdWVfcHRyPENvbWZvcnROb2lzZUVuY29kZXI+IGNu
Z19lbmNvZGVyXzsKK307CisKK0F1ZGlvRW5jb2RlckNuZzo6QXVkaW9FbmNvZGVyQ25nKEF1ZGlv
RW5jb2RlckNuZ0NvbmZpZyYmIGNvbmZpZykKICAgICA6IHNwZWVjaF9lbmNvZGVyXygoc3RhdGlj
X2Nhc3Q8dm9pZD4oWyZdIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBSVENfQ0hFQ0soY29u
ZmlnLklzT2soKSkgPDwgIkludmFsaWQgY29uZmlndXJhdGlvbi4iOwogICAgICAgICAgICAgICAg
ICAgICAgICB9KCkpLApAQCAtMjYxLDQgKzI5MywzMSBAQCBzaXplX3QgQXVkaW9FbmNvZGVyQ25n
OjpTYW1wbGVzUGVyMTBtc0ZyYW1lKCkgY29uc3QgewogICByZXR1cm4gcnRjOjpDaGVja2VkRGl2
RXhhY3QoMTAgKiBTYW1wbGVSYXRlSHooKSwgMTAwMCk7CiB9CiAKK30gIC8vIG5hbWVzcGFjZQor
CitBdWRpb0VuY29kZXJDbmdDb25maWc6OkF1ZGlvRW5jb2RlckNuZ0NvbmZpZygpID0gZGVmYXVs
dDsKK0F1ZGlvRW5jb2RlckNuZ0NvbmZpZzo6QXVkaW9FbmNvZGVyQ25nQ29uZmlnKEF1ZGlvRW5j
b2RlckNuZ0NvbmZpZyYmKSA9IGRlZmF1bHQ7CitBdWRpb0VuY29kZXJDbmdDb25maWc6On5BdWRp
b0VuY29kZXJDbmdDb25maWcoKSA9IGRlZmF1bHQ7CisKK2Jvb2wgQXVkaW9FbmNvZGVyQ25nQ29u
ZmlnOjpJc09rKCkgY29uc3QgeworICBpZiAobnVtX2NoYW5uZWxzICE9IDEpCisgICAgcmV0dXJu
IGZhbHNlOworICBpZiAoIXNwZWVjaF9lbmNvZGVyKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYg
KG51bV9jaGFubmVscyAhPSBzcGVlY2hfZW5jb2Rlci0+TnVtQ2hhbm5lbHMoKSkKKyAgICByZXR1
cm4gZmFsc2U7CisgIGlmIChzaWRfZnJhbWVfaW50ZXJ2YWxfbXMgPAorICAgICAgc3RhdGljX2Nh
c3Q8aW50PihzcGVlY2hfZW5jb2Rlci0+TWF4MTBNc0ZyYW1lc0luQVBhY2tldCgpICogMTApKQor
ICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKG51bV9jbmdfY29lZmZpY2llbnRzID4gV0VCUlRDX0NO
R19NQVhfTFBDX09SREVSIHx8CisgICAgICBudW1fY25nX2NvZWZmaWNpZW50cyA8PSAwKQorICAg
IHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxBdWRp
b0VuY29kZXI+IENyZWF0ZUNvbWZvcnROb2lzZUVuY29kZXIoCisgICAgQXVkaW9FbmNvZGVyQ25n
Q29uZmlnJiYgY29uZmlnKSB7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29k
ZXJDbmc+KHN0ZDo6bW92ZShjb25maWcpKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5oCmluZGV4IGU0YzY1MDc3NjUxYzA1MzZlYzIz
ZTBjOWNlYmM5OTU5NWZhNDc0YzMuLjJlZjMyMzY0YzdlYTlkZjRlYzE2ODc0YjExMjAwNTU5OWY2
MjA4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmgKQEAgLTExLDg2ICsxMSwz
OCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfQ05HX0FVRElPX0VOQ09E
RVJfQ05HX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19DTkdfQVVESU9f
RU5DT0RFUl9DTkdfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9yeT4K
LSNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Vu
Y29kZXIuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vdmFkL2luY2x1ZGUvdmFkLmgiCi0jaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IAotY2xhc3MgVmFkOwotCi1jbGFzcyBBdWRpb0VuY29kZXJDbmcgZmluYWwgOiBwdWJsaWMgQXVk
aW9FbmNvZGVyIHsKLSBwdWJsaWM6Ci0gIHN0cnVjdCBDb25maWcgewotICAgIENvbmZpZygpOwot
ICAgIENvbmZpZyhDb25maWcmJik7Ci0gICAgfkNvbmZpZygpOwotICAgIGJvb2wgSXNPaygpIGNv
bnN0OwotCi0gICAgc2l6ZV90IG51bV9jaGFubmVscyA9IDE7Ci0gICAgaW50IHBheWxvYWRfdHlw
ZSA9IDEzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IHNwZWVjaF9lbmNvZGVy
OwotICAgIFZhZDo6QWdncmVzc2l2ZW5lc3MgdmFkX21vZGUgPSBWYWQ6OmtWYWROb3JtYWw7Ci0g
ICAgaW50IHNpZF9mcmFtZV9pbnRlcnZhbF9tcyA9IDEwMDsKLSAgICBpbnQgbnVtX2NuZ19jb2Vm
ZmljaWVudHMgPSA4OwotICAgIC8vIFRoZSBWYWQgcG9pbnRlciBpcyBtYWlubHkgZm9yIHRlc3Rp
bmcuIElmIGEgTlVMTCBwb2ludGVyIGlzIHBhc3NlZCwgdGhlCi0gICAgLy8gQXVkaW9FbmNvZGVy
Q25nIGNyZWF0ZXMgKGFuZCBkZXN0cm95cykgYSBWYWQgb2JqZWN0IGludGVybmFsbHkuIElmIGFu
Ci0gICAgLy8gb2JqZWN0IGlzIHBhc3NlZCwgdGhlIEF1ZGlvRW5jb2RlckNuZyBhc3N1bWVzIG93
bmVyc2hpcCBvZiB0aGUgVmFkCi0gICAgLy8gb2JqZWN0LgotICAgIFZhZCogdmFkID0gbnVsbHB0
cjsKLSAgfTsKLQotICBleHBsaWNpdCBBdWRpb0VuY29kZXJDbmcoQ29uZmlnJiYgY29uZmlnKTsK
LSAgfkF1ZGlvRW5jb2RlckNuZygpIG92ZXJyaWRlOwotCi0gIGludCBTYW1wbGVSYXRlSHooKSBj
b25zdCBvdmVycmlkZTsKLSAgc2l6ZV90IE51bUNoYW5uZWxzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
IGludCBSdHBUaW1lc3RhbXBSYXRlSHooKSBjb25zdCBvdmVycmlkZTsKLSAgc2l6ZV90IE51bTEw
TXNGcmFtZXNJbk5leHRQYWNrZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgc2l6ZV90IE1heDEwTXNG
cmFtZXNJbkFQYWNrZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgaW50IEdldFRhcmdldEJpdHJhdGUo
KSBjb25zdCBvdmVycmlkZTsKLSAgRW5jb2RlZEluZm8gRW5jb2RlSW1wbCh1aW50MzJfdCBydHBf
dGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IGludDE2X3Q+IGF1ZGlvLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QnVmZmVyKiBl
bmNvZGVkKSBvdmVycmlkZTsKLSAgdm9pZCBSZXNldCgpIG92ZXJyaWRlOwotICBib29sIFNldEZl
Yyhib29sIGVuYWJsZSkgb3ZlcnJpZGU7Ci0gIGJvb2wgU2V0RHR4KGJvb2wgZW5hYmxlKSBvdmVy
cmlkZTsKLSAgYm9vbCBTZXRBcHBsaWNhdGlvbihBcHBsaWNhdGlvbiBhcHBsaWNhdGlvbikgb3Zl
cnJpZGU7Ci0gIHZvaWQgU2V0TWF4UGxheWJhY2tSYXRlKGludCBmcmVxdWVuY3lfaHopIG92ZXJy
aWRlOwotICBydGM6OkFycmF5VmlldzxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPj4gUmVj
bGFpbUNvbnRhaW5lZEVuY29kZXJzKCkKLSAgICAgIG92ZXJyaWRlOwotICB2b2lkIE9uUmVjZWl2
ZWRVcGxpbmtQYWNrZXRMb3NzRnJhY3Rpb24oCi0gICAgICBmbG9hdCB1cGxpbmtfcGFja2V0X2xv
c3NfZnJhY3Rpb24pIG92ZXJyaWRlOwotICB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtSZWNvdmVyYWJs
ZVBhY2tldExvc3NGcmFjdGlvbigKLSAgICAgIGZsb2F0IHVwbGlua19yZWNvdmVyYWJsZV9wYWNr
ZXRfbG9zc19mcmFjdGlvbikgb3ZlcnJpZGU7Ci0gIHZvaWQgT25SZWNlaXZlZFVwbGlua0JhbmR3
aWR0aCgKLSAgICAgIGludCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMsCi0gICAgICBhYnNsOjpv
cHRpb25hbDxpbnQ2NF90PiBid2VfcGVyaW9kX21zKSBvdmVycmlkZTsKLQotIHByaXZhdGU6Ci0g
IEVuY29kZWRJbmZvIEVuY29kZVBhc3NpdmUoc2l6ZV90IGZyYW1lc190b19lbmNvZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpCdWZmZXIqIGVuY29kZWQpOwotICBFbmNvZGVk
SW5mbyBFbmNvZGVBY3RpdmUoc2l6ZV90IGZyYW1lc190b19lbmNvZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBydGM6OkJ1ZmZlciogZW5jb2RlZCk7Ci0gIHNpemVfdCBTYW1wbGVzUGVy
MTBtc0ZyYW1lKCkgY29uc3Q7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gc3Bl
ZWNoX2VuY29kZXJfOwotICBjb25zdCBpbnQgY25nX3BheWxvYWRfdHlwZV87Ci0gIGNvbnN0IGlu
dCBudW1fY25nX2NvZWZmaWNpZW50c187Ci0gIGNvbnN0IGludCBzaWRfZnJhbWVfaW50ZXJ2YWxf
bXNfOwotICBzdGQ6OnZlY3RvcjxpbnQxNl90PiBzcGVlY2hfYnVmZmVyXzsKLSAgc3RkOjp2ZWN0
b3I8dWludDMyX3Q+IHJ0cF90aW1lc3RhbXBzXzsKLSAgYm9vbCBsYXN0X2ZyYW1lX2FjdGl2ZV87
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxWYWQ+IHZhZF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxDb21mb3J0
Tm9pc2VFbmNvZGVyPiBjbmdfZW5jb2Rlcl87Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTihBdWRpb0VuY29kZXJDbmcpOworc3RydWN0IEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyB7Cisg
IC8vIE1vdmVhYmxlLCBub3QgY29weWFibGUuCisgIEF1ZGlvRW5jb2RlckNuZ0NvbmZpZygpOwor
ICBBdWRpb0VuY29kZXJDbmdDb25maWcoQXVkaW9FbmNvZGVyQ25nQ29uZmlnJiYpOworICB+QXVk
aW9FbmNvZGVyQ25nQ29uZmlnKCk7CisKKyAgYm9vbCBJc09rKCkgY29uc3Q7CisKKyAgc2l6ZV90
IG51bV9jaGFubmVscyA9IDE7CisgIGludCBwYXlsb2FkX3R5cGUgPSAxMzsKKyAgc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvRW5jb2Rlcj4gc3BlZWNoX2VuY29kZXI7CisgIFZhZDo6QWdncmVzc2l2ZW5l
c3MgdmFkX21vZGUgPSBWYWQ6OmtWYWROb3JtYWw7CisgIGludCBzaWRfZnJhbWVfaW50ZXJ2YWxf
bXMgPSAxMDA7CisgIGludCBudW1fY25nX2NvZWZmaWNpZW50cyA9IDg7CisgIC8vIFRoZSBWYWQg
cG9pbnRlciBpcyBtYWlubHkgZm9yIHRlc3RpbmcuIElmIGEgTlVMTCBwb2ludGVyIGlzIHBhc3Nl
ZCwgdGhlCisgIC8vIEF1ZGlvRW5jb2RlckNuZyBjcmVhdGVzIChhbmQgZGVzdHJveXMpIGEgVmFk
IG9iamVjdCBpbnRlcm5hbGx5LiBJZiBhbgorICAvLyBvYmplY3QgaXMgcGFzc2VkLCB0aGUgQXVk
aW9FbmNvZGVyQ25nIGFzc3VtZXMgb3duZXJzaGlwIG9mIHRoZSBWYWQKKyAgLy8gb2JqZWN0Lgor
ICBWYWQqIHZhZCA9IG51bGxwdHI7CiB9OwogCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVy
PiBDcmVhdGVDb21mb3J0Tm9pc2VFbmNvZGVyKAorICAgIEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyYm
IGNvbmZpZyk7CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIAogI2VuZGlmICAvLyBNT0RVTEVT
X0FVRElPX0NPRElOR19DT0RFQ1NfQ05HX0FVRElPX0VOQ09ERVJfQ05HX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZ191bml0dGVzdC5jYwppbmRleCBhNzZkY2JkYTI5
ODlmOWUxZjA3YzNhMjU3ODUyZTZjMWY5YWViOTgwLi5lMzY1NWI0NjRhNWNlZjg4YTZkYmUwNjMw
ZmQ4Y2ViMzY0MzcxYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29k
ZXJfY25nX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9j
bmdfdW5pdHRlc3QuY2MKQEAgLTUwLDggKzUwLDggQEAgY2xhc3MgQXVkaW9FbmNvZGVyQ25nVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIGNuZ18ucmVzZXQoKTsKICAgfQogCi0g
IEF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnIE1ha2VDbmdDb25maWcoKSB7Ci0gICAgQXVkaW9FbmNv
ZGVyQ25nOjpDb25maWcgY29uZmlnOworICBBdWRpb0VuY29kZXJDbmdDb25maWcgTWFrZUNuZ0Nv
bmZpZygpIHsKKyAgICBBdWRpb0VuY29kZXJDbmdDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5z
cGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShtb2NrX2VuY29kZXJfb3duZXJfKTsKICAgICBFWFBF
Q1RfVFJVRShjb25maWcuc3BlZWNoX2VuY29kZXIpOwogCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNz
IEF1ZGlvRW5jb2RlckNuZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICByZXR1
cm4gY29uZmlnOwogICB9CiAKLSAgdm9pZCBDcmVhdGVDbmcoQXVkaW9FbmNvZGVyQ25nOjpDb25m
aWcmJiBjb25maWcpIHsKKyAgdm9pZCBDcmVhdGVDbmcoQXVkaW9FbmNvZGVyQ25nQ29uZmlnJiYg
Y29uZmlnKSB7CiAgICAgbnVtX2F1ZGlvX3NhbXBsZXNfMTBtc18gPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KDEwICogc2FtcGxlX3JhdGVfaHpfIC8gMTAwMCk7CiAgICAgQVNTRVJUX0xFKG51bV9hdWRp
b19zYW1wbGVzXzEwbXNfLCBrTWF4TnVtU2FtcGxlcyk7CiAgICAgaWYgKGNvbmZpZy5zcGVlY2hf
ZW5jb2RlcikgewpAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBBdWRpb0VuY29kZXJDbmdUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVy
XywgTWF4MTBNc0ZyYW1lc0luQVBhY2tldCgpKQogICAgICAgICAgIC5XaWxsT25jZShSZXR1cm4o
MXUpKTsKICAgICB9Ci0gICAgY25nXy5yZXNldChuZXcgQXVkaW9FbmNvZGVyQ25nKHN0ZDo6bW92
ZShjb25maWcpKSk7CisgICAgY25nXyA9IENyZWF0ZUNvbWZvcnROb2lzZUVuY29kZXIoc3RkOjpt
b3ZlKGNvbmZpZykpOwogICB9CiAKICAgdm9pZCBFbmNvZGUoKSB7CkBAIC0xOTMsNyArMTkzLDcg
QEAgY2xhc3MgQXVkaW9FbmNvZGVyQ25nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qgewog
ICAgIHJldHVybiBlbmNvZGVkX2luZm9fLnBheWxvYWRfdHlwZSAhPSBrQ25nUGF5bG9hZFR5cGU7
CiAgIH0KIAotICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyQ25nPiBjbmdfOworICBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBjbmdfOwogICBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0F1
ZGlvRW5jb2Rlcj4gbW9ja19lbmNvZGVyX293bmVyXzsKICAgTW9ja0F1ZGlvRW5jb2RlciogbW9j
a19lbmNvZGVyXzsKICAgTW9ja1ZhZCogbW9ja192YWRfOyAgLy8gT3duZXJzaGlwIGlzIHRyYW5z
ZmVycmVkIHRvIHxjbmdffC4KQEAgLTQzMiw3ICs0MzIsNyBAQCBjbGFzcyBBdWRpb0VuY29kZXJD
bmdEZWF0aFRlc3QgOiBwdWJsaWMgQXVkaW9FbmNvZGVyQ25nVGVzdCB7CiAgIC8vIGRlbGV0ZWQu
CiAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZSB7IGNuZ18ucmVzZXQoKTsgfQogCi0gIEF1ZGlv
RW5jb2RlckNuZzo6Q29uZmlnIE1ha2VDbmdDb25maWcoKSB7CisgIEF1ZGlvRW5jb2RlckNuZ0Nv
bmZpZyBNYWtlQ25nQ29uZmlnKCkgewogICAgIC8vIERvbid0IHByb3ZpZGUgYSBWYWQgbW9jayBv
YmplY3QsIHNpbmNlIGl0IHdvdWxkIGxlYWsgd2hlbiB0aGUgdGVzdCBkaWVzLgogICAgIGF1dG8g
Y29uZmlnID0gQXVkaW9FbmNvZGVyQ25nVGVzdDo6TWFrZUNuZ0NvbmZpZygpOwogICAgIGNvbmZp
Zy52YWQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25n
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmNjCmluZGV4IGEwN2IwOTNiM2M3MDk1
YmJkZDQ1ODI3MjZhNjNjOWVkN2Y0MWFlYTcuLmYxOGZiMjhlOTg4MDdiMzAxMmRiZGRjMDYyMDYw
OTNkYmUwM2E1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2VicnRjX2NuZy5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvY25nL3dlYnJ0Y19jbmcuY2MKQEAgLTEzLDYgKzEzLDcgQEAKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAKICNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nl
c3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJz
aW9ucy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9j
bmcvd2VicnRjX2NuZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmgKaW5kZXggM2Y4
ZmFkY2Q3MWI0ZGM3Nzc0ZDliODU5ZTljNDY3NDUxOTliYjdhNi4uNmZmNzUyOThhZmExNmE0MWI3
NmUxMmVlZWJmZDc0NzM5YWI1NzMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJy
dGNfY25nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmgKQEAgLTExLDYgKzEx
LDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX0NOR19XRUJSVENfQ05H
X0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19DTkdfV0VCUlRDX0NOR19I
XwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KIAogI2luY2x1ZGUg
ImFwaS9hcnJheV92aWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19k
ZWNvZGVyX3BjbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2RlY29kZXJfcGNtLmNjCmlu
ZGV4IDI1ZjQ5NWYzOWQ4MTg3ZWJhMjJjNWFlMWIyZTA0YWNjYWZlOWM1YjguLmQ1ODBhMDUwOWI0
NzM4ZDc0YjhmNGRmZDg2OGYzMTdmYmExM2UwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9n
NzExL2F1ZGlvX2RlY29kZXJfcGNtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2Rl
Y29kZXJfcGNtLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3BjbS5oIgogCisjaW5jbHVkZSA8dXRp
bGl0eT4KKwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2c3MTFf
aW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2xlZ2Fj
eV9lbmNvZGVkX2F1ZGlvX2ZyYW1lLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzEx
L2F1ZGlvX2RlY29kZXJfcGNtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3Bj
bS5oCmluZGV4IDI5ZTRmYTY1OTNiOTNiN2NiYWUyNmIyNmNlMjEzMmQzMWI2NGMwNTAuLjlhMDFi
OGFmZjRlYmY4ZDE1YzRjZGViMTgzNWU2ZDM0MDhmZDMxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9nNzExL2F1ZGlvX2RlY29kZXJfcGNtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MTEvYXVk
aW9fZGVjb2Rlcl9wY20uaApAQCAtMTEsNyArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19DT0RJTkdfQ09ERUNTX0c3MTFfQVVESU9fREVDT0RFUl9QQ01fSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19DT0RJTkdfQ09ERUNTX0c3MTFfQVVESU9fREVDT0RFUl9QQ01fSF8KIAorI2luY2x1
ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwog
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L2c3MTEvYXVkaW9fZW5jb2Rlcl9wY20uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19lbmNv
ZGVyX3BjbS5jYwppbmRleCBjMTQyODdlZDQ4N2U5ZGJiNmY5YmExM2QyMzEzN2U1MzZmYzgyYjE0
Li5kY2UxNjM1OGVmMzUxOGZjY2MyODZhZTIxZDA0ZDkyYjkyZjRkNjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvZzcxMS9hdWRpb19lbmNvZGVyX3BjbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
ZzcxMS9hdWRpb19lbmNvZGVyX3BjbS5jYwpAQCAtMTAsMTAgKzEwLDkgQEAKIAogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfcGNtLmgiCiAK
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPGNzdGRp
bnQ+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRl
KQorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9nNzExL2c3MTFfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcy
Mi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5jYwppbmRleCBlYTRh
NzIxYjEyMDUyNTY1ZDk4MTlmMDAwNDE3YjAyOWNjNjc2N2MyLi40ZGU1NWEwYmI1MGZkZjc2MzFl
ZmU3ZDAyOWZiMmI3OTQ4NjkxNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRp
b19kZWNvZGVyX2c3MjIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9n
NzIyLmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29k
ZWNzL2c3MjIvZzcyMl9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvbGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1
ZGlvX2VuY29kZXJfZzcyMi5jYwppbmRleCBjYjk2YzNjMTdlZjgxNzAyNjQ5ZmM4ODhiYTMzMjZk
ZThkNTJmMWQwLi5lNjNkNTkwMzA5MDUyMjk4NWFkMTlmYTRhNjRkMDIxMjEzNTliYjZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmNjCkBAIC0xMCwxMCArMTAsOSBAQAog
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rl
cl9nNzIyLmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KIAot
I2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChi
dWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2c3MjJfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252
ZXJzaW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9p
bGJjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9pbGJjLmNjCmluZGV4IDll
NThjZTAzY2E0NzRiYjBjOWNkMmYwYzYyMzU5MWE3NWFlNDE4ODUuLjU3YjVhYmJlMjNkZjdmYzJh
MmExOTdmYTg4MGE2YzFkODM5YThjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1
ZGlvX2RlY29kZXJfaWxiYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVy
X2lsYmMuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5oIgogCisjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvaWxiYy9pbGJjLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19k
ZWNvZGVyX2lsYmMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5oCmlu
ZGV4IGVkYjY1ZDA5YzZkMmZkYWNkNzg0NDhiMWQ0OTlhNjgxNGRhZjg0YmYuLmZjYjIwNzRkYzk1
MzM2MDE4ODA3ZGE2ZDBjOWRiZTBjNzAwODUwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9p
bGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2Rl
Y29kZXJfaWxiYy5oCkBAIC0xMSw3ICsxMSwxMiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NP
RElOR19DT0RFQ1NfSUxCQ19BVURJT19ERUNPREVSX0lMQkNfSF8KICNkZWZpbmUgTU9EVUxFU19B
VURJT19DT0RJTkdfQ09ERUNTX0lMQkNfQVVESU9fREVDT0RFUl9JTEJDX0hfCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKICNp
bmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAK
IHR5cGVkZWYgc3RydWN0IGlMQkNfZGVjaW5zdF90XyBJbGJjRGVjb2Rlckluc3RhbmNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCmluZGV4IGRhZTk1NmIzMGMwNDk4ZWUw
NDBhZGFkM2Q5OGI2OTc1NTYxM2EwMTEuLjM1ZTZmYzY0YTYyYWJhYzYzNGE2ZjIxM2E3NThlOTYy
ODk5OWQ1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxi
Yy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKQEAgLTEx
LDggKzExLDkgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9h
dWRpb19lbmNvZGVyX2lsYmMuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxs
aW1pdHM+Ci0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVk
ZSkKKyNpbmNsdWRlIDxjc3RkaW50PgorCisjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvaWxiYy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29u
dmVyc2lvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL3Rlc3QvaUxCQ3Rlc3Rz
Y3JpcHQudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvdGVzdC9pTEJDdGVzdHNjcmlwdC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5YzYwOTIxMTZiN2ZmNTAwZWNmNjljZDM5OGQ3
NGM4MWU5MTY2YmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2lsYmMvdGVzdC9pTEJDdGVzdHNjcmlwdC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw3MyArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251
bGwgJiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3Rlcgot
Ci0jCi0jIFRoaXMgc2NyaXB0IGNhbiBiZSB1c2VkIHRvIHZlcmlmeSB0aGUgYml0IGV4YWN0bmVz
cyBvZiBpTEJDIGZpeGVkLXBvaW50IHZlcnNpb24gMS4wLjYKLSMKLQotSU5QPS4uLy4uLy4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9hdWRpb19jb2RpbmcKLUVYRVA9Li4vLi4vLi4vLi4vLi4vLi4vLi4v
b3V0L1JlbGVhc2UKLU9VVFA9Li9HZW5lcmF0ZWRGaWxlcwotbWtkaXIgLi9HZW5lcmF0ZWRGaWxl
cwotCi0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0YwMC5JTlAgJE9VVFAvRjAwLkJJVDIwICRPVVRQ
L0YwMC5PVVQyMCAkSU5QL2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMjAgJElOUC9GMDEuSU5Q
ICRPVVRQL0YwMS5CSVQyMCAkT1VUUC9GMDEuT1VUMjAgJElOUC9jbGVhbi5jaG4KLSRFWEVQL2lM
QkN0ZXN0IDIwICRJTlAvRjAyLklOUCAkT1VUUC9GMDIuQklUMjAgJE9VVFAvRjAyLk9VVDIwICRJ
TlAvY2xlYW4uY2huCi0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0YwMy5JTlAgJE9VVFAvRjAzLkJJ
VDIwICRPVVRQL0YwMy5PVVQyMCAkSU5QL2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMjAgJElO
UC9GMDQuSU5QICRPVVRQL0YwNC5CSVQyMCAkT1VUUC9GMDQuT1VUMjAgJElOUC9jbGVhbi5jaG4K
LSRFWEVQL2lMQkN0ZXN0IDIwICRJTlAvRjA1LklOUCAkT1VUUC9GMDUuQklUMjAgJE9VVFAvRjA1
Lk9VVDIwICRJTlAvY2xlYW4uY2huCi0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0YwNi5JTlAgJE9V
VFAvRjA2LkJJVDIwICRPVVRQL0YwNi5PVVQyMCAkSU5QL2NsZWFuLmNobgotCi0kRVhFUC9pTEJD
dGVzdCAzMCAkSU5QL0YwMC5JTlAgJE9VVFAvRjAwLkJJVDMwICRPVVRQL0YwMC5PVVQzMCAkSU5Q
L2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9GMDEuSU5QICRPVVRQL0YwMS5CSVQz
MCAkT1VUUC9GMDEuT1VUMzAgJElOUC9jbGVhbi5jaG4KLSRFWEVQL2lMQkN0ZXN0IDMwICRJTlAv
RjAyLklOUCAkT1VUUC9GMDIuQklUMzAgJE9VVFAvRjAyLk9VVDMwICRJTlAvY2xlYW4uY2huCi0k
RVhFUC9pTEJDdGVzdCAzMCAkSU5QL0YwMy5JTlAgJE9VVFAvRjAzLkJJVDMwICRPVVRQL0YwMy5P
VVQzMCAkSU5QL2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9GMDQuSU5QICRPVVRQ
L0YwNC5CSVQzMCAkT1VUUC9GMDQuT1VUMzAgJElOUC9jbGVhbi5jaG4KLSRFWEVQL2lMQkN0ZXN0
IDMwICRJTlAvRjA1LklOUCAkT1VUUC9GMDUuQklUMzAgJE9VVFAvRjA1Lk9VVDMwICRJTlAvY2xl
YW4uY2huCi0kRVhFUC9pTEJDdGVzdCAzMCAkSU5QL0YwNi5JTlAgJE9VVFAvRjA2LkJJVDMwICRP
VVRQL0YwNi5PVVQzMCAkSU5QL2NsZWFuLmNobgotCi0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0Yw
MC5JTlAgJE9VVFAvRjAwLkJJVDIwICRPVVRQL0YwMF90bG0xMC5PVVQyMCAkSU5QL3RsbTEwLmNo
bgotJEVYRVAvaUxCQ3Rlc3QgMjAgJElOUC9GMDEuSU5QICRPVVRQL0YwMS5CSVQyMCAkT1VUUC9G
MDFfdGxtMTAuT1VUMjAgJElOUC90bG0xMC5jaG4KLSRFWEVQL2lMQkN0ZXN0IDIwICRJTlAvRjAy
LklOUCAkT1VUUC9GMDIuQklUMjAgJE9VVFAvRjAyX3RsbTEwLk9VVDIwICRJTlAvdGxtMTAuY2hu
Ci0kRVhFUC9pTEJDdGVzdCAzMCAkSU5QL0YwMC5JTlAgJE9VVFAvRjAwLkJJVDMwICRPVVRQL0Yw
MF90bG0xMC5PVVQzMCAkSU5QL3RsbTEwLmNobgotJEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9GMDEu
SU5QICRPVVRQL0YwMS5CSVQzMCAkT1VUUC9GMDFfdGxtMTAuT1VUMzAgJElOUC90bG0xMC5jaG4K
LSRFWEVQL2lMQkN0ZXN0IDMwICRJTlAvRjAyLklOUCAkT1VUUC9GMDIuQklUMzAgJE9VVFAvRjAy
X3RsbTEwLk9VVDMwICRJTlAvdGxtMTAuY2huCi0KLQotZGlmZiAkT1VUUC9GMDAuQklUMjAgJElO
UC9GMDAuQklUMjAKLWRpZmYgJE9VVFAvRjAxLkJJVDIwICRJTlAvRjAxLkJJVDIwCi1kaWZmICRP
VVRQL0YwMi5CSVQyMCAkSU5QL0YwMi5CSVQyMAotZGlmZiAkT1VUUC9GMDMuQklUMjAgJElOUC9G
MDMuQklUMjAKLWRpZmYgJE9VVFAvRjA0LkJJVDIwICRJTlAvRjA0LkJJVDIwCi1kaWZmICRPVVRQ
L0YwNS5CSVQyMCAkSU5QL0YwNS5CSVQyMAotZGlmZiAkT1VUUC9GMDYuQklUMjAgJElOUC9GMDYu
QklUMjAKLWRpZmYgJE9VVFAvRjAwLk9VVDIwICRJTlAvRjAwLk9VVDIwCi1kaWZmICRPVVRQL0Yw
MS5PVVQyMCAkSU5QL0YwMS5PVVQyMAotZGlmZiAkT1VUUC9GMDIuT1VUMjAgJElOUC9GMDIuT1VU
MjAKLWRpZmYgJE9VVFAvRjAzLk9VVDIwICRJTlAvRjAzLk9VVDIwCi1kaWZmICRPVVRQL0YwNC5P
VVQyMCAkSU5QL0YwNC5PVVQyMAotZGlmZiAkT1VUUC9GMDUuT1VUMjAgJElOUC9GMDUuT1VUMjAK
LWRpZmYgJE9VVFAvRjA2Lk9VVDIwICRJTlAvRjA2Lk9VVDIwCi0KLWRpZmYgJE9VVFAvRjAwLkJJ
VDMwICRJTlAvRjAwLkJJVDMwCi1kaWZmICRPVVRQL0YwMS5CSVQzMCAkSU5QL0YwMS5CSVQzMAot
ZGlmZiAkT1VUUC9GMDIuQklUMzAgJElOUC9GMDIuQklUMzAKLWRpZmYgJE9VVFAvRjAzLkJJVDMw
ICRJTlAvRjAzLkJJVDMwCi1kaWZmICRPVVRQL0YwNC5CSVQzMCAkSU5QL0YwNC5CSVQzMAotZGlm
ZiAkT1VUUC9GMDUuQklUMzAgJElOUC9GMDUuQklUMzAKLWRpZmYgJE9VVFAvRjA2LkJJVDMwICRJ
TlAvRjA2LkJJVDMwCi1kaWZmICRPVVRQL0YwMC5PVVQzMCAkSU5QL0YwMC5PVVQzMAotZGlmZiAk
T1VUUC9GMDEuT1VUMzAgJElOUC9GMDEuT1VUMzAKLWRpZmYgJE9VVFAvRjAyLk9VVDMwICRJTlAv
RjAyLk9VVDMwCi1kaWZmICRPVVRQL0YwMy5PVVQzMCAkSU5QL0YwMy5PVVQzMAotZGlmZiAkT1VU
UC9GMDQuT1VUMzAgJElOUC9GMDQuT1VUMzAKLWRpZmYgJE9VVFAvRjA1Lk9VVDMwICRJTlAvRjA1
Lk9VVDMwCi1kaWZmICRPVVRQL0YwNi5PVVQzMCAkSU5QL0YwNi5PVVQzMAotCi1kaWZmICRPVVRQ
L0YwMF90bG0xMC5PVVQyMCAkSU5QL0YwMF90bG0xMC5PVVQyMAotZGlmZiAkT1VUUC9GMDFfdGxt
MTAuT1VUMjAgJElOUC9GMDFfdGxtMTAuT1VUMjAKLWRpZmYgJE9VVFAvRjAyX3RsbTEwLk9VVDIw
ICRJTlAvRjAyX3RsbTEwLk9VVDIwCi1kaWZmICRPVVRQL0YwMF90bG0xMC5PVVQzMCAkSU5QL0Yw
MF90bG0xMC5PVVQzMAotZGlmZiAkT1VUUC9GMDFfdGxtMTAuT1VUMzAgJElOUC9GMDFfdGxtMTAu
T1VUMzAKLWRpZmYgJE9VVFAvRjAyX3RsbTEwLk9VVDMwICRJTlAvRjAyX3RsbTEwLk9VVDMwCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0NoYW5uZWxGaWxlcy50
eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9DaGFubmVsRmlsZXMudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWY3NDEwMTQxZTgzOTlmMmI2YjViYmUxM2YyNjJm
NWQyODg2ZTgwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0NoYW5uZWxGaWxlcy50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwzICswLDAgQEAKLWJvdHRsZW5lY2tzLnR4dAotbG93cmF0ZXMudHh0Ci10d29y
YXRlcy50eHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0lucHV0
RmlsZXMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvSW5wdXRGaWxlcy50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNmI3YWZiNmNhODU5YTUyMDljNmNjZjM3
OTlkNTgwM2JlNDJhMzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvSW5wdXRGaWxlcy50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1EVE1GXzE2a0h6X2xvbmcucGNtCi1EVE1GXzE2a0h6
X3Nob3J0LnBjbQotRjAwLklOUAotRjAxLklOUAotRjAyLklOUAotRjAzLklOUAotRjA0LklOUAot
RjA1LklOUAotRjA2LklOUAotbG9uZ3Rlc3QucGNtCi1sdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1s
dGVzdF9tdXNpYy5wY20KLWx0ZXN0X3NwZWVjaF9ub2lzeS5wY20KLW1pc2MyLnBjbQotcHVyZW5i
LnBjbQotc2F3c3dlZXBfMzgwXzYwLnBjbQotc2luZXN3ZWVwLnBjbQotc2luZXN3ZWVwX2hhbGYu
cGNtCi1zcGVlY2htdXNpYy5wY20KLXNwZWVjaG11c2ljX25iLnBjbQotc3BlZWNob2ZmaWNlMGRC
LnBjbQotc3BlZWNoX2FuZF9taXNjX05CLnBjbQotc3BlZWNoX2FuZF9taXNjX1dCLnBjbQotdGVz
dE00LnBjbQotdGVzdE00RF9yZXYucGNtICAKLXRlc3RNNEQucGNtICAKLXRlc3RmaWxlLnBjbQot
dG9uZV9jaXNjby5wY20KLXRvbmVfY2lzY29fbG9uZy5wY20KLXdiX2NvbnRzcGVlY2gucGNtCi13
Yl9zcGVlY2hfb2ZmaWNlMjVkYi5wY20KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9JbnB1dEZpbGVzRmV3LnR4dCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0lucHV0RmlsZXNGZXcudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGJiZGUzMGQ3MzM3YjI4MzZkYzUzYTAwNTNhM2EzMDlj
ZTJjNDkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0lucHV0RmlsZXNGZXcudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNiArMCwwIEBACi1EVE1GXzE2a0h6X3Nob3J0LnBjbQotbHRlc3Rfc3BlZWNoX25v
aXN5LnBjbQotbWlzYzIucGNtCi1zaW5lc3dlZXAucGNtCi1zcGVlY2htdXNpYy5wY20KLXRvbmVf
Y2lzY28ucGNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9MaXN0
T2ZUZXN0Q2FzZXMueGxzIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvTGlzdE9mVGVz
dENhc2VzLnhscwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA4ODllZjRlZGRiNTNi
NTI5NWU0MjQ4MDU5ZTNlMzQ1MjIzZjI1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJh
bCAxNTIwNjQKemNtZUliM0FpMHFsfDZwJE9HM2dSI1V6c21rOWtiOzx8S2p5MFY4TV9Me3dCWEpk
emlQMmBgWDVBU2VpXklIRHFgCnpJTiZfYklMYF9XQz5xMz4jO0xKZXlWYlV9KSRWcF5GfjdDVy1T
PEA4UX5UNkM9aUtNX3tybGZPekVmbmFTOVNLQAp6WFJxMi1fdHQqKmUmZzw0P3xiNzFfV2c8UmV2
VVZEJXdNLXtaPz4hT2JNV3QwMmsmQ2NBcHBkRy1MYEY4aGR2K3cKel8tNzFJZkIqU2t1bWJuUCRI
UzNDPTV7V3xKUGhXMUtFP3UhP0o7KTEqYiFxVmowYSVzajhSfWYwJWxpPy03dDI/CnoqYVBFJTc8
KiN1Z3xSb3JKe2JGQUpQMmJ5ajBhPXZrOHVGVEFqV3xoMlZvcUhhUnxudDc+OGpUaiZUSVdrcitv
fAp6OUYxYGQjektybTc+aEI2Rm9yUWtGaCgpUEZ2YyteRnFVOH0jYU0+JTVSNzluaj5DODsjXzxA
LUY7MmpFN3stWWgKekN0O2s3QG88YjQ3Pn5kPjE+O25WTWBBbipWPHBDRTdeaD5MZnBJM3JxY1A2
SGNucnFiNz5+dHg5TEQxQCZjUyNCCnojdUc3fmdtRXMkbFFFdXh1P3Bpbmo3Zn51N3xnPk97Q141
I0V5ZXtIN2g8ZiNjcSt6dmoxM3FVVk43RmUjSkN2YQp6NXt5azRuPXhpRUYyJVNFPDhxOEc3Kn05
QzRkZHc7UzdLYStAZUdXc0Z8TlRsM29+dVJrJU5lUTh2b3k5a0g5WT8KemZBKWw4SXgtKT9GQHA9
WkhSZCtFd00qSWw3cSsrVntyKzNtP3tqREMmPSE4Ki1WTil0NWpOTUdeUXw5QEdWTnpLCnpHdGlv
Z0xwbmFoOThKXlBtYlY/NGhzPDR5UmxOd0FWQzwpMjcxbW14JGpvNTxIYD9fTSYzZ3B3Qk9IN0Yo
MSp9fAp6SzdYR09eUHN3b1B5bF9IdktkSjhYRFJHPVZ2bmBZXipWeDE8N2ZLP0lFJU5OWFduX2hV
R3J+OEhReEB1e0R+UGIKeng2WnZDVFZ3dFM8Nkl+Vz1sJDkxclk4cUNPYnRGXyk4ekQ7IU4yaihp
UG5lNzdKYXg0ekNOX0kwTnhFP28jJmNjCnpAYyYmPFNAPThUQUtUc1NfV2dHNlB1dU43QHRaOTtZ
aFFvakN5cm5wO0Zhb31mZk1ZMEZTNlQlPn4/MnRUanBjLQp6bkQxTD04MT9DZypuZmUhZm9uOGlQ
TXFJNTMwbHx5RXUwVUh0VjdORHxJUXY0TFZaaWtyQDA4dSh+SEU8TiRjcWAKeiR7eVhaJTxafHk1
M3hxUm1GX3ZYViFRVFN1fDBiM2FhXyttal88S1kzJD92X0okejRGeEtjRmwhRH5yI19GSzN6Cnpf
TF5nZDkmLSVmRCVzMSpmfVUyazU2LWR3LTJHNlVhVjArSmtiQDNCPUhQPmVSdm1mbHhrcSVzeGt2
NmxfZHMwaAp6X3ZgeG9sZ15yMl5XXlRHNCNMZDxGNTh7czc3Y2FKMUkoIW8jfGQrZ3puMz9nPzc5
UzNiWD5EbihVcWVISkR2JFYKel9YdGF6ZCpyYn45SktIdF9gVHxnNklRez5CSFIkKm1TRUtwKSNI
dkR0UjhnS1ZBbTFMYW9kMCFmVTI9fTFseyhtCnpZWmE1cm16UEUtYVFBYHgzfT5gK3l0Q1VtKnFT
Ym55d0JiZDhTYEo7MjYxK0Rlcl9CNUpJfVM0e2RIKVchT2tNMQp6OG4pLT57ajZSODU2aUZTelRV
MlhvcXVuRGVeLUVpVXgwczJmUGE2MGVAfXBhWkdlQWFmRGljLW4qVCN+OV5TOGEKenVnfmlPZUF9
UDt7JXdFaXs5NkxeZD8zSm9JS1kyNHpgcjJDZTxIeEFgdHVQeCZ5S2JBWTNxY3FmOSQld1l9WnxI
CnotdHAhZyZEPllte2RhWnorTz9sTTtCeUM8eGdXRnFKayRgb3t+eGh+e3BzbFEkTit5I2ZJbXYq
YFRFUHd8RFE2dwp6b0xfd0gpfTd6QnA2N1M/QDdSfHkyWHhMeXpVSCgwd3xSdSRfSCtBXkFIK1dx
elE9b1phbGhEfSRFe0NXfEczLWkKeiV6cXlLeG8+QTR6UDlaNF5XQ3k7IXIhdiV1NnlwZEMpV0Fa
bWdqM3d5RmNie3VYQjYtPWkkMCtkMmdNIT4rSjlPCnp4a3JjcDRxdThMQDc3X3I0cXdeLSRfMEN2
RTRlYEs9WG1xdWR3OyM8c3MjKHBSYjQhSDd7RVJBOWA8enNaekZrOwp6I08zOXZvcEQ3VHMyfFky
KEBaI15lWiFZPHo/QFc8XyRuYk8yQTAmTTFES1BmMTFRPzAxREtTZzExUiZQMTkqTlYKejlsKE47
Yk82dGNxeXU+QkJefChYRGRfK2Z6b1l8PlBDZWs1KUJfZiM5PFY2JjBOZ35UMTxramQlMm5kfFMx
a2dxCnpzfT8tV3N+V2grTTdgKm8pQlhWaTMjNlJ6I0JBUlc0LVZFUiFIc3FBTnd6SS1vYG1uRl80
SCg5dzBqYzIyIyNUcgp6YVFyQk9lKjhudUR5dGpuQHdWIU00YWBPU3tLWHg9YFREa1N7Nn08NmEq
TnFjcEpkeVluPG5BQWh3Yj1qQFJxNTcKekMpQHQqbVduNFlfMGw8eEwrOUljYSsybENGQUkzR147
Sz8/YDRaeVFTNnt0dFA9MShwUEVoNXh1VzxPNHtuPGdgCnp1M0YkYiNySCQyUEElNytgcllxLVM5
NUNsXjVyJEJzJDluQGFeZSUtSSZNMig8PzJyMTY8eCl0S1ZLRENacTJGYwp6c2BSJX56OGQqMWE7
YnJ1UXlwWDV1NCVjSXN6LUt8aTtTbDtlXmcxb157c0RwbFhOc3RVRH1TWkRpXj1weyl4JT0Kenp9
cUojYiVrN1lZb0h6bC0jfX1OaEVkZFJYRjRiNXdyeUskUUdEPSZBRlBSeyU1fGIzaHE+KWZNPkpL
Z2UjXjhOCnpgPDc4cTJWRn5oKXE9LSo9aV9sV1Y2SDIjd0o1bW00Nmo8JHhiN1hVYjNXR1YpPEhP
YHRkOz12QnpHblcqRGMtewp6bXleYEk7fkxLflEpe2M8KWppb1dXfEZOZG48djI9TEtSTnt2fmN8
NUAxSCNmJDR0X0crIVM2RHpMPCh3NlcofSsKekMmQncpeShpaGF2VXc3YHw1Y2Q7S3dwI1FOZStw
YnIyWTZVOTFkVFlNNjN6I3Q7M1YtOVclKyttQ2Nqdi0hJXo8Cnp6OSE5KzkyenFUdDR+dW5lRE5F
eENlNCVWNkVuJXltQ2Nqal48JXtvMERWb0dDcGohO2xKP2AtYUVrZkRIZXlacQp6M01vN1pVWV9A
IVdiNFoyTmR+KG4wbnBjXmQ2TDZwQ1RUeWU0dWBgeHNVcF5kRjlPNHBKU2IrOHR0Kj0rSWswT0kK
ejBEVm9XbGlXMTA4PWlYTSNvZnJ6cEBSenRBR1VoKylien5valNFZ1FIKilGWnIhe3h+WjRiYl4+
cUJed0s4VUJ+CnpnTHVOZDh2bkpRRXcqMV93RDJUPHtAa2d4S2xzXml4NlJ8ZmQ5fWVeekBkQ15m
QFhJMCY1WUV8OU1vV0B7VGpyWQp6bkshbGVjUiVgfVplfTslJXhLLXJWR1U7NXVUcmQ7P1dXZkxe
MHo8SSZGdD0qOExPSylzPSo5aiRJUVc5NDtFX3YKeilZX2xqX2JjN1o5PUA2Snh8dX17WDgzWUol
cSYxfGUqSnNoJW1hTmg2TG04cTRRQVQ2d0trZ1ZyYEYjOGkrZ281CnpkKHpCVXYoZ1RMblh3M15a
QyZ+Q3R2fVZ4P0IkekxseS0xfm5YMXladUticnpkfFdyUHd7SiNLK1RqZ21zIUgzcwp6QH04ZjVT
fnMoZ1okP3F0KEc2eSpPNTNffT51dWxIJkZ0JSZRSXhqMCFBdzxZVFVVUGNNP2NyaUpqZ2VyQ35k
VUMKek9qVClIU05gUkBBSil6Nk0+Ny02TipqY2tpM3B7UWpLMklzX3E1SGhweTl7V3Y8TGZVNnJ+
LX5WNVh8SGs8b2leCnplenxVRGY4VUl2dj9DaEtSRnlVfGB1WHBAU35xaW1aJD9xdEYlNCNfTipm
dmQ7MlhjSm47Rz1ZQ2B1YkBGakgwOQp6JG1tVVhOcm09dmJEKGNWUVFCQzhuWDF4OE0qbj08NE8l
b2k7cWYlP3lXRG0yVmN2RH4hUTE4c3VhKVRjeTdue3IKenF6OUxpTFEoI3QyWVFvTVJmSTwkWFAl
fXtkUHE0Yl55NSFAczVmYTxHc2U4O1ElfSQqSit6ekBZVmp2TSh3bnJaCno1TSE9Y15Db0BMIV4l
bWE0UyYqdy1sU0RNcHJgSVZjaiVLSVVRUC1uXz4mSE1sVUIyRCVwWUV7TFlzNX14KFY/agp6e0tV
eU1IIWZKI28lejstdyNgOGc7R3xqT3VFNnY3clU+MzQ8bFBiZiY5QFB5bEkoKjExSDZaUygmVUVL
bXV7R3gKelMre1plI3MkfVFQZEtwV3dqSSQ+JGQofkNjNVQ0RiUwe3lKX0QrSjZeNmpqUzBsdkx0
NFF6KypPOCUxWFhTQT5rCnpSa1daQlpRcTQlOFlzfEpmdXw4Q1R7eUxSe29xTWM4I2RneTtBK3BX
eXwoUUR6Yj9laDtBKnRvNGRVTlpAUSFWVAp6ckJ7M18lSDktS1B0dU44ZUUoQFg9VCNlWnlsU0o0
UzhhMz8tbjJkWG5tT0JVVHJrK30lRGchK2F1UGI8K01SYz4Keld3YEcjKktDSjxrTVE+MDR0PmJ3
ekp1dGM5SX0wcz9QQ15SR1opN2s8e2RNNCtYNVZPRGYrY0cqP1pzQigkYDJVCnppPntmRUJObGxf
JS1ePEM/VEJ0JDRAQjF+LWxsb0BtV3d3YFBFWEVrKztxakAqOzg5KVpkfncpP3hfYUd4OXgmPAp6
JH1NUHtXQTNNSXtATGJ1MT1qcCp4VSZVJTtHMCpTPkAoUlN1azheVi1reTJIIypHbF92RUIyd19U
NHJZamozJGQKej8zT0N1NSUwX2VXMVlFbk0lTX5uTDdYeCp4bnx3OzElcjY0OzVqO0g3cCZ8bGFF
UkpwMlMrYn1nWURNe1JzdUwtCno0bWtDeV9IPmx1ZTBiSV9nZnxXQmoyOVZ8JHgtfEskIysjSVpg
WiVUPGxDME48RiszbzVLY1o/b2c2akxwTHtvRQp6QF4mMnpPeTBnVjdfZ0klUlZQTyteYXtlOS1J
ZDglNThEfT1VdE59KTI2ak50RzJadCViXjc4PEElI28zUSNQOyUKejskY3RlI24yKj9VWT07JUBW
PFgxWD8hQCk9anAhLVpqZXh5Ujw0Xn5LZWF+QXwzYFZ3PzJXcCMoazZPNmxEPypeCnowP2N1MGJo
VzVjZWZTcGxjMzhOYiZ7ZDVxPTs+M0omVE5gUWRHUUshWWQ7amAoPWpuNC0yX2RzdShWJiUqbXti
Rwp6QzdwUDAhNG5rYEpTMjZFIVJhe0s/UTZAeDxtcGlRQ2ZsMEpzYnV3QV8tRlpJYiRqJEJWdjVy
QCZQPzY3O1FhMTYKejI2bip0IVp+Syg2eUl5KXN+K25MLWwqPUJHYGA3UDdUUHhJbChhVkxsKGFV
d1g8JGIqbUUlcFZHY0tMNjhOYnshCnpgYW4jNWhGeWJ0Jlp7TSM2fHlWbUJ1WT0oc04rYytidiRW
IW1hPk9qR1lATmJOVmZ+fjx7PVNoQklacipnK0deIQp6UWF6U1pKJHYyRTJDVVhfX2ZjflNxfn5t
P1YrTSlpZGV6bjU7dU9jKERLXmVmMHA1RUxiTX49UWFLWVF6cEtDP2MKel81SzNheTtEY3AoUkw2
ZXdrc08rY1M4NjQ8ZmR0c3RhZj1fLXRGa1hqO1BkK2hsTmN6dVIydnJFMzNTUytaQkhDCnpmXipE
XkR7cXFBZmFyRmBlYGpOb15LRzxgZnktQ2VmMVFUZFNxI35ieSRxfGs0KDs+fHNOOTJSJjtfYFAm
WSlDSQp6bkRjRHdATzVaR3pXUVU3PThuK2ZyaSYmdzQ5LWsjcDFCVFAkZ1RUSD9fZ0Y7VWI8bU0q
YUJBP0s2fUNXYS12WHMKem5pbWF7K1MjbUZ3YEprbDRJM3hoSkhMOXQtc2FVNi1gbnpVS1pTV1Nu
eiFGdmA1Z3s3KlcrfCg7bEpDX0ZudjNBCnplKD1BdyV3TnBsO0xBfDhJNDtFQlBiXnd8KjNeY24k
PDAlWCpIMkFQVSRKT3YlaGNlKVF3TjhLQEg0bkAjbWQzYQp6cCtXNGxXXiFoN0B5MVEtRT85aT4q
ezd7b0g5V0VZbCY3dVF1eU9pPU1IakVXc0kkVypsWik0bDR5X3RpYzhNfUkKemshRVRsLVBDd35S
M25LfElhQkZUQzdLJVBCVWh0b1FJKTNCcWU/YTk3QkYzYlZ+SjVZUXxWRDluaX1tUlNMMTA+Cnpt
OFIwOE47TzRZV0xBcmIjSGdJOV5yJHBibip1ZWt0TEJ9KmFSISZrWH1wQCt5bDdfMk9zQyQoNnZS
b2I4ZzdnKwp6eD8kdHhuPGpEUE5WY2V6azBeXlhtdjc5b3NHWnRSNGE2OUdhb0sjfiMhV05JKW4h
UlZGSyhZR1YtMTNGNkxuSXsKek9CdD4mJDtNbklYKChFJUY8ZHY3cmJnekJXa2k7MHRnUVNRa3U2
SiV0VGRKcG5RQ2woU2RBbFk4OGFkcTlAMFhLCnp2WCY4QXZiRkxXa1B9PEFiVUQjQiM4ejYlaTdu
Wmh5QXRIWVJ4T2ZJdXttb3d2OG1TWjkpTm9Mb3B0R1BGO3B0cAp6V2NCOTY/UWx0cSp7Ris7bzNk
KU5kaDZoSmhfVkBWYEVnVExaQntTclppaHopOyV2TUN0ciF8d2JuNUE2UndsUXYKelhod3lQbiRz
N0VHQUNjVSNMTzhpUDBFfm48dXctSnI8Kmc8JnhrcThkaE1UejBZQXJrYCZySHo+MVdLR0Y3YC0y
CnpDbkVmR2I0TDBaRj10c3dCbUc+YCtzfF4mTkl6cmRiVlZgSiYhcks1eDtaMkw/OUJQWiExKjN1
UFF8JigkdkBkeQp6Z3ZaQkI5eGpeNyVwSkYqVyk3RHxXIyhuUTdkaWEpJldmUjd0cEgrOSVWIXFB
K01GemFGPnxfO3QxaHRHb0c1QEoKekxsSih1SXFMJGUlP1VxYTx9OGE8cUBUbVJ7VmVCPF5mUDhv
N2tpfGlCTjJZT0lWMWd5bjZvVGFrJCZRMCtEbzcxCnpvUk5PVSU7fTAlcUBURSRfVm0tdThSPShk
UEpGSVJwWkFtRVQodGxXY2gwRERWckZsdWZkMDhQSW91SSEpWU1IUwp6dXMoSCEjK3F2MmgqQVNi
YUQhcF8lbzxwbWxlSHlnUElyRlFIQ0NJR0g0cngjSl5nZlopLV9nfWxZVTBiUz1Pc2EKektYR21D
PCEzbyhxQE9XIXk0V05BI0ZlX0lwS2lgYktPXlFXPnM2JG14U3NhJXZ6IzsxJnpMen55XjhhNTZj
d2VYCnpwS2lgTEtpITxPUTNJYFdUe1JGXzAhdX59cy1feFBwQmx3R2UoSShnU2Y0dGt3Z2V3WHRR
WjxxWVR6aEp3JmdReAp6VX5OdittWiYtMWBCbTNnWkJFcHtRUGxzUWUhNG05OG1yQW9LT15RVz5z
NiRtUCp5S0wlUSsrY2pHNUVMOV9jNCEKeitTNS1yWFFaREliQyZmZyhvYmw8bSFJWEZrJCVSXj5G
UU9hcFNZZyhed1o1NT4xU3Vvekg4dWQ9bippQiNseDtiCnoqZkcmfUErKjdGT15xd0pDOE1UcER1
bmZeYWsxXlMqaUFRc1ZfRzRFeU96JV5ndGErWVV9RU5VQ3N8ISt3Sy1WYAp6NXFuUVItSkVyeSkj
ancxNXAkTUJFN0RLZ1ghUD40b0hOcVRtXm9lU2FlantCPUIxfmZacTdKQVc5QlQyUi1+Vn0KelEx
fGspb0hOcVRtXm9lMWl1NGx+KXQtTDNJVjFoLSUtTUcjTD1DamdicnFfUHMtZzsyKTZIT1FZUUVF
QyQqOEhECnpZRzhmcGh9PD5SejtVR3BqXlJlYkB8aVdUSFlhTEopU1R9OHMleHdeQ3UtbXJaWnZ4
Tz5FXjYhdFRyZThqRl97bQp6U0NNfD1NeCZSWDwoIWR6Iz8wd3JrTXQ5RjBYX1k2YjRMMFpGPXR0
P0JLXmVtdzNuYWRvUk5PVSU8MVk/cUBURSsKel9WbS11OFI9KGQmZV5EZSoxMmo4OTZeUChXS15N
UXMpNjtYSjRHZEc+WlRmNHBFfX40Wkt7RDJTYEViMiExOT9qCnp1cj89YU9VI19ee0hrbExIWWFN
fUk0Jihje2Q5QklIQ0NHd2UjWHBNKX5pVEFhaD5ZclhFfHIycER9Wn4qZHpWSwp6OFBMO0RIKW9g
dTVwJE9IRCQtQSFQUUNtcj1aeTMtVz0+YkhCS15kPCswIyFxWFFaRTxJY0s4PVRJYWZJQWctKkkK
emo0RCkzSEx5TjRFezU/X0hgVCFVKVZPfEdHUEVYKi03IyRWPWlmM1laSkZjYSluNyk8P3F7KCZM
MW1AY2haI1MrCnpKTGkxZWc9U31Rb1QmYj8kIyp3PGl0bitybXZ0QDBfYSV8T20kUnElOXpEQlRu
SDFsYiNgXkFOUHdfbz1fT2t3Xgp6X2BXUkNfajJ8Vy09ay1ESDhIe1dpSkA1RS1SdWR6Y2g4USQ5
XyNhPWJrKX5OUyhxSEAlSjJDeGNFVkxTWHJ3QzwKelFBV2JgSUFtbkJEPDdkJntwUU5kdmI8e1oj
Wnl6T0ZJPUA2ZjZ6NnApYVolZjRlRC1EN0hiTW5yPloxfmJ2d3RSCnpKSilOOT9yOU9WZH0xVSRN
clNjRSMmbkJpRXpYTl5HJiNvN1ZxVDBIN1R2MW0jVzxFOHFxQ1M3VzRndCV3JiVxLQp6bypaTG9G
KXpqcGl8IWhiN3ZuXkZqTHU/U2l+KT1JYG0yN2dNNzt7bzxZPUo2VUtWNCE7cClgZWFHKGY5OEUm
e0AKel4pPykrNDNtTH5CZCVmPlVBbFNRWVZHcDFxJTlAKWB6OU4lN1UtJlZiNXQpX3luSE9wdjd6
ZiF3WlYmR2Z7azh2CnpKN3tCQmQ+cjlGZmIhPD4pQHNSK194cHg/bHl4Z0RBNH13ZmEmYm80Tlh0
aShqVUtoaGBCX35uPGF+Km9wWUhkZQp6S2NrQjhSYChYYVZzTFUpRUBqU0k9K0UhRnRvNW90Wlo/
ey1KcCVreDBRe3hvPGZ2UiQrI1hUKGRYKmhGVFVUZ08Kei1RNiN2WmVEZkskP2Z2PSMmdyZvUTBt
USs/JFlMVmk/WE9vdSpvNy1sM31xJnA9K3s7ZGJnemVyWTk7IVhFODZ2CnpiYzx5WCUqJGk8Tzsx
ZFdyTno3JEdjM0FRJjVOPTdyWTk7IVhFODZ2YmM/KyUwPT17PCpNRVB2aFYhd3NtPXxNKQp6TVIk
UzclY0k7SXF7UWVmPUVXR1dJTG8pb1BMVzszSmd+a3xjZGZsSFNOOy1xODRkJjtXd19VTXRJQEZC
bS0raVYKekhzXk52cUlIe0JrN3lVSlckcmdvXlpMNFJNXn4yMmVpfW1EeXNvYkpYTWoye0U8I0ko
Kzs1dXZiQFJzaDgjaXhSCno+IWJaMGpgNnBnSGA/RjBkRUdpaGAjVGNsdWJWZzgtPjctWjhYV0VL
WHBGeip5d1UhfiZGa3VFdzcrOWZ7PD9YaQp6e1ZuSFI2e3J0Z0h9SClnUXshQiRvWWEkSjwoWVNH
akQ+S2ApdSU1NzlXe05wdmcqXjlgVjBMUFpSNlZ3N2hrJCoKellXalNvZkchO2BlLSQ7ZXBWOUww
JTQpTk8jP0lge01QR3laJXEqZjQ8KiVCMmJ+REhPOTUtYFdAOFclNDY2SkZfCnpiRyoteUdyUUdA
X2p6ZlkmdS0+O3BXfGpPPnQ0TGklYzZXUFhPOHpkYSVOWmlxSjNVQTZ6OCo+SW9qdnklJVFpRgp6
O19HVlpXI3Y/IzkyK2g5cn1TNEAlWmEpU2pGbyhwZnBCZHRDK2FkI3NlJFZQNWowbFUmNkFnSnpJ
PHh4VipJQFQKei10IXolJUl2YVhXdUdXcGV5KXt5RHpVS2VDZmpvN3VkbW8xd29yPGZqVlN2eCNw
UF5lI0ZjMlB0ZmQpb2ppJHZfCnorUkJKNClzfGJzakpVPVU8OHJuIzshM250KjVyKTEjPyNefFpE
cXVqWVJsRV9qSlBIZTw4cm4jOz9pdHc0JUVaPQp6dEEtTGxyQz8ydFg7dj9ldV5QVFo/YDNqe3ZP
fD1+QFJkY0d1YDl9QCRfYEhzTUE+fDtTdk5ncEZFLWokWDM2STIKelo9PmR+PjcrVkNCP05uQWlK
I3hxamhmfnxeWWQhNUd9P2JSZjBGO3ZeT3lCSiReVGBzeytJSjdgUUpUJT13PUF8CnoyfHd1VV4w
MW07dFV2eEZwekdJQjIydWhARmk9K0xsbmV8SDRhWWBNOGMyJkUtaGl2Y1glVVA+TjhrKmtNYkte
Rgp6ZjxQNVlzUEtWUGRVQzg9dVdNb35IQnxNR25lbEdiTXd3fS08VXVwdG5HWmVxampQX1BFfVkh
M1J3PzFiTCEmUEoKelpsNVNxS0BHVFJzJUpaMUNuVEc0SDgtZWQpcyF0UFZgKSkyUXlFZEVuSk8h
Qk1wV2FTc0JEa0cjVi03WWdxOEwoCnpMVVo9d091MUZlMnlMUGhUQjUwcHNNMVc4YnZxLWZAJith
KlNFWj9wczFpLU5UQW1TQWQwUF98bHsxd1FtMTYzVwp6bjZscFpoSjlVWGx+T2YxVVM2K1VjKylY
OUJRN093IVkrZUszNjMldGFaJTk/RGtVcV9mWnUkMXYwZEA1Vlc8KzYKentjUFclVyRsTnRaaWdy
JUhJOztvKnNEczRrI0wweTh7emUyY3FremZYQ3lJXzZlREY+dWJzYT1Be21hNHElQEttCnpOczFB
LVQmYTxhQnQrdGpxKCtpcHElN2E1ayZNUGlRV3tCKEIqbG07KntQOT9CfUMka3EoPFQhPkEmT0Ne
U1Y7Vgp6Q2RiRlVVeHNlQng/YUZFVG5tRWQ9ajhaQWo7ViZMSyFkM3prKX5xbnwwP3h5QDk9UFNe
PDx5VzAoT35kKDFjPSYKejdsS3EldHxUO1FUcnApWTJofkpITUNEOW5NM3JXJEVaR0BSUlc7RSZz
P3Q8T1JFZWhDMCVrPER3NChIZ3NHTztjCnpzTTFXOHI5MzA1PlJuSW9zN2d+QVE2LXZrV2ojSHJr
P0woJEx7IWRIZFFfVUpTJEpocFIkT3R2PnIkZlZCa0QjIQp6PlQwNEhSOGtqWkZ6VEEzN0BTWk44
MSlUT3g+aCE+VUF1MWUpWDxzfXdSZiZZPFItSWdyem01KFREczxgcT5XRF4KemhMZXJDR0xqUlMr
O256JSlEKVJCbUo/WmB2OWojdkw/JDwodjV9Uj1hdzFETD05ViFoR1B4O0BqPzVYJGk3ZTRyCnpT
XmplKGxVdW1oJFZ5ezVrKTt9UW13PXFlPGxaVmVHR3tDJkdSQGQ1Sm5wdHZvVVJCZXdRRiloRTBS
JnFvX2skJAp6IVh+d1g1QG9YMlJWUXB4SkpVbFp5SXlBS3MjIUhUeT1Efn5WXl5LN1V3WSpCKSEj
NDVxXj0hKnMhOV51N29aSDIKenVFYjxVRFlxLVdZZlZ1KWxiS1Bibj1DSThuTmk5O1FiTHJhJDs+
RC1PdUJ7NWkqaShNJXU9RnNDaTl9cUZqLXpZCnpHTlk3Z21rPyFYR0JlNXlsa1BILThLbzUxbHFq
OWElcVJtVWB+T3E2X0tSfnJsdUdyUm9SRkl4ZjFqd29EQz4wPAp6XkMjXnhFY1lWKksyZTV5VUNh
RFF5OX4+JWcxPTh3O1NHTT5ndWxSI1NGZFFKYXNAMy13KWN4TiotS00obFlCeykKelc3M3RSVVQw
My1CO1U2aXR4MmhPbCtJKmtsPDZrUiVTJmRJWlFhQClmZVJCN1RINEpGd1JYUHJULX1EZ0Y/KE9A
CnpkdFcoQStUUntwSjV2JSZXPTVIQXZiQEcqQ2JWfCUqRTdufVdNLTVaQ2Z6a0FHc0BiJVUrKlpM
JDs+RE5DVElWJAp6KSgpajItXnEhPDNQKVhDO3hCODg7WHUkKWhUfGA1aXM5T0FaK29CNiRHa1Nh
UH4qb1pvaT9WdUZGM2xhezlWLTQKenpJTXZQRUJVZjchZVhhKCo5YHdtKDVMMzVYPjYkY1U2YT50
PlVnZ3NyIUxFWGc0ZUBRVVlBb1JjcFcqbFRhV349CnpOOC1HOFF6dipHSCs1Tl82VEJYY14xN1Rs
IVJ5R1dVQWF5MGRNd1VzSCs2IzdtOHR2eFlzMXBiJTJffFRxO2d0QAp6K1M0Tit7MDl0RldGQlE4
VCE4fXlEdkZIaXp0VkdpQH5UWiFtdWNtOFlga3NQP0dSLXwmJDY0TmteKTxKbFo/MzIKekhaX3Vv
Z2gtcmApSlBKSGx3fnREa3xwdHhsdHhrYE5pcEo8RD5hZygzNlZHPnNnV2NZRGEmaFdCeXdCZ0d+
UkhZCnpsdHhrYE5pcEl8WmVrP2tRV0sqaGFZaG0mc1R0fE4kOyhxeHJOJkd5a3FlKjtEYiVCc1JP
e1ZyVThkeCE8JGY3dQp6cyNuIV92dnJ5Qk9ZOyowWk9qcE8rOXp3WmVfU3FKX0xvdFUyVU9ycyZp
OTkrQ3dIZlBLKiM+JXl4a3NgdDcxPmoKei1RKzJyYDslWDVqQ20lO3ZvTX5HYVVJNVVGckpJP0pk
RWRLeWEzfmM3fXNPRzI7Oz5WRlR1RDA8RTBva1YlJnVCCnpHS2BtRnlhTUI5ajh8ZzMzZ2d1bnVm
ZXpsPEZ5I0MhKzFUJDghK0M4QGd8SG5XNHMwOXRyJX5eY3NzXkJGeTR2cgp6RXt1MCR5YShnRzgx
S1YpS2dPKlhBSGV0XiMpbUxJalBWaFNrNzlmYjxLcX5nITF5R19yIVlRXkBmblFJVnRmd2MKekhq
TFhiSzlCSlFqNHh0KjNGOGlvRkpwV0s8NCVtUFZ0ZnJfRTU9PElVJnB1YDt+Tjs/I1B9QSp3PXVx
aEBtLUFYCnpWY2RpOTQ7YzRpZD5gV243KGN9TDV5cD0oe3RARm9qR3RpcTZVSSs1PyUlZDsrdDJY
LWY1R0B5akd0cnQwXl5xJAp6fEF6NF5qRE5AWUhPNmwre3NaSDs3ezl+I0o7cn14ezE/VzVXQmRX
Kmp+SVcjXyVwYDtWRWhIK2V2SDNqWXtNYHUKem9PRnhObiErYz9aPVBEYmVya0k5aWJZZGZyVXI0
Jm02elRXPCN0TEhXJk9uUDMwK1F9cVRKWlktRCMySGQ4aExBCnpeNHZ8SDsoNnJjPCl0O25eRytl
eztkd2NFaXMhTUR5R3Y8YD1iaFdsVVlAKGpRI2BMdXpCKFlxdH1BQmFwWEpFKQp6blZ4b0MjaX59
JGk/SUBaY1B3UDBiMU9eUlE2X3Bgazg0cU0/bEpqYGF8MlFJeWJpQmp3XyhiZyp9ZX14WlVnQjIK
ekhmbms7JnolVj4lV3EkUCNaVGB9VH1gOWZeITgkRypRV0VeQ2h5KCFOIzRnIVV6V0B5QDlqTnpn
IWtxMk4hfnxLCno/LW5QO2B3NHE5QUxHNTdLRT9hIT5DNGlZPGh7S0NqcXR2bEtGUnkmPjBTOXVe
NHtKaiMoM3xoUHg4S05gbCYkOAp6TnZxRXRYRGJ6QWEhSHAkJnlUVXdUJWsyMU9TXk8kV3UmPUF0
NDZ4PTlsOClTU0x1ekBRPiN7XmIhPytucnpie2QKenhfJSNKcUwlWm5ESnEkO3dLfk93SkVkIT80
VnF4Um8qMFhkIWtJe25CSGx6PFJ1aUtia0IqYD1rcitqUzNBYSMqCnpRQjFAfjtZPWgoNXBTWF92
eCFrR2lIQFEpa3IralMzMEgwdHFnV2FyZylAO0RnPWI9Mk90bFQpYj13fTFiciZxfAp6X1BiSjJD
WU8kTXw4OHhKIUdgaTREbEMmcnowdyRFc0ctRCU0U0EqSXNleTxoJWxzO1NfbmNibW16NjgkYzhX
MzwKem1WfSQ5bEE/Q2lQY2BPaEwwSUNkRzFoLVA2bXpUVmM0fl51OE93KykpbVR9cGIwUWx+aT54
JTM2SXJTO3d+UlRGCnpSbkZzPm9SeXRmSWd1cUFEe0ZkQVdSPTFaNklwMzJDJGR5eXVGbUh+Ujtn
NGBrdlVeSWshaSpAMlduJSZpLXZsbwp6c01Nfj5ySWtBKjd2alkrUiU1TylacEpRP21EP0cmTHpL
eXd0QnNxbiVWZyE9IXxmMmR6JV5jWEU8YjxPPlckTWcKej9XU0pzczxVTGd3bzg7RFVvb3s9RClI
RFdQTkpiOz9QQGUrdVFuNjRVNzh8dGhTRFFTR0V8bSt8SUR0clRVfE9FCnooVVJJTzRIMT13KGoh
VlU8ZCFaeXFOUGFASVlhM1lCXmZHOWVSQFI4UVgobzFyQUwleiRkJmx5aD9XaXxNZFM9Ngp6TjJE
MHE3Km87MUZIYFVlclJJQyhxPyVrPlNIKkBIaXtXY1h2JD1aOHFSZlNfQUMyYWcpZXw9cGhfMlZR
TDtlX34KentmQ3F6PDc+Mzk9b25yKTQwcUgkcXMlSUxRNzVZOyZ8WG1UJShfeWRvRFYoQ3ZLVEtO
JCUpcFAmNWt6NVk8VmZqCnpqJj9MNytSfCl4dntgMXxCNDxaQ21KX1dybjttVkErNDImUzlXOEpE
Ukx3Vj54MjQoYVh0VF9eJVMoMiZ5angzLQp6KXx0KFlIZloqJEt1d04rdHJRQlZRWWp+dzEmajAz
VihkM3dAem1BcUc5RH5pUU58bXVmNHorZFlZMUFYdSptZm0Kem81cSEyeE1KbFh3Nn0xQHNwbVpX
PFcmRyZkIUt5dlgpRXhjV0JuO2xUZWJQWmpoa2s/bXMqcCZhJWxUeHk4PUNDCnp5MjQmTCY2VnFD
ZV51SUZqNFlZYnpqdHpJUnJtTCR5Uz1qQTM5bjNWY2QjfUFjUSghYj5ac3FPMkJEUFNqaEFnUwp6
eWF1WEtnazJocUl5TD0hQDgrfF5lU29mVlQ5bHRIJVVAPDI0QFZwe2o7T25oS1YkWkQrfTZKUEst
KjV5dXdUX1oKenZgWVF9KjhNdSRmcmpZSVBaO3dUQU15SlJUc2l3SVBgKkwjK2xTT0VaPnttUysy
K0lYaHNgNT0mcGdefkdwLUEjCnpvX159dHRJbTRaKiQ7MntSKk9iMkRzVDMyNWhlcChiaUd6WHor
S20kQEtAMER3YkYhcXlSUT5rZ05eZCQtTWBhbgp6dSkkUXlfdnVGMjI7TVJgKmd6YWhoUD5aNSM0
K2tfLU99UCVBe1BKYCQ1UjZOPW9sQ3I/b0l7biUwaDNzdUFOIUQKemNCYzBHbyg0dyMpJkByWikm
fERAKSZ8RF4pJj9nMikmYGRSdHFtO2UoP0Y8KXN5cStjSE9ja31Pd0xSJC1uZ214CnplSz5uSTM9
Z2ZVb2UtZm4kRXViVnAxRT54KmVpbXlpOD5LcUdBWHQkLW10b0VaaGctYTlRV0YlcE98YHs0LVpZ
Qgp6S1V9dkt4fko8MzQlUzhuXkZvfEhmMjN+b25LbmRyR3B8XjtXeU9ZI2xRWl5qM2M0O0t3T2hL
MjVIV2w+c2s0Z2gKemdqUVpVKUhAbTBaZHRvd0AhQWIqd15VelliYXU7aCFZKUwqNll4Wkg7XzhU
JT16N3QrdSVCZlpRQzJJKmdad3FmCnpeYFBzdWNWQkJUbno7dFAybDtFRGQ0TkJ3ZzhGQ3NqOEk8
dHlIakdVdkpQJilPZ0RQMGdgMil9PllAUEpHWlAhdAp6amNYJVRCa2A7VmBoZTsldH1SODU0fUdq
ZHdoejg4ZGxicDBiKHFMcTJqN1EyKTxOfjUtSkNUbVhVQkA2cCslPmoKemV4fFFQczk9ZndEJHwl
MmJIRXM2LSFYUTxFR2EhOzMxS2FqVSolWHppeiZzRHVOWTBXO2gyXnMjTj1CX2k+WUkmCnplTiMz
fDNMRms3YUNtNk5rb3tlekg5YSlkOGdFQkIpLUllaTRYVVBpYCF5X3E8KE52MEQjZXRxNFBBeDdz
NzRaXgp6QD1ZYTEpaUlUKzNfWS1za1BiJno0QjZqaFRHTH13dHg8O15ZZFBYYjN+V3BTJVEyTjBS
ZjtLSjlFbmtsQ3EoNiYKek57cCZ3RHBNSkhWNTE9JlBPS1FSenN0MHkkRUk0TjRtO0x6I0V9Pm5G
OHxoejk4LXg9cklfLT9rcikrajBIVU12CnpPKGpPdkZfb3pkSitRSG00c2pQP2YwdD1aazQ/Mms5
ZEBrY2gkQWhxNSE/YjtIKiFwK01VYGFBN2VgYEx4Q014Zwp6JH5UbzVSbVc3T0dXNVg0MTNEYlJV
NFo+dnJacWhfKWYjbEB0bVRMIUYpLVckU1R9TV5CfVNFRSRgP21zUkphOSoKemo+PFFjNyopcXFy
WlYpdkNQRiZJVTRaPnZyWnFoXylmI28hdjZkcl8jSzNTMVZCTj91bF45aXVEUEo2a1FRO09LCnpJ
eDYyKFZwSlZkbXF4cyVqQ19abUA3TUUlY2xZeXBfZGUjeCgmYFNHY0N7JDApQjB+MFFJPWhIK21C
SjIteWV2MQp6JEZqKk5VUHpCRHRMfjZ2RyQrenpxclFrVnk7Y005bWx1KGE0cG4hRWlQU2ZtNW94
IzQ9Zyo+c3NmPHAkPVcyWUcKeiledEc0cXI+ZiUwJT1sbnlKcV5MdTBmUDlQPFk2Zj1SfllhbC04
cGhwJSVLRTtNfTYqSU1VeVdeeD1wdlB4WUxMCnpVWGY4PENOVjRHSkpSMloxUlF5S2docGNQemct
bTl8RHg1M0Z8UTlOKXc9QnduQXRLamgkb0JUPHB7ZEtiSCNVSQp6T1QrQGlwQ20ha0pVaG17PXlP
YkdNeEE1WSpJKVFWWHBETHlCV21BdFg0Sm12JTtGcGxKbHZ3fVpoSjxoaHRBKE0KeikwZ2x7X3kr
diprS3p5YjU+dCloJncqWiFAS2pqWlJUZj9JYzgoK2N0dzxrXl8jKjkzQ2VqQSFGSjg9d18+VDBx
CnpBXn1JKmVfRntCLSorcEoobzYxNm0kNCFEK2YwakVebG5iJnFeTVlJSDteXlE3O18jMyV8WkhP
IXx0fl49OH5nSgp6R3ZgWjUpM28jN1VyYV9mOyhpK3dvb19CVnkzKlZ3NSFkbV44PH5xUS04NDFy
e21FKTYoOSFiT25LcmQzJVNydUoKek1jcDImKnFufXRHZSlDZmdHfVJDYFJnMm09QEJMeF5vNjc4
djwkJnRRYnNzbHt5SFc/LShZJSM2QCU/UjctKzZECnpreV9uNmRITHFjcj1+N21ITSRoTl5oMUdI
dDc4KyZld2tpcWt0PyhOWWZjJCFVUipPdmRYOHtgWDx3cjNtKllZbwp6dEJ+dTBGRntUN05fMmlB
eEMlPl57YkUrWmNjRzZ9JnxKN1lMSlA2eSNrJVAhZHQhdm5oLUY9Vy08NEB1amxhbjwKeiZ3XzV0
P1oyNkJ0XzNtbXlla3xmPWlAX05kKnFuU2k4ak5tRkVVbDxPXlhiTGp9SXFEPnptRHJ3JWNxPllp
Zz5WCnpTNncpe1ZRb092PDBDRj13X0J6VWpuVFd3ZVZzd3huaCkqMlBuPD1LMk9WSlFOOSY3Xzwz
Um9qV0lFc3J1dT1Ebwp6RF5VSjxzQHBBUTEkK25jUzNxJGZee3FhNm1ycUBVKEJHIUlvQWghMjRe
JVUpdDFIbEtvdWAwcko/RCtTJSlzU2EKelc4RkopSWlAcUMmTjF5dkU7RE5Saj88KjVlYmJweWA9
JkdOWkk4ZkwxeihTaiVoIztoKmshaiZBOX0xbnp5fUltCnpAZ2IoKk1CVWV2cigzYFEpX25RTypY
a25WSUZQPnJuR1gwTyUkQzgjUTJVKzMpRGBkQCRYKUA+ZnlgSCE7WURiRgp6cHhEcUZANE13KS1K
Y2s0dVJfOztuTz1sZnFIQXtMN0QpOVg9SCpyVmBPeFNCUEtiI1NXZyY4MD13bFVmVUdPRUAKemhh
NSZUU0hYOW9rNSRsSSRiOXdfVVdvR2g+clc0IThle0ZYQE9SRGhDQT1jTzBxcTB7XyE5SDVCbU54
ZTxwQHNgCnp4bHs5WiYyZ2xeNzNzcWZVIyRKZk1ERjVwUj5YSXR6WkQ1TShvP1VVPzs0MUdWUXVk
KCU1ZVNmbFB8OT1hO045LQp6K1M0ST9udHxkPSU7TTwyO0QmMT07N2c4Zlc4fFZjIVZeZ0R7UU8x
OWFpcVQkPkJBOVV4QmFiJSt6SUJhaTA/PiQKekQtdilkXlAhY3REMTFsZnc2VmFPUVByPEImJE93
PEFHVjN9cUd+aGRzWlB3ckJ5MTQrVW4xWDMlUWVVYG0+eXhHCnpMMD9rb1hfUE9Tamc4UFptPnl4
cFZDTEk0O1VKYW9GTG5qS19UfGkoKjI1Nzh0eTgrNHVTOHc3WTNlZEFjRnNGRAp6blNwbnspM2hK
Y25OakRNXzlkMVhiPzVzflE9O313WEdaT3RaaCF3cF5CZCZLSnchdmBwYHUqPGxHOUE5NEtadDAK
enNxTCFPX0Ulc3Ujfk5Sa3ozJlN6UHYrYFp0PiYxX2glKGlyRlEkeGlSPUAydkNROUZBTXdDXlBu
U2FGKjNiZylSCnppRGY+IXpXZyFNWlliSzJUfXJwaFpwQCFJI0EtS1c2bjdRZlVxWUU8RyRZYjxx
clI5aih6Pitrbj1vU3teXk45NAp6K0dYXkwqPXNyb2VPI3dndkh2WjFuWVB1Sy00YEdRaW0tM3t2
V1UyJndBXlR6WU9ae2o2QEFNd29FTEcxVlA5VVYKenJoNyhRYEhyakRoPChGKDVxcEwrLX0tSjIr
SV9RPnxJUXdCdCRvaXtyV2VnQzVjQzI/VGxGSTYtUzBqWXFWZ0hSCnomZWE/amBkRWNyN2tueDl1
P20mWEN7OWBoLS1TTF9MMzFKSXZsSnVteDBebVo2akhSR1lOPnAwUF5KZ2tJYHM1Xwp6WEdIeSpp
YHBOVy1UIUBmUHhDQWJePX5yREZgcGZNb19Td3srSWJLWXo0RkNNRzEyP3hiRTgreHpiTjlgQUZx
RlQKenUrKUFnU151XnRjbFEoaVBMV0sxMHhKXmI0XkUxKEtRRCtfcE98fGlzM1hjNW9GZERELSs3
WWJPdXNBQm1vdlVfCnoxTHNaaiReXmZWQzF6IU9YWmxeNHBmZlIjSmJZKWNHVzhGTCk7YD0qeHoq
eVFMe35xbCpuTURWanc0dT1KViRVRQp6MXMhPXwjOTVAVGg/Yj0yV2Z7P3pDQzhpZ3ZnQ1NXKkN5
YWlqJnhQRT16bUJWJmBiQjkjaylWZCV5QzlsT3E/XksKem5TZTdkbk5gKXFkNCY0USZwKTM8a0hY
NHteR0xLNEBGP2Y0SzI8Jkx1a2B8Z0Raa3opJEUyIX1waD1OTVgpQCtyCnp6V0RsNHdRRzk+N08l
bSM0UmspP1NgXlRxQG8+X3MjPUdvRm89ZHdpa0EzdUB6MyZyb1VHVW9iS3tuaUI/fFkxTAp6T3Nn
cXdHJWFaXlRnMiZLYCVDU2JVeVNIYyEtM2omNEsmKTlPIXNkO29iNSpZbEpSYylJajt4UTZTe3A8
PHI8Kl8KenI/dWFwbz9+OW1lQSV0NSR4ZD9ibn4mKk5QUk0/PDUwZH1jQFMjQmclfDNfKmQ+YDgx
VndRNmpjO3xsNEg9PXBaCnpSKFg0Znh5bXVGWU18TTtOV2UyNV5MOXdRMC04TSMwbkNDMjtydXN5
QW5FciFYZ0E1IXpnfXs5MnRXQU4jYGdDfQp6cnJ4SFhlJlMqekpNPXgweT4wUjwoKC1LTGk/YEkq
QyV0WCpgIVpxRWB+SXJ0N1hVV1NrLXA+MXVvO1Q4LTk4ZUwKelBzbTk1Ui0lfTJAeDRUJGg8alU/
JT1UcUg2bmlrbz9pPGBCJDZuIXoyJTF7MWVtamtPLVBfd3tVc30keipfVzB4CnpaTXd7TWVOamB5
K0t3UWZzP0RJOXtDeEpNcmNoPmtUWHp4bmFWQ1hnNTl6QXc4eEojVUJxRllVJVRQfShtcDEjLQp6
YTtEOWB3NDc8dldqMDY0cz9Dc14lQyZXSV9NeFV3V193JEE1JSp5b1QyXkJaWVN9LUpeWGp0dEJ+
aVU/X05DPWEKem49WiU2eDxZMCVaTXdgUitlQUs5bj9XYENgUnVuWVhJZ2c9X29ycG1kUHJCSnZ2
YT8hZSRpS05ufCowSChgSHs8CnomYX4rPW8xPG1iVz1QQW1lRDxzNU96U1M8ezxOJUc1OStHPVpO
Jk5hODB3ZGBefHNsVW1OUllrclI3WVVGMChtVwp6UiY1NWc/Qn15ekVvV01INSU7SE0pcTRBRmAt
cz1RLWFTVUkyUDV2Q2pLSFV1X09gMypJbkZNd3p9YT9uTy1JP34Kekl+dihgVTYjOWE5Y01Ralp+
TUt2aTJVbD5qeCpuV1hDbn1LWngzQUxuIWNrdzIoTGo8WXlOIyN1RXFuT09XV0lTCnpwQm00JCtv
IzV9P1lkMG9YKl4menM0emRqe2NBa2kwfmRMfThWYDY3KHB2M3hhPDBZJHBFVFV0Wmw0O0B3JWUh
MQp6ditjU309Vj80KEg+Qn1lZSo0I1d3ZyljcWVsO0hPcCM4VDlePXNNNF8+az1wWG5nUHpic2Uj
ZlVXVzh0OD8xfXIKeks5eFM0Wk1hWFY9Tm9ueiYobkl5YUolKGhPPn1wVGB4a3FAM29pRDQpZ0Uj
b0IpSG0zP0EoJCotMkpzVXVFVlVpCno7ZU01I1pNYXtoWEImM2UmUXlCOWE3Z0wzOU02SyV2dDRr
cF9wUzdSM3FpczhGVGtedjklIyskWk1he2hYQitOVQp6PkRoKXx3bGtGO0ZkUzY2cFd8NmpkYlNI
TF9QJilLYU4lNnJGSSZIfF49Y2JZU2B5dG1FVz4zI1YoO203SnFNQDkKeml8VkI1Yj04S1p3O2Rv
RS1nfHU/IVJmb2JVbUxzangmbmglcV8zbGxxcW1fKG9pIVFpandxT0p8QW50dEgkeFdlCno/ZUNj
VFpTVXpiKVJaIVBoTUgyUWNVa0RGYlQwZ3w5a2JvOCNJLU17NDxefVBgI2QkSjc7PHJGUlZ4P3tX
Wk5CNAp6REJaUH1tPz4lK2NsTFd2cFB7Q2Q9YCstbkdRRzx9eXFlMUNMdSN0NmVWJj85NDdvVVIp
S25TQHJyU1MxUXEobGoKelRUTzJJM15rPXBwUHtDZD4wSzckKWxeTyZSRmhqQT1ZNDlEQHF9WUkj
Z0wwNSlldmhfWCgqKG8rVXVrZ0g3KTY+CnpyZ0hpV0hLazFOQCk0SkFXKzcjSW14WnxMeCVURHNB
dktrWTxHZkV6YSg1aVA0WUBjezRSdUVwUkZuVCZCdD1iMgp6ZCNsTSFwUHtDZD4wTGhKKCM8VFNP
eipNfkgkQihCb0lhUmp3Plp4RylGZ011KGM2JVZCaF5yTUx+Q01TUzlvZCkKentOWWpneH59YFho
a0JkUVJuPSZRaykpYiZgUlBpM2xOdEx1RlYmMzhQUTAwVkgwX1cxakNqNFItJlp2VEM5bklzCno8
TFloRCNpZ21QbSUpMDNMMFMwTWBiNzFPYmJrZF5aIT54N09FIzBJekdPMmxPRyliVSVtbF5ZPU8k
WnkkcCYzcQp6bmQ8V2xoR2JFRC1JQSlsPyhnUjZaNjtIRnNiKF9PbXVramtETlRMZFc8dSgjPHRB
VCFzUm10S3gkNWdTNz9nIzcKemV4PDZme0F4RC12MU07Rm5kKGI1bGN+TmBHY0hTTT5nelRXUkcq
KWxlRHgoN3ZeQGZZRjFUQz9jM1RaO3F4UndgCnpSZjZVQihsdHIyRz9PWDhSNU9fcE9mfT1PbHFT
SiRHYSg2PGl7XyVxNWQmVXNqSERXTGFwZjRxJjdXczVzNlBNMgp6UkkyKkFLayVUcG5OMFBpbnNO
RHhtaiR6d1lRfCtMLVZBZm9aNj5IYktSNVhXRng4LW9EXzRFcDF+MUhnO1QhdEEKejFeM2MtI1Eo
NWAtbGhUeVkmT05MckpEKzx1K2JEPjAldz9WOFM3U0p2bmVnQV9OTylIell1UD0qblROb2k/NnAp
Cno3b1YhZ288X0F1Z0hyS3RKcDd2Mlh3Q2oxeVpAemB5LWo3U0dUbF9SRCRgQjV0Zml7Ykh4KDMh
cFF9S1BZKXNqUgp6czUwSENpIVdjNXpSezNXWUE/cHBScTIxSlg+VXs2cyFUVlB0OyUjJEVeRGMo
Xmk3M1NTPDYqRnMhVFdQOz4lYTEKelohezxzfE5LaT1XJVhOVGAzazFEc2Njb0lvNjEmWXgrI35u
Ujh7KD5mfnhkJClzSElFamtAXnFScH1jSU51fkM+CnpFblN0Plp+a3BrV29hcn5tRmNGa1JoZSRl
V2kzXmV6TndIWiVMUX4lPHEzck0mRk15NmUwZkhCVStFaFNzP3ZXdwp6bSNvVXM+ZW9SeHM/d1J0
UmJfQExtJWtMTEFacjw+VC1IKWRBeStrMUt+PWcxYlchQ0FNMm9NdFE1UnBIUTd6S1kKelF8P3wz
I2k3cjxiMSVWMWhyNCZfWkFqTi1fYmdzZDx1RjReSHNvXkdDNmgpJmVFRlNqJG1KYCtrUD1iKih8
RUlBCnpkcDhIeGV2I3dIKjR3MHVQMTltZWxTLTY5ZiV4fClVVlV0fCNoMlpxQmkrMDdIazdOeFdK
OUAxT2c3fVFtOGU5fAp6UCo0X3JqYFZ4VD9tVCRzdmJAfih2KD8rQWkhRUQ7VVgmcSQpTHk/T0U3
QUxvc0B7ZmptNiZXT1NCYzRuVCglT0cKej1vdCNocUwhbVJsJGRQTiNnP3JeJnR5O197YHI9eU1E
TSU5ZEs9MUJWelF4SkJfPG5rKi1CS1JYREZ5ZEtTekJpCnpHMTtWeEVuQTc2JCZmJjV1aFd2MVNv
c247eklOJHRDfDhOZWhCQjBSb2NaK31We2FDZHQrfHZYJUYjMHZsNEM3Vgp6ZWFKRHtxPkMrRWot
SlYmTzhnZ1MkI1YyUXJAT2JJVHNiQmklODtXflZ6TUVadHdiZXloSnM0O2JKVHx0bFRFdFYKenZY
JHRXKy02PXFYTXk/Y0xTdUZeIysqOEElJGhtSWR9Xz4/P2A+enlWTX5wOSpiY15BZXlsTSFLRVJt
MGp5R214Cno3aHxAYlY5ZFluWDNVMEBqQ3QrQGpYN2s2RzBYUWg9OExCb15OOyUpYkxGRnF4JXQ3
eTlEVFltMlZ2Zk8mb3QmNgp6MUlFMUlGfihkdyZ6UnhJOEZSen1WfTVhdEc1MkJxPVJlN3FZY1Qo
I28/Xl8ybkUlKkcqeEI4Zl49UTJ+ZUB8b24Kej1LXkRYd35zTWJ0VCpPaiU9PU12N2QjKkh1RTNp
UGBeK2B3Sk5PKSl4NmUxYFcleWM8M296ZnNfKU5RI0Z5OUghCnpGbEtrbV9ZezA8ISFZTGk/Nlp3
fERkeVltZEdIREk/U3dCe2BwNWxASXEke0I2cXhWIW0qUUImLStIKyp3PDcrZgp6dVNBXk44Knte
SjVGaDVkfDg+VF4ybEd3NiQoVEwlRnlgbFBNVnghVl9qZWt6Xyg4QGplNktNLSt+MWg1LWZHTmEK
ejUlMXk7OH1tdVRKTzUpP0tnN0c9QyprTGcjKz57YVdBNUpCbT96dzMldWpiVT04PDE4PURWMmhr
JDIkI25ENWJkCnpWamlzSGBtTShOSHt5Tm0tTnd2cTg4aCRPU2FaYnRqUER1cUdzSnR4eXw5Vi1t
akIzQHdfKDBOKz1wMF5tJF5Ufgp6djU1MUpLUjBGLTx+aWU2U1RvRXN7VHBMR2ZIK3RHOXtYZFND
O2g+ZypUSnVrezJCWFZwNTZheSU7VF5TbSR6RXgKemxiR2tiRnVGSjk4Q31wYW10bm4lb20lRUIl
eVpOKEVwc2FUSWRfa2ljezx8ej4wVGB9MmtaMzcyZXIoLTVZaTA/Cnp3OU5hbFBPbSg7V2o9PHVV
Vk0xVnljaGEtJEkmaEdXdnE4PXNBY3tGS1lsYVhHUVdmJHBJRml8QUJHPjMkRnxKNQp6SVIxZDtF
d2U5PEtrfXJPSVJ3WF9gaVBifThPT2ktUTchV305Ukl+TFNfVWFHdz5fcTFacFFJMWV0Z1NKO3JQ
Y3IKenNidj04XyNJWlkldWYpPFhVfWgkbW19fWJTPSV5QyM9MVc3c1Z5XiVKVDAxVG5SeTJvYktz
X3lgM359UXxEYFJQCno/QE8rTEo/UTc5U0hkM2h7bzFRcj0xbG5VJlMlMGUleVp7O0Vwc0stPEFL
al9uWGgweUNhLVVxSitLfmt5cmc5dwp6M3g5VUlzYiRePntZPH4yVyR1VDVlKkxQSnhlRF89QHdG
fVUzKFItTjg/WWJwejJZcWBvOXtRaDlzVkckenJMJHcKelVJZjNVLS1xTCVwU3dUTUc3b2BZc343
QnZmcjtlQHJ0UXl3ZEJ1V1ZGYStYJUM7a2o4MGA0Xng0aGJeWGdTKT1NCnpAZCE5JXdnKyN2K3Jf
LXxmVjx9M1pkenRMdG0yTFhFQlJ+dF5KNSUqKlQtOUN7NCpge25jR3xEO2Rpdm1VMDtSdwp6Y2Vs
KXN6S3p4WGhuRCZHQUdYWTtLWV89dmVjZGx4PF5qTEtZWDgxdjl7azZhbmZ3Y3w4TmtkdFZZPiFy
N3lyRjAKencjTXZZN01RPWheUzlxUj9mZiZCdWRANzZtT3Q4VnBKfHpFdXV0ZGImO2RBU2olaShz
LWBxWUlheGZAND0yPj57CnpYV1EqeipuNiUwYElxSH5TTj9zM284ey1ya0Y1T3Jqa1lRczFDe2Y/
eHB3dE4/YSNORGNtQlY1PlhycUVuT2pPWAp6SV98anRBMi1faD1WUmY7MCZ8dEVwfm4yK1MlcEZK
alR5aXhpNjU+ZEc+QEBoMElQMlFlVD9OeXRGUm5GM2xYK3wKeisyKilYSl9sKmxJSWZNcUE1T157
TjAwcGRQKG9AUDFOUWdCc2FAbCFCN1otV2tRI142dkJ1JDRzQnY1P2U/RllUCnpISTZJaj99dDtX
Iy1WKUdJR247WWooWU92cXJRQk89YnExQHF8YFdeJk5VOURxUTs+dCpFcDFiOGkjVU08NHwmSAp6
OUxoJEdMeTdDKz96aVdEYCZ4JnAyU212Z2MxdUxmQGwwKzFqJXE2bXhCTU0tUkBmfk82O3t8UzV3
K0ZVSlB9bkAKeipld3pEMVZ2KkBMP3NuPU9HRko3YzF1THs2bjBCUS00dTM5TTh5PCNPR0s+e2Mx
dUsrNm4wQlFlSDM7fUx9ZTZxCnpPR0hmK2MxdUp4Nm4wQlE5VGF2O0w8Sk9mT1RecTRjMXkmcDdq
e2Q7ZD4zfDAjN3F9PE9ULSkoYzF5KFU3SXNVLQp6eWNUdiMjRWNlcE9UPTZqYzF5JTg3SXU0Jklv
WF9tTH5LQjE+RX1QenArVV4qPi1qKjFKNG9SVVI9N2hIP29mcTAKek95TGUheEZaenFOUUZCfTtm
X3xnVi0jK28hWXh2YCNSQG0xYUtqMldxSHclJF8tajk9YU5gTyRwPlJ0U1ptR2c4CnpRQERwSCtf
NElHb1dlYSs7ZmAwaDxzSnVCPEp4Tm1GeT4mYFRVLTJwSkI7fWx4WjU8X1c5KSNqQkw/bXwlPnl1
WQp6I3dhandfaTEqOypiUVRNNEJVbTkyVig0cmZqZCNOSF54Mn5gKG9nWilhLX14VjJ1NFNhQSNA
O0YlSEJ5Mm1eUGgKej1DOWtmWlIwcXNAXjhTdXxOSVNDenpqa1loMjY1bzljVTReTTY1WjUtNGUw
ZDZuMEMqSSNidiE1aTNrI3c/d1FoCnpoMjBYZHN1WHJoI0NsVExFZkZoOFZZZnVBQSUpISV2M2VB
Q09UQFpTKmV3dyZNcSMlXnRRQ2RiNjB1NFljMXkoaQp6UH1uVUlEPz8kb002M3lnLTRkfUg2bjBD
KkkjQWR4NWkzQXB3P3NWbTMlZSFhU3pwKks1enFJK1ppI3JON2p7ZDsKemJHKSF5QkEocmEtNGdN
PEY2QD93WExNbj1MX0MpWnlDdmRUVC1mYndVV1pQPXRiUSRnbjhLWj9hMz85OyRxTSZ5CnpnPEdM
O2s1SVQlNnopYG9kISlpV081cyoyKy1WQVR5MjcySWFBenZxcVpSSGZnP28mYG92bTw+UmsrNn4r
flhEUQp6OUVFIz0hYVkmcG99X1QrRCVfSjU/a05obCVIeWMmNlRsVUFPR009cmMxdUxmNj9SS1J3
SDA8dE00YzZPT0dKZWcKemMxdUtVNj9SS1JSVFh3aUxfSE9ET0dHNlZjMXVKSjY/UktSXiVRblhN
Qk5tMk9HTCNLYzF1TDk2bjBCUWxAeFlNCnpNMTIlP09HSVQ5YzF1Sn02bjBCUUg1N0pCTD4mfSVP
R0VffWMxeShFN2p7ZDt0UVU0bSNDI1dhT1Q8aFVjMXkkQAp6N2p7ZDs+PXQlUSNKbT1FT1Q+Jjhj
MXkldTdJc1UtRUVhWTxufDBfcyU8OSpuTnJnTEs7WmBmJDhpa3V1eFV+dioKemZ4PXk9YU8pS0Fz
UzNBVjtXakFUTUc3fnFhMnBsd1Z1aWF6O1dqRFVXYCZ6a3hKd284R0tJVGI7a0dFOzYkPHc+Cnpn
P3FaZlU4IShhRGNteUA/ck0qdHM/UCZnKmV3eTJTSio4UEhDTmF6NSFGYE1FZklCQSpld3dpUkBm
fk93Tj08SAp6NW1pOyNFZk11cCpld3kyUk07Jk1IQntJdzUhRi1KRWZJQjcqZXd3aVFganZMd05s
dEU1bWkjeUVmTXVtKmV3eTIKelFQP2RKSEJzMHQ1IUYhR0VmSUI0KmV3d2lQfW5VSWI2P21rNXds
KntFZk1vdypld3c9VUR6IVZiNm5VaDV3bHleCnpFZk1vdCpld3c9VEclWlNiNk1DZTV3bHA+P1FH
VmVZY1Epe2hwdHQpWERaeVk2ejxzeWNiJnBMTjh6NVVhTC1lPwp6PVBUUmA2eit1emNmRz5CTmEw
P3JhNCU3fjh4LSFQM1V7TnotSzIwWVFARUVhKyQkOUJXYCVwRCFvNW8yVWFmR2kKelFNZythP3pJ
WntJKSFfXiQ1R1lTZkdnfmxoe2BNTW1XWX13PzNSZFhFOXtudEl4Rm0haHpjdzBtV2JMYT8zUmVD
CnpEKHNlc2RNZk9laClPRSNtV1VjRT8zUmU/RGVSVnJ4KygwSWg+OXVmbVdXeUA/M1Jjc0RlUlZy
YFk3eXtoe2BESgp6bVdZfXQ/M1JkWEREME1xSXc8VXhoemNtfG1XYTc4PzNSZEdGWUsweGA3WjMx
aD95P3ptV1Zrbj8zUmV4RSRvKHYKemNgZlhnaCM0KkhtV2E3NT8zUmRHRWJNa1I+KENvOHQ2enVT
c0Jtdm14SGxgQFROTGlDM2ltZEpkJU1FREwqZEAzCnphUEx5TWNQcmRgNno7dFdfZGJQdHpyeCtC
YTM0Xig0PVVWOzZ6OzxjX1lzQnJzS1J8cjtYYlojcEhSM0BEJV9fTwp6PyRaa1E4SE18LSFoTyE7
c09tUj5FOXtudCR9OC1haD8qPHhtV1hPQT8zUmMrRTl7bnQzTT1mRWh9dFU1X2duM0UKem5XKEQ1
YXtMfGpSMlh0WlI4bkRuQWJWMG5oMjRYe3FrME92Mk44OHM3KDVFSyQ1QW5iO3J7I2B3Tmx2cWlL
dnBvCnp7N0Nrc0pfPnNAZUBBNSRoRFFAbzZOTnBSaC14VjgoTH5maVZSJHFWNjtSbHRpSjFHczkh
PG9vN3hyaSg9RFY7Kgp6NkVWfDtKKGBGKUY2X31uJXgrPGlDU3FPLWRvJlI8VEcqcUJuOUlUKk9+
Zm5+X1VQSEhMJF9nOHpZZzg1YUd6SlcKekZEVHA+NzRBejRjWmI0I1M+ZTgtYUNhKSlSfjdEUzNi
JDNeP296bX5FOE5gKl9ZSDtucm93JG87bDhiSy0lK15sCnpEJXwlSj9qRDh2MlpnJj07bDhoTUtU
eDxJRCVfNzA/I0J4RWp+Kyk9LXYrTCpYOHtxRlNKPDxGaD8qPHhTd0tYIQp6NzR8RzNxUnQ5P0ch
WWU2KnJTUTR0LT5Cbkx7JH5gWGQ+I1Z1dHlWN05yZ1J7aCNEJkYoTF97RlZVSCVGWlZHIWUKejVm
eEx8cWx1YE0hWDhhVGxAI2A5Qkk9e0NNLXgjUWcqfT54bmtla2lMe3Zqemswem9IM1ZTcFc2O1Js
dGlKMUdzCno5ITxvbzd4cmkoPURWOyo2RVZ8O0ooYEYpRjZffW4leCs8aUNTcU8tZG8mUjxURypx
Qm1gbGBrWT5BamYpTlg4Tgp6dmt1KmRgVFJRYzZOVVJIaDVLaVBgPkRlSE95VH1UO3I+PE9leSh1
OFBgRjx6K2BsUUB1TjNhejc0RnZ4X1p4LSMKejR+NkAhIXU/TCtleT8hPHNjYD9MYVIwNHZlXjl0
VEQlX3RHPyN+TU1LTU1DM2d9WXpqeztGYD5KZFVjcTQ7PTBACnp1cUM0TWE0I1c8bmsoI0N6fjUx
QWcqXisxc0kkVHpPKzx3aV9HbHQldDF2djhoXml7PShMfmYhVlVIJUZrX3ZrPwp6NWo5bFVxbHVg
ViFYOGFULTR5bXtBfVhlXk0teCNpZyp9PnhEazwjSU1BUyFOazB6b3IzVlNwV0hCczIzaUt2RmMK
ejkhKjNZNiF2SCREeGsxTzZFWExOSihgR0ZGWU03byV5KGdyQ1NzLXdkbyZTcVQtYytEbkJCcjJP
fmt3d19HbHR6Cnp3Nkk0TEZfKG9zbnV1OH0/OXNEWGhmc3VTYiUrbnN7bzJIYj5wc1ZhP0xObmM/
Pjt3QTtyTVhnLTtXUkxlVTE8Qgp6ZVUxPEZlVTE8SmVVMTxOZVUxPFJlVThsbEtGOCgmcEpUSXQm
I2AmSD1oI2YoYjhJZn5JV2A7azlHZWUoaj9ELUAKeiRMMGl8VzN6KEt2M2JHZyp2I05fWTtOIzVI
YXF3bm47KDNSJUA5N3Y8X01vLXZxWTduc3pFXjJKUFV9Wnl1ekxaCnpNQVRlaSZqS1E8dCp+YlM1
cGBEQnFsdV82XnFwWiNMfld0KE9ifUl0ekI1Nzg2Wip+c1FBeX1LNkdSUTY/QFNRWQp6Z1Q2Q0Mp
RDhPMTFXX15RSX0+Q1pObzshd3R5M2xGSkNvbTBBTHUoMUx9ajR3T2J8N0p6QjU1bzFOelBjUTN2
UWQKejZHUjF8P0BTUExrRz9aTyVzVHFjMVRvKn1JfV5sQXF3aD0qYkJ3Ky1MQ2h9dCZJQj45PXNP
ZHtqSDImTTVPYXlYCnpHZU9LRWBwJlNPJXtueFFgS3NEclB1WVBBY2FYdnp0WjtgWStAVDcwbjhG
PmRhN1FUSWtxVVF8IVgyJH0kMCohRgp6ZzxHVT5peHFCMjtmNTclTUJ6cGlaY08zRTY+ZFZ8bU1H
aihnPEdhQDReZztkNzRBNU5kI0opNHVXLXZmaiVPfFAKemh5Rj15aUtzbUVQWVI7dSZfNX1OWUQ1
MnxBbkw1Sk5Bb3g7dGd1SERRQ3NMY2wwQiZeXmNATUpwM3J3QmgpUDE9Cnprc3hYYWVNZj8qOWBx
ZHZxSGZUNEIjNFNaLTtwM3sxJHs/P3MxbyFZMzhGc0djTzswKUs7TXhkWTY1Km5mfldAYwp6OVNO
Y2koMDMkPTNQOWhIQW0kIUBNfW5Bal5jQExlelJgQ2loP3ojO2tzIyg2ZU1mP3JVR3lDWlZxVmRB
QiMwU0IKei07cDVaNWA5TzRtX19zKlZMT3wzPW1nQj8qUCh8Zys9Jld6bEVSJj1hMVUzdzYkPHdW
ZyohI3pQRjEpXkQlXyhLCnpabCVKVnJme2IjKyErZFlyb3VnMTttJVVIJDAqI3szaW51cmR6YHtP
VWc2R0J4Rjt5dzZCWGBCM1V7dTtKejMkTgp6cUh3RGBqeH5lJkw7b0RNTHt1TDc9TEF1Nj0ke2ly
d1Z7N2I1T3MjV0JTQk9jYGk9eHFUailDeUx7KntoTkQlZGUKeno5VF9ZNjhlcT1RQTZsRTU9OFom
Pz9AMUpnVDVte1IxRXIjMVdfeUtJfSR7ZHB6bFohXj98LTRLfng2JWpzI0g/Cno9c09aYkhLNlpF
NU9zalFCU0JPRWBpPXhLX3Zrd2sjSF4kNU5EJVhsejlUYCpIMlJKTkZ+e2dUNjIkREg/P0AyeQp6
aW9QUjMlcWFTZjFUbU5CSX0qZSFxVkVYWCp7bm43VkxyYk9PKUF7XjNiJEl9KStwU1IhbVUtZjNs
IzFgZzxHZF4KelBnU199M2IjU3dFPmdIQGgxO2xiN2MxTikzYiNxJkhZP25XIWQ8RnhtbnEhazNi
I2UhdTI4dEFEY3NXKT9uO0hiCnpPNXZXTmE5NFhBRC1aUkR7eUEpa3M2Nnp+MzhMb0VLUFFONEw7
c3YwPkl7OEhmfllYYDlTTmVnKDAzJD1zelRxOQp6QW5GTnlNfW52JV5jQE1KaFJ9QjtpMFZQI2tz
I15AZU1mPyo4MXgrcHFFXnMlQiMwX08tO3A1ZDFBUnc9czB7UVMKejM4RSZAY08tfnZLO014ZD5I
dkw1Zn5XeFc5U0xJWShSVTw+U3g0V0lBbSRyPU19bkFYXmNATGVqP3M0e2h9bEtvCnprcyMoM2VN
Zj9yUVM9PU5WbEw1bEIjMm89LXgwUjZTJTxFe2UxMDllUl5ndGhhTC1iPlhEaSV3M2lsal5kIz1K
Zwp6UHZNQGdhNCU0fTdiQEtLM2lsI35kJEdkM01CIzJ3eFIpeTJqUzY+QCFvNXU0VWFvTWpQYEh+
Rj92KURuRHVzS3MKeiFvNWJ9WmMoX2BEJXxUNz8pNHRXJTB2QzNlLTJ3QkRpOGcwZn5ZejQmazNV
MSZfNUBMSXohKSlBU3cpZk19bnY9CnpeY0BNSnM/Y3tOaDxaWmJrc3ZBd2VNZj8qQUBtJnlxSSVH
R0IjNjJ9LTtwM0gyN08wQHMxQGBiMzhHNVNjTzsxVgp6SztNeGREZyU4LWZ+WDFmOVNOY3UoMDMk
PUl6Wm8lQVN3V1RNfW5BcF5jQExlKjNvdylpMXxqfWtzeExvZU1mP3IKeldBcSZmVnNfRFlCIzMh
TS07cDNANm4jZzZtYG41PjMxU3d9Y1pCVjEpfWMzR0tFRHBWUVFfWENhQm8oKXc8ejNPCno3NEJe
Y19qWk1RaHIrIzY7b2haaT9eZHw/REJPRCQ/dEtkUGV1Y1lMO1hhXm5BNV4jeERjcHdAP2pzOEtR
SEFATQp6IWhLeGZLQX5gKlJKY3ptK0B9QHBHWWE9dmg1TVl4dkdQIVY9JTIldWh7ezklb0ZIbHJ7
ZDBuLUh1VFI0cVIhQkYKekIhfihfLTtwM3szdz1qfHM0RGF3MzhKM1JjTy1+UExmP0BmWTZ6VzFm
flgjSjhWUkNxJnw0JmtpYX5GWUFaaThPCnpNMXJVaWJRMX1wS0Z+aVRoe3swIWtSV09Ue1g+R04y
SnthSnE3S2tNQiF+KD98QnhXJjl7b2R0bjA1M0kzMVlzewp6S09+NW1NKm9sPzx7MTQkZnx5PE80
KyZ5ayhMV0BKOEFibilBbSRTTkx4UHdeXmJjVj5ufDBfbSU7KHBrK1pGRWYKejNpa3p0YD1Ze3FO
I1g4THhHeVcqUn19Nn1oNU0/KWVORXhFRCVAUVBfalFINFRqOVE7YU5rdDhaejxmajc0QUM8Cnpf
ZyNoaXAyRlJ1YVF+b2lfYlN9Pzc0OFFMX2R8dklrO2sjM1AqPjsrIWpfMU5MU0sqfFk2KlFvZn5Y
PyYxcXFebAp6Jj0ofCMlMFhYe0FaaUFFTDR2M2peYVRsYFBTNik1aHpkYnBrUldPVWVMO2UjM2lK
Z0RxOGB1fUIjMjV0VXl2WWIKejBEVkQlbjBAcEczMVomUzdiSilvTV8tVTI8e0V1TGZ8ekNXMXFv
dCkoSEE2JG5NR2ZhQW0kVyhMNHVlfl5hVGxHCno5Pz0maGgjNXAqa1JhdmBlTDtlbEhTYDR1ViFx
SDlCIzQ8cFVsNndVbT1ueGo9SFJvSWB1TURiO3xGIyNBS2VhKgp6SXgkIUleRm4tZiZJPWNtNz1P
cilQajB7eU9TLX5oXlRRVlpiLXt3WUZ2e0tWMFhZMTc+TnpKamVGRCFPWnZVT3wKenVmNl8/JnI5
MCZ6dit7NzctWilZYlVPYnhfIU9QQVB0eGdwYXRfeWszO0tXV2xYRjs4Xz1CejxnaXBqKEt2JDJU
CnowZ0xWdjFleFBeS01eJDdxSkkpSiYhVEA4TEB9ZVFONj50V2VrTz1vTU9UbFk/SmZGT0xHJVYp
SiVWPCQ9b2RpdQp6OzFmKDxpVTBwRkBPZFFtNDhxPSNYVjZhZXFoYWA9UVRXJlBTIWQ4TykqM2hM
R2B5cldWRDZuYVU/ejdNRnUmTSYKenorQUhYZmNldjIxTG9UT0BjI25fe3VnfmwpJEUqRW96Sktg
Xj1hTG9RTl58VHpqPnl5Wi1JNWp6ZWp3NCF0SmJaCno9eE0xUHlOa2xAcyZLbjAtMGxqO3RBZyp9
MH5LeWhoMSpOdl9FeHhrNm1ET0lkeXZCSXIqSUVleGN3RkcwRk5zeAp6LT18VUolRjZje0xHOC0t
U3daY31fYz1sQiU2RlRmY0lDVFdQYG1QZFVRb084ZUwreVdAX2tXSXlZaFdXUGBtUW8KekEqZnlY
ekFUOGshTSY5ckRoQnNmZn5YYlRUTTQye2FCbjR1YG9PKUZBU3dnKlIpVk1yKyo9OHY4Z09xVmgm
c1QlCnpsXmBrcl9mfj9LZCkhK0lWJUJrUUM1WlhQeV9Gemw4dXdPJG19QV5xMzFXNn1aellJJSNs
NGp2VykkflVmfHlKNgp6VG5sMHIoUV4kbm8zR3NsRntgaXAwflBLZGcqI1pgNHBGIzY3NDkmRko2
eiQ4UGBEISU/a0kmalRIJCFAXjViMm8KemFFbGFmdkJDezArXzF1cERCUCZSalZhdT8hYzhkTDVg
fGw7YUxXfCNBcXNiXyFYMmtANF5fRDE2PmhvNXZHTlJwCnpMKGpFbm9YU0pid0lGSF5jVn5qQUhy
JDtGcVIhQkJFcjwlay1JKlkyM3E5OUBzNERiYTMhPEtJY1A1QlJMZUk0egp6WTZ5MntmflgkIVRu
bk9aYUNhdCVpYjJue0FaaTZZKk1nYExeanImfktHMVY1aHt7MEV3SUZIJko9Y1AkMkp+REQKenE3
S2s9RXI8JDAmJFNAdDl6RUJCbjA1NEEzdTM7fWIxaklPTSRmZSU8YF9OS2Z8eTxPVG5sMWUoUV8/
YDhBWj52CnpBbSRRMSpNZ1d1XmpyaFlXKnNeS3YtOz1kIXhaakJnKiE+JVBGQT53RThHZiZkeFhO
QnFIdzF3KyM/bjRRM3woRwp6O1o5U3koLXJPdmcqI0s+OTw2WF5EY29aZT9yZXA3dGluQWA7VTJH
Vz1QMkEwNnorKSVfYXVjb1NLKiRsYThGVVYKelJVWEdXYk9KY15UI0xyM0pvSD0ocVVPK1pFckBE
RSYkU0B4NDBqJUwrVkBkWjc8I1MrUUNzTV83RFFGeTlTbEwjCno2TUMpJVFBeX56N0ROcjx3U3lx
NDJSK3c8czJsV0wzIS1Bc2IxakhrIURvRjZxRHMobkVyfEwrJiRTPmIxM2xNKgp6czBzOTMzISlt
KGIxakhFSyttLXhEZ1pzI2Z8el5zVG5sMj4oUV8/YGA5e3lSQVo4anAqTWdYMV5qciZLY0Z9ViEK
emg8UWNOd0lGNWBKPWNQbU9ZfmR8Vml3Vko0SyRsfD1zZThvKlAlJjtKNzN7ZUU4SDR8bl5MJjcz
VWA2UlU4ciNECno2ei1gQ3dfZjJrREJNS35IPzQzUjc0QmsleUZ9cU9EY29qLW5eQ3crNzQ5O0h5
SWtTNkRCS2thX2NWb2p5MjQkbAp6YTkxaFpHWmdNPms3Rkc9NDsqQH5NZE1UK2RhZWFnYkxoRGl3
QSFLcjFXeyomODVCZj9xMzJvPHdTfUgqS354b2IKenRfNHZ+PSghZHxDODZoOTVIKkNKWWU3Xkdk
YWVhZ0h8VigqTTglLXpTYGY4QG9AK3I9MzN7I3RRNksySjdEUSNCCno9VU5hb2Z1M3RZUjBEZGgx
eUtqK3hmVm5QcHl5ZjtiQn5eRExDaVhPdF8zbVE9KCFmZU9yeiZvNU9hKjRZZUNFfAp6ZGFlYUF1
anNpSiNFaGNuU2BjJUlvQCt0T0I2X1pZWDByfW1nSVdETGJnalpZUXtrU2FhTC1uXz5sRSVlM2lu
KXYKemQhRThRVSpUUyRhNCVIMj5sTi1yM2lvMSNkeF5yYHBsfmwkeEVtR2pDV1UqTSFvNkpLVVpI
UnxFOEhzOz9vfHIrCnpZSzQxXiFyaHs5dVR7OSREY3RLbGomPGw3YU9rLWZqWj1CKHhmVnB0cTMy
bzwpck92SExEVSZ+dF80d0g9KCFkfAp6WkszQns1TEpicVllQ2MjZGFlYWdOJDl5Mkw9QjxtU2Bn
S1BvQCt0VzRTS0V4UThEUGI3RFRPfT1VTmF8Zn1VJFoKeilDWVI1MXlMRjN4ZlZvQ3B5eWY7KXF0
TEJMRFRfeXRfNHY2PSghZmUrQHQ0TzVWTVkrWWVDRjZkYWVhQSk5QVN0CnojMmxtTlNgZjJ+b0Ar
dE9EfClVNEZ7OXxZN1F8ZWw9VU5jNmhATllwKntubHZ6XnJ+OWRaV1U8TiNXa0NhQm9xIwp6dzxf
Ryo2ej1UYF9ZUUA3cl4zQlU7b2h4cT9AX3EtRCV8QE4/KT9nUHRIT09pO1hiSHZBNXlwdkU4SXNF
P3hQQyMKekZAXmlNIWhKJkZLQjtoQFFuKmhtKy1EVC12a0xiKWs3RkhyMTMyX3RpXmkhdV5qciZ+
PUZvRjNoLXlSNndJSiNZCnpKPWNQJEYhV3B0cVBFYTtFcl9aQCYkU0B4MnxkPz5zM2kxVTMhO1k1
YjFqSktMQz5geT5JT2E2Zn5Ya3VUbm5PQgp6Jn5xKF9EblpZK0FuRjQ+Kk1nYEZeanImfkNlVSom
aC15STN3SUojTUo9Y1AkMFE2aTdWKCFzJUVyP2wxJiRTQHQKejgkSCo4bX0mR30zdTJEWmIxakoz
TWJFViQ8YHE1SGZ8eWJDVG5sMEAoUV8/YFN3em5AJn1gUEIrYzJ3TmhpK0g2CnombncmKTZ6Kz0o
X2ElazlMKmMleGE5PmZsSX5ERyQzaW1hSStwMkpQRGNzaTs/cnckcWhRZlZRO2w4REMtJlZOcQp6
REJPMXk/dDJQJWtIXyZtellRRkVubmdwKkVQOSMrRntrS2g3UX0zI3ImJHA1aEBOSWElcGlLMjF1
PUslWCVAdCsKenB7SDM4Xk0jJmZMQ2gzLW5ndWFPPXhHK2o/NFlNdjVjN2hiVzxrc2RkWVQwPjd3
Qm1nIzRNbnZTckZHQko8V28rCnpeNXwoNiM1RzR4dm1tWkVkWVQxc296Y0BRaCUxYnFXPGd3QV5m
VXxOcy1tWUU9cEtCd0p6cHRwWktadktOeFBHUAp6WFppXmtvdTZQWTQkYnFWezJtTnVfVG42NHJ7
SVFiQFRtZ18lKXk1Wm4wRnNGVWA3YFltYHt4a24zSStjbjZEaS0KelVAbCsmZjQ3c3NULVYpNnpf
c0dTfEtJRGBgRmtmcGA8dSk1dkgzclM1YFlsZStgYkM7QWNmbWM7VTI3VGB6emM1Cno5Pj5iZkEz
WGhuRkdPPytQcm4yV1NvQUFGQ2B0STt6WUNnYyhYUiF+dio8VTF3ektGejFrSmJUd31LV31eZ0JW
QAp6VGw5TkReYWZBQTFucD9pZStrO2pxVz4yMzBFXy0wWGxJTjVENSRYTFBsOSVfPStBPDd3ZGo4
WT9QayRtMW5xOW8KentldCRlMjw/Uy1UXj91PThWeFBsKDt8Y0E7aE9EYjUhJEZNK1N7VDVMQ2lG
czhWRipKQHpnKk52eH16JmZ8eXMtCnoyfD4mI28qRD5aRX4lMlgxIWZVWDRTOzZ6NHM4JiNgZ2Rw
dEQlP1F8Y2QpYDhxSHU+USsraGxMeFdYTndhN1FaSwp6UTNgam8hdHZWVyRHY0dCN0FmM2ZnJlJg
MVZUQnR9eEtWezBRQEMtM25eM3FWM2IkMEBtTVBwcjZ6KjdzSjVKI3EKenMmTDBFKztXZk9TdV9Y
XlBycFJ0UjM0c3czOExva15oKiVjaE5vWUdzNTNuTTU9NGRKPjZhakMzczFpVVFCYD5RCnpDNVU+
JCg9UzAoNX10a3VxSzVHRk9BeXRBcihjNG84JEE2SU04KTlnbW1xMmRQcm4zRkMzeU5KaTJBX09G
RntsVwp6b18tMFVDaCppaTVZPlJFMjc7JnFKVCh3UjE+bG9mMVRwdGBZOU5TTiQ1UjdBJXJ+QUky
eDZ4MylJYm4oakhkPkkKem18WitJNVg4TFZzZXZHNzZpKkVWRl8oQzFBYyRHU1F2O3ljdFYxVllS
e3krd244S1o/YTM/OTskcU0meWc8R0w7CnprNUlUJTZ6KWBvZCEpaVdPNXMqMistVkFUeTI3Mklh
QXp2cXFaUkhmZz9vJmBvdm08PlJrKzZ+K35YRFE5RUUjPQp6IWFZJnBvfV9UK0QlX0o1P2tOaGwl
SHZwdlA1XzZlVSFyajs0Xk9gWVFGRDB1QzVVUm4oPVMyUDhKPk8jcVFkYT4Kek9BeGglcihjNG9E
bT91WExfT2lAbW1uJCRQcm4zRkx3TmNuaTBaLTlGRzE3fG9fLTBVVih8MSE1VmVBKlV4S0ktCnpK
cEI/eGVjPFZyQVN3ZS16WFZZZWN4b1ZzWVFSJGlMRFRgQjhWSTVTQFlGeU1iQzBKNmZ8endZSDR3
eW48RWVvbAp6VypTY28xVG57V1k5TlQmI1p2PTglcXlONjJ4M09AKUlibihpS2htRm1fPEFfMEdp
REBiUks1KT4oSGRhb3YoMUsKejY+ZzJmTykxPTNnfVhyRUU+eVU2M2luaW5UZCF+JTZ6KEYwbl53
NHUzVXslPlU3flFDNm1HTV4lXyFXWjNVYF5wCnpVOU5DajZ6JlJ6ZHohKk1VRSFgJnhUX1RJODQ3
b2AkRlVCYjJNJGxhTUJgSypvXy0wVT1KNTFPNVk+aktVeEtKSgp6SnBCP3hoMmlPIUFaaU93elhW
WkxjPXshWGRjeEIkS354ZitlaEgkNkBicFUlKXF8JkJmflhyantTcmpRO09VbmoKelk2VlpmMVdf
ZTtgWHp8Xnp8JHs1UjBmYFkzOEUoTylJYm9gZlRzcTZyfl5EVDVKVXl3c2V2SG85IzBKZkczJDcw
CnpBYyo8S1F2KlRGR0BjcD1WdmgwREtvR053cnZgJFVTM0VUayNFanlwZmd0NypQWW5ieWkrRX1Q
R0BFdGs4cURnfgp6cD0lWkhuRnt3VGc/cU5iVThpdSpRTWwoUy0xOExmYDNtO31nP3BqR1U5V0ky
UW4oaUArKUVWaDI4RGE2IXJpRUYKekghMGw5Nno9NTtfWD5yKFM+YXgoYUlhRmhTMWE2VzZ6JiM8
ZCMlRX5QVF5rZmFqWmt2Zld5LS0oS3daZHIoYzRvCnpJWHdMbU03ODFSbW11bTRQcm4zRlZSLXJf
aH15IV9GRntsbG9fLTBVcDc4V2I1UzRfZFV4S0oxSnBCP3hfMkI4Mwp6QW5GRUJ6WFZZK2M9eyFY
VEVXdlZLfnhFemVoSCNKQGJwVSVtNFQ7VWZ+V35SKWV1QkE7SGljbj5IdHFRMVdeSGEKenN2KEhF
JDVSYkslc1FURzJ4N2tSUjZgSW1qaSh4ZG19NU5FNVg5YF9zZkhsdDY7Q3c7Rns1fkBBJjl4ZVF3
PjRQCnpCQSNqaCYxTX5YMTdgSz4mPkkhKk8kenNCZz9vI195O2I0ZnJmX2RweE9YVnJJfkRGLTNp
b2I+ZHltNHNTSzsyTAp6YVBMPlJUTlVtRDNpbTtVYDtmd1lTbThkUmEzNTg7azE1Pjg3NDghWF9l
cThPbClgO2w7WGIycXBIO1plY152RHwKejheR2J8b01AY04hX3pySSlFdTc5MzhMRVliV1JYO2hO
cDlhczR6VTg2R1V5ez42ez57M1F5KypRQlFhfUN4fVlJCnooPlghWjVJJTg4NVk+WkU5MT12YDsx
aD1nUThEPCRBd2twJUs1PEE4UmYxMCg1PTRGQTZOZHkqOFRpQkBMRFUzMwp6c1lNWGdmS09APkw+
PUloU19EeDZfQG92PSVzb0QtTUcmKSZQaWhnd2VCK1peMVRvWTJxIXZOVUYrUW45NVZNTzwKelk3
eFl8Oyooa2dGe0FqVDdEM0Q8S0IrfHp2eHJZPjBoLU1eYlFAOyU+KEsyQV9qIWY7ZzJIYEs7bDhB
QmNQUU1LCno3NDludmNjO1JBUnBHdi1hOWI3YkVgfEhMIXJpVEstJXotM2RLfU5VK3JaKElidElR
dVZTS1dWQWcoUHdTd3wzOAp6NmAhbWxpMGc/QCkpQjsmIzMkPHI7dV8rVWJwJnpzQFgwIVl4Tmk3
bDlZSV8lZTZvJXB0YCRDNk0tVyNEcFI2TkAKej53ezAkNXlYfGpDK2k1fW4mNlhsMWFVUiskdlQz
IzQpfG1wTDBrY1J2SlRLYTxfUDtyO092Tn1AOWloPHkhTX1mCnooZko4SmFpOz9tQDc/dypmX25W
ektLQTNzWDR0PD9GQE1GIVYkOCQ4eDVKb151PmdiSTQpVDl+WXt1Vnp7e09XQwp6ZjhBI0FINGFv
al9ZWlkoLSp2RDUtSmowNWFGPSgjYmImZWdAREpUUDFkYk9GWUo8TiYwYj8lNERIem5zY15KRTQK
ell7QSRHO3w3Y2VWRFA0TGNaXyNuKDklekYoRWotVUUqTkw4bzFQcnBGZzVzeU9fUzRXZlAzKyR0
eXtmbTxLflRQCnpYOWdkPlclYmtzPngyMmtsVEtRK3toaDU3YVFyb1FVdj15SGVlUF97IU18Z0Vu
JktiJD9wQCEjV3ptQ254Iz8hYQp6ZjZTbFckTjJ3PHV7e1JrS05GK0NJMHNgZDRFbnojI3MmPD1I
aU47cXVmKjZCPEpsTm9rTHhrR0tIdEtxdF9QT0kKens8TUFIJDw5VEJiTW5Ya3xOYnotVj5zOTg4
I2k0dnhuWGMtWVYoWlVaXmgpTDgpbiomc1g2X2BfUF49d2lnakJTCnp1SENTNFFodlA/V316MmNk
MEtlPCMhYyV0VXBPXjJ2KVJ5KmojSyFqX1J+VXpuMWNlcnZ0bj1vPVB8YVo8OXttLQp6IT19dkY4
RWU8QlRScWlJK3UrRjEoQ0RERVdHbHt6Pig7SmFpak9aYiMlNlpXVzlZLThyUkcxRWVlZT5IZkIq
VEwKeXRVJH0wZ3MlcF8yd3c8KGhCQERVKXAoa2otSnFSbk1UfExgPWcrMj85VjdRaXdJNFpjXmx0
eH4/ZipZPllpakhPCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEv
ZGlmZmlTQUMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvZGlmZmlTQUMudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmI4N2MwNjZiM2FjN2E1YmFkOTI4ZDY2
MDZlMzZiY2NlYThlOTViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL2RpZmZpU0FDLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDQ4MSArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4v
ZGV2L251bGwgJiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJh
Y3RlcgotCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMURUTUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0
YXFhMzUxL2kzMF8xRFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzFE
VE1GXzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBfMURUTUZfMTZrSHpfbG9uZy5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8yRFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzJEVE1GXzE2a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMkRUTUZfMTZr
SHpfbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF8yRFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzNEVE1GXzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pMzBfM0RU
TUZfMTZrSHpfbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8zRFRNRl8xNmtIel9sb25n
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzNEVE1GXzE2a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfNERUTUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUxL2kzMF80RFRNRl8xNmtI
el9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzREVE1GXzE2a0h6X2xvbmcucGNtIC4u
L2RhdGFxYTM1MS9pNjBfNERUTUZfMTZrSHpfbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kz
MF81RFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzVEVE1GXzE2a0h6X2xvbmcu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNURUTUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFh
MzUxL2k2MF81RFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzZEVE1G
XzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pMzBfNkRUTUZfMTZrSHpfbG9uZy5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2k2MF82RFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTYw
XzZEVE1GXzE2a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMURUTUZfMTZrSHpfbG9u
Zy5wY20gLi4vZGF0YXFhMzUxL2ExRFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvYTJEVE1GXzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9hMkRUTUZfMTZrSHpfbG9uZy5w
Y20KLWRpZmYgLi4vZGF0YXFhMzUwL2EzRFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEv
YTNEVE1GXzE2a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfN0RUTUZfMTZrSHpf
c2hvcnQucGNtIC4uL2RhdGFxYTM1MS9pMzBfN0RUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfN0RUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9pNjBfN0RU
TUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOERUTUZfMTZrSHpfc2hv
cnQucGNtIC4uL2RhdGFxYTM1MS9pMzBfOERUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfOERUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9pNjBfOERUTUZf
MTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOURUTUZfMTZrSHpfc2hvcnQu
cGNtIC4uL2RhdGFxYTM1MS9pMzBfOURUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfOURUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9pNjBfOURUTUZfMTZr
SHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTBEVE1GXzE2a0h6X3Nob3J0LnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzEwRFRNRl8xNmtIel9zaG9ydC5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2k2MF8xMERUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTBEVE1GXzE2
a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExRFRNRl8xNmtIel9zaG9ydC5w
Y20gLi4vZGF0YXFhMzUxL2kzMF8xMURUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfMTFEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExRFRNRl8x
NmtIel9zaG9ydC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMkRUTUZfMTZrSHpfc2hvcnQu
cGNtIC4uL2RhdGFxYTM1MS9pMzBfMTJEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzEyRFRNRl8xNmtIel9zaG9ydC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMkRUTUZf
MTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNERUTUZfMTZrSHpfc2hvcnQucGNt
IC4uL2RhdGFxYTM1MS9hNERUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9h
NURUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9hNURUTUZfMTZrSHpfc2hvcnQucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hNkRUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9h
NkRUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTNGMDAuSU5QIC4u
L2RhdGFxYTM1MC9pMzBfMTNGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTNGMDAuSU5Q
IC4uL2RhdGFxYTM1MC9pNjBfMTNGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTRGMDAu
SU5QIC4uL2RhdGFxYTM1MC9pMzBfMTRGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTRG
MDAuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMTRGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
MTVGMDAuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMTVGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMTVGMDAuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMTVGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfMTZGMDAuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMTZGMDAuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfMTZGMDAuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMTZGMDAuSU5QCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMTdGMDAuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMTdGMDAuSU5QCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMTdGMDAuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMTdGMDAuSU5QCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMThGMDAuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMThGMDAuSU5QCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfMThGMDAuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMThGMDAuSU5Q
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hN0YwMC5JTlAgLi4vZGF0YXFhMzUwL2E3RjAwLklOUAotZGlm
ZiAuLi9kYXRhcWEzNTAvYThGMDAuSU5QIC4uL2RhdGFxYTM1MC9hOEYwMC5JTlAKLWRpZmYgLi4v
ZGF0YXFhMzUwL2E5RjAwLklOUCAuLi9kYXRhcWEzNTAvYTlGMDAuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfMTlGMDEuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMTlGMDEuSU5QCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMTlGMDEuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMTlGMDEuSU5QCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfMjBGMDEuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMjBGMDEuSU5QCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfMjBGMDEuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMjBGMDEuSU5QCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfMjFGMDEuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMjFGMDEuSU5Q
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjFGMDEuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMjFGMDEu
SU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjJGMDEuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMjJG
MDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjJGMDEuSU5QIC4uL2RhdGFxYTM1MC9pNjBf
MjJGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjNGMDEuSU5QIC4uL2RhdGFxYTM1MC9p
MzBfMjNGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjNGMDEuSU5QIC4uL2RhdGFxYTM1
MC9pNjBfMjNGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjRGMDEuSU5QIC4uL2RhdGFx
YTM1MC9pMzBfMjRGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjRGMDEuSU5QIC4uL2Rh
dGFxYTM1MC9pNjBfMjRGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMTBGMDEuSU5QIC4uL2Rh
dGFxYTM1MC9hMTBGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMTFGMDEuSU5QIC4uL2RhdGFx
YTM1MC9hMTFGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMTJGMDEuSU5QIC4uL2RhdGFxYTM1
MC9hMTJGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjVGMDIuSU5QIC4uL2RhdGFxYTM1
MC9pMzBfMjVGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjVGMDIuSU5QIC4uL2RhdGFx
YTM1MC9pNjBfMjVGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjZGMDIuSU5QIC4uL2Rh
dGFxYTM1MC9pMzBfMjZGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjZGMDIuSU5QIC4u
L2RhdGFxYTM1MC9pNjBfMjZGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjdGMDIuSU5Q
IC4uL2RhdGFxYTM1MC9pMzBfMjdGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjdGMDIu
SU5QIC4uL2RhdGFxYTM1MC9pNjBfMjdGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjhG
MDIuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMjhGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
MjhGMDIuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMjhGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfMjlGMDIuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMjlGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMjlGMDIuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMjlGMDIuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfMzBGMDIuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzBGMDIuSU5QCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMzBGMDIuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzBGMDIuSU5QCi1kaWZmIC4u
L2RhdGFxYTM1MC9hMTNGMDIuSU5QIC4uL2RhdGFxYTM1MC9hMTNGMDIuSU5QCi1kaWZmIC4uL2Rh
dGFxYTM1MC9hMTRGMDIuSU5QIC4uL2RhdGFxYTM1MC9hMTRGMDIuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9hMTVGMDIuSU5QIC4uL2RhdGFxYTM1MC9hMTVGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfMzFGMDMuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzFGMDMuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfMzFGMDMuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzFGMDMuSU5QCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMzJGMDMuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzJGMDMuSU5QCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMzJGMDMuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzJGMDMuSU5QCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMzNGMDMuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzNGMDMuSU5QCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfMzNGMDMuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzNGMDMuSU5Q
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMzRGMDMuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzRGMDMu
SU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMzRGMDMuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzRG
MDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMzVGMDMuSU5QIC4uL2RhdGFxYTM1MC9pMzBf
MzVGMDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMzVGMDMuSU5QIC4uL2RhdGFxYTM1MC9p
NjBfMzVGMDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMzZGMDMuSU5QIC4uL2RhdGFxYTM1
MC9pMzBfMzZGMDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMzZGMDMuSU5QIC4uL2RhdGFx
YTM1MC9pNjBfMzZGMDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMTZGMDMuSU5QIC4uL2RhdGFx
YTM1MC9hMTZGMDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMTdGMDMuSU5QIC4uL2RhdGFxYTM1
MC9hMTdGMDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMThGMDMuSU5QIC4uL2RhdGFxYTM1MC9h
MThGMDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMzdGMDQuSU5QIC4uL2RhdGFxYTM1MC9p
MzBfMzdGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMzdGMDQuSU5QIC4uL2RhdGFxYTM1
MC9pNjBfMzdGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMzhGMDQuSU5QIC4uL2RhdGFx
YTM1MC9pMzBfMzhGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMzhGMDQuSU5QIC4uL2Rh
dGFxYTM1MC9pNjBfMzhGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMzlGMDQuSU5QIC4u
L2RhdGFxYTM1MC9pMzBfMzlGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMzlGMDQuSU5Q
IC4uL2RhdGFxYTM1MC9pNjBfMzlGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNDBGMDQu
SU5QIC4uL2RhdGFxYTM1MC9pMzBfNDBGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNDBG
MDQuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDBGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
NDFGMDQuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDFGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfNDFGMDQuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDFGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfNDJGMDQuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDJGMDQuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfNDJGMDQuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDJGMDQuSU5QCi1kaWZmIC4uL2Rh
dGFxYTM1MC9hMTlGMDQuSU5QIC4uL2RhdGFxYTM1MC9hMTlGMDQuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9hMjBGMDQuSU5QIC4uL2RhdGFxYTM1MC9hMjBGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9hMjFGMDQuSU5QIC4uL2RhdGFxYTM1MC9hMjFGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfNDNGMDUuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDNGMDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfNDNGMDUuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDNGMDUuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfNDRGMDUuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDRGMDUuSU5QCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfNDRGMDUuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDRGMDUuSU5QCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfNDVGMDUuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDVGMDUuSU5QCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfNDVGMDUuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDVGMDUuSU5QCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfNDZGMDUuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDZGMDUuSU5Q
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNDZGMDUuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDZGMDUu
SU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNDdGMDUuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDdG
MDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNDdGMDUuSU5QIC4uL2RhdGFxYTM1MC9pNjBf
NDdGMDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNDhGMDUuSU5QIC4uL2RhdGFxYTM1MC9p
MzBfNDhGMDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNDhGMDUuSU5QIC4uL2RhdGFxYTM1
MC9pNjBfNDhGMDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjJGMDUuSU5QIC4uL2RhdGFxYTM1
MC9hMjJGMDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjNGMDUuSU5QIC4uL2RhdGFxYTM1MC9h
MjNGMDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjRGMDUuSU5QIC4uL2RhdGFxYTM1MC9hMjRG
MDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNDlGMDYuSU5QIC4uL2RhdGFxYTM1MC9pMzBf
NDlGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNDlGMDYuSU5QIC4uL2RhdGFxYTM1MC9p
NjBfNDlGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTBGMDYuSU5QIC4uL2RhdGFxYTM1
MC9pMzBfNTBGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTBGMDYuSU5QIC4uL2RhdGFx
YTM1MC9pNjBfNTBGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTFGMDYuSU5QIC4uL2Rh
dGFxYTM1MC9pMzBfNTFGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTFGMDYuSU5QIC4u
L2RhdGFxYTM1MC9pNjBfNTFGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTJGMDYuSU5Q
IC4uL2RhdGFxYTM1MC9pMzBfNTJGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTJGMDYu
SU5QIC4uL2RhdGFxYTM1MC9pNjBfNTJGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTNG
MDYuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNTNGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
NTNGMDYuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNTNGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfNTRGMDYuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNTRGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfNTRGMDYuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNTRGMDYuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9hMjVGMDYuSU5QIC4uL2RhdGFxYTM1MC9hMjVGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9hMjZGMDYuSU5QIC4uL2RhdGFxYTM1MC9hMjZGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9h
MjdGMDYuSU5QIC4uL2RhdGFxYTM1MC9hMjdGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
NTVsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUxL2kzMF81NWxvbmd0ZXN0LnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzU1bG9uZ3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9pNjBfNTVsb25ndGVzdC5w
Y20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF81Nmxvbmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzU2bG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTZsb25ndGVzdC5wY20gLi4v
ZGF0YXFhMzUxL2k2MF81Nmxvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzU3bG9u
Z3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9pMzBfNTdsb25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2k2MF81N2xvbmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzU3bG9uZ3Rlc3QucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfNThsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUxL2kzMF81OGxv
bmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzU4bG9uZ3Rlc3QucGNtIC4uL2RhdGFx
YTM1MS9pNjBfNThsb25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF81OWxvbmd0ZXN0
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzU5bG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfNTlsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUxL2k2MF81OWxvbmd0ZXN0LnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzYwbG9uZ3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9pMzBfNjBsb25ndGVz
dC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF82MGxvbmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEv
aTYwXzYwbG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjhsb25ndGVzdC5wY20gLi4v
ZGF0YXFhMzUxL2EyOGxvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTI5bG9uZ3Rlc3Qu
cGNtIC4uL2RhdGFxYTM1MS9hMjlsb25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2EzMGxv
bmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvYTMwbG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfNjFsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pMzBfNjFsdGVzdF9z
cGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNjFsdGVzdF9zcGVlY2hfY2xl
YW4ucGNtIC4uL2RhdGFxYTM1MS9pNjBfNjFsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfNjJsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pMzBf
NjJsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNjJsdGVzdF9z
cGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pNjBfNjJsdGVzdF9zcGVlY2hfY2xlYW4ucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNjNsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFx
YTM1MS9pMzBfNjNsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
NjNsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pNjBfNjNsdGVzdF9zcGVlY2hf
Y2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNjRsdGVzdF9zcGVlY2hfY2xlYW4ucGNt
IC4uL2RhdGFxYTM1MS9pMzBfNjRsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfNjRsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pNjBfNjRsdGVz
dF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNjVsdGVzdF9zcGVlY2hf
Y2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pMzBfNjVsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfNjVsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9p
NjBfNjVsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNjZsdGVz
dF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pMzBfNjZsdGVzdF9zcGVlY2hfY2xlYW4u
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNjZsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2Rh
dGFxYTM1MS9pNjBfNjZsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9h
MzFsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9hMzFsdGVzdF9zcGVlY2hfY2xl
YW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzJsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2Rh
dGFxYTM1MS9hMzJsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzNs
dGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9hMzNsdGVzdF9zcGVlY2hfY2xlYW4u
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNjdsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUx
L2kzMF82N2x0ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzY3bHRlc3RfbXVz
aWMucGNtIC4uL2RhdGFxYTM1MS9pNjBfNjdsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2kzMF82OGx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzY4bHRlc3RfbXVzaWMu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNjhsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUx
L2k2MF82OGx0ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzY5bHRlc3RfbXVz
aWMucGNtIC4uL2RhdGFxYTM1MS9pMzBfNjlsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2k2MF82OWx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzY5bHRlc3RfbXVzaWMu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNzBsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUx
L2kzMF83MGx0ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzcwbHRlc3RfbXVz
aWMucGNtIC4uL2RhdGFxYTM1MS9pNjBfNzBsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2kzMF83MWx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzcxbHRlc3RfbXVzaWMu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNzFsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUx
L2k2MF83MWx0ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzcybHRlc3RfbXVz
aWMucGNtIC4uL2RhdGFxYTM1MS9pMzBfNzJsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2k2MF83Mmx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzcybHRlc3RfbXVzaWMu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzRsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2Ez
NGx0ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTM1bHRlc3RfbXVzaWMucGNtIC4u
L2RhdGFxYTM1MS9hMzVsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2EzNmx0ZXN0
X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvYTM2bHRlc3RfbXVzaWMucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfNzNsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pMzBfNzNsdGVz
dF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNzNsdGVzdF9zcGVlY2hf
bm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pNjBfNzNsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfNzRsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9p
MzBfNzRsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNzRsdGVz
dF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pNjBfNzRsdGVzdF9zcGVlY2hfbm9pc3ku
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNzVsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfNzVsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfNzVsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pNjBfNzVsdGVzdF9zcGVl
Y2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNzZsdGVzdF9zcGVlY2hfbm9pc3ku
cGNtIC4uL2RhdGFxYTM1MS9pMzBfNzZsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfNzZsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pNjBfNzZs
dGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNzdsdGVzdF9zcGVl
Y2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pMzBfNzdsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfNzdsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1
MS9pNjBfNzdsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNzhs
dGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pMzBfNzhsdGVzdF9zcGVlY2hfbm9p
c3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNzhsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4u
L2RhdGFxYTM1MS9pNjBfNzhsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9hMzdsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9hMzdsdGVzdF9zcGVlY2hf
bm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzhsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4u
L2RhdGFxYTM1MS9hMzhsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9h
MzlsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9hMzlsdGVzdF9zcGVlY2hfbm9p
c3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNzltaXNjMi5wY20gLi4vZGF0YXFhMzUxL2kz
MF83OW1pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzc5bWlzYzIucGNtIC4uL2RhdGFx
YTM1MS9pNjBfNzltaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF84MG1pc2MyLnBjbSAu
Li9kYXRhcWEzNTEvaTMwXzgwbWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfODBtaXNj
Mi5wY20gLi4vZGF0YXFhMzUxL2k2MF84MG1pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzgxbWlzYzIucGNtIC4uL2RhdGFxYTM1MS9pMzBfODFtaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2k2MF84MW1pc2MyLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzgxbWlzYzIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfODJtaXNjMi5wY20gLi4vZGF0YXFhMzUxL2kzMF84Mm1pc2MyLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzgybWlzYzIucGNtIC4uL2RhdGFxYTM1MS9pNjBfODJtaXNj
Mi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF84M21pc2MyLnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzgzbWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfODNtaXNjMi5wY20gLi4vZGF0YXFh
MzUxL2k2MF84M21pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzg0bWlzYzIucGNtIC4u
L2RhdGFxYTM1MS9pMzBfODRtaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF84NG1pc2My
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzg0bWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDBt
aXNjMi5wY20gLi4vZGF0YXFhMzUxL2E0MG1pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQx
bWlzYzIucGNtIC4uL2RhdGFxYTM1MS9hNDFtaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E0
Mm1pc2MyLnBjbSAuLi9kYXRhcWEzNTEvYTQybWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfODVwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfODVwdXJlbmIucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfODVwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfODVwdXJlbmIucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfODZwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfODZwdXJl
bmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfODZwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9p
NjBfODZwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfODdwdXJlbmIucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfODdwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfODdwdXJlbmIu
cGNtIC4uL2RhdGFxYTM1MS9pNjBfODdwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
ODhwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfODhwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfODhwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfODhwdXJlbmIucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfODlwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfODlwdXJlbmIu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfODlwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBf
ODlwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTBwdXJlbmIucGNtIC4uL2RhdGFx
YTM1MS9pMzBfOTBwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfOTBwdXJlbmIucGNt
IC4uL2RhdGFxYTM1MS9pNjBfOTBwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDNwdXJl
bmIucGNtIC4uL2RhdGFxYTM1MS9hNDNwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDRw
dXJlbmIucGNtIC4uL2RhdGFxYTM1MS9hNDRwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9h
NDVwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9hNDVwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfOTFzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTFzYXdzd2VlcF8z
ODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfOTFzYXdzd2VlcF8zODBfNjAucGNtIC4u
L2RhdGFxYTM1MS9pNjBfOTFzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfOTJzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTJzYXdzd2VlcF8zODBf
NjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfOTJzYXdzd2VlcF8zODBfNjAucGNtIC4uL2Rh
dGFxYTM1MS9pNjBfOTJzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
OTNzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTNzYXdzd2VlcF8zODBfNjAu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfOTNzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFx
YTM1MS9pNjBfOTNzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTRz
YXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTRzYXdzd2VlcF8zODBfNjAucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfOTRzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1
MS9pNjBfOTRzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTVzYXdz
d2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTVzYXdzd2VlcF8zODBfNjAucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfOTVzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9p
NjBfOTVzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTZzYXdzd2Vl
cF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTZzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfOTZzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pNjBf
OTZzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDZzYXdzd2VlcF8zODBf
NjAucGNtIC4uL2RhdGFxYTM1MS9hNDZzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9hNDdzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9hNDdzYXdzd2VlcF8zODBf
NjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDhzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFx
YTM1MS9hNDhzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTdzaW5l
c3dlZXAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTdzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfOTdzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9pNjBfOTdzaW5lc3dlZXAucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOThzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9pMzBf
OThzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfOThzaW5lc3dlZXAucGNtIC4u
L2RhdGFxYTM1MS9pNjBfOThzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTlz
aW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTlzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfOTlzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9pNjBfOTlzaW5lc3dlZXAu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTAwc2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzEwMHNpbmVzd2VlcC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMDBzaW5lc3dlZXAu
cGNtIC4uL2RhdGFxYTM1MS9pNjBfMTAwc2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzEwMXNpbmVzd2VlcC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMDFzaW5lc3dlZXAucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfMTAxc2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEw
MXNpbmVzd2VlcC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMDJzaW5lc3dlZXAucGNtIC4u
L2RhdGFxYTM1MS9pMzBfMTAyc2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEw
MnNpbmVzd2VlcC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMDJzaW5lc3dlZXAucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9hNDlzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9hNDlzaW5lc3dlZXAucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hNTBzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9hNTBzaW5l
c3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNTFzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1
MS9hNTFzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTAzc2luZXN3ZWVwX2hh
bGYucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTAzc2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMTAzc2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTAzc2lu
ZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTA0c2luZXN3ZWVwX2hhbGYu
cGNtIC4uL2RhdGFxYTM1MS9pMzBfMTA0c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfMTA0c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTA0c2luZXN3
ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTA1c2luZXN3ZWVwX2hhbGYucGNt
IC4uL2RhdGFxYTM1MS9pMzBfMTA1c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMTA1c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTA1c2luZXN3ZWVw
X2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTA2c2luZXN3ZWVwX2hhbGYucGNtIC4u
L2RhdGFxYTM1MS9pMzBfMTA2c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMTA2c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTA2c2luZXN3ZWVwX2hh
bGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTA3c2luZXN3ZWVwX2hhbGYucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfMTA3c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
MTA3c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTA3c2luZXN3ZWVwX2hhbGYu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTA4c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFx
YTM1MS9pMzBfMTA4c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTA4
c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTA4c2luZXN3ZWVwX2hhbGYucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hNTJzaW5lc3dlZXBfaGFsZi5wY20gLi4vZGF0YXFhMzUxL2E1
MnNpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTUzc2luZXN3ZWVwX2hhbGYu
cGNtIC4uL2RhdGFxYTM1MS9hNTNzaW5lc3dlZXBfaGFsZi5wY20KLWRpZmYgLi4vZGF0YXFhMzUw
L2E1NHNpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvYTU0c2luZXN3ZWVwX2hhbGYucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTA5c3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9p
MzBfMTA5c3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTA5c3BlZWNobXVz
aWMucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTA5c3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfMTEwc3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTEwc3BlZWNobXVz
aWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTEwc3BlZWNobXVzaWMucGNtIC4uL2RhdGFx
YTM1MS9pNjBfMTEwc3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTExc3Bl
ZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTExc3BlZWNobXVzaWMucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMTExc3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTExc3Bl
ZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTEyc3BlZWNobXVzaWMucGNtIC4u
L2RhdGFxYTM1MS9pMzBfMTEyc3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
MTEyc3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTEyc3BlZWNobXVzaWMucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfMTEzc3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pMzBf
MTEzc3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTEzc3BlZWNobXVzaWMu
cGNtIC4uL2RhdGFxYTM1MS9pNjBfMTEzc3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfMTE0c3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTE0c3BlZWNobXVzaWMu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTE0c3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1
MS9pNjBfMTE0c3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNTVzcGVlY2htdXNp
Yy5wY20gLi4vZGF0YXFhMzUxL2E1NXNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
YTU2c3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9hNTZzcGVlY2htdXNpYy5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2E1N3NwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvYTU3c3BlZWNobXVz
aWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTE1c3BlZWNobXVzaWNfbmIucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfMTE1c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
MTE1c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTE1c3BlZWNobXVzaWNfbmIu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTE2c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFx
YTM1MS9pMzBfMTE2c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTE2
c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTE2c3BlZWNobXVzaWNfbmIucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTE3c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1
MS9pMzBfMTE3c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTE3c3Bl
ZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTE3c3BlZWNobXVzaWNfbmIucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfMTE4c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9p
MzBfMTE4c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTE4c3BlZWNo
bXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTE4c3BlZWNobXVzaWNfbmIucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMTE5c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBf
MTE5c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTE5c3BlZWNobXVz
aWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTE5c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfMTIwc3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTIw
c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTIwc3BlZWNobXVzaWNf
bmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTIwc3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9hNThzcGVlY2htdXNpY19uYi5wY20gLi4vZGF0YXFhMzUxL2E1OHNwZWVjaG11c2lj
X25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTU5c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFx
YTM1MS9hNTlzcGVlY2htdXNpY19uYi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E2MHNwZWVjaG11
c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvYTYwc3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMTIxc3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEyMXNw
ZWVjaG9mZmljZTBkQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMjFzcGVlY2hvZmZpY2Uw
ZEIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTIxc3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzEyMnNwZWVjaG9mZmljZTBkQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMjJz
cGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTIyc3BlZWNob2ZmaWNl
MGRCLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEyMnNwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYgLi4v
ZGF0YXFhMzUwL2kzMF8xMjNzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTIz
c3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEyM3NwZWVjaG9mZmlj
ZTBkQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMjNzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfMTI0c3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEy
NHNwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMjRzcGVlY2hvZmZp
Y2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTI0c3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzEyNXNwZWVjaG9mZmljZTBkQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8x
MjVzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTI1c3BlZWNob2Zm
aWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEyNXNwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2kzMF8xMjZzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pMzBf
MTI2c3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEyNnNwZWVjaG9m
ZmljZTBkQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMjZzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9hNjFzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9hNjFzcGVl
Y2hvZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjJzcGVlY2hvZmZpY2UwZEIucGNt
IC4uL2RhdGFxYTM1MS9hNjJzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9h
NjNzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9hNjNzcGVlY2hvZmZpY2UwZEIucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTI3c3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRh
cWEzNTEvaTMwXzEyN3NwZWVjaF9hbmRfbWlzY19OQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2
MF8xMjdzcGVlY2hfYW5kX21pc2NfTkIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTI3c3BlZWNoX2Fu
ZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEyOHNwZWVjaF9hbmRfbWlzY19O
Qi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMjhzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMTI4c3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTYw
XzEyOHNwZWVjaF9hbmRfbWlzY19OQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMjlzcGVl
Y2hfYW5kX21pc2NfTkIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTI5c3BlZWNoX2FuZF9taXNjX05C
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEyOXNwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4v
ZGF0YXFhMzUxL2k2MF8xMjlzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfMTMwc3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEzMHNwZWVj
aF9hbmRfbWlzY19OQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMzBzcGVlY2hfYW5kX21p
c2NfTkIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTMwc3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzEzMXNwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4vZGF0YXFhMzUx
L2kzMF8xMzFzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTMx
c3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEzMXNwZWVjaF9hbmRfbWlz
Y19OQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMzJzcGVlY2hfYW5kX21pc2NfTkIucGNt
IC4uL2RhdGFxYTM1MS9pMzBfMTMyc3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzEzMnNwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMzJz
cGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjRzcGVlY2hfYW5kX21p
c2NfTkIucGNtIC4uL2RhdGFxYTM1MS9hNjRzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9hNjVzcGVlY2hfYW5kX21pc2NfTkIucGNtIC4uL2RhdGFxYTM1MS9hNjVzcGVl
Y2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjZzcGVlY2hfYW5kX21pc2Nf
TkIucGNtIC4uL2RhdGFxYTM1MS9hNjZzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMTMzc3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEz
M3NwZWVjaF9hbmRfbWlzY19XQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMzNzcGVlY2hf
YW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTMzc3BlZWNoX2FuZF9taXNjX1dCLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEzNHNwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0
YXFhMzUxL2kzMF8xMzRzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMTM0c3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEzNHNwZWVjaF9h
bmRfbWlzY19XQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMzVzcGVlY2hfYW5kX21pc2Nf
V0IucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTM1c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzEzNXNwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2k2
MF8xMzVzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTM2c3Bl
ZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEzNnNwZWVjaF9hbmRfbWlzY19X
Qi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMzZzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4u
L2RhdGFxYTM1MS9pNjBfMTM2c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzEzN3NwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMzdzcGVl
Y2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTM3c3BlZWNoX2FuZF9t
aXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEzN3NwZWVjaF9hbmRfbWlzY19XQi5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2kzMF8xMzhzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1
MS9pMzBfMTM4c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEz
OHNwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMzhzcGVlY2hfYW5kX21p
c2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjdzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4u
L2RhdGFxYTM1MS9hNjdzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9h
NjhzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1MS9hNjhzcGVlY2hfYW5kX21pc2Nf
V0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjlzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2Rh
dGFxYTM1MS9hNjlzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
MTM5dGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEzOXRlc3RNNC5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2k2MF8xMzl0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTM5dGVzdE00LnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0MHRlc3RNNC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNDB0
ZXN0TTQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQwdGVzdE00LnBjbSAuLi9kYXRhcWEz
NTEvaTYwXzE0MHRlc3RNNC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNDF0ZXN0TTQucGNt
IC4uL2RhdGFxYTM1MS9pMzBfMTQxdGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0
MXRlc3RNNC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNDF0ZXN0TTQucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfMTQydGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE0MnRlc3RNNC5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2k2MF8xNDJ0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTQydGVz
dE00LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0M3Rlc3RNNC5wY20gLi4vZGF0YXFhMzUx
L2kzMF8xNDN0ZXN0TTQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQzdGVzdE00LnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzE0M3Rlc3RNNC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNDR0
ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTQ0dGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzE0NHRlc3RNNC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNDR0ZXN0TTQucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9hNzB0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9hNzB0ZXN0TTQucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9hNzF0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9hNzF0ZXN0TTQucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hNzJ0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9hNzJ0ZXN0TTQu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTQ1dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1
MS9pMzBfMTQ1dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQ1dGVzdE00
RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTQ1dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMTQ2dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTQ2dGVzdE00
RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQ2dGVzdE00RF9yZXYucGNtIC4uL2Rh
dGFxYTM1MS9pNjBfMTQ2dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTQ3
dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTQ3dGVzdE00RF9yZXYucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfMTQ3dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTQ3
dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTQ4dGVzdE00RF9yZXYucGNt
IC4uL2RhdGFxYTM1MS9pMzBfMTQ4dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMTQ4dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTQ4dGVzdE00RF9yZXYucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTQ5dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9p
MzBfMTQ5dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQ5dGVzdE00RF9y
ZXYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTQ5dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfMTUwdGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTUwdGVzdE00RF9y
ZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTUwdGVzdE00RF9yZXYucGNtIC4uL2RhdGFx
YTM1MS9pNjBfMTUwdGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNzN0ZXN0TTRE
X3Jldi5wY20gLi4vZGF0YXFhMzUxL2E3M3Rlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvYTc0dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9hNzR0ZXN0TTREX3Jldi5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2E3NXRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvYTc1dGVzdE00
RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTUxdGVzdE00RC5wY20gLi4vZGF0YXFh
MzUxL2kzMF8xNTF0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1MXRlc3RNNEQu
cGNtIC4uL2RhdGFxYTM1MS9pNjBfMTUxdGVzdE00RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kz
MF8xNTJ0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE1MnRlc3RNNEQucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMTUydGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNTJ0ZXN0TTRE
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE1M3Rlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9p
MzBfMTUzdGVzdE00RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNTN0ZXN0TTRELnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzE1M3Rlc3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTU0
dGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNTR0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzE1NHRlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTU0dGVzdE00RC5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNTV0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE1
NXRlc3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTU1dGVzdE00RC5wY20gLi4vZGF0
YXFhMzUxL2k2MF8xNTV0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE1NnRlc3RN
NEQucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTU2dGVzdE00RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUw
L2k2MF8xNTZ0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE1NnRlc3RNNEQucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9hNzZ0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvYTc2dGVzdE00RC5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2E3N3Rlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9hNzd0ZXN0TTRE
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTc4dGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2E3OHRl
c3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTU3dGVzdGZpbGUucGNtIC4uL2RhdGFx
YTM1MS9pMzBfMTU3dGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTU3dGVzdGZp
bGUucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTU3dGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfMTU4dGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTU4dGVzdGZpbGUucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfMTU4dGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTU4
dGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTU5dGVzdGZpbGUucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfMTU5dGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTU5dGVz
dGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTU5dGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfMTYwdGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTYwdGVzdGZpbGUucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTYwdGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pNjBf
MTYwdGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTYxdGVzdGZpbGUucGNtIC4u
L2RhdGFxYTM1MS9pMzBfMTYxdGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTYx
dGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTYxdGVzdGZpbGUucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMTYydGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTYydGVzdGZpbGUu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTYydGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9p
NjBfMTYydGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNzl0ZXN0ZmlsZS5wY20gLi4v
ZGF0YXFhMzUxL2E3OXRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTgwdGVzdGZpbGUu
cGNtIC4uL2RhdGFxYTM1MS9hODB0ZXN0ZmlsZS5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E4MXRl
c3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvYTgxdGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfMTYzdG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNjN0b25lX2Npc2NvLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE2M3RvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9p
NjBfMTYzdG9uZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNjR0b25lX2Npc2Nv
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE2NHRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMTY0dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNjR0b25lX2Npc2NvLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE2NXRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9p
MzBfMTY1dG9uZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNjV0b25lX2Npc2Nv
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE2NXRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfMTY2dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNjZ0b25lX2Npc2NvLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE2NnRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9p
NjBfMTY2dG9uZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNjd0b25lX2Npc2Nv
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE2N3RvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMTY3dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNjd0b25lX2Npc2NvLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE2OHRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9p
MzBfMTY4dG9uZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNjh0b25lX2Npc2Nv
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE2OHRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9hODJ0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEvYTgydG9uZV9jaXNjby5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2E4M3RvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9hODN0b25lX2Npc2Nv
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTg0dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2E4
NHRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTY5dG9uZV9jaXNjb19sb25n
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE2OXRvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2k2MF8xNjl0b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTY5dG9u
ZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE3MHRvbmVfY2lzY29fbG9u
Zy5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNzB0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMTcwdG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE3MHRv
bmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNzF0b25lX2Npc2NvX2xv
bmcucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTcxdG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzE3MXRvbmVfY2lzY29fbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNzF0
b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTcydG9uZV9jaXNjb19s
b25nLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE3MnRvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4v
ZGF0YXFhMzUwL2k2MF8xNzJ0b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTcy
dG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE3M3RvbmVfY2lzY29f
bG9uZy5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNzN0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMTczdG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE3
M3RvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNzR0b25lX2Npc2Nv
X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTc0dG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzE3NHRvbmVfY2lzY29fbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF8x
NzR0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hODV0b25lX2Npc2NvX2xv
bmcucGNtIC4uL2RhdGFxYTM1MS9hODV0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9hODZ0b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9hODZ0b25lX2Npc2NvX2xv
bmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hODd0b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFx
YTM1MS9hODd0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTc1d2Jf
Y29udHNwZWVjaC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNzV3Yl9jb250c3BlZWNoLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzE3NXdiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9pNjBf
MTc1d2JfY29udHNwZWVjaC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNzZ3Yl9jb250c3Bl
ZWNoLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE3NndiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMTc2d2JfY29udHNwZWVjaC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNzZ3Yl9j
b250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE3N3diX2NvbnRzcGVlY2gucGNt
IC4uL2RhdGFxYTM1MS9pMzBfMTc3d2JfY29udHNwZWVjaC5wY20KLWRpZmYgLi4vZGF0YXFhMzUw
L2k2MF8xNzd3Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE3N3diX2NvbnRzcGVl
Y2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTc4d2JfY29udHNwZWVjaC5wY20gLi4vZGF0
YXFhMzUxL2kzMF8xNzh3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE3
OHdiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTc4d2JfY29udHNwZWVjaC5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNzl3Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzE3OXdiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTc5d2JfY29u
dHNwZWVjaC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNzl3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzE4MHdiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTgw
d2JfY29udHNwZWVjaC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xODB3Yl9jb250c3BlZWNo
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE4MHdiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9hODh3Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvYTg4d2JfY29udHNwZWVjaC5w
Y20KLWRpZmYgLi4vZGF0YXFhMzUwL2E4OXdiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9h
ODl3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTkwd2JfY29udHNwZWVjaC5w
Y20gLi4vZGF0YXFhMzUxL2E5MHdiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfMTgxd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTgxd2Jfc3Bl
ZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTgxd2Jfc3BlZWNoX29m
ZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTgxd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTgyd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfMTgyd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMTgyd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTgyd2Jf
c3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTgzd2Jfc3BlZWNo
X29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTgzd2Jfc3BlZWNoX29mZmljZTI1ZGIu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTgzd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4u
L2RhdGFxYTM1MS9pNjBfMTgzd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfMTg0d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTg0
d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTg0d2Jfc3Bl
ZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTg0d2Jfc3BlZWNoX29mZmljZTI1
ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTg1d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNt
IC4uL2RhdGFxYTM1MS9pMzBfMTg1d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMTg1d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pNjBf
MTg1d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTg2d2Jf
c3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTg2d2Jfc3BlZWNoX29mZmlj
ZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTg2d2Jfc3BlZWNoX29mZmljZTI1ZGIu
cGNtIC4uL2RhdGFxYTM1MS9pNjBfMTg2d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9hOTF3Yl9zcGVlY2hfb2ZmaWNlMjVkYi5wY20gLi4vZGF0YXFhMzUxL2E5MXdi
X3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTkyd2Jfc3BlZWNoX29m
ZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9hOTJ3Yl9zcGVlY2hfb2ZmaWNlMjVkYi5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2E5M3diX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEv
YTkzd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzBfMURUTUZf
MTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9hMzBfMURUTUZfMTZrSHpfc2hvcnQucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9hNjBfMURUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9h
NjBfMURUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzBfMmx0ZXN0X3Nw
ZWVjaF9ub2lzeS5wY20gLi4vZGF0YXFhMzUxL2EzMF8ybHRlc3Rfc3BlZWNoX25vaXN5LnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvYTYwXzJsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1
MS9hNjBfMmx0ZXN0X3NwZWVjaF9ub2lzeS5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2EzMF8zbWlz
YzIucGNtIC4uL2RhdGFxYTM1MS9hMzBfM21pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTYw
XzNtaXNjMi5wY20gLi4vZGF0YXFhMzUxL2E2MF8zbWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9hMzBfNHNpbmVzd2VlcC5wY20gLi4vZGF0YXFhMzUxL2EzMF80c2luZXN3ZWVwLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvYTYwXzRzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9hNjBfNHNpbmVz
d2VlcC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2EzMF81c3BlZWNobXVzaWMucGNtIC4uL2RhdGFx
YTM1MS9hMzBfNXNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTYwXzVzcGVlY2ht
dXNpYy5wY20gLi4vZGF0YXFhMzUxL2E2MF81c3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9hMzBfNnRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9hMzBfNnRvbmVfY2lzY28ucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hNjBfNnRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9hNjBf
NnRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjBfN3RvbmVfY2lzY28ucGNtIC4u
L2RhdGFxYTM1MS9hNjBfN3RvbmVfY2lzY28ucGNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
aXNhYy9maXgvdGVzdC9RQS9kaWZmaVNBQ1BMQy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgv
dGVzdC9RQS9kaWZmaVNBQ1BMQy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDll
MzYyOWIyY2E3MmE0OTBlMzFjNWI0NzJkZDkxYjNkNGQyYTgzNjcuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3Qv
UUEvZGlmZmlTQUNQTEMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotIyEvYmlu
L2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3Jj
ZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIKLQotTE9HRklMRT1sb2dwbGMudHh0Ci1lY2hv
ICJTVEFSVCBQTEMgVEVTVCIgPiAkTE9HRklMRQotCi1PVVRESVIxPS4uL2RhdGFxYXBsY18wCi1P
VVRESVIyPS4uL2RhdGFxYXBsY18xCi0KLWRpZmYgJE9VVERJUjEvb3V0cGxjMS5wY20gJE9VVERJ
UjIvb3V0cGxjMS5wY20gCi1kaWZmICRPVVRESVIxL291dHBsYzIucGNtICRPVVRESVIyL291dHBs
YzIucGNtIAotZGlmZiAkT1VURElSMS9vdXRwbGMzLnBjbSAkT1VURElSMi9vdXRwbGMzLnBjbSAK
LWRpZmYgJE9VVERJUjEvb3V0cGxjNC5wY20gJE9VVERJUjIvb3V0cGxjNC5wY20gCi1kaWZmICRP
VVRESVIxL291dHBsYzUucGNtICRPVVRESVIyL291dHBsYzUucGNtIAotZGlmZiAkT1VURElSMS9v
dXRwbGM2LnBjbSAkT1VURElSMi9vdXRwbGM2LnBjbSAKLQotZWNobyBET05FIQotCi0KLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ0xvbmd0ZXN0LnR4
dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNMb25ndGVzdC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZmZjMGM5NTVlZGQwN2FjOWYwZWIwNTQ4Y2Fl
MTAwYjZlMDM5NzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ0xvbmd0ZXN0LnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLSMhL2Jpbi9iYXNoCi0oc2V0IC1vIGlnbmNyKSAy
Pi9kZXYvbnVsbCAmJiBzZXQgLW8gaWduY3I7ICMgZm9yY2UgYmFzaCB0byBpZ25vcmUgXHIgY2hh
cmFjdGVyCi0KLUxPR0ZJTEU9bG9nTm9ybWFsLnR4dAotZWNobyAiU1RBUlQgSVNBQyBURVNUIiA+
ICRMT0dGSUxFCi1lY2hvID4+ICRMT0dGSUxFCi0KLUlTQUM9Li4vUmVsZWFzZS9rZW5ueS5leGUK
LUlTQUNGSVhGTE9BVD0uLi9SZWxlYXNlL3Rlc3RGaXhGbG9hdC5leGUKLQotSU5GSUxFUz0kKGNh
dCBJbnB1dEZpbGVzLnR4dCkKLVNVQlNFVD0kKGNhdCBJbnB1dEZpbGVzRmV3LnR4dCkKLUNIQU5O
RUxGSUxFUz0kKGNhdCBDaGFubmVsRmlsZXMudHh0KQotQ0hBTk5FTExJU1Q9KCQoY2F0IENoYW5u
ZWxGaWxlcy50eHQpKQotSU5ESVI9Li4vZGF0YS9vcmlnCi1PVVRESVI9Li4vZGF0YXFhCi1ta2Rp
ciAtcCAkT1VURElSCi0KLVRBUkdFVFJBVEU9KDEwMDAwIDE1MDAwIDIwMDAwIDI1MDAwIDMwMDAw
IDMyMDAwKQotI2VjaG8gJHtDSEFOTkVMRklMRVNbMV19Ci0KLWluZGV4MT0wCi1pbmRleDI9MAot
Ci1mb3IgZmlsZSBpbiAkSU5GSUxFUyAjIGxvb3Agb3ZlciBhbGwgaW5wdXQgZmlsZXMKLSAgZG8K
LSAgCi0gIGZvciByYXRlIGluICR7VEFSR0VUUkFURVsqXX0KLQlkbwotCWxldCAiaW5kZXgxPWlu
ZGV4MSsxIgotCSRJU0FDIC1JICRyYXRlIC1GTCAzMCAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2kz
MF8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDIC1JICRyYXRlIC1GTCA2MCAkSU5E
SVIvIiRmaWxlIiAkT1VURElSL2k2MF8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotICBkb25l
Ci0gIGZvciBjaGFubmVsIGluICRDSEFOTkVMRklMRVMKLQlkbwotCWxldCAiaW5kZXgyPWluZGV4
MisxIgotCSRJU0FDICRJTkRJUi8kY2hhbm5lbCAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2EkaW5k
ZXgyIiRmaWxlIiA+PiAkTE9HRklMRQotICBkb25lCi0KLWRvbmUKLQotaW5kZXgxPTAKLQotZm9y
IGZpbGUgaW4gJFNVQlNFVCAjIGxvb3Agb3ZlciB0aGUgc3Vic2V0IG9mIGlucHV0IGZpbGVzCi0g
IGRvCi0JbGV0ICJpbmRleDE9aW5kZXgxKzEiCi0JJElTQUMgJElORElSLyR7Q0hBTk5FTExJU1Rb
MF19IC1GTCAzMCAtRklYRURfRkwgJElORElSLyIkZmlsZSIgJE9VVERJUi9hMzBfJGluZGV4MSIk
ZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQyAkSU5ESVIvJHtDSEFOTkVMTElTVFswXX0gLUZMIDYw
IC1GSVhFRF9GTCAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2E2MF8kaW5kZXgxIiRmaWxlIiA+PiAk
TE9HRklMRQotZG9uZQotCi1sZXQgImluZGV4MT1pbmRleDErMSIJCi0gJElTQUMgJElORElSLyR7
Q0hBTk5FTExJU1RbMF19IC1JTklUUkFURSAyNTAwMCAtRkwgMzAgJElORElSLyIkZmlsZSIgJE9V
VERJUi9hNjBfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQotIyBSdW4gZmF1bHQgdGVzdAot
Ci0jLi9ydW5pU0FDZmF1bHQudHh0Ci0KLWVjaG8gRE9ORSEKLQotCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNOQi50eHQgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
aXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDTkIudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2MDU1OTVjYzA0ZmNhNjE5MjRiOWJhN2NjN2NhZWZiOTZkMDJhMDM4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2Zp
eC90ZXN0L1FBL3J1bmlTQUNOQi50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0j
IS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwgJiYgc2V0IC1vIGlnbmNyOyAj
IGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3RlcgotCi1MT0dGSUxFPWxvZ05CLnR4dAot
ZWNobyAiU1RBUlQgTkFSUk9XQkFORCBURVNUIiA+ICRMT0dGSUxFCi1lY2hvID4+ICRMT0dGSUxF
Ci0KLUlTQUM9Li4vUmVsZWFzZS9rZW5ueS5leGUKLUlTQUNGSVhGTE9BVD0uLi9SZWxlYXNlL3Rl
c3RGaXhGbG9hdC5leGUKLQotSU5GSUxFUz0kKGNhdCBJbnB1dEZpbGVzLnR4dCkKLVNVQlNFVD0k
KGNhdCBJbnB1dEZpbGVzRmV3LnR4dCkKLUNIQU5ORUxGSUxFUz0kKGNhdCBDaGFubmVsRmlsZXMu
dHh0KQotQ0hBTk5FTExJU1Q9KCQoY2F0IENoYW5uZWxGaWxlcy50eHQpKQotSU5ESVI9Li4vZGF0
YS9vcmlnCi1PVVRESVI9Li4vZGF0YXFhTkIKLW1rZGlyIC1wICRPVVRESVIKLQotVEFSR0VUUkFU
RT0oMTAwMDAgMTUwMDAgMjAwMDAgMjUwMDAgMzAwMDAgMzIwMDApCi0jZWNobyAke0NIQU5ORUxG
SUxFU1sxXX0KLQotaW5kZXgxPTAKLWluZGV4Mj0wCi0KLSMgTmFycm93YmFuZCBJbnRlcmZhY2Vz
Ci0KLWZvciBmaWxlIGluICRTVUJTRVQgIyBsb29wIG92ZXIgYWxsIGlucHV0IGZpbGVzCi0gIGRv
Ci0gIGZvciByYXRlIGluICR7VEFSR0VUUkFURVsqXX0KLQlkbwotCWxldCAiaW5kZXgxPWluZGV4
MSsxIgotIAkkSVNBQyAkcmF0ZSAtRkwgMzAgLU5CIDEgJElORElSLyIkZmlsZSIgJE9VVERJUi9u
YjEzMF8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDICRyYXRlIC1GTCA2MCAtTkIg
MSAkSU5ESVIvIiRmaWxlIiAkT1VURElSL25iMTYwXyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxF
Ci0JJElTQUMgJHJhdGUgLUZMIDMwIC1OQiAyICRJTkRJUi8iJGZpbGUiICRPVVRESVIvbmIyMzBf
JGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQyAkcmF0ZSAtRkwgNjAgLU5CIDIgJElO
RElSLyIkZmlsZSIgJE9VVERJUi9uYjI2MF8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJ
U0FDICRyYXRlIC1GTCAzMCAtTkIgMiAtUEwgMTAgJElORElSLyIkZmlsZSIgJE9VVERJUi9uYjJw
bGMzMF8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDICRyYXRlIC1GTCA2MCAtTkIg
MiAtUEwgMTAgJElORElSLyIkZmlsZSIgJE9VVERJUi9uYjJwbGM2MF8kaW5kZXgxIiRmaWxlIiA+
PiAkTE9HRklMRQotICBkb25lCi0KLWRvbmUKLQotZWNobyBET05FIQotCi0KLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ1BMQy50eHQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDUExDLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNmJlZTZmN2MzZjMyMzg2MTA3MjhlMjc0OTIxZjYyODc4YTQ1OGU5Ni4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
aXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDUExDLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIzICsw
LDAgQEAKLSMhL2Jpbi9iYXNoCi0oc2V0IC1vIGlnbmNyKSAyPi9kZXYvbnVsbCAmJiBzZXQgLW8g
aWduY3I7ICMgZm9yY2UgYmFzaCB0byBpZ25vcmUgXHIgY2hhcmFjdGVyCi0KLUxPR0ZJTEU9bG9n
cGxjLnR4dAotZWNobyAiU1RBUlQgUExDIFRFU1QiID4gJExPR0ZJTEUKLQotSVNBQz0uLi9SZWxl
YXNlL2tlbm55LmV4ZQotCi1JTkRJUj0uLi9kYXRhL29yaWcKLU9VVERJUj0uLi9kYXRhcWFwbGNf
MAotbWtkaXIgLXAgJE9VVERJUgotCi0kSVNBQyAxMjAwMCAtUEwgMTUgJElORElSL3NwZWVjaG11
c2ljLnBjbSAkT1VURElSL291dHBsYzEucGNtIAotJElTQUMgMjAwMDAgLVBMIDE1ICRJTkRJUi9z
cGVlY2htdXNpYy5wY20gJE9VVERJUi9vdXRwbGMyLnBjbSAKLSRJU0FDIDMyMDAwIC1QTCAxNSAk
SU5ESVIvc3BlZWNobXVzaWMucGNtICRPVVRESVIvb3V0cGxjMy5wY20gCi0kSVNBQyAxMjAwMCAt
UEwgMTUgJElORElSL3RvbmVfY2lzY28ucGNtICRPVVRESVIvb3V0cGxjNC5wY20gCi0kSVNBQyAy
MDAwMCAtUEwgMTUgJElORElSL3RvbmVfY2lzY28ucGNtICRPVVRESVIvb3V0cGxjNS5wY20gCi0k
SVNBQyAzMjAwMCAtUEwgMTUgJElORElSL3RvbmVfY2lzY28ucGNtICRPVVRESVIvb3V0cGxjNi5w
Y20gCi0KLWVjaG8gRE9ORSEKLQotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2Zp
eC90ZXN0L1FBL3J1bmlTQUNSYXRlLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FB
L3J1bmlTQUNSYXRlLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg0MDNlMDk5
ZDY1MGZiNzVlYjM2ODI3NGJiZTEzOWY5ZDQ5ODJmMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5p
U0FDUmF0ZS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0jIS9iaW4vYmFzaAot
KHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwgJiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2gg
dG8gaWdub3JlIFxyIGNoYXJhY3RlcgotCi1MT0dHPWxvZ2dSYXRlLnR4dAotT1VURElSPS4uL2Rh
dGFxYVJhdGUKLW1rZGlyIC1wICRPVVRESVIKLQotLi4vUmVsZWFzZS9rZW5ueS5leGUgMTMwMDAg
LUZJWEVEX0ZMIC1GTCAzMCAtTUFYIDEwMCAuLi9kYXRhL29yaWcvc2F3c3dlZXBfMzgwXzYwLnBj
bSAkT1VURElSL291dF9uYXBpXzEucGNtID4gJExPR0cKLS4uL1JlbGVhc2Uva2VubnkuZXhlIC4u
L2RhdGEvb3JpZy9ib3R0bGVuZWNrcy50eHQgLUZJWEVEX0ZMIC1GTCAzMCAtTUFYUkFURSAzMjAw
MCAuLi9kYXRhL29yaWcvc2F3c3dlZXBfMzgwXzYwLnBjbSAkT1VURElSL291dF9uYXBpXzIucGNt
ID4+ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAxMzAwMCAtRklYRURfRkwgLUZMIDMwIC1N
QVggMTAwIC4uL2RhdGEvb3JpZy9zYXdzd2VlcF8zODBfNjAucGNtICRPVVRESVIvb3V0X25hcGlf
My5wY20gPj4gJExPR0cKLS4uL1JlbGVhc2Uva2VubnkuZXhlIC4uL2RhdGEvb3JpZy9ib3R0bGVu
ZWNrcy50eHQgLUZJWEVEX0ZMIC1GTCAzMCAtTUFYUkFURSAzMjAwMCAuLi9kYXRhL29yaWcvc2F3
c3dlZXBfMzgwXzYwLnBjbSAkT1VURElSL291dF9uYXBpXzQucGNtID4+ICRMT0dHCi0uLi9SZWxl
YXNlL2tlbm55LmV4ZSAxMzAwMCAtRklYRURfRkwgLUZMIDYwIC1NQVggMTAwIC4uL2RhdGEvb3Jp
Zy9zYXdzd2VlcF8zODBfNjAucGNtICRPVVRESVIvb3V0X25hcGlfNS5wY20gPj4gJExPR0cKLS4u
L1JlbGVhc2Uva2VubnkuZXhlIC4uL2RhdGEvb3JpZy9ib3R0bGVuZWNrcy50eHQgLUZJWEVEX0ZM
IC1GTCA2MCAtTUFYUkFURSAzMjAwMCAuLi9kYXRhL29yaWcvc2F3c3dlZXBfMzgwXzYwLnBjbSAk
T1VURElSL291dF9uYXBpXzYucGNtID4+ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAxMzAw
MCAtSU5JVF9SQVRFIDMyMDAwIC1GSVhFRF9GTCAtRkwgNjAgLU1BWCAxMDAgLi4vZGF0YS9vcmln
L3Nhd3N3ZWVwXzM4MF82MC5wY20gJE9VVERJUi9vdXRfbmFwaV83LnBjbSA+PiAkTE9HRwotCi0u
Li9SZWxlYXNlL2tlbm55LmV4ZSAxMzAwMCAtRklYRURfRkwgLUZMIDMwIC1NQVggMTAwIC4uL2Rh
dGEvb3JpZy9sb25nc3BlZWNoLnBjbSAkT1VURElSL291dF9uYXBpXzExLnBjbSA+PiAkTE9HRwot
Li4vUmVsZWFzZS9rZW5ueS5leGUgLi4vZGF0YS9vcmlnL2JvdHRsZW5lY2tzLnR4dCAtRklYRURf
RkwgLUZMIDMwIC1NQVhSQVRFIDMyMDAwIC4uL2RhdGEvb3JpZy9sb25nc3BlZWNoLnBjbSAkT1VU
RElSL291dF9uYXBpXzEyLnBjbSA+PiAkTE9HRwotLi4vUmVsZWFzZS9rZW5ueS5leGUgMTMwMDAg
LUZJWEVEX0ZMIC1GTCAzMCAtTUFYIDEwMCAuLi9kYXRhL29yaWcvbG9uZ3NwZWVjaC5wY20gJE9V
VERJUi9vdXRfbmFwaV8xMy5wY20gPj4gJExPR0cKLS4uL1JlbGVhc2Uva2VubnkuZXhlIC4uL2Rh
dGEvb3JpZy9ib3R0bGVuZWNrcy50eHQgLUZJWEVEX0ZMIC1GTCAzMCAtTUFYUkFURSAzMjAwMCAu
Li9kYXRhL29yaWcvbG9uZ3NwZWVjaC5wY20gJE9VVERJUi9vdXRfbmFwaV8xNC5wY20gPj4gJExP
R0cKLS4uL1JlbGVhc2Uva2VubnkuZXhlIDEzMDAwIC1GSVhFRF9GTCAtRkwgNjAgLU1BWCAxMDAg
Li4vZGF0YS9vcmlnL2xvbmdzcGVlY2gucGNtICRPVVRESVIvb3V0X25hcGlfMTUucGNtID4+ICRM
T0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAuLi9kYXRhL29yaWcvYm90dGxlbmVja3MudHh0IC1G
SVhFRF9GTCAtRkwgNjAgLU1BWFJBVEUgMzIwMDAgLi4vZGF0YS9vcmlnL2xvbmdzcGVlY2gucGNt
ICRPVVRESVIvb3V0X25hcGlfMTYucGNtID4+ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAx
MzAwMCAtSU5JVF9SQVRFIDMyMDAwIC1GSVhFRF9GTCAtRkwgNjAgLU1BWCAxMDAgLi4vZGF0YS9v
cmlnL2xvbmdzcGVlY2gucGNtICRPVVRESVIvb3V0X25hcGlfMTcucGNtID4+ICRMT0dHCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNmYXVsdC50eHQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDZmF1bHQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGQ5NDc4ZmQ0OWJmZjUxMDNjZDQyYWM0NTllYTFjOGJh
NGU4NzM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNmYXVsdC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw0MCArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251
bGwgJiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3Rlcgot
Ci1MT0dGSUxFPWxvZ2ZhdWx0LnR4dAotZWNobyAiU1RBUlQgRkFVTFQgVEVTVCIgPiAkTE9HRklM
RQotCi1JU0FDPS4uL1JlbGVhc2Uva2VubnkuZXhlCi1JU0FDRklYRkxPQVQ9Li4vUmVsZWFzZS90
ZXN0Rml4RmxvYXQuZXhlCi0KLUlORklMRVM9JChjYXQgSW5wdXRGaWxlcy50eHQpCi1TVUJTRVQ9
JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi1DSEFOTkVMRklMRVM9JChjYXQgQ2hhbm5lbEZpbGVz
LnR4dCkKLUNIQU5ORUxMSVNUPSgkKGNhdCBDaGFubmVsRmlsZXMudHh0KSkKLUlORElSPS4uL2Rh
dGEvb3JpZwotT1VURElSPS4uL2RhdGFxYWZ0Ci1ta2RpciAtcCAkT1VURElSCi0KLVRBUkdFVFJB
VEU9KDEwMDAwIDE1MDAwIDIwMDAwIDI1MDAwIDMwMDAwIDMyMDAwKQotRkFVTFRURVNUPSgxIDIg
MyA0IDUgNiA3IDkpCi0KLWluZGV4MT0wCi0KLWZpbGU9d2JfY29udHNwZWVjaC5wY20KLQotIyBG
YXVsdCB0ZXN0Ci1mb3IgdGVzdG5yIGluICR7RkFVTFRURVNUWypdfQotICAgZG8KLQkkSVNBQyAz
MjAwMCAtRiAkdGVzdG5yICRJTkRJUi8iJGZpbGUiICRPVVRESVIvZnQkdGVzdG5yIiRmaWxlIiA+
PiAkTE9HRklMRQotZG9uZQotCi0jIEZhdWx0IHRlc3QgbnVtYmVyIDEwLCBlcnJvciBpbiBiaXRz
dHJlYW0KLSAkSVNBQyAzMjAwMCAtRiAxMCAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2Z0MTBfIiRm
aWxlIiA+PiAkTE9HRklMRQotICRJU0FDIDMyMDAwIC1GIDEwIC1QTCAxMCAkSU5ESVIvIiRmaWxl
IiAkT1VURElSL2Z0MTBwbGNfIiRmaWxlIiA+PiAkTE9HRklMRQotICRJU0FDIDMyMDAwIC1GIDEw
IC1OQiAxICRJTkRJUi8iJGZpbGUiICRPVVRESVIvZnQxMG5iMV8iJGZpbGUiID4+ICRMT0dGSUxF
Ci0gJElTQUMgMzIwMDAgLUYgMTAgLU5CIDIgLVBMIDEwICRJTkRJUi8iJGZpbGUiICRPVVRESVIv
ZnQxMG5iMl8iJGZpbGUiID4+ICRMT0dGSUxFCi0KLWVjaG8gRE9ORSEKLQotCi0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNmaXhmbG9hdC50eHQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDZml4ZmxvYXQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWUwMmRmMmU5ZjMzNjYwMjU1ZTYyZTRmNmE2MmMwYWVl
MTE1NjE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNmaXhmbG9hdC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw0NyArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2
L251bGwgJiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3Rl
cgotCi1MT0dGSUxFPWxvZ2Z4ZmwudHh0Ci1lY2hvICJTVEFSVCBGSVgtRkxPQVQgVEVTVCIgPiAk
TE9HRklMRQotCi0KLUlTQUNGSVhGTE9BVD0uLi90ZXN0Rml4RmxvYXQuZXhlCi0KLUlORklMRVM9
JChjYXQgSW5wdXRGaWxlcy50eHQpCi1TVUJTRVQ9JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi1D
SEFOTkVMRklMRVM9JChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkKLUNIQU5ORUxMSVNUPSgkKGNhdCBD
aGFubmVsRmlsZXMudHh0KSkKLUlORElSPS4uL2RhdGEvb3JpZwotT1VURElSPS4uL2RhdGFxYWZ4
ZmwKLW1rZGlyIC1wICRPVVRESVIKLQotaW5kZXgxPTAKLQotZm9yIGZpbGUgaW4gJElORklMRVMg
IyBsb29wIG92ZXIgYWxsIGlucHV0IGZpbGVzCi0gIGRvCi0gIAotICBmb3IgY2hhbm5lbCBpbiAk
Q0hBTk5FTEZJTEVTCi0JZG8KLQlsZXQgImluZGV4MT1pbmRleDErMSIKLQotCSRJU0FDRklYRkxP
QVQgJElORElSLyRjaGFubmVsIC1tIDEgLVBMQyAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2ZsZngk
aW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDRklYRkxPQVQgJElORElSLyRjaGFubmVs
IC1tIDIgLVBMQyAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2Z4ZmwkaW5kZXgxIiRmaWxlIiA+PiAk
TE9HRklMRQotICBkb25lCi0KLWRvbmUKLQotaW5kZXgxPTAKLQotZm9yIGZpbGUgaW4gJFNVQlNF
VCAjIGxvb3Agb3ZlciB0aGUgc3Vic2V0IG9mIGlucHV0IGZpbGVzCi0gIGRvCi0JbGV0ICJpbmRl
eDE9aW5kZXgxKzEiCi0JJElTQUNGSVhGTE9BVCAkSU5ESVIvJGNoYW5uZWwgLW0gMSAtTkIgMSAk
SU5ESVIvIiRmaWxlIiAkT1VURElSL2ZsZnhuYjFfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUK
LQkkSVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5lbCAtbSAyIC1OQiAxICRJTkRJUi8iJGZpbGUi
ICRPVVRESVIvZnhmbG5iMV8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDRklYRkxP
QVQgJElORElSLyRjaGFubmVsIC1tIDEgLU5CIDIgLVBMQyAkSU5ESVIvIiRmaWxlIiAkT1VURElS
L2ZsZnhuYjJfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJWEZMT0FUICRJTkRJ
Ui8kY2hhbm5lbCAtbSAyIC1OQiAyIC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9meGZsbmIy
XyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxFCi1kb25lCi0KLWVjaG8gRE9ORSEKLQotCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vc291cmNlL2VudHJvcHlfY29kaW5nLmMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvaXNhYy9tYWluL3NvdXJjZS9lbnRyb3B5X2NvZGluZy5jCmluZGV4IDI4
NzY3YWZjNjMzYzA5ZWVjNzVhZDA4ZTJjYmY3MTY5OGI0MTE2NDAuLjY2OTJhNTE5Y2E5N2MzMDJk
N2FmNWEwZGViM2JkNTU4NjkyOGVjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21h
aW4vc291cmNlL2VudHJvcHlfY29kaW5nLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi9z
b3VyY2UvZW50cm9weV9jb2RpbmcuYwpAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgdm9pZCBGaW5k
SW52QXJTcGVjKGNvbnN0IGludDE2X3QqIEFSQ29lZlExMiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaW50MzJfdCBnYWluUTEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQzMl90KiBDdXJ2ZVExNikgewogICBpbnQzMl90IENvcnJRMTFbQVJfT1JERVIgKyAxXTsKLSAg
aW50MzJfdCBzdW0sIHRtcEdhaW47CisgIGludDY0X3Qgc3VtLCB0bXBHYWluOwogICBpbnQzMl90
IGRpZmZRMTZbRlJBTUVTQU1QTEVTIC8gOF07CiAgIGNvbnN0IGludDE2X3QqIENTX3B0clE5Owog
ICBpbnQgaywgbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9y
dW5pU0FDTG9uZ3Rlc3QudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi90ZXN0L1FBL3J1bmlT
QUNMb25ndGVzdC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMDUyMjRhMGVj
YzI1NmFlMTE2YTdlOGU5NzQ0ZTdhMDA1MGRhNmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi90ZXN0L1FBL3J1bmlT
QUNMb25ndGVzdC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0MzMgKzAsMCBAQAotIyEvYmluL2Jh
c2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBi
YXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIKLQotCi0KLWlmICBbICIkMSIgPSAieDY0IiBdIHx8
IFsgIiQyIiA9ICJ4NjQiIF0gfHwgWyAiJCMiIC1lcSAwIF0KLSAgICB0aGVuCi0gICAgUExBVEZP
Uk09X1g2NAotICAgIElTQUM9Li4veDY0L1JlbGVhc2UvUmVsZWFzZVRlc3QtQVBJXzIwMDUuZXhl
Ci1lbGlmIFsgIiQxIiA9ICJMSU5VWCIgXSB8fCBbICIkMiIgPSAiTElOVVgiIF0KLSAgICB0aGVu
Ci0gICAgUExBVEZPUk09X2xpbnV4Ci0gICAgSVNBQz0uLi9SZWxlYXNlVGVzdC1BUEkvaXNhY3N3
dGVzdAotZWxzZQotICAgIFBMQVRGT1JNPV8yMDA1Ci0gICAgSVNBQz0uLi93aW4zMi9SZWxlYXNl
L1JlbGVhc2VUZXN0LUFQSV8yMDA1LmV4ZQotZmkKLQotaWYgIFsgIiQjIiAtZXEgMCBdIHx8IFsg
IiQxIiA9ICJhbGwiIF0gfHwgWyAiJDEiID0gIndiIiBdCi0gICAgdGhlbgotICAgIExPR0ZJTEU9
bG9nTm9ybWFsIiRQTEFURk9STSIudHh0Ci0gICAgZWNobyAiU1RBUlQgSVNBQyBXQiBURVNUIiA+
ICRMT0dGSUxFCi0gICAgZWNobyA+PiAkTE9HRklMRQotCi0gICAgSU5GSUxFUz0kKGNhdCBJbnB1
dEZpbGVzLnR4dCkKLSAgICBTVUJTRVQ9JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi0gICAgQ0hB
Tk5FTEZJTEVTPSQoY2F0IENoYW5uZWxGaWxlcy50eHQpCi0gICAgQ0hBTk5FTExJU1Q9KCQoY2F0
IENoYW5uZWxGaWxlcy50eHQpKQotICAgIElORElSPS4uL2RhdGEvb3JpZwotICAgIE9VVERJUj0u
Li9kYXRhcWEiJFBMQVRGT1JNIgotICAgIG1rZGlyIC1wICRPVVRESVIKLSAgICBybSAtZiAkT1VU
RElSLyoKLSAgICAKLSAgICBpZHg9MAotICAgIFJBVEU9MTAwMDAKLSAgICBGUkFNRVNJWkU9MzAK
LSAgICAKLQotICAgIGZvciBmaWxlIGluICRJTkZJTEVTICMgbG9vcCBvdmVyIGFsbCBpbnB1dCBm
aWxlcwotICAgICAgZG8KLSAgICAgIAotICAgICAgZWNobyAiSW5wdXQgZmlsZTogIiAkZmlsZQot
ICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0gICAgICBl
Y2hvICJJbnN0YW50YW5lb3VzIHdpdGggUkFURSAiICRSQVRFICIsIGFuZCBGcmFtZS1zaXplICIg
JEZSQU1FU0laRQotICAgICAgJElTQUMgLUkgLUIgJFJBVEUgLUZMICRGUkFNRVNJWkUgLUZTIDE2
ICRJTkRJUi8iJGZpbGUiICRPVVRESVIvaV8iJEZSQU1FU0laRSJfIiRSQVRFIl8iJGZpbGUiID4+
ICRMT0dGSUxFCi0gICAgICBlY2hvCi0gICAgICAKLSAgICAgIG5hbWU9IiR7Q0hBTk5FTExJU1Rb
JGlkeF19IgotICAgICAgZWNobyAiQWRhcHRpdmUgd2l0aCBjaGFubmVsIGZpbGU6ICIgJG5hbWUg
Ci0gICAgICAKLSAgICAgICRJU0FDIC1CICRJTkRJUi8ke0NIQU5ORUxMSVNUWyRpZHhdfSAtRlMg
MTYgJElORElSLyIkZmlsZSIgJE9VVERJUi9hXyR7bmFtZSUuKn1fIiRmaWxlIiA+PiAkTE9HRklM
RQotICAgICAgCi0gICAgICBlY2hvCi0gICAgICBlY2hvCi0gICAgICAKLSMgICAgIGFsdGVybmF0
ZSBiZXR3ZWVuIDMwICYgNjAgbXMuCi0gICAgICBpZiBbICRGUkFNRVNJWkUgLWVxIDMwIF0KLQkg
IHRoZW4KLQkgIEZSQU1FU0laRT02MAotICAgICAgZWxzZQotCSAgRlJBTUVTSVpFPTMwCi0gICAg
ICBmaQotICAgICAgCi0jICAgICByYXRlIGJldHdlZW4gMTAwMDAgdG8gMzIwMDAgYml0cy9zZWMK
LSAgICAgIGlmIFsgJFJBVEUgLWxlIDMwMDAwIF0KLQkgIHRoZW4KLQkgIGxldCAiUkFURT1SQVRF
KzIwMDAiCi0gICAgICBlbHNlCi0JICBsZXQgIlJBVEU9MTAwMDAiCi0gICAgICBmaQotICAgICAg
Ci0jICAgICB0aGVyZSBhcmUgb25seSB0aHJlZSBjaGFubmVsIGZpbGUKLSAgICAgIGlmIFsgJGlk
eCAtZ2UgMiBdOyB0aGVuCi0JICBpZHg9MAotICAgICAgZWxzZQotCSAgbGV0ICJpZHg9aWR4KzEi
Ci0gICAgICBmaQotICAgICAgCi0gICAgZG9uZQotCi0gICAgaWR4PTAKLSAgICAKLSMgICBsb29w
IG92ZXIgdGhlIHN1YnNldCBvZiBpbnB1dCBmaWxlcwotICAgIGZvciBmaWxlIGluICRTVUJTRVQg
Ci0gICAgICBkbwotICAgICAgCi0gICAgICBpZiBbICRpZHggLWVxIDAgXTsgdGhlbgotCSAgJElT
QUMgLUIgJElORElSLyR7Q0hBTk5FTExJU1RbMF19IC1GTCAzMCAtRklYRURfRkwgLUZTIDE2ICRJ
TkRJUi8iJGZpbGUiICRPVVRESVIvYTMwXyIkZmlsZSIgPj4gJExPR0ZJTEUKLQkgIGlkeD0xCi0g
ICAgICBlbHNlCi0JICAkSVNBQyAtQiAkSU5ESVIvJHtDSEFOTkVMTElTVFswXX0gLUZMIDYwIC1G
SVhFRF9GTCAtRlMgMTYgJElORElSLyIkZmlsZSIgJE9VVERJUi9hNjBfIiRmaWxlIiA+PiAkTE9H
RklMRQotCSAgaWR4PTAKLSAgICAgIGZpCi0gICAgZG9uZQotCi0gICAgJElTQUMgLUIgJElORElS
LyR7Q0hBTk5FTExJU1RbMF19IC1JTklUUkFURSAyNTAwMCAtRkwgMzAgLUZTIDE2ICRJTkRJUi8i
JGZpbGUiICRPVVRESVIvYTYwX0luaXQyNWticHNfIiRmaWxlIiA+PiAkTE9HRklMRQotCi0gICAg
ZWNobwotICAgIGVjaG8gV0lERUJBTkQgRE9ORSEKLSAgICBlY2hvCi0gICAgZWNobwotZmkKLQot
aWYgIFsgIiQjIiAtZXEgMCBdIHx8IFsgIiQxIiA9ICJhbGwiIF0gfHwgWyAiJDEiID0gInN3YiIg
XQotICAgIHRoZW4KLQotICAgIExPR0ZJTEU9bG9nTm9ybWFsX1NXQiIkUExBVEZPUk0iLnR4dAot
ICAgIGVjaG8gIlNUQVJUIElTQUMgU1dCIFRFU1QiID4gJExPR0ZJTEUKLSAgICBlY2hvID4+ICRM
T0dGSUxFCi0KLSAgICBlY2hvIFNUQVJUSU5HIFRPIFRFU1QgU1VQRVItV0lERUJBTkQKLSAgICAK
LSAgICBJTkZJTEVTPSQoY2F0IElucHV0RmlsZXNTV0IudHh0KQotICAgIElORElSPS4uL2RhdGEv
b3JpZ3N3YgotICAgIE9VVERJUj0uLi9kYXRhcWFzd2IiJFBMQVRGT1JNIgotICAgIG1rZGlyIC1w
ICRPVVRESVIKLSAgICBybSAtZiAkT1VURElSLyoKLSAgICAKLSAgICBmb3IgZmlsZSBpbiAkSU5G
SUxFUwotICAgICAgZG8KLSAgICAgIGVjaG8KLSAgICAgIGVjaG8gIklucHV0IGZpbGU6ICIgJGZp
bGUKLSAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotICAgICAg
Zm9yIFJBVEUgaW4gMTIwMDAgMjAwMDAgMzIwMDAgMzgwMDAgNDUwMDAgNTAwMDAgNTYwMDAgIAot
CWRvCi0JCi0JZWNobyAiUmF0ZSAiICRSQVRFCi0JJElTQUMgLUkgLUIgJFJBVEUgLUZMIDMwIC1G
UyAzMiAkSU5ESVIvIiRmaWxlIiAkT1VURElSL3N3Yl8iJFJBVEUiXyIkZmlsZSIgPj4gJExPR0ZJ
TEUKLQllY2hvCi0JCi0gICAgICBkb25lCi0gIAotICAgIGRvbmUKLWZpCi0KLWlmICBbICIkIyIg
LWVxIDAgXSB8fCBbICIkMSIgPSAiYWxsIiBdIHx8IFsgIiQxIiA9ICJBUEkiIF0KLSAgICB0aGVu
Ci0KLSAgICBMT0dGSUxFX0FQST1sb2dOb3JtYWxfQVBJIiRQTEFURk9STSIudHh0Ci0gICAgZWNo
bwotICAgIGVjaG8KLSAgICBlY2hvICJTVEFSVCBJU0FDIEFQSSBURVNUIiA+ICRMT0dGSUxFX0FQ
SQotICAgIGVjaG8gPj4gJExPR0ZJTEVfQVBJCi0gICAgaWR4PTEKLSAgICBlY2hvICIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGVzdCBFbmZvcmNlbWVudCBvZiBmcmFtZS1zaXplIgotICAg
IGVjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCi0gICAgbWtkaXIgLXAgLi4v
RnJhbWVTaXplTGltIiRQTEFURk9STSIKLSAgICBybSAtZiAuLi9GcmFtZVNpemVMaW0iJFBMQVRG
T1JNIi8qCi0gICAgZWNobwotICAgIGVjaG8gIi0tIE5vIGVuZm9yY2VtZW50OyBCTiAxMDAwMCIK
LSAgICBlY2hvCi0gICAgJElTQUMgLUIgMTAwMDAgLUZTIDE2IC4uL2RhdGEvb3JpZy9zcGVlY2hf
YW5kX21pc2NfV0IucGNtIFwKLQkuLi9GcmFtZVNpemVMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIk
aWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwot
ICAgIGVjaG8KLSAgICBlY2hvICItLSBOb3cgRW5mb3JjZSAzMCBtcyBmcmFtZSBzaXplIHdpdGgg
dGhlIHNhbWUgYm90dGxlbmVjayIKLSAgICBlY2hvICJUaGVyZSBzaG91bGQgbm90IGJlIGFueSA2
MCBtcyBmcmFtZSIKLSAgICBlY2hvCi0gICAgJElTQUMgLUIgMTAwMDAgLUZMIDMwIC1GSVhFRF9G
TCAtRlMgMTYgLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gXAotCS4uL0ZyYW1l
U2l6ZUxpbSIkUExBVEZPUk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAg
ICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gIi0tIE5vIGVu
Zm9yY2VtZW50OyBCTiAzMjAwMCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUIgMzIwMDAgLUZTIDE2
IC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNtIFwKLQkuLi9GcmFtZVNpemVMaW0i
JFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJp
ZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSBOb3cgRW5mb3JjZSA2
MCBtcyBmcmFtZSBzaXplIHdpdGggdGhlIHNhbWUgYm90dGxlbmVjayIKLSAgICBlY2hvICJUaGVy
ZSBzaG91bGQgbm90IGJlIGFueSAzMCBtcyBmcmFtZSIKLSAgICBlY2hvIAotICAgICRJU0FDIC1C
IDMyMDAwIC1GTCA2MCAtRklYRURfRkwgLUZTIDE2IC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21p
c2NfV0IucGNtIFwKLQkuLi9GcmFtZVNpemVMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5w
Y20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVj
aG8KLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8KLQotICAgIGVjaG8gIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRlc3QgTGltaXRpbmcgb2YgUGF5bG9hZCBTaXplIGFuZCBSYXRlIgot
ICAgIGVjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCi0gICAgbWtkaXIgLXAg
Li4vUGF5bG9hZExpbSIkUExBVEZPUk0iCi0gICAgcm0gLWYgLi4vUGF5bG9hZExpbSIkUExBVEZP
Uk0iLyoKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gIi0tIE5vIExpbWl0LCBmcmFtZS1z
aXplIDYwIG1zLCBXSURFQkFORCIKLSAgICBlY2hvIAotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1G
TCA2MCAtRlMgMTYgICAgICAgICAgICAgICAgLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19X
Qi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4g
JExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAg
ICBlY2hvICItLSBQYXlsb2FkLXNpemUgbGltaXQgb2YgMjUwLCBmcmFtZS1zaXplIDYwIG1zLCBX
SURFQkFORCIKLSAgICBlY2hvIAotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1GTCA2MCAtRlMgMTYg
LU1BWCAyNTAgICAgICAgLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gXAotCS4u
L1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJ
Ci0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSBS
YXRlIGxpbWl0IG9mIDMzIGticHMgZm9yIDYwIG1zIGZyYW1lLXNpemUiCi0gICAgZWNobwotICAg
ICRJU0FDIC1JIC1CIDMyMDAwIC1GTCA2MCAtRlMgMTYgLU1BWFJBVEUgMzMwMDAgLi4vZGF0YS9v
cmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9B
UElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0g
ICAgZWNobyAKLSAgICBlY2hvICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXyIKLSAgICBlY2hvCi0gICAgZWNobwotCi0gICAgZWNobyAiLS0g
Tm8gTGltaXQsIGZyYW1lLXNpemUgMzAgbXMsIFdJREVCQU5EIgotICAgIGVjaG8gCi0gICAgJElT
QUMgLUkgLUIgMzIwMDAgLUZMIDMwIC1GUyAxNiAgICAgICAgICAgICAgICAuLi9kYXRhL29yaWcv
c3BlZWNoX2FuZF9taXNjX1dCLnBjbSBcCi0JLi4vUGF5bG9hZExpbSIkUExBVEZPUk0iL0FQSVRl
c3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBl
Y2hvCi0gICAgZWNobyAgICAKLSAgICBlY2hvICItLSBQYXlsb2FkLXNpemUgbGltaXQgb2YgMTMw
LCBmcmFtZS1zaXplIDMwIG1zLCBXSURFQkFORCIKLSAgICBlY2hvIAotICAgICRJU0FDIC1JIC1C
IDMyMDAwIC1GTCAzMCAtRlMgMTYgLU1BWCAxMzAgICAgICAgLi4vZGF0YS9vcmlnL3NwZWVjaF9h
bmRfbWlzY19XQi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4
Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAg
IGVjaG8KLSAgICBlY2hvICItLSBSYXRlIGxpbWl0IG9mIDMzIGticHMgZm9yIDMwIG1zIGZyYW1l
LXNpemUsIHdpZGViYW5kIgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgMzAg
LUZTIDE2IC1NQVhSQVRFIDMzMDAwIC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNt
IFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dG
SUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvICJfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIKLSAgICBl
Y2hvCi0gICAgZWNobwotCi0gICAgZWNobyAiLS0gTm8gbGltaXQgZm9yIDMyIGticHMsIDMwIG1z
LCBTVVBFUi1XSURFQkFORCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUkgLUIgMzIwMDAgLUZMIDMw
IC1GUyAzMiAgICAgICAgICAuLi9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSBcCi0JLi4vUGF5
bG9hZExpbSIkUExBVEZPUk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAg
ICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gIi0tIFBheWxv
YWQgbGltaXQgb2YgMTMwIGJ5dGVzIGZvciAzMiBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQi
Ci0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1GTCAzMCAtRlMgMzIgLU1BWCAxMzAg
Li4vZGF0YS9vcmlnc3diL2pzdGVzdF8zMi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JN
Ii9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEi
Ci0gICAgZWNobwotICAgIGVjaG8gIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fIgotICAgIGVjaG8KLSAgICBlY2hvCi0KLSAgICBlY2hvICIt
LSBObyBsaW1pdCwgUmF0ZSA0NSBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQsIDEyIGtIeiIK
LSAgICBlY2hvCi0gICAgJElTQUMgLUkgLUIgNDUwMDAgLUZMIDMwIC1GUyAzMiAgICAgICAgICAg
ICAgIC4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFU
Rk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlk
eCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gUmF0ZSBsaW1pdCBvZiA0NiBr
YnBzIGZvciA0MiBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQsIDEyIGtIeiIKLSAgICBlY2hv
Ci0gICAgJElTQUMgLUkgLUIgNDUwMDAgLUZMIDMwIC1GUyAzMiAtTUFYUkFURSA0NjAwMCAuLi9k
YXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSBcCi0JLi4vUGF5bG9hZExpbSIkUExBVEZPUk0iL0FQ
SVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAg
ICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gIi0tIFBheWxvYWQgbGltaXQgb2YgMTcwIGJ5dGVz
IGZvciA0NSBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQsIDEyIGtIeiIKLSAgICBlY2hvCi0g
ICAgJElTQUMgLUkgLUIgNDUwMDAgLUZMIDMwIC1GUyAzMiAtTUFYIDE3MCAgICAgICAuLi9kYXRh
L29yaWdzd2IvanN0ZXN0XzMyLnBjbSBcCi0JLi4vUGF5bG9hZExpbSIkUExBVEZPUk0iL0FQSVRl
c3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBl
Y2hvCi0gICAgZWNobyAiX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18iCi0gICAgZWNobwotICAgIGVjaG8KLSAgCi0gICAgZWNobyAiLS0gTm8g
bGltaXQgZm9yIDU2IGticHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCwgMTYga0h6IgotICAgIGVj
aG8KLSAgICAkSVNBQyAtSSAtQiA1NjAwMCAtRkwgMzAgLUZTIDMyICAgICAgICAgICAgICAgIC4u
L2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIv
QVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgot
ICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gUGF5bG9hZCBsaW1pdCBvZiAyMDAgYnl0
ZXMgZm9yIDU2IGticHMgMzAgbXMsIFNVUEVSLVdJREVCQU5ELCAxNiBrSHoiCi0gICAgZWNobwot
ICAgICRJU0FDIC1JIC1CIDU2MDAwIC1GTCAzMCAtRlMgMzIgLU1BWCAyMDAgICAgICAgLi4vZGF0
YS9vcmlnc3diL2pzdGVzdF8zMi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElU
ZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAg
ZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSBSYXRlIGxpbWl0IG9mIDU3IGticHMgZm9yIDU2
IGticHMgMzAgbXMsIFNVUEVSLVdJREVCQU5ELCAxNiBrSHoiCi0gICAgZWNobwotICAgICRJU0FD
IC1JIC1CIDU2MDAwIC1GTCAzMCAtRlMgMzIgLU1BWFJBVEUgNTcwMDAgLi4vZGF0YS9vcmlnc3di
L2pzdGVzdF8zMi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4
Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAg
IGVjaG8gIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hv
Ci0gICAgCi0gICAgZWNobyAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVz
dCBUcmFucy1Db2RpbmciCi0gICAgZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PSIKLSAgICBta2RpciAtcCAuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iCi0gICAgcm0gLWYgLi4v
VHJhbnNjb2RpbmciJFBMQVRGT1JNIi8qCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICIt
LSAyMCBrYnBzLCAzMCBtcywgV0lERUJBTkQiCi0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDIw
MDAwIC1GTCAzMCAtRlMgMTYgICAgICAgICAgLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19X
Qi5wY20gXAotCS4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF9yZWZUcmFuczIwV0Iu
cGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBl
Y2hvCi0gICAgCi0gICAgZWNobyAiLS0gMzIga2JwcyB0cmFucy1jb2RpbmcgdG8gMjAga2Jwcywg
MzAgbXMsIFdJREVCQU5EIgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgMzAg
LUZTIDE2ICAtVCAyMDAwMCAgLi4vVHJhbnNjb2RpbmciJFBMQVRGT1JNIi9BUElUZXN0XzMyVDIw
LnBjbSBcCi0JLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vVHJhbnNjb2Rp
bmciJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0
ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8gIl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIgotCi0gICAgZWNobwotICAgIGVjaG8K
LSAgICBlY2hvICItLSAzOCBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQiCi0gICAgZWNobwot
ICAgICRJU0FDIC1JIC1CIDM4MDAwIC1GTCAzMCAtRlMgMzIgICAgICAgICAgLi4vZGF0YS9vcmln
c3diL2pzdGVzdF8zMi5wY20gXAotCS4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF9y
ZWZUcmFuczM4LnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBl
Y2hvCi0gICAgZWNobwotICAgIAotICAgIGVjaG8gIi0tIDQ1IGticHMgdHJhbnMtY29kaW5nIHRv
IDM4IGticHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUkg
LUIgNDUwMDAgLUZMIDMwIC1GUyAzMiAgLVQgMzgwMDAgIC4uL1RyYW5zY29kaW5nIiRQTEFURk9S
TSIvQVBJVGVzdF80NVQzOC5wY20gXAotCS4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIC4u
L1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQ
SQotICAgIGxldCAiaWR4PWlkeCsxIgotIAotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAi
LS0gMjAga2JwcywgMzAgbXMsIFNVUEVSLVdJREVCQU5EIgotICAgIGVjaG8KLSAgICAkSVNBQyAt
SSAtQiAyMDAwMCAtRkwgMzAgLUZTIDMyICAgICAgICAgIC4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3Rf
MzIucGNtIFwKLQkuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3RfcmVmVHJhbnMyMFNX
Qi5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0KLSAgICBlY2hvCi0g
ICAgZWNobwotICAgIAotICAgIGVjaG8gIi0tIDQ1IGticHMgdHJhbnMtY29kaW5nIHRvIDIwIGti
cHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUkgLUIgNDUw
MDAgLUZMIDMwIC1GUyAzMiAgLVQgMjAwMDAgIC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJ
VGVzdF80NVQyMC5wY20gXAotCS4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIC4uL1RyYW5z
Y29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAg
IGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvICJfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIKLSAgICBlY2hvCi0gICAgZWNo
bwotICAgIGVjaG8gIi0tIDUwIGticHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCIKLSAgICBlY2hv
Ci0gICAgJElTQUMgLUkgLUIgNTAwMDAgLUZMIDMwIC1GUyAzMiAgICAgICAgICAuLi9kYXRhL29y
aWdzd2IvanN0ZXN0XzMyLnBjbSBcCi0JLi4vVHJhbnNjb2RpbmciJFBMQVRGT1JNIi9BUElUZXN0
X3JlZlRyYW5zNTAucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAg
IGVjaG8KLSAgICBlY2hvCi0gICAgCi0gICAgZWNobyAiLS0gNTYga2JwcyB0cmFucy1jb2Rpbmcg
dG8gNTAga2JwcywgMzAgbXMsIFNVUEVSLVdJREVCQU5EIgotICAgIGVjaG8KLSAgICAkSVNBQyAt
SSAtQiA1NjAwMCAtRkwgMzAgLUZTIDMyICAtVCA1MDAwMCAgLi4vVHJhbnNjb2RpbmciJFBMQVRG
T1JNIi9BUElUZXN0XzU2VDUwLnBjbSBcCi0JLi4vZGF0YS9vcmlnc3diL2pzdGVzdF8zMi5wY20g
Li4vVHJhbnNjb2RpbmciJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVf
QVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAgICAKLSAgICBl
Y2hvICItLSA1NiBrYnBzIHRyYW5zLWNvZGluZyB0byAyMCBrYnBzLCAzMCBtcywgU1VQRVItV0lE
RUJBTkQiCi0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDU2MDAwIC1GTCAzMCAtRlMgMzIgIC1U
IDIwMDAwIC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF81NlQyMC5wY20gXAotCS4u
L2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJ
VGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAg
IGVjaG8KLSAgICBlY2hvICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXyIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gCi0gICAgZWNo
bwotICAgIGVjaG8KLSAgICAKLSAgICBlY2hvICIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRlc3QgRkVDIgotICAgIGVjaG8gIj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0iCi0gICAgbWtkaXIgLXAgLi4vRkVDIiRQTEFURk9STSIKLSAgICBybSAtZiAuLi9G
RUMiJFBMQVRGT1JNIi8qCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSAzMiBrYnBz
IHdpdGggdHJhbnNjb2RpbmcgdG8gMjBrYnBzLCAzMCBtcywgV0lERUJBTkQsIDEwJSBwYWNrZXQg
bG9zcyIKLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgMzAgLUZTIDE2IC1QTCAxMCAtVCAyMDAw
MCAuLi9GRUMiJFBMQVRGT1JNIi9BUElUZXN0X1BMMTBfV0IzMF9UMjAucGNtIFwKLQkuLi9kYXRh
L29yaWcvc3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9GRUMiJFBMQVRGT1JNIi9BUElUZXN0X1BM
MTBfV0IzMC5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNo
bwotICAgIGVjaG8KLSAgICAKLSAgICBlY2hvICItLSAzMiBrYnBzLCA2MCBtcywgV0lERUJBTkQs
IDEwJSBwYWNrZXQgbG9zcyIKLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgNjAgLUZTIDE2IC1Q
TCAxMCAuLi9kYXRhL29yaWcvc3BlZWNoX2FuZF9taXNjX1dCLnBjbSBcCi0JLi4vRkVDIiRQTEFU
Rk9STSIvQVBJVGVzdF9QTDEwX1dCNjAucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4
PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgCi0gICAgZWNobyAiLS0gMzIga2JwcyB3
aXRoIHRyYW5zY29kaW5nIHRvIDIwIGticHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCwgMTAlIHBh
Y2tldCBsb3NzIgotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1GTCAzMCAtRlMgMzIgLVBMIDEwIC1U
IDIwMDAwIC4uL0ZFQyIkUExBVEZPUk0iL0FQSVRlc3RfUEwxMF9TV0JfOGtIel9UMjAucGNtIFwK
LQkuLi9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSAuLi9GRUMiJFBMQVRGT1JNIi9BUElUZXN0
X1BMMTBfU1dCXzhrSHoucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgot
ICAgIGVjaG8KLSAgICBlY2hvCi0KLSAgICBlY2hvICItLSA0NSBrYnBzIHdpdGggVHJhc2NvZGlu
ZyB0byAzOCBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQsIDEwJSBwYWNrZXQgbG9zcyIKLSAg
ICAkSVNBQyAtSSAtQiA0NTAwMCAtRkwgMzAgLUZTIDMyIC1QTCAxMCAtVCAzODAwMCAuLi9GRUMi
JFBMQVRGT1JNIi9BUElUZXN0X1BMMTBfU1dCXzEya0h6X1QzOC5wY20gXAotCS4uL2RhdGEvb3Jp
Z3N3Yi9qc3Rlc3RfMzIucGNtIC4uL0ZFQyIkUExBVEZPUk0iL0FQSVRlc3RfUEwxMF9TV0JfMTJr
SHoucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAg
ICBlY2hvCi0KLSAgICBlY2hvICItLSA1NiBrYnBzIHdpdGggdHJhbnNjb2RpbmcgdG8gNTAga2Jw
cywgMzAgbXMsIFNVUEVSLVdJREVCQU5ELCAxMCUgcGFja2V0IGxvc3MiCi0gICAgJElTQUMgLUkg
LUIgNTYwMDAgLUZMIDMwIC1GUyAzMiAtUEwgMTAgLVQgNTAwMDAgLi4vRkVDIiRQTEFURk9STSIv
QVBJVGVzdF9QTDEwX1NXQl8xNmtIel9UNTAucGNtIFwKLQkuLi9kYXRhL29yaWdzd2IvanN0ZXN0
XzMyLnBjbSAuLi9GRUMiJFBMQVRGT1JNIi9BUElUZXN0X1BMMTBfU1dCXzE2a0h6LnBjbSA+PiAk
TE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotZmkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9ydW5pU0FDZmF1bHQu
dHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi90ZXN0L1FBL3J1bmlTQUNmYXVsdC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzODI5YTRiOTgzNGVjMzJmMjRmOGJkOWY3ODNl
YWJiNWJkZDI5YmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi90ZXN0L1FBL3J1bmlTQUNmYXVsdC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4v
ZGV2L251bGwgJiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJh
Y3Rlcj8/Pz8/ID8/Pz8/PyAKLWlmICBbICIkMSIgPSAieDY0IiBdIHx8IFsgIiQjIiAtZXEgMCBd
Ci0gICAgdGhlbgotICAgIFBMQVRGT1JNPV9YNjQKLSAgICBJU0FDPS4uL3g2NC9SZWxlYXNlL1Jl
bGVhc2VUZXN0LUFQSV8yMDA1LmV4ZQotZWxpZiBbICIkMSIgPSAiMjAwNSIgXQotCXRoZW4KLSAg
ICBQTEFURk9STT1fMjAwNQotICAgIElTQUM9Li4vd2luMzIvUmVsZWFzZS9SZWxlYXNlVGVzdC1B
UElfMjAwNS5leGUKLWVsaWYgWyAiJDEiID09ICJMSU5VWCIgXQotCXRoZW4KLSAgICBQTEFURk9S
TT1fbGludXgKLSAgICBJU0FDPS4uL1JlbGVhc2VUZXN0LUFQSS9pc2Fjc3d0ZXN0Ci1lbHNlCi0J
ZWNobyBVbmtub3duIFBsYXRmb3JtCi0JZXhpdCAyCi1maQotCi1MT0dGSUxFPWxvZ2ZhdWx0JFBM
QVRGT1JNLnR4dAotZWNobyAiU1RBUlQgRkFVTFQgVEVTVCIgPiAkTE9HRklMRQotCi0KLUlORklM
RVM9JChjYXQgSW5wdXRGaWxlcy50eHQpCi1TVUJTRVQ9JChjYXQgSW5wdXRGaWxlc0Zldy50eHQp
Ci1DSEFOTkVMRklMRVM9JChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkKLUNIQU5ORUxMSVNUPSgkKGNh
dCBDaGFubmVsRmlsZXMudHh0KSkKLUlORElSPS4uL2RhdGEvb3JpZwotSU5ESVJTV0I9Li4vZGF0
YS9vcmlnc3diCi1PVVRESVI9Li4vZGF0YXFhZnQkUExBVEZPUk0KLW1rZGlyIC1wICRPVVRESVIK
LQotI21heGltdW0gVGFyZ2V0IHJhdGUgZm9yIGRpZmZlcmVudCBiYW5kd2lkdGgKLVRBUkdFVFJB
VEU9KCAzMjAwMCAzMjAwMCA0NDAwMCA1NjAwMCApCi1TQU1QRlJFUT0oIDE2IDMyIDMyIDMyICkK
LUZBVUxUVEVTVD0oMSAyIDMgNCA1IDYgNyA5KQotCi1pbmRleDE9MAotCi1maWxlX3diPS4uL2Rh
dGEvb3JpZy8xNmtIei5wY20KLWZpbGVfc3diPS4uL2RhdGEvb3JpZ3N3Yi8zMmtIei5wY20KLQot
Zm9yIGlkeCBpbiAwIDEgMiAzIAotICBkbwotIyBGYXVsdCB0ZXN0Ci0gIGVjaG8KLSAgZWNobyAi
U2FtcGxpbmcgRnJlcXVlbmN5ICIgJHtTQU1QRlJFUVtpZHhdfSAia0h6LCBSYXRlICIgJHtUQVJH
RVRSQVRFW2lkeF19ICJicHMuIgotICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0gIGlmIFsgJHtTQU1QRlJFUVtpZHhdfSAtZXEgMTYg
XTsgdGhlbgotICAgIGZpbGU9JGZpbGVfd2IKLSAgZWxzZQotICAgIGZpbGU9JGZpbGVfc3diCi0g
IGZpCi0KLSAgZm9yIHRlc3RuciBpbiAke0ZBVUxUVEVTVFsqXX0KLSAgICBkbwotICAgIGVjaG8g
IlJ1bm5pbmcgRmF1bHQgVGVzdCAiICR0ZXN0bnIKLSAgICAkSVNBQyAtSSAtQiAiJHtUQVJHRVRS
QVRFW2lkeF19IiAtRiAkdGVzdG5yIC1GUyAiJHtTQU1QRlJFUVtpZHhdfSIgIiRmaWxlIiBcCi0J
JE9VVERJUi9mdCIkdGVzdG5yIl8iJHtUQVJHRVRSQVRFW2lkeF19Il8iJHtTQU1QRlJFUVtpZHhd
fSIucGNtID4+IExPR0ZJTEUKLSAgICBlY2hvCi0gICAgCi0gIGRvbmUKLSAgCi0jIEZhdWx0IHRl
c3QgbnVtYmVyIDEwLCBlcnJvciBpbiBiaXRzdHJlYW0KLSAgZWNobyAiUnVubmluZyBGYXVsdCBU
ZXN0IDEwIgotICAkSVNBQyAtSSAtQiAiJHtUQVJHRVRSQVRFW2lkeF19IiAtRiAxMCAgICAgICAg
LUZTICIke1NBTVBGUkVRW2lkeF19IiAiJGZpbGUiIFwKLSAgICAkT1VURElSL2Z0MTBfIiR7VEFS
R0VUUkFURVtpZHhdfSJfIiR7U0FNUEZSRVFbaWR4XX0iLnBjbSA+PiBMT0dGSUxFCi0gIGVjaG8K
LSAgZWNobyAiUnVubmluZyBGYXVsdCBUZXN0IDEwIHdpdGggcGFja2V0bG9zcyIKLSAgJElTQUMg
LUkgLUIgIiR7VEFSR0VUUkFURVtpZHhdfSIgLUYgMTAgLVBMIDEwIC1GUyAiJHtTQU1QRlJFUVtp
ZHhdfSIgIiRmaWxlIiBcCi0gICAgJE9VVERJUi9mdDEwcGxjXyIke1RBUkdFVFJBVEVbaWR4XX0i
XyIke1NBTVBGUkVRW2lkeF19Ii5wY20gPj4gTE9HRklMRQotICBlY2hvCi1kb25lCi0KLWVjaG8g
Ci1lY2hvCi1lY2hvIERPTkUhCi0gIAotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2Fj
L21haW4vdGVzdC9RQS9ydW5pU0FDZml4ZmxvYXQudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFp
bi90ZXN0L1FBL3J1bmlTQUNmaXhmbG9hdC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDRjZGE3OGU0ZmVhNmI1M2E3OWZmNzQwOTkzNWU3NjQxMjg0YjkyNzguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFp
bi90ZXN0L1FBL3J1bmlTQUNmaXhmbG9hdC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCww
IEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwgJiYgc2V0IC1vIGln
bmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3RlcgotCi1MT0dGSUxFPWxvZ2Z4
ZmwudHh0Ci1lY2hvICJTVEFSVCBGSVgtRkxPQVQgVEVTVCIgPiAkTE9HRklMRQotCi0KLUlTQUNG
SVhGTE9BVD0uLi8uLi8uLi9maXgvdGVzdC90ZXN0Rml4RmxvYXQuZXhlCi0KLUlORklMRVM9JChj
YXQgSW5wdXRGaWxlcy50eHQpCi1TVUJTRVQ9JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi1DSEFO
TkVMRklMRVM9JChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkKLUNIQU5ORUxMSVNUPSgkKGNhdCBDaGFu
bmVsRmlsZXMudHh0KSkKLUlORElSPS4uL2RhdGEvb3JpZwotT1VURElSPS4uL2RhdGFxYWZ4ZmwK
LW1rZGlyIC1wICRPVVRESVIKLQotaW5kZXgxPTAKLQotZm9yIGZpbGUgaW4gJElORklMRVMgIyBs
b29wIG92ZXIgYWxsIGlucHV0IGZpbGVzCi0gIGRvCi0gIAotICBmb3IgY2hhbm5lbCBpbiAkQ0hB
Tk5FTEZJTEVTCi0JZG8KLQlsZXQgImluZGV4MT1pbmRleDErMSIKLQotCSRJU0FDRklYRkxPQVQg
JElORElSLyRjaGFubmVsIC1tIDEgLVBMQyAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2ZsZngkaW5k
ZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDRklYRkxPQVQgJElORElSLyRjaGFubmVsIC1t
IDIgLVBMQyAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2Z4ZmwkaW5kZXgxIiRmaWxlIiA+PiAkTE9H
RklMRQotICBkb25lCi0KLWRvbmUKLQotaW5kZXgxPTAKLQotZm9yIGZpbGUgaW4gJFNVQlNFVCAj
IGxvb3Agb3ZlciB0aGUgc3Vic2V0IG9mIGlucHV0IGZpbGVzCi0gIGRvCi0JbGV0ICJpbmRleDE9
aW5kZXgxKzEiCi0JJElTQUNGSVhGTE9BVCAkSU5ESVIvJGNoYW5uZWwgLW0gMSAtTkIgMSAkSU5E
SVIvIiRmaWxlIiAkT1VURElSL2ZsZnhuYjFfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkk
SVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5lbCAtbSAyIC1OQiAxICRJTkRJUi8iJGZpbGUiICRP
VVRESVIvZnhmbG5iMV8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDRklYRkxPQVQg
JElORElSLyRjaGFubmVsIC1tIDEgLU5CIDIgLVBMQyAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2Zs
ZnhuYjJfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJWEZMT0FUICRJTkRJUi8k
Y2hhbm5lbCAtbSAyIC1OQiAyIC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9meGZsbmIyXyRp
bmRleDEiJGZpbGUiID4+ICRMT0dGSUxFCi1kb25lCi0KLWVjaG8gRE9ORSEKLQotCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9sZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9sZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZS5jYwppbmRleCAwYmYzYjE5YTNiMTdj
YjM0NmJjY2Q4ODc3NjJhMjc3YjJlYzFlNDA1Li5kOWVmYzIxMWRhM2RhYzY4MDBiMjFiNWQ5Nzlk
YjkxYmQ2ZGU2ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvbGVnYWN5X2VuY29kZWRfYXVk
aW9fZnJhbWUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2xlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1l
LmNjCkBAIC0xNCw2ICsxNCw4IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxp
dHk+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKIExlZ2FjeUVuY29kZWRBdWRpb0ZyYW1lOjpMZWdhY3lFbmNvZGVkQXVkaW9GcmFtZShBdWRp
b0RlY29kZXIqIGRlY29kZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvbGVnYWN5X2VuY29k
ZWRfYXVkaW9fZnJhbWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9sZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFt
ZS5oCmluZGV4IDA1ZDRmZTQ4OWM5MWRlMGEzYzA2YmRkYjZjZmZmZjRmYjIwNWM4NWMuLjQxYjA4
Zjc4OThlMmU4ZmJmOTY0Y2NiMzFmZTIxMzQ5MTM1ZWMwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9sZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9sZWdh
Y3lfZW5jb2RlZF9hdWRpb19mcmFtZS5oCkBAIC0xMSwxMCArMTEsMTQgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19DT0RJTkdfQ09ERUNTX0xFR0FDWV9FTkNPREVEX0FVRElPX0ZSQU1FX0hfCiAj
ZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19MRUdBQ1lfRU5DT0RFRF9BVURJT19G
UkFNRV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1
ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19k
ZWNvZGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuY2MKaW5kZXggMzAyYjcx
NDAzMTk2YWFkZTg2YmIzM2ZiMWQ0ZDhmNDljNzc4ZDI2ZS4uMzU3Y2IxYTIwZGE3OTlkZDAyODhk
ZDFmZmU4NDQ2Yzc1OTU4YmE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9f
ZGVjb2Rlcl9vcHVzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1
cy5jYwpAQCAtMTAsOCArMTAsMTEgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5oIgogCisjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisj
aW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRp
b19kZWNvZGVyX29wdXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5o
CmluZGV4IDcwYWE0MGJkYzQ2YjAxZTg4YjlmZjBhYTBmNWZjZWMyN2Y3ZTAwZWMuLjgwNDM0MjUy
NDNjZDllZDU2NGI3MDRjZTMzMjMzMTA5Mzk0NmViNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlv
X2RlY29kZXJfb3B1cy5oCkBAIC0xMSw4ICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElP
X0NPRElOR19DT0RFQ1NfT1BVU19BVURJT19ERUNPREVSX09QVVNfSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19DT0RJTkdfQ09ERUNTX09QVVNfQVVESU9fREVDT0RFUl9PUFVTX0hfCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9vcHVzX2ludGVyZmFjZS5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFn
aWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1
cy9hdWRpb19lbmNvZGVyX29wdXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVy
X29wdXMuY2MKaW5kZXggZTYyNDBlNjk4MjZhMTQwZjg2ODE4Y2M3MzcyMDNjMDgxNmM4NTVkZS4u
MWE4OGFjZjNjMDM1MjZmYjYxZTJiZjQ2MDk1NDI1NGU0MTI2NmM1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9v
cHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5jYwpAQCAtMTUsNyArMTUsOCBAQAogI2luY2x1ZGUgPHV0
aWxpdHk+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21t
b25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9tYXRjaC5oIgorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0
b3JfaW1wbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtf
YWRhcHRvci9jb250cm9sbGVyX21hbmFnZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3Mvb3B1cy9vcHVzX2ludGVyZmFjZS5oIgpAQCAtMjE0LDggKzIxNSw4MCBAQCBp
bnQgR2V0Qml0cmF0ZUJwcyhjb25zdCBBdWRpb0VuY29kZXJPcHVzQ29uZmlnJiBjb25maWcpIHsK
ICAgcmV0dXJuICpjb25maWcuYml0cmF0ZV9icHM7CiB9CiAKK2Jvb2wgSXNWYWxpZFBhY2tldExv
c3NSYXRlKGludCB2YWx1ZSkgeworICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSAxMDA7
Cit9CisKK2Zsb2F0IFRvRnJhY3Rpb24oaW50IHBlcmNlbnQpIHsKKyAgcmV0dXJuIHN0YXRpY19j
YXN0PGZsb2F0PihwZXJjZW50KSAvIDEwMDsKK30KKworZmxvYXQgR2V0TWluUGFja2V0TG9zc1Jh
dGUoKSB7CisgIGNvbnN0ZXhwciBjaGFyIGtQYWNrZXRMb3NzRmllbGRUcmlhbFtdID0gIldlYlJU
Qy1BdWRpby1PcHVzTWluUGFja2V0TG9zc1JhdGUiOworICBjb25zdCBib29sIHVzZV9vcHVzX21p
bl9wYWNrZXRfbG9zc19yYXRlID0KKyAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxl
ZChrUGFja2V0TG9zc0ZpZWxkVHJpYWwpOworICBpZiAodXNlX29wdXNfbWluX3BhY2tldF9sb3Nz
X3JhdGUpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBmaWVsZF90cmlhbF9zdHJpbmcgPQorICAg
ICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoa1BhY2tldExvc3NGaWVsZFRy
aWFsKTsKKyAgICBjb25zdGV4cHIgaW50IGtEZWZhdWx0TWluUGFja2V0TG9zc1JhdGUgPSAxOwor
ICAgIGludCB2YWx1ZSA9IGtEZWZhdWx0TWluUGFja2V0TG9zc1JhdGU7CisgICAgaWYgKHNzY2Fu
ZihmaWVsZF90cmlhbF9zdHJpbmcuY19zdHIoKSwgIkVuYWJsZWQtJWQiLCAmdmFsdWUpID09IDEg
JiYKKyAgICAgICAgIUlzVmFsaWRQYWNrZXRMb3NzUmF0ZSh2YWx1ZSkpIHsKKyAgICAgIFJUQ19M
T0coTFNfV0FSTklORykgPDwgIkludmFsaWQgcGFyYW1ldGVyIGZvciAiIDw8IGtQYWNrZXRMb3Nz
RmllbGRUcmlhbAorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCB1c2luZyBkZWZhdWx0
IHZhbHVlOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGtEZWZhdWx0TWluUGFja2V0
TG9zc1JhdGU7CisgICAgICB2YWx1ZSA9IGtEZWZhdWx0TWluUGFja2V0TG9zc1JhdGU7CisgICAg
fQorICAgIHJldHVybiBUb0ZyYWN0aW9uKHZhbHVlKTsKKyAgfQorICByZXR1cm4gMC4wOworfQor
CitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok5ld1BhY2tldExvc3NSYXRl
T3B0aW1pemVyPgorR2V0TmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXIoKSB7CisgIGNvbnN0ZXhw
ciBjaGFyIGtQYWNrZXRMb3NzT3B0aW1pemF0aW9uTmFtZVtdID0KKyAgICAgICJXZWJSVEMtQXVk
aW8tTmV3T3B1c1BhY2tldExvc3NSYXRlT3B0aW1pemF0aW9uIjsKKyAgY29uc3QgYm9vbCB1c2Vf
bmV3X3BhY2tldF9sb3NzX29wdGltaXphdGlvbiA9CisgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFs
OjpJc0VuYWJsZWQoa1BhY2tldExvc3NPcHRpbWl6YXRpb25OYW1lKTsKKyAgaWYgKHVzZV9uZXdf
cGFja2V0X2xvc3Nfb3B0aW1pemF0aW9uKSB7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZmllbGRf
dHJpYWxfc3RyaW5nID0KKyAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1l
KGtQYWNrZXRMb3NzT3B0aW1pemF0aW9uTmFtZSk7CisgICAgaW50IG1pbl9yYXRlOworICAgIGlu
dCBtYXhfcmF0ZTsKKyAgICBmbG9hdCBzbG9wZTsKKyAgICBpZiAoc3NjYW5mKGZpZWxkX3RyaWFs
X3N0cmluZy5jX3N0cigpLCAiRW5hYmxlZC0lZC0lZC0lZiIsICZtaW5fcmF0ZSwKKyAgICAgICAg
ICAgICAgICZtYXhfcmF0ZSwgJnNsb3BlKSA9PSAzICYmCisgICAgICAgIElzVmFsaWRQYWNrZXRM
b3NzUmF0ZShtaW5fcmF0ZSkgJiYgSXNWYWxpZFBhY2tldExvc3NSYXRlKG1heF9yYXRlKSkgewor
ICAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPAorICAgICAgICAgIEF1ZGlvRW5jb2Rlck9w
dXNJbXBsOjpOZXdQYWNrZXRMb3NzUmF0ZU9wdGltaXplcj4oCisgICAgICAgICAgVG9GcmFjdGlv
bihtaW5fcmF0ZSksIFRvRnJhY3Rpb24obWF4X3JhdGUpLCBzbG9wZSk7CisgICAgfQorICAgIFJU
Q19MT0coTFNfV0FSTklORykgPDwgIkludmFsaWQgcGFyYW1ldGVycyBmb3IgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgPDwga1BhY2tldExvc3NPcHRpbWl6YXRpb25OYW1lCisgICAgICAgICAg
ICAgICAgICAgICAgICA8PCAiLCB1c2luZyBkZWZhdWx0IHZhbHVlcy4iOworICAgIHJldHVybiBh
YnNsOjptYWtlX3VuaXF1ZTwKKyAgICAgICAgQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok5ld1BhY2tl
dExvc3NSYXRlT3B0aW1pemVyPigpOworICB9CisgIHJldHVybiBudWxscHRyOworfQorCiB9ICAv
LyBuYW1lc3BhY2UKIAorQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok5ld1BhY2tldExvc3NSYXRlT3B0
aW1pemVyOjpOZXdQYWNrZXRMb3NzUmF0ZU9wdGltaXplcigKKyAgICBmbG9hdCBtaW5fcGFja2V0
X2xvc3NfcmF0ZSwKKyAgICBmbG9hdCBtYXhfcGFja2V0X2xvc3NfcmF0ZSwKKyAgICBmbG9hdCBz
bG9wZSkKKyAgICA6IG1pbl9wYWNrZXRfbG9zc19yYXRlXyhtaW5fcGFja2V0X2xvc3NfcmF0ZSks
CisgICAgICBtYXhfcGFja2V0X2xvc3NfcmF0ZV8obWF4X3BhY2tldF9sb3NzX3JhdGUpLAorICAg
ICAgc2xvcGVfKHNsb3BlKSB7fQorCitmbG9hdCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6TmV3UGFj
a2V0TG9zc1JhdGVPcHRpbWl6ZXI6Ok9wdGltaXplUGFja2V0TG9zc1JhdGUoCisgICAgZmxvYXQg
cGFja2V0X2xvc3NfcmF0ZSkgY29uc3QgeworICBwYWNrZXRfbG9zc19yYXRlID0gc2xvcGVfICog
cGFja2V0X2xvc3NfcmF0ZTsKKyAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KHBhY2tldF9sb3Nz
X3JhdGUsIG1pbl9wYWNrZXRfbG9zc19yYXRlXyksCisgICAgICAgICAgICAgICAgICBtYXhfcGFj
a2V0X2xvc3NfcmF0ZV8pOworfQorCiB2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpBcHBlbmRT
dXBwb3J0ZWRFbmNvZGVycygKICAgICBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjU3BlYz4qIHNwZWNz
KSB7CiAgIGNvbnN0IFNkcEF1ZGlvRm9ybWF0IGZtdCA9IHsKQEAgLTI0NCw3ICszMTcsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBBdWRpb0VuY29kZXJPcHVzSW1wbDo6TWFrZUF1
ZGlvRW5jb2RlcigKIAogYWJzbDo6b3B0aW9uYWw8QXVkaW9Db2RlY0luZm8+IEF1ZGlvRW5jb2Rl
ck9wdXNJbXBsOjpRdWVyeUF1ZGlvRW5jb2RlcigKICAgICBjb25zdCBTZHBBdWRpb0Zvcm1hdCYg
Zm9ybWF0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgR2V0UGF5
bG9hZE5hbWUoKSkgPT0gMCAmJgorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQu
bmFtZSwgR2V0UGF5bG9hZE5hbWUoKSkgJiYKICAgICAgIGZvcm1hdC5jbG9ja3JhdGVfaHogPT0g
NDgwMDAgJiYgZm9ybWF0Lm51bV9jaGFubmVscyA9PSAyKSB7CiAgICAgY29uc3Qgc2l6ZV90IG51
bV9jaGFubmVscyA9IEdldENoYW5uZWxDb3VudChmb3JtYXQpOwogICAgIGNvbnN0IGludCBiaXRy
YXRlID0KQEAgLTI3Niw3ICszNDksNyBAQCBBdWRpb0VuY29kZXJPcHVzQ29uZmlnIEF1ZGlvRW5j
b2Rlck9wdXNJbXBsOjpDcmVhdGVDb25maWcoCiAKIGFic2w6Om9wdGlvbmFsPEF1ZGlvRW5jb2Rl
ck9wdXNDb25maWc+IEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpTZHBUb0NvbmZpZygKICAgICBjb25z
dCBTZHBBdWRpb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5h
bWUuY19zdHIoKSwgIm9wdXMiKSAhPSAwIHx8CisgIGlmICghYWJzbDo6RXF1YWxzSWdub3JlQ2Fz
ZShmb3JtYXQubmFtZSwgIm9wdXMiKSB8fAogICAgICAgZm9ybWF0LmNsb2NrcmF0ZV9oeiAhPSA0
ODAwMCB8fCBmb3JtYXQubnVtX2NoYW5uZWxzICE9IDIpIHsKICAgICByZXR1cm4gYWJzbDo6bnVs
bG9wdDsKICAgfQpAQCAtMzk4LDEwICs0NzEsMTQgQEAgQXVkaW9FbmNvZGVyT3B1c0ltcGw6OkF1
ZGlvRW5jb2Rlck9wdXNJbXBsKAogICAgIDogcGF5bG9hZF90eXBlXyhwYXlsb2FkX3R5cGUpLAog
ICAgICAgc2VuZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXygKICAgICAgICAgICB3ZWJydGM6OmZp
ZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1TZW5kU2lkZUJ3ZS1XaXRoT3ZlcmhlYWQiKSks
CisgICAgICB1c2VfbGlua19jYXBhY2l0eV9mb3JfYWRhcHRhdGlvbl8od2VicnRjOjpmaWVsZF90
cmlhbDo6SXNFbmFibGVkKAorICAgICAgICAgICJXZWJSVEMtQXVkaW8tTGlua0NhcGFjaXR5QWRh
cHRhdGlvbiIpKSwKICAgICAgIGFkanVzdF9iYW5kd2lkdGhfKAogICAgICAgICAgIHdlYnJ0Yzo6
ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFkanVzdE9wdXNCYW5kd2lkdGgiKSksCiAg
ICAgICBiaXRyYXRlX2NoYW5nZWRfKHRydWUpLAogICAgICAgcGFja2V0X2xvc3NfcmF0ZV8oMC4w
KSwKKyAgICAgIG1pbl9wYWNrZXRfbG9zc19yYXRlXyhHZXRNaW5QYWNrZXRMb3NzUmF0ZSgpKSwK
KyAgICAgIG5ld19wYWNrZXRfbG9zc19vcHRpbWl6ZXJfKEdldE5ld1BhY2tldExvc3NSYXRlT3B0
aW1pemVyKCkpLAogICAgICAgaW5zdF8obnVsbHB0ciksCiAgICAgICBwYWNrZXRfbG9zc19mcmFj
dGlvbl9zbW9vdGhlcl8obmV3IFBhY2tldExvc3NGcmFjdGlvblNtb290aGVyKCkpLAogICAgICAg
YXVkaW9fbmV0d29ya19hZGFwdG9yX2NyZWF0b3JfKGF1ZGlvX25ldHdvcmtfYWRhcHRvcl9jcmVh
dG9yKSwKQEAgLTQxNCw2ICs0OTEsNyBAQCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6QXVkaW9FbmNv
ZGVyT3B1c0ltcGwoCiAgIFJUQ19DSEVDSyhjb25maWcucGF5bG9hZF90eXBlID09IC0xIHx8IGNv
bmZpZy5wYXlsb2FkX3R5cGUgPT0gcGF5bG9hZF90eXBlKTsKIAogICBSVENfQ0hFQ0soUmVjcmVh
dGVFbmNvZGVySW5zdGFuY2UoY29uZmlnKSk7CisgIFNldFByb2plY3RlZFBhY2tldExvc3NSYXRl
KHBhY2tldF9sb3NzX3JhdGVfKTsKIH0KIAogQXVkaW9FbmNvZGVyT3B1c0ltcGw6OkF1ZGlvRW5j
b2Rlck9wdXNJbXBsKGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCkKQEAgLTUyOSw3ICs2MDcs
OCBAQCB2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpPblJlY2VpdmVkVXBsaW5rUmVjb3ZlcmFi
bGVQYWNrZXRMb3NzRnJhY3Rpb24oCiAKIHZvaWQgQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok9uUmVj
ZWl2ZWRVcGxpbmtCYW5kd2lkdGgoCiAgICAgaW50IHRhcmdldF9hdWRpb19iaXRyYXRlX2JwcywK
LSAgICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBid2VfcGVyaW9kX21zKSB7CisgICAgYWJzbDo6
b3B0aW9uYWw8aW50NjRfdD4gYndlX3BlcmlvZF9tcywKKyAgICBhYnNsOjpvcHRpb25hbDxpbnQ2
NF90PiBsaW5rX2NhcGFjaXR5X2FsbG9jYXRpb25fYnBzKSB7CiAgIGlmIChhdWRpb19uZXR3b3Jr
X2FkYXB0b3JfKSB7CiAgICAgYXVkaW9fbmV0d29ya19hZGFwdG9yXy0+U2V0VGFyZ2V0QXVkaW9C
aXRyYXRlKHRhcmdldF9hdWRpb19iaXRyYXRlX2Jwcyk7CiAgICAgLy8gV2UgZ2l2ZSBzbW9vdGhl
ZCBiaXRyYXRlIGFsbG9jYXRpb24gdG8gYXVkaW8gbmV0d29yayBhZGFwdG9yIGFzCkBAIC01NDcs
NiArNjI2LDkgQEAgdm9pZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6T25SZWNlaXZlZFVwbGlua0Jh
bmR3aWR0aCgKICAgICAgIGJpdHJhdGVfc21vb3RoZXJfLT5TZXRUaW1lQ29uc3RhbnRNcygqYndl
X3BlcmlvZF9tcyAqIDQpOwogICAgIGJpdHJhdGVfc21vb3RoZXJfLT5BZGRTYW1wbGUodGFyZ2V0
X2F1ZGlvX2JpdHJhdGVfYnBzKTsKIAorICAgIGlmIChsaW5rX2NhcGFjaXR5X2FsbG9jYXRpb25f
YnBzKQorICAgICAgbGlua19jYXBhY2l0eV9hbGxvY2F0aW9uX2Jwc18gPSBsaW5rX2NhcGFjaXR5
X2FsbG9jYXRpb25fYnBzOworCiAgICAgQXBwbHlBdWRpb05ldHdvcmtBZGFwdG9yKCk7CiAgIH0g
ZWxzZSBpZiAoc2VuZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXykgewogICAgIGlmICghb3Zlcmhl
YWRfYnl0ZXNfcGVyX3BhY2tldF8pIHsKQEAgLTU2NSw2ICs2NDcsMTggQEAgdm9pZCBBdWRpb0Vu
Y29kZXJPcHVzSW1wbDo6T25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aCgKICAgICBTZXRUYXJnZXRC
aXRyYXRlKHRhcmdldF9hdWRpb19iaXRyYXRlX2Jwcyk7CiAgIH0KIH0KK3ZvaWQgQXVkaW9FbmNv
ZGVyT3B1c0ltcGw6Ok9uUmVjZWl2ZWRVcGxpbmtCYW5kd2lkdGgoCisgICAgaW50IHRhcmdldF9h
dWRpb19iaXRyYXRlX2JwcywKKyAgICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBid2VfcGVyaW9k
X21zKSB7CisgIE9uUmVjZWl2ZWRVcGxpbmtCYW5kd2lkdGgodGFyZ2V0X2F1ZGlvX2JpdHJhdGVf
YnBzLCBid2VfcGVyaW9kX21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om51
bGxvcHQpOworfQorCit2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpPblJlY2VpdmVkVXBsaW5r
QWxsb2NhdGlvbigKKyAgICBCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpIHsKKyAgT25S
ZWNlaXZlZFVwbGlua0JhbmR3aWR0aCh1cGRhdGUudGFyZ2V0X2JpdHJhdGUuYnBzKCksIHVwZGF0
ZS5id2VfcGVyaW9kLm1zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlLmxp
bmtfY2FwYWNpdHkuYnBzKCkpOworfQogCiB2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpPblJl
Y2VpdmVkUnR0KGludCBydHRfbXMpIHsKICAgaWYgKCFhdWRpb19uZXR3b3JrX2FkYXB0b3JfKQpA
QCAtNzM4LDkgKzgzMiwxNCBAQCB2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpTZXROdW1DaGFu
bmVsc1RvRW5jb2RlKAogfQogCiB2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpTZXRQcm9qZWN0
ZWRQYWNrZXRMb3NzUmF0ZShmbG9hdCBmcmFjdGlvbikgewotICBmbG9hdCBvcHRfbG9zc19yYXRl
ID0gT3B0aW1pemVQYWNrZXRMb3NzUmF0ZShmcmFjdGlvbiwgcGFja2V0X2xvc3NfcmF0ZV8pOwot
ICBpZiAocGFja2V0X2xvc3NfcmF0ZV8gIT0gb3B0X2xvc3NfcmF0ZSkgewotICAgIHBhY2tldF9s
b3NzX3JhdGVfID0gb3B0X2xvc3NfcmF0ZTsKKyAgaWYgKG5ld19wYWNrZXRfbG9zc19vcHRpbWl6
ZXJfKSB7CisgICAgZnJhY3Rpb24gPSBuZXdfcGFja2V0X2xvc3Nfb3B0aW1pemVyXy0+T3B0aW1p
emVQYWNrZXRMb3NzUmF0ZShmcmFjdGlvbik7CisgIH0gZWxzZSB7CisgICAgZnJhY3Rpb24gPSBP
cHRpbWl6ZVBhY2tldExvc3NSYXRlKGZyYWN0aW9uLCBwYWNrZXRfbG9zc19yYXRlXyk7CisgICAg
ZnJhY3Rpb24gPSBzdGQ6Om1heChmcmFjdGlvbiwgbWluX3BhY2tldF9sb3NzX3JhdGVfKTsKKyAg
fQorICBpZiAocGFja2V0X2xvc3NfcmF0ZV8gIT0gZnJhY3Rpb24pIHsKKyAgICBwYWNrZXRfbG9z
c19yYXRlXyA9IGZyYWN0aW9uOwogICAgIFJUQ19DSEVDS19FUSgKICAgICAgICAgMCwgV2ViUnRj
T3B1c19TZXRQYWNrZXRMb3NzUmF0ZSgKICAgICAgICAgICAgICAgIGluc3RfLCBzdGF0aWNfY2Fz
dDxpbnQzMl90PihwYWNrZXRfbG9zc19yYXRlXyAqIDEwMCArIC41KSkpOwpAQCAtNzk0LDE0ICs4
OTMsMjAgQEAgQXVkaW9FbmNvZGVyT3B1c0ltcGw6OkRlZmF1bHRBdWRpb05ldHdvcmtBZGFwdG9y
Q3JlYXRvcigKIAogdm9pZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6TWF5YmVVcGRhdGVVcGxpbmtC
YW5kd2lkdGgoKSB7CiAgIGlmIChhdWRpb19uZXR3b3JrX2FkYXB0b3JfKSB7Ci0gICAgaW50NjRf
dCBub3dfbXMgPSBydGM6OlRpbWVNaWxsaXMoKTsKLSAgICBpZiAoIWJpdHJhdGVfc21vb3RoZXJf
bGFzdF91cGRhdGVfdGltZV8gfHwKLSAgICAgICAgbm93X21zIC0gKmJpdHJhdGVfc21vb3RoZXJf
bGFzdF91cGRhdGVfdGltZV8gPj0KLSAgICAgICAgICAgIGNvbmZpZ18udXBsaW5rX2JhbmR3aWR0
aF91cGRhdGVfaW50ZXJ2YWxfbXMpIHsKLSAgICAgIGFic2w6Om9wdGlvbmFsPGZsb2F0PiBzbW9v
dGhlZF9iaXRyYXRlID0gYml0cmF0ZV9zbW9vdGhlcl8tPkdldEF2ZXJhZ2UoKTsKLSAgICAgIGlm
IChzbW9vdGhlZF9iaXRyYXRlKQotICAgICAgICBhdWRpb19uZXR3b3JrX2FkYXB0b3JfLT5TZXRV
cGxpbmtCYW5kd2lkdGgoKnNtb290aGVkX2JpdHJhdGUpOwotICAgICAgYml0cmF0ZV9zbW9vdGhl
cl9sYXN0X3VwZGF0ZV90aW1lXyA9IG5vd19tczsKKyAgICBpZiAodXNlX2xpbmtfY2FwYWNpdHlf
Zm9yX2FkYXB0YXRpb25fICYmIGxpbmtfY2FwYWNpdHlfYWxsb2NhdGlvbl9icHNfKSB7CisgICAg
ICBhdWRpb19uZXR3b3JrX2FkYXB0b3JfLT5TZXRVcGxpbmtCYW5kd2lkdGgoCisgICAgICAgICAg
KmxpbmtfY2FwYWNpdHlfYWxsb2NhdGlvbl9icHNfKTsKKyAgICB9IGVsc2UgeworICAgICAgaW50
NjRfdCBub3dfbXMgPSBydGM6OlRpbWVNaWxsaXMoKTsKKyAgICAgIGlmICghYml0cmF0ZV9zbW9v
dGhlcl9sYXN0X3VwZGF0ZV90aW1lXyB8fAorICAgICAgICAgIG5vd19tcyAtICpiaXRyYXRlX3Nt
b290aGVyX2xhc3RfdXBkYXRlX3RpbWVfID49CisgICAgICAgICAgICAgIGNvbmZpZ18udXBsaW5r
X2JhbmR3aWR0aF91cGRhdGVfaW50ZXJ2YWxfbXMpIHsKKyAgICAgICAgYWJzbDo6b3B0aW9uYWw8
ZmxvYXQ+IHNtb290aGVkX2JpdHJhdGUgPQorICAgICAgICAgICAgYml0cmF0ZV9zbW9vdGhlcl8t
PkdldEF2ZXJhZ2UoKTsKKyAgICAgICAgaWYgKHNtb290aGVkX2JpdHJhdGUpCisgICAgICAgICAg
YXVkaW9fbmV0d29ya19hZGFwdG9yXy0+U2V0VXBsaW5rQmFuZHdpZHRoKCpzbW9vdGhlZF9iaXRy
YXRlKTsKKyAgICAgICAgYml0cmF0ZV9zbW9vdGhlcl9sYXN0X3VwZGF0ZV90aW1lXyA9IG5vd19t
czsKKyAgICAgIH0KICAgICB9CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVz
L2F1ZGlvX2VuY29kZXJfb3B1cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9v
cHVzLmgKaW5kZXggZWE0YjI2NTBiYmJlNzM2NDZhMzliMWQ3OGRlNWQ2MmFhNWUyOWVjNC4uMTUw
NDIzZmQzZWU3YWE3ZWM0YTczY2Y0ZWViYjg4ODllMTc4MTZjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMv
YXVkaW9fZW5jb2Rlcl9vcHVzLmgKQEAgLTM0LDYgKzM0LDI2IEBAIHN0cnVjdCBDb2RlY0luc3Q7
CiAKIGNsYXNzIEF1ZGlvRW5jb2Rlck9wdXNJbXBsIGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2Rl
ciB7CiAgcHVibGljOgorICBjbGFzcyBOZXdQYWNrZXRMb3NzUmF0ZU9wdGltaXplciB7CisgICBw
dWJsaWM6CisgICAgTmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXIoZmxvYXQgbWluX3BhY2tldF9s
b3NzX3JhdGUgPSAwLjAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG1h
eF9wYWNrZXRfbG9zc19yYXRlID0gMC4yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IHNsb3BlID0gMS4wKTsKKworICAgIGZsb2F0IE9wdGltaXplUGFja2V0TG9zc1JhdGUo
ZmxvYXQgcGFja2V0X2xvc3NfcmF0ZSkgY29uc3Q7CisKKyAgICAvLyBHZXR0ZXJzIGZvciB0ZXN0
aW5nLgorICAgIGZsb2F0IG1pbl9wYWNrZXRfbG9zc19yYXRlKCkgY29uc3QgeyByZXR1cm4gbWlu
X3BhY2tldF9sb3NzX3JhdGVfOyB9OworICAgIGZsb2F0IG1heF9wYWNrZXRfbG9zc19yYXRlKCkg
Y29uc3QgeyByZXR1cm4gbWF4X3BhY2tldF9sb3NzX3JhdGVfOyB9OworICAgIGZsb2F0IHNsb3Bl
KCkgY29uc3QgeyByZXR1cm4gc2xvcGVfOyB9OworCisgICBwcml2YXRlOgorICAgIGNvbnN0IGZs
b2F0IG1pbl9wYWNrZXRfbG9zc19yYXRlXzsKKyAgICBjb25zdCBmbG9hdCBtYXhfcGFja2V0X2xv
c3NfcmF0ZV87CisgICAgY29uc3QgZmxvYXQgc2xvcGVfOworICAgIFJUQ19ESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oTmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXIpOworICB9OworCiAgIHN0YXRp
YyBBdWRpb0VuY29kZXJPcHVzQ29uZmlnIENyZWF0ZUNvbmZpZyhjb25zdCBDb2RlY0luc3QmIGNv
ZGVjX2luc3QpOwogCiAgIC8vIFJldHVybnMgZW1wdHkgaWYgdGhlIGN1cnJlbnQgYml0cmF0ZSBm
YWxscyB3aXRoaW4gdGhlIGh5c3RlcmVzaXMgd2luZG93LApAQCAtOTksNiArMTE5LDcgQEAgY2xh
c3MgQXVkaW9FbmNvZGVyT3B1c0ltcGwgZmluYWwgOiBwdWJsaWMgQXVkaW9FbmNvZGVyIHsKICAg
dm9pZCBPblJlY2VpdmVkVXBsaW5rQmFuZHdpZHRoKAogICAgICAgaW50IHRhcmdldF9hdWRpb19i
aXRyYXRlX2JwcywKICAgICAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGJ3ZV9wZXJpb2RfbXMp
IG92ZXJyaWRlOworICB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtBbGxvY2F0aW9uKEJpdHJhdGVBbGxv
Y2F0aW9uVXBkYXRlIHVwZGF0ZSkgb3ZlcnJpZGU7CiAgIHZvaWQgT25SZWNlaXZlZFJ0dChpbnQg
cnR0X21zKSBvdmVycmlkZTsKICAgdm9pZCBPblJlY2VpdmVkT3ZlcmhlYWQoc2l6ZV90IG92ZXJo
ZWFkX2J5dGVzX3Blcl9wYWNrZXQpIG92ZXJyaWRlOwogICB2b2lkIFNldFJlY2VpdmVyRnJhbWVM
ZW5ndGhSYW5nZShpbnQgbWluX2ZyYW1lX2xlbmd0aF9tcywKQEAgLTExMCw2ICsxMzEsOSBAQCBj
bGFzcyBBdWRpb0VuY29kZXJPcHVzSW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0VuY29kZXIgewog
CiAgIC8vIEdldHRlcnMgZm9yIHRlc3RpbmcuCiAgIGZsb2F0IHBhY2tldF9sb3NzX3JhdGUoKSBj
b25zdCB7IHJldHVybiBwYWNrZXRfbG9zc19yYXRlXzsgfQorICBOZXdQYWNrZXRMb3NzUmF0ZU9w
dGltaXplciogbmV3X3BhY2tldF9sb3NzX29wdGltaXplcigpIGNvbnN0IHsKKyAgICByZXR1cm4g
bmV3X3BhY2tldF9sb3NzX29wdGltaXplcl8uZ2V0KCk7CisgIH0KICAgQXVkaW9FbmNvZGVyT3B1
c0NvbmZpZzo6QXBwbGljYXRpb25Nb2RlIGFwcGxpY2F0aW9uKCkgY29uc3QgewogICAgIHJldHVy
biBjb25maWdfLmFwcGxpY2F0aW9uOwogICB9CkBAIC0xNDEsNiArMTY1LDExIEBAIGNsYXNzIEF1
ZGlvRW5jb2Rlck9wdXNJbXBsIGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7CiAgIHZvaWQg
U2V0TnVtQ2hhbm5lbHNUb0VuY29kZShzaXplX3QgbnVtX2NoYW5uZWxzX3RvX2VuY29kZSk7CiAg
IHZvaWQgU2V0UHJvamVjdGVkUGFja2V0TG9zc1JhdGUoZmxvYXQgZnJhY3Rpb24pOwogCisgIHZv
aWQgT25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aCgKKyAgICAgIGludCB0YXJnZXRfYXVkaW9fYml0
cmF0ZV9icHMsCisgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBid2VfcGVyaW9kX21zLAor
ICAgICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGlua19jYXBhY2l0eV9hbGxvY2F0aW9uKTsK
KwogICAvLyBUT0RPKG1pbnl1ZSk6IHJlbW92ZSAib3ZlcnJpZGUiIHdoZW4gd2UgY2FuIGRlcHJl
Y2F0ZQogICAvLyB8QXVkaW9FbmNvZGVyOjpTZXRUYXJnZXRCaXRyYXRlfC4KICAgdm9pZCBTZXRU
YXJnZXRCaXRyYXRlKGludCB0YXJnZXRfYnBzKSBvdmVycmlkZTsKQEAgLTE1NSw5ICsxODQsMTIg
QEAgY2xhc3MgQXVkaW9FbmNvZGVyT3B1c0ltcGwgZmluYWwgOiBwdWJsaWMgQXVkaW9FbmNvZGVy
IHsKICAgQXVkaW9FbmNvZGVyT3B1c0NvbmZpZyBjb25maWdfOwogICBjb25zdCBpbnQgcGF5bG9h
ZF90eXBlXzsKICAgY29uc3QgYm9vbCBzZW5kX3NpZGVfYndlX3dpdGhfb3ZlcmhlYWRfOworICBj
b25zdCBib29sIHVzZV9saW5rX2NhcGFjaXR5X2Zvcl9hZGFwdGF0aW9uXzsKICAgY29uc3QgYm9v
bCBhZGp1c3RfYmFuZHdpZHRoXzsKICAgYm9vbCBiaXRyYXRlX2NoYW5nZWRfOwogICBmbG9hdCBw
YWNrZXRfbG9zc19yYXRlXzsKKyAgY29uc3QgZmxvYXQgbWluX3BhY2tldF9sb3NzX3JhdGVfOwor
ICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8TmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXI+IG5ld19w
YWNrZXRfbG9zc19vcHRpbWl6ZXJfOwogICBzdGQ6OnZlY3RvcjxpbnQxNl90PiBpbnB1dF9idWZm
ZXJfOwogICBPcHVzRW5jSW5zdCogaW5zdF87CiAgIHVpbnQzMl90IGZpcnN0X3RpbWVzdGFtcF9p
bl9idWZmZXJfOwpAQCAtMTcwLDYgKzIwMiw3IEBAIGNsYXNzIEF1ZGlvRW5jb2Rlck9wdXNJbXBs
IGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7CiAgIGFic2w6Om9wdGlvbmFsPHNpemVfdD4g
b3ZlcmhlYWRfYnl0ZXNfcGVyX3BhY2tldF87CiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxTbW9v
dGhpbmdGaWx0ZXI+IGJpdHJhdGVfc21vb3RoZXJfOwogICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90
PiBiaXRyYXRlX3Ntb290aGVyX2xhc3RfdXBkYXRlX3RpbWVfOworICBhYnNsOjpvcHRpb25hbDxp
bnQ2NF90PiBsaW5rX2NhcGFjaXR5X2FsbG9jYXRpb25fYnBzXzsKICAgaW50IGNvbnNlY3V0aXZl
X2R0eF9mcmFtZXNfOwogCiAgIGZyaWVuZCBzdHJ1Y3QgQXVkaW9FbmNvZGVyT3B1czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1c191bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1c191bml0dGVzdC5jYwppbmRleCA3
YTZkNWZkYTRiYmMxNjE0MWFiODRhOTM1Y2Q3MzM0ZWQ3OWI3N2RlLi5kNWMyYzg0ZjFmZjcxM2Ex
YmNiNjE3MDFiMTU1ODYyNmE2YjIxNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9h
dWRpb19lbmNvZGVyX29wdXNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVk
aW9fZW5jb2Rlcl9vcHVzX3VuaXR0ZXN0LmNjCkBAIC0yNzIsNiArMjcyLDUxIEBAIFRFU1QoQXVk
aW9FbmNvZGVyT3B1c1Rlc3QsIFBhY2tldExvc3NSYXRlT3B0aW1pemVkKSB7CiAgIC8vIGNsYW5n
LWZvcm1hdCBvbgogfQogCitURVNUKEF1ZGlvRW5jb2Rlck9wdXNUZXN0LCBQYWNrZXRMb3NzUmF0
ZUxvd2VyQm91bmRlZCkgeworICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9maWVs
ZF90cmlhbHMoCisgICAgICAiV2ViUlRDLUF1ZGlvLU9wdXNNaW5QYWNrZXRMb3NzUmF0ZS9FbmFi
bGVkLTUvIik7CisgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgIGF1dG8gSSA9IFtd
KGZsb2F0IGEsIGZsb2F0IGIpIHsgcmV0dXJuIEludGVydmFsU3RlcHMoYSwgYiwgMTApOyB9Owor
ICBjb25zdGV4cHIgZmxvYXQgZXBzID0gMWUtOGY7CisKKyAgLy8gY2xhbmctZm9ybWF0IG9mZgor
ICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCBJKDAuMDBmICAgICAgLCAwLjAx
ZiAtIGVwcyksIDAuMDVmKTsKKyAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwg
SSgwLjAxZiArIGVwcywgMC4wNmYgLSBlcHMpLCAwLjA1Zik7CisgIFRlc3RTZXRQYWNrZXRMb3Nz
UmF0ZShzdGF0ZXMuZ2V0KCksIEkoMC4wNmYgKyBlcHMsIDAuMTFmIC0gZXBzKSwgMC4wNWYpOwor
ICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCBJKDAuMTFmICsgZXBzLCAwLjIy
ZiAtIGVwcyksIDAuMTBmKTsKKyAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwg
SSgwLjIyZiArIGVwcywgMS4wMGYgICAgICApLCAwLjIwZik7CisKKyAgVGVzdFNldFBhY2tldExv
c3NSYXRlKHN0YXRlcy5nZXQoKSwgSSgxLjAwZiAgICAgICwgMC4xOGYgKyBlcHMpLCAwLjIwZik7
CisgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIEkoMC4xOGYgLSBlcHMsIDAu
MDlmICsgZXBzKSwgMC4xMGYpOworICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgp
LCBJKDAuMDlmIC0gZXBzLCAwLjA0ZiArIGVwcyksIDAuMDVmKTsKKyAgVGVzdFNldFBhY2tldExv
c3NSYXRlKHN0YXRlcy5nZXQoKSwgSSgwLjA0ZiAtIGVwcywgMC4wMWYgKyBlcHMpLCAwLjA1Zik7
CisgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIEkoMC4wMWYgLSBlcHMsIDAu
MDBmICAgICAgKSwgMC4wNWYpOworICAvLyBjbGFuZy1mb3JtYXQgb24KK30KKworVEVTVChBdWRp
b0VuY29kZXJPcHVzVGVzdCwgTmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6YXRpb24pIHsKKyAgewor
ICAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscygKKyAgICAg
ICAgIldlYlJUQy1BdWRpby1OZXdPcHVzUGFja2V0TG9zc1JhdGVPcHRpbWl6YXRpb24vRW5hYmxl
ZC01LTE1LTAuNS8iKTsKKyAgICBhdXRvIHN0YXRlcyA9IENyZWF0ZUNvZGVjKDEpOworCisgICAg
VGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgezAuMDBmfSwgMC4wNWYpOworICAg
IFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIHswLjEyZn0sIDAuMDZmKTsKKyAg
ICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCB7MC4yMmZ9LCAwLjExZik7Cisg
ICAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgezAuNTBmfSwgMC4xNWYpOwor
ICB9CisgIHsKKyAgICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlh
bHMoCisgICAgICAgICJXZWJSVEMtQXVkaW8tTmV3T3B1c1BhY2tldExvc3NSYXRlT3B0aW1pemF0
aW9uL0VuYWJsZWQvIik7CisgICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVDb2RlYygxKTsKKworICAg
IFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIHswLjAwZn0sIDAuMDFmKTsKKyAg
ICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCB7MC4xMmZ9LCAwLjEyZik7Cisg
ICAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgezAuMjJmfSwgMC4yMGYpOwor
ICAgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIHswLjUwZn0sIDAuMjBmKTsK
KyAgfQorfQorCiBURVNUKEF1ZGlvRW5jb2Rlck9wdXNUZXN0LCBTZXRSZWNlaXZlckZyYW1lTGVu
Z3RoUmFuZ2UpIHsKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVDb2RlYygyKTsKICAgLy8gQmVmb3Jl
IGNhbGxpbmcgdG8gfFNldFJlY2VpdmVyRnJhbWVMZW5ndGhSYW5nZXwsCkBAIC00NDYsNiArNDkx
LDU3IEBAIFRFU1QoQXVkaW9FbmNvZGVyT3B1c1Rlc3QsIEJpdHJhdGVCb3VuZGVkKSB7CiAgIEVY
UEVDVF9FUShrTWF4Qml0cmF0ZUJwcywgc3RhdGVzLT5lbmNvZGVyLT5HZXRUYXJnZXRCaXRyYXRl
KCkpOwogfQogCitURVNUKEF1ZGlvRW5jb2Rlck9wdXNUZXN0LCBNaW5QYWNrZXRMb3NzUmF0ZSkg
eworICBjb25zdGV4cHIgZmxvYXQga0RlZmF1bHRNaW5QYWNrZXRMb3NzUmF0ZSA9IDAuMDE7Cisg
IHsKKyAgICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlhbHMoCisg
ICAgICAgICJXZWJSVEMtQXVkaW8tT3B1c01pblBhY2tldExvc3NSYXRlL0VuYWJsZWQvIik7Cisg
ICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVDb2RlYygxKTsKKyAgICBFWFBFQ1RfRVEoa0RlZmF1bHRN
aW5QYWNrZXRMb3NzUmF0ZSwgc3RhdGVzLT5lbmNvZGVyLT5wYWNrZXRfbG9zc19yYXRlKCkpOwor
ICB9CisgIHsKKyAgICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlh
bHMoCisgICAgICAgICJXZWJSVEMtQXVkaW8tT3B1c01pblBhY2tldExvc3NSYXRlL0VuYWJsZWQt
MjAwLyIpOworICAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgICAgRVhQRUNUX0VR
KGtEZWZhdWx0TWluUGFja2V0TG9zc1JhdGUsIHN0YXRlcy0+ZW5jb2Rlci0+cGFja2V0X2xvc3Nf
cmF0ZSgpKTsKKyAgfQorICB7CisgICAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVf
ZmllbGRfdHJpYWxzKAorICAgICAgICAiV2ViUlRDLUF1ZGlvLU9wdXNNaW5QYWNrZXRMb3NzUmF0
ZS9FbmFibGVkLTUwLyIpOworICAgIGNvbnN0ZXhwciBmbG9hdCBrTWluUGFja2V0TG9zc1JhdGUg
PSAwLjU7CisgICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVDb2RlYygxKTsKKyAgICBFWFBFQ1RfRVEo
a01pblBhY2tldExvc3NSYXRlLCBzdGF0ZXMtPmVuY29kZXItPnBhY2tldF9sb3NzX3JhdGUoKSk7
CisgIH0KK30KKworVEVTVChBdWRpb0VuY29kZXJPcHVzVGVzdCwgTmV3UGFja2V0TG9zc1JhdGVP
cHRpbWl6ZXIpIHsKKyAgeworICAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgICAg
YXV0byBvcHRpbWl6ZXIgPSBzdGF0ZXMtPmVuY29kZXItPm5ld19wYWNrZXRfbG9zc19vcHRpbWl6
ZXIoKTsKKyAgICBFWFBFQ1RfRVEobnVsbHB0ciwgb3B0aW1pemVyKTsKKyAgfQorICB7CisgICAg
dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAgICAi
V2ViUlRDLUF1ZGlvLU5ld09wdXNQYWNrZXRMb3NzUmF0ZU9wdGltaXphdGlvbi9FbmFibGVkLyIp
OworICAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgICAgYXV0byBvcHRpbWl6ZXIg
PSBzdGF0ZXMtPmVuY29kZXItPm5ld19wYWNrZXRfbG9zc19vcHRpbWl6ZXIoKTsKKyAgICBBU1NF
UlRfTkUobnVsbHB0ciwgb3B0aW1pemVyKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4wMSwgb3B0
aW1pemVyLT5taW5fcGFja2V0X2xvc3NfcmF0ZSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4y
MCwgb3B0aW1pemVyLT5tYXhfcGFja2V0X2xvc3NfcmF0ZSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMS4wMCwgb3B0aW1pemVyLT5zbG9wZSgpKTsKKyAgfQorICB7CisgICAgdGVzdDo6U2NvcGVk
RmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAgICAiV2ViUlRDLUF1ZGlv
LU5ld09wdXNQYWNrZXRMb3NzUmF0ZU9wdGltaXphdGlvbi9FbmFibGVkLTItNTAtMC43LyIpOwor
ICAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgICAgYXV0byBvcHRpbWl6ZXIgPSBz
dGF0ZXMtPmVuY29kZXItPm5ld19wYWNrZXRfbG9zc19vcHRpbWl6ZXIoKTsKKyAgICBBU1NFUlRf
TkUobnVsbHB0ciwgb3B0aW1pemVyKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4wMiwgb3B0aW1p
emVyLT5taW5fcGFja2V0X2xvc3NfcmF0ZSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC41MCwg
b3B0aW1pemVyLT5tYXhfcGFja2V0X2xvc3NfcmF0ZSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MC43MCwgb3B0aW1pemVyLT5zbG9wZSgpKTsKKyAgfQorfQorCiAvLyBWZXJpZmllcyB0aGF0IHRo
ZSBjb21wbGV4aXR5IGFkYXB0YXRpb24gaW4gdGhlIGNvbmZpZyB3b3JrcyBhcyBpbnRlbmRlZC4K
IFRFU1QoQXVkaW9FbmNvZGVyT3B1c1Rlc3QsIENvbmZpZ0NvbXBsZXhpdHlBZGFwdGF0aW9uKSB7
CiAgIEF1ZGlvRW5jb2Rlck9wdXNDb25maWcgY29uZmlnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29k
ZWNzL3BjbTE2Yi9hdWRpb19kZWNvZGVyX3BjbTE2Yi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIv
YXVkaW9fZGVjb2Rlcl9wY20xNmIuY2MKaW5kZXggYjA3NjI0ZGZmYzVjNGUzMmM4MzYzZWUwYTZm
ODc5MTA1MDRhMDU2MC4uMWRkMmZmMjg5ZWUxMDI4MDk2M2MzZGI1ZGU1ODU0NTg4NmM2MGQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19kZWNvZGVyX3BjbTE2Yi5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2RlY29kZXJfcGNtMTZiLmNjCkBAIC0xMCw2
ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZi
L2F1ZGlvX2RlY29kZXJfcGNtMTZiLmgiCiAKKyNpbmNsdWRlIDx1dGlsaXR5PgorCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2xlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1l
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20xNmIu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9wY20xNmIvYXVkaW9fZGVjb2Rlcl9wY20xNmIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVk
aW9fZGVjb2Rlcl9wY20xNmIuaAppbmRleCA3ZDIzNDIyNGUzY2QwMGRhYThlODFiOGFkMzM3NGMx
NzkzMTg1OTM5Li45YjQ3OGQ4MDZmN2FjNjA1ZDFhOTQ5MzMxNjhjYjBkMjUxZmE2MTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2RlY29kZXJfcGNtMTZiLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19kZWNvZGVyX3BjbTE2Yi5oCkBAIC0xMSw3ICsxMSwx
MiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfUENNMTZCX0FVRElPX0RF
Q09ERVJfUENNMTZCX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19QQ00x
NkJfQVVESU9fREVDT0RFUl9QQ00xNkJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1
ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwogI2luY2x1ZGUgImFwaS9hdWRpb19j
b2RlY3MvYXVkaW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2VuY29kZXJfcGNtMTZiLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19lbmNvZGVyX3BjbTE2Yi5jYwppbmRleCA4MzFk
YWVkYzYzZjlkMWY2MmJkMzNjZmYxMzNlZThkMGY4ZWEzMzI2Li4xMDZhYjE2Nzk0MDI1MTgzYWRh
NDAxODFiNmQ0NjU0MDk1NDcxYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1
ZGlvX2VuY29kZXJfcGNtMTZiLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9fZW5j
b2Rlcl9wY20xNmIuY2MKQEAgLTEwLDEyICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2VuY29kZXJfcGNtMTZiLmgiCiAKLSNpbmNs
dWRlIDxhbGdvcml0aG0+Ci0KLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChi
dWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9u
cy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3Bj
bTE2Yi9wY20xNmJfY29tbW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20xNmJfY29tbW9u
LmNjCmluZGV4IDZkMGZjMmQwMTVjYzU4ODY4YjZmOGIwMWRlZGFmOGZkMTE4OTY2YzUuLjhmOGJi
YTUyN2JlNDVmOTBiOTcwOGM4YTFjMGI5YzNlMGViYmE2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9wY20xNmIvcGNtMTZiX2NvbW1vbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3Bj
bTE2Yl9jb21tb24uY2MKQEAgLTEwLDYgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiX2NvbW1vbi5oIgogCisjaW5jbHVkZSA8c3Rk
aW50Lmg+CisjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KKwogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKIHZvaWQgUGNtMTZCQXBwZW5kU3VwcG9ydGVkQ29kZWNTcGVjcyhzdGQ6OnZlY3RvcjxBdWRp
b0NvZGVjU3BlYz4qIHNwZWNzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3Bj
bTE2Yl9jb21tb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiX2NvbW1vbi5oCmluZGV4
IDk4MGE5OTY0MDg4NjQyZGFjODkyMmRlODE2MjM2YmI0NTBlYTYwNzEuLjNmYWU3MTdmZjMxZDlj
NGMxYWUzMDE5MDk3YTU1NWFkOWM0Njc4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20x
NmIvcGNtMTZiX2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiX2NvbW1v
bi5oCkBAIC0xMyw3ICsxMyw3IEBACiAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJh
cGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9h
dWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogdm9pZCBQ
Y20xNkJBcHBlbmRTdXBwb3J0ZWRDb2RlY1NwZWNzKHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWNTcGVj
Piogc3BlY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9hdWRpb19lbmNvZGVyX2Nv
cHlfcmVkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9hdWRpb19lbmNvZGVyX2NvcHlfcmVkLmNjCmlu
ZGV4IDI2MDFmMjZlNDRmZGRhY2RkYTE4ZjRhYjBlZGI3MzQ0MTcwZGIyYzYuLjEyNGU4MTE5ODE3
OWNkM2NjMDU4MjRiNjc0ZDk3NzJjNWRjMjI3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9y
ZWQvYXVkaW9fZW5jb2Rlcl9jb3B5X3JlZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcmVkL2F1ZGlv
X2VuY29kZXJfY29weV9yZWQuY2MKQEAgLTExLDggKzExLDggQEAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvcmVkL2F1ZGlvX2VuY29kZXJfY29weV9yZWQuaCIKIAogI2lu
Y2x1ZGUgPHN0cmluZy5oPgotCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+
CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29k
ZWNzL3JlZC9hdWRpb19lbmNvZGVyX2NvcHlfcmVkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcmVkL2F1ZGlv
X2VuY29kZXJfY29weV9yZWQuaAppbmRleCA0OTJlZTNhZmI0NzE3NjNiODdkMjc3N2Q2MDU4MzA2
OTZkYjJiMjc5Li41YTY4ODc2Yjg5OGMxNDNkNTZhMTIxM2Y4YmY0NjBmYTMwNzI4ZTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvcmVkL2F1ZGlvX2VuY29kZXJfY29weV9yZWQuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvcmVkL2F1ZGlvX2VuY29kZXJfY29weV9yZWQuaApAQCAtMTEsOSArMTEsMTIg
QEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX1JFRF9BVURJT19FTkNPREVS
X0NPUFlfUkVEX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19SRURfQVVE
SU9fRU5DT0RFUl9DT1BZX1JFRF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8
c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgog
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
aW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgKaW5kZXggYjlmMjIyODhmZDlmY2UzMmI1ZjFl
NWY5NzliZTQ3ZjFjZGM1MDBhMy4uZjlmZGJhNWY1MTFiMzNkMGFiOTAyYWE5YjJlYzBkYmQwODFh
NThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgKQEAgLTE1NCw0MCArMTU0LDYg
QEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGUgewogICAvLyAgIFNlbmRlcgogICAvLwogCi0gIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotICAvLyBpbnQzMl90IFJlZ2lzdGVyU2VuZENvZGVjKCkKLSAgLy8g
UmVnaXN0ZXJzIGEgY29kZWMsIHNwZWNpZmllZCBieSB8c2VuZF9jb2RlY3wsIGFzIHNlbmRpbmcg
Y29kZWMuCi0gIC8vIFRoaXMgQVBJIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgb2YgdGltZXMgdG8g
cmVnaXN0ZXIgQ29kZWMuIFRoZSBsYXN0IGNvZGVjCi0gIC8vIHJlZ2lzdGVyZWQgb3ZlcndyaXRl
cyB0aGUgcHJldmlvdXMgb25lcy4KLSAgLy8gVGhlIEFQSSBjYW4gYWxzbyBiZSB1c2VkIHRvIGNo
YW5nZSBwYXlsb2FkIHR5cGUgZm9yIENORyBhbmQgUkVELCB3aGljaCBhcmUKLSAgLy8gcmVnaXN0
ZXJlZCBieSBkZWZhdWx0IHRvIGRlZmF1bHQgcGF5bG9hZCB0eXBlcy4KLSAgLy8gTm90ZSB0aGF0
IHJlZ2lzdGVyaW5nIENORyBhbmQgUkVEIHdvbid0IG92ZXJ3cml0ZSBzcGVlY2ggY29kZWNzLgot
ICAvLyBUaGlzIEFQSSBjYW4gYmUgY2FsbGVkIHRvIHNldC9jaGFuZ2UgdGhlIHNlbmQgcGF5bG9h
ZC10eXBlLCBmcmFtZS1zaXplCi0gIC8vIG9yIGVuY29kaW5nIHJhdGUgKGlmIGFwcGxpY2FibGUg
Zm9yIHRoZSBjb2RlYykuCi0gIC8vCi0gIC8vIE5vdGU6IElmIGEgc3RlcmVvIGNvZGVjIGlzIHJl
Z2lzdGVyZWQgYXMgc2VuZCBjb2RlYywgVkFEL0RUWCB3aWxsCi0gIC8vIGF1dG9tYXRpY2FsbHkg
YmUgdHVybmVkIG9mZiwgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3RlcmVvIHNlbmRp
bmcuCi0gIC8vCi0gIC8vIE5vdGU6IElmIGEgc2Vjb25kYXJ5IGVuY29kZXIgaXMgYWxyZWFkeSBy
ZWdpc3RlcmVkLCBhbmQgdGhlIG5ldyBzZW5kLWNvZGVjCi0gIC8vIGhhcyBhIHNhbXBsaW5nIHJh
dGUgdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgc2Vjb25kYXJ5IGVuY29kZXIsIHRoZQotICAvLyBz
ZWNvbmRhcnkgZW5jb2RlciB3aWxsIGJlIHVucmVnaXN0ZXJlZC4KLSAgLy8KLSAgLy8gSW5wdXQ6
Ci0gIC8vICAgLXNlbmRfY29kZWMgICAgICAgICA6IFBhcmFtZXRlcnMgb2YgdGhlIGNvZGVjIHRv
IGJlIHJlZ2lzdGVyZWQsIGMuZi4KLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9u
X3R5cGVzLmggZm9yIHRoZSBkZWZpbml0aW9uIG9mCi0gIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgIENvZGVjSW5zdC4KLSAgLy8KLSAgLy8gUmV0dXJuIHZhbHVlOgotICAvLyAgIC0xIGlmIGZh
aWxlZCB0byBpbml0aWFsaXplLAotICAvLyAgICAwIGlmIHN1Y2NlZWRlZC4KLSAgLy8KLSAgdmly
dHVhbCBpbnQzMl90IFJlZ2lzdGVyU2VuZENvZGVjKGNvbnN0IENvZGVjSW5zdCYgc2VuZF9jb2Rl
YykgPSAwOwotCi0gIC8vIFJlZ2lzdGVycyB8ZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXJ8IGFzIGVu
Y29kZXIuIFRoZSBuZXcgZW5jb2RlciB3aWxsCi0gIC8vIHJlcGxhY2UgYW55IHByZXZpb3VzbHkg
cmVnaXN0ZXJlZCBzcGVlY2ggZW5jb2RlciAoaW50ZXJuYWwgb3IgZXh0ZXJuYWwpLgotICB2aXJ0
dWFsIHZvaWQgUmVnaXN0ZXJFeHRlcm5hbFNlbmRDb2RlYygKLSAgICAgIEF1ZGlvRW5jb2Rlciog
ZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXIpID0gMDsKLQogICAvLyB8bW9kaWZpZXJ8IGlzIGNhbGxl
ZCBleGFjdGx5IG9uY2Ugd2l0aCBvbmUgYXJndW1lbnQ6IGEgcG9pbnRlciB0byB0aGUKICAgLy8g
dW5pcXVlX3B0ciB0aGF0IGhvbGRzIHRoZSBjdXJyZW50IGVuY29kZXIgKHdoaWNoIGlzIG51bGwg
aWYgdGhlcmUgaXMgbm8KICAgLy8gY3VycmVudCBlbmNvZGVyKS4gRm9yIHRoZSBkdXJhdGlvbiBv
ZiB0aGUgY2FsbCwgfG1vZGlmaWVyfCBoYXMgZXhjbHVzaXZlCkBAIC0yNTcsNzEgKzIyMyw2IEBA
IGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlIHsKICAgLy8KICAgdmlydHVhbCBpbnQzMl90IEFkZDEw
TXNEYXRhKGNvbnN0IEF1ZGlvRnJhbWUmIGF1ZGlvX2ZyYW1lKSA9IDA7CiAKLSAgLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0gIC8vIChSRUQpIFJlZHVuZGFudCBDb2RpbmcKLSAgLy8KLQotICAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KLSAgLy8gaW50MzJfdCBTZXRSRURTdGF0dXMoKQotICAvLyBjb25maWd1cmUg
UkVEIHN0YXR1cyBpLmUuIG9uL29mZi4KLSAgLy8KLSAgLy8gUkZDIDIxOTggZGVzY3JpYmVzIGEg
c29sdXRpb24gd2hpY2ggaGFzIGEgc2luZ2xlIHBheWxvYWQgdHlwZSB3aGljaAotICAvLyBzaWdu
aWZpZXMgYSBwYWNrZXQgd2l0aCByZWR1bmRhbmN5LiBUaGF0IHBhY2tldCB0aGVuIGJlY29tZXMg
YSBjb250YWluZXIsCi0gIC8vIGVuY2Fwc3VsYXRpbmcgbXVsdGlwbGUgcGF5bG9hZHMgaW50byBh
IHNpbmdsZSBSVFAgcGFja2V0LgotICAvLyBTdWNoIGEgc2NoZW1lIGlzIGZsZXhpYmxlLCBzaW5j
ZSBhbnkgYW1vdW50IG9mIHJlZHVuZGFuY3kgbWF5IGJlCi0gIC8vIGVuY2Fwc3VsYXRlZCB3aXRo
aW4gYSBzaW5nbGUgcGFja2V0LiAgVGhlcmUgaXMsIGhvd2V2ZXIsIGEgc21hbGwgb3ZlcmhlYWQK
LSAgLy8gc2luY2UgZWFjaCBlbmNhcHN1bGF0ZWQgcGF5bG9hZCBtdXN0IGJlIHByZWNlZGVkIGJ5
IGEgaGVhZGVyIGluZGljYXRpbmcKLSAgLy8gdGhlIHR5cGUgb2YgZGF0YSBlbmNsb3NlZC4KLSAg
Ly8KLSAgLy8gSW5wdXQ6Ci0gIC8vICAgLWVuYWJsZV9yZWQgICAgICAgICA6IGlmIHRydWUgUkVE
IGlzIGVuYWJsZWQsIG90aGVyd2lzZSBSRUQgaXMKLSAgLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgZGlzYWJsZWQuCi0gIC8vCi0gIC8vIFJldHVybiB2YWx1ZToKLSAgLy8gICAtMSBpZiBmYWls
ZWQgdG8gc2V0IFJFRCBzdGF0dXMsCi0gIC8vICAgIDAgaWYgc3VjY2VlZGVkLgotICAvLwotICB2
aXJ0dWFsIGludDMyX3QgU2V0UkVEU3RhdHVzKGJvb2wgZW5hYmxlX3JlZCkgPSAwOwotCi0gIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotICAvLyBib29sIFJFRFN0YXR1cygpCi0gIC8vIEdldCBSRUQgc3Rh
dHVzCi0gIC8vCi0gIC8vIFJldHVybiB2YWx1ZToKLSAgLy8gICB0cnVlIGlmIFJFRCBpcyBlbmFi
bGVkLAotICAvLyAgIGZhbHNlIGlmIFJFRCBpcyBkaXNhYmxlZC4KLSAgLy8KLSAgdmlydHVhbCBi
b29sIFJFRFN0YXR1cygpIGNvbnN0ID0gMDsKLQotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8g
KEZFQykgRm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIChjb2RlYyBpbnRlcm5hbCkKLSAgLy8KLQot
ICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gaW50MzJfdCBTZXRDb2RlY0ZFQygpCi0gIC8vIENv
bmZpZ3VyZXMgY29kZWMgaW50ZXJuYWwgRkVDIHN0YXR1cyBpLmUuIG9uL29mZi4gTm8gZWZmZWN0
cyBvbiBjb2RlY3MgdGhhdAotICAvLyBkbyBub3QgcHJvdmlkZSBpbnRlcm5hbCBGRUMuCi0gIC8v
Ci0gIC8vIElucHV0OgotICAvLyAgIC1lbmFibGVfZmVjICAgICAgICAgOiBpZiB0cnVlIEZFQyB3
aWxsIGJlIGVuYWJsZWQgb3RoZXJ3aXNlIHRoZSBGRUMgaXMKLSAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgZGlzYWJsZWQuCi0gIC8vCi0gIC8vIFJldHVybiB2YWx1ZToKLSAgLy8gICAtMSBp
ZiBmYWlsZWQsIG9yIHRoZSBjb2RlYyBkb2VzIG5vdCBzdXBwb3J0IEZFQwotICAvLyAgICAwIGlm
IHN1Y2NlZWRlZC4KLSAgLy8KLSAgdmlydHVhbCBpbnQgU2V0Q29kZWNGRUMoYm9vbCBlbmFibGVf
Y29kZWNfZmVjKSA9IDA7Ci0KLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8vIGJvb2wgQ29kZWNG
RUMoKQotICAvLyBHZXRzIHN0YXR1cyBvZiBjb2RlYyBpbnRlcm5hbCBGRUMuCi0gIC8vCi0gIC8v
IFJldHVybiB2YWx1ZToKLSAgLy8gICB0cnVlIGlmIEZFQyBpcyBlbmFibGVkLAotICAvLyAgIGZh
bHNlIGlmIEZFQyBpcyBkaXNhYmxlZC4KLSAgLy8KLSAgdmlydHVhbCBib29sIENvZGVjRkVDKCkg
Y29uc3QgPSAwOwotCiAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAvLyBpbnQgU2V0UGFja2V0TG9z
c1JhdGUoKQogICAvLyBTZXRzIGV4cGVjdGVkIHBhY2tldCBsb3NzIHJhdGUgZm9yIGVuY29kaW5n
LiBTb21lIGVuY29kZXJzIHByb3ZpZGUgcGFja2V0CkBAIC0zNDMsNTUgKzI0NCw2IEBAIGNsYXNz
IEF1ZGlvQ29kaW5nTW9kdWxlIHsKICAgLy8gICAoVkFEKSBWb2ljZSBBY3Rpdml0eSBEZXRlY3Rp
b24KICAgLy8KIAotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gaW50MzJfdCBTZXRWQUQoKQot
ICAvLyBJZiBEVFggaXMgZW5hYmxlZCAmIHRoZSBjb2RlYyBkb2VzIG5vdCBoYXZlIGludGVybmFs
IERUWC9WQUQKLSAgLy8gV2ViUnRjIFZBRCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBh
bmQgfGVuYWJsZV92YWR8IGlzIGlnbm9yZWQuCi0gIC8vCi0gIC8vIElmIERUWCBpcyBkaXNhYmxl
ZCBidXQgVkFEIGlzIGVuYWJsZWQgbm8gRFRYIHBhY2tldHMgYXJlIHNlbmQsCi0gIC8vIHJlZ2Fy
ZGxlc3Mgb2Ygd2hldGhlciB0aGUgY29kZWMgaGFzIGludGVybmFsIERUWC9WQUQgb3Igbm90LiBJ
biB0aGlzCi0gIC8vIGNhc2UsIFdlYlJ0YyBWQUQgaXMgcnVubmluZyB0byBsYWJlbCBmcmFtZXMg
YXMgYWN0aXZlL2luLWFjdGl2ZS4KLSAgLy8KLSAgLy8gTk9URSEgVkFEL0RUWCBpcyBub3Qgc3Vw
cG9ydGVkIHdoZW4gc2VuZGluZyBzdGVyZW8uCi0gIC8vCi0gIC8vIElucHV0czoKLSAgLy8gICAt
ZW5hYmxlX2R0eCAgICAgICAgIDogaWYgdHJ1ZSBEVFggaXMgZW5hYmxlZCwKLSAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgb3RoZXJ3aXNlIERUWCBpcyBkaXNhYmxlZC4KLSAgLy8gICAtZW5h
YmxlX3ZhZCAgICAgICAgIDogaWYgdHJ1ZSBWQUQgaXMgZW5hYmxlZCwKLSAgLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgb3RoZXJ3aXNlIFZBRCBpcyBkaXNhYmxlZC4KLSAgLy8gICAtdmFkX21v
ZGUgICAgICAgICAgIDogZGV0ZXJtaW5lcyB0aGUgYWdncmVzc2l2ZW5lc3Mgb2YgVkFELiBBIG1v
cmUKLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVzc2l2ZSBtb2RlIHJlc3VsdHMg
aW4gbW9yZSBmcmFtZXMgbGFiZWxlZAotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcyBp
bi1hY3RpdmUsIGMuZi4gZGVmaW5pdGlvbiBvZgotICAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICBBQ01WQURNb2RlIGluIGF1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMuaAotICAvLyAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgdmFsaWQgdmFsdWVzLgotICAvLwotICAvLyBSZXR1cm4g
dmFsdWU6Ci0gIC8vICAgLTEgaWYgZmFpbGVkIHRvIHNldCB1cCBWQUQvRFRYLAotICAvLyAgICAw
IGlmIHN1Y2NlZWRlZC4KLSAgLy8KLSAgdmlydHVhbCBpbnQzMl90IFNldFZBRChjb25zdCBib29s
IGVuYWJsZV9kdHggPSB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wg
ZW5hYmxlX3ZhZCA9IGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFDTVZB
RE1vZGUgdmFkX21vZGUgPSBWQUROb3JtYWwpID0gMDsKLQotICAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LSAgLy8gaW50MzJfdCBWQUQoKQotICAvLyBHZXQgVkFEIHN0YXR1cy4KLSAgLy8KLSAgLy8gT3V0
cHV0czoKLSAgLy8gICAtZHR4X2VuYWJsZWQgICAgICAgIDogaXMgc2V0IHRvIHRydWUgaWYgRFRY
IGlzIGVuYWJsZWQsIG90aGVyd2lzZQotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBpcyBz
ZXQgdG8gZmFsc2UuCi0gIC8vICAgLXZhZF9lbmFibGVkICAgICAgICA6IGlzIHNldCB0byB0cnVl
IGlmIFZBRCBpcyBlbmFibGVkLCBvdGhlcndpc2UKLSAgLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgaXMgc2V0IHRvIGZhbHNlLgotICAvLyAgIC12YWRfbW9kZSAgICAgICAgICAgIDogaXMgc2V0
IHRvIHRoZSBjdXJyZW50IGFnZ3Jlc3NpdmVuZXNzIG9mIFZBRC4KLSAgLy8KLSAgLy8gUmV0dXJu
IHZhbHVlOgotICAvLyAgIC0xIGlmIGZhaWxzIHRvIHJldHJpZXZlIHRoZSBzZXR0aW5nIG9mIERU
WC9WQUQsCi0gIC8vICAgIDAgaWYgc3VjY2VlZGVkLgotICAvLwotICB2aXJ0dWFsIGludDMyX3Qg
VkFEKGJvb2wqIGR0eF9lbmFibGVkLAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wqIHZhZF9l
bmFibGVkLAotICAgICAgICAgICAgICAgICAgICAgIEFDTVZBRE1vZGUqIHZhZF9tb2RlKSBjb25z
dCA9IDA7Ci0KICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgIC8vIGludDMyX3QgUmVnaXN0ZXJWQURD
YWxsYmFjaygpCiAgIC8vIENhbGwgdGhpcyBtZXRob2QgdG8gcmVnaXN0ZXIgYSBjYWxsYmFjayBm
dW5jdGlvbiB3aGljaCBpcyBjYWxsZWQKQEAgLTQ1NSwyOSArMzA3LDYgQEAgY2xhc3MgQXVkaW9D
b2RpbmdNb2R1bGUgewogICB2aXJ0dWFsIGJvb2wgUmVnaXN0ZXJSZWNlaXZlQ29kZWMoaW50IHJ0
cF9wYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTZHBBdWRpb0Zvcm1hdCYgYXVkaW9fZm9ybWF0KSA9IDA7CiAKLSAgLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0gIC8vIGludDMyX3QgUmVnaXN0ZXJSZWNlaXZlQ29kZWMoKQotICAvLyBSZWdpc3RlciBw
b3NzaWJsZSBkZWNvZGVycywgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBmb3IKLSAgLy8g
Y29kZWNzLCBDTkctTkIsIENORy1XQiwgQ05HLVNXQiwgQVZUIGFuZCBSRUQuCi0gIC8vCi0gIC8v
IElucHV0OgotICAvLyAgIC1yZWNlaXZlX2NvZGVjICAgICAgOiBwYXJhbWV0ZXJzIG9mIHRoZSBj
b2RlYyB0byBiZSByZWdpc3RlcmVkLCBjLmYuCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1vbl90eXBlcy5oIGZvciB0aGUgZGVmaW5pdGlvbiBvZgotICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICBDb2RlY0luc3QuCi0gIC8vCi0gIC8vIFJldHVybiB2YWx1ZToKLSAgLy8gICAt
MSBpZiBmYWlsZWQgdG8gcmVnaXN0ZXIgdGhlIGNvZGVjCi0gIC8vICAgIDAgaWYgdGhlIGNvZGVj
IHJlZ2lzdGVyZWQgc3VjY2Vzc2Z1bGx5LgotICAvLwotICB2aXJ0dWFsIGludCBSZWdpc3RlclJl
Y2VpdmVDb2RlYyhjb25zdCBDb2RlY0luc3QmIHJlY2VpdmVfY29kZWMpID0gMDsKLQotICAvLyBS
ZWdpc3RlciBhIGRlY29kZXI7IGNhbGwgcmVwZWF0ZWRseSB0byByZWdpc3RlciBtdWx0aXBsZSBk
ZWNvZGVycy4gfGRmfCBpcwotICAvLyBhIGRlY29kZXIgZmFjdG9yeSB0aGF0IHJldHVybnMgYW4g
aVNBQyBkZWNvZGVyOyBpdCB3aWxsIGJlIGNhbGxlZCBvbmNlIGlmCi0gIC8vIHRoZSBkZWNvZGVy
IGJlaW5nIHJlZ2lzdGVyZWQgaXMgaVNBQy4KLSAgdmlydHVhbCBpbnQgUmVnaXN0ZXJSZWNlaXZl
Q29kZWMoCi0gICAgICBjb25zdCBDb2RlY0luc3QmIHJlY2VpdmVfY29kZWMsCi0gICAgICBydGM6
OkZ1bmN0aW9uVmlldzxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPigpPiBpc2FjX2ZhY3Rv
cnkpID0gMDsKLQogICAvLyBSZWdpc3RlcnMgYW4gZXh0ZXJuYWwgZGVjb2Rlci4gVGhlIG5hbWUg
aXMgb25seSB1c2VkIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24KICAgLy8gYmFjayB0byB0aGUgY2Fs
bGVyIGFib3V0IHRoZSBkZWNvZGVyLiBIZW5jZSwgdGhlIG5hbWUgaXMgYXJiaXRyYXJ5LCBhbmQg
bWF5CiAgIC8vIGJlIGVtcHR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2Rp
bmdfbW9kdWxlX3R5cGVkZWZzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGVf
dHlwZWRlZnMuaAppbmRleCBjZDQzNTFiMDdmZjFiOTQzNDUwOTA0MzkwODczMjk2ZTY3MzM1NGU0
Li5iYWZmZjcyZTVhZDRiNmFjZjAxZWEyODNkZTdjMDYxNTYxYTVmMzYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9p
bmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMuaApAQCAtMTMsNiArMTMsOCBAQAog
CiAjaW5jbHVkZSA8bWFwPgogCisjaW5jbHVkZSAicnRjX2Jhc2UvZGVwcmVjYXRpb24uaCIKKwog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtNDMsNiArNDUsODQg
QEAgZW51bSBPcHVzQXBwbGljYXRpb25Nb2RlIHsKICAga0F1ZGlvID0gMSwKIH07CiAKKy8vIFN0
YXRpc3RpY3MgZm9yIGNhbGxzIHRvIEF1ZGlvQ29kaW5nTW9kdWxlOjpQbGF5b3V0RGF0YTEwTXMo
KS4KK3N0cnVjdCBBdWRpb0RlY29kaW5nQ2FsbFN0YXRzIHsKKyAgQXVkaW9EZWNvZGluZ0NhbGxT
dGF0cygpCisgICAgICA6IGNhbGxzX3RvX3NpbGVuY2VfZ2VuZXJhdG9yKDApLAorICAgICAgICBj
YWxsc190b19uZXRlcSgwKSwKKyAgICAgICAgZGVjb2RlZF9ub3JtYWwoMCksCisgICAgICAgIGRl
Y29kZWRfcGxjKDApLAorICAgICAgICBkZWNvZGVkX2NuZygwKSwKKyAgICAgICAgZGVjb2RlZF9w
bGNfY25nKDApLAorICAgICAgICBkZWNvZGVkX211dGVkX291dHB1dCgwKSB7fQorCisgIGludCBj
YWxsc190b19zaWxlbmNlX2dlbmVyYXRvcjsgIC8vIE51bWJlciBvZiBjYWxscyB3aGVyZSBzaWxl
bmNlIGdlbmVyYXRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5k
IE5ldEVxIHdhcyBkaXNlbmdhZ2VkIGZyb20gZGVjb2RpbmcuCisgIGludCBjYWxsc190b19uZXRl
cTsgICAgICAgICAgICAgIC8vIE51bWJlciBvZiBjYWxscyB0byBOZXRFcS4KKyAgaW50IGRlY29k
ZWRfbm9ybWFsOyAgLy8gTnVtYmVyIG9mIGNhbGxzIHdoZXJlIGF1ZGlvIFJUUCBwYWNrZXQgZGVj
b2RlZC4KKyAgaW50IGRlY29kZWRfcGxjOyAgICAgLy8gTnVtYmVyIG9mIGNhbGxzIHJlc3VsdGVk
IGluIFBMQy4KKyAgaW50IGRlY29kZWRfY25nOyAgLy8gTnVtYmVyIG9mIGNhbGxzIHdoZXJlIGNv
bWZvcnQgbm9pc2UgZ2VuZXJhdGVkIGR1ZSB0byBEVFguCisgIGludCBkZWNvZGVkX3BsY19jbmc7
ICAgICAgIC8vIE51bWJlciBvZiBjYWxscyByZXN1bHRlZCB3aGVyZSBQTEMgZmFkZWQgdG8gQ05H
LgorICBpbnQgZGVjb2RlZF9tdXRlZF9vdXRwdXQ7ICAvLyBOdW1iZXIgb2YgY2FsbHMgcmV0dXJu
aW5nIGEgbXV0ZWQgc3RhdGUgb3V0cHV0LgorfTsKKworLy8gTkVURVEgc3RhdGlzdGljcy4KK3N0
cnVjdCBOZXR3b3JrU3RhdGlzdGljcyB7CisgIC8vIGN1cnJlbnQgaml0dGVyIGJ1ZmZlciBzaXpl
IGluIG1zCisgIHVpbnQxNl90IGN1cnJlbnRCdWZmZXJTaXplOworICAvLyBwcmVmZXJyZWQgKG9w
dGltYWwpIGJ1ZmZlciBzaXplIGluIG1zCisgIHVpbnQxNl90IHByZWZlcnJlZEJ1ZmZlclNpemU7
CisgIC8vIGFkZGluZyBleHRyYSBkZWxheSBkdWUgdG8gInBlYWt5IGppdHRlciIKKyAgYm9vbCBq
aXR0ZXJQZWFrc0ZvdW5kOworICAvLyBTdGF0cyBiZWxvdyBjb3JyZXNwb25kIHRvIHNpbWlsYXJs
eS1uYW1lZCBmaWVsZHMgaW4gdGhlIFdlYlJUQyBzdGF0cyBzcGVjLgorICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNkb20tcnRjbWVkaWFzdHJlYW10cmFja3N0YXRzCisg
IHVpbnQ2NF90IHRvdGFsU2FtcGxlc1JlY2VpdmVkOworICB1aW50NjRfdCBjb25jZWFsZWRTYW1w
bGVzOworICB1aW50NjRfdCBjb25jZWFsbWVudEV2ZW50czsKKyAgdWludDY0X3Qgaml0dGVyQnVm
ZmVyRGVsYXlNczsKKyAgLy8gU3RhdHMgYmVsb3cgRE8gTk9UIGNvcnJlc3BvbmQgZGlyZWN0bHkg
dG8gYW55dGhpbmcgaW4gdGhlIFdlYlJUQyBzdGF0cworICAvLyBMb3NzIHJhdGUgKG5ldHdvcmsg
KyBsYXRlKTsgZnJhY3Rpb24gYmV0d2VlbiAwIGFuZCAxLCBzY2FsZWQgdG8gUTE0LgorICB1aW50
MTZfdCBjdXJyZW50UGFja2V0TG9zc1JhdGU7CisgIC8vIExhdGUgbG9zcyByYXRlOyBmcmFjdGlv
biBiZXR3ZWVuIDAgYW5kIDEsIHNjYWxlZCB0byBRMTQuCisgIHVuaW9uIHsKKyAgICBSVENfREVQ
UkVDQVRFRCB1aW50MTZfdCBjdXJyZW50RGlzY2FyZFJhdGU7CisgIH07CisgIC8vIGZyYWN0aW9u
IChvZiBvcmlnaW5hbCBzdHJlYW0pIG9mIHN5bnRoZXNpemVkIGF1ZGlvIGluc2VydGVkIHRocm91
Z2gKKyAgLy8gZXhwYW5zaW9uIChpbiBRMTQpCisgIHVpbnQxNl90IGN1cnJlbnRFeHBhbmRSYXRl
OworICAvLyBmcmFjdGlvbiAob2Ygb3JpZ2luYWwgc3RyZWFtKSBvZiBzeW50aGVzaXplZCBzcGVl
Y2ggaW5zZXJ0ZWQgdGhyb3VnaAorICAvLyBleHBhbnNpb24gKGluIFExNCkKKyAgdWludDE2X3Qg
Y3VycmVudFNwZWVjaEV4cGFuZFJhdGU7CisgIC8vIGZyYWN0aW9uIG9mIHN5bnRoZXNpemVkIHNw
ZWVjaCBpbnNlcnRlZCB0aHJvdWdoIHByZS1lbXB0aXZlIGV4cGFuc2lvbgorICAvLyAoaW4gUTE0
KQorICB1aW50MTZfdCBjdXJyZW50UHJlZW1wdGl2ZVJhdGU7CisgIC8vIGZyYWN0aW9uIG9mIGRh
dGEgcmVtb3ZlZCB0aHJvdWdoIGFjY2VsZXJhdGlvbiAoaW4gUTE0KQorICB1aW50MTZfdCBjdXJy
ZW50QWNjZWxlcmF0ZVJhdGU7CisgIC8vIGZyYWN0aW9uIG9mIGRhdGEgY29taW5nIGZyb20gc2Vj
b25kYXJ5IGRlY29kaW5nIChpbiBRMTQpCisgIHVpbnQxNl90IGN1cnJlbnRTZWNvbmRhcnlEZWNv
ZGVkUmF0ZTsKKyAgLy8gRnJhY3Rpb24gb2Ygc2Vjb25kYXJ5IGRhdGEsIGluY2x1ZGluZyBGRUMg
YW5kIFJFRCwgdGhhdCBpcyBkaXNjYXJkZWQgKGluCisgIC8vIFExNCkuIERpc2NhcmRpbmcgb2Yg
c2Vjb25kYXJ5IGRhdGEgY2FuIGJlIGNhdXNlZCBieSB0aGUgcmVjZXB0aW9uIG9mIHRoZQorICAv
LyBwcmltYXJ5IGRhdGEsIG9ic29sZXRpbmcgdGhlIHNlY29uZGFyeSBkYXRhLiBJdCBjYW4gYWxz
byBiZSBjYXVzZWQgYnkgZWFybHkKKyAgLy8gb3IgbGF0ZSBhcnJpdmFsIG9mIHNlY29uZGFyeSBk
YXRhLgorICB1aW50MTZfdCBjdXJyZW50U2Vjb25kYXJ5RGlzY2FyZGVkUmF0ZTsKKyAgLy8gY2xv
Y2stZHJpZnQgaW4gcGFydHMtcGVyLW1pbGxpb24gKG5lZ2F0aXZlIG9yIHBvc2l0aXZlKQorICBp
bnQzMl90IGNsb2NrRHJpZnRQUE07CisgIC8vIGF2ZXJhZ2UgcGFja2V0IHdhaXRpbmcgdGltZSBp
biB0aGUgaml0dGVyIGJ1ZmZlciAobXMpCisgIGludCBtZWFuV2FpdGluZ1RpbWVNczsKKyAgLy8g
bWVkaWFuIHBhY2tldCB3YWl0aW5nIHRpbWUgaW4gdGhlIGppdHRlciBidWZmZXIgKG1zKQorICBp
bnQgbWVkaWFuV2FpdGluZ1RpbWVNczsKKyAgLy8gbWluIHBhY2tldCB3YWl0aW5nIHRpbWUgaW4g
dGhlIGppdHRlciBidWZmZXIgKG1zKQorICBpbnQgbWluV2FpdGluZ1RpbWVNczsKKyAgLy8gbWF4
IHBhY2tldCB3YWl0aW5nIHRpbWUgaW4gdGhlIGppdHRlciBidWZmZXIgKG1zKQorICBpbnQgbWF4
V2FpdGluZ1RpbWVNczsKKyAgLy8gYWRkZWQgc2FtcGxlcyBpbiBvZmYgbW9kZSBkdWUgdG8gcGFj
a2V0IGxvc3MKKyAgc2l6ZV90IGFkZGVkU2FtcGxlczsKKyAgLy8gY291bnQgb2YgdGhlIG51bWJl
ciBvZiBidWZmZXIgZmx1c2hlcworICB1aW50NjRfdCBwYWNrZXRCdWZmZXJGbHVzaGVzOworICAv
LyBudW1iZXIgb2Ygc2FtcGxlcyBleHBhbmRlZCBkdWUgdG8gZGVsYXllZCBwYWNrZXRzCisgIHVp
bnQ2NF90IGRlbGF5ZWRQYWNrZXRPdXRhZ2VTYW1wbGVzOworfTsKKwogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwogCiAjZW5kaWYgIC8vIE1PRFVMRVNfQVVESU9fQ09ESU5HX0lOQ0xVREVfQVVESU9f
Q09ESU5HX01PRFVMRV9UWVBFREVGU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYWNjZWxl
cmF0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL2FjY2VsZXJhdGUuY2MKaW5kZXggMTgzNTBiMGE3ODk3MTA2
NDY1NDQ5N2JmZGE3NjFlYTFkMzBmZmFmNC4uNjE2MWE4ZjkxYmYyOTRmYzRjY2M1MmRmNGZjMjNi
ZmFkYjNlNmM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9hY2NlbGVyYXRlLmNjCkBAIC0xMCw3ICsxMCwxMCBAQAogCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5oIgogCi0jaW5jbHVkZSAiY29t
bW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGli
cmFyeS5oIgorI2luY2x1ZGUgPGFzc2VydC5oPgorCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0
b3IuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2Fj
Y2VsZXJhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2FjY2VsZXJhdGUuaAppbmRleCA1NjA5NTY4OTViN2Rm
NjNjZDY2NWRjNGJhMTQxYWE5MzM5NTYwNjhjLi4xYTNhZjQyYjJlOWYzYzRjODhiOTFhNzA4ZjQ0
NmQxNDFlODZlMjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hY2NlbGVyYXRlLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5oCkBAIC0xMSwxMyArMTEsMTUgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19DT0RJTkdfTkVURVFfQUNDRUxFUkFURV9IXwogI2RlZmluZSBNT0RVTEVTX0FV
RElPX0NPRElOR19ORVRFUV9BQ0NFTEVSQVRFX0hfCiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKKyNpbmNsdWRlIDxzdGRkZWYuaD4K
KyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3RpbWVfc3RyZXRjaC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLS8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgorY2xh
c3MgQXVkaW9NdWx0aVZlY3RvcjsKIGNsYXNzIEJhY2tncm91bmROb2lzZTsKIAogLy8gVGhpcyBj
bGFzcyBpbXBsZW1lbnRzIHRoZSBBY2NlbGVyYXRlIG9wZXJhdGlvbi4gTW9zdCBvZiB0aGUgd29y
ayBpcyBkb25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oCmluZGV4IDg2ZjgyODIwY2E3YTc3YmQ2
NmQwYzY0MGQxOTUwNjZkY2U5ZWJiMjYuLmEyZGQzYzNjYjEwY2ZkNGNjYjU4YmIyYTg4ZDA5OTc3
OGJiZDcyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oCkBAIC0xMSw4ICsxMSw4IEBACiAj
aWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0FVRElPX01VTFRJX1ZFQ1RPUl9IXwog
I2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9BVURJT19NVUxUSV9WRUNUT1JfSF8K
IAotI2luY2x1ZGUgPHN0cmluZy5oPiAgLy8gQWNjZXNzIHRvIHNpemVfdC4KLQorI2luY2x1ZGUg
PHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lu
Y2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb192
ZWN0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX3ZlY3Rvci5oCmluZGV4IDgyNWEzYmNlYWM5YmUw
ZjNiNWVkNjBhMjdmNTY4ZTc3M2YyOTNkMzAuLmQwZGIzMzJkYjY1ZGU4NDhkMzAyZjIwNjRiMzAy
ZmYxMWIxMDNhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX3ZlY3Rvci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2F1ZGlvX3ZlY3Rvci5oCkBAIC0xMSw3ICsxMSw4IEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0FVRElPX1ZFQ1RPUl9IXwogI2RlZmluZSBNT0RVTEVT
X0FVRElPX0NPRElOR19ORVRFUV9BVURJT19WRUNUT1JfSF8KIAotI2luY2x1ZGUgPHN0cmluZy5o
PiAgLy8gQWNjZXNzIHRvIHNpemVfdC4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxj
c3RkaW50PgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYmFja2dyb3VuZF9ub2lzZS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvYmFja2dyb3VuZF9ub2lzZS5oCmluZGV4IDU4ZWVjYWE3MDVjZTgyNTJkYzg3YmI3NzU0YzIz
YzdlMjI5MmFjZTQuLjg0ZDdlYjlkNzQ1YWYzNmE0N2M0NzY3ZTljZmFkNTMwZGIxNGVlZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL2JhY2tncm91bmRfbm9pc2UuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9iYWNrZ3JvdW5kX25vaXNlLmgKQEAgLTE0LDEzICsxNCwxMiBAQAogI2luY2x1ZGUgPHN0cmlu
Zy5oPiAgLy8gc2l6ZV90CiAjaW5jbHVkZSA8bWVtb3J5PgogCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvaW5jbHVkZS9uZXRlcS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEZvcndhcmQg
ZGVjbGFyYXRpb25zLgorY2xhc3MgQXVkaW9NdWx0aVZlY3RvcjsKIGNsYXNzIFBvc3REZWNvZGVW
YWQ7CiAKIC8vIFRoaXMgY2xhc3MgaGFuZGxlcyBlc3RpbWF0aW9uIG9mIGJhY2tncm91bmQgbm9p
c2UgcGFyYW1ldGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2J1ZmZlcl9sZXZlbF9maWx0
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9idWZmZXJfbGV2ZWxfZmlsdGVyLmNjCmluZGV4IDZlOGRhMGEw
MWI5NWZiMGNiOTZmMDNlOTNmY2ZiYTJhNjBjNWYyMTYuLjJmOTY2MTg1MzYyZjk0ZWVlOWNiYjYw
OWZlODhjMDMwMWZmOWRiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2J1ZmZlcl9sZXZlbF9m
aWx0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYnVmZmVyX2xldmVsX2ZpbHRlci5jYwpAQCAtMTAs
NyArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYnVmZmVy
X2xldmVsX2ZpbHRlci5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gUHJvdmlkZSBhY2Nl
c3MgdG8gc3RkOjptYXguCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGht
PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9jb21mb3J0X25vaXNlLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvY29t
Zm9ydF9ub2lzZS5jYwppbmRleCBiMzQxYWNkNWE1MGQ2ZTU4YjhkZDIzNjVhZjVjNmQ2YmRhNzI0
Njg5Li5jYjJiNzRkYmYyYjE5YTBhZjhmMTUzYzY4ZTc0ZTRmNzgwNWY4OWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9jb21mb3J0X25vaXNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2NvbWZvcnRf
bm9pc2UuY2MKQEAgLTExLDExICsxMSwxOCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2NvbWZvcnRfbm9pc2UuaCIKIAogI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1
ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8bWVtb3J5PgogCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2Nv
ZGVjcy9hdWRpb19kZWNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL3dlYnJ0Y19jbmcuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb192ZWN0b3IuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHNwX2hlbHBlci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N5bmNfYnVmZmVyLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2NvbWZvcnRfbm9pc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2NvbWZvcnRfbm9pc2UuaApp
bmRleCA1MTY5MTI0MDQwZjY3N2MwNGZlZGNhMTJhMDQxOWRiYzM4MzIwMTkxLi4zYTliZmRlN2Fh
YjViNGU2MTgxM2Q1ZDY5ZWE0ZjkwNjAzODNiYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9j
b21mb3J0X25vaXNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvY29tZm9ydF9ub2lzZS5oCkBAIC0xMSwx
MiArMTEsMTQgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfQ09NRk9SVF9O
T0lTRV9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9DT01GT1JUX05PSVNF
X0hfCiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92
ZWN0b3IuaCIKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0
cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEZvcndhcmQgZGVjbGFy
YXRpb25zLgorY2xhc3MgQXVkaW9NdWx0aVZlY3RvcjsKIGNsYXNzIERlY29kZXJEYXRhYmFzZTsK
IGNsYXNzIFN5bmNCdWZmZXI7CiBzdHJ1Y3QgUGFja2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvY3Jvc3NfY29ycmVsYXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2Nyb3NzX2NvcnJlbGF0aW9uLmgK
aW5kZXggYTc0Nzc3MmNmYzQzNTJiYjI4ZGE1MjY1ZjAzOWNhMzQ3ZjQ0ZTFiNi4uOWNlOGJlODNh
ZWNmMGY1MmRlYWI3Y2RiMmI2M2U3M2M5Y2M2NjcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
Y3Jvc3NfY29ycmVsYXRpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9jcm9zc19jb3JyZWxhdGlvbi5o
CkBAIC0xMSw3ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0NS
T1NTX0NPUlJFTEFUSU9OX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0NS
T1NTX0NPUlJFTEFUSU9OX0hfCiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElO
VChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5o
PgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjaXNp
b25fbG9naWMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpYy5jYwppbmRleCAzNDlmZGFi
OWYxNWQwOTczZTlmOGMzOTNlZGQ1NmY0M2Y4OGZiNzEyLi44M2MyYjNiOTBjNTY5ZWFiM2NjMTFk
NDkxOTcxY2ViMDY5MzJkM2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dp
Yy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpYy5jYwpAQCAtMTEsOCArMTEsOCBA
QAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY2lzaW9uX2xvZ2ljLmgi
CiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYnVmZmVyX2xldmVsX2ZpbHRlci5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2UuaCIKQEAg
LTIwLDggKzIwLDkgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBh
bmQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRfYnVmZmVy
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3luY19idWZmZXIuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAi
c3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY2lzaW9uX2xvZ2ljLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNp
c2lvbl9sb2dpYy5oCmluZGV4IDM5NzYxZGEwNzAyYjQxOWI3ZDU1NTczZjMzMmU3Njk3ZDEzZjQy
NDYuLjJhNTMzNTk0YjMzODJmNDcxY2UwODhhODZmMjIzZTE4NWY4YjZmMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2RlY2lzaW9uX2xvZ2ljLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjaXNpb25f
bG9naWMuaApAQCAtMTIsNyArMTIsNiBAQAogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19O
RVRFUV9ERUNJU0lPTl9MT0dJQ19IXwogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvZGVmaW5lcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2lu
Y2x1ZGUvbmV0ZXEuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aWNr
X3RpbWVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpY191bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2RlY2lzaW9uX2xvZ2ljX3VuaXR0ZXN0LmNjCmluZGV4IDA4NzIwZDE3NjhmNDU2ZDAwMDgx
YjMwMDg3ZTBmMTA1YWVlMTU3NTguLjE4M2I5Yzc5YzkzNTYzMzFmMDdkM2Y2ODA2ZTkxYjg5NTdj
OTA3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY2lzaW9uX2xvZ2ljX3VuaXR0ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL2RlY2lzaW9uX2xvZ2ljX3VuaXR0ZXN0LmNjCkBAIC0zMSw3ICsz
MSw3IEBAIFRFU1QoRGVjaXNpb25Mb2dpYywgQ3JlYXRlQW5kRGVzdHJveSkgewogICBUaWNrVGlt
ZXIgdGlja190aW1lcjsKICAgUGFja2V0QnVmZmVyIHBhY2tldF9idWZmZXIoMTAsICZ0aWNrX3Rp
bWVyKTsKICAgRGVsYXlQZWFrRGV0ZWN0b3IgZGVsYXlfcGVha19kZXRlY3RvcigmdGlja190aW1l
cik7Ci0gIERlbGF5TWFuYWdlciBkZWxheV9tYW5hZ2VyKDI0MCwgJmRlbGF5X3BlYWtfZGV0ZWN0
b3IsICZ0aWNrX3RpbWVyKTsKKyAgRGVsYXlNYW5hZ2VyIGRlbGF5X21hbmFnZXIoMjQwLCAwLCAm
ZGVsYXlfcGVha19kZXRlY3RvciwgJnRpY2tfdGltZXIpOwogICBCdWZmZXJMZXZlbEZpbHRlciBi
dWZmZXJfbGV2ZWxfZmlsdGVyOwogICBEZWNpc2lvbkxvZ2ljKiBsb2dpYyA9IERlY2lzaW9uTG9n
aWM6OkNyZWF0ZSgKICAgICAgIGZzX2h6LCBvdXRwdXRfc2l6ZV9zYW1wbGVzLCBmYWxzZSwgJmRl
Y29kZXJfZGF0YWJhc2UsIHBhY2tldF9idWZmZXIsCkBAIC00OCw3ICs0OCw3IEBAIFRFU1QoRGVj
aXNpb25Mb2dpYywgUG9zdHBvbmVEZWNvZGluZ0FmdGVyRXhwYW5zaW9uU2V0dGluZ3MpIHsKICAg
VGlja1RpbWVyIHRpY2tfdGltZXI7CiAgIFBhY2tldEJ1ZmZlciBwYWNrZXRfYnVmZmVyKDEwLCAm
dGlja190aW1lcik7CiAgIERlbGF5UGVha0RldGVjdG9yIGRlbGF5X3BlYWtfZGV0ZWN0b3IoJnRp
Y2tfdGltZXIpOwotICBEZWxheU1hbmFnZXIgZGVsYXlfbWFuYWdlcigyNDAsICZkZWxheV9wZWFr
X2RldGVjdG9yLCAmdGlja190aW1lcik7CisgIERlbGF5TWFuYWdlciBkZWxheV9tYW5hZ2VyKDI0
MCwgMCwgJmRlbGF5X3BlYWtfZGV0ZWN0b3IsICZ0aWNrX3RpbWVyKTsKICAgQnVmZmVyTGV2ZWxG
aWx0ZXIgYnVmZmVyX2xldmVsX2ZpbHRlcjsKICAgewogICAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJp
YWxzIGZpZWxkX3RyaWFsKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjb2Rlcl9kYXRhYmFz
ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2UuY2MKaW5kZXggMWZkOGMwM2NhMjRh
NjNiYTU1NTkwYWFjYWMzNGEwNWMwM2Y1YzZiYS4uMDg5MGJlYjkzNDJkNjgyZmRjZTZjY2JkYjk4
YzA0NTcxYzE4Mzc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjb2Rlcl9kYXRhYmFzZS5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmNjCkBAIC0xMCw5ICsxMCwxNSBA
QAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjb2Rlcl9kYXRhYmFz
ZS5oIgogCi0jaW5jbHVkZSA8dXRpbGl0eT4gIC8vIHBhaXIKKyNpbmNsdWRlIDxzdGRkZWYuaD4K
KyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5o
IgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oIgorI2luY2x1ZGUg
ImNvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL2F1ZGlvX2Zv
cm1hdF90b19zdHJpbmcuaCIKQEAgLTEwMSw3ICsxMDcsNyBAQCBBdWRpb0RlY29kZXIqIERlY29k
ZXJEYXRhYmFzZTo6RGVjb2RlckluZm86OkdldERlY29kZXIoKSBjb25zdCB7CiB9CiAKIGJvb2wg
RGVjb2RlckRhdGFiYXNlOjpEZWNvZGVySW5mbzo6SXNUeXBlKGNvbnN0IGNoYXIqIG5hbWUpIGNv
bnN0IHsKLSAgcmV0dXJuIFNUUl9DQVNFX0NNUChhdWRpb19mb3JtYXRfLm5hbWUuY19zdHIoKSwg
bmFtZSkgPT0gMDsKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoYXVkaW9fZm9ybWF0
Xy5uYW1lLCBuYW1lKTsKIH0KIAogYm9vbCBEZWNvZGVyRGF0YWJhc2U6OkRlY29kZXJJbmZvOjpJ
c1R5cGUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIGNvbnN0IHsKQEAgLTExMCw3ICsxMTYsNyBA
QCBib29sIERlY29kZXJEYXRhYmFzZTo6RGVjb2RlckluZm86OklzVHlwZShjb25zdCBzdGQ6OnN0
cmluZyYgbmFtZSkgY29uc3QgewogCiBhYnNsOjpvcHRpb25hbDxEZWNvZGVyRGF0YWJhc2U6OkRl
Y29kZXJJbmZvOjpDbmdEZWNvZGVyPgogRGVjb2RlckRhdGFiYXNlOjpEZWNvZGVySW5mbzo6Q25n
RGVjb2Rlcjo6Q3JlYXRlKGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgaWYgKFNU
Ul9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0cigpLCAiQ04iKSA9PSAwKSB7CisgIGlmIChhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiQ04iKSkgewogICAgIC8vIENOIGhhcyBh
IDE6MSBSVFAgY2xvY2sgcmF0ZSB0byBzYW1wbGUgcmF0ZSByYXRpby4KICAgICBjb25zdCBpbnQg
c2FtcGxlX3JhdGVfaHogPSBmb3JtYXQuY2xvY2tyYXRlX2h6OwogICAgIFJUQ19EQ0hFQ0soc2Ft
cGxlX3JhdGVfaHogPT0gODAwMCB8fCBzYW1wbGVfcmF0ZV9oeiA9PSAxNjAwMCB8fApAQCAtMTIz
LDExICsxMjksMTEgQEAgRGVjb2RlckRhdGFiYXNlOjpEZWNvZGVySW5mbzo6Q25nRGVjb2Rlcjo6
Q3JlYXRlKGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKIAogRGVjb2RlckRhdGFiYXNl
OjpEZWNvZGVySW5mbzo6U3VidHlwZQogRGVjb2RlckRhdGFiYXNlOjpEZWNvZGVySW5mbzo6U3Vi
dHlwZUZyb21Gb3JtYXQoY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBpZiAoU1RS
X0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJDTiIpID09IDApIHsKKyAgaWYgKGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJDTiIpKSB7CiAgICAgcmV0dXJuIFN1YnR5
cGU6OmtDb21mb3J0Tm9pc2U7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1l
LmNfc3RyKCksICJ0ZWxlcGhvbmUtZXZlbnQiKSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgInRlbGVwaG9uZS1ldmVudCIpKSB7CiAgICAg
cmV0dXJuIFN1YnR5cGU6OmtEdG1mOwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChmb3JtYXQu
bmFtZS5jX3N0cigpLCAicmVkIikgPT0gMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJyZWQiKSkgewogICAgIHJldHVybiBTdWJ0eXBlOjprUmVk
OwogICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9kZWxheV9tYW5hZ2VyLmNjCmluZGV4IGU1ZWI1OTJlZmExMzQ3NTY1YjYyYjBiMTlk
YTc1ZjcxYTMyMDBkZDMuLjY3ZTZhMTNjMWQ3Njk1MjZkMTcxODIyNGE4NzdjMmU2NDJkYzkzYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvZGVsYXlfbWFuYWdlci5jYwpAQCAtMTEsMTQgKzExLDE1IEBACiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlfbWFuYWdlci5oIgogCiAjaW5jbHVkZSA8YXNzZXJ0
Lmg+Ci0jaW5jbHVkZSA8bWF0aC5oPgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gbWF4LCBt
aW4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDxudW1lcmljPgorI2luY2x1ZGUgPHN0cmluZz4KIAotI2luY2x1
ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNz
aW5nX2xpYnJhcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxh
eV9wZWFrX2RldGVjdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21t
b25fdHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBl
c19wdWJsaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJz
aW9ucy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgi
CkBAIC02MSw2ICs2Miw3IEBAIGFic2w6Om9wdGlvbmFsPGludD4gR2V0Rm9yY2VkTGltaXRQcm9i
YWJpbGl0eSgpIHsKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBEZWxheU1hbmFnZXI6OkRlbGF5TWFu
YWdlcihzaXplX3QgbWF4X3BhY2tldHNfaW5fYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGJhc2VfbWluX3RhcmdldF9kZWxheV9tcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERlbGF5UGVha0RldGVjdG9yKiBwZWFrX2RldGVjdG9yLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVGlja1RpbWVyKiB0aWNrX3RpbWVyKQogICAgIDogZmlyc3RfcGFj
a2V0X3JlY2VpdmVkXyhmYWxzZSksCkBAIC02OCwxMyArNzAsMTQgQEAgRGVsYXlNYW5hZ2VyOjpE
ZWxheU1hbmFnZXIoc2l6ZV90IG1heF9wYWNrZXRzX2luX2J1ZmZlciwKICAgICAgIGlhdF92ZWN0
b3JfKGtNYXhJYXQgKyAxLCAwKSwKICAgICAgIGlhdF9mYWN0b3JfKDApLAogICAgICAgdGlja190
aW1lcl8odGlja190aW1lciksCisgICAgICBiYXNlX21pbl90YXJnZXRfZGVsYXlfbXNfKGJhc2Vf
bWluX3RhcmdldF9kZWxheV9tcyksCiAgICAgICBiYXNlX3RhcmdldF9sZXZlbF8oNCksICAgICAg
ICAgICAgICAgICAgIC8vIEluIFEwIGRvbWFpbi4KICAgICAgIHRhcmdldF9sZXZlbF8oYmFzZV90
YXJnZXRfbGV2ZWxfIDw8IDgpLCAgLy8gSW4gUTggZG9tYWluLgogICAgICAgcGFja2V0X2xlbl9t
c18oMCksCiAgICAgICBzdHJlYW1pbmdfbW9kZV8oZmFsc2UpLAogICAgICAgbGFzdF9zZXFfbm9f
KDApLAogICAgICAgbGFzdF90aW1lc3RhbXBfKDApLAotICAgICAgbWluaW11bV9kZWxheV9tc18o
MCksCisgICAgICBtaW5pbXVtX2RlbGF5X21zXyhiYXNlX21pbl90YXJnZXRfZGVsYXlfbXNfKSwK
ICAgICAgIG1heGltdW1fZGVsYXlfbXNfKHRhcmdldF9sZXZlbF8pLAogICAgICAgaWF0X2N1bXVs
YXRpdmVfc3VtXygwKSwKICAgICAgIG1heF9pYXRfY3VtdWxhdGl2ZV9zdW1fKDApLApAQCAtODQs
NiArODcsOCBAQCBEZWxheU1hbmFnZXI6OkRlbGF5TWFuYWdlcihzaXplX3QgbWF4X3BhY2tldHNf
aW5fYnVmZmVyLAogICAgICAgICAgIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BdWRp
by1OZXRFcUZyYW1lbGVuZ3RoRXhwZXJpbWVudCIpKSwKICAgICAgIGZvcmNlZF9saW1pdF9wcm9i
YWJpbGl0eV8oR2V0Rm9yY2VkTGltaXRQcm9iYWJpbGl0eSgpKSB7CiAgIGFzc2VydChwZWFrX2Rl
dGVjdG9yKTsgIC8vIFNob3VsZCBuZXZlciBiZSBOVUxMLgorICBSVENfRENIRUNLX0dFKGJhc2Vf
bWluX3RhcmdldF9kZWxheV9tc18sIDApOworICBSVENfRENIRUNLX0xFKG1pbmltdW1fZGVsYXlf
bXNfLCBtYXhpbXVtX2RlbGF5X21zXyk7CiAKICAgUmVzZXQoKTsKIH0KQEAgLTQ4NCw3ICs0ODks
NyBAQCBib29sIERlbGF5TWFuYWdlcjo6U2V0TWluaW11bURlbGF5KGludCBkZWxheV9tcykgewog
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KDMgKiBtYXhfcGFja2V0c19pbl9idWZmZXJfICog
cGFja2V0X2xlbl9tc18gLyA0KSkpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KLSAgbWluaW11
bV9kZWxheV9tc18gPSBkZWxheV9tczsKKyAgbWluaW11bV9kZWxheV9tc18gPSBzdGQ6Om1heChk
ZWxheV9tcywgYmFzZV9taW5fdGFyZ2V0X2RlbGF5X21zXyk7CiAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9tYW5hZ2VyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9k
ZWxheV9tYW5hZ2VyLmgKaW5kZXggY2Q1ZmMwOTAzMTY5MWYyNTlmZGU0M2UxYzAyM2YwYzMwYWNi
ZjFlNS4uMmM4MDgxYjA3NWZlNDEzNTdlYTZjNjRkYmUyMDkxZTA1ZDQ4MWZkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvZGVsYXlfbWFuYWdlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21h
bmFnZXIuaApAQCAtMzEsOSArMzEsMTEgQEAgY2xhc3MgRGVsYXlNYW5hZ2VyIHsKIAogICAvLyBD
cmVhdGUgYSBEZWxheU1hbmFnZXIgb2JqZWN0LiBOb3RpZnkgdGhlIGRlbGF5IG1hbmFnZXIgdGhh
dCB0aGUgcGFja2V0CiAgIC8vIGJ1ZmZlciBjYW4gaG9sZCBubyBtb3JlIHRoYW4gfG1heF9wYWNr
ZXRzX2luX2J1ZmZlcnwgcGFja2V0cyAoaS5lLiwgdGhpcwotICAvLyBpcyB0aGUgbnVtYmVyIG9m
IHBhY2tldCBzbG90cyBpbiB0aGUgYnVmZmVyKS4gU3VwcGx5IGEgUGVha0RldGVjdG9yCi0gIC8v
IG9iamVjdCB0byB0aGUgRGVsYXlNYW5hZ2VyLgorICAvLyBpcyB0aGUgbnVtYmVyIG9mIHBhY2tl
dCBzbG90cyBpbiB0aGUgYnVmZmVyKSBhbmQgdGhhdCB0aGUgdGFyZ2V0IGRlbGF5CisgIC8vIHNo
b3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gfGJhc2VfbWluX3RhcmdldF9kZWxheV9t
c3wuIFN1cHBseSBhCisgIC8vIFBlYWtEZXRlY3RvciBvYmplY3QgdG8gdGhlIERlbGF5TWFuYWdl
ci4KICAgRGVsYXlNYW5hZ2VyKHNpemVfdCBtYXhfcGFja2V0c19pbl9idWZmZXIsCisgICAgICAg
ICAgICAgICBpbnQgYmFzZV9taW5fdGFyZ2V0X2RlbGF5X21zLAogICAgICAgICAgICAgICAgRGVs
YXlQZWFrRGV0ZWN0b3IqIHBlYWtfZGV0ZWN0b3IsCiAgICAgICAgICAgICAgICBjb25zdCBUaWNr
VGltZXIqIHRpY2tfdGltZXIpOwogCkBAIC0xNDQsNiArMTQ2LDggQEAgY2xhc3MgRGVsYXlNYW5h
Z2VyIHsKICAgSUFUVmVjdG9yIGlhdF92ZWN0b3JfOyAgICAgICAgICAgICAgICAvLyBIaXN0b2dy
YW0gb2YgaW50ZXItYXJyaXZhbCB0aW1lcy4KICAgaW50IGlhdF9mYWN0b3JfOyAgLy8gRm9yZ2V0
dGluZyBmYWN0b3IgZm9yIHVwZGF0aW5nIHRoZSBJQVQgaGlzdG9ncmFtIChRMTUpLgogICBjb25z
dCBUaWNrVGltZXIqIHRpY2tfdGltZXJfOworICBjb25zdCBpbnQgYmFzZV9taW5fdGFyZ2V0X2Rl
bGF5X21zXzsgIC8vIExvd2VyIGJvdW5kIGZvciB0YXJnZXRfbGV2ZWxfIGFuZAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbmltdW1fZGVsYXlfbXNfLgogICAv
LyBUaW1lIGVsYXBzZWQgc2luY2UgbGFzdCBwYWNrZXQuCiAgIHN0ZDo6dW5pcXVlX3B0cjxUaWNr
VGltZXI6OlN0b3B3YXRjaD4gcGFja2V0X2lhdF9zdG9wd2F0Y2hfOwogICBpbnQgYmFzZV90YXJn
ZXRfbGV2ZWxfOyAgLy8gQ3VycmVudGx5IHByZWZlcnJlZCBidWZmZXIgbGV2ZWwgYmVmb3JlIHBl
YWsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXJfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9kZWxheV9tYW5hZ2VyX3VuaXR0ZXN0LmNjCmluZGV4IGU0ZTg2NWZlNDZiZTMw
MDI4MDMyYzdkNTQ2YzkzYzgyYWFkYzFhMTAuLjYyODFhMTU2Nzk5ODkzYzAyNTE1NWVhNTVlNjc1
ZmJlN2U5YzY5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXJfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlfbWFuYWdlcl91bml0dGVzdC5jYwpAQCAtMjcs
NiArMjcsNyBAQCB1c2luZyA6OnRlc3Rpbmc6Ol87CiBjbGFzcyBEZWxheU1hbmFnZXJUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgogICBzdGF0aWMgY29uc3QgaW50
IGtNYXhOdW1iZXJPZlBhY2tldHMgPSAyNDA7CisgIHN0YXRpYyBjb25zdCBpbnQga01pbkRlbGF5
TXMgPSAwOwogICBzdGF0aWMgY29uc3QgaW50IGtUaW1lU3RlcE1zID0gMTA7CiAgIHN0YXRpYyBj
b25zdCBpbnQga0ZzID0gODAwMDsKICAgc3RhdGljIGNvbnN0IGludCBrRnJhbWVTaXplTXMgPSAy
MDsKQEAgLTU2LDcgKzU3LDggQEAgdm9pZCBEZWxheU1hbmFnZXJUZXN0OjpTZXRVcCgpIHsKIAog
dm9pZCBEZWxheU1hbmFnZXJUZXN0OjpSZWNyZWF0ZURlbGF5TWFuYWdlcigpIHsKICAgRVhQRUNU
X0NBTEwoZGV0ZWN0b3JfLCBSZXNldCgpKS5UaW1lcygxKTsKLSAgZG1fLnJlc2V0KG5ldyBEZWxh
eU1hbmFnZXIoa01heE51bWJlck9mUGFja2V0cywgJmRldGVjdG9yXywgJnRpY2tfdGltZXJfKSk7
CisgIGRtXy5yZXNldChuZXcgRGVsYXlNYW5hZ2VyKGtNYXhOdW1iZXJPZlBhY2tldHMsIGtNaW5E
ZWxheU1zLCAmZGV0ZWN0b3JfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGlja190
aW1lcl8pKTsKIH0KIAogdm9pZCBEZWxheU1hbmFnZXJUZXN0OjpTZXRQYWNrZXRBdWRpb0xlbmd0
aChpbnQgbGVuZ3RfbXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X3BlYWtfZGV0
ZWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9wZWFrX2RldGVjdG9yLmNjCmluZGV4IGViOWY2
ZDUzMGQ1ZDY1MWFhNTY3MjFkZTdmZWNiMDFjMjA3ZWRhYTMuLjg5M2NlM2U4ZmQyNDQ0OGNlYTY2
YzdlYTQzZGU2YjcwNmM3MjQ2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X3BlYWtf
ZGV0ZWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlfcGVha19kZXRlY3Rvci5jYwpAQCAt
MTAsMTAgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2Rl
bGF5X3BlYWtfZGV0ZWN0b3IuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIG1heAorI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X3BlYWtfZGV0ZWN0b3IuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2RlbGF5X3BlYWtfZGV0ZWN0b3IuaAppbmRleCA5ZGVmY2E1YWQwMjE2NDc4YmM3ZWRjMDNk
NGRmOTk4ZDRkOGZjNDE1Li4yNzJkNTBlZDUwOWZjZTIzYjU2MjY4YmQ1ZGYxN2Q2ZTdhZWM2YjNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9wZWFrX2RldGVjdG9yLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvZGVsYXlfcGVha19kZXRlY3Rvci5oCkBAIC0xMSw4ICsxMSw4IEBACiAjaWZuZGVm
IE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0RFTEFZX1BFQUtfREVURUNUT1JfSF8KICNkZWZp
bmUgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfREVMQVlfUEVBS19ERVRFQ1RPUl9IXwogCi0j
aW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBzaXplX3QKLQorI2luY2x1ZGUgPHN0ZGludC5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8bWVtb3J5PgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kc3BfaGVscGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kc3BfaGVs
cGVyLmgKaW5kZXggZWZhMmY5Y2UwNjQ0N2E4ZGUyZjJlMzQ4Nzk1MDZmNTgwYTY4YWJjYi4uODM3
OTQ2MTJjNWZkZjYxYTRlNWQzNGExN2JhOWJhOWEzZmI5ODU5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvZHNwX2hlbHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RzcF9oZWxwZXIuaApAQCAtMTEs
OSArMTEsMTEgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfRFNQX0hFTFBF
Ul9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9EU1BfSEVMUEVSX0hfCiAK
LSNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIEFjY2VzcyB0byBzaXplX3QuCisjaW5jbHVkZSA8c3Rk
aW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9hdWRpb192ZWN0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1
Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvZHRtZl9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2R0bWZfYnVmZmVyLmgKaW5kZXggNmRlNTEy
NzcyZjJlYTUwZDhiM2ViMjg1ZGQ3ZjQ1YTZjODBlYTAxYS4uMjRiMTRlY2U0MTZhMWI0NmIzZGQ2
NzU0ZmY4M2VhZGY1YTdlYzRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHRtZl9idWZmZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1mX2J1ZmZlci5oCkBAIC0xMSw4ICsxMSw5IEBACiAjaWZu
ZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0RUTUZfQlVGRkVSX0hfCiAjZGVmaW5lIE1P
RFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0RUTUZfQlVGRkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPHN0
cmluZz4gIC8vIHNpemVfdAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJhdG9yLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvZHRtZl90b25lX2dlbmVyYXRvci5jYwppbmRleCA2ZmRiOTVhYWNhZDY3YmYxMzNj
ZWM3MTQ3MWU2OTY3MDNjMzI4YWI5Li42YzQxMmUzNjRkODdkNGNmNzQ3OTY4NDU5NjcyYjM0ZWIw
Y2NmOTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJhdG9yLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2R0bWZfdG9uZV9nZW5lcmF0b3IuY2MKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2R0bWZfdG9uZV9nZW5lcmF0
b3IuaCIKIAorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX3ZlY3Rv
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJhdG9y
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJhdG9yLmgKaW5kZXggYTc3M2ZmMzUzZDNi
MzBkZjY5NDhkYzdjYWQ3NDhkMzBmOTMyNmE1My4uMjJlMTY2ZWYwYzQzZjliYjgwMTI3NDIxNzMz
ZGUzMDE2MzM2M2QwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHRtZl90b25lX2dlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL2R0bWZfdG9uZV9nZW5lcmF0b3IuaApAQCAtMTEsNiArMTEs
OSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9EVE1GX1RPTkVfR0VORVJB
VE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0RUTUZfVE9ORV9HRU5F
UkFUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9leHBhbmQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmQuY2MKaW5kZXggNWY2NzFh
ZGE2YjYyMDM1MjZlMWYyODNiYzA5NmY5MjEzYzU2YTU0Yy4uNGEwNmQwOWMxYzYxYTcyNjE0Mzdh
OWE3N2NkMTc4ZjNjNTllMDA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2V4cGFuZC5jYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgPGxp
bWl0cz4gICAgIC8vIG51bWVyaWNfbGltaXRzPFQ+CiAKICNpbmNsdWRlICJjb21tb25fYXVkaW8v
c2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYmFja2dyb3VuZF9ub2lzZS5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2Nyb3NzX2NvcnJlbGF0aW9u
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHNwX2hlbHBlci5oIgpA
QCAtMzIyLDggKzMyMyw3IEBAIHZvaWQgRXhwYW5kOjpTZXRQYXJhbWV0ZXJzRm9yTm9ybWFsQWZ0
ZXJFeHBhbmQoKSB7CiAgIGN1cnJlbnRfbGFnX2luZGV4XyA9IDA7CiAgIGxhZ19pbmRleF9kaXJl
Y3Rpb25fID0gMDsKICAgc3RvcF9tdXRpbmdfID0gdHJ1ZTsgIC8vIERvIG5vdCBtdXRlIHNpZ25h
bCBhbnkgbW9yZS4KLSAgc3RhdGlzdGljc18tPkxvZ0RlbGF5ZWRQYWNrZXRPdXRhZ2VFdmVudCgK
LSAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ+KGV4cGFuZF9kdXJhdGlvbl9zYW1wbGVzXykg
LyAoZnNfaHpfIC8gMTAwMCkpOworICBzdGF0aXN0aWNzXy0+TG9nRGVsYXllZFBhY2tldE91dGFn
ZUV2ZW50KGV4cGFuZF9kdXJhdGlvbl9zYW1wbGVzXywgZnNfaHpfKTsKIH0KIAogdm9pZCBFeHBh
bmQ6OlNldFBhcmFtZXRlcnNGb3JNZXJnZUFmdGVyRXhwYW5kKCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvZXhwYW5kLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmQuaAppbmRleCA0Y2ZlN2I5ZDhj
YmVlYzFlNzk5MGJiNDI3OWE2NDAxNmJlMTQ5NjAwLi4zMGMzNGEyYzMwMGRmMTYyNDI5NTMxYTBl
ZDMyZWQ5MjAwMWFlNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmQuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9leHBhbmQuaApAQCAtMTQsMTIgKzE0LDEzIEBACiAjaW5jbHVkZSA8YXNzZXJ0
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvYXVkaW9fdmVjdG9yLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMu
CitjbGFzcyBBdWRpb011bHRpVmVjdG9yOwogY2xhc3MgQmFja2dyb3VuZE5vaXNlOwogY2xhc3Mg
UmFuZG9tVmVjdG9yOwogY2xhc3MgU3RhdGlzdGljc0NhbGN1bGF0b3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9leHBhbmRfdW1hX2xvZ2dlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kX3VtYV9s
b2dnZXIuaAppbmRleCAwMDkwN2Q0ZTVhODQxYjRiZmFjNTkyZDcyYzk2ZTc4OGRjNjk2NjUyLi5i
ZDA3OWM2YWI3NzUwYjBmM2MxYzVmYTY1Mzc4MDMxOGFlZDc2NWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9leHBhbmRfdW1hX2xvZ2dlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZF91bWFf
bG9nZ2VyLmgKQEAgLTEwLDYgKzEwLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdf
TkVURVFfRVhQQU5EX1VNQV9MT0dHRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdf
TkVURVFfRVhQQU5EX1VNQV9MT0dHRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L2V4cGFuZF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZF91bml0dGVzdC5jYwppbmRl
eCBiNGU2NDY2ZTkwNDUwMDJiZmY4MDhiZGFjZWVmYTcyNmI3ZDBlYTU2Li4wOTkxNGRhY2E4MjI5
NWM4OGRhZGVlODE5MDQxMzE4NjgzMmI1YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBh
bmRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kX3VuaXR0ZXN0LmNjCkBAIC01
MSwxNCArNTEsMTYgQEAgVEVTVChFeHBhbmQsIENyZWF0ZVVzaW5nRmFjdG9yeSkgewogbmFtZXNw
YWNlIHsKIGNsYXNzIEZha2VTdGF0aXN0aWNzQ2FsY3VsYXRvciA6IHB1YmxpYyBTdGF0aXN0aWNz
Q2FsY3VsYXRvciB7CiAgcHVibGljOgotICB2b2lkIExvZ0RlbGF5ZWRQYWNrZXRPdXRhZ2VFdmVu
dChpbnQgb3V0YWdlX2R1cmF0aW9uX21zKSBvdmVycmlkZSB7Ci0gICAgbGFzdF9vdXRhZ2VfZHVy
YXRpb25fbXNfID0gb3V0YWdlX2R1cmF0aW9uX21zOworICB2b2lkIExvZ0RlbGF5ZWRQYWNrZXRP
dXRhZ2VFdmVudChpbnQgbnVtX3NhbXBsZXMsIGludCBmc19oeikgb3ZlcnJpZGUgeworICAgIGxh
c3Rfb3V0YWdlX2R1cmF0aW9uX3NhbXBsZXNfID0gbnVtX3NhbXBsZXM7CiAgIH0KIAotICBpbnQg
bGFzdF9vdXRhZ2VfZHVyYXRpb25fbXMoKSBjb25zdCB7IHJldHVybiBsYXN0X291dGFnZV9kdXJh
dGlvbl9tc187IH0KKyAgaW50IGxhc3Rfb3V0YWdlX2R1cmF0aW9uX3NhbXBsZXMoKSBjb25zdCB7
CisgICAgcmV0dXJuIGxhc3Rfb3V0YWdlX2R1cmF0aW9uX3NhbXBsZXNfOworICB9CiAKICBwcml2
YXRlOgotICBpbnQgbGFzdF9vdXRhZ2VfZHVyYXRpb25fbXNfID0gMDsKKyAgaW50IGxhc3Rfb3V0
YWdlX2R1cmF0aW9uX3NhbXBsZXNfID0gMDsKIH07CiAKIC8vIFRoaXMgaXMgdGhlIHNhbWUgc2l6
ZSB0aGF0IGlzIGdpdmVuIHRvIHRoZSBTeW5jQnVmZmVyIG9iamVjdCBpbiBOZXRFcS4KQEAgLTEy
MCwxMyArMTIyLDEyIEBAIFRFU1RfRihFeHBhbmRUZXN0LCBEZWxheWVkUGFja2V0T3V0YWdlKSB7
CiAgICAgRVhQRUNUX0VRKDAsIGV4cGFuZF8uUHJvY2Vzcygmb3V0cHV0KSk7CiAgICAgRVhQRUNU
X0dUKG91dHB1dC5TaXplKCksIDB1KTsKICAgICBzdW1fb3V0cHV0X2xlbl9zYW1wbGVzICs9IG91
dHB1dC5TaXplKCk7Ci0gICAgRVhQRUNUX0VRKDAsIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1
cmF0aW9uX21zKCkpOworICAgIEVYUEVDVF9FUSgwLCBzdGF0aXN0aWNzXy5sYXN0X291dGFnZV9k
dXJhdGlvbl9zYW1wbGVzKCkpOwogICB9CiAgIGV4cGFuZF8uU2V0UGFyYW1ldGVyc0Zvck5vcm1h
bEFmdGVyRXhwYW5kKCk7CiAgIC8vIENvbnZlcnQgfHN1bV9vdXRwdXRfbGVuX3NhbXBsZXN8IHRv
IG1pbGxpc2Vjb25kcy4KLSAgRVhQRUNUX0VRKHJ0Yzo6Y2hlY2tlZF9jYXN0PGludD4oc3VtX291
dHB1dF9sZW5fc2FtcGxlcyAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0
ZXN0X3NhbXBsZV9yYXRlX2h6XyAvIDEwMDApKSwKLSAgICAgICAgICAgIHN0YXRpc3RpY3NfLmxh
c3Rfb3V0YWdlX2R1cmF0aW9uX21zKCkpOworICBFWFBFQ1RfRVEocnRjOjpjaGVja2VkX2Nhc3Q8
aW50PihzdW1fb3V0cHV0X2xlbl9zYW1wbGVzKSwKKyAgICAgICAgICAgIHN0YXRpc3RpY3NfLmxh
c3Rfb3V0YWdlX2R1cmF0aW9uX3NhbXBsZXMoKSk7CiB9CiAKIC8vIFRoaXMgdGVzdCBpcyBzaW1p
bGFyIHRvIERlbGF5ZWRQYWNrZXRPdXRhZ2UsIGJ1dCBlbmRzIGJ5IGNhbGxpbmcKQEAgLTE0MCwx
MCArMTQxLDEwIEBAIFRFU1RfRihFeHBhbmRUZXN0LCBMb3N0UGFja2V0T3V0YWdlKSB7CiAgICAg
RVhQRUNUX0VRKDAsIGV4cGFuZF8uUHJvY2Vzcygmb3V0cHV0KSk7CiAgICAgRVhQRUNUX0dUKG91
dHB1dC5TaXplKCksIDB1KTsKICAgICBzdW1fb3V0cHV0X2xlbl9zYW1wbGVzICs9IG91dHB1dC5T
aXplKCk7Ci0gICAgRVhQRUNUX0VRKDAsIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9u
X21zKCkpOworICAgIEVYUEVDVF9FUSgwLCBzdGF0aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlv
bl9zYW1wbGVzKCkpOwogICB9CiAgIGV4cGFuZF8uU2V0UGFyYW1ldGVyc0Zvck1lcmdlQWZ0ZXJF
eHBhbmQoKTsKLSAgRVhQRUNUX0VRKDAsIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9u
X21zKCkpOworICBFWFBFQ1RfRVEoMCwgc3RhdGlzdGljc18ubGFzdF9vdXRhZ2VfZHVyYXRpb25f
c2FtcGxlcygpKTsKIH0KIAogLy8gVGhpcyB0ZXN0IGlzIHNpbWlsYXIgdG8gdGhlIERlbGF5ZWRQ
YWNrZXRPdXRhZ2UgdGVzdCBhYm92ZSwgYnV0IHdpdGggdGhlCkBAIC0xNjEsMTMgKzE2MiwxMiBA
QCBURVNUX0YoRXhwYW5kVGVzdCwgQ2hlY2tPdXRhZ2VTdGF0c0FmdGVyUmVzZXQpIHsKICAgICAg
IGV4cGFuZF8uUmVzZXQoKTsKICAgICAgIHN1bV9vdXRwdXRfbGVuX3NhbXBsZXMgPSAwOwogICAg
IH0KLSAgICBFWFBFQ1RfRVEoMCwgc3RhdGlzdGljc18ubGFzdF9vdXRhZ2VfZHVyYXRpb25fbXMo
KSk7CisgICAgRVhQRUNUX0VRKDAsIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9uX3Nh
bXBsZXMoKSk7CiAgIH0KICAgZXhwYW5kXy5TZXRQYXJhbWV0ZXJzRm9yTm9ybWFsQWZ0ZXJFeHBh
bmQoKTsKICAgLy8gQ29udmVydCB8c3VtX291dHB1dF9sZW5fc2FtcGxlc3wgdG8gbWlsbGlzZWNv
bmRzLgotICBFWFBFQ1RfRVEocnRjOjpjaGVja2VkX2Nhc3Q8aW50PihzdW1fb3V0cHV0X2xlbl9z
YW1wbGVzIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3Rfc2FtcGxl
X3JhdGVfaHpfIC8gMTAwMCkpLAotICAgICAgICAgICAgc3RhdGlzdGljc18ubGFzdF9vdXRhZ2Vf
ZHVyYXRpb25fbXMoKSk7CisgIEVYUEVDVF9FUShydGM6OmNoZWNrZWRfY2FzdDxpbnQ+KHN1bV9v
dXRwdXRfbGVuX3NhbXBsZXMpLAorICAgICAgICAgICAgc3RhdGlzdGljc18ubGFzdF9vdXRhZ2Vf
ZHVyYXRpb25fc2FtcGxlcygpKTsKIH0KIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2luY2x1ZGUvbmV0ZXEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaAppbmRl
eCA1MzA5NzVmM2I4ZTdkN2M1M2JjZTM3NTQwMWZiMjVmYjU3NDUzMTdlLi4yODIwZmQ4NDc4N2Q1
NjM2ZjExYjE3MGM5MmE1YjM3MDU4ZDE5ZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9pbmNs
dWRlL25ldGVxLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvaW5jbHVkZS9uZXRlcS5oCkBAIC03Miw2ICs3
Miw3IEBAIHN0cnVjdCBOZXRFcUxpZmV0aW1lU3RhdGlzdGljcyB7CiAgIHVpbnQ2NF90IGppdHRl
cl9idWZmZXJfZGVsYXlfbXMgPSAwOwogICAvLyBCZWxvdyBzdGF0IGlzIG5vdCBwYXJ0IG9mIHRo
ZSBzcGVjLgogICB1aW50NjRfdCB2b2ljZV9jb25jZWFsZWRfc2FtcGxlcyA9IDA7CisgIHVpbnQ2
NF90IGRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzID0gMDsKIH07CiAKIC8vIE1ldHJpY3Mg
dGhhdCBkZXNjcmliZSB0aGUgb3BlcmF0aW9ucyBwZXJmb3JtZWQgaW4gTmV0RXEsIGFuZCB0aGUg
aW50ZXJuYWwKQEAgLTExMiw2ICsxMTMsNyBAQCBjbGFzcyBOZXRFcSB7CiAgICAgYm9vbCBlbmFi
bGVfcG9zdF9kZWNvZGVfdmFkID0gZmFsc2U7CiAgICAgc2l6ZV90IG1heF9wYWNrZXRzX2luX2J1
ZmZlciA9IDUwOwogICAgIGludCBtYXhfZGVsYXlfbXMgPSAyMDAwOworICAgIGludCBtaW5fZGVs
YXlfbXMgPSAwOwogICAgIGJvb2wgZW5hYmxlX2Zhc3RfYWNjZWxlcmF0ZSA9IGZhbHNlOwogICAg
IGJvb2wgZW5hYmxlX211dGVkX3N0YXRlID0gZmFsc2U7CiAgICAgYWJzbDo6b3B0aW9uYWw8QXVk
aW9Db2RlY1BhaXJJZD4gY29kZWNfcGFpcl9pZDsKQEAgLTIzMSwxMyArMjMzLDYgQEAgY2xhc3Mg
TmV0RXEgewogICAvLyBzdGF0aXN0aWNzIGFyZSBuZXZlciByZXNldC4KICAgdmlydHVhbCBOZXRF
cU9wZXJhdGlvbnNBbmRTdGF0ZSBHZXRPcGVyYXRpb25zQW5kU3RhdGUoKSBjb25zdCA9IDA7CiAK
LSAgLy8gV3JpdGVzIHRoZSBjdXJyZW50IFJUQ1Agc3RhdGlzdGljcyB0byB8c3RhdHN8LiBUaGUg
c3RhdGlzdGljcyBhcmUgcmVzZXQKLSAgLy8gYW5kIGEgbmV3IHJlcG9ydCBwZXJpb2QgaXMgc3Rh
cnRlZCB3aXRoIHRoZSBjYWxsLgotICB2aXJ0dWFsIHZvaWQgR2V0UnRjcFN0YXRpc3RpY3MoUnRj
cFN0YXRpc3RpY3MqIHN0YXRzKSA9IDA7Ci0KLSAgLy8gU2FtZSBhcyBSdGNwU3RhdGlzdGljcygp
LCBidXQgZG9lcyBub3QgcmVzZXQgYW55dGhpbmcuCi0gIHZpcnR1YWwgdm9pZCBHZXRSdGNwU3Rh
dGlzdGljc05vUmVzZXQoUnRjcFN0YXRpc3RpY3MqIHN0YXRzKSA9IDA7Ci0KICAgLy8gRW5hYmxl
cyBwb3N0LWRlY29kZSBWQUQuIFdoZW4gZW5hYmxlZCwgR2V0QXVkaW8oKSB3aWxsIHJldHVybgog
ICAvLyBrT3V0cHV0VkFEUGFzc2l2ZSB3aGVuIHRoZSBzaWduYWwgY29udGFpbnMgbm8gc3BlZWNo
LgogICB2aXJ0dWFsIHZvaWQgRW5hYmxlVmFkKCkgPSAwOwpAQCAtMjY2LDEwICsyNjEsNiBAQCBj
bGFzcyBOZXRFcSB7CiAgIC8vIEZsdXNoZXMgYm90aCB0aGUgcGFja2V0IGJ1ZmZlciBhbmQgdGhl
IHN5bmMgYnVmZmVyLgogICB2aXJ0dWFsIHZvaWQgRmx1c2hCdWZmZXJzKCkgPSAwOwogCi0gIC8v
IEN1cnJlbnQgdXNhZ2Ugb2YgcGFja2V0LWJ1ZmZlciBhbmQgaXQncyBsaW1pdHMuCi0gIHZpcnR1
YWwgdm9pZCBQYWNrZXRCdWZmZXJTdGF0aXN0aWNzKGludCogY3VycmVudF9udW1fcGFja2V0cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBtYXhfbnVtX3BhY2tl
dHMpIGNvbnN0ID0gMDsKLQogICAvLyBFbmFibGVzIE5BQ0sgYW5kIHNldHMgdGhlIG1heGltdW0g
c2l6ZSBvZiB0aGUgTkFDSyBsaXN0LCB3aGljaCBzaG91bGQgYmUKICAgLy8gcG9zaXRpdmUgYW5k
IG5vIGxhcmdlciB0aGFuIE5hY2s6OmtOYWNrTGlzdFNpemVMaW1pdC4gSWYgTkFDSyBpcyBhbHJl
YWR5CiAgIC8vIGVuYWJsZWQgdGhlbiB0aGUgbWF4aW11bSBOQUNLIGxpc3Qgc2l6ZSBpcyBtb2Rp
ZmllZCBhY2NvcmRpbmdseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL21vY2svbW9ja19kZWxh
eV9tYW5hZ2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9tb2NrL21vY2tfZGVsYXlfbWFuYWdlci5oCmluZGV4
IDliMmVkNDk4ZDlkYmZjYzI0MWFlMTRmN2E3NTIwOTYwMWNhZGUwOTcuLjIwNmNlYTdmMTBlN2Y1
NjlhNDVjNDg2MzkwYzliODc0OGE1YzViMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL21vY2sv
bW9ja19kZWxheV9tYW5hZ2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbW9jay9tb2NrX2RlbGF5X21h
bmFnZXIuaApAQCAtMjAsOSArMjAsMTMgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBNb2Nr
RGVsYXlNYW5hZ2VyIDogcHVibGljIERlbGF5TWFuYWdlciB7CiAgcHVibGljOgogICBNb2NrRGVs
YXlNYW5hZ2VyKHNpemVfdCBtYXhfcGFja2V0c19pbl9idWZmZXIsCisgICAgICAgICAgICAgICAg
ICAgaW50IGJhc2VfbWluX3RhcmdldF9kZWxheV9tcywKICAgICAgICAgICAgICAgICAgICBEZWxh
eVBlYWtEZXRlY3RvciogcGVha19kZXRlY3RvciwKICAgICAgICAgICAgICAgICAgICBjb25zdCBU
aWNrVGltZXIqIHRpY2tfdGltZXIpCi0gICAgICA6IERlbGF5TWFuYWdlcihtYXhfcGFja2V0c19p
bl9idWZmZXIsIHBlYWtfZGV0ZWN0b3IsIHRpY2tfdGltZXIpIHt9CisgICAgICA6IERlbGF5TWFu
YWdlcihtYXhfcGFja2V0c19pbl9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICBiYXNlX21p
bl90YXJnZXRfZGVsYXlfbXMsCisgICAgICAgICAgICAgICAgICAgICBwZWFrX2RldGVjdG9yLAor
ICAgICAgICAgICAgICAgICAgICAgdGlja190aW1lcikge30KICAgdmlydHVhbCB+TW9ja0RlbGF5
TWFuYWdlcigpIHsgRGllKCk7IH0KICAgTU9DS19NRVRIT0QwKERpZSwgdm9pZCgpKTsKICAgTU9D
S19DT05TVF9NRVRIT0QwKGlhdF92ZWN0b3IsIGNvbnN0IElBVFZlY3RvciYoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9uYWNrX3RyYWNrZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uYWNrX3RyYWNr
ZXIuY2MKaW5kZXggYzYyY2RmODhlNGRjMTNkODRmZTMwMTFiYmU2NDM1YmE0OWM4ZjdjNC4uZTNl
Y2ZlYWVkMjcwNzNjNjZjYTJhZTJhYTBkMmUxYmQ4NDZkYjFlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvbmFja190cmFja2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25hY2tfdHJhY2tlci5jYwpA
QCAtMTAsOSArMTAsOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
bmFja190cmFja2VyLmgiCiAKLSNpbmNsdWRlIDxhc3NlcnQuaD4gIC8vIEZvciBhc3NlcnQuCi0K
LSNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBGb3Igc3RkOjptYXguCisjaW5jbHVkZSA8YXNzZXJ0
Lmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25hY2tfdHJhY2tl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvbmFja190cmFja2VyLmgKaW5kZXggMTkzNmE5NDRjY2I1MmJlNzRl
NTk4MmI4ZGRlMzZjZjdhMzFhYzFlMy4uZDdjNmIwODQyMjJjZmMyYjBjNGZkZTc3ZWU0NGNkNTg2
MjI3NjkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmFja190cmFja2VyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvbmFja190cmFja2VyLmgKQEAgLTExLDExICsxMSwxMiBAQAogI2lmbmRlZiBNT0RV
TEVTX0FVRElPX0NPRElOR19ORVRFUV9OQUNLX1RSQUNLRVJfSF8KICNkZWZpbmUgTU9EVUxFU19B
VURJT19DT0RJTkdfTkVURVFfTkFDS19UUkFDS0VSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4K
KyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8dmVjdG9yPgog
Ci0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9k
dWxlX3R5cGVkZWZzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25f
dHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlc19w
dWJsaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndGVzdF9wcm9kX3V0aWwuaCIKIAogLy8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXEuY2MKaW5k
ZXggY2YxYzZhYTY2NTM2NDU1M2YzMDQwNmI3NmFhNDMwYmM2ZjIxOWUyMC4uMGU2MTQ3ZTIzMmNi
MTQ3MDE4NWJkZjk4NzJhNzA4ZDg1NTVlZjZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0
ZXEuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXEuY2MKQEAgLTEwLDggKzEwLDYgQEAKIAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaCIKIAotI2lu
Y2x1ZGUgPG1lbW9yeT4KLQogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25l
dGVxX2ltcGwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgi
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9u
ZXRlcV9pbXBsLmNjCmluZGV4IGY0MjhiZTFjM2JjODI1MGRjZDE2Y2JmZTA4NmE2Mjk0Mjc2ZWY0
NWYuLjJhMDI1ZjMwNGU1MzdjZTExODAwYjdjOTE2MDAzMmUxOWQyMjQ1NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL25ldGVxX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfaW1wbC5j
YwpAQCAtMTEsMTMgKzExLDE2IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvbmV0ZXFfaW1wbC5oIgogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0KICNpbmNsdWRlIDxhbGdv
cml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUg
PGxpc3Q+CiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJjb21tb25fYXVk
aW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5Lmgi
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2JhY2tncm91bmRfbm9pc2UuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9idWZmZXJfbGV2ZWxfZmlsdGVyLmgi
CkBAIC00MCwxNSArNDMsMTQgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9yZWRfcGF5bG9hZF9zcGxpdHRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3N5bmNfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvdGlja190aW1lci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rp
bWVfc3RyZXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpbWVz
dGFtcF9zY2FsZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252
ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Nhbml0aXplci5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3N0cmluZ3MvYXVkaW9fZm9ybWF0X3RvX3N0cmluZy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3N5c3RlbS9mYWxsdGhyb3VnaC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50
LmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTYxLDYgKzYzLDcgQEAgTmV0RXFJbXBsOjpEZXBlbmRl
bmNpZXM6OkRlcGVuZGVuY2llcygKICAgICAgICAgICBuZXcgRGVjb2RlckRhdGFiYXNlKGRlY29k
ZXJfZmFjdG9yeSwgY29uZmlnLmNvZGVjX3BhaXJfaWQpKSwKICAgICAgIGRlbGF5X3BlYWtfZGV0
ZWN0b3IobmV3IERlbGF5UGVha0RldGVjdG9yKHRpY2tfdGltZXIuZ2V0KCkpKSwKICAgICAgIGRl
bGF5X21hbmFnZXIobmV3IERlbGF5TWFuYWdlcihjb25maWcubWF4X3BhY2tldHNfaW5fYnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5taW5fZGVsYXlf
bXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXlfcGVha19kZXRl
Y3Rvci5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrX3Rp
bWVyLmdldCgpKSksCiAgICAgICBkdG1mX2J1ZmZlcihuZXcgRHRtZkJ1ZmZlcihjb25maWcuc2Ft
cGxlX3JhdGVfaHopKSwKQEAgLTM4NSwyMCArMzg4LDYgQEAgTmV0RXFPcGVyYXRpb25zQW5kU3Rh
dGUgTmV0RXFJbXBsOjpHZXRPcGVyYXRpb25zQW5kU3RhdGUoKSBjb25zdCB7CiAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXZvaWQgTmV0RXFJbXBsOjpHZXRSdGNwU3RhdGlzdGljcyhSdGNwU3RhdGlz
dGljcyogc3RhdHMpIHsKLSAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF9zZWN0Xyk7Ci0gIGlm
IChzdGF0cykgewotICAgIHJ0Y3BfLkdldFN0YXRpc3RpY3MoZmFsc2UsIHN0YXRzKTsKLSAgfQot
fQotCi12b2lkIE5ldEVxSW1wbDo6R2V0UnRjcFN0YXRpc3RpY3NOb1Jlc2V0KFJ0Y3BTdGF0aXN0
aWNzKiBzdGF0cykgewotICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0X3NlY3RfKTsKLSAgaWYg
KHN0YXRzKSB7Ci0gICAgcnRjcF8uR2V0U3RhdGlzdGljcyh0cnVlLCBzdGF0cyk7Ci0gIH0KLX0K
LQogdm9pZCBOZXRFcUltcGw6OkVuYWJsZVZhZCgpIHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygm
Y3JpdF9zZWN0Xyk7CiAgIGFzc2VydCh2YWRfLmdldCgpKTsKQEAgLTQ3MywxMiArNDYyLDYgQEAg
dm9pZCBOZXRFcUltcGw6OkZsdXNoQnVmZmVycygpIHsKICAgZmlyc3RfcGFja2V0XyA9IHRydWU7
CiB9CiAKLXZvaWQgTmV0RXFJbXBsOjpQYWNrZXRCdWZmZXJTdGF0aXN0aWNzKGludCogY3VycmVu
dF9udW1fcGFja2V0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCogbWF4X251bV9wYWNrZXRzKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRf
c2VjdF8pOwotICBwYWNrZXRfYnVmZmVyXy0+QnVmZmVyU3RhdChjdXJyZW50X251bV9wYWNrZXRz
LCBtYXhfbnVtX3BhY2tldHMpOwotfQotCiB2b2lkIE5ldEVxSW1wbDo6RW5hYmxlTmFjayhzaXpl
X3QgbWF4X25hY2tfbGlzdF9zaXplKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfc2Vj
dF8pOwogICBpZiAoIW5hY2tfZW5hYmxlZF8pIHsKQEAgLTU3NCw4ICs1NTcsNiBAQCBpbnQgTmV0
RXFJbXBsOjpJbnNlcnRQYWNrZXRJbnRlcm5hbChjb25zdCBSVFBIZWFkZXImIHJ0cF9oZWFkZXIs
CiAgICAgLy8gTm90ZTogfGZpcnN0X3BhY2tldF98IHdpbGwgYmUgY2xlYXJlZCBmdXJ0aGVyIGRv
d24gaW4gdGhpcyBtZXRob2QsIG9uY2UKICAgICAvLyB0aGUgcGFja2V0IGhhcyBiZWVuIHN1Y2Nl
c3NmdWxseSBpbnNlcnRlZCBpbnRvIHRoZSBwYWNrZXQgYnVmZmVyLgogCi0gICAgcnRjcF8uSW5p
dChydHBfaGVhZGVyLnNlcXVlbmNlTnVtYmVyKTsKLQogICAgIC8vIEZsdXNoIHRoZSBwYWNrZXQg
YnVmZmVyIGFuZCBEVE1GIGJ1ZmZlci4KICAgICBwYWNrZXRfYnVmZmVyXy0+Rmx1c2goKTsKICAg
ICBkdG1mX2J1ZmZlcl8tPkZsdXNoKCk7CkBAIC01OTAsOSArNTcxLDYgQEAgaW50IE5ldEVxSW1w
bDo6SW5zZXJ0UGFja2V0SW50ZXJuYWwoY29uc3QgUlRQSGVhZGVyJiBydHBfaGVhZGVyLAogICAg
IHRpbWVzdGFtcF8gPSBtYWluX3RpbWVzdGFtcDsKICAgfQogCi0gIC8vIFVwZGF0ZSBSVENQIHN0
YXRpc3RpY3MsIG9ubHkgZm9yIHJlZ3VsYXIgcGFja2V0cy4KLSAgcnRjcF8uVXBkYXRlKHJ0cF9o
ZWFkZXIsIHJlY2VpdmVfdGltZXN0YW1wKTsKLQogICBpZiAobmFja19lbmFibGVkXykgewogICAg
IFJUQ19EQ0hFQ0sobmFja18pOwogICAgIGlmICh1cGRhdGVfc2FtcGxlX3JhdGVfYW5kX2NoYW5u
ZWxzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBsLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9uZXRlcV9pbXBsLmgKaW5kZXggOGVmOTdjZTBhZjM3NmY5NDFlYWQ0YjFlYzNlYWYxZDg4OTZl
YzlmMy4uNTI1YWU2MTVkODU2ZWZkNDJlYTE2ODM3OGI5MjI0YzAzNjJlMTc2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvbmV0ZXFfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGwu
aApAQCAtMTcsMTIgKzE3LDExIEBACiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgog
I2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19mcmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL2RlZmluZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9kZWZpbmVzLmgiICAvLyBNb2RlcywgT3BlcmF0aW9ucwogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZF91bWFfbG9nZ2VyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvaW5jbHVkZS9uZXRlcS5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldC5oIiAgLy8gRGVjbGFyZSBQYWNrZXRMaXN0
LgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldC5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3JhbmRvbV92ZWN0b3IuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ydGNwLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGlja190aW1lci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKQEAgLTE3MCwxNyArMTY5LDEwIEBAIGNsYXNzIE5ldEVxSW1w
bCA6IHB1YmxpYyB3ZWJydGM6Ok5ldEVxIHsKICAgLy8gYWZ0ZXIgdGhlIGNhbGwuCiAgIGludCBO
ZXR3b3JrU3RhdGlzdGljcyhOZXRFcU5ldHdvcmtTdGF0aXN0aWNzKiBzdGF0cykgb3ZlcnJpZGU7
CiAKLSAgLy8gV3JpdGVzIHRoZSBjdXJyZW50IFJUQ1Agc3RhdGlzdGljcyB0byB8c3RhdHN8LiBU
aGUgc3RhdGlzdGljcyBhcmUgcmVzZXQKLSAgLy8gYW5kIGEgbmV3IHJlcG9ydCBwZXJpb2QgaXMg
c3RhcnRlZCB3aXRoIHRoZSBjYWxsLgotICB2b2lkIEdldFJ0Y3BTdGF0aXN0aWNzKFJ0Y3BTdGF0
aXN0aWNzKiBzdGF0cykgb3ZlcnJpZGU7Ci0KICAgTmV0RXFMaWZldGltZVN0YXRpc3RpY3MgR2V0
TGlmZXRpbWVTdGF0aXN0aWNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgTmV0RXFPcGVyYXRpb25z
QW5kU3RhdGUgR2V0T3BlcmF0aW9uc0FuZFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgLy8g
U2FtZSBhcyBSdGNwU3RhdGlzdGljcygpLCBidXQgZG9lcyBub3QgcmVzZXQgYW55dGhpbmcuCi0g
IHZvaWQgR2V0UnRjcFN0YXRpc3RpY3NOb1Jlc2V0KFJ0Y3BTdGF0aXN0aWNzKiBzdGF0cykgb3Zl
cnJpZGU7Ci0KICAgLy8gRW5hYmxlcyBwb3N0LWRlY29kZSBWQUQuIFdoZW4gZW5hYmxlZCwgR2V0
QXVkaW8oKSB3aWxsIHJldHVybgogICAvLyBrT3V0cHV0VkFEUGFzc2l2ZSB3aGVuIHRoZSBzaWdu
YWwgY29udGFpbnMgbm8gc3BlZWNoLgogICB2b2lkIEVuYWJsZVZhZCgpIG92ZXJyaWRlOwpAQCAt
MjAwLDkgKzE5Miw2IEBAIGNsYXNzIE5ldEVxSW1wbCA6IHB1YmxpYyB3ZWJydGM6Ok5ldEVxIHsK
ICAgLy8gRmx1c2hlcyBib3RoIHRoZSBwYWNrZXQgYnVmZmVyIGFuZCB0aGUgc3luYyBidWZmZXIu
CiAgIHZvaWQgRmx1c2hCdWZmZXJzKCkgb3ZlcnJpZGU7CiAKLSAgdm9pZCBQYWNrZXRCdWZmZXJT
dGF0aXN0aWNzKGludCogY3VycmVudF9udW1fcGFja2V0cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCogbWF4X251bV9wYWNrZXRzKSBjb25zdCBvdmVycmlkZTsKLQogICB2b2lk
IEVuYWJsZU5hY2soc2l6ZV90IG1heF9uYWNrX2xpc3Rfc2l6ZSkgb3ZlcnJpZGU7CiAKICAgdm9p
ZCBEaXNhYmxlTmFjaygpIG92ZXJyaWRlOwpAQCAtMzk1LDcgKzM4NCw2IEBAIGNsYXNzIE5ldEVx
SW1wbCA6IHB1YmxpYyB3ZWJydGM6Ok5ldEVxIHsKICAgICAgIFJUQ19HVUFSREVEX0JZKGNyaXRf
c2VjdF8pOwogICBSYW5kb21WZWN0b3IgcmFuZG9tX3ZlY3Rvcl8gUlRDX0dVQVJERURfQlkoY3Jp
dF9zZWN0Xyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxDb21mb3J0Tm9pc2U+IGNvbWZvcnRfbm9pc2Vf
IFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8pOwotICBSdGNwIHJ0Y3BfIFJUQ19HVUFSREVEX0JZ
KGNyaXRfc2VjdF8pOwogICBTdGF0aXN0aWNzQ2FsY3VsYXRvciBzdGF0c18gUlRDX0dVQVJERURf
QlkoY3JpdF9zZWN0Xyk7CiAgIGludCBmc19oel8gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7
CiAgIGludCBmc19tdWx0XyBSVENfR1VBUkRFRF9CWShjcml0X3NlY3RfKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL25ldGVxX2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9p
bXBsX3VuaXR0ZXN0LmNjCmluZGV4IGI3NzJkZmE3MWRlMTE5ZmJjYzA0MDZlYjRiZWQ0NjE2MGU0
N2Y1ZTguLjBlMDg3Yzg0N2YxOGZkZmMzNWZkMjhmMzIyZjVmYWIyNTk1MmEwMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
bmV0ZXFfaW1wbF91bml0dGVzdC5jYwpAQCAtOTIsNyArOTIsOCBAQCBjbGFzcyBOZXRFcUltcGxU
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAKICAgICBpZiAodXNlX21vY2tfZGVsYXlf
bWFuYWdlcl8pIHsKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2NrRGVsYXlNYW5hZ2VyPiBtb2Nr
KG5ldyBNb2NrRGVsYXlNYW5hZ2VyKAotICAgICAgICAgIGNvbmZpZ18ubWF4X3BhY2tldHNfaW5f
YnVmZmVyLCBkZWxheV9wZWFrX2RldGVjdG9yXywgdGlja190aW1lcl8pKTsKKyAgICAgICAgICBj
b25maWdfLm1heF9wYWNrZXRzX2luX2J1ZmZlciwgY29uZmlnXy5taW5fZGVsYXlfbXMsCisgICAg
ICAgICAgZGVsYXlfcGVha19kZXRlY3Rvcl8sIHRpY2tfdGltZXJfKSk7CiAgICAgICBtb2NrX2Rl
bGF5X21hbmFnZXJfID0gbW9jay5nZXQoKTsKICAgICAgIEVYUEVDVF9DQUxMKCptb2NrX2RlbGF5
X21hbmFnZXJfLCBzZXRfc3RyZWFtaW5nX21vZGUoZmFsc2UpKS5UaW1lcygxKTsKICAgICAgIGRl
cHMuZGVsYXlfbWFuYWdlciA9IHN0ZDo6bW92ZShtb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL25ldGVxX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfdW5pdHRlc3QuY2MKaW5k
ZXggM2VlMGI1YmY2OTNmNTM5ZmZmZTc0NmRkNDQ5ZjQ3OWRhMmYyZjQ0Zi4uZThiNTAyMzc3MDMx
NDhhMzNhZWZhODM0YzEzYTAzZmM4NWY2ZWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0
ZXFfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfdW5pdHRlc3QuY2MKQEAgLTIy
LDEyICsyMiwxMiBAQAogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2ZyYW1lLmgiCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgot
I2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20xNmIuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9hdWRpb19sb29wLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGFja2V0X3NvdXJj
ZV9pbnB1dC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25l
dGVxX3Rlc3QuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9y
dHBfZmlsZV9zb3VyY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRj
cF9zdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvaWdub3JlX3d1bmRlZi5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1l
cmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCkBAIC01Miw3ICs1Miw3IEBAIFJUQ19QVVNIX0lHTk9S
SU5HX1dVTkRFRigpCiBSVENfUE9QX0lHTk9SSU5HX1dVTkRFRigpCiAjZW5kaWYKIAotREVGSU5F
X2Jvb2woZ2VuX3JlZiwgZmFsc2UsICJHZW5lcmF0ZSByZWZlcmVuY2UgZmlsZXMuIik7CitXRUJS
VENfREVGSU5FX2Jvb2woZ2VuX3JlZiwgZmFsc2UsICJHZW5lcmF0ZSByZWZlcmVuY2UgZmlsZXMu
Iik7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yMzQsNyArMjM0LDE0IEBAIHZvaWQgUmVz
dWx0U2luazo6VmVyaWZ5Q2hlY2tzdW0oY29uc3Qgc3RkOjpzdHJpbmcmIGNoZWNrc3VtKSB7CiAg
IGJ1ZmZlci5yZXNpemUoZGlnZXN0Xy0+U2l6ZSgpKTsKICAgZGlnZXN0Xy0+RmluaXNoKCZidWZm
ZXJbMF0sIGJ1ZmZlci5zaXplKCkpOwogICBjb25zdCBzdGQ6OnN0cmluZyByZXN1bHQgPSBydGM6
OmhleF9lbmNvZGUoJmJ1ZmZlclswXSwgZGlnZXN0Xy0+U2l6ZSgpKTsKLSAgRVhQRUNUX0VRKGNo
ZWNrc3VtLCByZXN1bHQpOworICBpZiAoY2hlY2tzdW0uc2l6ZSgpID09IHJlc3VsdC5zaXplKCkp
IHsKKyAgICBFWFBFQ1RfRVEoY2hlY2tzdW0sIHJlc3VsdCk7CisgIH0gZWxzZSB7CisgICAgLy8g
Q2hlY2sgcmVzdWx0IGlzIG9uZSB0aGUgJ3wnLXNlcGFyYXRlZCBjaGVja3N1bXMuCisgICAgRVhQ
RUNUX05FKGNoZWNrc3VtLmZpbmQocmVzdWx0KSwgc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgICAg
IDw8IHJlc3VsdCA8PCAiIHNob3VsZCBiZSBvbmUgb2YgdGhlc2U6XG4iCisgICAgICAgIDw8IGNo
ZWNrc3VtOworICB9CiB9CiAKIGNsYXNzIE5ldEVxRGVjb2RpbmdUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CkBAIC0yNTgsNyArMjY1LDYgQEAgY2xhc3MgTmV0RXFEZWNvZGluZ1Rlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgdm9pZCBEZWNvZGVBbmRDb21wYXJlKGNvbnN0
IHN0ZDo6c3RyaW5nJiBydHBfZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBvdXRwdXRfY2hlY2tzdW0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgbmV0d29ya19zdGF0c19jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBydGNwX3N0YXRzX2NoZWNrc3VtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBnZW5fcmVmKTsKIAogICBzdGF0aWMgdm9pZCBQb3B1bGF0ZVJ0
cEluZm8oaW50IGZyYW1lX2luZGV4LApAQCAtMzY2LDcgKzM3Miw2IEBAIHZvaWQgTmV0RXFEZWNv
ZGluZ1Rlc3Q6OkRlY29kZUFuZENvbXBhcmUoCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJ0cF9m
aWxlLAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfY2hlY2tzdW0sCiAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIG5ldHdvcmtfc3RhdHNfY2hlY2tzdW0sCi0gICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHJ0Y3Bfc3RhdHNfY2hlY2tzdW0sCiAgICAgYm9vbCBnZW5fcmVmKSB7CiAgIE9wZW5JbnB1
dEZpbGUocnRwX2ZpbGUpOwogCkBAIC0zNzgsMTAgKzM4Myw2IEBAIHZvaWQgTmV0RXFEZWNvZGlu
Z1Rlc3Q6OkRlY29kZUFuZENvbXBhcmUoCiAgICAgICBnZW5fcmVmID8gd2VicnRjOjp0ZXN0OjpP
dXRwdXRQYXRoKCkgKyAibmV0ZXFfbmV0d29ya19zdGF0cy5kYXQiIDogIiI7CiAgIFJlc3VsdFNp
bmsgbmV0d29ya19zdGF0cyhzdGF0X291dF9maWxlKTsKIAotICBzdGQ6OnN0cmluZyBydGNwX291
dF9maWxlID0KLSAgICAgIGdlbl9yZWYgPyB3ZWJydGM6OnRlc3Q6Ok91dHB1dFBhdGgoKSArICJu
ZXRlcV9ydGNwX3N0YXRzLmRhdCIgOiAiIjsKLSAgUmVzdWx0U2luayBydGNwX3N0YXRzKHJ0Y3Bf
b3V0X2ZpbGUpOwotCiAgIHBhY2tldF8gPSBydHBfc291cmNlXy0+TmV4dFBhY2tldCgpOwogICBp
bnQgaSA9IDA7CiAgIHVpbnQ2NF90IGxhc3RfY29uY2VhbGVkX3NhbXBsZXMgPSAwOwpAQCAtNDE4
LDExICs0MTksNiBAQCB2b2lkIE5ldEVxRGVjb2RpbmdUZXN0OjpEZWNvZGVBbmRDb21wYXJlKAog
ICAgICAgRVhQRUNUX05FQVIoCiAgICAgICAgICAgKGRlbHRhX2NvbmNlYWxlZF9zYW1wbGVzIDw8
IDE0KSAvIGRlbHRhX3RvdGFsX3NhbXBsZXNfcmVjZWl2ZWQsCiAgICAgICAgICAgY3VycmVudF9u
ZXR3b3JrX3N0YXRzLmV4cGFuZF9yYXRlLCAoMiA8PCAxNCkgLyAxMDAuMCk7Ci0KLSAgICAgIC8v
IFByb2Nlc3MgUlRDUHN0YXQuCi0gICAgICBSdGNwU3RhdGlzdGljcyBjdXJyZW50X3J0Y3Bfc3Rh
dHM7Ci0gICAgICBuZXRlcV8tPkdldFJ0Y3BTdGF0aXN0aWNzKCZjdXJyZW50X3J0Y3Bfc3RhdHMp
OwotICAgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUocnRjcF9zdGF0cy5BZGRSZXN1bHQoY3Vy
cmVudF9ydGNwX3N0YXRzKSk7CiAgICAgfQogICB9CiAKQEAgLTQzMCw4ICs0MjYsNiBAQCB2b2lk
IE5ldEVxRGVjb2RpbmdUZXN0OjpEZWNvZGVBbmRDb21wYXJlKAogICBvdXRwdXQuVmVyaWZ5Q2hl
Y2tzdW0ob3V0cHV0X2NoZWNrc3VtKTsKICAgU0NPUEVEX1RSQUNFKCJDaGVjayBuZXR3b3JrIHN0
YXRzLiIpOwogICBuZXR3b3JrX3N0YXRzLlZlcmlmeUNoZWNrc3VtKG5ldHdvcmtfc3RhdHNfY2hl
Y2tzdW0pOwotICBTQ09QRURfVFJBQ0UoIkNoZWNrIHJ0Y3Agc3RhdHMuIik7Ci0gIHJ0Y3Bfc3Rh
dHMuVmVyaWZ5Q2hlY2tzdW0ocnRjcF9zdGF0c19jaGVja3N1bSk7CiB9CiAKIHZvaWQgTmV0RXFE
ZWNvZGluZ1Rlc3Q6OlBvcHVsYXRlUnRwSW5mbyhpbnQgZnJhbWVfaW5kZXgsCkBAIC00ODEsMTQg
KzQ3NSw4IEBAIFRFU1RfRihOZXRFcURlY29kaW5nVGVzdCwgTUFZQkVfVGVzdEJpdEV4YWN0bmVz
cykgewogICAgICAgICAgICAgICAgICAgICAgICAiNGIyMzcwZjVjNzk0NzQxZDJhNDZiZTVjNzkz
NWM2NmVmM2ZiNTNlOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICI0YjIzNzBmNWM3OTQ3NDFk
MmE0NmJlNWM3OTM1YzY2ZWYzZmI1M2U5Iik7CiAKLSAgY29uc3Qgc3RkOjpzdHJpbmcgcnRjcF9z
dGF0c19jaGVja3N1bSA9Ci0gICAgICBQbGF0Zm9ybUNoZWNrc3VtKCJiODg4MGJmOWZlZDI0ODdl
ZmJkZGNiOGQ5NGI5OTM3YTI5YWU1MjFkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgImYzZjdi
M2QzZTcxZDdlNjM1MjQwYjUzNzNiNTdkZjZhN2U0Y2U5ZDQiLCAibm90IHVzZWQiLAotICAgICAg
ICAgICAgICAgICAgICAgICAiYjg4ODBiZjlmZWQyNDg3ZWZiZGRjYjhkOTRiOTkzN2EyOWFlNTIx
ZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICJiODg4MGJmOWZlZDI0ODdlZmJkZGNiOGQ5NGI5
OTM3YTI5YWU1MjFkIik7Ci0KICAgRGVjb2RlQW5kQ29tcGFyZShpbnB1dF9ydHBfZmlsZSwgb3V0
cHV0X2NoZWNrc3VtLCBuZXR3b3JrX3N0YXRzX2NoZWNrc3VtLAotICAgICAgICAgICAgICAgICAg
IHJ0Y3Bfc3RhdHNfY2hlY2tzdW0sIEZMQUdfZ2VuX3JlZik7CisgICAgICAgICAgICAgICAgICAg
RkxBR19nZW5fcmVmKTsKIH0KIAogI2lmICFkZWZpbmVkKFdFQlJUQ19JT1MpICYmIGRlZmluZWQo
V0VCUlRDX05FVEVRX1VOSVRURVNUX0JJVEVYQUNUKSAmJiBcCkBAIC01MDEsMTIgKzQ4OSwxMyBA
QCBURVNUX0YoTmV0RXFEZWNvZGluZ1Rlc3QsIE1BWUJFX1Rlc3RPcHVzQml0RXhhY3RuZXNzKSB7
CiAgIGNvbnN0IHN0ZDo6c3RyaW5nIGlucHV0X3J0cF9maWxlID0KICAgICAgIHdlYnJ0Yzo6dGVz
dDo6UmVzb3VyY2VQYXRoKCJhdWRpb19jb2RpbmcvbmV0ZXFfb3B1cyIsICJydHAiKTsKIAotICBj
b25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfY2hlY2tzdW0gPQotICAgICAgUGxhdGZvcm1DaGVja3N1
bSgiMTRhNjNiM2M3YjkyNWM4MjI5NmJlNGJhZmM3MWJlYzg1ZjI5MTVjMiIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICJiN2I3ZWQ4MDJiMGUxOGVlNDE2OTczYmYzYjlhZTk4NTk5YjAxODFkIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIjU4NzZlNTJkZGE5MGQ1Y2E0MzNjMzcyNjU1NWI5MDdi
OTdjODYzNzQiLAotICAgICAgICAgICAgICAgICAgICAgICAiMTRhNjNiM2M3YjkyNWM4MjI5NmJl
NGJhZmM3MWJlYzg1ZjI5MTVjMiIsCi0gICAgICAgICAgICAgICAgICAgICAgICIxNGE2M2IzYzdi
OTI1YzgyMjk2YmU0YmFmYzcxYmVjODVmMjkxNWMyIik7CisgIC8vIENoZWNrc3VtIGRlcGVuZHMg
b24gbGlib3B1cyBiZWluZyBjb21waWxlZCB3aXRoIG9yIHdpdGhvdXQgU1NFLgorICBjb25zdCBz
dGQ6OnN0cmluZyBtYXliZV9zc2UgPQorICAgICAgIjE0YTYzYjNjN2I5MjVjODIyOTZiZTRiYWZj
NzFiZWM4NWYyOTE1YzJ8IgorICAgICAgIjJjMDU2NzdkYWE5NjhkNmM2OGI5MmFkZjRhZmZiN2Nk
OWJiNGQzNjMiOworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfY2hlY2tzdW0gPSBQbGF0Zm9y
bUNoZWNrc3VtKAorICAgICAgbWF5YmVfc3NlLCAiYjdiN2VkODAyYjBlMThlZTQxNjk3M2JmM2I5
YWU5ODU5OWIwMTgxZCIsCisgICAgICAiNTg3NmU1MmRkYTkwZDVjYTQzM2MzNzI2NTU1YjkwN2I5
N2M4NjM3NCIsIG1heWJlX3NzZSwgbWF5YmVfc3NlKTsKIAogICBjb25zdCBzdGQ6OnN0cmluZyBu
ZXR3b3JrX3N0YXRzX2NoZWNrc3VtID0KICAgICAgIFBsYXRmb3JtQ2hlY2tzdW0oImFkYjMyNzI0
OThlNDM2ZDFjMDE5Y2JmZDcxNjEwZTk1MTBjNTQ0OTciLApAQCAtNTE1LDE1ICs1MDQsOCBAQCBU
RVNUX0YoTmV0RXFEZWNvZGluZ1Rlc3QsIE1BWUJFX1Rlc3RPcHVzQml0RXhhY3RuZXNzKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICJhZGIzMjcyNDk4ZTQzNmQxYzAxOWNiZmQ3MTYxMGU5NTEw
YzU0NDk3IiwKICAgICAgICAgICAgICAgICAgICAgICAgImFkYjMyNzI0OThlNDM2ZDFjMDE5Y2Jm
ZDcxNjEwZTk1MTBjNTQ0OTciKTsKIAotICBjb25zdCBzdGQ6OnN0cmluZyBydGNwX3N0YXRzX2No
ZWNrc3VtID0KLSAgICAgIFBsYXRmb3JtQ2hlY2tzdW0oImUzN2M3OTdlM2RlNmE2NGRkYTg4Yzlh
ZGU3YTAxM2QwMjJhMmUxZTAiLAotICAgICAgICAgICAgICAgICAgICAgICAiZTM3Yzc5N2UzZGU2
YTY0ZGRhODhjOWFkZTdhMDEzZDAyMmEyZTFlMCIsCi0gICAgICAgICAgICAgICAgICAgICAgICJl
MzdjNzk3ZTNkZTZhNjRkZGE4OGM5YWRlN2EwMTNkMDIyYTJlMWUwIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgImUzN2M3OTdlM2RlNmE2NGRkYTg4YzlhZGU3YTAxM2QwMjJhMmUxZTAiLAotICAg
ICAgICAgICAgICAgICAgICAgICAiZTM3Yzc5N2UzZGU2YTY0ZGRhODhjOWFkZTdhMDEzZDAyMmEy
ZTFlMCIpOwotCiAgIERlY29kZUFuZENvbXBhcmUoaW5wdXRfcnRwX2ZpbGUsIG91dHB1dF9jaGVj
a3N1bSwgbmV0d29ya19zdGF0c19jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAgICBydGNwX3N0
YXRzX2NoZWNrc3VtLCBGTEFHX2dlbl9yZWYpOworICAgICAgICAgICAgICAgICAgIEZMQUdfZ2Vu
X3JlZik7CiB9CiAKICNpZiAhZGVmaW5lZChXRUJSVENfSU9TKSAmJiBkZWZpbmVkKFdFQlJUQ19O
RVRFUV9VTklUVEVTVF9CSVRFWEFDVCkgJiYgXApAQCAtNTM2LDIxICs1MTgsMTggQEAgVEVTVF9G
KE5ldEVxRGVjb2RpbmdUZXN0LCBNQVlCRV9UZXN0T3B1c0R0eEJpdEV4YWN0bmVzcykgewogICBj
b25zdCBzdGQ6OnN0cmluZyBpbnB1dF9ydHBfZmlsZSA9CiAgICAgICB3ZWJydGM6OnRlc3Q6OlJl
c291cmNlUGF0aCgiYXVkaW9fY29kaW5nL25ldGVxX29wdXNfZHR4IiwgInJ0cCIpOwogCi0gIGNv
bnN0IHN0ZDo6c3RyaW5nIG91dHB1dF9jaGVja3N1bSA9Ci0gICAgICBQbGF0Zm9ybUNoZWNrc3Vt
KCI3MTNhZjZjOTI4ODFmNWFhYjEyODU3NjVlZTY2ODBkYTlkMWMwNmNlIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIjNlYzk5MWI5Njg3MjEyM2YxNTU0YzAzYzU0M2NhNWQ1MTg0MzFlNDYiLAot
ICAgICAgICAgICAgICAgICAgICAgICAiZGE5ZjlhMmQ5NGUwYzJkNjczNDJmYWQ0OTY1ZDdiOTFj
ZGE1MGIyNSIsCi0gICAgICAgICAgICAgICAgICAgICAgICI3MTNhZjZjOTI4ODFmNWFhYjEyODU3
NjVlZTY2ODBkYTlkMWMwNmNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIjcxM2FmNmM5Mjg4
MWY1YWFiMTI4NTc2NWVlNjY4MGRhOWQxYzA2Y2UiKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbWF5
YmVfc3NlID0KKyAgICAgICI3MTNhZjZjOTI4ODFmNWFhYjEyODU3NjVlZTY2ODBkYTlkMWMwNmNl
fCIKKyAgICAgICIyYWMxMGM0ZTc5YWVlZGQwZGYyODYzYjA3OWRhNTg0OGI0MGYwMGI1IjsKKyAg
Y29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0X2NoZWNrc3VtID0gUGxhdGZvcm1DaGVja3N1bSgKKyAg
ICAgIG1heWJlX3NzZSwgIjNlYzk5MWI5Njg3MjEyM2YxNTU0YzAzYzU0M2NhNWQ1MTg0MzFlNDYi
LAorICAgICAgImRhOWY5YTJkOTRlMGMyZDY3MzQyZmFkNDk2NWQ3YjkxY2RhNTBiMjUiLCBtYXli
ZV9zc2UsIG1heWJlX3NzZSk7CiAKICAgY29uc3Qgc3RkOjpzdHJpbmcgbmV0d29ya19zdGF0c19j
aGVja3N1bSA9CiAgICAgICAiYmFiNThkYzU4N2Q5NTZmMzI2MDU2ZDczNDBjOTZlYjlkMmQzY2My
MSI7CiAKLSAgY29uc3Qgc3RkOjpzdHJpbmcgcnRjcF9zdGF0c19jaGVja3N1bSA9Ci0gICAgICAi
YWMyN2E3ZjMwNWVmYjU4YjM5YmYxMjNkY2NlZTI1ZGVlNTc1OGU2MyI7Ci0KICAgRGVjb2RlQW5k
Q29tcGFyZShpbnB1dF9ydHBfZmlsZSwgb3V0cHV0X2NoZWNrc3VtLCBuZXR3b3JrX3N0YXRzX2No
ZWNrc3VtLAotICAgICAgICAgICAgICAgICAgIHJ0Y3Bfc3RhdHNfY2hlY2tzdW0sIEZMQUdfZ2Vu
X3JlZik7CisgICAgICAgICAgICAgICAgICAgRkxBR19nZW5fcmVmKTsKIH0KIAogLy8gVXNlIGZh
eCBtb2RlIHRvIGF2b2lkIHRpbWUtc2NhbGluZy4gVGhpcyBpcyB0byBzaW1wbGlmeSB0aGUgdGVz
dGluZyBvZgpAQCAtMTc0MCw3ICsxNzE5LDcgQEAgVEVTVChOZXRFcU5vVGltZVN0cmV0Y2hpbmdN
b2RlLCBSdW5UZXN0KSB7CiAgICAgICB7OCwga1J0cEV4dGVuc2lvblZpZGVvVGltaW5nfX07CiAg
IHN0ZDo6dW5pcXVlX3B0cjxOZXRFcUlucHV0PiBpbnB1dChuZXcgTmV0RXFSdHBEdW1wSW5wdXQo
CiAgICAgICB3ZWJydGM6OnRlc3Q6OlJlc291cmNlUGF0aCgiYXVkaW9fY29kaW5nL25ldGVxX3Vu
aXZlcnNhbF9uZXciLCAicnRwIiksCi0gICAgICBydHBfZXh0X21hcCkpOworICAgICAgcnRwX2V4
dF9tYXAsIGFic2w6Om51bGxvcHQgLypObyBTU1JDIGZpbHRlciovKSk7CiAgIHN0ZDo6dW5pcXVl
X3B0cjxUaW1lTGltaXRlZE5ldEVxSW5wdXQ+IGlucHV0X3RpbWVfbGltaXQoCiAgICAgICBuZXcg
VGltZUxpbWl0ZWROZXRFcUlucHV0KHN0ZDo6bW92ZShpbnB1dCksIDIwMDAwKSk7CiAgIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb1Npbms+IG91dHB1dChuZXcgVm9pZEF1ZGlvU2luayk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9ub3JtYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25vcm1hbC5oCmluZGV4IGIx
M2YxNmU1MGRjODE4ZDFjMDg2MWVjYzFmZGMyMzljOTg3N2E5MmUuLjgwNDUxYjUwMDc4MTNmYTcx
Mzk2Yjg3MWJlNTVjZGQ4MTM1Mjg1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25vcm1hbC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL25vcm1hbC5oCkBAIC0xMSwxMSArMTEsOSBAQAogI2lmbmRlZiBN
T0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9OT1JNQUxfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJ
T19DT0RJTkdfTkVURVFfTk9STUFMX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRl
IDxzdHJpbmcuaD4gIC8vIEFjY2VzcyB0byBzaXplX3QuCiAKLSNpbmNsdWRlIDx2ZWN0b3I+Ci0K
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3Iu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWZpbmVzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgpAQCAtMjQsNiArMjIsNyBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEZvcndh
cmQgZGVjbGFyYXRpb25zLgorY2xhc3MgQXVkaW9NdWx0aVZlY3RvcjsKIGNsYXNzIEJhY2tncm91
bmROb2lzZTsKIGNsYXNzIERlY29kZXJEYXRhYmFzZTsKIGNsYXNzIEV4cGFuZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3BhY2tldC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0LmgKaW5kZXggNDVj
NTZlMWI2ODZiMzUzYmRmZTk0N2U1N2M3MTBlYjhjMDBlN2NkOS4uMzU4ZDhmYTFhYmI4ZjhiOWUw
OTdmZTE3NTU0NWJhODY5ZWYxZmRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0LmgKQEAgLTExLDEyICsxMSwxNCBAQAogI2lmbmRlZiBN
T0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9QQUNLRVRfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJ
T19DT0RJTkdfTkVURVFfUEFDS0VUX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRl
IDxsaXN0PgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3Mv
YXVkaW9fZGVjb2Rlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rp
Y2tfdGltZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3BhY2tldF9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRfYnVmZmVyLmNjCmlu
ZGV4IGViYTRkM2U2OGI2NmQ2ZTU3MWU5YzA2ZTQ1NTczODE3YWY3ZGE5NzguLjM0Mzc2M2I0ZTRk
ODEzZmE2MTA1YzNhYjk5ZTZmZWE3MDYwNjYyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Bh
Y2tldF9idWZmZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0X2J1ZmZlci5jYwpAQCAtMTQs
MTIgKzE0LDE3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNr
ZXRfYnVmZmVyLmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBmaW5kX2lmKCkKKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFwaS9h
dWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS90aWNrX3RpbWVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
QEAgLTI5NCw5ICsyOTksNCBAQCBib29sIFBhY2tldEJ1ZmZlcjo6Q29udGFpbnNEdHhPckNuZ1Bh
Y2tldCgKICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFBhY2tldEJ1ZmZlcjo6QnVmZmVyU3Rh
dChpbnQqIG51bV9wYWNrZXRzLCBpbnQqIG1heF9udW1fcGFja2V0cykgY29uc3QgewotICAqbnVt
X3BhY2tldHMgPSBzdGF0aWNfY2FzdDxpbnQ+KGJ1ZmZlcl8uc2l6ZSgpKTsKLSAgKm1heF9udW1f
cGFja2V0cyA9IHN0YXRpY19jYXN0PGludD4obWF4X251bWJlcl9vZl9wYWNrZXRzXyk7Ci19Ci0K
IH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldF9i
dWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldF9idWZmZXIuaAppbmRleCA3ZTM0YzFlOWZjZTBi
ODAwM2Q0Mzc4NjYyNTY0MGMzYzIyZjUwNWNlLi4wZjVjZDdmOGVkNWRhY2QwNWM3MDUxNzA2YjZk
NWYwMDVmYWI0ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRfYnVmZmVyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvcGFja2V0X2J1ZmZlci5oCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVk
ZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2RlY29kZXJfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9wYWNrZXQuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1v
bl90eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVz
X3B1YmxpYy5oIiAgLy8gSXNOZXdlclRpbWVzdGFtcAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0
cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0xMjUsOCArMTI1LDYgQEAg
Y2xhc3MgUGFja2V0QnVmZmVyIHsKICAgdmlydHVhbCBib29sIENvbnRhaW5zRHR4T3JDbmdQYWNr
ZXQoCiAgICAgICBjb25zdCBEZWNvZGVyRGF0YWJhc2UqIGRlY29kZXJfZGF0YWJhc2UpIGNvbnN0
OwogCi0gIHZpcnR1YWwgdm9pZCBCdWZmZXJTdGF0KGludCogbnVtX3BhY2tldHMsIGludCogbWF4
X251bV9wYWNrZXRzKSBjb25zdDsKLQogICAvLyBTdGF0aWMgbWV0aG9kIHJldHVybmluZyB0cnVl
IGlmIHx0aW1lc3RhbXB8IGlzIG9sZGVyIHRoYW4gfHRpbWVzdGFtcF9saW1pdHwKICAgLy8gYnV0
IGxlc3MgdGhhbiB8aG9yaXpvbl9zYW1wbGVzfCBiZWhpbmQgfHRpbWVzdGFtcF9saW1pdHwuIEZv
ciBpbnN0YW5jZSwKICAgLy8gd2l0aCB0aW1lc3RhbXBfbGltaXQgPSAxMDAgYW5kIGhvcml6b25f
c2FtcGxlcyA9IDEwLCBhIHRpbWVzdGFtcCBpbiB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L3Bvc3RfZGVjb2RlX3ZhZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcG9zdF9kZWNvZGVfdmFkLmgKaW5kZXgg
YWQ0ZjA4MjNiYjdhNWQ3MmM4MTExZTA3NTgxNDFmMzRmNzZjOTk2ZC4uMjdkNjlhNmVlYjIyODBh
ZmI4MzRlNjgzYjlmMmRhMWE0YjhkMzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcG9zdF9k
ZWNvZGVfdmFkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcG9zdF9kZWNvZGVfdmFkLmgKQEAgLTExLDEz
ICsxMSwxMSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9QT1NUX0RFQ09E
RV9WQURfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfUE9TVF9ERUNPREVf
VkFEX0hfCiAKLSNpbmNsdWRlIDxzdHJpbmc+ICAvLyBzaXplX3QKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVk
aW9fZGVjb2Rlci5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby92YWQvaW5jbHVkZS93ZWJydGNf
dmFkLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVk
ZSkgIC8vIE5VTEwKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWZpbmVz
LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3ByZWVtcHRpdmVfZXhwYW5kLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvcHJlZW1wdGl2ZV9leHBhbmQuY2MKaW5kZXggNjE1OWE5Y2IxNWQ3MGU2NzA4NmRmZjFmN2Vm
MGMwMjVjNzUxZjM5My4uY2FkOGQ2YTUwZjZjY2QyYTUwZGEyNTk0YmJhNzliMDc0MWRmNzIyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcHJlZW1wdGl2ZV9leHBhbmQuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvcHJlZW1wdGl2ZV9leHBhbmQuY2MKQEAgLTEwLDkgKzEwLDExIEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wcmVlbXB0aXZlX2V4cGFuZC5oIgogCi0jaW5j
bHVkZSA8YWxnb3JpdGhtPiAgLy8gbWluLCBtYXgKKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKLSNp
bmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJv
Y2Vzc2luZ19saWJyYXJ5LmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aW1lX3N0cmV0Y2guaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3ByZWVtcHRpdmVfZXhwYW5k
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9wcmVlbXB0aXZlX2V4cGFuZC5oCmluZGV4IGFjZTY0OGYxNWNjZTI1
NzEwOTk3NmJiZWM4OGRjODdiMGExMjVmNTMuLjBmN2IzYmM4YWNmMThiZDNjZTllNmZjZWRkZWZm
YzhhZWVmNWEzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3ByZWVtcHRpdmVfZXhwYW5kLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvcHJlZW1wdGl2ZV9leHBhbmQuaApAQCAtMTEsMTMgKzExLDE1IEBA
CiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1BSRUVNUFRJVkVfRVhQQU5EX0hf
CiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1BSRUVNUFRJVkVfRVhQQU5EX0hf
CiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0
b3IuaCIKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpbWVfc3RyZXRjaC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLS8v
IEZvcndhcmQgZGVjbGFyYXRpb25zLgorY2xhc3MgQXVkaW9NdWx0aVZlY3RvcjsKIGNsYXNzIEJh
Y2tncm91bmROb2lzZTsKIAogLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBQcmVlbXB0aXZl
RXhwYW5kIG9wZXJhdGlvbi4gTW9zdCBvZiB0aGUgd29yayBpcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9yZWRfcGF5bG9hZF9z
cGxpdHRlci5jYwppbmRleCBmNTQzNWU4ZWFiNGFkMWVmYjk2ZDNhMDM5Zjk2NzZkY2I4MjlmYzcw
Li4yZGZlODM4NmZmOWE5NGVlYTk3ZWUyN2ZhNzQzNjU3NGNlYjdmMDIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9yZWRfcGF5bG9hZF9zcGxpdHRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9yZWRf
cGF5bG9hZF9zcGxpdHRlci5jYwpAQCAtMTEsMTAgKzExLDE1IEBACiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuaCIKIAogI2luY2x1ZGUg
PGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5j
bHVkZSA8bGlzdD4KKyNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2UuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9wYWNrZXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9j
b252ZXJzaW9ucy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9yZWRfcGF5bG9hZF9zcGxp
dHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuaAppbmRleCA1ZTIzOWRk
YzcwODI2MGU2NmZmNGVhMzYxYzVjYzI2MTE3NTY0YjQ2Li41NTA2M2U3NDE3NjllMGMwMzFiOTJi
YTBmMDc1M2E5MGZlZDBmNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9yZWRfcGF5bG9hZF9z
cGxpdHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3JlZF9wYXlsb2FkX3NwbGl0dGVyLmgKQEAgLTE2
LDcgKzE2LDYgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLS8vIEZvcndhcmQgZGVjbGFyYXRp
b25zLgogY2xhc3MgRGVjb2RlckRhdGFiYXNlOwogCiAvLyBUaGlzIGNsYXNzIGhhbmRsZXMgc3Bs
aXR0aW5nIG9mIFJFRCBwYXlsb2FkcyBpbnRvIHNtYWxsZXIgcGFydHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9ydGNwLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcnRjcC5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTUxZWI1Zjc1YjQwMWZmYjJmOTU4MjhiMjgyZDhmZGQ1YWZjYTljMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9ydGNwLmNjCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgKGMpIDIwMTEgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgotICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ydGNwLmgiCi0K
LSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGFs
Z29yaXRobT4KLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLXZvaWQgUnRjcDo6SW5pdCh1aW50MTZf
dCBzdGFydF9zZXF1ZW5jZV9udW1iZXIpIHsKLSAgY3ljbGVzXyA9IDA7Ci0gIG1heF9zZXFfbm9f
ID0gc3RhcnRfc2VxdWVuY2VfbnVtYmVyOwotICBiYXNlX3NlcV9ub18gPSBzdGFydF9zZXF1ZW5j
ZV9udW1iZXI7Ci0gIHJlY2VpdmVkX3BhY2tldHNfID0gMDsKLSAgcmVjZWl2ZWRfcGFja2V0c19w
cmlvcl8gPSAwOwotICBleHBlY3RlZF9wcmlvcl8gPSAwOwotICBqaXR0ZXJfID0gMDsKLSAgdHJh
bnNpdF8gPSAwOwotfQotCi12b2lkIFJ0Y3A6OlVwZGF0ZShjb25zdCBSVFBIZWFkZXImIHJ0cF9o
ZWFkZXIsIHVpbnQzMl90IHJlY2VpdmVfdGltZXN0YW1wKSB7Ci0gIC8vIFVwZGF0ZSBudW1iZXIg
b2YgcmVjZWl2ZWQgcGFja2V0cywgYW5kIGxhcmdlc3QgcGFja2V0IG51bWJlciByZWNlaXZlZC4K
LSAgcmVjZWl2ZWRfcGFja2V0c18rKzsKLSAgaW50MTZfdCBzbl9kaWZmID0gcnRwX2hlYWRlci5z
ZXF1ZW5jZU51bWJlciAtIG1heF9zZXFfbm9fOwotICBpZiAoc25fZGlmZiA+PSAwKSB7Ci0gICAg
aWYgKHJ0cF9oZWFkZXIuc2VxdWVuY2VOdW1iZXIgPCBtYXhfc2VxX25vXykgewotICAgICAgLy8g
V3JhcC1hcm91bmQgZGV0ZWN0ZWQuCi0gICAgICBjeWNsZXNfKys7Ci0gICAgfQotICAgIG1heF9z
ZXFfbm9fID0gcnRwX2hlYWRlci5zZXF1ZW5jZU51bWJlcjsKLSAgfQotCi0gIC8vIENhbGN1bGF0
ZSBqaXR0ZXIgYWNjb3JkaW5nIHRvIFJGQyAzNTUwLCBhbmQgdXBkYXRlIHByZXZpb3VzIHRpbWVz
dGFtcHMuCi0gIC8vIE5vdGUgdGhhdCB0aGUgdmFsdWUgaW4gfGppdHRlcl98IGlzIGluIFE0Lgot
ICBpZiAocmVjZWl2ZWRfcGFja2V0c18gPiAxKSB7Ci0gICAgaW50MzJfdCB0c19kaWZmID0gcmVj
ZWl2ZV90aW1lc3RhbXAgLSAocnRwX2hlYWRlci50aW1lc3RhbXAgLSB0cmFuc2l0Xyk7Ci0gICAg
aW50NjRfdCBqaXR0ZXJfZGlmZiA9IChzdGQ6OmFicyhpbnQ2NF90e3RzX2RpZmZ9KSA8PCA0KSAt
IGppdHRlcl87Ci0gICAgLy8gQ2FsY3VsYXRlIDE1ICogaml0dGVyXyAvIDE2ICsgaml0dGVyX2Rp
ZmYgLyAxNiAod2l0aCBwcm9wZXIgcm91bmRpbmcpLgotICAgIGppdHRlcl8gPSBqaXR0ZXJfICsg
KChqaXR0ZXJfZGlmZiArIDgpID4+IDQpOwotICAgIFJUQ19EQ0hFQ0tfR0Uoaml0dGVyXywgMCk7
Ci0gIH0KLSAgdHJhbnNpdF8gPSBydHBfaGVhZGVyLnRpbWVzdGFtcCAtIHJlY2VpdmVfdGltZXN0
YW1wOwotfQotCi12b2lkIFJ0Y3A6OkdldFN0YXRpc3RpY3MoYm9vbCBub19yZXNldCwgUnRjcFN0
YXRpc3RpY3MqIHN0YXRzKSB7Ci0gIC8vIEV4dGVuZGVkIGhpZ2hlc3Qgc2VxdWVuY2UgbnVtYmVy
IHJlY2VpdmVkLgotICBzdGF0cy0+ZXh0ZW5kZWRfaGlnaGVzdF9zZXF1ZW5jZV9udW1iZXIgPQot
ICAgICAgKHN0YXRpY19jYXN0PGludD4oY3ljbGVzXykgPDwgMTYpICsgbWF4X3NlcV9ub187Ci0K
LSAgLy8gQ2FsY3VsYXRlIGV4cGVjdGVkIG51bWJlciBvZiBwYWNrZXRzIGFuZCBjb21wYXJlIGl0
IHdpdGggdGhlIG51bWJlciBvZgotICAvLyBwYWNrZXRzIHRoYXQgd2VyZSBhY3R1YWxseSByZWNl
aXZlZC4gVGhlIGN1bXVsYXRpdmUgbnVtYmVyIG9mIGxvc3QgcGFja2V0cwotICAvLyBjYW4gYmUg
ZXh0cmFjdGVkLgotICB1aW50MzJfdCBleHBlY3RlZF9wYWNrZXRzID0KLSAgICAgIHN0YXRzLT5l
eHRlbmRlZF9oaWdoZXN0X3NlcXVlbmNlX251bWJlciAtIGJhc2Vfc2VxX25vXyArIDE7Ci0gIGlm
IChyZWNlaXZlZF9wYWNrZXRzXyA9PSAwKSB7Ci0gICAgLy8gTm8gcGFja2V0cyByZWNlaXZlZCwg
YXNzdW1lIG5vbmUgbG9zdC4KLSAgICBzdGF0cy0+cGFja2V0c19sb3N0ID0gMDsKLSAgfSBlbHNl
IGlmIChleHBlY3RlZF9wYWNrZXRzID4gcmVjZWl2ZWRfcGFja2V0c18pIHsKLSAgICBzdGF0cy0+
cGFja2V0c19sb3N0ID0gZXhwZWN0ZWRfcGFja2V0cyAtIHJlY2VpdmVkX3BhY2tldHNfOwotICAg
IGlmIChzdGF0cy0+cGFja2V0c19sb3N0ID4gMHhGRkZGRkYpIHsKLSAgICAgIHN0YXRzLT5wYWNr
ZXRzX2xvc3QgPSAweEZGRkZGRjsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgc3RhdHMtPnBhY2tl
dHNfbG9zdCA9IDA7Ci0gIH0KLQotICAvLyBGcmFjdGlvbiBsb3N0IHNpbmNlIGxhc3QgcmVwb3J0
LgotICB1aW50MzJfdCBleHBlY3RlZF9zaW5jZV9sYXN0ID0gZXhwZWN0ZWRfcGFja2V0cyAtIGV4
cGVjdGVkX3ByaW9yXzsKLSAgdWludDMyX3QgcmVjZWl2ZWRfc2luY2VfbGFzdCA9IHJlY2VpdmVk
X3BhY2tldHNfIC0gcmVjZWl2ZWRfcGFja2V0c19wcmlvcl87Ci0gIGlmICghbm9fcmVzZXQpIHsK
LSAgICBleHBlY3RlZF9wcmlvcl8gPSBleHBlY3RlZF9wYWNrZXRzOwotICAgIHJlY2VpdmVkX3Bh
Y2tldHNfcHJpb3JfID0gcmVjZWl2ZWRfcGFja2V0c187Ci0gIH0KLSAgaW50MzJfdCBsb3N0ID0g
ZXhwZWN0ZWRfc2luY2VfbGFzdCAtIHJlY2VpdmVkX3NpbmNlX2xhc3Q7Ci0gIGlmIChleHBlY3Rl
ZF9zaW5jZV9sYXN0ID09IDAgfHwgbG9zdCA8PSAwIHx8IHJlY2VpdmVkX3BhY2tldHNfID09IDAp
IHsKLSAgICBzdGF0cy0+ZnJhY3Rpb25fbG9zdCA9IDA7Ci0gIH0gZWxzZSB7Ci0gICAgc3RhdHMt
PmZyYWN0aW9uX2xvc3QgPSBzdGQ6Om1pbigweEZGVSwgKGxvc3QgPDwgOCkgLyBleHBlY3RlZF9z
aW5jZV9sYXN0KTsKLSAgfQotCi0gIHN0YXRzLT5qaXR0ZXIgPSBqaXR0ZXJfID4+IDQ7ICAvLyBT
Y2FsaW5nIGZyb20gUTQuCi19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL3J0Y3AuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3J0Y3AuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjFkZTdlYjdmNDg3ZjI3ZWI4YmM2OTZjZTgxMDY5ODM5ODQ5OGYwOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9ydGNwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogIENvcHlyaWdo
dCAoYykgMjAxMSBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
Ci0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9SVENQX0hfCi0jZGVm
aW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1JUQ1BfSF8KLQotI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBGb3J3YXJk
IGRlY2xhcmF0aW9uLgotc3RydWN0IFJUUEhlYWRlcjsKLQotY2xhc3MgUnRjcCB7Ci0gcHVibGlj
OgotICBSdGNwKCkgeyBJbml0KDApOyB9Ci0KLSAgflJ0Y3AoKSB7fQotCi0gIC8vIFJlc2V0cyB0
aGUgUlRDUCBzdGF0aXN0aWNzLCBhbmQgc2V0cyB0aGUgZmlyc3QgcmVjZWl2ZWQgc2VxdWVuY2Ug
bnVtYmVyLgotICB2b2lkIEluaXQodWludDE2X3Qgc3RhcnRfc2VxdWVuY2VfbnVtYmVyKTsKLQot
ICAvLyBVcGRhdGVzIHRoZSBSVENQIHN0YXRpc3RpY3Mgd2l0aCBhIG5ldyByZWNlaXZlZCBwYWNr
ZXQuCi0gIHZvaWQgVXBkYXRlKGNvbnN0IFJUUEhlYWRlciYgcnRwX2hlYWRlciwgdWludDMyX3Qg
cmVjZWl2ZV90aW1lc3RhbXApOwotCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgUlRDUCBzdGF0
aXN0aWNzLiBJZiB8bm9fcmVzZXR8IGlzIHRydWUsIHRoZSBzdGF0aXN0aWNzCi0gIC8vIGFyZSBu
b3QgcmVzZXQsIG90aGVyd2lzZSB0aGV5IGFyZS4KLSAgdm9pZCBHZXRTdGF0aXN0aWNzKGJvb2wg
bm9fcmVzZXQsIFJ0Y3BTdGF0aXN0aWNzKiBzdGF0cyk7Ci0KLSBwcml2YXRlOgotICB1aW50MTZf
dCBjeWNsZXNfOyAgICAgICAvLyBUaGUgbnVtYmVyIG9mIHdyYXAtYXJvdW5kcyBmb3IgdGhlIHNl
cXVlbmNlIG51bWJlci4KLSAgdWludDE2X3QgbWF4X3NlcV9ub187ICAgLy8gVGhlIG1heGltdW0g
c2VxdWVuY2UgbnVtYmVyIHJlY2VpdmVkLiBTdGFydHMgb3ZlcgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBmcm9tIDAgYWZ0ZXIgd3JhcC1hcm91bmQuCi0gIHVpbnQxNl90IGJhc2Vfc2Vx
X25vXzsgIC8vIFRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGZpcnN0IHJlY2VpdmVkIHBhY2tl
dC4KLSAgdWludDMyX3QgcmVjZWl2ZWRfcGFja2V0c187ICAvLyBUaGUgbnVtYmVyIG9mIHBhY2tl
dHMgdGhhdCBoYXZlIGJlZW4gcmVjZWl2ZWQuCi0gIHVpbnQzMl90IHJlY2VpdmVkX3BhY2tldHNf
cHJpb3JfOyAgLy8gTnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgd2hlbiBsYXN0Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVwb3J0IHdhcyBnZW5lcmF0ZWQuCi0g
IHVpbnQzMl90IGV4cGVjdGVkX3ByaW9yXzsgIC8vIEV4cGVjdGVkIG51bWJlciBvZiBwYWNrZXRz
LCBhdCB0aGUgdGltZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGFz
dCByZXBvcnQuCi0gIGludDY0X3Qgaml0dGVyXzsgICAgICAgICAgIC8vIEN1cnJlbnQgaml0dGVy
IHZhbHVlIGluIFE0LgotICBpbnQzMl90IHRyYW5zaXRfOyAgICAgICAgICAvLyBDbG9jayBkaWZm
ZXJlbmNlIGZvciBwcmV2aW91cyBwYWNrZXQuCi0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTihSdGNwKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLSNlbmRpZiAgLy8gTU9E
VUxFU19BVURJT19DT0RJTkdfTkVURVFfUlRDUF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
c3RhdGlzdGljc19jYWxjdWxhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxjdWxh
dG9yLmNjCmluZGV4IGMwZTdhNDAyYWFjMDBhYTcyYTVmNzlkZDM0ODY4ZjI2M2M5Zjg1MWQuLjUw
NTIxZmIwM2QzNjRlYTA4MGQ0NTcwNDdhYzcwZjFhMzg3OWE2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3N0YXRpc3RpY3NfY2FsY3VsYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zdGF0aXN0
aWNzX2NhbGN1bGF0b3IuY2MKQEAgLTEyNiw3ICsxMjYsMTAgQEAgU3RhdGlzdGljc0NhbGN1bGF0
b3I6OlN0YXRpc3RpY3NDYWxjdWxhdG9yKCkKICAgICAgICAgICAxMDApLAogICAgICAgZXhjZXNz
X2J1ZmZlcl9kZWxheV8oIldlYlJUQy5BdWRpby5BdmVyYWdlRXhjZXNzQnVmZmVyRGVsYXlNcyIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MDAwMCwgIC8vIDYwIHNlY29uZHMgcmVwb3J0
IGludGVydmFsLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMCkge30KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEwMDApLAorICAgICAgYnVmZmVyX2Z1bGxfY291bnRlcl8oIldl
YlJUQy5BdWRpby5KaXR0ZXJCdWZmZXJGdWxsUGVyTWludXRlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYwMDAwLCAgLy8gNjAgc2Vjb25kcyByZXBvcnQgaW50ZXJ2YWwuCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMDApIHt9CiAKIFN0YXRpc3RpY3NDYWxjdWxhdG9yOjp+U3Rh
dGlzdGljc0NhbGN1bGF0b3IoKSA9IGRlZmF1bHQ7CiAKQEAgLTIyOSw2ICsyMzIsNyBAQCB2b2lk
IFN0YXRpc3RpY3NDYWxjdWxhdG9yOjpJbmNyZWFzZUNvdW50ZXIoc2l6ZV90IG51bV9zYW1wbGVz
LCBpbnQgZnNfaHopIHsKICAgICAgIHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KHN0YXRpY19jYXN0PGlu
dD4oMTAwMCAqIG51bV9zYW1wbGVzKSwgZnNfaHopOwogICBkZWxheWVkX3BhY2tldF9vdXRhZ2Vf
Y291bnRlcl8uQWR2YW5jZUNsb2NrKHRpbWVfc3RlcF9tcyk7CiAgIGV4Y2Vzc19idWZmZXJfZGVs
YXlfLkFkdmFuY2VDbG9jayh0aW1lX3N0ZXBfbXMpOworICBidWZmZXJfZnVsbF9jb3VudGVyXy5B
ZHZhbmNlQ2xvY2sodGltZV9zdGVwX21zKTsKICAgdGltZXN0YW1wc19zaW5jZV9sYXN0X3JlcG9y
dF8gKz0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG51bV9zYW1wbGVzKTsKICAgaWYgKHRpbWVzdGFt
cHNfc2luY2VfbGFzdF9yZXBvcnRfID4KICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pihmc19o
eiAqIGtNYXhSZXBvcnRQZXJpb2QpKSB7CkBAIC0yNTAsMTMgKzI1NCwxNyBAQCB2b2lkIFN0YXRp
c3RpY3NDYWxjdWxhdG9yOjpTZWNvbmRhcnlEZWNvZGVkU2FtcGxlcyhpbnQgbnVtX3NhbXBsZXMp
IHsKIAogdm9pZCBTdGF0aXN0aWNzQ2FsY3VsYXRvcjo6Rmx1c2hlZFBhY2tldEJ1ZmZlcigpIHsK
ICAgb3BlcmF0aW9uc19hbmRfc3RhdGVfLnBhY2tldF9idWZmZXJfZmx1c2hlcysrOworICBidWZm
ZXJfZnVsbF9jb3VudGVyXy5SZWdpc3RlclNhbXBsZSgpOwogfQogCi12b2lkIFN0YXRpc3RpY3ND
YWxjdWxhdG9yOjpMb2dEZWxheWVkUGFja2V0T3V0YWdlRXZlbnQoaW50IG91dGFnZV9kdXJhdGlv
bl9tcykgewordm9pZCBTdGF0aXN0aWNzQ2FsY3VsYXRvcjo6TG9nRGVsYXllZFBhY2tldE91dGFn
ZUV2ZW50KGludCBudW1fc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnNfaHopIHsKKyAgaW50IG91dGFnZV9kdXJhdGlv
bl9tcyA9IG51bV9zYW1wbGVzIC8gKGZzX2h6IC8gMTAwMCk7CiAgIFJUQ19ISVNUT0dSQU1fQ09V
TlRTKCJXZWJSVEMuQXVkaW8uRGVsYXllZFBhY2tldE91dGFnZUV2ZW50TXMiLAogICAgICAgICAg
ICAgICAgICAgICAgICBvdXRhZ2VfZHVyYXRpb25fbXMsIDEgLyogbWluICovLCAyMDAwIC8qIG1h
eCAqLywKICAgICAgICAgICAgICAgICAgICAgICAgMTAwIC8qIGJ1Y2tldCBjb3VudCAqLyk7CiAg
IGRlbGF5ZWRfcGFja2V0X291dGFnZV9jb3VudGVyXy5SZWdpc3RlclNhbXBsZSgpOworICBsaWZl
dGltZV9zdGF0c18uZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMgKz0gbnVtX3NhbXBsZXM7
CiB9CiAKIHZvaWQgU3RhdGlzdGljc0NhbGN1bGF0b3I6OlN0b3JlV2FpdGluZ1RpbWUoaW50IHdh
aXRpbmdfdGltZV9tcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxj
dWxhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0b3IuaAppbmRleCA5ZTVk
YWNmZDkyMGE2Mzk5ODAyNmMzYmNiOTZiZWQ4ZjMzZWIwNGE2Li40OWI3NGEwNGIzYjRhNmQ3N2Nl
MDVlNTcwNGZjODZjMmJjNDk2OGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zdGF0aXN0aWNz
X2NhbGN1bGF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0b3IuaApA
QCAtODYsMTAgKzg2LDEwIEBAIGNsYXNzIFN0YXRpc3RpY3NDYWxjdWxhdG9yIHsKICAgLy8gUmVy
cG9ydCB0aGF0IHRoZSBwYWNrZXQgYnVmZmVyIHdhcyBmbHVzaGVkLgogICB2b2lkIEZsdXNoZWRQ
YWNrZXRCdWZmZXIoKTsKIAotICAvLyBMb2dzIGEgZGVsYXllZCBwYWNrZXQgb3V0YWdlIGV2ZW50
IG9mIHxvdXRhZ2VfZHVyYXRpb25fbXN8LiBBIGRlbGF5ZWQKLSAgLy8gcGFja2V0IG91dGFnZSBl
dmVudCBpcyBkZWZpbmVkIGFzIGFuIGV4cGFuZCBwZXJpb2QgY2F1c2VkIG5vdCBieSBhbiBhY3R1
YWwKLSAgLy8gcGFja2V0IGxvc3MsIGJ1dCBieSBhIGRlbGF5ZWQgcGFja2V0LgotICB2aXJ0dWFs
IHZvaWQgTG9nRGVsYXllZFBhY2tldE91dGFnZUV2ZW50KGludCBvdXRhZ2VfZHVyYXRpb25fbXMp
OworICAvLyBMb2dzIGEgZGVsYXllZCBwYWNrZXQgb3V0YWdlIGV2ZW50IG9mIHxudW1fc2FtcGxl
c3wgZXhwYW5kZWQgYXQgYSBzYW1wbGUKKyAgLy8gcmF0ZSBvZiB8ZnNfaHp8LiBBIGRlbGF5ZWQg
cGFja2V0IG91dGFnZSBldmVudCBpcyBkZWZpbmVkIGFzIGFuIGV4cGFuZAorICAvLyBwZXJpb2Qg
Y2F1c2VkIG5vdCBieSBhbiBhY3R1YWwgcGFja2V0IGxvc3MsIGJ1dCBieSBhIGRlbGF5ZWQgcGFj
a2V0LgorICB2aXJ0dWFsIHZvaWQgTG9nRGVsYXllZFBhY2tldE91dGFnZUV2ZW50KGludCBudW1f
c2FtcGxlcywgaW50IGZzX2h6KTsKIAogICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IG5ldHdvcmsg
c3RhdGlzdGljcyBpbiB8c3RhdHN8LiBUaGUgY3VycmVudCBzYW1wbGUgcmF0ZQogICAvLyBpcyB8
ZnNfaHp8LCB0aGUgdG90YWwgbnVtYmVyIG9mIHNhbXBsZXMgaW4gcGFja2V0IGJ1ZmZlciBhbmQg
c3luYyBidWZmZXIKQEAgLTE5OSw2ICsxOTksNyBAQCBjbGFzcyBTdGF0aXN0aWNzQ2FsY3VsYXRv
ciB7CiAgIHNpemVfdCBkaXNjYXJkZWRfc2Vjb25kYXJ5X3BhY2tldHNfOwogICBQZXJpb2RpY1Vt
YUNvdW50IGRlbGF5ZWRfcGFja2V0X291dGFnZV9jb3VudGVyXzsKICAgUGVyaW9kaWNVbWFBdmVy
YWdlIGV4Y2Vzc19idWZmZXJfZGVsYXlfOworICBQZXJpb2RpY1VtYUNvdW50IGJ1ZmZlcl9mdWxs
X2NvdW50ZXJfOwogCiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oU3RhdGlzdGljc0Nh
bGN1bGF0b3IpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N5bmNfYnVmZmVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9zeW5jX2J1ZmZlci5oCmluZGV4IDcyZTMyMGM2MWY2ZjkwMTdjOGIyZDU0MDk4
MDI0OWU4MGVlYWMwOTIuLmQ2NDVlOTE2M2U5MTA1Yzk4ZjFiOTAwYjA5Y2FlZjQxNmZmZmNhNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N5bmNfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
c3luY19idWZmZXIuaApAQCAtMTEsOCArMTEsMTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19D
T0RJTkdfTkVURVFfU1lOQ19CVUZGRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdf
TkVURVFfU1lOQ19CVUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0
ZGludC5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwogI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19m
cmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX211bHRp
X3ZlY3Rvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX3Zl
Y3Rvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRl
cV9pbGJjX3F1YWxpdHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfaWxiY19xdWFs
aXR5X3Rlc3QuY2MKaW5kZXggYWQ2MTIzNWNmMjg5NjZkYWFiNDkxZTZkZGI3NzYxYWY4Mjg1MGM0
Yy4uNmYxMDM0NTI5ODBkZTUyZjA5NzQ1MmZiNDk2YWMzMmZmOTVjNGY5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9pbGJjX3F1YWxpdHlfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90ZXN0L25ldGVxX2lsYmNfcXVhbGl0eV90ZXN0LmNjCkBAIC0yNSw3ICsyNSw3IEBAIG5h
bWVzcGFjZSB7CiBzdGF0aWMgY29uc3QgaW50IGtJbnB1dFNhbXBsZVJhdGVLaHogPSA4Owogc3Rh
dGljIGNvbnN0IGludCBrT3V0cHV0U2FtcGxlUmF0ZUtoeiA9IDg7CiAKLURFRklORV9pbnQoZnJh
bWVfc2l6ZV9tcywgMjAsICJDb2RlYyBmcmFtZSBzaXplIChtaWxsaXNlY29uZHMpLiIpOworV0VC
UlRDX0RFRklORV9pbnQoZnJhbWVfc2l6ZV9tcywgMjAsICJDb2RlYyBmcmFtZSBzaXplIChtaWxs
aXNlY29uZHMpLiIpOwogCiB9ICAvLyBuYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvdGVzdC9uZXRlcV9pc2FjX3F1YWxpdHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0
ZXFfaXNhY19xdWFsaXR5X3Rlc3QuY2MKaW5kZXggOTQ5ODRiODdlNmYxMjM5MjAxOTI0YWZhNzVk
YmYxMDE2ZDA4ZTMyNS4uNjUxYjBjYTcxYTY4ZWQ4MzQxMGExNGRlOWQ3MzliODgwNTUzNTY2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9pc2FjX3F1YWxpdHlfdGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX2lzYWNfcXVhbGl0eV90ZXN0LmNjCkBAIC0yMSw3
ICsyMSw3IEBAIHN0YXRpYyBjb25zdCBpbnQga0lzYWNCbG9ja0R1cmF0aW9uTXMgPSAzMDsKIHN0
YXRpYyBjb25zdCBpbnQga0lzYWNJbnB1dFNhbXBsaW5nS2h6ID0gMTY7CiBzdGF0aWMgY29uc3Qg
aW50IGtJc2FjT3V0cHV0U2FtcGxpbmdLaHogPSAxNjsKIAotREVGSU5FX2ludChiaXRfcmF0ZV9r
YnBzLCAzMiwgIlRhcmdldCBiaXQgcmF0ZSAoa2JwcykuIik7CitXRUJSVENfREVGSU5FX2ludChi
aXRfcmF0ZV9rYnBzLCAzMiwgIlRhcmdldCBiaXQgcmF0ZSAoa2JwcykuIik7CiAKIH0gIC8vIG5h
bWVzcGFjZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX29wdXNfcXVhbGl0
eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9vcHVzX3F1YWxpdHlfdGVzdC5jYwpp
bmRleCA2ODYxZTRjNTVhYWZkNmM0NDY0N2ZkYmMwNGIyYWQ5MjUwODZmYzYyLi5mNGEzNjM2M2Jh
YTk1YmVhN2ViMDNjYTZkMmE1M2Q5MGVhYTY2ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
ZXN0L25ldGVxX29wdXNfcXVhbGl0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0
ZXFfb3B1c19xdWFsaXR5X3Rlc3QuY2MKQEAgLTIyLDI0ICsyMiwyNiBAQCBuYW1lc3BhY2Ugewog
c3RhdGljIGNvbnN0IGludCBrT3B1c0Jsb2NrRHVyYXRpb25NcyA9IDIwOwogc3RhdGljIGNvbnN0
IGludCBrT3B1c1NhbXBsaW5nS2h6ID0gNDg7CiAKLURFRklORV9pbnQoYml0X3JhdGVfa2Jwcywg
MzIsICJUYXJnZXQgYml0IHJhdGUgKGticHMpLiIpOworV0VCUlRDX0RFRklORV9pbnQoYml0X3Jh
dGVfa2JwcywgMzIsICJUYXJnZXQgYml0IHJhdGUgKGticHMpLiIpOwogCi1ERUZJTkVfaW50KGNv
bXBsZXhpdHksCi0gICAgICAgICAgIDEwLAotICAgICAgICAgICAiQ29tcGxleGl0eTogMCB+IDEw
IC0tIGRlZmluZWQgYXMgaW4gT3B1cyIKLSAgICAgICAgICAgInNwZWNpZmljYXRpb24uIik7CitX
RUJSVENfREVGSU5FX2ludChjb21wbGV4aXR5LAorICAgICAgICAgICAgICAgICAgMTAsCisgICAg
ICAgICAgICAgICAgICAiQ29tcGxleGl0eTogMCB+IDEwIC0tIGRlZmluZWQgYXMgaW4gT3B1cyIK
KyAgICAgICAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uLiIpOwogCi1ERUZJTkVfaW50KG1heHBs
YXliYWNrcmF0ZSwgNDgwMDAsICJNYXhpbXVtIHBsYXliYWNrIHJhdGUgKEh6KS4iKTsKK1dFQlJU
Q19ERUZJTkVfaW50KG1heHBsYXliYWNrcmF0ZSwgNDgwMDAsICJNYXhpbXVtIHBsYXliYWNrIHJh
dGUgKEh6KS4iKTsKIAotREVGSU5FX2ludChhcHBsaWNhdGlvbiwgMCwgIkFwcGxpY2F0aW9uIG1v
ZGU6IDAgLS0gVk9JUCwgMSAtLSBBdWRpby4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGFwcGxpY2F0
aW9uLCAwLCAiQXBwbGljYXRpb24gbW9kZTogMCAtLSBWT0lQLCAxIC0tIEF1ZGlvLiIpOwogCi1E
RUZJTkVfaW50KHJlcG9ydGVkX2xvc3NfcmF0ZSwgMTAsICJSZXBvcnRlZCBwZXJjZW50aWxlIG9m
IHBhY2tldCBsb3NzLiIpOworV0VCUlRDX0RFRklORV9pbnQocmVwb3J0ZWRfbG9zc19yYXRlLAor
ICAgICAgICAgICAgICAgICAgMTAsCisgICAgICAgICAgICAgICAgICAiUmVwb3J0ZWQgcGVyY2Vu
dGlsZSBvZiBwYWNrZXQgbG9zcy4iKTsKIAotREVGSU5FX2Jvb2woZmVjLCBmYWxzZSwgIkVuYWJs
ZSBGRUMgZm9yIGVuY29kaW5nICgtbm9mZWMgdG8gZGlzYWJsZSkuIik7CitXRUJSVENfREVGSU5F
X2Jvb2woZmVjLCBmYWxzZSwgIkVuYWJsZSBGRUMgZm9yIGVuY29kaW5nICgtbm9mZWMgdG8gZGlz
YWJsZSkuIik7CiAKLURFRklORV9ib29sKGR0eCwgZmFsc2UsICJFbmFibGUgRFRYIGZvciBlbmNv
ZGluZyAoLW5vZHR4IHRvIGRpc2FibGUpLiIpOworV0VCUlRDX0RFRklORV9ib29sKGR0eCwgZmFs
c2UsICJFbmFibGUgRFRYIGZvciBlbmNvZGluZyAoLW5vZHR4IHRvIGRpc2FibGUpLiIpOwogCi1E
RUZJTkVfaW50KHN1Yl9wYWNrZXRzLCAxLCAiTnVtYmVyIG9mIHN1YiBwYWNrZXRzIHRvIHJlcGFj
a2V0aXplLiIpOworV0VCUlRDX0RFRklORV9pbnQoc3ViX3BhY2tldHMsIDEsICJOdW1iZXIgb2Yg
c3ViIHBhY2tldHMgdG8gcmVwYWNrZXRpemUuIik7CiAKIH0gIC8vIG5hbWVzcGFjZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX3BjbTE2Yl9xdWFsaXR5X3Rlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90ZXN0L25ldGVxX3BjbTE2Yl9xdWFsaXR5X3Rlc3QuY2MKaW5kZXggODg3MmI5
NGEwNjM5MzE1YzJlOWZkOTY2YjFkNTc0Mzk0MWI2ZGY4ZC4uOWM1MzkxOWQ1NDA3N2VmMzA2NGRh
ODhjYjk0MmZlZjFkNDk5Zjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9w
Y20xNmJfcXVhbGl0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfcGNtMTZi
X3F1YWxpdHlfdGVzdC5jYwpAQCAtMjYsNyArMjYsNyBAQCBuYW1lc3BhY2Ugewogc3RhdGljIGNv
bnN0IGludCBrSW5wdXRTYW1wbGVSYXRlS2h6ID0gNDg7CiBzdGF0aWMgY29uc3QgaW50IGtPdXRw
dXRTYW1wbGVSYXRlS2h6ID0gNDg7CiAKLURFRklORV9pbnQoZnJhbWVfc2l6ZV9tcywgMjAsICJD
b2RlYyBmcmFtZSBzaXplIChtaWxsaXNlY29uZHMpLiIpOworV0VCUlRDX0RFRklORV9pbnQoZnJh
bWVfc2l6ZV9tcywgMjAsICJDb2RlYyBmcmFtZSBzaXplIChtaWxsaXNlY29uZHMpLiIpOwogCiB9
ICAvLyBuYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9wY211
X3F1YWxpdHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfcGNtdV9xdWFsaXR5X3Rl
c3QuY2MKaW5kZXggNTRmZjg0OTczOWEzOTAyZjNjOTc0YWI2MmUwZjU4MzYxYTkwZjkyZC4uODVm
MjI2NzFlYWM0N2FkYTk5ZmUzODkyNTNiMTYyZjFkNDU4ZDMzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvdGVzdC9uZXRlcV9wY211X3F1YWxpdHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
ZXN0L25ldGVxX3BjbXVfcXVhbGl0eV90ZXN0LmNjCkBAIC0yNSw3ICsyNSw3IEBAIG5hbWVzcGFj
ZSB7CiBzdGF0aWMgY29uc3QgaW50IGtJbnB1dFNhbXBsZVJhdGVLaHogPSA4Owogc3RhdGljIGNv
bnN0IGludCBrT3V0cHV0U2FtcGxlUmF0ZUtoeiA9IDg7CiAKLURFRklORV9pbnQoZnJhbWVfc2l6
ZV9tcywgMjAsICJDb2RlYyBmcmFtZSBzaXplIChtaWxsaXNlY29uZHMpLiIpOworV0VCUlRDX0RF
RklORV9pbnQoZnJhbWVfc2l6ZV9tcywgMjAsICJDb2RlYyBmcmFtZSBzaXplIChtaWxsaXNlY29u
ZHMpLiIpOwogCiB9ICAvLyBuYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVz
dC9uZXRlcV9zcGVlZF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9zcGVlZF90ZXN0
LmNjCmluZGV4IGM0ODZhYzYwYmQ3Yzg5Y2U0MTcyMjljNTIwY2M5ZjRhNjAzYWI5ZjYuLjcwNzc3
YTJkMDIxNDkyMTQ4M2FkZGNmMjBhZDU5ZDNjOTFiYWYzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Rlc3QvbmV0ZXFfc3BlZWRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVx
X3NwZWVkX3Rlc3QuY2MKQEAgLTE0LDEzICsxNCwxMiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGVyZm9ybWFuY2VfdGVzdC5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCi0jaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRp
bHMuaCIKIAogLy8gRGVmaW5lIGNvbW1hbmQgbGluZSBmbGFncy4KLURFRklORV9pbnQocnVudGlt
ZV9tcywgMTAwMDAsICJTaW11bGF0ZWQgcnVudGltZSBpbiBtcy4iKTsKLURFRklORV9pbnQobG9z
c3JhdGUsIDEwLCAiUGFja2V0IGxvc3NyYXRlOyBkcm9wIGV2ZXJ5IE4gcGFja2V0cy4iKTsKLURF
RklORV9mbG9hdChkcmlmdCwgMC4xZiwgIkNsb2NrZHJpZnQgZmFjdG9yLiIpOwotREVGSU5FX2Jv
b2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CitXRUJSVENfREVGSU5FX2lu
dChydW50aW1lX21zLCAxMDAwMCwgIlNpbXVsYXRlZCBydW50aW1lIGluIG1zLiIpOworV0VCUlRD
X0RFRklORV9pbnQobG9zc3JhdGUsIDEwLCAiUGFja2V0IGxvc3NyYXRlOyBkcm9wIGV2ZXJ5IE4g
cGFja2V0cy4iKTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoZHJpZnQsIDAuMWYsICJDbG9ja2RyaWZ0
IGZhY3Rvci4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMg
bWVzc2FnZS4iKTsKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBzdGQ6
OnN0cmluZyBwcm9ncmFtX25hbWUgPSBhcmd2WzBdOwpAQCAtMzMsNyArMzIsNiBAQCBpbnQgbWFp
bihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgICAiICAtLWxvc3NyYXRlPU4gICAgICAg
ICAgIGRyb3AgZXZlcnkgTiBwYWNrZXRzOyBkZWZhdWx0IGlzIDEwXG4iCiAgICAgICAiICAtLWRy
aWZ0PUYgICAgICAgICAgICAgIGNsb2NrZHJpZnQgZmFjdG9yIGJldHdlZW4gMC4wIGFuZCAxLjA7
ICIKICAgICAgICJkZWZhdWx0IGlzIDAuMVxuIjsKLSAgd2VicnRjOjp0ZXN0OjpTZXRFeGVjdXRh
YmxlUGF0aChhcmd2WzBdKTsKICAgaWYgKHJ0Yzo6RmxhZ0xpc3Q6OlNldEZsYWdzRnJvbUNvbW1h
bmRMaW5lKCZhcmdjLCBhcmd2LCB0cnVlKSB8fCBGTEFHX2hlbHAgfHwKICAgICAgIGFyZ2MgIT0g
MSkgewogICAgIHByaW50ZigiJXMiLCB1c2FnZS5jX3N0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3RpY2tfdGltZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpY2tfdGltZXIuaAppbmRleCA1MjAw
OTllMzQ2NjI0YjU1NzUyOTM1ODVkYzlkN2NhN2QzY2M0ZDYwLi4wMmYwODNlMDJlYjk3OWNjNzdh
ZmZhYTQ1ODE2NjExMjYyMmZhNTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aWNrX3RpbWVy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdGlja190aW1lci5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZu
ZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1RJQ0tfVElNRVJfSF8KICNkZWZpbmUgTU9E
VUxFU19BVURJT19DT0RJTkdfTkVURVFfVElDS19USU1FUl9IXwogCisjaW5jbHVkZSA8c3RkaW50
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aW1lc3RhbXBfc2NhbGVyLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
dGltZXN0YW1wX3NjYWxlci5jYwppbmRleCAwN2Q5NDVlZGNlMDcxMmQ3ZjUxZTRlY2U0MWM5Zjli
YWQ4ZTJiY2JhLi5iMDQ2MWJiOTJkODRlZjM0MDgyYjFjNGIxNmQxNDlkZGRmZjlmODEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS90aW1lc3RhbXBfc2NhbGVyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L3RpbWVzdGFtcF9zY2FsZXIuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpbWVzdGFtcF9zY2FsZXIuaCIKIAorI2luY2x1ZGUgImFw
aS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvZGVjb2Rlcl9kYXRhYmFzZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9ldmVudF9sb2dfaW5w
dXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9ldmVudF9sb2dfaW5wdXQuY2MKaW5kZXgg
MjFjNWY5ZWYwMjIzZjdiMTBlOGE3NzViMGZlMDA3YmEyZjUzZWE5Ni4uOTEwN2U1ZTVlZjRmYzAy
NGMwZTgwNTIxZjQxOTFkNjUyZmRlMzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMv
bmV0ZXFfZXZlbnRfbG9nX2lucHV0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX2V2
ZW50X2xvZ19pbnB1dC5jYwpAQCAtMTksMTEgKzE5LDggQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBu
YW1lc3BhY2UgdGVzdCB7CiAKIE5ldEVxRXZlbnRMb2dJbnB1dDo6TmV0RXFFdmVudExvZ0lucHV0
KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGhkcl9leHRfbWFwKQot
ICAgIDogc291cmNlXyhSdGNFdmVudExvZ1NvdXJjZTo6Q3JlYXRlKGZpbGVfbmFtZSkpIHsKLSAg
Zm9yIChjb25zdCBhdXRvJiBleHRfcGFpciA6IGhkcl9leHRfbWFwKSB7Ci0gICAgc291cmNlXy0+
UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oZXh0X3BhaXIuc2Vjb25kLCBleHRfcGFpci5maXJz
dCk7Ci0gIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9w
dGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlcikKKyAgICA6IHNvdXJjZV8oUnRjRXZlbnRMb2dT
b3VyY2U6OkNyZWF0ZShmaWxlX25hbWUsIHNzcmNfZmlsdGVyKSkgewogICBMb2FkTmV4dFBhY2tl
dCgpOwogICBBZHZhbmNlT3V0cHV0RXZlbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L3Rvb2xzL25ldGVxX2V2ZW50X2xvZ19pbnB1dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFf
ZXZlbnRfbG9nX2lucHV0LmgKaW5kZXggODZjZjlmMmYwMmE5MmI2ZWYzOGM0NDdiZmQ4OWZjZmY4
NTRjYmQwYi4uZTA0ZGYxNjg0ZjFiODcxZDNjY2NjZWU3N2U4ZmI0OTUwZTNiMjM0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfZXZlbnRfbG9nX2lucHV0LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvdG9vbHMvbmV0ZXFfZXZlbnRfbG9nX2lucHV0LmgKQEAgLTI4LDcgKzI4LDcgQEAg
Y2xhc3MgUnRjRXZlbnRMb2dTb3VyY2U7CiBjbGFzcyBOZXRFcUV2ZW50TG9nSW5wdXQgZmluYWwg
OiBwdWJsaWMgTmV0RXFQYWNrZXRTb3VyY2VJbnB1dCB7CiAgcHVibGljOgogICBOZXRFcUV2ZW50
TG9nSW5wdXQoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgaGRyX2V4dF9tYXApOworICAgICAgICAg
ICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyKTsKIAogICBh
YnNsOjpvcHRpb25hbDxpbnQ2NF90PiBOZXh0T3V0cHV0RXZlbnRUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgIHZvaWQgQWR2YW5jZU91dHB1dEV2ZW50KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90b29scy9uZXRlcV9wYWNrZXRfc291cmNlX2lucHV0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvdG9vbHMvbmV0ZXFfcGFja2V0X3NvdXJjZV9pbnB1dC5jYwppbmRleCBhODZjZjZhZmE1OTAx
Nzg0ZjcxNjQwNjMwYWRkZTZhOThhOTI0ZjZmLi5lZTAyMjg4Yzg2ZDY2ZTVmM2RkMDZiMTQ5NWNk
OGU2MjQ1NjY2MmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9wYWNrZXRf
c291cmNlX2lucHV0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3BhY2tldF9zb3Vy
Y2VfaW5wdXQuY2MKQEAgLTU4LDE1ICs1OCwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TmV0RXFJbnB1
dDo6UGFja2V0RGF0YT4gTmV0RXFQYWNrZXRTb3VyY2VJbnB1dDo6UG9wUGFja2V0KCkgewogICBy
ZXR1cm4gcGFja2V0X2RhdGE7CiB9CiAKLXZvaWQgTmV0RXFQYWNrZXRTb3VyY2VJbnB1dDo6U2Vs
ZWN0U3NyYyh1aW50MzJfdCBzc3JjKSB7Ci0gIHNvdXJjZSgpLT5TZWxlY3RTc3JjKHNzcmMpOwot
ICBpZiAocGFja2V0XyAmJiBwYWNrZXRfLT5oZWFkZXIoKS5zc3JjICE9IHNzcmMpCi0gICAgTG9h
ZE5leHRQYWNrZXQoKTsKLX0KLQogTmV0RXFSdHBEdW1wSW5wdXQ6Ok5ldEVxUnRwRHVtcElucHV0
KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBoZHJfZXh0X21hcCkKLSAg
ICA6IHNvdXJjZV8oUnRwRmlsZVNvdXJjZTo6Q3JlYXRlKGZpbGVfbmFtZSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAm
IGhkcl9leHRfbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6
Om9wdGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlcikKKyAgICA6IHNvdXJjZV8oUnRwRmlsZVNv
dXJjZTo6Q3JlYXRlKGZpbGVfbmFtZSwgc3NyY19maWx0ZXIpKSB7CiAgIGZvciAoY29uc3QgYXV0
byYgZXh0X3BhaXIgOiBoZHJfZXh0X21hcCkgewogICAgIHNvdXJjZV8tPlJlZ2lzdGVyUnRwSGVh
ZGVyRXh0ZW5zaW9uKGV4dF9wYWlyLnNlY29uZCwgZXh0X3BhaXIuZmlyc3QpOwogICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9wYWNrZXRfc291cmNlX2lucHV0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90b29scy9uZXRlcV9wYWNrZXRfc291cmNlX2lucHV0LmgKaW5kZXggYjMyYzUz
NDA4NTFmNjYyNTVhNTVkNjZkODZlZThmODBlMDk1NmU4NC4uODYzM2QxZjVkZDFjZjM3ZWM2NzFi
ODcyNGUyY2FjMjg5NDRlMDExYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFf
cGFja2V0X3NvdXJjZV9pbnB1dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3BhY2tl
dF9zb3VyY2VfaW5wdXQuaApAQCAtMTIsOCArMTIsMTAgQEAKICNkZWZpbmUgTU9EVUxFU19BVURJ
T19DT0RJTkdfTkVURVFfVE9PTFNfTkVURVFfUEFDS0VUX1NPVVJDRV9JTlBVVF9IXwogCiAjaW5j
bHVkZSA8bWFwPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvdG9vbHMvbmV0ZXFfaW5wdXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogCkBAIC0zMiw3ICszNCw2IEBAIGNsYXNzIE5l
dEVxUGFja2V0U291cmNlSW5wdXQgOiBwdWJsaWMgTmV0RXFJbnB1dCB7CiAgIHN0ZDo6dW5pcXVl
X3B0cjxQYWNrZXREYXRhPiBQb3BQYWNrZXQoKSBvdmVycmlkZTsKICAgYWJzbDo6b3B0aW9uYWw8
UlRQSGVhZGVyPiBOZXh0SGVhZGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIGJvb2wgZW5kZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAhbmV4dF9vdXRwdXRfZXZlbnRfbXNfOyB9Ci0gIHZvaWQg
U2VsZWN0U3NyYyh1aW50MzJfdCk7CiAKICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgUGFja2V0U291
cmNlKiBzb3VyY2UoKSA9IDA7CkBAIC00OCw3ICs0OSw4IEBAIGNsYXNzIE5ldEVxUGFja2V0U291
cmNlSW5wdXQgOiBwdWJsaWMgTmV0RXFJbnB1dCB7CiBjbGFzcyBOZXRFcVJ0cER1bXBJbnB1dCBm
aW5hbCA6IHB1YmxpYyBOZXRFcVBhY2tldFNvdXJjZUlucHV0IHsKICBwdWJsaWM6CiAgIE5ldEVx
UnRwRHVtcElucHV0KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUsCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgaGRyX2V4dF9tYXApOworICAgICAg
ICAgICAgICAgICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGhkcl9leHRfbWFwLAor
ICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gc3NyY19maWx0ZXIp
OwogCiAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IE5leHRPdXRwdXRFdmVudFRpbWUoKSBjb25z
dCBvdmVycmlkZTsKICAgdm9pZCBBZHZhbmNlT3V0cHV0RXZlbnQoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3F1YWxpdHlfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Rvb2xzL25ldGVxX3F1YWxpdHlfdGVzdC5jYwppbmRleCBmYWNhODk1OWQ0ZDRmNWM3Y2Y2
YTEzZTk4Y2EzMjE0MWIyYjFmNzZlLi4yZWU2Nzc5YzUzOWUxYjllNjdiYjdjNWZiMDcxZTI1MWY1
ZDA5YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9xdWFsaXR5X3Rlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcXVhbGl0eV90ZXN0LmNjCkBAIC00Nyw0
MiArNDcsNDcgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVGaWxlbmFtZShjb25zdCBzdGQ6OnN0cmlu
ZyYgdmFsdWUsIGJvb2wgd3JpdGUpIHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLURFRklORV9zdHJp
bmcoCitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICBpbl9maWxlbmFtZSwKICAgICBEZWZhdWx0
SW5GaWxlbmFtZSgpLmNfc3RyKCksCiAgICAgIkZpbGVuYW1lIGZvciBpbnB1dCBhdWRpbyAoc3Bl
Y2lmeSBzYW1wbGUgcmF0ZSB3aXRoIC0taW5wdXRfc2FtcGxlX3JhdGUsICIKICAgICAiYW5kIGNo
YW5uZWxzIHdpdGggLS1jaGFubmVscykuIik7CiAKLURFRklORV9pbnQoaW5wdXRfc2FtcGxlX3Jh
dGUsIDE2MDAwLCAiU2FtcGxlIHJhdGUgb2YgaW5wdXQgZmlsZSBpbiBIei4iKTsKK1dFQlJUQ19E
RUZJTkVfaW50KGlucHV0X3NhbXBsZV9yYXRlLCAxNjAwMCwgIlNhbXBsZSByYXRlIG9mIGlucHV0
IGZpbGUgaW4gSHouIik7CiAKLURFRklORV9pbnQoY2hhbm5lbHMsIDEsICJOdW1iZXIgb2YgY2hh
bm5lbHMgaW4gaW5wdXQgYXVkaW8uIik7CitXRUJSVENfREVGSU5FX2ludChjaGFubmVscywgMSwg
Ik51bWJlciBvZiBjaGFubmVscyBpbiBpbnB1dCBhdWRpby4iKTsKIAotREVGSU5FX3N0cmluZyhv
dXRfZmlsZW5hbWUsCi0gICAgICAgICAgICAgIERlZmF1bHRPdXRGaWxlbmFtZSgpLmNfc3RyKCks
Ci0gICAgICAgICAgICAgICJOYW1lIG9mIG91dHB1dCBhdWRpbyBmaWxlLiIpOworV0VCUlRDX0RF
RklORV9zdHJpbmcob3V0X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE91
dEZpbGVuYW1lKCkuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICJOYW1lIG9mIG91dHB1
dCBhdWRpbyBmaWxlLiIpOwogCi1ERUZJTkVfaW50KHJ1bnRpbWVfbXMsIDEwMDAwLCAiU2ltdWxh
dGVkIHJ1bnRpbWUgKG1pbGxpc2Vjb25kcykuIik7CitXRUJSVENfREVGSU5FX2ludChydW50aW1l
X21zLCAxMDAwMCwgIlNpbXVsYXRlZCBydW50aW1lIChtaWxsaXNlY29uZHMpLiIpOwogCi1ERUZJ
TkVfaW50KHBhY2tldF9sb3NzX3JhdGUsIDEwLCAiUGVyY2VudGlsZSBvZiBwYWNrZXQgbG9zcy4i
KTsKK1dFQlJUQ19ERUZJTkVfaW50KHBhY2tldF9sb3NzX3JhdGUsIDEwLCAiUGVyY2VudGlsZSBv
ZiBwYWNrZXQgbG9zcy4iKTsKIAotREVGSU5FX2ludChyYW5kb21fbG9zc19tb2RlLAotICAgICAg
ICAgICBrVW5pZm9ybUxvc3MsCi0gICAgICAgICAgICJSYW5kb20gbG9zcyBtb2RlOiAwLS1ubyBs
b3NzLCAxLS11bmlmb3JtIGxvc3MsIDItLUdpbGJlcnQgRWxsaW90ICIKLSAgICAgICAgICAgImxv
c3MsIDMtLWZpeGVkIGxvc3MuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICByYW5kb21fbG9z
c19tb2RlLAorICAgIGtVbmlmb3JtTG9zcywKKyAgICAiUmFuZG9tIGxvc3MgbW9kZTogMC0tbm8g
bG9zcywgMS0tdW5pZm9ybSBsb3NzLCAyLS1HaWxiZXJ0IEVsbGlvdCAiCisgICAgImxvc3MsIDMt
LWZpeGVkIGxvc3MuIik7CiAKLURFRklORV9pbnQoYnVyc3RfbGVuZ3RoLAotICAgICAgICAgICAz
MCwKLSAgICAgICAgICAgIkJ1cnN0IGxlbmd0aCBpbiBtaWxsaXNlY29uZHMsIG9ubHkgdmFsaWQg
Zm9yIEdpbGJlcnQgRWxsaW90IGxvc3MuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICBidXJz
dF9sZW5ndGgsCisgICAgMzAsCisgICAgIkJ1cnN0IGxlbmd0aCBpbiBtaWxsaXNlY29uZHMsIG9u
bHkgdmFsaWQgZm9yIEdpbGJlcnQgRWxsaW90IGxvc3MuIik7CiAKLURFRklORV9mbG9hdChkcmlm
dF9mYWN0b3IsIDAuMCwgIlRpbWUgZHJpZnQgZmFjdG9yLiIpOworV0VCUlRDX0RFRklORV9mbG9h
dChkcmlmdF9mYWN0b3IsIDAuMCwgIlRpbWUgZHJpZnQgZmFjdG9yLiIpOwogCi1ERUZJTkVfaW50
KHByZWxvYWRfcGFja2V0cywgMCwgIlByZWxvYWQgdGhlIGJ1ZmZlciB3aXRoIHRoaXMgbWFueSBw
YWNrZXRzLiIpOworV0VCUlRDX0RFRklORV9pbnQocHJlbG9hZF9wYWNrZXRzLAorICAgICAgICAg
ICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJQcmVsb2FkIHRoZSBidWZmZXIgd2l0aCB0
aGlzIG1hbnkgcGFja2V0cy4iKTsKIAotREVGSU5FX3N0cmluZyhsb3NzX2V2ZW50cywKLSAgICAg
ICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJMaXN0IG9mIGxvc3MgZXZlbnRzIHRpbWUgYW5k
IGR1cmF0aW9uIHNlcGFyYXRlZCBieSBjb21tYTogIgotICAgICAgICAgICAgICAiPGZpcnN0X2V2
ZW50X3RpbWU+IDxmaXJzdF9ldmVudF9kdXJhdGlvbj4sIDxzZWNvbmRfZXZlbnRfdGltZT4gIgot
ICAgICAgICAgICAgICAiPHNlY29uZF9ldmVudF9kdXJhdGlvbj4sIC4uLiIpOworV0VCUlRDX0RF
RklORV9zdHJpbmcoCisgICAgbG9zc19ldmVudHMsCisgICAgIiIsCisgICAgIkxpc3Qgb2YgbG9z
cyBldmVudHMgdGltZSBhbmQgZHVyYXRpb24gc2VwYXJhdGVkIGJ5IGNvbW1hOiAiCisgICAgIjxm
aXJzdF9ldmVudF90aW1lPiA8Zmlyc3RfZXZlbnRfZHVyYXRpb24+LCA8c2Vjb25kX2V2ZW50X3Rp
bWU+ICIKKyAgICAiPHNlY29uZF9ldmVudF9kdXJhdGlvbj4sIC4uLiIpOwogCiAvLyBQcm9iVHJh
bnMwMFNvbHZlcigpIGlzIHRvIGNhbGN1bGF0ZSB0aGUgdHJhbnNpdGlvbiBwcm9iYWJpbGl0eSBm
cm9tIG5vLWxvc3MKIC8vIHN0YXRlIHRvIGl0c2VsZiBpbiBhIG1vZGlmaWVkIEdpbGJlcnQgRWxs
aW90IHBhY2tldCBsb3NzIG1vZGVsLiBUaGUgcmVzdWx0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90b29scy9uZXRlcV9ydHBwbGF5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcnRw
cGxheS5jYwppbmRleCAyNWU4Y2Q4ODE2ZTEyMGJhN2IzZDg1MmY3YTcxZTA3ZjdiYzlmNjg2Li5j
MjcyNmViNDcwNGI4NzNiZTI3ZTBiNzFjZDEyMmM4ZTkzNjUyNGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS90b29scy9uZXRlcV9ydHBwbGF5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25l
dGVxX3J0cHBsYXkuY2MKQEAgLTE3LDE3ICsxNywxNyBAQAogI2luY2x1ZGUgInN5c3RlbV93cmFw
cGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5o
IgogCi1ERUZJTkVfYm9vbChjb2RlY19tYXAsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAg
ICAgICJQcmludHMgdGhlIG1hcHBpbmcgYmV0d2VlbiBSVFAgcGF5bG9hZCB0eXBlIGFuZCAiCi0g
ICAgICAgICAgICAiY29kZWMiKTsKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVGSU5FX2Jvb2wo
Y29kZWNfbWFwLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAg
ICJQcmludHMgdGhlIG1hcHBpbmcgYmV0d2VlbiBSVFAgcGF5bG9hZCB0eXBlIGFuZCAiCisgICAg
ICAgICAgICAgICAgICAgImNvZGVjIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICBmb3Jj
ZV9maWVsZHRyaWFscywKICAgICAiIiwKICAgICAiRmllbGQgdHJpYWxzIGNvbnRyb2wgZXhwZXJp
bWVudGFsIGZlYXR1cmUgY29kZSB3aGljaCBjYW4gYmUgZm9yY2VkLiAiCiAgICAgIkUuZy4gcnVu
bmluZyB3aXRoIC0tZm9yY2VfZmllbGR0cmlhbHM9V2ViUlRDLUZvb0ZlYXR1cmUvRW5hYmxlLyIK
ICAgICAiIHdpbGwgYXNzaWduIHRoZSBncm91cCBFbmFibGUgdG8gZmllbGQgdHJpYWwgV2ViUlRD
LUZvb0ZlYXR1cmUuIik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1l
c3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1l
c3NhZ2UiKTsKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICB3ZWJydGM6
OnRlc3Q6Ok5ldEVxVGVzdEZhY3RvcnkgZmFjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L3Rvb2xzL25ldGVxX3Rlc3RfZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3Rl
c3RfZmFjdG9yeS5jYwppbmRleCA1MTA3N2JjNmI4YjkyMzU3MTJiZjJmMTY1OThjYjM1NGE2MTdk
OTNlLi5hYTk1NmNlOGFiY2QzMTE4MjhhMzMzNzc3M2Y0Y2NjMTJkNDJkZWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS90b29scy9uZXRlcV90ZXN0X2ZhY3RvcnkuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvdG9vbHMvbmV0ZXFfdGVzdF9mYWN0b3J5LmNjCkBAIC05MSw0NyArOTEsNjAgQEAgc3RhdGlj
IGJvb2wgVmFsaWRhdGVFeHRlbnNpb25JZChpbnQgdmFsdWUpIHsKIH0KIAogLy8gRGVmaW5lIGNv
bW1hbmQgbGluZSBmbGFncy4KLURFRklORV9pbnQocGNtdSwgMCwgIlJUUCBwYXlsb2FkIHR5cGUg
Zm9yIFBDTS11Iik7Ci1ERUZJTkVfaW50KHBjbWEsIDgsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQ
Q00tYSIpOwotREVGSU5FX2ludChpbGJjLCAxMDIsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBpTEJD
Iik7Ci1ERUZJTkVfaW50KGlzYWMsIDEwMywgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGlTQUMiKTsK
LURFRklORV9pbnQoaXNhY19zd2IsIDEwNCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGlTQUMtc3di
ICgzMiBrSHopIik7Ci1ERUZJTkVfaW50KG9wdXMsIDExMSwgIlJUUCBwYXlsb2FkIHR5cGUgZm9y
IE9wdXMiKTsKLURFRklORV9pbnQocGNtMTZiLCA5MywgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIFBD
TTE2Yi1uYiAoOCBrSHopIik7Ci1ERUZJTkVfaW50KHBjbTE2Yl93YiwgOTQsICJSVFAgcGF5bG9h
ZCB0eXBlIGZvciBQQ00xNmItd2IgKDE2IGtIeikiKTsKLURFRklORV9pbnQocGNtMTZiX3N3YjMy
LCA5NSwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIFBDTTE2Yi1zd2IzMiAoMzIga0h6KSIpOwotREVG
SU5FX2ludChwY20xNmJfc3diNDgsIDk2LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgUENNMTZiLXN3
YjQ4ICg0OCBrSHopIik7Ci1ERUZJTkVfaW50KGc3MjIsIDksICJSVFAgcGF5bG9hZCB0eXBlIGZv
ciBHLjcyMiIpOwotREVGSU5FX2ludChhdnQsIDEwNiwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIEFW
VC9EVE1GICg4IGtIeikiKTsKLURFRklORV9pbnQoYXZ0XzE2LCAxMTQsICJSVFAgcGF5bG9hZCB0
eXBlIGZvciBBVlQvRFRNRiAoMTYga0h6KSIpOwotREVGSU5FX2ludChhdnRfMzIsIDExNSwgIlJU
UCBwYXlsb2FkIHR5cGUgZm9yIEFWVC9EVE1GICgzMiBrSHopIik7Ci1ERUZJTkVfaW50KGF2dF80
OCwgMTE2LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgQVZUL0RUTUYgKDQ4IGtIeikiKTsKLURFRklO
RV9pbnQocmVkLCAxMTcsICJSVFAgcGF5bG9hZCB0eXBlIGZvciByZWR1bmRhbnQgYXVkaW8gKFJF
RCkiKTsKLURFRklORV9pbnQoY25fbmIsIDEzLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgY29tZm9y
dCBub2lzZSAoOCBrSHopIik7Ci1ERUZJTkVfaW50KGNuX3diLCA5OCwgIlJUUCBwYXlsb2FkIHR5
cGUgZm9yIGNvbWZvcnQgbm9pc2UgKDE2IGtIeikiKTsKLURFRklORV9pbnQoY25fc3diMzIsIDk5
LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgY29tZm9ydCBub2lzZSAoMzIga0h6KSIpOwotREVGSU5F
X2ludChjbl9zd2I0OCwgMTAwLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgY29tZm9ydCBub2lzZSAo
NDgga0h6KSIpOwotREVGSU5FX3N0cmluZyhyZXBsYWNlbWVudF9hdWRpb19maWxlLAotICAgICAg
ICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkEgUENNIGZpbGUgdGhhdCB3aWxsIGJlIHVzZWQg
dG8gcG9wdWxhdGUgIgotICAgICAgICAgICAgICAiZHVtbXkiCi0gICAgICAgICAgICAgICIgUlRQ
IHBhY2tldHMiKTsKLURFRklORV9zdHJpbmcoc3NyYywKLSAgICAgICAgICAgICAgIiIsCi0gICAg
ICAgICAgICAgICJPbmx5IHVzZSBwYWNrZXRzIHdpdGggdGhpcyBTU1JDIChkZWNpbWFsIG9yIGhl
eCwgdGhlIGxhdHRlciAiCi0gICAgICAgICAgICAgICJzdGFydGluZyB3aXRoIDB4KSIpOwotREVG
SU5FX2ludChhdWRpb19sZXZlbCwgMSwgIkV4dGVuc2lvbiBJRCBmb3IgYXVkaW8gbGV2ZWwgKFJG
QyA2NDY0KSIpOwotREVGSU5FX2ludChhYnNfc2VuZF90aW1lLCAzLCAiRXh0ZW5zaW9uIElEIGZv
ciBhYnNvbHV0ZSBzZW5kZXIgdGltZSIpOwotREVGSU5FX2ludCh0cmFuc3BvcnRfc2VxX25vLCA1
LCAiRXh0ZW5zaW9uIElEIGZvciB0cmFuc3BvcnQgc2VxdWVuY2UgbnVtYmVyIik7Ci1ERUZJTkVf
aW50KHZpZGVvX2NvbnRlbnRfdHlwZSwgNywgIkV4dGVuc2lvbiBJRCBmb3IgdmlkZW8gY29udGVu
dCB0eXBlIik7Ci1ERUZJTkVfaW50KHZpZGVvX3RpbWluZywgOCwgIkV4dGVuc2lvbiBJRCBmb3Ig
dmlkZW8gdGltaW5nIik7Ci1ERUZJTkVfYm9vbChtYXRsYWJwbG90LAotICAgICAgICAgICAgZmFs
c2UsCi0gICAgICAgICAgICAiR2VuZXJhdGVzIGEgbWF0bGFiIHNjcmlwdCBmb3IgcGxvdHRpbmcg
dGhlIGRlbGF5IHByb2ZpbGUiKTsKLURFRklORV9ib29sKHB5dGhvbnBsb3QsCi0gICAgICAgICAg
ICBmYWxzZSwKLSAgICAgICAgICAgICJHZW5lcmF0ZXMgYSBweXRob24gc2NyaXB0IGZvciBwbG90
dGluZyB0aGUgZGVsYXkgcHJvZmlsZSIpOwotREVGSU5FX2Jvb2woY29uY2VhbG1lbnRfZXZlbnRz
LCBmYWxzZSwgIlByaW50cyBjb25jZWFsbWVudCBldmVudHMiKTsKK1dFQlJUQ19ERUZJTkVfaW50
KHBjbXUsIDAsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQQ00tdSIpOworV0VCUlRDX0RFRklORV9p
bnQocGNtYSwgOCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIFBDTS1hIik7CitXRUJSVENfREVGSU5F
X2ludChpbGJjLCAxMDIsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBpTEJDIik7CitXRUJSVENfREVG
SU5FX2ludChpc2FjLCAxMDMsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBpU0FDIik7CitXRUJSVENf
REVGSU5FX2ludChpc2FjX3N3YiwgMTA0LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgaVNBQy1zd2Ig
KDMyIGtIeikiKTsKK1dFQlJUQ19ERUZJTkVfaW50KG9wdXMsIDExMSwgIlJUUCBwYXlsb2FkIHR5
cGUgZm9yIE9wdXMiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHBjbTE2YiwgOTMsICJSVFAgcGF5bG9h
ZCB0eXBlIGZvciBQQ00xNmItbmIgKDgga0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQocGNtMTZi
X3diLCA5NCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIFBDTTE2Yi13YiAoMTYga0h6KSIpOworV0VC
UlRDX0RFRklORV9pbnQocGNtMTZiX3N3YjMyLAorICAgICAgICAgICAgICAgICAgOTUsCisgICAg
ICAgICAgICAgICAgICAiUlRQIHBheWxvYWQgdHlwZSBmb3IgUENNMTZiLXN3YjMyICgzMiBrSHop
Iik7CitXRUJSVENfREVGSU5FX2ludChwY20xNmJfc3diNDgsCisgICAgICAgICAgICAgICAgICA5
NiwKKyAgICAgICAgICAgICAgICAgICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQQ00xNmItc3diNDgg
KDQ4IGtIeikiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGc3MjIsIDksICJSVFAgcGF5bG9hZCB0eXBl
IGZvciBHLjcyMiIpOworV0VCUlRDX0RFRklORV9pbnQoYXZ0LCAxMDYsICJSVFAgcGF5bG9hZCB0
eXBlIGZvciBBVlQvRFRNRiAoOCBrSHopIik7CitXRUJSVENfREVGSU5FX2ludChhdnRfMTYsIDEx
NCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIEFWVC9EVE1GICgxNiBrSHopIik7CitXRUJSVENfREVG
SU5FX2ludChhdnRfMzIsIDExNSwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIEFWVC9EVE1GICgzMiBr
SHopIik7CitXRUJSVENfREVGSU5FX2ludChhdnRfNDgsIDExNiwgIlJUUCBwYXlsb2FkIHR5cGUg
Zm9yIEFWVC9EVE1GICg0OCBrSHopIik7CitXRUJSVENfREVGSU5FX2ludChyZWQsIDExNywgIlJU
UCBwYXlsb2FkIHR5cGUgZm9yIHJlZHVuZGFudCBhdWRpbyAoUkVEKSIpOworV0VCUlRDX0RFRklO
RV9pbnQoY25fbmIsIDEzLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgY29tZm9ydCBub2lzZSAoOCBr
SHopIik7CitXRUJSVENfREVGSU5FX2ludChjbl93YiwgOTgsICJSVFAgcGF5bG9hZCB0eXBlIGZv
ciBjb21mb3J0IG5vaXNlICgxNiBrSHopIik7CitXRUJSVENfREVGSU5FX2ludChjbl9zd2IzMiwg
OTksICJSVFAgcGF5bG9hZCB0eXBlIGZvciBjb21mb3J0IG5vaXNlICgzMiBrSHopIik7CitXRUJS
VENfREVGSU5FX2ludChjbl9zd2I0OCwgMTAwLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgY29tZm9y
dCBub2lzZSAoNDgga0h6KSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcocmVwbGFjZW1lbnRfYXVk
aW9fZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAg
IkEgUENNIGZpbGUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcG9wdWxhdGUgIgorICAgICAgICAgICAg
ICAgICAgICAgImR1bW15IgorICAgICAgICAgICAgICAgICAgICAgIiBSVFAgcGFja2V0cyIpOwor
V0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgc3NyYywKKyAgICAiIiwKKyAgICAiT25seSB1c2Ug
cGFja2V0cyB3aXRoIHRoaXMgU1NSQyAoZGVjaW1hbCBvciBoZXgsIHRoZSBsYXR0ZXIgIgorICAg
ICJzdGFydGluZyB3aXRoIDB4KSIpOworV0VCUlRDX0RFRklORV9pbnQoYXVkaW9fbGV2ZWwsIDEs
ICJFeHRlbnNpb24gSUQgZm9yIGF1ZGlvIGxldmVsIChSRkMgNjQ2NCkiKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KGFic19zZW5kX3RpbWUsIDMsICJFeHRlbnNpb24gSUQgZm9yIGFic29sdXRlIHNlbmRl
ciB0aW1lIik7CitXRUJSVENfREVGSU5FX2ludCh0cmFuc3BvcnRfc2VxX25vLAorICAgICAgICAg
ICAgICAgICAgNSwKKyAgICAgICAgICAgICAgICAgICJFeHRlbnNpb24gSUQgZm9yIHRyYW5zcG9y
dCBzZXF1ZW5jZSBudW1iZXIiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZpZGVvX2NvbnRlbnRfdHlw
ZSwgNywgIkV4dGVuc2lvbiBJRCBmb3IgdmlkZW8gY29udGVudCB0eXBlIik7CitXRUJSVENfREVG
SU5FX2ludCh2aWRlb190aW1pbmcsIDgsICJFeHRlbnNpb24gSUQgZm9yIHZpZGVvIHRpbWluZyIp
OworV0VCUlRDX0RFRklORV9ib29sKG1hdGxhYnBsb3QsCisgICAgICAgICAgICAgICAgICAgZmFs
c2UsCisgICAgICAgICAgICAgICAgICAgIkdlbmVyYXRlcyBhIG1hdGxhYiBzY3JpcHQgZm9yIHBs
b3R0aW5nIHRoZSBkZWxheSBwcm9maWxlIik7CitXRUJSVENfREVGSU5FX2Jvb2wocHl0aG9ucGxv
dCwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiR2VuZXJh
dGVzIGEgcHl0aG9uIHNjcmlwdCBmb3IgcGxvdHRpbmcgdGhlIGRlbGF5IHByb2ZpbGUiKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbChjb25jZWFsbWVudF9ldmVudHMsIGZhbHNlLCAiUHJpbnRzIGNvbmNl
YWxtZW50IGV2ZW50cyIpOworV0VCUlRDX0RFRklORV9pbnQobWF4X25yX3BhY2tldHNfaW5fYnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgNTAsCisgICAgICAgICAgICAgICAgICAiTWF4aW11bSBh
bGxvd2VkIG51bWJlciBvZiBwYWNrZXRzIGluIHRoZSBidWZmZXIiKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbChlbmFibGVfZmFzdF9hY2NlbGVyYXRlLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAor
ICAgICAgICAgICAgICAgICAgICJFbmFibGVzIGppdHRlciBidWZmZXIgZmFzdCBhY2NlbGVyYXRl
Iik7CiAKIC8vIE1hcHMgYSBjb2RlYyB0eXBlIHRvIGEgcHJpbnRhYmxlIG5hbWUgc3RyaW5nLgog
c3RkOjpzdHJpbmcgQ29kZWNOYW1lKE5ldEVxRGVjb2RlciBjb2RlYykgewpAQCAtMzA5LDI1ICsz
MjIsMjcgQEAgc3RkOjp1bmlxdWVfcHRyPE5ldEVxVGVzdD4gTmV0RXFUZXN0RmFjdG9yeTo6SW5p
dGlhbGl6ZVRlc3QoCiAgICAgICB7RkxBR192aWRlb19jb250ZW50X3R5cGUsIGtSdHBFeHRlbnNp
b25WaWRlb0NvbnRlbnRUeXBlfSwKICAgICAgIHtGTEFHX3ZpZGVvX3RpbWluZywga1J0cEV4dGVu
c2lvblZpZGVvVGltaW5nfX07CiAKKyAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmls
dGVyOworICAvLyBDaGVjayBpZiBhbiBTU1JDIHZhbHVlIHdhcyBwcm92aWRlZC4KKyAgaWYgKHN0
cmxlbihGTEFHX3NzcmMpID4gMCkgeworICAgIHVpbnQzMl90IHNzcmM7CisgICAgUlRDX0NIRUNL
KFBhcnNlU3NyYyhGTEFHX3NzcmMsICZzc3JjKSkgPDwgIkZsYWcgdmVyaWZpY2F0aW9uIGhhcyBm
YWlsZWQuIjsKKyAgICBzc3JjX2ZpbHRlciA9IHNzcmM7CisgIH0KKwogICBzdGQ6OnVuaXF1ZV9w
dHI8TmV0RXFJbnB1dD4gaW5wdXQ7CiAgIGlmIChSdHBGaWxlU291cmNlOjpWYWxpZFJ0cER1bXAo
aW5wdXRfZmlsZV9uYW1lKSB8fAogICAgICAgUnRwRmlsZVNvdXJjZTo6VmFsaWRQY2FwKGlucHV0
X2ZpbGVfbmFtZSkpIHsKLSAgICBpbnB1dC5yZXNldChuZXcgTmV0RXFSdHBEdW1wSW5wdXQoaW5w
dXRfZmlsZV9uYW1lLCBydHBfZXh0X21hcCkpOworICAgIGlucHV0LnJlc2V0KAorICAgICAgICBu
ZXcgTmV0RXFSdHBEdW1wSW5wdXQoaW5wdXRfZmlsZV9uYW1lLCBydHBfZXh0X21hcCwgc3NyY19m
aWx0ZXIpKTsKICAgfSBlbHNlIHsKLSAgICBpbnB1dC5yZXNldChuZXcgTmV0RXFFdmVudExvZ0lu
cHV0KGlucHV0X2ZpbGVfbmFtZSwgcnRwX2V4dF9tYXApKTsKKyAgICBpbnB1dC5yZXNldChuZXcg
TmV0RXFFdmVudExvZ0lucHV0KGlucHV0X2ZpbGVfbmFtZSwgc3NyY19maWx0ZXIpKTsKICAgfQog
CiAgIHN0ZDo6Y291dCA8PCAiSW5wdXQgZmlsZTogIiA8PCBpbnB1dF9maWxlX25hbWUgPDwgc3Rk
OjplbmRsOwogICBSVENfQ0hFQ0soaW5wdXQpIDw8ICJDYW5ub3Qgb3BlbiBpbnB1dCBmaWxlIjsK
ICAgUlRDX0NIRUNLKCFpbnB1dC0+ZW5kZWQoKSkgPDwgIklucHV0IGZpbGUgaXMgZW1wdHkiOwog
Ci0gIC8vIENoZWNrIGlmIGFuIFNTUkMgdmFsdWUgd2FzIHByb3ZpZGVkLgotICBpZiAoc3RybGVu
KEZMQUdfc3NyYykgPiAwKSB7Ci0gICAgdWludDMyX3Qgc3NyYzsKLSAgICBSVENfQ0hFQ0soUGFy
c2VTc3JjKEZMQUdfc3NyYywgJnNzcmMpKSA8PCAiRmxhZyB2ZXJpZmljYXRpb24gaGFzIGZhaWxl
ZC4iOwotICAgIHN0YXRpY19jYXN0PE5ldEVxUGFja2V0U291cmNlSW5wdXQqPihpbnB1dC5nZXQo
KSktPlNlbGVjdFNzcmMoc3NyYyk7Ci0gIH0KLQogICAvLyBDaGVjayB0aGUgc2FtcGxlIHJhdGUu
CiAgIGFic2w6Om9wdGlvbmFsPGludD4gc2FtcGxlX3JhdGVfaHo7CiAgIHN0ZDo6c2V0PHN0ZDo6
cGFpcjxpbnQsIHVpbnQzMl90Pj4gZGlzY2FyZGVkX3B0X2FuZF9zc3JjOwpAQCAtNDU3LDYgKzQ3
Miw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxOZXRFcVRlc3Q+IE5ldEVxVGVzdEZhY3Rvcnk6OkluaXRp
YWxpemVUZXN0KAogICBjYWxsYmFja3Muc2ltdWxhdGlvbl9lbmRlZF9jYWxsYmFjayA9IHN0YXRz
X3Bsb3R0ZXJfLmdldCgpOwogICBOZXRFcTo6Q29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnNhbXBs
ZV9yYXRlX2h6ID0gKnNhbXBsZV9yYXRlX2h6OworICBjb25maWcubWF4X3BhY2tldHNfaW5fYnVm
ZmVyID0gRkxBR19tYXhfbnJfcGFja2V0c19pbl9idWZmZXI7CisgIGNvbmZpZy5lbmFibGVfZmFz
dF9hY2NlbGVyYXRlID0gRkxBR19lbmFibGVfZmFzdF9hY2NlbGVyYXRlOwogICByZXR1cm4gYWJz
bDo6bWFrZV91bmlxdWU8TmV0RXFUZXN0Pihjb25maWcsIGNvZGVjcywgZXh0X2NvZGVjc18sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShpbnB1dCksIHN0
ZDo6bW92ZShvdXRwdXQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YWxsYmFja3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvdG9vbHMvcGFja2V0LmNjCmluZGV4IGIxYTliNjQxOTNiZjc1Yjc5YTcwYzc2ZTIw
ZjIwMTJlODlmNTMwOGEuLjBlNzk1MWI2ZTNjMzQzZWMyMmI5NzBjMWQ2MTI3OWMwODcyYjZjNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90b29scy9wYWNrZXQuY2MKQEAgLTQ5LDYgKzQ5LDIwIEBAIFBhY2tldDo6UGFja2V0KHVpbnQ4
X3QqIHBhY2tldF9tZW1vcnksCiAgIHZhbGlkX2hlYWRlcl8gPSBQYXJzZUhlYWRlcihwYXJzZXIp
OwogfQogCitQYWNrZXQ6OlBhY2tldChjb25zdCBSVFBIZWFkZXImIGhlYWRlciwKKyAgICAgICAg
ICAgICAgIHNpemVfdCB2aXJ0dWFsX3BhY2tldF9sZW5ndGhfYnl0ZXMsCisgICAgICAgICAgICAg
ICBzaXplX3QgdmlydHVhbF9wYXlsb2FkX2xlbmd0aF9ieXRlcywKKyAgICAgICAgICAgICAgIGRv
dWJsZSB0aW1lX21zKQorICAgIDogaGVhZGVyXyhoZWFkZXIpLAorICAgICAgcGF5bG9hZF9tZW1v
cnlfKCksCisgICAgICBwYXlsb2FkXyhOVUxMKSwKKyAgICAgIHBhY2tldF9sZW5ndGhfYnl0ZXNf
KDApLAorICAgICAgcGF5bG9hZF9sZW5ndGhfYnl0ZXNfKDApLAorICAgICAgdmlydHVhbF9wYWNr
ZXRfbGVuZ3RoX2J5dGVzXyh2aXJ0dWFsX3BhY2tldF9sZW5ndGhfYnl0ZXMpLAorICAgICAgdmly
dHVhbF9wYXlsb2FkX2xlbmd0aF9ieXRlc18odmlydHVhbF9wYXlsb2FkX2xlbmd0aF9ieXRlcyks
CisgICAgICB0aW1lX21zXyh0aW1lX21zKSwKKyAgICAgIHZhbGlkX2hlYWRlcl8odHJ1ZSkge30K
KwogUGFja2V0OjpQYWNrZXQodWludDhfdCogcGFja2V0X21lbW9yeSwgc2l6ZV90IGFsbG9jYXRl
ZF9ieXRlcywgZG91YmxlIHRpbWVfbXMpCiAgICAgOiBwYXlsb2FkX21lbW9yeV8ocGFja2V0X21l
bW9yeSksCiAgICAgICBwYXlsb2FkXyhOVUxMKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rv
b2xzL3BhY2tldC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0LmgKaW5kZXggNjIzYzVjYjYz
NTlhOTlmNWM5M2EzOWQyM2EwN2U0MTFjYmE5MWFjZS4uMzkxMzdhYWU0M2EwYWVjNTkyMzQwMDc1
NDJiMTA4ZmNmYTdiODgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0LmgKQEAgLTUwLDcgKzUwLDE3IEBAIGNsYXNz
IFBhY2tldCB7CiAgICAgICAgICBkb3VibGUgdGltZV9tcywKICAgICAgICAgIGNvbnN0IFJ0cEhl
YWRlclBhcnNlciYgcGFyc2VyKTsKIAotICAvLyBUaGUgZm9sbG93aW5nIHR3byBjb25zdHJ1Y3Rv
cnMgYXJlIHRoZSBzYW1lIGFzIGFib3ZlLCBidXQgd2l0aG91dCBhCisgIC8vIFNhbWUgYXMgYWJv
dmUsIGJ1dCBjcmVhdGVzIHRoZSBwYWNrZXQgZnJvbSBhbiBhbHJlYWR5IHBhcnNlZCBSVFBIZWFk
ZXIuCisgIC8vIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgd2hlbiByZWFkaW5nIFJUUCBkdW1wIGZp
bGVzIHRoYXQgb25seSBjb250YWluIHRoZQorICAvLyBSVFAgaGVhZGVycywgYW5kIG5vIHBheWxv
YWQuIFRoZSB8dmlydHVhbF9wYWNrZXRfbGVuZ3RoX2J5dGVzfCB0ZWxscyB3aGF0CisgIC8vIHNp
emUgdGhlIHBhY2tldCBoYWQgb24gd2lyZSwgaW5jbHVkaW5nIHRoZSBub3cgZGlzY2FyZGVkIHBh
eWxvYWQsCisgIC8vIFRoZSB8dmlydHVhbF9wYXlsb2FkX2xlbmd0aF9ieXRlc3wgdGVsbHMgdGhl
IHNpemUgb2YgdGhlIHBheWxvYWQuCisgIFBhY2tldChjb25zdCBSVFBIZWFkZXImIGhlYWRlciwK
KyAgICAgICAgIHNpemVfdCB2aXJ0dWFsX3BhY2tldF9sZW5ndGhfYnl0ZXMsCisgICAgICAgICBz
aXplX3QgdmlydHVhbF9wYXlsb2FkX2xlbmd0aF9ieXRlcywKKyAgICAgICAgIGRvdWJsZSB0aW1l
X21zKTsKKworICAvLyBUaGUgZm9sbG93aW5nIGNvbnN0cnVjdG9ycyBhcmUgdGhlIHNhbWUgYXMg
dGhlIGZpcnN0IHR3bywgYnV0IHdpdGhvdXQgYQogICAvLyBwYXJzZXIuIE5vdGUgdGhhdCB3aGVu
IHRoZSBvYmplY3QgaXMgY29uc3RydWN0ZWQgdXNpbmcgYW55IG9mIHRoZXNlCiAgIC8vIG1ldGhv
ZHMsIHRoZSBoZWFkZXIgd2lsbCBiZSBwYXJzZWQgdXNpbmcgYSBkZWZhdWx0IFJ0cEhlYWRlclBh
cnNlciBvYmplY3QuCiAgIC8vIEluIHBhcnRpY3VsYXIsIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyB3
b24ndCBiZSBwYXJzZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXRfc291
cmNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0X3NvdXJjZS5jYwppbmRleCAzMGJmNDMx
ODM1NTUyMzk1ZTQ4Y2Y3ODlhYWEzYzQyZGNmN2M0NWYxLi41OThhZTZlZGQ0MDhkM2UzZWMwOWYx
MjlkZDVhY2ExZWJiMTJkZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXRf
c291cmNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldF9zb3VyY2UuY2MKQEAgLTEz
LDcgKzEzLDcgQEAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewogCi1QYWNr
ZXRTb3VyY2U6OlBhY2tldFNvdXJjZSgpIDogdXNlX3NzcmNfZmlsdGVyXyhmYWxzZSksIHNzcmNf
KDApIHt9CitQYWNrZXRTb3VyY2U6OlBhY2tldFNvdXJjZSgpID0gZGVmYXVsdDsKIAogUGFja2V0
U291cmNlOjp+UGFja2V0U291cmNlKCkgPSBkZWZhdWx0OwogCkBAIC0yMSwxMCArMjEsNSBAQCB2
b2lkIFBhY2tldFNvdXJjZTo6RmlsdGVyT3V0UGF5bG9hZFR5cGUodWludDhfdCBwYXlsb2FkX3R5
cGUpIHsKICAgZmlsdGVyXy5zZXQocGF5bG9hZF90eXBlLCB0cnVlKTsKIH0KIAotdm9pZCBQYWNr
ZXRTb3VyY2U6OlNlbGVjdFNzcmModWludDMyX3Qgc3NyYykgewotICB1c2Vfc3NyY19maWx0ZXJf
ID0gdHJ1ZTsKLSAgc3NyY18gPSBzc3JjOwotfQotCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0
X3NvdXJjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0X3NvdXJjZS5oCmluZGV4IGZiNjg5
ZTMzZDRlNDg1MmM5ODE0NDBhMmFlMjE4MGI4MjUxNTgwNGQuLmNiODZhOTg5OTlkZTA2YmZlZTg1
YzU2OGZlOThjYjZmZjIzZTIwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tl
dF9zb3VyY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXRfc291cmNlLmgKQEAgLTMy
LDEzICszMiw4IEBAIGNsYXNzIFBhY2tldFNvdXJjZSB7CiAKICAgdmlydHVhbCB2b2lkIEZpbHRl
ck91dFBheWxvYWRUeXBlKHVpbnQ4X3QgcGF5bG9hZF90eXBlKTsKIAotICB2aXJ0dWFsIHZvaWQg
U2VsZWN0U3NyYyh1aW50MzJfdCBzc3JjKTsKLQogIHByb3RlY3RlZDoKICAgc3RkOjpiaXRzZXQ8
MTI4PiBmaWx0ZXJfOyAgLy8gUGF5bG9hZCB0eXBlIGlzIDcgYml0cyBpbiB0aGUgUkZDLgotICAv
LyBJZiBTU1JDIGZpbHRlcmluZyBkaXNjYXJkcyBhbGwgcGFja2V0IHRoYXQgZG8gbm90IG1hdGNo
IHRoZSBTU1JDLgotICBib29sIHVzZV9zc3JjX2ZpbHRlcl87ICAvLyBUcnVlIHdoZW4gU1NSQyBm
aWx0ZXJpbmcgaXMgYWN0aXZlLgotICB1aW50MzJfdCBzc3JjXzsgIC8vIFRoZSBzZWxlY3RlZCBT
U1JDLiBBbGwgb3RoZXIgU1NSQ3Mgd2lsbCBiZSBkaXNjYXJkZWQuCiAKICBwcml2YXRlOgogICBS
VENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFBhY2tldFNvdXJjZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rv
b2xzL3J0Y19ldmVudF9sb2dfc291cmNlLmNjCmluZGV4IDllNDM1YzdjZjg4ZmMyYjlkNmQ4NjZk
ZTQ4MDg4OWYxODZiM2Y4M2YuLjU4MmMyZjJmMTM1NTFmOTg3YmFhZjkxYWFlYTJlYzg5NzZmZjJk
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0Y19ldmVudF9sb2dfc291cmNlLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0Y19ldmVudF9sb2dfc291cmNlLmNjCkBAIC0xMyw5
NCArMTMsMTE1IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAj
aW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJsb2dnaW5n
L3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X3Byb2Nlc3Nvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX3BhcnNlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIAotUnRjRXZl
bnRMb2dTb3VyY2UqIFJ0Y0V2ZW50TG9nU291cmNlOjpDcmVhdGUoY29uc3Qgc3RkOjpzdHJpbmcm
IGZpbGVfbmFtZSkgeworbmFtZXNwYWNlIHsKK2Jvb2wgU2hvdWxkU2tpcFN0cmVhbShQYXJzZWRS
dGNFdmVudExvZ05ldzo6TWVkaWFUeXBlIG1lZGlhX3R5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3Qgc3NyYywKKyAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1
aW50MzJfdD4gc3NyY19maWx0ZXIpIHsKKyAgaWYgKG1lZGlhX3R5cGUgIT0gUGFyc2VkUnRjRXZl
bnRMb2dOZXc6Ok1lZGlhVHlwZTo6QVVESU8pCisgICAgcmV0dXJuIHRydWU7CisgIGlmIChzc3Jj
X2ZpbHRlci5oYXNfdmFsdWUoKSAmJiBzc3JjICE9ICpzc3JjX2ZpbHRlcikKKyAgICByZXR1cm4g
dHJ1ZTsKKyAgcmV0dXJuIGZhbHNlOworfQorfSAgLy8gbmFtZXNwYWNlCisKK1J0Y0V2ZW50TG9n
U291cmNlKiBSdGNFdmVudExvZ1NvdXJjZTo6Q3JlYXRlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBmaWxlX25hbWUsCisgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyKSB7
CiAgIFJ0Y0V2ZW50TG9nU291cmNlKiBzb3VyY2UgPSBuZXcgUnRjRXZlbnRMb2dTb3VyY2UoKTsK
LSAgUlRDX0NIRUNLKHNvdXJjZS0+T3BlbkZpbGUoZmlsZV9uYW1lKSk7CisgIFJUQ19DSEVDSyhz
b3VyY2UtPk9wZW5GaWxlKGZpbGVfbmFtZSwgc3NyY19maWx0ZXIpKTsKICAgcmV0dXJuIHNvdXJj
ZTsKIH0KIAogUnRjRXZlbnRMb2dTb3VyY2U6On5SdGNFdmVudExvZ1NvdXJjZSgpIHt9CiAKLWJv
b2wgUnRjRXZlbnRMb2dTb3VyY2U6OlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVu
c2lvblR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgaWQpIHsKLSAgUlRDX0NIRUNLKHBhcnNlcl8uZ2V0KCkpOwotICBy
ZXR1cm4gcGFyc2VyXy0+UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24odHlwZSwgaWQpOwotfQot
CiBzdGQ6OnVuaXF1ZV9wdHI8UGFja2V0PiBSdGNFdmVudExvZ1NvdXJjZTo6TmV4dFBhY2tldCgp
IHsKLSAgZm9yICg7IHJ0cF9wYWNrZXRfaW5kZXhfIDwgcGFyc2VkX3N0cmVhbV8uR2V0TnVtYmVy
T2ZFdmVudHMoKTsKLSAgICAgICBydHBfcGFja2V0X2luZGV4XysrKSB7Ci0gICAgaWYgKHBhcnNl
ZF9zdHJlYW1fLkdldEV2ZW50VHlwZShydHBfcGFja2V0X2luZGV4XykgPT0KLSAgICAgICAgUGFy
c2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6UlRQX0VWRU5UKSB7Ci0gICAgICBQYWNrZXRE
aXJlY3Rpb24gZGlyZWN0aW9uOwotICAgICAgc2l6ZV90IGhlYWRlcl9sZW5ndGg7Ci0gICAgICBz
aXplX3QgcGFja2V0X2xlbmd0aDsKLSAgICAgIHVpbnQ2NF90IHRpbWVzdGFtcF91cyA9IHBhcnNl
ZF9zdHJlYW1fLkdldFRpbWVzdGFtcChydHBfcGFja2V0X2luZGV4Xyk7Ci0gICAgICBwYXJzZWRf
c3RyZWFtXy5HZXRSdHBIZWFkZXIocnRwX3BhY2tldF9pbmRleF8sICZkaXJlY3Rpb24sIG51bGxw
dHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhlYWRlcl9sZW5ndGgsICZw
YWNrZXRfbGVuZ3RoLCBudWxscHRyKTsKLQotICAgICAgaWYgKGRpcmVjdGlvbiAhPSBrSW5jb21p
bmdQYWNrZXQpIHsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0KLSAgICAgIHVpbnQ4X3Qq
IHBhY2tldF9oZWFkZXIgPSBuZXcgdWludDhfdFtoZWFkZXJfbGVuZ3RoXTsKLSAgICAgIHBhcnNl
ZF9zdHJlYW1fLkdldFJ0cEhlYWRlcihydHBfcGFja2V0X2luZGV4XywgbnVsbHB0ciwgcGFja2V0
X2hlYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyKTsKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWNrZXQ+IHBhY2tldCgKLSAg
ICAgICAgICBuZXcgUGFja2V0KHBhY2tldF9oZWFkZXIsIGhlYWRlcl9sZW5ndGgsIHBhY2tldF9s
ZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFt
cF91cykgLyAxMDAwLCAqcGFyc2VyXy5nZXQoKSkpOwotCi0gICAgICBpZiAoIXBhY2tldC0+dmFs
aWRfaGVhZGVyKCkpIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJXYXJuaW5nOiBQYWNrZXQgd2l0
aCBpbmRleCAiIDw8IHJ0cF9wYWNrZXRfaW5kZXhfCi0gICAgICAgICAgICAgICAgICA8PCAiIGhh
cyBhbiBpbnZhbGlkIGhlYWRlciBhbmQgd2lsbCBiZSBpZ25vcmVkLiIgPDwgc3RkOjplbmRsOwot
ICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLQotICAgICAgaWYgKHBhcnNlZF9zdHJlYW1fLkdl
dE1lZGlhVHlwZShwYWNrZXQtPmhlYWRlcigpLnNzcmMsIGRpcmVjdGlvbikgIT0KLSAgICAgICAg
ICBQYXJzZWRSdGNFdmVudExvZ05ldzo6TWVkaWFUeXBlOjpBVURJTykgewotICAgICAgICBjb250
aW51ZTsKLSAgICAgIH0KLQotICAgICAgLy8gQ2hlY2sgaWYgdGhlIHBhY2tldCBzaG91bGQgbm90
IGJlIGZpbHRlcmVkIG91dC4KLSAgICAgIGlmICghZmlsdGVyXy50ZXN0KHBhY2tldC0+aGVhZGVy
KCkucGF5bG9hZFR5cGUpICYmCi0gICAgICAgICAgISh1c2Vfc3NyY19maWx0ZXJfICYmIHBhY2tl
dC0+aGVhZGVyKCkuc3NyYyAhPSBzc3JjXykpIHsKLSAgICAgICAgKytydHBfcGFja2V0X2luZGV4
XzsKLSAgICAgICAgcmV0dXJuIHBhY2tldDsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJu
IG51bGxwdHI7CisgIGlmIChydHBfcGFja2V0X2luZGV4XyA+PSBydHBfcGFja2V0c18uc2l6ZSgp
KQorICAgIHJldHVybiBudWxscHRyOworCisgIHN0ZDo6dW5pcXVlX3B0cjxQYWNrZXQ+IHBhY2tl
dCA9IHN0ZDo6bW92ZShydHBfcGFja2V0c19bcnRwX3BhY2tldF9pbmRleF8rK10pOworICByZXR1
cm4gcGFja2V0OwogfQogCiBpbnQ2NF90IFJ0Y0V2ZW50TG9nU291cmNlOjpOZXh0QXVkaW9PdXRw
dXRFdmVudE1zKCkgewotICB3aGlsZSAoYXVkaW9fb3V0cHV0X2luZGV4XyA8IHBhcnNlZF9zdHJl
YW1fLkdldE51bWJlck9mRXZlbnRzKCkpIHsKLSAgICBpZiAocGFyc2VkX3N0cmVhbV8uR2V0RXZl
bnRUeXBlKGF1ZGlvX291dHB1dF9pbmRleF8pID09Ci0gICAgICAgIFBhcnNlZFJ0Y0V2ZW50TG9n
TmV3OjpFdmVudFR5cGU6OkFVRElPX1BMQVlPVVRfRVZFTlQpIHsKLSAgICAgIExvZ2dlZEF1ZGlv
UGxheW91dEV2ZW50IHBsYXlvdXRfZXZlbnQgPQotICAgICAgICAgIHBhcnNlZF9zdHJlYW1fLkdl
dEF1ZGlvUGxheW91dChhdWRpb19vdXRwdXRfaW5kZXhfKTsKLSAgICAgIGlmICghKHVzZV9zc3Jj
X2ZpbHRlcl8gJiYgcGxheW91dF9ldmVudC5zc3JjICE9IHNzcmNfKSkgewotICAgICAgICBhdWRp
b19vdXRwdXRfaW5kZXhfKys7Ci0gICAgICAgIHJldHVybiBwbGF5b3V0X2V2ZW50LnRpbWVzdGFt
cF91cyAvIDEwMDA7Ci0gICAgICB9CisgIGlmIChhdWRpb19vdXRwdXRfaW5kZXhfID49IGF1ZGlv
X291dHB1dHNfLnNpemUoKSkKKyAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWF4KCk7CisKKyAgaW50NjRfdCBvdXRwdXRfdGltZV9tcyA9IGF1ZGlvX291dHB1dHNfW2F1
ZGlvX291dHB1dF9pbmRleF8rK107CisgIHJldHVybiBvdXRwdXRfdGltZV9tczsKK30KKworUnRj
RXZlbnRMb2dTb3VyY2U6OlJ0Y0V2ZW50TG9nU291cmNlKCkgOiBQYWNrZXRTb3VyY2UoKSB7fQor
Citib29sIFJ0Y0V2ZW50TG9nU291cmNlOjpPcGVuRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmls
ZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8
dWludDMyX3Q+IHNzcmNfZmlsdGVyKSB7CisgIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3IHBhcnNlZF9s
b2c7CisgIGlmICghcGFyc2VkX2xvZy5QYXJzZUZpbGUoZmlsZV9uYW1lKSkKKyAgICByZXR1cm4g
ZmFsc2U7CisKKyAgY29uc3QgYXV0byBmaXJzdF9sb2dfZW5kX3RpbWVfdXMgPQorICAgICAgcGFy
c2VkX2xvZy5zdG9wX2xvZ19ldmVudHMoKS5lbXB0eSgpCisgICAgICAgICAgPyBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDY0X3Q+OjptYXgoKQorICAgICAgICAgIDogcGFyc2VkX2xvZy5zdG9wX2xv
Z19ldmVudHMoKS5mcm9udCgpLmxvZ190aW1lX3VzKCk7CisKKyAgYXV0byBoYW5kbGVfcnRwX3Bh
Y2tldCA9CisgICAgICBbdGhpcywKKyAgICAgICBmaXJzdF9sb2dfZW5kX3RpbWVfdXNdKGNvbnN0
IHdlYnJ0Yzo6TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIGluY29taW5nKSB7CisgICAgICAgIGlm
ICghZmlsdGVyXy50ZXN0KGluY29taW5nLnJ0cC5oZWFkZXIucGF5bG9hZFR5cGUpICYmCisgICAg
ICAgICAgICBpbmNvbWluZy5sb2dfdGltZV91cygpIDwgZmlyc3RfbG9nX2VuZF90aW1lX3VzKSB7
CisgICAgICAgICAgcnRwX3BhY2tldHNfLmVtcGxhY2VfYmFjayhhYnNsOjptYWtlX3VuaXF1ZTxQ
YWNrZXQ+KAorICAgICAgICAgICAgICBpbmNvbWluZy5ydHAuaGVhZGVyLCBpbmNvbWluZy5ydHAu
dG90YWxfbGVuZ3RoLAorICAgICAgICAgICAgICBpbmNvbWluZy5ydHAudG90YWxfbGVuZ3RoIC0g
aW5jb21pbmcucnRwLmhlYWRlcl9sZW5ndGgsCisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRv
dWJsZT4oaW5jb21pbmcubG9nX3RpbWVfbXMoKSkpKTsKKyAgICAgICAgfQorICAgICAgfTsKKwor
ICBhdXRvIGhhbmRsZV9hdWRpb19wbGF5b3V0ID0KKyAgICAgIFt0aGlzLCBmaXJzdF9sb2dfZW5k
X3RpbWVfdXNdKAorICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6TG9nZ2VkQXVkaW9QbGF5b3V0RXZl
bnQmIGF1ZGlvX3BsYXlvdXQpIHsKKyAgICAgICAgaWYgKGF1ZGlvX3BsYXlvdXQubG9nX3RpbWVf
dXMoKSA8IGZpcnN0X2xvZ19lbmRfdGltZV91cykgeworICAgICAgICAgIGF1ZGlvX291dHB1dHNf
LmVtcGxhY2VfYmFjayhhdWRpb19wbGF5b3V0LmxvZ190aW1lX21zKCkpOworICAgICAgICB9Cisg
ICAgICB9OworCisgIC8vIFRoaXMgd291bGRuJ3QgYmUgbmVlZGVkIGlmIHdlIGtuZXcgdGhhdCB0
aGVyZSB3YXMgYXQgbW9zdCBvbmUgYXVkaW8gc3RyZWFtLgorICB3ZWJydGM6OlJ0Y0V2ZW50UHJv
Y2Vzc29yIGV2ZW50X3Byb2Nlc3NvcjsKKyAgZm9yIChjb25zdCBhdXRvJiBydHBfcGFja2V0cyA6
IHBhcnNlZF9sb2cuaW5jb21pbmdfcnRwX3BhY2tldHNfYnlfc3NyYygpKSB7CisgICAgUGFyc2Vk
UnRjRXZlbnRMb2dOZXc6Ok1lZGlhVHlwZSBtZWRpYV90eXBlID0KKyAgICAgICAgcGFyc2VkX2xv
Zy5HZXRNZWRpYVR5cGUocnRwX3BhY2tldHMuc3NyYywgd2VicnRjOjprSW5jb21pbmdQYWNrZXQp
OworICAgIGlmIChTaG91bGRTa2lwU3RyZWFtKG1lZGlhX3R5cGUsIHJ0cF9wYWNrZXRzLnNzcmMs
IHNzcmNfZmlsdGVyKSkgeworICAgICAgY29udGludWU7CiAgICAgfQotICAgIGF1ZGlvX291dHB1
dF9pbmRleF8rKzsKKyAgICBhdXRvIHJ0cF92aWV3ID0gYWJzbDo6bWFrZV91bmlxdWU8CisgICAg
ICAgIHdlYnJ0Yzo6UHJvY2Vzc2FibGVFdmVudExpc3Q8d2VicnRjOjpMb2dnZWRSdHBQYWNrZXRJ
bmNvbWluZz4+KAorICAgICAgICBydHBfcGFja2V0cy5pbmNvbWluZ19wYWNrZXRzLmJlZ2luKCks
CisgICAgICAgIHJ0cF9wYWNrZXRzLmluY29taW5nX3BhY2tldHMuZW5kKCksIGhhbmRsZV9ydHBf
cGFja2V0KTsKKyAgICBldmVudF9wcm9jZXNzb3IuQWRkRXZlbnRzKHN0ZDo6bW92ZShydHBfdmll
dykpOworICB9CisKKyAgZm9yIChjb25zdCBhdXRvJiBhdWRpb19wbGF5b3V0cyA6IHBhcnNlZF9s
b2cuYXVkaW9fcGxheW91dF9ldmVudHMoKSkgeworICAgIGlmIChzc3JjX2ZpbHRlci5oYXNfdmFs
dWUoKSAmJiBhdWRpb19wbGF5b3V0cy5maXJzdCAhPSAqc3NyY19maWx0ZXIpCisgICAgICBjb250
aW51ZTsKKyAgICBhdXRvIGF1ZGlvX3ZpZXcgPSBhYnNsOjptYWtlX3VuaXF1ZTwKKyAgICAgICAg
d2VicnRjOjpQcm9jZXNzYWJsZUV2ZW50TGlzdDx3ZWJydGM6OkxvZ2dlZEF1ZGlvUGxheW91dEV2
ZW50Pj4oCisgICAgICAgIGF1ZGlvX3BsYXlvdXRzLnNlY29uZC5iZWdpbigpLCBhdWRpb19wbGF5
b3V0cy5zZWNvbmQuZW5kKCksCisgICAgICAgIGhhbmRsZV9hdWRpb19wbGF5b3V0KTsKKyAgICBl
dmVudF9wcm9jZXNzb3IuQWRkRXZlbnRzKHN0ZDo6bW92ZShhdWRpb192aWV3KSk7CiAgIH0KLSAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOwotfQogCi1SdGNFdmVu
dExvZ1NvdXJjZTo6UnRjRXZlbnRMb2dTb3VyY2UoKQotICAgIDogUGFja2V0U291cmNlKCksIHBh
cnNlcl8oUnRwSGVhZGVyUGFyc2VyOjpDcmVhdGUoKSkge30KKyAgLy8gRmlsbHMgaW4gcnRwX3Bh
Y2tldHNfIGFuZCBhdWRpb19vdXRwdXRzXy4KKyAgZXZlbnRfcHJvY2Vzc29yLlByb2Nlc3NFdmVu
dHNJbk9yZGVyKCk7CiAKLWJvb2wgUnRjRXZlbnRMb2dTb3VyY2U6Ok9wZW5GaWxlKGNvbnN0IHN0
ZDo6c3RyaW5nJiBmaWxlX25hbWUpIHsKLSAgcmV0dXJuIHBhcnNlZF9zdHJlYW1fLlBhcnNlRmls
ZShmaWxlX25hbWUpOworICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHRlc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0Y19ldmVudF9sb2dfc291cmNlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5oCmluZGV4IGRiNGViMTllMTFm
MzY5ZGI5MDQ0NzBjYmI1MjhlYjI1NDU4NmUxYWMuLjZiNzYxZjdkYmJkMjYyZDZmY2VkYWE1OGFm
ZjIwNWFmODkwZTZkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0Y19ldmVudF9s
b2dfc291cmNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRjX2V2ZW50X2xvZ19zb3VyY2Uu
aApAQCAtMTMsNyArMTMsOSBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmlu
Zz4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
CiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25l
dy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldF9z
b3VyY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVm
aW5lcy5oIgpAQCAtMzEsMTMgKzMzLDExIEBAIGNsYXNzIFJ0Y0V2ZW50TG9nU291cmNlIDogcHVi
bGljIFBhY2tldFNvdXJjZSB7CiAgcHVibGljOgogICAvLyBDcmVhdGVzIGFuIFJ0Y0V2ZW50TG9n
U291cmNlIHJlYWRpbmcgZnJvbSB8ZmlsZV9uYW1lfC4gSWYgdGhlIGZpbGUgY2Fubm90CiAgIC8v
IGJlIG9wZW5lZCwgb3IgaGFzIHRoZSB3cm9uZyBmb3JtYXQsIE5VTEwgd2lsbCBiZSByZXR1cm5l
ZC4KLSAgc3RhdGljIFJ0Y0V2ZW50TG9nU291cmNlKiBDcmVhdGUoY29uc3Qgc3RkOjpzdHJpbmcm
IGZpbGVfbmFtZSk7CisgIHN0YXRpYyBSdGNFdmVudExvZ1NvdXJjZSogQ3JlYXRlKGNvbnN0IHN0
ZDo6c3RyaW5nJiBmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlcik7CiAKICAgdmlydHVhbCB+UnRj
RXZlbnRMb2dTb3VyY2UoKTsKIAotICAvLyBSZWdpc3RlcnMgYW4gUlRQIGhlYWRlciBleHRlbnNp
b24gYW5kIGJpbmRzIGl0IHRvIHxpZHwuCi0gIHZpcnR1YWwgYm9vbCBSZWdpc3RlclJ0cEhlYWRl
ckV4dGVuc2lvbihSVFBFeHRlbnNpb25UeXBlIHR5cGUsIHVpbnQ4X3QgaWQpOwotCiAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWNrZXQ+IE5leHRQYWNrZXQoKSBvdmVycmlkZTsKIAogICAvLyBSZXR1cm5z
IHRoZSB0aW1lc3RhbXAgb2YgdGhlIG5leHQgYXVkaW8gb3V0cHV0IGV2ZW50LCBpbiBtaWxsaXNl
Y29uZHMuIFRoZQpAQCAtNDgsMTQgKzQ4LDE0IEBAIGNsYXNzIFJ0Y0V2ZW50TG9nU291cmNlIDog
cHVibGljIFBhY2tldFNvdXJjZSB7CiAgcHJpdmF0ZToKICAgUnRjRXZlbnRMb2dTb3VyY2UoKTsK
IAotICBib29sIE9wZW5GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpOworICBib29s
IE9wZW5GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUsCisgICAgICAgICAgICAgICAg
YWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyKTsKIAorICBzdGQ6OnZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8UGFja2V0Pj4gcnRwX3BhY2tldHNfOwogICBzaXplX3QgcnRwX3BhY2tl
dF9pbmRleF8gPSAwOworICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiBhdWRpb19vdXRwdXRzXzsKICAg
c2l6ZV90IGF1ZGlvX291dHB1dF9pbmRleF8gPSAwOwogCi0gIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
IHBhcnNlZF9zdHJlYW1fOwotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwSGVhZGVyUGFyc2VyPiBwYXJz
ZXJfOwotCiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oUnRjRXZlbnRMb2dTb3VyY2Up
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2FuYWx5emUuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90b29scy9ydHBfYW5hbHl6ZS5jYwppbmRleCBmOTM5MDM4MWNkMzhkMGQxMmVj
MTEzYTMxMzU2NWVhZGY3MDQ4NGZlLi45ZDMwNDFlYTY2OGRjYTFkZWJkYzMyMGNiYTU0NjM2MzBh
MjQ4ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfYW5hbHl6ZS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS90b29scy9ydHBfYW5hbHl6ZS5jYwpAQCAtMTksMTYgKzE5LDE2IEBACiAj
aW5jbHVkZSAicnRjX2Jhc2UvZmxhZ3MuaCIKIAogLy8gRGVmaW5lIGNvbW1hbmQgbGluZSBmbGFn
cy4KLURFRklORV9pbnQocmVkLCAxMTcsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBSRUQiKTsKLURF
RklORV9pbnQoYXVkaW9fbGV2ZWwsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiRXh0ZW5z
aW9uIElEIGZvciBhdWRpbyBsZXZlbCAoUkZDIDY0NjQpOyAiCi0gICAgICAgICAgICItMSBub3Qg
dG8gcHJpbnQgYXVkaW8gbGV2ZWwiKTsKLURFRklORV9pbnQoYWJzX3NlbmRfdGltZSwKLSAgICAg
ICAgICAgLTEsCi0gICAgICAgICAgICJFeHRlbnNpb24gSUQgZm9yIGFic29sdXRlIHNlbmRlciB0
aW1lOyAiCi0gICAgICAgICAgICItMSBub3QgdG8gcHJpbnQgYWJzb2x1dGUgc2VuZCB0aW1lIik7
Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMgbWVzc2FnZSIpOworV0VCUlRD
X0RFRklORV9pbnQocmVkLCAxMTcsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBSRUQiKTsKK1dFQlJU
Q19ERUZJTkVfaW50KGF1ZGlvX2xldmVsLAorICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAg
ICAgICAgICAgICAiRXh0ZW5zaW9uIElEIGZvciBhdWRpbyBsZXZlbCAoUkZDIDY0NjQpOyAiCisg
ICAgICAgICAgICAgICAgICAiLTEgbm90IHRvIHByaW50IGF1ZGlvIGxldmVsIik7CitXRUJSVENf
REVGSU5FX2ludChhYnNfc2VuZF90aW1lLAorICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAg
ICAgICAgICAgICAiRXh0ZW5zaW9uIElEIGZvciBhYnNvbHV0ZSBzZW5kZXIgdGltZTsgIgorICAg
ICAgICAgICAgICAgICAgIi0xIG5vdCB0byBwcmludCBhYnNvbHV0ZSBzZW5kIHRpbWUiKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMgbWVzc2FnZSIpOwogCiBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgIHN0ZDo6c3RyaW5nIHByb2dyYW1f
bmFtZSA9IGFyZ3ZbMF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZW5jb2Rl
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2VuY29kZS5jYwppbmRleCA1MDY1Y2ExNjc1N2Qw
NmZhNTI1ZTZlM2U3N2FkNDFkN2NmMjFiMjk4Li4xNGM2ZTU4YTlkNjQ0YTczMWZjMDVlZTg0YWE5
ZjBjMzNjZDg0YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZW5jb2RlLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9lbmNvZGUuY2MKQEAgLTQwLDIwICs0MCwyNCBA
QCBuYW1lc3BhY2UgdGVzdCB7CiBuYW1lc3BhY2UgewogCiAvLyBEZWZpbmUgY29tbWFuZCBsaW5l
IGZsYWdzLgotREVGSU5FX2Jvb2wobGlzdF9jb2RlY3MsIGZhbHNlLCAiRW51bWVyYXRlIGFsbCBj
b2RlY3MiKTsKLURFRklORV9zdHJpbmcoY29kZWMsICJvcHVzIiwgIkNvZGVjIHRvIHVzZSIpOwot
REVGSU5FX2ludChmcmFtZV9sZW4sIDAsICJGcmFtZSBsZW5ndGggaW4gbXM7IDAgaW5kaWNhdGVz
IGNvZGVjIGRlZmF1bHQgdmFsdWUiKTsKLURFRklORV9pbnQoYml0cmF0ZSwgMCwgIkJpdHJhdGUg
aW4ga2JwczsgMCBpbmRpY2F0ZXMgY29kZWMgZGVmYXVsdCB2YWx1ZSIpOwotREVGSU5FX2ludChw
YXlsb2FkX3R5cGUsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiUlRQIHBheWxvYWQgdHlw
ZTsgLTEgaW5kaWNhdGVzIGNvZGVjIGRlZmF1bHQgdmFsdWUiKTsKLURFRklORV9pbnQoY25nX3Bh
eWxvYWRfdHlwZSwKLSAgICAgICAgICAgLTEsCi0gICAgICAgICAgICJSVFAgcGF5bG9hZCB0eXBl
IGZvciBDTkc7IC0xIGluZGljYXRlcyBkZWZhdWx0IHZhbHVlIik7Ci1ERUZJTkVfaW50KHNzcmMs
IDAsICJTU1JDIHRvIHdyaXRlIHRvIHRoZSBSVFAgaGVhZGVyIik7Ci1ERUZJTkVfYm9vbChkdHgs
IGZhbHNlLCAiVXNlIERUWC9DTkciKTsKLURFRklORV9pbnQoc2FtcGxlX3JhdGUsIDQ4MDAwLCAi
U2FtcGxlIHJhdGUgb2YgdGhlIGlucHV0IGZpbGUiKTsKLURFRklORV9ib29sKGhlbHAsIGZhbHNl
LCAiUHJpbnQgdGhpcyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2Jvb2wobGlzdF9jb2RlY3Ms
IGZhbHNlLCAiRW51bWVyYXRlIGFsbCBjb2RlY3MiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGNv
ZGVjLCAib3B1cyIsICJDb2RlYyB0byB1c2UiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGZyYW1lX2xl
biwKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiRnJhbWUgbGVuZ3Ro
IGluIG1zOyAwIGluZGljYXRlcyBjb2RlYyBkZWZhdWx0IHZhbHVlIik7CitXRUJSVENfREVGSU5F
X2ludChiaXRyYXRlLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJC
aXRyYXRlIGluIGticHM7IDAgaW5kaWNhdGVzIGNvZGVjIGRlZmF1bHQgdmFsdWUiKTsKK1dFQlJU
Q19ERUZJTkVfaW50KHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgIC0xLAorICAgICAg
ICAgICAgICAgICAgIlJUUCBwYXlsb2FkIHR5cGU7IC0xIGluZGljYXRlcyBjb2RlYyBkZWZhdWx0
IHZhbHVlIik7CitXRUJSVENfREVGSU5FX2ludChjbmdfcGF5bG9hZF90eXBlLAorICAgICAgICAg
ICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAiUlRQIHBheWxvYWQgdHlwZSBmb3IgQ05H
OyAtMSBpbmRpY2F0ZXMgZGVmYXVsdCB2YWx1ZSIpOworV0VCUlRDX0RFRklORV9pbnQoc3NyYywg
MCwgIlNTUkMgdG8gd3JpdGUgdG8gdGhlIFJUUCBoZWFkZXIiKTsKK1dFQlJUQ19ERUZJTkVfYm9v
bChkdHgsIGZhbHNlLCAiVXNlIERUWC9DTkciKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNhbXBsZV9y
YXRlLCA0ODAwMCwgIlNhbXBsZSByYXRlIG9mIHRoZSBpbnB1dCBmaWxlIik7CitXRUJSVENfREVG
SU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UiKTsKIAogLy8gQWRkIG5l
dyBjb2RlY3MgaGVyZSwgYW5kIHRvIHRoZSBtYXAgYmVsb3cuCiBlbnVtIGNsYXNzIENvZGVjVHlw
ZSB7CkBAIC0yNDIsOCArMjQ2LDggQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gQ3Jl
YXRlRW5jb2RlcihDb2RlY1R5cGUgY29kZWNfdHlwZSwKICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LUF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnIEdldENuZ0NvbmZpZyhpbnQgc2FtcGxlX3JhdGVfaHop
IHsKLSAgQXVkaW9FbmNvZGVyQ25nOjpDb25maWcgY25nX2NvbmZpZzsKK0F1ZGlvRW5jb2RlckNu
Z0NvbmZpZyBHZXRDbmdDb25maWcoaW50IHNhbXBsZV9yYXRlX2h6KSB7CisgIEF1ZGlvRW5jb2Rl
ckNuZ0NvbmZpZyBjbmdfY29uZmlnOwogICBjb25zdCBhdXRvIGRlZmF1bHRfcGF5bG9hZF90eXBl
ID0gWyZdIHsKICAgICBzd2l0Y2ggKHNhbXBsZV9yYXRlX2h6KSB7CiAgICAgICBjYXNlIDgwMDA6
CkBAIC0zMDksMTAgKzMxMywxMCBAQCBpbnQgUnVuUnRwRW5jb2RlKGludCBhcmdjLCBjaGFyKiBh
cmd2W10pIHsKIAogICAvLyBDcmVhdGUgYW4gZXh0ZXJuYWwgVkFEL0NORyBlbmNvZGVyIGlmIG5l
ZWRlZC4KICAgaWYgKEZMQUdfZHR4ICYmICFjb2RlY19pdC0+c2Vjb25kLmludGVybmFsX2R0eCkg
ewotICAgIEF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnIGNuZ19jb25maWcgPSBHZXRDbmdDb25maWco
Y29kZWMtPlNhbXBsZVJhdGVIeigpKTsKKyAgICBBdWRpb0VuY29kZXJDbmdDb25maWcgY25nX2Nv
bmZpZyA9IEdldENuZ0NvbmZpZyhjb2RlYy0+U2FtcGxlUmF0ZUh6KCkpOwogICAgIFJUQ19EQ0hF
Q0soY29kZWMpOwogICAgIGNuZ19jb25maWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUoY29k
ZWMpOwotICAgIGNvZGVjID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyQ25nPihzdGQ6
Om1vdmUoY25nX2NvbmZpZykpOworICAgIGNvZGVjID0gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2Rl
cihzdGQ6Om1vdmUoY25nX2NvbmZpZykpOwogICB9CiAgIFJUQ19EQ0hFQ0soY29kZWMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2UuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2UuY2MKaW5kZXggN2JmN2Q1MjA4M2NjNjVjNDAxOGUx
MzcyZWE0YWRhOTBlOWZjM2JiNi4uZWRhMmIzZTMxZmNiZDRhMDY5YTE1ZWRkMDI2NDQyYzQ4OTZk
MTQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJjZS5jYwpAQCAtMjYsOCArMjYsOSBA
QAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiAKLVJ0cEZpbGVTb3VyY2Uq
IFJ0cEZpbGVTb3VyY2U6OkNyZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lKSB7Ci0g
IFJ0cEZpbGVTb3VyY2UqIHNvdXJjZSA9IG5ldyBSdHBGaWxlU291cmNlKCk7CitSdHBGaWxlU291
cmNlKiBSdHBGaWxlU291cmNlOjpDcmVhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50
MzJfdD4gc3NyY19maWx0ZXIpIHsKKyAgUnRwRmlsZVNvdXJjZSogc291cmNlID0gbmV3IFJ0cEZp
bGVTb3VyY2Uoc3NyY19maWx0ZXIpOwogICBSVENfQ0hFQ0soc291cmNlLT5PcGVuRmlsZShmaWxl
X25hbWUpKTsKICAgcmV0dXJuIHNvdXJjZTsKIH0KQEAgLTcyLDcgKzczLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhY2tldD4gUnRwRmlsZVNvdXJjZTo6TmV4dFBhY2tldCgpIHsKICAgICAgIGNvbnRp
bnVlOwogICAgIH0KICAgICBpZiAoZmlsdGVyXy50ZXN0KHBhY2tldC0+aGVhZGVyKCkucGF5bG9h
ZFR5cGUpIHx8Ci0gICAgICAgICh1c2Vfc3NyY19maWx0ZXJfICYmIHBhY2tldC0+aGVhZGVyKCku
c3NyYyAhPSBzc3JjXykpIHsKKyAgICAgICAgKHNzcmNfZmlsdGVyXyAmJiBwYWNrZXQtPmhlYWRl
cigpLnNzcmMgIT0gKnNzcmNfZmlsdGVyXykpIHsKICAgICAgIC8vIFRoaXMgcGF5bG9hZCB0eXBl
IHNob3VsZCBiZSBmaWx0ZXJlZCBvdXQuIENvbnRpbnVlIHRvIHRoZSBuZXh0IHBhY2tldC4KICAg
ICAgIGNvbnRpbnVlOwogICAgIH0KQEAgLTgwLDggKzgxLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
YWNrZXQ+IFJ0cEZpbGVTb3VyY2U6Ok5leHRQYWNrZXQoKSB7CiAgIH0KIH0KIAotUnRwRmlsZVNv
dXJjZTo6UnRwRmlsZVNvdXJjZSgpCi0gICAgOiBQYWNrZXRTb3VyY2UoKSwgcGFyc2VyXyhSdHBI
ZWFkZXJQYXJzZXI6OkNyZWF0ZSgpKSB7fQorUnRwRmlsZVNvdXJjZTo6UnRwRmlsZVNvdXJjZShh
YnNsOjpvcHRpb25hbDx1aW50MzJfdD4gc3NyY19maWx0ZXIpCisgICAgOiBQYWNrZXRTb3VyY2Uo
KSwKKyAgICAgIHBhcnNlcl8oUnRwSGVhZGVyUGFyc2VyOjpDcmVhdGUoKSksCisgICAgICBzc3Jj
X2ZpbHRlcl8oc3NyY19maWx0ZXIpIHt9CiAKIGJvb2wgUnRwRmlsZVNvdXJjZTo6T3BlbkZpbGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSkgewogICBydHBfcmVhZGVyXy5yZXNldChSdHBG
aWxlUmVhZGVyOjpDcmVhdGUoUnRwRmlsZVJlYWRlcjo6a1J0cER1bXAsIGZpbGVfbmFtZSkpOwpA
QCAtODksNyArOTIsNyBAQCBib29sIFJ0cEZpbGVTb3VyY2U6Ok9wZW5GaWxlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBmaWxlX25hbWUpIHsKICAgICByZXR1cm4gdHJ1ZTsKICAgcnRwX3JlYWRlcl8ucmVz
ZXQoUnRwRmlsZVJlYWRlcjo6Q3JlYXRlKFJ0cEZpbGVSZWFkZXI6OmtQY2FwLCBmaWxlX25hbWUp
KTsKICAgaWYgKCFydHBfcmVhZGVyXykgewotICAgIFJUQ19GQVRBTCgpIDw8ICJDb3VsZG4ndCBv
cGVuIGlucHV0IGZpbGUgYXMgZWl0aGVyIGEgcnRwZHVtcCBvciAucGNhcC4gTm90ZSAiCisgICAg
RkFUQUwoKSA8PCAiQ291bGRuJ3Qgb3BlbiBpbnB1dCBmaWxlIGFzIGVpdGhlciBhIHJ0cGR1bXAg
b3IgLnBjYXAuIE5vdGUgIgogICAgICAgICAgICAgICAgInRoYXQgLnBjYXBuZyBpcyBub3Qgc3Vw
cG9ydGVkLiI7CiAgIH0KICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
b29scy9ydHBfZmlsZV9zb3VyY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJj
ZS5oCmluZGV4IDAxMzMzM2I4OWEzNjlmYTIyMmY0N2NjMjg5MGYxZjc5YWVlNzRmYTEuLjAyYWI4
OTc1NjYxOTBiMzM1MjE1Y2M2ODNmOTYwOWI5YmY3MjBlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9m
aWxlX3NvdXJjZS5oCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRl
ICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldF9zb3VyY2UuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgpAQCAtMzMsNyAr
MzQsOSBAQCBjbGFzcyBSdHBGaWxlU291cmNlIDogcHVibGljIFBhY2tldFNvdXJjZSB7CiAgcHVi
bGljOgogICAvLyBDcmVhdGVzIGFuIFJ0cEZpbGVTb3VyY2UgcmVhZGluZyBmcm9tIHxmaWxlX25h
bWV8LiBJZiB0aGUgZmlsZSBjYW5ub3QgYmUKICAgLy8gb3BlbmVkLCBvciBoYXMgdGhlIHdyb25n
IGZvcm1hdCwgTlVMTCB3aWxsIGJlIHJldHVybmVkLgotICBzdGF0aWMgUnRwRmlsZVNvdXJjZSog
Q3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpOworICBzdGF0aWMgUnRwRmlsZVNv
dXJjZSogQ3JlYXRlKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSwKKyAgICAg
IGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlciA9IGFic2w6Om51bGxvcHQpOwog
CiAgIC8vIENoZWNrcyB3aGV0aGVyIGEgZmlsZXMgaXMgYSB2YWxpZCBSVFAgZHVtcCBvciBQQ0FQ
IChXaXJlc2hhcmspIGZpbGUuCiAgIHN0YXRpYyBib29sIFZhbGlkUnRwRHVtcChjb25zdCBzdGQ6
OnN0cmluZyYgZmlsZV9uYW1lKTsKQEAgLTUxLDEyICs1NCwxMyBAQCBjbGFzcyBSdHBGaWxlU291
cmNlIDogcHVibGljIFBhY2tldFNvdXJjZSB7CiAgIHN0YXRpYyBjb25zdCBpbnQga1J0cEZpbGVI
ZWFkZXJTaXplID0gNCArIDQgKyA0ICsgMiArIDI7CiAgIHN0YXRpYyBjb25zdCBzaXplX3Qga1Bh
Y2tldEhlYWRlclNpemUgPSA4OwogCi0gIFJ0cEZpbGVTb3VyY2UoKTsKKyAgZXhwbGljaXQgUnRw
RmlsZVNvdXJjZShhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gc3NyY19maWx0ZXIpOwogCiAgIGJv
b2wgT3BlbkZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSk7CiAKICAgc3RkOjp1bmlx
dWVfcHRyPFJ0cEZpbGVSZWFkZXI+IHJ0cF9yZWFkZXJfOwogICBzdGQ6OnVuaXF1ZV9wdHI8UnRw
SGVhZGVyUGFyc2VyPiBwYXJzZXJfOworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4g
c3NyY19maWx0ZXJfOwogCiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oUnRwRmlsZVNv
dXJjZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ppdHRlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL3Rvb2xzL3J0cF9qaXR0ZXIuY2MKaW5kZXggM2M0OTQ0MzAzNmMzOWY3MzIy
ZWYxZThlNjM3YzMyZDYxNjgxOTc4OS4uOTJhN2E4ZDIxNTBhZmI0NGUxN2ZjYzZkM2UxNDkwNWY2
Nzg4NGE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ppdHRlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS90b29scy9ydHBfaml0dGVyLmNjCkBAIC0yMyw3ICsyMyw3IEBAIG5hbWVz
cGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewogbmFtZXNwYWNlIHsKIAotREVGSU5FX2Jv
b2woaGVscCwgZmFsc2UsICJQcmludCBoZWxwIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfYm9v
bChoZWxwLCBmYWxzZSwgIlByaW50IGhlbHAgbWVzc2FnZSIpOwogCiBjb25zdGV4cHIgc2l6ZV90
IGtSdHBEdW1wSGVhZGVyTGVuZ3RoID0gODsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9FbmNv
ZGVEZWNvZGVUZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9FbmNvZGVEZWNvZGVUZXN0LmNjCmluZGV4IGM2
ZjNmOGM5ZjI1NjJkNDkyZTQ4ZGRlMzU0NjU0ODUzYzYxZDI1ZWIuLjI0MDgzNjY4OGNmMGNmYWUy
MzMxYWY4NTgyNjczMmRjNmUyOWQ4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvRW5jb2RlRGVj
b2RlVGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L0VuY29kZURlY29kZVRlc3QuY2MKQEAgLTE0LDkg
KzE0LDkgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNpbmNs
dWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1
aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVj
cy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBl
cy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL2F1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC91dGlsaXR5LmgiCkBAIC0yNDgsMTEgKzI0OCwxMSBA
QCB2b2lkIEVuY29kZURlY29kZVRlc3Q6OlBlcmZvcm0oKSB7CiAKICAgZm9yIChpbnQgbiA9IDA7
IG4gPCBudW1Db2RlY3M7IG4rKykgewogICAgIEVYUEVDVF9FUSgwLCBhY20tPkNvZGVjKG4sICZz
ZW5kQ29kZWNUbXApKTsKLSAgICBpZiAoU1RSX0NBU0VfQ01QKHNlbmRDb2RlY1RtcC5wbG5hbWUs
ICJ0ZWxlcGhvbmUtZXZlbnQiKSA9PSAwKSB7CisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNh
c2Uoc2VuZENvZGVjVG1wLnBsbmFtZSwgInRlbGVwaG9uZS1ldmVudCIpKSB7CiAgICAgICBudW1Q
YXJzW25dID0gMDsKLSAgICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChzZW5kQ29kZWNUbXAucGxu
YW1lLCAiY24iKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KHNlbmRDb2RlY1RtcC5wbG5hbWUsICJjbiIpKSB7CiAgICAgICBudW1QYXJzW25dID0gMDsKLSAg
ICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChzZW5kQ29kZWNUbXAucGxuYW1lLCAicmVkIikgPT0g
MCkgeworICAgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShzZW5kQ29kZWNUbXAu
cGxuYW1lLCAicmVkIikpIHsKICAgICAgIG51bVBhcnNbbl0gPSAwOwogICAgIH0gZWxzZSBpZiAo
c2VuZENvZGVjVG1wLmNoYW5uZWxzID09IDIpIHsKICAgICAgIG51bVBhcnNbbl0gPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvdGVzdC9UZXN0UmVkRmVjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9UZXN0UmVkRmVj
LmNjCmluZGV4IGM1NmZlZDk1ZGFiOTZkYzU1MmMwMTliMmJkMjJhNzg1Y2NhNjBlOGEuLjhiYjM5
NzEzNzNkYTdmMDcyMTA4MWE3MjFiNzVkMzc0ZTQ5NDk2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rl
c3QvVGVzdFJlZEZlYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RSZWRGZWMuY2MKQEAgLTE3Mywx
NCArMTczLDE0IEBAIHZvaWQgVGVzdFJlZEZlYzo6UmVnaXN0ZXJTZW5kQ29kZWMoCiAgIGF1dG8g
ZW5jb2RlciA9IGVuY29kZXJfZmFjdG9yeV8tPk1ha2VBdWRpb0VuY29kZXIocGF5bG9hZF90eXBl
LCBjb2RlY19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWJzbDo6bnVsbG9wdCk7CiAgIEVYUEVDVF9ORShlbmNvZGVyLCBudWxscHRy
KTsKLSAgaWYgKFNUUl9DQVNFX0NNUChjb2RlY19mb3JtYXQubmFtZS5jX3N0cigpLCAib3B1cyIp
ICE9IDApIHsKKyAgaWYgKCFhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjX2Zvcm1hdC5uYW1l
LCAib3B1cyIpKSB7CiAgICAgaWYgKHZhZF9tb2RlLmhhc192YWx1ZSgpKSB7Ci0gICAgICBBdWRp
b0VuY29kZXJDbmc6OkNvbmZpZyBjb25maWc7CisgICAgICBBdWRpb0VuY29kZXJDbmdDb25maWcg
Y29uZmlnOwogICAgICAgY29uZmlnLnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKGVuY29kZXIp
OwogICAgICAgY29uZmlnLm51bV9jaGFubmVscyA9IDE7CiAgICAgICBjb25maWcucGF5bG9hZF90
eXBlID0gY25fcGF5bG9hZF90eXBlOwogICAgICAgY29uZmlnLnZhZF9tb2RlID0gdmFkX21vZGUu
dmFsdWUoKTsKLSAgICAgIGVuY29kZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJD
bmc+KHN0ZDo6bW92ZShjb25maWcpKTsKKyAgICAgIGVuY29kZXIgPSBDcmVhdGVDb21mb3J0Tm9p
c2VFbmNvZGVyKHN0ZDo6bW92ZShjb25maWcpKTsKICAgICAgIEVYUEVDVF9FUSh0cnVlLAogICAg
ICAgICAgICAgICAgIG90aGVyX2FjbS0+UmVnaXN0ZXJSZWNlaXZlQ29kZWMoCiAgICAgICAgICAg
ICAgICAgICAgIGNuX3BheWxvYWRfdHlwZSwgeyJDTiIsIGNvZGVjX2Zvcm1hdC5jbG9ja3JhdGVf
aHosIDF9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RTdGVyZW8uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90
ZXN0L1Rlc3RTdGVyZW8uY2MKaW5kZXggZmQ2OWZkMjYyNjIyZTMxNDM2NTFkYTg3ZjRmMjUxYmI4
ZDgzMzZhMS4uYmY4ZTE4OTRkMGU0MWI5MzYzMjJkZDVmN2RiNGY1MWJkMDA0MmUyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvdGVzdC9UZXN0U3RlcmVvLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvVGVzdFN0ZXJl
by5jYwpAQCAtMTIsOSArMTIsOSBAQAogCiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGlu
X2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVp
bHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIg
IC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9hdWRpb19mb3JtYXRfY29udmVyc2lvbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZV90eXBlZGVmcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvdXRpbGl0eS5oIgpAQCAtNjI2LDE0ICs2MjYs
MTQgQEAgdm9pZCBUZXN0U3RlcmVvOjpSZWdpc3RlclNlbmRDb2RlYyhjaGFyIHNpZGUsCiAgIEFT
U0VSVF9UUlVFKG15X2FjbSAhPSBOVUxMKTsKIAogICBhdXRvIGVuY29kZXJfZmFjdG9yeSA9IENy
ZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCk7Ci0gIGNvbnN0IGludCBjbG9ja3JhdGVf
aHogPSBTVFJfQ0FTRV9DTVAoY29kZWNfbmFtZSwgImc3MjIiKSA9PSAwCisgIGNvbnN0IGludCBj
bG9ja3JhdGVfaHogPSBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjX25hbWUsICJnNzIyIikK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNhbXBsaW5nX2ZyZXFfaHogLyAyCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzYW1wbGluZ19mcmVxX2h6OwogICBjb25z
dCBzdGQ6OnN0cmluZyBwdGltZSA9IHJ0Yzo6VG9TdHJpbmcocnRjOjpDaGVja2VkRGl2RXhhY3Qo
CiAgICAgICBwYWNrX3NpemUsIHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KHNhbXBsaW5nX2ZyZXFfaHos
IDEwMDApKSk7CiAgIFNkcEF1ZGlvRm9ybWF0OjpQYXJhbWV0ZXJzIHBhcmFtcyA9IHt7InB0aW1l
IiwgcHRpbWV9fTsKICAgUlRDX0NIRUNLKGNoYW5uZWxzID09IDEgfHwgY2hhbm5lbHMgPT0gMik7
Ci0gIGlmIChTVFJfQ0FTRV9DTVAoY29kZWNfbmFtZSwgIm9wdXMiKSA9PSAwKSB7CisgIGlmIChh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjX25hbWUsICJvcHVzIikpIHsKICAgICBpZiAoY2hh
bm5lbHMgPT0gMikgewogICAgICAgcGFyYW1zWyJzdGVyZW8iXSA9ICIxIjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RWQUREVFguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RWQUREVFgu
Y2MKaW5kZXggNGYwMmVkYWE4Mzc0NGMxOTNiMGU3NDJlYzIyZjc4NzM4ZTNlOGViYS4uMDljNjlm
OWM2YmJlNTY2MDk2ZmE3YmYyY2FhNDFmZWQ1ZjcxYWVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVz
dC9UZXN0VkFERFRYLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvVGVzdFZBRERUWC5jYwpAQCAtMTIsNiAr
MTIsNyBAQAogCiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21h
dGNoLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3Rvcnlf
dGVtcGxhdGUuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFj
dG9yeV90ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19k
ZWNvZGVyX2lsYmMuaCIKQEAgLTgxLDEzICs4MiwxMyBAQCBib29sIFRlc3RWYWREdHg6OlJlZ2lz
dGVyQ29kZWMoY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGNvZGVjX2Zvcm1hdCwKICAgYXV0byBlbmNv
ZGVyID0gZW5jb2Rlcl9mYWN0b3J5Xy0+TWFrZUF1ZGlvRW5jb2RlcihwYXlsb2FkX3R5cGUsIGNv
ZGVjX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhYnNsOjpudWxsb3B0KTsKICAgaWYgKHZhZF9tb2RlLmhhc192YWx1ZSgpICYmCi0g
ICAgICBTVFJfQ0FTRV9DTVAoY29kZWNfZm9ybWF0Lm5hbWUuY19zdHIoKSwgIm9wdXMiKSAhPSAw
KSB7Ci0gICAgQXVkaW9FbmNvZGVyQ25nOjpDb25maWcgY29uZmlnOworICAgICAgIWFic2w6OkVx
dWFsc0lnbm9yZUNhc2UoY29kZWNfZm9ybWF0Lm5hbWUsICJvcHVzIikpIHsKKyAgICBBdWRpb0Vu
Y29kZXJDbmdDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6
bW92ZShlbmNvZGVyKTsKICAgICBjb25maWcubnVtX2NoYW5uZWxzID0gMTsKICAgICBjb25maWcu
cGF5bG9hZF90eXBlID0gY25fcGF5bG9hZF90eXBlOwogICAgIGNvbmZpZy52YWRfbW9kZSA9IHZh
ZF9tb2RlLnZhbHVlKCk7Ci0gICAgZW5jb2RlciA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5j
b2RlckNuZz4oc3RkOjptb3ZlKGNvbmZpZykpOworICAgIGVuY29kZXIgPSBDcmVhdGVDb21mb3J0
Tm9pc2VFbmNvZGVyKHN0ZDo6bW92ZShjb25maWcpKTsKICAgICBhZGRlZF9jb21mb3J0X25vaXNl
ID0gdHJ1ZTsKICAgfQogICBjaGFubmVsXy0+U2V0SXNTdGVyZW8oZW5jb2Rlci0+TnVtQ2hhbm5l
bHMoKSA+IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9pU0FDVGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rl
c3QvaVNBQ1Rlc3QuY2MKaW5kZXggYTEzMGFlM2U2NmZkYWM4YjAzMTAxNjkwYTBmMDk0ZGZmMWY2
YjZiYi4uYzMzMmZlMDhmMTExODM2OTRiMWE4OWViODlkMWI0YTMxYzI4YjZjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvdGVzdC9pU0FDVGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L2lTQUNUZXN0LmNjCkBA
IC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2VuZGlmCiAKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5f
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9pc2Fj
L2F1ZGlvX2VuY29kZXJfaXNhY19mbG9hdC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9hdWRpb19mb3JtYXRfY29udmVyc2lvbi5oIgpAQCAtOTIsMTIgKzkzLDEyIEBA
IHZvaWQgSVNBQ1Rlc3Q6OlNldHVwKCkgewogICBmb3IgKGNvZGVjQ250ciA9IDA7IGNvZGVjQ250
ciA8IEF1ZGlvQ29kaW5nTW9kdWxlOjpOdW1iZXJPZkNvZGVjcygpOwogICAgICAgIGNvZGVjQ250
cisrKSB7CiAgICAgRVhQRUNUX0VRKDAsIEF1ZGlvQ29kaW5nTW9kdWxlOjpDb2RlYyhjb2RlY0Nu
dHIsICZjb2RlY1BhcmFtKSk7Ci0gICAgaWYgKCFTVFJfQ0FTRV9DTVAoY29kZWNQYXJhbS5wbG5h
bWUsICJJU0FDIikgJiYKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY1BhcmFt
LnBsbmFtZSwgIklTQUMiKSAmJgogICAgICAgICBjb2RlY1BhcmFtLnBsZnJlcSA9PSAxNjAwMCkg
ewogICAgICAgbWVtY3B5KCZfcGFyYW1JU0FDMTZrSHosICZjb2RlY1BhcmFtLCBzaXplb2YoQ29k
ZWNJbnN0KSk7CiAgICAgICBfaWRJU0FDMTZrSHogPSBjb2RlY0NudHI7CiAgICAgfQotICAgIGlm
ICghU1RSX0NBU0VfQ01QKGNvZGVjUGFyYW0ucGxuYW1lLCAiSVNBQyIpICYmCisgICAgaWYgKGFi
c2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWNQYXJhbS5wbG5hbWUsICJJU0FDIikgJiYKICAgICAg
ICAgY29kZWNQYXJhbS5wbGZyZXEgPT0gMzIwMDApIHsKICAgICAgIG1lbWNweSgmX3BhcmFtSVNB
QzMya0h6LCAmY29kZWNQYXJhbSwgc2l6ZW9mKENvZGVjSW5zdCkpOwogICAgICAgX2lkSVNBQzMy
a0h6ID0gY29kZWNDbnRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC91dGlsaXR5LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvdGVzdC91dGlsaXR5LmNjCmluZGV4IDgzYzI1YjUzN2U0NWMxODI3MGNmYzMzZTg2OTQ3NTY0
MjU3ZjNmNWQuLjUzZjgwNzc5MGVmMzM3N2FiMjBlZjQ3MDBhOTEzZDkwYWNiMjRkODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL3Rlc3QvdXRpbGl0eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L3V0aWxpdHkuY2MK
QEAgLTE1LDcgKzE1LDcgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcu
aD4KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
CisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCiAjaW5jbHVkZSAidGVzdC9n
dGVzdC5oIgogCkBAIC0yNjgsNyArMjY4LDcgQEAgYm9vbCBGaXhlZFBheWxvYWRUeXBlQ29kZWMo
Y29uc3QgY2hhciogcGF5bG9hZE5hbWUpIHsKICAgICAgICJHNzIyIiwgIlFDRUxQIiwgIkNOIiwg
ICJNUEEiLCAgIkc3MjgiLCAiRzcyOSJ9OwogCiAgIGZvciAoaW50IG4gPSAwOyBuIDwgTlVNX0NP
REVDU19XSVRIX0ZJWEVEX1BBWUxPQURfVFlQRTsgbisrKSB7Ci0gICAgaWYgKCFTVFJfQ0FTRV9D
TVAocGF5bG9hZE5hbWUsIGZpeFBheWxvYWRUeXBlQ29kZWNzW25dKSkgeworICAgIGlmIChhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKHBheWxvYWROYW1lLCBmaXhQYXlsb2FkVHlwZUNvZGVjc1tuXSkp
IHsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2RldmljZS9CVUlMRC5nbgppbmRleCBiNjkwMDUwOTgxMTk0Mzk1ZDdhMDc1ODk1MTk3
YjcxYmQ3ODVmYTY3Li42NzQ5NWFjYTc3NTU2ZTc1NTkzYTEzMzFkMmU1ZjU4MzhkNDQ0ZjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2RldmljZS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9CVUlMRC5nbgpAQCAtMjQsNiAr
MjQsMTYgQEAgY29uZmlnKCJhdWRpb19kZXZpY2Vfd2FybmluZ3NfY29uZmlnIikgewogICB9CiB9
CiAKK3J0Y19zb3VyY2Vfc2V0KCJhdWRpb19kZXZpY2VfZGVmYXVsdCIpIHsKKyAgdmlzaWJpbGl0
eSA9IFsgIioiIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW5jbHVkZS9hdWRpb19kZXZpY2VfZGVm
YXVsdC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6YXVkaW9fZGV2aWNlX2FwaSIsCisgIF0K
K30KKwogcnRjX3NvdXJjZV9zZXQoImF1ZGlvX2RldmljZSIpIHsKICAgdmlzaWJpbGl0eSA9IFsg
IioiIF0KICAgcHVibGljX2RlcHMgPSBbCkBAIC0yMDMsOCArMjEzLDggQEAgcnRjX3NvdXJjZV9z
ZXQoImF1ZGlvX2RldmljZV9pbXBsIikgewogICBkZXBzID0gWwogICAgICI6YXVkaW9fZGV2aWNl
X2FwaSIsCiAgICAgIjphdWRpb19kZXZpY2VfYnVmZmVyIiwKKyAgICAiOmF1ZGlvX2RldmljZV9k
ZWZhdWx0IiwKICAgICAiOmF1ZGlvX2RldmljZV9nZW5lcmljIiwKLSAgICAiLi4vLi46d2VicnRj
X2NvbW1vbiIsCiAgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vY29tbW9u
X2F1ZGlvIiwKICAgICAiLi4vLi4vY29tbW9uX2F1ZGlvOmNvbW1vbl9hdWRpb19jIiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fZGV2aWNlL2FuZHJvaWQvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYW5k
cm9pZC9hdWRpb19kZXZpY2VfdW5pdHRlc3QuY2MKaW5kZXggYjBjZjQyZWRlYzUzYTMxNTk1Zjlk
YjQ3OTUyZTQwNGYwZGIwYTY4MC4uNmUwOTEzOWM3OWI2ODg1MGY4ZDkyMmJhOTQ1YzY4Nzg1MjQ3
OGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYW5kcm9pZC9hdWRpb19kZXZpY2VfdW5pdHRlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19kZXZpY2UvYW5kcm9pZC9hdWRpb19kZXZpY2VfdW5pdHRlc3QuY2MKQEAgLTI1LDEwICsy
NSwxMCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvbW9ja19hdWRp
b190cmFuc3BvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9zY29wZWRfcmVmX3B0ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgotI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCIKICNpbmNsdWRl
ICJ0ZXN0L2dtb2NrLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3Qv
dGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCkBAIC0zNjUsNyArMzY1LDcgQEAgY2xhc3MgTW9ja0F1
ZGlvVHJhbnNwb3J0QW5kcm9pZCA6IHB1YmxpYyB0ZXN0OjpNb2NrQXVkaW9UcmFuc3BvcnQgewog
CiAgIC8vIFNldCBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1vY2sgb2JqZWN0LiBXZSBhcmUgZGVs
ZWdhdGluZyB0byBmYWtlCiAgIC8vIGltcGxlbWVudGF0aW9ucyAob2YgQXVkaW9TdHJlYW1JbnRl
cmZhY2UpIGhlcmUuCi0gIHZvaWQgSGFuZGxlQ2FsbGJhY2tzKEV2ZW50V3JhcHBlciogdGVzdF9p
c19kb25lLAorICB2b2lkIEhhbmRsZUNhbGxiYWNrcyhydGM6OkV2ZW50KiB0ZXN0X2lzX2RvbmUs
CiAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvU3RyZWFtSW50ZXJmYWNlKiBhdWRpb19zdHJl
YW0sCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1fY2FsbGJhY2tzKSB7CiAgICAgdGVz
dF9pc19kb25lXyA9IHRlc3RfaXNfZG9uZTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBNb2Nr
QXVkaW9UcmFuc3BvcnRBbmRyb2lkIDogcHVibGljIHRlc3Q6Ok1vY2tBdWRpb1RyYW5zcG9ydCB7
CiAgIGJvb2wgcmVjX21vZGUoKSBjb25zdCB7IHJldHVybiB0eXBlXyAmIGtSZWNvcmRpbmc7IH0K
IAogIHByaXZhdGU6Ci0gIEV2ZW50V3JhcHBlciogdGVzdF9pc19kb25lXzsKKyAgcnRjOjpFdmVu
dCogdGVzdF9pc19kb25lXzsKICAgc2l6ZV90IG51bV9jYWxsYmFja3NfOwogICBpbnQgdHlwZV87
CiAgIHNpemVfdCBwbGF5X2NvdW50XzsKQEAgLTQ2MCw3ICs0NjAsNyBAQCBjbGFzcyBNb2NrQXVk
aW9UcmFuc3BvcnRBbmRyb2lkIDogcHVibGljIHRlc3Q6Ok1vY2tBdWRpb1RyYW5zcG9ydCB7CiAv
LyBBdWRpb0RldmljZVRlc3QgdGVzdCBmaXh0dXJlLgogY2xhc3MgQXVkaW9EZXZpY2VUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgotICBBdWRpb0RldmljZVRlc3Qo
KSA6IHRlc3RfaXNfZG9uZV8oRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSkgeworICBBdWRpb0Rldmlj
ZVRlc3QoKSB7CiAgICAgLy8gT25lLXRpbWUgaW5pdGlhbGl6YXRpb24gb2YgSlZNIGFuZCBhcHBs
aWNhdGlvbiBjb250ZXh0LiBFbnN1cmVzIHRoYXQgd2UKICAgICAvLyBjYW4gZG8gY2FsbHMgYmV0
d2VlbiBDKysgYW5kIEphdmEuIEluaXRpYWxpemVzIGJvdGggSmF2YSBhbmQgT3BlblNMIEVTCiAg
ICAgLy8gaW1wbGVtZW50YXRpb25zLgpAQCAtNjM4LDcgKzYzOCw3IEBAIGNsYXNzIEF1ZGlvRGV2
aWNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIHJldHVybiB2b2x1bWU7CiAg
IH0KIAotICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPiB0ZXN0X2lzX2RvbmVfOworICBy
dGM6OkV2ZW50IHRlc3RfaXNfZG9uZV87CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0Rldmlj
ZU1vZHVsZT4gYXVkaW9fZGV2aWNlXzsKICAgQXVkaW9QYXJhbWV0ZXJzIHBsYXlvdXRfcGFyYW1l
dGVyc187CiAgIEF1ZGlvUGFyYW1ldGVycyByZWNvcmRfcGFyYW1ldGVyc187CkBAIC04NjcsMTQg
Kzg2NywxNCBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdG9wUmVjb3JkaW5nUmVxdWlyZXNJ
bml0VG9SZXN0YXJ0KSB7CiAvLyBhdWRpbyBzYW1wbGVzIHRvIHBsYXkgb3V0IHVzaW5nIHRoZSBO
ZWVkTW9yZVBsYXlEYXRhIGNhbGxiYWNrLgogVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQ
bGF5b3V0VmVyaWZ5Q2FsbGJhY2tzKSB7CiAgIE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQgbW9j
ayhrUGxheW91dCk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCks
IG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9p
c19kb25lXywgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIE5l
ZWRNb3JlUGxheURhdGEocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J5dGVzUGVyU2FtcGxlLCBwbGF5b3V0X2No
YW5uZWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheW91dF9z
YW1wbGVfcmF0ZSgpLCBOb3ROdWxsKCksIF8sIF8sIF8pKQogICAgICAgLlRpbWVzKEF0TGVhc3Qo
a051bUNhbGxiYWNrcykpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVy
QXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25l
Xy0+V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2Fp
dChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BQbGF5b3V0KCk7CiB9CiAKQEAg
LTg4NCw3ICs4ODQsNyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRWZXJp
ZnlDYWxsYmFja3MpIHsKIC8vIGRlbGF5IGVzdGltYXRlcyBhcyB3ZWxsIChhcmd1bWVudCAjNiku
CiBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcykg
ewogICBNb2NrQXVkaW9UcmFuc3BvcnRBbmRyb2lkIG1vY2soa1JlY29yZGluZyk7Ci0gIG1vY2su
SGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtOdW1DYWxsYmFj
a3MpOworICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVsbHB0ciwga051
bUNhbGxiYWNrcyk7CiAgIEVYUEVDVF9DQUxMKAogICAgICAgbW9jaywgUmVjb3JkZWREYXRhSXNB
dmFpbGFibGUoTm90TnVsbCgpLCByZWNvcmRfZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J5dGVzUGVyU2FtcGxlLCByZWNvcmRf
Y2hhbm5lbHMoKSwKQEAgLTg5Myw3ICs4OTMsNyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBT
dGFydFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogCiAgIEVYUEVDVF9FUSgwLCBhdWRpb19k
ZXZpY2UoKS0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UmVjb3JkaW5n
KCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOwor
ICB0ZXN0X2lzX2RvbmVfLldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOwogICBTdG9w
UmVjb3JkaW5nKCk7CiB9CiAKQEAgLTkwMSw3ICs5MDEsNyBAQCBURVNUX0YoQXVkaW9EZXZpY2VU
ZXN0LCBTdGFydFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogLy8gYWN0aXZlIGluIGJvdGgg
ZGlyZWN0aW9ucy4KIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UGxheW91dEFuZFJlY29y
ZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogICBNb2NrQXVkaW9UcmFuc3BvcnRBbmRyb2lkIG1vY2so
a1BsYXlvdXQgfCBrUmVjb3JkaW5nKTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19k
b25lXy5nZXQoKSwgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2FsbGJh
Y2tzKCZ0ZXN0X2lzX2RvbmVfLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKICAgRVhQRUNUX0NB
TEwobW9jaywgTmVlZE1vcmVQbGF5RGF0YShwbGF5b3V0X2ZyYW1lc19wZXJfMTBtc19idWZmZXIo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQnl0ZXNQZXJTYW1wbGUs
IHBsYXlvdXRfY2hhbm5lbHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwbGF5b3V0X3NhbXBsZV9yYXRlKCksIE5vdE51bGwoKSwgXywgXywgXykpCkBAIC05MTQsNyAr
OTE0LDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0QW5kUmVjb3JkaW5n
VmVyaWZ5Q2FsbGJhY2tzKSB7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+UmVnaXN0
ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UGxheW91dCgpOwogICBTdGFydFJlY29y
ZGluZygpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRz
KTsKKyAgdGVzdF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAg
U3RvcFJlY29yZGluZygpOwogICBTdG9wUGxheW91dCgpOwogfQpAQCAtOTMwLDEyICs5MzAsMTEg
QEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgUnVuUGxheW91dFdpdGhGaWxlQXNTb3VyY2UpIHsK
ICAgc3RkOjpzdHJpbmcgZmlsZV9uYW1lID0gR2V0RmlsZU5hbWUocGxheW91dF9zYW1wbGVfcmF0
ZSgpKTsKICAgc3RkOjp1bmlxdWVfcHRyPEZpbGVBdWRpb1N0cmVhbT4gZmlsZV9hdWRpb19zdHJl
YW0oCiAgICAgICBuZXcgRmlsZUF1ZGlvU3RyZWFtKG51bV9jYWxsYmFja3MsIGZpbGVfbmFtZSwg
cGxheW91dF9zYW1wbGVfcmF0ZSgpKSk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNf
ZG9uZV8uZ2V0KCksIGZpbGVfYXVkaW9fc3RyZWFtLmdldCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBudW1fY2FsbGJhY2tzKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRlc3RfaXNfZG9u
ZV8sIGZpbGVfYXVkaW9fc3RyZWFtLmdldCgpLCBudW1fY2FsbGJhY2tzKTsKICAgLy8gU2V0TWF4
UGxheW91dFZvbHVtZSgpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVy
QXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25l
Xy0+V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2Fp
dChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BQbGF5b3V0KCk7CiB9CiAKQEAg
LTk2NCwxMyArOTYzLDEzIEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIERJU0FCTEVEX1J1blBs
YXlvdXRBbmRSZWNvcmRpbmdJbkZ1bGxEdXBsZXgpIHsKICAgTmljZU1vY2s8TW9ja0F1ZGlvVHJh
bnNwb3J0QW5kcm9pZD4gbW9jayhrUGxheW91dCB8IGtSZWNvcmRpbmcpOwogICBzdGQ6OnVuaXF1
ZV9wdHI8Rmlmb0F1ZGlvU3RyZWFtPiBmaWZvX2F1ZGlvX3N0cmVhbSgKICAgICAgIG5ldyBGaWZv
QXVkaW9TdHJlYW0ocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpKTsKLSAgbW9jay5I
YW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgZmlmb19hdWRpb19zdHJlYW0uZ2V0
KCksCisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBmaWZvX2F1ZGlvX3N0
cmVhbS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAga0Z1bGxEdXBsZXhUaW1lSW5TZWMg
KiBrTnVtQ2FsbGJhY2tzUGVyU2Vjb25kKTsKICAgU2V0TWF4UGxheW91dFZvbHVtZSgpOwogICBF
WFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykp
OwogICBTdGFydFJlY29yZGluZygpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25l
Xy0+V2FpdCgKKyAgdGVzdF9pc19kb25lXy5XYWl0KAogICAgICAgc3RkOjptYXgoa1Rlc3RUaW1l
T3V0SW5NaWxsaXNlY29uZHMsIDEwMDAgKiBrRnVsbER1cGxleFRpbWVJblNlYykpOwogICBTdG9w
UGxheW91dCgpOwogICBTdG9wUmVjb3JkaW5nKCk7CkBAIC05OTcsMTQgKzk5NiwxNCBAQCBURVNU
X0YoQXVkaW9EZXZpY2VUZXN0LCBESVNBQkxFRF9NZWFzdXJlTG9vcGJhY2tMYXRlbmN5KSB7CiAg
IE5pY2VNb2NrPE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQ+IG1vY2soa1BsYXlvdXQgfCBrUmVj
b3JkaW5nKTsKICAgc3RkOjp1bmlxdWVfcHRyPExhdGVuY3lNZWFzdXJpbmdBdWRpb1N0cmVhbT4g
bGF0ZW5jeV9hdWRpb19zdHJlYW0oCiAgICAgICBuZXcgTGF0ZW5jeU1lYXN1cmluZ0F1ZGlvU3Ry
ZWFtKHBsYXlvdXRfZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKSk7Ci0gIG1vY2suSGFuZGxlQ2Fs
bGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIGxhdGVuY3lfYXVkaW9fc3RyZWFtLmdldCgpLAor
ICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbGF0ZW5jeV9hdWRpb19zdHJl
YW0uZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGtNZWFzdXJlTGF0ZW5jeVRpbWVJblNl
YyAqIGtOdW1DYWxsYmFja3NQZXJTZWNvbmQpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNl
KCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTZXRNYXhQbGF5b3V0Vm9sdW1l
KCk7CiAgIERpc2FibGVCdWlsdEluQUVDSWZBdmFpbGFibGUoKTsKICAgU3RhcnRSZWNvcmRpbmco
KTsKICAgU3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoCisgIHRlc3RfaXNf
ZG9uZV8uV2FpdCgKICAgICAgIHN0ZDo6bWF4KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzLCAx
MDAwICoga01lYXN1cmVMYXRlbmN5VGltZUluU2VjKSk7CiAgIFN0b3BQbGF5b3V0KCk7CiAgIFN0
b3BSZWNvcmRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmNjCmluZGV4IDVjNDU3ODA0MjZiNzhmOTE0YTli
MTk1MTYxNTY4YzQ3ZDgxZDg3YTUuLjhmOTIwY2ZmZjhlYTljMzRhMzY1NTYyYjk2OGFhMGU3Yjdj
NzRmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZp
Y2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5jYwpAQCAtOCwxOSArOCwxNiBAQAogICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICov
CiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8
Y21hdGg+Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfYnVm
ZmVyLmgiCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgogCiAjaW5jbHVk
ZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3Np
bmdfbGlicmFyeS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2Rldmlj
ZV9jb25maWcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvYmluZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRl
L21ldHJpY3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19k
ZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5oCmluZGV4IDdmMGNmODNiYWY3ZDdlYTdkNmU3YmM3
ZGMwMzMxNzM1ZWJiYmUxZTMuLmJiZTI5NjlkNDM2OTc1NThiNjU4NzRlMzUwMWU3ZWRhNjA3OTkw
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9h
dWRpb19kZXZpY2VfYnVmZmVyLmgKQEAgLTExLDkgKzExLDExIEBACiAjaWZuZGVmIE1PRFVMRVNf
QVVESU9fREVWSUNFX0FVRElPX0RFVklDRV9CVUZGRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJ
T19ERVZJQ0VfQVVESU9fREVWSUNFX0JVRkZFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+Cisj
aW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8YXRvbWljPgogCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVk
aW9fZGV2aWNlX2RhdGFfb2JzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfZGF0YV9vYnNl
cnZlci5jYwppbmRleCA3MjNkMWM4YmJkYzc0YzlhOWM2YmQyODU2YTQxMmE5OTgwODE4YjhiLi45
OTRjMmVmZGYzMzIxMGExYmY0NmZmNzJlZDM3NTk2NDg0YjVlMmE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Rldmlj
ZS9hdWRpb19kZXZpY2VfZGF0YV9vYnNlcnZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2Vf
ZGF0YV9vYnNlcnZlci5jYwpAQCAtOSw2ICs5LDggQEAKICAqLwogCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZGF0YV9vYnNlcnZlci5oIgorCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZGVmaW5l
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Jl
ZmNvdW50ZWRvYmplY3QuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2dlbmVy
aWMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9nZW5lcmljLmgKaW5kZXggYmU5YzA3MmM0MTJjZTg0
YjFiYzc0YTQ5MzMwNWQxYjM5ODlhZmIzMC4uN2QzYzgzZTExOTYwM2JiNmViZGU5MjI1YTk4NTcy
NDM1ODdiZGY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2dlbmVyaWMuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2RldmljZS9hdWRpb19kZXZpY2VfZ2VuZXJpYy5oCkBAIC0xMSw4ICsxMSwxMSBAQAogI2lmbmRl
ZiBBVURJT19ERVZJQ0VfQVVESU9fREVWSUNFX0dFTkVSSUNfSF8KICNkZWZpbmUgQVVESU9fREVW
SUNFX0FVRElPX0RFVklDRV9HRU5FUklDX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlX2RlZmluZXMuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9p
bXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2ltcGwuY2MKaW5kZXggOTFkNjIwOGZlMWZkMWU4
ZTg1NDcwYTY4ZWY1MmU5NTkwYTY0MjE5OC4uMzFkNWI1ZWNmYzUxZTlhOGNhNTNiMmMzYWVlODk4
NjU5ODNlMDZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2ltcGwuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19k
ZXZpY2UvYXVkaW9fZGV2aWNlX2ltcGwuY2MKQEAgLTEwLDEyICsxMCwxNCBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2ltcGwuaCIKIAotI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9jb25maWcuaCIKKyNpbmNsdWRlIDxz
dGRkZWYuaD4KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9j
b25maWcuaCIgIC8vIElXWVUgcHJhZ21hOiBrZWVwCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19k
ZXZpY2UvYXVkaW9fZGV2aWNlX2dlbmVyaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcmVm
Y291bnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9tZXRyaWNzLmgiCiAKICNpZiBkZWZpbmVkKF9XSU4zMikKQEAgLTQ3LDEwICs0OSwx
MCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL21hYy9hdWRpb19kZXZpY2VfbWFj
LmgiCiAjZW5kaWYKICNpZiBkZWZpbmVkKFdFQlJUQ19EVU1NWV9GSUxFX0RFVklDRVMpCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0
b3J5LmgiCiAjZW5kaWYKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9hdWRp
b19kZXZpY2VfZHVtbXkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9m
aWxlX2F1ZGlvX2RldmljZS5oIgogCiAjZGVmaW5lIENIRUNLaW5pdGlhbGl6ZWRfKCkgXAogICB7
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2Rldmlj
ZV9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfaW1wbC5oCmluZGV4IDQ4MWNkZjMyZTAwZGNh
NGFjOWY3NjZkZjI1YjBlZGZhMWYxMTg3ZDYuLmFmZTUzYjMyNDAzMjhkOTQxNzY5ODU4ZTM0NTg5
OGNkN2MxMjM4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9pbXBsLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19k
ZXZpY2UvYXVkaW9fZGV2aWNlX2ltcGwuaApAQCAtMTMsMTIgKzEzLDExIEBACiAKICNpZiBkZWZp
bmVkKFdFQlJUQ19JTkNMVURFX0lOVEVSTkFMX0FVRElPX0RFVklDRSkKIAorI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2
aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Rldmlj
ZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2Uv
YXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjCmluZGV4IGE4MmJjNGEzM2JhM2E3ZGJiNDZmYzkxYjMz
YmZlZTdiOTU2NTcxOWQuLjFhYTI4ZTVkN2MxMjMwYTM3MDZhNzk3NmYwYzY4MTkxMTdhOTllMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9h
dWRpb19kZXZpY2VfdW5pdHRlc3QuY2MKQEAgLTUwOSw3ICs1MDksNyBAQCBjbGFzcyBNb2NrQXVk
aW9UcmFuc3BvcnQgOiBwdWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0IHsKIGNsYXNzIEF1
ZGlvRGV2aWNlVGVzdAogICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTx3ZWJy
dGM6OkF1ZGlvRGV2aWNlTW9kdWxlOjpBdWRpb0xheWVyPiB7CiAgcHJvdGVjdGVkOgotICBBdWRp
b0RldmljZVRlc3QoKSA6IGF1ZGlvX2xheWVyXyhHZXRQYXJhbSgpKSwgZXZlbnRfKGZhbHNlLCBm
YWxzZSkgeworICBBdWRpb0RldmljZVRlc3QoKSA6IGF1ZGlvX2xheWVyXyhHZXRQYXJhbSgpKSB7
CiAvLyBUT0RPKHdlYnJ0Yzo5Nzc4KTogUmUtZW5hYmxlIG9uIFRIUkVBRF9TQU5JVElaRVI/CiAj
aWYgIWRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpICYmICFkZWZpbmVkKE1FTU9SWV9TQU5JVEla
RVIpICYmIFwKICAgICAhZGVmaW5lZChXRUJSVENfRFVNTVlfQVVESU9fQlVJTEQpICYmICFkZWZp
bmVkKFRIUkVBRF9TQU5JVElaRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9hdWRpb19kZXZp
Y2VfZHVtbXkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2F1ZGlvX2RldmljZV9kdW1teS5oCmluZGV4IGQ3MDlm
Nzc2OTE5ZmM3ZGMzYTRlZDg5M2M5Y2U1YjZmZGQ3Yzc0NTguLjJhMjU0MTA5OGVhODY4NjlhZWUy
ZGMzMWQ5ZDI5MjFkMWYyZmM4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2F1ZGlvX2Rldmlj
ZV9kdW1teS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2F1ZGlvX2RldmljZV9kdW1teS5oCkBAIC0xMSw5
ICsxMSwxMiBAQAogI2lmbmRlZiBBVURJT19ERVZJQ0VfQVVESU9fREVWSUNFX0RVTU1ZX0hfCiAj
ZGVmaW5lIEFVRElPX0RFVklDRV9BVURJT19ERVZJQ0VfRFVNTVlfSF8KIAotI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Rl
dmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZp
Y2UvYXVkaW9fZGV2aWNlX2dlbmVyaWMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Rldmlj
ZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNl
L2luY2x1ZGUvYXVkaW9fZGV2aWNlX2RlZmluZXMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVt
bXkvZmlsZV9hdWRpb19kZXZpY2UuY2MKaW5kZXggYjlhZWFhMTUwNjVhOTg4NzAwN2NlNWUyMjJm
ZDcxMTI5MjAxZmFmNC4uMjg0OGVlYWUzNTA4OTU3ODliMDFjNjE1MzIzNmRkNjIxM2Q2MmExYiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2Uv
ZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuY2MKQEAgLTksOSArOSwxMyBAQAogICovCiAKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZS5oIgorCisj
aW5jbHVkZSA8c3RyaW5nLmg+CisKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhy
ZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAic3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvc2xlZXAuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9h
dWRpb19kZXZpY2UuaAppbmRleCBmMDc2OTBlN2UwMzM3OTAyMDJiZDkwNGRkYTZkODZmOTcyYmMy
OTJiLi4yMTBjOGY3YjhiZTYwMjZmYjAyMGEzMzJmOWZiNmIxYjA2MzY2MjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVf
YXVkaW9fZGV2aWNlLmgKQEAgLTI2LDcgKzI2LDYgQEAgY2xhc3MgUGxhdGZvcm1UaHJlYWQ7CiB9
ICAvLyBuYW1lc3BhY2UgcnRjCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgRXZlbnRXcmFw
cGVyOwogCiAvLyBUaGlzIGlzIGEgZmFrZSBhdWRpbyBkZXZpY2Ugd2hpY2ggcGxheXMgYXVkaW8g
ZnJvbSBhIGZpbGUgYXMgaXRzIG1pY3JvcGhvbmUKIC8vIGFuZCBwbGF5cyBvdXQgaW50byBhIGZp
bGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0b3J5LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2VfZmFjdG9yeS5jYwppbmRleCA2YjM4ZDhi
YzA1NWFlODUzMGQxZTUyODViYWY3MDVkMjJhYTBiOGZiLi4wMjdiMTNiZjVjNWNlMWJiYjdlZTc2
YmZjMWZhMDE0ZTdmZmFmNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2Rl
dmljZV9mYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlX2ZhY3Rv
cnkuY2MKQEAgLTEwLDggKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNl
L2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlX2ZhY3RvcnkuaCIKIAorI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDxjc3RyaW5nPgogCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2Rl
dmljZV9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0b3J5LmgK
aW5kZXggOWNkNWIzZDYyNTY2ZjZiMmRiMjg3MGFiMzlhMTVmNWM3OGY4MTZmMS4uNzJmNGFiMmIz
ODRlZDk0MDdlMTY3Njg4YzQ0MGY2ZGY4YTE4OWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkv
ZmlsZV9hdWRpb19kZXZpY2VfZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9f
ZGV2aWNlX2ZhY3RvcnkuaApAQCAtMTEsNyArMTEsNyBAQAogI2lmbmRlZiBBVURJT19ERVZJQ0Vf
RklMRV9BVURJT19ERVZJQ0VfRkFDVE9SWV9IXwogI2RlZmluZSBBVURJT19ERVZJQ0VfRklMRV9B
VURJT19ERVZJQ0VfRkFDVE9SWV9IXwogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBO
T0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2ZpbmVfYXVkaW9fYnVmZmVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2Uv
ZmluZV9hdWRpb19idWZmZXIuY2MKaW5kZXggNGFmMzQ0YWVmMzc4NmEzMDAyNzMwNzU4NWI2MTcx
ZTkxNDVkMjM0ZS4uYjRmM2MzNzFhY2UzNjljZGNmZDQ1YmI5MzI2MTY0ODA4MzBiZDQwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19kZXZpY2UvZmluZV9hdWRpb19idWZmZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZmluZV9hdWRp
b19idWZmZXIuY2MKQEAgLTEwLDYgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
ZGV2aWNlL2ZpbmVfYXVkaW9fYnVmZmVyLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1
ZGUgPGNzdHJpbmc+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZp
Y2VfYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2Vf
ZGF0YV9vYnNlcnZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZGF0YV9vYnNlcnZl
ci5oCmluZGV4IDNhNGVlOTk1MThhYTkyNmIxY2MyMTVmMDY5M2IzMzBmYzk3NjFiYjEuLjk1OWNm
YTQ2NjJjNjk2YjkyNmZmZjE3YzY5NDVjMTUzODdiMWUwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2lu
Y2x1ZGUvYXVkaW9fZGV2aWNlX2RhdGFfb2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1
ZGlvX2RldmljZV9kYXRhX29ic2VydmVyLmgKQEAgLTExLDYgKzExLDkgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19ERVZJQ0VfSU5DTFVERV9BVURJT19ERVZJQ0VfREFUQV9PQlNFUlZFUl9IXwog
I2RlZmluZSBNT0RVTEVTX0FVRElPX0RFVklDRV9JTkNMVURFX0FVRElPX0RFVklDRV9EQVRBX09C
U0VSVkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2Uv
aW5jbHVkZS90ZXN0X2F1ZGlvX2RldmljZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvdGVzdF9hdWRpb19k
ZXZpY2UuY2MKaW5kZXggN2Q1NWM0NzUyOWEyOTZmOThkMzhlOWZlZTlhYzA4ODJhMTk0M2M2Yy4u
OGFlYTFkMjQ1ZTIyNmJlMWQ3N2EzNmRmM2JmMzU1MDJlNzE2YzM2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZp
Y2UvaW5jbHVkZS90ZXN0X2F1ZGlvX2RldmljZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL3Rlc3Rf
YXVkaW9fZGV2aWNlLmNjCkBAIC04LDggKzgsMTEgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogI2luY2x1ZGUg
PGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtMjgsNiArMzEsNyBA
QAogI2luY2x1ZGUgInJ0Y19iYXNlL3JhbmRvbS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNv
dW50ZWRvYmplY3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRp
bHMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC01OCw4ICs2Miw2IEBAIGNsYXNzIFRlc3RB
dWRpb0RldmljZU1vZHVsZUltcGwKICAgICAgICAgYXVkaW9fY2FsbGJhY2tfKG51bGxwdHIpLAog
ICAgICAgICByZW5kZXJpbmdfKGZhbHNlKSwKICAgICAgICAgY2FwdHVyaW5nXyhmYWxzZSksCi0g
ICAgICAgIGRvbmVfcmVuZGVyaW5nXyh0cnVlLCB0cnVlKSwKLSAgICAgICAgZG9uZV9jYXB0dXJp
bmdfKHRydWUsIHRydWUpLAogICAgICAgICBzdG9wX3RocmVhZF8oZmFsc2UpIHsKICAgICBhdXRv
IGdvb2Rfc2FtcGxlX3JhdGUgPSBbXShpbnQgc3IpIHsKICAgICAgIHJldHVybiBzciA9PSA4MDAw
IHx8IHNyID09IDE2MDAwIHx8IHNyID09IDMyMDAwIHx8IHNyID09IDQ0MTAwIHx8CkBAIC0xMDgs
MTQgKzExMCwxMiBAQCBjbGFzcyBUZXN0QXVkaW9EZXZpY2VNb2R1bGVJbXBsCiAgICAgcnRjOjpD
cml0U2NvcGUgY3MoJmxvY2tfKTsKICAgICBSVENfQ0hFQ0socmVuZGVyZXJfKTsKICAgICByZW5k
ZXJpbmdfID0gdHJ1ZTsKLSAgICBkb25lX3JlbmRlcmluZ18uUmVzZXQoKTsKICAgICByZXR1cm4g
MDsKICAgfQogCiAgIGludDMyX3QgU3RvcFBsYXlvdXQoKSB7CiAgICAgcnRjOjpDcml0U2NvcGUg
Y3MoJmxvY2tfKTsKICAgICByZW5kZXJpbmdfID0gZmFsc2U7Ci0gICAgZG9uZV9yZW5kZXJpbmdf
LlNldCgpOwogICAgIHJldHVybiAwOwogICB9CiAKQEAgLTEyMywxNCArMTIzLDEyIEBAIGNsYXNz
IFRlc3RBdWRpb0RldmljZU1vZHVsZUltcGwKICAgICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18p
OwogICAgIFJUQ19DSEVDSyhjYXB0dXJlcl8pOwogICAgIGNhcHR1cmluZ18gPSB0cnVlOwotICAg
IGRvbmVfY2FwdHVyaW5nXy5SZXNldCgpOwogICAgIHJldHVybiAwOwogICB9CiAKICAgaW50MzJf
dCBTdG9wUmVjb3JkaW5nKCkgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7CiAgICAg
Y2FwdHVyaW5nXyA9IGZhbHNlOwotICAgIGRvbmVfY2FwdHVyaW5nXy5TZXQoKTsKICAgICByZXR1
cm4gMDsKICAgfQogCkBAIC0xNzIsOSArMTcwLDEwIEBAIGNsYXNzIFRlc3RBdWRpb0RldmljZU1v
ZHVsZUltcGwKICAgICAgICAgICB1aW50MzJfdCBuZXdfbWljX2xldmVsID0gMDsKICAgICAgICAg
ICBpZiAocmVjb3JkaW5nX2J1ZmZlcl8uc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgYXVkaW9f
Y2FsbGJhY2tfLT5SZWNvcmRlZERhdGFJc0F2YWlsYWJsZSgKLSAgICAgICAgICAgICAgICByZWNv
cmRpbmdfYnVmZmVyXy5kYXRhKCksIHJlY29yZGluZ19idWZmZXJfLnNpemUoKSwgMiwKLSAgICAg
ICAgICAgICAgICBjYXB0dXJlcl8tPk51bUNoYW5uZWxzKCksIGNhcHR1cmVyXy0+U2FtcGxpbmdG
cmVxdWVuY3koKSwgMCwgMCwKLSAgICAgICAgICAgICAgICAwLCBmYWxzZSwgbmV3X21pY19sZXZl
bCk7CisgICAgICAgICAgICAgICAgcmVjb3JkaW5nX2J1ZmZlcl8uZGF0YSgpLAorICAgICAgICAg
ICAgICAgIHJlY29yZGluZ19idWZmZXJfLnNpemUoKSAvIGNhcHR1cmVyXy0+TnVtQ2hhbm5lbHMo
KSwKKyAgICAgICAgICAgICAgICAyICogY2FwdHVyZXJfLT5OdW1DaGFubmVscygpLCBjYXB0dXJl
cl8tPk51bUNoYW5uZWxzKCksCisgICAgICAgICAgICAgICAgY2FwdHVyZXJfLT5TYW1wbGluZ0Zy
ZXF1ZW5jeSgpLCAwLCAwLCAwLCBmYWxzZSwgbmV3X21pY19sZXZlbCk7CiAgICAgICAgICAgfQog
ICAgICAgICAgIGlmICgha2VlcF9jYXB0dXJpbmcpIHsKICAgICAgICAgICAgIGNhcHR1cmluZ18g
PSBmYWxzZTsKQEAgLTE4Nyw5ICsxODYsMTAgQEAgY2xhc3MgVGVzdEF1ZGlvRGV2aWNlTW9kdWxl
SW1wbAogICAgICAgICAgIGludDY0X3QgbnRwX3RpbWVfbXMgPSAtMTsKICAgICAgICAgICBjb25z
dCBpbnQgc2FtcGxpbmdfZnJlcXVlbmN5ID0gcmVuZGVyZXJfLT5TYW1wbGluZ0ZyZXF1ZW5jeSgp
OwogICAgICAgICAgIGF1ZGlvX2NhbGxiYWNrXy0+TmVlZE1vcmVQbGF5RGF0YSgKLSAgICAgICAg
ICAgICAgU2FtcGxlc1BlckZyYW1lKHNhbXBsaW5nX2ZyZXF1ZW5jeSksIDIsIHJlbmRlcmVyXy0+
TnVtQ2hhbm5lbHMoKSwKLSAgICAgICAgICAgICAgc2FtcGxpbmdfZnJlcXVlbmN5LCBwbGF5b3V0
X2J1ZmZlcl8uZGF0YSgpLCBzYW1wbGVzX291dCwKLSAgICAgICAgICAgICAgJmVsYXBzZWRfdGlt
ZV9tcywgJm50cF90aW1lX21zKTsKKyAgICAgICAgICAgICAgU2FtcGxlc1BlckZyYW1lKHNhbXBs
aW5nX2ZyZXF1ZW5jeSksIDIgKiByZW5kZXJlcl8tPk51bUNoYW5uZWxzKCksCisgICAgICAgICAg
ICAgIHJlbmRlcmVyXy0+TnVtQ2hhbm5lbHMoKSwgc2FtcGxpbmdfZnJlcXVlbmN5LAorICAgICAg
ICAgICAgICBwbGF5b3V0X2J1ZmZlcl8uZGF0YSgpLCBzYW1wbGVzX291dCwgJmVsYXBzZWRfdGlt
ZV9tcywKKyAgICAgICAgICAgICAgJm50cF90aW1lX21zKTsKICAgICAgICAgICBjb25zdCBib29s
IGtlZXBfcmVuZGVyaW5nID0KICAgICAgICAgICAgICAgcmVuZGVyZXJfLT5SZW5kZXIocnRjOjpB
cnJheVZpZXc8Y29uc3QgaW50MTZfdD4oCiAgICAgICAgICAgICAgICAgICBwbGF5b3V0X2J1ZmZl
cl8uZGF0YSgpLCBzYW1wbGVzX291dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS90ZXN0
X2F1ZGlvX2RldmljZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS90ZXN0X2F1ZGlvX2RldmljZS5oCmluZGV4
IDdkMDM0ZGNlOGM3MGVjZGI2MjljMmM2NTJiOGU2YjIxNGJkYTZhNGEuLjkzZjBiMTM2MDFmYjc5
MGY0MjU0OGI1NDFmM2FkYmQ0MDNlYWJhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvdGVz
dF9hdWRpb19kZXZpY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL3Rlc3RfYXVkaW9fZGV2aWNlLmgK
QEAgLTEwLDE0ICsxMCwxOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0RFVklDRV9JTkNMVURF
X1RFU1RfQVVESU9fREVWSUNFX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fREVWSUNFX0lOQ0xV
REVfVEVTVF9BVURJT19ERVZJQ0VfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVk
ZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlX2RlZmluZXMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRf
cmVmX3B0ci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW9z
L2F1ZGlvX2RldmljZV91bml0dGVzdF9pb3MubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pb3MvYXVkaW9fZGV2aWNlX3Vu
aXR0ZXN0X2lvcy5tbQppbmRleCA0N2I4NzNkNGE5OWI3MWEwZWQ2YjY2MTE2ZTljZWI4OWRkNDNh
MmQyLi4xOWZmOWM5MjMzMjM2YThhZTUwMmFlYjAyNDAxMTkzNThkM2MyYTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2RldmljZS9pb3MvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0X2lvcy5tbQorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pb3Mv
YXVkaW9fZGV2aWNlX3VuaXR0ZXN0X2lvcy5tbQpAQCAtMjIsMTEgKzIyLDExIEBACiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW9zL2F1ZGlvX2RldmljZV9pb3MuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rp
b24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Zv
cm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMu
aCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmgiCiAj
aW5jbHVkZSAidGVzdC9nbW9jay5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRl
ICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgpAQCAtMzcyLDcgKzM3Miw3IEBAIGNsYXNz
IE1vY2tBdWRpb1RyYW5zcG9ydElPUyA6IHB1YmxpYyB0ZXN0OjpNb2NrQXVkaW9UcmFuc3BvcnQg
ewogCiAgIC8vIFNldCBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1vY2sgb2JqZWN0LiBXZSBhcmUg
ZGVsZWdhdGluZyB0byBmYWtlCiAgIC8vIGltcGxlbWVudGF0aW9ucyAob2YgQXVkaW9TdHJlYW1J
bnRlcmZhY2UpIGhlcmUuCi0gIHZvaWQgSGFuZGxlQ2FsbGJhY2tzKEV2ZW50V3JhcHBlciogdGVz
dF9pc19kb25lLAorICB2b2lkIEhhbmRsZUNhbGxiYWNrcyhydGM6OkV2ZW50KiB0ZXN0X2lzX2Rv
bmUsCiAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvU3RyZWFtSW50ZXJmYWNlKiBhdWRpb19z
dHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1fY2FsbGJhY2tzKSB7CiAg
ICAgdGVzdF9pc19kb25lXyA9IHRlc3RfaXNfZG9uZTsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBjbGFz
cyBNb2NrQXVkaW9UcmFuc3BvcnRJT1MgOiBwdWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0
IHsKICAgYm9vbCByZWNfbW9kZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGVfICYga1JlY29yZGluZzsg
fQogCiAgcHJpdmF0ZToKLSAgRXZlbnRXcmFwcGVyKiB0ZXN0X2lzX2RvbmVfOworICBydGM6OkV2
ZW50KiB0ZXN0X2lzX2RvbmVfOwogICBzaXplX3QgbnVtX2NhbGxiYWNrc187CiAgIGludCB0eXBl
XzsKICAgc2l6ZV90IHBsYXlfY291bnRfOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIGNsYXNzIE1vY2tB
dWRpb1RyYW5zcG9ydElPUyA6IHB1YmxpYyB0ZXN0OjpNb2NrQXVkaW9UcmFuc3BvcnQgewogLy8g
QXVkaW9EZXZpY2VUZXN0IHRlc3QgZml4dHVyZS4KIGNsYXNzIEF1ZGlvRGV2aWNlVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDoKLSAgQXVkaW9EZXZpY2VUZXN0KCkg
OiB0ZXN0X2lzX2RvbmVfKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpIHsKKyAgQXVkaW9EZXZpY2VU
ZXN0KCkgewogICAgIG9sZF9zZXZfID0gcnRjOjpMb2dNZXNzYWdlOjpHZXRMb2dUb0RlYnVnKCk7
CiAgICAgLy8gU2V0IHN1aXRhYmxlIGxvZ2dpbmcgbGV2ZWwgaGVyZS4gQ2hhbmdlIHRvIHJ0Yzo6
TFNfSU5GTyBmb3IgbW9yZSB2ZXJib3NlCiAgICAgLy8gb3V0cHV0LiBTZWUgd2VicnRjL3J0Y19i
YXNlL2xvZ2dpbmcuaCBmb3IgY29tcGxldGUgbGlzdCBvZiBvcHRpb25zLgpAQCAtNTcyLDcgKzU3
Miw3IEBAIGNsYXNzIEF1ZGlvRGV2aWNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qgewog
ICAgIEVYUEVDVF9GQUxTRShhdWRpb19kZXZpY2UoKS0+UmVjb3JkaW5nKCkpOwogICB9CiAKLSAg
c3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gdGVzdF9pc19kb25lXzsKKyAgcnRjOjpFdmVu
dCB0ZXN0X2lzX2RvbmVfOwogICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZXZpY2VNb2R1bGU+
IGF1ZGlvX2RldmljZV87CiAgIEF1ZGlvUGFyYW1ldGVycyBwbGF5b3V0X3BhcmFtZXRlcnNfOwog
ICBBdWRpb1BhcmFtZXRlcnMgcmVjb3JkX3BhcmFtZXRlcnNfOwpAQCAtNjYyLDcgKzY2Miw3IEBA
IFRFU1RfRihBdWRpb0RldmljZVRlc3QsIERJU0FCTEVEX1N0YXJ0UGxheW91dE9uVHdvSW5zdGFu
Y2VzKSB7CiAgIC8vIGhhcyBiZWVuIGRvbmUgc3VjY2Vzc2Z1bGx5IGFuZCB0aGF0IHRoZXJlIGlz
IG5vIGNvbmZsaWN0IHdpdGggdGhlIGFscmVhZHkKICAgLy8gcGxheWluZyBmaXJzdCBBRE0uCiAg
IE1vY2tBdWRpb1RyYW5zcG9ydElPUyBtb2NrMihrUGxheW91dCk7Ci0gIG1vY2syLkhhbmRsZUNh
bGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKKyAg
bW9jazIuSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBudWxscHRyLCBrTnVtQ2FsbGJh
Y2tzKTsKICAgRVhQRUNUX0NBTEwoCiAgICAgICBtb2NrMiwgTmVlZE1vcmVQbGF5RGF0YShwbGF5
b3V0X2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSwga0J5dGVzUGVyU2FtcGxlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGxheW91dF9jaGFubmVscygpLCBwbGF5b3V0X3NhbXBsZV9y
YXRlKCksCkBAIC02NzEsNyArNjcxLDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgRElTQUJM
RURfU3RhcnRQbGF5b3V0T25Ud29JbnN0YW5jZXMpIHsKICAgRVhQRUNUX0VRKDAsIHNlY29uZF9h
dWRpb19kZXZpY2UtPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jazIpKTsKICAgRVhQRUNUX0VR
KDAsIHNlY29uZF9hdWRpb19kZXZpY2UtPlN0YXJ0UGxheW91dCgpKTsKICAgRVhQRUNUX1RSVUUo
c2Vjb25kX2F1ZGlvX2RldmljZS0+UGxheWluZygpKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChr
VGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRp
bWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIEVYUEVDVF9FUSgwLCBzZWNvbmRfYXVkaW9fZGV2aWNl
LT5TdG9wUGxheW91dCgpKTsKICAgRVhQRUNUX0ZBTFNFKHNlY29uZF9hdWRpb19kZXZpY2UtPlBs
YXlpbmcoKSk7CiAgIEVYUEVDVF9GQUxTRShzZWNvbmRfYXVkaW9fZGV2aWNlLT5QbGF5b3V0SXNJ
bml0aWFsaXplZCgpKTsKQEAgLTY4MywxNCArNjgzLDE0IEBAIFRFU1RfRihBdWRpb0RldmljZVRl
c3QsIERJU0FCTEVEX1N0YXJ0UGxheW91dE9uVHdvSW5zdGFuY2VzKSB7CiAvLyBhdWRpbyBzYW1w
bGVzIHRvIHBsYXkgb3V0IHVzaW5nIHRoZSBOZWVkTW9yZVBsYXlEYXRhIGNhbGxiYWNrLgogVEVT
VF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0VmVyaWZ5Q2FsbGJhY2tzKSB7CiAgIE1v
Y2tBdWRpb1RyYW5zcG9ydElPUyBtb2NrKGtQbGF5b3V0KTsKLSAgbW9jay5IYW5kbGVDYWxsYmFj
a3ModGVzdF9pc19kb25lXy5nZXQoKSwgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CisgIG1vY2su
SGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsK
ICAgRVhQRUNUX0NBTEwobW9jaywgTmVlZE1vcmVQbGF5RGF0YShwbGF5b3V0X2ZyYW1lc19wZXJf
MTBtc19idWZmZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQnl0
ZXNQZXJTYW1wbGUsIHBsYXlvdXRfY2hhbm5lbHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwbGF5b3V0X3NhbXBsZV9yYXRlKCksIE5vdE51bGwoKSwgXywgXywgXykp
CiAgICAgICAuVGltZXMoQXRMZWFzdChrTnVtQ2FsbGJhY2tzKSk7CiAgIEVYUEVDVF9FUSgwLCBh
dWRpb19kZXZpY2UoKS0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UGxh
eW91dCgpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRz
KTsKKyAgdGVzdF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAg
U3RvcFBsYXlvdXQoKTsKIH0KIApAQCAtNjk4LDcgKzY5OCw3IEBAIFRFU1RfRihBdWRpb0Rldmlj
ZVRlc3QsIFN0YXJ0UGxheW91dFZlcmlmeUNhbGxiYWNrcykgewogLy8gYXVkaW8gc2FtcGxlcyB2
aWEgdGhlIFJlY29yZGVkRGF0YUlzQXZhaWxhYmxlIGNhbGxiYWNrLgogVEVTVF9GKEF1ZGlvRGV2
aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJh
bnNwb3J0SU9TIG1vY2soa1JlY29yZGluZyk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3Rf
aXNfZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNh
bGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVD
VF9DQUxMKG1vY2ssCiAgICAgICAgICAgICAgIFJlY29yZGVkRGF0YUlzQXZhaWxhYmxlKAogICAg
ICAgICAgICAgICAgICAgTm90TnVsbCgpLCByZWNvcmRfZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigp
LCBrQnl0ZXNQZXJTYW1wbGUsCkBAIC03MDgsNyArNzA4LDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNl
VGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKIAogICBFWFBFQ1RfRVEoMCwg
YXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFJl
Y29yZGluZygpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNv
bmRzKTsKKyAgdGVzdF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsK
ICAgU3RvcFJlY29yZGluZygpOwogfQogCkBAIC03MTYsNyArNzE2LDcgQEAgVEVTVF9GKEF1ZGlv
RGV2aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKIC8vIGFjdGl2ZSBp
biBib3RoIGRpcmVjdGlvbnMuCiBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRB
bmRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0SU9TIG1v
Y2soa1BsYXlvdXQgfCBrUmVjb3JkaW5nKTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9p
c19kb25lXy5nZXQoKSwgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2Fs
bGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKICAgRVhQRUNU
X0NBTEwobW9jaywgTmVlZE1vcmVQbGF5RGF0YShwbGF5b3V0X2ZyYW1lc19wZXJfMTBtc19idWZm
ZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQnl0ZXNQZXJTYW1w
bGUsIHBsYXlvdXRfY2hhbm5lbHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwbGF5b3V0X3NhbXBsZV9yYXRlKCksIE5vdE51bGwoKSwgXywgXywgXykpCkBAIC03MzAs
NyArNzMwLDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0QW5kUmVjb3Jk
aW5nVmVyaWZ5Q2FsbGJhY2tzKSB7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+UmVn
aXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UGxheW91dCgpOwogICBTdGFydFJl
Y29yZGluZygpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNv
bmRzKTsKKyAgdGVzdF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsK
ICAgU3RvcFJlY29yZGluZygpOwogICBTdG9wUGxheW91dCgpOwogfQpAQCAtNzQ2LDEyICs3NDYs
MTEgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgUnVuUGxheW91dFdpdGhGaWxlQXNTb3VyY2Up
IHsKICAgc3RkOjpzdHJpbmcgZmlsZV9uYW1lID0gR2V0RmlsZU5hbWUocGxheW91dF9zYW1wbGVf
cmF0ZSgpKTsKICAgc3RkOjp1bmlxdWVfcHRyPEZpbGVBdWRpb1N0cmVhbT4gZmlsZV9hdWRpb19z
dHJlYW0oCiAgICAgICBuZXcgRmlsZUF1ZGlvU3RyZWFtKG51bV9jYWxsYmFja3MsIGZpbGVfbmFt
ZSwgcGxheW91dF9zYW1wbGVfcmF0ZSgpKSk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3Rf
aXNfZG9uZV8uZ2V0KCksIGZpbGVfYXVkaW9fc3RyZWFtLmdldCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICBudW1fY2FsbGJhY2tzKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRlc3RfaXNf
ZG9uZV8sIGZpbGVfYXVkaW9fc3RyZWFtLmdldCgpLCBudW1fY2FsbGJhY2tzKTsKICAgLy8gU2V0
TWF4UGxheW91dFZvbHVtZSgpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lz
dGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19k
b25lXy0+V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8u
V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BQbGF5b3V0KCk7CiB9CiAK
QEAgLTc4MCwxNCArNzc5LDEzIEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFJ1blBsYXlvdXRB
bmRSZWNvcmRpbmdJbkZ1bGxEdXBsZXgpIHsKICAgTmljZU1vY2s8TW9ja0F1ZGlvVHJhbnNwb3J0
SU9TPiBtb2NrKGtQbGF5b3V0IHwga1JlY29yZGluZyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxGaWZv
QXVkaW9TdHJlYW0+IGZpZm9fYXVkaW9fc3RyZWFtKAogICAgICAgbmV3IEZpZm9BdWRpb1N0cmVh
bShwbGF5b3V0X2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSkpOwotICBtb2NrLkhhbmRsZUNhbGxi
YWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBmaWZvX2F1ZGlvX3N0cmVhbS5nZXQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAga0Z1bGxEdXBsZXhUaW1lSW5TZWMgKiBrTnVtQ2FsbGJhY2tzUGVy
U2Vjb25kKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFja3MoCisgICAgICAmdGVzdF9pc19kb25lXywg
Zmlmb19hdWRpb19zdHJlYW0uZ2V0KCksIGtGdWxsRHVwbGV4VGltZUluU2VjICoga051bUNhbGxi
YWNrc1BlclNlY29uZCk7CiAgIC8vIFNldE1heFBsYXlvdXRWb2x1bWUoKTsKICAgRVhQRUNUX0VR
KDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3Rh
cnRSZWNvcmRpbmcoKTsKICAgU3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQo
Ci0gICAgICBzdGQ6Om1heChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcywgMTAwMCAqIGtGdWxs
RHVwbGV4VGltZUluU2VjKSk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChzdGQ6Om1heChrVGVzdFRp
bWVPdXRJbk1pbGxpc2Vjb25kcywgMTAwMCAqIGtGdWxsRHVwbGV4VGltZUluU2VjKSk7CiAgIFN0
b3BQbGF5b3V0KCk7CiAgIFN0b3BSZWNvcmRpbmcoKTsKICAgRVhQRUNUX0xFKGZpZm9fYXVkaW9f
c3RyZWFtLT5hdmVyYWdlX3NpemUoKSwgMTB1KTsKQEAgLTgwOSwxNSArODA3LDE1IEBAIFRFU1Rf
RihBdWRpb0RldmljZVRlc3QsIERJU0FCTEVEX01lYXN1cmVMb29wYmFja0xhdGVuY3kpIHsKICAg
TmljZU1vY2s8TW9ja0F1ZGlvVHJhbnNwb3J0SU9TPiBtb2NrKGtQbGF5b3V0IHwga1JlY29yZGlu
Zyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxMYXRlbmN5TWVhc3VyaW5nQXVkaW9TdHJlYW0+IGxhdGVu
Y3lfYXVkaW9fc3RyZWFtKAogICAgICAgbmV3IExhdGVuY3lNZWFzdXJpbmdBdWRpb1N0cmVhbShw
bGF5b3V0X2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSkpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNr
cyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBsYXRlbmN5X2F1ZGlvX3N0cmVhbS5nZXQoKSwKKyAgbW9j
ay5IYW5kbGVDYWxsYmFja3MoJnRlc3RfaXNfZG9uZV8sCisgICAgICAgICAgICAgICAgICAgICAg
IGxhdGVuY3lfYXVkaW9fc3RyZWFtLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICBrTWVh
c3VyZUxhdGVuY3lUaW1lSW5TZWMgKiBrTnVtQ2FsbGJhY2tzUGVyU2Vjb25kKTsKICAgRVhQRUNU
X0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAg
Ly8gU2V0TWF4UGxheW91dFZvbHVtZSgpOwogICAvLyBEaXNhYmxlQnVpbHRJbkFFQ0lmQXZhaWxh
YmxlKCk7CiAgIFN0YXJ0UmVjb3JkaW5nKCk7CiAgIFN0YXJ0UGxheW91dCgpOwotICB0ZXN0X2lz
X2RvbmVfLT5XYWl0KAotICAgICAgc3RkOjptYXgoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMs
IDEwMDAgKiBrTWVhc3VyZUxhdGVuY3lUaW1lSW5TZWMpKTsKKyAgdGVzdF9pc19kb25lXy5XYWl0
KHN0ZDo6bWF4KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzLCAxMDAwICoga01lYXN1cmVMYXRl
bmN5VGltZUluU2VjKSk7CiAgIFN0b3BQbGF5b3V0KCk7CiAgIFN0b3BSZWNvcmRpbmcoKTsKICAg
Ly8gVmVyaWZ5IHRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIHRyYW5zbWl0dGVkIGltcHVsc2Vz
IGFyZSBkZXRlY3RlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9hbHNh
X2xpbnV4LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19kZXZpY2VfYWxzYV9saW51eC5oCmluZGV4IDNk
MTU1NjViOGRjNDgxNDAwYWMxYTRlMDJlYzYwNzhlOGMxMDk4ODcuLmQ2MGRjYWZkY2VkMTZjYmNh
N2VkMzkyM2YzNDJjZjJjMTNmN2I0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2Rl
dmljZV9hbHNhX2xpbnV4LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX2Fsc2FfbGlu
dXguaApAQCAtMjksNyArMjksNiBAQCB0eXBlZGVmIHdlYnJ0Yzo6YWRtX2xpbnV4X2Fsc2E6OkFs
c2FTeW1ib2xUYWJsZSBXZWJSVENBbHNhU3ltYm9sVGFibGU7CiBXZWJSVENBbHNhU3ltYm9sVGFi
bGUqIEdldEFsc2FTeW1ib2xUYWJsZSgpOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIEV2
ZW50V3JhcHBlcjsKIAogY2xhc3MgQXVkaW9EZXZpY2VMaW51eEFMU0EgOiBwdWJsaWMgQXVkaW9E
ZXZpY2VHZW5lcmljIHsKICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19k
ZXZpY2VfcHVsc2VfbGludXguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19kZXZpY2VfcHVsc2VfbGlu
dXguY2MKaW5kZXggMjE1N2FmMzI4YzZkM2IyMzc0MjBhYWVmNzU5ZDJjZWM4N2ZjYjJjMy4uMzcw
NmQ5MTc2ZWNkODBmZTU0OTY4MzMxM2EwNzFjMDZlYjM4M2I5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2Uv
bGludXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xpbnV4LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlv
X2RldmljZV9wdWxzZV9saW51eC5jYwpAQCAtOCwxMSArOCwxMiBAQAogICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAK
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfY29uZmlnLmgiCisj
aW5jbHVkZSA8c3RyaW5nLmg+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9saW51
eC9hdWRpb19kZXZpY2VfcHVsc2VfbGludXguaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Rl
dmljZS9saW51eC9sYXRlYmluZGluZ3N5bWJvbHRhYmxlX2xpbnV4LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCIKIAogV2ViUlRDUHVsc2VT
eW1ib2xUYWJsZSogR2V0UHVsc2VTeW1ib2xUYWJsZSgpIHsKICAgc3RhdGljIFdlYlJUQ1B1bHNl
U3ltYm9sVGFibGUqIHB1bHNlX3N5bWJvbF90YWJsZSA9CkBAIC0zMSwxMCArMzIsNiBAQCBuYW1l
c3BhY2Ugd2VicnRjIHsKIAogQXVkaW9EZXZpY2VMaW51eFB1bHNlOjpBdWRpb0RldmljZUxpbnV4
UHVsc2UoKQogICAgIDogX3B0ckF1ZGlvQnVmZmVyKE5VTEwpLAotICAgICAgX3RpbWVFdmVudFJl
YygqRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCi0gICAgICBfdGltZUV2ZW50UGxheSgqRXZlbnRX
cmFwcGVyOjpDcmVhdGUoKSksCi0gICAgICBfcmVjU3RhcnRFdmVudCgqRXZlbnRXcmFwcGVyOjpD
cmVhdGUoKSksCi0gICAgICBfcGxheVN0YXJ0RXZlbnQoKkV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkp
LAogICAgICAgX2lucHV0RGV2aWNlSW5kZXgoMCksCiAgICAgICBfb3V0cHV0RGV2aWNlSW5kZXgo
MCksCiAgICAgICBfaW5wdXREZXZpY2VJc1NwZWNpZmllZChmYWxzZSksCkBAIC0xMTEsMTEgKzEw
OCw2IEBAIEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6fkF1ZGlvRGV2aWNlTGludXhQdWxzZSgpIHsK
ICAgICBkZWxldGVbXSBfcmVjRGV2aWNlTmFtZTsKICAgICBfcmVjRGV2aWNlTmFtZSA9IE5VTEw7
CiAgIH0KLQotICBkZWxldGUgJl9yZWNTdGFydEV2ZW50OwotICBkZWxldGUgJl9wbGF5U3RhcnRF
dmVudDsKLSAgZGVsZXRlICZfdGltZUV2ZW50UmVjOwotICBkZWxldGUgJl90aW1lRXZlbnRQbGF5
OwogfQogCiB2b2lkIEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6QXR0YWNoQXVkaW9CdWZmZXIoQXVk
aW9EZXZpY2VCdWZmZXIqIGF1ZGlvQnVmZmVyKSB7CkBAIC0xMDY1LDcgKzEwNTcsNyBAQCBpbnQz
Ml90IEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6U3RhcnRSZWNvcmRpbmcoKSB7CiAKICAgLy8gVGhl
IGF1ZGlvIHRocmVhZCB3aWxsIHNpZ25hbCB3aGVuIHJlY29yZGluZyBoYXMgc3RhcnRlZC4KICAg
X3RpbWVFdmVudFJlYy5TZXQoKTsKLSAgaWYgKGtFdmVudFRpbWVvdXQgPT0gX3JlY1N0YXJ0RXZl
bnQuV2FpdCgxMDAwMCkpIHsKKyAgaWYgKCFfcmVjU3RhcnRFdmVudC5XYWl0KDEwMDAwKSkgewog
ICAgIHsKICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJl9jcml0U2VjdCk7CiAgICAgICBfc3Rh
cnRSZWMgPSBmYWxzZTsKQEAgLTExODAsNyArMTE3Miw3IEBAIGludDMyX3QgQXVkaW9EZXZpY2VM
aW51eFB1bHNlOjpTdGFydFBsYXlvdXQoKSB7CiAKICAgLy8gVGhlIGF1ZGlvIHRocmVhZCB3aWxs
IHNpZ25hbCB3aGVuIHBsYXlvdXQgaGFzIHN0YXJ0ZWQuCiAgIF90aW1lRXZlbnRQbGF5LlNldCgp
OwotICBpZiAoa0V2ZW50VGltZW91dCA9PSBfcGxheVN0YXJ0RXZlbnQuV2FpdCgxMDAwMCkpIHsK
KyAgaWYgKCFfcGxheVN0YXJ0RXZlbnQuV2FpdCgxMDAwMCkpIHsKICAgICB7CiAgICAgICBydGM6
OkNyaXRTY29wZSBsb2NrKCZfY3JpdFNlY3QpOwogICAgICAgX3N0YXJ0UGxheSA9IGZhbHNlOwpA
QCAtMTk5NCwxNCArMTk4Niw4IEBAIGJvb2wgQXVkaW9EZXZpY2VMaW51eFB1bHNlOjpSZWNUaHJl
YWRGdW5jKHZvaWQqIHBUaGlzKSB7CiB9CiAKIGJvb2wgQXVkaW9EZXZpY2VMaW51eFB1bHNlOjpQ
bGF5VGhyZWFkUHJvY2VzcygpIHsKLSAgc3dpdGNoIChfdGltZUV2ZW50UGxheS5XYWl0KDEwMDAp
KSB7Ci0gICAgY2FzZSBrRXZlbnRTaWduYWxlZDoKLSAgICAgIGJyZWFrOwotICAgIGNhc2Uga0V2
ZW50RXJyb3I6Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJFdmVudFdyYXBwZXI6Oldh
aXQoKSBmYWlsZWQiOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBrRXZlbnRUaW1lb3V0
OgotICAgICAgcmV0dXJuIHRydWU7CisgIGlmICghX3RpbWVFdmVudFBsYXkuV2FpdCgxMDAwKSkg
eworICAgIHJldHVybiB0cnVlOwogICB9CiAKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmX2NyaXRT
ZWN0KTsKQEAgLTIxNjgsMTQgKzIxNTQsOCBAQCBib29sIEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6
UGxheVRocmVhZFByb2Nlc3MoKSB7CiB9CiAKIGJvb2wgQXVkaW9EZXZpY2VMaW51eFB1bHNlOjpS
ZWNUaHJlYWRQcm9jZXNzKCkgewotICBzd2l0Y2ggKF90aW1lRXZlbnRSZWMuV2FpdCgxMDAwKSkg
ewotICAgIGNhc2Uga0V2ZW50U2lnbmFsZWQ6Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGtFdmVu
dEVycm9yOgotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRXZlbnRXcmFwcGVyOjpXYWl0
KCkgZmFpbGVkIjsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2Uga0V2ZW50VGltZW91dDoK
LSAgICAgIHJldHVybiB0cnVlOworICBpZiAoIV90aW1lRXZlbnRSZWMuV2FpdCgxMDAwKSkgewor
ICAgIHJldHVybiB0cnVlOwogICB9CiAKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmX2NyaXRTZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9wdWxzZV9saW51eC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19k
ZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xpbnV4LmgKaW5kZXggMTY1NWIxODExN2Zi
MjRlMzE3MzhlYjljYjI0NmE4MmM3MmI2ZDYxMS4uNGRlODdmYzNlNmUzZTRlZDZlMjE1NGVjYzE5
NzIwOWM3NzI4ODA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX3B1bHNl
X2xpbnV4LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xpbnV4LmgKQEAg
LTEzLDEwICsxMywxNiBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9nZW5lcmljLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L3B1bHNlYXVkaW9zeW1ib2x0
YWJsZV9saW51eC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhy
ZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKIAogI2lmIGRlZmluZWQoV0VCUlRDX1VTRV9Y
MTEpCkBAIC0yNCw2ICszMCw4IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHB1bHNlL3B1bHNlYXVk
aW8uaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogLy8gV2Ug
ZGVmaW5lIHRoaXMgZmxhZyBpZiBpdCdzIG1pc3NpbmcgZnJvbSBvdXIgaGVhZGVycywgYmVjYXVz
ZSB3ZSB3YW50IHRvIGJlCiAvLyBhYmxlIHRvIGNvbXBpbGUgYWdhaW5zdCBvbGQgaGVhZGVycyBi
dXQgc3RpbGwgdXNlIFBBX1NUUkVBTV9BREpVU1RfTEFURU5DWQpAQCAtOTYsNyArMTA0LDYgQEAg
dHlwZWRlZiB3ZWJydGM6OmFkbV9saW51eF9wdWxzZTo6UHVsc2VBdWRpb1N5bWJvbFRhYmxlIFdl
YlJUQ1B1bHNlU3ltYm9sVGFibGU7CiBXZWJSVENQdWxzZVN5bWJvbFRhYmxlKiBHZXRQdWxzZVN5
bWJvbFRhYmxlKCk7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgRXZlbnRXcmFwcGVyOwog
CiBjbGFzcyBBdWRpb0RldmljZUxpbnV4UHVsc2UgOiBwdWJsaWMgQXVkaW9EZXZpY2VHZW5lcmlj
IHsKICBwdWJsaWM6CkBAIC0yNTUsMTAgKzI2MiwxMCBAQCBjbGFzcyBBdWRpb0RldmljZUxpbnV4
UHVsc2UgOiBwdWJsaWMgQXVkaW9EZXZpY2VHZW5lcmljIHsKICAgQXVkaW9EZXZpY2VCdWZmZXIq
IF9wdHJBdWRpb0J1ZmZlcjsKIAogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBfY3JpdFNlY3Q7Ci0g
IEV2ZW50V3JhcHBlciYgX3RpbWVFdmVudFJlYzsKLSAgRXZlbnRXcmFwcGVyJiBfdGltZUV2ZW50
UGxheTsKLSAgRXZlbnRXcmFwcGVyJiBfcmVjU3RhcnRFdmVudDsKLSAgRXZlbnRXcmFwcGVyJiBf
cGxheVN0YXJ0RXZlbnQ7CisgIHJ0Yzo6RXZlbnQgX3RpbWVFdmVudFJlYzsKKyAgcnRjOjpFdmVu
dCBfdGltZUV2ZW50UGxheTsKKyAgcnRjOjpFdmVudCBfcmVjU3RhcnRFdmVudDsKKyAgcnRjOjpF
dmVudCBfcGxheVN0YXJ0RXZlbnQ7CiAKICAgLy8gVE9ETyhwYm9zKTogUmVtb3ZlIHVuaXF1ZV9w
dHIgYW5kIHVzZSBkaXJlY3RseSB3aXRob3V0IHJlc2V0dGluZy4KICAgc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6UGxhdGZvcm1UaHJlYWQ+IF9wdHJUaHJlYWRQbGF5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2Uv
bGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1
ZGlvX21peGVyX21hbmFnZXJfcHVsc2VfbGludXguY2MKaW5kZXggNWJhOTIzYmI5MTFjMWQyMjI0
NDllNTFjODA2MGQ3Zjg3NDE4ODg0NC4uMjJlMTA0MDdkZTJmZjEzZjBhYTYzMDY0NjJlNmE0ZTk3
MDI4ZWU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxz
ZV9saW51eC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19taXhlcl9tYW5hZ2VyX3B1bHNlX2xp
bnV4LmNjCkBAIC04LDggKzgsMTIgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19kZXZpY2Vf
cHVsc2VfbGludXguaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRp
b19taXhlcl9tYW5hZ2VyX3B1bHNlX2xpbnV4LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19k
ZXZpY2UvbGludXgvbGF0ZWJpbmRpbmdzeW1ib2x0YWJsZV9saW51eC5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L3B1bHNlYXVkaW9zeW1ib2x0YWJsZV9saW51eC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9s
aW51eC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5oCmlu
ZGV4IGM1NDYwYjYyMzdhZjg3MjI1MjMwN2IyYTdmYzE0ODE4MGZjNjIwM2UuLjY3OWQxYjRiN2My
NmQyMzZlNTIzMDZkOGFkOWQxYWZkODVhZmE5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1
ZGlvX21peGVyX21hbmFnZXJfcHVsc2VfbGludXguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19t
aXhlcl9tYW5hZ2VyX3B1bHNlX2xpbnV4LmgKQEAgLTExLDEzICsxMSwxMSBAQAogI2lmbmRlZiBB
VURJT19ERVZJQ0VfQVVESU9fTUlYRVJfTUFOQUdFUl9QVUxTRV9MSU5VWF9IXwogI2RlZmluZSBB
VURJT19ERVZJQ0VfQVVESU9fTUlYRVJfTUFOQUdFUl9QVUxTRV9MSU5VWF9IXwogCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9wdWxzZWF1ZGlvc3ltYm9sdGFibGVfbGludXgu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgotCiAjaW5jbHVkZSA8cHVs
c2UvcHVsc2VhdWRpby5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogCisjaW5jbHVkZSAicnRjX2Jh
c2UvdGhyZWFkX2NoZWNrZXIuaCIKKwogI2lmbmRlZiBVSU5UMzJfTUFYCiAjZGVmaW5lIFVJTlQz
Ml9NQVggKCh1aW50MzJfdCktMSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjL2F1ZGlv
X2RldmljZV9tYWMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9tYWMvYXVkaW9fZGV2aWNlX21hYy5jYwppbmRleCAwNjNh
Yzg1NzM2ZGRjNGQxMDE1ZjIxODYzNTFmZjAyZDI3OTdmM2ZkLi45ZGFmN2JkZGY3YmY3M2M1OWRl
MjhmZTM1MzU2NGMxYjhmMzM1ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9tYWMvYXVkaW9fZGV2aWNl
X21hYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2RldmljZS9tYWMvYXVkaW9fZGV2aWNlX21hYy5jYwpAQCAtMTYsNyArMTYs
NiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Bs
YXRmb3JtX3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9hcmNoLmgiCi0jaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oIgogCiAjaW5jbHVk
ZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAjaW5jbHVkZSA8
bGlia2Vybi9PU0F0b21pYy5oPiAgLy8gT1NBdG9taWNDb21wYXJlQW5kU3dhcCgpCkBAIC0xMTUs
OCArMTE0LDYgQEAgdm9pZCBBdWRpb0RldmljZU1hYzo6bG9nQ0FNc2coY29uc3QgcnRjOjpMb2dn
aW5nU2V2ZXJpdHkgc2V2LAogCiBBdWRpb0RldmljZU1hYzo6QXVkaW9EZXZpY2VNYWMoKQogICAg
IDogX3B0ckF1ZGlvQnVmZmVyKE5VTEwpLAotICAgICAgX3N0b3BFdmVudFJlYygqRXZlbnRXcmFw
cGVyOjpDcmVhdGUoKSksCi0gICAgICBfc3RvcEV2ZW50KCpFdmVudFdyYXBwZXI6OkNyZWF0ZSgp
KSwKICAgICAgIF9taXhlck1hbmFnZXIoKSwKICAgICAgIF9pbnB1dERldmljZUluZGV4KDApLAog
ICAgICAgX291dHB1dERldmljZUluZGV4KDApLApAQCAtMTUzLDkgKzE1MCw2IEBAIEF1ZGlvRGV2
aWNlTWFjOjpBdWRpb0RldmljZU1hYygpCiAgICAgICBwcmV2X2tleV9zdGF0ZV8oKSB7CiAgIFJU
Q19MT0coTFNfSU5GTykgPDwgX19GVU5DVElPTl9fIDw8ICIgY3JlYXRlZCI7CiAKLSAgUlRDX0RD
SEVDSygmX3N0b3BFdmVudCAhPSBOVUxMKTsKLSAgUlRDX0RDSEVDSygmX3N0b3BFdmVudFJlYyAh
PSBOVUxMKTsKLQogICBtZW1zZXQoX3JlbmRlckNvbnZlcnREYXRhLCAwLCBzaXplb2YoX3JlbmRl
ckNvbnZlcnREYXRhKSk7CiAgIG1lbXNldCgmX291dFN0cmVhbUZvcm1hdCwgMCwgc2l6ZW9mKEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwogICBtZW1zZXQoJl9vdXREZXNpcmVkRm9ybWF0
LCAwLCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CkBAIC0yMDQsOCArMTk4
LDYgQEAgQXVkaW9EZXZpY2VNYWM6On5BdWRpb0RldmljZU1hYygpIHsKICAgICBSVENfTE9HKExT
X0VSUk9SKSA8PCAic2VtYXBob3JlX2Rlc3Ryb3koKSBlcnJvcjogIiA8PCBrZXJuRXJyOwogICB9
CiAKLSAgZGVsZXRlICZfc3RvcEV2ZW50OwotICBkZWxldGUgJl9zdG9wRXZlbnRSZWM7CiB9CiAK
IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTEzMzgsNyArMTMzMCw3IEBAIGludDMyX3QgQXVk
aW9EZXZpY2VNYWM6OlN0b3BSZWNvcmRpbmcoKSB7CiAgICAgICBfcmVjb3JkaW5nID0gZmFsc2U7
CiAgICAgICBfZG9TdG9wUmVjID0gdHJ1ZTsgIC8vIFNpZ25hbCB0byBpbyBwcm9jIHRvIHN0b3Ag
YXVkaW8gZGV2aWNlCiAgICAgICBfY3JpdFNlY3QuTGVhdmUoKTsgIC8vIENhbm5vdCBiZSB1bmRl
ciBsb2NrLCByaXNrIG9mIGRlYWRsb2NrCi0gICAgICBpZiAoa0V2ZW50VGltZW91dCA9PSBfc3Rv
cEV2ZW50UmVjLldhaXQoMjAwMCkpIHsKKyAgICAgIGlmICghX3N0b3BFdmVudFJlYy5XYWl0KDIw
MDApKSB7CiAgICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXRTY29wZWQoJl9jcml0U2VjdCk7CiAg
ICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlRpbWVkIG91dCBzdG9wcGluZyB0aGUgY2Fw
dHVyZSBJT1Byb2MuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJXZSBtYXkgaGF2
ZSBmYWlsZWQgdG8gZGV0ZWN0IGEgZGV2aWNlIHJlbW92YWwuIjsKQEAgLTEzNjYsNyArMTM1OCw3
IEBAIGludDMyX3QgQXVkaW9EZXZpY2VNYWM6OlN0b3BSZWNvcmRpbmcoKSB7CiAgICAgICBfcmVj
b3JkaW5nID0gZmFsc2U7CiAgICAgICBfZG9TdG9wID0gdHJ1ZTsgICAgIC8vIFNpZ25hbCB0byBp
byBwcm9jIHRvIHN0b3AgYXVkaW8gZGV2aWNlCiAgICAgICBfY3JpdFNlY3QuTGVhdmUoKTsgIC8v
IENhbm5vdCBiZSB1bmRlciBsb2NrLCByaXNrIG9mIGRlYWRsb2NrCi0gICAgICBpZiAoa0V2ZW50
VGltZW91dCA9PSBfc3RvcEV2ZW50LldhaXQoMjAwMCkpIHsKKyAgICAgIGlmICghX3N0b3BFdmVu
dC5XYWl0KDIwMDApKSB7CiAgICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXRTY29wZWQoJl9jcml0
U2VjdCk7CiAgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlRpbWVkIG91dCBzdG9wcGlu
ZyB0aGUgc2hhcmVkIElPUHJvYy4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIldl
IG1heSBoYXZlIGZhaWxlZCB0byBkZXRlY3QgYSBkZXZpY2UgcmVtb3ZhbC4iOwpAQCAtMTQ3NCw3
ICsxNDY2LDcgQEAgaW50MzJfdCBBdWRpb0RldmljZU1hYzo6U3RvcFBsYXlvdXQoKSB7CiAgICAg
X3BsYXlpbmcgPSBmYWxzZTsKICAgICBfZG9TdG9wID0gdHJ1ZTsgICAgIC8vIFNpZ25hbCB0byBp
byBwcm9jIHRvIHN0b3AgYXVkaW8gZGV2aWNlCiAgICAgX2NyaXRTZWN0LkxlYXZlKCk7ICAvLyBD
YW5ub3QgYmUgdW5kZXIgbG9jaywgcmlzayBvZiBkZWFkbG9jawotICAgIGlmIChrRXZlbnRUaW1l
b3V0ID09IF9zdG9wRXZlbnQuV2FpdCgyMDAwKSkgeworICAgIGlmICghX3N0b3BFdmVudC5XYWl0
KDIwMDApKSB7CiAgICAgICBydGM6OkNyaXRTY29wZSBjcml0U2NvcGVkKCZfY3JpdFNlY3QpOwog
ICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVGltZWQgb3V0IHN0b3BwaW5nIHRoZSByZW5k
ZXIgSU9Qcm9jLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIldlIG1heSBoYXZlIGZh
aWxlZCB0byBkZXRlY3QgYSBkZXZpY2UgcmVtb3ZhbC4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFj
L2F1ZGlvX2RldmljZV9tYWMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL21hYy9hdWRpb19kZXZpY2VfbWFjLmgKaW5kZXgg
NWNiZGFlMjgzNzFhMjkzMGUwNzM1YTc0MjNkNDViNjZlYTRjYzEzNS4uNWE3MDc2MDY1MzM0Y2Y3
NTRkNzU2YTA0ZWI4MTcwZWE2YmM4ODM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjL2F1ZGlvX2Rl
dmljZV9tYWMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9tYWMvYXVkaW9fZGV2aWNlX21hYy5oCkBAIC0xNiw5ICsx
Niw5IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2dlbmVy
aWMuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9tYWMvYXVkaW9fbWl4ZXJfbWFu
YWdlcl9tYWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNp
bmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKLSNpbmNsdWRlICJzeXN0ZW1f
d3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmgiCiAKICNpbmNsdWRlIDxBdWRpb1Rvb2xi
b3gvQXVkaW9Db252ZXJ0ZXIuaD4KICNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvLmg+CkBA
IC0zMSw3ICszMSw2IEBAIGNsYXNzIFBsYXRmb3JtVGhyZWFkOwogfSAgLy8gbmFtZXNwYWNlIHJ0
YwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIEV2ZW50V3JhcHBlcjsKIAogY29uc3QgdWlu
dDMyX3QgTl9SRUNfU0FNUExFU19QRVJfU0VDID0gNDgwMDA7CiBjb25zdCB1aW50MzJfdCBOX1BM
QVlfU0FNUExFU19QRVJfU0VDID0gNDgwMDA7CkBAIC0yNTIsOCArMjUxLDggQEAgY2xhc3MgQXVk
aW9EZXZpY2VNYWMgOiBwdWJsaWMgQXVkaW9EZXZpY2VHZW5lcmljIHsKIAogICBydGM6OkNyaXRp
Y2FsU2VjdGlvbiBfY3JpdFNlY3Q7CiAKLSAgRXZlbnRXcmFwcGVyJiBfc3RvcEV2ZW50UmVjOwot
ICBFdmVudFdyYXBwZXImIF9zdG9wRXZlbnQ7CisgIHJ0Yzo6RXZlbnQgX3N0b3BFdmVudFJlYzsK
KyAgcnRjOjpFdmVudCBfc3RvcEV2ZW50OwogCiAgIC8vIFRPRE8ocGJvcyk6IFJlcGxhY2Ugd2l0
aCBkaXJlY3QgbWVtYmVycywganVzdCBzdGFydC9zdG9wLCBubyBuZWVkIHRvCiAgIC8vIHJlY3Jl
YXRlIHRoZSB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL0JVSUxELmduIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9CVUlMRC5n
bgppbmRleCAwYmIzYWUxMzdhZWVkZGRmZDk5Yzc0MGYxMTNmMDliMGE0NTFjOWYyLi5mOTM1ZTgz
YzViYTIzZjllZmVkYWU1NTQyMjEzYjc2NDZiOGI1ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL0JVSUxE
LmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fbWl4ZXIvQlVJTEQuZ24KQEAgLTM3LDcgKzM3LDYgQEAgcnRjX3N0YXRpY19saWJy
YXJ5KCJhdWRpb19taXhlcl9pbXBsIikgewogCiAgIGRlcHMgPSBbCiAgICAgIjphdWRpb19mcmFt
ZV9tYW5pcHVsYXRvciIsCi0gICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9h
cGk6YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uL2FwaS9hdWRpbzphdWRpb19mcmFtZV9hcGkiLAog
ICAgICIuLi8uLi9hcGkvYXVkaW86YXVkaW9fbWl4ZXJfYXBpIiwKQEAgLTQ4LDYgKzQ3LDcgQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19taXhlcl9pbXBsIikgewogICAgICIuLi8uLi9zeXN0
ZW1fd3JhcHBlcnMiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAg
Ii4uL2F1ZGlvX3Byb2Nlc3NpbmciLAorICAgICIuLi9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAg
ICAgIi4uL2F1ZGlvX3Byb2Nlc3Npbmc6YXBtX2xvZ2dpbmciLAogICAgICIuLi9hdWRpb19wcm9j
ZXNzaW5nOmF1ZGlvX2ZyYW1lX3ZpZXciLAogICAgICIuLi9hdWRpb19wcm9jZXNzaW5nL2FnYzI6
Zml4ZWRfZGlnaXRhbCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVyX2ltcGwuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4
ZXIvYXVkaW9fbWl4ZXJfaW1wbC5oCmluZGV4IGU4OTk0YTY3NGJjNjA1ZDg1NjQ5NzM4NmUxZGY0
ZDU4YWQ4NDAxNGIuLjhlZGQzYjhiZGM0ZDNlNGI2MDAzNjE3NWE4NDVhZWVlNjY4OTA3MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fbWl4ZXIvYXVkaW9fbWl4ZXJfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvYXVkaW9fbWl4ZXJf
aW1wbC5oCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX21peGVy
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19taXhlci9mcmFtZV9jb21iaW5lci5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fbWl4ZXIvb3V0cHV0X3JhdGVfY2FsY3VsYXRvci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Jh
Y2VfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2F1
ZGlvX21peGVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVyX3Rlc3QuY2MKaW5kZXggMjAwNGFl
ZWY0NjNhYjBhYjkwMjEzMGY3MzI0MDZiOTljMGVjZGM3Yi4uYjYwNzg3NzU1ZDgzNmUwMjgyZDBi
YWQ0ZDE3M2Y1Zjc4NTI4MTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9hdWRpb19taXhlcl90ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fbWl4ZXIvYXVkaW9fbWl4ZXJfdGVzdC5jYwpAQCAtMTksMjQgKzE5LDI1IEBACiAjaW5j
bHVkZSAicnRjX2Jhc2UvZmxhZ3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmlu
Z19idWlsZGVyLmgiCiAKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVz
c2FnZSIpOwotREVGSU5FX2ludChzYW1wbGluZ19yYXRlLAotICAgICAgICAgICAxNjAwMCwKLSAg
ICAgICAgICAgIlJhdGUgYXQgd2hpY2ggdG8gbWl4IChhbGwgaW5wdXQgc3RyZWFtcyBtdXN0IGhh
dmUgdGhpcyByYXRlKSIpOworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRz
IHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgc2FtcGxpbmdfcmF0ZSwK
KyAgICAxNjAwMCwKKyAgICAiUmF0ZSBhdCB3aGljaCB0byBtaXggKGFsbCBpbnB1dCBzdHJlYW1z
IG11c3QgaGF2ZSB0aGlzIHJhdGUpIik7CiAKLURFRklORV9ib29sKAorV0VCUlRDX0RFRklORV9i
b29sKAogICAgIHN0ZXJlbywKICAgICBmYWxzZSwKICAgICAiRW5hYmxlIHN0ZXJlbyAoaW50ZXJs
ZWF2ZWQpLiBJbnB1dHMgbmVlZCBub3QgYmUgYXMgdGhpcyBwYXJhbWV0ZXIuIik7CiAKLURFRklO
RV9ib29sKGxpbWl0ZXIsIHRydWUsICJFbmFibGUgbGltaXRlci4iKTsKLURFRklORV9zdHJpbmco
b3V0cHV0X2ZpbGUsCi0gICAgICAgICAgICAgICJtaXhlZF9maWxlLndhdiIsCi0gICAgICAgICAg
ICAgICJGaWxlIGluIHdoaWNoIHRvIHN0b3JlIHRoZSBtaXhlZCByZXN1bHQuIik7Ci1ERUZJTkVf
c3RyaW5nKGlucHV0X2ZpbGVfMSwgIiIsICJGaXJzdCBpbnB1dC4gRGVmYXVsdCBub25lLiIpOwot
REVGSU5FX3N0cmluZyhpbnB1dF9maWxlXzIsICIiLCAiU2Vjb25kIGlucHV0LiBEZWZhdWx0IG5v
bmUuIik7Ci1ERUZJTkVfc3RyaW5nKGlucHV0X2ZpbGVfMywgIiIsICJUaGlyZCBpbnB1dC4gRGVm
YXVsdCBub25lLiIpOwotREVGSU5FX3N0cmluZyhpbnB1dF9maWxlXzQsICIiLCAiRm91cnRoIGlu
cHV0LiBEZWZhdWx0IG5vbmUuIik7CitXRUJSVENfREVGSU5FX2Jvb2wobGltaXRlciwgdHJ1ZSwg
IkVuYWJsZSBsaW1pdGVyLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob3V0cHV0X2ZpbGUsCisg
ICAgICAgICAgICAgICAgICAgICAibWl4ZWRfZmlsZS53YXYiLAorICAgICAgICAgICAgICAgICAg
ICAgIkZpbGUgaW4gd2hpY2ggdG8gc3RvcmUgdGhlIG1peGVkIHJlc3VsdC4iKTsKK1dFQlJUQ19E
RUZJTkVfc3RyaW5nKGlucHV0X2ZpbGVfMSwgIiIsICJGaXJzdCBpbnB1dC4gRGVmYXVsdCBub25l
LiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoaW5wdXRfZmlsZV8yLCAiIiwgIlNlY29uZCBpbnB1
dC4gRGVmYXVsdCBub25lLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoaW5wdXRfZmlsZV8zLCAi
IiwgIlRoaXJkIGlucHV0LiBEZWZhdWx0IG5vbmUuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhp
bnB1dF9maWxlXzQsICIiLCAiRm91cnRoIGlucHV0LiBEZWZhdWx0IG5vbmUuIik7CiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9mcmFtZV9j
b21iaW5lci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fbWl4ZXIvZnJhbWVfY29tYmluZXIuY2MKaW5kZXggY2ZmMjI4MmUzM2ZlNjk4
MjQxZGE5YWEzYjIwNGMyOTkxMjhlZDJmYi4uZDM0OTNmNWMzZGQ0MzdmZGY0NDMyNjY5NDUxMjY3
ZjdkOGZiY2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9mcmFtZV9jb21iaW5lci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVy
L2ZyYW1lX2NvbWJpbmVyLmNjCkBAIC05MiwxMCArOTIsMTAgQEAgc3RkOjphcnJheTxPbmVDaGFu
bmVsQnVmZmVyLCBrTWF4aW11bUFtb3VudE9mQ2hhbm5lbHM+IE1peFRvRmxvYXRGcmFtZSgKICAg
cmV0dXJuIG1peGluZ19idWZmZXI7CiB9CiAKLXZvaWQgUnVuTGltaXRlcihBdWRpb0ZyYW1lVmll
dzxmbG9hdD4gbWl4aW5nX2J1ZmZlcl92aWV3LAotICAgICAgICAgICAgICAgIEZpeGVkR2FpbkNv
bnRyb2xsZXIqIGxpbWl0ZXIpIHsKK3ZvaWQgUnVuTGltaXRlcihBdWRpb0ZyYW1lVmlldzxmbG9h
dD4gbWl4aW5nX2J1ZmZlcl92aWV3LCBMaW1pdGVyKiBsaW1pdGVyKSB7CiAgIGNvbnN0IHNpemVf
dCBzYW1wbGVfcmF0ZSA9IG1peGluZ19idWZmZXJfdmlldy5zYW1wbGVzX3Blcl9jaGFubmVsKCkg
KiAxMDAwIC8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9NaXhlckltcGw6OmtG
cmFtZUR1cmF0aW9uSW5NczsKKyAgLy8gVE9ETyhhbGVzc2lvYik6IEF2b2lkIGNhbGxpbmcgU2V0
U2FtcGxlUmF0ZSBldmVyeSB0aW1lLgogICBsaW1pdGVyLT5TZXRTYW1wbGVSYXRlKHNhbXBsZV9y
YXRlKTsKICAgbGltaXRlci0+UHJvY2VzcyhtaXhpbmdfYnVmZmVyX3ZpZXcpOwogfQpAQCAtMTE3
LDEwICsxMTcsOCBAQCB2b2lkIEludGVybGVhdmVUb0F1ZGlvRnJhbWUoQXVkaW9GcmFtZVZpZXc8
Y29uc3QgZmxvYXQ+IG1peGluZ19idWZmZXJfdmlldywKIAogRnJhbWVDb21iaW5lcjo6RnJhbWVD
b21iaW5lcihib29sIHVzZV9saW1pdGVyKQogICAgIDogZGF0YV9kdW1wZXJfKG5ldyBBcG1EYXRh
RHVtcGVyKDApKSwKLSAgICAgIGxpbWl0ZXJfKGRhdGFfZHVtcGVyXy5nZXQoKSwgIkF1ZGlvTWl4
ZXIiKSwKLSAgICAgIHVzZV9saW1pdGVyXyh1c2VfbGltaXRlcikgewotICBsaW1pdGVyXy5TZXRH
YWluKDAuZik7Ci19CisgICAgICBsaW1pdGVyXyhzdGF0aWNfY2FzdDxzaXplX3Q+KDQ4MDAwKSwg
ZGF0YV9kdW1wZXJfLmdldCgpLCAiQXVkaW9NaXhlciIpLAorICAgICAgdXNlX2xpbWl0ZXJfKHVz
ZV9saW1pdGVyKSB7fQogCiBGcmFtZUNvbWJpbmVyOjp+RnJhbWVDb21iaW5lcigpID0gZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19taXhlci9mcmFtZV9jb21iaW5lci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9mcmFtZV9jb21i
aW5lci5oCmluZGV4IDcwYWMwMjc3NTg5OTA3MGE0MGM3NTI3MTBmNTdmMDY2ZjFkNzM1YTUuLjFj
MWNkNTNlZmYzMTE1ZWUxMmVjMTg2ZmVmZWIwMzdmZGMwNTRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIv
ZnJhbWVfY29tYmluZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2ZyYW1lX2NvbWJpbmVyLmgKQEAgLTE1LDExICsx
NSwxMCBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19m
cmFtZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2dh
aW5fY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L2xpbWl0ZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBBcG1EYXRhRHVtcGVyOwot
Y2xhc3MgRml4ZWRHYWluQ29udHJvbGxlcjsKIAogY2xhc3MgRnJhbWVDb21iaW5lciB7CiAgcHVi
bGljOgpAQCAtNDUsNyArNDQsNyBAQCBjbGFzcyBGcmFtZUNvbWJpbmVyIHsKICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbnVtYmVyX29mX3N0cmVhbXMpIGNvbnN0OwogCiAgIHN0ZDo6dW5p
cXVlX3B0cjxBcG1EYXRhRHVtcGVyPiBkYXRhX2R1bXBlcl87Ci0gIEZpeGVkR2FpbkNvbnRyb2xs
ZXIgbGltaXRlcl87CisgIExpbWl0ZXIgbGltaXRlcl87CiAgIGNvbnN0IGJvb2wgdXNlX2xpbWl0
ZXJfOwogICBtdXRhYmxlIGludCB1bWFfbG9nZ2luZ19jb3VudGVyXyA9IDA7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL0JVSUxELmduCmluZGV4IDYxYjRk
NDk1ZWQyZjkxNjE4MjNjYzdjNTNlMzhhZDVkMzE0NjhlYTEuLjY2YjA3ZGYxOTllNjdkYWNmOTI0
NTc0MmJlZGEzMGQxNDQyOTc4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9CVUlMRC5nbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvQlVJTEQuZ24KQEAgLTI2LDYgKzI2LDQxIEBAIGNvbmZpZygiYXBtX2RlYnVn
X2R1bXAiKSB7CiAgIH0KIH0KIAorcnRjX3N0YXRpY19saWJyYXJ5KCJjb25maWciKSB7CisgIHZp
c2liaWxpdHkgPSBbICI6KiIgXQorICBzb3VyY2VzID0gWworICAgICJpbmNsdWRlL2NvbmZpZy5j
YyIsCisgICAgImluY2x1ZGUvY29uZmlnLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uLy4u
L3J0Y19iYXNlOm1hY3JvbWFnaWMiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4
cG9ydCIsCisgIF0KK30KKworcnRjX3NvdXJjZV9zZXQoImFwaSIpIHsKKyAgdmlzaWJpbGl0eSA9
IFsgIioiIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmNj
IiwKKyAgICAiaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiLAorICBdCisgIGRlcHMgPSBbCisg
ICAgIjphdWRpb19mcmFtZV92aWV3IiwKKyAgICAiOmF1ZGlvX2dlbmVyYXRvcl9pbnRlcmZhY2Ui
LAorICAgICI6YXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzIiwKKyAgICAiOmNvbmZpZyIsCisg
ICAgIjpnYWluX2NvbnRyb2xfaW50ZXJmYWNlIiwKKyAgICAiLi4vLi4vYXBpL2F1ZGlvOmFlYzNf
Y29uZmlnIiwKKyAgICAiLi4vLi4vYXBpL2F1ZGlvOmVjaG9fY29udHJvbCIsCisgICAgIi4uLy4u
L3J0Y19iYXNlOmRlcHJlY2F0aW9uIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6bWFjcm9tYWdpYyIs
CisgICAgIi4uLy4uL3J0Y19iYXNlOnB0cl91dGlsIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6cnRj
X2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAg
XQorfQorCiBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX3Byb2Nlc3NpbmciKSB7CiAgIHZpc2li
aWxpdHkgPSBbICIqIiBdCiAgIGNvbmZpZ3MgKz0gWyAiOmFwbV9kZWJ1Z19kdW1wIiBdCkBAIC01
NSwxMCArOTAsNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX3Byb2Nlc3NpbmciKSB7CiAg
ICAgImdhaW5fY29udHJvbGxlcjIuaCIsCiAgICAgImluY2x1ZGUvYWVjX2R1bXAuY2MiLAogICAg
ICJpbmNsdWRlL2FlY19kdW1wLmgiLAotICAgICJpbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuY2Mi
LAotICAgICJpbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIsCi0gICAgImluY2x1ZGUvY29uZmln
LmNjIiwKLSAgICAiaW5jbHVkZS9jb25maWcuaCIsCiAgICAgImxldmVsX2VzdGltYXRvcl9pbXBs
LmNjIiwKICAgICAibGV2ZWxfZXN0aW1hdG9yX2ltcGwuaCIsCiAgICAgImxvd19jdXRfZmlsdGVy
LmNjIiwKQEAgLTk1LDExICsxMjYsMTMgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19wcm9j
ZXNzaW5nIikgewogCiAgIGRlZmluZXMgPSBbXQogICBkZXBzID0gWworICAgICI6YXBpIiwKICAg
ICAiOmFwbV9sb2dnaW5nIiwKICAgICAiOmF1ZGlvX2ZyYW1lX3ZpZXciLAogICAgICI6YXVkaW9f
Z2VuZXJhdG9yX2ludGVyZmFjZSIsCiAgICAgIjphdWRpb19wcm9jZXNzaW5nX2MiLAogICAgICI6
YXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzIiwKKyAgICAiOmNvbmZpZyIsCiAgICAgIjpnYWlu
X2NvbnRyb2xfaW50ZXJmYWNlIiwKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4u
Ly4uL2FwaTphcnJheV92aWV3IiwKQEAgLTExNSw2ICsxNDgsNyBAQCBydGNfc3RhdGljX2xpYnJh
cnkoImF1ZGlvX3Byb2Nlc3NpbmciKSB7CiAgICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4
IiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6c2FuaXRpemVyIiwKICAgICAiLi4vLi4vcnRjX2Jhc2Uv
c3lzdGVtOmFyY2giLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAg
ICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpjcHVfZmVhdHVyZXNfYXBpIiwKICAgICAiLi4vLi4v
c3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJz
Om1ldHJpY3MiLApAQCAtMTYyLDYgKzE5Niw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhdWRpb19wcm9j
ZXNzaW5nX3N0YXRpc3RpY3MiKSB7CiAgICAgImluY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZ19zdGF0
aXN0aWNzLmgiLAogICBdCiAgIGRlcHMgPSBbCisgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTpy
dGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0
aW9uYWwiLAogICBdCiB9CkBAIC0yOTQsNiArMzI5LDcgQEAgcnRjX3NvdXJjZV9zZXQoImFwbV9s
b2dnaW5nIikgewogICBkZXBzID0gWwogICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAg
Ii4uLy4uL2NvbW1vbl9hdWRpbzpjb21tb25fYXVkaW8iLAorICAgICIuLi8uLi9ydGNfYmFzZTpj
aGVja3MiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4u
Ly4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKICAgXQpAQCAtMzA3LDYgKzM0Myw3IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgImluY2x1ZGUvbW9ja19hdWRpb19wcm9jZXNzaW5n
LmgiLAogICAgIF0KICAgICBkZXBzID0gWworICAgICAgIjphcGkiLAogICAgICAgIjphdWRpb19w
cm9jZXNzaW5nIiwKICAgICAgICI6YXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzIiwKICAgICAg
ICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCkBAIC0zNTgsMTAgKzM5NSwxMiBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKIAogICAgIGRlcHMgPSBbCiAgICAgICAiOmFuYWxvZ19taWNfc2lt
dWxhdGlvbiIsCisgICAgICAiOmFwaSIsCiAgICAgICAiOmFwbV9sb2dnaW5nIiwKICAgICAgICI6
YXVkaW9fZnJhbWVfdmlldyIsCiAgICAgICAiOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgIjph
dWRpb3Byb2NfdGVzdF91dGlscyIsCisgICAgICAiOmNvbmZpZyIsCiAgICAgICAiOmZpbGVfYXVk
aW9fZ2VuZXJhdG9yX3VuaXR0ZXN0cyIsCiAgICAgICAiOm1vY2tzIiwKICAgICAgICIuLi8uLjp3
ZWJydGNfY29tbW9uIiwKQEAgLTM3NSw2ICs0MTQsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMp
IHsKICAgICAgICIuLi8uLi9ydGNfYmFzZTpwcm90b2J1Zl91dGlscyIsCiAgICAgICAiLi4vLi4v
cnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKKyAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAg
ICAiLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlL3N5
c3RlbTphcmNoIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06ZmlsZV93cmFwcGVyIiwK
QEAgLTM5MSw2ICs0MzEsOCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJhZ2My
OmJpcXVhZF9maWx0ZXJfdW5pdHRlc3RzIiwKICAgICAgICJhZ2MyOmZpeGVkX2RpZ2l0YWxfdW5p
dHRlc3RzIiwKICAgICAgICJhZ2MyOm5vaXNlX2VzdGltYXRvcl91bml0dGVzdHMiLAorICAgICAg
ImFnYzI6cm5uX3ZhZF93aXRoX2xldmVsX3VuaXR0ZXN0cyIsCisgICAgICAiYWdjMjp0ZXN0X3V0
aWxzIiwKICAgICAgICJhZ2MyL3Jubl92YWQ6dW5pdHRlc3RzIiwKICAgICAgICJ0ZXN0L2NvbnZl
cnNhdGlvbmFsX3NwZWVjaDp1bml0dGVzdCIsCiAgICAgICAidXRpbGl0eTpibG9ja19tZWFuX2Nh
bGN1bGF0b3JfdW5pdHRlc3QiLApAQCAtNDE4LDcgKzQ2MCw2IEBAIGlmIChydGNfaW5jbHVkZV90
ZXN0cykgewogICAgICAgICAiOmF1ZGlvcHJvY191bml0dGVzdF9wcm90byIsCiAgICAgICAgICI6
cnVudGltZV9zZXR0aW5nc19wcm90b2J1Zl91dGlscyIsCiAgICAgICAgICIuLi8uLi9hcGkvYXVk
aW86YXVkaW9fZnJhbWVfYXBpIiwKLSAgICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rl
c3RzX3V0aWxzIiwKICAgICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKICAg
ICAgICAgImFlY19kdW1wIiwKICAgICAgICAgImFlY19kdW1wOmFlY19kdW1wX3VuaXR0ZXN0cyIs
CkBAIC00ODIsNiArNTIzLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgXQogCiAg
ICAgZGVwcyA9IFsKKyAgICAgICI6YXBpIiwKICAgICAgICI6YXVkaW9fZ2VuZXJhdG9yX2ZhY3Rv
cnkiLAogICAgICAgIjphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICI6ZmlsZV9hdWRpb19nZW5l
cmF0b3IiLApAQCAtNTEyLDYgKzU1NCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICBp
ZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgIHJ0Y19zb3VyY2Vfc2V0KCJhdWRpb3Byb2Nf
Zl9pbXBsIikgewogICAgICAgdGVzdG9ubHkgPSB0cnVlCisgICAgICBjb25maWdzICs9IFsgIjph
cG1fZGVidWdfZHVtcCIgXQogICAgICAgc291cmNlcyA9IFsKICAgICAgICAgInRlc3QvYWVjX2R1
bXBfYmFzZWRfc2ltdWxhdG9yLmNjIiwKICAgICAgICAgInRlc3QvYWVjX2R1bXBfYmFzZWRfc2lt
dWxhdG9yLmgiLApAQCAtNTI1LDExICs1NjgsMTQgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7
CiAKICAgICAgIGRlcHMgPSBbCiAgICAgICAgICI6YW5hbG9nX21pY19zaW11bGF0aW9uIiwKKyAg
ICAgICAgIjphcGkiLAorICAgICAgICAiOmFwbV9sb2dnaW5nIiwKICAgICAgICAgIjphdWRpb19w
cm9jZXNzaW5nIiwKICAgICAgICAgIjphdWRpb3Byb2NfZGVidWdfcHJvdG8iLAogICAgICAgICAi
OmF1ZGlvcHJvY19wcm90b2J1Zl91dGlscyIsCiAgICAgICAgICI6YXVkaW9wcm9jX3Rlc3RfdXRp
bHMiLAogICAgICAgICAiOnJ1bnRpbWVfc2V0dGluZ3NfcHJvdG9idWZfdXRpbHMiLAorICAgICAg
ICAiLi4vLi4vYXBpL2F1ZGlvOmFlYzNfY29uZmlnX2pzb24iLAogICAgICAgICAiLi4vLi4vYXBp
L2F1ZGlvOmFlYzNfZmFjdG9yeSIsCiAgICAgICAgICIuLi8uLi9jb21tb25fYXVkaW86Y29tbW9u
X2F1ZGlvIiwKICAgICAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCkBAIC01NDQsNiArNTkw
LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAgICJhZWNfZHVtcDphZWNfZHVt
cF9pbXBsIiwKICAgICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCiAgICAgICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlczpvcHRpb25hbCIsCiAgICAgICBdCiAgICAgfSAgIyBhdWRpb3Byb2NfZl9pbXBs
CkBAIC01NTMsNiArNjAwLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAgICJ0
ZXN0L2F1ZGlvcHJvY19mbG9hdF9tYWluLmNjIiwKICAgICAgIF0KICAgICAgIGRlcHMgPSBbCisg
ICAgICAgICI6YXBpIiwKICAgICAgICAgIjphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICAgIi4u
Ly4uL2FwaTphdWRpb3Byb2NfZl9hcGkiLAogICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jh
c2VfYXBwcm92ZWQiLApAQCAtNTc4LDYgKzYyNiw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykg
ewogICAgIF0KIAogICAgIGRlcHMgPSBbCisgICAgICAiOmFwaSIsCiAgICAgICAiOmF1ZGlvX3By
b2Nlc3NpbmciLAogICAgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAgICIuLi8uLi9h
cGkvYXVkaW86YXVkaW9fZnJhbWVfYXBpIiwKQEAgLTY2Miw2ICs3MTEsNyBAQCBpZiAocnRjX2lu
Y2x1ZGVfdGVzdHMpIHsKICAgICAgIF0KIAogICAgICAgZGVwcyA9IFsKKyAgICAgICAgIjphcGki
LAogICAgICAgICAiOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgICAiOmF1ZGlvcHJvY19kZWJ1
Z19wcm90byIsCiAgICAgICAgICI6YXVkaW9wcm9jX3Byb3RvYnVmX3V0aWxzIiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMvYWVjX2NvcmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19jb3JlLmNj
CmluZGV4IDVhOGNmOGY1OGI2MDFmMWFiMjVlNDk5ZTMyYTdkMWEzN2VhN2I4N2YuLjYyYjhhZDBm
N2MwNzA5ZTVjMzRiN2Y2NDYzODVjMDA3YjlhMDg5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMvYWVjX2NvcmUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfY29yZS5jYwpAQCAtMjEsNiAr
MjEsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgorCiBleHRlcm4gIkMiIHsKICNpbmNsdWRlICJjb21tb25fYXVkaW8vcmluZ19idWZmZXIu
aCIKIH0KQEAgLTI5LDcgKzMwLDYgQEAgZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfY29yZV9vcHRpbWl6ZWRfbWV0aG9kcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L2RlbGF5X2VzdGltYXRv
cl93cmFwcGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2Uvc3lzdGVtL2FyY2guaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9j
cHVfZmVhdHVyZXNfd3JhcHBlci5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRl
L21ldHJpY3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMvYWVjX3Jlc2FtcGxlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMvYWVjX3Jlc2FtcGxlci5jYwppbmRleCAyODUxYzBiNmRkNTc1ZDY5Njhi
NzY2NjlkYjI1ZWU0MjAwNTc3MmY2Li4yMTBjMmJlYmUwZTIxMTNhZDBlODA4ZDI0ZjIzYjliYzgw
ODYwOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19yZXNhbXBsZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYy9hZWNfcmVzYW1wbGVyLmNjCkBAIC0xNCw3ICsxNCw2IEBACiAKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19yZXNhbXBsZXIuaCIKIAotI2lu
Y2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfcmVzYW1wbGVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjL2FlY19yZXNhbXBsZXIuaAppbmRleCAxMzBmN2VjN2M3NjY0N2QxY2U4MzZmYzIzMmE0MTc3
NmZlZWFlZGViLi5hMTEyYzQzNGQwYmM5MWJhMWE5ZDU2ZWJmMWFlMzFiMzYxOGYwZmViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19yZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
L2FlY19yZXNhbXBsZXIuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfQUVDX0FFQ19SRVNBTVBMRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19Q
Uk9DRVNTSU5HX0FFQ19BRUNfUkVTQU1QTEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMvYWVjX2NvcmUuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9CVUlMRC5nbiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL0JVSUxELmduCmluZGV4IGU2MzE3MzJhNDUzOWFiMTM2MmYxNWI5OThiZDVj
MTFjZWY4MjczMmMuLjE4OWJjZmQ3MTI1NTMzOWJjN2RiZjc3ZjBmMzcwY2ViYjMxZjRlNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL0JV
SUxELmduCkBAIC0yMCwxNiArMjAsMjEgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhZWMzIikgewog
ICAgICJhZWMzX2ZmdC5oIiwKICAgICAiYWVjX3N0YXRlLmNjIiwKICAgICAiYWVjX3N0YXRlLmgi
LAorICAgICJhcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5jYyIsCisgICAgImFwaV9jYWxsX2ppdHRl
cl9tZXRyaWNzLmgiLAogICAgICJibG9ja19kZWxheV9idWZmZXIuY2MiLAogICAgICJibG9ja19k
ZWxheV9idWZmZXIuaCIsCiAgICAgImJsb2NrX2ZyYW1lci5jYyIsCiAgICAgImJsb2NrX2ZyYW1l
ci5oIiwKICAgICAiYmxvY2tfcHJvY2Vzc29yLmNjIiwKICAgICAiYmxvY2tfcHJvY2Vzc29yLmgi
LAorICAgICJibG9ja19wcm9jZXNzb3IyLmNjIiwKICAgICAiYmxvY2tfcHJvY2Vzc29yX21ldHJp
Y3MuY2MiLAogICAgICJibG9ja19wcm9jZXNzb3JfbWV0cmljcy5oIiwKICAgICAiY2FzY2FkZWRf
YmlxdWFkX2ZpbHRlci5jYyIsCiAgICAgImNhc2NhZGVkX2JpcXVhZF9maWx0ZXIuaCIsCisgICAg
ImNsb2NrZHJpZnRfZGV0ZWN0b3IuY2MiLAorICAgICJjbG9ja2RyaWZ0X2RldGVjdG9yLmgiLAog
ICAgICJjb21mb3J0X25vaXNlX2dlbmVyYXRvci5jYyIsCiAgICAgImNvbWZvcnRfbm9pc2VfZ2Vu
ZXJhdG9yLmgiLAogICAgICJkZWNpbWF0b3IuY2MiLApAQCAtNzYsMTAgKzgxLDE0IEBAIHJ0Y19z
dGF0aWNfbGlicmFyeSgiYWVjMyIpIHsKICAgICAicmVuZGVyX2J1ZmZlci5oIiwKICAgICAicmVu
ZGVyX2RlbGF5X2J1ZmZlci5jYyIsCiAgICAgInJlbmRlcl9kZWxheV9idWZmZXIuaCIsCisgICAg
InJlbmRlcl9kZWxheV9idWZmZXIyLmNjIiwKICAgICAicmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIu
Y2MiLAogICAgICJyZW5kZXJfZGVsYXlfY29udHJvbGxlci5oIiwKKyAgICAicmVuZGVyX2RlbGF5
X2NvbnRyb2xsZXIyLmNjIiwKICAgICAicmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljcy5j
YyIsCiAgICAgInJlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3MuaCIsCisgICAgInJlbmRl
cl9yZXZlcmJfbW9kZWwuY2MiLAorICAgICJyZW5kZXJfcmV2ZXJiX21vZGVsLmgiLAogICAgICJy
ZW5kZXJfc2lnbmFsX2FuYWx5emVyLmNjIiwKICAgICAicmVuZGVyX3NpZ25hbF9hbmFseXplci5o
IiwKICAgICAicmVzaWR1YWxfZWNob19lc3RpbWF0b3IuY2MiLApAQCAtOTYsNiArMTA1LDggQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJhZWMzIikgewogICAgICJyZXZlcmJfbW9kZWxfZmFsbGJhY2su
aCIsCiAgICAgInNoYWRvd19maWx0ZXJfdXBkYXRlX2dhaW4uY2MiLAogICAgICJzaGFkb3dfZmls
dGVyX3VwZGF0ZV9nYWluLmgiLAorICAgICJzaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9y
LmNjIiwKKyAgICAic2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvci5oIiwKICAgICAic2tl
d19lc3RpbWF0b3IuY2MiLAogICAgICJza2V3X2VzdGltYXRvci5oIiwKICAgICAic3RhdGlvbmFy
aXR5X2VzdGltYXRvci5jYyIsCkBAIC0xODMsMTEgKzE5NCwxMyBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICAgICAgImFkYXB0aXZlX2Zpcl9maWx0ZXJfdW5pdHRlc3QuY2MiLAogICAg
ICAgICAiYWVjM19mZnRfdW5pdHRlc3QuY2MiLAogICAgICAgICAiYWVjX3N0YXRlX3VuaXR0ZXN0
LmNjIiwKKyAgICAgICAgImFwaV9jYWxsX2ppdHRlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjIiwKICAg
ICAgICAgImJsb2NrX2RlbGF5X2J1ZmZlcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJibG9ja19m
cmFtZXJfdW5pdHRlc3QuY2MiLAogICAgICAgICAiYmxvY2tfcHJvY2Vzc29yX21ldHJpY3NfdW5p
dHRlc3QuY2MiLAogICAgICAgICAiYmxvY2tfcHJvY2Vzc29yX3VuaXR0ZXN0LmNjIiwKICAgICAg
ICAgImNhc2NhZGVkX2JpcXVhZF9maWx0ZXJfdW5pdHRlc3QuY2MiLAorICAgICAgICAiY2xvY2tk
cmlmdF9kZXRlY3Rvcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJjb21mb3J0X25vaXNlX2dlbmVy
YXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJkZWNpbWF0b3JfdW5pdHRlc3QuY2MiLAogICAg
ICAgICAiZWNob19jYW5jZWxsZXIzX3VuaXR0ZXN0LmNjIiwKQEAgLTIxMSw2ICsyMjQsNyBAQCBp
ZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICAgInJlc2lkdWFsX2VjaG9fZXN0aW1hdG9y
X3VuaXR0ZXN0LmNjIiwKICAgICAgICAgInJldmVyYl9tb2RlbF9lc3RpbWF0b3JfdW5pdHRlc3Qu
Y2MiLAogICAgICAgICAic2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbl91bml0dGVzdC5jYyIsCisg
ICAgICAgICJzaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIiwKICAg
ICAgICAgInNrZXdfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgInN1YnRyYWN0b3Jf
dW5pdHRlc3QuY2MiLAogICAgICAgICAic3VwcHJlc3Npb25fZmlsdGVyX3VuaXR0ZXN0LmNjIiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0aXZlX2Zpcl9maWx0ZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hZGFwdGl2ZV9maXJfZmlsdGVyLmNjCmluZGV4IDlhMWU4MTFmY2ZlM2NmNTJl
YTliYjk4NjhmOTFmOTI3ZDhkZTc2ODguLjNhYjFlYmNjNGI5ZGViY2Q5MTllYWFiYjJkYjNmZDA4
YzNhM2Q5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0aXZlX2Zpcl9maWx0ZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWRhcHRpdmVfZmlyX2ZpbHRlci5jYwpAQCAtMjQsNyAr
MjQsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2Rh
dGEuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTQxNywxMiArNDE3LDIxIEBAIHZvaWQgQXBw
bHlGaWx0ZXJfU1NFMihjb25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCiAKIH0gIC8v
IG5hbWVzcGFjZSBhZWMzCiAKK25hbWVzcGFjZSB7CisKK2Jvb2wgRW5hYmxlUGFydGlhbEZpbHRl
clJlc2V0KCkgeworICByZXR1cm4gIWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMz
UGFydGlhbEZpbHRlclJlc2V0S2lsbFN3aXRjaCIpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKwog
QWRhcHRpdmVGaXJGaWx0ZXI6OkFkYXB0aXZlRmlyRmlsdGVyKHNpemVfdCBtYXhfc2l6ZV9wYXJ0
aXRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbml0
aWFsX3NpemVfcGFydGl0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZV9jaGFuZ2VfZHVyYXRpb25fYmxvY2tzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFlYzNPcHRpbWl6YXRpb24gb3B0aW1pemF0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwbURhdGFEdW1wZXIqIGRhdGFfZHVtcGVy
KQogICAgIDogZGF0YV9kdW1wZXJfKGRhdGFfZHVtcGVyKSwKKyAgICAgIHVzZV9wYXJ0aWFsX2Zp
bHRlcl9yZXNldF8oRW5hYmxlUGFydGlhbEZpbHRlclJlc2V0KCkpLAogICAgICAgZmZ0XygpLAog
ICAgICAgb3B0aW1pemF0aW9uXyhvcHRpbWl6YXRpb24pLAogICAgICAgbWF4X3NpemVfcGFydGl0
aW9uc18obWF4X3NpemVfcGFydGl0aW9ucyksCkBAIC00NTUsMjAgKzQ2NCwyMiBAQCBBZGFwdGl2
ZUZpckZpbHRlcjo6fkFkYXB0aXZlRmlyRmlsdGVyKCkgPSBkZWZhdWx0Owogdm9pZCBBZGFwdGl2
ZUZpckZpbHRlcjo6SGFuZGxlRWNob1BhdGhDaGFuZ2UoKSB7CiAgIHNpemVfdCBjdXJyZW50X2hf
c2l6ZSA9IGhfLnNpemUoKTsKICAgaF8ucmVzaXplKEdldFRpbWVEb21haW5MZW5ndGgobWF4X3Np
emVfcGFydGl0aW9uc18pKTsKLSAgc3RkOjpmaWxsKGhfLmJlZ2luKCksIGhfLmVuZCgpLCAwLmYp
OworICBjb25zdCBzaXplX3QgYmVnaW5fY29lZmZmaWNpZW50ID0KKyAgICAgIHVzZV9wYXJ0aWFs
X2ZpbHRlcl9yZXNldF8gPyBjdXJyZW50X2hfc2l6ZSA6IDA7CisgIHN0ZDo6ZmlsbChoXy5iZWdp
bigpICsgYmVnaW5fY29lZmZmaWNpZW50LCBoXy5lbmQoKSwgMC5mKTsKICAgaF8ucmVzaXplKGN1
cnJlbnRfaF9zaXplKTsKIAogICBzaXplX3QgY3VycmVudF9zaXplX3BhcnRpdGlvbnMgPSBIXy5z
aXplKCk7CiAgIEhfLnJlc2l6ZShtYXhfc2l6ZV9wYXJ0aXRpb25zXyk7Ci0gIGZvciAoYXV0byYg
SF9qIDogSF8pIHsKLSAgICBIX2ouQ2xlYXIoKTsKLSAgfQotICBIXy5yZXNpemUoY3VycmVudF9z
aXplX3BhcnRpdGlvbnMpOwotCiAgIEgyXy5yZXNpemUobWF4X3NpemVfcGFydGl0aW9uc18pOwot
ICBmb3IgKGF1dG8mIEgyX2sgOiBIMl8pIHsKLSAgICBIMl9rLmZpbGwoMC5mKTsKKworICBjb25z
dCBzaXplX3QgYmVnaW5fcGFydGl0aW9uID0KKyAgICAgIHVzZV9wYXJ0aWFsX2ZpbHRlcl9yZXNl
dF8gPyBjdXJyZW50X3NpemVfcGFydGl0aW9ucyA6IDA7CisgIGZvciAoc2l6ZV90IGsgPSBiZWdp
bl9wYXJ0aXRpb247IGsgPCBtYXhfc2l6ZV9wYXJ0aXRpb25zXzsgKytrKSB7CisgICAgSF9ba10u
Q2xlYXIoKTsKKyAgICBIMl9ba10uZmlsbCgwLmYpOwogICB9CisgIEhfLnJlc2l6ZShjdXJyZW50
X3NpemVfcGFydGl0aW9ucyk7CiAgIEgyXy5yZXNpemUoY3VycmVudF9zaXplX3BhcnRpdGlvbnMp
OwogCiAgIGVybF8uZmlsbCgwLmYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWRhcHRp
dmVfZmlyX2ZpbHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWRhcHRpdmVfZmlyX2ZpbHRlci5oCmlu
ZGV4IDVkZmI0NjYwZmEyMWMwMzc1Y2JiYTVlMmM5MTA1NDliZmEwMDc4YjQuLjdjODMyYTZjZDIz
YTQwNWM0NmY4Yjk4NWE1NjE5ZTIzNjA4MGFmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2FkYXB0aXZlX2Zpcl9maWx0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZGFwdGl2ZV9maXJf
ZmlsdGVyLmgKQEAgLTExLDggKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX0FFQzNfQURBUFRJVkVfRklSX0ZJTFRFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfQUVDM19BREFQVElWRV9GSVJfRklMVEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KICNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9y
PgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKQEAgLTE2NCw2ICsxNjQsNyBAQCBjbGFz
cyBBZGFwdGl2ZUZpckZpbHRlciB7CiAgIHZvaWQgVXBkYXRlU2l6ZSgpOwogCiAgIEFwbURhdGFE
dW1wZXIqIGNvbnN0IGRhdGFfZHVtcGVyXzsKKyAgY29uc3QgYm9vbCB1c2VfcGFydGlhbF9maWx0
ZXJfcmVzZXRfOwogICBjb25zdCBBZWMzRmZ0IGZmdF87CiAgIGNvbnN0IEFlYzNPcHRpbWl6YXRp
b24gb3B0aW1pemF0aW9uXzsKICAgY29uc3Qgc2l6ZV90IG1heF9zaXplX3BhcnRpdGlvbnNfOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9hZWMzX2NvbW1vbi5jYwppbmRleCBjMzc0YTM1MTdkNjBlMzdhNzk5MWQ0ZWU5NjRiMTAwZWQ3
MDAxZDY0Li5hZWI4NDhhNTcwMGE2NDgyMGRkY2NkNGYzM2ZmOTMzMDViNTYxZjRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9h
ZWMzX2NvbW1vbi5jYwpAQCAtMTAsMTAgKzEwLDExIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogCi0jaW5jbHVkZSAic3lzdGVtX3dy
YXBwZXJzL2luY2x1ZGUvY3B1X2ZlYXR1cmVzX3dyYXBwZXIuaCIKKyNpbmNsdWRlIDxzdGRpbnQu
aD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5
c3RlbS9hcmNoLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2ZlYXR1
cmVzX3dyYXBwZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2FlYzNfZmZ0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuY2MKaW5kZXgg
ZTI5NDM0ZDMwMDJkZGJmMjE0NDMyOTJiZGZlMTlhNzMyOGZhYjEwYi4uMTgzMjEwMTg1NTI0MjAz
MGFlMGE5YmU2MjVlNmJjZGQxZDYzOWU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVj
M19mZnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuY2MKQEAgLTEyLDYgKzEyLDcg
QEAKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1
ZGUgPGl0ZXJhdG9yPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfZmZ0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2ZmdC5o
CmluZGV4IGI3MDAyMjI1NWQ5NTY0ZDMzMmZkYzJhNDZhOTFhZDkxYWEzZTczNjEuLjZjZDY0OWFm
OGY0Yzk2YTQyMTMzNDM3N2NiYTk1NTZmNDQzMTVlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FlYzNfZmZ0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuaApAQCAtMTcsNiAr
MTcsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29t
bW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2RhdGEu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnQu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvYWVjX3N0YXRlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlLmNjCmluZGV4
IDVlNThhMWMyNzljMDMxYWJmNjI5ZmYzNjA5MzQ4NThlMWUxMzQ4NWIuLmQ1ZjI1NmIxYzEyNTZl
OWZlZjI3NDkwZDUwODBmMjkyZWJiZDhhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Fl
Y19zdGF0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuY2MKQEAgLTExLDcgKzEx
LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUu
aCIKIAogI2luY2x1ZGUgPG1hdGguaD4KLQorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRl
IDxudW1lcmljPgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtMzAsNiArMzAsMjIgQEAgYm9vbCBF
bmFibGVFcmxlUmVzZXRzQXRHYWluQ2hhbmdlcygpIHsKICAgcmV0dXJuICFmaWVsZF90cmlhbDo6
SXNFbmFibGVkKCJXZWJSVEMtQWVjM1Jlc2V0RXJsZUF0R2FpbkNoYW5nZXNLaWxsU3dpdGNoIik7
CiB9CiAKK2Jvb2wgVXNlTGVnYWN5RmlsdGVyUXVhbGl0eVN0YXRlKCkgeworICByZXR1cm4gZmll
bGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNGaWx0ZXJRdWFsaXR5U3RhdGVLaWxsU3dp
dGNoIik7Cit9CisKK2Jvb2wgRW5hYmxlTGVnYWN5U2F0dXJhdGlvbkJlaGF2aW9yKCkgeworICBy
ZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNOZXdTYXR1cmF0aW9uQmVo
YXZpb3JLaWxsU3dpdGNoIik7Cit9CisKK2Jvb2wgVXNlU3VwcHJlc3Npb25HYWluTGltaXRlcigp
IHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzR2FpbkxpbWl0
ZXJEZWFjdGl2YXRpb25LaWxsU3dpdGNoIik7Cit9Citib29sIEVuYWJsZUVybGVVcGRhdGVzRHVy
aW5nUmV2ZXJiKCkgeworICByZXR1cm4gIWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoCisgICAgICAi
V2ViUlRDLUFlYzNFbmFibGVFcmxlVXBkYXRlc0R1cmluZ1JldmVyYktpbGxTd2l0Y2giKTsKK30K
KwogY29uc3RleHByIHNpemVfdCBrQmxvY2tzU2luY2VDb252ZXJnZW5jZWRGaWx0ZXJJbml0ID0g
MTAwMDA7CiBjb25zdGV4cHIgc2l6ZV90IGtCbG9ja3NTaW5jZUNvbnNpc3RlbnRFc3RpbWF0ZUlu
aXQgPSAxMDAwMDsKIApAQCAtNTIsMTggKzY4LDEwIEBAIHZvaWQgQWVjU3RhdGU6OkdldFJlc2lk
dWFsRWNob1NjYWxpbmcoCiB9CiAKIGFic2w6Om9wdGlvbmFsPGZsb2F0PiBBZWNTdGF0ZTo6RXJs
ZVVuY2VydGFpbnR5KCkgY29uc3QgewotICBib29sIGZpbHRlcl9oYXNfaGFkX3RpbWVfdG9fY29u
dmVyZ2U7Ci0gIGlmIChjb25maWdfLmZpbHRlci5jb25zZXJ2YXRpdmVfaW5pdGlhbF9waGFzZSkg
ewotICAgIGZpbHRlcl9oYXNfaGFkX3RpbWVfdG9fY29udmVyZ2UgPQotICAgICAgICBzdHJvbmdf
bm90X3NhdHVyYXRlZF9yZW5kZXJfYmxvY2tzXyA+PSAxLjVmICoga051bUJsb2Nrc1BlclNlY29u
ZDsKLSAgfSBlbHNlIHsKLSAgICBmaWx0ZXJfaGFzX2hhZF90aW1lX3RvX2NvbnZlcmdlID0KLSAg
ICAgICAgc3Ryb25nX25vdF9zYXR1cmF0ZWRfcmVuZGVyX2Jsb2Nrc18gPj0gMC44ZiAqIGtOdW1C
bG9ja3NQZXJTZWNvbmQ7Ci0gIH0KLQotICBpZiAoIWZpbHRlcl9oYXNfaGFkX3RpbWVfdG9fY29u
dmVyZ2UpIHsKKyAgaWYgKFNhdHVyYXRlZEVjaG8oKSAmJiB1c2VfbGVnYWN5X3NhdHVyYXRpb25f
YmVoYXZpb3JfKSB7CiAgICAgcmV0dXJuIDEuZjsKICAgfQorCiAgIHJldHVybiBhYnNsOjpudWxs
b3B0OwogfQogCkBAIC03MSwyMiArNzksMjQgQEAgQWVjU3RhdGU6OkFlY1N0YXRlKGNvbnN0IEVj
aG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpCiAgICAgOiBkYXRhX2R1bXBlcl8oCiAgICAgICAg
ICAgbmV3IEFwbURhdGFEdW1wZXIocnRjOjpBdG9taWNPcHM6OkluY3JlbWVudCgmaW5zdGFuY2Vf
Y291bnRfKSkpLAogICAgICAgY29uZmlnXyhjb25maWcpLAorICAgICAgdXNlX2xlZ2FjeV9zYXR1
cmF0aW9uX2JlaGF2aW9yXyhFbmFibGVMZWdhY3lTYXR1cmF0aW9uQmVoYXZpb3IoKSksCisgICAg
ICBlbmFibGVfZXJsZV9yZXNldHNfYXRfZ2Fpbl9jaGFuZ2VzXyhFbmFibGVFcmxlUmVzZXRzQXRH
YWluQ2hhbmdlcygpKSwKKyAgICAgIGVuYWJsZV9lcmxlX3VwZGF0ZXNfZHVyaW5nX3JldmVyYl8o
RW5hYmxlRXJsZVVwZGF0ZXNEdXJpbmdSZXZlcmIoKSksCisgICAgICB1c2VfbGVnYWN5X2ZpbHRl
cl9xdWFsaXR5XyhVc2VMZWdhY3lGaWx0ZXJRdWFsaXR5U3RhdGUoKSksCisgICAgICB1c2Vfc3Vw
cHJlc3Nvcl9nYWluX2xpbWl0ZXJfKFVzZVN1cHByZXNzaW9uR2FpbkxpbWl0ZXIoKSksCiAgICAg
ICBpbml0aWFsX3N0YXRlXyhjb25maWdfKSwKICAgICAgIGRlbGF5X3N0YXRlXyhjb25maWdfKSwK
ICAgICAgIHRyYW5zcGFyZW50X3N0YXRlXyhjb25maWdfKSwKICAgICAgIGZpbHRlcl9xdWFsaXR5
X3N0YXRlXyhjb25maWdfKSwKLSAgICAgIHNhdHVyYXRpb25fZGV0ZWN0b3JfKGNvbmZpZ18pLAor
ICAgICAgbGVnYWN5X2ZpbHRlcl9xdWFsaXR5X3N0YXRlXyhjb25maWdfKSwKKyAgICAgIGxlZ2Fj
eV9zYXR1cmF0aW9uX2RldGVjdG9yXyhjb25maWdfKSwKICAgICAgIGVybF9lc3RpbWF0b3JfKDIg
KiBrTnVtQmxvY2tzUGVyU2Vjb25kKSwKLSAgICAgIGVybGVfZXN0aW1hdG9yXygyICoga051bUJs
b2Nrc1BlclNlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25maWdfLmVybGUubWluLAot
ICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18uZXJsZS5tYXhfbCwKLSAgICAgICAgICAgICAg
ICAgICAgICBjb25maWdfLmVybGUubWF4X2gpLAorICAgICAgZXJsZV9lc3RpbWF0b3JfKDIgKiBr
TnVtQmxvY2tzUGVyU2Vjb25kLCBjb25maWdfKSwKICAgICAgIHN1cHByZXNzaW9uX2dhaW5fbGlt
aXRlcl8oY29uZmlnXyksCiAgICAgICBmaWx0ZXJfYW5hbHl6ZXJfKGNvbmZpZ18pLAogICAgICAg
ZWNob19hdWRpYmlsaXR5XygKICAgICAgICAgICBjb25maWdfLmVjaG9fYXVkaWJpbGl0eS51c2Vf
c3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdCksCi0gICAgICByZXZlcmJfbW9kZWxfZXN0
aW1hdG9yXyhjb25maWdfKSwKLSAgICAgIGVuYWJsZV9lcmxlX3Jlc2V0c19hdF9nYWluX2NoYW5n
ZXNfKEVuYWJsZUVybGVSZXNldHNBdEdhaW5DaGFuZ2VzKCkpIHt9CisgICAgICByZXZlcmJfbW9k
ZWxfZXN0aW1hdG9yXyhjb25maWdfKSB7fQogCiBBZWNTdGF0ZTo6fkFlY1N0YXRlKCkgPSBkZWZh
dWx0OwogCkBAIC05NywxMyArMTA3LDIxIEBAIHZvaWQgQWVjU3RhdGU6OkhhbmRsZUVjaG9QYXRo
Q2hhbmdlKAogICAgIGNhcHR1cmVfc2lnbmFsX3NhdHVyYXRpb25fID0gZmFsc2U7CiAgICAgc3Ry
b25nX25vdF9zYXR1cmF0ZWRfcmVuZGVyX2Jsb2Nrc18gPSAwOwogICAgIGJsb2Nrc193aXRoX2Fj
dGl2ZV9yZW5kZXJfID0gMDsKLSAgICBzdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXJfLlJlc2V0KCk7
CisgICAgaWYgKHVzZV9zdXBwcmVzc29yX2dhaW5fbGltaXRlcl8pIHsKKyAgICAgIHN1cHByZXNz
aW9uX2dhaW5fbGltaXRlcl8uUmVzZXQoKTsKKyAgICB9CiAgICAgaW5pdGlhbF9zdGF0ZV8uUmVz
ZXQoKTsKICAgICB0cmFuc3BhcmVudF9zdGF0ZV8uUmVzZXQoKTsKLSAgICBzYXR1cmF0aW9uX2Rl
dGVjdG9yXy5SZXNldCgpOworICAgIGlmICh1c2VfbGVnYWN5X3NhdHVyYXRpb25fYmVoYXZpb3Jf
KSB7CisgICAgICBsZWdhY3lfc2F0dXJhdGlvbl9kZXRlY3Rvcl8uUmVzZXQoKTsKKyAgICB9CiAg
ICAgZXJsZV9lc3RpbWF0b3JfLlJlc2V0KHRydWUpOwogICAgIGVybF9lc3RpbWF0b3JfLlJlc2V0
KCk7Ci0gICAgZmlsdGVyX3F1YWxpdHlfc3RhdGVfLlJlc2V0KCk7CisgICAgaWYgKHVzZV9sZWdh
Y3lfZmlsdGVyX3F1YWxpdHlfKSB7CisgICAgICBsZWdhY3lfZmlsdGVyX3F1YWxpdHlfc3RhdGVf
LlJlc2V0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZpbHRlcl9xdWFsaXR5X3N0YXRlXy5SZXNl
dCgpOworICAgIH0KICAgfTsKIAogICAvLyBUT0RPKHBlYWgpOiBSZWZpbmUgdGhlIHJlc2V0IHNj
aGVtZSBhY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2YgZ2FpbiBhbmQKQEAgLTE1NSwzNSArMTczLDU2
IEBAIHZvaWQgQWVjU3RhdGU6OlVwZGF0ZSgKICAgc3Ryb25nX25vdF9zYXR1cmF0ZWRfcmVuZGVy
X2Jsb2Nrc18gKz0KICAgICAgIGFjdGl2ZV9yZW5kZXIgJiYgIVNhdHVyYXRlZENhcHR1cmUoKSA/
IDEgOiAwOwogCi0gIC8vIFVwZGF0ZSB0aGUgbGltaXQgb24gdGhlIGVjaG8gc3VwcHIgZXNzaW9u
IGFmdGVyIGFuIGVjaG8gcGF0aCBjaGFuZ2UgdG8KLSAgLy8gYXZvaWQgYW4gaW5pdGlhbCBlY2hv
IGJ1cnN0LgotICBzdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXJfLlVwZGF0ZShyZW5kZXJfYnVmZmVy
LkdldFJlbmRlckFjdGl2aXR5KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRyYW5zcGFyZW50TW9kZSgpKTsKLSAgaWYgKHN1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyXy5D
b252ZXJnZWRGaWx0ZXIoKSkgewotICAgIHN1cHByZXNzaW9uX2dhaW5fbGltaXRlcl8uRGVhY3Rp
dmF0ZSgpOworICBpZiAodXNlX3N1cHByZXNzb3JfZ2Fpbl9saW1pdGVyXykgeworICAgIC8vIFVw
ZGF0ZSB0aGUgbGltaXQgb24gdGhlIGVjaG8gc3VwcHJlc3Npb24gYWZ0ZXIgYW4gZWNobyBwYXRo
IGNoYW5nZSB0bworICAgIC8vIGF2b2lkIGFuIGluaXRpYWwgZWNobyBidXJzdC4KKyAgICBzdXBw
cmVzc2lvbl9nYWluX2xpbWl0ZXJfLlVwZGF0ZShyZW5kZXJfYnVmZmVyLkdldFJlbmRlckFjdGl2
aXR5KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNwYXJlbnRN
b2RlKCkpOworCisgICAgaWYgKHN1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyXy5Db252ZXJnZWRG
aWx0ZXIoKSkgeworICAgICAgc3VwcHJlc3Npb25fZ2Fpbl9saW1pdGVyXy5EZWFjdGl2YXRlKCk7
CisgICAgfQogICB9CiAKKyAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBY
Ml9yZXZlcmI7CisgIHJlbmRlcl9yZXZlcmJfLkFwcGx5KAorICAgICAgcmVuZGVyX2J1ZmZlci5H
ZXRTcGVjdHJ1bUJ1ZmZlcigpLCBkZWxheV9zdGF0ZV8uRGlyZWN0UGF0aEZpbHRlckRlbGF5KCks
CisgICAgICBjb25maWdfLmVwX3N0cmVuZ3RoLnJldmVyYl9iYXNlZF9vbl9yZW5kZXIgPyBSZXZl
cmJEZWNheSgpIDogMC5mLAorICAgICAgWDJfcmV2ZXJiKTsKKwogICBpZiAoY29uZmlnXy5lY2hv
X2F1ZGliaWxpdHkudXNlX3N0YXRpb25hcnlfcHJvcGVydGllcykgewogICAgIC8vIFVwZGF0ZSB0
aGUgZWNobyBhdWRpYmlsaXR5IGV2YWx1YXRvci4KLSAgICBlY2hvX2F1ZGliaWxpdHlfLlVwZGF0
ZSgKLSAgICAgICAgcmVuZGVyX2J1ZmZlciwgZGVsYXlfc3RhdGVfLkRpcmVjdFBhdGhGaWx0ZXJE
ZWxheSgpLAotICAgICAgICBkZWxheV9zdGF0ZV8uRXh0ZXJuYWxEZWxheVJlcG9ydGVkKCksCi0g
ICAgICAgIGNvbmZpZ18uZXBfc3RyZW5ndGgucmV2ZXJiX2Jhc2VkX29uX3JlbmRlciA/IFJldmVy
YkRlY2F5KCkgOiAwLmYpOworICAgIGVjaG9fYXVkaWJpbGl0eV8uVXBkYXRlKHJlbmRlcl9idWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3JldmVyYl8uR2V0UmV2ZXJi
Q29udHJpYnV0aW9uUG93ZXJTcGVjdHJ1bSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlbGF5X3N0YXRlXy5EaXJlY3RQYXRoRmlsdGVyRGVsYXkoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWxheV9zdGF0ZV8uRXh0ZXJuYWxEZWxheVJlcG9ydGVkKCkpOwogICB9CiAK
ICAgLy8gVXBkYXRlIHRoZSBFUkwgYW5kIEVSTEUgbWVhc3VyZXMuCiAgIGlmIChpbml0aWFsX3N0
YXRlXy5UcmFuc2l0aW9uVHJpZ2dlcmVkKCkpIHsKICAgICBlcmxlX2VzdGltYXRvcl8uUmVzZXQo
ZmFsc2UpOwogICB9CisKICAgY29uc3QgYXV0byYgWDIgPSByZW5kZXJfYnVmZmVyLlNwZWN0cnVt
KGRlbGF5X3N0YXRlXy5EaXJlY3RQYXRoRmlsdGVyRGVsYXkoKSk7Ci0gIGVybGVfZXN0aW1hdG9y
Xy5VcGRhdGUoWDIsIFkyLCBFMl9tYWluLAorICBjb25zdCBhdXRvJiBYMl9pbnB1dF9lcmxlID0K
KyAgICAgIGVuYWJsZV9lcmxlX3VwZGF0ZXNfZHVyaW5nX3JldmVyYl8gPyBYMl9yZXZlcmIgOiBY
MjsKKworICBlcmxlX2VzdGltYXRvcl8uVXBkYXRlKHJlbmRlcl9idWZmZXIsIGFkYXB0aXZlX2Zp
bHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgWDJfaW5w
dXRfZXJsZSwgWTIsIEUyX21haW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHJhY3Rv
cl9vdXRwdXRfYW5hbHl6ZXJfLkNvbnZlcmdlZEZpbHRlcigpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbmZpZ18uZXJsZS5vbnNldF9kZXRlY3Rpb24pOworCiAgIGVybF9lc3RpbWF0b3Jf
LlVwZGF0ZShzdWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl8uQ29udmVyZ2VkRmlsdGVyKCksIFgy
LCBZMik7CiAKICAgLy8gRGV0ZWN0IGFuZCBmbGFnIGVjaG8gc2F0dXJhdGlvbi4KLSAgc2F0dXJh
dGlvbl9kZXRlY3Rvcl8uVXBkYXRlKGFsaWduZWRfcmVuZGVyX2Jsb2NrLCBTYXR1cmF0ZWRDYXB0
dXJlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFY2hvUGF0aEdhaW4oKSk7Cisg
IGlmICh1c2VfbGVnYWN5X3NhdHVyYXRpb25fYmVoYXZpb3JfKSB7CisgICAgbGVnYWN5X3NhdHVy
YXRpb25fZGV0ZWN0b3JfLlVwZGF0ZShhbGlnbmVkX3JlbmRlcl9ibG9jaywgU2F0dXJhdGVkQ2Fw
dHVyZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNob1BhdGhH
YWluKCkpOworICB9IGVsc2UgeworICAgIHNhdHVyYXRpb25fZGV0ZWN0b3JfLlVwZGF0ZShhbGln
bmVkX3JlbmRlcl9ibG9jaywgU2F0dXJhdGVkQ2FwdHVyZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVc2FibGVMaW5lYXJFc3RpbWF0ZSgpLCBzdWJ0cmFjdG9yX291dHB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNob1BhdGhHYWluKCkpOworICB9CiAK
ICAgLy8gVXBkYXRlIHRoZSBkZWNpc2lvbiBvbiB3aGV0aGVyIHRvIHVzZSB0aGUgaW5pdGlhbCBz
dGF0ZSBwYXJhbWV0ZXIgc2V0LgogICBpbml0aWFsX3N0YXRlXy5VcGRhdGUoYWN0aXZlX3JlbmRl
ciwgU2F0dXJhdGVkQ2FwdHVyZSgpKTsKQEAgLTE5NiwxMSArMjM1LDE3IEBAIHZvaWQgQWVjU3Rh
dGU6OlVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVfcmVuZGVyLCBT
YXR1cmF0ZWRDYXB0dXJlKCkpOwogCiAgIC8vIEFuYWx5emUgdGhlIHF1YWxpdHkgb2YgdGhlIGZp
bHRlci4KLSAgZmlsdGVyX3F1YWxpdHlfc3RhdGVfLlVwZGF0ZShzYXR1cmF0aW9uX2RldGVjdG9y
Xy5TYXR1cmF0ZWRFY2hvKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZl
X3JlbmRlciwgU2F0dXJhdGVkQ2FwdHVyZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRyYW5zcGFyZW50TW9kZSgpLCBleHRlcm5hbF9kZWxheSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl8uQ29udmVyZ2VkRmlsdGVy
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHJhY3Rvcl9vdXRwdXRfYW5h
bHl6ZXJfLkRpdmVyZ2VkRmlsdGVyKCkpOworICBpZiAodXNlX2xlZ2FjeV9maWx0ZXJfcXVhbGl0
eV8pIHsKKyAgICBsZWdhY3lfZmlsdGVyX3F1YWxpdHlfc3RhdGVfLlVwZGF0ZSgKKyAgICAgICAg
U2F0dXJhdGVkRWNobygpLCBhY3RpdmVfcmVuZGVyLCBTYXR1cmF0ZWRDYXB0dXJlKCksIFRyYW5z
cGFyZW50TW9kZSgpLAorICAgICAgICBleHRlcm5hbF9kZWxheSwgc3VidHJhY3Rvcl9vdXRwdXRf
YW5hbHl6ZXJfLkNvbnZlcmdlZEZpbHRlcigpLAorICAgICAgICBzdWJ0cmFjdG9yX291dHB1dF9h
bmFseXplcl8uRGl2ZXJnZWRGaWx0ZXIoKSk7CisgIH0gZWxzZSB7CisgICAgZmlsdGVyX3F1YWxp
dHlfc3RhdGVfLlVwZGF0ZShhY3RpdmVfcmVuZGVyLCBUcmFuc3BhcmVudE1vZGUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhdHVyYXRlZENhcHR1cmUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9hbmFseXplcl8uQ29uc2lzdGVudCgpLCBl
eHRlcm5hbF9kZWxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRyYWN0
b3Jfb3V0cHV0X2FuYWx5emVyXy5Db252ZXJnZWRGaWx0ZXIoKSk7CisgIH0KIAogICAvLyBVcGRh
dGUgdGhlIHJldmVyYiBlc3RpbWF0ZS4KICAgY29uc3QgYm9vbCBzdGF0aW9uYXJ5X2Jsb2NrID0K
QEAgLTIyNyw4ICsyNzIsNyBAQCB2b2lkIEFlY1N0YXRlOjpVcGRhdGUoCiAgIGRhdGFfZHVtcGVy
Xy0+RHVtcFJhdygiYWVjM19pbml0aWFsX3N0YXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAg
IGluaXRpYWxfc3RhdGVfLkluaXRpYWxTdGF0ZUFjdGl2ZSgpKTsKICAgZGF0YV9kdW1wZXJfLT5E
dW1wUmF3KCJhZWMzX2NhcHR1cmVfc2F0dXJhdGlvbiIsIFNhdHVyYXRlZENhcHR1cmUoKSk7Ci0g
IGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19lY2hvX3NhdHVyYXRpb24iLAotICAgICAgICAg
ICAgICAgICAgICAgICAgc2F0dXJhdGlvbl9kZXRlY3Rvcl8uU2F0dXJhdGVkRWNobygpKTsKKyAg
ZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJhZWMzX2VjaG9fc2F0dXJhdGlvbiIsIFNhdHVyYXRlZEVj
aG8oKSk7CiAgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19jb252ZXJnZWRfZmlsdGVyIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyXy5Db252
ZXJnZWRGaWx0ZXIoKSk7CiAgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19kaXZlcmdlZF9m
aWx0ZXIiLApAQCAtMzgyLDYgKzQyNiw1MSBAQCB2b2lkIEFlY1N0YXRlOjpUcmFuc3BhcmVudE1v
ZGU6OlVwZGF0ZShpbnQgZmlsdGVyX2RlbGF5X2Jsb2NrcywKIH0KIAogQWVjU3RhdGU6OkZpbHRl
cmluZ1F1YWxpdHlBbmFseXplcjo6RmlsdGVyaW5nUXVhbGl0eUFuYWx5emVyKAorICAgIGNvbnN0
IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpIHt9CisKK3ZvaWQgQWVjU3RhdGU6OkZpbHRl
cmluZ1F1YWxpdHlBbmFseXplcjo6UmVzZXQoKSB7CisgIHVzYWJsZV9saW5lYXJfZXN0aW1hdGVf
ID0gZmFsc2U7CisgIGZpbHRlcl91cGRhdGVfYmxvY2tzX3NpbmNlX3Jlc2V0XyA9IDA7Cit9CisK
K3ZvaWQgQWVjU3RhdGU6OkZpbHRlcmluZ1F1YWxpdHlBbmFseXplcjo6VXBkYXRlKAorICAgIGJv
b2wgYWN0aXZlX3JlbmRlciwKKyAgICBib29sIHRyYW5zcGFyZW50X21vZGUsCisgICAgYm9vbCBz
YXR1cmF0ZWRfY2FwdHVyZSwKKyAgICBib29sIGNvbnNpc3RlbnRfZXN0aW1hdGVfLAorICAgIGNv
bnN0IGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+JiBleHRlcm5hbF9kZWxheSwKKyAgICBi
b29sIGNvbnZlcmdlZF9maWx0ZXIpIHsKKyAgLy8gVXBkYXRlIGJsb2NrcyBjb3VudGVyLgorICBj
b25zdCBib29sIGZpbHRlcl91cGRhdGUgPSBhY3RpdmVfcmVuZGVyICYmICFzYXR1cmF0ZWRfY2Fw
dHVyZTsKKyAgZmlsdGVyX3VwZGF0ZV9ibG9ja3Nfc2luY2VfcmVzZXRfICs9IGZpbHRlcl91cGRh
dGUgPyAxIDogMDsKKyAgZmlsdGVyX3VwZGF0ZV9ibG9ja3Nfc2luY2Vfc3RhcnRfICs9IGZpbHRl
cl91cGRhdGUgPyAxIDogMDsKKworICAvLyBTdG9yZSBjb252ZXJnZW5jZSBmbGFnIHdoZW4gb2Jz
ZXJ2ZWQuCisgIGNvbnZlcmdlbmNlX3NlZW5fID0gY29udmVyZ2VuY2Vfc2Vlbl8gfHwgY29udmVy
Z2VkX2ZpbHRlcjsKKworICAvLyBWZXJpZnkgcmVxdWlyZW1lbnRzIGZvciBhY2hpZXZpbmcgYSBk
ZWNlbnQgZmlsdGVyLiBUaGUgcmVxdWlyZW1lbnRzIGZvcgorICAvLyBmaWx0ZXIgYWRhcHRhdGlv
biBhdCBjYWxsIHN0YXJ0dXAgYXJlIG1vcmUgcmVzdHJpY3RpdmUgdGhhbiBhZnRlciBhbgorICAv
LyBpbi1jYWxsIHJlc2V0LgorICBjb25zdCBib29sIHN1ZmZpY2llbnRfZGF0YV90b19jb252ZXJn
ZV9hdF9zdGFydHVwID0KKyAgICAgIGZpbHRlcl91cGRhdGVfYmxvY2tzX3NpbmNlX3N0YXJ0XyA+
IGtOdW1CbG9ja3NQZXJTZWNvbmQgKiAwLjRmOworICBjb25zdCBib29sIHN1ZmZpY2llbnRfZGF0
YV90b19jb252ZXJnZV9hdF9yZXNldCA9CisgICAgICBzdWZmaWNpZW50X2RhdGFfdG9fY29udmVy
Z2VfYXRfc3RhcnR1cCAmJgorICAgICAgZmlsdGVyX3VwZGF0ZV9ibG9ja3Nfc2luY2VfcmVzZXRf
ID4ga051bUJsb2Nrc1BlclNlY29uZCAqIDAuMmY7CisKKyAgLy8gVGhlIGxpbmVhciBmaWx0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBpdCBoYXMgaGFkIHRpbWUgdG8gY29udmVyZ2UuCisgIHVzYWJsZV9s
aW5lYXJfZXN0aW1hdGVfID0gc3VmZmljaWVudF9kYXRhX3RvX2NvbnZlcmdlX2F0X3N0YXJ0dXAg
JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaWNpZW50X2RhdGFfdG9fY29udmVy
Z2VfYXRfcmVzZXQ7CisKKyAgLy8gVGhlIGxpbmVhciBmaWx0ZXIgY2FuIG9ubHkgYmUgdXNlZCBp
ZiBhbiBleHRlcm5hbCBkZWxheSBvciBjb252ZXJnZW5jZSBoYXZlCisgIC8vIGJlZW4gaWRlbnRp
ZmllZAorICB1c2FibGVfbGluZWFyX2VzdGltYXRlXyA9CisgICAgICB1c2FibGVfbGluZWFyX2Vz
dGltYXRlXyAmJiAoZXh0ZXJuYWxfZGVsYXkgfHwgY29udmVyZ2VuY2Vfc2Vlbl8pOworCisgIC8v
IElmIHRyYW5zcGFyZW50IG1vZGUgaXMgb24sIGRlYWN0aXZhdGUgdXNpZ24gdGhlIGxpbmVhciBm
aWx0ZXIuCisgIHVzYWJsZV9saW5lYXJfZXN0aW1hdGVfID0gdXNhYmxlX2xpbmVhcl9lc3RpbWF0
ZV8gJiYgIXRyYW5zcGFyZW50X21vZGU7Cit9CisKK0FlY1N0YXRlOjpMZWdhY3lGaWx0ZXJpbmdR
dWFsaXR5QW5hbHl6ZXI6OkxlZ2FjeUZpbHRlcmluZ1F1YWxpdHlBbmFseXplcigKICAgICBjb25z
dCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKQogICAgIDogY29uc2VydmF0aXZlX2luaXRp
YWxfcGhhc2VfKGNvbmZpZy5maWx0ZXIuY29uc2VydmF0aXZlX2luaXRpYWxfcGhhc2UpLAogICAg
ICAgcmVxdWlyZWRfYmxvY2tzX2Zvcl9jb252ZXJnZW5jZV8oCkBAIC0zOTAsNyArNDc5LDcgQEAg
QWVjU3RhdGU6OkZpbHRlcmluZ1F1YWxpdHlBbmFseXplcjo6RmlsdGVyaW5nUXVhbGl0eUFuYWx5
emVyKAogICAgICAgICAgIGNvbmZpZy5lY2hvX3JlbW92YWxfY29udHJvbC5saW5lYXJfYW5kX3N0
YWJsZV9lY2hvX3BhdGgpLAogICAgICAgbm9uX2NvbnZlcmdlZF9zZXF1ZW5jZV9zaXplXyhrQmxv
Y2tzU2luY2VDb252ZXJnZW5jZWRGaWx0ZXJJbml0KSB7fQogCi12b2lkIEFlY1N0YXRlOjpGaWx0
ZXJpbmdRdWFsaXR5QW5hbHl6ZXI6OlJlc2V0KCkgewordm9pZCBBZWNTdGF0ZTo6TGVnYWN5Rmls
dGVyaW5nUXVhbGl0eUFuYWx5emVyOjpSZXNldCgpIHsKICAgdXNhYmxlX2xpbmVhcl9lc3RpbWF0
ZV8gPSBmYWxzZTsKICAgc3Ryb25nX25vdF9zYXR1cmF0ZWRfcmVuZGVyX2Jsb2Nrc18gPSAwOwog
ICBpZiAobGluZWFyX2FuZF9zdGFibGVfZWNob19wYXRoXykgewpAQCAtNDAyLDcgKzQ5MSw3IEBA
IHZvaWQgQWVjU3RhdGU6OkZpbHRlcmluZ1F1YWxpdHlBbmFseXplcjo6UmVzZXQoKSB7CiAgIHJl
Y2VudF9jb252ZXJnZW5jZV8gPSB0cnVlOwogfQogCi12b2lkIEFlY1N0YXRlOjpGaWx0ZXJpbmdR
dWFsaXR5QW5hbHl6ZXI6OlVwZGF0ZSgKK3ZvaWQgQWVjU3RhdGU6OkxlZ2FjeUZpbHRlcmluZ1F1
YWxpdHlBbmFseXplcjo6VXBkYXRlKAogICAgIGJvb2wgc2F0dXJhdGVkX2VjaG8sCiAgICAgYm9v
bCBhY3RpdmVfcmVuZGVyLAogICAgIGJvb2wgc2F0dXJhdGVkX2NhcHR1cmUsCkBAIC00NTQsMTgg
KzU0Myw0MSBAQCB2b2lkIEFlY1N0YXRlOjpGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXI6OlVwZGF0
ZSgKICAgfQogfQogCi1BZWNTdGF0ZTo6U2F0dXJhdGlvbkRldGVjdG9yOjpTYXR1cmF0aW9uRGV0
ZWN0b3IoCit2b2lkIEFlY1N0YXRlOjpTYXR1cmF0aW9uRGV0ZWN0b3I6OlVwZGF0ZSgKKyAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4geCwKKyAgICBib29sIHNhdHVyYXRlZF9jYXB0dXJl
LAorICAgIGJvb2wgdXNhYmxlX2xpbmVhcl9lc3RpbWF0ZSwKKyAgICBjb25zdCBTdWJ0cmFjdG9y
T3V0cHV0JiBzdWJ0cmFjdG9yX291dHB1dCwKKyAgICBmbG9hdCBlY2hvX3BhdGhfZ2Fpbikgewor
ICBzYXR1cmF0ZWRfZWNob18gPSBzYXR1cmF0ZWRfY2FwdHVyZTsKKyAgaWYgKHVzYWJsZV9saW5l
YXJfZXN0aW1hdGUpIHsKKyAgICBjb25zdGV4cHIgZmxvYXQga1NhdHVyYXRpb25UaHJlc2hvbGQg
PSAyMDAwMC5mOworICAgIHNhdHVyYXRlZF9lY2hvXyA9CisgICAgICAgIHNhdHVyYXRlZF9lY2hv
XyAmJgorICAgICAgICAoc3VidHJhY3Rvcl9vdXRwdXQuc19tYWluX21heF9hYnMgPiBrU2F0dXJh
dGlvblRocmVzaG9sZCB8fAorICAgICAgICAgc3VidHJhY3Rvcl9vdXRwdXQuc19zaGFkb3dfbWF4
X2FicyA+IGtTYXR1cmF0aW9uVGhyZXNob2xkKTsKKyAgfSBlbHNlIHsKKyAgICBjb25zdCBmbG9h
dCBtYXhfc2FtcGxlID0gZmFicygqc3RkOjptYXhfZWxlbWVudCgKKyAgICAgICAgeC5iZWdpbigp
LCB4LmVuZCgpLCBbXShmbG9hdCBhLCBmbG9hdCBiKSB7IHJldHVybiBhICogYSA8IGIgKiBiOyB9
KSk7CisKKyAgICBjb25zdCBmbG9hdCBrTWFyZ2luID0gMTAuZjsKKyAgICBmbG9hdCBwZWFrX2Vj
aG9fYW1wbGl0dWRlID0gbWF4X3NhbXBsZSAqIGVjaG9fcGF0aF9nYWluICoga01hcmdpbjsKKyAg
ICBzYXR1cmF0ZWRfZWNob18gPSBzYXR1cmF0ZWRfZWNob18gJiYgcGVha19lY2hvX2FtcGxpdHVk
ZSA+IDMyMDAwOworICB9Cit9CisKK0FlY1N0YXRlOjpMZWdhY3lTYXR1cmF0aW9uRGV0ZWN0b3I6
OkxlZ2FjeVNhdHVyYXRpb25EZXRlY3RvcigKICAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZp
ZyYgY29uZmlnKQogICAgIDogZWNob19jYW5fc2F0dXJhdGVfKGNvbmZpZy5lcF9zdHJlbmd0aC5l
Y2hvX2Nhbl9zYXR1cmF0ZSksCiAgICAgICBub3Rfc2F0dXJhdGVkX3NlcXVlbmNlX3NpemVfKDEw
MDApIHt9CiAKLXZvaWQgQWVjU3RhdGU6OlNhdHVyYXRpb25EZXRlY3Rvcjo6UmVzZXQoKSB7Cit2
b2lkIEFlY1N0YXRlOjpMZWdhY3lTYXR1cmF0aW9uRGV0ZWN0b3I6OlJlc2V0KCkgewogICBub3Rf
c2F0dXJhdGVkX3NlcXVlbmNlX3NpemVfID0gMDsKIH0KIAotdm9pZCBBZWNTdGF0ZTo6U2F0dXJh
dGlvbkRldGVjdG9yOjpVcGRhdGUocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhdHVyYXRlZF9jYXB0
dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZWNo
b19wYXRoX2dhaW4pIHsKK3ZvaWQgQWVjU3RhdGU6OkxlZ2FjeVNhdHVyYXRpb25EZXRlY3Rvcjo6
VXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiB4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXR1cmF0ZWRfY2FwdHVyZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGVjaG9f
cGF0aF9nYWluKSB7CiAgIGlmICghZWNob19jYW5fc2F0dXJhdGVfKSB7CiAgICAgc2F0dXJhdGVk
X2VjaG9fID0gZmFsc2U7CiAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YWVjX3N0YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuaAppbmRleCBjYTQ3NjQyOGE1
NGQ4NGFjZDIyNDA2MDg3ZGZiZTIzMmQ2NGI0NWZhLi5jOWQ5Y2YzZjNhMGJkMjhjNGFiNmY2NjIy
NzcyYzc4NThiMjE1N2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuaApAQCAtMTEsOSArMTEsOCBAQAogI2lmbmRl
ZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19BRUNfU1RBVEVfSF8KICNkZWZpbmUgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQUVDX1NUQVRFX0hfCiAKLSNpbmNsdWRlIDxtYXRo
Lmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVk
ZSA8YXJyYXk+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtMjgs
NiArMjcsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybGVf
ZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmls
dGVyX2FuYWx5emVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
cmVuZGVyX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JlbmRlcl9yZXZlcmJfbW9kZWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9yZXZlcmJfbW9kZWxfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXQuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dF9hbmFseXplci5oIgpAQCAt
NDYsMTEgKzQ2LDE3IEBAIGNsYXNzIEFlY1N0YXRlIHsKICAgLy8gUmV0dXJucyB3aGV0aGVyIHRo
ZSBlY2hvIHN1YnRyYWN0b3IgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSByZXNpZHVhbAog
ICAvLyBlY2hvLgogICBib29sIFVzYWJsZUxpbmVhckVzdGltYXRlKCkgY29uc3QgeworICAgIGlm
ICh1c2VfbGVnYWN5X2ZpbHRlcl9xdWFsaXR5XykgeworICAgICAgcmV0dXJuIGxlZ2FjeV9maWx0
ZXJfcXVhbGl0eV9zdGF0ZV8uTGluZWFyRmlsdGVyVXNhYmxlKCk7CisgICAgfQogICAgIHJldHVy
biBmaWx0ZXJfcXVhbGl0eV9zdGF0ZV8uTGluZWFyRmlsdGVyVXNhYmxlKCk7CiAgIH0KIAogICAv
LyBSZXR1cm5zIHdoZXRoZXIgdGhlIGVjaG8gc3VidHJhY3RvciBvdXRwdXQgc2hvdWxkIGJlIHVz
ZWQgYXMgb3V0cHV0LgogICBib29sIFVzZUxpbmVhckZpbHRlck91dHB1dCgpIGNvbnN0IHsKKyAg
ICBpZiAodXNlX2xlZ2FjeV9maWx0ZXJfcXVhbGl0eV8pIHsKKyAgICAgIHJldHVybiBsZWdhY3lf
ZmlsdGVyX3F1YWxpdHlfc3RhdGVfLkxpbmVhckZpbHRlclVzYWJsZSgpOworICAgIH0KICAgICBy
ZXR1cm4gZmlsdGVyX3F1YWxpdHlfc3RhdGVfLkxpbmVhckZpbHRlclVzYWJsZSgpOwogICB9CiAK
QEAgLTk5LDcgKzEwNSwxMSBAQCBjbGFzcyBBZWNTdGF0ZSB7CiAgIGJvb2wgU2F0dXJhdGVkQ2Fw
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIGNhcHR1cmVfc2lnbmFsX3NhdHVyYXRpb25fOyB9CiAKICAg
Ly8gUmV0dXJucyB3aGV0aGVyIHRoZSBlY2hvIHNpZ25hbCBpcyBzYXR1cmF0ZWQuCi0gIGJvb2wg
U2F0dXJhdGVkRWNobygpIGNvbnN0IHsgcmV0dXJuIHNhdHVyYXRpb25fZGV0ZWN0b3JfLlNhdHVy
YXRlZEVjaG8oKTsgfQorICBib29sIFNhdHVyYXRlZEVjaG8oKSBjb25zdCB7CisgICAgcmV0dXJu
IHVzZV9sZWdhY3lfc2F0dXJhdGlvbl9iZWhhdmlvcl8KKyAgICAgICAgICAgICAgID8gbGVnYWN5
X3NhdHVyYXRpb25fZGV0ZWN0b3JfLlNhdHVyYXRlZEVjaG8oKQorICAgICAgICAgICAgICAgOiBz
YXR1cmF0aW9uX2RldGVjdG9yXy5TYXR1cmF0ZWRFY2hvKCk7CisgIH0KIAogICAvLyBVcGRhdGVz
IHRoZSBjYXB0dXJlIHNpZ25hbCBzYXR1cmF0aW9uLgogICB2b2lkIFVwZGF0ZUNhcHR1cmVTYXR1
cmF0aW9uKGJvb2wgY2FwdHVyZV9zaWduYWxfc2F0dXJhdGlvbikgewpAQCAtMTIyLDcgKzEzMiwx
MSBAQCBjbGFzcyBBZWNTdGF0ZSB7CiAKICAgLy8gUmV0dXJucyB0aGUgdXBwZXIgbGltaXQgZm9y
IHRoZSBlY2hvIHN1cHByZXNzaW9uIGdhaW4uCiAgIGZsb2F0IFN1cHByZXNzaW9uR2FpbkxpbWl0
KCkgY29uc3QgewotICAgIHJldHVybiBzdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXJfLkxpbWl0KCk7
CisgICAgaWYgKHVzZV9zdXBwcmVzc29yX2dhaW5fbGltaXRlcl8pIHsKKyAgICAgIHJldHVybiBz
dXBwcmVzc2lvbl9nYWluX2xpbWl0ZXJfLkxpbWl0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJl
dHVybiAxLmY7CisgICAgfQogICB9CiAKICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBzdXBwcmVz
c2lvbiBnYWluIGxpbWl0ZXIgaXMgYWN0aXZlLgpAQCAtMTUzLDEzICsxNjcsMTQgQEAgY2xhc3Mg
QWVjU3RhdGUgewogICB9CiAKICBwcml2YXRlOgotICB2b2lkIFVwZGF0ZVN1cHByZXNzb3JHYWlu
TGltaXQoYm9vbCByZW5kZXJfYWN0aXZpdHkpOwotICBib29sIERldGVjdEVjaG9TYXR1cmF0aW9u
KHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiB4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IGVjaG9fcGF0aF9nYWluKTsKLQogICBzdGF0aWMgaW50IGluc3RhbmNlX2NvdW50
XzsKICAgc3RkOjp1bmlxdWVfcHRyPEFwbURhdGFEdW1wZXI+IGRhdGFfZHVtcGVyXzsKICAgY29u
c3QgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnXzsKKyAgY29uc3QgYm9vbCB1c2VfbGVnYWN5
X3NhdHVyYXRpb25fYmVoYXZpb3JfOworICBjb25zdCBib29sIGVuYWJsZV9lcmxlX3Jlc2V0c19h
dF9nYWluX2NoYW5nZXNfOworICBjb25zdCBib29sIGVuYWJsZV9lcmxlX3VwZGF0ZXNfZHVyaW5n
X3JldmVyYl87CisgIGNvbnN0IGJvb2wgdXNlX2xlZ2FjeV9maWx0ZXJfcXVhbGl0eV87CisgIGNv
bnN0IGJvb2wgdXNlX3N1cHByZXNzb3JfZ2Fpbl9saW1pdGVyXzsKIAogICAvLyBDbGFzcyBmb3Ig
Y29udHJvbGxpbmcgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgaW50aWFsIHN0YXRlLCB3aGljaCBp
biB0dXJuCiAgIC8vIGNvbnRyb2xzIHdoZW4gdGhlIGZpbHRlciBwYXJhbWV0ZXJzIGZvciB0aGUg
aW5pdGlhbCBzdGF0ZSBzaG91bGQgYmUgdXNlZC4KQEAgLTI1NSw3ICsyNzAsMzcgQEAgY2xhc3Mg
QWVjU3RhdGUgewogICAvLyBzdXBwcmVzc29yLgogICBjbGFzcyBGaWx0ZXJpbmdRdWFsaXR5QW5h
bHl6ZXIgewogICAgcHVibGljOgotICAgIGV4cGxpY2l0IEZpbHRlcmluZ1F1YWxpdHlBbmFseXpl
cihjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKTsKKyAgICBGaWx0ZXJpbmdRdWFs
aXR5QW5hbHl6ZXIoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZyk7CisKKyAgICAv
LyBSZXR1cm5zIHdoZXRoZXIgdGhlIHRoZSBsaW5lYXIgZmlsdGVyIGNhbiBiZSB1c2VkIGZvciB0
aGUgZWNobworICAgIC8vIGNhbmNlbGxlciBvdXRwdXQuCisgICAgYm9vbCBMaW5lYXJGaWx0ZXJV
c2FibGUoKSBjb25zdCB7IHJldHVybiB1c2FibGVfbGluZWFyX2VzdGltYXRlXzsgfQorCisgICAg
Ly8gUmVzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgYW5hbHl6ZXIuCisgICAgdm9pZCBSZXNldCgpOwor
CisgICAgLy8gVXBkYXRlcyB0aGUgYW5hbHlzaXMgYmFzZWQgb24gbmV3IGRhdGEuCisgICAgdm9p
ZCBVcGRhdGUoYm9vbCBhY3RpdmVfcmVuZGVyLAorICAgICAgICAgICAgICAgIGJvb2wgdHJhbnNw
YXJlbnRfbW9kZSwKKyAgICAgICAgICAgICAgICBib29sIHNhdHVyYXRlZF9jYXB0dXJlLAorICAg
ICAgICAgICAgICAgIGJvb2wgY29uc2lzdGVudF9lc3RpbWF0ZV8sCisgICAgICAgICAgICAgICAg
Y29uc3QgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4mIGV4dGVybmFsX2RlbGF5LAorICAg
ICAgICAgICAgICAgIGJvb2wgY29udmVyZ2VkX2ZpbHRlcik7CisKKyAgIHByaXZhdGU6CisgICAg
Ym9vbCB1c2FibGVfbGluZWFyX2VzdGltYXRlXyA9IGZhbHNlOworICAgIHNpemVfdCBmaWx0ZXJf
dXBkYXRlX2Jsb2Nrc19zaW5jZV9yZXNldF8gPSAwOworICAgIHNpemVfdCBmaWx0ZXJfdXBkYXRl
X2Jsb2Nrc19zaW5jZV9zdGFydF8gPSAwOworICAgIGJvb2wgY29udmVyZ2VuY2Vfc2Vlbl8gPSBm
YWxzZTsKKyAgfSBmaWx0ZXJfcXVhbGl0eV9zdGF0ZV87CisKKyAgLy8gQ2xhc3MgY29udGFpbmlu
ZyB0aGUgbGVnYWN5IGZ1bmN0aW9uYWxpdHkgZm9yIGFuYWx5emluZyBob3cgd2VsbCB0aGUgbGlu
ZWFyCisgIC8vIGZpbHRlciBpcywgYW5kIGNhbiBiZSBleHBlY3RlZCB0byBwZXJmb3JtIG9uIHRo
ZSBjdXJyZW50IHNpZ25hbHMuIFRoZQorICAvLyBwdXJwb3NlIG9mIHRoaXMgaXMgZm9yIHVzaW5n
IHRvIHNlbGVjdCB0aGUgZWNobyBzdXBwcmVzc2lvbiBmdW5jdGlvbmFsaXR5CisgIC8vIGFzIHdl
bGwgYXMgdGhlIGlucHV0IHRvIHRoZSBlY2hvIHN1cHByZXNzb3IuCisgIGNsYXNzIExlZ2FjeUZp
bHRlcmluZ1F1YWxpdHlBbmFseXplciB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgTGVnYWN5
RmlsdGVyaW5nUXVhbGl0eUFuYWx5emVyKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25m
aWcpOwogCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSB0aGUgbGluZWFyIGZpbHRlciBpcyBj
YW4gYmUgdXNlZCBmb3IgdGhlIGVjaG8KICAgICAvLyBjYW5jZWxsZXIgb3V0cHV0LgpAQCAtMjg0
LDE0ICszMjksMzIgQEAgY2xhc3MgQWVjU3RhdGUgewogICAgIHNpemVfdCBhY3RpdmVfbm9uX2Nv
bnZlcmdlZF9zZXF1ZW5jZV9zaXplXyA9IDA7CiAgICAgYm9vbCByZWNlbnRfY29udmVyZ2VuY2Vf
ZHVyaW5nX2FjdGl2aXR5XyA9IGZhbHNlOwogICAgIGJvb2wgcmVjZW50X2NvbnZlcmdlbmNlXyA9
IGZhbHNlOwotICB9IGZpbHRlcl9xdWFsaXR5X3N0YXRlXzsKKyAgfSBsZWdhY3lfZmlsdGVyX3F1
YWxpdHlfc3RhdGVfOwogCi0gIC8vIENsYXNzIGZvciBkZXRlY3Rpbmcgd2hldGhlciB0aGUgZWNo
byBpcyB0byBiZSBjb25zaWRlcmVkIHRvIGJlIHNhdHVyYXRlZC4KLSAgLy8gVGhlIHB1cnBvc2Ug
b2YgdGhpcyBpcyB0byBhbGxvdyBjdXN0b21pemVkIGJlaGF2aW9yIGluIHRoZSBlY2hvIHN1cHBy
ZXNzb3IKLSAgLy8gZm9yIHdoZW4gdGhlIGVjaG8gaXMgc2F0dXJhdGVkLgorICAvLyBDbGFzcyBm
b3IgZGV0ZWN0aW5nIHdoZXRoZXIgdGhlIGVjaG8gaXMgdG8gYmUgY29uc2lkZXJlZCB0byBiZQor
ICAvLyBzYXR1cmF0ZWQuCiAgIGNsYXNzIFNhdHVyYXRpb25EZXRlY3RvciB7CiAgICBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgU2F0dXJhdGlvbkRldGVjdG9yKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29u
ZmlnJiBjb25maWcpOworICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgZWNobyBpcyB0byBiZSBj
b25zaWRlcmVkIHNhdHVyYXRlZC4KKyAgICBib29sIFNhdHVyYXRlZEVjaG8oKSBjb25zdCB7IHJl
dHVybiBzYXR1cmF0ZWRfZWNob187IH07CisKKyAgICAvLyBVcGRhdGVzIHRoZSBkZXRlY3Rpb24g
ZGVjaXNpb24gYmFzZWQgb24gbmV3IGRhdGEuCisgICAgdm9pZCBVcGRhdGUocnRjOjpBcnJheVZp
ZXc8Y29uc3QgZmxvYXQ+IHgsCisgICAgICAgICAgICAgICAgYm9vbCBzYXR1cmF0ZWRfY2FwdHVy
ZSwKKyAgICAgICAgICAgICAgICBib29sIHVzYWJsZV9saW5lYXJfZXN0aW1hdGUsCisgICAgICAg
ICAgICAgICAgY29uc3QgU3VidHJhY3Rvck91dHB1dCYgc3VidHJhY3Rvcl9vdXRwdXQsCisgICAg
ICAgICAgICAgICAgZmxvYXQgZWNob19wYXRoX2dhaW4pOworCisgICBwcml2YXRlOgorICAgIGJv
b2wgc2F0dXJhdGVkX2VjaG9fID0gZmFsc2U7CisgIH0gc2F0dXJhdGlvbl9kZXRlY3Rvcl87CisK
KyAgLy8gTGVnYWN5IGNsYXNzIGZvciBkZXRlY3Rpbmcgd2hldGhlciB0aGUgZWNobyBpcyB0byBi
ZSBjb25zaWRlcmVkIHRvIGJlCisgIC8vIHNhdHVyYXRlZC4gVGhpcyBpcyBrZXB0IGFzIGEgZmFs
bGJhY2sgc29sdXRpb24gdG8gdXNlIGluc3RlYWQgb2YgdGhlIGNsYXNzCisgIC8vIFNhdHVyYXRp
b25EZXRlY3RvciwKKyAgY2xhc3MgTGVnYWN5U2F0dXJhdGlvbkRldGVjdG9yIHsKKyAgIHB1Ymxp
YzoKKyAgICBleHBsaWNpdCBMZWdhY3lTYXR1cmF0aW9uRGV0ZWN0b3IoY29uc3QgRWNob0NhbmNl
bGxlcjNDb25maWcmIGNvbmZpZyk7CiAKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGVjaG8g
aXMgdG8gYmUgY29uc2lkZXJlZCBzYXR1cmF0ZWQuCiAgICAgYm9vbCBTYXR1cmF0ZWRFY2hvKCkg
Y29uc3QgeyByZXR1cm4gc2F0dXJhdGVkX2VjaG9fOyB9OwpAQCAtMzA4LDcgKzM3MSw3IEBAIGNs
YXNzIEFlY1N0YXRlIHsKICAgICBjb25zdCBib29sIGVjaG9fY2FuX3NhdHVyYXRlXzsKICAgICBz
aXplX3Qgbm90X3NhdHVyYXRlZF9zZXF1ZW5jZV9zaXplXzsKICAgICBib29sIHNhdHVyYXRlZF9l
Y2hvXyA9IGZhbHNlOwotICB9IHNhdHVyYXRpb25fZGV0ZWN0b3JfOworICB9IGxlZ2FjeV9zYXR1
cmF0aW9uX2RldGVjdG9yXzsKIAogICBFcmxFc3RpbWF0b3IgZXJsX2VzdGltYXRvcl87CiAgIEVy
bGVFc3RpbWF0b3IgZXJsZV9lc3RpbWF0b3JfOwpAQCAtMzIxLDggKzM4NCw4IEBAIGNsYXNzIEFl
Y1N0YXRlIHsKICAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gZXh0ZXJuYWxfZGVsYXlf
OwogICBFY2hvQXVkaWJpbGl0eSBlY2hvX2F1ZGliaWxpdHlfOwogICBSZXZlcmJNb2RlbEVzdGlt
YXRvciByZXZlcmJfbW9kZWxfZXN0aW1hdG9yXzsKKyAgUmVuZGVyUmV2ZXJiTW9kZWwgcmVuZGVy
X3JldmVyYl87CiAgIFN1YnRyYWN0b3JPdXRwdXRBbmFseXplciBzdWJ0cmFjdG9yX291dHB1dF9h
bmFseXplcl87Ci0gIGJvb2wgZW5hYmxlX2VybGVfcmVzZXRzX2F0X2dhaW5fY2hhbmdlc18gPSB0
cnVlOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYWVjX3N0YXRlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlX3Vu
aXR0ZXN0LmNjCmluZGV4IGJmMzJhMGI2MDcyMGVjZWU3MWYzMmVmMzRhMzViMTUzNzRmZTcwNmQu
LmEzMzEwMDYzNzgxNjIzMThiNmMxYzZlNzFhOTMzMmNlZWFhMGNjZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2FlY19zdGF0ZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9h
ZWNfc3RhdGVfdW5pdHRlc3QuY2MKQEAgLTI1LDcgKzI1LDcgQEAgVEVTVChBZWNTdGF0ZSwgTm9y
bWFsVXNhZ2UpIHsKICAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gZGVsYXlfZXN0aW1h
dGUgPQogICAgICAgRGVsYXlFc3RpbWF0ZShEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprUmVmaW5l
ZCwgMTApOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxh
eV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOwor
ICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIHN0ZDo6YXJy
YXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gRTJfbWFpbiA9IHt9OwogICBzdGQ6OmFycmF5
PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFkyID0ge307CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6
dmVjdG9yPGZsb2F0Pj4geCgzLCBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMC5mKSk7
CkBAIC01Niw3ICs1Niw3IEBAIFRFU1QoQWVjU3RhdGUsIE5vcm1hbFVzYWdlKSB7CiAgIHN0ZDo6
ZmlsbCh4WzBdLmJlZ2luKCksIHhbMF0uZW5kKCksIDEwMS5mKTsKICAgZm9yIChpbnQgayA9IDA7
IGsgPCAzMDAwOyArK2spIHsKICAgICByZW5kZXJfZGVsYXlfYnVmZmVyLT5JbnNlcnQoeCk7Ci0g
ICAgb3V0cHV0LlVwZGF0ZVBvd2Vycyh5KTsKKyAgICBvdXRwdXQuQ29tcHV0ZU1ldHJpY3MoeSk7
CiAgICAgc3RhdGUuVXBkYXRlKGRlbGF5X2VzdGltYXRlLCBjb252ZXJnZWRfZmlsdGVyX2ZyZXF1
ZW5jeV9yZXNwb25zZSwKICAgICAgICAgICAgICAgICAgaW1wdWxzZV9yZXNwb25zZSwgKnJlbmRl
cl9kZWxheV9idWZmZXItPkdldFJlbmRlckJ1ZmZlcigpLAogICAgICAgICAgICAgICAgICBFMl9t
YWluLCBZMiwgb3V0cHV0LCB5KTsKQEAgLTY1LDcgKzY1LDcgQEAgVEVTVChBZWNTdGF0ZSwgTm9y
bWFsVXNhZ2UpIHsKIAogICAvLyBWZXJpZnkgdGhhdCBsaW5lYXIgQUVDIHVzYWJpbGl0eSBiZWNv
bWVzIGZhbHNlIGFmdGVyIGFuIGVjaG8gcGF0aCBjaGFuZ2UgaXMKICAgLy8gcmVwb3J0ZWQKLSAg
b3V0cHV0LlVwZGF0ZVBvd2Vycyh5KTsKKyAgb3V0cHV0LkNvbXB1dGVNZXRyaWNzKHkpOwogICBz
dGF0ZS5IYW5kbGVFY2hvUGF0aENoYW5nZShFY2hvUGF0aFZhcmlhYmlsaXR5KAogICAgICAgZmFs
c2UsIEVjaG9QYXRoVmFyaWFiaWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6a0J1ZmZlclJlYWRqdXN0
bWVudCwgZmFsc2UpKTsKICAgc3RhdGUuVXBkYXRlKGRlbGF5X2VzdGltYXRlLCBjb252ZXJnZWRf
ZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwKQEAgLTc2LDcgKzc2LDcgQEAgVEVTVChBZWNTdGF0
ZSwgTm9ybWFsVXNhZ2UpIHsKICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGFjdGl2ZSByZW5kZXIgZGV0
ZWN0aW9uIHdvcmtzIGFzIGludGVuZGVkLgogICBzdGQ6OmZpbGwoeFswXS5iZWdpbigpLCB4WzBd
LmVuZCgpLCAxMDEuZik7CiAgIHJlbmRlcl9kZWxheV9idWZmZXItPkluc2VydCh4KTsKLSAgb3V0
cHV0LlVwZGF0ZVBvd2Vycyh5KTsKKyAgb3V0cHV0LkNvbXB1dGVNZXRyaWNzKHkpOwogICBzdGF0
ZS5IYW5kbGVFY2hvUGF0aENoYW5nZShFY2hvUGF0aFZhcmlhYmlsaXR5KAogICAgICAgdHJ1ZSwg
RWNob1BhdGhWYXJpYWJpbGl0eTo6RGVsYXlBZGp1c3RtZW50OjprTmV3RGV0ZWN0ZWREZWxheSwg
ZmFsc2UpKTsKICAgc3RhdGUuVXBkYXRlKGRlbGF5X2VzdGltYXRlLCBjb252ZXJnZWRfZmlsdGVy
X2ZyZXF1ZW5jeV9yZXNwb25zZSwKQEAgLTg2LDcgKzg2LDcgQEAgVEVTVChBZWNTdGF0ZSwgTm9y
bWFsVXNhZ2UpIHsKIAogICBmb3IgKGludCBrID0gMDsgayA8IDEwMDA7ICsraykgewogICAgIHJl
bmRlcl9kZWxheV9idWZmZXItPkluc2VydCh4KTsKLSAgICBvdXRwdXQuVXBkYXRlUG93ZXJzKHkp
OworICAgIG91dHB1dC5Db21wdXRlTWV0cmljcyh5KTsKICAgICBzdGF0ZS5VcGRhdGUoZGVsYXlf
ZXN0aW1hdGUsIGNvbnZlcmdlZF9maWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAogICAgICAgICAg
ICAgICAgICBpbXB1bHNlX3Jlc3BvbnNlLCAqcmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVy
QnVmZmVyKCksCiAgICAgICAgICAgICAgICAgIEUyX21haW4sIFkyLCBvdXRwdXQsIHkpOwpAQCAt
MTEwLDcgKzExMCw3IEBAIFRFU1QoQWVjU3RhdGUsIE5vcm1hbFVzYWdlKSB7CiAKICAgWTIuZmls
bCgxMC5mICogMTAwMDAuZiAqIDEwMDAwLmYpOwogICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEw
MDA7ICsraykgewotICAgIG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7CisgICAgb3V0cHV0LkNvbXB1
dGVNZXRyaWNzKHkpOwogICAgIHN0YXRlLlVwZGF0ZShkZWxheV9lc3RpbWF0ZSwgY29udmVyZ2Vk
X2ZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgIGltcHVsc2VfcmVz
cG9uc2UsICpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZmZXIoKSwKICAgICAgICAg
ICAgICAgICAgRTJfbWFpbiwgWTIsIG91dHB1dCwgeSk7CkBAIC0xMjgsNyArMTI4LDcgQEAgVEVT
VChBZWNTdGF0ZSwgTm9ybWFsVXNhZ2UpIHsKICAgRTJfbWFpbi5maWxsKDEuZiAqIDEwMDAwLmYg
KiAxMDAwMC5mKTsKICAgWTIuZmlsbCgxMC5mICogRTJfbWFpblswXSk7CiAgIGZvciAoc2l6ZV90
IGsgPSAwOyBrIDwgMTAwMDsgKytrKSB7Ci0gICAgb3V0cHV0LlVwZGF0ZVBvd2Vycyh5KTsKKyAg
ICBvdXRwdXQuQ29tcHV0ZU1ldHJpY3MoeSk7CiAgICAgc3RhdGUuVXBkYXRlKGRlbGF5X2VzdGlt
YXRlLCBjb252ZXJnZWRfZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwKICAgICAgICAgICAgICAg
ICAgaW1wdWxzZV9yZXNwb25zZSwgKnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJlbmRlckJ1ZmZl
cigpLAogICAgICAgICAgICAgICAgICBFMl9tYWluLCBZMiwgb3V0cHV0LCB5KTsKQEAgLTE1Miw3
ICsxNTIsNyBAQCBURVNUKEFlY1N0YXRlLCBOb3JtYWxVc2FnZSkgewogICBFMl9tYWluLmZpbGwo
MS5mICogMTAwMDAuZiAqIDEwMDAwLmYpOwogICBZMi5maWxsKDUuZiAqIEUyX21haW5bMF0pOwog
ICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEwMDA7ICsraykgewotICAgIG91dHB1dC5VcGRhdGVQ
b3dlcnMoeSk7CisgICAgb3V0cHV0LkNvbXB1dGVNZXRyaWNzKHkpOwogICAgIHN0YXRlLlVwZGF0
ZShkZWxheV9lc3RpbWF0ZSwgY29udmVyZ2VkX2ZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCiAg
ICAgICAgICAgICAgICAgIGltcHVsc2VfcmVzcG9uc2UsICpyZW5kZXJfZGVsYXlfYnVmZmVyLT5H
ZXRSZW5kZXJCdWZmZXIoKSwKICAgICAgICAgICAgICAgICAgRTJfbWFpbiwgWTIsIG91dHB1dCwg
eSk7CkBAIC0xNzksNyArMTc5LDcgQEAgVEVTVChBZWNTdGF0ZSwgQ29udmVyZ2VkRmlsdGVyRGVs
YXkpIHsKICAgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnOwogICBBZWNTdGF0ZSBzdGF0ZShj
b25maWcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxh
eV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOwor
ICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIGFic2w6Om9w
dGlvbmFsPERlbGF5RXN0aW1hdGU+IGRlbGF5X2VzdGltYXRlOwogICBzdGQ6OmFycmF5PGZsb2F0
LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IEUyX21haW47CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4gWTI7CkBAIC0yMDgsNyArMjA4LDcgQEAgVEVTVChBZWNTdGF0ZSwgQ29u
dmVyZ2VkRmlsdGVyRGVsYXkpIHsKICAgICBpbXB1bHNlX3Jlc3BvbnNlW2sgKiBrQmxvY2tTaXpl
ICsgMV0gPSAxLmY7CiAKICAgICBzdGF0ZS5IYW5kbGVFY2hvUGF0aENoYW5nZShlY2hvX3BhdGhf
dmFyaWFiaWxpdHkpOwotICAgIG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7CisgICAgb3V0cHV0LkNv
bXB1dGVNZXRyaWNzKHkpOwogICAgIHN0YXRlLlVwZGF0ZShkZWxheV9lc3RpbWF0ZSwgZnJlcXVl
bmN5X3Jlc3BvbnNlLCBpbXB1bHNlX3Jlc3BvbnNlLAogICAgICAgICAgICAgICAgICAqcmVuZGVy
X2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksIEUyX21haW4sIFkyLCBvdXRwdXQsCiAg
ICAgICAgICAgICAgICAgIHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxf
aml0dGVyX21ldHJpY3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmlj
cy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NWY1NmE1ZGNlNmZhYjEzNzFmMjQ0ZTg5ZTJjMDI1ZjdhNDQwYzk4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJp
Y3MuY2MKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJpY3Mu
aCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxsaW1pdHM+CisKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CituYW1lc3BhY2UgeworCitib29sIFRpbWVUb1JlcG9ydE1ldHJpY3MoaW50IGZyYW1lc19zaW5j
ZV9sYXN0X3JlcG9ydCkgeworICBjb25zdGV4cHIgaW50IGtOdW1GcmFtZXNQZXJTZWNvbmQgPSAx
MDA7CisgIGNvbnN0ZXhwciBpbnQga1JlcG9ydGluZ0ludGVydmFsRnJhbWVzID0gMTAgKiBrTnVt
RnJhbWVzUGVyU2Vjb25kOworICByZXR1cm4gZnJhbWVzX3NpbmNlX2xhc3RfcmVwb3J0ID09IGtS
ZXBvcnRpbmdJbnRlcnZhbEZyYW1lczsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK0FwaUNhbGxK
aXR0ZXJNZXRyaWNzOjpKaXR0ZXI6OkppdHRlcigpCisgICAgOiBtYXhfKDApLCBtaW5fKHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpIHt9CisKK3ZvaWQgQXBpQ2FsbEppdHRlck1ldHJp
Y3M6OkppdHRlcjo6VXBkYXRlKGludCBudW1fYXBpX2NhbGxzX2luX2Ffcm93KSB7CisgIG1pbl8g
PSBzdGQ6Om1pbihtaW5fLCBudW1fYXBpX2NhbGxzX2luX2Ffcm93KTsKKyAgbWF4XyA9IHN0ZDo6
bWF4KG1heF8sIG51bV9hcGlfY2FsbHNfaW5fYV9yb3cpOworfQorCit2b2lkIEFwaUNhbGxKaXR0
ZXJNZXRyaWNzOjpKaXR0ZXI6OlJlc2V0KCkgeworICBtaW5fID0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ+OjptYXgoKTsKKyAgbWF4XyA9IDA7Cit9CisKK3ZvaWQgQXBpQ2FsbEppdHRlck1ldHJp
Y3M6OlJlc2V0KCkgeworICByZW5kZXJfaml0dGVyXy5SZXNldCgpOworICBjYXB0dXJlX2ppdHRl
cl8uUmVzZXQoKTsKKyAgbnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPSAwOworICBmcmFtZXNfc2lu
Y2VfbGFzdF9yZXBvcnRfID0gMDsKKyAgbGFzdF9jYWxsX3dhc19yZW5kZXJfID0gZmFsc2U7Cisg
IHByb3Blcl9jYWxsX29ic2VydmVkXyA9IGZhbHNlOworfQorCit2b2lkIEFwaUNhbGxKaXR0ZXJN
ZXRyaWNzOjpSZXBvcnRSZW5kZXJDYWxsKCkgeworICBpZiAoIWxhc3RfY2FsbF93YXNfcmVuZGVy
XykgeworICAgIC8vIElmIHRoZSBwcmV2aW91cyBjYWxsIHdhcyBhIGNhcHR1cmUgYW5kIGEgcHJv
cGVyIGNhbGwgaGFzIGJlZW4gb2JzZXJ2ZWQKKyAgICAvLyAoY29udGFpbmluZyBib3RoIHJlbmRl
ciBhbmQgY2FwdHVyZSBkYXRhKSwgc3RvcmluZyB0aGUgbGFzdCBudW1iZXIgb2YKKyAgICAvLyBj
YXB0dXJlIGNhbGxzIGludG8gdGhlIG1ldHJpY3MuCisgICAgaWYgKHByb3Blcl9jYWxsX29ic2Vy
dmVkXykgeworICAgICAgY2FwdHVyZV9qaXR0ZXJfLlVwZGF0ZShudW1fYXBpX2NhbGxzX2luX2Ff
cm93Xyk7CisgICAgfQorCisgICAgLy8gUmVzZXQgdGhlIGNhbGwgY291bnRlciB0byBzdGFydCBj
b3VudGluZyByZW5kZXIgY2FsbHMuCisgICAgbnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPSAwOwor
ICB9CisgICsrbnVtX2FwaV9jYWxsc19pbl9hX3Jvd187CisgIGxhc3RfY2FsbF93YXNfcmVuZGVy
XyA9IHRydWU7Cit9CisKK3ZvaWQgQXBpQ2FsbEppdHRlck1ldHJpY3M6OlJlcG9ydENhcHR1cmVD
YWxsKCkgeworICBpZiAobGFzdF9jYWxsX3dhc19yZW5kZXJfKSB7CisgICAgLy8gSWYgdGhlIHBy
ZXZpb3VzIGNhbGwgd2FzIGEgcmVuZGVyIGFuZCBhIHByb3BlciBjYWxsIGhhcyBiZWVuIG9ic2Vy
dmVkCisgICAgLy8gKGNvbnRhaW5pbmcgYm90aCByZW5kZXIgYW5kIGNhcHR1cmUgZGF0YSksIHN0
b3JpbmcgdGhlIGxhc3QgbnVtYmVyIG9mCisgICAgLy8gcmVuZGVyIGNhbGxzIGludG8gdGhlIG1l
dHJpY3MuCisgICAgaWYgKHByb3Blcl9jYWxsX29ic2VydmVkXykgeworICAgICAgcmVuZGVyX2pp
dHRlcl8uVXBkYXRlKG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfKTsKKyAgICB9CisgICAgLy8gUmVz
ZXQgdGhlIGNhbGwgY291bnRlciB0byBzdGFydCBjb3VudGluZyBjYXB0dXJlIGNhbGxzLgorICAg
IG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfID0gMDsKKworICAgIC8vIElmIHRoaXMgc3RhdGVtZW50
IGlzIHJlYWNoZWQsIGF0IGxlYXN0IG9uZSByZW5kZXIgYW5kIG9uZSBjYXB0dXJlIGNhbGwKKyAg
ICAvLyBoYXZlIGJlZW4gb2JzZXJ2ZWQuCisgICAgcHJvcGVyX2NhbGxfb2JzZXJ2ZWRfID0gdHJ1
ZTsKKyAgfQorICArK251bV9hcGlfY2FsbHNfaW5fYV9yb3dfOworICBsYXN0X2NhbGxfd2FzX3Jl
bmRlcl8gPSBmYWxzZTsKKworICAvLyBPbmx5IHJlcG9ydCBhbmQgdXBkYXRlIGppdHRlciBtZXRy
aWNzIGZvciB3aGVuIGEgcHJvcGVyIGNhbGwsIGNvbnRhaW5pbmcKKyAgLy8gYm90aCByZW5kZXIg
YW5kIGNhcHR1cmUgZGF0YSwgaGFzIGJlZW4gb2JzZXJ2ZWQuCisgIGlmIChwcm9wZXJfY2FsbF9v
YnNlcnZlZF8gJiYKKyAgICAgIFRpbWVUb1JlcG9ydE1ldHJpY3MoKytmcmFtZXNfc2luY2VfbGFz
dF9yZXBvcnRfKSkgeworICAgIC8vIFJlcG9ydCBqaXR0ZXIsIHdoZXJlIHRoZSBiYXNlIGJhc2lj
IHVuaXQgaXMgZnJhbWVzLgorICAgIGNvbnN0ZXhwciBpbnQga01heEppdHRlclRvUmVwb3J0ID0g
NTA7CisKKyAgICAvLyBSZXBvcnQgbWF4IGFuZCBtaW4gaml0dGVyIGZvciByZW5kZXIgYW5kIGNh
cHR1cmUsIGluIHVuaXRzIG9mIDIwIG1zLgorICAgIFJUQ19ISVNUT0dSQU1fQ09VTlRTX0xJTkVB
UigKKyAgICAgICAgIldlYlJUQy5BdWRpby5FY2hvQ2FuY2VsbGVyLk1heFJlbmRlckppdHRlciIs
CisgICAgICAgIHN0ZDo6bWluKGtNYXhKaXR0ZXJUb1JlcG9ydCwgcmVuZGVyX2ppdHRlcigpLm1h
eCgpKSwgMSwKKyAgICAgICAga01heEppdHRlclRvUmVwb3J0LCBrTWF4Sml0dGVyVG9SZXBvcnQp
OworICAgIFJUQ19ISVNUT0dSQU1fQ09VTlRTX0xJTkVBUigKKyAgICAgICAgIldlYlJUQy5BdWRp
by5FY2hvQ2FuY2VsbGVyLk1pblJlbmRlckppdHRlciIsCisgICAgICAgIHN0ZDo6bWluKGtNYXhK
aXR0ZXJUb1JlcG9ydCwgcmVuZGVyX2ppdHRlcigpLm1pbigpKSwgMSwKKyAgICAgICAga01heEpp
dHRlclRvUmVwb3J0LCBrTWF4Sml0dGVyVG9SZXBvcnQpOworCisgICAgUlRDX0hJU1RPR1JBTV9D
T1VOVFNfTElORUFSKAorICAgICAgICAiV2ViUlRDLkF1ZGlvLkVjaG9DYW5jZWxsZXIuTWF4Q2Fw
dHVyZUppdHRlciIsCisgICAgICAgIHN0ZDo6bWluKGtNYXhKaXR0ZXJUb1JlcG9ydCwgY2FwdHVy
ZV9qaXR0ZXIoKS5tYXgoKSksIDEsCisgICAgICAgIGtNYXhKaXR0ZXJUb1JlcG9ydCwga01heEpp
dHRlclRvUmVwb3J0KTsKKyAgICBSVENfSElTVE9HUkFNX0NPVU5UU19MSU5FQVIoCisgICAgICAg
ICJXZWJSVEMuQXVkaW8uRWNob0NhbmNlbGxlci5NaW5DYXB0dXJlSml0dGVyIiwKKyAgICAgICAg
c3RkOjptaW4oa01heEppdHRlclRvUmVwb3J0LCBjYXB0dXJlX2ppdHRlcigpLm1pbigpKSwgMSwK
KyAgICAgICAga01heEppdHRlclRvUmVwb3J0LCBrTWF4Sml0dGVyVG9SZXBvcnQpOworCisgICAg
ZnJhbWVzX3NpbmNlX2xhc3RfcmVwb3J0XyA9IDA7CisgICAgUmVzZXQoKTsKKyAgfQorfQorCiti
b29sIEFwaUNhbGxKaXR0ZXJNZXRyaWNzOjpXaWxsUmVwb3J0TWV0cmljc0F0TmV4dENhcHR1cmUo
KSBjb25zdCB7CisgIHJldHVybiBUaW1lVG9SZXBvcnRNZXRyaWNzKGZyYW1lc19zaW5jZV9sYXN0
X3JlcG9ydF8gKyAxKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJpY3MuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2FwaV9jYWxsX2ppdHRlcl9tZXRyaWNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQxZmE4MmU5MzI0NzA3Mjky
ZTg3ZWUyZjM3NWNmODVlNzE3ZjNkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2FwaV9jYWxsX2ppdHRlcl9tZXRyaWNzLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQVBJX0NB
TExfSklUVEVSX01FVFJJQ1NfSF8KKyNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FF
QzNfQVBJX0NBTExfSklUVEVSX01FVFJJQ1NfSF8KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8v
IFN0b3JlcyBkYXRhIGZvciByZXBvcnRpbmcgbWV0cmljcyBvbiB0aGUgQVBJIGNhbGwgaml0dGVy
LgorY2xhc3MgQXBpQ2FsbEppdHRlck1ldHJpY3MgeworIHB1YmxpYzoKKyAgY2xhc3MgSml0dGVy
IHsKKyAgIHB1YmxpYzoKKyAgICBKaXR0ZXIoKTsKKyAgICB2b2lkIFVwZGF0ZShpbnQgbnVtX2Fw
aV9jYWxsc19pbl9hX3Jvdyk7CisgICAgdm9pZCBSZXNldCgpOworCisgICAgaW50IG1pbigpIGNv
bnN0IHsgcmV0dXJuIG1pbl87IH0KKyAgICBpbnQgbWF4KCkgY29uc3QgeyByZXR1cm4gbWF4Xzsg
fQorCisgICBwcml2YXRlOgorICAgIGludCBtYXhfOworICAgIGludCBtaW5fOworICB9OworCisg
IEFwaUNhbGxKaXR0ZXJNZXRyaWNzKCkgeyBSZXNldCgpOyB9CisKKyAgLy8gVXBkYXRlIG1ldHJp
Y3MgZm9yIHJlbmRlciBBUEkgY2FsbC4KKyAgdm9pZCBSZXBvcnRSZW5kZXJDYWxsKCk7CisKKyAg
Ly8gVXBkYXRlIGFuZCBwZXJpb2RpY2FsbHkgcmVwb3J0IG1ldHJpY3MgZm9yIGNhcHR1cmUgQVBJ
IGNhbGwuCisgIHZvaWQgUmVwb3J0Q2FwdHVyZUNhbGwoKTsKKworICAvLyBNZXRob2RzIHVzZWQg
b25seSBmb3IgdGVzdGluZy4KKyAgY29uc3QgSml0dGVyJiByZW5kZXJfaml0dGVyKCkgY29uc3Qg
eyByZXR1cm4gcmVuZGVyX2ppdHRlcl87IH0KKyAgY29uc3QgSml0dGVyJiBjYXB0dXJlX2ppdHRl
cigpIGNvbnN0IHsgcmV0dXJuIGNhcHR1cmVfaml0dGVyXzsgfQorICBib29sIFdpbGxSZXBvcnRN
ZXRyaWNzQXROZXh0Q2FwdHVyZSgpIGNvbnN0OworCisgcHJpdmF0ZToKKyAgdm9pZCBSZXNldCgp
OworCisgIEppdHRlciByZW5kZXJfaml0dGVyXzsKKyAgSml0dGVyIGNhcHR1cmVfaml0dGVyXzsK
KworICBpbnQgbnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPSAwOworICBpbnQgZnJhbWVzX3NpbmNl
X2xhc3RfcmVwb3J0XyA9IDA7CisgIGJvb2wgbGFzdF9jYWxsX3dhc19yZW5kZXJfID0gZmFsc2U7
CisgIGJvb2wgcHJvcGVyX2NhbGxfb2JzZXJ2ZWRfID0gZmFsc2U7Cit9OworCit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNf
QVBJX0NBTExfSklUVEVSX01FVFJJQ1NfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Fw
aV9jYWxsX2ppdHRlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2Nh
bGxfaml0dGVyX21ldHJpY3NfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY2MDhhYTNlMTA5M2Y5
N2JjMzcwZGM5YWE2YjkxYmJmZjQ5MzNkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FwaV9jYWxsX2ppdHRlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsMTA5IEBA
CisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2FwaV9jYWxsX2ppdHRlcl9tZXRyaWNzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKworI2luY2x1ZGUgInRlc3QvZ3Rl
c3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFZlcmlmeSBjb25zdGFudCBqaXR0ZXIu
CitURVNUKEFwaUNhbGxKaXR0ZXJNZXRyaWNzLCBDb25zdGFudEppdHRlcikgeworICBmb3IgKGlu
dCBqaXR0ZXIgPSAxOyBqaXR0ZXIgPCAyMDsgKytqaXR0ZXIpIHsKKyAgICBBcGlDYWxsSml0dGVy
TWV0cmljcyBtZXRyaWNzOworICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgMzAgKiBrTnVtQmxv
Y2tzUGVyU2Vjb25kOyArK2spIHsKKyAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgaml0dGVyOyAr
K2opIHsKKyAgICAgICAgbWV0cmljcy5SZXBvcnRSZW5kZXJDYWxsKCk7CisgICAgICB9CisKKyAg
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgaml0dGVyOyArK2opIHsKKyAgICAgICAgbWV0cmljcy5S
ZXBvcnRDYXB0dXJlQ2FsbCgpOworCisgICAgICAgIGlmIChtZXRyaWNzLldpbGxSZXBvcnRNZXRy
aWNzQXROZXh0Q2FwdHVyZSgpKSB7CisgICAgICAgICAgRVhQRUNUX0VRKGppdHRlciwgbWV0cmlj
cy5yZW5kZXJfaml0dGVyKCkubWluKCkpOworICAgICAgICAgIEVYUEVDVF9FUShqaXR0ZXIsIG1l
dHJpY3MucmVuZGVyX2ppdHRlcigpLm1heCgpKTsKKyAgICAgICAgICBFWFBFQ1RfRVEoaml0dGVy
LCBtZXRyaWNzLmNhcHR1cmVfaml0dGVyKCkubWluKCkpOworICAgICAgICAgIEVYUEVDVF9FUShq
aXR0ZXIsIG1ldHJpY3MuY2FwdHVyZV9qaXR0ZXIoKS5tYXgoKSk7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisgIH0KK30KKworLy8gVmVyaWZ5IHBlYWt5IGppdHRlciBmb3IgdGhlIHJlbmRl
ci4KK1RFU1QoQXBpQ2FsbEppdHRlck1ldHJpY3MsIEppdHRlclBlYWtSZW5kZXIpIHsKKyAgY29u
c3RleHByIGludCBrTWluSml0dGVyID0gMjsKKyAgY29uc3RleHByIGludCBrSml0dGVyUGVhayA9
IDEwOworICBjb25zdGV4cHIgaW50IGtQZWFrSW50ZXJ2YWwgPSAxMDA7CisKKyAgQXBpQ2FsbEpp
dHRlck1ldHJpY3MgbWV0cmljczsKKyAgaW50IHJlbmRlcl9zdXJwbHVzID0gMDsKKworICBmb3Ig
KHNpemVfdCBrID0gMDsgayA8IDMwICoga051bUJsb2Nrc1BlclNlY29uZDsgKytrKSB7CisgICAg
Y29uc3QgaW50IG51bV9yZW5kZXJfY2FsbHMgPQorICAgICAgICBrICUga1BlYWtJbnRlcnZhbCA9
PSAwID8ga0ppdHRlclBlYWsgOiBrTWluSml0dGVyOworICAgIGZvciAoaW50IGogPSAwOyBqIDwg
bnVtX3JlbmRlcl9jYWxsczsgKytqKSB7CisgICAgICBtZXRyaWNzLlJlcG9ydFJlbmRlckNhbGwo
KTsKKyAgICAgICsrcmVuZGVyX3N1cnBsdXM7CisgICAgfQorCisgICAgQVNTRVJUX0xFKGtNaW5K
aXR0ZXIsIHJlbmRlcl9zdXJwbHVzKTsKKyAgICBjb25zdCBpbnQgbnVtX2NhcHR1cmVfY2FsbHMg
PQorICAgICAgICByZW5kZXJfc3VycGx1cyA9PSBrTWluSml0dGVyID8ga01pbkppdHRlciA6IGtN
aW5KaXR0ZXIgKyAxOworICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtX2NhcHR1cmVfY2FsbHM7
ICsraikgeworICAgICAgbWV0cmljcy5SZXBvcnRDYXB0dXJlQ2FsbCgpOworCisgICAgICBpZiAo
bWV0cmljcy5XaWxsUmVwb3J0TWV0cmljc0F0TmV4dENhcHR1cmUoKSkgeworICAgICAgICBFWFBF
Q1RfRVEoa01pbkppdHRlciwgbWV0cmljcy5yZW5kZXJfaml0dGVyKCkubWluKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoa0ppdHRlclBlYWssIG1ldHJpY3MucmVuZGVyX2ppdHRlcigpLm1heCgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKGtNaW5KaXR0ZXIsIG1ldHJpY3MuY2FwdHVyZV9qaXR0ZXIoKS5t
aW4oKSk7CisgICAgICAgIEVYUEVDVF9FUShrTWluSml0dGVyICsgMSwgbWV0cmljcy5jYXB0dXJl
X2ppdHRlcigpLm1heCgpKTsKKyAgICAgIH0KKyAgICAgIC0tcmVuZGVyX3N1cnBsdXM7CisgICAg
fQorICB9Cit9CisKKy8vIFZlcmlmeSBwZWFreSBqaXR0ZXIgZm9yIHRoZSBjYXB0dXJlLgorVEVT
VChBcGlDYWxsSml0dGVyTWV0cmljcywgSml0dGVyUGVha0NhcHR1cmUpIHsKKyAgY29uc3RleHBy
IGludCBrTWluSml0dGVyID0gMjsKKyAgY29uc3RleHByIGludCBrSml0dGVyUGVhayA9IDEwOwor
ICBjb25zdGV4cHIgaW50IGtQZWFrSW50ZXJ2YWwgPSAxMDA7CisKKyAgQXBpQ2FsbEppdHRlck1l
dHJpY3MgbWV0cmljczsKKyAgaW50IGNhcHR1cmVfc3VycGx1cyA9IGtNaW5KaXR0ZXI7CisKKyAg
Zm9yIChzaXplX3QgayA9IDA7IGsgPCAzMCAqIGtOdW1CbG9ja3NQZXJTZWNvbmQ7ICsraykgewor
ICAgIEFTU0VSVF9MRShrTWluSml0dGVyLCBjYXB0dXJlX3N1cnBsdXMpOworICAgIGNvbnN0IGlu
dCBudW1fcmVuZGVyX2NhbGxzID0KKyAgICAgICAgY2FwdHVyZV9zdXJwbHVzID09IGtNaW5KaXR0
ZXIgPyBrTWluSml0dGVyIDoga01pbkppdHRlciArIDE7CisgICAgZm9yIChpbnQgaiA9IDA7IGog
PCBudW1fcmVuZGVyX2NhbGxzOyArK2opIHsKKyAgICAgIG1ldHJpY3MuUmVwb3J0UmVuZGVyQ2Fs
bCgpOworICAgICAgLS1jYXB0dXJlX3N1cnBsdXM7CisgICAgfQorCisgICAgY29uc3QgaW50IG51
bV9jYXB0dXJlX2NhbGxzID0KKyAgICAgICAgayAlIGtQZWFrSW50ZXJ2YWwgPT0gMCA/IGtKaXR0
ZXJQZWFrIDoga01pbkppdHRlcjsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bV9jYXB0dXJl
X2NhbGxzOyArK2opIHsKKyAgICAgIG1ldHJpY3MuUmVwb3J0Q2FwdHVyZUNhbGwoKTsKKworICAg
ICAgaWYgKG1ldHJpY3MuV2lsbFJlcG9ydE1ldHJpY3NBdE5leHRDYXB0dXJlKCkpIHsKKyAgICAg
ICAgRVhQRUNUX0VRKGtNaW5KaXR0ZXIsIG1ldHJpY3MucmVuZGVyX2ppdHRlcigpLm1pbigpKTsK
KyAgICAgICAgRVhQRUNUX0VRKGtNaW5KaXR0ZXIgKyAxLCBtZXRyaWNzLnJlbmRlcl9qaXR0ZXIo
KS5tYXgoKSk7CisgICAgICAgIEVYUEVDVF9FUShrTWluSml0dGVyLCBtZXRyaWNzLmNhcHR1cmVf
aml0dGVyKCkubWluKCkpOworICAgICAgICBFWFBFQ1RfRVEoa0ppdHRlclBlYWssIG1ldHJpY3Mu
Y2FwdHVyZV9qaXR0ZXIoKS5tYXgoKSk7CisgICAgICB9CisgICAgICArK2NhcHR1cmVfc3VycGx1
czsKKyAgICB9CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvYmxvY2tfZGVsYXlfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9j
a19kZWxheV9idWZmZXIuaAppbmRleCA2ZTVmZDVjMDlkMGQ0NmUyNTA4MmQ1NjgwNWFjMmRjZjFl
YjRkMDg4Li42MjRlOTEzOWEzODg4YzkwYTA4NmQyNWZjMjU1YTE2NmVlMzg5Y2VkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19kZWxheV9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9ibG9ja19kZWxheV9idWZmZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RV
TEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19CTE9DS19ERUxBWV9CVUZGRVJfSF8KICNkZWZpbmUg
TU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQkxPQ0tfREVMQVlfQlVGRkVSX0hfCiAKKyNp
bmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9ibG9ja19mcmFtZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19mcmFtZXIuY2MKaW5k
ZXggMzE2MDYyNDUxNWFiYWU5OWM5MjQ4NmI3Y2UzMDhjZjgyOGMzODJkYi4uY2E3NjY3YzI0ZjQ2
MjZmMzRjYjU5NzhlMjY3MTAzOWM5ZDM3ZDc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YmxvY2tfZnJhbWVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX2ZyYW1lci5jYwpAQCAt
MTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCisjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9ibG9ja19wcm9jZXNzb3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3Iu
Y2MKaW5kZXggMWJiNjk1ODRjYzNmYmY3OTMyYzFhNjcyMjE3ZDFmNWUwZDU2OWE3OC4uZWYyNWU3
YzIzYmM3NTRlZGNjNjA0ODg4YWEwM2M2ZjJjOWI3MWZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYmxvY2tfcHJvY2Vzc29yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nl
c3Nvci5jYwpAQCAtOSwxMiArOSwxNiBAQAogICovCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yLmgiCiAKKyNpbmNsdWRlIDx1dGlsaXR5Pgor
CiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yX21ldHJpY3MuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kZWxheV9lc3RpbWF0ZS5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF92YXJpYWJpbGl0eS5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKQEAgLTEwNCw3ICsxMDgsNyBAQCB2b2lkIEJsb2Nr
UHJvY2Vzc29ySW1wbDo6UHJvY2Vzc0NhcHR1cmUoCiAgICAgaWYgKCFjYXB0dXJlX3Byb3Blcmx5
X3N0YXJ0ZWRfKSB7CiAgICAgICBjYXB0dXJlX3Byb3Blcmx5X3N0YXJ0ZWRfID0gdHJ1ZTsKICAg
ICAgIHJlbmRlcl9idWZmZXJfLT5SZXNldCgpOwotICAgICAgZGVsYXlfY29udHJvbGxlcl8tPlJl
c2V0KCk7CisgICAgICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQodHJ1ZSk7CiAgICAgfQogICB9
IGVsc2UgewogICAgIC8vIElmIG5vIHJlbmRlciBkYXRhIGhhcyB5ZXQgYXJyaXZlZCwgZG8gbm90
IHByb2Nlc3MgdGhlIGNhcHR1cmUgc2lnbmFsLgpAQCAtMTE5LDcgKzEyMyw3IEBAIHZvaWQgQmxv
Y2tQcm9jZXNzb3JJbXBsOjpQcm9jZXNzQ2FwdHVyZSgKICAgICAgIHJlbmRlcl9wcm9wZXJseV9z
dGFydGVkXykgewogICAgIGVjaG9fcGF0aF92YXJpYWJpbGl0eS5kZWxheV9jaGFuZ2UgPQogICAg
ICAgICBFY2hvUGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6OmtCdWZmZXJGbHVzaDsK
LSAgICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQoKTsKKyAgICBkZWxheV9jb250cm9sbGVyXy0+
UmVzZXQodHJ1ZSk7CiAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVzZXQgZHVlIHRvIHJl
bmRlciBidWZmZXIgb3ZlcnJ1biBhdCBibG9jayAgIgogICAgICAgICAgICAgICAgICAgICAgICAg
PDwgY2FwdHVyZV9jYWxsX2NvdW50ZXJfOwogICB9CkBAIC0xMzUsMTEgKzEzOSwxMSBAQCB2b2lk
IEJsb2NrUHJvY2Vzc29ySW1wbDo6UHJvY2Vzc0NhcHR1cmUoCiAgICAgICAgIGVzdGltYXRlZF9k
ZWxheV8tPnF1YWxpdHkgPT0gRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a1JlZmluZWQpIHsKICAg
ICAgIGVjaG9fcGF0aF92YXJpYWJpbGl0eS5kZWxheV9jaGFuZ2UgPQogICAgICAgICAgIEVjaG9Q
YXRoVmFyaWFiaWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6a0RlbGF5UmVzZXQ7Ci0gICAgICBkZWxh
eV9jb250cm9sbGVyXy0+UmVzZXQoKTsKKyAgICAgIGRlbGF5X2NvbnRyb2xsZXJfLT5SZXNldCh0
cnVlKTsKICAgICAgIGNhcHR1cmVfcHJvcGVybHlfc3RhcnRlZF8gPSBmYWxzZTsKICAgICAgIHJl
bmRlcl9wcm9wZXJseV9zdGFydGVkXyA9IGZhbHNlOwogCi0gICAgICBSVENfTE9HKExTX1dBUk5J
TkcpIDw8ICJSZXNldCBkdWUgdG8gcmVuZGVyIGJ1ZmZlciB1bmRlcnJydW4gYXQgYmxvY2sgIgor
ICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVzZXQgZHVlIHRvIHJlbmRlciBidWZmZXIg
dW5kZXJydW4gYXQgYmxvY2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjYXB0dXJl
X2NhbGxfY291bnRlcl87CiAgICAgfQogICB9IGVsc2UgaWYgKHJlbmRlcl9ldmVudF8gPT0gUmVu
ZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50OjprQXBpQ2FsbFNrZXcpIHsKQEAgLTE0Nyw3
ICsxNTEsNyBAQCB2b2lkIEJsb2NrUHJvY2Vzc29ySW1wbDo6UHJvY2Vzc0NhcHR1cmUoCiAgICAg
Ly8gZWNoby4KICAgICBlY2hvX3BhdGhfdmFyaWFiaWxpdHkuZGVsYXlfY2hhbmdlID0KICAgICAg
ICAgRWNob1BhdGhWYXJpYWJpbGl0eTo6RGVsYXlBZGp1c3RtZW50OjprRGVsYXlSZXNldDsKLSAg
ICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQoKTsKKyAgICBkZWxheV9jb250cm9sbGVyXy0+UmVz
ZXQodHJ1ZSk7CiAgICAgY2FwdHVyZV9wcm9wZXJseV9zdGFydGVkXyA9IGZhbHNlOwogICAgIHJl
bmRlcl9wcm9wZXJseV9zdGFydGVkXyA9IGZhbHNlOwogICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIlJlc2V0IGR1ZSB0byByZW5kZXIgYnVmZmVyIGFwaSBza2V3IGF0IGJsb2NrICIKQEAgLTE4
MCw3ICsxODQsNyBAQCB2b2lkIEJsb2NrUHJvY2Vzc29ySW1wbDo6UHJvY2Vzc0NhcHR1cmUoCiAg
ICAgICBpZiAoZXN0aW1hdGVkX2RlbGF5Xy0+cXVhbGl0eSA9PSBEZWxheUVzdGltYXRlOjpRdWFs
aXR5OjprUmVmaW5lZCkgewogICAgICAgICBlY2hvX3BhdGhfdmFyaWFiaWxpdHkuZGVsYXlfY2hh
bmdlID0KICAgICAgICAgICAgIEVjaG9QYXRoVmFyaWFiaWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6
a0RlbGF5UmVzZXQ7Ci0gICAgICAgIGRlbGF5X2NvbnRyb2xsZXJfLT5SZXNldCgpOworICAgICAg
ICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQodHJ1ZSk7CiAgICAgICAgIHJlbmRlcl9idWZmZXJf
LT5SZXNldCgpOwogICAgICAgICBjYXB0dXJlX3Byb3Blcmx5X3N0YXJ0ZWRfID0gZmFsc2U7CiAg
ICAgICAgIHJlbmRlcl9wcm9wZXJseV9zdGFydGVkXyA9IGZhbHNlOwpAQCAtMTkwLDYgKzE5NCw4
IEBAIHZvaWQgQmxvY2tQcm9jZXNzb3JJbXBsOjpQcm9jZXNzQ2FwdHVyZSgKICAgICB9CiAgIH0K
IAorICBlY2hvX3BhdGhfdmFyaWFiaWxpdHkuY2xvY2tfZHJpZnQgPSBkZWxheV9jb250cm9sbGVy
Xy0+SGFzQ2xvY2tkcmlmdCgpOworCiAgIC8vIFJlbW92ZSB0aGUgZWNobyBmcm9tIHRoZSBjYXB0
dXJlIHNpZ25hbC4KICAgZWNob19yZW1vdmVyXy0+UHJvY2Vzc0NhcHR1cmUoCiAgICAgICBlY2hv
X3BhdGhfdmFyaWFiaWxpdHksIGNhcHR1cmVfc2lnbmFsX3NhdHVyYXRpb24sIGVzdGltYXRlZF9k
ZWxheV8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3IuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5oCmluZGV4IGEzOTY3ZWE3ZTRhNDFlNTc3MTQ0
ZTljMjA2YjE1ZjM4YTk4NGI3OWYuLjVmN2VjN2MxN2MzYzg2Yjc4OTJiMzBmM2IxY2I4NWZiMGUx
ZGI2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5oCkBAIC0xMSw5ICsxMSwxMiBAQAogI2lm
bmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19CTE9DS19QUk9DRVNTT1JfSF8KICNk
ZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQkxPQ0tfUFJPQ0VTU09SX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9y
PgogCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKKyNpbmNs
dWRlICJhcGkvYXVkaW8vZWNob19jb250cm9sLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgiCkBAIC0yMywx
OSArMjYsMzMgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyBDbGFzcyBmb3IgcGVyZm9ybWluZyBl
Y2hvIGNhbmNlbGxhdGlvbiBvbiA2NCBzYW1wbGUgYmxvY2tzIG9mIGF1ZGlvIGRhdGEuCiBjbGFz
cyBCbG9ja1Byb2Nlc3NvciB7CiAgcHVibGljOgorICAvLyBDcmVhdGUgYSBibG9jayBwcm9jZXNz
b3Igd2l0aCB0aGUgbGVnYWN5IHJlbmRlciBidWZmZXJpbmcuCiAgIHN0YXRpYyBCbG9ja1Byb2Nl
c3NvciogQ3JlYXRlKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeik7CisgIC8vIENyZWF0
ZSBhIGJsb2NrIHByb2Nlc3NvciB3aXRoIHRoZSBuZXcgcmVuZGVyIGJ1ZmZlcmluZy4KKyAgc3Rh
dGljIEJsb2NrUHJvY2Vzc29yKiBDcmVhdGUyKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBj
b25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVf
aHopOwogICAvLyBPbmx5IHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgIHN0YXRpYyBCbG9j
a1Byb2Nlc3NvciogQ3JlYXRlKAogICAgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNv
bmZpZywKICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlcik7CisgIHN0YXRpYyBCbG9ja1Byb2Nlc3Nv
ciogQ3JlYXRlMigKKyAgICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisg
ICAgICBpbnQgc2FtcGxlX3JhdGVfaHosCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVs
YXlCdWZmZXI+IHJlbmRlcl9idWZmZXIpOwogICBzdGF0aWMgQmxvY2tQcm9jZXNzb3IqIENyZWF0
ZSgKICAgICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICBpbnQg
c2FtcGxlX3JhdGVfaHosCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+
IHJlbmRlcl9idWZmZXIsCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9s
bGVyPiBkZWxheV9jb250cm9sbGVyLAogICAgICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9SZW1vdmVy
PiBlY2hvX3JlbW92ZXIpOworICBzdGF0aWMgQmxvY2tQcm9jZXNzb3IqIENyZWF0ZTIoCisgICAg
ICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgICAgaW50IHNhbXBsZV9y
YXRlX2h6LAorICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJf
YnVmZmVyLAorICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4gZGVs
YXlfY29udHJvbGxlciwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gZWNob19y
ZW1vdmVyKTsKIAogICB2aXJ0dWFsIH5CbG9ja1Byb2Nlc3NvcigpID0gZGVmYXVsdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yMi5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2Jsb2NrX3Byb2Nlc3NvcjIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBiZDNlZTVjYTI5NTJjYTIyN2U0
MWI2MWM0MDIwNTYzNDBiMWQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Js
b2NrX3Byb2Nlc3NvcjIuY2MKQEAgLTAsMCArMSwyNTYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChj
KSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1dGls
aXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgorI2luY2x1
ZGUgImFwaS9hdWRpby9lY2hvX2NvbnRyb2wuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvcl9tZXRyaWNzLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZGVsYXlfZXN0aW1hdGUuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfdmFyaWFiaWxpdHkuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXIuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVy
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5
X2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2lu
Zy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
CisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHsKKworZW51bSBjbGFzcyBCbG9ja1By
b2Nlc3NvckFwaUNhbGwgeyBrQ2FwdHVyZSwga1JlbmRlciB9OworCitjbGFzcyBCbG9ja1Byb2Nl
c3NvckltcGwyIGZpbmFsIDogcHVibGljIEJsb2NrUHJvY2Vzc29yIHsKKyBwdWJsaWM6CisgIEJs
b2NrUHJvY2Vzc29ySW1wbDIoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKKyAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHosCisgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyLAor
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xs
ZXI+IGRlbGF5X2NvbnRyb2xsZXIsCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEVjaG9SZW1vdmVyPiBlY2hvX3JlbW92ZXIpOworCisgIEJsb2NrUHJvY2Vzc29ySW1wbDIo
KSA9IGRlbGV0ZTsKKworICB+QmxvY2tQcm9jZXNzb3JJbXBsMigpIG92ZXJyaWRlOworCisgIHZv
aWQgUHJvY2Vzc0NhcHR1cmUoYm9vbCBlY2hvX3BhdGhfZ2Fpbl9jaGFuZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBjYXB0dXJlX3NpZ25hbF9zYXR1cmF0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4qIGNhcHR1cmVfYmxvY2sp
IG92ZXJyaWRlOworCisgIHZvaWQgQnVmZmVyUmVuZGVyKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6
dmVjdG9yPGZsb2F0Pj4mIGJsb2NrKSBvdmVycmlkZTsKKworICB2b2lkIFVwZGF0ZUVjaG9MZWFr
YWdlU3RhdHVzKGJvb2wgbGVha2FnZV9kZXRlY3RlZCkgb3ZlcnJpZGU7CisKKyAgdm9pZCBHZXRN
ZXRyaWNzKEVjaG9Db250cm9sOjpNZXRyaWNzKiBtZXRyaWNzKSBjb25zdCBvdmVycmlkZTsKKwor
ICB2b2lkIFNldEF1ZGlvQnVmZmVyRGVsYXkoc2l6ZV90IGRlbGF5X21zKSBvdmVycmlkZTsKKwor
IHByaXZhdGU6CisgIHN0YXRpYyBpbnQgaW5zdGFuY2VfY291bnRfOworICBzdGQ6OnVuaXF1ZV9w
dHI8QXBtRGF0YUR1bXBlcj4gZGF0YV9kdW1wZXJfOworICBjb25zdCBFY2hvQ2FuY2VsbGVyM0Nv
bmZpZyBjb25maWdfOworICBib29sIGNhcHR1cmVfcHJvcGVybHlfc3RhcnRlZF8gPSBmYWxzZTsK
KyAgYm9vbCByZW5kZXJfcHJvcGVybHlfc3RhcnRlZF8gPSBmYWxzZTsKKyAgY29uc3Qgc2l6ZV90
IHNhbXBsZV9yYXRlX2h6XzsKKyAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiBy
ZW5kZXJfYnVmZmVyXzsKKyAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4g
ZGVsYXlfY29udHJvbGxlcl87CisgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gZWNob19y
ZW1vdmVyXzsKKyAgQmxvY2tQcm9jZXNzb3JNZXRyaWNzIG1ldHJpY3NfOworICBSZW5kZXJEZWxh
eUJ1ZmZlcjo6QnVmZmVyaW5nRXZlbnQgcmVuZGVyX2V2ZW50XzsKKyAgc2l6ZV90IGNhcHR1cmVf
Y2FsbF9jb3VudGVyXyA9IDA7CisgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IGVzdGlt
YXRlZF9kZWxheV87CisgIGFic2w6Om9wdGlvbmFsPGludD4gZWNob19yZW1vdmVyX2RlbGF5XzsK
K307CisKK2ludCBCbG9ja1Byb2Nlc3NvckltcGwyOjppbnN0YW5jZV9jb3VudF8gPSAwOworCitC
bG9ja1Byb2Nlc3NvckltcGwyOjpCbG9ja1Byb2Nlc3NvckltcGwyKAorICAgIGNvbnN0IEVjaG9D
YW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisgICAgaW50IHNhbXBsZV9yYXRlX2h6LAorICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlciwKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPiBkZWxheV9jb250cm9sbGVyLAorICAg
IHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gZWNob19yZW1vdmVyKQorICAgIDogZGF0YV9k
dW1wZXJfKAorICAgICAgICAgIG5ldyBBcG1EYXRhRHVtcGVyKHJ0Yzo6QXRvbWljT3BzOjpJbmNy
ZW1lbnQoJmluc3RhbmNlX2NvdW50XykpKSwKKyAgICAgIGNvbmZpZ18oY29uZmlnKSwKKyAgICAg
IHNhbXBsZV9yYXRlX2h6XyhzYW1wbGVfcmF0ZV9oeiksCisgICAgICByZW5kZXJfYnVmZmVyXyhz
dGQ6Om1vdmUocmVuZGVyX2J1ZmZlcikpLAorICAgICAgZGVsYXlfY29udHJvbGxlcl8oc3RkOjpt
b3ZlKGRlbGF5X2NvbnRyb2xsZXIpKSwKKyAgICAgIGVjaG9fcmVtb3Zlcl8oc3RkOjptb3ZlKGVj
aG9fcmVtb3ZlcikpLAorICAgICAgcmVuZGVyX2V2ZW50XyhSZW5kZXJEZWxheUJ1ZmZlcjo6QnVm
ZmVyaW5nRXZlbnQ6OmtOb25lKSB7CisgIFJUQ19EQ0hFQ0soVmFsaWRGdWxsQmFuZFJhdGUoc2Ft
cGxlX3JhdGVfaHpfKSk7Cit9CisKK0Jsb2NrUHJvY2Vzc29ySW1wbDI6On5CbG9ja1Byb2Nlc3Nv
ckltcGwyKCkgPSBkZWZhdWx0OworCit2b2lkIEJsb2NrUHJvY2Vzc29ySW1wbDI6OlByb2Nlc3ND
YXB0dXJlKAorICAgIGJvb2wgZWNob19wYXRoX2dhaW5fY2hhbmdlLAorICAgIGJvb2wgY2FwdHVy
ZV9zaWduYWxfc2F0dXJhdGlvbiwKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+
KiBjYXB0dXJlX2Jsb2NrKSB7CisgIFJUQ19EQ0hFQ0soY2FwdHVyZV9ibG9jayk7CisgIFJUQ19E
Q0hFQ0tfRVEoTnVtQmFuZHNGb3JSYXRlKHNhbXBsZV9yYXRlX2h6XyksIGNhcHR1cmVfYmxvY2st
PnNpemUoKSk7CisgIFJUQ19EQ0hFQ0tfRVEoa0Jsb2NrU2l6ZSwgKCpjYXB0dXJlX2Jsb2NrKVsw
XS5zaXplKCkpOworCisgIGNhcHR1cmVfY2FsbF9jb3VudGVyXysrOworCisgIGRhdGFfZHVtcGVy
Xy0+RHVtcFJhdygiYWVjM19wcm9jZXNzYmxvY2tfY2FsbF9vcmRlciIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KEJsb2NrUHJvY2Vzc29yQXBpQ2FsbDo6a0NhcHR1
cmUpKTsKKyAgZGF0YV9kdW1wZXJfLT5EdW1wV2F2KCJhZWMzX3Byb2Nlc3NibG9ja19jYXB0dXJl
X2lucHV0Iiwga0Jsb2NrU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICYoKmNhcHR1cmVf
YmxvY2spWzBdWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgTG93ZXN0QmFuZFJhdGUoc2Ft
cGxlX3JhdGVfaHpfKSwgMSk7CisKKyAgaWYgKHJlbmRlcl9wcm9wZXJseV9zdGFydGVkXykgewor
ICAgIGlmICghY2FwdHVyZV9wcm9wZXJseV9zdGFydGVkXykgeworICAgICAgY2FwdHVyZV9wcm9w
ZXJseV9zdGFydGVkXyA9IHRydWU7CisgICAgICByZW5kZXJfYnVmZmVyXy0+UmVzZXQoKTsKKyAg
ICAgIGRlbGF5X2NvbnRyb2xsZXJfLT5SZXNldCh0cnVlKTsKKyAgICB9CisgIH0gZWxzZSB7Cisg
ICAgLy8gSWYgbm8gcmVuZGVyIGRhdGEgaGFzIHlldCBhcnJpdmVkLCBkbyBub3QgcHJvY2VzcyB0
aGUgY2FwdHVyZSBzaWduYWwuCisgICAgcmV0dXJuOworICB9CisKKyAgRWNob1BhdGhWYXJpYWJp
bGl0eSBlY2hvX3BhdGhfdmFyaWFiaWxpdHkoCisgICAgICBlY2hvX3BhdGhfZ2Fpbl9jaGFuZ2Us
IEVjaG9QYXRoVmFyaWFiaWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6a05vbmUsCisgICAgICBmYWxz
ZSk7CisKKyAgaWYgKHJlbmRlcl9ldmVudF8gPT0gUmVuZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmlu
Z0V2ZW50OjprUmVuZGVyT3ZlcnJ1biAmJgorICAgICAgcmVuZGVyX3Byb3Blcmx5X3N0YXJ0ZWRf
KSB7CisgICAgZWNob19wYXRoX3ZhcmlhYmlsaXR5LmRlbGF5X2NoYW5nZSA9CisgICAgICAgIEVj
aG9QYXRoVmFyaWFiaWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6a0J1ZmZlckZsdXNoOworICAgIGRl
bGF5X2NvbnRyb2xsZXJfLT5SZXNldCh0cnVlKTsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8
ICJSZXNldCBkdWUgdG8gcmVuZGVyIGJ1ZmZlciBvdmVycnVuIGF0IGJsb2NrICAiCisgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBjYXB0dXJlX2NhbGxfY291bnRlcl87CisgIH0KKyAgcmVuZGVy
X2V2ZW50XyA9IFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVudDo6a05vbmU7CisKKyAg
Ly8gVXBkYXRlIHRoZSByZW5kZXIgYnVmZmVycyB3aXRoIGFueSBuZXdseSBhcnJpdmVkIHJlbmRl
ciBibG9ja3MgYW5kIHByZXBhcmUKKyAgLy8gdGhlIHJlbmRlciBidWZmZXJzIGZvciByZWFkaW5n
IHRoZSByZW5kZXIgZGF0YSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW50CisgIC8vIGNhcHR1
cmUgYmxvY2suCisgIFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVudCBidWZmZXJfZXZl
bnQgPQorICAgICAgcmVuZGVyX2J1ZmZlcl8tPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpOwor
ICAvLyBSZXNldCB0aGUgZGVsYXkgY29udHJvbGxlciBhdCByZW5kZXIgYnVmZmVyIHVuZGVycnVu
LgorICBpZiAoYnVmZmVyX2V2ZW50ID09IFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVu
dDo6a1JlbmRlclVuZGVycnVuKSB7CisgICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0KGZhbHNl
KTsKKyAgfQorCisgIGRhdGFfZHVtcGVyXy0+RHVtcFdhdigiYWVjM19wcm9jZXNzYmxvY2tfY2Fw
dHVyZV9pbnB1dDIiLCBrQmxvY2tTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgJigqY2Fw
dHVyZV9ibG9jaylbMF1bMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBMb3dlc3RCYW5kUmF0
ZShzYW1wbGVfcmF0ZV9oel8pLCAxKTsKKworICAvLyBDb21wdXRlIGFuZCBhbmQgYXBwbHkgdGhl
IHJlbmRlciBkZWxheSByZXF1aXJlZCB0byBhY2hpZXZlIHByb3BlciBzaWduYWwKKyAgLy8gYWxp
Z25tZW50LgorICBlc3RpbWF0ZWRfZGVsYXlfID0gZGVsYXlfY29udHJvbGxlcl8tPkdldERlbGF5
KAorICAgICAgcmVuZGVyX2J1ZmZlcl8tPkdldERvd25zYW1wbGVkUmVuZGVyQnVmZmVyKCksIHJl
bmRlcl9idWZmZXJfLT5EZWxheSgpLAorICAgICAgZWNob19yZW1vdmVyX2RlbGF5XywgKCpjYXB0
dXJlX2Jsb2NrKVswXSk7CisKKyAgaWYgKGVzdGltYXRlZF9kZWxheV8pIHsKKyAgICBib29sIGRl
bGF5X2NoYW5nZSA9IHJlbmRlcl9idWZmZXJfLT5TZXREZWxheShlc3RpbWF0ZWRfZGVsYXlfLT5k
ZWxheSk7CisgICAgaWYgKGRlbGF5X2NoYW5nZSkgeworICAgICAgUlRDX0xPRyhMU19XQVJOSU5H
KSA8PCAiRGVsYXkgY2hhbmdlZCB0byAiIDw8IGVzdGltYXRlZF9kZWxheV8tPmRlbGF5CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8ICIgYXQgYmxvY2sgIiA8PCBjYXB0dXJlX2NhbGxfY291
bnRlcl87CisgICAgICBlY2hvX3BhdGhfdmFyaWFiaWxpdHkuZGVsYXlfY2hhbmdlID0KKyAgICAg
ICAgICBFY2hvUGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6OmtOZXdEZXRlY3RlZERl
bGF5OworICAgIH0KKyAgfQorCisgIGVjaG9fcGF0aF92YXJpYWJpbGl0eS5jbG9ja19kcmlmdCA9
IGRlbGF5X2NvbnRyb2xsZXJfLT5IYXNDbG9ja2RyaWZ0KCk7CisKKyAgLy8gUmVtb3ZlIHRoZSBl
Y2hvIGZyb20gdGhlIGNhcHR1cmUgc2lnbmFsLgorICBlY2hvX3JlbW92ZXJfLT5Qcm9jZXNzQ2Fw
dHVyZSgKKyAgICAgIGVjaG9fcGF0aF92YXJpYWJpbGl0eSwgY2FwdHVyZV9zaWduYWxfc2F0dXJh
dGlvbiwgZXN0aW1hdGVkX2RlbGF5XywKKyAgICAgIHJlbmRlcl9idWZmZXJfLT5HZXRSZW5kZXJC
dWZmZXIoKSwgY2FwdHVyZV9ibG9jayk7CisKKyAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgcmVmaW5l
ZCBkZWxheSBlc3RpbWF0ZSBoYXMgYmVlbiBvYnRhaW5lZCBmcm9tIHRoZSBlY2hvCisgIC8vIHJl
bW92ZXIuCisgIGVjaG9fcmVtb3Zlcl9kZWxheV8gPSBlY2hvX3JlbW92ZXJfLT5EZWxheSgpOwor
CisgIC8vIFVwZGF0ZSB0aGUgbWV0cmljcy4KKyAgbWV0cmljc18uVXBkYXRlQ2FwdHVyZShmYWxz
ZSk7Cit9CisKK3ZvaWQgQmxvY2tQcm9jZXNzb3JJbXBsMjo6QnVmZmVyUmVuZGVyKAorICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4mIGJsb2NrKSB7CisgIFJUQ19EQ0hF
Q0tfRVEoTnVtQmFuZHNGb3JSYXRlKHNhbXBsZV9yYXRlX2h6XyksIGJsb2NrLnNpemUoKSk7Cisg
IFJUQ19EQ0hFQ0tfRVEoa0Jsb2NrU2l6ZSwgYmxvY2tbMF0uc2l6ZSgpKTsKKyAgZGF0YV9kdW1w
ZXJfLT5EdW1wUmF3KCJhZWMzX3Byb2Nlc3NibG9ja19jYWxsX29yZGVyIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oQmxvY2tQcm9jZXNzb3JBcGlDYWxsOjprUmVu
ZGVyKSk7CisgIGRhdGFfZHVtcGVyXy0+RHVtcFdhdigiYWVjM19wcm9jZXNzYmxvY2tfcmVuZGVy
X2lucHV0Iiwga0Jsb2NrU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZibG9ja1swXVsw
XSwgTG93ZXN0QmFuZFJhdGUoc2FtcGxlX3JhdGVfaHpfKSwgMSk7CisgIGRhdGFfZHVtcGVyXy0+
RHVtcFdhdigiYWVjM19wcm9jZXNzYmxvY2tfcmVuZGVyX2lucHV0MiIsIGtCbG9ja1NpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAmYmxvY2tbMF1bMF0sIExvd2VzdEJhbmRSYXRlKHNhbXBs
ZV9yYXRlX2h6XyksIDEpOworCisgIHJlbmRlcl9ldmVudF8gPSByZW5kZXJfYnVmZmVyXy0+SW5z
ZXJ0KGJsb2NrKTsKKworICBtZXRyaWNzXy5VcGRhdGVSZW5kZXIocmVuZGVyX2V2ZW50XyAhPQor
ICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50
OjprTm9uZSk7CisKKyAgcmVuZGVyX3Byb3Blcmx5X3N0YXJ0ZWRfID0gdHJ1ZTsKKyAgZGVsYXlf
Y29udHJvbGxlcl8tPkxvZ1JlbmRlckNhbGwoKTsKK30KKwordm9pZCBCbG9ja1Byb2Nlc3Nvcklt
cGwyOjpVcGRhdGVFY2hvTGVha2FnZVN0YXR1cyhib29sIGxlYWthZ2VfZGV0ZWN0ZWQpIHsKKyAg
ZWNob19yZW1vdmVyXy0+VXBkYXRlRWNob0xlYWthZ2VTdGF0dXMobGVha2FnZV9kZXRlY3RlZCk7
Cit9CisKK3ZvaWQgQmxvY2tQcm9jZXNzb3JJbXBsMjo6R2V0TWV0cmljcyhFY2hvQ29udHJvbDo6
TWV0cmljcyogbWV0cmljcykgY29uc3QgeworICBlY2hvX3JlbW92ZXJfLT5HZXRNZXRyaWNzKG1l
dHJpY3MpOworICBjb25zdCBpbnQgYmxvY2tfc2l6ZV9tcyA9IHNhbXBsZV9yYXRlX2h6XyA9PSA4
MDAwID8gOCA6IDQ7CisgIGFic2w6Om9wdGlvbmFsPHNpemVfdD4gZGVsYXkgPSByZW5kZXJfYnVm
ZmVyXy0+RGVsYXkoKTsKKyAgbWV0cmljcy0+ZGVsYXlfbXMgPSBkZWxheSA/IHN0YXRpY19jYXN0
PGludD4oKmRlbGF5KSAqIGJsb2NrX3NpemVfbXMgOiAwOworfQorCit2b2lkIEJsb2NrUHJvY2Vz
c29ySW1wbDI6OlNldEF1ZGlvQnVmZmVyRGVsYXkoc2l6ZV90IGRlbGF5X21zKSB7CisgIHJlbmRl
cl9idWZmZXJfLT5TZXRBdWRpb0J1ZmZlckRlbGF5KGRlbGF5X21zKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKK0Jsb2NrUHJvY2Vzc29yKiBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMihjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeikgeworICBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIoCisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6
Q3JlYXRlMihjb25maWcsIE51bUJhbmRzRm9yUmF0ZShzYW1wbGVfcmF0ZV9oeikpKTsKKyAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlcigKKyAg
ICAgIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlMihjb25maWcsIHNhbXBsZV9yYXRlX2h6
KSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gZWNob19yZW1vdmVyKAorICAgICAg
RWNob1JlbW92ZXI6OkNyZWF0ZShjb25maWcsIHNhbXBsZV9yYXRlX2h6KSk7CisgIHJldHVybiBD
cmVhdGUyKGNvbmZpZywgc2FtcGxlX3JhdGVfaHosIHN0ZDo6bW92ZShyZW5kZXJfYnVmZmVyKSwK
KyAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGRlbGF5X2NvbnRyb2xsZXIpLCBzdGQ6Om1vdmUo
ZWNob19yZW1vdmVyKSk7Cit9CisKK0Jsb2NrUHJvY2Vzc29yKiBCbG9ja1Byb2Nlc3Nvcjo6Q3Jl
YXRlMigKKyAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgIGludCBz
YW1wbGVfcmF0ZV9oeiwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJl
bmRlcl9idWZmZXIpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4g
ZGVsYXlfY29udHJvbGxlcigKKyAgICAgIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlMihj
b25maWcsIHNhbXBsZV9yYXRlX2h6KSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4g
ZWNob19yZW1vdmVyKAorICAgICAgRWNob1JlbW92ZXI6OkNyZWF0ZShjb25maWcsIHNhbXBsZV9y
YXRlX2h6KSk7CisgIHJldHVybiBDcmVhdGUyKGNvbmZpZywgc2FtcGxlX3JhdGVfaHosIHN0ZDo6
bW92ZShyZW5kZXJfYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGRlbGF5X2Nv
bnRyb2xsZXIpLCBzdGQ6Om1vdmUoZWNob19yZW1vdmVyKSk7Cit9CisKK0Jsb2NrUHJvY2Vzc29y
KiBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMigKKyAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZp
ZyYgY29uZmlnLAorICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIsCisgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlciwKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RWNob1JlbW92ZXI+IGVjaG9fcmVtb3ZlcikgeworICByZXR1cm4gbmV3IEJsb2NrUHJvY2Vz
c29ySW1wbDIoCisgICAgICBjb25maWcsIHNhbXBsZV9yYXRlX2h6LCBzdGQ6Om1vdmUocmVuZGVy
X2J1ZmZlciksCisgICAgICBzdGQ6Om1vdmUoZGVsYXlfY29udHJvbGxlciksIHN0ZDo6bW92ZShl
Y2hvX3JlbW92ZXIpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yX21ldHJpY3MuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9ibG9ja19wcm9jZXNzb3JfbWV0cmljcy5jYwppbmRleCBjOGJkZGE3Mzg5OGVjMDYwMWQ1NjY5
NzYxZjc3YjUxNTE0MWY3YWMxLi5kZWFjMWZjZDIyMWEwNWU0MjBlNTFlYWRlMzczYjc3YjkwZTAy
MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3JfbWV0cmljcy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3JfbWV0cmljcy5jYwpAQCAtMTEs
NiArMTEsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2Nr
X3Byb2Nlc3Nvcl9tZXRyaWNzLmgiCiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3JfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3JfdW5pdHRlc3QuY2MKaW5kZXgg
NzE0NTc4NjhiMjRhZGJkYmNkNjIxYmNkYWFkM2YzMjNiOGZkYTk4Ni4uOGFiYTViNTY2MWU1ZDU5
NGY2ZjY1YTI3ODYwZTVhNTE5MmJmZmRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxv
Y2tfcHJvY2Vzc29yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nl
c3Nvcl91bml0dGVzdC5jYwpAQCAtMzcsNyArMzcsNyBAQCB1c2luZyB0ZXN0aW5nOjpfOwogLy8g
bWV0aG9kcyBhcmUgY2FsbGFibGUuCiB2b2lkIFJ1bkJhc2ljU2V0dXBBbmRBcGlDYWxsVGVzdChp
bnQgc2FtcGxlX3JhdGVfaHosIGludCBudW1faXRlcmF0aW9ucykgewogICBzdGQ6OnVuaXF1ZV9w
dHI8QmxvY2tQcm9jZXNzb3I+IGJsb2NrX3Byb2Nlc3NvcigKLSAgICAgIEJsb2NrUHJvY2Vzc29y
OjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgc2FtcGxlX3JhdGVfaHopKTsKKyAgICAg
IEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHNhbXBsZV9y
YXRlX2h6KSk7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gYmxvY2soTnVtQmFu
ZHNGb3JSYXRlKHNhbXBsZV9yYXRlX2h6KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMTAwMC5mKSk7CiAKQEAg
LTUxLDcgKzUxLDcgQEAgdm9pZCBSdW5CYXNpY1NldHVwQW5kQXBpQ2FsbFRlc3QoaW50IHNhbXBs
ZV9yYXRlX2h6LCBpbnQgbnVtX2l0ZXJhdGlvbnMpIHsKICNpZiBSVENfRENIRUNLX0lTX09OICYm
IEdURVNUX0hBU19ERUFUSF9URVNUICYmICFkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQogdm9pZCBS
dW5SZW5kZXJCbG9ja1NpemVWZXJpZmljYXRpb25UZXN0KGludCBzYW1wbGVfcmF0ZV9oeikgewog
ICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tQcm9jZXNzb3I+IGJsb2NrX3Byb2Nlc3NvcigKLSAgICAg
IEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgc2FtcGxlX3Jh
dGVfaHopKTsKKyAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29u
ZmlnKCksIHNhbXBsZV9yYXRlX2h6KSk7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0
Pj4gYmxvY2soCiAgICAgICBOdW1CYW5kc0ZvclJhdGUoc2FtcGxlX3JhdGVfaHopLCBzdGQ6OnZl
Y3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSAtIDEsIDAuZikpOwogCkBAIC02MCw3ICs2MCw3IEBAIHZv
aWQgUnVuUmVuZGVyQmxvY2tTaXplVmVyaWZpY2F0aW9uVGVzdChpbnQgc2FtcGxlX3JhdGVfaHop
IHsKIAogdm9pZCBSdW5DYXB0dXJlQmxvY2tTaXplVmVyaWZpY2F0aW9uVGVzdChpbnQgc2FtcGxl
X3JhdGVfaHopIHsKICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9j
ZXNzb3IoCi0gICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmln
KCksIHNhbXBsZV9yYXRlX2h6KSk7CisgICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMihFY2hv
Q2FuY2VsbGVyM0NvbmZpZygpLCBzYW1wbGVfcmF0ZV9oeikpOwogICBzdGQ6OnZlY3RvcjxzdGQ6
OnZlY3RvcjxmbG9hdD4+IGJsb2NrKAogICAgICAgTnVtQmFuZHNGb3JSYXRlKHNhbXBsZV9yYXRl
X2h6KSwgc3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUgLSAxLCAwLmYpKTsKIApAQCAtNzIs
NyArNzIsNyBAQCB2b2lkIFJ1blJlbmRlck51bUJhbmRzVmVyaWZpY2F0aW9uVGVzdChpbnQgc2Ft
cGxlX3JhdGVfaHopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE51
bUJhbmRzRm9yUmF0ZShzYW1wbGVfcmF0ZV9oeikgKyAxCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAxOwogICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tQcm9jZXNzb3I+IGJs
b2NrX3Byb2Nlc3NvcigKLSAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUoRWNob0NhbmNlbGxl
cjNDb25maWcoKSwgc2FtcGxlX3JhdGVfaHopKTsKKyAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVh
dGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHNhbXBsZV9yYXRlX2h6KSk7CiAgIHN0ZDo6dmVj
dG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gYmxvY2sod3JvbmdfbnVtX2JhbmRzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tT
aXplLCAwLmYpKTsKIApAQCAtODQsNyArODQsNyBAQCB2b2lkIFJ1bkNhcHR1cmVOdW1CYW5kc1Zl
cmlmaWNhdGlvblRlc3QoaW50IHNhbXBsZV9yYXRlX2h6KSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPyBOdW1CYW5kc0ZvclJhdGUoc2FtcGxlX3JhdGVfaHopICsgMQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMTsKICAgc3RkOjp1bmlxdWVf
cHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3IoCi0gICAgICBCbG9ja1Byb2Nlc3Nv
cjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHNhbXBsZV9yYXRlX2h6KSk7CisgICAg
ICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBzYW1wbGVf
cmF0ZV9oeikpOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IGJsb2NrKHdyb25n
X251bV9iYW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMC5mKSk7CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCBU
RVNUKEJsb2NrUHJvY2Vzc29yLCBESVNBQkxFRF9EZWxheUNvbnRyb2xsZXJJbnRlZ3JhdGlvbikg
ewogICAgIEVYUEVDVF9DQUxMKCpyZW5kZXJfZGVsYXlfYnVmZmVyX21vY2ssIERlbGF5KCkpCiAg
ICAgICAgIC5UaW1lcyhrTnVtQmxvY2tzICsgMSkKICAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJl
dHVybigwKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9j
ZXNzb3IoQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZSgKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tQ
cm9jZXNzb3I+IGJsb2NrX3Byb2Nlc3NvcihCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMigKICAgICAg
ICAgRWNob0NhbmNlbGxlcjNDb25maWcoKSwgcmF0ZSwgc3RkOjptb3ZlKHJlbmRlcl9kZWxheV9i
dWZmZXJfbW9jaykpKTsKIAogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gcmVu
ZGVyX2Jsb2NrKApAQCAtMTczLDcgKzE3Myw3IEBAIFRFU1QoQmxvY2tQcm9jZXNzb3IsIERJU0FC
TEVEX1N1Ym1vZHVsZUludGVncmF0aW9uKSB7CiAgICAgRVhQRUNUX0NBTEwoKmVjaG9fcmVtb3Zl
cl9tb2NrLCBVcGRhdGVFY2hvTGVha2FnZVN0YXR1cyhfKSkKICAgICAgICAgLlRpbWVzKGtOdW1C
bG9ja3MpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9j
ZXNzb3IoQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZSgKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tQ
cm9jZXNzb3I+IGJsb2NrX3Byb2Nlc3NvcihCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMigKICAgICAg
ICAgRWNob0NhbmNlbGxlcjNDb25maWcoKSwgcmF0ZSwgc3RkOjptb3ZlKHJlbmRlcl9kZWxheV9i
dWZmZXJfbW9jayksCiAgICAgICAgIHN0ZDo6bW92ZShyZW5kZXJfZGVsYXlfY29udHJvbGxlcl9t
b2NrKSwgc3RkOjptb3ZlKGVjaG9fcmVtb3Zlcl9tb2NrKSkpOwogCkBAIC0yMzksNyArMjM5LDcg
QEAgVEVTVChCbG9ja1Byb2Nlc3NvciwgVmVyaWZ5Q2FwdHVyZU51bUJhbmRzQ2hlY2spIHsKIC8v
IFZlcmlmaWVycyB0aGF0IHRoZSB2ZXJpZmljYXRpb24gZm9yIG51bGwgUHJvY2Vzc0NhcHR1cmUg
aW5wdXQgd29ya3MuCiBURVNUKEJsb2NrUHJvY2Vzc29yLCBOdWxsUHJvY2Vzc0NhcHR1cmVQYXJh
bWV0ZXIpIHsKICAgRVhQRUNUX0RFQVRIKHN0ZDo6dW5pcXVlX3B0cjxCbG9ja1Byb2Nlc3Nvcj4o
Ci0gICAgICAgICAgICAgICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZShFY2hvQ2FuY2VsbGVy
M0NvbmZpZygpLCA4MDAwKSkKKyAgICAgICAgICAgICAgICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3Jl
YXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCA4MDAwKSkKICAgICAgICAgICAgICAgICAgICAt
PlByb2Nlc3NDYXB0dXJlKGZhbHNlLCBmYWxzZSwgbnVsbHB0ciksCiAgICAgICAgICAgICAgICAi
Iik7CiB9CkBAIC0yNDksNyArMjQ5LDcgQEAgVEVTVChCbG9ja1Byb2Nlc3NvciwgTnVsbFByb2Nl
c3NDYXB0dXJlUGFyYW1ldGVyKSB7CiAvLyB0ZXN0cyBvbiB0ZXN0IGJvdHMgaGFzIGJlZW4gZml4
ZWQuCiBURVNUKEJsb2NrUHJvY2Vzc29yLCBESVNBQkxFRF9Xcm9uZ1NhbXBsZVJhdGUpIHsKICAg
RVhQRUNUX0RFQVRIKHN0ZDo6dW5pcXVlX3B0cjxCbG9ja1Byb2Nlc3Nvcj4oCi0gICAgICAgICAg
ICAgICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCA4
MDAxKSksCisgICAgICAgICAgICAgICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoRWNob0Nh
bmNlbGxlcjNDb25maWcoKSwgODAwMSkpLAogICAgICAgICAgICAgICAgIiIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvY2FzY2FkZWRfYmlxdWFkX2ZpbHRlci5jYwppbmRleCAzMzNkMjI2N2E0MThjZmIx
NDE5YTZhMmE2YmZlOGJiNTU0NjNkZmRlLi41ZGZkN2M1NGUyYjRlNGNmNzdhMjYwMDgzOWMzODI3
MmQwNzNhOTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jYXNjYWRlZF9iaXF1YWRfZmls
dGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nhc2NhZGVkX2JpcXVhZF9maWx0ZXIuY2MKQEAg
LTksNiArOSw4IEBACiAgKi8KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9jYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmgiCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKICNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9jYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmgKaW5kZXggMWUwOWZhNmU1YTQyMDQ3NjFiYzI0
MTFjYzliM2E4N2E4YWVkOTk0OC4uMmEzYjZkNjVjNWEwZjc1MTBjMDYwZmYwOGViNWFiMDAwNWYw
MDU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2FzY2FkZWRfYmlxdWFkX2ZpbHRlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nhc2NhZGVkX2JpcXVhZF9maWx0ZXIuaApAQCAtMTEsNiAr
MTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19DQVNDQURFRF9C
SVFVQURfRklMVEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0NB
U0NBREVEX0JJUVVBRF9GSUxURVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUg
PGNvbXBsZXg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9jbG9ja2RyaWZ0X2RldGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlmdF9kZXRl
Y3Rvci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yYzQ5Yjc5NWM0M2RhNTM2M2ZlMjg2NzE1ZjYxYjQ4MzcxMjNj
NGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlmdF9kZXRlY3Rv
ci5jYwpAQCAtMCwwICsxLDYxIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9yLmgiCisKK25h
bWVzcGFjZSB3ZWJydGMgeworCitDbG9ja2RyaWZ0RGV0ZWN0b3I6OkNsb2NrZHJpZnREZXRlY3Rv
cigpCisgICAgOiBsZXZlbF8oTGV2ZWw6OmtOb25lKSwgc3RhYmlsaXR5X2NvdW50ZXJfKDApIHsK
KyAgZGVsYXlfaGlzdG9yeV8uZmlsbCgwKTsKK30KKworQ2xvY2tkcmlmdERldGVjdG9yOjp+Q2xv
Y2tkcmlmdERldGVjdG9yKCkgPSBkZWZhdWx0OworCit2b2lkIENsb2NrZHJpZnREZXRlY3Rvcjo6
VXBkYXRlKGludCBkZWxheV9lc3RpbWF0ZSkgeworICBpZiAoZGVsYXlfZXN0aW1hdGUgPT0gZGVs
YXlfaGlzdG9yeV9bMF0pIHsKKyAgICAvLyBSZXNldCBjbG9ja2RyaWZ0IGxldmVsIGlmIGRlbGF5
IGVzdGltYXRlIGlzIHN0YWJsZSBmb3IgNzUwMCBibG9ja3MgKDMwCisgICAgLy8gc2Vjb25kcyku
CisgICAgaWYgKCsrc3RhYmlsaXR5X2NvdW50ZXJfID4gNzUwMCkKKyAgICAgIGxldmVsXyA9IExl
dmVsOjprTm9uZTsKKyAgICByZXR1cm47CisgIH0KKworICBzdGFiaWxpdHlfY291bnRlcl8gPSAw
OworICBjb25zdCBpbnQgZDEgPSBkZWxheV9oaXN0b3J5X1swXSAtIGRlbGF5X2VzdGltYXRlOwor
ICBjb25zdCBpbnQgZDIgPSBkZWxheV9oaXN0b3J5X1sxXSAtIGRlbGF5X2VzdGltYXRlOworICBj
b25zdCBpbnQgZDMgPSBkZWxheV9oaXN0b3J5X1syXSAtIGRlbGF5X2VzdGltYXRlOworCisgIC8v
IFBhdHRlcm5zIHJlY29nbml6ZWQgYXMgcG9zaXRpdmUgY2xvY2tkcmlmdDoKKyAgLy8gW3gtM10s
IHgtMiwgeC0xLCB4LgorICAvLyBbeC0zXSwgeC0xLCB4LTIsIHguCisgIGNvbnN0IGJvb2wgcHJv
YmFibGVfZHJpZnRfdXAgPQorICAgICAgKGQxID09IC0xICYmIGQyID09IC0yKSB8fCAoZDEgPT0g
LTIgJiYgZDIgPT0gLTEpOworICBjb25zdCBib29sIGRyaWZ0X3VwID0gcHJvYmFibGVfZHJpZnRf
dXAgJiYgZDMgPT0gLTM7CisKKyAgLy8gUGF0dGVybnMgcmVjb2duaXplZCBhcyBuZWdhdGl2ZSBj
bG9ja2RyaWZ0OgorICAvLyBbeCszXSwgeCsyLCB4KzEsIHguCisgIC8vIFt4KzNdLCB4KzEsIHgr
MiwgeC4KKyAgY29uc3QgYm9vbCBwcm9iYWJsZV9kcmlmdF9kb3duID0gKGQxID09IDEgJiYgZDIg
PT0gMikgfHwgKGQxID09IDIgJiYgZDIgPT0gMSk7CisgIGNvbnN0IGJvb2wgZHJpZnRfZG93biA9
IHByb2JhYmxlX2RyaWZ0X2Rvd24gJiYgZDMgPT0gMzsKKworICAvLyBTZXQgY2xvY2tkcmlmdCBs
ZXZlbC4KKyAgaWYgKGRyaWZ0X3VwIHx8IGRyaWZ0X2Rvd24pIHsKKyAgICBsZXZlbF8gPSBMZXZl
bDo6a1ZlcmlmaWVkOworICB9IGVsc2UgaWYgKChwcm9iYWJsZV9kcmlmdF91cCB8fCBwcm9iYWJs
ZV9kcmlmdF9kb3duKSAmJgorICAgICAgICAgICAgIGxldmVsXyA9PSBMZXZlbDo6a05vbmUpIHsK
KyAgICBsZXZlbF8gPSBMZXZlbDo6a1Byb2JhYmxlOworICB9CisKKyAgLy8gU2hpZnQgZGVsYXkg
aGlzdG9yeSBvbmUgc3RlcC4KKyAgZGVsYXlfaGlzdG9yeV9bMl0gPSBkZWxheV9oaXN0b3J5X1sx
XTsKKyAgZGVsYXlfaGlzdG9yeV9bMV0gPSBkZWxheV9oaXN0b3J5X1swXTsKKyAgZGVsYXlfaGlz
dG9yeV9bMF0gPSBkZWxheV9lc3RpbWF0ZTsKK30KK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3IuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjUyOGM5NDg5MjJhODBj
ZGI5NGZjMzY0YTQwYTc4YThhYmIyZmU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0NMT0NLRFJJ
RlRfREVURUNUT1JfSF8KKyNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQ0xP
Q0tEUklGVF9ERVRFQ1RPUl9IXworCisjaW5jbHVkZSA8YXJyYXk+CisKK25hbWVzcGFjZSB3ZWJy
dGMgeworCitjbGFzcyBBcG1EYXRhRHVtcGVyOworc3RydWN0IERvd25zYW1wbGVkUmVuZGVyQnVm
ZmVyOworc3RydWN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnOworCisvLyBEZXRlY3RzIGNsb2NrZHJp
ZnQgYnkgYW5hbHl6aW5nIHRoZSBlc3RpbWF0ZWQgZGVsYXkuCitjbGFzcyBDbG9ja2RyaWZ0RGV0
ZWN0b3IgeworIHB1YmxpYzoKKyAgZW51bSBjbGFzcyBMZXZlbCB7IGtOb25lLCBrUHJvYmFibGUs
IGtWZXJpZmllZCwga051bUNhdGVnb3JpZXMgfTsKKyAgQ2xvY2tkcmlmdERldGVjdG9yKCk7Cisg
IH5DbG9ja2RyaWZ0RGV0ZWN0b3IoKTsKKyAgdm9pZCBVcGRhdGUoaW50IGRlbGF5X2VzdGltYXRl
KTsKKyAgTGV2ZWwgQ2xvY2tkcmlmdExldmVsKCkgY29uc3QgeyByZXR1cm4gbGV2ZWxfOyB9CisK
KyBwcml2YXRlOgorICBzdGQ6OmFycmF5PGludCwgMz4gZGVsYXlfaGlzdG9yeV87CisgIExldmVs
IGxldmVsXzsKKyAgc2l6ZV90IHN0YWJpbGl0eV9jb3VudGVyXzsKK307Cit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQ0xP
Q0tEUklGVF9ERVRFQ1RPUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlm
dF9kZXRlY3Rvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0
b3JfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY5OGIwMWQzYWFlM2ViZTE2N2M5ZDlhNDUyOGFi
NDNmODA2NWQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRf
ZGV0ZWN0b3JfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0
X2RldGVjdG9yLmgiCisKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJy
dGMgeworVEVTVChDbG9ja2RyaWZ0RGV0ZWN0b3IsIENsb2NrZHJpZnREZXRlY3RvcikgeworICBD
bG9ja2RyaWZ0RGV0ZWN0b3IgYzsKKyAgLy8gTm8gY2xvY2tkcmlmdCBhdCBzdGFydC4KKyAgRVhQ
RUNUX1RSVUUoYy5DbG9ja2RyaWZ0TGV2ZWwoKSA9PSBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVs
OjprTm9uZSk7CisKKyAgLy8gTW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGRlbGF5LgorICBmb3Ig
KGludCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAgIGMuVXBkYXRlKDEwMDApOworICBFWFBFQ1Rf
VFJVRShjLkNsb2NrZHJpZnRMZXZlbCgpID09IENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtO
b25lKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBjLlVwZGF0ZSgxMDAx
KTsKKyAgRVhQRUNUX1RSVUUoYy5DbG9ja2RyaWZ0TGV2ZWwoKSA9PSBDbG9ja2RyaWZ0RGV0ZWN0
b3I6OkxldmVsOjprTm9uZSk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspCisgICAg
Yy5VcGRhdGUoMTAwMik7CisgIC8vIFByb2JhYmxlIGNsb2NrZHJpZnQuCisgIEVYUEVDVF9UUlVF
KGMuQ2xvY2tkcmlmdExldmVsKCkgPT0gQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6a1Byb2Jh
YmxlKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBjLlVwZGF0ZSgxMDAz
KTsKKyAgLy8gVmVyaWZpZWQgY2xvY2tkcmlmdC4KKyAgRVhQRUNUX1RSVUUoYy5DbG9ja2RyaWZ0
TGV2ZWwoKSA9PSBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjprVmVyaWZpZWQpOworCisgIC8v
IFN0YWJsZSBkZWxheS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQorICAgIGMu
VXBkYXRlKDEwMDMpOworICAvLyBObyBjbG9ja2RyaWZ0LgorICBFWFBFQ1RfVFJVRShjLkNsb2Nr
ZHJpZnRMZXZlbCgpID09IENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtOb25lKTsKKworICAv
LyBEZWNyZWFzaW5nIGRlbGF5LgorICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAg
IGMuVXBkYXRlKDEwMDEpOworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAgIGMu
VXBkYXRlKDk5OSk7CisgIC8vIFByb2JhYmxlIGNsb2NrZHJpZnQuCisgIEVYUEVDVF9UUlVFKGMu
Q2xvY2tkcmlmdExldmVsKCkgPT0gQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6a1Byb2JhYmxl
KTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBjLlVwZGF0ZSgxMDAwKTsK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBjLlVwZGF0ZSg5OTgpOworICAv
LyBWZXJpZmllZCBjbG9ja2RyaWZ0LgorICBFWFBFQ1RfVFJVRShjLkNsb2NrZHJpZnRMZXZlbCgp
ID09IENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtWZXJpZmllZCk7Cit9Cit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dl
bmVyYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2NvbWZvcnRfbm9pc2VfZ2VuZXJhdG9yLmNjCmlu
ZGV4IDU1ZmFmNGI1MjkxYTE3NWJiZTRiZGFiMzUxNjE0Y2QwN2JlZWNmNTEuLjc2NmU2NTg2Mzk4
MWNhZmJhMDlkZDUxMDg1ZGVmNmYyNmMxZjg5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2NvbWZvcnRfbm9pc2VfZ2VuZXJhdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2NvbWZvcnRf
bm9pc2VfZ2VuZXJhdG9yLmNjCkBAIC0xNiwxMyArMTYsMTYgQEAKICNpZiBkZWZpbmVkKFdFQlJU
Q19BUkNIX1g4Nl9GQU1JTFkpCiAjaW5jbHVkZSA8ZW1taW50cmluLmg+CiAjZW5kaWYKLSNpbmNs
dWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGFycmF5PgorI2lu
Y2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
ICNpbmNsdWRlIDxudW1lcmljPgogCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9j
ZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9tYXRoLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0zOCw2NCArNDEsMTAg
QEAgdm9pZCBUYWJsZVJhbmRvbVZhbHVlKGludDE2X3QqIHZlY3RvciwgaW50MTZfdCB2ZWN0b3Jf
bGVuZ3RoLCB1aW50MzJfdCogc2VlZCkgewogCiB9ICAvLyBuYW1lc3BhY2UKIAotbmFtZXNwYWNl
IGFlYzMgewotCi0jaWYgZGVmaW5lZChXRUJSVENfQVJDSF9YODZfRkFNSUxZKQotCi12b2lkIEVz
dGltYXRlQ29tZm9ydE5vaXNlX1NTRTIoY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0
aEJ5MlBsdXMxPiYgTjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qq
IHNlZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmZ0RGF0YSogbG93ZXJfYmFu
ZF9ub2lzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZnREYXRhKiB1cHBlcl9i
YW5kX25vaXNlKSB7Ci0gIEZmdERhdGEqIE5fbG93ID0gbG93ZXJfYmFuZF9ub2lzZTsKLSAgRmZ0
RGF0YSogTl9oaWdoID0gdXBwZXJfYmFuZF9ub2lzZTsKLQotICAvLyBDb21wdXRlIHNxdWFyZSBy
b290IHNwZWN0cnVtLgotICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IE47
Ci0gIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwga0ZmdExlbmd0aEJ5MjsgayArPSA0KSB7Ci0gICAg
X19tMTI4IHYgPSBfbW1fbG9hZHVfcHMoJk4yW2tdKTsKLSAgICB2ID0gX21tX3NxcnRfcHModik7
Ci0gICAgX21tX3N0b3JldV9wcygmTltrXSwgdik7Ci0gIH0KLQotICBOW2tGZnRMZW5ndGhCeTJd
ID0gc3FydGYoTjJba0ZmdExlbmd0aEJ5Ml0pOwotCi0gIC8vIENvbXB1dGUgdGhlIG5vaXNlIGxl
dmVsIGZvciB0aGUgdXBwZXIgYmFuZHMuCi0gIGNvbnN0ZXhwciBmbG9hdCBrT25lQnlOdW1CYW5k
cyA9IDEuZiAvIChrRmZ0TGVuZ3RoQnkyUGx1czEgLyAyICsgMSk7Ci0gIGNvbnN0ZXhwciBpbnQg
a0ZmdExlbmd0aEJ5MlBsdXMxQnkyID0ga0ZmdExlbmd0aEJ5MlBsdXMxIC8gMjsKLSAgY29uc3Qg
ZmxvYXQgaGlnaF9iYW5kX25vaXNlX2xldmVsID0KLSAgICAgIHN0ZDo6YWNjdW11bGF0ZShOLmJl
Z2luKCkgKyBrRmZ0TGVuZ3RoQnkyUGx1czFCeTIsIE4uZW5kKCksIDAuZikgKgotICAgICAga09u
ZUJ5TnVtQmFuZHM7Ci0KLSAgLy8gR2VuZXJhdGUgY29tcGxleCBub2lzZS4KLSAgc3RkOjphcnJh
eTxpbnQxNl90LCBrRmZ0TGVuZ3RoQnkyIC0gMT4gcmFuZG9tX3ZhbHVlc19pbnQ7Ci0gIFRhYmxl
UmFuZG9tVmFsdWUocmFuZG9tX3ZhbHVlc19pbnQuZGF0YSgpLCByYW5kb21fdmFsdWVzX2ludC5z
aXplKCksIHNlZWQpOwotCi0gIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTIgLSAxPiBz
aW47Ci0gIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTIgLSAxPiBjb3M7Ci0gIGNvbnN0
ZXhwciBmbG9hdCBrU2NhbGUgPSA2LjI4MzE4NTMwNzE3OTU5ZiAvIDMyNzY4LjBmOwotICBzdGQ6
OnRyYW5zZm9ybShyYW5kb21fdmFsdWVzX2ludC5iZWdpbigpLCByYW5kb21fdmFsdWVzX2ludC5l
bmQoKSwKLSAgICAgICAgICAgICAgICAgc2luLmJlZ2luKCksIFsmXShpbnQxNl90IGEpIHsgcmV0
dXJuIC1zaW5mKGtTY2FsZSAqIGEpOyB9KTsKLSAgc3RkOjp0cmFuc2Zvcm0ocmFuZG9tX3ZhbHVl
c19pbnQuYmVnaW4oKSwgcmFuZG9tX3ZhbHVlc19pbnQuZW5kKCksCi0gICAgICAgICAgICAgICAg
IGNvcy5iZWdpbigpLCBbJl0oaW50MTZfdCBhKSB7IHJldHVybiBjb3NmKGtTY2FsZSAqIGEpOyB9
KTsKLQotICAvLyBGb3JtIGxvdy1mcmVxdWVuY3kgbm9pc2UgdmlhIHNwZWN0cmFsIHNoYXBpbmcu
Ci0gIE5fbG93LT5yZVswXSA9IE5fbG93LT5yZVtrRmZ0TGVuZ3RoQnkyXSA9IE5faGlnaC0+cmVb
MF0gPQotICAgICAgTl9oaWdoLT5yZVtrRmZ0TGVuZ3RoQnkyXSA9IDAuZjsKLSAgc3RkOjp0cmFu
c2Zvcm0oY29zLmJlZ2luKCksIGNvcy5lbmQoKSwgTi5iZWdpbigpICsgMSwgTl9sb3ctPnJlLmJl
Z2luKCkgKyAxLAotICAgICAgICAgICAgICAgICBzdGQ6Om11bHRpcGxpZXM8ZmxvYXQ+KCkpOwot
ICBzdGQ6OnRyYW5zZm9ybShzaW4uYmVnaW4oKSwgc2luLmVuZCgpLCBOLmJlZ2luKCkgKyAxLCBO
X2xvdy0+aW0uYmVnaW4oKSArIDEsCi0gICAgICAgICAgICAgICAgIHN0ZDo6bXVsdGlwbGllczxm
bG9hdD4oKSk7Ci0KLSAgLy8gRm9ybSB0aGUgaGlnaC1mcmVxdWVuY3kgbm9pc2UgdmlhIHNpbXBs
ZSBsZXZlbGxpbmcuCi0gIHN0ZDo6dHJhbnNmb3JtKGNvcy5iZWdpbigpLCBjb3MuZW5kKCksIE5f
aGlnaC0+cmUuYmVnaW4oKSArIDEsCi0gICAgICAgICAgICAgICAgIFsmXShmbG9hdCBhKSB7IHJl
dHVybiBoaWdoX2JhbmRfbm9pc2VfbGV2ZWwgKiBhOyB9KTsKLSAgc3RkOjp0cmFuc2Zvcm0oc2lu
LmJlZ2luKCksIHNpbi5lbmQoKSwgTl9oaWdoLT5pbS5iZWdpbigpICsgMSwKLSAgICAgICAgICAg
ICAgICAgWyZdKGZsb2F0IGEpIHsgcmV0dXJuIGhpZ2hfYmFuZF9ub2lzZV9sZXZlbCAqIGE7IH0p
OwotfQotCi0jZW5kaWYKK25hbWVzcGFjZSB7CiAKLXZvaWQgRXN0aW1hdGVDb21mb3J0Tm9pc2Uo
Y29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgTjIsCit2b2lkIEdl
bmVyYXRlQ29tZm9ydE5vaXNlKEFlYzNPcHRpbWl6YXRpb24gb3B0aW1pemF0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnky
UGx1czE+JiBOMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QqIHNlZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZmdERhdGEqIGxvd2VyX2JhbmRfbm9pc2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZmdERhdGEqIHVwcGVyX2JhbmRfbm9pc2UpIHsKQEAgLTEw
NCw4ICs1Myw4IEBAIHZvaWQgRXN0aW1hdGVDb21mb3J0Tm9pc2UoY29uc3Qgc3RkOjphcnJheTxm
bG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgTjIsCiAKICAgLy8gQ29tcHV0ZSBzcXVhcmUgcm9v
dCBzcGVjdHJ1bS4KICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBOOwot
ICBzdGQ6OnRyYW5zZm9ybShOMi5iZWdpbigpLCBOMi5lbmQoKSwgTi5iZWdpbigpLAotICAgICAg
ICAgICAgICAgICBbXShmbG9hdCBhKSB7IHJldHVybiBzcXJ0ZihhKTsgfSk7CisgIHN0ZDo6Y29w
eShOMi5iZWdpbigpLCBOMi5lbmQoKSwgTi5iZWdpbigpKTsKKyAgYWVjMzo6VmVjdG9yTWF0aChv
cHRpbWl6YXRpb24pLlNxcnQoTik7CiAKICAgLy8gQ29tcHV0ZSB0aGUgbm9pc2UgbGV2ZWwgZm9y
IHRoZSB1cHBlciBiYW5kcy4KICAgY29uc3RleHByIGZsb2F0IGtPbmVCeU51bUJhbmRzID0gMS5m
IC8gKGtGZnRMZW5ndGhCeTJQbHVzMSAvIDIgKyAxKTsKQEAgLTExOCwxMyArNjcsMjEgQEAgdm9p
ZCBFc3RpbWF0ZUNvbWZvcnROb2lzZShjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3Ro
QnkyUGx1czE+JiBOMiwKICAgc3RkOjphcnJheTxpbnQxNl90LCBrRmZ0TGVuZ3RoQnkyIC0gMT4g
cmFuZG9tX3ZhbHVlc19pbnQ7CiAgIFRhYmxlUmFuZG9tVmFsdWUocmFuZG9tX3ZhbHVlc19pbnQu
ZGF0YSgpLCByYW5kb21fdmFsdWVzX2ludC5zaXplKCksIHNlZWQpOwogCisgIC8vIFRoZSBhbmFs
eXNpcyBhbmQgc3ludGhlc2lzIHdpbmRvd2luZyBjYXVzZSBsb3NzIG9mIHBvd2VyIHdoZW4KKyAg
Ly8gY3Jvc3MtZmFkaW5nIHRoZSBub2lzZSB3aGVyZSBmcmFtZXMgYXJlIGNvbXBsZXRlbHkgdW5j
b3JyZWxhdGVkCisgIC8vIChnZW5lcmF0ZWQgd2l0aCByYW5kb20gcGhhc2UpLCBoZW5jZSB0aGUg
ZmFjdG9yIHNxcnQoMikuCisgIC8vIFRoaXMgaXMgbm90IHRoZSBjYXNlIGZvciB0aGUgc3BlZWNo
IHNpZ25hbCB3aGVyZSB0aGUgaW5wdXQgaXMgb3ZlcmxhcHBpbmcKKyAgLy8gKHN0cm9uZyBjb3Jy
ZWxhdGlvbikuCiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTIgLSAxPiBzaW47CiAg
IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTIgLSAxPiBjb3M7CiAgIGNvbnN0ZXhwciBm
bG9hdCBrU2NhbGUgPSA2LjI4MzE4NTMwNzE3OTU5ZiAvIDMyNzY4LjBmOworICBjb25zdGV4cHIg
ZmxvYXQga1NxcnQyID0gMS40MTQyMTM1NjIzZjsKICAgc3RkOjp0cmFuc2Zvcm0ocmFuZG9tX3Zh
bHVlc19pbnQuYmVnaW4oKSwgcmFuZG9tX3ZhbHVlc19pbnQuZW5kKCksCi0gICAgICAgICAgICAg
ICAgIHNpbi5iZWdpbigpLCBbJl0oaW50MTZfdCBhKSB7IHJldHVybiAtc2luZihrU2NhbGUgKiBh
KTsgfSk7CisgICAgICAgICAgICAgICAgIHNpbi5iZWdpbigpLAorICAgICAgICAgICAgICAgICBb
Jl0oaW50MTZfdCBhKSB7IHJldHVybiAtc2luZihrU2NhbGUgKiBhKSAqIGtTcXJ0MjsgfSk7CiAg
IHN0ZDo6dHJhbnNmb3JtKHJhbmRvbV92YWx1ZXNfaW50LmJlZ2luKCksIHJhbmRvbV92YWx1ZXNf
aW50LmVuZCgpLAotICAgICAgICAgICAgICAgICBjb3MuYmVnaW4oKSwgWyZdKGludDE2X3QgYSkg
eyByZXR1cm4gY29zZihrU2NhbGUgKiBhKTsgfSk7CisgICAgICAgICAgICAgICAgIGNvcy5iZWdp
bigpLAorICAgICAgICAgICAgICAgICBbJl0oaW50MTZfdCBhKSB7IHJldHVybiBjb3NmKGtTY2Fs
ZSAqIGEpICoga1NxcnQyOyB9KTsKIAogICAvLyBGb3JtIGxvdy1mcmVxdWVuY3kgbm9pc2Ugdmlh
IHNwZWN0cmFsIHNoYXBpbmcuCiAgIE5fbG93LT5yZVswXSA9IE5fbG93LT5yZVtrRmZ0TGVuZ3Ro
QnkyXSA9IE5faGlnaC0+cmVbMF0gPQpAQCAtMTQxLDcgKzk4LDcgQEAgdm9pZCBFc3RpbWF0ZUNv
bWZvcnROb2lzZShjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBO
MiwKICAgICAgICAgICAgICAgICAgWyZdKGZsb2F0IGEpIHsgcmV0dXJuIGhpZ2hfYmFuZF9ub2lz
ZV9sZXZlbCAqIGE7IH0pOwogfQogCi19ICAvLyBuYW1lc3BhY2UgYWVjMworfSAgLy8gbmFtZXNw
YWNlCiAKIENvbWZvcnROb2lzZUdlbmVyYXRvcjo6Q29tZm9ydE5vaXNlR2VuZXJhdG9yKEFlYzNP
cHRpbWl6YXRpb24gb3B0aW1pemF0aW9uKQogICAgIDogb3B0aW1pemF0aW9uXyhvcHRpbWl6YXRp
b24pLApAQCAtMjA1LDE3ICsxNjIsOCBAQCB2b2lkIENvbWZvcnROb2lzZUdlbmVyYXRvcjo6Q29t
cHV0ZSgKICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgTjIg
PQogICAgICAgTjJfaW5pdGlhbF8gPyAqTjJfaW5pdGlhbF8gOiBOMl87CiAKLSAgc3dpdGNoIChv
cHRpbWl6YXRpb25fKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfQVJDSF9YODZfRkFNSUxZKQotICAg
IGNhc2UgQWVjM09wdGltaXphdGlvbjo6a1NzZTI6Ci0gICAgICBhZWMzOjpFc3RpbWF0ZUNvbWZv
cnROb2lzZV9TU0UyKE4yLCAmc2VlZF8sIGxvd2VyX2JhbmRfbm9pc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyX2JhbmRfbm9pc2UpOwotICAgICAgYnJlYWs7
Ci0jZW5kaWYKLSAgICBkZWZhdWx0OgotICAgICAgYWVjMzo6RXN0aW1hdGVDb21mb3J0Tm9pc2Uo
TjIsICZzZWVkXywgbG93ZXJfYmFuZF9ub2lzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVwcGVyX2JhbmRfbm9pc2UpOwotICB9CisgIEdlbmVyYXRlQ29tZm9ydE5vaXNlKG9w
dGltaXphdGlvbl8sIE4yLCAmc2VlZF8sIGxvd2VyX2JhbmRfbm9pc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgIHVwcGVyX2JhbmRfbm9pc2UpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dlbmVyYXRvci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3IuaAppbmRleCA2YTQ3OTg5NmVj
Yjk3NmZiMzBhYmQzYTNhNjk3MTljNDdhYzE2NGI5Li4zYmUzODZiYWIxZTc2ODdjYzBmNGFmMjVj
YjhlNDdjMmRlMTUzMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNl
X2dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2NvbWZvcnRfbm9pc2VfZ2VuZXJhdG9y
LmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FF
QzNfQ09NRk9SVF9OT0lTRV9HRU5FUkFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FFQzNfQ09NRk9SVF9OT0lTRV9HRU5FUkFUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGlu
dC5oPgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3JfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dlbmVyYXRvcl91bml0dGVzdC5jYwppbmRleCA3N2Ew
OWVkY2Q2YTAzOGVmZGZiODhmOWQ1MzU2ZDhkZTE5ZTg3ZTQ0Li4xMGJhNjk2MDM2ODFmZDMwYjVl
ZGNmMTMxMDRlNzgyZWFiNTNjMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0
X25vaXNlX2dlbmVyYXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0
X25vaXNlX2dlbmVyYXRvcl91bml0dGVzdC5jYwpAQCAtNTIsNDUgKzUyLDYgQEAgVEVTVChDb21m
b3J0Tm9pc2VHZW5lcmF0b3IsIE51bGxVcHBlckJhbmROb2lzZSkgewogCiAjZW5kaWYKIAotI2lm
IGRlZmluZWQoV0VCUlRDX0FSQ0hfWDg2X0ZBTUlMWSkKLS8vIFZlcmlmaWVzIHRoYXQgdGhlIG9w
dGltaXplZCBtZXRob2RzIGFyZSBiaXRleGFjdCB0byB0aGVpciByZWZlcmVuY2UKLS8vIGNvdW50
ZXJwYXJ0cy4KLVRFU1QoQ29tZm9ydE5vaXNlR2VuZXJhdG9yLCBUZXN0T3B0aW1pemF0aW9ucykg
ewotICBpZiAoV2ViUnRjX0dldENQVUluZm8oa1NTRTIpICE9IDApIHsKLSAgICBSYW5kb20gcmFu
ZG9tX2dlbmVyYXRvcig0MlUpOwotICAgIHVpbnQzMl90IHNlZWQgPSA0MjsKLSAgICB1aW50MzJf
dCBzZWVkX1NTRTIgPSA0MjsKLSAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1
czE+IE4yOwotICAgIEZmdERhdGEgbG93ZXJfYmFuZF9ub2lzZTsKLSAgICBGZnREYXRhIHVwcGVy
X2JhbmRfbm9pc2U7Ci0gICAgRmZ0RGF0YSBsb3dlcl9iYW5kX25vaXNlX1NTRTI7Ci0gICAgRmZ0
RGF0YSB1cHBlcl9iYW5kX25vaXNlX1NTRTI7Ci0gICAgZm9yIChpbnQgayA9IDA7IGsgPCAxMDsg
KytrKSB7Ci0gICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IE4yLnNpemUoKTsgKytqKSB7Ci0g
ICAgICAgIE4yW2pdID0gcmFuZG9tX2dlbmVyYXRvci5SYW5kPGZsb2F0PigpICogMTAwMC5mOwot
ICAgICAgfQotCi0gICAgICBFc3RpbWF0ZUNvbWZvcnROb2lzZShOMiwgJnNlZWQsICZsb3dlcl9i
YW5kX25vaXNlLCAmdXBwZXJfYmFuZF9ub2lzZSk7Ci0gICAgICBFc3RpbWF0ZUNvbWZvcnROb2lz
ZV9TU0UyKE4yLCAmc2VlZF9TU0UyLCAmbG93ZXJfYmFuZF9ub2lzZV9TU0UyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmdXBwZXJfYmFuZF9ub2lzZV9TU0UyKTsKLSAgICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgbG93ZXJfYmFuZF9ub2lzZS5yZS5zaXplKCk7ICsraikgewot
ICAgICAgICBFWFBFQ1RfTkVBUihsb3dlcl9iYW5kX25vaXNlLnJlW2pdLCBsb3dlcl9iYW5kX25v
aXNlX1NTRTIucmVbal0sCi0gICAgICAgICAgICAgICAgICAgIDAuMDAwMDFmKTsKLSAgICAgICAg
RVhQRUNUX05FQVIodXBwZXJfYmFuZF9ub2lzZS5yZVtqXSwgdXBwZXJfYmFuZF9ub2lzZV9TU0Uy
LnJlW2pdLAotICAgICAgICAgICAgICAgICAgICAwLjAwMDAxZik7Ci0gICAgICB9Ci0gICAgICBm
b3IgKHNpemVfdCBqID0gMTsgaiA8IGxvd2VyX2JhbmRfbm9pc2UucmUuc2l6ZSgpIC0gMTsgKytq
KSB7Ci0gICAgICAgIEVYUEVDVF9ORUFSKGxvd2VyX2JhbmRfbm9pc2UuaW1bal0sIGxvd2VyX2Jh
bmRfbm9pc2VfU1NFMi5pbVtqXSwKLSAgICAgICAgICAgICAgICAgICAgMC4wMDAwMWYpOwotICAg
ICAgICBFWFBFQ1RfTkVBUih1cHBlcl9iYW5kX25vaXNlLmltW2pdLCB1cHBlcl9iYW5kX25vaXNl
X1NTRTIuaW1bal0sCi0gICAgICAgICAgICAgICAgICAgIDAuMDAwMDFmKTsKLSAgICAgIH0KLSAg
ICB9Ci0gIH0KLX0KLQotI2VuZGlmCi0KIFRFU1QoQ29tZm9ydE5vaXNlR2VuZXJhdG9yLCBDb3Jy
ZWN0TGV2ZWwpIHsKICAgQ29tZm9ydE5vaXNlR2VuZXJhdG9yIGNuZyhEZXRlY3RPcHRpbWl6YXRp
b24oKSk7CiAgIEFlY1N0YXRlIGFlY19zdGF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZ3t9KTsKQEAg
LTExMyw4ICs3NCw4IEBAIFRFU1QoQ29tZm9ydE5vaXNlR2VuZXJhdG9yLCBDb3JyZWN0TGV2ZWwp
IHsKICAgZm9yIChpbnQgayA9IDA7IGsgPCAxMDAwMDsgKytrKSB7CiAgICAgY25nLkNvbXB1dGUo
YWVjX3N0YXRlLCBOMiwgJm5fbG93ZXIsICZuX3VwcGVyKTsKICAgfQotICBFWFBFQ1RfTkVBUihO
MlswXSwgUG93ZXIobl9sb3dlciksIE4yWzBdIC8gMTAuZik7Ci0gIEVYUEVDVF9ORUFSKE4yWzBd
LCBQb3dlcihuX3VwcGVyKSwgTjJbMF0gLyAxMC5mKTsKKyAgRVhQRUNUX05FQVIoMi5mICogTjJb
MF0sIFBvd2VyKG5fbG93ZXIpLCBOMlswXSAvIDEwLmYpOworICBFWFBFQ1RfTkVBUigyLmYgKiBO
MlswXSwgUG93ZXIobl91cHBlciksIE4yWzBdIC8gMTAuZik7CiB9CiAKIH0gIC8vIG5hbWVzcGFj
ZSBhZWMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kZWNpbWF0b3IuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9kZWNpbWF0b3IuY2MKaW5kZXggZDlmYWE2MmRjNDQ2OTc2YTEzZDNlYTA2ZjBiMzI5
NGRkZjNhY2Q2Ny4uYmQwMzIzN2NhMDgwZmI1MzQxNDUyYTFmYWEzOWUxNjBlZGVlZWUwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZGVjaW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2RlY2ltYXRvci5jYwpAQCAtOSw2ICs5LDEwIEBACiAgKi8KICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kZWNpbWF0b3IuaCIKIAorI2luY2x1ZGUgPGFycmF5PgorI2lu
Y2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVy
X2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuY2MK
aW5kZXggZGYwYWY2ZTBkODYwMDE2MGQyYjU3NGE5NjljMzg4M2FhOWY1OTA4MS4uYzEwNTkxMWFh
ODgzNGRmMjA0OWQyODFjODQ1NzdmZGZhNTU4ZWMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3du
c2FtcGxlZF9yZW5kZXJfYnVmZmVyLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJfYnVmZmVyLmgi
CiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBEb3duc2Ft
cGxlZFJlbmRlckJ1ZmZlcjo6RG93bnNhbXBsZWRSZW5kZXJCdWZmZXIoc2l6ZV90IGRvd25zYW1w
bGVkX2J1ZmZlcl9zaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRf
cmVuZGVyX2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZl
ci5oCmluZGV4IDk0Mzk0OTY2NmEwNjlmMGU0NDdiYTkzMjU3ODA0ZGNkYWVkOGRjY2QuLmM5MWVh
M2I4MzZmNjBlODUyNzNiOTRhYmI2ODEwOGVmYmY0NTI3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9k
b3duc2FtcGxlZF9yZW5kZXJfYnVmZmVyLmgKQEAgLTExLDkgKzExLDkgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRE9XTlNBTVBMRURfUkVOREVSX0JVRkZFUl9IXwog
I2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19ET1dOU0FNUExFRF9SRU5ERVJf
QlVGRkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fYXVkaWJpbGl0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Vj
aG9fYXVkaWJpbGl0eS5jYwppbmRleCBmYTEyM2RlMzUxZTU0NDlkYWFhYmE2NmY4OTlhOGU3OWEy
MTA4ZWVhLi5lODU3YTdlNDVhMDg0NzZmMDI4YzdjZmUzODA0ZjhmOGQzMjg3NjNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2F1ZGliaWxpdHkuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZWNob19hdWRpYmlsaXR5LmNjCkBAIC0xMiw4ICsxMiwxMCBAQAogCiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgogI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8
dmVjdG9yPgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19j
b21tb24uaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdGF0aW9uYXJpdHlfZXN0aW1hdG9yLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5oIgpAQCAtMjcs
MTYgKzI5LDE4IEBAIEVjaG9BdWRpYmlsaXR5OjpFY2hvQXVkaWJpbGl0eShib29sIHVzZV9yZW5k
ZXJfc3RhdGlvbmFyaXR5X2F0X2luaXQpCiAKIEVjaG9BdWRpYmlsaXR5Ojp+RWNob0F1ZGliaWxp
dHkoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgRWNob0F1ZGliaWxpdHk6OlVwZGF0ZShjb25zdCBSZW5k
ZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGRlbGF5X2Jsb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGV4dGVybmFs
X2RlbGF5X3NlZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmV2ZXJiX2Rl
Y2F5KSB7Cit2b2lkIEVjaG9BdWRpYmlsaXR5OjpVcGRhdGUoCisgICAgY29uc3QgUmVuZGVyQnVm
ZmVyJiByZW5kZXJfYnVmZmVyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZW5k
ZXJfcmV2ZXJiX2NvbnRyaWJ1dGlvbl9zcGVjdHJ1bSwKKyAgICBpbnQgZGVsYXlfYmxvY2tzLAor
ICAgIGJvb2wgZXh0ZXJuYWxfZGVsYXlfc2VlbikgewogICBVcGRhdGVSZW5kZXJOb2lzZUVzdGlt
YXRvcihyZW5kZXJfYnVmZmVyLkdldFNwZWN0cnVtQnVmZmVyKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlbmRlcl9idWZmZXIuR2V0QmxvY2tCdWZmZXIoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfZGVsYXlfc2Vlbik7CiAKICAgaWYgKGV4dGVybmFs
X2RlbGF5X3NlZW4gfHwgdXNlX3JlbmRlcl9zdGF0aW9uYXJpdHlfYXRfaW5pdF8pIHsKLSAgICBV
cGRhdGVSZW5kZXJTdGF0aW9uYXJpdHlGbGFncyhyZW5kZXJfYnVmZmVyLCBkZWxheV9ibG9ja3Ms
IHJldmVyYl9kZWNheSk7CisgICAgVXBkYXRlUmVuZGVyU3RhdGlvbmFyaXR5RmxhZ3MoCisgICAg
ICAgIHJlbmRlcl9idWZmZXIsIHJlbmRlcl9yZXZlcmJfY29udHJpYnV0aW9uX3NwZWN0cnVtLCBk
ZWxheV9ibG9ja3MpOwogICB9CiB9CiAKQEAgLTQ4LDggKzUyLDggQEAgdm9pZCBFY2hvQXVkaWJp
bGl0eTo6UmVzZXQoKSB7CiAKIHZvaWQgRWNob0F1ZGliaWxpdHk6OlVwZGF0ZVJlbmRlclN0YXRp
b25hcml0eUZsYWdzKAogICAgIGNvbnN0IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKLSAg
ICBpbnQgZGVsYXlfYmxvY2tzLAotICAgIGZsb2F0IHJldmVyYl9kZWNheSkgeworICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZW5kZXJfcmV2ZXJiX2NvbnRyaWJ1dGlvbl9zcGVjdHJ1
bSwKKyAgICBpbnQgZGVsYXlfYmxvY2tzKSB7CiAgIGNvbnN0IFZlY3RvckJ1ZmZlciYgc3BlY3Ry
dW1fYnVmZmVyID0gcmVuZGVyX2J1ZmZlci5HZXRTcGVjdHJ1bUJ1ZmZlcigpOwogICBpbnQgaWR4
X2F0X2RlbGF5ID0KICAgICAgIHNwZWN0cnVtX2J1ZmZlci5PZmZzZXRJbmRleChzcGVjdHJ1bV9i
dWZmZXIucmVhZCwgZGVsYXlfYmxvY2tzKTsKQEAgLTU3LDggKzYxLDkgQEAgdm9pZCBFY2hvQXVk
aWJpbGl0eTo6VXBkYXRlUmVuZGVyU3RhdGlvbmFyaXR5RmxhZ3MoCiAgIGludCBudW1fbG9va2Fo
ZWFkID0gcmVuZGVyX2J1ZmZlci5IZWFkcm9vbSgpIC0gZGVsYXlfYmxvY2tzICsgMTsKICAgbnVt
X2xvb2thaGVhZCA9IHN0ZDo6bWF4KDAsIG51bV9sb29rYWhlYWQpOwogCi0gIHJlbmRlcl9zdGF0
aW9uYXJpdHlfLlVwZGF0ZVN0YXRpb25hcml0eUZsYWdzKHNwZWN0cnVtX2J1ZmZlciwgaWR4X2F0
X2RlbGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dW1fbG9va2FoZWFkLCByZXZlcmJfZGVjYXkpOworICByZW5kZXJfc3RhdGlvbmFyaXR5Xy5VcGRh
dGVTdGF0aW9uYXJpdHlGbGFncygKKyAgICAgIHNwZWN0cnVtX2J1ZmZlciwgcmVuZGVyX3JldmVy
Yl9jb250cmlidXRpb25fc3BlY3RydW0sIGlkeF9hdF9kZWxheSwKKyAgICAgIG51bV9sb29rYWhl
YWQpOwogfQogCiB2b2lkIEVjaG9BdWRpYmlsaXR5OjpVcGRhdGVSZW5kZXJOb2lzZUVzdGltYXRv
cigKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fYXVkaWJpbGl0eS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvZWNob19hdWRpYmlsaXR5LmgKaW5kZXggM2IyNTJmM2VhMmI3ZTVjYmQ5MDY1Mzc2
YzI3Njk4ODdhNzYyOThiNy4uYjkwM2NhMGNmMWQ3OWVmYmE4ZTRiNzQ4NTM5MmY3NTAwZjc1NTIy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19hdWRpYmlsaXR5LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZWNob19hdWRpYmlsaXR5LmgKQEAgLTExLDExICsxMSw3IEBACiAjaWZuZGVm
IE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0VDSE9fQVVESUJJTElUWV9IXwogI2RlZmlu
ZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FQ0hPX0FVRElCSUxJVFlfSF8KIAotI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0j
aW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxzdGRkZWYuaD4K
IAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlf
dmlldy5oIgpAQCAtMjcsOCArMjMsNiBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3Mg
QXBtRGF0YUR1bXBlcjsKLQogY2xhc3MgRWNob0F1ZGliaWxpdHkgewogIHB1YmxpYzoKICAgZXhw
bGljaXQgRWNob0F1ZGliaWxpdHkoYm9vbCB1c2VfcmVuZGVyX3N0YXRpb25hcml0eV9hdF9pbml0
KTsKQEAgLTM2LDkgKzMwLDkgQEAgY2xhc3MgRWNob0F1ZGliaWxpdHkgewogCiAgIC8vIEZlZWQg
bmV3IHJlbmRlciBkYXRhIHRvIHRoZSBlY2hvIGF1ZGliaWxpdHkgZXN0aW1hdG9yLgogICB2b2lk
IFVwZGF0ZShjb25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCisgICAgICAgICAgICAg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZW5kZXJfcmV2ZXJiX2NvbnRyaWJ1dGlvbl9z
cGVjdHJ1bSwKICAgICAgICAgICAgICAgaW50IGRlbGF5X2Jsb2NrcywKLSAgICAgICAgICAgICAg
Ym9vbCBleHRlcm5hbF9kZWxheV9zZWVuLAotICAgICAgICAgICAgICBmbG9hdCByZXZlcmJfZGVj
YXkpOworICAgICAgICAgICAgICBib29sIGV4dGVybmFsX2RlbGF5X3NlZW4pOwogICAvLyBHZXQg
dGhlIHJlc2lkdWFsIGVjaG8gc2NhbGluZy4KICAgdm9pZCBHZXRSZXNpZHVhbEVjaG9TY2FsaW5n
KGJvb2wgZmlsdGVyX2hhc19oYWRfdGltZV90b19jb252ZXJnZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PiByZXNpZHVhbF9zY2FsaW5nKSBjb25z
dCB7CkBAIC02Miw5ICs1NiwxMCBAQCBjbGFzcyBFY2hvQXVkaWJpbGl0eSB7CiAgIHZvaWQgUmVz
ZXQoKTsKIAogICAvLyBVcGRhdGVzIHRoZSByZW5kZXIgc3RhdGlvbmFyaXR5IGZsYWdzIGZvciB0
aGUgY3VycmVudCBmcmFtZS4KLSAgdm9pZCBVcGRhdGVSZW5kZXJTdGF0aW9uYXJpdHlGbGFncyhj
b25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGRlbGF5X2Jsb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCByZXZlcmJfZGVjYXkpOworICB2b2lkIFVwZGF0ZVJlbmRlclN0
YXRpb25hcml0eUZsYWdzKAorICAgICAgY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVy
LAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHJlbmRlcl9yZXZlcmJfY29udHJp
YnV0aW9uX3NwZWN0cnVtLAorICAgICAgaW50IGRlbGF5X2Jsb2Nrcyk7CiAKICAgLy8gVXBkYXRl
cyB0aGUgbm9pc2UgZXN0aW1hdG9yIHdpdGggdGhlIG5ldyByZW5kZXIgZGF0YSBzaW5jZSB0aGUg
cHJldmlvdXMKICAgLy8gY2FsbCB0byB0aGlzIG1ldGhvZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fY2FuY2VsbGVy
My5jYwppbmRleCBlNTIxOWM3MmFiN2ZhZTlhOWUwYmZlMmU4ZTVmZjQ1MzA3NmM5NzQwLi5mMDVl
ZGIxNWMzZTU2YWY5OGNhNmJmY2E5MDI2MjMxNmY4NmNiMzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9lY2hvX2NhbmNlbGxlcjMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19jYW5j
ZWxsZXIzLmNjCkBAIC05LDkgKzksMTIgQEAKICAqLwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29w
cy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTQx
LDI1ICs0NCw0NCBAQCBib29sIEVuYWJsZVJldmVyYk1vZGVsbGluZygpIHsKICAgcmV0dXJuICFm
aWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM1JldmVyYk1vZGVsbGluZ0tpbGxTd2l0
Y2giKTsKIH0KIAotYm9vbCBFbmFibGVTdXBwcmVzc29yTmVhcmVuZEF2ZXJhZ2luZygpIHsKLSAg
cmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKAotICAgICAgIldlYlJUQy1BZWMzU3VwcHJl
c3Nvck5lYXJlbmRBdmVyYWdpbmdLaWxsU3dpdGNoIik7Citib29sIEVuYWJsZVVuaXR5SW5pdGlh
bFJhbXB1cEdhaW4oKSB7CisgIHJldHVybiBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMt
QWVjM0VuYWJsZVVuaXR5SW5pdGlhbFJhbXB1cEdhaW4iKTsKIH0KIAotYm9vbCBFbmFibGVTbG93
RmlsdGVyQWRhcHRhdGlvbigpIHsKLSAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJX
ZWJSVEMtQWVjM1Nsb3dGaWx0ZXJBZGFwdGF0aW9uS2lsbFN3aXRjaCIpOworYm9vbCBFbmFibGVV
bml0eU5vblplcm9SYW1wdXBHYWluKCkgeworICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxl
ZCgiV2ViUlRDLUFlYzNFbmFibGVVbml0eU5vblplcm9SYW1wdXBHYWluIik7CiB9CiAKLWJvb2wg
RW5hYmxlU2hhZG93RmlsdGVySnVtcHN0YXJ0KCkgewotICByZXR1cm4gIWZpZWxkX3RyaWFsOjpJ
c0VuYWJsZWQoIldlYlJUQy1BZWMzU2hhZG93RmlsdGVySnVtcHN0YXJ0S2lsbFN3aXRjaCIpOwor
Ym9vbCBFbmFibGVMb25nUmV2ZXJiKCkgeworICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxl
ZCgiV2ViUlRDLUFlYzNTaG9ydFJldmVyYktpbGxTd2l0Y2giKTsKIH0KIAotYm9vbCBFbmFibGVV
bml0eUluaXRpYWxSYW1wdXBHYWluKCkgewotICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxl
ZCgiV2ViUlRDLUFlYzNFbmFibGVVbml0eUluaXRpYWxSYW1wdXBHYWluIik7Citib29sIEVuYWJs
ZU5ld0ZpbHRlclBhcmFtcygpIHsKKyAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJX
ZWJSVEMtQWVjM05ld0ZpbHRlclBhcmFtc0tpbGxTd2l0Y2giKTsKIH0KIAotYm9vbCBFbmFibGVV
bml0eU5vblplcm9SYW1wdXBHYWluKCkgewotICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxl
ZCgiV2ViUlRDLUFlYzNFbmFibGVVbml0eU5vblplcm9SYW1wdXBHYWluIik7Citib29sIEVuYWJs
ZUxlZ2FjeURvbWluYW50TmVhcmVuZCgpIHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoIldlYlJUQy1BZWMzRW5hYmxlTGVnYWN5RG9taW5hbnROZWFyZW5kIik7Cit9CisKK2Jvb2wg
VXNlTGVnYWN5Tm9ybWFsU3VwcHJlc3NvclR1bmluZygpIHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFs
OjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzVXNlTGVnYWN5Tm9ybWFsU3VwcHJlc3NvclR1bmluZyIp
OworfQorCitib29sIEFjdGl2YXRlU3RhdGlvbmFyaXR5UHJvcGVydGllcygpIHsKKyAgcmV0dXJu
IGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzVXNlU3RhdGlvbmFyaXR5UHJvcGVy
dGllcyIpOworfQorCitib29sIEFjdGl2YXRlU3RhdGlvbmFyaXR5UHJvcGVydGllc0F0SW5pdCgp
IHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzVXNlU3RhdGlv
bmFyaXR5UHJvcGVydGllc0F0SW5pdCIpOworfQorCitib29sIEVuYWJsZU5ld1JlbmRlckJ1ZmZl
cmluZygpIHsKKyAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM05l
d1JlbmRlckJ1ZmZlcmluZ0tpbGxTd2l0Y2giKTsKK30KKworYm9vbCBVc2VFYXJseURlbGF5RGV0
ZWN0aW9uKCkgeworICByZXR1cm4gIWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMz
RWFybHlEZWxheURldGVjdGlvbktpbGxTd2l0Y2giKTsKIH0KIAogLy8gTWV0aG9kIGZvciBhZGp1
c3RpbmcgY29uZmlnIHBhcmFtZXRlciBkZXBlbmRlbmNpZXMuLgpAQCAtNzEsNjggKzkzLDI3IEBA
IEVjaG9DYW5jZWxsZXIzQ29uZmlnIEFkanVzdENvbmZpZyhjb25zdCBFY2hvQ2FuY2VsbGVyM0Nv
bmZpZyYgY29uZmlnKSB7CiAgICAgYWRqdXN0ZWRfY2ZnLmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVu
ID0gMC5mOwogICB9CiAKLSAgLy8gVXNlIGN1c3RvbWl6ZWQgcGFyYW1ldGVycyB3aGVuIHRoZSBz
eXN0ZW0gaGFzIGNsb2NrLWRyaWZ0LgotICBpZiAoY29uZmlnLmVjaG9fcmVtb3ZhbF9jb250cm9s
Lmhhc19jbG9ja19kcmlmdCkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykKLSAgICAgICAgPDwg
IkN1c3RvbWl6aW5nIHBhcmFtZXRlcnMgdG8gd29yayB3ZWxsIGZvciB0aGUgY2xvY2stZHJpZnQg
Y2FzZS4iOwotICAgIGlmIChjb25maWcuZXBfc3RyZW5ndGguYm91bmRlZF9lcmwpIHsKLSAgICAg
IGFkanVzdGVkX2NmZy5lcF9zdHJlbmd0aC5kZWZhdWx0X2xlbiA9IDAuODVmOwotICAgICAgYWRq
dXN0ZWRfY2ZnLmVwX3N0cmVuZ3RoLmxmID0gMC4wMWY7Ci0gICAgICBhZGp1c3RlZF9jZmcuZXBf
c3RyZW5ndGgubWYgPSAwLjAxZjsKLSAgICAgIGFkanVzdGVkX2NmZy5lcF9zdHJlbmd0aC5oZiA9
IDAuMDFmOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3df
c2l6ZSA9IDE7Ci0gICAgICBhZGp1c3RlZF9jZmcuZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5k
b3dfc2l6ZSA9IDE7Ci0gICAgICBhZGp1c3RlZF9jZmcuZWNob19tb2RlbC5ub25saW5lYXJfaG9s
ZCA9IDM7Ci0gICAgICBhZGp1c3RlZF9jZmcuZWNob19tb2RlbC5ub25saW5lYXJfcmVsZWFzZSA9
IDAuMDAxZjsKLSAgICB9IGVsc2UgewotICAgICAgYWRqdXN0ZWRfY2ZnLmVwX3N0cmVuZ3RoLmJv
dW5kZWRfZXJsID0gdHJ1ZTsKLSAgICAgIGFkanVzdGVkX2NmZy5kZWxheS5kb3duX3NhbXBsaW5n
X2ZhY3RvciA9IDI7Ci0gICAgICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4g
PSAwLjhmOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVwX3N0cmVuZ3RoLmxmID0gMC4wMWY7Ci0gICAg
ICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGgubWYgPSAwLjAxZjsKLSAgICAgIGFkanVzdGVkX2Nm
Zy5lcF9zdHJlbmd0aC5oZiA9IDAuMDFmOwotICAgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWlu
ID0gezMwLCAwLjFmLCAwLjhmLCAwLjAwMWYsIDIwMDc1MzQ0LmZ9OwotICAgICAgYWRqdXN0ZWRf
Y2ZnLmZpbHRlci5zaGFkb3cgPSB7MzAsIDAuN2YsIDIwMDc1MzQ0LmZ9OwotICAgICAgYWRqdXN0
ZWRfY2ZnLmZpbHRlci5tYWluX2luaXRpYWwgPSB7MzAsIDAuMWYsIDEuNWYsIDAuMDAxZiwgMjAw
NzUzNDQuZn07Ci0gICAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLnNoYWRvd19pbml0aWFsID0gezMw
LCAwLjlmLCAyMDA3NTM0NC5mfTsKLSAgICAgIGFkanVzdGVkX2NmZy5lY2hvX21vZGVsLnJlbmRl
cl9wcmVfd2luZG93X3NpemUgPSAyOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fbW9kZWwucmVu
ZGVyX3Bvc3Rfd2luZG93X3NpemUgPSAyOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fbW9kZWwu
bm9ubGluZWFyX2hvbGQgPSAzOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fbW9kZWwubm9ubGlu
ZWFyX3JlbGVhc2UgPSAwLjZmOwotICAgIH0KLSAgfQotCiAgIGlmIChVc2VTaG9ydERlbGF5RXN0
aW1hdG9yV2luZG93KCkpIHsKICAgICBhZGp1c3RlZF9jZmcuZGVsYXkubnVtX2ZpbHRlcnMgPQog
ICAgICAgICBzdGQ6Om1pbihhZGp1c3RlZF9jZmcuZGVsYXkubnVtX2ZpbHRlcnMsIHN0YXRpY19j
YXN0PHNpemVfdD4oNSkpOwogICB9CiAKLSAgaWYgKEVuYWJsZVJldmVyYkJhc2VkT25SZW5kZXIo
KSA9PSBmYWxzZSkgewotICAgIGFkanVzdGVkX2NmZy5lcF9zdHJlbmd0aC5yZXZlcmJfYmFzZWRf
b25fcmVuZGVyID0gZmFsc2U7CisgIGJvb2wgdXNlX25ld19yZW5kZXJfYnVmZmVyaW5nID0KKyAg
ICAgIEVuYWJsZU5ld1JlbmRlckJ1ZmZlcmluZygpICYmIGNvbmZpZy5idWZmZXJpbmcudXNlX25l
d19yZW5kZXJfYnVmZmVyaW5nOworICAvLyBPbGQgcmVuZGVyIGJ1ZmZlcmluZyBuZWVkcyBvbmUg
bW9yZSBmaWx0ZXIgdG8gY292ZXIgdGhlIHNhbWUgZGVsYXkuCisgIGlmICghdXNlX25ld19yZW5k
ZXJfYnVmZmVyaW5nKSB7CisgICAgYWRqdXN0ZWRfY2ZnLmRlbGF5Lm51bV9maWx0ZXJzICs9IDE7
CiAgIH0KIAotICBpZiAoIUVuYWJsZVN1cHByZXNzb3JOZWFyZW5kQXZlcmFnaW5nKCkpIHsKLSAg
ICBhZGp1c3RlZF9jZmcuc3VwcHJlc3Nvci5uZWFyZW5kX2F2ZXJhZ2VfYmxvY2tzID0gMTsKKyAg
aWYgKEVuYWJsZVJldmVyYkJhc2VkT25SZW5kZXIoKSA9PSBmYWxzZSkgeworICAgIGFkanVzdGVk
X2NmZy5lcF9zdHJlbmd0aC5yZXZlcmJfYmFzZWRfb25fcmVuZGVyID0gZmFsc2U7CiAgIH0KIAot
ICBpZiAoIUVuYWJsZVNsb3dGaWx0ZXJBZGFwdGF0aW9uKCkpIHsKLSAgICBpZiAoIUVuYWJsZVNo
YWRvd0ZpbHRlckp1bXBzdGFydCgpKSB7Ci0gICAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1haW4u
bGVha2FnZV9jb252ZXJnZWQgPSAwLjAwNWY7Ci0gICAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1h
aW4ubGVha2FnZV9kaXZlcmdlZCA9IDAuMWY7Ci0gICAgfQotICAgIGFkanVzdGVkX2NmZy5maWx0
ZXIubWFpbl9pbml0aWFsLmxlYWthZ2VfY29udmVyZ2VkID0gMC4wNWY7Ci0gICAgYWRqdXN0ZWRf
Y2ZnLmZpbHRlci5tYWluX2luaXRpYWwubGVha2FnZV9kaXZlcmdlZCA9IDUuZjsKLSAgfQotCi0g
IGlmICghRW5hYmxlU2hhZG93RmlsdGVySnVtcHN0YXJ0KCkpIHsKLSAgICBpZiAoRW5hYmxlU2xv
d0ZpbHRlckFkYXB0YXRpb24oKSkgewotICAgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluLmxl
YWthZ2VfY29udmVyZ2VkID0gMC4wMDA1ZjsKLSAgICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFp
bi5sZWFrYWdlX2RpdmVyZ2VkID0gMC4wMWY7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGFkanVzdGVk
X2NmZy5maWx0ZXIubWFpbi5sZWFrYWdlX2NvbnZlcmdlZCA9IDAuMDA1ZjsKLSAgICAgIGFkanVz
dGVkX2NmZy5maWx0ZXIubWFpbi5sZWFrYWdlX2RpdmVyZ2VkID0gMC4xZjsKLSAgICB9Ci0gICAg
YWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluLmVycm9yX2Zsb29yID0gMC4wMDFmOworICBpZiAoIUVu
YWJsZU5ld0ZpbHRlclBhcmFtcygpKSB7CisgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluLmxl
YWthZ2VfZGl2ZXJnZWQgPSAwLjAxZjsKKyAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1haW4uZXJy
b3JfZmxvb3IgPSAwLjFmOworICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbi5lcnJvcl9jZWls
ID0gMUUxMGY7CisgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluX2luaXRpYWwuZXJyb3JfY2Vp
bCA9IDFFMTBmOwogICB9CiAKICAgaWYgKEVuYWJsZVVuaXR5SW5pdGlhbFJhbXB1cEdhaW4oKSAm
JgpAQCAtMTQ3LDYgKzEyOCw0MiBAQCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBBZGp1c3RDb25maWco
Y29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZykgewogICAgIGFkanVzdGVkX2NmZy5l
Y2hvX3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5maXJzdF9ub25femVyb19nYWluID0gMS5m
OwogICB9CiAKKyAgaWYgKEVuYWJsZUxvbmdSZXZlcmIoKSkgeworICAgIGFkanVzdGVkX2NmZy5l
cF9zdHJlbmd0aC5kZWZhdWx0X2xlbiA9IDAuODhmOworICB9CisKKyAgaWYgKEVuYWJsZUxlZ2Fj
eURvbWluYW50TmVhcmVuZCgpKSB7CisgICAgYWRqdXN0ZWRfY2ZnLnN1cHByZXNzb3IubmVhcmVu
ZF90dW5pbmcgPQorICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6U3VwcHJlc3Nvcjo6VHVu
aW5nKAorICAgICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWc6OlN1cHByZXNzb3I6Ok1hc2tp
bmdUaHJlc2hvbGRzKC4yZiwgLjNmLCAuM2YpLAorICAgICAgICAgICAgRWNob0NhbmNlbGxlcjND
b25maWc6OlN1cHByZXNzb3I6Ok1hc2tpbmdUaHJlc2hvbGRzKC4wN2YsIC4xZiwgLjNmKSwKKyAg
ICAgICAgICAgIDIuMGYsIDAuMjVmKTsKKyAgfQorCisgIGlmIChVc2VMZWdhY3lOb3JtYWxTdXBw
cmVzc29yVHVuaW5nKCkpIHsKKyAgICBhZGp1c3RlZF9jZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVu
aW5nID0KKyAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWc6OlN1cHByZXNzb3I6OlR1bmluZygK
KyAgICAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpNYXNraW5nVGhy
ZXNob2xkcyguMmYsIC4zZiwgLjNmKSwKKyAgICAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmln
OjpTdXBwcmVzc29yOjpNYXNraW5nVGhyZXNob2xkcyguMDdmLCAuMWYsIC4zZiksCisgICAgICAg
ICAgICAyLjBmLCAwLjI1Zik7CisKKyAgICBhZGp1c3RlZF9jZmcuc3VwcHJlc3Nvci5kb21pbmFu
dF9uZWFyZW5kX2RldGVjdGlvbi5lbnJfdGhyZXNob2xkID0gMTAuZjsKKyAgICBhZGp1c3RlZF9j
Zmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5zbnJfdGhyZXNob2xkID0g
MTAuZjsKKyAgICBhZGp1c3RlZF9jZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVj
dGlvbi5ob2xkX2R1cmF0aW9uID0gMjU7CisgIH0KKworICBpZiAoQWN0aXZhdGVTdGF0aW9uYXJp
dHlQcm9wZXJ0aWVzKCkpIHsKKyAgICBhZGp1c3RlZF9jZmcuZWNob19hdWRpYmlsaXR5LnVzZV9z
dGF0aW9uYXJ5X3Byb3BlcnRpZXMgPSB0cnVlOworICB9CisKKyAgaWYgKEFjdGl2YXRlU3RhdGlv
bmFyaXR5UHJvcGVydGllc0F0SW5pdCgpKSB7CisgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fYXVkaWJp
bGl0eS51c2Vfc3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdCA9IHRydWU7CisgIH0KKwor
ICBpZiAoIVVzZUVhcmx5RGVsYXlEZXRlY3Rpb24oKSkgeworICAgIGFkanVzdGVkX2NmZy5kZWxh
eS5kZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcyA9IHsyNSwgMjV9OworICB9CisKICAgcmV0dXJu
IGFkanVzdGVkX2NmZzsKIH0KIApAQCAtMzMwLDEyICszNDcsMTYgQEAgaW50IEVjaG9DYW5jZWxs
ZXIzOjppbnN0YW5jZV9jb3VudF8gPSAwOwogRWNob0NhbmNlbGxlcjM6OkVjaG9DYW5jZWxsZXIz
KGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgdXNlX2hpZ2hwYXNzX2ZpbHRlcikKLSAgICA6IEVjaG9DYW5jZWxsZXIzKAot
ICAgICAgICAgIEFkanVzdENvbmZpZyhjb25maWcpLAotICAgICAgICAgIHNhbXBsZV9yYXRlX2h6
LAotICAgICAgICAgIHVzZV9oaWdocGFzc19maWx0ZXIsCi0gICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEJsb2NrUHJvY2Vzc29yPigKLSAgICAgICAgICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0
ZShBZGp1c3RDb25maWcoY29uZmlnKSwgc2FtcGxlX3JhdGVfaHopKSkge30KKyAgICA6IEVjaG9D
YW5jZWxsZXIzKEFkanVzdENvbmZpZyhjb25maWcpLAorICAgICAgICAgICAgICAgICAgICAgc2Ft
cGxlX3JhdGVfaHosCisgICAgICAgICAgICAgICAgICAgICB1c2VfaGlnaHBhc3NfZmlsdGVyLAor
ICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVOZXdSZW5kZXJCdWZmZXJpbmcoKSAmJgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmJ1ZmZlcmluZy51c2VfbmV3X3Jl
bmRlcl9idWZmZXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBCbG9ja1Byb2Nl
c3Nvcjo6Q3JlYXRlMihBZGp1c3RDb25maWcoY29uZmlnKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfcmF0ZV9oeikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlKEFkanVzdENv
bmZpZyhjb25maWcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlX3JhdGVfaHopKSkge30KIEVjaG9DYW5jZWxsZXIzOjpFY2hvQ2Fu
Y2VsbGVyMyhjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHVzZV9oaWdocGFzc19maWx0ZXIsCkBAIC00MjUsNiArNDQ2LDEw
IEBAIHZvaWQgRWNob0NhbmNlbGxlcjM6OlByb2Nlc3NDYXB0dXJlKEF1ZGlvQnVmZmVyKiBjYXB0
dXJlLCBib29sIGxldmVsX2NoYW5nZSkgewogICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNf
Y2FsbF9vcmRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KEVj
aG9DYW5jZWxsZXIzQXBpQ2FsbDo6a0NhcHR1cmUpKTsKIAorICAvLyBSZXBvcnQgY2FwdHVyZSBj
YWxsIGluIHRoZSBtZXRyaWNzIGFuZCBwZXJpb2RpY2FsbHkgdXBkYXRlIEFQSSBjYWxsCisgIC8v
IG1ldHJpY3MuCisgIGFwaV9jYWxsX21ldHJpY3NfLlJlcG9ydENhcHR1cmVDYWxsKCk7CisKICAg
Ly8gT3B0aW9uYWxseSBkZWxheSB0aGUgY2FwdHVyZSBzaWduYWwuCiAgIGlmIChjb25maWdfLmRl
bGF5LmZpeGVkX2NhcHR1cmVfZGVsYXlfc2FtcGxlcyA+IDApIHsKICAgICBibG9ja19kZWxheV9i
dWZmZXJfLkRlbGF5U2lnbmFsKGNhcHR1cmUpOwpAQCAtNDc5LDYgKzUwNCw5IEBAIHZvaWQgRWNo
b0NhbmNlbGxlcjM6OkVtcHR5UmVuZGVyUXVldWUoKSB7CiAgIGJvb2wgZnJhbWVfdG9fYnVmZmVy
ID0KICAgICAgIHJlbmRlcl90cmFuc2Zlcl9xdWV1ZV8uUmVtb3ZlKCZyZW5kZXJfcXVldWVfb3V0
cHV0X2ZyYW1lXyk7CiAgIHdoaWxlIChmcmFtZV90b19idWZmZXIpIHsKKyAgICAvLyBSZXBvcnQg
cmVuZGVyIGNhbGwgaW4gdGhlIG1ldHJpY3MuCisgICAgYXBpX2NhbGxfbWV0cmljc18uUmVwb3J0
UmVuZGVyQ2FsbCgpOworCiAgICAgQnVmZmVyUmVuZGVyRnJhbWVDb250ZW50KCZyZW5kZXJfcXVl
dWVfb3V0cHV0X2ZyYW1lXywgMCwgJnJlbmRlcl9ibG9ja2VyXywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmxvY2tfcHJvY2Vzc29yXy5nZXQoKSwgJmJsb2NrXywgJnN1Yl9mcmFtZV92
aWV3Xyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvZWNob19jYW5jZWxsZXIzLmgKaW5kZXggZjU1MjBiYTNhY2U1YzM0OTJh
NmIyYTI2ODk2Yzg4MzI1NWY4ODU1YS4uNjcxZDI3MTY3Njc1YzY2Yzk5YzNlMjFlMjU3MmM2YmFm
NzM0ZTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19jYW5jZWxsZXIzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvZWNob19jYW5jZWxsZXIzLmgKQEAgLTExLDcgKzExLDE0IEBACiAj
aWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0VDSE9fQ0FOQ0VMTEVSM19IXwog
I2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FQ0hPX0NBTkNFTExFUjNfSF8K
IAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0
b3I+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9l
Y2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY29udHJv
bC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxsX2pp
dHRlcl9tZXRyaWNzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YmxvY2tfZGVsYXlfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYmxvY2tfZnJhbWVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYmxvY2tfcHJvY2Vzc29yLmgiCkBAIC0xOSw5ICsyNiwxMSBAQAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZyYW1lX2Jsb2NrZXIuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhY2VfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3N3YXBfcXVldWUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTEzMiw2ICsxNDEsNyBAQCBjbGFzcyBFY2hvQ2Fu
Y2VsbGVyMyA6IHB1YmxpYyBFY2hvQ29udHJvbCB7CiAgIHN0ZDo6dmVjdG9yPHJ0Yzo6QXJyYXlW
aWV3PGZsb2F0Pj4gc3ViX2ZyYW1lX3ZpZXdfCiAgICAgICBSVENfR1VBUkRFRF9CWShjYXB0dXJl
X3JhY2VfY2hlY2tlcl8pOwogICBCbG9ja0RlbGF5QnVmZmVyIGJsb2NrX2RlbGF5X2J1ZmZlcl8g
UlRDX0dVQVJERURfQlkoY2FwdHVyZV9yYWNlX2NoZWNrZXJfKTsKKyAgQXBpQ2FsbEppdHRlck1l
dHJpY3MgYXBpX2NhbGxfbWV0cmljc18gUlRDX0dVQVJERURfQlkoY2FwdHVyZV9yYWNlX2NoZWNr
ZXJfKTsKIAogICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKEVjaG9DYW5jZWxs
ZXIzKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfZGVsYXlfZXN0
aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvci5jYwpp
bmRleCA2MzhkZGM0NDA4NGU4NWYyYWM2NzBjOWVmNTIwMjNlY2U0ZjZhMzZmLi42MDY5ZWQ2YmU2
OTdkYmM4MzE1MTcwMzAzNzYzZjZmM2M1Zjk4ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9lY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9f
cGF0aF9kZWxheV9lc3RpbWF0b3IuY2MKQEAgLTksMzEgKzksMjEgQEAKICAqLwogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3Iu
aCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxhcnJheT4KIAogI2luY2x1ZGUg
ImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJfYnVmZmVyLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2lu
Y2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2Ugewot
c2l6ZV90IEdldERvd25TYW1wbGluZ0ZhY3Rvcihjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYg
Y29uZmlnKSB7Ci0gIC8vIERvIG5vdCB1c2UgZG93biBzYW1wbGluZyBmYWN0b3IgOCBpZiBraWxs
IHN3aXRjaCBpcyB0cmlnZ2VyZWQuCi0gIHJldHVybiAoY29uZmlnLmRlbGF5LmRvd25fc2FtcGxp
bmdfZmFjdG9yID09IDggJiYKLSAgICAgICAgICBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJS
VEMtQWVjM0Rvd25TYW1wbGluZ0ZhY3RvcjhLaWxsU3dpdGNoIikpCi0gICAgICAgICAgICAgPyA0
Ci0gICAgICAgICAgICAgOiBjb25maWcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3I7Ci19Ci19
ICAvLyBuYW1lc3BhY2UKIAogRWNob1BhdGhEZWxheUVzdGltYXRvcjo6RWNob1BhdGhEZWxheUVz
dGltYXRvcigKICAgICBBcG1EYXRhRHVtcGVyKiBkYXRhX2R1bXBlciwKICAgICBjb25zdCBFY2hv
Q2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKQogICAgIDogZGF0YV9kdW1wZXJfKGRhdGFfZHVtcGVy
KSwKLSAgICAgIGRvd25fc2FtcGxpbmdfZmFjdG9yXyhHZXREb3duU2FtcGxpbmdGYWN0b3IoY29u
ZmlnKSksCisgICAgICBkb3duX3NhbXBsaW5nX2ZhY3Rvcl8oY29uZmlnLmRlbGF5LmRvd25fc2Ft
cGxpbmdfZmFjdG9yKSwKICAgICAgIHN1Yl9ibG9ja19zaXplXyhkb3duX3NhbXBsaW5nX2ZhY3Rv
cl8gIT0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtCbG9ja1NpemUgLyBkb3duX3Nh
bXBsaW5nX2ZhY3Rvcl8KICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrQmxvY2tTaXplKSwK
QEAgLTQ1LDcgKzM1LDcgQEAgRWNob1BhdGhEZWxheUVzdGltYXRvcjo6RWNob1BhdGhEZWxheUVz
dGltYXRvcigKICAgICAgICAgICBrTWF0Y2hlZEZpbHRlcldpbmRvd1NpemVTdWJCbG9ja3MsCiAg
ICAgICAgICAgY29uZmlnLmRlbGF5Lm51bV9maWx0ZXJzLAogICAgICAgICAgIGtNYXRjaGVkRmls
dGVyQWxpZ25tZW50U2hpZnRTaXplU3ViQmxvY2tzLAotICAgICAgICAgIEdldERvd25TYW1wbGlu
Z0ZhY3Rvcihjb25maWcpID09IDgKKyAgICAgICAgICBjb25maWcuZGVsYXkuZG93bl9zYW1wbGlu
Z19mYWN0b3IgPT0gOAogICAgICAgICAgICAgICA/IGNvbmZpZy5yZW5kZXJfbGV2ZWxzLnBvb3Jf
ZXhjaXRhdGlvbl9yZW5kZXJfbGltaXRfZHM4CiAgICAgICAgICAgICAgIDogY29uZmlnLnJlbmRl
cl9sZXZlbHMucG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdCwKICAgICAgICAgICBjb25maWcu
ZGVsYXkuZGVsYXlfZXN0aW1hdGVfc21vb3RoaW5nLApAQCAtNTksMTMgKzQ5LDggQEAgRWNob1Bh
dGhEZWxheUVzdGltYXRvcjo6RWNob1BhdGhEZWxheUVzdGltYXRvcigKIAogRWNob1BhdGhEZWxh
eUVzdGltYXRvcjo6fkVjaG9QYXRoRGVsYXlFc3RpbWF0b3IoKSA9IGRlZmF1bHQ7CiAKLXZvaWQg
RWNob1BhdGhEZWxheUVzdGltYXRvcjo6UmVzZXQoYm9vbCBzb2Z0X3Jlc2V0KSB7Ci0gIGlmICgh
c29mdF9yZXNldCkgewotICAgIG1hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yXy5SZXNldCgp
OwotICB9Ci0gIG1hdGNoZWRfZmlsdGVyXy5SZXNldCgpOwotICBvbGRfYWdncmVnYXRlZF9sYWdf
ID0gYWJzbDo6bnVsbG9wdDsKLSAgY29uc2lzdGVudF9lc3RpbWF0ZV9jb3VudGVyXyA9IDA7Cit2
b2lkIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3I6OlJlc2V0KGJvb2wgcmVzZXRfZGVsYXlfY29uZmlk
ZW5jZSkgeworICBSZXNldCh0cnVlLCByZXNldF9kZWxheV9jb25maWRlbmNlKTsKIH0KIAogYWJz
bDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gRWNob1BhdGhEZWxheUVzdGltYXRvcjo6RXN0aW1h
dGVEZWxheSgKQEAgLTg4LDYgKzczLDEyIEBAIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+
IEVjaG9QYXRoRGVsYXlFc3RpbWF0b3I6OkVzdGltYXRlRGVsYXkoCiAgICAgICBtYXRjaGVkX2Zp
bHRlcl9sYWdfYWdncmVnYXRvcl8uQWdncmVnYXRlKAogICAgICAgICAgIG1hdGNoZWRfZmlsdGVy
Xy5HZXRMYWdFc3RpbWF0ZXMoKSk7CiAKKyAgLy8gUnVuIGNsb2NrZHJpZnQgZGV0ZWN0aW9uLgor
ICBpZiAoYWdncmVnYXRlZF9tYXRjaGVkX2ZpbHRlcl9sYWcgJiYKKyAgICAgICgqYWdncmVnYXRl
ZF9tYXRjaGVkX2ZpbHRlcl9sYWcpLnF1YWxpdHkgPT0KKyAgICAgICAgICBEZWxheUVzdGltYXRl
OjpRdWFsaXR5OjprUmVmaW5lZCkKKyAgICBjbG9ja2RyaWZ0X2RldGVjdG9yXy5VcGRhdGUoKCph
Z2dyZWdhdGVkX21hdGNoZWRfZmlsdGVyX2xhZykuZGVsYXkpOworCiAgIC8vIFRPRE8ocGVhaCk6
IE1vdmUgdGhpcyBsb2dnaW5nIG91dHNpZGUgb2YgdGhpcyBjbGFzcyBvbmNlIEVjaG9DYW5jZWxs
ZXIzCiAgIC8vIGRldmVsb3BtZW50IGlzIGRvbmUuCiAgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygK
QEAgLTExMiwxMCArMTAzLDE5IEBAIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IEVjaG9Q
YXRoRGVsYXlFc3RpbWF0b3I6OkVzdGltYXRlRGVsYXkoCiAgIG9sZF9hZ2dyZWdhdGVkX2xhZ18g
PSBhZ2dyZWdhdGVkX21hdGNoZWRfZmlsdGVyX2xhZzsKICAgY29uc3RleHByIHNpemVfdCBrTnVt
QmxvY2tzUGVyU2Vjb25kQnkyID0ga051bUJsb2Nrc1BlclNlY29uZCAvIDI7CiAgIGlmIChjb25z
aXN0ZW50X2VzdGltYXRlX2NvdW50ZXJfID4ga051bUJsb2Nrc1BlclNlY29uZEJ5MikgewotICAg
IFJlc2V0KHRydWUpOworICAgIFJlc2V0KGZhbHNlLCBmYWxzZSk7CiAgIH0KIAogICByZXR1cm4g
YWdncmVnYXRlZF9tYXRjaGVkX2ZpbHRlcl9sYWc7CiB9CiAKK3ZvaWQgRWNob1BhdGhEZWxheUVz
dGltYXRvcjo6UmVzZXQoYm9vbCByZXNldF9sYWdfYWdncmVnYXRvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXNldF9kZWxheV9jb25maWRlbmNlKSB7CisgIGlm
IChyZXNldF9sYWdfYWdncmVnYXRvcikgeworICAgIG1hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdh
dG9yXy5SZXNldChyZXNldF9kZWxheV9jb25maWRlbmNlKTsKKyAgfQorICBtYXRjaGVkX2ZpbHRl
cl8uUmVzZXQoKTsKKyAgb2xkX2FnZ3JlZ2F0ZWRfbGFnXyA9IGFic2w6Om51bGxvcHQ7CisgIGNv
bnNpc3RlbnRfZXN0aW1hdGVfY291bnRlcl8gPSAwOworfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvci5oCmluZGV4IGNlYTlh
YmNiNTE1MTY5Y2Q3YmMxZmRkM2Y3NzFlNTAzOTRiNjVhNzAuLjFmMTQ3MzVkMWE1MWFmYjBkNGRm
YjNhZTY4NjZiOTJhODI4MDg3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0
aF9kZWxheV9lc3RpbWF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfZGVsYXlf
ZXN0aW1hdG9yLmgKQEAgLTExLDEzICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfQUVDM19FQ0hPX1BBVEhfREVMQVlfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVM
RVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0VDSE9fUEFUSF9ERUxBWV9FU1RJTUFUT1JfSF8KIAot
I2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KIAogI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2Nv
bmZpZy5oIgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2RlY2ltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2RlbGF5X2VzdGltYXRlLmgiCi0jaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXJf
bGFnX2FnZ3JlZ2F0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
CkBAIC0yNSw2ICsyNSw4IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgQXBtRGF0YUR1
bXBlcjsKK3N0cnVjdCBEb3duc2FtcGxlZFJlbmRlckJ1ZmZlcjsKK3N0cnVjdCBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZzsKIAogLy8gRXN0aW1hdGVzIHRoZSBkZWxheSBvZiB0aGUgZWNobyBwYXRoLgog
Y2xhc3MgRWNob1BhdGhEZWxheUVzdGltYXRvciB7CkBAIC0zMyw5ICszNSw5IEBAIGNsYXNzIEVj
aG9QYXRoRGVsYXlFc3RpbWF0b3IgewogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVj
aG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpOwogICB+RWNob1BhdGhEZWxheUVzdGltYXRvcigp
OwogCi0gIC8vIFJlc2V0cyB0aGUgZXN0aW1hdGlvbi4gSWYgdGhlIHNvZnQtcmVzZXQgaXMgc3Bl
Y2lmaWVkLCBvbmx5ICB0aGUgbWF0Y2hlZAotICAvLyBmaWx0ZXJzIGFyZSByZXNldC4KLSAgdm9p
ZCBSZXNldChib29sIHNvZnRfcmVzZXQpOworICAvLyBSZXNldHMgdGhlIGVzdGltYXRpb24uIElm
IHRoZSBkZWxheSBjb25maWRlbmNlIGlzIHJlc2V0LCB0aGUgcmVzZXQgYmVoYXZpb3IKKyAgLy8g
aXMgYXMgaWYgdGhlIGNhbGwgaXMgcmVzdGFydGVkLgorICB2b2lkIFJlc2V0KGJvb2wgcmVzZXRf
ZGVsYXlfY29uZmlkZW5jZSk7CiAKICAgLy8gUHJvZHVjZSBhIGRlbGF5IGVzdGltYXRlIGlmIHN1
Y2ggaXMgYXZhbGlhYmxlLgogICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBFc3RpbWF0
ZURlbGF5KApAQCAtNDgsNiArNTAsMTEgQEAgY2xhc3MgRWNob1BhdGhEZWxheUVzdGltYXRvciB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bl9zYW1wbGluZ19m
YWN0b3JfKTsKICAgfQogCisgIC8vIFJldHVybnMgdGhlIGxldmVsIG9mIGRldGVjdGVkIGNsb2Nr
ZHJpZnQuCisgIENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWwgQ2xvY2tkcmlmdCgpIGNvbnN0IHsK
KyAgICByZXR1cm4gY2xvY2tkcmlmdF9kZXRlY3Rvcl8uQ2xvY2tkcmlmdExldmVsKCk7CisgIH0K
KwogIHByaXZhdGU6CiAgIEFwbURhdGFEdW1wZXIqIGNvbnN0IGRhdGFfZHVtcGVyXzsKICAgY29u
c3Qgc2l6ZV90IGRvd25fc2FtcGxpbmdfZmFjdG9yXzsKQEAgLTU3LDYgKzY0LDEwIEBAIGNsYXNz
IEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IgewogICBNYXRjaGVkRmlsdGVyTGFnQWdncmVnYXRvciBt
YXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRvcl87CiAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0
aW1hdGU+IG9sZF9hZ2dyZWdhdGVkX2xhZ187CiAgIHNpemVfdCBjb25zaXN0ZW50X2VzdGltYXRl
X2NvdW50ZXJfID0gMDsKKyAgQ2xvY2tkcmlmdERldGVjdG9yIGNsb2NrZHJpZnRfZGV0ZWN0b3Jf
OworCisgIC8vIEludGVybmFsIHJlc2V0IG1ldGhvZCB3aXRoIG1vcmUgZ3JhbnVsYXJpdHkuCisg
IHZvaWQgUmVzZXQoYm9vbCByZXNldF9sYWdfYWdncmVnYXRvciwgYm9vbCByZXNldF9kZWxheV9j
b25maWRlbmNlKTsKIAogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEVjaG9QYXRoRGVs
YXlFc3RpbWF0b3IpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9k
ZWxheV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfZGVs
YXlfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCmluZGV4IDMxMWE0YTIyZDVmOGVlMWVjNzY0NzcxMDUw
ZGQyOWVhMWY2NDBlM2UuLmE0ZTMxMzNiYjViYWFlMThiMzY1ZWYzNzU4YzRkYmQ2MTFjZjA1NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3JfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvcl91
bml0dGVzdC5jYwpAQCAtMzksNyArMzksNyBAQCBURVNUKEVjaG9QYXRoRGVsYXlFc3RpbWF0b3Is
IEJhc2ljQXBpQ2FsbHMpIHsKICAgQXBtRGF0YUR1bXBlciBkYXRhX2R1bXBlcigwKTsKICAgRWNo
b0NhbmNlbGxlcjNDb25maWcgY29uZmlnOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlC
dWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3Jl
YXRlKGNvbmZpZywgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmln
LCAzKSk7CiAgIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IgZXN0aW1hdG9yKCZkYXRhX2R1bXBlciwg
Y29uZmlnKTsKICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiByZW5kZXIoMywgc3Rk
Ojp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUpKTsKICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGNhcHR1
cmUoa0Jsb2NrU2l6ZSk7CkBAIC02NCwxMiArNjQsOSBAQCBURVNUKEVjaG9QYXRoRGVsYXlFc3Rp
bWF0b3IsIERlbGF5RXN0aW1hdGlvbikgewogICAgIGNvbmZpZy5kZWxheS5udW1fZmlsdGVycyA9
IDEwOwogICAgIGZvciAoc2l6ZV90IGRlbGF5X3NhbXBsZXMgOiB7MzAsIDY0LCAxNTAsIDIwMCwg
ODAwLCA0MDAwfSkgewogICAgICAgU0NPUEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQoZGVsYXlf
c2FtcGxlcywgZG93bl9zYW1wbGluZ19mYWN0b3IpKTsKLQotICAgICAgY29uZmlnLmRlbGF5LmFw
aV9jYWxsX2ppdHRlcl9ibG9ja3MgPSA1OwogICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRl
bGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgICAgIFJlbmRlckRlbGF5QnVm
ZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7Ci0gICAgICBEZWxheUJ1ZmZlcjxmbG9hdD4gc2lnbmFs
X2RlbGF5X2J1ZmZlcigKLSAgICAgICAgICBkZWxheV9zYW1wbGVzICsgMiAqIGNvbmZpZy5kZWxh
eS5hcGlfY2FsbF9qaXR0ZXJfYmxvY2tzICogNjQpOworICAgICAgICAgIFJlbmRlckRlbGF5QnVm
ZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOworICAgICAgRGVsYXlCdWZmZXI8ZmxvYXQ+IHNpZ25h
bF9kZWxheV9idWZmZXIoZGVsYXlfc2FtcGxlcyk7CiAgICAgICBFY2hvUGF0aERlbGF5RXN0aW1h
dG9yIGVzdGltYXRvcigmZGF0YV9kdW1wZXIsIGNvbmZpZyk7CiAKICAgICAgIGFic2w6Om9wdGlv
bmFsPERlbGF5RXN0aW1hdGU+IGVzdGltYXRlZF9kZWxheV9zYW1wbGVzOwpAQCAtOTcsOSArOTQs
NyBAQCBURVNUKEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IsIERlbGF5RXN0aW1hdGlvbikgewogICAg
ICAgICAvLyBkb21haW4uCiAgICAgICAgIHNpemVfdCBkZWxheV9kcyA9IGRlbGF5X3NhbXBsZXMg
LyBkb3duX3NhbXBsaW5nX2ZhY3RvcjsKICAgICAgICAgc2l6ZV90IGVzdGltYXRlZF9kZWxheV9k
cyA9Ci0gICAgICAgICAgICAoZXN0aW1hdGVkX2RlbGF5X3NhbXBsZXMtPmRlbGF5IC0KLSAgICAg
ICAgICAgICAoY29uZmlnLmRlbGF5LmFwaV9jYWxsX2ppdHRlcl9ibG9ja3MgKyAxKSAqIDY0KSAv
Ci0gICAgICAgICAgICBkb3duX3NhbXBsaW5nX2ZhY3RvcjsKKyAgICAgICAgICAgIGVzdGltYXRl
ZF9kZWxheV9zYW1wbGVzLT5kZWxheSAvIGRvd25fc2FtcGxpbmdfZmFjdG9yOwogICAgICAgICBF
WFBFQ1RfTkVBUihkZWxheV9kcywgZXN0aW1hdGVkX2RlbGF5X2RzLCAxKTsKICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgIEFERF9GQUlMVVJFKCk7CkBAIC0xMTgsNyArMTEzLDcgQEAgVEVTVChFY2hv
UGF0aERlbGF5RXN0aW1hdG9yLCBOb0RlbGF5RXN0aW1hdGVzRm9yTG93TGV2ZWxSZW5kZXJTaWdu
YWxzKSB7CiAgIEFwbURhdGFEdW1wZXIgZGF0YV9kdW1wZXIoMCk7CiAgIEVjaG9QYXRoRGVsYXlF
c3RpbWF0b3IgZXN0aW1hdG9yKCZkYXRhX2R1bXBlciwgY29uZmlnKTsKICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVy
RGVsYXlCdWZmZXI6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCAzKSk7CisgICAgICBS
ZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCAzKSk7CiAg
IGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgMTAwOyArK2spIHsKICAgICBSYW5kb21pemVTYW1wbGVW
ZWN0b3IoJnJhbmRvbV9nZW5lcmF0b3IsIHJlbmRlclswXSk7CiAgICAgZm9yIChhdXRvJiByZW5k
ZXJfayA6IHJlbmRlclswXSkgewpAQCAtMTQyLDcgKzEzNyw3IEBAIFRFU1QoRWNob1BhdGhEZWxh
eUVzdGltYXRvciwgRElTQUJMRURfV3JvbmdSZW5kZXJCbG9ja1NpemUpIHsKICAgRWNob0NhbmNl
bGxlcjNDb25maWcgY29uZmlnOwogICBFY2hvUGF0aERlbGF5RXN0aW1hdG9yIGVzdGltYXRvcigm
ZGF0YV9kdW1wZXIsIGNvbmZpZyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZl
cj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUo
Y29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMp
KTsKICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGNhcHR1cmUoa0Jsb2NrU2l6ZSk7CiAgIEVYUEVDVF9E
RUFUSChlc3RpbWF0b3IuRXN0aW1hdGVEZWxheSgKICAgICAgICAgICAgICAgICAgICByZW5kZXJf
ZGVsYXlfYnVmZmVyLT5HZXREb3duc2FtcGxlZFJlbmRlckJ1ZmZlcigpLCBjYXB0dXJlKSwKQEAg
LTE1Nyw3ICsxNTIsNyBAQCBURVNUKEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IsIFdyb25nQ2FwdHVy
ZUJsb2NrU2l6ZSkgewogICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CiAgIEVjaG9QYXRo
RGVsYXlFc3RpbWF0b3IgZXN0aW1hdG9yKCZkYXRhX2R1bXBlciwgY29uZmlnKTsKICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAg
UmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5
QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogICBzdGQ6OnZlY3RvcjxmbG9hdD4gY2FwdHVy
ZShzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSAtIDEpKTsKICAgRVhQRUNUX0RFQVRIKGVz
dGltYXRvci5Fc3RpbWF0ZURlbGF5KAogICAgICAgICAgICAgICAgICAgIHJlbmRlcl9kZWxheV9i
dWZmZXItPkdldERvd25zYW1wbGVkUmVuZGVyQnVmZmVyKCksIGNhcHR1cmUpLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19y
ZW1vdmVyLmNjCmluZGV4IGFjZGFmMzEwNGI5ZmFlMjgwOTlhMDJkMWQ2Njg2YzRlNWYyNzMxNTYu
LmNmYjczOTUxOTkyY2Q5Nzg0ZDMzMjhmNTY5OGJmYjljYTdlMjQzZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3Jl
bW92ZXIuY2MKQEAgLTEwLDI2ICsxMCwyOSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlci5oIgogCiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1
ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxhcnJheT4KICNp
bmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8bnVtZXJpYz4KLSNpbmNsdWRlIDxzdHJpbmc+CiAK
ICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvYWVjM19mZnQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9hZWNfc3RhdGUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9jb21mb3J0X25vaXNlX2dlbmVyYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF92YXJpYWJpbGl0eS5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlcl9tZXRyaWNzLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2RhdGEuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6
ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9l
Y2hvX2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3N1YnRyYWN0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9z
dWJ0cmFjdG9yX291dHB1dC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1cHByZXNzaW9uX2ZpbHRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW4uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9h
dG9taWNvcHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgog
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCkBAIC0xNzUs
NyArMTc4LDcgQEAgRWNob1JlbW92ZXJJbXBsOjpFY2hvUmVtb3ZlckltcGwoY29uc3QgRWNob0Nh
bmNlbGxlcjNDb25maWcmIGNvbmZpZywKICAgICAgIHN1YnRyYWN0b3JfKGNvbmZpZywgZGF0YV9k
dW1wZXJfLmdldCgpLCBvcHRpbWl6YXRpb25fKSwKICAgICAgIHN1cHByZXNzaW9uX2dhaW5fKGNv
bmZpZ18sIG9wdGltaXphdGlvbl8sIHNhbXBsZV9yYXRlX2h6KSwKICAgICAgIGNuZ18ob3B0aW1p
emF0aW9uXyksCi0gICAgICBzdXBwcmVzc2lvbl9maWx0ZXJfKHNhbXBsZV9yYXRlX2h6XyksCisg
ICAgICBzdXBwcmVzc2lvbl9maWx0ZXJfKG9wdGltaXphdGlvbl8sIHNhbXBsZV9yYXRlX2h6Xyks
CiAgICAgICByZW5kZXJfc2lnbmFsX2FuYWx5emVyXyhjb25maWdfKSwKICAgICAgIHJlc2lkdWFs
X2VjaG9fZXN0aW1hdG9yXyhjb25maWdfKSwKICAgICAgIGFlY19zdGF0ZV8oY29uZmlnXykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21ldHJpY3MuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJfbWV0cmljcy5jYwppbmRleCBhMDQwMjZiNGY1ZjU1YmZi
NGU0MmE5OGIzMDYzZGQ0Mzc3MDdjMzY2Li5kYTdhMjI0ZTg2M2E2NDYzMGI4Y2VhMjk4MDEwOTdm
OWRjZTY5NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJfbWV0cmlj
cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJfbWV0cmljcy5jYwpAQCAtMTEs
OSArMTEsMTEgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hv
X3JlbW92ZXJfbWV0cmljcy5oIgogCiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxudW1lcmljPgogCisjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9t
aW5tYXguaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlcl9tZXRyaWNzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJfbWV0cmljcy5oCmluZGV4IDE3YjgwM2ExY2Y5ODg4YmQw
YjQ5Yjg3Yzc1NWNiY2RhM2VmMDEzM2QuLjA3MDdhNWYwMzFkOWFlNjE5YjEzZDFmMTUyZTY5MDJh
YjQzZmFkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlcl9tZXRyaWNz
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21ldHJpY3MuaApAQCAtMTEsNiAr
MTEsOSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FQ0hPX1JFTU9W
RVJfTUVUUklDU19IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FQ0hP
X1JFTU9WRVJfTUVUUklDU19IXwogCisjaW5jbHVkZSA8YXJyYXk+CisKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlY19zdGF0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19y
ZW1vdmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX3VuaXR0ZXN0
LmNjCmluZGV4IGRhMDNmNGM4ZThkYjdkZjU2M2ExYTI4ZDAyM2EwYTMzMzNkZWE5MTcuLjhiZjc2
YzQwNjBkNjIwNDViODg4Yjc2NGE1NGIwOGNiOTdjNmQ5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2VjaG9fcmVtb3Zlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hv
X3JlbW92ZXJfdW5pdHRlc3QuY2MKQEAgLTQ4LDcgKzQ4LDcgQEAgVEVTVChFY2hvUmVtb3Zlciwg
QmFzaWNBcGlDYWxscykgewogICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUp
KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWNob1JlbW92ZXI+IHJlbW92ZXIoCiAgICAgICAgIEVj
aG9SZW1vdmVyOjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgcmF0ZSkpOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlcihSZW5kZXJEZWxh
eUJ1ZmZlcjo6Q3JlYXRlKAorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4g
cmVuZGVyX2J1ZmZlcihSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMigKICAgICAgICAgRWNob0Nh
bmNlbGxlcjNDb25maWcoKSwgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAKICAgICBzdGQ6OnZl
Y3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IHJlbmRlcihOdW1CYW5kc0ZvclJhdGUocmF0ZSksCkBA
IC04OSw3ICs4OSw3IEBAIFRFU1QoRWNob1JlbW92ZXIsIFdyb25nQ2FwdHVyZUJsb2NrU2l6ZSkg
ewogICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUpKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RWNob1JlbW92ZXI+IHJlbW92ZXIoCiAgICAgICAgIEVjaG9SZW1vdmVyOjpDcmVh
dGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgcmF0ZSkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlcihSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRl
KAorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlcihS
ZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMigKICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWco
KSwgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8
ZmxvYXQ+PiBjYXB0dXJlKAogICAgICAgICBOdW1CYW5kc0ZvclJhdGUocmF0ZSksIHN0ZDo6dmVj
dG9yPGZsb2F0PihrQmxvY2tTaXplIC0gMSwgMC5mKSk7CkBAIC0xMTEsNyArMTExLDcgQEAgVEVT
VChFY2hvUmVtb3ZlciwgRElTQUJMRURfV3JvbmdDYXB0dXJlTnVtQmFuZHMpIHsKICAgICBTQ09Q
RURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChyYXRlKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVj
aG9SZW1vdmVyPiByZW1vdmVyKAogICAgICAgICBFY2hvUmVtb3Zlcjo6Q3JlYXRlKEVjaG9DYW5j
ZWxsZXIzQ29uZmlnKCksIHJhdGUpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlC
dWZmZXI+IHJlbmRlcl9idWZmZXIoUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZSgKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIoUmVuZGVyRGVsYXlC
dWZmZXI6OkNyZWF0ZTIoCiAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIE51bUJhbmRz
Rm9yUmF0ZShyYXRlKSkpOwogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gY2Fw
dHVyZSgKICAgICAgICAgTnVtQmFuZHNGb3JSYXRlKHJhdGUgPT0gNDgwMDAgPyAxNjAwMCA6IHJh
dGUgKyAxNjAwMCksCkBAIC0xMzEsNyArMTMxLDcgQEAgVEVTVChFY2hvUmVtb3ZlciwgTnVsbENh
cHR1cmUpIHsKICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9SZW1vdmVyPiByZW1vdmVyKAogICAgICAg
RWNob1JlbW92ZXI6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCA4MDAwKSk7CiAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlcigKLSAgICAgIFJl
bmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgMykpOworICAg
ICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgMykp
OwogICBFY2hvUGF0aFZhcmlhYmlsaXR5IGVjaG9fcGF0aF92YXJpYWJpbGl0eSgKICAgICAgIGZh
bHNlLCBFY2hvUGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6OmtOb25lLCBmYWxzZSk7
CiAgIEVYUEVDVF9ERUFUSCgKQEAgLTE2MSw3ICsxNjEsNyBAQCBURVNUKEVjaG9SZW1vdmVyLCBC
YXNpY0VjaG9SZW1vdmFsKSB7CiAgICAgICBjb25maWcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxh
eV9ibG9ja3MgPSAwOwogICAgICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9SZW1vdmVyPiByZW1vdmVy
KEVjaG9SZW1vdmVyOjpDcmVhdGUoY29uZmlnLCByYXRlKSk7CiAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIoCi0gICAgICAgICAgUmVuZGVyRGVs
YXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOworICAgICAg
ICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJh
dGUpKSk7CiAgICAgICByZW5kZXJfYnVmZmVyLT5TZXREZWxheShkZWxheV9zYW1wbGVzIC8ga0Js
b2NrU2l6ZSk7CiAKICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZWxheUJ1ZmZl
cjxmbG9hdD4+PiBkZWxheV9idWZmZXJzKHguc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2VybF9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxfZXN0aW1hdG9yLmNj
CmluZGV4IDJkYTljZDg4ODM1MDQwNmJmNzg5MDI4MDZmZTU2NDk2ODllNDRlMTAuLjg1YjFlMDIy
ZGEyZjg3MjY2ZTBlODU3MmE3NDFjYzg0YjExYzg2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2VybF9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsX2VzdGltYXRvci5j
YwpAQCAtMTMsNiArMTMsOCBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxudW1l
cmljPgogCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsX2VzdGltYXRv
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsX2VzdGltYXRvci5oCmluZGV4IGRhY2Q1NDZhNmRlNzMy
ZjYyNWI1OTliZDZkMDQwMzFjOTBiMDIzMzEuLjI5NzE4YzM3ODM2ZThhOGJkMTU2Mjc5MzcxZDgy
NzJmMDBjMmRiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybF9lc3RpbWF0b3IuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxfZXN0aW1hdG9yLmgKQEAgLTExLDYgKzExLDcgQEAKICNp
Zm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRVJMX0VTVElNQVRPUl9IXwogI2Rl
ZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FUkxfRVNUSU1BVE9SX0hfCiAKKyNp
bmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhcnJheT4KIAogI2luY2x1ZGUgImFwaS9hcnJh
eV92aWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmNjCmluZGV4IDcxMTA4NWY5NmYwODk0Yzdj
NWMyOWM4NmU3MjJlOTc3YmI2YjRmNWQuLjY1NmE5YzdmZGY1MzA2NjFlNTI2ZjU1YzA3ZGUzYjll
YTY4MGVkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmNjCkBAIC0xMCwxOSArMTAsMTggQEAK
IAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9y
LmgiCiAKLSNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBFcmxlRXN0aW1hdG9yOjpFcmxl
RXN0aW1hdG9yKHNpemVfdCBzdGFydHVwX3BoYXNlX2xlbmd0aF9ibG9ja3NfLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCBtaW5fZXJsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgbWF4X2VybGVfbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IG1heF9lcmxlX2hmKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKQogICAgIDogc3RhcnR1cF9waGFzZV9sZW5ndGhf
YmxvY2tzX18oc3RhcnR1cF9waGFzZV9sZW5ndGhfYmxvY2tzXyksCi0gICAgICBmdWxsYmFuZF9l
cmxlX2VzdGltYXRvcl8obWluX2VybGUsIG1heF9lcmxlX2xmKSwKLSAgICAgIHN1YmJhbmRfZXJs
ZV9lc3RpbWF0b3JfKG1pbl9lcmxlLCBtYXhfZXJsZV9sZiwgbWF4X2VybGVfaGYpIHsKKyAgICAg
IHVzZV9zaWduYWxfZGVwZW5kZW50X2VybGVfKGNvbmZpZy5lcmxlLm51bV9zZWN0aW9ucyA+IDEp
LAorICAgICAgZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3JfKGNvbmZpZy5lcmxlLm1pbiwgY29uZmln
LmVybGUubWF4X2wpLAorICAgICAgc3ViYmFuZF9lcmxlX2VzdGltYXRvcl8oY29uZmlnKSwKKyAg
ICAgIHNpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3JfKGNvbmZpZykgewogICBSZXNldCh0
cnVlKTsKIH0KIApAQCAtMzEsMjAgKzMwLDI1IEBAIEVybGVFc3RpbWF0b3I6On5FcmxlRXN0aW1h
dG9yKCkgPSBkZWZhdWx0Owogdm9pZCBFcmxlRXN0aW1hdG9yOjpSZXNldChib29sIGRlbGF5X2No
YW5nZSkgewogICBmdWxsYmFuZF9lcmxlX2VzdGltYXRvcl8uUmVzZXQoKTsKICAgc3ViYmFuZF9l
cmxlX2VzdGltYXRvcl8uUmVzZXQoKTsKKyAgc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRv
cl8uUmVzZXQoKTsKICAgaWYgKGRlbGF5X2NoYW5nZSkgewogICAgIGJsb2Nrc19zaW5jZV9yZXNl
dF8gPSAwOwogICB9CiB9CiAKLXZvaWQgRXJsZUVzdGltYXRvcjo6VXBkYXRlKHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IGZsb2F0PiByZW5kZXJfc3BlY3RydW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY2FwdHVyZV9zcGVjdHJ1bSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBzdWJ0cmFj
dG9yX3NwZWN0cnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb252ZXJnZWRf
ZmlsdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBvbnNldF9kZXRlY3Rpb24p
IHsKLSAgUlRDX0RDSEVDS19FUShrRmZ0TGVuZ3RoQnkyUGx1czEsIHJlbmRlcl9zcGVjdHJ1bS5z
aXplKCkpOwordm9pZCBFcmxlRXN0aW1hdG9yOjpVcGRhdGUoCisgICAgY29uc3QgUmVuZGVyQnVm
ZmVyJiByZW5kZXJfYnVmZmVyLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8Zmxv
YXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+JgorICAgICAgICBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3Bv
bnNlLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZXZlcmJfcmVuZGVyX3NwZWN0
cnVtLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjYXB0dXJlX3NwZWN0cnVtLAor
ICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBzdWJ0cmFjdG9yX3NwZWN0cnVtLAorICAg
IGJvb2wgY29udmVyZ2VkX2ZpbHRlciwKKyAgICBib29sIG9uc2V0X2RldGVjdGlvbikgeworICBS
VENfRENIRUNLX0VRKGtGZnRMZW5ndGhCeTJQbHVzMSwgcmV2ZXJiX3JlbmRlcl9zcGVjdHJ1bS5z
aXplKCkpOwogICBSVENfRENIRUNLX0VRKGtGZnRMZW5ndGhCeTJQbHVzMSwgY2FwdHVyZV9zcGVj
dHJ1bS5zaXplKCkpOwogICBSVENfRENIRUNLX0VRKGtGZnRMZW5ndGhCeTJQbHVzMSwgc3VidHJh
Y3Rvcl9zcGVjdHJ1bS5zaXplKCkpOwotICBjb25zdCBhdXRvJiBYMiA9IHJlbmRlcl9zcGVjdHJ1
bTsKKyAgY29uc3QgYXV0byYgWDJfcmV2ZXJiID0gcmV2ZXJiX3JlbmRlcl9zcGVjdHJ1bTsKICAg
Y29uc3QgYXV0byYgWTIgPSBjYXB0dXJlX3NwZWN0cnVtOwogICBjb25zdCBhdXRvJiBFMiA9IHN1
YnRyYWN0b3Jfc3BlY3RydW07CiAKQEAgLTUyLDE0ICs1NiwyMyBAQCB2b2lkIEVybGVFc3RpbWF0
b3I6OlVwZGF0ZShydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmVuZGVyX3NwZWN0cnVtLAog
ICAgIHJldHVybjsKICAgfQogCi0gIHN1YmJhbmRfZXJsZV9lc3RpbWF0b3JfLlVwZGF0ZShYMiwg
WTIsIEUyLCBjb252ZXJnZWRfZmlsdGVyLCBvbnNldF9kZXRlY3Rpb24pOwotICBmdWxsYmFuZF9l
cmxlX2VzdGltYXRvcl8uVXBkYXRlKFgyLCBZMiwgRTIsIGNvbnZlcmdlZF9maWx0ZXIpOworICBz
dWJiYW5kX2VybGVfZXN0aW1hdG9yXy5VcGRhdGUoWDJfcmV2ZXJiLCBZMiwgRTIsIGNvbnZlcmdl
ZF9maWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnNldF9kZXRlY3Rp
b24pOworCisgIGlmICh1c2Vfc2lnbmFsX2RlcGVuZGVudF9lcmxlXykgeworICAgIHNpZ25hbF9k
ZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3JfLlVwZGF0ZSgKKyAgICAgICAgcmVuZGVyX2J1ZmZlciwg
ZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwgWDJfcmV2ZXJiLCBZMiwgRTIsCisgICAgICAgIHN1
YmJhbmRfZXJsZV9lc3RpbWF0b3JfLkVybGUoKSwgY29udmVyZ2VkX2ZpbHRlcik7CisgIH0KKwor
ICBmdWxsYmFuZF9lcmxlX2VzdGltYXRvcl8uVXBkYXRlKFgyX3JldmVyYiwgWTIsIEUyLCBjb252
ZXJnZWRfZmlsdGVyKTsKIH0KIAogdm9pZCBFcmxlRXN0aW1hdG9yOjpEdW1wKAogICAgIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxBcG1EYXRhRHVtcGVyPiYgZGF0YV9kdW1wZXIpIGNvbnN0IHsKICAg
ZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3JfLkR1bXAoZGF0YV9kdW1wZXIpOwogICBzdWJiYW5kX2Vy
bGVfZXN0aW1hdG9yXy5EdW1wKGRhdGFfZHVtcGVyKTsKKyAgc2lnbmFsX2RlcGVuZGVudF9lcmxl
X2VzdGltYXRvcl8uRHVtcChkYXRhX2R1bXBlcik7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9lcmxlX2VzdGltYXRvci5oCmluZGV4IDhjYTYwNWZmNzFkNThlYjg2NzljYWE2ZjBk
MzZlYzBlYTI1NjZkM2MuLjgwMzZjMjE5OGI0ZTMyYmY0ZThkYTEyMDI2ODViOWY1YTUwZDRiMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvZXJsZV9lc3RpbWF0b3IuaApAQCAtMTEsMTMgKzExLDE3IEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0VSTEVfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0VSTEVfRVNUSU1BVE9SX0hfCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIK
KyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3IuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVu
dF9lcmxlX2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1YmJhbmRfZXJsZV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKIApAQCAtMjgsMTYgKzMyLDE3IEBA
IG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgRXJsZUVzdGltYXRvciB7CiAgcHVibGljOgogICBF
cmxlRXN0aW1hdG9yKHNpemVfdCBzdGFydHVwX3BoYXNlX2xlbmd0aF9ibG9ja3NfLAotICAgICAg
ICAgICAgICAgIGZsb2F0IG1pbl9lcmxlLAotICAgICAgICAgICAgICAgIGZsb2F0IG1heF9lcmxl
X2xmLAotICAgICAgICAgICAgICAgIGZsb2F0IG1heF9lcmxlX2hmKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKTsKICAgfkVybGVFc3RpbWF0b3Io
KTsKIAogICAvLyBSZXNldHMgdGhlIGZ1bGxiYW5kIEVSTEUgZXN0aW1hdG9yIGFuZCB0aGUgc3Vi
YmFuZHMgRVJMRSBlc3RpbWF0b3JzLgogICB2b2lkIFJlc2V0KGJvb2wgZGVsYXlfY2hhbmdlKTsK
IAogICAvLyBVcGRhdGVzIHRoZSBFUkxFIGVzdGltYXRlcy4KLSAgdm9pZCBVcGRhdGUocnRjOjpB
cnJheVZpZXc8Y29uc3QgZmxvYXQ+IHJlbmRlcl9zcGVjdHJ1bSwKKyAgdm9pZCBVcGRhdGUoY29u
c3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAgICAg
ICAgICAgICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCisgICAgICAgICAgICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZXZlcmJfcmVuZGVyX3NwZWN0cnVtLAogICAgICAgICAg
ICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY2FwdHVyZV9zcGVjdHJ1bSwKICAgICAg
ICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHN1YnRyYWN0b3Jfc3BlY3RydW0s
CiAgICAgICAgICAgICAgIGJvb2wgY29udmVyZ2VkX2ZpbHRlciwKQEAgLTQ1LDExICs1MCwxMiBA
QCBjbGFzcyBFcmxlRXN0aW1hdG9yIHsKIAogICAvLyBSZXR1cm5zIHRoZSBtb3N0IHJlY2VudCBz
dWJiYW5kIEVSTEUgZXN0aW1hdGVzLgogICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVu
Z3RoQnkyUGx1czE+JiBFcmxlKCkgY29uc3QgewotICAgIHJldHVybiBzdWJiYW5kX2VybGVfZXN0
aW1hdG9yXy5FcmxlKCk7CisgICAgcmV0dXJuIHVzZV9zaWduYWxfZGVwZW5kZW50X2VybGVfID8g
c2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvcl8uRXJsZSgpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogc3ViYmFuZF9lcmxlX2VzdGltYXRvcl8uRXJsZSgpOwog
ICB9CiAgIC8vIFJldHVybnMgdGhlIHN1YmJhbmQgRVJMRSB0aGF0IGFyZSBlc3RpbWF0ZWQgZHVy
aW5nIG9uc2V0cy4gVXNlZAogICAvLyBmb3IgbG9nZ2luZy90ZXN0aW5nLgotICBjb25zdCBzdGQ6
OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBFcmxlT25zZXRzKCkgY29uc3Qgewor
ICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gRXJsZU9uc2V0cygpIGNvbnN0IHsKICAgICBy
ZXR1cm4gc3ViYmFuZF9lcmxlX2VzdGltYXRvcl8uRXJsZU9uc2V0cygpOwogICB9CiAKQEAgLTcw
LDggKzc2LDEwIEBAIGNsYXNzIEVybGVFc3RpbWF0b3IgewogCiAgcHJpdmF0ZToKICAgY29uc3Qg
c2l6ZV90IHN0YXJ0dXBfcGhhc2VfbGVuZ3RoX2Jsb2Nrc19fOworICBjb25zdCBib29sIHVzZV9z
aWduYWxfZGVwZW5kZW50X2VybGVfOwogICBGdWxsQmFuZEVybGVFc3RpbWF0b3IgZnVsbGJhbmRf
ZXJsZV9lc3RpbWF0b3JfOwogICBTdWJiYW5kRXJsZUVzdGltYXRvciBzdWJiYW5kX2VybGVfZXN0
aW1hdG9yXzsKKyAgU2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvciBzaWduYWxfZGVwZW5kZW50
X2VybGVfZXN0aW1hdG9yXzsKICAgc2l6ZV90IGJsb2Nrc19zaW5jZV9yZXNldF8gPSAwOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvcl91bml0dGVzdC5jYwppbmRleCAyY2IwNTBh
ZjNiM2RhMTEyYWUyZjk3NTg4NGQ1MGQxZWRkYjM1OGViLi41OWE3NDcxNTkzMzdmMzY4OTYwZTQ5
N2UzMGQ5YzM1YmJhZTU2Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGlt
YXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvcl91bml0
dGVzdC5jYwpAQCAtMTIsNiArMTIsOSBAQAogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9i
dWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3Jf
YnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcmFuZG9tLmgiCiAjaW5jbHVkZSAidGVzdC9n
dGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTE5LDExICsyMiw5IEBAIG5hbWVzcGFj
ZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKIAogY29uc3RleHByIGludCBrTG93RnJlcXVlbmN5TGlt
aXQgPSBrRmZ0TGVuZ3RoQnkyIC8gMjsKLWNvbnN0ZXhwciBmbG9hdCBrTWF4RXJsZUxmID0gOC5m
OwotY29uc3RleHByIGZsb2F0IGtNYXhFcmxlSGYgPSAxLjVmOwotY29uc3RleHByIGZsb2F0IGtN
aW5FcmxlID0gMS4wZjsKIGNvbnN0ZXhwciBmbG9hdCBrVHJ1ZUVybGUgPSAxMC5mOwogY29uc3Rl
eHByIGZsb2F0IGtUcnVlRXJsZU9uc2V0cyA9IDEuMGY7Citjb25zdGV4cHIgZmxvYXQga0VjaG9Q
YXRoR2FpbiA9IDMuZjsKIAogdm9pZCBWZXJpZnlFcmxlQmFuZHMocnRjOjpBcnJheVZpZXc8Y29u
c3QgZmxvYXQ+IGVybGUsCiAgICAgICAgICAgICAgICAgICAgICBmbG9hdCByZWZlcmVuY2VfbGYs
CkBAIC00NCw4MCArNDUsMTU3IEBAIHZvaWQgVmVyaWZ5RXJsZShydGM6OkFycmF5Vmlldzxjb25z
dCBmbG9hdD4gZXJsZSwKICAgRVhQRUNUX05FQVIocmVmZXJlbmNlX2xmLCBlcmxlX3RpbWVfZG9t
YWluLCAwLjUpOwogfQogCi12b2lkIEZvcm1GYXJlbmRGcmFtZShzdGQ6OmFycmF5PGZsb2F0LCBr
RmZ0TGVuZ3RoQnkyUGx1czE+KiBYMiwKK3ZvaWQgRm9ybUZhcmVuZFRpbWVGcmFtZShydGM6OkFy
cmF5VmlldzxmbG9hdD4geCkgeworICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrQmxvY2tTaXpl
PiBmcmFtZSA9IHsKKyAgICAgIDc0NTkuODgsIDE3MjA5LjYsIDE3MzgzLCAgIDIwNzY4LjksIDE2
ODE2LjcsIDE4Mzg2LjMsIDQ0OTIuODMsIDk2NzUuODUsCisgICAgICA2NjY1LjUyLCAxNDgwOC42
LCA5MzQyLjMsICA3NDgzLjI4LCAxOTI2MS43LCA0MTQ1Ljk4LCAxNjIyLjE4LCAxMzQ3NS4yLAor
ICAgICAgNzE2Ni4zMiwgNjg1Ni42MSwgMjE5MzcsICAgNzI2My4xNCwgOTU2OS4wNywgMTQ5MTks
ICAgODQxMy4zMiwgNzU1MS44OSwKKyAgICAgIDc4NDguNjUsIDYwMTEuMjcsIDEzMDgwLjYsIDE1
ODY1LjIsIDEyNjU2LCAgIDE3NDU5LjYsIDQyNjMuOTMsIDQ1MDMuMDMsCisgICAgICA5MzExLjc5
LCAyMTA5NS44LCAxMjY1Ny45LCAxMzkwNi42LCAxOTI2Ny4yLCAxMTMzOC4xLCAxNjgyOC45LCAx
MTUwMS42LAorICAgICAgMTE0MDUsICAgMTUwMzEuNCwgMTQ1NDEuNiwgMTk3NjUuNSwgMTgzNDYu
MywgMTkzNTAuMiwgMzE1Ny40NywgMTgwOTUuOCwKKyAgICAgIDE3NDMuNjgsIDIxMzI4LjIsIDE5
NzI3LjUsIDcyOTUuMTYsIDEwMzMyLjQsIDExMDU1LjUsIDIwMTA3LjQsIDE0NzA4LjQsCisgICAg
ICAxMjQxNi4yLCAxNjQzNCwgICAyNDU0LjY5LCA5ODQwLjgsICA2ODY3LjIzLCAxNjE1Ljc1LCA2
MDU5LjksICA4Mzk0LjE5fTsKKyAgUlRDX0RDSEVDS19HRSh4LnNpemUoKSwgZnJhbWUuc2l6ZSgp
KTsKKyAgc3RkOjpjb3B5KGZyYW1lLmJlZ2luKCksIGZyYW1lLmVuZCgpLCB4LmJlZ2luKCkpOwor
fQorCit2b2lkIEZvcm1GYXJlbmRGcmFtZShjb25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnky
UGx1czE+KiBYMiwKICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4qIEUyLAogICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxmbG9h
dCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogWTIsCiAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBl
cmxlKSB7Ci0gIFgyLT5maWxsKDUwMCAqIDEwMDAuZiAqIDEwMDAuZik7Ci0gIEUyLT5maWxsKDEw
MDAuZiAqIDEwMDAuZik7Ci0gIFkyLT5maWxsKGVybGUgKiAoKkUyKVswXSk7Ci19CisgIGNvbnN0
IGF1dG8mIHNwZWN0cnVtX2J1ZmZlciA9IHJlbmRlcl9idWZmZXIuR2V0U3BlY3RydW1CdWZmZXIo
KTsKKyAgY29uc3QgYXV0byYgWDJfZnJvbV9idWZmZXIgPSBzcGVjdHJ1bV9idWZmZXIuYnVmZmVy
W3NwZWN0cnVtX2J1ZmZlci53cml0ZV07CisgIHN0ZDo6Y29weShYMl9mcm9tX2J1ZmZlci5iZWdp
bigpLCBYMl9mcm9tX2J1ZmZlci5lbmQoKSwgWDItPmJlZ2luKCkpOworICBzdGQ6OnRyYW5zZm9y
bShYMi0+YmVnaW4oKSwgWDItPmVuZCgpLCBZMi0+YmVnaW4oKSwKKyAgICAgICAgICAgICAgICAg
W10oZmxvYXQgYSkgeyByZXR1cm4gYSAqIGtFY2hvUGF0aEdhaW4gKiBrRWNob1BhdGhHYWluOyB9
KTsKKyAgc3RkOjp0cmFuc2Zvcm0oWTItPmJlZ2luKCksIFkyLT5lbmQoKSwgRTItPmJlZ2luKCks
CisgICAgICAgICAgICAgICAgIFtlcmxlXShmbG9hdCBhKSB7IHJldHVybiBhIC8gZXJsZTsgfSk7
CisKK30gIC8vIG5hbWVzcGFjZQogCi12b2lkIEZvcm1OZWFyZW5kRnJhbWUoc3RkOjphcnJheTxm
bG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogWDIsCit2b2lkIEZvcm1OZWFyZW5kRnJhbWUocnRj
OjpBcnJheVZpZXc8ZmxvYXQ+IHgsCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxm
bG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogWDIsCiAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogRTIsCiAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogWTIpIHsKKyAgeFsw
XSA9IDAuZjsKICAgWDItPmZpbGwoMC5mKTsKICAgWTItPmZpbGwoNTAwLmYgKiAxMDAwLmYgKiAx
MDAwLmYpOwogICBFMi0+ZmlsbCgoKlkyKVswXSk7CiB9CiAKK3ZvaWQgR2V0RmlsdGVyRnJlcShz
dGQ6OnZlY3RvcjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAg
ICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwKKyAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZGVsYXlfaGVhZHJvb21fYmxvY2tzKSB7CisgIFJUQ19EQ0hFQ0tfR0Uo
ZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZS5zaXplKCksIGRlbGF5X2hlYWRyb29tX2Jsb2Nrcyk7
CisgIGZvciAoYXV0byYgYmxvY2tfZnJlcV9yZXNwIDogZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25z
ZSkgeworICAgIGJsb2NrX2ZyZXFfcmVzcC5maWxsKDAuZik7CisgIH0KKworICBmb3IgKHNpemVf
dCBrID0gMDsgayA8IGtGZnRMZW5ndGhCeTJQbHVzMTsgKytrKSB7CisgICAgZmlsdGVyX2ZyZXF1
ZW5jeV9yZXNwb25zZVtkZWxheV9oZWFkcm9vbV9ibG9ja3NdW2tdID0ga0VjaG9QYXRoR2FpbjsK
KyAgfQorfQorCiB9ICAvLyBuYW1lc3BhY2UKIAogVEVTVChFcmxlRXN0aW1hdG9yLCBWZXJpZnlF
cmxlSW5jcmVhc2VBbmRIb2xkKSB7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4gWDI7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gRTI7CiAg
IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gWTI7CisgIEVjaG9DYW5jZWxs
ZXIzQ29uZmlnIGNvbmZpZzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiB4KDMs
IHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXplLCAwLmYpKTsKKyAgc3RkOjp2ZWN0b3I8c3Rk
OjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPj4gZmlsdGVyX2ZyZXF1ZW5jeV9yZXNw
b25zZSgKKyAgICAgIGNvbmZpZy5maWx0ZXIubWFpbi5sZW5ndGhfYmxvY2tzKTsKKyAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAorICAgICAg
UmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAKLSAgRXJsZUVzdGltYXRv
ciBlc3RpbWF0b3IoMCwga01pbkVybGUsIGtNYXhFcmxlTGYsIGtNYXhFcmxlSGYpOworICBHZXRG
aWx0ZXJGcmVxKGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsIGNvbmZpZy5kZWxheS5kZWxheV9o
ZWFkcm9vbV9ibG9ja3MpOwogCi0gIC8vIFZlcmlmaWVzIHRoYXQgdGhlIEVSTEUgZXN0aW1hdGUg
aXMgcHJvcGVybHkgaW5jcmVhc2VkIHRvIGhpZ2hlciB2YWx1ZXMuCi0gIEZvcm1GYXJlbmRGcmFt
ZSgmWDIsICZFMiwgJlkyLCBrVHJ1ZUVybGUpOworICBFcmxlRXN0aW1hdG9yIGVzdGltYXRvcigw
LCBjb25maWcpOwogCisgIEZvcm1GYXJlbmRUaW1lRnJhbWUoeFswXSk7CisgIHJlbmRlcl9kZWxh
eV9idWZmZXItPkluc2VydCh4KTsKKyAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+UHJlcGFyZUNhcHR1
cmVQcm9jZXNzaW5nKCk7CisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIEVSTEUgZXN0aW1hdGUgaXMg
cHJvcGVybHkgaW5jcmVhc2VkIHRvIGhpZ2hlciB2YWx1ZXMuCisgIEZvcm1GYXJlbmRGcmFtZSgq
cmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksICZYMiwgJkUyLCAmWTIsCisg
ICAgICAgICAgICAgICAgICBrVHJ1ZUVybGUpOwogICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDIw
MDsgKytrKSB7Ci0gICAgZXN0aW1hdG9yLlVwZGF0ZShYMiwgWTIsIEUyLCB0cnVlLCB0cnVlKTsK
KyAgICByZW5kZXJfZGVsYXlfYnVmZmVyLT5JbnNlcnQoeCk7CisgICAgcmVuZGVyX2RlbGF5X2J1
ZmZlci0+UHJlcGFyZUNhcHR1cmVQcm9jZXNzaW5nKCk7CisgICAgZXN0aW1hdG9yLlVwZGF0ZSgq
cmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksCisgICAgICAgICAgICAgICAg
ICAgICBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLCBYMiwgWTIsIEUyLCB0cnVlLCB0cnVlKTsK
ICAgfQogICBWZXJpZnlFcmxlKGVzdGltYXRvci5FcmxlKCksIHN0ZDo6cG93KDIuZiwgZXN0aW1h
dG9yLkZ1bGxiYW5kRXJsZUxvZzIoKSksCi0gICAgICAgICAgICAga01heEVybGVMZiwga01heEVy
bGVIZik7CisgICAgICAgICAgICAgY29uZmlnLmVybGUubWF4X2wsIGNvbmZpZy5lcmxlLm1heF9o
KTsKIAotICBGb3JtTmVhcmVuZEZyYW1lKCZYMiwgJkUyLCAmWTIpOworICBGb3JtTmVhcmVuZEZy
YW1lKHhbMF0sICZYMiwgJkUyLCAmWTIpOwogICAvLyBWZXJpZmllcyB0aGF0IHRoZSBFUkxFIGlz
IG5vdCBpbW1lZGlhdGVseSBkZWNyZWFzZWQgZHVyaW5nIG5lYXJlbmQKICAgLy8gYWN0aXZpdHku
CiAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgNTA7ICsraykgewotICAgIGVzdGltYXRvci5VcGRh
dGUoWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CisgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+SW5z
ZXJ0KHgpOworICAgIHJlbmRlcl9kZWxheV9idWZmZXItPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2lu
ZygpOworICAgIGVzdGltYXRvci5VcGRhdGUoKnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJlbmRl
ckJ1ZmZlcigpLAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25z
ZSwgWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CiAgIH0KICAgVmVyaWZ5RXJsZShlc3RpbWF0b3Iu
RXJsZSgpLCBzdGQ6OnBvdygyLmYsIGVzdGltYXRvci5GdWxsYmFuZEVybGVMb2cyKCkpLAotICAg
ICAgICAgICAgIGtNYXhFcmxlTGYsIGtNYXhFcmxlSGYpOworICAgICAgICAgICAgIGNvbmZpZy5l
cmxlLm1heF9sLCBjb25maWcuZXJsZS5tYXhfaCk7CiB9CiAKIFRFU1QoRXJsZUVzdGltYXRvciwg
VmVyaWZ5RXJsZVRyYWNraW5nT25PbnNldHMpIHsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExl
bmd0aEJ5MlBsdXMxPiBYMjsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMx
PiBFMjsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBZMjsKKyAgRWNo
b0NhbmNlbGxlcjNDb25maWcgY29uZmlnOworICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9h
dD4+IHgoMywgc3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUsIDAuZikpOworICBzdGQ6OnZl
Y3RvcjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiBmaWx0ZXJfZnJlcXVl
bmN5X3Jlc3BvbnNlKAorICAgICAgY29uZmlnLmZpbHRlci5tYWluLmxlbmd0aF9ibG9ja3MpOwor
CisgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZl
cigKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOworCisgIEdl
dEZpbHRlckZyZXEoZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwgY29uZmlnLmRlbGF5LmRlbGF5
X2hlYWRyb29tX2Jsb2Nrcyk7CisKKyAgRXJsZUVzdGltYXRvciBlc3RpbWF0b3IoMCwgY29uZmln
KTsKIAotICBFcmxlRXN0aW1hdG9yIGVzdGltYXRvcigwLCBrTWluRXJsZSwga01heEVybGVMZiwg
a01heEVybGVIZik7CisgIEZvcm1GYXJlbmRUaW1lRnJhbWUoeFswXSk7CisgIHJlbmRlcl9kZWxh
eV9idWZmZXItPkluc2VydCh4KTsKKyAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+UHJlcGFyZUNhcHR1
cmVQcm9jZXNzaW5nKCk7CiAKICAgZm9yIChzaXplX3QgYnVyc3QgPSAwOyBidXJzdCA8IDIwOyAr
K2J1cnN0KSB7Ci0gICAgRm9ybUZhcmVuZEZyYW1lKCZYMiwgJkUyLCAmWTIsIGtUcnVlRXJsZU9u
c2V0cyk7CisgICAgRm9ybUZhcmVuZEZyYW1lKCpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5k
ZXJCdWZmZXIoKSwgJlgyLCAmRTIsICZZMiwKKyAgICAgICAgICAgICAgICAgICAga1RydWVFcmxl
T25zZXRzKTsKICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEwOyArK2spIHsKLSAgICAgIGVz
dGltYXRvci5VcGRhdGUoWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CisgICAgICByZW5kZXJfZGVs
YXlfYnVmZmVyLT5JbnNlcnQoeCk7CisgICAgICByZW5kZXJfZGVsYXlfYnVmZmVyLT5QcmVwYXJl
Q2FwdHVyZVByb2Nlc3NpbmcoKTsKKyAgICAgIGVzdGltYXRvci5VcGRhdGUoKnJlbmRlcl9kZWxh
eV9idWZmZXItPkdldFJlbmRlckJ1ZmZlcigpLAorICAgICAgICAgICAgICAgICAgICAgICBmaWx0
ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLCBYMiwgWTIsIEUyLCB0cnVlLCB0cnVlKTsKICAgICB9Ci0g
ICAgRm9ybUZhcmVuZEZyYW1lKCZYMiwgJkUyLCAmWTIsIGtUcnVlRXJsZSk7CisgICAgRm9ybUZh
cmVuZEZyYW1lKCpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZmZXIoKSwgJlgyLCAm
RTIsICZZMiwKKyAgICAgICAgICAgICAgICAgICAga1RydWVFcmxlKTsKICAgICBmb3IgKHNpemVf
dCBrID0gMDsgayA8IDIwMDsgKytrKSB7Ci0gICAgICBlc3RpbWF0b3IuVXBkYXRlKFgyLCBZMiwg
RTIsIHRydWUsIHRydWUpOworICAgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+SW5zZXJ0KHgpOwor
ICAgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+UHJlcGFyZUNhcHR1cmVQcm9jZXNzaW5nKCk7Cisg
ICAgICBlc3RpbWF0b3IuVXBkYXRlKCpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZm
ZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwg
WDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgfQotICAgIEZvcm1OZWFyZW5kRnJhbWUoJlgy
LCAmRTIsICZZMik7CisgICAgRm9ybU5lYXJlbmRGcmFtZSh4WzBdLCAmWDIsICZFMiwgJlkyKTsK
ICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDMwMDsgKytrKSB7Ci0gICAgICBlc3RpbWF0b3Iu
VXBkYXRlKFgyLCBZMiwgRTIsIHRydWUsIHRydWUpOworICAgICAgcmVuZGVyX2RlbGF5X2J1ZmZl
ci0+SW5zZXJ0KHgpOworICAgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+UHJlcGFyZUNhcHR1cmVQ
cm9jZXNzaW5nKCk7CisgICAgICBlc3RpbWF0b3IuVXBkYXRlKCpyZW5kZXJfZGVsYXlfYnVmZmVy
LT5HZXRSZW5kZXJCdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1
ZW5jeV9yZXNwb25zZSwgWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgfQogICB9Ci0gIFZl
cmlmeUVybGVCYW5kcyhlc3RpbWF0b3IuRXJsZU9uc2V0cygpLCBrTWluRXJsZSwga01pbkVybGUp
OwotICBGb3JtTmVhcmVuZEZyYW1lKCZYMiwgJkUyLCAmWTIpOworICBWZXJpZnlFcmxlQmFuZHMo
ZXN0aW1hdG9yLkVybGVPbnNldHMoKSwgY29uZmlnLmVybGUubWluLCBjb25maWcuZXJsZS5taW4p
OworICBGb3JtTmVhcmVuZEZyYW1lKHhbMF0sICZYMiwgJkUyLCAmWTIpOwogICBmb3IgKHNpemVf
dCBrID0gMDsgayA8IDEwMDA7IGsrKykgewotICAgIGVzdGltYXRvci5VcGRhdGUoWDIsIFkyLCBF
MiwgdHJ1ZSwgdHJ1ZSk7CisgICAgZXN0aW1hdG9yLlVwZGF0ZSgqcmVuZGVyX2RlbGF5X2J1ZmZl
ci0+R2V0UmVuZGVyQnVmZmVyKCksCisgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfZnJlcXVl
bmN5X3Jlc3BvbnNlLCBYMiwgWTIsIEUyLCB0cnVlLCB0cnVlKTsKICAgfQogICAvLyBWZXJpZmll
cyB0aGF0IGR1cmluZyBuZSBhY3Rpdml0eSwgRXJsZSBjb252ZXJnZXMgdG8gdGhlIEVybGUgZm9y
IG9uc2V0cy4KICAgVmVyaWZ5RXJsZShlc3RpbWF0b3IuRXJsZSgpLCBzdGQ6OnBvdygyLmYsIGVz
dGltYXRvci5GdWxsYmFuZEVybGVMb2cyKCkpLAotICAgICAgICAgICAgIGtNaW5FcmxlLCBrTWlu
RXJsZSk7CisgICAgICAgICAgICAgY29uZmlnLmVybGUubWluLCBjb25maWcuZXJsZS5taW4pOwog
fQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9m
ZnRfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfYnVmZmVyLmgKaW5kZXggNDdlZGU0MTgy
NWNmYzFiNjM1NWY5YjA5NWYxNTJmNjRiMjNkNDAzYi4uOWY4MWE5MTBhOGZiNzA5NGY4N2QwNTE1
YWEyYmFmMzBlMWQ4MDQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2J1ZmZlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9idWZmZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lm
bmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19GRlRfQlVGRkVSX0hfCiAjZGVmaW5l
IE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0ZGVF9CVUZGRVJfSF8KIAorI2luY2x1ZGUg
PHN0ZGRlZi5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2ZmdF9kYXRhLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9m
aWx0ZXJfYW5hbHl6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9maWx0ZXJfYW5hbHl6ZXIuY2MKaW5k
ZXggNzkwY2IxZThiNTJkNmJmZjE4N2I0YmRkNDAyMDE5Y2Y3ZmExZWQ2OC4uNWI4OTBkNzQ3NDZj
OWRlMWJjY2ZjNWYyYWUzMTM0ODAzYmMzMWJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
ZmlsdGVyX2FuYWx5emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZpbHRlcl9hbmFseXplci5j
YwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPG51bWVyaWM+CiAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9hdG9taWNvcHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZpbHRlcl9hbmFseXplci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZmlsdGVyX2FuYWx5emVyLmgKaW5kZXggNDdlOTUzMzY2NjIxZGMyMzg5MzI3OWY1ZDdlYjQ1
Y2NhNjY2OTg4Yy4uOTlhMGUyNTk3Mzc3MjM0YWUyMTkwODFhYThkMzNlMTBmOTc4NTUyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmlsdGVyX2FuYWx5emVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvZmlsdGVyX2FuYWx5emVyLmgKQEAgLTExLDIwICsxMSwyMCBAQAogI2lmbmRlZiBNT0RV
TEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19GSUxURVJfQU5BTFlaRVJfSF8KICNkZWZpbmUgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRklMVEVSX0FOQUxZWkVSX0hfCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUg
ImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19j
b25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2Nv
bW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nhc2NhZGVk
X2JpcXVhZF9maWx0ZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZW5kZXJfYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgQXBtRGF0YUR1bXBlcjsKK2NsYXNzIFJl
bmRlckJ1ZmZlcjsKIAogLy8gQ2xhc3MgZm9yIGFuYWx5emluZyB0aGUgcHJvcGVydGllcyBvZiBh
biBhZGFwdGl2ZSBmaWx0ZXIuCiBjbGFzcyBGaWx0ZXJBbmFseXplciB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9mcmFtZV9ibG9ja2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZnJhbWVfYmxv
Y2tlci5jYwppbmRleCAwYTBjMGUyZmFlYTU5OTMwODYzNzYzNDJhYThkZjNkZTY5YzliZWQ5Li5j
YTEyMmU1ZWJiZGVlOGE3OWFhYjc3YmNhMGRlNTk5MTY2NTg2YjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9mcmFtZV9ibG9ja2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZyYW1lX2Js
b2NrZXIuY2MKQEAgLTEwLDggKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2ZyYW1lX2Jsb2NrZXIuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3IuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9mdWxsYmFuZF9lcmxlX2VzdGltYXRvci5jYwppbmRleCBkYjliZTdjMTA0ZTk2OWU1
MGIyODExZGFjNjAzMzE3NGQxYmJmYWE1Li43ODkzYjk3YjNhMjdhZWU2NjczYTQzYTA5NDg5YTEz
N2Y2ZDU2NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mdWxsYmFuZF9lcmxlX2VzdGlt
YXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mdWxsYmFuZF9lcmxlX2VzdGltYXRvci5jYwpA
QCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZl
X21pbm1heC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTI1LDcgKzI2LDcgQEAgbmFtZXNw
YWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogY29uc3RleHByIGZsb2F0IGtFcHNpbG9uID0gMWUt
M2Y7CiBjb25zdGV4cHIgZmxvYXQga1gyQmFuZEVuZXJneVRocmVzaG9sZCA9IDQ0MDE1MDY4LjBm
OwotY29uc3RleHByIGludCBrRXJsZUhvbGQgPSAxMDA7Citjb25zdGV4cHIgaW50IGtCbG9ja3NU
b0hvbGRFcmxlID0gMTAwOwogY29uc3RleHByIGludCBrUG9pbnRzVG9BY2N1bXVsYXRlID0gNjsK
IH0gIC8vIG5hbWVzcGFjZQogCkBAIC01NCw3ICs1NSw3IEBAIHZvaWQgRnVsbEJhbmRFcmxlRXN0
aW1hdG9yOjpVcGRhdGUocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFgyLAogICAgICAgY29u
c3QgZmxvYXQgWTJfc3VtID0gc3RkOjphY2N1bXVsYXRlKFkyLmJlZ2luKCksIFkyLmVuZCgpLCAw
LjBmKTsKICAgICAgIGNvbnN0IGZsb2F0IEUyX3N1bSA9IHN0ZDo6YWNjdW11bGF0ZShFMi5iZWdp
bigpLCBFMi5lbmQoKSwgMC4wZik7CiAgICAgICBpZiAoaW5zdGFudGFuZW91c19lcmxlXy5VcGRh
dGUoWTJfc3VtLCBFMl9zdW0pKSB7Ci0gICAgICAgIGhvbGRfY291bnRlcl90aW1lX2RvbWFpbl8g
PSBrRXJsZUhvbGQ7CisgICAgICAgIGhvbGRfY291bnRlcl90aW1lX2RvbWFpbl8gPSBrQmxvY2tz
VG9Ib2xkRXJsZTsKICAgICAgICAgZXJsZV90aW1lX2RvbWFpbl9sb2cyXyArPQogICAgICAgICAg
ICAgMC4xZiAqICgoaW5zdGFudGFuZW91c19lcmxlXy5HZXRJbnN0RXJsZUxvZzIoKS52YWx1ZSgp
KSAtCiAgICAgICAgICAgICAgICAgICAgIGVybGVfdGltZV9kb21haW5fbG9nMl8pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvbWFpbl9maWx0ZXJfdXBkYXRlX2dhaW4uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9tYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbi5jYwppbmRleCA0ZjQ4Y2Q0NzQ4MGIyYjYw
ZjI5NzM4YzAwZDY1YzY5ZWViMWZhMDVhLi5lZjg3ZDE0MmRiMWZjNTE5YjhiYTg1ODk2NDc3MTE3
Y2FmZWEyMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2ZpbHRlcl91cGRhdGVf
Z2Fpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbi5jYwpA
QCAtMTMsNyArMTMsMTIgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8ZnVuY3Rp
b25hbD4KIAorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0aXZl
X2Zpcl9maWx0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9h
ZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Vj
aG9fcGF0aF92YXJpYWJpbGl0eS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2ZmdF9kYXRhLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmVuZGVyX3NpZ25hbF9hbmFseXplci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvYXRvbWljb3BzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCkBAIC0xMjcsNyAr
MTMyLDEwIEBAIHZvaWQgTWFpbkZpbHRlclVwZGF0ZUdhaW46OkNvbXB1dGUoCiAgICAgICAgICAg
ICAgICAgIEhfZXJyb3JfaW5jcmVhc2UuYmVnaW4oKSwgc3RkOjptdWx0aXBsaWVzPGZsb2F0Pigp
KTsKICAgc3RkOjp0cmFuc2Zvcm0oSF9lcnJvcl8uYmVnaW4oKSwgSF9lcnJvcl8uZW5kKCksIEhf
ZXJyb3JfaW5jcmVhc2UuYmVnaW4oKSwKICAgICAgICAgICAgICAgICAgSF9lcnJvcl8uYmVnaW4o
KSwgWyZdKGZsb2F0IGEsIGZsb2F0IGIpIHsKLSAgICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYXgoYSArIGIsIGN1cnJlbnRfY29uZmlnXy5lcnJvcl9mbG9vcik7CisgICAgICAgICAgICAg
ICAgICAgZmxvYXQgZXJyb3IgPSBhICsgYjsKKyAgICAgICAgICAgICAgICAgICBlcnJvciA9IHN0
ZDo6bWF4KGVycm9yLCBjdXJyZW50X2NvbmZpZ18uZXJyb3JfZmxvb3IpOworICAgICAgICAgICAg
ICAgICAgIGVycm9yID0gc3RkOjptaW4oZXJyb3IsIGN1cnJlbnRfY29uZmlnXy5lcnJvcl9jZWls
KTsKKyAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgICAgICAgICAgIH0p
OwogCiAgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19tYWluX2dhaW5fSF9lcnJvciIsIEhf
ZXJyb3JfKTsKQEAgLTE1Myw2ICsxNjEsOSBAQCB2b2lkIE1haW5GaWx0ZXJVcGRhdGVHYWluOjpV
cGRhdGVDdXJyZW50Q29uZmlnKCkgewogICAgICAgY3VycmVudF9jb25maWdfLmVycm9yX2Zsb29y
ID0KICAgICAgICAgICBhdmVyYWdlKG9sZF90YXJnZXRfY29uZmlnXy5lcnJvcl9mbG9vciwgdGFy
Z2V0X2NvbmZpZ18uZXJyb3JfZmxvb3IsCiAgICAgICAgICAgICAgICAgICBjaGFuZ2VfZmFjdG9y
KTsKKyAgICAgIGN1cnJlbnRfY29uZmlnXy5lcnJvcl9jZWlsID0KKyAgICAgICAgICBhdmVyYWdl
KG9sZF90YXJnZXRfY29uZmlnXy5lcnJvcl9jZWlsLCB0YXJnZXRfY29uZmlnXy5lcnJvcl9jZWls
LAorICAgICAgICAgICAgICAgICAgY2hhbmdlX2ZhY3Rvcik7CiAgICAgICBjdXJyZW50X2NvbmZp
Z18ubm9pc2VfZ2F0ZSA9CiAgICAgICAgICAgYXZlcmFnZShvbGRfdGFyZ2V0X2NvbmZpZ18ubm9p
c2VfZ2F0ZSwgdGFyZ2V0X2NvbmZpZ18ubm9pc2VfZ2F0ZSwKICAgICAgICAgICAgICAgICAgIGNo
YW5nZV9mYWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWFpbl9maWx0ZXJfdXBk
YXRlX2dhaW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3VwZGF0ZV9nYWluLmgKaW5k
ZXggNTI1YjUyMjc5YzQ2YWU2YjBlZTgzMjNlZmI0ZTRjMTVhOGFlMDc1Yi4uODkyZmY2ODlhNDcw
ZDMwNDQ1YWY2MjgxNDA0NGMyMWE2YWVjZDVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
bWFpbl9maWx0ZXJfdXBkYXRlX2dhaW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2ZpbHRl
cl91cGRhdGVfZ2Fpbi5oCkBAIC0xMSwyMCArMTEsMjIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FFQzNfTUFJTl9GSUxURVJfVVBEQVRFX0dBSU5fSF8KICNkZWZpbmUgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfTUFJTl9GSUxURVJfVVBEQVRFX0dBSU5fSF8KIAor
I2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPG1lbW9yeT4K
LSNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIz
X2NvbmZpZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0
aXZlX2Zpcl9maWx0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9hZWMzX2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2VjaG9fcGF0aF92YXJpYWJpbGl0eS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNzIEFk
YXB0aXZlRmlyRmlsdGVyOwogY2xhc3MgQXBtRGF0YUR1bXBlcjsKK3N0cnVjdCBFY2hvUGF0aFZh
cmlhYmlsaXR5Oworc3RydWN0IEZmdERhdGE7CitjbGFzcyBSZW5kZXJTaWduYWxBbmFseXplcjsK
K3N0cnVjdCBTdWJ0cmFjdG9yT3V0cHV0OwogCiAvLyBQcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZv
ciAgY29tcHV0aW5nIHRoZSBhZGFwdGl2ZSBnYWluIGZvciB0aGUgbWFpbiBmaWx0ZXIuCiBjbGFz
cyBNYWluRmlsdGVyVXBkYXRlR2FpbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWlu
X2ZpbHRlcl91cGRhdGVfZ2Fpbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmls
dGVyX3VwZGF0ZV9nYWluX3VuaXR0ZXN0LmNjCmluZGV4IDhjNDRhZTA2NGUyMTIyZTllMTI4YTdl
ZjVkODllY2Q0OWU2ODFjZTkuLjA5M2IxOTQ3MzZmODZkY2FmMzVjOWEzODc1MDY3YzU4YTJiMjRm
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3VwZGF0ZV9nYWluX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3VwZGF0ZV9nYWluX3Vu
aXR0ZXN0LmNjCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgUnVuRmlsdGVyVXBkYXRlVGVzdChpbnQg
bnVtX2Jsb2Nrc190b19wcm9jZXNzLAogICBjb25maWcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxh
eV9ibG9ja3MgPSAwOwogICBjb25maWcuZGVsYXkuZGVmYXVsdF9kZWxheSA9IDE7CiAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAg
IFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxh
eUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKICAgQWVjU3RhdGUgYWVjX3N0YXRlKGNvbmZp
Zyk7CiAgIFJlbmRlclNpZ25hbEFuYWx5emVyIHJlbmRlcl9zaWduYWxfYW5hbHl6ZXIoY29uZmln
KTsKICAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gZGVsYXlfZXN0aW1hdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L21hdGNoZWRfZmlsdGVyLmNjCmluZGV4IDY3NDRiZDU4MTJhMGM3NWUzZGMyNTM0ZTk0ZTYwMDcx
ODE5NDU0YjguLjc1NzIxOWQ1MmMyMmIyMmY5M2I5ZWQ5MmQwODI5MTgzMWI0NTAxYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL21hdGNoZWRfZmlsdGVyLmNjCkBAIC0xOSwxMCArMTksMTQgQEAKICNpbmNsdWRlIDxlbW1p
bnRyaW4uaD4KICNlbmRpZgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkZGVm
PgorI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CisjaW5jbHVkZSA8aXRlcmF0b3I+CiAjaW5j
bHVkZSA8bnVtZXJpYz4KIAotI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29u
ZmlnLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBs
ZWRfcmVuZGVyX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9s
b2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
bWF0Y2hlZF9maWx0ZXIuaAppbmRleCAyZWY0ODI4NmQ3OWVlNjIyOTY0MmIyMWEwODBkOTQzMzE1
YzBmNjA4Li4yYTY1MzM5YTRjYmZlZmUzZDFiMDJiMTg3ZmExZDFiMGMyODA4NGQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L21hdGNoZWRfZmlsdGVyLmgKQEAgLTExLDE4ICsxMSwxOSBAQAogI2lmbmRlZiBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfQUVDM19NQVRDSEVEX0ZJTFRFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfQUVDM19NQVRDSEVEX0ZJTFRFUl9IXwogCi0jaW5jbHVkZSA8YXJyYXk+
Ci0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHZlY3Rv
cj4KIAotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJy
YXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNf
Y29tbW9uLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNh
bXBsZWRfcmVuZGVyX2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFn
aWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKKworY2xhc3MgQXBtRGF0YUR1bXBlcjsKK3N0cnVjdCBEb3duc2FtcGxlZFJlbmRlckJ1
ZmZlcjsKKwogbmFtZXNwYWNlIGFlYzMgewogCiAjaWYgZGVmaW5lZChXRUJSVENfSEFTX05FT04p
CkBAIC02NSw3ICs2Niw2IEBAIHZvaWQgTWF0Y2hlZEZpbHRlckNvcmUoc2l6ZV90IHhfc3RhcnRf
aW5kZXgsCiAKIH0gIC8vIG5hbWVzcGFjZSBhZWMzCiAKLWNsYXNzIEFwbURhdGFEdW1wZXI7CiAK
IC8vIFByb2R1Y2VzIHJlY3Vyc2l2ZWx5IHVwZGF0ZWQgY3Jvc3MtY29ycmVsYXRpb24gZXN0aW1h
dGVzIGZvciBzZXZlcmFsIHNpZ25hbAogLy8gc2hpZnRzIHdoZXJlIHRoZSBpbnRyYS1zaGlmdCBz
cGFjaW5nIGlzIHVuaWZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2Zp
bHRlcl9sYWdfYWdncmVnYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX2xh
Z19hZ2dyZWdhdG9yLmNjCmluZGV4IDdhMDNlNjBkOGJmZDk0NDI4YjRhMzUwN2RjOTJmMTA3OGJk
YTQwNzEuLmY1OTUyNWVlZTllOTAxZWMzYjJhNDQwMjg4OWVhZjEyYWI4Mjg3NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yLmNjCkBAIC05LDcg
KzksMTEgQEAKICAqLwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21h
dGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yLmgiCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSA8aXRlcmF0b3I+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
bG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTI3LDExICszMSwxMyBAQCBNYXRjaGVkRmlsdGVy
TGFnQWdncmVnYXRvcjo6TWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3IoCiAKIE1hdGNoZWRGaWx0
ZXJMYWdBZ2dyZWdhdG9yOjp+TWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3IoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgTWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3I6OlJlc2V0KCkgewordm9pZCBNYXRj
aGVkRmlsdGVyTGFnQWdncmVnYXRvcjo6UmVzZXQoYm9vbCBoYXJkX3Jlc2V0KSB7CiAgIHN0ZDo6
ZmlsbChoaXN0b2dyYW1fLmJlZ2luKCksIGhpc3RvZ3JhbV8uZW5kKCksIDApOwogICBoaXN0b2dy
YW1fZGF0YV8uZmlsbCgwKTsKICAgaGlzdG9ncmFtX2RhdGFfaW5kZXhfID0gMDsKLSAgc2lnbmlm
aWNhbnRfY2FuZGlkYXRlX2ZvdW5kXyA9IGZhbHNlOworICBpZiAoaGFyZF9yZXNldCkgeworICAg
IHNpZ25pZmljYW50X2NhbmRpZGF0ZV9mb3VuZF8gPSBmYWxzZTsKKyAgfQogfQogCiBhYnNsOjpv
cHRpb25hbDxEZWxheUVzdGltYXRlPiBNYXRjaGVkRmlsdGVyTGFnQWdncmVnYXRvcjo6QWdncmVn
YXRlKApAQCAtNzcsOSArODMsMTMgQEAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gTWF0
Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3I6OkFnZ3JlZ2F0ZSgKICAgICBpZiAoaGlzdG9ncmFtX1tj
YW5kaWRhdGVdID4gdGhyZXNob2xkc18uY29udmVyZ2VkIHx8CiAgICAgICAgIChoaXN0b2dyYW1f
W2NhbmRpZGF0ZV0gPiB0aHJlc2hvbGRzXy5pbml0aWFsICYmCiAgICAgICAgICAhc2lnbmlmaWNh
bnRfY2FuZGlkYXRlX2ZvdW5kXykpIHsKLSAgICAgIHJldHVybiBEZWxheUVzdGltYXRlKERlbGF5
RXN0aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVkLCBjYW5kaWRhdGUpOworICAgICAgRGVsYXlFc3Rp
bWF0ZTo6UXVhbGl0eSBxdWFsaXR5ID0gc2lnbmlmaWNhbnRfY2FuZGlkYXRlX2ZvdW5kXworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRGVsYXlFc3RpbWF0ZTo6
UXVhbGl0eTo6a1JlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IERlbGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtDb2Fyc2U7CisgICAgICByZXR1cm4gRGVs
YXlFc3RpbWF0ZShxdWFsaXR5LCBjYW5kaWRhdGUpOwogICAgIH0KICAgfQorCiAgIHJldHVybiBh
YnNsOjpudWxsb3B0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2Zp
bHRlcl9sYWdfYWdncmVnYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXJfbGFn
X2FnZ3JlZ2F0b3IuaAppbmRleCBjNTcwNTFhYTY4NWYzMzc0YTQwOGU5ZDUxYzJkZjZmNzFhOWMz
OGQ4Li5kN2YzNGFlZDYwNzM0YmY0MTUyYmJjMzc2YzI2ZDViN2Y5MjMwNjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRvci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yLmgKQEAgLTM0LDcgKzM0
LDcgQEAgY2xhc3MgTWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3IgewogICB+TWF0Y2hlZEZpbHRl
ckxhZ0FnZ3JlZ2F0b3IoKTsKIAogICAvLyBSZXNldHMgdGhlIGFnZ3JlZ2F0b3IuCi0gIHZvaWQg
UmVzZXQoKTsKKyAgdm9pZCBSZXNldChib29sIGhhcmRfcmVzZXQpOwogCiAgIC8vIEFnZ3JlZ2F0
ZXMgdGhlIHByb3ZpZGVkIGxhZyBlc3RpbWF0ZXMuCiAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0
aW1hdGU+IEFnZ3JlZ2F0ZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmls
dGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXJfdW5pdHRlc3Qu
Y2MKaW5kZXggMTZiNjAzYTEzZmUzN2RhZWM2OTBlOWM5MzliYTVkMmVjZjQ2ODE0Zi4uMGMxNzEx
ODk0YjQ0ZjIxNDU5OWY0YWMxMWVjNWQ3YWZlNDMwNGYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvbWF0Y2hlZF9maWx0ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0
Y2hlZF9maWx0ZXJfdW5pdHRlc3QuY2MKQEAgLTE2NSw3ICsxNjUsNyBAQCBURVNUKE1hdGNoZWRG
aWx0ZXIsIExhZ0VzdGltYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZp
Zy5kZWxheS5kZWxheV9jYW5kaWRhdGVfZGV0ZWN0aW9uX3RocmVzaG9sZCk7CiAKICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAg
ICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgICAg
IFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogCiAgICAgICAvLyBBbmFs
eXplIHRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHJlbmRlciBhbmQgY2FwdHVyZS4KICAgICAgIGZv
ciAoc2l6ZV90IGsgPSAwOyBrIDwgKDYwMCArIGRlbGF5X3NhbXBsZXMgLyBzdWJfYmxvY2tfc2l6
ZSk7ICsraykgewpAQCAtMjYxLDcgKzI2MSw3IEBAIFRFU1QoTWF0Y2hlZEZpbHRlciwgTGFnTm90
UmVsaWFibGVGb3JVbmNvcnJlbGF0ZWRSZW5kZXJBbmRDYXB0dXJlKSB7CiAgICAgc3RkOjpmaWxs
KGNhcHR1cmUuYmVnaW4oKSwgY2FwdHVyZS5lbmQoKSwgMC5mKTsKICAgICBBcG1EYXRhRHVtcGVy
IGRhdGFfZHVtcGVyKDApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4g
cmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShj
b25maWcsIDMpKTsKKyAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAz
KSk7CiAgICAgTWF0Y2hlZEZpbHRlciBmaWx0ZXIoJmRhdGFfZHVtcGVyLCBEZXRlY3RPcHRpbWl6
YXRpb24oKSwgc3ViX2Jsb2NrX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAga1dpbmRv
d1NpemVTdWJCbG9ja3MsIGtOdW1NYXRjaGVkRmlsdGVycywKICAgICAgICAgICAgICAgICAgICAg
ICAgICBrQWxpZ25tZW50U2hpZnRTdWJCbG9ja3MsIDE1MCwKQEAgLTMwNiw3ICszMDYsNyBAQCBU
RVNUKE1hdGNoZWRGaWx0ZXIsIExhZ05vdFVwZGF0ZWRGb3JMb3dMZXZlbFJlbmRlcikgewogICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kZWxheS5kZWxheV9lc3RpbWF0ZV9zbW9vdGhp
bmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRlbGF5LmRlbGF5X2NhbmRpZGF0
ZV9kZXRlY3Rpb25fdGhyZXNob2xkKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlC
dWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpD
cmVhdGUoY29uZmlnLCAzKSk7CisgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKEVj
aG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKICAgICBEZWNpbWF0b3IgY2FwdHVyZV9kZWNpbWF0
b3IoZG93bl9zYW1wbGluZ19mYWN0b3IpOwogCiAgICAgLy8gQW5hbHl6ZSB0aGUgY29ycmVsYXRp
b24gYmV0d2VlbiByZW5kZXIgYW5kIGNhcHR1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9tYXRyaXhfYnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZlci5jYwppbmRl
eCBmOTVlN2Y0NjkwMmUxZjA1ZTMxYTA0NWFhN2I5Mjc0MjIzY2E1YjhhLi5iZDZkYWVhOTVjOTA1
Y2E5ZTE3OGY4YjU2MjJjOGIwYWM5OGZhN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9t
YXRyaXhfYnVmZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIuY2MKQEAg
LTEwLDcgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L21hdHJpeF9idWZmZXIuaCIKIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FlYzNfY29tbW9uLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZlci5oCmluZGV4IDY0YWFjMGE0ZjY1ZTU3N2JiMWViZmQ3
OGFmNmUyMmIyZDFlNDQ4MmUuLmNhZTM3NTlmOTIwODRhM2Q5ZTFjODA3NjA0ZGE4ZjM5YThiZjIx
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9tYXRyaXhfYnVmZmVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfTUFUUklYX0JVRkZFUl9IXwogI2RlZmluZSBNT0RV
TEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19NQVRSSVhfQlVGRkVSX0hfCiAKKyNpbmNsdWRlIDxz
dGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vY2svbW9ja19yZW5kZXJfZGVsYXlfY29u
dHJvbGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbW9jay9tb2NrX3JlbmRlcl9kZWxheV9jb250cm9s
bGVyLmgKaW5kZXggZWQ1OTcxY2RhMGQzNmNjYjYxNmY2MGVhZjI2YWE2ZDgyYzdmNjljMi4uNWY2
NTJlMTkyZjk3YTFkOGVkZGVmMDU1OTdiYTQ1OTgyOTJjOWNkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvbW9jay9tb2NrX3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvbW9jay9tb2NrX3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgKQEAgLTI1LDcgKzI1
LDcgQEAgY2xhc3MgTW9ja1JlbmRlckRlbGF5Q29udHJvbGxlciA6IHB1YmxpYyBSZW5kZXJEZWxh
eUNvbnRyb2xsZXIgewogICBNb2NrUmVuZGVyRGVsYXlDb250cm9sbGVyKCk7CiAgIHZpcnR1YWwg
fk1vY2tSZW5kZXJEZWxheUNvbnRyb2xsZXIoKTsKIAotICBNT0NLX01FVEhPRDAoUmVzZXQsIHZv
aWQoKSk7CisgIE1PQ0tfTUVUSE9EMShSZXNldCwgdm9pZChib29sIHJlc2V0X2RlbGF5X3N0YXRp
c3RpY3MpKTsKICAgTU9DS19NRVRIT0QwKExvZ1JlbmRlckNhbGwsIHZvaWQoKSk7CiAgIE1PQ0tf
TUVUSE9ENChHZXREZWxheSwKICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0
aW1hdGU+KApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBNb2NrUmVuZGVyRGVsYXlDb250cm9sbGVy
IDogcHVibGljIFJlbmRlckRlbGF5Q29udHJvbGxlciB7CiAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHJlbmRlcl9kZWxheV9idWZmZXJfZGVsYXksCiAgICAgICAgICAgICAgICAgICAgY29uc3Qg
YWJzbDo6b3B0aW9uYWw8aW50PiYgZWNob19yZW1vdmVyX2RlbGF5LAogICAgICAgICAgICAgICAg
ICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjYXB0dXJlKSk7CisgIE1PQ0tfQ09OU1Rf
TUVUSE9EMChIYXNDbG9ja2RyaWZ0LCBib29sKCkpOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHRl
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vdmluZ19hdmVyYWdlLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvbW92aW5nX2F2ZXJhZ2UuY2MKaW5kZXggZTlkNjRlNmIzMjYzMjY2MGY1YTA0NTMz
NTIyMzQxOTRlZjg3NjEzNS4uN2E4MWVlODllYTY3ZTBkYzhlMzk2MjZjYjYyNTkxOTNhNDczOGYw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbW92aW5nX2F2ZXJhZ2UuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvbW92aW5nX2F2ZXJhZ2UuY2MKQEAgLTE0LDYgKzE0LDggQEAKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAorI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBhZWMzIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbW92aW5nX2F2ZXJhZ2UuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L21vdmluZ19hdmVyYWdlLmgKaW5kZXggOTQ0OTdkNzgyYzhkOWQyYWE0MGMwOWIzNDgyMzdjZWVh
MGJkNWU2YS4uMGY4NTViZWZmYjBmNTBlMmQzOTY4MDM3NDhlNDJkNTYwMTUzMTg3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvbW92aW5nX2F2ZXJhZ2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9tb3ZpbmdfYXZlcmFnZS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BRUMzX01PVklOR19BVkVSQUdFX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BRUMzX01PVklOR19BVkVSQUdFX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
cmVuZGVyX2J1ZmZlci5oCmluZGV4IGRkNjcyNjhlZmQ3MWJhOGE5OGZlZDJjZDkwMmYxNmZlN2Qz
OTI1OTQuLjRjN2M2MGNmODU3ZDdkODNkNDlhZTFkMzI0MzJkZGQ1MjM0ZTJkZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9y
ZW5kZXJfYnVmZmVyLmgKQEAgLTExLDE0ICsxMSwxNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfQUVDM19SRU5ERVJfQlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9f
UFJPQ0VTU0lOR19BRUMzX1JFTkRFUl9CVUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgog
I2luY2x1ZGUgPGFycmF5PgotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAK
ICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZmZ0X2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2ZmdF9kYXRhLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvbWF0cml4X2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3ZlY3Rvcl9idWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuY2MKaW5kZXggMzdhMjM3ODczOGNjNWJl
MzA2MGQzYzQ1NjBjNWFmZDY0NGE2MzIxMy4uMWVjMjc3OTBhODQyZGI5NWVkOTc5ZGE3YTRhMjU1
OWI5NDcxOWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZl
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyLmNjCkBAIC0xMCwx
NyArMTAsMjEgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jl
bmRlcl9kZWxheV9idWZmZXIuaCIKIAotI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0
ZGxpYi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8bnVtZXJpYz4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRl
ICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvYWVjM19mZnQuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9i
bG9ja19wcm9jZXNzb3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9kZWNpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9m
ZnRfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0
X2RhdGEuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRyaXhf
YnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9y
X2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2Fw
bV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFn
aWMuaCIKQEAgLTM1LDE0ICszOSw2IEBAIGJvb2wgRW5hYmxlWmVyb0V4dGVybmFsRGVsYXlIZWFk
cm9vbSgpIHsKICAgICAgICJXZWJSVEMtQWVjM1plcm9FeHRlcm5hbERlbGF5SGVhZHJvb21LaWxs
U3dpdGNoIik7CiB9CiAKLXNpemVfdCBHZXREb3duU2FtcGxpbmdGYWN0b3IoY29uc3QgRWNob0Nh
bmNlbGxlcjNDb25maWcmIGNvbmZpZykgewotICAvLyBEbyBub3QgdXNlIGRvd24gc2FtcGxpbmcg
ZmFjdG9yIDggaWYga2lsbCBzd2l0Y2ggaXMgdHJpZ2dlcmVkLgotICByZXR1cm4gKGNvbmZpZy5k
ZWxheS5kb3duX3NhbXBsaW5nX2ZhY3RvciA9PSA4ICYmCi0gICAgICAgICAgZmllbGRfdHJpYWw6
OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNEb3duU2FtcGxpbmdGYWN0b3I4S2lsbFN3aXRjaCIpKQot
ICAgICAgICAgICAgID8gNAotICAgICAgICAgICAgIDogY29uZmlnLmRlbGF5LmRvd25fc2FtcGxp
bmdfZmFjdG9yOwotfQotCiBjbGFzcyBSZW5kZXJEZWxheUJ1ZmZlckltcGwgZmluYWwgOiBwdWJs
aWMgUmVuZGVyRGVsYXlCdWZmZXIgewogIHB1YmxpYzoKICAgUmVuZGVyRGVsYXlCdWZmZXJJbXBs
KGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsIHNpemVfdCBudW1fYmFuZHMpOwpA
QCAtMTc3LDcgKzE3Myw3IEBAIFJlbmRlckRlbGF5QnVmZmVySW1wbDo6UmVuZGVyRGVsYXlCdWZm
ZXJJbXBsKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICAgICAgbmV3
IEFwbURhdGFEdW1wZXIocnRjOjpBdG9taWNPcHM6OkluY3JlbWVudCgmaW5zdGFuY2VfY291bnRf
KSkpLAogICAgICAgb3B0aW1pemF0aW9uXyhEZXRlY3RPcHRpbWl6YXRpb24oKSksCiAgICAgICBj
b25maWdfKGNvbmZpZyksCi0gICAgICBkb3duX3NhbXBsaW5nX2ZhY3Rvcl8oR2V0RG93blNhbXBs
aW5nRmFjdG9yKGNvbmZpZykpLAorICAgICAgZG93bl9zYW1wbGluZ19mYWN0b3JfKGNvbmZpZy5k
ZWxheS5kb3duX3NhbXBsaW5nX2ZhY3RvciksCiAgICAgICB1c2VfemVyb19leHRlcm5hbF9kZWxh
eV9oZWFkcm9vbV8oRW5hYmxlWmVyb0V4dGVybmFsRGVsYXlIZWFkcm9vbSgpKSwKICAgICAgIHN1
Yl9ibG9ja19zaXplXyhzdGF0aWNfY2FzdDxpbnQ+KGRvd25fc2FtcGxpbmdfZmFjdG9yXyA+IDAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtCbG9ja1NpemUg
LyBkb3duX3NhbXBsaW5nX2ZhY3Rvcl8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRl
cl9kZWxheV9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuaApp
bmRleCBhNmQ2ODc0ZTNlNDY5NmIxMDVkZTA0YTQwMmMzMzI3MTQxMzg0YTNmLi5iZDI0MmY3NDNm
OWIyYTI0MGRkYjJjNmQ3NjM1OWM4NDJlYjMzYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZW5kZXJfZGVsYXlfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5
X2J1ZmZlci5oCkBAIC0xMiwxNSArMTIsMTAgQEAKICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FFQzNfUkVOREVSX0RFTEFZX0JVRkZFUl9IXwogCiAjaW5jbHVkZSA8c3RkZGVmLmg+
Ci0jaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgotI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAi
YXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfZGF0YS5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CkBAIC0zMywxMiArMjgsMTMgQEAgY2xhc3MgUmVuZGVyRGVsYXlCdWZmZXIgewog
ICAgIGtOb25lLAogICAgIGtSZW5kZXJVbmRlcnJ1biwKICAgICBrUmVuZGVyT3ZlcnJ1biwKLSAg
ICBrQXBpQ2FsbFNrZXcsCi0gICAga1JlbmRlckRhdGFMb3N0CisgICAga0FwaUNhbGxTa2V3CiAg
IH07CiAKICAgc3RhdGljIFJlbmRlckRlbGF5QnVmZmVyKiBDcmVhdGUoY29uc3QgRWNob0NhbmNl
bGxlcjNDb25maWcmIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG51bV9iYW5kcyk7CisgIHN0YXRpYyBSZW5kZXJEZWxheUJ1ZmZlciogQ3JlYXRlMihj
b25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG51bV9iYW5kcyk7CiAgIHZpcnR1YWwgflJlbmRlckRlbGF5
QnVmZmVyKCkgPSBkZWZhdWx0OwogCiAgIC8vIFJlc2V0cyB0aGUgYnVmZmVyIGFsaWdubWVudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlcjIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk5MmM1Yjg5
ODc2NWYyNTI5ZDk5YTM1NWE4ODFjZGE1ZjU2ZGI5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIyLmNjCkBAIC0wLDAgKzEsNDUzIEBACisvKgor
ICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZp
Zy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9u
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kZWNpbWF0b3IuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJf
YnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2J1
ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9kYXRh
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZl
ci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZm
ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVs
YXlfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVj
dG9yX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5n
L2FwbV9kYXRhX2R1bXBlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
KworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworCitjbGFzcyBSZW5kZXJEZWxheUJ1
ZmZlckltcGwyIGZpbmFsIDogcHVibGljIFJlbmRlckRlbGF5QnVmZmVyIHsKKyBwdWJsaWM6Cisg
IFJlbmRlckRlbGF5QnVmZmVySW1wbDIoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZp
Zywgc2l6ZV90IG51bV9iYW5kcyk7CisgIFJlbmRlckRlbGF5QnVmZmVySW1wbDIoKSA9IGRlbGV0
ZTsKKyAgflJlbmRlckRlbGF5QnVmZmVySW1wbDIoKSBvdmVycmlkZTsKKworICB2b2lkIFJlc2V0
KCkgb3ZlcnJpZGU7CisgIEJ1ZmZlcmluZ0V2ZW50IEluc2VydChjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnZlY3RvcjxmbG9hdD4+JiBibG9jaykgb3ZlcnJpZGU7CisgIEJ1ZmZlcmluZ0V2ZW50IFBy
ZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpIG92ZXJyaWRlOworICBib29sIFNldERlbGF5KHNpemVf
dCBkZWxheSkgb3ZlcnJpZGU7CisgIHNpemVfdCBEZWxheSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIENvbXB1dGVEZWxheSgpOyB9CisgIHNpemVfdCBNYXhEZWxheSgpIGNvbnN0IG92ZXJyaWRl
IHsKKyAgICByZXR1cm4gYmxvY2tzXy5idWZmZXIuc2l6ZSgpIC0gMSAtIGJ1ZmZlcl9oZWFkcm9v
bV87CisgIH0KKyAgUmVuZGVyQnVmZmVyKiBHZXRSZW5kZXJCdWZmZXIoKSBvdmVycmlkZSB7IHJl
dHVybiAmZWNob19yZW1vdmVyX2J1ZmZlcl87IH0KKworICBjb25zdCBEb3duc2FtcGxlZFJlbmRl
ckJ1ZmZlciYgR2V0RG93bnNhbXBsZWRSZW5kZXJCdWZmZXIoKSBjb25zdCBvdmVycmlkZSB7Cisg
ICAgcmV0dXJuIGxvd19yYXRlXzsKKyAgfQorCisgIGludCBCdWZmZXJMYXRlbmN5KCkgY29uc3Q7
CisgIGJvb2wgQ2F1c2FsRGVsYXkoc2l6ZV90IGRlbGF5KSBjb25zdCBvdmVycmlkZTsKKyAgdm9p
ZCBTZXRBdWRpb0J1ZmZlckRlbGF5KHNpemVfdCBkZWxheV9tcykgb3ZlcnJpZGU7CisKKyBwcml2
YXRlOgorICBzdGF0aWMgaW50IGluc3RhbmNlX2NvdW50XzsKKyAgc3RkOjp1bmlxdWVfcHRyPEFw
bURhdGFEdW1wZXI+IGRhdGFfZHVtcGVyXzsKKyAgY29uc3QgQWVjM09wdGltaXphdGlvbiBvcHRp
bWl6YXRpb25fOworICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWdfOworICBzaXpl
X3QgZG93bl9zYW1wbGluZ19mYWN0b3JfOworICBjb25zdCBpbnQgc3ViX2Jsb2NrX3NpemVfOwor
ICBNYXRyaXhCdWZmZXIgYmxvY2tzXzsKKyAgVmVjdG9yQnVmZmVyIHNwZWN0cmFfOworICBGZnRC
dWZmZXIgZmZ0c187CisgIGFic2w6Om9wdGlvbmFsPHNpemVfdD4gZGVsYXlfOworICBSZW5kZXJC
dWZmZXIgZWNob19yZW1vdmVyX2J1ZmZlcl87CisgIERvd25zYW1wbGVkUmVuZGVyQnVmZmVyIGxv
d19yYXRlXzsKKyAgRGVjaW1hdG9yIHJlbmRlcl9kZWNpbWF0b3JfOworICBjb25zdCBBZWMzRmZ0
IGZmdF87CisgIHN0ZDo6dmVjdG9yPGZsb2F0PiByZW5kZXJfZHNfOworICBjb25zdCBpbnQgYnVm
ZmVyX2hlYWRyb29tXzsKKyAgYm9vbCBsYXN0X2NhbGxfd2FzX3JlbmRlcl8gPSBmYWxzZTsKKyAg
aW50IG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfID0gMDsKKyAgaW50IG1heF9vYnNlcnZlZF9qaXR0
ZXJfID0gMTsKKyAgc2l6ZV90IGNhcHR1cmVfY2FsbF9jb3VudGVyXyA9IDA7CisgIHNpemVfdCBy
ZW5kZXJfY2FsbF9jb3VudGVyXyA9IDA7CisgIGJvb2wgcmVuZGVyX2FjdGl2aXR5XyA9IGZhbHNl
OworICBzaXplX3QgcmVuZGVyX2FjdGl2aXR5X2NvdW50ZXJfID0gMDsKKyAgYWJzbDo6b3B0aW9u
YWw8c2l6ZV90PiBleHRlcm5hbF9hdWRpb19idWZmZXJfZGVsYXlfOworICBib29sIGV4dGVybmFs
X2F1ZGlvX2J1ZmZlcl9kZWxheV92ZXJpZmllZF9hZnRlcl9yZXNldF8gPSBmYWxzZTsKKyAgc2l6
ZV90IG1pbl9sYXRlbmN5X2Jsb2Nrc18gPSAwOworICBzaXplX3QgZXhjZXNzX3JlbmRlcl9kZXRl
Y3Rpb25fY291bnRlcl8gPSAwOworICBzaXplX3QgbnVtX2JhbmRzXzsKKworICBpbnQgTWFwRGVs
YXlUb1RvdGFsRGVsYXkoc2l6ZV90IGRlbGF5KSBjb25zdDsKKyAgaW50IENvbXB1dGVEZWxheSgp
IGNvbnN0OworICB2b2lkIEFwcGx5VG90YWxEZWxheShpbnQgZGVsYXkpOworICB2b2lkIEluc2Vy
dEJsb2NrKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4mIGJsb2NrLAorICAg
ICAgICAgICAgICAgICAgIGludCBwcmV2aW91c193cml0ZSk7CisgIGJvb2wgRGV0ZWN0QWN0aXZl
UmVuZGVyKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiB4KSBjb25zdDsKKyAgYm9vbCBEZXRl
Y3RFeGNlc3NSZW5kZXJCbG9ja3MoKTsKKyAgdm9pZCBJbmNyZW1lbnRXcml0ZUluZGljZXMoKTsK
KyAgdm9pZCBJbmNyZW1lbnRMb3dSYXRlUmVhZEluZGljZXMoKTsKKyAgdm9pZCBJbmNyZW1lbnRS
ZWFkSW5kaWNlcygpOworICBib29sIFJlbmRlck92ZXJydW4oKTsKKyAgYm9vbCBSZW5kZXJVbmRl
cnJ1bigpOworfTsKKworaW50IFJlbmRlckRlbGF5QnVmZmVySW1wbDI6Omluc3RhbmNlX2NvdW50
XyA9IDA7CisKK1JlbmRlckRlbGF5QnVmZmVySW1wbDI6OlJlbmRlckRlbGF5QnVmZmVySW1wbDIo
CisgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKKyAgICBzaXplX3QgbnVt
X2JhbmRzKQorICAgIDogZGF0YV9kdW1wZXJfKAorICAgICAgICAgIG5ldyBBcG1EYXRhRHVtcGVy
KHJ0Yzo6QXRvbWljT3BzOjpJbmNyZW1lbnQoJmluc3RhbmNlX2NvdW50XykpKSwKKyAgICAgIG9w
dGltaXphdGlvbl8oRGV0ZWN0T3B0aW1pemF0aW9uKCkpLAorICAgICAgY29uZmlnXyhjb25maWcp
LAorICAgICAgZG93bl9zYW1wbGluZ19mYWN0b3JfKGNvbmZpZy5kZWxheS5kb3duX3NhbXBsaW5n
X2ZhY3RvciksCisgICAgICBzdWJfYmxvY2tfc2l6ZV8oc3RhdGljX2Nhc3Q8aW50Pihkb3duX3Nh
bXBsaW5nX2ZhY3Rvcl8gPiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPyBrQmxvY2tTaXplIC8gZG93bl9zYW1wbGluZ19mYWN0b3JfCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrQmxvY2tTaXplKSksCisgICAgICBibG9j
a3NfKEdldFJlbmRlckRlbGF5QnVmZmVyU2l6ZShkb3duX3NhbXBsaW5nX2ZhY3Rvcl8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGVsYXkubnVtX2ZpbHRl
cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZmlsdGVy
Lm1haW4ubGVuZ3RoX2Jsb2NrcyksCisgICAgICAgICAgICAgIG51bV9iYW5kcywKKyAgICAgICAg
ICAgICAga0Jsb2NrU2l6ZSksCisgICAgICBzcGVjdHJhXyhibG9ja3NfLmJ1ZmZlci5zaXplKCks
IGtGZnRMZW5ndGhCeTJQbHVzMSksCisgICAgICBmZnRzXyhibG9ja3NfLmJ1ZmZlci5zaXplKCkp
LAorICAgICAgZGVsYXlfKGNvbmZpZ18uZGVsYXkuZGVmYXVsdF9kZWxheSksCisgICAgICBlY2hv
X3JlbW92ZXJfYnVmZmVyXygmYmxvY2tzXywgJnNwZWN0cmFfLCAmZmZ0c18pLAorICAgICAgbG93
X3JhdGVfKEdldERvd25TYW1wbGVkQnVmZmVyU2l6ZShkb3duX3NhbXBsaW5nX2ZhY3Rvcl8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kZWxheS5udW1f
ZmlsdGVycykpLAorICAgICAgcmVuZGVyX2RlY2ltYXRvcl8oZG93bl9zYW1wbGluZ19mYWN0b3Jf
KSwKKyAgICAgIGZmdF8oKSwKKyAgICAgIHJlbmRlcl9kc18oc3ViX2Jsb2NrX3NpemVfLCAwLmYp
LAorICAgICAgYnVmZmVyX2hlYWRyb29tXyhjb25maWcuZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2Nr
cyksCisgICAgICBudW1fYmFuZHNfKG51bV9iYW5kcykgeworICBSVENfRENIRUNLX0VRKGJsb2Nr
c18uYnVmZmVyLnNpemUoKSwgZmZ0c18uYnVmZmVyLnNpemUoKSk7CisgIFJUQ19EQ0hFQ0tfRVEo
c3BlY3RyYV8uYnVmZmVyLnNpemUoKSwgZmZ0c18uYnVmZmVyLnNpemUoKSk7CisKKyAgUmVzZXQo
KTsKK30KKworUmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6flJlbmRlckRlbGF5QnVmZmVySW1wbDIo
KSA9IGRlZmF1bHQ7CisKKy8vIFJlc2V0cyB0aGUgYnVmZmVyIGRlbGF5cyBhbmQgY2xlYXJzIHRo
ZSByZXBvcnRlZCBkZWxheXMuCit2b2lkIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OlJlc2V0KCkg
eworICBsYXN0X2NhbGxfd2FzX3JlbmRlcl8gPSBmYWxzZTsKKyAgbnVtX2FwaV9jYWxsc19pbl9h
X3Jvd18gPSAxOworICBtaW5fbGF0ZW5jeV9ibG9ja3NfID0gMDsKKyAgZXhjZXNzX3JlbmRlcl9k
ZXRlY3Rpb25fY291bnRlcl8gPSAwOworCisgIC8vIEluaXRpYWxpemUgdGhlIHJlYWQgaW5kZXgg
dG8gb25lIHN1Yi1ibG9jayBiZWZvcmUgdGhlIHdyaXRlIGluZGV4LgorICBsb3dfcmF0ZV8ucmVh
ZCA9IGxvd19yYXRlXy5PZmZzZXRJbmRleChsb3dfcmF0ZV8ud3JpdGUsIHN1Yl9ibG9ja19zaXpl
Xyk7CisKKyAgLy8gQ2hlY2sgZm9yIGFueSBleHRlcm5hbCBhdWRpbyBidWZmZXIgZGVsYXkgYW5k
IHdoZXRoZXIgaXQgaXMgZmVhc2libGUuCisgIGlmIChleHRlcm5hbF9hdWRpb19idWZmZXJfZGVs
YXlfKSB7CisgICAgY29uc3Qgc2l6ZV90IGhlYWRyb29tID0gMjsKKyAgICBzaXplX3QgYXVkaW9f
YnVmZmVyX2RlbGF5X3RvX3NldDsKKyAgICAvLyBNaW5pbXVtIGRlbGF5IGlzIDEgKGxpa2UgdGhl
IGxvdy1yYXRlIHJlbmRlciBidWZmZXIpLgorICAgIGlmICgqZXh0ZXJuYWxfYXVkaW9fYnVmZmVy
X2RlbGF5XyA8PSBoZWFkcm9vbSkgeworICAgICAgYXVkaW9fYnVmZmVyX2RlbGF5X3RvX3NldCA9
IDE7CisgICAgfSBlbHNlIHsKKyAgICAgIGF1ZGlvX2J1ZmZlcl9kZWxheV90b19zZXQgPSAqZXh0
ZXJuYWxfYXVkaW9fYnVmZmVyX2RlbGF5XyAtIGhlYWRyb29tOworICAgIH0KKworICAgIGF1ZGlv
X2J1ZmZlcl9kZWxheV90b19zZXQgPSBzdGQ6Om1pbihhdWRpb19idWZmZXJfZGVsYXlfdG9fc2V0
LCBNYXhEZWxheSgpKTsKKworICAgIC8vIFdoZW4gYW4gZXh0ZXJuYWwgZGVsYXkgZXN0aW1hdGUg
aXMgYXZhaWxhYmxlLCB1c2UgdGhhdCBkZWxheSBhcyB0aGUKKyAgICAvLyBpbml0aWFsIHJlbmRl
ciBidWZmZXIgZGVsYXkuCisgICAgQXBwbHlUb3RhbERlbGF5KGF1ZGlvX2J1ZmZlcl9kZWxheV90
b19zZXQpOworICAgIGRlbGF5XyA9IENvbXB1dGVEZWxheSgpOworCisgICAgZXh0ZXJuYWxfYXVk
aW9fYnVmZmVyX2RlbGF5X3ZlcmlmaWVkX2FmdGVyX3Jlc2V0XyA9IGZhbHNlOworICB9IGVsc2Ug
eworICAgIC8vIElmIGFuIGV4dGVybmFsIGRlbGF5IGVzdGltYXRlIGlzIG5vdCBhdmFpbGFibGUs
IHVzZSB0aGF0IGRlbGF5IGFzIHRoZQorICAgIC8vIGluaXRpYWwgZGVsYXkuIFNldCB0aGUgcmVu
ZGVyIGJ1ZmZlciBkZWxheXMgdG8gdGhlIGRlZmF1bHQgZGVsYXkuCisgICAgQXBwbHlUb3RhbERl
bGF5KGNvbmZpZ18uZGVsYXkuZGVmYXVsdF9kZWxheSk7CisKKyAgICAvLyBVbnNldCB0aGUgZGVs
YXlzIHdoaWNoIGFyZSBzZXQgYnkgU2V0RGVsYXkuCisgICAgZGVsYXlfID0gYWJzbDo6bnVsbG9w
dDsKKyAgfQorfQorCisvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGludG8gdGhlIHJlbmRlciBidWZm
ZXJzLgorUmVuZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50IFJlbmRlckRlbGF5QnVmZmVy
SW1wbDI6Okluc2VydCgKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+
JiBibG9jaykgeworICArK3JlbmRlcl9jYWxsX2NvdW50ZXJfOworICBpZiAoZGVsYXlfKSB7Cisg
ICAgaWYgKCFsYXN0X2NhbGxfd2FzX3JlbmRlcl8pIHsKKyAgICAgIGxhc3RfY2FsbF93YXNfcmVu
ZGVyXyA9IHRydWU7CisgICAgICBudW1fYXBpX2NhbGxzX2luX2Ffcm93XyA9IDE7CisgICAgfSBl
bHNlIHsKKyAgICAgIGlmICgrK251bV9hcGlfY2FsbHNfaW5fYV9yb3dfID4gbWF4X29ic2VydmVk
X2ppdHRlcl8pIHsKKyAgICAgICAgbWF4X29ic2VydmVkX2ppdHRlcl8gPSBudW1fYXBpX2NhbGxz
X2luX2Ffcm93XzsKKyAgICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQorICAgICAgICAgICAgPDwg
Ik5ldyBtYXggbnVtYmVyIGFwaSBqaXR0ZXIgb2JzZXJ2ZWQgYXQgcmVuZGVyIGJsb2NrICIKKyAg
ICAgICAgICAgIDw8IHJlbmRlcl9jYWxsX2NvdW50ZXJfIDw8ICI6ICAiIDw8IG51bV9hcGlfY2Fs
bHNfaW5fYV9yb3dfCisgICAgICAgICAgICA8PCAiIGJsb2NrcyI7CisgICAgICB9CisgICAgfQor
ICB9CisKKyAgLy8gSW5jcmVhc2UgdGhlIHdyaXRlIGluZGljZXMgdG8gd2hlcmUgdGhlIG5ldyBi
bG9ja3Mgc2hvdWxkIGJlIHdyaXR0ZW4uCisgIGNvbnN0IGludCBwcmV2aW91c193cml0ZSA9IGJs
b2Nrc18ud3JpdGU7CisgIEluY3JlbWVudFdyaXRlSW5kaWNlcygpOworCisgIC8vIEFsbG93IG92
ZXJydW4gYW5kIGRvIGEgcmVzZXQgd2hlbiByZW5kZXIgb3ZlcnJ1biBvY2N1cnJzIGR1ZSB0byBt
b3JlIHJlbmRlcgorICAvLyBkYXRhIGJlaW5nIGluc2VydGVkIHRoYW4gY2FwdHVyZSBkYXRhIGlz
IHJlY2VpdmVkLgorICBCdWZmZXJpbmdFdmVudCBldmVudCA9CisgICAgICBSZW5kZXJPdmVycnVu
KCkgPyBCdWZmZXJpbmdFdmVudDo6a1JlbmRlck92ZXJydW4gOiBCdWZmZXJpbmdFdmVudDo6a05v
bmU7CisKKyAgLy8gRGV0ZWN0IGFuZCB1cGRhdGUgcmVuZGVyIGFjdGl2aXR5LgorICBpZiAoIXJl
bmRlcl9hY3Rpdml0eV8pIHsKKyAgICByZW5kZXJfYWN0aXZpdHlfY291bnRlcl8gKz0gRGV0ZWN0
QWN0aXZlUmVuZGVyKGJsb2NrWzBdKSA/IDEgOiAwOworICAgIHJlbmRlcl9hY3Rpdml0eV8gPSBy
ZW5kZXJfYWN0aXZpdHlfY291bnRlcl8gPj0gMjA7CisgIH0KKworICAvLyBJbnNlcnQgdGhlIG5l
dyByZW5kZXIgYmxvY2sgaW50byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgorICBJbnNlcnRCbG9j
ayhibG9jaywgcHJldmlvdXNfd3JpdGUpOworCisgIGlmIChldmVudCAhPSBCdWZmZXJpbmdFdmVu
dDo6a05vbmUpIHsKKyAgICBSZXNldCgpOworICB9CisKKyAgcmV0dXJuIGV2ZW50OworfQorCisv
LyBQcmVwYXJlcyB0aGUgcmVuZGVyIGJ1ZmZlcnMgZm9yIHByb2Nlc3NpbmcgYW5vdGhlciBjYXB0
dXJlIGJsb2NrLgorUmVuZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50CitSZW5kZXJEZWxh
eUJ1ZmZlckltcGwyOjpQcmVwYXJlQ2FwdHVyZVByb2Nlc3NpbmcoKSB7CisgIFJlbmRlckRlbGF5
QnVmZmVyOjpCdWZmZXJpbmdFdmVudCBldmVudCA9IEJ1ZmZlcmluZ0V2ZW50OjprTm9uZTsKKyAg
KytjYXB0dXJlX2NhbGxfY291bnRlcl87CisKKyAgaWYgKGRlbGF5XykgeworICAgIGlmIChsYXN0
X2NhbGxfd2FzX3JlbmRlcl8pIHsKKyAgICAgIGxhc3RfY2FsbF93YXNfcmVuZGVyXyA9IGZhbHNl
OworICAgICAgbnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPSAxOworICAgIH0gZWxzZSB7CisgICAg
ICBpZiAoKytudW1fYXBpX2NhbGxzX2luX2Ffcm93XyA+IG1heF9vYnNlcnZlZF9qaXR0ZXJfKSB7
CisgICAgICAgIG1heF9vYnNlcnZlZF9qaXR0ZXJfID0gbnVtX2FwaV9jYWxsc19pbl9hX3Jvd187
CisgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykKKyAgICAgICAgICAgIDw8ICJOZXcgbWF4IG51
bWJlciBhcGkgaml0dGVyIG9ic2VydmVkIGF0IGNhcHR1cmUgYmxvY2sgIgorICAgICAgICAgICAg
PDwgY2FwdHVyZV9jYWxsX2NvdW50ZXJfIDw8ICI6ICAiIDw8IG51bV9hcGlfY2FsbHNfaW5fYV9y
b3dfCisgICAgICAgICAgICA8PCAiIGJsb2NrcyI7CisgICAgICB9CisgICAgfQorICB9CisKKyAg
aWYgKERldGVjdEV4Y2Vzc1JlbmRlckJsb2NrcygpKSB7CisgICAgLy8gVG9vIG1hbnkgcmVuZGVy
IGJsb2NrcyBjb21wYXJlZCB0byBjYXB0dXJlIGJsb2Nrcy4gUmlzayBvZiBkZWxheSBlbmRpbmcK
KyAgICAvLyB1cCBiZWZvcmUgdGhlIGZpbHRlciB1c2VkIGJ5IHRoZSBkZWxheSBlc3RpbWF0b3Iu
CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRXhjZXNzIHJlbmRlciBibG9ja3MgZGV0ZWN0
ZWQgYXQgYmxvY2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgY2FwdHVyZV9jYWxsX2Nv
dW50ZXJfOworICAgIFJlc2V0KCk7CisgICAgZXZlbnQgPSBCdWZmZXJpbmdFdmVudDo6a1JlbmRl
ck92ZXJydW47CisgIH0gZWxzZSBpZiAoUmVuZGVyVW5kZXJydW4oKSkgeworICAgIC8vIERvbid0
IGluY3JlbWVudCB0aGUgcmVhZCBpbmRpY2VzIG9mIHRoZSBsb3cgcmF0ZSBidWZmZXIgaWYgdGhl
cmUgaXMgYQorICAgIC8vIHJlbmRlciB1bmRlcnJ1bi4KKyAgICBSVENfTE9HKExTX1dBUk5JTkcp
IDw8ICJSZW5kZXIgYnVmZmVyIHVuZGVycnVuIGRldGVjdGVkIGF0IGJsb2NrICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IGNhcHR1cmVfY2FsbF9jb3VudGVyXzsKKyAgICBJbmNyZW1lbnRS
ZWFkSW5kaWNlcygpOworICAgIC8vIEluY3JlbWVudGluZyB0aGUgYnVmZmVyIGluZGV4IHdpdGhv
dXQgaW5jcmVhc2luZyB0aGUgbG93IHJhdGUgYnVmZmVyCisgICAgLy8gaW5kZXggbWVhbnMgdGhh
dCB0aGUgZGVsYXkgaXMgcmVkdWNlZCBieSBvbmUuCisgICAgaWYgKGRlbGF5XyAmJiAqZGVsYXlf
ID4gMCkKKyAgICAgIGRlbGF5XyA9ICpkZWxheV8gLSAxOworICAgIGV2ZW50ID0gQnVmZmVyaW5n
RXZlbnQ6OmtSZW5kZXJVbmRlcnJ1bjsKKyAgfSBlbHNlIHsKKyAgICAvLyBJbmNyZW1lbnQgdGhl
IHJlYWQgaW5kaWNlcyBpbiB0aGUgcmVuZGVyIGJ1ZmZlcnMgdG8gcG9pbnQgdG8gdGhlIG1vc3QK
KyAgICAvLyByZWNlbnQgYmxvY2sgdG8gdXNlIGluIHRoZSBjYXB0dXJlIHByb2Nlc3NpbmcuCisg
ICAgSW5jcmVtZW50TG93UmF0ZVJlYWRJbmRpY2VzKCk7CisgICAgSW5jcmVtZW50UmVhZEluZGlj
ZXMoKTsKKyAgfQorCisgIGVjaG9fcmVtb3Zlcl9idWZmZXJfLlNldFJlbmRlckFjdGl2aXR5KHJl
bmRlcl9hY3Rpdml0eV8pOworICBpZiAocmVuZGVyX2FjdGl2aXR5XykgeworICAgIHJlbmRlcl9h
Y3Rpdml0eV9jb3VudGVyXyA9IDA7CisgICAgcmVuZGVyX2FjdGl2aXR5XyA9IGZhbHNlOworICB9
CisKKyAgcmV0dXJuIGV2ZW50OworfQorCisvLyBTZXRzIHRoZSBkZWxheSBhbmQgcmV0dXJucyBh
IGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBkZWxheSB3YXMgY2hhbmdlZC4KK2Jvb2wgUmVu
ZGVyRGVsYXlCdWZmZXJJbXBsMjo6U2V0RGVsYXkoc2l6ZV90IGRlbGF5KSB7CisgIGlmICghZXh0
ZXJuYWxfYXVkaW9fYnVmZmVyX2RlbGF5X3ZlcmlmaWVkX2FmdGVyX3Jlc2V0XyAmJgorICAgICAg
ZXh0ZXJuYWxfYXVkaW9fYnVmZmVyX2RlbGF5XyAmJiBkZWxheV8pIHsKKyAgICBpbnQgZGlmZmVy
ZW5jZSA9IHN0YXRpY19jYXN0PGludD4oZGVsYXkpIC0gc3RhdGljX2Nhc3Q8aW50PigqZGVsYXlf
KTsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJNaXNtYXRjaCBiZXR3ZWVuIGZpcnN0IGVz
dGltYXRlZCBkZWxheSBhZnRlciByZXNldCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAi
YW5kIGV4dGVybmFsbHkgcmVwb3J0ZWQgYXVkaW8gYnVmZmVyIGRlbGF5OiAiCisgICAgICAgICAg
ICAgICAgICAgICAgICA8PCBkaWZmZXJlbmNlIDw8ICIgYmxvY2tzIjsKKyAgICBleHRlcm5hbF9h
dWRpb19idWZmZXJfZGVsYXlfdmVyaWZpZWRfYWZ0ZXJfcmVzZXRfID0gdHJ1ZTsKKyAgfQorICBp
ZiAoZGVsYXlfICYmICpkZWxheV8gPT0gZGVsYXkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0K
KyAgZGVsYXlfID0gZGVsYXk7CisKKyAgLy8gQ29tcHV0ZSB0aGUgdG90YWwgZGVsYXkgYW5kIGxp
bWl0IHRoZSBkZWxheSB0byB0aGUgYWxsb3dlZCByYW5nZS4KKyAgaW50IHRvdGFsX2RlbGF5ID0g
TWFwRGVsYXlUb1RvdGFsRGVsYXkoKmRlbGF5Xyk7CisgIHRvdGFsX2RlbGF5ID0KKyAgICAgIHN0
ZDo6bWluKE1heERlbGF5KCksIHN0YXRpY19jYXN0PHNpemVfdD4oc3RkOjptYXgodG90YWxfZGVs
YXksIDApKSk7CisKKyAgLy8gQXBwbHkgdGhlIGRlbGF5IHRvIHRoZSBidWZmZXJzLgorICBBcHBs
eVRvdGFsRGVsYXkodG90YWxfZGVsYXkpOworICByZXR1cm4gdHJ1ZTsKK30KKworLy8gUmV0dXJu
cyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgZGVsYXkgaXMgY2F1c2FsLgorYm9vbCBSZW5kZXJEZWxh
eUJ1ZmZlckltcGwyOjpDYXVzYWxEZWxheShzaXplX3QgZGVsYXkpIGNvbnN0IHsKKyAgLy8gVE9E
TyhndXN0YWYpOiBSZW1vdmUgdGhpcyBmcm9tIFJlbmRlckRlbGF5QnVmZmVyLgorICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpTZXRBdWRpb0J1ZmZlckRl
bGF5KHNpemVfdCBkZWxheV9tcykgeworICBpZiAoIWV4dGVybmFsX2F1ZGlvX2J1ZmZlcl9kZWxh
eV8pIHsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpCisgICAgICAgIDw8ICJSZWNlaXZpbmcgYSBm
aXJzdCBleHRlcm5hbGx5IHJlcG9ydGVkIGF1ZGlvIGJ1ZmZlciBkZWxheSBvZiAiCisgICAgICAg
IDw8IGRlbGF5X21zIDw8ICIgbXMuIjsKKyAgfQorCisgIC8vIENvbnZlcnQgZGVsYXkgZnJvbSBt
aWxsaXNlY29uZHMgdG8gYmxvY2tzIChyb3VuZGVkIGRvd24pLgorICBleHRlcm5hbF9hdWRpb19i
dWZmZXJfZGVsYXlfID0gZGVsYXlfbXMgPj4gKChudW1fYmFuZHNfID09IDEpID8gMSA6IDIpOwor
fQorCisvLyBNYXBzIHRoZSBleHRlcm5hbGx5IGNvbXB1dGVkIGRlbGF5IHRvIHRoZSBkZWxheSB1
c2VkIGludGVybmFsbHkuCitpbnQgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6TWFwRGVsYXlUb1Rv
dGFsRGVsYXkoCisgICAgc2l6ZV90IGV4dGVybmFsX2RlbGF5X2Jsb2NrcykgY29uc3QgeworICBj
b25zdCBpbnQgbGF0ZW5jeV9ibG9ja3MgPSBCdWZmZXJMYXRlbmN5KCk7CisgIHJldHVybiBsYXRl
bmN5X2Jsb2NrcyArIHN0YXRpY19jYXN0PGludD4oZXh0ZXJuYWxfZGVsYXlfYmxvY2tzKTsKK30K
KworLy8gUmV0dXJucyB0aGUgZGVsYXkgKG5vdCBpbmNsdWRpbmcgY2FsbCBqaXR0ZXIpLgoraW50
IFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OkNvbXB1dGVEZWxheSgpIGNvbnN0IHsKKyAgY29uc3Qg
aW50IGxhdGVuY3lfYmxvY2tzID0gQnVmZmVyTGF0ZW5jeSgpOworICBpbnQgaW50ZXJuYWxfZGVs
YXkgPSBzcGVjdHJhXy5yZWFkID49IHNwZWN0cmFfLndyaXRlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICA/IHNwZWN0cmFfLnJlYWQgLSBzcGVjdHJhXy53cml0ZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBzcGVjdHJhXy5zaXplICsgc3BlY3RyYV8ucmVhZCAtIHNwZWN0cmFfLndy
aXRlOworCisgIHJldHVybiBpbnRlcm5hbF9kZWxheSAtIGxhdGVuY3lfYmxvY2tzOworfQorCisv
LyBTZXQgdGhlIHJlYWQgaW5kaWNlcyBhY2NvcmRpbmcgdG8gdGhlIGRlbGF5Lgordm9pZCBSZW5k
ZXJEZWxheUJ1ZmZlckltcGwyOjpBcHBseVRvdGFsRGVsYXkoaW50IGRlbGF5KSB7CisgIFJUQ19M
T0coTFNfV0FSTklORykgPDwgIkFwcGx5aW5nIHRvdGFsIGRlbGF5IG9mICIgPDwgZGVsYXkgPDwg
IiBibG9ja3MuIjsKKyAgYmxvY2tzXy5yZWFkID0gYmxvY2tzXy5PZmZzZXRJbmRleChibG9ja3Nf
LndyaXRlLCAtZGVsYXkpOworICBzcGVjdHJhXy5yZWFkID0gc3BlY3RyYV8uT2Zmc2V0SW5kZXgo
c3BlY3RyYV8ud3JpdGUsIGRlbGF5KTsKKyAgZmZ0c18ucmVhZCA9IGZmdHNfLk9mZnNldEluZGV4
KGZmdHNfLndyaXRlLCBkZWxheSk7Cit9CisKKy8vIEluc2VydHMgYSBibG9jayBpbnRvIHRoZSBy
ZW5kZXIgYnVmZmVycy4KK3ZvaWQgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6SW5zZXJ0QmxvY2so
CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiYgYmxvY2ssCisgICAg
aW50IHByZXZpb3VzX3dyaXRlKSB7CisgIGF1dG8mIGIgPSBibG9ja3NfOworICBhdXRvJiBsciA9
IGxvd19yYXRlXzsKKyAgYXV0byYgZHMgPSByZW5kZXJfZHNfOworICBhdXRvJiBmID0gZmZ0c187
CisgIGF1dG8mIHMgPSBzcGVjdHJhXzsKKyAgUlRDX0RDSEVDS19FUShibG9jay5zaXplKCksIGIu
YnVmZmVyW2Iud3JpdGVdLnNpemUoKSk7CisgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgYmxvY2su
c2l6ZSgpOyArK2spIHsKKyAgICBSVENfRENIRUNLX0VRKGJsb2NrW2tdLnNpemUoKSwgYi5idWZm
ZXJbYi53cml0ZV1ba10uc2l6ZSgpKTsKKyAgICBzdGQ6OmNvcHkoYmxvY2tba10uYmVnaW4oKSwg
YmxvY2tba10uZW5kKCksIGIuYnVmZmVyW2Iud3JpdGVdW2tdLmJlZ2luKCkpOworICB9CisKKyAg
ZGF0YV9kdW1wZXJfLT5EdW1wV2F2KCJhZWMzX3JlbmRlcl9kZWNpbWF0b3JfaW5wdXQiLCBibG9j
a1swXS5zaXplKCksCisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1swXS5kYXRhKCksIDE2
MDAwLCAxKTsKKyAgcmVuZGVyX2RlY2ltYXRvcl8uRGVjaW1hdGUoYmxvY2tbMF0sIGRzKTsKKyAg
ZGF0YV9kdW1wZXJfLT5EdW1wV2F2KCJhZWMzX3JlbmRlcl9kZWNpbWF0b3Jfb3V0cHV0IiwgZHMu
c2l6ZSgpLCBkcy5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAxNjAwMCAvIGRvd25f
c2FtcGxpbmdfZmFjdG9yXywgMSk7CisgIHN0ZDo6Y29weShkcy5yYmVnaW4oKSwgZHMucmVuZCgp
LCBsci5idWZmZXIuYmVnaW4oKSArIGxyLndyaXRlKTsKKyAgZmZ0Xy5QYWRkZWRGZnQoYmxvY2tb
MF0sIGIuYnVmZmVyW3ByZXZpb3VzX3dyaXRlXVswXSwgJmYuYnVmZmVyW2Yud3JpdGVdKTsKKyAg
Zi5idWZmZXJbZi53cml0ZV0uU3BlY3RydW0ob3B0aW1pemF0aW9uXywgcy5idWZmZXJbcy53cml0
ZV0pOworfQorCitib29sIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OkRldGVjdEFjdGl2ZVJlbmRl
cigKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4geCkgY29uc3QgeworICBjb25zdCBm
bG9hdCB4X2VuZXJneSA9IHN0ZDo6aW5uZXJfcHJvZHVjdCh4LmJlZ2luKCksIHguZW5kKCksIHgu
YmVnaW4oKSwgMC5mKTsKKyAgcmV0dXJuIHhfZW5lcmd5ID4gKGNvbmZpZ18ucmVuZGVyX2xldmVs
cy5hY3RpdmVfcmVuZGVyX2xpbWl0ICoKKyAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18ucmVu
ZGVyX2xldmVscy5hY3RpdmVfcmVuZGVyX2xpbWl0KSAqCisgICAgICAgICAgICAgICAgICAgICAg
ICBrRmZ0TGVuZ3RoQnkyOworfQorCitib29sIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OkRldGVj
dEV4Y2Vzc1JlbmRlckJsb2NrcygpIHsKKyAgYm9vbCBleGNlc3NfcmVuZGVyX2RldGVjdGVkID0g
ZmFsc2U7CisgIGNvbnN0IHNpemVfdCBsYXRlbmN5X2Jsb2NrcyA9IHN0YXRpY19jYXN0PHNpemVf
dD4oQnVmZmVyTGF0ZW5jeSgpKTsKKyAgLy8gVGhlIHJlY2VudGx5IHNlZW4gbWluaW11bSBsYXRl
bmN5IGluIGJsb2Nrcy4gU2hvdWxkIGJlIGNsb3NlIHRvIDAuCisgIG1pbl9sYXRlbmN5X2Jsb2Nr
c18gPSBzdGQ6Om1pbihtaW5fbGF0ZW5jeV9ibG9ja3NfLCBsYXRlbmN5X2Jsb2Nrcyk7CisgIC8v
IEFmdGVyIHByb2Nlc3NpbmcgYSBjb25maWd1cmFibGUgbnVtYmVyIG9mIGJsb2NrcyB0aGUgbWlu
aW11bSBsYXRlbmN5IGlzCisgIC8vIGNoZWNrZWQuCisgIGlmICgrK2V4Y2Vzc19yZW5kZXJfZGV0
ZWN0aW9uX2NvdW50ZXJfID49CisgICAgICBjb25maWdfLmJ1ZmZlcmluZy5leGNlc3NfcmVuZGVy
X2RldGVjdGlvbl9pbnRlcnZhbF9ibG9ja3MpIHsKKyAgICAvLyBJZiB0aGUgbWluaW11bSBsYXRl
bmN5IGlzIG5vdCBsb3dlciB0aGFuIHRoZSB0aHJlc2hvbGQgdGhlcmUgaGF2ZSBiZWVuCisgICAg
Ly8gbW9yZSByZW5kZXIgdGhhbiBjYXB0dXJlIGZyYW1lcy4KKyAgICBleGNlc3NfcmVuZGVyX2Rl
dGVjdGVkID0gbWluX2xhdGVuY3lfYmxvY2tzXyA+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbmZpZ18uYnVmZmVyaW5nLm1heF9hbGxvd2VkX2V4Y2Vzc19yZW5kZXJfYmxvY2tzOwor
ICAgIC8vIFJlc2V0IHRoZSBjb3VudGVyIGFuZCBsZXQgdGhlIG1pbmltdW0gbGF0ZW5jeSBiZSB0
aGUgY3VycmVudCBsYXRlbmN5LgorICAgIG1pbl9sYXRlbmN5X2Jsb2Nrc18gPSBsYXRlbmN5X2Js
b2NrczsKKyAgICBleGNlc3NfcmVuZGVyX2RldGVjdGlvbl9jb3VudGVyXyA9IDA7CisgIH0KKwor
ICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfbGF0ZW5jeV9ibG9ja3MiLCBsYXRlbmN5X2Js
b2Nrcyk7CisgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19taW5fbGF0ZW5jeV9ibG9ja3Mi
LCBtaW5fbGF0ZW5jeV9ibG9ja3NfKTsKKyAgZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJhZWMzX2V4
Y2Vzc19yZW5kZXJfZGV0ZWN0ZWQiLCBleGNlc3NfcmVuZGVyX2RldGVjdGVkKTsKKyAgcmV0dXJu
IGV4Y2Vzc19yZW5kZXJfZGV0ZWN0ZWQ7Cit9CisKKy8vIENvbXB1dGVzIHRoZSBsYXRlbmN5IGlu
IHRoZSBidWZmZXIgKHRoZSBudW1iZXIgb2YgdW5yZWFkIHN1Yi1ibG9ja3MpLgoraW50IFJlbmRl
ckRlbGF5QnVmZmVySW1wbDI6OkJ1ZmZlckxhdGVuY3koKSBjb25zdCB7CisgIGNvbnN0IERvd25z
YW1wbGVkUmVuZGVyQnVmZmVyJiBsID0gbG93X3JhdGVfOworICBpbnQgbGF0ZW5jeV9zYW1wbGVz
ID0gKGwuYnVmZmVyLnNpemUoKSArIGwucmVhZCAtIGwud3JpdGUpICUgbC5idWZmZXIuc2l6ZSgp
OworICBpbnQgbGF0ZW5jeV9ibG9ja3MgPSBsYXRlbmN5X3NhbXBsZXMgLyBzdWJfYmxvY2tfc2l6
ZV87CisgIHJldHVybiBsYXRlbmN5X2Jsb2NrczsKK30KKworLy8gSW5jcmVtZW50cyB0aGUgd3Jp
dGUgaW5kaWNlcyBmb3IgdGhlIHJlbmRlciBidWZmZXJzLgordm9pZCBSZW5kZXJEZWxheUJ1ZmZl
ckltcGwyOjpJbmNyZW1lbnRXcml0ZUluZGljZXMoKSB7CisgIGxvd19yYXRlXy5VcGRhdGVXcml0
ZUluZGV4KC1zdWJfYmxvY2tfc2l6ZV8pOworICBibG9ja3NfLkluY1dyaXRlSW5kZXgoKTsKKyAg
c3BlY3RyYV8uRGVjV3JpdGVJbmRleCgpOworICBmZnRzXy5EZWNXcml0ZUluZGV4KCk7Cit9CisK
Ky8vIEluY3JlbWVudHMgdGhlIHJlYWQgaW5kaWNlcyBvZiB0aGUgbG93IHJhdGUgcmVuZGVyIGJ1
ZmZlcnMuCit2b2lkIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OkluY3JlbWVudExvd1JhdGVSZWFk
SW5kaWNlcygpIHsKKyAgbG93X3JhdGVfLlVwZGF0ZVJlYWRJbmRleCgtc3ViX2Jsb2NrX3NpemVf
KTsKK30KKworLy8gSW5jcmVtZW50cyB0aGUgcmVhZCBpbmRpY2VzIGZvciB0aGUgcmVuZGVyIGJ1
ZmZlcnMuCit2b2lkIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OkluY3JlbWVudFJlYWRJbmRpY2Vz
KCkgeworICBpZiAoYmxvY2tzXy5yZWFkICE9IGJsb2Nrc18ud3JpdGUpIHsKKyAgICBibG9ja3Nf
LkluY1JlYWRJbmRleCgpOworICAgIHNwZWN0cmFfLkRlY1JlYWRJbmRleCgpOworICAgIGZmdHNf
LkRlY1JlYWRJbmRleCgpOworICB9Cit9CisKKy8vIENoZWNrcyBmb3IgYSByZW5kZXIgYnVmZmVy
IG92ZXJydW4uCitib29sIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OlJlbmRlck92ZXJydW4oKSB7
CisgIHJldHVybiBsb3dfcmF0ZV8ucmVhZCA9PSBsb3dfcmF0ZV8ud3JpdGUgfHwgYmxvY2tzXy5y
ZWFkID09IGJsb2Nrc18ud3JpdGU7Cit9CisKKy8vIENoZWNrcyBmb3IgYSByZW5kZXIgYnVmZmVy
IHVuZGVycnVuLgorYm9vbCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpSZW5kZXJVbmRlcnJ1bigp
IHsKKyAgcmV0dXJuIGxvd19yYXRlXy5yZWFkID09IGxvd19yYXRlXy53cml0ZTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlCisKK1JlbmRlckRlbGF5QnVmZmVyKiBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3Jl
YXRlMigKKyAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgIHNpemVf
dCBudW1fYmFuZHMpIHsKKyAgcmV0dXJuIG5ldyBSZW5kZXJEZWxheUJ1ZmZlckltcGwyKGNvbmZp
ZywgbnVtX2JhbmRzKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXJfdW5pdHRlc3QuY2MKaW5kZXggZWU4OTU5NzI2MTlm
NDA0MTZkOWNmZjJiYzI5MWEwODk4NzFmNDFjNi4uZDE1MzBjNjE0MmM0ZTkwYjNkMjE5YWRhN2Rm
M2RmZjgxOGJiNWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1
ZmZlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVy
X3VuaXR0ZXN0LmNjCkBAIC0zOCw3ICszOCw3IEBAIFRFU1QoUmVuZGVyRGVsYXlCdWZmZXIsIEJ1
ZmZlck92ZXJmbG93KSB7CiAgIGZvciAoYXV0byByYXRlIDogezgwMDAsIDE2MDAwLCAzMjAwMCwg
NDgwMDB9KSB7CiAgICAgU0NPUEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQocmF0ZSkpOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gZGVsYXlfYnVmZmVyKAotICAgICAg
ICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUp
KSk7CisgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNG
b3JSYXRlKHJhdGUpKSk7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiBibG9j
a190b19pbnNlcnQoCiAgICAgICAgIE51bUJhbmRzRm9yUmF0ZShyYXRlKSwgc3RkOjp2ZWN0b3I8
ZmxvYXQ+KGtCbG9ja1NpemUsIDAuZikpOwogICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgMTA7
ICsraykgewpAQCAtNjIsNyArNjIsNyBAQCBURVNUKFJlbmRlckRlbGF5QnVmZmVyLCBCdWZmZXJP
dmVyZmxvdykgewogVEVTVChSZW5kZXJEZWxheUJ1ZmZlciwgQXZhaWxhYmxlQmxvY2spIHsKICAg
Y29uc3RleHByIHNpemVfdCBrTnVtQmFuZHMgPSAxOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
RGVsYXlCdWZmZXI+IGRlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVh
dGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwga051bUJhbmRzKSk7CisgICAgICBSZW5kZXJEZWxh
eUJ1ZmZlcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBrTnVtQmFuZHMpKTsKICAg
c3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiBpbnB1dF9ibG9jaygKICAgICAgIGtOdW1C
YW5kcywgc3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUsIDEuZikpOwogICBFWFBFQ1RfRVEo
UmVuZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50OjprTm9uZSwKQEAgLTc0LDcgKzc0LDcg
QEAgVEVTVChSZW5kZXJEZWxheUJ1ZmZlciwgQXZhaWxhYmxlQmxvY2spIHsKIFRFU1QoUmVuZGVy
RGVsYXlCdWZmZXIsIFNldERlbGF5KSB7CiAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZzsK
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiBkZWxheV9idWZmZXIoCi0gICAg
ICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMSkpOworICAgICAgUmVuZGVyRGVs
YXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAxKSk7CiAgIEFTU0VSVF9UUlVFKGRlbGF5X2J1ZmZl
ci0+RGVsYXkoKSk7CiAgIGRlbGF5X2J1ZmZlci0+UmVzZXQoKTsKICAgc2l6ZV90IGluaXRpYWxf
aW50ZXJuYWxfZGVsYXkgPSBjb25maWcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3Mg
KwpAQCAtOTMsNyArOTMsNyBAQCBURVNUKFJlbmRlckRlbGF5QnVmZmVyLCBTZXREZWxheSkgewog
Ly8gdGVzdHMgb24gdGVzdCBib3RzIGhhcyBiZWVuIGZpeGVkLgogVEVTVChSZW5kZXJEZWxheUJ1
ZmZlciwgRElTQUJMRURfV3JvbmdEZWxheSkgewogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVs
YXlCdWZmZXI+IGRlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUo
RWNob0NhbmNlbGxlcjNDb25maWcoKSwgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNy
ZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgMykpOwogICBFWFBFQ1RfREVBVEgoZGVsYXlf
YnVmZmVyLT5TZXREZWxheSgyMSksICIiKTsKIH0KIApAQCAtMTAxLDcgKzEwMSw3IEBAIFRFU1Qo
UmVuZGVyRGVsYXlCdWZmZXIsIERJU0FCTEVEX1dyb25nRGVsYXkpIHsKIFRFU1QoUmVuZGVyRGVs
YXlCdWZmZXIsIFdyb25nTnVtYmVyT2ZCYW5kcykgewogICBmb3IgKGF1dG8gcmF0ZSA6IHsxNjAw
MCwgMzIwMDAsIDQ4MDAwfSkgewogICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJh
dGUpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IGRlbGF5X2J1ZmZl
cihSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKAorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJE
ZWxheUJ1ZmZlcj4gZGVsYXlfYnVmZmVyKFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKAogICAg
ICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKICAg
ICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IGJsb2NrX3RvX2luc2VydCgKICAgICAg
ICAgTnVtQmFuZHNGb3JSYXRlKHJhdGUgPCA0ODAwMCA/IHJhdGUgKyAxNjAwMCA6IDE2MDAwKSwK
QEAgLTExNSw3ICsxMTUsNyBAQCBURVNUKFJlbmRlckRlbGF5QnVmZmVyLCBXcm9uZ0Jsb2NrTGVu
Z3RoKSB7CiAgIGZvciAoYXV0byByYXRlIDogezgwMDAsIDE2MDAwLCAzMjAwMCwgNDgwMDB9KSB7
CiAgICAgU0NPUEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQocmF0ZSkpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gZGVsYXlfYnVmZmVyKAotICAgICAgICBSZW5kZXJE
ZWxheUJ1ZmZlcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKKyAgICAgICAg
UmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgMykpOwog
ICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gYmxvY2tfdG9faW5zZXJ0KAogICAg
ICAgICBOdW1CYW5kc0ZvclJhdGUocmF0ZSksIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXpl
IC0gMSwgMC5mKSk7CiAgICAgRVhQRUNUX0RFQVRIKGRlbGF5X2J1ZmZlci0+SW5zZXJ0KGJsb2Nr
X3RvX2luc2VydCksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxh
eV9jb250cm9sbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIu
Y2MKaW5kZXggZjMzNmMzOTJiNGVlNzAzOTYyMzY2ODIyMWQ4NGM4MDVmYjZhOTU4OC4uYzQ2NjVl
YWEyMjRkZWMxZWRkNDMyNWIyMjgyNjEwNGQ0MTU3YTk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVu
ZGVyX2RlbGF5X2NvbnRyb2xsZXIuY2MKQEAgLTksMTAgKzksOSBAQAogICovCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIuaCIK
IAorI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxt
ZW1vcnk+Ci0jaW5jbHVkZSA8bnVtZXJpYz4KLSNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIK
QEAgLTIwLDcgKzE5LDkgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9lY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdfZXN0aW1hdG9yLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9m
aWVsZF90cmlhbC5oIgpAQCAtNDQsNiArNDUsMTAgQEAgYm9vbCBVc2VPZmZzZXRCbG9ja3MoKSB7
CiAgIHJldHVybiBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM1VzZU9mZnNldEJs
b2NrcyIpOwogfQogCitib29sIFVzZUVhcmx5RGVsYXlEZXRlY3Rpb24oKSB7CisgIHJldHVybiAh
ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNFYXJseURlbGF5RGV0ZWN0aW9uS2ls
bFN3aXRjaCIpOworfQorCiBjb25zdGV4cHIgaW50IGtTa2V3SGlzdG9yeVNpemVMb2cyID0gODsK
IAogY2xhc3MgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJE
ZWxheUNvbnRyb2xsZXIgewpAQCAtNTIsMTcgKzU3LDE5IEBAIGNsYXNzIFJlbmRlckRlbGF5Q29u
dHJvbGxlckltcGwgZmluYWwgOiBwdWJsaWMgUmVuZGVyRGVsYXlDb250cm9sbGVyIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbm9uX2NhdXNhbF9vZmZzZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6KTsKICAgflJlbmRlckRlbGF5Q29u
dHJvbGxlckltcGwoKSBvdmVycmlkZTsKLSAgdm9pZCBSZXNldCgpIG92ZXJyaWRlOworICB2b2lk
IFJlc2V0KGJvb2wgcmVzZXRfZGVsYXlfY29uZmlkZW5jZSkgb3ZlcnJpZGU7CiAgIHZvaWQgTG9n
UmVuZGVyQ2FsbCgpIG92ZXJyaWRlOwogICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBH
ZXREZWxheSgKICAgICAgIGNvbnN0IERvd25zYW1wbGVkUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVm
ZmVyLAogICAgICAgc2l6ZV90IHJlbmRlcl9kZWxheV9idWZmZXJfZGVsYXksCiAgICAgICBjb25z
dCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBlY2hvX3JlbW92ZXJfZGVsYXksCiAgICAgICBydGM6OkFy
cmF5Vmlldzxjb25zdCBmbG9hdD4gY2FwdHVyZSkgb3ZlcnJpZGU7CisgIGJvb2wgSGFzQ2xvY2tk
cmlmdCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAgc3RhdGljIGludCBpbnN0YW5j
ZV9jb3VudF87CiAgIHN0ZDo6dW5pcXVlX3B0cjxBcG1EYXRhRHVtcGVyPiBkYXRhX2R1bXBlcl87
CisgIGNvbnN0IGJvb2wgdXNlX2Vhcmx5X2RlbGF5X2RldGVjdGlvbl87CiAgIGNvbnN0IGludCBk
ZWxheV9oZWFkcm9vbV9ibG9ja3NfOwogICBjb25zdCBpbnQgaHlzdGVyZXNpc19saW1pdF8xX2Js
b2Nrc187CiAgIGNvbnN0IGludCBoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzXzsKQEAgLTgxLDYg
Kzg4LDcgQEAgY2xhc3MgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbCBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJEZWxheUNvbnRyb2xsZXIgewogICBzaXplX3QgY2FwdHVyZV9jYWxsX2NvdW50ZXJfID0g
MDsKICAgaW50IGRlbGF5X2NoYW5nZV9jb3VudGVyXyA9IDA7CiAgIHNpemVfdCBzb2Z0X3Jlc2V0
X2NvdW50ZXJfID0gMDsKKyAgRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eSBsYXN0X2RlbGF5X2VzdGlt
YXRlX3F1YWxpdHlfOwogICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKFJlbmRl
ckRlbGF5Q29udHJvbGxlckltcGwpOwogfTsKIApAQCAtMTI5LDYgKzEzNyw3IEBAIFJlbmRlckRl
bGF5Q29udHJvbGxlckltcGw6OlJlbmRlckRlbGF5Q29udHJvbGxlckltcGwoCiAgICAgaW50IHNh
bXBsZV9yYXRlX2h6KQogICAgIDogZGF0YV9kdW1wZXJfKAogICAgICAgICAgIG5ldyBBcG1EYXRh
RHVtcGVyKHJ0Yzo6QXRvbWljT3BzOjpJbmNyZW1lbnQoJmluc3RhbmNlX2NvdW50XykpKSwKKyAg
ICAgIHVzZV9lYXJseV9kZWxheV9kZXRlY3Rpb25fKFVzZUVhcmx5RGVsYXlEZXRlY3Rpb24oKSks
CiAgICAgICBkZWxheV9oZWFkcm9vbV9ibG9ja3NfKAogICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dD4oY29uZmlnLmRlbGF5LmRlbGF5X2hlYWRyb29tX2Jsb2NrcykpLAogICAgICAgaHlzdGVyZXNp
c19saW1pdF8xX2Jsb2Nrc18oCkBAIC0xMzksNyArMTQ4LDggQEAgUmVuZGVyRGVsYXlDb250cm9s
bGVySW1wbDo6UmVuZGVyRGVsYXlDb250cm9sbGVySW1wbCgKICAgICAgIHVzZV9vZmZzZXRfYmxv
Y2tzXyhVc2VPZmZzZXRCbG9ja3MoKSksCiAgICAgICBkZWxheV9lc3RpbWF0b3JfKGRhdGFfZHVt
cGVyXy5nZXQoKSwgY29uZmlnKSwKICAgICAgIGRlbGF5X2J1Zl8oa0Jsb2NrU2l6ZSAqIG5vbl9j
YXVzYWxfb2Zmc2V0LCAwLmYpLAotICAgICAgc2tld19lc3RpbWF0b3JfKGtTa2V3SGlzdG9yeVNp
emVMb2cyKSB7CisgICAgICBza2V3X2VzdGltYXRvcl8oa1NrZXdIaXN0b3J5U2l6ZUxvZzIpLAor
ICAgICAgbGFzdF9kZWxheV9lc3RpbWF0ZV9xdWFsaXR5XyhEZWxheUVzdGltYXRlOjpRdWFsaXR5
OjprQ29hcnNlKSB7CiAgIFJUQ19EQ0hFQ0soVmFsaWRGdWxsQmFuZFJhdGUoc2FtcGxlX3JhdGVf
aHopKTsKICAgZGVsYXlfZXN0aW1hdG9yXy5Mb2dEZWxheUVzdGltYXRpb25Qcm9wZXJ0aWVzKHNh
bXBsZV9yYXRlX2h6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVsYXlfYnVmXy5zaXplKCkpOwpAQCAtMTQ3LDE2ICsxNTcsMTkgQEAgUmVuZGVyRGVs
YXlDb250cm9sbGVySW1wbDo6UmVuZGVyRGVsYXlDb250cm9sbGVySW1wbCgKIAogUmVuZGVyRGVs
YXlDb250cm9sbGVySW1wbDo6flJlbmRlckRlbGF5Q29udHJvbGxlckltcGwoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDo6UmVzZXQoKSB7Cit2b2lkIFJlbmRl
ckRlbGF5Q29udHJvbGxlckltcGw6OlJlc2V0KGJvb2wgcmVzZXRfZGVsYXlfY29uZmlkZW5jZSkg
ewogICBkZWxheV8gPSBhYnNsOjpudWxsb3B0OwogICBkZWxheV9zYW1wbGVzXyA9IGFic2w6Om51
bGxvcHQ7CiAgIHNrZXdfID0gYWJzbDo6bnVsbG9wdDsKICAgcHJldmlvdXNfb2Zmc2V0X2Jsb2Nr
c18gPSAwOwogICBzdGQ6OmZpbGwoZGVsYXlfYnVmXy5iZWdpbigpLCBkZWxheV9idWZfLmVuZCgp
LCAwLmYpOwotICBkZWxheV9lc3RpbWF0b3JfLlJlc2V0KGZhbHNlKTsKKyAgZGVsYXlfZXN0aW1h
dG9yXy5SZXNldChyZXNldF9kZWxheV9jb25maWRlbmNlKTsKICAgc2tld19lc3RpbWF0b3JfLlJl
c2V0KCk7CiAgIGRlbGF5X2NoYW5nZV9jb3VudGVyXyA9IDA7CiAgIHNvZnRfcmVzZXRfY291bnRl
cl8gPSAwOworICBpZiAocmVzZXRfZGVsYXlfY29uZmlkZW5jZSkgeworICAgIGxhc3RfZGVsYXlf
ZXN0aW1hdGVfcXVhbGl0eV8gPSBEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprQ29hcnNlOworICB9
CiB9CiAKIHZvaWQgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDo6TG9nUmVuZGVyQ2FsbCgpIHsK
QEAgLTE5NCw5ICsyMDcsNiBAQCBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBSZW5kZXJE
ZWxheUNvbnRyb2xsZXJJbXBsOjpHZXREZWxheSgKICAgYWJzbDo6b3B0aW9uYWw8aW50PiBza2V3
ID0gc2tld19lc3RpbWF0b3JfLkdldFNrZXdGcm9tQ2FwdHVyZSgpOwogCiAgIGlmIChkZWxheV9z
YW1wbGVzKSB7Ci0gICAgLy8gVE9ETyhwZWFoKTogUmVmYWN0b3IgdGhlIHJlc3Qgb2YgdGhlIGNv
ZGUgdG8gYXNzdW1lIGEga1JlZmluZWQgZXN0aW1hdGUKLSAgICAvLyBxdWFsaXR5LgotICAgIFJU
Q19EQ0hFQ0soRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a1JlZmluZWQgPT0gZGVsYXlfc2FtcGxl
cy0+cXVhbGl0eSk7CiAgICAgaWYgKCFkZWxheV9zYW1wbGVzXyB8fCBkZWxheV9zYW1wbGVzLT5k
ZWxheSAhPSBkZWxheV9zYW1wbGVzXy0+ZGVsYXkpIHsKICAgICAgIGRlbGF5X2NoYW5nZV9jb3Vu
dGVyXyA9IDA7CiAgICAgfQpAQCAtMjM5LDcgKzI0OSw3IEBAIGFic2w6Om9wdGlvbmFsPERlbGF5
RXN0aW1hdGU+IFJlbmRlckRlbGF5Q29udHJvbGxlckltcGw6OkdldERlbGF5KAogICAgIH0gZWxz
ZSBpZiAoc29mdF9yZXNldF9jb3VudGVyXyA+IDEwICoga051bUJsb2Nrc1BlclNlY29uZCkgewog
ICAgICAgLy8gU29mdCByZXNldCB0aGUgZGVsYXkgZXN0aW1hdG9yIGlmIHRoZXJlIGlzIGEgc2ln
bmlmaWNhbnQgb2Zmc2V0CiAgICAgICAvLyBkZXRlY3RlZC4KLSAgICAgIGRlbGF5X2VzdGltYXRv
cl8uUmVzZXQodHJ1ZSk7CisgICAgICBkZWxheV9lc3RpbWF0b3JfLlJlc2V0KGZhbHNlKTsKICAg
ICAgIHNvZnRfcmVzZXRfY291bnRlcl8gPSAwOwogICAgIH0KICAgfQpAQCAtMjY0LDE0ICsyNzQs
MjAgQEAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gUmVuZGVyRGVsYXlDb250cm9sbGVy
SW1wbDo6R2V0RGVsYXkoCiAKICAgaWYgKGRlbGF5X3NhbXBsZXNfKSB7CiAgICAgLy8gQ29tcHV0
ZSB0aGUgcmVuZGVyIGRlbGF5IGJ1ZmZlciBkZWxheS4KLSAgICBkZWxheV8gPSBDb21wdXRlQnVm
ZmVyRGVsYXkoCi0gICAgICAgIGRlbGF5XywgZGVsYXlfaGVhZHJvb21fYmxvY2tzXywgaHlzdGVy
ZXNpc19saW1pdF8xX2Jsb2Nrc18sCi0gICAgICAgIGh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3Nf
LCBvZmZzZXRfYmxvY2tzLCAqZGVsYXlfc2FtcGxlc18pOworICAgIGNvbnN0IGJvb2wgdXNlX2h5
c3RlcmVzaXMgPQorICAgICAgICBsYXN0X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlfID09IERlbGF5
RXN0aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVkICYmCisgICAgICAgIGRlbGF5X3NhbXBsZXNfLT5x
dWFsaXR5ID09IERlbGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVkOworICAgIGRlbGF5XyA9
IENvbXB1dGVCdWZmZXJEZWxheShkZWxheV8sIGRlbGF5X2hlYWRyb29tX2Jsb2Nrc18sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9oeXN0ZXJlc2lzID8gaHlzdGVyZXNpc19s
aW1pdF8xX2Jsb2Nrc18gOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vf
aHlzdGVyZXNpcyA/IGh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3NfIDogMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0X2Jsb2NrcywgKmRlbGF5X3NhbXBsZXNfKTsKKyAg
ICBsYXN0X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlfID0gZGVsYXlfc2FtcGxlc18tPnF1YWxpdHk7
CiAgIH0KIAogICBtZXRyaWNzXy5VcGRhdGUoZGVsYXlfc2FtcGxlc18gPyBhYnNsOjpvcHRpb25h
bDxzaXplX3Q+KGRlbGF5X3NhbXBsZXNfLT5kZWxheSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogYWJzbDo6bnVsbG9wdCwKLSAgICAgICAgICAgICAgICAgIGRlbGF5XyA/IGRl
bGF5Xy0+ZGVsYXkgOiAwLCBza2V3X3NoaWZ0KTsKKyAgICAgICAgICAgICAgICAgIGRlbGF5XyA/
IGRlbGF5Xy0+ZGVsYXkgOiAwLCBza2V3X3NoaWZ0LAorICAgICAgICAgICAgICAgICAgZGVsYXlf
ZXN0aW1hdG9yXy5DbG9ja2RyaWZ0KCkpOwogCiAgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVj
M19yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9kZWxheSIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWxheV9zYW1wbGVzID8gZGVsYXlfc2FtcGxlcy0+ZGVsYXkgOiAwKTsKQEAgLTI4Nyw2ICsz
MDMsMTAgQEAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gUmVuZGVyRGVsYXlDb250cm9s
bGVySW1wbDo6R2V0RGVsYXkoCiAgIHJldHVybiBkZWxheV87CiB9CiAKK2Jvb2wgUmVuZGVyRGVs
YXlDb250cm9sbGVySW1wbDo6SGFzQ2xvY2tkcmlmdCgpIGNvbnN0IHsKKyAgcmV0dXJuIGRlbGF5
X2VzdGltYXRvcl8uQ2xvY2tkcmlmdCgpICE9IENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtO
b25lOworfQorCiB9ICAvLyBuYW1lc3BhY2UKIAogUmVuZGVyRGVsYXlDb250cm9sbGVyKiBSZW5k
ZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jl
bmRlcl9kZWxheV9jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29u
dHJvbGxlci5oCmluZGV4IGRkZDk1NDgyZmNjZTE4YjhiYmE5MmRhOWY0Njk4NTI1ZWExYzA4OTQu
LmI0NmVkODkyNTI3Zjc5Mjg4MWVmNTQ4YzNiMjE5Njk4ZTJjZWI4YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIuaApAQCAtMjcsMTAgKzI3LDEzIEBAIGNsYXNzIFJl
bmRlckRlbGF5Q29udHJvbGxlciB7CiAgIHN0YXRpYyBSZW5kZXJEZWxheUNvbnRyb2xsZXIqIENy
ZWF0ZShjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vbl9jYXVzYWxfb2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6KTsKKyAgc3Rh
dGljIFJlbmRlckRlbGF5Q29udHJvbGxlciogQ3JlYXRlMihjb25zdCBFY2hvQ2FuY2VsbGVyM0Nv
bmZpZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzYW1wbGVfcmF0ZV9oeik7CiAgIHZpcnR1YWwgflJlbmRlckRlbGF5Q29udHJvbGxlcigpID0g
ZGVmYXVsdDsKIAotICAvLyBSZXNldHMgdGhlIGRlbGF5IGNvbnRyb2xsZXIuCi0gIHZpcnR1YWwg
dm9pZCBSZXNldCgpID0gMDsKKyAgLy8gUmVzZXRzIHRoZSBkZWxheSBjb250cm9sbGVyLiBJZiB0
aGUgZGVsYXkgY29uZmlkZW5jZSBpcyByZXNldCwgdGhlIHJlc2V0CisgIC8vIGJlaGF2aW9yIGlz
IGFzIGlmIHRoZSBjYWxsIGlzIHJlc3RhcnRlZC4KKyAgdmlydHVhbCB2b2lkIFJlc2V0KGJvb2wg
cmVzZXRfZGVsYXlfY29uZmlkZW5jZSkgPSAwOwogCiAgIC8vIExvZ3MgYSByZW5kZXIgY2FsbC4K
ICAgdmlydHVhbCB2b2lkIExvZ1JlbmRlckNhbGwoKSA9IDA7CkBAIC00MSw2ICs0NCw5IEBAIGNs
YXNzIFJlbmRlckRlbGF5Q29udHJvbGxlciB7CiAgICAgICBzaXplX3QgcmVuZGVyX2RlbGF5X2J1
ZmZlcl9kZWxheSwKICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIGVjaG9fcmVtb3Zl
cl9kZWxheSwKICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjYXB0dXJlKSA9IDA7
CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmIGNsb2NrZHJpZnQgaGFzIGJlZW4gZGV0ZWN0ZWQuCisg
IHZpcnR1YWwgYm9vbCBIYXNDbG9ja2RyaWZ0KCkgY29uc3QgPSAwOwogfTsKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2Nv
bnRyb2xsZXIyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIyLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAwZGFmOGYyYWY3MWMyZGRhYmIzNzRhY2FkZmVkYjc5Njk5OGU0MjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcjIu
Y2MKQEAgLTAsMCArMSwyMTggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworI2luY2x1ZGUgPHN0
ZGRlZi5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIK
KyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZGVsYXlfZXN0aW1hdGUuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJfYnVmZmVy
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2Rl
bGF5X2VzdGltYXRvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljcy5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsK
KworbmFtZXNwYWNlIHsKKworYm9vbCBVc2VFYXJseURlbGF5RGV0ZWN0aW9uKCkgeworICByZXR1
cm4gIWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzRWFybHlEZWxheURldGVjdGlv
bktpbGxTd2l0Y2giKTsKK30KKworY2xhc3MgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDIgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyRGVsYXlDb250cm9sbGVyIHsKKyBwdWJsaWM6CisgIFJlbmRlckRl
bGF5Q29udHJvbGxlckltcGwyKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeik7CisgIH5SZW5k
ZXJEZWxheUNvbnRyb2xsZXJJbXBsMigpIG92ZXJyaWRlOworICB2b2lkIFJlc2V0KGJvb2wgcmVz
ZXRfZGVsYXlfY29uZmlkZW5jZSkgb3ZlcnJpZGU7CisgIHZvaWQgTG9nUmVuZGVyQ2FsbCgpIG92
ZXJyaWRlOworICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBHZXREZWxheSgKKyAgICAg
IGNvbnN0IERvd25zYW1wbGVkUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgICAgc2l6
ZV90IHJlbmRlcl9kZWxheV9idWZmZXJfZGVsYXksCisgICAgICBjb25zdCBhYnNsOjpvcHRpb25h
bDxpbnQ+JiBlY2hvX3JlbW92ZXJfZGVsYXksCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBm
bG9hdD4gY2FwdHVyZSkgb3ZlcnJpZGU7CisgIGJvb2wgSGFzQ2xvY2tkcmlmdCgpIGNvbnN0IG92
ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgc3RhdGljIGludCBpbnN0YW5jZV9jb3VudF87CisgIHN0
ZDo6dW5pcXVlX3B0cjxBcG1EYXRhRHVtcGVyPiBkYXRhX2R1bXBlcl87CisgIGNvbnN0IGJvb2wg
dXNlX2Vhcmx5X2RlbGF5X2RldGVjdGlvbl87CisgIGNvbnN0IGludCBkZWxheV9oZWFkcm9vbV9i
bG9ja3NfOworICBjb25zdCBpbnQgaHlzdGVyZXNpc19saW1pdF8xX2Jsb2Nrc187CisgIGNvbnN0
IGludCBoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzXzsKKyAgYWJzbDo6b3B0aW9uYWw8RGVsYXlF
c3RpbWF0ZT4gZGVsYXlfOworICBFY2hvUGF0aERlbGF5RXN0aW1hdG9yIGRlbGF5X2VzdGltYXRv
cl87CisgIFJlbmRlckRlbGF5Q29udHJvbGxlck1ldHJpY3MgbWV0cmljc187CisgIGFic2w6Om9w
dGlvbmFsPERlbGF5RXN0aW1hdGU+IGRlbGF5X3NhbXBsZXNfOworICBzaXplX3QgY2FwdHVyZV9j
YWxsX2NvdW50ZXJfID0gMDsKKyAgaW50IGRlbGF5X2NoYW5nZV9jb3VudGVyXyA9IDA7CisgIERl
bGF5RXN0aW1hdGU6OlF1YWxpdHkgbGFzdF9kZWxheV9lc3RpbWF0ZV9xdWFsaXR5XzsKKyAgUlRD
X0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBs
Mik7Cit9OworCitEZWxheUVzdGltYXRlIENvbXB1dGVCdWZmZXJEZWxheSgKKyAgICBjb25zdCBh
YnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiYgY3VycmVudF9kZWxheSwKKyAgICBpbnQgZGVs
YXlfaGVhZHJvb21fYmxvY2tzLAorICAgIGludCBoeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzLAor
ICAgIGludCBoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzLAorICAgIERlbGF5RXN0aW1hdGUgZXN0
aW1hdGVkX2RlbGF5KSB7CisgIC8vIFRoZSBiZWxvdyBkaXZpc2lvbiBpcyBub3QgZXhhY3QgYW5k
IHRoZSB0cnVuY2F0aW9uIGlzIGludGVuZGVkLgorICBjb25zdCBpbnQgZWNob19wYXRoX2RlbGF5
X2Jsb2NrcyA9IGVzdGltYXRlZF9kZWxheS5kZWxheSA+PiBrQmxvY2tTaXplTG9nMjsKKworICAv
LyBDb21wdXRlIHRoZSBidWZmZXIgZGVsYXkgaW5jcmVhc2UgcmVxdWlyZWQgdG8gYWNoaWV2ZSB0
aGUgZGVzaXJlZCBsYXRlbmN5LgorICBzaXplX3QgbmV3X2RlbGF5X2Jsb2NrcyA9CisgICAgICBz
dGQ6Om1heChlY2hvX3BhdGhfZGVsYXlfYmxvY2tzIC0gZGVsYXlfaGVhZHJvb21fYmxvY2tzLCAw
KTsKKworICAvLyBBZGQgaHlzdGVyZXNpcy4KKyAgaWYgKGN1cnJlbnRfZGVsYXkpIHsKKyAgICBz
aXplX3QgY3VycmVudF9kZWxheV9ibG9ja3MgPSBjdXJyZW50X2RlbGF5LT5kZWxheTsKKyAgICBp
ZiAobmV3X2RlbGF5X2Jsb2NrcyA+IGN1cnJlbnRfZGVsYXlfYmxvY2tzKSB7CisgICAgICBpZiAo
bmV3X2RlbGF5X2Jsb2NrcyA8PQorICAgICAgICAgIGN1cnJlbnRfZGVsYXlfYmxvY2tzICsgaHlz
dGVyZXNpc19saW1pdF8xX2Jsb2NrcykgeworICAgICAgICBuZXdfZGVsYXlfYmxvY2tzID0gY3Vy
cmVudF9kZWxheV9ibG9ja3M7CisgICAgICB9CisgICAgfSBlbHNlIGlmIChuZXdfZGVsYXlfYmxv
Y2tzIDwgY3VycmVudF9kZWxheV9ibG9ja3MpIHsKKyAgICAgIHNpemVfdCBoeXN0ZXJlc2lzX2xp
bWl0ID0gc3RkOjptYXgoCisgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihjdXJyZW50X2RlbGF5
X2Jsb2NrcykgLSBoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzLAorICAgICAgICAgIDApOworICAg
ICAgaWYgKG5ld19kZWxheV9ibG9ja3MgPj0gaHlzdGVyZXNpc19saW1pdCkgeworICAgICAgICBu
ZXdfZGVsYXlfYmxvY2tzID0gY3VycmVudF9kZWxheV9ibG9ja3M7CisgICAgICB9CisgICAgfQor
ICB9CisKKyAgRGVsYXlFc3RpbWF0ZSBuZXdfZGVsYXkgPSBlc3RpbWF0ZWRfZGVsYXk7CisgIG5l
d19kZWxheS5kZWxheSA9IG5ld19kZWxheV9ibG9ja3M7CisgIHJldHVybiBuZXdfZGVsYXk7Cit9
CisKK2ludCBSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsMjo6aW5zdGFuY2VfY291bnRfID0gMDsK
KworUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDI6OlJlbmRlckRlbGF5Q29udHJvbGxlckltcGwy
KAorICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisgICAgaW50IHNhbXBs
ZV9yYXRlX2h6KQorICAgIDogZGF0YV9kdW1wZXJfKAorICAgICAgICAgIG5ldyBBcG1EYXRhRHVt
cGVyKHJ0Yzo6QXRvbWljT3BzOjpJbmNyZW1lbnQoJmluc3RhbmNlX2NvdW50XykpKSwKKyAgICAg
IHVzZV9lYXJseV9kZWxheV9kZXRlY3Rpb25fKFVzZUVhcmx5RGVsYXlEZXRlY3Rpb24oKSksCisg
ICAgICBkZWxheV9oZWFkcm9vbV9ibG9ja3NfKAorICAgICAgICAgIHN0YXRpY19jYXN0PGludD4o
Y29uZmlnLmRlbGF5LmRlbGF5X2hlYWRyb29tX2Jsb2NrcykpLAorICAgICAgaHlzdGVyZXNpc19s
aW1pdF8xX2Jsb2Nrc18oCisgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihjb25maWcuZGVsYXku
aHlzdGVyZXNpc19saW1pdF8xX2Jsb2NrcykpLAorICAgICAgaHlzdGVyZXNpc19saW1pdF8yX2Js
b2Nrc18oCisgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihjb25maWcuZGVsYXkuaHlzdGVyZXNp
c19saW1pdF8yX2Jsb2NrcykpLAorICAgICAgZGVsYXlfZXN0aW1hdG9yXyhkYXRhX2R1bXBlcl8u
Z2V0KCksIGNvbmZpZyksCisgICAgICBsYXN0X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlfKERlbGF5
RXN0aW1hdGU6OlF1YWxpdHk6OmtDb2Fyc2UpIHsKKyAgUlRDX0RDSEVDSyhWYWxpZEZ1bGxCYW5k
UmF0ZShzYW1wbGVfcmF0ZV9oeikpOworICBkZWxheV9lc3RpbWF0b3JfLkxvZ0RlbGF5RXN0aW1h
dGlvblByb3BlcnRpZXMoc2FtcGxlX3JhdGVfaHosIDApOworfQorCitSZW5kZXJEZWxheUNvbnRy
b2xsZXJJbXBsMjo6flJlbmRlckRlbGF5Q29udHJvbGxlckltcGwyKCkgPSBkZWZhdWx0OworCit2
b2lkIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGwyOjpSZXNldChib29sIHJlc2V0X2RlbGF5X2Nv
bmZpZGVuY2UpIHsKKyAgZGVsYXlfID0gYWJzbDo6bnVsbG9wdDsKKyAgZGVsYXlfc2FtcGxlc18g
PSBhYnNsOjpudWxsb3B0OworICBkZWxheV9lc3RpbWF0b3JfLlJlc2V0KHJlc2V0X2RlbGF5X2Nv
bmZpZGVuY2UpOworICBkZWxheV9jaGFuZ2VfY291bnRlcl8gPSAwOworICBpZiAocmVzZXRfZGVs
YXlfY29uZmlkZW5jZSkgeworICAgIGxhc3RfZGVsYXlfZXN0aW1hdGVfcXVhbGl0eV8gPSBEZWxh
eUVzdGltYXRlOjpRdWFsaXR5OjprQ29hcnNlOworICB9Cit9CisKK3ZvaWQgUmVuZGVyRGVsYXlD
b250cm9sbGVySW1wbDI6OkxvZ1JlbmRlckNhbGwoKSB7fQorCithYnNsOjpvcHRpb25hbDxEZWxh
eUVzdGltYXRlPiBSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsMjo6R2V0RGVsYXkoCisgICAgY29u
c3QgRG93bnNhbXBsZWRSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCisgICAgc2l6ZV90IHJl
bmRlcl9kZWxheV9idWZmZXJfZGVsYXksCisgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiYg
ZWNob19yZW1vdmVyX2RlbGF5LAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjYXB0
dXJlKSB7CisgIFJUQ19EQ0hFQ0tfRVEoa0Jsb2NrU2l6ZSwgY2FwdHVyZS5zaXplKCkpOworICAr
K2NhcHR1cmVfY2FsbF9jb3VudGVyXzsKKworICBhdXRvIGRlbGF5X3NhbXBsZXMgPSBkZWxheV9l
c3RpbWF0b3JfLkVzdGltYXRlRGVsYXkocmVuZGVyX2J1ZmZlciwgY2FwdHVyZSk7CisKKyAgLy8g
T3ZlcnJ1bGUgdGhlIGRlbGF5IGVzdGltYXRvciBkZWxheSBpZiB0aGUgZWNobyByZW1vdmVyIHJl
cG9ydHMgYSBkZWxheS4KKyAgaWYgKGVjaG9fcmVtb3Zlcl9kZWxheSkgeworICAgIGludCB0b3Rh
bF9lY2hvX3JlbW92ZXJfZGVsYXlfc2FtcGxlcyA9CisgICAgICAgIChyZW5kZXJfZGVsYXlfYnVm
ZmVyX2RlbGF5ICsgKmVjaG9fcmVtb3Zlcl9kZWxheSkgKiBrQmxvY2tTaXplOworICAgIGRlbGF5
X3NhbXBsZXMgPSBEZWxheUVzdGltYXRlKERlbGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2VjaG9fcmVtb3Zlcl9k
ZWxheV9zYW1wbGVzKTsKKyAgfQorCisgIGlmIChkZWxheV9zYW1wbGVzKSB7CisgICAgaWYgKCFk
ZWxheV9zYW1wbGVzXyB8fCBkZWxheV9zYW1wbGVzLT5kZWxheSAhPSBkZWxheV9zYW1wbGVzXy0+
ZGVsYXkpIHsKKyAgICAgIGRlbGF5X2NoYW5nZV9jb3VudGVyXyA9IDA7CisgICAgfQorICAgIGlm
IChkZWxheV9zYW1wbGVzXykgeworICAgICAgZGVsYXlfc2FtcGxlc18tPmJsb2Nrc19zaW5jZV9s
YXN0X2NoYW5nZSA9CisgICAgICAgICAgZGVsYXlfc2FtcGxlc18tPmRlbGF5ID09IGRlbGF5X3Nh
bXBsZXMtPmRlbGF5CisgICAgICAgICAgICAgID8gZGVsYXlfc2FtcGxlc18tPmJsb2Nrc19zaW5j
ZV9sYXN0X2NoYW5nZSArIDEKKyAgICAgICAgICAgICAgOiAwOworICAgICAgZGVsYXlfc2FtcGxl
c18tPmJsb2Nrc19zaW5jZV9sYXN0X3VwZGF0ZSA9IDA7CisgICAgICBkZWxheV9zYW1wbGVzXy0+
ZGVsYXkgPSBkZWxheV9zYW1wbGVzLT5kZWxheTsKKyAgICAgIGRlbGF5X3NhbXBsZXNfLT5xdWFs
aXR5ID0gZGVsYXlfc2FtcGxlcy0+cXVhbGl0eTsKKyAgICB9IGVsc2UgeworICAgICAgZGVsYXlf
c2FtcGxlc18gPSBkZWxheV9zYW1wbGVzOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBpZiAoZGVs
YXlfc2FtcGxlc18pIHsKKyAgICAgICsrZGVsYXlfc2FtcGxlc18tPmJsb2Nrc19zaW5jZV9sYXN0
X2NoYW5nZTsKKyAgICAgICsrZGVsYXlfc2FtcGxlc18tPmJsb2Nrc19zaW5jZV9sYXN0X3VwZGF0
ZTsKKyAgICB9CisgIH0KKworICBpZiAoZGVsYXlfY2hhbmdlX2NvdW50ZXJfIDwgMiAqIGtOdW1C
bG9ja3NQZXJTZWNvbmQpIHsKKyAgICArK2RlbGF5X2NoYW5nZV9jb3VudGVyXzsKKyAgfQorCisg
IGlmIChkZWxheV9zYW1wbGVzXykgeworICAgIC8vIENvbXB1dGUgdGhlIHJlbmRlciBkZWxheSBi
dWZmZXIgZGVsYXkuCisgICAgY29uc3QgYm9vbCB1c2VfaHlzdGVyZXNpcyA9CisgICAgICAgIGxh
c3RfZGVsYXlfZXN0aW1hdGVfcXVhbGl0eV8gPT0gRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a1Jl
ZmluZWQgJiYKKyAgICAgICAgZGVsYXlfc2FtcGxlc18tPnF1YWxpdHkgPT0gRGVsYXlFc3RpbWF0
ZTo6UXVhbGl0eTo6a1JlZmluZWQ7CisgICAgZGVsYXlfID0gQ29tcHV0ZUJ1ZmZlckRlbGF5KGRl
bGF5XywgZGVsYXlfaGVhZHJvb21fYmxvY2tzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXNlX2h5c3RlcmVzaXMgPyBoeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzXyA6IDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9oeXN0ZXJlc2lzID8gaHlzdGVyZXNp
c19saW1pdF8yX2Jsb2Nrc18gOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
ZGVsYXlfc2FtcGxlc18pOworICAgIGxhc3RfZGVsYXlfZXN0aW1hdGVfcXVhbGl0eV8gPSBkZWxh
eV9zYW1wbGVzXy0+cXVhbGl0eTsKKyAgfQorCisgIG1ldHJpY3NfLlVwZGF0ZShkZWxheV9zYW1w
bGVzXyA/IGFic2w6Om9wdGlvbmFsPHNpemVfdD4oZGVsYXlfc2FtcGxlc18tPmRlbGF5KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhYnNsOjpudWxsb3B0LAorICAgICAgICAg
ICAgICAgICAgZGVsYXlfID8gZGVsYXlfLT5kZWxheSA6IDAsIDAsIGRlbGF5X2VzdGltYXRvcl8u
Q2xvY2tkcmlmdCgpKTsKKworICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfcmVuZGVyX2Rl
bGF5X2NvbnRyb2xsZXJfZGVsYXkiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXlfc2Ft
cGxlcyA/IGRlbGF5X3NhbXBsZXMtPmRlbGF5IDogMCk7CisgIGRhdGFfZHVtcGVyXy0+RHVtcFJh
dygiYWVjM19yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9idWZmZXJfZGVsYXkiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZGVsYXlfID8gZGVsYXlfLT5kZWxheSA6IDApOworCisgIHJldHVybiBk
ZWxheV87Cit9CisKK2Jvb2wgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDI6Okhhc0Nsb2NrZHJp
ZnQoKSBjb25zdCB7CisgIHJldHVybiBkZWxheV9lc3RpbWF0b3JfLkNsb2NrZHJpZnQoKSAhPSBD
bG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjprTm9uZTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisK
K1JlbmRlckRlbGF5Q29udHJvbGxlciogUmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUyKAor
ICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisgICAgaW50IHNhbXBsZV9y
YXRlX2h6KSB7CisgIHJldHVybiBuZXcgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDIoY29uZmln
LCBzYW1wbGVfcmF0ZV9oeik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3MuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzLmNjCmluZGV4IDA5
ZGIzMzk2ODM0MGUxNzU2NzA1Mzc2NDMzN2NiOWZlMjRjNWQ2NDYuLjU4MmUwMzM0ODI5N2VjMzk2
NTZmNzY5NTNhMmI0ZjM1ZTZhZTgwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRl
cl9kZWxheV9jb250cm9sbGVyX21ldHJpY3MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVy
X2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljcy5jYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUg
PGFsZ29yaXRobT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Fl
YzNfY29tbW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAg
LTQ1LDcgKzQ2LDggQEAgUmVuZGVyRGVsYXlDb250cm9sbGVyTWV0cmljczo6UmVuZGVyRGVsYXlD
b250cm9sbGVyTWV0cmljcygpID0gZGVmYXVsdDsKIHZvaWQgUmVuZGVyRGVsYXlDb250cm9sbGVy
TWV0cmljczo6VXBkYXRlKAogICAgIGFic2w6Om9wdGlvbmFsPHNpemVfdD4gZGVsYXlfc2FtcGxl
cywKICAgICBzaXplX3QgYnVmZmVyX2RlbGF5X2Jsb2NrcywKLSAgICBhYnNsOjpvcHRpb25hbDxp
bnQ+IHNrZXdfc2hpZnRfYmxvY2tzKSB7CisgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBza2V3X3No
aWZ0X2Jsb2NrcywKKyAgICBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsIGNsb2NrZHJpZnQpIHsK
ICAgKytjYWxsX2NvdW50ZXJfOwogCiAgIGlmICghaW5pdGlhbF91cGRhdGUpIHsKQEAgLTExNCw2
ICsxMTYsMTAgQEAgdm9pZCBSZW5kZXJEZWxheUNvbnRyb2xsZXJNZXRyaWNzOjpVcGRhdGUoCiAg
ICAgICAgIHN0YXRpY19jYXN0PGludD4oZGVsYXlfY2hhbmdlcyksCiAgICAgICAgIHN0YXRpY19j
YXN0PGludD4oRGVsYXlDaGFuZ2VzQ2F0ZWdvcnk6OmtOdW1DYXRlZ29yaWVzKSk7CiAKKyAgICBS
VENfSElTVE9HUkFNX0VOVU1FUkFUSU9OKAorICAgICAgICAiV2ViUlRDLkF1ZGlvLkVjaG9DYW5j
ZWxsZXIuQ2xvY2tkcmlmdCIsIHN0YXRpY19jYXN0PGludD4oY2xvY2tkcmlmdCksCisgICAgICAg
IHN0YXRpY19jYXN0PGludD4oQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6a051bUNhdGVnb3Jp
ZXMpKTsKKwogICAgIG1ldHJpY3NfcmVwb3J0ZWRfID0gdHJ1ZTsKICAgICBjYWxsX2NvdW50ZXJf
ID0gMDsKICAgICBSZXNldE1ldHJpY3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jl
bmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9k
ZWxheV9jb250cm9sbGVyX21ldHJpY3MuaAppbmRleCAxY2ZlODk5YjQ4ODVjYjMwNGIyN2FmZjU5
NzFlY2E5NjI3MDU3ZTJmLi4yMmNjMjAyZTczYTUyZDMxNmIxMjhlYTQ4MmJkNmRkZGMzZmIwMDY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRy
aWNzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmlj
cy5oCkBAIC0xMSw3ICsxMSwxMCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdf
QUVDM19SRU5ERVJfREVMQVlfQ09OVFJPTExFUl9NRVRSSUNTX0hfCiAjZGVmaW5lIE1PRFVMRVNf
QVVESU9fUFJPQ0VTU0lOR19BRUMzX1JFTkRFUl9ERUxBWV9DT05UUk9MTEVSX01FVFJJQ1NfSF8K
IAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0
ZWN0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpAQCAtMjQsNyArMjcsOCBAQCBjbGFzcyBSZW5kZXJEZWxheUNvbnRyb2xs
ZXJNZXRyaWNzIHsKICAgLy8gVXBkYXRlcyB0aGUgbWV0cmljIHdpdGggbmV3IGRhdGEuCiAgIHZv
aWQgVXBkYXRlKGFic2w6Om9wdGlvbmFsPHNpemVfdD4gZGVsYXlfc2FtcGxlcywKICAgICAgICAg
ICAgICAgc2l6ZV90IGJ1ZmZlcl9kZWxheV9ibG9ja3MsCi0gICAgICAgICAgICAgIGFic2w6Om9w
dGlvbmFsPGludD4gc2tld19zaGlmdF9ibG9ja3MpOworICAgICAgICAgICAgICBhYnNsOjpvcHRp
b25hbDxpbnQ+IHNrZXdfc2hpZnRfYmxvY2tzLAorICAgICAgICAgICAgICBDbG9ja2RyaWZ0RGV0
ZWN0b3I6OkxldmVsIGNsb2NrZHJpZnQpOwogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWV0
cmljcyBoYXZlIGp1c3QgYmVlbiByZXBvcnRlZCwgb3RoZXJ3aXNlIGZhbHNlLgogICBib29sIE1l
dHJpY3NSZXBvcnRlZCgpIHsgcmV0dXJuIG1ldHJpY3NfcmVwb3J0ZWRfOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljc191bml0
dGVzdC5jYwppbmRleCBlODY3ZGU0ZGY0MjgyODBkZGM2YzFkNGZlZTQ5MDQwYjEzMDAxZDA4Li4y
MTZiMGUyMjBkNGIyNjU3NzdiZDM0YmNhOTIwZmQ5NTZiY2JiM2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3NfdW5pdHRl
c3QuY2MKQEAgLTIyLDEwICsyMiwxMiBAQCBURVNUKFJlbmRlckRlbGF5Q29udHJvbGxlck1ldHJp
Y3MsIE5vcm1hbFVzYWdlKSB7CiAKICAgZm9yIChpbnQgaiA9IDA7IGogPCAzOyArK2opIHsKICAg
ICBmb3IgKGludCBrID0gMDsgayA8IGtNZXRyaWNzUmVwb3J0aW5nSW50ZXJ2YWxCbG9ja3MgLSAx
OyArK2spIHsKLSAgICAgIG1ldHJpY3MuVXBkYXRlKGFic2w6Om51bGxvcHQsIDAsIGFic2w6Om51
bGxvcHQpOworICAgICAgbWV0cmljcy5VcGRhdGUoYWJzbDo6bnVsbG9wdCwgMCwgYWJzbDo6bnVs
bG9wdCwKKyAgICAgICAgICAgICAgICAgICAgIENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtO
b25lKTsKICAgICAgIEVYUEVDVF9GQUxTRShtZXRyaWNzLk1ldHJpY3NSZXBvcnRlZCgpKTsKICAg
ICB9Ci0gICAgbWV0cmljcy5VcGRhdGUoYWJzbDo6bnVsbG9wdCwgMCwgYWJzbDo6bnVsbG9wdCk7
CisgICAgbWV0cmljcy5VcGRhdGUoYWJzbDo6bnVsbG9wdCwgMCwgYWJzbDo6bnVsbG9wdCwKKyAg
ICAgICAgICAgICAgICAgICBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjprTm9uZSk7CiAgICAg
RVhQRUNUX1RSVUUobWV0cmljcy5NZXRyaWNzUmVwb3J0ZWQoKSk7CiAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKaW5kZXgg
OTNjNjQ5OThlOWJkNDA4MzM1ODRkOTM3ZjI2ZGIxMTJlZmJhZTUwNy4uZTlmMDJkMzI0YzEzZDM0
ZWQ0ZGMyYTQ0NGUwOGFlMzNiYzcwZDY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVu
ZGVyX2RlbGF5X2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVu
ZGVyX2RlbGF5X2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKQEAgLTU3LDEwICs1Nyw5IEBAIFRFU1Qo
UmVuZGVyRGVsYXlDb250cm9sbGVyLCBOb1JlbmRlclNpZ25hbCkgewogICAgICAgZm9yIChhdXRv
IHJhdGUgOiB7ODAwMCwgMTYwMDAsIDMyMDAwLCA0ODAwMH0pIHsKICAgICAgICAgU0NPUEVEX1RS
QUNFKFByb2R1Y2VEZWJ1Z1RleHQocmF0ZSkpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyRGVsYXlCdWZmZXI+IGRlbGF5X2J1ZmZlcigKLSAgICAgICAgICAgIFJlbmRlckRlbGF5QnVm
ZmVyOjpDcmVhdGUoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAgICAgICAgICAg
IFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUp
KSk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5
X2NvbnRyb2xsZXIoCi0gICAgICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZSgK
LSAgICAgICAgICAgICAgICBjb25maWcsIFJlbmRlckRlbGF5QnVmZmVyOjpEZWxheUVzdGltYXRv
ck9mZnNldChjb25maWcpLCByYXRlKSk7CisgICAgICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xs
ZXI6OkNyZWF0ZTIoY29uZmlnLCByYXRlKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBr
IDwgMTAwOyArK2spIHsKICAgICAgICAgICBhdXRvIGRlbGF5ID0gZGVsYXlfY29udHJvbGxlci0+
R2V0RGVsYXkoCiAgICAgICAgICAgICAgIGRlbGF5X2J1ZmZlci0+R2V0RG93bnNhbXBsZWRSZW5k
ZXJCdWZmZXIoKSwgZGVsYXlfYnVmZmVyLT5EZWxheSgpLApAQCAtODcsMTEgKzg2LDkgQEAgVEVT
VChSZW5kZXJEZWxheUNvbnRyb2xsZXIsIEJhc2ljQXBpQ2FsbHMpIHsKICAgICAgICAgc3RkOjp2
ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiByZW5kZXJfYmxvY2soCiAgICAgICAgICAgICBOdW1C
YW5kc0ZvclJhdGUocmF0ZSksIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXplLCAwLmYpKTsK
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlf
YnVmZmVyKAotICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIE51
bUJhbmRzRm9yUmF0ZShyYXRlKSkpOworICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNy
ZWF0ZTIoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlcigKLSAgICAgICAg
ICAgIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlKAotICAgICAgICAgICAgICAgIEVjaG9D
YW5jZWxsZXIzQ29uZmlnKCksCi0gICAgICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkRl
bGF5RXN0aW1hdG9yT2Zmc2V0KGNvbmZpZyksIHJhdGUpKTsKKyAgICAgICAgICAgIFJlbmRlckRl
bGF5Q29udHJvbGxlcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCByYXRlKSk7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgMTA7ICsraykgewogICAgICAgICAgIHJlbmRl
cl9kZWxheV9idWZmZXItPkluc2VydChyZW5kZXJfYmxvY2spOwogICAgICAgICAgIHJlbmRlcl9k
ZWxheV9idWZmZXItPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpOwpAQCAtMTI4LDExICsxMjUs
OSBAQCBURVNUKFJlbmRlckRlbGF5Q29udHJvbGxlciwgQWxpZ25tZW50KSB7CiAgICAgICAgICAg
YWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gZGVsYXlfYmxvY2tzOwogICAgICAgICAgIFND
T1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUsIGRlbGF5X3NhbXBsZXMpKTsKICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZm
ZXIoCi0gICAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCBOdW1C
YW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAgICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNy
ZWF0ZTIoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPiBkZWxheV9jb250cm9sbGVyKAotICAgICAg
ICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZSgKLSAgICAgICAgICAgICAgICAg
IGNvbmZpZywgUmVuZGVyRGVsYXlCdWZmZXI6OkRlbGF5RXN0aW1hdG9yT2Zmc2V0KGNvbmZpZyks
Ci0gICAgICAgICAgICAgICAgICByYXRlKSk7CisgICAgICAgICAgICAgIFJlbmRlckRlbGF5Q29u
dHJvbGxlcjo6Q3JlYXRlMihjb25maWcsIHJhdGUpKTsKICAgICAgICAgICBEZWxheUJ1ZmZlcjxm
bG9hdD4gc2lnbmFsX2RlbGF5X2J1ZmZlcihkZWxheV9zYW1wbGVzKTsKICAgICAgICAgICBmb3Ig
KHNpemVfdCBrID0gMDsgayA8ICg0MDAgKyBkZWxheV9zYW1wbGVzIC8ga0Jsb2NrU2l6ZSk7ICsr
aykgewogICAgICAgICAgICAgUmFuZG9taXplU2FtcGxlVmVjdG9yKCZyYW5kb21fZ2VuZXJhdG9y
LCByZW5kZXJfYmxvY2tbMF0pOwpAQCAtMTc5LDExICsxNzQsOSBAQCBURVNUKFJlbmRlckRlbGF5
Q29udHJvbGxlciwgTm9uQ2F1c2FsQWxpZ25tZW50KSB7CiAgICAgICAgICAgYWJzbDo6b3B0aW9u
YWw8RGVsYXlFc3RpbWF0ZT4gZGVsYXlfYmxvY2tzOwogICAgICAgICAgIFNDT1BFRF9UUkFDRShQ
cm9kdWNlRGVidWdUZXh0KHJhdGUsIC1kZWxheV9zYW1wbGVzKSk7CiAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAg
ICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRl
KHJhdGUpKSk7CisgICAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZp
ZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlcigKLSAgICAgICAgICAgICAgUmVu
ZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUoCi0gICAgICAgICAgICAgICAgICBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZygpLAotICAgICAgICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkRlbGF5
RXN0aW1hdG9yT2Zmc2V0KGNvbmZpZyksIHJhdGUpKTsKKyAgICAgICAgICAgICAgUmVuZGVyRGVs
YXlDb250cm9sbGVyOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHJhdGUpKTsKICAg
ICAgICAgICBEZWxheUJ1ZmZlcjxmbG9hdD4gc2lnbmFsX2RlbGF5X2J1ZmZlcigtZGVsYXlfc2Ft
cGxlcyk7CiAgICAgICAgICAgZm9yIChpbnQgayA9IDA7CiAgICAgICAgICAgICAgICBrIDwgKDQw
MCAtIGRlbGF5X3NhbXBsZXMgLyBzdGF0aWNfY2FzdDxpbnQ+KGtCbG9ja1NpemUpKTsgKytrKSB7
CkBAIC0yMjMsMTEgKzIxNiw5IEBAIFRFU1QoUmVuZGVyRGVsYXlDb250cm9sbGVyLCBBbGlnbm1l
bnRXaXRoSml0dGVyKSB7CiAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4g
ZGVsYXlfYmxvY2tzOwogICAgICAgICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJh
dGUsIGRlbGF5X3NhbXBsZXMpKTsKICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVs
YXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICAgICAgICAgIFJlbmRlckRlbGF5
QnVmZmVyOjpDcmVhdGUoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAgICAgICAg
ICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUo
cmF0ZSkpKTsKICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9sbGVy
PiBkZWxheV9jb250cm9sbGVyKAotICAgICAgICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6
OkNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgIGNvbmZpZywgUmVuZGVyRGVsYXlCdWZmZXI6OkRl
bGF5RXN0aW1hdG9yT2Zmc2V0KGNvbmZpZyksCi0gICAgICAgICAgICAgICAgICByYXRlKSk7Cisg
ICAgICAgICAgICAgIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlMihjb25maWcsIHJhdGUp
KTsKICAgICAgICAgICBEZWxheUJ1ZmZlcjxmbG9hdD4gc2lnbmFsX2RlbGF5X2J1ZmZlcihkZWxh
eV9zYW1wbGVzKTsKICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICgxMDAwICsgZGVs
YXlfc2FtcGxlcyAvIGtCbG9ja1NpemUpIC8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uZmlnLmRlbGF5LmFwaV9jYWxsX2ppdHRlcl9ibG9ja3MgKwpAQCAtMjgw
LDExICsyNzEsMTAgQEAgVEVTVChSZW5kZXJEZWxheUNvbnRyb2xsZXIsIEluaXRpYWxIZWFkcm9v
bSkgewogICAgICAgZm9yIChhdXRvIHJhdGUgOiB7ODAwMCwgMTYwMDAsIDMyMDAwLCA0ODAwMH0p
IHsKICAgICAgICAgU0NPUEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQocmF0ZSkpOwogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIo
Ci0gICAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFuZHNG
b3JSYXRlKHJhdGUpKSk7CisgICAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihj
b25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5X2NvbnRyb2xsZXIoCi0gICAgICAgICAgICBS
ZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZSgKLSAgICAgICAgICAgICAgICBjb25maWcsIFJl
bmRlckRlbGF5QnVmZmVyOjpEZWxheUVzdGltYXRvck9mZnNldChjb25maWcpLCByYXRlKSk7Cisg
ICAgICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZTIoY29uZmlnLCByYXRlKSk7
CiAgICAgICB9CiAgICAgfQogICB9CkBAIC0zMDAsMTIgKzI5MCwxMCBAQCBURVNUKFJlbmRlckRl
bGF5Q29udHJvbGxlciwgV3JvbmdDYXB0dXJlU2l6ZSkgewogICBmb3IgKGF1dG8gcmF0ZSA6IHs4
MDAwLCAxNjAwMCwgMzIwMDAsIDQ4MDAwfSkgewogICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVi
dWdUZXh0KHJhdGUpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJl
bmRlcl9kZWxheV9idWZmZXIoCi0gICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29u
ZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6
OkNyZWF0ZTIoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKICAgICBFWFBFQ1RfREVB
VEgoCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+KAotICAg
ICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUoCi0gICAgICAgICAgICAgICAg
RWNob0NhbmNlbGxlcjNDb25maWcoKSwKLSAgICAgICAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZl
cjo6RGVsYXlFc3RpbWF0b3JPZmZzZXQoY29uZmlnKSwgcmF0ZSkpCisgICAgICAgICAgICBSZW5k
ZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgcmF0ZSkp
CiAgICAgICAgICAgICAtPkdldERlbGF5KHJlbmRlcl9kZWxheV9idWZmZXItPkdldERvd25zYW1w
bGVkUmVuZGVyQnVmZmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9kZWxheV9i
dWZmZXItPkRlbGF5KCksIGVjaG9fcmVtb3Zlcl9kZWxheSwgYmxvY2spLAogICAgICAgICAiIik7
CkBAIC0zMjAsMTEgKzMwOCwxMCBAQCBURVNUKFJlbmRlckRlbGF5Q29udHJvbGxlciwgRElTQUJM
RURfV3JvbmdTYW1wbGVSYXRlKSB7CiAgICAgU0NPUEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQo
cmF0ZSkpOwogICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZzsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICAgIFJl
bmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsK
KyAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCBOdW1CYW5kc0ZvclJh
dGUocmF0ZSkpKTsKICAgICBFWFBFQ1RfREVBVEgoCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJEZWxheUNvbnRyb2xsZXI+KFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlKAotICAg
ICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWcoKSwKLSAgICAgICAgICAgIFJlbmRlckRlbGF5
QnVmZmVyOjpEZWxheUVzdGltYXRvck9mZnNldChjb25maWcpLCByYXRlKSksCisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+KAorICAgICAgICAgICAgUmVuZGVy
RGVsYXlDb250cm9sbGVyOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHJhdGUpKSwK
ICAgICAgICAgIiIpOwogICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJf
cmV2ZXJiX21vZGVsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3JldmVyYl9tb2RlbC5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YWQ1NGMwY2MzNDVmNjVkNTZkZjJlN2YwNGZjMzk5ZGZjNTZjMzJmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3JldmVyYl9tb2RlbC5jYwpAQCAt
MCwwICsxLDQ0IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9yZXZlcmJfbW9kZWwuaCIKKworI2luY2x1ZGUg
PGFsZ29yaXRobT4KKworI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitSZW5kZXJSZXZlcmJNb2Rl
bDo6UmVuZGVyUmV2ZXJiTW9kZWwoKSB7CisgIFJlc2V0KCk7Cit9CisKK1JlbmRlclJldmVyYk1v
ZGVsOjp+UmVuZGVyUmV2ZXJiTW9kZWwoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVuZGVyUmV2ZXJi
TW9kZWw6OlJlc2V0KCkgeworICByZW5kZXJfcmV2ZXJiXy5SZXNldCgpOworfQorCit2b2lkIFJl
bmRlclJldmVyYk1vZGVsOjpBcHBseShjb25zdCBWZWN0b3JCdWZmZXImIHNwZWN0cnVtX2J1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWxheV9ibG9ja3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCByZXZlcmJfZGVjYXksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5VmlldzxmbG9hdD4gcmV2ZXJiX3Bvd2VyX3Nw
ZWN0cnVtKSB7CisgIGludCBpZHhfYXRfZGVsYXkgPQorICAgICAgc3BlY3RydW1fYnVmZmVyLk9m
ZnNldEluZGV4KHNwZWN0cnVtX2J1ZmZlci5yZWFkLCBkZWxheV9ibG9ja3MpOworICBpbnQgaWR4
X3Bhc3QgPSBzcGVjdHJ1bV9idWZmZXIuSW5jSW5kZXgoaWR4X2F0X2RlbGF5KTsKKyAgY29uc3Qg
YXV0byYgWDIgPSBzcGVjdHJ1bV9idWZmZXIuYnVmZmVyW2lkeF9hdF9kZWxheV07CisgIFJUQ19E
Q0hFQ0tfRVEoWDIuc2l6ZSgpLCByZXZlcmJfcG93ZXJfc3BlY3RydW0uc2l6ZSgpKTsKKyAgc3Rk
Ojpjb3B5KFgyLmJlZ2luKCksIFgyLmVuZCgpLCByZXZlcmJfcG93ZXJfc3BlY3RydW0uYmVnaW4o
KSk7CisgIHJlbmRlcl9yZXZlcmJfLkFkZFJldmVyYk5vRnJlcVNoYXBpbmcoc3BlY3RydW1fYnVm
ZmVyLmJ1ZmZlcltpZHhfcGFzdF0sIDEuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV2ZXJiX2RlY2F5LCByZXZlcmJfcG93ZXJfc3BlY3RydW0pOworfQorCit9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJf
cmV2ZXJiX21vZGVsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfcmV2ZXJiX21vZGVsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDQwNGE2OWVjZDJmMjBjMDc1OTc5YTg5ZTU0Y2U3YzMxNTQ0OTEyNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9yZXZlcmJfbW9kZWwuaApAQCAtMCww
ICsxLDQ5IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfQUVDM19SRU5ERVJfUkVWRVJCX01PREVMX0hfCisjZGVmaW5lIE1PRFVMRVNf
QVVESU9fUFJPQ0VTU0lOR19BRUMzX1JFTkRFUl9SRVZFUkJfTU9ERUxfSF8KKworI2luY2x1ZGUg
ImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmV2ZXJiX21vZGVsLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvdmVjdG9yX2J1ZmZlci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gVGhlIFJlbmRl
clJldmVyYk1vZGVsIGNsYXNzIGFwcGxpZXMgYW4gZXhwb25lbnRpYWwgcmV2ZXJiZXJhbnQgbW9k
ZWwgb3ZlciB0aGUKKy8vIHJlbmRlciBzcGVjdHJ1bS4KK2NsYXNzIFJlbmRlclJldmVyYk1vZGVs
IHsKKyBwdWJsaWM6CisgIFJlbmRlclJldmVyYk1vZGVsKCk7CisgIH5SZW5kZXJSZXZlcmJNb2Rl
bCgpOworCisgIC8vIFJlc2V0cyB0aGUgc3RhdGUuCisgIHZvaWQgUmVzZXQoKTsKKworICAvLyBB
cHBsaWVzIHRoZSByZXZlcmJlcmF0aW9uIG1vZGVsIG92ZXIgdGhlIHJlbmRlciBzcGVjdHJ1bS4g
SXQgYWxzbyByZXR1cm5zCisgIC8vIHRoZSByZXZlcmJlcmF0aW9uIHJlbmRlciBwb3dlciBzcGVj
dHJ1bSBpbiB0aGUgYXJyYXkgcmV2ZXJiX3Bvd2VyX3NwZWN0cnVtLgorICB2b2lkIEFwcGx5KGNv
bnN0IFZlY3RvckJ1ZmZlciYgc3BlY3RydW1fYnVmZmVyLAorICAgICAgICAgICAgIGludCBkZWxh
eV9ibG9ja3MsCisgICAgICAgICAgICAgZmxvYXQgcmV2ZXJiX2RlY2F5LAorICAgICAgICAgICAg
IHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PiByZXZlcmJfcG93ZXJfc3BlY3RydW0pOworCisgIC8vIEdl
dHMgdGhlIHJldmVyYmVyYXRpb24gc3BlY3RydW0gdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHJlbmRl
ciBzcGVjdHJ1bSBmb3IKKyAgLy8gY29tcHV0aW5nIHRoZSByZXZlcmJlcmF0aW9uIHJlbmRlciBz
cGVjdHJ1bS4KKyAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEdldFJldmVyYkNvbnRyaWJ1
dGlvblBvd2VyU3BlY3RydW0oKSBjb25zdCB7CisgICAgcmV0dXJuIHJlbmRlcl9yZXZlcmJfLkdl
dFBvd2VyU3BlY3RydW0oKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgUmV2ZXJiTW9kZWwgcmVuZGVy
X3JldmVyYl87Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjLgorCisjZW5kaWYgIC8vIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1JFTkRFUl9SRVZFUkJfTU9ERUxfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5emVyLmNjCmluZGV4IDUwYzM0Y2U0M2Y2MWE1MDJl
ZGYyODEzY2MwN2IwNDQwNjhmNDE0MWMuLjMzYjA0YmY3MGM5ZmY4MGQzZTkwMzkxMWU3OTMxMjFm
M2M5OWQ1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplci5jYwpAQCAt
MTIsNyArMTIsMTAgQEAKIAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+
CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkv
YXJyYXlfdmlldy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6
ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuaAppbmRleCBjNjAz
YzkyMTQ0N2I5MDVjZDBmNDJlNTEwMTM4OTA1NjY4M2ZiZDZlLi44YTQ0MjMyY2Y5YTBkMzFjN2Zk
NWEyZDYwNTZiNDdlMDNhZGUzODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJf
c2lnbmFsX2FuYWx5emVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFs
eXplci5oCkBAIC0xMSwxMyArMTEsMTUgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX0FFQzNfUkVOREVSX1NJR05BTF9BTkFMWVpFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfQUVDM19SRU5ERVJfU0lHTkFMX0FOQUxZWkVSX0hfCiAKKyNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUg
PGNzdGRkZWY+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAi
YXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9h
bmFseXplcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6
ZXJfdW5pdHRlc3QuY2MKaW5kZXggZjliMTk1NTgzODc1ZjAyOTY4OTAwMzE0YTMyNmZiNjYyZDI4
ZTlhYy4uYTk5M2Y4ZjhhY2Y4OWNkOWIwMjM1YzM4MDQ0NTcxZmMzMjU5OTg3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplcl91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5emVyX3VuaXR0ZXN0LmNjCkBAIC01
OSw3ICs1OSw3IEBAIFRFU1QoUmVuZGVyU2lnbmFsQW5hbHl6ZXIsIE5vRmFsc2VEZXRlY3Rpb25P
Zk5hcnJvd0JhbmRzKSB7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4geCgzLCBz
dGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMC5mKSk7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQs
IGtCbG9ja1NpemU+IHhfb2xkOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+
IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKEVj
aG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVh
dGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKICAgc3RkOjphcnJheTxmbG9hdCwga0Zm
dExlbmd0aEJ5MlBsdXMxPiBtYXNrOwogICB4X29sZC5maWxsKDAuZik7CiAKQEAgLTkzLDcgKzkz
LDcgQEAgVEVTVChSZW5kZXJTaWduYWxBbmFseXplciwgTmFycm93QmFuZERldGVjdGlvbikgewog
ICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CiAgIGNvbmZpZy5kZWxheS5taW5fZWNob19w
YXRoX2RlbGF5X2Jsb2NrcyA9IDA7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZl
cj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUo
Y29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMp
KTsKIAogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IG1hc2s7CiAgIHhf
b2xkLmZpbGwoMC5mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9f
ZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNob19lc3RpbWF0b3IuY2MK
aW5kZXggMmUzYWQ5ZmVhNzI3ZTI5ZWE0Y2ZjMTcwNmYyOTNkZmY2NzhkODA5YS4uNjI3ZGQ5MDBj
NGU4OTUwZTBkYzY4N2JlZDU0ZDNjNWQ2ZDJkYmI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmVzaWR1YWxfZWNob19lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1
YWxfZWNob19lc3RpbWF0b3IuY2MKQEAgLTExLDkgKzExLDExIEBACiAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hvX2VzdGltYXRvci5oIgogCi0j
aW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWwuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWxfZmFsbGJh
Y2suaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKQEAgLTEwNSw5ICsxMDcsMTUgQEAg
dm9pZCBSZXNpZHVhbEVjaG9Fc3RpbWF0b3I6OkVzdGltYXRlKAogCiAgIC8vIEVzdGltYXRlIHRo
ZSByZXNpZHVhbCBlY2hvIHBvd2VyLgogICBpZiAoYWVjX3N0YXRlLlVzYWJsZUxpbmVhckVzdGlt
YXRlKCkpIHsKLSAgICBSVENfRENIRUNLKCFhZWNfc3RhdGUuU2F0dXJhdGVkRWNobygpKTsKICAg
ICBMaW5lYXJFc3RpbWF0ZShTMl9saW5lYXIsIGFlY19zdGF0ZS5FcmxlKCksIGFlY19zdGF0ZS5F
cmxlVW5jZXJ0YWludHkoKSwKICAgICAgICAgICAgICAgICAgICBSMik7CisKKyAgICAvLyBXaGVu
IHRoZXJlIGlzIHNhdHVyYXRlZCBlY2hvLCBhc3N1bWUgdGhlIHNhbWUgc3BlY3RyYWwgY29udGVu
dCBhcyBpcworICAgIC8vIHByZXNlbnQgaW4gdGhlIG1pY3JvcG9uZSBzaWduYWwuCisgICAgaWYg
KGFlY19zdGF0ZS5TYXR1cmF0ZWRFY2hvKCkpIHsKKyAgICAgIHN0ZDo6Y29weShZMi5iZWdpbigp
LCBZMi5lbmQoKSwgUjItPmJlZ2luKCkpOworICAgIH0KKwogICAgIC8vIEFkZHMgdGhlIGVzdGlt
YXRlZCB1bm1vZGVsbGVkIGVjaG8gcG93ZXIgdG8gdGhlIHJlc2lkdWFsIGVjaG8gcG93ZXIKICAg
ICAvLyBlc3RpbWF0ZS4KICAgICBpZiAoZWNob19yZXZlcmJfKSB7CkBAIC0xNTEsMTAgKzE1OSwx
MCBAQCB2b2lkIFJlc2lkdWFsRWNob0VzdGltYXRvcjo6RXN0aW1hdGUoCiAgICAgfQogICAgIE5v
bkxpbmVhckVzdGltYXRlKGVjaG9fcGF0aF9nYWluLCBYMiwgWTIsIFIyKTsKIAotICAgIC8vIElm
IHRoZSBlY2hvIGlzIHNhdHVyYXRlZCwgZXN0aW1hdGUgdGhlIGVjaG8gcG93ZXIgYXMgdGhlIG1h
eGltdW0gZWNobwotICAgIC8vIHBvd2VyIHdpdGggYSBsZWFrYWdlIGZhY3Rvci4KKyAgICAvLyBX
aGVuIHRoZXJlIGlzIHNhdHVyYXRlZCBlY2hvLCBhc3N1bWUgdGhlIHNhbWUgc3BlY3RyYWwgY29u
dGVudCBhcyBpcworICAgIC8vIHByZXNlbnQgaW4gdGhlIG1pY3JvcG9uZSBzaWduYWwuCiAgICAg
aWYgKGFlY19zdGF0ZS5TYXR1cmF0ZWRFY2hvKCkpIHsKLSAgICAgIFIyLT5maWxsKCgqc3RkOjpt
YXhfZWxlbWVudChSMi0+YmVnaW4oKSwgUjItPmVuZCgpKSkgKiAxMDAuZik7CisgICAgICBzdGQ6
OmNvcHkoWTIuYmVnaW4oKSwgWTIuZW5kKCksIFIyLT5iZWdpbigpKTsKICAgICB9CiAKICAgICBp
ZiAoIShhZWNfc3RhdGUuVHJhbnNwYXJlbnRNb2RlKCkgJiYgc29mdF90cmFuc3BhcmVudF9tb2Rl
XykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9fZXN0aW1hdG9y
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hvX2VzdGltYXRvci5oCmluZGV4IDZkY2Yy
NGYwOTA3OTBiNzI0ZThlMmU0NzQyY2YzM2NhMTQyMTNjYWUuLjUyODg1YTU4ZDg1YTMzODI0MjJj
ZGY5Y2UyMmVmMjAzYmExMjlmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lkdWFs
X2VjaG9fZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNob19lc3Rp
bWF0b3IuaApAQCAtMTEsMTggKzExLDE4IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BRUMzX1JFU0lEVUFMX0VDSE9fRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BRUMzX1JFU0lEVUFMX0VDSE9fRVNUSU1BVE9SX0hfCiAKLSNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1
ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNf
Y29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19j
b21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3Rh
dGUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVm
ZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21v
ZGVsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21v
ZGVsX2ZhbGxiYWNrLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
dmVjdG9yX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0z
OSw3ICszOSw3IEBAIGNsYXNzIFJlc2lkdWFsRWNob0VzdGltYXRvciB7CiAgICAgICAgICAgICAg
ICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogUjIpOwogCiAgIC8vIFJl
dHVybnMgdGhlIHJldmVyYmVyYW50IHBvd2VyIHNwZWN0cnVtIGNvbnRyaWJ1dGlvbnMgdG8gdGhl
IGVjaG8gcmVzaWR1YWwuCi0gIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4mIEdldFJldmVyYlBvd2VyU3BlY3RydW0oKSBjb25zdCB7CisgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IGZsb2F0PiBHZXRSZXZlcmJQb3dlclNwZWN0cnVtKCkgY29uc3QgewogICAgIGlmIChl
Y2hvX3JldmVyYl8pIHsKICAgICAgIHJldHVybiBlY2hvX3JldmVyYl8tPkdldFBvd2VyU3BlY3Ry
dW0oKTsKICAgICB9IGVsc2UgewpAQCAtNjYsNyArNjYsNiBAQCBjbGFzcyBSZXNpZHVhbEVjaG9F
c3RpbWF0b3IgewogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YXJyYXk8Zmxv
YXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIFkyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4qIFIyKTsKIAotCiAgIC8vIEVzdGlt
YXRlcyB0aGUgZWNobyBnZW5lcmF0aW5nIHNpZ25hbCBwb3dlciBhcyBnYXRlZCBtYXhpbWFsIHBv
d2VyIG92ZXIgYQogICAvLyB0aW1lIHdpbmRvdy4KICAgdm9pZCBFY2hvR2VuZXJhdGluZ1Bvd2Vy
KGNvbnN0IFZlY3RvckJ1ZmZlciYgc3BlY3RydW1fYnVmZmVyLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvcmVzaWR1YWxfZWNob19lc3RpbWF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9yZXNpZHVhbF9lY2hvX2VzdGltYXRvcl91bml0dGVzdC5jYwppbmRleCA4MzJkOGNhMWQz
M2I2NTc2NDg5YWUyMWI4MTAyNWE5YjY2M2MzMjA3Li4yZTczYTdlNjExNjEwMWZjYzZiY2NhMTdm
MmM3MDgxYTUxMWM5YWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hv
X2VzdGltYXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hv
X2VzdGltYXRvcl91bml0dGVzdC5jYwpAQCAtMjcsNyArMjcsNyBAQCBURVNUKFJlc2lkdWFsRWNo
b0VzdGltYXRvciwgTnVsbFJlc2lkdWFsRWNob1Bvd2VyT3V0cHV0KSB7CiAgIEVjaG9DYW5jZWxs
ZXIzQ29uZmlnIGNvbmZpZzsKICAgQWVjU3RhdGUgYWVjX3N0YXRlKGNvbmZpZyk7CiAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAg
IFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxh
eUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKICAgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxm
bG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPj4gSDI7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4gUzJfbGluZWFyOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3Ro
QnkyUGx1czE+IFkyOwpAQCAtNDgsNyArNDgsNyBAQCBURVNUKFJlc2lkdWFsRWNob0VzdGltYXRv
ciwgRElTQUJMRURfQmFzaWNUZXN0KSB7CiAgIFJlc2lkdWFsRWNob0VzdGltYXRvciBlc3RpbWF0
b3IoY29uZmlnKTsKICAgQWVjU3RhdGUgYWVjX3N0YXRlKGNvbmZpZyk7CiAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRl
ckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZl
cjo6Q3JlYXRlMihjb25maWcsIDMpKTsKIAogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3Ro
QnkyUGx1czE+IEUyX21haW47CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVz
MT4gRTJfc2hhZG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2RlY2F5X2Vz
dGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9kZWNheV9lc3RpbWF0b3IuY2MKaW5k
ZXggZjgwYWZhMmRmY2JhMDk2M2ZlMTljMjA5ZDMyMDNkMTc3YzBjOGM1OS4uOTVmZDEzYWY1OTYy
NjlhZTE1MWFmZWFmODc0MTQ2YTE3M2MzYTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
cmV2ZXJiX2RlY2F5X2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVj
YXlfZXN0aW1hdG9yLmNjCkBAIC0xMCwxMSArMTAsMTMgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9kZWNheV9lc3RpbWF0b3IuaCIKIAorI2luY2x1
ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KICNp
bmNsdWRlIDxudW1lcmljPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRl
ICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxk
X3RyaWFsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVjYXlfZXN0aW1h
dG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVjYXlfZXN0aW1hdG9yLmgKaW5kZXggNjdh
ODRhYjhmY2JmNTMzZDljN2FmMGRhOGU5OTI4ODgzYTYwYTZkNi4uNGM4ZDBjNjQzNDYyZmVhZTc3
ZWRhOWE0NWU1ZTFhMTc1ZTA2MTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJi
X2RlY2F5X2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9kZWNheV9lc3Rp
bWF0b3IuaApAQCAtMTYsMTIgKzE2LDEyIEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlv
bmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW8v
ZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvYWVjM19jb21tb24uaCIgIC8vIGtNYXhBZGFwdGl2ZUZpbHRlci4uLgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgQXBtRGF0YUR1bXBlcjsKK3N0cnVjdCBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZzsKIAogLy8gQ2xhc3MgZm9yIGVzdGltYXRpbmcgdGhlIGRlY2F5IG9mIHRoZSBs
YXRlIHJldmVyYi4KIGNsYXNzIFJldmVyYkRlY2F5RXN0aW1hdG9yIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JldmVyYl9mcmVxdWVuY3lfcmVzcG9uc2UuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZXZlcmJfZnJlcXVlbmN5X3Jlc3BvbnNlLmNjCmluZGV4IDBkODI1MTVlYzRiMjU2ODhkNzM1
NGJlMTMyYTgyMjA4YTk2NWRjNmIuLmQyMTAzZDQ0MmU0YjQ1ZmY4NGUxNmE3NmQ2MDRjOGEwNDY0
OWI2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9mcmVxdWVuY3lfcmVzcG9u
c2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2ZyZXF1ZW5jeV9yZXNwb25zZS5jYwpA
QCAtMTAsMTQgKzEwLDEyIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9yZXZlcmJfZnJlcXVlbmN5X3Jlc3BvbnNlLmgiCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4K
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8Y21hdGg+
Ci0jaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPG51bWVyaWM+CiAKICNpbmNsdWRlICJhcGkv
YXJyYXlfdmlldy5oIgotI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmln
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24u
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBl
cnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2
ZXJiX2ZyZXF1ZW5jeV9yZXNwb25zZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2ZyZXF1ZW5j
eV9yZXNwb25zZS5oCmluZGV4IDIzNDg1ZTAwOWZiZTMwZWI2ZDMyNzM2MWJlNmExNDA3MzA4MWIw
MmMuLmViNjNiOGU1MmU4NTRiY2NhOWYxODRlZWZhNjUxODczOWNkOGI4YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JldmVyYl9mcmVxdWVuY3lfcmVzcG9uc2UuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9yZXZlcmJfZnJlcXVlbmN5X3Jlc3BvbnNlLmgKQEAgLTExLDEzICsxMSwxMiBAQAog
I2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRVZFUkJfRlJFUVVFTkNZX1JF
U1BPTlNFX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1JFVkVSQl9G
UkVRVUVOQ1lfUkVTUE9OU0VfSF8KIAotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxhcnJh
eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
CiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmV2ZXJiX21vZGVsLmNjCmluZGV4IDBjYTI0OGZjNzU0MzFlYTYzMzc3YzI0ZWQ2OTNj
NmJlYzZiOTA3ZTYuLmYwYTI0YzAyNDk4MjM0ODVkOTk3MzYxYjc1NjZkYjE5MjYzNjM0NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9yZXZlcmJfbW9kZWwuY2MKQEAgLTEwLDEzICsxMCwxMSBAQAogCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmgiCiAKLSNpbmNsdWRlIDxt
YXRoLmg+Ci0KKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5j
bHVkZSA8ZnVuY3Rpb25hbD4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmgKaW5kZXggZDMwODdhNzJkOTEwMjNhNTNk
N2NhNTllNmU1ZmQwNTQ5Mjk3MzhkNS4uNTZlMjI2NmU1NjllNzQ0N2ExZmIwZmMyZjYyNzk4MjBk
OTk3MDM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYg
TU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfUkVWRVJCX01PREVMX0hfCiAjZGVmaW5lIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1JFVkVSQl9NT0RFTF9IXwogCisjaW5jbHVkZSA8
YXJyYXk+CisKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAKQEAgLTUwLDkgKzUyLDcgQEAg
Y2xhc3MgUmV2ZXJiTW9kZWwgewogICAgICAgZmxvYXQgcmV2ZXJiX2RlY2F5KTsKIAogICAvLyBS
ZXR1cm5zIHRoZSBjdXJyZW50IHBvd2VyIHNwZWN0cnVtIHJldmVyYmVyYXRpb24gY29udHJpYnV0
aW9ucy4KLSAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgR2V0
UG93ZXJTcGVjdHJ1bSgpIGNvbnN0IHsKLSAgICByZXR1cm4gcmV2ZXJiXzsKLSAgfQorICBydGM6
OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gR2V0UG93ZXJTcGVjdHJ1bSgpIGNvbnN0IHsgcmV0dXJu
IHJldmVyYl87IH0KIAogIHByaXZhdGU6CiAgIC8vIFVwZGF0ZXMgdGhlIHJldmVyYmVyYXRpb24g
Y29udHJpYnV0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbF9l
c3RpbWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbF9lc3RpbWF0b3IuaAppbmRl
eCBiNmEzNTkxZTA5MTk3MGI5MGM4Y2UwMTJjMDFkN2NhMzQ5NjdjYTBjLi4xMTEyZjkzYTcxOTM1
NGJhYWZjM2M5ODg0NGNjMGI5NDFhNWFjZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9y
ZXZlcmJfbW9kZWxfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVs
X2VzdGltYXRvci5oCkBAIC0xMSwxMSArMTEsMTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19Q
Uk9DRVNTSU5HX0FFQzNfUkVWRVJCX01PREVMX0VTVElNQVRPUl9IXwogI2RlZmluZSBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUVDM19SRVZFUkJfTU9ERUxfRVNUSU1BVE9SX0hfCiAKKyNpbmNs
dWRlIDxhcnJheT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJhcGkvYXVk
aW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiICAvLyBrRmZ0TGVuZ3RoQnkyUGx1czEKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVjYXlfZXN0aW1hdG9y
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2ZyZXF1
ZW5jeV9yZXNwb25zZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9k
ZWxfZmFsbGJhY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbF9mYWxsYmFjay5oCmlu
ZGV4IDFiMmE5NTNlYTY0MTdjMmJlZTgwNmM2MzdkZTZmMTJlNDczYjU0NTEuLjFiZDJiNTk0ZTA2
YWFjMGJhNTA5ZDZlY2Y1MTkyNTAxYzhjNmYxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JldmVyYl9tb2RlbF9mYWxsYmFjay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2Rl
bF9mYWxsYmFjay5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJP
Q0VTU0lOR19BRUMzX1JFVkVSQl9NT0RFTF9GQUxMQkFDS19IXwogI2RlZmluZSBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfQUVDM19SRVZFUkJfTU9ERUxfRkFMTEJBQ0tfSF8KIAorI2luY2x1ZGUg
PHN0ZGRlZi5oPgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbi5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbi5oCmluZGV4IGE5MmJjM2I4YjdmYTAx
N2E4OGEzZWI5NGUwYjc1ZDJiMjZiYmI4ZTYuLjA1ZTYzMmZhNzhiODczMTNlMmVmNWQxZGI3ZmQ3
NzRjNWExNjcwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NoYWRvd19maWx0ZXJfdXBk
YXRlX2dhaW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaGFkb3dfZmlsdGVyX3VwZGF0ZV9nYWlu
LmgKQEAgLTExLDExICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdf
QUVDM19TSEFET1dfRklMVEVSX1VQREFURV9HQUlOX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9f
UFJPQ0VTU0lOR19BRUMzX1NIQURPV19GSUxURVJfVVBEQVRFX0dBSU5fSF8KIAorI2luY2x1ZGUg
PHN0ZGRlZi5oPgorI2luY2x1ZGUgPGFycmF5PgorCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9f
Y2FuY2VsbGVyM19jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9hZWMzX2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JlbmRlcl9idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9mZnRfZGF0YS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rv
cm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9zaGFkb3dfZmlsdGVyX3VwZGF0ZV9nYWluX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbl91bml0dGVzdC5jYwppbmRleCBjMDQwYmJmZjkx
ZjJiN2JiYmVmYTU4ZDU0MTJjZjMwMDAwNGZlMmRlLi4wMTdjNjc5NTg4YjFiNzI1ZGU3NjM4NjBl
NjA5Y2RiYWJkYzZjMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaGFkb3dfZmlsdGVy
X3VwZGF0ZV9nYWluX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NoYWRvd19maWx0
ZXJfdXBkYXRlX2dhaW5fdW5pdHRlc3QuY2MKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBSdW5GaWx0
ZXJVcGRhdGVUZXN0KGludCBudW1fYmxvY2tzX3RvX3Byb2Nlc3MsCiAgIGNvbmZpZy5kZWxheS5t
aW5fZWNob19wYXRoX2RlbGF5X2Jsb2NrcyA9IDA7CiAgIGNvbmZpZy5kZWxheS5kZWZhdWx0X2Rl
bGF5ID0gMTsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVs
YXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsK
KyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogCiAgIHN0ZDo6
YXJyYXk8ZmxvYXQsIGtCbG9ja1NpemU+IHhfb2xkOwogICB4X29sZC5maWxsKDAuZik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvci5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMmIzNmFiMjE1YTU0NzFjMWNiOTBkMzkwNTE1YWY3MzhkOTY1MGM5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRv
ci5jYwpAQCAtMCwwICsxLDM2OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0
aW1hdG9yLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KyNpbmNsdWRlIDxudW1lcmljPgorCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvdmVjdG9yX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVf
bWlubWF4LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1lc3BhY2UgeworCitjb25zdGV4
cHIgc3RkOjphcnJheTxzaXplX3QsIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OmtTdWJi
YW5kcyArIDE+CisgICAga0JhbmRCb3VuZGFyaWVzID0gezEsIDgsIDE2LCAyNCwgMzIsIDQ4LCBr
RmZ0TGVuZ3RoQnkyUGx1czF9OworCitzdGQ6OmFycmF5PHNpemVfdCwga0ZmdExlbmd0aEJ5MlBs
dXMxPiBGb3JtU3ViYmFuZE1hcCgpIHsKKyAgc3RkOjphcnJheTxzaXplX3QsIGtGZnRMZW5ndGhC
eTJQbHVzMT4gbWFwX2JhbmRfdG9fc3ViYmFuZDsKKyAgc2l6ZV90IHN1YmJhbmQgPSAxOworICBm
b3IgKHNpemVfdCBrID0gMDsgayA8IG1hcF9iYW5kX3RvX3N1YmJhbmQuc2l6ZSgpOyArK2spIHsK
KyAgICBSVENfRENIRUNLX0xUKHN1YmJhbmQsIGtCYW5kQm91bmRhcmllcy5zaXplKCkpOworICAg
IGlmIChrID49IGtCYW5kQm91bmRhcmllc1tzdWJiYW5kXSkgeworICAgICAgc3ViYmFuZCsrOwor
ICAgICAgUlRDX0RDSEVDS19MVChrLCBrQmFuZEJvdW5kYXJpZXNbc3ViYmFuZF0pOworICAgIH0K
KyAgICBtYXBfYmFuZF90b19zdWJiYW5kW2tdID0gc3ViYmFuZCAtIDE7CisgIH0KKyAgcmV0dXJu
IG1hcF9iYW5kX3RvX3N1YmJhbmQ7Cit9CisKKy8vIERlZmluZXMgdGhlIHNpemUgaW4gYmxvY2tz
IG9mIHRoZSBzZWN0aW9ucyB0aGF0IGFyZSB1c2VkIGZvciBkaXZpZGluZyB0aGUKKy8vIGxpbmVh
ciBmaWx0ZXIuIFRoZSBzZWN0aW9ucyBhcmUgc3BsaXQgaW4gYSBub24tbGluZWFyIG1hbm5lciBz
byB0aGF0IGxvd2VyCisvLyBzZWN0aW9ucyB0aGF0IHR5cGljYWxseSByZXByZXNlbnQgdGhlIGRp
cmVjdCBwYXRoIGhhdmUgYSBsYXJnZXIgcmVzb2x1dGlvbgorLy8gdGhhbiB0aGUgaGlnaGVyIHNl
Y3Rpb25zIHdoaWNoIHR5cGljYWxseSByZXByZXNlbnQgbW9yZSByZXZlcmJlcmFudCBhY291c3Rp
YworLy8gcGF0aHMuCitzdGQ6OnZlY3RvcjxzaXplX3Q+IERlZmluZUZpbHRlclNlY3Rpb25TaXpl
cyhzaXplX3QgZGVsYXlfaGVhZHJvb21fYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9ibG9ja3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX3NlY3Rpb25zKSB7CisgIHNp
emVfdCBmaWx0ZXJfbGVuZ3RoX2Jsb2NrcyA9IG51bV9ibG9ja3MgLSBkZWxheV9oZWFkcm9vbV9i
bG9ja3M7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gc2VjdGlvbl9zaXplcyhudW1fc2VjdGlvbnMp
OworICBzaXplX3QgcmVtYWluaW5nX2Jsb2NrcyA9IGZpbHRlcl9sZW5ndGhfYmxvY2tzOworICBz
aXplX3QgcmVtYWluaW5nX3NlY3Rpb25zID0gbnVtX3NlY3Rpb25zOworICBzaXplX3QgZXN0aW1h
dG9yX3NpemUgPSAyOworICBzaXplX3QgaWR4ID0gMDsKKyAgd2hpbGUgKHJlbWFpbmluZ19zZWN0
aW9ucyA+IDEgJiYKKyAgICAgICAgIHJlbWFpbmluZ19ibG9ja3MgPiBlc3RpbWF0b3Jfc2l6ZSAq
IHJlbWFpbmluZ19zZWN0aW9ucykgeworICAgIFJUQ19EQ0hFQ0tfTFQoaWR4LCBzZWN0aW9uX3Np
emVzLnNpemUoKSk7CisgICAgc2VjdGlvbl9zaXplc1tpZHhdID0gZXN0aW1hdG9yX3NpemU7Cisg
ICAgcmVtYWluaW5nX2Jsb2NrcyAtPSBlc3RpbWF0b3Jfc2l6ZTsKKyAgICByZW1haW5pbmdfc2Vj
dGlvbnMtLTsKKyAgICBlc3RpbWF0b3Jfc2l6ZSAqPSAyOworICAgIGlkeCsrOworICB9CisKKyAg
c2l6ZV90IGxhc3RfZ3JvdXBzX3NpemUgPSByZW1haW5pbmdfYmxvY2tzIC8gcmVtYWluaW5nX3Nl
Y3Rpb25zOworICBmb3IgKDsgaWR4IDwgbnVtX3NlY3Rpb25zOyBpZHgrKykgeworICAgIHNlY3Rp
b25fc2l6ZXNbaWR4XSA9IGxhc3RfZ3JvdXBzX3NpemU7CisgIH0KKyAgc2VjdGlvbl9zaXplc1tu
dW1fc2VjdGlvbnMgLSAxXSArPQorICAgICAgcmVtYWluaW5nX2Jsb2NrcyAtIGxhc3RfZ3JvdXBz
X3NpemUgKiByZW1haW5pbmdfc2VjdGlvbnM7CisgIHJldHVybiBzZWN0aW9uX3NpemVzOworfQor
CisvLyBGb3JtcyB0aGUgbGltaXRzIGluIGJsb2NrcyBmb3IgZWFjaCBmaWx0ZXIgc2VjdGlvbi4g
VGhvc2Ugc2VjdGlvbnMKKy8vIGFyZSB1c2VkIGZvciBhbmFseXppbmcgdGhlIGVjaG8gZXN0aW1h
dGVzIGFuZCBpbnZlc3RpZ2F0aW5nIHdoaWNoCisvLyBsaW5lYXIgZmlsdGVyIHNlY3Rpb25zIGNv
bnRyaWJ1dGUgbW9zdCB0byB0aGUgZWNobyBlc3RpbWF0ZSBlbmVyZ3kuCitzdGQ6OnZlY3Rvcjxz
aXplX3Q+IFNldFNlY3Rpb25zQm91bmRhcmllcyhzaXplX3QgZGVsYXlfaGVhZHJvb21fYmxvY2tz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9i
bG9ja3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bnVtX3NlY3Rpb25zKSB7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gZXN0aW1hdG9yX2JvdW5kYXJp
ZXNfYmxvY2tzKG51bV9zZWN0aW9ucyArIDEpOworICBpZiAoZXN0aW1hdG9yX2JvdW5kYXJpZXNf
YmxvY2tzLnNpemUoKSA9PSAyKSB7CisgICAgZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzWzBd
ID0gMDsKKyAgICBlc3RpbWF0b3JfYm91bmRhcmllc19ibG9ja3NbMV0gPSBudW1fYmxvY2tzOwor
ICAgIHJldHVybiBlc3RpbWF0b3JfYm91bmRhcmllc19ibG9ja3M7CisgIH0KKyAgUlRDX0RDSEVD
S19HVChlc3RpbWF0b3JfYm91bmRhcmllc19ibG9ja3Muc2l6ZSgpLCAyKTsKKyAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8c2l6ZV90PiBzZWN0aW9uX3NpemVzID0KKyAgICAgIERlZmluZUZpbHRlclNlY3Rp
b25TaXplcyhkZWxheV9oZWFkcm9vbV9ibG9ja3MsIG51bV9ibG9ja3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzLnNpemUoKSAtIDEp
OworCisgIHNpemVfdCBpZHggPSAwOworICBzaXplX3QgY3VycmVudF9zaXplX2Jsb2NrID0gMDsK
KyAgUlRDX0RDSEVDS19FUShzZWN0aW9uX3NpemVzLnNpemUoKSArIDEsIGVzdGltYXRvcl9ib3Vu
ZGFyaWVzX2Jsb2Nrcy5zaXplKCkpOworICBlc3RpbWF0b3JfYm91bmRhcmllc19ibG9ja3NbMF0g
PSBkZWxheV9oZWFkcm9vbV9ibG9ja3M7CisgIGZvciAoc2l6ZV90IGsgPSBkZWxheV9oZWFkcm9v
bV9ibG9ja3M7IGsgPCBudW1fYmxvY2tzOyArK2spIHsKKyAgICBjdXJyZW50X3NpemVfYmxvY2sr
KzsKKyAgICBpZiAoY3VycmVudF9zaXplX2Jsb2NrID49IHNlY3Rpb25fc2l6ZXNbaWR4XSkgewor
ICAgICAgaWR4ID0gaWR4ICsgMTsKKyAgICAgIGlmIChpZHggPT0gc2VjdGlvbl9zaXplcy5zaXpl
KCkpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBlc3RpbWF0b3JfYm91bmRhcmll
c19ibG9ja3NbaWR4XSA9IGsgKyAxOworICAgICAgY3VycmVudF9zaXplX2Jsb2NrID0gMDsKKyAg
ICB9CisgIH0KKyAgZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzW3NlY3Rpb25fc2l6ZXMuc2l6
ZSgpXSA9IG51bV9ibG9ja3M7CisgIHJldHVybiBlc3RpbWF0b3JfYm91bmRhcmllc19ibG9ja3M7
Cit9CisKK3N0ZDo6YXJyYXk8ZmxvYXQsIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OmtT
dWJiYW5kcz4KK1NldE1heEVybGVTdWJiYW5kcyhmbG9hdCBtYXhfZXJsZV9sLCBmbG9hdCBtYXhf
ZXJsZV9oLCBzaXplX3QgbGltaXRfc3ViYmFuZF9sKSB7CisgIHN0ZDo6YXJyYXk8ZmxvYXQsIFNp
Z25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OmtTdWJiYW5kcz4gbWF4X2VybGU7CisgIHN0ZDo6
ZmlsbChtYXhfZXJsZS5iZWdpbigpLCBtYXhfZXJsZS5iZWdpbigpICsgbGltaXRfc3ViYmFuZF9s
LCBtYXhfZXJsZV9sKTsKKyAgc3RkOjpmaWxsKG1heF9lcmxlLmJlZ2luKCkgKyBsaW1pdF9zdWJi
YW5kX2wsIG1heF9lcmxlLmVuZCgpLCBtYXhfZXJsZV9oKTsKKyAgcmV0dXJuIG1heF9lcmxlOwor
fQorCit9ICAvLyBuYW1lc3BhY2UKKworU2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvcjo6U2ln
bmFsRGVwZW5kZW50RXJsZUVzdGltYXRvcigKKyAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZp
ZyYgY29uZmlnKQorICAgIDogbWluX2VybGVfKGNvbmZpZy5lcmxlLm1pbiksCisgICAgICBudW1f
c2VjdGlvbnNfKGNvbmZpZy5lcmxlLm51bV9zZWN0aW9ucyksCisgICAgICBudW1fYmxvY2tzXyhj
b25maWcuZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2NrcyksCisgICAgICBkZWxheV9oZWFkcm9vbV9i
bG9ja3NfKGNvbmZpZy5kZWxheS5kZWxheV9oZWFkcm9vbV9ibG9ja3MpLAorICAgICAgYmFuZF90
b19zdWJiYW5kXyhGb3JtU3ViYmFuZE1hcCgpKSwKKyAgICAgIG1heF9lcmxlXyhTZXRNYXhFcmxl
U3ViYmFuZHMoY29uZmlnLmVybGUubWF4X2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbmZpZy5lcmxlLm1heF9oLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYW5kX3RvX3N1YmJhbmRfW2tGZnRMZW5ndGhCeTIgLyAyXSkpLAorICAgICAgc2VjdGlv
bl9ib3VuZGFyaWVzX2Jsb2Nrc18oU2V0U2VjdGlvbnNCb3VuZGFyaWVzKGRlbGF5X2hlYWRyb29t
X2Jsb2Nrc18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVtX2Jsb2Nrc18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVtX3NlY3Rpb25zXykpLAorICAgICAgUzJfc2VjdGlvbl9h
Y2N1bV8obnVtX3NlY3Rpb25zXyksCisgICAgICBlcmxlX2VzdGltYXRvcnNfKG51bV9zZWN0aW9u
c18pLAorICAgICAgY29ycmVjdGlvbl9mYWN0b3JzXyhudW1fc2VjdGlvbnNfKSB7CisgIFJUQ19E
Q0hFQ0tfTEUobnVtX3NlY3Rpb25zXywgbnVtX2Jsb2Nrc18pOworICBSVENfRENIRUNLX0dFKG51
bV9zZWN0aW9uc18sIDEpOworCisgIFJlc2V0KCk7Cit9CisKK1NpZ25hbERlcGVuZGVudEVybGVF
c3RpbWF0b3I6On5TaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yKCkgPSBkZWZhdWx0OworCit2
b2lkIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OlJlc2V0KCkgeworICBlcmxlXy5maWxs
KG1pbl9lcmxlXyk7CisgIGZvciAoYXV0byYgZXJsZSA6IGVybGVfZXN0aW1hdG9yc18pIHsKKyAg
ICBlcmxlLmZpbGwobWluX2VybGVfKTsKKyAgfQorICBlcmxlX3JlZl8uZmlsbChtaW5fZXJsZV8p
OworICBmb3IgKGF1dG8mIGZhY3RvciA6IGNvcnJlY3Rpb25fZmFjdG9yc18pIHsKKyAgICBmYWN0
b3IuZmlsbCgxLjBmKTsKKyAgfQorICBudW1fdXBkYXRlc18uZmlsbCgwKTsKK30KKworLy8gVXBk
YXRlcyB0aGUgRXJsZSBlc3RpbWF0ZSBieSBhbmFseXppbmcgdGhlIGN1cnJlbnQgaW5wdXQgc2ln
bmFscy4gSXQgdGFrZXMKKy8vIHRoZSByZW5kZXIgYnVmZmVyIGFuZCB0aGUgZmlsdGVyIGZyZXF1
ZW5jeSByZXNwb25zZSBpbiBvcmRlciB0byBkbyBhbgorLy8gZXN0aW1hdGlvbiBvZiB0aGUgbnVt
YmVyIG9mIHNlY3Rpb25zIG9mIHRoZSBsaW5lYXIgZmlsdGVyIHRoYXQgYXJlIG5lZWRlZAorLy8g
Zm9yIGdldHRpbmcgdGhlIG1ham9yaXR5IG9mIHRoZSBlbmVyZ3kgaW4gdGhlIGVjaG8gZXN0aW1h
dGUuIEJhc2VkIG9uIHRoYXQKKy8vIG51bWJlciBvZiBzZWN0aW9ucywgaXQgdXBkYXRlcyB0aGUg
ZXJsZSBlc3RpbWF0aW9uIGJ5IGludHJvZHVjaW5nIGEKKy8vIGNvcnJlY3Rpb24gZmFjdG9yIHRv
IHRoZSBlcmxlIHRoYXQgaXMgZ2l2ZW4gYXMgYW4gaW5wdXQgdG8gdGhpcyBtZXRob2QuCit2b2lk
IFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OlVwZGF0ZSgKKyAgICBjb25zdCBSZW5kZXJC
dWZmZXImIHJlbmRlcl9idWZmZXIsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxm
bG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPj4mCisgICAgICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVz
cG9uc2UsCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFgyLAorICAgIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IGZsb2F0PiBZMiwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4g
RTIsCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGF2ZXJhZ2VfZXJsZSwKKyAgICBi
b29sIGNvbnZlcmdlZF9maWx0ZXIpIHsKKyAgUlRDX0RDSEVDS19HVChudW1fc2VjdGlvbnNfLCAx
KTsKKworICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmlsdGVyIHNlY3Rpb25zIHRoYXQgYXJlIG5l
ZWRlZCBmb3IgYWNoaWV2aW5nIDkwICUKKyAgLy8gb2YgdGhlIHBvd2VyIHNwZWN0cnVtIGVuZXJn
eSBvZiB0aGUgZWNobyBlc3RpbWF0ZS4KKyAgc3RkOjphcnJheTxzaXplX3QsIGtGZnRMZW5ndGhC
eTJQbHVzMT4gbl9hY3RpdmVfc2VjdGlvbnM7CisgIENvbXB1dGVOdW1iZXJPZkFjdGl2ZUZpbHRl
clNlY3Rpb25zKHJlbmRlcl9idWZmZXIsIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fYWN0aXZlX3NlY3Rpb25zKTsKKwor
ICBpZiAoY29udmVyZ2VkX2ZpbHRlcikgeworICAgIC8vIFVwZGF0ZXMgdGhlIGNvcnJlY3Rpb24g
ZmFjdG9yIHRoYXQgaXMgdXNlZCBmb3IgY29ycmVjdGluZyB0aGUgZXJsZSBhbmQKKyAgICAvLyBh
ZGFwdCBpdCB0byB0aGUgcGFydGljdWxhciBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGlucHV0IHNp
Z25hbC4KKyAgICBVcGRhdGVDb3JyZWN0aW9uRmFjdG9ycyhYMiwgWTIsIEUyLCBuX2FjdGl2ZV9z
ZWN0aW9ucyk7CisgIH0KKworICAvLyBBcHBsaWVzIHRoZSBjb3JyZWN0aW9uIGZhY3RvciB0byB0
aGUgaW5wdXQgZXJsZSBmb3IgZ2V0dGluZyBhIG1vcmUgcmVmaW5lZAorICAvLyBlcmxlIGVzdGlt
YXRpb24gZm9yIHRoZSBjdXJyZW50IGlucHV0IHNpZ25hbC4KKyAgZm9yIChzaXplX3QgayA9IDA7
IGsgPCBrRmZ0TGVuZ3RoQnkyOyArK2spIHsKKyAgICBmbG9hdCBjb3JyZWN0aW9uX2ZhY3RvciA9
CisgICAgICAgIGNvcnJlY3Rpb25fZmFjdG9yc19bbl9hY3RpdmVfc2VjdGlvbnNba11dW2JhbmRf
dG9fc3ViYmFuZF9ba11dOworICAgIGVybGVfW2tdID0gcnRjOjpTYWZlQ2xhbXAoYXZlcmFnZV9l
cmxlW2tdICogY29ycmVjdGlvbl9mYWN0b3IsIG1pbl9lcmxlXywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1heF9lcmxlX1tiYW5kX3RvX3N1YmJhbmRfW2tdXSk7CisgIH0KK30KKwor
dm9pZCBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjpEdW1wKAorICAgIGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxBcG1EYXRhRHVtcGVyPiYgZGF0YV9kdW1wZXIpIGNvbnN0IHsKKyAgZm9yIChh
dXRvJiBlcmxlIDogZXJsZV9lc3RpbWF0b3JzXykgeworICAgIGRhdGFfZHVtcGVyLT5EdW1wUmF3
KCJhZWMzX2FsbF9lcmxlIiwgZXJsZSk7CisgIH0KKyAgZGF0YV9kdW1wZXItPkR1bXBSYXcoImFl
YzNfcmVmX2VybGUiLCBlcmxlX3JlZl8pOworICBmb3IgKGF1dG8mIGZhY3RvciA6IGNvcnJlY3Rp
b25fZmFjdG9yc18pIHsKKyAgICBkYXRhX2R1bXBlci0+RHVtcFJhdygiYWVjM19lcmxlX2NvcnJl
Y3Rpb25fZmFjdG9yIiwgZmFjdG9yKTsKKyAgfQorICBkYXRhX2R1bXBlci0+RHVtcFJhdygiYWVj
M19lcmxlIiwgZXJsZV8pOworfQorCisvLyBFc3RpbWF0ZXMgZm9yIGVhY2ggYmFuZCB0aGUgc21h
bGxlc3QgbnVtYmVyIG9mIHNlY3Rpb25zIGluIHRoZSBmaWx0ZXIgdGhhdAorLy8gdG9nZXRoZXIg
Y29uc3RpdHV0ZSA5MCUgb2YgdGhlIGVzdGltYXRlZCBlY2hvIGVuZXJneS4KK3ZvaWQgU2lnbmFs
RGVwZW5kZW50RXJsZUVzdGltYXRvcjo6Q29tcHV0ZU51bWJlck9mQWN0aXZlRmlsdGVyU2VjdGlv
bnMoCisgICAgY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+JgorICAgICAg
ICBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAorICAgIHJ0Yzo6QXJyYXlWaWV3PHNpemVfdD4g
bl9hY3RpdmVfZmlsdGVyX3NlY3Rpb25zKSB7CisgIFJUQ19EQ0hFQ0tfR1QobnVtX3NlY3Rpb25z
XywgMSk7CisgIC8vIENvbXB1dGVzIGFuIGFwcHJveGltYXRpb24gb2YgdGhlIHBvd2VyIHNwZWN0
cnVtIGlmIHRoZSBmaWx0ZXIgd291bGQgaGF2ZQorICAvLyBiZWVuIGxpbWl0ZWQgdG8gYSBjZXJ0
YWluIG51bWJlciBvZiBmaWx0ZXIgc2VjdGlvbnMuCisgIENvbXB1dGVFY2hvRXN0aW1hdGVQZXJG
aWx0ZXJTZWN0aW9uKHJlbmRlcl9idWZmZXIsIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UpOwor
ICAvLyBGb3IgZWFjaCBiYW5kLCBjb21wdXRlcyB0aGUgbnVtYmVyIG9mIGZpbHRlciBzZWN0aW9u
cyB0aGF0IGFyZSBuZWVkZWQgZm9yCisgIC8vIGFjaGlldmluZyB0aGUgOTAgJSBlbmVyZ3kgaW4g
dGhlIGVjaG8gZXN0aW1hdGUuCisgIENvbXB1dGVBY3RpdmVGaWx0ZXJTZWN0aW9ucyhuX2FjdGl2
ZV9maWx0ZXJfc2VjdGlvbnMpOworfQorCit2b2lkIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0
b3I6OlVwZGF0ZUNvcnJlY3Rpb25GYWN0b3JzKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZs
b2F0PiBYMiwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWTIsCisgICAgcnRjOjpB
cnJheVZpZXc8Y29uc3QgZmxvYXQ+IEUyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHNpemVf
dD4gbl9hY3RpdmVfc2VjdGlvbnMpIHsKKyAgY29uc3RleHByIGZsb2F0IGtYMkJhbmRFbmVyZ3lU
aHJlc2hvbGQgPSA0NDAxNTA2OC4wZjsKKyAgY29uc3RleHByIGZsb2F0IGtTbXRoQ29uc3RhbnRE
ZWNyZWFzZXMgPSAwLjFmOworICBjb25zdGV4cHIgZmxvYXQga1NtdGhDb25zdGFudEluY3JlYXNl
cyA9IGtTbXRoQ29uc3RhbnREZWNyZWFzZXMgLyAyLmY7CisgIGF1dG8gc3ViYmFuZF9wb3dlcnMg
PSBbXShydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcG93ZXJfc3BlY3RydW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5VmlldzxmbG9hdD4gcG93ZXJfc3BlY3RydW1f
c3ViYmFuZHMpIHsKKyAgICBmb3IgKHNpemVfdCBzdWJiYW5kID0gMDsgc3ViYmFuZCA8IGtTdWJi
YW5kczsgKytzdWJiYW5kKSB7CisgICAgICBSVENfRENIRUNLX0xFKGtCYW5kQm91bmRhcmllc1tz
dWJiYW5kICsgMV0sIHBvd2VyX3NwZWN0cnVtLnNpemUoKSk7CisgICAgICBwb3dlcl9zcGVjdHJ1
bV9zdWJiYW5kc1tzdWJiYW5kXSA9IHN0ZDo6YWNjdW11bGF0ZSgKKyAgICAgICAgICBwb3dlcl9z
cGVjdHJ1bS5iZWdpbigpICsga0JhbmRCb3VuZGFyaWVzW3N1YmJhbmRdLAorICAgICAgICAgIHBv
d2VyX3NwZWN0cnVtLmJlZ2luKCkgKyBrQmFuZEJvdW5kYXJpZXNbc3ViYmFuZCArIDFdLCAwLmYp
OworICAgIH0KKyAgfTsKKworICBzdGQ6OmFycmF5PGZsb2F0LCBrU3ViYmFuZHM+IFgyX3N1YmJh
bmRzLCBFMl9zdWJiYW5kcywgWTJfc3ViYmFuZHM7CisgIHN1YmJhbmRfcG93ZXJzKFgyLCBYMl9z
dWJiYW5kcyk7CisgIHN1YmJhbmRfcG93ZXJzKEUyLCBFMl9zdWJiYW5kcyk7CisgIHN1YmJhbmRf
cG93ZXJzKFkyLCBZMl9zdWJiYW5kcyk7CisgIHN0ZDo6YXJyYXk8c2l6ZV90LCBrU3ViYmFuZHM+
IGlkeF9zdWJiYW5kczsKKyAgZm9yIChzaXplX3Qgc3ViYmFuZCA9IDA7IHN1YmJhbmQgPCBrU3Vi
YmFuZHM7ICsrc3ViYmFuZCkgeworICAgIC8vIFdoZW4gYWdncmVnYXRpbmcgdGhlIG51bWJlciBv
ZiBhY3RpdmUgc2VjdGlvbnMgaW4gdGhlIGZpbHRlciBmb3IKKyAgICAvLyBkaWZmZXJlbnQgYmFu
ZHMgd2UgY2hvb3NlIHRvIHRha2UgdGhlIG1pbmltdW0gb2YgYWxsIG9mIHRoZW0uIEFzIGFuCisg
ICAgLy8gZXhhbXBsZSwgaWYgZm9yIG9uZSBvZiB0aGUgYmFuZHMgaXQgaXMgdGhlIGRpcmVjdCBw
YXRoIGl0cyBtYWluCisgICAgLy8gY29udHJpYnV0b3IgdG8gdGhlIGZpbmFsIGVjaG8gZXN0aW1h
dGUsIHdlIGNvbnNpZGVyIHRoZSBkaXJlY3QgcGF0aCBpcworICAgIC8vIGFzIHdlbGwgdGhlIG1h
aW4gY29udHJpYnV0b3IgZm9yIHRoZSBzdWJiYW5kIHRoYXQgY29udGFpbnMgdGhhdAorICAgIC8v
IHBhcnRpY3VsYXIgYmFuZC4gVGhhdCBhZ2dyZWdhdGUgbnVtYmVyIG9mIHNlY3Rpb25zIHdpbGwg
YmUgbGF0ZXIgdXNlZCBhcworICAgIC8vIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBlcmxlIGVzdGlt
YXRvciB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQuCisgICAgUlRDX0RDSEVDS19MRShrQmFuZEJv
dW5kYXJpZXNbc3ViYmFuZCArIDFdLCBuX2FjdGl2ZV9zZWN0aW9ucy5zaXplKCkpOworICAgIGlk
eF9zdWJiYW5kc1tzdWJiYW5kXSA9ICpzdGQ6Om1pbl9lbGVtZW50KAorICAgICAgICBuX2FjdGl2
ZV9zZWN0aW9ucy5iZWdpbigpICsga0JhbmRCb3VuZGFyaWVzW3N1YmJhbmRdLAorICAgICAgICBu
X2FjdGl2ZV9zZWN0aW9ucy5iZWdpbigpICsga0JhbmRCb3VuZGFyaWVzW3N1YmJhbmQgKyAxXSk7
CisgIH0KKworICBzdGQ6OmFycmF5PGZsb2F0LCBrU3ViYmFuZHM+IG5ld19lcmxlOworICBzdGQ6
OmFycmF5PGJvb2wsIGtTdWJiYW5kcz4gaXNfZXJsZV91cGRhdGVkOworICBpc19lcmxlX3VwZGF0
ZWQuZmlsbChmYWxzZSk7CisgIG5ld19lcmxlLmZpbGwoMC5mKTsKKyAgZm9yIChzaXplX3Qgc3Vi
YmFuZCA9IDA7IHN1YmJhbmQgPCBrU3ViYmFuZHM7ICsrc3ViYmFuZCkgeworICAgIGlmIChYMl9z
dWJiYW5kc1tzdWJiYW5kXSA+IGtYMkJhbmRFbmVyZ3lUaHJlc2hvbGQgJiYKKyAgICAgICAgRTJf
c3ViYmFuZHNbc3ViYmFuZF0gPiAwKSB7CisgICAgICBuZXdfZXJsZVtzdWJiYW5kXSA9IFkyX3N1
YmJhbmRzW3N1YmJhbmRdIC8gRTJfc3ViYmFuZHNbc3ViYmFuZF07CisgICAgICBSVENfRENIRUNL
X0dUKG5ld19lcmxlW3N1YmJhbmRdLCAwKTsKKyAgICAgIGlzX2VybGVfdXBkYXRlZFtzdWJiYW5k
XSA9IHRydWU7CisgICAgICArK251bV91cGRhdGVzX1tzdWJiYW5kXTsKKyAgICB9CisgIH0KKwor
ICBmb3IgKHNpemVfdCBzdWJiYW5kID0gMDsgc3ViYmFuZCA8IGtTdWJiYW5kczsgKytzdWJiYW5k
KSB7CisgICAgY29uc3Qgc2l6ZV90IGlkeCA9IGlkeF9zdWJiYW5kc1tzdWJiYW5kXTsKKyAgICBS
VENfRENIRUNLX0xUKGlkeCwgZXJsZV9lc3RpbWF0b3JzXy5zaXplKCkpOworICAgIGZsb2F0IGFs
cGhhID0gbmV3X2VybGVbc3ViYmFuZF0gPiBlcmxlX2VzdGltYXRvcnNfW2lkeF1bc3ViYmFuZF0K
KyAgICAgICAgICAgICAgICAgICAgICA/IGtTbXRoQ29uc3RhbnRJbmNyZWFzZXMKKyAgICAgICAg
ICAgICAgICAgICAgICA6IGtTbXRoQ29uc3RhbnREZWNyZWFzZXM7CisgICAgYWxwaGEgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oaXNfZXJsZV91cGRhdGVkW3N1YmJhbmRdKSAqIGFscGhhOworICAgIGVy
bGVfZXN0aW1hdG9yc19baWR4XVtzdWJiYW5kXSArPQorICAgICAgICBhbHBoYSAqIChuZXdfZXJs
ZVtzdWJiYW5kXSAtIGVybGVfZXN0aW1hdG9yc19baWR4XVtzdWJiYW5kXSk7CisgICAgZXJsZV9l
c3RpbWF0b3JzX1tpZHhdW3N1YmJhbmRdID0gcnRjOjpTYWZlQ2xhbXAoCisgICAgICAgIGVybGVf
ZXN0aW1hdG9yc19baWR4XVtzdWJiYW5kXSwgbWluX2VybGVfLCBtYXhfZXJsZV9bc3ViYmFuZF0p
OworICB9CisKKyAgZm9yIChzaXplX3Qgc3ViYmFuZCA9IDA7IHN1YmJhbmQgPCBrU3ViYmFuZHM7
ICsrc3ViYmFuZCkgeworICAgIGZsb2F0IGFscGhhID0gbmV3X2VybGVbc3ViYmFuZF0gPiBlcmxl
X3JlZl9bc3ViYmFuZF0KKyAgICAgICAgICAgICAgICAgICAgICA/IGtTbXRoQ29uc3RhbnRJbmNy
ZWFzZXMKKyAgICAgICAgICAgICAgICAgICAgICA6IGtTbXRoQ29uc3RhbnREZWNyZWFzZXM7Cisg
ICAgYWxwaGEgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaXNfZXJsZV91cGRhdGVkW3N1YmJhbmRdKSAq
IGFscGhhOworICAgIGVybGVfcmVmX1tzdWJiYW5kXSArPSBhbHBoYSAqIChuZXdfZXJsZVtzdWJi
YW5kXSAtIGVybGVfcmVmX1tzdWJiYW5kXSk7CisgICAgZXJsZV9yZWZfW3N1YmJhbmRdID0KKyAg
ICAgICAgcnRjOjpTYWZlQ2xhbXAoZXJsZV9yZWZfW3N1YmJhbmRdLCBtaW5fZXJsZV8sIG1heF9l
cmxlX1tzdWJiYW5kXSk7CisgIH0KKworICBmb3IgKHNpemVfdCBzdWJiYW5kID0gMDsgc3ViYmFu
ZCA8IGtTdWJiYW5kczsgKytzdWJiYW5kKSB7CisgICAgY29uc3RleHByIGludCBrTnVtVXBkYXRl
VGhyID0gNTA7CisgICAgaWYgKGlzX2VybGVfdXBkYXRlZFtzdWJiYW5kXSAmJiBudW1fdXBkYXRl
c19bc3ViYmFuZF0gPiBrTnVtVXBkYXRlVGhyKSB7CisgICAgICBjb25zdCBzaXplX3QgaWR4ID0g
aWR4X3N1YmJhbmRzW3N1YmJhbmRdOworICAgICAgUlRDX0RDSEVDS19HVChlcmxlX3JlZl9bc3Vi
YmFuZF0sIDAuZik7CisgICAgICAvLyBDb21wdXRlcyB0aGUgcmF0aW8gYmV0d2VlbiB0aGUgZXJs
ZSB0aGF0IGlzIHVwZGF0ZWQgdXNpbmcgYWxsIHRoZQorICAgICAgLy8gcG9pbnRzIGFuZCB0aGUg
ZXJsZSB0aGF0IGlzIHVwZGF0ZWQgb25seSBvbiBzaWduYWxzIHRoYXQgc2hhcmUgdGhlCisgICAg
ICAvLyBzYW1lIG51bWJlciBvZiBhY3RpdmUgZmlsdGVyIHNlY3Rpb25zLgorICAgICAgZmxvYXQg
bmV3X2NvcnJlY3Rpb25fZmFjdG9yID0KKyAgICAgICAgICBlcmxlX2VzdGltYXRvcnNfW2lkeF1b
c3ViYmFuZF0gLyBlcmxlX3JlZl9bc3ViYmFuZF07CisKKyAgICAgIGNvcnJlY3Rpb25fZmFjdG9y
c19baWR4XVtzdWJiYW5kXSArPQorICAgICAgICAgIDAuMWYgKiAobmV3X2NvcnJlY3Rpb25fZmFj
dG9yIC0gY29ycmVjdGlvbl9mYWN0b3JzX1tpZHhdW3N1YmJhbmRdKTsKKyAgICB9CisgIH0KK30K
Kwordm9pZCBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjpDb21wdXRlRWNob0VzdGltYXRl
UGVyRmlsdGVyU2VjdGlvbigKKyAgICBjb25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIs
CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBs
dXMxPj4mCisgICAgICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UpIHsKKyAgY29uc3QgVmVj
dG9yQnVmZmVyJiBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVyID0KKyAgICAgIHJlbmRlcl9idWZmZXIu
R2V0U3BlY3RydW1CdWZmZXIoKTsKKworICBSVENfRENIRUNLX0VRKFMyX3NlY3Rpb25fYWNjdW1f
LnNpemUoKSArIDEsCisgICAgICAgICAgICAgICAgc2VjdGlvbl9ib3VuZGFyaWVzX2Jsb2Nrc18u
c2l6ZSgpKTsKKyAgc2l6ZV90IGlkeF9yZW5kZXIgPSByZW5kZXJfYnVmZmVyLlBvc2l0aW9uKCk7
CisgIGlkeF9yZW5kZXIgPSBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVyLk9mZnNldEluZGV4KAorICAg
ICAgaWR4X3JlbmRlciwgc2VjdGlvbl9ib3VuZGFyaWVzX2Jsb2Nrc19bMF0pOworCisgIGZvciAo
c2l6ZV90IHNlY3Rpb24gPSAwOyBzZWN0aW9uIDwgbnVtX3NlY3Rpb25zXzsgKytzZWN0aW9uKSB7
CisgICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBYMl9zZWN0aW9uOwor
ICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gSDJfc2VjdGlvbjsKKyAg
ICBYMl9zZWN0aW9uLmZpbGwoMC5mKTsKKyAgICBIMl9zZWN0aW9uLmZpbGwoMC5mKTsKKyAgICBm
b3IgKHNpemVfdCBibG9jayA9IHNlY3Rpb25fYm91bmRhcmllc19ibG9ja3NfW3NlY3Rpb25dOwor
ICAgICAgICAgYmxvY2sgPCBzZWN0aW9uX2JvdW5kYXJpZXNfYmxvY2tzX1tzZWN0aW9uICsgMV07
ICsrYmxvY2spIHsKKyAgICAgIHN0ZDo6dHJhbnNmb3JtKFgyX3NlY3Rpb24uYmVnaW4oKSwgWDJf
c2VjdGlvbi5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgIHNwZWN0cnVtX3JlbmRlcl9idWZm
ZXIuYnVmZmVyW2lkeF9yZW5kZXJdLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgICBYMl9z
ZWN0aW9uLmJlZ2luKCksIHN0ZDo6cGx1czxmbG9hdD4oKSk7CisgICAgICBzdGQ6OnRyYW5zZm9y
bShIMl9zZWN0aW9uLmJlZ2luKCksIEgyX3NlY3Rpb24uZW5kKCksCisgICAgICAgICAgICAgICAg
ICAgICBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlW2Jsb2NrXS5iZWdpbigpLAorICAgICAgICAg
ICAgICAgICAgICAgSDJfc2VjdGlvbi5iZWdpbigpLCBzdGQ6OnBsdXM8ZmxvYXQ+KCkpOworICAg
ICAgaWR4X3JlbmRlciA9IHNwZWN0cnVtX3JlbmRlcl9idWZmZXIuSW5jSW5kZXgoaWR4X3JlbmRl
cik7CisgICAgfQorCisgICAgc3RkOjp0cmFuc2Zvcm0oWDJfc2VjdGlvbi5iZWdpbigpLCBYMl9z
ZWN0aW9uLmVuZCgpLCBIMl9zZWN0aW9uLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgUzJf
c2VjdGlvbl9hY2N1bV9bc2VjdGlvbl0uYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6
Om11bHRpcGxpZXM8ZmxvYXQ+KCkpOworICB9CisKKyAgZm9yIChzaXplX3Qgc2VjdGlvbiA9IDE7
IHNlY3Rpb24gPCBudW1fc2VjdGlvbnNfOyArK3NlY3Rpb24pIHsKKyAgICBzdGQ6OnRyYW5zZm9y
bShTMl9zZWN0aW9uX2FjY3VtX1tzZWN0aW9uIC0gMV0uYmVnaW4oKSwKKyAgICAgICAgICAgICAg
ICAgICBTMl9zZWN0aW9uX2FjY3VtX1tzZWN0aW9uIC0gMV0uZW5kKCksCisgICAgICAgICAgICAg
ICAgICAgUzJfc2VjdGlvbl9hY2N1bV9bc2VjdGlvbl0uYmVnaW4oKSwKKyAgICAgICAgICAgICAg
ICAgICBTMl9zZWN0aW9uX2FjY3VtX1tzZWN0aW9uXS5iZWdpbigpLCBzdGQ6OnBsdXM8ZmxvYXQ+
KCkpOworICB9Cit9CisKK3ZvaWQgU2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvcjo6Q29tcHV0
ZUFjdGl2ZUZpbHRlclNlY3Rpb25zKAorICAgIHJ0Yzo6QXJyYXlWaWV3PHNpemVfdD4gbnVtYmVy
X2FjdGl2ZV9maWx0ZXJfc2VjdGlvbnMpIGNvbnN0IHsKKyAgc3RkOjpmaWxsKG51bWJlcl9hY3Rp
dmVfZmlsdGVyX3NlY3Rpb25zLmJlZ2luKCksCisgICAgICAgICAgICBudW1iZXJfYWN0aXZlX2Zp
bHRlcl9zZWN0aW9ucy5lbmQoKSwgMCk7CisgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwga0ZmdExl
bmd0aEJ5MlBsdXMxOyArK2spIHsKKyAgICBzaXplX3Qgc2VjdGlvbiA9IG51bV9zZWN0aW9uc187
CisgICAgZmxvYXQgdGFyZ2V0ID0gMC45ZiAqIFMyX3NlY3Rpb25fYWNjdW1fW251bV9zZWN0aW9u
c18gLSAxXVtrXTsKKyAgICB3aGlsZSAoc2VjdGlvbiA+IDAgJiYgUzJfc2VjdGlvbl9hY2N1bV9b
c2VjdGlvbiAtIDFdW2tdID49IHRhcmdldCkgeworICAgICAgbnVtYmVyX2FjdGl2ZV9maWx0ZXJf
c2VjdGlvbnNba10gPSAtLXNlY3Rpb247CisgICAgfQorICB9Cit9Cit9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVf
ZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1h
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDhiNTZjMmIyMGMzODJkZDIxOWMwZGQyN2FkNjUzNWNiZTQ5NWNk
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NpZ25hbF9kZXBlbmRlbnRfZXJs
ZV9lc3RpbWF0b3IuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKwor
I2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TSUdOQUxfREVQRU5ERU5UX0VS
TEVfRVNUSU1BVE9SX0hfCisjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1NJ
R05BTF9ERVBFTkRFTlRfRVJMRV9FU1RJTUFUT1JfSF8KKworI2luY2x1ZGUgPG1lbW9yeT4KKyNp
bmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUg
ImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisKK25hbWVzcGFjZSB3
ZWJydGMgeworCisvLyBUaGlzIGNsYXNzIGVzdGltYXRlcyB0aGUgZGVwZW5kZW5jeSBvZiB0aGUg
RXJsZSB0byB0aGUgaW5wdXQgc2lnbmFsLiBCeQorLy8gbG9va2luZyBhdCB0aGUgaW5wdXQgc2ln
bmFsLCBhbiBlc3RpbWF0aW9uIG9uIHdoZXRoZXIgdGhlIGN1cnJlbnQgZWNobworLy8gZXN0aW1h
dGUgaXMgZHVlIHRvIHRoZSBkaXJlY3QgcGF0aCBvciB0byBhIG1vcmUgcmV2ZXJiZXJhbnQgb25l
IGlzIHBlcmZvcm1lZC4KKy8vIE9uY2UgdGhhdCBlc3RpbWF0aW9uIGlzIGRvbmUsIGl0IGlzIHBv
c3NpYmxlIHRvIHJlZmluZSB0aGUgYXZlcmFnZSBFcmxlIHRoYXQKKy8vIHRoaXMgY2xhc3MgcmVj
ZWl2ZSBhcyBhbiBpbnB1dC4KK2NsYXNzIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3Igewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgU2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvcihjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKTsKKworICB+U2lnbmFsRGVwZW5kZW50RXJsZUVz
dGltYXRvcigpOworCisgIHZvaWQgUmVzZXQoKTsKKworICAvLyBSZXR1cm5zIHRoZSBFcmxlIHBl
ciBmcmVxdWVuY3kgc3ViYmFuZC4KKyAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0
aEJ5MlBsdXMxPiYgRXJsZSgpIGNvbnN0IHsgcmV0dXJuIGVybGVfOyB9CisKKyAgLy8gVXBkYXRl
cyB0aGUgRXJsZSBlc3RpbWF0ZS4gVGhlIEVybGUgdGhhdCBpcyBwYXNzZWQgYXMgYW4gaW5wdXQg
aXMgcmVxdWlyZWQKKyAgLy8gdG8gYmUgYW4gZXN0aW1hdGlvbiBvZiB0aGUgYXZlcmFnZSBFcmxl
IGFjaGlldmVkIGJ5IHRoZSBsaW5lYXIgZmlsdGVyLgorICB2b2lkIFVwZGF0ZShjb25zdCBSZW5k
ZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCisgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+JgorICAgICAgICAgICAgICAg
ICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwKKyAgICAgICAgICAgICAgcnRjOjpBcnJheVZp
ZXc8Y29uc3QgZmxvYXQ+IFgyLAorICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBm
bG9hdD4gWTIsCisgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBFMiwK
KyAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGF2ZXJhZ2VfZXJsZSwK
KyAgICAgICAgICAgICAgYm9vbCBjb252ZXJnZWRfZmlsdGVyKTsKKworICB2b2lkIER1bXAoY29u
c3Qgc3RkOjp1bmlxdWVfcHRyPEFwbURhdGFEdW1wZXI+JiBkYXRhX2R1bXBlcikgY29uc3Q7CisK
KyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N1YmJhbmRzID0gNjsKKworIHByaXZhdGU6Cisg
IHZvaWQgQ29tcHV0ZU51bWJlck9mQWN0aXZlRmlsdGVyU2VjdGlvbnMoCisgICAgICBjb25zdCBS
ZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCisgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAgICAgICBmaWx0ZXJfZnJl
cXVlbmN5X3Jlc3BvbnNlLAorICAgICAgcnRjOjpBcnJheVZpZXc8c2l6ZV90PiBuX2FjdGl2ZV9m
aWx0ZXJfc2VjdGlvbnMpOworCisgIHZvaWQgVXBkYXRlQ29ycmVjdGlvbkZhY3RvcnMocnRjOjpB
cnJheVZpZXc8Y29uc3QgZmxvYXQ+IFgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBZMiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gRTIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qgc2l6ZV90PiBuX2FjdGl2ZV9zZWN0
aW9ucyk7CisKKyAgdm9pZCBDb21wdXRlRWNob0VzdGltYXRlUGVyRmlsdGVyU2VjdGlvbigKKyAg
ICAgIGNvbnN0IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKKyAgICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+JgorICAgICAgICAg
IGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UpOworCisgIHZvaWQgQ29tcHV0ZUFjdGl2ZUZpbHRl
clNlY3Rpb25zKAorICAgICAgcnRjOjpBcnJheVZpZXc8c2l6ZV90PiBudW1iZXJfYWN0aXZlX2Zp
bHRlcl9zZWN0aW9ucykgY29uc3Q7CisKKyAgY29uc3QgZmxvYXQgbWluX2VybGVfOworICBjb25z
dCBzaXplX3QgbnVtX3NlY3Rpb25zXzsKKyAgY29uc3Qgc2l6ZV90IG51bV9ibG9ja3NfOworICBj
b25zdCBzaXplX3QgZGVsYXlfaGVhZHJvb21fYmxvY2tzXzsKKyAgY29uc3Qgc3RkOjphcnJheTxz
aXplX3QsIGtGZnRMZW5ndGhCeTJQbHVzMT4gYmFuZF90b19zdWJiYW5kXzsKKyAgY29uc3Qgc3Rk
OjphcnJheTxmbG9hdCwga1N1YmJhbmRzPiBtYXhfZXJsZV87CisgIGNvbnN0IHN0ZDo6dmVjdG9y
PHNpemVfdD4gc2VjdGlvbl9ib3VuZGFyaWVzX2Jsb2Nrc187CisgIHN0ZDo6YXJyYXk8ZmxvYXQs
IGtGZnRMZW5ndGhCeTJQbHVzMT4gZXJsZV87CisgIHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8Zmxv
YXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+IFMyX3NlY3Rpb25fYWNjdW1fOworICBzdGQ6OnZlY3Rv
cjxzdGQ6OmFycmF5PGZsb2F0LCBrU3ViYmFuZHM+PiBlcmxlX2VzdGltYXRvcnNfOworICBzdGQ6
OmFycmF5PGZsb2F0LCBrU3ViYmFuZHM+IGVybGVfcmVmXzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjph
cnJheTxmbG9hdCwga1N1YmJhbmRzPj4gY29ycmVjdGlvbl9mYWN0b3JzXzsKKyAgc3RkOjphcnJh
eTxpbnQsIGtTdWJiYW5kcz4gbnVtX3VwZGF0ZXNfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1NJR05BTF9E
RVBFTkRFTlRfRVJMRV9FU1RJTUFUT1JfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Np
Z25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFlYzYwNWY3YWJmMDI4NWQwMzU1MmIyYzExZmIzYTUzMjI2OThhYzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yX3VuaXR0
ZXN0LmNjCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NpZ25hbF9kZXBlbmRlbnRfZXJsZV9l
c3RpbWF0b3IuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxpb3N0cmVhbT4K
KyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIz
X2NvbmZpZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRl
cl9idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5k
ZXJfZGVsYXlfYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVp
bGRlci5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisK
K25hbWVzcGFjZSB7CisKK3ZvaWQgR2V0QWN0aXZlRnJhbWUocnRjOjpBcnJheVZpZXc8ZmxvYXQ+
IHgpIHsKKyAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0Jsb2NrU2l6ZT4gZnJhbWUgPSB7Cisg
ICAgICA3NDU5Ljg4LCAxNzIwOS42LCAxNzM4MywgICAyMDc2OC45LCAxNjgxNi43LCAxODM4Ni4z
LCA0NDkyLjgzLCA5Njc1Ljg1LAorICAgICAgNjY2NS41MiwgMTQ4MDguNiwgOTM0Mi4zLCAgNzQ4
My4yOCwgMTkyNjEuNywgNDE0NS45OCwgMTYyMi4xOCwgMTM0NzUuMiwKKyAgICAgIDcxNjYuMzIs
IDY4NTYuNjEsIDIxOTM3LCAgIDcyNjMuMTQsIDk1NjkuMDcsIDE0OTE5LCAgIDg0MTMuMzIsIDc1
NTEuODksCisgICAgICA3ODQ4LjY1LCA2MDExLjI3LCAxMzA4MC42LCAxNTg2NS4yLCAxMjY1Niwg
ICAxNzQ1OS42LCA0MjYzLjkzLCA0NTAzLjAzLAorICAgICAgOTMxMS43OSwgMjEwOTUuOCwgMTI2
NTcuOSwgMTM5MDYuNiwgMTkyNjcuMiwgMTEzMzguMSwgMTY4MjguOSwgMTE1MDEuNiwKKyAgICAg
IDExNDA1LCAgIDE1MDMxLjQsIDE0NTQxLjYsIDE5NzY1LjUsIDE4MzQ2LjMsIDE5MzUwLjIsIDMx
NTcuNDcsIDE4MDk1LjgsCisgICAgICAxNzQzLjY4LCAyMTMyOC4yLCAxOTcyNy41LCA3Mjk1LjE2
LCAxMDMzMi40LCAxMTA1NS41LCAyMDEwNy40LCAxNDcwOC40LAorICAgICAgMTI0MTYuMiwgMTY0
MzQsICAgMjQ1NC42OSwgOTg0MC44LCAgNjg2Ny4yMywgMTYxNS43NSwgNjA1OS45LCAgODM5NC4x
OX07CisgIFJUQ19EQ0hFQ0tfR0UoeC5zaXplKCksIGZyYW1lLnNpemUoKSk7CisgIHN0ZDo6Y29w
eShmcmFtZS5iZWdpbigpLCBmcmFtZS5lbmQoKSwgeC5iZWdpbigpKTsKK30KKworY2xhc3MgVGVz
dElucHV0cyB7CisgcHVibGljOgorICBleHBsaWNpdCBUZXN0SW5wdXRzKGNvbnN0IEVjaG9DYW5j
ZWxsZXIzQ29uZmlnJiBjZmcpOworICB+VGVzdElucHV0cygpOworICBjb25zdCBSZW5kZXJCdWZm
ZXImIEdldFJlbmRlckJ1ZmZlcigpIHsgcmV0dXJuICpyZW5kZXJfYnVmZmVyXzsgfQorICBydGM6
OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gR2V0WDIoKSB7IHJldHVybiBYMl87IH0KKyAgcnRjOjpB
cnJheVZpZXc8Y29uc3QgZmxvYXQ+IEdldFkyKCkgeyByZXR1cm4gWTJfOyB9CisgIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IGZsb2F0PiBHZXRFMigpIHsgcmV0dXJuIEUyXzsgfQorICBzdGQ6OnZlY3Rv
cjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiBHZXRIMigpIHsgcmV0dXJu
IEgyXzsgfQorICB2b2lkIFVwZGF0ZSgpOworCisgcHJpdmF0ZToKKyAgdm9pZCBVcGRhdGVDdXJy
ZW50UG93ZXJTcGVjdHJhKCk7CisgIGludCBuXyA9IDA7CisgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcl87CisgIFJlbmRlckJ1ZmZlciogcmVu
ZGVyX2J1ZmZlcl87CisgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gWDJf
OworICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFkyXzsKKyAgc3RkOjph
cnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBFMl87CisgIHN0ZDo6dmVjdG9yPHN0ZDo6
YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+IEgyXzsKKyAgc3RkOjp2ZWN0b3I8c3Rk
Ojp2ZWN0b3I8ZmxvYXQ+PiB4XzsKK307CisKK1Rlc3RJbnB1dHM6OlRlc3RJbnB1dHMoY29uc3Qg
RWNob0NhbmNlbGxlcjNDb25maWcmIGNmZykKKyAgICA6IHJlbmRlcl9kZWxheV9idWZmZXJfKFJl
bmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNmZywgMSkpLAorICAgICAgSDJfKGNmZy5maWx0ZXIu
bWFpbi5sZW5ndGhfYmxvY2tzKSwKKyAgICAgIHhfKDEsIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxv
Y2tTaXplLCAwLmYpKSB7CisgIHJlbmRlcl9kZWxheV9idWZmZXJfLT5TZXREZWxheSg0KTsKKyAg
cmVuZGVyX2J1ZmZlcl8gPSByZW5kZXJfZGVsYXlfYnVmZmVyXy0+R2V0UmVuZGVyQnVmZmVyKCk7
CisgIGZvciAoYXV0byYgSCA6IEgyXykgeworICAgIEguZmlsbCgwLmYpOworICB9CisgIEgyX1sw
XS5maWxsKDEuMGYpOworfQorCitUZXN0SW5wdXRzOjp+VGVzdElucHV0cygpID0gZGVmYXVsdDsK
Kwordm9pZCBUZXN0SW5wdXRzOjpVcGRhdGUoKSB7CisgIGlmIChuXyAlIDIgPT0gMCkgeworICAg
IHN0ZDo6ZmlsbCh4X1swXS5iZWdpbigpLCB4X1swXS5lbmQoKSwgMC5mKTsKKyAgfSBlbHNlIHsK
KyAgICBHZXRBY3RpdmVGcmFtZSh4X1swXSk7CisgIH0KKworICByZW5kZXJfZGVsYXlfYnVmZmVy
Xy0+SW5zZXJ0KHhfKTsKKyAgcmVuZGVyX2RlbGF5X2J1ZmZlcl8tPlByZXBhcmVDYXB0dXJlUHJv
Y2Vzc2luZygpOworICBVcGRhdGVDdXJyZW50UG93ZXJTcGVjdHJhKCk7CisgICsrbl87Cit9CisK
K3ZvaWQgVGVzdElucHV0czo6VXBkYXRlQ3VycmVudFBvd2VyU3BlY3RyYSgpIHsKKyAgY29uc3Qg
VmVjdG9yQnVmZmVyJiBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVyID0KKyAgICAgIHJlbmRlcl9idWZm
ZXJfLT5HZXRTcGVjdHJ1bUJ1ZmZlcigpOworICBzaXplX3QgaWR4ID0gcmVuZGVyX2J1ZmZlcl8t
PlBvc2l0aW9uKCk7CisgIHNpemVfdCBwcmV2X2lkeCA9IHNwZWN0cnVtX3JlbmRlcl9idWZmZXIu
T2Zmc2V0SW5kZXgoaWR4LCAxKTsKKyAgYXV0byYgWDIgPSBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVy
LmJ1ZmZlcltpZHhdOworICBhdXRvJiBYMl9wcmV2ID0gc3BlY3RydW1fcmVuZGVyX2J1ZmZlci5i
dWZmZXJbcHJldl9pZHhdOworICBzdGQ6OmNvcHkoWDIuYmVnaW4oKSwgWDIuZW5kKCksIFgyXy5i
ZWdpbigpKTsKKyAgUlRDX0RDSEVDS19FUShYMi5zaXplKCksIFkyXy5zaXplKCkpOworICBmb3Ig
KHNpemVfdCBrID0gMDsgayA8IFgyLnNpemUoKTsgKytrKSB7CisgICAgRTJfW2tdID0gMC4wMWYg
KiBYMl9wcmV2W2tdOworICAgIFkyX1trXSA9IFgyW2tdICsgRTJfW2tdOworICB9Cit9CisKK30g
IC8vIG5hbWVzcGFjZQorCitURVNUKFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3IsIFN3ZWVw
U2V0dGluZ3MpIHsKKyAgRWNob0NhbmNlbGxlcjNDb25maWcgY2ZnOworICBzaXplX3QgbWF4X2xl
bmd0aF9ibG9ja3MgPSA1MDsKKyAgZm9yIChzaXplX3QgYmxvY2tzID0gMDsgYmxvY2tzIDwgbWF4
X2xlbmd0aF9ibG9ja3M7IGJsb2NrcyA9IGJsb2NrcyArIDEwKSB7CisgICAgZm9yIChzaXplX3Qg
ZGVsYXlfaGVhZHJvb20gPSAwOyBkZWxheV9oZWFkcm9vbSA8IDU7ICsrZGVsYXlfaGVhZHJvb20p
IHsKKyAgICAgIGZvciAoc2l6ZV90IG51bV9zZWN0aW9ucyA9IDI7IG51bV9zZWN0aW9ucyA8IG1h
eF9sZW5ndGhfYmxvY2tzOworICAgICAgICAgICArK251bV9zZWN0aW9ucykgeworICAgICAgICBj
ZmcuZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2NrcyA9IGJsb2NrczsKKyAgICAgICAgY2ZnLmZpbHRl
ci5tYWluX2luaXRpYWwubGVuZ3RoX2Jsb2NrcyA9CisgICAgICAgICAgICBzdGQ6Om1pbihjZmcu
ZmlsdGVyLm1haW5faW5pdGlhbC5sZW5ndGhfYmxvY2tzLCBibG9ja3MpOworICAgICAgICBjZmcu
ZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tzID0gZGVsYXlfaGVhZHJvb207CisgICAgICAgIGNm
Zy5lcmxlLm51bV9zZWN0aW9ucyA9IG51bV9zZWN0aW9uczsKKyAgICAgICAgaWYgKEVjaG9DYW5j
ZWxsZXIzQ29uZmlnOjpWYWxpZGF0ZSgmY2ZnKSkgeworICAgICAgICAgIFNpZ25hbERlcGVuZGVu
dEVybGVFc3RpbWF0b3IgcyhjZmcpOworICAgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4gYXZlcmFnZV9lcmxlOworICAgICAgICAgIGF2ZXJhZ2VfZXJsZS5maWxs
KGNmZy5lcmxlLm1heF9sKTsKKyAgICAgICAgICBUZXN0SW5wdXRzIGlucHV0cyhjZmcpOworICAg
ICAgICAgIGZvciAoc2l6ZV90IG4gPSAwOyBuIDwgMTA7ICsrbikgeworICAgICAgICAgICAgaW5w
dXRzLlVwZGF0ZSgpOworICAgICAgICAgICAgcy5VcGRhdGUoaW5wdXRzLkdldFJlbmRlckJ1ZmZl
cigpLCBpbnB1dHMuR2V0SDIoKSwgaW5wdXRzLkdldFgyKCksCisgICAgICAgICAgICAgICAgICAg
ICBpbnB1dHMuR2V0WTIoKSwgaW5wdXRzLkdldEUyKCksIGF2ZXJhZ2VfZXJsZSwgdHJ1ZSk7Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9CisKK1RFU1QoU2ln
bmFsRGVwZW5kZW50RXJsZUVzdGltYXRvciwgTG9uZ2VyUnVuKSB7CisgIEVjaG9DYW5jZWxsZXIz
Q29uZmlnIGNmZzsKKyAgY2ZnLmZpbHRlci5tYWluLmxlbmd0aF9ibG9ja3MgPSAyOworICBjZmcu
ZmlsdGVyLm1haW5faW5pdGlhbC5sZW5ndGhfYmxvY2tzID0gMTsKKyAgY2ZnLmRlbGF5LmRlbGF5
X2hlYWRyb29tX2Jsb2NrcyA9IDA7CisgIGNmZy5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzFfYmxv
Y2tzID0gMDsKKyAgY2ZnLmVybGUubnVtX3NlY3Rpb25zID0gMjsKKyAgRVhQRUNUX0VRKEVjaG9D
YW5jZWxsZXIzQ29uZmlnOjpWYWxpZGF0ZSgmY2ZnKSwgdHJ1ZSk7CisgIHN0ZDo6YXJyYXk8Zmxv
YXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gYXZlcmFnZV9lcmxlOworICBhdmVyYWdlX2VybGUuZmls
bChjZmcuZXJsZS5tYXhfbCk7CisgIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3IgcyhjZmcp
OworICBUZXN0SW5wdXRzIGlucHV0cyhjZmcpOworICBmb3IgKHNpemVfdCBuID0gMDsgbiA8IDIw
MDsgKytuKSB7CisgICAgaW5wdXRzLlVwZGF0ZSgpOworICAgIHMuVXBkYXRlKGlucHV0cy5HZXRS
ZW5kZXJCdWZmZXIoKSwgaW5wdXRzLkdldEgyKCksIGlucHV0cy5HZXRYMigpLAorICAgICAgICAg
ICAgIGlucHV0cy5HZXRZMigpLCBpbnB1dHMuR2V0RTIoKSwgYXZlcmFnZV9lcmxlLCB0cnVlKTsK
KyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9za2V3X2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdfZXN0aW1hdG9yLmNj
CmluZGV4IDMxMGU0ZTlkZDFkYTIyYzU0MWJhM2EwNzA4YjRhNDRmZWY0YjA1ZmIuLmEyMDk5ZmNk
MDEzMDFjMmI5NTg0ODM2OGE3MzQxZmNkNmQ5ZTc3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3NrZXdfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdfZXN0aW1hdG9y
LmNjCkBAIC0xMCw3ICsxMCw2IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvc2tld19lc3RpbWF0b3IuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRl
IDxudW1lcmljPgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvc2tld19lc3RpbWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdfZXN0aW1hdG9yLmgK
aW5kZXggZmYyNTI2MDI1YTg3ZmFhZmFmZTY3ZGQwOWMzMGI5Zjc0N2M1MzViYy4uYjA5NDZkODMz
ZTU0M2E4NzJhNmFiMjNjN2RkZjAyOGQ5ZWNjYTY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvc2tld19lc3RpbWF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9za2V3X2VzdGltYXRvci5o
CkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMz
X1NLRVdfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMz
X1NLRVdfRVNUSU1BVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9zdGF0aW9uYXJpdHlfZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3Rh
dGlvbmFyaXR5X2VzdGltYXRvci5jYwppbmRleCBlZmVhYmYxMTE3ZjIwOThmNDM0ZjcyODk5NzY1
N2E2NDUyOWU4OGM0Li4yNTEwMGJmZDRhZjU2ZTc0NWM5NWNmZDZkODY2NzZkZjNjN2MyMDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdGF0aW9uYXJpdHlfZXN0aW1hdG9yLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3N0YXRpb25hcml0eV9lc3RpbWF0b3IuY2MKQEAgLTE0LDYgKzE0LDcg
QEAKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkv
YXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Fl
YzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVj
dG9yX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5n
L2FwbV9kYXRhX2R1bXBlci5oIgpAQCAtNDAsNyArNDEsNiBAQCB2b2lkIFN0YXRpb25hcml0eUVz
dGltYXRvcjo6UmVzZXQoKSB7CiAgIG5vaXNlXy5SZXNldCgpOwogICBoYW5nb3ZlcnNfLmZpbGwo
MCk7CiAgIHN0YXRpb25hcml0eV9mbGFnc18uZmlsbChmYWxzZSk7Ci0gIHJlbmRlcl9yZXZlcmJf
LlJlc2V0KCk7CiB9CiAKIC8vIFVwZGF0ZSBqdXN0IHRoZSBub2lzZSBlc3RpbWF0b3IuIFVzZWZ1
bGwgdW50aWwgdGhlIGRlbGF5IGlzIGtub3duCkBAIC01NCw5ICs1NCw5IEBAIHZvaWQgU3RhdGlv
bmFyaXR5RXN0aW1hdG9yOjpVcGRhdGVOb2lzZUVzdGltYXRvcigKIAogdm9pZCBTdGF0aW9uYXJp
dHlFc3RpbWF0b3I6OlVwZGF0ZVN0YXRpb25hcml0eUZsYWdzKAogICAgIGNvbnN0IFZlY3RvckJ1
ZmZlciYgc3BlY3RydW1fYnVmZmVyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBy
ZW5kZXJfcmV2ZXJiX2NvbnRyaWJ1dGlvbl9zcGVjdHJ1bSwKICAgICBpbnQgaWR4X2N1cnJlbnQs
Ci0gICAgaW50IG51bV9sb29rYWhlYWQsCi0gICAgZmxvYXQgcmV2ZXJiX2RlY2F5KSB7CisgICAg
aW50IG51bV9sb29rYWhlYWQpIHsKICAgc3RkOjphcnJheTxpbnQsIGtXaW5kb3dMZW5ndGg+IGlu
ZGV4ZXM7CiAgIGludCBudW1fbG9va2FoZWFkX2JvdW5kZWQgPSBzdGQ6Om1pbihudW1fbG9va2Fo
ZWFkLCBrV2luZG93TGVuZ3RoIC0gMSk7CiAgIGludCBpZHggPSBpZHhfY3VycmVudDsKQEAgLTc5
LDEyICs3OSw5IEBAIHZvaWQgU3RhdGlvbmFyaXR5RXN0aW1hdG9yOjpVcGRhdGVTdGF0aW9uYXJp
dHlGbGFncygKICAgICAgIHNwZWN0cnVtX2J1ZmZlci5EZWNJbmRleChpbmRleGVzW2tXaW5kb3dM
ZW5ndGggLSAxXSksCiAgICAgICBzcGVjdHJ1bV9idWZmZXIuT2Zmc2V0SW5kZXgoaWR4X2N1cnJl
bnQsIC0obnVtX2xvb2thaGVhZF9ib3VuZGVkICsgMSkpKTsKIAotICBpbnQgaWR4X3Bhc3QgPSBz
cGVjdHJ1bV9idWZmZXIuSW5jSW5kZXgoaWR4X2N1cnJlbnQpOwotICByZW5kZXJfcmV2ZXJiXy5V
cGRhdGVSZXZlcmJDb250cmlidXRpb25zTm9GcmVxU2hhcGluZygKLSAgICAgIHNwZWN0cnVtX2J1
ZmZlci5idWZmZXJbaWR4X3Bhc3RdLCAxLjBmLCByZXZlcmJfZGVjYXkpOwogICBmb3IgKHNpemVf
dCBrID0gMDsgayA8IHN0YXRpb25hcml0eV9mbGFnc18uc2l6ZSgpOyArK2spIHsKICAgICBzdGF0
aW9uYXJpdHlfZmxhZ3NfW2tdID0gRXN0aW1hdGVCYW5kU3RhdGlvbmFyaXR5KAotICAgICAgICBz
cGVjdHJ1bV9idWZmZXIsIHJlbmRlcl9yZXZlcmJfLkdldFBvd2VyU3BlY3RydW0oKSwgaW5kZXhl
cywgayk7CisgICAgICAgIHNwZWN0cnVtX2J1ZmZlciwgcmVuZGVyX3JldmVyYl9jb250cmlidXRp
b25fc3BlY3RydW0sIGluZGV4ZXMsIGspOwogICB9CiAgIFVwZGF0ZUhhbmdvdmVyKCk7CiAgIFNt
b290aFN0YXRpb25hcnlQZXJGcmVxKCk7CkBAIC0xMDIsNyArOTksNyBAQCBib29sIFN0YXRpb25h
cml0eUVzdGltYXRvcjo6SXNCbG9ja1N0YXRpb25hcnkoKSBjb25zdCB7CiAKIGJvb2wgU3RhdGlv
bmFyaXR5RXN0aW1hdG9yOjpFc3RpbWF0ZUJhbmRTdGF0aW9uYXJpdHkoCiAgICAgY29uc3QgVmVj
dG9yQnVmZmVyJiBzcGVjdHJ1bV9idWZmZXIsCi0gICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwg
a0ZmdExlbmd0aEJ5MlBsdXMxPiYgcmV2ZXJiLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZs
b2F0PiByZXZlcmIsCiAgICAgY29uc3Qgc3RkOjphcnJheTxpbnQsIGtXaW5kb3dMZW5ndGg+JiBp
bmRleGVzLAogICAgIHNpemVfdCBiYW5kKSBjb25zdCB7CiAgIGNvbnN0ZXhwciBmbG9hdCBrVGhy
U3RhdGlvbmFyaXR5ID0gMTAuZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N0YXRpb25h
cml0eV9lc3RpbWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N0YXRpb25hcml0eV9lc3RpbWF0b3Iu
aAppbmRleCBlMmM1YTYyNTM0NzFmODQ4NmYxMWJlZTdjNjE5Mzc3NGM1NGFlNmQ5Li43MDQ4NTlh
MWZlNzgzYzU5YzFiOGVlZjc5NDYxYzU1MGYxOWU0MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9zdGF0aW9uYXJpdHlfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3RhdGlv
bmFyaXR5X2VzdGltYXRvci5oCkBAIC0xMSwxOCArMTEsMTkgQEAKICNpZm5kZWYgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0FFQzNfU1RBVElPTkFSSVRZX0VTVElNQVRPUl9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TVEFUSU9OQVJJVFlfRVNUSU1BVE9SX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxtZW1vcnk+
Ci0jaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiICAvLyBrRmZ0
TGVuZ3RoQnkyUGx1czEuLi4KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZXZlcmJfbW9kZWwuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My92ZWN0b3JfYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCiBjbGFzcyBBcG1EYXRhRHVtcGVyOworc3RydWN0IFZlY3RvckJ1ZmZl
cjsKIAogY2xhc3MgU3RhdGlvbmFyaXR5RXN0aW1hdG9yIHsKICBwdWJsaWM6CkBAIC0zNywxMCAr
MzgsMTEgQEAgY2xhc3MgU3RhdGlvbmFyaXR5RXN0aW1hdG9yIHsKIAogICAvLyBVcGRhdGUgdGhl
IGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgY3VycmVudCBmcmFtZSBpcyBzdGF0aW9uYXJ5
LiBGb3IKICAgLy8gZ2V0dGluZyBhIG1vcmUgcm9idXN0IGVzdGltYXRpb24sIGl0IGxvb2tzIGF0
IGZ1dHVyZSBhbmQvb3IgcGFzdCBmcmFtZXMuCi0gIHZvaWQgVXBkYXRlU3RhdGlvbmFyaXR5Rmxh
Z3MoY29uc3QgVmVjdG9yQnVmZmVyJiBzcGVjdHJ1bV9idWZmZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGlkeF9jdXJyZW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBudW1fbG9va2FoZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IHJldmVyYl9kZWNheSk7CisgIHZvaWQgVXBkYXRlU3RhdGlvbmFyaXR5RmxhZ3MoCisg
ICAgICBjb25zdCBWZWN0b3JCdWZmZXImIHNwZWN0cnVtX2J1ZmZlciwKKyAgICAgIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IGZsb2F0PiByZW5kZXJfcmV2ZXJiX2NvbnRyaWJ1dGlvbl9zcGVjdHJ1bSwK
KyAgICAgIGludCBpZHhfY3VycmVudCwKKyAgICAgIGludCBudW1fbG9va2FoZWFkKTsKIAogICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgYmFuZCBpcyBzdGF0aW9uYXJ5LgogICBib29s
IElzQmFuZFN0YXRpb25hcnkoc2l6ZV90IGJhbmQpIGNvbnN0IHsKQEAgLTU3LDExICs1OSwxMCBA
QCBjbGFzcyBTdGF0aW9uYXJpdHlFc3RpbWF0b3IgewogCiAgIC8vIEdldCBhbiBlc3RpbWF0aW9u
IG9mIHRoZSBzdGF0aW9uYXJpdHkgZm9yIHRoZSBjdXJyZW50IGJhbmQgYnkgbG9va2luZwogICAv
LyBhdCB0aGUgcGFzdC9wcmVzZW50L2Z1dHVyZSBhdmFpbGFibGUgZGF0YS4KLSAgYm9vbCBFc3Rp
bWF0ZUJhbmRTdGF0aW9uYXJpdHkoCi0gICAgICBjb25zdCBWZWN0b3JCdWZmZXImIHNwZWN0cnVt
X2J1ZmZlciwKLSAgICAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVz
MT4mIHJldmVyYiwKLSAgICAgIGNvbnN0IHN0ZDo6YXJyYXk8aW50LCBrV2luZG93TGVuZ3RoPiYg
aW5kZXhlcywKLSAgICAgIHNpemVfdCBiYW5kKSBjb25zdDsKKyAgYm9vbCBFc3RpbWF0ZUJhbmRT
dGF0aW9uYXJpdHkoY29uc3QgVmVjdG9yQnVmZmVyJiBzcGVjdHJ1bV9idWZmZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZXZl
cmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YXJyYXk8aW50
LCBrV2luZG93TGVuZ3RoPiYgaW5kZXhlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGJhbmQpIGNvbnN0OwogCiAgIC8vIFRydWUgaWYgYWxsIGJhbmRzIGF0IHRoZSBj
dXJyZW50IHBvaW50IGFyZSBzdGF0aW9uYXJ5LgogICBib29sIEFyZUFsbEJhbmRzU3RhdGlvbmFy
eSgpOwpAQCAtMTExLDcgKzExMiw2IEBAIGNsYXNzIFN0YXRpb25hcml0eUVzdGltYXRvciB7CiAg
IE5vaXNlU3BlY3RydW0gbm9pc2VfOwogICBzdGQ6OmFycmF5PGludCwga0ZmdExlbmd0aEJ5MlBs
dXMxPiBoYW5nb3ZlcnNfOwogICBzdGQ6OmFycmF5PGJvb2wsIGtGZnRMZW5ndGhCeTJQbHVzMT4g
c3RhdGlvbmFyaXR5X2ZsYWdzXzsKLSAgUmV2ZXJiTW9kZWwgcmVuZGVyX3JldmVyYl87CiB9Owog
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJi
YW5kX2VybGVfZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3ViYmFuZF9lcmxlX2VzdGlt
YXRvci5jYwppbmRleCBkOGNiN2E3NjMxNWYyNjYyNGExMDY1NDBkNzVlNjlhMzljZWNkNzI1Li45
NDUzZTU3MzlmMGQ2YTM5MTQzMDg4NzM5YjMxMTg3NWIzNTc5MmI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9zdWJiYW5kX2VybGVfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3N1YmJhbmRfZXJsZV9lc3RpbWF0b3IuY2MKQEAgLTExLDM1ICsxMSwzOCBAQAogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YmJhbmRfZXJsZV9lc3RpbWF0b3IuaCIK
IAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KIAotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLSNpbmNsdWRlICJh
cGkvYXJyYXlfdmlldy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2FlYzNfY29tbW9uLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dp
bmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKICNpbmNsdWRlICJzeXN0ZW1f
d3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAog
bmFtZXNwYWNlIHsKLWNvbnN0ZXhwciBpbnQga1BvaW50c1RvQWNjdW11bGF0ZSA9IDY7CisKIGNv
bnN0ZXhwciBmbG9hdCBrWDJCYW5kRW5lcmd5VGhyZXNob2xkID0gNDQwMTUwNjguMGY7Ci1jb25z
dGV4cHIgaW50IGtFcmxlSG9sZCA9IDEwMDsKLWNvbnN0ZXhwciBpbnQga0Jsb2Nrc0Zvck9uc2V0
RGV0ZWN0aW9uID0ga0VybGVIb2xkICsgMTUwOworY29uc3RleHByIGludCBrQmxvY2tzVG9Ib2xk
RXJsZSA9IDEwMDsKK2NvbnN0ZXhwciBpbnQga0Jsb2Nrc0Zvck9uc2V0RGV0ZWN0aW9uID0ga0Js
b2Nrc1RvSG9sZEVybGUgKyAxNTA7Citjb25zdGV4cHIgaW50IGtQb2ludHNUb0FjY3VtdWxhdGUg
PSA2OwogCiBib29sIEVuYWJsZUFkYXB0RXJsZU9uTG93UmVuZGVyKCkgewogICByZXR1cm4gIWZp
ZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzQWRhcHRFcmxlT25Mb3dSZW5kZXJLaWxs
U3dpdGNoIik7CiB9CiAKK3N0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gU2V0
TWF4RXJsZUJhbmRzKGZsb2F0IG1heF9lcmxlX2wsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBtYXhfZXJsZV9oKSB7CisgIHN0ZDo6
YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gbWF4X2VybGU7CisgIHN0ZDo6ZmlsbCht
YXhfZXJsZS5iZWdpbigpLCBtYXhfZXJsZS5iZWdpbigpICsga0ZmdExlbmd0aEJ5MiAvIDIsIG1h
eF9lcmxlX2wpOworICBzdGQ6OmZpbGwobWF4X2VybGUuYmVnaW4oKSArIGtGZnRMZW5ndGhCeTIg
LyAyLCBtYXhfZXJsZS5lbmQoKSwgbWF4X2VybGVfaCk7CisgIHJldHVybiBtYXhfZXJsZTsKK30K
KwogfSAgLy8gbmFtZXNwYWNlCiAKLVN1YmJhbmRFcmxlRXN0aW1hdG9yOjpTdWJiYW5kRXJsZUVz
dGltYXRvcihmbG9hdCBtaW5fZXJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBtYXhfZXJsZV9sZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCBtYXhfZXJsZV9oZikKLSAgICA6IG1pbl9lcmxlXyhtaW5f
ZXJsZSksCi0gICAgICBtYXhfZXJsZV9sZl8obWF4X2VybGVfbGYpLAotICAgICAgbWF4X2VybGVf
aGZfKG1heF9lcmxlX2hmKSwKK1N1YmJhbmRFcmxlRXN0aW1hdG9yOjpTdWJiYW5kRXJsZUVzdGlt
YXRvcihjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKQorICAgIDogbWluX2VybGVf
KGNvbmZpZy5lcmxlLm1pbiksCisgICAgICBtYXhfZXJsZV8oU2V0TWF4RXJsZUJhbmRzKGNvbmZp
Zy5lcmxlLm1heF9sLCBjb25maWcuZXJsZS5tYXhfaCkpLAogICAgICAgYWRhcHRfb25fbG93X3Jl
bmRlcl8oRW5hYmxlQWRhcHRFcmxlT25Mb3dSZW5kZXIoKSkgewogICBSZXNldCgpOwogfQpAQCAt
NDksOCArNTIsOSBAQCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6flN1YmJhbmRFcmxlRXN0aW1hdG9y
KCkgPSBkZWZhdWx0Owogdm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6UmVzZXQoKSB7CiAgIGVy
bGVfLmZpbGwobWluX2VybGVfKTsKICAgZXJsZV9vbnNldHNfLmZpbGwobWluX2VybGVfKTsKLSAg
aG9sZF9jb3VudGVyc18uZmlsbCgwKTsKICAgY29taW5nX29uc2V0Xy5maWxsKHRydWUpOworICBo
b2xkX2NvdW50ZXJzXy5maWxsKDApOworICBSZXNldEFjY3VtdWxhdGVkU3BlY3RyYSgpOwogfQog
CiB2b2lkIFN1YmJhbmRFcmxlRXN0aW1hdG9yOjpVcGRhdGUocnRjOjpBcnJheVZpZXc8Y29uc3Qg
ZmxvYXQ+IFgyLApAQCAtNjIsMTAgKzY2LDggQEAgdm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6
VXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwKICAgICAvLyBOb3RlIHRoYXQg
dGhlIHVzZSBvZiB0aGUgY29udmVyZ2VkX2ZpbHRlciBmbGFnIGFscmVhZHkgaW1wb3NlZAogICAg
IC8vIGEgbWluaW11bSBvZiB0aGUgZXJsZSB0aGF0IGNhbiBiZSBlc3RpbWF0ZWQgYXMgdGhhdCBm
bGFnIHdvdWxkCiAgICAgLy8gYmUgZmFsc2UgaWYgdGhlIGZpbHRlciBpcyBwZXJmb3JtaW5nIHBv
b3JseS4KLSAgICBjb25zdGV4cHIgc2l6ZV90IGtGZnRMZW5ndGhCeTQgPSBrRmZ0TGVuZ3RoQnky
IC8gMjsKLSAgICBVcGRhdGVCYW5kcyhYMiwgWTIsIEUyLCAxLCBrRmZ0TGVuZ3RoQnk0LCBtYXhf
ZXJsZV9sZl8sIG9uc2V0X2RldGVjdGlvbik7Ci0gICAgVXBkYXRlQmFuZHMoWDIsIFkyLCBFMiwg
a0ZmdExlbmd0aEJ5NCwga0ZmdExlbmd0aEJ5MiwgbWF4X2VybGVfaGZfLAotICAgICAgICAgICAg
ICAgIG9uc2V0X2RldGVjdGlvbik7CisgICAgVXBkYXRlQWNjdW11bGF0ZWRTcGVjdHJhKFgyLCBZ
MiwgRTIpOworICAgIFVwZGF0ZUJhbmRzKG9uc2V0X2RldGVjdGlvbik7CiAgIH0KIAogICBpZiAo
b25zZXRfZGV0ZWN0aW9uKSB7CkBAIC03OCw1MyArODAsNDUgQEAgdm9pZCBTdWJiYW5kRXJsZUVz
dGltYXRvcjo6VXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwKIAogdm9pZCBT
dWJiYW5kRXJsZUVzdGltYXRvcjo6RHVtcCgKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8QXBt
RGF0YUR1bXBlcj4mIGRhdGFfZHVtcGVyKSBjb25zdCB7Ci0gIGRhdGFfZHVtcGVyLT5EdW1wUmF3
KCJhZWMzX2VybGUiLCBFcmxlKCkpOwogICBkYXRhX2R1bXBlci0+RHVtcFJhdygiYWVjM19lcmxl
X29uc2V0IiwgRXJsZU9uc2V0cygpKTsKIH0KIAotdm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6
VXBkYXRlQmFuZHMocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFgyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFky
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8
Y29uc3QgZmxvYXQ+IEUyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHN0b3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBt
YXhfZXJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgb25z
ZXRfZGV0ZWN0aW9uKSB7Ci0gIGF1dG8gZXJsZV9iYW5kX3VwZGF0ZSA9IFtdKGZsb2F0IGVybGVf
YmFuZCwgZmxvYXQgbmV3X2VybGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
bG93X3JlbmRlcl9lbmVyZ3ksIGZsb2F0IGFscGhhX2luYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgYWxwaGFfZGVjLCBmbG9hdCBtaW5fZXJsZSwgZmxvYXQgbWF4X2VybGUp
IHsKLSAgICBpZiAobmV3X2VybGUgPCBlcmxlX2JhbmQgJiYgbG93X3JlbmRlcl9lbmVyZ3kpIHsK
LSAgICAgIC8vIERlY3JlYXNlcyBhcmUgbm90IGFsbG93ZWQgaWYgbG93IHJlbmRlciBlbmVyZ3kg
c2lnbmFscyB3ZXJlIHVzZWQgZm9yCi0gICAgICAvLyB0aGUgZXJsZSBjb21wdXRhdGlvbi4KLSAg
ICAgIHJldHVybiBlcmxlX2JhbmQ7Cit2b2lkIFN1YmJhbmRFcmxlRXN0aW1hdG9yOjpVcGRhdGVC
YW5kcyhib29sIG9uc2V0X2RldGVjdGlvbikgeworICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVu
Z3RoQnkyPiBuZXdfZXJsZTsKKyAgc3RkOjphcnJheTxib29sLCBrRmZ0TGVuZ3RoQnkyPiBpc19l
cmxlX3VwZGF0ZWQ7CisgIGlzX2VybGVfdXBkYXRlZC5maWxsKGZhbHNlKTsKKworICBmb3IgKHNp
emVfdCBrID0gMTsgayA8IGtGZnRMZW5ndGhCeTI7ICsraykgeworICAgIGlmIChhY2N1bV9zcGVj
dHJhXy5udW1fcG9pbnRzX1trXSA9PSBrUG9pbnRzVG9BY2N1bXVsYXRlICYmCisgICAgICAgIGFj
Y3VtX3NwZWN0cmFfLkUyX1trXSA+IDAuZikgeworICAgICAgbmV3X2VybGVba10gPSBhY2N1bV9z
cGVjdHJhXy5ZMl9ba10gLyBhY2N1bV9zcGVjdHJhXy5FMl9ba107CisgICAgICBpc19lcmxlX3Vw
ZGF0ZWRba10gPSB0cnVlOwogICAgIH0KLSAgICBmbG9hdCBhbHBoYSA9IG5ld19lcmxlID4gZXJs
ZV9iYW5kID8gYWxwaGFfaW5jIDogYWxwaGFfZGVjOwotICAgIGZsb2F0IGVybGVfYmFuZF9vdXQg
PSBlcmxlX2JhbmQ7Ci0gICAgZXJsZV9iYW5kX291dCA9IGVybGVfYmFuZCArIGFscGhhICogKG5l
d19lcmxlIC0gZXJsZV9iYW5kKTsKLSAgICBlcmxlX2JhbmRfb3V0ID0gcnRjOjpTYWZlQ2xhbXAo
ZXJsZV9iYW5kX291dCwgbWluX2VybGUsIG1heF9lcmxlKTsKLSAgICByZXR1cm4gZXJsZV9iYW5k
X291dDsKLSAgfTsKLQotICBmb3IgKHNpemVfdCBrID0gc3RhcnQ7IGsgPCBzdG9wOyArK2spIHsK
LSAgICBpZiAoYWRhcHRfb25fbG93X3JlbmRlcl8gfHwgWDJba10gPiBrWDJCYW5kRW5lcmd5VGhy
ZXNob2xkKSB7Ci0gICAgICBib29sIGxvd19yZW5kZXJfZW5lcmd5ID0gZmFsc2U7Ci0gICAgICBh
YnNsOjpvcHRpb25hbDxmbG9hdD4gbmV3X2VybGUgPSBpbnN0YW50YW5lb3VzX2VybGVfLlVwZGF0
ZSgKLSAgICAgICAgICBYMltrXSwgWTJba10sIEUyW2tdLCBrLCAmbG93X3JlbmRlcl9lbmVyZ3kp
OwotICAgICAgaWYgKG5ld19lcmxlKSB7Ci0gICAgICAgIFJUQ19EQ0hFQ0soYWRhcHRfb25fbG93
X3JlbmRlcl8gfHwgIWxvd19yZW5kZXJfZW5lcmd5KTsKLSAgICAgICAgaWYgKG9uc2V0X2RldGVj
dGlvbiAmJiAhbG93X3JlbmRlcl9lbmVyZ3kpIHsKLSAgICAgICAgICBpZiAoY29taW5nX29uc2V0
X1trXSkgewotICAgICAgICAgICAgY29taW5nX29uc2V0X1trXSA9IGZhbHNlOwotICAgICAgICAg
ICAgZXJsZV9vbnNldHNfW2tdID0gZXJsZV9iYW5kX3VwZGF0ZSgKLSAgICAgICAgICAgICAgICBl
cmxlX29uc2V0c19ba10sIG5ld19lcmxlLnZhbHVlKCksIGxvd19yZW5kZXJfZW5lcmd5LCAwLjE1
ZiwKLSAgICAgICAgICAgICAgICAwLjNmLCBtaW5fZXJsZV8sIG1heF9lcmxlKTsKLSAgICAgICAg
ICB9Ci0gICAgICAgICAgaG9sZF9jb3VudGVyc19ba10gPSBrQmxvY2tzRm9yT25zZXREZXRlY3Rp
b247CisgIH0KKworICBpZiAob25zZXRfZGV0ZWN0aW9uKSB7CisgICAgZm9yIChzaXplX3QgayA9
IDE7IGsgPCBrRmZ0TGVuZ3RoQnkyOyArK2spIHsKKyAgICAgIGlmIChpc19lcmxlX3VwZGF0ZWRb
a10gJiYgIWFjY3VtX3NwZWN0cmFfLmxvd19yZW5kZXJfZW5lcmd5X1trXSkgeworICAgICAgICBp
ZiAoY29taW5nX29uc2V0X1trXSkgeworICAgICAgICAgIGNvbWluZ19vbnNldF9ba10gPSBmYWxz
ZTsKKyAgICAgICAgICBmbG9hdCBhbHBoYSA9IG5ld19lcmxlW2tdIDwgZXJsZV9vbnNldHNfW2td
ID8gMC4zZiA6IDAuMTVmOworICAgICAgICAgIGVybGVfb25zZXRzX1trXSA9IHJ0Yzo6U2FmZUNs
YW1wKAorICAgICAgICAgICAgICBlcmxlX29uc2V0c19ba10gKyBhbHBoYSAqIChuZXdfZXJsZVtr
XSAtIGVybGVfb25zZXRzX1trXSksCisgICAgICAgICAgICAgIG1pbl9lcmxlXywgbWF4X2VybGVf
W2tdKTsKICAgICAgICAgfQorICAgICAgICBob2xkX2NvdW50ZXJzX1trXSA9IGtCbG9ja3NGb3JP
bnNldERldGVjdGlvbjsKKyAgICAgIH0KKyAgICB9CisgIH0KIAotICAgICAgICBlcmxlX1trXSA9
Ci0gICAgICAgICAgICBlcmxlX2JhbmRfdXBkYXRlKGVybGVfW2tdLCBuZXdfZXJsZS52YWx1ZSgp
LCBsb3dfcmVuZGVyX2VuZXJneSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wNWYs
IDAuMWYsIG1pbl9lcmxlXywgbWF4X2VybGUpOworICBmb3IgKHNpemVfdCBrID0gMTsgayA8IGtG
ZnRMZW5ndGhCeTI7ICsraykgeworICAgIGlmIChpc19lcmxlX3VwZGF0ZWRba10pIHsKKyAgICAg
IGZsb2F0IGFscGhhID0gMC4wNWY7CisgICAgICBpZiAobmV3X2VybGVba10gPCBlcmxlX1trXSkg
eworICAgICAgICBhbHBoYSA9IGFjY3VtX3NwZWN0cmFfLmxvd19yZW5kZXJfZW5lcmd5X1trXSA/
IDAuZiA6IDAuMWY7CiAgICAgICB9CisgICAgICBlcmxlX1trXSA9IHJ0Yzo6U2FmZUNsYW1wKGVy
bGVfW2tdICsgYWxwaGEgKiAobmV3X2VybGVba10gLSBlcmxlX1trXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1pbl9lcmxlXywgbWF4X2VybGVfW2tdKTsKICAgICB9CiAgIH0K
IH0KQEAgLTEzMiw3ICsxMjYsNyBAQCB2b2lkIFN1YmJhbmRFcmxlRXN0aW1hdG9yOjpVcGRhdGVC
YW5kcyhydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWDIsCiB2b2lkIFN1YmJhbmRFcmxlRXN0
aW1hdG9yOjpEZWNyZWFzZUVybGVQZXJCYW5kRm9yTG93UmVuZGVyU2lnbmFscygpIHsKICAgZm9y
IChzaXplX3QgayA9IDE7IGsgPCBrRmZ0TGVuZ3RoQnkyOyArK2spIHsKICAgICBob2xkX2NvdW50
ZXJzX1trXS0tOwotICAgIGlmIChob2xkX2NvdW50ZXJzX1trXSA8PSAoa0Jsb2Nrc0Zvck9uc2V0
RGV0ZWN0aW9uIC0ga0VybGVIb2xkKSkgeworICAgIGlmIChob2xkX2NvdW50ZXJzX1trXSA8PSAo
a0Jsb2Nrc0Zvck9uc2V0RGV0ZWN0aW9uIC0ga0Jsb2Nrc1RvSG9sZEVybGUpKSB7CiAgICAgICBp
ZiAoZXJsZV9ba10gPiBlcmxlX29uc2V0c19ba10pIHsKICAgICAgICAgZXJsZV9ba10gPSBzdGQ6
Om1heChlcmxlX29uc2V0c19ba10sIDAuOTdmICogZXJsZV9ba10pOwogICAgICAgICBSVENfRENI
RUNLX0xFKG1pbl9lcmxlXywgZXJsZV9ba10pOwpAQCAtMTQ1LDQzICsxMzksNTUgQEAgdm9pZCBT
dWJiYW5kRXJsZUVzdGltYXRvcjo6RGVjcmVhc2VFcmxlUGVyQmFuZEZvckxvd1JlbmRlclNpZ25h
bHMoKSB7CiAgIH0KIH0KIAotU3ViYmFuZEVybGVFc3RpbWF0b3I6OkVybGVJbnN0YW50YW5lb3Vz
OjpFcmxlSW5zdGFudGFuZW91cygpIHsKLSAgUmVzZXQoKTsKK3ZvaWQgU3ViYmFuZEVybGVFc3Rp
bWF0b3I6OlJlc2V0QWNjdW11bGF0ZWRTcGVjdHJhKCkgeworICBhY2N1bV9zcGVjdHJhXy5ZMl8u
ZmlsbCgwLmYpOworICBhY2N1bV9zcGVjdHJhXy5FMl8uZmlsbCgwLmYpOworICBhY2N1bV9zcGVj
dHJhXy5udW1fcG9pbnRzXy5maWxsKDApOworICBhY2N1bV9zcGVjdHJhXy5sb3dfcmVuZGVyX2Vu
ZXJneV8uZmlsbChmYWxzZSk7CiB9CiAKLVN1YmJhbmRFcmxlRXN0aW1hdG9yOjpFcmxlSW5zdGFu
dGFuZW91czo6fkVybGVJbnN0YW50YW5lb3VzKCkgPSBkZWZhdWx0OwotCi1hYnNsOjpvcHRpb25h
bDxmbG9hdD4gU3ViYmFuZEVybGVFc3RpbWF0b3I6OkVybGVJbnN0YW50YW5lb3VzOjpVcGRhdGUo
Ci0gICAgZmxvYXQgWDIsCi0gICAgZmxvYXQgWTIsCi0gICAgZmxvYXQgRTIsCi0gICAgc2l6ZV90
IGJhbmQsCi0gICAgYm9vbCogbG93X3JlbmRlcl9lbmVyZ3kpIHsKLSAgYWJzbDo6b3B0aW9uYWw8
ZmxvYXQ+IGVybGVfaW5zdGFudGFuZW91cyA9IGFic2w6Om51bGxvcHQ7Ci0gIFJUQ19EQ0hFQ0tf
TFQoYmFuZCwga0ZmdExlbmd0aEJ5MlBsdXMxKTsKLSAgWTJfYWN1bV9bYmFuZF0gKz0gWTI7Ci0g
IEUyX2FjdW1fW2JhbmRdICs9IEUyOwotICBsb3dfcmVuZGVyX2VuZXJneV9bYmFuZF0gPQotICAg
ICAgbG93X3JlbmRlcl9lbmVyZ3lfW2JhbmRdIHx8IFgyIDwga1gyQmFuZEVuZXJneVRocmVzaG9s
ZDsKLSAgaWYgKCsrbnVtX3BvaW50c19bYmFuZF0gPT0ga1BvaW50c1RvQWNjdW11bGF0ZSkgewot
ICAgIGlmIChFMl9hY3VtX1tiYW5kXSkgewotICAgICAgZXJsZV9pbnN0YW50YW5lb3VzID0gWTJf
YWN1bV9bYmFuZF0gLyBFMl9hY3VtX1tiYW5kXTsKK3ZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6
OlVwZGF0ZUFjY3VtdWxhdGVkU3BlY3RyYSgKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9h
dD4gWDIsCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFkyLAorICAgIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IGZsb2F0PiBFMikgeworICBhdXRvJiBzdCA9IGFjY3VtX3NwZWN0cmFfOwor
ICBpZiAoYWRhcHRfb25fbG93X3JlbmRlcl8pIHsKKyAgICBpZiAoc3QubnVtX3BvaW50c19bMF0g
PT0ga1BvaW50c1RvQWNjdW11bGF0ZSkgeworICAgICAgc3QubnVtX3BvaW50c19bMF0gPSAwOwor
ICAgICAgc3QuWTJfLmZpbGwoMC5mKTsKKyAgICAgIHN0LkUyXy5maWxsKDAuZik7CisgICAgICBz
dC5sb3dfcmVuZGVyX2VuZXJneV8uZmlsbChmYWxzZSk7CisgICAgfQorICAgIHN0ZDo6dHJhbnNm
b3JtKFkyLmJlZ2luKCksIFkyLmVuZCgpLCBzdC5ZMl8uYmVnaW4oKSwgc3QuWTJfLmJlZ2luKCks
CisgICAgICAgICAgICAgICAgICAgc3RkOjpwbHVzPGZsb2F0PigpKTsKKyAgICBzdGQ6OnRyYW5z
Zm9ybShFMi5iZWdpbigpLCBFMi5lbmQoKSwgc3QuRTJfLmJlZ2luKCksIHN0LkUyXy5iZWdpbigp
LAorICAgICAgICAgICAgICAgICAgIHN0ZDo6cGx1czxmbG9hdD4oKSk7CisKKyAgICBmb3IgKHNp
emVfdCBrID0gMDsgayA8IFgyLnNpemUoKTsgKytrKSB7CisgICAgICBzdC5sb3dfcmVuZGVyX2Vu
ZXJneV9ba10gPQorICAgICAgICAgIHN0Lmxvd19yZW5kZXJfZW5lcmd5X1trXSB8fCBYMltrXSA8
IGtYMkJhbmRFbmVyZ3lUaHJlc2hvbGQ7CisgICAgfQorICAgIHN0Lm51bV9wb2ludHNfWzBdKys7
CisgICAgc3QubnVtX3BvaW50c18uZmlsbChzdC5udW1fcG9pbnRzX1swXSk7CisKKyAgfSBlbHNl
IHsKKyAgICAvLyBUaGUgdXBkYXRlIGlzIGFsd2F5cyBkb25lIHVzaW5nIGhpZ2ggcmVuZGVyIGVu
ZXJneSBzaWduYWxzIGFuZAorICAgIC8vIHRoZXJlZm9yZSB0aGUgZmllbGQgYWNjdW1fc3BlY3Ry
YV8ubG93X3JlbmRlcl9lbmVyZ3lfIGRvZXMgbm90IG5lZWQgdG8KKyAgICAvLyBiZSBtb2RpZmll
ZC4KKyAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IFgyLnNpemUoKTsgKytrKSB7CisgICAgICBp
ZiAoWDJba10gPiBrWDJCYW5kRW5lcmd5VGhyZXNob2xkKSB7CisgICAgICAgIGlmIChzdC5udW1f
cG9pbnRzX1trXSA9PSBrUG9pbnRzVG9BY2N1bXVsYXRlKSB7CisgICAgICAgICAgc3QuWTJfW2td
ID0gMC5mOworICAgICAgICAgIHN0LkUyX1trXSA9IDAuZjsKKyAgICAgICAgICBzdC5udW1fcG9p
bnRzX1trXSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgc3QuWTJfW2tdICs9IFkyW2tdOworICAg
ICAgICBzdC5FMl9ba10gKz0gRTJba107CisgICAgICAgIHN0Lm51bV9wb2ludHNfW2tdKys7Cisg
ICAgICB9CisgICAgICBSVENfRENIRUNLX0VRKHN0Lmxvd19yZW5kZXJfZW5lcmd5X1trXSwgZmFs
c2UpOwogICAgIH0KLSAgICAqbG93X3JlbmRlcl9lbmVyZ3kgPSBsb3dfcmVuZGVyX2VuZXJneV9b
YmFuZF07Ci0gICAgbnVtX3BvaW50c19bYmFuZF0gPSAwOwotICAgIFkyX2FjdW1fW2JhbmRdID0g
MC5mOwotICAgIEUyX2FjdW1fW2JhbmRdID0gMC5mOwotICAgIGxvd19yZW5kZXJfZW5lcmd5X1ti
YW5kXSA9IGZhbHNlOwogICB9Ci0KLSAgcmV0dXJuIGVybGVfaW5zdGFudGFuZW91czsKLX0KLQot
dm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6RXJsZUluc3RhbnRhbmVvdXM6OlJlc2V0KCkgewot
ICBZMl9hY3VtXy5maWxsKDAuZik7Ci0gIEUyX2FjdW1fLmZpbGwoMC5mKTsKLSAgbG93X3JlbmRl
cl9lbmVyZ3lfLmZpbGwoZmFsc2UpOwotICBudW1fcG9pbnRzXy5maWxsKDApOwogfQogCiB9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJiYW5kX2Vy
bGVfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJiYW5kX2VybGVfZXN0aW1hdG9yLmgK
aW5kZXggYWE1ZTVjY2IyNDg2MzYyNTUzMjE4YTljNTk5MGYzN2MwM2RjZDZiOC4uYjk4NjJkYmM2
ZGVmMWYzMTRhODdlZDQ0ZWZmZTI2MzNhZDQ3YmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvc3ViYmFuZF9lcmxlX2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YmJhbmRf
ZXJsZV9lc3RpbWF0b3IuaApAQCAtMTEsMTEgKzExLDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BRUMzX1NVQkJBTkRfRVJMRV9FU1RJTUFUT1JfSF8KICNkZWZpbmUgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfU1VCQkFORF9FUkxFX0VTVElNQVRPUl9IXwogCisj
aW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNp
bmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNl
bGxlcjNfY29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YWVjM19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2lu
Zy9hcG1fZGF0YV9kdW1wZXIuaCIKIApAQCAtMjQsNyArMjYsNyBAQCBuYW1lc3BhY2Ugd2VicnRj
IHsKIC8vIEVzdGltYXRlcyB0aGUgZWNobyByZXR1cm4gbG9zcyBlbmhhbmNlbWVudCBmb3IgZWFj
aCBmcmVxdWVuY3kgc3ViYmFuZC4KIGNsYXNzIFN1YmJhbmRFcmxlRXN0aW1hdG9yIHsKICBwdWJs
aWM6Ci0gIFN1YmJhbmRFcmxlRXN0aW1hdG9yKGZsb2F0IG1pbl9lcmxlLCBmbG9hdCBtYXhfZXJs
ZV9sZiwgZmxvYXQgbWF4X2VybGVfaGYpOworICBleHBsaWNpdCBTdWJiYW5kRXJsZUVzdGltYXRv
cihjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKTsKICAgflN1YmJhbmRFcmxlRXN0
aW1hdG9yKCk7CiAKICAgLy8gUmVzZXRzIHRoZSBFUkxFIGVzdGltYXRvci4KQEAgLTQxLDU1ICs0
MywzNSBAQCBjbGFzcyBTdWJiYW5kRXJsZUVzdGltYXRvciB7CiAgIGNvbnN0IHN0ZDo6YXJyYXk8
ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIEVybGUoKSBjb25zdCB7IHJldHVybiBlcmxlXzsg
fQogCiAgIC8vIFJldHVybnMgdGhlIEVSTEUgZXN0aW1hdGUgYXQgb25zZXRzLgotICBjb25zdCBz
dGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBFcmxlT25zZXRzKCkgY29uc3Qg
ewotICAgIHJldHVybiBlcmxlX29uc2V0c187Ci0gIH0KKyAgcnRjOjpBcnJheVZpZXc8Y29uc3Qg
ZmxvYXQ+IEVybGVPbnNldHMoKSBjb25zdCB7IHJldHVybiBlcmxlX29uc2V0c187IH0KIAogICB2
b2lkIER1bXAoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEFwbURhdGFEdW1wZXI+JiBkYXRhX2R1bXBl
cikgY29uc3Q7CiAKICBwcml2YXRlOgotICB2b2lkIFVwZGF0ZUJhbmRzKHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IGZsb2F0PiBYMiwKLSAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25z
dCBmbG9hdD4gWTIsCi0gICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxv
YXQ+IEUyLAotICAgICAgICAgICAgICAgICAgIHNpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc3RvcCwKLSAgICAgICAgICAgICAgICAgICBmbG9hdCBtYXhfZXJsZSwKLSAg
ICAgICAgICAgICAgICAgICBib29sIG9uc2V0X2RldGVjdGlvbik7Ci0gIHZvaWQgRGVjcmVhc2VF
cmxlUGVyQmFuZEZvckxvd1JlbmRlclNpZ25hbHMoKTsKLQotICBjbGFzcyBFcmxlSW5zdGFudGFu
ZW91cyB7Ci0gICBwdWJsaWM6Ci0gICAgRXJsZUluc3RhbnRhbmVvdXMoKTsKLSAgICB+RXJsZUlu
c3RhbnRhbmVvdXMoKTsKLSAgICAvLyBVcGRhdGVzIHRoZSBFUkxFIGZvciBhIGJhbmQgd2l0aCBh
IG5ldyBibG9jay4gUmV0dXJucyBhYnNsOjpudWxsb3B0Ci0gICAgLy8gaWYgbm90IGVub3VnaCBw
b2ludHMgd2VyZSBhY2N1bXVsYXRlZCBmb3IgZG9pbmcgdGhlIGVzdGltYXRpb24sCi0gICAgLy8g
b3RoZXJ3aXNlLCBpdCByZXR1cm5zIHRoZSBFUkxFLiBXaGVuIHRoZSBFUkxFIGlzIHJldHVybmVk
LCB0aGUKLSAgICAvLyBsb3dfcmVuZGVyX2VuZXJneSBmbGFnIGNvbnRhaW5zIGluZm9ybWF0aW9u
IG9uIHdoZXRoZXIgdGhlIGVzdGltYXRpb24gd2FzCi0gICAgLy8gZG9uZSB1c2luZyBsb3cgbGV2
ZWwgcmVuZGVyIHNpZ25hbHMuCi0gICAgYWJzbDo6b3B0aW9uYWw8ZmxvYXQ+IFVwZGF0ZShmbG9h
dCBYMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IFkyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgRTIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgYmFuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wqIGxvd19yZW5kZXJfZW5lcmd5KTsKLSAgICAvLyBSZXNldHMgdGhlIEVSTEUgZXN0
aW1hdG9yIHRvIGl0cyBpbml0aWFsIHN0YXRlLgotICAgIHZvaWQgUmVzZXQoKTsKLQotICAgcHJp
dmF0ZToKLSAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFkyX2FjdW1f
OwotICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gRTJfYWN1bV87Cisg
IHN0cnVjdCBBY2N1bXVsYXRlZFNwZWN0cmEgeworICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4gWTJfOworICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4gRTJfOwogICAgIHN0ZDo6YXJyYXk8Ym9vbCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBsb3df
cmVuZGVyX2VuZXJneV87CiAgICAgc3RkOjphcnJheTxpbnQsIGtGZnRMZW5ndGhCeTJQbHVzMT4g
bnVtX3BvaW50c187CiAgIH07CiAKLSAgRXJsZUluc3RhbnRhbmVvdXMgaW5zdGFudGFuZW91c19l
cmxlXzsKKyAgdm9pZCBVcGRhdGVBY2N1bXVsYXRlZFNwZWN0cmEocnRjOjpBcnJheVZpZXc8Y29u
c3QgZmxvYXQ+IFgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5
Vmlldzxjb25zdCBmbG9hdD4gWTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBFMik7CisKKyAgdm9pZCBSZXNldEFjY3VtdWxhdGVk
U3BlY3RyYSgpOworCisgIHZvaWQgVXBkYXRlQmFuZHMoYm9vbCBvbnNldF9kZXRlY3Rpb24pOwor
ICB2b2lkIERlY3JlYXNlRXJsZVBlckJhbmRGb3JMb3dSZW5kZXJTaWduYWxzKCk7CisKKyAgY29u
c3QgZmxvYXQgbWluX2VybGVfOworICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3Ro
QnkyUGx1czE+IG1heF9lcmxlXzsKKyAgY29uc3QgYm9vbCBhZGFwdF9vbl9sb3dfcmVuZGVyXzsK
KyAgQWNjdW11bGF0ZWRTcGVjdHJhIGFjY3VtX3NwZWN0cmFfOwogICBzdGQ6OmFycmF5PGZsb2F0
LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IGVybGVfOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVu
Z3RoQnkyUGx1czE+IGVybGVfb25zZXRzXzsKICAgc3RkOjphcnJheTxib29sLCBrRmZ0TGVuZ3Ro
QnkyUGx1czE+IGNvbWluZ19vbnNldF87CiAgIHN0ZDo6YXJyYXk8aW50LCBrRmZ0TGVuZ3RoQnky
UGx1czE+IGhvbGRfY291bnRlcnNfOwotICBjb25zdCBmbG9hdCBtaW5fZXJsZV87Ci0gIGNvbnN0
IGZsb2F0IG1heF9lcmxlX2xmXzsKLSAgY29uc3QgZmxvYXQgbWF4X2VybGVfaGZfOwotICBjb25z
dCBib29sIGFkYXB0X29uX2xvd19yZW5kZXJfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1YnRyYWN0b3IuY2MKaW5kZXggNjA5ZThhYzdlZDFiOTI3YzcyODA5YjkxNDIxYWY3YzI2
Mzg1NGI4ZC4uOTAwNjljN2E3NDlmYzViYjE1MjNmNzc4ZjQ5ZDc5YTU3OGI3ZDEwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9z
dWJ0cmFjdG9yLmNjCkBAIC0xMSwxMiArMTEsMTIgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0j
aW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYXBpL2Fy
cmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRf
ZGF0YS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9k
YXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1h
eC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAK
QEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFN1YnRyYWN0b3I6OlByb2Nlc3MoY29uc3QgUmVuZGVy
QnVmZmVyJiByZW5kZXJfYnVmZmVyLAogICAgICAgICAgICAgICAgICAgYWRhcHRhdGlvbl9kdXJp
bmdfc2F0dXJhdGlvbl8sICZzaGFkb3dfc2F0dXJhdGlvbik7CiAKICAgLy8gQ29tcHV0ZSB0aGUg
c2lnbmFsIHBvd2VycyBpbiB0aGUgc3VidHJhY3RvciBvdXRwdXQuCi0gIG91dHB1dC0+VXBkYXRl
UG93ZXJzKHkpOworICBvdXRwdXQtPkNvbXB1dGVNZXRyaWNzKHkpOwogCiAgIC8vIEFkanVzdCB0
aGUgZmlsdGVyIGlmIG5lZWRlZC4KICAgYm9vbCBtYWluX2ZpbHRlcl9hZGp1c3RlZCA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvc3VidHJhY3Rvci5oCmluZGV4IGM5MmE5NzFmMTE3ODM3M2JhMGEzNjJjNGNhNGZiNjY3YmM5
N2RiYmQuLmJlYzAxNGRlZWM5NTdkM2NjZGVlNDcyMmNlMWZiZGQ3ODZiMjA0MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0
cmFjdG9yLmgKQEAgLTExLDExICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NF
U1NJTkdfQUVDM19TVUJUUkFDVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lO
R19BRUMzX1NVQlRSQUNUT1JfSF8KIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxt
YXRoLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8
dmVjdG9yPgotI2luY2x1ZGUgIm1hdGguaCIKIAorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZGFwdGl2ZV9maXJfZmlsdGVyLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2ZmdC5oIgpAQCAtMjMs
MTAgKzI1LDExIEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNo
b19wYXRoX3ZhcmlhYmlsaXR5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvbWFpbl9maWx0ZXJfdXBkYXRlX2dhaW4uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplci5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NoYWRvd19maWx0ZXJfdXBkYXRlX2dhaW4uaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1
dC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRh
X2R1bXBlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29v
dXJhX2ZmdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1
YnRyYWN0b3Jfb3V0cHV0LmNjCmluZGV4IGFmZmE0YTNhMDZmYTI0ZGIxY2YzZTUyYjI3YzM0Mzgy
MTJiMGVkNzkuLjkyMmNjM2QxYjNmM2U0MTNlNWYyN2YwYzQ3ZDc1ZWIyNWM5N2FhZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmNjCkBAIC0zMyw3ICszMyw3IEBAIHZvaWQgU3VidHJh
Y3Rvck91dHB1dDo6UmVzZXQoKSB7CiAgIHkyID0gMC5mOwogfQogCi12b2lkIFN1YnRyYWN0b3JP
dXRwdXQ6OlVwZGF0ZVBvd2VycyhydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4geSkgewordm9p
ZCBTdWJ0cmFjdG9yT3V0cHV0OjpDb21wdXRlTWV0cmljcyhydGM6OkFycmF5Vmlldzxjb25zdCBm
bG9hdD4geSkgewogICBjb25zdCBhdXRvIHN1bV9vZl9zcXVhcmVzID0gW10oZmxvYXQgYSwgZmxv
YXQgYikgeyByZXR1cm4gYSArIGIgKiBiOyB9OwogICB5MiA9IHN0ZDo6YWNjdW11bGF0ZSh5LmJl
Z2luKCksIHkuZW5kKCksIDAuZiwgc3VtX29mX3NxdWFyZXMpOwogICBlMl9tYWluID0gc3RkOjph
Y2N1bXVsYXRlKGVfbWFpbi5iZWdpbigpLCBlX21haW4uZW5kKCksIDAuZiwgc3VtX29mX3NxdWFy
ZXMpOwpAQCAtNDIsNiArNDIsMTQgQEAgdm9pZCBTdWJ0cmFjdG9yT3V0cHV0OjpVcGRhdGVQb3dl
cnMocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHkpIHsKICAgczJfbWFpbiA9IHN0ZDo6YWNj
dW11bGF0ZShzX21haW4uYmVnaW4oKSwgc19tYWluLmVuZCgpLCAwLmYsIHN1bV9vZl9zcXVhcmVz
KTsKICAgczJfc2hhZG93ID0KICAgICAgIHN0ZDo6YWNjdW11bGF0ZShzX3NoYWRvdy5iZWdpbigp
LCBzX3NoYWRvdy5lbmQoKSwgMC5mLCBzdW1fb2Zfc3F1YXJlcyk7CisKKyAgc19tYWluX21heF9h
YnMgPSAqc3RkOjptYXhfZWxlbWVudChzX21haW4uYmVnaW4oKSwgc19tYWluLmVuZCgpKTsKKyAg
c19tYWluX21heF9hYnMgPSBzdGQ6Om1heChzX21haW5fbWF4X2FicywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtKCpzdGQ6Om1pbl9lbGVtZW50KHNfbWFpbi5iZWdpbigpLCBzX21haW4u
ZW5kKCkpKSk7CisKKyAgc19zaGFkb3dfbWF4X2FicyA9ICpzdGQ6Om1heF9lbGVtZW50KHNfc2hh
ZG93LmJlZ2luKCksIHNfc2hhZG93LmVuZCgpKTsKKyAgc19zaGFkb3dfbWF4X2FicyA9IHN0ZDo6
bWF4KAorICAgICAgc19zaGFkb3dfbWF4X2FicywgLSgqc3RkOjptaW5fZWxlbWVudChzX3NoYWRv
dy5iZWdpbigpLCBzX3NoYWRvdy5lbmQoKSkpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmgKaW5kZXggODk3MjdlOTM5NmYxMjJiYWYzNmJk
Zjg5NWFiZDRiZTQ3OGVmODhiMy4uNWY2ZmQzZWQ3MTIwN2U0MTliNDc2ODg3Zjc0NzM5YjZhYWE4
ZmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXQuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5oCkBAIC0zNiwxMiArMzYsMTQgQEAg
c3RydWN0IFN1YnRyYWN0b3JPdXRwdXQgewogICBmbG9hdCBlMl9tYWluID0gMC5mOwogICBmbG9h
dCBlMl9zaGFkb3cgPSAwLmY7CiAgIGZsb2F0IHkyID0gMC5mOworICBmbG9hdCBzX21haW5fbWF4
X2FicyA9IDAuZjsKKyAgZmxvYXQgc19zaGFkb3dfbWF4X2FicyA9IDAuZjsKIAogICAvLyBSZXNl
dCB0aGUgc3RydWN0IGNvbnRlbnQuCiAgIHZvaWQgUmVzZXQoKTsKIAogICAvLyBVcGRhdGVzIHRo
ZSBwb3dlcnMgb2YgdGhlIHNpZ25hbHMuCi0gIHZvaWQgVXBkYXRlUG93ZXJzKHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IGZsb2F0PiB5KTsKKyAgdm9pZCBDb21wdXRlTWV0cmljcyhydGM6OkFycmF5Vmll
dzxjb25zdCBmbG9hdD4geSk7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dF9hbmFseXplci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyLmNjCmluZGV4IDNjYWNiNDU2MzAx
NGEzNjVhOWExZTI3OWY5NmMwMmFjNjRmMWExZmIuLjkzNzRiODA5OWY0N2I2YjQzYjE3NTgyY2Y0
M2Y4ZDUzY2EzZjg2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0
cHV0X2FuYWx5emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0X2Fu
YWx5emVyLmNjCkBAIC0xMCw5ICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dF9hbmFseXplci5oIgogCi0jaW5jbHVkZSA8
YXJyYXk+Ci0jaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1
ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXRfYW5h
bHl6ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyLmgKaW5k
ZXggYjU5YTY4ZTVlNjBiMTk0NTFlYWE1MDIzODFjYWUyZDVjMjNmMTg0YS4uMGUyM2FkNWRmYWYz
OWIwYmI0MGQyYjVhNzVkZGRkYWIwNzMwOGExMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
c3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFj
dG9yX291dHB1dF9hbmFseXplci5oCkBAIC0xMSw3ICsxMSw2IEBACiAjaWZuZGVmIE1PRFVMRVNf
QVVESU9fUFJPQ0VTU0lOR19BRUMzX1NVQlRSQUNUT1JfT1VUUFVUX0FOQUxZWkVSX0hfCiAjZGVm
aW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1NVQlRSQUNUT1JfT1VUUFVUX0FOQUxZ
WkVSX0hfCiAKLSNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3JfdW5pdHRlc3QuY2MKaW5kZXggYmE3NDRhNmE4
Mzk2NTM3ZTIxOWU4NjE5MDIwMmEyZGMxNDBmZWI3OC4uOGQxNGNjMWEwNzI1Mjc4ODc3NzRiZGQ1
NzcyOGUzNTVhMzA2ODA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX3VuaXR0ZXN0LmNjCkBA
IC00NCw3ICs0NCw3IEBAIGZsb2F0IFJ1blN1YnRyYWN0b3JUZXN0KGludCBudW1fYmxvY2tzX3Rv
X3Byb2Nlc3MsCiAgIGNvbmZpZy5kZWxheS5taW5fZWNob19wYXRoX2RlbGF5X2Jsb2NrcyA9IDA7
CiAgIGNvbmZpZy5kZWxheS5kZWZhdWx0X2RlbGF5ID0gMTsKICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVsYXlC
dWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVh
dGUyKGNvbmZpZywgMykpOwogICBSZW5kZXJTaWduYWxBbmFseXplciByZW5kZXJfc2lnbmFsX2Fu
YWx5emVyKGNvbmZpZyk7CiAgIFJhbmRvbSByYW5kb21fZ2VuZXJhdG9yKDQyVSk7CiAgIEFlYzNG
ZnQgZmZ0OwpAQCAtMTI3LDcgKzEyNyw3IEBAIFRFU1QoU3VidHJhY3RvciwgRElTQUJMRURfTnVs
bE91dHB1dCkgewogICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CiAgIFN1YnRyYWN0b3Ig
c3VidHJhY3Rvcihjb25maWcsICZkYXRhX2R1bXBlciwgRGV0ZWN0T3B0aW1pemF0aW9uKCkpOwog
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIo
Ci0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgUmVu
ZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIFJlbmRlclNpZ25hbEFuYWx5
emVyIHJlbmRlcl9zaWduYWxfYW5hbHl6ZXIoY29uZmlnKTsKICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+
IHkoa0Jsb2NrU2l6ZSwgMC5mKTsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIFRFU1QoU3VidHJhY3Rv
ciwgV3JvbmdDYXB0dXJlU2l6ZSkgewogICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CiAg
IFN1YnRyYWN0b3Igc3VidHJhY3Rvcihjb25maWcsICZkYXRhX2R1bXBlciwgRGV0ZWN0T3B0aW1p
emF0aW9uKCkpOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9k
ZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykp
OworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIFJlbmRl
clNpZ25hbEFuYWx5emVyIHJlbmRlcl9zaWduYWxfYW5hbHl6ZXIoY29uZmlnKTsKICAgc3RkOjp2
ZWN0b3I8ZmxvYXQ+IHkoa0Jsb2NrU2l6ZSAtIDEsIDAuZik7CiAgIFN1YnRyYWN0b3JPdXRwdXQg
b3V0cHV0OwpAQCAtMjEwLDIxICsyMTAsNCBAQCBURVNUKFN1YnRyYWN0b3IsIE5vbkNvbnZlcmdl
bmNlT25VbmNvcnJlbGF0ZWRTaWduYWxzKSB7CiAgIH0KIH0KIAotLy8gVmVyaWZpZXMgdGhhdCB0
aGUgc3VidHJhY3RvciBpcyBwcm9wZXJseSByZXNldCB3aGVuIHRoZXJlIGlzIGFuIGVjaG8gcGF0
aAotLy8gY2hhbmdlLgotVEVTVChTdWJ0cmFjdG9yLCBFY2hvUGF0aENoYW5nZVJlc2V0KSB7Ci0g
IHN0ZDo6dmVjdG9yPGludD4gYmxvY2tzX3dpdGhfZWNob19wYXRoX2NoYW5nZXM7Ci0gIGJsb2Nr
c193aXRoX2VjaG9fcGF0aF9jaGFuZ2VzLnB1c2hfYmFjayg5OSk7Ci0gIGZvciAoc2l6ZV90IGZp
bHRlcl9sZW5ndGhfYmxvY2tzIDogezEyLCAyMCwgMzB9KSB7Ci0gICAgZm9yIChzaXplX3QgZGVs
YXlfc2FtcGxlcyA6IHswLCA2NCwgMTUwLCAyMDAsIDMwMX0pIHsKLSAgICAgIFNDT1BFRF9UUkFD
RShQcm9kdWNlRGVidWdUZXh0KGRlbGF5X3NhbXBsZXMsIGZpbHRlcl9sZW5ndGhfYmxvY2tzKSk7
Ci0KLSAgICAgIGZsb2F0IGVjaG9fdG9fbmVhcmVuZF9wb3dlciA9IFJ1blN1YnRyYWN0b3JUZXN0
KAotICAgICAgICAgIDEwMCwgZGVsYXlfc2FtcGxlcywgZmlsdGVyX2xlbmd0aF9ibG9ja3MsIGZp
bHRlcl9sZW5ndGhfYmxvY2tzLCBmYWxzZSwKLSAgICAgICAgICBibG9ja3Nfd2l0aF9lY2hvX3Bh
dGhfY2hhbmdlcyk7Ci0gICAgICBFWFBFQ1RfTkVBUigxLmYsIGVjaG9fdG9fbmVhcmVuZF9wb3dl
ciwgMC4wMDAwMDAxZik7Ci0gICAgfQotICB9Ci19Ci0KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRlci5jYwppbmRleCA4N2UzMDA4ZGM3NmFhZDhiMjZj
NzA5YTQ0NjUxZmYzZDY3MDM3OTJjLi42ZmUyOTZjMjE5YzYzMjQwOGQ0Nzk3Y2I0MmE5OTY3YmY1
MDRiYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0ZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZmlsdGVyLmNjCkBAIC0xMCwxMyArMTAs
MTQgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNz
aW9uX2ZpbHRlci5oIgogCi0jaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+Ci0jaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KIAotI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdC5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9tYXRoLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5t
YXguaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC01OSw4ICs2MCwxMCBAQCBjb25zdCBmbG9h
dCBrU3FydEhhbm5pbmdba0ZmdExlbmd0aF0gPSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1TdXBw
cmVzc2lvbkZpbHRlcjo6U3VwcHJlc3Npb25GaWx0ZXIoaW50IHNhbXBsZV9yYXRlX2h6KQotICAg
IDogc2FtcGxlX3JhdGVfaHpfKHNhbXBsZV9yYXRlX2h6KSwKK1N1cHByZXNzaW9uRmlsdGVyOjpT
dXBwcmVzc2lvbkZpbHRlcihBZWMzT3B0aW1pemF0aW9uIG9wdGltaXphdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHopCisgICAgOiBv
cHRpbWl6YXRpb25fKG9wdGltaXphdGlvbiksCisgICAgICBzYW1wbGVfcmF0ZV9oel8oc2FtcGxl
X3JhdGVfaHopLAogICAgICAgZmZ0XygpLAogICAgICAgZV9vdXRwdXRfb2xkXyhOdW1CYW5kc0Zv
clJhdGUoc2FtcGxlX3JhdGVfaHpfKSkgewogICBSVENfRENIRUNLKFZhbGlkRnVsbEJhbmRSYXRl
KHNhbXBsZV9yYXRlX2h6XykpOwpAQCAtOTAsMTggKzkzLDE3IEBAIHZvaWQgU3VwcHJlc3Npb25G
aWx0ZXI6OkFwcGx5R2FpbigKICAgc3RkOjp0cmFuc2Zvcm0oc3VwcHJlc3Npb25fZ2Fpbi5iZWdp
bigpLCBzdXBwcmVzc2lvbl9nYWluLmVuZCgpLCBFLmltLmJlZ2luKCksCiAgICAgICAgICAgICAg
ICAgIEUuaW0uYmVnaW4oKSwgc3RkOjptdWx0aXBsaWVzPGZsb2F0PigpKTsKIAotICAvLyBDb21w
dXRlIGFuZCBhZGQgdGhlIGNvbWZvcnQgbm9pc2UuCi0gIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4gc2NhbGVkX2NvbWZvcnRfbm9pc2U7CisgIC8vIENvbWZvcnQgbm9pc2Ug
Z2FpbiBpcyBzcXJ0KDEtZ14yKSwgd2hlcmUgZyBpcyB0aGUgc3VwcHJlc3Npb24gZ2Fpbi4KKyAg
c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBub2lzZV9nYWluOwogICBzdGQ6
OnRyYW5zZm9ybShzdXBwcmVzc2lvbl9nYWluLmJlZ2luKCksIHN1cHByZXNzaW9uX2dhaW4uZW5k
KCksCi0gICAgICAgICAgICAgICAgIGNvbWZvcnRfbm9pc2UucmUuYmVnaW4oKSwgc2NhbGVkX2Nv
bWZvcnRfbm9pc2UuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgW10oZmxvYXQgYSwgZmxvYXQg
YikgeyByZXR1cm4gc3RkOjptYXgoMS5mIC0gYSwgMC5mKSAqIGI7IH0pOwotICBzdGQ6OnRyYW5z
Zm9ybShzY2FsZWRfY29tZm9ydF9ub2lzZS5iZWdpbigpLCBzY2FsZWRfY29tZm9ydF9ub2lzZS5l
bmQoKSwKLSAgICAgICAgICAgICAgICAgRS5yZS5iZWdpbigpLCBFLnJlLmJlZ2luKCksIHN0ZDo6
cGx1czxmbG9hdD4oKSk7Ci0gIHN0ZDo6dHJhbnNmb3JtKHN1cHByZXNzaW9uX2dhaW4uYmVnaW4o
KSwgc3VwcHJlc3Npb25fZ2Fpbi5lbmQoKSwKLSAgICAgICAgICAgICAgICAgY29tZm9ydF9ub2lz
ZS5pbS5iZWdpbigpLCBzY2FsZWRfY29tZm9ydF9ub2lzZS5iZWdpbigpLAotICAgICAgICAgICAg
ICAgICBbXShmbG9hdCBhLCBmbG9hdCBiKSB7IHJldHVybiBzdGQ6Om1heCgxLmYgLSBhLCAwLmYp
ICogYjsgfSk7Ci0gIHN0ZDo6dHJhbnNmb3JtKHNjYWxlZF9jb21mb3J0X25vaXNlLmJlZ2luKCks
IHNjYWxlZF9jb21mb3J0X25vaXNlLmVuZCgpLAotICAgICAgICAgICAgICAgICBFLmltLmJlZ2lu
KCksIEUuaW0uYmVnaW4oKSwgc3RkOjpwbHVzPGZsb2F0PigpKTsKKyAgICAgICAgICAgICAgICAg
bm9pc2VfZ2Fpbi5iZWdpbigpLCBbXShmbG9hdCBnKSB7IHJldHVybiAxLmYgLSBnICogZzsgfSk7
CisgIGFlYzM6OlZlY3Rvck1hdGgob3B0aW1pemF0aW9uXykuU3FydChub2lzZV9nYWluKTsKKwor
ICAvLyBTY2FsZSBhbmQgYWRkIHRoZSBjb21mb3J0IG5vaXNlLgorICBmb3IgKHNpemVfdCBrID0g
MDsgayA8IGtGZnRMZW5ndGhCeTJQbHVzMTsgaysrKSB7CisgICAgRS5yZVtrXSArPSBub2lzZV9n
YWluW2tdICogY29tZm9ydF9ub2lzZS5yZVtrXTsKKyAgICBFLmltW2tdICs9IG5vaXNlX2dhaW5b
a10gKiBjb21mb3J0X25vaXNlLmltW2tdOworICB9CiAKICAgLy8gU3ludGhlc2lzIGZpbHRlcmJh
bmsuCiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGg+IGVfZXh0ZW5kZWQ7CkBAIC0xMzUs
NyArMTM3LDcgQEAgdm9pZCBTdXBwcmVzc2lvbkZpbHRlcjo6QXBwbHlHYWluKAogCiAgICAgLy8g
U2NhbGUgYW5kIGFwcGx5IHRoZSBub2lzZSB0byB0aGUgc2lnbmFscy4KICAgICBjb25zdCBmbG9h
dCBoaWdoX2JhbmRzX25vaXNlX3NjYWxpbmcgPQotICAgICAgICAwLjRmICogc3RkOjptYXgoMS5m
IC0gaGlnaF9iYW5kc19nYWluLCAwLmYpOworICAgICAgICAwLjRmICogc3RkOjpzcXJ0KDEuZiAt
IGhpZ2hfYmFuZHNfZ2FpbiAqIGhpZ2hfYmFuZHNfZ2Fpbik7CiAKICAgICBzdGQ6OnRyYW5zZm9y
bSgKICAgICAgICAgKCplKVsxXS5iZWdpbigpLCAoKmUpWzFdLmVuZCgpLCB0aW1lX2RvbWFpbl9o
aWdoX2JhbmRfbm9pc2UuYmVnaW4oKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHBy
ZXNzaW9uX2ZpbHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZmlsdGVyLmgKaW5k
ZXggMjM3NDA4ZDdmOWRjM2U1OThlZTM4ZWRjZDg5NDI4MmVkN2Q0YjIwNi4uZWRkMTI5MDAxNGQy
YTRhYjYyMzczYTJhNzk1NWE5MDgzODNmM2QwOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
c3VwcHJlc3Npb25fZmlsdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZmls
dGVyLmgKQEAgLTE2LDEzICsxNiwxNSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hZWMzX2ZmdC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2ZmdF9kYXRhLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0
aWxpdHkvb291cmFfZmZ0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgU3VwcHJlc3Npb25GaWx0ZXIgewogIHB1
YmxpYzoKLSAgZXhwbGljaXQgU3VwcHJlc3Npb25GaWx0ZXIoaW50IHNhbXBsZV9yYXRlX2h6KTsK
KyAgU3VwcHJlc3Npb25GaWx0ZXIoQWVjM09wdGltaXphdGlvbiBvcHRpbWl6YXRpb24sIGludCBz
YW1wbGVfcmF0ZV9oeik7CiAgIH5TdXBwcmVzc2lvbkZpbHRlcigpOwogICB2b2lkIEFwcGx5R2Fp
bihjb25zdCBGZnREYXRhJiBjb21mb3J0X25vaXNlLAogICAgICAgICAgICAgICAgICBjb25zdCBG
ZnREYXRhJiBjb21mb3J0X25vaXNlX2hpZ2hfYmFuZHMsCkBAIC0zMiw2ICszNCw3IEBAIGNsYXNz
IFN1cHByZXNzaW9uRmlsdGVyIHsKICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2
ZWN0b3I8ZmxvYXQ+PiogZSk7CiAKICBwcml2YXRlOgorICBjb25zdCBBZWMzT3B0aW1pemF0aW9u
IG9wdGltaXphdGlvbl87CiAgIGNvbnN0IGludCBzYW1wbGVfcmF0ZV9oel87CiAgIGNvbnN0IE9v
dXJhRmZ0IG9vdXJhX2ZmdF87CiAgIGNvbnN0IEFlYzNGZnQgZmZ0XzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1cHByZXNzaW9uX2ZpbHRlcl91bml0dGVzdC5jYwppbmRleCBlYWE2MDhlZWQ1ZDdmYWEw
NWIzNDZiM2JkN2VjOWFmYzU0YTEzZTRhLi45ZTRmZjdjMjhiNGM4MjMxMDMwNGIyMzIxZjAxNzJi
Njc1ZThkZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0ZXJf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZmlsdGVyX3VuaXR0
ZXN0LmNjCkBAIC00NSwyMSArNDUsMjEgQEAgVEVTVChTdXBwcmVzc2lvbkZpbHRlciwgTnVsbE91
dHB1dCkgewogICBGZnREYXRhIEU7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4gZ2FpbjsKIAotICBFWFBFQ1RfREVBVEgoU3VwcHJlc3Npb25GaWx0ZXIoMTYwMDApLkFw
cGx5R2FpbihjbiwgY25faGlnaF9iYW5kcywgZ2FpbiwgMS4wZiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRSwgbnVsbHB0ciksCisgIEVYUEVDVF9E
RUFUSChTdXBwcmVzc2lvbkZpbHRlcihBZWMzT3B0aW1pemF0aW9uOjprTm9uZSwgMTYwMDApCisg
ICAgICAgICAgICAgICAgICAgLkFwcGx5R2FpbihjbiwgY25faGlnaF9iYW5kcywgZ2FpbiwgMS4w
ZiwgRSwgbnVsbHB0ciksCiAgICAgICAgICAgICAgICAiIik7CiB9CiAKIC8vIFZlcmlmaWVzIHRo
ZSBjaGVjayBmb3IgYWxsb3dlZCBzYW1wbGUgcmF0ZS4KIFRFU1QoU3VwcHJlc3Npb25GaWx0ZXIs
IFByb3BlclNhbXBsZVJhdGUpIHsKLSAgRVhQRUNUX0RFQVRIKFN1cHByZXNzaW9uRmlsdGVyKDE2
MDAxKSwgIiIpOworICBFWFBFQ1RfREVBVEgoU3VwcHJlc3Npb25GaWx0ZXIoQWVjM09wdGltaXph
dGlvbjo6a05vbmUsIDE2MDAxKSwgIiIpOwogfQogCiAjZW5kaWYKIAogLy8gVmVyaWZpZXMgdGhh
dCBubyBjb21mb3J0IG5vaXNlIGlzIGFkZGVkIHdoZW4gdGhlIGdhaW4gaXMgMS4KIFRFU1QoU3Vw
cHJlc3Npb25GaWx0ZXIsIENvbWZvcnROb2lzZUluVW5pdHlHYWluKSB7Ci0gIFN1cHByZXNzaW9u
RmlsdGVyIGZpbHRlcig0ODAwMCk7CisgIFN1cHByZXNzaW9uRmlsdGVyIGZpbHRlcihBZWMzT3B0
aW1pemF0aW9uOjprTm9uZSwgNDgwMDApOwogICBGZnREYXRhIGNuOwogICBGZnREYXRhIGNuX2hp
Z2hfYmFuZHM7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gZ2FpbjsK
QEAgLTg5LDcgKzg5LDcgQEAgVEVTVChTdXBwcmVzc2lvbkZpbHRlciwgQ29tZm9ydE5vaXNlSW5V
bml0eUdhaW4pIHsKIAogLy8gVmVyaWZpZXMgdGhhdCB0aGUgc3VwcHJlc3NvciBpcyBhYmxlIHRv
IHN1cHByZXNzIGEgc2lnbmFsLgogVEVTVChTdXBwcmVzc2lvbkZpbHRlciwgU2lnbmFsU3VwcHJl
c3Npb24pIHsKLSAgU3VwcHJlc3Npb25GaWx0ZXIgZmlsdGVyKDQ4MDAwKTsKKyAgU3VwcHJlc3Np
b25GaWx0ZXIgZmlsdGVyKEFlYzNPcHRpbWl6YXRpb246OmtOb25lLCA0ODAwMCk7CiAgIEZmdERh
dGEgY247CiAgIEZmdERhdGEgY25faGlnaF9iYW5kczsKICAgc3RkOjphcnJheTxmbG9hdCwga0Zm
dExlbmd0aEJ5Mj4gZV9vbGRfOwpAQCAtMTMxLDcgKzEzMSw3IEBAIFRFU1QoU3VwcHJlc3Npb25G
aWx0ZXIsIFNpZ25hbFN1cHByZXNzaW9uKSB7CiAvLyBWZXJpZmllcyB0aGF0IHRoZSBzdXBwcmVz
c29yIGlzIGFibGUgdG8gcGFzcyB0aHJvdWdoIGEgZGVzaXJlZCBzaWduYWwgd2hpbGUKIC8vIGFw
cGx5aW5nIHN1cHByZXNzaW5nIGZvciBzb21lIGZyZXF1ZW5jaWVzLgogVEVTVChTdXBwcmVzc2lv
bkZpbHRlciwgU2lnbmFsVHJhbnNwYXJlbmN5KSB7Ci0gIFN1cHByZXNzaW9uRmlsdGVyIGZpbHRl
cig0ODAwMCk7CisgIFN1cHByZXNzaW9uRmlsdGVyIGZpbHRlcihBZWMzT3B0aW1pemF0aW9uOjpr
Tm9uZSwgNDgwMDApOwogICBGZnREYXRhIGNuOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVu
Z3RoQnkyPiBlX29sZF87CiAgIEFlYzNGZnQgZmZ0OwpAQCAtMTcxLDcgKzE3MSw3IEBAIFRFU1Qo
U3VwcHJlc3Npb25GaWx0ZXIsIFNpZ25hbFRyYW5zcGFyZW5jeSkgewogCiAvLyBWZXJpZmllcyB0
aGF0IHRoZSBzdXBwcmVzc29yIGRlbGF5LgogVEVTVChTdXBwcmVzc2lvbkZpbHRlciwgRGVsYXkp
IHsKLSAgU3VwcHJlc3Npb25GaWx0ZXIgZmlsdGVyKDQ4MDAwKTsKKyAgU3VwcHJlc3Npb25GaWx0
ZXIgZmlsdGVyKEFlYzNPcHRpbWl6YXRpb246OmtOb25lLCA0ODAwMCk7CiAgIEZmdERhdGEgY247
CiAgIEZmdERhdGEgY25faGlnaF9iYW5kczsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0
aEJ5Mj4gZV9vbGRfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fp
bi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW4uY2MKaW5kZXggNjEzMjU2Njcz
MDY5YTU2YWQ5NzZkZDlhYmQzYTU1ZDBlNGY5ODU1NS4uODhjZmMwYTAxZTRlMGQxODM4NWM1OWJm
YzYxODBjN2NlOTc3MzY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25f
Z2Fpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluLmNjCkBAIC0xMSw4
ICsxMSw4IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJl
c3Npb25fZ2Fpbi5oIgogCiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPG51
bWVyaWM+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tb3Zpbmdf
YXZlcmFnZS5oIgpAQCAtMjAsMTUgKzIwLDEwIEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
YXRvbWljb3BzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiBuYW1lc3BhY2UgewogCi1ib29sIEVuYWJsZU5ld1N1cHByZXNzaW9uKCkgewotICByZXR1cm4g
IWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzTmV3U3VwcHJlc3Npb25LaWxsU3dp
dGNoIik7Ci19Ci0KIC8vIEFkanVzdCB0aGUgZ2FpbnMgYWNjb3JkaW5nIHRvIHRoZSBwcmVzZW5j
ZSBvZiBrbm93biBleHRlcm5hbCBmaWx0ZXJzLgogdm9pZCBBZGp1c3RGb3JFeHRlcm5hbEZpbHRl
cnMoc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogZ2FpbikgewogICAvLyBM
aW1pdCB0aGUgbG93IGZyZXF1ZW5jeSBnYWlucyB0byBhdm9pZCB0aGUgaW1wYWN0IG9mIHRoZSBo
aWdoLXBhc3MgZmlsdGVyCkBAIC04Myw1NyArNzgsNiBAQCB2b2lkIFdlaWdodEVjaG9Gb3JBdWRp
YmlsaXR5KGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgIHdlaWdoKHRocmVz
aG9sZCwgbm9ybWFsaXplciwgNywga0ZmdExlbmd0aEJ5MlBsdXMxLCBlY2hvLCB3ZWlnaHRlZF9l
Y2hvKTsKIH0KIAotLy8gQ29tcHV0ZXMgdGhlIGdhaW4gdG8gcmVkdWNlIHRoZSBlY2hvIHRvIGEg
bm9uIGF1ZGlibGUgbGV2ZWwuCi12b2lkIEdhaW5Ub05vQXVkaWJsZUVjaG9GYWxsYmFjaygKLSAg
ICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAotICAgIGJvb2wgbG93X25vaXNl
X3JlbmRlciwKLSAgICBib29sIHNhdHVyYXRlZF9lY2hvLAotICAgIGJvb2wgbGluZWFyX2VjaG9f
ZXN0aW1hdGUsCi0gICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMx
PiYgbmVhcmVuZCwKLSAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1
czE+JiB3ZWlnaHRlZF9lY2hvLAotICAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5n
dGhCeTJQbHVzMT4mIG1hc2tlciwKLSAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVu
Z3RoQnkyUGx1czE+JiBtaW5fZ2FpbiwKLSAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0
TGVuZ3RoQnkyUGx1czE+JiBtYXhfZ2FpbiwKLSAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBr
RmZ0TGVuZ3RoQnkyUGx1czE+JiBvbmVfYnlfd2VpZ2h0ZWRfZWNobywKLSAgICBzdGQ6OmFycmF5
PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+KiBnYWluKSB7Ci0gIGZsb2F0IG5lYXJlbmRfbWFz
a2luZ19tYXJnaW4gPSAwLmY7Ci0gIGlmIChsaW5lYXJfZWNob19lc3RpbWF0ZSkgewotICAgIG5l
YXJlbmRfbWFza2luZ19tYXJnaW4gPQotICAgICAgICBsb3dfbm9pc2VfcmVuZGVyCi0gICAgICAg
ICAgICA/IGNvbmZpZy5nYWluX21hc2subTkKLSAgICAgICAgICAgIDogKHNhdHVyYXRlZF9lY2hv
ID8gY29uZmlnLmdhaW5fbWFzay5tMiA6IGNvbmZpZy5nYWluX21hc2subTMpOwotICB9IGVsc2Ug
ewotICAgIG5lYXJlbmRfbWFza2luZ19tYXJnaW4gPSBjb25maWcuZ2Fpbl9tYXNrLm03OwotICB9
Ci0KLSAgUlRDX0RDSEVDS19MRSgwLmYsIG5lYXJlbmRfbWFza2luZ19tYXJnaW4pOwotICBSVENf
RENIRUNLX0dUKDEuZiwgbmVhcmVuZF9tYXNraW5nX21hcmdpbik7Ci0KLSAgY29uc3QgZmxvYXQg
bWFza2VyX21hcmdpbiA9Ci0gICAgICBsaW5lYXJfZWNob19lc3RpbWF0ZSA/IGNvbmZpZy5nYWlu
X21hc2subTAgOiBjb25maWcuZ2Fpbl9tYXNrLm04OwotCi0gIGZvciAoc2l6ZV90IGsgPSAwOyBr
IDwgZ2Fpbi0+c2l6ZSgpOyArK2spIHsKLSAgICAvLyBUT0RPKGRldmljZW50ZXBlbmEpOiBFeHBl
cmltZW50IGJ5IHJlbW92aW5nIHRoZSByZXZlcmJlcmF0aW9uIGVzdGltYXRpb24KLSAgICAvLyBm
cm9tIHRoZSBuZWFyZW5kIHNpZ25hbCBiZWZvcmUgY29tcHV0aW5nIHRoZSBnYWlucy4KLSAgICBj
b25zdCBmbG9hdCB1bml0eV9nYWluX21hc2tlciA9IHN0ZDo6bWF4KG5lYXJlbmRba10sIG1hc2tl
cltrXSk7Ci0gICAgUlRDX0RDSEVDS19MRSgwLmYsIG5lYXJlbmRfbWFza2luZ19tYXJnaW4gKiB1
bml0eV9nYWluX21hc2tlcik7Ci0gICAgaWYgKHdlaWdodGVkX2VjaG9ba10gPD0gbmVhcmVuZF9t
YXNraW5nX21hcmdpbiAqIHVuaXR5X2dhaW5fbWFza2VyIHx8Ci0gICAgICAgIHVuaXR5X2dhaW5f
bWFza2VyIDw9IDAuZikgewotICAgICAgKCpnYWluKVtrXSA9IDEuZjsKLSAgICB9IGVsc2Ugewot
ICAgICAgUlRDX0RDSEVDS19MVCgwLmYsIHVuaXR5X2dhaW5fbWFza2VyKTsKLSAgICAgICgqZ2Fp
bilba10gPQotICAgICAgICAgIHN0ZDo6bWF4KDAuZiwgKDEuZiAtIGNvbmZpZy5nYWluX21hc2su
Z2Fpbl9jdXJ2ZV9zbG9wZSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdl
aWdodGVkX2VjaG9ba10gLyB1bml0eV9nYWluX21hc2tlcikgKgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbmZpZy5nYWluX21hc2suZ2Fpbl9jdXJ2ZV9vZmZzZXQpOwotICAgICAgKCpn
YWluKVtrXSA9IHN0ZDo6bWF4KG1hc2tlcl9tYXJnaW4gKiBtYXNrZXJba10gKiBvbmVfYnlfd2Vp
Z2h0ZWRfZWNob1trXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKmdhaW4pW2tdKTsK
LSAgICB9Ci0KLSAgICAoKmdhaW4pW2tdID0gc3RkOjptaW4oc3RkOjptYXgoKCpnYWluKVtrXSwg
bWluX2dhaW5ba10pLCBtYXhfZ2FpbltrXSk7Ci0gIH0KLX0KLQogLy8gVE9ETyhwZWFoKTogTWFr
ZSBhZGFwdGl2ZSB0byB0YWtlIHRoZSBhY3R1YWwgZmlsdGVyIGVycm9yIGludG8gYWNjb3VudC4K
IGNvbnN0ZXhwciBzaXplX3Qga1VwcGVyQWNjdXJhdGVCYW5kUGx1czEgPSAyOTsKIApAQCAtMzIx
LDMwICsyNjUsOSBAQCB2b2lkIFN1cHByZXNzaW9uR2Fpbjo6TG93ZXJCYW5kR2FpbigKICAgc3Rk
OjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBtYXhfZ2FpbjsKICAgR2V0TWF4R2Fp
bihtYXhfZ2Fpbik7CiAKLSAgLy8gSXRlcmF0aXZlbHkgY29tcHV0ZSB0aGUgZ2FpbiByZXF1aXJl
ZCB0byBhdHRlbnVhdGUgdGhlIGVjaG8gdG8gYSBub24KLSAgLy8gbm90aWNlYWJsZSBsZXZlbC4K
LQotICBpZiAoZW5hYmxlX25ld19zdXBwcmVzc2lvbl8pIHsKICAgICBHYWluVG9Ob0F1ZGlibGVF
Y2hvKG5lYXJlbmQsIHdlaWdodGVkX3Jlc2lkdWFsX2VjaG8sIGNvbWZvcnRfbm9pc2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtaW5fZ2FpbiwgbWF4X2dhaW4sIGdhaW4pOwogICAgIEFkanVz
dEZvckV4dGVybmFsRmlsdGVycyhnYWluKTsKLSAgfSBlbHNlIHsKLSAgICBjb25zdCBib29sIGxp
bmVhcl9lY2hvX2VzdGltYXRlID0gYWVjX3N0YXRlLlVzYWJsZUxpbmVhckVzdGltYXRlKCk7Ci0g
ICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBtYXNrZXI7Ci0gICAgc3Rk
OjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBvbmVfYnlfd2VpZ2h0ZWRfZWNobzsK
LSAgICBzdGQ6OnRyYW5zZm9ybSh3ZWlnaHRlZF9yZXNpZHVhbF9lY2hvLmJlZ2luKCksIHdlaWdo
dGVkX3Jlc2lkdWFsX2VjaG8uZW5kKCksCi0gICAgICAgICAgICAgICAgICAgb25lX2J5X3dlaWdo
dGVkX2VjaG8uYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICBbXShmbG9hdCBlKSB7IHJldHVy
biBlID4gMC5mID8gMS5mIC8gZSA6IDEuZjsgfSk7Ci0gICAgZ2Fpbi0+ZmlsbCgwLmYpOwotICAg
IGZvciAoaW50IGsgPSAwOyBrIDwgMjsgKytrKSB7Ci0gICAgICBzdGQ6OmNvcHkoY29tZm9ydF9u
b2lzZS5iZWdpbigpLCBjb21mb3J0X25vaXNlLmVuZCgpLCBtYXNrZXIuYmVnaW4oKSk7Ci0gICAg
ICBHYWluVG9Ob0F1ZGlibGVFY2hvRmFsbGJhY2soY29uZmlnXywgbG93X25vaXNlX3JlbmRlciwg
c2F0dXJhdGVkX2VjaG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWFy
X2VjaG9fZXN0aW1hdGUsIG5lYXJlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2VpZ2h0ZWRfcmVzaWR1YWxfZWNobywgbWFza2VyLCBtaW5fZ2FpbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ2Fpbiwgb25lX2J5X3dlaWdodGVkX2VjaG8sIGdh
aW4pOwotICAgICAgQWRqdXN0Rm9yRXh0ZXJuYWxGaWx0ZXJzKGdhaW4pOwotICAgIH0KLSAgfQog
CiAgIC8vIEFkanVzdCB0aGUgZ2FpbiBmb3IgZnJlcXVlbmNpZXMgd2hpY2ggaGF2ZSBub3QgeWV0
IGNvbnZlcmdlZC4KICAgQWRqdXN0Tm9uQ29udmVyZ2VkRnJlcXVlbmNpZXMoZ2Fpbik7CkBAIC0z
NzIsNyArMjk1LDYgQEAgU3VwcHJlc3Npb25HYWluOjpTdXBwcmVzc2lvbkdhaW4oY29uc3QgRWNo
b0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKICAgICAgIGNvbmZpZ18oY29uZmlnKSwKICAgICAg
IHN0YXRlX2NoYW5nZV9kdXJhdGlvbl9ibG9ja3NfKAogICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dD4oY29uZmlnXy5maWx0ZXIuY29uZmlnX2NoYW5nZV9kdXJhdGlvbl9ibG9ja3MpKSwKLSAgICAg
IGVuYWJsZV9uZXdfc3VwcHJlc3Npb25fKEVuYWJsZU5ld1N1cHByZXNzaW9uKCkpLAogICAgICAg
bW92aW5nX2F2ZXJhZ2VfKGtGZnRMZW5ndGhCeTJQbHVzMSwKICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWcuc3VwcHJlc3Nvci5uZWFyZW5kX2F2ZXJhZ2VfYmxvY2tzKSwKICAgICAgIG5lYXJl
bmRfcGFyYW1zXyhjb25maWdfLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcpLApAQCAtNDE2LDcg
KzMzOCw3IEBAIHZvaWQgU3VwcHJlc3Npb25HYWluOjpHZXRHYWluKAogCiAgIC8vIFVwZGF0ZSB0
aGUgc3RhdGUgc2VsZWN0aW9uLgogICBkb21pbmFudF9uZWFyZW5kX2RldGVjdG9yXy5VcGRhdGUo
bmVhcmVuZF9zcGVjdHJ1bSwgcmVzaWR1YWxfZWNob19zcGVjdHJ1bSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbWZvcnRfbm9pc2Vfc3BlY3RydW0pOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tZm9ydF9ub2lzZV9zcGVjdHJ1bSwgaW5pdGlh
bF9zdGF0ZV8pOwogCiAgIC8vIENvbXB1dGUgZ2FpbiBmb3IgdGhlIGxvd2VyIGJhbmQuCiAgIGJv
b2wgbG93X25vaXNlX3JlbmRlciA9IGxvd19yZW5kZXJfZGV0ZWN0b3JfLkRldGVjdChyZW5kZXIp
OwpAQCAtNDc1LDE0ICszOTcsMTcgQEAgYm9vbCBTdXBwcmVzc2lvbkdhaW46Okxvd05vaXNlUmVu
ZGVyRGV0ZWN0b3I6OkRldGVjdCgKIFN1cHByZXNzaW9uR2Fpbjo6RG9taW5hbnROZWFyZW5kRGV0
ZWN0b3I6OkRvbWluYW50TmVhcmVuZERldGVjdG9yKAogICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIz
Q29uZmlnOjpTdXBwcmVzc29yOjpEb21pbmFudE5lYXJlbmREZXRlY3Rpb24gY29uZmlnKQogICAg
IDogZW5yX3RocmVzaG9sZF8oY29uZmlnLmVucl90aHJlc2hvbGQpLAorICAgICAgZW5yX2V4aXRf
dGhyZXNob2xkXyhjb25maWcuZW5yX2V4aXRfdGhyZXNob2xkKSwKICAgICAgIHNucl90aHJlc2hv
bGRfKGNvbmZpZy5zbnJfdGhyZXNob2xkKSwKICAgICAgIGhvbGRfZHVyYXRpb25fKGNvbmZpZy5o
b2xkX2R1cmF0aW9uKSwKLSAgICAgIHRyaWdnZXJfdGhyZXNob2xkXyhjb25maWcudHJpZ2dlcl90
aHJlc2hvbGQpIHt9CisgICAgICB0cmlnZ2VyX3RocmVzaG9sZF8oY29uZmlnLnRyaWdnZXJfdGhy
ZXNob2xkKSwKKyAgICAgIHVzZV9kdXJpbmdfaW5pdGlhbF9waGFzZV8oY29uZmlnLnVzZV9kdXJp
bmdfaW5pdGlhbF9waGFzZSkge30KIAogdm9pZCBTdXBwcmVzc2lvbkdhaW46OkRvbWluYW50TmVh
cmVuZERldGVjdG9yOjpVcGRhdGUoCiAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IG5l
YXJlbmRfc3BlY3RydW0sCiAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHJlc2lkdWFs
X2VjaG9fc3BlY3RydW0sCi0gICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNvbWZvcnRf
bm9pc2Vfc3BlY3RydW0pIHsKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY29tZm9y
dF9ub2lzZV9zcGVjdHJ1bSwKKyAgICBib29sIGluaXRpYWxfc3RhdGUpIHsKICAgYXV0byBsb3df
ZnJlcXVlbmN5X2VuZXJneSA9IFtdKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBzcGVjdHJ1
bSkgewogICAgIFJUQ19EQ0hFQ0tfTEUoMTYsIHNwZWN0cnVtLnNpemUoKSk7CiAgICAgcmV0dXJu
IHN0ZDo6YWNjdW11bGF0ZShzcGVjdHJ1bS5iZWdpbigpICsgMSwgc3BlY3RydW0uYmVnaW4oKSAr
IDE2LCAwLmYpOwpAQCAtNDkzLDcgKzQxOCw4IEBAIHZvaWQgU3VwcHJlc3Npb25HYWluOjpEb21p
bmFudE5lYXJlbmREZXRlY3Rvcjo6VXBkYXRlKAogCiAgIC8vIERldGVjdCBzdHJvbmcgYWN0aXZl
IG5lYXJlbmQgaWYgdGhlIG5lYXJlbmQgaXMgc3VmZmljaWVudGx5IHN0cm9uZ2VyIHRoYW4KICAg
Ly8gdGhlIGVjaG8gYW5kIHRoZSBuZWFyZW5kIG5vaXNlLgotICBpZiAobmVfc3VtID4gZW5yX3Ro
cmVzaG9sZF8gKiBlY2hvX3N1bSAmJgorICBpZiAoKCFpbml0aWFsX3N0YXRlIHx8IHVzZV9kdXJp
bmdfaW5pdGlhbF9waGFzZV8pICYmCisgICAgICBuZV9zdW0gPiBlbnJfdGhyZXNob2xkXyAqIGVj
aG9fc3VtICYmCiAgICAgICBuZV9zdW0gPiBzbnJfdGhyZXNob2xkXyAqIG5vaXNlX3N1bSkgewog
ICAgIGlmICgrK3RyaWdnZXJfY291bnRlcl8gPj0gdHJpZ2dlcl90aHJlc2hvbGRfKSB7CiAgICAg
ICAvLyBBZnRlciBhIHBlcmlvZCBvZiBzdHJvbmcgYWN0aXZlIG5lYXJlbmQgYWN0aXZpdHksIGZs
YWcgbmVhcmVuZCBtb2RlLgpAQCAtNTA1LDYgKzQzMSwxMiBAQCB2b2lkIFN1cHByZXNzaW9uR2Fp
bjo6RG9taW5hbnROZWFyZW5kRGV0ZWN0b3I6OlVwZGF0ZSgKICAgICB0cmlnZ2VyX2NvdW50ZXJf
ID0gc3RkOjptYXgoMCwgdHJpZ2dlcl9jb3VudGVyXyAtIDEpOwogICB9CiAKKyAgLy8gRXhpdCBu
ZWFyZW5kLXN0YXRlIGVhcmx5IGF0IHN0cm9uZyBlY2hvLgorICBpZiAobmVfc3VtIDwgZW5yX2V4
aXRfdGhyZXNob2xkXyAqIGVjaG9fc3VtICYmCisgICAgICBlY2hvX3N1bSA+IHNucl90aHJlc2hv
bGRfICogbm9pc2Vfc3VtKSB7CisgICAgaG9sZF9jb3VudGVyXyA9IDA7CisgIH0KKwogICAvLyBS
ZW1haW4gaW4gYW55IG5lYXJlbmQgbW9kZSBmb3IgYSBjZXJ0YWluIGR1cmF0aW9uLgogICBob2xk
X2NvdW50ZXJfID0gc3RkOjptYXgoMCwgaG9sZF9jb3VudGVyXyAtIDEpOwogICBuZWFyZW5kX3N0
YXRlXyA9IGhvbGRfY291bnRlcl8gPiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3Vw
cHJlc3Npb25fZ2Fpbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbi5oCmluZGV4
IDRlYjg1ODFhODYyYTZkY2NhMzIwMmUwYzA2ZTYwNjNkNzIzN2Y5ZmQuLmU3NGNkOTYzMmIxMjNh
YWRiMTA0MmJhNGI0NmJiODcxZjdkMmU4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1
cHByZXNzaW9uX2dhaW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluLmgK
QEAgLTEyLDEzICsxMiwxOCBAQAogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVD
M19TVVBQUkVTU0lPTl9HQUlOX0hfCiAKICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9f
Y2FuY2VsbGVyM19jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FlY19zdGF0ZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2ZmdF9kYXRhLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbW92
aW5nX2F2ZXJhZ2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9y
ZW5kZXJfc2lnbmFsX2FuYWx5emVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3Ry
dWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTEwMiwxMyArMTA3LDE2IEBA
IGNsYXNzIFN1cHByZXNzaW9uR2FpbiB7CiAgICAgLy8gVXBkYXRlcyB0aGUgc3RhdGUgc2VsZWN0
aW9uIGJhc2VkIG9uIGxhdGVzdCBzcGVjdHJhbCBlc3RpbWF0ZXMuCiAgICAgdm9pZCBVcGRhdGUo
cnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IG5lYXJlbmRfc3BlY3RydW0sCiAgICAgICAgICAg
ICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHJlc2lkdWFsX2VjaG9fc3BlY3RydW0s
Ci0gICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNvbWZvcnRfbm9p
c2Vfc3BlY3RydW0pOworICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0
PiBjb21mb3J0X25vaXNlX3NwZWN0cnVtLAorICAgICAgICAgICAgICAgIGJvb2wgaW5pdGlhbF9z
dGF0ZSk7CiAKICAgIHByaXZhdGU6CiAgICAgY29uc3QgZmxvYXQgZW5yX3RocmVzaG9sZF87Cisg
ICAgY29uc3QgZmxvYXQgZW5yX2V4aXRfdGhyZXNob2xkXzsKICAgICBjb25zdCBmbG9hdCBzbnJf
dGhyZXNob2xkXzsKICAgICBjb25zdCBpbnQgaG9sZF9kdXJhdGlvbl87CiAgICAgY29uc3QgaW50
IHRyaWdnZXJfdGhyZXNob2xkXzsKKyAgICBjb25zdCBib29sIHVzZV9kdXJpbmdfaW5pdGlhbF9w
aGFzZV87CiAKICAgICBib29sIG5lYXJlbmRfc3RhdGVfID0gZmFsc2U7CiAgICAgaW50IHRyaWdn
ZXJfY291bnRlcl8gPSAwOwpAQCAtMTM3LDcgKzE0NSw2IEBAIGNsYXNzIFN1cHByZXNzaW9uR2Fp
biB7CiAgIExvd05vaXNlUmVuZGVyRGV0ZWN0b3IgbG93X3JlbmRlcl9kZXRlY3Rvcl87CiAgIGJv
b2wgaW5pdGlhbF9zdGF0ZV8gPSB0cnVlOwogICBpbnQgaW5pdGlhbF9zdGF0ZV9jaGFuZ2VfY291
bnRlcl8gPSAwOwotICBjb25zdCBib29sIGVuYWJsZV9uZXdfc3VwcHJlc3Npb25fOwogICBhZWMz
OjpNb3ZpbmdBdmVyYWdlIG1vdmluZ19hdmVyYWdlXzsKICAgY29uc3QgR2FpblBhcmFtZXRlcnMg
bmVhcmVuZF9wYXJhbXNfOwogICBjb25zdCBHYWluUGFyYW1ldGVycyBub3JtYWxfcGFyYW1zXzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW5fbGltaXRlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW5fbGltaXRlci5jYwppbmRleCBlM2Q3YTY2
MGJmMDg3OTE5MzE1NWQwMDllOGM4MjJkYzc5YWRiN2QyLi42NjI1YTc3OWMyNDRhODg5ZmE2YWVk
M2IzMGVlMjcwOTNmYWE0ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lv
bl9nYWluX2xpbWl0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbl9s
aW1pdGVyLmNjCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbl91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW5fdW5pdHRlc3QuY2MKaW5kZXggMWZm
OTZjYTZlMDU1MmQ4Y2QzYzM1MDgzZWE4MGJkMThjZjYzN2U2Ni4uNjUxZmQzNjc0YmMxM2M5NmVl
M2IyMTBmOTMxNjczZTAxMmYwYzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJl
c3Npb25fZ2Fpbl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9n
YWluX3VuaXR0ZXN0LmNjCkBAIC03Nyw3ICs3Nyw3IEBAIFRFU1QoU3VwcHJlc3Npb25HYWluLCBC
YXNpY0dhaW5Db21wdXRhdGlvbikgewogICBBcG1EYXRhRHVtcGVyIGRhdGFfZHVtcGVyKDQyKTsK
ICAgU3VidHJhY3RvciBzdWJ0cmFjdG9yKGNvbmZpZywgJmRhdGFfZHVtcGVyLCBEZXRlY3RPcHRp
bWl6YXRpb24oKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVy
X2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAz
KSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKICAgYWJz
bDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gZGVsYXlfZXN0aW1hdGU7CiAKICAgLy8gRW5zdXJl
IHRoYXQgYSBzdHJvbmcgbm9pc2UgaXMgZGV0ZWN0ZWQgdG8gbWFzayBhbnkgZWNob2VzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3ZlY3Rvcl9idWZmZXIuY2MKaW5kZXggZjQ5MTE2OGQ5YTE0MWFlMTc4OTc3MGVhMDE2OTZjNzQy
MzNiNGJlNC4uMDY4Mjg4NWMwYzcxMDg4ODFjYzQyNjkwNzRiYjZhYTMwY2IwMzlhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My92ZWN0b3JfYnVmZmVyLmNjCkBAIC0xMCw3ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3JfYnVmZmVyLmgiCiAKLSNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgPGFsZ29y
aXRobT4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3ZlY3Rvcl9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuaAppbmRleCBj
N2Q0ZjY4YjI3YzM4ODZmMzliYWM0YjkxOThlY2EwNmQwYTUzMjg4Li40YzAyNTdjY2VhNGNkMGU4
OWI1MzY3MzgxYWNjODc5NzM0ODNlNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0
b3JfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5oCkBAIC0xMSw2
ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1ZFQ1RPUl9C
VUZGRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfVkVDVE9SX0JV
RkZFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAv
QlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvQlVJTEQuZ24KaW5kZXggZTVmZWUzZTk1Zjcx
NTRjOWEyMDc2ZjdjNjNhMTVhZTBlYmIxY2IwMy4uZDQyNjJjYTQ4NTgzNWRhZDUxNDk3YTM1Yzk1
MTM4NmI5ZWYyYzdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wL0JVSUxELmduCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWNfZHVtcC9CVUlMRC5nbgpAQCAtMTcsNiArMTcsNyBAQCBydGNfc291
cmNlX3NldCgiYWVjX2R1bXAiKSB7CiAgIGRlcHMgPSBbCiAgICAgIi4uLyIsCiAgICAgIi4uLy4u
Ly4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2Uv
c3lzdGVtOnJ0Y19leHBvcnQiLAogICBdCiB9CiAKQEAgLTQyLDYgKzQzLDcgQEAgcnRjX3NvdXJj
ZV9zZXQoIm1vY2tfYWVjX2R1bXBfdW5pdHRlc3RzIikgewogCiAgIGRlcHMgPSBbCiAgICAgIjpt
b2NrX2FlY19kdW1wIiwKKyAgICAiLi46YXBpIiwKICAgICAiLi4vIiwKICAgICAiLi4vLi4vLi4v
cnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wL2FlY19kdW1wX2ZhY3RvcnkuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWNfZHVtcC9hZWNfZHVtcF9mYWN0b3J5LmgKaW5kZXggZTNmMDBmNjdhMmUyOGUwYmNlYzRh
MTUwNjYxZDFlNTAyMjlhODBlNC4uMWU1NWQ1OTRlZTMxMzQwZjI5NjU4MzEzNjkwNDBiMTc2Y2Vj
NzExNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wL2FlY19kdW1wX2ZhY3RvcnkuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvYWVjX2R1bXBfZmFjdG9yeS5oCkBAIC0xNiw2ICsxNiw3
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hZWNfZHVt
cC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIGNsYXNzIFRhc2tR
dWV1ZTsKQEAgLTIzLDcgKzI0LDcgQEAgY2xhc3MgVGFza1F1ZXVlOwogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIAotY2xhc3MgQWVjRHVtcEZhY3RvcnkgeworY2xhc3MgUlRDX0VYUE9SVCBBZWNEdW1w
RmFjdG9yeSB7CiAgcHVibGljOgogICAvLyBUaGUgfHdvcmtlcl9xdWV1ZXwgbWF5IG5vdCBiZSBu
dWxsIGFuZCBtdXN0IG91dGxpdmUgdGhlIGNyZWF0ZWQKICAgLy8gQWVjRHVtcCBpbnN0YW5jZS4g
fG1heF9sb2dfc2l6ZV9ieXRlcyA9PSAtMXwgbWVhbnMgdGhlIGxvZyBzaXplCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjX2R1bXAvYWVjX2R1bXBfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVt
cC9hZWNfZHVtcF9pbXBsLmNjCmluZGV4IDI3MzI5MzQxNDA2ODQ4ODY5NTllZWVhNWE1NjY5MDE5
NTYyODgxYTYuLjkwMjBmMmI5ZGNhMTRlNjM1YjgzNDFmMWQ2NDY5MmIxMDBiZjhhZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVtcC9hZWNfZHVtcF9pbXBsLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWNfZHVtcC9hZWNfZHVtcF9pbXBsLmNjCkBAIC02NSw3ICs2NSw3IEBAIEFlY0R1bXBJbXBs
OjpBZWNEdW1wSW1wbChzdGQ6OnVuaXF1ZV9wdHI8RmlsZVdyYXBwZXI+IGRlYnVnX2ZpbGUsCiAK
IEFlY0R1bXBJbXBsOjp+QWVjRHVtcEltcGwoKSB7CiAgIC8vIEJsb2NrIHVudGlsIGFsbCB0YXNr
cyBoYXZlIGZpbmlzaGVkIHJ1bm5pbmcuCi0gIHJ0Yzo6RXZlbnQgdGhyZWFkX3N5bmNfZXZlbnQo
ZmFsc2UgLyogbWFudWFsX3Jlc2V0ICovLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgdGhyZWFkX3N5
bmNfZXZlbnQ7CiAgIHdvcmtlcl9xdWV1ZV8tPlBvc3RUYXNrKFsmdGhyZWFkX3N5bmNfZXZlbnRd
IHsgdGhyZWFkX3N5bmNfZXZlbnQuU2V0KCk7IH0pOwogICAvLyBXYWl0IHVudGlsIHRoZSBldmVu
dCBoYXMgYmVlbiBzaWduYWxlZCB3aXRoIC5TZXQoKS4gQnkgdGhlbiBhbGwKICAgLy8gcGVuZGlu
ZyB0YXNrcyB3aWxsIGhhdmUgZmluaXNoZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjbS9h
ZWNtX2NvcmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjbS9hZWNtX2NvcmUuY2MKaW5kZXggMGU1NmI1MGM1
ZWYzMDZiODliYjZlMjhhODNmY2QwNTFkN2Q0MDNhMi4uNjdiNzBiZmIzNjY3MGE0Mzk4ZWM4ZDIw
MDE5YzQzZTgwZmUyMTU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY20vYWVjbV9jb3JlLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWNtL2FlY21fY29yZS5jYwpAQCAtMTIsMTYgKzEyLDE1IEBACiAK
ICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJp
bmcuaD4KIAogZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3JpbmdfYnVmZmVy
LmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvcmVh
bF9mZnQuaCIKIH0KKyNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5j
bHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlY20vZWNob19jb250cm9sX21vYmlsZS5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L2RlbGF5X2VzdGltYXRvcl93cmFwcGVyLmgiCi1l
eHRlcm4gIkMiIHsKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jcHVfZmVhdHVy
ZXNfd3JhcHBlci5oIgotfQogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlY20vZWNob19jb250cm9sX21vYmlsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNtL2VjaG9f
Y29udHJvbF9tb2JpbGUuY2MKaW5kZXggYzk0NzU2M2IyODA1ZTJlOTc3MTI0MWYzYmQxZTU0M2M2
YWYyZjg0OC4uMjU3ZGZiZjU2ZTRlODE2MzRjYTg4MTY5MTM0OWExNmRjZmI2ODdiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlY20vZWNob19jb250cm9sX21vYmlsZS5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjbS9lY2hvX2NvbnRyb2xfbW9iaWxlLmNjCkBAIC0xNCwxMCArMTQsMTIgQEAKICNpbmNs
dWRlIDxzdGRpby5oPgogI2VuZGlmCiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Ry
aW5nLmg+CiAKIGV4dGVybiAiQyIgewogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yaW5nX2J1ZmZl
ci5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3Np
Z25hbF9wcm9jZXNzaW5nX2xpYnJhcnkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjbS9hZWNtX2RlZmluZXMuaCIKIH0KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjbS9hZWNtX2NvcmUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9h
Z2MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnYy5jYwppbmRleCAxMmM4Y2ZiN2ZiZDE3MzFkNzgyZmZj
NGQ5MzEyZDRlNDg4ZDk3NmQyLi5jMjRkYjBkZDUyMjViZTI4MjE0MzdhZjg0ZjU5ZGE0M2Q4MmVj
YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
L2FnYy5jYwpAQCAtMTIsOCArMTIsNiBAQAogCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8
Y3N0ZGxpYj4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvYWdjLmgK
aW5kZXggNWQzNGMyMTJmM2FiZmY5OGVlNmYzYWFmYmRmNWQ4MDFkOTdkMmQ4NC4uYWJkNjhkNWUz
MTFkODFmYThkMmEyNGI1YzE0ZTNkNTRmMzJhYmViMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
Yy9hZ2MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnYy5oCkBAIC0xNyw3ICsxNyw2IEBACiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBBdWRpb0ZyYW1lOwogY2xhc3MgTG91ZG5lc3NIaXN0
b2dyYW07CiAKIGNsYXNzIEFnYyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnY19tYW5h
Z2VyX2RpcmVjdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvYWdjX21hbmFnZXJfZGlyZWN0LmNjCmluZGV4
IGRjNmQ0NTEyMWNkZDZkYmZkMGY5ZmNjMDE4ODcwY2FmYjFlZmVjMjIuLjVjNGRlZWNjYmYyOWM1
ZTkzYWIwMTc0NWJkNjQzZDNiN2E1ODgwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvYWdj
X21hbmFnZXJfZGlyZWN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvYWdjX21hbmFnZXJfZGlyZWN0
LmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjL2FnY19tYW5hZ2VyX2RpcmVjdC5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPGNtYXRoPgogCiAjaWZkZWYgV0VCUlRDX0FHQ19ERUJVR19EVU1QCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvbG91
ZG5lc3NfaGlzdG9ncmFtLmNjCmluZGV4IDBlZDU4NTBlNzJkNTY3NTMzYTMyYmFkYWYzMmY0NDg1
YTRmYjEzYjcuLmNkNTdiODJiY2M3MjQ2NWE5MTFhN2YzNjdjMTk0MTU4NDIzOWVhYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MvbG91ZG5lc3NfaGlzdG9ncmFtLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MvbG91ZG5lc3NfaGlzdG9ncmFtLmNjCkBAIC0xMCw4ICsxMCw4IEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5oIgogCisj
aW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y21hdGg+Ci0jaW5jbHVkZSA8Y3N0cmluZz4K
IAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9sb3VkbmVzc19oaXN0b2dy
YW0uaAppbmRleCBkOGFkNzUxMTc2NGE1YWExODQ2NTQxZjhjYmViYTBhOGQ4OTZkNzM5Li5iMjEw
YmU5NmUzYjkxZWFhMjgyZDFkZjUzOTM3N2NmYWJkMzlkY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvbG91ZG5lc3Nf
aGlzdG9ncmFtLmgKQEAgLTExLDggKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FHQ19MT1VETkVTU19ISVNUT0dSQU1fSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19Q
Uk9DRVNTSU5HX0FHQ19MT1VETkVTU19ISVNUT0dSQU1fSF8KIAotI2luY2x1ZGUgPHN0cmluZy5o
PgotCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL0JVSUxELmduIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvQlVJTEQuZ24KaW5kZXggMTg2NWZkZTNlOTFlNGZhYmY3NzljYWU2ZjE4MGMzMjZhZDk1
YzY1Yi4uNTQzMWExNTBjMjNjMmI4MGE5ODU1MWFkZTYzMjQ3ZTcwZWM2YWZiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvQlVJTEQuZ24K
QEAgLTI3LDYgKzI3LDcgQEAgcnRjX3NvdXJjZV9zZXQoImxldmVsX2VzdGltYXRpb25fYWdjIikg
ewogICAgICI6Z2Fpbl9hcHBsaWVyIiwKICAgICAiOm5vaXNlX2xldmVsX2VzdGltYXRvciIsCiAg
ICAgIjpybm5fdmFkX3dpdGhfbGV2ZWwiLAorICAgICIuLjphcGkiLAogICAgICIuLjphcG1fbG9n
Z2luZyIsCiAgICAgIi4uOmF1ZGlvX2ZyYW1lX3ZpZXciLAogICAgICIuLi8uLi8uLi9hcGk6YXJy
YXlfdmlldyIsCkBAIC01OCw2ICs1OSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhZGFwdGl2ZV9kaWdp
dGFsIikgewogICAgICI6Z2Fpbl9hcHBsaWVyIiwKICAgICAiOm5vaXNlX2xldmVsX2VzdGltYXRv
ciIsCiAgICAgIjpybm5fdmFkX3dpdGhfbGV2ZWwiLAorICAgICIuLjphcGkiLAogICAgICIuLjph
cG1fbG9nZ2luZyIsCiAgICAgIi4uOmF1ZGlvX2ZyYW1lX3ZpZXciLAogICAgICIuLi8uLi8uLi9h
cGk6YXJyYXlfdmlldyIsCkBAIC05NiwxMiArOTgsMTAgQEAgcnRjX3NvdXJjZV9zZXQoImZpeGVk
X2RpZ2l0YWwiKSB7CiAgIHNvdXJjZXMgPSBbCiAgICAgImZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0
aW1hdG9yLmNjIiwKICAgICAiZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCIsCi0gICAg
ImZpeGVkX2dhaW5fY29udHJvbGxlci5jYyIsCi0gICAgImZpeGVkX2dhaW5fY29udHJvbGxlci5o
IiwKLSAgICAiZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmNjIiwKLSAgICAiZ2Fpbl9jdXJ2ZV9hcHBsaWVy
LmgiLAogICAgICJpbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYyIsCiAgICAgImludGVycG9sYXRl
ZF9nYWluX2N1cnZlLmgiLAorICAgICJsaW1pdGVyLmNjIiwKKyAgICAibGltaXRlci5oIiwKICAg
XQogCiAgIGNvbmZpZ3MgKz0gWyAiLi46YXBtX2RlYnVnX2R1bXAiIF0KQEAgLTEyOCw2ICsxMjgs
NyBAQCBydGNfc291cmNlX3NldCgiZ2Fpbl9hcHBsaWVyIikgewogICBkZXBzID0gWwogICAgICI6
Y29tbW9uIiwKICAgICAiLi46YXVkaW9fZnJhbWVfdmlldyIsCisgICAgIi4uLy4uLy4uL2FwaTph
cnJheV92aWV3IiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAogICBdCiB9
CkBAIC0xOTEsOCArMTkyLDggQEAgcnRjX3NvdXJjZV9zZXQoImFkYXB0aXZlX2RpZ2l0YWxfdW5p
dHRlc3RzIikgewogICAgICIuLi8uLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uLy4u
L2NvbW1vbl9hdWRpbyIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4u
Ly4uLy4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpy
dGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3Rz
X3V0aWxzIiwKICAgXQogfQogCkBAIC0yMDMsNyArMjA0LDcgQEAgcnRjX3NvdXJjZV9zZXQoImJp
cXVhZF9maWx0ZXJfdW5pdHRlc3RzIikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIjpiaXF1YWRf
ZmlsdGVyIiwKLSAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAor
ICAgICIuLi8uLi8uLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgXQogfQogCkBAIC0yMTYs
MTEgKzIxNywxMCBAQCBydGNfc291cmNlX3NldCgiZml4ZWRfZGlnaXRhbF91bml0dGVzdHMiKSB7
CiAgICAgImNvbXB1dGVfaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MiLAogICAgICJjb21wdXRl
X2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmgiLAogICAgICJmaXhlZF9kaWdpdGFsX2xldmVsX2Vz
dGltYXRvcl91bml0dGVzdC5jYyIsCi0gICAgImZpeGVkX2dhaW5fY29udHJvbGxlcl91bml0dGVz
dC5jYyIsCi0gICAgImdhaW5fY3VydmVfYXBwbGllcl91bml0dGVzdC5jYyIsCiAgICAgImludGVy
cG9sYXRlZF9nYWluX2N1cnZlX3VuaXR0ZXN0LmNjIiwKLSAgICAibGltaXRlci5jYyIsCi0gICAg
ImxpbWl0ZXIuaCIsCisgICAgImxpbWl0ZXJfZGJfZ2Fpbl9jdXJ2ZS5jYyIsCisgICAgImxpbWl0
ZXJfZGJfZ2Fpbl9jdXJ2ZS5oIiwKKyAgICAibGltaXRlcl9kYl9nYWluX2N1cnZlX3VuaXR0ZXN0
LmNjIiwKICAgICAibGltaXRlcl91bml0dGVzdC5jYyIsCiAgIF0KICAgZGVwcyA9IFsKQEAgLTIz
Miw4ICsyMzIsOCBAQCBydGNfc291cmNlX3NldCgiZml4ZWRfZGlnaXRhbF91bml0dGVzdHMiKSB7
CiAgICAgIi4uLy4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vLi4vY29tbW9uX2F1
ZGlvIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vLi4vcnRj
X2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKLSAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAog
ICAgICIuLi8uLi8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KQEAgLTI1NCwxNCArMjU0LDI5IEBAIHJ0
Y19zb3VyY2Vfc2V0KCJub2lzZV9lc3RpbWF0b3JfdW5pdHRlc3RzIikgewogICAgICIuLjphdWRp
b19mcmFtZV92aWV3IiwKICAgICAiLi4vLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8u
Li8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZTpndW5pdF9oZWxw
ZXJzIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICIu
Li8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCisgIF0KK30KKworcnRjX3Nv
dXJjZV9zZXQoInJubl92YWRfd2l0aF9sZXZlbF91bml0dGVzdHMiKSB7CisgIHRlc3Rvbmx5ID0g
dHJ1ZQorICBzb3VyY2VzID0gWworICAgICJ2YWRfd2l0aF9sZXZlbF91bml0dGVzdC5jYyIsCisg
IF0KKyAgZGVwcyA9IFsKKyAgICAiOnJubl92YWRfd2l0aF9sZXZlbCIsCisgICAgIi4uOmF1ZGlv
X2ZyYW1lX3ZpZXciLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAg
XQogfQogCiBydGNfc291cmNlX3NldCgidGVzdF91dGlscyIpIHsKICAgdGVzdG9ubHkgPSB0cnVl
Ci0gIHZpc2liaWxpdHkgPSBbICI6KiIgXQorICB2aXNpYmlsaXR5ID0gWworICAgICI6KiIsCisg
ICAgIi4uOmF1ZGlvX3Byb2Nlc3NpbmdfdW5pdHRlc3RzIiwKKyAgXQogICBzb3VyY2VzID0gWwog
ICAgICJhZ2MyX3Rlc3RpbmdfY29tbW9uLmNjIiwKICAgICAiYWdjMl90ZXN0aW5nX2NvbW1vbi5o
IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2FkYXB0aXZlX2FnYy5jYwppbmRleCBjNzM0NmM2MDQyOTk3ZTAwOWQ5MGRiMmNjY2Q1
MTg4MDRjNTEzOTU4Li5hNWQzNjA4OWM0ODQ5NjRkYmNmYjVkZjAwYzBhMjVhY2Q2ZjI1NTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9hZ2MuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvYWRhcHRpdmVfYWdjLmNjCkBAIC0xMCwxMiArMTAsMTAgQEAKIAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5oIgogCi0jaW5jbHVkZSA8
YWxnb3JpdGhtPgotI2luY2x1ZGUgPG51bWVyaWM+Ci0KICNpbmNsdWRlICJjb21tb25fYXVkaW8v
aW5jbHVkZS9hdWRpb191dGlsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvdmFkX3dpdGhfbGV2ZWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTI3LDYgKzI1LDE5IEBAIEFkYXB0aXZlQWdj
OjpBZGFwdGl2ZUFnYyhBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIpCiAgIFJUQ19EQ0hF
Q0soYXBtX2RhdGFfZHVtcGVyKTsKIH0KIAorQWRhcHRpdmVBZ2M6OkFkYXB0aXZlQWdjKEFwbURh
dGFEdW1wZXIqIGFwbV9kYXRhX2R1bXBlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIyJiBjb25maWcpCisgICAg
OiBzcGVlY2hfbGV2ZWxfZXN0aW1hdG9yXygKKyAgICAgICAgICBhcG1fZGF0YV9kdW1wZXIsCisg
ICAgICAgICAgY29uZmlnLmFkYXB0aXZlX2RpZ2l0YWwubGV2ZWxfZXN0aW1hdG9yLAorICAgICAg
ICAgIGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFsLnVzZV9zYXR1cmF0aW9uX3Byb3RlY3RvciwKKyAg
ICAgICAgICBjb25maWcuYWRhcHRpdmVfZGlnaXRhbC5leHRyYV9zYXR1cmF0aW9uX21hcmdpbl9k
YiksCisgICAgICBnYWluX2FwcGxpZXJfKGFwbV9kYXRhX2R1bXBlciksCisgICAgICBhcG1fZGF0
YV9kdW1wZXJfKGFwbV9kYXRhX2R1bXBlciksCisgICAgICBub2lzZV9sZXZlbF9lc3RpbWF0b3Jf
KGFwbV9kYXRhX2R1bXBlcikgeworICBSVENfRENIRUNLKGFwbV9kYXRhX2R1bXBlcik7Cit9CisK
IEFkYXB0aXZlQWdjOjp+QWRhcHRpdmVBZ2MoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgQWRhcHRpdmVB
Z2M6OlByb2Nlc3MoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IGZsb2F0X2ZyYW1lLApAQCAtMzcsOSAr
NDgsOSBAQCB2b2lkIEFkYXB0aXZlQWdjOjpQcm9jZXNzKEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBm
bG9hdF9mcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfd2l0aF9sZXZl
bHMudmFkX3Jlc3VsdC5zcGVlY2hfcHJvYmFiaWxpdHkpOwogICBhcG1fZGF0YV9kdW1wZXJfLT5E
dW1wUmF3KCJhZ2MyX3ZhZF9ybXNfZGJmcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2lnbmFsX3dpdGhfbGV2ZWxzLnZhZF9yZXN1bHQuc3BlZWNoX3Jtc19kYmZzKTsKLQogICBhcG1f
ZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJhZ2MyX3ZhZF9wZWFrX2RiZnMiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpZ25hbF93aXRoX2xldmVscy52YWRfcmVzdWx0LnNwZWVjaF9wZWFr
X2RiZnMpOworCiAgIHNwZWVjaF9sZXZlbF9lc3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRpb24oc2ln
bmFsX3dpdGhfbGV2ZWxzLnZhZF9yZXN1bHQpOwogCiAgIHNpZ25hbF93aXRoX2xldmVscy5pbnB1
dF9sZXZlbF9kYmZzID0KQEAgLTYxLDcgKzcyLDYgQEAgdm9pZCBBZGFwdGl2ZUFnYzo6UHJvY2Vz
cyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gZmxvYXRfZnJhbWUsCiAKICAgLy8gVGhlIGdhaW4gYXBw
bGllciBhcHBsaWVzIHRoZSBnYWluLgogICBnYWluX2FwcGxpZXJfLlByb2Nlc3Moc2lnbmFsX3dp
dGhfbGV2ZWxzKTsKLSAgOwogfQogCiB2b2lkIEFkYXB0aXZlQWdjOjpSZXNldCgpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRh
cHRpdmVfYWdjLmgKaW5kZXggNzkyYjJiYzkxNmRlNWFiOWM2ZmFjZDk5OTYxZmI0N2I4MTcxZTIy
ZS4uMTZjMDA4MmVkODE2NmQyZTRhODczMDQxOTEzYjE4ZWQ0NDE0YWJlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfYWdjLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRp
dmVfYWdjLmgKQEAgLTExLDEzICsxMSwxMiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NF
U1NJTkdfQUdDMl9BREFQVElWRV9BR0NfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX0FHQzJfQURBUFRJVkVfQUdDX0hfCiAKLSNpbmNsdWRlIDxtZW1vcnk+Ci0KICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBw
bGllci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZl
X21vZGVfbGV2ZWxfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvbm9pc2VfbGV2ZWxfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19mcmFtZV92aWV3LmgiCisjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIGNsYXNzIEFwbURhdGFEdW1wZXI7CkBAIC0yNSw2ICsyNCw4IEBAIGNs
YXNzIEFwbURhdGFEdW1wZXI7CiBjbGFzcyBBZGFwdGl2ZUFnYyB7CiAgcHVibGljOgogICBleHBs
aWNpdCBBZGFwdGl2ZUFnYyhBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIpOworICBBZGFw
dGl2ZUFnYyhBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIsCisgICAgICAgICAgICAgIGNv
bnN0IEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjImIGNvbmZpZyk7CiAg
IH5BZGFwdGl2ZUFnYygpOwogCiAgIHZvaWQgUHJvY2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4g
ZmxvYXRfZnJhbWUsIGZsb2F0IGxhc3RfYXVkaW9fbGV2ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9hZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5jYwppbmRleCBkNDU2MGNhZjFhOWQ4NDcx
YTdlMjZlODEyNzI5N2RmNTEzOTNkODI5Li42ZWNlODNiMjM5MjQwZmE4ZTExYWJlNGMwNTQ0YTll
N2NlNTcyMWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9kaWdpdGFsX2dh
aW5fYXBwbGllci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9kaWdpdGFsX2dhaW5f
YXBwbGllci5jYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNs
dWRlL2F1ZGlvX3V0aWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9hZ2MyX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dn
aW5nL2FwbV9kYXRhX2R1bXBlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAic3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0
aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yLmNjCmluZGV4IGI2NzBmNGI0NjkyMDU2YzQwYWFiN2Zm
OGU4ZTk3ZDhhN2ZkYmI4MDcuLjg2NDAzMjRiNTkzZmZiMTI2ZjE1ZDU0YjIxNzkyZWZlNDE1NWU1
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1h
dG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9y
LmNjCkBAIC0xMiwxMyArMTIsMjcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKIEFkYXB0aXZlTW9kZUxldmVsRXN0aW1hdG9yOjpBZGFwdGl2ZU1vZGVM
ZXZlbEVzdGltYXRvcigKICAgICBBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIpCi0gICAg
OiBzYXR1cmF0aW9uX3Byb3RlY3Rvcl8oYXBtX2RhdGFfZHVtcGVyKSwKKyAgICA6IGxldmVsX2Vz
dGltYXRvcl8oCisgICAgICAgICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9s
bGVyMjo6TGV2ZWxFc3RpbWF0b3I6OmtSbXMpLAorICAgICAgdXNlX3NhdHVyYXRpb25fcHJvdGVj
dG9yXyh0cnVlKSwKKyAgICAgIHNhdHVyYXRpb25fcHJvdGVjdG9yXyhhcG1fZGF0YV9kdW1wZXIp
LAorICAgICAgYXBtX2RhdGFfZHVtcGVyXyhhcG1fZGF0YV9kdW1wZXIpIHt9CisKK0FkYXB0aXZl
TW9kZUxldmVsRXN0aW1hdG9yOjpBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRvcigKKyAgICBBcG1E
YXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIsCisgICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6
OkdhaW5Db250cm9sbGVyMjo6TGV2ZWxFc3RpbWF0b3IgbGV2ZWxfZXN0aW1hdG9yLAorICAgIGJv
b2wgdXNlX3NhdHVyYXRpb25fcHJvdGVjdG9yLAorICAgIGZsb2F0IGV4dHJhX3NhdHVyYXRpb25f
bWFyZ2luX2RiKQorICAgIDogbGV2ZWxfZXN0aW1hdG9yXyhsZXZlbF9lc3RpbWF0b3IpLAorICAg
ICAgdXNlX3NhdHVyYXRpb25fcHJvdGVjdG9yXyh1c2Vfc2F0dXJhdGlvbl9wcm90ZWN0b3IpLAor
ICAgICAgc2F0dXJhdGlvbl9wcm90ZWN0b3JfKGFwbV9kYXRhX2R1bXBlciwgZXh0cmFfc2F0dXJh
dGlvbl9tYXJnaW5fZGIpLAogICAgICAgYXBtX2RhdGFfZHVtcGVyXyhhcG1fZGF0YV9kdW1wZXIp
IHt9CiAKIHZvaWQgQWRhcHRpdmVNb2RlTGV2ZWxFc3RpbWF0b3I6OlVwZGF0ZUVzdGltYXRpb24o
CkBAIC00MiwyMCArNTYsMzggQEAgdm9pZCBBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRvcjo6VXBk
YXRlRXN0aW1hdGlvbigKIAogICBjb25zdCBmbG9hdCBsZWFrX2ZhY3RvciA9IGJ1ZmZlcl9pc19m
dWxsID8ga0Z1bGxCdWZmZXJMZWFrRmFjdG9yIDogMS5mOwogCisgIC8vIFJlYWQgc3BlZWNoIGxl
dmVsIGVzdGltYXRpb24uCisgIGZsb2F0IHNwZWVjaF9sZXZlbF9kYmZzID0gMC5mOworICB1c2lu
ZyBMZXZlbEVzdGltYXRvclR5cGUgPQorICAgICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6Okdh
aW5Db250cm9sbGVyMjo6TGV2ZWxFc3RpbWF0b3I7CisgIHN3aXRjaCAobGV2ZWxfZXN0aW1hdG9y
XykgeworICAgIGNhc2UgTGV2ZWxFc3RpbWF0b3JUeXBlOjprUm1zOgorICAgICAgc3BlZWNoX2xl
dmVsX2RiZnMgPSB2YWRfZGF0YS5zcGVlY2hfcm1zX2RiZnM7CisgICAgICBicmVhazsKKyAgICBj
YXNlIExldmVsRXN0aW1hdG9yVHlwZTo6a1BlYWs6CisgICAgICBzcGVlY2hfbGV2ZWxfZGJmcyA9
IHZhZF9kYXRhLnNwZWVjaF9wZWFrX2RiZnM7CisgICAgICBicmVhazsKKyAgfQorCisgIC8vIFVw
ZGF0ZSBzcGVlY2ggbGV2ZWwgZXN0aW1hdGlvbi4KICAgZXN0aW1hdGVfbnVtZXJhdG9yXyA9IGVz
dGltYXRlX251bWVyYXRvcl8gKiBsZWFrX2ZhY3RvciArCi0gICAgICAgICAgICAgICAgICAgICAg
ICB2YWRfZGF0YS5zcGVlY2hfcm1zX2RiZnMgKiB2YWRfZGF0YS5zcGVlY2hfcHJvYmFiaWxpdHk7
CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVlY2hfbGV2ZWxfZGJmcyAqIHZhZF9kYXRhLnNw
ZWVjaF9wcm9iYWJpbGl0eTsKICAgZXN0aW1hdGVfZGVub21pbmF0b3JfID0KICAgICAgIGVzdGlt
YXRlX2Rlbm9taW5hdG9yXyAqIGxlYWtfZmFjdG9yICsgdmFkX2RhdGEuc3BlZWNoX3Byb2JhYmls
aXR5OwotCiAgIGxhc3RfZXN0aW1hdGVfd2l0aF9vZmZzZXRfZGJmc18gPSBlc3RpbWF0ZV9udW1l
cmF0b3JfIC8gZXN0aW1hdGVfZGVub21pbmF0b3JfOwogCi0gIHNhdHVyYXRpb25fcHJvdGVjdG9y
Xy5VcGRhdGVNYXJnaW4odmFkX2RhdGEsIGxhc3RfZXN0aW1hdGVfd2l0aF9vZmZzZXRfZGJmc18p
OwotICBEZWJ1Z0R1bXBFc3RpbWF0ZSgpOworICBpZiAodXNlX3NhdHVyYXRpb25fcHJvdGVjdG9y
XykgeworICAgIHNhdHVyYXRpb25fcHJvdGVjdG9yXy5VcGRhdGVNYXJnaW4odmFkX2RhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2VzdGltYXRlX3dpdGhf
b2Zmc2V0X2RiZnNfKTsKKyAgICBEZWJ1Z0R1bXBFc3RpbWF0ZSgpOworICB9CiB9CiAKIGZsb2F0
IEFkYXB0aXZlTW9kZUxldmVsRXN0aW1hdG9yOjpMYXRlc3RMZXZlbEVzdGltYXRlKCkgY29uc3Qg
ewogICByZXR1cm4gcnRjOjpTYWZlQ2xhbXA8ZmxvYXQ+KAotICAgICAgbGFzdF9lc3RpbWF0ZV93
aXRoX29mZnNldF9kYmZzXyArIHNhdHVyYXRpb25fcHJvdGVjdG9yXy5MYXN0TWFyZ2luKCksCisg
ICAgICBsYXN0X2VzdGltYXRlX3dpdGhfb2Zmc2V0X2RiZnNfICsKKyAgICAgICAgICAodXNlX3Nh
dHVyYXRpb25fcHJvdGVjdG9yXyA/IHNhdHVyYXRpb25fcHJvdGVjdG9yXy5MYXN0TWFyZ2luKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDAuZiksCiAgICAgICAtOTAu
ZiwgMzAuZik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVf
bGV2ZWxfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2Vz
dGltYXRvci5oCmluZGV4IDRkNDE4MGM0ODA2ODcwMDA0MTIwYWEzYzkyMWVlNzU1ZThiMWI2MTku
LjYzYjlkZTJhZWM0NGExMjRkZWE3MjVhM2E2ZmZjNGY2MDE3MDlhZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3IuaApAQCAtMTEsOCArMTEsMTIg
QEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfQURBUFRJVkVfTU9ERV9M
RVZFTF9FU1RJTUFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJf
QURBUFRJVkVfTU9ERV9MRVZFTF9FU1RJTUFUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgor
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaCIg
IC8vIGtGdWxsQnVmZmVyU2l6ZU1zLi4uCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvc2F0dXJhdGlvbl9wcm90ZWN0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZlbC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiBjbGFzcyBBcG1EYXRhRHVtcGVyOwpAQCAtMjAsNiArMjQsMTEgQEAgY2xhc3MgQXBt
RGF0YUR1bXBlcjsKIGNsYXNzIEFkYXB0aXZlTW9kZUxldmVsRXN0aW1hdG9yIHsKICBwdWJsaWM6
CiAgIGV4cGxpY2l0IEFkYXB0aXZlTW9kZUxldmVsRXN0aW1hdG9yKEFwbURhdGFEdW1wZXIqIGFw
bV9kYXRhX2R1bXBlcik7CisgIEFkYXB0aXZlTW9kZUxldmVsRXN0aW1hdG9yKAorICAgICAgQXBt
RGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyLAorICAgICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25m
aWc6OkdhaW5Db250cm9sbGVyMjo6TGV2ZWxFc3RpbWF0b3IgbGV2ZWxfZXN0aW1hdG9yLAorICAg
ICAgYm9vbCB1c2Vfc2F0dXJhdGlvbl9wcm90ZWN0b3IsCisgICAgICBmbG9hdCBleHRyYV9zYXR1
cmF0aW9uX21hcmdpbl9kYik7CiAgIHZvaWQgVXBkYXRlRXN0aW1hdGlvbihjb25zdCBWYWRXaXRo
TGV2ZWw6OkxldmVsQW5kUHJvYmFiaWxpdHkmIHZhZF9kYXRhKTsKICAgZmxvYXQgTGF0ZXN0TGV2
ZWxFc3RpbWF0ZSgpIGNvbnN0OwogICB2b2lkIFJlc2V0KCk7CkBAIC0zMCw2ICszOSw5IEBAIGNs
YXNzIEFkYXB0aXZlTW9kZUxldmVsRXN0aW1hdG9yIHsKICBwcml2YXRlOgogICB2b2lkIERlYnVn
RHVtcEVzdGltYXRlKCk7CiAKKyAgY29uc3QgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5D
b250cm9sbGVyMjo6TGV2ZWxFc3RpbWF0b3IKKyAgICAgIGxldmVsX2VzdGltYXRvcl87CisgIGNv
bnN0IGJvb2wgdXNlX3NhdHVyYXRpb25fcHJvdGVjdG9yXzsKICAgc2l6ZV90IGJ1ZmZlcl9zaXpl
X21zXyA9IDA7CiAgIGZsb2F0IGxhc3RfZXN0aW1hdGVfd2l0aF9vZmZzZXRfZGJmc18gPSBrSW5p
dGlhbFNwZWVjaExldmVsRXN0aW1hdGVEYmZzOwogICBmbG9hdCBlc3RpbWF0ZV9udW1lcmF0b3Jf
ID0gMC5mOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9l
c3RpbWF0b3JfYWdjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3Rp
bWF0b3JfYWdjLmNjCmluZGV4IDRjZWU5NjMzZjc3NzhkYWVkYTA1ZjEwZmNmMDY0OWJmZTI4NDQ2
NDEuLmI3YzY0MzczZmM4YTAwYTgyOTEwNDZlNzE3NDFjMTMzZjg3MzllMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuY2MKQEAg
LTEwLDYgKzEwLDEwIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuaCIKIAorI2luY2x1ZGUgPGNtYXRo
PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2FnYzJfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2luY2x1ZGUvYXVkaW9fZnJhbWVfdmlldy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmgKaW5k
ZXggNDg0YjEyODkzMzI1YTAxZWNlY2JlNmJlNmNhZTg3NDJkMGE4YzU1Ny4uNmQxMjMzOTg4OGMy
ZTg0MDA1MTNjM2JmNGUwMjIwMmI2YmMxODI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
YWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
YWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmgKQEAgLTExLDEwICsxMSwxMiBAQAog
I2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9BREFQVElWRV9NT0RFX0xFVkVM
X0VTVElNQVRPUl9BR0NfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJf
QURBUFRJVkVfTU9ERV9MRVZFTF9FU1RJTUFUT1JfQUdDX0hfCiAKLSNpbmNsdWRlIDx2ZWN0b3I+
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnYy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2F0dXJhdGlvbl9wcm90ZWN0b3Iu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZl
bC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2Fn
YzJfY29tbW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uY2MKaW5kZXggNWRhMzUz
ZmE4ZmQxMzhmZWI0ZmY3YjIzYzU0YzYxYzkyMTI0NDk3Yi4uYWY5NDNkZjc4ZmJiODI4ZjgzYzBh
MGNmNmFmMTcyOGFiMjUwNWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21t
b24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uY2MKQEAgLTEwLDYgKzEwLDcg
QEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9u
LmgiCiAKKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaApp
bmRleCA3MWQzM2U1OTRkYTIzYmRmMjQ5YzRiNmI3Y2JiNmZjMGZmZmYwN2IwLi41NWRkNjQ4ZGI0
OWFiMTYxYTFmOTg1MGVkNGE4N2U2ODljNjFlM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9hZ2MyX2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgKQEAgLTEz
LDggKzEzLDYgQEAKIAogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCi0jaW5jbHVkZSA8Y21hdGg+Ci0K
IG5hbWVzcGFjZSB3ZWJydGMgewogCiBjb25zdGV4cHIgZmxvYXQga01pbkZsb2F0UzE2VmFsdWUg
PSAtMzI3NjguZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2JpcXVhZF9maWx0ZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVyLmNjCmluZGV4IDk4NThkNTA1ODQ2NTkxZjg4
MGU5NGRiODE3NGEzMjExMzFhMWYzZjQuLmRhODU1N2MxOTA4MmMxY2ExODA5MWIzYjZmNDg0YWU1
ZWJiNDZlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2JpcXVhZF9maWx0ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvYmlxdWFkX2ZpbHRlci5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYmlxdWFkX2ZpbHRlci5oIgog
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBUcmFuc3Bv
c2VkIGRpcmVjdCBmb3JtIEkgaW1wbGVtZW50YXRpb24gb2YgYSBiaS1xdWFkIGZpbHRlciBhcHBs
aWVkIHRvIGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVyLmgKaW5kZXggMjg0OTMwYzU5NTI4MzFhMGM3ZjEy
NTUwMTM2NTA4YjU1MDRlOWExZS4uM2Q3OGMwNzYwNzg4ODkyMjc2MGZjMDViNjgxYWM1ZWE1Y2Fh
YzBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYmlxdWFkX2ZpbHRlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2JpcXVhZF9maWx0ZXIuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9CSVFVQURfRklMVEVSX0hfCiAjZGVmaW5lIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0JJUVVBRF9GSUxURVJfSF8KIAorI2luY2x1ZGUg
PGFsZ29yaXRobT4KKwogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvY29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9j
dXJ2ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2NvbXB1dGVfaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUu
Y2MKaW5kZXggZjM5NWJjZWZmYTFiYzc3Y2Q2Mzc5ZDA2ZDYxOWRmYjQ0YjliZWUxMi4uYmM5MjYx
M2I2OTdlNmYxYTQwNjI0YzJkMzUyYWFhZTUxMGIwYzgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvY29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9jb21wdXRlX2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmNjCkBAIC0xOSwyMyArMTksMjQg
QEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9u
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl90ZXN0aW5n
X2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0
ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2Ri
X2dhaW5fY3VydmUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogCiBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IENvbXB1
dGVMaW5lYXJBcHByb3hpbWF0aW9uUGFyYW1zKAotICAgIGNvbnN0IExpbWl0ZXIqIGxpbWl0ZXIs
CisgICAgY29uc3QgTGltaXRlckRiR2FpbkN1cnZlKiBsaW1pdGVyLAogICAgIGNvbnN0IGRvdWJs
ZSB4KSB7CiAgIGNvbnN0IGRvdWJsZSBtID0gbGltaXRlci0+R2V0R2FpbkZpcnN0RGVyaXZhdGl2
ZUxpbmVhcih4KTsKICAgY29uc3QgZG91YmxlIHEgPSBsaW1pdGVyLT5HZXRHYWluTGluZWFyKHgp
IC0gbSAqIHg7CiAgIHJldHVybiB7bSwgcX07CiB9CiAKLWRvdWJsZSBDb21wdXRlQXJlYVVuZGVy
UGllY2V3aXNlTGluZWFyQXBwcm94aW1hdGlvbihjb25zdCBMaW1pdGVyKiBsaW1pdGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRv
dWJsZSB4MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBkb3VibGUgeDEpIHsKK2RvdWJsZSBDb21wdXRlQXJlYVVuZGVyUGllY2V3aXNl
TGluZWFyQXBwcm94aW1hdGlvbigKKyAgICBjb25zdCBMaW1pdGVyRGJHYWluQ3VydmUqIGxpbWl0
ZXIsCisgICAgY29uc3QgZG91YmxlIHgwLAorICAgIGNvbnN0IGRvdWJsZSB4MSkgewogICBSVENf
Q0hFQ0tfTFQoeDAsIHgxKTsKIAogICAvLyBMaW5lYXIgYXBwcm94aW1hdGlvbiBpbiB4MCBhbmQg
eDEuCkBAIC02MCw3ICs2MSw3IEBAIGRvdWJsZSBDb21wdXRlQXJlYVVuZGVyUGllY2V3aXNlTGlu
ZWFyQXBwcm94aW1hdGlvbihjb25zdCBMaW1pdGVyKiBsaW1pdGVyLAogLy8gQ29tcHV0ZXMgdGhl
IGFwcHJveGltYXRpb24gZXJyb3IgaW4gdGhlIGxpbWl0ZXIgcmVnaW9uIGZvciBhIGdpdmVuIGlu
dGVydmFsLgogLy8gVGhlIGVycm9yIGlzIGNvbXB1dGVkIGFzIHRoZSBkaWZmZXJlbmNlIGJldHdl
ZW4gdGhlIGFyZWFzIGJlbmVhdGggdGhlIGxpbWl0ZXIKIC8vIGN1cnZlIHRvIGFwcHJveGltYXRl
IGFuZCBpdHMgbGluZWFyIHVuZGVyLWFwcHJveGltYXRpb24uCi1kb3VibGUgTGltaXRlclVuZGVy
QXBwcm94aW1hdGlvbk5lZ2F0aXZlRXJyb3IoY29uc3QgTGltaXRlciogbGltaXRlciwKK2RvdWJs
ZSBMaW1pdGVyVW5kZXJBcHByb3hpbWF0aW9uTmVnYXRpdmVFcnJvcihjb25zdCBMaW1pdGVyRGJH
YWluQ3VydmUqIGxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZG91YmxlIHgwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4MSkgewogICBjb25zdCBkb3VibGUgYXJlYV9s
aW1pdGVyID0gbGltaXRlci0+R2V0R2FpbkludGVncmFsTGluZWFyKHgwLCB4MSk7CkBAIC03Nyw3
ICs3OCw3IEBAIGRvdWJsZSBMaW1pdGVyVW5kZXJBcHByb3hpbWF0aW9uTmVnYXRpdmVFcnJvcihj
b25zdCBMaW1pdGVyKiBsaW1pdGVyLAogLy8gYXJlIGFzc2lnbmVkIGJ5IGhhbHZpbmcgaW50ZXJ2
YWxzIChzdGFydGluZyB3aXRoIHRoZSB3aG9sZSBiZXlvbmQta25lZSByZWdpb24KIC8vIGFzIGEg
c2luZ2xlIGludGVydmFsKS4gSG93ZXZlciwgZXZlbiBpZiBzdWItb3B0aW1hbCwgdGhpcyBhbGdv
cml0aG0gd29ya3MKIC8vIHdlbGwgaW4gcHJhY3RpY2UgYW5kIGl0IGlzIGVmZmljaWVudGx5IGlt
cGxlbWVudGVkIHVzaW5nIHByaW9yaXR5IHF1ZXVlcy4KLXN0ZDo6dmVjdG9yPGRvdWJsZT4gU2Ft
cGxlTGltaXRlclJlZ2lvbihjb25zdCBMaW1pdGVyKiBsaW1pdGVyKSB7CitzdGQ6OnZlY3Rvcjxk
b3VibGU+IFNhbXBsZUxpbWl0ZXJSZWdpb24oY29uc3QgTGltaXRlckRiR2FpbkN1cnZlKiBsaW1p
dGVyKSB7CiAgIHN0YXRpY19hc3NlcnQoa0ludGVycG9sYXRlZEdhaW5DdXJ2ZUJleW9uZEtuZWVQ
b2ludHMgPiAyLCAiIik7CiAKICAgc3RydWN0IEludGVydmFsIHsKQEAgLTEzMSw3ICsxMzIsNyBA
QCBzdGQ6OnZlY3Rvcjxkb3VibGU+IFNhbXBsZUxpbWl0ZXJSZWdpb24oY29uc3QgTGltaXRlciog
bGltaXRlcikgewogLy8gQ29tcHV0ZSB0aGUgcGFyYW1ldGVycyB0byBvdmVyLWFwcHJveGltYXRl
IHRoZSBrbmVlIHJlZ2lvbiB2aWEgbGluZWFyCiAvLyBpbnRlcnBvbGF0aW9uLiBPdmVyLWFwcHJv
eGltYXRpbmcgaXMgc2F0dXJhdGlvbi1zYWZlIHNpbmNlIHRoZSBrbmVlIHJlZ2lvbiBpcwogLy8g
Y29udmV4Lgotdm9pZCBQcmVjb21wdXRlS25lZUFwcHJveFBhcmFtcyhjb25zdCBMaW1pdGVyKiBs
aW1pdGVyLAordm9pZCBQcmVjb21wdXRlS25lZUFwcHJveFBhcmFtcyhjb25zdCBMaW1pdGVyRGJH
YWluQ3VydmUqIGxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6
OkludGVycG9sYXRlZFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMpIHsKICAgc3RhdGljX2Fzc2VydChr
SW50ZXJwb2xhdGVkR2FpbkN1cnZlS25lZVBvaW50cyA+IDIsICIiKTsKICAgLy8gR2V0IHxrSW50
ZXJwb2xhdGVkR2FpbkN1cnZlS25lZVBvaW50c3wgLSAxIGVxdWFsbHkgc3BhY2VkIHBvaW50cy4K
QEAgLTE2NSw3ICsxNjYsNyBAQCB2b2lkIFByZWNvbXB1dGVLbmVlQXBwcm94UGFyYW1zKGNvbnN0
IExpbWl0ZXIqIGxpbWl0ZXIsCiAvLyBpbnRlcnBvbGF0aW9uIGFuZCBncmVlZHkgc2FtcGxpbmcu
IFVuZGVyLWFwcHJveGltYXRpbmcgaXMgc2F0dXJhdGlvbi1zYWZlCiAvLyBzaW5jZSB0aGUgYmV5
b25kLWtuZWUgcmVnaW9uIGlzIGNvbmNhdmUuCiB2b2lkIFByZWNvbXB1dGVCZXlvbmRLbmVlQXBw
cm94UGFyYW1zKAotICAgIGNvbnN0IExpbWl0ZXIqIGxpbWl0ZXIsCisgICAgY29uc3QgTGltaXRl
ckRiR2FpbkN1cnZlKiBsaW1pdGVyLAogICAgIHRlc3Q6OkludGVycG9sYXRlZFBhcmFtZXRlcnMq
IHBhcmFtZXRlcnMpIHsKICAgLy8gRmluZCBwb2ludHMgb24gd2hpY2ggdGhlIGxpbmVhciBwaWVj
ZXMgYXJlIHRhbmdlbnQgdG8gdGhlIGdhaW4gY3VydmUuCiAgIGNvbnN0IGF1dG8gc2FtcGxlcyA9
IFNhbXBsZUxpbWl0ZXJSZWdpb24obGltaXRlcik7CkBAIC0yMTYsNyArMjE3LDcgQEAgbmFtZXNw
YWNlIHRlc3QgewogCiBJbnRlcnBvbGF0ZWRQYXJhbWV0ZXJzIENvbXB1dGVJbnRlcnBvbGF0ZWRH
YWluQ3VydmVBcHByb3hpbWF0aW9uUGFyYW1zKCkgewogICBJbnRlcnBvbGF0ZWRQYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7Ci0gIExpbWl0ZXIgbGltaXRlcjsKKyAgTGltaXRlckRiR2FpbkN1cnZlIGxp
bWl0ZXI7CiAgIHBhcmFtZXRlcnMuY29tcHV0ZWRfYXBwcm94aW1hdGlvbl9wYXJhbXNfeC5maWxs
KDAuMGYpOwogICBwYXJhbWV0ZXJzLmNvbXB1dGVkX2FwcHJveGltYXRpb25fcGFyYW1zX20uZmls
bCgwLjBmKTsKICAgcGFyYW1ldGVycy5jb21wdXRlZF9hcHByb3hpbWF0aW9uX3BhcmFtc19xLmZp
bGwoMC4wZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9kaWdpdGFsX2xldmVs
X2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1h
dG9yLmNjCmluZGV4IDM5Y2M3NjQxODVjMWQ4ZmIxMzVkNGNiODQzZTkzNjY2MTNkODNjYzcuLjk3
MWY0ZjYyYjc5MDE1ODhiNzQwNmNjZDhkNWNiZGVjMDUyMGIyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2ZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2ZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmNjCkBAIC0xMyw2ICsxMyw3IEBA
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNtYXRoPgogCisjaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2lu
Zy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmNjCmluZGV4IDBkN2UzYTYxYjE1ZDMwYWM1
NDUwNjdkNzY3Njk1ZmUyZTdjMGU1N2UuLmVmOTA4ZGMzNTgyODQ5NGU0ZDZlYWRmOTJjMDhiYzVm
MDhjZWYzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJvbGxl
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xsZXIuY2MKQEAgLTEw
LDEzICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9m
aXhlZF9nYWluX2NvbnRyb2xsZXIuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRl
IDxjbWF0aD4KLQogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAiY29tbW9u
X2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCkBAIC0zOSw3
ICszNSw3IEBAIEZpeGVkR2FpbkNvbnRyb2xsZXI6OkZpeGVkR2FpbkNvbnRyb2xsZXIoQXBtRGF0
YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyKQogRml4ZWRHYWluQ29udHJvbGxlcjo6Rml4ZWRHYWlu
Q29udHJvbGxlcihBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGhpc3RvZ3JhbV9uYW1lX3By
ZWZpeCkKICAgICA6IGFwbV9kYXRhX2R1bXBlcl8oYXBtX2RhdGFfZHVtcGVyKSwKLSAgICAgIGdh
aW5fY3VydmVfYXBwbGllcl8oNDgwMDAsIGFwbV9kYXRhX2R1bXBlcl8sIGhpc3RvZ3JhbV9uYW1l
X3ByZWZpeCkgeworICAgICAgbGltaXRlcl8oNDgwMDAsIGFwbV9kYXRhX2R1bXBlcl8sIGhpc3Rv
Z3JhbV9uYW1lX3ByZWZpeCkgewogICAvLyBEbyB1cGRhdGUgaGlzdG9ncmFtcy54bWwgd2hlbiBh
ZGRpbmcgbmFtZSBwcmVmaXhlcy4KICAgUlRDX0RDSEVDSyhoaXN0b2dyYW1fbmFtZV9wcmVmaXgg
PT0gIiIgfHwgaGlzdG9ncmFtX25hbWVfcHJlZml4ID09ICJUZXN0IiB8fAogICAgICAgICAgICAg
IGhpc3RvZ3JhbV9uYW1lX3ByZWZpeCA9PSAiQXVkaW9NaXhlciIgfHwKQEAgLTYxLDEyICs1Nywx
MiBAQCB2b2lkIEZpeGVkR2FpbkNvbnRyb2xsZXI6OlNldEdhaW4oZmxvYXQgZ2Fpbl90b19hcHBs
eV9kYikgewogICAvLyBSZXNldCB0aGUgZ2FpbiBjdXJ2ZSBhcHBsaWVyIHRvIHF1aWNrbHkgcmVh
Y3Qgb24gYWJydXB0IGxldmVsIGNoYW5nZXMKICAgLy8gY2F1c2VkIGJ5IGxhcmdlIGNoYW5nZXMg
b2YgdGhlIGFwcGxpZWQgZ2Fpbi4KICAgaWYgKHByZXZpb3VzX2FwcGxpZWRfZ2FpbmVkICE9IGdh
aW5fdG9fYXBwbHlfKSB7Ci0gICAgZ2Fpbl9jdXJ2ZV9hcHBsaWVyXy5SZXNldCgpOworICAgIGxp
bWl0ZXJfLlJlc2V0KCk7CiAgIH0KIH0KIAogdm9pZCBGaXhlZEdhaW5Db250cm9sbGVyOjpTZXRT
YW1wbGVSYXRlKHNpemVfdCBzYW1wbGVfcmF0ZV9oeikgewotICBnYWluX2N1cnZlX2FwcGxpZXJf
LlNldFNhbXBsZVJhdGUoc2FtcGxlX3JhdGVfaHopOworICBsaW1pdGVyXy5TZXRTYW1wbGVSYXRl
KHNhbXBsZV9yYXRlX2h6KTsKIH0KIAogdm9pZCBGaXhlZEdhaW5Db250cm9sbGVyOjpQcm9jZXNz
KEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBzaWduYWwpIHsKQEAgLTg0LDcgKzgwLDcgQEAgdm9pZCBG
aXhlZEdhaW5Db250cm9sbGVyOjpQcm9jZXNzKEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBzaWduYWwp
IHsKICAgfQogCiAgIC8vIFVzZSB0aGUgbGltaXRlci4KLSAgZ2Fpbl9jdXJ2ZV9hcHBsaWVyXy5Q
cm9jZXNzKHNpZ25hbCk7CisgIGxpbWl0ZXJfLlByb2Nlc3Moc2lnbmFsKTsKIAogICAvLyBEdW1w
IGRhdGEgZm9yIGRlYnVnLgogICBjb25zdCBhdXRvIGNoYW5uZWxfdmlldyA9IHNpZ25hbC5jaGFu
bmVsKDApOwpAQCAtMTAwLDYgKzk2LDYgQEAgdm9pZCBGaXhlZEdhaW5Db250cm9sbGVyOjpQcm9j
ZXNzKEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBzaWduYWwpIHsKIH0KIAogZmxvYXQgRml4ZWRHYWlu
Q29udHJvbGxlcjo6TGFzdEF1ZGlvTGV2ZWwoKSBjb25zdCB7Ci0gIHJldHVybiBnYWluX2N1cnZl
X2FwcGxpZXJfLkxhc3RBdWRpb0xldmVsKCk7CisgIHJldHVybiBsaW1pdGVyXy5MYXN0QXVkaW9M
ZXZlbCgpOwogfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWlu
X2NvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY2YWI4MTE3Mjk0
OTRlZDg2ZGJkODYyNmE2MzE5YmJhNjFhNGYxZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xsZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAy
MDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwot
Ci0jaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0ZJWEVEX0dBSU5fQ09OVFJP
TExFUl9IXwotI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9GSVhFRF9HQUlO
X0NPTlRST0xMRVJfSF8KLQotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L2dhaW5fY3VydmVfYXBwbGllci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9pbmNsdWRlL2F1ZGlvX2ZyYW1lX3ZpZXcuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFz
cyBBcG1EYXRhRHVtcGVyOwotCi1jbGFzcyBGaXhlZEdhaW5Db250cm9sbGVyIHsKLSBwdWJsaWM6
Ci0gIGV4cGxpY2l0IEZpeGVkR2FpbkNvbnRyb2xsZXIoQXBtRGF0YUR1bXBlciogYXBtX2RhdGFf
ZHVtcGVyKTsKLSAgRml4ZWRHYWluQ29udHJvbGxlcihBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9k
dW1wZXIsCi0gICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaGlzdG9ncmFtX25hbWVf
cHJlZml4KTsKLQotICB2b2lkIFByb2Nlc3MoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IHNpZ25hbCk7
Ci0KLSAgLy8gUmF0ZSBhbmQgZ2FpbiBtYXkgYmUgY2hhbmdlZCBhdCBhbnkgdGltZSAoYnV0IG5v
dCBjb25jdXJyZW50bHkKLSAgLy8gd2l0aCBhbnkgb3RoZXIgbWV0aG9kIGNhbGwpLgotICB2b2lk
IFNldEdhaW4oZmxvYXQgZ2Fpbl90b19hcHBseV9kYik7Ci0gIHZvaWQgU2V0U2FtcGxlUmF0ZShz
aXplX3Qgc2FtcGxlX3JhdGVfaHopOwotICBmbG9hdCBMYXN0QXVkaW9MZXZlbCgpIGNvbnN0Owot
Ci0gcHJpdmF0ZToKLSAgZmxvYXQgZ2Fpbl90b19hcHBseV8gPSAxLmY7Ci0gIEFwbURhdGFEdW1w
ZXIqIGFwbV9kYXRhX2R1bXBlcl8gPSBudWxscHRyOwotICBHYWluQ3VydmVBcHBsaWVyIGdhaW5f
Y3VydmVfYXBwbGllcl87Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAg
Ly8gTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfRklYRURfR0FJTl9DT05UUk9MTEVSX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xsZXJfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiMTczMmFhNDc2NDhhZDE5MGU2MjZmNjk2
Y2ZlNDkzODZkOTUyYTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCisr
KyAvZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0j
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9s
bGVyLmgiCi0KLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJhcGkv
YXJyYXlfdmlldy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2Fn
YzJfdGVzdGluZ19jb21tb24uaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi92ZWN0b3JfZmxvYXRfZnJhbWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9ndW5p
dC5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKLQotbmFt
ZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgewotCi1jb25zdGV4cHIgZmxvYXQga0lucHV0TGV2
ZWxMaW5lYXIgPSAxNTAwMC5mOwotCi1jb25zdGV4cHIgZmxvYXQga0dhaW5Ub0FwcGx5RGIgPSAx
NS5mOwotCi1mbG9hdCBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoRml4
ZWRHYWluQ29udHJvbGxlciogZml4ZWRfZ2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgaW5wdXRfbGV2ZWwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bV9mcmFtZXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50
IHNhbXBsZV9yYXRlKSB7Ci0gIC8vIEdpdmUgdGltZSB0byB0aGUgbGV2ZWwgZXRpbWF0b3IgdG8g
Y29udmVyZ2UuCi0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2ZyYW1lczsgKytpKSB7Ci0g
ICAgVmVjdG9yRmxvYXRGcmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUoCi0gICAgICAgIDEs
IHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KHNhbXBsZV9yYXRlLCAxMDApLCBpbnB1dF9sZXZlbCk7Ci0g
ICAgZml4ZWRfZ2MtPlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lLmZsb2F0X2ZyYW1l
X3ZpZXcoKSk7Ci0gIH0KLQotICAvLyBQcm9jZXNzIHRoZSBsYXN0IGZyYW1lIHdpdGggY29uc3Rh
bnQgaW5wdXQgbGV2ZWwuCi0gIFZlY3RvckZsb2F0RnJhbWUgdmVjdG9yc193aXRoX2Zsb2F0X2Zy
YW1lX2xhc3QoCi0gICAgICAxLCBydGM6OkNoZWNrZWREaXZFeGFjdChzYW1wbGVfcmF0ZSwgMTAw
KSwgaW5wdXRfbGV2ZWwpOwotICBmaXhlZF9nYy0+UHJvY2Vzcyh2ZWN0b3JzX3dpdGhfZmxvYXRf
ZnJhbWVfbGFzdC5mbG9hdF9mcmFtZV92aWV3KCkpOwotCi0gIC8vIFJldHVybiB0aGUgbGFzdCBz
YW1wbGUgZnJvbSB0aGUgbGFzdCBwcm9jZXNzZWQgZnJhbWUuCi0gIGNvbnN0IGF1dG8gY2hhbm5l
bCA9Ci0gICAgICB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWVfbGFzdC5mbG9hdF9mcmFtZV92aWV3
KCkuY2hhbm5lbCgwKTsKLSAgcmV0dXJuIGNoYW5uZWxbY2hhbm5lbC5zaXplKCkgLSAxXTsKLX0K
LQotc3RkOjp1bmlxdWVfcHRyPEFwbURhdGFEdW1wZXI+IEdldEFwbURhdGFEdW1wZXIoKSB7Ci0g
IHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxBcG1EYXRhRHVtcGVyPigwKTsKLX0KLQotc3RkOjp1
bmlxdWVfcHRyPEZpeGVkR2FpbkNvbnRyb2xsZXI+IENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIo
Ci0gICAgZmxvYXQgZ2Fpbl90b19hcHBseSwKLSAgICBzaXplX3QgcmF0ZSwKLSAgICBzdGQ6OnN0
cmluZyBoaXN0b2dyYW1fbmFtZV9wcmVmaXgsCi0gICAgQXBtRGF0YUR1bXBlciogdGVzdF9kYXRh
X2R1bXBlcikgewotICBzdGQ6OnVuaXF1ZV9wdHI8Rml4ZWRHYWluQ29udHJvbGxlcj4gZmdjID0K
LSAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZpeGVkR2FpbkNvbnRyb2xsZXI+KHRlc3RfZGF0YV9k
dW1wZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0
b2dyYW1fbmFtZV9wcmVmaXgpOwotICBmZ2MtPlNldEdhaW4oZ2Fpbl90b19hcHBseSk7Ci0gIGZn
Yy0+U2V0U2FtcGxlUmF0ZShyYXRlKTsKLSAgcmV0dXJuIGZnYzsKLX0KLQotc3RkOjp1bmlxdWVf
cHRyPEZpeGVkR2FpbkNvbnRyb2xsZXI+IENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIoCi0gICAg
ZmxvYXQgZ2Fpbl90b19hcHBseSwKLSAgICBzaXplX3QgcmF0ZSwKLSAgICBBcG1EYXRhRHVtcGVy
KiB0ZXN0X2RhdGFfZHVtcGVyKSB7Ci0gIHJldHVybiBDcmVhdGVGaXhlZEdhaW5Db250cm9sbGVy
KGdhaW5fdG9fYXBwbHksIHJhdGUsICIiLCB0ZXN0X2RhdGFfZHVtcGVyKTsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlCi0KLVRFU1QoQXV0b21hdGljR2FpbkNvbnRyb2xsZXIyRml4ZWREaWdpdGFsLCBD
cmVhdGVVc2UpIHsKLSAgY29uc3QgaW50IGtTYW1wbGVSYXRlID0gNDQwMDA7Ci0gIGF1dG8gdGVz
dF9kYXRhX2R1bXBlciA9IEdldEFwbURhdGFEdW1wZXIoKTsKLSAgc3RkOjp1bmlxdWVfcHRyPEZp
eGVkR2FpbkNvbnRyb2xsZXI+IGZpeGVkX2djID0gQ3JlYXRlRml4ZWRHYWluQ29udHJvbGxlcigK
LSAgICAgIGtHYWluVG9BcHBseURiLCBrU2FtcGxlUmF0ZSwgdGVzdF9kYXRhX2R1bXBlci5nZXQo
KSk7Ci0gIFZlY3RvckZsb2F0RnJhbWUgdmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lKAotICAgICAg
MSwgcnRjOjpDaGVja2VkRGl2RXhhY3Qoa1NhbXBsZVJhdGUsIDEwMCksIGtJbnB1dExldmVsTGlu
ZWFyKTsKLSAgYXV0byBmbG9hdF9mcmFtZSA9IHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZS5mbG9h
dF9mcmFtZV92aWV3KCk7Ci0gIGZpeGVkX2djLT5Qcm9jZXNzKGZsb2F0X2ZyYW1lKTsKLSAgY29u
c3QgYXV0byBjaGFubmVsID0gZmxvYXRfZnJhbWUuY2hhbm5lbCgwKTsKLSAgRVhQRUNUX0xUKGtJ
bnB1dExldmVsTGluZWFyLCBjaGFubmVsWzBdKTsKLX0KLQotVEVTVChBdXRvbWF0aWNHYWluQ29u
dHJvbGxlcjJGaXhlZERpZ2l0YWwsIENoZWNrU2F0dXJhdGlvbkJlaGF2aW9yV2l0aExpbWl0ZXIp
IHsKLSAgY29uc3QgZmxvYXQga0lucHV0TGV2ZWwgPSAzMjc2Ny5mOwotICBjb25zdCBzaXplX3Qg
a051bUZyYW1lcyA9IDU7Ci0gIGNvbnN0IHNpemVfdCBrU2FtcGxlUmF0ZSA9IDQyMDAwOwotCi0g
IGF1dG8gdGVzdF9kYXRhX2R1bXBlciA9IEdldEFwbURhdGFEdW1wZXIoKTsKLQotICBjb25zdCBh
dXRvIGdhaW5zX25vX3NhdHVyYXRpb24gPQotICAgICAgdGVzdDo6TGluU3BhY2UoMC4xLCB0ZXN0
OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzIC0gMC4wMSwgMTApOwotICBmb3IgKGNvbnN0IGF1
dG8gZ2Fpbl9kYiA6IGdhaW5zX25vX3NhdHVyYXRpb24pIHsKLSAgICAvLyBTaW5jZSB8dGVzdDo6
a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGc3wgPiB8Z2Fpbl9kYnwsIHRoZQotICAgIC8vIGxpbWl0
ZXIgd2lsbCBub3Qgc2F0dXJhdGUgdGhlIHNpZ25hbC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Rml4
ZWRHYWluQ29udHJvbGxlcj4gZml4ZWRfZ2Nfbm9fc2F0dXJhdGlvbiA9Ci0gICAgICAgIENyZWF0
ZUZpeGVkR2FpbkNvbnRyb2xsZXIoZ2Fpbl9kYiwga1NhbXBsZVJhdGUsIHRlc3RfZGF0YV9kdW1w
ZXIuZ2V0KCkpOwotCi0gICAgLy8gU2F0dXJhdGlvbiBub3QgZXhwZWN0ZWQuCi0gICAgU0NPUEVE
X1RSQUNFKHN0ZDo6dG9fc3RyaW5nKGdhaW5fZGIpKTsKLSAgICBFWFBFQ1RfTFQoCi0gICAgICAg
IFJ1bkZpeGVkR2FpbkNvbnRyb2xsZXJXaXRoQ29uc3RhbnRJbnB1dCgKLSAgICAgICAgICAgIGZp
eGVkX2djX25vX3NhdHVyYXRpb24uZ2V0KCksIGtJbnB1dExldmVsLCBrTnVtRnJhbWVzLCBrU2Ft
cGxlUmF0ZSksCi0gICAgICAgIDMyNzY3LmYpOwotICB9Ci0KLSAgY29uc3QgYXV0byBnYWluc19z
YXR1cmF0aW9uID0KLSAgICAgIHRlc3Q6OkxpblNwYWNlKHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRM
ZXZlbERiRnMgKyAwLjAxLCAxMCwgMTApOwotICBmb3IgKGNvbnN0IGF1dG8gZ2Fpbl9kYiA6IGdh
aW5zX3NhdHVyYXRpb24pIHsKLSAgICAvLyBTaW5jZSB8dGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExl
dmVsRGJGc3wgPCB8Z2FpbnwsIHRoZSBsaW1pdGVyCi0gICAgLy8gd2lsbCBzYXR1cmF0ZSB0aGUg
c2lnbmFsLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxGaXhlZEdhaW5Db250cm9sbGVyPiBmaXhlZF9n
Y19zYXR1cmF0aW9uID0KLSAgICAgICAgQ3JlYXRlRml4ZWRHYWluQ29udHJvbGxlcihnYWluX2Ri
LCBrU2FtcGxlUmF0ZSwgdGVzdF9kYXRhX2R1bXBlci5nZXQoKSk7Ci0KLSAgICAvLyBTYXR1cmF0
aW9uIGV4cGVjdGVkLgotICAgIFNDT1BFRF9UUkFDRShzdGQ6OnRvX3N0cmluZyhnYWluX2RiKSk7
Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKAotICAgICAgICBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0
aENvbnN0YW50SW5wdXQoCi0gICAgICAgICAgICBmaXhlZF9nY19zYXR1cmF0aW9uLmdldCgpLCBr
SW5wdXRMZXZlbCwga051bUZyYW1lcywga1NhbXBsZVJhdGUpLAotICAgICAgICAzMjc2Ny5mKTsK
LSAgfQotfQotCi1URVNUKEF1dG9tYXRpY0dhaW5Db250cm9sbGVyMkZpeGVkRGlnaXRhbCwKLSAg
ICAgQ2hlY2tTYXR1cmF0aW9uQmVoYXZpb3JXaXRoTGltaXRlclNpbmdsZVNhbXBsZSkgewotICBj
b25zdCBmbG9hdCBrSW5wdXRMZXZlbCA9IDMyNzY3LmY7Ci0gIGNvbnN0IHNpemVfdCBrTnVtRnJh
bWVzID0gNTsKLSAgY29uc3Qgc2l6ZV90IGtTYW1wbGVSYXRlID0gODAwMDsKLQotICBhdXRvIHRl
c3RfZGF0YV9kdW1wZXIgPSBHZXRBcG1EYXRhRHVtcGVyKCk7Ci0KLSAgY29uc3QgYXV0byBnYWlu
c19ub19zYXR1cmF0aW9uID0KLSAgICAgIHRlc3Q6OkxpblNwYWNlKDAuMSwgdGVzdDo6a0xpbWl0
ZXJNYXhJbnB1dExldmVsRGJGcyAtIDAuMDEsIDEwKTsKLSAgZm9yIChjb25zdCBhdXRvIGdhaW5f
ZGIgOiBnYWluc19ub19zYXR1cmF0aW9uKSB7Ci0gICAgLy8gU2luY2UgfGdhaW58ID4gfHRlc3Q6
OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnN8LCB0aGUgbGltaXRlciB3aWxsCi0gICAgLy8gbm90
IHNhdHVyYXRlIHRoZSBzaWduYWwuCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZpeGVkR2FpbkNvbnRy
b2xsZXI+IGZpeGVkX2djX25vX3NhdHVyYXRpb24gPQotICAgICAgICBDcmVhdGVGaXhlZEdhaW5D
b250cm9sbGVyKGdhaW5fZGIsIGtTYW1wbGVSYXRlLCB0ZXN0X2RhdGFfZHVtcGVyLmdldCgpKTsK
LQotICAgIC8vIFNhdHVyYXRpb24gbm90IGV4cGVjdGVkLgotICAgIFNDT1BFRF9UUkFDRShzdGQ6
OnRvX3N0cmluZyhnYWluX2RiKSk7Ci0gICAgRVhQRUNUX0xUKAotICAgICAgICBSdW5GaXhlZEdh
aW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoCi0gICAgICAgICAgICBmaXhlZF9nY19ub19z
YXR1cmF0aW9uLmdldCgpLCBrSW5wdXRMZXZlbCwga051bUZyYW1lcywga1NhbXBsZVJhdGUpLAot
ICAgICAgICAzMjc2Ny5mKTsKLSAgfQotCi0gIGNvbnN0IGF1dG8gZ2FpbnNfc2F0dXJhdGlvbiA9
Ci0gICAgICB0ZXN0OjpMaW5TcGFjZSh0ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzICsg
MC4wMSwgMTAsIDEwKTsKLSAgZm9yIChjb25zdCBhdXRvIGdhaW5fZGIgOiBnYWluc19zYXR1cmF0
aW9uKSB7Ci0gICAgLy8gU2luZ2UgfGdhaW58IDwgfHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZl
bERiRnN8LCB0aGUgbGltaXRlciB3aWxsCi0gICAgLy8gc2F0dXJhdGUgdGhlIHNpZ25hbC4KLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Rml4ZWRHYWluQ29udHJvbGxlcj4gZml4ZWRfZ2Nfc2F0dXJhdGlv
biA9Ci0gICAgICAgIENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIoZ2Fpbl9kYiwga1NhbXBsZVJh
dGUsIHRlc3RfZGF0YV9kdW1wZXIuZ2V0KCkpOwotCi0gICAgLy8gU2F0dXJhdGlvbiBleHBlY3Rl
ZC4KLSAgICBTQ09QRURfVFJBQ0Uoc3RkOjp0b19zdHJpbmcoZ2Fpbl9kYikpOwotICAgIEVYUEVD
VF9GTE9BVF9FUSgKLSAgICAgICAgUnVuRml4ZWRHYWluQ29udHJvbGxlcldpdGhDb25zdGFudElu
cHV0KAotICAgICAgICAgICAgZml4ZWRfZ2Nfc2F0dXJhdGlvbi5nZXQoKSwga0lucHV0TGV2ZWws
IGtOdW1GcmFtZXMsIGtTYW1wbGVSYXRlKSwKLSAgICAgICAgMzI3NjcuZik7Ci0gIH0KLX0KLQot
VEVTVChBdXRvbWF0aWNHYWluQ29udHJvbGxlcjJGaXhlZERpZ2l0YWwsIEdhaW5TaG91bGRDaGFu
Z2VPblNldEdhaW4pIHsKLSAgY29uc3RleHByIGZsb2F0IGtJbnB1dExldmVsID0gMTAwMC5mOwot
ICBjb25zdGV4cHIgc2l6ZV90IGtOdW1GcmFtZXMgPSA1OwotICBjb25zdGV4cHIgc2l6ZV90IGtT
YW1wbGVSYXRlID0gODAwMDsKLSAgY29uc3RleHByIGZsb2F0IGtHYWluRGJOb0NoYW5nZSA9IDAu
ZjsKLSAgY29uc3RleHByIGZsb2F0IGtHYWluRGJGYWN0b3IxMCA9IDIwLmY7Ci0KLSAgYXV0byB0
ZXN0X2RhdGFfZHVtcGVyID0gR2V0QXBtRGF0YUR1bXBlcigpOwotICBzdGQ6OnVuaXF1ZV9wdHI8
Rml4ZWRHYWluQ29udHJvbGxlcj4gZml4ZWRfZ2Nfbm9fc2F0dXJhdGlvbiA9Ci0gICAgICBDcmVh
dGVGaXhlZEdhaW5Db250cm9sbGVyKGtHYWluRGJOb0NoYW5nZSwga1NhbXBsZVJhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZGF0YV9kdW1wZXIuZ2V0KCkpOwotCi0g
IC8vIFNpZ25hbCBsZXZlbCBpcyB1bmNoYW5nZWQgd2l0aCAwIGRiIGdhaW4uCi0gIEVYUEVDVF9G
TE9BVF9FUSgKLSAgICAgIFJ1bkZpeGVkR2FpbkNvbnRyb2xsZXJXaXRoQ29uc3RhbnRJbnB1dCgK
LSAgICAgICAgICBmaXhlZF9nY19ub19zYXR1cmF0aW9uLmdldCgpLCBrSW5wdXRMZXZlbCwga051
bUZyYW1lcywga1NhbXBsZVJhdGUpLAotICAgICAga0lucHV0TGV2ZWwpOwotCi0gIGZpeGVkX2dj
X25vX3NhdHVyYXRpb24tPlNldEdhaW4oa0dhaW5EYkZhY3RvcjEwKTsKLQotICAvLyArMjBkYiBz
aG91bGQgaW5jcmVhc2Ugc2lnbmFsIGJ5IGEgZmFjdG9yIG9mIDEwLgotICBFWFBFQ1RfRkxPQVRf
RVEoCi0gICAgICBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoCi0gICAg
ICAgICAgZml4ZWRfZ2Nfbm9fc2F0dXJhdGlvbi5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFt
ZXMsIGtTYW1wbGVSYXRlKSwKLSAgICAgIGtJbnB1dExldmVsICogMTApOwotfQotCi1URVNUKEF1
dG9tYXRpY0dhaW5Db250cm9sbGVyMkZpeGVkRGlnaXRhbCwKLSAgICAgU2V0R2FpblNob3VsZEJl
RmFzdEFuZFRpbWVJbnZhcmlhbnQpIHsKLSAgLy8gTnVtYmVyIG9mIGZyYW1lcyByZXF1aXJlZCBm
b3IgdGhlIGZpeGVkIGdhaW4gY29udHJvbGxlciB0byBhZGFwdCBvbiB0aGUKLSAgLy8gaW5wdXQg
c2lnbmFsIHdoZW4gdGhlIGdhaW4gY2hhbmdlcy4KLSAgY29uc3RleHByIHNpemVfdCBrTnVtRnJh
bWVzID0gNTsKLQotICBjb25zdGV4cHIgZmxvYXQga0lucHV0TGV2ZWwgPSAxMDAwLmY7Ci0gIGNv
bnN0ZXhwciBzaXplX3Qga1NhbXBsZVJhdGUgPSA4MDAwOwotICBjb25zdGV4cHIgZmxvYXQga0dh
aW5EYkxvdyA9IDAuZjsKLSAgY29uc3RleHByIGZsb2F0IGtHYWluRGJIaWdoID0gNDAuZjsKLSAg
c3RhdGljX2Fzc2VydChrR2FpbkRiTG93IDwga0dhaW5EYkhpZ2gsICIiKTsKLQotICBhdXRvIHRl
c3RfZGF0YV9kdW1wZXIgPSBHZXRBcG1EYXRhRHVtcGVyKCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxG
aXhlZEdhaW5Db250cm9sbGVyPiBmaXhlZF9nYyA9IENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIo
Ci0gICAgICBrR2FpbkRiTG93LCBrU2FtcGxlUmF0ZSwgdGVzdF9kYXRhX2R1bXBlci5nZXQoKSk7
Ci0KLSAgZml4ZWRfZ2MtPlNldEdhaW4oa0dhaW5EYkxvdyk7Ci0gIGNvbnN0IGZsb2F0IG91dHB1
dF9sZXZlbF9wcmUgPSBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoCi0g
ICAgICBmaXhlZF9nYy5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtTYW1wbGVSYXRl
KTsKLQotICBmaXhlZF9nYy0+U2V0R2FpbihrR2FpbkRiSGlnaCk7Ci0gIFJ1bkZpeGVkR2FpbkNv
bnRyb2xsZXJXaXRoQ29uc3RhbnRJbnB1dChmaXhlZF9nYy5nZXQoKSwga0lucHV0TGV2ZWwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTnVtRnJhbWVzLCBrU2Ft
cGxlUmF0ZSk7Ci0KLSAgZml4ZWRfZ2MtPlNldEdhaW4oa0dhaW5EYkxvdyk7Ci0gIGNvbnN0IGZs
b2F0IG91dHB1dF9sZXZlbF9wb3N0ID0gUnVuRml4ZWRHYWluQ29udHJvbGxlcldpdGhDb25zdGFu
dElucHV0KAotICAgICAgZml4ZWRfZ2MuZ2V0KCksIGtJbnB1dExldmVsLCBrTnVtRnJhbWVzLCBr
U2FtcGxlUmF0ZSk7Ci0KLSAgRVhQRUNUX0VRKG91dHB1dF9sZXZlbF9wcmUsIG91dHB1dF9sZXZl
bF9wb3N0KTsKLX0KLQotVEVTVChBdXRvbWF0aWNHYWluQ29udHJvbGxlcjJGaXhlZERpZ2l0YWws
IFJlZ2lvbkhpc3RvZ3JhbUlzVXBkYXRlZCkgewotICBjb25zdGV4cHIgc2l6ZV90IGtTYW1wbGVS
YXRlID0gODAwMDsKLSAgY29uc3RleHByIGZsb2F0IGtHYWluRGIgPSAwLmY7Ci0gIGNvbnN0ZXhw
ciBmbG9hdCBrSW5wdXRMZXZlbCA9IDEwMDAuZjsKLSAgY29uc3RleHByIHNpemVfdCBrTnVtRnJh
bWVzID0gNTsKLQotICBtZXRyaWNzOjpSZXNldCgpOwotCi0gIGF1dG8gdGVzdF9kYXRhX2R1bXBl
ciA9IEdldEFwbURhdGFEdW1wZXIoKTsKLSAgc3RkOjp1bmlxdWVfcHRyPEZpeGVkR2FpbkNvbnRy
b2xsZXI+IGZpeGVkX2djX25vX3NhdHVyYXRpb24gPQotICAgICAgQ3JlYXRlRml4ZWRHYWluQ29u
dHJvbGxlcihrR2FpbkRiLCBrU2FtcGxlUmF0ZSwgIlRlc3QiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X2RhdGFfZHVtcGVyLmdldCgpKTsKLQotICBzdGF0aWNfY2FzdDx2
b2lkPihSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoCi0gICAgICBmaXhl
ZF9nY19ub19zYXR1cmF0aW9uLmdldCgpLCBrSW5wdXRMZXZlbCwga051bUZyYW1lcywga1NhbXBs
ZVJhdGUpKTsKLQotICAvLyBEZXN0cm95aW5nIEZpeGVkR2FpbkNvbnRyb2xsZXIgc2hvdWxkIGNh
dXNlIHRoZSBsYXN0IGxpbWl0ZXIgcmVnaW9uIHRvIGJlCi0gIC8vIGxvZ2dlZC4KLSAgZml4ZWRf
Z2Nfbm9fc2F0dXJhdGlvbi5yZXNldCgpOwotCi0gIEVYUEVDVF9FUSgxLCBtZXRyaWNzOjpOdW1T
YW1wbGVzKAotICAgICAgICAgICAgICAgICAgICJXZWJSVEMuQXVkaW8uVGVzdC5GaXhlZERpZ2l0
YWxHYWluQ3VydmVSZWdpb24uSWRlbnRpdHkiKSk7Ci0gIEVYUEVDVF9FUSgwLCBtZXRyaWNzOjpO
dW1TYW1wbGVzKAotICAgICAgICAgICAgICAgICAgICJXZWJSVEMuQXVkaW8uVGVzdC5GaXhlZERp
Z2l0YWxHYWluQ3VydmVSZWdpb24uS25lZSIpKTsKLSAgRVhQRUNUX0VRKDAsIG1ldHJpY3M6Ok51
bVNhbXBsZXMoCi0gICAgICAgICAgICAgICAgICAgIldlYlJUQy5BdWRpby5UZXN0LkZpeGVkRGln
aXRhbEdhaW5DdXJ2ZVJlZ2lvbi5MaW1pdGVyIikpOwotICBFWFBFQ1RfRVEoMCwgbWV0cmljczo6
TnVtU2FtcGxlcygKLSAgICAgICAgICAgICAgICAgICAiV2ViUlRDLkF1ZGlvLlRlc3QuRml4ZWRE
aWdpdGFsR2FpbkN1cnZlUmVnaW9uLlNhdHVyYXRpb24iKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fYXBwbGllci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2dhaW5fYXBwbGllci5jYwppbmRleCAzOGViMWRlMDNmOTU4OWJiZDdmZWQw
NDRiODMwZTg4ZmMyOGMxNDcwLi44YzQzNzE3N2UzY2JmYTZiZTUwNmE2YmRmNTY3NmE3MGY4OWIx
Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvZ2Fpbl9hcHBsaWVyLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuaCIKIAorI2luY2x1
ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvYWdjMl9jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21p
bm1heC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2dhaW5fYXBwbGllci5oCmluZGV4IGUyNTY3YjE5ZGJiZGM5YTNiZTE4ZGI0
MTQ2YzZhMmFiMDA5ZGI5Y2EuLjdmOWYwMGUwNzYwMGUyYzgxODQ4OWUyYzYxMWU3YTMyNmJjMzAw
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fYXBwbGllci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2dhaW5fYXBwbGllci5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVM
RVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0dBSU5fQVBQTElFUl9IXwogI2RlZmluZSBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUdDMl9HQUlOX0FQUExJRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9f
ZnJhbWVfdmlldy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2dhaW5fY3VydmVfYXBwbGllci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fY3VydmVf
YXBwbGllci5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVjYTIxYjk4ZTcxODE3
ODcyYTA1NDNhMGYwOWU4ODU5MWJkYWI1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2N1cnZlX2FwcGxpZXIuY2MKKysr
IC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2N1cnZlX2FwcGxpZXIu
aCIKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxj
bWF0aD4KLQotI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIHsKLQotLy8g
VGhpcyBjb25zdGFudCBhZmZlY3RzIHRoZSB3YXkgc2NhbGluZyBmYWN0b3JzIGFyZSBpbnRlcnBv
bGF0ZWQgZm9yIHRoZSBmaXJzdAotLy8gc3ViLWZyYW1lIG9mIGEgZnJhbWUuIE9ubHkgaW4gdGhl
IGNhc2UgaW4gd2hpY2ggdGhlIGZpcnN0IHN1Yi1mcmFtZSBoYXMgYW4KLS8vIGVzdGltYXRlZCBs
ZXZlbCB3aGljaCBpcyBncmVhdGVyIHRoYW4gdGhlIHRoYXQgb2YgdGhlIHByZXZpb3VzIGFuYWx5
emVkCi0vLyBzdWItZnJhbWUsIGxpbmVhciBpbnRlcnBvbGF0aW9uIGlzIHJlcGxhY2VkIHdpdGgg
YSBwb3dlciBmdW5jdGlvbiB3aGljaAotLy8gcmVkdWNlcyB0aGUgY2hhbmNlcyBvZiBvdmVyLXNo
b290aW5nIChhbmQgaGVuY2Ugc2F0dXJhdGlvbiksIGhvd2V2ZXIgcmVkdWNpbmcKLS8vIHRoZSBm
aXhlZCBnYWluIGVmZmVjdGl2ZW5lc3MuCi1jb25zdGV4cHIgZmxvYXQga0F0dGFja0ZpcnN0U3Vi
ZnJhbWVJbnRlcnBvbGF0aW9uUG93ZXIgPSA4LmY7Ci0KLXZvaWQgSW50ZXJwb2xhdGVGaXJzdFN1
YmZyYW1lKGZsb2F0IGxhc3RfZmFjdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgY3VycmVudF9mYWN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6
OkFycmF5VmlldzxmbG9hdD4gc3ViZnJhbWUpIHsKLSAgY29uc3QgYXV0byBuID0gc3ViZnJhbWUu
c2l6ZSgpOwotICBjb25zdGV4cHIgYXV0byBwID0ga0F0dGFja0ZpcnN0U3ViZnJhbWVJbnRlcnBv
bGF0aW9uUG93ZXI7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgc3Vi
ZnJhbWVbaV0gPSBzdGQ6OnBvdygxLmYgLSBpIC8gbiwgcCkgKiAobGFzdF9mYWN0b3IgLSBjdXJy
ZW50X2ZhY3RvcikgKwotICAgICAgICAgICAgICAgICAgY3VycmVudF9mYWN0b3I7Ci0gIH0KLX0K
LQotdm9pZCBDb21wdXRlUGVyU2FtcGxlU3ViZnJhbWVGYWN0b3JzKAotICAgIGNvbnN0IHN0ZDo6
YXJyYXk8ZmxvYXQsIGtTdWJGcmFtZXNJbkZyYW1lICsgMT4mIHNjYWxpbmdfZmFjdG9ycywKLSAg
ICBzaXplX3Qgc2FtcGxlc19wZXJfY2hhbm5lbCwKLSAgICBydGM6OkFycmF5VmlldzxmbG9hdD4g
cGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMpIHsKLSAgY29uc3Qgc2l6ZV90IG51bV9zdWJmcmFt
ZXMgPSBzY2FsaW5nX2ZhY3RvcnMuc2l6ZSgpIC0gMTsKLSAgY29uc3Qgc2l6ZV90IHN1YmZyYW1l
X3NpemUgPQotICAgICAgcnRjOjpDaGVja2VkRGl2RXhhY3Qoc2FtcGxlc19wZXJfY2hhbm5lbCwg
bnVtX3N1YmZyYW1lcyk7Ci0KLSAgLy8gSGFuZGxlIGZpcnN0IHN1Yi1mcmFtZSBkaWZmZXJlbnRs
eSBpbiBjYXNlIG9mIGF0dGFjay4KLSAgY29uc3QgYm9vbCBpc19hdHRhY2sgPSBzY2FsaW5nX2Zh
Y3RvcnNbMF0gPiBzY2FsaW5nX2ZhY3RvcnNbMV07Ci0gIGlmIChpc19hdHRhY2spIHsKLSAgICBJ
bnRlcnBvbGF0ZUZpcnN0U3ViZnJhbWUoCi0gICAgICAgIHNjYWxpbmdfZmFjdG9yc1swXSwgc2Nh
bGluZ19mYWN0b3JzWzFdLAotICAgICAgICBydGM6OkFycmF5VmlldzxmbG9hdD4oCi0gICAgICAg
ICAgICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9ycy5zdWJ2aWV3KDAsIHN1YmZyYW1lX3NpemUp
KSk7Ci0gIH0KLQotICBmb3IgKHNpemVfdCBpID0gaXNfYXR0YWNrID8gMSA6IDA7IGkgPCBudW1f
c3ViZnJhbWVzOyArK2kpIHsKLSAgICBjb25zdCBzaXplX3Qgc3ViZnJhbWVfc3RhcnQgPSBpICog
c3ViZnJhbWVfc2l6ZTsKLSAgICBjb25zdCBmbG9hdCBzY2FsaW5nX3N0YXJ0ID0gc2NhbGluZ19m
YWN0b3JzW2ldOwotICAgIGNvbnN0IGZsb2F0IHNjYWxpbmdfZW5kID0gc2NhbGluZ19mYWN0b3Jz
W2kgKyAxXTsKLSAgICBjb25zdCBmbG9hdCBzY2FsaW5nX2RpZmYgPSAoc2NhbGluZ19lbmQgLSBz
Y2FsaW5nX3N0YXJ0KSAvIHN1YmZyYW1lX3NpemU7Ci0gICAgZm9yIChzaXplX3QgaiA9IDA7IGog
PCBzdWJmcmFtZV9zaXplOyArK2opIHsKLSAgICAgIHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3Jz
W3N1YmZyYW1lX3N0YXJ0ICsgal0gPQotICAgICAgICAgIHNjYWxpbmdfc3RhcnQgKyBzY2FsaW5n
X2RpZmYgKiBqOwotICAgIH0KLSAgfQotfQotCi12b2lkIFNjYWxlU2FtcGxlcyhydGM6OkFycmF5
Vmlldzxjb25zdCBmbG9hdD4gcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMsCi0gICAgICAgICAg
ICAgICAgICBBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFsKSB7Ci0gIGNvbnN0IHNpemVfdCBz
YW1wbGVzX3Blcl9jaGFubmVsID0gc2lnbmFsLnNhbXBsZXNfcGVyX2NoYW5uZWwoKTsKLSAgUlRD
X0RDSEVDS19FUShzYW1wbGVzX3Blcl9jaGFubmVsLCBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9y
cy5zaXplKCkpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpZ25hbC5udW1fY2hhbm5lbHMo
KTsgKytpKSB7Ci0gICAgYXV0byBjaGFubmVsID0gc2lnbmFsLmNoYW5uZWwoaSk7Ci0gICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCBzYW1wbGVzX3Blcl9jaGFubmVsOyArK2opIHsKLSAgICAgIGNo
YW5uZWxbal0gKj0gcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNbal07Ci0gICAgfQotICB9Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1HYWluQ3VydmVBcHBsaWVyOjpHYWluQ3VydmVBcHBsaWVy
KHNpemVfdCBzYW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBoaXN0b2dyYW1fbmFtZSkKLSAgICA6IGludGVycF9n
YWluX2N1cnZlXyhhcG1fZGF0YV9kdW1wZXIsIGhpc3RvZ3JhbV9uYW1lKSwKLSAgICAgIGxldmVs
X2VzdGltYXRvcl8oc2FtcGxlX3JhdGVfaHosIGFwbV9kYXRhX2R1bXBlciksCi0gICAgICBhcG1f
ZGF0YV9kdW1wZXJfKGFwbV9kYXRhX2R1bXBlcikge30KLQotR2FpbkN1cnZlQXBwbGllcjo6fkdh
aW5DdXJ2ZUFwcGxpZXIoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgR2FpbkN1cnZlQXBwbGllcjo6UHJv
Y2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFsKSB7Ci0gIGNvbnN0IGF1dG8gbGV2ZWxf
ZXN0aW1hdGUgPSBsZXZlbF9lc3RpbWF0b3JfLkNvbXB1dGVMZXZlbChzaWduYWwpOwotCi0gIFJU
Q19EQ0hFQ0tfRVEobGV2ZWxfZXN0aW1hdGUuc2l6ZSgpICsgMSwgc2NhbGluZ19mYWN0b3JzXy5z
aXplKCkpOwotICBzY2FsaW5nX2ZhY3RvcnNfWzBdID0gbGFzdF9zY2FsaW5nX2ZhY3Rvcl87Ci0g
IHN0ZDo6dHJhbnNmb3JtKGxldmVsX2VzdGltYXRlLmJlZ2luKCksIGxldmVsX2VzdGltYXRlLmVu
ZCgpLAotICAgICAgICAgICAgICAgICBzY2FsaW5nX2ZhY3RvcnNfLmJlZ2luKCkgKyAxLCBbdGhp
c10oZmxvYXQgeCkgewotICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcnBfZ2Fpbl9jdXJ2
ZV8uTG9va1VwR2FpblRvQXBwbHkoeCk7Ci0gICAgICAgICAgICAgICAgIH0pOwotCi0gIGNvbnN0
IHNpemVfdCBzYW1wbGVzX3Blcl9jaGFubmVsID0gc2lnbmFsLnNhbXBsZXNfcGVyX2NoYW5uZWwo
KTsKLSAgUlRDX0RDSEVDS19MRShzYW1wbGVzX3Blcl9jaGFubmVsLCBrTWF4aW1hbE51bWJlck9m
U2FtcGxlc1BlckNoYW5uZWwpOwotCi0gIGF1dG8gcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMg
PSBydGM6OkFycmF5VmlldzxmbG9hdD4oCi0gICAgICAmcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3Rv
cnNfWzBdLCBzYW1wbGVzX3Blcl9jaGFubmVsKTsKLSAgQ29tcHV0ZVBlclNhbXBsZVN1YmZyYW1l
RmFjdG9ycyhzY2FsaW5nX2ZhY3RvcnNfLCBzYW1wbGVzX3Blcl9jaGFubmVsLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzKTsKLSAg
U2NhbGVTYW1wbGVzKHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzLCBzaWduYWwpOwotCi0gIGxh
c3Rfc2NhbGluZ19mYWN0b3JfID0gc2NhbGluZ19mYWN0b3JzXy5iYWNrKCk7Ci0KLSAgLy8gRHVt
cCBkYXRhIGZvciBkZWJ1Zy4KLSAgYXBtX2RhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWdjMl9nYWlu
X2N1cnZlX2FwcGxpZXJfc2NhbGluZ19mYWN0b3JzIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVzX3Blcl9jaGFubmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBl
cl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzXy5kYXRhKCkpOwotfQotCi1JbnRlcnBvbGF0ZWRHYWlu
Q3VydmU6OlN0YXRzIEdhaW5DdXJ2ZUFwcGxpZXI6OkdldEdhaW5DdXJ2ZVN0YXRzKCkgY29uc3Qg
ewotICByZXR1cm4gaW50ZXJwX2dhaW5fY3VydmVfLmdldF9zdGF0cygpOwotfQotCi12b2lkIEdh
aW5DdXJ2ZUFwcGxpZXI6OlNldFNhbXBsZVJhdGUoc2l6ZV90IHNhbXBsZV9yYXRlX2h6KSB7Ci0g
IGxldmVsX2VzdGltYXRvcl8uU2V0U2FtcGxlUmF0ZShzYW1wbGVfcmF0ZV9oeik7Ci0gIC8vIENo
ZWNrIHRoYXQgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNfIGlzIGxhcmdlIGVub3VnaC4KLSAg
UlRDX0RDSEVDS19MRShzYW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICAgICAgICBrTWF4aW1hbE51
bWJlck9mU2FtcGxlc1BlckNoYW5uZWwgKiAxMDAwIC8ga0ZyYW1lRHVyYXRpb25Ncyk7Ci19Ci0K
LXZvaWQgR2FpbkN1cnZlQXBwbGllcjo6UmVzZXQoKSB7Ci0gIGxldmVsX2VzdGltYXRvcl8uUmVz
ZXQoKTsKLX0KLQotZmxvYXQgR2FpbkN1cnZlQXBwbGllcjo6TGFzdEF1ZGlvTGV2ZWwoKSBjb25z
dCB7Ci0gIHJldHVybiBsZXZlbF9lc3RpbWF0b3JfLkxhc3RBdWRpb0xldmVsKCk7Ci19Ci0KLX0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fY3Vy
dmVfYXBwbGllci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwYmUxOWUwNjk0NGM4M2MxMmVkNjk1Y2JjNTAwNzJk
ZDhlYmEzNGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
MyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfQUdDMl9HQUlOX0NVUlZFX0FQUExJRVJfSF8KLSNkZWZpbmUgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0FHQzJfR0FJTl9DVVJWRV9BUFBMSUVSX0hfCi0KLSNpbmNsdWRlIDx2
ZWN0b3I+Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9k
aWdpdGFsX2xldmVsX2VzdGltYXRvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fZnJhbWVfdmlldy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBB
cG1EYXRhRHVtcGVyOwotCi1jbGFzcyBHYWluQ3VydmVBcHBsaWVyIHsKLSBwdWJsaWM6Ci0gIEdh
aW5DdXJ2ZUFwcGxpZXIoc2l6ZV90IHNhbXBsZV9yYXRlX2h6LAotICAgICAgICAgICAgICAgICAg
IEFwbURhdGFEdW1wZXIqIGFwbV9kYXRhX2R1bXBlciwKLSAgICAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZyBoaXN0b2dyYW1fbmFtZV9wcmVmaXgpOwotCi0gIH5HYWluQ3VydmVBcHBsaWVyKCk7
Ci0KLSAgdm9pZCBQcm9jZXNzKEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBzaWduYWwpOwotICBJbnRl
cnBvbGF0ZWRHYWluQ3VydmU6OlN0YXRzIEdldEdhaW5DdXJ2ZVN0YXRzKCkgY29uc3Q7Ci0KLSAg
Ly8gU3VwcG9ydGVkIHJhdGVzIG11c3QgYmUKLSAgLy8gKiBzdXBwb3J0ZWQgYnkgRml4ZWREaWdp
dGFsTGV2ZWxFc3RpbWF0b3IKLSAgLy8gKiBiZWxvdyBrTWF4aW1hbE51bWJlck9mU2FtcGxlc1Bl
ckNoYW5uZWwqMTAwMC9rRnJhbWVEdXJhdGlvbk1zCi0gIC8vICAgc28gdGhhdCBzYW1wbGVzX3Bl
cl9jaGFubmVsIGZpdCBpbiB0aGUKLSAgLy8gICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc18g
YXJyYXkuCi0gIHZvaWQgU2V0U2FtcGxlUmF0ZShzaXplX3Qgc2FtcGxlX3JhdGVfaHopOwotCi0g
IC8vIFJlc2V0cyB0aGUgaW50ZXJuYWwgc3RhdGUuCi0gIHZvaWQgUmVzZXQoKTsKLQotICBmbG9h
dCBMYXN0QXVkaW9MZXZlbCgpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgY29uc3QgSW50ZXJwb2xh
dGVkR2FpbkN1cnZlIGludGVycF9nYWluX2N1cnZlXzsKLSAgRml4ZWREaWdpdGFsTGV2ZWxFc3Rp
bWF0b3IgbGV2ZWxfZXN0aW1hdG9yXzsKLSAgQXBtRGF0YUR1bXBlciogY29uc3QgYXBtX2RhdGFf
ZHVtcGVyXyA9IG51bGxwdHI7Ci0KLSAgLy8gV29yayBhcnJheSBjb250YWluaW5nIHRoZSBzdWIt
ZnJhbWUgc2NhbGluZyBmYWN0b3JzIHRvIGJlIGludGVycG9sYXRlZC4KLSAgc3RkOjphcnJheTxm
bG9hdCwga1N1YkZyYW1lc0luRnJhbWUgKyAxPiBzY2FsaW5nX2ZhY3RvcnNfID0ge307Ci0gIHN0
ZDo6YXJyYXk8ZmxvYXQsIGtNYXhpbWFsTnVtYmVyT2ZTYW1wbGVzUGVyQ2hhbm5lbD4KLSAgICAg
IHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzXyA9IHt9OwotICBmbG9hdCBsYXN0X3NjYWxpbmdf
ZmFjdG9yXyA9IDEuZjsKLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEdhaW5DdXJ2
ZUFwcGxpZXIpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0dBSU5fQ1VSVkVfQVBQTElFUl9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwZjc1ZjYyYzQwN2NiYjNkOTkwNDhmNDA4MmJiYzdjNDlhMWZmMGM4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2dhaW5fY3VydmVfYXBwbGllcl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0x
LDYwICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmgiCi0KLSNpbmNsdWRlICJj
b21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191dGlsLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX3Rlc3RpbmdfY29tbW9uLmgiCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmVjdG9yX2Zsb2F0X2ZyYW1lLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLVRFU1QoR2Fp
bkN1cnZlQXBwbGllciwgR2FpbkN1cnZlQXBwbGllclNob3VsZENvbnN0cnVjdEFuZFJ1bikgewot
ICBjb25zdCBpbnQgc2FtcGxlX3JhdGVfaHogPSA0ODAwMDsKLSAgQXBtRGF0YUR1bXBlciBhcG1f
ZGF0YV9kdW1wZXIoMCk7Ci0KLSAgR2FpbkN1cnZlQXBwbGllciBnYWluX2N1cnZlX2FwcGxpZXIo
c2FtcGxlX3JhdGVfaHosICZhcG1fZGF0YV9kdW1wZXIsICIiKTsKLQotICBWZWN0b3JGbG9hdEZy
YW1lIHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZSgxLCBzYW1wbGVfcmF0ZV9oeiAvIDEwMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01heEFic0Zsb2F0UzE2
VmFsdWUpOwotICBnYWluX2N1cnZlX2FwcGxpZXIuUHJvY2Vzcyh2ZWN0b3JzX3dpdGhfZmxvYXRf
ZnJhbWUuZmxvYXRfZnJhbWVfdmlldygpKTsKLX0KLQotVEVTVChHYWluQ3VydmVBcHBsaWVyLCBP
dXRwdXRWb2x1bWVBYm92ZVRocmVzaG9sZCkgewotICBjb25zdCBpbnQgc2FtcGxlX3JhdGVfaHog
PSA0ODAwMDsKLSAgY29uc3QgZmxvYXQgaW5wdXRfbGV2ZWwgPQotICAgICAgKGtNYXhBYnNGbG9h
dFMxNlZhbHVlICsgRGJmc1RvRmxvYXRTMTYodGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJG
cykpIC8KLSAgICAgIDIuZjsKLSAgQXBtRGF0YUR1bXBlciBhcG1fZGF0YV9kdW1wZXIoMCk7Ci0K
LSAgR2FpbkN1cnZlQXBwbGllciBnYWluX2N1cnZlX2FwcGxpZXIoc2FtcGxlX3JhdGVfaHosICZh
cG1fZGF0YV9kdW1wZXIsICIiKTsKLQotICAvLyBHaXZlIHRoZSBsZXZlbCBlc3RpbWF0b3IgdGlt
ZSB0byBhZGFwdC4KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsKLSAgICBWZWN0b3JG
bG9hdEZyYW1lIHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZSgxLCBzYW1wbGVfcmF0ZV9oeiAvIDEw
MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9s
ZXZlbCk7Ci0gICAgZ2Fpbl9jdXJ2ZV9hcHBsaWVyLlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0
X2ZyYW1lLmZsb2F0X2ZyYW1lX3ZpZXcoKSk7Ci0gIH0KLQotICBWZWN0b3JGbG9hdEZyYW1lIHZl
Y3RvcnNfd2l0aF9mbG9hdF9mcmFtZSgxLCBzYW1wbGVfcmF0ZV9oeiAvIDEwMCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGV2ZWwpOwotICBnYWlu
X2N1cnZlX2FwcGxpZXIuUHJvY2Vzcyh2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUuZmxvYXRfZnJh
bWVfdmlldygpKTsKLSAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNoYW5uZWwgPQotICAg
ICAgdmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lLmZsb2F0X2ZyYW1lX3ZpZXcoKS5jaGFubmVsKDAp
OwotCi0gIGZvciAoY29uc3QgYXV0byYgc2FtcGxlIDogY2hhbm5lbCkgewotICAgIEVYUEVDVF9M
VCgwLjlmICoga01heEFic0Zsb2F0UzE2VmFsdWUsIHNhbXBsZSk7Ci0gIH0KLX0KLQotfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvaW50ZXJwb2xhdGVk
X2dhaW5fY3VydmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5j
YwppbmRleCA3M2U2YThlY2MzNmYxNTYwYzgyNTA5Nzk3ZmZkNTU4NzVmOGJkMGY3Li5mNWQ2YjQ3
MTY5YzIyMjZkNGQxYzJkZDEyNWIzOTZkMDBiNzkyYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRl
cnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYwpAQCAtMTAsMTAgKzEwLDEyIEBACiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIgog
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBv
bGF0ZWRfZ2Fpbl9jdXJ2ZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ludGVycG9sYXRl
ZF9nYWluX2N1cnZlX3VuaXR0ZXN0LmNjCmluZGV4IGRkNjk2MzEzYWUyNjY1NzRhNGI4NTMxZWU5
ZmJiOTY0NTBjYzJiMGEuLmE4ZTBmMjM2MWM5MWExMjEzMDY3ODA3ZTA0OTU4ZDAxZjU4Zjc4Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ludGVycG9sYXRlZF9nYWluX2N1cnZlX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ludGVycG9sYXRlZF9nYWluX2N1cnZlX3VuaXR0
ZXN0LmNjCkBAIC05LDYgKzksNyBAQAogICovCiAKICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlf
dmlldy5oIgpAQCAtMTYsNyArMTcsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvY29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmgiCi0j
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlci5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXJfZGJfZ2Fpbl9jdXJ2ZS5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1
bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2d1bml0LmgiCkBAIC0yNyw3ICsyOCw4IEBAIG5hbWVzcGFjZSB7CiBjb25zdGV4cHIgZG91Ymxl
IGtMZXZlbEVwc2lsb24gPSAxZS0yICoga01heEFic0Zsb2F0UzE2VmFsdWU7CiBjb25zdGV4cHIg
ZmxvYXQga0ludGVycG9sYXRlZEdhaW5DdXJ2ZVRvbGVyYW5jZSA9IDEuZiAvIDMyNzY4LmY7CiBB
cG1EYXRhRHVtcGVyIGFwbV9kYXRhX2R1bXBlcigwKTsKLWNvbnN0IExpbWl0ZXIgbGltaXRlcjsK
K3N0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPExpbWl0ZXJEYkdh
aW5DdXJ2ZT46OnZhbHVlLCAiIik7Citjb25zdCBMaW1pdGVyRGJHYWluQ3VydmUgbGltaXRlcjsK
IAogfSAgLy8gbmFtZXNwYWNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyLmNjCmluZGV4IGQyYjk4NzdiZTExZWQ0YTM2MWRl
OTNmYTZkYWQ3MzUyMGFhMDBjZGYuLjE1ODlmMDc0MDRkOTkwMDM5ZGRiOTNmZTA2M2M0MWRiZWE1
ZWNlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvbGltaXRlci5jYwpAQCAtMTAsMTI4ICsxMCwxNDEgQEAKIAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaCIKIAorI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxjbWF0aD4KIAotI2luY2x1ZGUgImNv
bW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmll
dy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9u
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFf
ZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3Bh
Y2UgewogCi1kb3VibGUgQ29tcHV0ZUtuZWVTdGFydChkb3VibGUgbWF4X2lucHV0X2xldmVsX2Ri
LAotICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGtuZWVfc21vb3RobmVzc19kYiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBjb21wcmVzc2lvbl9yYXRpbykgewotICBSVENf
Q0hFQ0tfTFQoKGNvbXByZXNzaW9uX3JhdGlvIC0gMS4wKSAqIGtuZWVfc21vb3RobmVzc19kYiAv
Ci0gICAgICAgICAgICAgICAgICAgKDIuMCAqIGNvbXByZXNzaW9uX3JhdGlvKSwKLSAgICAgICAg
ICAgICAgIG1heF9pbnB1dF9sZXZlbF9kYik7Ci0gIHJldHVybiAta25lZV9zbW9vdGhuZXNzX2Ri
IC8gMi4wIC0KLSAgICAgICAgIG1heF9pbnB1dF9sZXZlbF9kYiAvIChjb21wcmVzc2lvbl9yYXRp
byAtIDEuMCk7CisvLyBUaGlzIGNvbnN0YW50IGFmZmVjdHMgdGhlIHdheSBzY2FsaW5nIGZhY3Rv
cnMgYXJlIGludGVycG9sYXRlZCBmb3IgdGhlIGZpcnN0CisvLyBzdWItZnJhbWUgb2YgYSBmcmFt
ZS4gT25seSBpbiB0aGUgY2FzZSBpbiB3aGljaCB0aGUgZmlyc3Qgc3ViLWZyYW1lIGhhcyBhbgor
Ly8gZXN0aW1hdGVkIGxldmVsIHdoaWNoIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdGhhdCBvZiB0aGUg
cHJldmlvdXMgYW5hbHl6ZWQKKy8vIHN1Yi1mcmFtZSwgbGluZWFyIGludGVycG9sYXRpb24gaXMg
cmVwbGFjZWQgd2l0aCBhIHBvd2VyIGZ1bmN0aW9uIHdoaWNoCisvLyByZWR1Y2VzIHRoZSBjaGFu
Y2VzIG9mIG92ZXItc2hvb3RpbmcgKGFuZCBoZW5jZSBzYXR1cmF0aW9uKSwgaG93ZXZlciByZWR1
Y2luZworLy8gdGhlIGZpeGVkIGdhaW4gZWZmZWN0aXZlbmVzcy4KK2NvbnN0ZXhwciBmbG9hdCBr
QXR0YWNrRmlyc3RTdWJmcmFtZUludGVycG9sYXRpb25Qb3dlciA9IDguZjsKKwordm9pZCBJbnRl
cnBvbGF0ZUZpcnN0U3ViZnJhbWUoZmxvYXQgbGFzdF9mYWN0b3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBjdXJyZW50X2ZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PiBzdWJmcmFtZSkgeworICBjb25zdCBhdXRv
IG4gPSBzdWJmcmFtZS5zaXplKCk7CisgIGNvbnN0ZXhwciBhdXRvIHAgPSBrQXR0YWNrRmlyc3RT
dWJmcmFtZUludGVycG9sYXRpb25Qb3dlcjsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyAr
K2kpIHsKKyAgICBzdWJmcmFtZVtpXSA9IHN0ZDo6cG93KDEuZiAtIGkgLyBuLCBwKSAqIChsYXN0
X2ZhY3RvciAtIGN1cnJlbnRfZmFjdG9yKSArCisgICAgICAgICAgICAgICAgICBjdXJyZW50X2Zh
Y3RvcjsKKyAgfQogfQogCi1zdGQ6OmFycmF5PGRvdWJsZSwgMz4gQ29tcHV0ZUtuZWVSZWdpb25Q
b2x5bm9taWFsKGRvdWJsZSBrbmVlX3N0YXJ0X2RiZnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBrbmVlX3Ntb290aG5lc3NfZGIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBj
b21wcmVzc2lvbl9yYXRpbykgewotICBjb25zdCBkb3VibGUgYSA9ICgxLjAgLSBjb21wcmVzc2lv
bl9yYXRpbykgLwotICAgICAgICAgICAgICAgICAgICgyLjAgKiBrbmVlX3Ntb290aG5lc3NfZGIg
KiBjb21wcmVzc2lvbl9yYXRpbyk7Ci0gIGNvbnN0IGRvdWJsZSBiID0gMS4wIC0gMi4wICogYSAq
IGtuZWVfc3RhcnRfZGJmczsKLSAgY29uc3QgZG91YmxlIGMgPSBhICoga25lZV9zdGFydF9kYmZz
ICoga25lZV9zdGFydF9kYmZzOwotICByZXR1cm4ge3thLCBiLCBjfX07Ci19Cit2b2lkIENvbXB1
dGVQZXJTYW1wbGVTdWJmcmFtZUZhY3RvcnMoCisgICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwg
a1N1YkZyYW1lc0luRnJhbWUgKyAxPiYgc2NhbGluZ19mYWN0b3JzLAorICAgIHNpemVfdCBzYW1w
bGVzX3Blcl9jaGFubmVsLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PiBwZXJfc2FtcGxlX3Nj
YWxpbmdfZmFjdG9ycykgeworICBjb25zdCBzaXplX3QgbnVtX3N1YmZyYW1lcyA9IHNjYWxpbmdf
ZmFjdG9ycy5zaXplKCkgLSAxOworICBjb25zdCBzaXplX3Qgc3ViZnJhbWVfc2l6ZSA9CisgICAg
ICBydGM6OkNoZWNrZWREaXZFeGFjdChzYW1wbGVzX3Blcl9jaGFubmVsLCBudW1fc3ViZnJhbWVz
KTsKKworICAvLyBIYW5kbGUgZmlyc3Qgc3ViLWZyYW1lIGRpZmZlcmVudGx5IGluIGNhc2Ugb2Yg
YXR0YWNrLgorICBjb25zdCBib29sIGlzX2F0dGFjayA9IHNjYWxpbmdfZmFjdG9yc1swXSA+IHNj
YWxpbmdfZmFjdG9yc1sxXTsKKyAgaWYgKGlzX2F0dGFjaykgeworICAgIEludGVycG9sYXRlRmly
c3RTdWJmcmFtZSgKKyAgICAgICAgc2NhbGluZ19mYWN0b3JzWzBdLCBzY2FsaW5nX2ZhY3RvcnNb
MV0sCisgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PigKKyAgICAgICAgICAgIHBlcl9zYW1w
bGVfc2NhbGluZ19mYWN0b3JzLnN1YnZpZXcoMCwgc3ViZnJhbWVfc2l6ZSkpKTsKKyAgfQogCi1k
b3VibGUgQ29tcHV0ZUxpbWl0ZXJEMShkb3VibGUgbWF4X2lucHV0X2xldmVsX2RiLCBkb3VibGUg
Y29tcHJlc3Npb25fcmF0aW8pIHsKLSAgcmV0dXJuIChzdGQ6OnBvdygxMC4wLCAtbWF4X2lucHV0
X2xldmVsX2RiIC8gKDIwLjAgKiBjb21wcmVzc2lvbl9yYXRpbykpICoKLSAgICAgICAgICAoMS4w
IC0gY29tcHJlc3Npb25fcmF0aW8pIC8gY29tcHJlc3Npb25fcmF0aW8pIC8KLSAgICAgICAgIGtN
YXhBYnNGbG9hdFMxNlZhbHVlOworICBmb3IgKHNpemVfdCBpID0gaXNfYXR0YWNrID8gMSA6IDA7
IGkgPCBudW1fc3ViZnJhbWVzOyArK2kpIHsKKyAgICBjb25zdCBzaXplX3Qgc3ViZnJhbWVfc3Rh
cnQgPSBpICogc3ViZnJhbWVfc2l6ZTsKKyAgICBjb25zdCBmbG9hdCBzY2FsaW5nX3N0YXJ0ID0g
c2NhbGluZ19mYWN0b3JzW2ldOworICAgIGNvbnN0IGZsb2F0IHNjYWxpbmdfZW5kID0gc2NhbGlu
Z19mYWN0b3JzW2kgKyAxXTsKKyAgICBjb25zdCBmbG9hdCBzY2FsaW5nX2RpZmYgPSAoc2NhbGlu
Z19lbmQgLSBzY2FsaW5nX3N0YXJ0KSAvIHN1YmZyYW1lX3NpemU7CisgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBzdWJmcmFtZV9zaXplOyArK2opIHsKKyAgICAgIHBlcl9zYW1wbGVfc2NhbGlu
Z19mYWN0b3JzW3N1YmZyYW1lX3N0YXJ0ICsgal0gPQorICAgICAgICAgIHNjYWxpbmdfc3RhcnQg
KyBzY2FsaW5nX2RpZmYgKiBqOworICAgIH0KKyAgfQogfQogCi1jb25zdGV4cHIgZG91YmxlIENv
bXB1dGVMaW1pdGVyRDIoZG91YmxlIGNvbXByZXNzaW9uX3JhdGlvKSB7Ci0gIHJldHVybiAoMS4w
IC0gMi4wICogY29tcHJlc3Npb25fcmF0aW8pIC8gY29tcHJlc3Npb25fcmF0aW87Cit2b2lkIFNj
YWxlU2FtcGxlcyhydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcGVyX3NhbXBsZV9zY2FsaW5n
X2ZhY3RvcnMsCisgICAgICAgICAgICAgICAgICBBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFs
KSB7CisgIGNvbnN0IHNpemVfdCBzYW1wbGVzX3Blcl9jaGFubmVsID0gc2lnbmFsLnNhbXBsZXNf
cGVyX2NoYW5uZWwoKTsKKyAgUlRDX0RDSEVDS19FUShzYW1wbGVzX3Blcl9jaGFubmVsLCBwZXJf
c2FtcGxlX3NjYWxpbmdfZmFjdG9ycy5zaXplKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpZ25hbC5udW1fY2hhbm5lbHMoKTsgKytpKSB7CisgICAgYXV0byBjaGFubmVsID0gc2lnbmFs
LmNoYW5uZWwoaSk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzYW1wbGVzX3Blcl9jaGFu
bmVsOyArK2opIHsKKyAgICAgIGNoYW5uZWxbal0gPSBydGM6OlNhZmVDbGFtcChjaGFubmVsW2pd
ICogcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNbal0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga01pbkZsb2F0UzE2VmFsdWUsIGtNYXhGbG9hdFMxNlZhbHVlKTsKKyAgICB9
CisgIH0KIH0KIAotZG91YmxlIENvbXB1dGVMaW1pdGVySTIoZG91YmxlIG1heF9pbnB1dF9sZXZl
bF9kYiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBjb21wcmVzc2lvbl9yYXRpbywK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBnYWluX2N1cnZlX2xpbWl0ZXJfaTEpIHsK
LSAgUlRDX0NIRUNLX05FKGdhaW5fY3VydmVfbGltaXRlcl9pMSwgMC5mKTsKLSAgcmV0dXJuIHN0
ZDo6cG93KDEwLjAsIC1tYXhfaW5wdXRfbGV2ZWxfZGIgLyAoMjAuMCAqIGNvbXByZXNzaW9uX3Jh
dGlvKSkgLwotICAgICAgICAgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxIC8KLSAgICAgICAgIHN0ZDo6
cG93KGtNYXhBYnNGbG9hdFMxNlZhbHVlLCBnYWluX2N1cnZlX2xpbWl0ZXJfaTEgLSAxKTsKK3Zv
aWQgQ2hlY2tMaW1pdGVyU2FtcGxlUmF0ZShzaXplX3Qgc2FtcGxlX3JhdGVfaHopIHsKKyAgLy8g
Q2hlY2sgdGhhdCBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc18gaXMgbGFyZ2UgZW5vdWdoLgor
ICBSVENfRENIRUNLX0xFKHNhbXBsZV9yYXRlX2h6LAorICAgICAgICAgICAgICAgIGtNYXhpbWFs
TnVtYmVyT2ZTYW1wbGVzUGVyQ2hhbm5lbCAqIDEwMDAgLyBrRnJhbWVEdXJhdGlvbk1zKTsKIH0K
IAogfSAgLy8gbmFtZXNwYWNlCiAKLUxpbWl0ZXI6OkxpbWl0ZXIoKQotICAgIDogbWF4X2lucHV0
X2xldmVsX2xpbmVhcl8oRGJmc1RvRmxvYXRTMTYobWF4X2lucHV0X2xldmVsX2RiXykpLAotICAg
ICAga25lZV9zdGFydF9kYmZzXyhDb21wdXRlS25lZVN0YXJ0KG1heF9pbnB1dF9sZXZlbF9kYl8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga25lZV9zbW9vdGhuZXNz
X2RiXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lv
bl9yYXRpb18pKSwKLSAgICAgIGtuZWVfc3RhcnRfbGluZWFyXyhEYmZzVG9GbG9hdFMxNihrbmVl
X3N0YXJ0X2RiZnNfKSksCi0gICAgICBsaW1pdGVyX3N0YXJ0X2RiZnNfKGtuZWVfc3RhcnRfZGJm
c18gKyBrbmVlX3Ntb290aG5lc3NfZGJfKSwKLSAgICAgIGxpbWl0ZXJfc3RhcnRfbGluZWFyXyhE
YmZzVG9GbG9hdFMxNihsaW1pdGVyX3N0YXJ0X2RiZnNfKSksCi0gICAgICBrbmVlX3JlZ2lvbl9w
b2x5bm9taWFsXyhDb21wdXRlS25lZVJlZ2lvblBvbHlub21pYWwoa25lZV9zdGFydF9kYmZzXywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrbmVlX3Ntb290aG5lc3NfZGJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uX3JhdGlvXykpLAotICAgICAgZ2Fp
bl9jdXJ2ZV9saW1pdGVyX2QxXygKLSAgICAgICAgICBDb21wdXRlTGltaXRlckQxKG1heF9pbnB1
dF9sZXZlbF9kYl8sIGNvbXByZXNzaW9uX3JhdGlvXykpLAotICAgICAgZ2Fpbl9jdXJ2ZV9saW1p
dGVyX2QyXyhDb21wdXRlTGltaXRlckQyKGNvbXByZXNzaW9uX3JhdGlvXykpLAotICAgICAgZ2Fp
bl9jdXJ2ZV9saW1pdGVyX2kxXygxLjAgLyBjb21wcmVzc2lvbl9yYXRpb18pLAotICAgICAgZ2Fp
bl9jdXJ2ZV9saW1pdGVyX2kyXyhDb21wdXRlTGltaXRlckkyKG1heF9pbnB1dF9sZXZlbF9kYl8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Np
b25fcmF0aW9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdhaW5fY3VydmVfbGltaXRlcl9pMV8pKSB7Ci0gIHN0YXRpY19hc3NlcnQoa25lZV9zbW9vdGhu
ZXNzX2RiXyA+IDAuMGYsICIiKTsKLSAgc3RhdGljX2Fzc2VydChjb21wcmVzc2lvbl9yYXRpb18g
PiAxLjBmLCAiIik7Ci0gIFJUQ19DSEVDS19HRShtYXhfaW5wdXRfbGV2ZWxfZGJfLCBrbmVlX3N0
YXJ0X2RiZnNfICsga25lZV9zbW9vdGhuZXNzX2RiXyk7CitMaW1pdGVyOjpMaW1pdGVyKHNpemVf
dCBzYW1wbGVfcmF0ZV9oeiwKKyAgICAgICAgICAgICAgICAgQXBtRGF0YUR1bXBlciogYXBtX2Rh
dGFfZHVtcGVyLAorICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBoaXN0b2dyYW1fbmFtZSkK
KyAgICA6IGludGVycF9nYWluX2N1cnZlXyhhcG1fZGF0YV9kdW1wZXIsIGhpc3RvZ3JhbV9uYW1l
KSwKKyAgICAgIGxldmVsX2VzdGltYXRvcl8oc2FtcGxlX3JhdGVfaHosIGFwbV9kYXRhX2R1bXBl
ciksCisgICAgICBhcG1fZGF0YV9kdW1wZXJfKGFwbV9kYXRhX2R1bXBlcikgeworICBDaGVja0xp
bWl0ZXJTYW1wbGVSYXRlKHNhbXBsZV9yYXRlX2h6KTsKIH0KIAotY29uc3RleHByIGRvdWJsZSBM
aW1pdGVyOjptYXhfaW5wdXRfbGV2ZWxfZGJfOwotY29uc3RleHByIGRvdWJsZSBMaW1pdGVyOjpr
bmVlX3Ntb290aG5lc3NfZGJfOwotY29uc3RleHByIGRvdWJsZSBMaW1pdGVyOjpjb21wcmVzc2lv
bl9yYXRpb187CitMaW1pdGVyOjp+TGltaXRlcigpID0gZGVmYXVsdDsKIAotZG91YmxlIExpbWl0
ZXI6OkdldE91dHB1dExldmVsRGJmcyhkb3VibGUgaW5wdXRfbGV2ZWxfZGJmcykgY29uc3Qgewot
ICBpZiAoaW5wdXRfbGV2ZWxfZGJmcyA8IGtuZWVfc3RhcnRfZGJmc18pIHsKLSAgICByZXR1cm4g
aW5wdXRfbGV2ZWxfZGJmczsKLSAgfSBlbHNlIGlmIChpbnB1dF9sZXZlbF9kYmZzIDwgbGltaXRl
cl9zdGFydF9kYmZzXykgewotICAgIHJldHVybiBHZXRLbmVlUmVnaW9uT3V0cHV0TGV2ZWxEYmZz
KGlucHV0X2xldmVsX2RiZnMpOwotICB9Ci0gIHJldHVybiBHZXRDb21wcmVzc29yUmVnaW9uT3V0
cHV0TGV2ZWxEYmZzKGlucHV0X2xldmVsX2RiZnMpOwotfQordm9pZCBMaW1pdGVyOjpQcm9jZXNz
KEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBzaWduYWwpIHsKKyAgY29uc3QgYXV0byBsZXZlbF9lc3Rp
bWF0ZSA9IGxldmVsX2VzdGltYXRvcl8uQ29tcHV0ZUxldmVsKHNpZ25hbCk7CiAKLWRvdWJsZSBM
aW1pdGVyOjpHZXRHYWluTGluZWFyKGRvdWJsZSBpbnB1dF9sZXZlbF9saW5lYXIpIGNvbnN0IHsK
LSAgaWYgKGlucHV0X2xldmVsX2xpbmVhciA8IGtuZWVfc3RhcnRfbGluZWFyXykgewotICAgIHJl
dHVybiAxLjA7Ci0gIH0KLSAgcmV0dXJuIERiZnNUb0Zsb2F0UzE2KAotICAgICAgICAgICAgIEdl
dE91dHB1dExldmVsRGJmcyhGbG9hdFMxNlRvRGJmcyhpbnB1dF9sZXZlbF9saW5lYXIpKSkgLwot
ICAgICAgICAgaW5wdXRfbGV2ZWxfbGluZWFyOworICBSVENfRENIRUNLX0VRKGxldmVsX2VzdGlt
YXRlLnNpemUoKSArIDEsIHNjYWxpbmdfZmFjdG9yc18uc2l6ZSgpKTsKKyAgc2NhbGluZ19mYWN0
b3JzX1swXSA9IGxhc3Rfc2NhbGluZ19mYWN0b3JfOworICBzdGQ6OnRyYW5zZm9ybShsZXZlbF9l
c3RpbWF0ZS5iZWdpbigpLCBsZXZlbF9lc3RpbWF0ZS5lbmQoKSwKKyAgICAgICAgICAgICAgICAg
c2NhbGluZ19mYWN0b3JzXy5iZWdpbigpICsgMSwgW3RoaXNdKGZsb2F0IHgpIHsKKyAgICAgICAg
ICAgICAgICAgICByZXR1cm4gaW50ZXJwX2dhaW5fY3VydmVfLkxvb2tVcEdhaW5Ub0FwcGx5KHgp
OworICAgICAgICAgICAgICAgICB9KTsKKworICBjb25zdCBzaXplX3Qgc2FtcGxlc19wZXJfY2hh
bm5lbCA9IHNpZ25hbC5zYW1wbGVzX3Blcl9jaGFubmVsKCk7CisgIFJUQ19EQ0hFQ0tfTEUoc2Ft
cGxlc19wZXJfY2hhbm5lbCwga01heGltYWxOdW1iZXJPZlNhbXBsZXNQZXJDaGFubmVsKTsKKwor
ICBhdXRvIHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzID0gcnRjOjpBcnJheVZpZXc8ZmxvYXQ+
KAorICAgICAgJnBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzX1swXSwgc2FtcGxlc19wZXJfY2hh
bm5lbCk7CisgIENvbXB1dGVQZXJTYW1wbGVTdWJmcmFtZUZhY3RvcnMoc2NhbGluZ19mYWN0b3Jz
Xywgc2FtcGxlc19wZXJfY2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9ycyk7CisgIFNjYWxlU2FtcGxlcyhwZXJfc2FtcGxl
X3NjYWxpbmdfZmFjdG9ycywgc2lnbmFsKTsKKworICBsYXN0X3NjYWxpbmdfZmFjdG9yXyA9IHNj
YWxpbmdfZmFjdG9yc18uYmFjaygpOworCisgIC8vIER1bXAgZGF0YSBmb3IgZGVidWcuCisgIGFw
bV9kYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFnYzJfZ2Fpbl9jdXJ2ZV9hcHBsaWVyX3NjYWxpbmdf
ZmFjdG9ycyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlc19wZXJfY2hhbm5l
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9y
c18uZGF0YSgpKTsKIH0KIAotLy8gQ29tcHV0ZXMgdGhlIGZpcnN0IGRlcml2YXRpdmUgb2YgR2V0
R2FpbkxpbmVhcigpIGluIHx4fC4KLWRvdWJsZSBMaW1pdGVyOjpHZXRHYWluRmlyc3REZXJpdmF0
aXZlTGluZWFyKGRvdWJsZSB4KSBjb25zdCB7Ci0gIC8vIEJleW9uZC1rbmVlIHJlZ2lvbiBvbmx5
LgotICBSVENfQ0hFQ0tfR0UoeCwgbGltaXRlcl9zdGFydF9saW5lYXJfIC0gMWUtNyAqIGtNYXhB
YnNGbG9hdFMxNlZhbHVlKTsKLSAgcmV0dXJuIGdhaW5fY3VydmVfbGltaXRlcl9kMV8gKgotICAg
ICAgICAgc3RkOjpwb3coeCAvIGtNYXhBYnNGbG9hdFMxNlZhbHVlLCBnYWluX2N1cnZlX2xpbWl0
ZXJfZDJfKTsKK0ludGVycG9sYXRlZEdhaW5DdXJ2ZTo6U3RhdHMgTGltaXRlcjo6R2V0R2FpbkN1
cnZlU3RhdHMoKSBjb25zdCB7CisgIHJldHVybiBpbnRlcnBfZ2Fpbl9jdXJ2ZV8uZ2V0X3N0YXRz
KCk7CiB9CiAKLS8vIENvbXB1dGVzIHRoZSBpbnRlZ3JhbCBvZiBHZXRHYWluTGluZWFyKCkgaW4g
dGhlIHJhbmdlIFt4MCwgeDFdLgotZG91YmxlIExpbWl0ZXI6OkdldEdhaW5JbnRlZ3JhbExpbmVh
cihkb3VibGUgeDAsIGRvdWJsZSB4MSkgY29uc3QgewotICBSVENfQ0hFQ0tfTEUoeDAsIHgxKTsg
ICAgICAgICAgICAgICAgICAgICAvLyBWYWxpZCBpbnRlcnZhbC4KLSAgUlRDX0NIRUNLX0dFKHgw
LCBsaW1pdGVyX3N0YXJ0X2xpbmVhcl8pOyAgLy8gQmV5b25kLWtuZWUgcmVnaW9uIG9ubHkuCi0g
IGF1dG8gbGltaXRlcl9pbnRlZ3JhbCA9IFt0aGlzXShjb25zdCBkb3VibGUmIHgpIHsKLSAgICBy
ZXR1cm4gZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kyXyAqIHN0ZDo6cG93KHgsIGdhaW5fY3VydmVfbGlt
aXRlcl9pMV8pOwotICB9OwotICByZXR1cm4gbGltaXRlcl9pbnRlZ3JhbCh4MSkgLSBsaW1pdGVy
X2ludGVncmFsKHgwKTsKK3ZvaWQgTGltaXRlcjo6U2V0U2FtcGxlUmF0ZShzaXplX3Qgc2FtcGxl
X3JhdGVfaHopIHsKKyAgQ2hlY2tMaW1pdGVyU2FtcGxlUmF0ZShzYW1wbGVfcmF0ZV9oeik7Cisg
IGxldmVsX2VzdGltYXRvcl8uU2V0U2FtcGxlUmF0ZShzYW1wbGVfcmF0ZV9oeik7CiB9CiAKLWRv
dWJsZSBMaW1pdGVyOjpHZXRLbmVlUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKGRvdWJsZSBpbnB1dF9s
ZXZlbF9kYmZzKSBjb25zdCB7Ci0gIHJldHVybiBrbmVlX3JlZ2lvbl9wb2x5bm9taWFsX1swXSAq
IGlucHV0X2xldmVsX2RiZnMgKiBpbnB1dF9sZXZlbF9kYmZzICsKLSAgICAgICAgIGtuZWVfcmVn
aW9uX3BvbHlub21pYWxfWzFdICogaW5wdXRfbGV2ZWxfZGJmcyArCi0gICAgICAgICBrbmVlX3Jl
Z2lvbl9wb2x5bm9taWFsX1syXTsKK3ZvaWQgTGltaXRlcjo6UmVzZXQoKSB7CisgIGxldmVsX2Vz
dGltYXRvcl8uUmVzZXQoKTsKIH0KIAotZG91YmxlIExpbWl0ZXI6OkdldENvbXByZXNzb3JSZWdp
b25PdXRwdXRMZXZlbERiZnMoCi0gICAgZG91YmxlIGlucHV0X2xldmVsX2RiZnMpIGNvbnN0IHsK
LSAgcmV0dXJuIChpbnB1dF9sZXZlbF9kYmZzIC0gbWF4X2lucHV0X2xldmVsX2RiXykgLyBjb21w
cmVzc2lvbl9yYXRpb187CitmbG9hdCBMaW1pdGVyOjpMYXN0QXVkaW9MZXZlbCgpIGNvbnN0IHsK
KyAgcmV0dXJuIGxldmVsX2VzdGltYXRvcl8uTGFzdEF1ZGlvTGV2ZWwoKTsKIH0KIAogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FnYzIvbGltaXRlci5oCmluZGV4IGYzNTBiYWVlZjEwNWUzYjlhY2ZmNDcyYmY5
NDc4NzJmODBlYjFkYjguLjFlMGFiNzFhMTgzNzg2ZGQxNjE2YmQ5ZTAzMDg2ZDJkZjdhZTAzNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9saW1pdGVyLmgKQEAgLTExLDYyICsxMSw1MiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfQUdDMl9MSU1JVEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lO
R19BR0MyX0xJTUlURVJfSF8KIAotI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHN0cmluZz4K
KyNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9hZ2MyX3Rlc3RpbmdfY29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX2ZyYW1lX3Zp
ZXcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgeworY2xhc3MgQXBtRGF0YUR1bXBlcjsKIAotLy8gQSBjbGFzcyBmb3IgY29tcHV0
aW5nIGdhaW4gY3VydmUgcGFyYW1ldGVycy4gVGhlIGdhaW4gY3VydmUgaXMKLS8vIGRlZmluZWQg
YnkgY29uc3RhbnRzIGtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnMsIGtMaW1pdGVyS25lZVNtb290
aG5lc3NEYiwKLS8vIGtMaW1pdGVyQ29tcHJlc3Npb25SYXRpby4gVGhlIGN1cnZlIGNvbnNpbnRz
IG9mIG9uZSBsaW5lYXIgcGFydCwKLS8vIG9uZSBxdWFkcmF0aWMgcG9seW5vbWlhbCBwYXJ0IGFu
ZCBhbm90aGVyIGxpbmVhciBwYXJ0LiBUaGUKLS8vIGNvbnN0YW50cyBkZWZpbmUgdGhlIHBhcmFt
ZXRlcnMgb2YgdGhlIHBhcnRzLgogY2xhc3MgTGltaXRlciB7CiAgcHVibGljOgotICBMaW1pdGVy
KCk7CisgIExpbWl0ZXIoc2l6ZV90IHNhbXBsZV9yYXRlX2h6LAorICAgICAgICAgIEFwbURhdGFE
dW1wZXIqIGFwbV9kYXRhX2R1bXBlciwKKyAgICAgICAgICBzdGQ6OnN0cmluZyBoaXN0b2dyYW1f
bmFtZV9wcmVmaXgpOworICBMaW1pdGVyKGNvbnN0IExpbWl0ZXImIGxpbWl0ZXIpID0gZGVsZXRl
OworICBMaW1pdGVyJiBvcGVyYXRvcj0oY29uc3QgTGltaXRlciYgbGltaXRlcikgPSBkZWxldGU7
CisgIH5MaW1pdGVyKCk7CiAKLSAgZG91YmxlIG1heF9pbnB1dF9sZXZlbF9kYigpIGNvbnN0IHsg
cmV0dXJuIG1heF9pbnB1dF9sZXZlbF9kYl87IH0KLSAgZG91YmxlIG1heF9pbnB1dF9sZXZlbF9s
aW5lYXIoKSBjb25zdCB7IHJldHVybiBtYXhfaW5wdXRfbGV2ZWxfbGluZWFyXzsgfQotICBkb3Vi
bGUga25lZV9zdGFydF9saW5lYXIoKSBjb25zdCB7IHJldHVybiBrbmVlX3N0YXJ0X2xpbmVhcl87
IH0KLSAgZG91YmxlIGxpbWl0ZXJfc3RhcnRfbGluZWFyKCkgY29uc3QgeyByZXR1cm4gbGltaXRl
cl9zdGFydF9saW5lYXJfOyB9CisgIC8vIEFwcGxpZXMgbGltaXRlciBhbmQgaGFyZC1jbGlwcGlu
ZyB0byB8c2lnbmFsfC4KKyAgdm9pZCBQcm9jZXNzKEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBzaWdu
YWwpOworICBJbnRlcnBvbGF0ZWRHYWluQ3VydmU6OlN0YXRzIEdldEdhaW5DdXJ2ZVN0YXRzKCkg
Y29uc3Q7CiAKLSAgLy8gVGhlc2UgbWV0aG9kcyBjYW4gYmUgbWFya2VkICdjb25zdGV4cHInIGlu
IEMrKyAxNC4KLSAgZG91YmxlIEdldE91dHB1dExldmVsRGJmcyhkb3VibGUgaW5wdXRfbGV2ZWxf
ZGJmcykgY29uc3Q7Ci0gIGRvdWJsZSBHZXRHYWluTGluZWFyKGRvdWJsZSBpbnB1dF9sZXZlbF9s
aW5lYXIpIGNvbnN0OwotICBkb3VibGUgR2V0R2FpbkZpcnN0RGVyaXZhdGl2ZUxpbmVhcihkb3Vi
bGUgeCkgY29uc3Q7Ci0gIGRvdWJsZSBHZXRHYWluSW50ZWdyYWxMaW5lYXIoZG91YmxlIHgwLCBk
b3VibGUgeDEpIGNvbnN0OworICAvLyBTdXBwb3J0ZWQgcmF0ZXMgbXVzdCBiZQorICAvLyAqIHN1
cHBvcnRlZCBieSBGaXhlZERpZ2l0YWxMZXZlbEVzdGltYXRvcgorICAvLyAqIGJlbG93IGtNYXhp
bWFsTnVtYmVyT2ZTYW1wbGVzUGVyQ2hhbm5lbCoxMDAwL2tGcmFtZUR1cmF0aW9uTXMKKyAgLy8g
ICBzbyB0aGF0IHNhbXBsZXNfcGVyX2NoYW5uZWwgZml0IGluIHRoZQorICAvLyAgIHBlcl9zYW1w
bGVfc2NhbGluZ19mYWN0b3JzXyBhcnJheS4KKyAgdm9pZCBTZXRTYW1wbGVSYXRlKHNpemVfdCBz
YW1wbGVfcmF0ZV9oeik7CiAKLSBwcml2YXRlOgotICBkb3VibGUgR2V0S25lZVJlZ2lvbk91dHB1
dExldmVsRGJmcyhkb3VibGUgaW5wdXRfbGV2ZWxfZGJmcykgY29uc3Q7Ci0gIGRvdWJsZSBHZXRD
b21wcmVzc29yUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKGRvdWJsZSBpbnB1dF9sZXZlbF9kYmZzKSBj
b25zdDsKLQotICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfZGJfID0g
dGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGczsKLSAgc3RhdGljIGNvbnN0ZXhwciBkb3Vi
bGUga25lZV9zbW9vdGhuZXNzX2RiXyA9IHRlc3Q6OmtMaW1pdGVyS25lZVNtb290aG5lc3NEYjsK
LSAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgY29tcHJlc3Npb25fcmF0aW9fID0gdGVzdDo6a0xp
bWl0ZXJDb21wcmVzc2lvblJhdGlvOwotCi0gIGNvbnN0IGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxf
bGluZWFyXzsKLQotICAvLyBEbyBub3QgbW9kaWZ5IHNpZ25hbCB3aXRoIGxldmVsIDw9IGtuZWVf
c3RhcnRfZGJmc18uCi0gIGNvbnN0IGRvdWJsZSBrbmVlX3N0YXJ0X2RiZnNfOwotICBjb25zdCBk
b3VibGUga25lZV9zdGFydF9saW5lYXJfOworICAvLyBSZXNldHMgdGhlIGludGVybmFsIHN0YXRl
LgorICB2b2lkIFJlc2V0KCk7CiAKLSAgLy8gVGhlIHVwcGVyIGVuZCBvZiB0aGUga25lZSByZWdp
b24sIHdoaWNoIGlzIGJldHdlZW4ga25lZV9zdGFydF9kYmZzXyBhbmQKLSAgLy8gbGltaXRlcl9z
dGFydF9kYmZzXy4KLSAgY29uc3QgZG91YmxlIGxpbWl0ZXJfc3RhcnRfZGJmc187Ci0gIGNvbnN0
IGRvdWJsZSBsaW1pdGVyX3N0YXJ0X2xpbmVhcl87CisgIGZsb2F0IExhc3RBdWRpb0xldmVsKCkg
Y29uc3Q7CiAKLSAgLy8gQ29lZmZpY2llbnRzIHthLCBiLCBjfSBvZiB0aGUga25lZSByZWdpb24g
cG9seW5vbWlhbAotICAvLyBheF4yICsgYnggKyBjIGluIHRoZSBEQiBzY2FsZS4KLSAgY29uc3Qg
c3RkOjphcnJheTxkb3VibGUsIDM+IGtuZWVfcmVnaW9uX3BvbHlub21pYWxfOwotCi0gIC8vIFBh
cmFtZXRlcnMgZm9yIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgZmlyc3QgZGVyaXZhdGl2ZSBvZiBH
ZXRHYWluTGluZWFyKCkuCi0gIGNvbnN0IGRvdWJsZSBnYWluX2N1cnZlX2xpbWl0ZXJfZDFfOwot
ICBjb25zdCBkb3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2QyXzsKLQotICAvLyBQYXJhbWV0ZXJz
IGZvciB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGludGVncmFsIG9mIEdldEdhaW5MaW5lYXIoKS4K
LSAgY29uc3QgZG91YmxlIGdhaW5fY3VydmVfbGltaXRlcl9pMV87Ci0gIGNvbnN0IGRvdWJsZSBn
YWluX2N1cnZlX2xpbWl0ZXJfaTJfOworIHByaXZhdGU6CisgIGNvbnN0IEludGVycG9sYXRlZEdh
aW5DdXJ2ZSBpbnRlcnBfZ2Fpbl9jdXJ2ZV87CisgIEZpeGVkRGlnaXRhbExldmVsRXN0aW1hdG9y
IGxldmVsX2VzdGltYXRvcl87CisgIEFwbURhdGFEdW1wZXIqIGNvbnN0IGFwbV9kYXRhX2R1bXBl
cl8gPSBudWxscHRyOworCisgIC8vIFdvcmsgYXJyYXkgY29udGFpbmluZyB0aGUgc3ViLWZyYW1l
IHNjYWxpbmcgZmFjdG9ycyB0byBiZSBpbnRlcnBvbGF0ZWQuCisgIHN0ZDo6YXJyYXk8ZmxvYXQs
IGtTdWJGcmFtZXNJbkZyYW1lICsgMT4gc2NhbGluZ19mYWN0b3JzXyA9IHt9OworICBzdGQ6OmFy
cmF5PGZsb2F0LCBrTWF4aW1hbE51bWJlck9mU2FtcGxlc1BlckNoYW5uZWw+CisgICAgICBwZXJf
c2FtcGxlX3NjYWxpbmdfZmFjdG9yc18gPSB7fTsKKyAgZmxvYXQgbGFzdF9zY2FsaW5nX2ZhY3Rv
cl8gPSAxLmY7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3VydmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1p
dGVyX2RiX2dhaW5fY3VydmUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU1ZWQ1ZGY1OGMxYWE1ZGMxODM0ZjYw
MTljMDExMzIyZDJlMzdjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0
ZXJfZGJfZ2Fpbl9jdXJ2ZS5jYwpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2Ri
X2dhaW5fY3VydmUuaCIKKworI2luY2x1ZGUgPGNtYXRoPgorCisjaW5jbHVkZSAiY29tbW9uX2F1
ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHsKKworZG91YmxlIENvbXB1dGVLbmVlU3Rh
cnQoZG91YmxlIG1heF9pbnB1dF9sZXZlbF9kYiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSBrbmVlX3Ntb290aG5lc3NfZGIsCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg
Y29tcHJlc3Npb25fcmF0aW8pIHsKKyAgUlRDX0NIRUNLX0xUKChjb21wcmVzc2lvbl9yYXRpbyAt
IDEuMCkgKiBrbmVlX3Ntb290aG5lc3NfZGIgLworICAgICAgICAgICAgICAgICAgICgyLjAgKiBj
b21wcmVzc2lvbl9yYXRpbyksCisgICAgICAgICAgICAgICBtYXhfaW5wdXRfbGV2ZWxfZGIpOwor
ICByZXR1cm4gLWtuZWVfc21vb3RobmVzc19kYiAvIDIuMCAtCisgICAgICAgICBtYXhfaW5wdXRf
bGV2ZWxfZGIgLyAoY29tcHJlc3Npb25fcmF0aW8gLSAxLjApOworfQorCitzdGQ6OmFycmF5PGRv
dWJsZSwgMz4gQ29tcHV0ZUtuZWVSZWdpb25Qb2x5bm9taWFsKGRvdWJsZSBrbmVlX3N0YXJ0X2Ri
ZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSBrbmVlX3Ntb290aG5lc3NfZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBjb21wcmVzc2lvbl9yYXRpbykgeworICBjb25zdCBk
b3VibGUgYSA9ICgxLjAgLSBjb21wcmVzc2lvbl9yYXRpbykgLworICAgICAgICAgICAgICAgICAg
ICgyLjAgKiBrbmVlX3Ntb290aG5lc3NfZGIgKiBjb21wcmVzc2lvbl9yYXRpbyk7CisgIGNvbnN0
IGRvdWJsZSBiID0gMS4wIC0gMi4wICogYSAqIGtuZWVfc3RhcnRfZGJmczsKKyAgY29uc3QgZG91
YmxlIGMgPSBhICoga25lZV9zdGFydF9kYmZzICoga25lZV9zdGFydF9kYmZzOworICByZXR1cm4g
e3thLCBiLCBjfX07Cit9CisKK2RvdWJsZSBDb21wdXRlTGltaXRlckQxKGRvdWJsZSBtYXhfaW5w
dXRfbGV2ZWxfZGIsIGRvdWJsZSBjb21wcmVzc2lvbl9yYXRpbykgeworICByZXR1cm4gKHN0ZDo6
cG93KDEwLjAsIC1tYXhfaW5wdXRfbGV2ZWxfZGIgLyAoMjAuMCAqIGNvbXByZXNzaW9uX3JhdGlv
KSkgKgorICAgICAgICAgICgxLjAgLSBjb21wcmVzc2lvbl9yYXRpbykgLyBjb21wcmVzc2lvbl9y
YXRpbykgLworICAgICAgICAga01heEFic0Zsb2F0UzE2VmFsdWU7Cit9CisKK2NvbnN0ZXhwciBk
b3VibGUgQ29tcHV0ZUxpbWl0ZXJEMihkb3VibGUgY29tcHJlc3Npb25fcmF0aW8pIHsKKyAgcmV0
dXJuICgxLjAgLSAyLjAgKiBjb21wcmVzc2lvbl9yYXRpbykgLyBjb21wcmVzc2lvbl9yYXRpbzsK
K30KKworZG91YmxlIENvbXB1dGVMaW1pdGVySTIoZG91YmxlIG1heF9pbnB1dF9sZXZlbF9kYiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBjb21wcmVzc2lvbl9yYXRpbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBnYWluX2N1cnZlX2xpbWl0ZXJfaTEpIHsKKyAgUlRD
X0NIRUNLX05FKGdhaW5fY3VydmVfbGltaXRlcl9pMSwgMC5mKTsKKyAgcmV0dXJuIHN0ZDo6cG93
KDEwLjAsIC1tYXhfaW5wdXRfbGV2ZWxfZGIgLyAoMjAuMCAqIGNvbXByZXNzaW9uX3JhdGlvKSkg
LworICAgICAgICAgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxIC8KKyAgICAgICAgIHN0ZDo6cG93KGtN
YXhBYnNGbG9hdFMxNlZhbHVlLCBnYWluX2N1cnZlX2xpbWl0ZXJfaTEgLSAxKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlCisKK0xpbWl0ZXJEYkdhaW5DdXJ2ZTo6TGltaXRlckRiR2FpbkN1cnZlKCkK
KyAgICA6IG1heF9pbnB1dF9sZXZlbF9saW5lYXJfKERiZnNUb0Zsb2F0UzE2KG1heF9pbnB1dF9s
ZXZlbF9kYl8pKSwKKyAgICAgIGtuZWVfc3RhcnRfZGJmc18oQ29tcHV0ZUtuZWVTdGFydChtYXhf
aW5wdXRfbGV2ZWxfZGJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtuZWVfc21vb3RobmVzc19kYl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tcHJlc3Npb25fcmF0aW9fKSksCisgICAgICBrbmVlX3N0YXJ0X2xpbmVhcl8oRGJm
c1RvRmxvYXRTMTYoa25lZV9zdGFydF9kYmZzXykpLAorICAgICAgbGltaXRlcl9zdGFydF9kYmZz
XyhrbmVlX3N0YXJ0X2RiZnNfICsga25lZV9zbW9vdGhuZXNzX2RiXyksCisgICAgICBsaW1pdGVy
X3N0YXJ0X2xpbmVhcl8oRGJmc1RvRmxvYXRTMTYobGltaXRlcl9zdGFydF9kYmZzXykpLAorICAg
ICAga25lZV9yZWdpb25fcG9seW5vbWlhbF8oQ29tcHV0ZUtuZWVSZWdpb25Qb2x5bm9taWFsKGtu
ZWVfc3RhcnRfZGJmc18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga25lZV9zbW9vdGhuZXNzX2RiXywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbl9yYXRp
b18pKSwKKyAgICAgIGdhaW5fY3VydmVfbGltaXRlcl9kMV8oCisgICAgICAgICAgQ29tcHV0ZUxp
bWl0ZXJEMShtYXhfaW5wdXRfbGV2ZWxfZGJfLCBjb21wcmVzc2lvbl9yYXRpb18pKSwKKyAgICAg
IGdhaW5fY3VydmVfbGltaXRlcl9kMl8oQ29tcHV0ZUxpbWl0ZXJEMihjb21wcmVzc2lvbl9yYXRp
b18pKSwKKyAgICAgIGdhaW5fY3VydmVfbGltaXRlcl9pMV8oMS4wIC8gY29tcHJlc3Npb25fcmF0
aW9fKSwKKyAgICAgIGdhaW5fY3VydmVfbGltaXRlcl9pMl8oQ29tcHV0ZUxpbWl0ZXJJMihtYXhf
aW5wdXRfbGV2ZWxfZGJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbXByZXNzaW9uX3JhdGlvXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnYWluX2N1cnZlX2xpbWl0ZXJfaTFfKSkgeworICBzdGF0aWNfYXNz
ZXJ0KGtuZWVfc21vb3RobmVzc19kYl8gPiAwLjBmLCAiIik7CisgIHN0YXRpY19hc3NlcnQoY29t
cHJlc3Npb25fcmF0aW9fID4gMS4wZiwgIiIpOworICBSVENfQ0hFQ0tfR0UobWF4X2lucHV0X2xl
dmVsX2RiXywga25lZV9zdGFydF9kYmZzXyArIGtuZWVfc21vb3RobmVzc19kYl8pOworfQorCitj
b25zdGV4cHIgZG91YmxlIExpbWl0ZXJEYkdhaW5DdXJ2ZTo6bWF4X2lucHV0X2xldmVsX2RiXzsK
K2NvbnN0ZXhwciBkb3VibGUgTGltaXRlckRiR2FpbkN1cnZlOjprbmVlX3Ntb290aG5lc3NfZGJf
OworY29uc3RleHByIGRvdWJsZSBMaW1pdGVyRGJHYWluQ3VydmU6OmNvbXByZXNzaW9uX3JhdGlv
XzsKKworZG91YmxlIExpbWl0ZXJEYkdhaW5DdXJ2ZTo6R2V0T3V0cHV0TGV2ZWxEYmZzKGRvdWJs
ZSBpbnB1dF9sZXZlbF9kYmZzKSBjb25zdCB7CisgIGlmIChpbnB1dF9sZXZlbF9kYmZzIDwga25l
ZV9zdGFydF9kYmZzXykgeworICAgIHJldHVybiBpbnB1dF9sZXZlbF9kYmZzOworICB9IGVsc2Ug
aWYgKGlucHV0X2xldmVsX2RiZnMgPCBsaW1pdGVyX3N0YXJ0X2RiZnNfKSB7CisgICAgcmV0dXJu
IEdldEtuZWVSZWdpb25PdXRwdXRMZXZlbERiZnMoaW5wdXRfbGV2ZWxfZGJmcyk7CisgIH0KKyAg
cmV0dXJuIEdldENvbXByZXNzb3JSZWdpb25PdXRwdXRMZXZlbERiZnMoaW5wdXRfbGV2ZWxfZGJm
cyk7Cit9CisKK2RvdWJsZSBMaW1pdGVyRGJHYWluQ3VydmU6OkdldEdhaW5MaW5lYXIoZG91Ymxl
IGlucHV0X2xldmVsX2xpbmVhcikgY29uc3QgeworICBpZiAoaW5wdXRfbGV2ZWxfbGluZWFyIDwg
a25lZV9zdGFydF9saW5lYXJfKSB7CisgICAgcmV0dXJuIDEuMDsKKyAgfQorICByZXR1cm4gRGJm
c1RvRmxvYXRTMTYoCisgICAgICAgICAgICAgR2V0T3V0cHV0TGV2ZWxEYmZzKEZsb2F0UzE2VG9E
YmZzKGlucHV0X2xldmVsX2xpbmVhcikpKSAvCisgICAgICAgICBpbnB1dF9sZXZlbF9saW5lYXI7
Cit9CisKKy8vIENvbXB1dGVzIHRoZSBmaXJzdCBkZXJpdmF0aXZlIG9mIEdldEdhaW5MaW5lYXIo
KSBpbiB8eHwuCitkb3VibGUgTGltaXRlckRiR2FpbkN1cnZlOjpHZXRHYWluRmlyc3REZXJpdmF0
aXZlTGluZWFyKGRvdWJsZSB4KSBjb25zdCB7CisgIC8vIEJleW9uZC1rbmVlIHJlZ2lvbiBvbmx5
LgorICBSVENfQ0hFQ0tfR0UoeCwgbGltaXRlcl9zdGFydF9saW5lYXJfIC0gMWUtNyAqIGtNYXhB
YnNGbG9hdFMxNlZhbHVlKTsKKyAgcmV0dXJuIGdhaW5fY3VydmVfbGltaXRlcl9kMV8gKgorICAg
ICAgICAgc3RkOjpwb3coeCAvIGtNYXhBYnNGbG9hdFMxNlZhbHVlLCBnYWluX2N1cnZlX2xpbWl0
ZXJfZDJfKTsKK30KKworLy8gQ29tcHV0ZXMgdGhlIGludGVncmFsIG9mIEdldEdhaW5MaW5lYXIo
KSBpbiB0aGUgcmFuZ2UgW3gwLCB4MV0uCitkb3VibGUgTGltaXRlckRiR2FpbkN1cnZlOjpHZXRH
YWluSW50ZWdyYWxMaW5lYXIoZG91YmxlIHgwLCBkb3VibGUgeDEpIGNvbnN0IHsKKyAgUlRDX0NI
RUNLX0xFKHgwLCB4MSk7ICAgICAgICAgICAgICAgICAgICAgLy8gVmFsaWQgaW50ZXJ2YWwuCisg
IFJUQ19DSEVDS19HRSh4MCwgbGltaXRlcl9zdGFydF9saW5lYXJfKTsgIC8vIEJleW9uZC1rbmVl
IHJlZ2lvbiBvbmx5LgorICBhdXRvIGxpbWl0ZXJfaW50ZWdyYWwgPSBbdGhpc10oY29uc3QgZG91
YmxlJiB4KSB7CisgICAgcmV0dXJuIGdhaW5fY3VydmVfbGltaXRlcl9pMl8gKiBzdGQ6OnBvdyh4
LCBnYWluX2N1cnZlX2xpbWl0ZXJfaTFfKTsKKyAgfTsKKyAgcmV0dXJuIGxpbWl0ZXJfaW50ZWdy
YWwoeDEpIC0gbGltaXRlcl9pbnRlZ3JhbCh4MCk7Cit9CisKK2RvdWJsZSBMaW1pdGVyRGJHYWlu
Q3VydmU6OkdldEtuZWVSZWdpb25PdXRwdXRMZXZlbERiZnMoCisgICAgZG91YmxlIGlucHV0X2xl
dmVsX2RiZnMpIGNvbnN0IHsKKyAgcmV0dXJuIGtuZWVfcmVnaW9uX3BvbHlub21pYWxfWzBdICog
aW5wdXRfbGV2ZWxfZGJmcyAqIGlucHV0X2xldmVsX2RiZnMgKworICAgICAgICAga25lZV9yZWdp
b25fcG9seW5vbWlhbF9bMV0gKiBpbnB1dF9sZXZlbF9kYmZzICsKKyAgICAgICAgIGtuZWVfcmVn
aW9uX3BvbHlub21pYWxfWzJdOworfQorCitkb3VibGUgTGltaXRlckRiR2FpbkN1cnZlOjpHZXRD
b21wcmVzc29yUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKAorICAgIGRvdWJsZSBpbnB1dF9sZXZlbF9k
YmZzKSBjb25zdCB7CisgIHJldHVybiAoaW5wdXRfbGV2ZWxfZGJmcyAtIG1heF9pbnB1dF9sZXZl
bF9kYl8pIC8gY29tcHJlc3Npb25fcmF0aW9fOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3VydmUuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2xpbWl0ZXJfZGJfZ2Fpbl9jdXJ2ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwODZlMjY3
MzliN2NmYzIwZmU2YTRjMzUzYTRkN2JjNWFhMDY4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3VydmUuaApAQCAtMCwwICsxLDc2IEBACisvKgor
ICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdD
Ml9MSU1JVEVSX0RCX0dBSU5fQ1VSVkVfSF8KKyNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX0FHQzJfTElNSVRFUl9EQl9HQUlOX0NVUlZFX0hfCisKKyNpbmNsdWRlIDxhcnJheT4KKwor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfdGVzdGluZ19jb21t
b24uaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEEgY2xhc3MgZm9yIGNvbXB1dGluZyBh
IGxpbWl0ZXIgZ2FpbiBjdXJ2ZSAoaW4gZEIgc2NhbGUpIGdpdmVuIGEgc2V0IG9mCisvLyBoYXJk
LWNvZGVkIHBhcmFtZXRlcnMgKG5hbWVseSwga0xpbWl0ZXJEYkdhaW5DdXJ2ZU1heElucHV0TGV2
ZWxEYkZzLAorLy8ga0xpbWl0ZXJEYkdhaW5DdXJ2ZUtuZWVTbW9vdGhuZXNzRGIsIGFuZAorLy8g
a0xpbWl0ZXJEYkdhaW5DdXJ2ZUNvbXByZXNzaW9uUmF0aW8pLiBUaGUgZ2VuZXJhdGVkIGN1cnZl
IGNvbnNpc3RzIG9mIGZvdXIKKy8vIHJlZ2lvbnM6IGlkZW50aXR5IChsaW5lYXIpLCBrbmVlIChx
dWFkcmF0aWMgcG9seW5vbWlhbCksIGNvbXByZXNzaW9uCisvLyAobGluZWFyKSwgc2F0dXJhdGlv
biAobGluZWFyKS4gVGhlIGFmb3JlbWVudGlvbmVkIGNvbnN0YW50cyBhcmUgdXNlZCB0byBzaGFw
ZQorLy8gdGhlIGRpZmZlcmVudCByZWdpb25zLgorY2xhc3MgTGltaXRlckRiR2FpbkN1cnZlIHsK
KyBwdWJsaWM6CisgIExpbWl0ZXJEYkdhaW5DdXJ2ZSgpOworCisgIGRvdWJsZSBtYXhfaW5wdXRf
bGV2ZWxfZGIoKSBjb25zdCB7IHJldHVybiBtYXhfaW5wdXRfbGV2ZWxfZGJfOyB9CisgIGRvdWJs
ZSBtYXhfaW5wdXRfbGV2ZWxfbGluZWFyKCkgY29uc3QgeyByZXR1cm4gbWF4X2lucHV0X2xldmVs
X2xpbmVhcl87IH0KKyAgZG91YmxlIGtuZWVfc3RhcnRfbGluZWFyKCkgY29uc3QgeyByZXR1cm4g
a25lZV9zdGFydF9saW5lYXJfOyB9CisgIGRvdWJsZSBsaW1pdGVyX3N0YXJ0X2xpbmVhcigpIGNv
bnN0IHsgcmV0dXJuIGxpbWl0ZXJfc3RhcnRfbGluZWFyXzsgfQorCisgIC8vIFRoZXNlIG1ldGhv
ZHMgY2FuIGJlIG1hcmtlZCAnY29uc3RleHByJyBpbiBDKysgMTQuCisgIGRvdWJsZSBHZXRPdXRw
dXRMZXZlbERiZnMoZG91YmxlIGlucHV0X2xldmVsX2RiZnMpIGNvbnN0OworICBkb3VibGUgR2V0
R2FpbkxpbmVhcihkb3VibGUgaW5wdXRfbGV2ZWxfbGluZWFyKSBjb25zdDsKKyAgZG91YmxlIEdl
dEdhaW5GaXJzdERlcml2YXRpdmVMaW5lYXIoZG91YmxlIHgpIGNvbnN0OworICBkb3VibGUgR2V0
R2FpbkludGVncmFsTGluZWFyKGRvdWJsZSB4MCwgZG91YmxlIHgxKSBjb25zdDsKKworIHByaXZh
dGU6CisgIGRvdWJsZSBHZXRLbmVlUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKGRvdWJsZSBpbnB1dF9s
ZXZlbF9kYmZzKSBjb25zdDsKKyAgZG91YmxlIEdldENvbXByZXNzb3JSZWdpb25PdXRwdXRMZXZl
bERiZnMoZG91YmxlIGlucHV0X2xldmVsX2RiZnMpIGNvbnN0OworCisgIHN0YXRpYyBjb25zdGV4
cHIgZG91YmxlIG1heF9pbnB1dF9sZXZlbF9kYl8gPSB0ZXN0OjprTGltaXRlck1heElucHV0TGV2
ZWxEYkZzOworICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrbmVlX3Ntb290aG5lc3NfZGJfID0g
dGVzdDo6a0xpbWl0ZXJLbmVlU21vb3RobmVzc0RiOworICBzdGF0aWMgY29uc3RleHByIGRvdWJs
ZSBjb21wcmVzc2lvbl9yYXRpb18gPSB0ZXN0OjprTGltaXRlckNvbXByZXNzaW9uUmF0aW87CisK
KyAgY29uc3QgZG91YmxlIG1heF9pbnB1dF9sZXZlbF9saW5lYXJfOworCisgIC8vIERvIG5vdCBt
b2RpZnkgc2lnbmFsIHdpdGggbGV2ZWwgPD0ga25lZV9zdGFydF9kYmZzXy4KKyAgY29uc3QgZG91
YmxlIGtuZWVfc3RhcnRfZGJmc187CisgIGNvbnN0IGRvdWJsZSBrbmVlX3N0YXJ0X2xpbmVhcl87
CisKKyAgLy8gVGhlIHVwcGVyIGVuZCBvZiB0aGUga25lZSByZWdpb24sIHdoaWNoIGlzIGJldHdl
ZW4ga25lZV9zdGFydF9kYmZzXyBhbmQKKyAgLy8gbGltaXRlcl9zdGFydF9kYmZzXy4KKyAgY29u
c3QgZG91YmxlIGxpbWl0ZXJfc3RhcnRfZGJmc187CisgIGNvbnN0IGRvdWJsZSBsaW1pdGVyX3N0
YXJ0X2xpbmVhcl87CisKKyAgLy8gQ29lZmZpY2llbnRzIHthLCBiLCBjfSBvZiB0aGUga25lZSBy
ZWdpb24gcG9seW5vbWlhbAorICAvLyBheF4yICsgYnggKyBjIGluIHRoZSBEQiBzY2FsZS4KKyAg
Y29uc3Qgc3RkOjphcnJheTxkb3VibGUsIDM+IGtuZWVfcmVnaW9uX3BvbHlub21pYWxfOworCisg
IC8vIFBhcmFtZXRlcnMgZm9yIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgZmlyc3QgZGVyaXZhdGl2
ZSBvZiBHZXRHYWluTGluZWFyKCkuCisgIGNvbnN0IGRvdWJsZSBnYWluX2N1cnZlX2xpbWl0ZXJf
ZDFfOworICBjb25zdCBkb3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2QyXzsKKworICAvLyBQYXJh
bWV0ZXJzIGZvciB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGludGVncmFsIG9mIEdldEdhaW5MaW5l
YXIoKS4KKyAgY29uc3QgZG91YmxlIGdhaW5fY3VydmVfbGltaXRlcl9pMV87CisgIGNvbnN0IGRv
dWJsZSBnYWluX2N1cnZlX2xpbWl0ZXJfaTJfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YworCisjZW5kaWYgIC8vIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0xJTUlURVJfREJf
R0FJTl9DVVJWRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWlu
X2N1cnZlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWluX2N1cnZl
X3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OWM4ZDU2OGVhNTBmMGNhZWYyNzk1MmYxZDdiZmE1
ZWQwZDU0YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dh
aW5fY3VydmVfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2Ri
X2dhaW5fY3VydmUuaCIKKworI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworCitURVNUKEZpeGVkRGlnaXRhbEdhaW5Db250cm9sbGVyMkxpbWl0ZXIsIENv
bnN0cnVjdERlc3RydWN0KSB7CisgIExpbWl0ZXJEYkdhaW5DdXJ2ZSBsOworfQorCitURVNUKEZp
eGVkRGlnaXRhbEdhaW5Db250cm9sbGVyMkxpbWl0ZXIsIEdhaW5DdXJ2ZVNob3VsZEJlTW9ub3Rv
bmUpIHsKKyAgTGltaXRlckRiR2FpbkN1cnZlIGw7CisgIGZsb2F0IGxhc3Rfb3V0cHV0X2xldmVs
ID0gMC5mOworICBib29sIGhhc19sYXN0X291dHB1dF9sZXZlbCA9IGZhbHNlOworICBmb3IgKGZs
b2F0IGxldmVsID0gLTkwLmY7IGxldmVsIDw9IGwubWF4X2lucHV0X2xldmVsX2RiKCk7IGxldmVs
ICs9IDAuNWYpIHsKKyAgICBjb25zdCBmbG9hdCBjdXJyZW50X291dHB1dF9sZXZlbCA9IGwuR2V0
T3V0cHV0TGV2ZWxEYmZzKGxldmVsKTsKKyAgICBpZiAoIWhhc19sYXN0X291dHB1dF9sZXZlbCkg
eworICAgICAgbGFzdF9vdXRwdXRfbGV2ZWwgPSBjdXJyZW50X291dHB1dF9sZXZlbDsKKyAgICAg
IGhhc19sYXN0X291dHB1dF9sZXZlbCA9IHRydWU7CisgICAgfQorICAgIEVYUEVDVF9MRShsYXN0
X291dHB1dF9sZXZlbCwgY3VycmVudF9vdXRwdXRfbGV2ZWwpOworICAgIGxhc3Rfb3V0cHV0X2xl
dmVsID0gY3VycmVudF9vdXRwdXRfbGV2ZWw7CisgIH0KK30KKworVEVTVChGaXhlZERpZ2l0YWxH
YWluQ29udHJvbGxlcjJMaW1pdGVyLCBHYWluQ3VydmVTaG91bGRCZUNvbnRpbnVvdXMpIHsKKyAg
TGltaXRlckRiR2FpbkN1cnZlIGw7CisgIGZsb2F0IGxhc3Rfb3V0cHV0X2xldmVsID0gMC5mOwor
ICBib29sIGhhc19sYXN0X291dHB1dF9sZXZlbCA9IGZhbHNlOworICBjb25zdGV4cHIgZmxvYXQg
a01heERlbHRhID0gMC41ZjsKKyAgZm9yIChmbG9hdCBsZXZlbCA9IC05MC5mOyBsZXZlbCA8PSBs
Lm1heF9pbnB1dF9sZXZlbF9kYigpOyBsZXZlbCArPSAwLjVmKSB7CisgICAgY29uc3QgZmxvYXQg
Y3VycmVudF9vdXRwdXRfbGV2ZWwgPSBsLkdldE91dHB1dExldmVsRGJmcyhsZXZlbCk7CisgICAg
aWYgKCFoYXNfbGFzdF9vdXRwdXRfbGV2ZWwpIHsKKyAgICAgIGxhc3Rfb3V0cHV0X2xldmVsID0g
Y3VycmVudF9vdXRwdXRfbGV2ZWw7CisgICAgICBoYXNfbGFzdF9vdXRwdXRfbGV2ZWwgPSB0cnVl
OworICAgIH0KKyAgICBFWFBFQ1RfTEUoY3VycmVudF9vdXRwdXRfbGV2ZWwsIGxhc3Rfb3V0cHV0
X2xldmVsICsga01heERlbHRhKTsKKyAgICBsYXN0X291dHB1dF9sZXZlbCA9IGN1cnJlbnRfb3V0
cHV0X2xldmVsOworICB9Cit9CisKK1RFU1QoRml4ZWREaWdpdGFsR2FpbkNvbnRyb2xsZXIyTGlt
aXRlciwgT3V0cHV0R2FpblNob3VsZEJlTGVzc1RoYW5GdWxsU2NhbGUpIHsKKyAgTGltaXRlckRi
R2FpbkN1cnZlIGw7CisgIGZvciAoZmxvYXQgbGV2ZWwgPSAtOTAuZjsgbGV2ZWwgPD0gbC5tYXhf
aW5wdXRfbGV2ZWxfZGIoKTsgbGV2ZWwgKz0gMC41ZikgeworICAgIGNvbnN0IGZsb2F0IGN1cnJl
bnRfb3V0cHV0X2xldmVsID0gbC5HZXRPdXRwdXRMZXZlbERiZnMobGV2ZWwpOworICAgIEVYUEVD
VF9MRShjdXJyZW50X291dHB1dF9sZXZlbCwgMC5mKTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl91bml0dGVzdC5jYwppbmRleCA3MDc5ODEyNjM0NzVh
YTNiOWYwZWIzNTE4OTE3NTk4NWJiM2E3OTMyLi5lNjYyYTdmYzg5MDQ1OGUzOGI1OGY3ODEyZjcw
Mjk5Mzg3ZmRhZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXJfdW5pdHRlc3QuY2MKQEAgLTEwLDUwICsx
MCw1MCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRl
ci5oIgogCisjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl90ZXN0aW5nX2NvbW1vbi5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZlY3Rvcl9mbG9hdF9m
cmFtZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9k
YXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCi1URVNUKEZpeGVkRGlnaXRhbEdhaW5Db250cm9sbGVyMkxpbWl0ZXIsIENvbnN0
cnVjdERlc3RydWN0KSB7Ci0gIExpbWl0ZXIgbDsKLX0KK1RFU1QoTGltaXRlciwgTGltaXRlclNo
b3VsZENvbnN0cnVjdEFuZFJ1bikgeworICBjb25zdCBpbnQgc2FtcGxlX3JhdGVfaHogPSA0ODAw
MDsKKyAgQXBtRGF0YUR1bXBlciBhcG1fZGF0YV9kdW1wZXIoMCk7CiAKLVRFU1QoRml4ZWREaWdp
dGFsR2FpbkNvbnRyb2xsZXIyTGltaXRlciwgR2FpbkN1cnZlU2hvdWxkQmVNb25vdG9uZSkgewot
ICBMaW1pdGVyIGw7Ci0gIGZsb2F0IGxhc3Rfb3V0cHV0X2xldmVsID0gMC5mOwotICBib29sIGhh
c19sYXN0X291dHB1dF9sZXZlbCA9IGZhbHNlOwotICBmb3IgKGZsb2F0IGxldmVsID0gLTkwLmY7
IGxldmVsIDw9IGwubWF4X2lucHV0X2xldmVsX2RiKCk7IGxldmVsICs9IDAuNWYpIHsKLSAgICBj
b25zdCBmbG9hdCBjdXJyZW50X291dHB1dF9sZXZlbCA9IGwuR2V0T3V0cHV0TGV2ZWxEYmZzKGxl
dmVsKTsKLSAgICBpZiAoIWhhc19sYXN0X291dHB1dF9sZXZlbCkgewotICAgICAgbGFzdF9vdXRw
dXRfbGV2ZWwgPSBjdXJyZW50X291dHB1dF9sZXZlbDsKLSAgICAgIGhhc19sYXN0X291dHB1dF9s
ZXZlbCA9IHRydWU7Ci0gICAgfQotICAgIEVYUEVDVF9MRShsYXN0X291dHB1dF9sZXZlbCwgY3Vy
cmVudF9vdXRwdXRfbGV2ZWwpOwotICAgIGxhc3Rfb3V0cHV0X2xldmVsID0gY3VycmVudF9vdXRw
dXRfbGV2ZWw7Ci0gIH0KKyAgTGltaXRlciBsaW1pdGVyKHNhbXBsZV9yYXRlX2h6LCAmYXBtX2Rh
dGFfZHVtcGVyLCAiIik7CisKKyAgVmVjdG9yRmxvYXRGcmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRf
ZnJhbWUoMSwgc2FtcGxlX3JhdGVfaHogLyAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtNYXhBYnNGbG9hdFMxNlZhbHVlKTsKKyAgbGltaXRlci5Qcm9j
ZXNzKHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZS5mbG9hdF9mcmFtZV92aWV3KCkpOwogfQogCi1U
RVNUKEZpeGVkRGlnaXRhbEdhaW5Db250cm9sbGVyMkxpbWl0ZXIsIEdhaW5DdXJ2ZVNob3VsZEJl
Q29udGludW91cykgewotICBMaW1pdGVyIGw7Ci0gIGZsb2F0IGxhc3Rfb3V0cHV0X2xldmVsID0g
MC5mOwotICBib29sIGhhc19sYXN0X291dHB1dF9sZXZlbCA9IGZhbHNlOwotICBjb25zdGV4cHIg
ZmxvYXQga01heERlbHRhID0gMC41ZjsKLSAgZm9yIChmbG9hdCBsZXZlbCA9IC05MC5mOyBsZXZl
bCA8PSBsLm1heF9pbnB1dF9sZXZlbF9kYigpOyBsZXZlbCArPSAwLjVmKSB7Ci0gICAgY29uc3Qg
ZmxvYXQgY3VycmVudF9vdXRwdXRfbGV2ZWwgPSBsLkdldE91dHB1dExldmVsRGJmcyhsZXZlbCk7
Ci0gICAgaWYgKCFoYXNfbGFzdF9vdXRwdXRfbGV2ZWwpIHsKLSAgICAgIGxhc3Rfb3V0cHV0X2xl
dmVsID0gY3VycmVudF9vdXRwdXRfbGV2ZWw7Ci0gICAgICBoYXNfbGFzdF9vdXRwdXRfbGV2ZWwg
PSB0cnVlOwotICAgIH0KLSAgICBFWFBFQ1RfTEUoY3VycmVudF9vdXRwdXRfbGV2ZWwsIGxhc3Rf
b3V0cHV0X2xldmVsICsga01heERlbHRhKTsKLSAgICBsYXN0X291dHB1dF9sZXZlbCA9IGN1cnJl
bnRfb3V0cHV0X2xldmVsOworVEVTVChMaW1pdGVyLCBPdXRwdXRWb2x1bWVBYm92ZVRocmVzaG9s
ZCkgeworICBjb25zdCBpbnQgc2FtcGxlX3JhdGVfaHogPSA0ODAwMDsKKyAgY29uc3QgZmxvYXQg
aW5wdXRfbGV2ZWwgPQorICAgICAgKGtNYXhBYnNGbG9hdFMxNlZhbHVlICsgRGJmc1RvRmxvYXRT
MTYodGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGcykpIC8KKyAgICAgIDIuZjsKKyAgQXBt
RGF0YUR1bXBlciBhcG1fZGF0YV9kdW1wZXIoMCk7CisKKyAgTGltaXRlciBsaW1pdGVyKHNhbXBs
ZV9yYXRlX2h6LCAmYXBtX2RhdGFfZHVtcGVyLCAiIik7CisKKyAgLy8gR2l2ZSB0aGUgbGV2ZWwg
ZXN0aW1hdG9yIHRpbWUgdG8gYWRhcHQuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7
CisgICAgVmVjdG9yRmxvYXRGcmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUoMSwgc2FtcGxl
X3JhdGVfaHogLyAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5wdXRfbGV2ZWwpOworICAgIGxpbWl0ZXIuUHJvY2Vzcyh2ZWN0b3JzX3dpdGhfZmxv
YXRfZnJhbWUuZmxvYXRfZnJhbWVfdmlldygpKTsKICAgfQotfQogCi1URVNUKEZpeGVkRGlnaXRh
bEdhaW5Db250cm9sbGVyMkxpbWl0ZXIsIE91dHB1dEdhaW5TaG91bGRCZUxlc3NUaGFuRnVsbFNj
YWxlKSB7Ci0gIExpbWl0ZXIgbDsKLSAgZm9yIChmbG9hdCBsZXZlbCA9IC05MC5mOyBsZXZlbCA8
PSBsLm1heF9pbnB1dF9sZXZlbF9kYigpOyBsZXZlbCArPSAwLjVmKSB7Ci0gICAgY29uc3QgZmxv
YXQgY3VycmVudF9vdXRwdXRfbGV2ZWwgPSBsLkdldE91dHB1dExldmVsRGJmcyhsZXZlbCk7Ci0g
ICAgRVhQRUNUX0xFKGN1cnJlbnRfb3V0cHV0X2xldmVsLCAwLmYpOworICBWZWN0b3JGbG9hdEZy
YW1lIHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZSgxLCBzYW1wbGVfcmF0ZV9oeiAvIDEwMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGV2ZWwpOwor
ICBsaW1pdGVyLlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lLmZsb2F0X2ZyYW1lX3Zp
ZXcoKSk7CisgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjaGFubmVsID0KKyAgICAgIHZl
Y3RvcnNfd2l0aF9mbG9hdF9mcmFtZS5mbG9hdF9mcmFtZV92aWV3KCkuY2hhbm5lbCgwKTsKKwor
ICBmb3IgKGNvbnN0IGF1dG8mIHNhbXBsZSA6IGNoYW5uZWwpIHsKKyAgICBFWFBFQ1RfTFQoMC45
ZiAqIGtNYXhBYnNGbG9hdFMxNlZhbHVlLCBzYW1wbGUpOwogICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL25vaXNlX2xldmVsX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L25vaXNlX2xldmVsX2VzdGltYXRvci5jYwppbmRleCBkOWFhZjFmOWJkM2Y2Njg5ZGU3ZmFkMDQ3
YjkzMzRhM2YwZjcwNmQyLi42ZTQzNjcyY2UwMzE2ZjI3NjJjZTk2MGU2MjYwN2JjODViOTcyYzZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9sZXZlbF9lc3RpbWF0b3IuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvbm9pc2VfbGV2ZWxfZXN0aW1hdG9yLmNjCkBAIC0xMCwxMyArMTAs
MTUgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL25vaXNlX2xl
dmVsX2VzdGltYXRvci5oIgogCi0jaW5jbHVkZSA8bWF0aC5oPgotCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPG51
bWVyaWM+CiAKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImNvbW1vbl9h
dWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L25vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL25vaXNlX3NwZWN0
cnVtX2VzdGltYXRvci5jYwppbmRleCA5ZTA4MTI2ZTg5MmUzNzUyYzY5YWIzZmM4MTIwY2U2NGQ1
MWEyZDE3Li41NzM1ZmFmM2QyY2JkMzY0ZDBkNTBjOGI1YWQwYjRhYmIwZDAxY2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmNjCkBAIC0xNiw2ICsxNiw3IEBA
CiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9h
cnJheXNpemUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9m
ZWF0dXJlc19leHRyYWN0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZWF0dXJlc19l
eHRyYWN0aW9uLmNjCmluZGV4IDhhYjU2NzM2YTJmMmI4YjkxOWY0M2Y2NDE1YmZmMTRiOTAyNDI2
MmEuLjhmNDcyYTU1ZWQ2NDlkMjgxMjFiOWVhNGMyYmMxNTc0NWMwOTZlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVyZXNfZXh0cmFjdGlvbi5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9ybm5fdmFkL2ZlYXR1cmVzX2V4dHJhY3Rpb24uY2MKQEAgLTEwLDYgKzEwLDgg
QEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVh
dHVyZXNfZXh0cmFjdGlvbi5oIgogCisjaW5jbHVkZSA8YXJyYXk+CisKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2xwX3Jlc2lkdWFsLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92
YWQvZmVhdHVyZXNfZXh0cmFjdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZWF0dXJl
c19leHRyYWN0aW9uLmgKaW5kZXggMWY2Mzg4NWM0ZTZkODc3NGMyYzQ0ZGMwMTEyNWY1OThhNzUz
YTQwMi4uY2U1Y2NlMTg1N2NkNDE3YmNiZWE0ZDc5ZDAxMTk0NGNiODZlNWU0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZWF0dXJlc19leHRyYWN0aW9uLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZWF0dXJlc19leHRyYWN0aW9uLmgKQEAgLTExLDEyICsxMSwx
MiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9STk5fVkFEX0ZFQVRV
UkVTX0VYVFJBQ1RJT05fSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJf
Uk5OX1ZBRF9GRUFUVVJFU19FWFRSQUNUSU9OX0hfCiAKLSNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9jb21tb24uaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX2luZm8uaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJj
aC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc2Vx
dWVuY2VfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
cm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
cm5uX3ZhZC9mZnRfdXRpbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmZ0X3V0aWwuY2MK
aW5kZXggMTAxNzQwMGEyODI0ZDFiYmEyYzQ2MmMwNjczMzQ4YmMxNGE1YmFhMC4uYTFjNWRhYzQ3
Nzc0ZTQwYjE4OTcwOGI2NTQ1ZDVmOWFmOTAxZWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvcm5uX3ZhZC9mZnRfdXRpbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2ZmdF91
dGlsLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9ybm5fdmFkL2ZmdF91dGlsLmgiCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNp
bmNsdWRlIDxjbWF0aD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9scF9yZXNpZHVhbC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
cm5uX3ZhZC9scF9yZXNpZHVhbC5oCmluZGV4IGJmZmFmZDI5MWY5MzZlNzlhNDk2MWIxZjdkZGRi
YjRiNWUxNTdmMjEuLmNkZGVkY2E1ZDYxNGVjOTRhMGYzNjU0NGI3M2Q5MzA5ZTRlOGRkNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvbHBfcmVzaWR1YWwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9ybm5fdmFkL2xwX3Jlc2lkdWFsLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5k
ZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9MUF9SRVNJRFVBTF9IXwog
I2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9STk5fVkFEX0xQX1JFU0lEVUFM
X0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3Zh
ZC9waXRjaF9zZWFyY2guY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaC5j
YwppbmRleCAxZjg4NTlkNWIwNGQ0NTM1MDZiYTE4NWU3Y2M5MGVlOGQ0YWY5YWYzLi5hYTBiNzUx
ZDI4YTFhYmQ1ZTRkNzBjZDVlMmQwYzkxZTY0NGYwODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFk
L3BpdGNoX3NlYXJjaC5jYwpAQCAtMTAsNiArMTAsMTEgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvcGl0Y2hfc2VhcmNoLmgiCiAKKyNpbmNsdWRl
IDxhcnJheT4KKyNpbmNsdWRlIDxjc3RkZGVmPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHJubl92YWQgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaF9pbnRlcm5hbC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL3Jubl92YWQvcGl0Y2hfc2VhcmNoX2ludGVybmFsLmNjCmluZGV4IGI3YjQ0
ZDI5Mzc2OWMwYWY5MzI0MTY5MjJiNzVlZDZhYWUwMDI1MzQuLjMyZWU4YzAwZGY4NDliNTY0MjE3
MGEwODAzMDRjNTFkZjNjNjdmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQv
cGl0Y2hfc2VhcmNoX2ludGVybmFsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvcGl0
Y2hfc2VhcmNoX2ludGVybmFsLmNjCkBAIC0xMCwxMCArMTAsMTIgQEAKIAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvcGl0Y2hfc2VhcmNoX2ludGVybmFs
LmgiCiAKKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVk
ZSA8Y21hdGg+CisjaW5jbHVkZSA8Y29tcGxleD4KKyNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1
ZGUgPG51bWVyaWM+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvY29tbW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJj
aF9pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFyY2hfaW50ZXJu
YWwuaAppbmRleCA3NWY3ZjE3YTQyZmMyOTY4ZjNjMjg3ZWUxNDZkMjY3MzFhZTU4NjkzLi5iYjc0
N2JiMDNlNGM1ZDg5YzEyMmRmYzgyNDQ3NzY5M2QzOGZmYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaF9pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL3Jubl92YWQvcGl0Y2hfc2VhcmNoX2ludGVybmFsLmgKQEAgLTExLDYgKzExLDcgQEAKICNp
Zm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9QSVRDSF9TRUFSQ0hf
SU5URVJOQUxfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZB
RF9QSVRDSF9TRUFSQ0hfSU5URVJOQUxfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1
ZGUgPGFycmF5PgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL3Jubl92YWQvcm5uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3Jubi5o
CmluZGV4IGIzYTNiOWM0ODVjMTcyZjYyNzZjYjQ5YTJiYjU0ZDE3YTAzYzhiMTUuLmE3ZDA1N2Q1
NzY5NTkwMDFhNDRmN2QzYjBhNzk2OTk2MDk3NGMyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL3Jubl92YWQvcm5uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9ybm4uaApAQCAt
MTEsNiArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9STk5f
VkFEX1JOTl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9STk5fVkFE
X1JOTl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAj
aW5jbHVkZSA8YXJyYXk+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9ybm5fdmFkX3Rvb2wuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9ybm5fdmFkL3Jubl92YWRfdG9vbC5jYwppbmRleCA1ZmJhMGJmYWM4NzdjNGRjNmRmYWY4NDI2
ODcwNmM2MzBiYzY3OWJmLi5iNjZkZmQ2ODRkNzQ0M2M4MzY2OWYyMzdjNTYxZDNhY2U5ZjA1ODY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3Jubl92YWRfdG9vbC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3Jubl92YWRfdG9vbC5jYwpAQCAtMjUsMjIgKzI1LDIy
IEBAIG5hbWVzcGFjZSBybm5fdmFkIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIG5hbWVzcGFjZSB7CiAK
LURFRklORV9zdHJpbmcoaSwgIiIsICJQYXRoIHRvIHRoZSBpbnB1dCB3YXYgZmlsZSIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcoaSwgIiIsICJQYXRoIHRvIHRoZSBpbnB1dCB3YXYgZmlsZSIpOwog
c3RkOjpzdHJpbmcgSW5wdXRXYXZGaWxlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpz
dHJpbmc+KEZMQUdfaSk7CiB9CiAKLURFRklORV9zdHJpbmcoZiwgIiIsICJQYXRoIHRvIHRoZSBv
dXRwdXQgZmVhdHVyZXMgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoZiwgIiIsICJQYXRo
IHRvIHRoZSBvdXRwdXQgZmVhdHVyZXMgZmlsZSIpOwogc3RkOjpzdHJpbmcgT3V0cHV0RmVhdHVy
ZXNGaWxlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfZik7CiB9
CiAKLURFRklORV9zdHJpbmcobywgIiIsICJQYXRoIHRvIHRoZSBvdXRwdXQgVkFEIHByb2JhYmls
aXRpZXMgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcobywgIiIsICJQYXRoIHRvIHRoZSBv
dXRwdXQgVkFEIHByb2JhYmlsaXRpZXMgZmlsZSIpOwogc3RkOjpzdHJpbmcgT3V0cHV0VmFkUHJv
YnNGaWxlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfbyk7CiB9
CiAKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZSIpOworV0VC
UlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZSIpOwogCiB9
ICAvLyBuYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVj
dHJhbF9mZWF0dXJlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJl
cy5oCmluZGV4IGJlZGQ3YWIzZDdkMWFkYTU4MjRmMTc2YTdiNTVhOTc5N2IzYjc1YjguLjVjMzNk
Y2RkMjQ1NjE2Yjg5MTMxZDBiN2ZjMzZiZTczMWFiYTRmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL3Jubl92YWQvc3BlY3RyYWxfZmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9y
bm5fdmFkL3NwZWN0cmFsX2ZlYXR1cmVzLmgKQEAgLTEzLDYgKzEzLDcgQEAKIAogI2luY2x1ZGUg
PGFycmF5PgogI2luY2x1ZGUgPGNvbXBsZXg+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRl
IDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJlc19pbnRlcm5hbC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL3Jubl92YWQvc3BlY3RyYWxfZmVhdHVyZXNfaW50ZXJuYWwuY2MKaW5kZXggOWY0
ZTIxODUwZjVmNzZlOWMwZmI2YjcxYWEyOGY0ZjlkMWFkYWUxMi4uNzQyMTFmZTgxNGRhODg3MTk2
OWEzYWIwNjAwZTVhNzU1MmE4YzgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3Zh
ZC9zcGVjdHJhbF9mZWF0dXJlc19pbnRlcm5hbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5f
dmFkL3NwZWN0cmFsX2ZlYXR1cmVzX2ludGVybmFsLmNjCkBAIC0xMiw2ICsxMiw3IEBACiAKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8Y3N0ZGRlZj4K
IAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9ybm5fdmFkL3NwZWN0cmFsX2ZlYXR1cmVzX2ludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9ybm5fdmFkL3NwZWN0cmFsX2ZlYXR1cmVzX2ludGVybmFsLmgKaW5kZXggNDViYjM4MjA3OGU2
NTcyNzM0MmQ4NDYzM2FiYjY1OGQwZDg5MTlkOC4uZWRmZDE4Y2M4NTA2M2IyOGM3MmJmY2Q2YTcy
YzljZThiNjMzOTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVjdHJh
bF9mZWF0dXJlc19pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc3BlY3Ry
YWxfZmVhdHVyZXNfaW50ZXJuYWwuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUdDMl9STk5fVkFEX1NQRUNUUkFMX0ZFQVRVUkVTX0lOVEVSTkFM
X0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX1JOTl9WQURfU1BFQ1RS
QUxfRkVBVFVSRVNfSU5URVJOQUxfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUg
PGFycmF5PgogI2luY2x1ZGUgPGNvbXBsZXg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L3NhdHVyYXRpb25fcHJvdGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2F0dXJhdGlvbl9wcm90
ZWN0b3IuY2MKaW5kZXggMDg5NTU4M2I4Mzk2MmZmMzYwYWU2MDEzZTNhNmJiZGY2NmFjZDdlZC4u
OTRhNTJlYWFjYWFkODY3NzcwYTQ3NWRiYzFiYjMzYWJmMmE4NjA4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvc2F0dXJhdGlvbl9wcm90ZWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
c2F0dXJhdGlvbl9wcm90ZWN0b3IuY2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9zYXR1cmF0aW9uX3Byb3RlY3Rvci5oIgogCiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgogCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKQEAgLTU2LDkgKzU3LDE0IEBAIGZsb2F0
IFNhdHVyYXRpb25Qcm90ZWN0b3I6OlBlYWtFbnZlbG9wZXI6OlF1ZXJ5KCkgY29uc3QgewogfQog
CiBTYXR1cmF0aW9uUHJvdGVjdG9yOjpTYXR1cmF0aW9uUHJvdGVjdG9yKEFwbURhdGFEdW1wZXIq
IGFwbV9kYXRhX2R1bXBlcikKKyAgICA6IFNhdHVyYXRpb25Qcm90ZWN0b3IoYXBtX2RhdGFfZHVt
cGVyLCBHZXRFeHRyYVNhdHVyYXRpb25NYXJnaW5PZmZzZXREYigpKSB7Cit9CisKK1NhdHVyYXRp
b25Qcm90ZWN0b3I6OlNhdHVyYXRpb25Qcm90ZWN0b3IoQXBtRGF0YUR1bXBlciogYXBtX2RhdGFf
ZHVtcGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBl
eHRyYV9zYXR1cmF0aW9uX21hcmdpbl9kYikKICAgICA6IGFwbV9kYXRhX2R1bXBlcl8oYXBtX2Rh
dGFfZHVtcGVyKSwKICAgICAgIGxhc3RfbWFyZ2luXyhHZXRJbml0aWFsU2F0dXJhdGlvbk1hcmdp
bkRiKCkpLAotICAgICAgZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGJfKEdldEV4dHJhU2F0dXJh
dGlvbk1hcmdpbk9mZnNldERiKCkpIHt9CisgICAgICBleHRyYV9zYXR1cmF0aW9uX21hcmdpbl9k
Yl8oZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGIpIHt9CiAKIHZvaWQgU2F0dXJhdGlvblByb3Rl
Y3Rvcjo6VXBkYXRlTWFyZ2luKAogICAgIGNvbnN0IFZhZFdpdGhMZXZlbDo6TGV2ZWxBbmRQcm9i
YWJpbGl0eSYgdmFkX2RhdGEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9zYXR1cmF0aW9u
X3Byb3RlY3Rvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2F0dXJhdGlvbl9wcm90ZWN0b3IuaAppbmRl
eCAxNzA1ZjZhYzVmYmJiYjBhMjFmZjFjZWU0M2JjZTk3NWZlYjVkNjgyLi5lNjM3NDY5MDcwZWFi
NjAzMmExZjY2ZTVmYjVkOTA1OWM4NWFjMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9z
YXR1cmF0aW9uX3Byb3RlY3Rvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3NhdHVyYXRpb25fcHJv
dGVjdG9yLmgKQEAgLTI0LDYgKzI0LDkgQEAgY2xhc3MgU2F0dXJhdGlvblByb3RlY3RvciB7CiAg
cHVibGljOgogICBleHBsaWNpdCBTYXR1cmF0aW9uUHJvdGVjdG9yKEFwbURhdGFEdW1wZXIqIGFw
bV9kYXRhX2R1bXBlcik7CiAKKyAgU2F0dXJhdGlvblByb3RlY3RvcihBcG1EYXRhRHVtcGVyKiBh
cG1fZGF0YV9kdW1wZXIsCisgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZXh0cmFfc2F0dXJh
dGlvbl9tYXJnaW5fZGIpOworCiAgIC8vIFVwZGF0ZSBhbmQgcmV0dXJuIG1hcmdpbiBlc3RpbWF0
ZS4gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZAogICAvLyB3aGVuZXZlciBhIGZyYW1lIGlz
IHJlbGlhYmx5IGNsYXNzaWZpZWQgYXMgJ3NwZWVjaCcuCiAgIC8vCkBAIC02MCw3ICs2Myw3IEBA
IGNsYXNzIFNhdHVyYXRpb25Qcm90ZWN0b3IgewogCiAgIGZsb2F0IGxhc3RfbWFyZ2luXzsKICAg
UGVha0VudmVsb3BlciBwZWFrX2VudmVsb3Blcl87Ci0gIGZsb2F0IGV4dHJhX3NhdHVyYXRpb25f
bWFyZ2luX2RiXzsKKyAgY29uc3QgZmxvYXQgZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGJfOwog
fTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
c2lnbmFsX2NsYXNzaWZpZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9zaWduYWxfY2xhc3NpZmllci5j
YwppbmRleCAwZWMzNDE0OGI5MzUzYTg4NGUxYzFhMjA4ZjA0M2FkOTVmZDYzNmFmLi44Nzc4YzQ5
NDI2NTc5N2E0ZmY4OGI2MjBlNzgwNGI5NDRhZjUzZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9zaWduYWxfY2xhc3NpZmllci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9zaWduYWxfY2xh
c3NpZmllci5jYwpAQCAtMTgsNyArMTgsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2Rvd25fc2FtcGxlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL25vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZl
bC5jYwppbmRleCBkZWNmYWNkMGMxODAzNzYwODM1N2NiN2QxNTNkNmRjOWNjZDgxMzEyLi41Mjk3
MGRmZTY3N2MzZDVlNzFlZmMyZmQyZTg3YWI0ZWM0YTM1MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi92YWRfd2l0aF9sZXZlbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9s
ZXZlbC5jYwpAQCAtMTEsMTAgKzExLDEyIEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxjbWF0aD4KIAorI2luY2x1ZGUgImFwaS9hcnJheV92
aWV3LmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvY29tbW9uLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZlbC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
dmFkX3dpdGhfbGV2ZWwuaAppbmRleCA2N2EwMGNlZDZjMTA2MDk2Njk5MWRiNGI4ZWM4M2Q1OWNk
YTBhODI1Li5iMGFkODY4ZDRiOTdjNGE2YjUzNjBlY2UxMzYzYWEwNTZiZTA1MTZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZlbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L3ZhZF93aXRoX2xldmVsLmgKQEAgLTExLDcgKzExLDYgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FHQzJfVkFEX1dJVEhfTEVWRUxfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FHQzJfVkFEX1dJVEhfTEVWRUxfSF8KIAotI2luY2x1ZGUgImFwaS9hcnJh
eV92aWV3LmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9pbmNsdWRlL3B1c2hf
cmVzYW1wbGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5u
X3ZhZC9mZWF0dXJlc19leHRyYWN0aW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvcm5uX3ZhZC9ybm4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Zh
ZF93aXRoX2xldmVsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWxf
dW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjlhZWU2MmJhOWFhYjQxMGFmMWJlMmQwMTk1ODdmZGMy
Y2Y1NjM5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVs
X3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuaCIK
KworI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFt
ZXNwYWNlIHRlc3QgeworCitURVNUKEF1dG9tYXRpY0dhaW5Db250cm9sbGVyMlZhZFdpdGhMZXZl
bEVzdGltYXRvciwKKyAgICAgUGVha0xldmVsR3JlYXRlclRoYW5SbXNMZXZlbCkgeworICBjb25z
dGV4cHIgc2l6ZV90IGtTYW1wbGVSYXRlSHogPSA4MDAwOworCisgIC8vIDEwIG1zIGlucHV0IGZy
YW1lLCBjb25zdGFudCBleGNlcHQgZm9yIG9uZSBwZWFrIHZhbHVlLgorICAvLyBIYW5kY3JhZnRl
ZCBzbyB0aGF0IHRoZSBhdmVyYWdlIGlzIGxvd2VyIHRoYW4gdGhlIHBlYWsgdmFsdWUuCisgIHN0
ZDo6YXJyYXk8ZmxvYXQsIGtTYW1wbGVSYXRlSHogLyAxMDA+IGZyYW1lOworICBmcmFtZS5maWxs
KDEwMDAuZik7CisgIGZyYW1lWzEwXSA9IDIwMDAuZjsKKyAgZmxvYXQqIGNvbnN0IGNoYW5uZWww
ID0gZnJhbWUuZGF0YSgpOworICBBdWRpb0ZyYW1lVmlldzxmbG9hdD4gZnJhbWVfdmlldygmY2hh
bm5lbDAsIDEsIGZyYW1lLnNpemUoKSk7CisKKyAgLy8gQ29tcHV0ZSBhdWRpbyBmcmFtZSBsZXZl
bHMgKHRoZSBWQUQgcmVzdWx0IGlzIGlnbm9yZWQpLgorICBWYWRXaXRoTGV2ZWwgdmFkX3dpdGhf
bGV2ZWw7CisgIGF1dG8gbGV2ZWxzX2FuZF92YWRfcHJvYiA9IHZhZF93aXRoX2xldmVsLkFuYWx5
emVGcmFtZShmcmFtZV92aWV3KTsKKworICAvLyBDb21wYXJlIHBlYWsgYW5kIFJNUyBsZXZlbHMu
CisgIEVYUEVDVF9MVChsZXZlbHNfYW5kX3ZhZF9wcm9iLnNwZWVjaF9ybXNfZGJmcywKKyAgICAg
ICAgICAgIGxldmVsc19hbmRfdmFkX3Byb2Iuc3BlZWNoX3BlYWtfZGJmcyk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYXVkaW9fYnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5jYwppbmRleCBm
MTYzZjVhMDdkZWQyODkyMzNmZThmYWE4Y2EyOWRkYTA0MWNjNmE1Li4wYzM4YTRmZTgyYjg1NGRl
OTA2ZjA2ZTY3NWZjNjk0ODQyYzliNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVm
ZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuY2MKQEAgLTEwLDExICsxMCwxMyBA
QAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5oIgog
CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKwogI2luY2x1ZGUgImNv
bW1vbl9hdWRpby9jaGFubmVsX2J1ZmZlci5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNs
dWRlL2F1ZGlvX3V0aWwuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vcmVzYW1wbGVyL3B1c2hf
c2luY19yZXNhbXBsZXIuaCIKLSNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nlc3Np
bmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9zcGxpdHRpbmdfZmlsdGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5oCmluZGV4IGFkZTNlZWMxM2RiMmExNzM3N2Q0
Y2ViZjA3NGJhNzcyY2NmYWM1NWEuLjQ2OTY0NmU4ZGI0YjY4ZDlmZDk3NDgyODlmNDVhM2YwZGRk
MzY2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYXVkaW9fYnVmZmVyLmgKQEAgLTExLDE4ICsxMSwyMSBAQAogI2lmbmRlZiBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfQVVESU9fQlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJP
Q0VTU0lOR19BVURJT19CVUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNs
dWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vY2hh
bm5lbF9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVk
ZS9hdWRpb19wcm9jZXNzaW5nLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3NwbGl0dGluZ19maWx0ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ndGVzdF9wcm9kX3V0aWwu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIFB1c2hTaW5jUmVzYW1wbGVyOwogY2xh
c3MgSUZDaGFubmVsQnVmZmVyOworY2xhc3MgUHVzaFNpbmNSZXNhbXBsZXI7CitjbGFzcyBTcGxp
dHRpbmdGaWx0ZXI7CiAKIGVudW0gQmFuZCB7IGtCYW5kMFRvOGtIeiA9IDAsIGtCYW5kOFRvMTZr
SHogPSAxLCBrQmFuZDE2VG8yNGtIeiA9IDIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1
ZGlvX3Byb2Nlc3NpbmdfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGwu
Y2MKaW5kZXggYjkxNTNmYTA4YjkyMDQwYTY2Yjg4YWIyYmZhYWIyMDljOTVlY2I3Mi4uMjkzN2Mw
NjgwYmY1YWM2OTliMmMyOGZmOTY4NDE5Njg4MzgxZjFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2F1ZGlvX3Byb2Nlc3NpbmdfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2lu
Z19pbXBsLmNjCkBAIC0xMCwxNSArMTAsMTYgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGwuaCIKIAotI2luY2x1ZGUgPG1hdGguaD4K
ICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxzdHJp
bmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgog
I2luY2x1ZGUgImNvbW1vbl9hdWRpby9hdWRpb19jb252ZXJ0ZXIuaCIKLSNpbmNsdWRlICJjb21t
b25fYXVkaW8vY2hhbm5lbF9idWZmZXIuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vaW5jbHVk
ZS9hdWRpb191dGlsLmgiCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5n
L2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMvYWVjX2NvcmUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjL2FnY19tYW5hZ2VyX2RpcmVjdC5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fYXBwbGllci5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKQEAgLTI4LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2Zvcl9leHBlcmltZW50
YWxfYWdjLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJv
bF9pbXBsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJv
bGxlcjIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRp
b19mcmFtZV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xldmVs
X2VzdGltYXRvcl9pbXBsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xv
Z2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2xvd19jdXRfZmlsdGVyLmgiCkBAIC0zNywxMCArMzksOSBAQAogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy92b2ljZV9kZXRlY3Rpb25faW1wbC5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2F0b21pY29wcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fZmlsZS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vYXJj
aC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3RyYWNlX2V2ZW50LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmlj
cy5oIgpAQCAtMTE1LDI5ICsxMTYsNiBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhBbGxvd2Vk
VmFsdWVzT2ZTYW1wbGVzUGVyRnJhbWUgPSA0ODA7CiAvLyBUT0RPKHBlYWgpOiBEZWNyZWFzZSB0
aGlzIG9uY2Ugd2UgcHJvcGVybHkgaGFuZGxlIGh1Z2VseSB1bmJhbGFuY2VkCiAvLyByZXZlcnNl
IGFuZCBmb3J3YXJkIGNhbGwgbnVtYmVycy4KIHN0YXRpYyBjb25zdCBzaXplX3Qga01heE51bUZy
YW1lc1RvQnVmZmVyID0gMTAwOwotCi1jbGFzcyBIaWdoUGFzc0ZpbHRlckltcGwgOiBwdWJsaWMg
SGlnaFBhc3NGaWx0ZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgSGlnaFBhc3NGaWx0ZXJJbXBs
KEF1ZGlvUHJvY2Vzc2luZ0ltcGwqIGFwbSkgOiBhcG1fKGFwbSkge30KLSAgfkhpZ2hQYXNzRmls
dGVySW1wbCgpIG92ZXJyaWRlID0gZGVmYXVsdDsKLQotICAvLyBIaWdoUGFzc0ZpbHRlciBpbXBs
ZW1lbnRhdGlvbi4KLSAgaW50IEVuYWJsZShib29sIGVuYWJsZSkgb3ZlcnJpZGUgewotICAgIGFw
bV8tPk11dGF0ZUNvbmZpZyhbZW5hYmxlXShBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZyogY29uZmln
KSB7Ci0gICAgICBjb25maWctPmhpZ2hfcGFzc19maWx0ZXIuZW5hYmxlZCA9IGVuYWJsZTsKLSAg
ICB9KTsKLQotICAgIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtOb0Vycm9yOwotICB9Ci0KLSAg
Ym9vbCBpc19lbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIHJldHVybiBhcG1fLT5HZXRD
b25maWcoKS5oaWdoX3Bhc3NfZmlsdGVyLmVuYWJsZWQ7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEF1
ZGlvUHJvY2Vzc2luZ0ltcGwqIGFwbV87Ci0gIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJV
Q1RPUlMoSGlnaFBhc3NGaWx0ZXJJbXBsKTsKLX07CiB9ICAvLyBuYW1lc3BhY2UKIAogLy8gVGhy
b3VnaG91dCB3ZWJydGMsIGl0J3MgYXNzdW1lZCB0aGF0IHN1Y2Nlc3MgaXMgcmVwcmVzZW50ZWQg
YnkgemVyby4KQEAgLTI0OSw4ICsyMjcsNiBAQCBib29sIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkFw
bVN1Ym1vZHVsZVN0YXRlczo6TG93Q3V0RmlsdGVyaW5nUmVxdWlyZWQoKSBjb25zdCB7CiBzdHJ1
Y3QgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6QXBtUHVibGljU3VibW9kdWxlcyB7CiAgIEFwbVB1Ymxp
Y1N1Ym1vZHVsZXMoKSB7fQogICAvLyBBY2Nlc3NlZCBleHRlcm5hbGx5IG9mIEFQTSB3aXRob3V0
IGFueSBsb2NrIGFjcXVpcmVkLgotICBzdGQ6OnVuaXF1ZV9wdHI8RWNob0NhbmNlbGxhdGlvbklt
cGw+IGVjaG9fY2FuY2VsbGF0aW9uOwotICBzdGQ6OnVuaXF1ZV9wdHI8RWNob0NvbnRyb2xNb2Jp
bGVJbXBsPiBlY2hvX2NvbnRyb2xfbW9iaWxlOwogICBzdGQ6OnVuaXF1ZV9wdHI8R2FpbkNvbnRy
b2xJbXBsPiBnYWluX2NvbnRyb2w7CiAgIHN0ZDo6dW5pcXVlX3B0cjxMZXZlbEVzdGltYXRvcklt
cGw+IGxldmVsX2VzdGltYXRvcjsKICAgc3RkOjp1bmlxdWVfcHRyPE5vaXNlU3VwcHJlc3Npb25J
bXBsPiBub2lzZV9zdXBwcmVzc2lvbjsKQEAgLTI3NiwxMSArMjUyLDE0IEBAIHN0cnVjdCBBdWRp
b1Byb2Nlc3NpbmdJbXBsOjpBcG1Qcml2YXRlU3VibW9kdWxlcyB7CiAgIHN0ZDo6dW5pcXVlX3B0
cjxHYWluQ29udHJvbGxlcjI+IGdhaW5fY29udHJvbGxlcjI7CiAgIHN0ZDo6dW5pcXVlX3B0cjxM
b3dDdXRGaWx0ZXI+IGxvd19jdXRfZmlsdGVyOwogICBydGM6OnNjb3BlZF9yZWZwdHI8RWNob0Rl
dGVjdG9yPiBlY2hvX2RldGVjdG9yOworICBzdGQ6OnVuaXF1ZV9wdHI8RWNob0NhbmNlbGxhdGlv
bkltcGw+IGVjaG9fY2FuY2VsbGF0aW9uOwogICBzdGQ6OnVuaXF1ZV9wdHI8RWNob0NvbnRyb2w+
IGVjaG9fY29udHJvbGxlcjsKKyAgc3RkOjp1bmlxdWVfcHRyPEVjaG9Db250cm9sTW9iaWxlSW1w
bD4gZWNob19jb250cm9sX21vYmlsZTsKICAgc3RkOjp1bmlxdWVfcHRyPEN1c3RvbVByb2Nlc3Np
bmc+IGNhcHR1cmVfcG9zdF9wcm9jZXNzb3I7CiAgIHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21Qcm9j
ZXNzaW5nPiByZW5kZXJfcHJlX3Byb2Nlc3NvcjsKICAgc3RkOjp1bmlxdWVfcHRyPEdhaW5BcHBs
aWVyPiBwcmVfYW1wbGlmaWVyOwogICBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tQXVkaW9BbmFseXpl
cj4gY2FwdHVyZV9hbmFseXplcjsKKyAgc3RkOjp1bmlxdWVfcHRyPExldmVsRXN0aW1hdG9ySW1w
bD4gb3V0cHV0X2xldmVsX2VzdGltYXRvcjsKIH07CiAKIEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXI6
OkF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKSA9IGRlZmF1bHQ7CkBAIC0zNTIsNyArMzMxLDYgQEAg
QXVkaW9Qcm9jZXNzaW5nSW1wbDo6QXVkaW9Qcm9jZXNzaW5nSW1wbCgKICAgICAgIHJlbmRlcl9y
dW50aW1lX3NldHRpbmdzXyhrUnVudGltZVNldHRpbmdRdWV1ZVNpemUpLAogICAgICAgY2FwdHVy
ZV9ydW50aW1lX3NldHRpbmdzX2VucXVldWVyXygmY2FwdHVyZV9ydW50aW1lX3NldHRpbmdzXyks
CiAgICAgICByZW5kZXJfcnVudGltZV9zZXR0aW5nc19lbnF1ZXVlcl8oJnJlbmRlcl9ydW50aW1l
X3NldHRpbmdzXyksCi0gICAgICBoaWdoX3Bhc3NfZmlsdGVyX2ltcGxfKG5ldyBIaWdoUGFzc0Zp
bHRlckltcGwodGhpcykpLAogICAgICAgZWNob19jb250cm9sX2ZhY3RvcnlfKHN0ZDo6bW92ZShl
Y2hvX2NvbnRyb2xfZmFjdG9yeSkpLAogICAgICAgc3VibW9kdWxlX3N0YXRlc18oISFjYXB0dXJl
X3Bvc3RfcHJvY2Vzc29yLAogICAgICAgICAgICAgICAgICAgICAgICAgISFyZW5kZXJfcHJlX3By
b2Nlc3NvciwKQEAgLTM5MCwxMCArMzY4LDYgQEAgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6QXVkaW9Q
cm9jZXNzaW5nSW1wbCgKICAgICBjYXB0dXJlX25vbmxvY2tlZF8uZWNob19jb250cm9sbGVyX2Vu
YWJsZWQgPQogICAgICAgICBzdGF0aWNfY2FzdDxib29sPihlY2hvX2NvbnRyb2xfZmFjdG9yeV8p
OwogCi0gICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi5yZXNldCgKLSAg
ICAgICAgbmV3IEVjaG9DYW5jZWxsYXRpb25JbXBsKCZjcml0X3JlbmRlcl8sICZjcml0X2NhcHR1
cmVfKSk7Ci0gICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLnJlc2V0
KAotICAgICAgICBuZXcgRWNob0NvbnRyb2xNb2JpbGVJbXBsKCZjcml0X3JlbmRlcl8sICZjcml0
X2NhcHR1cmVfKSk7CiAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5nYWluX2NvbnRyb2wucmVzZXQo
CiAgICAgICAgIG5ldyBHYWluQ29udHJvbEltcGwoJmNyaXRfcmVuZGVyXywgJmNyaXRfY2FwdHVy
ZV8pKTsKICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmxldmVsX2VzdGltYXRvci5yZXNldCgKQEAg
LTQxMiw2ICszODYsOCBAQCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpBdWRpb1Byb2Nlc3NpbmdJbXBs
KAogICAgICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8UmVzaWR1YWxFY2hvRGV0ZWN0
b3I+KCk7CiAgICAgfQogCisgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRp
b24ucmVzZXQobmV3IEVjaG9DYW5jZWxsYXRpb25JbXBsKCkpOworICAgIHByaXZhdGVfc3VibW9k
dWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUucmVzZXQobmV3IEVjaG9Db250cm9sTW9iaWxlSW1w
bCgpKTsKICAgICAvLyBUT0RPKGFsZXNzaW9iKTogTW92ZSB0aGUgaW5qZWN0ZWQgZ2FpbiBjb250
cm9sbGVyIG9uY2UgaW5qZWN0aW9uIGlzCiAgICAgLy8gaW1wbGVtZW50ZWQuCiAgICAgcHJpdmF0
ZV9zdWJtb2R1bGVzXy0+Z2Fpbl9jb250cm9sbGVyMi5yZXNldChuZXcgR2FpbkNvbnRyb2xsZXIy
KCkpOwpAQCAtNTMwLDE2ICs1MDYsMTYgQEAgaW50IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkluaXRp
YWxpemVMb2NrZWQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0c18uYXBpX2Zvcm1h
dC5vdXRwdXRfc3RyZWFtKCkubnVtX2NoYW5uZWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0c18uYXBpX2Zvcm1hdC5vdXRwdXRfc3RyZWFtKCkubnVtX2ZyYW1lcygpKSk7CiAKLSAg
cHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+SW5pdGlhbGl6ZSgKKyAgcHJp
dmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPkluaXRpYWxpemUoCiAgICAgICBw
cm9jX3NhbXBsZV9yYXRlX2h6KCksIG51bV9yZXZlcnNlX2NoYW5uZWxzKCksIG51bV9vdXRwdXRf
Y2hhbm5lbHMoKSwKICAgICAgIG51bV9wcm9jX2NoYW5uZWxzKCkpOwogICBBbGxvY2F0ZVJlbmRl
clF1ZXVlKCk7CiAKLSAgaW50IHN1Y2Nlc3MgPSBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2Fu
Y2VsbGF0aW9uLT5lbmFibGVfbWV0cmljcyh0cnVlKTsKKyAgaW50IHN1Y2Nlc3MgPSBwcml2YXRl
X3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+ZW5hYmxlX21ldHJpY3ModHJ1ZSk7CiAg
IFJUQ19EQ0hFQ0tfRVEoMCwgc3VjY2Vzcyk7Ci0gIHN1Y2Nlc3MgPSBwdWJsaWNfc3VibW9kdWxl
c18tPmVjaG9fY2FuY2VsbGF0aW9uLT5lbmFibGVfZGVsYXlfbG9nZ2luZyh0cnVlKTsKKyAgc3Vj
Y2VzcyA9IHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5lbmFibGVfZGVs
YXlfbG9nZ2luZyh0cnVlKTsKICAgUlRDX0RDSEVDS19FUSgwLCBzdWNjZXNzKTsKLSAgcHVibGlj
X3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5Jbml0aWFsaXplKAorICBwcml2YXRl
X3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5Jbml0aWFsaXplKAogICAgICAgcHJv
Y19zcGxpdF9zYW1wbGVfcmF0ZV9oeigpLCBudW1fcmV2ZXJzZV9jaGFubmVscygpLAogICAgICAg
bnVtX291dHB1dF9jaGFubmVscygpKTsKIApAQCAtNjYyLDE4ICs2MzgsMTggQEAgaW50IEF1ZGlv
UHJvY2Vzc2luZ0ltcGw6OkluaXRpYWxpemVMb2NrZWQoY29uc3QgUHJvY2Vzc2luZ0NvbmZpZyYg
Y29uZmlnKSB7CiB9CiAKIHZvaWQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6QXBwbHlDb25maWcoY29u
c3QgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWcmIGNvbmZpZykgewotICBjb25maWdfID0gY29uZmln
OwotCiAgIC8vIFJ1biBpbiBhIHNpbmdsZS10aHJlYWRlZCBtYW5uZXIgd2hlbiBhcHBseWluZyB0
aGUgc2V0dGluZ3MuCiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX3JlbmRlcigmY3JpdF9yZW5kZXJfKTsK
ICAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZSgmY3JpdF9jYXB0dXJlXyk7CiAKLSAgcHVibGlj
X3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+RW5hYmxlKAorICBjb25maWdfID0gY29u
ZmlnOworCisgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5FbmFibGUo
CiAgICAgICBjb25maWdfLmVjaG9fY2FuY2VsbGVyLmVuYWJsZWQgJiYgIWNvbmZpZ18uZWNob19j
YW5jZWxsZXIubW9iaWxlX21vZGUpOwotICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY29udHJv
bF9tb2JpbGUtPkVuYWJsZSgKKyAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21v
YmlsZS0+RW5hYmxlKAogICAgICAgY29uZmlnXy5lY2hvX2NhbmNlbGxlci5lbmFibGVkICYmIGNv
bmZpZ18uZWNob19jYW5jZWxsZXIubW9iaWxlX21vZGUpOwogCi0gIHB1YmxpY19zdWJtb2R1bGVz
Xy0+ZWNob19jYW5jZWxsYXRpb24tPnNldF9zdXBwcmVzc2lvbl9sZXZlbCgKKyAgcHJpdmF0ZV9z
dWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPnNldF9zdXBwcmVzc2lvbl9sZXZlbCgKICAg
ICAgIGNvbmZpZy5lY2hvX2NhbmNlbGxlci5sZWdhY3lfbW9kZXJhdGVfc3VwcHJlc3Npb25fbGV2
ZWwKICAgICAgICAgICA/IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpTdXBwcmVzc2lvbkxldmVsOjpr
TW9kZXJhdGVTdXBwcmVzc2lvbgogICAgICAgICAgIDogRWNob0NhbmNlbGxhdGlvbkltcGw6OlN1
cHByZXNzaW9uTGV2ZWw6OmtIaWdoU3VwcHJlc3Npb24pOwpAQCAtNjk4LDYgKzY3NCwxMyBAQCB2
b2lkIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkFwcGx5Q29uZmlnKGNvbnN0IEF1ZGlvUHJvY2Vzc2lu
Zzo6Q29uZmlnJiBjb25maWcpIHsKICAgICAgICAgICAgICAgICAgICA8PCBjb25maWdfLmdhaW5f
Y29udHJvbGxlcjIuZW5hYmxlZDsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUHJlLWFtcGxpZmll
ciBhY3RpdmF0ZWQ6ICIKICAgICAgICAgICAgICAgICAgICA8PCBjb25maWdfLnByZV9hbXBsaWZp
ZXIuZW5hYmxlZDsKKworICBpZiAoY29uZmlnXy5sZXZlbF9lc3RpbWF0aW9uLmVuYWJsZWQgJiYK
KyAgICAgICFwcml2YXRlX3N1Ym1vZHVsZXNfLT5vdXRwdXRfbGV2ZWxfZXN0aW1hdG9yKSB7Cisg
ICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+b3V0cHV0X2xldmVsX2VzdGltYXRvci5yZXNldCgKKyAg
ICAgICAgbmV3IExldmVsRXN0aW1hdG9ySW1wbCgmY3JpdF9jYXB0dXJlXykpOworICAgIHByaXZh
dGVfc3VibW9kdWxlc18tPm91dHB1dF9sZXZlbF9lc3RpbWF0b3ItPkVuYWJsZSh0cnVlKTsKKyAg
fQogfQogCiB2b2lkIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OlNldEV4dHJhT3B0aW9ucyhjb25zdCB3
ZWJydGM6OkNvbmZpZyYgY29uZmlnKSB7CkBAIC03MDUsNyArNjg4LDcgQEAgdm9pZCBBdWRpb1By
b2Nlc3NpbmdJbXBsOjpTZXRFeHRyYU9wdGlvbnMoY29uc3Qgd2VicnRjOjpDb25maWcmIGNvbmZp
ZykgewogICBydGM6OkNyaXRTY29wZSBjc19yZW5kZXIoJmNyaXRfcmVuZGVyXyk7CiAgIHJ0Yzo6
Q3JpdFNjb3BlIGNzX2NhcHR1cmUoJmNyaXRfY2FwdHVyZV8pOwogCi0gIHB1YmxpY19zdWJtb2R1
bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPlNldEV4dHJhT3B0aW9ucyhjb25maWcpOworICBwcml2
YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+U2V0RXh0cmFPcHRpb25zKGNvbmZp
Zyk7CiAKICAgaWYgKGNhcHR1cmVfLnRyYW5zaWVudF9zdXBwcmVzc29yX2VuYWJsZWQgIT0KICAg
ICAgIGNvbmZpZy5HZXQ8RXhwZXJpbWVudGFsTnM+KCkuZW5hYmxlZCkgewpAQCAtMTA4MiwxMiAr
MTA2NSwxMiBAQCB2b2lkIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkFsbG9jYXRlUmVuZGVyUXVldWUo
KSB7CiB2b2lkIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkVtcHR5UXVldWVkUmVuZGVyQXVkaW8oKSB7
CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoJmNyaXRfY2FwdHVyZV8pOwogICB3aGlsZSAo
YWVjX3JlbmRlcl9zaWduYWxfcXVldWVfLT5SZW1vdmUoJmFlY19jYXB0dXJlX3F1ZXVlX2J1ZmZl
cl8pKSB7Ci0gICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+UHJvY2Vz
c1JlbmRlckF1ZGlvKAorICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9u
LT5Qcm9jZXNzUmVuZGVyQXVkaW8oCiAgICAgICAgIGFlY19jYXB0dXJlX3F1ZXVlX2J1ZmZlcl8p
OwogICB9CiAKICAgd2hpbGUgKGFlY21fcmVuZGVyX3NpZ25hbF9xdWV1ZV8tPlJlbW92ZSgmYWVj
bV9jYXB0dXJlX3F1ZXVlX2J1ZmZlcl8pKSB7Ci0gICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hv
X2NvbnRyb2xfbW9iaWxlLT5Qcm9jZXNzUmVuZGVyQXVkaW8oCisgICAgcHJpdmF0ZV9zdWJtb2R1
bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+UHJvY2Vzc1JlbmRlckF1ZGlvKAogICAgICAgICBh
ZWNtX2NhcHR1cmVfcXVldWVfYnVmZmVyXyk7CiAgIH0KIApAQCAtMTEwOSw5ICsxMDkyLDYgQEAg
aW50IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OlByb2Nlc3NTdHJlYW0oQXVkaW9GcmFtZSogZnJhbWUp
IHsKICAgICAvLyBBY3F1aXJlIHRoZSBjYXB0dXJlIGxvY2sgaW4gb3JkZXIgdG8gc2FmZWx5IGNh
bGwgdGhlIGZ1bmN0aW9uCiAgICAgLy8gdGhhdCByZXRyaWV2ZXMgdGhlIHJlbmRlciBzaWRlIGRh
dGEuIFRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgQVBNCiAgICAgLy8gZ2V0dGVycyB0aGF0IG5lZWQg
dGhlIGNhcHR1cmUgbG9jayBoZWxkIHdoZW4gYmVpbmcgY2FsbGVkLgotICAgIC8vIFRoZSBsb2Nr
IG5lZWRzIHRvIGJlIHJlbGVhc2VkIGFzCi0gICAgLy8gcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hv
X2NvbnRyb2xfbW9iaWxlLT5pc19lbmFibGVkKCkgYWNxdWlyZXMgdGhpcyBsb2NrCi0gICAgLy8g
YXMgd2VsbC4KICAgICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKCZjcml0X2NhcHR1cmVfKTsK
ICAgICBFbXB0eVF1ZXVlZFJlbmRlckF1ZGlvKCk7CiAgIH0KQEAgLTExODAsOCArMTE2MCw4IEBA
IGludCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpQcm9jZXNzQ2FwdHVyZVN0cmVhbUxvY2tlZCgpIHsK
ICAgLy8gRW5zdXJlIHRoYXQgbm90IGJvdGggdGhlIEFFQyBhbmQgQUVDTSBhcmUgYWN0aXZlIGF0
IHRoZSBzYW1lIHRpbWUuCiAgIC8vIFRPRE8ocGVhaCk6IFNpbXBsaWZ5IG9uY2UgdGhlIHB1Ymxp
YyBBUEkgRW5hYmxlIGZ1bmN0aW9ucyBmb3IgdGhlc2UKICAgLy8gYXJlIG1vdmVkIHRvIEFQTS4K
LSAgUlRDX0RDSEVDSyghKHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlz
X2VuYWJsZWQoKSAmJgotICAgICAgICAgICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2Nv
bnRyb2xfbW9iaWxlLT5pc19lbmFibGVkKCkpKTsKKyAgUlRDX0RDSEVDSyghKHByaXZhdGVfc3Vi
bW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCkgJiYKKyAgICAgICAgICAg
ICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJsZWQo
KSkpOwogCiAgIE1heWJlVXBkYXRlSGlzdG9ncmFtcygpOwogCkBAIC0xMjY1LDcgKzEyNDUsNyBA
QCBpbnQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6UHJvY2Vzc0NhcHR1cmVTdHJlYW1Mb2NrZWQoKSB7
CiAKICAgLy8gRW5zdXJlIHRoYXQgdGhlIHN0cmVhbSBkZWxheSB3YXMgc2V0IGJlZm9yZSB0aGUg
Y2FsbCB0byB0aGUKICAgLy8gQUVDIFByb2Nlc3NDYXB0dXJlQXVkaW8gZnVuY3Rpb24uCi0gIGlm
IChwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCkgJiYK
KyAgaWYgKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVk
KCkgJiYKICAgICAgICFwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xsZXIgJiYgIXdh
c19zdHJlYW1fZGVsYXlfc2V0KCkpIHsKICAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprU3Ry
ZWFtUGFyYW1ldGVyTm90U2V0RXJyb3I7CiAgIH0KQEAgLTEyODEsMTEgKzEyNjEsMTEgQEAgaW50
IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OlByb2Nlc3NDYXB0dXJlU3RyZWFtTG9ja2VkKCkgewogICAg
IHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbGxlci0+UHJvY2Vzc0NhcHR1cmUoCiAg
ICAgICAgIGNhcHR1cmVfYnVmZmVyLCBjYXB0dXJlXy5lY2hvX3BhdGhfZ2Fpbl9jaGFuZ2UpOwog
ICB9IGVsc2UgewotICAgIFJFVFVSTl9PTl9FUlIocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2Nh
bmNlbGxhdGlvbi0+UHJvY2Vzc0NhcHR1cmVBdWRpbygKKyAgICBSRVRVUk5fT05fRVJSKHByaXZh
dGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5Qcm9jZXNzQ2FwdHVyZUF1ZGlvKAog
ICAgICAgICBjYXB0dXJlX2J1ZmZlciwgc3RyZWFtX2RlbGF5X21zKCkpKTsKICAgfQogCi0gIGlm
IChwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJsZWQoKSAm
JgorICBpZiAocHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+aXNfZW5h
YmxlZCgpICYmCiAgICAgICBwdWJsaWNfc3VibW9kdWxlc18tPm5vaXNlX3N1cHByZXNzaW9uLT5p
c19lbmFibGVkKCkpIHsKICAgICBjYXB0dXJlX2J1ZmZlci0+Q29weUxvd1Bhc3NUb1JlZmVyZW5j
ZSgpOwogICB9CkBAIC0xMjkzLDE0ICsxMjczLDE0IEBAIGludCBBdWRpb1Byb2Nlc3NpbmdJbXBs
OjpQcm9jZXNzQ2FwdHVyZVN0cmVhbUxvY2tlZCgpIHsKIAogICAvLyBFbnN1cmUgdGhhdCB0aGUg
c3RyZWFtIGRlbGF5IHdhcyBzZXQgYmVmb3JlIHRoZSBjYWxsIHRvIHRoZQogICAvLyBBRUNNIFBy
b2Nlc3NDYXB0dXJlQXVkaW8gZnVuY3Rpb24uCi0gIGlmIChwdWJsaWNfc3VibW9kdWxlc18tPmVj
aG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJsZWQoKSAmJgorICBpZiAocHJpdmF0ZV9zdWJtb2R1
bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+aXNfZW5hYmxlZCgpICYmCiAgICAgICAhd2FzX3N0
cmVhbV9kZWxheV9zZXQoKSkgewogICAgIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtTdHJlYW1Q
YXJhbWV0ZXJOb3RTZXRFcnJvcjsKICAgfQogCiAgIGlmICghKHByaXZhdGVfc3VibW9kdWxlc18t
PmVjaG9fY29udHJvbGxlciB8fAotICAgICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2Fu
Y2VsbGF0aW9uLT5pc19lbmFibGVkKCkpKSB7Ci0gICAgUkVUVVJOX09OX0VSUihwdWJsaWNfc3Vi
bW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPlByb2Nlc3NDYXB0dXJlQXVkaW8oCisgICAg
ICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCkp
KSB7CisgICAgUkVUVVJOX09OX0VSUihwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xf
bW9iaWxlLT5Qcm9jZXNzQ2FwdHVyZUF1ZGlvKAogICAgICAgICBjYXB0dXJlX2J1ZmZlciwgc3Ry
ZWFtX2RlbGF5X21zKCkpKTsKICAgfQogCkBAIC0xMzE1LDcgKzEyOTUsNyBAQCBpbnQgQXVkaW9Q
cm9jZXNzaW5nSW1wbDo6UHJvY2Vzc0NhcHR1cmVTdHJlYW1Mb2NrZWQoKSB7CiAgIH0KICAgUkVU
VVJOX09OX0VSUihwdWJsaWNfc3VibW9kdWxlc18tPmdhaW5fY29udHJvbC0+UHJvY2Vzc0NhcHR1
cmVBdWRpbygKICAgICAgIGNhcHR1cmVfYnVmZmVyLAotICAgICAgcHVibGljX3N1Ym1vZHVsZXNf
LT5lY2hvX2NhbmNlbGxhdGlvbi0+c3RyZWFtX2hhc19lY2hvKCkpKTsKKyAgICAgIHByaXZhdGVf
c3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zdHJlYW1faGFzX2VjaG8oKSkpOwogCiAg
IGlmIChzdWJtb2R1bGVfc3RhdGVzXy5DYXB0dXJlTXVsdGlCYW5kUHJvY2Vzc2luZ0FjdGl2ZSgp
ICYmCiAgICAgICBTYW1wbGVSYXRlU3VwcG9ydHNNdWx0aUJhbmQoCkBAIC0xMzY0LDYgKzEzNDQs
MTMgQEAgaW50IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OlByb2Nlc3NDYXB0dXJlU3RyZWFtTG9ja2Vk
KCkgewogCiAgIC8vIFRoZSBsZXZlbCBlc3RpbWF0b3Igb3BlcmF0ZXMgb24gdGhlIHJlY29tYmlu
ZWQgZGF0YS4KICAgcHVibGljX3N1Ym1vZHVsZXNfLT5sZXZlbF9lc3RpbWF0b3ItPlByb2Nlc3NT
dHJlYW0oY2FwdHVyZV9idWZmZXIpOworICBpZiAoY29uZmlnXy5sZXZlbF9lc3RpbWF0aW9uLmVu
YWJsZWQpIHsKKyAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5vdXRwdXRfbGV2ZWxfZXN0aW1hdG9y
LT5Qcm9jZXNzU3RyZWFtKGNhcHR1cmVfYnVmZmVyKTsKKyAgICBjYXB0dXJlXy5zdGF0cy5vdXRw
dXRfcm1zX2RiZnMgPQorICAgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5vdXRwdXRfbGV2ZWxf
ZXN0aW1hdG9yLT5STVMoKTsKKyAgfSBlbHNlIHsKKyAgICBjYXB0dXJlXy5zdGF0cy5vdXRwdXRf
cm1zX2RiZnMgPSBhYnNsOjpudWxsb3B0OworICB9CiAKICAgY2FwdHVyZV9vdXRwdXRfcm1zXy5B
bmFseXplKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGludDE2X3Q+KAogICAgICAgY2FwdHVyZV9idWZm
ZXItPmNoYW5uZWxzX2NvbnN0KClbMF0sCkBAIC0xNjEzLDExMiArMTYwMCw1MiBAQCB2b2lkIEF1
ZGlvUHJvY2Vzc2luZ0ltcGw6OkRldGFjaFBsYXlvdXRBdWRpb0dlbmVyYXRvcigpIHsKICAgLy8g
RGVsZXRlIGF1ZGlvIGdlbmVyYXRvciwgaWYgb25lIGlzIGF0dGFjaGVkLgogfQogCi1BdWRpb1By
b2Nlc3Npbmc6OkF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3M6OkF1ZGlvUHJvY2Vzc2luZ1N0YXRp
c3RpY3MoKSB7Ci0gIHJlc2lkdWFsX2VjaG9fcmV0dXJuX2xvc3MuU2V0KC0xMDAuMGYsIC0xMDAu
MGYsIC0xMDAuMGYsIC0xMDAuMGYpOwotICBlY2hvX3JldHVybl9sb3NzLlNldCgtMTAwLjBmLCAt
MTAwLjBmLCAtMTAwLjBmLCAtMTAwLjBmKTsKLSAgZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVu
dC5TZXQoLTEwMC4wZiwgLTEwMC4wZiwgLTEwMC4wZiwgLTEwMC4wZik7Ci0gIGFfbmxwLlNldCgt
MTAwLjBmLCAtMTAwLjBmLCAtMTAwLjBmLCAtMTAwLjBmKTsKLX0KLQotQXVkaW9Qcm9jZXNzaW5n
OjpBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzOjpBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzKAot
ICAgIGNvbnN0IEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MmIG90aGVyKSA9IGRlZmF1bHQ7Ci0K
LUF1ZGlvUHJvY2Vzc2luZzo6QXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljczo6fkF1ZGlvUHJvY2Vz
c2luZ1N0YXRpc3RpY3MoKSA9Ci0gICAgZGVmYXVsdDsKLQotLy8gVE9ETyhpdm9jKTogUmVtb3Zl
IHRoaXMgd2hlbiBHZXRTdGF0aXN0aWNzKCkgYmVjb21lcyBwdXJlIHZpcnR1YWwuCi1BdWRpb1By
b2Nlc3Npbmc6OkF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MgQXVkaW9Qcm9jZXNzaW5nOjpHZXRT
dGF0aXN0aWNzKCkKLSAgICBjb25zdCB7Ci0gIHJldHVybiBBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0
aWNzKCk7Ci19Ci0KLS8vIFRPRE8oaXZvYyk6IFJlbW92ZSB0aGlzIHdoZW4gR2V0U3RhdGlzdGlj
cygpIGJlY29tZXMgcHVyZSB2aXJ0dWFsLgotQXVkaW9Qcm9jZXNzaW5nU3RhdHMgQXVkaW9Qcm9j
ZXNzaW5nOjpHZXRTdGF0aXN0aWNzKAorQXVkaW9Qcm9jZXNzaW5nU3RhdHMgQXVkaW9Qcm9jZXNz
aW5nSW1wbDo6R2V0U3RhdGlzdGljcygKICAgICBib29sIGhhc19yZW1vdGVfdHJhY2tzKSBjb25z
dCB7Ci0gIHJldHVybiBBdWRpb1Byb2Nlc3NpbmdTdGF0cygpOwotfQotCi1BdWRpb1Byb2Nlc3Np
bmc6OkF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6R2V0U3Rh
dGlzdGljcygpCi0gICAgY29uc3QgewotICBBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzIHN0YXRz
OworICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKCZjcml0X2NhcHR1cmVfKTsKKyAgaWYgKCFo
YXNfcmVtb3RlX3RyYWNrcykgeworICAgIHJldHVybiBjYXB0dXJlXy5zdGF0czsKKyAgfQorICBB
dWRpb1Byb2Nlc3NpbmdTdGF0cyBzdGF0cyA9IGNhcHR1cmVfLnN0YXRzOwogICBFY2hvQ2FuY2Vs
bGF0aW9uSW1wbDo6TWV0cmljcyBtZXRyaWNzOwogICBpZiAocHJpdmF0ZV9zdWJtb2R1bGVzXy0+
ZWNob19jb250cm9sbGVyKSB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZSgmY3JpdF9j
YXB0dXJlXyk7CiAgICAgYXV0byBlY19tZXRyaWNzID0gcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNo
b19jb250cm9sbGVyLT5HZXRNZXRyaWNzKCk7Ci0gICAgZmxvYXQgZXJsID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGVjX21ldHJpY3MuZWNob19yZXR1cm5fbG9zcyk7Ci0gICAgZmxvYXQgZXJsZSA9IHN0
YXRpY19jYXN0PGZsb2F0PihlY19tZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQp
OwotICAgIC8vIEluc3RhbnQgdmFsdWUgd2lsbCBhbHNvIGJlIHVzZWQgZm9yIG1pbiwgbWF4IGFu
ZCBhdmVyYWdlLgotICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xvc3MuU2V0KGVybCwgZXJsLCBlcmws
IGVybCk7Ci0gICAgc3RhdHMuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudC5TZXQoZXJsZSwg
ZXJsZSwgZXJsZSwgZXJsZSk7Ci0gIH0gZWxzZSBpZiAocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hv
X2NhbmNlbGxhdGlvbi0+R2V0TWV0cmljcygmbWV0cmljcykgPT0KKyAgICBzdGF0cy5lY2hvX3Jl
dHVybl9sb3NzID0gZWNfbWV0cmljcy5lY2hvX3JldHVybl9sb3NzOworICAgIHN0YXRzLmVjaG9f
cmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPQorICAgICAgICBlY19tZXRyaWNzLmVjaG9fcmV0dXJu
X2xvc3NfZW5oYW5jZW1lbnQ7CisgICAgc3RhdHMuZGVsYXlfbXMgPSBlY19tZXRyaWNzLmRlbGF5
X21zOworICB9IGVsc2UgaWYgKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9u
LT5HZXRNZXRyaWNzKCZtZXRyaWNzKSA9PQogICAgICAgICAgICAgIEVycm9yOjprTm9FcnJvcikg
ewotICAgIHN0YXRzLmFfbmxwLlNldChtZXRyaWNzLmFfbmxwKTsKLSAgICBzdGF0cy5kaXZlcmdl
bnRfZmlsdGVyX2ZyYWN0aW9uID0gbWV0cmljcy5kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uOwot
ICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xvc3MuU2V0KG1ldHJpY3MuZWNob19yZXR1cm5fbG9zcyk7
Ci0gICAgc3RhdHMuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudC5TZXQoCi0gICAgICAgIG1l
dHJpY3MuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudCk7Ci0gICAgc3RhdHMucmVzaWR1YWxf
ZWNob19yZXR1cm5fbG9zcy5TZXQobWV0cmljcy5yZXNpZHVhbF9lY2hvX3JldHVybl9sb3NzKTsK
KyAgICBpZiAobWV0cmljcy5kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uICE9IC0xLjBmKSB7Cisg
ICAgICBzdGF0cy5kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uID0KKyAgICAgICAgICBhYnNsOjpv
cHRpb25hbDxkb3VibGU+KG1ldHJpY3MuZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbik7CisgICAg
fQorICAgIGlmIChtZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3MuaW5zdGFudCAhPSAtMTAwKSB7Cisg
ICAgICBzdGF0cy5lY2hvX3JldHVybl9sb3NzID0KKyAgICAgICAgICBhYnNsOjpvcHRpb25hbDxk
b3VibGU+KG1ldHJpY3MuZWNob19yZXR1cm5fbG9zcy5pbnN0YW50KTsKKyAgICB9CisgICAgaWYg
KG1ldHJpY3MuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudC5pbnN0YW50ICE9IC0xMDApIHsK
KyAgICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPQorICAgICAgICAgIGFi
c2w6Om9wdGlvbmFsPGRvdWJsZT4obWV0cmljcy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50
Lmluc3RhbnQpOworICAgIH0KICAgfQotICB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVy
ZSgmY3JpdF9jYXB0dXJlXyk7CisgIGlmIChjb25maWdfLnJlc2lkdWFsX2VjaG9fZGV0ZWN0b3Iu
ZW5hYmxlZCkgewogICAgIFJUQ19EQ0hFQ0socHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19kZXRl
Y3Rvcik7CiAgICAgYXV0byBlZF9tZXRyaWNzID0gcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19k
ZXRlY3Rvci0+R2V0TWV0cmljcygpOwogICAgIHN0YXRzLnJlc2lkdWFsX2VjaG9fbGlrZWxpaG9v
ZCA9IGVkX21ldHJpY3MuZWNob19saWtlbGlob29kOwogICAgIHN0YXRzLnJlc2lkdWFsX2VjaG9f
bGlrZWxpaG9vZF9yZWNlbnRfbWF4ID0KICAgICAgICAgZWRfbWV0cmljcy5lY2hvX2xpa2VsaWhv
b2RfcmVjZW50X21heDsKICAgfQotICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0
aW9uLT5HZXREZWxheU1ldHJpY3MoCi0gICAgICAmc3RhdHMuZGVsYXlfbWVkaWFuLCAmc3RhdHMu
ZGVsYXlfc3RhbmRhcmRfZGV2aWF0aW9uLAotICAgICAgJnN0YXRzLmZyYWN0aW9uX3Bvb3JfZGVs
YXlzKTsKLSAgcmV0dXJuIHN0YXRzOwotfQotCi1BdWRpb1Byb2Nlc3NpbmdTdGF0cyBBdWRpb1By
b2Nlc3NpbmdJbXBsOjpHZXRTdGF0aXN0aWNzKAotICAgIGJvb2wgaGFzX3JlbW90ZV90cmFja3Mp
IGNvbnN0IHsKLSAgQXVkaW9Qcm9jZXNzaW5nU3RhdHMgc3RhdHM7Ci0gIGlmIChoYXNfcmVtb3Rl
X3RyYWNrcykgewotICAgIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpNZXRyaWNzIG1ldHJpY3M7Ci0g
ICAgaWYgKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbGxlcikgewotICAgICAgcnRj
OjpDcml0U2NvcGUgY3NfY2FwdHVyZSgmY3JpdF9jYXB0dXJlXyk7Ci0gICAgICBhdXRvIGVjX21l
dHJpY3MgPSBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xsZXItPkdldE1ldHJpY3Mo
KTsKLSAgICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xvc3MgPSBlY19tZXRyaWNzLmVjaG9fcmV0dXJu
X2xvc3M7Ci0gICAgICBzdGF0cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0KLSAgICAg
ICAgICBlY19tZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQ7Ci0gICAgICBzdGF0
cy5kZWxheV9tcyA9IGVjX21ldHJpY3MuZGVsYXlfbXM7Ci0gICAgfSBlbHNlIGlmIChwdWJsaWNf
c3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5HZXRNZXRyaWNzKCZtZXRyaWNzKSA9PQot
ICAgICAgICAgICAgICAgRXJyb3I6OmtOb0Vycm9yKSB7Ci0gICAgICBpZiAobWV0cmljcy5kaXZl
cmdlbnRfZmlsdGVyX2ZyYWN0aW9uICE9IC0xLjBmKSB7Ci0gICAgICAgIHN0YXRzLmRpdmVyZ2Vu
dF9maWx0ZXJfZnJhY3Rpb24gPQotICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPiht
ZXRyaWNzLmRpdmVyZ2VudF9maWx0ZXJfZnJhY3Rpb24pOwotICAgICAgfQotICAgICAgaWYgKG1l
dHJpY3MuZWNob19yZXR1cm5fbG9zcy5pbnN0YW50ICE9IC0xMDApIHsKLSAgICAgICAgc3RhdHMu
ZWNob19yZXR1cm5fbG9zcyA9Ci0gICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxkb3VibGU+KG1l
dHJpY3MuZWNob19yZXR1cm5fbG9zcy5pbnN0YW50KTsKLSAgICAgIH0KLSAgICAgIGlmIChtZXRy
aWNzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQuaW5zdGFudCAhPSAtMTAwKSB7Ci0gICAg
ICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPSBhYnNsOjpvcHRpb25hbDxk
b3VibGU+KAotICAgICAgICAgICAgbWV0cmljcy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50
Lmluc3RhbnQpOwotICAgICAgfQorICBpbnQgZGVsYXlfbWVkaWFuLCBkZWxheV9zdGQ7CisgIGZs
b2F0IGZyYWN0aW9uX3Bvb3JfZGVsYXlzOworICBpZiAocHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNo
b19jYW5jZWxsYXRpb24tPkdldERlbGF5TWV0cmljcygKKyAgICAgICAgICAmZGVsYXlfbWVkaWFu
LCAmZGVsYXlfc3RkLCAmZnJhY3Rpb25fcG9vcl9kZWxheXMpID09CisgICAgICBFcnJvcjo6a05v
RXJyb3IpIHsKKyAgICBpZiAoZGVsYXlfbWVkaWFuID49IDApIHsKKyAgICAgIHN0YXRzLmRlbGF5
X21lZGlhbl9tcyA9IGFic2w6Om9wdGlvbmFsPGludDMyX3Q+KGRlbGF5X21lZGlhbik7CiAgICAg
fQotICAgIGlmIChjb25maWdfLnJlc2lkdWFsX2VjaG9fZGV0ZWN0b3IuZW5hYmxlZCkgewotICAg
ICAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZSgmY3JpdF9jYXB0dXJlXyk7Ci0gICAgICBSVENf
RENIRUNLKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fZGV0ZWN0b3IpOwotICAgICAgYXV0byBl
ZF9tZXRyaWNzID0gcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19kZXRlY3Rvci0+R2V0TWV0cmlj
cygpOwotICAgICAgc3RhdHMucmVzaWR1YWxfZWNob19saWtlbGlob29kID0gZWRfbWV0cmljcy5l
Y2hvX2xpa2VsaWhvb2Q7Ci0gICAgICBzdGF0cy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2RfcmVj
ZW50X21heCA9Ci0gICAgICAgICAgZWRfbWV0cmljcy5lY2hvX2xpa2VsaWhvb2RfcmVjZW50X21h
eDsKLSAgICB9Ci0gICAgaW50IGRlbGF5X21lZGlhbiwgZGVsYXlfc3RkOwotICAgIGZsb2F0IGZy
YWN0aW9uX3Bvb3JfZGVsYXlzOwotICAgIGlmIChwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2Fu
Y2VsbGF0aW9uLT5HZXREZWxheU1ldHJpY3MoCi0gICAgICAgICAgICAmZGVsYXlfbWVkaWFuLCAm
ZGVsYXlfc3RkLCAmZnJhY3Rpb25fcG9vcl9kZWxheXMpID09Ci0gICAgICAgIEVycm9yOjprTm9F
cnJvcikgewotICAgICAgaWYgKGRlbGF5X21lZGlhbiA+PSAwKSB7Ci0gICAgICAgIHN0YXRzLmRl
bGF5X21lZGlhbl9tcyA9IGFic2w6Om9wdGlvbmFsPGludDMyX3Q+KGRlbGF5X21lZGlhbik7Ci0g
ICAgICB9Ci0gICAgICBpZiAoZGVsYXlfc3RkID49IDApIHsKLSAgICAgICAgc3RhdHMuZGVsYXlf
c3RhbmRhcmRfZGV2aWF0aW9uX21zID0gYWJzbDo6b3B0aW9uYWw8aW50MzJfdD4oZGVsYXlfc3Rk
KTsKLSAgICAgIH0KKyAgICBpZiAoZGVsYXlfc3RkID49IDApIHsKKyAgICAgIHN0YXRzLmRlbGF5
X3N0YW5kYXJkX2RldmlhdGlvbl9tcyA9IGFic2w6Om9wdGlvbmFsPGludDMyX3Q+KGRlbGF5X3N0
ZCk7CiAgICAgfQogICB9CiAgIHJldHVybiBzdGF0czsKQEAgLTE3MzEsMTAgKzE2NTgsNiBAQCBH
YWluQ29udHJvbCogQXVkaW9Qcm9jZXNzaW5nSW1wbDo6Z2Fpbl9jb250cm9sKCkgY29uc3Qgewog
ICByZXR1cm4gcHVibGljX3N1Ym1vZHVsZXNfLT5nYWluX2NvbnRyb2wuZ2V0KCk7CiB9CiAKLUhp
Z2hQYXNzRmlsdGVyKiBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpoaWdoX3Bhc3NfZmlsdGVyKCkgY29u
c3QgewotICByZXR1cm4gaGlnaF9wYXNzX2ZpbHRlcl9pbXBsXy5nZXQoKTsKLX0KLQogTGV2ZWxF
c3RpbWF0b3IqIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OmxldmVsX2VzdGltYXRvcigpIGNvbnN0IHsK
ICAgcmV0dXJuIHB1YmxpY19zdWJtb2R1bGVzXy0+bGV2ZWxfZXN0aW1hdG9yLmdldCgpOwogfQpA
QCAtMTc2NCw4ICsxNjg3LDggQEAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWcgQXVkaW9Qcm9jZXNz
aW5nSW1wbDo6R2V0Q29uZmlnKCkgY29uc3QgewogYm9vbCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpV
cGRhdGVBY3RpdmVTdWJtb2R1bGVTdGF0ZXMoKSB7CiAgIHJldHVybiBzdWJtb2R1bGVfc3RhdGVz
Xy5VcGRhdGUoCiAgICAgICBjb25maWdfLmhpZ2hfcGFzc19maWx0ZXIuZW5hYmxlZCwKLSAgICAg
IHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2VuYWJsZWQoKSwKLSAg
ICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+aXNfZW5hYmxlZCgp
LAorICAgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2VuYWJs
ZWQoKSwKKyAgICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlz
X2VuYWJsZWQoKSwKICAgICAgIGNvbmZpZ18ucmVzaWR1YWxfZWNob19kZXRlY3Rvci5lbmFibGVk
LAogICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5ub2lzZV9zdXBwcmVzc2lvbi0+aXNfZW5hYmxl
ZCgpLAogICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5nYWluX2NvbnRyb2wtPmlzX2VuYWJsZWQo
KSwKQEAgLTE4NTIsMTUgKzE3NzUsMTUgQEAgdm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpJbml0
aWFsaXplUHJlUHJvY2Vzc29yKCkgewogdm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpNYXliZVVw
ZGF0ZUhpc3RvZ3JhbXMoKSB7CiAgIHN0YXRpYyBjb25zdCBpbnQga01pbkRpZmZEZWxheU1zID0g
NjA7CiAKLSAgaWYgKHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2Vu
YWJsZWQoKSkgeworICBpZiAocHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24t
PmlzX2VuYWJsZWQoKSkgewogICAgIC8vIEFjdGl2YXRlIGRlbGF5X2p1bXBzXyBjb3VudGVycyBp
ZiB3ZSBrbm93IGVjaG9fY2FuY2VsbGF0aW9uIGlzIHJ1bm5pbmcuCiAgICAgLy8gSWYgYSBzdHJl
YW0gaGFzIGVjaG8gd2Uga25vdyB0aGF0IHRoZSBlY2hvX2NhbmNlbGxhdGlvbiBpcyBpbiBwcm9j
ZXNzLgogICAgIGlmIChjYXB0dXJlXy5zdHJlYW1fZGVsYXlfanVtcHMgPT0gLTEgJiYKLSAgICAg
ICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+c3RyZWFtX2hhc19lY2hv
KCkpIHsKKyAgICAgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPnN0
cmVhbV9oYXNfZWNobygpKSB7CiAgICAgICBjYXB0dXJlXy5zdHJlYW1fZGVsYXlfanVtcHMgPSAw
OwogICAgIH0KICAgICBpZiAoY2FwdHVyZV8uYWVjX3N5c3RlbV9kZWxheV9qdW1wcyA9PSAtMSAm
JgotICAgICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zdHJlYW1f
aGFzX2VjaG8oKSkgeworICAgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxh
dGlvbi0+c3RyZWFtX2hhc19lY2hvKCkpIHsKICAgICAgIGNhcHR1cmVfLmFlY19zeXN0ZW1fZGVs
YXlfanVtcHMgPSAwOwogICAgIH0KIApAQCAtMTg4Myw3ICsxODA2LDcgQEAgdm9pZCBBdWRpb1By
b2Nlc3NpbmdJbXBsOjpNYXliZVVwZGF0ZUhpc3RvZ3JhbXMoKSB7CiAgICAgICAgIHJ0Yzo6Q2hl
Y2tlZERpdkV4YWN0KGNhcHR1cmVfbm9ubG9ja2VkXy5zcGxpdF9yYXRlLCAxMDAwKTsKICAgICBS
VENfRENIRUNLX0xUKDAsIHNhbXBsZXNfcGVyX21zKTsKICAgICBjb25zdCBpbnQgYWVjX3N5c3Rl
bV9kZWxheV9tcyA9Ci0gICAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRp
b24tPkdldFN5c3RlbURlbGF5SW5TYW1wbGVzKCkgLworICAgICAgICBwcml2YXRlX3N1Ym1vZHVs
ZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+R2V0U3lzdGVtRGVsYXlJblNhbXBsZXMoKSAvCiAgICAg
ICAgIHNhbXBsZXNfcGVyX21zOwogICAgIGNvbnN0IGludCBkaWZmX2FlY19zeXN0ZW1fZGVsYXlf
bXMgPQogICAgICAgICBhZWNfc3lzdGVtX2RlbGF5X21zIC0gY2FwdHVyZV8ubGFzdF9hZWNfc3lz
dGVtX2RlbGF5X21zOwpAQCAtMTkyNyw3ICsxODUwLDcgQEAgdm9pZCBBdWRpb1Byb2Nlc3NpbmdJ
bXBsOjpXcml0ZUFlY0R1bXBDb25maWdNZXNzYWdlKGJvb2wgZm9yY2VkKSB7CiAgICAgcmV0dXJu
OwogICB9CiAgIHN0ZDo6c3RyaW5nIGV4cGVyaW1lbnRzX2Rlc2NyaXB0aW9uID0KLSAgICAgIHB1
YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPkdldEV4cGVyaW1lbnRzRGVzY3Jp
cHRpb24oKTsKKyAgICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5H
ZXRFeHBlcmltZW50c0Rlc2NyaXB0aW9uKCk7CiAgIC8vIFRPRE8ocGVhaCk6IEFkZCBzZW1pY29s
b24tc2VwYXJhdGVkIGNvbmNhdGVuYXRpb25zIG9mIGV4cGVyaW1lbnQKICAgLy8gZGVzY3JpcHRp
b25zIGZvciBvdGhlciBzdWJtb2R1bGVzLgogICBpZiAoY29uc3RhbnRzXy5hZ2NfY2xpcHBlZF9s
ZXZlbF9taW4gIT0ga0NsaXBwZWRMZXZlbE1pbikgewpAQCAtMTk0MiwyMiArMTg2NSwyMiBAQCB2
b2lkIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OldyaXRlQWVjRHVtcENvbmZpZ01lc3NhZ2UoYm9vbCBm
b3JjZWQpIHsKIAogICBJbnRlcm5hbEFQTUNvbmZpZyBhcG1fY29uZmlnOwogCi0gIGFwbV9jb25m
aWcuYWVjX2VuYWJsZWQgPSBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5p
c19lbmFibGVkKCk7CisgIGFwbV9jb25maWcuYWVjX2VuYWJsZWQgPSBwcml2YXRlX3N1Ym1vZHVs
ZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+aXNfZW5hYmxlZCgpOwogICBhcG1fY29uZmlnLmFlY19k
ZWxheV9hZ25vc3RpY19lbmFibGVkID0KLSAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19j
YW5jZWxsYXRpb24tPmlzX2RlbGF5X2Fnbm9zdGljX2VuYWJsZWQoKTsKKyAgICAgIHByaXZhdGVf
c3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19kZWxheV9hZ25vc3RpY19lbmFibGVk
KCk7CiAgIGFwbV9jb25maWcuYWVjX2RyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkID0KLSAgICAg
IHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2RyaWZ0X2NvbXBlbnNh
dGlvbl9lbmFibGVkKCk7CisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxh
dGlvbi0+aXNfZHJpZnRfY29tcGVuc2F0aW9uX2VuYWJsZWQoKTsKICAgYXBtX2NvbmZpZy5hZWNf
ZXh0ZW5kZWRfZmlsdGVyX2VuYWJsZWQgPQotICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hv
X2NhbmNlbGxhdGlvbi0+aXNfZXh0ZW5kZWRfZmlsdGVyX2VuYWJsZWQoKTsKKyAgICAgIHByaXZh
dGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19leHRlbmRlZF9maWx0ZXJfZW5h
YmxlZCgpOwogICBhcG1fY29uZmlnLmFlY19zdXBwcmVzc2lvbl9sZXZlbCA9IHN0YXRpY19jYXN0
PGludD4oCi0gICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zdXBw
cmVzc2lvbl9sZXZlbCgpKTsKKyAgICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2Vs
bGF0aW9uLT5zdXBwcmVzc2lvbl9sZXZlbCgpKTsKIAogICBhcG1fY29uZmlnLmFlY21fZW5hYmxl
ZCA9Ci0gICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2Vu
YWJsZWQoKTsKKyAgICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUt
PmlzX2VuYWJsZWQoKTsKICAgYXBtX2NvbmZpZy5hZWNtX2NvbWZvcnRfbm9pc2VfZW5hYmxlZCA9
Ci0gICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2NvbWZv
cnRfbm9pc2VfZW5hYmxlZCgpOwotICBhcG1fY29uZmlnLmFlY21fcm91dGluZ19tb2RlID0KLSAg
ICAgIHN0YXRpY19jYXN0PGludD4ocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9i
aWxlLT5yb3V0aW5nX21vZGUoKSk7CisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2Nv
bnRyb2xfbW9iaWxlLT5pc19jb21mb3J0X25vaXNlX2VuYWJsZWQoKTsKKyAgYXBtX2NvbmZpZy5h
ZWNtX3JvdXRpbmdfbW9kZSA9IHN0YXRpY19jYXN0PGludD4oCisgICAgICBwcml2YXRlX3N1Ym1v
ZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5yb3V0aW5nX21vZGUoKSk7CiAKICAgYXBtX2Nv
bmZpZy5hZ2NfZW5hYmxlZCA9IHB1YmxpY19zdWJtb2R1bGVzXy0+Z2Fpbl9jb250cm9sLT5pc19l
bmFibGVkKCk7CiAgIGFwbV9jb25maWcuYWdjX21vZGUgPQpAQCAtMjAzMiw3ICsxOTU1LDcgQEAg
dm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpSZWNvcmRBdWRpb1Byb2Nlc3NpbmdTdGF0ZSgpIHsK
ICAgQWVjRHVtcDo6QXVkaW9Qcm9jZXNzaW5nU3RhdGUgYXVkaW9fcHJvY19zdGF0ZTsKICAgYXVk
aW9fcHJvY19zdGF0ZS5kZWxheSA9IGNhcHR1cmVfbm9ubG9ja2VkXy5zdHJlYW1fZGVsYXlfbXM7
CiAgIGF1ZGlvX3Byb2Nfc3RhdGUuZHJpZnQgPQotICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5l
Y2hvX2NhbmNlbGxhdGlvbi0+c3RyZWFtX2RyaWZ0X3NhbXBsZXMoKTsKKyAgICAgIHByaXZhdGVf
c3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zdHJlYW1fZHJpZnRfc2FtcGxlcygpOwog
ICBhdWRpb19wcm9jX3N0YXRlLmxldmVsID0gZ2Fpbl9jb250cm9sKCktPnN0cmVhbV9hbmFsb2df
bGV2ZWwoKTsKICAgYXVkaW9fcHJvY19zdGF0ZS5rZXlwcmVzcyA9IGNhcHR1cmVfLmtleV9wcmVz
c2VkOwogICBhZWNfZHVtcF8tPkFkZEF1ZGlvUHJvY2Vzc2luZ1N0YXRlKGF1ZGlvX3Byb2Nfc3Rh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3NpbmdfaW1wbC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2F1ZGlvX3Byb2Nlc3NpbmdfaW1wbC5oCmluZGV4IDUwY2I4MmJmMTNhZTE3NTJkZjUx
OGU0NDE5N2FjMGViOWZiN2E3YjguLjJmOTQ2YzVlMTNkODkyMDRkZjc0NjIxYmViNDJjNDgwNDhk
MmI4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGwuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ19pbXBsLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1bXAuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2lu
Z19zdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3JlbmRl
cl9xdWV1ZV9pdGVtX3ZlcmlmaWVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL3Jtc19sZXZlbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgpA
QCAtMTA5LDcgKzExMCw2IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc2luZ0ltcGwgOiBwdWJsaWMgQXVk
aW9Qcm9jZXNzaW5nIHsKICAgYm9vbCB3YXNfc3RyZWFtX2RlbGF5X3NldCgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRfY2FwdHVyZV8pOwog
Ci0gIEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MgR2V0U3RhdGlzdGljcygpIGNvbnN0IG92ZXJy
aWRlOwogICBBdWRpb1Byb2Nlc3NpbmdTdGF0cyBHZXRTdGF0aXN0aWNzKGJvb2wgaGFzX3JlbW90
ZV90cmFja3MpIGNvbnN0IG92ZXJyaWRlOwogCiAgIC8vIE1ldGhvZHMgcmV0dXJuaW5nIHBvaW50
ZXJzIHRvIEFQTSBzdWJtb2R1bGVzLgpAQCAtMTE4LDggKzExOCw2IEBAIGNsYXNzIEF1ZGlvUHJv
Y2Vzc2luZ0ltcGwgOiBwdWJsaWMgQXVkaW9Qcm9jZXNzaW5nIHsKICAgLy8gY3JlYXRlZCBvbmx5
IG9uY2UgaW4gYSBzaW5nbGUtdHJlYWRlZCBtYW5uZXIKICAgLy8gZHVyaW5nIEFQTSBjcmVhdGlv
bikuCiAgIEdhaW5Db250cm9sKiBnYWluX2NvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKLSAgLy8g
VE9ETyhwZWFoKTogRGVwcmVjYXRlIHRoaXMgQVBJIGNhbGwuCi0gIEhpZ2hQYXNzRmlsdGVyKiBo
aWdoX3Bhc3NfZmlsdGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIExldmVsRXN0aW1hdG9yKiBsZXZl
bF9lc3RpbWF0b3IoKSBjb25zdCBvdmVycmlkZTsKICAgTm9pc2VTdXBwcmVzc2lvbiogbm9pc2Vf
c3VwcHJlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKICAgVm9pY2VEZXRlY3Rpb24qIHZvaWNlX2Rl
dGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTY0LDkgKzE2Miw2IEBAIGNsYXNzIEF1ZGlv
UHJvY2Vzc2luZ0ltcGwgOiBwdWJsaWMgQXVkaW9Qcm9jZXNzaW5nIHsKICAgUnVudGltZVNldHRp
bmdFbnF1ZXVlciBjYXB0dXJlX3J1bnRpbWVfc2V0dGluZ3NfZW5xdWV1ZXJfOwogICBSdW50aW1l
U2V0dGluZ0VucXVldWVyIHJlbmRlcl9ydW50aW1lX3NldHRpbmdzX2VucXVldWVyXzsKIAotICAv
LyBTdWJtb2R1bGUgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9ucy4KLSAgc3RkOjp1bmlxdWVfcHRy
PEhpZ2hQYXNzRmlsdGVyPiBoaWdoX3Bhc3NfZmlsdGVyX2ltcGxfOwotCiAgIC8vIEVjaG9Db250
cm9sIGZhY3RvcnkuCiAgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvQ29udHJvbEZhY3Rvcnk+IGVjaG9f
Y29udHJvbF9mYWN0b3J5XzsKIApAQCAtMzk2LDYgKzM5MSw3IEBAIGNsYXNzIEF1ZGlvUHJvY2Vz
c2luZ0ltcGwgOiBwdWJsaWMgQXVkaW9Qcm9jZXNzaW5nIHsKICAgICBib29sIGVjaG9fcGF0aF9n
YWluX2NoYW5nZTsKICAgICBpbnQgcHJldl9hbmFsb2dfbWljX2xldmVsOwogICAgIGZsb2F0IHBy
ZXZfcHJlX2FtcF9nYWluOworICAgIEF1ZGlvUHJvY2Vzc2luZ1N0YXRzIHN0YXRzOwogICB9IGNh
cHR1cmVfIFJUQ19HVUFSREVEX0JZKGNyaXRfY2FwdHVyZV8pOwogCiAgIHN0cnVjdCBBcG1DYXB0
dXJlTm9uTG9ja2VkU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3Np
bmdfaW1wbF9sb2NraW5nX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3Npbmdf
aW1wbF9sb2NraW5nX3VuaXR0ZXN0LmNjCmluZGV4IDBlMGEzM2Y1NzAwNjkzZjEzNDI3NGQ3NzM3
YWZhM2M1NDQwODkxYjcuLjk2ODVlZjk1ZTljZjU3MWFkNjBjMmM4MDAxZjczZTgxZjQzNTkxNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGxfbG9ja2luZ191bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ19pbXBsX2xvY2tpbmdfdW5p
dHRlc3QuY2MKQEAgLTQ4NywxMCArNDg3LDcgQEAgdm9pZCBQb3B1bGF0ZUF1ZGlvRnJhbWUoQXVk
aW9GcmFtZSogZnJhbWUsCiB9CiAKIEF1ZGlvUHJvY2Vzc2luZ0ltcGxMb2NrVGVzdDo6QXVkaW9Q
cm9jZXNzaW5nSW1wbExvY2tUZXN0KCkKLSAgICA6IHRlc3RfY29tcGxldGVfKGZhbHNlLCBmYWxz
ZSksCi0gICAgICByZW5kZXJfY2FsbF9ldmVudF8oZmFsc2UsIGZhbHNlKSwKLSAgICAgIGNhcHR1
cmVfY2FsbF9ldmVudF8oZmFsc2UsIGZhbHNlKSwKLSAgICAgIHJlbmRlcl90aHJlYWRfKFJlbmRl
clByb2Nlc3NvclRocmVhZEZ1bmMsIHRoaXMsICJyZW5kZXIiKSwKKyAgICA6IHJlbmRlcl90aHJl
YWRfKFJlbmRlclByb2Nlc3NvclRocmVhZEZ1bmMsIHRoaXMsICJyZW5kZXIiKSwKICAgICAgIGNh
cHR1cmVfdGhyZWFkXyhDYXB0dXJlUHJvY2Vzc29yVGhyZWFkRnVuYywgdGhpcywgImNhcHR1cmUi
KSwKICAgICAgIHN0YXRzX3RocmVhZF8oU3RhdHNQcm9jZXNzb3JUaHJlYWRGdW5jLCB0aGlzLCAi
c3RhdHMiKSwKICAgICAgIGFwbV8oQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpKSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX3BlcmZvcm1hbmNlX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3NpbmdfcGVyZm9ybWFuY2VfdW5pdHRlc3Qu
Y2MKaW5kZXggOTVmNzM2YzIyZjE2OGJmZGI4NzI2NzgzOWQ3YjA0MmVhM2ZlOTkxNi4uODRjYjU3
NDMwNzI3MDZiMDFmODhjYzIxNDE4ZTZlM2UxN2NjOWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2F1ZGlvX3Byb2Nlc3NpbmdfcGVyZm9ybWFuY2VfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2F1ZGlvX3Byb2Nlc3NpbmdfcGVyZm9ybWFuY2VfdW5pdHRlc3QuY2MKQEAgLTE4LDExICsxOCwx
MSBAQAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3Rlc3QvdGVzdF91dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21p
Y29wcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
bnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3Jt
X3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhbmRvbS5oIgogI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2lu
Y2x1ZGUvZXZlbnRfd3JhcHBlci5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRl
ICJ0ZXN0L3Rlc3RzdXBwb3J0L3BlcmZfdGVzdC5oIgogCkBAIC0zOTEsOCArMzkxLDcgQEAgY2xh
c3MgVGltZWRUaHJlYWRBcGlQcm9jZXNzb3IgewogY2xhc3MgQ2FsbFNpbXVsYXRvciA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08U2ltdWxhdGlvbkNvbmZpZz4gewogIHB1YmxpYzoK
ICAgQ2FsbFNpbXVsYXRvcigpCi0gICAgICA6IHRlc3RfY29tcGxldGVfKEV2ZW50V3JhcHBlcjo6
Q3JlYXRlKCkpLAotICAgICAgICByZW5kZXJfdGhyZWFkXygKKyAgICAgIDogcmVuZGVyX3RocmVh
ZF8oCiAgICAgICAgICAgICBuZXcgcnRjOjpQbGF0Zm9ybVRocmVhZChSZW5kZXJQcm9jZXNzb3JU
aHJlYWRGdW5jLCB0aGlzLCAicmVuZGVyIikpLAogICAgICAgICBjYXB0dXJlX3RocmVhZF8obmV3
IHJ0Yzo6UGxhdGZvcm1UaHJlYWQoQ2FwdHVyZVByb2Nlc3NvclRocmVhZEZ1bmMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLApAQCAtNDAxLDEw
ICs0MDAsMTAgQEAgY2xhc3MgQ2FsbFNpbXVsYXRvciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08U2ltdWxhdGlvbkNvbmZpZz4gewogICAgICAgICBzaW11bGF0aW9uX2NvbmZpZ18o
c3RhdGljX2Nhc3Q8U2ltdWxhdGlvbkNvbmZpZz4oR2V0UGFyYW0oKSkpIHt9CiAKICAgLy8gUnVu
IHRoZSBjYWxsIHNpbXVsYXRpb24gd2l0aCBhIHRpbWVvdXQuCi0gIEV2ZW50VHlwZVdyYXBwZXIg
UnVuKCkgeworICBib29sIFJ1bigpIHsKICAgICBTdGFydFRocmVhZHMoKTsKIAotICAgIEV2ZW50
VHlwZVdyYXBwZXIgcmVzdWx0ID0gdGVzdF9jb21wbGV0ZV8tPldhaXQoa1Rlc3RUaW1lb3V0KTsK
KyAgICBib29sIHJlc3VsdCA9IHRlc3RfY29tcGxldGVfLldhaXQoa1Rlc3RUaW1lb3V0KTsKIAog
ICAgIFN0b3BUaHJlYWRzKCk7CiAKQEAgLTQyMCw3ICs0MTksNyBAQCBjbGFzcyBDYWxsU2ltdWxh
dG9yIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxTaW11bGF0aW9uQ29uZmlnPiB7
CiAgIC8vIGRvbmUuCiAgIGJvb2wgTWF5YmVFbmRUZXN0KCkgewogICAgIGlmIChmcmFtZV9jb3Vu
dGVyc18uQm90aENvdW50ZXJzRXhjZWVkZVRocmVzaG9sZChrTWluTnVtRnJhbWVzVG9Qcm9jZXNz
KSkgewotICAgICAgdGVzdF9jb21wbGV0ZV8tPlNldCgpOworICAgICAgdGVzdF9jb21wbGV0ZV8u
U2V0KCk7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NTcwLDcgKzU2OSw3IEBAIGNsYXNzIENhbGxTaW11bGF0b3IgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPFNpbXVsYXRpb25Db25maWc+IHsKICAgfQogCiAgIC8vIEV2ZW50IGhhbmRs
ZXIgZm9yIHRoZSB0ZXN0LgotICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPiB0
ZXN0X2NvbXBsZXRlXzsKKyAgcnRjOjpFdmVudCB0ZXN0X2NvbXBsZXRlXzsKIAogICAvLyBUaHJl
YWQgcmVsYXRlZCB2YXJpYWJsZXMuCiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlBsYXRmb3JtVGhy
ZWFkPiByZW5kZXJfdGhyZWFkXzsKQEAgLTYxOSw3ICs2MTgsNyBAQCBjb25zdCBmbG9hdCBDYWxs
U2ltdWxhdG9yOjprQ2FwdHVyZUlucHV0RmxvYXRMZXZlbCA9IDAuMDMxMjVmOwogLy8gVE9ETyhw
ZWFoKTogUmVhY3RpdmF0ZSBvbmNlIGlzc3VlIDc3MTIgaGFzIGJlZW4gcmVzb2x2ZWQuCiBURVNU
X1AoQ2FsbFNpbXVsYXRvciwgRElTQUJMRURfQXBpQ2FsbER1cmF0aW9uVGVzdCkgewogICAvLyBS
dW4gdGVzdCBhbmQgdmVyaWZ5IHRoYXQgaXQgZGlkIG5vdCB0aW1lIG91dC4KLSAgRVhQRUNUX0VR
KGtFdmVudFNpZ25hbGVkLCBSdW4oKSk7CisgIEVYUEVDVF9UUlVFKFJ1bigpKTsKIH0KIAogSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vz
c2luZ191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX3VuaXR0ZXN0LmNj
CmluZGV4IDNmMGRlY2M5NTdhNjM0MjE0ZjNkMzkzZjQyYzQ1MTg4MTliNzliODEuLjY4MDlhYjlk
Y2Q5ZTMxNDBlMDI5MDZlNDdjNDhhMjQxMGFkMTRjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
dWRpb19wcm9jZXNzaW5nX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNz
aW5nX3VuaXR0ZXN0LmNjCkBAIC0xMjc4LDcgKzEyNzgsNiBAQCBURVNUX0YoQXBtVGVzdCwgQWxs
UHJvY2Vzc2luZ0Rpc2FibGVkQnlEZWZhdWx0KSB7CiAgIEVYUEVDVF9GQUxTRShjb25maWcuZWNo
b19jYW5jZWxsZXIuZW5hYmxlZCk7CiAgIEVYUEVDVF9GQUxTRShjb25maWcuaGlnaF9wYXNzX2Zp
bHRlci5lbmFibGVkKTsKICAgRVhQRUNUX0ZBTFNFKGFwbV8tPmdhaW5fY29udHJvbCgpLT5pc19l
bmFibGVkKCkpOwotICBFWFBFQ1RfRkFMU0UoYXBtXy0+aGlnaF9wYXNzX2ZpbHRlcigpLT5pc19l
bmFibGVkKCkpOwogICBFWFBFQ1RfRkFMU0UoYXBtXy0+bGV2ZWxfZXN0aW1hdG9yKCktPmlzX2Vu
YWJsZWQoKSk7CiAgIEVYUEVDVF9GQUxTRShhcG1fLT5ub2lzZV9zdXBwcmVzc2lvbigpLT5pc19l
bmFibGVkKCkpOwogICBFWFBFQ1RfRkFMU0UoYXBtXy0+dm9pY2VfZGV0ZWN0aW9uKCktPmlzX2Vu
YWJsZWQoKSk7CkBAIC0yODAyLDQgKzI4MDEsNDIgQEAgVEVTVChNQVlCRV9BcG1TdGF0aXN0aWNz
LCBBRUNNRW5hYmxlZFRlc3QpIHsKICAgRVhQRUNUX0ZBTFNFKHN0YXRzLmRlbGF5X21lZGlhbl9t
cyk7CiAgIEVYUEVDVF9GQUxTRShzdGF0cy5kZWxheV9zdGFuZGFyZF9kZXZpYXRpb25fbXMpOwog
fQorCitURVNUKEFwbVN0YXRpc3RpY3MsIFJlcG9ydE91dHB1dFJtc0RiZnMpIHsKKyAgUHJvY2Vz
c2luZ0NvbmZpZyBwcm9jZXNzaW5nX2NvbmZpZyA9IHsKKyAgICAgIHt7MzIwMDAsIDF9LCB7MzIw
MDAsIDF9LCB7MzIwMDAsIDF9LCB7MzIwMDAsIDF9fX07CisgIEF1ZGlvUHJvY2Vzc2luZzo6Q29u
ZmlnIGNvbmZpZzsKKworICAvLyBTZXQgdXAgYW4gYXVkaW9mcmFtZS4KKyAgQXVkaW9GcmFtZSBm
cmFtZTsKKyAgZnJhbWUubnVtX2NoYW5uZWxzXyA9IDE7CisgIFNldEZyYW1lU2FtcGxlUmF0ZSgm
ZnJhbWUsIEF1ZGlvUHJvY2Vzc2luZzo6TmF0aXZlUmF0ZTo6a1NhbXBsZVJhdGU0OGtIeik7CisK
KyAgLy8gRmlsbCB0aGUgYXVkaW8gZnJhbWUgd2l0aCBhIHNhd3Rvb3RoIHBhdHRlcm4uCisgIGlu
dDE2X3QqIHB0ciA9IGZyYW1lLm11dGFibGVfZGF0YSgpOworICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZyYW1lLmtNYXhEYXRhU2l6ZVNhbXBsZXM7IGkrKykgeworICAgIHB0cltpXSA9IDEwMDAw
ICogKChpICUgMykgLSAxKTsKKyAgfQorCisgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Byb2Nlc3Np
bmc+IGFwbShBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpOworICBhcG0tPkluaXRp
YWxpemUocHJvY2Vzc2luZ19jb25maWcpOworCisgIC8vIElmIG5vdCBlbmFibGVkLCBubyBtZXRy
aWMgc2hvdWxkIGJlIHJlcG9ydGVkLgorICBFWFBFQ1RfRVEoYXBtLT5Qcm9jZXNzU3RyZWFtKCZm
cmFtZSksIDApOworICBFWFBFQ1RfRkFMU0UoYXBtLT5HZXRTdGF0aXN0aWNzKGZhbHNlKS5vdXRw
dXRfcm1zX2RiZnMpOworCisgIC8vIElmIGVuYWJsZWQsIG1ldHJpY3Mgc2hvdWxkIGJlIHJlcG9y
dGVkLgorICBjb25maWcubGV2ZWxfZXN0aW1hdGlvbi5lbmFibGVkID0gdHJ1ZTsKKyAgYXBtLT5B
cHBseUNvbmZpZyhjb25maWcpOworICBFWFBFQ1RfRVEoYXBtLT5Qcm9jZXNzU3RyZWFtKCZmcmFt
ZSksIDApOworICBhdXRvIHN0YXRzID0gYXBtLT5HZXRTdGF0aXN0aWNzKGZhbHNlKTsKKyAgRVhQ
RUNUX1RSVUUoc3RhdHMub3V0cHV0X3Jtc19kYmZzKTsKKyAgRVhQRUNUX0dFKCpzdGF0cy5vdXRw
dXRfcm1zX2RiZnMsIDApOworCisgIC8vIElmIHJlLWRpc2FibGVkLCB0aGUgdmFsdWUgaXMgYWdh
aW4gbm90IHJlcG9ydGVkLgorICBjb25maWcubGV2ZWxfZXN0aW1hdGlvbi5lbmFibGVkID0gZmFs
c2U7CisgIGFwbS0+QXBwbHlDb25maWcoY29uZmlnKTsKKyAgRVhQRUNUX0VRKGFwbS0+UHJvY2Vz
c1N0cmVhbSgmZnJhbWUpLCAwKTsKKyAgRVhQRUNUX0ZBTFNFKGFwbS0+R2V0U3RhdGlzdGljcyhm
YWxzZSkub3V0cHV0X3Jtc19kYmZzKTsKK30KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlvbl9iaXRfZXhhY3RfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvZWNob19jYW5jZWxsYXRpb25fYml0X2V4YWN0X3VuaXR0ZXN0LmNjCmluZGV4
IDdmNjBjNGI1ZDgzODgxZDQ2ZTdmYTJhNjNkMThjZjAxYTY4YjRlY2MuLmFmMDc0MWVlMTc4NDk2
YTEzMTllOWNhNGI1MzE3MzVkNWI3MmI3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2Nh
bmNlbGxhdGlvbl9iaXRfZXhhY3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2Fu
Y2VsbGF0aW9uX2JpdF9leGFjdF91bml0dGVzdC5jYwpAQCAtNzQsOSArNzQsNyBAQCB2b2lkIFJ1
bkJpdGV4YWN0bmVzc1Rlc3QoCiAgICAgRWNob0NhbmNlbGxhdGlvbkltcGw6OlN1cHByZXNzaW9u
TGV2ZWwgc3VwcHJlc3Npb25fbGV2ZWwsCiAgICAgYm9vbCBzdHJlYW1faGFzX2VjaG9fcmVmZXJl
bmNlLAogICAgIGNvbnN0IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiYgb3V0cHV0X3JlZmVy
ZW5jZSkgewotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X3JlbmRlcjsKLSAgcnRjOjpDcml0
aWNhbFNlY3Rpb24gY3JpdF9jYXB0dXJlOwotICBFY2hvQ2FuY2VsbGF0aW9uSW1wbCBlY2hvX2Nh
bmNlbGxlcigmY3JpdF9yZW5kZXIsICZjcml0X2NhcHR1cmUpOworICBFY2hvQ2FuY2VsbGF0aW9u
SW1wbCBlY2hvX2NhbmNlbGxlcjsKICAgU2V0dXBDb21wb25lbnQoc2FtcGxlX3JhdGVfaHosIHN1
cHByZXNzaW9uX2xldmVsLCBkcmlmdF9jb21wZW5zYXRpb25fZW5hYmxlZCwKICAgICAgICAgICAg
ICAgICAgJmVjaG9fY2FuY2VsbGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2Fu
Y2VsbGF0aW9uX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jYW5jZWxsYXRpb25faW1wbC5jYwpp
bmRleCBlNmZlNzY5MWM0OTAzZDkyNzlhYjAxYmU1Mzc5NmZmYzcyNDY5N2UyLi43M2ZlNTFiNzUy
ZjY2ZDJjMGY4YTI1MWMyOWVlNmFmMTRhYTM0Mjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNo
b19jYW5jZWxsYXRpb25faW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jYW5jZWxsYXRpb25f
aW1wbC5jYwpAQCAtMTAsMTEgKzEwLDEzIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvZWNob19jYW5jZWxsYXRpb25faW1wbC5oIgogCisjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjL2FlY19jb3JlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
Yy9lY2hvX2NhbmNlbGxhdGlvbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hdWRpb19idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5j
bHVkZS9jb25maWcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJz
eXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCkBAIC0xMDMsMTEgKzEwNSw4
IEBAIGNsYXNzIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpDYW5jZWxsZXIgewogICB2b2lkKiBzdGF0
ZV87CiB9OwogCi1FY2hvQ2FuY2VsbGF0aW9uSW1wbDo6RWNob0NhbmNlbGxhdGlvbkltcGwocnRj
OjpDcml0aWNhbFNlY3Rpb24qIGNyaXRfcmVuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uKiBjcml0X2NhcHR1cmUpCi0g
ICAgOiBjcml0X3JlbmRlcl8oY3JpdF9yZW5kZXIpLAotICAgICAgY3JpdF9jYXB0dXJlXyhjcml0
X2NhcHR1cmUpLAotICAgICAgZHJpZnRfY29tcGVuc2F0aW9uX2VuYWJsZWRfKGZhbHNlKSwKK0Vj
aG9DYW5jZWxsYXRpb25JbXBsOjpFY2hvQ2FuY2VsbGF0aW9uSW1wbCgpCisgICAgOiBkcmlmdF9j
b21wZW5zYXRpb25fZW5hYmxlZF8oZmFsc2UpLAogICAgICAgbWV0cmljc19lbmFibGVkXyh0cnVl
KSwKICAgICAgIHN1cHByZXNzaW9uX2xldmVsXyhrSGlnaFN1cHByZXNzaW9uKSwKICAgICAgIHN0
cmVhbV9kcmlmdF9zYW1wbGVzXygwKSwKQEAgLTExNiwxNiArMTE1LDEyIEBAIEVjaG9DYW5jZWxs
YXRpb25JbXBsOjpFY2hvQ2FuY2VsbGF0aW9uSW1wbChydGM6OkNyaXRpY2FsU2VjdGlvbiogY3Jp
dF9yZW5kZXIsCiAgICAgICBkZWxheV9sb2dnaW5nX2VuYWJsZWRfKHRydWUpLAogICAgICAgZXh0
ZW5kZWRfZmlsdGVyX2VuYWJsZWRfKGZhbHNlKSwKICAgICAgIGRlbGF5X2Fnbm9zdGljX2VuYWJs
ZWRfKGZhbHNlKSwKLSAgICAgIGVuZm9yY2VfemVyb19zdHJlYW1fZGVsYXlfKEVuZm9yY2VaZXJv
U3RyZWFtRGVsYXkoKSkgewotICBSVENfRENIRUNLKGNyaXRfcmVuZGVyKTsKLSAgUlRDX0RDSEVD
Syhjcml0X2NhcHR1cmUpOwotfQorICAgICAgZW5mb3JjZV96ZXJvX3N0cmVhbV9kZWxheV8oRW5m
b3JjZVplcm9TdHJlYW1EZWxheSgpKSB7fQogCiBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6fkVjaG9D
YW5jZWxsYXRpb25JbXBsKCkgPSBkZWZhdWx0OwogCiB2b2lkIEVjaG9DYW5jZWxsYXRpb25JbXBs
OjpQcm9jZXNzUmVuZGVyQXVkaW8oCiAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHBh
Y2tlZF9yZW5kZXJfYXVkaW8pIHsKLSAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZShjcml0X2Nh
cHR1cmVfKTsKICAgaWYgKCFlbmFibGVkXykgewogICAgIHJldHVybjsKICAgfQpAQCAtMTQ5LDcg
KzE0NCw2IEBAIHZvaWQgRWNob0NhbmNlbGxhdGlvbkltcGw6OlByb2Nlc3NSZW5kZXJBdWRpbygK
IAogaW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpQcm9jZXNzQ2FwdHVyZUF1ZGlvKEF1ZGlvQnVm
ZmVyKiBhdWRpbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc3RyZWFtX2RlbGF5X21zKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3Jp
dF9jYXB0dXJlXyk7CiAgIGlmICghZW5hYmxlZF8pIHsKICAgICByZXR1cm4gQXVkaW9Qcm9jZXNz
aW5nOjprTm9FcnJvcjsKICAgfQpAQCAtMjA2LDEwICsyMDAsNiBAQCBpbnQgRWNob0NhbmNlbGxh
dGlvbkltcGw6OlByb2Nlc3NDYXB0dXJlQXVkaW8oQXVkaW9CdWZmZXIqIGF1ZGlvLAogfQogCiBp
bnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OkVuYWJsZShib29sIGVuYWJsZSkgewotICAvLyBSdW4g
aW4gYSBzaW5nbGUtdGhyZWFkZWQgbWFubmVyLgotICBydGM6OkNyaXRTY29wZSBjc19yZW5kZXIo
Y3JpdF9yZW5kZXJfKTsKLSAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZShjcml0X2NhcHR1cmVf
KTsKLQogICBpZiAoZW5hYmxlICYmICFlbmFibGVkXykgewogICAgIGVuYWJsZWRfID0gZW5hYmxl
OyAgLy8gTXVzdCBiZSBzZXQgYmVmb3JlIEluaXRpYWxpemUoKSBpcyBjYWxsZWQuCiAKQEAgLTIy
Nyw2OCArMjE3LDUyIEBAIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6RW5hYmxlKGJvb2wgZW5h
YmxlKSB7CiB9CiAKIGJvb2wgRWNob0NhbmNlbGxhdGlvbkltcGw6OmlzX2VuYWJsZWQoKSBjb25z
dCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1cm4gZW5hYmxl
ZF87CiB9CiAKIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6c2V0X3N1cHByZXNzaW9uX2xldmVs
KFN1cHByZXNzaW9uTGV2ZWwgbGV2ZWwpIHsKLSAgewotICAgIGlmIChNYXBTZXR0aW5nKGxldmVs
KSA9PSAtMSkgewotICAgICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFtZXRlckVy
cm9yOwotICAgIH0KLSAgICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKLSAgICBz
dXBwcmVzc2lvbl9sZXZlbF8gPSBsZXZlbDsKKyAgaWYgKE1hcFNldHRpbmcobGV2ZWwpID09IC0x
KSB7CisgICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFtZXRlckVycm9yOwogICB9
CisgIHN1cHByZXNzaW9uX2xldmVsXyA9IGxldmVsOwogICByZXR1cm4gQ29uZmlndXJlKCk7CiB9
CiAKIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpTdXBwcmVzc2lvbkxldmVsIEVjaG9DYW5jZWxsYXRp
b25JbXBsOjpzdXBwcmVzc2lvbl9sZXZlbCgpCiAgICAgY29uc3QgewotICBydGM6OkNyaXRTY29w
ZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgcmV0dXJuIHN1cHByZXNzaW9uX2xldmVsXzsKIH0KIAog
aW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjplbmFibGVfZHJpZnRfY29tcGVuc2F0aW9uKGJvb2wg
ZW5hYmxlKSB7Ci0gIHsKLSAgICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKLSAg
ICBkcmlmdF9jb21wZW5zYXRpb25fZW5hYmxlZF8gPSBlbmFibGU7Ci0gIH0KKyAgZHJpZnRfY29t
cGVuc2F0aW9uX2VuYWJsZWRfID0gZW5hYmxlOwogICByZXR1cm4gQ29uZmlndXJlKCk7CiB9CiAK
IGJvb2wgRWNob0NhbmNlbGxhdGlvbkltcGw6OmlzX2RyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVk
KCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgcmV0dXJu
IGRyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkXzsKIH0KIAogdm9pZCBFY2hvQ2FuY2VsbGF0aW9u
SW1wbDo6c2V0X3N0cmVhbV9kcmlmdF9zYW1wbGVzKGludCBkcmlmdCkgewotICBydGM6OkNyaXRT
Y29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgd2FzX3N0cmVhbV9kcmlmdF9zZXRfID0gdHJ1ZTsK
ICAgc3RyZWFtX2RyaWZ0X3NhbXBsZXNfID0gZHJpZnQ7CiB9CiAKIGludCBFY2hvQ2FuY2VsbGF0
aW9uSW1wbDo6c3RyZWFtX2RyaWZ0X3NhbXBsZXMoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3Bl
IGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1cm4gc3RyZWFtX2RyaWZ0X3NhbXBsZXNfOwogfQog
CiBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OmVuYWJsZV9tZXRyaWNzKGJvb2wgZW5hYmxlKSB7
Ci0gIHsKLSAgICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKLSAgICBtZXRyaWNz
X2VuYWJsZWRfID0gZW5hYmxlOwotICB9CisgIG1ldHJpY3NfZW5hYmxlZF8gPSBlbmFibGU7CiAg
IHJldHVybiBDb25maWd1cmUoKTsKIH0KIAogYm9vbCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6YXJl
X21ldHJpY3NfZW5hYmxlZCgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0
dXJlXyk7CiAgIHJldHVybiBlbmFibGVkXyAmJiBtZXRyaWNzX2VuYWJsZWRfOwogfQogCiAvLyBU
T0RPKGFqbSk6IHdlIGN1cnJlbnRseSBqdXN0IHVzZSB0aGUgbWV0cmljcyBmcm9tIHRoZSBmaXJz
dCBBRUMuIFRoaW5rIG1vcmUKIC8vICAgICAgICAgICAgYWJvdWUgdGhlIGJlc3Qgd2F5IHRvIGV4
dGVuZCB0aGlzIHRvIG11bHRpLWNoYW5uZWwuCiBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6Okdl
dE1ldHJpY3MoTWV0cmljcyogbWV0cmljcykgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2Nh
cHR1cmVfKTsKICAgaWYgKG1ldHJpY3MgPT0gTlVMTCkgewogICAgIHJldHVybiBBdWRpb1Byb2Nl
c3Npbmc6OmtOdWxsUG9pbnRlckVycm9yOwogICB9CkBAIC0zMzEsNDYgKzMwNSwzNiBAQCBpbnQg
RWNob0NhbmNlbGxhdGlvbkltcGw6OkdldE1ldHJpY3MoTWV0cmljcyogbWV0cmljcykgewogfQog
CiBib29sIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpzdHJlYW1faGFzX2VjaG8oKSBjb25zdCB7Ci0g
IHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1cm4gc3RyZWFtX2hhc19l
Y2hvXzsKIH0KIAogaW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjplbmFibGVfZGVsYXlfbG9nZ2lu
Zyhib29sIGVuYWJsZSkgewotICB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJl
Xyk7Ci0gICAgZGVsYXlfbG9nZ2luZ19lbmFibGVkXyA9IGVuYWJsZTsKLSAgfQorICBkZWxheV9s
b2dnaW5nX2VuYWJsZWRfID0gZW5hYmxlOwogICByZXR1cm4gQ29uZmlndXJlKCk7CiB9CiAKIGJv
b2wgRWNob0NhbmNlbGxhdGlvbkltcGw6OmlzX2RlbGF5X2xvZ2dpbmdfZW5hYmxlZCgpIGNvbnN0
IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVybiBlbmFibGVk
XyAmJiBkZWxheV9sb2dnaW5nX2VuYWJsZWRfOwogfQogCiBib29sIEVjaG9DYW5jZWxsYXRpb25J
bXBsOjppc19kZWxheV9hZ25vc3RpY19lbmFibGVkKCkgY29uc3QgewotICBydGM6OkNyaXRTY29w
ZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgcmV0dXJuIGRlbGF5X2Fnbm9zdGljX2VuYWJsZWRfOwog
fQogCiBzdGQ6OnN0cmluZyBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6R2V0RXhwZXJpbWVudHNEZXNj
cmlwdGlvbigpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVy
biByZWZpbmVkX2FkYXB0aXZlX2ZpbHRlcl9lbmFibGVkXyA/ICJSZWZpbmVkQWRhcHRpdmVGaWx0
ZXI7IiA6ICIiOwogfQogCiBib29sIEVjaG9DYW5jZWxsYXRpb25JbXBsOjppc19yZWZpbmVkX2Fk
YXB0aXZlX2ZpbHRlcl9lbmFibGVkKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0
X2NhcHR1cmVfKTsKICAgcmV0dXJuIHJlZmluZWRfYWRhcHRpdmVfZmlsdGVyX2VuYWJsZWRfOwog
fQogCiBib29sIEVjaG9DYW5jZWxsYXRpb25JbXBsOjppc19leHRlbmRlZF9maWx0ZXJfZW5hYmxl
ZCgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVy
biBleHRlbmRlZF9maWx0ZXJfZW5hYmxlZF87CiB9CiAKIC8vIFRPRE8oYmpvcm52KTogSG93IHNo
b3VsZCB3ZSBoYW5kbGUgdGhlIG11bHRpLWNoYW5uZWwgY2FzZT8KIGludCBFY2hvQ2FuY2VsbGF0
aW9uSW1wbDo6R2V0RGVsYXlNZXRyaWNzKGludCogbWVkaWFuLCBpbnQqIHN0ZCkgewotICBydGM6
OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgZmxvYXQgZnJhY3Rpb25fcG9vcl9kZWxh
eXMgPSAwOwogICByZXR1cm4gR2V0RGVsYXlNZXRyaWNzKG1lZGlhbiwgc3RkLCAmZnJhY3Rpb25f
cG9vcl9kZWxheXMpOwogfQpAQCAtMzc4LDcgKzM0Miw2IEBAIGludCBFY2hvQ2FuY2VsbGF0aW9u
SW1wbDo6R2V0RGVsYXlNZXRyaWNzKGludCogbWVkaWFuLCBpbnQqIHN0ZCkgewogaW50IEVjaG9D
YW5jZWxsYXRpb25JbXBsOjpHZXREZWxheU1ldHJpY3MoaW50KiBtZWRpYW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHN0ZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBmcmFjdGlvbl9wb29yX2RlbGF5cykg
ewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgaWYgKG1lZGlhbiA9PSBO
VUxMKSB7CiAgICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a051bGxQb2ludGVyRXJyb3I7CiAg
IH0KQEAgLTQwMCw3ICszNjMsNiBAQCBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OkdldERlbGF5
TWV0cmljcyhpbnQqIG1lZGlhbiwKIH0KIAogc3RydWN0IEFlY0NvcmUqIEVjaG9DYW5jZWxsYXRp
b25JbXBsOjphZWNfY29yZSgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0
dXJlXyk7CiAgIGlmICghZW5hYmxlZF8pIHsKICAgICByZXR1cm4gTlVMTDsKICAgfQpAQCAtNDEx
LDkgKzM3Myw2IEBAIHZvaWQgRWNob0NhbmNlbGxhdGlvbkltcGw6OkluaXRpYWxpemUoaW50IHNh
bXBsZV9yYXRlX2h6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbnVtX3JldmVyc2VfY2hhbm5lbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBudW1fb3V0cHV0X2NoYW5uZWxzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX3Byb2NfY2hhbm5lbHMpIHsKLSAgcnRjOjpDcml0
U2NvcGUgY3NfcmVuZGVyKGNyaXRfcmVuZGVyXyk7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1
cmUoY3JpdF9jYXB0dXJlXyk7Ci0KICAgc3RyZWFtX3Byb3BlcnRpZXNfLnJlc2V0KAogICAgICAg
bmV3IFN0cmVhbVByb3BlcnRpZXMoc2FtcGxlX3JhdGVfaHosIG51bV9yZXZlcnNlX2NoYW5uZWxz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX291dHB1dF9jaGFubmVscywgbnVtX3By
b2NfY2hhbm5lbHMpKTsKQEAgLTQ0Miw3ICs0MDEsNiBAQCB2b2lkIEVjaG9DYW5jZWxsYXRpb25J
bXBsOjpJbml0aWFsaXplKGludCBzYW1wbGVfcmF0ZV9oeiwKIH0KIAogaW50IEVjaG9DYW5jZWxs
YXRpb25JbXBsOjpHZXRTeXN0ZW1EZWxheUluU2FtcGxlcygpIGNvbnN0IHsKLSAgcnRjOjpDcml0
U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIFJUQ19EQ0hFQ0soZW5hYmxlZF8pOwogICAvLyBS
ZXBvcnQgdGhlIGRlbGF5IGZvciB0aGUgZmlyc3QgQUVDIGNvbXBvbmVudC4KICAgcmV0dXJuIFdl
YlJ0Y0FlY19zeXN0ZW1fZGVsYXkoV2ViUnRjQWVjX2FlY19jb3JlKGNhbmNlbGxlcnNfWzBdLT5z
dGF0ZSgpKSk7CkBAIC00NzEsNyArNDI5LDYgQEAgdm9pZCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6
UGFja1JlbmRlckF1ZGlvQnVmZmVyKAogCiB2b2lkIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpTZXRF
eHRyYU9wdGlvbnMoY29uc3Qgd2VicnRjOjpDb25maWcmIGNvbmZpZykgewogICB7Ci0gICAgcnRj
OjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgICAgZXh0ZW5kZWRfZmlsdGVyX2VuYWJs
ZWRfID0gY29uZmlnLkdldDxFeHRlbmRlZEZpbHRlcj4oKS5lbmFibGVkOwogICAgIGRlbGF5X2Fn
bm9zdGljX2VuYWJsZWRfID0gY29uZmlnLkdldDxEZWxheUFnbm9zdGljPigpLmVuYWJsZWQ7CiAg
ICAgcmVmaW5lZF9hZGFwdGl2ZV9maWx0ZXJfZW5hYmxlZF8gPQpAQCAtNDgxLDggKzQzOCw2IEBA
IHZvaWQgRWNob0NhbmNlbGxhdGlvbkltcGw6OlNldEV4dHJhT3B0aW9ucyhjb25zdCB3ZWJydGM6
OkNvbmZpZyYgY29uZmlnKSB7CiB9CiAKIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6Q29uZmln
dXJlKCkgewotICBydGM6OkNyaXRTY29wZSBjc19yZW5kZXIoY3JpdF9yZW5kZXJfKTsKLSAgcnRj
OjpDcml0U2NvcGUgY3NfY2FwdHVyZShjcml0X2NhcHR1cmVfKTsKICAgQWVjQ29uZmlnIGNvbmZp
ZzsKICAgY29uZmlnLm1ldHJpY3NNb2RlID0gbWV0cmljc19lbmFibGVkXzsKICAgY29uZmlnLm5s
cE1vZGUgPSBNYXBTZXR0aW5nKHN1cHByZXNzaW9uX2xldmVsXyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvZWNob19jYW5jZWxsYXRpb25faW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0
aW9uX2ltcGwuaAppbmRleCAwOTFhN2I1MTE2YTJhZDdlNjE4YTljZmUxODQ3NDEzZTdmNDQyYmEy
Li5hOGI0M2E4Y2Q2MmI4ZWMxNTFiODBkZTBiMGFlNjQ5MTM2NzdmZmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvZWNob19jYW5jZWxsYXRpb25faW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2Nh
bmNlbGxhdGlvbl9pbXBsLmgKQEAgLTExLDEyICsxMSwxNiBAQAogI2lmbmRlZiBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfRUNIT19DQU5DRUxMQVRJT05fSU1QTF9IXwogI2RlZmluZSBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfRUNIT19DQU5DRUxMQVRJT05fSU1QTF9IXwogCisjaW5jbHVkZSA8
c3RkZGVmLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRl
IDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGlj
YWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yOCw4ICszMiw3IEBAIGNsYXNzIEF1ZGlvQnVmZmVy
OwogLy8gZm9yIFBDIGFuZCBJUCBwaG9uZSBhcHBsaWNhdGlvbnMuCiBjbGFzcyBFY2hvQ2FuY2Vs
bGF0aW9uSW1wbCB7CiAgcHVibGljOgotICBFY2hvQ2FuY2VsbGF0aW9uSW1wbChydGM6OkNyaXRp
Y2FsU2VjdGlvbiogY3JpdF9yZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3Jp
dGljYWxTZWN0aW9uKiBjcml0X2NhcHR1cmUpOworICBleHBsaWNpdCBFY2hvQ2FuY2VsbGF0aW9u
SW1wbCgpOwogICB+RWNob0NhbmNlbGxhdGlvbkltcGwoKTsKIAogICB2b2lkIFByb2Nlc3NSZW5k
ZXJBdWRpbyhydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcGFja2VkX3JlbmRlcl9hdWRpbyk7
CkBAIC04MCwxNyArODMsMjMgQEAgY2xhc3MgRWNob0NhbmNlbGxhdGlvbkltcGwgewogICAvLyBQ
X2E6ICAgIEludGVybmFsIHNpZ25hbCBwb3dlciBhdCB0aGUgcG9pbnQgYmVmb3JlIHRoZSBBRUMn
cyBub24tbGluZWFyCiAgIC8vICAgICAgICAgcHJvY2Vzc29yLgogICBzdHJ1Y3QgTWV0cmljcyB7
CisgICAgc3RydWN0IFN0YXRpc3RpYyB7CisgICAgICBpbnQgaW5zdGFudCA9IDA7ICAvLyBJbnN0
YW50YW5lb3VzIHZhbHVlLgorICAgICAgaW50IGF2ZXJhZ2UgPSAwOyAgLy8gTG9uZy10ZXJtIGF2
ZXJhZ2UuCisgICAgICBpbnQgbWF4aW11bSA9IDA7ICAvLyBMb25nLXRlcm0gbWF4aW11bS4KKyAg
ICAgIGludCBtaW5pbXVtID0gMDsgIC8vIExvbmctdGVybSBtaW5pbXVtLgorICAgIH07CiAgICAg
Ly8gUkVSTCA9IEVSTCArIEVSTEUKLSAgICBBdWRpb1Byb2Nlc3Npbmc6OlN0YXRpc3RpYyByZXNp
ZHVhbF9lY2hvX3JldHVybl9sb3NzOworICAgIFN0YXRpc3RpYyByZXNpZHVhbF9lY2hvX3JldHVy
bl9sb3NzOwogCiAgICAgLy8gRVJMID0gMTBsb2dfMTAoUF9mYXIgLyBQX2VjaG8pCi0gICAgQXVk
aW9Qcm9jZXNzaW5nOjpTdGF0aXN0aWMgZWNob19yZXR1cm5fbG9zczsKKyAgICBTdGF0aXN0aWMg
ZWNob19yZXR1cm5fbG9zczsKIAogICAgIC8vIEVSTEUgPSAxMGxvZ18xMChQX2VjaG8gLyBQX291
dCkKLSAgICBBdWRpb1Byb2Nlc3Npbmc6OlN0YXRpc3RpYyBlY2hvX3JldHVybl9sb3NzX2VuaGFu
Y2VtZW50OworICAgIFN0YXRpc3RpYyBlY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50OwogCiAg
ICAgLy8gKFByZSBub24tbGluZWFyIHByb2Nlc3Npbmcgc3VwcHJlc3Npb24pIEFfTkxQID0gMTBs
b2dfMTAoUF9lY2hvIC8gUF9hKQotICAgIEF1ZGlvUHJvY2Vzc2luZzo6U3RhdGlzdGljIGFfbmxw
OworICAgIFN0YXRpc3RpYyBhX25scDsKIAogICAgIC8vIEZyYWN0aW9uIG9mIHRpbWUgdGhhdCB0
aGUgQUVDIGxpbmVhciBmaWx0ZXIgaXMgZGl2ZXJnZW50LCBpbiBhIDEtc2Vjb25kCiAgICAgLy8g
bm9uLW92ZXJsYXBwZWQgYWdncmVnYXRpb24gd2luZG93LgpAQCAtMTUwLDI4ICsxNTksMjMgQEAg
Y2xhc3MgRWNob0NhbmNlbGxhdGlvbkltcGwgewogICB2b2lkIEFsbG9jYXRlUmVuZGVyUXVldWUo
KTsKICAgaW50IENvbmZpZ3VyZSgpOwogCi0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uKiBjb25zdCBj
cml0X3JlbmRlcl8gUlRDX0FDUVVJUkVEX0JFRk9SRShjcml0X2NhcHR1cmVfKTsKLSAgcnRjOjpD
cml0aWNhbFNlY3Rpb24qIGNvbnN0IGNyaXRfY2FwdHVyZV87Ci0KICAgYm9vbCBlbmFibGVkXyA9
IGZhbHNlOwotICBib29sIGRyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkXyBSVENfR1VBUkRFRF9C
WShjcml0X2NhcHR1cmVfKTsKLSAgYm9vbCBtZXRyaWNzX2VuYWJsZWRfIFJUQ19HVUFSREVEX0JZ
KGNyaXRfY2FwdHVyZV8pOwotICBTdXBwcmVzc2lvbkxldmVsIHN1cHByZXNzaW9uX2xldmVsXyBS
VENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAgaW50IHN0cmVhbV9kcmlmdF9zYW1wbGVz
XyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAgYm9vbCB3YXNfc3RyZWFtX2RyaWZ0
X3NldF8gUlRDX0dVQVJERURfQlkoY3JpdF9jYXB0dXJlXyk7Ci0gIGJvb2wgc3RyZWFtX2hhc19l
Y2hvXyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAgYm9vbCBkZWxheV9sb2dnaW5n
X2VuYWJsZWRfIFJUQ19HVUFSREVEX0JZKGNyaXRfY2FwdHVyZV8pOwotICBib29sIGV4dGVuZGVk
X2ZpbHRlcl9lbmFibGVkXyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAgYm9vbCBk
ZWxheV9hZ25vc3RpY19lbmFibGVkXyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAg
Ym9vbCByZWZpbmVkX2FkYXB0aXZlX2ZpbHRlcl9lbmFibGVkXyBSVENfR1VBUkRFRF9CWShjcml0
X2NhcHR1cmVfKSA9IGZhbHNlOworICBib29sIGRyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkXzsK
KyAgYm9vbCBtZXRyaWNzX2VuYWJsZWRfOworICBTdXBwcmVzc2lvbkxldmVsIHN1cHByZXNzaW9u
X2xldmVsXzsKKyAgaW50IHN0cmVhbV9kcmlmdF9zYW1wbGVzXzsKKyAgYm9vbCB3YXNfc3RyZWFt
X2RyaWZ0X3NldF87CisgIGJvb2wgc3RyZWFtX2hhc19lY2hvXzsKKyAgYm9vbCBkZWxheV9sb2dn
aW5nX2VuYWJsZWRfOworICBib29sIGV4dGVuZGVkX2ZpbHRlcl9lbmFibGVkXzsKKyAgYm9vbCBk
ZWxheV9hZ25vc3RpY19lbmFibGVkXzsKKyAgYm9vbCByZWZpbmVkX2FkYXB0aXZlX2ZpbHRlcl9l
bmFibGVkXyA9IGZhbHNlOwogCiAgIC8vIE9ubHkgYWN0aXZlIG9uIENocm9tZSBPUyBkZXZpY2Vz
LgotICBjb25zdCBib29sIGVuZm9yY2VfemVyb19zdHJlYW1fZGVsYXlfIFJUQ19HVUFSREVEX0JZ
KGNyaXRfY2FwdHVyZV8pOworICBjb25zdCBib29sIGVuZm9yY2VfemVyb19zdHJlYW1fZGVsYXlf
OwogCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDYW5jZWxsZXI+PiBjYW5jZWxsZXJz
XzsKICAgc3RkOjp1bmlxdWVfcHRyPFN0cmVhbVByb3BlcnRpZXM+IHN0cmVhbV9wcm9wZXJ0aWVz
XzsKLQotICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKEVjaG9DYW5jZWxsYXRp
b25JbXBsKTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9lY2hvX2NhbmNlbGxhdGlvbl9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9f
Y2FuY2VsbGF0aW9uX2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggYzUwYzUyZjg1N2JmNzM1MWI2Yjgx
NTE1YzdiOTdiZDU3NThkZGE1ZS4uOWQ4MWMxZGYzYjc2YjIzYTE5ZDBhYWExMDZkY2M1MmYwYzRk
MGNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGxfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGxfdW5pdHRlc3QuY2MK
QEAgLTE4LDkgKzE4LDcgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBURVNUKEVjaG9DYW5jZWxs
YXRpb25JbnRlcm5hbFRlc3QsIEV4dGVuZGVkRmlsdGVyKSB7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0
aW9uIGNyaXRfcmVuZGVyOwotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X2NhcHR1cmU7Ci0g
IEVjaG9DYW5jZWxsYXRpb25JbXBsIGVjaG9fY2FuY2VsbGVyKCZjcml0X3JlbmRlciwgJmNyaXRf
Y2FwdHVyZSk7CisgIEVjaG9DYW5jZWxsYXRpb25JbXBsIGVjaG9fY2FuY2VsbGVyOwogICBlY2hv
X2NhbmNlbGxlci5Jbml0aWFsaXplKEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGUzMmtIeiwg
MiwgMiwgMik7CiAKICAgRVhQRUNUX1RSVUUoZWNob19jYW5jZWxsZXIuYWVjX2NvcmUoKSA9PSBu
dWxscHRyKTsKQEAgLTUxLDkgKzQ5LDcgQEAgVEVTVChFY2hvQ2FuY2VsbGF0aW9uSW50ZXJuYWxU
ZXN0LCBFeHRlbmRlZEZpbHRlcikgewogfQogCiBURVNUKEVjaG9DYW5jZWxsYXRpb25JbnRlcm5h
bFRlc3QsIERlbGF5QWdub3N0aWMpIHsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9yZW5k
ZXI7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfY2FwdHVyZTsKLSAgRWNob0NhbmNlbGxh
dGlvbkltcGwgZWNob19jYW5jZWxsZXIoJmNyaXRfcmVuZGVyLCAmY3JpdF9jYXB0dXJlKTsKKyAg
RWNob0NhbmNlbGxhdGlvbkltcGwgZWNob19jYW5jZWxsZXI7CiAgIGVjaG9fY2FuY2VsbGVyLklu
aXRpYWxpemUoQXVkaW9Qcm9jZXNzaW5nOjprU2FtcGxlUmF0ZTMya0h6LCAxLCAxLCAxKTsKIAog
ICBFWFBFQ1RfVFJVRShlY2hvX2NhbmNlbGxlci5hZWNfY29yZSgpID09IE5VTEwpOwpAQCAtODUs
OSArODEsNyBAQCBURVNUKEVjaG9DYW5jZWxsYXRpb25JbnRlcm5hbFRlc3QsIERlbGF5QWdub3N0
aWMpIHsKIH0KIAogVEVTVChFY2hvQ2FuY2VsbGF0aW9uSW50ZXJuYWxUZXN0LCBJbnRlcmZhY2VD
b25maWd1cmF0aW9uKSB7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfcmVuZGVyOwotICBy
dGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X2NhcHR1cmU7Ci0gIEVjaG9DYW5jZWxsYXRpb25JbXBs
IGVjaG9fY2FuY2VsbGVyKCZjcml0X3JlbmRlciwgJmNyaXRfY2FwdHVyZSk7CisgIEVjaG9DYW5j
ZWxsYXRpb25JbXBsIGVjaG9fY2FuY2VsbGVyOwogICBlY2hvX2NhbmNlbGxlci5Jbml0aWFsaXpl
KEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGUxNmtIeiwgMSwgMSwgMSk7CiAKICAgRVhQRUNU
X0VRKDAsIGVjaG9fY2FuY2VsbGVyLmVuYWJsZV9kcmlmdF9jb21wZW5zYXRpb24odHJ1ZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfYml0X2V4YWN0X3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfYml0X2V4YWN0X3VuaXR0ZXN0
LmNjCmluZGV4IDhiODM2OTI2MGE1NTY1MWRlYzIwZTg5MWQ5NjM5ZTkyYWYxN2I1MWUuLjc4NDRk
YWY1MjI1MjY2YWNmZTBkYmNjNDYxZDljOGVmMGM3ZTBlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9lY2hvX2NvbnRyb2xfbW9iaWxlX2JpdF9leGFjdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvZWNob19jb250cm9sX21vYmlsZV9iaXRfZXhhY3RfdW5pdHRlc3QuY2MKQEAgLTY0LDkgKzY0
LDcgQEAgdm9pZCBSdW5CaXRleGFjdG5lc3NUZXN0KGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBFY2hvQ29udHJvbE1vYmlsZUltcGw6OlJvdXRpbmdNb2RlIHJv
dXRpbmdfbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbWZvcnRfbm9pc2Vf
ZW5hYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkFycmF5Vmlldzxj
b25zdCBmbG9hdD4mIG91dHB1dF9yZWZlcmVuY2UpIHsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24g
Y3JpdF9yZW5kZXI7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfY2FwdHVyZTsKLSAgRWNo
b0NvbnRyb2xNb2JpbGVJbXBsIGVjaG9fY29udHJvbF9tb2JpbGUoJmNyaXRfcmVuZGVyLCAmY3Jp
dF9jYXB0dXJlKTsKKyAgRWNob0NvbnRyb2xNb2JpbGVJbXBsIGVjaG9fY29udHJvbF9tb2JpbGU7
CiAgIFNldHVwQ29tcG9uZW50KHNhbXBsZV9yYXRlX2h6LCByb3V0aW5nX21vZGUsIGNvbWZvcnRf
bm9pc2VfZW5hYmxlZCwKICAgICAgICAgICAgICAgICAgJmVjaG9fY29udHJvbF9tb2JpbGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV9pbXBsLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfaW1wbC5jYwppbmRleCBiZDEyNWM2ZTBkZTA5YTQ1
N2ViMjViYTlhZGE1OWRkMmUzZTVlYTcxLi5iOWZiZjQyMDUyNzk3ZGZmYWEzZDYzOWUxNjIwMjY4
YjA4NTYwODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV9pbXBs
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NvbnRyb2xfbW9iaWxlX2ltcGwuY2MKQEAgLTExLDEx
ICsxMSwxMyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NvbnRy
b2xfbW9iaWxlX2ltcGwuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRp
bnQ+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjbS9lY2hvX2NvbnRy
b2xfbW9iaWxlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1
ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlv
X3Byb2Nlc3NpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtNTUsMTAgKzU3LDYgQEAgQXVkaW9Qcm9jZXNz
aW5nOjpFcnJvciBNYXBFcnJvcihpbnQgZXJyKSB7CiB9CiB9ICAvLyBuYW1lc3BhY2UKIAotc2l6
ZV90IEVjaG9Db250cm9sTW9iaWxlSW1wbDo6ZWNob19wYXRoX3NpemVfYnl0ZXMoKSB7Ci0gIHJl
dHVybiBXZWJSdGNBZWNtX2VjaG9fcGF0aF9zaXplX2J5dGVzKCk7Ci19Ci0KIHN0cnVjdCBFY2hv
Q29udHJvbE1vYmlsZUltcGw6OlN0cmVhbVByb3BlcnRpZXMgewogICBTdHJlYW1Qcm9wZXJ0aWVz
KCkgPSBkZWxldGU7CiAgIFN0cmVhbVByb3BlcnRpZXMoaW50IHNhbXBsZV9yYXRlX2h6LApAQCAt
OTAsMTcgKzg4LDEwIEBAIGNsYXNzIEVjaG9Db250cm9sTW9iaWxlSW1wbDo6Q2FuY2VsbGVyIHsK
ICAgICByZXR1cm4gc3RhdGVfOwogICB9CiAKLSAgdm9pZCBJbml0aWFsaXplKGludCBzYW1wbGVf
cmF0ZV9oeiwKLSAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGV4dGVybmFsX2VjaG9f
cGF0aCwKLSAgICAgICAgICAgICAgICAgIHNpemVfdCBlY2hvX3BhdGhfc2l6ZV9ieXRlcykgewor
ICB2b2lkIEluaXRpYWxpemUoaW50IHNhbXBsZV9yYXRlX2h6KSB7CiAgICAgUlRDX0RDSEVDSyhz
dGF0ZV8pOwogICAgIGludCBlcnJvciA9IFdlYlJ0Y0FlY21fSW5pdChzdGF0ZV8sIHNhbXBsZV9y
YXRlX2h6KTsKICAgICBSVENfRENIRUNLX0VRKEF1ZGlvUHJvY2Vzc2luZzo6a05vRXJyb3IsIGVy
cm9yKTsKLSAgICBpZiAoZXh0ZXJuYWxfZWNob19wYXRoICE9IE5VTEwpIHsKLSAgICAgIGVycm9y
ID0gV2ViUnRjQWVjbV9Jbml0RWNob1BhdGgoc3RhdGVfLCBleHRlcm5hbF9lY2hvX3BhdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG9fcGF0aF9zaXplX2J5dGVz
KTsKLSAgICAgIFJUQ19EQ0hFQ0tfRVEoQXVkaW9Qcm9jZXNzaW5nOjprTm9FcnJvciwgZXJyb3Ip
OwotICAgIH0KICAgfQogCiAgcHJpdmF0ZToKQEAgLTEwOCwyNyArOTksMTMgQEAgY2xhc3MgRWNo
b0NvbnRyb2xNb2JpbGVJbXBsOjpDYW5jZWxsZXIgewogICBSVENfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOKENhbmNlbGxlcik7CiB9OwogCi1FY2hvQ29udHJvbE1vYmlsZUltcGw6OkVjaG9Db250
cm9sTW9iaWxlSW1wbChydGM6OkNyaXRpY2FsU2VjdGlvbiogY3JpdF9yZW5kZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNyaXRpY2FsU2VjdGlv
biogY3JpdF9jYXB0dXJlKQotICAgIDogY3JpdF9yZW5kZXJfKGNyaXRfcmVuZGVyKSwKLSAgICAg
IGNyaXRfY2FwdHVyZV8oY3JpdF9jYXB0dXJlKSwKLSAgICAgIHJvdXRpbmdfbW9kZV8oa1NwZWFr
ZXJwaG9uZSksCi0gICAgICBjb21mb3J0X25vaXNlX2VuYWJsZWRfKGZhbHNlKSwKLSAgICAgIGV4
dGVybmFsX2VjaG9fcGF0aF8oTlVMTCkgewotICBSVENfRENIRUNLKGNyaXRfcmVuZGVyKTsKLSAg
UlRDX0RDSEVDSyhjcml0X2NhcHR1cmUpOwotfQorRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpFY2hv
Q29udHJvbE1vYmlsZUltcGwoKQorICAgIDogcm91dGluZ19tb2RlXyhrU3BlYWtlcnBob25lKSwg
Y29tZm9ydF9ub2lzZV9lbmFibGVkXyhmYWxzZSkge30KIAotRWNob0NvbnRyb2xNb2JpbGVJbXBs
Ojp+RWNob0NvbnRyb2xNb2JpbGVJbXBsKCkgewotICBpZiAoZXh0ZXJuYWxfZWNob19wYXRoXyAh
PSBOVUxMKSB7Ci0gICAgZGVsZXRlW10gZXh0ZXJuYWxfZWNob19wYXRoXzsKLSAgICBleHRlcm5h
bF9lY2hvX3BhdGhfID0gTlVMTDsKLSAgfQotfQorRWNob0NvbnRyb2xNb2JpbGVJbXBsOjp+RWNo
b0NvbnRyb2xNb2JpbGVJbXBsKCkge30KIAogdm9pZCBFY2hvQ29udHJvbE1vYmlsZUltcGw6OlBy
b2Nlc3NSZW5kZXJBdWRpbygKICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBpbnQxNl90PiBwYWNr
ZWRfcmVuZGVyX2F1ZGlvKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9jYXB0
dXJlXyk7CiAgIGlmICghZW5hYmxlZF8pIHsKICAgICByZXR1cm47CiAgIH0KQEAgLTE4MSw3ICsx
NTgsNiBAQCBzaXplX3QgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpOdW1DYW5jZWxsZXJzUmVxdWly
ZWQoCiAKIGludCBFY2hvQ29udHJvbE1vYmlsZUltcGw6OlByb2Nlc3NDYXB0dXJlQXVkaW8oQXVk
aW9CdWZmZXIqIGF1ZGlvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc3RyZWFtX2RlbGF5X21zKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1
cmUoY3JpdF9jYXB0dXJlXyk7CiAgIGlmICghZW5hYmxlZF8pIHsKICAgICByZXR1cm4gQXVkaW9Q
cm9jZXNzaW5nOjprTm9FcnJvcjsKICAgfQpAQCAtMjI4LDggKzIwNCw2IEBAIGludCBFY2hvQ29u
dHJvbE1vYmlsZUltcGw6OlByb2Nlc3NDYXB0dXJlQXVkaW8oQXVkaW9CdWZmZXIqIGF1ZGlvLAog
CiBpbnQgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpFbmFibGUoYm9vbCBlbmFibGUpIHsKICAgLy8g
RW5zdXJlIEFFQyBhbmQgQUVDTSBhcmUgbm90IGJvdGggZW5hYmxlZC4KLSAgcnRjOjpDcml0U2Nv
cGUgY3NfcmVuZGVyKGNyaXRfcmVuZGVyXyk7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUo
Y3JpdF9jYXB0dXJlXyk7CiAgIFJUQ19EQ0hFQ0soc3RyZWFtX3Byb3BlcnRpZXNfKTsKIAogICBp
ZiAoZW5hYmxlICYmCkBAIC0yNTIsNyArMjI2LDYgQEAgaW50IEVjaG9Db250cm9sTW9iaWxlSW1w
bDo6RW5hYmxlKGJvb2wgZW5hYmxlKSB7CiB9CiAKIGJvb2wgRWNob0NvbnRyb2xNb2JpbGVJbXBs
Ojppc19lbmFibGVkKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVf
KTsKICAgcmV0dXJuIGVuYWJsZWRfOwogfQogCkBAIC0yNjAsOTAgKzIzMywyNiBAQCBpbnQgRWNo
b0NvbnRyb2xNb2JpbGVJbXBsOjpzZXRfcm91dGluZ19tb2RlKFJvdXRpbmdNb2RlIG1vZGUpIHsK
ICAgaWYgKE1hcFNldHRpbmcobW9kZSkgPT0gLTEpIHsKICAgICByZXR1cm4gQXVkaW9Qcm9jZXNz
aW5nOjprQmFkUGFyYW1ldGVyRXJyb3I7CiAgIH0KLQotICB7Ci0gICAgcnRjOjpDcml0U2NvcGUg
Y3MoY3JpdF9jYXB0dXJlXyk7CiAgICAgcm91dGluZ19tb2RlXyA9IG1vZGU7Ci0gIH0KICAgcmV0
dXJuIENvbmZpZ3VyZSgpOwogfQogCiBFY2hvQ29udHJvbE1vYmlsZUltcGw6OlJvdXRpbmdNb2Rl
IEVjaG9Db250cm9sTW9iaWxlSW1wbDo6cm91dGluZ19tb2RlKCkgY29uc3QgewotICBydGM6OkNy
aXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgcmV0dXJuIHJvdXRpbmdfbW9kZV87CiB9CiAK
IGludCBFY2hvQ29udHJvbE1vYmlsZUltcGw6OmVuYWJsZV9jb21mb3J0X25vaXNlKGJvb2wgZW5h
YmxlKSB7Ci0gIHsKLSAgICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgICBj
b21mb3J0X25vaXNlX2VuYWJsZWRfID0gZW5hYmxlOwotICB9CiAgIHJldHVybiBDb25maWd1cmUo
KTsKIH0KIAogYm9vbCBFY2hvQ29udHJvbE1vYmlsZUltcGw6OmlzX2NvbWZvcnRfbm9pc2VfZW5h
YmxlZCgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJl
dHVybiBjb21mb3J0X25vaXNlX2VuYWJsZWRfOwogfQogCi1pbnQgRWNob0NvbnRyb2xNb2JpbGVJ
bXBsOjpTZXRFY2hvUGF0aChjb25zdCB2b2lkKiBlY2hvX3BhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZV9ieXRlcykgewotICB7Ci0gICAgcnRj
OjpDcml0U2NvcGUgY3NfcmVuZGVyKGNyaXRfcmVuZGVyXyk7Ci0gICAgcnRjOjpDcml0U2NvcGUg
Y3NfY2FwdHVyZShjcml0X2NhcHR1cmVfKTsKLSAgICBpZiAoZWNob19wYXRoID09IE5VTEwpIHsK
LSAgICAgIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtOdWxsUG9pbnRlckVycm9yOwotICAgIH0K
LSAgICBpZiAoc2l6ZV9ieXRlcyAhPSBlY2hvX3BhdGhfc2l6ZV9ieXRlcygpKSB7Ci0gICAgICAv
LyBTaXplIG1pc21hdGNoCi0gICAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprQmFkUGFyYW1l
dGVyRXJyb3I7Ci0gICAgfQotCi0gICAgaWYgKGV4dGVybmFsX2VjaG9fcGF0aF8gPT0gTlVMTCkg
ewotICAgICAgZXh0ZXJuYWxfZWNob19wYXRoXyA9IG5ldyB1bnNpZ25lZCBjaGFyW3NpemVfYnl0
ZXNdOwotICAgIH0KLSAgICBtZW1jcHkoZXh0ZXJuYWxfZWNob19wYXRoXywgZWNob19wYXRoLCBz
aXplX2J5dGVzKTsKLSAgfQotCi0gIC8vIFRPRE8ocGVhaCk6IFNpbXBsaWZ5IG9uY2UgdGhlIEVu
YWJsZSBmdW5jdGlvbiBoYXMgYmVlbiByZW1vdmVkIGZyb20KLSAgLy8gdGhlIHB1YmxpYyBBUE0g
QVBJLgotICBSVENfRENIRUNLKHN0cmVhbV9wcm9wZXJ0aWVzXyk7Ci0gIEluaXRpYWxpemUoc3Ry
ZWFtX3Byb3BlcnRpZXNfLT5zYW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICAgICBzdHJlYW1fcHJv
cGVydGllc18tPm51bV9yZXZlcnNlX2NoYW5uZWxzLAotICAgICAgICAgICAgIHN0cmVhbV9wcm9w
ZXJ0aWVzXy0+bnVtX291dHB1dF9jaGFubmVscyk7Ci0gIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6
OmtOb0Vycm9yOwotfQotCi1pbnQgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpHZXRFY2hvUGF0aCh2
b2lkKiBlY2hvX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgc2l6ZV9ieXRlcykgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1
cmVfKTsKLSAgaWYgKGVjaG9fcGF0aCA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIEF1ZGlvUHJvY2Vz
c2luZzo6a051bGxQb2ludGVyRXJyb3I7Ci0gIH0KLSAgaWYgKHNpemVfYnl0ZXMgIT0gZWNob19w
YXRoX3NpemVfYnl0ZXMoKSkgewotICAgIC8vIFNpemUgbWlzbWF0Y2gKLSAgICByZXR1cm4gQXVk
aW9Qcm9jZXNzaW5nOjprQmFkUGFyYW1ldGVyRXJyb3I7Ci0gIH0KLSAgaWYgKCFlbmFibGVkXykg
ewotICAgIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtOb3RFbmFibGVkRXJyb3I7Ci0gIH0KLQot
ICAvLyBHZXQgdGhlIGVjaG8gcGF0aCBmcm9tIHRoZSBmaXJzdCBjaGFubmVsCi0gIGludDMyX3Qg
ZXJyID0KLSAgICAgIFdlYlJ0Y0FlY21fR2V0RWNob1BhdGgoY2FuY2VsbGVyc19bMF0tPnN0YXRl
KCksIGVjaG9fcGF0aCwgc2l6ZV9ieXRlcyk7Ci0gIGlmIChlcnIgIT0gMCkgewotICAgIHJldHVy
biBNYXBFcnJvcihlcnIpOwotICB9Ci0KLSAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a05vRXJy
b3I7Ci19Ci0KIHZvaWQgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpJbml0aWFsaXplKGludCBzYW1w
bGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBudW1fcmV2ZXJzZV9jaGFubmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBudW1fb3V0cHV0X2NoYW5uZWxzKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNz
X3JlbmRlcihjcml0X3JlbmRlcl8pOwotICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKGNyaXRf
Y2FwdHVyZV8pOwotCiAgIHN0cmVhbV9wcm9wZXJ0aWVzXy5yZXNldChuZXcgU3RyZWFtUHJvcGVy
dGllcygKICAgICAgIHNhbXBsZV9yYXRlX2h6LCBudW1fcmV2ZXJzZV9jaGFubmVscywgbnVtX291
dHB1dF9jaGFubmVscykpOwogCkBAIC0zNjMsMTYgKzI3MiwxMiBAQCB2b2lkIEVjaG9Db250cm9s
TW9iaWxlSW1wbDo6SW5pdGlhbGl6ZShpbnQgc2FtcGxlX3JhdGVfaHosCiAgICAgaWYgKCFjYW5j
ZWxsZXIpIHsKICAgICAgIGNhbmNlbGxlci5yZXNldChuZXcgQ2FuY2VsbGVyKCkpOwogICAgIH0K
LSAgICBjYW5jZWxsZXItPkluaXRpYWxpemUoc2FtcGxlX3JhdGVfaHosIGV4dGVybmFsX2VjaG9f
cGF0aF8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG9fcGF0aF9zaXplX2J5dGVzKCkp
OworICAgIGNhbmNlbGxlci0+SW5pdGlhbGl6ZShzYW1wbGVfcmF0ZV9oeik7CiAgIH0KLQogICBD
b25maWd1cmUoKTsKIH0KIAogaW50IEVjaG9Db250cm9sTW9iaWxlSW1wbDo6Q29uZmlndXJlKCkg
ewotICBydGM6OkNyaXRTY29wZSBjc19yZW5kZXIoY3JpdF9yZW5kZXJfKTsKLSAgcnRjOjpDcml0
U2NvcGUgY3NfY2FwdHVyZShjcml0X2NhcHR1cmVfKTsKICAgQWVjbUNvbmZpZyBjb25maWc7CiAg
IGNvbmZpZy5jbmdNb2RlID0gY29tZm9ydF9ub2lzZV9lbmFibGVkXzsKICAgY29uZmlnLmVjaG9N
b2RlID0gTWFwU2V0dGluZyhyb3V0aW5nX21vZGVfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9l
Y2hvX2NvbnRyb2xfbW9iaWxlX2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NvbnRyb2xfbW9iaWxl
X2ltcGwuaAppbmRleCBhNWI2NmM4MzExYjgwNDQ3YTkxZDU1N2E3NDlmZmU3MDI3MjdhYmJiLi5k
NWE4YjBiNDQ1MTU1ZTY1NWU0MmIzNzAyZjFmMzc1MjNmN2EyZjBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvZWNob19jb250cm9sX21vYmlsZV9pbXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29u
dHJvbF9tb2JpbGVfaW1wbC5oCkBAIC0xMSwxNCArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0VDSE9fQ09OVFJPTF9NT0JJTEVfSU1QTF9IXwogI2RlZmluZSBNT0RV
TEVTX0FVRElPX1BST0NFU1NJTkdfRUNIT19DT05UUk9MX01PQklMRV9JTVBMX0hfCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2lu
Y2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9yZW5kZXJfcXVldWVfaXRlbV92ZXJpZmllci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Nv
bnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9zd2FwX3F1ZXVlLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3Zp
ZXcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTI4LDggKzI2LDcgQEAgY2xhc3MgQXVk
aW9CdWZmZXI7CiAvLyByb2J1c3Qgb3B0aW9uIGludGVuZGVkIGZvciB1c2Ugb24gbW9iaWxlIGRl
dmljZXMuCiBjbGFzcyBFY2hvQ29udHJvbE1vYmlsZUltcGwgewogIHB1YmxpYzoKLSAgRWNob0Nv
bnRyb2xNb2JpbGVJbXBsKHJ0Yzo6Q3JpdGljYWxTZWN0aW9uKiBjcml0X3JlbmRlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uKiBjcml0X2NhcHR1cmUpOwor
ICBFY2hvQ29udHJvbE1vYmlsZUltcGwoKTsKIAogICB+RWNob0NvbnRyb2xNb2JpbGVJbXBsKCk7
CiAKQEAgLTU3LDI2ICs1NCw2IEBAIGNsYXNzIEVjaG9Db250cm9sTW9iaWxlSW1wbCB7CiAgIGlu
dCBlbmFibGVfY29tZm9ydF9ub2lzZShib29sIGVuYWJsZSk7CiAgIGJvb2wgaXNfY29tZm9ydF9u
b2lzZV9lbmFibGVkKCkgY29uc3Q7CiAKLSAgLy8gQSB0eXBpY2FsIHVzZSBjYXNlIGlzIHRvIGlu
aXRpYWxpemUgdGhlIGNvbXBvbmVudCB3aXRoIGFuIGVjaG8gcGF0aCBmcm9tIGEKLSAgLy8gcHJl
dmlvdXMgY2FsbC4gVGhlIGVjaG8gcGF0aCBpcyByZXRyaWV2ZWQgdXNpbmcgfEdldEVjaG9QYXRo
KCl8LCB0eXBpY2FsbHkKLSAgLy8gYXQgdGhlIGVuZCBvZiBhIGNhbGwuIFRoZSBkYXRhIGNhbiB0
aGVuIGJlIHN0b3JlZCBmb3IgbGF0ZXIgdXNlIGFzIGFuCi0gIC8vIGluaXRpYWxpemVyIGJlZm9y
ZSB0aGUgbmV4dCBjYWxsLCB1c2luZyB8U2V0RWNob1BhdGgoKXwuCi0gIC8vCi0gIC8vIENvbnRy
b2xsaW5nIHRoZSBlY2hvIHBhdGggdGhpcyB3YXkgcmVxdWlyZXMgdGhlIGRhdGEgfHNpemVfYnl0
ZXN8IHRvIG1hdGNoCi0gIC8vIHRoZSBpbnRlcm5hbCBlY2hvIHBhdGggc2l6ZS4gVGhpcyBzaXpl
IGNhbiBiZSBhY3F1aXJlZCB1c2luZwotICAvLyB8ZWNob19wYXRoX3NpemVfYnl0ZXMoKXwuIHxT
ZXRFY2hvUGF0aCgpfCBjYXVzZXMgYW4gZW50aXJlIHJlc2V0LCB3b3J0aAotICAvLyBub3Rpbmcg
aWYgaXQgaXMgdG8gYmUgY2FsbGVkIGR1cmluZyBhbiBvbmdvaW5nIGNhbGwuCi0gIC8vCi0gIC8v
IEl0IGlzIHBvc3NpYmxlIHRoYXQgdmVyc2lvbiBpbmNvbXBhdGliaWxpdGllcyBtYXkgcmVzdWx0
IGluIGEgc3RvcmVkIGVjaG8KLSAgLy8gcGF0aCBvZiB0aGUgaW5jb3JyZWN0IHNpemUuIEluIHRo
aXMgY2FzZSwgdGhlIHN0b3JlZCBwYXRoIHNob3VsZCBiZQotICAvLyBkaXNjYXJkZWQuCi0gIGlu
dCBTZXRFY2hvUGF0aChjb25zdCB2b2lkKiBlY2hvX3BhdGgsIHNpemVfdCBzaXplX2J5dGVzKTsK
LSAgaW50IEdldEVjaG9QYXRoKHZvaWQqIGVjaG9fcGF0aCwgc2l6ZV90IHNpemVfYnl0ZXMpIGNv
bnN0OwotCi0gIC8vIFRoZSByZXR1cm5lZCBwYXRoIHNpemUgaXMgZ3VhcmFudGVlZCBub3QgdG8g
Y2hhbmdlIGZvciB0aGUgbGlmZXRpbWUgb2YKLSAgLy8gdGhlIGFwcGxpY2F0aW9uLgotICBzdGF0
aWMgc2l6ZV90IGVjaG9fcGF0aF9zaXplX2J5dGVzKCk7Ci0KICAgdm9pZCBQcm9jZXNzUmVuZGVy
QXVkaW8ocnRjOjpBcnJheVZpZXc8Y29uc3QgaW50MTZfdD4gcGFja2VkX3JlbmRlcl9hdWRpbyk7
CiAgIGludCBQcm9jZXNzQ2FwdHVyZUF1ZGlvKEF1ZGlvQnVmZmVyKiBhdWRpbywgaW50IHN0cmVh
bV9kZWxheV9tcyk7CiAKQEAgLTk4LDIwICs3NSwxMyBAQCBjbGFzcyBFY2hvQ29udHJvbE1vYmls
ZUltcGwgewogCiAgIGludCBDb25maWd1cmUoKTsKIAotICBydGM6OkNyaXRpY2FsU2VjdGlvbiog
Y29uc3QgY3JpdF9yZW5kZXJfIFJUQ19BQ1FVSVJFRF9CRUZPUkUoY3JpdF9jYXB0dXJlXyk7Ci0g
IHJ0Yzo6Q3JpdGljYWxTZWN0aW9uKiBjb25zdCBjcml0X2NhcHR1cmVfOwotCiAgIGJvb2wgZW5h
YmxlZF8gPSBmYWxzZTsKIAotICBSb3V0aW5nTW9kZSByb3V0aW5nX21vZGVfIFJUQ19HVUFSREVE
X0JZKGNyaXRfY2FwdHVyZV8pOwotICBib29sIGNvbWZvcnRfbm9pc2VfZW5hYmxlZF8gUlRDX0dV
QVJERURfQlkoY3JpdF9jYXB0dXJlXyk7Ci0gIHVuc2lnbmVkIGNoYXIqIGV4dGVybmFsX2VjaG9f
cGF0aF8gUlRDX0dVQVJERURfQlkoY3JpdF9yZW5kZXJfKQotICAgICAgUlRDX0dVQVJERURfQlko
Y3JpdF9jYXB0dXJlXyk7CisgIFJvdXRpbmdNb2RlIHJvdXRpbmdfbW9kZV87CisgIGJvb2wgY29t
Zm9ydF9ub2lzZV9lbmFibGVkXzsKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2Fu
Y2VsbGVyPj4gY2FuY2VsbGVyc187CiAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJlYW1Qcm9wZXJ0aWVz
PiBzdHJlYW1fcHJvcGVydGllc187Ci0KLSAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVD
VE9SUyhFY2hvQ29udHJvbE1vYmlsZUltcGwpOwogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV91bml0dGVzdC5jYwppbmRleCBkN2U0NzBj
YTEyMGY5Y2FkZGE3ZmViODFhMjFmZTQ5NTcwOTA1MzEyLi5mMGU2MDQ4M2Q0MTFhM2U0ZTQzYjVl
NWI4OGFhNzYxNmFiNDM4Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21v
YmlsZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV91bml0
dGVzdC5jYwpAQCAtMTgsOSArMTgsNyBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIFRFU1QoRWNo
b0NvbnRyb2xNb2JpbGVUZXN0LCBJbnRlcmZhY2VDb25maWd1cmF0aW9uKSB7Ci0gIHJ0Yzo6Q3Jp
dGljYWxTZWN0aW9uIGNyaXRfcmVuZGVyOwotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X2Nh
cHR1cmU7Ci0gIEVjaG9Db250cm9sTW9iaWxlSW1wbCBhZWNtKCZjcml0X3JlbmRlciwgJmNyaXRf
Y2FwdHVyZSk7CisgIEVjaG9Db250cm9sTW9iaWxlSW1wbCBhZWNtOwogICBhZWNtLkluaXRpYWxp
emUoQXVkaW9Qcm9jZXNzaW5nOjprU2FtcGxlUmF0ZTE2a0h6LCAyLCAyKTsKIAogICAvLyBUdXJu
IEFFQ00gb24KQEAgLTQ2LDI4ICs0NCw2IEBAIFRFU1QoRWNob0NvbnRyb2xNb2JpbGVUZXN0LCBJ
bnRlcmZhY2VDb25maWd1cmF0aW9uKSB7CiAgIEVYUEVDVF9FUSgwLCBhZWNtLmVuYWJsZV9jb21m
b3J0X25vaXNlKHRydWUpKTsKICAgRVhQRUNUX1RSVUUoYWVjbS5pc19jb21mb3J0X25vaXNlX2Vu
YWJsZWQoKSk7CiAKLSAgLy8gU2V0IGFuZCBnZXQgZWNobyBwYXRoCi0gIGNvbnN0IHNpemVfdCBl
Y2hvX3BhdGhfc2l6ZSA9IGFlY20uZWNob19wYXRoX3NpemVfYnl0ZXMoKTsKLSAgc3RkOjp2ZWN0
b3I8dWludDhfdD4gZWNob19wYXRoX2luKGVjaG9fcGF0aF9zaXplKTsKLSAgc3RkOjp2ZWN0b3I8
dWludDhfdD4gZWNob19wYXRoX291dChlY2hvX3BhdGhfc2l6ZSk7Ci0gIEVYUEVDVF9FUShBdWRp
b1Byb2Nlc3Npbmc6OmtOdWxsUG9pbnRlckVycm9yLAotICAgICAgICAgICAgYWVjbS5TZXRFY2hv
UGF0aChudWxscHRyLCBlY2hvX3BhdGhfc2l6ZSkpOwotICBFWFBFQ1RfRVEoQXVkaW9Qcm9jZXNz
aW5nOjprTnVsbFBvaW50ZXJFcnJvciwKLSAgICAgICAgICAgIGFlY20uR2V0RWNob1BhdGgobnVs
bHB0ciwgZWNob19wYXRoX3NpemUpKTsKLSAgRVhQRUNUX0VRKEF1ZGlvUHJvY2Vzc2luZzo6a0Jh
ZFBhcmFtZXRlckVycm9yLAotICAgICAgICAgICAgYWVjbS5HZXRFY2hvUGF0aChlY2hvX3BhdGhf
b3V0LmRhdGEoKSwgMSkpOwotICBFWFBFQ1RfRVEoMCwgYWVjbS5HZXRFY2hvUGF0aChlY2hvX3Bh
dGhfb3V0LmRhdGEoKSwgZWNob19wYXRoX3NpemUpKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBlY2hvX3BhdGhfc2l6ZTsgaSsrKSB7Ci0gICAgZWNob19wYXRoX2luW2ldID0gZWNob19wYXRo
X291dFtpXSArIDE7Ci0gIH0KLSAgRVhQRUNUX0VRKEF1ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFt
ZXRlckVycm9yLAotICAgICAgICAgICAgYWVjbS5TZXRFY2hvUGF0aChlY2hvX3BhdGhfaW4uZGF0
YSgpLCAxKSk7Ci0gIEVYUEVDVF9FUSgwLCBhZWNtLlNldEVjaG9QYXRoKGVjaG9fcGF0aF9pbi5k
YXRhKCksIGVjaG9fcGF0aF9zaXplKSk7Ci0gIEVYUEVDVF9FUSgwLCBhZWNtLkdldEVjaG9QYXRo
KGVjaG9fcGF0aF9vdXQuZGF0YSgpLCBlY2hvX3BhdGhfc2l6ZSkpOwotICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGVjaG9fcGF0aF9zaXplOyBpKyspIHsKLSAgICBFWFBFQ1RfRVEoZWNob19wYXRo
X2luW2ldLCBlY2hvX3BhdGhfb3V0W2ldKTsKLSAgfQotCiAgIC8vIFR1cm4gQUVDTSBvZmYKICAg
RVhQRUNUX0VRKDAsIGFlY20uRW5hYmxlKGZhbHNlKSk7CiAgIEVYUEVDVF9GQUxTRShhZWNtLmlz
X2VuYWJsZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19kZXRlY3Rvci9jaXJjdWxh
cl9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2RldGVjdG9yL2NpcmN1bGFyX2J1ZmZlci5oCmlu
ZGV4IDlmNWNkZmE5NTM2NDM1OWQ2ZDNhZTNkNTZmNjU5MGUxNDM0YjQ1NDguLmM1MjMxMWY4NjNi
NDhiNjI3OGZmMzMwZjE4M2FkZjVkMmRiYmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hv
X2RldGVjdG9yL2NpcmN1bGFyX2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2RldGVjdG9y
L2NpcmN1bGFyX2J1ZmZlci5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19FQ0hPX0RFVEVDVE9SX0NJUkNVTEFSX0JVRkZFUl9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfRUNIT19ERVRFQ1RPUl9DSVJDVUxBUl9CVUZGRVJfSF8K
IAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFi
c2wvdHlwZXMvb3B0aW9uYWwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xf
Zm9yX2V4cGVyaW1lbnRhbF9hZ2MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2Zvcl9leHBl
cmltZW50YWxfYWdjLmNjCmluZGV4IDRhYjg1NmMyYzMzZTU3MDk0MGZhZWI5OGMwZjdmMzg4ZDM1
OTg0MGUuLjE0NzlkNThiNTQzMGM5OGJhNzA3ZGMyNjNhMmYyY2Q5YjhiZDExNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xfZm9yX2V4cGVyaW1lbnRhbF9hZ2MuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2dhaW5fY29udHJvbF9mb3JfZXhwZXJpbWVudGFsX2FnYy5jYwpAQCAtMTMsNyAr
MTMsNiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlv
X3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2lu
Zy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNl
Y3Rpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fp
bl9jb250cm9sX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2ltcGwuY2MKaW5kZXgg
Njg1YTI3ZmY2NjgxMjA5YWIyYTRiODQyYmM3MTJlMmI0OTRkYmI5MC4uZDUxMThiYTA3M2Q5OTQw
Y2ZjYmFiMzUzYzg4Y2VmZWM3MmFkNjg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29u
dHJvbF9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xfaW1wbC5jYwpAQCAtMTAs
MTAgKzEwLDE0IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9j
b250cm9sX2ltcGwuaCIKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisKICNpbmNsdWRlICJhYnNsL3R5
cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9s
ZWdhY3kvZ2Fpbl9jb250cm9sLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2F1ZGlvX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNs
dWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9pbXBsLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvZ2Fpbl9jb250cm9sX2ltcGwuaAppbmRleCA5NTk0MjJmYjQ0YzIwZWExMzkzNzgxNTdk
NmExMjFhYzMwYTY3YjZlLi5jMjFkOTExMzI2MmQ0NzViODNkNTdjYjI5NmUyMjVlOWFmZDc3NDdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2ltcGwuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvZ2Fpbl9jb250cm9sX2ltcGwuaApAQCAtMTEsMTQgKzExLDE2IEBACiAjaWZuZGVmIE1PRFVM
RVNfQVVESU9fUFJPQ0VTU0lOR19HQUlOX0NPTlRST0xfSU1QTF9IXwogI2RlZmluZSBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfR0FJTl9DT05UUk9MX0lNUExfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2
ZWN0b3I+CiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRp
b19wcm9jZXNzaW5nLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3JlbmRl
cl9xdWV1ZV9pdGVtX3ZlcmlmaWVyLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2luY2x1ZGUvZ2Fpbl9jb250cm9sLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29u
c3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL3N3YXBfcXVldWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyLmNj
CmluZGV4IDI5YWY5NjJlNzQ1ZmI1MDYzMTcyMjI0MWI5ZDk0OTI5OWM3ZjFlN2QuLjJhMzI3NDQ5
ZGYyZTE2NDI4MmJkMDZjMjhkM2NlOTgxMmRmNzYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9n
YWluX2NvbnRyb2xsZXIyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyLmNjCkBA
IC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fp
bl9jb250cm9sbGVyMi5oIgogCisjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9f
dXRpbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19mcmFt
ZV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBt
X2RhdGFfZHVtcGVyLmgiCkBAIC0yNCw4ICsyNSwxMCBAQCBpbnQgR2FpbkNvbnRyb2xsZXIyOjpp
bnN0YW5jZV9jb3VudF8gPSAwOwogR2FpbkNvbnRyb2xsZXIyOjpHYWluQ29udHJvbGxlcjIoKQog
ICAgIDogZGF0YV9kdW1wZXJfKAogICAgICAgICAgIG5ldyBBcG1EYXRhRHVtcGVyKHJ0Yzo6QXRv
bWljT3BzOjpJbmNyZW1lbnQoJmluc3RhbmNlX2NvdW50XykpKSwKLSAgICAgIGZpeGVkX2dhaW5f
Y29udHJvbGxlcl8oZGF0YV9kdW1wZXJfLmdldCgpKSwKLSAgICAgIGFkYXB0aXZlX2FnY18oZGF0
YV9kdW1wZXJfLmdldCgpKSB7fQorICAgICAgZ2Fpbl9hcHBsaWVyXygvKmhhcmRfY2xpcF9zYW1w
bGVzPSovZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIC8qaW5pdGlhbF9nYWluX2ZhY3Rvcj0q
LzAuZiksCisgICAgICBhZGFwdGl2ZV9hZ2NfKG5ldyBBZGFwdGl2ZUFnYyhkYXRhX2R1bXBlcl8u
Z2V0KCkpKSwKKyAgICAgIGxpbWl0ZXJfKHN0YXRpY19jYXN0PHNpemVfdD4oNDgwMDApLCBkYXRh
X2R1bXBlcl8uZ2V0KCksICJBZ2MyIikge30KIAogR2FpbkNvbnRyb2xsZXIyOjp+R2FpbkNvbnRy
b2xsZXIyKCkgPSBkZWZhdWx0OwogCkBAIC0zNCw3ICszNyw3IEBAIHZvaWQgR2FpbkNvbnRyb2xs
ZXIyOjpJbml0aWFsaXplKGludCBzYW1wbGVfcmF0ZV9oeikgewogICAgICAgICAgICAgIHNhbXBs
ZV9yYXRlX2h6ID09IEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGUxNmtIeiB8fAogICAgICAg
ICAgICAgIHNhbXBsZV9yYXRlX2h6ID09IEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGUzMmtI
eiB8fAogICAgICAgICAgICAgIHNhbXBsZV9yYXRlX2h6ID09IEF1ZGlvUHJvY2Vzc2luZzo6a1Nh
bXBsZVJhdGU0OGtIeik7Ci0gIGZpeGVkX2dhaW5fY29udHJvbGxlcl8uU2V0U2FtcGxlUmF0ZShz
YW1wbGVfcmF0ZV9oeik7CisgIGxpbWl0ZXJfLlNldFNhbXBsZVJhdGUoc2FtcGxlX3JhdGVfaHop
OwogICBkYXRhX2R1bXBlcl8tPkluaXRpYXRlTmV3U2V0T2ZSZWNvcmRpbmdzKCk7CiAgIGRhdGFf
ZHVtcGVyXy0+RHVtcFJhdygic2FtcGxlX3JhdGVfaHoiLCBzYW1wbGVfcmF0ZV9oeik7CiB9CkBA
IC00MiwzNyArNDUsNzEgQEAgdm9pZCBHYWluQ29udHJvbGxlcjI6OkluaXRpYWxpemUoaW50IHNh
bXBsZV9yYXRlX2h6KSB7CiB2b2lkIEdhaW5Db250cm9sbGVyMjo6UHJvY2VzcyhBdWRpb0J1ZmZl
ciogYXVkaW8pIHsKICAgQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IGZsb2F0X2ZyYW1lKGF1ZGlvLT5j
aGFubmVsc19mKCksIGF1ZGlvLT5udW1fY2hhbm5lbHMoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1ZGlvLT5udW1fZnJhbWVzKCkpOwotICBpZiAoYWRhcHRpdmVfZGln
aXRhbF9tb2RlXykgewotICAgIGFkYXB0aXZlX2FnY18uUHJvY2VzcyhmbG9hdF9mcmFtZSwgZml4
ZWRfZ2Fpbl9jb250cm9sbGVyXy5MYXN0QXVkaW9MZXZlbCgpKTsKKyAgLy8gQXBwbHkgZml4ZWQg
Z2FpbiBmaXJzdCwgdGhlbiB0aGUgYWRhcHRpdmUgb25lLgorICBnYWluX2FwcGxpZXJfLkFwcGx5
R2FpbihmbG9hdF9mcmFtZSk7CisgIGlmIChjb25maWdfLmFkYXB0aXZlX2RpZ2l0YWwuZW5hYmxl
ZCkgeworICAgIGFkYXB0aXZlX2FnY18tPlByb2Nlc3MoZmxvYXRfZnJhbWUsIGxpbWl0ZXJfLkxh
c3RBdWRpb0xldmVsKCkpOwogICB9Ci0gIGZpeGVkX2dhaW5fY29udHJvbGxlcl8uUHJvY2Vzcyhm
bG9hdF9mcmFtZSk7CisgIGxpbWl0ZXJfLlByb2Nlc3MoZmxvYXRfZnJhbWUpOwogfQogCiB2b2lk
IEdhaW5Db250cm9sbGVyMjo6Tm90aWZ5QW5hbG9nTGV2ZWwoaW50IGxldmVsKSB7Ci0gIGlmIChh
bmFsb2dfbGV2ZWxfICE9IGxldmVsICYmIGFkYXB0aXZlX2RpZ2l0YWxfbW9kZV8pIHsKLSAgICBh
ZGFwdGl2ZV9hZ2NfLlJlc2V0KCk7CisgIGlmIChhbmFsb2dfbGV2ZWxfICE9IGxldmVsICYmIGNv
bmZpZ18uYWRhcHRpdmVfZGlnaXRhbC5lbmFibGVkKSB7CisgICAgYWRhcHRpdmVfYWdjXy0+UmVz
ZXQoKTsKICAgfQogICBhbmFsb2dfbGV2ZWxfID0gbGV2ZWw7CiB9CiAKIHZvaWQgR2FpbkNvbnRy
b2xsZXIyOjpBcHBseUNvbmZpZygKICAgICBjb25zdCBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6
R2FpbkNvbnRyb2xsZXIyJiBjb25maWcpIHsKLSAgUlRDX0RDSEVDSyhWYWxpZGF0ZShjb25maWcp
KTsKKyAgUlRDX0RDSEVDSyhWYWxpZGF0ZShjb25maWcpKQorICAgICAgPDwgIiB0aGUgaW52YWxp
ZCBjb25maWcgd2FzICIgPDwgVG9TdHJpbmcoY29uZmlnKTsKKwogICBjb25maWdfID0gY29uZmln
OwotICBmaXhlZF9nYWluX2NvbnRyb2xsZXJfLlNldEdhaW4oY29uZmlnXy5maXhlZF9nYWluX2Ri
KTsKLSAgYWRhcHRpdmVfZGlnaXRhbF9tb2RlXyA9IGNvbmZpZ18uYWRhcHRpdmVfZGlnaXRhbF9t
b2RlOworICBpZiAoY29uZmlnLmZpeGVkX2RpZ2l0YWwuZ2Fpbl9kYiAhPSBjb25maWdfLmZpeGVk
X2RpZ2l0YWwuZ2Fpbl9kYikgeworICAgIC8vIFJlc2V0IHRoZSBsaW1pdGVyIHRvIHF1aWNrbHkg
cmVhY3Qgb24gYWJydXB0IGxldmVsIGNoYW5nZXMgY2F1c2VkIGJ5CisgICAgLy8gbGFyZ2UgY2hh
bmdlcyBvZiB0aGUgZml4ZWQgZ2Fpbi4KKyAgICBsaW1pdGVyXy5SZXNldCgpOworICB9CisgIGdh
aW5fYXBwbGllcl8uU2V0R2FpbkZhY3RvcihEYlRvUmF0aW8oY29uZmlnXy5maXhlZF9kaWdpdGFs
LmdhaW5fZGIpKTsKKyAgYWRhcHRpdmVfYWdjXy5yZXNldChuZXcgQWRhcHRpdmVBZ2MoZGF0YV9k
dW1wZXJfLmdldCgpLCBjb25maWdfKSk7CiB9CiAKIGJvb2wgR2FpbkNvbnRyb2xsZXIyOjpWYWxp
ZGF0ZSgKICAgICBjb25zdCBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIy
JiBjb25maWcpIHsKLSAgcmV0dXJuIGNvbmZpZy5maXhlZF9nYWluX2RiID49IDAuZjsKKyAgcmV0
dXJuIGNvbmZpZy5maXhlZF9kaWdpdGFsLmdhaW5fZGIgPj0gMC5mICYmCisgICAgICAgICBjb25m
aWcuZml4ZWRfZGlnaXRhbC5nYWluX2RiIDwgNTAuZiAmJgorICAgICAgICAgY29uZmlnLmFkYXB0
aXZlX2RpZ2l0YWwuZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGIgPj0gMC5mICYmCisgICAgICAg
ICBjb25maWcuYWRhcHRpdmVfZGlnaXRhbC5leHRyYV9zYXR1cmF0aW9uX21hcmdpbl9kYiA8PSAx
MDAuZjsKIH0KIAogc3RkOjpzdHJpbmcgR2FpbkNvbnRyb2xsZXIyOjpUb1N0cmluZygKICAgICBj
b25zdCBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIyJiBjb25maWcpIHsK
ICAgcnRjOjpTdHJpbmdCdWlsZGVyIHNzOwotICBzcyA8PCAie2VuYWJsZWQ6ICIgPDwgKGNvbmZp
Zy5lbmFibGVkID8gInRydWUiIDogImZhbHNlIikgPDwgIiwgIgotICAgICA8PCAiZml4ZWRfZ2Fp
bl9kQjogIiA8PCBjb25maWcuZml4ZWRfZ2Fpbl9kYiA8PCAifSI7CisgIHN0ZDo6c3RyaW5nIGFk
YXB0aXZlX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yOworICB1c2luZyBMZXZlbEVzdGltYXRvclR5
cGUgPQorICAgICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMjo6TGV2
ZWxFc3RpbWF0b3I7CisgIHN3aXRjaCAoY29uZmlnLmFkYXB0aXZlX2RpZ2l0YWwubGV2ZWxfZXN0
aW1hdG9yKSB7CisgICAgY2FzZSBMZXZlbEVzdGltYXRvclR5cGU6OmtSbXM6CisgICAgICBhZGFw
dGl2ZV9kaWdpdGFsX2xldmVsX2VzdGltYXRvciA9ICJSTVMiOworICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMZXZlbEVzdGltYXRvclR5cGU6OmtQZWFrOgorICAgICAgYWRhcHRpdmVfZGlnaXRhbF9s
ZXZlbF9lc3RpbWF0b3IgPSAicGVhayI7CisgICAgICBicmVhazsKKyAgfQorICAvLyBjbGFuZy1m
b3JtYXQgb2ZmCisgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGN1c3RvbSBu
ZXN0ZWQgc3R5bGUuCisgIHNzIDw8ICJ7IgorICAgICA8PCAiZW5hYmxlZDogIiA8PCAoY29uZmln
LmVuYWJsZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKSA8PCAiLCAiCisgICAgIDw8ICJmaXhlZF9kaWdp
dGFsOiB7Z2Fpbl9kYjogIiA8PCBjb25maWcuZml4ZWRfZGlnaXRhbC5nYWluX2RiIDw8ICJ9LCAi
CisgICAgIDw8ICJhZGFwdGl2ZV9kaWdpdGFsOiB7IgorICAgICAgPDwgImVuYWJsZWQ6ICIKKyAg
ICAgICAgPDwgKGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFsLmVuYWJsZWQgPyAidHJ1ZSIgOiAiZmFs
c2UiKSA8PCAiLCAiCisgICAgICA8PCAibGV2ZWxfZXN0aW1hdG9yOiAiIDw8IGFkYXB0aXZlX2Rp
Z2l0YWxfbGV2ZWxfZXN0aW1hdG9yIDw8ICIsICIKKyAgICAgIDw8ICJleHRyYV9zYXR1cmF0aW9u
X21hcmdpbl9kYjoiCisgICAgICAgIDw8IGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFsLmV4dHJhX3Nh
dHVyYXRpb25fbWFyZ2luX2RiIDw8ICJ9IgorICAgICAgPDwgIn0iOworICAvLyBjbGFuZy1mb3Jt
YXQgb24KICAgcmV0dXJuIHNzLlJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2dhaW5fY29udHJvbGxlcjIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyLmgKaW5kZXgg
YjQ3MjdkMGU3Nzc2OTVlNzBmZDI0ZDQ5Y2ViN2FkOGZhNzk3OWE5Yy4uM2ExMTgxMGJiNTlkOTUz
OTU2NmQ4Yzc1ZTEzMDAwZTA5ODExYzhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29u
dHJvbGxlcjIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5oCkBAIC0xNSw3ICsx
NSw4IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvYWRhcHRpdmVfYWdjLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvZ2Fpbl9hcHBsaWVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKQEAgLTQzLDExICs0NCwxMSBAQCBjbGFzcyBHYWluQ29u
dHJvbGxlcjIgewogIHByaXZhdGU6CiAgIHN0YXRpYyBpbnQgaW5zdGFuY2VfY291bnRfOwogICBz
dGQ6OnVuaXF1ZV9wdHI8QXBtRGF0YUR1bXBlcj4gZGF0YV9kdW1wZXJfOwotICBGaXhlZEdhaW5D
b250cm9sbGVyIGZpeGVkX2dhaW5fY29udHJvbGxlcl87CiAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29u
ZmlnOjpHYWluQ29udHJvbGxlcjIgY29uZmlnXzsKLSAgQWRhcHRpdmVBZ2MgYWRhcHRpdmVfYWdj
XzsKKyAgR2FpbkFwcGxpZXIgZ2Fpbl9hcHBsaWVyXzsKKyAgc3RkOjp1bmlxdWVfcHRyPEFkYXB0
aXZlQWdjPiBhZGFwdGl2ZV9hZ2NfOworICBMaW1pdGVyIGxpbWl0ZXJfOwogICBpbnQgYW5hbG9n
X2xldmVsXyA9IC0xOwotICBib29sIGFkYXB0aXZlX2RpZ2l0YWxfbW9kZV8gPSB0cnVlOwogCiAg
IFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oR2FpbkNvbnRyb2xsZXIyKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9nYWluX2NvbnRyb2xsZXIyX3VuaXR0ZXN0LmNjCmluZGV4IDViZWRjY2Q2NGE4YmVhNzZjY2E3
OWEzNjYzYWM1MDk4MGZkYWY1YzQuLjI3ZDU0MGExOTg4ZTllODk2OWZjZGIwOGM3NWVhMDJiZmNl
NGZkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyX3VuaXR0ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyX3VuaXR0ZXN0LmNjCkBAIC0xMCwyMCAr
MTAsMjAgQEAKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAorI2luY2x1ZGUgImFic2wvbWVtb3J5
L21lbW9yeS5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl90ZXN0aW5nX2NvbW1vbi5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2F1ZGlvX2J1ZmZlcl90b29scy5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2JpdGV4YWN0bmVzc190b29scy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7Ci0KIG5hbWVzcGFjZSB7CiAKLWNvbnN0
ZXhwciBzaXplX3Qga0ZyYW1lU2l6ZU1zID0gMTB1OwotY29uc3RleHByIHNpemVfdCBrU3RlcmVv
ID0gMnU7Ci0KIHZvaWQgU2V0QXVkaW9CdWZmZXJTYW1wbGVzKGZsb2F0IHZhbHVlLCBBdWRpb0J1
ZmZlciogYWIpIHsKICAgLy8gU2V0cyBhbGwgdGhlIHNhbXBsZXMgaW4gfGFifCB0byB8dmFsdWV8
LgogICBmb3IgKHNpemVfdCBrID0gMDsgayA8IGFiLT5udW1fY2hhbm5lbHMoKTsgKytrKSB7CkBA
IC0zMiw2ICszMiw3NSBAQCB2b2lkIFNldEF1ZGlvQnVmZmVyU2FtcGxlcyhmbG9hdCB2YWx1ZSwg
QXVkaW9CdWZmZXIqIGFiKSB7CiAgIH0KIH0KIAorZmxvYXQgUnVuQWdjMldpdGhDb25zdGFudElu
cHV0KEdhaW5Db250cm9sbGVyMiogYWdjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBpbnB1dF9sZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbnVtX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxl
X3JhdGUpIHsKKyAgY29uc3QgaW50IG51bV9zYW1wbGVzID0gcnRjOjpDaGVja2VkRGl2RXhhY3Qo
c2FtcGxlX3JhdGUsIDEwMCk7CisgIEF1ZGlvQnVmZmVyIGFiKG51bV9zYW1wbGVzLCAxLCBudW1f
c2FtcGxlcywgMSwgbnVtX3NhbXBsZXMpOworCisgIC8vIEdpdmUgdGltZSB0byB0aGUgbGV2ZWwg
ZXN0aW1hdG9yIHRvIGNvbnZlcmdlLgorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9mcmFt
ZXMgKyAxOyArK2kpIHsKKyAgICBTZXRBdWRpb0J1ZmZlclNhbXBsZXMoaW5wdXRfbGV2ZWwsICZh
Yik7CisgICAgYWdjMi0+UHJvY2VzcygmYWIpOworICB9CisKKyAgLy8gUmV0dXJuIHRoZSBsYXN0
IHNhbXBsZSBmcm9tIHRoZSBsYXN0IHByb2Nlc3NlZCBmcmFtZS4KKyAgcmV0dXJuIGFiLmNoYW5u
ZWxzX2YoKVswXVtudW1fc2FtcGxlcyAtIDFdOworfQorCitBdWRpb1Byb2Nlc3Npbmc6OkNvbmZp
Zzo6R2FpbkNvbnRyb2xsZXIyIENyZWF0ZUFnYzJGaXhlZERpZ2l0YWxNb2RlQ29uZmlnKAorICAg
IGZsb2F0IGZpeGVkX2dhaW5fZGIpIHsKKyAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5D
b250cm9sbGVyMiBjb25maWc7CisgIGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFsLmVuYWJsZWQgPSBm
YWxzZTsKKyAgY29uZmlnLmZpeGVkX2RpZ2l0YWwuZ2Fpbl9kYiA9IGZpeGVkX2dhaW5fZGI7Cisg
IC8vIFRPRE8oYWxlc3Npb2IpOiBDaGVjayB3aHkgQVNTRVJUX1RSVUUoKSBiZWxvdyBkb2VzIG5v
dCBjb21waWxlLgorICBFWFBFQ1RfVFJVRShHYWluQ29udHJvbGxlcjI6OlZhbGlkYXRlKGNvbmZp
ZykpOworICByZXR1cm4gY29uZmlnOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8R2FpbkNvbnRyb2xs
ZXIyPiBDcmVhdGVBZ2MyRml4ZWREaWdpdGFsTW9kZSgKKyAgICBmbG9hdCBmaXhlZF9nYWluX2Ri
LAorICAgIHNpemVfdCBzYW1wbGVfcmF0ZV9oeikgeworICBhdXRvIGFnYzIgPSBhYnNsOjptYWtl
X3VuaXF1ZTxHYWluQ29udHJvbGxlcjI+KCk7CisgIGFnYzItPkFwcGx5Q29uZmlnKENyZWF0ZUFn
YzJGaXhlZERpZ2l0YWxNb2RlQ29uZmlnKGZpeGVkX2dhaW5fZGIpKTsKKyAgYWdjMi0+SW5pdGlh
bGl6ZShzYW1wbGVfcmF0ZV9oeik7CisgIHJldHVybiBhZ2MyOworfQorCitmbG9hdCBHYWluQWZ0
ZXJQcm9jZXNzaW5nRmlsZShHYWluQ29udHJvbGxlcjIqIGdhaW5fY29udHJvbGxlcikgeworICAv
LyBTZXQgdXAgYW4gQXVkaW9CdWZmZXIgdG8gYmUgZmlsbGVkIGZyb20gdGhlIHNwZWVjaCBmaWxl
LgorICBjb25zdGV4cHIgc2l6ZV90IGtTdGVyZW8gPSAydTsKKyAgY29uc3QgU3RyZWFtQ29uZmln
IGNhcHR1cmVfY29uZmlnKEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGU0OGtIeiwga1N0ZXJl
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgQXVkaW9C
dWZmZXIgYWIoY2FwdHVyZV9jb25maWcubnVtX2ZyYW1lcygpLCBjYXB0dXJlX2NvbmZpZy5udW1f
Y2hhbm5lbHMoKSwKKyAgICAgICAgICAgICAgICAgY2FwdHVyZV9jb25maWcubnVtX2ZyYW1lcygp
LCBjYXB0dXJlX2NvbmZpZy5udW1fY2hhbm5lbHMoKSwKKyAgICAgICAgICAgICAgICAgY2FwdHVy
ZV9jb25maWcubnVtX2ZyYW1lcygpKTsKKyAgdGVzdDo6SW5wdXRBdWRpb0ZpbGUgY2FwdHVyZV9m
aWxlKAorICAgICAgdGVzdDo6R2V0QXBtQ2FwdHVyZVRlc3RWZWN0b3JGaWxlTmFtZShBdWRpb1By
b2Nlc3Npbmc6OmtTYW1wbGVSYXRlNDhrSHopKTsKKyAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGNhcHR1
cmVfaW5wdXQoY2FwdHVyZV9jb25maWcubnVtX2ZyYW1lcygpICoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FwdHVyZV9jb25maWcubnVtX2NoYW5uZWxzKCkpOworCisgIC8v
IFRoZSBmaWxlIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHRoaXMgbWFueSBmcmFtZXMuIEV2ZXJ5
IGl0ZXJhdGlvbiwgd2UgcHV0CisgIC8vIGEgZnJhbWUgdGhyb3VnaCB0aGUgZ2FpbiBjb250cm9s
bGVyLgorICBjb25zdCBpbnQga051bUZyYW1lc1RvUHJvY2VzcyA9IDEwMDsKKyAgZm9yIChpbnQg
ZnJhbWVfbm8gPSAwOyBmcmFtZV9ubyA8IGtOdW1GcmFtZXNUb1Byb2Nlc3M7ICsrZnJhbWVfbm8p
IHsKKyAgICBSZWFkRmxvYXRTYW1wbGVzRnJvbVN0ZXJlb0ZpbGUoY2FwdHVyZV9jb25maWcubnVt
X2ZyYW1lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlX2Nv
bmZpZy5udW1fY2hhbm5lbHMoKSwgJmNhcHR1cmVfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FwdHVyZV9pbnB1dCk7CisKKyAgICB0ZXN0OjpDb3B5VmVjdG9yVG9B
dWRpb0J1ZmZlcihjYXB0dXJlX2NvbmZpZywgY2FwdHVyZV9pbnB1dCwgJmFiKTsKKyAgICBnYWlu
X2NvbnRyb2xsZXItPlByb2Nlc3MoJmFiKTsKKyAgfQorCisgIC8vIFNlbmQgaW4gYSBsYXN0IGZy
YW1lIHdpdGggdmFsdWVzIGNvbnN0YW50IDEgKEl0J3MgbG93IGVub3VnaCB0byBkZXRlY3QgaGln
aAorICAvLyBnYWluLCBhbmQgZm9yIGVhc2Ugb2YgY29tcHV0YXRpb24pLiBUaGUgYXBwbGllZCBn
YWluIGlzIHRoZSByZXN1bHQuCisgIGNvbnN0ZXhwciBmbG9hdCBzYW1wbGVfdmFsdWUgPSAxLmY7
CisgIFNldEF1ZGlvQnVmZmVyU2FtcGxlcyhzYW1wbGVfdmFsdWUsICZhYik7CisgIGdhaW5fY29u
dHJvbGxlci0+UHJvY2VzcygmYWIpOworICByZXR1cm4gYWIuY2hhbm5lbHNfZigpWzBdWzBdOwor
fQorCiB9ICAvLyBuYW1lc3BhY2UKIAogVEVTVChHYWluQ29udHJvbGxlcjIsIENyZWF0ZUFwcGx5
Q29uZmlnKSB7CkBAIC00NCw0NyArMTEzLDE3MyBAQCBURVNUKEdhaW5Db250cm9sbGVyMiwgQ3Jl
YXRlQXBwbHlDb25maWcpIHsKICAgZ2Fpbl9jb250cm9sbGVyMi0+QXBwbHlDb25maWcoY29uZmln
KTsKIAogICAvLyBDaGVjayB0aGF0IGF0dGVudWF0aW9uIGlzIG5vdCBhbGxvd2VkLgotICBjb25m
aWcuZml4ZWRfZ2Fpbl9kYiA9IC01LmY7CisgIGNvbmZpZy5maXhlZF9kaWdpdGFsLmdhaW5fZGIg
PSAtNS5mOwogICBFWFBFQ1RfRkFMU0UoR2FpbkNvbnRyb2xsZXIyOjpWYWxpZGF0ZShjb25maWcp
KTsKIAogICAvLyBDaGVjayB0aGF0IHZhbGlkIGNvbmZpZ3VyYXRpb25zIGFyZSBhcHBsaWVkLgot
ICBmb3IgKGNvbnN0IGZsb2F0JiBmaXhlZF9nYWluX2RiIDogezAuZiwgNS5mLCAxMC5mLCA1MC5m
fSkgewotICAgIGNvbmZpZy5maXhlZF9nYWluX2RiID0gZml4ZWRfZ2Fpbl9kYjsKKyAgZm9yIChj
b25zdCBmbG9hdCYgZml4ZWRfZ2Fpbl9kYiA6IHswLmYsIDUuZiwgMTAuZiwgNDAuZn0pIHsKKyAg
ICBjb25maWcuZml4ZWRfZGlnaXRhbC5nYWluX2RiID0gZml4ZWRfZ2Fpbl9kYjsKICAgICBFWFBF
Q1RfVFJVRShHYWluQ29udHJvbGxlcjI6OlZhbGlkYXRlKGNvbmZpZykpOwogICAgIGdhaW5fY29u
dHJvbGxlcjItPkFwcGx5Q29uZmlnKGNvbmZpZyk7CiAgIH0KIH0KIAogVEVTVChHYWluQ29udHJv
bGxlcjIsIFRvU3RyaW5nKSB7Ci0gIC8vIFRlc3RzIEdhaW5Db250cm9sbGVyMjo6VG9TdHJpbmco
KS4KKyAgLy8gVGVzdHMgR2FpbkNvbnRyb2xsZXIyOjpUb1N0cmluZygpLiBPbmx5IHRlc3QgdGhl
IGVuYWJsZWQgcHJvcGVydHkuCiAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJv
bGxlcjIgY29uZmlnOwotICBjb25maWcuZml4ZWRfZ2Fpbl9kYiA9IDUuZjsKIAogICBjb25maWcu
ZW5hYmxlZCA9IGZhbHNlOwotICBFWFBFQ1RfRVEoIntlbmFibGVkOiBmYWxzZSwgZml4ZWRfZ2Fp
bl9kQjogNX0iLAotICAgICAgICAgICAgR2FpbkNvbnRyb2xsZXIyOjpUb1N0cmluZyhjb25maWcp
KTsKKyAgRVhQRUNUX0VRKCJ7ZW5hYmxlZDogZmFsc2UiLCBHYWluQ29udHJvbGxlcjI6OlRvU3Ry
aW5nKGNvbmZpZykuc3Vic3RyKDAsIDE1KSk7CiAKICAgY29uZmlnLmVuYWJsZWQgPSB0cnVlOwot
ICBFWFBFQ1RfRVEoIntlbmFibGVkOiB0cnVlLCBmaXhlZF9nYWluX2RCOiA1fSIsCi0gICAgICAg
ICAgICBHYWluQ29udHJvbGxlcjI6OlRvU3RyaW5nKGNvbmZpZykpOworICBFWFBFQ1RfRVEoIntl
bmFibGVkOiB0cnVlIiwgR2FpbkNvbnRyb2xsZXIyOjpUb1N0cmluZyhjb25maWcpLnN1YnN0cigw
LCAxNCkpOwogfQogCi1URVNUKEdhaW5Db250cm9sbGVyMiwgVXNhZ2UpIHsKLSAgLy8gVGVzdHMg
R2FpbkNvbnRyb2xsZXIyOjpQcm9jZXNzKCkgb24gYW4gQXVkaW9CdWZmZXIgaW5zdGFuY2UuCi0g
IHN0ZDo6dW5pcXVlX3B0cjxHYWluQ29udHJvbGxlcjI+IGdhaW5fY29udHJvbGxlcjIobmV3IEdh
aW5Db250cm9sbGVyMigpKTsKLSAgZ2Fpbl9jb250cm9sbGVyMi0+SW5pdGlhbGl6ZShBdWRpb1By
b2Nlc3Npbmc6OmtTYW1wbGVSYXRlNDhrSHopOwotICBjb25zdCBzaXplX3QgbnVtX2ZyYW1lcyA9
IHJ0Yzo6Q2hlY2tlZERpdkV4YWN0PHNpemVfdD4oCi0gICAgICBrRnJhbWVTaXplTXMgKiBBdWRp
b1Byb2Nlc3Npbmc6OmtTYW1wbGVSYXRlNDhrSHosIDEwMDApOwotICBBdWRpb0J1ZmZlciBhYihu
dW1fZnJhbWVzLCBrU3RlcmVvLCBudW1fZnJhbWVzLCBrU3RlcmVvLCBudW1fZnJhbWVzKTsKLSAg
Y29uc3RleHByIGZsb2F0IHNhbXBsZV92YWx1ZSA9IDEwMDAuZjsKLSAgU2V0QXVkaW9CdWZmZXJT
YW1wbGVzKHNhbXBsZV92YWx1ZSwgJmFiKTsKK1RFU1QoR2FpbkNvbnRyb2xsZXIyRml4ZWREaWdp
dGFsLCBHYWluU2hvdWxkQ2hhbmdlT25TZXRHYWluKSB7CisgIGNvbnN0ZXhwciBmbG9hdCBrSW5w
dXRMZXZlbCA9IDEwMDAuZjsKKyAgY29uc3RleHByIHNpemVfdCBrTnVtRnJhbWVzID0gNTsKKyAg
Y29uc3RleHByIHNpemVfdCBrU2FtcGxlUmF0ZUh6ID0gODAwMDsKKyAgY29uc3RleHByIGZsb2F0
IGtHYWluMERiID0gMC5mOworICBjb25zdGV4cHIgZmxvYXQga0dhaW4yMERiID0gMjAuZjsKKwor
ICBhdXRvIGFnYzJfZml4ZWQgPSBDcmVhdGVBZ2MyRml4ZWREaWdpdGFsTW9kZShrR2FpbjBEYiwg
a1NhbXBsZVJhdGVIeik7CisKKyAgLy8gU2lnbmFsIGxldmVsIGlzIHVuY2hhbmdlZCB3aXRoIDAg
ZGIgZ2Fpbi4KKyAgRVhQRUNUX0ZMT0FUX0VRKFJ1bkFnYzJXaXRoQ29uc3RhbnRJbnB1dChhZ2My
X2ZpeGVkLmdldCgpLCBrSW5wdXRMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0ZUh6KSwKKyAgICAgICAgICAgICAg
ICAgIGtJbnB1dExldmVsKTsKKworICAvLyArMjAgZGIgc2hvdWxkIGluY3JlYXNlIHNpZ25hbCBi
eSBhIGZhY3RvciBvZiAxMC4KKyAgYWdjMl9maXhlZC0+QXBwbHlDb25maWcoQ3JlYXRlQWdjMkZp
eGVkRGlnaXRhbE1vZGVDb25maWcoa0dhaW4yMERiKSk7CisgIEVYUEVDVF9GTE9BVF9FUShSdW5B
Z2MyV2l0aENvbnN0YW50SW5wdXQoYWdjMl9maXhlZC5nZXQoKSwga0lucHV0TGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga051bUZyYW1lcywga1NhbXBs
ZVJhdGVIeiksCisgICAgICAgICAgICAgICAgICBrSW5wdXRMZXZlbCAqIDEwKTsKK30KKworVEVT
VChHYWluQ29udHJvbGxlcjJGaXhlZERpZ2l0YWwsIENoYW5nZUZpeGVkR2FpblNob3VsZEJlRmFz
dEFuZFRpbWVJbnZhcmlhbnQpIHsKKyAgLy8gTnVtYmVyIG9mIGZyYW1lcyByZXF1aXJlZCBmb3Ig
dGhlIGZpeGVkIGdhaW4gY29udHJvbGxlciB0byBhZGFwdCBvbiB0aGUKKyAgLy8gaW5wdXQgc2ln
bmFsIHdoZW4gdGhlIGdhaW4gY2hhbmdlcy4KKyAgY29uc3RleHByIHNpemVfdCBrTnVtRnJhbWVz
ID0gNTsKKworICBjb25zdGV4cHIgZmxvYXQga0lucHV0TGV2ZWwgPSAxMDAwLmY7CisgIGNvbnN0
ZXhwciBzaXplX3Qga1NhbXBsZVJhdGVIeiA9IDgwMDA7CisgIGNvbnN0ZXhwciBmbG9hdCBrR2Fp
bkRiTG93ID0gMC5mOworICBjb25zdGV4cHIgZmxvYXQga0dhaW5EYkhpZ2ggPSAyNS5mOworICBz
dGF0aWNfYXNzZXJ0KGtHYWluRGJMb3cgPCBrR2FpbkRiSGlnaCwgIiIpOworCisgIGF1dG8gYWdj
Ml9maXhlZCA9IENyZWF0ZUFnYzJGaXhlZERpZ2l0YWxNb2RlKGtHYWluRGJMb3csIGtTYW1wbGVS
YXRlSHopOworCisgIC8vIFN0YXJ0IHdpdGggYSBsb3dlciBnYWluLgorICBjb25zdCBmbG9hdCBv
dXRwdXRfbGV2ZWxfcHJlID0gUnVuQWdjMldpdGhDb25zdGFudElucHV0KAorICAgICAgYWdjMl9m
aXhlZC5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtTYW1wbGVSYXRlSHopOworCisg
IC8vIEluY3JlYXNlIGdhaW4uCisgIGFnYzJfZml4ZWQtPkFwcGx5Q29uZmlnKENyZWF0ZUFnYzJG
aXhlZERpZ2l0YWxNb2RlQ29uZmlnKGtHYWluRGJIaWdoKSk7CisgIHN0YXRpY19jYXN0PHZvaWQ+
KFJ1bkFnYzJXaXRoQ29uc3RhbnRJbnB1dChhZ2MyX2ZpeGVkLmdldCgpLCBrSW5wdXRMZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtOdW1GcmFtZXMs
IGtTYW1wbGVSYXRlSHopKTsKKworICAvLyBCYWNrIHRvIHRoZSBsb3dlciBnYWluLgorICBhZ2My
X2ZpeGVkLT5BcHBseUNvbmZpZyhDcmVhdGVBZ2MyRml4ZWREaWdpdGFsTW9kZUNvbmZpZyhrR2Fp
bkRiTG93KSk7CisgIGNvbnN0IGZsb2F0IG91dHB1dF9sZXZlbF9wb3N0ID0gUnVuQWdjMldpdGhD
b25zdGFudElucHV0KAorICAgICAgYWdjMl9maXhlZC5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1G
cmFtZXMsIGtTYW1wbGVSYXRlSHopOworCisgIEVYUEVDVF9FUShvdXRwdXRfbGV2ZWxfcHJlLCBv
dXRwdXRfbGV2ZWxfcG9zdCk7Cit9CisKK3N0cnVjdCBGaXhlZERpZ2l0YWxUZXN0UGFyYW1zIHsK
KyAgRml4ZWREaWdpdGFsVGVzdFBhcmFtcyhmbG9hdCBnYWluX2RiX21pbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBnYWluX2RiX21heCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2FtcGxlX3JhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXR1
cmF0aW9uX2V4cGVjdGVkKQorICAgICAgOiBnYWluX2RiX21pbihnYWluX2RiX21pbiksCisgICAg
ICAgIGdhaW5fZGJfbWF4KGdhaW5fZGJfbWF4KSwKKyAgICAgICAgc2FtcGxlX3JhdGUoc2FtcGxl
X3JhdGUpLAorICAgICAgICBzYXR1cmF0aW9uX2V4cGVjdGVkKHNhdHVyYXRpb25fZXhwZWN0ZWQp
IHt9CisgIGZsb2F0IGdhaW5fZGJfbWluOworICBmbG9hdCBnYWluX2RiX21heDsKKyAgc2l6ZV90
IHNhbXBsZV9yYXRlOworICBib29sIHNhdHVyYXRpb25fZXhwZWN0ZWQ7Cit9OworCitjbGFzcyBG
aXhlZERpZ2l0YWxUZXN0CisgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKKyAgICAgIHB1Ymxp
YyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8Rml4ZWREaWdpdGFsVGVzdFBhcmFtcz4ge307
CisKK1RFU1RfUChGaXhlZERpZ2l0YWxUZXN0LCBDaGVja1NhdHVyYXRpb25CZWhhdmlvcldpdGhM
aW1pdGVyKSB7CisgIGNvbnN0IGZsb2F0IGtJbnB1dExldmVsID0gMzI3NjcuZjsKKyAgY29uc3Qg
c2l6ZV90IGtOdW1GcmFtZXMgPSA1OworCisgIGNvbnN0IGF1dG8gcGFyYW1zID0gR2V0UGFyYW0o
KTsKKworICBjb25zdCBhdXRvIGdhaW5zX2RiID0KKyAgICAgIHRlc3Q6OkxpblNwYWNlKHBhcmFt
cy5nYWluX2RiX21pbiwgcGFyYW1zLmdhaW5fZGJfbWF4LCAxMCk7CisgIGZvciAoY29uc3QgYXV0
byBnYWluX2RiIDogZ2FpbnNfZGIpIHsKKyAgICBTQ09QRURfVFJBQ0Uoc3RkOjp0b19zdHJpbmco
Z2Fpbl9kYikpOworICAgIGF1dG8gYWdjMl9maXhlZCA9IENyZWF0ZUFnYzJGaXhlZERpZ2l0YWxN
b2RlKGdhaW5fZGIsIHBhcmFtcy5zYW1wbGVfcmF0ZSk7CisgICAgY29uc3QgZmxvYXQgcHJvY2Vz
c2VkX3NhbXBsZSA9IFJ1bkFnYzJXaXRoQ29uc3RhbnRJbnB1dCgKKyAgICAgICAgYWdjMl9maXhl
ZC5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIHBhcmFtcy5zYW1wbGVfcmF0ZSk7Cisg
ICAgaWYgKHBhcmFtcy5zYXR1cmF0aW9uX2V4cGVjdGVkKSB7CisgICAgICBFWFBFQ1RfRkxPQVRf
RVEocHJvY2Vzc2VkX3NhbXBsZSwgMzI3NjcuZik7CisgICAgfSBlbHNlIHsKKyAgICAgIEVYUEVD
VF9MVChwcm9jZXNzZWRfc2FtcGxlLCAzMjc2Ny5mKTsKKyAgICB9CisgIH0KK30KKworc3RhdGlj
X2Fzc2VydCh0ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzIDwgMTAsICIiKTsKK0lOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIEdhaW5Db250cm9sbGVyMiwKKyAgICBGaXhlZERpZ2l0
YWxUZXN0LAorICAgIDo6dGVzdGluZzo6VmFsdWVzKAorICAgICAgICAvLyBXaGVuIGdhaW4gPCB8
dGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGc3wsIHRoZSBsaW1pdGVyIHdpbGwgbm90Cisg
ICAgICAgIC8vIHNhdHVyYXRlIHRoZSBzaWduYWwgKGF0IGFueSBzYW1wbGUgcmF0ZSkuCisgICAg
ICAgIEZpeGVkRGlnaXRhbFRlc3RQYXJhbXMoMC4xZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzIC0gMC4wMWYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgODAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmYWxzZSksCisgICAgICAgIEZpeGVkRGlnaXRhbFRlc3RQYXJhbXMoMC4xLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnMg
LSAwLjAxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ODAwMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSksCisgICAgICAgIC8vIFdoZW4gZ2FpbiA+IHx0
ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzfCwgdGhlIGxpbWl0ZXIgd2lsbAorICAgICAg
ICAvLyBzYXR1cmF0ZSB0aGUgc2lnbmFsIChhdCBhbnkgc2FtcGxlIHJhdGUpLgorICAgICAgICBG
aXhlZERpZ2l0YWxUZXN0UGFyYW1zKHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnMgKyAw
LjAxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC5mLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDgwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJ1ZSksCisgICAgICAgIEZpeGVkRGlnaXRhbFRlc3RQYXJhbXModGVzdDo6a0xpbWl0ZXJNYXhJ
bnB1dExldmVsRGJGcyArIDAuMDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEw
LmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDgwMDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHJ1ZSkpKTsKKworVEVTVChHYWluQ29udHJvbGxlcjIsIFVzYWdl
U2F0dXJhdGlvbk1hcmdpbikgeworICBHYWluQ29udHJvbGxlcjIgZ2Fpbl9jb250cm9sbGVyMjsK
KyAgZ2Fpbl9jb250cm9sbGVyMi5Jbml0aWFsaXplKEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJh
dGU0OGtIeik7CisKICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMiBj
b25maWc7CisgIC8vIENoZWNrIHRoYXQgc2FtcGxlcyBhcmUgbm90IGFtcGxpZmllZCBhcyBtdWNo
IHdoZW4gZXh0cmEgbWFyZ2luIGlzCisgIC8vIGhpZ2guIFRoZXkgc2hvdWxkIG5vdCBiZSBhbXBs
aWZpZWQgYXQgYWxsLCBidXQgb25seSBhZnRlciBjb252ZXJnZW5jZS4gR0MyCisgIC8vIHN0YXJ0
cyB3aXRoIGEgZ2FpbiwgYW5kIGl0IHRha2VzIHRpbWUgdW50aWwgaXQncyBkb3duIHRvIDAgZEIu
CisgIGNvbmZpZy5maXhlZF9kaWdpdGFsLmdhaW5fZGIgPSAwLmY7CisgIGNvbmZpZy5hZGFwdGl2
ZV9kaWdpdGFsLmVuYWJsZWQgPSB0cnVlOworICBjb25maWcuYWRhcHRpdmVfZGlnaXRhbC5leHRy
YV9zYXR1cmF0aW9uX21hcmdpbl9kYiA9IDUwLmY7CisgIGdhaW5fY29udHJvbGxlcjIuQXBwbHlD
b25maWcoY29uZmlnKTsKIAotICAvLyBDaGVjayB0aGF0IHNhbXBsZXMgYXJlIGFtcGxpZmllZCB3
aGVuIHRoZSBmaXhlZCBnYWluIGlzIGdyZWF0ZXIgdGhhbiAwIGRCLgotICBjb25maWcuZml4ZWRf
Z2Fpbl9kYiA9IDUuZjsKLSAgZ2Fpbl9jb250cm9sbGVyMi0+QXBwbHlDb25maWcoY29uZmlnKTsK
LSAgZ2Fpbl9jb250cm9sbGVyMi0+UHJvY2VzcygmYWIpOwotICBFWFBFQ1RfTFQoc2FtcGxlX3Zh
bHVlLCBhYi5jaGFubmVsc19mKClbMF1bMF0pOworICBFWFBFQ1RfTFQoR2FpbkFmdGVyUHJvY2Vz
c2luZ0ZpbGUoJmdhaW5fY29udHJvbGxlcjIpLCAyLmYpOworfQorCitURVNUKEdhaW5Db250cm9s
bGVyMiwgVXNhZ2VOb1NhdHVyYXRpb25NYXJnaW4pIHsKKyAgR2FpbkNvbnRyb2xsZXIyIGdhaW5f
Y29udHJvbGxlcjI7CisgIGdhaW5fY29udHJvbGxlcjIuSW5pdGlhbGl6ZShBdWRpb1Byb2Nlc3Np
bmc6OmtTYW1wbGVSYXRlNDhrSHopOworCisgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWlu
Q29udHJvbGxlcjIgY29uZmlnOworICAvLyBDaGVjayB0aGF0IHNvbWUgZ2FpbiBpcyBhcHBsaWVk
IGlmIHRoZXJlIGlzIG5vIG1hcmdpbi4KKyAgY29uZmlnLmZpeGVkX2RpZ2l0YWwuZ2Fpbl9kYiA9
IDAuZjsKKyAgY29uZmlnLmFkYXB0aXZlX2RpZ2l0YWwuZW5hYmxlZCA9IHRydWU7CisgIGNvbmZp
Zy5hZGFwdGl2ZV9kaWdpdGFsLmV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2RiID0gMC5mOworICBn
YWluX2NvbnRyb2xsZXIyLkFwcGx5Q29uZmlnKGNvbmZpZyk7CisKKyAgRVhQRUNUX0dUKEdhaW5B
ZnRlclByb2Nlc3NpbmdGaWxlKCZnYWluX2NvbnRyb2xsZXIyKSwgMi5mKTsKIH0KIAogfSAgLy8g
bmFtZXNwYWNlIHRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvaW5jbHVkZS9hZWNfZHVtcC5oCmluZGV4IDMxM2U5ZDdiMWRlMGI2MmUxYWJi
NmNhMjU0ZGVkMDQxNGNmYThiNzIuLmI3MzRhZGZiYmJiMzZhNzc3ZTNlYzliNmJiOTlmNDUwNWZk
Y2YyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2luY2x1ZGUvYWVjX2R1bXAuaApAQCAtMTEsMTQgKzExLDEzIEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19JTkNMVURFX0FFQ19EVU1QX0hfCiAjZGVmaW5lIE1PRFVM
RVNfQVVESU9fUFJPQ0VTU0lOR19JTkNMVURFX0FFQ19EVU1QX0hfCiAKLSNpbmNsdWRlIDxtZW1v
cnk+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZl
Y3Rvcj4KIAotI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlv
L2F1ZGlvX2ZyYW1lLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1
ZGUvYXVkaW9fZnJhbWVfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNh
dGlvbi5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2lu
Y2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nl
c3NpbmcuY2MKaW5kZXggNzVlZWRhZmMyOTIzODdmMmU5OTE1ZjMxOGQwMDJlYzE1MjBhZmU5Ny4u
MjdjZDg4MjRmZWMzMDVjNWIzMWY1YTMzNWVmOGQ2M2U2YWYzMmU4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVk
ZS9hdWRpb19wcm9jZXNzaW5nLmNjCkBAIC0xMCw4ICsxMCw2IEBACiAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAKLSNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIHZvaWQgQ3Vz
dG9tUHJvY2Vzc2luZzo6U2V0UnVudGltZVNldHRpbmcoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
aW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9j
ZXNzaW5nLmgKaW5kZXggMjY4ODBlMzc3NjAyNjRkZGFhYzk0MDRlZTgwZTc0NzllYzEyNjM0ZC4u
ZGY1MTMxMzIyOWRhMjhjMTM5MTg3OGFjMzlhOGU5NDM0M2FiMTU1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRl
L2F1ZGlvX3Byb2Nlc3NpbmcuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNl
L3BsYXRmb3JtX2ZpbGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVt
L3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTQ4LDcgKzQ5LDYgQEAg
Y2xhc3MgUHJvY2Vzc2luZ0NvbmZpZzsKIAogY2xhc3MgRWNob0RldGVjdG9yOwogY2xhc3MgR2Fp
bkNvbnRyb2w7Ci1jbGFzcyBIaWdoUGFzc0ZpbHRlcjsKIGNsYXNzIExldmVsRXN0aW1hdG9yOwog
Y2xhc3MgTm9pc2VTdXBwcmVzc2lvbjsKIGNsYXNzIEN1c3RvbUF1ZGlvQW5hbHl6ZXI7CkBAIC0y
NDAsNyArMjQwLDYgQEAgY2xhc3MgQXVkaW9Qcm9jZXNzaW5nIDogcHVibGljIHJ0Yzo6UmVmQ291
bnRJbnRlcmZhY2UgewogICAvLyBieSBjaGFuZ2luZyB0aGUgZGVmYXVsdCB2YWx1ZXMgaW4gdGhl
IEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnIHN0cnVjdC4KICAgLy8gVGhlIGNvbmZpZyBpcyBhcHBs
aWVkIGJ5IHBhc3NpbmcgdGhlIHN0cnVjdCB0byB0aGUgQXBwbHlDb25maWcgbWV0aG9kLgogICBz
dHJ1Y3QgQ29uZmlnIHsKLSAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NTM1KTogQ3VycmVu
dGx5IHVudXNlZC4gVXNlIHRoaXMgdG8gZGV0ZXJtaW5lIEFFQy4KICAgICBzdHJ1Y3QgRWNob0Nh
bmNlbGxlciB7CiAgICAgICBib29sIGVuYWJsZWQgPSBmYWxzZTsKICAgICAgIGJvb2wgbW9iaWxl
X21vZGUgPSBmYWxzZTsKQEAgLTI3MSwxMSArMjcwLDI0IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc2lu
ZyA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICAgICAvLyBmaXJzdCBhcHBsaWVz
IGEgZml4ZWQgZ2Fpbi4gVGhlIGFkYXB0aXZlIGRpZ2l0YWwgQUdDIGNhbiBiZSB0dXJuZWQgb2Zm
IGJ5CiAgICAgLy8gc2V0dGluZyB8YWRhcHRpdmVfZGlnaXRhbF9tb2RlPWZhbHNlfC4KICAgICBz
dHJ1Y3QgR2FpbkNvbnRyb2xsZXIyIHsKKyAgICAgIGVudW0gTGV2ZWxFc3RpbWF0b3IgeyBrUm1z
LCBrUGVhayB9OwogICAgICAgYm9vbCBlbmFibGVkID0gZmFsc2U7Ci0gICAgICBib29sIGFkYXB0
aXZlX2RpZ2l0YWxfbW9kZSA9IHRydWU7Ci0gICAgICBmbG9hdCBmaXhlZF9nYWluX2RiID0gMC5m
OworICAgICAgc3RydWN0IHsKKyAgICAgICAgZmxvYXQgZ2Fpbl9kYiA9IDAuZjsKKyAgICAgIH0g
Zml4ZWRfZGlnaXRhbDsKKyAgICAgIHN0cnVjdCB7CisgICAgICAgIGJvb2wgZW5hYmxlZCA9IGZh
bHNlOworICAgICAgICBMZXZlbEVzdGltYXRvciBsZXZlbF9lc3RpbWF0b3IgPSBrUm1zOworICAg
ICAgICBib29sIHVzZV9zYXR1cmF0aW9uX3Byb3RlY3RvciA9IHRydWU7CisgICAgICAgIGZsb2F0
IGV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2RiID0gMi5mOworICAgICAgfSBhZGFwdGl2ZV9kaWdp
dGFsOwogICAgIH0gZ2Fpbl9jb250cm9sbGVyMjsKIAorICAgIC8vIEVuYWJsZXMgcmVwb3J0aW5n
IG9mIHxvdXRwdXRfcm1zX2RiZnN8IGluIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nU3RhdHMuCisg
ICAgc3RydWN0IExldmVsRXN0aW1hdGlvbiB7CisgICAgICBib29sIGVuYWJsZWQgPSBmYWxzZTsK
KyAgICB9IGxldmVsX2VzdGltYXRpb247CisKICAgICAvLyBFeHBsaWNpdCBjb3B5IGFzc2lnbm1l
bnQgaW1wbGVtZW50YXRpb24gdG8gYXZvaWQgaXNzdWVzIHdpdGggbWVtb3J5CiAgICAgLy8gc2Fu
aXRpemVyIGNvbXBsYWludHMgaW4gY2FzZSBvZiBzZWxmLWFzc2lnbm1lbnQuCiAgICAgLy8gVE9E
TyhwZWFoKTogQWRkIGJ1aWxkZmxhZyB0byBlbnN1cmUgdGhhdCB0aGlzIGlzIG9ubHkgaW5jbHVk
ZWQgZm9yIG1lbW9yeQpAQCAtNTIwLDg1ICs1MzIsMTcgQEAgY2xhc3MgQXVkaW9Qcm9jZXNzaW5n
IDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICAvLyBzcGVjaWZpYyBtZW1iZXIg
dmFyaWFibGVzIGFyZSByZXNldC4KICAgdmlydHVhbCB2b2lkIFVwZGF0ZUhpc3RvZ3JhbXNPbkNh
bGxFbmQoKSA9IDA7CiAKLSAgLy8gVE9ETyhpdm9jKTogUmVtb3ZlIHdoZW4gdGhlIGNhbGxpbmcg
Y29kZSBubyBsb25nZXIgdXNlcyB0aGUgb2xkIFN0YXRpc3RpY3MKLSAgLy8gICAgICAgICAgICAg
QVBJLgotICBzdHJ1Y3QgU3RhdGlzdGljIHsKLSAgICBpbnQgaW5zdGFudCA9IDA7ICAvLyBJbnN0
YW50YW5lb3VzIHZhbHVlLgotICAgIGludCBhdmVyYWdlID0gMDsgIC8vIExvbmctdGVybSBhdmVy
YWdlLgotICAgIGludCBtYXhpbXVtID0gMDsgIC8vIExvbmctdGVybSBtYXhpbXVtLgotICAgIGlu
dCBtaW5pbXVtID0gMDsgIC8vIExvbmctdGVybSBtaW5pbXVtLgotICB9OwotCi0gIHN0cnVjdCBT
dGF0IHsKLSAgICB2b2lkIFNldChjb25zdCBTdGF0aXN0aWMmIG90aGVyKSB7Ci0gICAgICBTZXQo
b3RoZXIuaW5zdGFudCwgb3RoZXIuYXZlcmFnZSwgb3RoZXIubWF4aW11bSwgb3RoZXIubWluaW11
bSk7Ci0gICAgfQotICAgIHZvaWQgU2V0KGZsb2F0IGluc3RhbnQsIGZsb2F0IGF2ZXJhZ2UsIGZs
b2F0IG1heGltdW0sIGZsb2F0IG1pbmltdW0pIHsKLSAgICAgIGluc3RhbnRfID0gaW5zdGFudDsK
LSAgICAgIGF2ZXJhZ2VfID0gYXZlcmFnZTsKLSAgICAgIG1heGltdW1fID0gbWF4aW11bTsKLSAg
ICAgIG1pbmltdW1fID0gbWluaW11bTsKLSAgICB9Ci0gICAgZmxvYXQgaW5zdGFudCgpIGNvbnN0
IHsgcmV0dXJuIGluc3RhbnRfOyB9Ci0gICAgZmxvYXQgYXZlcmFnZSgpIGNvbnN0IHsgcmV0dXJu
IGF2ZXJhZ2VfOyB9Ci0gICAgZmxvYXQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1heGltdW1f
OyB9Ci0gICAgZmxvYXQgbWluaW11bSgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1fOyB9Ci0KLSAg
IHByaXZhdGU6Ci0gICAgZmxvYXQgaW5zdGFudF8gPSAwLjBmOyAgLy8gSW5zdGFudGFuZW91cyB2
YWx1ZS4KLSAgICBmbG9hdCBhdmVyYWdlXyA9IDAuMGY7ICAvLyBMb25nLXRlcm0gYXZlcmFnZS4K
LSAgICBmbG9hdCBtYXhpbXVtXyA9IDAuMGY7ICAvLyBMb25nLXRlcm0gbWF4aW11bS4KLSAgICBm
bG9hdCBtaW5pbXVtXyA9IDAuMGY7ICAvLyBMb25nLXRlcm0gbWluaW11bS4KLSAgfTsKLQotICBz
dHJ1Y3QgQXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljcyB7Ci0gICAgQXVkaW9Qcm9jZXNzaW5nU3Rh
dGlzdGljcygpOwotICAgIEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MoY29uc3QgQXVkaW9Qcm9j
ZXNzaW5nU3RhdGlzdGljcyYgb3RoZXIpOwotICAgIH5BdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNz
KCk7Ci0KLSAgICAvLyBBRUMgU3RhdGlzdGljcy4KLSAgICAvLyBSRVJMID0gRVJMICsgRVJMRQot
ICAgIFN0YXQgcmVzaWR1YWxfZWNob19yZXR1cm5fbG9zczsKLSAgICAvLyBFUkwgPSAxMGxvZ18x
MChQX2ZhciAvIFBfZWNobykKLSAgICBTdGF0IGVjaG9fcmV0dXJuX2xvc3M7Ci0gICAgLy8gRVJM
RSA9IDEwbG9nXzEwKFBfZWNobyAvIFBfb3V0KQotICAgIFN0YXQgZWNob19yZXR1cm5fbG9zc19l
bmhhbmNlbWVudDsKLSAgICAvLyAoUHJlIG5vbi1saW5lYXIgcHJvY2Vzc2luZyBzdXBwcmVzc2lv
bikgQV9OTFAgPSAxMGxvZ18xMChQX2VjaG8gLyBQX2EpCi0gICAgU3RhdCBhX25scDsKLSAgICAv
LyBGcmFjdGlvbiBvZiB0aW1lIHRoYXQgdGhlIEFFQyBsaW5lYXIgZmlsdGVyIGlzIGRpdmVyZ2Vu
dCwgaW4gYSAxLXNlY29uZAotICAgIC8vIG5vbi1vdmVybGFwcGVkIGFnZ3JlZ2F0aW9uIHdpbmRv
dy4KLSAgICBmbG9hdCBkaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uID0gLTEuMGY7Ci0KLSAgICAv
LyBUaGUgZGVsYXkgbWV0cmljcyBjb25zaXN0cyBvZiB0aGUgZGVsYXkgbWVkaWFuIGFuZCBzdGFu
ZGFyZCBkZXZpYXRpb24uIEl0Ci0gICAgLy8gYWxzbyBjb25zaXN0cyBvZiB0aGUgZnJhY3Rpb24g
b2YgZGVsYXkgZXN0aW1hdGVzIHRoYXQgY2FuIG1ha2UgdGhlIGVjaG8KLSAgICAvLyBjYW5jZWxs
YXRpb24gcGVyZm9ybSBwb29ybHkuIFRoZSB2YWx1ZXMgYXJlIGFnZ3JlZ2F0ZWQgdW50aWwgdGhl
IGZpcnN0Ci0gICAgLy8gY2FsbCB0byB8R2V0U3RhdGlzdGljcygpfCBhbmQgYWZ0ZXJ3YXJkcyBh
Z2dyZWdhdGVkIGFuZCB1cGRhdGVkIGV2ZXJ5Ci0gICAgLy8gc2Vjb25kLiBOb3RlIHRoYXQgaWYg
dGhlcmUgYXJlIHNldmVyYWwgY2xpZW50cyBwdWxsaW5nIG1ldHJpY3MgZnJvbQotICAgIC8vIHxH
ZXRTdGF0aXN0aWNzKCl8IGR1cmluZyBhIHNlc3Npb24gdGhlIGZpcnN0IGNhbGwgZnJvbSBhbnkg
b2YgdGhlbSB3aWxsCi0gICAgLy8gY2hhbmdlIHRvIG9uZSBzZWNvbmQgYWdncmVnYXRpb24gd2lu
ZG93IGZvciBhbGwuCi0gICAgaW50IGRlbGF5X21lZGlhbiA9IC0xOwotICAgIGludCBkZWxheV9z
dGFuZGFyZF9kZXZpYXRpb24gPSAtMTsKLSAgICBmbG9hdCBmcmFjdGlvbl9wb29yX2RlbGF5cyA9
IC0xLjBmOwotCi0gICAgLy8gUmVzaWR1YWwgZWNobyBkZXRlY3RvciBsaWtlbGlob29kLgotICAg
IGZsb2F0IHJlc2lkdWFsX2VjaG9fbGlrZWxpaG9vZCA9IC0xLjBmOwotICAgIC8vIE1heGltdW0g
cmVzaWR1YWwgZWNobyBsaWtlbGlob29kIGZyb20gdGhlIGxhc3QgdGltZSBwZXJpb2QuCi0gICAg
ZmxvYXQgcmVzaWR1YWxfZWNob19saWtlbGlob29kX3JlY2VudF9tYXggPSAtMS4wZjsKLSAgfTsK
LQotICAvLyBUT0RPKGl2b2MpOiBNYWtlIHRoaXMgcHVyZSB2aXJ0dWFsIHdoZW4gYWxsIHN1YmNs
YXNzZXMgaGF2ZSBiZWVuIHVwZGF0ZWQuCi0gIHZpcnR1YWwgQXVkaW9Qcm9jZXNzaW5nU3RhdGlz
dGljcyBHZXRTdGF0aXN0aWNzKCkgY29uc3Q7Ci0KLSAgLy8gVGhpcyByZXR1cm5zIHRoZSBzdGF0
cyBhcyBvcHRpb25hbHMgYW5kIGl0IHdpbGwgcmVwbGFjZSB0aGUgcmVndWxhcgotICAvLyBHZXRT
dGF0aXN0aWNzLgotICB2aXJ0dWFsIEF1ZGlvUHJvY2Vzc2luZ1N0YXRzIEdldFN0YXRpc3RpY3Mo
Ym9vbCBoYXNfcmVtb3RlX3RyYWNrcykgY29uc3Q7CisgIC8vIEdldCBhdWRpbyBwcm9jZXNzaW5n
IHN0YXRpc3RpY3MuIFRoZSB8aGFzX3JlbW90ZV90cmFja3N8IGFyZ3VtZW50IHNob3VsZCBiZQor
ICAvLyBzZXQgaWYgdGhlcmUgYXJlIGFjdGl2ZSByZW1vdGUgdHJhY2tzICh0aGlzIHdvdWxkIHVz
dWFsbHkgYmUgdHJ1ZSBkdXJpbmcKKyAgLy8gYSBjYWxsKS4gSWYgdGhlcmUgYXJlIG5vIHJlbW90
ZSB0cmFja3Mgc29tZSBvZiB0aGUgc3RhdHMgd2lsbCBub3QgYmUgc2V0IGJ5CisgIC8vIEF1ZGlv
UHJvY2Vzc2luZywgYmVjYXVzZSB0aGV5IG9ubHkgbWFrZSBzZW5zZSBpZiB0aGVyZSBpcyBhdCBs
ZWFzdCBvbmUKKyAgLy8gcmVtb3RlIHRyYWNrLgorICB2aXJ0dWFsIEF1ZGlvUHJvY2Vzc2luZ1N0
YXRzIEdldFN0YXRpc3RpY3MoYm9vbCBoYXNfcmVtb3RlX3RyYWNrcykgY29uc3QgPSAwOwogCiAg
IC8vIFRoZXNlIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBjb21wb25lbnQgaW50ZXJmYWNlcyBhbmQg
c2hvdWxkIG5ldmVyIHJldHVybgogICAvLyBOVUxMLiBUaGUgcG9pbnRlcnMgd2lsbCBiZSB2YWxp
ZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBBUE0gaW5zdGFuY2UuCiAgIC8vIFRoZSBtZW1vcnkg
Zm9yIHRoZXNlIG9iamVjdHMgaXMgZW50aXJlbHkgbWFuYWdlZCBpbnRlcm5hbGx5LgogICB2aXJ0
dWFsIEdhaW5Db250cm9sKiBnYWluX2NvbnRyb2woKSBjb25zdCA9IDA7Ci0gIC8vIFRPRE8ocGVh
aCk6IERlcHJlY2F0ZSB0aGlzIEFQSSBjYWxsLgotICB2aXJ0dWFsIEhpZ2hQYXNzRmlsdGVyKiBo
aWdoX3Bhc3NfZmlsdGVyKCkgY29uc3QgPSAwOwogICB2aXJ0dWFsIExldmVsRXN0aW1hdG9yKiBs
ZXZlbF9lc3RpbWF0b3IoKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgTm9pc2VTdXBwcmVzc2lvbiog
bm9pc2Vfc3VwcHJlc3Npb24oKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgVm9pY2VEZXRlY3Rpb24q
IHZvaWNlX2RldGVjdGlvbigpIGNvbnN0ID0gMDsKQEAgLTY0OCw3ICs1OTIsNyBAQCBjbGFzcyBB
dWRpb1Byb2Nlc3NpbmcgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgIHN0YXRp
YyBjb25zdCBpbnQga0NodW5rU2l6ZU1zID0gMTA7CiB9OwogCi1jbGFzcyBBdWRpb1Byb2Nlc3Np
bmdCdWlsZGVyIHsKK2NsYXNzIFJUQ19FWFBPUlQgQXVkaW9Qcm9jZXNzaW5nQnVpbGRlciB7CiAg
cHVibGljOgogICBBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCk7CiAgIH5BdWRpb1Byb2Nlc3NpbmdC
dWlsZGVyKCk7CkBAIC03ODgsMTcgKzczMiw2IEBAIGNsYXNzIFByb2Nlc3NpbmdDb25maWcgewog
ICBTdHJlYW1Db25maWcgc3RyZWFtc1tTdHJlYW1OYW1lOjprTnVtU3RyZWFtTmFtZXNdOwogfTsK
IAotLy8gVE9ETyhwZWFoKTogUmVtb3ZlIHRoaXMgaW50ZXJmYWNlLgotLy8gQSBmaWx0ZXJpbmcg
Y29tcG9uZW50IHdoaWNoIHJlbW92ZXMgREMgb2Zmc2V0IGFuZCBsb3ctZnJlcXVlbmN5IG5vaXNl
LgotLy8gUmVjb21tZW5kZWQgdG8gYmUgZW5hYmxlZCBvbiB0aGUgY2xpZW50LXNpZGUuCi1jbGFz
cyBIaWdoUGFzc0ZpbHRlciB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGludCBFbmFibGUoYm9vbCBl
bmFibGUpID0gMDsKLSAgdmlydHVhbCBib29sIGlzX2VuYWJsZWQoKSBjb25zdCA9IDA7Ci0KLSAg
dmlydHVhbCB+SGlnaFBhc3NGaWx0ZXIoKSB7fQotfTsKLQogLy8gQW4gZXN0aW1hdGlvbiBjb21w
b25lbnQgdXNlZCB0byByZXRyaWV2ZSBsZXZlbCBtZXRyaWNzLgogY2xhc3MgTGV2ZWxFc3RpbWF0
b3IgewogIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nl
c3Npbmdfc3RhdGlzdGljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZ19z
dGF0aXN0aWNzLmgKaW5kZXggMjM3ZDIzYzViY2U4YjJiZGFkZDdjYmE3ZjQyOThkMWQ2ZTkzNzM5
Yy4uNjgzZGIwNTJlNmM2YjdlNjllODcwMzU4NDBlMWNjNmYyOTJjNzEyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzLmgKQEAgLTExLDE2ICsx
MSwyNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfSU5DTFVERV9BVURJT19Q
Uk9DRVNTSU5HX1NUQVRJU1RJQ1NfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5H
X0lOQ0xVREVfQVVESU9fUFJPQ0VTU0lOR19TVEFUSVNUSUNTX0hfCiAKKyNpbmNsdWRlIDxzdGRp
bnQuaD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIC8vIFRoaXMg
dmVyc2lvbiBvZiB0aGUgc3RhdHMgdXNlcyBPcHRpb25hbHMsIGl0IHdpbGwgcmVwbGFjZSB0aGUg
cmVndWxhcgogLy8gQXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljcyBzdHJ1Y3QuCi1zdHJ1Y3QgQXVk
aW9Qcm9jZXNzaW5nU3RhdHMgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9Qcm9jZXNzaW5nU3Rh
dHMgewogICBBdWRpb1Byb2Nlc3NpbmdTdGF0cygpOwogICBBdWRpb1Byb2Nlc3NpbmdTdGF0cyhj
b25zdCBBdWRpb1Byb2Nlc3NpbmdTdGF0cyYgb3RoZXIpOwogICB+QXVkaW9Qcm9jZXNzaW5nU3Rh
dHMoKTsKIAorICAvLyBUaGUgcm9vdCBtZWFuIHNxdWFyZSAoUk1TKSBsZXZlbCBpbiBkQkZTIChk
ZWNpYmVscyBmcm9tIGRpZ2l0YWwKKyAgLy8gZnVsbC1zY2FsZSkgb2YgdGhlIGxhc3QgY2FwdHVy
ZSBmcmFtZSwgYWZ0ZXIgcHJvY2Vzc2luZy4gSXQgaXMKKyAgLy8gY29uc3RyYWluZWQgdG8gWy0x
MjcsIDBdLgorICAvLyBUaGUgY29tcHV0YXRpb24gZm9sbG93czogaHR0cHM6Ly90b29scy5pZXRm
Lm9yZy9odG1sL3JmYzY0NjUKKyAgLy8gd2l0aCB0aGUgaW50ZW50IHRoYXQgaXQgY2FuIHByb3Zp
ZGUgdGhlIFJUUCBhdWRpbyBsZXZlbCBpbmRpY2F0aW9uLgorICAvLyBPbmx5IHJlcG9ydGVkIGlm
IGxldmVsIGVzdGltYXRpb24gaXMgZW5hYmxlZCBpbiBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZy4K
KyAgYWJzbDo6b3B0aW9uYWw8aW50PiBvdXRwdXRfcm1zX2RiZnM7CisKICAgLy8gQUVDIFN0YXRp
c3RpY3MuCiAgIC8vIEVSTCA9IDEwbG9nXzEwKFBfZmFyIC8gUF9lY2hvKQogICBhYnNsOjpvcHRp
b25hbDxkb3VibGU+IGVjaG9fcmV0dXJuX2xvc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5j
bHVkZS9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2NvbmZpZy5oCmluZGV4IDM5OGFhYjYx
Y2ZmZTYzZGQ1MmYwNTgxZDk4MGFjMGY2N2YxNDRkYTkuLmU3N2QzZmQxNmQ3YjQxOTYzZGUzN2Zh
NzliZjYxMDgzZGNlOTJkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2NvbmZpZy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2NvbmZpZy5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5j
bHVkZSA8bWFwPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCkBAIC01Nyw3ICs1OCw3IEBAIGVudW0gY2xhc3MgQ29uZmlnT3B0aW9uSUQgewogLy8gICAg
Y29uZmlnLlNldDxBbGdvMV9Db3N0RnVuY3Rpb24+KG5ldyBTcXJDb3N0KCkpOwogLy8KIC8vIE5v
dGU6IFRoaXMgY2xhc3MgaXMgdGhyZWFkLWNvbXBhdGlibGUgKGxpa2UgU1RMIGNvbnRhaW5lcnMp
LgotY2xhc3MgQ29uZmlnIHsKK2NsYXNzIFJUQ19FWFBPUlQgQ29uZmlnIHsKICBwdWJsaWM6CiAg
IC8vIFJldHVybnMgdGhlIG9wdGlvbiBpZiBzZXQgb3IgYSBkZWZhdWx0IGNvbnN0cnVjdGVkIG9u
ZS4KICAgLy8gQ2FsbGVycyB0aGF0IGFjY2VzcyBvcHRpb25zIHRvbyBvZnRlbiBhcmUgZW5jb3Vy
YWdlZCB0byBjYWNoZSB0aGUgcmVzdWx0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUv
bW9ja19hdWRpb19wcm9jZXNzaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9tb2NrX2F1ZGlvX3By
b2Nlc3NpbmcuaAppbmRleCA0YTFmZTYyNmJkNWQ1OGIwYjg1ZTE5ZThkMWIyNDJmMDAzNDFkMDQ4
Li5mMDBhMTZkNWUyZDI2MTBiMTcxYjQwYzYyYTEzZGZiODJjYWMzNGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvaW5jbHVkZS9tb2NrX2F1ZGlvX3Byb2Nlc3NpbmcuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
aW5jbHVkZS9tb2NrX2F1ZGlvX3Byb2Nlc3NpbmcuaApAQCAtNDIsMTMgKzQyLDYgQEAgY2xhc3Mg
TW9ja0dhaW5Db250cm9sIDogcHVibGljIEdhaW5Db250cm9sIHsKICAgTU9DS19DT05TVF9NRVRI
T0QwKHN0cmVhbV9pc19zYXR1cmF0ZWQsIGJvb2woKSk7CiB9OwogCi1jbGFzcyBNb2NrSGlnaFBh
c3NGaWx0ZXIgOiBwdWJsaWMgSGlnaFBhc3NGaWx0ZXIgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+
TW9ja0hpZ2hQYXNzRmlsdGVyKCkge30KLSAgTU9DS19NRVRIT0QxKEVuYWJsZSwgaW50KGJvb2wg
ZW5hYmxlKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChpc19lbmFibGVkLCBib29sKCkpOwotfTsK
LQogY2xhc3MgTW9ja0xldmVsRXN0aW1hdG9yIDogcHVibGljIExldmVsRXN0aW1hdG9yIHsKICBw
dWJsaWM6CiAgIHZpcnR1YWwgfk1vY2tMZXZlbEVzdGltYXRvcigpIHt9CkBAIC0xMTQsNyArMTA3
LDYgQEAgY2xhc3MgTW9ja0F1ZGlvUHJvY2Vzc2luZyA6IHB1YmxpYyB0ZXN0aW5nOjpOaWNlTW9j
azxBdWRpb1Byb2Nlc3Npbmc+IHsKICBwdWJsaWM6CiAgIE1vY2tBdWRpb1Byb2Nlc3NpbmcoKQog
ICAgICAgOiBnYWluX2NvbnRyb2xfKG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrR2FpbkNvbnRy
b2w+KCkpLAotICAgICAgICBoaWdoX3Bhc3NfZmlsdGVyXyhuZXcgdGVzdGluZzo6TmljZU1vY2s8
TW9ja0hpZ2hQYXNzRmlsdGVyPigpKSwKICAgICAgICAgbGV2ZWxfZXN0aW1hdG9yXyhuZXcgdGVz
dGluZzo6TmljZU1vY2s8TW9ja0xldmVsRXN0aW1hdG9yPigpKSwKICAgICAgICAgbm9pc2Vfc3Vw
cHJlc3Npb25fKG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrTm9pc2VTdXBwcmVzc2lvbj4oKSks
CiAgICAgICAgIHZvaWNlX2RldGVjdGlvbl8obmV3IHRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tWb2lj
ZURldGVjdGlvbj4oKSkge30KQEAgLTE4MCwxMiArMTcyLDggQEAgY2xhc3MgTW9ja0F1ZGlvUHJv
Y2Vzc2luZyA6IHB1YmxpYyB0ZXN0aW5nOjpOaWNlTW9jazxBdWRpb1Byb2Nlc3Npbmc+IHsKICAg
TU9DS19NRVRIT0QwKERldGFjaFBsYXlvdXRBdWRpb0dlbmVyYXRvciwgdm9pZCgpKTsKIAogICBN
T0NLX01FVEhPRDAoVXBkYXRlSGlzdG9ncmFtc09uQ2FsbEVuZCwgdm9pZCgpKTsKLSAgTU9DS19D
T05TVF9NRVRIT0QwKEdldFN0YXRpc3RpY3MsIEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MoKSk7
CiAgIE1PQ0tfQ09OU1RfTUVUSE9EMShHZXRTdGF0aXN0aWNzLCBBdWRpb1Byb2Nlc3NpbmdTdGF0
cyhib29sKSk7CiAgIHZpcnR1YWwgTW9ja0dhaW5Db250cm9sKiBnYWluX2NvbnRyb2woKSBjb25z
dCB7IHJldHVybiBnYWluX2NvbnRyb2xfLmdldCgpOyB9Ci0gIHZpcnR1YWwgTW9ja0hpZ2hQYXNz
RmlsdGVyKiBoaWdoX3Bhc3NfZmlsdGVyKCkgY29uc3QgewotICAgIHJldHVybiBoaWdoX3Bhc3Nf
ZmlsdGVyXy5nZXQoKTsKLSAgfQogICB2aXJ0dWFsIE1vY2tMZXZlbEVzdGltYXRvciogbGV2ZWxf
ZXN0aW1hdG9yKCkgY29uc3QgewogICAgIHJldHVybiBsZXZlbF9lc3RpbWF0b3JfLmdldCgpOwog
ICB9CkBAIC0yMDAsNyArMTg4LDYgQEAgY2xhc3MgTW9ja0F1ZGlvUHJvY2Vzc2luZyA6IHB1Ymxp
YyB0ZXN0aW5nOjpOaWNlTW9jazxBdWRpb1Byb2Nlc3Npbmc+IHsKIAogIHByaXZhdGU6CiAgIHN0
ZDo6dW5pcXVlX3B0cjxNb2NrR2FpbkNvbnRyb2w+IGdhaW5fY29udHJvbF87Ci0gIHN0ZDo6dW5p
cXVlX3B0cjxNb2NrSGlnaFBhc3NGaWx0ZXI+IGhpZ2hfcGFzc19maWx0ZXJfOwogICBzdGQ6OnVu
aXF1ZV9wdHI8TW9ja0xldmVsRXN0aW1hdG9yPiBsZXZlbF9lc3RpbWF0b3JfOwogICBzdGQ6OnVu
aXF1ZV9wdHI8TW9ja05vaXNlU3VwcHJlc3Npb24+IG5vaXNlX3N1cHByZXNzaW9uXzsKICAgc3Rk
Ojp1bmlxdWVfcHRyPE1vY2tWb2ljZURldGVjdGlvbj4gdm9pY2VfZGV0ZWN0aW9uXzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9sZXZlbF9lc3RpbWF0b3JfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sZXZl
bF9lc3RpbWF0b3JfaW1wbC5jYwppbmRleCBjOTM3Zjg0NTI1MzRjZWE3MzNiMGMxZjYyMjg1OGU3
ZWE1ZWJlMzcyLi41YjQ5YjM1ZmRjYzU2NTM4MjRlMDg0YWU1NDQ0MjVkZGEwZjA3MjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvbGV2ZWxfZXN0aW1hdG9yX2ltcGwuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2xldmVsX2VzdGltYXRvcl9pbXBsLmNjCkBAIC0xMCw5ICsxMCwxMyBAQAogCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xldmVsX2VzdGltYXRvcl9pbXBsLmgiCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImFwaS9hcnJh
eV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZl
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ybXNfbGV2ZWwuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9s
b2dnaW5nL2FwbV9kYXRhX2R1bXBlci5jYwppbmRleCBlMmU4NjAyYjk4OWIzNjZiYzJhNjJmNjc2
ODFiNTA4ZWU1M2ZhYzVmLi5jYzg3OWM4YjA4ZmRjNWQ3ZDZjYmZmOTk0OTE2NmUyYWQ2ODk0MTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmNjCkBAIC0xMSw3ICsxMSw2IEBACiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVy
LmgiCiAKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogLy8gQ2hlY2sgdG8gdmVyaWZ5IHRoYXQg
dGhlIGRlZmluZSBpcyBwcm9wZXJseSBzZXQuCiAjaWYgIWRlZmluZWQoV0VCUlRDX0FQTV9ERUJV
R19EVU1QKSB8fCBcCkBAIC0yMCwxNiArMTksMzAgQEAKICNlbmRpZgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKLQogbmFtZXNwYWNlIHsKIAogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi1z
dGQ6OnN0cmluZyBGb3JtRmlsZU5hbWUoY29uc3QgY2hhciogbmFtZSwKKworI2lmIGRlZmluZWQo
V0VCUlRDX1dJTikKK2NvbnN0ZXhwciBjaGFyIGtQYXRoRGVsaW1pdGVyID0gJ1xcJzsKKyNlbHNl
Citjb25zdGV4cHIgY2hhciBrUGF0aERlbGltaXRlciA9ICcvJzsKKyNlbmRpZgorCitzdGQ6OnN0
cmluZyBGb3JtRmlsZU5hbWUoY29uc3QgY2hhciogb3V0cHV0X2RpciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBpbnN0YW5jZV9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVpbml0X2lu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWZmaXgp
IHsKICAgY2hhciBidWZbMTAyNF07CiAgIHJ0Yzo6U2ltcGxlU3RyaW5nQnVpbGRlciBzcyhidWYp
OworICBjb25zdCBzaXplX3Qgb3V0cHV0X2Rpcl9zaXplID0gc3RybGVuKG91dHB1dF9kaXIpOwor
ICBpZiAob3V0cHV0X2Rpcl9zaXplID4gMCkgeworICAgIHNzIDw8IG91dHB1dF9kaXI7CisgICAg
aWYgKG91dHB1dF9kaXJbb3V0cHV0X2Rpcl9zaXplIC0gMV0gIT0ga1BhdGhEZWxpbWl0ZXIpIHsK
KyAgICAgIHNzIDw8IGtQYXRoRGVsaW1pdGVyOworICAgIH0KKyAgfQogICBzcyA8PCBuYW1lIDw8
ICJfIiA8PCBpbnN0YW5jZV9pbmRleCA8PCAiLSIgPDwgcmVpbml0X2luZGV4IDw8IHN1ZmZpeDsK
ICAgcmV0dXJuIHNzLnN0cigpOwogfQpAQCAtNDEsMTggKzU0LDIyIEBAIHN0ZDo6c3RyaW5nIEZv
cm1GaWxlTmFtZShjb25zdCBjaGFyKiBuYW1lLAogQXBtRGF0YUR1bXBlcjo6QXBtRGF0YUR1bXBl
cihpbnQgaW5zdGFuY2VfaW5kZXgpCiAgICAgOiBpbnN0YW5jZV9pbmRleF8oaW5zdGFuY2VfaW5k
ZXgpIHt9CiAjZWxzZQotQXBtRGF0YUR1bXBlcjo6QXBtRGF0YUR1bXBlcihpbnQgaW5zdGFuY2Vf
aW5kZXgpIHt9CitBcG1EYXRhRHVtcGVyOjpBcG1EYXRhRHVtcGVyKGludCBpbnN0YW5jZV9pbmRl
eCl7fTsKICNlbmRpZgogCi1BcG1EYXRhRHVtcGVyOjp+QXBtRGF0YUR1bXBlcigpIHt9CitBcG1E
YXRhRHVtcGVyOjp+QXBtRGF0YUR1bXBlcigpID0gZGVmYXVsdDsKIAogI2lmIFdFQlJUQ19BUE1f
REVCVUdfRFVNUCA9PSAxCitib29sIEFwbURhdGFEdW1wZXI6OnJlY29yZGluZ19hY3RpdmF0ZWRf
ID0gZmFsc2U7CitjaGFyIEFwbURhdGFEdW1wZXI6Om91dHB1dF9kaXJfW10gPSAiIjsKKwogRklM
RSogQXBtRGF0YUR1bXBlcjo6R2V0UmF3RmlsZShjb25zdCBjaGFyKiBuYW1lKSB7Ci0gIHN0ZDo6
c3RyaW5nIGZpbGVuYW1lID0KLSAgICAgIEZvcm1GaWxlTmFtZShuYW1lLCBpbnN0YW5jZV9pbmRl
eF8sIHJlY29yZGluZ19zZXRfaW5kZXhfLCAiLmRhdCIpOworICBzdGQ6OnN0cmluZyBmaWxlbmFt
ZSA9IEZvcm1GaWxlTmFtZShvdXRwdXRfZGlyXywgbmFtZSwgaW5zdGFuY2VfaW5kZXhfLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRpbmdfc2V0X2luZGV4Xywg
Ii5kYXQiKTsKICAgYXV0byYgZiA9IHJhd19maWxlc19bZmlsZW5hbWVdOwogICBpZiAoIWYpIHsK
ICAgICBmLnJlc2V0KGZvcGVuKGZpbGVuYW1lLmNfc3RyKCksICJ3YiIpKTsKKyAgICBSVENfQ0hF
Q0soZi5nZXQoKSkgPDwgIkNhbm5vdCB3cml0ZSB0byAiIDw8IGZpbGVuYW1lIDw8ICIuIjsKICAg
fQogICByZXR1cm4gZi5nZXQoKTsKIH0KQEAgLTYwLDE1ICs3NywxNCBAQCBGSUxFKiBBcG1EYXRh
RHVtcGVyOjpHZXRSYXdGaWxlKGNvbnN0IGNoYXIqIG5hbWUpIHsKIFdhdldyaXRlciogQXBtRGF0
YUR1bXBlcjo6R2V0V2F2RmlsZShjb25zdCBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbnVtX2NoYW5uZWxzKSB7Ci0gIHN0ZDo6c3RyaW5nIGZp
bGVuYW1lID0KLSAgICAgIEZvcm1GaWxlTmFtZShuYW1lLCBpbnN0YW5jZV9pbmRleF8sIHJlY29y
ZGluZ19zZXRfaW5kZXhfLCAiLndhdiIpOworICBzdGQ6OnN0cmluZyBmaWxlbmFtZSA9IEZvcm1G
aWxlTmFtZShvdXRwdXRfZGlyXywgbmFtZSwgaW5zdGFuY2VfaW5kZXhfLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRpbmdfc2V0X2luZGV4XywgIi53YXYiKTsK
ICAgYXV0byYgZiA9IHdhdl9maWxlc19bZmlsZW5hbWVdOwogICBpZiAoIWYpIHsKICAgICBmLnJl
c2V0KG5ldyBXYXZXcml0ZXIoZmlsZW5hbWUuY19zdHIoKSwgc2FtcGxlX3JhdGVfaHosIG51bV9j
aGFubmVscykpOwogICB9CiAgIHJldHVybiBmLmdldCgpOwogfQotCiAjZW5kaWYKIAogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFf
ZHVtcGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaAppbmRleCBkMDQ1
MDI3YjM1NDE2NWEwMjQxOWJhOWQ0NGI3NjhmNjMxM2VmYzJhLi5iNTQxYWU4NGI5Yjg2YTc0OTRh
ZWY3M2Q3OTcwNzk0MTk5NjNiYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1f
ZGF0YV9kdW1wZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaApA
QCAtMTEsMTQgKzExLDIwIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19MT0dH
SU5HX0FQTV9EQVRBX0RVTVBFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdf
TE9HR0lOR19BUE1fREFUQV9EVU1QRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8c3RyaW5nPgorI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCiAjaW5jbHVk
ZSA8dW5vcmRlcmVkX21hcD4KKyNlbmRpZgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIK
KyNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQogI2luY2x1ZGUgImNvbW1vbl9hdWRpby93
YXZfZmlsZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2VuZGlmCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiAvLyBDaGVjayB0byB2ZXJpZnkgdGhh
dCB0aGUgZGVmaW5lIGlzIHByb3Blcmx5IHNldC4KQEAgLTQ3LDYgKzUzLDIxIEBAIGNsYXNzIEFw
bURhdGFEdW1wZXIgewogCiAgIH5BcG1EYXRhRHVtcGVyKCk7CiAKKyAgLy8gQWN0aXZhdGVzIG9y
IGRlYWN0aXZhdGUgdGhlIGR1bXBpbmcgZnVuY3Rpb25hbGl0eS4KKyAgc3RhdGljIHZvaWQgU2V0
QWN0aXZhdGVkKGJvb2wgYWN0aXZhdGVkKSB7CisjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09
IDEKKyAgICByZWNvcmRpbmdfYWN0aXZhdGVkXyA9IGFjdGl2YXRlZDsKKyNlbmRpZgorICB9CisK
KyAgLy8gU2V0IGFuIG9wdGlvbmFsIG91dHB1dCBkaXJlY3RvcnkuCisgIHN0YXRpYyB2b2lkIFNl
dE91dHB1dERpcmVjdG9yeShjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2RpcikgeworI2lmIFdF
QlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCisgICAgUlRDX0NIRUNLX0xUKG91dHB1dF9kaXIuc2l6
ZSgpLCBrT3V0cHV0RGlyTWF4TGVuZ3RoKTsKKyAgICBzdHJuY3B5KG91dHB1dF9kaXJfLCBvdXRw
dXRfZGlyLmNfc3RyKCksIG91dHB1dF9kaXIuc2l6ZSgpKTsKKyNlbmRpZgorICB9CisKICAgLy8g
UmVpbml0aWFsaXplcyB0aGUgZGF0YSBkdW1waW5nIHN1Y2ggdGhhdCBuZXcgdmVyc2lvbnMKICAg
Ly8gb2YgYWxsIGZpbGVzIGJlaW5nIGR1bXBlZCB0byBhcmUgY3JlYXRlZC4KICAgdm9pZCBJbml0
aWF0ZU5ld1NldE9mUmVjb3JkaW5ncygpIHsKQEAgLTU5LDExNSArODAsMTU1IEBAIGNsYXNzIEFw
bURhdGFEdW1wZXIgewogICAvLyB2YXJpb3VzIGZvcm1hdHMuCiAgIHZvaWQgRHVtcFJhdyhjb25z
dCBjaGFyKiBuYW1lLCBkb3VibGUgdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAx
Ci0gICAgRklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7Ci0gICAgZndyaXRlKCZ2LCBzaXpl
b2YodiksIDEsIGZpbGUpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAg
RklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7CisgICAgICBmd3JpdGUoJnYsIHNpemVvZih2
KSwgMSwgZmlsZSk7CisgICAgfQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3Qg
Y2hhciogbmFtZSwgc2l6ZV90IHZfbGVuZ3RoLCBjb25zdCBkb3VibGUqIHYpIHsKICNpZiBXRUJS
VENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUp
OwotICAgIGZ3cml0ZSh2LCBzaXplb2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICBpZiAo
cmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5h
bWUpOworICAgICAgZndyaXRlKHYsIHNpemVvZih2WzBdKSwgdl9sZW5ndGgsIGZpbGUpOworICAg
IH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGRvdWJsZT4gdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9
PSAxCi0gICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAgIGlmIChyZWNv
cmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRh
KCkpOworICAgIH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5h
bWUsIGZsb2F0IHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAgIEZJTEUq
IGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOwotICAgIGZ3cml0ZSgmdiwgc2l6ZW9mKHYpLCAxLCBm
aWxlKTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUg
PSBHZXRSYXdGaWxlKG5hbWUpOworICAgICAgZndyaXRlKCZ2LCBzaXplb2YodiksIDEsIGZpbGUp
OworICAgIH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUs
IHNpemVfdCB2X2xlbmd0aCwgY29uc3QgZmxvYXQqIHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVH
X0RVTVAgPT0gMQotICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOwotICAgIGZ3cml0
ZSh2LCBzaXplb2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICBpZiAocmVjb3JkaW5nX2Fj
dGl2YXRlZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOworICAgICAg
ZndyaXRlKHYsIHNpemVvZih2WzBdKSwgdl9sZW5ndGgsIGZpbGUpOworICAgIH0KICNlbmRpZgog
ICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IGZsb2F0PiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBEdW1w
UmF3KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0
ZWRfKSB7CisgICAgICBEdW1wUmF3KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSk7CisgICAgfQog
I2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFtZSwgYm9vbCB2KSB7
CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBEdW1wUmF3KG5hbWUsIHN0YXRp
Y19jYXN0PGludDE2X3Q+KHYpKTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAg
ICAgIER1bXBSYXcobmFtZSwgc3RhdGljX2Nhc3Q8aW50MTZfdD4odikpOworICAgIH0KICNlbmRp
ZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHNpemVfdCB2X2xlbmd0
aCwgY29uc3QgYm9vbCogdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAg
RklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7Ci0gICAgZm9yIChzaXplX3QgayA9IDA7IGsg
PCB2X2xlbmd0aDsgKytrKSB7Ci0gICAgICBpbnQxNl90IHZhbHVlID0gc3RhdGljX2Nhc3Q8aW50
MTZfdD4odltrXSk7Ci0gICAgICBmd3JpdGUoJnZhbHVlLCBzaXplb2YodmFsdWUpLCAxLCBmaWxl
KTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUgPSBH
ZXRSYXdGaWxlKG5hbWUpOworICAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCB2X2xlbmd0aDsg
KytrKSB7CisgICAgICAgIGludDE2X3QgdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQxNl90Pih2W2td
KTsKKyAgICAgICAgZndyaXRlKCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgMSwgZmlsZSk7CisgICAg
ICB9CiAgICAgfQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFt
ZSwgcnRjOjpBcnJheVZpZXc8Y29uc3QgYm9vbD4gdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdf
RFVNUCA9PSAxCi0gICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAgIGlm
IChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwg
di5kYXRhKCkpOworICAgIH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNo
YXIqIG5hbWUsIGludDE2X3QgdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0g
ICAgRklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7Ci0gICAgZndyaXRlKCZ2LCBzaXplb2Yo
diksIDEsIGZpbGUpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRklM
RSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7CisgICAgICBmd3JpdGUoJnYsIHNpemVvZih2KSwg
MSwgZmlsZSk7CisgICAgfQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hh
ciogbmFtZSwgc2l6ZV90IHZfbGVuZ3RoLCBjb25zdCBpbnQxNl90KiB2KSB7CiAjaWYgV0VCUlRD
X0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsK
LSAgICBmd3JpdGUodiwgc2l6ZW9mKHZbMF0pLCB2X2xlbmd0aCwgZmlsZSk7CisgICAgaWYgKHJl
Y29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1l
KTsKKyAgICAgIGZ3cml0ZSh2LCBzaXplb2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICB9
CiAjZW5kaWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBydGM6OkFy
cmF5Vmlldzxjb25zdCBpbnQxNl90PiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09
IDEKLSAgICBEdW1wUmF3KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSk7CisgICAgaWYgKHJlY29y
ZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBEdW1wUmF3KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEo
KSk7CisgICAgfQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFt
ZSwgaW50MzJfdCB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBGSUxF
KiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKLSAgICBmd3JpdGUoJnYsIHNpemVvZih2KSwgMSwg
ZmlsZSk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxl
ID0gR2V0UmF3RmlsZShuYW1lKTsKKyAgICAgIGZ3cml0ZSgmdiwgc2l6ZW9mKHYpLCAxLCBmaWxl
KTsKKyAgICB9CiAjZW5kaWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1l
LCBzaXplX3Qgdl9sZW5ndGgsIGNvbnN0IGludDMyX3QqIHYpIHsKICNpZiBXRUJSVENfQVBNX0RF
QlVHX0RVTVAgPT0gMQotICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOwotICAgIGZ3
cml0ZSh2LCBzaXplb2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICBpZiAocmVjb3JkaW5n
X2FjdGl2YXRlZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOworICAg
ICAgZndyaXRlKHYsIHNpemVvZih2WzBdKSwgdl9sZW5ndGgsIGZpbGUpOworICAgIH0KICNlbmRp
ZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHNpemVfdCB2KSB7CiAj
aWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBGSUxFKiBmaWxlID0gR2V0UmF3Rmls
ZShuYW1lKTsKLSAgICBmd3JpdGUoJnYsIHNpemVvZih2KSwgMSwgZmlsZSk7CisgICAgaWYgKHJl
Y29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1l
KTsKKyAgICAgIGZ3cml0ZSgmdiwgc2l6ZW9mKHYpLCAxLCBmaWxlKTsKKyAgICB9CiAjZW5kaWYK
ICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBzaXplX3Qgdl9sZW5ndGgs
IGNvbnN0IHNpemVfdCogdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAg
RklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7Ci0gICAgZndyaXRlKHYsIHNpemVvZih2WzBd
KSwgdl9sZW5ndGgsIGZpbGUpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAg
ICAgRklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7CisgICAgICBmd3JpdGUodiwgc2l6ZW9m
KHZbMF0pLCB2X2xlbmd0aCwgZmlsZSk7CisgICAgfQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1
bXBSYXcoY29uc3QgY2hhciogbmFtZSwgcnRjOjpBcnJheVZpZXc8Y29uc3QgaW50MzJfdD4gdikg
eworI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCisgICAgaWYgKHJlY29yZGluZ19hY3Rp
dmF0ZWRfKSB7CisgICAgICBEdW1wUmF3KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSk7CisgICAg
fQorI2VuZGlmCisgIH0KKworICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFtZSwgcnRjOjpB
cnJheVZpZXc8Y29uc3Qgc2l6ZV90PiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09
IDEKICAgICBEdW1wUmF3KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSk7CiAjZW5kaWYKQEAgLTE3
OSw4ICsyNDAsMTAgQEAgY2xhc3MgQXBtRGF0YUR1bXBlciB7CiAgICAgICAgICAgICAgICBpbnQg
c2FtcGxlX3JhdGVfaHosCiAgICAgICAgICAgICAgICBpbnQgbnVtX2NoYW5uZWxzKSB7CiAjaWYg
V0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBXYXZXcml0ZXIqIGZpbGUgPSBHZXRXYXZG
aWxlKG5hbWUsIHNhbXBsZV9yYXRlX2h6LCBudW1fY2hhbm5lbHMpOwotICAgIGZpbGUtPldyaXRl
U2FtcGxlcyh2LCB2X2xlbmd0aCk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7Cisg
ICAgICBXYXZXcml0ZXIqIGZpbGUgPSBHZXRXYXZGaWxlKG5hbWUsIHNhbXBsZV9yYXRlX2h6LCBu
dW1fY2hhbm5lbHMpOworICAgICAgZmlsZS0+V3JpdGVTYW1wbGVzKHYsIHZfbGVuZ3RoKTsKKyAg
ICB9CiAjZW5kaWYKICAgfQogCkBAIC0xODksMTIgKzI1MiwxNyBAQCBjbGFzcyBBcG1EYXRhRHVt
cGVyIHsKICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAg
IGludCBudW1fY2hhbm5lbHMpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAg
IER1bXBXYXYobmFtZSwgdi5zaXplKCksIHYuZGF0YSgpLCBzYW1wbGVfcmF0ZV9oeiwgbnVtX2No
YW5uZWxzKTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIER1bXBXYXYo
bmFtZSwgdi5zaXplKCksIHYuZGF0YSgpLCBzYW1wbGVfcmF0ZV9oeiwgbnVtX2NoYW5uZWxzKTsK
KyAgICB9CiAjZW5kaWYKICAgfQogCiAgcHJpdmF0ZToKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RV
TVAgPT0gMQorICBzdGF0aWMgYm9vbCByZWNvcmRpbmdfYWN0aXZhdGVkXzsKKyAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3Qga091dHB1dERpck1heExlbmd0aCA9IDEwMjQ7CisgIHN0YXRpYyBjaGFy
IG91dHB1dF9kaXJfW2tPdXRwdXREaXJNYXhMZW5ndGhdOwogICBjb25zdCBpbnQgaW5zdGFuY2Vf
aW5kZXhfOwogICBpbnQgcmVjb3JkaW5nX3NldF9pbmRleF8gPSAwOwogICBzdGQ6OnVub3JkZXJl
ZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxGSUxFLCBSYXdGaWxlQ2xvc2VGdW5j
dG9yPj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb3dfY3V0X2ZpbHRlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9sb3dfY3V0X2ZpbHRlci5jYwppbmRleCA1MjQ1YzY4ZDAyYTQxOWU2ZjY1NjA1NTBlNmViZDA5
ZGUxZmZkYmI0Li41ODFkNmJjNDJhODgwMzBmNmFmMjAwNzEzMThkYWQ5YWQ3NjgwN2E3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvbG93X2N1dF9maWx0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvd19j
dXRfZmlsdGVyLmNjCkBAIC0xMCw4ICsxMCwxMyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2xvd19jdXRfZmlsdGVyLmgiCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNp
bmNsdWRlIDxjc3RyaW5nPgorCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNz
aW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9ub2lzZV9zdXBwcmVzc2lvbl9pbXBsLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL25v
aXNlX3N1cHByZXNzaW9uX2ltcGwuY2MKaW5kZXggMTVkNDA0MzIzYzM2Zjg4ZWZmMWYxNjE4ZTA0
MjFhMGY2NWFhYzFjZi4uZDhkOWUzMjM0MGIxY2NmMTJlZWE3ZjdjY2JkMzU3NWYxNDJkZGQxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL25vaXNlX3N1cHByZXNzaW9uX2ltcGwuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL25vaXNlX3N1cHByZXNzaW9uX2ltcGwuY2MKQEAgLTExLDkgKzExLDExIEBACiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL25vaXNlX3N1cHByZXNzaW9uX2ltcGwuaCIK
IAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rv
cm1hZ2ljLmgiCiAjaWYgZGVmaW5lZChXRUJSVENfTlNfRkxPQVQpCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL25zL25vaXNlX3N1cHByZXNzaW9uLmgiCisKICNkZWZpbmUgTlNf
Q1JFQVRFIFdlYlJ0Y05zX0NyZWF0ZQogI2RlZmluZSBOU19GUkVFIFdlYlJ0Y05zX0ZyZWUKICNk
ZWZpbmUgTlNfSU5JVCBXZWJSdGNOc19Jbml0CkBAIC0yMSw2ICsyMyw3IEBACiB0eXBlZGVmIE5z
SGFuZGxlIE5zU3RhdGU7CiAjZWxpZiBkZWZpbmVkKFdFQlJUQ19OU19GSVhFRCkKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbnMvbm9pc2Vfc3VwcHJlc3Npb25feC5oIgorCiAj
ZGVmaW5lIE5TX0NSRUFURSBXZWJSdGNOc3hfQ3JlYXRlCiAjZGVmaW5lIE5TX0ZSRUUgV2ViUnRj
TnN4X0ZyZWUKICNkZWZpbmUgTlNfSU5JVCBXZWJSdGNOc3hfSW5pdApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL3Jlc2lkdWFsX2VjaG9fZGV0ZWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvcmVzaWR1YWxfZWNo
b19kZXRlY3Rvci5jYwppbmRleCBlODA1MDEzNThlYWFhZmUyNDExMThjN2NiZmJjODI0OGY5ZDQ2
NmUxLi4zNDU0MjE0ZmQ3MzlkNmRkMzZmMGFhZmMwYjhmMjUwM2FkNWJhOWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvcmVzaWR1YWxfZWNob19kZXRlY3Rvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvcmVz
aWR1YWxfZWNob19kZXRlY3Rvci5jYwpAQCAtMTMsOSArMTMsMTEgQEAKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8bnVtZXJpYz4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9u
YWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVt
cGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3Jtc19sZXZlbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Jtc19sZXZlbC5oCmluZGV4IDlhYTU0OWE1N2MxZTMz
NmE0ZWM2ZDc5MzQzN2UzYmZhZjNlYjQ4NzAuLmU2YjU4NDllYWQ4YmRlODhkY2MyZjcxN2MzMDZi
NmIyMGIyNjZmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ybXNfbGV2ZWwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3Npbmcvcm1zX2xldmVsLmgKQEAgLTExLDYgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX1JNU19MRVZFTF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJ
TkdfUk1TX0xFVkVMX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQu
aD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJy
YXlfdmlldy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRpb19wcm9jZXNzaW5n
X3NpbXVsYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2F1ZGlvX3Byb2Nlc3Npbmdfc2ltdWxhdG9y
LmNjCmluZGV4IDY1ZjNjODc0OTdjODVjZGE2MzVhNGYyNmU4NjgwNmM1MDA0ZWM4ZjMuLmRmOWY0
OTc2YmUyN2QwYWUwM2M4MDUzYjAwNTJjZDBkYmUzN2VjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy90ZXN0L2F1ZGlvX3Byb2Nlc3Npbmdfc2ltdWxhdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0
L2F1ZGlvX3Byb2Nlc3Npbmdfc2ltdWxhdG9yLmNjCkBAIC0xOCwxMiArMTgsMTQgQEAKICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRl
ICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZ19qc29uLmgiCiAjaW5jbHVkZSAiYXBp
L2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlv
L2luY2x1ZGUvYXVkaW9fdXRpbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWNfZHVtcC9hZWNfZHVtcF9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV9pbXBsLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2Zha2VfcmVjb3JkaW5nX2Rl
dmljZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKQEAgLTM0LDYwMyArMzYsMzIgQEAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFt
ZXNwYWNlIHRlc3QgewogbmFtZXNwYWNlIHsKLQotLy8gUHJpbnRzIG91dCB0aGUgY3VycmVudGx5
IHVzZWQgQUVDMyBwYXJhbWV0ZXIgdmFsdWVzIGluIEpTT04gZm9ybWF0Lgotdm9pZCBQcmludEFl
YzNQYXJhbWV0ZXJWYWx1ZXMoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNmZykgewotICBz
dGQ6OmNvdXQgPDwgInsiOwotICBzdGQ6OmNvdXQgPDwgIlwiZGVsYXlcIjogeyI7Ci0gIHN0ZDo6
Y291dCA8PCAiXCJkZWZhdWx0X2RlbGF5XCI6ICIgPDwgY2ZnLmRlbGF5LmRlZmF1bHRfZGVsYXkg
PDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZG93bl9zYW1wbGluZ19mYWN0b3JcIjogIiA8PCBj
ZmcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3Rk
Ojpjb3V0IDw8ICJcIm51bV9maWx0ZXJzXCI6ICIgPDwgY2ZnLmRlbGF5Lm51bV9maWx0ZXJzIDw8
ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImFwaV9jYWxsX2ppdHRlcl9ibG9ja3NcIjogIgotICAg
ICAgICAgICAgPDwgY2ZnLmRlbGF5LmFwaV9jYWxsX2ppdHRlcl9ibG9ja3MgPDwgIiwiOwotICBz
dGQ6OmNvdXQgPDwgIlwibWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3NcIjogIgotICAgICAgICAg
ICAgPDwgY2ZnLmRlbGF5Lm1pbl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tzIDw8ICIsIjsKLSAgc3Rk
Ojpjb3V0IDw8ICJcImRlbGF5X2hlYWRyb29tX2Jsb2Nrc1wiOiAiIDw8IGNmZy5kZWxheS5kZWxh
eV9oZWFkcm9vbV9ibG9ja3MKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJc
Imh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3NcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmRlbGF5
Lmh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiaHlz
dGVyZXNpc19saW1pdF8yX2Jsb2Nrc1wiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZGVsYXkuaHlz
dGVyZXNpc19saW1pdF8yX2Jsb2NrcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJza2V3X2h5
c3RlcmVzaXNfYmxvY2tzXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5kZWxheS5za2V3X2h5c3Rl
cmVzaXNfYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImZpeGVkX2NhcHR1cmVfZGVs
YXlfc2FtcGxlc1wiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZGVsYXkuZml4ZWRfY2FwdHVyZV9k
ZWxheV9zYW1wbGVzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImRlbGF5X2VzdGltYXRlX3Nt
b290aGluZ1wiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZGVsYXkuZGVsYXlfZXN0aW1hdGVfc21v
b3RoaW5nIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rp
b25fdGhyZXNob2xkXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5kZWxheS5kZWxheV9jYW5kaWRh
dGVfZGV0ZWN0aW9uX3RocmVzaG9sZCA8PCAiLCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcImRlbGF5
X3NlbGVjdGlvbl90aHJlc2hvbGRzXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwiaW5pdGlhbFwi
OiAiIDw8IGNmZy5kZWxheS5kZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcy5pbml0aWFsCi0gICAg
ICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJjb252ZXJnZWRcIjogIgotICAgICAg
ICAgICAgPDwgY2ZnLmRlbGF5LmRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzLmNvbnZlcmdlZDsK
LSAgc3RkOjpjb3V0IDw8ICJ9IjsKLQotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNv
dXQgPDwgIlwiZmlsdGVyXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibWFpblwiOiBbIjsKLSAg
c3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIubWFpbi5sZW5ndGhfYmxvY2tzIDw8ICIsIjsKLSAgc3Rk
Ojpjb3V0IDw8IGNmZy5maWx0ZXIubWFpbi5sZWFrYWdlX2NvbnZlcmdlZCA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCBjZmcuZmlsdGVyLm1haW4ubGVha2FnZV9kaXZlcmdlZCA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCBjZmcuZmlsdGVyLm1haW4uZXJyb3JfZmxvb3IgPDwgIiwiOwotICBzdGQ6OmNv
dXQgPDwgY2ZnLmZpbHRlci5tYWluLm5vaXNlX2dhdGU7Ci0gIHN0ZDo6Y291dCA8PCAiXSwiOwot
Ci0gIHN0ZDo6Y291dCA8PCAiXCJzaGFkb3dcIjogWyI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuZmls
dGVyLnNoYWRvdy5sZW5ndGhfYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5maWx0
ZXIuc2hhZG93LnJhdGUgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5zaGFkb3cu
bm9pc2VfZ2F0ZTsKLSAgc3RkOjpjb3V0IDw8ICJdLCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcIm1h
aW5faW5pdGlhbFwiOiBbIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIubWFpbl9pbml0aWFs
Lmxlbmd0aF9ibG9ja3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5tYWluX2lu
aXRpYWwubGVha2FnZV9jb252ZXJnZWQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRl
ci5tYWluX2luaXRpYWwubGVha2FnZV9kaXZlcmdlZCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBj
ZmcuZmlsdGVyLm1haW5faW5pdGlhbC5lcnJvcl9mbG9vciA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8
PCBjZmcuZmlsdGVyLm1haW5faW5pdGlhbC5ub2lzZV9nYXRlOwotICBzdGQ6OmNvdXQgPDwgIl0s
IjsKLQotICBzdGQ6OmNvdXQgPDwgIlwic2hhZG93X2luaXRpYWxcIjogWyI7Ci0gIHN0ZDo6Y291
dCA8PCBjZmcuZmlsdGVyLnNoYWRvd19pbml0aWFsLmxlbmd0aF9ibG9ja3MgPDwgIiwiOwotICBz
dGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5zaGFkb3dfaW5pdGlhbC5yYXRlIDw8ICIsIjsKLSAgc3Rk
Ojpjb3V0IDw8IGNmZy5maWx0ZXIuc2hhZG93X2luaXRpYWwubm9pc2VfZ2F0ZTsKLSAgc3RkOjpj
b3V0IDw8ICJdLCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcImNvbmZpZ19jaGFuZ2VfZHVyYXRpb25f
YmxvY2tzXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5maWx0ZXIuY29uZmlnX2NoYW5nZV9kdXJh
dGlvbl9ibG9ja3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiaW5pdGlhbF9zdGF0ZV9zZWNv
bmRzXCI6ICIgPDwgY2ZnLmZpbHRlci5pbml0aWFsX3N0YXRlX3NlY29uZHMKLSAgICAgICAgICAg
IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlXCI6
ICIKLSAgICAgICAgICAgIDw8IChjZmcuZmlsdGVyLmNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNl
ID8gInRydWUiIDogImZhbHNlIikKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8
ICJcImVuYWJsZV9zaGFkb3dfZmlsdGVyX291dHB1dF91c2FnZVwiOiAiCi0gICAgICAgICAgICA8
PCAoY2ZnLmZpbHRlci5lbmFibGVfc2hhZG93X2ZpbHRlcl9vdXRwdXRfdXNhZ2UgPyAidHJ1ZSIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6ICJmYWxzZSIpOwotCi0gIHN0ZDo6Y291dCA8PCAifSwiOwotCi0gIHN0ZDo6Y291dCA8
PCAiXCJlcmxlXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibWluXCI6ICIgPDwgY2ZnLmVybGUu
bWluIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1heF9sXCI6ICIgPDwgY2ZnLmVybGUubWF4
X2wgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibWF4X2hcIjogIiA8PCBjZmcuZXJsZS5tYXhf
aCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJvbnNldF9kZXRlY3Rpb25cIjogIgotICAgICAg
ICAgICAgPDwgKGNmZy5lcmxlLm9uc2V0X2RldGVjdGlvbiA/ICJ0cnVlIiA6ICJmYWxzZSIpOwot
ICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwiZXBfc3RyZW5ndGhcIjog
eyI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJsZlwiOiAiIDw8IGNmZy5lcF9zdHJlbmd0aC5sZiA8PCAi
LCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJtZlwiOiAiIDw8IGNmZy5lcF9zdHJlbmd0aC5tZiA8PCAi
LCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJoZlwiOiAiIDw8IGNmZy5lcF9zdHJlbmd0aC5oZiA8PCAi
LCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJkZWZhdWx0X2xlblwiOiAiIDw8IGNmZy5lcF9zdHJlbmd0
aC5kZWZhdWx0X2xlbiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJyZXZlcmJfYmFzZWRfb25f
cmVuZGVyXCI6ICIKLSAgICAgICAgICAgIDw8IChjZmcuZXBfc3RyZW5ndGgucmV2ZXJiX2Jhc2Vk
X29uX3JlbmRlciA/ICJ0cnVlIiA6ICJmYWxzZSIpCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJlY2hvX2Nhbl9zYXR1cmF0ZVwiOiAiCi0gICAgICAgICAgICA8PCAoY2Zn
LmVwX3N0cmVuZ3RoLmVjaG9fY2FuX3NhdHVyYXRlID8gInRydWUiIDogImZhbHNlIikgPDwgIiwi
OwotICBzdGQ6OmNvdXQgPDwgIlwiYm91bmRlZF9lcmxcIjogIgotICAgICAgICAgICAgPDwgKGNm
Zy5lcF9zdHJlbmd0aC5ib3VuZGVkX2VybCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotCi0gIHN0ZDo6
Y291dCA8PCAifSwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJnYWluX21hc2tcIjogeyI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJtMFwiOiAiIDw8IGNmZy5nYWluX21hc2subTAgPDwgIiwiOwotICBzdGQ6
OmNvdXQgPDwgIlwibTFcIjogIiA8PCBjZmcuZ2Fpbl9tYXNrLm0xIDw8ICIsIjsKLSAgc3RkOjpj
b3V0IDw8ICJcIm0yXCI6ICIgPDwgY2ZnLmdhaW5fbWFzay5tMiA8PCAiLCI7Ci0gIHN0ZDo6Y291
dCA8PCAiXCJtM1wiOiAiIDw8IGNmZy5nYWluX21hc2subTMgPDwgIiwiOwotICBzdGQ6OmNvdXQg
PDwgIlwibTVcIjogIiA8PCBjZmcuZ2Fpbl9tYXNrLm01IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8
ICJcIm02XCI6ICIgPDwgY2ZnLmdhaW5fbWFzay5tNiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAi
XCJtN1wiOiAiIDw8IGNmZy5nYWluX21hc2subTcgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwi
bThcIjogIiA8PCBjZmcuZ2Fpbl9tYXNrLm04IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm05
XCI6ICIgPDwgY2ZnLmdhaW5fbWFzay5tOSA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJnYWlu
X2N1cnZlX29mZnNldFwiOiAiIDw8IGNmZy5nYWluX21hc2suZ2Fpbl9jdXJ2ZV9vZmZzZXQKLSAg
ICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImdhaW5fY3VydmVfc2xvcGVcIjog
IiA8PCBjZmcuZ2Fpbl9tYXNrLmdhaW5fY3VydmVfc2xvcGUKLSAgICAgICAgICAgIDw8ICIsIjsK
LSAgc3RkOjpjb3V0IDw8ICJcInRlbXBvcmFsX21hc2tpbmdfbGZcIjogIiA8PCBjZmcuZ2Fpbl9t
YXNrLnRlbXBvcmFsX21hc2tpbmdfbGYKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0
IDw8ICJcInRlbXBvcmFsX21hc2tpbmdfaGZcIjogIiA8PCBjZmcuZ2Fpbl9tYXNrLnRlbXBvcmFs
X21hc2tpbmdfaGYKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcInRlbXBv
cmFsX21hc2tpbmdfbGZfYmFuZHNcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmdhaW5fbWFzay50
ZW1wb3JhbF9tYXNraW5nX2xmX2JhbmRzOwotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6
OmNvdXQgPDwgIlwiZWNob19hdWRpYmlsaXR5XCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibG93
X3JlbmRlcl9saW1pdFwiOiAiIDw8IGNmZy5lY2hvX2F1ZGliaWxpdHkubG93X3JlbmRlcl9saW1p
dAotICAgICAgICAgICAgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibm9ybWFsX3JlbmRlcl9s
aW1pdFwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZWNob19hdWRpYmlsaXR5Lm5vcm1hbF9yZW5k
ZXJfbGltaXQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZmxvb3JfcG93ZXJcIjogIiA8PCBj
ZmcuZWNob19hdWRpYmlsaXR5LmZsb29yX3Bvd2VyIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJc
ImF1ZGliaWxpdHlfdGhyZXNob2xkX2xmXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5lY2hvX2F1
ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfbGYgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwg
IlwiYXVkaWJpbGl0eV90aHJlc2hvbGRfbWZcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmVjaG9f
YXVkaWJpbGl0eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9tZiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8
PCAiXCJhdWRpYmlsaXR5X3RocmVzaG9sZF9oZlwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZWNo
b19hdWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhyZXNob2xkX2hmIDw8ICIsIjsKLSAgc3RkOjpjb3V0
IDw8ICJcInVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXNcIjogIgotICAgICAgICAgICAgPDwgKGNm
Zy5lY2hvX2F1ZGliaWxpdHkudXNlX3N0YXRpb25hcnlfcHJvcGVydGllcyA/ICJ0cnVlIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICJmYWxzZSIpCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJ1c2Vf
c3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdFwiOiAiCi0gICAgICAgICAgICA8PCAoY2Zn
LmVjaG9fYXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdAotICAg
ICAgICAgICAgICAgICAgICA/ICJ0cnVlIgotICAgICAgICAgICAgICAgICAgICA6ICJmYWxzZSIp
OwotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwicmVuZGVyX2xldmVs
c1wiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcImFjdGl2ZV9yZW5kZXJfbGltaXRcIjogIgotICAg
ICAgICAgICAgPDwgY2ZnLnJlbmRlcl9sZXZlbHMuYWN0aXZlX3JlbmRlcl9saW1pdCA8PCAiLCI7
Ci0gIHN0ZDo6Y291dCA8PCAiXCJwb29yX2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0XCI6ICIKLSAg
ICAgICAgICAgIDw8IGNmZy5yZW5kZXJfbGV2ZWxzLnBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGlt
aXQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwicG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1p
dF9kczhcIjogIgotICAgICAgICAgICAgPDwgY2ZnLnJlbmRlcl9sZXZlbHMucG9vcl9leGNpdGF0
aW9uX3JlbmRlcl9saW1pdF9kczg7Ci0gIHN0ZDo6Y291dCA8PCAifSwiOwotCi0gIHN0ZDo6Y291
dCA8PCAiXCJlY2hvX3JlbW92YWxfY29udHJvbFwiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcImdh
aW5fcmFtcHVwXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwiaW5pdGlhbF9nYWluXCI6ICIKLSAg
ICAgICAgICAgIDw8IGNmZy5lY2hvX3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5pbml0aWFs
X2dhaW4gPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZmlyc3Rfbm9uX3plcm9fZ2FpblwiOiAi
Ci0gICAgICAgICAgICA8PCBjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZmly
c3Rfbm9uX3plcm9fZ2FpbiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJub25femVyb19nYWlu
X2Jsb2Nrc1wiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fp
bl9yYW1wdXAubm9uX3plcm9fZ2Fpbl9ibG9ja3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwi
ZnVsbF9nYWluX2Jsb2Nrc1wiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZWNob19yZW1vdmFsX2Nv
bnRyb2wuZ2Fpbl9yYW1wdXAuZnVsbF9nYWluX2Jsb2NrczsKLSAgc3RkOjpjb3V0IDw8ICJ9LCI7
Ci0gIHN0ZDo6Y291dCA8PCAiXCJoYXNfY2xvY2tfZHJpZnRcIjogIgotICAgICAgICAgICAgPDwg
KGNmZy5lY2hvX3JlbW92YWxfY29udHJvbC5oYXNfY2xvY2tfZHJpZnQgPyAidHJ1ZSIgOiAiZmFs
c2UiKQotICAgICAgICAgICAgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibGluZWFyX2FuZF9z
dGFibGVfZWNob19wYXRoXCI6ICIKLSAgICAgICAgICAgIDw8IChjZmcuZWNob19yZW1vdmFsX2Nv
bnRyb2wubGluZWFyX2FuZF9zdGFibGVfZWNob19wYXRoID8gInRydWUiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
ICJmYWxzZSIpOwotCi0gIHN0ZDo6Y291dCA8PCAifSwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJl
Y2hvX21vZGVsXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibm9pc2VfZmxvb3JfaG9sZFwiOiAi
IDw8IGNmZy5lY2hvX21vZGVsLm5vaXNlX2Zsb29yX2hvbGQKLSAgICAgICAgICAgIDw8ICIsIjsK
LSAgc3RkOjpjb3V0IDw8ICJcIm1pbl9ub2lzZV9mbG9vcl9wb3dlclwiOiAiCi0gICAgICAgICAg
ICA8PCBjZmcuZWNob19tb2RlbC5taW5fbm9pc2VfZmxvb3JfcG93ZXIgPDwgIiwiOwotICBzdGQ6
OmNvdXQgPDwgIlwic3RhdGlvbmFyeV9nYXRlX3Nsb3BlXCI6ICIKLSAgICAgICAgICAgIDw8IGNm
Zy5lY2hvX21vZGVsLnN0YXRpb25hcnlfZ2F0ZV9zbG9wZSA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8
PCAiXCJub2lzZV9nYXRlX3Bvd2VyXCI6ICIgPDwgY2ZnLmVjaG9fbW9kZWwubm9pc2VfZ2F0ZV9w
b3dlcgotICAgICAgICAgICAgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibm9pc2VfZ2F0ZV9z
bG9wZVwiOiAiIDw8IGNmZy5lY2hvX21vZGVsLm5vaXNlX2dhdGVfc2xvcGUKLSAgICAgICAgICAg
IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcInJlbmRlcl9wcmVfd2luZG93X3NpemVcIjogIgot
ICAgICAgICAgICAgPDwgY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZSA8PCAi
LCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJyZW5kZXJfcG9zdF93aW5kb3dfc2l6ZVwiOiAiCi0gICAg
ICAgICAgICA8PCBjZmcuZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6ZSA8PCAiLCI7
Ci0gIHN0ZDo6Y291dCA8PCAiXCJyZW5kZXJfcHJlX3dpbmRvd19zaXplX2luaXRcIjogIgotICAg
ICAgICAgICAgPDwgY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0IDw8
ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcInJlbmRlcl9wb3N0X3dpbmRvd19zaXplX2luaXRcIjog
IgotICAgICAgICAgICAgPDwgY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemVf
aW5pdCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJub25saW5lYXJfaG9sZFwiOiAiIDw8IGNm
Zy5lY2hvX21vZGVsLm5vbmxpbmVhcl9ob2xkIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm5v
bmxpbmVhcl9yZWxlYXNlXCI6ICIgPDwgY2ZnLmVjaG9fbW9kZWwubm9ubGluZWFyX3JlbGVhc2U7
Ci0gIHN0ZDo6Y291dCA8PCAifSwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJzdXBwcmVzc29yXCI6
IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibmVhcmVuZF9hdmVyYWdlX2Jsb2Nrc1wiOiAiCi0gICAg
ICAgICAgICA8PCBjZmcuc3VwcHJlc3Nvci5uZWFyZW5kX2F2ZXJhZ2VfYmxvY2tzIDw8ICIsIjsK
LSAgc3RkOjpjb3V0IDw8ICJcIm5vcm1hbF90dW5pbmdcIjogeyI7Ci0gIHN0ZDo6Y291dCA8PCAi
XCJtYXNrX2xmXCI6IFsiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1
bmluZy5tYXNrX2xmLmVucl90cmFuc3BhcmVudCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcu
c3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfbGYuZW5yX3N1cHByZXNzIDw8ICIsIjsKLSAg
c3RkOjpjb3V0IDw8IGNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19sZi5lbXJfdHJh
bnNwYXJlbnQ7Ci0gIHN0ZDo6Y291dCA8PCAiXSwiOwotICBzdGQ6OmNvdXQgPDwgIlwibWFza19o
ZlwiOiBbIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFz
a19oZi5lbnJfdHJhbnNwYXJlbnQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNz
b3Iubm9ybWFsX3R1bmluZy5tYXNrX2hmLmVucl9zdXBwcmVzcyA8PCAiLCI7Ci0gIHN0ZDo6Y291
dCA8PCBjZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYuZW1yX3RyYW5zcGFyZW50
OwotICBzdGQ6OmNvdXQgPDwgIl0sIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1heF9pbmNfZmFjdG9y
XCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWF4X2lu
Y19mYWN0b3IgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibWF4X2RlY19mYWN0b3JfbGZcIjog
IgotICAgICAgICAgICAgPDwgY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXhfZGVjX2Zh
Y3Rvcl9sZjsKLSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJuZWFyZW5k
X3R1bmluZ1wiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1hc2tfbGZcIjogWyI7Ci0gIHN0ZDo6
Y291dCA8PCBjZmcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2xmLmVucl90cmFuc3Bh
cmVudCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmlu
Zy5tYXNrX2xmLmVucl9zdXBwcmVzcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuc3VwcHJl
c3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2xmLmVtcl90cmFuc3BhcmVudDsKLSAgc3RkOjpjb3V0
IDw8ICJdLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJtYXNrX2hmXCI6IFsiOwotICBzdGQ6OmNvdXQg
PDwgY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19oZi5lbnJfdHJhbnNwYXJlbnQg
PDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFz
a19oZi5lbnJfc3VwcHJlc3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3Iu
bmVhcmVuZF90dW5pbmcubWFza19oZi5lbXJfdHJhbnNwYXJlbnQ7Ci0gIHN0ZDo6Y291dCA8PCAi
XSwiOwotICBzdGQ6OmNvdXQgPDwgIlwibWF4X2luY19mYWN0b3JcIjogIgotICAgICAgICAgICAg
PDwgY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWF4X2luY19mYWN0b3IgPDwgIiwiOwot
ICBzdGQ6OmNvdXQgPDwgIlwibWF4X2RlY19mYWN0b3JfbGZcIjogIgotICAgICAgICAgICAgPDwg
Y2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWF4X2RlY19mYWN0b3JfbGY7Ci0gIHN0ZDo6
Y291dCA8PCAifSwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rp
b25cIjogeyI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJlbnJfdGhyZXNob2xkXCI6ICIKLSAgICAgICAg
ICAgIDw8IGNmZy5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmVucl90aHJl
c2hvbGQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwic25yX3RocmVzaG9sZFwiOiAiCi0gICAg
ICAgICAgICA8PCBjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5zbnJf
dGhyZXNob2xkIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImhvbGRfZHVyYXRpb25cIjogIgot
ICAgICAgICAgICAgPDwgY2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24u
aG9sZF9kdXJhdGlvbiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJ0cmlnZ2VyX3RocmVzaG9s
ZFwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2Rl
dGVjdGlvbi50cmlnZ2VyX3RocmVzaG9sZDsKLSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0gIHN0ZDo6
Y291dCA8PCAiXCJoaWdoX2JhbmRzX3N1cHByZXNzaW9uXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwg
IlwiZW5yX3RocmVzaG9sZFwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuc3VwcHJlc3Nvci5oaWdo
X2JhbmRzX3N1cHByZXNzaW9uLmVucl90aHJlc2hvbGQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwg
IlwibWF4X2dhaW5fZHVyaW5nX2VjaG9cIjogIgotICAgICAgICAgICAgPDwgY2ZnLnN1cHByZXNz
b3IuaGlnaF9iYW5kc19zdXBwcmVzc2lvbi5tYXhfZ2Fpbl9kdXJpbmdfZWNobzsKLSAgc3RkOjpj
b3V0IDw8ICJ9LCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJmbG9vcl9maXJzdF9pbmNyZWFzZVwiOiAi
Ci0gICAgICAgICAgICA8PCBjZmcuc3VwcHJlc3Nvci5mbG9vcl9maXJzdF9pbmNyZWFzZSA8PCAi
LCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJlbmZvcmNlX3RyYW5zcGFyZW50XCI6ICIKLSAgICAgICAg
ICAgIDw8IChjZmcuc3VwcHJlc3Nvci5lbmZvcmNlX3RyYW5zcGFyZW50ID8gInRydWUiIDogImZh
bHNlIikgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZW5mb3JjZV9lbXB0eV9oaWdoZXJfYmFu
ZHNcIjogIgotICAgICAgICAgICAgPDwgKGNmZy5zdXBwcmVzc29yLmVuZm9yY2VfZW1wdHlfaGln
aGVyX2JhbmRzID8gInRydWUiIDogImZhbHNlIik7Ci0gIHN0ZDo6Y291dCA8PCAifSI7Ci0gIHN0
ZDo6Y291dCA8PCAifSI7Ci0gIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CisvLyBIZWxwZXIgZm9y
IHJlYWRpbmcgSlNPTiBmcm9tIGEgZmlsZSBhbmQgcGFyc2luZyBpdCB0byBhbiBBRUMzIGNvbmZp
Z3VyYXRpb24uCitFY2hvQ2FuY2VsbGVyM0NvbmZpZyBSZWFkQWVjM0NvbmZpZ0Zyb21Kc29uRmls
ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpIHsKKyAgc3RkOjpzdHJpbmcganNvbl9zdHJp
bmc7CisgIHN0ZDo6c3RyaW5nIHM7CisgIHN0ZDo6aWZzdHJlYW0gZihmaWxlbmFtZS5jX3N0cigp
KTsKKyAgaWYgKGYuZmFpbCgpKSB7CisgICAgc3RkOjpjb3V0IDw8ICJGYWlsZWQgdG8gb3BlbiB0
aGUgZmlsZSAiIDw8IGZpbGVuYW1lIDw8IHN0ZDo6ZW5kbDsKKyAgICBSVENfQ0hFQ0soZmFsc2Up
OworICB9CisgIHdoaWxlIChzdGQ6OmdldGxpbmUoZiwgcykpIHsKKyAgICBqc29uX3N0cmluZyAr
PSBzOworICB9CisKKyAgYm9vbCBwYXJzaW5nX3N1Y2Nlc3NmdWw7CisgIEVjaG9DYW5jZWxsZXIz
Q29uZmlnIGNmZzsKKyAgQWVjM0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGpzb25fc3RyaW5nLCAmY2Zn
LCAmcGFyc2luZ19zdWNjZXNzZnVsKTsKKyAgaWYgKCFwYXJzaW5nX3N1Y2Nlc3NmdWwpIHsKKyAg
ICBzdGQ6OmNvdXQgPDwgIlBhcnNpbmcgb2YganNvbiBzdHJpbmcgZmFpbGVkOiAiIDw8IHN0ZDo6
ZW5kbAorICAgICAgICAgICAgICA8PCBqc29uX3N0cmluZyA8PCBzdGQ6OmVuZGw7CisgICAgUlRD
X0NIRUNLKGZhbHNlKTsKKyAgfQorICBSVENfQ0hFQ0soRWNob0NhbmNlbGxlcjNDb25maWc6OlZh
bGlkYXRlKCZjZmcpKTsKKworICByZXR1cm4gY2ZnOwogfQogCi0vLyBDbGFzcyBmb3IgcGFyc2lu
ZyB0aGUgQUVDMyBwYXJhbWV0ZXJzIGZyb20gYSBKU09OIGZpbGUgYW5kIHByb2R1Y2luZyBhIGNv
bmZpZwotLy8gc3RydWN0LgotY2xhc3MgQWVjM1BhcmFtZXRlcnNQYXJzZXIgewotIHB1YmxpYzoK
LSAgc3RhdGljIEVjaG9DYW5jZWxsZXIzQ29uZmlnIFBhcnNlKGNvbnN0IHN0ZDo6c3RyaW5nJiBm
aWxlbmFtZSkgewotICAgIHJldHVybiBBZWMzUGFyYW1ldGVyc1BhcnNlcigpLlBhcnNlRmlsZShm
aWxlbmFtZSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEFlYzNQYXJhbWV0ZXJzUGFyc2VyKCkgPSBk
ZWZhdWx0OwotCi0gIHZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVlJiByb290LAotICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLAotICAgICAgICAgICAgICAgICBi
b29sKiBwYXJhbSkgY29uc3QgewotICAgIFJUQ19DSEVDSyhwYXJhbSk7Ci0gICAgYm9vbCB2Owot
ICAgIGlmIChydGM6OkdldEJvb2xGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmdikp
IHsKLSAgICAgICpwYXJhbSA9IHY7Ci0gICAgfQotICB9Ci0KLSAgdm9pZCBSZWFkUGFyYW0oY29u
c3QgSnNvbjo6VmFsdWUmIHJvb3QsCi0gICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHBhcmFt
X25hbWUsCi0gICAgICAgICAgICAgICAgIHNpemVfdCogcGFyYW0pIGNvbnN0IHsKLSAgICBSVENf
Q0hFQ0socGFyYW0pOwotICAgIGludCB2OwotICAgIGlmIChydGM6OkdldEludEZyb21Kc29uT2Jq
ZWN0KHJvb3QsIHBhcmFtX25hbWUsICZ2KSkgewotICAgICAgKnBhcmFtID0gdjsKLSAgICB9Ci0g
IH0KLQotICB2b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpWYWx1ZSYgcm9vdCwKLSAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwKLSAgICAgICAgICAgICAgICAgaW50KiBw
YXJhbSkgY29uc3QgewotICAgIFJUQ19DSEVDSyhwYXJhbSk7Ci0gICAgaW50IHY7Ci0gICAgaWYg
KHJ0Yzo6R2V0SW50RnJvbUpzb25PYmplY3Qocm9vdCwgcGFyYW1fbmFtZSwgJnYpKSB7Ci0gICAg
ICAqcGFyYW0gPSB2OwotICAgIH0KLSAgfQotCi0gIHZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246
OlZhbHVlJiByb290LAotICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLAot
ICAgICAgICAgICAgICAgICBmbG9hdCogcGFyYW0pIGNvbnN0IHsKLSAgICBSVENfQ0hFQ0socGFy
YW0pOwotICAgIGRvdWJsZSB2OwotICAgIGlmIChydGM6OkdldERvdWJsZUZyb21Kc29uT2JqZWN0
KHJvb3QsIHBhcmFtX25hbWUsICZ2KSkgewotICAgICAgKnBhcmFtID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHYpOwotICAgIH0KLSAgfQotCi0gIHZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVl
JiByb290LAotICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLAotICAgICAg
ICAgICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RmlsdGVyOjpNYWluQ29uZmlndXJhdGlv
biogcGFyYW0pIGNvbnN0IHsKLSAgICBSVENfQ0hFQ0socGFyYW0pOwotICAgIEpzb246OlZhbHVl
IGpzb25fYXJyYXk7Ci0gICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCBw
YXJhbV9uYW1lLCAmanNvbl9hcnJheSkpIHsKLSAgICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsK
LSAgICAgIHJ0Yzo6SnNvbkFycmF5VG9Eb3VibGVWZWN0b3IoanNvbl9hcnJheSwgJnYpOwotICAg
ICAgaWYgKHYuc2l6ZSgpICE9IDUpIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJJbmNvcnJlY3Qg
YXJyYXkgc2l6ZSBmb3IgIiA8PCBwYXJhbV9uYW1lIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgUlRD
X0NIRUNLKGZhbHNlKTsKLSAgICAgIH0KLSAgICAgIHBhcmFtLT5sZW5ndGhfYmxvY2tzID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90Pih2WzBdKTsKLSAgICAgIHBhcmFtLT5sZWFrYWdlX2NvbnZlcmdlZCA9
IHN0YXRpY19jYXN0PGZsb2F0Pih2WzFdKTsKLSAgICAgIHBhcmFtLT5sZWFrYWdlX2RpdmVyZ2Vk
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbMl0pOwotICAgICAgcGFyYW0tPmVycm9yX2Zsb29yID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbM10pOwotICAgICAgcGFyYW0tPm5vaXNlX2dhdGUgPSBzdGF0
aWNfY2FzdDxmbG9hdD4odls0XSk7Ci0gICAgfQotICB9Ci0KLSAgdm9pZCBSZWFkUGFyYW0oCi0g
ICAgICBjb25zdCBKc29uOjpWYWx1ZSYgcm9vdCwKLSAgICAgIHN0ZDo6c3RyaW5nIHBhcmFtX25h
bWUsCi0gICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RmlsdGVyOjpTaGFkb3dDb25maWd1cmF0
aW9uKiBwYXJhbSkgY29uc3QgewotICAgIFJUQ19DSEVDSyhwYXJhbSk7Ci0gICAgSnNvbjo6VmFs
dWUganNvbl9hcnJheTsKLSAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3Qs
IHBhcmFtX25hbWUsICZqc29uX2FycmF5KSkgewotICAgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiB2
OwotICAgICAgcnRjOjpKc29uQXJyYXlUb0RvdWJsZVZlY3Rvcihqc29uX2FycmF5LCAmdik7Ci0g
ICAgICBpZiAodi5zaXplKCkgIT0gMykgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIkluY29ycmVj
dCBhcnJheSBzaXplIGZvciAiIDw8IHBhcmFtX25hbWUgPDwgc3RkOjplbmRsOwotICAgICAgICBS
VENfQ0hFQ0soZmFsc2UpOwotICAgICAgfQotICAgICAgcGFyYW0tPmxlbmd0aF9ibG9ja3MgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KHZbMF0pOwotICAgICAgcGFyYW0tPnJhdGUgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4odlsxXSk7Ci0gICAgICBwYXJhbS0+bm9pc2VfZ2F0ZSA9IHN0YXRpY19jYXN0PGZs
b2F0Pih2WzJdKTsKLSAgICB9Ci0gIH0KLQotICB2b2lkIFJlYWRQYXJhbSgKLSAgICAgIGNvbnN0
IEpzb246OlZhbHVlJiByb290LAotICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwKLSAgICAg
IEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpNYXNraW5nVGhyZXNob2xkcyogcGFy
YW0pIGNvbnN0IHsKLSAgICBSVENfQ0hFQ0socGFyYW0pOwotICAgIEpzb246OlZhbHVlIGpzb25f
YXJyYXk7Ci0gICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9u
YW1lLCAmanNvbl9hcnJheSkpIHsKLSAgICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsKLSAgICAg
IHJ0Yzo6SnNvbkFycmF5VG9Eb3VibGVWZWN0b3IoanNvbl9hcnJheSwgJnYpOwotICAgICAgaWYg
KHYuc2l6ZSgpICE9IDMpIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJJbmNvcnJlY3QgYXJyYXkg
c2l6ZSBmb3IgIiA8PCBwYXJhbV9uYW1lIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgUlRDX0NIRUNL
KGZhbHNlKTsKLSAgICAgIH0KLSAgICAgIHBhcmFtLT5lbnJfdHJhbnNwYXJlbnQgPSBzdGF0aWNf
Y2FzdDxmbG9hdD4odlswXSk7Ci0gICAgICBwYXJhbS0+ZW5yX3N1cHByZXNzID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHZbMV0pOwotICAgICAgcGFyYW0tPmVtcl90cmFuc3BhcmVudCA9IHN0YXRpY19j
YXN0PGZsb2F0Pih2WzJdKTsKLSAgICB9Ci0gIH0KLQotICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBQ
YXJzZUZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKSBjb25zdCB7Ci0gICAgRWNob0Nh
bmNlbGxlcjNDb25maWcgY2ZnOwotICAgIEpzb246OlZhbHVlIHJvb3Q7Ci0gICAgc3RkOjpzdHJp
bmcgczsKLSAgICBzdGQ6OnN0cmluZyBqc29uX3N0cmluZzsKLSAgICBzdGQ6Omlmc3RyZWFtIGYo
ZmlsZW5hbWUuY19zdHIoKSk7Ci0KLSAgICBpZiAoZi5mYWlsKCkpIHsKLSAgICAgIHN0ZDo6Y291
dCA8PCAiRmFpbGVkIHRvIG9wZW4gdGhlIGZpbGUgIiA8PCBmaWxlbmFtZSA8PCBzdGQ6OmVuZGw7
Ci0gICAgICBSVENfQ0hFQ0soZmFsc2UpOwotICAgIH0KLQotICAgIHdoaWxlIChzdGQ6OmdldGxp
bmUoZiwgcykpIHsKLSAgICAgIGpzb25fc3RyaW5nICs9IHM7Ci0gICAgfQotICAgIGJvb2wgc3Vj
Y2VzcyA9IEpzb246OlJlYWRlcigpLnBhcnNlKGpzb25fc3RyaW5nLCByb290KTsKLSAgICBpZiAo
IXN1Y2Nlc3MpIHsKLSAgICAgIHN0ZDo6Y291dCA8PCAiSW5jb3JyZWN0IEpTT04gZm9ybWF0OiIg
PDwgc3RkOjplbmRsOwotICAgICAgc3RkOjpjb3V0IDw8IGpzb25fc3RyaW5nIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgIFJUQ19DSEVDSyhmYWxzZSk7Ci0gICAgfQotCi0gICAgSnNvbjo6VmFsdWUgc2Vj
dGlvbjsKLSAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsICJkZWxheSIs
ICZzZWN0aW9uKSkgewotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJkZWZhdWx0X2RlbGF5Iiwg
JmNmZy5kZWxheS5kZWZhdWx0X2RlbGF5KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZG93
bl9zYW1wbGluZ19mYWN0b3IiLAotICAgICAgICAgICAgICAgICZjZmcuZGVsYXkuZG93bl9zYW1w
bGluZ19mYWN0b3IpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJudW1fZmlsdGVycyIsICZj
ZmcuZGVsYXkubnVtX2ZpbHRlcnMpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJhcGlfY2Fs
bF9qaXR0ZXJfYmxvY2tzIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmRlbGF5LmFwaV9jYWxsX2pp
dHRlcl9ibG9ja3MpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtaW5fZWNob19wYXRoX2Rl
bGF5X2Jsb2NrcyIsCi0gICAgICAgICAgICAgICAgJmNmZy5kZWxheS5taW5fZWNob19wYXRoX2Rl
bGF5X2Jsb2Nrcyk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImRlbGF5X2hlYWRyb29tX2Js
b2NrcyIsCi0gICAgICAgICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9oZWFkcm9vbV9ibG9ja3Mp
OwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJoeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzIiwK
LSAgICAgICAgICAgICAgICAmY2ZnLmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MpOwot
ICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzIiwKLSAg
ICAgICAgICAgICAgICAmY2ZnLmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3MpOwotICAg
ICAgUmVhZFBhcmFtKHNlY3Rpb24sICJza2V3X2h5c3RlcmVzaXNfYmxvY2tzIiwKLSAgICAgICAg
ICAgICAgICAmY2ZnLmRlbGF5LnNrZXdfaHlzdGVyZXNpc19ibG9ja3MpOwotICAgICAgUmVhZFBh
cmFtKHNlY3Rpb24sICJmaXhlZF9jYXB0dXJlX2RlbGF5X3NhbXBsZXMiLAotICAgICAgICAgICAg
ICAgICZjZmcuZGVsYXkuZml4ZWRfY2FwdHVyZV9kZWxheV9zYW1wbGVzKTsKLSAgICAgIFJlYWRQ
YXJhbShzZWN0aW9uLCAiZGVsYXlfZXN0aW1hdGVfc21vb3RoaW5nIiwKLSAgICAgICAgICAgICAg
ICAmY2ZnLmRlbGF5LmRlbGF5X2VzdGltYXRlX3Ntb290aGluZyk7Ci0gICAgICBSZWFkUGFyYW0o
c2VjdGlvbiwgImRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rpb25fdGhyZXNob2xkIiwKLSAgICAgICAg
ICAgICAgICAmY2ZnLmRlbGF5LmRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rpb25fdGhyZXNob2xkKTsK
LQotICAgICAgSnNvbjo6VmFsdWUgc3Vic2VjdGlvbjsKLSAgICAgIGlmIChydGM6OkdldFZhbHVl
RnJvbUpzb25PYmplY3Qoc2VjdGlvbiwgImRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1YnNlY3Rpb24pKSB7Ci0gICAg
ICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiaW5pdGlhbCIsCi0gICAgICAgICAgICAgICAgICAm
Y2ZnLmRlbGF5LmRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzLmluaXRpYWwpOwotICAgICAgICBS
ZWFkUGFyYW0oc3Vic2VjdGlvbiwgImNvbnZlcmdlZCIsCi0gICAgICAgICAgICAgICAgICAmY2Zn
LmRlbGF5LmRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzLmNvbnZlcmdlZCk7Ci0gICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCAiZmlsdGVy
IiwgJnNlY3Rpb24pKSB7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1haW4iLCAmY2ZnLmZp
bHRlci5tYWluKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAic2hhZG93IiwgJmNmZy5maWx0
ZXIuc2hhZG93KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWFpbl9pbml0aWFsIiwgJmNm
Zy5maWx0ZXIubWFpbl9pbml0aWFsKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAic2hhZG93
X2luaXRpYWwiLCAmY2ZnLmZpbHRlci5zaGFkb3dfaW5pdGlhbCk7Ci0gICAgICBSZWFkUGFyYW0o
c2VjdGlvbiwgImNvbmZpZ19jaGFuZ2VfZHVyYXRpb25fYmxvY2tzIiwKLSAgICAgICAgICAgICAg
ICAmY2ZnLmZpbHRlci5jb25maWdfY2hhbmdlX2R1cmF0aW9uX2Jsb2Nrcyk7Ci0gICAgICBSZWFk
UGFyYW0oc2VjdGlvbiwgImluaXRpYWxfc3RhdGVfc2Vjb25kcyIsCi0gICAgICAgICAgICAgICAg
JmNmZy5maWx0ZXIuaW5pdGlhbF9zdGF0ZV9zZWNvbmRzKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAiY29uc2VydmF0aXZlX2luaXRpYWxfcGhhc2UiLAotICAgICAgICAgICAgICAgICZjZmcu
ZmlsdGVyLmNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAiZW5hYmxlX3NoYWRvd19maWx0ZXJfb3V0cHV0X3VzYWdlIiwKLSAgICAgICAgICAgICAg
ICAmY2ZnLmZpbHRlci5lbmFibGVfc2hhZG93X2ZpbHRlcl9vdXRwdXRfdXNhZ2UpOwotICAgIH0K
LQotICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qocm9vdCwgImVybGUiLCAmc2Vj
dGlvbikpIHsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWluIiwgJmNmZy5lcmxlLm1pbik7
Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1heF9sIiwgJmNmZy5lcmxlLm1heF9sKTsKLSAg
ICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWF4X2giLCAmY2ZnLmVybGUubWF4X2gpOwotICAgICAg
UmVhZFBhcmFtKHNlY3Rpb24sICJvbnNldF9kZXRlY3Rpb24iLCAmY2ZnLmVybGUub25zZXRfZGV0
ZWN0aW9uKTsKLSAgICB9Ci0KLSAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJv
b3QsICJlcF9zdHJlbmd0aCIsICZzZWN0aW9uKSkgewotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJsZiIsICZjZmcuZXBfc3RyZW5ndGgubGYpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJt
ZiIsICZjZmcuZXBfc3RyZW5ndGgubWYpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJoZiIs
ICZjZmcuZXBfc3RyZW5ndGguaGYpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJkZWZhdWx0
X2xlbiIsICZjZmcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4pOwotICAgICAgUmVhZFBhcmFtKHNl
Y3Rpb24sICJyZXZlcmJfYmFzZWRfb25fcmVuZGVyIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVw
X3N0cmVuZ3RoLnJldmVyYl9iYXNlZF9vbl9yZW5kZXIpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rp
b24sICJlY2hvX2Nhbl9zYXR1cmF0ZSIsCi0gICAgICAgICAgICAgICAgJmNmZy5lcF9zdHJlbmd0
aC5lY2hvX2Nhbl9zYXR1cmF0ZSk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImJvdW5kZWRf
ZXJsIiwgJmNmZy5lcF9zdHJlbmd0aC5ib3VuZGVkX2VybCk7Ci0gICAgfQotCi0gICAgaWYgKHJ0
Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCAiZ2Fpbl9tYXNrIiwgJnNlY3Rpb24pKSB7
Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm0xIiwgJmNmZy5nYWluX21hc2subTEpOwotICAg
ICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtMiIsICZjZmcuZ2Fpbl9tYXNrLm0yKTsKLSAgICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAibTMiLCAmY2ZnLmdhaW5fbWFzay5tMyk7Ci0gICAgICBSZWFkUGFy
YW0oc2VjdGlvbiwgIm01IiwgJmNmZy5nYWluX21hc2subTUpOwotICAgICAgUmVhZFBhcmFtKHNl
Y3Rpb24sICJtNiIsICZjZmcuZ2Fpbl9tYXNrLm02KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9u
LCAibTciLCAmY2ZnLmdhaW5fbWFzay5tNyk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm04
IiwgJmNmZy5nYWluX21hc2subTgpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtOSIsICZj
ZmcuZ2Fpbl9tYXNrLm05KTsKLQotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJnYWluX2N1cnZl
X29mZnNldCIsICZjZmcuZ2Fpbl9tYXNrLmdhaW5fY3VydmVfb2Zmc2V0KTsKLSAgICAgIFJlYWRQ
YXJhbShzZWN0aW9uLCAiZ2Fpbl9jdXJ2ZV9zbG9wZSIsICZjZmcuZ2Fpbl9tYXNrLmdhaW5fY3Vy
dmVfc2xvcGUpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJ0ZW1wb3JhbF9tYXNraW5nX2xm
IiwKLSAgICAgICAgICAgICAgICAmY2ZnLmdhaW5fbWFzay50ZW1wb3JhbF9tYXNraW5nX2xmKTsK
LSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAidGVtcG9yYWxfbWFza2luZ19oZiIsCi0gICAgICAg
ICAgICAgICAgJmNmZy5nYWluX21hc2sudGVtcG9yYWxfbWFza2luZ19oZik7Ci0gICAgICBSZWFk
UGFyYW0oc2VjdGlvbiwgInRlbXBvcmFsX21hc2tpbmdfbGZfYmFuZHMiLAotICAgICAgICAgICAg
ICAgICZjZmcuZ2Fpbl9tYXNrLnRlbXBvcmFsX21hc2tpbmdfbGZfYmFuZHMpOwotICAgIH0KLQot
ICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qocm9vdCwgImVjaG9fYXVkaWJpbGl0
eSIsICZzZWN0aW9uKSkgewotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJsb3dfcmVuZGVyX2xp
bWl0IiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS5sb3dfcmVuZGVyX2xp
bWl0KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibm9ybWFsX3JlbmRlcl9saW1pdCIsCi0g
ICAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHkubm9ybWFsX3JlbmRlcl9saW1pdCk7
Ci0KLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZmxvb3JfcG93ZXIiLCAmY2ZnLmVjaG9fYXVk
aWJpbGl0eS5mbG9vcl9wb3dlcik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImF1ZGliaWxp
dHlfdGhyZXNob2xkX2xmIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS5h
dWRpYmlsaXR5X3RocmVzaG9sZF9sZik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImF1ZGli
aWxpdHlfdGhyZXNob2xkX21mIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0
eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9tZik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImF1
ZGliaWxpdHlfdGhyZXNob2xkX2hmIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJp
bGl0eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9oZik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwg
InVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXMiLAotICAgICAgICAgICAgICAgICZjZmcuZWNob19h
dWRpYmlsaXR5LnVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXMpOwotICAgICAgUmVhZFBhcmFtKHNl
Y3Rpb24sICJ1c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVzX2F0X2luaXQiLAotICAgICAgICAgICAg
ICAgICZjZmcuZWNob19hdWRpYmlsaXR5LnVzZV9zdGF0aW9uYXJpdHlfcHJvcGVydGllc19hdF9p
bml0KTsKLSAgICB9Ci0KLSAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3Qs
ICJlY2hvX3JlbW92YWxfY29udHJvbCIsICZzZWN0aW9uKSkgewotICAgICAgSnNvbjo6VmFsdWUg
c3Vic2VjdGlvbjsKLSAgICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qoc2VjdGlv
biwgImdhaW5fcmFtcHVwIiwgJnN1YnNlY3Rpb24pKSB7Ci0gICAgICAgIFJlYWRQYXJhbShzdWJz
ZWN0aW9uLCAiaW5pdGlhbF9nYWluIiwKLSAgICAgICAgICAgICAgICAgICZjZmcuZWNob19yZW1v
dmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuaW5pdGlhbF9nYWluKTsKLSAgICAgICAgUmVhZFBhcmFt
KHN1YnNlY3Rpb24sICJmaXJzdF9ub25femVyb19nYWluIiwKLSAgICAgICAgICAgICAgICAgICZj
ZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZmlyc3Rfbm9uX3plcm9fZ2Fpbik7
Ci0gICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibm9uX3plcm9fZ2Fpbl9ibG9ja3MiLAot
ICAgICAgICAgICAgICAgICAgJmNmZy5lY2hvX3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5u
b25femVyb19nYWluX2Jsb2Nrcyk7Ci0gICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiZnVs
bF9nYWluX2Jsb2NrcyIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9jb250
cm9sLmdhaW5fcmFtcHVwLmZ1bGxfZ2Fpbl9ibG9ja3MpOwotICAgICAgfQotICAgICAgUmVhZFBh
cmFtKHNlY3Rpb24sICJoYXNfY2xvY2tfZHJpZnQiLAotICAgICAgICAgICAgICAgICZjZmcuZWNo
b19yZW1vdmFsX2NvbnRyb2wuaGFzX2Nsb2NrX2RyaWZ0KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAibGluZWFyX2FuZF9zdGFibGVfZWNob19wYXRoIiwKLSAgICAgICAgICAgICAgICAmY2Zn
LmVjaG9fcmVtb3ZhbF9jb250cm9sLmxpbmVhcl9hbmRfc3RhYmxlX2VjaG9fcGF0aCk7Ci0gICAg
fQotCi0gICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCAiZWNob19tb2Rl
bCIsICZzZWN0aW9uKSkgewotICAgICAgSnNvbjo6VmFsdWUgc3Vic2VjdGlvbjsKLSAgICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAibm9pc2VfZmxvb3JfaG9sZCIsICZjZmcuZWNob19tb2RlbC5ub2lz
ZV9mbG9vcl9ob2xkKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWluX25vaXNlX2Zsb29y
X3Bvd2VyIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fbW9kZWwubWluX25vaXNlX2Zsb29y
X3Bvd2VyKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAic3RhdGlvbmFyeV9nYXRlX3Nsb3Bl
IiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fbW9kZWwuc3RhdGlvbmFyeV9nYXRlX3Nsb3Bl
KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibm9pc2VfZ2F0ZV9wb3dlciIsICZjZmcuZWNo
b19tb2RlbC5ub2lzZV9nYXRlX3Bvd2VyKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibm9p
c2VfZ2F0ZV9zbG9wZSIsICZjZmcuZWNob19tb2RlbC5ub2lzZV9nYXRlX3Nsb3BlKTsKLSAgICAg
IFJlYWRQYXJhbShzZWN0aW9uLCAicmVuZGVyX3ByZV93aW5kb3dfc2l6ZSIsCi0gICAgICAgICAg
ICAgICAgJmNmZy5lY2hvX21vZGVsLnJlbmRlcl9wcmVfd2luZG93X3NpemUpOwotICAgICAgUmVh
ZFBhcmFtKHNlY3Rpb24sICJyZW5kZXJfcG9zdF93aW5kb3dfc2l6ZSIsCi0gICAgICAgICAgICAg
ICAgJmNmZy5lY2hvX21vZGVsLnJlbmRlcl9wb3N0X3dpbmRvd19zaXplKTsKLSAgICAgIFJlYWRQ
YXJhbShzZWN0aW9uLCAicmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0IiwKLSAgICAgICAgICAg
ICAgICAmY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0KTsKLSAgICAg
IFJlYWRQYXJhbShzZWN0aW9uLCAicmVuZGVyX3Bvc3Rfd2luZG93X3NpemVfaW5pdCIsCi0gICAg
ICAgICAgICAgICAgJmNmZy5lY2hvX21vZGVsLnJlbmRlcl9wb3N0X3dpbmRvd19zaXplX2luaXQp
OwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJub25saW5lYXJfaG9sZCIsICZjZmcuZWNob19t
b2RlbC5ub25saW5lYXJfaG9sZCk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5vbmxpbmVh
cl9yZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fbW9kZWwubm9ubGluZWFyX3Jl
bGVhc2UpOwotICAgIH0KLQotICAgIEpzb246OlZhbHVlIHN1YnNlY3Rpb247Ci0gICAgaWYgKHJ0
Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCAic3VwcHJlc3NvciIsICZzZWN0aW9uKSkg
ewotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJuZWFyZW5kX2F2ZXJhZ2VfYmxvY2tzIiwKLSAg
ICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IubmVhcmVuZF9hdmVyYWdlX2Jsb2Nrcyk7Ci0K
LSAgICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qoc2VjdGlvbiwgIm5vcm1hbF90
dW5pbmciLCAmc3Vic2VjdGlvbikpIHsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJt
YXNrX2xmIiwgJmNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19sZik7Ci0gICAgICAg
IFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWFza19oZiIsICZjZmcuc3VwcHJlc3Nvci5ub3JtYWxf
dHVuaW5nLm1hc2tfaGYpOwotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9pbmNf
ZmFjdG9yIiwKLSAgICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5n
Lm1heF9pbmNfZmFjdG9yKTsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJtYXhfZGVj
X2ZhY3Rvcl9sZiIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1
bmluZy5tYXhfZGVjX2ZhY3Rvcl9sZik7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChydGM6OkdldFZh
bHVlRnJvbUpzb25PYmplY3Qoc2VjdGlvbiwgIm5lYXJlbmRfdHVuaW5nIiwgJnN1YnNlY3Rpb24p
KSB7Ci0gICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWFza19sZiIsCi0gICAgICAgICAg
ICAgICAgICAmY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZik7Ci0gICAgICAg
IFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWFza19oZiIsCi0gICAgICAgICAgICAgICAgICAmY2Zn
LnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19oZik7Ci0gICAgICAgIFJlYWRQYXJhbShz
dWJzZWN0aW9uLCAibWF4X2luY19mYWN0b3IiLAotICAgICAgICAgICAgICAgICAgJmNmZy5zdXBw
cmVzc29yLm5lYXJlbmRfdHVuaW5nLm1heF9pbmNfZmFjdG9yKTsKLSAgICAgICAgUmVhZFBhcmFt
KHN1YnNlY3Rpb24sICJtYXhfZGVjX2ZhY3Rvcl9sZiIsCi0gICAgICAgICAgICAgICAgICAmY2Zn
LnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWF4X2RlY19mYWN0b3JfbGYpOwotICAgICAgfQot
Ci0gICAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rpb24sICJkb21pbmFu
dF9uZWFyZW5kX2RldGVjdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZzdWJzZWN0aW9uKSkgewotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgImVucl90
aHJlc2hvbGQiLAotICAgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmRvbWluYW50X25l
YXJlbmRfZGV0ZWN0aW9uLmVucl90aHJlc2hvbGQpOwotICAgICAgICBSZWFkUGFyYW0oc3Vic2Vj
dGlvbiwgInNucl90aHJlc2hvbGQiLAotICAgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29y
LmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLnNucl90aHJlc2hvbGQpOwotICAgICAgICBSZWFk
UGFyYW0oc3Vic2VjdGlvbiwgImhvbGRfZHVyYXRpb24iLAotICAgICAgICAgICAgICAgICAgJmNm
Zy5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmhvbGRfZHVyYXRpb24pOwot
ICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgInRyaWdnZXJfdGhyZXNob2xkIiwKLSAgICAg
ICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi50
cmlnZ2VyX3RocmVzaG9sZCk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChydGM6OkdldFZhbHVlRnJv
bUpzb25PYmplY3Qoc2VjdGlvbiwgImhpZ2hfYmFuZHNfc3VwcHJlc3Npb24iLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Vic2VjdGlvbikpIHsKLSAgICAgICAgUmVh
ZFBhcmFtKHN1YnNlY3Rpb24sICJlbnJfdGhyZXNob2xkIiwKLSAgICAgICAgICAgICAgICAgICZj
Zmcuc3VwcHJlc3Nvci5oaWdoX2JhbmRzX3N1cHByZXNzaW9uLmVucl90aHJlc2hvbGQpOwotICAg
ICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9nYWluX2R1cmluZ19lY2hvIiwKLSAgICAg
ICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5oaWdoX2JhbmRzX3N1cHByZXNzaW9uLm1heF9n
YWluX2R1cmluZ19lY2hvKTsKLSAgICAgIH0KLQotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJm
bG9vcl9maXJzdF9pbmNyZWFzZSIsCi0gICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmZs
b29yX2ZpcnN0X2luY3JlYXNlKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZW5mb3JjZV90
cmFuc3BhcmVudCIsCi0gICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmVuZm9yY2VfdHJh
bnNwYXJlbnQpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJlbmZvcmNlX2VtcHR5X2hpZ2hl
cl9iYW5kcyIsCi0gICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmVuZm9yY2VfZW1wdHlf
aGlnaGVyX2JhbmRzKTsKLSAgICB9Ci0KLSAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwotICAg
IHJldHVybiBjZmc7Ci0gIH0KLX07Ci0KIHZvaWQgQ29weUZyb21BdWRpb0ZyYW1lKGNvbnN0IEF1
ZGlvRnJhbWUmIHNyYywgQ2hhbm5lbEJ1ZmZlcjxmbG9hdD4qIGRlc3QpIHsKICAgUlRDX0NIRUNL
X0VRKHNyYy5udW1fY2hhbm5lbHNfLCBkZXN0LT5udW1fY2hhbm5lbHMoKSk7CiAgIFJUQ19DSEVD
S19FUShzcmMuc2FtcGxlc19wZXJfY2hhbm5lbF8sIGRlc3QtPm51bV9mcmFtZXMoKSk7CkBAIC02
OTUsNiArMTI2LDEzIEBAIEF1ZGlvUHJvY2Vzc2luZ1NpbXVsYXRvcjo6QXVkaW9Qcm9jZXNzaW5n
U2ltdWxhdG9yKAogICAgICAgICAgIHNldHRpbmdzLmluaXRpYWxfbWljX2xldmVsLAogICAgICAg
ICAgIHNldHRpbmdzXy5zaW11bGF0ZV9taWNfZ2FpbiA/ICpzZXR0aW5ncy5zaW11bGF0ZWRfbWlj
X2tpbmQgOiAwKSwKICAgICAgIHdvcmtlcl9xdWV1ZV8oImZpbGVfd3JpdGVyX3Rhc2tfcXVldWUi
KSB7CisgIFJUQ19DSEVDSyghc2V0dGluZ3NfLmR1bXBfaW50ZXJuYWxfZGF0YSB8fCBXRUJSVENf
QVBNX0RFQlVHX0RVTVAgPT0gMSk7CisgIEFwbURhdGFEdW1wZXI6OlNldEFjdGl2YXRlZChzZXR0
aW5nc18uZHVtcF9pbnRlcm5hbF9kYXRhKTsKKyAgaWYgKHNldHRpbmdzXy5kdW1wX2ludGVybmFs
X2RhdGFfb3V0cHV0X2Rpci5oYXNfdmFsdWUoKSkgeworICAgIEFwbURhdGFEdW1wZXI6OlNldE91
dHB1dERpcmVjdG9yeSgKKyAgICAgICAgc2V0dGluZ3NfLmR1bXBfaW50ZXJuYWxfZGF0YV9vdXRw
dXRfZGlyLnZhbHVlKCkpOworICB9CisKICAgaWYgKHNldHRpbmdzXy5lZF9ncmFwaF9vdXRwdXRf
ZmlsZW5hbWUgJiYKICAgICAgICFzZXR0aW5nc18uZWRfZ3JhcGhfb3V0cHV0X2ZpbGVuYW1lLT5l
bXB0eSgpKSB7CiAgICAgcmVzaWR1YWxfZWNob19saWtlbGlob29kX2dyYXBoX3dyaXRlcl8ub3Bl
bigKQEAgLTc3Niw5ICsyMTQsOSBAQCB2b2lkIEF1ZGlvUHJvY2Vzc2luZ1NpbXVsYXRvcjo6UHJv
Y2Vzc1N0cmVhbShib29sIGZpeGVkX2ludGVyZmFjZSkgewogICB9CiAKICAgaWYgKHJlc2lkdWFs
X2VjaG9fbGlrZWxpaG9vZF9ncmFwaF93cml0ZXJfLmlzX29wZW4oKSkgewotICAgIGF1dG8gc3Rh
dHMgPSBhcF8tPkdldFN0YXRpc3RpY3MoKTsKLSAgICByZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2Rf
Z3JhcGhfd3JpdGVyXyA8PCBzdGF0cy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2QKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCAiOworICAgIGF1dG8gc3Rh
dHMgPSBhcF8tPkdldFN0YXRpc3RpY3ModHJ1ZSAvKmhhc19yZW1vdGVfdHJhY2tzKi8pOworICAg
IHJlc2lkdWFsX2VjaG9fbGlrZWxpaG9vZF9ncmFwaF93cml0ZXJfCisgICAgICAgIDw8IHN0YXRz
LnJlc2lkdWFsX2VjaG9fbGlrZWxpaG9vZC52YWx1ZV9vcigtMS5mKSA8PCAiLCAiOwogICB9CiAK
ICAgKytudW1fcHJvY2Vzc19zdHJlYW1fY2FsbHNfOwpAQCAtOTE4LDEwICszNTYsMTMgQEAgdm9p
ZCBBdWRpb1Byb2Nlc3NpbmdTaW11bGF0b3I6OkNyZWF0ZUF1ZGlvUHJvY2Vzc29yKCkgewogICB9
CiAgIGlmIChzZXR0aW5nc18udXNlX2FnYzIpIHsKICAgICBhcG1fY29uZmlnLmdhaW5fY29udHJv
bGxlcjIuZW5hYmxlZCA9ICpzZXR0aW5nc18udXNlX2FnYzI7Ci0gICAgYXBtX2NvbmZpZy5nYWlu
X2NvbnRyb2xsZXIyLmZpeGVkX2dhaW5fZGIgPSBzZXR0aW5nc18uYWdjMl9maXhlZF9nYWluX2Ri
OworICAgIGFwbV9jb25maWcuZ2Fpbl9jb250cm9sbGVyMi5maXhlZF9kaWdpdGFsLmdhaW5fZGIg
PQorICAgICAgICBzZXR0aW5nc18uYWdjMl9maXhlZF9nYWluX2RiOwogICAgIGlmIChzZXR0aW5n
c18uYWdjMl91c2VfYWRhcHRpdmVfZ2FpbikgewotICAgICAgYXBtX2NvbmZpZy5nYWluX2NvbnRy
b2xsZXIyLmFkYXB0aXZlX2RpZ2l0YWxfbW9kZSA9CisgICAgICBhcG1fY29uZmlnLmdhaW5fY29u
dHJvbGxlcjIuYWRhcHRpdmVfZGlnaXRhbC5lbmFibGVkID0KICAgICAgICAgICAqc2V0dGluZ3Nf
LmFnYzJfdXNlX2FkYXB0aXZlX2dhaW47CisgICAgICBhcG1fY29uZmlnLmdhaW5fY29udHJvbGxl
cjIuYWRhcHRpdmVfZGlnaXRhbC5sZXZlbF9lc3RpbWF0b3IgPQorICAgICAgICAgIHNldHRpbmdz
Xy5hZ2MyX2FkYXB0aXZlX2xldmVsX2VzdGltYXRvcjsKICAgICB9CiAgIH0KICAgaWYgKHNldHRp
bmdzXy51c2VfcHJlX2FtcGxpZmllcikgewpAQCAtOTQ0LDcgKzM4NSw3IEBAIHZvaWQgQXVkaW9Q
cm9jZXNzaW5nU2ltdWxhdG9yOjpDcmVhdGVBdWRpb1Byb2Nlc3NvcigpIHsKICAgICAgIGlmIChz
ZXR0aW5nc18udXNlX3ZlcmJvc2VfbG9nZ2luZykgewogICAgICAgICBzdGQ6OmNvdXQgPDwgIlJl
YWRpbmcgQUVDMyBQYXJhbWV0ZXJzIGZyb20gSlNPTiBpbnB1dC4iIDw8IHN0ZDo6ZW5kbDsKICAg
ICAgIH0KLSAgICAgIGNmZyA9IEFlYzNQYXJhbWV0ZXJzUGFyc2VyOjpQYXJzZSgqc2V0dGluZ3Nf
LmFlYzNfc2V0dGluZ3NfZmlsZW5hbWUpOworICAgICAgY2ZnID0gUmVhZEFlYzNDb25maWdGcm9t
SnNvbkZpbGUoKnNldHRpbmdzXy5hZWMzX3NldHRpbmdzX2ZpbGVuYW1lKTsKICAgICB9CiAgICAg
ZWNob19jb250cm9sX2ZhY3RvcnkucmVzZXQobmV3IEVjaG9DYW5jZWxsZXIzRmFjdG9yeShjZmcp
KTsKIApAQCAtOTUyLDcgKzM5Myw3IEBAIHZvaWQgQXVkaW9Qcm9jZXNzaW5nU2ltdWxhdG9yOjpD
cmVhdGVBdWRpb1Byb2Nlc3NvcigpIHsKICAgICAgIGlmICghc2V0dGluZ3NfLnVzZV9xdWlldF9v
dXRwdXQpIHsKICAgICAgICAgc3RkOjpjb3V0IDw8ICJBRUMzIHNldHRpbmdzOiIgPDwgc3RkOjpl
bmRsOwogICAgICAgfQotICAgICAgUHJpbnRBZWMzUGFyYW1ldGVyVmFsdWVzKGNmZyk7CisgICAg
ICBzdGQ6OmNvdXQgPDwgQWVjM0NvbmZpZ1RvSnNvblN0cmluZyhjZmcpIDw8IHN0ZDo6ZW5kbDsK
ICAgICB9CiAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvYXVkaW9fcHJvY2Vzc2lu
Z19zaW11bGF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2F1ZGlvX3Byb2Nlc3Npbmdfc2ltdWxhdG9y
LmgKaW5kZXggNGU1ODBiNGZjZWQ5NTQ4ZDU4YWMyZDU1NDQzZjQ0NmZiYjUzZTdjMi4uNGI2NzUz
N2I0OWE1YjAwYjZhNTdkMjYxMDkyNDUyMmUyZmI4MjZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3Rlc3QvYXVkaW9fcHJvY2Vzc2luZ19zaW11bGF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9h
dWRpb19wcm9jZXNzaW5nX3NpbXVsYXRvci5oCkBAIC03NSw2ICs3NSw4IEBAIHN0cnVjdCBTaW11
bGF0aW9uU2V0dGluZ3MgewogICBhYnNsOjpvcHRpb25hbDxpbnQ+IGFnY19jb21wcmVzc2lvbl9n
YWluOwogICBhYnNsOjpvcHRpb25hbDxib29sPiBhZ2MyX3VzZV9hZGFwdGl2ZV9nYWluOwogICBm
bG9hdCBhZ2MyX2ZpeGVkX2dhaW5fZGI7CisgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWlu
Q29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yCisgICAgICBhZ2MyX2FkYXB0aXZlX2xldmVsX2Vz
dGltYXRvcjsKICAgZmxvYXQgcHJlX2FtcGxpZmllcl9nYWluX2ZhY3RvcjsKICAgYWJzbDo6b3B0
aW9uYWw8aW50PiB2YWRfbGlrZWxpaG9vZDsKICAgYWJzbDo6b3B0aW9uYWw8aW50PiBuc19sZXZl
bDsKQEAgLTkyLDYgKzk0LDggQEAgc3RydWN0IFNpbXVsYXRpb25TZXR0aW5ncyB7CiAgIGJvb2wg
Zml4ZWRfaW50ZXJmYWNlID0gZmFsc2U7CiAgIGJvb2wgc3RvcmVfaW50ZXJtZWRpYXRlX291dHB1
dCA9IGZhbHNlOwogICBib29sIHByaW50X2FlYzNfcGFyYW1ldGVyX3ZhbHVlcyA9IGZhbHNlOwor
ICBib29sIGR1bXBfaW50ZXJuYWxfZGF0YSA9IGZhbHNlOworICBhYnNsOjpvcHRpb25hbDxzdGQ6
OnN0cmluZz4gZHVtcF9pbnRlcm5hbF9kYXRhX291dHB1dF9kaXI7CiAgIGFic2w6Om9wdGlvbmFs
PHN0ZDo6c3RyaW5nPiBjdXN0b21fY2FsbF9vcmRlcl9maWxlbmFtZTsKICAgYWJzbDo6b3B0aW9u
YWw8c3RkOjpzdHJpbmc+IGFlYzNfc2V0dGluZ3NfZmlsZW5hbWU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3Rlc3QvYXVkaW9wcm9jX2Zsb2F0X2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9h
dWRpb3Byb2NfZmxvYXRfaW1wbC5jYwppbmRleCAzYTQ0ODg3N2Q4MTlhZDExNjAxMTczYjA5NTdl
Y2IzZGFkYjEyYzUxLi4wZmYyODA2ZTZkNWRlY2IwNmQ2ODc3MDBiNmQyM2M0MzIwYzE1NmUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRpb3Byb2NfZmxvYXRfaW1wbC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvdGVzdC9hdWRpb3Byb2NfZmxvYXRfaW1wbC5jYwpAQCAtMTQsMTMgKzE0LDE3IEBA
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx1dGlsaXR5
PgorI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmll
dy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3By
b2Nlc3NpbmcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hZWNf
ZHVtcF9iYXNlZF9zaW11bGF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdGVzdC9hdWRpb19wcm9jZXNzaW5nX3NpbXVsYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy90ZXN0L2F1ZGlvcHJvY19mbG9hdF9pbXBsLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3Qvd2F2X2Jhc2VkX3NpbXVsYXRvci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKQEAgLTM3LDE1NSArNDEsMTg1IEBAIGNvbnN0IGNo
YXIga1VzYWdlRGVzY3JpcHRpb25bXSA9CiAgICAgInByb2Nlc3NpbmcgbW9kdWxlLCBlaXRoZXIg
YmFzZWQgb24gd2F2IGZpbGVzIG9yICIKICAgICAicHJvdG9idWYgZGVidWcgZHVtcCByZWNvcmRp
bmdzLlxuIjsKIAotREVGSU5FX3N0cmluZyhkdW1wX2lucHV0LCAiIiwgIkFlYyBkdW1wIGlucHV0
IGZpbGVuYW1lIik7Ci1ERUZJTkVfc3RyaW5nKGR1bXBfb3V0cHV0LCAiIiwgIkFlYyBkdW1wIG91
dHB1dCBmaWxlbmFtZSIpOwotREVGSU5FX3N0cmluZyhpLCAiIiwgIkZvcndhcmQgc3RyZWFtIGlu
cHV0IHdhdiBmaWxlbmFtZSIpOwotREVGSU5FX3N0cmluZyhvLCAiIiwgIkZvcndhcmQgc3RyZWFt
IG91dHB1dCB3YXYgZmlsZW5hbWUiKTsKLURFRklORV9zdHJpbmcocmksICIiLCAiUmV2ZXJzZSBz
dHJlYW0gaW5wdXQgd2F2IGZpbGVuYW1lIik7Ci1ERUZJTkVfc3RyaW5nKHJvLCAiIiwgIlJldmVy
c2Ugc3RyZWFtIG91dHB1dCB3YXYgZmlsZW5hbWUiKTsKLURFRklORV9zdHJpbmcoYXJ0aWZpY2lh
bF9uZWFyZW5kLCAiIiwgIkFydGlmaWNpYWwgbmVhcmVuZCB3YXYgZmlsZW5hbWUiKTsKLURFRklO
RV9pbnQob3V0cHV0X251bV9jaGFubmVscywKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNp
ZmllZFZhbHVlLAotICAgICAgICAgICAiTnVtYmVyIG9mIGZvcndhcmQgc3RyZWFtIG91dHB1dCBj
aGFubmVscyIpOwotREVGSU5FX2ludChyZXZlcnNlX291dHB1dF9udW1fY2hhbm5lbHMsCi0gICAg
ICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIk51bWJlciBv
ZiBSZXZlcnNlIHN0cmVhbSBvdXRwdXQgY2hhbm5lbHMiKTsKLURFRklORV9pbnQob3V0cHV0X3Nh
bXBsZV9yYXRlX2h6LAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0g
ICAgICAgICAgICJGb3J3YXJkIHN0cmVhbSBvdXRwdXQgc2FtcGxlIHJhdGUgaW4gSHoiKTsKLURF
RklORV9pbnQocmV2ZXJzZV9vdXRwdXRfc2FtcGxlX3JhdGVfaHosCi0gICAgICAgICAgIGtQYXJh
bWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIlJldmVyc2Ugc3RyZWFtIG91dHB1
dCBzYW1wbGUgcmF0ZSBpbiBIeiIpOwotREVGSU5FX2Jvb2woZml4ZWRfaW50ZXJmYWNlLAotICAg
ICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiVXNlIHRoZSBmaXhlZCBpbnRlcmZhY2Ugd2hl
biBvcGVyYXRpbmcgb24gd2F2IGZpbGVzIik7Ci1ERUZJTkVfaW50KGFlYywKLSAgICAgICAgICAg
a1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9y
IGRlYWN0aXZhdGUoMCkgdGhlIGVjaG8gY2FuY2VsbGVyIik7Ci1ERUZJTkVfaW50KGFlY20sCi0g
ICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2
YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBtb2JpbGUgZWNobyBjb250cm9sbGVyIik7Ci1E
RUZJTkVfaW50KGVkLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0g
ICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSAoMCkgdGhlIHJlc2lkdWFsIGVj
aG8gZGV0ZWN0b3IiKTsKLURFRklORV9zdHJpbmcoZWRfZ3JhcGgsICIiLCAiT3V0cHV0IGZpbGVu
YW1lIGZvciBncmFwaCBvZiBlY2hvIGxpa2VsaWhvb2QiKTsKLURFRklORV9pbnQoYWdjLAotICAg
ICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0
ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgQUdDIik7Ci1ERUZJTkVfaW50KGFnYzIsCi0gICAg
ICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2YXRl
ICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBBR0MyIik7Ci1ERUZJTkVfaW50KHByZV9hbXBsaWZp
ZXIsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAg
IkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBwcmUgYW1wbGlmaWVyIik7Ci1ERUZJ
TkVfaW50KGhwZiwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAg
ICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIGhpZ2gtcGFzcyBmaWx0
ZXIiKTsKLURFRklORV9pbnQobnMsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRW
YWx1ZSwKLSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBub2lz
ZSBzdXBwcmVzc29yIik7Ci1ERUZJTkVfaW50KHRzLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90
U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgw
KSB0aGUgdHJhbnNpZW50IHN1cHByZXNzb3IiKTsKLURFRklORV9pbnQodmFkLAotICAgICAgICAg
ICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkg
b3IgZGVhY3RpdmF0ZSgwKSB0aGUgdm9pY2UgYWN0aXZpdHkgZGV0ZWN0b3IiKTsKLURFRklORV9p
bnQobGUsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAg
ICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBsZXZlbCBlc3RpbWF0b3IiKTsK
LURFRklORV9ib29sKGFsbF9kZWZhdWx0LAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAg
ICAiQWN0aXZhdGUgYWxsIG9mIHRoZSBkZWZhdWx0IGNvbXBvbmVudHMgKHdpbGwgYmUgb3ZlcnJp
ZGRlbiBieSBhbnkgIgotICAgICAgICAgICAgIm90aGVyIHNldHRpbmdzKSIpOwotREVGSU5FX2lu
dChhZWNfc3VwcHJlc3Npb25fbGV2ZWwsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZp
ZWRWYWx1ZSwKLSAgICAgICAgICAgIlNldCB0aGUgYWVjIHN1cHByZXNzaW9uIGxldmVsICgwLTIp
Iik7Ci1ERUZJTkVfaW50KGRlbGF5X2Fnbm9zdGljLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90
U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgw
KSB0aGUgQUVDIGRlbGF5IGFnbm9zdGljIG1vZGUiKTsKLURFRklORV9pbnQoZXh0ZW5kZWRfZmls
dGVyLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAg
ICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgQUVDIGV4dGVuZGVkIGZpbHRlciBt
b2RlIik7Ci1ERUZJTkVfaW50KGFlYzMsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZp
ZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBl
eHBlcmltZW50YWwgQUVDIG1vZGUgQUVDMyIpOwotREVGSU5FX2ludChleHBlcmltZW50YWxfYWdj
LAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJB
Y3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgZXhwZXJpbWVudGFsIEFHQyIpOwotREVG
SU5FX2ludChleHBlcmltZW50YWxfYWdjX2Rpc2FibGVfZGlnaXRhbF9hZGFwdGl2ZSwKLSAgICAg
ICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiRm9yY2UtZGVh
Y3RpdmF0ZSAoMSkgZGlnaXRhbCBhZGFwdGF0aW9uIGluICIKLSAgICAgICAgICAgImV4cGVyaW1l
bnRhbCBBR0MuIERpZ2l0YWwgYWRhcHRhdGlvbiBpcyBhY3RpdmUgYnkgZGVmYXVsdCAoMCkuIik7
Ci1ERUZJTkVfaW50KGV4cGVyaW1lbnRhbF9hZ2NfYW5hbHl6ZV9iZWZvcmVfYWVjLAotICAgICAg
ICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJNYWtlIGxldmVs
IGVzdGltYXRpb24gaGFwcGVuIGJlZm9yZSBBRUMiCi0gICAgICAgICAgICIgaW4gdGhlIGV4cGVy
aW1lbnRhbCBBR0MuIEFmdGVyIEFFQyBpcyB0aGUgZGVmYXVsdCAoMCkiKTsKLURFRklORV9pbnQo
CitXRUJSVENfREVGSU5FX3N0cmluZyhkdW1wX2lucHV0LCAiIiwgIkFlYyBkdW1wIGlucHV0IGZp
bGVuYW1lIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhkdW1wX291dHB1dCwgIiIsICJBZWMgZHVt
cCBvdXRwdXQgZmlsZW5hbWUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGksICIiLCAiRm9yd2Fy
ZCBzdHJlYW0gaW5wdXQgd2F2IGZpbGVuYW1lIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhvLCAi
IiwgIkZvcndhcmQgc3RyZWFtIG91dHB1dCB3YXYgZmlsZW5hbWUiKTsKK1dFQlJUQ19ERUZJTkVf
c3RyaW5nKHJpLCAiIiwgIlJldmVyc2Ugc3RyZWFtIGlucHV0IHdhdiBmaWxlbmFtZSIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcocm8sICIiLCAiUmV2ZXJzZSBzdHJlYW0gb3V0cHV0IHdhdiBmaWxl
bmFtZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoYXJ0aWZpY2lhbF9uZWFyZW5kLCAiIiwgIkFy
dGlmaWNpYWwgbmVhcmVuZCB3YXYgZmlsZW5hbWUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KG91dHB1
dF9udW1fY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVk
VmFsdWUsCisgICAgICAgICAgICAgICAgICAiTnVtYmVyIG9mIGZvcndhcmQgc3RyZWFtIG91dHB1
dCBjaGFubmVscyIpOworV0VCUlRDX0RFRklORV9pbnQocmV2ZXJzZV9vdXRwdXRfbnVtX2NoYW5u
ZWxzLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAg
ICAgICAgICAgICAgICAgIk51bWJlciBvZiBSZXZlcnNlIHN0cmVhbSBvdXRwdXQgY2hhbm5lbHMi
KTsKK1dFQlJUQ19ERUZJTkVfaW50KG91dHB1dF9zYW1wbGVfcmF0ZV9oeiwKKyAgICAgICAgICAg
ICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJG
b3J3YXJkIHN0cmVhbSBvdXRwdXQgc2FtcGxlIHJhdGUgaW4gSHoiKTsKK1dFQlJUQ19ERUZJTkVf
aW50KHJldmVyc2Vfb3V0cHV0X3NhbXBsZV9yYXRlX2h6LAorICAgICAgICAgICAgICAgICAga1Bh
cmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIlJldmVyc2Ugc3Ry
ZWFtIG91dHB1dCBzYW1wbGUgcmF0ZSBpbiBIeiIpOworV0VCUlRDX0RFRklORV9ib29sKGZpeGVk
X2ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAiVXNlIHRoZSBmaXhlZCBpbnRlcmZhY2Ugd2hlbiBvcGVyYXRpbmcgb24gd2F2IGZpbGVzIik7
CitXRUJSVENfREVGSU5FX2ludChhZWMsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90
U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0
aXZhdGUoMCkgdGhlIGVjaG8gY2FuY2VsbGVyIik7CitXRUJSVENfREVGSU5FX2ludChhZWNtLAor
ICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAg
ICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBtb2JpbGUgZWNobyBj
b250cm9sbGVyIik7CitXRUJSVENfREVGSU5FX2ludChlZCwKKyAgICAgICAgICAgICAgICAgIGtQ
YXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAo
MSkgb3IgZGVhY3RpdmF0ZSAoMCkgdGhlIHJlc2lkdWFsIGVjaG8gZGV0ZWN0b3IiKTsKK1dFQlJU
Q19ERUZJTkVfc3RyaW5nKGVkX2dyYXBoLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAg
ICAgICAgICAgICAgICAgICAiT3V0cHV0IGZpbGVuYW1lIGZvciBncmFwaCBvZiBlY2hvIGxpa2Vs
aWhvb2QiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGFnYywKKyAgICAgICAgICAgICAgICAgIGtQYXJh
bWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkg
b3IgZGVhY3RpdmF0ZSgwKSB0aGUgQUdDIik7CitXRUJSVENfREVGSU5FX2ludChhZ2MyLAorICAg
ICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAg
ICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBBR0MyIik7CitXRUJSVENf
REVGSU5FX2ludChwcmVfYW1wbGlmaWVyLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5v
dFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFj
dGl2YXRlKDApIHRoZSBwcmUgYW1wbGlmaWVyIik7CitXRUJSVENfREVGSU5FX2ludChocGYsCisg
ICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAg
ICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIGhpZ2gtcGFzcyBmaWx0
ZXIiKTsKK1dFQlJUQ19ERUZJTkVfaW50KG5zLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRl
ck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBk
ZWFjdGl2YXRlKDApIHRoZSBub2lzZSBzdXBwcmVzc29yIik7CitXRUJSVENfREVGSU5FX2ludCh0
cywKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAg
ICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgdHJhbnNpZW50
IHN1cHByZXNzb3IiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZhZCwKKyAgICAgICAgICAgICAgICAg
IGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0
ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgdm9pY2UgYWN0aXZpdHkgZGV0ZWN0b3IiKTsKK1dF
QlJUQ19ERUZJTkVfaW50KGxlLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNp
ZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRl
KDApIHRoZSBsZXZlbCBlc3RpbWF0b3IiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBhbGxf
ZGVmYXVsdCwKKyAgICBmYWxzZSwKKyAgICAiQWN0aXZhdGUgYWxsIG9mIHRoZSBkZWZhdWx0IGNv
bXBvbmVudHMgKHdpbGwgYmUgb3ZlcnJpZGRlbiBieSBhbnkgIgorICAgICJvdGhlciBzZXR0aW5n
cykiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGFlY19zdXBwcmVzc2lvbl9sZXZlbCwKKyAgICAgICAg
ICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICJTZXQgdGhlIGFlYyBzdXBwcmVzc2lvbiBsZXZlbCAoMC0yKSIpOworV0VCUlRDX0RFRklORV9p
bnQoZGVsYXlfYWdub3N0aWMsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lm
aWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUo
MCkgdGhlIEFFQyBkZWxheSBhZ25vc3RpYyBtb2RlIik7CitXRUJSVENfREVGSU5FX2ludChleHRl
bmRlZF9maWx0ZXIsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFs
dWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhl
IEFFQyBleHRlbmRlZCBmaWx0ZXIgbW9kZSIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgYWVj
MywKKyAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgIkFjdGl2YXRlICgxKSBv
ciBkZWFjdGl2YXRlKDApIHRoZSBleHBlcmltZW50YWwgQUVDIG1vZGUgQUVDMyIpOworV0VCUlRD
X0RFRklORV9pbnQoZXhwZXJpbWVudGFsX2FnYywKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0
ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3Ig
ZGVhY3RpdmF0ZSgwKSB0aGUgZXhwZXJpbWVudGFsIEFHQyIpOworV0VCUlRDX0RFRklORV9pbnQo
CisgICAgZXhwZXJpbWVudGFsX2FnY19kaXNhYmxlX2RpZ2l0YWxfYWRhcHRpdmUsCisgICAga1Bh
cmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICJGb3JjZS1kZWFjdGl2YXRlICgxKSBkaWdp
dGFsIGFkYXB0YXRpb24gaW4gIgorICAgICJleHBlcmltZW50YWwgQUdDLiBEaWdpdGFsIGFkYXB0
YXRpb24gaXMgYWN0aXZlIGJ5IGRlZmF1bHQgKDApLiIpOworV0VCUlRDX0RFRklORV9pbnQoZXhw
ZXJpbWVudGFsX2FnY19hbmFseXplX2JlZm9yZV9hZWMsCisgICAgICAgICAgICAgICAgICBrUGFy
YW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiTWFrZSBsZXZlbCBl
c3RpbWF0aW9uIGhhcHBlbiBiZWZvcmUgQUVDIgorICAgICAgICAgICAgICAgICAgIiBpbiB0aGUg
ZXhwZXJpbWVudGFsIEFHQy4gQWZ0ZXIgQUVDIGlzIHRoZSBkZWZhdWx0ICgwKSIpOworV0VCUlRD
X0RFRklORV9pbnQoCiAgICAgZXhwZXJpbWVudGFsX2FnY19hZ2MyX2xldmVsX2VzdGltYXRvciwK
ICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCiAgICAgIkFHQzIgbGV2ZWwgZXN0aW1h
dGlvbiIKICAgICAiIGluIHRoZSBleHBlcmltZW50YWwgQUdDLiBBR0MxIGxldmVsIGVzdGltYXRp
b24gaXMgdGhlIGRlZmF1bHQgKDApIik7Ci1ERUZJTkVfaW50KAorV0VCUlRDX0RFRklORV9pbnQo
CiAgICAgcmVmaW5lZF9hZGFwdGl2ZV9maWx0ZXIsCiAgICAga1BhcmFtZXRlck5vdFNwZWNpZmll
ZFZhbHVlLAogICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgcmVmaW5lZCBh
ZGFwdGl2ZSBmaWx0ZXIgZnVuY3Rpb25hbGl0eSIpOwotREVGSU5FX2ludChhZ2NfbW9kZSwga1Bh
cmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLCAiU3BlY2lmeSB0aGUgQUdDIG1vZGUgKDAtMikiKTsK
LURFRklORV9pbnQoYWdjX3RhcmdldF9sZXZlbCwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNw
ZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiU3BlY2lmeSB0aGUgQUdDIHRhcmdldCBsZXZlbCAo
MC0zMSkiKTsKLURFRklORV9pbnQoYWdjX2xpbWl0ZXIsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJO
b3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRl
KDApIHRoZSBsZXZlbCBlc3RpbWF0b3IiKTsKLURFRklORV9pbnQoYWdjX2NvbXByZXNzaW9uX2dh
aW4sCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAg
IlNwZWNpZnkgdGhlIEFHQyBjb21wcmVzc2lvbiBnYWluICgwLTkwKSIpOwotREVGSU5FX2Zsb2F0
KGFnYzJfZW5hYmxlX2FkYXB0aXZlX2dhaW4sCi0gICAgICAgICAgICAga1BhcmFtZXRlck5vdFNw
ZWNpZmllZFZhbHVlLAotICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgw
KSB0aGUgQUdDMiBhZGFwdGl2ZSBnYWluIik7Ci1ERUZJTkVfZmxvYXQoYWdjMl9maXhlZF9nYWlu
X2RiLCAwLmYsICJBR0MyIGZpeGVkIGdhaW4gKGRCKSB0byBhcHBseSIpOwotREVGSU5FX2Zsb2F0
KHByZV9hbXBsaWZpZXJfZ2Fpbl9mYWN0b3IsCi0gICAgICAgICAgICAgMS5mLAotICAgICAgICAg
ICAgICJQcmUtYW1wbGlmaWVyIGdhaW4gZmFjdG9yIChsaW5lYXIpIHRvIGFwcGx5Iik7Ci1ERUZJ
TkVfaW50KHZhZF9saWtlbGlob29kLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVk
VmFsdWUsCi0gICAgICAgICAgICJTcGVjaWZ5IHRoZSBWQUQgbGlrZWxpaG9vZCAoMC0zKSIpOwot
REVGSU5FX2ludChuc19sZXZlbCwga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLCAiU3BlY2lm
eSB0aGUgTlMgbGV2ZWwgKDAtMykiKTsKLURFRklORV9pbnQoc3RyZWFtX2RlbGF5LAotICAgICAg
ICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJTcGVjaWZ5IHRo
ZSBzdHJlYW0gZGVsYXkgaW4gbXMgdG8gdXNlIik7Ci1ERUZJTkVfaW50KHVzZV9zdHJlYW1fZGVs
YXksCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAg
IkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHJlcG9ydGluZyB0aGUgc3RyZWFtIGRlbGF5
Iik7Ci1ERUZJTkVfaW50KHN0cmVhbV9kcmlmdF9zYW1wbGVzLAotICAgICAgICAgICBrUGFyYW1l
dGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJTcGVjaWZ5IHRoZSBudW1iZXIgb2Yg
c3RyZWFtIGRyaWZ0IHNhbXBsZXMgdG8gdXNlIik7Ci1ERUZJTkVfaW50KGluaXRpYWxfbWljX2xl
dmVsLCAxMDAsICJJbml0aWFsIG1pYyBsZXZlbCAoMC0yNTUpIik7Ci1ERUZJTkVfaW50KHNpbXVs
YXRlX21pY19nYWluLAotICAgICAgICAgICAwLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9y
IGRlYWN0aXZhdGUoMCkgdGhlIGFuYWxvZyBtaWMgZ2FpbiBzaW11bGF0aW9uIik7Ci1ERUZJTkVf
aW50KHNpbXVsYXRlZF9taWNfa2luZCwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmll
ZFZhbHVlLAotICAgICAgICAgICAiU3BlY2lmeSB3aGljaCBtaWNyb3Bob25lIGtpbmQgdG8gdXNl
IGZvciBtaWNyb3Bob25lIHNpbXVsYXRpb24iKTsKLURFRklORV9ib29sKHBlcmZvcm1hbmNlX3Jl
cG9ydCwgZmFsc2UsICJSZXBvcnQgdGhlIEFQTSBwZXJmb3JtYW5jZSAiKTsKLURFRklORV9ib29s
KHZlcmJvc2UsIGZhbHNlLCAiUHJvZHVjZSB2ZXJib3NlIG91dHB1dCIpOwotREVGSU5FX2Jvb2wo
cXVpZXQsIGZhbHNlLCAiQXZvaWQgcHJvZHVjaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9n
cmVzcy4iKTsKLURFRklORV9ib29sKGJpdGV4YWN0bmVzc19yZXBvcnQsCi0gICAgICAgICAgICBm
YWxzZSwKLSAgICAgICAgICAgICJSZXBvcnQgYml0ZXhhY3RuZXNzIGZvciBhZWMgZHVtcCByZXN1
bHQgcmVwcm9kdWN0aW9uIik7Ci1ERUZJTkVfYm9vbChkaXNjYXJkX3NldHRpbmdzX2luX2FlY2R1
bXAsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJEaXNjYXJkIGFueSBjb25maWcg
c2V0dGluZ3Mgc3BlY2lmaWVkIGluIHRoZSBhZWMgZHVtcCIpOwotREVGSU5FX2Jvb2woc3RvcmVf
aW50ZXJtZWRpYXRlX291dHB1dCwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIkNy
ZWF0ZXMgbmV3IG91dHB1dCBmaWxlcyBhZnRlciBlYWNoIGluaXQiKTsKLURFRklORV9zdHJpbmco
Y3VzdG9tX2NhbGxfb3JkZXJfZmlsZSwgIiIsICJDdXN0b20gcHJvY2VzcyBBUEkgY2FsbCBvcmRl
ciBmaWxlIik7Ci1ERUZJTkVfYm9vbChwcmludF9hZWMzX3BhcmFtZXRlcl92YWx1ZXMsCi0gICAg
ICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQcmludCBwYXJhbWV0ZXIgdmFsdWVzIHVzZWQg
aW4gQUVDMyBpbiBKU09OLWZvcm1hdCIpOwotREVGSU5FX3N0cmluZyhhZWMzX3NldHRpbmdzLAot
ICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkZpbGUgaW4gSlNPTi1mb3JtYXQgd2l0
aCBjdXN0b20gQUVDMyBzZXR0aW5ncyIpOwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmlu
dCB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGFnY19tb2RlLAorICAgICAgICAg
ICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAg
IlNwZWNpZnkgdGhlIEFHQyBtb2RlICgwLTIpIik7CitXRUJSVENfREVGSU5FX2ludChhZ2NfdGFy
Z2V0X2xldmVsLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVl
LAorICAgICAgICAgICAgICAgICAgIlNwZWNpZnkgdGhlIEFHQyB0YXJnZXQgbGV2ZWwgKDAtMzEp
Iik7CitXRUJSVENfREVGSU5FX2ludChhZ2NfbGltaXRlciwKKyAgICAgICAgICAgICAgICAgIGtQ
YXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAo
MSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgbGV2ZWwgZXN0aW1hdG9yIik7CitXRUJSVENfREVGSU5F
X2ludChhZ2NfY29tcHJlc3Npb25fZ2FpbiwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJO
b3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJTcGVjaWZ5IHRoZSBBR0MgY29t
cHJlc3Npb24gZ2FpbiAoMC05MCkiKTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoYWdjMl9lbmFibGVf
YWRhcHRpdmVfZ2FpbiwKKyAgICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmll
ZFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUo
MCkgdGhlIEFHQzIgYWRhcHRpdmUgZ2FpbiIpOworV0VCUlRDX0RFRklORV9mbG9hdChhZ2MyX2Zp
eGVkX2dhaW5fZGIsIDAuZiwgIkFHQzIgZml4ZWQgZ2FpbiAoZEIpIHRvIGFwcGx5Iik7CisKK3N0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBZ2MyQWRhcHRpdmVMZXZlbEVzdGltYXRvck5hbWVz
KCkgeworICByZXR1cm4geyJSTVMiLCAicGVhayJ9OworfQorV0VCUlRDX0RFRklORV9zdHJpbmco
CisgICAgYWdjMl9hZGFwdGl2ZV9sZXZlbF9lc3RpbWF0b3IsCisgICAgIlJNUyIsCisgICAgIkFH
QzIgYWRhcHRpdmUgZGlnaXRhbCBsZXZlbCBlc3RpbWF0b3IgdG8gdXNlIFtSTVMsIHBlYWtdIik7
CisKK1dFQlJUQ19ERUZJTkVfZmxvYXQocHJlX2FtcGxpZmllcl9nYWluX2ZhY3RvciwKKyAgICAg
ICAgICAgICAgICAgICAgMS5mLAorICAgICAgICAgICAgICAgICAgICAiUHJlLWFtcGxpZmllciBn
YWluIGZhY3RvciAobGluZWFyKSB0byBhcHBseSIpOworV0VCUlRDX0RFRklORV9pbnQodmFkX2xp
a2VsaWhvb2QsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUs
CisgICAgICAgICAgICAgICAgICAiU3BlY2lmeSB0aGUgVkFEIGxpa2VsaWhvb2QgKDAtMykiKTsK
K1dFQlJUQ19ERUZJTkVfaW50KG5zX2xldmVsLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRl
ck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIlNwZWNpZnkgdGhlIE5TIGxl
dmVsICgwLTMpIik7CitXRUJSVENfREVGSU5FX2ludChzdHJlYW1fZGVsYXksCisgICAgICAgICAg
ICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAi
U3BlY2lmeSB0aGUgc3RyZWFtIGRlbGF5IGluIG1zIHRvIHVzZSIpOworV0VCUlRDX0RFRklORV9p
bnQodXNlX3N0cmVhbV9kZWxheSwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVj
aWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0
ZSgwKSByZXBvcnRpbmcgdGhlIHN0cmVhbSBkZWxheSIpOworV0VCUlRDX0RFRklORV9pbnQoc3Ry
ZWFtX2RyaWZ0X3NhbXBsZXMsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lm
aWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiU3BlY2lmeSB0aGUgbnVtYmVyIG9mIHN0cmVh
bSBkcmlmdCBzYW1wbGVzIHRvIHVzZSIpOworV0VCUlRDX0RFRklORV9pbnQoaW5pdGlhbF9taWNf
bGV2ZWwsIDEwMCwgIkluaXRpYWwgbWljIGxldmVsICgwLTI1NSkiKTsKK1dFQlJUQ19ERUZJTkVf
aW50KAorICAgIHNpbXVsYXRlX21pY19nYWluLAorICAgIDAsCisgICAgIkFjdGl2YXRlICgxKSBv
ciBkZWFjdGl2YXRlKDApIHRoZSBhbmFsb2cgbWljIGdhaW4gc2ltdWxhdGlvbiIpOworV0VCUlRD
X0RFRklORV9pbnQoCisgICAgc2ltdWxhdGVkX21pY19raW5kLAorICAgIGtQYXJhbWV0ZXJOb3RT
cGVjaWZpZWRWYWx1ZSwKKyAgICAiU3BlY2lmeSB3aGljaCBtaWNyb3Bob25lIGtpbmQgdG8gdXNl
IGZvciBtaWNyb3Bob25lIHNpbXVsYXRpb24iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwZXJmb3Jt
YW5jZV9yZXBvcnQsIGZhbHNlLCAiUmVwb3J0IHRoZSBBUE0gcGVyZm9ybWFuY2UgIik7CitXRUJS
VENfREVGSU5FX2Jvb2wodmVyYm9zZSwgZmFsc2UsICJQcm9kdWNlIHZlcmJvc2Ugb3V0cHV0Iik7
CitXRUJSVENfREVGSU5FX2Jvb2wocXVpZXQsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgIkF2b2lkIHByb2R1Y2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUg
cHJvZ3Jlc3MuIik7CitXRUJSVENfREVGSU5FX2Jvb2woYml0ZXhhY3RuZXNzX3JlcG9ydCwKKyAg
ICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUmVwb3J0IGJpdGV4
YWN0bmVzcyBmb3IgYWVjIGR1bXAgcmVzdWx0IHJlcHJvZHVjdGlvbiIpOworV0VCUlRDX0RFRklO
RV9ib29sKGRpc2NhcmRfc2V0dGluZ3NfaW5fYWVjZHVtcCwKKyAgICAgICAgICAgICAgICAgICBm
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAiRGlzY2FyZCBhbnkgY29uZmlnIHNldHRpbmdzIHNw
ZWNpZmllZCBpbiB0aGUgYWVjIGR1bXAiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChzdG9yZV9pbnRl
cm1lZGlhdGVfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICJDcmVhdGVzIG5ldyBvdXRwdXQgZmlsZXMgYWZ0ZXIgZWFjaCBpbml0Iik7CitXRUJS
VENfREVGSU5FX3N0cmluZyhjdXN0b21fY2FsbF9vcmRlcl9maWxlLAorICAgICAgICAgICAgICAg
ICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiQ3VzdG9tIHByb2Nlc3MgQVBJIGNhbGwg
b3JkZXIgZmlsZSIpOworV0VCUlRDX0RFRklORV9ib29sKHByaW50X2FlYzNfcGFyYW1ldGVyX3Zh
bHVlcywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUHJp
bnQgcGFyYW1ldGVyIHZhbHVlcyB1c2VkIGluIEFFQzMgaW4gSlNPTi1mb3JtYXQiKTsKK1dFQlJU
Q19ERUZJTkVfc3RyaW5nKGFlYzNfc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAiIiwK
KyAgICAgICAgICAgICAgICAgICAgICJGaWxlIGluIEpTT04tZm9ybWF0IHdpdGggY3VzdG9tIEFF
QzMgc2V0dGluZ3MiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChkdW1wX2RhdGEsCisgICAgICAgICAg
ICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIkR1bXAgaW50ZXJuYWwgZGF0YSBk
dXJpbmcgdGhlIGNhbGwgKHJlcXVpcmVzIGJ1aWxkIGZsYWcpIik7CitXRUJSVENfREVGSU5FX3N0
cmluZyhkdW1wX2RhdGFfb3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAg
ICAgICAgICAgICAgICAgICAgIkludGVybmFsIGRhdGEgZHVtcCBvdXRwdXQgZGlyZWN0b3J5Iik7
CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UiKTsK
IAogdm9pZCBTZXRTZXR0aW5nSWZTcGVjaWZpZWQoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+KiBw
YXJhbWV0ZXIpIHsKQEAgLTIwOCw2ICsyNDIsMjcgQEAgdm9pZCBTZXRTZXR0aW5nSWZGbGFnU2V0
KGludDMyX3QgZmxhZywgYWJzbDo6b3B0aW9uYWw8Ym9vbD4qIHBhcmFtZXRlcikgewogICB9CiB9
CiAKK0F1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjI6OkxldmVsRXN0aW1h
dG9yCitNYXBBZ2MyQWRhcHRpdmVMZXZlbEVzdGltYXRvcihhYnNsOjpzdHJpbmdfdmlldyBuYW1l
KSB7CisgIGlmIChuYW1lLmNvbXBhcmUoIlJNUyIpID09IDApIHsKKyAgICByZXR1cm4gQXVkaW9Q
cm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMjo6TGV2ZWxFc3RpbWF0b3I6OmtSbXM7
CisgIH0KKyAgaWYgKG5hbWUuY29tcGFyZSgicGVhayIpID09IDApIHsKKyAgICByZXR1cm4gQXVk
aW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMjo6TGV2ZWxFc3RpbWF0b3I6OmtQ
ZWFrOworICB9CisgIGF1dG8gY29uY2F0X3N0cmluZ3MgPQorICAgICAgW10oY29uc3Qgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+JiBzdHJpbmdzKSAtPiBzdGQ6OnN0cmluZyB7CisgICAgcnRjOjpT
dHJpbmdCdWlsZGVyIHNzOworICAgIGZvciAoY29uc3QgYXV0byYgcyA6IHN0cmluZ3MpIHsKKyAg
ICAgIHNzIDw8ICIgIiA8PCBzOworICAgIH0KKyAgICByZXR1cm4gc3MuUmVsZWFzZSgpOworICB9
OworICBSVENfQ0hFQ0soZmFsc2UpCisgICAgICA8PCAiSW52YWxpZCB2YWx1ZSBmb3IgYWdjMl9h
ZGFwdGl2ZV9sZXZlbF9lc3RpbWF0b3IsIHZhbGlkIG9wdGlvbnM6IgorICAgICAgPDwgY29uY2F0
X3N0cmluZ3MoR2V0QWdjMkFkYXB0aXZlTGV2ZWxFc3RpbWF0b3JOYW1lcygpKSA8PCAiLiI7Cit9
CisKIFNpbXVsYXRpb25TZXR0aW5ncyBDcmVhdGVTZXR0aW5ncygpIHsKICAgU2ltdWxhdGlvblNl
dHRpbmdzIHNldHRpbmdzOwogICBpZiAoRkxBR19hbGxfZGVmYXVsdCkgewpAQCAtMjc1LDYgKzMz
MCw4IEBAIFNpbXVsYXRpb25TZXR0aW5ncyBDcmVhdGVTZXR0aW5ncygpIHsKICAgU2V0U2V0dGlu
Z0lmRmxhZ1NldChGTEFHX2FnYzJfZW5hYmxlX2FkYXB0aXZlX2dhaW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgJnNldHRpbmdzLmFnYzJfdXNlX2FkYXB0aXZlX2dhaW4pOwogICBzZXR0aW5ncy5h
Z2MyX2ZpeGVkX2dhaW5fZGIgPSBGTEFHX2FnYzJfZml4ZWRfZ2Fpbl9kYjsKKyAgc2V0dGluZ3Mu
YWdjMl9hZGFwdGl2ZV9sZXZlbF9lc3RpbWF0b3IgPQorICAgICAgTWFwQWdjMkFkYXB0aXZlTGV2
ZWxFc3RpbWF0b3IoRkxBR19hZ2MyX2FkYXB0aXZlX2xldmVsX2VzdGltYXRvcik7CiAgIHNldHRp
bmdzLnByZV9hbXBsaWZpZXJfZ2Fpbl9mYWN0b3IgPSBGTEFHX3ByZV9hbXBsaWZpZXJfZ2Fpbl9m
YWN0b3I7CiAgIFNldFNldHRpbmdJZlNwZWNpZmllZChGTEFHX3ZhZF9saWtlbGlob29kLCAmc2V0
dGluZ3MudmFkX2xpa2VsaWhvb2QpOwogICBTZXRTZXR0aW5nSWZTcGVjaWZpZWQoRkxBR19uc19s
ZXZlbCwgJnNldHRpbmdzLm5zX2xldmVsKTsKQEAgLTI5Niw2ICszNTMsOSBAQCBTaW11bGF0aW9u
U2V0dGluZ3MgQ3JlYXRlU2V0dGluZ3MoKSB7CiAgIHNldHRpbmdzLmZpeGVkX2ludGVyZmFjZSA9
IEZMQUdfZml4ZWRfaW50ZXJmYWNlOwogICBzZXR0aW5ncy5zdG9yZV9pbnRlcm1lZGlhdGVfb3V0
cHV0ID0gRkxBR19zdG9yZV9pbnRlcm1lZGlhdGVfb3V0cHV0OwogICBzZXR0aW5ncy5wcmludF9h
ZWMzX3BhcmFtZXRlcl92YWx1ZXMgPSBGTEFHX3ByaW50X2FlYzNfcGFyYW1ldGVyX3ZhbHVlczsK
KyAgc2V0dGluZ3MuZHVtcF9pbnRlcm5hbF9kYXRhID0gRkxBR19kdW1wX2RhdGE7CisgIFNldFNl
dHRpbmdJZlNwZWNpZmllZChGTEFHX2R1bXBfZGF0YV9vdXRwdXRfZGlyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJnNldHRpbmdzLmR1bXBfaW50ZXJuYWxfZGF0YV9vdXRwdXRfZGlyKTsKIAog
ICByZXR1cm4gc2V0dGluZ3M7CiB9CkBAIC00NDYsNiArNTA2LDE1IEBAIHZvaWQgUGVyZm9ybUJh
c2ljUGFyYW1ldGVyU2FuaXR5Q2hlY2tzKGNvbnN0IFNpbXVsYXRpb25TZXR0aW5ncyYgc2V0dGlu
Z3MpIHsKICAgICAgIHNldHRpbmdzLmFydGlmaWNpYWxfbmVhcmVuZF9maWxlbmFtZSAmJgogICAg
ICAgICAgICF2YWxpZF93YXZfbmFtZSgqc2V0dGluZ3MuYXJ0aWZpY2lhbF9uZWFyZW5kX2ZpbGVu
YW1lKSwKICAgICAgICJFcnJvcjogLS1hcnRpZmljYWxfbmVhcmVuZCBtdXN0IGJlIGEgdmFsaWQg
LndhdiBmaWxlIG5hbWUuXG4iKTsKKworICBSZXBvcnRDb25kaXRpb25hbEVycm9yQW5kRXhpdCgK
KyAgICAgIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAwICYmIHNldHRpbmdzLmR1bXBfaW50ZXJu
YWxfZGF0YSwKKyAgICAgICJFcnJvcjogLS1kdW1wX2RhdGEgY2Fubm90IGJlIHNldCB3aXRob3V0
IHByb3BlciBidWlsZCBzdXBwb3J0LlxuIik7CisKKyAgUmVwb3J0Q29uZGl0aW9uYWxFcnJvckFu
ZEV4aXQoCisgICAgICAhc2V0dGluZ3MuZHVtcF9pbnRlcm5hbF9kYXRhICYmCisgICAgICAgICAg
c2V0dGluZ3MuZHVtcF9pbnRlcm5hbF9kYXRhX291dHB1dF9kaXIuaGFzX3ZhbHVlKCksCisgICAg
ICAiRXJyb3I6IC0tZHVtcF9kYXRhX291dHB1dF9kaXIgY2Fubm90IGJlIHNldCB3aXRob3V0IC0t
ZHVtcF9kYXRhLlxuIik7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL3Rlc3QvY29udmVyc2F0aW9uYWxfc3BlZWNoL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3Qv
Y29udmVyc2F0aW9uYWxfc3BlZWNoL0JVSUxELmduCmluZGV4IDcyMWViYzdlZTU2NjlmNTUyYTFl
ZWM5NmI0MjExYTgyMmE2NThkNzQuLjU1MTc4MWI4YmM5MGE2YmZhZDUzMGFhMzgxN2U1OGY5YTc5
NGI5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9C
VUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvQlVJTEQu
Z24KQEAgLTUxLDYgKzUxLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJsaWIiKSB7CiAgICAgIi4u
Ly4uLy4uLy4uL2NvbW1vbl9hdWRpbyIsCiAgICAgIi4uLy4uLy4uLy4uL3J0Y19iYXNlOmNoZWNr
cyIsCiAgICAgIi4uLy4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAi
Li4vLi4vLi4vLi4vdGVzdDpmaWxldXRpbHMiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9tZW1vcnkiLAogICBdCiAgIHZpc2liaWxpdHkgPSBbICI6KiIgXSAgIyBPbmx5IHRh
cmdldHMgaW4gdGhpcyBmaWxlIGNhbiBkZXBlbmQgb24gdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9nZW5lcmF0b3IuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvZ2VuZXJhdG9yLmNjCmluZGV4IDc0MWExY2E4NmJh
MjEwYmY1ODI5MGM4MjgwNWExNzVkMmFiOTMyZTUuLmZhNTYxY2Y4ZTA1NTE2YThjMGZhY2NiZWM1
Nzc4YmFjYjRiN2E1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFs
X3NwZWVjaC9nZW5lcmF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVyc2F0aW9uYWxf
c3BlZWNoL2dlbmVyYXRvci5jYwpAQCAtMzIsMTAgKzMyLDEwIEBAIGNvbnN0IGNoYXIga1VzYWdl
RGVzY3JpcHRpb25bXSA9CiAgICAgIkNvbW1hbmQtbGluZSB0b29sIHRvIGdlbmVyYXRlIG11bHRp
cGxlLWVuZCBhdWRpbyB0cmFja3MgdG8gc2ltdWxhdGUgIgogICAgICJjb252ZXJzYXRpb25hbCBz
cGVlY2ggd2l0aCB0d28gb3IgbW9yZSBwYXJ0aWNpcGFudHMuXG4iOwogCi1ERUZJTkVfc3RyaW5n
KGksICIiLCAiRGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHNwZWVjaCB0dXJuIHdhdiBmaWxlcyIp
OwotREVGSU5FX3N0cmluZyh0LCAiIiwgIlBhdGggdG8gdGhlIHRpbWluZyB0ZXh0IGZpbGUiKTsK
LURFRklORV9zdHJpbmcobywgIiIsICJPdXRwdXQgd2F2IGZpbGVzIGRlc3RpbmF0aW9uIHBhdGgi
KTsKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZSIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcoaSwgIiIsICJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgc3BlZWNo
IHR1cm4gd2F2IGZpbGVzIik7CitXRUJSVENfREVGSU5FX3N0cmluZyh0LCAiIiwgIlBhdGggdG8g
dGhlIHRpbWluZyB0ZXh0IGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKG8sICIiLCAiT3V0
cHV0IHdhdiBmaWxlcyBkZXN0aW5hdGlvbiBwYXRoIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVs
cCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNzYWdlIik7CiAKIH0gIC8vIG5hbWVzcGFjZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbW9ja193YXZy
ZWFkZXJfZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9t
b2NrX3dhdnJlYWRlcl9mYWN0b3J5LmNjCmluZGV4IGViOGUzYmVkM2M1MTAxODFjY2M0NjkzOGFk
NGIzNmNhZjFmMTc0ZDQuLmE0NWUzYmJmYTcyZmJlZTVjOGE2NTliMDY1YTZhOGY4ZjMwZDI5NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9tb2NrX3dh
dnJlYWRlcl9mYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3Nw
ZWVjaC9tb2NrX3dhdnJlYWRlcl9mYWN0b3J5LmNjCkBAIC0xMiw3ICsxMiw2IEBACiAKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gv
bW9ja193YXZyZWFkZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvcGF0aHV0aWxzLmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKQEAgLTM5LDkgKzM4LDEwIEBAIE1vY2tXYXZSZWFkZXJGYWN0b3J5Ojp+
TW9ja1dhdlJlYWRlckZhY3RvcnkoKSA9IGRlZmF1bHQ7CiBzdGQ6OnVuaXF1ZV9wdHI8V2F2UmVh
ZGVySW50ZXJmYWNlPiBNb2NrV2F2UmVhZGVyRmFjdG9yeTo6Q3JlYXRlTW9jaygKICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgZmlsZXBhdGgpIHsKICAgLy8gU2VhcmNoIHRoZSBwYXJhbWV0ZXJzIGNv
cnJlc3BvbmRpbmcgdG8gZmlsZXBhdGguCi0gIGNvbnN0IHJ0Yzo6UGF0aG5hbWUgYXVkaW90cmFj
a19maWxlX3BhdGgoZmlsZXBhdGgpOwotICBjb25zdCBhdXRvIGl0ID0KLSAgICAgIGF1ZGlvdHJh
Y2tfbmFtZXNfcGFyYW1zXy5maW5kKGF1ZGlvdHJhY2tfZmlsZV9wYXRoLmZpbGVuYW1lKCkpOwor
ICBzaXplX3QgZGVsaW1pdGVyID0gZmlsZXBhdGguZmluZF9sYXN0X29mKCIvXFwiKTsgIC8vIEVp
dGhlciB3aW5kb3dzIG9yIHBvc2l4CisgIHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0KKyAgICAgIGZp
bGVwYXRoLnN1YnN0cihkZWxpbWl0ZXIgPT0gc3RkOjpzdHJpbmc6Om5wb3MgPyAwIDogZGVsaW1p
dGVyICsgMSk7CisgIGNvbnN0IGF1dG8gaXQgPSBhdWRpb3RyYWNrX25hbWVzX3BhcmFtc18uZmlu
ZChmaWxlbmFtZSk7CiAKICAgLy8gSWYgbm90IGZvdW5kLCB1c2UgZGVmYXVsdCBwYXJhbWV0ZXJz
LgogICBpZiAoaXQgPT0gYXVkaW90cmFja19uYW1lc19wYXJhbXNfLmVuZCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbXVsdGllbmRfY2FsbC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9tdWx0aWVuZF9jYWxsLmNj
CmluZGV4IGQ2MzNkOTBlOWM0MjZhMjc2NWY2YWFlMjE5YzViYzkyMDY0NjQ5YzguLjRlMmY1NGQx
NTA5NTc5ZDNkNTNmYTExNTIyZDZhNGRhYzI3NzE3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90
ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9tdWx0aWVuZF9jYWxsLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9tdWx0aWVuZF9jYWxsLmNjCkBAIC0xNCw3ICsx
NCw3IEBACiAjaW5jbHVkZSA8aXRlcmF0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcGF0aHV0aWxzLmgiCisjaW5jbHVkZSAidGVzdC90ZXN0
c3VwcG9ydC9maWxldXRpbHMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVz
dCB7CkBAIC01MCwxMyArNTAsMTMgQEAgYm9vbCBNdWx0aUVuZENhbGw6OkNyZWF0ZUF1ZGlvVHJh
Y2tSZWFkZXJzKCkgewogICAgIGlmIChpdCAhPSBhdWRpb3RyYWNrX3JlYWRlcnNfLmVuZCgpKQog
ICAgICAgY29udGludWU7CiAKLSAgICAvLyBJbnN0YW5jZSBQYXRobmFtZSB0byByZXRyaWV2ZSB0
aGUgZnVsbCBwYXRoIHRvIHRoZSBhdWRpb3RyYWNrIGZpbGUuCi0gICAgY29uc3QgcnRjOjpQYXRo
bmFtZSBhdWRpb3RyYWNrX2ZpbGVfcGF0aChhdWRpb3RyYWNrc19wYXRoXywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1cm4uYXVkaW90cmFja19maWxlX25h
bWUpOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGF1ZGlvdHJhY2tfZmlsZV9wYXRoID0KKyAgICAg
ICAgdGVzdDo6Sm9pbkZpbGVuYW1lKGF1ZGlvdHJhY2tzX3BhdGhfLCB0dXJuLmF1ZGlvdHJhY2tf
ZmlsZV9uYW1lKTsKIAogICAgIC8vIE1hcCB0aGUgYXVkaW90cmFjayBmaWxlIG5hbWUgdG8gYSBu
ZXcgaW5zdGFuY2Ugb2YgV2F2UmVhZGVySW50ZXJmYWNlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
YXZSZWFkZXJJbnRlcmZhY2U+IHdhdnJlYWRlciA9Ci0gICAgICAgIHdhdnJlYWRlcl9hYnN0cmFj
dF9mYWN0b3J5Xy0+Q3JlYXRlKGF1ZGlvdHJhY2tfZmlsZV9wYXRoLnBhdGhuYW1lKCkpOworICAg
ICAgICB3YXZyZWFkZXJfYWJzdHJhY3RfZmFjdG9yeV8tPkNyZWF0ZSgKKyAgICAgICAgICAgIHRl
c3Q6OkpvaW5GaWxlbmFtZShhdWRpb3RyYWNrc19wYXRoXywgdHVybi5hdWRpb3RyYWNrX2ZpbGVf
bmFtZSkpOwogCiAgICAgaWYgKHNhbXBsZV9yYXRlX2h6XyA9PSAwKSB7CiAgICAgICBzYW1wbGVf
cmF0ZV9oel8gPSB3YXZyZWFkZXItPlNhbXBsZVJhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9zaW11bGF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVz
dC9jb252ZXJzYXRpb25hbF9zcGVlY2gvc2ltdWxhdG9yLmNjCmluZGV4IGMyZmI3ODA4ZTA4ZTYx
MDI1NzE1NThmYmE2MWY1NTcyYmNmZTljNDguLmM0MDA0OTlmZDM0MTAzMDA2YzRkOGEyMGUwOGFh
NzNlZjA5NDA2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3Nw
ZWVjaC9zaW11bGF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVyc2F0aW9uYWxfc3Bl
ZWNoL3NpbXVsYXRvci5jYwpAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2Nv
bnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3BhdGh1dGlscy5oIgorI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewpAQCAtNDYsMjEgKzQ2LDIw
IEBAIEluaXRTcGVha2VyT3V0cHV0RmlsZVBhdGhzKGNvbnN0IHN0ZDo6c2V0PHN0ZDo6c3RyaW5n
PiYgc3BlYWtlcl9uYW1lcywKIAogICAvLyBBZGQgbmVhci1lbmQgYW5kIGZhci1lbmQgb3V0cHV0
IHBhdGhzIGludG8gdGhlIG1hcC4KICAgZm9yIChjb25zdCBhdXRvJiBzcGVha2VyX25hbWUgOiBz
cGVha2VyX25hbWVzKSB7Ci0gICAgY29uc3QgcnRjOjpQYXRobmFtZSBuZWFyX2VuZF9wYXRoKG91
dHB1dF9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic18iICsg
c3BlYWtlcl9uYW1lICsgIi1uZWFyX2VuZC53YXYiKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBu
ZWFyX2VuZF9wYXRoID0KKyAgICAgICAgdGVzdDo6Sm9pbkZpbGVuYW1lKG91dHB1dF9wYXRoLCAi
c18iICsgc3BlYWtlcl9uYW1lICsgIi1uZWFyX2VuZC53YXYiKTsKICAgICBSVENfTE9HKExTX1ZF
UkJPU0UpIDw8ICJUaGUgbmVhci1lbmQgYXVkaW8gdHJhY2sgd2lsbCBiZSBjcmVhdGVkIGluICIK
LSAgICAgICAgICAgICAgICAgICAgICAgIDw8IG5lYXJfZW5kX3BhdGgucGF0aG5hbWUoKSA8PCAi
LiI7CisgICAgICAgICAgICAgICAgICAgICAgICA8PCBuZWFyX2VuZF9wYXRoIDw8ICIuIjsKIAot
ICAgIGNvbnN0IHJ0Yzo6UGF0aG5hbWUgZmFyX2VuZF9wYXRoKG91dHB1dF9wYXRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzXyIgKyBzcGVha2VyX25hbWUgKyAiLWZh
cl9lbmQud2F2Iik7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZmFyX2VuZF9wYXRoID0KKyAgICAg
ICAgdGVzdDo6Sm9pbkZpbGVuYW1lKG91dHB1dF9wYXRoLCAic18iICsgc3BlYWtlcl9uYW1lICsg
Ii1mYXJfZW5kLndhdiIpOwogICAgIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIlRoZSBmYXItZW5k
IGF1ZGlvIHRyYWNrIHdpbGwgYmUgY3JlYXRlZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAg
ICA8PCBmYXJfZW5kX3BhdGgucGF0aG5hbWUoKSA8PCAiLiI7CisgICAgICAgICAgICAgICAgICAg
ICAgICA8PCBmYXJfZW5kX3BhdGggPDwgIi4iOwogCiAgICAgLy8gQWRkIHRvIG1hcC4KICAgICBz
cGVha2VyX291dHB1dF9maWxlX3BhdGhzX21hcC0+ZW1wbGFjZSgKICAgICAgICAgc3RkOjpwaWVj
ZXdpc2VfY29uc3RydWN0LCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoc3BlYWtlcl9uYW1lKSwKLSAg
ICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKG5lYXJfZW5kX3BhdGgucGF0aG5hbWUoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcl9lbmRfcGF0aC5wYXRobmFtZSgpKSk7Cisg
ICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShuZWFyX2VuZF9wYXRoLCBmYXJfZW5kX3BhdGgp
KTsKICAgfQogCiAgIHJldHVybiBzcGVha2VyX291dHB1dF9maWxlX3BhdGhzX21hcDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vz
c21lbnQvYXBtX3ZhZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9x
dWFsaXR5X2Fzc2Vzc21lbnQvYXBtX3ZhZC5jYwppbmRleCBhNjE4NGI1ZjlmZGEwMTFmYTdkNjhh
ZTRjN2E3ZWY1MjY3MTY1MTdlLi40YjZhZGEyN2I2YTZmODJjMTdlODZmNTA3N2ZjODgxMjhmZjZh
NzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVh
bGl0eV9hc3Nlc3NtZW50L2FwbV92YWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvcHlfcXVhbGl0
eV9hc3Nlc3NtZW50L3F1YWxpdHlfYXNzZXNzbWVudC9hcG1fdmFkLmNjCkBAIC0yNCw5ICsyNCw5
IEBAIGNvbnN0ZXhwciBpbnQga01heFNhbXBsZVJhdGUgPSA0ODAwMDsKIGNvbnN0ZXhwciBzaXpl
X3Qga01heEZyYW1lTGVuID0KICAgICBrQXVkaW9GcmFtZUxlbmd0aE1pbGxpc2Vjb25kcyAqIGtN
YXhTYW1wbGVSYXRlIC8gMTAwMDsKIAotREVGSU5FX3N0cmluZyhpLCAiIiwgIklucHV0IHdhdiBm
aWxlIik7Ci1ERUZJTkVfc3RyaW5nKG9fcHJvYnMsICIiLCAiVkFEIHByb2JhYmlsaXRpZXMgb3V0
cHV0IGZpbGUiKTsKLURFRklORV9zdHJpbmcob19ybXMsICIiLCAiVkFEIG91dHB1dCBmaWxlIik7
CitXRUJSVENfREVGSU5FX3N0cmluZyhpLCAiIiwgIklucHV0IHdhdiBmaWxlIik7CitXRUJSVENf
REVGSU5FX3N0cmluZyhvX3Byb2JzLCAiIiwgIlZBRCBwcm9iYWJpbGl0aWVzIG91dHB1dCBmaWxl
Iik7CitXRUJSVENfREVGSU5FX3N0cmluZyhvX3JtcywgIiIsICJWQUQgb3V0cHV0IGZpbGUiKTsK
IAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBpZiAocnRjOjpGbGFnTGlz
dDo6U2V0RmxhZ3NGcm9tQ29tbWFuZExpbmUoJmFyZ2MsIGFyZ3YsIHRydWUpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3Rlc3QvcHlfcXVhbGl0eV9hc3Nlc3NtZW50L3F1YWxpdHlfYXNzZXNzbWVu
dC9zb3VuZF9sZXZlbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9x
dWFsaXR5X2Fzc2Vzc21lbnQvc291bmRfbGV2ZWwuY2MKaW5kZXggOThjZjg0Yzg4OGY3YjVjMTNm
ODRjMGUzZmJlNGViMjU5MmJjMDZhYy4uMzVhMmMxMWFlYjIyNzljZGZiM2UzZmQxY2FmYzMxNTdl
YjYyNzhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvcHlfcXVhbGl0eV9hc3Nlc3NtZW50
L3F1YWxpdHlfYXNzZXNzbWVudC9zb3VuZF9sZXZlbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9w
eV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nlc3NtZW50L3NvdW5kX2xldmVsLmNjCkBA
IC0yNiwxMyArMjYsMTMgQEAgY29uc3RleHByIHNpemVfdCBrTWF4RnJhbWVMZW4gPSBrTWF4RnJh
bWVMZW5NcyAqIGtNYXhTYW1wbGVSYXRlIC8gMTAwMDsKIAogY29uc3QgZG91YmxlIGtPbmVEYlJl
ZHVjdGlvbiA9IERiVG9SYXRpbygtMS4wKTsKIAotREVGSU5FX3N0cmluZyhpLCAiIiwgIklucHV0
IHdhdiBmaWxlIik7Ci1ERUZJTkVfc3RyaW5nKG9jLCAiIiwgIkNvbmZpZyBvdXRwdXQgZmlsZSIp
OwotREVGSU5FX3N0cmluZyhvbCwgIiIsICJMZXZlbHMgb3V0cHV0IGZpbGUiKTsKLURFRklORV9m
bG9hdChhLCA1LmYsICJBdHRhY2sgKG1zKSIpOwotREVGSU5FX2Zsb2F0KGQsIDIwLmYsICJEZWNh
eSAobXMpIik7Ci1ERUZJTkVfaW50KGYsIDEwLCAiRnJhbWUgbGVuZ3RoIChtcykiKTsKLURFRklO
RV9ib29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcoaSwgIiIsICJJbnB1dCB3YXYgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmco
b2MsICIiLCAiQ29uZmlnIG91dHB1dCBmaWxlIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhvbCwg
IiIsICJMZXZlbHMgb3V0cHV0IGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoYSwgNS5mLCAi
QXR0YWNrIChtcykiKTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoZCwgMjAuZiwgIkRlY2F5IChtcyki
KTsKK1dFQlJUQ19ERUZJTkVfaW50KGYsIDEwLCAiRnJhbWUgbGVuZ3RoIChtcykiKTsKK1dFQlJU
Q19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKTsKIAogaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBpZiAocnRjOjpGbGFnTGlzdDo6U2V0
RmxhZ3NGcm9tQ29tbWFuZExpbmUoJmFyZ2MsIGFyZ3YsIHRydWUpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvdGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nlc3NtZW50L3Zh
ZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vz
c21lbnQvdmFkLmNjCmluZGV4IDE5MWNiMWU5ZmNmZDE1MmY5ZTA5NDM3NjhmMGY1YjM2ZGZlNzI1
OTguLjhhMTM0ZWQxODVkOWNlOTYwM2FkN2QxYmM1NTljNGFmYzNiYTM1MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vzc21lbnQv
dmFkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5
X2Fzc2Vzc21lbnQvdmFkLmNjCkBAIC0yNyw4ICsyNyw4IEBAIGNvbnN0ZXhwciBzaXplX3Qga01h
eEZyYW1lTGVuID0KIAogY29uc3RleHByIHVpbnQ4X3Qga0JpdG1hc2tCdWZmU2l6ZSA9IDg7CiAK
LURFRklORV9zdHJpbmcoaSwgIiIsICJJbnB1dCB3YXYgZmlsZSIpOwotREVGSU5FX3N0cmluZyhv
LCAiIiwgIlZBRCBvdXRwdXQgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoaSwgIiIsICJJ
bnB1dCB3YXYgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcobywgIiIsICJWQUQgb3V0cHV0
IGZpbGUiKTsKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBpZiAocnRj
OjpGbGFnTGlzdDo6U2V0RmxhZ3NGcm9tQ29tbWFuZExpbmUoJmFyZ2MsIGFyZ3YsIHRydWUpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC9tb3ZpbmdfbW9tZW50cy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy90cmFuc2llbnQvbW92aW5nX21vbWVudHMuY2MKaW5kZXggYTE5OWJiMGMxYjlkM2UxYzA3
YmNlYTEyODc1MzRkMWFkZTA5MTc1Mi4uODM4MTBiZmUzYzI3NmViMDAyMmQwYjgzNDhmZTA3MDg4
MWY2YTRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC9tb3ZpbmdfbW9tZW50cy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L21vdmluZ19tb21lbnRzLmNjCkBAIC0xMCw3ICsx
MCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L21v
dmluZ19tb21lbnRzLmgiCiAKLSNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+
CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3RyYW5zaWVudC90cmFuc2llbnRfZGV0ZWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3Ry
YW5zaWVudF9kZXRlY3Rvci5jYwppbmRleCBjM2JmMjgyYjBlMWZmMTdkMWFlN2I0ODc4OWIxNTEy
MGI1N2YyMTFjLi44OTk3ZDRjMDkyMDZmYWFlM2E1YzRjYTQxZDQyMGU5ZWVlZjU4YWNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9kZXRlY3Rvci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9kZXRlY3Rvci5jYwpAQCAtMTMsMTIgKzEzLDEy
IEBACiAjaW5jbHVkZSA8ZmxvYXQuaD4KICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3Ry
aW5nLmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdHJhbnNpZW50L2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy90cmFuc2llbnQvZGF1YmVjaGllc184X3dhdmVsZXRfY29lZmZzLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC9tb3ZpbmdfbW9tZW50cy5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX25vZGUu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3dwZF90cmVl
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy90cmFuc2llbnQvdHJhbnNpZW50X2RldGVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3Ry
YW5zaWVudF9kZXRlY3Rvci5oCmluZGV4IDMyNjdiM2E2Y2RjNGE1YTY2NmI3YjRlZDFiODc4NDVm
ZWFjYTgyOWEuLjIzYjg4ZjgyYjEwY2YyZTZlYzM3NzI4YjExNjMxYzdhMmUxNzVhYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvdHJhbnNpZW50X2RldGVjdG9yLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL3RyYW5zaWVudC90cmFuc2llbnRfZGV0ZWN0b3IuaApAQCAtMTEsNiArMTEsNyBAQAog
I2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfVFJBTlNJRU5UX1RSQU5TSUVOVF9ERVRF
Q1RPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfVFJBTlNJRU5UX1RSQU5T
SUVOVF9ERVRFQ1RPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8ZGVxdWU+
CiAjaW5jbHVkZSA8bWVtb3J5PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3Ry
YW5zaWVudF9zdXBwcmVzc2lvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2ll
bnRfc3VwcHJlc3Npb25fdGVzdC5jYwppbmRleCA5ZTdlY2Q1Nzg2NTJlNDZiNDQ2MmY5NzczOWM2
YTRjZTY1MGFiMzQyLi5lMTVmNjljMDQyMDE1NTBlYTE2MjJlODQzZDhiN2EyNTJiOTUxMTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9zdXBwcmVzc2lvbl90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvdHJhbnNpZW50X3N1cHByZXNzaW9uX3Rlc3Qu
Y2MKQEAgLTIzLDI2ICsyMywyOCBAQAogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRl
ICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgogCi1ERUZJTkVfc3RyaW5nKGluX2ZpbGVf
bmFtZSwgIiIsICJQQ00gZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBzaWduYWwuIik7Ci1ERUZJTkVf
c3RyaW5nKGRldGVjdGlvbl9maWxlX25hbWUsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAg
ICAgICAiUENNIGZpbGUgdGhhdCBjb250YWlucyB0aGUgZGV0ZWN0aW9uIHNpZ25hbC4iKTsKLURF
RklORV9zdHJpbmcocmVmZXJlbmNlX2ZpbGVfbmFtZSwKLSAgICAgICAgICAgICAgIiIsCi0gICAg
ICAgICAgICAgICJQQ00gZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSByZWZlcmVuY2Ugc2lnbmFsLiIp
OwotCi1ERUZJTkVfaW50KGNodW5rX3NpemVfbXMsCi0gICAgICAgICAgIDEwLAotICAgICAgICAg
ICAiVGltZSBiZXR3ZWVuIGVhY2ggY2h1bmsgb2Ygc2FtcGxlcyBpbiBtaWxsaXNlY29uZHMuIik7
Ci0KLURFRklORV9pbnQoc2FtcGxlX3JhdGVfaHosIDE2MDAwLCAiU2FtcGxpbmcgZnJlcXVlbmN5
IG9mIHRoZSBzaWduYWwgaW4gSGVydHouIik7Ci1ERUZJTkVfaW50KGRldGVjdGlvbl9yYXRlX2h6
LAotICAgICAgICAgICAwLAotICAgICAgICAgICAiU2FtcGxpbmcgZnJlcXVlbmN5IG9mIHRoZSBk
ZXRlY3Rpb24gc2lnbmFsIGluIEhlcnR6LiIpOwotCi1ERUZJTkVfaW50KG51bV9jaGFubmVscywg
MSwgIk51bWJlciBvZiBjaGFubmVscy4iKTsKLQotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQ
cmludCB0aGlzIG1lc3NhZ2UuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhpbl9maWxlX25hbWUs
ICIiLCAiUENNIGZpbGUgdGhhdCBjb250YWlucyB0aGUgc2lnbmFsLiIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcoZGV0ZWN0aW9uX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAor
ICAgICAgICAgICAgICAgICAgICAgIlBDTSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIGRldGVjdGlv
biBzaWduYWwuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhyZWZlcmVuY2VfZmlsZV9uYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiUENNIGZpbGUg
dGhhdCBjb250YWlucyB0aGUgcmVmZXJlbmNlIHNpZ25hbC4iKTsKKworV0VCUlRDX0RFRklORV9p
bnQoY2h1bmtfc2l6ZV9tcywKKyAgICAgICAgICAgICAgICAgIDEwLAorICAgICAgICAgICAgICAg
ICAgIlRpbWUgYmV0d2VlbiBlYWNoIGNodW5rIG9mIHNhbXBsZXMgaW4gbWlsbGlzZWNvbmRzLiIp
OworCitXRUJSVENfREVGSU5FX2ludChzYW1wbGVfcmF0ZV9oeiwKKyAgICAgICAgICAgICAgICAg
IDE2MDAwLAorICAgICAgICAgICAgICAgICAgIlNhbXBsaW5nIGZyZXF1ZW5jeSBvZiB0aGUgc2ln
bmFsIGluIEhlcnR6LiIpOworV0VCUlRDX0RFRklORV9pbnQoZGV0ZWN0aW9uX3JhdGVfaHosCisg
ICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIlNhbXBsaW5nIGZyZXF1ZW5j
eSBvZiB0aGUgZGV0ZWN0aW9uIHNpZ25hbCBpbiBIZXJ0ei4iKTsKKworV0VCUlRDX0RFRklORV9p
bnQobnVtX2NoYW5uZWxzLCAxLCAiTnVtYmVyIG9mIGNoYW5uZWxzLiIpOworCitXRUJSVENfREVG
SU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9z
dXBwcmVzc29yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9zdXBwcmVzc29yLmgK
aW5kZXggOWFlM2ZjNjYwYTg4MWUyZGZjNTFmNWY3OWI3M2E0NmFiZWY4MTlhMC4uYWU1MTk2NmEz
ZDRlYmI4NTBiNjBjZDQ2OGM1M2UyY2ZmMjA0MWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Ry
YW5zaWVudC90cmFuc2llbnRfc3VwcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQv
dHJhbnNpZW50X3N1cHByZXNzb3IuaApAQCAtMTEsOSArMTEsOSBAQAogI2lmbmRlZiBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfVFJBTlNJRU5UX1RSQU5TSUVOVF9TVVBQUkVTU09SX0hfCiAjZGVm
aW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19UUkFOU0lFTlRfVFJBTlNJRU5UX1NVUFBSRVNT
T1JfSF8KIAotI2luY2x1ZGUgPGRlcXVlPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzZXQ+CiAKICNpbmNsdWRl
ICJydGNfYmFzZS9ndGVzdF9wcm9kX3V0aWwuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Ry
YW5zaWVudC93cGRfdHJlZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX3RyZWUuY2MKaW5k
ZXggNzJmNGQ3Njg5MWYzODZkZTNkYzEyNzA3Yjc5ZDE2MTQxZWQwN2Q4NS4uYzhhYTYxNTg4MTdh
ZmVlY2ViOWMyNDliMDczN2UwN2FiN2RlNmM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5z
aWVudC93cGRfdHJlZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3dwZF90cmVlLmNjCkBA
IC0xMCwxMCArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Ry
YW5zaWVudC93cGRfdHJlZS5oIgogCi0jaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0cmlu
Zy5oPgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC9keWFk
aWNfZGVjaW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5z
aWVudC93cGRfbm9kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3dwZF90cmVlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50
L3dwZF90cmVlLmgKaW5kZXggNzA3YTg5ZDQ0YWMxNmZkYjI0YWJkZjk5ZTljMTU4OTdhZDY0NjFh
Ny4uYjYyMTM1ZGFmYThkN2NlZDg5OWFjMWE2NzAyM2RjMWM3ZTQyNjFhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3RyYW5zaWVudC93cGRfdHJlZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQv
d3BkX3RyZWUuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NF
U1NJTkdfVFJBTlNJRU5UX1dQRF9UUkVFX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19UUkFOU0lFTlRfV1BEX1RSRUVfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1
ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2ll
bnQvd3BkX25vZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90eXBpbmdfZGV0ZWN0aW9uLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdHlwaW5nX2RldGVjdGlvbi5oCmluZGV4IDcwZmQ5MDMzNjYxMDkyMTMzYWUz
ZjczNmY5MzIwYzk4MTg5OWEyYjcuLmQ4ZmIzNTkyYzk2NDRkNGQyYWI2OGM3YzllNDE4ZWZhNjg0
MzU3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90eXBpbmdfZGV0ZWN0aW9uLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL3R5cGluZ19kZXRlY3Rpb24uaApAQCAtMTEsOSArMTEsMTEgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX1RZUElOR19ERVRFQ1RJT05fSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX1RZUElOR19ERVRFQ1RJT05fSF8KIAorI2luY2x1ZGUgInJ0Y19i
YXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBU
eXBpbmdEZXRlY3Rpb24geworY2xhc3MgUlRDX0VYUE9SVCBUeXBpbmdEZXRlY3Rpb24gewogIHB1
YmxpYzoKICAgVHlwaW5nRGV0ZWN0aW9uKCk7CiAgIHZpcnR1YWwgflR5cGluZ0RldGVjdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvb291cmFfZmZ0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3V0aWxpdHkvb291cmFfZmZ0LmNjCmluZGV4IGMzMzMzY2VhNWJlYjAwMGE5ZjUyMjYzYzRmMWY3
OGM5OTJiNDA3ZDguLjg2MjhiZDM5ZjBhZWNjMjE5MWMzZDRhMjUyMTEyZDRkMzQyMmY0YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dXRpbGl0eS9vb3VyYV9mZnQuY2MKQEAgLTIzLDggKzIzLDYgQEAKIAogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdC5oIgogCi0jaW5jbHVkZSA8bWF0
aC5oPgotCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvb291cmFf
ZmZ0X3RhYmxlc19jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgog
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9mZWF0dXJlc193cmFwcGVyLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnRfc3NlMi5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy91dGlsaXR5L29vdXJhX2ZmdF9zc2UyLmNjCmluZGV4IDliNWQwZjM3YTQ0OTdjNzQ3NmFk
YTM4N2JmZDdiYjg2ZmMyZGM4NmMuLjBlNGE0NGJlY2NmNDFlNjIwM2U2ZjA1ODExYWFmM2Y5YWNh
NTI2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdF9zc2UyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdF9zc2UyLmNjCkBAIC04LDEwICs4LDEwIEBA
CiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCiAgKi8KIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGls
aXR5L29vdXJhX2ZmdC5oIgotCiAjaW5jbHVkZSA8ZW1taW50cmluLmg+CisjaW5jbHVkZSA8eG1t
aW50cmluLmg+CiAKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9v
b3VyYV9mZnQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9v
b3VyYV9mZnRfdGFibGVzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy91dGlsaXR5L29vdXJhX2ZmdF90YWJsZXNfbmVvbl9zc2UyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2Uvc3lzdGVtL2FyY2guaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvZ21tLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3ZhZC9nbW0uY2MKaW5kZXggY2Q4YTFhOGEzNzVjN2VkYjg5YTg1MzAyY2EwYjc1
NzcxZTY4OGFiMy4uM2I4NzY0YzRkMDJhOWJiMzE3MzNhYWUxYWMxMTIxMTlkMmNlNTZhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9nbW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9nbW0uY2MK
QEAgLTExLDcgKzExLDYgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFk
L2dtbS5oIgogCiAjaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNlZF92
YWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BpdGNoX2Jhc2VkX3ZhZC5jYwppbmRleCAwMjVlZjIwNTlk
OTEyYjM2YjhlODdmMzZiMjEwNzM0ZWY0N2E0YzkzLi42OGU2MGRjNjZhZTUxNzZiMjlhY2QwNDc3
ZDFjZDQwNTQ0ZTNlZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BpdGNoX2Jhc2VkX3Zh
ZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BpdGNoX2Jhc2VkX3ZhZC5jYwpAQCAtMTAsNyArMTAs
NiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNl
ZF92YWQuaCIKIAotI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvY29tbW9uLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdmFkL3BpdGNoX2Jhc2VkX3ZhZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRjaF9i
YXNlZF92YWQuaAppbmRleCA0ZDMyNzY1MmM2ODAxNzI3NTJiOWY2NzMxMDAyNGIxNTZlMDUwMzU1
Li4yMmJjMGYyMjYzOTAxMDA3ZTJhZmRhNzhhYWEwYzY2YmE0NGU2Y2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvdmFkL3BpdGNoX2Jhc2VkX3ZhZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvcGl0Y2hf
YmFzZWRfdmFkLmgKQEAgLTE4LDcgKzE4LDYgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNs
YXNzIEF1ZGlvRnJhbWU7CiBjbGFzcyBWYWRDaXJjdWxhckJ1ZmZlcjsKIAogLy8gQ29tcHV0ZXMg
dGhlIHByb2JhYmlsaXR5IG9mIHRoZSBpbnB1dCBhdWRpbyBmcmFtZSB0byBiZSBhY3RpdmUgZ2l2
ZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvcG9sZV96ZXJvX2ZpbHRlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy92YWQvcG9sZV96ZXJvX2ZpbHRlci5jYwppbmRleCBiOTk2N2Q3YWVhNWJmNDM5NDQ2NjJj
NDM2MWM1ZTVjODI1YmUwOGZkLi40MTU2ZDdlNzk1MmE5ZjFhZTRlMDEwNzhiNDNjY2Q2MGM5YzU1
ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BvbGVfemVyb19maWx0ZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3ZhZC9wb2xlX3plcm9fZmlsdGVyLmNjCkBAIC0xMCw3ICsxMCw2IEBACiAKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BvbGVfemVyb19maWx0ZXIuaCIK
IAotI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9zdGFuZGFsb25lX3ZhZC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy92YWQvc3RhbmRhbG9uZV92YWQuY2MKaW5kZXggMTlhNTI4MmMzZjcxNTg0Yjg0
MGZkM2M4NWUwYmE5NTRmYjAxYmQyMi4uMTM5NzY2OGViNGJjYmQyNDMyZmQwM2M3Mjg1NmEyOWQ2
NDgxOWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9zdGFuZGFsb25lX3ZhZC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdmFkL3N0YW5kYWxvbmVfdmFkLmNjCkBAIC0xMiw3ICsxMiw3IEBACiAKICNp
bmNsdWRlIDxzdHJpbmcuaD4KIAotI2luY2x1ZGUgImF1ZGlvL3V0aWxpdHkvYXVkaW9fZnJhbWVf
b3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgImNvbW1vbl9hdWRpby92YWQvaW5jbHVkZS93ZWJydGNf
dmFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9zdGFuZGFsb25lX3ZhZC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3ZhZC9zdGFuZGFsb25lX3ZhZC5oCmluZGV4IDc5NjUwZmJlOGM2Y2FlMWMzYWRlZDkzYWNjMTJh
ZTlmZmQwMzE1OWYuLjNkZmY0MTYzYzIyZTgxZDMyNWVhMmJlYzVhMGI5MGViNTIwMjlmMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvc3RhbmRhbG9uZV92YWQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dmFkL3N0YW5kYWxvbmVfdmFkLmgKQEAgLTExLDEzICsxMSwxNCBAQAogI2lmbmRlZiBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUdDX1NUQU5EQUxPTkVfVkFEX0hfCiAjZGVmaW5lIE1PRFVMRVNf
QVVESU9fUFJPQ0VTU0lOR19BR0NfU1RBTkRBTE9ORV9WQURfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3ZhZC9p
bmNsdWRlL3dlYnJ0Y192YWQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dmFkL2NvbW1vbi5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3MgQXVkaW9GcmFtZTsK
LQogY2xhc3MgU3RhbmRhbG9uZVZhZCB7CiAgcHVibGljOgogICBzdGF0aWMgU3RhbmRhbG9uZVZh
ZCogQ3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZhZF9hdWRpb19wcm9jLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdmFkL3ZhZF9hdWRpb19wcm9jLmgKaW5kZXggZTM0MDkxYmRiNmFiZDFlOGEz
YjMxYzE1OWYxZjAyNGUzNzBkM2IxNi4uOWJlMzQ2N2VmODUyMzA4NjQ3M2JiMjA0NjgxOGVkMjQx
MTNmYzhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92YWRfYXVkaW9fcHJvYy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy92YWQvdmFkX2F1ZGlvX3Byb2MuaApAQCAtMTEsMTMgKzExLDE0IEBACiAjaWZu
ZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19WQURfVkFEX0FVRElPX1BST0NfSF8KICNkZWZp
bmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX1ZBRF9WQURfQVVESU9fUFJPQ19IXwogCisjaW5j
bHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5Pgog
Ci0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9jb21tb24uaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL2NvbW1vbi5oIiAgLy8gQXVkaW9GZWF0
dXJlcywga1NhbXBsZVIuLi4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIEF1ZGlvRnJh
bWU7CiBjbGFzcyBQb2xlWmVyb0ZpbHRlcjsKIAogY2xhc3MgVmFkQXVkaW9Qcm9jIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy92YWQvdm9pY2VfYWN0aXZpdHlfZGV0ZWN0b3IuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy92YWQvdm9pY2VfYWN0aXZpdHlfZGV0ZWN0b3IuaAppbmRleCBlNDI0YWMxYTI4Mjc4ZTU0NTJl
MDI1M2JjNWU1OTc3YWEwNzQ5M2NlLi5kMTQwZmUyYWEzYTQxNDAzNjFjZGExMDY1NTFkNzdhOTY3
OWM2OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZvaWNlX2FjdGl2aXR5X2RldGVjdG9y
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92b2ljZV9hY3Rpdml0eV9kZXRlY3Rvci5oCkBAIC0xMSw2
ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19WQURfVk9JQ0VfQUNU
SVZJVFlfREVURUNUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX1ZBRF9W
T0lDRV9BQ1RJVklUWV9ERVRFQ1RPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3ZvaWNlX2RldGVjdGlvbl9pbXBsLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Zv
aWNlX2RldGVjdGlvbl9pbXBsLmNjCmluZGV4IDkyODBiZTFlZjlkMGMyNGY1ZWVhOGYxODUwMGFj
ODgwZTJlYWExMmYuLmM1NWNhNGFlZTg3NzFhYjEwYjk4YmE4MGIxZjU4ZTQ0YjU1ZjlhMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy92b2ljZV9kZXRlY3Rpb25faW1wbC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdm9pY2VfZGV0ZWN0aW9uX2ltcGwuY2MKQEAgLTEwLDggKzEwLDEwIEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2VfZGV0ZWN0aW9uX2ltcGwuaCIKIAorI2lu
Y2x1ZGUgImFwaS9hdWRpby9hdWRpb19mcmFtZS5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby92
YWQvaW5jbHVkZS93ZWJydGNfdmFkLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2F1ZGlvX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2VfZGV0ZWN0aW9uX2ltcGwuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92
b2ljZV9kZXRlY3Rpb25faW1wbC5oCmluZGV4IDRiNzI0YmRkMjU2NDdlYzNmMWFlNTI0Y2M1N2Zm
ZWYwNDI0OGRhYjUuLmM0Mzg0NzM2Nzk5ZTAxMDgzZDQzNThkYWNlMmVjNTExODE3ZWRmNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy92b2ljZV9kZXRlY3Rpb25faW1wbC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy92b2ljZV9kZXRlY3Rpb25faW1wbC5oCkBAIC0xMSwxMSArMTEsMTMgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX1ZPSUNFX0RFVEVDVElPTl9JTVBMX0hfCiAjZGVmaW5lIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19WT0lDRV9ERVRFQ1RJT05fSU1QTF9IXwogCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rp
b24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKQEAgLTQyLDYgKzQ0LDcgQEAgY2xhc3MgVm9pY2VEZXRlY3Rpb25JbXBs
IDogcHVibGljIFZvaWNlRGV0ZWN0aW9uIHsKIAogIHByaXZhdGU6CiAgIGNsYXNzIFZhZDsKKwog
ICBydGM6OkNyaXRpY2FsU2VjdGlvbiogY29uc3QgY3JpdF87CiAgIGJvb2wgZW5hYmxlZF8gUlRD
X0dVQVJERURfQlkoY3JpdF8pID0gZmFsc2U7CiAgIGJvb2wgc3RyZWFtX2hhc192b2ljZV8gUlRD
X0dVQVJERURfQlkoY3JpdF8pID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9CVUlM
RC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Yml0cmF0ZV9jb250cm9sbGVyL0JVSUxELmduCmluZGV4IDcyMDQ2ZjBhMDE1ZTAyYTgyNzJmOTQz
MDI5NGJhZDBlNDg4N2FkZGQuLmI1MDFjYjQ0NTdmMmZlNWY0MGQ5MTBiYjVjMDZlYWUzZWJkNjAz
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL0JV
SUxELmduCkBAIC0xNSw2ICsxNSw4IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYml0cmF0ZV9jb250
cm9sbGVyIikgewogICAgICJiaXRyYXRlX2NvbnRyb2xsZXJfaW1wbC5jYyIsCiAgICAgImJpdHJh
dGVfY29udHJvbGxlcl9pbXBsLmgiLAogICAgICJpbmNsdWRlL2JpdHJhdGVfY29udHJvbGxlci5o
IiwKKyAgICAibG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5jYyIsCisgICAgImxvc3Nf
YmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uaCIsCiAgICAgInNlbmRfc2lkZV9iYW5kd2lkdGhf
ZXN0aW1hdGlvbi5jYyIsCiAgICAgInNlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oIiwK
ICAgXQpAQCAtMzEsMTAgKzMzLDE2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYml0cmF0ZV9jb250
cm9sbGVyIikgewogCiAgIGRlcHMgPSBbCiAgICAgIi4uOm1vZHVsZV9hcGkiLAorICAgICIuLi8u
Li9hcGkvdHJhbnNwb3J0Om5ldHdvcmtfY29udHJvbCIsCisgICAgIi4uLy4uL2FwaS91bml0czpk
YXRhX3JhdGUiLAorICAgICIuLi8uLi9hcGkvdW5pdHM6dGltZV9kZWx0YSIsCisgICAgIi4uLy4u
L2FwaS91bml0czp0aW1lc3RhbXAiLAogICAgICIuLi8uLi9sb2dnaW5nOnJ0Y19ldmVudF9id2Ui
LAogICAgICIuLi8uLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKICAgICAiLi4vLi4vcnRj
X2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6ZGVwcmVjYXRpb24iLAogICAgICIu
Li8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3J0Y19iYXNlL2V4
cGVyaW1lbnRzOmZpZWxkX3RyaWFsX3BhcnNlciIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVy
cyIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uLy4u
L3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2JpdHJh
dGVfY29udHJvbGxlcl9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvYml0cmF0ZV9jb250cm9sbGVyX2lt
cGwuY2MKaW5kZXggOTMwNDViNzNhMzZiYjM0NGEzNjVkN2JjYWViZjhiMzhhZDIyMzc5MS4uNTdj
ODVmNmY2ZmM1N2ZlMTIxN2Q0OGM2YzBmZjY3NzY5MjAxZjZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRy
b2xsZXIvYml0cmF0ZV9jb250cm9sbGVyX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvYml0cmF0
ZV9jb250cm9sbGVyX2ltcGwuY2MKQEAgLTIxLDEwICsyMSwxMCBAQAogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIG5hbWVzcGFjZSB7Ci1hYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gVG9PcHRpb25hbERh
dGFSYXRlKGludCBzdGFydF9iaXRyYXRlX2JwcykgewotICBpZiAoc3RhcnRfYml0cmF0ZV9icHMg
PT0gLTEpCi0gICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7Ci0gIHJldHVybiBEYXRhUmF0ZTo6YnBz
KHN0YXJ0X2JpdHJhdGVfYnBzKTsKK2Fic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBUb09wdGlvbmFs
RGF0YVJhdGUoaW50IHNlbmRfYml0cmF0ZV9icHMpIHsKKyAgaWYgKHNlbmRfYml0cmF0ZV9icHMg
PiAwKQorICAgIHJldHVybiBEYXRhUmF0ZTo6YnBzKHNlbmRfYml0cmF0ZV9icHMpOworICByZXR1
cm4gYWJzbDo6bnVsbG9wdDsKIH0KIERhdGFSYXRlIE1heFJhdGUoaW50IG1heF9iaXRyYXRlX2Jw
cykgewogICBpZiAobWF4X2JpdHJhdGVfYnBzID09IC0xKQpAQCAtMTUzLDE0ICsxNTMsMTIgQEAg
dm9pZCBCaXRyYXRlQ29udHJvbGxlckltcGw6Ok9uRGVsYXlCYXNlZEJ3ZVJlc3VsdCgKICAgICBy
dGM6OkNyaXRTY29wZSBjcygmY3JpdHNlY3RfKTsKICAgICBpZiAocmVzdWx0LnByb2JlKSB7CiAg
ICAgICBiYW5kd2lkdGhfZXN0aW1hdGlvbl8uU2V0U2VuZEJpdHJhdGUoCi0gICAgICAgICAgRGF0
YVJhdGU6OmJwcyhyZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBzKSwKLSAgICAgICAgICBUaW1lc3Rh
bXA6Om1zKGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpKTsKKyAgICAgICAgICByZXN1bHQu
dGFyZ2V0X2JpdHJhdGUsIFRpbWVzdGFtcDo6bXMoY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMo
KSkpOwogICAgIH0KICAgICAvLyBTaW5jZSBTZXRTZW5kQml0cmF0ZSBub3cgcmVzZXRzIHRoZSBk
ZWxheS1iYXNlZCBlc3RpbWF0ZSwgd2UgaGF2ZSB0byBjYWxsCiAgICAgLy8gVXBkYXRlRGVsYXlC
YXNlZEVzdGltYXRlIGFmdGVyIFNldFNlbmRCaXRyYXRlLgogICAgIGJhbmR3aWR0aF9lc3RpbWF0
aW9uXy5VcGRhdGVEZWxheUJhc2VkRXN0aW1hdGUoCi0gICAgICAgIFRpbWVzdGFtcDo6bXMoY2xv
Y2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSksCi0gICAgICAgIERhdGFSYXRlOjpicHMocmVzdWx0
LnRhcmdldF9iaXRyYXRlX2JwcykpOworICAgICAgICBUaW1lc3RhbXA6Om1zKGNsb2NrXy0+VGlt
ZUluTWlsbGlzZWNvbmRzKCkpLCByZXN1bHQudGFyZ2V0X2JpdHJhdGUpOwogICB9CiAgIE1heWJl
VHJpZ2dlck9uTmV0d29ya0NoYW5nZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2Jp
dHJhdGVfY29udHJvbGxlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2JpdHJhdGVfY29udHJv
bGxlcl91bml0dGVzdC5jYwppbmRleCA5NmY4YTFlZjI2NmViOWU2MmVjZjBmODAxY2NjMzFkMDhj
N2VkYThiLi5jZjI4MTIxNGFhM2NmYjQ2ODVlNGJlOGYzOTY1MzIzYjljOTBjZTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Jp
dHJhdGVfY29udHJvbGxlci9iaXRyYXRlX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2Nv
bnRyb2xsZXIvYml0cmF0ZV9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCkBAIC0xNjksNyArMTY5LDcg
QEAgVEVTVF9GKEJpdHJhdGVDb250cm9sbGVyVGVzdCwgT25lQml0cmF0ZU9ic2VydmVyT25lUnRj
cE9ic2VydmVyKSB7CiAgIEVYUEVDVF9FUSgzMDAwMDAsIGJpdHJhdGVfb2JzZXJ2ZXJfLmxhc3Rf
Yml0cmF0ZV8pOwogCiAgIC8vIFRlc3QgdGhhdCBhIGxvdyBkZWxheS1iYXNlZCBlc3RpbWF0ZSBs
aW1pdHMgdGhlIGNvbWJpbmVkIGVzdGltYXRlLgotICB3ZWJydGM6OkRlbGF5QmFzZWRCd2U6OlJl
c3VsdCByZXN1bHQoZmFsc2UsIDI4MDAwMCk7CisgIHdlYnJ0Yzo6RGVsYXlCYXNlZEJ3ZTo6UmVz
dWx0IHJlc3VsdChmYWxzZSwgd2VicnRjOjpEYXRhUmF0ZTo6a2JwcygyODApKTsKICAgY29udHJv
bGxlcl8tPk9uRGVsYXlCYXNlZEJ3ZVJlc3VsdChyZXN1bHQpOwogICBFWFBFQ1RfRVEoMjgwMDAw
LCBiaXRyYXRlX29ic2VydmVyXy5sYXN0X2JpdHJhdGVfKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRy
b2xsZXIvaW5jbHVkZS9iaXRyYXRlX2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2luY2x1ZGUv
Yml0cmF0ZV9jb250cm9sbGVyLmgKaW5kZXggZjY3NjAwZDE5MDgzNzg0ZTQ2N2QzZmQyMmY3Mjdk
M2YwZTMzMjMxMS4uM2UxMWZhNzZhMzI0MWRlNjA4OWU4ZTJhMzQxMGMwYzg2NWYwOWQ2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9iaXRyYXRlX2NvbnRyb2xsZXIvaW5jbHVkZS9iaXRyYXRlX2NvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVf
Y29udHJvbGxlci9pbmNsdWRlL2JpdHJhdGVfY29udHJvbGxlci5oCkBAIC0xNSwxNSArMTUsMTcg
QEAKICNpZm5kZWYgTU9EVUxFU19CSVRSQVRFX0NPTlRST0xMRVJfSU5DTFVERV9CSVRSQVRFX0NP
TlRST0xMRVJfSF8KICNkZWZpbmUgTU9EVUxFU19CSVRSQVRFX0NPTlRST0xMRVJfSU5DTFVERV9C
SVRSQVRFX0NPTlRST0xMRVJfSF8KIAotI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdGRkZWYu
aD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9p
bmNsdWRlL21vZHVsZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvZGVwcmVjYXRpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKK2NsYXNzIENsb2NrOwogY2xhc3MgUnRjRXZlbnRMb2c7CiAKIC8vIERlcHJlY2F0ZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYml0cmF0ZV9jb250cm9sbGVyL2xvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJh
dGVfY29udHJvbGxlci9sb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVkN2Y4YWEyYzM2ZDdmZDY2ZDU2MmFhY2I4NmRlNmNlNzY2NmNlNDcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2JpdHJhdGVfY29udHJvbGxlci9sb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjCkBA
IC0wLDAgKzEsMjE1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVs
ZXMvYml0cmF0ZV9jb250cm9sbGVyL2xvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uaCIK
KworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVj
dG9yPgorCisjaW5jbHVkZSAiYXBpL3VuaXRzL2RhdGFfcmF0ZS5oIgorI2luY2x1ZGUgImFwaS91
bml0cy90aW1lX2RlbHRhLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmll
bGRfdHJpYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworY29uc3QgY2hh
ciBrQndlTG9zc0Jhc2VkQ29udHJvbFtdID0gIldlYlJUQy1Cd2UtTG9zc0Jhc2VkQ29udHJvbCI7
CisKKy8vIEluY3JlYXNlIHNsb3dlciB3aGVuIFJUVCBpcyBoaWdoLgorZG91YmxlIEdldEluY3Jl
YXNlRmFjdG9yKGNvbnN0IExvc3NCYXNlZENvbnRyb2xDb25maWcmIGNvbmZpZywgVGltZURlbHRh
IHJ0dCkgeworICAvLyBDbGFtcCB0aGUgUlRUCisgIGlmIChydHQgPCBjb25maWcuaW5jcmVhc2Vf
bG93X3J0dCkgeworICAgIHJ0dCA9IGNvbmZpZy5pbmNyZWFzZV9sb3dfcnR0OworICB9IGVsc2Ug
aWYgKHJ0dCA+IGNvbmZpZy5pbmNyZWFzZV9oaWdoX3J0dCkgeworICAgIHJ0dCA9IGNvbmZpZy5p
bmNyZWFzZV9oaWdoX3J0dDsKKyAgfQorICBhdXRvIHJ0dF9yYW5nZSA9IGNvbmZpZy5pbmNyZWFz
ZV9oaWdoX3J0dC5HZXQoKSAtIGNvbmZpZy5pbmNyZWFzZV9sb3dfcnR0OworICBpZiAocnR0X3Jh
bmdlIDw9IFRpbWVEZWx0YTo6WmVybygpKSB7CisgICAgUlRDX0RDSEVDSyhmYWxzZSk7ICAvLyBP
bmx5IG9uIG1pc2NvbmZpZ3VyYXRpb24uCisgICAgcmV0dXJuIGNvbmZpZy5taW5faW5jcmVhc2Vf
ZmFjdG9yOworICB9CisgIGF1dG8gcnR0X29mZnNldCA9IHJ0dCAtIGNvbmZpZy5pbmNyZWFzZV9s
b3dfcnR0OworICBhdXRvIHJlbGF0aXZlX29mZnNldCA9IHN0ZDo6bWF4KDAuMCwgc3RkOjptaW4o
cnR0X29mZnNldCAvIHJ0dF9yYW5nZSwgMS4wKSk7CisgIGF1dG8gZmFjdG9yX3JhbmdlID0gY29u
ZmlnLm1heF9pbmNyZWFzZV9mYWN0b3IgLSBjb25maWcubWluX2luY3JlYXNlX2ZhY3RvcjsKKyAg
cmV0dXJuIGNvbmZpZy5taW5faW5jcmVhc2VfZmFjdG9yICsgKDEgLSByZWxhdGl2ZV9vZmZzZXQp
ICogZmFjdG9yX3JhbmdlOworfQorCitkb3VibGUgTG9zc0Zyb21CaXRyYXRlKERhdGFSYXRlIGJp
dHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRlIGxvc3NfYmFuZHdpZHRoX2Jh
bGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBleHBvbmVudCkgeworICBpZiAo
bG9zc19iYW5kd2lkdGhfYmFsYW5jZSA+PSBiaXRyYXRlKQorICAgIHJldHVybiAxLjA7CisgIHJl
dHVybiBwb3cobG9zc19iYW5kd2lkdGhfYmFsYW5jZSAvIGJpdHJhdGUsIGV4cG9uZW50KTsKK30K
KworRGF0YVJhdGUgQml0cmF0ZUZyb21Mb3NzKGRvdWJsZSBsb3NzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIERhdGFSYXRlIGxvc3NfYmFuZHdpZHRoX2JhbGFuY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlIGV4cG9uZW50KSB7CisgIGlmIChleHBvbmVudCA8PSAwKSB7Cisg
ICAgUlRDX0RDSEVDSyhmYWxzZSk7CisgICAgcmV0dXJuIERhdGFSYXRlOjpJbmZpbml0eSgpOwor
ICB9CisgIGlmIChsb3NzIDwgMWUtNSkKKyAgICByZXR1cm4gRGF0YVJhdGU6OkluZmluaXR5KCk7
CisgIHJldHVybiBsb3NzX2JhbmR3aWR0aF9iYWxhbmNlICogcG93KGxvc3MsIC0xLjAgLyBleHBv
bmVudCk7Cit9CisKK2RvdWJsZSBFeHBvbmVudGlhbFVwZGF0ZShUaW1lRGVsdGEgd2luZG93LCBU
aW1lRGVsdGEgaW50ZXJ2YWwpIHsKKyAgLy8gVXNlIHRoZSBjb252ZW50aW9uIHRoYXQgZXhwb25l
bnRpYWwgd2luZG93IGxlbmd0aCAod2hpY2ggaXMgcmVhbGx5CisgIC8vIGluZmluaXRlKSBpcyB0
aGUgdGltZSBpdCB0YWtlcyB0byBkYW1wZW4gdG8gMS9lLgorICBpZiAod2luZG93IDw9IFRpbWVE
ZWx0YTo6WmVybygpKSB7CisgICAgUlRDX0RDSEVDSyhmYWxzZSk7CisgICAgcmV0dXJuIDEuMGY7
CisgIH0KKyAgcmV0dXJuIDEuMGYgLSBleHAoaW50ZXJ2YWwgLyB3aW5kb3cgKiAtMS4wKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlCisKK0xvc3NCYXNlZENvbnRyb2xDb25maWc6Okxvc3NCYXNlZENv
bnRyb2xDb25maWcoKQorICAgIDogZW5hYmxlZChmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtCd2VM
b3NzQmFzZWRDb250cm9sKSksCisgICAgICBtaW5faW5jcmVhc2VfZmFjdG9yKCJtaW5faW5jciIs
IDEuMDIpLAorICAgICAgbWF4X2luY3JlYXNlX2ZhY3RvcigibWF4X2luY3IiLCAxLjA4KSwKKyAg
ICAgIGluY3JlYXNlX2xvd19ydHQoImluY3JfbG93X3J0dCIsIFRpbWVEZWx0YTo6bXMoMjAwKSks
CisgICAgICBpbmNyZWFzZV9oaWdoX3J0dCgiaW5jcl9oaWdoX3J0dCIsIFRpbWVEZWx0YTo6bXMo
ODAwKSksCisgICAgICBkZWNyZWFzZV9mYWN0b3IoImRlY3IiLCAwLjk5KSwKKyAgICAgIGxvc3Nf
d2luZG93KCJsb3NzX3dpbiIsIFRpbWVEZWx0YTo6bXMoODAwKSksCisgICAgICBsb3NzX21heF93
aW5kb3coImxvc3NfbWF4X3dpbiIsIFRpbWVEZWx0YTo6bXMoODAwKSksCisgICAgICBhY2tub3ds
ZWRnZWRfcmF0ZV9tYXhfd2luZG93KCJhY2tyYXRlX21heF93aW4iLCBUaW1lRGVsdGE6Om1zKDgw
MCkpLAorICAgICAgaW5jcmVhc2Vfb2Zmc2V0KCJpbmNyX29mZnNldCIsIERhdGFSYXRlOjpicHMo
MTAwMCkpLAorICAgICAgbG9zc19iYW5kd2lkdGhfYmFsYW5jZV9pbmNyZWFzZSgiYmFsYW5jZV9p
bmNyIiwgRGF0YVJhdGU6OmticHMoMC41KSksCisgICAgICBsb3NzX2JhbmR3aWR0aF9iYWxhbmNl
X2RlY3JlYXNlKCJiYWxhbmNlX2RlY3IiLCBEYXRhUmF0ZTo6a2Jwcyg0KSksCisgICAgICBsb3Nz
X2JhbmR3aWR0aF9iYWxhbmNlX2V4cG9uZW50KCJleHBvbmVudCIsIDAuNSksCisgICAgICBhbGxv
d19yZXNldHMoInJlc2V0cyIsIGZhbHNlKSwKKyAgICAgIGRlY3JlYXNlX2ludGVydmFsKCJkZWNy
X2ludHZsIiwgVGltZURlbHRhOjptcygzMDApKSwKKyAgICAgIGxvc3NfcmVwb3J0X3RpbWVvdXQo
InRpbWVvdXQiLCBUaW1lRGVsdGE6Om1zKDYwMDApKSB7CisgIHN0ZDo6c3RyaW5nIHRyaWFsX3N0
cmluZyA9IGZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoa0J3ZUxvc3NCYXNlZENvbnRyb2wpOwor
ICBQYXJzZUZpZWxkVHJpYWwoCisgICAgICB7Jm1pbl9pbmNyZWFzZV9mYWN0b3IsICZtYXhfaW5j
cmVhc2VfZmFjdG9yLCAmaW5jcmVhc2VfbG93X3J0dCwKKyAgICAgICAmaW5jcmVhc2VfaGlnaF9y
dHQsICZkZWNyZWFzZV9mYWN0b3IsICZsb3NzX3dpbmRvdywgJmxvc3NfbWF4X3dpbmRvdywKKyAg
ICAgICAmYWNrbm93bGVkZ2VkX3JhdGVfbWF4X3dpbmRvdywgJmluY3JlYXNlX29mZnNldCwKKyAg
ICAgICAmbG9zc19iYW5kd2lkdGhfYmFsYW5jZV9pbmNyZWFzZSwgJmxvc3NfYmFuZHdpZHRoX2Jh
bGFuY2VfZGVjcmVhc2UsCisgICAgICAgJmxvc3NfYmFuZHdpZHRoX2JhbGFuY2VfZXhwb25lbnQs
ICZhbGxvd19yZXNldHMsICZkZWNyZWFzZV9pbnRlcnZhbCwKKyAgICAgICAmbG9zc19yZXBvcnRf
dGltZW91dH0sCisgICAgICB0cmlhbF9zdHJpbmcpOworfQorTG9zc0Jhc2VkQ29udHJvbENvbmZp
Zzo6TG9zc0Jhc2VkQ29udHJvbENvbmZpZyhjb25zdCBMb3NzQmFzZWRDb250cm9sQ29uZmlnJikg
PQorICAgIGRlZmF1bHQ7CitMb3NzQmFzZWRDb250cm9sQ29uZmlnOjp+TG9zc0Jhc2VkQ29udHJv
bENvbmZpZygpID0gZGVmYXVsdDsKKworTG9zc0Jhc2VkQmFuZHdpZHRoRXN0aW1hdGlvbjo6TG9z
c0Jhc2VkQmFuZHdpZHRoRXN0aW1hdGlvbigpCisgICAgOiBjb25maWdfKExvc3NCYXNlZENvbnRy
b2xDb25maWcoKSksCisgICAgICBhdmVyYWdlX2xvc3NfKDApLAorICAgICAgYXZlcmFnZV9sb3Nz
X21heF8oMCksCisgICAgICBsb3NzX2Jhc2VkX2JpdHJhdGVfKERhdGFSYXRlOjpaZXJvKCkpLAor
ICAgICAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfbWF4XyhEYXRhUmF0ZTo6WmVybygpKSwKKyAgICAg
IGFja25vd2xlZGdlZF9iaXRyYXRlX2xhc3RfdXBkYXRlXyhUaW1lc3RhbXA6Ok1pbnVzSW5maW5p
dHkoKSksCisgICAgICB0aW1lX2xhc3RfZGVjcmVhc2VfKFRpbWVzdGFtcDo6TWludXNJbmZpbml0
eSgpKSwKKyAgICAgIGhhc19kZWNyZWFzZWRfc2luY2VfbGFzdF9sb3NzX3JlcG9ydF8oZmFsc2Up
LAorICAgICAgbGFzdF9sb3NzX3BhY2tldF9yZXBvcnRfKFRpbWVzdGFtcDo6TWludXNJbmZpbml0
eSgpKSwKKyAgICAgIGxhc3RfbG9zc19yYXRpb18oMCkge30KKwordm9pZCBMb3NzQmFzZWRCYW5k
d2lkdGhFc3RpbWF0aW9uOjpVcGRhdGVMb3NzU3RhdGlzdGljcygKKyAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxQYWNrZXRSZXN1bHQ+JiBwYWNrZXRfcmVzdWx0cywKKyAgICBUaW1lc3RhbXAgYXRfdGlt
ZSkgeworICBpZiAocGFja2V0X3Jlc3VsdHMuZW1wdHkoKSkgeworICAgIFJUQ19EQ0hFQ0soZmFs
c2UpOworICAgIHJldHVybjsKKyAgfQorICBpbnQgbG9zc19jb3VudCA9IDA7CisgIGZvciAoYXV0
byBwa3QgOiBwYWNrZXRfcmVzdWx0cykgeworICAgIGxvc3NfY291bnQgKz0gcGt0LnJlY2VpdmVf
dGltZS5Jc0luZmluaXRlKCkgPyAxIDogMDsKKyAgfQorICBsYXN0X2xvc3NfcmF0aW9fID0gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihsb3NzX2NvdW50KSAvIHBhY2tldF9yZXN1bHRzLnNpemUoKTsKKyAg
Y29uc3QgVGltZURlbHRhIHRpbWVfcGFzc2VkID0gbGFzdF9sb3NzX3BhY2tldF9yZXBvcnRfLklz
RmluaXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXRfdGltZSAt
IGxhc3RfbG9zc19wYWNrZXRfcmVwb3J0XworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiBUaW1lRGVsdGE6OnNlY29uZHMoMSk7CisgIGxhc3RfbG9zc19wYWNrZXRfcmVwb3J0
XyA9IGF0X3RpbWU7CisgIGhhc19kZWNyZWFzZWRfc2luY2VfbGFzdF9sb3NzX3JlcG9ydF8gPSBm
YWxzZTsKKworICBhdmVyYWdlX2xvc3NfICs9IEV4cG9uZW50aWFsVXBkYXRlKGNvbmZpZ18ubG9z
c193aW5kb3csIHRpbWVfcGFzc2VkKSAqCisgICAgICAgICAgICAgICAgICAgKGxhc3RfbG9zc19y
YXRpb18gLSBhdmVyYWdlX2xvc3NfKTsKKyAgaWYgKGF2ZXJhZ2VfbG9zc18gPiBhdmVyYWdlX2xv
c3NfbWF4XykgeworICAgIGF2ZXJhZ2VfbG9zc19tYXhfID0gYXZlcmFnZV9sb3NzXzsKKyAgfSBl
bHNlIHsKKyAgICBhdmVyYWdlX2xvc3NfbWF4XyArPQorICAgICAgICBFeHBvbmVudGlhbFVwZGF0
ZShjb25maWdfLmxvc3NfbWF4X3dpbmRvdywgdGltZV9wYXNzZWQpICoKKyAgICAgICAgKGF2ZXJh
Z2VfbG9zc18gLSBhdmVyYWdlX2xvc3NfbWF4Xyk7CisgIH0KK30KKwordm9pZCBMb3NzQmFzZWRC
YW5kd2lkdGhFc3RpbWF0aW9uOjpVcGRhdGVBY2tub3dsZWRnZWRCaXRyYXRlKAorICAgIERhdGFS
YXRlIGFja25vd2xlZGdlZF9iaXRyYXRlLAorICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CisgIGNv
bnN0IFRpbWVEZWx0YSB0aW1lX3Bhc3NlZCA9CisgICAgICBhY2tub3dsZWRnZWRfYml0cmF0ZV9s
YXN0X3VwZGF0ZV8uSXNGaW5pdGUoKQorICAgICAgICAgID8gYXRfdGltZSAtIGFja25vd2xlZGdl
ZF9iaXRyYXRlX2xhc3RfdXBkYXRlXworICAgICAgICAgIDogVGltZURlbHRhOjpzZWNvbmRzKDEp
OworICBhY2tub3dsZWRnZWRfYml0cmF0ZV9sYXN0X3VwZGF0ZV8gPSBhdF90aW1lOworICBpZiAo
YWNrbm93bGVkZ2VkX2JpdHJhdGUgPiBhY2tub3dsZWRnZWRfYml0cmF0ZV9tYXhfKSB7CisgICAg
YWNrbm93bGVkZ2VkX2JpdHJhdGVfbWF4XyA9IGFja25vd2xlZGdlZF9iaXRyYXRlOworICB9IGVs
c2UgeworICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX21heF8gKz0KKyAgICAgICAgRXhwb25lbnRp
YWxVcGRhdGUoY29uZmlnXy5hY2tub3dsZWRnZWRfcmF0ZV9tYXhfd2luZG93LCB0aW1lX3Bhc3Nl
ZCkgKgorICAgICAgICAoYWNrbm93bGVkZ2VkX2JpdHJhdGUgLSBhY2tub3dsZWRnZWRfYml0cmF0
ZV9tYXhfKTsKKyAgfQorfQorCit2b2lkIExvc3NCYXNlZEJhbmR3aWR0aEVzdGltYXRpb246OlVw
ZGF0ZShUaW1lc3RhbXAgYXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERhdGFSYXRlIG1pbl9iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGltZURlbHRhIGxhc3Rfcm91bmRfdHJpcF90aW1lKSB7CisgIC8v
IE9ubHkgaW5jcmVhc2UgaWYgbG9zcyBoYXMgYmVlbiBsb3cgZm9yIHNvbWUgdGltZS4KKyAgY29u
c3QgZG91YmxlIGxvc3NfZXN0aW1hdGVfZm9yX2luY3JlYXNlID0gYXZlcmFnZV9sb3NzX21heF87
CisgIC8vIEF2b2lkIG11bHRpcGxlIGRlY3JlYXNlcyBmcm9tIGF2ZXJhZ2luZyBvdmVyIG9uZSBs
b3NzIHNwaWtlLgorICBjb25zdCBkb3VibGUgbG9zc19lc3RpbWF0ZV9mb3JfZGVjcmVhc2UgPQor
ICAgICAgc3RkOjptaW4oYXZlcmFnZV9sb3NzXywgbGFzdF9sb3NzX3JhdGlvXyk7CisKKyAgY29u
c3QgZG91YmxlIGxvc3NfaW5jcmVhc2VfdGhyZXNob2xkID0gTG9zc0Zyb21CaXRyYXRlKAorICAg
ICAgbG9zc19iYXNlZF9iaXRyYXRlXywgY29uZmlnXy5sb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2lu
Y3JlYXNlLAorICAgICAgY29uZmlnXy5sb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2V4cG9uZW50KTsK
KyAgY29uc3QgZG91YmxlIGxvc3NfZGVjcmVhc2VfdGhyZXNob2xkID0gTG9zc0Zyb21CaXRyYXRl
KAorICAgICAgbG9zc19iYXNlZF9iaXRyYXRlXywgY29uZmlnXy5sb3NzX2JhbmR3aWR0aF9iYWxh
bmNlX2RlY3JlYXNlLAorICAgICAgY29uZmlnXy5sb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2V4cG9u
ZW50KTsKKyAgY29uc3QgYm9vbCBhbGxvd19kZWNyZWFzZSA9CisgICAgICAhaGFzX2RlY3JlYXNl
ZF9zaW5jZV9sYXN0X2xvc3NfcmVwb3J0XyAmJgorICAgICAgKGF0X3RpbWUgLSB0aW1lX2xhc3Rf
ZGVjcmVhc2VfID49CisgICAgICAgbGFzdF9yb3VuZF90cmlwX3RpbWUgKyBjb25maWdfLmRlY3Jl
YXNlX2ludGVydmFsKTsKKworICBpZiAobG9zc19lc3RpbWF0ZV9mb3JfaW5jcmVhc2UgPCBsb3Nz
X2luY3JlYXNlX3RocmVzaG9sZCkgeworICAgIC8vIEluY3JlYXNlIGJpdHJhdGUgYnkgUlRULWFk
YXB0aXZlIHJhdGlvLgorICAgIERhdGFSYXRlIG5ld19pbmNyZWFzZWRfYml0cmF0ZSA9CisgICAg
ICAgIG1pbl9iaXRyYXRlICogR2V0SW5jcmVhc2VGYWN0b3IoY29uZmlnXywgbGFzdF9yb3VuZF90
cmlwX3RpbWUpICsKKyAgICAgICAgY29uZmlnXy5pbmNyZWFzZV9vZmZzZXQ7CisgICAgLy8gVGhl
IGJpdHJhdGUgdGhhdCB3b3VsZCBtYWtlIHRoZSBsb3NzICJqdXN0IGhpZ2ggZW5vdWdoIi4KKyAg
ICBjb25zdCBEYXRhUmF0ZSBuZXdfaW5jcmVhc2VkX2JpdHJhdGVfY2FwID0gQml0cmF0ZUZyb21M
b3NzKAorICAgICAgICBsb3NzX2VzdGltYXRlX2Zvcl9pbmNyZWFzZSwgY29uZmlnXy5sb3NzX2Jh
bmR3aWR0aF9iYWxhbmNlX2luY3JlYXNlLAorICAgICAgICBjb25maWdfLmxvc3NfYmFuZHdpZHRo
X2JhbGFuY2VfZXhwb25lbnQpOworICAgIG5ld19pbmNyZWFzZWRfYml0cmF0ZSA9CisgICAgICAg
IHN0ZDo6bWluKG5ld19pbmNyZWFzZWRfYml0cmF0ZSwgbmV3X2luY3JlYXNlZF9iaXRyYXRlX2Nh
cCk7CisgICAgbG9zc19iYXNlZF9iaXRyYXRlXyA9IHN0ZDo6bWF4KG5ld19pbmNyZWFzZWRfYml0
cmF0ZSwgbG9zc19iYXNlZF9iaXRyYXRlXyk7CisgIH0gZWxzZSBpZiAobG9zc19lc3RpbWF0ZV9m
b3JfZGVjcmVhc2UgPiBsb3NzX2RlY3JlYXNlX3RocmVzaG9sZCAmJgorICAgICAgICAgICAgIGFs
bG93X2RlY3JlYXNlKSB7CisgICAgRGF0YVJhdGUgbmV3X2RlY3JlYXNlZF9iaXRyYXRlID0KKyAg
ICAgICAgY29uZmlnXy5kZWNyZWFzZV9mYWN0b3IgKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9tYXhf
OworICAgIC8vIFRoZSBiaXRyYXRlIHRoYXQgd291bGQgbWFrZSB0aGUgbG9zcyAianVzdCBhY2Nl
cHRhYmxlIi4KKyAgICBjb25zdCBEYXRhUmF0ZSBuZXdfZGVjcmVhc2VkX2JpdHJhdGVfZmxvb3Ig
PSBCaXRyYXRlRnJvbUxvc3MoCisgICAgICAgIGxvc3NfZXN0aW1hdGVfZm9yX2RlY3JlYXNlLCBj
b25maWdfLmxvc3NfYmFuZHdpZHRoX2JhbGFuY2VfZGVjcmVhc2UsCisgICAgICAgIGNvbmZpZ18u
bG9zc19iYW5kd2lkdGhfYmFsYW5jZV9leHBvbmVudCk7CisgICAgbmV3X2RlY3JlYXNlZF9iaXRy
YXRlID0KKyAgICAgICAgc3RkOjptYXgobmV3X2RlY3JlYXNlZF9iaXRyYXRlLCBuZXdfZGVjcmVh
c2VkX2JpdHJhdGVfZmxvb3IpOworICAgIGlmIChuZXdfZGVjcmVhc2VkX2JpdHJhdGUgPCBsb3Nz
X2Jhc2VkX2JpdHJhdGVfKSB7CisgICAgICB0aW1lX2xhc3RfZGVjcmVhc2VfID0gYXRfdGltZTsK
KyAgICAgIGhhc19kZWNyZWFzZWRfc2luY2VfbGFzdF9sb3NzX3JlcG9ydF8gPSB0cnVlOworICAg
ICAgbG9zc19iYXNlZF9iaXRyYXRlXyA9IG5ld19kZWNyZWFzZWRfYml0cmF0ZTsKKyAgICB9Cisg
IH0KK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIv
bG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNl
ZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmNTYwNzY5YmE0M2M1ZDgyM2Zk
NTZmYmJjMDg5ZTYyN2M5NWU2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9sb3Nz
X2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19CSVRSQVRFX0NPTlRST0xMRVJfTE9TU19C
QVNFRF9CQU5EV0lEVEhfRVNUSU1BVElPTl9IXworI2RlZmluZSBNT0RVTEVTX0JJVFJBVEVfQ09O
VFJPTExFUl9MT1NTX0JBU0VEX0JBTkRXSURUSF9FU1RJTUFUSU9OX0hfCisKKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9yYXRlLmgiCisjaW5jbHVkZSAiYXBp
L3VuaXRzL3RpbWVfZGVsdGEuaCIKKyNpbmNsdWRlICJhcGkvdW5pdHMvdGltZXN0YW1wLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXIuaCIKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKK3N0cnVjdCBMb3NzQmFzZWRDb250cm9sQ29uZmlnIHsKKyAgTG9z
c0Jhc2VkQ29udHJvbENvbmZpZygpOworICBMb3NzQmFzZWRDb250cm9sQ29uZmlnKGNvbnN0IExv
c3NCYXNlZENvbnRyb2xDb25maWcmKTsKKyAgTG9zc0Jhc2VkQ29udHJvbENvbmZpZyYgb3BlcmF0
b3I9KGNvbnN0IExvc3NCYXNlZENvbnRyb2xDb25maWcmKSA9IGRlZmF1bHQ7CisgIH5Mb3NzQmFz
ZWRDb250cm9sQ29uZmlnKCk7CisgIGJvb2wgZW5hYmxlZDsKKyAgRmllbGRUcmlhbFBhcmFtZXRl
cjxkb3VibGU+IG1pbl9pbmNyZWFzZV9mYWN0b3I7CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8ZG91
YmxlPiBtYXhfaW5jcmVhc2VfZmFjdG9yOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0
YT4gaW5jcmVhc2VfbG93X3J0dDsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IGlu
Y3JlYXNlX2hpZ2hfcnR0OworICBGaWVsZFRyaWFsUGFyYW1ldGVyPGRvdWJsZT4gZGVjcmVhc2Vf
ZmFjdG9yOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4gbG9zc193aW5kb3c7Cisg
IEZpZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiBsb3NzX21heF93aW5kb3c7CisgIEZpZWxk
VHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiBhY2tub3dsZWRnZWRfcmF0ZV9tYXhfd2luZG93Owor
ICBGaWVsZFRyaWFsUGFyYW1ldGVyPERhdGFSYXRlPiBpbmNyZWFzZV9vZmZzZXQ7CisgIEZpZWxk
VHJpYWxQYXJhbWV0ZXI8RGF0YVJhdGU+IGxvc3NfYmFuZHdpZHRoX2JhbGFuY2VfaW5jcmVhc2U7
CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8RGF0YVJhdGU+IGxvc3NfYmFuZHdpZHRoX2JhbGFuY2Vf
ZGVjcmVhc2U7CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8ZG91YmxlPiBsb3NzX2JhbmR3aWR0aF9i
YWxhbmNlX2V4cG9uZW50OworICBGaWVsZFRyaWFsUGFyYW1ldGVyPGJvb2w+IGFsbG93X3Jlc2V0
czsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IGRlY3JlYXNlX2ludGVydmFsOwor
ICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4gbG9zc19yZXBvcnRfdGltZW91dDsKK307
CisKK2NsYXNzIExvc3NCYXNlZEJhbmR3aWR0aEVzdGltYXRpb24geworIHB1YmxpYzoKKyAgTG9z
c0Jhc2VkQmFuZHdpZHRoRXN0aW1hdGlvbigpOworICB2b2lkIFVwZGF0ZShUaW1lc3RhbXAgYXRf
dGltZSwKKyAgICAgICAgICAgICAgRGF0YVJhdGUgbWluX2JpdHJhdGUsCisgICAgICAgICAgICAg
IFRpbWVEZWx0YSBsYXN0X3JvdW5kX3RyaXBfdGltZSk7CisgIHZvaWQgVXBkYXRlQWNrbm93bGVk
Z2VkQml0cmF0ZShEYXRhUmF0ZSBhY2tub3dsZWRnZWRfYml0cmF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgdm9pZCBNYXliZVJlc2V0
KERhdGFSYXRlIGJpdHJhdGUpIHsKKyAgICBpZiAoY29uZmlnXy5hbGxvd19yZXNldHMpCisgICAg
ICBsb3NzX2Jhc2VkX2JpdHJhdGVfID0gYml0cmF0ZTsKKyAgfQorICB2b2lkIFNldEluaXRpYWxC
aXRyYXRlKERhdGFSYXRlIGJpdHJhdGUpIHsgbG9zc19iYXNlZF9iaXRyYXRlXyA9IGJpdHJhdGU7
IH0KKyAgYm9vbCBFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gY29uZmlnXy5lbmFibGVkOyB9Cisg
IHZvaWQgVXBkYXRlTG9zc1N0YXRpc3RpY3MoY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0
PiYgcGFja2V0X3Jlc3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1w
IGF0X3RpbWUpOworICBEYXRhUmF0ZSBHZXRFc3RpbWF0ZSgpIGNvbnN0IHsgcmV0dXJuIGxvc3Nf
YmFzZWRfYml0cmF0ZV87IH0KKworIHByaXZhdGU6CisgIExvc3NCYXNlZENvbnRyb2xDb25maWcg
Y29uZmlnXzsKKyAgZG91YmxlIGF2ZXJhZ2VfbG9zc187CisgIGRvdWJsZSBhdmVyYWdlX2xvc3Nf
bWF4XzsKKyAgRGF0YVJhdGUgbG9zc19iYXNlZF9iaXRyYXRlXzsKKyAgRGF0YVJhdGUgYWNrbm93
bGVkZ2VkX2JpdHJhdGVfbWF4XzsKKyAgVGltZXN0YW1wIGFja25vd2xlZGdlZF9iaXRyYXRlX2xh
c3RfdXBkYXRlXzsKKyAgVGltZXN0YW1wIHRpbWVfbGFzdF9kZWNyZWFzZV87CisgIGJvb2wgaGFz
X2RlY3JlYXNlZF9zaW5jZV9sYXN0X2xvc3NfcmVwb3J0XzsKKyAgVGltZXN0YW1wIGxhc3RfbG9z
c19wYWNrZXRfcmVwb3J0XzsKKyAgZG91YmxlIGxhc3RfbG9zc19yYXRpb187Cit9OworCit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19CSVRSQVRFX0NPTlRST0xM
RVJfTE9TU19CQVNFRF9CQU5EV0lEVEhfRVNUSU1BVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRy
b2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2Vu
ZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjCmluZGV4IGNjMTA4YTk1YjA4ZmNiOWY1OTM3
NjQyMWUwNjJmNmU0MTU1YjgyZDEuLjM5NGMxNDc0N2I3YWNiMmFkMDE0YTU0MDA1ZDQ4YTU1N2Yw
M2I3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1h
dGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24u
Y2MKQEAgLTExLDEyICsxMSwxMiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYml0cmF0ZV9jb250cm9s
bGVyL3NlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oIgogCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgotI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxsaW1p
dHM+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5Lmgi
CisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIKICNp
bmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRl
X2xvc3NfYmFzZWQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50
X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1
ZGUvYndlX2RlZmluZXMuaCIKQEAgLTEwNCw2ICsxMDQsODMgQEAgYm9vbCBSZWFkQndlTG9zc0V4
cGVyaW1lbnRQYXJhbWV0ZXJzKGZsb2F0KiBsb3dfbG9zc190aHJlc2hvbGQsCiB9CiB9ICAvLyBu
YW1lc3BhY2UKIAorTGlua0NhcGFjaXR5VHJhY2tlcjo6TGlua0NhcGFjaXR5VHJhY2tlcigpCisg
ICAgOiB0cmFja2luZ19yYXRlKCJyYXRlIiwgVGltZURlbHRhOjpzZWNvbmRzKDEwKSkgeworICBQ
YXJzZUZpZWxkVHJpYWwoeyZ0cmFja2luZ19yYXRlfSwKKyAgICAgICAgICAgICAgICAgIGZpZWxk
X3RyaWFsOjpGaW5kRnVsbE5hbWUoIldlYlJUQy1Cd2UtTGlua0NhcGFjaXR5IikpOworfQorCitM
aW5rQ2FwYWNpdHlUcmFja2VyOjp+TGlua0NhcGFjaXR5VHJhY2tlcigpIHt9CisKK3ZvaWQgTGlu
a0NhcGFjaXR5VHJhY2tlcjo6T25PdmVydXNlKERhdGFSYXRlIGFja25vd2xlZGdlZF9yYXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsK
KyAgY2FwYWNpdHlfZXN0aW1hdGVfYnBzXyA9CisgICAgICBzdGQ6Om1pbihjYXBhY2l0eV9lc3Rp
bWF0ZV9icHNfLCBhY2tub3dsZWRnZWRfcmF0ZS5icHM8ZG91YmxlPigpKTsKKyAgbGFzdF9saW5r
X2NhcGFjaXR5X3VwZGF0ZV8gPSBhdF90aW1lOworfQorCit2b2lkIExpbmtDYXBhY2l0eVRyYWNr
ZXI6Ok9uU3RhcnRpbmdSYXRlKERhdGFSYXRlIHN0YXJ0X3JhdGUpIHsKKyAgaWYgKGxhc3RfbGlu
a19jYXBhY2l0eV91cGRhdGVfLklzSW5maW5pdGUoKSkKKyAgICBjYXBhY2l0eV9lc3RpbWF0ZV9i
cHNfID0gc3RhcnRfcmF0ZS5icHM8ZG91YmxlPigpOworfQorCit2b2lkIExpbmtDYXBhY2l0eVRy
YWNrZXI6Ok9uUmF0ZVVwZGF0ZShEYXRhUmF0ZSBhY2tub3dsZWRnZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSkgeworICBpZiAoYWNr
bm93bGVkZ2VkLmJwcygpID4gY2FwYWNpdHlfZXN0aW1hdGVfYnBzXykgeworICAgIFRpbWVEZWx0
YSBkZWx0YSA9IGF0X3RpbWUgLSBsYXN0X2xpbmtfY2FwYWNpdHlfdXBkYXRlXzsKKyAgICBkb3Vi
bGUgYWxwaGEgPSBkZWx0YS5Jc0Zpbml0ZSgpID8gZXhwKC0oZGVsdGEgLyB0cmFja2luZ19yYXRl
LkdldCgpKSkgOiAwOworICAgIGNhcGFjaXR5X2VzdGltYXRlX2Jwc18gPSBhbHBoYSAqIGNhcGFj
aXR5X2VzdGltYXRlX2Jwc18gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSAtIGFs
cGhhKSAqIGFja25vd2xlZGdlZC5icHM8ZG91YmxlPigpOworICB9CisgIGxhc3RfbGlua19jYXBh
Y2l0eV91cGRhdGVfID0gYXRfdGltZTsKK30KKwordm9pZCBMaW5rQ2FwYWNpdHlUcmFja2VyOjpP
blJ0dEJhY2tvZmYoRGF0YVJhdGUgYmFja29mZl9yYXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKKyAgY2FwYWNpdHlfZXN0aW1h
dGVfYnBzXyA9CisgICAgICBzdGQ6Om1pbihjYXBhY2l0eV9lc3RpbWF0ZV9icHNfLCBiYWNrb2Zm
X3JhdGUuYnBzPGRvdWJsZT4oKSk7CisgIGxhc3RfbGlua19jYXBhY2l0eV91cGRhdGVfID0gYXRf
dGltZTsKK30KKworRGF0YVJhdGUgTGlua0NhcGFjaXR5VHJhY2tlcjo6ZXN0aW1hdGUoKSBjb25z
dCB7CisgIHJldHVybiBEYXRhUmF0ZTo6YnBzKGNhcGFjaXR5X2VzdGltYXRlX2Jwc18pOworfQor
CitSdHRCYXNlZEJhY2tvZmY6OlJ0dEJhc2VkQmFja29mZigpCisgICAgOiBydHRfbGltaXRfKCJs
aW1pdCIsIFRpbWVEZWx0YTo6UGx1c0luZmluaXR5KCkpLAorICAgICAgZHJvcF9mcmFjdGlvbl8o
ImZyYWN0aW9uIiwgMC41KSwKKyAgICAgIGRyb3BfaW50ZXJ2YWxfKCJpbnRlcnZhbCIsIFRpbWVE
ZWx0YTo6bXMoMzAwKSksCisgICAgICBwZXJzaXN0X29uX3JvdXRlX2NoYW5nZV8oInBlcnNpc3Qi
KSwKKyAgICAgIC8vIEJ5IGluaXRpYWxpemluZyB0aGlzIHRvIHBsdXMgaW5maW5pdHksIHdlIG1h
a2Ugc3VyZSB0aGF0IHdlIG5ldmVyCisgICAgICAvLyB0cmlnZ2VyIHJ0dCBiYWNrb2ZmIHVubGVz
cyBwYWNrZXQgZmVlZGJhY2sgaXMgZW5hYmxlZC4KKyAgICAgIGxhc3RfcHJvcGFnYXRpb25fcnR0
X3VwZGF0ZV8oVGltZXN0YW1wOjpQbHVzSW5maW5pdHkoKSksCisgICAgICBsYXN0X3Byb3BhZ2F0
aW9uX3J0dF8oVGltZURlbHRhOjpaZXJvKCkpIHsKKyAgUGFyc2VGaWVsZFRyaWFsKHsmcnR0X2xp
bWl0XywgJmRyb3BfZnJhY3Rpb25fLCAmZHJvcF9pbnRlcnZhbF8sCisgICAgICAgICAgICAgICAg
ICAgJnBlcnNpc3Rfb25fcm91dGVfY2hhbmdlX30sCisgICAgICAgICAgICAgICAgICBmaWVsZF90
cmlhbDo6RmluZEZ1bGxOYW1lKCJXZWJSVEMtQndlLU1heFJ0dExpbWl0IikpOworfQorCit2b2lk
IFJ0dEJhc2VkQmFja29mZjo6T25Sb3V0ZUNoYW5nZSgpIHsKKyAgaWYgKCFwZXJzaXN0X29uX3Jv
dXRlX2NoYW5nZV8pIHsKKyAgICBsYXN0X3Byb3BhZ2F0aW9uX3J0dF91cGRhdGVfID0gVGltZXN0
YW1wOjpQbHVzSW5maW5pdHkoKTsKKyAgICBsYXN0X3Byb3BhZ2F0aW9uX3J0dF8gPSBUaW1lRGVs
dGE6Olplcm8oKTsKKyAgfQorfQorCit2b2lkIFJ0dEJhc2VkQmFja29mZjo6VXBkYXRlUHJvcGFn
YXRpb25SdHQoVGltZXN0YW1wIGF0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGltZURlbHRhIHByb3BhZ2F0aW9uX3J0dCkgeworICBsYXN0X3Byb3Bh
Z2F0aW9uX3J0dF91cGRhdGVfID0gYXRfdGltZTsKKyAgbGFzdF9wcm9wYWdhdGlvbl9ydHRfID0g
cHJvcGFnYXRpb25fcnR0OworfQorCitUaW1lRGVsdGEgUnR0QmFzZWRCYWNrb2ZmOjpSdHRMb3dl
ckJvdW5kKFRpbWVzdGFtcCBhdF90aW1lKSBjb25zdCB7CisgIC8vIFRPRE8oc3J0ZSk6IFVzZSB0
aW1lIHNpbmNlIGxhc3QgdW5hY2tub3dsZWRnZWQgcGFja2V0IGZvciB0aGlzLgorICBUaW1lRGVs
dGEgdGltZV9zaW5jZV9ydHQgPSBhdF90aW1lIC0gbGFzdF9wcm9wYWdhdGlvbl9ydHRfdXBkYXRl
XzsKKyAgcmV0dXJuIHRpbWVfc2luY2VfcnR0ICsgbGFzdF9wcm9wYWdhdGlvbl9ydHRfOworfQor
CitSdHRCYXNlZEJhY2tvZmY6On5SdHRCYXNlZEJhY2tvZmYoKSA9IGRlZmF1bHQ7CisKIFNlbmRT
aWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6U2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uKFJ0Y0V2
ZW50TG9nKiBldmVudF9sb2cpCiAgICAgOiBsb3N0X3BhY2tldHNfc2luY2VfbGFzdF9sb3NzX3Vw
ZGF0ZV8oMCksCiAgICAgICBleHBlY3RlZF9wYWNrZXRzX3NpbmNlX2xhc3RfbG9zc191cGRhdGVf
KDApLApAQCAtMTUxLDE0ICsyMjgsNDQgQEAgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpT
ZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb24oUnRjRXZlbnRMb2cqIGV2ZW50X2xvZykKIAogU2Vu
ZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjp+U2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uKCkg
e30KIAordm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246Ok9uUm91dGVDaGFuZ2UoKSB7
CisgIGxvc3RfcGFja2V0c19zaW5jZV9sYXN0X2xvc3NfdXBkYXRlXyA9IDA7CisgIGV4cGVjdGVk
X3BhY2tldHNfc2luY2VfbGFzdF9sb3NzX3VwZGF0ZV8gPSAwOworICBjdXJyZW50X2JpdHJhdGVf
ID0gRGF0YVJhdGU6Olplcm8oKTsKKyAgbWluX2JpdHJhdGVfY29uZmlndXJlZF8gPQorICAgICAg
RGF0YVJhdGU6OmJwcyhjb25nZXN0aW9uX2NvbnRyb2xsZXI6OkdldE1pbkJpdHJhdGVCcHMoKSk7
CisgIG1heF9iaXRyYXRlX2NvbmZpZ3VyZWRfID0ga0RlZmF1bHRNYXhCaXRyYXRlOworICBsYXN0
X2xvd19iaXRyYXRlX2xvZ18gPSBUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKTsKKyAgaGFzX2Rl
Y3JlYXNlZF9zaW5jZV9sYXN0X2ZyYWN0aW9uX2xvc3NfID0gZmFsc2U7CisgIGxhc3RfbG9zc19m
ZWVkYmFja18gPSBUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKTsKKyAgbGFzdF9sb3NzX3BhY2tl
dF9yZXBvcnRfID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7CisgIGxhc3RfdGltZW91dF8g
PSBUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKTsKKyAgbGFzdF9mcmFjdGlvbl9sb3NzXyA9IDA7
CisgIGxhc3RfbG9nZ2VkX2ZyYWN0aW9uX2xvc3NfID0gMDsKKyAgbGFzdF9yb3VuZF90cmlwX3Rp
bWVfID0gVGltZURlbHRhOjpaZXJvKCk7CisgIGJ3ZV9pbmNvbWluZ18gPSBEYXRhUmF0ZTo6WmVy
bygpOworICBkZWxheV9iYXNlZF9iaXRyYXRlXyA9IERhdGFSYXRlOjpaZXJvKCk7CisgIHRpbWVf
bGFzdF9kZWNyZWFzZV8gPSBUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKTsKKyAgZmlyc3RfcmVw
b3J0X3RpbWVfID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7CisgIGluaXRpYWxseV9sb3N0
X3BhY2tldHNfID0gMDsKKyAgYml0cmF0ZV9hdF8yX3NlY29uZHNfID0gRGF0YVJhdGU6Olplcm8o
KTsKKyAgdW1hX3VwZGF0ZV9zdGF0ZV8gPSBrTm9VcGRhdGU7CisgIHVtYV9ydHRfc3RhdGVfID0g
a05vVXBkYXRlOworICBsYXN0X3J0Y19ldmVudF9sb2dfID0gVGltZXN0YW1wOjpNaW51c0luZmlu
aXR5KCk7CisKKyAgcnR0X2JhY2tvZmZfLk9uUm91dGVDaGFuZ2UoKTsKK30KKwogdm9pZCBTZW5k
U2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlNldEJpdHJhdGVzKAogICAgIGFic2w6Om9wdGlvbmFs
PERhdGFSYXRlPiBzZW5kX2JpdHJhdGUsCiAgICAgRGF0YVJhdGUgbWluX2JpdHJhdGUsCiAgICAg
RGF0YVJhdGUgbWF4X2JpdHJhdGUsCiAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgU2V0TWlu
TWF4Qml0cmF0ZShtaW5fYml0cmF0ZSwgbWF4X2JpdHJhdGUpOwotICBpZiAoc2VuZF9iaXRyYXRl
KQorICBpZiAoc2VuZF9iaXRyYXRlKSB7CisgICAgbGlua19jYXBhY2l0eV8uT25TdGFydGluZ1Jh
dGUoKnNlbmRfYml0cmF0ZSk7CiAgICAgU2V0U2VuZEJpdHJhdGUoKnNlbmRfYml0cmF0ZSwgYXRf
dGltZSk7CisgIH0KIH0KIAogdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlNldFNl
bmRCaXRyYXRlKERhdGFSYXRlIGJpdHJhdGUsCkBAIC0xNjYsNiArMjczLDkgQEAgdm9pZCBTZW5k
U2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlNldFNlbmRCaXRyYXRlKERhdGFSYXRlIGJpdHJhdGUs
CiAgIFJUQ19EQ0hFQ0soYml0cmF0ZSA+IERhdGFSYXRlOjpaZXJvKCkpOwogICAvLyBSZXNldCB0
byBhdm9pZCBiZWluZyBjYXBwZWQgYnkgdGhlIGVzdGltYXRlLgogICBkZWxheV9iYXNlZF9iaXRy
YXRlXyA9IERhdGFSYXRlOjpaZXJvKCk7CisgIGlmIChsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3Rp
bWF0aW9uXy5FbmFibGVkKCkpIHsKKyAgICBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9u
Xy5NYXliZVJlc2V0KGJpdHJhdGUpOworICB9CiAgIENhcEJpdHJhdGVUb1RocmVzaG9sZHMoYXRf
dGltZSwgYml0cmF0ZSk7CiAgIC8vIENsZWFyIGxhc3Qgc2VudCBiaXRyYXRlIGhpc3Rvcnkgc28g
dGhlIG5ldyB2YWx1ZSBjYW4gYmUgdXNlZCBkaXJlY3RseQogICAvLyBhbmQgbm90IGNhcHBlZC4K
QEAgLTE5NSw2ICszMDUsMTAgQEAgdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OkN1
cnJlbnRFc3RpbWF0ZShpbnQqIGJpdHJhdGUsCiAgICpydHQgPSBsYXN0X3JvdW5kX3RyaXBfdGlt
ZV8ubXM8aW50NjRfdD4oKTsKIH0KIAorRGF0YVJhdGUgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0
aW9uOjpHZXRFc3RpbWF0ZWRMaW5rQ2FwYWNpdHkoKSBjb25zdCB7CisgIHJldHVybiBsaW5rX2Nh
cGFjaXR5Xy5lc3RpbWF0ZSgpOworfQorCiB2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlv
bjo6VXBkYXRlUmVjZWl2ZXJFc3RpbWF0ZShUaW1lc3RhbXAgYXRfdGltZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRlIGJh
bmR3aWR0aCkgewogICBid2VfaW5jb21pbmdfID0gYmFuZHdpZHRoOwpAQCAtMjAzLDEwICszMTcs
MzMgQEAgdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZVJlY2VpdmVyRXN0
aW1hdGUoVGltZXN0YW1wIGF0X3RpbWUsCiAKIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0
aW9uOjpVcGRhdGVEZWxheUJhc2VkRXN0aW1hdGUoVGltZXN0YW1wIGF0X3RpbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFS
YXRlIGJpdHJhdGUpIHsKKyAgaWYgKGFja25vd2xlZGdlZF9yYXRlXykgeworICAgIGlmIChiaXRy
YXRlIDwgZGVsYXlfYmFzZWRfYml0cmF0ZV8pIHsKKyAgICAgIGxpbmtfY2FwYWNpdHlfLk9uT3Zl
cnVzZSgqYWNrbm93bGVkZ2VkX3JhdGVfLCBhdF90aW1lKTsKKyAgICB9CisgIH0KICAgZGVsYXlf
YmFzZWRfYml0cmF0ZV8gPSBiaXRyYXRlOwogICBDYXBCaXRyYXRlVG9UaHJlc2hvbGRzKGF0X3Rp
bWUsIGN1cnJlbnRfYml0cmF0ZV8pOwogfQogCit2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1h
dGlvbjo6U2V0QWNrbm93bGVkZ2VkUmF0ZSgKKyAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4g
YWNrbm93bGVkZ2VkX3JhdGUsCisgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKKyAgYWNrbm93bGVk
Z2VkX3JhdGVfID0gYWNrbm93bGVkZ2VkX3JhdGU7CisgIGlmIChhY2tub3dsZWRnZWRfcmF0ZSAm
JiBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5FbmFibGVkKCkpIHsKKyAgICBsb3Nz
X2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5VcGRhdGVBY2tub3dsZWRnZWRCaXRyYXRlKAor
ICAgICAgICAqYWNrbm93bGVkZ2VkX3JhdGUsIGF0X3RpbWUpOworICB9Cit9CisKK3ZvaWQgU2Vu
ZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpJbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAor
ICAgIGNvbnN0IFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayYgcmVwb3J0KSB7CisgIGlmIChsb3Nz
X2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5FbmFibGVkKCkpIHsKKyAgICBsb3NzX2Jhc2Vk
X2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5VcGRhdGVMb3NzU3RhdGlzdGljcygKKyAgICAgICAgcmVw
b3J0LnBhY2tldF9mZWVkYmFja3MsIHJlcG9ydC5mZWVkYmFja190aW1lKTsKKyAgfQorfQorCiB2
b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRlUmVjZWl2ZXJCbG9jayh1aW50
OF90IGZyYWN0aW9uX2xvc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUaW1lRGVsdGEgcnR0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bWJlcl9vZl9wYWNrZXRzLApAQCAt
Mjk1LDExICs0MzIsMjQgQEAgdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0
ZVJ0dChUaW1lRGVsdGEgcnR0LCBUaW1lc3RhbXAgYXRfdGltZSkgewogCiB2b2lkIFNlbmRTaWRl
QmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRlRXN0aW1hdGUoVGltZXN0YW1wIGF0X3RpbWUpIHsK
ICAgRGF0YVJhdGUgbmV3X2JpdHJhdGUgPSBjdXJyZW50X2JpdHJhdGVfOworICBpZiAocnR0X2Jh
Y2tvZmZfLlJ0dExvd2VyQm91bmQoYXRfdGltZSkgPiBydHRfYmFja29mZl8ucnR0X2xpbWl0Xykg
eworICAgIGlmIChhdF90aW1lIC0gdGltZV9sYXN0X2RlY3JlYXNlXyA+PSBydHRfYmFja29mZl8u
ZHJvcF9pbnRlcnZhbF8pIHsKKyAgICAgIHRpbWVfbGFzdF9kZWNyZWFzZV8gPSBhdF90aW1lOwor
ICAgICAgbmV3X2JpdHJhdGUgPSBjdXJyZW50X2JpdHJhdGVfICogcnR0X2JhY2tvZmZfLmRyb3Bf
ZnJhY3Rpb25fOworICAgICAgbGlua19jYXBhY2l0eV8uT25SdHRCYWNrb2ZmKG5ld19iaXRyYXRl
LCBhdF90aW1lKTsKKyAgICB9CisgICAgQ2FwQml0cmF0ZVRvVGhyZXNob2xkcyhhdF90aW1lLCBu
ZXdfYml0cmF0ZSk7CisgICAgcmV0dXJuOworICB9CisKICAgLy8gV2UgdHJ1c3QgdGhlIFJFTUIg
YW5kL29yIGRlbGF5LWJhc2VkIGVzdGltYXRlIGR1cmluZyB0aGUgZmlyc3QgMiBzZWNvbmRzIGlm
CiAgIC8vIHdlIGhhdmVuJ3QgaGFkIGFueSBwYWNrZXQgbG9zcyByZXBvcnRlZCwgdG8gYWxsb3cg
c3RhcnR1cCBiaXRyYXRlIHByb2JpbmcuCiAgIGlmIChsYXN0X2ZyYWN0aW9uX2xvc3NfID09IDAg
JiYgSXNJblN0YXJ0UGhhc2UoYXRfdGltZSkpIHsKICAgICBuZXdfYml0cmF0ZSA9IHN0ZDo6bWF4
KGJ3ZV9pbmNvbWluZ18sIG5ld19iaXRyYXRlKTsKICAgICBuZXdfYml0cmF0ZSA9IHN0ZDo6bWF4
KGRlbGF5X2Jhc2VkX2JpdHJhdGVfLCBuZXdfYml0cmF0ZSk7CisgICAgaWYgKGxvc3NfYmFzZWRf
YmFuZHdpZHRoX2VzdGltYXRpb25fLkVuYWJsZWQoKSkgeworICAgICAgbG9zc19iYXNlZF9iYW5k
d2lkdGhfZXN0aW1hdGlvbl8uU2V0SW5pdGlhbEJpdHJhdGUobmV3X2JpdHJhdGUpOworICAgIH0K
IAogICAgIGlmIChuZXdfYml0cmF0ZSAhPSBjdXJyZW50X2JpdHJhdGVfKSB7CiAgICAgICBtaW5f
Yml0cmF0ZV9oaXN0b3J5Xy5jbGVhcigpOwpAQCAtMzE0LDYgKzQ2NCwxNSBAQCB2b2lkIFNlbmRT
aWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRlRXN0aW1hdGUoVGltZXN0YW1wIGF0X3RpbWUp
IHsKICAgICBDYXBCaXRyYXRlVG9UaHJlc2hvbGRzKGF0X3RpbWUsIGN1cnJlbnRfYml0cmF0ZV8p
OwogICAgIHJldHVybjsKICAgfQorCisgIGlmIChsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0
aW9uXy5FbmFibGVkKCkpIHsKKyAgICBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5V
cGRhdGUoCisgICAgICAgIGF0X3RpbWUsIG1pbl9iaXRyYXRlX2hpc3RvcnlfLmZyb250KCkuc2Vj
b25kLCBsYXN0X3JvdW5kX3RyaXBfdGltZV8pOworICAgIG5ld19iaXRyYXRlID0gTWF5YmVSYW1w
dXBPckJhY2tvZmYobmV3X2JpdHJhdGUsIGF0X3RpbWUpOworICAgIENhcEJpdHJhdGVUb1RocmVz
aG9sZHMoYXRfdGltZSwgbmV3X2JpdHJhdGUpOworICAgIHJldHVybjsKKyAgfQorCiAgIFRpbWVE
ZWx0YSB0aW1lX3NpbmNlX2xvc3NfcGFja2V0X3JlcG9ydCA9IGF0X3RpbWUgLSBsYXN0X2xvc3Nf
cGFja2V0X3JlcG9ydF87CiAgIFRpbWVEZWx0YSB0aW1lX3NpbmNlX2xvc3NfZmVlZGJhY2sgPSBh
dF90aW1lIC0gbGFzdF9sb3NzX2ZlZWRiYWNrXzsKICAgaWYgKHRpbWVfc2luY2VfbG9zc19wYWNr
ZXRfcmVwb3J0IDwgMS4yICoga01heFJ0Y3BGZWVkYmFja0ludGVydmFsKSB7CkBAIC0zMjgsNyAr
NDg3LDcgQEAgdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZUVzdGltYXRl
KFRpbWVzdGFtcCBhdF90aW1lKSB7CiAgICAgICAvLyBOb3RlIHRoYXQgYnkgcmVtZW1iZXJpbmcg
dGhlIGJpdHJhdGUgb3ZlciB0aGUgbGFzdCBzZWNvbmQgb25lIGNhbgogICAgICAgLy8gcmFtcHVw
IHVwIG9uZSBzZWNvbmQgZmFzdGVyIHRoYW4gaWYgb25seSBhbGxvd2VkIHRvIHN0YXJ0IHJhbXBp
bmcKICAgICAgIC8vIGF0IDglIHBlciBzZWNvbmQgcmF0ZSBub3cuIEUuZy46Ci0gICAgICAvLyAg
IElmIHNlbmRpbmcgYSBjb25zdGFudCAxMDBrYnBzIGl0IGNhbiByYW1wdXAgaW1tZWRpYXRseSB0
byAxMDhrYnBzCisgICAgICAvLyAgIElmIHNlbmRpbmcgYSBjb25zdGFudCAxMDBrYnBzIGl0IGNh
biByYW1wdXAgaW1tZWRpYXRlbHkgdG8gMTA4a2JwcwogICAgICAgLy8gICB3aGVuZXZlciBhIHJl
Y2VpdmVyIHJlcG9ydCBpcyByZWNlaXZlZCB3aXRoIGxvd2VyIHBhY2tldCBsb3NzLgogICAgICAg
Ly8gICBJZiBpbnN0ZWFkIG9uZSB3b3VsZCBkbzogY3VycmVudF9iaXRyYXRlXyAqPSAxLjA4Xihk
ZWx0YSB0aW1lKSwKICAgICAgIC8vICAgaXQgd291bGQgdGFrZSBvdmVyIG9uZSBzZWNvbmQgc2lu
Y2UgdGhlIGxvd2VyIHBhY2tldCBsb3NzIHRvIGFjaGlldmUKQEAgLTM4Miw2ICs1NDEsMTIgQEAg
dm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZUVzdGltYXRlKFRpbWVzdGFt
cCBhdF90aW1lKSB7CiAgIENhcEJpdHJhdGVUb1RocmVzaG9sZHMoYXRfdGltZSwgbmV3X2JpdHJh
dGUpOwogfQogCit2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRlUHJvcGFn
YXRpb25SdHQoCisgICAgVGltZXN0YW1wIGF0X3RpbWUsCisgICAgVGltZURlbHRhIHByb3BhZ2F0
aW9uX3J0dCkgeworICBydHRfYmFja29mZl8uVXBkYXRlUHJvcGFnYXRpb25SdHQoYXRfdGltZSwg
cHJvcGFnYXRpb25fcnR0KTsKK30KKwogYm9vbCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246
OklzSW5TdGFydFBoYXNlKFRpbWVzdGFtcCBhdF90aW1lKSBjb25zdCB7CiAgIHJldHVybiBmaXJz
dF9yZXBvcnRfdGltZV8uSXNJbmZpbml0ZSgpIHx8CiAgICAgICAgICBhdF90aW1lIC0gZmlyc3Rf
cmVwb3J0X3RpbWVfIDwga1N0YXJ0UGhhc2U7CkBAIC00MDcsNiArNTcyLDM1IEBAIHZvaWQgU2Vu
ZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpVcGRhdGVNaW5IaXN0b3J5KFRpbWVzdGFtcCBhdF90
aW1lKSB7CiAgIG1pbl9iaXRyYXRlX2hpc3RvcnlfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihh
dF90aW1lLCBjdXJyZW50X2JpdHJhdGVfKSk7CiB9CiAKK0RhdGFSYXRlIFNlbmRTaWRlQmFuZHdp
ZHRoRXN0aW1hdGlvbjo6TWF5YmVSYW1wdXBPckJhY2tvZmYoRGF0YVJhdGUgbmV3X2JpdHJhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CisgIC8vIFRPRE8oY3JvZGJybyk6IHJldXNlIHRoaXMg
Y29kZSBpbiBVcGRhdGVFc3RpbWF0ZSBpbnN0ZWFkIG9mIGN1cnJlbnQKKyAgLy8gaW5saW5pbmcg
b2YgdmVyeSBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkuCisgIGNvbnN0IFRpbWVEZWx0YSB0aW1lX3Np
bmNlX2xvc3NfcGFja2V0X3JlcG9ydCA9CisgICAgICBhdF90aW1lIC0gbGFzdF9sb3NzX3BhY2tl
dF9yZXBvcnRfOworICBjb25zdCBUaW1lRGVsdGEgdGltZV9zaW5jZV9sb3NzX2ZlZWRiYWNrID0g
YXRfdGltZSAtIGxhc3RfbG9zc19mZWVkYmFja187CisgIGlmICh0aW1lX3NpbmNlX2xvc3NfcGFj
a2V0X3JlcG9ydCA8IDEuMiAqIGtNYXhSdGNwRmVlZGJhY2tJbnRlcnZhbCkgeworICAgIG5ld19i
aXRyYXRlID0gbWluX2JpdHJhdGVfaGlzdG9yeV8uZnJvbnQoKS5zZWNvbmQgKiAxLjA4OworICAg
IG5ld19iaXRyYXRlICs9IERhdGFSYXRlOjpicHMoMTAwMCk7CisgIH0gZWxzZSBpZiAodGltZV9z
aW5jZV9sb3NzX2ZlZWRiYWNrID4KKyAgICAgICAgICAgICAgICAga0ZlZWRiYWNrVGltZW91dElu
dGVydmFscyAqIGtNYXhSdGNwRmVlZGJhY2tJbnRlcnZhbCAmJgorICAgICAgICAgICAgIChsYXN0
X3RpbWVvdXRfLklzSW5maW5pdGUoKSB8fAorICAgICAgICAgICAgICBhdF90aW1lIC0gbGFzdF90
aW1lb3V0XyA+IGtUaW1lb3V0SW50ZXJ2YWwpKSB7CisgICAgaWYgKGluX3RpbWVvdXRfZXhwZXJp
bWVudF8pIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZlZWRiYWNrIHRpbWVkIG91
dCAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBUb1N0cmluZyh0aW1lX3NpbmNlX2xv
c3NfZmVlZGJhY2spCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIpLCByZWR1Y2luZyBi
aXRyYXRlLiI7CisgICAgICBuZXdfYml0cmF0ZSA9IG5ld19iaXRyYXRlICogMC44OworICAgICAg
Ly8gUmVzZXQgYWNjdW11bGF0b3JzIHNpbmNlIHdlJ3ZlIGFscmVhZHkgYWN0ZWQgb24gbWlzc2lu
ZyBmZWVkYmFjayBhbmQKKyAgICAgIC8vIHNob3VsZG4ndCB0byBhY3QgYWdhaW4gb24gdGhlc2Ug
b2xkIGxvc3QgcGFja2V0cy4KKyAgICAgIGxvc3RfcGFja2V0c19zaW5jZV9sYXN0X2xvc3NfdXBk
YXRlXyA9IDA7CisgICAgICBleHBlY3RlZF9wYWNrZXRzX3NpbmNlX2xhc3RfbG9zc191cGRhdGVf
ID0gMDsKKyAgICAgIGxhc3RfdGltZW91dF8gPSBhdF90aW1lOworICAgIH0KKyAgfQorICByZXR1
cm4gbmV3X2JpdHJhdGU7Cit9CisKIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpD
YXBCaXRyYXRlVG9UaHJlc2hvbGRzKFRpbWVzdGFtcCBhdF90aW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVJhdGUgYml0cmF0
ZSkgewogICBpZiAoYndlX2luY29taW5nXyA+IERhdGFSYXRlOjpaZXJvKCkgJiYgYml0cmF0ZSA+
IGJ3ZV9pbmNvbWluZ18pIHsKQEAgLTQxNiw2ICs2MTAsMTAgQEAgdm9pZCBTZW5kU2lkZUJhbmR3
aWR0aEVzdGltYXRpb246OkNhcEJpdHJhdGVUb1RocmVzaG9sZHMoVGltZXN0YW1wIGF0X3RpbWUs
CiAgICAgICBiaXRyYXRlID4gZGVsYXlfYmFzZWRfYml0cmF0ZV8pIHsKICAgICBiaXRyYXRlID0g
ZGVsYXlfYmFzZWRfYml0cmF0ZV87CiAgIH0KKyAgaWYgKGxvc3NfYmFzZWRfYmFuZHdpZHRoX2Vz
dGltYXRpb25fLkVuYWJsZWQoKSAmJgorICAgICAgbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1h
dGlvbl8uR2V0RXN0aW1hdGUoKSA+IERhdGFSYXRlOjpaZXJvKCkpIHsKKyAgICBiaXRyYXRlID0g
c3RkOjptaW4oYml0cmF0ZSwgbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uR2V0RXN0
aW1hdGUoKSk7CisgIH0KICAgaWYgKGJpdHJhdGUgPiBtYXhfYml0cmF0ZV9jb25maWd1cmVkXykg
ewogICAgIGJpdHJhdGUgPSBtYXhfYml0cmF0ZV9jb25maWd1cmVkXzsKICAgfQpAQCAtNDQxLDUg
KzYzOSwxMCBAQCB2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6Q2FwQml0cmF0ZVRv
VGhyZXNob2xkcyhUaW1lc3RhbXAgYXRfdGltZSwKICAgICBsYXN0X3J0Y19ldmVudF9sb2dfID0g
YXRfdGltZTsKICAgfQogICBjdXJyZW50X2JpdHJhdGVfID0gYml0cmF0ZTsKKworICBpZiAoYWNr
bm93bGVkZ2VkX3JhdGVfKSB7CisgICAgbGlua19jYXBhY2l0eV8uT25SYXRlVXBkYXRlKHN0ZDo6
bWluKGN1cnJlbnRfYml0cmF0ZV8sICphY2tub3dsZWRnZWRfcmF0ZV8pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdF90aW1lKTsKKyAgfQogfQogfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0
aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2JpdHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24uaAppbmRl
eCAyYzhiNGVlM2Q1YWJhMDQ2MzMyOWQ3YzI0YjgyMDAzMjNiNmU0OWI3Li5iMDE2ZmFiYTJlZTNm
OTg3OTUxNDUyZmFhMWVhNzkwNDhkZTE1Njc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5k
X3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVf
YmFuZHdpZHRoX2VzdGltYXRpb24uaApAQCAtMTMsMjcgKzEzLDcxIEBACiAjaWZuZGVmIE1PRFVM
RVNfQklUUkFURV9DT05UUk9MTEVSX1NFTkRfU0lERV9CQU5EV0lEVEhfRVNUSU1BVElPTl9IXwog
I2RlZmluZSBNT0RVTEVTX0JJVFJBVEVfQ09OVFJPTExFUl9TRU5EX1NJREVfQkFORFdJRFRIX0VT
VElNQVRJT05fSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPGRlcXVlPgogI2lu
Y2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBl
cy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5oIgor
I2luY2x1ZGUgImFwaS91bml0cy9kYXRhX3JhdGUuaCIKKyNpbmNsdWRlICJhcGkvdW5pdHMvdGlt
ZV9kZWx0YS5oIgorI2luY2x1ZGUgImFwaS91bml0cy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9sb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9u
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXIuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNsYXNzIFJ0Y0V2ZW50TG9nOwogCitjbGFzcyBMaW5r
Q2FwYWNpdHlUcmFja2VyIHsKKyBwdWJsaWM6CisgIExpbmtDYXBhY2l0eVRyYWNrZXIoKTsKKyAg
fkxpbmtDYXBhY2l0eVRyYWNrZXIoKTsKKyAgdm9pZCBPbk92ZXJ1c2UoRGF0YVJhdGUgYWNrbm93
bGVkZ2VkX3JhdGUsIFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgdm9pZCBPblN0YXJ0aW5nUmF0ZShE
YXRhUmF0ZSBzdGFydF9yYXRlKTsKKyAgdm9pZCBPblJhdGVVcGRhdGUoRGF0YVJhdGUgYWNrbm93
bGVkZ2VkLCBUaW1lc3RhbXAgYXRfdGltZSk7CisgIHZvaWQgT25SdHRCYWNrb2ZmKERhdGFSYXRl
IGJhY2tvZmZfcmF0ZSwgVGltZXN0YW1wIGF0X3RpbWUpOworICBEYXRhUmF0ZSBlc3RpbWF0ZSgp
IGNvbnN0OworCisgcHJpdmF0ZToKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IHRy
YWNraW5nX3JhdGU7CisgIGRvdWJsZSBjYXBhY2l0eV9lc3RpbWF0ZV9icHNfID0gMDsKKyAgVGlt
ZXN0YW1wIGxhc3RfbGlua19jYXBhY2l0eV91cGRhdGVfID0gVGltZXN0YW1wOjpNaW51c0luZmlu
aXR5KCk7Cit9OworCitjbGFzcyBSdHRCYXNlZEJhY2tvZmYgeworIHB1YmxpYzoKKyAgUnR0QmFz
ZWRCYWNrb2ZmKCk7CisgIH5SdHRCYXNlZEJhY2tvZmYoKTsKKyAgdm9pZCBPblJvdXRlQ2hhbmdl
KCk7CisgIHZvaWQgVXBkYXRlUHJvcGFnYXRpb25SdHQoVGltZXN0YW1wIGF0X3RpbWUsIFRpbWVE
ZWx0YSBwcm9wYWdhdGlvbl9ydHQpOworICBUaW1lRGVsdGEgUnR0TG93ZXJCb3VuZChUaW1lc3Rh
bXAgYXRfdGltZSkgY29uc3Q7CisKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IHJ0
dF9saW1pdF87CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8ZG91YmxlPiBkcm9wX2ZyYWN0aW9uXzsK
KyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IGRyb3BfaW50ZXJ2YWxfOworICBGaWVs
ZFRyaWFsRmxhZyBwZXJzaXN0X29uX3JvdXRlX2NoYW5nZV87CisKKyBwdWJsaWM6CisgIFRpbWVz
dGFtcCBsYXN0X3Byb3BhZ2F0aW9uX3J0dF91cGRhdGVfOworICBUaW1lRGVsdGEgbGFzdF9wcm9w
YWdhdGlvbl9ydHRfOworfTsKKwogY2xhc3MgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uIHsK
ICBwdWJsaWM6CiAgIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbigpID0gZGVsZXRlOwogICBl
eHBsaWNpdCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb24oUnRjRXZlbnRMb2cqIGV2ZW50X2xv
Zyk7Ci0gIHZpcnR1YWwgflNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbigpOworICB+U2VuZFNp
ZGVCYW5kd2lkdGhFc3RpbWF0aW9uKCk7CiAKKyAgdm9pZCBPblJvdXRlQ2hhbmdlKCk7CiAgIHZv
aWQgQ3VycmVudEVzdGltYXRlKGludCogYml0cmF0ZSwgdWludDhfdCogbG9zcywgaW50NjRfdCog
cnR0KSBjb25zdDsKLQorICBEYXRhUmF0ZSBHZXRFc3RpbWF0ZWRMaW5rQ2FwYWNpdHkoKSBjb25z
dDsKICAgLy8gQ2FsbCBwZXJpb2RpY2FsbHkgdG8gdXBkYXRlIGVzdGltYXRlLgogICB2b2lkIFVw
ZGF0ZUVzdGltYXRlKFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgdm9pZCBPblNlbnRQYWNrZXQoU2Vu
dFBhY2tldCBzZW50X3BhY2tldCk7CisgIHZvaWQgVXBkYXRlUHJvcGFnYXRpb25SdHQoVGltZXN0
YW1wIGF0X3RpbWUsIFRpbWVEZWx0YSBwcm9wYWdhdGlvbl9ydHQpOwogCiAgIC8vIENhbGwgd2hl
biB3ZSByZWNlaXZlIGEgUlRDUCBtZXNzYWdlIHdpdGggVE1NQlIgb3IgUkVNQi4KICAgdm9pZCBV
cGRhdGVSZWNlaXZlckVzdGltYXRlKFRpbWVzdGFtcCBhdF90aW1lLCBEYXRhUmF0ZSBiYW5kd2lk
dGgpOwpAQCAtNjIsNiArMTA2LDkgQEAgY2xhc3MgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9u
IHsKICAgdm9pZCBTZXRTZW5kQml0cmF0ZShEYXRhUmF0ZSBiaXRyYXRlLCBUaW1lc3RhbXAgYXRf
dGltZSk7CiAgIHZvaWQgU2V0TWluTWF4Qml0cmF0ZShEYXRhUmF0ZSBtaW5fYml0cmF0ZSwgRGF0
YVJhdGUgbWF4X2JpdHJhdGUpOwogICBpbnQgR2V0TWluQml0cmF0ZSgpIGNvbnN0OworICB2b2lk
IFNldEFja25vd2xlZGdlZFJhdGUoYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGFja25vd2xlZGdl
ZF9yYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpOwor
ICB2b2lkIEluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoY29uc3QgVHJhbnNwb3J0UGFja2V0
c0ZlZWRiYWNrJiByZXBvcnQpOwogCiAgcHJpdmF0ZToKICAgZW51bSBVbWFTdGF0ZSB7IGtOb1Vw
ZGF0ZSwga0ZpcnN0RG9uZSwga0RvbmUgfTsKQEAgLTc1LDE2ICsxMjIsMjIgQEAgY2xhc3MgU2Vu
ZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uIHsKICAgLy8gbWluIGJpdHJhdGUgdXNlZCBkdXJpbmcg
bGFzdCBrQndlSW5jcmVhc2VJbnRlcnZhbE1zLgogICB2b2lkIFVwZGF0ZU1pbkhpc3RvcnkoVGlt
ZXN0YW1wIGF0X3RpbWUpOwogCisgIERhdGFSYXRlIE1heWJlUmFtcHVwT3JCYWNrb2ZmKERhdGFS
YXRlIG5ld19iaXRyYXRlLCBUaW1lc3RhbXAgYXRfdGltZSk7CisKICAgLy8gQ2FwIHxiaXRyYXRl
fCB0byBbbWluX2JpdHJhdGVfY29uZmlndXJlZF8sIG1heF9iaXRyYXRlX2NvbmZpZ3VyZWRfXSBh
bmQKICAgLy8gc2V0IHxjdXJyZW50X2JpdHJhdGVffCB0byB0aGUgY2FwcGVkIHZhbHVlIGFuZCB1
cGRhdGVzIHRoZSBldmVudCBsb2cuCiAgIHZvaWQgQ2FwQml0cmF0ZVRvVGhyZXNob2xkcyhUaW1l
c3RhbXAgYXRfdGltZSwgRGF0YVJhdGUgYml0cmF0ZSk7CiAKKyAgUnR0QmFzZWRCYWNrb2ZmIHJ0
dF9iYWNrb2ZmXzsKKyAgTGlua0NhcGFjaXR5VHJhY2tlciBsaW5rX2NhcGFjaXR5XzsKKwogICBz
dGQ6OmRlcXVlPHN0ZDo6cGFpcjxUaW1lc3RhbXAsIERhdGFSYXRlPiA+IG1pbl9iaXRyYXRlX2hp
c3RvcnlfOwogCiAgIC8vIGluY29taW5nIGZpbHRlcnMKICAgaW50IGxvc3RfcGFja2V0c19zaW5j
ZV9sYXN0X2xvc3NfdXBkYXRlXzsKICAgaW50IGV4cGVjdGVkX3BhY2tldHNfc2luY2VfbGFzdF9s
b3NzX3VwZGF0ZV87CiAKKyAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGFja25vd2xlZGdlZF9y
YXRlXzsKICAgRGF0YVJhdGUgY3VycmVudF9iaXRyYXRlXzsKICAgRGF0YVJhdGUgbWluX2JpdHJh
dGVfY29uZmlndXJlZF87CiAgIERhdGFSYXRlIG1heF9iaXRyYXRlX2NvbmZpZ3VyZWRfOwpAQCAt
MTEzLDYgKzE2Niw3IEBAIGNsYXNzIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbiB7CiAgIGZs
b2F0IGxvd19sb3NzX3RocmVzaG9sZF87CiAgIGZsb2F0IGhpZ2hfbG9zc190aHJlc2hvbGRfOwog
ICBEYXRhUmF0ZSBiaXRyYXRlX3RocmVzaG9sZF87CisgIExvc3NCYXNlZEJhbmR3aWR0aEVzdGlt
YXRpb24gbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl87CiB9OwogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwogI2VuZGlmICAvLyBNT0RVTEVTX0JJVFJBVEVfQ09OVFJPTExFUl9TRU5EX1NJ
REVfQkFORFdJRFRIX0VTVElNQVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRf
c2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRf
c2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbl91bml0dGVzdC5jYwppbmRleCBiZWNjNjE2Y2YzMTU2
MWIzYjRlODY5MTU4ZTNlMGQ0ODI0NmI3NGFmLi5jY2ZiZDg1NTAzMjdlODZmYTE3NTcyNDhmNzQw
OWI1YmUxYjQ2ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVfYmFuZHdpZHRo
X2VzdGltYXRpb25fdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3
aWR0aF9lc3RpbWF0aW9uX3VuaXR0ZXN0LmNjCkBAIC0yMyw3ICsyMyw3IEBAIE1BVENIRVIoTG9z
c0Jhc2VkQndlVXBkYXRlV2l0aEJpdHJhdGVPbmx5LCAiIikgewogICAgIHJldHVybiBmYWxzZTsK
ICAgfQogICBhdXRvIGJ3ZV9ldmVudCA9IHN0YXRpY19jYXN0PFJ0Y0V2ZW50QndlVXBkYXRlTG9z
c0Jhc2VkKj4oYXJnKTsKLSAgcmV0dXJuIGJ3ZV9ldmVudC0+Yml0cmF0ZV9icHNfID4gMCAmJiBi
d2VfZXZlbnQtPmZyYWN0aW9uX2xvc3NfID09IDA7CisgIHJldHVybiBid2VfZXZlbnQtPmJpdHJh
dGVfYnBzKCkgPiAwICYmIGJ3ZV9ldmVudC0+ZnJhY3Rpb25fbG9zcygpID09IDA7CiB9CiAKIE1B
VENIRVIoTG9zc0Jhc2VkQndlVXBkYXRlV2l0aEJpdHJhdGVBbmRMb3NzRnJhY3Rpb24sICIiKSB7
CkBAIC0zMSw3ICszMSw3IEBAIE1BVENIRVIoTG9zc0Jhc2VkQndlVXBkYXRlV2l0aEJpdHJhdGVB
bmRMb3NzRnJhY3Rpb24sICIiKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIGF1dG8gYndl
X2V2ZW50ID0gc3RhdGljX2Nhc3Q8UnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQqPihhcmcpOwot
ICByZXR1cm4gYndlX2V2ZW50LT5iaXRyYXRlX2Jwc18gPiAwICYmIGJ3ZV9ldmVudC0+ZnJhY3Rp
b25fbG9zc18gPiAwOworICByZXR1cm4gYndlX2V2ZW50LT5iaXRyYXRlX2JwcygpID4gMCAmJiBi
d2VfZXZlbnQtPmZyYWN0aW9uX2xvc3MoKSA+IDA7CiB9CiAKIHZvaWQgVGVzdFByb2JpbmcoYm9v
bCB1c2VfZGVsYXlfYmFzZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvQlVJTEQuZ24KaW5kZXggMmZjYjcxMjEyZjUyNDdjZGFiODAwYjIy
NTcxZjAxODZhMDVlOThmNy4uNzNkODFmMTZlYzI3Y2IwMjFhYjlmMTZmNzNkOTg5OGM2ZDk3NzM4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvQlVJTEQuZ24KQEAgLTIwLDggKzIwLDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb25nZXN0
aW9uX2NvbnRyb2xsZXIiKSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIGNvbmZpZ3MgKz0g
WyAiOmJ3ZV90ZXN0X2xvZ2dpbmciIF0KICAgc291cmNlcyA9IFsKLSAgICAiY29uZ2VzdGlvbl93
aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYyIsCi0gICAgImNvbmdlc3Rpb25fd2luZG93X3B1
c2hiYWNrX2NvbnRyb2xsZXIuaCIsCiAgICAgImluY2x1ZGUvbmV0d29ya19jaGFuZ2VkX29ic2Vy
dmVyLmgiLAogICAgICJpbmNsdWRlL3JlY2VpdmVfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIu
aCIsCiAgICAgImluY2x1ZGUvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5oIiwKQEAg
LTQzLDYgKzQxLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb25nZXN0aW9uX2NvbnRyb2xsZXIi
KSB7CiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnB0
cl91dGlsIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cmF0ZV9saW1pdGVyIiwKKyAgICAiLi4vLi4v
cnRjX2Jhc2UvbmV0d29yazpzZW50X3BhY2tldCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVy
cyIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uL2Jp
dHJhdGVfY29udHJvbGxlciIsCkBAIC01Miw2ICs1MSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgi
Y29uZ2VzdGlvbl9jb250cm9sbGVyIikgewogICAgICJnb29nX2NjOmRlbGF5X2Jhc2VkX2J3ZSIs
CiAgICAgImdvb2dfY2M6ZXN0aW1hdG9ycyIsCiAgICAgImdvb2dfY2M6cHJvYmVfY29udHJvbGxl
ciIsCisgICAgImdvb2dfY2M6cHVzaGJhY2tfY29udHJvbGxlciIsCiAgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIApAQCAtOTgsNyArOTgsNiBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICB0ZXN0b25seSA9IHRydWUKIAogICAgIHNvdXJjZXMg
PSBbCi0gICAgICAiY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl91bml0dGVz
dC5jYyIsCiAgICAgICAicmVjZWl2ZV9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVz
dC5jYyIsCiAgICAgICAic2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVzdC5j
YyIsCiAgICAgICAidHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MiLApAQCAt
MTExLDcgKzExMCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uLy4uL3J0
Y19iYXNlOmNoZWNrcyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAg
Ii4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi8uLi9ydGNfYmFz
ZTpydGNfYmFzZV90ZXN0c191dGlscyIsCisgICAgICAiLi4vLi4vcnRjX2Jhc2UvbmV0d29yazpz
ZW50X3BhY2tldCIsCiAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAgICIuLi8u
Li90ZXN0OmZpZWxkX3RyaWFsIiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9iYnIvYmJyX25ldHdvcmtfY29udHJvbGxlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL2Jici9iYnJfbmV0d29ya19jb250cm9sbGVyLmNjCmluZGV4IGI4MmRl
ZDQyMjAyY2M0NzQwZWFmOTkzYzA1YWE3ZTc0M2NiOGFjMGYuLjg2M2NlNGJmOThkOTY5MjI5MmNm
OGZlYTQ5MGMyN2M0YjYzMDQ0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Jici9iYnJf
bmV0d29ya19jb250cm9sbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Jici9iYnJfbmV0d29y
a19jb250cm9sbGVyLmNjCkBAIC00MDEsMTYgKzQwMSwxNSBAQCBib29sIEJick5ldHdvcmtDb250
cm9sbGVyOjpJc1Byb2JpbmdGb3JNb3JlQmFuZHdpZHRoKCkgY29uc3QgewogCiBOZXR3b3JrQ29u
dHJvbFVwZGF0ZSBCYnJOZXR3b3JrQ29udHJvbGxlcjo6T25UcmFuc3BvcnRQYWNrZXRzRmVlZGJh
Y2soCiAgICAgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrIG1zZykgeworICBpZiAobXNnLnBhY2tl
dF9mZWVkYmFja3MuZW1wdHkoKSkKKyAgICByZXR1cm4gTmV0d29ya0NvbnRyb2xVcGRhdGUoKTsK
KwogICBUaW1lc3RhbXAgZmVlZGJhY2tfcmVjdl90aW1lID0gbXNnLmZlZWRiYWNrX3RpbWU7Ci0g
IGFic2w6Om9wdGlvbmFsPFNlbnRQYWNrZXQ+IGxhc3Rfc2VudF9wYWNrZXQgPQotICAgICAgbXNn
LlBhY2tldHNXaXRoRmVlZGJhY2soKS5iYWNrKCkuc2VudF9wYWNrZXQ7Ci0gIGlmICghbGFzdF9z
ZW50X3BhY2tldC5oYXNfdmFsdWUoKSkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkxh
c3QgYWNrIHBhY2tldCBub3QgaW4gaGlzdG9yeSwgbm8gUlRUIHVwZGF0ZSI7Ci0gIH0gZWxzZSB7
Ci0gICAgVGltZXN0YW1wIHNlbmRfdGltZSA9IGxhc3Rfc2VudF9wYWNrZXQtPnNlbmRfdGltZTsK
LSAgICBUaW1lRGVsdGEgc2VuZF9kZWx0YSA9IGZlZWRiYWNrX3JlY3ZfdGltZSAtIHNlbmRfdGlt
ZTsKLSAgICBydHRfc3RhdHNfLlVwZGF0ZVJ0dChzZW5kX2RlbHRhLCBUaW1lRGVsdGE6Olplcm8o
KSwgZmVlZGJhY2tfcmVjdl90aW1lKTsKLSAgfQorICBTZW50UGFja2V0IGxhc3Rfc2VudF9wYWNr
ZXQgPSBtc2cuUGFja2V0c1dpdGhGZWVkYmFjaygpLmJhY2soKS5zZW50X3BhY2tldDsKKworICBU
aW1lc3RhbXAgc2VuZF90aW1lID0gbGFzdF9zZW50X3BhY2tldC5zZW5kX3RpbWU7CisgIFRpbWVE
ZWx0YSBzZW5kX2RlbHRhID0gZmVlZGJhY2tfcmVjdl90aW1lIC0gc2VuZF90aW1lOworICBydHRf
c3RhdHNfLlVwZGF0ZVJ0dChzZW5kX2RlbHRhLCBUaW1lRGVsdGE6Olplcm8oKSwgZmVlZGJhY2tf
cmVjdl90aW1lKTsKIAogICBjb25zdCBEYXRhU2l6ZSB0b3RhbF9kYXRhX2Fja2VkX2JlZm9yZSA9
IHNhbXBsZXJfLT50b3RhbF9kYXRhX2Fja2VkKCk7CiAKQEAgLTQzMSw3ICs0MzAsNyBAQCBOZXR3
b3JrQ29udHJvbFVwZGF0ZSBCYnJOZXR3b3JrQ29udHJvbGxlcjo6T25UcmFuc3BvcnRQYWNrZXRz
RmVlZGJhY2soCiAgIC8vIElucHV0IHRoZSBuZXcgZGF0YSBpbnRvIHRoZSBCQlIgbW9kZWwgb2Yg
dGhlIGNvbm5lY3Rpb24uCiAgIGlmICghYWNrZWRfcGFja2V0cy5lbXB0eSgpKSB7CiAgICAgaW50
NjRfdCBsYXN0X2Fja2VkX3BhY2tldCA9Ci0gICAgICAgIGFja2VkX3BhY2tldHMucmJlZ2luKCkt
PnNlbnRfcGFja2V0LT5zZXF1ZW5jZV9udW1iZXI7CisgICAgICAgIGFja2VkX3BhY2tldHMucmJl
Z2luKCktPnNlbnRfcGFja2V0LnNlcXVlbmNlX251bWJlcjsKIAogICAgIGlzX3JvdW5kX3N0YXJ0
ID0gVXBkYXRlUm91bmRUcmlwQ291bnRlcihsYXN0X2Fja2VkX3BhY2tldCk7CiAgICAgbWluX3J0
dF9leHBpcmVkID0KQEAgLTQ3Miw3ICs0NzEsNyBAQCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBCYnJO
ZXR3b3JrQ29udHJvbGxlcjo6T25UcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2soCiAgIERhdGFTaXpl
IGRhdGFfYWNrZWQgPSBzYW1wbGVyXy0+dG90YWxfZGF0YV9hY2tlZCgpIC0gdG90YWxfZGF0YV9h
Y2tlZF9iZWZvcmU7CiAgIERhdGFTaXplIGRhdGFfbG9zdCA9IERhdGFTaXplOjpaZXJvKCk7CiAg
IGZvciAoY29uc3QgUGFja2V0UmVzdWx0JiBwYWNrZXQgOiBsb3N0X3BhY2tldHMpIHsKLSAgICBk
YXRhX2xvc3QgKz0gcGFja2V0LnNlbnRfcGFja2V0LT5zaXplOworICAgIGRhdGFfbG9zdCArPSBw
YWNrZXQuc2VudF9wYWNrZXQuc2l6ZTsKICAgfQogCiAgIC8vIEFmdGVyIHRoZSBtb2RlbCBpcyB1
cGRhdGVkLCByZWNhbGN1bGF0ZSB0aGUgcGFjaW5nIHJhdGUgYW5kIGNvbmdlc3Rpb24KQEAgLTQ4
Myw3ICs0ODIsNyBAQCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBCYnJOZXR3b3JrQ29udHJvbGxlcjo6
T25UcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2soCiAgIC8vIENsZWFudXAgaW50ZXJuYWwgc3RhdGUu
CiAgIGlmICghYWNrZWRfcGFja2V0cy5lbXB0eSgpKSB7CiAgICAgc2FtcGxlcl8tPlJlbW92ZU9i
c29sZXRlUGFja2V0cygKLSAgICAgICAgYWNrZWRfcGFja2V0cy5iYWNrKCkuc2VudF9wYWNrZXQt
PnNlcXVlbmNlX251bWJlcik7CisgICAgICAgIGFja2VkX3BhY2tldHMuYmFjaygpLnNlbnRfcGFj
a2V0LnNlcXVlbmNlX251bWJlcik7CiAgIH0KICAgcmV0dXJuIENyZWF0ZVJhdGVVcGRhdGUobXNn
LmZlZWRiYWNrX3RpbWUpOwogfQpAQCAtNTUwLDcgKzU0OSw3IEBAIHZvaWQgQmJyTmV0d29ya0Nv
bnRyb2xsZXI6OkVudGVyUHJvYmVCYW5kd2lkdGhNb2RlKFRpbWVzdGFtcCBub3cpIHsKIHZvaWQg
QmJyTmV0d29ya0NvbnRyb2xsZXI6OkRpc2NhcmRMb3N0UGFja2V0cygKICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxQYWNrZXRSZXN1bHQ+JiBsb3N0X3BhY2tldHMpIHsKICAgZm9yIChjb25zdCBQYWNr
ZXRSZXN1bHQmIHBhY2tldCA6IGxvc3RfcGFja2V0cykgewotICAgIHNhbXBsZXJfLT5PblBhY2tl
dExvc3QocGFja2V0LnNlbnRfcGFja2V0LT5zZXF1ZW5jZV9udW1iZXIpOworICAgIHNhbXBsZXJf
LT5PblBhY2tldExvc3QocGFja2V0LnNlbnRfcGFja2V0LnNlcXVlbmNlX251bWJlcik7CiAgIH0K
IH0KIApAQCAtNTY5LDggKzU2OCw4IEBAIGJvb2wgQmJyTmV0d29ya0NvbnRyb2xsZXI6OlVwZGF0
ZUJhbmR3aWR0aEFuZE1pblJ0dCgKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+
JiBhY2tlZF9wYWNrZXRzKSB7CiAgIFRpbWVEZWx0YSBzYW1wbGVfcnR0ID0gVGltZURlbHRhOjpQ
bHVzSW5maW5pdHkoKTsKICAgZm9yIChjb25zdCBhdXRvJiBwYWNrZXQgOiBhY2tlZF9wYWNrZXRz
KSB7Ci0gICAgQmFuZHdpZHRoU2FtcGxlIGJhbmR3aWR0aF9zYW1wbGUgPSBzYW1wbGVyXy0+T25Q
YWNrZXRBY2tub3dsZWRnZWQoCi0gICAgICAgIG5vdywgcGFja2V0LnNlbnRfcGFja2V0LT5zZXF1
ZW5jZV9udW1iZXIpOworICAgIEJhbmR3aWR0aFNhbXBsZSBiYW5kd2lkdGhfc2FtcGxlID0KKyAg
ICAgICAgc2FtcGxlcl8tPk9uUGFja2V0QWNrbm93bGVkZ2VkKG5vdywgcGFja2V0LnNlbnRfcGFj
a2V0LnNlcXVlbmNlX251bWJlcik7CiAgICAgbGFzdF9zYW1wbGVfaXNfYXBwX2xpbWl0ZWRfID0g
YmFuZHdpZHRoX3NhbXBsZS5pc19hcHBfbGltaXRlZDsKICAgICBpZiAoIWJhbmR3aWR0aF9zYW1w
bGUucnR0LklzWmVybygpKSB7CiAgICAgICBzYW1wbGVfcnR0ID0gc3RkOjptaW4oc2FtcGxlX3J0
dCwgYmFuZHdpZHRoX3NhbXBsZS5ydHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvY29u
Z2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Nv
bmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGRhYTUxYmRkZDMwOTc3OTkyZDhhZDBlOWY4NTI5Mzc3YmU2ZDNhZTQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYworKysgL2Rldi9udWxs
CkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8c3Ry
aW5nPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCIKLSNp
bmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgotCi1uYW1lc3Bh
Y2Ugd2VicnRjIHsKLQotLy8gV2hlbiBDb25nZXN0aW9uV2luZG93UHVzaGJhY2sgaXMgZW5hYmxl
ZCwgdGhlIHBhY2VyIGlzIG9ibGl2aW91cyB0bwotLy8gdGhlIGNvbmdlc3Rpb24gd2luZG93LiBU
aGUgcmVsYXRpb24gYmV0d2VlbiBvdXRzdGFuZGluZyBkYXRhIGFuZAotLy8gdGhlIGNvbmdlc3Rp
b24gd2luZG93IGFmZmVjdHMgZW5jb2RlciBhbGxvY2F0aW9ucyBkaXJlY3RseS4KLS8vIFRoaXMg
ZXhwZXJpbWVudCBpcyBidWlsZCBvbiB0b3Agb2YgY29uZ2VzdGlvbiB3aW5kb3cgZXhwZXJpbWVu
dC4KLWNvbnN0IGNoYXIga0Nvbmdlc3Rpb25QdXNoYmFja0V4cGVyaW1lbnRbXSA9ICJXZWJSVEMt
Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrIjsKLWNvbnN0IHVpbnQzMl90IGtEZWZhdWx0TWluUHVz
aGJhY2tUYXJnZXRCaXRyYXRlQnBzID0gMzAwMDA7Ci0KLWJvb2wgUmVhZENvbmdlc3Rpb25XaW5k
b3dQdXNoYmFja0V4cGVyaW1lbnRQYXJhbWV0ZXIoCi0gICAgdWludDMyX3QqIG1pbl9wdXNoYmFj
a190YXJnZXRfYml0cmF0ZV9icHMpIHsKLSAgUlRDX0RDSEVDSyhtaW5fcHVzaGJhY2tfdGFyZ2V0
X2JpdHJhdGVfYnBzKTsKLSAgc3RkOjpzdHJpbmcgZXhwZXJpbWVudF9zdHJpbmcgPQotICAgICAg
d2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtDb25nZXN0aW9uUHVzaGJhY2tFeHBl
cmltZW50KTsKLSAgaW50IHBhcnNlZF92YWx1ZXMgPSBzc2NhbmYoZXhwZXJpbWVudF9zdHJpbmcu
Y19zdHIoKSwgIkVuYWJsZWQtJSIgUFJJdTMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzKTsKLSAgaWYgKHBhcnNlZF92YWx1ZXMg
PT0gMSkgewotICAgIFJUQ19DSEVDS19HRSgqbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jw
cywgMCkKLSAgICAgICAgPDwgIk1pbiBwdXNoYmFjayB0YXJnZXQgYml0cmF0ZSBtdXN0IGJlIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLiI7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgcmV0
dXJuIGZhbHNlOwotfQotCi1Db25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyOjpDb25n
ZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyKCkgewotICBpZiAoIVJlYWRDb25nZXN0aW9u
V2luZG93UHVzaGJhY2tFeHBlcmltZW50UGFyYW1ldGVyKAotICAgICAgICAgICZtaW5fcHVzaGJh
Y2tfdGFyZ2V0X2JpdHJhdGVfYnBzXykpIHsKLSAgICBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJh
dGVfYnBzXyA9IGtEZWZhdWx0TWluUHVzaGJhY2tUYXJnZXRCaXRyYXRlQnBzOwotICB9Ci19Ci0K
LXZvaWQgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6VXBkYXRlT3V0c3RhbmRp
bmdEYXRhKAotICAgIHNpemVfdCBvdXRzdGFuZGluZ19ieXRlcykgewotICBvdXRzdGFuZGluZ19i
eXRlc18gPSBvdXRzdGFuZGluZ19ieXRlczsKLX0KLQotdm9pZCBDb25nZXN0aW9uV2luZG93UHVz
aGJhY2tDb250cm9sbGVyOjpVcGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEoCi0gICAgc2l6ZV90IG1h
eF9vdXRzdGFuZGluZ19ieXRlcykgewotICBEYXRhU2l6ZSBkYXRhX3dpbmRvdyA9IERhdGFTaXpl
OjpieXRlcyhtYXhfb3V0c3RhbmRpbmdfYnl0ZXMpOwotICBpZiAoY3VycmVudF9kYXRhX3dpbmRv
d18pIHsKLSAgICBkYXRhX3dpbmRvdyA9IChkYXRhX3dpbmRvdyArIGN1cnJlbnRfZGF0YV93aW5k
b3dfLnZhbHVlKCkpIC8gMjsKLSAgfQotICBjdXJyZW50X2RhdGFfd2luZG93XyA9IGRhdGFfd2lu
ZG93OwotfQotCi12b2lkIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI6OlNldERh
dGFXaW5kb3coRGF0YVNpemUgZGF0YV93aW5kb3cpIHsKLSAgY3VycmVudF9kYXRhX3dpbmRvd18g
PSBkYXRhX3dpbmRvdzsKLX0KLQotdWludDMyX3QgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29u
dHJvbGxlcjo6VXBkYXRlVGFyZ2V0Qml0cmF0ZSgKLSAgICB1aW50MzJfdCBiaXRyYXRlX2Jwcykg
ewotICBpZiAoIWN1cnJlbnRfZGF0YV93aW5kb3dfIHx8IGN1cnJlbnRfZGF0YV93aW5kb3dfLT5J
c1plcm8oKSkKLSAgICByZXR1cm4gYml0cmF0ZV9icHM7Ci0gIGRvdWJsZSBmaWxsX3JhdGlvID0K
LSAgICAgIG91dHN0YW5kaW5nX2J5dGVzXyAvIHN0YXRpY19jYXN0PGRvdWJsZT4oY3VycmVudF9k
YXRhX3dpbmRvd18tPmJ5dGVzKCkpOwotICBpZiAoZmlsbF9yYXRpbyA+IDEuNSkgewotICAgIGVu
Y29kaW5nX3JhdGVfcmF0aW9fICo9IDAuOTsKLSAgfSBlbHNlIGlmIChmaWxsX3JhdGlvID4gMSkg
ewotICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fICo9IDAuOTU7Ci0gIH0gZWxzZSBpZiAoZmlsbF9y
YXRpbyA8IDAuMSkgewotICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gMS4wOwotICB9IGVsc2Ug
ewotICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fICo9IDEuMDU7Ci0gICAgZW5jb2RpbmdfcmF0ZV9y
YXRpb18gPSBzdGQ6Om1pbihlbmNvZGluZ19yYXRlX3JhdGlvXywgMS4wKTsKLSAgfQotICB1aW50
MzJfdCBhZGp1c3RlZF90YXJnZXRfYml0cmF0ZV9icHMgPQotICAgICAgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGJpdHJhdGVfYnBzICogZW5jb2RpbmdfcmF0ZV9yYXRpb18pOwotCi0gIC8vIERvIG5v
dCBhZGp1c3QgYmVsb3cgdGhlIG1pbmltdW0gcHVzaGJhY2sgYml0cmF0ZSBidXQgZG8gb2JleSBp
ZiB0aGUKLSAgLy8gb3JpZ2luYWwgZXN0aW1hdGUgaXMgYmVsb3cgaXQuCi0gIGJpdHJhdGVfYnBz
ID0gYWRqdXN0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzIDwgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRy
YXRlX2Jwc18KLSAgICAgICAgICAgICAgICAgICAgPyBzdGQ6Om1pbihiaXRyYXRlX2JwcywgbWlu
X3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc18pCi0gICAgICAgICAgICAgICAgICAgIDogYWRq
dXN0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzOwotICByZXR1cm4gYml0cmF0ZV9icHM7Ci19Ci0KLX0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Nvbmdlc3Rp
b25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Nvbmdlc3Rp
b25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjYwODU5MDU4M2JkYjgxMWY4NDZhNDNjYTllMzU4ODc0NTM5MjQ4OC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25n
ZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
MyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0NPTkdF
U1RJT05fQ09OVFJPTExFUl9DT05HRVNUSU9OX1dJTkRPV19QVVNIQkFDS19DT05UUk9MTEVSX0hf
Ci0jZGVmaW5lIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX0NPTkdFU1RJT05fV0lORE9X
X1BVU0hCQUNLX0NPTlRST0xMRVJfSF8KLQotI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29y
a190eXBlcy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2lu
Y2x1ZGUpCi0jaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVGhp
cyBjbGFzcyBlbmFibGVzIHB1c2hiYWNrIGZyb20gY29uZ2VzdGlvbiB3aW5kb3cgZGlyZWN0bHkg
dG8gdmlkZW8gZW5jb2Rlci4KLS8vIFdoZW4gdGhlIGNvbmdlc3Rpb24gd2luZG93IGlzIGZpbGxp
bmcgdXAsIHRoZSB2aWRlbyBlbmNvZGVyIHRhcmdldCBiaXRyYXRlCi0vLyB3aWxsIGJlIHJlZHVj
ZWQgYWNjb3JkaW5nbHkgdG8gYWNjb21tb2RhdGUgdGhlIG5ldHdvcmsgY2hhbmdlcy4gVG8gYXZv
aWQKLS8vIHBhdXNpbmcgdmlkZW8gdG9vIGZyZXF1ZW50bHksIGEgbWluaW11bSBlbmNvZGVyIHRh
cmdldCBiaXRyYXRlIHRocmVzaG9sZCBpcwotLy8gdXNlZCB0byBwcmV2ZW50IHZpZGVvIHBhdXNl
IGR1ZSB0byBhIGZ1bGwgY29uZ2VzdGlvbiB3aW5kb3cuCi1jbGFzcyBDb25nZXN0aW9uV2luZG93
UHVzaGJhY2tDb250cm9sbGVyIHsKLSBwdWJsaWM6Ci0gIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFj
a0NvbnRyb2xsZXIoKTsKLSAgdm9pZCBVcGRhdGVPdXRzdGFuZGluZ0RhdGEoc2l6ZV90IG91dHN0
YW5kaW5nX2J5dGVzKTsKLSAgdm9pZCBVcGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEoc2l6ZV90IG1h
eF9vdXRzdGFuZGluZ19ieXRlcyk7Ci0gIHVpbnQzMl90IFVwZGF0ZVRhcmdldEJpdHJhdGUodWlu
dDMyX3QgYml0cmF0ZV9icHMpOwotICB2b2lkIFNldERhdGFXaW5kb3coRGF0YVNpemUgZGF0YV93
aW5kb3cpOwotCi0gcHJpdmF0ZToKLSAgYWJzbDo6b3B0aW9uYWw8RGF0YVNpemU+IGN1cnJlbnRf
ZGF0YV93aW5kb3dfOwotICBzaXplX3Qgb3V0c3RhbmRpbmdfYnl0ZXNfID0gMDsKLSAgdWludDMy
X3QgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc187Ci0gIGRvdWJsZSBlbmNvZGluZ19y
YXRlX3JhdGlvXyA9IDEuMDsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlm
ICAvLyBNT0RVTEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9DT05HRVNUSU9OX1dJTkRPV19QVVNI
QkFDS19DT05UUk9MTEVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9u
X3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
Y29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl91bml0dGVzdC5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDlkNmE3OWQ2MmZmYmM2MGJkZDhhNTU4ZDVlMDFiOTUy
NGI1NGYxZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyX3VuaXR0
ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
ICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9u
X3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmgiCi0jaW5jbHVkZSAidGVzdC9nbW9jay5oIgot
I2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKLQotdXNpbmcgdGVzdGluZzo6XzsKLQotbmFtZXNwYWNl
IHdlYnJ0YyB7Ci1uYW1lc3BhY2UgdGVzdCB7Ci0KLWNsYXNzIENvbmdlc3Rpb25XaW5kb3dQdXNo
YmFja0NvbnRyb2xsZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVk
OgotICBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyIGN3bmRfY29udHJvbGxlcl87
Ci19OwotCi1URVNUX0YoQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlclRlc3QsIEZ1
bGxDb25nZXN0aW9uV2luZG93KSB7Ci0gIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlT3V0c3RhbmRp
bmdEYXRhKDEwMDAwMCk7Ci0gIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlTWF4T3V0c3RhbmRpbmdE
YXRhKDUwMDAwKTsKLQotICB1aW50MzJfdCBiaXRyYXRlX2JwcyA9IDgwMDAwOwotICBiaXRyYXRl
X2JwcyA9IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7
Ci0gIEVYUEVDVF9FUSg3MjAwMHUsIGJpdHJhdGVfYnBzKTsKLQotICBjd25kX2NvbnRyb2xsZXJf
LlVwZGF0ZU1heE91dHN0YW5kaW5nRGF0YSg1MDAwMCk7Ci0gIGJpdHJhdGVfYnBzID0gY3duZF9j
b250cm9sbGVyXy5VcGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJhdGVfYnBzKTsKLSAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PHVpbnQzMl90Pig3MjAwMCAqIDAuOSAqIDAuOSksIGJpdHJhdGVfYnBzKTsK
LX0KLQotVEVTVF9GKENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXJUZXN0LCBOb3Jt
YWxDb25nZXN0aW9uV2luZG93KSB7Ci0gIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlT3V0c3RhbmRp
bmdEYXRhKDEwMDAwMCk7Ci0gIGN3bmRfY29udHJvbGxlcl8uU2V0RGF0YVdpbmRvdyhEYXRhU2l6
ZTo6Ynl0ZXMoMjAwMDAwKSk7Ci0KLSAgdWludDMyX3QgYml0cmF0ZV9icHMgPSA4MDAwMDsKLSAg
Yml0cmF0ZV9icHMgPSBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZVRhcmdldEJpdHJhdGUoYml0cmF0
ZV9icHMpOwotICBFWFBFQ1RfRVEoODAwMDB1LCBiaXRyYXRlX2Jwcyk7Ci0KLSAgY3duZF9jb250
cm9sbGVyXy5VcGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEoMjAwMDApOwotICBiaXRyYXRlX2JwcyA9
IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7Ci0gIEVY
UEVDVF9FUSg4MDAwMHUsIGJpdHJhdGVfYnBzKTsKLX0KLQotVEVTVF9GKENvbmdlc3Rpb25XaW5k
b3dQdXNoYmFja0NvbnRyb2xsZXJUZXN0LCBMb3dCaXRyYXRlKSB7Ci0gIGN3bmRfY29udHJvbGxl
cl8uVXBkYXRlT3V0c3RhbmRpbmdEYXRhKDEwMDAwMCk7Ci0gIGN3bmRfY29udHJvbGxlcl8uU2V0
RGF0YVdpbmRvdyhEYXRhU2l6ZTo6Ynl0ZXMoNTAwMDApKTsKLQotICB1aW50MzJfdCBiaXRyYXRl
X2JwcyA9IDM1MDAwOwotICBiaXRyYXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlVGFy
Z2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7Ci0gIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1aW50MzJf
dD4oMzUwMDAgKiAwLjkpLCBiaXRyYXRlX2Jwcyk7Ci0KLSAgY3duZF9jb250cm9sbGVyXy5VcGRh
dGVNYXhPdXRzdGFuZGluZ0RhdGEoMjAwMDApOwotICBiaXRyYXRlX2JwcyA9IGN3bmRfY29udHJv
bGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7Ci0gIEVYUEVDVF9FUSgzMDAw
MHUsIGJpdHJhdGVfYnBzKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHRlc3QKLX0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvQlVJTEQuZ24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL0JVSUxELmduCmluZGV4IGIxMjY5MGI4MTdlMTNjY2Ni
NWUwMDYzYzkzNzMyM2NhNzViMGFlYzIuLjM4MTY5YmJiNGQwMjlhM2U4NTcwNmNhNmI5YzRkNzli
N2E3NDVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvQlVJTEQuZ24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9CVUlMRC5nbgpAQCAtMTksMTAgKzE5LDggQEAgY29u
ZmlnKCJid2VfdGVzdF9sb2dnaW5nIikgewogcnRjX3N0YXRpY19saWJyYXJ5KCJnb29nX2NjIikg
ewogICBjb25maWdzICs9IFsgIjpid2VfdGVzdF9sb2dnaW5nIiBdCiAgIHNvdXJjZXMgPSBbCi0g
ICAgImdvb2dfY2NfZmFjdG9yeS5jYyIsCiAgICAgImdvb2dfY2NfbmV0d29ya19jb250cm9sLmNj
IiwKICAgICAiZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaCIsCi0gICAgImluY2x1ZGUvZ29vZ19j
Y19mYWN0b3J5LmgiLAogICBdCiAKICAgZGVwcyA9IFsKQEAgLTMwLDYgKzI4LDcgQEAgcnRjX3N0
YXRpY19saWJyYXJ5KCJnb29nX2NjIikgewogICAgICI6ZGVsYXlfYmFzZWRfYndlIiwKICAgICAi
OmVzdGltYXRvcnMiLAogICAgICI6cHJvYmVfY29udHJvbGxlciIsCisgICAgIjpwdXNoYmFja19j
b250cm9sbGVyIiwKICAgICAiLi4vLi46bW9kdWxlX2FwaSIsCiAgICAgIi4uLy4uLy4uOndlYnJ0
Y19jb21tb24iLAogICAgICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Om5ldHdvcmtfY29udHJvbCIs
CkBAIC00OSw2ICs0OCwyMCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImdvb2dfY2MiKSB7CiAgIF0K
IH0KIAorcnRjX3NvdXJjZV9zZXQoInB1c2hiYWNrX2NvbnRyb2xsZXIiKSB7CisgIHNvdXJjZXMg
PSBbCisgICAgImNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MiLAorICAg
ICJjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmgiLAorICBdCisgIGRlcHMg
PSBbCisgICAgIi4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKKyAgICAi
Li4vLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jh
c2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwi
LAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisg
IF0KK30KKwogcnRjX3NvdXJjZV9zZXQoImFscl9kZXRlY3RvciIpIHsKICAgc291cmNlcyA9IFsK
ICAgICAiYWxyX2RldGVjdG9yLmNjIiwKQEAgLTg0LDYgKzk3LDcgQEAgcnRjX3NvdXJjZV9zZXQo
ImVzdGltYXRvcnMiKSB7CiAgIF0KIAogICBkZXBzID0gWworICAgICIuLi8uLi8uLi9hcGkvdW5p
dHM6ZGF0YV9yYXRlIiwKICAgICAiLi4vLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfYndlIiwKICAg
ICAiLi4vLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCiAgICAgIi4uLy4uLy4uL3J0
Y19iYXNlOmNoZWNrcyIsCkBAIC0xMDcsNiArMTIxLDcgQEAgcnRjX3NvdXJjZV9zZXQoImRlbGF5
X2Jhc2VkX2J3ZSIpIHsKIAogICBkZXBzID0gWwogICAgICI6ZXN0aW1hdG9ycyIsCisgICAgIi4u
Ly4uLy4uL2FwaS90cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKICAgICAiLi4vLi4vLi4vbG9n
Z2luZzpydGNfZXZlbnRfYndlIiwKICAgICAiLi4vLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9n
X2FwaSIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCkBAIC0xMTUsNyArMTMwLDkg
QEAgcnRjX3NvdXJjZV9zZXQoImRlbGF5X2Jhc2VkX2J3ZSIpIHsKICAgICAiLi4vLi4vLi4vc3lz
dGVtX3dyYXBwZXJzOm1ldHJpY3MiLAogICAgICIuLi8uLi9wYWNpbmciLAogICAgICIuLi8uLi9y
ZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IiLAorICAgICIuLi8uLi9ydHBfcnRjcDpydHBfcnRjcF9m
b3JtYXQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0K
IApAQCAtMTQ5LDYgKzE2Niw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpl
c3RpbWF0b3JzIiwKICAgICAgICI6Z29vZ19jYyIsCiAgICAgICAiLi46dGVzdF9jb250cm9sbGVy
X3ByaW50ZXIiLAorICAgICAgIi4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6Z29vZ19jYyIsCiAgICAg
XQogICB9CiAgIHJ0Y19zb3VyY2Vfc2V0KCJnb29nX2NjX3VuaXR0ZXN0cyIpIHsKQEAgLTE1Nyw2
ICsxNzUsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBzb3VyY2VzID0gWwogICAg
ICAgImFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAi
YWxyX2RldGVjdG9yX3VuaXR0ZXN0LmNjIiwKKyAgICAgICJjb25nZXN0aW9uX3dpbmRvd19wdXNo
YmFja19jb250cm9sbGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJkZWxheV9iYXNlZF9id2VfdW5p
dHRlc3QuY2MiLAogICAgICAgImRlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdF9oZWxwZXIuY2MiLAog
ICAgICAgImRlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdF9oZWxwZXIuaCIsCkBAIC0xNzUsNiArMTk0
LDggQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOmVzdGltYXRvcnMiLAogICAg
ICAgIjpnb29nX2NjIiwKICAgICAgICI6cHJvYmVfY29udHJvbGxlciIsCisgICAgICAiOnB1c2hi
YWNrX2NvbnRyb2xsZXIiLAorICAgICAgIi4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6Z29vZ19jYyIs
CiAgICAgICAiLi4vLi4vLi4vYXBpL3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAogICAgICAg
Ii4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6bmV0d29ya19jb250cm9sX3Rlc3QiLAogICAgICAgIi4u
Ly4uLy4uL2xvZ2dpbmc6bW9ja3MiLApAQCAtMTk0LDQgKzIxNSwzOSBAQCBpZiAocnRjX2luY2x1
ZGVfdGVzdHMpIHsKICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnki
LAogICAgIF0KICAgfQorICBydGNfc291cmNlX3NldCgiZ29vZ19jY19zbG93X3Rlc3RzIikgewor
ICAgIHRlc3Rvbmx5ID0gdHJ1ZQorCisgICAgc291cmNlcyA9IFsKKyAgICAgICJnb29nX2NjX25l
dHdvcmtfY29udHJvbF9zbG93dGVzdC5jYyIsCisgICAgXQorICAgIGlmICghYnVpbGRfd2l0aF9j
aHJvbWl1bSAmJiBpc19jbGFuZykgeworICAgICAgc3VwcHJlc3NlZF9jb25maWdzICs9IFsgIi8v
YnVpbGQvY29uZmlnL2NsYW5nOmZpbmRfYmFkX2NvbnN0cnVjdHMiIF0KKyAgICB9CisgICAgZGVw
cyA9IFsKKyAgICAgICI6YWxyX2RldGVjdG9yIiwKKyAgICAgICI6ZGVsYXlfYmFzZWRfYndlIiwK
KyAgICAgICI6ZXN0aW1hdG9ycyIsCisgICAgICAiOmdvb2dfY2MiLAorICAgICAgIjpwcm9iZV9j
b250cm9sbGVyIiwKKyAgICAgICI6cHVzaGJhY2tfY29udHJvbGxlciIsCisgICAgICAiLi4vLi4v
Li4vYXBpL3RyYW5zcG9ydDpnb29nX2NjIiwKKyAgICAgICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0
Om5ldHdvcmtfY29udHJvbCIsCisgICAgICAiLi4vLi4vLi4vYXBpL3RyYW5zcG9ydDpuZXR3b3Jr
X2NvbnRyb2xfdGVzdCIsCisgICAgICAiLi4vLi4vLi4vbG9nZ2luZzptb2NrcyIsCisgICAgICAi
Li4vLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCisgICAgICAiLi4vLi4vLi4vcnRjX2Jhc2UvZXhwZXJpbWVudHM6YWxy
X2V4cGVyaW1lbnQiLAorICAgICAgIi4uLy4uLy4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgICAi
Li4vLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAgICIuLi8uLi8uLi90
ZXN0OmZpZWxkX3RyaWFsIiwKKyAgICAgICIuLi8uLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCisg
ICAgICAiLi4vLi4vLi4vdGVzdC9zY2VuYXJpbyIsCisgICAgICAiLi4vLi4vcGFjaW5nIiwKKyAg
ICAgICIuLi8uLi9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IiLAorICAgICAgIi4uLy4uL3J0cF9y
dGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCisgICAgICAiLy90ZXN0aW5nL2dtb2NrIiwKKyAgICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgIF0KKyAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3Rp
bWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2Vz
dGltYXRvci5jYwppbmRleCAwNzIyYjIyMThiZDU5N2Y3ODczZjhhMTc4NzY2ZGU2OTc1NTc5NzM1
Li45MzlkYTRjYzMzY2VhZmQwYjZiNjJkNDRmN2ZjNmNlNjQyYWI3YzhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRv
ci5jYwpAQCAtMTAsMTEgKzEwLDE1IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oIgogCisj
aW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHV0aWxp
dHk+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMu
aCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMzEsNyArMzUsOSBAQCBBY2tub3dsZWRnZWRCaXRyYXRl
RXN0aW1hdG9yOjp+QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcigpIHt9CiAKIEFja25vd2xl
ZGdlZEJpdHJhdGVFc3RpbWF0b3I6OkFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3IoCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEJpdHJhdGVFc3RpbWF0b3I+IGJpdHJhdGVfZXN0aW1hdG9yKQotICAg
IDogYml0cmF0ZV9lc3RpbWF0b3JfKHN0ZDo6bW92ZShiaXRyYXRlX2VzdGltYXRvcikpIHt9Cisg
ICAgOiBhY2NvdW50X2Zvcl91bmFja25vd2xlZGdlZF90cmFmZmljXygKKyAgICAgICAgICBmaWVs
ZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQndlLUFjY291bnRGb3JVbmFja2VkIikpLAorICAg
ICAgYml0cmF0ZV9lc3RpbWF0b3JfKHN0ZDo6bW92ZShiaXRyYXRlX2VzdGltYXRvcikpIHt9CiAK
IHZvaWQgQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcjo6SW5jb21pbmdQYWNrZXRGZWVkYmFj
a1ZlY3RvcigKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4mIHBhY2tldF9m
ZWVkYmFja192ZWN0b3IpIHsKQEAgLTQxLDE4ICs0Nyw0MSBAQCB2b2lkIEFja25vd2xlZGdlZEJp
dHJhdGVFc3RpbWF0b3I6OkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoCiAgIGZvciAoY29u
c3QgYXV0byYgcGFja2V0IDogcGFja2V0X2ZlZWRiYWNrX3ZlY3RvcikgewogICAgIGlmIChJc0lu
U2VuZFRpbWVIaXN0b3J5KHBhY2tldCkpIHsKICAgICAgIE1heWJlRXhwZWN0RmFzdFJhdGVDaGFu
Z2UocGFja2V0LnNlbmRfdGltZV9tcyk7Ci0gICAgICBiaXRyYXRlX2VzdGltYXRvcl8tPlVwZGF0
ZShwYWNrZXQuYXJyaXZhbF90aW1lX21zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnRjOjpkY2hlY2tlZF9jYXN0PGludD4ocGFja2V0LnBheWxvYWRfc2l6ZSkpOworICAgICAg
aW50IGFja25vd2xlZGdlZF9lc3RpbWF0ZSA9IHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ+KHBhY2tl
dC5wYXlsb2FkX3NpemUpOworICAgICAgaWYgKGFjY291bnRfZm9yX3VuYWNrbm93bGVkZ2VkX3Ry
YWZmaWNfKQorICAgICAgICBhY2tub3dsZWRnZWRfZXN0aW1hdGUgKz0gcGFja2V0LnVuYWNrbm93
bGVkZ2VkX2RhdGE7CisgICAgICBiaXRyYXRlX2VzdGltYXRvcl8tPlVwZGF0ZShwYWNrZXQuYXJy
aXZhbF90aW1lX21zLCBhY2tub3dsZWRnZWRfZXN0aW1hdGUpOwogICAgIH0KICAgfQogfQogCiBh
YnNsOjpvcHRpb25hbDx1aW50MzJfdD4gQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcjo6Yml0
cmF0ZV9icHMoKSBjb25zdCB7CiAgIGF1dG8gZXN0aW1hdGVkX2JpdHJhdGUgPSBiaXRyYXRlX2Vz
dGltYXRvcl8tPmJpdHJhdGVfYnBzKCk7Ci0gIHJldHVybiBlc3RpbWF0ZWRfYml0cmF0ZQotICAg
ICAgICAgICAgID8gKmVzdGltYXRlZF9iaXRyYXRlICsKLSAgICAgICAgICAgICAgICAgICBhbGxv
Y2F0ZWRfYml0cmF0ZV93aXRob3V0X2ZlZWRiYWNrX2Jwc18udmFsdWVfb3IoMCkKLSAgICAgICAg
ICAgICA6IGVzdGltYXRlZF9iaXRyYXRlOworICAvLyBJZiB3ZSBhY2NvdW50IGZvciB1bmFja25v
d2xlZGdlZCB0cmFmZmljLCB3ZSBzaG91bGQgbm90IGFkZCB0aGUgYWxsb2NhdGVkCisgIC8vIGJp
dHJhdGUgZm9yIHVuYWxsb2NhdGVkIHN0cmVhbSBhcyB3ZSBleHBlY3QgaXQgdG8gYmUgaW5jbHVk
ZWQgYWxyZWFkeS4KKyAgaWYgKGFjY291bnRfZm9yX3VuYWNrbm93bGVkZ2VkX3RyYWZmaWNfKSB7
CisgICAgcmV0dXJuIGVzdGltYXRlZF9iaXRyYXRlOworICB9IGVsc2UgeworICAgIHJldHVybiBl
c3RpbWF0ZWRfYml0cmF0ZQorICAgICAgICAgICAgICAgPyAqZXN0aW1hdGVkX2JpdHJhdGUgKyBh
bGxvY2F0ZWRfYml0cmF0ZV93aXRob3V0X2ZlZWRiYWNrX2Jwc18KKyAgICAgICAgICAgICAgIDog
ZXN0aW1hdGVkX2JpdHJhdGU7CisgIH0KK30KKworYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IEFj
a25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I6OlBlZWtCcHMoKSBjb25zdCB7CisgIHJldHVybiBi
aXRyYXRlX2VzdGltYXRvcl8tPlBlZWtCcHMoKTsKK30KKworYWJzbDo6b3B0aW9uYWw8RGF0YVJh
dGU+IEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I6OmJpdHJhdGUoKSBjb25zdCB7CisgIGlm
IChiaXRyYXRlX2JwcygpKQorICAgIHJldHVybiBEYXRhUmF0ZTo6YnBzKCpiaXRyYXRlX2Jwcygp
KTsKKyAgcmV0dXJuIGFic2w6Om51bGxvcHQ7Cit9CisKK2Fic2w6Om9wdGlvbmFsPERhdGFSYXRl
PiBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yOjpQZWVrUmF0ZSgpIGNvbnN0IHsKKyAgaWYg
KFBlZWtCcHMoKSkKKyAgICByZXR1cm4gRGF0YVJhdGU6OmJwcygqUGVla0JwcygpKTsKKyAgcmV0
dXJuIGFic2w6Om51bGxvcHQ7CiB9CiAKIHZvaWQgQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRv
cjo6U2V0QWxyRW5kZWRUaW1lTXMoCkBAIC02Miw3ICs5MSw3IEBAIHZvaWQgQWNrbm93bGVkZ2Vk
Qml0cmF0ZUVzdGltYXRvcjo6U2V0QWxyRW5kZWRUaW1lTXMoCiAKIHZvaWQgQWNrbm93bGVkZ2Vk
Qml0cmF0ZUVzdGltYXRvcjo6U2V0QWxsb2NhdGVkQml0cmF0ZVdpdGhvdXRGZWVkYmFjaygKICAg
ICB1aW50MzJfdCBiaXRyYXRlX2JwcykgewotICBhbGxvY2F0ZWRfYml0cmF0ZV93aXRob3V0X2Zl
ZWRiYWNrX2Jwc18uZW1wbGFjZShiaXRyYXRlX2Jwcyk7CisgIGFsbG9jYXRlZF9iaXRyYXRlX3dp
dGhvdXRfZmVlZGJhY2tfYnBzXyA9IGJpdHJhdGVfYnBzOwogfQogCiB2b2lkIEFja25vd2xlZGdl
ZEJpdHJhdGVFc3RpbWF0b3I6Ok1heWJlRXhwZWN0RmFzdFJhdGVDaGFuZ2UoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3Iu
aAppbmRleCBjY2I5NzE4YjI1MDllNmFjNzgzZmU2OTM1NDczOTYzYWYyOTQyZWE3Li42NDVjMGI5
MTNhN2UwNGU2YjdhMGQ1MTYwMGI3MzM4OGU5ZDJhNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmgKQEAgLTE3
LDYgKzE3LDggQEAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9iaXRyYXRlX2VzdGltYXRvci5o
IgogCisjaW5jbHVkZSAiYXBpL3VuaXRzL2RhdGFfcmF0ZS5oIgorCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIAogc3RydWN0IFBhY2tldEZlZWRiYWNrOwpAQCAtMzIsMTQgKzM0LDE4IEBAIGNsYXNzIEFj
a25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3IgewogICB2b2lkIEluY29taW5nUGFja2V0RmVlZGJh
Y2tWZWN0b3IoCiAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4mIHBhY2tl
dF9mZWVkYmFja192ZWN0b3IpOwogICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gYml0cmF0ZV9i
cHMoKSBjb25zdDsKKyAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IFBlZWtCcHMoKSBjb25zdDsK
KyAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGJpdHJhdGUoKSBjb25zdDsKKyAgYWJzbDo6b3B0
aW9uYWw8RGF0YVJhdGU+IFBlZWtSYXRlKCkgY29uc3Q7CiAgIHZvaWQgU2V0QWxyRW5kZWRUaW1l
TXMoaW50NjRfdCBhbHJfZW5kZWRfdGltZV9tcyk7CiAgIHZvaWQgU2V0QWxsb2NhdGVkQml0cmF0
ZVdpdGhvdXRGZWVkYmFjayh1aW50MzJfdCBiaXRyYXRlX2Jwcyk7CiAKICBwcml2YXRlOgogICB2
b2lkIE1heWJlRXhwZWN0RmFzdFJhdGVDaGFuZ2UoaW50NjRfdCBwYWNrZXRfYXJyaXZhbF90aW1l
X21zKTsKKyAgY29uc3QgYm9vbCBhY2NvdW50X2Zvcl91bmFja25vd2xlZGdlZF90cmFmZmljXzsK
ICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gYWxyX2VuZGVkX3RpbWVfbXNfOwogICBzdGQ6OnVu
aXF1ZV9wdHI8Qml0cmF0ZUVzdGltYXRvcj4gYml0cmF0ZV9lc3RpbWF0b3JfOwotICBhYnNsOjpv
cHRpb25hbDx1aW50MzJfdD4gYWxsb2NhdGVkX2JpdHJhdGVfd2l0aG91dF9mZWVkYmFja19icHNf
OworICB1aW50MzJfdCBhbGxvY2F0ZWRfYml0cmF0ZV93aXRob3V0X2ZlZWRiYWNrX2Jwc18gPSAw
OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9k
ZXRlY3Rvci5jYwppbmRleCBlZDhmM2E2NmY0MTI4YzhjNGJlZjgxYTRlZTc1NjQzODliY2RiZjdm
Li5kYjY2OTQyOGYwMjIxMjNjNTUxZjc3MDRmN2ZhNTRkNjhhNmQ0ZTc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2Fscl9kZXRlY3Rvci5jYwpAQCAtMTAsMjAgKzEwLDE3IEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5oIgog
Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8Y3N0
ZGlvPgotI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5o
IgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCiAj
aW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRl
LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50
cy9hbHJfZXhwZXJpbWVudC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJp
Y3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgot
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogQWxyRGV0ZWN0b3I6OkFsckRldGVjdG9yKCkgOiBBbHJEZXRlY3Rvcihu
dWxscHRyKSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0
b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWxyX2RldGVjdG9yLmgKaW5kZXggODc0MzU0
YmM1ODBkOWYyMGNlZDI4YzFmMWY4MGJmYWI2Yjk4NzM2Ni4uYzMwYmExZDA5MzJkMTdiNTFjZTNl
YTgzY2ZiMjRkODQzZjg0ZjQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9h
bHJfZGV0ZWN0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5o
CkBAIC0xMSwxMCArMTEsMTEgQEAKICNpZm5kZWYgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xM
RVJfR09PR19DQ19BTFJfREVURUNUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19DT05HRVNUSU9OX0NP
TlRST0xMRVJfR09PR19DQ19BTFJfREVURUNUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgor
I2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgot
I2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5j
bHVkZSAibW9kdWxlcy9wYWNpbmcvaW50ZXJ2YWxfYnVkZ2V0LmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2UvcmF0ZV9zdGF0aXN0aWNzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvcl91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvYWxyX2RldGVjdG9yX3VuaXR0ZXN0LmNjCmluZGV4IDNhM2QwMDJj
MjNiZTA4MWU1MTFkMTJkMmRiZDdlZTAyNzE3N2Y4ZGYuLjQyNTI2ODUxNGQ4YjNhMzQ1MTBhOGM3
ZmMzZjk1ZDM2MDk0NTcwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWxy
X2RldGVjdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWxyX2Rl
dGVjdG9yX3VuaXR0ZXN0LmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5oIgogCisjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxy
X2V4cGVyaW1lbnQuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAi
dGVzdC9ndGVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9iaXRyYXRl
X2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3Iu
Y2MKaW5kZXggYzc3NjgyNzgwMmM5ZWMwNTg3MDJiNjhkYjg5MGM1OWI3MDE0MTdiZi4uMGE0MDM5
Mjc0MjlmYzlhMjA3YjAzZmVmMDIxOTQ3NmRlMTIxMGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvZ29vZ19jYy9iaXRyYXRlX2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2JpdHJhdGVfZXN0aW1hdG9yLmNjCkBAIC0xMCwxMSArMTAsMTEgQEAKIAogI2luY2x1
ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0
b3IuaCIKIAorI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8
c3RyaW5nPgogCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVz
dC9id2VfdGVzdF9sb2dnaW5nLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRl
L3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIApAQCAtMTMyLDYg
KzEzMiwxMiBAQCBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gQml0cmF0ZUVzdGltYXRvcjo6Yml0
cmF0ZV9icHMoKSBjb25zdCB7CiAgIHJldHVybiBiaXRyYXRlX2VzdGltYXRlXyAqIDEwMDA7CiB9
CiAKK2Fic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBCaXRyYXRlRXN0aW1hdG9yOjpQZWVrQnBzKCkg
Y29uc3QgeworICBpZiAoY3VycmVudF93aW5kb3dfbXNfID4gMCkKKyAgICByZXR1cm4gc3VtXyAq
IDgwMDAgLyBjdXJyZW50X3dpbmRvd19tc187CisgIHJldHVybiBhYnNsOjpudWxsb3B0OworfQor
CiB2b2lkIEJpdHJhdGVFc3RpbWF0b3I6OkV4cGVjdEZhc3RSYXRlQ2hhbmdlKCkgewogICAvLyBC
eSBzZXR0aW5nIHRoZSBiaXRyYXRlLWVzdGltYXRlIHZhcmlhbmNlIHRvIGEgaGlnaGVyIHZhbHVl
IHdlIGFsbG93IHRoZQogICAvLyBiaXRyYXRlIHRvIGNoYW5nZSBmYXN0IGZvciB0aGUgbmV4dCBm
ZXcgc2FtcGxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9l
c3RpbWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3IuaApp
bmRleCA2MTBmYTIxNGU3YTkwMGM5OTkyYjhjMjIxNTg1NjNkMjljMzk3OGMyLi5kM2RmMmI1MTA0
NzJkMGE4MTUxMWE4Yzc4MTljNGQ2ZTBlZjlkZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2JpdHJhdGVfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9iaXRyYXRlX2VzdGltYXRvci5oCkBAIC0xMSw3ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNf
Q09OR0VTVElPTl9DT05UUk9MTEVSX0dPT0dfQ0NfQklUUkFURV9FU1RJTUFUT1JfSF8KICNkZWZp
bmUgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfR09PR19DQ19CSVRSQVRFX0VTVElNQVRP
Ul9IXwogCi0jaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPHN0ZGludC5oPgogCiAjaW5jbHVk
ZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogCkBAIC0yOSw2ICsyOSw3IEBAIGNsYXNzIEJpdHJh
dGVFc3RpbWF0b3IgewogICB2aXJ0dWFsIHZvaWQgVXBkYXRlKGludDY0X3Qgbm93X21zLCBpbnQg
Ynl0ZXMpOwogCiAgIHZpcnR1YWwgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGJpdHJhdGVfYnBz
KCkgY29uc3Q7CisgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBQZWVrQnBzKCkgY29uc3Q7CiAK
ICAgdmlydHVhbCB2b2lkIEV4cGVjdEZhc3RSYXRlQ2hhbmdlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxl
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tf
Y29udHJvbGxlci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTU5Y2I1YjRkZmUxMDIxNDRlMGU2YjM5OGU1MWVj
ZDY2YTYyOWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25n
ZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjCkBAIC0wLDAgKzEsOTkgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHN0
cmluZz4KKworI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2Mv
Y29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKKyNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgorCituYW1lc3BhY2Ug
d2VicnRjIHsKKworLy8gV2hlbiBDb25nZXN0aW9uV2luZG93UHVzaGJhY2sgaXMgZW5hYmxlZCwg
dGhlIHBhY2VyIGlzIG9ibGl2aW91cyB0bworLy8gdGhlIGNvbmdlc3Rpb24gd2luZG93LiBUaGUg
cmVsYXRpb24gYmV0d2VlbiBvdXRzdGFuZGluZyBkYXRhIGFuZAorLy8gdGhlIGNvbmdlc3Rpb24g
d2luZG93IGFmZmVjdHMgZW5jb2RlciBhbGxvY2F0aW9ucyBkaXJlY3RseS4KKy8vIFRoaXMgZXhw
ZXJpbWVudCBpcyBidWlsZCBvbiB0b3Agb2YgY29uZ2VzdGlvbiB3aW5kb3cgZXhwZXJpbWVudC4K
K2NvbnN0IGNoYXIga0Nvbmdlc3Rpb25QdXNoYmFja0V4cGVyaW1lbnRbXSA9ICJXZWJSVEMtQ29u
Z2VzdGlvbldpbmRvd1B1c2hiYWNrIjsKK2NvbnN0IHVpbnQzMl90IGtEZWZhdWx0TWluUHVzaGJh
Y2tUYXJnZXRCaXRyYXRlQnBzID0gMzAwMDA7CisKK2Jvb2wgUmVhZENvbmdlc3Rpb25XaW5kb3dQ
dXNoYmFja0V4cGVyaW1lbnRQYXJhbWV0ZXIoCisgICAgdWludDMyX3QqIG1pbl9wdXNoYmFja190
YXJnZXRfYml0cmF0ZV9icHMpIHsKKyAgUlRDX0RDSEVDSyhtaW5fcHVzaGJhY2tfdGFyZ2V0X2Jp
dHJhdGVfYnBzKTsKKyAgc3RkOjpzdHJpbmcgZXhwZXJpbWVudF9zdHJpbmcgPQorICAgICAgd2Vi
cnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtDb25nZXN0aW9uUHVzaGJhY2tFeHBlcmlt
ZW50KTsKKyAgaW50IHBhcnNlZF92YWx1ZXMgPSBzc2NhbmYoZXhwZXJpbWVudF9zdHJpbmcuY19z
dHIoKSwgIkVuYWJsZWQtJSIgUFJJdTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
aW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzKTsKKyAgaWYgKHBhcnNlZF92YWx1ZXMgPT0g
MSkgeworICAgIFJUQ19DSEVDS19HRSgqbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwcywg
MCkKKyAgICAgICAgPDwgIk1pbiBwdXNoYmFjayB0YXJnZXQgYml0cmF0ZSBtdXN0IGJlIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byAwLiI7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgcmV0dXJu
IGZhbHNlOworfQorCitDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyOjpDb25nZXN0
aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyKCkgeworICBpZiAoIVJlYWRDb25nZXN0aW9uV2lu
ZG93UHVzaGJhY2tFeHBlcmltZW50UGFyYW1ldGVyKAorICAgICAgICAgICZtaW5fcHVzaGJhY2tf
dGFyZ2V0X2JpdHJhdGVfYnBzXykpIHsKKyAgICBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVf
YnBzXyA9IGtEZWZhdWx0TWluUHVzaGJhY2tUYXJnZXRCaXRyYXRlQnBzOworICB9Cit9CisKK0Nv
bmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI6OkNvbmdlc3Rpb25XaW5kb3dQdXNoYmFj
a0NvbnRyb2xsZXIoCisgICAgdWludDMyX3QgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jw
cykKKyAgICA6IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfKG1pbl9wdXNoYmFja190
YXJnZXRfYml0cmF0ZV9icHMpIHt9CisKK3ZvaWQgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29u
dHJvbGxlcjo6VXBkYXRlT3V0c3RhbmRpbmdEYXRhKAorICAgIHNpemVfdCBvdXRzdGFuZGluZ19i
eXRlcykgeworICBvdXRzdGFuZGluZ19ieXRlc18gPSBvdXRzdGFuZGluZ19ieXRlczsKK30KKwor
dm9pZCBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyOjpVcGRhdGVNYXhPdXRzdGFu
ZGluZ0RhdGEoCisgICAgc2l6ZV90IG1heF9vdXRzdGFuZGluZ19ieXRlcykgeworICBEYXRhU2l6
ZSBkYXRhX3dpbmRvdyA9IERhdGFTaXplOjpieXRlcyhtYXhfb3V0c3RhbmRpbmdfYnl0ZXMpOwor
ICBpZiAoY3VycmVudF9kYXRhX3dpbmRvd18pIHsKKyAgICBkYXRhX3dpbmRvdyA9IChkYXRhX3dp
bmRvdyArIGN1cnJlbnRfZGF0YV93aW5kb3dfLnZhbHVlKCkpIC8gMjsKKyAgfQorICBjdXJyZW50
X2RhdGFfd2luZG93XyA9IGRhdGFfd2luZG93OworfQorCit2b2lkIENvbmdlc3Rpb25XaW5kb3dQ
dXNoYmFja0NvbnRyb2xsZXI6OlNldERhdGFXaW5kb3coRGF0YVNpemUgZGF0YV93aW5kb3cpIHsK
KyAgY3VycmVudF9kYXRhX3dpbmRvd18gPSBkYXRhX3dpbmRvdzsKK30KKwordWludDMyX3QgQ29u
Z2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6VXBkYXRlVGFyZ2V0Qml0cmF0ZSgKKyAg
ICB1aW50MzJfdCBiaXRyYXRlX2JwcykgeworICBpZiAoIWN1cnJlbnRfZGF0YV93aW5kb3dfIHx8
IGN1cnJlbnRfZGF0YV93aW5kb3dfLT5Jc1plcm8oKSkKKyAgICByZXR1cm4gYml0cmF0ZV9icHM7
CisgIGRvdWJsZSBmaWxsX3JhdGlvID0KKyAgICAgIG91dHN0YW5kaW5nX2J5dGVzXyAvIHN0YXRp
Y19jYXN0PGRvdWJsZT4oY3VycmVudF9kYXRhX3dpbmRvd18tPmJ5dGVzKCkpOworICBpZiAoZmls
bF9yYXRpbyA+IDEuNSkgeworICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fICo9IDAuOTsKKyAgfSBl
bHNlIGlmIChmaWxsX3JhdGlvID4gMSkgeworICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fICo9IDAu
OTU7CisgIH0gZWxzZSBpZiAoZmlsbF9yYXRpbyA8IDAuMSkgeworICAgIGVuY29kaW5nX3JhdGVf
cmF0aW9fID0gMS4wOworICB9IGVsc2UgeworICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fICo9IDEu
MDU7CisgICAgZW5jb2RpbmdfcmF0ZV9yYXRpb18gPSBzdGQ6Om1pbihlbmNvZGluZ19yYXRlX3Jh
dGlvXywgMS4wKTsKKyAgfQorICB1aW50MzJfdCBhZGp1c3RlZF90YXJnZXRfYml0cmF0ZV9icHMg
PQorICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpdHJhdGVfYnBzICogZW5jb2RpbmdfcmF0
ZV9yYXRpb18pOworCisgIC8vIERvIG5vdCBhZGp1c3QgYmVsb3cgdGhlIG1pbmltdW0gcHVzaGJh
Y2sgYml0cmF0ZSBidXQgZG8gb2JleSBpZiB0aGUKKyAgLy8gb3JpZ2luYWwgZXN0aW1hdGUgaXMg
YmVsb3cgaXQuCisgIGJpdHJhdGVfYnBzID0gYWRqdXN0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzIDwg
bWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc18KKyAgICAgICAgICAgICAgICAgICAgPyBz
dGQ6Om1pbihiaXRyYXRlX2JwcywgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc18pCisg
ICAgICAgICAgICAgICAgICAgIDogYWRqdXN0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzOworICByZXR1
cm4gYml0cmF0ZV9icHM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJv
bGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFj
a19jb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VmMDk3NGNjZTM0NTk2MTFkOTBhNzRiMmFkNjk2
OWNmZjdhYWYzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29u
Z2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9M
TEVSX0dPT0dfQ0NfQ09OR0VTVElPTl9XSU5ET1dfUFVTSEJBQ0tfQ09OVFJPTExFUl9IXworI2Rl
ZmluZSBNT0RVTEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9HT09HX0NDX0NPTkdFU1RJT05fV0lO
RE9XX1BVU0hCQUNLX0NPTlRST0xMRVJfSF8KKworI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0
d29ya190eXBlcy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gVGhpcyBjbGFzcyBlbmFi
bGVzIHB1c2hiYWNrIGZyb20gY29uZ2VzdGlvbiB3aW5kb3cgZGlyZWN0bHkgdG8gdmlkZW8gZW5j
b2Rlci4KKy8vIFdoZW4gdGhlIGNvbmdlc3Rpb24gd2luZG93IGlzIGZpbGxpbmcgdXAsIHRoZSB2
aWRlbyBlbmNvZGVyIHRhcmdldCBiaXRyYXRlCisvLyB3aWxsIGJlIHJlZHVjZWQgYWNjb3JkaW5n
bHkgdG8gYWNjb21tb2RhdGUgdGhlIG5ldHdvcmsgY2hhbmdlcy4gVG8gYXZvaWQKKy8vIHBhdXNp
bmcgdmlkZW8gdG9vIGZyZXF1ZW50bHksIGEgbWluaW11bSBlbmNvZGVyIHRhcmdldCBiaXRyYXRl
IHRocmVzaG9sZCBpcworLy8gdXNlZCB0byBwcmV2ZW50IHZpZGVvIHBhdXNlIGR1ZSB0byBhIGZ1
bGwgY29uZ2VzdGlvbiB3aW5kb3cuCitjbGFzcyBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250
cm9sbGVyIHsKKyBwdWJsaWM6CisgIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXIo
KTsKKyAgZXhwbGljaXQgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcigKKyAgICAg
IHVpbnQzMl90IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHMpOworICB2b2lkIFVwZGF0
ZU91dHN0YW5kaW5nRGF0YShzaXplX3Qgb3V0c3RhbmRpbmdfYnl0ZXMpOworICB2b2lkIFVwZGF0
ZU1heE91dHN0YW5kaW5nRGF0YShzaXplX3QgbWF4X291dHN0YW5kaW5nX2J5dGVzKTsKKyAgdWlu
dDMyX3QgVXBkYXRlVGFyZ2V0Qml0cmF0ZSh1aW50MzJfdCBiaXRyYXRlX2Jwcyk7CisgIHZvaWQg
U2V0RGF0YVdpbmRvdyhEYXRhU2l6ZSBkYXRhX3dpbmRvdyk7CisKKyBwcml2YXRlOgorICBhYnNs
OjpvcHRpb25hbDxEYXRhU2l6ZT4gY3VycmVudF9kYXRhX3dpbmRvd187CisgIHNpemVfdCBvdXRz
dGFuZGluZ19ieXRlc18gPSAwOworICB1aW50MzJfdCBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJh
dGVfYnBzXzsKKyAgZG91YmxlIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gMS4wOworfTsKKworfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfQ09OR0VTVElPTl9DT05U
Uk9MTEVSX0dPT0dfQ0NfQ09OR0VTVElPTl9XSU5ET1dfUFVTSEJBQ0tfQ09OVFJPTExFUl9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25nZXN0aW9uX3dpbmRvd19wdXNo
YmFja19jb250cm9sbGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25n
ZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMwNjE3ZWViYjUyY2NlOTgzYjIwYjhlZDRmNzk4YjI1Yzg2NmM2YTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2Nv
bnRyb2xsZXJfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nv
bmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2dt
b2NrLmgiCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCit1c2luZyB0ZXN0aW5nOjpfOworCitu
YW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworY2xhc3MgQ29uZ2VzdGlvbldp
bmRvd1B1c2hiYWNrQ29udHJvbGxlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBw
cm90ZWN0ZWQ6CisgIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXIgY3duZF9jb250
cm9sbGVyXzsKK307CisKK1RFU1RfRihDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVy
VGVzdCwgRnVsbENvbmdlc3Rpb25XaW5kb3cpIHsKKyAgY3duZF9jb250cm9sbGVyXy5VcGRhdGVP
dXRzdGFuZGluZ0RhdGEoMTAwMDAwKTsKKyAgY3duZF9jb250cm9sbGVyXy5VcGRhdGVNYXhPdXRz
dGFuZGluZ0RhdGEoNTAwMDApOworCisgIHVpbnQzMl90IGJpdHJhdGVfYnBzID0gODAwMDA7Cisg
IGJpdHJhdGVfYnBzID0gY3duZF9jb250cm9sbGVyXy5VcGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJh
dGVfYnBzKTsKKyAgRVhQRUNUX0VRKDcyMDAwdSwgYml0cmF0ZV9icHMpOworCisgIGN3bmRfY29u
dHJvbGxlcl8uVXBkYXRlTWF4T3V0c3RhbmRpbmdEYXRhKDUwMDAwKTsKKyAgYml0cmF0ZV9icHMg
PSBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZVRhcmdldEJpdHJhdGUoYml0cmF0ZV9icHMpOworICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDcyMDAwICogMC45ICogMC45KSwgYml0cmF0
ZV9icHMpOworfQorCitURVNUX0YoQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlclRl
c3QsIE5vcm1hbENvbmdlc3Rpb25XaW5kb3cpIHsKKyAgY3duZF9jb250cm9sbGVyXy5VcGRhdGVP
dXRzdGFuZGluZ0RhdGEoMTAwMDAwKTsKKyAgY3duZF9jb250cm9sbGVyXy5TZXREYXRhV2luZG93
KERhdGFTaXplOjpieXRlcygyMDAwMDApKTsKKworICB1aW50MzJfdCBiaXRyYXRlX2JwcyA9IDgw
MDAwOworICBiaXRyYXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0
ZShiaXRyYXRlX2Jwcyk7CisgIEVYUEVDVF9FUSg4MDAwMHUsIGJpdHJhdGVfYnBzKTsKKworICBj
d25kX2NvbnRyb2xsZXJfLlVwZGF0ZU1heE91dHN0YW5kaW5nRGF0YSgyMDAwMCk7CisgIGJpdHJh
dGVfYnBzID0gY3duZF9jb250cm9sbGVyXy5VcGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJhdGVfYnBz
KTsKKyAgRVhQRUNUX0VRKDgwMDAwdSwgYml0cmF0ZV9icHMpOworfQorCitURVNUX0YoQ29uZ2Vz
dGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlclRlc3QsIExvd0JpdHJhdGUpIHsKKyAgY3duZF9j
b250cm9sbGVyXy5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoMTAwMDAwKTsKKyAgY3duZF9jb250cm9s
bGVyXy5TZXREYXRhV2luZG93KERhdGFTaXplOjpieXRlcyg1MDAwMCkpOworCisgIHVpbnQzMl90
IGJpdHJhdGVfYnBzID0gMzUwMDA7CisgIGJpdHJhdGVfYnBzID0gY3duZF9jb250cm9sbGVyXy5V
cGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJhdGVfYnBzKTsKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PHVpbnQzMl90PigzNTAwMCAqIDAuOSksIGJpdHJhdGVfYnBzKTsKKworICBjd25kX2NvbnRyb2xs
ZXJfLlVwZGF0ZU1heE91dHN0YW5kaW5nRGF0YSgyMDAwMCk7CisgIGJpdHJhdGVfYnBzID0gY3du
ZF9jb250cm9sbGVyXy5VcGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJhdGVfYnBzKTsKKyAgRVhQRUNU
X0VRKDMwMDAwdSwgYml0cmF0ZV9icHMpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9k
ZWxheV9iYXNlZF9id2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3
ZS5jYwppbmRleCBjMjE5NjZjZjdmNTQ0NGRlODcxMjZhMmRjNjhlYWJiMzUwYTM0ZjExLi40ODk0
Yzk4NjNiNjgzNjExM2M1ZTEzYmJhYzM5ZDQ4OTJjZTcwOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5jYwpAQCAtMTEsMjYgKzExLDI1IEBACiAjaW5jbHVkZSAi
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2UuaCIK
IAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3Rk
aW50PgogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJh
YnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlw
ZXMuaCIgIC8vIEZvciBQYWNlZFBhY2tldEluZm8KKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfZGVsYXlfYmFzZWQuaCIKICNpbmNsdWRlICJs
b2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvdHJlbmRsaW5lX2VzdGltYXRvci5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMv
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9id2Vf
dGVzdF9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJz
eXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInN5c3RlbV93
cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKIAorbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3Bh
Y2Ugewotc3RhdGljIGNvbnN0IGludDY0X3Qga1N0cmVhbVRpbWVPdXRNcyA9IDIwMDA7Citjb25z
dGV4cHIgVGltZURlbHRhIGtTdHJlYW1UaW1lT3V0ID0gVGltZURlbHRhOjpTZWNvbmRzPDI+KCk7
CiBjb25zdGV4cHIgaW50IGtUaW1lc3RhbXBHcm91cExlbmd0aE1zID0gNTsKIGNvbnN0ZXhwciBp
bnQga0Fic1NlbmRUaW1lRnJhY3Rpb24gPSAxODsKIGNvbnN0ZXhwciBpbnQga0Fic1NlbmRUaW1l
SW50ZXJBcnJpdmFsVXBzaGlmdCA9IDg7CkBAIC02MywyNCArNjIsMjIgQEAgc2l6ZV90IFJlYWRU
cmVuZGxpbmVGaWx0ZXJXaW5kb3dTaXplKCkgewogICAgICAgcmV0dXJuIHdpbmRvd19zaXplOwog
ICAgIFJUQ19MT0coV0FSTklORykgPDwgIldpbmRvdyBzaXplIG11c3QgYmUgZ3JlYXRlciB0aGFu
IDEuIjsKICAgfQotICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcGFyc2UgcGFy
YW1ldGVycyBmb3IgQndlVHJlbmRsaW5lRmlsdGVyICIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAiZXhwZXJpbWVudCBmcm9tIGZpZWxkIHRyaWFsIHN0cmluZy4gVXNpbmcgZGVmYXVsdC4iOwor
ICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcGFyc2UgcGFyYW1ldGVycyBmb3Ig
QndlV2luZG93U2l6ZUluUGFja2V0cyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIGV4cGVy
aW1lbnQgZnJvbSBmaWVsZCB0cmlhbCBzdHJpbmcuIFVzaW5nIGRlZmF1bHQuIjsKICAgcmV0dXJu
IGtEZWZhdWx0VHJlbmRsaW5lV2luZG93U2l6ZTsKIH0KIH0gIC8vIG5hbWVzcGFjZQogCi1uYW1l
c3BhY2Ugd2VicnRjIHsKLQogRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0OjpSZXN1bHQoKQogICAgIDog
dXBkYXRlZChmYWxzZSksCiAgICAgICBwcm9iZShmYWxzZSksCi0gICAgICB0YXJnZXRfYml0cmF0
ZV9icHMoMCksCisgICAgICB0YXJnZXRfYml0cmF0ZShEYXRhUmF0ZTo6WmVybygpKSwKICAgICAg
IHJlY292ZXJlZF9mcm9tX292ZXJ1c2UoZmFsc2UpIHt9CiAKLURlbGF5QmFzZWRCd2U6OlJlc3Vs
dDo6UmVzdWx0KGJvb2wgcHJvYmUsIHVpbnQzMl90IHRhcmdldF9iaXRyYXRlX2JwcykKK0RlbGF5
QmFzZWRCd2U6OlJlc3VsdDo6UmVzdWx0KGJvb2wgcHJvYmUsIERhdGFSYXRlIHRhcmdldF9iaXRy
YXRlKQogICAgIDogdXBkYXRlZCh0cnVlKSwKICAgICAgIHByb2JlKHByb2JlKSwKLSAgICAgIHRh
cmdldF9iaXRyYXRlX2Jwcyh0YXJnZXRfYml0cmF0ZV9icHMpLAorICAgICAgdGFyZ2V0X2JpdHJh
dGUodGFyZ2V0X2JpdHJhdGUpLAogICAgICAgcmVjb3ZlcmVkX2Zyb21fb3ZlcnVzZShmYWxzZSkg
e30KIAogRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0Ojp+UmVzdWx0KCkge30KQEAgLTg5LDkgKzg2LDgg
QEAgRGVsYXlCYXNlZEJ3ZTo6RGVsYXlCYXNlZEJ3ZShSdGNFdmVudExvZyogZXZlbnRfbG9nKQog
ICAgIDogZXZlbnRfbG9nXyhldmVudF9sb2cpLAogICAgICAgaW50ZXJfYXJyaXZhbF8oKSwKICAg
ICAgIGRlbGF5X2RldGVjdG9yXygpLAotICAgICAgbGFzdF9zZWVuX3BhY2tldF9tc18oLTEpLAor
ICAgICAgbGFzdF9zZWVuX3BhY2tldF8oVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCkpLAogICAg
ICAgdW1hX3JlY29yZGVkXyhmYWxzZSksCi0gICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8o
ZXZlbnRfbG9nKSwKICAgICAgIHRyZW5kbGluZV93aW5kb3dfc2l6ZV8oCiAgICAgICAgICAgd2Vi
cnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtCd2VXaW5kb3dTaXplSW5QYWNrZXRzRXhwZXJp
bWVudCkKICAgICAgICAgICAgICAgPyBSZWFkVHJlbmRsaW5lRmlsdGVyV2luZG93U2l6ZSgpCkBA
IC05OSw3ICs5NSw3IEBAIERlbGF5QmFzZWRCd2U6OkRlbGF5QmFzZWRCd2UoUnRjRXZlbnRMb2cq
IGV2ZW50X2xvZykKICAgICAgIHRyZW5kbGluZV9zbW9vdGhpbmdfY29lZmZfKGtEZWZhdWx0VHJl
bmRsaW5lU21vb3RoaW5nQ29lZmYpLAogICAgICAgdHJlbmRsaW5lX3RocmVzaG9sZF9nYWluXyhr
RGVmYXVsdFRyZW5kbGluZVRocmVzaG9sZEdhaW4pLAogICAgICAgY29uc2VjdXRpdmVfZGVsYXll
ZF9mZWVkYmFja3NfKDApLAotICAgICAgcHJldl9iaXRyYXRlXygwKSwKKyAgICAgIHByZXZfYml0
cmF0ZV8oRGF0YVJhdGU6Olplcm8oKSksCiAgICAgICBwcmV2X3N0YXRlXyhCYW5kd2lkdGhVc2Fn
ZTo6a0J3Tm9ybWFsKSB7CiAgIFJUQ19MT0coTFNfSU5GTykKICAgICAgIDw8ICJVc2luZyBUcmVu
ZGxpbmUgZmlsdGVyIGZvciBkZWxheSBjaGFuZ2UgZXN0aW1hdGlvbiB3aXRoIHdpbmRvdyBzaXpl
ICIKQEAgLTExMyw4ICsxMDksOSBAQCBEZWxheUJhc2VkQndlOjp+RGVsYXlCYXNlZEJ3ZSgpIHt9
CiAKIERlbGF5QmFzZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndlOjpJbmNvbWluZ1BhY2tldEZl
ZWRiYWNrVmVjdG9yKAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiYgcGFj
a2V0X2ZlZWRiYWNrX3ZlY3RvciwKLSAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gYWNrZWRf
Yml0cmF0ZV9icHMsCi0gICAgaW50NjRfdCBhdF90aW1lX21zKSB7CisgICAgYWJzbDo6b3B0aW9u
YWw8RGF0YVJhdGU+IGFja2VkX2JpdHJhdGUsCisgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+
IHByb2JlX2JpdHJhdGUsCisgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgUlRDX0RDSEVDSyhz
dGQ6OmlzX3NvcnRlZChwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLmJlZ2luKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5lbmQoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQYWNrZXRGZWVkYmFja0NvbXBhcmF0b3IoKSkpOwpAQCAtMTQx
LDcgKzEzOCw3IEBAIERlbGF5QmFzZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndlOjpJbmNvbWlu
Z1BhY2tldEZlZWRiYWNrVmVjdG9yKAogICAgIGlmIChwYWNrZXRfZmVlZGJhY2suc2VuZF90aW1l
X21zIDwgMCkKICAgICAgIGNvbnRpbnVlOwogICAgIGRlbGF5ZWRfZmVlZGJhY2sgPSBmYWxzZTsK
LSAgICBJbmNvbWluZ1BhY2tldEZlZWRiYWNrKHBhY2tldF9mZWVkYmFjaywgYXRfdGltZV9tcyk7
CisgICAgSW5jb21pbmdQYWNrZXRGZWVkYmFjayhwYWNrZXRfZmVlZGJhY2ssIGF0X3RpbWUpOwog
ICAgIGlmIChwcmV2X2RldGVjdG9yX3N0YXRlID09IEJhbmR3aWR0aFVzYWdlOjprQndVbmRlcnVz
aW5nICYmCiAgICAgICAgIGRlbGF5X2RldGVjdG9yXy0+U3RhdGUoKSA9PSBCYW5kd2lkdGhVc2Fn
ZTo6a0J3Tm9ybWFsKSB7CiAgICAgICByZWNvdmVyZWRfZnJvbV9vdmVydXNlID0gdHJ1ZTsKQEAg
LTE1MCw0MyArMTQ3LDUxIEBAIERlbGF5QmFzZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndlOjpJ
bmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAogICB9CiAKICAgaWYgKGRlbGF5ZWRfZmVlZGJh
Y2spIHsKLSAgICArK2NvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXzsKLSAgICBpZiAoY29u
c2VjdXRpdmVfZGVsYXllZF9mZWVkYmFja3NfID49IGtNYXhDb25zZWN1dGl2ZUZhaWxlZExvb2t1
cHMpIHsKLSAgICAgIGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXyA9IDA7Ci0gICAgICBy
ZXR1cm4gT25Mb25nRmVlZGJhY2tEZWxheShwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLmJhY2soKS5h
cnJpdmFsX3RpbWVfbXMpOwotICAgIH0KKyAgICBUaW1lc3RhbXAgYXJyaXZhbF90aW1lID0gVGlt
ZXN0YW1wOjpQbHVzSW5maW5pdHkoKTsKKyAgICBpZiAocGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5i
YWNrKCkuYXJyaXZhbF90aW1lX21zID4gMCkKKyAgICAgIGFycml2YWxfdGltZSA9CisgICAgICAg
ICAgVGltZXN0YW1wOjptcyhwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLmJhY2soKS5hcnJpdmFsX3Rp
bWVfbXMpOworICAgIHJldHVybiBPbkRlbGF5ZWRGZWVkYmFjayhhcnJpdmFsX3RpbWUpOworCiAg
IH0gZWxzZSB7CiAgICAgY29uc2VjdXRpdmVfZGVsYXllZF9mZWVkYmFja3NfID0gMDsKLSAgICBy
ZXR1cm4gTWF5YmVVcGRhdGVFc3RpbWF0ZShhY2tlZF9iaXRyYXRlX2JwcywgcmVjb3ZlcmVkX2Zy
b21fb3ZlcnVzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdF90aW1lX21zKTsK
KyAgICByZXR1cm4gTWF5YmVVcGRhdGVFc3RpbWF0ZShhY2tlZF9iaXRyYXRlLCBwcm9iZV9iaXRy
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY292ZXJlZF9mcm9tX292ZXJ1
c2UsIGF0X3RpbWUpOworICB9CisgIHJldHVybiBSZXN1bHQoKTsKK30KKworRGVsYXlCYXNlZEJ3
ZTo6UmVzdWx0IERlbGF5QmFzZWRCd2U6Ok9uRGVsYXllZEZlZWRiYWNrKFRpbWVzdGFtcCByZWNl
aXZlX3RpbWUpIHsKKyAgKytjb25zZWN1dGl2ZV9kZWxheWVkX2ZlZWRiYWNrc187CisgIGlmIChj
b25zZWN1dGl2ZV9kZWxheWVkX2ZlZWRiYWNrc18gPj0ga01heENvbnNlY3V0aXZlRmFpbGVkTG9v
a3VwcykgeworICAgIGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXyA9IDA7CisgICAgcmV0
dXJuIE9uTG9uZ0ZlZWRiYWNrRGVsYXkocmVjZWl2ZV90aW1lKTsKICAgfQogICByZXR1cm4gUmVz
dWx0KCk7CiB9CiAKIERlbGF5QmFzZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndlOjpPbkxvbmdG
ZWVkYmFja0RlbGF5KAotICAgIGludDY0X3QgYXJyaXZhbF90aW1lX21zKSB7CisgICAgVGltZXN0
YW1wIGFycml2YWxfdGltZSkgewogICAvLyBFc3RpbWF0ZSBzaG91bGQgYWx3YXlzIGJlIHZhbGlk
IHNpbmNlIGEgc3RhcnQgYml0cmF0ZSBhbHdheXMgaXMgc2V0IGluIHRoZQogICAvLyBDYWxsIGNv
bnN0cnVjdG9yLiBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0byByZXR1cm4gYW4gZW1wdHkgUmVz
dWx0IGhlcmUsCiAgIC8vIG9yIHRvIGVzdGltYXRlIHRoZSB0aHJvdWdocHV0IGJhc2VkIG9uIHRo
ZSBmZWVkYmFjayB3ZSByZWNlaXZlZC4KICAgUlRDX0RDSEVDSyhyYXRlX2NvbnRyb2xfLlZhbGlk
RXN0aW1hdGUoKSk7Ci0gIHJhdGVfY29udHJvbF8uU2V0RXN0aW1hdGUocmF0ZV9jb250cm9sXy5M
YXRlc3RFc3RpbWF0ZSgpIC8gMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJpdmFs
X3RpbWVfbXMpOworICByYXRlX2NvbnRyb2xfLlNldEVzdGltYXRlKHJhdGVfY29udHJvbF8uTGF0
ZXN0RXN0aW1hdGUoKSAvIDIsIGFycml2YWxfdGltZSk7CiAgIFJlc3VsdCByZXN1bHQ7CiAgIHJl
c3VsdC51cGRhdGVkID0gdHJ1ZTsKICAgcmVzdWx0LnByb2JlID0gZmFsc2U7Ci0gIHJlc3VsdC50
YXJnZXRfYml0cmF0ZV9icHMgPSByYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7CisgIHJl
c3VsdC50YXJnZXRfYml0cmF0ZSA9IHJhdGVfY29udHJvbF8uTGF0ZXN0RXN0aW1hdGUoKTsKICAg
UlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiTG9uZyBmZWVkYmFjayBkZWxheSBkZXRlY3RlZCwgcmVk
dWNpbmcgQldFIHRvICIKLSAgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQudGFyZ2V0X2Jp
dHJhdGVfYnBzOworICAgICAgICAgICAgICAgICAgICAgIDw8IFRvU3RyaW5nKHJlc3VsdC50YXJn
ZXRfYml0cmF0ZSk7CiAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgRGVsYXlCYXNlZEJ3ZTo6
SW5jb21pbmdQYWNrZXRGZWVkYmFjaygKICAgICBjb25zdCBQYWNrZXRGZWVkYmFjayYgcGFja2V0
X2ZlZWRiYWNrLAotICAgIGludDY0X3QgYXRfdGltZV9tcykgewotICBpbnQ2NF90IG5vd19tcyA9
IGF0X3RpbWVfbXM7CisgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgLy8gUmVzZXQgaWYgdGhl
IHN0cmVhbSBoYXMgdGltZWQgb3V0LgotICBpZiAobGFzdF9zZWVuX3BhY2tldF9tc18gPT0gLTEg
fHwKLSAgICAgIG5vd19tcyAtIGxhc3Rfc2Vlbl9wYWNrZXRfbXNfID4ga1N0cmVhbVRpbWVPdXRN
cykgeworICBpZiAobGFzdF9zZWVuX3BhY2tldF8uSXNJbmZpbml0ZSgpIHx8CisgICAgICBhdF90
aW1lIC0gbGFzdF9zZWVuX3BhY2tldF8gPiBrU3RyZWFtVGltZU91dCkgewogICAgIGludGVyX2Fy
cml2YWxfLnJlc2V0KAogICAgICAgICBuZXcgSW50ZXJBcnJpdmFsKChrVGltZXN0YW1wR3JvdXBM
ZW5ndGhNcyA8PCBrSW50ZXJBcnJpdmFsU2hpZnQpIC8gMTAwMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBrVGltZXN0YW1wVG9NcywgdHJ1ZSkpOwpAQCAtMTk0LDcgKzE5OSw3IEBAIHZvaWQg
RGVsYXlCYXNlZEJ3ZTo6SW5jb21pbmdQYWNrZXRGZWVkYmFjaygKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVuZGxpbmVfc21vb3RoaW5nX2NvZWZm
XywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVu
ZGxpbmVfdGhyZXNob2xkX2dhaW5fKSk7CiAgIH0KLSAgbGFzdF9zZWVuX3BhY2tldF9tc18gPSBu
b3dfbXM7CisgIGxhc3Rfc2Vlbl9wYWNrZXRfID0gYXRfdGltZTsKIAogICB1aW50MzJfdCBzZW5k
X3RpbWVfMjRiaXRzID0KICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PigKQEAgLTIxMSwxMTUg
KzIxNiwxMDkgQEAgdm9pZCBEZWxheUJhc2VkQndlOjpJbmNvbWluZ1BhY2tldEZlZWRiYWNrKAog
ICBpbnQ2NF90IHRfZGVsdGEgPSAwOwogICBpbnQgc2l6ZV9kZWx0YSA9IDA7CiAgIGlmIChpbnRl
cl9hcnJpdmFsXy0+Q29tcHV0ZURlbHRhcyh0aW1lc3RhbXAsIHBhY2tldF9mZWVkYmFjay5hcnJp
dmFsX3RpbWVfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3dfbXMs
IHBhY2tldF9mZWVkYmFjay5wYXlsb2FkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdF90aW1lLm1zKCksIHBhY2tldF9mZWVkYmFjay5wYXlsb2FkX3NpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHNfZGVsdGEsICZ0X2RlbHRhLCAm
c2l6ZV9kZWx0YSkpIHsKICAgICBkb3VibGUgdHNfZGVsdGFfbXMgPSAoMTAwMC4wICogdHNfZGVs
dGEpIC8gKDEgPDwga0ludGVyQXJyaXZhbFNoaWZ0KTsKICAgICBkZWxheV9kZXRlY3Rvcl8tPlVw
ZGF0ZSh0X2RlbHRhLCB0c19kZWx0YV9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YWNrZXRfZmVlZGJhY2suYXJyaXZhbF90aW1lX21zKTsKICAgfQotICBpZiAocGFja2V0X2ZlZWRi
YWNrLnBhY2luZ19pbmZvLnByb2JlX2NsdXN0ZXJfaWQgIT0KLSAgICAgIFBhY2VkUGFja2V0SW5m
bzo6a05vdEFQcm9iZSkgewotICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy5IYW5kbGVQcm9i
ZUFuZEVzdGltYXRlQml0cmF0ZShwYWNrZXRfZmVlZGJhY2spOwotICB9CiB9CiAKIERlbGF5QmFz
ZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndlOjpNYXliZVVwZGF0ZUVzdGltYXRlKAotICAgIGFi
c2w6Om9wdGlvbmFsPHVpbnQzMl90PiBhY2tlZF9iaXRyYXRlX2JwcywKKyAgICBhYnNsOjpvcHRp
b25hbDxEYXRhUmF0ZT4gYWNrZWRfYml0cmF0ZSwKKyAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0
ZT4gcHJvYmVfYml0cmF0ZSwKICAgICBib29sIHJlY292ZXJlZF9mcm9tX292ZXJ1c2UsCi0gICAg
aW50NjRfdCBhdF90aW1lX21zKSB7CisgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgUmVzdWx0
IHJlc3VsdDsKLSAgaW50NjRfdCBub3dfbXMgPSBhdF90aW1lX21zOwogCi0gIGFic2w6Om9wdGlv
bmFsPGludD4gcHJvYmVfYml0cmF0ZV9icHMgPQotICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0
b3JfLkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZUJwcygpOwogICAvLyBDdXJyZW50
bHkgb3ZlcnVzaW5nIHRoZSBiYW5kd2lkdGguCiAgIGlmIChkZWxheV9kZXRlY3Rvcl8tPlN0YXRl
KCkgPT0gQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZykgewotICAgIGlmIChhY2tlZF9iaXRy
YXRlX2JwcyAmJgotICAgICAgICByYXRlX2NvbnRyb2xfLlRpbWVUb1JlZHVjZUZ1cnRoZXIobm93
X21zLCAqYWNrZWRfYml0cmF0ZV9icHMpKSB7CisgICAgaWYgKGFja2VkX2JpdHJhdGUgJiYKKyAg
ICAgICAgcmF0ZV9jb250cm9sXy5UaW1lVG9SZWR1Y2VGdXJ0aGVyKGF0X3RpbWUsICphY2tlZF9i
aXRyYXRlKSkgewogICAgICAgcmVzdWx0LnVwZGF0ZWQgPQotICAgICAgICAgIFVwZGF0ZUVzdGlt
YXRlKG5vd19tcywgYWNrZWRfYml0cmF0ZV9icHMsICZyZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBz
KTsKLSAgICB9IGVsc2UgaWYgKCFhY2tlZF9iaXRyYXRlX2JwcyAmJiByYXRlX2NvbnRyb2xfLlZh
bGlkRXN0aW1hdGUoKSAmJgotICAgICAgICAgICAgICAgcmF0ZV9jb250cm9sXy5Jbml0aWFsVGlt
ZVRvUmVkdWNlRnVydGhlcihub3dfbXMpKSB7CisgICAgICAgICAgVXBkYXRlRXN0aW1hdGUoYXRf
dGltZSwgYWNrZWRfYml0cmF0ZSwgJnJlc3VsdC50YXJnZXRfYml0cmF0ZSk7CisgICAgfSBlbHNl
IGlmICghYWNrZWRfYml0cmF0ZSAmJiByYXRlX2NvbnRyb2xfLlZhbGlkRXN0aW1hdGUoKSAmJgor
ICAgICAgICAgICAgICAgcmF0ZV9jb250cm9sXy5Jbml0aWFsVGltZVRvUmVkdWNlRnVydGhlcihh
dF90aW1lKSkgewogICAgICAgLy8gT3ZlcnVzaW5nIGJlZm9yZSB3ZSBoYXZlIGEgbWVhc3VyZWQg
YWNrbm93bGVkZ2VkIGJpdHJhdGUuIFJlZHVjZSBzZW5kCiAgICAgICAvLyByYXRlIGJ5IDUwJSBl
dmVyeSAyMDAgbXMuCiAgICAgICAvLyBUT0RPKHRzY2h1bWltKTogSW1wcm92ZSB0aGlzIGFuZC9v
ciB0aGUgYWNrbm93bGVkZ2VkIGJpdHJhdGUgZXN0aW1hdG9yCiAgICAgICAvLyBzbyB0aGF0IHdl
IChhbG1vc3QpIGFsd2F5cyBoYXZlIGEgYml0cmF0ZSBlc3RpbWF0ZS4KLSAgICAgIHJhdGVfY29u
dHJvbF8uU2V0RXN0aW1hdGUocmF0ZV9jb250cm9sXy5MYXRlc3RFc3RpbWF0ZSgpIC8gMiwgbm93
X21zKTsKKyAgICAgIHJhdGVfY29udHJvbF8uU2V0RXN0aW1hdGUocmF0ZV9jb250cm9sXy5MYXRl
c3RFc3RpbWF0ZSgpIC8gMiwgYXRfdGltZSk7CiAgICAgICByZXN1bHQudXBkYXRlZCA9IHRydWU7
CiAgICAgICByZXN1bHQucHJvYmUgPSBmYWxzZTsKLSAgICAgIHJlc3VsdC50YXJnZXRfYml0cmF0
ZV9icHMgPSByYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7CisgICAgICByZXN1bHQudGFy
Z2V0X2JpdHJhdGUgPSByYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7CiAgICAgfQogICB9
IGVsc2UgewotICAgIGlmIChwcm9iZV9iaXRyYXRlX2JwcykgeworICAgIGlmIChwcm9iZV9iaXRy
YXRlKSB7CiAgICAgICByZXN1bHQucHJvYmUgPSB0cnVlOwogICAgICAgcmVzdWx0LnVwZGF0ZWQg
PSB0cnVlOwotICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlX2JwcyA9ICpwcm9iZV9iaXRyYXRl
X2JwczsKLSAgICAgIHJhdGVfY29udHJvbF8uU2V0RXN0aW1hdGUoKnByb2JlX2JpdHJhdGVfYnBz
LCBub3dfbXMpOworICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlID0gKnByb2JlX2JpdHJhdGU7
CisgICAgICByYXRlX2NvbnRyb2xfLlNldEVzdGltYXRlKCpwcm9iZV9iaXRyYXRlLCBhdF90aW1l
KTsKICAgICB9IGVsc2UgewogICAgICAgcmVzdWx0LnVwZGF0ZWQgPQotICAgICAgICAgIFVwZGF0
ZUVzdGltYXRlKG5vd19tcywgYWNrZWRfYml0cmF0ZV9icHMsICZyZXN1bHQudGFyZ2V0X2JpdHJh
dGVfYnBzKTsKKyAgICAgICAgICBVcGRhdGVFc3RpbWF0ZShhdF90aW1lLCBhY2tlZF9iaXRyYXRl
LCAmcmVzdWx0LnRhcmdldF9iaXRyYXRlKTsKICAgICAgIHJlc3VsdC5yZWNvdmVyZWRfZnJvbV9v
dmVydXNlID0gcmVjb3ZlcmVkX2Zyb21fb3ZlcnVzZTsKICAgICB9CiAgIH0KICAgQmFuZHdpZHRo
VXNhZ2UgZGV0ZWN0b3Jfc3RhdGUgPSBkZWxheV9kZXRlY3Rvcl8tPlN0YXRlKCk7Ci0gIGlmICgo
cmVzdWx0LnVwZGF0ZWQgJiYgcHJldl9iaXRyYXRlXyAhPSByZXN1bHQudGFyZ2V0X2JpdHJhdGVf
YnBzKSB8fAorICBpZiAoKHJlc3VsdC51cGRhdGVkICYmIHByZXZfYml0cmF0ZV8gIT0gcmVzdWx0
LnRhcmdldF9iaXRyYXRlKSB8fAogICAgICAgZGV0ZWN0b3Jfc3RhdGUgIT0gcHJldl9zdGF0ZV8p
IHsKLSAgICB1aW50MzJfdCBiaXRyYXRlX2JwcyA9Ci0gICAgICAgIHJlc3VsdC51cGRhdGVkID8g
cmVzdWx0LnRhcmdldF9iaXRyYXRlX2JwcyA6IHByZXZfYml0cmF0ZV87CisgICAgRGF0YVJhdGUg
Yml0cmF0ZSA9IHJlc3VsdC51cGRhdGVkID8gcmVzdWx0LnRhcmdldF9iaXRyYXRlIDogcHJldl9i
aXRyYXRlXzsKIAotICAgIEJXRV9URVNUX0xPR0dJTkdfUExPVCgxLCAidGFyZ2V0X2JpdHJhdGVf
YnBzIiwgbm93X21zLCBiaXRyYXRlX2Jwcyk7CisgICAgQldFX1RFU1RfTE9HR0lOR19QTE9UKDEs
ICJ0YXJnZXRfYml0cmF0ZV9icHMiLCBhdF90aW1lLm1zKCksIGJpdHJhdGUuYnBzKCkpOwogCiAg
ICAgaWYgKGV2ZW50X2xvZ18pIHsKICAgICAgIGV2ZW50X2xvZ18tPkxvZyhhYnNsOjptYWtlX3Vu
aXF1ZTxSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQ+KAotICAgICAgICAgIGJpdHJhdGVfYnBz
LCBkZXRlY3Rvcl9zdGF0ZSkpOworICAgICAgICAgIGJpdHJhdGUuYnBzKCksIGRldGVjdG9yX3N0
YXRlKSk7CiAgICAgfQogCi0gICAgcHJldl9iaXRyYXRlXyA9IGJpdHJhdGVfYnBzOworICAgIHBy
ZXZfYml0cmF0ZV8gPSBiaXRyYXRlOwogICAgIHByZXZfc3RhdGVfID0gZGV0ZWN0b3Jfc3RhdGU7
CiAgIH0KICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBEZWxheUJhc2VkQndlOjpVcGRhdGVF
c3RpbWF0ZShpbnQ2NF90IG5vd19tcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGFja2VkX2JpdHJhdGVfYnBzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCogdGFyZ2V0X2JpdHJhdGVfYnBzKSB7
Ci0gIGNvbnN0IFJhdGVDb250cm9sSW5wdXQgaW5wdXQoZGVsYXlfZGV0ZWN0b3JfLT5TdGF0ZSgp
LCBhY2tlZF9iaXRyYXRlX2Jwcyk7Ci0gICp0YXJnZXRfYml0cmF0ZV9icHMgPSByYXRlX2NvbnRy
b2xfLlVwZGF0ZSgmaW5wdXQsIG5vd19tcyk7Citib29sIERlbGF5QmFzZWRCd2U6OlVwZGF0ZUVz
dGltYXRlKFRpbWVzdGFtcCBhdF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gYWNrZWRfYml0cmF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVJhdGUqIHRhcmdldF9yYXRlKSB7CisgIGNvbnN0
IFJhdGVDb250cm9sSW5wdXQgaW5wdXQoZGVsYXlfZGV0ZWN0b3JfLT5TdGF0ZSgpLCBhY2tlZF9i
aXRyYXRlKTsKKyAgKnRhcmdldF9yYXRlID0gcmF0ZV9jb250cm9sXy5VcGRhdGUoJmlucHV0LCBh
dF90aW1lKTsKICAgcmV0dXJuIHJhdGVfY29udHJvbF8uVmFsaWRFc3RpbWF0ZSgpOwogfQogCi12
b2lkIERlbGF5QmFzZWRCd2U6Ok9uUnR0VXBkYXRlKGludDY0X3QgYXZnX3J0dF9tcykgewotICBy
YXRlX2NvbnRyb2xfLlNldFJ0dChhdmdfcnR0X21zKTsKK3ZvaWQgRGVsYXlCYXNlZEJ3ZTo6T25S
dHRVcGRhdGUoVGltZURlbHRhIGF2Z19ydHQpIHsKKyAgcmF0ZV9jb250cm9sXy5TZXRSdHQoYXZn
X3J0dCk7CiB9CiAKIGJvb2wgRGVsYXlCYXNlZEJ3ZTo6TGF0ZXN0RXN0aW1hdGUoc3RkOjp2ZWN0
b3I8dWludDMyX3Q+KiBzc3JjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QqIGJpdHJhdGVfYnBzKSBjb25zdCB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERhdGFSYXRlKiBiaXRyYXRlKSBjb25zdCB7CiAgIC8vIEN1cnJlbnRseSBhY2Nl
c3NlZCBmcm9tIGJvdGggdGhlIHByb2Nlc3MgdGhyZWFkIChzZWUKICAgLy8gTW9kdWxlUnRwUnRj
cEltcGw6OlByb2Nlc3MoKSkgYW5kIHRoZSBjb25maWd1cmF0aW9uIHRocmVhZCAoc2VlCiAgIC8v
IENhbGw6OkdldFN0YXRzKCkpLiBTaG91bGQgaW4gdGhlIGZ1dHVyZSBvbmx5IGJlIGFjY2Vzc2Vk
IGZyb20gYSBzaW5nbGUKICAgLy8gdGhyZWFkLgogICBSVENfRENIRUNLKHNzcmNzKTsKLSAgUlRD
X0RDSEVDSyhiaXRyYXRlX2Jwcyk7CisgIFJUQ19EQ0hFQ0soYml0cmF0ZSk7CiAgIGlmICghcmF0
ZV9jb250cm9sXy5WYWxpZEVzdGltYXRlKCkpCiAgICAgcmV0dXJuIGZhbHNlOwogCiAgICpzc3Jj
cyA9IHtrRml4ZWRTc3JjfTsKLSAgKmJpdHJhdGVfYnBzID0gcmF0ZV9jb250cm9sXy5MYXRlc3RF
c3RpbWF0ZSgpOworICAqYml0cmF0ZSA9IHJhdGVfY29udHJvbF8uTGF0ZXN0RXN0aW1hdGUoKTsK
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRGVsYXlCYXNlZEJ3ZTo6U2V0U3RhcnRCaXRyYXRl
KGludCBzdGFydF9iaXRyYXRlX2JwcykgewotICBSVENfTE9HKExTX0lORk8pIDw8ICJCV0UgU2V0
dGluZyBzdGFydCBiaXRyYXRlIHRvOiAiIDw8IHN0YXJ0X2JpdHJhdGVfYnBzOwotICByYXRlX2Nv
bnRyb2xfLlNldFN0YXJ0Qml0cmF0ZShzdGFydF9iaXRyYXRlX2Jwcyk7Cit2b2lkIERlbGF5QmFz
ZWRCd2U6OlNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZSBzdGFydF9iaXRyYXRlKSB7CisgIFJUQ19M
T0coTFNfSU5GTykgPDwgIkJXRSBTZXR0aW5nIHN0YXJ0IGJpdHJhdGUgdG86ICIKKyAgICAgICAg
ICAgICAgICAgICA8PCBUb1N0cmluZyhzdGFydF9iaXRyYXRlKTsKKyAgcmF0ZV9jb250cm9sXy5T
ZXRTdGFydEJpdHJhdGUoc3RhcnRfYml0cmF0ZSk7CiB9CiAKLXZvaWQgRGVsYXlCYXNlZEJ3ZTo6
U2V0TWluQml0cmF0ZShpbnQgbWluX2JpdHJhdGVfYnBzKSB7Cit2b2lkIERlbGF5QmFzZWRCd2U6
OlNldE1pbkJpdHJhdGUoRGF0YVJhdGUgbWluX2JpdHJhdGUpIHsKICAgLy8gQ2FsbGVkIGZyb20g
Ym90aCB0aGUgY29uZmlndXJhdGlvbiB0aHJlYWQgYW5kIHRoZSBuZXR3b3JrIHRocmVhZC4gU2hv
dWxkbid0CiAgIC8vIGJlIGNhbGxlZCBmcm9tIHRoZSBuZXR3b3JrIHRocmVhZCBpbiB0aGUgZnV0
dXJlLgotICByYXRlX2NvbnRyb2xfLlNldE1pbkJpdHJhdGUobWluX2JpdHJhdGVfYnBzKTsKKyAg
cmF0ZV9jb250cm9sXy5TZXRNaW5CaXRyYXRlKG1pbl9iaXRyYXRlKTsKIH0KIAotaW50NjRfdCBE
ZWxheUJhc2VkQndlOjpHZXRFeHBlY3RlZEJ3ZVBlcmlvZE1zKCkgY29uc3QgewotICByZXR1cm4g
cmF0ZV9jb250cm9sXy5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZE1zKCk7CitUaW1lRGVsdGEg
RGVsYXlCYXNlZEJ3ZTo6R2V0RXhwZWN0ZWRCd2VQZXJpb2QoKSBjb25zdCB7CisgIHJldHVybiBy
YXRlX2NvbnRyb2xfLkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCk7CiB9CiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jh
c2VkX2J3ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2UuaAppbmRl
eCA0MjE2NGJhYWQ0YWM3MWMyMGU5NzY4NDMyYzFhZGZmNmQ0NGRkYjQ3Li42MTZjNWIwODk2YmRm
MmZlMDM0OTBiNzQ4ZWEwY2UzNDE5ZThkYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVs
YXlfYmFzZWRfYndlLmgKQEAgLTExLDE2ICsxMSwxOCBAQAogI2lmbmRlZiBNT0RVTEVTX0NPTkdF
U1RJT05fQ09OVFJPTExFUl9HT09HX0NDX0RFTEFZX0JBU0VEX0JXRV9IXwogI2RlZmluZSBNT0RV
TEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9HT09HX0NDX0RFTEFZX0JBU0VEX0JXRV9IXwogCisj
aW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5
PgotI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvZGVsYXlfaW5jcmVhc2VfZGV0ZWN0b3JfaW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9iaXRyYXRlX2Vz
dGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2Fp
bWRfcmF0ZV9jb250cm9sLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3Rp
bWF0b3IvaW5jbHVkZS9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW50ZXJfYXJyaXZhbC5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiICAvLyBGb3IgUGFja2V0RmVlZGJhY2sKICNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmFj
ZV9jaGVja2VyLmgiCiAKQEAgLTMxLDExICszMywxMSBAQCBjbGFzcyBEZWxheUJhc2VkQndlIHsK
ICBwdWJsaWM6CiAgIHN0cnVjdCBSZXN1bHQgewogICAgIFJlc3VsdCgpOwotICAgIFJlc3VsdChi
b29sIHByb2JlLCB1aW50MzJfdCB0YXJnZXRfYml0cmF0ZV9icHMpOworICAgIFJlc3VsdChib29s
IHByb2JlLCBEYXRhUmF0ZSB0YXJnZXRfYml0cmF0ZSk7CiAgICAgflJlc3VsdCgpOwogICAgIGJv
b2wgdXBkYXRlZDsKICAgICBib29sIHByb2JlOwotICAgIHVpbnQzMl90IHRhcmdldF9iaXRyYXRl
X2JwczsKKyAgICBEYXRhUmF0ZSB0YXJnZXRfYml0cmF0ZSA9IERhdGFSYXRlOjpaZXJvKCk7CiAg
ICAgYm9vbCByZWNvdmVyZWRfZnJvbV9vdmVydXNlOwogICB9OwogCkBAIC00NCw0MiArNDYsNDMg
QEAgY2xhc3MgRGVsYXlCYXNlZEJ3ZSB7CiAKICAgUmVzdWx0IEluY29taW5nUGFja2V0RmVlZGJh
Y2tWZWN0b3IoCiAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4mIHBhY2tl
dF9mZWVkYmFja192ZWN0b3IsCi0gICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gYWNrZWRf
Yml0cmF0ZV9icHMsCi0gICAgICBpbnQ2NF90IGF0X3RpbWVfbXMpOwotICB2b2lkIE9uUnR0VXBk
YXRlKGludDY0X3QgYXZnX3J0dF9tcyk7Ci0gIGJvb2wgTGF0ZXN0RXN0aW1hdGUoc3RkOjp2ZWN0
b3I8dWludDMyX3Q+KiBzc3JjcywKLSAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCogYml0
cmF0ZV9icHMpIGNvbnN0OwotICB2b2lkIFNldFN0YXJ0Qml0cmF0ZShpbnQgc3RhcnRfYml0cmF0
ZV9icHMpOwotICB2b2lkIFNldE1pbkJpdHJhdGUoaW50IG1pbl9iaXRyYXRlX2Jwcyk7Ci0gIGlu
dDY0X3QgR2V0RXhwZWN0ZWRCd2VQZXJpb2RNcygpIGNvbnN0OworICAgICAgYWJzbDo6b3B0aW9u
YWw8RGF0YVJhdGU+IGFja2VkX2JpdHJhdGUsCisgICAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0
ZT4gcHJvYmVfYml0cmF0ZSwKKyAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgUmVzdWx0IE9u
RGVsYXllZEZlZWRiYWNrKFRpbWVzdGFtcCByZWNlaXZlX3RpbWUpOworICB2b2lkIE9uUnR0VXBk
YXRlKFRpbWVEZWx0YSBhdmdfcnR0KTsKKyAgYm9vbCBMYXRlc3RFc3RpbWF0ZShzdGQ6OnZlY3Rv
cjx1aW50MzJfdD4qIHNzcmNzLCBEYXRhUmF0ZSogYml0cmF0ZSkgY29uc3Q7CisgIHZvaWQgU2V0
U3RhcnRCaXRyYXRlKERhdGFSYXRlIHN0YXJ0X2JpdHJhdGUpOworICB2b2lkIFNldE1pbkJpdHJh
dGUoRGF0YVJhdGUgbWluX2JpdHJhdGUpOworICBUaW1lRGVsdGEgR2V0RXhwZWN0ZWRCd2VQZXJp
b2QoKSBjb25zdDsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyBHb29nQ2NTdGF0ZVByaW50
ZXI7CiAgIHZvaWQgSW5jb21pbmdQYWNrZXRGZWVkYmFjayhjb25zdCBQYWNrZXRGZWVkYmFjayYg
cGFja2V0X2ZlZWRiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBh
dF90aW1lX21zKTsKLSAgUmVzdWx0IE9uTG9uZ0ZlZWRiYWNrRGVsYXkoaW50NjRfdCBhcnJpdmFs
X3RpbWVfbXMpOwotICBSZXN1bHQgTWF5YmVVcGRhdGVFc3RpbWF0ZShhYnNsOjpvcHRpb25hbDx1
aW50MzJfdD4gYWNrZWRfYml0cmF0ZV9icHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUaW1lc3RhbXAgYXRfdGltZSk7CisgIFJlc3VsdCBPbkxvbmdGZWVkYmFja0RlbGF5KFRpbWVz
dGFtcCBhcnJpdmFsX3RpbWUpOworICBSZXN1bHQgTWF5YmVVcGRhdGVFc3RpbWF0ZShhYnNsOjpv
cHRpb25hbDxEYXRhUmF0ZT4gYWNrZWRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IHByb2JlX2JpdHJhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgcmVxdWVzdF9wcm9iZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBhdF90aW1lX21zKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGltZXN0YW1wIGF0X3RpbWUpOwogICAvLyBVcGRhdGVzIHRoZSBjdXJyZW50IHJlbW90
ZSByYXRlIGVzdGltYXRlIGFuZCByZXR1cm5zIHRydWUgaWYgYSB2YWxpZAogICAvLyBlc3RpbWF0
ZSBleGlzdHMuCi0gIGJvb2wgVXBkYXRlRXN0aW1hdGUoaW50NjRfdCBub3dfbXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGFja2VkX2JpdHJhdGVfYnBz
LAotICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiB0YXJnZXRfYml0cmF0ZV9icHMpOwor
ICBib29sIFVwZGF0ZUVzdGltYXRlKFRpbWVzdGFtcCBub3csCisgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGFja2VkX2JpdHJhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgRGF0YVJhdGUqIHRhcmdldF9iaXRyYXRlKTsKIAogICBydGM6OlJhY2VDaGVja2Vy
IG5ldHdvcmtfcmFjZV87CiAgIFJ0Y0V2ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOwogICBzdGQ6
OnVuaXF1ZV9wdHI8SW50ZXJBcnJpdmFsPiBpbnRlcl9hcnJpdmFsXzsKICAgc3RkOjp1bmlxdWVf
cHRyPERlbGF5SW5jcmVhc2VEZXRlY3RvckludGVyZmFjZT4gZGVsYXlfZGV0ZWN0b3JfOwotICBp
bnQ2NF90IGxhc3Rfc2Vlbl9wYWNrZXRfbXNfOworICBUaW1lc3RhbXAgbGFzdF9zZWVuX3BhY2tl
dF87CiAgIGJvb2wgdW1hX3JlY29yZGVkXzsKICAgQWltZFJhdGVDb250cm9sIHJhdGVfY29udHJv
bF87Ci0gIFByb2JlQml0cmF0ZUVzdGltYXRvciBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl87CiAg
IHNpemVfdCB0cmVuZGxpbmVfd2luZG93X3NpemVfOwogICBkb3VibGUgdHJlbmRsaW5lX3Ntb290
aGluZ19jb2VmZl87CiAgIGRvdWJsZSB0cmVuZGxpbmVfdGhyZXNob2xkX2dhaW5fOwogICBpbnQg
Y29uc2VjdXRpdmVfZGVsYXllZF9mZWVkYmFja3NfOwotICB1aW50MzJfdCBwcmV2X2JpdHJhdGVf
OworICBEYXRhUmF0ZSBwcmV2X2JpdHJhdGVfOwogICBCYW5kd2lkdGhVc2FnZSBwcmV2X3N0YXRl
XzsKIAogICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKERlbGF5QmFzZWRCd2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2VfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVz
dC5jYwppbmRleCBiMmFkZDNlNmU5NGE4ZjUwMjc4MDA3NmJjMzc3YzkyNjc3ZjEyM2M2Li43ZGUx
MWIxNjg0MGYwMGFmYWQ4ZTcwYWZkNTlmNzMyZTQwNzliMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdC5jYwpAQCAtMjUsMTMgKzI1
LDEzIEBAIGNvbnN0ZXhwciBpbnQga051bVByb2Jlc0NsdXN0ZXIxID0gODsKIGNvbnN0IFBhY2Vk
UGFja2V0SW5mbyBrUGFjaW5nSW5mbzAoMCwga051bVByb2Jlc0NsdXN0ZXIwLCAyMDAwKTsKIGNv
bnN0IFBhY2VkUGFja2V0SW5mbyBrUGFjaW5nSW5mbzEoMSwga051bVByb2Jlc0NsdXN0ZXIxLCA0
MDAwKTsKIGNvbnN0ZXhwciBmbG9hdCBrVGFyZ2V0VXRpbGl6YXRpb25GcmFjdGlvbiA9IDAuOTVm
OwotY29uc3RleHByIGludDY0X3Qga0R1bW15VGltZXN0YW1wID0gMTAwMDsKK2NvbnN0ZXhwciBU
aW1lc3RhbXAga0R1bW15VGltZXN0YW1wID0gVGltZXN0YW1wOjpTZWNvbmRzPDEwMDA+KCk7CiB9
ICAvLyBuYW1lc3BhY2UKIAogVEVTVF9GKERlbGF5QmFzZWRCd2VUZXN0LCBOb0NyYXNoRW1wdHlG
ZWVkYmFjaykgewogICBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gcGFja2V0X2ZlZWRiYWNr
X3ZlY3RvcjsKICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5JbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVj
dG9yKAotICAgICAgcGFja2V0X2ZlZWRiYWNrX3ZlY3RvciwgYWJzbDo6bnVsbG9wdCwga0R1bW15
VGltZXN0YW1wKTsKKyAgICAgIHBhY2tldF9mZWVkYmFja192ZWN0b3IsIGFic2w6Om51bGxvcHQs
IGFic2w6Om51bGxvcHQsIGtEdW1teVRpbWVzdGFtcCk7CiB9CiAKIFRFU1RfRihEZWxheUJhc2Vk
QndlVGVzdCwgTm9DcmFzaE9ubHlMb3N0RmVlZGJhY2spIHsKQEAgLTQzLDcgKzQzLDcgQEAgVEVT
VF9GKERlbGF5QmFzZWRCd2VUZXN0LCBOb0NyYXNoT25seUxvc3RGZWVkYmFjaykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrZXRGZWVkYmFj
azo6a05vU2VuZFRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEsIDE1MDAsIFBhY2VkUGFja2V0SW5mbygpKSk7CiAgIGJpdHJhdGVfZXN0aW1h
dG9yXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKLSAgICAgIHBhY2tldF9mZWVkYmFj
a192ZWN0b3IsIGFic2w6Om51bGxvcHQsIGtEdW1teVRpbWVzdGFtcCk7CisgICAgICBwYWNrZXRf
ZmVlZGJhY2tfdmVjdG9yLCBhYnNsOjpudWxsb3B0LCBhYnNsOjpudWxsb3B0LCBrRHVtbXlUaW1l
c3RhbXApOwogfQogCiBURVNUX0YoRGVsYXlCYXNlZEJ3ZVRlc3QsIFByb2JlRGV0ZWN0aW9uKSB7
CkBAIC0xNDQsMTIgKzE0NCwxMiBAQCBURVNUX0YoRGVsYXlCYXNlZEJ3ZVRlc3QsIFByb2JlRGV0
ZWN0aW9uU2xvd2VyQXJyaXZhbEhpZ2hCaXRyYXRlKSB7CiB9CiAKIFRFU1RfRihEZWxheUJhc2Vk
QndlVGVzdCwgR2V0RXhwZWN0ZWRCd2VQZXJpb2RNcykgewotICBpbnQ2NF90IGRlZmF1bHRfaW50
ZXJ2YWxfbXMgPSBiaXRyYXRlX2VzdGltYXRvcl8tPkdldEV4cGVjdGVkQndlUGVyaW9kTXMoKTsK
LSAgRVhQRUNUX0dUKGRlZmF1bHRfaW50ZXJ2YWxfbXMsIDApOworICBhdXRvIGRlZmF1bHRfaW50
ZXJ2YWwgPSBiaXRyYXRlX2VzdGltYXRvcl8tPkdldEV4cGVjdGVkQndlUGVyaW9kKCk7CisgIEVY
UEVDVF9HVChkZWZhdWx0X2ludGVydmFsLm1zKCksIDApOwogICBDYXBhY2l0eURyb3BUZXN0SGVs
cGVyKDEsIHRydWUsIDMzMywgMCk7Ci0gIGludDY0X3QgaW50ZXJ2YWxfbXMgPSBiaXRyYXRlX2Vz
dGltYXRvcl8tPkdldEV4cGVjdGVkQndlUGVyaW9kTXMoKTsKLSAgRVhQRUNUX0dUKGludGVydmFs
X21zLCAwKTsKLSAgRVhQRUNUX05FKGludGVydmFsX21zLCBkZWZhdWx0X2ludGVydmFsX21zKTsK
KyAgYXV0byBpbnRlcnZhbCA9IGJpdHJhdGVfZXN0aW1hdG9yXy0+R2V0RXhwZWN0ZWRCd2VQZXJp
b2QoKTsKKyAgRVhQRUNUX0dUKGludGVydmFsLm1zKCksIDApOworICBFWFBFQ1RfTkUoaW50ZXJ2
YWwubXMoKSwgZGVmYXVsdF9pbnRlcnZhbC5tcygpKTsKIH0KIAogVEVTVF9GKERlbGF5QmFzZWRC
d2VUZXN0LCBJbml0aWFsQmVoYXZpb3IpIHsKQEAgLTE5OSwyMCArMTk5LDIwIEBAIFRFU1RfRihE
ZWxheUJhc2VkQndlVGVzdCwgVGVzdExvbmdUaW1lb3V0QW5kV3JhcCkgewogfQogCiBURVNUX0Yo
RGVsYXlCYXNlZEJ3ZVRlc3QsIFRlc3RJbml0aWFsT3ZlcnVzZSkgewotICBjb25zdCB1aW50MzJf
dCBrU3RhcnRCaXRyYXRlID0gMzAwZTM7Ci0gIGNvbnN0IHVpbnQzMl90IGtJbml0aWFsQ2FwYWNp
dHlCcHMgPSAyMDBlMzsKKyAgY29uc3QgRGF0YVJhdGUga1N0YXJ0Qml0cmF0ZSA9IERhdGFSYXRl
OjprYnBzKDMwMCk7CisgIGNvbnN0IERhdGFSYXRlIGtJbml0aWFsQ2FwYWNpdHkgPSBEYXRhUmF0
ZTo6a2JwcygyMDApOwogICBjb25zdCB1aW50MzJfdCBrRHVtbXlTc3JjID0gMDsKICAgLy8gSGln
aCBGUFMgdG8gZW5zdXJlIHRoYXQgd2Ugc2VuZCBhIGxvdCBvZiBwYWNrZXRzIGluIGEgc2hvcnQg
dGltZS4KICAgY29uc3QgaW50IGtGcHMgPSA5MDsKIAotICBzdHJlYW1fZ2VuZXJhdG9yXy0+QWRk
U3RyZWFtKG5ldyB0ZXN0OjpSdHBTdHJlYW0oa0Zwcywga1N0YXJ0Qml0cmF0ZSkpOwotICBzdHJl
YW1fZ2VuZXJhdG9yXy0+c2V0X2NhcGFjaXR5X2JwcyhrSW5pdGlhbENhcGFjaXR5QnBzKTsKKyAg
c3RyZWFtX2dlbmVyYXRvcl8tPkFkZFN0cmVhbShuZXcgdGVzdDo6UnRwU3RyZWFtKGtGcHMsIGtT
dGFydEJpdHJhdGUuYnBzKCkpKTsKKyAgc3RyZWFtX2dlbmVyYXRvcl8tPnNldF9jYXBhY2l0eV9i
cHMoa0luaXRpYWxDYXBhY2l0eS5icHMoKSk7CiAKICAgLy8gTmVlZGVkIHRvIGluaXRpYWxpemUg
dGhlIEFpbWRSYXRlQ29udHJvbC4KICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5TZXRTdGFydEJpdHJh
dGUoa1N0YXJ0Qml0cmF0ZSk7CiAKICAgLy8gUHJvZHVjZSAzMCBmcmFtZXMgKGluIDEvMyBzZWNv
bmQpIGFuZCBnaXZlIHRoZW0gdG8gdGhlIGVzdGltYXRvci4KLSAgdWludDMyX3QgYml0cmF0ZV9i
cHMgPSBrU3RhcnRCaXRyYXRlOworICBpbnQ2NF90IGJpdHJhdGVfYnBzID0ga1N0YXJ0Qml0cmF0
ZS5icHMoKTsKICAgYm9vbCBzZWVuX292ZXJ1c2UgPSBmYWxzZTsKICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAzMDsgKytpKSB7CiAgICAgYm9vbCBvdmVydXNlID0gR2VuZXJhdGVBbmRQcm9jZXNzRnJh
bWUoa0R1bW15U3NyYywgYml0cmF0ZV9icHMpOwpAQCAtMjIyLDcgKzIyMiw4IEBAIFRFU1RfRihE
ZWxheUJhc2VkQndlVGVzdCwgVGVzdEluaXRpYWxPdmVydXNlKSB7CiAgICAgRVhQRUNUX0ZBTFNF
KGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGVfYnBzKCkuaGFzX3ZhbHVl
KCkpOwogICAgIGlmIChvdmVydXNlKSB7CiAgICAgICBFWFBFQ1RfVFJVRShiaXRyYXRlX29ic2Vy
dmVyXy51cGRhdGVkKCkpOwotICAgICAgRVhQRUNUX05FQVIoYml0cmF0ZV9vYnNlcnZlcl8ubGF0
ZXN0X2JpdHJhdGUoKSwga1N0YXJ0Qml0cmF0ZSAvIDIsIDE1MDAwKTsKKyAgICAgIEVYUEVDVF9O
RUFSKGJpdHJhdGVfb2JzZXJ2ZXJfLmxhdGVzdF9iaXRyYXRlKCksIGtTdGFydEJpdHJhdGUuYnBz
KCkgLyAyLAorICAgICAgICAgICAgICAgICAgMTUwMDApOwogICAgICAgYml0cmF0ZV9icHMgPSBi
aXRyYXRlX29ic2VydmVyXy5sYXRlc3RfYml0cmF0ZSgpOwogICAgICAgc2Vlbl9vdmVydXNlID0g
dHJ1ZTsKICAgICAgIGJyZWFrOwpAQCAtMjMyLDcgKzIzMyw4IEBAIFRFU1RfRihEZWxheUJhc2Vk
QndlVGVzdCwgVGVzdEluaXRpYWxPdmVydXNlKSB7CiAgICAgfQogICB9CiAgIEVYUEVDVF9UUlVF
KHNlZW5fb3ZlcnVzZSk7Ci0gIEVYUEVDVF9ORUFSKGJpdHJhdGVfb2JzZXJ2ZXJfLmxhdGVzdF9i
aXRyYXRlKCksIGtTdGFydEJpdHJhdGUgLyAyLCAxNTAwMCk7CisgIEVYUEVDVF9ORUFSKGJpdHJh
dGVfb2JzZXJ2ZXJfLmxhdGVzdF9iaXRyYXRlKCksIGtTdGFydEJpdHJhdGUuYnBzKCkgLyAyLAor
ICAgICAgICAgICAgICAxNTAwMCk7CiB9CiAKIGNsYXNzIERlbGF5QmFzZWRCd2VUZXN0V2l0aEJh
Y2tvZmZUaW1lb3V0RXhwZXJpbWVudCA6IHB1YmxpYyBEZWxheUJhc2VkQndlVGVzdCB7CkBAIC0y
NDMsMjAgKzI0NSwyMCBAQCBjbGFzcyBEZWxheUJhc2VkQndlVGVzdFdpdGhCYWNrb2ZmVGltZW91
dEV4cGVyaW1lbnQgOiBwdWJsaWMgRGVsYXlCYXNlZEJ3ZVRlc3QgewogCiAvLyBUaGlzIHRlc3Qg
c3Vic3VtZXMgYW5kIGltcHJvdmVzIERlbGF5QmFzZWRCd2VUZXN0LlRlc3RJbml0aWFsT3ZlcnVz
ZSBhYm92ZS4KIFRFU1RfRihEZWxheUJhc2VkQndlVGVzdFdpdGhCYWNrb2ZmVGltZW91dEV4cGVy
aW1lbnQsIFRlc3RJbml0aWFsT3ZlcnVzZSkgewotICBjb25zdCB1aW50MzJfdCBrU3RhcnRCaXRy
YXRlID0gMzAwZTM7Ci0gIGNvbnN0IHVpbnQzMl90IGtJbml0aWFsQ2FwYWNpdHlCcHMgPSAyMDBl
MzsKKyAgY29uc3QgRGF0YVJhdGUga1N0YXJ0Qml0cmF0ZSA9IERhdGFSYXRlOjprYnBzKDMwMCk7
CisgIGNvbnN0IERhdGFSYXRlIGtJbml0aWFsQ2FwYWNpdHkgPSBEYXRhUmF0ZTo6a2JwcygyMDAp
OwogICBjb25zdCB1aW50MzJfdCBrRHVtbXlTc3JjID0gMDsKICAgLy8gSGlnaCBGUFMgdG8gZW5z
dXJlIHRoYXQgd2Ugc2VuZCBhIGxvdCBvZiBwYWNrZXRzIGluIGEgc2hvcnQgdGltZS4KICAgY29u
c3QgaW50IGtGcHMgPSA5MDsKIAotICBzdHJlYW1fZ2VuZXJhdG9yXy0+QWRkU3RyZWFtKG5ldyB0
ZXN0OjpSdHBTdHJlYW0oa0Zwcywga1N0YXJ0Qml0cmF0ZSkpOwotICBzdHJlYW1fZ2VuZXJhdG9y
Xy0+c2V0X2NhcGFjaXR5X2JwcyhrSW5pdGlhbENhcGFjaXR5QnBzKTsKKyAgc3RyZWFtX2dlbmVy
YXRvcl8tPkFkZFN0cmVhbShuZXcgdGVzdDo6UnRwU3RyZWFtKGtGcHMsIGtTdGFydEJpdHJhdGUu
YnBzKCkpKTsKKyAgc3RyZWFtX2dlbmVyYXRvcl8tPnNldF9jYXBhY2l0eV9icHMoa0luaXRpYWxD
YXBhY2l0eS5icHMoKSk7CiAKICAgLy8gTmVlZGVkIHRvIGluaXRpYWxpemUgdGhlIEFpbWRSYXRl
Q29udHJvbC4KICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5TZXRTdGFydEJpdHJhdGUoa1N0YXJ0Qml0
cmF0ZSk7CiAKICAgLy8gUHJvZHVjZSAzMCBmcmFtZXMgKGluIDEvMyBzZWNvbmQpIGFuZCBnaXZl
IHRoZW0gdG8gdGhlIGVzdGltYXRvci4KLSAgdWludDMyX3QgYml0cmF0ZV9icHMgPSBrU3RhcnRC
aXRyYXRlOworICBpbnQ2NF90IGJpdHJhdGVfYnBzID0ga1N0YXJ0Qml0cmF0ZS5icHMoKTsKICAg
Ym9vbCBzZWVuX292ZXJ1c2UgPSBmYWxzZTsKICAgZm9yIChpbnQgZnJhbWVzID0gMDsgZnJhbWVz
IDwgMzAgJiYgIXNlZW5fb3ZlcnVzZTsgKytmcmFtZXMpIHsKICAgICBib29sIG92ZXJ1c2UgPSBH
ZW5lcmF0ZUFuZFByb2Nlc3NGcmFtZShrRHVtbXlTc3JjLCBiaXRyYXRlX2Jwcyk7CkBAIC0yNjYs
NyArMjY4LDggQEAgVEVTVF9GKERlbGF5QmFzZWRCd2VUZXN0V2l0aEJhY2tvZmZUaW1lb3V0RXhw
ZXJpbWVudCwgVGVzdEluaXRpYWxPdmVydXNlKSB7CiAgICAgRVhQRUNUX0ZBTFNFKGFja25vd2xl
ZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGVfYnBzKCkuaGFzX3ZhbHVlKCkpOwogICAg
IGlmIChvdmVydXNlKSB7CiAgICAgICBFWFBFQ1RfVFJVRShiaXRyYXRlX29ic2VydmVyXy51cGRh
dGVkKCkpOwotICAgICAgRVhQRUNUX05FQVIoYml0cmF0ZV9vYnNlcnZlcl8ubGF0ZXN0X2JpdHJh
dGUoKSwga1N0YXJ0Qml0cmF0ZSAvIDIsIDE1MDAwKTsKKyAgICAgIEVYUEVDVF9ORUFSKGJpdHJh
dGVfb2JzZXJ2ZXJfLmxhdGVzdF9iaXRyYXRlKCksIGtTdGFydEJpdHJhdGUuYnBzKCkgLyAyLAor
ICAgICAgICAgICAgICAgICAgMTUwMDApOwogICAgICAgYml0cmF0ZV9icHMgPSBiaXRyYXRlX29i
c2VydmVyXy5sYXRlc3RfYml0cmF0ZSgpOwogICAgICAgc2Vlbl9vdmVydXNlID0gdHJ1ZTsKICAg
ICB9IGVsc2UgaWYgKGJpdHJhdGVfb2JzZXJ2ZXJfLnVwZGF0ZWQoKSkgewpAQCAtMjgyLDggKzI4
NSw4IEBAIFRFU1RfRihEZWxheUJhc2VkQndlVGVzdFdpdGhCYWNrb2ZmVGltZW91dEV4cGVyaW1l
bnQsIFRlc3RJbml0aWFsT3ZlcnVzZSkgewogICAgIEVYUEVDVF9GQUxTRShvdmVydXNlKTsKICAg
ICBpZiAoYml0cmF0ZV9vYnNlcnZlcl8udXBkYXRlZCgpKSB7CiAgICAgICBiaXRyYXRlX2JwcyA9
IGJpdHJhdGVfb2JzZXJ2ZXJfLmxhdGVzdF9iaXRyYXRlKCk7Ci0gICAgICBFWFBFQ1RfR0UoYml0
cmF0ZV9icHMsIGtTdGFydEJpdHJhdGUgLyAyIC0gMTUwMDApOwotICAgICAgRVhQRUNUX0xFKGJp
dHJhdGVfYnBzLCBrSW5pdGlhbENhcGFjaXR5QnBzICsgMTUwMDApOworICAgICAgRVhQRUNUX0dF
KGJpdHJhdGVfYnBzLCBrU3RhcnRCaXRyYXRlLmJwcygpIC8gMiAtIDE1MDAwKTsKKyAgICAgIEVY
UEVDVF9MRShiaXRyYXRlX2Jwcywga0luaXRpYWxDYXBhY2l0eS5icHMoKSArIDE1MDAwKTsKICAg
ICAgIGJpdHJhdGVfb2JzZXJ2ZXJfLlJlc2V0KCk7CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdF9oZWxwZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdF9oZWxwZXIu
Y2MKaW5kZXggMmEwMDgwMWViMWM2Y2Q2ODY0MzI0NzlhNzI5ODdjNGViYTM1MTgxMi4uNDcyODhl
NWZiYzY0ZmNhZDNhOTI0YTIyNzY5OTRjZjYwNDAwNTAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlX3VuaXR0ZXN0X2hlbHBlci5jYwpA
QCAtMTU0LDYgKzE1NCw3IEBAIERlbGF5QmFzZWRCd2VUZXN0OjpEZWxheUJhc2VkQndlVGVzdCgp
CiAgICAgICBjbG9ja18oMTAwMDAwMDAwKSwKICAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2Vz
dGltYXRvcl8oCiAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8QWNrbm93bGVkZ2VkQml0cmF0
ZUVzdGltYXRvcj4oKSksCisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8obmV3IFByb2Jl
Qml0cmF0ZUVzdGltYXRvcihudWxscHRyKSksCiAgICAgICBiaXRyYXRlX2VzdGltYXRvcl8obmV3
IERlbGF5QmFzZWRCd2UobnVsbHB0cikpLAogICAgICAgc3RyZWFtX2dlbmVyYXRvcl8obmV3IHRl
c3Q6OlN0cmVhbUdlbmVyYXRvcigxZTYsICAvLyBDYXBhY2l0eS4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25k
cygpKSksCkBAIC0xNjYsNiArMTY3LDcgQEAgRGVsYXlCYXNlZEJ3ZVRlc3Q6OkRlbGF5QmFzZWRC
d2VUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWVsZF90cmlhbF9zdHJpbmcpCiAgICAgICBjbG9j
a18oMTAwMDAwMDAwKSwKICAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8oCiAg
ICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcj4o
KSksCisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8obmV3IFByb2JlQml0cmF0ZUVzdGlt
YXRvcihudWxscHRyKSksCiAgICAgICBiaXRyYXRlX2VzdGltYXRvcl8obmV3IERlbGF5QmFzZWRC
d2UobnVsbHB0cikpLAogICAgICAgc3RyZWFtX2dlbmVyYXRvcl8obmV3IHRlc3Q6OlN0cmVhbUdl
bmVyYXRvcigxZTYsICAvLyBDYXBhY2l0eS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25kcygpKSksCkBAIC0x
OTgsMTUgKzIwMCwyMCBAQCB2b2lkIERlbGF5QmFzZWRCd2VUZXN0OjpJbmNvbWluZ0ZlZWRiYWNr
KGludDY0X3QgYXJyaXZhbF90aW1lX21zLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVu
Y2VfbnVtYmVyLCBwYXlsb2FkX3NpemUsIHBhY2luZ19pbmZvKTsKICAgc3RkOjp2ZWN0b3I8UGFj
a2V0RmVlZGJhY2s+IHBhY2tldHM7CiAgIHBhY2tldHMucHVzaF9iYWNrKHBhY2tldCk7CisgIGlm
IChwYWNrZXQuc2VuZF90aW1lX21zICE9IFBhY2tldEZlZWRiYWNrOjprTm9TZW5kVGltZSAmJgor
ICAgICAgcGFja2V0LnBhY2luZ19pbmZvLnByb2JlX2NsdXN0ZXJfaWQgIT0gUGFjZWRQYWNrZXRJ
bmZvOjprTm90QVByb2JlKQorICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy0+SGFuZGxlUHJv
YmVBbmRFc3RpbWF0ZUJpdHJhdGUocGFja2V0KTsKKwogICBhY2tub3dsZWRnZWRfYml0cmF0ZV9l
c3RpbWF0b3JfLT5JbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKHBhY2tldHMpOwogICBEZWxh
eUJhc2VkQndlOjpSZXN1bHQgcmVzdWx0ID0KICAgICAgIGJpdHJhdGVfZXN0aW1hdG9yXy0+SW5j
b21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKLSAgICAgICAgICBwYWNrZXRzLCBhY2tub3dsZWRn
ZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRyYXRlX2JwcygpLAotICAgICAgICAgIGNsb2NrXy5U
aW1lSW5NaWxsaXNlY29uZHMoKSk7CisgICAgICAgICAgcGFja2V0cywgYWNrbm93bGVkZ2VkX2Jp
dHJhdGVfZXN0aW1hdG9yXy0+Yml0cmF0ZSgpLAorICAgICAgICAgIHByb2JlX2JpdHJhdGVfZXN0
aW1hdG9yXy0+RmV0Y2hBbmRSZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRlKCksCisgICAgICAgICAg
VGltZXN0YW1wOjptcyhjbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpKTsKICAgY29uc3QgdWlu
dDMyX3Qga0R1bW15U3NyYyA9IDA7CiAgIGlmIChyZXN1bHQudXBkYXRlZCkgewogICAgIGJpdHJh
dGVfb2JzZXJ2ZXJfLk9uUmVjZWl2ZUJpdHJhdGVDaGFuZ2VkKHtrRHVtbXlTc3JjfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudGFyZ2V0X2Jp
dHJhdGVfYnBzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQudGFyZ2V0X2JpdHJhdGUuYnBzKCkpOwogICB9CiB9CiAKQEAgLTIzMiwxOCArMjM5
LDIzIEBAIGJvb2wgRGVsYXlCYXNlZEJ3ZVRlc3Q6OkdlbmVyYXRlQW5kUHJvY2Vzc0ZyYW1lKHVp
bnQzMl90IHNzcmMsCiAgIGZvciAoYXV0byYgcGFja2V0IDogcGFja2V0cykgewogICAgIFJUQ19D
SEVDS19HRShwYWNrZXQuYXJyaXZhbF90aW1lX21zICsgYXJyaXZhbF90aW1lX29mZnNldF9tc18s
IDApOwogICAgIHBhY2tldC5hcnJpdmFsX3RpbWVfbXMgKz0gYXJyaXZhbF90aW1lX29mZnNldF9t
c187CisKKyAgICBpZiAocGFja2V0LnNlbmRfdGltZV9tcyAhPSBQYWNrZXRGZWVkYmFjazo6a05v
U2VuZFRpbWUgJiYKKyAgICAgICAgcGFja2V0LnBhY2luZ19pbmZvLnByb2JlX2NsdXN0ZXJfaWQg
IT0gUGFjZWRQYWNrZXRJbmZvOjprTm90QVByb2JlKQorICAgICAgcHJvYmVfYml0cmF0ZV9lc3Rp
bWF0b3JfLT5IYW5kbGVQcm9iZUFuZEVzdGltYXRlQml0cmF0ZShwYWNrZXQpOwogICB9CiAKICAg
YWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFja1Zl
Y3RvcihwYWNrZXRzKTsKICAgRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0IHJlc3VsdCA9CiAgICAgICBi
aXRyYXRlX2VzdGltYXRvcl8tPkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoCi0gICAgICAg
ICAgcGFja2V0cywgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+Yml0cmF0ZV9icHMo
KSwKLSAgICAgICAgICBjbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOworICAgICAgICAgIHBh
Y2tldHMsIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGUoKSwKKyAgICAg
ICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8tPkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVk
Qml0cmF0ZSgpLAorICAgICAgICAgIFRpbWVzdGFtcDo6bXMoY2xvY2tfLlRpbWVJbk1pbGxpc2Vj
b25kcygpKSk7CiAgIGNvbnN0IHVpbnQzMl90IGtEdW1teVNzcmMgPSAwOwogICBpZiAocmVzdWx0
LnVwZGF0ZWQpIHsKICAgICBiaXRyYXRlX29ic2VydmVyXy5PblJlY2VpdmVCaXRyYXRlQ2hhbmdl
ZCh7a0R1bW15U3NyY30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlX2Jwcyk7Ci0gICAgaWYgKCFmaXJzdF91cGRhdGVf
ICYmIHJlc3VsdC50YXJnZXRfYml0cmF0ZV9icHMgPCBiaXRyYXRlX2JwcykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudGFyZ2V0X2JpdHJhdGUu
YnBzKCkpOworICAgIGlmICghZmlyc3RfdXBkYXRlXyAmJiByZXN1bHQudGFyZ2V0X2JpdHJhdGUu
YnBzKCkgPCBiaXRyYXRlX2JwcykKICAgICAgIG92ZXJ1c2UgPSB0cnVlOwogICAgIGZpcnN0X3Vw
ZGF0ZV8gPSBmYWxzZTsKICAgfQpAQCAtMjg5LDE0ICszMDEsMTQgQEAgdm9pZCBEZWxheUJhc2Vk
QndlVGVzdDo6SW5pdGlhbEJlaGF2aW9yVGVzdEhlbHBlcigKICAgY29uc3QgaW50IGtGcmFtZXJh
dGUgPSA1MDsgIC8vIDUwIGZwcyB0byBhdm9pZCByb3VuZGluZyBlcnJvcnMuCiAgIGNvbnN0IGlu
dCBrRnJhbWVJbnRlcnZhbE1zID0gMTAwMCAvIGtGcmFtZXJhdGU7CiAgIGNvbnN0IFBhY2VkUGFj
a2V0SW5mbyBrUGFjaW5nSW5mbygwLCA1LCA1MDAwKTsKLSAgdWludDMyX3QgYml0cmF0ZV9icHMg
PSAwOworICBEYXRhUmF0ZSBiaXRyYXRlID0gRGF0YVJhdGU6Olplcm8oKTsKICAgaW50NjRfdCBz
ZW5kX3RpbWVfbXMgPSAwOwogICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIgPSAwOwogICBzdGQ6
OnZlY3Rvcjx1aW50MzJfdD4gc3NyY3M7Ci0gIEVYUEVDVF9GQUxTRShiaXRyYXRlX2VzdGltYXRv
cl8tPkxhdGVzdEVzdGltYXRlKCZzc3JjcywgJmJpdHJhdGVfYnBzKSk7CisgIEVYUEVDVF9GQUxT
RShiaXRyYXRlX2VzdGltYXRvcl8tPkxhdGVzdEVzdGltYXRlKCZzc3JjcywgJmJpdHJhdGUpKTsK
ICAgRVhQRUNUX0VRKDB1LCBzc3Jjcy5zaXplKCkpOwogICBjbG9ja18uQWR2YW5jZVRpbWVNaWxs
aXNlY29uZHMoMTAwMCk7Ci0gIEVYUEVDVF9GQUxTRShiaXRyYXRlX2VzdGltYXRvcl8tPkxhdGVz
dEVzdGltYXRlKCZzc3JjcywgJmJpdHJhdGVfYnBzKSk7CisgIEVYUEVDVF9GQUxTRShiaXRyYXRl
X2VzdGltYXRvcl8tPkxhdGVzdEVzdGltYXRlKCZzc3JjcywgJmJpdHJhdGUpKTsKICAgRVhQRUNU
X0ZBTFNFKGJpdHJhdGVfb2JzZXJ2ZXJfLnVwZGF0ZWQoKSk7CiAgIGJpdHJhdGVfb2JzZXJ2ZXJf
LlJlc2V0KCk7CiAgIGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKQEAgLTMw
OCw3ICszMjAsNyBAQCB2b2lkIERlbGF5QmFzZWRCd2VUZXN0OjpJbml0aWFsQmVoYXZpb3JUZXN0
SGVscGVyKAogICAgICAgICBpIDwga0luaXRpYWxQcm9iaW5nUGFja2V0cyA/IGtQYWNpbmdJbmZv
IDogUGFjZWRQYWNrZXRJbmZvKCk7CiAKICAgICBpZiAoaSA9PSBrTnVtSW5pdGlhbFBhY2tldHMp
IHsKLSAgICAgIEVYUEVDVF9GQUxTRShiaXRyYXRlX2VzdGltYXRvcl8tPkxhdGVzdEVzdGltYXRl
KCZzc3JjcywgJmJpdHJhdGVfYnBzKSk7CisgICAgICBFWFBFQ1RfRkFMU0UoYml0cmF0ZV9lc3Rp
bWF0b3JfLT5MYXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlKSk7CiAgICAgICBFWFBFQ1Rf
RVEoMHUsIHNzcmNzLnNpemUoKSk7CiAgICAgICBFWFBFQ1RfRkFMU0UoYml0cmF0ZV9vYnNlcnZl
cl8udXBkYXRlZCgpKTsKICAgICAgIGJpdHJhdGVfb2JzZXJ2ZXJfLlJlc2V0KCk7CkBAIC0zMTgs
MTMgKzMzMCwxNCBAQCB2b2lkIERlbGF5QmFzZWRCd2VUZXN0OjpJbml0aWFsQmVoYXZpb3JUZXN0
SGVscGVyKAogICAgIGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwIC8ga0ZyYW1l
cmF0ZSk7CiAgICAgc2VuZF90aW1lX21zICs9IGtGcmFtZUludGVydmFsTXM7CiAgIH0KLSAgRVhQ
RUNUX1RSVUUoYml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRy
YXRlX2JwcykpOworICBFWFBFQ1RfVFJVRShiaXRyYXRlX2VzdGltYXRvcl8tPkxhdGVzdEVzdGlt
YXRlKCZzc3JjcywgJmJpdHJhdGUpKTsKICAgQVNTRVJUX0VRKDF1LCBzc3Jjcy5zaXplKCkpOwog
ICBFWFBFQ1RfRVEoa0RlZmF1bHRTc3JjLCBzc3Jjcy5mcm9udCgpKTsKLSAgRVhQRUNUX05FQVIo
ZXhwZWN0ZWRfY29udmVyZ2VfYml0cmF0ZSwgYml0cmF0ZV9icHMsIGtBY2NlcHRlZEJpdHJhdGVF
cnJvckJwcyk7CisgIEVYUEVDVF9ORUFSKGV4cGVjdGVkX2NvbnZlcmdlX2JpdHJhdGUsIGJpdHJh
dGUuYnBzKCksCisgICAgICAgICAgICAgIGtBY2NlcHRlZEJpdHJhdGVFcnJvckJwcyk7CiAgIEVY
UEVDVF9UUlVFKGJpdHJhdGVfb2JzZXJ2ZXJfLnVwZGF0ZWQoKSk7CiAgIGJpdHJhdGVfb2JzZXJ2
ZXJfLlJlc2V0KCk7Ci0gIEVYUEVDVF9FUShiaXRyYXRlX29ic2VydmVyXy5sYXRlc3RfYml0cmF0
ZSgpLCBiaXRyYXRlX2Jwcyk7CisgIEVYUEVDVF9FUShiaXRyYXRlX29ic2VydmVyXy5sYXRlc3Rf
Yml0cmF0ZSgpLCBiaXRyYXRlLmJwcygpKTsKIH0KIAogdm9pZCBEZWxheUJhc2VkQndlVGVzdDo6
UmF0ZUluY3JlYXNlUmVvcmRlcmluZ1Rlc3RIZWxwZXIoCkBAIC01MDksNyArNTIyLDcgQEAgdm9p
ZCBEZWxheUJhc2VkQndlVGVzdDo6VGVzdFdyYXBwaW5nSGVscGVyKGludCBzaWxlbmNlX3RpbWVf
cykgewogICAgIGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrRnJhbWVJbnRlcnZhbE1z
KTsKICAgICBzZW5kX3RpbWVfbXMgKz0ga0ZyYW1lSW50ZXJ2YWxNczsKICAgfQotICB1aW50MzJf
dCBiaXRyYXRlX2JlZm9yZSA9IDA7CisgIERhdGFSYXRlIGJpdHJhdGVfYmVmb3JlID0gRGF0YVJh
dGU6Olplcm8oKTsKICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHNzcmNzOwogICBiaXRyYXRlX2Vz
dGltYXRvcl8tPkxhdGVzdEVzdGltYXRlKCZzc3JjcywgJmJpdHJhdGVfYmVmb3JlKTsKIApAQCAt
NTIyLDcgKzUzNSw3IEBAIHZvaWQgRGVsYXlCYXNlZEJ3ZVRlc3Q6OlRlc3RXcmFwcGluZ0hlbHBl
cihpbnQgc2lsZW5jZV90aW1lX3MpIHsKICAgICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29u
ZHMoMiAqIGtGcmFtZUludGVydmFsTXMpOwogICAgIHNlbmRfdGltZV9tcyArPSBrRnJhbWVJbnRl
cnZhbE1zOwogICB9Ci0gIHVpbnQzMl90IGJpdHJhdGVfYWZ0ZXIgPSAwOworICBEYXRhUmF0ZSBi
aXRyYXRlX2FmdGVyID0gRGF0YVJhdGU6Olplcm8oKTsKICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5M
YXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlX2FmdGVyKTsKICAgRVhQRUNUX0xUKGJpdHJh
dGVfYWZ0ZXIsIGJpdHJhdGVfYmVmb3JlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlX3VuaXR0ZXN0X2hlbHBlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmgKaW5kZXggN2JhMThj
MzY3NTI3YmI3MjYzNTRlNGM3NDEyNDQzZTRlZDQwNjZiMS4uNDQ0ZTBjZDY3ZGY0ZmI0Njg1ZTMz
OWZjNTMyOGE1MWYyODU4NTE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9k
ZWxheV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy9kZWxheV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmgKQEAgLTE3Miw2ICsxNzIsNyBA
QCBjbGFzcyBEZWxheUJhc2VkQndlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICBT
aW11bGF0ZWRDbG9jayBjbG9ja187ICAvLyBUaW1lIGF0IHRoZSByZWNlaXZlci4KICAgdGVzdDo6
VGVzdEJpdHJhdGVPYnNlcnZlciBiaXRyYXRlX29ic2VydmVyXzsKICAgc3RkOjp1bmlxdWVfcHRy
PEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I+IGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGlt
YXRvcl87CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQcm9iZUJpdHJhdGVFc3RpbWF0b3I+IHBy
b2JlX2JpdHJhdGVfZXN0aW1hdG9yXzsKICAgc3RkOjp1bmlxdWVfcHRyPERlbGF5QmFzZWRCd2U+
IGJpdHJhdGVfZXN0aW1hdG9yXzsKICAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OlN0cmVhbUdlbmVy
YXRvcj4gc3RyZWFtX2dlbmVyYXRvcl87CiAgIGludDY0X3QgYXJyaXZhbF90aW1lX29mZnNldF9t
c187CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfZmFjdG9yeS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19mYWN0b3J5LmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyZTBjY2MxN2NhNGIzYTNiODE4NmJmZTYzYTE2ZTk2YWQ1MTlh
ZDE2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19mYWN0b3J5LmNjCisrKyAvZGV2L251bGwKQEAgLTEs
NDMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2luY2x1ZGUvZ29vZ19jY19mYWN0b3J5LmgiCi0K
LSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sLmgiCi1uYW1l
c3BhY2Ugd2VicnRjIHsKLUdvb2dDY05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6R29vZ0NjTmV0
d29ya0NvbnRyb2xsZXJGYWN0b3J5KAotICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2cpCi0gICAg
OiBldmVudF9sb2dfKGV2ZW50X2xvZykge30KLQotc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250
cm9sbGVySW50ZXJmYWNlPgotR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpDcmVhdGUo
TmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSB7Ci0gIHJldHVybiBhYnNsOjptYWtlX3Vu
aXF1ZTxHb29nQ2NOZXR3b3JrQ29udHJvbGxlcj4oZXZlbnRfbG9nXywgY29uZmlnLCBmYWxzZSk7
Ci19Ci0KLVRpbWVEZWx0YSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3Rvcnk6OkdldFByb2Nl
c3NJbnRlcnZhbCgpIGNvbnN0IHsKLSAgY29uc3QgaW50NjRfdCBrVXBkYXRlSW50ZXJ2YWxNcyA9
IDI1OwotICByZXR1cm4gVGltZURlbHRhOjptcyhrVXBkYXRlSW50ZXJ2YWxNcyk7Ci19Ci0KLUdv
b2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpHb29nQ2NGZWVkYmFja05ldHdv
cmtDb250cm9sbGVyRmFjdG9yeSgKLSAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nKQotICAgIDog
ZXZlbnRfbG9nXyhldmVudF9sb2cpIHt9Ci0KLXN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJv
bGxlckludGVyZmFjZT4KLUdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpD
cmVhdGUoTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSB7Ci0gIHJldHVybiBhYnNsOjpt
YWtlX3VuaXF1ZTxHb29nQ2NOZXR3b3JrQ29udHJvbGxlcj4oZXZlbnRfbG9nXywgY29uZmlnLCB0
cnVlKTsKLX0KLQotVGltZURlbHRhIEdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0
b3J5OjpHZXRQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdCB7Ci0gIGNvbnN0IGludDY0X3Qga1VwZGF0
ZUludGVydmFsTXMgPSAyNTsKLSAgcmV0dXJuIFRpbWVEZWx0YTo6bXMoa1VwZGF0ZUludGVydmFs
TXMpOwotfQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dv
b2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuY2MKaW5kZXggNGFiOTY5NGYzN2JjMDM3ZTRj
OTVlMjZhYzQzOWI1ZjJjMTVhMWY2ZC4uNDM3Njk1M2I3Y2MxY2Y0OTM1YzIyYWIyYTg3ZGU5MGVm
YzBlOWUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdv
cmtfY29udHJvbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29y
a19jb250cm9sLmNjCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9h
Y2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5oIgotI2luY2x1ZGUgIm1vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvaW5jbHVkZS9nb29nX2NjX2ZhY3Rvcnku
aCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2Jl
X2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRv
ci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0
ZV9lc3RpbWF0b3IvdGVzdC9id2VfdGVzdF9sb2dnaW5nLmgiCkBAIC0zNiw2ICszNSwxMSBAQCBu
YW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CiAKIGNvbnN0IGNoYXIga0N3bmRFeHBlcmlt
ZW50W10gPSAiV2ViUlRDLUN3bmRFeHBlcmltZW50IjsKKy8vIFdoZW4gQ29uZ2VzdGlvbldpbmRv
d1B1c2hiYWNrIGlzIGVuYWJsZWQsIHRoZSBwYWNlciBpcyBvYmxpdmlvdXMgdG8KKy8vIHRoZSBj
b25nZXN0aW9uIHdpbmRvdy4gVGhlIHJlbGF0aW9uIGJldHdlZW4gb3V0c3RhbmRpbmcgZGF0YSBh
bmQKKy8vIHRoZSBjb25nZXN0aW9uIHdpbmRvdyBhZmZlY3RzIGVuY29kZXIgYWxsb2NhdGlvbnMg
ZGlyZWN0bHkuCitjb25zdCBjaGFyIGtDb25nZXN0aW9uUHVzaGJhY2tFeHBlcmltZW50W10gPSAi
V2ViUlRDLUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFjayI7CisKIGNvbnN0IGludDY0X3Qga0RlZmF1
bHRBY2NlcHRlZFF1ZXVlTXMgPSAyNTA7CiAKIC8vIEZyb20gUlRDUFNlbmRlciB2aWRlbyByZXBv
cnQgaW50ZXJ2YWwuCkBAIC00OCw2ICs1MiwxOCBAQCBjb25zdGV4cHIgVGltZURlbHRhIGtMb3Nz
VXBkYXRlSW50ZXJ2YWwgPSBUaW1lRGVsdGE6Ok1pbGxpczwxMDAwPigpOwogLy8gb3ZlcnNob290
cyBmcm9tIHRoZSBlbmNvZGVyLgogY29uc3QgZmxvYXQga0RlZmF1bHRQYWNlTXVsdGlwbGllciA9
IDIuNWY7CiAKK2Jvb2wgSXNDb25nZXN0aW9uV2luZG93UHVzaGJhY2tFeHBlcmltZW50RW5hYmxl
ZCgpIHsKKyAgcmV0dXJuIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrQ29uZ2VzdGlv
blB1c2hiYWNrRXhwZXJpbWVudCkgJiYKKyAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6Oklz
RW5hYmxlZChrQ3duZEV4cGVyaW1lbnQpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q29uZ2VzdGlv
bldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcj4KK01heWJlSW5pdGFsaXplQ29uZ2VzdGlvbldpbmRv
d1B1c2hiYWNrQ29udHJvbGxlcigpIHsKKyAgcmV0dXJuIElzQ29uZ2VzdGlvbldpbmRvd1B1c2hi
YWNrRXhwZXJpbWVudEVuYWJsZWQoKQorICAgICAgICAgICAgID8gYWJzbDo6bWFrZV91bmlxdWU8
Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcj4oKQorICAgICAgICAgICAgIDogbnVs
bHB0cjsKK30KKwogYm9vbCBDd25kRXhwZXJpbWVudEVuYWJsZWQoKSB7CiAgIHN0ZDo6c3RyaW5n
IGV4cGVyaW1lbnRfc3RyaW5nID0KICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxs
TmFtZShrQ3duZEV4cGVyaW1lbnQpOwpAQCAtOTAsMTMgKzEwNiwxMCBAQCBzdGQ6OnZlY3RvcjxQ
YWNrZXRGZWVkYmFjaz4gUmVjZWl2ZWRQYWNrZXRzRmVlZGJhY2tBc1J0cCgKICAgICBpZiAoZmIu
cmVjZWl2ZV90aW1lLklzRmluaXRlKCkpIHsKICAgICAgIFBhY2tldEZlZWRiYWNrIHBmKGZiLnJl
Y2VpdmVfdGltZS5tcygpLCAwKTsKICAgICAgIHBmLmNyZWF0aW9uX3RpbWVfbXMgPSByZXBvcnQu
ZmVlZGJhY2tfdGltZS5tcygpOwotICAgICAgaWYgKGZiLnNlbnRfcGFja2V0Lmhhc192YWx1ZSgp
KSB7Ci0gICAgICAgIHBmLnBheWxvYWRfc2l6ZSA9IGZiLnNlbnRfcGFja2V0LT5zaXplLmJ5dGVz
KCk7Ci0gICAgICAgIHBmLnBhY2luZ19pbmZvID0gZmIuc2VudF9wYWNrZXQtPnBhY2luZ19pbmZv
OwotICAgICAgICBwZi5zZW5kX3RpbWVfbXMgPSBmYi5zZW50X3BhY2tldC0+c2VuZF90aW1lLm1z
KCk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBwZi5zZW5kX3RpbWVfbXMgPSBQYWNrZXRGZWVk
YmFjazo6a05vU2VuZFRpbWU7Ci0gICAgICB9CisgICAgICBwZi5wYXlsb2FkX3NpemUgPSBmYi5z
ZW50X3BhY2tldC5zaXplLmJ5dGVzKCk7CisgICAgICBwZi5wYWNpbmdfaW5mbyA9IGZiLnNlbnRf
cGFja2V0LnBhY2luZ19pbmZvOworICAgICAgcGYuc2VuZF90aW1lX21zID0gZmIuc2VudF9wYWNr
ZXQuc2VuZF90aW1lLm1zKCk7CisgICAgICBwZi51bmFja25vd2xlZGdlZF9kYXRhID0gZmIuc2Vu
dF9wYWNrZXQucHJpb3JfdW5hY2tlZF9kYXRhLmJ5dGVzKCk7CiAgICAgICBwYWNrZXRfZmVlZGJh
Y2tfdmVjdG9yLnB1c2hfYmFjayhwZik7CiAgICAgfQogICB9CkBAIC0xMTQsMjEgKzEyNywyNyBA
QCBpbnQ2NF90IEdldEJwc09yRGVmYXVsdChjb25zdCBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4m
IHJhdGUsCiAKIH0gIC8vIG5hbWVzcGFjZQogCi0KIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpH
b29nQ2NOZXR3b3JrQ29udHJvbGxlcihSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdvcmtDb250cm9sbGVy
Q29uZmlnIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGZlZWRiYWNrX29ubHkpCiAgICAgOiBldmVudF9sb2dfKGV2ZW50X2xvZyks
CiAgICAgICBwYWNrZXRfZmVlZGJhY2tfb25seV8oZmVlZGJhY2tfb25seSksCisgICAgICBzYWZl
X3Jlc2V0X29uX3JvdXRlX2NoYW5nZV8oIkVuYWJsZWQiKSwKKyAgICAgIHNhZmVfcmVzZXRfYWNr
bm93bGVkZ2VkX3JhdGVfKCJhY2siKSwKKyAgICAgIHVzZV9zdGFibGVfYmFuZHdpZHRoX2VzdGlt
YXRlXygKKyAgICAgICAgICBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQndlLVN0YWJs
ZUJhbmR3aWR0aEVzdGltYXRlIikpLAogICAgICAgcHJvYmVfY29udHJvbGxlcl8obmV3IFByb2Jl
Q29udHJvbGxlcigpKSwKKyAgICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xs
ZXJfKAorICAgICAgICAgIE1heWJlSW5pdGFsaXplQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29u
dHJvbGxlcigpKSwKICAgICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXygKICAgICAgICAgICBhYnNs
OjptYWtlX3VuaXF1ZTxTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb24+KGV2ZW50X2xvZ18pKSwK
ICAgICAgIGFscl9kZXRlY3Rvcl8oYWJzbDo6bWFrZV91bmlxdWU8QWxyRGV0ZWN0b3I+KCkpLAor
ICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfKG5ldyBQcm9iZUJpdHJhdGVFc3RpbWF0b3Io
ZXZlbnRfbG9nKSksCiAgICAgICBkZWxheV9iYXNlZF9id2VfKG5ldyBEZWxheUJhc2VkQndlKGV2
ZW50X2xvZ18pKSwKICAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8oCiAgICAg
ICAgICAgYWJzbDo6bWFrZV91bmlxdWU8QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcj4oKSks
CiAgICAgICBpbml0aWFsX2NvbmZpZ18oY29uZmlnKSwKLSAgICAgIGxhc3RfYmFuZHdpZHRoXygq
Y29uZmlnLmNvbnN0cmFpbnRzLnN0YXJ0aW5nX3JhdGUpLAorICAgICAgbGFzdF90YXJnZXRfcmF0
ZV8oKmNvbmZpZy5jb25zdHJhaW50cy5zdGFydGluZ19yYXRlKSwKICAgICAgIHBhY2luZ19mYWN0
b3JfKGNvbmZpZy5zdHJlYW1fYmFzZWRfY29uZmlnLnBhY2luZ19mYWN0b3IudmFsdWVfb3IoCiAg
ICAgICAgICAga0RlZmF1bHRQYWNlTXVsdGlwbGllcikpLAogICAgICAgbWluX3BhY2luZ19yYXRl
Xyhjb25maWcuc3RyZWFtX2Jhc2VkX2NvbmZpZy5taW5fcGFjaW5nX3JhdGUudmFsdWVfb3IoCkBA
IC0xMzgsNyArMTU3LDEyIEBAIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpHb29nQ2NOZXR3b3Jr
Q29udHJvbGxlcihSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgICAgbWF4X3RvdGFsX2FsbG9j
YXRlZF9iaXRyYXRlXyhEYXRhUmF0ZTo6WmVybygpKSwKICAgICAgIGluX2N3bmRfZXhwZXJpbWVu
dF8oQ3duZEV4cGVyaW1lbnRFbmFibGVkKCkpLAogICAgICAgYWNjZXB0ZWRfcXVldWVfbXNfKGtE
ZWZhdWx0QWNjZXB0ZWRRdWV1ZU1zKSB7Ci0gIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJh
dGUoY29uZ2VzdGlvbl9jb250cm9sbGVyOjpHZXRNaW5CaXRyYXRlQnBzKCkpOworICBSVENfRENI
RUNLKGNvbmZpZy5jb25zdHJhaW50cy5hdF90aW1lLklzRmluaXRlKCkpOworICBQYXJzZUZpZWxk
VHJpYWwoCisgICAgICB7JnNhZmVfcmVzZXRfb25fcm91dGVfY2hhbmdlXywgJnNhZmVfcmVzZXRf
YWNrbm93bGVkZ2VkX3JhdGVffSwKKyAgICAgIGZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoIldl
YlJUQy1Cd2UtU2FmZVJlc2V0T25Sb3V0ZUNoYW5nZSIpKTsKKworICBkZWxheV9iYXNlZF9id2Vf
LT5TZXRNaW5CaXRyYXRlKGNvbmdlc3Rpb25fY29udHJvbGxlcjo6R2V0TWluQml0cmF0ZSgpKTsK
ICAgaWYgKGluX2N3bmRfZXhwZXJpbWVudF8gJiYKICAgICAgICFSZWFkQ3duZEV4cGVyaW1lbnRQ
YXJhbWV0ZXIoJmFjY2VwdGVkX3F1ZXVlX21zXykpIHsKICAgICBSVENfTE9HKExTX1dBUk5JTkcp
IDw8ICJGYWlsZWQgdG8gcGFyc2UgcGFyYW1ldGVycyBmb3IgQ3duZEV4cGVyaW1lbnQgIgpAQCAt
MTY1LDE2ICsxODksMzkgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgR29vZ0NjTmV0d29ya0NvbnRy
b2xsZXI6Ok9uTmV0d29ya1JvdXRlQ2hhbmdlKAogCiAgIENsYW1wQml0cmF0ZXMoJnN0YXJ0X2Jp
dHJhdGVfYnBzLCAmbWluX2JpdHJhdGVfYnBzLCAmbWF4X2JpdHJhdGVfYnBzKTsKIAotICBiYW5k
d2lkdGhfZXN0aW1hdGlvbl8gPQotICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2VuZFNpZGVCYW5k
d2lkdGhFc3RpbWF0aW9uPihldmVudF9sb2dfKTsKKyAgaWYgKHNhZmVfcmVzZXRfb25fcm91dGVf
Y2hhbmdlXykgeworICAgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBlc3RpbWF0ZWRfYml0cmF0
ZV9icHM7CisgICAgaWYgKHNhZmVfcmVzZXRfYWNrbm93bGVkZ2VkX3JhdGVfKSB7CisgICAgICBl
c3RpbWF0ZWRfYml0cmF0ZV9icHMgPSBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5i
aXRyYXRlX2JwcygpOworICAgICAgaWYgKCFlc3RpbWF0ZWRfYml0cmF0ZV9icHMpCisgICAgICAg
IGVzdGltYXRlZF9iaXRyYXRlX2JwcyA9IGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8t
PlBlZWtCcHMoKTsKKyAgICB9IGVsc2UgeworICAgICAgaW50MzJfdCB0YXJnZXRfYml0cmF0ZV9i
cHM7CisgICAgICB1aW50OF90IGZyYWN0aW9uX2xvc3M7CisgICAgICBpbnQ2NF90IHJ0dF9tczsK
KyAgICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+Q3VycmVudEVzdGltYXRlKCZ0YXJnZXRfYml0
cmF0ZV9icHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
ZnJhY3Rpb25fbG9zcywgJnJ0dF9tcyk7CisgICAgICBlc3RpbWF0ZWRfYml0cmF0ZV9icHMgPSB0
YXJnZXRfYml0cmF0ZV9icHM7CisgICAgfQorICAgIGlmIChlc3RpbWF0ZWRfYml0cmF0ZV9icHMg
JiYgKCFtc2cuY29uc3RyYWludHMuc3RhcnRpbmdfcmF0ZSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVzdGltYXRlZF9iaXRyYXRlX2JwcyA8IHN0YXJ0X2JpdHJhdGVfYnBz
KSkgeworICAgICAgc3RhcnRfYml0cmF0ZV9icHMgPSAqZXN0aW1hdGVkX2JpdHJhdGVfYnBzOwor
ICAgICAgbXNnLmNvbnN0cmFpbnRzLnN0YXJ0aW5nX3JhdGUgPSBEYXRhUmF0ZTo6YnBzKHN0YXJ0
X2JpdHJhdGVfYnBzKTsKKyAgICB9CisgIH0KKworICBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3Rp
bWF0b3JfLnJlc2V0KG5ldyBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yKCkpOworICBwcm9i
ZV9iaXRyYXRlX2VzdGltYXRvcl8ucmVzZXQobmV3IFByb2JlQml0cmF0ZUVzdGltYXRvcihldmVu
dF9sb2dfKSk7CisgIGRlbGF5X2Jhc2VkX2J3ZV8ucmVzZXQobmV3IERlbGF5QmFzZWRCd2UoZXZl
bnRfbG9nXykpOworICBpZiAobXNnLmNvbnN0cmFpbnRzLnN0YXJ0aW5nX3JhdGUpCisgICAgZGVs
YXlfYmFzZWRfYndlXy0+U2V0U3RhcnRCaXRyYXRlKCptc2cuY29uc3RyYWludHMuc3RhcnRpbmdf
cmF0ZSk7CisgIC8vIFRPRE8oc3J0ZSk6IFVzZSBvcmlnaW5hbCB2YWx1ZXMgaW5zdGVhZCBvZiBj
b252ZXJ0ZWQuCisgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJhdGUoRGF0YVJhdGU6OmJw
cyhtaW5fYml0cmF0ZV9icHMpKTsKKyAgYmFuZHdpZHRoX2VzdGltYXRpb25fLT5PblJvdXRlQ2hh
bmdlKCk7CiAgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+U2V0Qml0cmF0ZXMoCiAgICAgICBtc2cu
Y29uc3RyYWludHMuc3RhcnRpbmdfcmF0ZSwgRGF0YVJhdGU6OmJwcyhtaW5fYml0cmF0ZV9icHMp
LAogICAgICAgbXNnLmNvbnN0cmFpbnRzLm1heF9kYXRhX3JhdGUudmFsdWVfb3IoRGF0YVJhdGU6
OkluZmluaXR5KCkpLAogICAgICAgbXNnLmF0X3RpbWUpOwotICBkZWxheV9iYXNlZF9id2VfLnJl
c2V0KG5ldyBEZWxheUJhc2VkQndlKGV2ZW50X2xvZ18pKTsKLSAgYWNrbm93bGVkZ2VkX2JpdHJh
dGVfZXN0aW1hdG9yXy5yZXNldChuZXcgQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcigpKTsK
LSAgZGVsYXlfYmFzZWRfYndlXy0+U2V0U3RhcnRCaXRyYXRlKHN0YXJ0X2JpdHJhdGVfYnBzKTsK
LSAgZGVsYXlfYmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShtaW5fYml0cmF0ZV9icHMpOwogCiAg
IHByb2JlX2NvbnRyb2xsZXJfLT5SZXNldChtc2cuYXRfdGltZS5tcygpKTsKICAgTmV0d29ya0Nv
bnRyb2xVcGRhdGUgdXBkYXRlOwpAQCAtMjM5LDcgKzI4Niw3IEBAIE5ldHdvcmtDb250cm9sVXBk
YXRlIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpPblJvdW5kVHJpcFRpbWVVcGRhdGUoCiAgIGlm
IChwYWNrZXRfZmVlZGJhY2tfb25seV8pCiAgICAgcmV0dXJuIE5ldHdvcmtDb250cm9sVXBkYXRl
KCk7CiAgIGlmIChtc2cuc21vb3RoZWQpIHsKLSAgICBkZWxheV9iYXNlZF9id2VfLT5PblJ0dFVw
ZGF0ZShtc2cucm91bmRfdHJpcF90aW1lLm1zKCkpOworICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPk9u
UnR0VXBkYXRlKG1zZy5yb3VuZF90cmlwX3RpbWUpOwogICB9IGVsc2UgewogICAgIGJhbmR3aWR0
aF9lc3RpbWF0aW9uXy0+VXBkYXRlUnR0KG1zZy5yb3VuZF90cmlwX3RpbWUsIG1zZy5yZWNlaXZl
X3RpbWUpOwogICB9CkBAIC0yNTAsNyArMjk3LDIyIEBAIE5ldHdvcmtDb250cm9sVXBkYXRlIEdv
b2dDY05ldHdvcmtDb250cm9sbGVyOjpPblNlbnRQYWNrZXQoCiAgICAgU2VudFBhY2tldCBzZW50
X3BhY2tldCkgewogICBhbHJfZGV0ZWN0b3JfLT5PbkJ5dGVzU2VudChzZW50X3BhY2tldC5zaXpl
LmJ5dGVzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRfcGFja2V0LnNlbmRf
dGltZS5tcygpKTsKLSAgcmV0dXJuIE5ldHdvcmtDb250cm9sVXBkYXRlKCk7CisgIGlmICghZmly
c3RfcGFja2V0X3NlbnRfKSB7CisgICAgZmlyc3RfcGFja2V0X3NlbnRfID0gdHJ1ZTsKKyAgICAv
LyBJbml0aWFsaXplIGZlZWRiYWNrIHRpbWUgdG8gc2VuZCB0aW1lIHRvIGFsbG93IGVzdGltYXRp
b24gb2YgUlRUIHVudGlsCisgICAgLy8gZmlyc3QgZmVlZGJhY2sgaXMgcmVjZWl2ZWQuCisgICAg
YmFuZHdpZHRoX2VzdGltYXRpb25fLT5VcGRhdGVQcm9wYWdhdGlvblJ0dChzZW50X3BhY2tldC5z
ZW5kX3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUaW1lRGVsdGE6Olplcm8oKSk7CisgIH0KKyAgaWYgKGNvbmdlc3Rpb25fd2luZG93X3B1c2hi
YWNrX2NvbnRyb2xsZXJfKSB7CisgICAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJv
bGxlcl8tPlVwZGF0ZU91dHN0YW5kaW5nRGF0YSgKKyAgICAgICAgc2VudF9wYWNrZXQuZGF0YV9p
bl9mbGlnaHQuYnl0ZXMoKSk7CisgICAgTmV0d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRlOworICAg
IE1heWJlVHJpZ2dlck9uTmV0d29ya0NoYW5nZWQoJnVwZGF0ZSwgc2VudF9wYWNrZXQuc2VuZF90
aW1lKTsKKyAgICByZXR1cm4gdXBkYXRlOworICB9IGVsc2UgeworICAgIHJldHVybiBOZXR3b3Jr
Q29udHJvbFVwZGF0ZSgpOworICB9CiB9CiAKIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dDY05l
dHdvcmtDb250cm9sbGVyOjpPblN0cmVhbXNDb25maWcoCkBAIC0zMTIsOSArMzc0LDkgQEAgR29v
Z0NjTmV0d29ya0NvbnRyb2xsZXI6OlVwZGF0ZUJpdHJhdGVDb25zdHJhaW50cygKICAgICAgIHN0
YXJ0aW5nX3JhdGUsIERhdGFSYXRlOjpicHMobWluX2JpdHJhdGVfYnBzKSwKICAgICAgIGNvbnN0
cmFpbnRzLm1heF9kYXRhX3JhdGUudmFsdWVfb3IoRGF0YVJhdGU6OkluZmluaXR5KCkpLAogICAg
ICAgY29uc3RyYWludHMuYXRfdGltZSk7Ci0gIGlmIChzdGFydF9iaXRyYXRlX2JwcyA+IDApCi0g
ICAgZGVsYXlfYmFzZWRfYndlXy0+U2V0U3RhcnRCaXRyYXRlKHN0YXJ0X2JpdHJhdGVfYnBzKTsK
LSAgZGVsYXlfYmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShtaW5fYml0cmF0ZV9icHMpOworICBp
ZiAoc3RhcnRpbmdfcmF0ZSkKKyAgICBkZWxheV9iYXNlZF9id2VfLT5TZXRTdGFydEJpdHJhdGUo
KnN0YXJ0aW5nX3JhdGUpOworICBkZWxheV9iYXNlZF9id2VfLT5TZXRNaW5CaXRyYXRlKERhdGFS
YXRlOjpicHMobWluX2JpdHJhdGVfYnBzKSk7CiAgIHJldHVybiBwcm9iZXM7CiB9CiAKQEAgLTMz
MSwzOCArMzkzLDYxIEBAIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dDY05ldHdvcmtDb250cm9s
bGVyOjpPblRyYW5zcG9ydExvc3NSZXBvcnQoCiAKIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dD
Y05ldHdvcmtDb250cm9sbGVyOjpPblRyYW5zcG9ydFBhY2tldHNGZWVkYmFjaygKICAgICBUcmFu
c3BvcnRQYWNrZXRzRmVlZGJhY2sgcmVwb3J0KSB7Ci0gIFRpbWVEZWx0YSBmZWVkYmFja19tYXhf
cnR0ID0gVGltZURlbHRhOjpNaW51c0luZmluaXR5KCk7CisgIGlmIChyZXBvcnQucGFja2V0X2Zl
ZWRiYWNrcy5lbXB0eSgpKSB7CisgICAgRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0IHJlc3VsdCA9IGRl
bGF5X2Jhc2VkX2J3ZV8tPk9uRGVsYXllZEZlZWRiYWNrKAorICAgICAgICByZXBvcnQuc2VuZGxl
c3NfYXJyaXZhbF90aW1lcy5iYWNrKCkpOworICAgIE5ldHdvcmtDb250cm9sVXBkYXRlIHVwZGF0
ZTsKKyAgICBpZiAocmVzdWx0LnVwZGF0ZWQpIHsKKyAgICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9u
Xy0+VXBkYXRlRGVsYXlCYXNlZEVzdGltYXRlKHJlcG9ydC5mZWVkYmFja190aW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnRh
cmdldF9iaXRyYXRlKTsKKyAgICAgIE1heWJlVHJpZ2dlck9uTmV0d29ya0NoYW5nZWQoJnVwZGF0
ZSwgcmVwb3J0LmZlZWRiYWNrX3RpbWUpOworICAgIH0KKyAgICByZXR1cm4gdXBkYXRlOworICB9
CisKKyAgaWYgKGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfKSB7CisgICAg
Y29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8tPlVwZGF0ZU91dHN0YW5kaW5n
RGF0YSgKKyAgICAgICAgcmVwb3J0LmRhdGFfaW5fZmxpZ2h0LmJ5dGVzKCkpOworICB9CisgIFRp
bWVEZWx0YSBtYXhfZmVlZGJhY2tfcnR0ID0gVGltZURlbHRhOjpNaW51c0luZmluaXR5KCk7Cisg
IFRpbWVEZWx0YSBtaW5fcHJvcGFnYXRpb25fcnR0ID0gVGltZURlbHRhOjpQbHVzSW5maW5pdHko
KTsKICAgVGltZXN0YW1wIG1heF9yZWN2X3RpbWUgPSBUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHko
KTsKLSAgZm9yIChjb25zdCBhdXRvJiBwYWNrZXRfZmVlZGJhY2sgOiByZXBvcnQuUmVjZWl2ZWRX
aXRoU2VuZEluZm8oKSkgewotICAgIFRpbWVEZWx0YSBydHQgPQotICAgICAgICByZXBvcnQuZmVl
ZGJhY2tfdGltZSAtIHBhY2tldF9mZWVkYmFjay5zZW50X3BhY2tldC0+c2VuZF90aW1lOwotICAg
IC8vIG1heCgpIGlzIHVzZWQgdG8gYWNjb3VudCBmb3IgZmVlZGJhY2sgYmVpbmcgZGVsYXllZCBi
eSB0aGUKLSAgICAvLyByZWNlaXZlci4KLSAgICBmZWVkYmFja19tYXhfcnR0ID0gc3RkOjptYXgo
ZmVlZGJhY2tfbWF4X3J0dCwgcnR0KTsKLSAgICBtYXhfcmVjdl90aW1lID0gc3RkOjptYXgobWF4
X3JlY3ZfdGltZSwgcGFja2V0X2ZlZWRiYWNrLnJlY2VpdmVfdGltZSk7CisKKyAgc3RkOjp2ZWN0
b3I8UGFja2V0UmVzdWx0PiBmZWVkYmFja3MgPSByZXBvcnQuUmVjZWl2ZWRXaXRoU2VuZEluZm8o
KTsKKyAgZm9yIChjb25zdCBhdXRvJiBmZWVkYmFjayA6IGZlZWRiYWNrcykKKyAgICBtYXhfcmVj
dl90aW1lID0gc3RkOjptYXgobWF4X3JlY3ZfdGltZSwgZmVlZGJhY2sucmVjZWl2ZV90aW1lKTsK
KworICBmb3IgKGNvbnN0IGF1dG8mIGZlZWRiYWNrIDogZmVlZGJhY2tzKSB7CisgICAgVGltZURl
bHRhIGZlZWRiYWNrX3J0dCA9CisgICAgICAgIHJlcG9ydC5mZWVkYmFja190aW1lIC0gZmVlZGJh
Y2suc2VudF9wYWNrZXQuc2VuZF90aW1lOworICAgIFRpbWVEZWx0YSBtaW5fcGVuZGluZ190aW1l
ID0gZmVlZGJhY2sucmVjZWl2ZV90aW1lIC0gbWF4X3JlY3ZfdGltZTsKKyAgICBUaW1lRGVsdGEg
cHJvcGFnYXRpb25fcnR0ID0gZmVlZGJhY2tfcnR0IC0gbWluX3BlbmRpbmdfdGltZTsKKyAgICBt
YXhfZmVlZGJhY2tfcnR0ID0gc3RkOjptYXgobWF4X2ZlZWRiYWNrX3J0dCwgZmVlZGJhY2tfcnR0
KTsKKyAgICBtaW5fcHJvcGFnYXRpb25fcnR0ID0gc3RkOjptaW4obWluX3Byb3BhZ2F0aW9uX3J0
dCwgcHJvcGFnYXRpb25fcnR0KTsKICAgfQotICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBtaW5f
ZmVlZGJhY2tfbWF4X3J0dF9tczsKLSAgaWYgKGZlZWRiYWNrX21heF9ydHQuSXNGaW5pdGUoKSkg
ewotICAgIGZlZWRiYWNrX21heF9ydHRzXy5wdXNoX2JhY2soZmVlZGJhY2tfbWF4X3J0dC5tcygp
KTsKKworICBpZiAobWF4X2ZlZWRiYWNrX3J0dC5Jc0Zpbml0ZSgpKSB7CisgICAgZmVlZGJhY2tf
bWF4X3J0dHNfLnB1c2hfYmFjayhtYXhfZmVlZGJhY2tfcnR0Lm1zKCkpOwogICAgIGNvbnN0IHNp
emVfdCBrTWF4RmVlZGJhY2tSdHRXaW5kb3cgPSAzMjsKICAgICBpZiAoZmVlZGJhY2tfbWF4X3J0
dHNfLnNpemUoKSA+IGtNYXhGZWVkYmFja1J0dFdpbmRvdykKICAgICAgIGZlZWRiYWNrX21heF9y
dHRzXy5wb3BfZnJvbnQoKTsKLSAgICBtaW5fZmVlZGJhY2tfbWF4X3J0dF9tcy5lbXBsYWNlKCpz
dGQ6Om1pbl9lbGVtZW50KAotICAgICAgICBmZWVkYmFja19tYXhfcnR0c18uYmVnaW4oKSwgZmVl
ZGJhY2tfbWF4X3J0dHNfLmVuZCgpKSk7CisgICAgLy8gVE9ETyhzcnRlKTogVXNlIHRpbWUgc2lu
Y2UgbGFzdCB1bmFja25vd2xlZGdlZCBwYWNrZXQuCisgICAgYmFuZHdpZHRoX2VzdGltYXRpb25f
LT5VcGRhdGVQcm9wYWdhdGlvblJ0dChyZXBvcnQuZmVlZGJhY2tfdGltZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9wcm9wYWdhdGlvbl9ydHQp
OwogICB9CiAgIGlmIChwYWNrZXRfZmVlZGJhY2tfb25seV8pIHsKICAgICBpZiAoIWZlZWRiYWNr
X21heF9ydHRzXy5lbXB0eSgpKSB7CiAgICAgICBpbnQ2NF90IHN1bV9ydHRfbXMgPSBzdGQ6OmFj
Y3VtdWxhdGUoZmVlZGJhY2tfbWF4X3J0dHNfLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmVlZGJhY2tfbWF4X3J0dHNfLmVuZCgpLCAwKTsKICAg
ICAgIGludDY0X3QgbWVhbl9ydHRfbXMgPSBzdW1fcnR0X21zIC8gZmVlZGJhY2tfbWF4X3J0dHNf
LnNpemUoKTsKLSAgICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPk9uUnR0VXBkYXRlKG1lYW5fcnR0X21z
KTsKKyAgICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPk9uUnR0VXBkYXRlKFRpbWVEZWx0YTo6bXMobWVh
bl9ydHRfbXMpKTsKICAgICB9CiAKICAgICBUaW1lRGVsdGEgZmVlZGJhY2tfbWluX3J0dCA9IFRp
bWVEZWx0YTo6UGx1c0luZmluaXR5KCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBwYWNrZXRfZmVl
ZGJhY2sgOiByZXBvcnQuUmVjZWl2ZWRXaXRoU2VuZEluZm8oKSkgeworICAgIGZvciAoY29uc3Qg
YXV0byYgcGFja2V0X2ZlZWRiYWNrIDogZmVlZGJhY2tzKSB7CiAgICAgICBUaW1lRGVsdGEgcGVu
ZGluZ190aW1lID0gcGFja2V0X2ZlZWRiYWNrLnJlY2VpdmVfdGltZSAtIG1heF9yZWN2X3RpbWU7
CiAgICAgICBUaW1lRGVsdGEgcnR0ID0gcmVwb3J0LmZlZWRiYWNrX3RpbWUgLQotICAgICAgICAg
ICAgICAgICAgICAgIHBhY2tldF9mZWVkYmFjay5zZW50X3BhY2tldC0+c2VuZF90aW1lIC0gcGVu
ZGluZ190aW1lOworICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9mZWVkYmFjay5zZW50X3Bh
Y2tldC5zZW5kX3RpbWUgLSBwZW5kaW5nX3RpbWU7CiAgICAgICAvLyBWYWx1ZSB1c2VkIGZvciBw
cmVkaWN0aW5nIE5BQ0sgcm91bmQgdHJpcCB0aW1lIGluIEZFQyBjb250cm9sbGVyLgogICAgICAg
ZmVlZGJhY2tfbWluX3J0dCA9IHN0ZDo6bWluKHJ0dCwgZmVlZGJhY2tfbWluX3J0dCk7CiAgICAg
fQpAQCAtNDAwLDIyICs0ODUsMzMgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgR29vZ0NjTmV0d29y
a0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKAogICBwcmV2aW91c2x5X2lu
X2FsciA9IGFscl9zdGFydF90aW1lLmhhc192YWx1ZSgpOwogICBhY2tub3dsZWRnZWRfYml0cmF0
ZV9lc3RpbWF0b3JfLT5JbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAogICAgICAgcmVjZWl2
ZWRfZmVlZGJhY2tfdmVjdG9yKTsKLSAgYXV0byBhY2tub3dsZWRnZWRfYml0cmF0ZSA9IGFja25v
d2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGVfYnBzKCk7CisgIGF1dG8gYWNrbm93
bGVkZ2VkX2JpdHJhdGUgPSBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRyYXRl
KCk7CisgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+U2V0QWNrbm93bGVkZ2VkUmF0ZShhY2tub3ds
ZWRnZWRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcG9ydC5mZWVkYmFja190aW1lKTsKKyAgYmFuZHdpZHRoX2VzdGltYXRpb25fLT5JbmNv
bWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKHJlcG9ydCk7CisgIGZvciAoY29uc3QgYXV0byYgZmVl
ZGJhY2sgOiByZWNlaXZlZF9mZWVkYmFja192ZWN0b3IpIHsKKyAgICBpZiAoZmVlZGJhY2sucGFj
aW5nX2luZm8ucHJvYmVfY2x1c3Rlcl9pZCAhPSBQYWNlZFBhY2tldEluZm86OmtOb3RBUHJvYmUp
IHsKKyAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy0+SGFuZGxlUHJvYmVBbmRFc3RpbWF0
ZUJpdHJhdGUoZmVlZGJhY2spOworICAgIH0KKyAgfQorICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0
ZT4gcHJvYmVfYml0cmF0ZSA9CisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8tPkZldGNo
QW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZSgpOworCiAgIERlbGF5QmFzZWRCd2U6OlJlc3Vs
dCByZXN1bHQ7CiAgIHJlc3VsdCA9IGRlbGF5X2Jhc2VkX2J3ZV8tPkluY29taW5nUGFja2V0RmVl
ZGJhY2tWZWN0b3IoCi0gICAgICByZWNlaXZlZF9mZWVkYmFja192ZWN0b3IsIGFja25vd2xlZGdl
ZF9iaXRyYXRlLAotICAgICAgcmVwb3J0LmZlZWRiYWNrX3RpbWUubXMoKSk7CisgICAgICByZWNl
aXZlZF9mZWVkYmFja192ZWN0b3IsIGFja25vd2xlZGdlZF9iaXRyYXRlLCBwcm9iZV9iaXRyYXRl
LAorICAgICAgcmVwb3J0LmZlZWRiYWNrX3RpbWUpOwogCiAgIE5ldHdvcmtDb250cm9sVXBkYXRl
IHVwZGF0ZTsKICAgaWYgKHJlc3VsdC51cGRhdGVkKSB7CiAgICAgaWYgKHJlc3VsdC5wcm9iZSkg
ewotICAgICAgYmFuZHdpZHRoX2VzdGltYXRpb25fLT5TZXRTZW5kQml0cmF0ZSgKLSAgICAgICAg
ICBEYXRhUmF0ZTo6YnBzKHJlc3VsdC50YXJnZXRfYml0cmF0ZV9icHMpLCByZXBvcnQuZmVlZGJh
Y2tfdGltZSk7CisgICAgICBiYW5kd2lkdGhfZXN0aW1hdGlvbl8tPlNldFNlbmRCaXRyYXRlKHJl
c3VsdC50YXJnZXRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwb3J0LmZlZWRiYWNrX3RpbWUpOwogICAgIH0KICAgICAvLyBTaW5jZSBTZXRT
ZW5kQml0cmF0ZSBub3cgcmVzZXRzIHRoZSBkZWxheS1iYXNlZCBlc3RpbWF0ZSwgd2UgaGF2ZSB0
byBjYWxsCiAgICAgLy8gVXBkYXRlRGVsYXlCYXNlZEVzdGltYXRlIGFmdGVyIFNldFNlbmRCaXRy
YXRlLgotICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+VXBkYXRlRGVsYXlCYXNlZEVzdGltYXRl
KAotICAgICAgICByZXBvcnQuZmVlZGJhY2tfdGltZSwgRGF0YVJhdGU6OmJwcyhyZXN1bHQudGFy
Z2V0X2JpdHJhdGVfYnBzKSk7CisgICAgYmFuZHdpZHRoX2VzdGltYXRpb25fLT5VcGRhdGVEZWxh
eUJhc2VkRXN0aW1hdGUocmVwb3J0LmZlZWRiYWNrX3RpbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlKTsK
ICAgICAvLyBVcGRhdGUgdGhlIGVzdGltYXRlIGluIHRoZSBQcm9iZUNvbnRyb2xsZXIsIGluIGNh
c2Ugd2Ugd2FudCB0byBwcm9iZS4KICAgICBNYXliZVRyaWdnZXJPbk5ldHdvcmtDaGFuZ2VkKCZ1
cGRhdGUsIHJlcG9ydC5mZWVkYmFja190aW1lKTsKICAgfQpAQCAtNDI4LDExICs1MjQsMTQgQEAg
TmV0d29ya0NvbnRyb2xVcGRhdGUgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0
UGFja2V0c0ZlZWRiYWNrKAogCiAgIC8vIE5vIHZhbGlkIFJUVCBjb3VsZCBiZSBiZWNhdXNlIHNl
bmQtc2lkZSBCV0UgaXNuJ3QgdXNlZCwgaW4gd2hpY2ggY2FzZQogICAvLyB3ZSBkb24ndCB0cnkg
dG8gbGltaXQgdGhlIG91dHN0YW5kaW5nIHBhY2tldHMuCi0gIGlmIChpbl9jd25kX2V4cGVyaW1l
bnRfICYmIG1pbl9mZWVkYmFja19tYXhfcnR0X21zKSB7CisgIGlmIChpbl9jd25kX2V4cGVyaW1l
bnRfICYmIG1heF9mZWVkYmFja19ydHQuSXNGaW5pdGUoKSkgeworICAgIGludDY0X3QgbWluX2Zl
ZWRiYWNrX21heF9ydHRfbXMgPQorICAgICAgICAqc3RkOjptaW5fZWxlbWVudChmZWVkYmFja19t
YXhfcnR0c18uYmVnaW4oKSwgZmVlZGJhY2tfbWF4X3J0dHNfLmVuZCgpKTsKKwogICAgIGNvbnN0
IERhdGFTaXplIGtNaW5Dd25kID0gRGF0YVNpemU6OmJ5dGVzKDIgKiAxNTAwKTsKICAgICBUaW1l
RGVsdGEgdGltZV93aW5kb3cgPQotICAgICAgICBUaW1lRGVsdGE6Om1zKCptaW5fZmVlZGJhY2tf
bWF4X3J0dF9tcyArIGFjY2VwdGVkX3F1ZXVlX21zXyk7Ci0gICAgRGF0YVNpemUgZGF0YV93aW5k
b3cgPSBsYXN0X2JhbmR3aWR0aF8gKiB0aW1lX3dpbmRvdzsKKyAgICAgICAgVGltZURlbHRhOjpt
cyhtaW5fZmVlZGJhY2tfbWF4X3J0dF9tcyArIGFjY2VwdGVkX3F1ZXVlX21zXyk7CisgICAgRGF0
YVNpemUgZGF0YV93aW5kb3cgPSBsYXN0X3RhcmdldF9yYXRlXyAqIHRpbWVfd2luZG93OwogICAg
IGlmIChjdXJyZW50X2RhdGFfd2luZG93XykgewogICAgICAgZGF0YV93aW5kb3cgPQogICAgICAg
ICAgIHN0ZDo6bWF4KGtNaW5Dd25kLCAoZGF0YV93aW5kb3cgKyBjdXJyZW50X2RhdGFfd2luZG93
Xy52YWx1ZSgpKSAvIDIpOwpAQCAtNDQwLDEwICs1MzksMTMgQEAgTmV0d29ya0NvbnRyb2xVcGRh
dGUgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKAog
ICAgICAgZGF0YV93aW5kb3cgPSBzdGQ6Om1heChrTWluQ3duZCwgZGF0YV93aW5kb3cpOwogICAg
IH0KICAgICBjdXJyZW50X2RhdGFfd2luZG93XyA9IGRhdGFfd2luZG93OwotICAgIFJUQ19MT0co
TFNfSU5GTykgPDwgIkZlZWRiYWNrIHJ0dDogIiA8PCAqbWluX2ZlZWRiYWNrX21heF9ydHRfbXMK
LSAgICAgICAgICAgICAgICAgICAgIDw8ICIgQml0cmF0ZTogIiA8PCBsYXN0X2JhbmR3aWR0aF8u
YnBzKCk7CiAgIH0KLSAgdXBkYXRlLmNvbmdlc3Rpb25fd2luZG93ID0gY3VycmVudF9kYXRhX3dp
bmRvd187CisgIGlmIChjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXyAmJiBj
dXJyZW50X2RhdGFfd2luZG93XykgeworICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2Nv
bnRyb2xsZXJfLT5TZXREYXRhV2luZG93KAorICAgICAgICAqY3VycmVudF9kYXRhX3dpbmRvd18p
OworICB9IGVsc2UgeworICAgIHVwZGF0ZS5jb25nZXN0aW9uX3dpbmRvdyA9IGN1cnJlbnRfZGF0
YV93aW5kb3dfOworICB9CiAKICAgcmV0dXJuIHVwZGF0ZTsKIH0KQEAgLTQ2MCw3ICs1NjIsNyBA
QCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6R2V0TmV0d29y
a1N0YXRlKAogICAgICAgbGFzdF9lc3RpbWF0ZWRfZnJhY3Rpb25fbG9zc18gLyAyNTUuMDsKICAg
dXBkYXRlLnRhcmdldF9yYXRlLT5uZXR3b3JrX2VzdGltYXRlLnJvdW5kX3RyaXBfdGltZSA9IHJ0
dDsKICAgdXBkYXRlLnRhcmdldF9yYXRlLT5uZXR3b3JrX2VzdGltYXRlLmJ3ZV9wZXJpb2QgPQot
ICAgICAgVGltZURlbHRhOjptcyhkZWxheV9iYXNlZF9id2VfLT5HZXRFeHBlY3RlZEJ3ZVBlcmlv
ZE1zKCkpOworICAgICAgZGVsYXlfYmFzZWRfYndlXy0+R2V0RXhwZWN0ZWRCd2VQZXJpb2QoKTsK
ICAgdXBkYXRlLnRhcmdldF9yYXRlLT5hdF90aW1lID0gYXRfdGltZTsKICAgdXBkYXRlLnRhcmdl
dF9yYXRlLT50YXJnZXRfcmF0ZSA9IGJhbmR3aWR0aDsKICAgdXBkYXRlLnBhY2VyX2NvbmZpZyA9
IEdldFBhY2luZ1JhdGVzKGF0X3RpbWUpOwpAQCAtNDk2LDI3ICs1OTgsMzggQEAgdm9pZCBHb29n
Q2NOZXR3b3JrQ29udHJvbGxlcjo6TWF5YmVUcmlnZ2VyT25OZXR3b3JrQ2hhbmdlZCgKIAogICAg
IGFscl9kZXRlY3Rvcl8tPlNldEVzdGltYXRlZEJpdHJhdGUoZXN0aW1hdGVkX2JpdHJhdGVfYnBz
KTsKIAotICAgIERhdGFSYXRlIGJhbmR3aWR0aCA9IERhdGFSYXRlOjpicHMoZXN0aW1hdGVkX2Jp
dHJhdGVfYnBzKTsKLSAgICBsYXN0X2JhbmR3aWR0aF8gPSBiYW5kd2lkdGg7CisgICAgbGFzdF90
YXJnZXRfcmF0ZV8gPSBEYXRhUmF0ZTo6YnBzKGVzdGltYXRlZF9iaXRyYXRlX2Jwcyk7CisgICAg
RGF0YVJhdGUgYmFuZHdpZHRoID0gdXNlX3N0YWJsZV9iYW5kd2lkdGhfZXN0aW1hdGVfCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID8gYmFuZHdpZHRoX2VzdGltYXRpb25fLT5HZXRFc3Rp
bWF0ZWRMaW5rQ2FwYWNpdHkoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhc3Rf
dGFyZ2V0X3JhdGVfOwogCi0gICAgVGltZURlbHRhIGJ3ZV9wZXJpb2QgPQotICAgICAgICBUaW1l
RGVsdGE6Om1zKGRlbGF5X2Jhc2VkX2J3ZV8tPkdldEV4cGVjdGVkQndlUGVyaW9kTXMoKSk7Cisg
ICAgVGltZURlbHRhIGJ3ZV9wZXJpb2QgPSBkZWxheV9iYXNlZF9id2VfLT5HZXRFeHBlY3RlZEJ3
ZVBlcmlvZCgpOwogCi0gICAgVGFyZ2V0VHJhbnNmZXJSYXRlIHRhcmdldF9yYXRlOwotICAgIHRh
cmdldF9yYXRlLmF0X3RpbWUgPSBhdF90aW1lOwogICAgIC8vIFNldCB0aGUgdGFyZ2V0IHJhdGUg
dG8gdGhlIGZ1bGwgZXN0aW1hdGVkIGJhbmR3aWR0aCBzaW5jZSB0aGUgZXN0aW1hdGlvbgogICAg
IC8vIGZvciBsZWdhY3kgcmVhc29ucyBpbmNsdWRlcyB0YXJnZXQgcmF0ZSBjb25zdHJhaW50cy4K
LSAgICB0YXJnZXRfcmF0ZS50YXJnZXRfcmF0ZSA9IGJhbmR3aWR0aDsKKyAgICBEYXRhUmF0ZSB0
YXJnZXRfcmF0ZSA9IGxhc3RfdGFyZ2V0X3JhdGVfOworICAgIGlmIChjb25nZXN0aW9uX3dpbmRv
d19wdXNoYmFja19jb250cm9sbGVyXykgeworICAgICAgaW50NjRfdCBwdXNoYmFja19yYXRlID0K
KyAgICAgICAgICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXy0+VXBkYXRl
VGFyZ2V0Qml0cmF0ZSgKKyAgICAgICAgICAgICAgdGFyZ2V0X3JhdGUuYnBzKCkpOworICAgICAg
cHVzaGJhY2tfcmF0ZSA9IHN0ZDo6bWF4PGludDY0X3Q+KGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+
R2V0TWluQml0cmF0ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2hiYWNrX3JhdGUpOworICAgICAgdGFyZ2V0X3JhdGUgPSBEYXRhUmF0ZTo6YnBzKHB1c2hi
YWNrX3JhdGUpOworICAgIH0KKworICAgIFRhcmdldFRyYW5zZmVyUmF0ZSB0YXJnZXRfcmF0ZV9t
c2c7CisgICAgdGFyZ2V0X3JhdGVfbXNnLmF0X3RpbWUgPSBhdF90aW1lOworICAgIHRhcmdldF9y
YXRlX21zZy50YXJnZXRfcmF0ZSA9IHRhcmdldF9yYXRlOworICAgIHRhcmdldF9yYXRlX21zZy5u
ZXR3b3JrX2VzdGltYXRlLmF0X3RpbWUgPSBhdF90aW1lOworICAgIHRhcmdldF9yYXRlX21zZy5u
ZXR3b3JrX2VzdGltYXRlLnJvdW5kX3RyaXBfdGltZSA9IFRpbWVEZWx0YTo6bXMocnR0X21zKTsK
KyAgICB0YXJnZXRfcmF0ZV9tc2cubmV0d29ya19lc3RpbWF0ZS5iYW5kd2lkdGggPSBiYW5kd2lk
dGg7CisgICAgdGFyZ2V0X3JhdGVfbXNnLm5ldHdvcmtfZXN0aW1hdGUubG9zc19yYXRlX3JhdGlv
ID0gZnJhY3Rpb25fbG9zcyAvIDI1NS4wZjsKKyAgICB0YXJnZXRfcmF0ZV9tc2cubmV0d29ya19l
c3RpbWF0ZS5id2VfcGVyaW9kID0gYndlX3BlcmlvZDsKIAotICAgIHRhcmdldF9yYXRlLm5ldHdv
cmtfZXN0aW1hdGUuYXRfdGltZSA9IGF0X3RpbWU7Ci0gICAgdGFyZ2V0X3JhdGUubmV0d29ya19l
c3RpbWF0ZS5yb3VuZF90cmlwX3RpbWUgPSBUaW1lRGVsdGE6Om1zKHJ0dF9tcyk7Ci0gICAgdGFy
Z2V0X3JhdGUubmV0d29ya19lc3RpbWF0ZS5iYW5kd2lkdGggPSBiYW5kd2lkdGg7Ci0gICAgdGFy
Z2V0X3JhdGUubmV0d29ya19lc3RpbWF0ZS5sb3NzX3JhdGVfcmF0aW8gPSBmcmFjdGlvbl9sb3Nz
IC8gMjU1LjBmOwotICAgIHRhcmdldF9yYXRlLm5ldHdvcmtfZXN0aW1hdGUuYndlX3BlcmlvZCA9
IGJ3ZV9wZXJpb2Q7Ci0gICAgdXBkYXRlLT50YXJnZXRfcmF0ZSA9IHRhcmdldF9yYXRlOworICAg
IHVwZGF0ZS0+dGFyZ2V0X3JhdGUgPSB0YXJnZXRfcmF0ZV9tc2c7CiAKLSAgICBhdXRvIHByb2Jl
cyA9Ci0gICAgICAgIHByb2JlX2NvbnRyb2xsZXJfLT5TZXRFc3RpbWF0ZWRCaXRyYXRlKGJhbmR3
aWR0aC5icHMoKSwgYXRfdGltZS5tcygpKTsKKyAgICBhdXRvIHByb2JlcyA9IHByb2JlX2NvbnRy
b2xsZXJfLT5TZXRFc3RpbWF0ZWRCaXRyYXRlKAorICAgICAgICBsYXN0X3RhcmdldF9yYXRlXy5i
cHMoKSwgYXRfdGltZS5tcygpKTsKICAgICB1cGRhdGUtPnByb2JlX2NsdXN0ZXJfY29uZmlncy5p
bnNlcnQodXBkYXRlLT5wcm9iZV9jbHVzdGVyX2NvbmZpZ3MuZW5kKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Jlcy5iZWdpbigpLCBwcm9iZXMuZW5kKCkp
OwogICAgIHVwZGF0ZS0+cGFjZXJfY29uZmlnID0gR2V0UGFjaW5nUmF0ZXMoYXRfdGltZSk7CkBA
IC01MjUsOCArNjM4LDggQEAgdm9pZCBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6TWF5YmVUcmln
Z2VyT25OZXR3b3JrQ2hhbmdlZCgKIAogUGFjZXJDb25maWcgR29vZ0NjTmV0d29ya0NvbnRyb2xs
ZXI6OkdldFBhY2luZ1JhdGVzKFRpbWVzdGFtcCBhdF90aW1lKSBjb25zdCB7CiAgIERhdGFSYXRl
IHBhY2luZ19yYXRlID0KLSAgICAgIHN0ZDo6bWF4KG1pbl9wYWNpbmdfcmF0ZV8sIGxhc3RfYmFu
ZHdpZHRoXykgKiBwYWNpbmdfZmFjdG9yXzsKLSAgRGF0YVJhdGUgcGFkZGluZ19yYXRlID0gc3Rk
OjptaW4obWF4X3BhZGRpbmdfcmF0ZV8sIGxhc3RfYmFuZHdpZHRoXyk7CisgICAgICBzdGQ6Om1h
eChtaW5fcGFjaW5nX3JhdGVfLCBsYXN0X3RhcmdldF9yYXRlXykgKiBwYWNpbmdfZmFjdG9yXzsK
KyAgRGF0YVJhdGUgcGFkZGluZ19yYXRlID0gc3RkOjptaW4obWF4X3BhZGRpbmdfcmF0ZV8sIGxh
c3RfdGFyZ2V0X3JhdGVfKTsKICAgUGFjZXJDb25maWcgbXNnOwogICBtc2cuYXRfdGltZSA9IGF0
X3RpbWU7CiAgIG1zZy50aW1lX3dpbmRvdyA9IFRpbWVEZWx0YTo6c2Vjb25kcygxKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaAppbmRleCBm
N2VmZGEzOTYyNzdlNGU2MzNjM2RhMWY4MDUwOWVjYWM5YmU5ZjQ3Li5hNjJmNTliYjQ0YmMwZTBl
NWMzYjhhMTJhYjI0NGUwNTA5OGI0OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAi
bW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9u
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tu
b3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tf
Y29udHJvbGxlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dv
b2dfY2MvZGVsYXlfYmFzZWRfYndlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9jb250cm9sbGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgpAQCAtNjMsMjQgKzY0LDMxIEBAIGNsYXNzIEdvb2dDY05ldHdv
cmtDb250cm9sbGVyIDogcHVibGljIE5ldHdvcmtDb250cm9sbGVySW50ZXJmYWNlIHsKIAogICBS
dGNFdmVudExvZyogY29uc3QgZXZlbnRfbG9nXzsKICAgY29uc3QgYm9vbCBwYWNrZXRfZmVlZGJh
Y2tfb25seV87CisgIEZpZWxkVHJpYWxGbGFnIHNhZmVfcmVzZXRfb25fcm91dGVfY2hhbmdlXzsK
KyAgRmllbGRUcmlhbEZsYWcgc2FmZV9yZXNldF9hY2tub3dsZWRnZWRfcmF0ZV87CisgIGNvbnN0
IGJvb2wgdXNlX3N0YWJsZV9iYW5kd2lkdGhfZXN0aW1hdGVfOwogCiAgIGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjxQcm9iZUNvbnRyb2xsZXI+IHByb2JlX2NvbnRyb2xsZXJfOworICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcj4KKyAgICAgIGNv
bmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfOwogCiAgIHN0ZDo6dW5pcXVlX3B0
cjxTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb24+IGJhbmR3aWR0aF9lc3RpbWF0aW9uXzsKICAg
c3RkOjp1bmlxdWVfcHRyPEFsckRldGVjdG9yPiBhbHJfZGV0ZWN0b3JfOworICBzdGQ6OnVuaXF1
ZV9wdHI8UHJvYmVCaXRyYXRlRXN0aW1hdG9yPiBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl87CiAg
IHN0ZDo6dW5pcXVlX3B0cjxEZWxheUJhc2VkQndlPiBkZWxheV9iYXNlZF9id2VfOwogICBzdGQ6
OnVuaXF1ZV9wdHI8QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcj4gYWNrbm93bGVkZ2VkX2Jp
dHJhdGVfZXN0aW1hdG9yXzsKIAogICBhYnNsOjpvcHRpb25hbDxOZXR3b3JrQ29udHJvbGxlckNv
bmZpZz4gaW5pdGlhbF9jb25maWdfOwogCisgIGJvb2wgZmlyc3RfcGFja2V0X3NlbnRfID0gZmFs
c2U7CisKICAgVGltZXN0YW1wIG5leHRfbG9zc191cGRhdGVfID0gVGltZXN0YW1wOjpNaW51c0lu
ZmluaXR5KCk7CiAgIGludCBsb3N0X3BhY2tldHNfc2luY2VfbGFzdF9sb3NzX3VwZGF0ZV8gPSAw
OwogICBpbnQgZXhwZWN0ZWRfcGFja2V0c19zaW5jZV9sYXN0X2xvc3NfdXBkYXRlXyA9IDA7CiAK
ICAgc3RkOjpkZXF1ZTxpbnQ2NF90PiBmZWVkYmFja19tYXhfcnR0c187CiAKLSAgRGF0YVJhdGUg
bGFzdF9iYW5kd2lkdGhfOwotICBhYnNsOjpvcHRpb25hbDxUYXJnZXRUcmFuc2ZlclJhdGU+IGxh
c3RfdGFyZ2V0X3JhdGVfOworICBEYXRhUmF0ZSBsYXN0X3RhcmdldF9yYXRlXzsKIAogICBpbnQz
Ml90IGxhc3RfZXN0aW1hdGVkX2JpdHJhdGVfYnBzXyA9IDA7CiAgIHVpbnQ4X3QgbGFzdF9lc3Rp
bWF0ZWRfZnJhY3Rpb25fbG9zc18gPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbF9zbG93dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfc2xvd3Rlc3QuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2ZhMGQxYzA5NmRkYTNmNmEzNWE2ZjhjNGFhNjBiM2VkNWJjZWNlNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfc2xvd3Rl
c3QuY2MKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVk
ZSAiYXBpL3RyYW5zcG9ydC9nb29nX2NjX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxk
X3RyaWFsLmgiCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInRlc3Qvc2NlbmFy
aW8vc2NlbmFyaW8uaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisK
K1RFU1QoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBNYWludGFpbnNMb3dSYXRlSW5TYWZl
UmVzZXRUcmlhbCkgeworICBjb25zdCBEYXRhUmF0ZSBrTGlua0NhcGFjaXR5ID0gRGF0YVJhdGU6
OmticHMoMjAwKTsKKyAgY29uc3QgRGF0YVJhdGUga1N0YXJ0UmF0ZSA9IERhdGFSYXRlOjprYnBz
KDMwMCk7CisKKyAgU2NvcGVkRmllbGRUcmlhbHMgdHJpYWwoIldlYlJUQy1Cd2UtU2FmZVJlc2V0
T25Sb3V0ZUNoYW5nZS9FbmFibGVkLyIpOworICBTY2VuYXJpbyBzKCJnb29nY2NfdW5pdC9zYWZl
X3Jlc2V0X2xvdyIsIHRydWUpOworICBhdXRvKiBzZW5kX25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlv
bk5vZGUoWyZdKE5ldHdvcmtOb2RlQ29uZmlnKiBjKSB7CisgICAgYy0+c2ltdWxhdGlvbi5iYW5k
d2lkdGggPSBrTGlua0NhcGFjaXR5OworICAgIGMtPnNpbXVsYXRpb24uZGVsYXkgPSBUaW1lRGVs
dGE6Om1zKDEwKTsKKyAgfSk7CisgIC8vIFRPRE8oc3J0ZSk6IHJlcGxhY2Ugd2l0aCBTaW11bGF0
ZWRUaW1lQ2xpZW50IHdoZW4gaXQgc3VwcG9ydHMgcHJvYmluZy4KKyAgYXV0byogY2xpZW50ID0g
cy5DcmVhdGVDbGllbnQoInNlbmQiLCBbJl0oQ2FsbENsaWVudENvbmZpZyogYykgeworICAgIGMt
PnRyYW5zcG9ydC5jYyA9IFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWc6OkNvbmdlc3Rpb25Db250
cm9sbGVyOjprR29vZ0NjOworICAgIGMtPnRyYW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlID0ga1N0
YXJ0UmF0ZTsKKyAgfSk7CisgIGF1dG8qIHJvdXRlID0gcy5DcmVhdGVSb3V0ZXMoY2xpZW50LCB7
c2VuZF9uZXR9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuQ3JlYXRlQ2xpZW50
KCJyZXR1cm4iLCBDYWxsQ2xpZW50Q29uZmlnKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHtzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKE5ldHdvcmtOb2RlQ29uZmlnKCkpfSk7Cisg
IHMuQ3JlYXRlVmlkZW9TdHJlYW0ocm91dGUtPmZvcndhcmQoKSwgVmlkZW9TdHJlYW1Db25maWco
KSk7CisgIC8vIFRyaWdnZXIgcmVyb3V0ZSBtZXNzYWdlLCBidXQga2VlcCB0cmFuc3BvcnQgdW5j
aGFuZ2VkLgorICBzLkNoYW5nZVJvdXRlKHJvdXRlLT5mb3J3YXJkKCksIHtzZW5kX25ldH0pOwor
CisgIC8vIEFsbG93IHRoZSBjb250cm9sbGVyIHRvIHN0YWJpbGl6ZS4KKyAgcy5SdW5Gb3IoVGlt
ZURlbHRhOjptcyg1MDApKTsKKyAgRVhQRUNUX05FQVIoY2xpZW50LT5zZW5kX2JhbmR3aWR0aCgp
LmticHMoKSwga0xpbmtDYXBhY2l0eS5rYnBzKCksIDUwKTsKKyAgcy5DaGFuZ2VSb3V0ZShyb3V0
ZS0+Zm9yd2FyZCgpLCB7c2VuZF9uZXR9KTsKKyAgLy8gQWxsb3cgbmV3IHNldHRpbmdzIHRvIHBy
b3BhZ2F0ZS4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjptcygxMDApKTsKKyAgLy8gVW5kZXIgdGhl
IHRyaWFsLCB0aGUgdGFyZ2V0IHNob3VsZCBiZSB1bmNoYW5nZWQgZm9yIGxvdyByYXRlcy4KKyAg
RVhQRUNUX05FQVIoY2xpZW50LT5zZW5kX2JhbmR3aWR0aCgpLmticHMoKSwga0xpbmtDYXBhY2l0
eS5rYnBzKCksIDUwKTsKK30KKworVEVTVChHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIEN1
dHNIaWdoUmF0ZUluU2FmZVJlc2V0VHJpYWwpIHsKKyAgY29uc3QgRGF0YVJhdGUga0xpbmtDYXBh
Y2l0eSA9IERhdGFSYXRlOjprYnBzKDEwMDApOworICBjb25zdCBEYXRhUmF0ZSBrU3RhcnRSYXRl
ID0gRGF0YVJhdGU6OmticHMoMzAwKTsKKworICBTY29wZWRGaWVsZFRyaWFscyB0cmlhbCgiV2Vi
UlRDLUJ3ZS1TYWZlUmVzZXRPblJvdXRlQ2hhbmdlL0VuYWJsZWQvIik7CisgIFNjZW5hcmlvIHMo
Imdvb2djY191bml0L3NhZmVfcmVzZXRfaGlnaF9jdXQiLCB0cnVlKTsKKyAgYXV0byBzZW5kX25l
dCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUoWyZdKE5ldHdvcmtOb2RlQ29uZmlnKiBjKSB7Cisg
ICAgYy0+c2ltdWxhdGlvbi5iYW5kd2lkdGggPSBrTGlua0NhcGFjaXR5OworICAgIGMtPnNpbXVs
YXRpb24uZGVsYXkgPSBUaW1lRGVsdGE6Om1zKDUwKTsKKyAgfSk7CisgIC8vIFRPRE8oc3J0ZSk6
IHJlcGxhY2Ugd2l0aCBTaW11bGF0ZWRUaW1lQ2xpZW50IHdoZW4gaXQgc3VwcG9ydHMgcHJvYmlu
Zy4KKyAgYXV0byogY2xpZW50ID0gcy5DcmVhdGVDbGllbnQoInNlbmQiLCBbJl0oQ2FsbENsaWVu
dENvbmZpZyogYykgeworICAgIGMtPnRyYW5zcG9ydC5jYyA9IFRyYW5zcG9ydENvbnRyb2xsZXJD
b25maWc6OkNvbmdlc3Rpb25Db250cm9sbGVyOjprR29vZ0NjOworICAgIGMtPnRyYW5zcG9ydC5y
YXRlcy5zdGFydF9yYXRlID0ga1N0YXJ0UmF0ZTsKKyAgfSk7CisgIGF1dG8qIHJvdXRlID0gcy5D
cmVhdGVSb3V0ZXMoY2xpZW50LCB7c2VuZF9uZXR9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMuQ3JlYXRlQ2xpZW50KCJyZXR1cm4iLCBDYWxsQ2xpZW50Q29uZmlnKCkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKE5ldHdv
cmtOb2RlQ29uZmlnKCkpfSk7CisgIHMuQ3JlYXRlVmlkZW9TdHJlYW0ocm91dGUtPmZvcndhcmQo
KSwgVmlkZW9TdHJlYW1Db25maWcoKSk7CisKKyAgcy5DaGFuZ2VSb3V0ZShyb3V0ZS0+Zm9yd2Fy
ZCgpLCB7c2VuZF9uZXR9KTsKKyAgLy8gQWxsb3cgdGhlIGNvbnRyb2xsZXIgdG8gc3RhYmlsaXpl
LgorICBzLlJ1bkZvcihUaW1lRGVsdGE6Om1zKDUwMCkpOworICBFWFBFQ1RfTkVBUihjbGllbnQt
PnNlbmRfYmFuZHdpZHRoKCkua2JwcygpLCBrTGlua0NhcGFjaXR5LmticHMoKSwgMzAwKTsKKyAg
cy5DaGFuZ2VSb3V0ZShyb3V0ZS0+Zm9yd2FyZCgpLCB7c2VuZF9uZXR9KTsKKyAgLy8gQWxsb3cg
bmV3IHNldHRpbmdzIHRvIHByb3BhZ2F0ZS4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjptcyg1MCkp
OworICAvLyBVbmRlciB0aGUgdHJpYWwsIHRoZSB0YXJnZXQgc2hvdWxkIGJlIHJlc2V0IGZyb20g
aGlnaCB2YWx1ZXMuCisgIEVYUEVDVF9ORUFSKGNsaWVudC0+c2VuZF9iYW5kd2lkdGgoKS5rYnBz
KCksIGtTdGFydFJhdGUua2JwcygpLCAzMCk7Cit9CisKKyNpZmRlZiBXRUJSVENfTElOVVggIC8v
IGJ1Z3Mud2VicnRjLm9yZy8xMDAzNgorI2RlZmluZSBNQVlCRV9EZXRlY3RzSGlnaFJhdGVJblNh
ZmVSZXNldFRyaWFsIFwKKyAgRElTQUJMRURfRGV0ZWN0c0hpZ2hSYXRlSW5TYWZlUmVzZXRUcmlh
bAorI2Vsc2UKKyNkZWZpbmUgTUFZQkVfRGV0ZWN0c0hpZ2hSYXRlSW5TYWZlUmVzZXRUcmlhbCBE
ZXRlY3RzSGlnaFJhdGVJblNhZmVSZXNldFRyaWFsCisjZW5kaWYKK1RFU1QoR29vZ0NjTmV0d29y
a0NvbnRyb2xsZXJUZXN0LCBNQVlCRV9EZXRlY3RzSGlnaFJhdGVJblNhZmVSZXNldFRyaWFsKSB7
CisgIFNjb3BlZEZpZWxkVHJpYWxzIHRyaWFsKCJXZWJSVEMtQndlLVNhZmVSZXNldE9uUm91dGVD
aGFuZ2UvRW5hYmxlZC8iKTsKKyAgY29uc3QgRGF0YVJhdGUga0luaXRpYWxMaW5rQ2FwYWNpdHkg
PSBEYXRhUmF0ZTo6a2JwcygyMDApOworICBjb25zdCBEYXRhUmF0ZSBrTmV3TGlua0NhcGFjaXR5
ID0gRGF0YVJhdGU6OmticHMoODAwKTsKKyAgY29uc3QgRGF0YVJhdGUga1N0YXJ0UmF0ZSA9IERh
dGFSYXRlOjprYnBzKDMwMCk7CisKKyAgU2NlbmFyaW8gcygiZ29vZ2NjX3VuaXQvc2FmZV9yZXNl
dF9oaWdoX2RldGVjdCIsIHRydWUpOworICBhdXRvKiBpbml0aWFsX25ldCA9IHMuQ3JlYXRlU2lt
dWxhdGlvbk5vZGUoWyZdKE5ldHdvcmtOb2RlQ29uZmlnKiBjKSB7CisgICAgYy0+c2ltdWxhdGlv
bi5iYW5kd2lkdGggPSBrSW5pdGlhbExpbmtDYXBhY2l0eTsKKyAgICBjLT5zaW11bGF0aW9uLmRl
bGF5ID0gVGltZURlbHRhOjptcyg1MCk7CisgIH0pOworICBhdXRvKiBuZXdfbmV0ID0gcy5DcmVh
dGVTaW11bGF0aW9uTm9kZShbJl0oTmV0d29ya05vZGVDb25maWcqIGMpIHsKKyAgICBjLT5zaW11
bGF0aW9uLmJhbmR3aWR0aCA9IGtOZXdMaW5rQ2FwYWNpdHk7CisgICAgYy0+c2ltdWxhdGlvbi5k
ZWxheSA9IFRpbWVEZWx0YTo6bXMoNTApOworICB9KTsKKyAgLy8gVE9ETyhzcnRlKTogcmVwbGFj
ZSB3aXRoIFNpbXVsYXRlZFRpbWVDbGllbnQgd2hlbiBpdCBzdXBwb3J0cyBwcm9iaW5nLgorICBh
dXRvKiBjbGllbnQgPSBzLkNyZWF0ZUNsaWVudCgic2VuZCIsIFsmXShDYWxsQ2xpZW50Q29uZmln
KiBjKSB7CisgICAgYy0+dHJhbnNwb3J0LmNjID0gVHJhbnNwb3J0Q29udHJvbGxlckNvbmZpZzo6
Q29uZ2VzdGlvbkNvbnRyb2xsZXI6OmtHb29nQ2M7CisgICAgYy0+dHJhbnNwb3J0LnJhdGVzLnN0
YXJ0X3JhdGUgPSBrU3RhcnRSYXRlOworICB9KTsKKyAgYXV0byogcm91dGUgPSBzLkNyZWF0ZVJv
dXRlcyhjbGllbnQsIHtpbml0aWFsX25ldH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcy5DcmVhdGVDbGllbnQoInJldHVybiIsIENhbGxDbGllbnRDb25maWcoKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAge3MuQ3JlYXRlU2ltdWxhdGlvbk5vZGUoTmV0d29ya05v
ZGVDb25maWcoKSl9KTsKKyAgcy5DcmVhdGVWaWRlb1N0cmVhbShyb3V0ZS0+Zm9yd2FyZCgpLCBW
aWRlb1N0cmVhbUNvbmZpZygpKTsKKyAgcy5DaGFuZ2VSb3V0ZShyb3V0ZS0+Zm9yd2FyZCgpLCB7
aW5pdGlhbF9uZXR9KTsKKworICAvLyBBbGxvdyB0aGUgY29udHJvbGxlciB0byBzdGFiaWxpemUu
CisgIHMuUnVuRm9yKFRpbWVEZWx0YTo6bXMoMTAwMCkpOworICBFWFBFQ1RfTkVBUihjbGllbnQt
PnNlbmRfYmFuZHdpZHRoKCkua2JwcygpLCBrSW5pdGlhbExpbmtDYXBhY2l0eS5rYnBzKCksIDUw
KTsKKyAgcy5DaGFuZ2VSb3V0ZShyb3V0ZS0+Zm9yd2FyZCgpLCB7bmV3X25ldH0pOworICAvLyBB
bGxvdyBuZXcgc2V0dGluZ3MgdG8gcHJvcGFnYXRlLgorICBzLlJ1bkZvcihUaW1lRGVsdGE6Om1z
KDEwMCkpOworICAvLyBVbmRlciB0aGUgZmllbGQgdHJpYWwsIHRoZSB0YXJnZXQgcmF0ZSBzaG91
bGQgYmUgdW5jaGFuZ2VkIHNpbmNlIGl0J3MgbG93ZXIKKyAgLy8gdGhhbiB0aGUgc3RhcnRpbmcg
cmF0ZS4KKyAgRVhQRUNUX05FQVIoY2xpZW50LT5zZW5kX2JhbmR3aWR0aCgpLmticHMoKSwga0lu
aXRpYWxMaW5rQ2FwYWNpdHkua2JwcygpLCA1MCk7CisgIC8vIEhvd2V2ZXIsIHByb2Jpbmcgc2hv
dWxkIGhhdmUgbWFkZSB1cyBkZXRlY3QgdGhlIGhpZ2hlciByYXRlLgorICBzLlJ1bkZvcihUaW1l
RGVsdGE6Om1zKDIwMDApKTsKKyAgRVhQRUNUX05FQVIoY2xpZW50LT5zZW5kX2JhbmR3aWR0aCgp
LmticHMoKSwga05ld0xpbmtDYXBhY2l0eS5rYnBzKCksIDIwMCk7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbF91bml0dGVzdC5jYwppbmRl
eCBlM2YzYWJmMmIxMWViZTExNjRmYzNmZDZjYWVjNDlmOWVmOGM0YzM3Li5mZWNkMWIzMmQ0NjRi
Y2FiMDRhYWYzN2FjYmYwZTQ5YjQwYTEzYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfdW5pdHRlc3QuY2MKQEAgLTgs
MTIgKzgsMTIgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCisjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9nb29n
X2NjX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L3Rlc3QvbmV0d29ya19jb250
cm9sX3Rlc3Rlci5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9tb2NrL21vY2tf
cnRjX2V2ZW50X2xvZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvaW5jbHVkZS9nb29nX2NjX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJ0ZXN0L3NjZW5h
cmlvL3NjZW5hcmlvLmgiCi0KKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVk
ZSAidGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInRlc3Qvc2NlbmFyaW8vc2NlbmFyaW8uaCIKIAog
dXNpbmcgdGVzdGluZzo6RmllbGQ7CiB1c2luZyB0ZXN0aW5nOjpNYXRjaGVyOwpAQCAtODQsOSAr
ODQsOSBAQCBjbGFzcyBHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNlZFBhY2tldEluZm8g
cGFjaW5nX2luZm8pIHsKICAgICBQYWNrZXRSZXN1bHQgcGFja2V0X3Jlc3VsdDsKICAgICBwYWNr
ZXRfcmVzdWx0LnNlbnRfcGFja2V0ID0gU2VudFBhY2tldCgpOwotICAgIHBhY2tldF9yZXN1bHQu
c2VudF9wYWNrZXQtPnNlbmRfdGltZSA9IFRpbWVzdGFtcDo6bXMoc2VuZF90aW1lX21zKTsKLSAg
ICBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LT5zaXplID0gRGF0YVNpemU6OmJ5dGVzKHBheWxv
YWRfc2l6ZSk7Ci0gICAgcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC0+cGFjaW5nX2luZm8gPSBw
YWNpbmdfaW5mbzsKKyAgICBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LnNlbmRfdGltZSA9IFRp
bWVzdGFtcDo6bXMoc2VuZF90aW1lX21zKTsKKyAgICBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0
LnNpemUgPSBEYXRhU2l6ZTo6Ynl0ZXMocGF5bG9hZF9zaXplKTsKKyAgICBwYWNrZXRfcmVzdWx0
LnNlbnRfcGFja2V0LnBhY2luZ19pbmZvID0gcGFjaW5nX2luZm87CiAgICAgcGFja2V0X3Jlc3Vs
dC5yZWNlaXZlX3RpbWUgPSBUaW1lc3RhbXA6Om1zKGFycml2YWxfdGltZV9tcyk7CiAgICAgcmV0
dXJuIHBhY2tldF9yZXN1bHQ7CiAgIH0KQEAgLTEyMiw3ICsxMjIsNyBAQCBjbGFzcyBHb29nQ2NO
ZXR3b3JrQ29udHJvbGxlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAg
ICBDcmVhdGVSZXN1bHQoY3VycmVudF90aW1lXy5tcygpICsgZGVsYXlfYnVpbGR1cCwgY3VycmVu
dF90aW1lXy5tcygpLAogICAgICAgICAgICAgICAgICAgICAgICBrUGF5bG9hZFNpemUsIFBhY2Vk
UGFja2V0SW5mbygpKTsKICAgICAgIGRlbGF5X2J1aWxkdXAgKz0gZGVsYXk7Ci0gICAgICBjb250
cm9sbGVyXy0+T25TZW50UGFja2V0KCpwYWNrZXQuc2VudF9wYWNrZXQpOworICAgICAgY29udHJv
bGxlcl8tPk9uU2VudFBhY2tldChwYWNrZXQuc2VudF9wYWNrZXQpOwogICAgICAgVHJhbnNwb3J0
UGFja2V0c0ZlZWRiYWNrIGZlZWRiYWNrOwogICAgICAgZmVlZGJhY2suZmVlZGJhY2tfdGltZSA9
IHBhY2tldC5yZWNlaXZlX3RpbWU7CiAgICAgICBmZWVkYmFjay5wYWNrZXRfZmVlZGJhY2tzLnB1
c2hfYmFjayhwYWNrZXQpOwpAQCAtMjEzLDE2ICsyMTMsMTMgQEAgVEVTVF9GKEdvb2dDY05ldHdv
cmtDb250cm9sbGVyVGVzdCwgTG9uZ0ZlZWRiYWNrRGVsYXlzKSB7CiAgICAgcGFja2V0cy5wdXNo
X2JhY2soCiAgICAgICAgIENyZWF0ZVJlc3VsdChpICogMTAwICsgNDAsIDIgKiBpICogMTAwICsg
NDAsIDE1MDAsIGtQYWNpbmdJbmZvMSkpOwogCisgICAgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNr
IGZlZWRiYWNrOwogICAgIGZvciAoUGFja2V0UmVzdWx0JiBwYWNrZXQgOiBwYWNrZXRzKSB7Ci0g
ICAgICBjb250cm9sbGVyXy0+T25TZW50UGFja2V0KCpwYWNrZXQuc2VudF9wYWNrZXQpOwotICAg
ICAgLy8gU2ltdWxhdGUgcGFja2V0IHRpbWVvdXQKLSAgICAgIHBhY2tldC5zZW50X3BhY2tldCA9
IGFic2w6Om51bGxvcHQ7CisgICAgICBjb250cm9sbGVyXy0+T25TZW50UGFja2V0KHBhY2tldC5z
ZW50X3BhY2tldCk7CisgICAgICBmZWVkYmFjay5zZW5kbGVzc19hcnJpdmFsX3RpbWVzLnB1c2hf
YmFjayhwYWNrZXQucmVjZWl2ZV90aW1lKTsKICAgICB9CiAKLSAgICBUcmFuc3BvcnRQYWNrZXRz
RmVlZGJhY2sgZmVlZGJhY2s7CiAgICAgZmVlZGJhY2suZmVlZGJhY2tfdGltZSA9IHBhY2tldHNb
MF0ucmVjZWl2ZV90aW1lOwotICAgIGZlZWRiYWNrLnBhY2tldF9mZWVkYmFja3MgPSBwYWNrZXRz
OwotCiAgICAgQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa0ZlZWRiYWNrVGltZW91dE1zKTsKICAg
ICBTZW50UGFja2V0IGxhdGVyX3BhY2tldDsKICAgICBsYXRlcl9wYWNrZXQuc2VuZF90aW1lID0g
VGltZXN0YW1wOjptcyhrRmVlZGJhY2tUaW1lb3V0TXMgKyBpICogMjAwICsgNDApOwpAQCAtMjQ2
LDcgKzI0Myw3IEBAIFRFU1RfRihHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIExvbmdGZWVk
YmFja0RlbGF5cykgewogICAgIHBhY2tldHMucHVzaF9iYWNrKENyZWF0ZVJlc3VsdCgxNDAsIDI0
MCwgMTUwMCwga1BhY2luZ0luZm8xKSk7CiAKICAgICBmb3IgKGNvbnN0IFBhY2tldFJlc3VsdCYg
cGFja2V0IDogcGFja2V0cykKLSAgICAgIGNvbnRyb2xsZXJfLT5PblNlbnRQYWNrZXQoKnBhY2tl
dC5zZW50X3BhY2tldCk7CisgICAgICBjb250cm9sbGVyXy0+T25TZW50UGFja2V0KHBhY2tldC5z
ZW50X3BhY2tldCk7CiAKICAgICBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2sgZmVlZGJhY2s7CiAg
ICAgZmVlZGJhY2suZmVlZGJhY2tfdGltZSA9IHBhY2tldHNbMF0ucmVjZWl2ZV90aW1lOwpAQCAt
MzA4LDggKzMwNSw1MSBAQCBURVNUX0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LAogICAg
ICAgICAgICAgICAyMCk7CiB9CiAKLVRFU1RfRihHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3Qs
IFNjZW5hcmlvUXVpY2tUZXN0KSB7Ci0gIFNjZW5hcmlvIHMoImdvb2djY191bml0L3NjZW5hcmlv
X3F1aWNrIiwgZmFsc2UpOworVEVTVF9GKEdvb2dDY05ldHdvcmtDb250cm9sbGVyVGVzdCwgTGlt
aXRzVG9NaW5SYXRlSWZSdHRJc0hpZ2hJblRyaWFsKSB7CisgIC8vIFRoZSBmaWVsZCB0cmlhbCBs
aW1pdHMgbWF4aW11bSBSVFQgdG8gMiBzZWNvbmRzLCBoaWdoZXIgUlRUIG1lYW5zIHRoYXQgdGhl
CisgIC8vIGNvbnRyb2xsZXIgYmFja3Mgb2ZmIHVudGlsIGl0IHJlYWNoZXMgdGhlIG1pbmltdW0g
Y29uZmlndXJlZCBiaXRyYXRlLiBUaGlzCisgIC8vIGFsbG93cyB0aGUgUlRUIHRvIHJlY292ZXIg
ZmFzdGVyIHRoYW4gdGhlIHJlZ3VsYXIgY29udHJvbCBtZWNoYW5pc20gd291bGQKKyAgLy8gYWNo
aWV2ZS4KKyAgU2NvcGVkRmllbGRUcmlhbHMgdHJpYWwoIldlYlJUQy1Cd2UtTWF4UnR0TGltaXQv
bGltaXQ6MnMvIik7CisgIC8vIEluIHRoZSB0ZXN0IGNhc2UsIHdlIGxpbWl0IHRoZSBjYXBhY2l0
eSBhbmQgYWRkIGEgY3Jvc3MgdHJhZmZpYyBwYWNrZXQKKyAgLy8gYnVyc3QgdGhhdCBibG9ja3Mg
bWVkaWEgZnJvbSBiZWluZyBzZW50LiBUaGlzIGNhdXNlcyB0aGUgUlRUIHRvIHF1aWNrbHkKKyAg
Ly8gaW5jcmVhc2UgYWJvdmUgdGhlIHRocmVzaG9sZCBpbiB0aGUgdHJpYWwuCisgIGNvbnN0IERh
dGFSYXRlIGtMaW5rQ2FwYWNpdHkgPSBEYXRhUmF0ZTo6a2JwcygxMDApOworICBjb25zdCBEYXRh
UmF0ZSBrTWluUmF0ZSA9IERhdGFSYXRlOjprYnBzKDIwKTsKKyAgY29uc3QgVGltZURlbHRhIGtC
dWZmZXJCbG9hdER1cmF0aW9uID0gVGltZURlbHRhOjpzZWNvbmRzKDEwKTsKKyAgU2NlbmFyaW8g
cygiZ29vZ2NjX3VuaXQvbGltaXRfdHJpYWwiLCBmYWxzZSk7CisgIE5ldHdvcmtOb2RlQ29uZmln
IG5ldF9jb25mOworICBhdXRvIHNlbmRfbmV0ID0gcy5DcmVhdGVTaW11bGF0aW9uTm9kZShbPV0o
TmV0d29ya05vZGVDb25maWcqIGMpIHsKKyAgICBjLT5zaW11bGF0aW9uLmJhbmR3aWR0aCA9IGtM
aW5rQ2FwYWNpdHk7CisgICAgYy0+c2ltdWxhdGlvbi5kZWxheSA9IFRpbWVEZWx0YTo6bXMoMTAw
KTsKKyAgICBjLT51cGRhdGVfZnJlcXVlbmN5ID0gVGltZURlbHRhOjptcyg1KTsKKyAgfSk7Cisg
IGF1dG8gcmV0X25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUoW10oTmV0d29ya05vZGVDb25m
aWcqIGMpIHsKKyAgICBjLT5zaW11bGF0aW9uLmRlbGF5ID0gVGltZURlbHRhOjptcygxMDApOwor
ICAgIGMtPnVwZGF0ZV9mcmVxdWVuY3kgPSBUaW1lRGVsdGE6Om1zKDUpOworICB9KTsKKyAgU2lt
dWxhdGVkVGltZUNsaWVudENvbmZpZyBjb25maWc7CisgIGNvbmZpZy50cmFuc3BvcnQuY2MgPQor
ICAgICAgVHJhbnNwb3J0Q29udHJvbGxlckNvbmZpZzo6Q29uZ2VzdGlvbkNvbnRyb2xsZXI6OmtH
b29nQ2M7CisgIGNvbmZpZy50cmFuc3BvcnQucmF0ZXMubWluX3JhdGUgPSBrTWluUmF0ZTsKKyAg
Y29uZmlnLnRyYW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlID0ga0xpbmtDYXBhY2l0eTsKKyAgU2lt
dWxhdGVkVGltZUNsaWVudCogY2xpZW50ID0gcy5DcmVhdGVTaW11bGF0ZWRUaW1lQ2xpZW50KAor
ICAgICAgInNlbmQiLCBjb25maWcsIHtQYWNrZXRTdHJlYW1Db25maWcoKX0sIHtzZW5kX25ldH0s
IHtyZXRfbmV0fSk7CisgIC8vIFJ1biBmb3IgYSBmZXcgc2Vjb25kcyB0byBhbGxvdyB0aGUgY29u
dHJvbGxlciB0byBzdGFiaWxpemUuCisgIHMuUnVuRm9yKFRpbWVEZWx0YTo6c2Vjb25kcygxMCkp
OworICBjb25zdCBEYXRhU2l6ZSBrQmxvYXRQYWNrZXRTaXplID0gRGF0YVNpemU6OmJ5dGVzKDEw
MDApOworICBjb25zdCBpbnQga0Jsb2F0UGFja2V0Q291bnQgPQorICAgICAgc3RhdGljX2Nhc3Q8
aW50PihrQnVmZmVyQmxvYXREdXJhdGlvbiAqIGtMaW5rQ2FwYWNpdHkgLyBrQmxvYXRQYWNrZXRT
aXplKTsKKyAgLy8gVGhpcyB3aWxsIGNhdXNlIHRoZSBSVFQgdG8gYmUgbGFyZ2UgZm9yIGEgd2hp
bGUuCisgIHMuVHJpZ2dlclBhY2tldEJ1cnN0KHtzZW5kX25ldH0sIGtCbG9hdFBhY2tldENvdW50
LCBrQmxvYXRQYWNrZXRTaXplLmJ5dGVzKCkpOworICAvLyBXYWl0IHRvIGFsbG93IHRoZSBoaWdo
IFJUVCB0byBiZSBkZXRlY3RlZCBhbmQgYWN0ZWQgdXBvbi4KKyAgcy5SdW5Gb3IoVGltZURlbHRh
OjpzZWNvbmRzKDQpKTsKKyAgLy8gQnkgbm93IHRoZSB0YXJnZXQgcmF0ZSBzaG91bGQgaGF2ZSBk
cm9wcGVkIHRvIHRoZSBtaW5pbXVtIGNvbmZpZ3VyZWQgcmF0ZS4KKyAgRVhQRUNUX05FQVIoY2xp
ZW50LT50YXJnZXRfcmF0ZV9rYnBzKCksIGtNaW5SYXRlLmticHMoKSwgMSk7Cit9CisKK1RFU1Rf
RihHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIFVwZGF0ZXNUYXJnZXRSYXRlQmFzZWRPbkxp
bmtDYXBhY2l0eSkgeworICBTY2VuYXJpbyBzKCJnb29nY2NfdW5pdC90YXJnZXRfY2FwYWNpdHki
LCBmYWxzZSk7CiAgIFNpbXVsYXRlZFRpbWVDbGllbnRDb25maWcgY29uZmlnOwogICBjb25maWcu
dHJhbnNwb3J0LmNjID0KICAgICAgIFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWc6OkNvbmdlc3Rp
b25Db250cm9sbGVyOjprR29vZ0NjRmVlZGJhY2s7CkBAIC0zNTksNSArMzk5LDYxIEBAIFRFU1Rf
RihHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIFNjZW5hcmlvUXVpY2tUZXN0KSB7CiAgIEVY
UEVDVF9ORUFSKGNsaWVudC0+dGFyZ2V0X3JhdGVfa2JwcygpLCA5MCwgMjApOwogfQogCitURVNU
X0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBEZWZhdWx0RXN0aW1hdGVWYXJpZXNJblN0
ZWFkeVN0YXRlKSB7CisgIFNjb3BlZEZpZWxkVHJpYWxzIHRyaWFsKCJXZWJSVEMtQndlLVN0YWJs
ZUJhbmR3aWR0aEVzdGltYXRlL0Rpc2FibGVkLyIpOworICBTY2VuYXJpbyBzKCJnb29nY2NfdW5p
dC9ub19zdGFibGVfdmFyaWVzIiwgZmFsc2UpOworICBTaW11bGF0ZWRUaW1lQ2xpZW50Q29uZmln
IGNvbmZpZzsKKyAgY29uZmlnLnRyYW5zcG9ydC5jYyA9CisgICAgICBUcmFuc3BvcnRDb250cm9s
bGVyQ29uZmlnOjpDb25nZXN0aW9uQ29udHJvbGxlcjo6a0dvb2dDY0ZlZWRiYWNrOworICBOZXR3
b3JrTm9kZUNvbmZpZyBuZXRfY29uZjsKKyAgbmV0X2NvbmYuc2ltdWxhdGlvbi5iYW5kd2lkdGgg
PSBEYXRhUmF0ZTo6a2Jwcyg1MDApOworICBuZXRfY29uZi5zaW11bGF0aW9uLmRlbGF5ID0gVGlt
ZURlbHRhOjptcygxMDApOworICBuZXRfY29uZi51cGRhdGVfZnJlcXVlbmN5ID0gVGltZURlbHRh
Ojptcyg1KTsKKyAgYXV0byBzZW5kX25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUobmV0X2Nv
bmYpOworICBhdXRvIHJldF9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKG5ldF9jb25mKTsK
KyAgU2ltdWxhdGVkVGltZUNsaWVudCogY2xpZW50ID0gcy5DcmVhdGVTaW11bGF0ZWRUaW1lQ2xp
ZW50KAorICAgICAgInNlbmQiLCBjb25maWcsIHtQYWNrZXRTdHJlYW1Db25maWcoKX0sIHtzZW5k
X25ldH0sIHtyZXRfbmV0fSk7CisgIC8vIFJ1biBmb3IgYSB3aGlsZSB0byBhbGxvdyB0aGUgZXN0
aW1hdGUgdG8gc3RhYmlsaXplLgorICBzLlJ1bkZvcihUaW1lRGVsdGE6OnNlY29uZHMoMjApKTsK
KyAgRGF0YVJhdGUgbWluX2VzdGltYXRlID0gRGF0YVJhdGU6OlBsdXNJbmZpbml0eSgpOworICBE
YXRhUmF0ZSBtYXhfZXN0aW1hdGUgPSBEYXRhUmF0ZTo6TWludXNJbmZpbml0eSgpOworICAvLyBN
ZWFzdXJlIHZhcmlhdGlvbiBpbiBzdGVhZHkgc3RhdGUuCisgIGZvciAoaW50IGkgPSAwOyBpIDwg
MjA7ICsraSkgeworICAgIG1pbl9lc3RpbWF0ZSA9IHN0ZDo6bWluKG1pbl9lc3RpbWF0ZSwgY2xp
ZW50LT5saW5rX2NhcGFjaXR5KCkpOworICAgIG1heF9lc3RpbWF0ZSA9IHN0ZDo6bWF4KG1heF9l
c3RpbWF0ZSwgY2xpZW50LT5saW5rX2NhcGFjaXR5KCkpOworICAgIHMuUnVuRm9yKFRpbWVEZWx0
YTo6c2Vjb25kcygxKSk7CisgIH0KKyAgLy8gV2Ugc2hvdWxkIGV4cGVjdCBkcm9wcyBieSBhdCBs
ZWFzdCAxNSUgKGRlZmF1bHQgYmFja29mZi4pCisgIEVYUEVDVF9MVChtaW5fZXN0aW1hdGUgLyBt
YXhfZXN0aW1hdGUsIDAuODUpOworfQorCitURVNUX0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJU
ZXN0LCBTdGFibGVFc3RpbWF0ZURvZXNOb3RWYXJ5SW5TdGVhZHlTdGF0ZSkgeworICBTY29wZWRG
aWVsZFRyaWFscyB0cmlhbCgiV2ViUlRDLUJ3ZS1TdGFibGVCYW5kd2lkdGhFc3RpbWF0ZS9FbmFi
bGVkLyIpOworICBTY2VuYXJpbyBzKCJnb29nY2NfdW5pdC9zdGFibGVfaXNfc3RhYmxlIiwgZmFs
c2UpOworICBTaW11bGF0ZWRUaW1lQ2xpZW50Q29uZmlnIGNvbmZpZzsKKyAgY29uZmlnLnRyYW5z
cG9ydC5jYyA9CisgICAgICBUcmFuc3BvcnRDb250cm9sbGVyQ29uZmlnOjpDb25nZXN0aW9uQ29u
dHJvbGxlcjo6a0dvb2dDY0ZlZWRiYWNrOworICBOZXR3b3JrTm9kZUNvbmZpZyBuZXRfY29uZjsK
KyAgbmV0X2NvbmYuc2ltdWxhdGlvbi5iYW5kd2lkdGggPSBEYXRhUmF0ZTo6a2Jwcyg1MDApOwor
ICBuZXRfY29uZi5zaW11bGF0aW9uLmRlbGF5ID0gVGltZURlbHRhOjptcygxMDApOworICBuZXRf
Y29uZi51cGRhdGVfZnJlcXVlbmN5ID0gVGltZURlbHRhOjptcyg1KTsKKyAgYXV0byBzZW5kX25l
dCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUobmV0X2NvbmYpOworICBhdXRvIHJldF9uZXQgPSBz
LkNyZWF0ZVNpbXVsYXRpb25Ob2RlKG5ldF9jb25mKTsKKyAgU2ltdWxhdGVkVGltZUNsaWVudCog
Y2xpZW50ID0gcy5DcmVhdGVTaW11bGF0ZWRUaW1lQ2xpZW50KAorICAgICAgInNlbmQiLCBjb25m
aWcsIHtQYWNrZXRTdHJlYW1Db25maWcoKX0sIHtzZW5kX25ldH0sIHtyZXRfbmV0fSk7CisgIC8v
IFJ1biBmb3IgYSB3aGlsZSB0byBhbGxvdyB0aGUgZXN0aW1hdGUgdG8gc3RhYmlsaXplLgorICBz
LlJ1bkZvcihUaW1lRGVsdGE6OnNlY29uZHMoMjApKTsKKyAgRGF0YVJhdGUgbWluX2VzdGltYXRl
ID0gRGF0YVJhdGU6OlBsdXNJbmZpbml0eSgpOworICBEYXRhUmF0ZSBtYXhfZXN0aW1hdGUgPSBE
YXRhUmF0ZTo6TWludXNJbmZpbml0eSgpOworICAvLyBNZWFzdXJlIHZhcmlhdGlvbiBpbiBzdGVh
ZHkgc3RhdGUuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMjA7ICsraSkgeworICAgIG1pbl9lc3Rp
bWF0ZSA9IHN0ZDo6bWluKG1pbl9lc3RpbWF0ZSwgY2xpZW50LT5saW5rX2NhcGFjaXR5KCkpOwor
ICAgIG1heF9lc3RpbWF0ZSA9IHN0ZDo6bWF4KG1heF9lc3RpbWF0ZSwgY2xpZW50LT5saW5rX2Nh
cGFjaXR5KCkpOworICAgIHMuUnVuRm9yKFRpbWVEZWx0YTo6c2Vjb25kcygxKSk7CisgIH0KKyAg
Ly8gV2UgZXhwZWN0IG5vIHZhcmlhdGlvbiB1bmRlciB0aGUgdHJpYWwgaW4gc3RlYWR5IHN0YXRl
LgorICBFWFBFQ1RfR1QobWluX2VzdGltYXRlIC8gbWF4X2VzdGltYXRlLCAwLjk1KTsKK30KKwog
fSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL2dvb2dfY2MvaW5jbHVkZS9nb29nX2NjX2ZhY3RvcnkuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvaW5jbHVkZS9nb29nX2NjX2ZhY3RvcnkuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGQ5MWZmZjY1ZmE5NmQ4YTVjYWMyNTFmYWJlODAzMjY2MDQ2NGFk
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL2luY2x1ZGUvZ29vZ19jY19mYWN0b3J5LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0OCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVT
X0NPTkdFU1RJT05fQ09OVFJPTExFUl9HT09HX0NDX0lOQ0xVREVfR09PR19DQ19GQUNUT1JZX0hf
Ci0jZGVmaW5lIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX0dPT0dfQ0NfSU5DTFVERV9H
T09HX0NDX0ZBQ1RPUllfSF8KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvdHJh
bnNwb3J0L25ldHdvcmtfY29udHJvbC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIENs
b2NrOwotY2xhc3MgUnRjRXZlbnRMb2c7Ci0KLWNsYXNzIEdvb2dDY05ldHdvcmtDb250cm9sbGVy
RmFjdG9yeQotICAgIDogcHVibGljIE5ldHdvcmtDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZSB7
Ci0gcHVibGljOgotICBleHBsaWNpdCBHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3RvcnkoUnRj
RXZlbnRMb2cqKTsKLSAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250cm9sbGVySW50ZXJmYWNl
PiBDcmVhdGUoCi0gICAgICBOZXR3b3JrQ29udHJvbGxlckNvbmZpZyBjb25maWcpIG92ZXJyaWRl
OwotICBUaW1lRGVsdGEgR2V0UHJvY2Vzc0ludGVydmFsKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSBw
cml2YXRlOgotICBSdGNFdmVudExvZyogY29uc3QgZXZlbnRfbG9nXzsKLX07Ci0KLS8vIEZhY3Rv
cnkgdG8gY3JlYXRlIHBhY2tldCBmZWVkYmFjayBvbmx5IEdvb2dDQywgdGhpcyBjYW4gYmUgdXNl
ZCBmb3IKLS8vIGNvbm5lY3Rpb25zIHByb3ZpZGluZyBwYWNrZXQgcmVjZWl2ZSB0aW1lIGZlZWRi
YWNrIGJ1dCBubyBvdGhlciByZXBvcnRzLgotY2xhc3MgR29vZ0NjRmVlZGJhY2tOZXR3b3JrQ29u
dHJvbGxlckZhY3RvcnkKLSAgICA6IHB1YmxpYyBOZXR3b3JrQ29udHJvbGxlckZhY3RvcnlJbnRl
cmZhY2UgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgR29vZ0NjRmVlZGJhY2tOZXR3b3JrQ29udHJv
bGxlckZhY3RvcnkoUnRjRXZlbnRMb2cqKTsKLSAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250
cm9sbGVySW50ZXJmYWNlPiBDcmVhdGUoCi0gICAgICBOZXR3b3JrQ29udHJvbGxlckNvbmZpZyBj
b25maWcpIG92ZXJyaWRlOwotICBUaW1lRGVsdGEgR2V0UHJvY2Vzc0ludGVydmFsKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICBSdGNFdmVudExvZyogY29uc3QgZXZlbnRfbG9nXzsK
LX07Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxFU19DT05HRVNU
SU9OX0NPTlRST0xMRVJfR09PR19DQ19JTkNMVURFX0dPT0dfQ0NfRkFDVE9SWV9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9tZWRpYW5fc2xvcGVfZXN0aW1hdG9yLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9tZWRpYW5fc2xvcGVfZXN0aW1hdG9yLmNjCmluZGV4IDBh
ZDc3MjgzMDJlYzIwODc4ZjlhYTUwNGE1YmVjZDhjNTliZTYxMmYuLjQ1ZDJmZTMyMTE0ZWRlYTU5
ZmU0MWZlZGI3OGMyZDk5ZDdhZWFkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2df
Y2MvbWVkaWFuX3Nsb3BlX2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2Nj
L21lZGlhbl9zbG9wZV9lc3RpbWF0b3IuY2MKQEAgLTEwLDEyICsxMCwxMCBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9tZWRpYW5fc2xvcGVfZXN0
aW1hdG9yLmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0j
aW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVm
aW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3Qv
YndlX3Rlc3RfbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1hdG9yLmNjCmluZGV4IDBm
MGQxN2VhNDhkYjA2MjIxZTRjYmRmMTdmNTNiNzdlZjNjYjU3NTMuLjdiYTJmYjVhMTNiYzk0ZDI4
NGVlNjU3ZWNlNDgyODAxODg2ZGI3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2df
Y2MvcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9wcm9iZV9iaXRyYXRlX2VzdGltYXRvci5jYwpAQCAtMTcwLDExICsxNzAsMTMgQEAgaW50IFBy
b2JlQml0cmF0ZUVzdGltYXRvcjo6SGFuZGxlUHJvYmVBbmRFc3RpbWF0ZUJpdHJhdGUoCiAgIHJl
dHVybiAqZXN0aW1hdGVkX2JpdHJhdGVfYnBzXzsKIH0KIAotYWJzbDo6b3B0aW9uYWw8aW50Pgot
UHJvYmVCaXRyYXRlRXN0aW1hdG9yOjpGZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGVC
cHMoKSB7CithYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4KK1Byb2JlQml0cmF0ZUVzdGltYXRvcjo6
RmV0Y2hBbmRSZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRlKCkgewogICBhYnNsOjpvcHRpb25hbDxp
bnQ+IGVzdGltYXRlZF9iaXRyYXRlX2JwcyA9IGVzdGltYXRlZF9iaXRyYXRlX2Jwc187CiAgIGVz
dGltYXRlZF9iaXRyYXRlX2Jwc18ucmVzZXQoKTsKLSAgcmV0dXJuIGVzdGltYXRlZF9iaXRyYXRl
X2JwczsKKyAgaWYgKGVzdGltYXRlZF9iaXRyYXRlX2JwcykKKyAgICByZXR1cm4gRGF0YVJhdGU6
OmJwcygqZXN0aW1hdGVkX2JpdHJhdGVfYnBzKTsKKyAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CiB9
CiAKIHZvaWQgUHJvYmVCaXRyYXRlRXN0aW1hdG9yOjpFcmFzZU9sZENsdXN0ZXJzKGludDY0X3Qg
dGltZXN0YW1wX21zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2Jl
X2JpdHJhdGVfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2JpdHJh
dGVfZXN0aW1hdG9yLmgKaW5kZXggZWQ5MjUyMTM3ZmVhMWFmZTNmY2ZiNmE3N2NhNGE0NDE1ODhi
NmJlYS4uYWU4M2VkMzgwZmViODc1YzZjOTRlYTQyNWFiOTZkOGFlY2Q5OThhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9iaXRyYXRlX2VzdGltYXRvci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuaApAQCAtMjgs
NyArMjgsNyBAQCBjbGFzcyBQcm9iZUJpdHJhdGVFc3RpbWF0b3IgewogICAvLyBSZXR1cm5zIHRo
ZSBlc3RpbWF0ZWQgYml0cmF0ZSBpZiB0aGUgcHJvYmUgY29tcGxldGVzIGEgdmFsaWQgY2x1c3Rl
ci4KICAgaW50IEhhbmRsZVByb2JlQW5kRXN0aW1hdGVCaXRyYXRlKGNvbnN0IFBhY2tldEZlZWRi
YWNrJiBwYWNrZXRfZmVlZGJhY2spOwogCi0gIGFic2w6Om9wdGlvbmFsPGludD4gRmV0Y2hBbmRS
ZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRlQnBzKCk7CisgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRl
PiBGZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGUoKTsKIAogIHByaXZhdGU6CiAgIHN0
cnVjdCBBZ2dyZWdhdGVkQ2x1c3RlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
Z29vZ19jYy9wcm9iZV9iaXRyYXRlX2VzdGltYXRvcl91bml0dGVzdC5jYwppbmRleCBmOGE0MGY4
MzlmMzg1YTMwMDViNGE2NjU3NzIyOTJkMDIwYWI4NTU1Li5mY2Y1NTU5MjQ1MzdhYjg2YWQ5M2Rl
MzQ4MzFlYmI2NmQ4MmMwMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3By
b2JlX2JpdHJhdGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dv
b2dfY2MvcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKQEAgLTIwMiw3ICsyMDIs
NyBAQCBURVNUX0YoVGVzdFByb2JlQml0cmF0ZUVzdGltYXRvciwgSWdub3JlU2l6ZUZpcnN0UmVj
ZWl2ZVBhY2tldCkgewogfQogCiBURVNUX0YoVGVzdFByb2JlQml0cmF0ZUVzdGltYXRvciwgTm9M
YXN0RXN0aW1hdGVkQml0cmF0ZUJwcykgewotICBFWFBFQ1RfRkFMU0UocHJvYmVfYml0cmF0ZV9l
c3RpbWF0b3JfLkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZUJwcygpKTsKKyAgRVhQ
RUNUX0ZBTFNFKHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy5GZXRjaEFuZFJlc2V0TGFzdEVzdGlt
YXRlZEJpdHJhdGUoKSk7CiB9CiAKIFRFU1RfRihUZXN0UHJvYmVCaXRyYXRlRXN0aW1hdG9yLCBG
ZXRjaExhc3RFc3RpbWF0ZWRCaXRyYXRlQnBzKSB7CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBURVNU
X0YoVGVzdFByb2JlQml0cmF0ZUVzdGltYXRvciwgRmV0Y2hMYXN0RXN0aW1hdGVkQml0cmF0ZUJw
cykgewogICBBZGRQYWNrZXRGZWVkYmFjaygwLCAxMDAwLCAyMCwgMzApOwogICBBZGRQYWNrZXRG
ZWVkYmFjaygwLCAxMDAwLCAzMCwgNDApOwogCi0gIGF1dG8gZXN0aW1hdGVkX2JpdHJhdGVfYnBz
ID0KLSAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy5GZXRjaEFuZFJlc2V0TGFzdEVzdGlt
YXRlZEJpdHJhdGVCcHMoKTsKLSAgRVhQRUNUX1RSVUUoZXN0aW1hdGVkX2JpdHJhdGVfYnBzKTsK
LSAgRVhQRUNUX05FQVIoKmVzdGltYXRlZF9iaXRyYXRlX2JwcywgODAwMDAwLCAxMCk7Ci0gIEVY
UEVDVF9GQUxTRShwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8uRmV0Y2hBbmRSZXNldExhc3RFc3Rp
bWF0ZWRCaXRyYXRlQnBzKCkpOworICBhdXRvIGVzdGltYXRlZF9iaXRyYXRlID0KKyAgICAgIHBy
b2JlX2JpdHJhdGVfZXN0aW1hdG9yXy5GZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGUo
KTsKKyAgRVhQRUNUX1RSVUUoZXN0aW1hdGVkX2JpdHJhdGUpOworICBFWFBFQ1RfTkVBUihlc3Rp
bWF0ZWRfYml0cmF0ZS0+YnBzKCksIDgwMDAwMCwgMTApOworICBFWFBFQ1RfRkFMU0UocHJvYmVf
Yml0cmF0ZV9lc3RpbWF0b3JfLkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZSgpKTsK
IH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
Z29vZ19jYy9wcm9iZV9jb250cm9sbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9i
ZV9jb250cm9sbGVyLmNjCmluZGV4IGMyYThlMDIzZDdkNDBlYjc4ZWU1MmM5MjQzYjUxZjYwN2Nl
NGI5MDQuLjdiYmU4ZTcxMzhhNGU2Mjc2NzlmNmM0ODU2YjJlODQxZTM3ZjJkN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVfY29udHJvbGxlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL3Byb2JlX2NvbnRyb2xsZXIuY2MKQEAgLTE0Niw2ICsxNDYsNyBA
QCBzdGQ6OnZlY3RvcjxQcm9iZUNsdXN0ZXJDb25maWc+IFByb2JlQ29udHJvbGxlcjo6T25NYXhU
b3RhbEFsbG9jYXRlZEJpdHJhdGUoCiAgICAgbWF4X3RvdGFsX2FsbG9jYXRlZF9iaXRyYXRlXyA9
IG1heF90b3RhbF9hbGxvY2F0ZWRfYml0cmF0ZTsKICAgICByZXR1cm4gSW5pdGlhdGVQcm9iaW5n
KGF0X3RpbWVfbXMsIHttYXhfdG90YWxfYWxsb2NhdGVkX2JpdHJhdGV9LCBmYWxzZSk7CiAgIH0K
KyAgbWF4X3RvdGFsX2FsbG9jYXRlZF9iaXRyYXRlXyA9IG1heF90b3RhbF9hbGxvY2F0ZWRfYml0
cmF0ZTsKICAgcmV0dXJuIHN0ZDo6dmVjdG9yPFByb2JlQ2x1c3RlckNvbmZpZz4oKTsKIH0KIApA
QCAtMjYwLDYgKzI2MSwxNiBAQCBzdGQ6OnZlY3RvcjxQcm9iZUNsdXN0ZXJDb25maWc+IFByb2Jl
Q29udHJvbGxlcjo6UmVxdWVzdFByb2JlKAogICByZXR1cm4gc3RkOjp2ZWN0b3I8UHJvYmVDbHVz
dGVyQ29uZmlnPigpOwogfQogCitzdGQ6OnZlY3RvcjxQcm9iZUNsdXN0ZXJDb25maWc+IFByb2Jl
Q29udHJvbGxlcjo6SW5pdGlhdGVDYXBhY2l0eVByb2JpbmcoCisgICAgaW50NjRfdCBiaXRyYXRl
X2JwcywKKyAgICBpbnQ2NF90IGF0X3RpbWVfbXMpIHsKKyAgaWYgKHN0YXRlXyAhPSBTdGF0ZTo6
a1dhaXRpbmdGb3JQcm9iaW5nUmVzdWx0KSB7CisgICAgUlRDX0RDSEVDSyhuZXR3b3JrX2F2YWls
YWJsZV8pOworICAgIHJldHVybiBJbml0aWF0ZVByb2JpbmcoYXRfdGltZV9tcywgezIgKiBiaXRy
YXRlX2Jwc30sIHRydWUpOworICB9CisgIHJldHVybiBzdGQ6OnZlY3RvcjxQcm9iZUNsdXN0ZXJD
b25maWc+KCk7Cit9CisKIHZvaWQgUHJvYmVDb250cm9sbGVyOjpSZXNldChpbnQ2NF90IGF0X3Rp
bWVfbXMpIHsKICAgbmV0d29ya19hdmFpbGFibGVfID0gdHJ1ZTsKICAgc3RhdGVfID0gU3RhdGU6
OmtJbml0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9jb250cm9s
bGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2NvbnRyb2xsZXIuaAppbmRleCA2
YjZkNGFlOGI0YjUyYTgxNWFhN2U4ZTRlZTkyMTYxYjdlNWQ2NmIzLi40ZGRkNzdmNzVjMzdiNmRi
ZDliNTM4OTNkM2MwYjVlOTM5NDRjN2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL3Byb2JlX2NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2Jl
X2NvbnRyb2xsZXIuaApAQCAtNjAsNiArNjAsOSBAQCBjbGFzcyBQcm9iZUNvbnRyb2xsZXIgewog
ICBSVENfV0FSTl9VTlVTRURfUkVTVUxUIHN0ZDo6dmVjdG9yPFByb2JlQ2x1c3RlckNvbmZpZz4g
UmVxdWVzdFByb2JlKAogICAgICAgaW50NjRfdCBhdF90aW1lX21zKTsKIAorICBSVENfV0FSTl9V
TlVTRURfUkVTVUxUIHN0ZDo6dmVjdG9yPFByb2JlQ2x1c3RlckNvbmZpZz4KKyAgSW5pdGlhdGVD
YXBhY2l0eVByb2JpbmcoaW50NjRfdCBiaXRyYXRlX2JwcywgaW50NjRfdCBhdF90aW1lX21zKTsK
KwogICAvLyBSZXNldHMgdGhlIFByb2JlQ29udHJvbGxlciB0byBhIHN0YXRlIGVxdWl2YWxlbnQg
dG8gYXMgaWYgaXQgd2FzIGp1c3QKICAgLy8gY3JlYXRlZCBFWENFUFQgZm9yIHxlbmFibGVfcGVy
aW9kaWNfYWxyX3Byb2JpbmdffC4KICAgdm9pZCBSZXNldChpbnQ2NF90IGF0X3RpbWVfbXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90ZXN0L2dvb2dfY2NfcHJpbnRlci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvdGVzdC9nb29nX2NjX3ByaW50ZXIuY2MKaW5kZXgg
MzI2NGIzN2U2ZGRjMGU0NjM4YjU3ODE5YjBkZTg3ZWQwY2Q4NzY4ZC4uNTlhYWQ1MTFjMDA4YjA4
MGNkZWY1YzVlMmMzYjA1NDNiZmNiY2I1MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy90ZXN0L2dvb2dfY2NfcHJpbnRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2Nj
L3Rlc3QvZ29vZ19jY19wcmludGVyLmNjCkBAIC04LDYgKzgsOSBAQAogICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAj
aW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90ZXN0L2dvb2df
Y2NfcHJpbnRlci5oIgorCisjaW5jbHVkZSA8bWF0aC5oPgorCiAjaW5jbHVkZSAibW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90cmVuZGxpbmVfZXN0aW1hdG9yLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewpAQCAtMzMsOSArMzYsMTEgQEAgdm9pZCBHb29nQ2NTdGF0ZVByaW50
ZXI6OlByaW50VmFsdWVzKEZJTEUqIG91dCkgewogICBSVENfQ0hFQ0soY29udHJvbGxlcl8pOwog
ICBhdXRvKiBkZXRlY3RvciA9IGNvbnRyb2xsZXJfLT5kZWxheV9iYXNlZF9id2VfLT5kZWxheV9k
ZXRlY3Rvcl8uZ2V0KCk7CiAgIGF1dG8qIHRyZW5kbGluZV9lc3RpbWF0b3IgPSByZWludGVycHJl
dF9jYXN0PFRyZW5kbGluZUVzdGltYXRvcio+KGRldGVjdG9yKTsKLSAgZnByaW50ZihvdXQsICIl
aSAlaSAlaSAlLjZsZiAlLjZsZiAlLjZsZiIsCisgIGZwcmludGYob3V0LCAiJWkgJWYgJWkgJS42
bGYgJS42bGYgJS42bGYiLAogICAgICAgICAgIGNvbnRyb2xsZXJfLT5kZWxheV9iYXNlZF9id2Vf
LT5yYXRlX2NvbnRyb2xfLnJhdGVfY29udHJvbF9zdGF0ZV8sCi0gICAgICAgICAgY29udHJvbGxl
cl8tPmRlbGF5X2Jhc2VkX2J3ZV8tPnJhdGVfY29udHJvbF8ucmF0ZV9jb250cm9sX3JlZ2lvbl8s
CisgICAgICAgICAgY29udHJvbGxlcl8tPmRlbGF5X2Jhc2VkX2J3ZV8tPnJhdGVfY29udHJvbF8K
KyAgICAgICAgICAgICAgICAgIC5saW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlX29y
KE5BTikgKgorICAgICAgICAgICAgICAxMDAwIC8gOCwKICAgICAgICAgICBjb250cm9sbGVyXy0+
YWxyX2RldGVjdG9yXy0+YWxyX3N0YXJ0ZWRfdGltZV9tc18uaGFzX3ZhbHVlKCksCiAgICAgICAg
ICAgdHJlbmRsaW5lX2VzdGltYXRvci0+cHJldl90cmVuZF8sCiAgICAgICAgICAgdHJlbmRsaW5l
X2VzdGltYXRvci0+cHJldl9tb2RpZmllZF90cmVuZF8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL3Rlc3QvZ29vZ19jY19wcmludGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL3Rlc3QvZ29vZ19jY19wcmludGVyLmgKaW5kZXggNGRmYzA1OWI0NzlhOTQ3NWFiZWI5NjFm
NTM5YjU4Y2RlMDQwZDJjNC4uNWQ0ZjJjMTg0MGY0Yzk3YTgzMDc1ZjI5Y2M5ZGNjNmM2ZTU1N2Fm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90ZXN0L2dvb2dfY2NfcHJpbnRl
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvdGVzdC9nb29nX2NjX3ByaW50ZXIuaApA
QCAtMTIsOCArMTIsOCBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAiYXBpL3Ry
YW5zcG9ydC9nb29nX2NjX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9pbmNsdWRlL2dvb2dfY2NfZmFj
dG9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3Rlc3QvY29u
dHJvbGxlcl9wcmludGVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvZ29vZ19jYy90cmVuZGxpbmVfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL3RyZW5kbGluZV9lc3RpbWF0b3IuaAppbmRleCBhN2QyMmE5NTBlZmFkMDJkYzM4
NzU2OWE3ZWIyNDAwYWU4MWJmYzk3Li4xODI2ZDgxMjQ4MGU0NzIwNzAxYjg2OTYxYTU2ZTUxMDQx
YTE5MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3RyZW5kbGluZV9lc3Rp
bWF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3RyZW5kbGluZV9lc3RpbWF0b3Iu
aApAQCAtMTIsMTEgKzEyLDExIEBACiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxz
dGRpbnQuaD4KLQogI2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNs
dWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2luY3JlYXNl
X2RldGVjdG9yX2ludGVyZmFjZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvaW5jbHVkZS9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9pbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaAppbmRl
eCBiYTI2MjcyZTZmYjQ3YjRjMjBkZjUzYTUxZjhmOWU4M2FjMTYxNDRmLi43NDZlNTkwYTU5ZjQx
ZTdhYmM0NDUyZjNjMzVlMTNiOWNiOTk5N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9p
bmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9pbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaApAQCAtMTEzLDYg
KzExMyw5IEBAIGNsYXNzIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXIKIAogICB2b2lkIFNl
dEFsbG9jYXRlZEJpdHJhdGVXaXRob3V0RmVlZGJhY2sodWludDMyX3QgYml0cmF0ZV9icHMpIG92
ZXJyaWRlOwogCisgIHZvaWQgRW5hYmxlQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrKGludDY0X3Qg
YWNjZXB0ZWRfcXVldWVfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHMpOworCiAgcHJpdmF0ZToK
ICAgdm9pZCBNYXliZVRyaWdnZXJPbk5ldHdvcmtDaGFuZ2VkKCk7CiAKQEAgLTEzNiw3ICsxMzks
NyBAQCBjbGFzcyBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyCiAgICAgICBSVENfR1VBUkRF
RF9CWShwcm9iZV9sb2NrXyk7CiAKICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFJhdGVMaW1pdGVy
PiByZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfOwotICBUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXIgdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfOworICBMZWdhY3lUcmFuc3BvcnRGZWVkYmFj
a0FkYXB0ZXIgdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfOwogICBydGM6OkNyaXRpY2FsU2Vj
dGlvbiBuZXR3b3JrX3N0YXRlX2xvY2tfOwogICB1aW50MzJfdCBsYXN0X3JlcG9ydGVkX2JpdHJh
dGVfYnBzXyBSVENfR1VBUkRFRF9CWShuZXR3b3JrX3N0YXRlX2xvY2tfKTsKICAgdWludDhfdCBs
YXN0X3JlcG9ydGVkX2ZyYWN0aW9uX2xvc3NfIFJUQ19HVUFSREVEX0JZKG5ldHdvcmtfc3RhdGVf
bG9ja18pOwpAQCAtMTQ5LDYgKzE1Miw4IEBAIGNsYXNzIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRy
b2xsZXIKICAgYm9vbCBwYWNlcl9wYXVzZWRfOwogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBid2Vf
bG9ja187CiAgIGludCBtaW5fYml0cmF0ZV9icHNfIFJUQ19HVUFSREVEX0JZKGJ3ZV9sb2NrXyk7
CisgIHN0ZDo6dW5pcXVlX3B0cjxQcm9iZUJpdHJhdGVFc3RpbWF0b3I+IHByb2JlX2JpdHJhdGVf
ZXN0aW1hdG9yXworICAgICAgUlRDX0dVQVJERURfQlkoYndlX2xvY2tfKTsKICAgc3RkOjp1bmlx
dWVfcHRyPERlbGF5QmFzZWRCd2U+IGRlbGF5X2Jhc2VkX2J3ZV8gUlRDX0dVQVJERURfQlkoYndl
X2xvY2tfKTsKICAgYm9vbCBpbl9jd25kX2V4cGVyaW1lbnRfOwogICBpbnQ2NF90IGFjY2VwdGVk
X3F1ZXVlX21zXzsKQEAgLTE2MSw3ICsxNjYsNyBAQCBjbGFzcyBTZW5kU2lkZUNvbmdlc3Rpb25D
b250cm9sbGVyCiAgIGJvb2wgcGFjZXJfcHVzaGJhY2tfZXhwZXJpbWVudF8gPSBmYWxzZTsKICAg
ZmxvYXQgZW5jb2RpbmdfcmF0ZV8gPSAxLjA7CiAKLSAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENv
bmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI+CisgIHN0ZDo6dW5pcXVlX3B0cjxDb25n
ZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyPgogICAgICAgY29uZ2VzdGlvbl93aW5kb3df
cHVzaGJhY2tfY29udHJvbGxlcl87CiAKICAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVD
VE9SUyhTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL3BjYy9tb25pdG9yX2ludGVydmFsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcGNjL21vbml0
b3JfaW50ZXJ2YWwuY2MKaW5kZXggZDQzMGI3ZjE3OTBhN2EzOGZlYmQ0MGFkYzYxNTJhNTlmNTQ2
NTU0ZC4uMjgxYjkyMjRmMGMzYmViMDUwM2YzNTMzNjE1N2ZmMDUxMDRjNDhlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvcGNjL21vbml0b3JfaW50ZXJ2YWwuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvcGNjL21vbml0b3JfaW50ZXJ2YWwuY2MKQEAgLTMxLDI1ICszMSwyNCBAQCBQY2NNb25p
dG9ySW50ZXJ2YWw6OlBjY01vbml0b3JJbnRlcnZhbChjb25zdCBQY2NNb25pdG9ySW50ZXJ2YWwm
IG90aGVyKSA9CiB2b2lkIFBjY01vbml0b3JJbnRlcnZhbDo6T25QYWNrZXRzRmVlZGJhY2soCiAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiYgcGFja2V0c19yZXN1bHRzKSB7CiAg
IGZvciAoY29uc3QgUGFja2V0UmVzdWx0JiBwYWNrZXRfcmVzdWx0IDogcGFja2V0c19yZXN1bHRz
KSB7Ci0gICAgaWYgKCFwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0Lmhhc192YWx1ZSgpIHx8Ci0g
ICAgICAgIHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQtPnNlbmRfdGltZSA8PSBzdGFydF90aW1l
XykgeworICAgIGlmIChwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LnNlbmRfdGltZSA8PSBzdGFy
dF90aW1lXykgewogICAgICAgY29udGludWU7CiAgICAgfQogICAgIC8vIEhlcmUgd2UgYXNzdW1l
IHRoYXQgaWYgc29tZSBwYWNrZXRzIGFyZSByZW9yZGVyZWQgd2l0aCBwYWNrZXRzIHNlbnQKICAg
ICAvLyBhZnRlciB0aGUgZW5kIG9mIHRoZSBtb25pdG9yIGludGVydmFsLCB0aGVuIHRoZXkgYXJl
IGxvc3QuIChPdGhlcndpc2UKICAgICAvLyBpdCBpcyBub3QgY2xlYXIgaG93IGxvbmcgc2hvdWxk
IHdlIHdhaXQgZm9yIHBhY2tldHMgZmVlZGJhY2sgdG8gYXJyaXZlKS4KLSAgICBpZiAocGFja2V0
X3Jlc3VsdC5zZW50X3BhY2tldC0+c2VuZF90aW1lID4KKyAgICBpZiAocGFja2V0X3Jlc3VsdC5z
ZW50X3BhY2tldC5zZW5kX3RpbWUgPgogICAgICAgICBzdGFydF90aW1lXyArIGludGVydmFsX2R1
cmF0aW9uXykgewogICAgICAgZmVlZGJhY2tfY29sbGVjdGlvbl9kb25lXyA9IHRydWU7CiAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGlmIChwYWNrZXRfcmVzdWx0LnJlY2VpdmVfdGltZS5Jc0lu
ZmluaXRlKCkpIHsKLSAgICAgIGxvc3RfcGFja2V0c19zZW50X3RpbWVfLnB1c2hfYmFjayhwYWNr
ZXRfcmVzdWx0LnNlbnRfcGFja2V0LT5zZW5kX3RpbWUpOworICAgICAgbG9zdF9wYWNrZXRzX3Nl
bnRfdGltZV8ucHVzaF9iYWNrKHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQuc2VuZF90aW1lKTsK
ICAgICB9IGVsc2UgewogICAgICAgcmVjZWl2ZWRfcGFja2V0c18ucHVzaF9iYWNrKAotICAgICAg
ICAgIHtwYWNrZXRfcmVzdWx0LnJlY2VpdmVfdGltZSAtIHBhY2tldF9yZXN1bHQuc2VudF9wYWNr
ZXQtPnNlbmRfdGltZSwKLSAgICAgICAgICAgcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC0+c2Vu
ZF90aW1lfSk7Ci0gICAgICByZWNlaXZlZF9wYWNrZXRzX3NpemVfICs9IHBhY2tldF9yZXN1bHQu
c2VudF9wYWNrZXQtPnNpemU7CisgICAgICAgICAge3BhY2tldF9yZXN1bHQucmVjZWl2ZV90aW1l
IC0gcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC5zZW5kX3RpbWUsCisgICAgICAgICAgIHBhY2tl
dF9yZXN1bHQuc2VudF9wYWNrZXQuc2VuZF90aW1lfSk7CisgICAgICByZWNlaXZlZF9wYWNrZXRz
X3NpemVfICs9IHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQuc2l6ZTsKICAgICB9CiAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9wY2NfbmV0d29ya19jb250cm9sbGVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvcGNjL3BjY19uZXR3b3JrX2NvbnRyb2xsZXIuY2MKaW5kZXggOThj
ZGE3NDA5YmQxZmI0MjI3MTQ5NDE5YzA1MjdhOGI4YjM0NDliNS4uNDdhZDMzZWFjMjI3YmQwNTMy
MjE1ODkxNjZlNzM2MzNhMDZkNjY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcGNjL3Bj
Y19uZXR3b3JrX2NvbnRyb2xsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcGNjL3BjY19uZXR3
b3JrX2NvbnRyb2xsZXIuY2MKQEAgLTE0OCw3ICsxNDgsNyBAQCBOZXR3b3JrQ29udHJvbFVwZGF0
ZSBQY2NOZXR3b3JrQ29udHJvbGxlcjo6T25TZW50UGFja2V0KFNlbnRQYWNrZXQgbXNnKSB7CiAg
IGlmIChJc1RpbWVvdXRFeHBpcmVkKG1zZy5zZW5kX3RpbWUpKSB7CiAgICAgRGF0YVNpemUgcmVj
ZWl2ZWRfc2l6ZSA9IERhdGFTaXplOjpaZXJvKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkg
PCBsYXN0X3JlY2VpdmVkX3BhY2tldHNfLnNpemUoKTsgKytpKSB7Ci0gICAgICByZWNlaXZlZF9z
aXplICs9IGxhc3RfcmVjZWl2ZWRfcGFja2V0c19baV0uc2VudF9wYWNrZXQtPnNpemU7CisgICAg
ICByZWNlaXZlZF9zaXplICs9IGxhc3RfcmVjZWl2ZWRfcGFja2V0c19baV0uc2VudF9wYWNrZXQu
c2l6ZTsKICAgICB9CiAgICAgVGltZURlbHRhIHNlbmRpbmdfdGltZSA9IFRpbWVEZWx0YTo6WmVy
bygpOwogICAgIGlmIChsYXN0X3JlY2VpdmVkX3BhY2tldHNfLnNpemUoKSA+IDApCkBAIC0xNjYs
NyArMTY2LDcgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgUGNjTmV0d29ya0NvbnRyb2xsZXI6Ok9u
U2VudFBhY2tldChTZW50UGFja2V0IG1zZykgewogICAgICAgbXNnLnNlbmRfdGltZSAtIHN0YXJ0
X3RpbWVfID49IGtTdGFydHVwRHVyYXRpb24pIHsKICAgICBEYXRhU2l6ZSByZWNlaXZlZF9zaXpl
ID0gRGF0YVNpemU6Olplcm8oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxhc3RfcmVj
ZWl2ZWRfcGFja2V0c18uc2l6ZSgpOyArK2kpIHsKLSAgICAgIHJlY2VpdmVkX3NpemUgKz0gbGFz
dF9yZWNlaXZlZF9wYWNrZXRzX1tpXS5zZW50X3BhY2tldC0+c2l6ZTsKKyAgICAgIHJlY2VpdmVk
X3NpemUgKz0gbGFzdF9yZWNlaXZlZF9wYWNrZXRzX1tpXS5zZW50X3BhY2tldC5zaXplOwogICAg
IH0KICAgICBUaW1lRGVsdGEgc2VuZGluZ190aW1lID0gVGltZURlbHRhOjpaZXJvKCk7CiAgICAg
aWYgKGxhc3RfcmVjZWl2ZWRfcGFja2V0c18uc2l6ZSgpID4gMCkKQEAgLTI2MCw2ICsyNjAsOCBA
QCBib29sIFBjY05ldHdvcmtDb250cm9sbGVyOjpJc0ZlZWRiYWNrQ29sbGVjdGlvbkRvbmUoKSBj
b25zdCB7CiAKIE5ldHdvcmtDb250cm9sVXBkYXRlIFBjY05ldHdvcmtDb250cm9sbGVyOjpPblRy
YW5zcG9ydFBhY2tldHNGZWVkYmFjaygKICAgICBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2sgbXNn
KSB7CisgIGlmIChtc2cucGFja2V0X2ZlZWRiYWNrcy5lbXB0eSgpKQorICAgIHJldHVybiBOZXR3
b3JrQ29udHJvbFVwZGF0ZSgpOwogICAvLyBTYXZlIHBhY2tldHMgdG8gbGFzdF9yZWNlaXZlZF9w
YWNrZXRzXyBhcnJheS4KICAgZm9yIChjb25zdCBQYWNrZXRSZXN1bHQmIHBhY2tldF9yZXN1bHQg
OiBtc2cuUmVjZWl2ZWRXaXRoU2VuZEluZm8oKSkgewogICAgIGxhc3RfcmVjZWl2ZWRfcGFja2V0
c18ucHVzaF9iYWNrKHBhY2tldF9yZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
cGNjL3J0dF90cmFja2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcGNjL3J0dF90cmFja2VyLmNjCmlu
ZGV4IGEwNTQ1NzU5ZjlmMTIwOGVkOTE2MWFhZGE0ZDZhNTZkNGZmZTU1YjEuLjUzM2E1NzNhN2Fj
OGQ0YmI0MDc3YTY3ZDM3OTE2MzNkM2FlMDQ4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L3BjYy9ydHRfdHJhY2tlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9wY2MvcnR0X3RyYWNrZXIu
Y2MKQEAgLTIzLDEyICsyMywxMSBAQCB2b2lkIFJ0dFRyYWNrZXI6Ok9uUGFja2V0c0ZlZWRiYWNr
KAogICAgIFRpbWVzdGFtcCBmZWVkYmFja19yZWNlaXZlZF90aW1lKSB7CiAgIFRpbWVEZWx0YSBw
YWNrZXRfcnR0ID0gVGltZURlbHRhOjpNaW51c0luZmluaXR5KCk7CiAgIGZvciAoY29uc3QgUGFj
a2V0UmVzdWx0JiBwYWNrZXRfcmVzdWx0IDogcGFja2V0X2ZlZWRiYWNrcykgewotICAgIGlmICgh
cGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC5oYXNfdmFsdWUoKSB8fAotICAgICAgICBwYWNrZXRf
cmVzdWx0LnJlY2VpdmVfdGltZS5Jc0luZmluaXRlKCkpCisgICAgaWYgKHBhY2tldF9yZXN1bHQu
cmVjZWl2ZV90aW1lLklzSW5maW5pdGUoKSkKICAgICAgIGNvbnRpbnVlOwogICAgIHBhY2tldF9y
dHQgPSBzdGQ6Om1heDxUaW1lRGVsdGE+KAogICAgICAgICBwYWNrZXRfcnR0LAotICAgICAgICBm
ZWVkYmFja19yZWNlaXZlZF90aW1lIC0gcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC0+c2VuZF90
aW1lKTsKKyAgICAgICAgZmVlZGJhY2tfcmVjZWl2ZWRfdGltZSAtIHBhY2tldF9yZXN1bHQuc2Vu
dF9wYWNrZXQuc2VuZF90aW1lKTsKICAgfQogICBpZiAocGFja2V0X3J0dC5Jc0Zpbml0ZSgpKQog
ICAgIHJ0dF9lc3RpbWF0ZV8gPSAoMSAtIGFscGhhXykgKiBydHRfZXN0aW1hdGVfICsgYWxwaGFf
ICogcGFja2V0X3J0dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9CVUlMRC5nbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL3J0cC9CVUlMRC5nbgppbmRleCAxMzRmYjk0MGZkZDY1MjhlNjViYTMz
MmQ4Mjk0YjE3NWQxMDc0NTQyLi5iZmZlMWY4OTNlYjU0YmE1YmFjZGM5ODA1NDViYTU4Y2NhOGQ2
NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvQlVJTEQuZ24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvcnRwL0JVSUxELmduCkBAIC0yMSw4ICsyMSw2IEBAIHJ0Y19zdGF0aWNfbGlicmFy
eSgiY29uZ2VzdGlvbl9jb250cm9sbGVyIikgewogICBjb25maWdzICs9IFsgIjpid2VfdGVzdF9s
b2dnaW5nIiBdCiAgIHNvdXJjZXMgPSBbCiAgICAgImluY2x1ZGUvc2VuZF9zaWRlX2Nvbmdlc3Rp
b25fY29udHJvbGxlci5oIiwKLSAgICAicGFjZXJfY29udHJvbGxlci5jYyIsCi0gICAgInBhY2Vy
X2NvbnRyb2xsZXIuaCIsCiAgICAgInNlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2Mi
LAogICBdCiAKQEAgLTMyLDEwICszMCwxMiBAQCBydGNfc3RhdGljX2xpYnJhcnkoImNvbmdlc3Rp
b25fY29udHJvbGxlciIpIHsKICAgfQogCiAgIGRlcHMgPSBbCisgICAgIjpjb250cm9sX2hhbmRs
ZXIiLAogICAgICI6dHJhbnNwb3J0X2ZlZWRiYWNrIiwKICAgICAiLi4vOmNvbmdlc3Rpb25fY29u
dHJvbGxlciIsCiAgICAgIi4uLy4uOm1vZHVsZV9hcGkiLAogICAgICIuLi8uLi8uLjp3ZWJydGNf
Y29tbW9uIiwKKyAgICAiLi4vLi4vLi4vYXBpL3RyYW5zcG9ydDpnb29nX2NjIiwKICAgICAiLi4v
Li4vLi4vYXBpL3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAogICAgICIuLi8uLi8uLi9ydGNf
YmFzZTpjaGVja3MiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpyYXRlX2xpbWl0ZXIiLApAQCAt
NDMsMTIgKzQzLDEyIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY29uZ2VzdGlvbl9jb250cm9sbGVy
IikgewogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpzYWZlX21pbm1heCIsCiAgICAgIi4uLy4uLy4u
L3J0Y19iYXNlOnNlcXVlbmNlZF90YXNrX2NoZWNrZXIiLAogICAgICIuLi8uLi8uLi9ydGNfYmFz
ZS9leHBlcmltZW50czpjb25nZXN0aW9uX2NvbnRyb2xsZXJfZXhwZXJpbWVudCIsCisgICAgIi4u
Ly4uLy4uL3J0Y19iYXNlL25ldHdvcms6c2VudF9wYWNrZXQiLAogICAgICIuLi8uLi8uLi9zeXN0
ZW1fd3JhcHBlcnMiLAogICAgICIuLi8uLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwi
LAogICAgICIuLi8uLi9wYWNpbmciLAogICAgICIuLi8uLi9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3IiLAogICAgICIuLi8uLi9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAotICAgICIuLi9nb29n
X2NjIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQog
CkBAIC01Nyw2ICs1NywzOCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImNvbmdlc3Rpb25fY29udHJv
bGxlciIpIHsKICAgfQogfQogCitydGNfc291cmNlX3NldCgiY29udHJvbF9oYW5kbGVyIikgewor
ICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICBzb3VyY2VzID0gWworICAgICJjb250cm9sX2hhbmRs
ZXIuY2MiLAorICAgICJjb250cm9sX2hhbmRsZXIuaCIsCisgIF0KKworICBpZiAoIWJ1aWxkX3dp
dGhfY2hyb21pdW0gJiYgaXNfY2xhbmcpIHsKKyAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20g
dGhlIENocm9taXVtIENsYW5nIHBsdWdpbiAoYnVncy53ZWJydGMub3JnLzE2MykuCisgICAgc3Vw
cHJlc3NlZF9jb25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2NsYW5nOmZpbmRfYmFkX2NvbnN0
cnVjdHMiIF0KKyAgfQorCisgIGRlcHMgPSBbCisgICAgIi4uLzpjb25nZXN0aW9uX2NvbnRyb2xs
ZXIiLAorICAgICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Om5ldHdvcmtfY29udHJvbCIsCisgICAg
Ii4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJhdGVf
bGltaXRlciIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKKyAgICAiLi4v
Li4vLi4vcnRjX2Jhc2U6c2VxdWVuY2VkX3Rhc2tfY2hlY2tlciIsCisgICAgIi4uLy4uLy4uL3J0
Y19iYXNlL2V4cGVyaW1lbnRzOmNvbmdlc3Rpb25fY29udHJvbGxlcl9leHBlcmltZW50IiwKKyAg
ICAiLi4vLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKKyAgICAiLi4vLi4vLi4vc3lzdGVtX3dyYXBw
ZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAiLi4vLi4vcGFjaW5nIiwKKyAgICAiLi4vLi4vcmVtb3Rl
X2JpdHJhdGVfZXN0aW1hdG9yIiwKKyAgICAiLi4vLi4vcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgXQorCisg
IGlmICghYnVpbGRfd2l0aF9tb3ppbGxhKSB7CisgICAgZGVwcyArPSBbICIuLi8uLi8uLi9ydGNf
YmFzZTpydGNfYmFzZSIgXQorICB9Cit9CiBydGNfc3RhdGljX2xpYnJhcnkoInRyYW5zcG9ydF9m
ZWVkYmFjayIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgc291cmNlcyA9IFsKQEAgLTY5
LDggKzEwMSwxMCBAQCBydGNfc3RhdGljX2xpYnJhcnkoInRyYW5zcG9ydF9mZWVkYmFjayIpIHsK
ICAgZGVwcyA9IFsKICAgICAiLi4vLi46bW9kdWxlX2FwaSIsCiAgICAgIi4uLy4uLy4uL2FwaS90
cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKKyAgICAiLi4vLi4vLi4vYXBpL3VuaXRzOmRhdGFf
c2l6ZSIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uLy4uL3J0
Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2UvbmV0d29y
azpzZW50X3BhY2tldCIsCiAgICAgIi4uLy4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAgIi4u
Ly4uL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgIF0KQEAgLTk3LDcgKzEzMSw3IEBAIGlm
IChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIs
CiAgICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uLy4uLy4uL3J0
Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNf
YmFzZV90ZXN0c191dGlscyIsCisgICAgICAiLi4vLi4vLi4vcnRjX2Jhc2UvbmV0d29yazpzZW50
X3BhY2tldCIsCiAgICAgICAiLi4vLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAgICIuLi8u
Li8uLi90ZXN0OmZpZWxkX3RyaWFsIiwKICAgICAgICIuLi8uLi8uLi90ZXN0OnRlc3Rfc3VwcG9y
dCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvY29udHJvbF9oYW5kbGVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmNhZGI3
MjBlOWMwYjFjY2E1YTI2ZjVlMjIzMjVmOTQ3ZTVkNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5jYwpAQCAtMCwwICsxLDE2OSBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9ydHAvY29udHJvbF9oYW5kbGVyLmgiCisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVt
ZXJpY3Mvc2FmZV9taW5tYXguaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9m
aWVsZF90cmlhbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7CisKKy8vIFdo
ZW4gUGFjZXJQdXNoYmFja0V4cGVyaW1lbnQgaXMgZW5hYmxlZCwgYnVpbGQtdXAgaW4gdGhlIHBh
Y2VyIGR1ZSB0bworLy8gdGhlIGNvbmdlc3Rpb24gd2luZG93IGFuZC9vciBkYXRhIHNwaWtlcyBy
ZWR1Y2VzIGVuY29kZXIgYWxsb2NhdGlvbnMuCitib29sIElzUGFjZXJQdXNoYmFja0V4cGVyaW1l
bnRFbmFibGVkKCkgeworICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVBh
Y2VyUHVzaGJhY2tFeHBlcmltZW50Iik7Cit9CisKKy8vIEJ5IGRlZmF1bHQsIHBhY2VyIGVtZXJn
ZW5jeSBzdG9wcyBlbmNvZGVyIHdoZW4gYnVmZmVyIHJlYWNoZXMgYSBoaWdoIGxldmVsLgorYm9v
bCBJc1BhY2VyRW1lcmdlbmN5U3RvcERpc2FibGVkKCkgeworICByZXR1cm4gZmllbGRfdHJpYWw6
OklzRW5hYmxlZCgiV2ViUlRDLURpc2FibGVQYWNlckVtZXJnZW5jeVN0b3AiKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlCitDb25nZXN0aW9uQ29udHJvbEhhbmRsZXI6OkNvbmdlc3Rpb25Db250cm9s
SGFuZGxlcigKKyAgICBOZXR3b3JrQ2hhbmdlZE9ic2VydmVyKiBvYnNlcnZlciwKKyAgICBQYWNl
ZFNlbmRlciogcGFjZXIpCisgICAgOiBvYnNlcnZlcl8ob2JzZXJ2ZXIpLAorICAgICAgcGFjZXJf
KHBhY2VyKSwKKyAgICAgIHBhY2VyX3B1c2hiYWNrX2V4cGVyaW1lbnRfKElzUGFjZXJQdXNoYmFj
a0V4cGVyaW1lbnRFbmFibGVkKCkpLAorICAgICAgZGlzYWJsZV9wYWNlcl9lbWVyZ2VuY3lfc3Rv
cF8oSXNQYWNlckVtZXJnZW5jeVN0b3BEaXNhYmxlZCgpKSB7CisgIHNlcXVlbmNlZF9jaGVja2Vy
Xy5EZXRhY2goKTsKK30KKworQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyOjp+Q29uZ2VzdGlvbkNv
bnRyb2xIYW5kbGVyKCkge30KKwordm9pZCBDb25nZXN0aW9uQ29udHJvbEhhbmRsZXI6OlBvc3RV
cGRhdGVzKE5ldHdvcmtDb250cm9sVXBkYXRlIHVwZGF0ZSkgeworICBSVENfRENIRUNLX0NBTExF
RF9TRVFVRU5USUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7CisgIGlmICh1cGRhdGUuY29uZ2Vz
dGlvbl93aW5kb3cpIHsKKyAgICBpZiAodXBkYXRlLmNvbmdlc3Rpb25fd2luZG93LT5Jc0Zpbml0
ZSgpKQorICAgICAgcGFjZXJfLT5TZXRDb25nZXN0aW9uV2luZG93KHVwZGF0ZS5jb25nZXN0aW9u
X3dpbmRvdy0+Ynl0ZXMoKSk7CisgICAgZWxzZQorICAgICAgcGFjZXJfLT5TZXRDb25nZXN0aW9u
V2luZG93KFBhY2VkU2VuZGVyOjprTm9Db25nZXN0aW9uV2luZG93KTsKKyAgfQorICBpZiAodXBk
YXRlLnBhY2VyX2NvbmZpZykgeworICAgIHBhY2VyXy0+U2V0UGFjaW5nUmF0ZXModXBkYXRlLnBh
Y2VyX2NvbmZpZy0+ZGF0YV9yYXRlKCkuYnBzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1cGRhdGUucGFjZXJfY29uZmlnLT5wYWRfcmF0ZSgpLmJwcygpKTsKKyAgfQorICBmb3IgKGNv
bnN0IGF1dG8mIHByb2JlIDogdXBkYXRlLnByb2JlX2NsdXN0ZXJfY29uZmlncykgeworICAgIGlu
dDY0X3QgYml0cmF0ZV9icHMgPSBwcm9iZS50YXJnZXRfZGF0YV9yYXRlLmJwcygpOworICAgIHBh
Y2VyXy0+Q3JlYXRlUHJvYmVDbHVzdGVyKGJpdHJhdGVfYnBzKTsKKyAgfQorICBpZiAodXBkYXRl
LnRhcmdldF9yYXRlKSB7CisgICAgY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfID0gKnVwZGF0ZS50
YXJnZXRfcmF0ZTsKKyAgICBPbk5ldHdvcmtJbnZhbGlkYXRpb24oKTsKKyAgfQorfQorCit2b2lk
IENvbmdlc3Rpb25Db250cm9sSGFuZGxlcjo6T25OZXR3b3JrQXZhaWxhYmlsaXR5KE5ldHdvcmtB
dmFpbGFiaWxpdHkgbXNnKSB7CisgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2Vx
dWVuY2VkX2NoZWNrZXJfKTsKKyAgaWYgKG5ldHdvcmtfYXZhaWxhYmxlXyAhPSBtc2cubmV0d29y
a19hdmFpbGFibGUpIHsKKyAgICBuZXR3b3JrX2F2YWlsYWJsZV8gPSBtc2cubmV0d29ya19hdmFp
bGFibGU7CisgICAgcGFjZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoMCk7CisgICAgU2V0UGFj
ZXJTdGF0ZSghbXNnLm5ldHdvcmtfYXZhaWxhYmxlKTsKKyAgICBPbk5ldHdvcmtJbnZhbGlkYXRp
b24oKTsKKyAgfQorfQorCit2b2lkIENvbmdlc3Rpb25Db250cm9sSGFuZGxlcjo6T25PdXRzdGFu
ZGluZ0RhdGEoRGF0YVNpemUgaW5fZmxpZ2h0X2RhdGEpIHsKKyAgUlRDX0RDSEVDS19DQUxMRURf
U0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOworICBwYWNlcl8tPlVwZGF0ZU91dHN0
YW5kaW5nRGF0YShpbl9mbGlnaHRfZGF0YS5ieXRlcygpKTsKKyAgT25OZXR3b3JrSW52YWxpZGF0
aW9uKCk7Cit9CisKK3ZvaWQgQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyOjpPblBhY2VyUXVldWVV
cGRhdGUoCisgICAgVGltZURlbHRhIGV4cGVjdGVkX3F1ZXVlX3RpbWUpIHsKKyAgUlRDX0RDSEVD
S19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOworICBwYWNlcl9leHBl
Y3RlZF9xdWV1ZV9tc18gPSBleHBlY3RlZF9xdWV1ZV90aW1lLm1zKCk7CisgIE9uTmV0d29ya0lu
dmFsaWRhdGlvbigpOworfQorCit2b2lkIENvbmdlc3Rpb25Db250cm9sSGFuZGxlcjo6U2V0UGFj
ZXJTdGF0ZShib29sIHBhdXNlZCkgeworICBpZiAocGF1c2VkICYmICFwYWNlcl9wYXVzZWRfKQor
ICAgIHBhY2VyXy0+UGF1c2UoKTsKKyAgZWxzZSBpZiAoIXBhdXNlZCAmJiBwYWNlcl9wYXVzZWRf
KQorICAgIHBhY2VyXy0+UmVzdW1lKCk7CisgIHBhY2VyX3BhdXNlZF8gPSBwYXVzZWQ7Cit9CisK
K3ZvaWQgQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyOjpPbk5ldHdvcmtJbnZhbGlkYXRpb24oKSB7
CisgIGlmICghY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfLmhhc192YWx1ZSgpKQorICAgIHJldHVy
bjsKKworICB1aW50MzJfdCB0YXJnZXRfYml0cmF0ZV9icHMgPSBjdXJyZW50X3RhcmdldF9yYXRl
X21zZ18tPnRhcmdldF9yYXRlLmJwcygpOworICBpbnQ2NF90IHJ0dF9tcyA9CisgICAgICBjdXJy
ZW50X3RhcmdldF9yYXRlX21zZ18tPm5ldHdvcmtfZXN0aW1hdGUucm91bmRfdHJpcF90aW1lLm1z
KCk7CisgIGZsb2F0IGxvc3NfcmF0ZV9yYXRpbyA9CisgICAgICBjdXJyZW50X3RhcmdldF9yYXRl
X21zZ18tPm5ldHdvcmtfZXN0aW1hdGUubG9zc19yYXRlX3JhdGlvOworCisgIGludCBsb3NzX3Jh
dGlvXzI1NSA9IGxvc3NfcmF0ZV9yYXRpbyAqIDI1NTsKKyAgdWludDhfdCBmcmFjdGlvbl9sb3Nz
ID0KKyAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50OF90PihydGM6OlNhZmVDbGFtcChsb3Nz
X3JhdGlvXzI1NSwgMCwgMjU1KSk7CisKKyAgaW50NjRfdCBwcm9iaW5nX2ludGVydmFsX21zID0K
KyAgICAgIGN1cnJlbnRfdGFyZ2V0X3JhdGVfbXNnXy0+bmV0d29ya19lc3RpbWF0ZS5id2VfcGVy
aW9kLm1zKCk7CisKKyAgaWYgKCFuZXR3b3JrX2F2YWlsYWJsZV8pIHsKKyAgICB0YXJnZXRfYml0
cmF0ZV9icHMgPSAwOworICB9IGVsc2UgaWYgKHBhY2VyX3B1c2hiYWNrX2V4cGVyaW1lbnRfKSB7
CisgICAgaW50NjRfdCBxdWV1ZV9sZW5ndGhfbXMgPSBwYWNlcl9leHBlY3RlZF9xdWV1ZV9tc187
CisKKyAgICBpZiAocXVldWVfbGVuZ3RoX21zID09IDApIHsKKyAgICAgIGVuY29kaW5nX3JhdGVf
cmF0aW9fID0gMS4wOworICAgIH0gZWxzZSBpZiAocXVldWVfbGVuZ3RoX21zID4gNTApIHsKKyAg
ICAgIGRvdWJsZSBlbmNvZGluZ19yYXRpbyA9IDEuMCAtIHF1ZXVlX2xlbmd0aF9tcyAvIDEwMDAu
MDsKKyAgICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gc3RkOjptaW4oZW5jb2RpbmdfcmF0ZV9y
YXRpb18sIGVuY29kaW5nX3JhdGlvKTsKKyAgICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gc3Rk
OjptYXgoZW5jb2RpbmdfcmF0ZV9yYXRpb18sIDAuMCk7CisgICAgfQorCisgICAgdGFyZ2V0X2Jp
dHJhdGVfYnBzICo9IGVuY29kaW5nX3JhdGVfcmF0aW9fOworICAgIHRhcmdldF9iaXRyYXRlX2Jw
cyA9IHRhcmdldF9iaXRyYXRlX2JwcyA8IDUwMDAwID8gMCA6IHRhcmdldF9iaXRyYXRlX2JwczsK
KyAgfSBlbHNlIGlmICghZGlzYWJsZV9wYWNlcl9lbWVyZ2VuY3lfc3RvcF8pIHsKKyAgICB0YXJn
ZXRfYml0cmF0ZV9icHMgPSBJc1NlbmRRdWV1ZUZ1bGwoKSA/IDAgOiB0YXJnZXRfYml0cmF0ZV9i
cHM7CisgIH0KKworICBpZiAoSGFzTmV0d29ya1BhcmFtZXRlcnNUb1JlcG9ydENoYW5nZWQodGFy
Z2V0X2JpdHJhdGVfYnBzLCBmcmFjdGlvbl9sb3NzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnR0X21zKSkgeworICAgIG9ic2VydmVyXy0+T25OZXR3b3JrQ2hh
bmdlZCh0YXJnZXRfYml0cmF0ZV9icHMsIGZyYWN0aW9uX2xvc3MsIHJ0dF9tcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmluZ19pbnRlcnZhbF9tcyk7CisgIH0KK30KK2Jv
b2wgQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyOjpIYXNOZXR3b3JrUGFyYW1ldGVyc1RvUmVwb3J0
Q2hhbmdlZCgKKyAgICBpbnQ2NF90IHRhcmdldF9iaXRyYXRlX2JwcywKKyAgICB1aW50OF90IGZy
YWN0aW9uX2xvc3MsCisgICAgaW50NjRfdCBydHRfbXMpIHsKKyAgYm9vbCBjaGFuZ2VkID0gbGFz
dF9yZXBvcnRlZF90YXJnZXRfYml0cmF0ZV9icHNfICE9IHRhcmdldF9iaXRyYXRlX2JwcyB8fAor
ICAgICAgICAgICAgICAgICAodGFyZ2V0X2JpdHJhdGVfYnBzID4gMCAmJgorICAgICAgICAgICAg
ICAgICAgKGxhc3RfcmVwb3J0ZWRfZnJhY3Rpb25fbG9zc18gIT0gZnJhY3Rpb25fbG9zcyB8fAor
ICAgICAgICAgICAgICAgICAgIGxhc3RfcmVwb3J0ZWRfcnR0X21zXyAhPSBydHRfbXMpKTsKKyAg
aWYgKGNoYW5nZWQgJiYKKyAgICAgIChsYXN0X3JlcG9ydGVkX3RhcmdldF9iaXRyYXRlX2Jwc18g
PT0gMCB8fCB0YXJnZXRfYml0cmF0ZV9icHMgPT0gMCkpIHsKKyAgICBSVENfTE9HKExTX0lORk8p
IDw8ICJCaXRyYXRlIGVzdGltYXRlIHN0YXRlIGNoYW5nZWQsIEJXRTogIgorICAgICAgICAgICAg
ICAgICAgICAgPDwgdGFyZ2V0X2JpdHJhdGVfYnBzIDw8ICIgYnBzLiI7CisgIH0KKyAgbGFzdF9y
ZXBvcnRlZF90YXJnZXRfYml0cmF0ZV9icHNfID0gdGFyZ2V0X2JpdHJhdGVfYnBzOworICBsYXN0
X3JlcG9ydGVkX2ZyYWN0aW9uX2xvc3NfID0gZnJhY3Rpb25fbG9zczsKKyAgbGFzdF9yZXBvcnRl
ZF9ydHRfbXNfID0gcnR0X21zOworICByZXR1cm4gY2hhbmdlZDsKK30KKworYm9vbCBDb25nZXN0
aW9uQ29udHJvbEhhbmRsZXI6OklzU2VuZFF1ZXVlRnVsbCgpIGNvbnN0IHsKKyAgcmV0dXJuIHBh
Y2VyX2V4cGVjdGVkX3F1ZXVlX21zXyA+IFBhY2VkU2VuZGVyOjprTWF4UXVldWVMZW5ndGhNczsK
K30KKworYWJzbDo6b3B0aW9uYWw8VGFyZ2V0VHJhbnNmZXJSYXRlPgorQ29uZ2VzdGlvbkNvbnRy
b2xIYW5kbGVyOjpsYXN0X3RyYW5zZmVyX3JhdGUoKSB7CisgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NF
UVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKKyAgcmV0dXJuIGN1cnJlbnRfdGFyZ2V0
X3JhdGVfbXNnXzsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL2Nv
bnRyb2xfaGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1NmMyYTllMjcxMjg0MDZmNWJiODA0MGE1NmRk
NDRjZDg5MDU2MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvY29udHJv
bF9oYW5kbGVyLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
Zm5kZWYgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfUlRQX0NPTlRST0xfSEFORExFUl9I
XworI2RlZmluZSBNT0RVTEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9SVFBfQ09OVFJPTF9IQU5E
TEVSX0hfCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5j
bHVkZSAiYXBpL3RyYW5zcG9ydC9uZXR3b3JrX2NvbnRyb2wuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9pbmNsdWRlL25ldHdvcmtfY2hhbmdlZF9vYnNlcnZlci5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3NlcXVlbmNlZF90YXNrX2NoZWNrZXIuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7Cisv
LyBUaGlzIGlzIHVzZWQgdG8gb2JzZXJ2ZSB0aGUgbmV0d29yayBjb250cm9sbGVyIHN0YXRlIGFu
ZCByb3V0ZSBjYWxscyB0bworLy8gdGhlIHByb3BlciBoYW5kbGVyLiBJdCBhbHNvIGtlZXBzIGNh
Y2hlZCB2YWx1ZXMgZm9yIHNhZmUgYXN5bmNocm9ub3VzIHVzZS4KKy8vIFRoaXMgbWFrZXMgc3Vy
ZSB0aGF0IHRoaW5ncyBydW5uaW5nIG9uIHRoZSB3b3JrZXIgcXVldWUgY2FuJ3QgYWNjZXNzIHN0
YXRlCisvLyBpbiBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyLCB3aGljaCB3b3VsZCByaXNr
IGNhdXNpbmcgZGF0YSByYWNlIG9uCisvLyBkZXN0cnVjdGlvbiB1bmxlc3MgbWVtYmVycyBhcmUg
cHJvcGVybHkgb3JkZXJlZC4KK2NsYXNzIENvbmdlc3Rpb25Db250cm9sSGFuZGxlciB7CisgcHVi
bGljOgorICBDb25nZXN0aW9uQ29udHJvbEhhbmRsZXIoTmV0d29ya0NoYW5nZWRPYnNlcnZlciog
b2JzZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNlZFNlbmRlciogcGFjZXIp
OworICB+Q29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyKCk7CisKKyAgdm9pZCBQb3N0VXBkYXRlcyhO
ZXR3b3JrQ29udHJvbFVwZGF0ZSB1cGRhdGUpOworCisgIHZvaWQgT25OZXR3b3JrQXZhaWxhYmls
aXR5KE5ldHdvcmtBdmFpbGFiaWxpdHkgbXNnKTsKKyAgdm9pZCBPbk91dHN0YW5kaW5nRGF0YShE
YXRhU2l6ZSBpbl9mbGlnaHRfZGF0YSk7CisgIHZvaWQgT25QYWNlclF1ZXVlVXBkYXRlKFRpbWVE
ZWx0YSBleHBlY3RlZF9xdWV1ZV90aW1lKTsKKworICBhYnNsOjpvcHRpb25hbDxUYXJnZXRUcmFu
c2ZlclJhdGU+IGxhc3RfdHJhbnNmZXJfcmF0ZSgpOworCisgcHJpdmF0ZToKKyAgdm9pZCBTZXRQ
YWNlclN0YXRlKGJvb2wgcGF1c2VkKTsKKyAgdm9pZCBPbk5ldHdvcmtJbnZhbGlkYXRpb24oKTsK
KyAgYm9vbCBJc1NlbmRRdWV1ZUZ1bGwoKSBjb25zdDsKKyAgYm9vbCBIYXNOZXR3b3JrUGFyYW1l
dGVyc1RvUmVwb3J0Q2hhbmdlZChpbnQ2NF90IGJpdHJhdGVfYnBzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGxvc3NfcmF0ZV9yYXRpbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lRGVsdGEgcnR0KTsKKwor
ICBib29sIEhhc05ldHdvcmtQYXJhbWV0ZXJzVG9SZXBvcnRDaGFuZ2VkKGludDY0X3QgYml0cmF0
ZV9icHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCBmcmFjdGlvbl9sb3NzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgcnR0KTsKKyAgTmV0d29ya0NoYW5nZWRPYnNlcnZlciogb2JzZXJ2ZXJfID0g
bnVsbHB0cjsKKyAgUGFjZWRTZW5kZXIqIGNvbnN0IHBhY2VyXzsKKworICBhYnNsOjpvcHRpb25h
bDxUYXJnZXRUcmFuc2ZlclJhdGU+IGN1cnJlbnRfdGFyZ2V0X3JhdGVfbXNnXzsKKyAgYm9vbCBu
ZXR3b3JrX2F2YWlsYWJsZV8gPSB0cnVlOworICBib29sIHBhY2VyX3BhdXNlZF8gPSBmYWxzZTsK
KyAgaW50NjRfdCBsYXN0X3JlcG9ydGVkX3RhcmdldF9iaXRyYXRlX2Jwc18gPSAwOworICB1aW50
OF90IGxhc3RfcmVwb3J0ZWRfZnJhY3Rpb25fbG9zc18gPSAwOworICBpbnQ2NF90IGxhc3RfcmVw
b3J0ZWRfcnR0X21zXyA9IDA7CisgIGNvbnN0IGJvb2wgcGFjZXJfcHVzaGJhY2tfZXhwZXJpbWVu
dF87CisgIGNvbnN0IGJvb2wgZGlzYWJsZV9wYWNlcl9lbWVyZ2VuY3lfc3RvcF87CisgIHVpbnQz
Ml90IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfOworICBpbnQ2NF90IHBhY2VyX2V4
cGVjdGVkX3F1ZXVlX21zXyA9IDA7CisgIGRvdWJsZSBlbmNvZGluZ19yYXRlX3JhdGlvXyA9IDEu
MDsKKworICBydGM6OlNlcXVlbmNlZFRhc2tDaGVja2VyIHNlcXVlbmNlZF9jaGVja2VyXzsKKyAg
UlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhDb25nZXN0aW9uQ29udHJvbEhhbmRs
ZXIpOworfTsKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKyNlbmRpZiAgLy8gTU9EVUxFU19DT05H
RVNUSU9OX0NPTlRST0xMRVJfUlRQX0NPTlRST0xfSEFORExFUl9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvcnRwL2luY2x1ZGUvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvcnRwL2luY2x1ZGUvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJv
bGxlci5oCmluZGV4IGVmZTRkMmZmNDc3NTZiNDQxZjUyZDY0ZjE0OWJmOGEyZWNhYzI4NTQuLjU1
NDY1Y2I3NWY4OGY2OTVjZWM5ODY2OTdkZmViZGRlYjkxMWYzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL3J0cC9pbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9ydHAvaW5jbHVkZS9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250
cm9sbGVyLmgKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdv
cmtfdHlwZXMuaCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9p
bmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2luY2x1ZGUv
c2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl9pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJt
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvcGFjZXJfY29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9jb250cm9sX2hhbmRsZXIu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0
X2ZlZWRiYWNrX2FkYXB0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKQEAgLTQw
LDE4ICs0MCwxMSBAQCBzdHJ1Y3QgU2VudFBhY2tldDsKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBj
bGFzcyBDbG9jazsKLWNsYXNzIFJhdGVMaW1pdGVyOwogY2xhc3MgUnRjRXZlbnRMb2c7CiAKIG5h
bWVzcGFjZSB3ZWJydGNfY2MgewogCiBuYW1lc3BhY2Ugc2VuZF9zaWRlX2NjX2ludGVybmFsIHsK
LS8vIFRoaXMgaXMgdXNlZCB0byBvYnNlcnZlIHRoZSBuZXR3b3JrIGNvbnRyb2xsZXIgc3RhdGUg
YW5kIHJvdXRlIGNhbGxzIHRvCi0vLyB0aGUgcHJvcGVyIGhhbmRsZXIuIEl0IGFsc28ga2VlcHMg
Y2FjaGVkIHZhbHVlcyBmb3Igc2FmZSBhc3luY2hyb25vdXMgdXNlLgotLy8gVGhpcyBtYWtlcyBz
dXJlIHRoYXQgdGhpbmdzIHJ1bm5pbmcgb24gdGhlIHdvcmtlciBxdWV1ZSBjYW4ndCBhY2Nlc3Mg
c3RhdGUKLS8vIGluIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXIsIHdoaWNoIHdvdWxkIHJp
c2sgY2F1c2luZyBkYXRhIHJhY2Ugb24KLS8vIGRlc3RydWN0aW9uIHVubGVzcyBtZW1iZXJzIGFy
ZSBwcm9wZXJseSBvcmRlcmVkLgotY2xhc3MgQ29udHJvbEhhbmRsZXI7CiAKIC8vIFRPRE8oc3J0
ZSk6IE1ha2Ugc3VyZSB0aGUgUGVyaW9kaWNUYXNrIGltcGxlbWVudGF0aW9uIGlzIHJldXNhYmxl
IGFuZCBtb3ZlIGl0CiAvLyB0byB0YXNrX3F1ZXVlLmguCkBAIC0xODIsMTAgKzE3NSw3IEBAIGNs
YXNzIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXIKICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4KICAgICAgIGNvbnRyb2xsZXJfZmFj
dG9yeV9mYWxsYmFja18gUlRDX0dVQVJERURfQlkodGFza19xdWV1ZV8pOwogCi0gIGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxQYWNlckNvbnRyb2xsZXI+IHBhY2VyX2NvbnRyb2xsZXJfCi0gICAgICBS
VENfR1VBUkRFRF9CWSh0YXNrX3F1ZXVlXyk7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPHNlbmRfc2lk
ZV9jY19pbnRlcm5hbDo6Q29udHJvbEhhbmRsZXI+IGNvbnRyb2xfaGFuZGxlcl8KKyAgc3RkOjp1
bmlxdWVfcHRyPENvbmdlc3Rpb25Db250cm9sSGFuZGxlcj4gY29udHJvbF9oYW5kbGVyXwogICAg
ICAgUlRDX0dVQVJERURfQlkodGFza19xdWV1ZV8pOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrQ29udHJvbGxlckludGVyZmFjZT4gY29udHJvbGxlcl8KQEAgLTIwMSw2ICsxOTEsNyBAQCBj
bGFzcyBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyCiAgIE5ldHdvcmtDb250cm9sbGVyQ29u
ZmlnIGluaXRpYWxfY29uZmlnXyBSVENfR1VBUkRFRF9CWSh0YXNrX3F1ZXVlXyk7CiAgIFN0cmVh
bXNDb25maWcgc3RyZWFtc19jb25maWdfIFJUQ19HVUFSREVEX0JZKHRhc2tfcXVldWVfKTsKIAor
ICBjb25zdCBib29sIHJlc2V0X2ZlZWRiYWNrX29uX3JvdXRlX2NoYW5nZV87CiAgIGNvbnN0IGJv
b2wgc2VuZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXzsKICAgLy8gVHJhbnNwb3J0IG92ZXJoZWFk
IGlzIHdyaXR0ZW4gYnkgT25OZXR3b3JrUm91dGVDaGFuZ2VkIGFuZCByZWFkIGJ5CiAgIC8vIEFk
ZFBhY2tldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9wYWNlcl9jb250cm9sbGVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3BhY2VyX2NvbnRyb2xsZXIuY2MKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGFmMDYyZTg4MWVlZWYyMDgwMGJlMDA3N2JjYzk3NzQzMzMzN2Nk
NTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvcnRwL3BhY2VyX2NvbnRyb2xsZXIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw3MCAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL3J0cC9wYWNlcl9jb250cm9sbGVyLmgiCi0KLSNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0KLW5hbWVzcGFj
ZSB3ZWJydGMgewotCi1QYWNlckNvbnRyb2xsZXI6OlBhY2VyQ29udHJvbGxlcihQYWNlZFNlbmRl
ciogcGFjZXIpIDogcGFjZXJfKHBhY2VyKSB7Ci0gIHNlcXVlbmNlZF9jaGVja2VyXy5EZXRhY2go
KTsKLX0KLQotUGFjZXJDb250cm9sbGVyOjp+UGFjZXJDb250cm9sbGVyKCkgPSBkZWZhdWx0Owot
Ci12b2lkIFBhY2VyQ29udHJvbGxlcjo6T25Db25nZXN0aW9uV2luZG93KERhdGFTaXplIGNvbmdl
c3Rpb25fd2luZG93KSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVu
Y2VkX2NoZWNrZXJfKTsKLSAgaWYgKGNvbmdlc3Rpb25fd2luZG93LklzRmluaXRlKCkpCi0gICAg
cGFjZXJfLT5TZXRDb25nZXN0aW9uV2luZG93KGNvbmdlc3Rpb25fd2luZG93LmJ5dGVzKCkpOwot
ICBlbHNlCi0gICAgcGFjZXJfLT5TZXRDb25nZXN0aW9uV2luZG93KFBhY2VkU2VuZGVyOjprTm9D
b25nZXN0aW9uV2luZG93KTsKLX0KLQotdm9pZCBQYWNlckNvbnRyb2xsZXI6Ok9uTmV0d29ya0F2
YWlsYWJpbGl0eShOZXR3b3JrQXZhaWxhYmlsaXR5IG1zZykgewotICBSVENfRENIRUNLX0NBTExF
RF9TRVFVRU5USUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0gIG5ldHdvcmtfYXZhaWxhYmxl
XyA9IG1zZy5uZXR3b3JrX2F2YWlsYWJsZTsKLSAgcGFjZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0Rh
dGEoMCk7Ci0gIFNldFBhY2VyU3RhdGUoIW1zZy5uZXR3b3JrX2F2YWlsYWJsZSk7Ci19Ci0KLXZv
aWQgUGFjZXJDb250cm9sbGVyOjpPbk5ldHdvcmtSb3V0ZUNoYW5nZShOZXR3b3JrUm91dGVDaGFu
Z2UpIHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tl
cl8pOwotICBwYWNlcl8tPlVwZGF0ZU91dHN0YW5kaW5nRGF0YSgwKTsKLX0KLQotdm9pZCBQYWNl
ckNvbnRyb2xsZXI6Ok9uUGFjZXJDb25maWcoUGFjZXJDb25maWcgbXNnKSB7Ci0gIFJUQ19EQ0hF
Q0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKLSAgRGF0YVJhdGUg
cGFjaW5nX3JhdGUgPSBtc2cuZGF0YV93aW5kb3cgLyBtc2cudGltZV93aW5kb3c7Ci0gIERhdGFS
YXRlIHBhZGRpbmdfcmF0ZSA9IG1zZy5wYWRfd2luZG93IC8gbXNnLnRpbWVfd2luZG93OwotICBw
YWNlcl8tPlNldFBhY2luZ1JhdGVzKHBhY2luZ19yYXRlLmJwcygpLCBwYWRkaW5nX3JhdGUuYnBz
KCkpOwotfQotCi12b2lkIFBhY2VyQ29udHJvbGxlcjo6T25Qcm9iZUNsdXN0ZXJDb25maWcoUHJv
YmVDbHVzdGVyQ29uZmlnIGNvbmZpZykgewotICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFM
TFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0gIGludDY0X3QgYml0cmF0ZV9icHMgPSBjb25maWcu
dGFyZ2V0X2RhdGFfcmF0ZS5icHMoKTsKLSAgcGFjZXJfLT5DcmVhdGVQcm9iZUNsdXN0ZXIoYml0
cmF0ZV9icHMpOwotfQotCi12b2lkIFBhY2VyQ29udHJvbGxlcjo6T25PdXRzdGFuZGluZ0RhdGEo
RGF0YVNpemUgaW5fZmxpZ2h0X2RhdGEpIHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElB
TExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICBwYWNlcl8tPlVwZGF0ZU91dHN0YW5kaW5nRGF0
YShpbl9mbGlnaHRfZGF0YS5ieXRlcygpKTsKLX0KLQotdm9pZCBQYWNlckNvbnRyb2xsZXI6OlNl
dFBhY2VyU3RhdGUoYm9vbCBwYXVzZWQpIHsKLSAgaWYgKHBhdXNlZCAmJiAhcGFjZXJfcGF1c2Vk
XykKLSAgICBwYWNlcl8tPlBhdXNlKCk7Ci0gIGVsc2UgaWYgKCFwYXVzZWQgJiYgcGFjZXJfcGF1
c2VkXykKLSAgICBwYWNlcl8tPlJlc3VtZSgpOwotICBwYWNlcl9wYXVzZWRfID0gcGF1c2VkOwot
fQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9y
dHAvcGFjZXJfY29udHJvbGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3BhY2VyX2NvbnRyb2xs
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc3OGI3ODQ4OTAzNTU0OTE0NzRh
ZWVlZTU2MzEyYmUzNzQ5ODEwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvcGFjZXJfY29udHJvbGxlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYg
TU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfUlRQX1BBQ0VSX0NPTlRST0xMRVJfSF8KLSNk
ZWZpbmUgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfUlRQX1BBQ0VSX0NPTlRST0xMRVJf
SF8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29y
a190eXBlcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2NoZWNrZXIuaCIKLQotbmFtZXNwYWNlIHdl
YnJ0YyB7Ci1jbGFzcyBDbG9jazsKLQotLy8gV3JhcHBlciBjbGFzcyB0byBjb250cm9sIHBhY2Vy
IHVzaW5nIHRhc2sgcXVldWVzLiBOb3RlIHRoYXQgdGhpcyBjbGFzcyBpcwotLy8gb25seSBkZXNp
Z25lZCB0byBiZSB1c2VkIGZyb20gYSBzaW5nbGUgdGFzayBxdWV1ZSBhbmQgaGFzIG5vIGJ1aWx0
IGluCi0vLyBjb25jdXJyZW5jeSBzYWZldHkuCi0vLyBUT0RPKHNydGUpOiBJbnRlZ3JhdGUgdGhp
cyBpbnRlcmZhY2UgZGlyZWN0bHkgaW50byBQYWNlZFNlbmRlci4KLWNsYXNzIFBhY2VyQ29udHJv
bGxlciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBQYWNlckNvbnRyb2xsZXIoUGFjZWRTZW5kZXIq
IHBhY2VyKTsKLSAgflBhY2VyQ29udHJvbGxlcigpOwotICB2b2lkIE9uQ29uZ2VzdGlvbldpbmRv
dyhEYXRhU2l6ZSBtc2cpOwotICB2b2lkIE9uTmV0d29ya0F2YWlsYWJpbGl0eShOZXR3b3JrQXZh
aWxhYmlsaXR5IG1zZyk7Ci0gIHZvaWQgT25OZXR3b3JrUm91dGVDaGFuZ2UoTmV0d29ya1JvdXRl
Q2hhbmdlIG1zZyk7Ci0gIHZvaWQgT25PdXRzdGFuZGluZ0RhdGEoRGF0YVNpemUgaW5fZmxpZ2h0
X2RhdGEpOwotICB2b2lkIE9uUGFjZXJDb25maWcoUGFjZXJDb25maWcgbXNnKTsKLSAgdm9pZCBP
blByb2JlQ2x1c3RlckNvbmZpZyhQcm9iZUNsdXN0ZXJDb25maWcgbXNnKTsKLQotIHByaXZhdGU6
Ci0gIHZvaWQgU2V0UGFjZXJTdGF0ZShib29sIHBhdXNlZCk7Ci0gIFBhY2VkU2VuZGVyKiBjb25z
dCBwYWNlcl87Ci0KLSAgYWJzbDo6b3B0aW9uYWw8UGFjZXJDb25maWc+IGN1cnJlbnRfcGFjZXJf
Y29uZmlnXzsKLSAgYm9vbCBwYWNlcl9wYXVzZWRfID0gZmFsc2U7Ci0gIGJvb2wgbmV0d29ya19h
dmFpbGFibGVfID0gdHJ1ZTsKLQotICBydGM6OlNlcXVlbmNlZFRhc2tDaGVja2VyIHNlcXVlbmNl
ZF9jaGVja2VyXzsKLSAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhQYWNlckNv
bnRyb2xsZXIpOwotfTsKLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLSNlbmRpZiAgLy8gTU9EVUxF
U19DT05HRVNUSU9OX0NPTlRST0xMRVJfUlRQX1BBQ0VSX0NPTlRST0xMRVJfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MK
aW5kZXggMjY2YTVkYzc0MDBjYmQxMTA3OTI5NGY1OTgwOWNhZDg3YmM1MTU4NC4uOTgyMzgwZjQ1
N2FlZDNjODRmZTNkZDA5N2IxZjU0ZGJiNzc2MTVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvcnRwL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvcnRwL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MKQEAgLTE1LDE5ICsx
NSwxOSBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9nb29nX2NjX2Zh
Y3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuaCIKLSNpbmNs
dWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dpbmRvd19wdXNo
YmFja19jb250cm9sbGVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy9pbmNsdWRlL2dvb2dfY2NfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9iaW5kLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdv
cmsvc2VudF9wYWNrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZl
cnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKICNp
bmNsdWRlICJydGNfYmFzZS9yYXRlX2xpbWl0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zZXF1
ZW5jZWRfdGFza19jaGVja2VyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2lu
Y2x1ZGUvZmllbGRfdHJpYWwuaCIKIApAQCAtMzcsNzAgKzM3LDggQEAgbmFtZXNwYWNlIHdlYnJ0
YyB7CiBuYW1lc3BhY2Ugd2VicnRjX2NjIHsKIG5hbWVzcGFjZSB7CiB1c2luZyBzZW5kX3NpZGVf
Y2NfaW50ZXJuYWw6OlBlcmlvZGljVGFzazsKLQotY29uc3QgY2hhciBrQ3duZEV4cGVyaW1lbnRb
XSA9ICJXZWJSVEMtQ3duZEV4cGVyaW1lbnQiOwotCi0vLyBXaGVuIENvbmdlc3Rpb25XaW5kb3dQ
dXNoYmFjayBpcyBlbmFibGVkLCB0aGUgcGFjZXIgaXMgb2JsaXZpb3VzIHRvCi0vLyB0aGUgY29u
Z2VzdGlvbiB3aW5kb3cuIFRoZSByZWxhdGlvbiBiZXR3ZWVuIG91dHN0YW5kaW5nIGRhdGEgYW5k
Ci0vLyB0aGUgY29uZ2VzdGlvbiB3aW5kb3cgYWZmZWN0cyBlbmNvZGVyIGFsbG9jYXRpb25zIGRp
cmVjdGx5LgotY29uc3QgY2hhciBrQ29uZ2VzdGlvblB1c2hiYWNrRXhwZXJpbWVudFtdID0gIldl
YlJUQy1Db25nZXN0aW9uV2luZG93UHVzaGJhY2siOwotCi0vLyBXaGVuIFBhY2VyUHVzaGJhY2tF
eHBlcmltZW50IGlzIGVuYWJsZWQsIGJ1aWxkLXVwIGluIHRoZSBwYWNlciBkdWUgdG8KLS8vIHRo
ZSBjb25nZXN0aW9uIHdpbmRvdyBhbmQvb3IgZGF0YSBzcGlrZXMgcmVkdWNlcyBlbmNvZGVyIGFs
bG9jYXRpb25zLgotY29uc3QgY2hhciBrUGFjZXJQdXNoYmFja0V4cGVyaW1lbnRbXSA9ICJXZWJS
VEMtUGFjZXJQdXNoYmFja0V4cGVyaW1lbnQiOwogY29uc3QgaW50NjRfdCBQYWNlclF1ZXVlVXBk
YXRlSW50ZXJ2YWxNcyA9IDI1OwogCi1ib29sIElzUGFjZXJQdXNoYmFja0V4cGVyaW1lbnRFbmFi
bGVkKCkgewotICByZXR1cm4gd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtQYWNlclB1
c2hiYWNrRXhwZXJpbWVudCk7Ci19Ci0KLWJvb2wgSXNDb25nZXN0aW9uV2luZG93UHVzaGJhY2tF
eHBlcmltZW50RW5hYmxlZCgpIHsKLSAgcmV0dXJuIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5h
YmxlZChrQ29uZ2VzdGlvblB1c2hiYWNrRXhwZXJpbWVudCkgJiYKLSAgICAgICAgIHdlYnJ0Yzo6
ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrQ3duZEV4cGVyaW1lbnQpOwotfQotCi1zdGQ6OnVuaXF1
ZV9wdHI8Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcj4KLU1heWJlSW5pdGFsaXpl
Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcigpIHsKLSAgcmV0dXJuIElzQ29uZ2Vz
dGlvbldpbmRvd1B1c2hiYWNrRXhwZXJpbWVudEVuYWJsZWQoKQotICAgICAgICAgICAgID8gYWJz
bDo6bWFrZV91bmlxdWU8Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcj4oKQotICAg
ICAgICAgICAgIDogbnVsbHB0cjsKLX0KLQotdm9pZCBTb3J0UGFja2V0RmVlZGJhY2tWZWN0b3Io
c3RkOjp2ZWN0b3I8d2VicnRjOjpQYWNrZXRGZWVkYmFjaz4qIGlucHV0KSB7Ci0gIHN0ZDo6c29y
dChpbnB1dC0+YmVnaW4oKSwgaW5wdXQtPmVuZCgpLCBQYWNrZXRGZWVkYmFja0NvbXBhcmF0b3Io
KSk7Ci19Ci0KLVBhY2tldFJlc3VsdCBOZXR3b3JrUGFja2V0RmVlZGJhY2tGcm9tUnRwUGFja2V0
RmVlZGJhY2soCi0gICAgY29uc3Qgd2VicnRjOjpQYWNrZXRGZWVkYmFjayYgcGYpIHsKLSAgUGFj
a2V0UmVzdWx0IGZlZWRiYWNrOwotICBpZiAocGYuYXJyaXZhbF90aW1lX21zID09IHdlYnJ0Yzo6
UGFja2V0RmVlZGJhY2s6OmtOb3RSZWNlaXZlZCkKLSAgICBmZWVkYmFjay5yZWNlaXZlX3RpbWUg
PSBUaW1lc3RhbXA6OlBsdXNJbmZpbml0eSgpOwotICBlbHNlCi0gICAgZmVlZGJhY2sucmVjZWl2
ZV90aW1lID0gVGltZXN0YW1wOjptcyhwZi5hcnJpdmFsX3RpbWVfbXMpOwotICBpZiAocGYuc2Vu
ZF90aW1lX21zICE9IHdlYnJ0Yzo6UGFja2V0RmVlZGJhY2s6OmtOb1NlbmRUaW1lKSB7Ci0gICAg
ZmVlZGJhY2suc2VudF9wYWNrZXQgPSBTZW50UGFja2V0KCk7Ci0gICAgZmVlZGJhY2suc2VudF9w
YWNrZXQtPnNlcXVlbmNlX251bWJlciA9IHBmLmxvbmdfc2VxdWVuY2VfbnVtYmVyOwotICAgIGZl
ZWRiYWNrLnNlbnRfcGFja2V0LT5zZW5kX3RpbWUgPSBUaW1lc3RhbXA6Om1zKHBmLnNlbmRfdGlt
ZV9tcyk7Ci0gICAgZmVlZGJhY2suc2VudF9wYWNrZXQtPnNpemUgPSBEYXRhU2l6ZTo6Ynl0ZXMo
cGYucGF5bG9hZF9zaXplKTsKLSAgICBmZWVkYmFjay5zZW50X3BhY2tldC0+cGFjaW5nX2luZm8g
PSBwZi5wYWNpbmdfaW5mbzsKLSAgfQotICByZXR1cm4gZmVlZGJhY2s7Ci19Ci0KLXN0ZDo6dmVj
dG9yPFBhY2tldFJlc3VsdD4gUGFja2V0UmVzdWx0c0Zyb21SdHBGZWVkYmFja1ZlY3RvcigKLSAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4mIGZlZWRiYWNrX3ZlY3Rvcikgewot
ICBSVENfRENIRUNLKHN0ZDo6aXNfc29ydGVkKGZlZWRiYWNrX3ZlY3Rvci5iZWdpbigpLCBmZWVk
YmFja192ZWN0b3IuZW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0RmVl
ZGJhY2tDb21wYXJhdG9yKCkpKTsKLQotICBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+IHBhY2tl
dF9mZWVkYmFja3M7Ci0gIHBhY2tldF9mZWVkYmFja3MucmVzZXJ2ZShmZWVkYmFja192ZWN0b3Iu
c2l6ZSgpKTsKLSAgZm9yIChjb25zdCBQYWNrZXRGZWVkYmFjayYgcnRwX2ZlZWRiYWNrIDogZmVl
ZGJhY2tfdmVjdG9yKSB7Ci0gICAgYXV0byBmZWVkYmFjayA9IE5ldHdvcmtQYWNrZXRGZWVkYmFj
a0Zyb21SdHBQYWNrZXRGZWVkYmFjayhydHBfZmVlZGJhY2spOwotICAgIHBhY2tldF9mZWVkYmFj
a3MucHVzaF9iYWNrKGZlZWRiYWNrKTsKLSAgfQotICByZXR1cm4gcGFja2V0X2ZlZWRiYWNrczsK
LX0KLQogVGFyZ2V0UmF0ZUNvbnN0cmFpbnRzIENvbnZlcnRDb25zdHJhaW50cyhpbnQgbWluX2Jp
dHJhdGVfYnBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bWF4X2JpdHJhdGVfYnBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc3RhcnRfYml0cmF0ZV9icHMsCkBAIC0xNjYsMTc3ICsxMDQsNiBAQCBzdGF0aWMgUGVy
aW9kaWNUYXNrKiBTdGFydFBlcmlvZGljVGFzayhydGM6OlRhc2tRdWV1ZSogdGFza19xdWV1ZSwK
IAogfSAgLy8gbmFtZXNwYWNlCiAKLW5hbWVzcGFjZSBzZW5kX3NpZGVfY2NfaW50ZXJuYWwgewot
Y2xhc3MgQ29udHJvbEhhbmRsZXIgewotIHB1YmxpYzoKLSAgQ29udHJvbEhhbmRsZXIoTmV0d29y
a0NoYW5nZWRPYnNlcnZlciogb2JzZXJ2ZXIsCi0gICAgICAgICAgICAgICAgIFBhY2VyQ29udHJv
bGxlciogcGFjZXJfY29udHJvbGxlciwKLSAgICAgICAgICAgICAgICAgY29uc3QgQ2xvY2sqIGNs
b2NrKTsKLQotICB2b2lkIFBvc3RVcGRhdGVzKE5ldHdvcmtDb250cm9sVXBkYXRlIHVwZGF0ZSk7
Ci0KLSAgdm9pZCBPbk5ldHdvcmtBdmFpbGFiaWxpdHkoTmV0d29ya0F2YWlsYWJpbGl0eSBtc2cp
OwotICB2b2lkIE9uT3V0c3RhbmRpbmdEYXRhKERhdGFTaXplIGluX2ZsaWdodF9kYXRhKTsKLSAg
dm9pZCBPblBhY2VyUXVldWVVcGRhdGUoVGltZURlbHRhIGV4cGVjdGVkX3F1ZXVlX3RpbWUpOwot
Ci0gIGFic2w6Om9wdGlvbmFsPFRhcmdldFRyYW5zZmVyUmF0ZT4gbGFzdF90cmFuc2Zlcl9yYXRl
KCk7Ci0KLSBwcml2YXRlOgotICB2b2lkIE9uTmV0d29ya0ludmFsaWRhdGlvbigpOwotICBib29s
IEdldE5ldHdvcmtQYXJhbWV0ZXJzKGludDMyX3QqIGVzdGltYXRlZF9iaXRyYXRlX2JwcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBmcmFjdGlvbl9sb3NzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QqIHJ0dF9tcyk7Ci0gIGJvb2wgSXNTZW5kUXVl
dWVGdWxsKCkgY29uc3Q7Ci0gIGJvb2wgSGFzTmV0d29ya1BhcmFtZXRlcnNUb1JlcG9ydENoYW5n
ZWQoaW50NjRfdCBiaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90IGZyYWN0aW9uX2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBydHQpOwotICBOZXR3b3JrQ2hhbmdlZE9ic2Vy
dmVyKiBvYnNlcnZlcl8gPSBudWxscHRyOwotICBQYWNlckNvbnRyb2xsZXIqIHBhY2VyX2NvbnRy
b2xsZXJfOwotCi0gIGFic2w6Om9wdGlvbmFsPFRhcmdldFRyYW5zZmVyUmF0ZT4gY3VycmVudF90
YXJnZXRfcmF0ZV9tc2dfOwotICBib29sIG5ldHdvcmtfYXZhaWxhYmxlXyA9IHRydWU7Ci0gIGlu
dDY0X3QgbGFzdF9yZXBvcnRlZF90YXJnZXRfYml0cmF0ZV9icHNfID0gMDsKLSAgdWludDhfdCBs
YXN0X3JlcG9ydGVkX2ZyYWN0aW9uX2xvc3NfID0gMDsKLSAgaW50NjRfdCBsYXN0X3JlcG9ydGVk
X3J0dF9tc18gPSAwOwotICBjb25zdCBib29sIHBhY2VyX3B1c2hiYWNrX2V4cGVyaW1lbnRfID0g
ZmFsc2U7Ci0gIHVpbnQzMl90IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfOwotICBp
bnQ2NF90IHBhY2VyX2V4cGVjdGVkX3F1ZXVlX21zXyA9IDA7Ci0gIGRvdWJsZSBlbmNvZGluZ19y
YXRlX3JhdGlvXyA9IDEuMDsKLSAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENvbmdlc3Rpb25XaW5k
b3dQdXNoYmFja0NvbnRyb2xsZXI+Ci0gICAgICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19j
b250cm9sbGVyXzsKLQotICBydGM6OlNlcXVlbmNlZFRhc2tDaGVja2VyIHNlcXVlbmNlZF9jaGVj
a2VyXzsKLSAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhDb250cm9sSGFuZGxl
cik7Ci19OwotCi1Db250cm9sSGFuZGxlcjo6Q29udHJvbEhhbmRsZXIoTmV0d29ya0NoYW5nZWRP
YnNlcnZlciogb2JzZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFjZXJD
b250cm9sbGVyKiBwYWNlcl9jb250cm9sbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENsb2NrKiBjbG9jaykKLSAgICA6IG9ic2VydmVyXyhvYnNlcnZlciksCi0gICAg
ICBwYWNlcl9jb250cm9sbGVyXyhwYWNlcl9jb250cm9sbGVyKSwKLSAgICAgIHBhY2VyX3B1c2hi
YWNrX2V4cGVyaW1lbnRfKElzUGFjZXJQdXNoYmFja0V4cGVyaW1lbnRFbmFibGVkKCkpLAotICAg
ICAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8oCi0gICAgICAgICAgTWF5
YmVJbml0YWxpemVDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyKCkpIHsKLSAgc2Vx
dWVuY2VkX2NoZWNrZXJfLkRldGFjaCgpOwotfQotCi12b2lkIENvbnRyb2xIYW5kbGVyOjpQb3N0
VXBkYXRlcyhOZXR3b3JrQ29udHJvbFVwZGF0ZSB1cGRhdGUpIHsKLSAgUlRDX0RDSEVDS19DQUxM
RURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICBpZiAodXBkYXRlLmNvbmdl
c3Rpb25fd2luZG93KSB7Ci0gICAgaWYgKGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRy
b2xsZXJfKSB7Ci0gICAgICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXy0+
U2V0RGF0YVdpbmRvdygKLSAgICAgICAgICB1cGRhdGUuY29uZ2VzdGlvbl93aW5kb3cudmFsdWUo
KSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHBhY2VyX2NvbnRyb2xsZXJfLT5PbkNvbmdlc3Rpb25X
aW5kb3coKnVwZGF0ZS5jb25nZXN0aW9uX3dpbmRvdyk7Ci0gICAgfQotICB9Ci0gIGlmICh1cGRh
dGUucGFjZXJfY29uZmlnKSB7Ci0gICAgcGFjZXJfY29udHJvbGxlcl8tPk9uUGFjZXJDb25maWco
KnVwZGF0ZS5wYWNlcl9jb25maWcpOwotICB9Ci0gIGZvciAoY29uc3QgYXV0byYgcHJvYmUgOiB1
cGRhdGUucHJvYmVfY2x1c3Rlcl9jb25maWdzKSB7Ci0gICAgcGFjZXJfY29udHJvbGxlcl8tPk9u
UHJvYmVDbHVzdGVyQ29uZmlnKHByb2JlKTsKLSAgfQotICBpZiAodXBkYXRlLnRhcmdldF9yYXRl
KSB7Ci0gICAgY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfID0gKnVwZGF0ZS50YXJnZXRfcmF0ZTsK
LSAgICBPbk5ldHdvcmtJbnZhbGlkYXRpb24oKTsKLSAgfQotfQotCi12b2lkIENvbnRyb2xIYW5k
bGVyOjpPbk5ldHdvcmtBdmFpbGFiaWxpdHkoTmV0d29ya0F2YWlsYWJpbGl0eSBtc2cpIHsKLSAg
UlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICBu
ZXR3b3JrX2F2YWlsYWJsZV8gPSBtc2cubmV0d29ya19hdmFpbGFibGU7Ci0gIE9uTmV0d29ya0lu
dmFsaWRhdGlvbigpOwotfQotCi12b2lkIENvbnRyb2xIYW5kbGVyOjpPbk91dHN0YW5kaW5nRGF0
YShEYXRhU2l6ZSBpbl9mbGlnaHRfZGF0YSkgewotICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5U
SUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0gIGlmIChjb25nZXN0aW9uX3dpbmRvd19wdXNo
YmFja19jb250cm9sbGVyXykgewotICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRy
b2xsZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoCi0gICAgICAgIGluX2ZsaWdodF9kYXRhLmJ5
dGVzKCkpOwotICB9Ci0gIE9uTmV0d29ya0ludmFsaWRhdGlvbigpOwotfQotCi12b2lkIENvbnRy
b2xIYW5kbGVyOjpPblBhY2VyUXVldWVVcGRhdGUoVGltZURlbHRhIGV4cGVjdGVkX3F1ZXVlX3Rp
bWUpIHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tl
cl8pOwotICBwYWNlcl9leHBlY3RlZF9xdWV1ZV9tc18gPSBleHBlY3RlZF9xdWV1ZV90aW1lLm1z
KCk7Ci0gIE9uTmV0d29ya0ludmFsaWRhdGlvbigpOwotfQotCi12b2lkIENvbnRyb2xIYW5kbGVy
OjpPbk5ldHdvcmtJbnZhbGlkYXRpb24oKSB7Ci0gIGlmICghY3VycmVudF90YXJnZXRfcmF0ZV9t
c2dfLmhhc192YWx1ZSgpKQotICAgIHJldHVybjsKLQotICB1aW50MzJfdCB0YXJnZXRfYml0cmF0
ZV9icHMgPSBjdXJyZW50X3RhcmdldF9yYXRlX21zZ18tPnRhcmdldF9yYXRlLmJwcygpOwotICBp
bnQ2NF90IHJ0dF9tcyA9Ci0gICAgICBjdXJyZW50X3RhcmdldF9yYXRlX21zZ18tPm5ldHdvcmtf
ZXN0aW1hdGUucm91bmRfdHJpcF90aW1lLm1zKCk7Ci0gIGZsb2F0IGxvc3NfcmF0ZV9yYXRpbyA9
Ci0gICAgICBjdXJyZW50X3RhcmdldF9yYXRlX21zZ18tPm5ldHdvcmtfZXN0aW1hdGUubG9zc19y
YXRlX3JhdGlvOwotCi0gIGludCBsb3NzX3JhdGlvXzI1NSA9IGxvc3NfcmF0ZV9yYXRpbyAqIDI1
NTsKLSAgdWludDhfdCBmcmFjdGlvbl9sb3NzID0KLSAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1
aW50OF90PihydGM6OlNhZmVDbGFtcChsb3NzX3JhdGlvXzI1NSwgMCwgMjU1KSk7Ci0KLSAgaW50
NjRfdCBwcm9iaW5nX2ludGVydmFsX21zID0KLSAgICAgIGN1cnJlbnRfdGFyZ2V0X3JhdGVfbXNn
Xy0+bmV0d29ya19lc3RpbWF0ZS5id2VfcGVyaW9kLm1zKCk7Ci0KLSAgaWYgKCFuZXR3b3JrX2F2
YWlsYWJsZV8pIHsKLSAgICB0YXJnZXRfYml0cmF0ZV9icHMgPSAwOwotICB9IGVsc2UgaWYgKGNv
bmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfKSB7Ci0gICAgdGFyZ2V0X2JpdHJh
dGVfYnBzID0KLSAgICAgICAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8t
PlVwZGF0ZVRhcmdldEJpdHJhdGUoCi0gICAgICAgICAgICB0YXJnZXRfYml0cmF0ZV9icHMpOwot
ICB9IGVsc2UgaWYgKCFwYWNlcl9wdXNoYmFja19leHBlcmltZW50XykgewotICAgIHRhcmdldF9i
aXRyYXRlX2JwcyA9IElzU2VuZFF1ZXVlRnVsbCgpID8gMCA6IHRhcmdldF9iaXRyYXRlX2JwczsK
LSAgfSBlbHNlIHsKLSAgICBpbnQ2NF90IHF1ZXVlX2xlbmd0aF9tcyA9IHBhY2VyX2V4cGVjdGVk
X3F1ZXVlX21zXzsKLQotICAgIGlmIChxdWV1ZV9sZW5ndGhfbXMgPT0gMCkgewotICAgICAgZW5j
b2RpbmdfcmF0ZV9yYXRpb18gPSAxLjA7Ci0gICAgfSBlbHNlIGlmIChxdWV1ZV9sZW5ndGhfbXMg
PiA1MCkgewotICAgICAgZG91YmxlIGVuY29kaW5nX3JhdGlvID0gMS4wIC0gcXVldWVfbGVuZ3Ro
X21zIC8gMTAwMC4wOwotICAgICAgZW5jb2RpbmdfcmF0ZV9yYXRpb18gPSBzdGQ6Om1pbihlbmNv
ZGluZ19yYXRlX3JhdGlvXywgZW5jb2RpbmdfcmF0aW8pOwotICAgICAgZW5jb2RpbmdfcmF0ZV9y
YXRpb18gPSBzdGQ6Om1heChlbmNvZGluZ19yYXRlX3JhdGlvXywgMC4wKTsKLSAgICB9Ci0KLSAg
ICB0YXJnZXRfYml0cmF0ZV9icHMgKj0gZW5jb2RpbmdfcmF0ZV9yYXRpb187Ci0gICAgdGFyZ2V0
X2JpdHJhdGVfYnBzID0gdGFyZ2V0X2JpdHJhdGVfYnBzIDwgNTAwMDAgPyAwIDogdGFyZ2V0X2Jp
dHJhdGVfYnBzOwotICB9Ci0gIGlmIChIYXNOZXR3b3JrUGFyYW1ldGVyc1RvUmVwb3J0Q2hhbmdl
ZCh0YXJnZXRfYml0cmF0ZV9icHMsIGZyYWN0aW9uX2xvc3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydHRfbXMpKSB7Ci0gICAgb2JzZXJ2ZXJfLT5Pbk5ldHdv
cmtDaGFuZ2VkKHRhcmdldF9iaXRyYXRlX2JwcywgZnJhY3Rpb25fbG9zcywgcnR0X21zLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9iaW5nX2ludGVydmFsX21zKTsKLSAgfQot
fQotYm9vbCBDb250cm9sSGFuZGxlcjo6SGFzTmV0d29ya1BhcmFtZXRlcnNUb1JlcG9ydENoYW5n
ZWQoCi0gICAgaW50NjRfdCB0YXJnZXRfYml0cmF0ZV9icHMsCi0gICAgdWludDhfdCBmcmFjdGlv
bl9sb3NzLAotICAgIGludDY0X3QgcnR0X21zKSB7Ci0gIGJvb2wgY2hhbmdlZCA9IGxhc3RfcmVw
b3J0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzXyAhPSB0YXJnZXRfYml0cmF0ZV9icHMgfHwKLSAgICAg
ICAgICAgICAgICAgKHRhcmdldF9iaXRyYXRlX2JwcyA+IDAgJiYKLSAgICAgICAgICAgICAgICAg
IChsYXN0X3JlcG9ydGVkX2ZyYWN0aW9uX2xvc3NfICE9IGZyYWN0aW9uX2xvc3MgfHwKLSAgICAg
ICAgICAgICAgICAgICBsYXN0X3JlcG9ydGVkX3J0dF9tc18gIT0gcnR0X21zKSk7Ci0gIGlmIChj
aGFuZ2VkICYmCi0gICAgICAobGFzdF9yZXBvcnRlZF90YXJnZXRfYml0cmF0ZV9icHNfID09IDAg
fHwgdGFyZ2V0X2JpdHJhdGVfYnBzID09IDApKSB7Ci0gICAgUlRDX0xPRyhMU19JTkZPKSA8PCAi
Qml0cmF0ZSBlc3RpbWF0ZSBzdGF0ZSBjaGFuZ2VkLCBCV0U6ICIKLSAgICAgICAgICAgICAgICAg
ICAgIDw8IHRhcmdldF9iaXRyYXRlX2JwcyA8PCAiIGJwcy4iOwotICB9Ci0gIGxhc3RfcmVwb3J0
ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzXyA9IHRhcmdldF9iaXRyYXRlX2JwczsKLSAgbGFzdF9yZXBv
cnRlZF9mcmFjdGlvbl9sb3NzXyA9IGZyYWN0aW9uX2xvc3M7Ci0gIGxhc3RfcmVwb3J0ZWRfcnR0
X21zXyA9IHJ0dF9tczsKLSAgcmV0dXJuIGNoYW5nZWQ7Ci19Ci0KLWJvb2wgQ29udHJvbEhhbmRs
ZXI6OklzU2VuZFF1ZXVlRnVsbCgpIGNvbnN0IHsKLSAgcmV0dXJuIHBhY2VyX2V4cGVjdGVkX3F1
ZXVlX21zXyA+IFBhY2VkU2VuZGVyOjprTWF4UXVldWVMZW5ndGhNczsKLX0KLQotYWJzbDo6b3B0
aW9uYWw8VGFyZ2V0VHJhbnNmZXJSYXRlPiBDb250cm9sSGFuZGxlcjo6bGFzdF90cmFuc2Zlcl9y
YXRlKCkgewotICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNlcXVlbmNlZF9jaGVj
a2VyXyk7Ci0gIHJldHVybiBjdXJyZW50X3RhcmdldF9yYXRlX21zZ187Ci19Ci19ICAvLyBuYW1l
c3BhY2Ugc2VuZF9zaWRlX2NjX2ludGVybmFsCi0KIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xs
ZXI6OlNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXIoCiAgICAgY29uc3QgQ2xvY2sqIGNsb2Nr
LAogICAgIHJ0Yzo6VGFza1F1ZXVlKiB0YXNrX3F1ZXVlLApAQCAtMzUyLDEwICsxMTksMTEgQEAg
U2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6U2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxl
cigKICAgICAgIGNvbnRyb2xsZXJfZmFjdG9yeV93aXRoX2ZlZWRiYWNrXyhjb250cm9sbGVyX2Zh
Y3RvcnkpLAogICAgICAgY29udHJvbGxlcl9mYWN0b3J5X2ZhbGxiYWNrXygKICAgICAgICAgICBh
YnNsOjptYWtlX3VuaXF1ZTxHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3Rvcnk+KGV2ZW50X2xv
ZykpLAotICAgICAgcGFjZXJfY29udHJvbGxlcl8oYWJzbDo6bWFrZV91bmlxdWU8UGFjZXJDb250
cm9sbGVyPihwYWNlcl8pKSwKICAgICAgIHByb2Nlc3NfaW50ZXJ2YWxfKGNvbnRyb2xsZXJfZmFj
dG9yeV9mYWxsYmFja18tPkdldFByb2Nlc3NJbnRlcnZhbCgpKSwKICAgICAgIGxhc3RfcmVwb3J0
X2Jsb2NrX3RpbWVfKFRpbWVzdGFtcDo6bXMoY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSkp
LAogICAgICAgb2JzZXJ2ZXJfKG51bGxwdHIpLAorICAgICAgcmVzZXRfZmVlZGJhY2tfb25fcm91
dGVfY2hhbmdlXygKKyAgICAgICAgICAhZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUJ3
ZS1Ob0ZlZWRiYWNrUmVzZXQiKSksCiAgICAgICBzZW5kX3NpZGVfYndlX3dpdGhfb3ZlcmhlYWRf
KAogICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVNlbmRT
aWRlQndlLVdpdGhPdmVyaGVhZCIpKSwKICAgICAgIHRyYW5zcG9ydF9vdmVyaGVhZF9ieXRlc19w
ZXJfcGFja2V0XygwKSwKQEAgLTM5OCw4ICsxNjYsOCBAQCB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlv
bkNvbnRyb2xsZXI6Ok1heWJlUmVjcmVhdGVDb250cm9sbGVycygpIHsKICAgaWYgKCFuZXR3b3Jr
X2F2YWlsYWJsZV8gfHwgIW9ic2VydmVyXykKICAgICByZXR1cm47CiAgIGlmICghY29udHJvbF9o
YW5kbGVyXykgewotICAgIGNvbnRyb2xfaGFuZGxlcl8gPSBhYnNsOjptYWtlX3VuaXF1ZTxzZW5k
X3NpZGVfY2NfaW50ZXJuYWw6OkNvbnRyb2xIYW5kbGVyPigKLSAgICAgICAgb2JzZXJ2ZXJfLCBw
YWNlcl9jb250cm9sbGVyXy5nZXQoKSwgY2xvY2tfKTsKKyAgICBjb250cm9sX2hhbmRsZXJfID0K
KyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8Q29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyPihvYnNl
cnZlcl8sIHBhY2VyXyk7CiAgIH0KIAogICBpbml0aWFsX2NvbmZpZ18uY29uc3RyYWludHMuYXRf
dGltZSA9CkBAIC00ODksOCArMjU3LDkgQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9s
bGVyOjpPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCiAgICAgaW50IHN0YXJ0X2JpdHJhdGVfYnBzLAog
ICAgIGludCBtaW5fYml0cmF0ZV9icHMsCiAgICAgaW50IG1heF9iaXRyYXRlX2JwcykgewotICB0
cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl8uU2V0TmV0d29ya0lkcyhuZXR3b3JrX3JvdXRlLmxv
Y2FsX25ldHdvcmtfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldHdvcmtfcm91dGUucmVtb3RlX25ldHdvcmtfaWQpOworICBpZiAocmVzZXRfZmVlZGJh
Y2tfb25fcm91dGVfY2hhbmdlXykKKyAgICB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl8uU2V0
TmV0d29ya0lkcyhuZXR3b3JrX3JvdXRlLmxvY2FsX25ldHdvcmtfaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29ya19yb3V0ZS5yZW1vdGVfbmV0
d29ya19pZCk7CiAgIHRyYW5zcG9ydF9vdmVyaGVhZF9ieXRlc19wZXJfcGFja2V0XyA9IG5ldHdv
cmtfcm91dGUucGFja2V0X292ZXJoZWFkOwogCiAgIE5ldHdvcmtSb3V0ZUNoYW5nZSBtc2c7CkBA
IC01MDUsNyArMjc0LDcgQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpPbk5l
dHdvcmtSb3V0ZUNoYW5nZWQoCiAgICAgfSBlbHNlIHsKICAgICAgIFVwZGF0ZUluaXRpYWxDb25z
dHJhaW50cyhtc2cuY29uc3RyYWludHMpOwogICAgIH0KLSAgICBwYWNlcl9jb250cm9sbGVyXy0+
T25OZXR3b3JrUm91dGVDaGFuZ2UobXNnKTsKKyAgICBwYWNlcl8tPlVwZGF0ZU91dHN0YW5kaW5n
RGF0YSgwKTsKICAgfSk7CiB9CiAKQEAgLTU3Miw3ICszNDEsNiBAQCB2b2lkIFNlbmRTaWRlQ29u
Z2VzdGlvbkNvbnRyb2xsZXI6OlNpZ25hbE5ldHdvcmtTdGF0ZShOZXR3b3JrU3RhdGUgc3RhdGUp
IHsKICAgICBuZXR3b3JrX2F2YWlsYWJsZV8gPSBtc2cubmV0d29ya19hdmFpbGFibGU7CiAgICAg
aWYgKGNvbnRyb2xsZXJfKSB7CiAgICAgICBjb250cm9sX2hhbmRsZXJfLT5Qb3N0VXBkYXRlcyhj
b250cm9sbGVyXy0+T25OZXR3b3JrQXZhaWxhYmlsaXR5KG1zZykpOwotICAgICAgcGFjZXJfY29u
dHJvbGxlcl8tPk9uTmV0d29ya0F2YWlsYWJpbGl0eShtc2cpOwogICAgICAgY29udHJvbF9oYW5k
bGVyXy0+T25OZXR3b3JrQXZhaWxhYmlsaXR5KG1zZyk7CiAgICAgfSBlbHNlIHsKICAgICAgIE1h
eWJlQ3JlYXRlQ29udHJvbGxlcnMoKTsKQEAgLTU4MiwyNyArMzUwLDE2IEBAIHZvaWQgU2VuZFNp
ZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6U2lnbmFsTmV0d29ya1N0YXRlKE5ldHdvcmtTdGF0ZSBz
dGF0ZSkgewogCiB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6Ok9uU2VudFBhY2tl
dCgKICAgICBjb25zdCBydGM6OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KSB7Ci0gIC8vIFdlJ3Jl
IG5vdCBpbnRlcmVzdGVkIGluIHBhY2tldHMgd2l0aG91dCBhbiBpZCwgd2hpY2ggbWF5IGJlIHN0
dW4gcGFja2V0cywKLSAgLy8gZXRjLCBzZW50IG9uIHRoZSBzYW1lIHRyYW5zcG9ydC4KLSAgaWYg
KHNlbnRfcGFja2V0LnBhY2tldF9pZCA9PSAtMSkKLSAgICByZXR1cm47Ci0gIHRyYW5zcG9ydF9m
ZWVkYmFja19hZGFwdGVyXy5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQucGFja2V0X2lkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRfcGFja2V0LnNlbmRf
dGltZV9tcyk7Ci0gIE1heWJlVXBkYXRlT3V0c3RhbmRpbmdEYXRhKCk7Ci0gIGF1dG8gcGFja2V0
ID0gdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLkdldFBhY2tldChzZW50X3BhY2tldC5wYWNr
ZXRfaWQpOwotICBpZiAocGFja2V0Lmhhc192YWx1ZSgpKSB7Ci0gICAgU2VudFBhY2tldCBtc2c7
Ci0gICAgbXNnLnNpemUgPSBEYXRhU2l6ZTo6Ynl0ZXMocGFja2V0LT5wYXlsb2FkX3NpemUpOwot
ICAgIG1zZy5zZW5kX3RpbWUgPSBUaW1lc3RhbXA6Om1zKHBhY2tldC0+c2VuZF90aW1lX21zKTsK
LSAgICBtc2cuc2VxdWVuY2VfbnVtYmVyID0gcGFja2V0LT5sb25nX3NlcXVlbmNlX251bWJlcjsK
LSAgICBtc2cuZGF0YV9pbl9mbGlnaHQgPQotICAgICAgICBEYXRhU2l6ZTo6Ynl0ZXModHJhbnNw
b3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLkdldE91dHN0YW5kaW5nQnl0ZXMoKSk7Ci0gICAgdGFza19x
dWV1ZV8tPlBvc3RUYXNrKFt0aGlzLCBtc2ddKCkgeworICBhYnNsOjpvcHRpb25hbDxTZW50UGFj
a2V0PiBwYWNrZXRfbXNnID0KKyAgICAgIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5Qcm9j
ZXNzU2VudFBhY2tldChzZW50X3BhY2tldCk7CisgIGlmIChwYWNrZXRfbXNnKSB7CisgICAgdGFz
a19xdWV1ZV8tPlBvc3RUYXNrKFt0aGlzLCBwYWNrZXRfbXNnXSgpIHsKICAgICAgIFJUQ19EQ0hF
Q0tfUlVOX09OKHRhc2tfcXVldWVfKTsKICAgICAgIGlmIChjb250cm9sbGVyXykKLSAgICAgICAg
Y29udHJvbF9oYW5kbGVyXy0+UG9zdFVwZGF0ZXMoY29udHJvbGxlcl8tPk9uU2VudFBhY2tldCht
c2cpKTsKKyAgICAgICAgY29udHJvbF9oYW5kbGVyXy0+UG9zdFVwZGF0ZXMoY29udHJvbGxlcl8t
Pk9uU2VudFBhY2tldCgqcGFja2V0X21zZykpOwogICAgIH0pOwogICB9CisgIE1heWJlVXBkYXRl
T3V0c3RhbmRpbmdEYXRhKCk7CiB9CiAKIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxl
cjo6T25SdHRVcGRhdGUoaW50NjRfdCBhdmdfcnR0X21zLApAQCAtNjg3LDM5ICs0NDQsMjQgQEAg
dm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpBZGRQYWNrZXQoCiB2b2lkIFNlbmRT
aWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0RmVlZGJhY2soCiAgICAgY29uc3Qg
cnRjcDo6VHJhbnNwb3J0RmVlZGJhY2smIGZlZWRiYWNrKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOU19T
RVJJQUxJWkVEKCZ3b3JrZXJfcmFjZV8pOwotICBpbnQ2NF90IGZlZWRiYWNrX3RpbWVfbXMgPSBj
bG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpOwogCi0gIERhdGFTaXplIHByaW9yX2luX2ZsaWdo
dCA9Ci0gICAgICBEYXRhU2l6ZTo6Ynl0ZXModHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLkdl
dE91dHN0YW5kaW5nQnl0ZXMoKSk7Ci0gIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5PblRy
YW5zcG9ydEZlZWRiYWNrKGZlZWRiYWNrKTsKLSAgTWF5YmVVcGRhdGVPdXRzdGFuZGluZ0RhdGEo
KTsKLQotICBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gZmVlZGJhY2tfdmVjdG9yID0KLSAg
ICAgIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5HZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3Rv
cigpOwotICBTb3J0UGFja2V0RmVlZGJhY2tWZWN0b3IoJmZlZWRiYWNrX3ZlY3Rvcik7Ci0KLSAg
aWYgKCFmZWVkYmFja192ZWN0b3IuZW1wdHkoKSkgewotICAgIFRyYW5zcG9ydFBhY2tldHNGZWVk
YmFjayBtc2c7Ci0gICAgbXNnLnBhY2tldF9mZWVkYmFja3MgPSBQYWNrZXRSZXN1bHRzRnJvbVJ0
cEZlZWRiYWNrVmVjdG9yKGZlZWRiYWNrX3ZlY3Rvcik7Ci0gICAgbXNnLmZlZWRiYWNrX3RpbWUg
PSBUaW1lc3RhbXA6Om1zKGZlZWRiYWNrX3RpbWVfbXMpOwotICAgIG1zZy5wcmlvcl9pbl9mbGln
aHQgPSBwcmlvcl9pbl9mbGlnaHQ7Ci0gICAgbXNnLmRhdGFfaW5fZmxpZ2h0ID0KLSAgICAgICAg
RGF0YVNpemU6OmJ5dGVzKHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5HZXRPdXRzdGFuZGlu
Z0J5dGVzKCkpOwotICAgIHRhc2tfcXVldWVfLT5Qb3N0VGFzayhbdGhpcywgbXNnXSgpIHsKKyAg
YWJzbDo6b3B0aW9uYWw8VHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrPiBmZWVkYmFja19tc2cgPQor
ICAgICAgdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFj
ayhmZWVkYmFjayk7CisgIGlmIChmZWVkYmFja19tc2cpIHsKKyAgICB0YXNrX3F1ZXVlXy0+UG9z
dFRhc2soW3RoaXMsIGZlZWRiYWNrX21zZ10oKSB7CiAgICAgICBSVENfRENIRUNLX1JVTl9PTih0
YXNrX3F1ZXVlXyk7CiAgICAgICBpZiAoY29udHJvbGxlcl8pCiAgICAgICAgIGNvbnRyb2xfaGFu
ZGxlcl8tPlBvc3RVcGRhdGVzKAotICAgICAgICAgICAgY29udHJvbGxlcl8tPk9uVHJhbnNwb3J0
UGFja2V0c0ZlZWRiYWNrKG1zZykpOworICAgICAgICAgICAgY29udHJvbGxlcl8tPk9uVHJhbnNw
b3J0UGFja2V0c0ZlZWRiYWNrKCpmZWVkYmFja19tc2cpKTsKICAgICB9KTsKICAgfQorICBNYXli
ZVVwZGF0ZU91dHN0YW5kaW5nRGF0YSgpOwogfQogCiB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNv
bnRyb2xsZXI6Ok1heWJlVXBkYXRlT3V0c3RhbmRpbmdEYXRhKCkgewotICBEYXRhU2l6ZSBpbl9m
bGlnaHRfZGF0YSA9Ci0gICAgICBEYXRhU2l6ZTo6Ynl0ZXModHJhbnNwb3J0X2ZlZWRiYWNrX2Fk
YXB0ZXJfLkdldE91dHN0YW5kaW5nQnl0ZXMoKSk7CisgIERhdGFTaXplIGluX2ZsaWdodF9kYXRh
ID0gdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLkdldE91dHN0YW5kaW5nRGF0YSgpOwogICB0
YXNrX3F1ZXVlXy0+UG9zdFRhc2soW3RoaXMsIGluX2ZsaWdodF9kYXRhXSgpIHsKICAgICBSVENf
RENIRUNLX1JVTl9PTih0YXNrX3F1ZXVlXyk7Ci0gICAgcGFjZXJfY29udHJvbGxlcl8tPk9uT3V0
c3RhbmRpbmdEYXRhKGluX2ZsaWdodF9kYXRhKTsKICAgICBpZiAoY29udHJvbF9oYW5kbGVyXykK
ICAgICAgIGNvbnRyb2xfaGFuZGxlcl8tPk9uT3V0c3RhbmRpbmdEYXRhKGluX2ZsaWdodF9kYXRh
KTsKICAgfSk7CkBAIC03NDAsNyArNDgyLDcgQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250
cm9sbGVyOjpQb3N0UGVyaW9kaWNUYXNrc0ZvclRlc3QoKSB7CiB9CiAKIHZvaWQgU2VuZFNpZGVD
b25nZXN0aW9uQ29udHJvbGxlcjo6V2FpdE9uVGFza3NGb3JUZXN0KCkgewotICBydGM6OkV2ZW50
IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAgIHRhc2tfcXVldWVf
LT5Qb3N0VGFzayhbJmV2ZW50XSgpIHsgZXZlbnQuU2V0KCk7IH0pOwogICBldmVudC5XYWl0KHJ0
Yzo6RXZlbnQ6OmtGb3JldmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9z
ZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvcnRwL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKaW5kZXgg
ZDYxMGFmZTEzZDBmM2UyMTQ1MTg3MDYyNzg4YTY5M2Y2ZjRkN2RlNi4uNmVkN2E0OTU1M2YxOTI0
Mzc4YWIyZTc4MDAwZDIyNWMxOTUxZjg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRw
L3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvcnRwL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MK
QEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRfZmVlZGJhY2suaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9zb2NrZXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0LmgiCiAj
aW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKICNpbmNsdWRlICJ0ZXN0
L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgpAQCAtMTA4LDggKzEwOCwx
MSBAQCBjbGFzcyBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgewogICAgIGNvbnRyb2xsZXJfLT5BZGRQYWNrZXQoc3NyYywgcGFja2V0X2Zl
ZWRiYWNrLnNlcXVlbmNlX251bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tl
dF9mZWVkYmFjay5wYXlsb2FkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNr
ZXRfZmVlZGJhY2sucGFjaW5nX2luZm8pOworICAgIHJ0Yzo6UGFja2V0SW5mbyBwYWNrZXRfaW5m
bzsKKyAgICBwYWNrZXRfaW5mby5pbmNsdWRlZF9pbl9mZWVkYmFjayA9IHRydWU7CiAgICAgY29u
dHJvbGxlcl8tPk9uU2VudFBhY2tldChydGM6OlNlbnRQYWNrZXQocGFja2V0X2ZlZWRiYWNrLnNl
cXVlbmNlX251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYWNrZXRfZmVlZGJhY2suc2VuZF90aW1lX21zKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X2ZlZWRiYWNrLnNlbmRfdGltZV9tcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfaW5m
bykpOwogICB9CiAKICAgLy8gQWxsb3dzIHVzIHRvIHRyYWNrIHRoZSB0YXJnZXQgYml0cmF0ZSwg
d2l0aG91dCBwcmVzY3JpYmluZyB0aGUgZXhhY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3RpbWVf
aGlzdG9yeS5jYwppbmRleCA3MzY4MmNkNWIyNDI2NTQ1Y2FlYjUxMzQ2OGI0ZGUzYTk5MDhjNTI1
Li4xMTBkYWMzOTkzMjEyNDg4NjllMWE5ZjgxNTAyYTZmZDQxMzJlMjdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9ydHAvc2VuZF90aW1lX2hpc3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvcnRwL3NlbmRfdGltZV9oaXN0b3J5LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKQEAgLTQxLDggKzQyLDE5IEBAIHZvaWQgU2VuZFRpbWVIaXN0b3J5OjpBZGRBbmRSZW1vdmVP
bGQoY29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tldCkgewogICBQYWNrZXRGZWVkYmFjayBwYWNr
ZXRfY29weSA9IHBhY2tldDsKICAgcGFja2V0X2NvcHkubG9uZ19zZXF1ZW5jZV9udW1iZXIgPSB1
bndyYXBwZWRfc2VxX251bTsKICAgaGlzdG9yeV8uaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHVud3Jh
cHBlZF9zZXFfbnVtLCBwYWNrZXRfY29weSkpOwotICBpZiAocGFja2V0LnNlbmRfdGltZV9tcyA+
PSAwKQorICBpZiAocGFja2V0LnNlbmRfdGltZV9tcyA+PSAwKSB7CiAgICAgQWRkUGFja2V0Qnl0
ZXMocGFja2V0X2NvcHkpOworICAgIGxhc3Rfc2VuZF90aW1lX21zXyA9IHN0ZDo6bWF4KGxhc3Rf
c2VuZF90aW1lX21zXywgcGFja2V0LnNlbmRfdGltZV9tcyk7CisgIH0KK30KKwordm9pZCBTZW5k
VGltZUhpc3Rvcnk6OkFkZFVudHJhY2tlZChzaXplX3QgcGFja2V0X3NpemUsIGludDY0X3Qgc2Vu
ZF90aW1lX21zKSB7CisgIGlmIChzZW5kX3RpbWVfbXMgPCBsYXN0X3NlbmRfdGltZV9tc18pIHsK
KyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJpZ25vcmluZyB1bnRyYWNrZWQgZGF0YSBmb3Ig
b3V0IG9mIG9yZGVyIHBhY2tldC4iOworICB9CisgIHBlbmRpbmdfdW50cmFja2VkX3NpemVfICs9
IHBhY2tldF9zaXplOworICBsYXN0X3VudHJhY2tlZF9zZW5kX3RpbWVfbXNfID0KKyAgICAgIHN0
ZDo6bWF4KGxhc3RfdW50cmFja2VkX3NlbmRfdGltZV9tc18sIHNlbmRfdGltZV9tcyk7CiB9CiAK
IGJvb2wgU2VuZFRpbWVIaXN0b3J5OjpPblNlbnRQYWNrZXQodWludDE2X3Qgc2VxdWVuY2VfbnVt
YmVyLApAQCAtNTMsOCArNjUsMTcgQEAgYm9vbCBTZW5kVGltZUhpc3Rvcnk6Ok9uU2VudFBhY2tl
dCh1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsCiAgICAgcmV0dXJuIGZhbHNlOwogICBib29sIHBh
Y2tldF9yZXRyYW5zbWl0ID0gaXQtPnNlY29uZC5zZW5kX3RpbWVfbXMgPj0gMDsKICAgaXQtPnNl
Y29uZC5zZW5kX3RpbWVfbXMgPSBzZW5kX3RpbWVfbXM7CisgIGxhc3Rfc2VuZF90aW1lX21zXyA9
IHN0ZDo6bWF4KGxhc3Rfc2VuZF90aW1lX21zXywgc2VuZF90aW1lX21zKTsKICAgaWYgKCFwYWNr
ZXRfcmV0cmFuc21pdCkKICAgICBBZGRQYWNrZXRCeXRlcyhpdC0+c2Vjb25kKTsKKyAgaWYgKHBl
bmRpbmdfdW50cmFja2VkX3NpemVfID4gMCkgeworICAgIGlmIChzZW5kX3RpbWVfbXMgPCBsYXN0
X3VudHJhY2tlZF9zZW5kX3RpbWVfbXNfKQorICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQorICAg
ICAgICAgIDw8ICJhcHBlbmRpbmcgYWNrbm93bGVkZ2VkIGRhdGEgZm9yIG91dCBvZiBvcmRlciBw
YWNrZXQuIChEaWZmOiAiCisgICAgICAgICAgPDwgbGFzdF91bnRyYWNrZWRfc2VuZF90aW1lX21z
XyAtIHNlbmRfdGltZV9tcyA8PCAiIG1zLikiOworICAgIGl0LT5zZWNvbmQudW5hY2tub3dsZWRn
ZWRfZGF0YSArPSBwZW5kaW5nX3VudHJhY2tlZF9zaXplXzsKKyAgICBwZW5kaW5nX3VudHJhY2tl
ZF9zaXplXyA9IDA7CisgIH0KICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkwLDEzICsxMTEsMTMg
QEAgYm9vbCBTZW5kVGltZUhpc3Rvcnk6OkdldEZlZWRiYWNrKFBhY2tldEZlZWRiYWNrKiBwYWNr
ZXRfZmVlZGJhY2ssCiAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2VuZFRpbWVIaXN0b3J5
OjpHZXRPdXRzdGFuZGluZ0J5dGVzKHVpbnQxNl90IGxvY2FsX25ldF9pZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgcmVtb3RlX25ldF9pZCkg
Y29uc3QgeworRGF0YVNpemUgU2VuZFRpbWVIaXN0b3J5OjpHZXRPdXRzdGFuZGluZ0RhdGEodWlu
dDE2X3QgbG9jYWxfbmV0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDE2X3QgcmVtb3RlX25ldF9pZCkgY29uc3QgewogICBhdXRvIGl0ID0gaW5f
ZmxpZ2h0X2J5dGVzXy5maW5kKHtsb2NhbF9uZXRfaWQsIHJlbW90ZV9uZXRfaWR9KTsKICAgaWYg
KGl0ICE9IGluX2ZsaWdodF9ieXRlc18uZW5kKCkpIHsKLSAgICByZXR1cm4gaXQtPnNlY29uZDsK
KyAgICByZXR1cm4gRGF0YVNpemU6OmJ5dGVzKGl0LT5zZWNvbmQpOwogICB9IGVsc2UgewotICAg
IHJldHVybiAwOworICAgIHJldHVybiBEYXRhU2l6ZTo6WmVybygpOwogICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvcnRwL3NlbmRfdGltZV9oaXN0b3J5LmgKaW5kZXggN2NjNmFkNzY0MTQ4ODA0OTExNzhl
NTVkNmI2NjRiMWYxZDgxNzg5NC4uNjU2YjdlMTZhMzRiMWRmZGFiODc3Mjg3ZDIxMTc5ZmZkMWZj
MmI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3NlbmRfdGltZV9oaXN0b3J5LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3NlbmRfdGltZV9oaXN0b3J5LmgKQEAgLTE0LDYgKzE0
LDcgQEAKICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFw
aS91bml0cy9kYXRhX3NpemUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2Nv
bW1vbl90eXBlcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIApA
QCAtMjksNiArMzAsOCBAQCBjbGFzcyBTZW5kVGltZUhpc3RvcnkgewogICAvLyBDbGVhbnVwIG9s
ZCBlbnRyaWVzLCB0aGVuIGFkZCBuZXcgcGFja2V0IGluZm8gd2l0aCBwcm92aWRlZCBwYXJhbWV0
ZXJzLgogICB2b2lkIEFkZEFuZFJlbW92ZU9sZChjb25zdCBQYWNrZXRGZWVkYmFjayYgcGFja2V0
KTsKIAorICB2b2lkIEFkZFVudHJhY2tlZChzaXplX3QgcGFja2V0X3NpemUsIGludDY0X3Qgc2Vu
ZF90aW1lX21zKTsKKwogICAvLyBVcGRhdGVzIHBhY2tldCBpbmZvIGlkZW50aWZpZWQgYnkgfHNl
cXVlbmNlX251bWJlcnwgd2l0aCB8c2VuZF90aW1lX21zfC4KICAgLy8gUmV0dXJuIGZhbHNlIGlm
IG5vdCBmb3VuZC4KICAgYm9vbCBPblNlbnRQYWNrZXQodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVy
LCBpbnQ2NF90IHNlbmRfdGltZV9tcyk7CkBAIC00MSw4ICs0NCw4IEBAIGNsYXNzIFNlbmRUaW1l
SGlzdG9yeSB7CiAgIC8vIHRodXMgYmUgbm9uLW51bGwgYW5kIGhhdmUgdGhlIHNlcXVlbmNlX251
bWJlciBmaWVsZCBzZXQuCiAgIGJvb2wgR2V0RmVlZGJhY2soUGFja2V0RmVlZGJhY2sqIHBhY2tl
dF9mZWVkYmFjaywgYm9vbCByZW1vdmUpOwogCi0gIHNpemVfdCBHZXRPdXRzdGFuZGluZ0J5dGVz
KHVpbnQxNl90IGxvY2FsX25ldF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDE2X3QgcmVtb3RlX25ldF9pZCkgY29uc3Q7CisgIERhdGFTaXplIEdldE91dHN0YW5kaW5nRGF0
YSh1aW50MTZfdCBsb2NhbF9uZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MTZfdCByZW1vdGVfbmV0X2lkKSBjb25zdDsKIAogIHByaXZhdGU6CiAgIHVzaW5nIFJlbW90
ZUFuZExvY2FsTmV0d29ya0lkID0gc3RkOjpwYWlyPHVpbnQxNl90LCB1aW50MTZfdD47CkBAIC01
Miw2ICs1NSw5IEBAIGNsYXNzIFNlbmRUaW1lSGlzdG9yeSB7CiAgIHZvaWQgVXBkYXRlQWNrZWRT
ZXFOdW0oaW50NjRfdCBhY2tlZF9zZXFfbnVtKTsKICAgY29uc3QgQ2xvY2sqIGNvbnN0IGNsb2Nr
XzsKICAgY29uc3QgaW50NjRfdCBwYWNrZXRfYWdlX2xpbWl0X21zXzsKKyAgc2l6ZV90IHBlbmRp
bmdfdW50cmFja2VkX3NpemVfID0gMDsKKyAgaW50NjRfdCBsYXN0X3NlbmRfdGltZV9tc18gPSAt
MTsKKyAgaW50NjRfdCBsYXN0X3VudHJhY2tlZF9zZW5kX3RpbWVfbXNfID0gLTE7CiAgIFNlcXVl
bmNlTnVtYmVyVW53cmFwcGVyIHNlcV9udW1fdW53cmFwcGVyXzsKICAgc3RkOjptYXA8aW50NjRf
dCwgUGFja2V0RmVlZGJhY2s+IGhpc3RvcnlfOwogICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBs
YXN0X2Fja19zZXFfbnVtXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFuc3Bv
cnRfZmVlZGJhY2tfYWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVl
ZGJhY2tfYWRhcHRlci5jYwppbmRleCBkMWI0ODU1ZTM2OWQ0ZDAyNmEzYzlkNTNmMzNhZTMyMTA3
NDViNzg0Li43M2Q5NTIzMTg0M2I3NGRiNGU2NTM3OWUyNTVlMGJiNmYyNDE2OTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmNjCkBAIC0x
OSw4ICsxOSwyOCBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL21vZF9vcHMuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2Ugd2VicnRjX2NjIHsKK25hbWVzcGFjZSB7Cit2
b2lkIFNvcnRQYWNrZXRGZWVkYmFja1ZlY3RvcihzdGQ6OnZlY3Rvcjx3ZWJydGM6OlBhY2tldEZl
ZWRiYWNrPiogaW5wdXQpIHsKKyAgc3RkOjpzb3J0KGlucHV0LT5iZWdpbigpLCBpbnB1dC0+ZW5k
KCksIFBhY2tldEZlZWRiYWNrQ29tcGFyYXRvcigpKTsKK30KIAorUGFja2V0UmVzdWx0IE5ldHdv
cmtQYWNrZXRGZWVkYmFja0Zyb21SdHBQYWNrZXRGZWVkYmFjaygKKyAgICBjb25zdCB3ZWJydGM6
OlBhY2tldEZlZWRiYWNrJiBwZikgeworICBQYWNrZXRSZXN1bHQgZmVlZGJhY2s7CisgIGlmIChw
Zi5hcnJpdmFsX3RpbWVfbXMgPT0gd2VicnRjOjpQYWNrZXRGZWVkYmFjazo6a05vdFJlY2VpdmVk
KSB7CisgICAgZmVlZGJhY2sucmVjZWl2ZV90aW1lID0gVGltZXN0YW1wOjpQbHVzSW5maW5pdHko
KTsKKyAgfSBlbHNlIHsKKyAgICBmZWVkYmFjay5yZWNlaXZlX3RpbWUgPSBUaW1lc3RhbXA6Om1z
KHBmLmFycml2YWxfdGltZV9tcyk7CisgIH0KKyAgZmVlZGJhY2suc2VudF9wYWNrZXQuc2VxdWVu
Y2VfbnVtYmVyID0gcGYubG9uZ19zZXF1ZW5jZV9udW1iZXI7CisgIGZlZWRiYWNrLnNlbnRfcGFj
a2V0LnNlbmRfdGltZSA9IFRpbWVzdGFtcDo6bXMocGYuc2VuZF90aW1lX21zKTsKKyAgZmVlZGJh
Y2suc2VudF9wYWNrZXQuc2l6ZSA9IERhdGFTaXplOjpieXRlcyhwZi5wYXlsb2FkX3NpemUpOwor
ICBmZWVkYmFjay5zZW50X3BhY2tldC5wYWNpbmdfaW5mbyA9IHBmLnBhY2luZ19pbmZvOworICBm
ZWVkYmFjay5zZW50X3BhY2tldC5wcmlvcl91bmFja2VkX2RhdGEgPQorICAgICAgRGF0YVNpemU6
OmJ5dGVzKHBmLnVuYWNrbm93bGVkZ2VkX2RhdGEpOworICByZXR1cm4gZmVlZGJhY2s7Cit9Cit9
ICAvLyBuYW1lc3BhY2UKIGNvbnN0IGludDY0X3Qga05vVGltZXN0YW1wID0gLTE7CiBjb25zdCBp
bnQ2NF90IGtTZW5kVGltZUhpc3RvcnlXaW5kb3dNcyA9IDYwMDAwOwogY29uc3QgaW50NjRfdCBr
QmFzZVRpbWVzdGFtcFNjYWxlRmFjdG9yID0KQEAgLTc3LDE2ICs5Nyw1OSBAQCB2b2lkIFRyYW5z
cG9ydEZlZWRiYWNrQWRhcHRlcjo6QWRkUGFja2V0KHVpbnQzMl90IHNzcmMsCiAgIH0KIH0KIAot
dm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6Ok9uU2VudFBhY2tldCh1aW50MTZfdCBzZXF1
ZW5jZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3Qgc2VuZF90aW1lX21zKSB7CithYnNsOjpvcHRpb25hbDxTZW50UGFja2V0PiBUcmFu
c3BvcnRGZWVkYmFja0FkYXB0ZXI6OlByb2Nlc3NTZW50UGFja2V0KAorICAgIGNvbnN0IHJ0Yzo6
U2VudFBhY2tldCYgc2VudF9wYWNrZXQpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJmxvY2tfKTsK
LSAgc2VuZF90aW1lX2hpc3RvcnlfLk9uU2VudFBhY2tldChzZXF1ZW5jZV9udW1iZXIsIHNlbmRf
dGltZV9tcyk7CisgIC8vIFRPRE8oc3J0ZSk6IE9ubHkgdXNlIG9uZSB3YXkgdG8gaW5kaWNhdGUg
dGhhdCBwYWNrZXQgZmVlZGJhY2sgaXMgdXNlZC4KKyAgaWYgKHNlbnRfcGFja2V0LmluZm8uaW5j
bHVkZWRfaW5fZmVlZGJhY2sgfHwgc2VudF9wYWNrZXQucGFja2V0X2lkICE9IC0xKSB7CisgICAg
c2VuZF90aW1lX2hpc3RvcnlfLk9uU2VudFBhY2tldChzZW50X3BhY2tldC5wYWNrZXRfaWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50X3BhY2tldC5zZW5kX3RpbWVf
bXMpOworICAgIGFic2w6Om9wdGlvbmFsPFBhY2tldEZlZWRiYWNrPiBwYWNrZXQgPQorICAgICAg
ICBzZW5kX3RpbWVfaGlzdG9yeV8uR2V0UGFja2V0KHNlbnRfcGFja2V0LnBhY2tldF9pZCk7Cisg
ICAgaWYgKHBhY2tldCkgeworICAgICAgU2VudFBhY2tldCBtc2c7CisgICAgICBtc2cuc2l6ZSA9
IERhdGFTaXplOjpieXRlcyhwYWNrZXQtPnBheWxvYWRfc2l6ZSk7CisgICAgICBtc2cuc2VuZF90
aW1lID0gVGltZXN0YW1wOjptcyhwYWNrZXQtPnNlbmRfdGltZV9tcyk7CisgICAgICBtc2cuc2Vx
dWVuY2VfbnVtYmVyID0gcGFja2V0LT5sb25nX3NlcXVlbmNlX251bWJlcjsKKyAgICAgIG1zZy5w
cmlvcl91bmFja2VkX2RhdGEgPSBEYXRhU2l6ZTo6Ynl0ZXMocGFja2V0LT51bmFja25vd2xlZGdl
ZF9kYXRhKTsKKyAgICAgIG1zZy5kYXRhX2luX2ZsaWdodCA9CisgICAgICAgICAgc2VuZF90aW1l
X2hpc3RvcnlfLkdldE91dHN0YW5kaW5nRGF0YShsb2NhbF9uZXRfaWRfLCByZW1vdGVfbmV0X2lk
Xyk7CisgICAgICByZXR1cm4gbXNnOworICAgIH0KKyAgfSBlbHNlIGlmIChzZW50X3BhY2tldC5p
bmZvLmluY2x1ZGVkX2luX2FsbG9jYXRpb24pIHsKKyAgICBzZW5kX3RpbWVfaGlzdG9yeV8uQWRk
VW50cmFja2VkKHNlbnRfcGFja2V0LmluZm8ucGFja2V0X3NpemVfYnl0ZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50X3BhY2tldC5zZW5kX3RpbWVfbXMpOworICB9
CisgIHJldHVybiBhYnNsOjpudWxsb3B0OwogfQogCi1hYnNsOjpvcHRpb25hbDxQYWNrZXRGZWVk
YmFjaz4gVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpHZXRQYWNrZXQoCi0gICAgdWludDE2X3Qg
c2VxdWVuY2VfbnVtYmVyKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7Ci0g
IHJldHVybiBzZW5kX3RpbWVfaGlzdG9yeV8uR2V0UGFja2V0KHNlcXVlbmNlX251bWJlcik7Cith
YnNsOjpvcHRpb25hbDxUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2s+CitUcmFuc3BvcnRGZWVkYmFj
a0FkYXB0ZXI6OlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjaygKKyAgICBjb25zdCBydGNwOjpUcmFu
c3BvcnRGZWVkYmFjayYgZmVlZGJhY2spIHsKKyAgaW50NjRfdCBmZWVkYmFja190aW1lX21zID0g
Y2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKTsKKyAgRGF0YVNpemUgcHJpb3JfaW5fZmxpZ2h0
ID0gR2V0T3V0c3RhbmRpbmdEYXRhKCk7CisgIE9uVHJhbnNwb3J0RmVlZGJhY2soZmVlZGJhY2sp
OworICBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gZmVlZGJhY2tfdmVjdG9yID0gbGFzdF9w
YWNrZXRfZmVlZGJhY2tfdmVjdG9yXzsKKyAgaWYgKGZlZWRiYWNrX3ZlY3Rvci5lbXB0eSgpKQor
ICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworCisgIFNvcnRQYWNrZXRGZWVkYmFja1ZlY3Rvcigm
ZmVlZGJhY2tfdmVjdG9yKTsKKyAgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrIG1zZzsKKyAgZm9y
IChjb25zdCBQYWNrZXRGZWVkYmFjayYgcnRwX2ZlZWRiYWNrIDogZmVlZGJhY2tfdmVjdG9yKSB7
CisgICAgaWYgKHJ0cF9mZWVkYmFjay5zZW5kX3RpbWVfbXMgIT0gUGFja2V0RmVlZGJhY2s6OmtO
b1NlbmRUaW1lKSB7CisgICAgICBhdXRvIGZlZWRiYWNrID0gTmV0d29ya1BhY2tldEZlZWRiYWNr
RnJvbVJ0cFBhY2tldEZlZWRiYWNrKHJ0cF9mZWVkYmFjayk7CisgICAgICBtc2cucGFja2V0X2Zl
ZWRiYWNrcy5wdXNoX2JhY2soZmVlZGJhY2spOworICAgIH0gZWxzZSBpZiAocnRwX2ZlZWRiYWNr
LmFycml2YWxfdGltZV9tcyA9PSBQYWNrZXRGZWVkYmFjazo6a05vdFJlY2VpdmVkKSB7CisgICAg
ICBtc2cuc2VuZGxlc3NfYXJyaXZhbF90aW1lcy5wdXNoX2JhY2soVGltZXN0YW1wOjpQbHVzSW5m
aW5pdHkoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIG1zZy5zZW5kbGVzc19hcnJpdmFsX3RpbWVz
LnB1c2hfYmFjaygKKyAgICAgICAgICBUaW1lc3RhbXA6Om1zKHJ0cF9mZWVkYmFjay5hcnJpdmFs
X3RpbWVfbXMpKTsKKyAgICB9CisgIH0KKyAgbXNnLmZlZWRiYWNrX3RpbWUgPSBUaW1lc3RhbXA6
Om1zKGZlZWRiYWNrX3RpbWVfbXMpOworICBtc2cucHJpb3JfaW5fZmxpZ2h0ID0gcHJpb3JfaW5f
ZmxpZ2h0OworICBtc2cuZGF0YV9pbl9mbGlnaHQgPSBHZXRPdXRzdGFuZGluZ0RhdGEoKTsKKyAg
cmV0dXJuIG1zZzsKIH0KIAogdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OlNldE5ldHdv
cmtJZHModWludDE2X3QgbG9jYWxfaWQsCkBAIC05Niw2ICsxNTksMTEgQEAgdm9pZCBUcmFuc3Bv
cnRGZWVkYmFja0FkYXB0ZXI6OlNldE5ldHdvcmtJZHModWludDE2X3QgbG9jYWxfaWQsCiAgIHJl
bW90ZV9uZXRfaWRfID0gcmVtb3RlX2lkOwogfQogCitEYXRhU2l6ZSBUcmFuc3BvcnRGZWVkYmFj
a0FkYXB0ZXI6OkdldE91dHN0YW5kaW5nRGF0YSgpIGNvbnN0IHsKKyAgcnRjOjpDcml0U2NvcGUg
Y3MoJmxvY2tfKTsKKyAgcmV0dXJuIHNlbmRfdGltZV9oaXN0b3J5Xy5HZXRPdXRzdGFuZGluZ0Rh
dGEobG9jYWxfbmV0X2lkXywgcmVtb3RlX25ldF9pZF8pOworfQorCiBzdGQ6OnZlY3RvcjxQYWNr
ZXRGZWVkYmFjaz4gVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpHZXRQYWNrZXRGZWVkYmFja1Zl
Y3RvcigKICAgICBjb25zdCBydGNwOjpUcmFuc3BvcnRGZWVkYmFjayYgZmVlZGJhY2spIHsKICAg
aW50NjRfdCB0aW1lc3RhbXBfdXMgPSBmZWVkYmFjay5HZXRCYXNlVGltZVVzKCk7CkBAIC0xODQs
MTAgKzI1Miw0IEBAIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPgogVHJhbnNwb3J0RmVlZGJh
Y2tBZGFwdGVyOjpHZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3RvcigpIGNvbnN0IHsKICAgcmV0dXJu
IGxhc3RfcGFja2V0X2ZlZWRiYWNrX3ZlY3Rvcl87CiB9Ci0KLXNpemVfdCBUcmFuc3BvcnRGZWVk
YmFja0FkYXB0ZXI6OkdldE91dHN0YW5kaW5nQnl0ZXMoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNj
b3BlIGNzKCZsb2NrXyk7Ci0gIHJldHVybiBzZW5kX3RpbWVfaGlzdG9yeV8uR2V0T3V0c3RhbmRp
bmdCeXRlcyhsb2NhbF9uZXRfaWRfLCByZW1vdGVfbmV0X2lkXyk7Ci19Ci19ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjX2NjCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oCmluZGV4IGUyNDc3Y2EzMWYzNDQzZmFh
MWQyMzQxYjAyYjI5MGUzMWExYjMwOGYuLjE3NDFkNmQ2NmEwYzQxM2FkMDU2MDViZmY5NWEwMTYy
ZGEwNDEwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVlZGJh
Y2tfYWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tf
YWRhcHRlci5oCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9uZXR3
b3JrX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRw
L3NlbmRfdGltZV9oaXN0b3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9u
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVh
ZF9jaGVja2VyLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIK
QEAgLTI5LDcgKzMwLDYgQEAgbmFtZXNwYWNlIHJ0Y3AgewogY2xhc3MgVHJhbnNwb3J0RmVlZGJh
Y2s7CiB9ICAvLyBuYW1lc3BhY2UgcnRjcAogCi1uYW1lc3BhY2Ugd2VicnRjX2NjIHsKIGNsYXNz
IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlciB7CiAgcHVibGljOgogICBleHBsaWNpdCBUcmFuc3Bv
cnRGZWVkYmFja0FkYXB0ZXIoY29uc3QgQ2xvY2sqIGNsb2NrKTsKQEAgLTQyLDIyICs0MiwyMiBA
QCBjbGFzcyBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIgewogICAgICAgICAgICAgICAgICB1aW50
MTZfdCBzZXF1ZW5jZV9udW1iZXIsCiAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCiAg
ICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2luZm8pOwotICB2
b2lkIE9uU2VudFBhY2tldCh1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsIGludDY0X3Qgc2VuZF90
aW1lX21zKTsKIAotICAvLyBUT0RPKGhvbG1lcik6IFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4g
RGVsYXlCYXNlZEJ3ZTo6UmVzdWx0IHNvIHRoYXQgd2UKLSAgLy8gY2FuIGdldCByaWQgb2YgdGhl
IGRlcGVuZGVuY3kgb24gQml0cmF0ZUNvbnRyb2xsZXIuIFJlcXVpcmVzIGNoYW5nZXMKLSAgLy8g
dG8gdGhlIENvbmdlc3Rpb25Db250cm9sbGVyIGludGVyZmFjZS4KLSAgdm9pZCBPblRyYW5zcG9y
dEZlZWRiYWNrKGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiBmZWVkYmFjayk7Ci0gIHN0
ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBHZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3RvcigpIGNv
bnN0OwotICBhYnNsOjpvcHRpb25hbDxQYWNrZXRGZWVkYmFjaz4gR2V0UGFja2V0KHVpbnQxNl90
IHNlcXVlbmNlX251bWJlcikgY29uc3Q7CisgIGFic2w6Om9wdGlvbmFsPFNlbnRQYWNrZXQ+IFBy
b2Nlc3NTZW50UGFja2V0KAorICAgICAgY29uc3QgcnRjOjpTZW50UGFja2V0JiBzZW50X3BhY2tl
dCk7CiAKLSAgdm9pZCBTZXRUcmFuc3BvcnRPdmVyaGVhZChpbnQgdHJhbnNwb3J0X292ZXJoZWFk
X2J5dGVzX3Blcl9wYWNrZXQpOworICBhYnNsOjpvcHRpb25hbDxUcmFuc3BvcnRQYWNrZXRzRmVl
ZGJhY2s+IFByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjaygKKyAgICAgIGNvbnN0IHJ0Y3A6OlRyYW5z
cG9ydEZlZWRiYWNrJiBmZWVkYmFjayk7CisKKyAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+
IEdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCkgY29uc3Q7CiAKICAgdm9pZCBTZXROZXR3b3Jr
SWRzKHVpbnQxNl90IGxvY2FsX2lkLCB1aW50MTZfdCByZW1vdGVfaWQpOwogCi0gIHNpemVfdCBH
ZXRPdXRzdGFuZGluZ0J5dGVzKCkgY29uc3Q7CisgIERhdGFTaXplIEdldE91dHN0YW5kaW5nRGF0
YSgpIGNvbnN0OwogCiAgcHJpdmF0ZToKKyAgdm9pZCBPblRyYW5zcG9ydEZlZWRiYWNrKGNvbnN0
IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiBmZWVkYmFjayk7CisKICAgc3RkOjp2ZWN0b3I8UGFj
a2V0RmVlZGJhY2s+IEdldFBhY2tldEZlZWRiYWNrVmVjdG9yKAogICAgICAgY29uc3QgcnRjcDo6
VHJhbnNwb3J0RmVlZGJhY2smIGZlZWRiYWNrKTsKIApAQCAtNzUsNyArNzUsNiBAQCBjbGFzcyBU
cmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIgewogICAgICAgUlRDX0dVQVJERURfQlkoJm9ic2VydmVy
c19sb2NrXyk7CiB9OwogCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjX2NjCiB9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCiAKICNlbmRpZiAgLy8gTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfUlRQ
X1RSQU5TUE9SVF9GRUVEQkFDS19BREFQVEVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MKaW5kZXggNzAw
ODc2NzhhMjM5ZGEzOWIxNzE2ODAyZjJlOTM1M2JmYzkwZmY1MC4uZDE0MDRkZjYzZjQxOGQ3MjEz
N2ViZDRlNmE2Y2M0MTE3OTVhMmYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3Ry
YW5zcG9ydF9mZWVkYmFja19hZGFwdGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl91bml0dGVzdC5jYwpAQCAtNjksOCArNjks
OSBAQCBjbGFzcyBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7CiAgICAgYWRhcHRlcl8tPkFkZFBhY2tldChrU3NyYywgcGFja2V0X2ZlZWRiYWNr
LnNlcXVlbmNlX251bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9mZWVkYmFj
ay5wYXlsb2FkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfZmVlZGJhY2su
cGFjaW5nX2luZm8pOwotICAgIGFkYXB0ZXJfLT5PblNlbnRQYWNrZXQocGFja2V0X2ZlZWRiYWNr
LnNlcXVlbmNlX251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9mZWVk
YmFjay5zZW5kX3RpbWVfbXMpOworICAgIGFkYXB0ZXJfLT5Qcm9jZXNzU2VudFBhY2tldChydGM6
OlNlbnRQYWNrZXQocGFja2V0X2ZlZWRiYWNrLnNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9mZWVkYmFjay5zZW5k
X3RpbWVfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydGM6OlBhY2tldEluZm8oKSkpOwogICB9CiAKICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBrU3NyYyA9IDg0OTI7CkBAIC0xMDAsNyArMTAxLDcgQEAgVEVTVF9GKFRyYW5zcG9ydEZlZWRi
YWNrQWRhcHRlclRlc3QsIE9ic2VydmVyU2FuaXR5KSB7CiAgIH0KIAogICBFWFBFQ1RfQ0FMTCht
b2NrLCBPblBhY2tldEZlZWRiYWNrVmVjdG9yKF8pKS5UaW1lcygxKTsKLSAgYWRhcHRlcl8tPk9u
VHJhbnNwb3J0RmVlZGJhY2soZmVlZGJhY2spOworICBhZGFwdGVyXy0+UHJvY2Vzc1RyYW5zcG9y
dEZlZWRiYWNrKGZlZWRiYWNrKTsKIAogICBhZGFwdGVyXy0+RGVSZWdpc3RlclBhY2tldEZlZWRi
YWNrT2JzZXJ2ZXIoJm1vY2spOwogCkBAIC0xMTUsNyArMTE2LDcgQEAgVEVTVF9GKFRyYW5zcG9y
dEZlZWRiYWNrQWRhcHRlclRlc3QsIE9ic2VydmVyU2FuaXR5KSB7CiAgIEVYUEVDVF9UUlVFKGZl
ZWRiYWNrLkFkZFJlY2VpdmVkUGFja2V0KG5ld19wYWNrZXQuc2VxdWVuY2VfbnVtYmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcGFja2V0LmFycml2YWxf
dGltZV9tcyAqIDEwMDApKTsKICAgRVhQRUNUX0NBTEwobW9jaywgT25QYWNrZXRGZWVkYmFja1Zl
Y3RvcihfKSkuVGltZXMoMCk7Ci0gIGFkYXB0ZXJfLT5PblRyYW5zcG9ydEZlZWRiYWNrKHNlY29u
ZF9mZWVkYmFjayk7CisgIGFkYXB0ZXJfLT5Qcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2soc2Vjb25k
X2ZlZWRiYWNrKTsKIH0KIAogI2lmIFJUQ19EQ0hFQ0tfSVNfT04gJiYgR1RFU1RfSEFTX0RFQVRI
X1RFU1QgJiYgIWRlZmluZWQoV0VCUlRDX0FORFJPSUQpCkBAIC0xNTYsNyArMTU3LDcgQEAgVEVT
VF9GKFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlclRlc3QsIEFkYXB0c0ZlZWRiYWNrQW5kUG9wdWxh
dGVzU2VuZFRpbWVzKSB7CiAKICAgZmVlZGJhY2suQnVpbGQoKTsKIAotICBhZGFwdGVyXy0+T25U
cmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7CisgIGFkYXB0ZXJfLT5Qcm9jZXNzVHJhbnNwb3J0
RmVlZGJhY2soZmVlZGJhY2spOwogICBDb21wYXJlUGFja2V0RmVlZGJhY2tWZWN0b3JzKHBhY2tl
dHMsIGFkYXB0ZXJfLT5HZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3RvcigpKTsKIH0KIApAQCAtMTg5
LDcgKzE5MCw3IEBAIFRFU1RfRihUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0LCBGZWVkYmFj
a1ZlY3RvclJlcG9ydHNVbnJlY2VpdmVkKSB7CiAKICAgZmVlZGJhY2suQnVpbGQoKTsKIAotICBh
ZGFwdGVyXy0+T25UcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7CisgIGFkYXB0ZXJfLT5Qcm9j
ZXNzVHJhbnNwb3J0RmVlZGJhY2soZmVlZGJhY2spOwogICBDb21wYXJlUGFja2V0RmVlZGJhY2tW
ZWN0b3JzKHNlbnRfcGFja2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGFw
dGVyXy0+R2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSk7CiB9CkBAIC0yMzMsNyArMjM0LDcg
QEAgVEVTVF9GKFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlclRlc3QsIEhhbmRsZXNEcm9wcGVkUGFj
a2V0cykgewogICAgIGV4cGVjdGVkX3BhY2tldHNbaV0ucGFjaW5nX2luZm8gPSBQYWNlZFBhY2tl
dEluZm8oKTsKICAgfQogCi0gIGFkYXB0ZXJfLT5PblRyYW5zcG9ydEZlZWRiYWNrKGZlZWRiYWNr
KTsKKyAgYWRhcHRlcl8tPlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7CiAgIENv
bXBhcmVQYWNrZXRGZWVkYmFja1ZlY3RvcnMoZXhwZWN0ZWRfcGFja2V0cywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhZGFwdGVyXy0+R2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3Io
KSk7CiB9CkBAIC0yNjksNyArMjcwLDcgQEAgVEVTVF9GKFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRl
clRlc3QsIFNlbmRUaW1lV3JhcHNCb3RoV2F5cykgewogICAgIHN0ZDo6dmVjdG9yPFBhY2tldEZl
ZWRiYWNrPiBleHBlY3RlZF9wYWNrZXRzOwogICAgIGV4cGVjdGVkX3BhY2tldHMucHVzaF9iYWNr
KHBhY2tldHNbaV0pOwogCi0gICAgYWRhcHRlcl8tPk9uVHJhbnNwb3J0RmVlZGJhY2soKmZlZWRi
YWNrLmdldCgpKTsKKyAgICBhZGFwdGVyXy0+UHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNrKCpmZWVk
YmFjay5nZXQoKSk7CiAgICAgQ29tcGFyZVBhY2tldEZlZWRiYWNrVmVjdG9ycyhleHBlY3RlZF9w
YWNrZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRlcl8tPkdldFRy
YW5zcG9ydEZlZWRiYWNrVmVjdG9yKCkpOwogICB9CkBAIC0yOTgsNyArMjk5LDcgQEAgVEVTVF9G
KFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlclRlc3QsIEhhbmRsZXNBcnJpdmFsUmVvcmRlcmluZykg
ewogICAvLyBBZGFwdGVyIGtlZXBzIHRoZSBwYWNrZXRzIG9yZGVyZWQgYnkgc2VxdWVuY2UgbnVt
YmVyICh3aGljaCBpcyBpdHNlbGYKICAgLy8gYXNzaWduZWQgYnkgdGhlIG9yZGVyIG9mIHRyYW5z
bWlzc2lvbikuIFJlb3JkZXJpbmcgYnkgc29tZSBvdGhlciBjcml0ZXJpYSwKICAgLy8gZWcuIGFy
cml2YWwgdGltZSwgaXMgdXAgdG8gdGhlIG9ic2VydmVycy4KLSAgYWRhcHRlcl8tPk9uVHJhbnNw
b3J0RmVlZGJhY2soZmVlZGJhY2spOworICBhZGFwdGVyXy0+UHJvY2Vzc1RyYW5zcG9ydEZlZWRi
YWNrKGZlZWRiYWNrKTsKICAgQ29tcGFyZVBhY2tldEZlZWRiYWNrVmVjdG9ycyhwYWNrZXRzLCBh
ZGFwdGVyXy0+R2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSk7CiB9CiAKQEAgLTM2Miw3ICsz
NjMsNyBAQCBURVNUX0YoVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyVGVzdCwgVGltZXN0YW1wRGVs
dGFzKSB7CiAgIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiByZWNlaXZlZF9mZWVkYmFjazsK
IAogICBFWFBFQ1RfVFJVRShmZWVkYmFjay5nZXQoKSAhPSBudWxscHRyKTsKLSAgYWRhcHRlcl8t
Pk9uVHJhbnNwb3J0RmVlZGJhY2soKmZlZWRiYWNrLmdldCgpKTsKKyAgYWRhcHRlcl8tPlByb2Nl
c3NUcmFuc3BvcnRGZWVkYmFjaygqZmVlZGJhY2suZ2V0KCkpOwogICBDb21wYXJlUGFja2V0RmVl
ZGJhY2tWZWN0b3JzKHNlbnRfcGFja2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZGFwdGVyXy0+R2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSk7CiAKQEAgLTM3Nyw3ICsz
NzgsNyBAQCBURVNUX0YoVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyVGVzdCwgVGltZXN0YW1wRGVs
dGFzKSB7CiAgICAgICBydGNwOjpUcmFuc3BvcnRGZWVkYmFjazo6UGFyc2VGcm9tKHJhd19wYWNr
ZXQuZGF0YSgpLCByYXdfcGFja2V0LnNpemUoKSk7CiAKICAgRVhQRUNUX1RSVUUoZmVlZGJhY2su
Z2V0KCkgIT0gbnVsbHB0cik7Ci0gIGFkYXB0ZXJfLT5PblRyYW5zcG9ydEZlZWRiYWNrKCpmZWVk
YmFjay5nZXQoKSk7CisgIGFkYXB0ZXJfLT5Qcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2soKmZlZWRi
YWNrLmdldCgpKTsKICAgewogICAgIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBleHBlY3Rl
ZF9wYWNrZXRzOwogICAgIGV4cGVjdGVkX3BhY2tldHMucHVzaF9iYWNrKHBhY2tldF9mZWVkYmFj
ayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250
cm9sbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxl
ci5jYwppbmRleCBmOGIzMTU1YmY5ZGM2NmQ5MGQ0MTU3Mjk2ZWRiYTc1Y2ZmYjI1NjNjLi4xNDdm
MTAzZTc4Njk3NzFkMjZlOTlmM2M1ZjFhZjY3ZmQxNmMxN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MKQEAgLTE4LDE2ICsxOCwx
NiBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9iaXRyYXRlX2NvbnRyb2xsZXIvaW5jbHVkZS9iaXRyYXRlX2NvbnRyb2xsZXIuaCIKLSNpbmNs
dWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dpbmRvd19wdXNo
YmFja19jb250cm9sbGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1
c2hiYWNrX2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL3Byb2JlX2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90
ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrL3Nl
bnRfcGFja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9u
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhdGVfbGltaXRlci5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3NvY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKQEAgLTE0Myw2ICsxNDMs
NyBAQCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpTZW5kU2lkZUNvbmdlc3Rpb25Db250
cm9sbGVyKAogICAgICAgcGF1c2VfcGFjZXJfKGZhbHNlKSwKICAgICAgIHBhY2VyX3BhdXNlZF8o
ZmFsc2UpLAogICAgICAgbWluX2JpdHJhdGVfYnBzXyhjb25nZXN0aW9uX2NvbnRyb2xsZXI6Okdl
dE1pbkJpdHJhdGVCcHMoKSksCisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8obmV3IFBy
b2JlQml0cmF0ZUVzdGltYXRvcihldmVudF9sb2dfKSksCiAgICAgICBkZWxheV9iYXNlZF9id2Vf
KG5ldyBEZWxheUJhc2VkQndlKGV2ZW50X2xvZ18pKSwKICAgICAgIGluX2N3bmRfZXhwZXJpbWVu
dF8oQ3duZEV4cGVyaW1lbnRFbmFibGVkKCkpLAogICAgICAgYWNjZXB0ZWRfcXVldWVfbXNfKGtE
ZWZhdWx0QWNjZXB0ZWRRdWV1ZU1zKSwKQEAgLTE1Myw3ICsxNTQsNyBAQCBTZW5kU2lkZUNvbmdl
c3Rpb25Db250cm9sbGVyOjpTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyKAogICAgICAgcGFj
ZXJfcHVzaGJhY2tfZXhwZXJpbWVudF8oSXNQYWNlclB1c2hiYWNrRXhwZXJpbWVudEVuYWJsZWQo
KSksCiAgICAgICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXygKICAgICAg
ICAgICBNYXliZUNyZWF0ZUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXIoKSkgewot
ICBkZWxheV9iYXNlZF9id2VfLT5TZXRNaW5CaXRyYXRlKG1pbl9iaXRyYXRlX2Jwc18pOworICBk
ZWxheV9iYXNlZF9id2VfLT5TZXRNaW5CaXRyYXRlKERhdGFSYXRlOjpicHMobWluX2JpdHJhdGVf
YnBzXykpOwogICBpZiAoaW5fY3duZF9leHBlcmltZW50XyAmJgogICAgICAgIVJlYWRDd25kRXhw
ZXJpbWVudFBhcmFtZXRlcigmYWNjZXB0ZWRfcXVldWVfbXNfKSkgewogICAgIFJUQ19MT0coTFNf
V0FSTklORykgPDwgIkZhaWxlZCB0byBwYXJzZSBwYXJhbWV0ZXJzIGZvciBDd25kRXhwZXJpbWVu
dCAiCkBAIC0xNjQsNiArMTY1LDIzIEBAIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6OlNl
bmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXIoCiAKIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xs
ZXI6On5TZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyKCkge30KIAordm9pZCBTZW5kU2lkZUNv
bmdlc3Rpb25Db250cm9sbGVyOjpFbmFibGVDb25nZXN0aW9uV2luZG93UHVzaGJhY2soCisgICAg
aW50NjRfdCBhY2NlcHRlZF9xdWV1ZV9tcywKKyAgICB1aW50MzJfdCBtaW5fcHVzaGJhY2tfdGFy
Z2V0X2JpdHJhdGVfYnBzKSB7CisgIFJUQ19EQ0hFQ0soIWNvbmdlc3Rpb25fd2luZG93X3B1c2hi
YWNrX2NvbnRyb2xsZXJfKQorICAgICAgPDwgIlRoZSBjb25nZXN0aW9uIHB1c2hiYWNrIGlzIGFs
cmVhZHkgZW5hYmxlZC4iOworICBSVENfQ0hFQ0tfR0UoYWNjZXB0ZWRfcXVldWVfbXMsIDApCisg
ICAgICA8PCAiQWNjZXB0ZWQgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4iOwor
ICBSVENfQ0hFQ0tfR0UobWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2JwcywgMCkKKyAgICAg
IDw8ICJNaW4gcHVzaGJhY2sgdGFyZ2V0IGJpdHJhdGUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3Ig
ZXF1YWwgdG8gMC4iOworCisgIGluX2N3bmRfZXhwZXJpbWVudF8gPSB0cnVlOworICBhY2NlcHRl
ZF9xdWV1ZV9tc18gPSBhY2NlcHRlZF9xdWV1ZV9tczsKKyAgY29uZ2VzdGlvbl93aW5kb3dfcHVz
aGJhY2tfY29udHJvbGxlcl8gPQorICAgICAgYWJzbDo6bWFrZV91bmlxdWU8Q29uZ2VzdGlvbldp
bmRvd1B1c2hiYWNrQ29udHJvbGxlcj4oCisgICAgICAgICAgbWluX3B1c2hiYWNrX3RhcmdldF9i
aXRyYXRlX2Jwcyk7Cit9CisKIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6UmVn
aXN0ZXJQYWNrZXRGZWVkYmFja09ic2VydmVyKAogICAgIFBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIq
IG9ic2VydmVyKSB7CiAgIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5SZWdpc3RlclBhY2tl
dEZlZWRiYWNrT2JzZXJ2ZXIob2JzZXJ2ZXIpOwpAQCAtMjA0LDkgKzIyMiw5IEBAIHZvaWQgU2Vu
ZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6U2V0QndlQml0cmF0ZXMoaW50IG1pbl9iaXRyYXRl
X2JwcywKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZid2VfbG9ja18pOwogICAgIGlmIChz
dGFydF9iaXRyYXRlX2JwcyA+IDApCi0gICAgICBkZWxheV9iYXNlZF9id2VfLT5TZXRTdGFydEJp
dHJhdGUoc3RhcnRfYml0cmF0ZV9icHMpOworICAgICAgZGVsYXlfYmFzZWRfYndlXy0+U2V0U3Rh
cnRCaXRyYXRlKERhdGFSYXRlOjpicHMoc3RhcnRfYml0cmF0ZV9icHMpKTsKICAgICBtaW5fYml0
cmF0ZV9icHNfID0gbWluX2JpdHJhdGVfYnBzOwotICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1p
bkJpdHJhdGUobWluX2JpdHJhdGVfYnBzXyk7CisgICAgZGVsYXlfYmFzZWRfYndlXy0+U2V0TWlu
Qml0cmF0ZShEYXRhUmF0ZTo6YnBzKG1pbl9iaXRyYXRlX2Jwc18pKTsKICAgfQogICBNYXliZVRy
aWdnZXJPbk5ldHdvcmtDaGFuZ2VkKCk7CiB9CkBAIC0yNDEsMTAgKzI1OSwxMyBAQCB2b2lkIFNl
bmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6Ok9uTmV0d29ya1JvdXRlQ2hhbmdlZCgKICAgICBy
dGM6OkNyaXRTY29wZSBjcygmYndlX2xvY2tfKTsKICAgICB0cmFuc3BvcnRfb3ZlcmhlYWRfYnl0
ZXNfcGVyX3BhY2tldF8gPSBuZXR3b3JrX3JvdXRlLnBhY2tldF9vdmVyaGVhZDsKICAgICBtaW5f
Yml0cmF0ZV9icHNfID0gbWluX2JpdHJhdGVfYnBzOworICAgIHByb2JlX2JpdHJhdGVfZXN0aW1h
dG9yXy5yZXNldChuZXcgUHJvYmVCaXRyYXRlRXN0aW1hdG9yKGV2ZW50X2xvZ18pKTsKICAgICBk
ZWxheV9iYXNlZF9id2VfLnJlc2V0KG5ldyBEZWxheUJhc2VkQndlKGV2ZW50X2xvZ18pKTsKICAg
ICBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLnJlc2V0KG5ldyBBY2tub3dsZWRnZWRC
aXRyYXRlRXN0aW1hdG9yKCkpOwotICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldFN0YXJ0Qml0cmF0
ZShiaXRyYXRlX2Jwcyk7Ci0gICAgZGVsYXlfYmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShtaW5f
Yml0cmF0ZV9icHMpOworICAgIGlmIChiaXRyYXRlX2JwcyA+IDApIHsKKyAgICAgIGRlbGF5X2Jh
c2VkX2J3ZV8tPlNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZTo6YnBzKGJpdHJhdGVfYnBzKSk7Cisg
ICAgfQorICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJhdGUoRGF0YVJhdGU6OmJwcyht
aW5fYml0cmF0ZV9icHMpKTsKICAgfQogICB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJnByb2Jl
X2xvY2tfKTsKQEAgLTMyMSw3ICszNDIsNyBAQCB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRy
b2xsZXI6Ok9uU2VudFBhY2tldCgKIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6
T25SdHRVcGRhdGUoaW50NjRfdCBhdmdfcnR0X21zLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG1heF9ydHRfbXMpIHsKICAgcnRjOjpDcml0
U2NvcGUgY3MoJmJ3ZV9sb2NrXyk7Ci0gIGRlbGF5X2Jhc2VkX2J3ZV8tPk9uUnR0VXBkYXRlKGF2
Z19ydHRfbXMpOworICBkZWxheV9iYXNlZF9id2VfLT5PblJ0dFVwZGF0ZShUaW1lRGVsdGE6Om1z
KGF2Z19ydHRfbXMpKTsKIH0KIAogaW50NjRfdCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVy
OjpUaW1lVW50aWxOZXh0UHJvY2VzcygpIHsKQEAgLTM5Nyw5ICs0MTgsMTYgQEAgdm9pZCBTZW5k
U2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpPblRyYW5zcG9ydEZlZWRiYWNrKAogICBEZWxheUJh
c2VkQndlOjpSZXN1bHQgcmVzdWx0OwogICB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJmJ3ZV9s
b2NrXyk7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYWNrZXQgOiBmZWVkYmFja192ZWN0b3IpIHsK
KyAgICAgIGlmIChwYWNrZXQuc2VuZF90aW1lX21zICE9IFBhY2tldEZlZWRiYWNrOjprTm9TZW5k
VGltZSAmJgorICAgICAgICAgIHBhY2tldC5wYWNpbmdfaW5mby5wcm9iZV9jbHVzdGVyX2lkICE9
IFBhY2VkUGFja2V0SW5mbzo6a05vdEFQcm9iZSkgeworICAgICAgICBwcm9iZV9iaXRyYXRlX2Vz
dGltYXRvcl8tPkhhbmRsZVByb2JlQW5kRXN0aW1hdGVCaXRyYXRlKHBhY2tldCk7CisgICAgICB9
CisgICAgfQogICAgIHJlc3VsdCA9IGRlbGF5X2Jhc2VkX2J3ZV8tPkluY29taW5nUGFja2V0RmVl
ZGJhY2tWZWN0b3IoCi0gICAgICAgIGZlZWRiYWNrX3ZlY3RvciwgYWNrbm93bGVkZ2VkX2JpdHJh
dGVfZXN0aW1hdG9yXy0+Yml0cmF0ZV9icHMoKSwKLSAgICAgICAgY2xvY2tfLT5UaW1lSW5NaWxs
aXNlY29uZHMoKSk7CisgICAgICAgIGZlZWRiYWNrX3ZlY3RvciwgYWNrbm93bGVkZ2VkX2JpdHJh
dGVfZXN0aW1hdG9yXy0+Yml0cmF0ZSgpLAorICAgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRv
cl8tPkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZSgpLAorICAgICAgICBUaW1lc3Rh
bXA6Om1zKGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpKTsKICAgfQogICBpZiAocmVzdWx0
LnVwZGF0ZWQpIHsKICAgICBiaXRyYXRlX2NvbnRyb2xsZXJfLT5PbkRlbGF5QmFzZWRCd2VSZXN1
bHQocmVzdWx0KTsKQEAgLTUwMSw3ICs1MjksNyBAQCB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNv
bnRyb2xsZXI6Ok1heWJlVHJpZ2dlck9uTmV0d29ya0NoYW5nZWQoKSB7CiAgICAgaW50NjRfdCBw
cm9iaW5nX2ludGVydmFsX21zOwogICAgIHsKICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZid2Vf
bG9ja18pOwotICAgICAgcHJvYmluZ19pbnRlcnZhbF9tcyA9IGRlbGF5X2Jhc2VkX2J3ZV8tPkdl
dEV4cGVjdGVkQndlUGVyaW9kTXMoKTsKKyAgICAgIHByb2JpbmdfaW50ZXJ2YWxfbXMgPSBkZWxh
eV9iYXNlZF9id2VfLT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZCgpLm1zKCk7CiAgICAgfQogICAgIHsK
ICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZvYnNlcnZlcl9sb2NrXyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVz
dC5jYwppbmRleCAzNjUzYjhjMjJmNmNjN2E3YWM1NzIwNDViNzAxM2JhYTYxOTFkYzBjLi41ZjU4
ZjIxY2RmODk0NmM0YWM4ZmE4ODU0NTQ2MDZjNGI3NTYzZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3Qu
Y2MKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRfZmVlZGJhY2suaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zb2NrZXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0Lmgi
CiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKICNpbmNsdWRlICJ0
ZXN0L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYwppbmRleCAzYmFhM2FkNWE1M2M5YWUy
ZDU4OTU2Y2EyNGE4NDIyMzE3ODRlODQyLi5iOGI2MjBkMDA4YjMwMmYzYTUxODczYTQ5YmYxZWZk
ZGFlNTcyYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci90cmFuc3BvcnRfZmVlZGJhY2tf
YWRhcHRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRl
ci5jYwpAQCAtMjYsNyArMjYsOCBAQCBjb25zdCBpbnQ2NF90IGtCYXNlVGltZXN0YW1wU2NhbGVG
YWN0b3IgPQogICAgIHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrOjprRGVsdGFTY2FsZUZhY3RvciAq
ICgxIDw8IDgpOwogY29uc3QgaW50NjRfdCBrQmFzZVRpbWVzdGFtcFJhbmdlU2l6ZVVzID0ga0Jh
c2VUaW1lc3RhbXBTY2FsZUZhY3RvciAqICgxIDw8IDI0KTsKIAotVHJhbnNwb3J0RmVlZGJhY2tB
ZGFwdGVyOjpUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIoY29uc3QgQ2xvY2sqIGNsb2NrKQorTGVn
YWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXIoCisgICAgY29uc3QgQ2xvY2sqIGNsb2NrKQogICAgIDogc2VuZF90aW1lX2hpc3RvcnlfKGNs
b2NrLCBrU2VuZFRpbWVIaXN0b3J5V2luZG93TXMpLAogICAgICAgY2xvY2tfKGNsb2NrKSwKICAg
ICAgIGN1cnJlbnRfb2Zmc2V0X21zXyhrTm9UaW1lc3RhbXApLApAQCAtMzQsMTEgKzM1LDExIEBA
IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyKGNvbnN0
IENsb2NrKiBjbG9jaykKICAgICAgIGxvY2FsX25ldF9pZF8oMCksCiAgICAgICByZW1vdGVfbmV0
X2lkXygwKSB7fQogCi1UcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6On5UcmFuc3BvcnRGZWVkYmFj
a0FkYXB0ZXIoKSB7CitMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6On5MZWdhY3lUcmFu
c3BvcnRGZWVkYmFja0FkYXB0ZXIoKSB7CiAgIFJUQ19EQ0hFQ0sob2JzZXJ2ZXJzXy5lbXB0eSgp
KTsKIH0KIAotdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OlJlZ2lzdGVyUGFja2V0RmVl
ZGJhY2tPYnNlcnZlcigKK3ZvaWQgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpSZWdp
c3RlclBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIoCiAgICAgUGFja2V0RmVlZGJhY2tPYnNlcnZlciog
b2JzZXJ2ZXIpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJm9ic2VydmVyc19sb2NrXyk7CiAgIFJU
Q19EQ0hFQ0sob2JzZXJ2ZXIpOwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIFRyYW5zcG9ydEZlZWRi
YWNrQWRhcHRlcjo6UmVnaXN0ZXJQYWNrZXRGZWVkYmFja09ic2VydmVyKAogICBvYnNlcnZlcnNf
LnB1c2hfYmFjayhvYnNlcnZlcik7CiB9CiAKLXZvaWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVy
OjpEZVJlZ2lzdGVyUGFja2V0RmVlZGJhY2tPYnNlcnZlcigKK3ZvaWQgTGVnYWN5VHJhbnNwb3J0
RmVlZGJhY2tBZGFwdGVyOjpEZVJlZ2lzdGVyUGFja2V0RmVlZGJhY2tPYnNlcnZlcigKICAgICBQ
YWNrZXRGZWVkYmFja09ic2VydmVyKiBvYnNlcnZlcikgewogICBydGM6OkNyaXRTY29wZSBjcygm
b2JzZXJ2ZXJzX2xvY2tfKTsKICAgUlRDX0RDSEVDSyhvYnNlcnZlcik7CkBAIC01NiwxMCArNTcs
MTEgQEAgdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkRlUmVnaXN0ZXJQYWNrZXRGZWVk
YmFja09ic2VydmVyKAogICBvYnNlcnZlcnNfLmVyYXNlKGl0KTsKIH0KIAotdm9pZCBUcmFuc3Bv
cnRGZWVkYmFja0FkYXB0ZXI6OkFkZFBhY2tldCh1aW50MzJfdCBzc3JjLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0
SW5mbyYgcGFjaW5nX2luZm8pIHsKK3ZvaWQgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVy
OjpBZGRQYWNrZXQoCisgICAgdWludDMyX3Qgc3NyYywKKyAgICB1aW50MTZfdCBzZXF1ZW5jZV9u
dW1iZXIsCisgICAgc2l6ZV90IGxlbmd0aCwKKyAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBh
Y2luZ19pbmZvKSB7CiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwogICAgIGNv
bnN0IGludDY0X3QgY3JlYXRpb25fdGltZV9tcyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRz
KCk7CkBAIC03NiwyMCArNzgsMjEgQEAgdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkFk
ZFBhY2tldCh1aW50MzJfdCBzc3JjLAogICB9CiB9CiAKLXZvaWQgVHJhbnNwb3J0RmVlZGJhY2tB
ZGFwdGVyOjpPblNlbnRQYWNrZXQodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNlbmRfdGltZV9tcykg
ewordm9pZCBMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6Ok9uU2VudFBhY2tldCh1aW50
MTZfdCBzZXF1ZW5jZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDY0X3Qgc2VuZF90aW1lX21zKSB7CiAgIHJ0Yzo6Q3JpdFNjb3Bl
IGNzKCZsb2NrXyk7CiAgIHNlbmRfdGltZV9oaXN0b3J5Xy5PblNlbnRQYWNrZXQoc2VxdWVuY2Vf
bnVtYmVyLCBzZW5kX3RpbWVfbXMpOwogfQogCi12b2lkIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRl
cjo6U2V0TmV0d29ya0lkcyh1aW50MTZfdCBsb2NhbF9pZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9pZCkgewordm9pZCBMZWdh
Y3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OlNldE5ldHdvcmtJZHModWludDE2X3QgbG9jYWxf
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MTZfdCByZW1vdGVfaWQpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJmxvY2tfKTsKICAgbG9j
YWxfbmV0X2lkXyA9IGxvY2FsX2lkOwogICByZW1vdGVfbmV0X2lkXyA9IHJlbW90ZV9pZDsKIH0K
IAotc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6
R2V0UGFja2V0RmVlZGJhY2tWZWN0b3IoCitzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4KK0xl
Z2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0UGFja2V0RmVlZGJhY2tWZWN0b3IoCiAg
ICAgY29uc3QgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2smIGZlZWRiYWNrKSB7CiAgIGludDY0X3Qg
dGltZXN0YW1wX3VzID0gZmVlZGJhY2suR2V0QmFzZVRpbWVVcygpOwogICBpbnQ2NF90IG5vd19t
cyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCk7CkBAIC0xNzcsNyArMTgwLDcgQEAgc3Rk
Ojp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0UGFj
a2V0RmVlZGJhY2tWZWN0b3IoCiAgIHJldHVybiBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yOwogfQog
Ci12b2lkIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6T25UcmFuc3BvcnRGZWVkYmFjaygKK3Zv
aWQgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpPblRyYW5zcG9ydEZlZWRiYWNrKAog
ICAgIGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiBmZWVkYmFjaykgewogICBsYXN0X3Bh
Y2tldF9mZWVkYmFja192ZWN0b3JfID0gR2V0UGFja2V0RmVlZGJhY2tWZWN0b3IoZmVlZGJhY2sp
OwogICB7CkBAIC0xODksMTggKzE5MiwxOSBAQCB2b2lkIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRl
cjo6T25UcmFuc3BvcnRGZWVkYmFjaygKIH0KIAogc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+
Ci1UcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCkg
Y29uc3QgeworTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpHZXRUcmFuc3BvcnRGZWVk
YmFja1ZlY3RvcigpIGNvbnN0IHsKICAgcmV0dXJuIGxhc3RfcGFja2V0X2ZlZWRiYWNrX3ZlY3Rv
cl87CiB9CiAKLWFic2w6Om9wdGlvbmFsPGludDY0X3Q+IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRl
cjo6R2V0TWluRmVlZGJhY2tMb29wUnR0KCkKK2Fic2w6Om9wdGlvbmFsPGludDY0X3Q+IExlZ2Fj
eVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0TWluRmVlZGJhY2tMb29wUnR0KCkKICAgICBj
b25zdCB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7CiAgIHJldHVybiBtaW5fZmVlZGJh
Y2tfcnR0XzsKIH0KIAotc2l6ZV90IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0T3V0c3Rh
bmRpbmdCeXRlcygpIGNvbnN0IHsKK3NpemVfdCBMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXI6OkdldE91dHN0YW5kaW5nQnl0ZXMoKSBjb25zdCB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZs
b2NrXyk7Ci0gIHJldHVybiBzZW5kX3RpbWVfaGlzdG9yeV8uR2V0T3V0c3RhbmRpbmdCeXRlcyhs
b2NhbF9uZXRfaWRfLCByZW1vdGVfbmV0X2lkXyk7CisgIHJldHVybiBzZW5kX3RpbWVfaGlzdG9y
eV8uR2V0T3V0c3RhbmRpbmdEYXRhKGxvY2FsX25ldF9pZF8sIHJlbW90ZV9uZXRfaWRfKQorICAg
ICAgLmJ5dGVzKCk7CiB9CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
dHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaAppbmRleCAyMDYyMzZjZThiYTdkMmQ5MmQxNjk2
MGM3Yzc2MWNlNDA2YTRkMmE3Li5jNmFjMmFkOWFkNGJhZTliMmQyNTQ4MzJlOTY1MzVhMDdmNjBk
ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRl
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmgKQEAg
LTI5LDEwICsyOSwxMiBAQCBuYW1lc3BhY2UgcnRjcCB7CiBjbGFzcyBUcmFuc3BvcnRGZWVkYmFj
azsKIH0gIC8vIG5hbWVzcGFjZSBydGNwCiAKLWNsYXNzIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRl
ciB7CisvLyBEZXByZWNhdGVkLCB1c2UgdmVyc2lvbiBpbgorLy8gbW9kdWxlcy9jb25nZWVzdGlv
bl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oCitjbGFzcyBMZWdh
Y3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIgewogIHB1YmxpYzoKLSAgZXhwbGljaXQgVHJhbnNw
b3J0RmVlZGJhY2tBZGFwdGVyKGNvbnN0IENsb2NrKiBjbG9jayk7Ci0gIHZpcnR1YWwgflRyYW5z
cG9ydEZlZWRiYWNrQWRhcHRlcigpOworICBleHBsaWNpdCBMZWdhY3lUcmFuc3BvcnRGZWVkYmFj
a0FkYXB0ZXIoY29uc3QgQ2xvY2sqIGNsb2NrKTsKKyAgdmlydHVhbCB+TGVnYWN5VHJhbnNwb3J0
RmVlZGJhY2tBZGFwdGVyKCk7CiAKICAgdm9pZCBSZWdpc3RlclBhY2tldEZlZWRiYWNrT2JzZXJ2
ZXIoUGFja2V0RmVlZGJhY2tPYnNlcnZlciogb2JzZXJ2ZXIpOwogICB2b2lkIERlUmVnaXN0ZXJQ
YWNrZXRGZWVkYmFja09ic2VydmVyKFBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIqIG9ic2VydmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5p
dHRlc3QuY2MKaW5kZXggMzlhYTcyZTgxNjdlN2FiOGM3NDRjNDc1MmUyZTQ3NTM1ZmVhNmNiOS4u
ZGM0ZWFiMTNkNjUxMDgwYzJjOGJkMmQyNWIxYzU5ZTE4MmU4ZTYwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MKQEAg
LTUyLDcgKzUyLDcgQEAgY2xhc3MgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICB2aXJ0dWFsIH5MZWdhY3lUcmFuc3BvcnRGZWVk
YmFja0FkYXB0ZXJUZXN0KCkge30KIAogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgYWRh
cHRlcl8ucmVzZXQobmV3IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcigmY2xvY2tfKSk7CisgICAg
YWRhcHRlcl8ucmVzZXQobmV3IExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcigmY2xvY2tf
KSk7CiAgIH0KIAogICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IGFkYXB0ZXJfLnJlc2V0KCk7
IH0KQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVy
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IGtTc3JjID0gODQ5MjsKIAogICBTaW11bGF0ZWRDbG9jayBjbG9ja187Ci0gIHN0ZDo6dW5p
cXVlX3B0cjxUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI+IGFkYXB0ZXJfOworICBzdGQ6OnVuaXF1
ZV9wdHI8TGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyPiBhZGFwdGVyXzsKIH07CiAKIFRF
U1RfRihMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0LCBPYnNlcnZlclNhbml0eSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9CVUlMRC5nbgppbmRl
eCA3NGRlMTc0N2FmZDNjMDRiODcxNTk3ZGM4M2IxYmEyMGVlMzAyODY2Li4zOTBmYzBhMDUxYjI2
NDA1OGNkMGM2YzZmZWJkOWM3MjA3YTAxNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9CVUlMRC5n
bgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9CVUlMRC5nbgpAQCAtNiw2ICs2LDcgQEAKICMgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQogIyBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KIAor
aW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9saW51eC9wa2dfY29uZmlnLmduaSIpCiBpbXBvcnQoIi8v
YnVpbGQvY29uZmlnL3VpLmduaSIpCiBpbXBvcnQoIi4uLy4uL3dlYnJ0Yy5nbmkiKQogCkBAIC0y
OCw4ICsyOSw4IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicHJpbWl0aXZlcyIpIHsKICAgXQogCiAg
IGRlcHMgPSBbCi0gICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9ydGNfYmFz
ZTpjaGVja3MiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIApAQCAtOTUsNyAr
OTYsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6ZGVza3RvcF9jYXB0dXJl
IiwKICAgICAgICI6ZGVza3RvcF9jYXB0dXJlX21vY2siLAogICAgICAgIjpwcmltaXRpdmVzIiwK
LSAgICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpjaGVj
a3MiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIu
Li8uLi9zeXN0ZW1fd3JhcHBlcnM6Y3B1X2ZlYXR1cmVzX2FwaSIsCkBAIC0xNjQsNiArMTY0LDIz
IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICB9CiB9CiAKK2lmIChpc19saW51eCkgewor
ICBpZiAocnRjX3VzZV9waXBld2lyZSkgeworICAgIHBrZ19jb25maWcoInBpcGV3aXJlIikgewor
ICAgICAgcGFja2FnZXMgPSBbICJsaWJwaXBld2lyZS0wLjIiIF0KKworICAgICAgZGVmaW5lcyA9
IFsgIldFQlJUQ19VU0VfUElQRVdJUkUiIF0KKyAgICB9CisKKyAgICBwa2dfY29uZmlnKCJnaW8i
KSB7CisgICAgICBwYWNrYWdlcyA9IFsKKyAgICAgICAgImdpby0yLjAiLAorICAgICAgICAiZ2lv
LXVuaXgtMi4wIiwKKyAgICAgIF0KKyAgICB9CisgIH0KK30KKwogcnRjX3NvdXJjZV9zZXQoImRl
c2t0b3BfY2FwdHVyZSIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgcHVibGljX2RlcHMg
PSBbCkBAIC0zMjEsMzkgKzMzOCw2OSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImRlc2t0b3BfY2Fw
dHVyZV9nZW5lcmljIikgewogICAgIF0KICAgfQogCisgIGlmIChydGNfdXNlX3gxMSB8fCBydGNf
dXNlX3BpcGV3aXJlKSB7CisgICAgc291cmNlcyArPSBbCisgICAgICAibW91c2VfY3Vyc29yX21v
bml0b3JfbGludXguY2MiLAorICAgICAgInNjcmVlbl9jYXB0dXJlcl9saW51eC5jYyIsCisgICAg
ICAid2luZG93X2NhcHR1cmVyX2xpbnV4LmNjIiwKKyAgICBdCisKKyAgICBpZiAoYnVpbGRfd2l0
aF9tb3ppbGxhKSB7CisgICAgICBzb3VyY2VzICs9IFsgImFwcF9jYXB0dXJlcl9saW51eC5jYyIg
XQorICAgIH0KKyAgfQorCiAgIGlmIChydGNfdXNlX3gxMSkgewogICAgIHNvdXJjZXMgKz0gWwot
ICAgICAgIm1vdXNlX2N1cnNvcl9tb25pdG9yX3gxMS5jYyIsCi0gICAgICAic2NyZWVuX2NhcHR1
cmVyX3gxMS5jYyIsCi0gICAgICAid2luZG93X2NhcHR1cmVyX3gxMS5jYyIsCi0gICAgICAid2lu
ZG93X2ZpbmRlcl94MTEuY2MiLAotICAgICAgIndpbmRvd19maW5kZXJfeDExLmgiLAotICAgICAg
IngxMS9zaGFyZWRfeF9kaXNwbGF5LmNjIiwKLSAgICAgICJ4MTEvc2hhcmVkX3hfZGlzcGxheS5o
IiwKLSAgICAgICJ4MTEvd2luZG93X2xpc3RfdXRpbHMuY2MiLAotICAgICAgIngxMS93aW5kb3df
bGlzdF91dGlscy5oIiwKLSAgICAgICJ4MTEveF9hdG9tX2NhY2hlLmNjIiwKLSAgICAgICJ4MTEv
eF9hdG9tX2NhY2hlLmgiLAotICAgICAgIngxMS94X2Vycm9yX3RyYXAuY2MiLAotICAgICAgIngx
MS94X2Vycm9yX3RyYXAuaCIsCi0gICAgICAieDExL3hfc2VydmVyX3BpeGVsX2J1ZmZlci5jYyIs
Ci0gICAgICAieDExL3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIiwKKyAgICAgICJsaW51eC9tb3Vz
ZV9jdXJzb3JfbW9uaXRvcl94MTEuY2MiLAorICAgICAgImxpbnV4L21vdXNlX2N1cnNvcl9tb25p
dG9yX3gxMS5oIiwKKyAgICAgICJsaW51eC9zY3JlZW5fY2FwdHVyZXJfeDExLmNjIiwKKyAgICAg
ICJsaW51eC9zY3JlZW5fY2FwdHVyZXJfeDExLmgiLAorICAgICAgImxpbnV4L3NoYXJlZF94X2Rp
c3BsYXkuY2MiLAorICAgICAgImxpbnV4L3NoYXJlZF94X2Rpc3BsYXkuaCIsCisgICAgICAibGlu
dXgvd2luZG93X2NhcHR1cmVyX3gxMS5jYyIsCisgICAgICAibGludXgvd2luZG93X2NhcHR1cmVy
X3gxMS5oIiwKKyAgICAgICJsaW51eC93aW5kb3dfZmluZGVyX3gxMS5jYyIsCisgICAgICAibGlu
dXgvd2luZG93X2ZpbmRlcl94MTEuaCIsCisgICAgICAibGludXgvd2luZG93X2xpc3RfdXRpbHMu
Y2MiLAorICAgICAgImxpbnV4L3dpbmRvd19saXN0X3V0aWxzLmgiLAorICAgICAgImxpbnV4L3hf
YXRvbV9jYWNoZS5jYyIsCisgICAgICAibGludXgveF9hdG9tX2NhY2hlLmgiLAorICAgICAgImxp
bnV4L3hfZXJyb3JfdHJhcC5jYyIsCisgICAgICAibGludXgveF9lcnJvcl90cmFwLmgiLAorICAg
ICAgImxpbnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5jYyIsCisgICAgICAibGludXgveF9zZXJ2
ZXJfcGl4ZWxfYnVmZmVyLmgiLAogICAgIF0KICAgICBjb25maWdzICs9IFsgIi8vYnVpbGQvY29u
ZmlnL2xpbnV4OngxMSIgXQogCiAgICAgaWYgKGJ1aWxkX3dpdGhfbW96aWxsYSkgewogICAgICAg
c291cmNlcyArPSBbCi0gICAgICAgICJhcHBfY2FwdHVyZXJfeDExLmNjIiwKLSAgICAgICAgImFw
cF9jYXB0dXJlcl94MTEuaCIsCi0gICAgICAgICJ4MTEvZGVza3RvcF9kZXZpY2VfaW5mb194MTEu
Y2MiLAotICAgICAgICAieDExL2Rlc2t0b3BfZGV2aWNlX2luZm9feDExLmgiLAotICAgICAgICAi
eDExL3NoYXJlZF94X3V0aWwuY2MiLAotICAgICAgICAieDExL3NoYXJlZF94X3V0aWwuaCIsCisg
ICAgICAgICJsaW51eC9hcHBfY2FwdHVyZXJfeDExLmNjIiwKKyAgICAgICAgImxpbnV4L2Rlc2t0
b3BfZGV2aWNlX2luZm9fbGludXguY2MiLAorICAgICAgICAibGludXgvZGVza3RvcF9kZXZpY2Vf
aW5mb19saW51eC5oIiwKKyAgICAgICAgImxpbnV4L3NoYXJlZF94X3V0aWwuY2MiLAorICAgICAg
ICAibGludXgvc2hhcmVkX3hfdXRpbC5oIiwKICAgICAgIF0KICAgICB9CiAgIH0KIAotICBpZiAo
IWlzX3dpbiAmJiAhaXNfbWFjICYmICFydGNfdXNlX3gxMSkgeworICBpZiAocnRjX3VzZV9waXBl
d2lyZSkgeworICAgIHNvdXJjZXMgKz0gWworICAgICAgImxpbnV4L2Jhc2VfY2FwdHVyZXJfcGlw
ZXdpcmUuY2MiLAorICAgICAgImxpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUuaCIsCisgICAg
ICAibGludXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmNjIiwKKyAgICAgICJsaW51eC9zY3Jl
ZW5fY2FwdHVyZXJfcGlwZXdpcmUuaCIsCisgICAgICAibGludXgvd2luZG93X2NhcHR1cmVyX3Bp
cGV3aXJlLmNjIiwKKyAgICAgICJsaW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuaCIsCisg
ICAgXQorCisgICAgY29uZmlncyArPSBbCisgICAgICAiOmdpbyIsCisgICAgICAiOnBpcGV3aXJl
IiwKKyAgICBdCisgIH0KKworICBpZiAoIWlzX3dpbiAmJiAhaXNfbWFjICYmICFydGNfdXNlX3gx
MSAmJiAhcnRjX3VzZV9waXBld2lyZSkgewogICAgIHNvdXJjZXMgKz0gWwogICAgICAgIm1vdXNl
X2N1cnNvcl9tb25pdG9yX251bGwuY2MiLAogICAgICAgInNjcmVlbl9jYXB0dXJlcl9udWxsLmNj
IiwKQEAgLTM3MCwxMiArNDE3LDEyIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiZGVza3RvcF9jYXB0
dXJlX2dlbmVyaWMiKSB7CiAKICAgZGVwcyA9IFsKICAgICAiOnByaW1pdGl2ZXMiLAotICAgICIu
Li8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBpOnJlZmNvdW50ZWRiYXNlIiwKICAg
ICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2Ui
LCAgIyBUT0RPKGtqZWxsYW5kZXIpOiBDbGVhbnVwIGluIGJ1Z3Mud2VicnRjLm9yZy8zODA2Lgog
ICAgICIuLi8uLi9ydGNfYmFzZS9zeW5jaHJvbml6YXRpb246cndfbG9ja193cmFwcGVyIiwKICAg
ICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOmFyY2giLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0
ZW06cnRjX2V4cG9ydCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAgIi4uLy4u
L3N5c3RlbV93cmFwcGVyczpjcHVfZmVhdHVyZXNfYXBpIiwKICAgICAiLi4vLi4vc3lzdGVtX3dy
YXBwZXJzOm1ldHJpY3MiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBlZF9kZXNrdG9wX2Zy
YW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9jcm9wcGVkX2Rlc2t0b3BfZnJhbWUuaAppbmRleCA1OWRjZWQ0MDE3
OWJkZDkzZDgxYzNiNDdhZTczYTVmNzE5OWM2YTNjLi42NzgyMzk4YTZhYjFlMjFkMzVlMTE1YmM0
ODAxYTZhY2YzMjgxNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9jcm9wcGVkX2Rlc2t0b3BfZnJh
bWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9jcm9wcGVkX2Rlc2t0b3BfZnJhbWUuaApAQCAtMTIsNiArMTIs
NyBAQAogI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9DUk9QUEVEX0RFU0tUT1BfRlJB
TUVfSF8KIAogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZnJhbWUu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIApAQCAtMjAsOSArMjEsOSBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIC8vIHxmcmFt
ZXwgc2hvdWxkIG5vdCBiZSBudWxscHRyLiB8cmVjdHwgaXMgaW4gfGZyYW1lfCBjb29yZGluYXRl
LCBpLmUuCiAvLyB8ZnJhbWV8LT50b3BfbGVmdCgpIGRvZXMgbm90IGltcGFjdCB0aGUgYXJlYSBv
ZiB8cmVjdHwuCiAvLyBSZXR1cm5zIG51bGxwdHIgZnJhbWUgaWYgfHJlY3R8IGlzIG5vdCBjb250
YWluZWQgYnkgdGhlIGJvdW5kcyBvZiB8ZnJhbWV8Lgotc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BG
cmFtZT4gQ3JlYXRlQ3JvcHBlZERlc2t0b3BGcmFtZSgKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVz
a3RvcEZyYW1lPiBmcmFtZSwKLSAgICBjb25zdCBEZXNrdG9wUmVjdCYgcmVjdCk7CitzdGQ6OnVu
aXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBSVENfRVhQT1JUCitDcmVhdGVDcm9wcGVkRGVza3RvcEZy
YW1lKHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IGZyYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBEZXNrdG9wUmVjdCYgcmVjdCk7CiAKIH0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBpbmdfd2luZG93X2NhcHR1cmVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9jcm9wcGluZ193aW5kb3dfY2FwdHVyZXIuaAppbmRleCBjODg5ODAxZGEzYzVi
YmZlYjVjODQ5Y2I3NmUwZmM1Yzg2ZjRiNzBmLi4yMjQxOThmYTYxNTExMGIxNDIxNmRjNTBlM2Zj
YzAzMTgxYWY3ZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9jcm9wcGluZ193aW5kb3dfY2FwdHVy
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9jcm9wcGluZ193aW5kb3dfY2FwdHVyZXIuaApAQCAtMTUsMTQg
KzE1LDE1IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2Nh
cHR1cmVfb3B0aW9ucy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0
b3BfY2FwdHVyZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gV2luZG93Q2FwdHVyZXIgaW1wbGVtZW50YXRpb24g
dGhhdCB1c2VzIGEgc2NyZWVuIGNhcHR1cmVyIHRvIGNhcHR1cmUgdGhlCiAvLyB3aG9sZSBzY3Jl
ZW4gYW5kIGNyb3BzIHRoZSB2aWRlbyBmcmFtZSB0byB0aGUgd2luZG93IGFyZWEgd2hlbiB0aGUg
Y2FwdHVyZWQKIC8vIHdpbmRvdyBpcyBvbiB0b3AuCi1jbGFzcyBDcm9wcGluZ1dpbmRvd0NhcHR1
cmVyIDogcHVibGljIERlc2t0b3BDYXB0dXJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgRGVza3RvcENhcHR1cmVyOjpDYWxsYmFjayB7CitjbGFzcyBSVENfRVhQT1JU
IENyb3BwaW5nV2luZG93Q2FwdHVyZXIgOiBwdWJsaWMgRGVza3RvcENhcHR1cmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIERlc2t0b3BDYXB0dXJl
cjo6Q2FsbGJhY2sgewogIHB1YmxpYzoKICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9w
Q2FwdHVyZXI+IENyZWF0ZUNhcHR1cmVyKAogICAgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRp
b25zJiBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfYW5kX2N1cnNvcl9j
b21wb3Nlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9hbmRfY3Vyc29yX2NvbXBvc2VyLmgKaW5kZXgg
N2RmZjcxMDFmMzVkODMzYzY5MzMxZjY2YjdiN2E2ZmIzYzMzMDA4OS4uZmE1ZDE1YzkyZjYwMThm
OGZmYmFmMGM0NGVjZGZjNDMzYTk0ZGY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9h
bmRfY3Vyc29yX2NvbXBvc2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9hbmRfY3Vyc29yX2Nv
bXBvc2VyLmgKQEAgLTE3LDE0ICsxNywxNiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9tb3VzZV9jdXJzb3JfbW9uaXRvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVj
dG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gQSB3cmFwcGVyIGZvciBEZXNrdG9wQ2FwdHVyZXIgdGhh
dCBhbHNvIGNhcHR1cmVzIG1vdXNlIHVzaW5nIHNwZWNpZmllZAogLy8gTW91c2VDdXJzb3JNb25p
dG9yIGFuZCByZW5kZXJzIGl0IG9uIHRoZSBnZW5lcmF0ZWQgc3RyZWFtcy4KLWNsYXNzIERlc2t0
b3BBbmRDdXJzb3JDb21wb3NlciA6IHB1YmxpYyBEZXNrdG9wQ2FwdHVyZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgRGVza3RvcENhcHR1cmVyOjpDYWxsYmFjaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBNb3VzZUN1cnNvck1vbml0
b3I6OkNhbGxiYWNrIHsKK2NsYXNzIFJUQ19FWFBPUlQgRGVza3RvcEFuZEN1cnNvckNvbXBvc2Vy
CisgICAgOiBwdWJsaWMgRGVza3RvcENhcHR1cmVyLAorICAgICAgcHVibGljIERlc2t0b3BDYXB0
dXJlcjo6Q2FsbGJhY2ssCisgICAgICBwdWJsaWMgTW91c2VDdXJzb3JNb25pdG9yOjpDYWxsYmFj
ayB7CiAgcHVibGljOgogICAvLyBDcmVhdGVzIGEgbmV3IGJsZW5kZXIgdGhhdCBjYXB0dXJlcyBt
b3VzZSBjdXJzb3IgdXNpbmcKICAgLy8gTW91c2VDdXJzb3JNb25pdG9yOjpDcmVhdGUob3B0aW9u
cykgYW5kIHJlbmRlcnMgaXQgaW50byB0aGUgZnJhbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9k
ZXNrdG9wX2NhcHR1cmVfb3B0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlv
bnMuaAppbmRleCA2MGFhMDVjM2ZkMzMyOWQyNzQ3ODEyZjBmNDgzODUxNGU3OWQzZjgyLi5lOTU4
N2EzZjUwYzMxYjA4NTM1ZDhkN2EwNWJmZDQ2OWZmMzc3NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9kZXNrdG9wX2NhcHR1cmVfb3B0aW9ucy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVy
ZV9vcHRpb25zLmgKQEAgLTEyLDkgKzEyLDEwIEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiAjaWYgZGVmaW5lZChVU0Vf
WDExKQotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS9zaGFyZWRfeF9kaXNw
bGF5LmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hf
ZGlzcGxheS5oIgogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpICYmICFkZWZpbmVk
KFdFQlJUQ19JT1MpCkBAIC0yNiw3ICsyNyw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBB
biBvYmplY3QgdGhhdCBzdG9yZXMgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyBmb3Igc2NyZWVu
IGFuZCB3aW5kb3cKIC8vIGNhcHR1cmVycy4KLWNsYXNzIERlc2t0b3BDYXB0dXJlT3B0aW9ucyB7
CitjbGFzcyBSVENfRVhQT1JUIERlc2t0b3BDYXB0dXJlT3B0aW9ucyB7CiAgcHVibGljOgogICAv
LyBSZXR1cm5zIGluc3RhbmNlIG9mIERlc2t0b3BDYXB0dXJlT3B0aW9ucyB3aXRoIGRlZmF1bHQg
cGFyYW1ldGVycy4gT24gTGludXgKICAgLy8gYWxzbyBpbml0aWFsaXplcyBYIHdpbmRvdyBjb25u
ZWN0aW9uLiB4X2Rpc3BsYXkoKSB3aWxsIGJlIHNldCB0byBudWxsIGlmCkBAIC0xMTQsNiArMTE1
LDExIEBAIGNsYXNzIERlc2t0b3BDYXB0dXJlT3B0aW9ucyB7CiAgIH0KICNlbmRpZgogCisjaWYg
ZGVmaW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQorICBib29sIGFsbG93X3BpcGV3aXJlKCkgY29u
c3QgeyByZXR1cm4gYWxsb3dfcGlwZXdpcmVfOyB9CisgIHZvaWQgc2V0X2FsbG93X3BpcGV3aXJl
KGJvb2wgYWxsb3cpIHsgYWxsb3dfcGlwZXdpcmVfID0gYWxsb3c7IH0KKyNlbmRpZgorCiAgcHJp
dmF0ZToKICNpZiBkZWZpbmVkKFVTRV9YMTEpCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRY
RGlzcGxheT4geF9kaXNwbGF5XzsKQEAgLTEzNyw2ICsxNDMsOSBAQCBjbGFzcyBEZXNrdG9wQ2Fw
dHVyZU9wdGlvbnMgewogI2VuZGlmCiAgIGJvb2wgZGlzYWJsZV9lZmZlY3RzXyA9IHRydWU7CiAg
IGJvb2wgZGV0ZWN0X3VwZGF0ZWRfcmVnaW9uXyA9IGZhbHNlOworI2lmIGRlZmluZWQoV0VCUlRD
X1VTRV9QSVBFV0lSRSkKKyAgYm9vbCBhbGxvd19waXBld2lyZV8gPSBmYWxzZTsKKyNlbmRpZgog
fTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3Rv
cF9jYXB0dXJlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuY2MKaW5kZXggMTY2ZDk3
Y2M1MmFmNjk5NzdlM2RhMWViOWIxYjk0YzU3MGI4MTA1ZS4uMTkwZjYxZTgxNzU1YTMyNmZmYTA0
NmFlZWYzYTAzYmMyNzkyYzQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJl
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmNjCkBAIC04LDYgKzgsOCBAQAog
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgogICovCiAKKyNpbmNsdWRlIDxjc3RyaW5nPgorCiAjaW5jbHVkZSAibW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5oIgogCiAjaW5jbHVkZSAibW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKQEAgLTYwLDQgKzYyLDE3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+IERlc2t0b3BDYXB0dXJlcjo6Q3Jl
YXRlU2NyZWVuQ2FwdHVyZXIoCiAgIHJldHVybiBjYXB0dXJlcjsKIH0KIAorI2lmIGRlZmluZWQo
V0VCUlRDX1VTRV9QSVBFV0lSRSkgfHwgZGVmaW5lZChVU0VfWDExKQorYm9vbCBEZXNrdG9wQ2Fw
dHVyZXI6OklzUnVubmluZ1VuZGVyV2F5bGFuZCgpIHsKKyAgY29uc3QgY2hhciogeGRnX3Nlc3Np
b25fdHlwZSA9IGdldGVudigiWERHX1NFU1NJT05fVFlQRSIpOworICBpZiAoIXhkZ19zZXNzaW9u
X3R5cGUgfHwgc3RybmNtcCh4ZGdfc2Vzc2lvbl90eXBlLCAid2F5bGFuZCIsIDcpICE9IDApCisg
ICAgcmV0dXJuIGZhbHNlOworCisgIGlmICghKGdldGVudigiV0FZTEFORF9ESVNQTEFZIikpKQor
ICAgIHJldHVybiBmYWxzZTsKKworICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZiAgLy8gZGVmaW5l
ZChXRUJSVENfVVNFX1BJUEVXSVJFKSB8fCBkZWZpbmVkKFVTRV9YMTEpCisKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuaAppbmRleCA0NzE5NmNmZTQ5MTA4M2Q2NjY5MzBlYjk1
NTZiMzlhMWMzZDcyOTJmLi5mOWRhY2MxZjdhMzg0NzdmN2UzMjgzZWViNjJkODNhOTEzYWJmMGEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
ZGVza3RvcF9jYXB0dXJlci5oCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL3NoYXJlZF9tZW1vcnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0v
cnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMjksNyArMzAsNyBAQCBj
bGFzcyBEZXNrdG9wQ2FwdHVyZU9wdGlvbnM7CiBjbGFzcyBEZXNrdG9wRnJhbWU7CiAKIC8vIEFi
c3RyYWN0IGludGVyZmFjZSBmb3Igc2NyZWVuIGFuZCB3aW5kb3cgY2FwdHVyZXJzLgotY2xhc3Mg
RGVza3RvcENhcHR1cmVyIHsKK2NsYXNzIFJUQ19FWFBPUlQgRGVza3RvcENhcHR1cmVyIHsKICBw
dWJsaWM6CiAgIGVudW0gY2xhc3MgUmVzdWx0IHsKICAgICAvLyBUaGUgZnJhbWUgd2FzIGNhcHR1
cmVkIHN1Y2Nlc3NmdWxseS4KQEAgLTEzNCw2ICsxMzUsMTAgQEAgY2xhc3MgRGVza3RvcENhcHR1
cmVyIHsKICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+IENyZWF0ZVNj
cmVlbkNhcHR1cmVyKAogICAgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25z
KTsKIAorI2lmIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkgfHwgZGVmaW5lZChVU0VfWDEx
KQorICBzdGF0aWMgYm9vbCBJc1J1bm5pbmdVbmRlcldheWxhbmQoKTsKKyNlbmRpZiAgLy8gZGVm
aW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKSB8fCBkZWZpbmVkKFVTRV9YMTEpCisKICBwcm90ZWN0
ZWQ6CiAgIC8vIENyb3BwaW5nV2luZG93Q2FwdHVyZXIgbmVlZHMgdG8gY3JlYXRlIHJhdyBjYXB0
dXJlcnMgd2l0aG91dCB3cmFwcGVycywgc28KICAgLy8gdGhlIGZvbGxvd2luZyB0d28gZnVuY3Rp
b25zIGFyZSBwcm90ZWN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgKaW5kZXggNmY3ZWRmY2M0ZjcwOTVlMWVmMjM2NmU4
MDg4ZTQ2OTRiNTM4OTIxOC4uMjliODRiNzE4MzcyY2YwZDIyNzU3Mjk0ODRjNTk2MTQwODkyNjQz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rl
c2t0b3BfZnJhbWUuaApAQCAtMTgsMTMgKzE4LDE0IEBACiAjaW5jbHVkZSAibW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvZGVza3RvcF9yZWdpb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9zaGFyZWRfbWVtb3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCiBjb25zdCBpbnQga1N0YW5kYXJkRFBJID0gOTY7CiAKIC8vIERlc2t0
b3BGcmFtZSByZXByZXNlbnRzIGEgdmlkZW8gZnJhbWUgY2FwdHVyZWQgZnJvbSB0aGUgc2NyZWVu
LgotY2xhc3MgRGVza3RvcEZyYW1lIHsKK2NsYXNzIFJUQ19FWFBPUlQgRGVza3RvcEZyYW1lIHsK
ICBwdWJsaWM6CiAgIC8vIERlc2t0b3BGcmFtZSBvYmplY3RzIGFsd2F5cyBob2xkIFJHQkEgZGF0
YS4KICAgc3RhdGljIGNvbnN0IGludCBrQnl0ZXNQZXJQaXhlbCA9IDQ7CkBAIC0xMzUsNyArMTM2
LDcgQEAgY2xhc3MgRGVza3RvcEZyYW1lIHsKIH07CiAKIC8vIEEgRGVza3RvcEZyYW1lIHRoYXQg
c3RvcmVzIGRhdGEgaW4gdGhlIGhlYXAuCi1jbGFzcyBCYXNpY0Rlc2t0b3BGcmFtZSA6IHB1Ymxp
YyBEZXNrdG9wRnJhbWUgeworY2xhc3MgUlRDX0VYUE9SVCBCYXNpY0Rlc2t0b3BGcmFtZSA6IHB1
YmxpYyBEZXNrdG9wRnJhbWUgewogIHB1YmxpYzoKICAgZXhwbGljaXQgQmFzaWNEZXNrdG9wRnJh
bWUoRGVza3RvcFNpemUgc2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2Vv
bWV0cnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0cnkuaAppbmRleCAwOWFkNTViYjRiZjE1
NmQzY2E5OWY4MTM2Y2JjNWY2Njg2ZmFjMzk4Li42MjNhNDU1NWY5ZjQ4ZDZjNjEwODMxZDJkMDMz
NWExNzliZDZhN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2dlb21ldHJ5LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvZGVza3RvcF9nZW9tZXRyeS5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKQEAgLTc0LDcgKzc1LDcgQEAgY2xhc3MgRGVza3RvcFNpemUgewogfTsKIAogLy8gUmVw
cmVzZW50cyBhIHJlY3RhbmdsZSBvbiB0aGUgc2NyZWVuLgotY2xhc3MgRGVza3RvcFJlY3Qgewor
Y2xhc3MgUlRDX0VYUE9SVCBEZXNrdG9wUmVjdCB7CiAgcHVibGljOgogICBzdGF0aWMgRGVza3Rv
cFJlY3QgTWFrZVNpemUoY29uc3QgRGVza3RvcFNpemUmIHNpemUpIHsKICAgICByZXR1cm4gRGVz
a3RvcFJlY3QoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL2Rlc2t0b3BfcmVnaW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX3JlZ2lvbi5oCmlu
ZGV4IGY0YjkyMDllMmRjYWZmYzVkMjEyN2ZlYmZmMjc2ZDM0MDM3ZTMzOTAuLmNiYjJkOGM0OGI1
MzAzZGE3MzFhNWI3ZTQ3ZTE3ZjAwZGFlNzczNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0
b3BfcmVnaW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9yZWdpb24uaApAQCAtMTYsNiArMTYs
NyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9nZW9tZXRy
eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAt
MjMsNyArMjQsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIC8vCiAvLyBJbnRlcm5hbGx5IGVhY2gg
cmVnaW9uIGlzIHN0b3JlZCBhcyBhIHNldCBvZiByb3dzIHdoZXJlIGVhY2ggcm93IGNvbnRhaW5z
IG9uZQogLy8gb3IgbW9yZSByZWN0YW5nbGVzIGFsaWduZWQgdmVydGljYWxseS4KLWNsYXNzIERl
c2t0b3BSZWdpb24geworY2xhc3MgUlRDX0VYUE9SVCBEZXNrdG9wUmVnaW9uIHsKICBwcml2YXRl
OgogICAvLyBUaGUgZm9sbG93aW5nIHByaXZhdGUgdHlwZXMgbmVlZCB0byBiZSBkZWNsYXJlZCBm
aXJzdCBiZWNhdXNlIHRoZXkgYXJlIHVzZWQKICAgLy8gaW4gdGhlIHB1YmxpYyBJdGVyYXRvci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Zha2VfZGVza3RvcF9jYXB0dXJlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
ZmFrZV9kZXNrdG9wX2NhcHR1cmVyLmgKaW5kZXggODJjMDUzY2JlMDk4Yjk5MWJiYTEwOTYzYmJh
YjEzZjU3ZjQ4NTI2MS4uZmQ4NjdlMzM1ZGExOTIzYTIyNmRmNjJjNTBiMTNmYzNkNTI0OTkwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvZmFrZV9kZXNrdG9wX2NhcHR1cmVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvZmFrZV9kZXNrdG9wX2NhcHR1cmVyLmgKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJt
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZV9nZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zaGFyZWRfbWVtb3J5LmgiCisjaW5jbHVkZSAicnRj
X2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTMx
LDcgKzMyLDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyBEb3VibGUgYnVmZmVyaW5nIGlzIGd1
YXJhbnRlZWQgYnkgdGhlIEZyYW1lR2VuZXJhdG9yLiBGcmFtZUdlbmVyYXRvcgogLy8gaW1wbGVt
ZW50cyBpbiBkZXNrdG9wX2ZyYW1lX2dlbmVyYXRvci5oIGd1YXJhbnRlZSBkb3VibGUgYnVmZmVy
aW5nLCB0aGV5CiAvLyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIERlc2t0b3BGcmFtZSBlYWNo
IHRpbWUuCi1jbGFzcyBGYWtlRGVza3RvcENhcHR1cmVyIDogcHVibGljIERlc2t0b3BDYXB0dXJl
ciB7CitjbGFzcyBSVENfRVhQT1JUIEZha2VEZXNrdG9wQ2FwdHVyZXIgOiBwdWJsaWMgRGVza3Rv
cENhcHR1cmVyIHsKICBwdWJsaWM6CiAgIEZha2VEZXNrdG9wQ2FwdHVyZXIoKTsKICAgfkZha2VE
ZXNrdG9wQ2FwdHVyZXIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jh
c2VfY2FwdHVyZXJfcGlwZXdpcmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3Bp
cGV3aXJlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyZDk5OTRkMzJhNTI1ZWU5ZTBmZTU5YjJlZGU2YWUzY2M0
MTMxMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3Bp
cGV3aXJlLmNjCkBAIC0wLDAgKzEsODQzIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVk
ZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvYmFzZV9jYXB0dXJlcl9waXBld2lyZS5o
IgorCisjaW5jbHVkZSA8Z2lvL2d1bml4ZmRsaXN0Lmg+CisjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KKworI2luY2x1ZGUgPHNwYS9wYXJhbS9mb3JtYXQtdXRpbHMuaD4KKyNpbmNsdWRlIDxzcGEv
cGFyYW0vcHJvcHMuaD4KKyNpbmNsdWRlIDxzcGEvcGFyYW0vdmlkZW8vcmF3LXV0aWxzLmg+Cisj
aW5jbHVkZSA8c3BhL3N1cHBvcnQvdHlwZS1tYXAuaD4KKworI2luY2x1ZGUgPG1lbW9yeT4KKyNp
bmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5j
bHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY29uc3QgY2hhciBrRGVza3RvcEJ1c05hbWVbXSA9
ICJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiOworY29uc3QgY2hhciBrRGVza3RvcE9i
amVjdFBhdGhbXSA9ICIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIjsKK2NvbnN0IGNo
YXIga0Rlc2t0b3BSZXF1ZXN0T2JqZWN0UGF0aFtdID0KKyAgICAiL29yZy9mcmVlZGVza3RvcC9w
b3J0YWwvZGVza3RvcC9yZXF1ZXN0IjsKK2NvbnN0IGNoYXIga1Nlc3Npb25JbnRlcmZhY2VOYW1l
W10gPSAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TZXNzaW9uIjsKK2NvbnN0IGNoYXIga1JlcXVl
c3RJbnRlcmZhY2VOYW1lW10gPSAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5SZXF1ZXN0IjsKK2Nv
bnN0IGNoYXIga1NjcmVlbkNhc3RJbnRlcmZhY2VOYW1lW10gPSAib3JnLmZyZWVkZXNrdG9wLnBv
cnRhbC5TY3JlZW5DYXN0IjsKKworY29uc3QgaW50IGtCeXRlc1BlclBpeGVsID0gNDsKKworLy8g
c3RhdGljCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblN0YXRlQ2hhbmdlZCh2b2lkKiBk
YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdfcmVtb3Rl
X3N0YXRlIG9sZF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB3X3JlbW90ZV9zdGF0ZSBzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yX21lc3NhZ2UpIHsKKyAgQmFzZUNhcHR1cmVy
UGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KGRhdGEp
OworICBSVENfRENIRUNLKHRoYXQpOworCisgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFBX
X1JFTU9URV9TVEFURV9FUlJPUjoKKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJQaXBlV2ly
ZSByZW1vdGUgc3RhdGUgZXJyb3I6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFdfUkVNT1RFX1NUQVRFX0NPTk5FQ1RFRDoKKyAgICAgIFJUQ19MT0coTFNfSU5G
TykgPDwgIlBpcGVXaXJlIHJlbW90ZSBzdGF0ZTogY29ubmVjdGVkLiI7CisgICAgICB0aGF0LT5D
cmVhdGVSZWNlaXZpbmdTdHJlYW0oKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFdfUkVNT1RF
X1NUQVRFX0NPTk5FQ1RJTkc6CisgICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJQaXBlV2lyZSBy
ZW1vdGUgc3RhdGU6IGNvbm5lY3RpbmcuIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFdfUkVN
T1RFX1NUQVRFX1VOQ09OTkVDVEVEOgorICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUGlwZVdp
cmUgcmVtb3RlIHN0YXRlOiB1bmNvbm5lY3RlZC4iOworICAgICAgYnJlYWs7CisgIH0KK30KKwor
Ly8gc3RhdGljCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblN0cmVhbVN0YXRlQ2hhbmdl
ZCh2b2lkKiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHdfc3RyZWFtX3N0YXRlIG9sZF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB3X3N0cmVhbV9zdGF0ZSBzdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9y
X21lc3NhZ2UpIHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2FzdDxC
YXNlQ2FwdHVyZXJQaXBlV2lyZSo+KGRhdGEpOworICBSVENfRENIRUNLKHRoYXQpOworCisgIHN3
aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFBXX1NUUkVBTV9TVEFURV9FUlJPUjoKKyAgICAgIFJU
Q19MT0coTFNfRVJST1IpIDw8ICJQaXBlV2lyZSBzdHJlYW0gc3RhdGUgZXJyb3I6ICIgPDwgZXJy
b3JfbWVzc2FnZTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFdfU1RSRUFNX1NUQVRFX0NPTkZJ
R1VSRToKKyAgICAgIHB3X3N0cmVhbV9zZXRfYWN0aXZlKHRoYXQtPnB3X3N0cmVhbV8sIHRydWUp
OworICAgICAgYnJlYWs7CisgICAgY2FzZSBQV19TVFJFQU1fU1RBVEVfVU5DT05ORUNURUQ6Cisg
ICAgY2FzZSBQV19TVFJFQU1fU1RBVEVfQ09OTkVDVElORzoKKyAgICBjYXNlIFBXX1NUUkVBTV9T
VEFURV9SRUFEWToKKyAgICBjYXNlIFBXX1NUUkVBTV9TVEFURV9QQVVTRUQ6CisgICAgY2FzZSBQ
V19TVFJFQU1fU1RBVEVfU1RSRUFNSU5HOgorICAgICAgYnJlYWs7CisgIH0KK30KKworLy8gc3Rh
dGljCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblN0cmVhbUZvcm1hdENoYW5nZWQodm9p
ZCogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdHJ1Y3Qgc3BhX3BvZCogZm9ybWF0KSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJl
KiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPihkYXRhKTsKKyAgUlRD
X0RDSEVDSyh0aGF0KTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJQaXBlV2lyZSBzdHJlYW0g
Zm9ybWF0IGNoYW5nZWQuIjsKKworICBpZiAoIWZvcm1hdCkgeworICAgIHB3X3N0cmVhbV9maW5p
c2hfZm9ybWF0KHRoYXQtPnB3X3N0cmVhbV8sIC8qcmVzPSovMCwgLypwYXJhbXM9Ki9udWxscHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbl9wYXJhbXM9Ki8wKTsKKyAgICByZXR1
cm47CisgIH0KKworICB0aGF0LT5zcGFfdmlkZW9fZm9ybWF0XyA9IG5ldyBzcGFfdmlkZW9faW5m
b19yYXcoKTsKKyAgc3BhX2Zvcm1hdF92aWRlb19yYXdfcGFyc2UoZm9ybWF0LCB0aGF0LT5zcGFf
dmlkZW9fZm9ybWF0XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRoYXQtPnB3X3R5
cGVfLT5mb3JtYXRfdmlkZW8pOworCisgIGF1dG8gd2lkdGggPSB0aGF0LT5zcGFfdmlkZW9fZm9y
bWF0Xy0+c2l6ZS53aWR0aDsKKyAgYXV0byBoZWlnaHQgPSB0aGF0LT5zcGFfdmlkZW9fZm9ybWF0
Xy0+c2l6ZS5oZWlnaHQ7CisgIGF1dG8gc3RyaWRlID0gU1BBX1JPVU5EX1VQX04od2lkdGggKiBr
Qnl0ZXNQZXJQaXhlbCwgNCk7CisgIGF1dG8gc2l6ZSA9IGhlaWdodCAqIHN0cmlkZTsKKworICB1
aW50OF90IGJ1ZmZlclsxMDI0XSA9IHt9OworICBhdXRvIGJ1aWxkZXIgPSBzcGFfcG9kX2J1aWxk
ZXJ7YnVmZmVyLCBzaXplb2YoYnVmZmVyKX07CisKKyAgLy8gU2V0dXAgYnVmZmVycyBhbmQgbWV0
YSBoZWFkZXIgZm9yIG5ldyBmb3JtYXQuCisgIGNvbnN0IHN0cnVjdCBzcGFfcG9kKiBwYXJhbXNb
Ml07CisgIHBhcmFtc1swXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3BhX3BvZCo+KHNwYV9wb2RfYnVp
bGRlcl9vYmplY3QoCisgICAgICAmYnVpbGRlciwKKyAgICAgIC8vIGlkIHRvIGVudW1lcmF0ZSBi
dWZmZXIgcmVxdWlyZW1lbnRzCisgICAgICB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbS5pZEJ1
ZmZlcnMsCisgICAgICB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9idWZmZXJzLkJ1ZmZlcnMs
CisgICAgICAvLyBTaXplOiBzcGVjaWZpZWQgYXMgaW50ZWdlciAoaSkgYW5kIHNldCB0byBzcGVj
aWZpZWQgc2l6ZQorICAgICAgIjoiLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9idWZmZXJz
LnNpemUsICJpIiwgc2l6ZSwKKyAgICAgIC8vIFN0cmlkZTogc3BlY2lmaWVkIGFzIGludGVnZXIg
KGkpIGFuZCBzZXQgdG8gc3BlY2lmaWVkIHN0cmlkZQorICAgICAgIjoiLCB0aGF0LT5wd19jb3Jl
X3R5cGVfLT5wYXJhbV9idWZmZXJzLnN0cmlkZSwgImkiLCBzdHJpZGUsCisgICAgICAvLyBCdWZm
ZXJzOiBzcGVjaWZpZXMgaG93IG1hbnkgYnVmZmVycyB3ZSB3YW50IHRvIGRlYWwgd2l0aCwgc2V0
IGFzCisgICAgICAvLyBpbnRlZ2VyIChpKSB3aGVyZSBwcmVmZXJyZWQgbnVtYmVyIGlzIDgsIHRo
ZW4gYWxsb3dlZCBudW1iZXIgaXMgZGVmaW5lZAorICAgICAgLy8gYXMgcmFuZ2UgKHIpIGZyb20g
bWluIGFuZCBtYXggdmFsdWVzIGFuZCBpdCBpcyB1bmRlY2lkZWQgKHUpIHRvIGFsbG93CisgICAg
ICAvLyBuZWdvdGlhdGlvbgorICAgICAgIjoiLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9i
dWZmZXJzLmJ1ZmZlcnMsICJpcnUiLCA4LAorICAgICAgU1BBX1BPRF9QUk9QX01JTl9NQVgoMSwg
MzIpLAorICAgICAgLy8gQWxpZ246IG1lbW9yeSBhbGlnbm1lbnQgb2YgdGhlIGJ1ZmZlciwgc2V0
IGFzIGludGVnZXIgKGkpIHRvIHNwZWNpZmllZAorICAgICAgLy8gdmFsdWUKKyAgICAgICI6Iiwg
dGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW1fYnVmZmVycy5hbGlnbiwgImkiLCAxNikpOworICBw
YXJhbXNbMV0gPSByZWludGVycHJldF9jYXN0PHNwYV9wb2QqPihzcGFfcG9kX2J1aWxkZXJfb2Jq
ZWN0KAorICAgICAgJmJ1aWxkZXIsCisgICAgICAvLyBpZCB0byBlbnVtZXJhdGUgc3VwcG9ydGVk
IG1ldGFkYXRhCisgICAgICB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbS5pZE1ldGEsIHRoYXQt
PnB3X2NvcmVfdHlwZV8tPnBhcmFtX21ldGEuTWV0YSwKKyAgICAgIC8vIFR5cGU6IHNwZWNpZmll
ZCBhcyBpZCBvciBlbnVtIChJKQorICAgICAgIjoiLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJh
bV9tZXRhLnR5cGUsICJJIiwKKyAgICAgIHRoYXQtPnB3X2NvcmVfdHlwZV8tPm1ldGEuSGVhZGVy
LAorICAgICAgLy8gU2l6ZTogc2l6ZSBvZiB0aGUgbWV0YWRhdGEsIHNwZWNpZmllZCBhcyBpbnRl
Z2VyIChpKQorICAgICAgIjoiLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9tZXRhLnNpemUs
ICJpIiwKKyAgICAgIHNpemVvZihzdHJ1Y3Qgc3BhX21ldGFfaGVhZGVyKSkpOworCisgIHB3X3N0
cmVhbV9maW5pc2hfZm9ybWF0KHRoYXQtPnB3X3N0cmVhbV8sIC8qcmVzPSovMCwgcGFyYW1zLCAv
Km5fcGFyYW1zPSovMik7Cit9CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2ly
ZTo6T25TdHJlYW1Qcm9jZXNzKHZvaWQqIGRhdGEpIHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUq
IHRoYXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KGRhdGEpOworICBSVENf
RENIRUNLKHRoYXQpOworCisgIHB3X2J1ZmZlciogYnVmID0gbnVsbHB0cjsKKworICBpZiAoIShi
dWYgPSBwd19zdHJlYW1fZGVxdWV1ZV9idWZmZXIodGhhdC0+cHdfc3RyZWFtXykpKSB7CisgICAg
cmV0dXJuOworICB9CisKKyAgdGhhdC0+SGFuZGxlQnVmZmVyKGJ1Zik7CisKKyAgcHdfc3RyZWFt
X3F1ZXVlX2J1ZmZlcih0aGF0LT5wd19zdHJlYW1fLCBidWYpOworfQorCitCYXNlQ2FwdHVyZXJQ
aXBlV2lyZTo6QmFzZUNhcHR1cmVyUGlwZVdpcmUoQ2FwdHVyZVNvdXJjZVR5cGUgc291cmNlX3R5
cGUpCisgICAgOiBjYXB0dXJlX3NvdXJjZV90eXBlXyhzb3VyY2VfdHlwZSkge30KKworQmFzZUNh
cHR1cmVyUGlwZVdpcmU6On5CYXNlQ2FwdHVyZXJQaXBlV2lyZSgpIHsKKyAgaWYgKHB3X21haW5f
bG9vcF8pIHsKKyAgICBwd190aHJlYWRfbG9vcF9zdG9wKHB3X21haW5fbG9vcF8pOworICB9CisK
KyAgaWYgKHB3X3R5cGVfKSB7CisgICAgZGVsZXRlIHB3X3R5cGVfOworICB9CisKKyAgaWYgKHNw
YV92aWRlb19mb3JtYXRfKSB7CisgICAgZGVsZXRlIHNwYV92aWRlb19mb3JtYXRfOworICB9CisK
KyAgaWYgKHB3X3N0cmVhbV8pIHsKKyAgICBwd19zdHJlYW1fZGVzdHJveShwd19zdHJlYW1fKTsK
KyAgfQorCisgIGlmIChwd19yZW1vdGVfKSB7CisgICAgcHdfcmVtb3RlX2Rlc3Ryb3kocHdfcmVt
b3RlXyk7CisgIH0KKworICBpZiAocHdfY29yZV8pIHsKKyAgICBwd19jb3JlX2Rlc3Ryb3kocHdf
Y29yZV8pOworICB9CisKKyAgaWYgKHB3X21haW5fbG9vcF8pIHsKKyAgICBwd190aHJlYWRfbG9v
cF9kZXN0cm95KHB3X21haW5fbG9vcF8pOworICB9CisKKyAgaWYgKHB3X2xvb3BfKSB7CisgICAg
cHdfbG9vcF9kZXN0cm95KHB3X2xvb3BfKTsKKyAgfQorCisgIGlmIChjdXJyZW50X2ZyYW1lXykg
eworICAgIGZyZWUoY3VycmVudF9mcmFtZV8pOworICB9CisKKyAgaWYgKHN0YXJ0X3JlcXVlc3Rf
c2lnbmFsX2lkXykgeworICAgIGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF91bnN1YnNjcmliZShj
b25uZWN0aW9uXywgc3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAgfQorICBpZiAoc291cmNl
c19yZXF1ZXN0X3NpZ25hbF9pZF8pIHsKKyAgICBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfdW5z
dWJzY3JpYmUoY29ubmVjdGlvbl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNvdXJjZXNfcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAgfQorICBpZiAoc2Vzc2lvbl9y
ZXF1ZXN0X3NpZ25hbF9pZF8pIHsKKyAgICBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfdW5zdWJz
Y3JpYmUoY29ubmVjdGlvbl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlc3Npb25fcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAgfQorCisgIGlmIChzZXNzaW9uX2hh
bmRsZV8pIHsKKyAgICBHREJ1c01lc3NhZ2UqIG1lc3NhZ2UgPSBnX2RidXNfbWVzc2FnZV9uZXdf
bWV0aG9kX2NhbGwoCisgICAgICAgIGtEZXNrdG9wQnVzTmFtZSwgc2Vzc2lvbl9oYW5kbGVfLCBr
U2Vzc2lvbkludGVyZmFjZU5hbWUsICJDbG9zZSIpOworICAgIGlmIChtZXNzYWdlKSB7CisgICAg
ICBHRXJyb3IqIGVycm9yID0gbnVsbHB0cjsKKyAgICAgIGdfZGJ1c19jb25uZWN0aW9uX3NlbmRf
bWVzc2FnZShjb25uZWN0aW9uXywgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHX0RCVVNfU0VORF9NRVNTQUdFX0ZMQUdTX05PTkUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLypvdXRfc2VyaWFsPSovbnVsbHB0ciwgJmVycm9yKTsK
KyAgICAgIGlmIChlcnJvcikgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVk
IHRvIGNsb3NlIHRoZSBzZXNzaW9uOiAiIDw8IGVycm9yLT5tZXNzYWdlOworICAgICAgICBnX2Vy
cm9yX2ZyZWUoZXJyb3IpOworICAgICAgfQorICAgICAgZ19vYmplY3RfdW5yZWYobWVzc2FnZSk7
CisgICAgfQorICB9CisKKyAgZ19mcmVlKHN0YXJ0X2hhbmRsZV8pOworICBnX2ZyZWUoc291cmNl
c19oYW5kbGVfKTsKKyAgZ19mcmVlKHNlc3Npb25faGFuZGxlXyk7CisgIGdfZnJlZShwb3J0YWxf
aGFuZGxlXyk7CisKKyAgaWYgKHByb3h5XykgeworICAgIGdfY2xlYXJfb2JqZWN0KCZwcm94eV8p
OworICB9Cit9CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkluaXRQb3J0YWwoKSB7Cisg
IGdfZGJ1c19wcm94eV9uZXdfZm9yX2J1cygKKyAgICAgIEdfQlVTX1RZUEVfU0VTU0lPTiwgR19E
QlVTX1BST1hZX0ZMQUdTX05PTkUsIC8qaW5mbz0qL251bGxwdHIsCisgICAgICBrRGVza3RvcEJ1
c05hbWUsIGtEZXNrdG9wT2JqZWN0UGF0aCwga1NjcmVlbkNhc3RJbnRlcmZhY2VOYW1lLAorICAg
ICAgLypjYW5jZWxsYWJsZT0qL251bGxwdHIsCisgICAgICByZWludGVycHJldF9jYXN0PEdBc3lu
Y1JlYWR5Q2FsbGJhY2s+KE9uUHJveHlSZXF1ZXN0ZWQpLCB0aGlzKTsKK30KKwordm9pZCBCYXNl
Q2FwdHVyZXJQaXBlV2lyZTo6SW5pdFBpcGVXaXJlKCkgeworICBwd19pbml0KC8qYXJnYz0qL251
bGxwdHIsIC8qYXJnYz0qL251bGxwdHIpOworCisgIHB3X2xvb3BfID0gcHdfbG9vcF9uZXcoLypw
cm9wZXJ0aWVzPSovbnVsbHB0cik7CisgIHB3X21haW5fbG9vcF8gPSBwd190aHJlYWRfbG9vcF9u
ZXcocHdfbG9vcF8sICJwaXBld2lyZS1tYWluLWxvb3AiKTsKKworICBwd19jb3JlXyA9IHB3X2Nv
cmVfbmV3KHB3X2xvb3BfLCAvKnByb3BlcnRpZXM9Ki9udWxscHRyKTsKKyAgcHdfY29yZV90eXBl
XyA9IHB3X2NvcmVfZ2V0X3R5cGUocHdfY29yZV8pOworICBwd19yZW1vdGVfID0gcHdfcmVtb3Rl
X25ldyhwd19jb3JlXywgbnVsbHB0ciwgLyp1c2VyX2RhdGFfc2l6ZT0qLzApOworCisgIEluaXRQ
aXBlV2lyZVR5cGVzKCk7CisKKyAgLy8gSW5pdGlhbGl6ZSBldmVudCBoYW5kbGVycywgcmVtb3Rl
IGVuZCBhbmQgc3RyZWFtLXJlbGF0ZWQuCisgIHB3X3JlbW90ZV9ldmVudHNfLnZlcnNpb24gPSBQ
V19WRVJTSU9OX1JFTU9URV9FVkVOVFM7CisgIHB3X3JlbW90ZV9ldmVudHNfLnN0YXRlX2NoYW5n
ZWQgPSAmT25TdGF0ZUNoYW5nZWQ7CisKKyAgcHdfc3RyZWFtX2V2ZW50c18udmVyc2lvbiA9IFBX
X1ZFUlNJT05fU1RSRUFNX0VWRU5UUzsKKyAgcHdfc3RyZWFtX2V2ZW50c18uc3RhdGVfY2hhbmdl
ZCA9ICZPblN0cmVhbVN0YXRlQ2hhbmdlZDsKKyAgcHdfc3RyZWFtX2V2ZW50c18uZm9ybWF0X2No
YW5nZWQgPSAmT25TdHJlYW1Gb3JtYXRDaGFuZ2VkOworICBwd19zdHJlYW1fZXZlbnRzXy5wcm9j
ZXNzID0gJk9uU3RyZWFtUHJvY2VzczsKKworICBwd19yZW1vdGVfYWRkX2xpc3RlbmVyKHB3X3Jl
bW90ZV8sICZzcGFfcmVtb3RlX2xpc3RlbmVyXywgJnB3X3JlbW90ZV9ldmVudHNfLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMpOworICBwd19yZW1vdGVfY29ubmVjdF9mZChwd19yZW1v
dGVfLCBwd19mZF8pOworCisgIGlmIChwd190aHJlYWRfbG9vcF9zdGFydChwd19tYWluX2xvb3Bf
KSA8IDApIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHN0YXJ0IG1haW4g
UGlwZVdpcmUgbG9vcCI7CisgICAgcG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgIH0KK30K
Kwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6SW5pdFBpcGVXaXJlVHlwZXMoKSB7CisgIHNw
YV90eXBlX21hcCogbWFwID0gcHdfY29yZV90eXBlXy0+bWFwOworICBwd190eXBlXyA9IG5ldyBQ
aXBlV2lyZVR5cGUoKTsKKworICBzcGFfdHlwZV9tZWRpYV90eXBlX21hcChtYXAsICZwd190eXBl
Xy0+bWVkaWFfdHlwZSk7CisgIHNwYV90eXBlX21lZGlhX3N1YnR5cGVfbWFwKG1hcCwgJnB3X3R5
cGVfLT5tZWRpYV9zdWJ0eXBlKTsKKyAgc3BhX3R5cGVfZm9ybWF0X3ZpZGVvX21hcChtYXAsICZw
d190eXBlXy0+Zm9ybWF0X3ZpZGVvKTsKKyAgc3BhX3R5cGVfdmlkZW9fZm9ybWF0X21hcChtYXAs
ICZwd190eXBlXy0+dmlkZW9fZm9ybWF0KTsKK30KKwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2ly
ZTo6Q3JlYXRlUmVjZWl2aW5nU3RyZWFtKCkgeworICBzcGFfcmVjdGFuZ2xlIHB3TWluU2NyZWVu
Qm91bmRzID0gc3BhX3JlY3RhbmdsZXsxLCAxfTsKKyAgc3BhX3JlY3RhbmdsZSBwd1NjcmVlbkJv
dW5kcyA9CisgICAgICBzcGFfcmVjdGFuZ2xle3N0YXRpY19jYXN0PHVpbnQzMl90PihkZXNrdG9w
X3NpemVfLndpZHRoKCkpLAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oZGVza3RvcF9zaXplXy5oZWlnaHQoKSl9OworCisgIHNwYV9mcmFjdGlvbiBwd0ZyYW1lUmF0
ZU1pbiA9IHNwYV9mcmFjdGlvbnswLCAxfTsKKyAgc3BhX2ZyYWN0aW9uIHB3RnJhbWVSYXRlTWF4
ID0gc3BhX2ZyYWN0aW9uezYwLCAxfTsKKworICBwd19wcm9wZXJ0aWVzKiByZXVzZVByb3BzID0g
cHdfcHJvcGVydGllc19uZXcoInBpcGV3aXJlLmNsaWVudC5yZXVzZSIsICIxIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZW5kIG9mIHZhcmFyZ3Mq
LyBudWxscHRyKTsKKyAgcHdfc3RyZWFtXyA9IHB3X3N0cmVhbV9uZXcocHdfcmVtb3RlXywgIndl
YnJ0Yy1jb25zdW1lLXN0cmVhbSIsIHJldXNlUHJvcHMpOworCisgIHVpbnQ4X3QgYnVmZmVyWzEw
MjRdID0ge307CisgIGNvbnN0IHNwYV9wb2QqIHBhcmFtc1sxXTsKKyAgc3BhX3BvZF9idWlsZGVy
IGJ1aWxkZXIgPSBzcGFfcG9kX2J1aWxkZXJ7YnVmZmVyLCBzaXplb2YoYnVmZmVyKX07CisgIHBh
cmFtc1swXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3BhX3BvZCo+KHNwYV9wb2RfYnVpbGRlcl9vYmpl
Y3QoCisgICAgICAmYnVpbGRlciwKKyAgICAgIC8vIGlkIHRvIGVudW1lcmF0ZSBmb3JtYXRzCisg
ICAgICBwd19jb3JlX3R5cGVfLT5wYXJhbS5pZEVudW1Gb3JtYXQsIHB3X2NvcmVfdHlwZV8tPnNw
YV9mb3JtYXQsICJJIiwKKyAgICAgIHB3X3R5cGVfLT5tZWRpYV90eXBlLnZpZGVvLCAiSSIsIHB3
X3R5cGVfLT5tZWRpYV9zdWJ0eXBlLnJhdywKKyAgICAgIC8vIFZpZGVvIGZvcm1hdDogc3BlY2lm
aWVkIGFzIGlkIG9yIGVudW0gKEkpLCBwcmVmZXJyZWQgZm9ybWF0IGlzIEJHUngsCisgICAgICAv
LyB0aGVuIGFsbG93ZWQgZm9ybWF0cyBhcmUgZW51bWVyYXRlZCAoZSkgYW5kIHRoZSBmb3JtYXQg
aXMgdW5kZWNpZGVkICh1KQorICAgICAgLy8gdG8gYWxsb3cgbmVnb3RpYXRpb24KKyAgICAgICI6
IiwgcHdfdHlwZV8tPmZvcm1hdF92aWRlby5mb3JtYXQsICJJZXUiLCBwd190eXBlXy0+dmlkZW9f
Zm9ybWF0LkJHUngsCisgICAgICBTUEFfUE9EX1BST1BfRU5VTSgyLCBwd190eXBlXy0+dmlkZW9f
Zm9ybWF0LlJHQngsCisgICAgICAgICAgICAgICAgICAgICAgICBwd190eXBlXy0+dmlkZW9fZm9y
bWF0LkJHUngpLAorICAgICAgLy8gVmlkZW8gc2l6ZTogc3BlY2lmaWVkIGFzIHJlY3RhbmdsZSAo
UiksIHByZWZlcnJlZCBzaXplIGlzIHNwZWNpZmllZCBhcworICAgICAgLy8gZmlyc3QgcGFyYW1l
dGVyLCB0aGVuIGFsbG93ZWQgc2l6ZSBpcyBkZWZpbmVkIGFzIHJhbmdlIChyKSBmcm9tIG1pbiBh
bmQKKyAgICAgIC8vIG1heCB2YWx1ZXMgYW5kIHRoZSBmb3JtYXQgaXMgdW5kZWNpZGVkICh1KSB0
byBhbGxvdyBuZWdvdGlhdGlvbgorICAgICAgIjoiLCBwd190eXBlXy0+Zm9ybWF0X3ZpZGVvLnNp
emUsICJScnUiLCAmcHdTY3JlZW5Cb3VuZHMsIDIsCisgICAgICAmcHdNaW5TY3JlZW5Cb3VuZHMs
ICZwd1NjcmVlbkJvdW5kcywKKyAgICAgIC8vIEZyYW1lIHJhdGU6IHNwZWNpZmllZCBhcyBmcmFj
dGlvbiAoRikgYW5kIHNldCB0byBtaW5pbXVtIGZyYW1lIHJhdGUKKyAgICAgIC8vIHZhbHVlCisg
ICAgICAiOiIsIHB3X3R5cGVfLT5mb3JtYXRfdmlkZW8uZnJhbWVyYXRlLCAiRiIsICZwd0ZyYW1l
UmF0ZU1pbiwKKyAgICAgIC8vIE1heCBmcmFtZSByYXRlOiBzcGVjaWZpZWQgYXMgZnJhY3Rpb24g
KEYpLCBwcmVmZXJyZWQgZnJhbWUgcmF0ZSBpcyBzZXQKKyAgICAgIC8vIHRvIG1heGltdW0gdmFs
dWUsIHRoZW4gYWxsb3dlZCBmcmFtZSByYXRlIGlzIGRlZmluZWQgYXMgcmFuZ2UgKHIpIGZyb20K
KyAgICAgIC8vIG1pbiBhbmQgbWF4IHZhbHVlcyBhbmQgaXQgaXMgdW5kZWNpZGVkICh1KSB0byBh
bGxvdyBuZWdvdGlhdGlvbgorICAgICAgIjoiLCBwd190eXBlXy0+Zm9ybWF0X3ZpZGVvLm1heF9m
cmFtZXJhdGUsICJGcnUiLCAmcHdGcmFtZVJhdGVNYXgsIDIsCisgICAgICAmcHdGcmFtZVJhdGVN
aW4sICZwd0ZyYW1lUmF0ZU1heCkpOworCisgIHB3X3N0cmVhbV9hZGRfbGlzdGVuZXIocHdfc3Ry
ZWFtXywgJnNwYV9zdHJlYW1fbGlzdGVuZXJfLCAmcHdfc3RyZWFtX2V2ZW50c18sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcyk7CisgIHB3X3N0cmVhbV9mbGFncyBmbGFncyA9IHN0YXRp
Y19jYXN0PHB3X3N0cmVhbV9mbGFncz4oCisgICAgICBQV19TVFJFQU1fRkxBR19BVVRPQ09OTkVD
VCB8IFBXX1NUUkVBTV9GTEFHX0lOQUNUSVZFIHwKKyAgICAgIFBXX1NUUkVBTV9GTEFHX01BUF9C
VUZGRVJTKTsKKyAgaWYgKHB3X3N0cmVhbV9jb25uZWN0KHB3X3N0cmVhbV8sIFBXX0RJUkVDVElP
Tl9JTlBVVCwgLypwb3J0X3BhdGg9Ki9udWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3MsIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qbl9wYXJhbXM9Ki8xKSAh
PSAwKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNvdWxkIG5vdCBjb25uZWN0IHJlY2Vp
dmluZyBzdHJlYW0uIjsKKyAgICBwb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1
cm47CisgIH0KK30KKwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6SGFuZGxlQnVmZmVyKHB3
X2J1ZmZlciogYnVmZmVyKSB7CisgIHNwYV9idWZmZXIqIHNwYUJ1ZmZlciA9IGJ1ZmZlci0+YnVm
ZmVyOworICB2b2lkKiBzcmMgPSBudWxscHRyOworCisgIGlmICghKHNyYyA9IHNwYUJ1ZmZlci0+
ZGF0YXNbMF0uZGF0YSkpIHsKKyAgICByZXR1cm47CisgIH0KKworICB1aW50MzJfdCBtYXhTaXpl
ID0gc3BhQnVmZmVyLT5kYXRhc1swXS5tYXhzaXplOworICBpbnQzMl90IHNyY1N0cmlkZSA9IHNw
YUJ1ZmZlci0+ZGF0YXNbMF0uY2h1bmstPnN0cmlkZTsKKyAgaWYgKHNyY1N0cmlkZSAhPSAoZGVz
a3RvcF9zaXplXy53aWR0aCgpICoga0J5dGVzUGVyUGl4ZWwpKSB7CisgICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIkdvdCBidWZmZXIgd2l0aCBzdHJpZGUgZGlmZmVyZW50IGZyb20gc2NyZWVuIHN0
cmlkZTogIgorICAgICAgICAgICAgICAgICAgICAgIDw8IHNyY1N0cmlkZQorICAgICAgICAgICAg
ICAgICAgICAgIDw8ICIgIT0gIiA8PCAoZGVza3RvcF9zaXplXy53aWR0aCgpICoga0J5dGVzUGVy
UGl4ZWwpOworICAgIHBvcnRhbF9pbml0X2ZhaWxlZF8gPSB0cnVlOworICAgIHJldHVybjsKKyAg
fQorCisgIGlmICghY3VycmVudF9mcmFtZV8pIHsKKyAgICBjdXJyZW50X2ZyYW1lXyA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3QqPihtYWxsb2MobWF4U2l6ZSkpOworICB9CisgIFJUQ19EQ0hFQ0soY3Vy
cmVudF9mcmFtZV8gIT0gbnVsbHB0cik7CisKKyAgLy8gSWYgYm90aCBzaWRlcyBkZWNpZGVkIHRv
IGdvIHdpdGggdGhlIFJHQnggZm9ybWF0IHdlIG5lZWQgdG8gY29udmVydCBpdCB0bworICAvLyBC
R1J4IHRvIG1hdGNoIGNvbG9yIGZvcm1hdCBleHBlY3RlZCBieSBXZWJSVEMuCisgIGlmIChzcGFf
dmlkZW9fZm9ybWF0Xy0+Zm9ybWF0ID09IHB3X3R5cGVfLT52aWRlb19mb3JtYXQuUkdCeCkgewor
ICAgIHVpbnQ4X3QqIHRlbXBGcmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYWxsb2MobWF4
U2l6ZSkpOworICAgIHN0ZDo6bWVtY3B5KHRlbXBGcmFtZSwgc3JjLCBtYXhTaXplKTsKKyAgICBD
b252ZXJ0UkdCeFRvQkdSeCh0ZW1wRnJhbWUsIG1heFNpemUpOworICAgIHN0ZDo6bWVtY3B5KGN1
cnJlbnRfZnJhbWVfLCB0ZW1wRnJhbWUsIG1heFNpemUpOworICAgIGZyZWUodGVtcEZyYW1lKTsK
KyAgfSBlbHNlIHsKKyAgICBzdGQ6Om1lbWNweShjdXJyZW50X2ZyYW1lXywgc3JjLCBtYXhTaXpl
KTsKKyAgfQorfQorCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDb252ZXJ0UkdCeFRvQkdS
eCh1aW50OF90KiBmcmFtZSwgdWludDMyX3Qgc2l6ZSkgeworICAvLyBDaGFuZ2UgY29sb3IgZm9y
bWF0IGZvciBLREUgS1dpbiB3aGljaCB1c2VzIFJHQnggYW5kIG5vdCBCR1J4CisgIGZvciAodWlu
dDMyX3QgaSA9IDA7IGkgPCBzaXplOyBpICs9IDQpIHsKKyAgICB1aW50OF90IHRlbXBSID0gZnJh
bWVbaV07CisgICAgdWludDhfdCB0ZW1wQiA9IGZyYW1lW2kgKyAyXTsKKyAgICBmcmFtZVtpXSA9
IHRlbXBCOworICAgIGZyYW1lW2kgKyAyXSA9IHRlbXBSOworICB9Cit9CisKK2d1aW50IEJhc2VD
YXB0dXJlclBpcGVXaXJlOjpTZXR1cFJlcXVlc3RSZXNwb25zZVNpZ25hbCgKKyAgICBjb25zdCBn
Y2hhciogb2JqZWN0X3BhdGgsCisgICAgR0RCdXNTaWduYWxDYWxsYmFjayBjYWxsYmFjaykgewor
ICByZXR1cm4gZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3N1YnNjcmliZSgKKyAgICAgIGNvbm5l
Y3Rpb25fLCBrRGVza3RvcEJ1c05hbWUsIGtSZXF1ZXN0SW50ZXJmYWNlTmFtZSwgIlJlc3BvbnNl
IiwKKyAgICAgIG9iamVjdF9wYXRoLCAvKmFyZzA9Ki9udWxscHRyLCBHX0RCVVNfU0lHTkFMX0ZM
QUdTX05PX01BVENIX1JVTEUsCisgICAgICBjYWxsYmFjaywgdGhpcywgLyp1c2VyX2RhdGFfZnJl
ZV9mdW5jPSovbnVsbHB0cik7Cit9CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBl
V2lyZTo6T25Qcm94eVJlcXVlc3RlZChHT2JqZWN0KiAvKm9iamVjdCovLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQqIHJlc3VsdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9k
YXRhKSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNh
cHR1cmVyUGlwZVdpcmUqPih1c2VyX2RhdGEpOworICBSVENfRENIRUNLKHRoYXQpOworCisgIEdF
cnJvciogZXJyb3IgPSBudWxscHRyOworICB0aGF0LT5wcm94eV8gPSBnX2RidXNfcHJveHlfbmV3
X2ZpbmlzaChyZXN1bHQsICZlcnJvcik7CisgIGlmICghdGhhdC0+cHJveHlfKSB7CisgICAgUlRD
X0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBjcmVhdGUgYSBwcm94eSBmb3IgdGhlIHNjcmVl
biBjYXN0IHBvcnRhbDogIgorICAgICAgICAgICAgICAgICAgICAgIDw8IGVycm9yLT5tZXNzYWdl
OworICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVk
XyA9IHRydWU7CisgICAgcmV0dXJuOworICB9CisgIHRoYXQtPmNvbm5lY3Rpb25fID0gZ19kYnVz
X3Byb3h5X2dldF9jb25uZWN0aW9uKHRoYXQtPnByb3h5Xyk7CisKKyAgUlRDX0xPRyhMU19JTkZP
KSA8PCAiQ3JlYXRlZCBwcm94eSBmb3IgdGhlIHNjcmVlbiBjYXN0IHBvcnRhbC4iOworICB0aGF0
LT5TZXNzaW9uUmVxdWVzdCgpOworfQorCisvLyBzdGF0aWMKK2djaGFyKiBCYXNlQ2FwdHVyZXJQ
aXBlV2lyZTo6UHJlcGFyZVNpZ25hbEhhbmRsZShHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2NoYXIqIHRva2VuKSB7CisgIGdjaGFyKiBzZW5kZXIgPSBnX3N0cmR1cChnX2RidXNfY29ubmVj
dGlvbl9nZXRfdW5pcXVlX25hbWUoY29ubmVjdGlvbikgKyAxKTsKKyAgZm9yIChpbnQgaSA9IDA7
IHNlbmRlcltpXTsgaSsrKSB7CisgICAgaWYgKHNlbmRlcltpXSA9PSAnLicpIHsKKyAgICAgIHNl
bmRlcltpXSA9ICdfJzsKKyAgICB9CisgIH0KKworICBnY2hhciogaGFuZGxlID0gZ19zdHJjb25j
YXQoa0Rlc2t0b3BSZXF1ZXN0T2JqZWN0UGF0aCwgIi8iLCBzZW5kZXIsICIvIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCAvKmVuZCBvZiB2YXJhcmdzKi8gbnVsbHB0cik7
CisgIGdfZnJlZShzZW5kZXIpOworCisgIHJldHVybiBoYW5kbGU7Cit9CisKK3ZvaWQgQmFzZUNh
cHR1cmVyUGlwZVdpcmU6OlNlc3Npb25SZXF1ZXN0KCkgeworICBHVmFyaWFudEJ1aWxkZXIgYnVp
bGRlcjsKKyAgZ2NoYXIqIHZhcmlhbnRfc3RyaW5nOworCisgIGdfdmFyaWFudF9idWlsZGVyX2lu
aXQoJmJ1aWxkZXIsIEdfVkFSSUFOVF9UWVBFX1ZBUkRJQ1QpOworICB2YXJpYW50X3N0cmluZyA9
CisgICAgICBnX3N0cmR1cF9wcmludGYoIndlYnJ0Y19zZXNzaW9uJWQiLCBnX3JhbmRvbV9pbnRf
cmFuZ2UoMCwgR19NQVhJTlQpKTsKKyAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAi
e3N2fSIsICJzZXNzaW9uX2hhbmRsZV90b2tlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBn
X3ZhcmlhbnRfbmV3X3N0cmluZyh2YXJpYW50X3N0cmluZykpOworICBnX2ZyZWUodmFyaWFudF9z
dHJpbmcpOworICB2YXJpYW50X3N0cmluZyA9IGdfc3RyZHVwX3ByaW50Zigid2VicnRjJWQiLCBn
X3JhbmRvbV9pbnRfcmFuZ2UoMCwgR19NQVhJTlQpKTsKKyAgZ192YXJpYW50X2J1aWxkZXJfYWRk
KCZidWlsZGVyLCAie3N2fSIsICJoYW5kbGVfdG9rZW4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZ192YXJpYW50X25ld19zdHJpbmcodmFyaWFudF9zdHJpbmcpKTsKKworICBwb3J0YWxfaGFu
ZGxlXyA9IFByZXBhcmVTaWduYWxIYW5kbGUoY29ubmVjdGlvbl8sIHZhcmlhbnRfc3RyaW5nKTsK
KyAgc2Vzc2lvbl9yZXF1ZXN0X3NpZ25hbF9pZF8gPSBTZXR1cFJlcXVlc3RSZXNwb25zZVNpZ25h
bCgKKyAgICAgIHBvcnRhbF9oYW5kbGVfLCBPblNlc3Npb25SZXF1ZXN0UmVzcG9uc2VTaWduYWwp
OworICBnX2ZyZWUodmFyaWFudF9zdHJpbmcpOworCisgIFJUQ19MT0coTFNfSU5GTykgPDwgIlNj
cmVlbiBjYXN0IHNlc3Npb24gcmVxdWVzdGVkLiI7CisgIGdfZGJ1c19wcm94eV9jYWxsKAorICAg
ICAgcHJveHlfLCAiQ3JlYXRlU2Vzc2lvbiIsIGdfdmFyaWFudF9uZXcoIihhe3N2fSkiLCAmYnVp
bGRlciksCisgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLCAvKnRpbWVvdXQ9Ki8tMSwgLypj
YW5jZWxsYWJsZT0qL251bGxwdHIsCisgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5
Q2FsbGJhY2s+KE9uU2Vzc2lvblJlcXVlc3RlZCksIHRoaXMpOworfQorCisvLyBzdGF0aWMKK3Zv
aWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU2Vzc2lvblJlcXVlc3RlZChHREJ1c0Nvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKSB7CisgIEJhc2VDYXB0dXJlclBp
cGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPih1c2VyX2Rh
dGEpOworICBSVENfRENIRUNLKHRoYXQpOworCisgIEdFcnJvciogZXJyb3IgPSBudWxscHRyOwor
ICBHVmFyaWFudCogdmFyaWFudCA9IGdfZGJ1c19wcm94eV9jYWxsX2ZpbmlzaCh0aGF0LT5wcm94
eV8sIHJlc3VsdCwgJmVycm9yKTsKKyAgaWYgKCF2YXJpYW50KSB7CisgICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIkZhaWxlZCB0byBjcmVhdGUgYSBzY3JlZW4gY2FzdCBzZXNzaW9uOiAiCisgICAg
ICAgICAgICAgICAgICAgICAgPDwgZXJyb3ItPm1lc3NhZ2U7CisgICAgZ19lcnJvcl9mcmVlKGVy
cm9yKTsKKyAgICB0aGF0LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47
CisgIH0KKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiSW5pdGlhbGl6aW5nIHRoZSBzY3JlZW4gY2Fz
dCBzZXNzaW9uLiI7CisKKyAgZ2NoYXIqIGhhbmRsZSA9IG51bGxwdHI7CisgIGdfdmFyaWFudF9n
ZXRfY2hpbGQodmFyaWFudCwgMCwgIm8iLCAmaGFuZGxlKTsKKyAgZ192YXJpYW50X3VucmVmKHZh
cmlhbnQpOworICBpZiAoIWhhbmRsZSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWls
ZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworICAgIGlmICh0aGF0
LT5zZXNzaW9uX3JlcXVlc3Rfc2lnbmFsX2lkXykgeworICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25f
c2lnbmFsX3Vuc3Vic2NyaWJlKGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhhdC0+c2Vzc2lvbl9yZXF1ZXN0X3NpZ25hbF9pZF8pOworICAg
ICAgdGhhdC0+c2Vzc2lvbl9yZXF1ZXN0X3NpZ25hbF9pZF8gPSAwOworICAgIH0KKyAgICB0aGF0
LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKworICBnX2Zy
ZWUoaGFuZGxlKTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJTdWJzY3JpYmluZyB0byB0aGUg
c2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFzZUNhcHR1cmVy
UGlwZVdpcmU6Ok9uU2Vzc2lvblJlcXVlc3RSZXNwb25zZVNpZ25hbCgKKyAgICBHREJ1c0Nvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sCisgICAgY29uc3QgZ2NoYXIqIHNlbmRlcl9uYW1lLAorICAgIGNv
bnN0IGdjaGFyKiBvYmplY3RfcGF0aCwKKyAgICBjb25zdCBnY2hhciogaW50ZXJmYWNlX25hbWUs
CisgICAgY29uc3QgZ2NoYXIqIHNpZ25hbF9uYW1lLAorICAgIEdWYXJpYW50KiBwYXJhbWV0ZXJz
LAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkgeworICBCYXNlQ2FwdHVyZXJQaXBlV2lyZSogdGhh
dCA9IHN0YXRpY19jYXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4odXNlcl9kYXRhKTsKKyAgUlRD
X0RDSEVDSyh0aGF0KTsKKworICBSVENfTE9HKExTX0lORk8pCisgICAgICA8PCAiUmVjZWl2ZWQg
cmVzcG9uc2UgZm9yIHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9uIHN1YnNjcmlwdGlvbi4iOworCisg
IGd1aW50MzIgcG9ydGFsX3Jlc3BvbnNlOworICBHVmFyaWFudCogcmVzcG9uc2VfZGF0YTsKKyAg
Z192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHVAYXtzdn0pIiwgJnBvcnRhbF9yZXNwb25zZSwg
JnJlc3BvbnNlX2RhdGEpOworICBnX3ZhcmlhbnRfbG9va3VwKHJlc3BvbnNlX2RhdGEsICJzZXNz
aW9uX2hhbmRsZSIsICJzIiwKKyAgICAgICAgICAgICAgICAgICAmdGhhdC0+c2Vzc2lvbl9oYW5k
bGVfKTsKKyAgZ192YXJpYW50X3VucmVmKHJlc3BvbnNlX2RhdGEpOworCisgIGlmICghdGhhdC0+
c2Vzc2lvbl9oYW5kbGVfIHx8IHBvcnRhbF9yZXNwb25zZSkgeworICAgIFJUQ19MT0coTFNfRVJS
T1IpCisgICAgICAgIDw8ICJGYWlsZWQgdG8gcmVxdWVzdCB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lv
biBzdWJzY3JpcHRpb24uIjsKKyAgICB0aGF0LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsK
KyAgICByZXR1cm47CisgIH0KKworICB0aGF0LT5Tb3VyY2VzUmVxdWVzdCgpOworfQorCit2b2lk
IEJhc2VDYXB0dXJlclBpcGVXaXJlOjpTb3VyY2VzUmVxdWVzdCgpIHsKKyAgR1ZhcmlhbnRCdWls
ZGVyIGJ1aWxkZXI7CisgIGdjaGFyKiB2YXJpYW50X3N0cmluZzsKKworICBnX3ZhcmlhbnRfYnVp
bGRlcl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgLy8gV2Ugd2Fu
dCB0byByZWNvcmQgbW9uaXRvciBjb250ZW50LgorICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1
aWxkZXIsICJ7c3Z9IiwgInR5cGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFu
dF9uZXdfdWludDMyKGNhcHR1cmVfc291cmNlX3R5cGVfKSk7CisgIC8vIFdlIGRvbid0IHdhbnQg
dG8gYWxsb3cgc2VsZWN0aW9uIG9mIG11bHRpcGxlIHNvdXJjZXMuCisgIGdfdmFyaWFudF9idWls
ZGVyX2FkZCgmYnVpbGRlciwgIntzdn0iLCAibXVsdGlwbGUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZ192YXJpYW50X25ld19ib29sZWFuKGZhbHNlKSk7CisgIHZhcmlhbnRfc3RyaW5nID0g
Z19zdHJkdXBfcHJpbnRmKCJ3ZWJydGMlZCIsIGdfcmFuZG9tX2ludF9yYW5nZSgwLCBHX01BWElO
VCkpOworICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgImhhbmRsZV90
b2tlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3X3N0cmluZyh2YXJp
YW50X3N0cmluZykpOworCisgIHNvdXJjZXNfaGFuZGxlXyA9IFByZXBhcmVTaWduYWxIYW5kbGUo
Y29ubmVjdGlvbl8sIHZhcmlhbnRfc3RyaW5nKTsKKyAgc291cmNlc19yZXF1ZXN0X3NpZ25hbF9p
ZF8gPSBTZXR1cFJlcXVlc3RSZXNwb25zZVNpZ25hbCgKKyAgICAgIHNvdXJjZXNfaGFuZGxlXywg
T25Tb3VyY2VzUmVxdWVzdFJlc3BvbnNlU2lnbmFsKTsKKyAgZ19mcmVlKHZhcmlhbnRfc3RyaW5n
KTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJSZXF1ZXN0aW5nIHNvdXJjZXMgZnJvbSB0aGUg
c2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworICBnX2RidXNfcHJveHlfY2FsbCgKKyAgICAgIHByb3h5
XywgIlNlbGVjdFNvdXJjZXMiLAorICAgICAgZ192YXJpYW50X25ldygiKG9he3N2fSkiLCBzZXNz
aW9uX2hhbmRsZV8sICZidWlsZGVyKSwKKyAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIC8q
dGltZW91dD0qLy0xLCAvKmNhbmNlbGxhYmxlPSovbnVsbHB0ciwKKyAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oT25Tb3VyY2VzUmVxdWVzdGVkKSwgdGhpcyk7Cit9
CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25Tb3VyY2VzUmVxdWVz
dGVkKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQqIHJlc3VsdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpIHsK
KyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQ
aXBlV2lyZSo+KHVzZXJfZGF0YSk7CisgIFJUQ19EQ0hFQ0sodGhhdCk7CisKKyAgR0Vycm9yKiBl
cnJvciA9IG51bGxwdHI7CisgIEdWYXJpYW50KiB2YXJpYW50ID0gZ19kYnVzX3Byb3h5X2NhbGxf
ZmluaXNoKHRoYXQtPnByb3h5XywgcmVzdWx0LCAmZXJyb3IpOworICBpZiAoIXZhcmlhbnQpIHsK
KyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHJlcXVlc3QgdGhlIHNvdXJjZXM6
ICIgPDwgZXJyb3ItPm1lc3NhZ2U7CisgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAgICB0aGF0
LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKworICBSVENf
TE9HKExTX0lORk8pIDw8ICJTb3VyY2VzIHJlcXVlc3RlZCBmcm9tIHRoZSBzY3JlZW4gY2FzdCBz
ZXNzaW9uLiI7CisKKyAgZ2NoYXIqIGhhbmRsZSA9IG51bGxwdHI7CisgIGdfdmFyaWFudF9nZXRf
Y2hpbGQodmFyaWFudCwgMCwgIm8iLCAmaGFuZGxlKTsKKyAgZ192YXJpYW50X3VucmVmKHZhcmlh
bnQpOworICBpZiAoIWhhbmRsZSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQg
dG8gaW5pdGlhbGl6ZSB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworICAgIGlmICh0aGF0LT5z
b3VyY2VzX3JlcXVlc3Rfc2lnbmFsX2lkXykgeworICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2ln
bmFsX3Vuc3Vic2NyaWJlKGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhhdC0+c291cmNlc19yZXF1ZXN0X3NpZ25hbF9pZF8pOworICAgICAg
dGhhdC0+c291cmNlc19yZXF1ZXN0X3NpZ25hbF9pZF8gPSAwOworICAgIH0KKyAgICB0aGF0LT5w
b3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKworICBnX2ZyZWUo
aGFuZGxlKTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJTdWJzY3JpYmVkIHRvIHNvdXJjZXMg
c2lnbmFsLiI7Cit9CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25T
b3VyY2VzUmVxdWVzdFJlc3BvbnNlU2lnbmFsKAorICAgIEdEQnVzQ29ubmVjdGlvbiogY29ubmVj
dGlvbiwKKyAgICBjb25zdCBnY2hhciogc2VuZGVyX25hbWUsCisgICAgY29uc3QgZ2NoYXIqIG9i
amVjdF9wYXRoLAorICAgIGNvbnN0IGdjaGFyKiBpbnRlcmZhY2VfbmFtZSwKKyAgICBjb25zdCBn
Y2hhciogc2lnbmFsX25hbWUsCisgICAgR1ZhcmlhbnQqIHBhcmFtZXRlcnMsCisgICAgZ3BvaW50
ZXIgdXNlcl9kYXRhKSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nh
c3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPih1c2VyX2RhdGEpOworICBSVENfRENIRUNLKHRoYXQp
OworCisgIFJUQ19MT0coTFNfSU5GTykgPDwgIlJlY2VpdmVkIHNvdXJjZXMgc2lnbmFsIGZyb20g
c2Vzc2lvbi4iOworCisgIGd1aW50MzIgcG9ydGFsX3Jlc3BvbnNlOworICBnX3ZhcmlhbnRfZ2V0
KHBhcmFtZXRlcnMsICIodUBhe3N2fSkiLCAmcG9ydGFsX3Jlc3BvbnNlLCBudWxscHRyKTsKKyAg
aWYgKHBvcnRhbF9yZXNwb25zZSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpCisgICAgICAgIDw8
ICJGYWlsZWQgdG8gc2VsZWN0IHNvdXJjZXMgZm9yIHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9uLiI7
CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9
CisKKyAgdGhhdC0+U3RhcnRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdp
cmU6OlN0YXJ0UmVxdWVzdCgpIHsKKyAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7CisgIGdjaGFy
KiB2YXJpYW50X3N0cmluZzsKKworICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZidWlsZGVyLCBH
X1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgdmFyaWFudF9zdHJpbmcgPSBnX3N0cmR1cF9wcmlu
dGYoIndlYnJ0YyVkIiwgZ19yYW5kb21faW50X3JhbmdlKDAsIEdfTUFYSU5UKSk7CisgIGdfdmFy
aWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwgIntzdn0iLCAiaGFuZGxlX3Rva2VuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXdfc3RyaW5nKHZhcmlhbnRfc3RyaW5nKSk7
CisKKyAgc3RhcnRfaGFuZGxlXyA9IFByZXBhcmVTaWduYWxIYW5kbGUoY29ubmVjdGlvbl8sIHZh
cmlhbnRfc3RyaW5nKTsKKyAgc3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfID0KKyAgICAgIFNldHVw
UmVxdWVzdFJlc3BvbnNlU2lnbmFsKHN0YXJ0X2hhbmRsZV8sIE9uU3RhcnRSZXF1ZXN0UmVzcG9u
c2VTaWduYWwpOworICBnX2ZyZWUodmFyaWFudF9zdHJpbmcpOworCisgIC8vICJJZGVudGlmaWVy
IGZvciB0aGUgYXBwbGljYXRpb24gd2luZG93IiwgdGhpcyBpcyBXYXlsYW5kLCBzbyBub3QgIngx
MTouLi4iLgorICBjb25zdCBnY2hhciBwYXJlbnRfd2luZG93W10gPSAiIjsKKworICBSVENfTE9H
KExTX0lORk8pIDw8ICJTdGFydGluZyB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworICBnX2Ri
dXNfcHJveHlfY2FsbCgKKyAgICAgIHByb3h5XywgIlN0YXJ0IiwKKyAgICAgIGdfdmFyaWFudF9u
ZXcoIihvc2F7c3Z9KSIsIHNlc3Npb25faGFuZGxlXywgcGFyZW50X3dpbmRvdywgJmJ1aWxkZXIp
LAorICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwgLyp0aW1lb3V0PSovLTEsIC8qY2FuY2Vs
bGFibGU9Ki9udWxscHRyLAorICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxi
YWNrPihPblN0YXJ0UmVxdWVzdGVkKSwgdGhpcyk7Cit9CisKKy8vIHN0YXRpYwordm9pZCBCYXNl
Q2FwdHVyZXJQaXBlV2lyZTo6T25TdGFydFJlcXVlc3RlZChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3lu
Y1Jlc3VsdCogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBncG9pbnRlciB1c2VyX2RhdGEpIHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUqIHRoYXQg
PSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KHVzZXJfZGF0YSk7CisgIFJUQ19E
Q0hFQ0sodGhhdCk7CisKKyAgR0Vycm9yKiBlcnJvciA9IG51bGxwdHI7CisgIEdWYXJpYW50KiB2
YXJpYW50ID0gZ19kYnVzX3Byb3h5X2NhbGxfZmluaXNoKHRoYXQtPnByb3h5XywgcmVzdWx0LCAm
ZXJyb3IpOworICBpZiAoIXZhcmlhbnQpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFp
bGVkIHRvIHN0YXJ0IHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9uOiAiCisgICAgICAgICAgICAgICAg
ICAgICAgPDwgZXJyb3ItPm1lc3NhZ2U7CisgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAgICB0
aGF0LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKworICBS
VENfTE9HKExTX0lORk8pIDw8ICJJbml0aWFsaXppbmcgdGhlIHN0YXJ0IG9mIHRoZSBzY3JlZW4g
Y2FzdCBzZXNzaW9uLiI7CisKKyAgZ2NoYXIqIGhhbmRsZSA9IG51bGxwdHI7CisgIGdfdmFyaWFu
dF9nZXRfY2hpbGQodmFyaWFudCwgMCwgIm8iLCAmaGFuZGxlKTsKKyAgZ192YXJpYW50X3VucmVm
KHZhcmlhbnQpOworICBpZiAoIWhhbmRsZSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpCisgICAg
ICAgIDw8ICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc3RhcnQgb2YgdGhlIHNjcmVlbiBjYXN0
IHNlc3Npb24uIjsKKyAgICBpZiAodGhhdC0+c3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfKSB7Cisg
ICAgICBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfdW5zdWJzY3JpYmUoY29ubmVjdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LT5zdGFydF9yZXF1
ZXN0X3NpZ25hbF9pZF8pOworICAgICAgdGhhdC0+c3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfID0g
MDsKKyAgICB9CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0
dXJuOworICB9CisKKyAgZ19mcmVlKGhhbmRsZSk7CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAi
U3Vic2NyaWJlZCB0byB0aGUgc3RhcnQgc2lnbmFsLiI7Cit9CisKKy8vIHN0YXRpYwordm9pZCBC
YXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25TdGFydFJlcXVlc3RSZXNwb25zZVNpZ25hbCgKKyAgICBH
REJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCisgICAgY29uc3QgZ2NoYXIqIHNlbmRlcl9uYW1l
LAorICAgIGNvbnN0IGdjaGFyKiBvYmplY3RfcGF0aCwKKyAgICBjb25zdCBnY2hhciogaW50ZXJm
YWNlX25hbWUsCisgICAgY29uc3QgZ2NoYXIqIHNpZ25hbF9uYW1lLAorICAgIEdWYXJpYW50KiBw
YXJhbWV0ZXJzLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkgeworICBCYXNlQ2FwdHVyZXJQaXBl
V2lyZSogdGhhdCA9IHN0YXRpY19jYXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4odXNlcl9kYXRh
KTsKKyAgUlRDX0RDSEVDSyh0aGF0KTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJTdGFydCBz
aWduYWwgcmVjZWl2ZWQuIjsKKyAgZ3VpbnQzMiBwb3J0YWxfcmVzcG9uc2U7CisgIEdWYXJpYW50
KiByZXNwb25zZV9kYXRhOworICBHVmFyaWFudEl0ZXIqIGl0ZXIgPSBudWxscHRyOworICBnX3Zh
cmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIodUBhe3N2fSkiLCAmcG9ydGFsX3Jlc3BvbnNlLCAmcmVz
cG9uc2VfZGF0YSk7CisgIGlmIChwb3J0YWxfcmVzcG9uc2UgfHwgIXJlc3BvbnNlX2RhdGEpIHsK
KyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHN0YXJ0IHRoZSBzY3JlZW4gY2Fz
dCBzZXNzaW9uLiI7CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAg
cmV0dXJuOworICB9CisKKyAgLy8gQXJyYXkgb2YgUGlwZVdpcmUgc3RyZWFtcy4gU2VlCisgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS9mbGF0cGFrL3hkZy1kZXNrdG9wLXBvcnRhbC9ibG9iL21hc3Rl
ci9kYXRhL29yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuQ2FzdC54bWwKKyAgLy8gZG9jdW1l
bnRhdGlvbiBmb3IgPG1ldGhvZCBuYW1lPSJTdGFydCI+LgorICBpZiAoZ192YXJpYW50X2xvb2t1
cChyZXNwb25zZV9kYXRhLCAic3RyZWFtcyIsICJhKHVhe3N2fSkiLCAmaXRlcikpIHsKKyAgICBH
VmFyaWFudCogdmFyaWFudDsKKworICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9uZXh0KGl0ZXIs
ICJAKHVhe3N2fSkiLCAmdmFyaWFudCkpIHsKKyAgICAgIGd1aW50MzIgc3RyZWFtX2lkOworICAg
ICAgZ2ludDMyIHdpZHRoOworICAgICAgZ2ludDMyIGhlaWdodDsKKyAgICAgIEdWYXJpYW50KiBv
cHRpb25zOworCisgICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQsICIodUBhe3N2fSkiLCAmc3Ry
ZWFtX2lkLCAmb3B0aW9ucyk7CisgICAgICBSVENfRENIRUNLKG9wdGlvbnMgIT0gbnVsbHB0cik7
CisKKyAgICAgIGdfdmFyaWFudF9sb29rdXAob3B0aW9ucywgInNpemUiLCAiKGlpKSIsICZ3aWR0
aCwgJmhlaWdodCk7CisKKyAgICAgIHRoYXQtPmRlc2t0b3Bfc2l6ZV8uc2V0KHdpZHRoLCBoZWln
aHQpOworCisgICAgICBnX3ZhcmlhbnRfdW5yZWYob3B0aW9ucyk7CisgICAgICBnX3ZhcmlhbnRf
dW5yZWYodmFyaWFudCk7CisgICAgfQorICB9CisgIGdfdmFyaWFudF9pdGVyX2ZyZWUoaXRlcik7
CisgIGdfdmFyaWFudF91bnJlZihyZXNwb25zZV9kYXRhKTsKKworICB0aGF0LT5PcGVuUGlwZVdp
cmVSZW1vdGUoKTsKK30KKwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T3BlblBpcGVXaXJl
UmVtb3RlKCkgeworICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKKyAgZ192YXJpYW50X2J1aWxk
ZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CisKKyAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiT3BlbmluZyB0aGUgUGlwZVdpcmUgcmVtb3RlLiI7CisKKyAgZ19kYnVzX3By
b3h5X2NhbGxfd2l0aF91bml4X2ZkX2xpc3QoCisgICAgICBwcm94eV8sICJPcGVuUGlwZVdpcmVS
ZW1vdGUiLAorICAgICAgZ192YXJpYW50X25ldygiKG9he3N2fSkiLCBzZXNzaW9uX2hhbmRsZV8s
ICZidWlsZGVyKSwKKyAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIC8qdGltZW91dD0qLy0x
LCAvKmZkX2xpc3Q9Ki9udWxscHRyLAorICAgICAgLypjYW5jZWxsYWJsZT0qL251bGxwdHIsCisg
ICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KE9uT3BlblBpcGVXaXJl
UmVtb3RlUmVxdWVzdGVkKSwKKyAgICAgIHRoaXMpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFz
ZUNhcHR1cmVyUGlwZVdpcmU6Ok9uT3BlblBpcGVXaXJlUmVtb3RlUmVxdWVzdGVkKAorICAgIEdE
QnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwKKyAgICBHQXN5bmNSZXN1bHQqIHJlc3VsdCwKKyAg
ICBncG9pbnRlciB1c2VyX2RhdGEpIHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUqIHRoYXQgPSBz
dGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KHVzZXJfZGF0YSk7CisgIFJUQ19EQ0hF
Q0sodGhhdCk7CisKKyAgR0Vycm9yKiBlcnJvciA9IG51bGxwdHI7CisgIEdVbml4RkRMaXN0KiBv
dXRsaXN0ID0gbnVsbHB0cjsKKyAgR1ZhcmlhbnQqIHZhcmlhbnQgPSBnX2RidXNfcHJveHlfY2Fs
bF93aXRoX3VuaXhfZmRfbGlzdF9maW5pc2goCisgICAgICB0aGF0LT5wcm94eV8sICZvdXRsaXN0
LCByZXN1bHQsICZlcnJvcik7CisgIGlmICghdmFyaWFudCkgeworICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJGYWlsZWQgdG8gb3BlbiB0aGUgUGlwZVdpcmUgcmVtb3RlOiAiCisgICAgICAgICAg
ICAgICAgICAgICAgPDwgZXJyb3ItPm1lc3NhZ2U7CisgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsK
KyAgICB0aGF0LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0K
KworICBnaW50MzIgaW5kZXg7CisgIGdfdmFyaWFudF9nZXQodmFyaWFudCwgIihoKSIsICZpbmRl
eCk7CisKKyAgaWYgKCh0aGF0LT5wd19mZF8gPSBnX3VuaXhfZmRfbGlzdF9nZXQob3V0bGlzdCwg
aW5kZXgsICZlcnJvcikpID09IC0xKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxl
ZCB0byBnZXQgZmlsZSBkZXNjcmlwdG9yIGZyb20gdGhlIGxpc3Q6ICIKKyAgICAgICAgICAgICAg
ICAgICAgICA8PCBlcnJvci0+bWVzc2FnZTsKKyAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOworICAg
IGdfdmFyaWFudF91bnJlZih2YXJpYW50KTsKKyAgICB0aGF0LT5wb3J0YWxfaW5pdF9mYWlsZWRf
ID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKworICBnX3ZhcmlhbnRfdW5yZWYodmFyaWFudCk7
CisgIGdfb2JqZWN0X3VucmVmKG91dGxpc3QpOworCisgIHRoYXQtPkluaXRQaXBlV2lyZSgpOwor
ICBSVENfTE9HKExTX0lORk8pIDw8ICJQaXBlV2lyZSByZW1vdGUgb3BlbmVkLiI7Cit9CisKK3Zv
aWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OlN0YXJ0KENhbGxiYWNrKiBjYWxsYmFjaykgeworICBS
VENfRENIRUNLKCFjYWxsYmFja18pOworICBSVENfRENIRUNLKGNhbGxiYWNrKTsKKworICBJbml0
UG9ydGFsKCk7CisKKyAgY2FsbGJhY2tfID0gY2FsbGJhY2s7Cit9CisKK3ZvaWQgQmFzZUNhcHR1
cmVyUGlwZVdpcmU6OkNhcHR1cmVGcmFtZSgpIHsKKyAgaWYgKHBvcnRhbF9pbml0X2ZhaWxlZF8p
IHsKKyAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVO
VCwgbnVsbHB0cik7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKCFjdXJyZW50X2ZyYW1lXykg
eworICAgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfVEVNUE9SQVJZ
LCBudWxscHRyKTsKKyAgICByZXR1cm47CisgIH0KKworICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3Rv
cEZyYW1lPiByZXN1bHQobmV3IEJhc2ljRGVza3RvcEZyYW1lKGRlc2t0b3Bfc2l6ZV8pKTsKKyAg
cmVzdWx0LT5Db3B5UGl4ZWxzRnJvbSgKKyAgICAgIGN1cnJlbnRfZnJhbWVfLCAoZGVza3RvcF9z
aXplXy53aWR0aCgpICoga0J5dGVzUGVyUGl4ZWwpLAorICAgICAgRGVza3RvcFJlY3Q6Ok1ha2VX
SChkZXNrdG9wX3NpemVfLndpZHRoKCksIGRlc2t0b3Bfc2l6ZV8uaGVpZ2h0KCkpKTsKKyAgaWYg
KCFyZXN1bHQpIHsKKyAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9S
X1RFTVBPUkFSWSwgbnVsbHB0cik7CisgICAgcmV0dXJuOworICB9CisgIGNhbGxiYWNrXy0+T25D
YXB0dXJlUmVzdWx0KFJlc3VsdDo6U1VDQ0VTUywgc3RkOjptb3ZlKHJlc3VsdCkpOworfQorCiti
b29sIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpHZXRTb3VyY2VMaXN0KFNvdXJjZUxpc3QqIHNvdXJj
ZXMpIHsKKyAgUlRDX0RDSEVDSyhzb3VyY2VzLT5zaXplKCkgPT0gMCk7CisgIC8vIExpc3Qgb2Yg
YXZhaWxhYmxlIHNjcmVlbnMgaXMgYWxyZWFkeSBwcmVzZW50ZWQgYnkgdGhlIHhkZy1kZXNrdG9w
LXBvcnRhbC4KKyAgLy8gQnV0IHdlIGhhdmUgdG8gYWRkIGFuIGVtcHR5IHNvdXJjZSBhcyB0aGUg
Y29kZSBleHBlY3RzIGl0LgorICBzb3VyY2VzLT5wdXNoX2JhY2soezB9KTsKKyAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OlNlbGVjdFNvdXJjZShTb3VyY2VJ
ZCBpZCkgeworICAvLyBTY3JlZW4gc2VsZWN0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIHhkZy1kZXNr
dG9wLXBvcnRhbC4KKyAgcmV0dXJuIHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmIxMDFh
Y2JhYTYwMWI4M2Y4MWM3YjQ4ODkwYzc5ZjNjYjY2NzU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbGludXgvYmFzZV9jYXB0dXJlcl9waXBld2lyZS5oCkBAIC0wLDAgKzEsMTY3IEBACisv
KgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVY
X0JBU0VfQ0FQVFVSRVJfUElQRVdJUkVfSF8KKyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRV
UkVfTElOVVhfQkFTRV9DQVBUVVJFUl9QSVBFV0lSRV9IXworCisjaW5jbHVkZSA8Z2lvL2dpby5o
PgorI2RlZmluZSB0eXBlb2YgX190eXBlb2ZfXworI2luY2x1ZGUgPHBpcGV3aXJlL3BpcGV3aXJl
Lmg+CisjaW5jbHVkZSA8c3BhL3BhcmFtL3ZpZGVvL2Zvcm1hdC11dGlscy5oPgorCisjaW5jbHVk
ZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsK
KworY2xhc3MgUGlwZVdpcmVUeXBlIHsKKyBwdWJsaWM6CisgIHNwYV90eXBlX21lZGlhX3R5cGUg
bWVkaWFfdHlwZTsKKyAgc3BhX3R5cGVfbWVkaWFfc3VidHlwZSBtZWRpYV9zdWJ0eXBlOworICBz
cGFfdHlwZV9mb3JtYXRfdmlkZW8gZm9ybWF0X3ZpZGVvOworICBzcGFfdHlwZV92aWRlb19mb3Jt
YXQgdmlkZW9fZm9ybWF0OworfTsKKworY2xhc3MgQmFzZUNhcHR1cmVyUGlwZVdpcmUgOiBwdWJs
aWMgRGVza3RvcENhcHR1cmVyIHsKKyBwdWJsaWM6CisgIGVudW0gQ2FwdHVyZVNvdXJjZVR5cGUg
eyBTY3JlZW4gPSAxLCBXaW5kb3cgfTsKKworICBleHBsaWNpdCBCYXNlQ2FwdHVyZXJQaXBlV2ly
ZShDYXB0dXJlU291cmNlVHlwZSBzb3VyY2VfdHlwZSk7CisgIH5CYXNlQ2FwdHVyZXJQaXBlV2ly
ZSgpIG92ZXJyaWRlOworCisgIC8vIERlc2t0b3BDYXB0dXJlciBpbnRlcmZhY2UuCisgIHZvaWQg
U3RhcnQoQ2FsbGJhY2sqIGRlbGVnYXRlKSBvdmVycmlkZTsKKyAgdm9pZCBDYXB0dXJlRnJhbWUo
KSBvdmVycmlkZTsKKyAgYm9vbCBHZXRTb3VyY2VMaXN0KFNvdXJjZUxpc3QqIHNvdXJjZXMpIG92
ZXJyaWRlOworICBib29sIFNlbGVjdFNvdXJjZShTb3VyY2VJZCBpZCkgb3ZlcnJpZGU7CisKKyBw
cml2YXRlOgorICAvLyBQaXBlV2lyZSB0eXBlcyAtLT4KKyAgcHdfY29yZSogcHdfY29yZV8gPSBu
dWxscHRyOworICBwd190eXBlKiBwd19jb3JlX3R5cGVfID0gbnVsbHB0cjsKKyAgcHdfc3RyZWFt
KiBwd19zdHJlYW1fID0gbnVsbHB0cjsKKyAgcHdfcmVtb3RlKiBwd19yZW1vdGVfID0gbnVsbHB0
cjsKKyAgcHdfbG9vcCogcHdfbG9vcF8gPSBudWxscHRyOworICBwd190aHJlYWRfbG9vcCogcHdf
bWFpbl9sb29wXyA9IG51bGxwdHI7CisgIFBpcGVXaXJlVHlwZSogcHdfdHlwZV8gPSBudWxscHRy
OworCisgIHNwYV9ob29rIHNwYV9zdHJlYW1fbGlzdGVuZXJfID0ge307CisgIHNwYV9ob29rIHNw
YV9yZW1vdGVfbGlzdGVuZXJfID0ge307CisKKyAgcHdfc3RyZWFtX2V2ZW50cyBwd19zdHJlYW1f
ZXZlbnRzXyA9IHt9OworICBwd19yZW1vdGVfZXZlbnRzIHB3X3JlbW90ZV9ldmVudHNfID0ge307
CisKKyAgc3BhX3ZpZGVvX2luZm9fcmF3KiBzcGFfdmlkZW9fZm9ybWF0XyA9IG51bGxwdHI7CisK
KyAgZ2ludDMyIHB3X2ZkXyA9IC0xOworCisgIENhcHR1cmVTb3VyY2VUeXBlIGNhcHR1cmVfc291
cmNlX3R5cGVfID0KKyAgICAgIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDYXB0dXJlU291cmNlVHlw
ZTo6U2NyZWVuOworCisgIC8vIDwtLSBlbmQgb2YgUGlwZVdpcmUgdHlwZXMKKworICBHREJ1c0Nv
bm5lY3Rpb24qIGNvbm5lY3Rpb25fID0gbnVsbHB0cjsKKyAgR0RCdXNQcm94eSogcHJveHlfID0g
bnVsbHB0cjsKKyAgZ2NoYXIqIHBvcnRhbF9oYW5kbGVfID0gbnVsbHB0cjsKKyAgZ2NoYXIqIHNl
c3Npb25faGFuZGxlXyA9IG51bGxwdHI7CisgIGdjaGFyKiBzb3VyY2VzX2hhbmRsZV8gPSBudWxs
cHRyOworICBnY2hhciogc3RhcnRfaGFuZGxlXyA9IG51bGxwdHI7CisgIGd1aW50IHNlc3Npb25f
cmVxdWVzdF9zaWduYWxfaWRfID0gMDsKKyAgZ3VpbnQgc291cmNlc19yZXF1ZXN0X3NpZ25hbF9p
ZF8gPSAwOworICBndWludCBzdGFydF9yZXF1ZXN0X3NpZ25hbF9pZF8gPSAwOworCisgIERlc2t0
b3BTaXplIGRlc2t0b3Bfc2l6ZV8gPSB7fTsKKyAgRGVza3RvcENhcHR1cmVPcHRpb25zIG9wdGlv
bnNfID0ge307CisKKyAgdWludDhfdCogY3VycmVudF9mcmFtZV8gPSBudWxscHRyOworICBDYWxs
YmFjayogY2FsbGJhY2tfID0gbnVsbHB0cjsKKworICBib29sIHBvcnRhbF9pbml0X2ZhaWxlZF8g
PSBmYWxzZTsKKworICB2b2lkIEluaXRQb3J0YWwoKTsKKyAgdm9pZCBJbml0UGlwZVdpcmUoKTsK
KyAgdm9pZCBJbml0UGlwZVdpcmVUeXBlcygpOworCisgIHZvaWQgQ3JlYXRlUmVjZWl2aW5nU3Ry
ZWFtKCk7CisgIHZvaWQgSGFuZGxlQnVmZmVyKHB3X2J1ZmZlciogYnVmZmVyKTsKKworICB2b2lk
IENvbnZlcnRSR0J4VG9CR1J4KHVpbnQ4X3QqIGZyYW1lLCB1aW50MzJfdCBzaXplKTsKKworICBz
dGF0aWMgdm9pZCBPblN0YXRlQ2hhbmdlZCh2b2lkKiBkYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwd19yZW1vdGVfc3RhdGUgb2xkX3N0YXRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwd19yZW1vdGVfc3RhdGUgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGVycm9yKTsKKyAgc3RhdGljIHZvaWQgT25TdHJlYW1TdGF0ZUNo
YW5nZWQodm9pZCogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdf
c3RyZWFtX3N0YXRlIG9sZF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHdfc3RyZWFtX3N0YXRlIHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBlcnJvcl9tZXNzYWdlKTsKKworICBzdGF0aWMgdm9pZCBPblN0cmVh
bUZvcm1hdENoYW5nZWQodm9pZCogZGF0YSwgY29uc3Qgc3RydWN0IHNwYV9wb2QqIGZvcm1hdCk7
CisgIHN0YXRpYyB2b2lkIE9uU3RyZWFtUHJvY2Vzcyh2b2lkKiBkYXRhKTsKKyAgc3RhdGljIHZv
aWQgT25OZXdCdWZmZXIodm9pZCogZGF0YSwgdWludDMyX3QgaWQpOworCisgIGd1aW50IFNldHVw
UmVxdWVzdFJlc3BvbnNlU2lnbmFsKGNvbnN0IGdjaGFyKiBvYmplY3RfcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNTaWduYWxDYWxsYmFjayBjYWxsYmFjayk7
CisKKyAgc3RhdGljIHZvaWQgT25Qcm94eVJlcXVlc3RlZChHT2JqZWN0KiBvYmplY3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworICBzdGF0aWMg
Z2NoYXIqIFByZXBhcmVTaWduYWxIYW5kbGUoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIHRva2VuKTsK
KworICB2b2lkIFNlc3Npb25SZXF1ZXN0KCk7CisgIHN0YXRpYyB2b2lkIE9uU2Vzc2lvblJlcXVl
c3RlZChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQXN5bmNSZXN1bHQqIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7CisgIHN0YXRpYyB2b2lkIE9uU2Vzc2lvblJl
cXVlc3RSZXNwb25zZVNpZ25hbChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogc2VuZGVy
X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnY2hhciogb2JqZWN0X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciogaW50ZXJmYWNlX25hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogc2lnbmFsX25hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCogcGFy
YW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdw
b2ludGVyIHVzZXJfZGF0YSk7CisKKyAgdm9pZCBTb3VyY2VzUmVxdWVzdCgpOworICBzdGF0aWMg
dm9pZCBPblNvdXJjZXNSZXF1ZXN0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworICBzdGF0
aWMgdm9pZCBPblNvdXJjZXNSZXF1ZXN0UmVzcG9uc2VTaWduYWwoR0RCdXNDb25uZWN0aW9uKiBj
b25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2NoYXIqIHNlbmRlcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIG9iamVjdF9wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGludGVyZmFjZV9uYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No
YXIqIHNpZ25hbF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1ZhcmlhbnQqIHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworCisgIHZvaWQgU3RhcnRSZXF1
ZXN0KCk7CisgIHN0YXRpYyB2b2lkIE9uU3RhcnRSZXF1ZXN0ZWQoR0RCdXNDb25uZWN0aW9uKiBj
b25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCog
cmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0
YSk7CisgIHN0YXRpYyB2b2lkIE9uU3RhcnRSZXF1ZXN0UmVzcG9uc2VTaWduYWwoR0RCdXNDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyKiBzZW5kZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogb2JqZWN0X3BhdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGludGVyZmFjZV9u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyKiBzaWduYWxfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVmFyaWFudCogcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworCisgIHZvaWQgT3BlblBpcGVXaXJl
UmVtb3RlKCk7CisgIHN0YXRpYyB2b2lkIE9uT3BlblBpcGVXaXJlUmVtb3RlUmVxdWVzdGVkKEdE
QnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKyAgUlRDX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihCYXNlQ2FwdHVyZXJQaXBlV2lyZSk7Cit9OworCit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVf
TElOVVhfQkFTRV9DQVBUVVJFUl9QSVBFV0lSRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgvbW91c2VfY3Vyc29yX21vbml0b3JfeDExLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2VfY3Vy
c29yX21vbml0b3JfeDExLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NTAzODIyYmNlZDhiYmRiZTQ3ZjNjZDEw
NWFiZDhmMTAzMmYzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9tb3VzZV9j
dXJzb3JfbW9uaXRvcl94MTEuY2MKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2VfY3Vy
c29yX21vbml0b3JfeDExLmgiCisKKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KKyNpbmNsdWRlIDxY
MTEvZXh0ZW5zaW9ucy9YZml4ZXMuaD4KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRl
IDxtZW1vcnk+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2Nh
cHR1cmVfb3B0aW9ucy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0
b3BfY2FwdHVyZV90eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rl
c2t0b3BfZnJhbWUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94
X2Vycm9yX3RyYXAuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9j
dXJzb3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3Jf
bW9uaXRvci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKworbmFtZXNwYWNlIHsK
KworLy8gV2luZG93Q2FwdHVyZXIgcmV0dXJucyB3aW5kb3cgSURzIG9mIFgxMSB3aW5kb3dzIHdp
dGggV01fU1RBVEUgYXR0cmlidXRlLgorLy8gVGhlc2Ugd2luZG93cyBtYXkgbm90IGJlIGltbWVk
aWF0ZSBjaGlsZHJlbiBvZiB0aGUgcm9vdCB3aW5kb3csIGJlY2F1c2UKKy8vIHdpbmRvdyBtYW5h
Z2VycyBtYXkgcmUtcGFyZW50IHRoZW0gdG8gYWRkIGRlY29yYXRpb25zLiBIb3dldmVyLAorLy8g
WFF1ZXJ5UG9pbnRlcigpIGV4cGVjdHMgdG8gYmUgcGFzc2VkIGNoaWxkcmVuIG9mIHRoZSByb290
LiBUaGlzIGZ1bmN0aW9uCisvLyBzZWFyY2hlcyB1cCB0aGUgbGlzdCBvZiB0aGUgd2luZG93cyB0
byBmaW5kIHRoZSByb290IGNoaWxkIHRoYXQgY29ycmVzcG9uZHMKKy8vIHRvIHx3aW5kb3d8Lgor
V2luZG93IEdldFRvcExldmVsV2luZG93KERpc3BsYXkqIGRpc3BsYXksIFdpbmRvdyB3aW5kb3cp
IHsKKyAgd2hpbGUgKHRydWUpIHsKKyAgICAvLyBJZiB0aGUgd2luZG93IGlzIGluIFdpdGhkcmF3
blN0YXRlIHRoZW4gbG9vayBhdCBhbGwgb2YgaXRzIGNoaWxkcmVuLgorICAgIDo6V2luZG93IHJv
b3QsIHBhcmVudDsKKyAgICA6OldpbmRvdyogY2hpbGRyZW47CisgICAgdW5zaWduZWQgaW50IG51
bV9jaGlsZHJlbjsKKyAgICBpZiAoIVhRdWVyeVRyZWUoZGlzcGxheSwgd2luZG93LCAmcm9vdCwg
JnBhcmVudCwgJmNoaWxkcmVuLAorICAgICAgICAgICAgICAgICAgICAmbnVtX2NoaWxkcmVuKSkg
eworICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBxdWVyeSBmb3IgY2hpbGQg
d2luZG93cyBhbHRob3VnaCB3aW5kb3ciCisgICAgICAgICAgICAgICAgICAgICAgICA8PCAiZG9l
cyBub3QgaGF2ZSBhIHZhbGlkIFdNX1NUQVRFLiI7CisgICAgICByZXR1cm4gTm9uZTsKKyAgICB9
CisgICAgaWYgKGNoaWxkcmVuKQorICAgICAgWEZyZWUoY2hpbGRyZW4pOworCisgICAgaWYgKHBh
cmVudCA9PSByb290KQorICAgICAgYnJlYWs7CisKKyAgICB3aW5kb3cgPSBwYXJlbnQ7CisgIH0K
KworICByZXR1cm4gd2luZG93OworfQorCit9ICAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CisKK01vdXNlQ3Vyc29yTW9uaXRvclgxMTo6TW91c2VDdXJzb3JNb25pdG9yWDExKAor
ICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywKKyAgICBXaW5kb3cgd2lu
ZG93KQorICAgIDogeF9kaXNwbGF5XyhvcHRpb25zLnhfZGlzcGxheSgpKSwKKyAgICAgIGNhbGxi
YWNrXyhOVUxMKSwKKyAgICAgIG1vZGVfKFNIQVBFX0FORF9QT1NJVElPTiksCisgICAgICB3aW5k
b3dfKHdpbmRvdyksCisgICAgICBoYXZlX3hmaXhlc18oZmFsc2UpLAorICAgICAgeGZpeGVzX2V2
ZW50X2Jhc2VfKC0xKSwKKyAgICAgIHhmaXhlc19lcnJvcl9iYXNlXygtMSkgeworICAvLyBTZXQg
YSBkZWZhdWx0IGluaXRpYWwgY3Vyc29yIHNoYXBlIGluIGNhc2UgWEZpeGVzIGlzIG5vdCBwcmVz
ZW50LgorICBjb25zdCBpbnQga1NpemUgPSA1OworICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZy
YW1lPiBkZWZhdWx0X2N1cnNvcigKKyAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShEZXNrdG9w
U2l6ZShrU2l6ZSwga1NpemUpKSk7CisgIGNvbnN0IHVpbnQ4X3QgcGl4ZWxzW2tTaXplICoga1Np
emVdID0geworICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwg
MHhmZiwgMHhmZiwKKyAgICAgIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4
MDAsIDB4ZmYsIDB4ZmYsCisgICAgICAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwfTsKKyAgdWludDhfdCogcHRyID0gZGVmYXVsdF9jdXJzb3ItPmRhdGEoKTsKKyAgZm9y
IChpbnQgeSA9IDA7IHkgPCBrU2l6ZTsgKyt5KSB7CisgICAgZm9yIChpbnQgeCA9IDA7IHggPCBr
U2l6ZTsgKyt4KSB7CisgICAgICAqcHRyKysgPSBwaXhlbHNba1NpemUgKiB5ICsgeF07CisgICAg
ICAqcHRyKysgPSBwaXhlbHNba1NpemUgKiB5ICsgeF07CisgICAgICAqcHRyKysgPSBwaXhlbHNb
a1NpemUgKiB5ICsgeF07CisgICAgICAqcHRyKysgPSAweGZmOworICAgIH0KKyAgfQorICBEZXNr
dG9wVmVjdG9yIGhvdHNwb3QoMiwgMik7CisgIGN1cnNvcl9zaGFwZV8ucmVzZXQobmV3IE1vdXNl
Q3Vyc29yKGRlZmF1bHRfY3Vyc29yLnJlbGVhc2UoKSwgaG90c3BvdCkpOworfQorCitNb3VzZUN1
cnNvck1vbml0b3JYMTE6On5Nb3VzZUN1cnNvck1vbml0b3JYMTEoKSB7CisgIGlmIChoYXZlX3hm
aXhlc18pIHsKKyAgICB4X2Rpc3BsYXlfLT5SZW1vdmVFdmVudEhhbmRsZXIoeGZpeGVzX2V2ZW50
X2Jhc2VfICsgWEZpeGVzQ3Vyc29yTm90aWZ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzKTsKKyAgfQorfQorCit2b2lkIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6SW5p
dChDYWxsYmFjayogY2FsbGJhY2ssIE1vZGUgbW9kZSkgeworICAvLyBJbml0IGNhbiBiZSBjYWxs
ZWQgb25seSBvbmNlIHBlciBpbnN0YW5jZSBvZiBNb3VzZUN1cnNvck1vbml0b3IuCisgIFJUQ19E
Q0hFQ0soIWNhbGxiYWNrXyk7CisgIFJUQ19EQ0hFQ0soY2FsbGJhY2spOworCisgIGNhbGxiYWNr
XyA9IGNhbGxiYWNrOworICBtb2RlXyA9IG1vZGU7CisKKyAgaGF2ZV94Zml4ZXNfID0KKyAgICAg
IFhGaXhlc1F1ZXJ5RXh0ZW5zaW9uKGRpc3BsYXkoKSwgJnhmaXhlc19ldmVudF9iYXNlXywgJnhm
aXhlc19lcnJvcl9iYXNlXyk7CisKKyAgaWYgKGhhdmVfeGZpeGVzXykgeworICAgIC8vIFJlZ2lz
dGVyIGZvciBjaGFuZ2VzIHRvIHRoZSBjdXJzb3Igc2hhcGUuCisgICAgWEZpeGVzU2VsZWN0Q3Vy
c29ySW5wdXQoZGlzcGxheSgpLCB3aW5kb3dfLCBYRml4ZXNEaXNwbGF5Q3Vyc29yTm90aWZ5TWFz
ayk7CisgICAgeF9kaXNwbGF5Xy0+QWRkRXZlbnRIYW5kbGVyKHhmaXhlc19ldmVudF9iYXNlXyAr
IFhGaXhlc0N1cnNvck5vdGlmeSwgdGhpcyk7CisKKyAgICBDYXB0dXJlQ3Vyc29yKCk7CisgIH0g
ZWxzZSB7CisgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiWCBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9y
dCBYRml4ZXMuIjsKKyAgfQorfQorCit2b2lkIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6Q2FwdHVy
ZSgpIHsKKyAgUlRDX0RDSEVDSyhjYWxsYmFja18pOworCisgIC8vIFByb2Nlc3MgWDExIGV2ZW50
cyBpbiBjYXNlIFhGaXhlcyBoYXMgc2VudCBjdXJzb3Igbm90aWZpY2F0aW9uLgorICB4X2Rpc3Bs
YXlfLT5Qcm9jZXNzUGVuZGluZ1hFdmVudHMoKTsKKworICAvLyBjdXJzb3Jfc2hhcGVffCBpcyBz
ZXQgb25seSBpZiB3ZSB3ZXJlIG5vdGlmaWVkIG9mIGEgY3Vyc29yIHNoYXBlIGNoYW5nZS4KKyAg
aWYgKGN1cnNvcl9zaGFwZV8uZ2V0KCkpCisgICAgY2FsbGJhY2tfLT5Pbk1vdXNlQ3Vyc29yKGN1
cnNvcl9zaGFwZV8ucmVsZWFzZSgpKTsKKworICAvLyBHZXQgY3Vyc29yIHBvc2l0aW9uIGlmIG5l
Y2Vzc2FyeS4KKyAgaWYgKG1vZGVfID09IFNIQVBFX0FORF9QT1NJVElPTikgeworICAgIGludCBy
b290X3g7CisgICAgaW50IHJvb3RfeTsKKyAgICBpbnQgd2luX3g7CisgICAgaW50IHdpbl95Owor
ICAgIFdpbmRvdyByb290X3dpbmRvdzsKKyAgICBXaW5kb3cgY2hpbGRfd2luZG93OworICAgIHVu
c2lnbmVkIGludCBtYXNrOworCisgICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXkoKSk7
CisgICAgQm9vbCByZXN1bHQgPSBYUXVlcnlQb2ludGVyKGRpc3BsYXkoKSwgd2luZG93XywgJnJv
b3Rfd2luZG93LCAmY2hpbGRfd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmcm9vdF94LCAmcm9vdF95LCAmd2luX3gsICZ3aW5feSwgJm1hc2spOworICAgIEN1cnNvclN0
YXRlIHN0YXRlOworICAgIGlmICghcmVzdWx0IHx8IGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5k
RGlzYWJsZSgpICE9IDApIHsKKyAgICAgIHN0YXRlID0gT1VUU0lERTsKKyAgICB9IGVsc2Ugewor
ICAgICAgLy8gSW4gc2NyZWVuIG1vZGUgKHdpbmRvd18gPT0gcm9vdF93aW5kb3cpIHRoZSBtb3Vz
ZSBpcyBhbHdheXMgaW5zaWRlLgorICAgICAgLy8gWFF1ZXJ5UG9pbnRlcigpIHNldHMgfGNoaWxk
X3dpbmRvd3wgdG8gTm9uZSBpZiB0aGUgY3Vyc29yIGlzIG91dHNpZGUKKyAgICAgIC8vIHx3aW5k
b3dffC4KKyAgICAgIHN0YXRlID0KKyAgICAgICAgICAod2luZG93XyA9PSByb290X3dpbmRvdyB8
fCBjaGlsZF93aW5kb3cgIT0gTm9uZSkgPyBJTlNJREUgOiBPVVRTSURFOworICAgIH0KKworICAg
IC8vIEFzIHRoZSBjb21tZW50cyB0byBHZXRUb3BMZXZlbFdpbmRvdygpIGFib3ZlIGluZGljYXRl
LCBpbiB3aW5kb3cgY2FwdHVyZSwKKyAgICAvLyB0aGUgY3Vyc29yIHBvc2l0aW9uIGNhcHR1cmUg
aGFwcGVucyBpbiB8d2luZG93X3wsIHdoaWxlIHRoZSBmcmFtZSBjYXRwdXJlCisgICAgLy8gaGFw
cGVucyBpbiB8Y2hpbGRfd2luZG93fC4gVGhlc2UgdHdvIHdpbmRvd3MgYXJlIG5vdCBhbHd5YXMg
c2FtZSwgYXMKKyAgICAvLyB3aW5kb3cgbWFuYWdlciBtYXkgYWRkIHNvbWUgZGVjb3JhdGlvbnMg
dG8gdGhlIHx3aW5kb3dffC4gU28gdHJhbnNsYXRlCisgICAgLy8gdGhlIGNvb3JkaW5hdGUgaW4g
fHdpbmRvd198IHRvIHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHxjaGlsZF93aW5kb3d8LgorICAg
IGlmICh3aW5kb3dfICE9IHJvb3Rfd2luZG93ICYmIHN0YXRlID09IElOU0lERSkgeworICAgICAg
aW50IHRyYW5zbGF0ZWRfeCwgdHJhbnNsYXRlZF95OworICAgICAgV2luZG93IHVudXNlZDsKKyAg
ICAgIGlmIChYVHJhbnNsYXRlQ29vcmRpbmF0ZXMoZGlzcGxheSgpLCB3aW5kb3dfLCBjaGlsZF93
aW5kb3csIHdpbl94LCB3aW5feSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRy
YW5zbGF0ZWRfeCwgJnRyYW5zbGF0ZWRfeSwgJnVudXNlZCkpIHsKKyAgICAgICAgd2luX3ggPSB0
cmFuc2xhdGVkX3g7CisgICAgICAgIHdpbl95ID0gdHJhbnNsYXRlZF95OworICAgICAgfQorICAg
IH0KKworICAgIC8vIFgxMSBhbHdheXMgc3RhcnRzIHRoZSBjb29yZGluYXRlIGZyb20gKDAsIDAp
LCBzbyB3ZSBkbyBub3QgbmVlZCB0bworICAgIC8vIHRyYW5zbGF0ZSBoZXJlLgorICAgIGNhbGxi
YWNrXy0+T25Nb3VzZUN1cnNvclBvc2l0aW9uKERlc2t0b3BWZWN0b3Iocm9vdF94LCByb290X3kp
KTsKKyAgfQorfQorCitib29sIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6SGFuZGxlWEV2ZW50KGNv
bnN0IFhFdmVudCYgZXZlbnQpIHsKKyAgaWYgKGhhdmVfeGZpeGVzXyAmJiBldmVudC50eXBlID09
IHhmaXhlc19ldmVudF9iYXNlXyArIFhGaXhlc0N1cnNvck5vdGlmeSkgeworICAgIGNvbnN0IFhG
aXhlc0N1cnNvck5vdGlmeUV2ZW50KiBjdXJzb3JfZXZlbnQgPQorICAgICAgICByZWludGVycHJl
dF9jYXN0PGNvbnN0IFhGaXhlc0N1cnNvck5vdGlmeUV2ZW50Kj4oJmV2ZW50KTsKKyAgICBpZiAo
Y3Vyc29yX2V2ZW50LT5zdWJ0eXBlID09IFhGaXhlc0Rpc3BsYXlDdXJzb3JOb3RpZnkpIHsKKyAg
ICAgIENhcHR1cmVDdXJzb3IoKTsKKyAgICB9CisgICAgLy8gUmV0dXJuIGZhbHNlLCBldmVuIGlm
IHRoZSBldmVudCBoYXMgYmVlbiBoYW5kbGVkLCBiZWNhdXNlIHRoZXJlIG1pZ2h0IGJlCisgICAg
Ly8gb3RoZXIgbGlzdGVuZXJzIGZvciBjdXJzb3Igbm90aWZpY2F0aW9ucy4KKyAgfQorICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgTW91c2VDdXJzb3JNb25pdG9yWDExOjpDYXB0dXJlQ3Vyc29y
KCkgeworICBSVENfRENIRUNLKGhhdmVfeGZpeGVzXyk7CisKKyAgWEZpeGVzQ3Vyc29ySW1hZ2Uq
IGltZzsKKyAgeworICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KCkpOworICAgIGlt
ZyA9IFhGaXhlc0dldEN1cnNvckltYWdlKGRpc3BsYXkoKSk7CisgICAgaWYgKCFpbWcgfHwgZXJy
b3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkKKyAgICAgIHJldHVybjsKKyAg
fQorCisgIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IGltYWdlKAorICAgICAgbmV3IEJh
c2ljRGVza3RvcEZyYW1lKERlc2t0b3BTaXplKGltZy0+d2lkdGgsIGltZy0+aGVpZ2h0KSkpOwor
CisgIHVpbnQ2NF90KiBzcmMgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4oaW1nLT5waXhl
bHMpOworICB1aW50MzJfdCogZHN0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGltYWdl
LT5kYXRhKCkpOworICB1aW50MzJfdCogZHN0X2VuZCA9IGRzdCArIChpbWctPndpZHRoICogaW1n
LT5oZWlnaHQpOworICB3aGlsZSAoZHN0IDwgZHN0X2VuZCkgeworICAgICpkc3QrKyA9ICpzcmMr
KzsKKyAgfQorCisgIERlc2t0b3BWZWN0b3IgaG90c3BvdChzdGQ6Om1pbihpbWctPndpZHRoLCBp
bWctPnhob3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptaW4oaW1nLT5oZWlnaHQs
IGltZy0+eWhvdCkpOworCisgIFhGcmVlKGltZyk7CisKKyAgY3Vyc29yX3NoYXBlXy5yZXNldChu
ZXcgTW91c2VDdXJzb3IoaW1hZ2UucmVsZWFzZSgpLCBob3RzcG90KSk7Cit9CisKKy8vIHN0YXRp
YworTW91c2VDdXJzb3JNb25pdG9yKiBNb3VzZUN1cnNvck1vbml0b3JYMTE6OkNyZWF0ZUZvcldp
bmRvdygKKyAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsCisgICAgV2lu
ZG93SWQgd2luZG93KSB7CisgIGlmICghb3B0aW9ucy54X2Rpc3BsYXkoKSkKKyAgICByZXR1cm4g
TlVMTDsKKyAgd2luZG93ID0gR2V0VG9wTGV2ZWxXaW5kb3cob3B0aW9ucy54X2Rpc3BsYXkoKS0+
ZGlzcGxheSgpLCB3aW5kb3cpOworICBpZiAod2luZG93ID09IE5vbmUpCisgICAgcmV0dXJuIE5V
TEw7CisgIHJldHVybiBuZXcgTW91c2VDdXJzb3JNb25pdG9yWDExKG9wdGlvbnMsIHdpbmRvdyk7
Cit9CisKK01vdXNlQ3Vyc29yTW9uaXRvciogTW91c2VDdXJzb3JNb25pdG9yWDExOjpDcmVhdGVG
b3JTY3JlZW4oCisgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zLAorICAg
IFNjcmVlbklkIHNjcmVlbikgeworICBpZiAoIW9wdGlvbnMueF9kaXNwbGF5KCkpCisgICAgcmV0
dXJuIE5VTEw7CisgIHJldHVybiBuZXcgTW91c2VDdXJzb3JNb25pdG9yWDExKAorICAgICAgb3B0
aW9ucywgRGVmYXVsdFJvb3RXaW5kb3cob3B0aW9ucy54X2Rpc3BsYXkoKS0+ZGlzcGxheSgpKSk7
Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxNb3VzZUN1cnNvck1vbml0b3I+IE1vdXNlQ3Vyc29yTW9u
aXRvclgxMTo6Q3JlYXRlKAorICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9u
cykgeworICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1vdXNlQ3Vyc29yTW9uaXRvcj4oCisgICAg
ICBDcmVhdGVGb3JTY3JlZW4ob3B0aW9ucywga0Z1bGxEZXNrdG9wU2NyZWVuSWQpKTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2Vf
Y3Vyc29yX21vbml0b3JfeDExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9tb3VzZV9jdXJzb3JfbW9uaXRv
cl94MTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZThlMGNhNzhjMzI0ZGU0NTFiNmU5NGExMTQxNTZkNWEzNDJl
YWFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2VfY3Vyc29yX21vbml0
b3JfeDExLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBN
T0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9NT1VTRV9DVVJTT1JfTU9OSVRPUl9YMTFfSF8K
KyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfTU9VU0VfQ1VSU09SX01PTklU
T1JfWDExX0hfCisKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorCisjaW5jbHVkZSA8bWVtb3J5Pgor
CisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxh
eS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25p
dG9yLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBNb3VzZUN1cnNvck1vbml0b3JY
MTEgOiBwdWJsaWMgTW91c2VDdXJzb3JNb25pdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIHsKKyBwdWJsaWM6Cisg
IE1vdXNlQ3Vyc29yTW9uaXRvclgxMShjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlv
bnMsIFdpbmRvdyB3aW5kb3cpOworICB+TW91c2VDdXJzb3JNb25pdG9yWDExKCkgb3ZlcnJpZGU7
CisKKyAgc3RhdGljIE1vdXNlQ3Vyc29yTW9uaXRvciogQ3JlYXRlRm9yV2luZG93KAorICAgICAg
Y29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zLAorICAgICAgV2luZG93SWQgd2lu
ZG93KTsKKyAgc3RhdGljIE1vdXNlQ3Vyc29yTW9uaXRvciogQ3JlYXRlRm9yU2NyZWVuKAorICAg
ICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zLAorICAgICAgU2NyZWVuSWQg
c2NyZWVuKTsKKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNb3VzZUN1cnNvck1vbml0b3I+IENy
ZWF0ZSgKKyAgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7CisKKyAg
dm9pZCBJbml0KENhbGxiYWNrKiBjYWxsYmFjaywgTW9kZSBtb2RlKSBvdmVycmlkZTsKKyAgdm9p
ZCBDYXB0dXJlKCkgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorICAvLyBTaGFyZWRYRGlzcGxheTo6
WEV2ZW50SGFuZGxlciBpbnRlcmZhY2UuCisgIGJvb2wgSGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVu
dCYgZXZlbnQpIG92ZXJyaWRlOworCisgIERpc3BsYXkqIGRpc3BsYXkoKSB7IHJldHVybiB4X2Rp
c3BsYXlfLT5kaXNwbGF5KCk7IH0KKworICAvLyBDYXB0dXJlcyBjdXJyZW50IGN1cnNvciBzaGFw
ZSBhbmQgc3RvcmVzIGl0IGluIHxjdXJzb3Jfc2hhcGVffC4KKyAgdm9pZCBDYXB0dXJlQ3Vyc29y
KCk7CisKKyAgcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiB4X2Rpc3BsYXlfOwor
ICBDYWxsYmFjayogY2FsbGJhY2tfOworICBNb2RlIG1vZGVfOworICBXaW5kb3cgd2luZG93XzsK
KworICBib29sIGhhdmVfeGZpeGVzXzsKKyAgaW50IHhmaXhlc19ldmVudF9iYXNlXzsKKyAgaW50
IHhmaXhlc19lcnJvcl9iYXNlXzsKKworICBzdGQ6OnVuaXF1ZV9wdHI8TW91c2VDdXJzb3I+IGN1
cnNvcl9zaGFwZV87Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8g
TU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfTU9VU0VfQ1VSU09SX01PTklUT1JfWDExX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfcGlwZXdpcmUuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfcGlwZXdpcmUuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzI0ZDg1MzdkMzExNzhkZjQwYWQzMjQwNzRjMzBmNWNjZWQwMDkwYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl9waXBld2lyZS5jYwpAQCAtMCwwICsx
LDMwIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmgiCisKKyNpbmNsdWRlIDxtZW1v
cnk+CisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKworbmFtZXNwYWNlIHdlYnJ0
YyB7CisKK1NjcmVlbkNhcHR1cmVyUGlwZVdpcmU6OlNjcmVlbkNhcHR1cmVyUGlwZVdpcmUoKQor
ICAgIDogQmFzZUNhcHR1cmVyUGlwZVdpcmUoQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNhcHR1cmVT
b3VyY2VUeXBlOjpTY3JlZW4pIHt9CitTY3JlZW5DYXB0dXJlclBpcGVXaXJlOjp+U2NyZWVuQ2Fw
dHVyZXJQaXBlV2lyZSgpIHt9CisKKy8vIHN0YXRpYworc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BD
YXB0dXJlcj4KK1NjcmVlbkNhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJhd1NjcmVlbkNhcHR1cmVy
KAorICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgeworICByZXR1cm4g
YWJzbDo6bWFrZV91bmlxdWU8U2NyZWVuQ2FwdHVyZXJQaXBlV2lyZT4oKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1
cmVyX3BpcGV3aXJlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfcGlwZXdpcmUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NmRjZDY4MGUwNmEzMjBmYTM3YWNmYmYwYmFmYjcyYjU2NzBlZWZhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJl
LmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVT
X0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9TQ1JFRU5fQ0FQVFVSRVJfUElQRVdJUkVfSF8KKyNkZWZp
bmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfU0NSRUVOX0NBUFRVUkVSX1BJUEVXSVJF
X0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCitjbGFzcyBTY3JlZW5DYXB0dXJlclBpcGVXaXJlIDogcHVibGljIEJhc2VDYXB0dXJlclBp
cGVXaXJlIHsKKyBwdWJsaWM6CisgIFNjcmVlbkNhcHR1cmVyUGlwZVdpcmUoKTsKKyAgflNjcmVl
bkNhcHR1cmVyUGlwZVdpcmUoKSBvdmVycmlkZTsKKworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PERlc2t0b3BDYXB0dXJlcj4gQ3JlYXRlUmF3U2NyZWVuQ2FwdHVyZXIoCisgICAgICBjb25zdCBE
ZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpOworCisgIFJUQ19ESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oU2NyZWVuQ2FwdHVyZXJQaXBlV2lyZSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfU0NSRUVO
X0NBUFRVUkVSX1BJUEVXSVJFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5f
Y2FwdHVyZXJfeDExLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3gxMS5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ZDZhMDg1YjY1Y2NmYWFmM2YwZTI4NTNkNzk3Mzc3YzQ2OGE5YTc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3gxMS5jYwpAQCAt
MCwwICsxLDMzNyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfeDExLmgiCisKKyNpbmNsdWRl
IDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL1h1dGls
Lmg+CisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgorI2luY2x1ZGUgPFgxMS9l
eHRlbnNpb25zL1hmaXhlcy5oPgorCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHNldD4K
KyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
ZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvZGVza3RvcF9mcmFtZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL3NjcmVlbl9jYXB0dXJlX2ZyYW1lX3F1ZXVlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVyX2hlbHBlci5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3NoYXJlZF9kZXNrdG9wX2ZyYW1lLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3RpbWV1dGlscy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50Lmgi
CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitTY3JlZW5DYXB0dXJlclgxMTo6U2NyZWVuQ2FwdHVy
ZXJYMTEoKSB7CisgIGhlbHBlcl8uU2V0TG9nR3JpZFNpemUoNCk7Cit9CisKK1NjcmVlbkNhcHR1
cmVyWDExOjp+U2NyZWVuQ2FwdHVyZXJYMTEoKSB7CisgIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5S
ZW1vdmVFdmVudEhhbmRsZXIoQ29uZmlndXJlTm90aWZ5LCB0aGlzKTsKKyAgaWYgKHVzZV9kYW1h
Z2VfKSB7CisgICAgb3B0aW9uc18ueF9kaXNwbGF5KCktPlJlbW92ZUV2ZW50SGFuZGxlcihkYW1h
Z2VfZXZlbnRfYmFzZV8gKyBYRGFtYWdlTm90aWZ5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcyk7CisgIH0KKyAgRGVpbml0WGxpYigpOworfQorCiti
b29sIFNjcmVlbkNhcHR1cmVyWDExOjpJbml0KGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYg
b3B0aW9ucykgeworICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJTY3JlZW5DYXB0dXJlclgxMTo6
SW5pdCIpOworICBvcHRpb25zXyA9IG9wdGlvbnM7CisKKyAgcm9vdF93aW5kb3dfID0gUm9vdFdp
bmRvdyhkaXNwbGF5KCksIERlZmF1bHRTY3JlZW4oZGlzcGxheSgpKSk7CisgIGlmIChyb290X3dp
bmRvd18gPT0gQmFkVmFsdWUpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVW5hYmxlIHRv
IGdldCB0aGUgcm9vdCB3aW5kb3ciOworICAgIERlaW5pdFhsaWIoKTsKKyAgICByZXR1cm4gZmFs
c2U7CisgIH0KKworICBnY18gPSBYQ3JlYXRlR0MoZGlzcGxheSgpLCByb290X3dpbmRvd18sIDAs
IE5VTEwpOworICBpZiAoZ2NfID09IE5VTEwpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAi
VW5hYmxlIHRvIGdldCBncmFwaGljcyBjb250ZXh0IjsKKyAgICBEZWluaXRYbGliKCk7CisgICAg
cmV0dXJuIGZhbHNlOworICB9CisKKyAgb3B0aW9uc18ueF9kaXNwbGF5KCktPkFkZEV2ZW50SGFu
ZGxlcihDb25maWd1cmVOb3RpZnksIHRoaXMpOworCisgIC8vIENoZWNrIGZvciBYRml4ZXMgZXh0
ZW5zaW9uLiBUaGlzIGlzIHJlcXVpcmVkIGZvciBjdXJzb3Igc2hhcGUKKyAgLy8gbm90aWZpY2F0
aW9ucywgYW5kIGZvciBvdXIgdXNlIG9mIFhEYW1hZ2UuCisgIGlmIChYRml4ZXNRdWVyeUV4dGVu
c2lvbihkaXNwbGF5KCksICZ4Zml4ZXNfZXZlbnRfYmFzZV8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmeGZpeGVzX2Vycm9yX2Jhc2VfKSkgeworICAgIGhhc194Zml4ZXNfID0gdHJ1ZTsK
KyAgfSBlbHNlIHsKKyAgICBSVENfTE9HKExTX0lORk8pIDw8ICJYIHNlcnZlciBkb2VzIG5vdCBz
dXBwb3J0IFhGaXhlcy4iOworICB9CisKKyAgLy8gUmVnaXN0ZXIgZm9yIGNoYW5nZXMgdG8gdGhl
IGRpbWVuc2lvbnMgb2YgdGhlIHJvb3Qgd2luZG93LgorICBYU2VsZWN0SW5wdXQoZGlzcGxheSgp
LCByb290X3dpbmRvd18sIFN0cnVjdHVyZU5vdGlmeU1hc2spOworCisgIGlmICgheF9zZXJ2ZXJf
cGl4ZWxfYnVmZmVyXy5Jbml0KGRpc3BsYXkoKSwgRGVmYXVsdFJvb3RXaW5kb3coZGlzcGxheSgp
KSkpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgcGl4
ZWwgYnVmZmVyLiI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgaWYgKG9wdGlvbnNfLnVz
ZV91cGRhdGVfbm90aWZpY2F0aW9ucygpKSB7CisgICAgSW5pdFhEYW1hZ2UoKTsKKyAgfQorCisg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFNjcmVlbkNhcHR1cmVyWDExOjpJbml0WERhbWFnZSgp
IHsKKyAgLy8gT3VyIHVzZSBvZiBYRGFtYWdlIHJlcXVpcmVzIFhGaXhlcy4KKyAgaWYgKCFoYXNf
eGZpeGVzXykgeworICAgIHJldHVybjsKKyAgfQorCisgIC8vIENoZWNrIGZvciBYRGFtYWdlIGV4
dGVuc2lvbi4KKyAgaWYgKCFYRGFtYWdlUXVlcnlFeHRlbnNpb24oZGlzcGxheSgpLCAmZGFtYWdl
X2V2ZW50X2Jhc2VfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGFtYWdlX2Vycm9y
X2Jhc2VfKSkgeworICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlggc2VydmVyIGRvZXMgbm90IHN1
cHBvcnQgWERhbWFnZS4iOworICAgIHJldHVybjsKKyAgfQorCisgIC8vIFRPRE8obGFtYnJvc2xh
bWJyb3UpOiBEaXNhYmxlIERBTUFHRSBpbiBzaXR1YXRpb25zIHdoZXJlIGl0IGlzIGtub3duCisg
IC8vIHRvIGZhaWwsIHN1Y2ggYXMgd2hlbiBEZXNrdG9wIEVmZmVjdHMgYXJlIGVuYWJsZWQsIHdp
dGggZ3JhcGhpY3MKKyAgLy8gZHJpdmVycyAoblZpZGlhLCBBVEkpIHRoYXQgZmFpbCB0byByZXBv
cnQgREFNQUdFIG5vdGlmaWNhdGlvbnMKKyAgLy8gcHJvcGVybHkuCisKKyAgLy8gUmVxdWVzdCBu
b3RpZmljYXRpb25zIGV2ZXJ5IHRpbWUgdGhlIHNjcmVlbiBiZWNvbWVzIGRhbWFnZWQuCisgIGRh
bWFnZV9oYW5kbGVfID0KKyAgICAgIFhEYW1hZ2VDcmVhdGUoZGlzcGxheSgpLCByb290X3dpbmRv
d18sIFhEYW1hZ2VSZXBvcnROb25FbXB0eSk7CisgIGlmICghZGFtYWdlX2hhbmRsZV8pIHsKKyAg
ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVW5hYmxlIHRvIGluaXRpYWxpemUgWERhbWFnZS4iOwor
ICAgIHJldHVybjsKKyAgfQorCisgIC8vIENyZWF0ZSBhbiBYRml4ZXMgc2VydmVyLXNpZGUgcmVn
aW9uIHRvIGNvbGxhdGUgZGFtYWdlIGludG8uCisgIGRhbWFnZV9yZWdpb25fID0gWEZpeGVzQ3Jl
YXRlUmVnaW9uKGRpc3BsYXkoKSwgMCwgMCk7CisgIGlmICghZGFtYWdlX3JlZ2lvbl8pIHsKKyAg
ICBYRGFtYWdlRGVzdHJveShkaXNwbGF5KCksIGRhbWFnZV9oYW5kbGVfKTsKKyAgICBSVENfTE9H
KExTX0VSUk9SKSA8PCAiVW5hYmxlIHRvIGNyZWF0ZSBYRml4ZXMgcmVnaW9uLiI7CisgICAgcmV0
dXJuOworICB9CisKKyAgb3B0aW9uc18ueF9kaXNwbGF5KCktPkFkZEV2ZW50SGFuZGxlcihkYW1h
Z2VfZXZlbnRfYmFzZV8gKyBYRGFtYWdlTm90aWZ5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMpOworCisgIHVzZV9kYW1hZ2VfID0gdHJ1ZTsKKyAgUlRDX0xP
RyhMU19JTkZPKSA8PCAiVXNpbmcgWERhbWFnZSBleHRlbnNpb24uIjsKK30KKwordm9pZCBTY3Jl
ZW5DYXB0dXJlclgxMTo6U3RhcnQoQ2FsbGJhY2sqIGNhbGxiYWNrKSB7CisgIFJUQ19EQ0hFQ0so
IWNhbGxiYWNrXyk7CisgIFJUQ19EQ0hFQ0soY2FsbGJhY2spOworCisgIGNhbGxiYWNrXyA9IGNh
bGxiYWNrOworfQorCit2b2lkIFNjcmVlbkNhcHR1cmVyWDExOjpDYXB0dXJlRnJhbWUoKSB7Cisg
IFRSQUNFX0VWRU5UMCgid2VicnRjIiwgIlNjcmVlbkNhcHR1cmVyWDExOjpDYXB0dXJlRnJhbWUi
KTsKKyAgaW50NjRfdCBjYXB0dXJlX3N0YXJ0X3RpbWVfbmFub3MgPSBydGM6OlRpbWVOYW5vcygp
OworCisgIHF1ZXVlXy5Nb3ZlVG9OZXh0RnJhbWUoKTsKKyAgUlRDX0RDSEVDSyghcXVldWVfLmN1
cnJlbnRfZnJhbWUoKSB8fCAhcXVldWVfLmN1cnJlbnRfZnJhbWUoKS0+SXNTaGFyZWQoKSk7CisK
KyAgLy8gUHJvY2VzcyBYRXZlbnRzIGZvciBYRGFtYWdlIGFuZCBjdXJzb3Igc2hhcGUgdHJhY2tp
bmcuCisgIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5Qcm9jZXNzUGVuZGluZ1hFdmVudHMoKTsKKwor
ICAvLyBQcm9jZXNzUGVuZGluZ1hFdmVudHMoKSBtYXkgY2FsbCBTY3JlZW5Db25maWd1cmF0aW9u
Q2hhbmdlZCgpIHdoaWNoCisgIC8vIHJlaW5pdGlhbGl6ZXMgfHhfc2VydmVyX3BpeGVsX2J1ZmZl
cl98LiBDaGVjayBpZiB0aGUgcGl4ZWwgYnVmZmVyIGlzIHN0aWxsCisgIC8vIGluIGEgZ29vZCBz
aGFwZS4KKyAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLmlzX2luaXRpYWxpemVkKCkpIHsK
KyAgICAvLyBXZSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBwaXhlbCBidWZmZXIuCisgICAgUlRDX0xP
RyhMU19FUlJPUikgPDwgIlBpeGVsIGJ1ZmZlciBpcyBub3QgaW5pdGlhbGl6ZWQuIjsKKyAgICBj
YWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVOVCwgbnVsbHB0
cik7CisgICAgcmV0dXJuOworICB9CisKKyAgLy8gSWYgdGhlIGN1cnJlbnQgZnJhbWUgaXMgZnJv
bSBhbiBvbGRlciBnZW5lcmF0aW9uIHRoZW4gYWxsb2NhdGUgYSBuZXcgb25lLgorICAvLyBOb3Rl
IHRoYXQgd2UgY2FuJ3QgcmVhbGxvY2F0ZSBvdGhlciBidWZmZXJzIGF0IHRoaXMgcG9pbnQsIHNp
bmNlIHRoZSBjYWxsZXIKKyAgLy8gbWF5IHN0aWxsIGJlIHJlYWRpbmcgZnJvbSB0aGVtLgorICBp
ZiAoIXF1ZXVlXy5jdXJyZW50X2ZyYW1lKCkpIHsKKyAgICBxdWV1ZV8uUmVwbGFjZUN1cnJlbnRG
cmFtZSgKKyAgICAgICAgU2hhcmVkRGVza3RvcEZyYW1lOjpXcmFwKHN0ZDo6dW5pcXVlX3B0cjxE
ZXNrdG9wRnJhbWU+KAorICAgICAgICAgICAgbmV3IEJhc2ljRGVza3RvcEZyYW1lKHhfc2VydmVy
X3BpeGVsX2J1ZmZlcl8ud2luZG93X3NpemUoKSkpKSk7CisgIH0KKworICBzdGQ6OnVuaXF1ZV9w
dHI8RGVza3RvcEZyYW1lPiByZXN1bHQgPSBDYXB0dXJlU2NyZWVuKCk7CisgIGlmICghcmVzdWx0
KSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVGVtcG9yYXJpbHkgZmFpbGVkIHRvIGNh
cHR1cmUgc2NyZWVuLiI7CisgICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpF
UlJPUl9URU1QT1JBUlksIG51bGxwdHIpOworICAgIHJldHVybjsKKyAgfQorCisgIGxhc3RfaW52
YWxpZF9yZWdpb25fID0gcmVzdWx0LT51cGRhdGVkX3JlZ2lvbigpOworICByZXN1bHQtPnNldF9j
YXB0dXJlX3RpbWVfbXMoKHJ0Yzo6VGltZU5hbm9zKCkgLSBjYXB0dXJlX3N0YXJ0X3RpbWVfbmFu
b3MpIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6a051bU5hbm9zZWNzUGVy
TWlsbGlzZWMpOworICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OlNVQ0NFU1Ms
IHN0ZDo6bW92ZShyZXN1bHQpKTsKK30KKworYm9vbCBTY3JlZW5DYXB0dXJlclgxMTo6R2V0U291
cmNlTGlzdChTb3VyY2VMaXN0KiBzb3VyY2VzKSB7CisgIFJUQ19EQ0hFQ0soc291cmNlcy0+c2l6
ZSgpID09IDApOworICAvLyBUT0RPKGppYXlsKTogaW1wbGVtZW50IHNjcmVlbiBlbnVtZXJhdGlv
bi4KKyAgc291cmNlcy0+cHVzaF9iYWNrKHswfSk7CisgIHJldHVybiB0cnVlOworfQorCitib29s
IFNjcmVlbkNhcHR1cmVyWDExOjpTZWxlY3RTb3VyY2UoU291cmNlSWQgaWQpIHsKKyAgLy8gVE9E
TyhqaWF5bCk6IGltcGxlbWVudCBzY3JlZW4gc2VsZWN0aW9uLgorICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBTY3JlZW5DYXB0dXJlclgxMTo6SGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVudCYgZXZl
bnQpIHsKKyAgaWYgKHVzZV9kYW1hZ2VfICYmIChldmVudC50eXBlID09IGRhbWFnZV9ldmVudF9i
YXNlXyArIFhEYW1hZ2VOb3RpZnkpKSB7CisgICAgY29uc3QgWERhbWFnZU5vdGlmeUV2ZW50KiBk
YW1hZ2VfZXZlbnQgPQorICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFhEYW1hZ2VOb3Rp
ZnlFdmVudCo+KCZldmVudCk7CisgICAgaWYgKGRhbWFnZV9ldmVudC0+ZGFtYWdlICE9IGRhbWFn
ZV9oYW5kbGVfKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIFJUQ19EQ0hFQ0soZGFtYWdlX2V2
ZW50LT5sZXZlbCA9PSBYRGFtYWdlUmVwb3J0Tm9uRW1wdHkpOworICAgIHJldHVybiB0cnVlOwor
ICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gQ29uZmlndXJlTm90aWZ5KSB7CisgICAgU2NyZWVu
Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1cm4g
ZmFsc2U7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IFNjcmVlbkNhcHR1cmVy
WDExOjpDYXB0dXJlU2NyZWVuKCkgeworICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkRGVza3RvcEZy
YW1lPiBmcmFtZSA9IHF1ZXVlXy5jdXJyZW50X2ZyYW1lKCktPlNoYXJlKCk7CisgIFJUQ19EQ0hF
Q0soeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy53aW5kb3dfc2l6ZSgpLmVxdWFscyhmcmFtZS0+c2l6
ZSgpKSk7CisKKyAgLy8gUGFzcyB0aGUgc2NyZWVuIHNpemUgdG8gdGhlIGhlbHBlciwgc28gaXQg
Y2FuIGNsaXAgdGhlIGludmFsaWQgcmVnaW9uIGlmIGl0CisgIC8vIGV4cGFuZHMgdGhhdCByZWdp
b24gdG8gYSBncmlkLgorICBoZWxwZXJfLnNldF9zaXplX21vc3RfcmVjZW50KGZyYW1lLT5zaXpl
KCkpOworCisgIC8vIEluIHRoZSBEQU1BR0UgY2FzZSwgZW5zdXJlIHRoZSBmcmFtZSBpcyB1cC10
by1kYXRlIHdpdGggdGhlIHByZXZpb3VzIGZyYW1lCisgIC8vIGlmIGFueS4gIElmIHRoZXJlIGlz
bid0IGEgcHJldmlvdXMgZnJhbWUsIHRoYXQgbWVhbnMgYSBzY3JlZW4tcmVzb2x1dGlvbgorICAv
LyBjaGFuZ2Ugb2NjdXJyZWQsIGFuZCB8aW52YWxpZF9yZWN0c3wgd2lsbCBiZSB1cGRhdGVkIHRv
IGluY2x1ZGUgdGhlIHdob2xlCisgIC8vIHNjcmVlbi4KKyAgaWYgKHVzZV9kYW1hZ2VfICYmIHF1
ZXVlXy5wcmV2aW91c19mcmFtZSgpKQorICAgIFN5bmNocm9uaXplRnJhbWUoKTsKKworICBEZXNr
dG9wUmVnaW9uKiB1cGRhdGVkX3JlZ2lvbiA9IGZyYW1lLT5tdXRhYmxlX3VwZGF0ZWRfcmVnaW9u
KCk7CisKKyAgeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5TeW5jaHJvbml6ZSgpOworICBpZiAodXNl
X2RhbWFnZV8gJiYgcXVldWVfLnByZXZpb3VzX2ZyYW1lKCkpIHsKKyAgICAvLyBBdG9taWNhbGx5
IGZldGNoIGFuZCBjbGVhciB0aGUgZGFtYWdlIHJlZ2lvbi4KKyAgICBYRGFtYWdlU3VidHJhY3Qo
ZGlzcGxheSgpLCBkYW1hZ2VfaGFuZGxlXywgTm9uZSwgZGFtYWdlX3JlZ2lvbl8pOworICAgIGlu
dCByZWN0c19udW0gPSAwOworICAgIFhSZWN0YW5nbGUgYm91bmRzOworICAgIFhSZWN0YW5nbGUq
IHJlY3RzID0gWEZpeGVzRmV0Y2hSZWdpb25BbmRCb3VuZHMoZGlzcGxheSgpLCBkYW1hZ2VfcmVn
aW9uXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZyZWN0c19udW0sICZib3VuZHMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjdHNfbnVt
OyArK2kpIHsKKyAgICAgIHVwZGF0ZWRfcmVnaW9uLT5BZGRSZWN0KERlc2t0b3BSZWN0OjpNYWtl
WFlXSCgKKyAgICAgICAgICByZWN0c1tpXS54LCByZWN0c1tpXS55LCByZWN0c1tpXS53aWR0aCwg
cmVjdHNbaV0uaGVpZ2h0KSk7CisgICAgfQorICAgIFhGcmVlKHJlY3RzKTsKKyAgICBoZWxwZXJf
LkludmFsaWRhdGVSZWdpb24oKnVwZGF0ZWRfcmVnaW9uKTsKKworICAgIC8vIENhcHR1cmUgdGhl
IGRhbWFnZWQgcG9ydGlvbnMgb2YgdGhlIGRlc2t0b3AuCisgICAgaGVscGVyXy5UYWtlSW52YWxp
ZFJlZ2lvbih1cGRhdGVkX3JlZ2lvbik7CisKKyAgICAvLyBDbGlwIHRoZSBkYW1hZ2VkIHBvcnRp
b25zIHRvIHRoZSBjdXJyZW50IHNjcmVlbiBzaXplLCBqdXN0IGluIGNhc2Ugc29tZQorICAgIC8v
IHNwdXJpb3VzIFhEYW1hZ2Ugbm90aWZpY2F0aW9ucyB3ZXJlIHJlY2VpdmVkIGZvciBhIHByZXZp
b3VzIChsYXJnZXIpCisgICAgLy8gc2NyZWVuIHNpemUuCisgICAgdXBkYXRlZF9yZWdpb24tPklu
dGVyc2VjdFdpdGgoCisgICAgICAgIERlc2t0b3BSZWN0OjpNYWtlU2l6ZSh4X3NlcnZlcl9waXhl
bF9idWZmZXJfLndpbmRvd19zaXplKCkpKTsKKworICAgIGZvciAoRGVza3RvcFJlZ2lvbjo6SXRl
cmF0b3IgaXQoKnVwZGF0ZWRfcmVnaW9uKTsgIWl0LklzQXRFbmQoKTsKKyAgICAgICAgIGl0LkFk
dmFuY2UoKSkgeworICAgICAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLkNhcHR1cmVSZWN0
KGl0LnJlY3QoKSwgZnJhbWUuZ2V0KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisgIH0gZWxzZSB7CisgICAgLy8gRG9pbmcgZnVsbC1zY3JlZW4gcG9sbGluZywgb3IgdGhpcyBp
cyB0aGUgZmlyc3QgY2FwdHVyZSBhZnRlciBhCisgICAgLy8gc2NyZWVuLXJlc29sdXRpb24gY2hh
bmdlLiAgSW4gZWl0aGVyIGNhc2UsIG5lZWQgYSBmdWxsLXNjcmVlbiBjYXB0dXJlLgorICAgIERl
c2t0b3BSZWN0IHNjcmVlbl9yZWN0ID0gRGVza3RvcFJlY3Q6Ok1ha2VTaXplKGZyYW1lLT5zaXpl
KCkpOworICAgIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5DYXB0dXJlUmVjdChzY3JlZW5f
cmVjdCwgZnJhbWUuZ2V0KCkpKQorICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgdXBkYXRlZF9y
ZWdpb24tPlNldFJlY3Qoc2NyZWVuX3JlY3QpOworICB9CisKKyAgcmV0dXJuIHN0ZDo6bW92ZShm
cmFtZSk7Cit9CisKK3ZvaWQgU2NyZWVuQ2FwdHVyZXJYMTE6OlNjcmVlbkNvbmZpZ3VyYXRpb25D
aGFuZ2VkKCkgeworICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJTY3JlZW5DYXB0dXJlclgxMTo6
U2NyZWVuQ29uZmlndXJhdGlvbkNoYW5nZWQiKTsKKyAgLy8gTWFrZSBzdXJlIHRoZSBmcmFtZSBi
dWZmZXJzIHdpbGwgYmUgcmVhbGxvY2F0ZWQuCisgIHF1ZXVlXy5SZXNldCgpOworCisgIGhlbHBl
cl8uQ2xlYXJJbnZhbGlkUmVnaW9uKCk7CisgIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5J
bml0KGRpc3BsYXkoKSwgRGVmYXVsdFJvb3RXaW5kb3coZGlzcGxheSgpKSkpIHsKKyAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgcGl4ZWwgYnVmZmVyIGFmdGVy
IHNjcmVlbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvbmZpZ3VyYXRpb24gY2hhbmdl
LiI7CisgIH0KK30KKwordm9pZCBTY3JlZW5DYXB0dXJlclgxMTo6U3luY2hyb25pemVGcmFtZSgp
IHsKKyAgLy8gU3luY2hyb25pemUgdGhlIGN1cnJlbnQgYnVmZmVyIHdpdGggdGhlIHByZXZpb3Vz
IG9uZSBzaW5jZSB3ZSBkbyBub3QKKyAgLy8gY2FwdHVyZSB0aGUgZW50aXJlIGRlc2t0b3AuIE5v
dGUgdGhhdCBlbmNvZGVyIG1heSBiZSByZWFkaW5nIGZyb20gdGhlCisgIC8vIHByZXZpb3VzIGJ1
ZmZlciBhdCB0aGlzIHRpbWUgc28gdGhyZWFkIGFjY2VzcyBjb21wbGFpbnRzIGFyZSBmYWxzZQor
ICAvLyBwb3NpdGl2ZXMuCisKKyAgLy8gVE9ETyhoY2xhbSk6IFdlIGNhbiByZWR1Y2UgdGhlIGFt
b3VudCBvZiBjb3B5aW5nIGhlcmUgYnkgc3VidHJhY3RpbmcKKyAgLy8gfGNhcHR1cmVyX2hlbHBl
cl98cyByZWdpb24gZnJvbSB8bGFzdF9pbnZhbGlkX3JlZ2lvbl98LgorICAvLyBodHRwOi8vY3Ji
dWcuY29tLzkyMzU0CisgIFJUQ19EQ0hFQ0socXVldWVfLnByZXZpb3VzX2ZyYW1lKCkpOworCisg
IERlc2t0b3BGcmFtZSogY3VycmVudCA9IHF1ZXVlXy5jdXJyZW50X2ZyYW1lKCk7CisgIERlc2t0
b3BGcmFtZSogbGFzdCA9IHF1ZXVlXy5wcmV2aW91c19mcmFtZSgpOworICBSVENfRENIRUNLKGN1
cnJlbnQgIT0gbGFzdCk7CisgIGZvciAoRGVza3RvcFJlZ2lvbjo6SXRlcmF0b3IgaXQobGFzdF9p
bnZhbGlkX3JlZ2lvbl8pOyAhaXQuSXNBdEVuZCgpOworICAgICAgIGl0LkFkdmFuY2UoKSkgewor
ICAgIGN1cnJlbnQtPkNvcHlQaXhlbHNGcm9tKCpsYXN0LCBpdC5yZWN0KCkudG9wX2xlZnQoKSwg
aXQucmVjdCgpKTsKKyAgfQorfQorCit2b2lkIFNjcmVlbkNhcHR1cmVyWDExOjpEZWluaXRYbGli
KCkgeworICBpZiAoZ2NfKSB7CisgICAgWEZyZWVHQyhkaXNwbGF5KCksIGdjXyk7CisgICAgZ2Nf
ID0gbnVsbHB0cjsKKyAgfQorCisgIHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uUmVsZWFzZSgpOwor
CisgIGlmIChkaXNwbGF5KCkpIHsKKyAgICBpZiAoZGFtYWdlX2hhbmRsZV8pIHsKKyAgICAgIFhE
YW1hZ2VEZXN0cm95KGRpc3BsYXkoKSwgZGFtYWdlX2hhbmRsZV8pOworICAgICAgZGFtYWdlX2hh
bmRsZV8gPSAwOworICAgIH0KKworICAgIGlmIChkYW1hZ2VfcmVnaW9uXykgeworICAgICAgWEZp
eGVzRGVzdHJveVJlZ2lvbihkaXNwbGF5KCksIGRhbWFnZV9yZWdpb25fKTsKKyAgICAgIGRhbWFn
ZV9yZWdpb25fID0gMDsKKyAgICB9CisgIH0KK30KKworLy8gc3RhdGljCitzdGQ6OnVuaXF1ZV9w
dHI8RGVza3RvcENhcHR1cmVyPiBTY3JlZW5DYXB0dXJlclgxMTo6Q3JlYXRlUmF3U2NyZWVuQ2Fw
dHVyZXIoCisgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7CisgIGlm
ICghb3B0aW9ucy54X2Rpc3BsYXkoKSkKKyAgICByZXR1cm4gbnVsbHB0cjsKKworICBzdGQ6OnVu
aXF1ZV9wdHI8U2NyZWVuQ2FwdHVyZXJYMTE+IGNhcHR1cmVyKG5ldyBTY3JlZW5DYXB0dXJlclgx
MSgpKTsKKyAgaWYgKCFjYXB0dXJlci5nZXQoKS0+SW5pdChvcHRpb25zKSkgeworICAgIHJldHVy
biBudWxscHRyOworICB9CisKKyAgcmV0dXJuIHN0ZDo6bW92ZShjYXB0dXJlcik7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9j
YXB0dXJlcl94MTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl94MTEuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45ZjNiNjBjM2Q4N2U1YjE3ZGQ1OTQ5Nzc3ODUxZmI5Y2M0OWI5OGUzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3gxMS5oCkBAIC0wLDAg
KzEsMTIzIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9D
QVBUVVJFX0xJTlVYX1NDUkVFTl9DQVBUVVJFUl9YMTFfSF8KKyNkZWZpbmUgTU9EVUxFU19ERVNL
VE9QX0NBUFRVUkVfTElOVVhfU0NSRUVOX0NBUFRVUkVSX1gxMV9IXworCisjaW5jbHVkZSA8WDEx
L1hsaWIuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZGFtYWdlLmg+CisKKyNpbmNsdWRl
IDxtZW1vcnk+CisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRl
ICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVfb3B0aW9ucy5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVfZnJhbWVfcXVl
dWUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fY2FwdHVyZXJf
aGVscGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2hhcmVkX2Rlc2t0
b3BfZnJhbWUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisKK25h
bWVzcGFjZSB3ZWJydGMgeworCisvLyBBIGNsYXNzIHRvIHBlcmZvcm0gdmlkZW8gZnJhbWUgY2Fw
dHVyaW5nIGZvciBMaW51eCBvbiBYMTEuCisvLworLy8gSWYgWERhbWFnZSBpcyB1c2VkLCB0aGlz
IGNsYXNzIHNldHMgRGVza3RvcEZyYW1lOjp1cGRhdGVkX3JlZ2lvbigpIGFjY29yZGluZworLy8g
dG8gdGhlIGFyZWFzIHJlcG9ydGVkIGJ5IFhEYW1hZ2UuIE90aGVyd2lzZSB0aGlzIGNsYXNzIGRv
ZXMgbm90IGRldGVjdAorLy8gRGVza3RvcEZyYW1lOjp1cGRhdGVkX3JlZ2lvbigpLCB0aGUgZmll
bGQgaXMgYWx3YXlzIHNldCB0byB0aGUgZW50aXJlIGZyYW1lCisvLyByZWN0YW5nbGUuIFNjcmVl
bkNhcHR1cmVyRGlmZmVyV3JhcHBlciBzaG91bGQgYmUgdXNlZCBpZiB0aGF0IGZ1bmN0aW9uYWxp
dHkKKy8vIGlzIG5lY2Vzc2FyeS4KK2NsYXNzIFNjcmVlbkNhcHR1cmVyWDExIDogcHVibGljIERl
c2t0b3BDYXB0dXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNoYXJlZFhE
aXNwbGF5OjpYRXZlbnRIYW5kbGVyIHsKKyBwdWJsaWM6CisgIFNjcmVlbkNhcHR1cmVyWDExKCk7
CisgIH5TY3JlZW5DYXB0dXJlclgxMSgpIG92ZXJyaWRlOworCisgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBDcmVhdGVSYXdTY3JlZW5DYXB0dXJlcigKKyAgICAgIGNv
bnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7CisKKyAgLy8gVE9ETyhhandvbmcp
OiBEbyB3ZSByZWFsbHkgd2FudCB0aGlzIHRvIGJlIHN5bmNocm9ub3VzPworICBib29sIEluaXQo
Y29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKTsKKworICAvLyBEZXNrdG9wQ2Fw
dHVyZXIgaW50ZXJmYWNlLgorICB2b2lkIFN0YXJ0KENhbGxiYWNrKiBkZWxlZ2F0ZSkgb3ZlcnJp
ZGU7CisgIHZvaWQgQ2FwdHVyZUZyYW1lKCkgb3ZlcnJpZGU7CisgIGJvb2wgR2V0U291cmNlTGlz
dChTb3VyY2VMaXN0KiBzb3VyY2VzKSBvdmVycmlkZTsKKyAgYm9vbCBTZWxlY3RTb3VyY2UoU291
cmNlSWQgaWQpIG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgRGlzcGxheSogZGlzcGxheSgpIHsg
cmV0dXJuIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5kaXNwbGF5KCk7IH0KKworICAvLyBTaGFyZWRY
RGlzcGxheTo6WEV2ZW50SGFuZGxlciBpbnRlcmZhY2UuCisgIGJvb2wgSGFuZGxlWEV2ZW50KGNv
bnN0IFhFdmVudCYgZXZlbnQpIG92ZXJyaWRlOworCisgIHZvaWQgSW5pdFhEYW1hZ2UoKTsKKwor
ICAvLyBDYXB0dXJlIHNjcmVlbiBwaXhlbHMgdG8gdGhlIGN1cnJlbnQgYnVmZmVyIGluIHRoZSBx
dWV1ZS4gSW4gdGhlIERBTUFHRQorICAvLyBjYXNlLCB0aGUgU2NyZWVuQ2FwdHVyZXJIZWxwZXIg
YWxyZWFkeSBob2xkcyB0aGUgbGlzdCBvZiBpbnZhbGlkIHJlY3RhbmdsZXMKKyAgLy8gZnJvbSBI
YW5kbGVYRXZlbnQoKS4gSW4gdGhlIG5vbi1EQU1BR0UgY2FzZSwgdGhpcyBjYXB0dXJlcyB0aGUK
KyAgLy8gd2hvbGUgc2NyZWVuLCB0aGVuIGNhbGN1bGF0ZXMgc29tZSBpbnZhbGlkIHJlY3Rhbmds
ZXMgdGhhdCBpbmNsdWRlIGFueQorICAvLyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoaXMgYW5kIHRo
ZSBwcmV2aW91cyBjYXB0dXJlLgorICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBDYXB0
dXJlU2NyZWVuKCk7CisKKyAgLy8gQ2FsbGVkIHdoZW4gdGhlIHNjcmVlbiBjb25maWd1cmF0aW9u
IGlzIGNoYW5nZWQuCisgIHZvaWQgU2NyZWVuQ29uZmlndXJhdGlvbkNoYW5nZWQoKTsKKworICAv
LyBTeW5jaHJvbml6ZSB0aGUgY3VycmVudCBidWZmZXIgd2l0aCB8bGFzdF9idWZmZXJffCwgYnkg
Y29weWluZyBwaXhlbHMgZnJvbQorICAvLyB0aGUgYXJlYSBvZiB8bGFzdF9pbnZhbGlkX3JlY3Rz
fC4KKyAgLy8gTm90ZSB0aGlzIG9ubHkgd29ya3Mgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBrTnVt
QnVmZmVycyA9PSAyLCBhcworICAvLyB8bGFzdF9pbnZhbGlkX3JlY3RzfCBob2xkcyB0aGUgZGlm
ZmVyZW5jZXMgZnJvbSB0aGUgcHJldmlvdXMgYnVmZmVyIGFuZAorICAvLyB0aGUgb25lIHByaW9y
IHRvIHRoYXQgKHdoaWNoIHdpbGwgdGhlbiBiZSB0aGUgY3VycmVudCBidWZmZXIpLgorICB2b2lk
IFN5bmNocm9uaXplRnJhbWUoKTsKKworICB2b2lkIERlaW5pdFhsaWIoKTsKKworICBEZXNrdG9w
Q2FwdHVyZU9wdGlvbnMgb3B0aW9uc187CisKKyAgQ2FsbGJhY2sqIGNhbGxiYWNrXyA9IG51bGxw
dHI7CisKKyAgLy8gWDExIGdyYXBoaWNzIGNvbnRleHQuCisgIEdDIGdjXyA9IG51bGxwdHI7Cisg
IFdpbmRvdyByb290X3dpbmRvd18gPSBCYWRWYWx1ZTsKKworICAvLyBYRml4ZXMuCisgIGJvb2wg
aGFzX3hmaXhlc18gPSBmYWxzZTsKKyAgaW50IHhmaXhlc19ldmVudF9iYXNlXyA9IC0xOworICBp
bnQgeGZpeGVzX2Vycm9yX2Jhc2VfID0gLTE7CisKKyAgLy8gWERhbWFnZSBpbmZvcm1hdGlvbi4K
KyAgYm9vbCB1c2VfZGFtYWdlXyA9IGZhbHNlOworICBEYW1hZ2UgZGFtYWdlX2hhbmRsZV8gPSAw
OworICBpbnQgZGFtYWdlX2V2ZW50X2Jhc2VfID0gLTE7CisgIGludCBkYW1hZ2VfZXJyb3JfYmFz
ZV8gPSAtMTsKKyAgWHNlcnZlclJlZ2lvbiBkYW1hZ2VfcmVnaW9uXyA9IDA7CisKKyAgLy8gQWNj
ZXNzIHRvIHRoZSBYIFNlcnZlcidzIHBpeGVsIGJ1ZmZlci4KKyAgWFNlcnZlclBpeGVsQnVmZmVy
IHhfc2VydmVyX3BpeGVsX2J1ZmZlcl87CisKKyAgLy8gQSB0aHJlYWQtc2FmZSBsaXN0IG9mIGlu
dmFsaWQgcmVjdGFuZ2xlcywgYW5kIHRoZSBzaXplIG9mIHRoZSBtb3N0CisgIC8vIHJlY2VudGx5
IGNhcHR1cmVkIHNjcmVlbi4KKyAgU2NyZWVuQ2FwdHVyZXJIZWxwZXIgaGVscGVyXzsKKworICAv
LyBRdWV1ZSBvZiB0aGUgZnJhbWVzIGJ1ZmZlcnMuCisgIFNjcmVlbkNhcHR1cmVGcmFtZVF1ZXVl
PFNoYXJlZERlc2t0b3BGcmFtZT4gcXVldWVfOworCisgIC8vIEludmFsaWQgcmVnaW9uIGZyb20g
dGhlIHByZXZpb3VzIGNhcHR1cmUuIFRoaXMgaXMgdXNlZCB0byBzeW5jaHJvbml6ZSB0aGUKKyAg
Ly8gY3VycmVudCB3aXRoIHRoZSBsYXN0IGJ1ZmZlciB1c2VkLgorICBEZXNrdG9wUmVnaW9uIGxh
c3RfaW52YWxpZF9yZWdpb25fOworCisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2Ny
ZWVuQ2FwdHVyZXJYMTEpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYg
IC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1NDUkVFTl9DQVBUVVJFUl9YMTFfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJlZF94X2Rpc3BsYXkuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9saW51eC9zaGFyZWRfeF9kaXNwbGF5LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NzVkYjZlNzg3NTliNTNh
YmJlZTk3N2YwOWI2MGU0MDU2YWMwNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51
eC9zaGFyZWRfeF9kaXNwbGF5LmNjCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hf
ZGlzcGxheS5oIgorCisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKworI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Z2dpbmcuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK1NoYXJlZFhEaXNwbGF5OjpTaGFyZWRY
RGlzcGxheShEaXNwbGF5KiBkaXNwbGF5KSA6IGRpc3BsYXlfKGRpc3BsYXkpIHsKKyAgUlRDX0RD
SEVDSyhkaXNwbGF5Xyk7Cit9CisKK1NoYXJlZFhEaXNwbGF5Ojp+U2hhcmVkWERpc3BsYXkoKSB7
CisgIFJUQ19EQ0hFQ0soZXZlbnRfaGFuZGxlcnNfLmVtcHR5KCkpOworICBYQ2xvc2VEaXNwbGF5
KGRpc3BsYXlfKTsKK30KKworLy8gc3RhdGljCitydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVkWERp
c3BsYXk+IFNoYXJlZFhEaXNwbGF5OjpDcmVhdGUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRp
c3BsYXlfbmFtZSkgeworICBEaXNwbGF5KiBkaXNwbGF5ID0KKyAgICAgIFhPcGVuRGlzcGxheShk
aXNwbGF5X25hbWUuZW1wdHkoKSA/IE5VTEwgOiBkaXNwbGF5X25hbWUuY19zdHIoKSk7CisgIGlm
ICghZGlzcGxheSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJVbmFibGUgdG8gb3BlbiBk
aXNwbGF5IjsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorICByZXR1cm4gbmV3IFNoYXJlZFhEaXNw
bGF5KGRpc3BsYXkpOworfQorCisvLyBzdGF0aWMKK3J0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRY
RGlzcGxheT4gU2hhcmVkWERpc3BsYXk6OkNyZWF0ZURlZmF1bHQoKSB7CisgIHJldHVybiBDcmVh
dGUoc3RkOjpzdHJpbmcoKSk7Cit9CisKK3ZvaWQgU2hhcmVkWERpc3BsYXk6OkFkZEV2ZW50SGFu
ZGxlcihpbnQgdHlwZSwgWEV2ZW50SGFuZGxlciogaGFuZGxlcikgeworICBldmVudF9oYW5kbGVy
c19bdHlwZV0ucHVzaF9iYWNrKGhhbmRsZXIpOworfQorCit2b2lkIFNoYXJlZFhEaXNwbGF5OjpS
ZW1vdmVFdmVudEhhbmRsZXIoaW50IHR5cGUsIFhFdmVudEhhbmRsZXIqIGhhbmRsZXIpIHsKKyAg
RXZlbnRIYW5kbGVyc01hcDo6aXRlcmF0b3IgaGFuZGxlcnMgPSBldmVudF9oYW5kbGVyc18uZmlu
ZCh0eXBlKTsKKyAgaWYgKGhhbmRsZXJzID09IGV2ZW50X2hhbmRsZXJzXy5lbmQoKSkKKyAgICBy
ZXR1cm47CisKKyAgc3RkOjp2ZWN0b3I8WEV2ZW50SGFuZGxlcio+OjppdGVyYXRvciBuZXdfZW5k
ID0KKyAgICAgIHN0ZDo6cmVtb3ZlKGhhbmRsZXJzLT5zZWNvbmQuYmVnaW4oKSwgaGFuZGxlcnMt
PnNlY29uZC5lbmQoKSwgaGFuZGxlcik7CisgIGhhbmRsZXJzLT5zZWNvbmQuZXJhc2UobmV3X2Vu
ZCwgaGFuZGxlcnMtPnNlY29uZC5lbmQoKSk7CisKKyAgLy8gQ2hlY2sgaWYgbm8gaGFuZGxlcnMg
bGVmdCBmb3IgdGhpcyBldmVudC4KKyAgaWYgKGhhbmRsZXJzLT5zZWNvbmQuZW1wdHkoKSkKKyAg
ICBldmVudF9oYW5kbGVyc18uZXJhc2UoaGFuZGxlcnMpOworfQorCit2b2lkIFNoYXJlZFhEaXNw
bGF5OjpQcm9jZXNzUGVuZGluZ1hFdmVudHMoKSB7CisgIC8vIEhvbGQgcmVmZXJlbmNlIHRvIHx0
aGlzfCB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgZGVzdHJveWVkIHdoaWxlCisgIC8vIHByb2Nl
c3NpbmcgZXZlbnRzLgorICBydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVkWERpc3BsYXk+IHNlbGYo
dGhpcyk7CisKKyAgLy8gRmluZCB0aGUgbnVtYmVyIG9mIGV2ZW50cyB0aGF0IGFyZSBvdXRzdGFu
ZGluZyAibm93LiIgIFdlIGRvbid0IGp1c3QgbG9vcAorICAvLyBvbiBYUGVuZGluZyBiZWNhdXNl
IHdlIHdhbnQgdG8gZ3VhcmFudGVlIHRoaXMgdGVybWluYXRlcy4KKyAgaW50IGV2ZW50c190b19w
cm9jZXNzID0gWFBlbmRpbmcoZGlzcGxheSgpKTsKKyAgWEV2ZW50IGU7CisKKyAgZm9yIChpbnQg
aSA9IDA7IGkgPCBldmVudHNfdG9fcHJvY2VzczsgaSsrKSB7CisgICAgWE5leHRFdmVudChkaXNw
bGF5KCksICZlKTsKKyAgICBFdmVudEhhbmRsZXJzTWFwOjppdGVyYXRvciBoYW5kbGVycyA9IGV2
ZW50X2hhbmRsZXJzXy5maW5kKGUudHlwZSk7CisgICAgaWYgKGhhbmRsZXJzID09IGV2ZW50X2hh
bmRsZXJzXy5lbmQoKSkKKyAgICAgIGNvbnRpbnVlOworICAgIGZvciAoc3RkOjp2ZWN0b3I8WEV2
ZW50SGFuZGxlcio+OjppdGVyYXRvciBpdCA9IGhhbmRsZXJzLT5zZWNvbmQuYmVnaW4oKTsKKyAg
ICAgICAgIGl0ICE9IGhhbmRsZXJzLT5zZWNvbmQuZW5kKCk7ICsraXQpIHsKKyAgICAgIGlmICgo
Kml0KS0+SGFuZGxlWEV2ZW50KGUpKQorICAgICAgICBicmVhazsKKyAgICB9CisgIH0KK30KKwor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVk
X3hfZGlzcGxheS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxheS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmExNGY0MWZhYjhhM2I3MzI0MTc3NzQwNWIxYWM0NzYxODhlYTE3MjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zaGFyZWRfeF9kaXNwbGF5LmgKQEAgLTAsMCArMSw4MSBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRV
UkVfTElOVVhfU0hBUkVEX1hfRElTUExBWV9IXworI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQ
VFVSRV9MSU5VWF9TSEFSRURfWF9ESVNQTEFZX0hfCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVk
ZSA8dmVjdG9yPgorCisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYXBpL3JlZmNvdW50
ZWRiYXNlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisKKy8vIEluY2x1ZGluZyBYbGliLmggd2ls
bCBpbnZvbHZlIGV2aWwgZGVmaW5lcyAoQm9vbCwgU3RhdHVzLCBUcnVlLCBGYWxzZSksIHdoaWNo
CisvLyBlYXNpbHkgY29uZmxpY3Qgd2l0aCBvdGhlciBoZWFkZXJzLgordHlwZWRlZiBzdHJ1Y3Qg
X1hEaXNwbGF5IERpc3BsYXk7Cit0eXBlZGVmIHVuaW9uIF9YRXZlbnQgWEV2ZW50OworCituYW1l
c3BhY2Ugd2VicnRjIHsKKworLy8gQSByZWYtY291bnRlZCBvYmplY3QgdG8gc3RvcmUgWERpc3Bs
YXkgY29ubmVjdGlvbi4KK2NsYXNzIFNoYXJlZFhEaXNwbGF5IDogcHVibGljIHJ0Yzo6UmVmQ291
bnRlZEJhc2UgeworIHB1YmxpYzoKKyAgY2xhc3MgWEV2ZW50SGFuZGxlciB7CisgICBwdWJsaWM6
CisgICAgdmlydHVhbCB+WEV2ZW50SGFuZGxlcigpIHt9CisKKyAgICAvLyBQcm9jZXNzZXMgWEV2
ZW50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IGhhcyBiZWVuIGhhbmRsZWQuCisgICAgdmly
dHVhbCBib29sIEhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSA9IDA7CisgIH07CisK
KyAgLy8gVGFrZXMgb3duZXJzaGlwIG9mIHxkaXNwbGF5fC4KKyAgZXhwbGljaXQgU2hhcmVkWERp
c3BsYXkoRGlzcGxheSogZGlzcGxheSk7CisKKyAgLy8gQ3JlYXRlcyBhIG5ldyBYMTEgRGlzcGxh
eSBmb3IgdGhlIHxkaXNwbGF5X25hbWV8LiBOVUxMIGlzIHJldHVybmVkIGlmIFgxMQorICAvLyBj
b25uZWN0aW9uIGZhaWxlZC4gRXF1aXZhbGVudCB0byBDcmVhdGVEZWZhdWx0KCkgd2hlbiB8ZGlz
cGxheV9uYW1lfCBpcworICAvLyBlbXB0eS4KKyAgc3RhdGljIHJ0Yzo6c2NvcGVkX3JlZnB0cjxT
aGFyZWRYRGlzcGxheT4gQ3JlYXRlKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRpc3BsYXlf
bmFtZSk7CisKKyAgLy8gQ3JlYXRlcyBYMTEgRGlzcGxheSBjb25uZWN0aW9uIGZvciB0aGUgZGVm
YXVsdCBkaXNwbGF5IChlLmcuIHNwZWNpZmllZCBpbgorICAvLyBESVNQTEFZKS4gTlVMTCBpcyBy
ZXR1cm5lZCBpZiBYMTEgY29ubmVjdGlvbiBmYWlsZWQuCisgIHN0YXRpYyBydGM6OnNjb3BlZF9y
ZWZwdHI8U2hhcmVkWERpc3BsYXk+IENyZWF0ZURlZmF1bHQoKTsKKworICBEaXNwbGF5KiBkaXNw
bGF5KCkgeyByZXR1cm4gZGlzcGxheV87IH0KKworICAvLyBBZGRzIGEgbmV3IGV2ZW50IHxoYW5k
bGVyfCBmb3IgWEV2ZW50J3Mgb2YgfHR5cGV8LgorICB2b2lkIEFkZEV2ZW50SGFuZGxlcihpbnQg
dHlwZSwgWEV2ZW50SGFuZGxlciogaGFuZGxlcik7CisKKyAgLy8gUmVtb3ZlcyBldmVudCB8aGFu
ZGxlcnwgYWRkZWQgdXNpbmcgfEFkZEV2ZW50SGFuZGxlcnwuIERvZXNuJ3QgZG8gYW55dGhpbmcK
KyAgLy8gaWYgfGhhbmRsZXJ8IGlzIG5vdCByZWdpc3RlcmVkLgorICB2b2lkIFJlbW92ZUV2ZW50
SGFuZGxlcihpbnQgdHlwZSwgWEV2ZW50SGFuZGxlciogaGFuZGxlcik7CisKKyAgLy8gUHJvY2Vz
c2VzIHBlbmRpbmcgWEV2ZW50cywgY2FsbGluZyBjb3JyZXNwb25kaW5nIGV2ZW50IGhhbmRsZXJz
LgorICB2b2lkIFByb2Nlc3NQZW5kaW5nWEV2ZW50cygpOworCisgcHJvdGVjdGVkOgorICB+U2hh
cmVkWERpc3BsYXkoKSBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIHR5cGVkZWYgc3RkOjptYXA8
aW50LCBzdGQ6OnZlY3RvcjxYRXZlbnRIYW5kbGVyKj4gPiBFdmVudEhhbmRsZXJzTWFwOworCisg
IERpc3BsYXkqIGRpc3BsYXlfOworCisgIEV2ZW50SGFuZGxlcnNNYXAgZXZlbnRfaGFuZGxlcnNf
OworCisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2hhcmVkWERpc3BsYXkpOworfTsK
KworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfREVTS1RPUF9D
QVBUVVJFX0xJTlVYX1NIQVJFRF9YX0RJU1BMQVlfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L3dpbmRvd19jYXB0dXJlcl9waXBld2lyZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19j
YXB0dXJlcl9waXBld2lyZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzE5NWFhZjRhMDE0MjM0MDdjNzI3Y2I2
MDJjNTRlZDc2ZTlkOWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93
X2NhcHR1cmVyX3BpcGV3aXJlLmNjCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVy
ZXJfcGlwZXdpcmUuaCIKKworI2luY2x1ZGUgPG1lbW9yeT4KKworI2luY2x1ZGUgImFic2wvbWVt
b3J5L21lbW9yeS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworV2luZG93Q2FwdHVyZXJQaXBl
V2lyZTo6V2luZG93Q2FwdHVyZXJQaXBlV2lyZSgpCisgICAgOiBCYXNlQ2FwdHVyZXJQaXBlV2ly
ZShCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6Q2FwdHVyZVNvdXJjZVR5cGU6OldpbmRvdykge30KK1dp
bmRvd0NhcHR1cmVyUGlwZVdpcmU6On5XaW5kb3dDYXB0dXJlclBpcGVXaXJlKCkge30KKworLy8g
c3RhdGljCitzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPgorV2luZG93Q2FwdHVyZXJQ
aXBlV2lyZTo6Q3JlYXRlUmF3V2luZG93Q2FwdHVyZXIoCisgICAgY29uc3QgRGVza3RvcENhcHR1
cmVPcHRpb25zJiBvcHRpb25zKSB7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxXaW5kb3dD
YXB0dXJlclBpcGVXaXJlPigpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2xpbnV4L3dpbmRvd19jYXB0dXJlcl9waXBld2lyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMTg0ZWYyOTk5
MmRmY2I3ODg0Y2VmZTMyZWJhNTkxZDcxNmY0NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuaApAQCAtMCwwICsxLDMzIEBACisvKgor
ICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJ
TkRPV19DQVBUVVJFUl9QSVBFV0lSRV9IXworI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVS
RV9MSU5VWF9XSU5ET1dfQ0FQVFVSRVJfUElQRVdJUkVfSF8KKworI2luY2x1ZGUgPG1lbW9yeT4K
KworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJf
cGlwZXdpcmUuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIFdpbmRvd0NhcHR1cmVy
UGlwZVdpcmUgOiBwdWJsaWMgQmFzZUNhcHR1cmVyUGlwZVdpcmUgeworIHB1YmxpYzoKKyAgV2lu
ZG93Q2FwdHVyZXJQaXBlV2lyZSgpOworICB+V2luZG93Q2FwdHVyZXJQaXBlV2lyZSgpIG92ZXJy
aWRlOworCisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBDcmVhdGVS
YXdXaW5kb3dDYXB0dXJlcigKKyAgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0
aW9ucyk7CisKKyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihXaW5kb3dDYXB0dXJlclBp
cGVXaXJlKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RV
TEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfQ0FQVFVSRVJfUElQRVdJUkVfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl94MTEuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9saW51eC93aW5kb3dfY2FwdHVyZXJfeDExLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlZjdjNWNiMzg4MmVl
YmY0YTMyNWIwMTY2NGY5MzVkNTZiMzQyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9s
aW51eC93aW5kb3dfY2FwdHVyZXJfeDExLmNjCkBAIC0wLDAgKzEsMjQ0IEBACisvKgorICogIENv
cHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dp
bmRvd19jYXB0dXJlcl94MTEuaCIKKworI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgorI2luY2x1ZGUg
PFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9Y
cmVuZGVyLmg+CisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1
ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9w
X2ZyYW1lLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVk
X3hfZGlzcGxheS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dp
bmRvd19maW5kZXJfeDExLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgvd2luZG93X2xpc3RfdXRpbHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3Jl
Zl9wdHIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgorCituYW1lc3BhY2Ug
d2VicnRjIHsKKworV2luZG93Q2FwdHVyZXJYMTE6OldpbmRvd0NhcHR1cmVyWDExKGNvbnN0IERl
c2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IHhfZGlzcGxheV8ob3B0aW9ucy54
X2Rpc3BsYXkoKSksCisgICAgICBhdG9tX2NhY2hlXyhkaXNwbGF5KCkpLAorICAgICAgd2luZG93
X2ZpbmRlcl8oJmF0b21fY2FjaGVfKSB7CisgIGludCBldmVudF9iYXNlLCBlcnJvcl9iYXNlLCBt
YWpvcl92ZXJzaW9uLCBtaW5vcl92ZXJzaW9uOworICBpZiAoWENvbXBvc2l0ZVF1ZXJ5RXh0ZW5z
aW9uKGRpc3BsYXkoKSwgJmV2ZW50X2Jhc2UsICZlcnJvcl9iYXNlKSAmJgorICAgICAgWENvbXBv
c2l0ZVF1ZXJ5VmVyc2lvbihkaXNwbGF5KCksICZtYWpvcl92ZXJzaW9uLCAmbWlub3JfdmVyc2lv
bikgJiYKKyAgICAgIC8vIFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKCkgcmVxdWlyZXMgdmVy
c2lvbiAwLjIKKyAgICAgIChtYWpvcl92ZXJzaW9uID4gMCB8fCBtaW5vcl92ZXJzaW9uID49IDIp
KSB7CisgICAgaGFzX2NvbXBvc2l0ZV9leHRlbnNpb25fID0gdHJ1ZTsKKyAgfSBlbHNlIHsKKyAg
ICBSVENfTE9HKExTX0lORk8pIDw8ICJYY29tcG9zaXRlIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxl
IG9yIHRvbyBvbGQuIjsKKyAgfQorCisgIHhfZGlzcGxheV8tPkFkZEV2ZW50SGFuZGxlcihDb25m
aWd1cmVOb3RpZnksIHRoaXMpOworfQorCitXaW5kb3dDYXB0dXJlclgxMTo6fldpbmRvd0NhcHR1
cmVyWDExKCkgeworICB4X2Rpc3BsYXlfLT5SZW1vdmVFdmVudEhhbmRsZXIoQ29uZmlndXJlTm90
aWZ5LCB0aGlzKTsKK30KKworYm9vbCBXaW5kb3dDYXB0dXJlclgxMTo6R2V0U291cmNlTGlzdChT
b3VyY2VMaXN0KiBzb3VyY2VzKSB7CisgIHJldHVybiBHZXRXaW5kb3dMaXN0KCZhdG9tX2NhY2hl
XywgW3RoaXMsIHNvdXJjZXNdKDo6V2luZG93IHdpbmRvdykgeworICAgIFNvdXJjZSB3OworICAg
IHcuaWQgPSB3aW5kb3c7CisgICAgaWYgKHRoaXMtPkdldFdpbmRvd1RpdGxlKHdpbmRvdywgJncu
dGl0bGUpKSB7CisgICAgICBzb3VyY2VzLT5wdXNoX2JhY2sodyk7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworICB9KTsKK30KKworYm9vbCBXaW5kb3dDYXB0dXJlclgxMTo6U2VsZWN0U291cmNl
KFNvdXJjZUlkIGlkKSB7CisgIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5Jbml0KGRpc3Bs
YXkoKSwgaWQpKQorICAgIHJldHVybiBmYWxzZTsKKworICAvLyBUZWxsIHRoZSBYIHNlcnZlciB0
byBzZW5kIHVzIHdpbmRvdyByZXNpemluZyBldmVudHMuCisgIFhTZWxlY3RJbnB1dChkaXNwbGF5
KCksIGlkLCBTdHJ1Y3R1cmVOb3RpZnlNYXNrKTsKKworICBzZWxlY3RlZF93aW5kb3dfID0gaWQ7
CisKKyAgLy8gSW4gYWRkaXRpb24gdG8gbmVlZGluZyBYMTEgc2VydmVyLXNpZGUgc3VwcG9ydCBm
b3IgWGNvbXBvc2l0ZSwgaXQgYWN0dWFsbHkKKyAgLy8gbmVlZHMgdG8gYmUgdHVybmVkIG9uIGZv
ciB0aGUgd2luZG93LiBJZiB0aGUgdXNlciBoYXMgbW9kZXJuCisgIC8vIGhhcmR3YXJlL2RyaXZl
cnMgYnV0IGlzbid0IHVzaW5nIGEgY29tcG9zaXRpbmcgd2luZG93IG1hbmFnZXIsIHRoYXQgd29u
J3QKKyAgLy8gYmUgdGhlIGNhc2UuIEhlcmUgd2UgYXV0b21hdGljYWxseSB0dXJuIGl0IG9uLgor
CisgIC8vIFJlZGlyZWN0IGRyYXdpbmcgdG8gYW4gb2Zmc2NyZWVuIGJ1ZmZlciAoaWUsIHR1cm4g
b24gY29tcG9zaXRpbmcpLiBYMTEKKyAgLy8gcmVtZW1iZXJzIHdobyBoYXMgcmVxdWVzdGVkIHRo
aXMgYW5kIHdpbGwgdHVybiBpdCBvZmYgZm9yIHVzIHdoZW4gd2UgZXhpdC4KKyAgWENvbXBvc2l0
ZVJlZGlyZWN0V2luZG93KGRpc3BsYXkoKSwgaWQsIENvbXBvc2l0ZVJlZGlyZWN0QXV0b21hdGlj
KTsKKworICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXaW5kb3dDYXB0dXJlclgxMTo6Rm9jdXNP
blNlbGVjdGVkU291cmNlKCkgeworICBpZiAoIXNlbGVjdGVkX3dpbmRvd18pCisgICAgcmV0dXJu
IGZhbHNlOworCisgIHVuc2lnbmVkIGludCBudW1fY2hpbGRyZW47CisgIDo6V2luZG93KiBjaGls
ZHJlbjsKKyAgOjpXaW5kb3cgcGFyZW50OworICA6OldpbmRvdyByb290OworICAvLyBGaW5kIHRo
ZSByb290IHdpbmRvdyB0byBwYXNzIGV2ZW50IHRvLgorICBpbnQgc3RhdHVzID0gWFF1ZXJ5VHJl
ZShkaXNwbGF5KCksIHNlbGVjdGVkX3dpbmRvd18sICZyb290LCAmcGFyZW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAmY2hpbGRyZW4sICZudW1fY2hpbGRyZW4pOworICBpZiAoc3RhdHVz
ID09IDApIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHF1ZXJ5IGZvciB0
aGUgcm9vdCB3aW5kb3cuIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBpZiAoY2hpbGRy
ZW4pCisgICAgWEZyZWUoY2hpbGRyZW4pOworCisgIFhSYWlzZVdpbmRvdyhkaXNwbGF5KCksIHNl
bGVjdGVkX3dpbmRvd18pOworCisgIC8vIFNvbWUgd2luZG93IG1hbmFnZXJzIChlLmcuLCBtZXRh
Y2l0eSBpbiBHTk9NRSkgY29uc2lkZXIgaXQgaWxsZWdhbCB0bworICAvLyByYWlzZSBhIHdpbmRv
dyB3aXRob3V0IGFsc28gZ2l2aW5nIGl0IGlucHV0IGZvY3VzIHdpdGgKKyAgLy8gX05FVF9BQ1RJ
VkVfV0lORE9XLCBzbyBYUmFpc2VXaW5kb3coKSBvbiBpdHMgb3duIGlzbid0IGVub3VnaC4KKyAg
QXRvbSBhdG9tID0gWEludGVybkF0b20oZGlzcGxheSgpLCAiX05FVF9BQ1RJVkVfV0lORE9XIiwg
VHJ1ZSk7CisgIGlmIChhdG9tICE9IE5vbmUpIHsKKyAgICBYRXZlbnQgeGV2OworICAgIHhldi54
Y2xpZW50LnR5cGUgPSBDbGllbnRNZXNzYWdlOworICAgIHhldi54Y2xpZW50LnNlcmlhbCA9IDA7
CisgICAgeGV2LnhjbGllbnQuc2VuZF9ldmVudCA9IFRydWU7CisgICAgeGV2LnhjbGllbnQud2lu
ZG93ID0gc2VsZWN0ZWRfd2luZG93XzsKKyAgICB4ZXYueGNsaWVudC5tZXNzYWdlX3R5cGUgPSBh
dG9tOworCisgICAgLy8gVGhlIGZvcm1hdCBtZW1iZXIgaXMgc2V0IHRvIDgsIDE2LCBvciAzMiBh
bmQgc3BlY2lmaWVzIHdoZXRoZXIgdGhlCisgICAgLy8gZGF0YSBzaG91bGQgYmUgdmlld2VkIGFz
IGEgbGlzdCBvZiBieXRlcywgc2hvcnRzLCBvciBsb25ncy4KKyAgICB4ZXYueGNsaWVudC5mb3Jt
YXQgPSAzMjsKKworICAgIG1lbXNldCh4ZXYueGNsaWVudC5kYXRhLmwsIDAsIHNpemVvZih4ZXYu
eGNsaWVudC5kYXRhLmwpKTsKKworICAgIFhTZW5kRXZlbnQoZGlzcGxheSgpLCByb290LCBGYWxz
ZSwKKyAgICAgICAgICAgICAgIFN1YnN0cnVjdHVyZVJlZGlyZWN0TWFzayB8IFN1YnN0cnVjdHVy
ZU5vdGlmeU1hc2ssICZ4ZXYpOworICB9CisgIFhGbHVzaChkaXNwbGF5KCkpOworICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBXaW5kb3dDYXB0dXJlclgxMTo6U3RhcnQoQ2FsbGJhY2sqIGNhbGxi
YWNrKSB7CisgIFJUQ19EQ0hFQ0soIWNhbGxiYWNrXyk7CisgIFJUQ19EQ0hFQ0soY2FsbGJhY2sp
OworCisgIGNhbGxiYWNrXyA9IGNhbGxiYWNrOworfQorCit2b2lkIFdpbmRvd0NhcHR1cmVyWDEx
OjpDYXB0dXJlRnJhbWUoKSB7CisgIFRSQUNFX0VWRU5UMCgid2VicnRjIiwgIldpbmRvd0NhcHR1
cmVyWDExOjpDYXB0dXJlRnJhbWUiKTsKKworICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8u
SXNXaW5kb3dWYWxpZCgpKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlRoZSB3aW5kb3cg
aXMgbm8gbG9uZ2VyIHZhbGlkLiI7CisgICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVz
dWx0OjpFUlJPUl9QRVJNQU5FTlQsIG51bGxwdHIpOworICAgIHJldHVybjsKKyAgfQorCisgIHhf
ZGlzcGxheV8tPlByb2Nlc3NQZW5kaW5nWEV2ZW50cygpOworCisgIGlmICghaGFzX2NvbXBvc2l0
ZV9leHRlbnNpb25fKSB7CisgICAgLy8gV2l0aG91dCB0aGUgWGNvbXBvc2l0ZSBleHRlbnNpb24g
d2UgY2FwdHVyZSB3aGVuIHRoZSB3aG9sZSB3aW5kb3cgaXMKKyAgICAvLyB2aXNpYmxlIG9uIHNj
cmVlbiBhbmQgbm90IGNvdmVyZWQgYnkgYW55IG90aGVyIHdpbmRvdy4gVGhpcyBpcyBub3QKKyAg
ICAvLyBzb21ldGhpbmcgd2Ugd2FudCBzbyBpbnN0ZWFkLCBqdXN0IGJhaWwgb3V0LgorICAgIFJU
Q19MT0coTFNfRVJST1IpIDw8ICJObyBYY29tcG9zaXRlIGV4dGVuc2lvbiBkZXRlY3RlZC4iOwor
ICAgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfUEVSTUFORU5ULCBu
dWxscHRyKTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoR2V0V2luZG93U3RhdGUoJmF0b21f
Y2FjaGVfLCBzZWxlY3RlZF93aW5kb3dfKSA9PSBJY29uaWNTdGF0ZSkgeworICAgIC8vIFdpbmRv
dyBpcyBpbiBtaW5pbWl6ZWQuIFJldHVybiBhIDF4MSBmcmFtZSBhcyBzYW1lIGFzIE9TWC9XaW4g
ZG9lcy4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBmcmFtZSgKKyAgICAgICAg
bmV3IEJhc2ljRGVza3RvcEZyYW1lKERlc2t0b3BTaXplKDEsIDEpKSk7CisgICAgY2FsbGJhY2tf
LT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpTVUNDRVNTLCBzdGQ6Om1vdmUoZnJhbWUpKTsKKyAg
ICByZXR1cm47CisgIH0KKworICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBmcmFtZSgK
KyAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZSh4X3NlcnZlcl9waXhlbF9idWZmZXJfLndpbmRv
d19zaXplKCkpKTsKKworICB4X3NlcnZlcl9waXhlbF9idWZmZXJfLlN5bmNocm9uaXplKCk7Cisg
IGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5DYXB0dXJlUmVjdChEZXNrdG9wUmVjdDo6TWFr
ZVNpemUoZnJhbWUtPnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFtZS5nZXQoKSkpIHsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJUZW1w
b3JhcmlseSBmYWlsZWQgdG8gY2FwdHVyZSB3aW5vZHcuIjsKKyAgICBjYWxsYmFja18tPk9uQ2Fw
dHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1RFTVBPUkFSWSwgbnVsbHB0cik7CisgICAgcmV0dXJu
OworICB9CisKKyAgZnJhbWUtPm11dGFibGVfdXBkYXRlZF9yZWdpb24oKS0+U2V0UmVjdCgKKyAg
ICAgIERlc2t0b3BSZWN0OjpNYWtlU2l6ZShmcmFtZS0+c2l6ZSgpKSk7CisgIGZyYW1lLT5zZXRf
dG9wX2xlZnQoeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy53aW5kb3dfcmVjdCgpLnRvcF9sZWZ0KCkp
OworCisgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6U1VDQ0VTUywgc3RkOjpt
b3ZlKGZyYW1lKSk7Cit9CisKK2Jvb2wgV2luZG93Q2FwdHVyZXJYMTE6OklzT2NjbHVkZWQoY29u
c3QgRGVza3RvcFZlY3RvciYgcG9zKSB7CisgIHJldHVybiB3aW5kb3dfZmluZGVyXy5HZXRXaW5k
b3dVbmRlclBvaW50KHBvcykgIT0KKyAgICAgICAgIHN0YXRpY19jYXN0PFdpbmRvd0lkPihzZWxl
Y3RlZF93aW5kb3dfKTsKK30KKworYm9vbCBXaW5kb3dDYXB0dXJlclgxMTo6SGFuZGxlWEV2ZW50
KGNvbnN0IFhFdmVudCYgZXZlbnQpIHsKKyAgaWYgKGV2ZW50LnR5cGUgPT0gQ29uZmlndXJlTm90
aWZ5KSB7CisgICAgWENvbmZpZ3VyZUV2ZW50IHhjZSA9IGV2ZW50Lnhjb25maWd1cmU7CisgICAg
aWYgKHhjZS53aW5kb3cgPT0gc2VsZWN0ZWRfd2luZG93XykgeworICAgICAgaWYgKCFEZXNrdG9w
UmVjdEZyb21YQXR0cmlidXRlcyh4Y2UpLmVxdWFscygKKyAgICAgICAgICAgICAgeF9zZXJ2ZXJf
cGl4ZWxfYnVmZmVyXy53aW5kb3dfcmVjdCgpKSkgeworICAgICAgICBpZiAoIXhfc2VydmVyX3Bp
eGVsX2J1ZmZlcl8uSW5pdChkaXNwbGF5KCksIHNlbGVjdGVkX3dpbmRvd18pKSB7CisgICAgICAg
ICAgUlRDX0xPRyhMU19FUlJPUikKKyAgICAgICAgICAgICAgPDwgIkZhaWxlZCB0byBpbml0aWFs
aXplIHBpeGVsIGJ1ZmZlciBhZnRlciByZXNpemluZy4iOworICAgICAgICB9CisgICAgICB9Cisg
ICAgfQorICB9CisKKyAgLy8gQWx3YXlzIHJldHVybnMgZmFsc2UsIHNvIG90aGVyIG9ic2VydmVy
cyBjYW4gc3RpbGwgcmVjZWl2ZSB0aGUgZXZlbnRzLgorICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgV2luZG93Q2FwdHVyZXJYMTE6OkdldFdpbmRvd1RpdGxlKDo6V2luZG93IHdpbmRvdywgc3Rk
OjpzdHJpbmcqIHRpdGxlKSB7CisgIGludCBzdGF0dXM7CisgIGJvb2wgcmVzdWx0ID0gZmFsc2U7
CisgIFhUZXh0UHJvcGVydHkgd2luZG93X25hbWU7CisgIHdpbmRvd19uYW1lLnZhbHVlID0gbnVs
bHB0cjsKKyAgaWYgKHdpbmRvdykgeworICAgIHN0YXR1cyA9IFhHZXRXTU5hbWUoZGlzcGxheSgp
LCB3aW5kb3csICZ3aW5kb3dfbmFtZSk7CisgICAgaWYgKHN0YXR1cyAmJiB3aW5kb3dfbmFtZS52
YWx1ZSAmJiB3aW5kb3dfbmFtZS5uaXRlbXMpIHsKKyAgICAgIGludCBjbnQ7CisgICAgICBjaGFy
KiogbGlzdCA9IG51bGxwdHI7CisgICAgICBzdGF0dXMgPQorICAgICAgICAgIFh1dGY4VGV4dFBy
b3BlcnR5VG9UZXh0TGlzdChkaXNwbGF5KCksICZ3aW5kb3dfbmFtZSwgJmxpc3QsICZjbnQpOwor
ICAgICAgaWYgKHN0YXR1cyA+PSBTdWNjZXNzICYmIGNudCAmJiAqbGlzdCkgeworICAgICAgICBp
ZiAoY250ID4gMSkgeworICAgICAgICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIldpbmRvdyBoYXMg
IiA8PCBjbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgdGV4dCBwcm9wZXJ0aWVz
LCBvbmx5IHVzaW5nIHRoZSBmaXJzdCBvbmUuIjsKKyAgICAgICAgfQorICAgICAgICAqdGl0bGUg
PSAqbGlzdDsKKyAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChsaXN0
KQorICAgICAgICBYRnJlZVN0cmluZ0xpc3QobGlzdCk7CisgICAgfQorICAgIGlmICh3aW5kb3df
bmFtZS52YWx1ZSkKKyAgICAgIFhGcmVlKHdpbmRvd19uYW1lLnZhbHVlKTsKKyAgfQorICByZXR1
cm4gcmVzdWx0OworfQorCisvLyBzdGF0aWMKK3N0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVy
ZXI+IFdpbmRvd0NhcHR1cmVyWDExOjpDcmVhdGVSYXdXaW5kb3dDYXB0dXJlcigKKyAgICBjb25z
dCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKKyAgaWYgKCFvcHRpb25zLnhfZGlz
cGxheSgpKQorICAgIHJldHVybiBudWxscHRyOworICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERl
c2t0b3BDYXB0dXJlcj4obmV3IFdpbmRvd0NhcHR1cmVyWDExKG9wdGlvbnMpKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2Nh
cHR1cmVyX3gxMS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3gxMS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRjZDJjOTdjYjlmZGRlYTVhNzg3NWZkZTIzNjQ5NWMxN2Y1NTkxYjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfeDExLmgKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQ
VFVSRV9MSU5VWF9XSU5ET1dfQ0FQVFVSRVJfWDExX0hfCisjZGVmaW5lIE1PRFVMRVNfREVTS1RP
UF9DQVBUVVJFX0xJTlVYX1dJTkRPV19DQVBUVVJFUl9YMTFfSF8KKworI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9kZXNrdG9wX2NhcHR1cmVfb3B0aW9ucy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9saW51eC93aW5kb3dfZmluZGVyX3gxMS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL2xpbnV4L3hfYXRvbV9jYWNoZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL2xpbnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIFdp
bmRvd0NhcHR1cmVyWDExIDogcHVibGljIERlc2t0b3BDYXB0dXJlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIHsKKyBwdWJs
aWM6CisgIGV4cGxpY2l0IFdpbmRvd0NhcHR1cmVyWDExKGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0
aW9ucyYgb3B0aW9ucyk7CisgIH5XaW5kb3dDYXB0dXJlclgxMSgpIG92ZXJyaWRlOworCisgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBDcmVhdGVSYXdXaW5kb3dDYXB0
dXJlcigKKyAgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7CisKKyAg
Ly8gRGVza3RvcENhcHR1cmVyIGludGVyZmFjZS4KKyAgdm9pZCBTdGFydChDYWxsYmFjayogY2Fs
bGJhY2spIG92ZXJyaWRlOworICB2b2lkIENhcHR1cmVGcmFtZSgpIG92ZXJyaWRlOworICBib29s
IEdldFNvdXJjZUxpc3QoU291cmNlTGlzdCogc291cmNlcykgb3ZlcnJpZGU7CisgIGJvb2wgU2Vs
ZWN0U291cmNlKFNvdXJjZUlkIGlkKSBvdmVycmlkZTsKKyAgYm9vbCBGb2N1c09uU2VsZWN0ZWRT
b3VyY2UoKSBvdmVycmlkZTsKKyAgYm9vbCBJc09jY2x1ZGVkKGNvbnN0IERlc2t0b3BWZWN0b3Im
IHBvcykgb3ZlcnJpZGU7CisKKyAgLy8gU2hhcmVkWERpc3BsYXk6OlhFdmVudEhhbmRsZXIgaW50
ZXJmYWNlLgorICBib29sIEhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSBvdmVycmlk
ZTsKKworIHByaXZhdGU6CisgIERpc3BsYXkqIGRpc3BsYXkoKSB7IHJldHVybiB4X2Rpc3BsYXlf
LT5kaXNwbGF5KCk7IH0KKworICAvLyBSZXR1cm5zIHdpbmRvdyB0aXRsZSBmb3IgdGhlIHNwZWNp
ZmllZCBYIHx3aW5kb3d8LgorICBib29sIEdldFdpbmRvd1RpdGxlKDo6V2luZG93IHdpbmRvdywg
c3RkOjpzdHJpbmcqIHRpdGxlKTsKKworICBDYWxsYmFjayogY2FsbGJhY2tfID0gbnVsbHB0cjsK
KworICBydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVkWERpc3BsYXk+IHhfZGlzcGxheV87CisKKyAg
Ym9vbCBoYXNfY29tcG9zaXRlX2V4dGVuc2lvbl8gPSBmYWxzZTsKKworICA6OldpbmRvdyBzZWxl
Y3RlZF93aW5kb3dfID0gMDsKKyAgWFNlcnZlclBpeGVsQnVmZmVyIHhfc2VydmVyX3BpeGVsX2J1
ZmZlcl87CisgIFhBdG9tQ2FjaGUgYXRvbV9jYWNoZV87CisgIFdpbmRvd0ZpbmRlclgxMSB3aW5k
b3dfZmluZGVyXzsKKworICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFdpbmRvd0NhcHR1
cmVyWDExKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RV
TEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfQ0FQVFVSRVJfWDExX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfZmluZGVyX3gxMS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4
L3dpbmRvd19maW5kZXJfeDExLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZmFkYzJjNmZiNDMyOTJkYmE2MTM3
MDZiZGMzMDJmZTljODE5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5k
b3dfZmluZGVyX3gxMS5jYwpAQCAtMCwwICsxLDUxIEBACisvKgorICogIENvcHlyaWdodCAoYykg
MjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8K
KworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19maW5kZXJf
eDExLmgiCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1v
cnkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfbGlz
dF91dGlscy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworV2luZG93RmluZGVyWDExOjpXaW5kb3dGaW5kZXJYMTEoWEF0b21DYWNoZSogY2Fj
aGUpIDogY2FjaGVfKGNhY2hlKSB7CisgIFJUQ19EQ0hFQ0soY2FjaGVfKTsKK30KKworV2luZG93
RmluZGVyWDExOjp+V2luZG93RmluZGVyWDExKCkgPSBkZWZhdWx0OworCitXaW5kb3dJZCBXaW5k
b3dGaW5kZXJYMTE6OkdldFdpbmRvd1VuZGVyUG9pbnQoRGVza3RvcFZlY3RvciBwb2ludCkgewor
ICBXaW5kb3dJZCBpZCA9IGtOdWxsV2luZG93SWQ7CisgIEdldFdpbmRvd0xpc3QoY2FjaGVfLCBb
JmlkLCB0aGlzLCBwb2ludF0oOjpXaW5kb3cgd2luZG93KSB7CisgICAgRGVza3RvcFJlY3QgcmVj
dDsKKyAgICBpZiAoR2V0V2luZG93UmVjdCh0aGlzLT5jYWNoZV8tPmRpc3BsYXkoKSwgd2luZG93
LCAmcmVjdCkgJiYKKyAgICAgICAgcmVjdC5Db250YWlucyhwb2ludCkpIHsKKyAgICAgIGlkID0g
d2luZG93OworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fSk7CisgIHJldHVybiBpZDsKK30KKworLy8gc3RhdGljCitzdGQ6OnVuaXF1ZV9wdHI8V2luZG93
RmluZGVyPiBXaW5kb3dGaW5kZXI6OkNyZWF0ZSgKKyAgICBjb25zdCBXaW5kb3dGaW5kZXI6Ok9w
dGlvbnMmIG9wdGlvbnMpIHsKKyAgaWYgKG9wdGlvbnMuY2FjaGUgPT0gbnVsbHB0cikgeworICAg
IHJldHVybiBudWxscHRyOworICB9CisKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFdpbmRv
d0ZpbmRlclgxMT4ob3B0aW9ucy5jYWNoZSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19maW5kZXJfeDExLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9saW51eC93aW5kb3dfZmluZGVyX3gxMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYmJhODY5N2I1Zjc1NDRk
NGQ2Y2NjZGU2ZjEyY2U1NmE5Y2U0ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51
eC93aW5kb3dfZmluZGVyX3gxMS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRPV19GSU5E
RVJfWDExX0hfCisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRPV19G
SU5ERVJfWDExX0hfCisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3df
ZmluZGVyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBYQXRvbUNhY2hlOworCisv
LyBUaGUgaW1wbGVtZW50YXRpb24gb2YgV2luZG93RmluZGVyIGZvciBYMTEuCitjbGFzcyBXaW5k
b3dGaW5kZXJYMTEgZmluYWwgOiBwdWJsaWMgV2luZG93RmluZGVyIHsKKyBwdWJsaWM6CisgIGV4
cGxpY2l0IFdpbmRvd0ZpbmRlclgxMShYQXRvbUNhY2hlKiBjYWNoZSk7CisgIH5XaW5kb3dGaW5k
ZXJYMTEoKSBvdmVycmlkZTsKKworICAvLyBXaW5kb3dGaW5kZXIgaW1wbGVtZW50YXRpb24uCisg
IFdpbmRvd0lkIEdldFdpbmRvd1VuZGVyUG9pbnQoRGVza3RvcFZlY3RvciBwb2ludCkgb3ZlcnJp
ZGU7CisKKyBwcml2YXRlOgorICBYQXRvbUNhY2hlKiBjb25zdCBjYWNoZV87Cit9OworCit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVf
TElOVVhfV0lORE9XX0ZJTkRFUl9YMTFfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dp
bmRvd19saXN0X3V0aWxzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2xpc3RfdXRpbHMuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmQ4ZjVmNzJjZDVlNWU1ZTA1MTI5MDlmNzk3YTMwMjI5ZGUwZGM5NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmNjCkBAIC0w
LDAgKzEsMjQ2IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmgiCisKKyNpbmNsdWRlIDxY
MTEvWGF0b20uaD4KKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2luY2x1ZGUgPFgxMS9YdXRpbC5o
PgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisjaW5jbHVk
ZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9lcnJvcl90cmFwLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdp
Yy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIERlZmVyWEZyZWUgeworIHB1YmxpYzoKKyAgZXhwbGlj
aXQgRGVmZXJYRnJlZSh2b2lkKiBkYXRhKSA6IGRhdGFfKGRhdGEpIHt9CisgIH5EZWZlclhGcmVl
KCk7CisKKyBwcml2YXRlOgorICB2b2lkKiBjb25zdCBkYXRhXzsKK307CisKK0RlZmVyWEZyZWU6
On5EZWZlclhGcmVlKCkgeworICBpZiAoZGF0YV8pCisgICAgWEZyZWUoZGF0YV8pOworfQorCisv
LyBDb252ZW5pZW5jZSB3cmFwcGVyIGZvciBYR2V0V2luZG93UHJvcGVydHkoKSByZXN1bHRzLgor
dGVtcGxhdGUgPGNsYXNzIFByb3BlcnR5VHlwZT4KK2NsYXNzIFhXaW5kb3dQcm9wZXJ0eSB7Cisg
cHVibGljOgorICBYV2luZG93UHJvcGVydHkoRGlzcGxheSogZGlzcGxheSwgV2luZG93IHdpbmRv
dywgQXRvbSBwcm9wZXJ0eSkgeworICAgIGNvbnN0IGludCBrQml0c1BlckJ5dGUgPSA4OworICAg
IEF0b20gYWN0dWFsX3R5cGU7CisgICAgaW50IGFjdHVhbF9mb3JtYXQ7CisgICAgdW5zaWduZWQg
bG9uZyBieXRlc19hZnRlcjsgIC8vIE5PTElOVDogdHlwZSByZXF1aXJlZCBieSBYR2V0V2luZG93
UHJvcGVydHkKKyAgICBpbnQgc3RhdHVzID0gWEdldFdpbmRvd1Byb3BlcnR5KAorICAgICAgICBk
aXNwbGF5LCB3aW5kb3csIHByb3BlcnR5LCAwTCwgfjBMLCBGYWxzZSwgQW55UHJvcGVydHlUeXBl
LAorICAgICAgICAmYWN0dWFsX3R5cGUsICZhY3R1YWxfZm9ybWF0LCAmc2l6ZV8sICZieXRlc19h
ZnRlciwgJmRhdGFfKTsKKyAgICBpZiAoc3RhdHVzICE9IFN1Y2Nlc3MpIHsKKyAgICAgIGRhdGFf
ID0gbnVsbHB0cjsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHNpemVvZihQcm9wZXJ0
eVR5cGUpICoga0JpdHNQZXJCeXRlICE9IGFjdHVhbF9mb3JtYXQpIHsKKyAgICAgIHNpemVfID0g
MDsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpc192YWxpZF8gPSB0cnVlOworICB9CisK
KyAgflhXaW5kb3dQcm9wZXJ0eSgpIHsKKyAgICBpZiAoZGF0YV8pCisgICAgICBYRnJlZShkYXRh
Xyk7CisgIH0KKworICAvLyBUcnVlIGlmIHdlIGdvdCBwcm9wZXJseSB2YWx1ZSBzdWNjZXNzZnVs
bHkuCisgIGJvb2wgaXNfdmFsaWQoKSBjb25zdCB7IHJldHVybiBpc192YWxpZF87IH0KKworICAv
LyBTaXplIGFuZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuCisgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gc2l6ZV87IH0KKyAgY29uc3QgUHJvcGVydHlUeXBlKiBkYXRhKCkgY29uc3Qgewor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFByb3BlcnR5VHlwZSo+KGRhdGFfKTsKKyAgfQor
ICBQcm9wZXJ0eVR5cGUqIGRhdGEoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFByb3BlcnR5
VHlwZSo+KGRhdGFfKTsgfQorCisgcHJpdmF0ZToKKyAgYm9vbCBpc192YWxpZF8gPSBmYWxzZTsK
KyAgdW5zaWduZWQgbG9uZyBzaXplXyA9IDA7ICAvLyBOT0xJTlQ6IHR5cGUgcmVxdWlyZWQgYnkg
WEdldFdpbmRvd1Byb3BlcnR5CisgIHVuc2lnbmVkIGNoYXIqIGRhdGFfID0gbnVsbHB0cjsKKwor
ICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFhXaW5kb3dQcm9wZXJ0eSk7Cit9OworCisv
LyBJdGVyYXRlcyB0aHJvdWdoIHx3aW5kb3d8IGhpZXJhcmNoeSB0byBmaW5kIGZpcnN0IHZpc2li
bGUgd2luZG93LCBpLmUuIG9uZQorLy8gdGhhdCBoYXMgV01fU1RBVEUgcHJvcGVydHkgc2V0IHRv
IE5vcm1hbFN0YXRlLgorLy8gU2VlIGh0dHA6Ly90cm9uY2hlLmNvbS9ndWkveC9pY2NjbS9zZWMt
NC5odG1sI3MtNC4xLjMuMSAuCis6OldpbmRvdyBHZXRBcHBsaWNhdGlvbldpbmRvdyhYQXRvbUNh
Y2hlKiBjYWNoZSwgOjpXaW5kb3cgd2luZG93KSB7CisgIGludDMyX3Qgc3RhdGUgPSBHZXRXaW5k
b3dTdGF0ZShjYWNoZSwgd2luZG93KTsKKyAgaWYgKHN0YXRlID09IE5vcm1hbFN0YXRlKSB7Cisg
ICAgLy8gV2luZG93IGhhcyBXTV9TVEFURT09Tm9ybWFsU3RhdGUuIFJldHVybiBpdC4KKyAgICBy
ZXR1cm4gd2luZG93OworICB9IGVsc2UgaWYgKHN0YXRlID09IEljb25pY1N0YXRlKSB7CisgICAg
Ly8gV2luZG93IGlzIGluIG1pbmltaXplZC4gU2tpcCBpdC4KKyAgICByZXR1cm4gMDsKKyAgfQor
CisgIFJUQ19EQ0hFQ0tfRVEoc3RhdGUsIFdpdGhkcmF3blN0YXRlKTsKKyAgLy8gSWYgdGhlIHdp
bmRvdyBpcyBpbiBXaXRoZHJhd25TdGF0ZSB0aGVuIGxvb2sgYXQgYWxsIG9mIGl0cyBjaGlsZHJl
bi4KKyAgOjpXaW5kb3cgcm9vdCwgcGFyZW50OworICA6OldpbmRvdyogY2hpbGRyZW47CisgIHVu
c2lnbmVkIGludCBudW1fY2hpbGRyZW47CisgIGlmICghWFF1ZXJ5VHJlZShjYWNoZS0+ZGlzcGxh
eSgpLCB3aW5kb3csICZyb290LCAmcGFyZW50LCAmY2hpbGRyZW4sCisgICAgICAgICAgICAgICAg
ICAmbnVtX2NoaWxkcmVuKSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8g
cXVlcnkgZm9yIGNoaWxkIHdpbmRvd3MgYWx0aG91Z2ggd2luZG93IgorICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJkb2VzIG5vdCBoYXZlIGEgdmFsaWQgV01fU1RBVEUuIjsKKyAgICByZXR1cm4g
MDsKKyAgfQorICA6OldpbmRvdyBhcHBfd2luZG93ID0gMDsKKyAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBudW1fY2hpbGRyZW47ICsraSkgeworICAgIGFwcF93aW5kb3cgPSBHZXRBcHBs
aWNhdGlvbldpbmRvdyhjYWNoZSwgY2hpbGRyZW5baV0pOworICAgIGlmIChhcHBfd2luZG93KQor
ICAgICAgYnJlYWs7CisgIH0KKworICBpZiAoY2hpbGRyZW4pCisgICAgWEZyZWUoY2hpbGRyZW4p
OworICByZXR1cm4gYXBwX3dpbmRvdzsKK30KKworLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB8d2lu
ZG93fCBpcyBhIGRlc2t0b3AgZWxlbWVudC4KK2Jvb2wgSXNEZXNrdG9wRWxlbWVudChYQXRvbUNh
Y2hlKiBjYWNoZSwgOjpXaW5kb3cgd2luZG93KSB7CisgIFJUQ19EQ0hFQ0soY2FjaGUpOworICBp
ZiAod2luZG93ID09IDApCisgICAgcmV0dXJuIGZhbHNlOworCisgIC8vIEZpcnN0IGxvb2sgZm9y
IF9ORVRfV01fV0lORE9XX1RZUEUuIFRoZSBzdGFuZGFyZAorICAvLyAoaHR0cDovL3N0YW5kYXJk
cy5mcmVlZGVza3RvcC5vcmcvd20tc3BlYy9sYXRlc3QvYXIwMXMwNS5odG1sI2lkMjc2MDMwNikK
KyAgLy8gc2F5cyB0aGlzIGhpbnQgKnNob3VsZCogYmUgcHJlc2VudCBvbiBhbGwgd2luZG93cywg
YW5kIHdlIHVzZSB0aGUgZXhpc3RlbmNlCisgIC8vIG9mIF9ORVRfV01fV0lORE9XX1RZUEVfTk9S
TUFMIGluIHRoZSBwcm9wZXJ0eSB0byBpbmRpY2F0ZSBhIHdpbmRvdyBpcyBub3QKKyAgLy8gYSBk
ZXNrdG9wIGVsZW1lbnQgKHRoYXQgaXMsIG9ubHkgIm5vcm1hbCIgd2luZG93cyBzaG91bGQgYmUg
c2hhcmVhYmxlKS4KKyAgWFdpbmRvd1Byb3BlcnR5PHVpbnQzMl90PiB3aW5kb3dfdHlwZShjYWNo
ZS0+ZGlzcGxheSgpLCB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FjaGUtPldpbmRvd1R5cGUoKSk7CisgIGlmICh3aW5kb3dfdHlwZS5pc192YWxpZCgp
ICYmIHdpbmRvd190eXBlLnNpemUoKSA+IDApIHsKKyAgICB1aW50MzJfdCogZW5kID0gd2luZG93
X3R5cGUuZGF0YSgpICsgd2luZG93X3R5cGUuc2l6ZSgpOworICAgIGJvb2wgaXNfbm9ybWFsID0K
KyAgICAgICAgKGVuZCAhPSBzdGQ6OmZpbmQod2luZG93X3R5cGUuZGF0YSgpLCBlbmQsIGNhY2hl
LT5XaW5kb3dUeXBlTm9ybWFsKCkpKTsKKyAgICByZXR1cm4gIWlzX25vcm1hbDsKKyAgfQorCisg
IC8vIEZhbGwgYmFjayBvbiB1c2luZyB0aGUgaGludC4KKyAgWENsYXNzSGludCBjbGFzc19oaW50
OworICBTdGF0dXMgc3RhdHVzID0gWEdldENsYXNzSGludChjYWNoZS0+ZGlzcGxheSgpLCB3aW5k
b3csICZjbGFzc19oaW50KTsKKyAgaWYgKHN0YXR1cyA9PSAwKSB7CisgICAgLy8gTm8gaGludHMs
IGFzc3VtZSB0aGlzIGlzIGEgbm9ybWFsIGFwcGxpY2F0aW9uIHdpbmRvdy4KKyAgICByZXR1cm4g
ZmFsc2U7CisgIH0KKworICBEZWZlclhGcmVlIGZyZWVfcmVzX25hbWUoY2xhc3NfaGludC5yZXNf
bmFtZSk7CisgIERlZmVyWEZyZWUgZnJlZV9yZXNfY2xhc3MoY2xhc3NfaGludC5yZXNfY2xhc3Mp
OworICByZXR1cm4gc3RyY21wKCJnbm9tZS1wYW5lbCIsIGNsYXNzX2hpbnQucmVzX25hbWUpID09
IDAgfHwKKyAgICAgICAgIHN0cmNtcCgiZGVza3RvcF93aW5kb3ciLCBjbGFzc19oaW50LnJlc19u
YW1lKSA9PSAwOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50MzJfdCBHZXRXaW5kb3dTdGF0
ZShYQXRvbUNhY2hlKiBjYWNoZSwgOjpXaW5kb3cgd2luZG93KSB7CisgIC8vIEdldCBXTV9TVEFU
RSBwcm9wZXJ0eSBvZiB0aGUgd2luZG93LgorICBYV2luZG93UHJvcGVydHk8dWludDMyX3Q+IHdp
bmRvd19zdGF0ZShjYWNoZS0+ZGlzcGxheSgpLCB3aW5kb3csCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLT5XbVN0YXRlKCkpOworCisgIC8vIFdNX1NUQVRF
IGlzIGNvbnNpZGVyZWQgdG8gYmUgc2V0IHRvIFdpdGhkcmF3blN0YXRlIHdoZW4gaXQgbWlzc2lu
Zy4KKyAgcmV0dXJuIHdpbmRvd19zdGF0ZS5pc192YWxpZCgpID8gKndpbmRvd19zdGF0ZS5kYXRh
KCkgOiBXaXRoZHJhd25TdGF0ZTsKK30KKworYm9vbCBHZXRXaW5kb3dMaXN0KFhBdG9tQ2FjaGUq
IGNhY2hlLAorICAgICAgICAgICAgICAgICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PGJvb2woOjpXaW5k
b3cpPiBvbl93aW5kb3cpIHsKKyAgUlRDX0RDSEVDSyhjYWNoZSk7CisgIFJUQ19EQ0hFQ0sob25f
d2luZG93KTsKKyAgOjpEaXNwbGF5KiBjb25zdCBkaXNwbGF5ID0gY2FjaGUtPmRpc3BsYXkoKTsK
KworICBpbnQgZmFpbGVkX3NjcmVlbnMgPSAwOworICBjb25zdCBpbnQgbnVtX3NjcmVlbnMgPSBY
U2NyZWVuQ291bnQoZGlzcGxheSk7CisgIGZvciAoaW50IHNjcmVlbiA9IDA7IHNjcmVlbiA8IG51
bV9zY3JlZW5zOyBzY3JlZW4rKykgeworICAgIDo6V2luZG93IHJvb3Rfd2luZG93ID0gWFJvb3RX
aW5kb3coZGlzcGxheSwgc2NyZWVuKTsKKyAgICA6OldpbmRvdyBwYXJlbnQ7CisgICAgOjpXaW5k
b3cqIGNoaWxkcmVuOworICAgIHVuc2lnbmVkIGludCBudW1fY2hpbGRyZW47CisgICAgeworICAg
ICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXkpOworICAgICAgaWYgKFhRdWVyeVRyZWUo
ZGlzcGxheSwgcm9vdF93aW5kb3csICZyb290X3dpbmRvdywgJnBhcmVudCwgJmNoaWxkcmVuLAor
ICAgICAgICAgICAgICAgICAgICAgJm51bV9jaGlsZHJlbikgPT0gMCB8fAorICAgICAgICAgIGVy
cm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApIHsKKyAgICAgICAgZmFpbGVk
X3NjcmVlbnMrKzsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBxdWVy
eSBmb3IgY2hpbGQgd2luZG93cyBmb3Igc2NyZWVuICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgc2NyZWVuOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBE
ZWZlclhGcmVlIGZyZWVfY2hpbGRyZW4oY2hpbGRyZW4pOworCisgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBudW1fY2hpbGRyZW47IGkrKykgeworICAgICAgLy8gSXRlcmF0ZXMgaW4g
cmV2ZXJzZSBvcmRlciB0byByZXR1cm4gd2luZG93cyBmcm9tIGZyb250IHRvIGJhY2suCisgICAg
ICA6OldpbmRvdyBhcHBfd2luZG93ID0KKyAgICAgICAgICBHZXRBcHBsaWNhdGlvbldpbmRvdyhj
YWNoZSwgY2hpbGRyZW5bbnVtX2NoaWxkcmVuIC0gMSAtIGldKTsKKyAgICAgIGlmIChhcHBfd2lu
ZG93ICYmICFJc0Rlc2t0b3BFbGVtZW50KGNhY2hlLCBhcHBfd2luZG93KSkgeworICAgICAgICBp
ZiAoIW9uX3dpbmRvdyhhcHBfd2luZG93KSkgeworICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgcmV0dXJuIGZhaWxlZF9zY3JlZW5zIDwg
bnVtX3NjcmVlbnM7Cit9CisKK2Jvb2wgR2V0V2luZG93UmVjdCg6OkRpc3BsYXkqIGRpc3BsYXks
CisgICAgICAgICAgICAgICAgICAgOjpXaW5kb3cgd2luZG93LAorICAgICAgICAgICAgICAgICAg
IERlc2t0b3BSZWN0KiByZWN0LAorICAgICAgICAgICAgICAgICAgIFhXaW5kb3dBdHRyaWJ1dGVz
KiBhdHRyaWJ1dGVzIC8qID0gbnVsbHB0ciAqLykgeworICBYV2luZG93QXR0cmlidXRlcyBsb2Nh
bF9hdHRyaWJ1dGVzOworICBpbnQgb2Zmc2V0X3g7CisgIGludCBvZmZzZXRfeTsKKyAgaWYgKGF0
dHJpYnV0ZXMgPT0gbnVsbHB0cikgeworICAgIGF0dHJpYnV0ZXMgPSAmbG9jYWxfYXR0cmlidXRl
czsKKyAgfQorCisgIHsKKyAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheSk7CisgICAg
aWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyhkaXNwbGF5LCB3aW5kb3csIGF0dHJpYnV0ZXMpIHx8
CisgICAgICAgIGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApIHsKKyAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKyAgKnJlY3QgPSBEZXNrdG9wUmVjdEZyb21Y
QXR0cmlidXRlcygqYXR0cmlidXRlcyk7CisKKyAgeworICAgIFhFcnJvclRyYXAgZXJyb3JfdHJh
cChkaXNwbGF5KTsKKyAgICA6OldpbmRvdyBjaGlsZDsKKyAgICBpZiAoIVhUcmFuc2xhdGVDb29y
ZGluYXRlcyhkaXNwbGF5LCB3aW5kb3csIGF0dHJpYnV0ZXMtPnJvb3QsIC1yZWN0LT5sZWZ0KCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXJlY3QtPnRvcCgpLCAmb2Zmc2V0X3gs
ICZvZmZzZXRfeSwgJmNoaWxkKSB8fAorICAgICAgICBlcnJvcl90cmFwLkdldExhc3RFcnJvckFu
ZERpc2FibGUoKSAhPSAwKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgIHJl
Y3QtPlRyYW5zbGF0ZShvZmZzZXRfeCwgb2Zmc2V0X3kpOworICByZXR1cm4gdHJ1ZTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93
X2xpc3RfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjA1N2M5OWI4NGMyM2U0NzcyZmM1NmFjYzM1NGFmYjRlZTFlYmE4MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmgKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NB
UFRVUkVfTElOVVhfV0lORE9XX0xJU1RfVVRJTFNfSF8KKyNkZWZpbmUgTU9EVUxFU19ERVNLVE9Q
X0NBUFRVUkVfTElOVVhfV0lORE9XX0xJU1RfVVRJTFNfSF8KKworI2luY2x1ZGUgPFgxMS9YbGli
Lmg+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2dlb21ldHJ5
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9hdG9tX2NhY2hl
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZnVuY3Rpb25fdmlldy5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworLy8gU3luY2hyb25vdXNseSBpdGVyYXRlcyBhbGwgb24tc2NyZWVuIHdpbmRvd3Mg
aW4gfGNhY2hlfC5kaXNwbGF5KCkgaW4KKy8vIGRlY3JlYXNpbmcgei1vcmRlciBhbmQgc2VuZHMg
dGhlbSBvbmUtYnktb25lIHRvIHxvbl93aW5kb3d8IGZ1bmN0aW9uIGJlZm9yZQorLy8gR2V0V2lu
ZG93TGlzdCgpIHJldHVybnMuIElmIHxvbl93aW5kb3d8IHJldHVybnMgZmFsc2UsIHRoaXMgZnVu
Y3Rpb24gaWdub3JlcworLy8gb3RoZXIgd2luZG93cyBhbmQgcmV0dXJucyBpbW1lZGlhdGVseS4g
R2V0V2luZG93TGlzdCgpIHJldHVybnMgZmFsc2UgaWYKKy8vIG5hdGl2ZSBBUElzIGZhaWxlZC4g
SWYgbXVsdGlwbGUgc2NyZWVucyBhcmUgYXR0YWNoZWQgdG8gdGhlIHxkaXNwbGF5fCwgdGhpcwor
Ly8gZnVuY3Rpb24gcmV0dXJucyBmYWxzZSBvbmx5IHdoZW4gbmF0aXZlIEFQSXMgZmFpbGVkIG9u
IGFsbCBzY3JlZW5zLiBNZW51cywKKy8vIHBhbmVscyBhbmQgbWluaW1pemVkIHdpbmRvd3Mgd2ls
bCBiZSBpZ25vcmVkLgorYm9vbCBHZXRXaW5kb3dMaXN0KFhBdG9tQ2FjaGUqIGNhY2hlLAorICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PGJvb2woOjpXaW5kb3cpPiBvbl93aW5k
b3cpOworCisvLyBSZXR1cm5zIFdNX1NUQVRFIHByb3BlcnR5IG9mIHRoZSB8d2luZG93fC4gVGhp
cyBmdW5jdGlvbiByZXR1cm5zCisvLyBXaXRoZHJhd25TdGF0ZSBpZiB0aGUgfHdpbmRvd3wgaXMg
bWlzc2luZy4KK2ludDMyX3QgR2V0V2luZG93U3RhdGUoWEF0b21DYWNoZSogY2FjaGUsIDo6V2lu
ZG93IHdpbmRvdyk7CisKKy8vIFJldHVybnMgdGhlIHJlY3RhbmdsZSBvZiB0aGUgfHdpbmRvd3wg
aW4gdGhlIGNvb3JkaW5hdGVzIG9mIHxkaXNwbGF5fC4gVGhpcworLy8gZnVuY3Rpb24gcmV0dXJu
cyBmYWxzZSBpZiBuYXRpdmUgQVBJcyBmYWlsZWQuIElmIHxhdHRyaWJ1dGVzfCBpcyBwcm92aWRl
ZCwgaXQKKy8vIHdpbGwgYmUgZmlsbGVkIHdpdGggdGhlIGF0dHJpYnV0ZXMgb2YgfHdpbmRvd3wu
IFRoZSB8cmVjdHwgaXMgaW4gc3lzdGVtCisvLyBjb29yZGluYXRlLCBpLmUuIHRoZSBwcmltYXJ5
IG1vbml0b3IgYWx3YXlzIHN0YXJ0cyBmcm9tICgwLCAwKS4KK2Jvb2wgR2V0V2luZG93UmVjdCg6
OkRpc3BsYXkqIGRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgOjpXaW5kb3cgd2luZG93LAor
ICAgICAgICAgICAgICAgICAgIERlc2t0b3BSZWN0KiByZWN0LAorICAgICAgICAgICAgICAgICAg
IFhXaW5kb3dBdHRyaWJ1dGVzKiBhdHRyaWJ1dGVzID0gbnVsbHB0cik7CisKKy8vIENyZWF0ZXMg
YSBEZXNrdG9wUmVjdCBmcm9tIHxhdHRyaWJ1dGVzfC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
RGVza3RvcFJlY3QgRGVza3RvcFJlY3RGcm9tWEF0dHJpYnV0ZXMoY29uc3QgVCYgYXR0cmlidXRl
cykgeworICByZXR1cm4gRGVza3RvcFJlY3Q6Ok1ha2VYWVdIKGF0dHJpYnV0ZXMueCwgYXR0cmli
dXRlcy55LCBhdHRyaWJ1dGVzLndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZXMuaGVpZ2h0KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5k
aWYgIC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRPV19MSVNUX1VUSUxTX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2F0b21fY2FjaGUuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9s
aW51eC94X2F0b21fY2FjaGUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODMyZTYxNjZjYjQzNWNkYTg3ZTNhOWQx
YjQ2ZjRlYTQ5YWE2YzBiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfYXRv
bV9jYWNoZS5jYwpAQCAtMCwwICsxLDQ3IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNyBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfYXRvbV9jYWNoZS5oIgorCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitYQXRv
bUNhY2hlOjpYQXRvbUNhY2hlKDo6RGlzcGxheSogZGlzcGxheSkgOiBkaXNwbGF5XyhkaXNwbGF5
KSB7CisgIFJUQ19EQ0hFQ0soZGlzcGxheV8pOworfQorCitYQXRvbUNhY2hlOjp+WEF0b21DYWNo
ZSgpID0gZGVmYXVsdDsKKworOjpEaXNwbGF5KiBYQXRvbUNhY2hlOjpkaXNwbGF5KCkgY29uc3Qg
eworICByZXR1cm4gZGlzcGxheV87Cit9CisKK0F0b20gWEF0b21DYWNoZTo6V21TdGF0ZSgpIHsK
KyAgcmV0dXJuIENyZWF0ZUlmTm90RXhpc3QoJndtX3N0YXRlXywgIldNX1NUQVRFIik7Cit9CisK
K0F0b20gWEF0b21DYWNoZTo6V2luZG93VHlwZSgpIHsKKyAgcmV0dXJuIENyZWF0ZUlmTm90RXhp
c3QoJndpbmRvd190eXBlXywgIl9ORVRfV01fV0lORE9XX1RZUEUiKTsKK30KKworQXRvbSBYQXRv
bUNhY2hlOjpXaW5kb3dUeXBlTm9ybWFsKCkgeworICByZXR1cm4gQ3JlYXRlSWZOb3RFeGlzdCgm
d2luZG93X3R5cGVfbm9ybWFsXywgIl9ORVRfV01fV0lORE9XX1RZUEVfTk9STUFMIik7Cit9CisK
K0F0b20gWEF0b21DYWNoZTo6Q3JlYXRlSWZOb3RFeGlzdChBdG9tKiBhdG9tLCBjb25zdCBjaGFy
KiBuYW1lKSB7CisgIFJUQ19EQ0hFQ0soYXRvbSk7CisgIGlmICgqYXRvbSA9PSBOb25lKSB7Cisg
ICAgKmF0b20gPSBYSW50ZXJuQXRvbShkaXNwbGF5KCksIG5hbWUsIFRydWUpOworICB9CisgIHJl
dHVybiAqYXRvbTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbGludXgveF9hdG9tX2NhY2hlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2F0b21fY2FjaGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MTc4OWYwNTEyNGUxMDEwMGJmYTBkMjkwODgzYmE4MmYxYzM2MmVlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9hdG9tX2NhY2hlLmgKQEAgLTAsMCAr
MSw0MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19ERVNLVE9Q
X0NBUFRVUkVfTElOVVhfWF9BVE9NX0NBQ0hFX0hfCisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9D
QVBUVVJFX0xJTlVYX1hfQVRPTV9DQUNIRV9IXworCisjaW5jbHVkZSA8WDExL1hhdG9tLmg+Cisj
aW5jbHVkZSA8WDExL1hsaWIuaD4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEEgY2FjaGUg
b2YgQXRvbS4gRWFjaCBBdG9tIG9iamVjdCBpcyBjcmVhdGVkIG9uIGRlbWFuZC4KK2NsYXNzIFhB
dG9tQ2FjaGUgZmluYWwgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgWEF0b21DYWNoZSg6OkRpc3Bs
YXkqIGRpc3BsYXkpOworICB+WEF0b21DYWNoZSgpOworCisgIDo6RGlzcGxheSogZGlzcGxheSgp
IGNvbnN0OworCisgIEF0b20gV21TdGF0ZSgpOworICBBdG9tIFdpbmRvd1R5cGUoKTsKKyAgQXRv
bSBXaW5kb3dUeXBlTm9ybWFsKCk7CisKKyBwcml2YXRlOgorICAvLyBJZiB8KmF0b218IGlzIE5v
bmUsIHRoaXMgZnVuY3Rpb24gdXNlcyBYSW50ZXJuQXRvbSgpIHRvIHJldHJpZXZlIGFuIEF0b20u
CisgIEF0b20gQ3JlYXRlSWZOb3RFeGlzdChBdG9tKiBhdG9tLCBjb25zdCBjaGFyKiBuYW1lKTsK
KworICA6OkRpc3BsYXkqIGNvbnN0IGRpc3BsYXlfOworICBBdG9tIHdtX3N0YXRlXyA9IE5vbmU7
CisgIEF0b20gd2luZG93X3R5cGVfID0gTm9uZTsKKyAgQXRvbSB3aW5kb3dfdHlwZV9ub3JtYWxf
ID0gTm9uZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RV
TEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9YX0FUT01fQ0FDSEVfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2xpbnV4L3hfZXJyb3JfdHJhcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfZXJyb3JfdHJh
cC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYjVjYTQ1MTJkYzYyYTI4MjUzMjI4YTdmNjAzMTEzZmNhYTFkOTk2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9lcnJvcl90cmFwLmNjCkBAIC0w
LDAgKzEsNjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisg
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvbGludXgveF9lcnJvcl90cmFwLmgiCisKKyNpbmNsdWRlIDxhc3NlcnQu
aD4KKworI2lmIGRlZmluZWQoVE9PTEtJVF9HVEspCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2Vu
ZGlmICAvLyAhZGVmaW5lZChUT09MS0lUX0dUSykKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK25h
bWVzcGFjZSB7CisKKyNpZiAhZGVmaW5lZChUT09MS0lUX0dUSykKKworLy8gVE9ETyhzZXJnZXl1
KTogVGhpcyBjb2RlIGlzIG5vdCB0aHJlYWQgc2FmZS4gRml4IGl0LiBCdWcgMjIwMi4KK3N0YXRp
YyBib29sIGdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJsZWQgPSBmYWxzZTsKK3N0YXRpYyBpbnQg
Z19sYXN0X3hzZXJ2ZXJfZXJyb3JfY29kZSA9IDA7CisKK2ludCBYU2VydmVyRXJyb3JIYW5kbGVy
KERpc3BsYXkqIGRpc3BsYXksIFhFcnJvckV2ZW50KiBlcnJvcl9ldmVudCkgeworICBhc3NlcnQo
Z194c2VydmVyX2Vycm9yX3RyYXBfZW5hYmxlZCk7CisgIGdfbGFzdF94c2VydmVyX2Vycm9yX2Nv
ZGUgPSBlcnJvcl9ldmVudC0+ZXJyb3JfY29kZTsKKyAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAg
Ly8gIWRlZmluZWQoVE9PTEtJVF9HVEspCisKK30gIC8vIG5hbWVzcGFjZQorCitYRXJyb3JUcmFw
OjpYRXJyb3JUcmFwKERpc3BsYXkqIGRpc3BsYXkpCisgICAgOiBvcmlnaW5hbF9lcnJvcl9oYW5k
bGVyXyhOVUxMKSwgZW5hYmxlZF8odHJ1ZSkgeworI2lmIGRlZmluZWQoVE9PTEtJVF9HVEspCisg
IGdka19lcnJvcl90cmFwX3B1c2goKTsKKyNlbHNlICAgLy8gIWRlZmluZWQoVE9PTEtJVF9HVEsp
CisgIGFzc2VydCghZ194c2VydmVyX2Vycm9yX3RyYXBfZW5hYmxlZCk7CisgIG9yaWdpbmFsX2Vy
cm9yX2hhbmRsZXJfID0gWFNldEVycm9ySGFuZGxlcigmWFNlcnZlckVycm9ySGFuZGxlcik7Cisg
IGdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJsZWQgPSB0cnVlOworICBnX2xhc3RfeHNlcnZlcl9l
cnJvcl9jb2RlID0gMDsKKyNlbmRpZiAgLy8gIWRlZmluZWQoVE9PTEtJVF9HVEspCit9CisKK2lu
dCBYRXJyb3JUcmFwOjpHZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgeworICBlbmFibGVkXyA9IGZh
bHNlOworI2lmIGRlZmluZWQoVE9PTEtJVF9HVEspCisgIHJldHVybiBnZGtfZXJyb3JfdHJhcF9w
dXNoKCk7CisjZWxzZSAgIC8vICFkZWZpbmVkKFRPT0xLSVRfR1RLKQorICBhc3NlcnQoZ194c2Vy
dmVyX2Vycm9yX3RyYXBfZW5hYmxlZCk7CisgIFhTZXRFcnJvckhhbmRsZXIob3JpZ2luYWxfZXJy
b3JfaGFuZGxlcl8pOworICBnX3hzZXJ2ZXJfZXJyb3JfdHJhcF9lbmFibGVkID0gZmFsc2U7Cisg
IHJldHVybiBnX2xhc3RfeHNlcnZlcl9lcnJvcl9jb2RlOworI2VuZGlmICAvLyAhZGVmaW5lZChU
T09MS0lUX0dUSykKK30KKworWEVycm9yVHJhcDo6flhFcnJvclRyYXAoKSB7CisgIGlmIChlbmFi
bGVkXykKKyAgICBHZXRMYXN0RXJyb3JBbmREaXNhYmxlKCk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfZXJyb3JfdHJhcC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbGludXgveF9lcnJvcl90cmFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTlkMDU5YTBiYzM2MDhlNmQx
NWU2ZTk2NzRlYWViODllMzk2YmQzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4
L3hfZXJyb3JfdHJhcC5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAy
MDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1hfRVJST1JfVFJBUF9IXwor
I2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9YX0VSUk9SX1RSQVBfSF8KKwor
I2luY2x1ZGUgPFgxMS9YbGliLmg+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBIZWxwZXIgY2xhc3MgdGhhdCByZWdp
c3RlcnMgWCBXaW5kb3cgZXJyb3IgaGFuZGxlci4gQ2FsbGVyIGNhbiB1c2UKKy8vIEdldExhc3RF
cnJvckFuZERpc2FibGUoKSB0byBnZXQgdGhlIGxhc3QgZXJyb3IgdGhhdCB3YXMgY2F1Z2h0LCBp
ZiBhbnkuCitjbGFzcyBYRXJyb3JUcmFwIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFhFcnJvclRy
YXAoRGlzcGxheSogZGlzcGxheSk7CisgIH5YRXJyb3JUcmFwKCk7CisKKyAgLy8gUmV0dXJucyBs
YXN0IGVycm9yIGFuZCByZW1vdmVzIHVucmVnaXN0ZXJzIHRoZSBlcnJvciBoYW5kbGVyLgorICBp
bnQgR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpOworCisgcHJpdmF0ZToKKyAgWEVycm9ySGFuZGxl
ciBvcmlnaW5hbF9lcnJvcl9oYW5kbGVyXzsKKyAgYm9vbCBlbmFibGVkXzsKKworICBSVENfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKFhFcnJvclRyYXApOworfTsKKworfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1hfRVJS
T1JfVFJBUF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVm
ZmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE5ZGQxMzk4YzljYjBmNmM2NDAwOWM1NzVlZjBmYzUxMTVjMWRiNWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X3NlcnZlcl9waXhlbF9idWZmZXIuY2MKQEAgLTAsMCAr
MSwzNTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgiCisKKyNpbmNsdWRlIDxz
dHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvc2htLmg+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbGludXgvd2luZG93X2xpc3RfdXRpbHMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9saW51eC94X2Vycm9yX3RyYXAuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCituYW1lc3BhY2UgeworCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyB8bWFza3wg
aGFzIHRvIGJlIHNoaWZ0ZWQgbGVmdCBzbyBpdHMgbGFzdAorLy8gKG1vc3Qtc2lnbmlmaWNhbnQp
IGJpdCBzZXQgYmVjb21lcyB0aGUgbW9zdC1zaWduaWZpY2FudCBiaXQgb2YgdGhlIHdvcmQuCisv
LyBXaGVuIHxtYXNrfCBpcyAwIHRoZSBmdW5jdGlvbiByZXR1cm5zIDMxLgordWludDMyX3QgTWFz
a1RvU2hpZnQodWludDMyX3QgbWFzaykgeworICBpbnQgc2hpZnQgPSAwOworICBpZiAoKG1hc2sg
JiAweGZmZmYwMDAwdSkgPT0gMCkgeworICAgIG1hc2sgPDw9IDE2OworICAgIHNoaWZ0ICs9IDE2
OworICB9CisgIGlmICgobWFzayAmIDB4ZmYwMDAwMDB1KSA9PSAwKSB7CisgICAgbWFzayA8PD0g
ODsKKyAgICBzaGlmdCArPSA4OworICB9CisgIGlmICgobWFzayAmIDB4ZjAwMDAwMDB1KSA9PSAw
KSB7CisgICAgbWFzayA8PD0gNDsKKyAgICBzaGlmdCArPSA0OworICB9CisgIGlmICgobWFzayAm
IDB4YzAwMDAwMDB1KSA9PSAwKSB7CisgICAgbWFzayA8PD0gMjsKKyAgICBzaGlmdCArPSAyOwor
ICB9CisgIGlmICgobWFzayAmIDB4ODAwMDAwMDB1KSA9PSAwKQorICAgIHNoaWZ0ICs9IDE7CisK
KyAgcmV0dXJuIHNoaWZ0OworfQorCisvLyBSZXR1cm5zIHRydWUgaWYgfGltYWdlfCBpcyBpbiBS
R0IgZm9ybWF0LgorYm9vbCBJc1hJbWFnZVJHQkZvcm1hdChYSW1hZ2UqIGltYWdlKSB7CisgIHJl
dHVybiBpbWFnZS0+Yml0c19wZXJfcGl4ZWwgPT0gMzIgJiYgaW1hZ2UtPnJlZF9tYXNrID09IDB4
ZmYwMDAwICYmCisgICAgICAgICBpbWFnZS0+Z3JlZW5fbWFzayA9PSAweGZmMDAgJiYgaW1hZ2Ut
PmJsdWVfbWFzayA9PSAweGZmOworfQorCisvLyBXZSBleHBvc2UgdHdvIGZvcm1zIG9mIGJsaXR0
aW5nIHRvIGhhbmRsZSB2YXJpYXRpb25zIGluIHRoZSBwaXhlbCBmb3JtYXQuCisvLyBJbiBGYXN0
QmxpdCgpLCB0aGUgb3BlcmF0aW9uIGlzIGVmZmVjdGl2ZWx5IGEgbWVtY3B5Lgordm9pZCBGYXN0
QmxpdChYSW1hZ2UqIHhfaW1hZ2UsCisgICAgICAgICAgICAgIHVpbnQ4X3QqIHNyY19wb3MsCisg
ICAgICAgICAgICAgIGNvbnN0IERlc2t0b3BSZWN0JiByZWN0LAorICAgICAgICAgICAgICBEZXNr
dG9wRnJhbWUqIGZyYW1lKSB7CisgIGludCBzcmNfc3RyaWRlID0geF9pbWFnZS0+Ynl0ZXNfcGVy
X2xpbmU7CisgIGludCBkc3RfeCA9IHJlY3QubGVmdCgpLCBkc3RfeSA9IHJlY3QudG9wKCk7CisK
KyAgdWludDhfdCogZHN0X3BvcyA9IGZyYW1lLT5kYXRhKCkgKyBmcmFtZS0+c3RyaWRlKCkgKiBk
c3RfeTsKKyAgZHN0X3BvcyArPSBkc3RfeCAqIERlc2t0b3BGcmFtZTo6a0J5dGVzUGVyUGl4ZWw7
CisKKyAgaW50IGhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7CisgIGludCByb3dfYnl0ZXMgPSByZWN0
LndpZHRoKCkgKiBEZXNrdG9wRnJhbWU6OmtCeXRlc1BlclBpeGVsOworICBmb3IgKGludCB5ID0g
MDsgeSA8IGhlaWdodDsgKyt5KSB7CisgICAgbWVtY3B5KGRzdF9wb3MsIHNyY19wb3MsIHJvd19i
eXRlcyk7CisgICAgc3JjX3BvcyArPSBzcmNfc3RyaWRlOworICAgIGRzdF9wb3MgKz0gZnJhbWUt
PnN0cmlkZSgpOworICB9Cit9CisKK3ZvaWQgU2xvd0JsaXQoWEltYWdlKiB4X2ltYWdlLAorICAg
ICAgICAgICAgICB1aW50OF90KiBzcmNfcG9zLAorICAgICAgICAgICAgICBjb25zdCBEZXNrdG9w
UmVjdCYgcmVjdCwKKyAgICAgICAgICAgICAgRGVza3RvcEZyYW1lKiBmcmFtZSkgeworICBpbnQg
c3JjX3N0cmlkZSA9IHhfaW1hZ2UtPmJ5dGVzX3Blcl9saW5lOworICBpbnQgZHN0X3ggPSByZWN0
LmxlZnQoKSwgZHN0X3kgPSByZWN0LnRvcCgpOworICBpbnQgd2lkdGggPSByZWN0LndpZHRoKCks
IGhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7CisKKyAgdWludDMyX3QgcmVkX21hc2sgPSB4X2ltYWdl
LT5yZWRfbWFzazsKKyAgdWludDMyX3QgZ3JlZW5fbWFzayA9IHhfaW1hZ2UtPnJlZF9tYXNrOwor
ICB1aW50MzJfdCBibHVlX21hc2sgPSB4X2ltYWdlLT5ibHVlX21hc2s7CisKKyAgdWludDMyX3Qg
cmVkX3NoaWZ0ID0gTWFza1RvU2hpZnQocmVkX21hc2spOworICB1aW50MzJfdCBncmVlbl9zaGlm
dCA9IE1hc2tUb1NoaWZ0KGdyZWVuX21hc2spOworICB1aW50MzJfdCBibHVlX3NoaWZ0ID0gTWFz
a1RvU2hpZnQoYmx1ZV9tYXNrKTsKKworICBpbnQgYml0c19wZXJfcGl4ZWwgPSB4X2ltYWdlLT5i
aXRzX3Blcl9waXhlbDsKKworICB1aW50OF90KiBkc3RfcG9zID0gZnJhbWUtPmRhdGEoKSArIGZy
YW1lLT5zdHJpZGUoKSAqIGRzdF95OworICBkc3RfcG9zICs9IGRzdF94ICogRGVza3RvcEZyYW1l
OjprQnl0ZXNQZXJQaXhlbDsKKyAgLy8gVE9ETyhoY2xhbSk6IE9wdGltaXplLCBwZXJoYXBzIHVz
aW5nIE1NWCBjb2RlIG9yIGJ5IGNvbnZlcnRpbmcgdG8KKyAgLy8gWVVWIGRpcmVjdGx5LgorICAv
LyBUT0RPKHNlcmdleXUpOiBUaGlzIGNvZGUgZG9lc24ndCBoYW5kbGUgWEltYWdlIGJ5dGUgb3Jk
ZXIgcHJvcGVybHkgYW5kCisgIC8vIHdvbid0IHdvcmsgd2l0aCAyNGJwcCBpbWFnZXMuIEZpeCBp
dC4KKyAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgIHVpbnQzMl90KiBk
c3RfcG9zXzMyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGRzdF9wb3MpOworICAgIHVp
bnQzMl90KiBzcmNfcG9zXzMyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHNyY19wb3Mp
OworICAgIHVpbnQxNl90KiBzcmNfcG9zXzE2ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+
KHNyY19wb3MpOworICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworICAgICAg
Ly8gRGVyZWZlcmVuY2UgdGhyb3VnaCBhbiBhcHByb3ByaWF0ZWx5LWFsaWduZWQgcG9pbnRlci4K
KyAgICAgIHVpbnQzMl90IHBpeGVsOworICAgICAgaWYgKGJpdHNfcGVyX3BpeGVsID09IDMyKSB7
CisgICAgICAgIHBpeGVsID0gc3JjX3Bvc18zMlt4XTsKKyAgICAgIH0gZWxzZSBpZiAoYml0c19w
ZXJfcGl4ZWwgPT0gMTYpIHsKKyAgICAgICAgcGl4ZWwgPSBzcmNfcG9zXzE2W3hdOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcGl4ZWwgPSBzcmNfcG9zW3hdOworICAgICAgfQorICAgICAgdWlu
dDMyX3QgciA9IChwaXhlbCAmIHJlZF9tYXNrKSA8PCByZWRfc2hpZnQ7CisgICAgICB1aW50MzJf
dCBnID0gKHBpeGVsICYgZ3JlZW5fbWFzaykgPDwgZ3JlZW5fc2hpZnQ7CisgICAgICB1aW50MzJf
dCBiID0gKHBpeGVsICYgYmx1ZV9tYXNrKSA8PCBibHVlX3NoaWZ0OworICAgICAgLy8gV3JpdGUg
YXMgMzItYml0IFJHQi4KKyAgICAgIGRzdF9wb3NfMzJbeF0gPQorICAgICAgICAgICgociA+PiA4
KSAmIDB4ZmYwMDAwKSB8ICgoZyA+PiAxNikgJiAweGZmMDApIHwgKChiID4+IDI0KSAmIDB4ZmYp
OworICAgIH0KKyAgICBkc3RfcG9zICs9IGZyYW1lLT5zdHJpZGUoKTsKKyAgICBzcmNfcG9zICs9
IHNyY19zdHJpZGU7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCisKK1hTZXJ2ZXJQaXhlbEJ1
ZmZlcjo6WFNlcnZlclBpeGVsQnVmZmVyKCkge30KKworWFNlcnZlclBpeGVsQnVmZmVyOjp+WFNl
cnZlclBpeGVsQnVmZmVyKCkgeworICBSZWxlYXNlKCk7Cit9CisKK3ZvaWQgWFNlcnZlclBpeGVs
QnVmZmVyOjpSZWxlYXNlKCkgeworICBpZiAoeF9pbWFnZV8pIHsKKyAgICBYRGVzdHJveUltYWdl
KHhfaW1hZ2VfKTsKKyAgICB4X2ltYWdlXyA9IG51bGxwdHI7CisgIH0KKyAgaWYgKHhfc2htX2lt
YWdlXykgeworICAgIFhEZXN0cm95SW1hZ2UoeF9zaG1faW1hZ2VfKTsKKyAgICB4X3NobV9pbWFn
ZV8gPSBudWxscHRyOworICB9CisgIGlmIChzaG1fcGl4bWFwXykgeworICAgIFhGcmVlUGl4bWFw
KGRpc3BsYXlfLCBzaG1fcGl4bWFwXyk7CisgICAgc2htX3BpeG1hcF8gPSAwOworICB9CisgIGlm
IChzaG1fZ2NfKSB7CisgICAgWEZyZWVHQyhkaXNwbGF5Xywgc2htX2djXyk7CisgICAgc2htX2dj
XyA9IG51bGxwdHI7CisgIH0KKworICBSZWxlYXNlU2hhcmVkTWVtb3J5U2VnbWVudCgpOworCisg
IHdpbmRvd18gPSAwOworfQorCit2b2lkIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6UmVsZWFzZVNoYXJl
ZE1lbW9yeVNlZ21lbnQoKSB7CisgIGlmICghc2htX3NlZ21lbnRfaW5mb18pCisgICAgcmV0dXJu
OworICBpZiAoc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIgIT0gbnVsbHB0cikKKyAgICBzaG1k
dChzaG1fc2VnbWVudF9pbmZvXy0+c2htYWRkcik7CisgIGlmIChzaG1fc2VnbWVudF9pbmZvXy0+
c2htaWQgIT0gLTEpCisgICAgc2htY3RsKHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCwgSVBDX1JN
SUQsIDApOworICBkZWxldGUgc2htX3NlZ21lbnRfaW5mb187CisgIHNobV9zZWdtZW50X2luZm9f
ID0gbnVsbHB0cjsKK30KKworYm9vbCBYU2VydmVyUGl4ZWxCdWZmZXI6OkluaXQoRGlzcGxheSog
ZGlzcGxheSwgV2luZG93IHdpbmRvdykgeworICBSZWxlYXNlKCk7CisgIGRpc3BsYXlfID0gZGlz
cGxheTsKKworICBYV2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICBpZiAoIUdldFdpbmRv
d1JlY3QoZGlzcGxheV8sIHdpbmRvdywgJndpbmRvd19yZWN0XywgJmF0dHJpYnV0ZXMpKSB7Cisg
ICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgd2luZG93XyA9IHdpbmRvdzsKKyAgSW5pdFNobShh
dHRyaWJ1dGVzKTsKKworICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBYU2VydmVyUGl4ZWxCdWZm
ZXI6OkluaXRTaG0oY29uc3QgWFdpbmRvd0F0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIHsKKyAgVmlz
dWFsKiBkZWZhdWx0X3Zpc3VhbCA9IGF0dHJpYnV0ZXMudmlzdWFsOworICBpbnQgZGVmYXVsdF9k
ZXB0aCA9IGF0dHJpYnV0ZXMuZGVwdGg7CisKKyAgaW50IG1ham9yLCBtaW5vcjsKKyAgQm9vbCBo
YXZlX3BpeG1hcHM7CisgIGlmICghWFNobVF1ZXJ5VmVyc2lvbihkaXNwbGF5XywgJm1ham9yLCAm
bWlub3IsICZoYXZlX3BpeG1hcHMpKSB7CisgICAgLy8gU2hhcmVkIG1lbW9yeSBub3Qgc3VwcG9y
dGVkLiBDYXB0dXJlUmVjdCB3aWxsIHVzZSB0aGUgWEltYWdlIEFQSSBpbnN0ZWFkLgorICAgIHJl
dHVybjsKKyAgfQorCisgIGJvb2wgdXNpbmdfc2htID0gZmFsc2U7CisgIHNobV9zZWdtZW50X2lu
Zm9fID0gbmV3IFhTaG1TZWdtZW50SW5mbzsKKyAgc2htX3NlZ21lbnRfaW5mb18tPnNobWlkID0g
LTE7CisgIHNobV9zZWdtZW50X2luZm9fLT5zaG1hZGRyID0gbnVsbHB0cjsKKyAgc2htX3NlZ21l
bnRfaW5mb18tPnJlYWRPbmx5ID0gRmFsc2U7CisgIHhfc2htX2ltYWdlXyA9IFhTaG1DcmVhdGVJ
bWFnZShkaXNwbGF5XywgZGVmYXVsdF92aXN1YWwsIGRlZmF1bHRfZGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBaUGl4bWFwLCAwLCBzaG1fc2VnbWVudF9pbmZvXywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd19yZWN0Xy53aWR0aCgpLCB3aW5k
b3dfcmVjdF8uaGVpZ2h0KCkpOworICBpZiAoeF9zaG1faW1hZ2VfKSB7CisgICAgc2htX3NlZ21l
bnRfaW5mb18tPnNobWlkID0KKyAgICAgICAgc2htZ2V0KElQQ19QUklWQVRFLCB4X3NobV9pbWFn
ZV8tPmJ5dGVzX3Blcl9saW5lICogeF9zaG1faW1hZ2VfLT5oZWlnaHQsCisgICAgICAgICAgICAg
ICBJUENfQ1JFQVQgfCAwNjAwKTsKKyAgICBpZiAoc2htX3NlZ21lbnRfaW5mb18tPnNobWlkICE9
IC0xKSB7CisgICAgICB2b2lkKiBzaG1hdF9yZXN1bHQgPSBzaG1hdChzaG1fc2VnbWVudF9pbmZv
Xy0+c2htaWQsIDAsIDApOworICAgICAgaWYgKHNobWF0X3Jlc3VsdCAhPSByZWludGVycHJldF9j
YXN0PHZvaWQqPigtMSkpIHsKKyAgICAgICAgc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIgPSBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihzaG1hdF9yZXN1bHQpOworICAgICAgICB4X3NobV9pbWFn
ZV8tPmRhdGEgPSBzaG1fc2VnbWVudF9pbmZvXy0+c2htYWRkcjsKKworICAgICAgICBYRXJyb3JU
cmFwIGVycm9yX3RyYXAoZGlzcGxheV8pOworICAgICAgICB1c2luZ19zaG0gPSBYU2htQXR0YWNo
KGRpc3BsYXlfLCBzaG1fc2VnbWVudF9pbmZvXyk7CisgICAgICAgIFhTeW5jKGRpc3BsYXlfLCBG
YWxzZSk7CisgICAgICAgIGlmIChlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAh
PSAwKQorICAgICAgICAgIHVzaW5nX3NobSA9IGZhbHNlOworICAgICAgICBpZiAodXNpbmdfc2ht
KSB7CisgICAgICAgICAgUlRDX0xPRyhMU19WRVJCT1NFKQorICAgICAgICAgICAgICA8PCAiVXNp
bmcgWCBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgIiA8PCBzaG1fc2VnbWVudF9pbmZvXy0+c2htaWQ7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgUlRDX0xPRyhMU19XQVJO
SU5HKSA8PCAiRmFpbGVkIHRvIGdldCBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlBlcmZvcm1hbmNlIG1heSBiZSBkZWdyYWRlZC4iOworICAg
IH0KKyAgfQorCisgIGlmICghdXNpbmdfc2htKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKQor
ICAgICAgICA8PCAiTm90IHVzaW5nIHNoYXJlZCBtZW1vcnkuIFBlcmZvcm1hbmNlIG1heSBiZSBk
ZWdyYWRlZC4iOworICAgIFJlbGVhc2VTaGFyZWRNZW1vcnlTZWdtZW50KCk7CisgICAgcmV0dXJu
OworICB9CisKKyAgaWYgKGhhdmVfcGl4bWFwcykKKyAgICBoYXZlX3BpeG1hcHMgPSBJbml0UGl4
bWFwcyhkZWZhdWx0X2RlcHRoKTsKKworICBzaG1jdGwoc2htX3NlZ21lbnRfaW5mb18tPnNobWlk
LCBJUENfUk1JRCwgMCk7CisgIHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCA9IC0xOworCisgIFJU
Q19MT0coTFNfVkVSQk9TRSkgPDwgIlVzaW5nIFggc2hhcmVkIG1lbW9yeSBleHRlbnNpb24gdiIg
PDwgbWFqb3IgPDwgIi4iCisgICAgICAgICAgICAgICAgICAgICAgPDwgbWlub3IgPDwgIiB3aXRo
IiA8PCAoaGF2ZV9waXhtYXBzID8gIiIgOiAib3V0IikKKyAgICAgICAgICAgICAgICAgICAgICA8
PCAiIHBpeG1hcHMuIjsKK30KKworYm9vbCBYU2VydmVyUGl4ZWxCdWZmZXI6OkluaXRQaXhtYXBz
KGludCBkZXB0aCkgeworICBpZiAoWFNobVBpeG1hcEZvcm1hdChkaXNwbGF5XykgIT0gWlBpeG1h
cCkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgeworICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChk
aXNwbGF5Xyk7CisgICAgc2htX3BpeG1hcF8gPSBYU2htQ3JlYXRlUGl4bWFwKAorICAgICAgICBk
aXNwbGF5Xywgd2luZG93Xywgc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIsIHNobV9zZWdtZW50
X2luZm9fLAorICAgICAgICB3aW5kb3dfcmVjdF8ud2lkdGgoKSwgd2luZG93X3JlY3RfLmhlaWdo
dCgpLCBkZXB0aCk7CisgICAgWFN5bmMoZGlzcGxheV8sIEZhbHNlKTsKKyAgICBpZiAoZXJyb3Jf
dHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgeworICAgICAgLy8gfHNobV9waXht
YXBffCBpcyBub3Qgbm90IHZhbGlkIGJlY2F1c2UgdGhlIHJlcXVlc3Qgd2FzIG5vdCBwcm9jZXNz
ZWQKKyAgICAgIC8vIGJ5IHRoZSBYIFNlcnZlciwgc28gemVybyBpdC4KKyAgICAgIHNobV9waXht
YXBfID0gMDsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKworICB7CisgICAgWEVy
cm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXlfKTsKKyAgICBYR0NWYWx1ZXMgc2htX2djX3ZhbHVl
czsKKyAgICBzaG1fZ2NfdmFsdWVzLnN1YndpbmRvd19tb2RlID0gSW5jbHVkZUluZmVyaW9yczsK
KyAgICBzaG1fZ2NfdmFsdWVzLmdyYXBoaWNzX2V4cG9zdXJlcyA9IEZhbHNlOworICAgIHNobV9n
Y18gPSBYQ3JlYXRlR0MoZGlzcGxheV8sIHdpbmRvd18sCisgICAgICAgICAgICAgICAgICAgICAg
ICBHQ1N1YndpbmRvd01vZGUgfCBHQ0dyYXBoaWNzRXhwb3N1cmVzLCAmc2htX2djX3ZhbHVlcyk7
CisgICAgWFN5bmMoZGlzcGxheV8sIEZhbHNlKTsKKyAgICBpZiAoZXJyb3JfdHJhcC5HZXRMYXN0
RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgeworICAgICAgWEZyZWVQaXhtYXAoZGlzcGxheV8sIHNo
bV9waXhtYXBfKTsKKyAgICAgIHNobV9waXhtYXBfID0gMDsKKyAgICAgIHNobV9nY18gPSAwOyAg
Ly8gU2VlIHNobV9waXhtYXBfIGNvbW1lbnQgYWJvdmUuCisgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgWFNlcnZlclBpeGVsQnVmZmVy
OjpJc1dpbmRvd1ZhbGlkKCkgY29uc3QgeworICBYV2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVz
OworICB7CisgICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXlfKTsKKyAgICBpZiAoIVhH
ZXRXaW5kb3dBdHRyaWJ1dGVzKGRpc3BsYXlfLCB3aW5kb3dfLCAmYXR0cmlidXRlcykgfHwKKyAg
ICAgICAgZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgeworICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBYU2Vy
dmVyUGl4ZWxCdWZmZXI6OlN5bmNocm9uaXplKCkgeworICBpZiAoc2htX3NlZ21lbnRfaW5mb18g
JiYgIXNobV9waXhtYXBfKSB7CisgICAgLy8gWFNobUdldEltYWdlIGNhbiBmYWlsIGlmIHRoZSBk
aXNwbGF5IGlzIGJlaW5nIHJlY29uZmlndXJlZC4KKyAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAo
ZGlzcGxheV8pOworICAgIC8vIFhTaG1HZXRJbWFnZSBmYWlscyBpZiB0aGUgd2luZG93IGlzIHBh
cnRpYWxseSBvdXQgb2Ygc2NyZWVuLgorICAgIHhzaG1fZ2V0X2ltYWdlX3N1Y2NlZWRlZF8gPQor
ICAgICAgICBYU2htR2V0SW1hZ2UoZGlzcGxheV8sIHdpbmRvd18sIHhfc2htX2ltYWdlXywgMCwg
MCwgQWxsUGxhbmVzKTsKKyAgfQorfQorCitib29sIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6Q2FwdHVy
ZVJlY3QoY29uc3QgRGVza3RvcFJlY3QmIHJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGVza3RvcEZyYW1lKiBmcmFtZSkgeworICBSVENfRENIRUNLX0xFKHJlY3Qu
cmlnaHQoKSwgd2luZG93X3JlY3RfLndpZHRoKCkpOworICBSVENfRENIRUNLX0xFKHJlY3QuYm90
dG9tKCksIHdpbmRvd19yZWN0Xy5oZWlnaHQoKSk7CisKKyAgWEltYWdlKiBpbWFnZTsKKyAgdWlu
dDhfdCogZGF0YTsKKworICBpZiAoc2htX3NlZ21lbnRfaW5mb18gJiYgKHNobV9waXhtYXBfIHx8
IHhzaG1fZ2V0X2ltYWdlX3N1Y2NlZWRlZF8pKSB7CisgICAgaWYgKHNobV9waXhtYXBfKSB7Cisg
ICAgICBYQ29weUFyZWEoZGlzcGxheV8sIHdpbmRvd18sIHNobV9waXhtYXBfLCBzaG1fZ2NfLCBy
ZWN0LmxlZnQoKSwKKyAgICAgICAgICAgICAgICByZWN0LnRvcCgpLCByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCksIHJlY3QubGVmdCgpLAorICAgICAgICAgICAgICAgIHJlY3QudG9wKCkpOwor
ICAgICAgWFN5bmMoZGlzcGxheV8sIEZhbHNlKTsKKyAgICB9CisKKyAgICBpbWFnZSA9IHhfc2ht
X2ltYWdlXzsKKyAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW1hZ2UtPmRh
dGEpICsKKyAgICAgICAgICAgcmVjdC50b3AoKSAqIGltYWdlLT5ieXRlc19wZXJfbGluZSArCisg
ICAgICAgICAgIHJlY3QubGVmdCgpICogaW1hZ2UtPmJpdHNfcGVyX3BpeGVsIC8gODsKKworICB9
IGVsc2UgeworICAgIGlmICh4X2ltYWdlXykKKyAgICAgIFhEZXN0cm95SW1hZ2UoeF9pbWFnZV8p
OworICAgIHhfaW1hZ2VfID0gWEdldEltYWdlKGRpc3BsYXlfLCB3aW5kb3dfLCByZWN0LmxlZnQo
KSwgcmVjdC50b3AoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCksIEFsbFBsYW5lcywgWlBpeG1hcCk7CisgICAgaWYgKCF4X2ltYWdlXykKKyAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGltYWdlID0geF9pbWFnZV87CisgICAgZGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGltYWdlLT5kYXRhKTsKKyAgfQorCisgIGlmIChJc1hJ
bWFnZVJHQkZvcm1hdChpbWFnZSkpIHsKKyAgICBGYXN0QmxpdChpbWFnZSwgZGF0YSwgcmVjdCwg
ZnJhbWUpOworICB9IGVsc2UgeworICAgIFNsb3dCbGl0KGltYWdlLCBkYXRhLCByZWN0LCBmcmFt
ZSk7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9saW51eC94X3NlcnZlcl9waXhlbF9idWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTM5OGRhYzk5
NjgwMTY5ODFmM2UzZmVhNTdhM2U4NmU1YmQ0OWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKy8vIERvbid0IGluY2x1ZGUgdGhpcyBmaWxlIGluIGFueSAuaCBm
aWxlcyBiZWNhdXNlIGl0IHB1bGxzIGluIHNvbWUgWCBoZWFkZXJzLgorCisjaWZuZGVmIE1PRFVM
RVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1hfU0VSVkVSX1BJWEVMX0JVRkZFUl9IXworI2RlZmlu
ZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9YX1NFUlZFUl9QSVhFTF9CVUZGRVJfSF8K
KworI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hTaG0u
aD4KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0cnku
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisKK25hbWVzcGFjZSB3
ZWJydGMgeworCitjbGFzcyBEZXNrdG9wRnJhbWU7CisKKy8vIEEgY2xhc3MgdG8gYWxsb3cgdGhl
IFggc2VydmVyJ3MgcGl4ZWwgYnVmZmVyIHRvIGJlIGFjY2Vzc2VkIGFzIGVmZmljaWVudGx5Cisv
LyBhcyBwb3NzaWJsZS4KK2NsYXNzIFhTZXJ2ZXJQaXhlbEJ1ZmZlciB7CisgcHVibGljOgorICBY
U2VydmVyUGl4ZWxCdWZmZXIoKTsKKyAgflhTZXJ2ZXJQaXhlbEJ1ZmZlcigpOworCisgIHZvaWQg
UmVsZWFzZSgpOworCisgIC8vIEFsbG9jYXRlIChvciByZWFsbG9jYXRlKSB0aGUgcGl4ZWwgYnVm
ZmVyIGZvciB8d2luZG93fC4gUmV0dXJucyBmYWxzZSBpbgorICAvLyBjYXNlIG9mIGFuIGVycm9y
IChlLmcuIHdpbmRvdyBkb2Vzbid0IGV4aXN0KS4KKyAgYm9vbCBJbml0KERpc3BsYXkqIGRpc3Bs
YXksIFdpbmRvdyB3aW5kb3cpOworCisgIGJvb2wgaXNfaW5pdGlhbGl6ZWQoKSB7IHJldHVybiB3
aW5kb3dfICE9IDA7IH0KKworICAvLyBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cgdGhl
IGJ1ZmZlciB3YXMgaW5pdGlhbGl6ZWQgZm9yLgorICBEZXNrdG9wU2l6ZSB3aW5kb3dfc2l6ZSgp
IHsgcmV0dXJuIHdpbmRvd19yZWN0Xy5zaXplKCk7IH0KKworICAvLyBSZXR1cm5zIHRoZSByZWN0
YW5nbGUgb2YgdGhlIHdpbmRvdyB0aGUgYnVmZmVyIHdhcyBpbml0aWFsaXplZCBmb3IuCisgIGNv
bnN0IERlc2t0b3BSZWN0JiB3aW5kb3dfcmVjdCgpIHsgcmV0dXJuIHdpbmRvd19yZWN0XzsgfQor
CisgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGNhbiBiZSBmb3VuZC4KKyAgYm9vbCBJ
c1dpbmRvd1ZhbGlkKCkgY29uc3Q7CisKKyAgLy8gSWYgc2hhcmVkIG1lbW9yeSBpcyBiZWluZyB1
c2VkIHdpdGhvdXQgcGl4bWFwcywgc3luY2hyb25pemUgdGhpcyBwaXhlbAorICAvLyBidWZmZXIg
d2l0aCB0aGUgcm9vdCB3aW5kb3cgY29udGVudHMgKG90aGVyd2lzZSwgdGhpcyBpcyBhIG5vLW9w
KS4KKyAgLy8gVGhpcyBpcyB0byBhdm9pZCBkb2luZyBhIGZ1bGwtc2NyZWVuIGNhcHR1cmUgZm9y
IGVhY2ggaW5kaXZpZHVhbAorICAvLyByZWN0YW5nbGUgaW4gdGhlIGNhcHR1cmUgbGlzdCwgd2hl
biBpdCBvbmx5IG5lZWRzIHRvIGJlIGRvbmUgb25jZSBhdCB0aGUKKyAgLy8gYmVnaW5uaW5nLgor
ICB2b2lkIFN5bmNocm9uaXplKCk7CisKKyAgLy8gQ2FwdHVyZSB0aGUgc3BlY2lmaWVkIHJlY3Rh
bmdsZSBhbmQgc3RvcmVzIGl0IGluIHRoZSB8ZnJhbWV8LiBJbiB0aGUgY2FzZQorICAvLyB3aGVy
ZSB0aGUgZnVsbC1zY3JlZW4gZGF0YSBpcyBjYXB0dXJlZCBieSBTeW5jaHJvbml6ZSgpLCB0aGlz
IHNpbXBseQorICAvLyByZXR1cm5zIHRoZSBwb2ludGVyIHdpdGhvdXQgZG9pbmcgYW55IG1vcmUg
d29yay4gVGhlIGNhbGxlciBtdXN0IGVuc3VyZQorICAvLyB0aGF0IHxyZWN0fCBpcyBub3QgbGFy
Z2VyIHRoYW4gd2luZG93X3NpemUoKS4KKyAgYm9vbCBDYXB0dXJlUmVjdChjb25zdCBEZXNrdG9w
UmVjdCYgcmVjdCwgRGVza3RvcEZyYW1lKiBmcmFtZSk7CisKKyBwcml2YXRlOgorICB2b2lkIFJl
bGVhc2VTaGFyZWRNZW1vcnlTZWdtZW50KCk7CisKKyAgdm9pZCBJbml0U2htKGNvbnN0IFhXaW5k
b3dBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKTsKKyAgYm9vbCBJbml0UGl4bWFwcyhpbnQgZGVwdGgp
OworCisgIERpc3BsYXkqIGRpc3BsYXlfID0gbnVsbHB0cjsKKyAgV2luZG93IHdpbmRvd18gPSAw
OworICBEZXNrdG9wUmVjdCB3aW5kb3dfcmVjdF87CisgIFhJbWFnZSogeF9pbWFnZV8gPSBudWxs
cHRyOworICBYU2htU2VnbWVudEluZm8qIHNobV9zZWdtZW50X2luZm9fID0gbnVsbHB0cjsKKyAg
WEltYWdlKiB4X3NobV9pbWFnZV8gPSBudWxscHRyOworICBQaXhtYXAgc2htX3BpeG1hcF8gPSAw
OworICBHQyBzaG1fZ2NfID0gbnVsbHB0cjsKKyAgYm9vbCB4c2htX2dldF9pbWFnZV9zdWNjZWVk
ZWRfID0gZmFsc2U7CisKKyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihYU2VydmVyUGl4
ZWxCdWZmZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1P
RFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1hfU0VSVkVSX1BJWEVMX0JVRkZFUl9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbWFjL2Rlc2t0b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvbWFjL2Rlc2t0b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmNjCmluZGV4IGQ0MzY0
YmVkYzJiZTVlM2Q2ZmRjYjU1ZGIzZmE3M2UxYjI0OTcxYWEuLjlhMzJmNjM4ZDhmZGI5ZjNhYmMx
ZWM0MzQ0MjkyODAyMTQxNmI2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21hYy9kZXNrdG9wX2Nv
bmZpZ3VyYXRpb25fbW9uaXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tYWMvZGVza3RvcF9jb25maWd1
cmF0aW9uX21vbml0b3IuY2MKQEAgLTE3LDE5ICsxNywxMiBAQAogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIAotLy8gVGhlIGFtb3VudCBvZiB0aW1lIGFsbG93ZWQgZm9yIGRpc3BsYXlzIHRvIHJlY29u
ZmlndXJlLgotc3RhdGljIGNvbnN0IGludDY0X3Qga0Rpc3BsYXlDb25maWd1cmF0aW9uRXZlbnRU
aW1lb3V0TXMgPSAxMCAqIDEwMDA7Ci0KLURlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcjo6RGVz
a3RvcENvbmZpZ3VyYXRpb25Nb25pdG9yKCkKLSAgICA6IGRpc3BsYXlfY29uZmlndXJhdGlvbl9j
YXB0dXJlX2V2ZW50XyhFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSB7CitEZXNrdG9wQ29uZmlndXJh
dGlvbk1vbml0b3I6OkRlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcigpIHsKICAgQ0dFcnJvciBl
cnIgPSBDR0Rpc3BsYXlSZWdpc3RlclJlY29uZmlndXJhdGlvbkNhbGxiYWNrKAogICAgICAgRGVz
a3RvcENvbmZpZ3VyYXRpb25Nb25pdG9yOjpEaXNwbGF5c1JlY29uZmlndXJlZENhbGxiYWNrLCB0
aGlzKTsKLSAgaWYgKGVyciAhPSBrQ0dFcnJvclN1Y2Nlc3MpIHsKKyAgaWYgKGVyciAhPSBrQ0dF
cnJvclN1Y2Nlc3MpCiAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNHRGlzcGxheVJlZ2lzdGVy
UmVjb25maWd1cmF0aW9uQ2FsbGJhY2sgIiA8PCBlcnI7Ci0gICAgYWJvcnQoKTsKLSAgfQotICBk
aXNwbGF5X2NvbmZpZ3VyYXRpb25fY2FwdHVyZV9ldmVudF8tPlNldCgpOwotCisgIHJ0Yzo6Q3Jp
dFNjb3BlIGNzKCZkZXNrdG9wX2NvbmZpZ3VyYXRpb25fbG9ja18pOwogICBkZXNrdG9wX2NvbmZp
Z3VyYXRpb25fID0gTWFjRGVza3RvcENvbmZpZ3VyYXRpb246OkdldEN1cnJlbnQoCiAgICAgICBN
YWNEZXNrdG9wQ29uZmlndXJhdGlvbjo6VG9wTGVmdE9yaWdpbik7CiB9CkBAIC00MSwxOSArMzQs
MTMgQEAgRGVza3RvcENvbmZpZ3VyYXRpb25Nb25pdG9yOjp+RGVza3RvcENvbmZpZ3VyYXRpb25N
b25pdG9yKCkgewogICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDR0Rpc3BsYXlSZW1vdmVSZWNv
bmZpZ3VyYXRpb25DYWxsYmFjayAiIDw8IGVycjsKIH0KIAotdm9pZCBEZXNrdG9wQ29uZmlndXJh
dGlvbk1vbml0b3I6OkxvY2soKSB7Ci0gIGlmICghZGlzcGxheV9jb25maWd1cmF0aW9uX2NhcHR1
cmVfZXZlbnRfLT5XYWl0KAotICAgICAgICAgIGtEaXNwbGF5Q29uZmlndXJhdGlvbkV2ZW50VGlt
ZW91dE1zKSkgewotICAgIFJUQ19MT0dfRihMU19FUlJPUikgPDwgIkV2ZW50IHdhaXQgdGltZWQg
b3V0LiI7Ci0gICAgYWJvcnQoKTsKLSAgfQotfQotCi12b2lkIERlc2t0b3BDb25maWd1cmF0aW9u
TW9uaXRvcjo6VW5sb2NrKCkgewotICBkaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2FwdHVyZV9ldmVu
dF8tPlNldCgpOworTWFjRGVza3RvcENvbmZpZ3VyYXRpb24gRGVza3RvcENvbmZpZ3VyYXRpb25N
b25pdG9yOjpkZXNrdG9wX2NvbmZpZ3VyYXRpb24oKSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQo
JmRlc2t0b3BfY29uZmlndXJhdGlvbl9sb2NrXyk7CisgIHJldHVybiBkZXNrdG9wX2NvbmZpZ3Vy
YXRpb25fOwogfQogCiAvLyBzdGF0aWMKKy8vIFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgb24g
YW55IHN5c3RlbSB0aHJlYWQuCiB2b2lkIERlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcjo6RGlz
cGxheXNSZWNvbmZpZ3VyZWRDYWxsYmFjaygKICAgICBDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5
LAogICAgIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyBmbGFncywKQEAgLTcyLDI0ICs1OSwx
NSBAQCB2b2lkIERlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcjo6RGlzcGxheXNSZWNvbmZpZ3Vy
ZWQoCiAgICAgICAgICAgICAgICAgICAgPDwgZmxhZ3M7CiAKICAgaWYgKGZsYWdzICYga0NHRGlz
cGxheUJlZ2luQ29uZmlndXJhdGlvbkZsYWcpIHsKLSAgICBpZiAocmVjb25maWd1cmluZ19kaXNw
bGF5c18uZW1wdHkoKSkgewotICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgZGlzcGxheSB0
byBzdGFydCByZWNvbmZpZ3VyaW5nIHRoZW4gd2FpdCBvbgotICAgICAgLy8gfGRpc3BsYXlfY29u
ZmlndXJhdGlvbl9jYXB0dXJlX2V2ZW50X3wgdG8gYmxvY2sgdGhlIGNhcHR1cmUgdGhyZWFkCi0g
ICAgICAvLyBmcm9tIGFjY2Vzc2luZyBkaXNwbGF5IG1lbW9yeSB1bnRpbCB0aGUgcmVjb25maWd1
cmF0aW9uIGNvbXBsZXRlcy4KLSAgICAgIGlmICghZGlzcGxheV9jb25maWd1cmF0aW9uX2NhcHR1
cmVfZXZlbnRfLT5XYWl0KAotICAgICAgICAgICAgICBrRGlzcGxheUNvbmZpZ3VyYXRpb25FdmVu
dFRpbWVvdXRNcykpIHsKLSAgICAgICAgUlRDX0xPR19GKExTX0VSUk9SKSA8PCAiRXZlbnQgd2Fp
dCB0aW1lZCBvdXQuIjsKLSAgICAgICAgYWJvcnQoKTsKLSAgICAgIH0KLSAgICB9CiAgICAgcmVj
b25maWd1cmluZ19kaXNwbGF5c18uaW5zZXJ0KGRpc3BsYXkpOwotICB9IGVsc2UgewotICAgIHJl
Y29uZmlndXJpbmdfZGlzcGxheXNfLmVyYXNlKGRpc3BsYXkpOwotICAgIGlmIChyZWNvbmZpZ3Vy
aW5nX2Rpc3BsYXlzXy5lbXB0eSgpKSB7Ci0gICAgICBkZXNrdG9wX2NvbmZpZ3VyYXRpb25fID0g
TWFjRGVza3RvcENvbmZpZ3VyYXRpb246OkdldEN1cnJlbnQoCi0gICAgICAgICAgTWFjRGVza3Rv
cENvbmZpZ3VyYXRpb246OlRvcExlZnRPcmlnaW4pOwotICAgICAgZGlzcGxheV9jb25maWd1cmF0
aW9uX2NhcHR1cmVfZXZlbnRfLT5TZXQoKTsKLSAgICB9CisgICAgcmV0dXJuOworICB9CisKKyAg
cmVjb25maWd1cmluZ19kaXNwbGF5c18uZXJhc2UoZGlzcGxheSk7CisgIGlmIChyZWNvbmZpZ3Vy
aW5nX2Rpc3BsYXlzXy5lbXB0eSgpKSB7CisgICAgcnRjOjpDcml0U2NvcGUgY3MoJmRlc2t0b3Bf
Y29uZmlndXJhdGlvbl9sb2NrXyk7CisgICAgZGVza3RvcF9jb25maWd1cmF0aW9uXyA9IE1hY0Rl
c2t0b3BDb25maWd1cmF0aW9uOjpHZXRDdXJyZW50KAorICAgICAgICBNYWNEZXNrdG9wQ29uZmln
dXJhdGlvbjo6VG9wTGVmdE9yaWdpbik7CiAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
bWFjL2Rlc2t0b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tYWMvZGVza3Rv
cF9jb25maWd1cmF0aW9uX21vbml0b3IuaAppbmRleCA1MjE1ZTU0OTZhZGU4ZDJiMDEyY2IwYzU4
MmY5NTViYjRkMDJiNjM0Li5jYmY1ODBiMjM1MzAxZjZhMzdmZDM4OWVmYWQ5ZDc1YTFkYjc5NTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tYWMvZGVza3RvcF9jb25maWd1cmF0aW9uX21vbml0b3Iu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9tYWMvZGVza3RvcF9jb25maWd1cmF0aW9uX21vbml0b3IuaApAQCAt
MTksMjUgKzE5LDE3IEBACiAjaW5jbHVkZSAiYXBpL3JlZmNvdW50ZWRiYXNlLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbWFjL2Rlc2t0b3BfY29uZmlndXJhdGlvbi5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9jcml0aWNhbHNlY3Rpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIEV2ZW50
V3JhcHBlcjsKLQogLy8gVGhlIGNsYXNzIHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBzeW5jaHJvbml6
ZSBjYXB0dXJpbmcgYW5kIGRpc3BsYXkKIC8vIHJlY29uZmlndXJpbmcgYWNyb3NzIHRocmVhZHMs
IGFuZCB0aGUgdXAtdG8tZGF0ZSBNYWNEZXNrdG9wQ29uZmlndXJhdGlvbi4KIGNsYXNzIERlc2t0
b3BDb25maWd1cmF0aW9uTW9uaXRvciA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRCYXNlIHsKICBw
dWJsaWM6CiAgIERlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcigpOwotICAvLyBBY3F1aXJlcyBh
IGxvY2sgb24gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KLSAgdm9pZCBMb2NrKCk7Ci0gIC8v
IFJlbGVhc2VzIHRoZSBsb2NrIHByZXZpb3VzbHkgYWNxdWlyZWQuCi0gIHZvaWQgVW5sb2NrKCk7
Ci0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgZGVza3RvcCBjb25maWd1cmF0aW9uLiBTaG91bGQg
b25seSBiZSBjYWxsZWQgd2hlbiB0aGUKLSAgLy8gbG9jayBoYXMgYmVlbiBhY3F1aXJlZC4KLSAg
Y29uc3QgTWFjRGVza3RvcENvbmZpZ3VyYXRpb24mIGRlc2t0b3BfY29uZmlndXJhdGlvbigpIHsK
LSAgICByZXR1cm4gZGVza3RvcF9jb25maWd1cmF0aW9uXzsKLSAgfQorICAvLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IGRlc2t0b3AgY29uZmlndXJhdGlvbi4KKyAgTWFjRGVza3RvcENvbmZpZ3VyYXRp
b24gZGVza3RvcF9jb25maWd1cmF0aW9uKCk7CiAKICBwcm90ZWN0ZWQ6CiAgIH5EZXNrdG9wQ29u
ZmlndXJhdGlvbk1vbml0b3IoKSBvdmVycmlkZTsKQEAgLTQ5LDkgKzQxLDEwIEBAIGNsYXNzIERl
c2t0b3BDb25maWd1cmF0aW9uTW9uaXRvciA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRCYXNlIHsK
ICAgdm9pZCBEaXNwbGF5c1JlY29uZmlndXJlZChDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyBm
bGFncyk7CiAKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gZGVza3RvcF9jb25maWd1cmF0aW9uX2xv
Y2tfOworICBNYWNEZXNrdG9wQ29uZmlndXJhdGlvbiBkZXNrdG9wX2NvbmZpZ3VyYXRpb25fCisg
ICAgICBSVENfR1VBUkRFRF9CWSgmZGVza3RvcF9jb25maWd1cmF0aW9uX2xvY2tfKTsKICAgc3Rk
OjpzZXQ8Q0dEaXJlY3REaXNwbGF5SUQ+IHJlY29uZmlndXJpbmdfZGlzcGxheXNfOwotICBNYWNE
ZXNrdG9wQ29uZmlndXJhdGlvbiBkZXNrdG9wX2NvbmZpZ3VyYXRpb25fOwotICBzdGQ6OnVuaXF1
ZV9wdHI8RXZlbnRXcmFwcGVyPiBkaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2FwdHVyZV9ldmVudF87
CiAKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihEZXNrdG9wQ29uZmlndXJhdGlvbk1v
bml0b3IpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21hYy9zY3JlZW5fY2FwdHVyZXJfbWFj
Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvbWFjL3NjcmVlbl9jYXB0dXJlcl9tYWMubW0KaW5kZXggMGQ0ZmEwNzJi
NWY2NDMzYWYwMDgyMmUyYTM3NjM3OGY1MWY0M2YyOC4uNTQyZDFjNWY0M2ZlNzRmYTgwZDVmYTUy
ZjM5ZTcwNGQ5YTQzODc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbWFjL3NjcmVlbl9jYXB0dXJl
cl9tYWMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbWFjL3NjcmVlbl9jYXB0dXJlcl9tYWMubW0KQEAgLTE2
NywxMSArMTY3LDcgQEAgU2NyZWVuQ2FwdHVyZXJNYWM6On5TY3JlZW5DYXB0dXJlck1hYygpIHsK
IAogYm9vbCBTY3JlZW5DYXB0dXJlck1hYzo6SW5pdCgpIHsKICAgVFJBQ0VfRVZFTlQwKCJ3ZWJy
dGMiLCAiU2NyZWVuQ2FwdHVyZXJNYWM6OkluaXQiKTsKLQotICBkZXNrdG9wX2NvbmZpZ19tb25p
dG9yXy0+TG9jaygpOwogICBkZXNrdG9wX2NvbmZpZ18gPSBkZXNrdG9wX2NvbmZpZ19tb25pdG9y
Xy0+ZGVza3RvcF9jb25maWd1cmF0aW9uKCk7Ci0gIGRlc2t0b3BfY29uZmlnX21vbml0b3JfLT5V
bmxvY2soKTsKLQogICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjA3LDcgKzIwMyw2IEBAIHZvaWQg
U2NyZWVuQ2FwdHVyZXJNYWM6OkNhcHR1cmVGcmFtZSgpIHsKICAgcXVldWVfLk1vdmVUb05leHRG
cmFtZSgpOwogICBSVENfRENIRUNLKCFxdWV1ZV8uY3VycmVudF9mcmFtZSgpIHx8ICFxdWV1ZV8u
Y3VycmVudF9mcmFtZSgpLT5Jc1NoYXJlZCgpKTsKIAotICBkZXNrdG9wX2NvbmZpZ19tb25pdG9y
Xy0+TG9jaygpOwogICBNYWNEZXNrdG9wQ29uZmlndXJhdGlvbiBuZXdfY29uZmlnID0gZGVza3Rv
cF9jb25maWdfbW9uaXRvcl8tPmRlc2t0b3BfY29uZmlndXJhdGlvbigpOwogICBpZiAoIWRlc2t0
b3BfY29uZmlnXy5FcXVhbHMobmV3X2NvbmZpZykpIHsKICAgICBkZXNrdG9wX2NvbmZpZ18gPSBu
ZXdfY29uZmlnOwpAQCAtMjM0LDcgKzIyOSw2IEBAIHZvaWQgU2NyZWVuQ2FwdHVyZXJNYWM6OkNh
cHR1cmVGcmFtZSgpIHsKICAgRGVza3RvcEZyYW1lKiBjdXJyZW50X2ZyYW1lID0gcXVldWVfLmN1
cnJlbnRfZnJhbWUoKTsKIAogICBpZiAoIUNnQmxpdCgqY3VycmVudF9mcmFtZSwgcmVnaW9uKSkg
ewotICAgIGRlc2t0b3BfY29uZmlnX21vbml0b3JfLT5VbmxvY2soKTsKICAgICBjYWxsYmFja18t
Pk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVOVCwgbnVsbHB0cik7CiAgICAg
cmV0dXJuOwogICB9CkBAIC0yNTYsMTAgKzI1MCw2IEBAIHZvaWQgU2NyZWVuQ2FwdHVyZXJNYWM6
OkNhcHR1cmVGcmFtZSgpIHsKIAogICBoZWxwZXJfLnNldF9zaXplX21vc3RfcmVjZW50KG5ld19m
cmFtZS0+c2l6ZSgpKTsKIAotICAvLyBTaWduYWwgdGhhdCB3ZSBhcmUgZG9uZSBjYXB0dXJpbmcg
ZGF0YSBmcm9tIHRoZSBkaXNwbGF5IGZyYW1lYnVmZmVyLAotICAvLyBhbmQgYWNjZXNzaW5nIGRp
c3BsYXkgc3RydWN0dXJlcy4KLSAgZGVza3RvcF9jb25maWdfbW9uaXRvcl8tPlVubG9jaygpOwot
CiAgIG5ld19mcmFtZS0+c2V0X2NhcHR1cmVfdGltZV9tcygocnRjOjpUaW1lTmFub3MoKSAtIGNh
cHR1cmVfc3RhcnRfdGltZV9uYW5vcykgLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnRjOjprTnVtTmFub3NlY3NQZXJNaWxsaXNlYyk7CiAgIGNhbGxiYWNrXy0+T25DYXB0dXJl
UmVzdWx0KFJlc3VsdDo6U1VDQ0VTUywgc3RkOjptb3ZlKG5ld19mcmFtZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvbW91c2VfY3Vyc29yX21vbml0b3JfbGludXguY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3Vz
ZV9jdXJzb3JfbW9uaXRvcl9saW51eC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWYzNDRlZjQwOGE2OTYyNzA2
YzFlOTQwODRkMjA3ZGFhNjg3Y2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2Vf
Y3Vyc29yX21vbml0b3JfbGludXguY2MKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqICBDb3B5cmln
aHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25p
dG9yLmgiCisKKyNpZiBkZWZpbmVkKFVTRV9YMTEpCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvbGludXgvbW91c2VfY3Vyc29yX21vbml0b3JfeDExLmgiCisjZW5kaWYgIC8vIGRl
ZmluZWQoVVNFX1gxMSkKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIHN0YXRpYworTW91c2VD
dXJzb3JNb25pdG9yKiBNb3VzZUN1cnNvck1vbml0b3I6OkNyZWF0ZUZvcldpbmRvdygKKyAgICBj
b25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsCisgICAgV2luZG93SWQgd2luZG93
KSB7CisjaWYgZGVmaW5lZChVU0VfWDExKQorICByZXR1cm4gTW91c2VDdXJzb3JNb25pdG9yWDEx
OjpDcmVhdGVGb3JXaW5kb3cob3B0aW9ucywgd2luZG93KTsKKyNlbHNlCisgIHJldHVybiBudWxs
cHRyOworI2VuZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCit9CisKKy8vIHN0YXRpYworTW91c2VD
dXJzb3JNb25pdG9yKiBNb3VzZUN1cnNvck1vbml0b3I6OkNyZWF0ZUZvclNjcmVlbigKKyAgICBj
b25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsCisgICAgU2NyZWVuSWQgc2NyZWVu
KSB7CisjaWYgZGVmaW5lZChVU0VfWDExKQorICByZXR1cm4gTW91c2VDdXJzb3JNb25pdG9yWDEx
OjpDcmVhdGVGb3JTY3JlZW4ob3B0aW9ucywgc2NyZWVuKTsKKyNlbHNlCisgIHJldHVybiBudWxs
cHRyOworI2VuZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCit9CisKKy8vIHN0YXRpYworc3RkOjp1
bmlxdWVfcHRyPE1vdXNlQ3Vyc29yTW9uaXRvcj4gTW91c2VDdXJzb3JNb25pdG9yOjpDcmVhdGUo
CisgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7CisjaWYgZGVmaW5l
ZChVU0VfWDExKQorICByZXR1cm4gTW91c2VDdXJzb3JNb25pdG9yWDExOjpDcmVhdGUob3B0aW9u
cyk7CisjZWxzZQorICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAgLy8gZGVmaW5lZChVU0VfWDEx
KQorfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3Vz
ZV9jdXJzb3JfbW9uaXRvcl9tYWMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3JfbW9uaXRvcl9t
YWMubW0KaW5kZXggZGU4ODc2NDM4ZjhhOTg2MGU5YjU0MGNlOWU4ZmRkMTY1Yzc4NWZiNy4uMzQw
MmE1ZmZiYmNiZTA0MGRkMTUzYmFmNGY0Y2RkY2JmYzZlMzk5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvbW91c2VfY3Vyc29yX21vbml0b3JfbWFjLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNv
cl9tb25pdG9yX21hYy5tbQpAQCAtMTE3LDEwICsxMTcsOCBAQCB2b2lkIE1vdXNlQ3Vyc29yTW9u
aXRvck1hYzo6Q2FwdHVyZSgpIHsKIAogICBEZXNrdG9wVmVjdG9yIHBvc2l0aW9uKGdjX3Bvc2l0
aW9uLngsIGdjX3Bvc2l0aW9uLnkpOwogCi0gIGNvbmZpZ3VyYXRpb25fbW9uaXRvcl8tPkxvY2so
KTsKICAgTWFjRGVza3RvcENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9CiAgICAgICBjb25m
aWd1cmF0aW9uX21vbml0b3JfLT5kZXNrdG9wX2NvbmZpZ3VyYXRpb24oKTsKLSAgY29uZmlndXJh
dGlvbl9tb25pdG9yXy0+VW5sb2NrKCk7CiAgIGZsb2F0IHNjYWxlID0gR2V0U2NhbGVGYWN0b3JB
dFBvc2l0aW9uKGNvbmZpZ3VyYXRpb24sIHBvc2l0aW9uKTsKIAogICBDYXB0dXJlSW1hZ2Uoc2Nh
bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2VfY3Vyc29yX21vbml0b3JfeDExLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvbW91c2VfY3Vyc29yX21vbml0b3JfeDExLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0MTc0OWJkMjg0MWJiNWY2YWFkYjI3NmJiNDI5ZTUwYTQ4NGI2YTRkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNl
X2N1cnNvcl9tb25pdG9yX3gxMS5jYworKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0v
KgotICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
LSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgIm1v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25pdG9yLmgiCi0KLSNpbmNsdWRl
IDxYMTEvWGxpYi5oPgotI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgotI2luY2x1ZGUgPFgxMS9leHRl
bnNpb25zL1hmaXhlcy5oPgotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVz
a3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9kZXNrdG9wX2NhcHR1cmVfdHlwZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9kZXNrdG9wX2ZyYW1lLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
bW91c2VfY3Vyc29yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hf
ZXJyb3JfdHJhcC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLQotbmFtZXNwYWNl
IHsKLQotLy8gV2luZG93Q2FwdHVyZXIgcmV0dXJucyB3aW5kb3cgSURzIG9mIFgxMSB3aW5kb3dz
IHdpdGggV01fU1RBVEUgYXR0cmlidXRlLgotLy8gVGhlc2Ugd2luZG93cyBtYXkgbm90IGJlIGlt
bWVkaWF0ZSBjaGlsZHJlbiBvZiB0aGUgcm9vdCB3aW5kb3csIGJlY2F1c2UKLS8vIHdpbmRvdyBt
YW5hZ2VycyBtYXkgcmUtcGFyZW50IHRoZW0gdG8gYWRkIGRlY29yYXRpb25zLiBIb3dldmVyLAot
Ly8gWFF1ZXJ5UG9pbnRlcigpIGV4cGVjdHMgdG8gYmUgcGFzc2VkIGNoaWxkcmVuIG9mIHRoZSBy
b290LiBUaGlzIGZ1bmN0aW9uCi0vLyBzZWFyY2hlcyB1cCB0aGUgbGlzdCBvZiB0aGUgd2luZG93
cyB0byBmaW5kIHRoZSByb290IGNoaWxkIHRoYXQgY29ycmVzcG9uZHMKLS8vIHRvIHx3aW5kb3d8
LgotV2luZG93IEdldFRvcExldmVsV2luZG93KERpc3BsYXkqIGRpc3BsYXksIFdpbmRvdyB3aW5k
b3cpIHsKLSAgd2hpbGUgKHRydWUpIHsKLSAgICAvLyBJZiB0aGUgd2luZG93IGlzIGluIFdpdGhk
cmF3blN0YXRlIHRoZW4gbG9vayBhdCBhbGwgb2YgaXRzIGNoaWxkcmVuLgotICAgIDo6V2luZG93
IHJvb3QsIHBhcmVudDsKLSAgICA6OldpbmRvdyogY2hpbGRyZW47Ci0gICAgdW5zaWduZWQgaW50
IG51bV9jaGlsZHJlbjsKLSAgICBpZiAoIVhRdWVyeVRyZWUoZGlzcGxheSwgd2luZG93LCAmcm9v
dCwgJnBhcmVudCwgJmNoaWxkcmVuLAotICAgICAgICAgICAgICAgICAgICAmbnVtX2NoaWxkcmVu
KSkgewotICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBxdWVyeSBmb3IgY2hp
bGQgd2luZG93cyBhbHRob3VnaCB3aW5kb3ciCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAi
ZG9lcyBub3QgaGF2ZSBhIHZhbGlkIFdNX1NUQVRFLiI7Ci0gICAgICByZXR1cm4gTm9uZTsKLSAg
ICB9Ci0gICAgaWYgKGNoaWxkcmVuKQotICAgICAgWEZyZWUoY2hpbGRyZW4pOwotCi0gICAgaWYg
KHBhcmVudCA9PSByb290KQotICAgICAgYnJlYWs7Ci0KLSAgICB3aW5kb3cgPSBwYXJlbnQ7Ci0g
IH0KLQotICByZXR1cm4gd2luZG93OwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotbmFtZXNwYWNl
IHdlYnJ0YyB7Ci0KLWNsYXNzIE1vdXNlQ3Vyc29yTW9uaXRvclgxMSA6IHB1YmxpYyBNb3VzZUN1
cnNvck1vbml0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU2hhcmVk
WERpc3BsYXk6OlhFdmVudEhhbmRsZXIgewotIHB1YmxpYzoKLSAgTW91c2VDdXJzb3JNb25pdG9y
WDExKGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywgV2luZG93IHdpbmRvdyk7
Ci0gIH5Nb3VzZUN1cnNvck1vbml0b3JYMTEoKSBvdmVycmlkZTsKLQotICB2b2lkIEluaXQoQ2Fs
bGJhY2sqIGNhbGxiYWNrLCBNb2RlIG1vZGUpIG92ZXJyaWRlOwotICB2b2lkIENhcHR1cmUoKSBv
dmVycmlkZTsKLQotIHByaXZhdGU6Ci0gIC8vIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVy
IGludGVyZmFjZS4KLSAgYm9vbCBIYW5kbGVYRXZlbnQoY29uc3QgWEV2ZW50JiBldmVudCkgb3Zl
cnJpZGU7Ci0KLSAgRGlzcGxheSogZGlzcGxheSgpIHsgcmV0dXJuIHhfZGlzcGxheV8tPmRpc3Bs
YXkoKTsgfQotCi0gIC8vIENhcHR1cmVzIGN1cnJlbnQgY3Vyc29yIHNoYXBlIGFuZCBzdG9yZXMg
aXQgaW4gfGN1cnNvcl9zaGFwZV98LgotICB2b2lkIENhcHR1cmVDdXJzb3IoKTsKLQotICBydGM6
OnNjb3BlZF9yZWZwdHI8U2hhcmVkWERpc3BsYXk+IHhfZGlzcGxheV87Ci0gIENhbGxiYWNrKiBj
YWxsYmFja187Ci0gIE1vZGUgbW9kZV87Ci0gIFdpbmRvdyB3aW5kb3dfOwotCi0gIGJvb2wgaGF2
ZV94Zml4ZXNfOwotICBpbnQgeGZpeGVzX2V2ZW50X2Jhc2VfOwotICBpbnQgeGZpeGVzX2Vycm9y
X2Jhc2VfOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxNb3VzZUN1cnNvcj4gY3Vyc29yX3NoYXBlXzsK
LX07Ci0KLU1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6TW91c2VDdXJzb3JNb25pdG9yWDExKAotICAg
IGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywKLSAgICBXaW5kb3cgd2luZG93
KQotICAgIDogeF9kaXNwbGF5XyhvcHRpb25zLnhfZGlzcGxheSgpKSwKLSAgICAgIGNhbGxiYWNr
XyhOVUxMKSwKLSAgICAgIG1vZGVfKFNIQVBFX0FORF9QT1NJVElPTiksCi0gICAgICB3aW5kb3df
KHdpbmRvdyksCi0gICAgICBoYXZlX3hmaXhlc18oZmFsc2UpLAotICAgICAgeGZpeGVzX2V2ZW50
X2Jhc2VfKC0xKSwKLSAgICAgIHhmaXhlc19lcnJvcl9iYXNlXygtMSkgewotICAvLyBTZXQgYSBk
ZWZhdWx0IGluaXRpYWwgY3Vyc29yIHNoYXBlIGluIGNhc2UgWEZpeGVzIGlzIG5vdCBwcmVzZW50
LgotICBjb25zdCBpbnQga1NpemUgPSA1OwotICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1l
PiBkZWZhdWx0X2N1cnNvcigKLSAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShEZXNrdG9wU2l6
ZShrU2l6ZSwga1NpemUpKSk7Ci0gIGNvbnN0IHVpbnQ4X3QgcGl4ZWxzW2tTaXplICoga1NpemVd
ID0gewotICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhm
ZiwgMHhmZiwKLSAgICAgIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAs
IDB4ZmYsIDB4ZmYsCi0gICAgICAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwfTsKLSAgdWludDhfdCogcHRyID0gZGVmYXVsdF9jdXJzb3ItPmRhdGEoKTsKLSAgZm9yIChp
bnQgeSA9IDA7IHkgPCBrU2l6ZTsgKyt5KSB7Ci0gICAgZm9yIChpbnQgeCA9IDA7IHggPCBrU2l6
ZTsgKyt4KSB7Ci0gICAgICAqcHRyKysgPSBwaXhlbHNba1NpemUgKiB5ICsgeF07Ci0gICAgICAq
cHRyKysgPSBwaXhlbHNba1NpemUgKiB5ICsgeF07Ci0gICAgICAqcHRyKysgPSBwaXhlbHNba1Np
emUgKiB5ICsgeF07Ci0gICAgICAqcHRyKysgPSAweGZmOwotICAgIH0KLSAgfQotICBEZXNrdG9w
VmVjdG9yIGhvdHNwb3QoMiwgMik7Ci0gIGN1cnNvcl9zaGFwZV8ucmVzZXQobmV3IE1vdXNlQ3Vy
c29yKGRlZmF1bHRfY3Vyc29yLnJlbGVhc2UoKSwgaG90c3BvdCkpOwotfQotCi1Nb3VzZUN1cnNv
ck1vbml0b3JYMTE6On5Nb3VzZUN1cnNvck1vbml0b3JYMTEoKSB7Ci0gIGlmIChoYXZlX3hmaXhl
c18pIHsKLSAgICB4X2Rpc3BsYXlfLT5SZW1vdmVFdmVudEhhbmRsZXIoeGZpeGVzX2V2ZW50X2Jh
c2VfICsgWEZpeGVzQ3Vyc29yTm90aWZ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzKTsKLSAgfQotfQotCi12b2lkIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6SW5pdChD
YWxsYmFjayogY2FsbGJhY2ssIE1vZGUgbW9kZSkgewotICAvLyBJbml0IGNhbiBiZSBjYWxsZWQg
b25seSBvbmNlIHBlciBpbnN0YW5jZSBvZiBNb3VzZUN1cnNvck1vbml0b3IuCi0gIFJUQ19EQ0hF
Q0soIWNhbGxiYWNrXyk7Ci0gIFJUQ19EQ0hFQ0soY2FsbGJhY2spOwotCi0gIGNhbGxiYWNrXyA9
IGNhbGxiYWNrOwotICBtb2RlXyA9IG1vZGU7Ci0KLSAgaGF2ZV94Zml4ZXNfID0KLSAgICAgIFhG
aXhlc1F1ZXJ5RXh0ZW5zaW9uKGRpc3BsYXkoKSwgJnhmaXhlc19ldmVudF9iYXNlXywgJnhmaXhl
c19lcnJvcl9iYXNlXyk7Ci0KLSAgaWYgKGhhdmVfeGZpeGVzXykgewotICAgIC8vIFJlZ2lzdGVy
IGZvciBjaGFuZ2VzIHRvIHRoZSBjdXJzb3Igc2hhcGUuCi0gICAgWEZpeGVzU2VsZWN0Q3Vyc29y
SW5wdXQoZGlzcGxheSgpLCB3aW5kb3dfLCBYRml4ZXNEaXNwbGF5Q3Vyc29yTm90aWZ5TWFzayk7
Ci0gICAgeF9kaXNwbGF5Xy0+QWRkRXZlbnRIYW5kbGVyKHhmaXhlc19ldmVudF9iYXNlXyArIFhG
aXhlc0N1cnNvck5vdGlmeSwgdGhpcyk7Ci0KLSAgICBDYXB0dXJlQ3Vyc29yKCk7Ci0gIH0gZWxz
ZSB7Ci0gICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiWCBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBY
Rml4ZXMuIjsKLSAgfQotfQotCi12b2lkIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6Q2FwdHVyZSgp
IHsKLSAgUlRDX0RDSEVDSyhjYWxsYmFja18pOwotCi0gIC8vIFByb2Nlc3MgWDExIGV2ZW50cyBp
biBjYXNlIFhGaXhlcyBoYXMgc2VudCBjdXJzb3Igbm90aWZpY2F0aW9uLgotICB4X2Rpc3BsYXlf
LT5Qcm9jZXNzUGVuZGluZ1hFdmVudHMoKTsKLQotICAvLyBjdXJzb3Jfc2hhcGVffCBpcyBzZXQg
b25seSBpZiB3ZSB3ZXJlIG5vdGlmaWVkIG9mIGEgY3Vyc29yIHNoYXBlIGNoYW5nZS4KLSAgaWYg
KGN1cnNvcl9zaGFwZV8uZ2V0KCkpCi0gICAgY2FsbGJhY2tfLT5Pbk1vdXNlQ3Vyc29yKGN1cnNv
cl9zaGFwZV8ucmVsZWFzZSgpKTsKLQotICAvLyBHZXQgY3Vyc29yIHBvc2l0aW9uIGlmIG5lY2Vz
c2FyeS4KLSAgaWYgKG1vZGVfID09IFNIQVBFX0FORF9QT1NJVElPTikgewotICAgIGludCByb290
X3g7Ci0gICAgaW50IHJvb3RfeTsKLSAgICBpbnQgd2luX3g7Ci0gICAgaW50IHdpbl95OwotICAg
IFdpbmRvdyByb290X3dpbmRvdzsKLSAgICBXaW5kb3cgY2hpbGRfd2luZG93OwotICAgIHVuc2ln
bmVkIGludCBtYXNrOwotCi0gICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXkoKSk7Ci0g
ICAgQm9vbCByZXN1bHQgPSBYUXVlcnlQb2ludGVyKGRpc3BsYXkoKSwgd2luZG93XywgJnJvb3Rf
d2luZG93LCAmY2hpbGRfd2luZG93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
cm9vdF94LCAmcm9vdF95LCAmd2luX3gsICZ3aW5feSwgJm1hc2spOwotICAgIEN1cnNvclN0YXRl
IHN0YXRlOwotICAgIGlmICghcmVzdWx0IHx8IGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlz
YWJsZSgpICE9IDApIHsKLSAgICAgIHN0YXRlID0gT1VUU0lERTsKLSAgICB9IGVsc2UgewotICAg
ICAgLy8gSW4gc2NyZWVuIG1vZGUgKHdpbmRvd18gPT0gcm9vdF93aW5kb3cpIHRoZSBtb3VzZSBp
cyBhbHdheXMgaW5zaWRlLgotICAgICAgLy8gWFF1ZXJ5UG9pbnRlcigpIHNldHMgfGNoaWxkX3dp
bmRvd3wgdG8gTm9uZSBpZiB0aGUgY3Vyc29yIGlzIG91dHNpZGUKLSAgICAgIC8vIHx3aW5kb3df
fC4KLSAgICAgIHN0YXRlID0KLSAgICAgICAgICAod2luZG93XyA9PSByb290X3dpbmRvdyB8fCBj
aGlsZF93aW5kb3cgIT0gTm9uZSkgPyBJTlNJREUgOiBPVVRTSURFOwotICAgIH0KLQotICAgIC8v
IEFzIHRoZSBjb21tZW50cyB0byBHZXRUb3BMZXZlbFdpbmRvdygpIGFib3ZlIGluZGljYXRlLCBp
biB3aW5kb3cgY2FwdHVyZSwKLSAgICAvLyB0aGUgY3Vyc29yIHBvc2l0aW9uIGNhcHR1cmUgaGFw
cGVucyBpbiB8d2luZG93X3wsIHdoaWxlIHRoZSBmcmFtZSBjYXRwdXJlCi0gICAgLy8gaGFwcGVu
cyBpbiB8Y2hpbGRfd2luZG93fC4gVGhlc2UgdHdvIHdpbmRvd3MgYXJlIG5vdCBhbHd5YXMgc2Ft
ZSwgYXMKLSAgICAvLyB3aW5kb3cgbWFuYWdlciBtYXkgYWRkIHNvbWUgZGVjb3JhdGlvbnMgdG8g
dGhlIHx3aW5kb3dffC4gU28gdHJhbnNsYXRlCi0gICAgLy8gdGhlIGNvb3JkaW5hdGUgaW4gfHdp
bmRvd198IHRvIHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHxjaGlsZF93aW5kb3d8LgotICAgIGlm
ICh3aW5kb3dfICE9IHJvb3Rfd2luZG93ICYmIHN0YXRlID09IElOU0lERSkgewotICAgICAgaW50
IHRyYW5zbGF0ZWRfeCwgdHJhbnNsYXRlZF95OwotICAgICAgV2luZG93IHVudXNlZDsKLSAgICAg
IGlmIChYVHJhbnNsYXRlQ29vcmRpbmF0ZXMoZGlzcGxheSgpLCB3aW5kb3dfLCBjaGlsZF93aW5k
b3csIHdpbl94LCB3aW5feSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5z
bGF0ZWRfeCwgJnRyYW5zbGF0ZWRfeSwgJnVudXNlZCkpIHsKLSAgICAgICAgd2luX3ggPSB0cmFu
c2xhdGVkX3g7Ci0gICAgICAgIHdpbl95ID0gdHJhbnNsYXRlZF95OwotICAgICAgfQotICAgIH0K
LQotICAgIC8vIFgxMSBhbHdheXMgc3RhcnRzIHRoZSBjb29yZGluYXRlIGZyb20gKDAsIDApLCBz
byB3ZSBkbyBub3QgbmVlZCB0bwotICAgIC8vIHRyYW5zbGF0ZSBoZXJlLgotICAgIGNhbGxiYWNr
Xy0+T25Nb3VzZUN1cnNvclBvc2l0aW9uKERlc2t0b3BWZWN0b3Iocm9vdF94LCByb290X3kpKTsK
LSAgfQotfQotCi1ib29sIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6SGFuZGxlWEV2ZW50KGNvbnN0
IFhFdmVudCYgZXZlbnQpIHsKLSAgaWYgKGhhdmVfeGZpeGVzXyAmJiBldmVudC50eXBlID09IHhm
aXhlc19ldmVudF9iYXNlXyArIFhGaXhlc0N1cnNvck5vdGlmeSkgewotICAgIGNvbnN0IFhGaXhl
c0N1cnNvck5vdGlmeUV2ZW50KiBjdXJzb3JfZXZlbnQgPQotICAgICAgICByZWludGVycHJldF9j
YXN0PGNvbnN0IFhGaXhlc0N1cnNvck5vdGlmeUV2ZW50Kj4oJmV2ZW50KTsKLSAgICBpZiAoY3Vy
c29yX2V2ZW50LT5zdWJ0eXBlID09IFhGaXhlc0Rpc3BsYXlDdXJzb3JOb3RpZnkpIHsKLSAgICAg
IENhcHR1cmVDdXJzb3IoKTsKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGZhbHNlLCBldmVuIGlmIHRo
ZSBldmVudCBoYXMgYmVlbiBoYW5kbGVkLCBiZWNhdXNlIHRoZXJlIG1pZ2h0IGJlCi0gICAgLy8g
b3RoZXIgbGlzdGVuZXJzIGZvciBjdXJzb3Igbm90aWZpY2F0aW9ucy4KLSAgfQotICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLXZvaWQgTW91c2VDdXJzb3JNb25pdG9yWDExOjpDYXB0dXJlQ3Vyc29yKCkg
ewotICBSVENfRENIRUNLKGhhdmVfeGZpeGVzXyk7Ci0KLSAgWEZpeGVzQ3Vyc29ySW1hZ2UqIGlt
ZzsKLSAgewotICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KCkpOwotICAgIGltZyA9
IFhGaXhlc0dldEN1cnNvckltYWdlKGRpc3BsYXkoKSk7Ci0gICAgaWYgKCFpbWcgfHwgZXJyb3Jf
dHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkKLSAgICAgIHJldHVybjsKLSAgfQot
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IGltYWdlKAotICAgICAgbmV3IEJhc2lj
RGVza3RvcEZyYW1lKERlc2t0b3BTaXplKGltZy0+d2lkdGgsIGltZy0+aGVpZ2h0KSkpOwotCi0g
IC8vIFhsaWIgc3RvcmVzIDMyLWJpdCBkYXRhIGluIGxvbmdzLCBldmVuIGlmIGxvbmdzIGFyZSA2
NC1iaXRzIGxvbmcuCi0gIHVuc2lnbmVkIGxvbmcqIHNyYyA9IGltZy0+cGl4ZWxzOwotICB1aW50
MzJfdCogZHN0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGltYWdlLT5kYXRhKCkpOwot
ICB1aW50MzJfdCogZHN0X2VuZCA9IGRzdCArIChpbWctPndpZHRoICogaW1nLT5oZWlnaHQpOwot
ICB3aGlsZSAoZHN0IDwgZHN0X2VuZCkgewotICAgICpkc3QrKyA9IHN0YXRpY19jYXN0PHVpbnQz
Ml90Pigqc3JjKyspOwotICB9Ci0KLSAgRGVza3RvcFZlY3RvciBob3RzcG90KHN0ZDo6bWluKGlt
Zy0+d2lkdGgsIGltZy0+eGhvdCksCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1pbihp
bWctPmhlaWdodCwgaW1nLT55aG90KSk7Ci0KLSAgWEZyZWUoaW1nKTsKLQotICBjdXJzb3Jfc2hh
cGVfLnJlc2V0KG5ldyBNb3VzZUN1cnNvcihpbWFnZS5yZWxlYXNlKCksIGhvdHNwb3QpKTsKLX0K
LQotLy8gc3RhdGljCi1Nb3VzZUN1cnNvck1vbml0b3IqIE1vdXNlQ3Vyc29yTW9uaXRvcjo6Q3Jl
YXRlRm9yV2luZG93KAotICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywK
LSAgICBXaW5kb3dJZCB3aW5kb3cpIHsKLSAgaWYgKCFvcHRpb25zLnhfZGlzcGxheSgpKQotICAg
IHJldHVybiBOVUxMOwotICB3aW5kb3cgPSBHZXRUb3BMZXZlbFdpbmRvdyhvcHRpb25zLnhfZGlz
cGxheSgpLT5kaXNwbGF5KCksIHdpbmRvdyk7Ci0gIGlmICh3aW5kb3cgPT0gTm9uZSkKLSAgICBy
ZXR1cm4gTlVMTDsKLSAgcmV0dXJuIG5ldyBNb3VzZUN1cnNvck1vbml0b3JYMTEob3B0aW9ucywg
d2luZG93KTsKLX0KLQotTW91c2VDdXJzb3JNb25pdG9yKiBNb3VzZUN1cnNvck1vbml0b3I6OkNy
ZWF0ZUZvclNjcmVlbigKLSAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMs
Ci0gICAgU2NyZWVuSWQgc2NyZWVuKSB7Ci0gIGlmICghb3B0aW9ucy54X2Rpc3BsYXkoKSkKLSAg
ICByZXR1cm4gTlVMTDsKLSAgcmV0dXJuIG5ldyBNb3VzZUN1cnNvck1vbml0b3JYMTEoCi0gICAg
ICBvcHRpb25zLCBEZWZhdWx0Um9vdFdpbmRvdyhvcHRpb25zLnhfZGlzcGxheSgpLT5kaXNwbGF5
KCkpKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPE1vdXNlQ3Vyc29yTW9uaXRvcj4gTW91c2VDdXJz
b3JNb25pdG9yOjpDcmVhdGUoCi0gICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRp
b25zKSB7Ci0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TW91c2VDdXJzb3JNb25pdG9yPigKLSAg
ICAgIENyZWF0ZUZvclNjcmVlbihvcHRpb25zLCBrRnVsbERlc2t0b3BTY3JlZW5JZCkpOwotfQot
Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fY2Fw
dHVyZXJfbGludXguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fY2FwdHVyZXJfbGludXguY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2Y4YTlkZDBlMGRiNDAwOGUxN2Y0M2FhMjUwN2U3NDkxMDY3MmI0NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9jYXB0dXJlcl9saW51eC5jYwpAQCAtMCwwICsxLDQw
IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCisKKyNpZiBkZWZpbmVkKFdFQlJUQ19VU0VfUElQ
RVdJUkUpCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2Nh
cHR1cmVyX3BpcGV3aXJlLmgiCisjZW5kaWYgIC8vIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lS
RSkKKworI2lmIGRlZmluZWQoVVNFX1gxMSkKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfeDExLmgiCisjZW5kaWYgIC8vIGRlZmluZWQoVVNF
X1gxMSkKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIHN0YXRpYworc3RkOjp1bmlxdWVfcHRy
PERlc2t0b3BDYXB0dXJlcj4gRGVza3RvcENhcHR1cmVyOjpDcmVhdGVSYXdTY3JlZW5DYXB0dXJl
cigKKyAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKKyNpZiBkZWZp
bmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpCisgIGlmIChvcHRpb25zLmFsbG93X3BpcGV3aXJlKCkg
JiYgRGVza3RvcENhcHR1cmVyOjpJc1J1bm5pbmdVbmRlcldheWxhbmQoKSkgeworICAgIHJldHVy
biBTY3JlZW5DYXB0dXJlclBpcGVXaXJlOjpDcmVhdGVSYXdTY3JlZW5DYXB0dXJlcihvcHRpb25z
KTsKKyAgfQorI2VuZGlmICAvLyBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpCisKKyNpZiBk
ZWZpbmVkKFVTRV9YMTEpCisgIHJldHVybiBTY3JlZW5DYXB0dXJlclgxMTo6Q3JlYXRlUmF3U2Ny
ZWVuQ2FwdHVyZXIob3B0aW9ucyk7CisjZW5kaWYgIC8vIGRlZmluZWQoVVNFX1gxMSkKKworICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVyX3gxMS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9jYXB0dXJl
cl94MTEuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NWZjY2MyMDgyYTk3MDQy
YWFmZmI4ZGRkNmMyNDM0ZGY0OTdlNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVyX3gxMS5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDQyNSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUg
PHN0cmluZy5oPgotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRl
IDx1dGlsaXR5PgotCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvWHV0aWwu
aD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZGFtYWdlLmg+Ci0jaW5jbHVkZSA8WDExL2V4
dGVuc2lvbnMvWGZpeGVzLmg+Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9k
ZXNrdG9wX2NhcHR1cmVfb3B0aW9ucy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL2Rlc2t0b3BfY2FwdHVyZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9kZXNrdG9wX2ZyYW1lLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2Ny
ZWVuX2NhcHR1cmVfZnJhbWVfcXVldWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9zY3JlZW5fY2FwdHVyZXJfaGVscGVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvc2hhcmVkX2Rlc2t0b3BfZnJhbWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgotCi1uYW1lc3BhY2Ugd2VicnRj
IHsKLW5hbWVzcGFjZSB7Ci0KLS8vIEEgY2xhc3MgdG8gcGVyZm9ybSB2aWRlbyBmcmFtZSBjYXB0
dXJpbmcgZm9yIExpbnV4LgotLy8KLS8vIElmIFhEYW1hZ2UgaXMgdXNlZCwgdGhpcyBjbGFzcyBz
ZXRzIERlc2t0b3BGcmFtZTo6dXBkYXRlZF9yZWdpb24oKSBhY2NvcmRpbmcKLS8vIHRvIHRoZSBh
cmVhcyByZXBvcnRlZCBieSBYRGFtYWdlLiBPdGhlcndpc2UgdGhpcyBjbGFzcyBkb2VzIG5vdCBk
ZXRlY3QKLS8vIERlc2t0b3BGcmFtZTo6dXBkYXRlZF9yZWdpb24oKSwgdGhlIGZpZWxkIGlzIGFs
d2F5cyBzZXQgdG8gdGhlIGVudGlyZSBmcmFtZQotLy8gcmVjdGFuZ2xlLiBTY3JlZW5DYXB0dXJl
ckRpZmZlcldyYXBwZXIgc2hvdWxkIGJlIHVzZWQgaWYgdGhhdCBmdW5jdGlvbmFsaXR5Ci0vLyBp
cyBuZWNlc3NhcnkuCi1jbGFzcyBTY3JlZW5DYXB0dXJlckxpbnV4IDogcHVibGljIERlc2t0b3BD
YXB0dXJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU2hhcmVkWERpc3Bs
YXk6OlhFdmVudEhhbmRsZXIgewotIHB1YmxpYzoKLSAgU2NyZWVuQ2FwdHVyZXJMaW51eCgpOwot
ICB+U2NyZWVuQ2FwdHVyZXJMaW51eCgpIG92ZXJyaWRlOwotCi0gIC8vIFRPRE8oYWp3b25nKTog
RG8gd2UgcmVhbGx5IHdhbnQgdGhpcyB0byBiZSBzeW5jaHJvbm91cz8KLSAgYm9vbCBJbml0KGNv
bnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7Ci0KLSAgLy8gRGVza3RvcENhcHR1
cmVyIGludGVyZmFjZS4KLSAgdm9pZCBTdGFydChDYWxsYmFjayogZGVsZWdhdGUpIG92ZXJyaWRl
OwotICB2b2lkIENhcHR1cmVGcmFtZSgpIG92ZXJyaWRlOwotICBib29sIEdldFNvdXJjZUxpc3Qo
U291cmNlTGlzdCogc291cmNlcykgb3ZlcnJpZGU7Ci0gIGJvb2wgU2VsZWN0U291cmNlKFNvdXJj
ZUlkIGlkKSBvdmVycmlkZTsKLQotIHByaXZhdGU6Ci0gIERpc3BsYXkqIGRpc3BsYXkoKSB7IHJl
dHVybiBvcHRpb25zXy54X2Rpc3BsYXkoKS0+ZGlzcGxheSgpOyB9Ci0KLSAgLy8gU2hhcmVkWERp
c3BsYXk6OlhFdmVudEhhbmRsZXIgaW50ZXJmYWNlLgotICBib29sIEhhbmRsZVhFdmVudChjb25z
dCBYRXZlbnQmIGV2ZW50KSBvdmVycmlkZTsKLQotICB2b2lkIEluaXRYRGFtYWdlKCk7Ci0KLSAg
Ly8gQ2FwdHVyZSBzY3JlZW4gcGl4ZWxzIHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBpbiB0aGUgcXVl
dWUuIEluIHRoZSBEQU1BR0UKLSAgLy8gY2FzZSwgdGhlIFNjcmVlbkNhcHR1cmVySGVscGVyIGFs
cmVhZHkgaG9sZHMgdGhlIGxpc3Qgb2YgaW52YWxpZCByZWN0YW5nbGVzCi0gIC8vIGZyb20gSGFu
ZGxlWEV2ZW50KCkuIEluIHRoZSBub24tREFNQUdFIGNhc2UsIHRoaXMgY2FwdHVyZXMgdGhlCi0g
IC8vIHdob2xlIHNjcmVlbiwgdGhlbiBjYWxjdWxhdGVzIHNvbWUgaW52YWxpZCByZWN0YW5nbGVz
IHRoYXQgaW5jbHVkZSBhbnkKLSAgLy8gZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGFuZCB0aGUg
cHJldmlvdXMgY2FwdHVyZS4KLSAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gQ2FwdHVy
ZVNjcmVlbigpOwotCi0gIC8vIENhbGxlZCB3aGVuIHRoZSBzY3JlZW4gY29uZmlndXJhdGlvbiBp
cyBjaGFuZ2VkLgotICB2b2lkIFNjcmVlbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7Ci0KLSAgLy8g
U3luY2hyb25pemUgdGhlIGN1cnJlbnQgYnVmZmVyIHdpdGggfGxhc3RfYnVmZmVyX3wsIGJ5IGNv
cHlpbmcgcGl4ZWxzIGZyb20KLSAgLy8gdGhlIGFyZWEgb2YgfGxhc3RfaW52YWxpZF9yZWN0c3wu
Ci0gIC8vIE5vdGUgdGhpcyBvbmx5IHdvcmtzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQga051bUJ1
ZmZlcnMgPT0gMiwgYXMKLSAgLy8gfGxhc3RfaW52YWxpZF9yZWN0c3wgaG9sZHMgdGhlIGRpZmZl
cmVuY2VzIGZyb20gdGhlIHByZXZpb3VzIGJ1ZmZlciBhbmQKLSAgLy8gdGhlIG9uZSBwcmlvciB0
byB0aGF0ICh3aGljaCB3aWxsIHRoZW4gYmUgdGhlIGN1cnJlbnQgYnVmZmVyKS4KLSAgdm9pZCBT
eW5jaHJvbml6ZUZyYW1lKCk7Ci0KLSAgdm9pZCBEZWluaXRYbGliKCk7Ci0KLSAgRGVza3RvcENh
cHR1cmVPcHRpb25zIG9wdGlvbnNfOwotCi0gIENhbGxiYWNrKiBjYWxsYmFja18gPSBudWxscHRy
OwotCi0gIC8vIFgxMSBncmFwaGljcyBjb250ZXh0LgotICBHQyBnY18gPSBudWxscHRyOwotICBX
aW5kb3cgcm9vdF93aW5kb3dfID0gQmFkVmFsdWU7Ci0KLSAgLy8gWEZpeGVzLgotICBib29sIGhh
c194Zml4ZXNfID0gZmFsc2U7Ci0gIGludCB4Zml4ZXNfZXZlbnRfYmFzZV8gPSAtMTsKLSAgaW50
IHhmaXhlc19lcnJvcl9iYXNlXyA9IC0xOwotCi0gIC8vIFhEYW1hZ2UgaW5mb3JtYXRpb24uCi0g
IGJvb2wgdXNlX2RhbWFnZV8gPSBmYWxzZTsKLSAgRGFtYWdlIGRhbWFnZV9oYW5kbGVfID0gMDsK
LSAgaW50IGRhbWFnZV9ldmVudF9iYXNlXyA9IC0xOwotICBpbnQgZGFtYWdlX2Vycm9yX2Jhc2Vf
ID0gLTE7Ci0gIFhzZXJ2ZXJSZWdpb24gZGFtYWdlX3JlZ2lvbl8gPSAwOwotCi0gIC8vIEFjY2Vz
cyB0byB0aGUgWCBTZXJ2ZXIncyBwaXhlbCBidWZmZXIuCi0gIFhTZXJ2ZXJQaXhlbEJ1ZmZlciB4
X3NlcnZlcl9waXhlbF9idWZmZXJfOwotCi0gIC8vIEEgdGhyZWFkLXNhZmUgbGlzdCBvZiBpbnZh
bGlkIHJlY3RhbmdsZXMsIGFuZCB0aGUgc2l6ZSBvZiB0aGUgbW9zdAotICAvLyByZWNlbnRseSBj
YXB0dXJlZCBzY3JlZW4uCi0gIFNjcmVlbkNhcHR1cmVySGVscGVyIGhlbHBlcl87Ci0KLSAgLy8g
UXVldWUgb2YgdGhlIGZyYW1lcyBidWZmZXJzLgotICBTY3JlZW5DYXB0dXJlRnJhbWVRdWV1ZTxT
aGFyZWREZXNrdG9wRnJhbWU+IHF1ZXVlXzsKLQotICAvLyBJbnZhbGlkIHJlZ2lvbiBmcm9tIHRo
ZSBwcmV2aW91cyBjYXB0dXJlLiBUaGlzIGlzIHVzZWQgdG8gc3luY2hyb25pemUgdGhlCi0gIC8v
IGN1cnJlbnQgd2l0aCB0aGUgbGFzdCBidWZmZXIgdXNlZC4KLSAgRGVza3RvcFJlZ2lvbiBsYXN0
X2ludmFsaWRfcmVnaW9uXzsKLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNjcmVl
bkNhcHR1cmVyTGludXgpOwotfTsKLQotU2NyZWVuQ2FwdHVyZXJMaW51eDo6U2NyZWVuQ2FwdHVy
ZXJMaW51eCgpIHsKLSAgaGVscGVyXy5TZXRMb2dHcmlkU2l6ZSg0KTsKLX0KLQotU2NyZWVuQ2Fw
dHVyZXJMaW51eDo6flNjcmVlbkNhcHR1cmVyTGludXgoKSB7Ci0gIG9wdGlvbnNfLnhfZGlzcGxh
eSgpLT5SZW1vdmVFdmVudEhhbmRsZXIoQ29uZmlndXJlTm90aWZ5LCB0aGlzKTsKLSAgaWYgKHVz
ZV9kYW1hZ2VfKSB7Ci0gICAgb3B0aW9uc18ueF9kaXNwbGF5KCktPlJlbW92ZUV2ZW50SGFuZGxl
cihkYW1hZ2VfZXZlbnRfYmFzZV8gKyBYRGFtYWdlTm90aWZ5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyk7Ci0gIH0KLSAgRGVpbml0WGxpYigpOwot
fQotCi1ib29sIFNjcmVlbkNhcHR1cmVyTGludXg6OkluaXQoY29uc3QgRGVza3RvcENhcHR1cmVP
cHRpb25zJiBvcHRpb25zKSB7Ci0gIFRSQUNFX0VWRU5UMCgid2VicnRjIiwgIlNjcmVlbkNhcHR1
cmVyTGludXg6OkluaXQiKTsKLSAgb3B0aW9uc18gPSBvcHRpb25zOwotCi0gIHJvb3Rfd2luZG93
XyA9IFJvb3RXaW5kb3coZGlzcGxheSgpLCBEZWZhdWx0U2NyZWVuKGRpc3BsYXkoKSkpOwotICBp
ZiAocm9vdF93aW5kb3dfID09IEJhZFZhbHVlKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IlVuYWJsZSB0byBnZXQgdGhlIHJvb3Qgd2luZG93IjsKLSAgICBEZWluaXRYbGliKCk7Ci0gICAg
cmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgZ2NfID0gWENyZWF0ZUdDKGRpc3BsYXkoKSwgcm9vdF93
aW5kb3dfLCAwLCBOVUxMKTsKLSAgaWYgKGdjXyA9PSBOVUxMKSB7Ci0gICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIlVuYWJsZSB0byBnZXQgZ3JhcGhpY3MgY29udGV4dCI7Ci0gICAgRGVpbml0WGxp
YigpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5B
ZGRFdmVudEhhbmRsZXIoQ29uZmlndXJlTm90aWZ5LCB0aGlzKTsKLQotICAvLyBDaGVjayBmb3Ig
WEZpeGVzIGV4dGVuc2lvbi4gVGhpcyBpcyByZXF1aXJlZCBmb3IgY3Vyc29yIHNoYXBlCi0gIC8v
IG5vdGlmaWNhdGlvbnMsIGFuZCBmb3Igb3VyIHVzZSBvZiBYRGFtYWdlLgotICBpZiAoWEZpeGVz
UXVlcnlFeHRlbnNpb24oZGlzcGxheSgpLCAmeGZpeGVzX2V2ZW50X2Jhc2VfLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnhmaXhlc19lcnJvcl9iYXNlXykpIHsKLSAgICBoYXNfeGZpeGVz
XyA9IHRydWU7Ci0gIH0gZWxzZSB7Ci0gICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiWCBzZXJ2ZXIg
ZG9lcyBub3Qgc3VwcG9ydCBYRml4ZXMuIjsKLSAgfQotCi0gIC8vIFJlZ2lzdGVyIGZvciBjaGFu
Z2VzIHRvIHRoZSBkaW1lbnNpb25zIG9mIHRoZSByb290IHdpbmRvdy4KLSAgWFNlbGVjdElucHV0
KGRpc3BsYXkoKSwgcm9vdF93aW5kb3dfLCBTdHJ1Y3R1cmVOb3RpZnlNYXNrKTsKLQotICBpZiAo
IXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uSW5pdChkaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93
KGRpc3BsYXkoKSkpKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBpbml0
aWFsaXplIHBpeGVsIGJ1ZmZlci4iOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGlmIChv
cHRpb25zXy51c2VfdXBkYXRlX25vdGlmaWNhdGlvbnMoKSkgewotICAgIEluaXRYRGFtYWdlKCk7
Ci0gIH0KLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBTY3JlZW5DYXB0dXJlckxpbnV4OjpJ
bml0WERhbWFnZSgpIHsKLSAgLy8gT3VyIHVzZSBvZiBYRGFtYWdlIHJlcXVpcmVzIFhGaXhlcy4K
LSAgaWYgKCFoYXNfeGZpeGVzXykgewotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIENoZWNrIGZv
ciBYRGFtYWdlIGV4dGVuc2lvbi4KLSAgaWYgKCFYRGFtYWdlUXVlcnlFeHRlbnNpb24oZGlzcGxh
eSgpLCAmZGFtYWdlX2V2ZW50X2Jhc2VfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
ZGFtYWdlX2Vycm9yX2Jhc2VfKSkgewotICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlggc2VydmVy
IGRvZXMgbm90IHN1cHBvcnQgWERhbWFnZS4iOwotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIFRP
RE8obGFtYnJvc2xhbWJyb3UpOiBEaXNhYmxlIERBTUFHRSBpbiBzaXR1YXRpb25zIHdoZXJlIGl0
IGlzIGtub3duCi0gIC8vIHRvIGZhaWwsIHN1Y2ggYXMgd2hlbiBEZXNrdG9wIEVmZmVjdHMgYXJl
IGVuYWJsZWQsIHdpdGggZ3JhcGhpY3MKLSAgLy8gZHJpdmVycyAoblZpZGlhLCBBVEkpIHRoYXQg
ZmFpbCB0byByZXBvcnQgREFNQUdFIG5vdGlmaWNhdGlvbnMKLSAgLy8gcHJvcGVybHkuCi0KLSAg
Ly8gUmVxdWVzdCBub3RpZmljYXRpb25zIGV2ZXJ5IHRpbWUgdGhlIHNjcmVlbiBiZWNvbWVzIGRh
bWFnZWQuCi0gIGRhbWFnZV9oYW5kbGVfID0KLSAgICAgIFhEYW1hZ2VDcmVhdGUoZGlzcGxheSgp
LCByb290X3dpbmRvd18sIFhEYW1hZ2VSZXBvcnROb25FbXB0eSk7Ci0gIGlmICghZGFtYWdlX2hh
bmRsZV8pIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVW5hYmxlIHRvIGluaXRpYWxpemUg
WERhbWFnZS4iOwotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIENyZWF0ZSBhbiBYRml4ZXMgc2Vy
dmVyLXNpZGUgcmVnaW9uIHRvIGNvbGxhdGUgZGFtYWdlIGludG8uCi0gIGRhbWFnZV9yZWdpb25f
ID0gWEZpeGVzQ3JlYXRlUmVnaW9uKGRpc3BsYXkoKSwgMCwgMCk7Ci0gIGlmICghZGFtYWdlX3Jl
Z2lvbl8pIHsKLSAgICBYRGFtYWdlRGVzdHJveShkaXNwbGF5KCksIGRhbWFnZV9oYW5kbGVfKTsK
LSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVW5hYmxlIHRvIGNyZWF0ZSBYRml4ZXMgcmVnaW9u
LiI7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgb3B0aW9uc18ueF9kaXNwbGF5KCktPkFkZEV2ZW50
SGFuZGxlcihkYW1hZ2VfZXZlbnRfYmFzZV8gKyBYRGFtYWdlTm90aWZ5LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMpOwotCi0gIHVzZV9kYW1hZ2VfID0gdHJ1
ZTsKLSAgUlRDX0xPRyhMU19JTkZPKSA8PCAiVXNpbmcgWERhbWFnZSBleHRlbnNpb24uIjsKLX0K
LQotdm9pZCBTY3JlZW5DYXB0dXJlckxpbnV4OjpTdGFydChDYWxsYmFjayogY2FsbGJhY2spIHsK
LSAgUlRDX0RDSEVDSyghY2FsbGJhY2tfKTsKLSAgUlRDX0RDSEVDSyhjYWxsYmFjayk7Ci0KLSAg
Y2FsbGJhY2tfID0gY2FsbGJhY2s7Ci19Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZXJMaW51eDo6Q2Fw
dHVyZUZyYW1lKCkgewotICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJTY3JlZW5DYXB0dXJlckxp
bnV4OjpDYXB0dXJlRnJhbWUiKTsKLSAgaW50NjRfdCBjYXB0dXJlX3N0YXJ0X3RpbWVfbmFub3Mg
PSBydGM6OlRpbWVOYW5vcygpOwotCi0gIHF1ZXVlXy5Nb3ZlVG9OZXh0RnJhbWUoKTsKLSAgUlRD
X0RDSEVDSyghcXVldWVfLmN1cnJlbnRfZnJhbWUoKSB8fCAhcXVldWVfLmN1cnJlbnRfZnJhbWUo
KS0+SXNTaGFyZWQoKSk7Ci0KLSAgLy8gUHJvY2VzcyBYRXZlbnRzIGZvciBYRGFtYWdlIGFuZCBj
dXJzb3Igc2hhcGUgdHJhY2tpbmcuCi0gIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5Qcm9jZXNzUGVu
ZGluZ1hFdmVudHMoKTsKLQotICAvLyBQcm9jZXNzUGVuZGluZ1hFdmVudHMoKSBtYXkgY2FsbCBT
Y3JlZW5Db25maWd1cmF0aW9uQ2hhbmdlZCgpIHdoaWNoCi0gIC8vIHJlaW5pdGlhbGl6ZXMgfHhf
c2VydmVyX3BpeGVsX2J1ZmZlcl98LiBDaGVjayBpZiB0aGUgcGl4ZWwgYnVmZmVyIGlzIHN0aWxs
Ci0gIC8vIGluIGEgZ29vZCBzaGFwZS4KLSAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLmlz
X2luaXRpYWxpemVkKCkpIHsKLSAgICAvLyBXZSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBwaXhlbCBi
dWZmZXIuCi0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlBpeGVsIGJ1ZmZlciBpcyBub3QgaW5p
dGlhbGl6ZWQuIjsKLSAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9S
X1BFUk1BTkVOVCwgbnVsbHB0cik7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgLy8gSWYgdGhlIGN1
cnJlbnQgZnJhbWUgaXMgZnJvbSBhbiBvbGRlciBnZW5lcmF0aW9uIHRoZW4gYWxsb2NhdGUgYSBu
ZXcgb25lLgotICAvLyBOb3RlIHRoYXQgd2UgY2FuJ3QgcmVhbGxvY2F0ZSBvdGhlciBidWZmZXJz
IGF0IHRoaXMgcG9pbnQsIHNpbmNlIHRoZSBjYWxsZXIKLSAgLy8gbWF5IHN0aWxsIGJlIHJlYWRp
bmcgZnJvbSB0aGVtLgotICBpZiAoIXF1ZXVlXy5jdXJyZW50X2ZyYW1lKCkpIHsKLSAgICBxdWV1
ZV8uUmVwbGFjZUN1cnJlbnRGcmFtZSgKLSAgICAgICAgU2hhcmVkRGVza3RvcEZyYW1lOjpXcmFw
KHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+KAotICAgICAgICAgICAgbmV3IEJhc2ljRGVz
a3RvcEZyYW1lKHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8ud2luZG93X3NpemUoKSkpKSk7Ci0gIH0K
LQotICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiByZXN1bHQgPSBDYXB0dXJlU2NyZWVu
KCk7Ci0gIGlmICghcmVzdWx0KSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVGVtcG9y
YXJpbHkgZmFpbGVkIHRvIGNhcHR1cmUgc2NyZWVuLiI7Ci0gICAgY2FsbGJhY2tfLT5PbkNhcHR1
cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9URU1QT1JBUlksIG51bGxwdHIpOwotICAgIHJldHVybjsK
LSAgfQotCi0gIGxhc3RfaW52YWxpZF9yZWdpb25fID0gcmVzdWx0LT51cGRhdGVkX3JlZ2lvbigp
OwotICByZXN1bHQtPnNldF9jYXB0dXJlX3RpbWVfbXMoKHJ0Yzo6VGltZU5hbm9zKCkgLSBjYXB0
dXJlX3N0YXJ0X3RpbWVfbmFub3MpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6a051bU5hbm9zZWNzUGVyTWlsbGlzZWMpOwotICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3Vs
dChSZXN1bHQ6OlNVQ0NFU1MsIHN0ZDo6bW92ZShyZXN1bHQpKTsKLX0KLQotYm9vbCBTY3JlZW5D
YXB0dXJlckxpbnV4OjpHZXRTb3VyY2VMaXN0KFNvdXJjZUxpc3QqIHNvdXJjZXMpIHsKLSAgUlRD
X0RDSEVDSyhzb3VyY2VzLT5zaXplKCkgPT0gMCk7Ci0gIC8vIFRPRE8oamlheWwpOiBpbXBsZW1l
bnQgc2NyZWVuIGVudW1lcmF0aW9uLgotICBzb3VyY2VzLT5wdXNoX2JhY2soezB9KTsKLSAgcmV0
dXJuIHRydWU7Ci19Ci0KLWJvb2wgU2NyZWVuQ2FwdHVyZXJMaW51eDo6U2VsZWN0U291cmNlKFNv
dXJjZUlkIGlkKSB7Ci0gIC8vIFRPRE8oamlheWwpOiBpbXBsZW1lbnQgc2NyZWVuIHNlbGVjdGlv
bi4KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU2NyZWVuQ2FwdHVyZXJMaW51eDo6SGFuZGxl
WEV2ZW50KGNvbnN0IFhFdmVudCYgZXZlbnQpIHsKLSAgaWYgKHVzZV9kYW1hZ2VfICYmIChldmVu
dC50eXBlID09IGRhbWFnZV9ldmVudF9iYXNlXyArIFhEYW1hZ2VOb3RpZnkpKSB7Ci0gICAgY29u
c3QgWERhbWFnZU5vdGlmeUV2ZW50KiBkYW1hZ2VfZXZlbnQgPQotICAgICAgICByZWludGVycHJl
dF9jYXN0PGNvbnN0IFhEYW1hZ2VOb3RpZnlFdmVudCo+KCZldmVudCk7Ci0gICAgaWYgKGRhbWFn
ZV9ldmVudC0+ZGFtYWdlICE9IGRhbWFnZV9oYW5kbGVfKQotICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIFJUQ19EQ0hFQ0soZGFtYWdlX2V2ZW50LT5sZXZlbCA9PSBYRGFtYWdlUmVwb3J0Tm9uRW1w
dHkpOwotICAgIHJldHVybiB0cnVlOwotICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gQ29uZmln
dXJlTm90aWZ5KSB7Ci0gICAgU2NyZWVuQ29uZmlndXJhdGlvbkNoYW5nZWQoKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLSAgfQotICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxEZXNr
dG9wRnJhbWU+IFNjcmVlbkNhcHR1cmVyTGludXg6OkNhcHR1cmVTY3JlZW4oKSB7Ci0gIHN0ZDo6
dW5pcXVlX3B0cjxTaGFyZWREZXNrdG9wRnJhbWU+IGZyYW1lID0gcXVldWVfLmN1cnJlbnRfZnJh
bWUoKS0+U2hhcmUoKTsKLSAgUlRDX0RDSEVDSyh4X3NlcnZlcl9waXhlbF9idWZmZXJfLndpbmRv
d19zaXplKCkuZXF1YWxzKGZyYW1lLT5zaXplKCkpKTsKLQotICAvLyBQYXNzIHRoZSBzY3JlZW4g
c2l6ZSB0byB0aGUgaGVscGVyLCBzbyBpdCBjYW4gY2xpcCB0aGUgaW52YWxpZCByZWdpb24gaWYg
aXQKLSAgLy8gZXhwYW5kcyB0aGF0IHJlZ2lvbiB0byBhIGdyaWQuCi0gIGhlbHBlcl8uc2V0X3Np
emVfbW9zdF9yZWNlbnQoZnJhbWUtPnNpemUoKSk7Ci0KLSAgLy8gSW4gdGhlIERBTUFHRSBjYXNl
LCBlbnN1cmUgdGhlIGZyYW1lIGlzIHVwLXRvLWRhdGUgd2l0aCB0aGUgcHJldmlvdXMgZnJhbWUK
LSAgLy8gaWYgYW55LiAgSWYgdGhlcmUgaXNuJ3QgYSBwcmV2aW91cyBmcmFtZSwgdGhhdCBtZWFu
cyBhIHNjcmVlbi1yZXNvbHV0aW9uCi0gIC8vIGNoYW5nZSBvY2N1cnJlZCwgYW5kIHxpbnZhbGlk
X3JlY3RzfCB3aWxsIGJlIHVwZGF0ZWQgdG8gaW5jbHVkZSB0aGUgd2hvbGUKLSAgLy8gc2NyZWVu
LgotICBpZiAodXNlX2RhbWFnZV8gJiYgcXVldWVfLnByZXZpb3VzX2ZyYW1lKCkpCi0gICAgU3lu
Y2hyb25pemVGcmFtZSgpOwotCi0gIERlc2t0b3BSZWdpb24qIHVwZGF0ZWRfcmVnaW9uID0gZnJh
bWUtPm11dGFibGVfdXBkYXRlZF9yZWdpb24oKTsKLQotICB4X3NlcnZlcl9waXhlbF9idWZmZXJf
LlN5bmNocm9uaXplKCk7Ci0gIGlmICh1c2VfZGFtYWdlXyAmJiBxdWV1ZV8ucHJldmlvdXNfZnJh
bWUoKSkgewotICAgIC8vIEF0b21pY2FsbHkgZmV0Y2ggYW5kIGNsZWFyIHRoZSBkYW1hZ2UgcmVn
aW9uLgotICAgIFhEYW1hZ2VTdWJ0cmFjdChkaXNwbGF5KCksIGRhbWFnZV9oYW5kbGVfLCBOb25l
LCBkYW1hZ2VfcmVnaW9uXyk7Ci0gICAgaW50IHJlY3RzX251bSA9IDA7Ci0gICAgWFJlY3Rhbmds
ZSBib3VuZHM7Ci0gICAgWFJlY3RhbmdsZSogcmVjdHMgPSBYRml4ZXNGZXRjaFJlZ2lvbkFuZEJv
dW5kcyhkaXNwbGF5KCksIGRhbWFnZV9yZWdpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlY3RzX251bSwgJmJvdW5kcyk7Ci0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCByZWN0c19udW07ICsraSkgewotICAgICAgdXBkYXRlZF9yZWdpb24t
PkFkZFJlY3QoRGVza3RvcFJlY3Q6Ok1ha2VYWVdIKAotICAgICAgICAgIHJlY3RzW2ldLngsIHJl
Y3RzW2ldLnksIHJlY3RzW2ldLndpZHRoLCByZWN0c1tpXS5oZWlnaHQpKTsKLSAgICB9Ci0gICAg
WEZyZWUocmVjdHMpOwotICAgIGhlbHBlcl8uSW52YWxpZGF0ZVJlZ2lvbigqdXBkYXRlZF9yZWdp
b24pOwotCi0gICAgLy8gQ2FwdHVyZSB0aGUgZGFtYWdlZCBwb3J0aW9ucyBvZiB0aGUgZGVza3Rv
cC4KLSAgICBoZWxwZXJfLlRha2VJbnZhbGlkUmVnaW9uKHVwZGF0ZWRfcmVnaW9uKTsKLQotICAg
IC8vIENsaXAgdGhlIGRhbWFnZWQgcG9ydGlvbnMgdG8gdGhlIGN1cnJlbnQgc2NyZWVuIHNpemUs
IGp1c3QgaW4gY2FzZSBzb21lCi0gICAgLy8gc3B1cmlvdXMgWERhbWFnZSBub3RpZmljYXRpb25z
IHdlcmUgcmVjZWl2ZWQgZm9yIGEgcHJldmlvdXMgKGxhcmdlcikKLSAgICAvLyBzY3JlZW4gc2l6
ZS4KLSAgICB1cGRhdGVkX3JlZ2lvbi0+SW50ZXJzZWN0V2l0aCgKLSAgICAgICAgRGVza3RvcFJl
Y3Q6Ok1ha2VTaXplKHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8ud2luZG93X3NpemUoKSkpOwotCi0g
ICAgZm9yIChEZXNrdG9wUmVnaW9uOjpJdGVyYXRvciBpdCgqdXBkYXRlZF9yZWdpb24pOyAhaXQu
SXNBdEVuZCgpOwotICAgICAgICAgaXQuQWR2YW5jZSgpKSB7Ci0gICAgICBpZiAoIXhfc2VydmVy
X3BpeGVsX2J1ZmZlcl8uQ2FwdHVyZVJlY3QoaXQucmVjdCgpLCBmcmFtZS5nZXQoKSkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICAvLyBEb2luZyBmdWxs
LXNjcmVlbiBwb2xsaW5nLCBvciB0aGlzIGlzIHRoZSBmaXJzdCBjYXB0dXJlIGFmdGVyIGEKLSAg
ICAvLyBzY3JlZW4tcmVzb2x1dGlvbiBjaGFuZ2UuICBJbiBlaXRoZXIgY2FzZSwgbmVlZCBhIGZ1
bGwtc2NyZWVuIGNhcHR1cmUuCi0gICAgRGVza3RvcFJlY3Qgc2NyZWVuX3JlY3QgPSBEZXNrdG9w
UmVjdDo6TWFrZVNpemUoZnJhbWUtPnNpemUoKSk7Ci0gICAgaWYgKCF4X3NlcnZlcl9waXhlbF9i
dWZmZXJfLkNhcHR1cmVSZWN0KHNjcmVlbl9yZWN0LCBmcmFtZS5nZXQoKSkpCi0gICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB1cGRhdGVkX3JlZ2lvbi0+U2V0UmVjdChzY3JlZW5fcmVjdCk7Ci0g
IH0KLQotICByZXR1cm4gc3RkOjptb3ZlKGZyYW1lKTsKLX0KLQotdm9pZCBTY3JlZW5DYXB0dXJl
ckxpbnV4OjpTY3JlZW5Db25maWd1cmF0aW9uQ2hhbmdlZCgpIHsKLSAgVFJBQ0VfRVZFTlQwKCJ3
ZWJydGMiLCAiU2NyZWVuQ2FwdHVyZXJMaW51eDo6U2NyZWVuQ29uZmlndXJhdGlvbkNoYW5nZWQi
KTsKLSAgLy8gTWFrZSBzdXJlIHRoZSBmcmFtZSBidWZmZXJzIHdpbGwgYmUgcmVhbGxvY2F0ZWQu
Ci0gIHF1ZXVlXy5SZXNldCgpOwotCi0gIGhlbHBlcl8uQ2xlYXJJbnZhbGlkUmVnaW9uKCk7Ci0g
IGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5Jbml0KGRpc3BsYXkoKSwgRGVmYXVsdFJvb3RX
aW5kb3coZGlzcGxheSgpKSkpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRv
IGluaXRpYWxpemUgcGl4ZWwgYnVmZmVyIGFmdGVyIHNjcmVlbiAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgImNvbmZpZ3VyYXRpb24gY2hhbmdlLiI7Ci0gIH0KLX0KLQotdm9pZCBTY3JlZW5D
YXB0dXJlckxpbnV4OjpTeW5jaHJvbml6ZUZyYW1lKCkgewotICAvLyBTeW5jaHJvbml6ZSB0aGUg
Y3VycmVudCBidWZmZXIgd2l0aCB0aGUgcHJldmlvdXMgb25lIHNpbmNlIHdlIGRvIG5vdAotICAv
LyBjYXB0dXJlIHRoZSBlbnRpcmUgZGVza3RvcC4gTm90ZSB0aGF0IGVuY29kZXIgbWF5IGJlIHJl
YWRpbmcgZnJvbSB0aGUKLSAgLy8gcHJldmlvdXMgYnVmZmVyIGF0IHRoaXMgdGltZSBzbyB0aHJl
YWQgYWNjZXNzIGNvbXBsYWludHMgYXJlIGZhbHNlCi0gIC8vIHBvc2l0aXZlcy4KLQotICAvLyBU
T0RPKGhjbGFtKTogV2UgY2FuIHJlZHVjZSB0aGUgYW1vdW50IG9mIGNvcHlpbmcgaGVyZSBieSBz
dWJ0cmFjdGluZwotICAvLyB8Y2FwdHVyZXJfaGVscGVyX3xzIHJlZ2lvbiBmcm9tIHxsYXN0X2lu
dmFsaWRfcmVnaW9uX3wuCi0gIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vOTIzNTQKLSAgUlRDX0RDSEVD
SyhxdWV1ZV8ucHJldmlvdXNfZnJhbWUoKSk7Ci0KLSAgRGVza3RvcEZyYW1lKiBjdXJyZW50ID0g
cXVldWVfLmN1cnJlbnRfZnJhbWUoKTsKLSAgRGVza3RvcEZyYW1lKiBsYXN0ID0gcXVldWVfLnBy
ZXZpb3VzX2ZyYW1lKCk7Ci0gIFJUQ19EQ0hFQ0soY3VycmVudCAhPSBsYXN0KTsKLSAgZm9yIChE
ZXNrdG9wUmVnaW9uOjpJdGVyYXRvciBpdChsYXN0X2ludmFsaWRfcmVnaW9uXyk7ICFpdC5Jc0F0
RW5kKCk7Ci0gICAgICAgaXQuQWR2YW5jZSgpKSB7Ci0gICAgY3VycmVudC0+Q29weVBpeGVsc0Zy
b20oKmxhc3QsIGl0LnJlY3QoKS50b3BfbGVmdCgpLCBpdC5yZWN0KCkpOwotICB9Ci19Ci0KLXZv
aWQgU2NyZWVuQ2FwdHVyZXJMaW51eDo6RGVpbml0WGxpYigpIHsKLSAgaWYgKGdjXykgewotICAg
IFhGcmVlR0MoZGlzcGxheSgpLCBnY18pOwotICAgIGdjXyA9IG51bGxwdHI7Ci0gIH0KLQotICB4
X3NlcnZlcl9waXhlbF9idWZmZXJfLlJlbGVhc2UoKTsKLQotICBpZiAoZGlzcGxheSgpKSB7Ci0g
ICAgaWYgKGRhbWFnZV9oYW5kbGVfKSB7Ci0gICAgICBYRGFtYWdlRGVzdHJveShkaXNwbGF5KCks
IGRhbWFnZV9oYW5kbGVfKTsKLSAgICAgIGRhbWFnZV9oYW5kbGVfID0gMDsKLSAgICB9Ci0KLSAg
ICBpZiAoZGFtYWdlX3JlZ2lvbl8pIHsKLSAgICAgIFhGaXhlc0Rlc3Ryb3lSZWdpb24oZGlzcGxh
eSgpLCBkYW1hZ2VfcmVnaW9uXyk7Ci0gICAgICBkYW1hZ2VfcmVnaW9uXyA9IDA7Ci0gICAgfQot
ICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi0vLyBzdGF0aWMKLXN0ZDo6dW5pcXVlX3B0cjxE
ZXNrdG9wQ2FwdHVyZXI+IERlc2t0b3BDYXB0dXJlcjo6Q3JlYXRlUmF3U2NyZWVuQ2FwdHVyZXIo
Ci0gICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7Ci0gIGlmICghb3B0
aW9ucy54X2Rpc3BsYXkoKSkKLSAgICByZXR1cm4gbnVsbHB0cjsKLQotICBzdGQ6OnVuaXF1ZV9w
dHI8U2NyZWVuQ2FwdHVyZXJMaW51eD4gY2FwdHVyZXIobmV3IFNjcmVlbkNhcHR1cmVyTGludXgo
KSk7Ci0gIGlmICghY2FwdHVyZXIuZ2V0KCktPkluaXQob3B0aW9ucykpIHsKLSAgICByZXR1cm4g
bnVsbHB0cjsKLSAgfQotCi0gIHJldHVybiBzdGQ6Om1vdmUoY2FwdHVyZXIpOwotfQotCi19ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fZHJhd2VyX2xp
bnV4LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2RyYXdlcl9saW51eC5jYwppbmRleCAzOWNlY2E3ZGM2
MTc5OWM0NmI3MzIyNTE4ZTY2NTFhMzU2ZDUxMDE3Li4yYWI1ZTc0ODkxYzYyYWY5MDc0ZTZlZGE0
ODYzOTdkNjdmODJlNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fZHJhd2VyX2xpbnV4
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9kcmF3ZXJfbGludXguY2MKQEAgLTE0LDkgKzE0LDkg
QEAKICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zaGFyZWRfeF9kaXNwbGF5
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2RyYXdlci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9kcmF3ZXJfbG9ja19wb3Np
eC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS9zaGFyZWRfeF9kaXNw
bGF5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dy
YXBwZXJzL2luY2x1ZGUvc2xlZXAuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2Ry
YXdlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9kcmF3ZXJfdW5pdHRlc3QuY2MKaW5k
ZXggNWYwZjNjYzU3MzM1MThkNTdhYmM5YTg2ZWQwZDdjYjRlYjJmYmQzYS4uZDQ4ZmE4OWMwYjVi
YzBhNjIxZWVmNjk5MmE1ODg3ZTJmMWM0ZjliYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVu
X2RyYXdlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fZHJhd2VyX3VuaXR0ZXN0
LmNjCkBAIC0xNDAsNyArMTQwLDEyIEBAIFRFU1QoU2NyZWVuRHJhd2VyVGVzdCwgRElTQUJMRURf
RHJhd1JlY3RhbmdsZXMpIHsKICAgU2xlZXBNcygxMDAwMCk7CiB9CiAKLVRFU1QoU2NyZWVuRHJh
d2VyVGVzdCwgVHdvU2NyZWVuRHJhd2VyTG9ja3MpIHsKKyNpZiBkZWZpbmVkKFRIUkVBRF9TQU5J
VElaRVIpICAvLyBidWdzLndlYnJ0Yy5vcmcvMTAwMTkKKyNkZWZpbmUgTUFZQkVfVHdvU2NyZWVu
RHJhd2VyTG9ja3MgRElTQUJMRURfVHdvU2NyZWVuRHJhd2VyTG9ja3MKKyNlbHNlCisjZGVmaW5l
IE1BWUJFX1R3b1NjcmVlbkRyYXdlckxvY2tzIFR3b1NjcmVlbkRyYXdlckxvY2tzCisjZW5kaWYK
K1RFU1QoU2NyZWVuRHJhd2VyVGVzdCwgTUFZQkVfVHdvU2NyZWVuRHJhd2VyTG9ja3MpIHsKICNp
ZiBkZWZpbmVkKFdFQlJUQ19QT1NJWCkKICAgLy8gU2NyZWVuRHJhd2VyTG9ja1Bvc2l4IHdvbid0
IGJlIGFibGUgdG8gdW5saW5rIHRoZSBuYW1lZCBzZW1hcGhvcmUuIFNvIHVzZSBhCiAgIC8vIGRp
ZmZlcmVudCBzZW1hcGhvcmUgbmFtZSBoZXJlIHRvIGF2b2lkIGRlYWRsb2NrLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvc2hhcmVkX2Rlc2t0b3BfZnJhbWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NoYXJlZF9kZXNr
dG9wX2ZyYW1lLmgKaW5kZXggZjcwNTA4Y2VlMTViNjkwNmMyNGU2ZDEzNjYzMmUzYjNhNTI0YzBm
ZC4uZWExMmMwMDBmMmE2NDUyOGY1YzA4ZmM3M2MyN2QxMmUxOThiYjkxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvc2hhcmVkX2Rlc2t0b3BfZnJhbWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zaGFyZWRfZGVz
a3RvcF9mcmFtZS5oCkBAIC0xNiwxMiArMTYsMTMgQEAKICNpbmNsdWRlICJydGNfYmFzZS9yZWZj
b3VudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9y
dGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBTaGFyZWREZXNrdG9wRnJh
bWUgaXMgYSBEZXNrdG9wRnJhbWUgdGhhdCBtYXkgaGF2ZSBtdWx0aXBsZSBpbnN0YW5jZXMgYWxs
CiAvLyBzaGFyaW5nIHRoZSBzYW1lIGJ1ZmZlci4KLWNsYXNzIFNoYXJlZERlc2t0b3BGcmFtZSA6
IHB1YmxpYyBEZXNrdG9wRnJhbWUgeworY2xhc3MgUlRDX0VYUE9SVCBTaGFyZWREZXNrdG9wRnJh
bWUgOiBwdWJsaWMgRGVza3RvcEZyYW1lIHsKICBwdWJsaWM6CiAgIH5TaGFyZWREZXNrdG9wRnJh
bWUoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX2xp
bnV4LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX2xpbnV4LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgy
MzU5ZTUwYzJkYjE5Yzc0OGU0MTdiY2VlYzZiNTg4ZTRlZDEwMzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfbGludXguY2MKQEAgLTAsMCArMSw0MCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0
b3BfY2FwdHVyZV9vcHRpb25zLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
ZGVza3RvcF9jYXB0dXJlci5oIgorCisjaWYgZGVmaW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQor
I2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl9w
aXBld2lyZS5oIgorI2VuZGlmICAvLyBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpCisKKyNp
ZiBkZWZpbmVkKFVTRV9YMTEpCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgvd2luZG93X2NhcHR1cmVyX3gxMS5oIgorI2VuZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCisK
K25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBzdGF0aWMKK3N0ZDo6dW5pcXVlX3B0cjxEZXNrdG9w
Q2FwdHVyZXI+IERlc2t0b3BDYXB0dXJlcjo6Q3JlYXRlUmF3V2luZG93Q2FwdHVyZXIoCisgICAg
Y29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7CisjaWYgZGVmaW5lZChXRUJS
VENfVVNFX1BJUEVXSVJFKQorICBpZiAob3B0aW9ucy5hbGxvd19waXBld2lyZSgpICYmIERlc2t0
b3BDYXB0dXJlcjo6SXNSdW5uaW5nVW5kZXJXYXlsYW5kKCkpIHsKKyAgICByZXR1cm4gV2luZG93
Q2FwdHVyZXJQaXBlV2lyZTo6Q3JlYXRlUmF3V2luZG93Q2FwdHVyZXIob3B0aW9ucyk7CisgIH0K
KyNlbmRpZiAgLy8gZGVmaW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQorCisjaWYgZGVmaW5lZChV
U0VfWDExKQorICByZXR1cm4gV2luZG93Q2FwdHVyZXJYMTE6OkNyZWF0ZVJhd1dpbmRvd0NhcHR1
cmVyKG9wdGlvbnMpOworI2VuZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCisKKyAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L3dpbmRvd19jYXB0dXJlcl9tYWMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfbWFjLm1t
CmluZGV4IDk1ZTYyMmE3N2ExYzNjYmMxYjkwYjI2NzIyYjdkNzcxMDg2NmMzZWUuLmIwNjQ3ZjA0
MWI2ZDg2MDg1MTc1ZGUwZTc1YjgyNDIwYTFmYjRhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dp
bmRvd19jYXB0dXJlcl9tYWMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX21hYy5t
bQpAQCAtMTQwLDkgKzE0MCw3IEBAIGJvb2wgV2luZG93Q2FwdHVyZXJNYWM6OkZvY3VzT25TZWxl
Y3RlZFNvdXJjZSgpIHsKIGJvb2wgV2luZG93Q2FwdHVyZXJNYWM6OklzT2NjbHVkZWQoY29uc3Qg
RGVza3RvcFZlY3RvciYgcG9zKSB7CiAgIERlc2t0b3BWZWN0b3Igc3lzX3BvcyA9IHBvczsKICAg
aWYgKGNvbmZpZ3VyYXRpb25fbW9uaXRvcl8pIHsKLSAgICBjb25maWd1cmF0aW9uX21vbml0b3Jf
LT5Mb2NrKCk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbl9tb25pdG9y
Xy0+ZGVza3RvcF9jb25maWd1cmF0aW9uKCk7Ci0gICAgY29uZmlndXJhdGlvbl9tb25pdG9yXy0+
VW5sb2NrKCk7CiAgICAgc3lzX3BvcyA9IHBvcy5hZGQoY29uZmlndXJhdGlvbi5ib3VuZHMudG9w
X2xlZnQoKSk7CiAgIH0KICAgcmV0dXJuIHdpbmRvd19maW5kZXJfLkdldFdpbmRvd1VuZGVyUG9p
bnQoc3lzX3BvcykgIT0gd2luZG93X2lkXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19j
YXB0dXJlcl94MTEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfeDExLmNjCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGNhM2FlNWU4YzQwMDk2YTk0NWU5ZjEyMGZmYzliYmJh
NTg0NjViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL3dpbmRvd19jYXB0dXJlcl94MTEuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2lu
Y2x1ZGUgPFgxMS9YdXRpbC5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUu
aD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YcmVuZGVyLmg+Ci0KLSNpbmNsdWRlIDx1dGls
aXR5PgotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJl
X29wdGlvbnMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2Nh
cHR1cmVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFt
ZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXJfeDEx
LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3NoYXJlZF94X2Rpc3Bs
YXkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvd2luZG93X2xpc3Rf
dXRpbHMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9hdG9tX2Nh
Y2hlLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfc2VydmVyX3Bp
eGVsX2J1ZmZlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS90cmFjZV9ldmVudC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotbmFtZXNwYWNlIHsKLQot
Y2xhc3MgV2luZG93Q2FwdHVyZXJMaW51eCA6IHB1YmxpYyBEZXNrdG9wQ2FwdHVyZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5k
bGVyIHsKLSBwdWJsaWM6Ci0gIFdpbmRvd0NhcHR1cmVyTGludXgoY29uc3QgRGVza3RvcENhcHR1
cmVPcHRpb25zJiBvcHRpb25zKTsKLSAgfldpbmRvd0NhcHR1cmVyTGludXgoKSBvdmVycmlkZTsK
LQotICAvLyBEZXNrdG9wQ2FwdHVyZXIgaW50ZXJmYWNlLgotICB2b2lkIFN0YXJ0KENhbGxiYWNr
KiBjYWxsYmFjaykgb3ZlcnJpZGU7Ci0gIHZvaWQgQ2FwdHVyZUZyYW1lKCkgb3ZlcnJpZGU7Ci0g
IGJvb2wgR2V0U291cmNlTGlzdChTb3VyY2VMaXN0KiBzb3VyY2VzKSBvdmVycmlkZTsKLSAgYm9v
bCBTZWxlY3RTb3VyY2UoU291cmNlSWQgaWQpIG92ZXJyaWRlOwotICBib29sIEZvY3VzT25TZWxl
Y3RlZFNvdXJjZSgpIG92ZXJyaWRlOwotICBib29sIElzT2NjbHVkZWQoY29uc3QgRGVza3RvcFZl
Y3RvciYgcG9zKSBvdmVycmlkZTsKLQotICAvLyBTaGFyZWRYRGlzcGxheTo6WEV2ZW50SGFuZGxl
ciBpbnRlcmZhY2UuCi0gIGJvb2wgSGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVudCYgZXZlbnQpIG92
ZXJyaWRlOwotCi0gcHJpdmF0ZToKLSAgRGlzcGxheSogZGlzcGxheSgpIHsgcmV0dXJuIHhfZGlz
cGxheV8tPmRpc3BsYXkoKTsgfQotCi0gIC8vIFJldHVybnMgd2luZG93IHRpdGxlIGZvciB0aGUg
c3BlY2lmaWVkIFggfHdpbmRvd3wuCi0gIGJvb2wgR2V0V2luZG93VGl0bGUoOjpXaW5kb3cgd2lu
ZG93LCBzdGQ6OnN0cmluZyogdGl0bGUpOwotCi0gIENhbGxiYWNrKiBjYWxsYmFja18gPSBudWxs
cHRyOwotCi0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRYRGlzcGxheT4geF9kaXNwbGF5XzsK
LQotICBib29sIGhhc19jb21wb3NpdGVfZXh0ZW5zaW9uXyA9IGZhbHNlOwotCi0gIDo6V2luZG93
IHNlbGVjdGVkX3dpbmRvd18gPSAwOwotICBYU2VydmVyUGl4ZWxCdWZmZXIgeF9zZXJ2ZXJfcGl4
ZWxfYnVmZmVyXzsKLSAgWEF0b21DYWNoZSBhdG9tX2NhY2hlXzsKLSAgV2luZG93RmluZGVyWDEx
IHdpbmRvd19maW5kZXJfOwotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oV2luZG93
Q2FwdHVyZXJMaW51eCk7Ci19OwotCi1XaW5kb3dDYXB0dXJlckxpbnV4OjpXaW5kb3dDYXB0dXJl
ckxpbnV4KGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykKLSAgICA6IHhfZGlz
cGxheV8ob3B0aW9ucy54X2Rpc3BsYXkoKSksCi0gICAgICBhdG9tX2NhY2hlXyhkaXNwbGF5KCkp
LAotICAgICAgd2luZG93X2ZpbmRlcl8oJmF0b21fY2FjaGVfKSB7Ci0gIGludCBldmVudF9iYXNl
LCBlcnJvcl9iYXNlLCBtYWpvcl92ZXJzaW9uLCBtaW5vcl92ZXJzaW9uOwotICBpZiAoWENvbXBv
c2l0ZVF1ZXJ5RXh0ZW5zaW9uKGRpc3BsYXkoKSwgJmV2ZW50X2Jhc2UsICZlcnJvcl9iYXNlKSAm
JgotICAgICAgWENvbXBvc2l0ZVF1ZXJ5VmVyc2lvbihkaXNwbGF5KCksICZtYWpvcl92ZXJzaW9u
LCAmbWlub3JfdmVyc2lvbikgJiYKLSAgICAgIC8vIFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFw
KCkgcmVxdWlyZXMgdmVyc2lvbiAwLjIKLSAgICAgIChtYWpvcl92ZXJzaW9uID4gMCB8fCBtaW5v
cl92ZXJzaW9uID49IDIpKSB7Ci0gICAgaGFzX2NvbXBvc2l0ZV9leHRlbnNpb25fID0gdHJ1ZTsK
LSAgfSBlbHNlIHsKLSAgICBSVENfTE9HKExTX0lORk8pIDw8ICJYY29tcG9zaXRlIGV4dGVuc2lv
biBub3QgYXZhaWxhYmxlIG9yIHRvbyBvbGQuIjsKLSAgfQotCi0gIHhfZGlzcGxheV8tPkFkZEV2
ZW50SGFuZGxlcihDb25maWd1cmVOb3RpZnksIHRoaXMpOwotfQotCi1XaW5kb3dDYXB0dXJlckxp
bnV4Ojp+V2luZG93Q2FwdHVyZXJMaW51eCgpIHsKLSAgeF9kaXNwbGF5Xy0+UmVtb3ZlRXZlbnRI
YW5kbGVyKENvbmZpZ3VyZU5vdGlmeSwgdGhpcyk7Ci19Ci0KLWJvb2wgV2luZG93Q2FwdHVyZXJM
aW51eDo6R2V0U291cmNlTGlzdChTb3VyY2VMaXN0KiBzb3VyY2VzKSB7Ci0gIHJldHVybiBHZXRX
aW5kb3dMaXN0KCZhdG9tX2NhY2hlXywgW3RoaXMsIHNvdXJjZXNdKDo6V2luZG93IHdpbmRvdykg
ewotICAgIFNvdXJjZSB3OwotICAgIHcuaWQgPSB3aW5kb3c7Ci0gICAgaWYgKHRoaXMtPkdldFdp
bmRvd1RpdGxlKHdpbmRvdywgJncudGl0bGUpKSB7Ci0gICAgICBzb3VyY2VzLT5wdXNoX2JhY2so
dyk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9KTsKLX0KLQotYm9vbCBXaW5kb3dDYXB0
dXJlckxpbnV4OjpTZWxlY3RTb3VyY2UoU291cmNlSWQgaWQpIHsKLSAgaWYgKCF4X3NlcnZlcl9w
aXhlbF9idWZmZXJfLkluaXQoZGlzcGxheSgpLCBpZCkpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0g
IC8vIFRlbGwgdGhlIFggc2VydmVyIHRvIHNlbmQgdXMgd2luZG93IHJlc2l6aW5nIGV2ZW50cy4K
LSAgWFNlbGVjdElucHV0KGRpc3BsYXkoKSwgaWQsIFN0cnVjdHVyZU5vdGlmeU1hc2spOwotCi0g
IHNlbGVjdGVkX3dpbmRvd18gPSBpZDsKLQotICAvLyBJbiBhZGRpdGlvbiB0byBuZWVkaW5nIFgx
MSBzZXJ2ZXItc2lkZSBzdXBwb3J0IGZvciBYY29tcG9zaXRlLCBpdCBhY3R1YWxseQotICAvLyBu
ZWVkcyB0byBiZSB0dXJuZWQgb24gZm9yIHRoZSB3aW5kb3cuIElmIHRoZSB1c2VyIGhhcyBtb2Rl
cm4KLSAgLy8gaGFyZHdhcmUvZHJpdmVycyBidXQgaXNuJ3QgdXNpbmcgYSBjb21wb3NpdGluZyB3
aW5kb3cgbWFuYWdlciwgdGhhdCB3b24ndAotICAvLyBiZSB0aGUgY2FzZS4gSGVyZSB3ZSBhdXRv
bWF0aWNhbGx5IHR1cm4gaXQgb24uCi0KLSAgLy8gUmVkaXJlY3QgZHJhd2luZyB0byBhbiBvZmZz
Y3JlZW4gYnVmZmVyIChpZSwgdHVybiBvbiBjb21wb3NpdGluZykuIFgxMQotICAvLyByZW1lbWJl
cnMgd2hvIGhhcyByZXF1ZXN0ZWQgdGhpcyBhbmQgd2lsbCB0dXJuIGl0IG9mZiBmb3IgdXMgd2hl
biB3ZSBleGl0LgotICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5kb3coZGlzcGxheSgpLCBpZCwgQ29t
cG9zaXRlUmVkaXJlY3RBdXRvbWF0aWMpOwotCi0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIFdp
bmRvd0NhcHR1cmVyTGludXg6OkZvY3VzT25TZWxlY3RlZFNvdXJjZSgpIHsKLSAgaWYgKCFzZWxl
Y3RlZF93aW5kb3dfKQotICAgIHJldHVybiBmYWxzZTsKLQotICB1bnNpZ25lZCBpbnQgbnVtX2No
aWxkcmVuOwotICA6OldpbmRvdyogY2hpbGRyZW47Ci0gIDo6V2luZG93IHBhcmVudDsKLSAgOjpX
aW5kb3cgcm9vdDsKLSAgLy8gRmluZCB0aGUgcm9vdCB3aW5kb3cgdG8gcGFzcyBldmVudCB0by4K
LSAgaW50IHN0YXR1cyA9IFhRdWVyeVRyZWUoZGlzcGxheSgpLCBzZWxlY3RlZF93aW5kb3dfLCAm
cm9vdCwgJnBhcmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoaWxkcmVuLCAmbnVt
X2NoaWxkcmVuKTsKLSAgaWYgKHN0YXR1cyA9PSAwKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIkZhaWxlZCB0byBxdWVyeSBmb3IgdGhlIHJvb3Qgd2luZG93LiI7Ci0gICAgcmV0dXJuIGZh
bHNlOwotICB9Ci0KLSAgaWYgKGNoaWxkcmVuKQotICAgIFhGcmVlKGNoaWxkcmVuKTsKLQotICBY
UmFpc2VXaW5kb3coZGlzcGxheSgpLCBzZWxlY3RlZF93aW5kb3dfKTsKLQotICAvLyBTb21lIHdp
bmRvdyBtYW5hZ2VycyAoZS5nLiwgbWV0YWNpdHkgaW4gR05PTUUpIGNvbnNpZGVyIGl0IGlsbGVn
YWwgdG8KLSAgLy8gcmFpc2UgYSB3aW5kb3cgd2l0aG91dCBhbHNvIGdpdmluZyBpdCBpbnB1dCBm
b2N1cyB3aXRoCi0gIC8vIF9ORVRfQUNUSVZFX1dJTkRPVywgc28gWFJhaXNlV2luZG93KCkgb24g
aXRzIG93biBpc24ndCBlbm91Z2guCi0gIEF0b20gYXRvbSA9IFhJbnRlcm5BdG9tKGRpc3BsYXko
KSwgIl9ORVRfQUNUSVZFX1dJTkRPVyIsIFRydWUpOwotICBpZiAoYXRvbSAhPSBOb25lKSB7Ci0g
ICAgWEV2ZW50IHhldjsKLSAgICB4ZXYueGNsaWVudC50eXBlID0gQ2xpZW50TWVzc2FnZTsKLSAg
ICB4ZXYueGNsaWVudC5zZXJpYWwgPSAwOwotICAgIHhldi54Y2xpZW50LnNlbmRfZXZlbnQgPSBU
cnVlOwotICAgIHhldi54Y2xpZW50LndpbmRvdyA9IHNlbGVjdGVkX3dpbmRvd187Ci0gICAgeGV2
LnhjbGllbnQubWVzc2FnZV90eXBlID0gYXRvbTsKLQotICAgIC8vIFRoZSBmb3JtYXQgbWVtYmVy
IGlzIHNldCB0byA4LCAxNiwgb3IgMzIgYW5kIHNwZWNpZmllcyB3aGV0aGVyIHRoZQotICAgIC8v
IGRhdGEgc2hvdWxkIGJlIHZpZXdlZCBhcyBhIGxpc3Qgb2YgYnl0ZXMsIHNob3J0cywgb3IgbG9u
Z3MuCi0gICAgeGV2LnhjbGllbnQuZm9ybWF0ID0gMzI7Ci0KLSAgICBtZW1zZXQoeGV2LnhjbGll
bnQuZGF0YS5sLCAwLCBzaXplb2YoeGV2LnhjbGllbnQuZGF0YS5sKSk7Ci0KLSAgICBYU2VuZEV2
ZW50KGRpc3BsYXkoKSwgcm9vdCwgRmFsc2UsCi0gICAgICAgICAgICAgICBTdWJzdHJ1Y3R1cmVS
ZWRpcmVjdE1hc2sgfCBTdWJzdHJ1Y3R1cmVOb3RpZnlNYXNrLCAmeGV2KTsKLSAgfQotICBYRmx1
c2goZGlzcGxheSgpKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2luZG93Q2FwdHVyZXJM
aW51eDo6U3RhcnQoQ2FsbGJhY2sqIGNhbGxiYWNrKSB7Ci0gIFJUQ19EQ0hFQ0soIWNhbGxiYWNr
Xyk7Ci0gIFJUQ19EQ0hFQ0soY2FsbGJhY2spOwotCi0gIGNhbGxiYWNrXyA9IGNhbGxiYWNrOwot
fQotCi12b2lkIFdpbmRvd0NhcHR1cmVyTGludXg6OkNhcHR1cmVGcmFtZSgpIHsKLSAgVFJBQ0Vf
RVZFTlQwKCJ3ZWJydGMiLCAiV2luZG93Q2FwdHVyZXJMaW51eDo6Q2FwdHVyZUZyYW1lIik7Ci0K
LSAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLklzV2luZG93VmFsaWQoKSkgewotICAgIFJU
Q19MT0coTFNfRVJST1IpIDw8ICJUaGUgd2luZG93IGlzIG5vIGxvbmdlciB2YWxpZC4iOwotICAg
IGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfUEVSTUFORU5ULCBudWxs
cHRyKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICB4X2Rpc3BsYXlfLT5Qcm9jZXNzUGVuZGluZ1hF
dmVudHMoKTsKLQotICBpZiAoIWhhc19jb21wb3NpdGVfZXh0ZW5zaW9uXykgewotICAgIC8vIFdp
dGhvdXQgdGhlIFhjb21wb3NpdGUgZXh0ZW5zaW9uIHdlIGNhcHR1cmUgd2hlbiB0aGUgd2hvbGUg
d2luZG93IGlzCi0gICAgLy8gdmlzaWJsZSBvbiBzY3JlZW4gYW5kIG5vdCBjb3ZlcmVkIGJ5IGFu
eSBvdGhlciB3aW5kb3cuIFRoaXMgaXMgbm90Ci0gICAgLy8gc29tZXRoaW5nIHdlIHdhbnQgc28g
aW5zdGVhZCwganVzdCBiYWlsIG91dC4KLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiTm8gWGNv
bXBvc2l0ZSBleHRlbnNpb24gZGV0ZWN0ZWQuIjsKLSAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJl
c3VsdChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVOVCwgbnVsbHB0cik7Ci0gICAgcmV0dXJuOwotICB9
Ci0KLSAgaWYgKEdldFdpbmRvd1N0YXRlKCZhdG9tX2NhY2hlXywgc2VsZWN0ZWRfd2luZG93Xykg
PT0gSWNvbmljU3RhdGUpIHsKLSAgICAvLyBXaW5kb3cgaXMgaW4gbWluaW1pemVkLiBSZXR1cm4g
YSAxeDEgZnJhbWUgYXMgc2FtZSBhcyBPU1gvV2luIGRvZXMuCi0gICAgc3RkOjp1bmlxdWVfcHRy
PERlc2t0b3BGcmFtZT4gZnJhbWUoCi0gICAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShEZXNr
dG9wU2l6ZSgxLCAxKSkpOwotICAgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6
U1VDQ0VTUywgc3RkOjptb3ZlKGZyYW1lKSk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgc3RkOjp1
bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gZnJhbWUoCi0gICAgICBuZXcgQmFzaWNEZXNrdG9wRnJh
bWUoeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy53aW5kb3dfc2l6ZSgpKSk7Ci0KLSAgeF9zZXJ2ZXJf
cGl4ZWxfYnVmZmVyXy5TeW5jaHJvbml6ZSgpOwotICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZl
cl8uQ2FwdHVyZVJlY3QoRGVza3RvcFJlY3Q6Ok1ha2VTaXplKGZyYW1lLT5zaXplKCkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUuZ2V0KCkpKSB7Ci0g
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVGVtcG9yYXJpbHkgZmFpbGVkIHRvIGNhcHR1cmUg
d2lub2R3LiI7Ci0gICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9U
RU1QT1JBUlksIG51bGxwdHIpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGZyYW1lLT5tdXRhYmxl
X3VwZGF0ZWRfcmVnaW9uKCktPlNldFJlY3QoCi0gICAgICBEZXNrdG9wUmVjdDo6TWFrZVNpemUo
ZnJhbWUtPnNpemUoKSkpOwotICBmcmFtZS0+c2V0X3RvcF9sZWZ0KHhfc2VydmVyX3BpeGVsX2J1
ZmZlcl8ud2luZG93X3JlY3QoKS50b3BfbGVmdCgpKTsKLQotICBjYWxsYmFja18tPk9uQ2FwdHVy
ZVJlc3VsdChSZXN1bHQ6OlNVQ0NFU1MsIHN0ZDo6bW92ZShmcmFtZSkpOwotfQotCi1ib29sIFdp
bmRvd0NhcHR1cmVyTGludXg6OklzT2NjbHVkZWQoY29uc3QgRGVza3RvcFZlY3RvciYgcG9zKSB7
Ci0gIHJldHVybiB3aW5kb3dfZmluZGVyXy5HZXRXaW5kb3dVbmRlclBvaW50KHBvcykgIT0KLSAg
ICAgICAgIHN0YXRpY19jYXN0PFdpbmRvd0lkPihzZWxlY3RlZF93aW5kb3dfKTsKLX0KLQotYm9v
bCBXaW5kb3dDYXB0dXJlckxpbnV4OjpIYW5kbGVYRXZlbnQoY29uc3QgWEV2ZW50JiBldmVudCkg
ewotICBpZiAoZXZlbnQudHlwZSA9PSBDb25maWd1cmVOb3RpZnkpIHsKLSAgICBYQ29uZmlndXJl
RXZlbnQgeGNlID0gZXZlbnQueGNvbmZpZ3VyZTsKLSAgICBpZiAoeGNlLndpbmRvdyA9PSBzZWxl
Y3RlZF93aW5kb3dfKSB7Ci0gICAgICBpZiAoIURlc2t0b3BSZWN0RnJvbVhBdHRyaWJ1dGVzKHhj
ZSkuZXF1YWxzKAotICAgICAgICAgICAgICB4X3NlcnZlcl9waXhlbF9idWZmZXJfLndpbmRvd19y
ZWN0KCkpKSB7Ci0gICAgICAgIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5Jbml0KGRpc3Bs
YXkoKSwgc2VsZWN0ZWRfd2luZG93XykpIHsKLSAgICAgICAgICBSVENfTE9HKExTX0VSUk9SKQot
ICAgICAgICAgICAgICA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgcGl4ZWwgYnVmZmVyIGFmdGVy
IHJlc2l6aW5nLiI7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvLyBBbHdh
eXMgcmV0dXJucyBmYWxzZSwgc28gb3RoZXIgb2JzZXJ2ZXJzIGNhbiBzdGlsbCByZWNlaXZlIHRo
ZSBldmVudHMuCi0gIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXaW5kb3dDYXB0dXJlckxpbnV4
OjpHZXRXaW5kb3dUaXRsZSg6OldpbmRvdyB3aW5kb3csIHN0ZDo6c3RyaW5nKiB0aXRsZSkgewot
ICBpbnQgc3RhdHVzOwotICBib29sIHJlc3VsdCA9IGZhbHNlOwotICBYVGV4dFByb3BlcnR5IHdp
bmRvd19uYW1lOwotICB3aW5kb3dfbmFtZS52YWx1ZSA9IG51bGxwdHI7Ci0gIGlmICh3aW5kb3cp
IHsKLSAgICBzdGF0dXMgPSBYR2V0V01OYW1lKGRpc3BsYXkoKSwgd2luZG93LCAmd2luZG93X25h
bWUpOwotICAgIGlmIChzdGF0dXMgJiYgd2luZG93X25hbWUudmFsdWUgJiYgd2luZG93X25hbWUu
bml0ZW1zKSB7Ci0gICAgICBpbnQgY250OwotICAgICAgY2hhcioqIGxpc3QgPSBudWxscHRyOwot
ICAgICAgc3RhdHVzID0KLSAgICAgICAgICBYdXRmOFRleHRQcm9wZXJ0eVRvVGV4dExpc3QoZGlz
cGxheSgpLCAmd2luZG93X25hbWUsICZsaXN0LCAmY250KTsKLSAgICAgIGlmIChzdGF0dXMgPj0g
U3VjY2VzcyAmJiBjbnQgJiYgKmxpc3QpIHsKLSAgICAgICAgaWYgKGNudCA+IDEpIHsKLSAgICAg
ICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJXaW5kb3cgaGFzICIgPDwgY250Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiIHRleHQgcHJvcGVydGllcywgb25seSB1c2luZyB0aGUgZmly
c3Qgb25lLiI7Ci0gICAgICAgIH0KLSAgICAgICAgKnRpdGxlID0gKmxpc3Q7Ci0gICAgICAgIHJl
c3VsdCA9IHRydWU7Ci0gICAgICB9Ci0gICAgICBpZiAobGlzdCkKLSAgICAgICAgWEZyZWVTdHJp
bmdMaXN0KGxpc3QpOwotICAgIH0KLSAgICBpZiAod2luZG93X25hbWUudmFsdWUpCi0gICAgICBY
RnJlZSh3aW5kb3dfbmFtZS52YWx1ZSk7Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAg
Ly8gbmFtZXNwYWNlCi0KLS8vIHN0YXRpYwotc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0dXJl
cj4gRGVza3RvcENhcHR1cmVyOjpDcmVhdGVSYXdXaW5kb3dDYXB0dXJlcigKLSAgICBjb25zdCBE
ZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKLSAgaWYgKCFvcHRpb25zLnhfZGlzcGxh
eSgpKQotICAgIHJldHVybiBudWxscHRyOwotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERlc2t0
b3BDYXB0dXJlcj4obmV3IFdpbmRvd0NhcHR1cmVyTGludXgob3B0aW9ucykpOwotfQotCi19ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl91bml0dGVzdC5jYwppbmRleCA4ODMy
N2FhYWM1NDgzYWQ5NTE5OTgxMDE3N2U4NzVlMmY2ODM4MTIwLi5kZjkwNjdlZjJjYjU5NzMzNTcz
MmFlZmU0OTFjZWEyNGE0ZTM4YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVy
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXJfdW5pdHRlc3QuY2MKQEAg
LTIxLDggKzIxLDggQEAKIAogI2lmIGRlZmluZWQoVVNFX1gxMSkKICNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvc2hh
cmVkX3hfZGlzcGxheS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94
X2F0b21fY2FjaGUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9z
aGFyZWRfeF9kaXNwbGF5LmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgveF9hdG9tX2NhY2hlLmgiCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXJfeDExLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93
X2ZpbmRlcl94MTEuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNjk0MzI2ZDJm
ZDg0MGZiNGU5MzJhMjkwZThkYWRhMTdhZWQ1MmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl94MTEuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQot
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXJfeDExLmgiCi0KLSNpbmNs
dWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS94MTEvd2luZG93X2xpc3RfdXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLVdpbmRvd0ZpbmRlclgxMTo6V2luZG93RmluZGVy
WDExKFhBdG9tQ2FjaGUqIGNhY2hlKSA6IGNhY2hlXyhjYWNoZSkgewotICBSVENfRENIRUNLKGNh
Y2hlXyk7Ci19Ci0KLVdpbmRvd0ZpbmRlclgxMTo6fldpbmRvd0ZpbmRlclgxMSgpID0gZGVmYXVs
dDsKLQotV2luZG93SWQgV2luZG93RmluZGVyWDExOjpHZXRXaW5kb3dVbmRlclBvaW50KERlc2t0
b3BWZWN0b3IgcG9pbnQpIHsKLSAgV2luZG93SWQgaWQgPSBrTnVsbFdpbmRvd0lkOwotICBHZXRX
aW5kb3dMaXN0KGNhY2hlXywgWyZpZCwgdGhpcywgcG9pbnRdKDo6V2luZG93IHdpbmRvdykgewot
ICAgIERlc2t0b3BSZWN0IHJlY3Q7Ci0gICAgaWYgKEdldFdpbmRvd1JlY3QodGhpcy0+Y2FjaGVf
LT5kaXNwbGF5KCksIHdpbmRvdywgJnJlY3QpICYmCi0gICAgICAgIHJlY3QuQ29udGFpbnMocG9p
bnQpKSB7Ci0gICAgICBpZCA9IHdpbmRvdzsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci0gIH0pOwotICByZXR1cm4gaWQ7Ci19Ci0KLS8vIHN0YXRpYwotc3Rk
Ojp1bmlxdWVfcHRyPFdpbmRvd0ZpbmRlcj4gV2luZG93RmluZGVyOjpDcmVhdGUoCi0gICAgY29u
c3QgV2luZG93RmluZGVyOjpPcHRpb25zJiBvcHRpb25zKSB7Ci0gIGlmIChvcHRpb25zLmNhY2hl
ID09IG51bGxwdHIpIHsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSAgfQotCi0gIHJldHVybiBhYnNs
OjptYWtlX3VuaXF1ZTxXaW5kb3dGaW5kZXJYMTE+KG9wdGlvbnMuY2FjaGUpOwotfQotCi19ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyX3gx
MS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl94MTEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzhjMzBjNDY3MGJhYzgyZTM5OTVjOWUxMTc3Y2ExNGNiYTZkN2VkMi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3df
ZmluZGVyX3gxMS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqICBDb3B5
cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfV0lORE9XX0ZJTkRF
Ul9YMTFfSF8KLSNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfV0lORE9XX0ZJTkRFUl9Y
MTFfSF8KLQotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXIu
aCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIFhBdG9tQ2FjaGU7Ci0KLS8vIFRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBXaW5kb3dGaW5kZXIgZm9yIFgxMS4KLWNsYXNzIFdpbmRvd0ZpbmRl
clgxMSBmaW5hbCA6IHB1YmxpYyBXaW5kb3dGaW5kZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQg
V2luZG93RmluZGVyWDExKFhBdG9tQ2FjaGUqIGNhY2hlKTsKLSAgfldpbmRvd0ZpbmRlclgxMSgp
IG92ZXJyaWRlOwotCi0gIC8vIFdpbmRvd0ZpbmRlciBpbXBsZW1lbnRhdGlvbi4KLSAgV2luZG93
SWQgR2V0V2luZG93VW5kZXJQb2ludChEZXNrdG9wVmVjdG9yIHBvaW50KSBvdmVycmlkZTsKLQot
IHByaXZhdGU6Ci0gIFhBdG9tQ2FjaGUqIGNvbnN0IGNhY2hlXzsKLX07Ci0KLX0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9XSU5ET1df
RklOREVSX1gxMV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3NoYXJlZF94X2Rpc3BsYXku
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hfZGlzcGxheS5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZGI2YTY0YjgxZDliNzUxYmE5NWEzY2FmMmJlOWIyZTg3MTlhYTFkMS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEv
c2hhcmVkX3hfZGlzcGxheS5jYworKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDEx
L3NoYXJlZF94X2Rpc3BsYXkuaCIKLQotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0KLSNpbmNsdWRl
IDxhbGdvcml0aG0+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1TaGFyZWRYRGlzcGxh
eTo6U2hhcmVkWERpc3BsYXkoRGlzcGxheSogZGlzcGxheSkgOiBkaXNwbGF5XyhkaXNwbGF5KSB7
Ci0gIFJUQ19EQ0hFQ0soZGlzcGxheV8pOwotfQotCi1TaGFyZWRYRGlzcGxheTo6flNoYXJlZFhE
aXNwbGF5KCkgewotICBSVENfRENIRUNLKGV2ZW50X2hhbmRsZXJzXy5lbXB0eSgpKTsKLSAgWENs
b3NlRGlzcGxheShkaXNwbGF5Xyk7Ci19Ci0KLS8vIHN0YXRpYwotcnRjOjpzY29wZWRfcmVmcHRy
PFNoYXJlZFhEaXNwbGF5PiBTaGFyZWRYRGlzcGxheTo6Q3JlYXRlKAotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBkaXNwbGF5X25hbWUpIHsKLSAgRGlzcGxheSogZGlzcGxheSA9Ci0gICAgICBYT3Bl
bkRpc3BsYXkoZGlzcGxheV9uYW1lLmVtcHR5KCkgPyBOVUxMIDogZGlzcGxheV9uYW1lLmNfc3Ry
KCkpOwotICBpZiAoIWRpc3BsYXkpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVW5hYmxl
IHRvIG9wZW4gZGlzcGxheSI7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLSAgcmV0dXJuIG5ldyBT
aGFyZWRYRGlzcGxheShkaXNwbGF5KTsKLX0KLQotLy8gc3RhdGljCi1ydGM6OnNjb3BlZF9yZWZw
dHI8U2hhcmVkWERpc3BsYXk+IFNoYXJlZFhEaXNwbGF5OjpDcmVhdGVEZWZhdWx0KCkgewotICBy
ZXR1cm4gQ3JlYXRlKHN0ZDo6c3RyaW5nKCkpOwotfQotCi12b2lkIFNoYXJlZFhEaXNwbGF5OjpB
ZGRFdmVudEhhbmRsZXIoaW50IHR5cGUsIFhFdmVudEhhbmRsZXIqIGhhbmRsZXIpIHsKLSAgZXZl
bnRfaGFuZGxlcnNfW3R5cGVdLnB1c2hfYmFjayhoYW5kbGVyKTsKLX0KLQotdm9pZCBTaGFyZWRY
RGlzcGxheTo6UmVtb3ZlRXZlbnRIYW5kbGVyKGludCB0eXBlLCBYRXZlbnRIYW5kbGVyKiBoYW5k
bGVyKSB7Ci0gIEV2ZW50SGFuZGxlcnNNYXA6Oml0ZXJhdG9yIGhhbmRsZXJzID0gZXZlbnRfaGFu
ZGxlcnNfLmZpbmQodHlwZSk7Ci0gIGlmIChoYW5kbGVycyA9PSBldmVudF9oYW5kbGVyc18uZW5k
KCkpCi0gICAgcmV0dXJuOwotCi0gIHN0ZDo6dmVjdG9yPFhFdmVudEhhbmRsZXIqPjo6aXRlcmF0
b3IgbmV3X2VuZCA9Ci0gICAgICBzdGQ6OnJlbW92ZShoYW5kbGVycy0+c2Vjb25kLmJlZ2luKCks
IGhhbmRsZXJzLT5zZWNvbmQuZW5kKCksIGhhbmRsZXIpOwotICBoYW5kbGVycy0+c2Vjb25kLmVy
YXNlKG5ld19lbmQsIGhhbmRsZXJzLT5zZWNvbmQuZW5kKCkpOwotCi0gIC8vIENoZWNrIGlmIG5v
IGhhbmRsZXJzIGxlZnQgZm9yIHRoaXMgZXZlbnQuCi0gIGlmIChoYW5kbGVycy0+c2Vjb25kLmVt
cHR5KCkpCi0gICAgZXZlbnRfaGFuZGxlcnNfLmVyYXNlKGhhbmRsZXJzKTsKLX0KLQotdm9pZCBT
aGFyZWRYRGlzcGxheTo6UHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCkgewotICAvLyBIb2xkIHJlZmVy
ZW5jZSB0byB8dGhpc3wgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nIGRlc3Ryb3llZCB3aGlsZQot
ICAvLyBwcm9jZXNzaW5nIGV2ZW50cy4KLSAgcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNw
bGF5PiBzZWxmKHRoaXMpOwotCi0gIC8vIEZpbmQgdGhlIG51bWJlciBvZiBldmVudHMgdGhhdCBh
cmUgb3V0c3RhbmRpbmcgIm5vdy4iICBXZSBkb24ndCBqdXN0IGxvb3AKLSAgLy8gb24gWFBlbmRp
bmcgYmVjYXVzZSB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGlzIHRlcm1pbmF0ZXMuCi0gIGludCBl
dmVudHNfdG9fcHJvY2VzcyA9IFhQZW5kaW5nKGRpc3BsYXkoKSk7Ci0gIFhFdmVudCBlOwotCi0g
IGZvciAoaW50IGkgPSAwOyBpIDwgZXZlbnRzX3RvX3Byb2Nlc3M7IGkrKykgewotICAgIFhOZXh0
RXZlbnQoZGlzcGxheSgpLCAmZSk7Ci0gICAgRXZlbnRIYW5kbGVyc01hcDo6aXRlcmF0b3IgaGFu
ZGxlcnMgPSBldmVudF9oYW5kbGVyc18uZmluZChlLnR5cGUpOwotICAgIGlmIChoYW5kbGVycyA9
PSBldmVudF9oYW5kbGVyc18uZW5kKCkpCi0gICAgICBjb250aW51ZTsKLSAgICBmb3IgKHN0ZDo6
dmVjdG9yPFhFdmVudEhhbmRsZXIqPjo6aXRlcmF0b3IgaXQgPSBoYW5kbGVycy0+c2Vjb25kLmJl
Z2luKCk7Ci0gICAgICAgICBpdCAhPSBoYW5kbGVycy0+c2Vjb25kLmVuZCgpOyArK2l0KSB7Ci0g
ICAgICBpZiAoKCppdCktPkhhbmRsZVhFdmVudChlKSkKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gx
MS9zaGFyZWRfeF9kaXNwbGF5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hfZGlzcGxheS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDkzYjNiMTc1MTQ0ZDE0YzdkMzYzYjRjMWIz
YzYyNzg3YzQ4Y2VmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL3gxMS9zaGFyZWRfeF9kaXNwbGF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4
MSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0RFU0tU
T1BfQ0FQVFVSRV9YMTFfU0hBUkVEX1hfRElTUExBWV9IXwotI2RlZmluZSBNT0RVTEVTX0RFU0tU
T1BfQ0FQVFVSRV9YMTFfU0hBUkVEX1hfRElTUExBWV9IXwotCi0jaW5jbHVkZSA8bWFwPgotI2lu
Y2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgImFwaS9yZWZj
b3VudGVkYmFzZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgotCi0vLyBJbmNsdWRpbmcgWGxpYi5o
IHdpbGwgaW52b2x2ZSBldmlsIGRlZmluZXMgKEJvb2wsIFN0YXR1cywgVHJ1ZSwgRmFsc2UpLCB3
aGljaAotLy8gZWFzaWx5IGNvbmZsaWN0IHdpdGggb3RoZXIgaGVhZGVycy4KLXR5cGVkZWYgc3Ry
dWN0IF9YRGlzcGxheSBEaXNwbGF5OwotdHlwZWRlZiB1bmlvbiBfWEV2ZW50IFhFdmVudDsKLQot
bmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIEEgcmVmLWNvdW50ZWQgb2JqZWN0IHRvIHN0b3JlIFhE
aXNwbGF5IGNvbm5lY3Rpb24uCi1jbGFzcyBTaGFyZWRYRGlzcGxheSA6IHB1YmxpYyBydGM6OlJl
ZkNvdW50ZWRCYXNlIHsKLSBwdWJsaWM6Ci0gIGNsYXNzIFhFdmVudEhhbmRsZXIgewotICAgcHVi
bGljOgotICAgIHZpcnR1YWwgflhFdmVudEhhbmRsZXIoKSB7fQotCi0gICAgLy8gUHJvY2Vzc2Vz
IFhFdmVudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBldmVudCBoYXMgYmVlbiBoYW5kbGVkLgotICAg
IHZpcnR1YWwgYm9vbCBIYW5kbGVYRXZlbnQoY29uc3QgWEV2ZW50JiBldmVudCkgPSAwOwotICB9
OwotCi0gIC8vIFRha2VzIG93bmVyc2hpcCBvZiB8ZGlzcGxheXwuCi0gIGV4cGxpY2l0IFNoYXJl
ZFhEaXNwbGF5KERpc3BsYXkqIGRpc3BsYXkpOwotCi0gIC8vIENyZWF0ZXMgYSBuZXcgWDExIERp
c3BsYXkgZm9yIHRoZSB8ZGlzcGxheV9uYW1lfC4gTlVMTCBpcyByZXR1cm5lZCBpZiBYMTEKLSAg
Ly8gY29ubmVjdGlvbiBmYWlsZWQuIEVxdWl2YWxlbnQgdG8gQ3JlYXRlRGVmYXVsdCgpIHdoZW4g
fGRpc3BsYXlfbmFtZXwgaXMKLSAgLy8gZW1wdHkuCi0gIHN0YXRpYyBydGM6OnNjb3BlZF9yZWZw
dHI8U2hhcmVkWERpc3BsYXk+IENyZWF0ZSgKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXNw
bGF5X25hbWUpOwotCi0gIC8vIENyZWF0ZXMgWDExIERpc3BsYXkgY29ubmVjdGlvbiBmb3IgdGhl
IGRlZmF1bHQgZGlzcGxheSAoZS5nLiBzcGVjaWZpZWQgaW4KLSAgLy8gRElTUExBWSkuIE5VTEwg
aXMgcmV0dXJuZWQgaWYgWDExIGNvbm5lY3Rpb24gZmFpbGVkLgotICBzdGF0aWMgcnRjOjpzY29w
ZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiBDcmVhdGVEZWZhdWx0KCk7Ci0KLSAgRGlzcGxheSog
ZGlzcGxheSgpIHsgcmV0dXJuIGRpc3BsYXlfOyB9Ci0KLSAgLy8gQWRkcyBhIG5ldyBldmVudCB8
aGFuZGxlcnwgZm9yIFhFdmVudCdzIG9mIHx0eXBlfC4KLSAgdm9pZCBBZGRFdmVudEhhbmRsZXIo
aW50IHR5cGUsIFhFdmVudEhhbmRsZXIqIGhhbmRsZXIpOwotCi0gIC8vIFJlbW92ZXMgZXZlbnQg
fGhhbmRsZXJ8IGFkZGVkIHVzaW5nIHxBZGRFdmVudEhhbmRsZXJ8LiBEb2Vzbid0IGRvIGFueXRo
aW5nCi0gIC8vIGlmIHxoYW5kbGVyfCBpcyBub3QgcmVnaXN0ZXJlZC4KLSAgdm9pZCBSZW1vdmVF
dmVudEhhbmRsZXIoaW50IHR5cGUsIFhFdmVudEhhbmRsZXIqIGhhbmRsZXIpOwotCi0gIC8vIFBy
b2Nlc3NlcyBwZW5kaW5nIFhFdmVudHMsIGNhbGxpbmcgY29ycmVzcG9uZGluZyBldmVudCBoYW5k
bGVycy4KLSAgdm9pZCBQcm9jZXNzUGVuZGluZ1hFdmVudHMoKTsKLQotIHByb3RlY3RlZDoKLSAg
flNoYXJlZFhEaXNwbGF5KCkgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICB0eXBlZGVmIHN0ZDo6
bWFwPGludCwgc3RkOjp2ZWN0b3I8WEV2ZW50SGFuZGxlcio+ID4gRXZlbnRIYW5kbGVyc01hcDsK
LQotICBEaXNwbGF5KiBkaXNwbGF5XzsKLQotICBFdmVudEhhbmRsZXJzTWFwIGV2ZW50X2hhbmRs
ZXJzXzsKLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNoYXJlZFhEaXNwbGF5KTsK
LX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tU
T1BfQ0FQVFVSRV9YMTFfU0hBUkVEX1hfRElTUExBWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
eDExL3dpbmRvd19saXN0X3V0aWxzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3dpbmRvd19saXN0X3V0aWxz
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTA3MGQ4ODc4MjRjMGFmNjVhOWY2
NTc5MTdlZTkyODZjYmFjYTVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3gxMS93aW5kb3dfbGlzdF91dGlscy5jYworKysgL2Rldi9udWxs
CkBAIC0xLDI0NiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS93aW5kb3dfbGlzdF91dGlscy5oIgotCi0jaW5jbHVk
ZSA8WDExL1hhdG9tLmg+Ci0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvWHV0
aWwuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2Vycm9yX3RyYXAuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotCi1uYW1lc3BhY2Ugd2VicnRj
IHsKLQotbmFtZXNwYWNlIHsKLQotY2xhc3MgRGVmZXJYRnJlZSB7Ci0gcHVibGljOgotICBleHBs
aWNpdCBEZWZlclhGcmVlKHZvaWQqIGRhdGEpIDogZGF0YV8oZGF0YSkge30KLSAgfkRlZmVyWEZy
ZWUoKTsKLQotIHByaXZhdGU6Ci0gIHZvaWQqIGNvbnN0IGRhdGFfOwotfTsKLQotRGVmZXJYRnJl
ZTo6fkRlZmVyWEZyZWUoKSB7Ci0gIGlmIChkYXRhXykKLSAgICBYRnJlZShkYXRhXyk7Ci19Ci0K
LS8vIENvbnZlbmllbmNlIHdyYXBwZXIgZm9yIFhHZXRXaW5kb3dQcm9wZXJ0eSgpIHJlc3VsdHMu
Ci10ZW1wbGF0ZSA8Y2xhc3MgUHJvcGVydHlUeXBlPgotY2xhc3MgWFdpbmRvd1Byb3BlcnR5IHsK
LSBwdWJsaWM6Ci0gIFhXaW5kb3dQcm9wZXJ0eShEaXNwbGF5KiBkaXNwbGF5LCBXaW5kb3cgd2lu
ZG93LCBBdG9tIHByb3BlcnR5KSB7Ci0gICAgY29uc3QgaW50IGtCaXRzUGVyQnl0ZSA9IDg7Ci0g
ICAgQXRvbSBhY3R1YWxfdHlwZTsKLSAgICBpbnQgYWN0dWFsX2Zvcm1hdDsKLSAgICB1bnNpZ25l
ZCBsb25nIGJ5dGVzX2FmdGVyOyAgLy8gTk9MSU5UOiB0eXBlIHJlcXVpcmVkIGJ5IFhHZXRXaW5k
b3dQcm9wZXJ0eQotICAgIGludCBzdGF0dXMgPSBYR2V0V2luZG93UHJvcGVydHkoCi0gICAgICAg
IGRpc3BsYXksIHdpbmRvdywgcHJvcGVydHksIDBMLCB+MEwsIEZhbHNlLCBBbnlQcm9wZXJ0eVR5
cGUsCi0gICAgICAgICZhY3R1YWxfdHlwZSwgJmFjdHVhbF9mb3JtYXQsICZzaXplXywgJmJ5dGVz
X2FmdGVyLCAmZGF0YV8pOwotICAgIGlmIChzdGF0dXMgIT0gU3VjY2VzcykgewotICAgICAgZGF0
YV8gPSBudWxscHRyOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoc2l6ZW9mKFByb3Bl
cnR5VHlwZSkgKiBrQml0c1BlckJ5dGUgIT0gYWN0dWFsX2Zvcm1hdCkgewotICAgICAgc2l6ZV8g
PSAwOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlzX3ZhbGlkXyA9IHRydWU7Ci0gIH0K
LQotICB+WFdpbmRvd1Byb3BlcnR5KCkgewotICAgIGlmIChkYXRhXykKLSAgICAgIFhGcmVlKGRh
dGFfKTsKLSAgfQotCi0gIC8vIFRydWUgaWYgd2UgZ290IHByb3Blcmx5IHZhbHVlIHN1Y2Nlc3Nm
dWxseS4KLSAgYm9vbCBpc192YWxpZCgpIGNvbnN0IHsgcmV0dXJuIGlzX3ZhbGlkXzsgfQotCi0g
IC8vIFNpemUgYW5kIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4KLSAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBzaXplXzsgfQotICBjb25zdCBQcm9wZXJ0eVR5cGUqIGRhdGEoKSBjb25zdCB7
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UHJvcGVydHlUeXBlKj4oZGF0YV8pOwotICB9
Ci0gIFByb3BlcnR5VHlwZSogZGF0YSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UHJvcGVy
dHlUeXBlKj4oZGF0YV8pOyB9Ci0KLSBwcml2YXRlOgotICBib29sIGlzX3ZhbGlkXyA9IGZhbHNl
OwotICB1bnNpZ25lZCBsb25nIHNpemVfID0gMDsgIC8vIE5PTElOVDogdHlwZSByZXF1aXJlZCBi
eSBYR2V0V2luZG93UHJvcGVydHkKLSAgdW5zaWduZWQgY2hhciogZGF0YV8gPSBudWxscHRyOwot
Ci0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oWFdpbmRvd1Byb3BlcnR5KTsKLX07Ci0K
LS8vIEl0ZXJhdGVzIHRocm91Z2ggfHdpbmRvd3wgaGllcmFyY2h5IHRvIGZpbmQgZmlyc3Qgdmlz
aWJsZSB3aW5kb3csIGkuZS4gb25lCi0vLyB0aGF0IGhhcyBXTV9TVEFURSBwcm9wZXJ0eSBzZXQg
dG8gTm9ybWFsU3RhdGUuCi0vLyBTZWUgaHR0cDovL3Ryb25jaGUuY29tL2d1aS94L2ljY2NtL3Nl
Yy00Lmh0bWwjcy00LjEuMy4xIC4KLTo6V2luZG93IEdldEFwcGxpY2F0aW9uV2luZG93KFhBdG9t
Q2FjaGUqIGNhY2hlLCA6OldpbmRvdyB3aW5kb3cpIHsKLSAgaW50MzJfdCBzdGF0ZSA9IEdldFdp
bmRvd1N0YXRlKGNhY2hlLCB3aW5kb3cpOwotICBpZiAoc3RhdGUgPT0gTm9ybWFsU3RhdGUpIHsK
LSAgICAvLyBXaW5kb3cgaGFzIFdNX1NUQVRFPT1Ob3JtYWxTdGF0ZS4gUmV0dXJuIGl0LgotICAg
IHJldHVybiB3aW5kb3c7Ci0gIH0gZWxzZSBpZiAoc3RhdGUgPT0gSWNvbmljU3RhdGUpIHsKLSAg
ICAvLyBXaW5kb3cgaXMgaW4gbWluaW1pemVkLiBTa2lwIGl0LgotICAgIHJldHVybiAwOwotICB9
Ci0KLSAgUlRDX0RDSEVDS19FUShzdGF0ZSwgV2l0aGRyYXduU3RhdGUpOwotICAvLyBJZiB0aGUg
d2luZG93IGlzIGluIFdpdGhkcmF3blN0YXRlIHRoZW4gbG9vayBhdCBhbGwgb2YgaXRzIGNoaWxk
cmVuLgotICA6OldpbmRvdyByb290LCBwYXJlbnQ7Ci0gIDo6V2luZG93KiBjaGlsZHJlbjsKLSAg
dW5zaWduZWQgaW50IG51bV9jaGlsZHJlbjsKLSAgaWYgKCFYUXVlcnlUcmVlKGNhY2hlLT5kaXNw
bGF5KCksIHdpbmRvdywgJnJvb3QsICZwYXJlbnQsICZjaGlsZHJlbiwKLSAgICAgICAgICAgICAg
ICAgICZudW1fY2hpbGRyZW4pKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0
byBxdWVyeSBmb3IgY2hpbGQgd2luZG93cyBhbHRob3VnaCB3aW5kb3ciCi0gICAgICAgICAgICAg
ICAgICAgICAgPDwgImRvZXMgbm90IGhhdmUgYSB2YWxpZCBXTV9TVEFURS4iOwotICAgIHJldHVy
biAwOwotICB9Ci0gIDo6V2luZG93IGFwcF93aW5kb3cgPSAwOwotICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IG51bV9jaGlsZHJlbjsgKytpKSB7Ci0gICAgYXBwX3dpbmRvdyA9IEdldEFw
cGxpY2F0aW9uV2luZG93KGNhY2hlLCBjaGlsZHJlbltpXSk7Ci0gICAgaWYgKGFwcF93aW5kb3cp
Ci0gICAgICBicmVhazsKLSAgfQotCi0gIGlmIChjaGlsZHJlbikKLSAgICBYRnJlZShjaGlsZHJl
bik7Ci0gIHJldHVybiBhcHBfd2luZG93OwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHx3
aW5kb3d8IGlzIGEgZGVza3RvcCBlbGVtZW50LgotYm9vbCBJc0Rlc2t0b3BFbGVtZW50KFhBdG9t
Q2FjaGUqIGNhY2hlLCA6OldpbmRvdyB3aW5kb3cpIHsKLSAgUlRDX0RDSEVDSyhjYWNoZSk7Ci0g
IGlmICh3aW5kb3cgPT0gMCkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgLy8gRmlyc3QgbG9vayBm
b3IgX05FVF9XTV9XSU5ET1dfVFlQRS4gVGhlIHN0YW5kYXJkCi0gIC8vIChodHRwOi8vc3RhbmRh
cmRzLmZyZWVkZXNrdG9wLm9yZy93bS1zcGVjL2xhdGVzdC9hcjAxczA1Lmh0bWwjaWQyNzYwMzA2
KQotICAvLyBzYXlzIHRoaXMgaGludCAqc2hvdWxkKiBiZSBwcmVzZW50IG9uIGFsbCB3aW5kb3dz
LCBhbmQgd2UgdXNlIHRoZSBleGlzdGVuY2UKLSAgLy8gb2YgX05FVF9XTV9XSU5ET1dfVFlQRV9O
T1JNQUwgaW4gdGhlIHByb3BlcnR5IHRvIGluZGljYXRlIGEgd2luZG93IGlzIG5vdAotICAvLyBh
IGRlc2t0b3AgZWxlbWVudCAodGhhdCBpcywgb25seSAibm9ybWFsIiB3aW5kb3dzIHNob3VsZCBi
ZSBzaGFyZWFibGUpLgotICBYV2luZG93UHJvcGVydHk8dWludDMyX3Q+IHdpbmRvd190eXBlKGNh
Y2hlLT5kaXNwbGF5KCksIHdpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYWNoZS0+V2luZG93VHlwZSgpKTsKLSAgaWYgKHdpbmRvd190eXBlLmlzX3ZhbGlk
KCkgJiYgd2luZG93X3R5cGUuc2l6ZSgpID4gMCkgewotICAgIHVpbnQzMl90KiBlbmQgPSB3aW5k
b3dfdHlwZS5kYXRhKCkgKyB3aW5kb3dfdHlwZS5zaXplKCk7Ci0gICAgYm9vbCBpc19ub3JtYWwg
PQotICAgICAgICAoZW5kICE9IHN0ZDo6ZmluZCh3aW5kb3dfdHlwZS5kYXRhKCksIGVuZCwgY2Fj
aGUtPldpbmRvd1R5cGVOb3JtYWwoKSkpOwotICAgIHJldHVybiAhaXNfbm9ybWFsOwotICB9Ci0K
LSAgLy8gRmFsbCBiYWNrIG9uIHVzaW5nIHRoZSBoaW50LgotICBYQ2xhc3NIaW50IGNsYXNzX2hp
bnQ7Ci0gIFN0YXR1cyBzdGF0dXMgPSBYR2V0Q2xhc3NIaW50KGNhY2hlLT5kaXNwbGF5KCksIHdp
bmRvdywgJmNsYXNzX2hpbnQpOwotICBpZiAoc3RhdHVzID09IDApIHsKLSAgICAvLyBObyBoaW50
cywgYXNzdW1lIHRoaXMgaXMgYSBub3JtYWwgYXBwbGljYXRpb24gd2luZG93LgotICAgIHJldHVy
biBmYWxzZTsKLSAgfQotCi0gIERlZmVyWEZyZWUgZnJlZV9yZXNfbmFtZShjbGFzc19oaW50LnJl
c19uYW1lKTsKLSAgRGVmZXJYRnJlZSBmcmVlX3Jlc19jbGFzcyhjbGFzc19oaW50LnJlc19jbGFz
cyk7Ci0gIHJldHVybiBzdHJjbXAoImdub21lLXBhbmVsIiwgY2xhc3NfaGludC5yZXNfbmFtZSkg
PT0gMCB8fAotICAgICAgICAgc3RyY21wKCJkZXNrdG9wX3dpbmRvdyIsIGNsYXNzX2hpbnQucmVz
X25hbWUpID09IDA7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQzMl90IEdldFdpbmRvd1N0
YXRlKFhBdG9tQ2FjaGUqIGNhY2hlLCA6OldpbmRvdyB3aW5kb3cpIHsKLSAgLy8gR2V0IFdNX1NU
QVRFIHByb3BlcnR5IG9mIHRoZSB3aW5kb3cuCi0gIFhXaW5kb3dQcm9wZXJ0eTx1aW50MzJfdD4g
d2luZG93X3N0YXRlKGNhY2hlLT5kaXNwbGF5KCksIHdpbmRvdywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUtPldtU3RhdGUoKSk7Ci0KLSAgLy8gV01fU1RB
VEUgaXMgY29uc2lkZXJlZCB0byBiZSBzZXQgdG8gV2l0aGRyYXduU3RhdGUgd2hlbiBpdCBtaXNz
aW5nLgotICByZXR1cm4gd2luZG93X3N0YXRlLmlzX3ZhbGlkKCkgPyAqd2luZG93X3N0YXRlLmRh
dGEoKSA6IFdpdGhkcmF3blN0YXRlOwotfQotCi1ib29sIEdldFdpbmRvd0xpc3QoWEF0b21DYWNo
ZSogY2FjaGUsCi0gICAgICAgICAgICAgICAgICAgcnRjOjpGdW5jdGlvblZpZXc8Ym9vbCg6Oldp
bmRvdyk+IG9uX3dpbmRvdykgewotICBSVENfRENIRUNLKGNhY2hlKTsKLSAgUlRDX0RDSEVDSyhv
bl93aW5kb3cpOwotICA6OkRpc3BsYXkqIGNvbnN0IGRpc3BsYXkgPSBjYWNoZS0+ZGlzcGxheSgp
OwotCi0gIGludCBmYWlsZWRfc2NyZWVucyA9IDA7Ci0gIGNvbnN0IGludCBudW1fc2NyZWVucyA9
IFhTY3JlZW5Db3VudChkaXNwbGF5KTsKLSAgZm9yIChpbnQgc2NyZWVuID0gMDsgc2NyZWVuIDwg
bnVtX3NjcmVlbnM7IHNjcmVlbisrKSB7Ci0gICAgOjpXaW5kb3cgcm9vdF93aW5kb3cgPSBYUm9v
dFdpbmRvdyhkaXNwbGF5LCBzY3JlZW4pOwotICAgIDo6V2luZG93IHBhcmVudDsKLSAgICA6Oldp
bmRvdyogY2hpbGRyZW47Ci0gICAgdW5zaWduZWQgaW50IG51bV9jaGlsZHJlbjsKLSAgICB7Ci0g
ICAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheSk7Ci0gICAgICBpZiAoWFF1ZXJ5VHJl
ZShkaXNwbGF5LCByb290X3dpbmRvdywgJnJvb3Rfd2luZG93LCAmcGFyZW50LCAmY2hpbGRyZW4s
Ci0gICAgICAgICAgICAgICAgICAgICAmbnVtX2NoaWxkcmVuKSA9PSAwIHx8Ci0gICAgICAgICAg
ZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgewotICAgICAgICBmYWls
ZWRfc2NyZWVucysrOwotICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHF1
ZXJ5IGZvciBjaGlsZCB3aW5kb3dzIGZvciBzY3JlZW4gIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCBzY3JlZW47Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgIH0KLQotICAg
IERlZmVyWEZyZWUgZnJlZV9jaGlsZHJlbihjaGlsZHJlbik7Ci0KLSAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IG51bV9jaGlsZHJlbjsgaSsrKSB7Ci0gICAgICAvLyBJdGVyYXRlcyBp
biByZXZlcnNlIG9yZGVyIHRvIHJldHVybiB3aW5kb3dzIGZyb20gZnJvbnQgdG8gYmFjay4KLSAg
ICAgIDo6V2luZG93IGFwcF93aW5kb3cgPQotICAgICAgICAgIEdldEFwcGxpY2F0aW9uV2luZG93
KGNhY2hlLCBjaGlsZHJlbltudW1fY2hpbGRyZW4gLSAxIC0gaV0pOwotICAgICAgaWYgKGFwcF93
aW5kb3cgJiYgIUlzRGVza3RvcEVsZW1lbnQoY2FjaGUsIGFwcF93aW5kb3cpKSB7Ci0gICAgICAg
IGlmICghb25fd2luZG93KGFwcF93aW5kb3cpKSB7Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICByZXR1cm4gZmFpbGVkX3NjcmVlbnMg
PCBudW1fc2NyZWVuczsKLX0KLQotYm9vbCBHZXRXaW5kb3dSZWN0KDo6RGlzcGxheSogZGlzcGxh
eSwKLSAgICAgICAgICAgICAgICAgICA6OldpbmRvdyB3aW5kb3csCi0gICAgICAgICAgICAgICAg
ICAgRGVza3RvcFJlY3QqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgWFdpbmRvd0F0dHJpYnV0
ZXMqIGF0dHJpYnV0ZXMgLyogPSBudWxscHRyICovKSB7Ci0gIFhXaW5kb3dBdHRyaWJ1dGVzIGxv
Y2FsX2F0dHJpYnV0ZXM7Ci0gIGludCBvZmZzZXRfeDsKLSAgaW50IG9mZnNldF95OwotICBpZiAo
YXR0cmlidXRlcyA9PSBudWxscHRyKSB7Ci0gICAgYXR0cmlidXRlcyA9ICZsb2NhbF9hdHRyaWJ1
dGVzOwotICB9Ci0KLSAgewotICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KTsKLSAg
ICBpZiAoIVhHZXRXaW5kb3dBdHRyaWJ1dGVzKGRpc3BsYXksIHdpbmRvdywgYXR0cmlidXRlcykg
fHwKLSAgICAgICAgZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgewot
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotICAqcmVjdCA9IERlc2t0b3BSZWN0RnJv
bVhBdHRyaWJ1dGVzKCphdHRyaWJ1dGVzKTsKLQotICB7Ci0gICAgWEVycm9yVHJhcCBlcnJvcl90
cmFwKGRpc3BsYXkpOwotICAgIDo6V2luZG93IGNoaWxkOwotICAgIGlmICghWFRyYW5zbGF0ZUNv
b3JkaW5hdGVzKGRpc3BsYXksIHdpbmRvdywgYXR0cmlidXRlcy0+cm9vdCwgLXJlY3QtPmxlZnQo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtcmVjdC0+dG9wKCksICZvZmZzZXRf
eCwgJm9mZnNldF95LCAmY2hpbGQpIHx8Ci0gICAgICAgIGVycm9yX3RyYXAuR2V0TGFzdEVycm9y
QW5kRGlzYWJsZSgpICE9IDApIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAg
cmVjdC0+VHJhbnNsYXRlKG9mZnNldF94LCBvZmZzZXRfeSk7Ci0gIHJldHVybiB0cnVlOwotfQot
Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvd2luZG93
X2xpc3RfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS93aW5kb3dfbGlzdF91dGlscy5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmQyYTcwZDIxMDdkZGRhOTE5ZGI3OGQ5MTEzMGRlMmQ0
ODEzZTJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL3gxMS93aW5kb3dfbGlzdF91dGlscy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NB
UFRVUkVfWDExX1dJTkRPV19MSVNUX1VUSUxTX0hfCi0jZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9D
QVBUVVJFX1gxMV9XSU5ET1dfTElTVF9VVElMU19IXwotCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4K
LQotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0cnkuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9hdG9tX2NhY2hlLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvZnVuY3Rpb25fdmlldy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsK
LQotLy8gU3luY2hyb25vdXNseSBpdGVyYXRlcyBhbGwgb24tc2NyZWVuIHdpbmRvd3MgaW4gfGNh
Y2hlfC5kaXNwbGF5KCkgaW4KLS8vIGRlY3JlYXNpbmcgei1vcmRlciBhbmQgc2VuZHMgdGhlbSBv
bmUtYnktb25lIHRvIHxvbl93aW5kb3d8IGZ1bmN0aW9uIGJlZm9yZQotLy8gR2V0V2luZG93TGlz
dCgpIHJldHVybnMuIElmIHxvbl93aW5kb3d8IHJldHVybnMgZmFsc2UsIHRoaXMgZnVuY3Rpb24g
aWdub3JlcwotLy8gb3RoZXIgd2luZG93cyBhbmQgcmV0dXJucyBpbW1lZGlhdGVseS4gR2V0V2lu
ZG93TGlzdCgpIHJldHVybnMgZmFsc2UgaWYKLS8vIG5hdGl2ZSBBUElzIGZhaWxlZC4gSWYgbXVs
dGlwbGUgc2NyZWVucyBhcmUgYXR0YWNoZWQgdG8gdGhlIHxkaXNwbGF5fCwgdGhpcwotLy8gZnVu
Y3Rpb24gcmV0dXJucyBmYWxzZSBvbmx5IHdoZW4gbmF0aXZlIEFQSXMgZmFpbGVkIG9uIGFsbCBz
Y3JlZW5zLiBNZW51cywKLS8vIHBhbmVscyBhbmQgbWluaW1pemVkIHdpbmRvd3Mgd2lsbCBiZSBp
Z25vcmVkLgotYm9vbCBHZXRXaW5kb3dMaXN0KFhBdG9tQ2FjaGUqIGNhY2hlLAotICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PGJvb2woOjpXaW5kb3cpPiBvbl93aW5kb3cpOwot
Ci0vLyBSZXR1cm5zIFdNX1NUQVRFIHByb3BlcnR5IG9mIHRoZSB8d2luZG93fC4gVGhpcyBmdW5j
dGlvbiByZXR1cm5zCi0vLyBXaXRoZHJhd25TdGF0ZSBpZiB0aGUgfHdpbmRvd3wgaXMgbWlzc2lu
Zy4KLWludDMyX3QgR2V0V2luZG93U3RhdGUoWEF0b21DYWNoZSogY2FjaGUsIDo6V2luZG93IHdp
bmRvdyk7Ci0KLS8vIFJldHVybnMgdGhlIHJlY3RhbmdsZSBvZiB0aGUgfHdpbmRvd3wgaW4gdGhl
IGNvb3JkaW5hdGVzIG9mIHxkaXNwbGF5fC4gVGhpcwotLy8gZnVuY3Rpb24gcmV0dXJucyBmYWxz
ZSBpZiBuYXRpdmUgQVBJcyBmYWlsZWQuIElmIHxhdHRyaWJ1dGVzfCBpcyBwcm92aWRlZCwgaXQK
LS8vIHdpbGwgYmUgZmlsbGVkIHdpdGggdGhlIGF0dHJpYnV0ZXMgb2YgfHdpbmRvd3wuIFRoZSB8
cmVjdHwgaXMgaW4gc3lzdGVtCi0vLyBjb29yZGluYXRlLCBpLmUuIHRoZSBwcmltYXJ5IG1vbml0
b3IgYWx3YXlzIHN0YXJ0cyBmcm9tICgwLCAwKS4KLWJvb2wgR2V0V2luZG93UmVjdCg6OkRpc3Bs
YXkqIGRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgOjpXaW5kb3cgd2luZG93LAotICAgICAg
ICAgICAgICAgICAgIERlc2t0b3BSZWN0KiByZWN0LAotICAgICAgICAgICAgICAgICAgIFhXaW5k
b3dBdHRyaWJ1dGVzKiBhdHRyaWJ1dGVzID0gbnVsbHB0cik7Ci0KLS8vIENyZWF0ZXMgYSBEZXNr
dG9wUmVjdCBmcm9tIHxhdHRyaWJ1dGVzfC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotRGVza3Rv
cFJlY3QgRGVza3RvcFJlY3RGcm9tWEF0dHJpYnV0ZXMoY29uc3QgVCYgYXR0cmlidXRlcykgewot
ICByZXR1cm4gRGVza3RvcFJlY3Q6Ok1ha2VYWVdIKGF0dHJpYnV0ZXMueCwgYXR0cmlidXRlcy55
LCBhdHRyaWJ1dGVzLndpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZXMuaGVpZ2h0KTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8v
IE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1gxMV9XSU5ET1dfTElTVF9VVElMU19IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUveDExL3hfYXRvbV9jYWNoZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2F0b21f
Y2FjaGUuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhM2ExZmRlYmRkZDVkOTFi
Yjk5YTg3YThkMGRjNmIxNmMzZDU4YTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfYXRvbV9jYWNoZS5jYworKysgL2Rldi9udWxs
CkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfYXRvbV9jYWNoZS5oIgotCi0jaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1YQXRvbUNhY2hlOjpYQXRv
bUNhY2hlKDo6RGlzcGxheSogZGlzcGxheSkgOiBkaXNwbGF5XyhkaXNwbGF5KSB7Ci0gIFJUQ19E
Q0hFQ0soZGlzcGxheV8pOwotfQotCi1YQXRvbUNhY2hlOjp+WEF0b21DYWNoZSgpID0gZGVmYXVs
dDsKLQotOjpEaXNwbGF5KiBYQXRvbUNhY2hlOjpkaXNwbGF5KCkgY29uc3QgewotICByZXR1cm4g
ZGlzcGxheV87Ci19Ci0KLUF0b20gWEF0b21DYWNoZTo6V21TdGF0ZSgpIHsKLSAgcmV0dXJuIENy
ZWF0ZUlmTm90RXhpc3QoJndtX3N0YXRlXywgIldNX1NUQVRFIik7Ci19Ci0KLUF0b20gWEF0b21D
YWNoZTo6V2luZG93VHlwZSgpIHsKLSAgcmV0dXJuIENyZWF0ZUlmTm90RXhpc3QoJndpbmRvd190
eXBlXywgIl9ORVRfV01fV0lORE9XX1RZUEUiKTsKLX0KLQotQXRvbSBYQXRvbUNhY2hlOjpXaW5k
b3dUeXBlTm9ybWFsKCkgewotICByZXR1cm4gQ3JlYXRlSWZOb3RFeGlzdCgmd2luZG93X3R5cGVf
bm9ybWFsXywgIl9ORVRfV01fV0lORE9XX1RZUEVfTk9STUFMIik7Ci19Ci0KLUF0b20gWEF0b21D
YWNoZTo6Q3JlYXRlSWZOb3RFeGlzdChBdG9tKiBhdG9tLCBjb25zdCBjaGFyKiBuYW1lKSB7Ci0g
IFJUQ19EQ0hFQ0soYXRvbSk7Ci0gIGlmICgqYXRvbSA9PSBOb25lKSB7Ci0gICAgKmF0b20gPSBY
SW50ZXJuQXRvbShkaXNwbGF5KCksIG5hbWUsIFRydWUpOwotICB9Ci0gIHJldHVybiAqYXRvbTsK
LX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hf
YXRvbV9jYWNoZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfYXRvbV9jYWNoZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1MjQ2YzJiYjVjOWE4NmI4YjBkYjFjNjZlOTViNmUyNDE1ZDdlNjg2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L3gxMS94X2F0b21fY2FjaGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1gxMV9Y
X0FUT01fQ0FDSEVfSF8KLSNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDExX1hfQVRP
TV9DQUNIRV9IXwotCi0jaW5jbHVkZSA8WDExL1hhdG9tLmg+Ci0jaW5jbHVkZSA8WDExL1hsaWIu
aD4KLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIEEgY2FjaGUgb2YgQXRvbS4gRWFjaCBBdG9t
IG9iamVjdCBpcyBjcmVhdGVkIG9uIGRlbWFuZC4KLWNsYXNzIFhBdG9tQ2FjaGUgZmluYWwgewot
IHB1YmxpYzoKLSAgZXhwbGljaXQgWEF0b21DYWNoZSg6OkRpc3BsYXkqIGRpc3BsYXkpOwotICB+
WEF0b21DYWNoZSgpOwotCi0gIDo6RGlzcGxheSogZGlzcGxheSgpIGNvbnN0OwotCi0gIEF0b20g
V21TdGF0ZSgpOwotICBBdG9tIFdpbmRvd1R5cGUoKTsKLSAgQXRvbSBXaW5kb3dUeXBlTm9ybWFs
KCk7Ci0KLSBwcml2YXRlOgotICAvLyBJZiB8KmF0b218IGlzIE5vbmUsIHRoaXMgZnVuY3Rpb24g
dXNlcyBYSW50ZXJuQXRvbSgpIHRvIHJldHJpZXZlIGFuIEF0b20uCi0gIEF0b20gQ3JlYXRlSWZO
b3RFeGlzdChBdG9tKiBhdG9tLCBjb25zdCBjaGFyKiBuYW1lKTsKLQotICA6OkRpc3BsYXkqIGNv
bnN0IGRpc3BsYXlfOwotICBBdG9tIHdtX3N0YXRlXyA9IE5vbmU7Ci0gIEF0b20gd2luZG93X3R5
cGVfID0gTm9uZTsKLSAgQXRvbSB3aW5kb3dfdHlwZV9ub3JtYWxfID0gTm9uZTsKLX07Ci0KLX0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVS
RV9YMTFfWF9BVE9NX0NBQ0hFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9lcnJvcl90
cmFwLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUveDExL3hfZXJyb3JfdHJhcC5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNjU1OWMzZGJlOWY1MTY2NTY0YWU4YWJiNjA4YmMyZWUyNzdiMzlkNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEv
eF9lcnJvcl90cmFwLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQot
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9l
cnJvcl90cmFwLmgiCi0KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLQotI2lmIGRlZmluZWQoVE9PTEtJ
VF9HVEspCi0jaW5jbHVkZSA8Z2RrL2dkay5oPgotI2VuZGlmICAvLyAhZGVmaW5lZChUT09MS0lU
X0dUSykKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLW5hbWVzcGFjZSB7Ci0KLSNpZiAhZGVmaW5l
ZChUT09MS0lUX0dUSykKLQotLy8gVE9ETyhzZXJnZXl1KTogVGhpcyBjb2RlIGlzIG5vdCB0aHJl
YWQgc2FmZS4gRml4IGl0LiBCdWcgMjIwMi4KLXN0YXRpYyBib29sIGdfeHNlcnZlcl9lcnJvcl90
cmFwX2VuYWJsZWQgPSBmYWxzZTsKLXN0YXRpYyBpbnQgZ19sYXN0X3hzZXJ2ZXJfZXJyb3JfY29k
ZSA9IDA7Ci0KLWludCBYU2VydmVyRXJyb3JIYW5kbGVyKERpc3BsYXkqIGRpc3BsYXksIFhFcnJv
ckV2ZW50KiBlcnJvcl9ldmVudCkgewotICBhc3NlcnQoZ194c2VydmVyX2Vycm9yX3RyYXBfZW5h
YmxlZCk7Ci0gIGdfbGFzdF94c2VydmVyX2Vycm9yX2NvZGUgPSBlcnJvcl9ldmVudC0+ZXJyb3Jf
Y29kZTsKLSAgcmV0dXJuIDA7Ci19Ci0KLSNlbmRpZiAgLy8gIWRlZmluZWQoVE9PTEtJVF9HVEsp
Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1YRXJyb3JUcmFwOjpYRXJyb3JUcmFwKERpc3BsYXkqIGRp
c3BsYXkpCi0gICAgOiBvcmlnaW5hbF9lcnJvcl9oYW5kbGVyXyhOVUxMKSwgZW5hYmxlZF8odHJ1
ZSkgewotI2lmIGRlZmluZWQoVE9PTEtJVF9HVEspCi0gIGdka19lcnJvcl90cmFwX3B1c2goKTsK
LSNlbHNlICAgLy8gIWRlZmluZWQoVE9PTEtJVF9HVEspCi0gIGFzc2VydCghZ194c2VydmVyX2Vy
cm9yX3RyYXBfZW5hYmxlZCk7Ci0gIG9yaWdpbmFsX2Vycm9yX2hhbmRsZXJfID0gWFNldEVycm9y
SGFuZGxlcigmWFNlcnZlckVycm9ySGFuZGxlcik7Ci0gIGdfeHNlcnZlcl9lcnJvcl90cmFwX2Vu
YWJsZWQgPSB0cnVlOwotICBnX2xhc3RfeHNlcnZlcl9lcnJvcl9jb2RlID0gMDsKLSNlbmRpZiAg
Ly8gIWRlZmluZWQoVE9PTEtJVF9HVEspCi19Ci0KLWludCBYRXJyb3JUcmFwOjpHZXRMYXN0RXJy
b3JBbmREaXNhYmxlKCkgewotICBlbmFibGVkXyA9IGZhbHNlOwotI2lmIGRlZmluZWQoVE9PTEtJ
VF9HVEspCi0gIHJldHVybiBnZGtfZXJyb3JfdHJhcF9wdXNoKCk7Ci0jZWxzZSAgIC8vICFkZWZp
bmVkKFRPT0xLSVRfR1RLKQotICBhc3NlcnQoZ194c2VydmVyX2Vycm9yX3RyYXBfZW5hYmxlZCk7
Ci0gIFhTZXRFcnJvckhhbmRsZXIob3JpZ2luYWxfZXJyb3JfaGFuZGxlcl8pOwotICBnX3hzZXJ2
ZXJfZXJyb3JfdHJhcF9lbmFibGVkID0gZmFsc2U7Ci0gIHJldHVybiBnX2xhc3RfeHNlcnZlcl9l
cnJvcl9jb2RlOwotI2VuZGlmICAvLyAhZGVmaW5lZChUT09MS0lUX0dUSykKLX0KLQotWEVycm9y
VHJhcDo6flhFcnJvclRyYXAoKSB7Ci0gIGlmIChlbmFibGVkXykKLSAgICBHZXRMYXN0RXJyb3JB
bmREaXNhYmxlKCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL3gxMS94X2Vycm9yX3RyYXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2Vycm9yX3RyYXAuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE5ZWJmNjcwYjdlYTEwZmU3NTI4YTYyMDdh
MTRmMTlhNmZlYzkwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS94MTEveF9lcnJvcl90cmFwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1Bf
Q0FQVFVSRV9YMTFfWF9FUlJPUl9UUkFQX0hfCi0jZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBU
VVJFX1gxMV9YX0VSUk9SX1RSQVBfSF8KLQotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0KLSNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewot
Ci0vLyBIZWxwZXIgY2xhc3MgdGhhdCByZWdpc3RlcnMgWCBXaW5kb3cgZXJyb3IgaGFuZGxlci4g
Q2FsbGVyIGNhbiB1c2UKLS8vIEdldExhc3RFcnJvckFuZERpc2FibGUoKSB0byBnZXQgdGhlIGxh
c3QgZXJyb3IgdGhhdCB3YXMgY2F1Z2h0LCBpZiBhbnkuCi1jbGFzcyBYRXJyb3JUcmFwIHsKLSBw
dWJsaWM6Ci0gIGV4cGxpY2l0IFhFcnJvclRyYXAoRGlzcGxheSogZGlzcGxheSk7Ci0gIH5YRXJy
b3JUcmFwKCk7Ci0KLSAgLy8gUmV0dXJucyBsYXN0IGVycm9yIGFuZCByZW1vdmVzIHVucmVnaXN0
ZXJzIHRoZSBlcnJvciBoYW5kbGVyLgotICBpbnQgR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpOwot
Ci0gcHJpdmF0ZToKLSAgWEVycm9ySGFuZGxlciBvcmlnaW5hbF9lcnJvcl9oYW5kbGVyXzsKLSAg
Ym9vbCBlbmFibGVkXzsKLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFhFcnJvclRy
YXApOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE1PRFVMRVNf
REVTS1RPUF9DQVBUVVJFX1gxMV9YX0VSUk9SX1RSQVBfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L3gxMS94X3NlcnZlcl9waXhlbF9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9zZXJ2ZXJfcGl4
ZWxfYnVmZmVyLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzI3ZDNmYzdkZGUy
YTIxMjgzOTg3ZWE0ODgyMjEzZGQ1MTRkMGNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X3NlcnZlcl9waXhlbF9idWZmZXIuY2MK
KysrIC9kZXYvbnVsbApAQCAtMSwzNTEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIw
MTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0K
LSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVm
ZmVyLmgiCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzeXMvc2htLmg+Ci0KLSNp
bmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3dpbmRvd19saXN0X3V0aWxzLmgiCi0jaW5j
bHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfZXJyb3JfdHJhcC5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLQot
bmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFJldHVybnMgdGhlIG51bWJl
ciBvZiBiaXRzIHxtYXNrfCBoYXMgdG8gYmUgc2hpZnRlZCBsZWZ0IHNvIGl0cyBsYXN0Ci0vLyAo
bW9zdC1zaWduaWZpY2FudCkgYml0IHNldCBiZWNvbWVzIHRoZSBtb3N0LXNpZ25pZmljYW50IGJp
dCBvZiB0aGUgd29yZC4KLS8vIFdoZW4gfG1hc2t8IGlzIDAgdGhlIGZ1bmN0aW9uIHJldHVybnMg
MzEuCi11aW50MzJfdCBNYXNrVG9TaGlmdCh1aW50MzJfdCBtYXNrKSB7Ci0gIGludCBzaGlmdCA9
IDA7Ci0gIGlmICgobWFzayAmIDB4ZmZmZjAwMDB1KSA9PSAwKSB7Ci0gICAgbWFzayA8PD0gMTY7
Ci0gICAgc2hpZnQgKz0gMTY7Ci0gIH0KLSAgaWYgKChtYXNrICYgMHhmZjAwMDAwMHUpID09IDAp
IHsKLSAgICBtYXNrIDw8PSA4OwotICAgIHNoaWZ0ICs9IDg7Ci0gIH0KLSAgaWYgKChtYXNrICYg
MHhmMDAwMDAwMHUpID09IDApIHsKLSAgICBtYXNrIDw8PSA0OwotICAgIHNoaWZ0ICs9IDQ7Ci0g
IH0KLSAgaWYgKChtYXNrICYgMHhjMDAwMDAwMHUpID09IDApIHsKLSAgICBtYXNrIDw8PSAyOwot
ICAgIHNoaWZ0ICs9IDI7Ci0gIH0KLSAgaWYgKChtYXNrICYgMHg4MDAwMDAwMHUpID09IDApCi0g
ICAgc2hpZnQgKz0gMTsKLQotICByZXR1cm4gc2hpZnQ7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBp
ZiB8aW1hZ2V8IGlzIGluIFJHQiBmb3JtYXQuCi1ib29sIElzWEltYWdlUkdCRm9ybWF0KFhJbWFn
ZSogaW1hZ2UpIHsKLSAgcmV0dXJuIGltYWdlLT5iaXRzX3Blcl9waXhlbCA9PSAzMiAmJiBpbWFn
ZS0+cmVkX21hc2sgPT0gMHhmZjAwMDAgJiYKLSAgICAgICAgIGltYWdlLT5ncmVlbl9tYXNrID09
IDB4ZmYwMCAmJiBpbWFnZS0+Ymx1ZV9tYXNrID09IDB4ZmY7Ci19Ci0KLS8vIFdlIGV4cG9zZSB0
d28gZm9ybXMgb2YgYmxpdHRpbmcgdG8gaGFuZGxlIHZhcmlhdGlvbnMgaW4gdGhlIHBpeGVsIGZv
cm1hdC4KLS8vIEluIEZhc3RCbGl0KCksIHRoZSBvcGVyYXRpb24gaXMgZWZmZWN0aXZlbHkgYSBt
ZW1jcHkuCi12b2lkIEZhc3RCbGl0KFhJbWFnZSogeF9pbWFnZSwKLSAgICAgICAgICAgICAgdWlu
dDhfdCogc3JjX3BvcywKLSAgICAgICAgICAgICAgY29uc3QgRGVza3RvcFJlY3QmIHJlY3QsCi0g
ICAgICAgICAgICAgIERlc2t0b3BGcmFtZSogZnJhbWUpIHsKLSAgaW50IHNyY19zdHJpZGUgPSB4
X2ltYWdlLT5ieXRlc19wZXJfbGluZTsKLSAgaW50IGRzdF94ID0gcmVjdC5sZWZ0KCksIGRzdF95
ID0gcmVjdC50b3AoKTsKLQotICB1aW50OF90KiBkc3RfcG9zID0gZnJhbWUtPmRhdGEoKSArIGZy
YW1lLT5zdHJpZGUoKSAqIGRzdF95OwotICBkc3RfcG9zICs9IGRzdF94ICogRGVza3RvcEZyYW1l
OjprQnl0ZXNQZXJQaXhlbDsKLQotICBpbnQgaGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsKLSAgaW50
IHJvd19ieXRlcyA9IHJlY3Qud2lkdGgoKSAqIERlc2t0b3BGcmFtZTo6a0J5dGVzUGVyUGl4ZWw7
Ci0gIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKLSAgICBtZW1jcHkoZHN0X3Bv
cywgc3JjX3Bvcywgcm93X2J5dGVzKTsKLSAgICBzcmNfcG9zICs9IHNyY19zdHJpZGU7Ci0gICAg
ZHN0X3BvcyArPSBmcmFtZS0+c3RyaWRlKCk7Ci0gIH0KLX0KLQotdm9pZCBTbG93QmxpdChYSW1h
Z2UqIHhfaW1hZ2UsCi0gICAgICAgICAgICAgIHVpbnQ4X3QqIHNyY19wb3MsCi0gICAgICAgICAg
ICAgIGNvbnN0IERlc2t0b3BSZWN0JiByZWN0LAotICAgICAgICAgICAgICBEZXNrdG9wRnJhbWUq
IGZyYW1lKSB7Ci0gIGludCBzcmNfc3RyaWRlID0geF9pbWFnZS0+Ynl0ZXNfcGVyX2xpbmU7Ci0g
IGludCBkc3RfeCA9IHJlY3QubGVmdCgpLCBkc3RfeSA9IHJlY3QudG9wKCk7Ci0gIGludCB3aWR0
aCA9IHJlY3Qud2lkdGgoKSwgaGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsKLQotICB1aW50MzJfdCBy
ZWRfbWFzayA9IHhfaW1hZ2UtPnJlZF9tYXNrOwotICB1aW50MzJfdCBncmVlbl9tYXNrID0geF9p
bWFnZS0+cmVkX21hc2s7Ci0gIHVpbnQzMl90IGJsdWVfbWFzayA9IHhfaW1hZ2UtPmJsdWVfbWFz
azsKLQotICB1aW50MzJfdCByZWRfc2hpZnQgPSBNYXNrVG9TaGlmdChyZWRfbWFzayk7Ci0gIHVp
bnQzMl90IGdyZWVuX3NoaWZ0ID0gTWFza1RvU2hpZnQoZ3JlZW5fbWFzayk7Ci0gIHVpbnQzMl90
IGJsdWVfc2hpZnQgPSBNYXNrVG9TaGlmdChibHVlX21hc2spOwotCi0gIGludCBiaXRzX3Blcl9w
aXhlbCA9IHhfaW1hZ2UtPmJpdHNfcGVyX3BpeGVsOwotCi0gIHVpbnQ4X3QqIGRzdF9wb3MgPSBm
cmFtZS0+ZGF0YSgpICsgZnJhbWUtPnN0cmlkZSgpICogZHN0X3k7Ci0gIGRzdF9wb3MgKz0gZHN0
X3ggKiBEZXNrdG9wRnJhbWU6OmtCeXRlc1BlclBpeGVsOwotICAvLyBUT0RPKGhjbGFtKTogT3B0
aW1pemUsIHBlcmhhcHMgdXNpbmcgTU1YIGNvZGUgb3IgYnkgY29udmVydGluZyB0bwotICAvLyBZ
VVYgZGlyZWN0bHkuCi0gIC8vIFRPRE8oc2VyZ2V5dSk6IFRoaXMgY29kZSBkb2Vzbid0IGhhbmRs
ZSBYSW1hZ2UgYnl0ZSBvcmRlciBwcm9wZXJseSBhbmQKLSAgLy8gd29uJ3Qgd29yayB3aXRoIDI0
YnBwIGltYWdlcy4gRml4IGl0LgotICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7
Ci0gICAgdWludDMyX3QqIGRzdF9wb3NfMzIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4o
ZHN0X3Bvcyk7Ci0gICAgdWludDMyX3QqIHNyY19wb3NfMzIgPSByZWludGVycHJldF9jYXN0PHVp
bnQzMl90Kj4oc3JjX3Bvcyk7Ci0gICAgdWludDE2X3QqIHNyY19wb3NfMTYgPSByZWludGVycHJl
dF9jYXN0PHVpbnQxNl90Kj4oc3JjX3Bvcyk7Ci0gICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0
aDsgeCsrKSB7Ci0gICAgICAvLyBEZXJlZmVyZW5jZSB0aHJvdWdoIGFuIGFwcHJvcHJpYXRlbHkt
YWxpZ25lZCBwb2ludGVyLgotICAgICAgdWludDMyX3QgcGl4ZWw7Ci0gICAgICBpZiAoYml0c19w
ZXJfcGl4ZWwgPT0gMzIpIHsKLSAgICAgICAgcGl4ZWwgPSBzcmNfcG9zXzMyW3hdOwotICAgICAg
fSBlbHNlIGlmIChiaXRzX3Blcl9waXhlbCA9PSAxNikgewotICAgICAgICBwaXhlbCA9IHNyY19w
b3NfMTZbeF07Ci0gICAgICB9IGVsc2UgewotICAgICAgICBwaXhlbCA9IHNyY19wb3NbeF07Ci0g
ICAgICB9Ci0gICAgICB1aW50MzJfdCByID0gKHBpeGVsICYgcmVkX21hc2spIDw8IHJlZF9zaGlm
dDsKLSAgICAgIHVpbnQzMl90IGcgPSAocGl4ZWwgJiBncmVlbl9tYXNrKSA8PCBncmVlbl9zaGlm
dDsKLSAgICAgIHVpbnQzMl90IGIgPSAocGl4ZWwgJiBibHVlX21hc2spIDw8IGJsdWVfc2hpZnQ7
Ci0gICAgICAvLyBXcml0ZSBhcyAzMi1iaXQgUkdCLgotICAgICAgZHN0X3Bvc18zMlt4XSA9Ci0g
ICAgICAgICAgKChyID4+IDgpICYgMHhmZjAwMDApIHwgKChnID4+IDE2KSAmIDB4ZmYwMCkgfCAo
KGIgPj4gMjQpICYgMHhmZik7Ci0gICAgfQotICAgIGRzdF9wb3MgKz0gZnJhbWUtPnN0cmlkZSgp
OwotICAgIHNyY19wb3MgKz0gc3JjX3N0cmlkZTsKLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2UK
LQotWFNlcnZlclBpeGVsQnVmZmVyOjpYU2VydmVyUGl4ZWxCdWZmZXIoKSB7fQotCi1YU2VydmVy
UGl4ZWxCdWZmZXI6On5YU2VydmVyUGl4ZWxCdWZmZXIoKSB7Ci0gIFJlbGVhc2UoKTsKLX0KLQot
dm9pZCBYU2VydmVyUGl4ZWxCdWZmZXI6OlJlbGVhc2UoKSB7Ci0gIGlmICh4X2ltYWdlXykgewot
ICAgIFhEZXN0cm95SW1hZ2UoeF9pbWFnZV8pOwotICAgIHhfaW1hZ2VfID0gbnVsbHB0cjsKLSAg
fQotICBpZiAoeF9zaG1faW1hZ2VfKSB7Ci0gICAgWERlc3Ryb3lJbWFnZSh4X3NobV9pbWFnZV8p
OwotICAgIHhfc2htX2ltYWdlXyA9IG51bGxwdHI7Ci0gIH0KLSAgaWYgKHNobV9waXhtYXBfKSB7
Ci0gICAgWEZyZWVQaXhtYXAoZGlzcGxheV8sIHNobV9waXhtYXBfKTsKLSAgICBzaG1fcGl4bWFw
XyA9IDA7Ci0gIH0KLSAgaWYgKHNobV9nY18pIHsKLSAgICBYRnJlZUdDKGRpc3BsYXlfLCBzaG1f
Z2NfKTsKLSAgICBzaG1fZ2NfID0gbnVsbHB0cjsKLSAgfQotCi0gIFJlbGVhc2VTaGFyZWRNZW1v
cnlTZWdtZW50KCk7Ci0KLSAgd2luZG93XyA9IDA7Ci19Ci0KLXZvaWQgWFNlcnZlclBpeGVsQnVm
ZmVyOjpSZWxlYXNlU2hhcmVkTWVtb3J5U2VnbWVudCgpIHsKLSAgaWYgKCFzaG1fc2VnbWVudF9p
bmZvXykKLSAgICByZXR1cm47Ci0gIGlmIChzaG1fc2VnbWVudF9pbmZvXy0+c2htYWRkciAhPSBu
dWxscHRyKQotICAgIHNobWR0KHNobV9zZWdtZW50X2luZm9fLT5zaG1hZGRyKTsKLSAgaWYgKHNo
bV9zZWdtZW50X2luZm9fLT5zaG1pZCAhPSAtMSkKLSAgICBzaG1jdGwoc2htX3NlZ21lbnRfaW5m
b18tPnNobWlkLCBJUENfUk1JRCwgMCk7Ci0gIGRlbGV0ZSBzaG1fc2VnbWVudF9pbmZvXzsKLSAg
c2htX3NlZ21lbnRfaW5mb18gPSBudWxscHRyOwotfQotCi1ib29sIFhTZXJ2ZXJQaXhlbEJ1ZmZl
cjo6SW5pdChEaXNwbGF5KiBkaXNwbGF5LCBXaW5kb3cgd2luZG93KSB7Ci0gIFJlbGVhc2UoKTsK
LSAgZGlzcGxheV8gPSBkaXNwbGF5OwotCi0gIFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7
Ci0gIGlmICghR2V0V2luZG93UmVjdChkaXNwbGF5Xywgd2luZG93LCAmd2luZG93X3JlY3RfLCAm
YXR0cmlidXRlcykpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICB3aW5kb3dfID0gd2lu
ZG93OwotICBJbml0U2htKGF0dHJpYnV0ZXMpOwotCi0gIHJldHVybiB0cnVlOwotfQotCi12b2lk
IFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6SW5pdFNobShjb25zdCBYV2luZG93QXR0cmlidXRlcyYgYXR0
cmlidXRlcykgewotICBWaXN1YWwqIGRlZmF1bHRfdmlzdWFsID0gYXR0cmlidXRlcy52aXN1YWw7
Ci0gIGludCBkZWZhdWx0X2RlcHRoID0gYXR0cmlidXRlcy5kZXB0aDsKLQotICBpbnQgbWFqb3Is
IG1pbm9yOwotICBCb29sIGhhdmVfcGl4bWFwczsKLSAgaWYgKCFYU2htUXVlcnlWZXJzaW9uKGRp
c3BsYXlfLCAmbWFqb3IsICZtaW5vciwgJmhhdmVfcGl4bWFwcykpIHsKLSAgICAvLyBTaGFyZWQg
bWVtb3J5IG5vdCBzdXBwb3J0ZWQuIENhcHR1cmVSZWN0IHdpbGwgdXNlIHRoZSBYSW1hZ2UgQVBJ
IGluc3RlYWQuCi0gICAgcmV0dXJuOwotICB9Ci0KLSAgYm9vbCB1c2luZ19zaG0gPSBmYWxzZTsK
LSAgc2htX3NlZ21lbnRfaW5mb18gPSBuZXcgWFNobVNlZ21lbnRJbmZvOwotICBzaG1fc2VnbWVu
dF9pbmZvXy0+c2htaWQgPSAtMTsKLSAgc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIgPSBudWxs
cHRyOwotICBzaG1fc2VnbWVudF9pbmZvXy0+cmVhZE9ubHkgPSBGYWxzZTsKLSAgeF9zaG1faW1h
Z2VfID0gWFNobUNyZWF0ZUltYWdlKGRpc3BsYXlfLCBkZWZhdWx0X3Zpc3VhbCwgZGVmYXVsdF9k
ZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpQaXhtYXAsIDAsIHNobV9z
ZWdtZW50X2luZm9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93X3Jl
Y3RfLndpZHRoKCksIHdpbmRvd19yZWN0Xy5oZWlnaHQoKSk7Ci0gIGlmICh4X3NobV9pbWFnZV8p
IHsKLSAgICBzaG1fc2VnbWVudF9pbmZvXy0+c2htaWQgPQotICAgICAgICBzaG1nZXQoSVBDX1BS
SVZBVEUsIHhfc2htX2ltYWdlXy0+Ynl0ZXNfcGVyX2xpbmUgKiB4X3NobV9pbWFnZV8tPmhlaWdo
dCwKLSAgICAgICAgICAgICAgIElQQ19DUkVBVCB8IDA2MDApOwotICAgIGlmIChzaG1fc2VnbWVu
dF9pbmZvXy0+c2htaWQgIT0gLTEpIHsKLSAgICAgIHZvaWQqIHNobWF0X3Jlc3VsdCA9IHNobWF0
KHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCwgMCwgMCk7Ci0gICAgICBpZiAoc2htYXRfcmVzdWx0
ICE9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkgewotICAgICAgICBzaG1fc2VnbWVudF9p
bmZvXy0+c2htYWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNobWF0X3Jlc3VsdCk7Ci0g
ICAgICAgIHhfc2htX2ltYWdlXy0+ZGF0YSA9IHNobV9zZWdtZW50X2luZm9fLT5zaG1hZGRyOwot
Ci0gICAgICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5Xyk7Ci0gICAgICAgIHVzaW5n
X3NobSA9IFhTaG1BdHRhY2goZGlzcGxheV8sIHNobV9zZWdtZW50X2luZm9fKTsKLSAgICAgICAg
WFN5bmMoZGlzcGxheV8sIEZhbHNlKTsKLSAgICAgICAgaWYgKGVycm9yX3RyYXAuR2V0TGFzdEVy
cm9yQW5kRGlzYWJsZSgpICE9IDApCi0gICAgICAgICAgdXNpbmdfc2htID0gZmFsc2U7Ci0gICAg
ICAgIGlmICh1c2luZ19zaG0pIHsKLSAgICAgICAgICBSVENfTE9HKExTX1ZFUkJPU0UpCi0gICAg
ICAgICAgICAgIDw8ICJVc2luZyBYIHNoYXJlZCBtZW1vcnkgc2VnbWVudCAiIDw8IHNobV9zZWdt
ZW50X2luZm9fLT5zaG1pZDsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAg
ICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gZ2V0IHNoYXJlZCBtZW1vcnkgc2Vn
bWVudC4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyZm9ybWFuY2UgbWF5IGJl
IGRlZ3JhZGVkLiI7Ci0gICAgfQotICB9Ci0KLSAgaWYgKCF1c2luZ19zaG0pIHsKLSAgICBSVENf
TE9HKExTX1dBUk5JTkcpCi0gICAgICAgIDw8ICJOb3QgdXNpbmcgc2hhcmVkIG1lbW9yeS4gUGVy
Zm9ybWFuY2UgbWF5IGJlIGRlZ3JhZGVkLiI7Ci0gICAgUmVsZWFzZVNoYXJlZE1lbW9yeVNlZ21l
bnQoKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoaGF2ZV9waXhtYXBzKQotICAgIGhhdmVf
cGl4bWFwcyA9IEluaXRQaXhtYXBzKGRlZmF1bHRfZGVwdGgpOwotCi0gIHNobWN0bChzaG1fc2Vn
bWVudF9pbmZvXy0+c2htaWQsIElQQ19STUlELCAwKTsKLSAgc2htX3NlZ21lbnRfaW5mb18tPnNo
bWlkID0gLTE7Ci0KLSAgUlRDX0xPRyhMU19WRVJCT1NFKSA8PCAiVXNpbmcgWCBzaGFyZWQgbWVt
b3J5IGV4dGVuc2lvbiB2IiA8PCBtYWpvciA8PCAiLiIKLSAgICAgICAgICAgICAgICAgICAgICA8
PCBtaW5vciA8PCAiIHdpdGgiIDw8IChoYXZlX3BpeG1hcHMgPyAiIiA6ICJvdXQiKQotICAgICAg
ICAgICAgICAgICAgICAgIDw8ICIgcGl4bWFwcy4iOwotfQotCi1ib29sIFhTZXJ2ZXJQaXhlbEJ1
ZmZlcjo6SW5pdFBpeG1hcHMoaW50IGRlcHRoKSB7Ci0gIGlmIChYU2htUGl4bWFwRm9ybWF0KGRp
c3BsYXlfKSAhPSBaUGl4bWFwKQotICAgIHJldHVybiBmYWxzZTsKLQotICB7Ci0gICAgWEVycm9y
VHJhcCBlcnJvcl90cmFwKGRpc3BsYXlfKTsKLSAgICBzaG1fcGl4bWFwXyA9IFhTaG1DcmVhdGVQ
aXhtYXAoCi0gICAgICAgIGRpc3BsYXlfLCB3aW5kb3dfLCBzaG1fc2VnbWVudF9pbmZvXy0+c2ht
YWRkciwgc2htX3NlZ21lbnRfaW5mb18sCi0gICAgICAgIHdpbmRvd19yZWN0Xy53aWR0aCgpLCB3
aW5kb3dfcmVjdF8uaGVpZ2h0KCksIGRlcHRoKTsKLSAgICBYU3luYyhkaXNwbGF5XywgRmFsc2Up
OwotICAgIGlmIChlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKSB7Ci0g
ICAgICAvLyB8c2htX3BpeG1hcF98IGlzIG5vdCBub3QgdmFsaWQgYmVjYXVzZSB0aGUgcmVxdWVz
dCB3YXMgbm90IHByb2Nlc3NlZAotICAgICAgLy8gYnkgdGhlIFggU2VydmVyLCBzbyB6ZXJvIGl0
LgotICAgICAgc2htX3BpeG1hcF8gPSAwOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
fQotCi0gIHsKLSAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheV8pOwotICAgIFhHQ1Zh
bHVlcyBzaG1fZ2NfdmFsdWVzOwotICAgIHNobV9nY192YWx1ZXMuc3Vid2luZG93X21vZGUgPSBJ
bmNsdWRlSW5mZXJpb3JzOwotICAgIHNobV9nY192YWx1ZXMuZ3JhcGhpY3NfZXhwb3N1cmVzID0g
RmFsc2U7Ci0gICAgc2htX2djXyA9IFhDcmVhdGVHQyhkaXNwbGF5Xywgd2luZG93XywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEdDU3Vid2luZG93TW9kZSB8IEdDR3JhcGhpY3NFeHBvc3VyZXMs
ICZzaG1fZ2NfdmFsdWVzKTsKLSAgICBYU3luYyhkaXNwbGF5XywgRmFsc2UpOwotICAgIGlmIChl
cnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKSB7Ci0gICAgICBYRnJlZVBp
eG1hcChkaXNwbGF5Xywgc2htX3BpeG1hcF8pOwotICAgICAgc2htX3BpeG1hcF8gPSAwOwotICAg
ICAgc2htX2djXyA9IDA7ICAvLyBTZWUgc2htX3BpeG1hcF8gY29tbWVudCBhYm92ZS4KLSAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBY
U2VydmVyUGl4ZWxCdWZmZXI6OklzV2luZG93VmFsaWQoKSBjb25zdCB7Ci0gIFhXaW5kb3dBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXM7Ci0gIHsKLSAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxh
eV8pOwotICAgIGlmICghWEdldFdpbmRvd0F0dHJpYnV0ZXMoZGlzcGxheV8sIHdpbmRvd18sICZh
dHRyaWJ1dGVzKSB8fAotICAgICAgICBlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUo
KSAhPSAwKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0gIHJldHVybiB0cnVl
OwotfQotCi12b2lkIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6U3luY2hyb25pemUoKSB7Ci0gIGlmIChz
aG1fc2VnbWVudF9pbmZvXyAmJiAhc2htX3BpeG1hcF8pIHsKLSAgICAvLyBYU2htR2V0SW1hZ2Ug
Y2FuIGZhaWwgaWYgdGhlIGRpc3BsYXkgaXMgYmVpbmcgcmVjb25maWd1cmVkLgotICAgIFhFcnJv
clRyYXAgZXJyb3JfdHJhcChkaXNwbGF5Xyk7Ci0gICAgLy8gWFNobUdldEltYWdlIGZhaWxzIGlm
IHRoZSB3aW5kb3cgaXMgcGFydGlhbGx5IG91dCBvZiBzY3JlZW4uCi0gICAgeHNobV9nZXRfaW1h
Z2Vfc3VjY2VlZGVkXyA9Ci0gICAgICAgIFhTaG1HZXRJbWFnZShkaXNwbGF5Xywgd2luZG93Xywg
eF9zaG1faW1hZ2VfLCAwLCAwLCBBbGxQbGFuZXMpOwotICB9Ci19Ci0KLWJvb2wgWFNlcnZlclBp
eGVsQnVmZmVyOjpDYXB0dXJlUmVjdChjb25zdCBEZXNrdG9wUmVjdCYgcmVjdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNrdG9wRnJhbWUqIGZyYW1lKSB7Ci0gIFJU
Q19EQ0hFQ0tfTEUocmVjdC5yaWdodCgpLCB3aW5kb3dfcmVjdF8ud2lkdGgoKSk7Ci0gIFJUQ19E
Q0hFQ0tfTEUocmVjdC5ib3R0b20oKSwgd2luZG93X3JlY3RfLmhlaWdodCgpKTsKLQotICBYSW1h
Z2UqIGltYWdlOwotICB1aW50OF90KiBkYXRhOwotCi0gIGlmIChzaG1fc2VnbWVudF9pbmZvXyAm
JiAoc2htX3BpeG1hcF8gfHwgeHNobV9nZXRfaW1hZ2Vfc3VjY2VlZGVkXykpIHsKLSAgICBpZiAo
c2htX3BpeG1hcF8pIHsKLSAgICAgIFhDb3B5QXJlYShkaXNwbGF5Xywgd2luZG93Xywgc2htX3Bp
eG1hcF8sIHNobV9nY18sIHJlY3QubGVmdCgpLAotICAgICAgICAgICAgICAgIHJlY3QudG9wKCks
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgcmVjdC5sZWZ0KCksCi0gICAgICAgICAgICAg
ICAgcmVjdC50b3AoKSk7Ci0gICAgICBYU3luYyhkaXNwbGF5XywgRmFsc2UpOwotICAgIH0KLQot
ICAgIGltYWdlID0geF9zaG1faW1hZ2VfOwotICAgIGRhdGEgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihpbWFnZS0+ZGF0YSkgKwotICAgICAgICAgICByZWN0LnRvcCgpICogaW1hZ2UtPmJ5
dGVzX3Blcl9saW5lICsKLSAgICAgICAgICAgcmVjdC5sZWZ0KCkgKiBpbWFnZS0+Yml0c19wZXJf
cGl4ZWwgLyA4OwotCi0gIH0gZWxzZSB7Ci0gICAgaWYgKHhfaW1hZ2VfKQotICAgICAgWERlc3Ry
b3lJbWFnZSh4X2ltYWdlXyk7Ci0gICAgeF9pbWFnZV8gPSBYR2V0SW1hZ2UoZGlzcGxheV8sIHdp
bmRvd18sIHJlY3QubGVmdCgpLCByZWN0LnRvcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgQWxsUGxhbmVzLCBaUGl4bWFwKTsKLSAgICBp
ZiAoIXhfaW1hZ2VfKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaW1hZ2UgPSB4X2ltYWdl
XzsKLSAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW1hZ2UtPmRhdGEpOwot
ICB9Ci0KLSAgaWYgKElzWEltYWdlUkdCRm9ybWF0KGltYWdlKSkgewotICAgIEZhc3RCbGl0KGlt
YWdlLCBkYXRhLCByZWN0LCBmcmFtZSk7Ci0gIH0gZWxzZSB7Ci0gICAgU2xvd0JsaXQoaW1hZ2Us
IGRhdGEsIHJlY3QsIGZyYW1lKTsKLSAgfQotCi0gIHJldHVybiB0cnVlOwotfQotCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9zZXJ2ZXJfcGl4ZWxf
YnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMjA5NDVmM2Q1MjljYWZlZTBiZTM2NTYwNGE0ZmYzNWVi
OTllNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUveDExL3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsODQg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLS8vIERvbid0IGluY2x1ZGUgdGhpcyBm
aWxlIGluIGFueSAuaCBmaWxlcyBiZWNhdXNlIGl0IHB1bGxzIGluIHNvbWUgWCBoZWFkZXJzLgot
Ci0jaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1gxMV9YX1NFUlZFUl9QSVhFTF9CVUZG
RVJfSF8KLSNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDExX1hfU0VSVkVSX1BJWEVM
X0JVRkZFUl9IXwotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9n
ZW9tZXRyeS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLQotI2lu
Y2x1ZGUgPFgxMS9YdXRpbC5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hTaG0uaD4KLQot
bmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIERlc2t0b3BGcmFtZTsKLQotLy8gQSBjbGFzcyB0
byBhbGxvdyB0aGUgWCBzZXJ2ZXIncyBwaXhlbCBidWZmZXIgdG8gYmUgYWNjZXNzZWQgYXMgZWZm
aWNpZW50bHkKLS8vIGFzIHBvc3NpYmxlLgotY2xhc3MgWFNlcnZlclBpeGVsQnVmZmVyIHsKLSBw
dWJsaWM6Ci0gIFhTZXJ2ZXJQaXhlbEJ1ZmZlcigpOwotICB+WFNlcnZlclBpeGVsQnVmZmVyKCk7
Ci0KLSAgdm9pZCBSZWxlYXNlKCk7Ci0KLSAgLy8gQWxsb2NhdGUgKG9yIHJlYWxsb2NhdGUpIHRo
ZSBwaXhlbCBidWZmZXIgZm9yIHx3aW5kb3d8LiBSZXR1cm5zIGZhbHNlIGluCi0gIC8vIGNhc2Ug
b2YgYW4gZXJyb3IgKGUuZy4gd2luZG93IGRvZXNuJ3QgZXhpc3QpLgotICBib29sIEluaXQoRGlz
cGxheSogZGlzcGxheSwgV2luZG93IHdpbmRvdyk7Ci0KLSAgYm9vbCBpc19pbml0aWFsaXplZCgp
IHsgcmV0dXJuIHdpbmRvd18gIT0gMDsgfQotCi0gIC8vIFJldHVybnMgdGhlIHNpemUgb2YgdGhl
IHdpbmRvdyB0aGUgYnVmZmVyIHdhcyBpbml0aWFsaXplZCBmb3IuCi0gIERlc2t0b3BTaXplIHdp
bmRvd19zaXplKCkgeyByZXR1cm4gd2luZG93X3JlY3RfLnNpemUoKTsgfQotCi0gIC8vIFJldHVy
bnMgdGhlIHJlY3RhbmdsZSBvZiB0aGUgd2luZG93IHRoZSBidWZmZXIgd2FzIGluaXRpYWxpemVk
IGZvci4KLSAgY29uc3QgRGVza3RvcFJlY3QmIHdpbmRvd19yZWN0KCkgeyByZXR1cm4gd2luZG93
X3JlY3RfOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgY2FuIGJlIGZvdW5k
LgotICBib29sIElzV2luZG93VmFsaWQoKSBjb25zdDsKLQotICAvLyBJZiBzaGFyZWQgbWVtb3J5
IGlzIGJlaW5nIHVzZWQgd2l0aG91dCBwaXhtYXBzLCBzeW5jaHJvbml6ZSB0aGlzIHBpeGVsCi0g
IC8vIGJ1ZmZlciB3aXRoIHRoZSByb290IHdpbmRvdyBjb250ZW50cyAob3RoZXJ3aXNlLCB0aGlz
IGlzIGEgbm8tb3ApLgotICAvLyBUaGlzIGlzIHRvIGF2b2lkIGRvaW5nIGEgZnVsbC1zY3JlZW4g
Y2FwdHVyZSBmb3IgZWFjaCBpbmRpdmlkdWFsCi0gIC8vIHJlY3RhbmdsZSBpbiB0aGUgY2FwdHVy
ZSBsaXN0LCB3aGVuIGl0IG9ubHkgbmVlZHMgdG8gYmUgZG9uZSBvbmNlIGF0IHRoZQotICAvLyBi
ZWdpbm5pbmcuCi0gIHZvaWQgU3luY2hyb25pemUoKTsKLQotICAvLyBDYXB0dXJlIHRoZSBzcGVj
aWZpZWQgcmVjdGFuZ2xlIGFuZCBzdG9yZXMgaXQgaW4gdGhlIHxmcmFtZXwuIEluIHRoZSBjYXNl
Ci0gIC8vIHdoZXJlIHRoZSBmdWxsLXNjcmVlbiBkYXRhIGlzIGNhcHR1cmVkIGJ5IFN5bmNocm9u
aXplKCksIHRoaXMgc2ltcGx5Ci0gIC8vIHJldHVybnMgdGhlIHBvaW50ZXIgd2l0aG91dCBkb2lu
ZyBhbnkgbW9yZSB3b3JrLiBUaGUgY2FsbGVyIG11c3QgZW5zdXJlCi0gIC8vIHRoYXQgfHJlY3R8
IGlzIG5vdCBsYXJnZXIgdGhhbiB3aW5kb3dfc2l6ZSgpLgotICBib29sIENhcHR1cmVSZWN0KGNv
bnN0IERlc2t0b3BSZWN0JiByZWN0LCBEZXNrdG9wRnJhbWUqIGZyYW1lKTsKLQotIHByaXZhdGU6
Ci0gIHZvaWQgUmVsZWFzZVNoYXJlZE1lbW9yeVNlZ21lbnQoKTsKLQotICB2b2lkIEluaXRTaG0o
Y29uc3QgWFdpbmRvd0F0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpOwotICBib29sIEluaXRQaXhtYXBz
KGludCBkZXB0aCk7Ci0KLSAgRGlzcGxheSogZGlzcGxheV8gPSBudWxscHRyOwotICBXaW5kb3cg
d2luZG93XyA9IDA7Ci0gIERlc2t0b3BSZWN0IHdpbmRvd19yZWN0XzsKLSAgWEltYWdlKiB4X2lt
YWdlXyA9IG51bGxwdHI7Ci0gIFhTaG1TZWdtZW50SW5mbyogc2htX3NlZ21lbnRfaW5mb18gPSBu
dWxscHRyOwotICBYSW1hZ2UqIHhfc2htX2ltYWdlXyA9IG51bGxwdHI7Ci0gIFBpeG1hcCBzaG1f
cGl4bWFwXyA9IDA7Ci0gIEdDIHNobV9nY18gPSBudWxscHRyOwotICBib29sIHhzaG1fZ2V0X2lt
YWdlX3N1Y2NlZWRlZF8gPSBmYWxzZTsKLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
KFhTZXJ2ZXJQaXhlbEJ1ZmZlcik7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNl
bmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDExX1hfU0VSVkVSX1BJWEVMX0JVRkZF
Ul9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1v
bl90eXBlcy5jYwppbmRleCA0YWQ1ZDE0NDRlOWM1N2E3MTIxNWI1OTY5MDM3YWYzNzJkNWUyNWE3
Li44MGViYTJlMzA1MWNkMmQxZmRmMGFhNTFmNjJmNTA0OGRhMDVlYTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2luY2x1ZGUv
bW9kdWxlX2NvbW1vbl90eXBlcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5jYwpAQCAt
MTEsNiArMTEsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5
cGVzLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1
ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNp
b25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21t
b25fdHlwZXMuaAppbmRleCA5OGZmNzY3MzExMGNkMDM5ZWM2Y2QzMjU0N2FlNzE4ZDljYmRkYTdj
Li5lMDU4Y2M4NGU2NmZmNzk1NDVhZmUwZTA4M2IzMTEyNDZhODlmM2YxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2luY2x1ZGUv
bW9kdWxlX2NvbW1vbl90eXBlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgKQEAgLTE5
LDYgKzE5LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBl
c19wdWJsaWMuaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2ZlY190eXBlcy5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIApAQCAtMzMsNyArMzQsNyBAQCBzdHJ1Y3QgV2ViUnRjUlRQSGVhZGVyIHsKICAgaW50
NjRfdCBudHBfdGltZV9tczsKIH07CiAKLWNsYXNzIFJUUEZyYWdtZW50YXRpb25IZWFkZXIgewor
Y2xhc3MgUlRDX0VYUE9SVCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyIHsKICBwdWJsaWM6CiAgIFJU
UEZyYWdtZW50YXRpb25IZWFkZXIoKTsKICAgUlRQRnJhZ21lbnRhdGlvbkhlYWRlcihjb25zdCBS
VFBGcmFnbWVudGF0aW9uSGVhZGVyJikgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9CVUlMRC5nbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5n
L0JVSUxELmduCmluZGV4IGEwNjIzM2FkOTAxMzFiNDA3YjAxOTY4NGVhZDgxZmQ3MzMwZDBhYTQu
LjliYzYxOTM2ZjE2ODIyYjdkOGVhYjM3YTUwZmE1NWJmOGZhMzY1YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL0JV
SUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcGFjaW5nL0JVSUxELmduCkBAIC0yOSw3ICsyOSw2IEBAIHJ0Y19zdGF0aWNfbGlicmFy
eSgicGFjaW5nIikgewogICBkZXBzID0gWwogICAgICI6aW50ZXJ2YWxfYnVkZ2V0IiwKICAgICAi
Li46bW9kdWxlX2FwaSIsCi0gICAgIi4uLy4uLzp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4v
YXBpL3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAogICAgICIuLi8uLi9sb2dnaW5nOnJ0Y19l
dmVudF9id2UiLAogICAgICIuLi8uLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKQEAgLTU2
LDcgKzU1LDYgQEAgcnRjX3NvdXJjZV9zZXQoImludGVydmFsX2J1ZGdldCIpIHsKICAgXQogCiAg
IGRlcHMgPSBbCi0gICAgIi4uLy4uLzp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vcnRjX2Jh
c2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICBd
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmNjCmluZGV4
IGNiZjFkMmI5N2VmYjkyNzJlYjI1OWNhZWIwZGMzY2RlOTMyMDVmYTAuLjRmZjdjMGQ1ODNkZDFk
NzA4ZGQ5MDAzNGYxMDA4ZTAxM2VkMWFiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cGFjaW5nL2JpdHJhdGVfcHJvYmVyLmNjCkBAIC0xMyw5ICsxMyw5IEBACiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAibG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIKICNpbmNsdWRlICJsb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9jbHVzdGVyX2NyZWF0ZWQuaCIK
ICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgotI2luY2x1
ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIApAQCAtOTYsOCArOTYsOSBA
QCB2b2lkIEJpdHJhdGVQcm9iZXI6OkNyZWF0ZVByb2JlQ2x1c3RlcihpbnQgYml0cmF0ZV9icHMs
IGludDY0X3Qgbm93X21zKSB7CiAgIFByb2JlQ2x1c3RlciBjbHVzdGVyOwogICBjbHVzdGVyLnRp
bWVfY3JlYXRlZF9tcyA9IG5vd19tczsKICAgY2x1c3Rlci5wYWNlX2luZm8ucHJvYmVfY2x1c3Rl
cl9taW5fcHJvYmVzID0ga01pblByb2JlUGFja2V0c1NlbnQ7Ci0gIGNsdXN0ZXIucGFjZV9pbmZv
LnByb2JlX2NsdXN0ZXJfbWluX2J5dGVzID0KLSAgICAgIGJpdHJhdGVfYnBzICoga01pblByb2Jl
RHVyYXRpb25NcyAvIDgwMDA7CisgIGNsdXN0ZXIucGFjZV9pbmZvLnByb2JlX2NsdXN0ZXJfbWlu
X2J5dGVzID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oCisgICAgICBzdGF0aWNfY2FzdDxpbnQ2NF90
PihiaXRyYXRlX2JwcykgKiBrTWluUHJvYmVEdXJhdGlvbk1zIC8gODAwMCk7CisgIFJUQ19EQ0hF
Q0tfR0UoY2x1c3Rlci5wYWNlX2luZm8ucHJvYmVfY2x1c3Rlcl9taW5fYnl0ZXMsIDApOwogICBj
bHVzdGVyLnBhY2VfaW5mby5zZW5kX2JpdHJhdGVfYnBzID0gYml0cmF0ZV9icHM7CiAgIGNsdXN0
ZXIucGFjZV9pbmZvLnByb2JlX2NsdXN0ZXJfaWQgPSBuZXh0X2NsdXN0ZXJfaWRfKys7CiAgIGNs
dXN0ZXJzXy5wdXNoKGNsdXN0ZXIpOwpAQCAtMTI2LDkgKzEyNyw5IEBAIGludCBCaXRyYXRlUHJv
YmVyOjpUaW1lVW50aWxOZXh0UHJvYmUoaW50NjRfdCBub3dfbXMpIHsKICAgaWYgKG5leHRfcHJv
YmVfdGltZV9tc18gPj0gMCkgewogICAgIHRpbWVfdW50aWxfcHJvYmVfbXMgPSBuZXh0X3Byb2Jl
X3RpbWVfbXNfIC0gbm93X21zOwogICAgIGlmICh0aW1lX3VudGlsX3Byb2JlX21zIDwgLWtNYXhQ
cm9iZURlbGF5TXMpIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlByb2JlIGRlbGF5
IHRvbyBoaWdoIgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIChuZXh0X21zOiIgPDwg
bmV4dF9wcm9iZV90aW1lX21zXwotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBub3df
bXM6ICIgPDwgbm93X21zIDw8ICIpIjsKKyAgICAgIFJUQ19ETE9HKExTX1dBUk5JTkcpIDw8ICJQ
cm9iZSBkZWxheSB0b28gaGlnaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgKG5l
eHRfbXM6IiA8PCBuZXh0X3Byb2JlX3RpbWVfbXNfCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiLCBub3dfbXM6ICIgPDwgbm93X21zIDw8ICIpIjsKICAgICAgIHJldHVybiAtMTsKICAg
ICB9CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5o
CmluZGV4IGIyNTQ4YzAwNmRlODNmNWU1OTdkMzY1MmRmNDhmZWIyMGMyNWM2N2MuLmJiOTgxMDBk
ZmFjNWM2Yzc0OTY2Y2VjNjA1OGM3MjM0NzlhZDU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJv
YmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9wYWNpbmcvYml0cmF0ZV9wcm9iZXIuaApAQCAtMTEsMTAgKzExLDExIEBACiAjaWZuZGVm
IE1PRFVMRVNfUEFDSU5HX0JJVFJBVEVfUFJPQkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfUEFDSU5H
X0JJVFJBVEVfUFJPQkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRp
bnQuaD4KICNpbmNsdWRlIDxxdWV1ZT4KIAogI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29y
a190eXBlcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVz
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgUnRjRXZlbnRMb2c7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2lu
Zy9iaXRyYXRlX3Byb2Jlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyX3VuaXR0ZXN0LmNj
CmluZGV4IGRjNTk2OTgyZGIwMjJiM2E5MzM0YTFlY2JiOWEwMzg1YmNmMTAyNDcuLjk1ZDI2NTkz
Y2JkZGI5MWZjNjMyNWY1MmY0MDI0NzlhOGY5MDM4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJv
YmVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyX3VuaXR0ZXN0LmNjCkBAIC0xNDcs
NiArMTQ3LDI0IEBAIFRFU1QoQml0cmF0ZVByb2JlclRlc3QsIFNjYWxlQnl0ZXNVc2VkRm9yUHJv
YmluZykgewogICBFWFBFQ1RfRkFMU0UocHJvYmVyLklzUHJvYmluZygpKTsKIH0KIAorVEVTVChC
aXRyYXRlUHJvYmVyVGVzdCwgSGlnaEJpdHJhdGVQcm9iaW5nKSB7CisgIEJpdHJhdGVQcm9iZXIg
cHJvYmVyOworICBjb25zdGV4cHIgaW50IGtCaXRyYXRlQnBzID0gMTAwMDAwMDAwMDsgIC8vIDEg
R2Jwcy4KKyAgY29uc3RleHByIGludCBrUGFja2V0U2l6ZUJ5dGVzID0gMTAwMDsKKyAgY29uc3Rl
eHByIGludCBrRXhwZWN0ZWRCeXRlc1NlbnQgPSAoa0JpdHJhdGVCcHMgLyA4MDAwKSAqIDE1Owor
CisgIHByb2Jlci5DcmVhdGVQcm9iZUNsdXN0ZXIoa0JpdHJhdGVCcHMsIDApOworICBwcm9iZXIu
T25JbmNvbWluZ1BhY2tldChrUGFja2V0U2l6ZUJ5dGVzKTsKKyAgaW50IGJ5dGVzX3NlbnQgPSAw
OworICB3aGlsZSAoYnl0ZXNfc2VudCA8IGtFeHBlY3RlZEJ5dGVzU2VudCkgeworICAgIEFTU0VS
VF9UUlVFKHByb2Jlci5Jc1Byb2JpbmcoKSk7CisgICAgcHJvYmVyLlByb2JlU2VudCgwLCBrUGFj
a2V0U2l6ZUJ5dGVzKTsKKyAgICBieXRlc19zZW50ICs9IGtQYWNrZXRTaXplQnl0ZXM7CisgIH0K
KworICBFWFBFQ1RfRkFMU0UocHJvYmVyLklzUHJvYmluZygpKTsKK30KKwogVEVTVChCaXRyYXRl
UHJvYmVyVGVzdCwgUHJvYmVDbHVzdGVyVGltZW91dCkgewogICBCaXRyYXRlUHJvYmVyIHByb2Jl
cjsKICAgY29uc3RleHByIGludCBrQml0cmF0ZUJwcyA9IDMwMDAwMDsgIC8vIDMwMCBrYnBzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3BhY2luZy9pbnRlcnZhbF9idWRnZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2ludGVydmFsX2J1ZGdldC5oCmluZGV4IDg4
MGZlNzg0YmE3NGYwN2VlODEyZTk0ZGZlYTljYWQ1ZWYzZDVjZTMuLmQwOWIwNmUzNDAzNGFlMjQz
ZjZiZjFhMTBjMmZkZGM2NDVjZmMxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2ludGVydmFsX2J1ZGdldC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFj
aW5nL2ludGVydmFsX2J1ZGdldC5oCkBAIC0xMSw3ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNf
UEFDSU5HX0lOVEVSVkFMX0JVREdFVF9IXwogI2RlZmluZSBNT0RVTEVTX1BBQ0lOR19JTlRFUlZB
TF9CVURHRVRfSF8KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxk
L2luY2x1ZGUpCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNlZF9z
ZW5kZXIuY2MKaW5kZXggOGNjNDQyYzIyOGU4NDlmZGZiZjJkZDZiOGViZmIzM2VmZDE3MzA3ZS4u
N2UwYWM3ODFlMmI3ODRjYjdlOWE2OGExNTk5MjYwOTcxY2RhMzU3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcGFj
ZWRfc2VuZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5jYwpAQCAtMTEsMTUgKzExLDExIEBACiAj
aW5jbHVkZSAibW9kdWxlcy9wYWNpbmcvcGFjZWRfc2VuZGVyLmgiCiAKICNpbmNsdWRlIDxhbGdv
cml0aG0+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHF1ZXVlPgotI2luY2x1ZGUgPHNldD4K
ICNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZl
bnRfbG9nLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9hbHJfZGV0ZWN0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1v
bl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9wYWNpbmcvaW50ZXJ2YWxfYnVkZ2V0LmgiCiAjaW5jbHVkZSAibW9k
dWxlcy91dGlsaXR5L2luY2x1ZGUvcHJvY2Vzc190aHJlYWQuaCIKQEAgLTU4LDkgKzU0LDkgQEAg
UGFjZWRTZW5kZXI6OlBhY2VkU2VuZGVyKGNvbnN0IENsb2NrKiBjbG9jaywKICAgICAgIHZpZGVv
X2Jsb2Nrc19hdWRpb18oIWZpZWxkX3RyaWFsOjpJc0Rpc2FibGVkKCJXZWJSVEMtUGFjZXItQmxv
Y2tBdWRpbyIpKSwKICAgICAgIGxhc3RfdGltZXN0YW1wX21zXyhjbG9ja18tPlRpbWVJbk1pbGxp
c2Vjb25kcygpKSwKICAgICAgIHBhdXNlZF8oZmFsc2UpLAotICAgICAgbWVkaWFfYnVkZ2V0Xyhh
YnNsOjptYWtlX3VuaXF1ZTxJbnRlcnZhbEJ1ZGdldD4oMCkpLAotICAgICAgcGFkZGluZ19idWRn
ZXRfKGFic2w6Om1ha2VfdW5pcXVlPEludGVydmFsQnVkZ2V0PigwKSksCi0gICAgICBwcm9iZXJf
KGFic2w6Om1ha2VfdW5pcXVlPEJpdHJhdGVQcm9iZXI+KGV2ZW50X2xvZykpLAorICAgICAgbWVk
aWFfYnVkZ2V0XygwKSwKKyAgICAgIHBhZGRpbmdfYnVkZ2V0XygwKSwKKyAgICAgIHByb2Jlcl8o
ZXZlbnRfbG9nKSwKICAgICAgIHByb2Jpbmdfc2VuZF9mYWlsdXJlXyhmYWxzZSksCiAgICAgICBl
c3RpbWF0ZWRfYml0cmF0ZV9icHNfKDApLAogICAgICAgbWluX3NlbmRfYml0cmF0ZV9rYnBzXygw
dSksCkBAIC02OSw3ICs2NSw3IEBAIFBhY2VkU2VuZGVyOjpQYWNlZFNlbmRlcihjb25zdCBDbG9j
ayogY2xvY2ssCiAgICAgICB0aW1lX2xhc3RfcHJvY2Vzc191c18oY2xvY2stPlRpbWVJbk1pY3Jv
c2Vjb25kcygpKSwKICAgICAgIGxhc3Rfc2VuZF90aW1lX3VzXyhjbG9jay0+VGltZUluTWljcm9z
ZWNvbmRzKCkpLAogICAgICAgZmlyc3Rfc2VudF9wYWNrZXRfbXNfKC0xKSwKLSAgICAgIHBhY2tl
dHNfKGNsb2NrKSwKKyAgICAgIHBhY2tldHNfKGNsb2NrLT5UaW1lSW5NaWNyb3NlY29uZHMoKSks
CiAgICAgICBwYWNrZXRfY291bnRlcl8oMCksCiAgICAgICBwYWNpbmdfZmFjdG9yXyhrRGVmYXVs
dFBhY2VNdWx0aXBsaWVyKSwKICAgICAgIHF1ZXVlX3RpbWVfbGltaXQoa01heFF1ZXVlTGVuZ3Ro
TXMpLApAQCAtODQsNyArODAsNyBAQCBQYWNlZFNlbmRlcjo6flBhY2VkU2VuZGVyKCkge30KIAog
dm9pZCBQYWNlZFNlbmRlcjo6Q3JlYXRlUHJvYmVDbHVzdGVyKGludCBiaXRyYXRlX2Jwcykgewog
ICBydGM6OkNyaXRTY29wZSBjcygmY3JpdHNlY3RfKTsKLSAgcHJvYmVyXy0+Q3JlYXRlUHJvYmVD
bHVzdGVyKGJpdHJhdGVfYnBzLCBUaW1lTWlsbGlzZWNvbmRzKCkpOworICBwcm9iZXJfLkNyZWF0
ZVByb2JlQ2x1c3RlcihiaXRyYXRlX2JwcywgVGltZU1pbGxpc2Vjb25kcygpKTsKIH0KIAogdm9p
ZCBQYWNlZFNlbmRlcjo6UGF1c2UoKSB7CkBAIC0xNDksNyArMTQ1LDcgQEAgaW50NjRfdCBQYWNl
ZFNlbmRlcjo6VGltZU1pbGxpc2Vjb25kcygpIGNvbnN0IHsKIHZvaWQgUGFjZWRTZW5kZXI6OlNl
dFByb2JpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgewogICBydGM6OkNyaXRTY29wZSBjcygmY3Jp
dHNlY3RfKTsKICAgUlRDX0NIRUNLX0VRKDAsIHBhY2tldF9jb3VudGVyXyk7Ci0gIHByb2Jlcl8t
PlNldEVuYWJsZWQoZW5hYmxlZCk7CisgIHByb2Jlcl8uU2V0RW5hYmxlZChlbmFibGVkKTsKIH0K
IAogdm9pZCBQYWNlZFNlbmRlcjo6U2V0RXN0aW1hdGVkQml0cmF0ZSh1aW50MzJfdCBiaXRyYXRl
X2JwcykgewpAQCAtMTU3LDcgKzE1Myw3IEBAIHZvaWQgUGFjZWRTZW5kZXI6OlNldEVzdGltYXRl
ZEJpdHJhdGUodWludDMyX3QgYml0cmF0ZV9icHMpIHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8
PCAiUGFjZWRTZW5kZXIgaXMgbm90IGRlc2lnbmVkIHRvIGhhbmRsZSAwIGJpdHJhdGUuIjsKICAg
cnRjOjpDcml0U2NvcGUgY3MoJmNyaXRzZWN0Xyk7CiAgIGVzdGltYXRlZF9iaXRyYXRlX2Jwc18g
PSBiaXRyYXRlX2JwczsKLSAgcGFkZGluZ19idWRnZXRfLT5zZXRfdGFyZ2V0X3JhdGVfa2JwcygK
KyAgcGFkZGluZ19idWRnZXRfLnNldF90YXJnZXRfcmF0ZV9rYnBzKAogICAgICAgc3RkOjptaW4o
ZXN0aW1hdGVkX2JpdHJhdGVfYnBzXyAvIDEwMDAsIG1heF9wYWRkaW5nX2JpdHJhdGVfa2Jwc18p
KTsKICAgcGFjaW5nX2JpdHJhdGVfa2Jwc18gPQogICAgICAgc3RkOjptYXgobWluX3NlbmRfYml0
cmF0ZV9rYnBzXywgZXN0aW1hdGVkX2JpdHJhdGVfYnBzXyAvIDEwMDApICoKQEAgLTE3Myw3ICsx
NjksNyBAQCB2b2lkIFBhY2VkU2VuZGVyOjpTZXRTZW5kQml0cmF0ZUxpbWl0cyhpbnQgbWluX3Nl
bmRfYml0cmF0ZV9icHMsCiAgICAgICBzdGQ6Om1heChtaW5fc2VuZF9iaXRyYXRlX2ticHNfLCBl
c3RpbWF0ZWRfYml0cmF0ZV9icHNfIC8gMTAwMCkgKgogICAgICAgcGFjaW5nX2ZhY3Rvcl87CiAg
IG1heF9wYWRkaW5nX2JpdHJhdGVfa2Jwc18gPSBwYWRkaW5nX2JpdHJhdGUgLyAxMDAwOwotICBw
YWRkaW5nX2J1ZGdldF8tPnNldF90YXJnZXRfcmF0ZV9rYnBzKAorICBwYWRkaW5nX2J1ZGdldF8u
c2V0X3RhcmdldF9yYXRlX2ticHMoCiAgICAgICBzdGQ6Om1pbihlc3RpbWF0ZWRfYml0cmF0ZV9i
cHNfIC8gMTAwMCwgbWF4X3BhZGRpbmdfYml0cmF0ZV9rYnBzXykpOwogfQogCkBAIC0xODIsNyAr
MTc4LDcgQEAgdm9pZCBQYWNlZFNlbmRlcjo6U2V0UGFjaW5nUmF0ZXModWludDMyX3QgcGFjaW5n
X3JhdGVfYnBzLAogICBydGM6OkNyaXRTY29wZSBjcygmY3JpdHNlY3RfKTsKICAgUlRDX0RDSEVD
SyhwYWNpbmdfcmF0ZV9icHMgPiAwKTsKICAgcGFjaW5nX2JpdHJhdGVfa2Jwc18gPSBwYWNpbmdf
cmF0ZV9icHMgLyAxMDAwOwotICBwYWRkaW5nX2J1ZGdldF8tPnNldF90YXJnZXRfcmF0ZV9rYnBz
KHBhZGRpbmdfcmF0ZV9icHMgLyAxMDAwKTsKKyAgcGFkZGluZ19idWRnZXRfLnNldF90YXJnZXRf
cmF0ZV9rYnBzKHBhZGRpbmdfcmF0ZV9icHMgLyAxMDAwKTsKIH0KIAogdm9pZCBQYWNlZFNlbmRl
cjo6SW5zZXJ0UGFja2V0KFJ0cFBhY2tldFNlbmRlcjo6UHJpb3JpdHkgcHJpb3JpdHksCkBAIC0x
OTYsNyArMTkyLDcgQEAgdm9pZCBQYWNlZFNlbmRlcjo6SW5zZXJ0UGFja2V0KFJ0cFBhY2tldFNl
bmRlcjo6UHJpb3JpdHkgcHJpb3JpdHksCiAgICAgICA8PCAiU2V0UGFjaW5nUmF0ZSBtdXN0IGJl
IGNhbGxlZCBiZWZvcmUgSW5zZXJ0UGFja2V0LiI7CiAKICAgaW50NjRfdCBub3dfbXMgPSBUaW1l
TWlsbGlzZWNvbmRzKCk7Ci0gIHByb2Jlcl8tPk9uSW5jb21pbmdQYWNrZXQoYnl0ZXMpOworICBw
cm9iZXJfLk9uSW5jb21pbmdQYWNrZXQoYnl0ZXMpOwogCiAgIGlmIChjYXB0dXJlX3RpbWVfbXMg
PCAwKQogICAgIGNhcHR1cmVfdGltZV9tcyA9IG5vd19tczsKQEAgLTI1NCwxNyArMjUwLDE1IEBA
IGludDY0X3QgUGFjZWRTZW5kZXI6OlRpbWVVbnRpbE5leHRQcm9jZXNzKCkgewogICBpZiAocGF1
c2VkXykKICAgICByZXR1cm4gc3RkOjptYXg8aW50NjRfdD4oa1BhdXNlZFByb2Nlc3NJbnRlcnZh
bE1zIC0gZWxhcHNlZF90aW1lX21zLCAwKTsKIAotICBpZiAocHJvYmVyXy0+SXNQcm9iaW5nKCkp
IHsKLSAgICBpbnQ2NF90IHJldCA9IHByb2Jlcl8tPlRpbWVVbnRpbE5leHRQcm9iZShUaW1lTWls
bGlzZWNvbmRzKCkpOworICBpZiAocHJvYmVyXy5Jc1Byb2JpbmcoKSkgeworICAgIGludDY0X3Qg
cmV0ID0gcHJvYmVyXy5UaW1lVW50aWxOZXh0UHJvYmUoVGltZU1pbGxpc2Vjb25kcygpKTsKICAg
ICBpZiAocmV0ID4gMCB8fCAocmV0ID09IDAgJiYgIXByb2Jpbmdfc2VuZF9mYWlsdXJlXykpCiAg
ICAgICByZXR1cm4gcmV0OwogICB9CiAgIHJldHVybiBzdGQ6Om1heDxpbnQ2NF90PihrTWluUGFj
a2V0TGltaXRNcyAtIGVsYXBzZWRfdGltZV9tcywgMCk7CiB9CiAKLXZvaWQgUGFjZWRTZW5kZXI6
OlByb2Nlc3MoKSB7Ci0gIGludDY0X3Qgbm93X3VzID0gY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29u
ZHMoKTsKLSAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRzZWN0Xyk7CitpbnQ2NF90IFBhY2VkU2Vu
ZGVyOjpVcGRhdGVUaW1lQW5kR2V0RWxhcHNlZE1zKGludDY0X3Qgbm93X3VzKSB7CiAgIGludDY0
X3QgZWxhcHNlZF90aW1lX21zID0gKG5vd191cyAtIHRpbWVfbGFzdF9wcm9jZXNzX3VzXyArIDUw
MCkgLyAxMDAwOwogICB0aW1lX2xhc3RfcHJvY2Vzc191c18gPSBub3dfdXM7CiAgIGlmIChlbGFw
c2VkX3RpbWVfbXMgPiBrTWF4RWxhcHNlZFRpbWVNcykgewpAQCAtMjczLDYgKzI2NywxMCBAQCB2
b2lkIFBhY2VkU2VuZGVyOjpQcm9jZXNzKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgPDwg
a01heEVsYXBzZWRUaW1lTXMgPDwgIiBtcyI7CiAgICAgZWxhcHNlZF90aW1lX21zID0ga01heEVs
YXBzZWRUaW1lTXM7CiAgIH0KKyAgcmV0dXJuIGVsYXBzZWRfdGltZV9tczsKK30KKworYm9vbCBQ
YWNlZFNlbmRlcjo6U2hvdWxkU2VuZEtlZXBhbGl2ZShpbnQ2NF90IG5vd191cykgY29uc3Qgewog
ICBpZiAoc2VuZF9wYWRkaW5nX2lmX3NpbGVudF8gfHwgcGF1c2VkXyB8fCBDb25nZXN0ZWQoKSkg
ewogICAgIC8vIFdlIHNlbmQgYSBwYWRkaW5nIHBhY2tldCBldmVyeSA1MDAgbXMgdG8gZW5zdXJl
IHdlIHdvbid0IGdldCBzdHVjayBpbgogICAgIC8vIGNvbmdlc3RlZCBzdGF0ZSBkdWUgdG8gbm8g
ZmVlZGJhY2sgYmVpbmcgcmVjZWl2ZWQuCkBAIC0yODEsMTIgKzI3OSwyNSBAQCB2b2lkIFBhY2Vk
U2VuZGVyOjpQcm9jZXNzKCkgewogICAgICAgLy8gV2UgY2FuIG5vdCBzZW5kIHBhZGRpbmcgdW5s
ZXNzIGEgbm9ybWFsIHBhY2tldCBoYXMgZmlyc3QgYmVlbiBzZW50LiBJZgogICAgICAgLy8gd2Ug
ZG8sIHRpbWVzdGFtcHMgZ2V0IG1lc3NlZCB1cC4KICAgICAgIGlmIChwYWNrZXRfY291bnRlcl8g
PiAwKSB7Ci0gICAgICAgIFBhY2VkUGFja2V0SW5mbyBwYWNpbmdfaW5mbzsKLSAgICAgICAgc2l6
ZV90IGJ5dGVzX3NlbnQgPSBTZW5kUGFkZGluZygxLCBwYWNpbmdfaW5mbyk7Ci0gICAgICAgIGFs
cl9kZXRlY3Rvcl8tPk9uQnl0ZXNTZW50KGJ5dGVzX3NlbnQsIG5vd191cyAvIDEwMDApOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgIH0KICAgICB9CiAgIH0KKyAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFBhY2VkU2VuZGVyOjpQcm9jZXNzKCkgeworICBydGM6OkNyaXRTY29wZSBjcygm
Y3JpdHNlY3RfKTsKKyAgaW50NjRfdCBub3dfdXMgPSBjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25k
cygpOworICBpbnQ2NF90IGVsYXBzZWRfdGltZV9tcyA9IFVwZGF0ZVRpbWVBbmRHZXRFbGFwc2Vk
TXMobm93X3VzKTsKKyAgaWYgKFNob3VsZFNlbmRLZWVwYWxpdmUobm93X3VzKSkgeworICAgIGNy
aXRzZWN0Xy5MZWF2ZSgpOworICAgIHNpemVfdCBieXRlc19zZW50ID0gcGFja2V0X3NlbmRlcl8t
PlRpbWVUb1NlbmRQYWRkaW5nKDEsIFBhY2VkUGFja2V0SW5mbygpKTsKKyAgICBjcml0c2VjdF8u
RW50ZXIoKTsKKyAgICBPblBhZGRpbmdTZW50KGJ5dGVzX3NlbnQpOworICAgIGFscl9kZXRlY3Rv
cl8tPk9uQnl0ZXNTZW50KGJ5dGVzX3NlbnQsIG5vd191cyAvIDEwMDApOworICB9CisKICAgaWYg
KHBhdXNlZF8pCiAgICAgcmV0dXJuOwogCkBAIC0zMDgsMzUgKzMxOSwzOSBAQCB2b2lkIFBhY2Vk
U2VuZGVyOjpQcm9jZXNzKCkgewogICAgICAgfQogICAgIH0KIAotICAgIG1lZGlhX2J1ZGdldF8t
PnNldF90YXJnZXRfcmF0ZV9rYnBzKHRhcmdldF9iaXRyYXRlX2ticHMpOworICAgIG1lZGlhX2J1
ZGdldF8uc2V0X3RhcmdldF9yYXRlX2ticHModGFyZ2V0X2JpdHJhdGVfa2Jwcyk7CiAgICAgVXBk
YXRlQnVkZ2V0V2l0aEVsYXBzZWRUaW1lKGVsYXBzZWRfdGltZV9tcyk7CiAgIH0KIAotICBib29s
IGlzX3Byb2JpbmcgPSBwcm9iZXJfLT5Jc1Byb2JpbmcoKTsKKyAgYm9vbCBpc19wcm9iaW5nID0g
cHJvYmVyXy5Jc1Byb2JpbmcoKTsKICAgUGFjZWRQYWNrZXRJbmZvIHBhY2luZ19pbmZvOwogICBz
aXplX3QgYnl0ZXNfc2VudCA9IDA7CiAgIHNpemVfdCByZWNvbW1lbmRlZF9wcm9iZV9zaXplID0g
MDsKICAgaWYgKGlzX3Byb2JpbmcpIHsKLSAgICBwYWNpbmdfaW5mbyA9IHByb2Jlcl8tPkN1cnJl
bnRDbHVzdGVyKCk7Ci0gICAgcmVjb21tZW5kZWRfcHJvYmVfc2l6ZSA9IHByb2Jlcl8tPlJlY29t
bWVuZGVkTWluUHJvYmVTaXplKCk7CisgICAgcGFjaW5nX2luZm8gPSBwcm9iZXJfLkN1cnJlbnRD
bHVzdGVyKCk7CisgICAgcmVjb21tZW5kZWRfcHJvYmVfc2l6ZSA9IHByb2Jlcl8uUmVjb21tZW5k
ZWRNaW5Qcm9iZVNpemUoKTsKICAgfQotICAvLyBUaGUgcGF1c2VkIHN0YXRlIGlzIGNoZWNrZWQg
aW4gdGhlIGxvb3Agc2luY2UgU2VuZFBhY2tldCBsZWF2ZXMgdGhlCi0gIC8vIGNyaXRpY2FsIHNl
Y3Rpb24gYWxsb3dpbmcgdGhlIHBhdXNlZCBzdGF0ZSB0byBiZSBjaGFuZ2VkIGZyb20gb3RoZXIg
Y29kZS4KKyAgLy8gVGhlIHBhdXNlZCBzdGF0ZSBpcyBjaGVja2VkIGluIHRoZSBsb29wIHNpbmNl
IGl0IGxlYXZlcyB0aGUgY3JpdGljYWwKKyAgLy8gc2VjdGlvbiBhbGxvd2luZyB0aGUgcGF1c2Vk
IHN0YXRlIHRvIGJlIGNoYW5nZWQgZnJvbSBvdGhlciBjb2RlLgogICB3aGlsZSAoIXBhY2tldHNf
LkVtcHR5KCkgJiYgIXBhdXNlZF8pIHsKLSAgICAvLyBTaW5jZSB3ZSBuZWVkIHRvIHJlbGVhc2Ug
dGhlIGxvY2sgaW4gb3JkZXIgdG8gc2VuZCwgd2UgZmlyc3QgcG9wIHRoZQotICAgIC8vIGVsZW1l
bnQgZnJvbSB0aGUgcHJpb3JpdHkgcXVldWUgYnV0IGtlZXAgaXQgaW4gc3RvcmFnZSwgc28gdGhh
dCB3ZSBjYW4KLSAgICAvLyByZWluc2VydCBpdCBpZiBzZW5kIGZhaWxzLgotICAgIGNvbnN0IFJv
dW5kUm9iaW5QYWNrZXRRdWV1ZTo6UGFja2V0JiBwYWNrZXQgPSBwYWNrZXRzXy5CZWdpblBvcCgp
OworICAgIGNvbnN0IGF1dG8qIHBhY2tldCA9IEdldFBlbmRpbmdQYWNrZXQocGFjaW5nX2luZm8p
OworICAgIGlmIChwYWNrZXQgPT0gbnVsbHB0cikKKyAgICAgIGJyZWFrOwogCi0gICAgaWYgKFNl
bmRQYWNrZXQocGFja2V0LCBwYWNpbmdfaW5mbykpIHsKLSAgICAgIGJ5dGVzX3NlbnQgKz0gcGFj
a2V0LmJ5dGVzOworICAgIGNyaXRzZWN0Xy5MZWF2ZSgpOworICAgIGJvb2wgc3VjY2VzcyA9IHBh
Y2tldF9zZW5kZXJfLT5UaW1lVG9TZW5kUGFja2V0KAorICAgICAgICBwYWNrZXQtPnNzcmMsIHBh
Y2tldC0+c2VxdWVuY2VfbnVtYmVyLCBwYWNrZXQtPmNhcHR1cmVfdGltZV9tcywKKyAgICAgICAg
cGFja2V0LT5yZXRyYW5zbWlzc2lvbiwgcGFjaW5nX2luZm8pOworICAgIGNyaXRzZWN0Xy5FbnRl
cigpOworICAgIGlmIChzdWNjZXNzKSB7CisgICAgICBieXRlc19zZW50ICs9IHBhY2tldC0+Ynl0
ZXM7CiAgICAgICAvLyBTZW5kIHN1Y2NlZWRlZCwgcmVtb3ZlIGl0IGZyb20gdGhlIHF1ZXVlLgot
ICAgICAgcGFja2V0c18uRmluYWxpemVQb3AocGFja2V0KTsKKyAgICAgIE9uUGFja2V0U2VudChz
dGQ6Om1vdmUocGFja2V0KSk7CiAgICAgICBpZiAoaXNfcHJvYmluZyAmJiBieXRlc19zZW50ID4g
cmVjb21tZW5kZWRfcHJvYmVfc2l6ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfSBlbHNlIHsKICAg
ICAgIC8vIFNlbmQgZmFpbGVkLCBwdXQgaXQgYmFjayBpbnRvIHRoZSBxdWV1ZS4KLSAgICAgIHBh
Y2tldHNfLkNhbmNlbFBvcChwYWNrZXQpOworICAgICAgcGFja2V0c18uQ2FuY2VsUG9wKCpwYWNr
ZXQpOwogICAgICAgYnJlYWs7CiAgICAgfQogICB9CkBAIC0zNDcsMTYgKzM2MiwyMSBAQCB2b2lk
IFBhY2VkU2VuZGVyOjpQcm9jZXNzKCkgewogICAgIGlmIChwYWNrZXRfY291bnRlcl8gPiAwKSB7
CiAgICAgICBpbnQgcGFkZGluZ19uZWVkZWQgPQogICAgICAgICAgIHN0YXRpY19jYXN0PGludD4o
aXNfcHJvYmluZyA/IChyZWNvbW1lbmRlZF9wcm9iZV9zaXplIC0gYnl0ZXNfc2VudCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwYWRkaW5nX2J1ZGdldF8tPmJ5dGVz
X3JlbWFpbmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBw
YWRkaW5nX2J1ZGdldF8uYnl0ZXNfcmVtYWluaW5nKCkpOwogICAgICAgaWYgKHBhZGRpbmdfbmVl
ZGVkID4gMCkgewotICAgICAgICBieXRlc19zZW50ICs9IFNlbmRQYWRkaW5nKHBhZGRpbmdfbmVl
ZGVkLCBwYWNpbmdfaW5mbyk7CisgICAgICAgIGNyaXRzZWN0Xy5MZWF2ZSgpOworICAgICAgICBz
aXplX3QgcGFkZGluZ19zZW50ID0KKyAgICAgICAgICAgIHBhY2tldF9zZW5kZXJfLT5UaW1lVG9T
ZW5kUGFkZGluZyhwYWRkaW5nX25lZWRlZCwgcGFjaW5nX2luZm8pOworICAgICAgICBjcml0c2Vj
dF8uRW50ZXIoKTsKKyAgICAgICAgYnl0ZXNfc2VudCArPSBwYWRkaW5nX3NlbnQ7CisgICAgICAg
IE9uUGFkZGluZ1NlbnQocGFkZGluZ19zZW50KTsKICAgICAgIH0KICAgICB9CiAgIH0KICAgaWYg
KGlzX3Byb2JpbmcpIHsKICAgICBwcm9iaW5nX3NlbmRfZmFpbHVyZV8gPSBieXRlc19zZW50ID09
IDA7CiAgICAgaWYgKCFwcm9iaW5nX3NlbmRfZmFpbHVyZV8pCi0gICAgICBwcm9iZXJfLT5Qcm9i
ZVNlbnQoVGltZU1pbGxpc2Vjb25kcygpLCBieXRlc19zZW50KTsKKyAgICAgIHByb2Jlcl8uUHJv
YmVTZW50KFRpbWVNaWxsaXNlY29uZHMoKSwgYnl0ZXNfc2VudCk7CiAgIH0KICAgYWxyX2RldGVj
dG9yXy0+T25CeXRlc1NlbnQoYnl0ZXNfc2VudCwgbm93X3VzIC8gMTAwMCk7CiB9CkBAIC0zNjcs
NjYgKzM4Nyw1OCBAQCB2b2lkIFBhY2VkU2VuZGVyOjpQcm9jZXNzVGhyZWFkQXR0YWNoZWQoUHJv
Y2Vzc1RocmVhZCogcHJvY2Vzc190aHJlYWQpIHsKICAgcHJvY2Vzc190aHJlYWRfID0gcHJvY2Vz
c190aHJlYWQ7CiB9CiAKLWJvb2wgUGFjZWRTZW5kZXI6OlNlbmRQYWNrZXQoY29uc3QgUm91bmRS
b2JpblBhY2tldFF1ZXVlOjpQYWNrZXQmIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbykgewotICBSVENfRENIRUNL
KCFwYXVzZWRfKTsKLSAgYm9vbCBhdWRpb19wYWNrZXQgPSBwYWNrZXQucHJpb3JpdHkgPT0ga0hp
Z2hQcmlvcml0eTsKK2NvbnN0IFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6UGFja2V0KiBQYWNlZFNl
bmRlcjo6R2V0UGVuZGluZ1BhY2tldCgKKyAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2lu
Z19pbmZvKSB7CisgIC8vIFNpbmNlIHdlIG5lZWQgdG8gcmVsZWFzZSB0aGUgbG9jayBpbiBvcmRl
ciB0byBzZW5kLCB3ZSBmaXJzdCBwb3AgdGhlCisgIC8vIGVsZW1lbnQgZnJvbSB0aGUgcHJpb3Jp
dHkgcXVldWUgYnV0IGtlZXAgaXQgaW4gc3RvcmFnZSwgc28gdGhhdCB3ZSBjYW4KKyAgLy8gcmVp
bnNlcnQgaXQgaWYgc2VuZCBmYWlscy4KKyAgY29uc3QgUm91bmRSb2JpblBhY2tldFF1ZXVlOjpQ
YWNrZXQqIHBhY2tldCA9ICZwYWNrZXRzXy5CZWdpblBvcCgpOworICBib29sIGF1ZGlvX3BhY2tl
dCA9IHBhY2tldC0+cHJpb3JpdHkgPT0ga0hpZ2hQcmlvcml0eTsKICAgYm9vbCBhcHBseV9wYWNp
bmcgPQogICAgICAgIWF1ZGlvX3BhY2tldCB8fCBhY2NvdW50X2Zvcl9hdWRpb18gfHwgdmlkZW9f
YmxvY2tzX2F1ZGlvXzsKLSAgaWYgKGFwcGx5X3BhY2luZyAmJiAoQ29uZ2VzdGVkKCkgfHwgKG1l
ZGlhX2J1ZGdldF8tPmJ5dGVzX3JlbWFpbmluZygpID09IDAgJiYKKyAgaWYgKGFwcGx5X3BhY2lu
ZyAmJiAoQ29uZ2VzdGVkKCkgfHwgKG1lZGlhX2J1ZGdldF8uYnl0ZXNfcmVtYWluaW5nKCkgPT0g
MCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFjaW5nX2luZm8u
cHJvYmVfY2x1c3Rlcl9pZCA9PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhY2VkUGFja2V0SW5mbzo6a05vdEFQcm9iZSkpKSB7Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgIHBhY2tldHNfLkNhbmNlbFBvcCgqcGFja2V0KTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
ICAgfQorICByZXR1cm4gcGFja2V0OworfQogCi0gIGNyaXRzZWN0Xy5MZWF2ZSgpOwotICBjb25z
dCBib29sIHN1Y2Nlc3MgPSBwYWNrZXRfc2VuZGVyXy0+VGltZVRvU2VuZFBhY2tldCgKLSAgICAg
IHBhY2tldC5zc3JjLCBwYWNrZXQuc2VxdWVuY2VfbnVtYmVyLCBwYWNrZXQuY2FwdHVyZV90aW1l
X21zLAotICAgICAgcGFja2V0LnJldHJhbnNtaXNzaW9uLCBwYWNpbmdfaW5mbyk7Ci0gIGNyaXRz
ZWN0Xy5FbnRlcigpOwotCi0gIGlmIChzdWNjZXNzKSB7Ci0gICAgaWYgKGZpcnN0X3NlbnRfcGFj
a2V0X21zXyA9PSAtMSkKLSAgICAgIGZpcnN0X3NlbnRfcGFja2V0X21zXyA9IFRpbWVNaWxsaXNl
Y29uZHMoKTsKLSAgICBpZiAoIWF1ZGlvX3BhY2tldCB8fCBhY2NvdW50X2Zvcl9hdWRpb18pIHsK
LSAgICAgIC8vIFVwZGF0ZSBtZWRpYSBieXRlcyBzZW50LgotICAgICAgLy8gVE9ETyhlbGFkYWxv
bik6IFRpbWVUb1NlbmRQYWNrZXQoKSBjYW4gYWxzbyByZXR1cm4gfHRydWV8IGluIHNvbWUKLSAg
ICAgIC8vIHNpdHVhdGlvbnMgd2hlcmUgbm90aGluZyBhY3R1YWxseSBlbmRlZCB1cCBiZWluZyBz
ZW50IHRvIHRoZSBuZXR3b3JrLAotICAgICAgLy8gYW5kIHdlIHByb2JhYmx5IGRvbid0IHdhbnQg
dG8gdXBkYXRlIHRoZSBidWRnZXQgaW4gc3VjaCBjYXNlcy4KLSAgICAgIC8vIGh0dHBzOi8vYnVn
cy5jaHJvbWl1bS5vcmcvcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD04MDUyCi0gICAgICBVcGRh
dGVCdWRnZXRXaXRoQnl0ZXNTZW50KHBhY2tldC5ieXRlcyk7Ci0gICAgICBsYXN0X3NlbmRfdGlt
ZV91c18gPSBjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOwotICAgIH0KK3ZvaWQgUGFjZWRT
ZW5kZXI6Ok9uUGFja2V0U2VudChjb25zdCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlBhY2tldCog
cGFja2V0KSB7CisgIGlmIChmaXJzdF9zZW50X3BhY2tldF9tc18gPT0gLTEpCisgICAgZmlyc3Rf
c2VudF9wYWNrZXRfbXNfID0gVGltZU1pbGxpc2Vjb25kcygpOworICBib29sIGF1ZGlvX3BhY2tl
dCA9IHBhY2tldC0+cHJpb3JpdHkgPT0ga0hpZ2hQcmlvcml0eTsKKyAgaWYgKCFhdWRpb19wYWNr
ZXQgfHwgYWNjb3VudF9mb3JfYXVkaW9fKSB7CisgICAgLy8gVXBkYXRlIG1lZGlhIGJ5dGVzIHNl
bnQuCisgICAgLy8gVE9ETyhlbGFkYWxvbik6IFRpbWVUb1NlbmRQYWNrZXQoKSBjYW4gYWxzbyBy
ZXR1cm4gfHRydWV8IGluIHNvbWUKKyAgICAvLyBzaXR1YXRpb25zIHdoZXJlIG5vdGhpbmcgYWN0
dWFsbHkgZW5kZWQgdXAgYmVpbmcgc2VudCB0byB0aGUgbmV0d29yaywKKyAgICAvLyBhbmQgd2Ug
cHJvYmFibHkgZG9uJ3Qgd2FudCB0byB1cGRhdGUgdGhlIGJ1ZGdldCBpbiBzdWNoIGNhc2VzLgor
ICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC93ZWJydGMvaXNzdWVzL2RldGFpbD9p
ZD04MDUyCisgICAgVXBkYXRlQnVkZ2V0V2l0aEJ5dGVzU2VudChwYWNrZXQtPmJ5dGVzKTsKKyAg
ICBsYXN0X3NlbmRfdGltZV91c18gPSBjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOwogICB9
Ci0KLSAgcmV0dXJuIHN1Y2Nlc3M7CisgIC8vIFNlbmQgc3VjY2VlZGVkLCByZW1vdmUgaXQgZnJv
bSB0aGUgcXVldWUuCisgIHBhY2tldHNfLkZpbmFsaXplUG9wKCpwYWNrZXQpOwogfQogCi1zaXpl
X3QgUGFjZWRTZW5kZXI6OlNlbmRQYWRkaW5nKHNpemVfdCBwYWRkaW5nX25lZWRlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdf
aW5mbykgewotICBSVENfRENIRUNLX0dUKHBhY2tldF9jb3VudGVyXywgMCk7Ci0gIGNyaXRzZWN0
Xy5MZWF2ZSgpOwotICBzaXplX3QgYnl0ZXNfc2VudCA9Ci0gICAgICBwYWNrZXRfc2VuZGVyXy0+
VGltZVRvU2VuZFBhZGRpbmcocGFkZGluZ19uZWVkZWQsIHBhY2luZ19pbmZvKTsKLSAgY3JpdHNl
Y3RfLkVudGVyKCk7Ci0KK3ZvaWQgUGFjZWRTZW5kZXI6Ok9uUGFkZGluZ1NlbnQoc2l6ZV90IGJ5
dGVzX3NlbnQpIHsKICAgaWYgKGJ5dGVzX3NlbnQgPiAwKSB7CiAgICAgVXBkYXRlQnVkZ2V0V2l0
aEJ5dGVzU2VudChieXRlc19zZW50KTsKICAgfQogICBsYXN0X3NlbmRfdGltZV91c18gPSBjbG9j
a18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOwotICByZXR1cm4gYnl0ZXNfc2VudDsKIH0KIAogdm9p
ZCBQYWNlZFNlbmRlcjo6VXBkYXRlQnVkZ2V0V2l0aEVsYXBzZWRUaW1lKGludDY0X3QgZGVsdGFf
dGltZV9tcykgewogICBkZWx0YV90aW1lX21zID0gc3RkOjptaW4oa01heEludGVydmFsVGltZU1z
LCBkZWx0YV90aW1lX21zKTsKLSAgbWVkaWFfYnVkZ2V0Xy0+SW5jcmVhc2VCdWRnZXQoZGVsdGFf
dGltZV9tcyk7Ci0gIHBhZGRpbmdfYnVkZ2V0Xy0+SW5jcmVhc2VCdWRnZXQoZGVsdGFfdGltZV9t
cyk7CisgIG1lZGlhX2J1ZGdldF8uSW5jcmVhc2VCdWRnZXQoZGVsdGFfdGltZV9tcyk7CisgIHBh
ZGRpbmdfYnVkZ2V0Xy5JbmNyZWFzZUJ1ZGdldChkZWx0YV90aW1lX21zKTsKIH0KIAogdm9pZCBQ
YWNlZFNlbmRlcjo6VXBkYXRlQnVkZ2V0V2l0aEJ5dGVzU2VudChzaXplX3QgYnl0ZXNfc2VudCkg
ewogICBvdXRzdGFuZGluZ19ieXRlc18gKz0gYnl0ZXNfc2VudDsKLSAgbWVkaWFfYnVkZ2V0Xy0+
VXNlQnVkZ2V0KGJ5dGVzX3NlbnQpOwotICBwYWRkaW5nX2J1ZGdldF8tPlVzZUJ1ZGdldChieXRl
c19zZW50KTsKKyAgbWVkaWFfYnVkZ2V0Xy5Vc2VCdWRnZXQoYnl0ZXNfc2VudCk7CisgIHBhZGRp
bmdfYnVkZ2V0Xy5Vc2VCdWRnZXQoYnl0ZXNfc2VudCk7CiB9CiAKIHZvaWQgUGFjZWRTZW5kZXI6
OlNldFBhY2luZ0ZhY3RvcihmbG9hdCBwYWNpbmdfZmFjdG9yKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNl
ZF9zZW5kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oCmluZGV4IGYxMjkxNzQwOGE2YjQxNjg0MjI4ZmIw
NDA5ODNkMjliM2Y4MzgxMjAuLjQ1ODZkMjljY2E5N2U3NmUwNWI3NjE1ZWRmMDdmMmIyZGE3NjM1
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oCkBAIC0x
MSwyMCArMTEsMjUgQEAKICNpZm5kZWYgTU9EVUxFU19QQUNJTkdfUEFDRURfU0VOREVSX0hfCiAj
ZGVmaW5lIE1PRFVMRVNfUEFDSU5HX1BBQ0VEX1NFTkRFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAi
YWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya190
eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9wYWNpbmcvaW50ZXJ2YWxfYnVkZ2V0LmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9wYWNpbmcvcGFjZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9yb3VuZF9yb2Jpbl9w
YWNrZXRfcXVldWUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0
Y3BfZGVmaW5lcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3Nf
dGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
Y2xhc3MgQWxyRGV0ZWN0b3I7Ci1jbGFzcyBCaXRyYXRlUHJvYmVyOwogY2xhc3MgQ2xvY2s7CiBj
bGFzcyBSdGNFdmVudExvZzsKLWNsYXNzIEludGVydmFsQnVkZ2V0OwogCiBjbGFzcyBQYWNlZFNl
bmRlciA6IHB1YmxpYyBQYWNlciB7CiAgcHVibGljOgpAQCAtMTM4LDE5ICsxNDMsMjUgQEAgY2xh
c3MgUGFjZWRTZW5kZXIgOiBwdWJsaWMgUGFjZXIgewogICB2b2lkIFNldFF1ZXVlVGltZUxpbWl0
KGludCBsaW1pdF9tcyk7CiAKICBwcml2YXRlOgorICBpbnQ2NF90IFVwZGF0ZVRpbWVBbmRHZXRF
bGFwc2VkTXMoaW50NjRfdCBub3dfdXMpCisgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJ
UkVEKGNyaXRzZWN0Xyk7CisgIGJvb2wgU2hvdWxkU2VuZEtlZXBhbGl2ZShpbnQ2NF90IGF0X3Rp
bWVfdXMpIGNvbnN0CisgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRzZWN0
Xyk7CisKICAgLy8gVXBkYXRlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlIHNlbnQg
Zm9yIHRoZSBuZXh0IHRpbWUgaW50ZXJ2YWwuCiAgIHZvaWQgVXBkYXRlQnVkZ2V0V2l0aEVsYXBz
ZWRUaW1lKGludDY0X3QgZGVsdGFfdGltZV9pbl9tcykKICAgICAgIFJUQ19FWENMVVNJVkVfTE9D
S1NfUkVRVUlSRUQoY3JpdHNlY3RfKTsKICAgdm9pZCBVcGRhdGVCdWRnZXRXaXRoQnl0ZXNTZW50
KHNpemVfdCBieXRlcykKICAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoY3JpdHNl
Y3RfKTsKIAotICBib29sIFNlbmRQYWNrZXQoY29uc3QgUm91bmRSb2JpblBhY2tldFF1ZXVlOjpQ
YWNrZXQmIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYg
Y2x1c3Rlcl9pbmZvKQorICBjb25zdCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlBhY2tldCogR2V0
UGVuZGluZ1BhY2tldCgKKyAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2luZm8p
CisgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7CisgIHZvaWQg
T25QYWNrZXRTZW50KGNvbnN0IFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6UGFja2V0KiBwYWNrZXQp
CiAgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7Ci0gIHNpemVf
dCBTZW5kUGFkZGluZyhzaXplX3QgcGFkZGluZ19uZWVkZWQsIGNvbnN0IFBhY2VkUGFja2V0SW5m
byYgY2x1c3Rlcl9pbmZvKQorICB2b2lkIE9uUGFkZGluZ1NlbnQoc2l6ZV90IHBhZGRpbmdfc2Vu
dCkKICAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoY3JpdHNlY3RfKTsKIAotICB2
b2lkIE9uQnl0ZXNTZW50KHNpemVfdCBieXRlc19zZW50KSBSVENfRVhDTFVTSVZFX0xPQ0tTX1JF
UVVJUkVEKGNyaXRzZWN0Xyk7CiAgIGJvb2wgQ29uZ2VzdGVkKCkgY29uc3QgUlRDX0VYQ0xVU0lW
RV9MT0NLU19SRVFVSVJFRChjcml0c2VjdF8pOwogICBpbnQ2NF90IFRpbWVNaWxsaXNlY29uZHMo
KSBjb25zdCBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7CiAKQEAgLTE2
OSwxNSArMTgwLDEzIEBAIGNsYXNzIFBhY2VkU2VuZGVyIDogcHVibGljIFBhY2VyIHsKICAgYm9v
bCBwYXVzZWRfIFJUQ19HVUFSREVEX0JZKGNyaXRzZWN0Xyk7CiAgIC8vIFRoaXMgaXMgdGhlIG1l
ZGlhIGJ1ZGdldCwga2VlcGluZyB0cmFjayBvZiBob3cgbWFueSBiaXRzIG9mIG1lZGlhCiAgIC8v
IHdlIGNhbiBwYWNlIG91dCBkdXJpbmcgdGhlIGN1cnJlbnQgaW50ZXJ2YWwuCi0gIGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxJbnRlcnZhbEJ1ZGdldD4gbWVkaWFfYnVkZ2V0XwotICAgICAgUlRDX1BU
X0dVQVJERURfQlkoY3JpdHNlY3RfKTsKKyAgSW50ZXJ2YWxCdWRnZXQgbWVkaWFfYnVkZ2V0XyBS
VENfR1VBUkRFRF9CWShjcml0c2VjdF8pOwogICAvLyBUaGlzIGlzIHRoZSBwYWRkaW5nIGJ1ZGdl
dCwga2VlcGluZyB0cmFjayBvZiBob3cgbWFueSBiaXRzIG9mIHBhZGRpbmcgd2UncmUKICAgLy8g
YWxsb3dlZCB0byBzZW5kIG91dCBkdXJpbmcgdGhlIGN1cnJlbnQgaW50ZXJ2YWwuIFRoaXMgYnVk
Z2V0IHdpbGwgYmUKICAgLy8gdXRpbGl6ZWQgd2hlbiB0aGVyZSdzIG5vIG1lZGlhIHRvIHNlbmQu
Ci0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxJbnRlcnZhbEJ1ZGdldD4gcGFkZGluZ19idWRnZXRf
Ci0gICAgICBSVENfUFRfR1VBUkRFRF9CWShjcml0c2VjdF8pOworICBJbnRlcnZhbEJ1ZGdldCBw
YWRkaW5nX2J1ZGdldF8gUlRDX0dVQVJERURfQlkoY3JpdHNlY3RfKTsKIAotICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Qml0cmF0ZVByb2Jlcj4gcHJvYmVyXyBSVENfUFRfR1VBUkRFRF9CWShjcml0
c2VjdF8pOworICBCaXRyYXRlUHJvYmVyIHByb2Jlcl8gUlRDX0dVQVJERURfQlkoY3JpdHNlY3Rf
KTsKICAgYm9vbCBwcm9iaW5nX3NlbmRfZmFpbHVyZV8gUlRDX0dVQVJERURfQlkoY3JpdHNlY3Rf
KTsKICAgLy8gQWN0dWFsIGNvbmZpZ3VyZWQgYml0cmF0ZXMgKG1lZGlhX2J1ZGdldF8gbWF5IHRl
bXBvcmFyaWx5IGJlIGhpZ2hlciBpbgogICAvLyBvcmRlciB0byBtZWV0IHBhY2UgdGltZSBjb25z
dHJhaW50KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmNj
CmluZGV4IGIyN2M3M2MyZjBjN2U3ZTc2YmE4NmZiZWI4MDNkMzY1OTZjOGM3YTguLjI0YmU3ZWVi
ZjJhOWUzMmRiNzcyODZjNjg3YWY0MWFkZjlmNGE1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9wYWNpbmcvcGFja2V0X3JvdXRlci5jYwpAQCAtMTEsOCArMTEsMTAgQEAKICNpbmNsdWRl
ICJtb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+
CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxsaW1pdHM+CiAKKyNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0
cF9ydGNwLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2Rl
ZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90
cmFuc3BvcnRfZmVlZGJhY2suaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2tl
dF9yb3V0ZXIuaAppbmRleCBmMDFlOWVmNDkzMzk2NTQxYTZmODgzZjJkODRjOGU2OGFlMzdiOWE3
Li5iN2NjNWZmMTk2Njg3ZGEyYmM4YTQ5MGJmOGYyODM2YjEzMjNkMTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9w
YWNrZXRfcm91dGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9wYWNpbmcvcGFja2V0X3JvdXRlci5oCkBAIC0xMSwxNiArMTEsMTcgQEAK
ICNpZm5kZWYgTU9EVUxFU19QQUNJTkdfUEFDS0VUX1JPVVRFUl9IXwogI2RlZmluZSBNT0RVTEVT
X1BBQ0lOR19QQUNLRVRfUk9VVEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1
ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAi
YXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9wYWNpbmcv
cGFjZWRfc2VuZGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3IvaW5jbHVkZS9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24u
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9yYWNlX2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2lu
Zy9yb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9yb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUu
Y2MKaW5kZXggZTg5MmRkYjRlYTJiNTA4NjQ4MWJkOTAyMTNlNTYwYmRiYWFiNWRkMS4uZTYxZDY4
MjE1YWNhOGE3NDc2YmFiZTM0ODc4YjZkZTYwNDZhYjM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcm91bmRfcm9i
aW5fcGFja2V0X3F1ZXVlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3JvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5jYwpAQCAt
MTEsOSArMTEsMTAgQEAKICNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9yb3VuZF9yb2Jpbl9wYWNr
ZXRfcXVldWUuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkaW50Pgor
I2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIApAQCAtNTMsOCArNTQsOCBAQCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlN0cmVhbTo6U3Ry
ZWFtKCkgOiBieXRlcygwKSwgc3NyYygwKSB7fQogUm91bmRSb2JpblBhY2tldFF1ZXVlOjpTdHJl
YW06OlN0cmVhbShjb25zdCBTdHJlYW0mIHN0cmVhbSkgPSBkZWZhdWx0OwogUm91bmRSb2JpblBh
Y2tldFF1ZXVlOjpTdHJlYW06On5TdHJlYW0oKSB7fQogCi1Sb3VuZFJvYmluUGFja2V0UXVldWU6
OlJvdW5kUm9iaW5QYWNrZXRRdWV1ZShjb25zdCBDbG9jayogY2xvY2spCi0gICAgOiB0aW1lX2xh
c3RfdXBkYXRlZF8oY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKSB7fQorUm91bmRSb2JpblBh
Y2tldFF1ZXVlOjpSb3VuZFJvYmluUGFja2V0UXVldWUoaW50NjRfdCBzdGFydF90aW1lX3VzKQor
ICAgIDogdGltZV9sYXN0X3VwZGF0ZWRfbXNfKHN0YXJ0X3RpbWVfdXMgLyAxMDAwKSB7fQogCiBS
b3VuZFJvYmluUGFja2V0UXVldWU6On5Sb3VuZFJvYmluUGFja2V0UXVldWUoKSB7fQogCkBAIC0x
MzIsNyArMTMzLDcgQEAgdm9pZCBSb3VuZFJvYmluUGFja2V0UXVldWU6OkZpbmFsaXplUG9wKGNv
bnN0IFBhY2tldCYgcGFja2V0KSB7CiAgICAgLy8gYnkgc3VidHJhY3RpbmcgaXQgbm93IHdlIGVm
ZmVjdGl2ZWx5IHJlbW92ZSB0aGUgdGltZSBzcGVudCBpbiBpbiB0aGUKICAgICAvLyBxdWV1ZSB3
aGlsZSBpbiBhIHBhdXNlZCBzdGF0ZS4KICAgICBpbnQ2NF90IHRpbWVfaW5fbm9uX3BhdXNlZF9z
dGF0ZV9tcyA9Ci0gICAgICAgIHRpbWVfbGFzdF91cGRhdGVkXyAtIHBhY2tldC5lbnF1ZXVlX3Rp
bWVfbXMgLSBwYXVzZV90aW1lX3N1bV9tc187CisgICAgICAgIHRpbWVfbGFzdF91cGRhdGVkX21z
XyAtIHBhY2tldC5lbnF1ZXVlX3RpbWVfbXMgLSBwYXVzZV90aW1lX3N1bV9tc187CiAgICAgcXVl
dWVfdGltZV9zdW1fbXNfIC09IHRpbWVfaW5fbm9uX3BhdXNlZF9zdGF0ZV9tczsKIAogICAgIFJU
Q19DSEVDSyhwYWNrZXQuZW5xdWV1ZV90aW1lX2l0ICE9IGVucXVldWVfdGltZXNfLmVuZCgpKTsK
QEAgLTE4OSwxMSArMTkwLDExIEBAIGludDY0X3QgUm91bmRSb2JpblBhY2tldFF1ZXVlOjpPbGRl
c3RFbnF1ZXVlVGltZU1zKCkgY29uc3QgewogfQogCiB2b2lkIFJvdW5kUm9iaW5QYWNrZXRRdWV1
ZTo6VXBkYXRlUXVldWVUaW1lKGludDY0X3QgdGltZXN0YW1wX21zKSB7Ci0gIFJUQ19DSEVDS19H
RSh0aW1lc3RhbXBfbXMsIHRpbWVfbGFzdF91cGRhdGVkXyk7Ci0gIGlmICh0aW1lc3RhbXBfbXMg
PT0gdGltZV9sYXN0X3VwZGF0ZWRfKQorICBSVENfQ0hFQ0tfR0UodGltZXN0YW1wX21zLCB0aW1l
X2xhc3RfdXBkYXRlZF9tc18pOworICBpZiAodGltZXN0YW1wX21zID09IHRpbWVfbGFzdF91cGRh
dGVkX21zXykKICAgICByZXR1cm47CiAKLSAgaW50NjRfdCBkZWx0YV9tcyA9IHRpbWVzdGFtcF9t
cyAtIHRpbWVfbGFzdF91cGRhdGVkXzsKKyAgaW50NjRfdCBkZWx0YV9tcyA9IHRpbWVzdGFtcF9t
cyAtIHRpbWVfbGFzdF91cGRhdGVkX21zXzsKIAogICBpZiAocGF1c2VkXykgewogICAgIHBhdXNl
X3RpbWVfc3VtX21zXyArPSBkZWx0YV9tczsKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIFJvdW5k
Um9iaW5QYWNrZXRRdWV1ZTo6VXBkYXRlUXVldWVUaW1lKGludDY0X3QgdGltZXN0YW1wX21zKSB7
CiAgICAgcXVldWVfdGltZV9zdW1fbXNfICs9IGRlbHRhX21zICogc2l6ZV9wYWNrZXRzXzsKICAg
fQogCi0gIHRpbWVfbGFzdF91cGRhdGVkXyA9IHRpbWVzdGFtcF9tczsKKyAgdGltZV9sYXN0X3Vw
ZGF0ZWRfbXNfID0gdGltZXN0YW1wX21zOwogfQogCiB2b2lkIFJvdW5kUm9iaW5QYWNrZXRRdWV1
ZTo6U2V0UGF1c2VTdGF0ZShib29sIHBhdXNlZCwgaW50NjRfdCB0aW1lc3RhbXBfbXMpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcGFjaW5nL3JvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5fcGFja2V0
X3F1ZXVlLmgKaW5kZXggZWU5MWUyZWZjMGM5MzQ0NGZiNjk1OTU1MWY5ZmNiMTBkMDdjY2YzOC4u
NzRiODU1YTQ4M2Q1NWUxNTdiYTBhMDlmNjYyMDRiMmFjNzk5OGJkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcm91
bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmgK
QEAgLTExLDE4ICsxMSwyMiBAQAogI2lmbmRlZiBNT0RVTEVTX1BBQ0lOR19ST1VORF9ST0JJTl9Q
QUNLRVRfUVVFVUVfSF8KICNkZWZpbmUgTU9EVUxFU19QQUNJTkdfUk9VTkRfUk9CSU5fUEFDS0VU
X1FVRVVFX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNp
bmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxxdWV1ZT4KICNpbmNsdWRl
IDxzZXQ+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xh
c3MgUm91bmRSb2JpblBhY2tldFF1ZXVlIHsKICBwdWJsaWM6Ci0gIGV4cGxpY2l0IFJvdW5kUm9i
aW5QYWNrZXRRdWV1ZShjb25zdCBDbG9jayogY2xvY2spOworICBleHBsaWNpdCBSb3VuZFJvYmlu
UGFja2V0UXVldWUoaW50NjRfdCBzdGFydF90aW1lX3VzKTsKICAgflJvdW5kUm9iaW5QYWNrZXRR
dWV1ZSgpOwogCiAgIHN0cnVjdCBQYWNrZXQgewpAQCAtMTA1LDcgKzEwOSw3IEBAIGNsYXNzIFJv
dW5kUm9iaW5QYWNrZXRRdWV1ZSB7CiAgIC8vIEp1c3QgdXNlZCB0byB2ZXJpZnkgY29ycmVjdG5l
c3MuCiAgIGJvb2wgSXNTc3JjU2NoZWR1bGVkKHVpbnQzMl90IHNzcmMpIGNvbnN0OwogCi0gIGlu
dDY0X3QgdGltZV9sYXN0X3VwZGF0ZWRfOworICBpbnQ2NF90IHRpbWVfbGFzdF91cGRhdGVkX21z
XzsKICAgYWJzbDo6b3B0aW9uYWw8UGFja2V0PiBwb3BfcGFja2V0XzsKICAgYWJzbDo6b3B0aW9u
YWw8U3RyZWFtKj4gcG9wX3N0cmVhbV87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvQlVJTEQuZ24KaW5kZXggYThkNjg1MDc0OWNj
OTA4MWY5M2NjZDkzYjVlOTIzMTE2ZmU2YWQxNC4uZjY5OTFlYTY5ZDQwM2NmZDdkNTBkMWJjYTll
NjE2M2I4MzdhNzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvQlVJTEQuZ24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3IvQlVJTEQuZ24KQEAgLTQyLDcgKzQyLDkgQEAgcnRjX3N0YXRp
Y19saWJyYXJ5KCJyZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IiKSB7CiAgIGRlcHMgPSBbCiAgICAg
Ii4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9hcGkvdW5pdHM6ZGF0YV9yYXRlIiwK
KyAgICAiLi4vLi4vYXBpL3VuaXRzOnRpbWVzdGFtcCIsCiAgICAgIi4uLy4uL21vZHVsZXM6bW9k
dWxlX2FwaSIsCisgICAgIi4uLy4uL21vZHVsZXM6bW9kdWxlX2FwaV9wdWJsaWMiLAogICAgICIu
Li8uLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgICAgIi4uLy4uL3J0Y19i
YXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKQEAg
LTIyNyw2ICsyMjksNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi8uLi9y
dGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vLi4vdGVzdDpmaWxldXRpbHMi
LAogICAgICAgIi4uLy4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIuLi8uLi90ZXN0OnRlc3Rf
c3VwcG9ydCIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICBdCiAgICAgZGF0YSA9IFsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0
cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRyb2wuY2MKaW5kZXggYTZlNjQzNjg5NzdmNWFi
MDZiMDA0YmE4YTZlOWQyMTZlODhmMTk5Ny4uYjJjYTgwMTI4ODljNmQ5NTNlMzU5OWVmYmQyN2Ni
ZWJhNWY3NDNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRy
b2wuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRyb2wuY2MKQEAgLTEx
LDcgKzExLDYgQEAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9h
aW1kX3JhdGVfY29udHJvbC5oIgogCiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLQogI2luY2x1ZGUg
PGFsZ29yaXRobT4KICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNtYXRoPgpAQCAtMTks
OSArMTgsNyBAQAogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3Rl
X2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1
c2VfZGV0ZWN0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRv
ci90ZXN0L2J3ZV90ZXN0X2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJp
Y3Mvc2FmZV9taW5tYXguaCIKQEAgLTI5LDI1ICsyNiwyNCBAQAogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIAotc3RhdGljIGNvbnN0IGludDY0X3Qga0RlZmF1bHRSdHRNcyA9IDIwMDsKLXN0YXRpYyBj
b25zdCBpbnQ2NF90IGtNYXhGZWVkYmFja0ludGVydmFsTXMgPSAxMDAwOwotc3RhdGljIGNvbnN0
IGZsb2F0IGtEZWZhdWx0QmFja29mZkZhY3RvciA9IDAuODVmOwotc3RhdGljIGNvbnN0IGludDY0
X3Qga0RlZmF1bHRJbml0aWFsQmFja09mZkludGVydmFsTXMgPSAyMDA7Citjb25zdGV4cHIgVGlt
ZURlbHRhIGtEZWZhdWx0UnR0ID0gVGltZURlbHRhOjpNaWxsaXM8MjAwPigpOworY29uc3RleHBy
IGRvdWJsZSBrRGVmYXVsdEJhY2tvZmZGYWN0b3IgPSAwLjg1OworY29uc3RleHByIFRpbWVEZWx0
YSBrRGVmYXVsdEluaXRpYWxCYWNrT2ZmSW50ZXJ2YWwgPSBUaW1lRGVsdGE6Ok1pbGxpczwyMDA+
KCk7CiAKIGNvbnN0IGNoYXIga0J3ZUJhY2tPZmZGYWN0b3JFeHBlcmltZW50W10gPSAiV2ViUlRD
LUJ3ZUJhY2tPZmZGYWN0b3IiOwogY29uc3QgY2hhciBrQndlSW5pdGlhbEJhY2tPZmZJbnRlcnZh
bEV4cGVyaW1lbnRbXSA9CiAgICAgIldlYlJUQy1Cd2VJbml0aWFsQmFja09mZkludGVydmFsIjsK
IAotZmxvYXQgUmVhZEJhY2tvZmZGYWN0b3IoKSB7Citkb3VibGUgUmVhZEJhY2tvZmZGYWN0b3Io
KSB7CiAgIHN0ZDo6c3RyaW5nIGV4cGVyaW1lbnRfc3RyaW5nID0KICAgICAgIHdlYnJ0Yzo6Zmll
bGRfdHJpYWw6OkZpbmRGdWxsTmFtZShrQndlQmFja09mZkZhY3RvckV4cGVyaW1lbnQpOwotICBm
bG9hdCBiYWNrb2ZmX2ZhY3RvcjsKKyAgZG91YmxlIGJhY2tvZmZfZmFjdG9yOwogICBpbnQgcGFy
c2VkX3ZhbHVlcyA9Ci0gICAgICBzc2NhbmYoZXhwZXJpbWVudF9zdHJpbmcuY19zdHIoKSwgIkVu
YWJsZWQtJWYiLCAmYmFja29mZl9mYWN0b3IpOworICAgICAgc3NjYW5mKGV4cGVyaW1lbnRfc3Ry
aW5nLmNfc3RyKCksICJFbmFibGVkLSVsZiIsICZiYWNrb2ZmX2ZhY3Rvcik7CiAgIGlmIChwYXJz
ZWRfdmFsdWVzID09IDEpIHsKLSAgICBpZiAoYmFja29mZl9mYWN0b3IgPj0gMS4wZikgeworICAg
IGlmIChiYWNrb2ZmX2ZhY3RvciA+PSAxLjApIHsKICAgICAgIFJUQ19MT0coV0FSTklORykgPDwg
IkJhY2stb2ZmIGZhY3RvciBtdXN0IGJlIGxlc3MgdGhhbiAxLiI7Ci0gICAgfSBlbHNlIGlmIChi
YWNrb2ZmX2ZhY3RvciA8PSAwLjBmKSB7CisgICAgfSBlbHNlIGlmIChiYWNrb2ZmX2ZhY3RvciA8
PSAwLjApIHsKICAgICAgIFJUQ19MT0coV0FSTklORykgPDwgIkJhY2stb2ZmIGZhY3RvciBtdXN0
IGJlIGdyZWF0ZXIgdGhhbiAwLiI7CiAgICAgfSBlbHNlIHsKICAgICAgIHJldHVybiBiYWNrb2Zm
X2ZhY3RvcjsKQEAgLTU4LDcgKzU0LDcgQEAgZmxvYXQgUmVhZEJhY2tvZmZGYWN0b3IoKSB7CiAg
IHJldHVybiBrRGVmYXVsdEJhY2tvZmZGYWN0b3I7CiB9CiAKLWludDY0X3QgUmVhZEluaXRpYWxC
YWNrb2ZmSW50ZXJ2YWxNcygpIHsKK1RpbWVEZWx0YSBSZWFkSW5pdGlhbEJhY2tvZmZJbnRlcnZh
bCgpIHsKICAgc3RkOjpzdHJpbmcgZXhwZXJpbWVudF9zdHJpbmcgPQogICAgICAgd2VicnRjOjpm
aWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtCd2VJbml0aWFsQmFja09mZkludGVydmFsRXhwZXJp
bWVudCk7CiAgIGludDY0X3QgYmFja29mZl9pbnRlcnZhbDsKQEAgLTY2LDcgKzYyLDcgQEAgaW50
NjRfdCBSZWFkSW5pdGlhbEJhY2tvZmZJbnRlcnZhbE1zKCkgewogICAgICAgc3NjYW5mKGV4cGVy
aW1lbnRfc3RyaW5nLmNfc3RyKCksICJFbmFibGVkLSUiIFNDTmQ2NCwgJmJhY2tvZmZfaW50ZXJ2
YWwpOwogICBpZiAocGFyc2VkX3ZhbHVlcyA9PSAxKSB7CiAgICAgaWYgKDEwIDw9IGJhY2tvZmZf
aW50ZXJ2YWwgJiYgYmFja29mZl9pbnRlcnZhbCA8PSAyMDApIHsKLSAgICAgIHJldHVybiBiYWNr
b2ZmX2ludGVydmFsOworICAgICAgcmV0dXJuIFRpbWVEZWx0YTo6bXMoYmFja29mZl9pbnRlcnZh
bCk7CiAgICAgfQogICAgIFJUQ19MT0coV0FSTklORykKICAgICAgICAgPDwgIkluaXRpYWwgYmFj
ay1vZmYgaW50ZXJ2YWwgbXVzdCBiZSBiZXR3ZWVuIDEwIGFuZCAyMDAgbXMuIjsKQEAgLTc0LDMz
NCArNzAsMzQ3IEBAIGludDY0X3QgUmVhZEluaXRpYWxCYWNrb2ZmSW50ZXJ2YWxNcygpIHsKICAg
UlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlcnMgZm9yICIK
ICAgICAgICAgICAgICAgICAgICAgICA8PCBrQndlSW5pdGlhbEJhY2tPZmZJbnRlcnZhbEV4cGVy
aW1lbnQKICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGV4cGVyaW1lbnQuIFVzaW5nIGRlZmF1
bHQuIjsKLSAgcmV0dXJuIGtEZWZhdWx0SW5pdGlhbEJhY2tPZmZJbnRlcnZhbE1zOworICByZXR1
cm4ga0RlZmF1bHRJbml0aWFsQmFja09mZkludGVydmFsOwogfQogCiBBaW1kUmF0ZUNvbnRyb2w6
OkFpbWRSYXRlQ29udHJvbCgpCi0gICAgOiBtaW5fY29uZmlndXJlZF9iaXRyYXRlX2Jwc18oY29u
Z2VzdGlvbl9jb250cm9sbGVyOjpHZXRNaW5CaXRyYXRlQnBzKCkpLAotICAgICAgbWF4X2NvbmZp
Z3VyZWRfYml0cmF0ZV9icHNfKDMwMDAwMDAwKSwKLSAgICAgIGN1cnJlbnRfYml0cmF0ZV9icHNf
KG1heF9jb25maWd1cmVkX2JpdHJhdGVfYnBzXyksCi0gICAgICBsYXRlc3RfZXN0aW1hdGVkX3Ro
cm91Z2hwdXRfYnBzXyhjdXJyZW50X2JpdHJhdGVfYnBzXyksCi0gICAgICBhdmdfbWF4X2JpdHJh
dGVfa2Jwc18oLTEuMGYpLAotICAgICAgdmFyX21heF9iaXRyYXRlX2ticHNfKDAuNGYpLAorICAg
IDogbWluX2NvbmZpZ3VyZWRfYml0cmF0ZV8oY29uZ2VzdGlvbl9jb250cm9sbGVyOjpHZXRNaW5C
aXRyYXRlKCkpLAorICAgICAgbWF4X2NvbmZpZ3VyZWRfYml0cmF0ZV8oRGF0YVJhdGU6OmticHMo
MzAwMDApKSwKKyAgICAgIGN1cnJlbnRfYml0cmF0ZV8obWF4X2NvbmZpZ3VyZWRfYml0cmF0ZV8p
LAorICAgICAgbGF0ZXN0X2VzdGltYXRlZF90aHJvdWdocHV0XyhjdXJyZW50X2JpdHJhdGVfKSwK
KyAgICAgIGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18oKSwKKyAgICAgIHZhcl9saW5rX2Nh
cGFjaXR5X2VzdGltYXRlX2ticHNfKDAuNCksCiAgICAgICByYXRlX2NvbnRyb2xfc3RhdGVfKGtS
Y0hvbGQpLAotICAgICAgcmF0ZV9jb250cm9sX3JlZ2lvbl8oa1JjTWF4VW5rbm93biksCi0gICAg
ICB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfKC0xKSwKLSAgICAgIHRpbWVfbGFzdF9iaXRyYXRl
X2RlY3JlYXNlXygtMSksCi0gICAgICB0aW1lX2ZpcnN0X3Rocm91Z2hwdXRfZXN0aW1hdGVfKC0x
KSwKKyAgICAgIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8oVGltZXN0YW1wOjpNaW51c0luZmlu
aXR5KCkpLAorICAgICAgdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfKFRpbWVzdGFtcDo6TWlu
dXNJbmZpbml0eSgpKSwKKyAgICAgIHRpbWVfZmlyc3RfdGhyb3VnaHB1dF9lc3RpbWF0ZV8oVGlt
ZXN0YW1wOjpNaW51c0luZmluaXR5KCkpLAogICAgICAgYml0cmF0ZV9pc19pbml0aWFsaXplZF8o
ZmFsc2UpLAogICAgICAgYmV0YV8od2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtCd2VC
YWNrT2ZmRmFjdG9yRXhwZXJpbWVudCkKICAgICAgICAgICAgICAgICA/IFJlYWRCYWNrb2ZmRmFj
dG9yKCkKICAgICAgICAgICAgICAgICA6IGtEZWZhdWx0QmFja29mZkZhY3RvciksCi0gICAgICBy
dHRfKGtEZWZhdWx0UnR0TXMpLAorICAgICAgcnR0XyhrRGVmYXVsdFJ0dCksCiAgICAgICBpbl9l
eHBlcmltZW50XyghQWRhcHRpdmVUaHJlc2hvbGRFeHBlcmltZW50SXNEaXNhYmxlZCgpKSwKICAg
ICAgIHNtb290aGluZ19leHBlcmltZW50XygKICAgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFs
OjpJc0VuYWJsZWQoIldlYlJUQy1BdWRpby1CYW5kd2lkdGhTbW9vdGhpbmciKSksCiAgICAgICBp
bl9pbml0aWFsX2JhY2tvZmZfaW50ZXJ2YWxfZXhwZXJpbWVudF8oCiAgICAgICAgICAgd2VicnRj
OjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtCd2VJbml0aWFsQmFja09mZkludGVydmFsRXhwZXJp
bWVudCkpLAotICAgICAgaW5pdGlhbF9iYWNrb2ZmX2ludGVydmFsX21zXyhrRGVmYXVsdEluaXRp
YWxCYWNrT2ZmSW50ZXJ2YWxNcykgeworICAgICAgaW5pdGlhbF9iYWNrb2ZmX2ludGVydmFsXyhr
RGVmYXVsdEluaXRpYWxCYWNrT2ZmSW50ZXJ2YWwpIHsKICAgaWYgKGluX2luaXRpYWxfYmFja29m
Zl9pbnRlcnZhbF9leHBlcmltZW50XykgewotICAgIGluaXRpYWxfYmFja29mZl9pbnRlcnZhbF9t
c18gPSBSZWFkSW5pdGlhbEJhY2tvZmZJbnRlcnZhbE1zKCk7CisgICAgaW5pdGlhbF9iYWNrb2Zm
X2ludGVydmFsXyA9IFJlYWRJbml0aWFsQmFja29mZkludGVydmFsKCk7CiAgICAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiVXNpbmcgYWltZCByYXRlIGNvbnRyb2wgd2l0aCBpbml0aWFsIGJhY2stb2Zm
IGludGVydmFsIgotICAgICAgICAgICAgICAgICAgICAgPDwgIiAiIDw8IGluaXRpYWxfYmFja29m
Zl9pbnRlcnZhbF9tc18gPDwgIiBtcy4iOworICAgICAgICAgICAgICAgICAgICAgPDwgIiAiIDw8
IFRvU3RyaW5nKGluaXRpYWxfYmFja29mZl9pbnRlcnZhbF8pIDw8ICIuIjsKICAgfQogICBSVENf
TE9HKExTX0lORk8pIDw8ICJVc2luZyBhaW1kIHJhdGUgY29udHJvbCB3aXRoIGJhY2sgb2ZmIGZh
Y3RvciAiIDw8IGJldGFfOwogfQogCiBBaW1kUmF0ZUNvbnRyb2w6On5BaW1kUmF0ZUNvbnRyb2wo
KSB7fQogCi12b2lkIEFpbWRSYXRlQ29udHJvbDo6U2V0U3RhcnRCaXRyYXRlKGludCBzdGFydF9i
aXRyYXRlX2JwcykgewotICBjdXJyZW50X2JpdHJhdGVfYnBzXyA9IHN0YXJ0X2JpdHJhdGVfYnBz
OwotICBsYXRlc3RfZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzXyA9IGN1cnJlbnRfYml0cmF0ZV9i
cHNfOwordm9pZCBBaW1kUmF0ZUNvbnRyb2w6OlNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZSBzdGFy
dF9iaXRyYXRlKSB7CisgIGN1cnJlbnRfYml0cmF0ZV8gPSBzdGFydF9iaXRyYXRlOworICBsYXRl
c3RfZXN0aW1hdGVkX3Rocm91Z2hwdXRfID0gY3VycmVudF9iaXRyYXRlXzsKICAgYml0cmF0ZV9p
c19pbml0aWFsaXplZF8gPSB0cnVlOwogfQogCi12b2lkIEFpbWRSYXRlQ29udHJvbDo6U2V0TWlu
Qml0cmF0ZShpbnQgbWluX2JpdHJhdGVfYnBzKSB7Ci0gIG1pbl9jb25maWd1cmVkX2JpdHJhdGVf
YnBzXyA9IG1pbl9iaXRyYXRlX2JwczsKLSAgY3VycmVudF9iaXRyYXRlX2Jwc18gPSBzdGQ6Om1h
eDxpbnQ+KG1pbl9iaXRyYXRlX2JwcywgY3VycmVudF9iaXRyYXRlX2Jwc18pOwordm9pZCBBaW1k
UmF0ZUNvbnRyb2w6OlNldE1pbkJpdHJhdGUoRGF0YVJhdGUgbWluX2JpdHJhdGUpIHsKKyAgbWlu
X2NvbmZpZ3VyZWRfYml0cmF0ZV8gPSBtaW5fYml0cmF0ZTsKKyAgY3VycmVudF9iaXRyYXRlXyA9
IHN0ZDo6bWF4KG1pbl9iaXRyYXRlLCBjdXJyZW50X2JpdHJhdGVfKTsKIH0KIAogYm9vbCBBaW1k
UmF0ZUNvbnRyb2w6OlZhbGlkRXN0aW1hdGUoKSBjb25zdCB7CiAgIHJldHVybiBiaXRyYXRlX2lz
X2luaXRpYWxpemVkXzsKIH0KIAotaW50NjRfdCBBaW1kUmF0ZUNvbnRyb2w6OkdldEZlZWRiYWNr
SW50ZXJ2YWwoKSBjb25zdCB7CitUaW1lRGVsdGEgQWltZFJhdGVDb250cm9sOjpHZXRGZWVkYmFj
a0ludGVydmFsKCkgY29uc3QgewogICAvLyBFc3RpbWF0ZSBob3cgb2Z0ZW4gd2UgY2FuIHNlbmQg
UlRDUCBpZiB3ZSBhbGxvY2F0ZSB1cCB0byA1JSBvZiBiYW5kd2lkdGgKICAgLy8gdG8gZmVlZGJh
Y2suCi0gIHN0YXRpYyBjb25zdCBpbnQga1J0Y3BTaXplID0gODA7Ci0gIGNvbnN0IGludDY0X3Qg
aW50ZXJ2YWwgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PigKLSAgICAgIGtSdGNwU2l6ZSAqIDguMCAq
IDEwMDAuMCAvICgwLjA1ICogY3VycmVudF9iaXRyYXRlX2Jwc18pICsgMC41KTsKLSAgY29uc3Qg
aW50NjRfdCBrTWluRmVlZGJhY2tJbnRlcnZhbE1zID0gMjAwOwotICByZXR1cm4gcnRjOjpTYWZl
Q2xhbXAoaW50ZXJ2YWwsIGtNaW5GZWVkYmFja0ludGVydmFsTXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBrTWF4RmVlZGJhY2tJbnRlcnZhbE1zKTsKKyAgY29uc3QgRGF0YVNpemUga1J0Y3BT
aXplID0gRGF0YVNpemU6OmJ5dGVzKDgwKTsKKyAgY29uc3QgRGF0YVJhdGUgcnRjcF9iaXRyYXRl
ID0gY3VycmVudF9iaXRyYXRlXyAqIDAuMDU7CisgIGNvbnN0IFRpbWVEZWx0YSBpbnRlcnZhbCA9
IGtSdGNwU2l6ZSAvIHJ0Y3BfYml0cmF0ZTsKKyAgY29uc3QgVGltZURlbHRhIGtNaW5GZWVkYmFj
a0ludGVydmFsID0gVGltZURlbHRhOjptcygyMDApOworICBjb25zdCBUaW1lRGVsdGEga01heEZl
ZWRiYWNrSW50ZXJ2YWwgPSBUaW1lRGVsdGE6Om1zKDEwMDApOworICByZXR1cm4gaW50ZXJ2YWwu
Q2xhbXBlZChrTWluRmVlZGJhY2tJbnRlcnZhbCwga01heEZlZWRiYWNrSW50ZXJ2YWwpOwogfQog
Ci1ib29sIEFpbWRSYXRlQ29udHJvbDo6VGltZVRvUmVkdWNlRnVydGhlcigKLSAgICBpbnQ2NF90
IG5vd19tcywKLSAgICB1aW50MzJfdCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpIGNvbnN0IHsK
LSAgY29uc3QgaW50NjRfdCBiaXRyYXRlX3JlZHVjdGlvbl9pbnRlcnZhbCA9Ci0gICAgICBzdGQ6
Om1heDxpbnQ2NF90PihzdGQ6Om1pbjxpbnQ2NF90PihydHRfLCAyMDApLCAxMCk7Ci0gIGlmIChu
b3dfbXMgLSB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfID49IGJpdHJhdGVfcmVkdWN0aW9uX2lu
dGVydmFsKSB7Citib29sIEFpbWRSYXRlQ29udHJvbDo6VGltZVRvUmVkdWNlRnVydGhlcihUaW1l
c3RhbXAgYXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERhdGFSYXRlIGVzdGltYXRlZF90aHJvdWdocHV0KSBjb25zdCB7CisgIGNvbnN0IFRpbWVEZWx0
YSBiaXRyYXRlX3JlZHVjdGlvbl9pbnRlcnZhbCA9CisgICAgICBydHRfLkNsYW1wZWQoVGltZURl
bHRhOjptcygxMCksIFRpbWVEZWx0YTo6bXMoMjAwKSk7CisgIGlmIChhdF90aW1lIC0gdGltZV9s
YXN0X2JpdHJhdGVfY2hhbmdlXyA+PSBiaXRyYXRlX3JlZHVjdGlvbl9pbnRlcnZhbCkgewogICAg
IHJldHVybiB0cnVlOwogICB9CiAgIGlmIChWYWxpZEVzdGltYXRlKCkpIHsKICAgICAvLyBUT0RP
KHRlcmVsaXVzL2hvbG1lcik6IEludmVzdGlnYXRlIGNvbnNlcXVlbmNlcyBvZiBpbmNyZWFzaW5n
CiAgICAgLy8gdGhlIHRocmVzaG9sZCB0byAwLjk1ICogTGF0ZXN0RXN0aW1hdGUoKS4KLSAgICBj
b25zdCB1aW50MzJfdCB0aHJlc2hvbGQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oMC41ICogTGF0
ZXN0RXN0aW1hdGUoKSk7Ci0gICAgcmV0dXJuIGVzdGltYXRlZF90aHJvdWdocHV0X2JwcyA8IHRo
cmVzaG9sZDsKKyAgICBjb25zdCBEYXRhUmF0ZSB0aHJlc2hvbGQgPSAwLjUgKiBMYXRlc3RFc3Rp
bWF0ZSgpOworICAgIHJldHVybiBlc3RpbWF0ZWRfdGhyb3VnaHB1dCA8IHRocmVzaG9sZDsKICAg
fQogICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQWltZFJhdGVDb250cm9sOjpJbml0aWFsVGlt
ZVRvUmVkdWNlRnVydGhlcihpbnQ2NF90IG5vd19tcykgY29uc3QgeworYm9vbCBBaW1kUmF0ZUNv
bnRyb2w6OkluaXRpYWxUaW1lVG9SZWR1Y2VGdXJ0aGVyKFRpbWVzdGFtcCBhdF90aW1lKSBjb25z
dCB7CiAgIGlmICghaW5faW5pdGlhbF9iYWNrb2ZmX2ludGVydmFsX2V4cGVyaW1lbnRfKSB7CiAg
ICAgcmV0dXJuIFZhbGlkRXN0aW1hdGUoKSAmJgotICAgICAgICAgICBUaW1lVG9SZWR1Y2VGdXJ0
aGVyKG5vd19tcywgTGF0ZXN0RXN0aW1hdGUoKSAvIDIgLSAxKTsKKyAgICAgICAgICAgVGltZVRv
UmVkdWNlRnVydGhlcihhdF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExh
dGVzdEVzdGltYXRlKCkgLyAyIC0gRGF0YVJhdGU6OmJwcygxKSk7CiAgIH0KICAgLy8gVE9ETyh0
ZXJlbGl1cyk6IFdlIGNvdWxkIHVzZSB0aGUgUlRUIChjbGFtcGVkIHRvIHN1aXRhYmxlIGxpbWl0
cykgaW5zdGVhZAogICAvLyBvZiBhIGZpeGVkIGJpdHJhdGVfcmVkdWN0aW9uX2ludGVydmFsLgot
ICBpZiAodGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfID09IC0xIHx8Ci0gICAgICBub3dfbXMg
LSB0aW1lX2xhc3RfYml0cmF0ZV9kZWNyZWFzZV8gPj0gaW5pdGlhbF9iYWNrb2ZmX2ludGVydmFs
X21zXykgeworICBpZiAodGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfLklzSW5maW5pdGUoKSB8
fAorICAgICAgYXRfdGltZSAtIHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNlXyA+PSBpbml0aWFs
X2JhY2tvZmZfaW50ZXJ2YWxfKSB7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KICAgcmV0dXJuIGZh
bHNlOwogfQogCi11aW50MzJfdCBBaW1kUmF0ZUNvbnRyb2w6OkxhdGVzdEVzdGltYXRlKCkgY29u
c3QgewotICByZXR1cm4gY3VycmVudF9iaXRyYXRlX2Jwc187CitEYXRhUmF0ZSBBaW1kUmF0ZUNv
bnRyb2w6OkxhdGVzdEVzdGltYXRlKCkgY29uc3QgeworICByZXR1cm4gY3VycmVudF9iaXRyYXRl
XzsKIH0KIAotdm9pZCBBaW1kUmF0ZUNvbnRyb2w6OlNldFJ0dChpbnQ2NF90IHJ0dCkgewordm9p
ZCBBaW1kUmF0ZUNvbnRyb2w6OlNldFJ0dChUaW1lRGVsdGEgcnR0KSB7CiAgIHJ0dF8gPSBydHQ7
CiB9CiAKLXVpbnQzMl90IEFpbWRSYXRlQ29udHJvbDo6VXBkYXRlKGNvbnN0IFJhdGVDb250cm9s
SW5wdXQqIGlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBu
b3dfbXMpIHsKK0RhdGFSYXRlIEFpbWRSYXRlQ29udHJvbDo6VXBkYXRlKGNvbnN0IFJhdGVDb250
cm9sSW5wdXQqIGlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0
YW1wIGF0X3RpbWUpIHsKICAgUlRDX0NIRUNLKGlucHV0KTsKIAogICAvLyBTZXQgdGhlIGluaXRp
YWwgYml0IHJhdGUgdmFsdWUgdG8gd2hhdCB3ZSdyZSByZWNlaXZpbmcgdGhlIGZpcnN0IGhhbGYK
ICAgLy8gc2Vjb25kLgogICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85Mzc5KTogVGhlIGNvbW1l
bnQgYWJvdmUgZG9lc24ndCBtYXRjaCB0byB0aGUgY29kZS4KICAgaWYgKCFiaXRyYXRlX2lzX2lu
aXRpYWxpemVkXykgewotICAgIGNvbnN0IGludDY0X3Qga0luaXRpYWxpemF0aW9uVGltZU1zID0g
NTAwMDsKLSAgICBSVENfRENIRUNLX0xFKGtCaXRyYXRlV2luZG93TXMsIGtJbml0aWFsaXphdGlv
blRpbWVNcyk7Ci0gICAgaWYgKHRpbWVfZmlyc3RfdGhyb3VnaHB1dF9lc3RpbWF0ZV8gPCAwKSB7
Ci0gICAgICBpZiAoaW5wdXQtPmVzdGltYXRlZF90aHJvdWdocHV0X2JwcykKLSAgICAgICAgdGlt
ZV9maXJzdF90aHJvdWdocHV0X2VzdGltYXRlXyA9IG5vd19tczsKLSAgICB9IGVsc2UgaWYgKG5v
d19tcyAtIHRpbWVfZmlyc3RfdGhyb3VnaHB1dF9lc3RpbWF0ZV8gPgotICAgICAgICAgICAgICAg
ICAgIGtJbml0aWFsaXphdGlvblRpbWVNcyAmJgotICAgICAgICAgICAgICAgaW5wdXQtPmVzdGlt
YXRlZF90aHJvdWdocHV0X2JwcykgewotICAgICAgY3VycmVudF9iaXRyYXRlX2Jwc18gPSAqaW5w
dXQtPmVzdGltYXRlZF90aHJvdWdocHV0X2JwczsKKyAgICBjb25zdCBUaW1lRGVsdGEga0luaXRp
YWxpemF0aW9uVGltZSA9IFRpbWVEZWx0YTo6c2Vjb25kcyg1KTsKKyAgICBSVENfRENIRUNLX0xF
KGtCaXRyYXRlV2luZG93TXMsIGtJbml0aWFsaXphdGlvblRpbWUubXMoKSk7CisgICAgaWYgKHRp
bWVfZmlyc3RfdGhyb3VnaHB1dF9lc3RpbWF0ZV8uSXNJbmZpbml0ZSgpKSB7CisgICAgICBpZiAo
aW5wdXQtPmVzdGltYXRlZF90aHJvdWdocHV0KQorICAgICAgICB0aW1lX2ZpcnN0X3Rocm91Z2hw
dXRfZXN0aW1hdGVfID0gYXRfdGltZTsKKyAgICB9IGVsc2UgaWYgKGF0X3RpbWUgLSB0aW1lX2Zp
cnN0X3Rocm91Z2hwdXRfZXN0aW1hdGVfID4KKyAgICAgICAgICAgICAgICAgICBrSW5pdGlhbGl6
YXRpb25UaW1lICYmCisgICAgICAgICAgICAgICBpbnB1dC0+ZXN0aW1hdGVkX3Rocm91Z2hwdXQp
IHsKKyAgICAgIGN1cnJlbnRfYml0cmF0ZV8gPSAqaW5wdXQtPmVzdGltYXRlZF90aHJvdWdocHV0
OwogICAgICAgYml0cmF0ZV9pc19pbml0aWFsaXplZF8gPSB0cnVlOwogICAgIH0KICAgfQogCi0g
IGN1cnJlbnRfYml0cmF0ZV9icHNfID0gQ2hhbmdlQml0cmF0ZShjdXJyZW50X2JpdHJhdGVfYnBz
XywgKmlucHV0LCBub3dfbXMpOwotICByZXR1cm4gY3VycmVudF9iaXRyYXRlX2Jwc187CisgIGN1
cnJlbnRfYml0cmF0ZV8gPSBDaGFuZ2VCaXRyYXRlKGN1cnJlbnRfYml0cmF0ZV8sICppbnB1dCwg
YXRfdGltZSk7CisgIHJldHVybiBjdXJyZW50X2JpdHJhdGVfOwogfQogCi12b2lkIEFpbWRSYXRl
Q29udHJvbDo6U2V0RXN0aW1hdGUoaW50IGJpdHJhdGVfYnBzLCBpbnQ2NF90IG5vd19tcykgewor
dm9pZCBBaW1kUmF0ZUNvbnRyb2w6OlNldEVzdGltYXRlKERhdGFSYXRlIGJpdHJhdGUsIFRpbWVz
dGFtcCBhdF90aW1lKSB7CiAgIGJpdHJhdGVfaXNfaW5pdGlhbGl6ZWRfID0gdHJ1ZTsKLSAgdWlu
dDMyX3QgcHJldl9iaXRyYXRlX2JwcyA9IGN1cnJlbnRfYml0cmF0ZV9icHNfOwotICBjdXJyZW50
X2JpdHJhdGVfYnBzXyA9IENsYW1wQml0cmF0ZShiaXRyYXRlX2JwcywgYml0cmF0ZV9icHMpOwot
ICB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfID0gbm93X21zOwotICBpZiAoY3VycmVudF9iaXRy
YXRlX2Jwc18gPCBwcmV2X2JpdHJhdGVfYnBzKSB7Ci0gICAgdGltZV9sYXN0X2JpdHJhdGVfZGVj
cmVhc2VfID0gbm93X21zOworICBEYXRhUmF0ZSBwcmV2X2JpdHJhdGUgPSBjdXJyZW50X2JpdHJh
dGVfOworICBjdXJyZW50X2JpdHJhdGVfID0gQ2xhbXBCaXRyYXRlKGJpdHJhdGUsIGJpdHJhdGUp
OworICB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfID0gYXRfdGltZTsKKyAgaWYgKGN1cnJlbnRf
Yml0cmF0ZV8gPCBwcmV2X2JpdHJhdGUpIHsKKyAgICB0aW1lX2xhc3RfYml0cmF0ZV9kZWNyZWFz
ZV8gPSBhdF90aW1lOwogICB9CiB9CiAKLWludCBBaW1kUmF0ZUNvbnRyb2w6OkdldE5lYXJNYXhJ
bmNyZWFzZVJhdGVCcHMoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0tfR1QoY3VycmVudF9iaXRyYXRl
X2Jwc18sIDApOwotICBkb3VibGUgYml0c19wZXJfZnJhbWUgPSBzdGF0aWNfY2FzdDxkb3VibGU+
KGN1cnJlbnRfYml0cmF0ZV9icHNfKSAvIDMwLjA7Ci0gIGRvdWJsZSBwYWNrZXRzX3Blcl9mcmFt
ZSA9IHN0ZDo6Y2VpbChiaXRzX3Blcl9mcmFtZSAvICg4LjAgKiAxMjAwLjApKTsKLSAgZG91Ymxl
IGF2Z19wYWNrZXRfc2l6ZV9iaXRzID0gYml0c19wZXJfZnJhbWUgLyBwYWNrZXRzX3Blcl9mcmFt
ZTsKK2RvdWJsZSBBaW1kUmF0ZUNvbnRyb2w6OkdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJT
ZWNvbmQoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0soIWN1cnJlbnRfYml0cmF0ZV8uSXNaZXJvKCkp
OworICBjb25zdCBUaW1lRGVsdGEga0ZyYW1lSW50ZXJ2YWwgPSBUaW1lRGVsdGE6OnNlY29uZHMo
MSkgLyAzMDsKKyAgRGF0YVNpemUgZnJhbWVfc2l6ZSA9IGN1cnJlbnRfYml0cmF0ZV8gKiBrRnJh
bWVJbnRlcnZhbDsKKyAgY29uc3QgRGF0YVNpemUga1BhY2tldFNpemUgPSBEYXRhU2l6ZTo6Ynl0
ZXMoMTIwMCk7CisgIGRvdWJsZSBwYWNrZXRzX3Blcl9mcmFtZSA9IHN0ZDo6Y2VpbChmcmFtZV9z
aXplIC8ga1BhY2tldFNpemUpOworICBEYXRhU2l6ZSBhdmdfcGFja2V0X3NpemUgPSBmcmFtZV9z
aXplIC8gcGFja2V0c19wZXJfZnJhbWU7CiAKICAgLy8gQXBwcm94aW1hdGUgdGhlIG92ZXItdXNl
IGVzdGltYXRvciBkZWxheSB0byAxMDAgbXMuCi0gIGNvbnN0IGludDY0X3QgcmVzcG9uc2VfdGlt
ZSA9IGluX2V4cGVyaW1lbnRfID8gKHJ0dF8gKyAxMDApICogMiA6IHJ0dF8gKyAxMDA7Ci0gIGNv
bnN0ZXhwciBkb3VibGUga01pbkluY3JlYXNlUmF0ZUJwcyA9IDQwMDA7Ci0gIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KHN0ZDo6bWF4KAotICAgICAga01pbkluY3JlYXNlUmF0ZUJwcywgKGF2Z19w
YWNrZXRfc2l6ZV9iaXRzICogMTAwMCkgLyByZXNwb25zZV90aW1lKSk7CisgIFRpbWVEZWx0YSBy
ZXNwb25zZV90aW1lID0gcnR0XyArIFRpbWVEZWx0YTo6bXMoMTAwKTsKKyAgaWYgKGluX2V4cGVy
aW1lbnRfKQorICAgIHJlc3BvbnNlX3RpbWUgPSByZXNwb25zZV90aW1lICogMjsKKyAgZG91Ymxl
IGluY3JlYXNlX3JhdGVfYnBzX3Blcl9zZWNvbmQgPQorICAgICAgKGF2Z19wYWNrZXRfc2l6ZSAv
IHJlc3BvbnNlX3RpbWUpLmJwczxkb3VibGU+KCk7CisgIGRvdWJsZSBrTWluSW5jcmVhc2VSYXRl
QnBzUGVyU2Vjb25kID0gNDAwMDsKKyAgcmV0dXJuIHN0ZDo6bWF4KGtNaW5JbmNyZWFzZVJhdGVC
cHNQZXJTZWNvbmQsIGluY3JlYXNlX3JhdGVfYnBzX3Blcl9zZWNvbmQpOwogfQogCi1pbnQgQWlt
ZFJhdGVDb250cm9sOjpHZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZE1zKCkgY29uc3QgewotICBj
b25zdCBpbnQga01pblBlcmlvZE1zID0gc21vb3RoaW5nX2V4cGVyaW1lbnRfID8gNTAwIDogMjAw
MDsKLSAgY29uc3RleHByIGludCBrRGVmYXVsdFBlcmlvZE1zID0gMzAwMDsKLSAgY29uc3RleHBy
IGludCBrTWF4UGVyaW9kTXMgPSA1MDAwMDsKK1RpbWVEZWx0YSBBaW1kUmF0ZUNvbnRyb2w6Okdl
dEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkgY29uc3QgeworICBjb25zdCBUaW1lRGVsdGEga01p
blBlcmlvZCA9CisgICAgICBzbW9vdGhpbmdfZXhwZXJpbWVudF8gPyBUaW1lRGVsdGE6Om1zKDUw
MCkgOiBUaW1lRGVsdGE6OnNlY29uZHMoMik7CisgIGNvbnN0IFRpbWVEZWx0YSBrRGVmYXVsdFBl
cmlvZCA9IFRpbWVEZWx0YTo6c2Vjb25kcygzKTsKKyAgY29uc3QgVGltZURlbHRhIGtNYXhQZXJp
b2QgPSBUaW1lRGVsdGE6OnNlY29uZHMoNTApOwogCi0gIGludCBpbmNyZWFzZV9yYXRlID0gR2V0
TmVhck1heEluY3JlYXNlUmF0ZUJwcygpOworICBkb3VibGUgaW5jcmVhc2VfcmF0ZV9icHNfcGVy
X3NlY29uZCA9IEdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJTZWNvbmQoKTsKICAgaWYgKCFs
YXN0X2RlY3JlYXNlXykKLSAgICByZXR1cm4gc21vb3RoaW5nX2V4cGVyaW1lbnRfID8ga01pblBl
cmlvZE1zIDoga0RlZmF1bHRQZXJpb2RNczsKLQotICByZXR1cm4gc3RkOjptaW4oa01heFBlcmlv
ZE1zLAotICAgICAgICAgICAgICAgICAgc3RkOjptYXg8aW50PigxMDAwICogc3RhdGljX2Nhc3Q8
aW50NjRfdD4oKmxhc3RfZGVjcmVhc2VfKSAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmNyZWFzZV9yYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
TWluUGVyaW9kTXMpKTsKKyAgICByZXR1cm4gc21vb3RoaW5nX2V4cGVyaW1lbnRfID8ga01pblBl
cmlvZCA6IGtEZWZhdWx0UGVyaW9kOworICBkb3VibGUgdGltZV90b19yZWNvdmVyX2RlY3JlYXNl
X3NlY29uZHMgPQorICAgICAgbGFzdF9kZWNyZWFzZV8tPmJwcygpIC8gaW5jcmVhc2VfcmF0ZV9i
cHNfcGVyX3NlY29uZDsKKyAgVGltZURlbHRhIHBlcmlvZCA9IFRpbWVEZWx0YTo6c2Vjb25kcyh0
aW1lX3RvX3JlY292ZXJfZGVjcmVhc2Vfc2Vjb25kcyk7CisgIHJldHVybiBwZXJpb2QuQ2xhbXBl
ZChrTWluUGVyaW9kLCBrTWF4UGVyaW9kKTsKIH0KIAotdWludDMyX3QgQWltZFJhdGVDb250cm9s
OjpDaGFuZ2VCaXRyYXRlKHVpbnQzMl90IG5ld19iaXRyYXRlX2JwcywKK0RhdGFSYXRlIEFpbWRS
YXRlQ29udHJvbDo6Q2hhbmdlQml0cmF0ZShEYXRhUmF0ZSBuZXdfYml0cmF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSYXRlQ29udHJvbElucHV0JiBp
bnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG5v
d19tcykgewotICB1aW50MzJfdCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMgPQotICAgICAgaW5w
dXQuZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzLnZhbHVlX29yKGxhdGVzdF9lc3RpbWF0ZWRfdGhy
b3VnaHB1dF9icHNfKTsKLSAgaWYgKGlucHV0LmVzdGltYXRlZF90aHJvdWdocHV0X2JwcykKLSAg
ICBsYXRlc3RfZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzXyA9ICppbnB1dC5lc3RpbWF0ZWRfdGhy
b3VnaHB1dF9icHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlt
ZXN0YW1wIGF0X3RpbWUpIHsKKyAgRGF0YVJhdGUgZXN0aW1hdGVkX3Rocm91Z2hwdXQgPQorICAg
ICAgaW5wdXQuZXN0aW1hdGVkX3Rocm91Z2hwdXQudmFsdWVfb3IobGF0ZXN0X2VzdGltYXRlZF90
aHJvdWdocHV0Xyk7CisgIGlmIChpbnB1dC5lc3RpbWF0ZWRfdGhyb3VnaHB1dCkKKyAgICBsYXRl
c3RfZXN0aW1hdGVkX3Rocm91Z2hwdXRfID0gKmlucHV0LmVzdGltYXRlZF90aHJvdWdocHV0Owog
CiAgIC8vIEFuIG92ZXItdXNlIHNob3VsZCBhbHdheXMgdHJpZ2dlciB1cyB0byByZWR1Y2UgdGhl
IGJpdHJhdGUsIGV2ZW4gdGhvdWdoCiAgIC8vIHdlIGhhdmUgbm90IHlldCBlc3RhYmxpc2hlZCBv
dXIgZmlyc3QgZXN0aW1hdGUuIEJ5IGFjdGluZyBvbiB0aGUgb3Zlci11c2UsCiAgIC8vIHdlIHdp
bGwgZW5kIHVwIHdpdGggYSB2YWxpZCBlc3RpbWF0ZS4KICAgaWYgKCFiaXRyYXRlX2lzX2luaXRp
YWxpemVkXyAmJgogICAgICAgaW5wdXQuYndfc3RhdGUgIT0gQmFuZHdpZHRoVXNhZ2U6OmtCd092
ZXJ1c2luZykKLSAgICByZXR1cm4gY3VycmVudF9iaXRyYXRlX2Jwc187CisgICAgcmV0dXJuIGN1
cnJlbnRfYml0cmF0ZV87CiAKLSAgQ2hhbmdlU3RhdGUoaW5wdXQsIG5vd19tcyk7CisgIENoYW5n
ZVN0YXRlKGlucHV0LCBhdF90aW1lKTsKICAgLy8gQ2FsY3VsYXRlZCBoZXJlIGJlY2F1c2UgaXQn
cyB1c2VkIGluIG11bHRpcGxlIHBsYWNlcy4KLSAgY29uc3QgZmxvYXQgZXN0aW1hdGVkX3Rocm91
Z2hwdXRfa2JwcyA9IGVzdGltYXRlZF90aHJvdWdocHV0X2JwcyAvIDEwMDAuMGY7CisgIGNvbnN0
IGRvdWJsZSBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzID0gZXN0aW1hdGVkX3Rocm91Z2hwdXQu
a2Jwczxkb3VibGU+KCk7CisKICAgLy8gQ2FsY3VsYXRlIHRoZSBtYXggYml0IHJhdGUgc3RkIGRl
diBnaXZlbiB0aGUgbm9ybWFsaXplZAotICAvLyB2YXJpYW5jZSBhbmQgdGhlIGN1cnJlbnQgdGhy
b3VnaHB1dCBiaXRyYXRlLgotICBjb25zdCBmbG9hdCBzdGRfbWF4X2JpdF9yYXRlID0KLSAgICAg
IHNxcnQodmFyX21heF9iaXRyYXRlX2ticHNfICogYXZnX21heF9iaXRyYXRlX2ticHNfKTsKKyAg
Ly8gdmFyaWFuY2UgYW5kIHRoZSBjdXJyZW50IHRocm91Z2hwdXQgYml0cmF0ZS4gVGhlIHN0YW5k
YXJkIGRldmlhdGlvbiB3aWxsCisgIC8vIG9ubHkgYmUgdXNlZCBpZiBsaW5rX2NhcGFjaXR5X2Vz
dGltYXRlX2ticHNfIGhhcyBhIHZhbHVlLgorICBjb25zdCBkb3VibGUgc3RkX2xpbmtfY2FwYWNp
dHlfa2JwcyA9CisgICAgICBzcXJ0KHZhcl9saW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfICoK
KyAgICAgICAgICAgbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy52YWx1ZV9vcigwKSk7CiAg
IHN3aXRjaCAocmF0ZV9jb250cm9sX3N0YXRlXykgewogICAgIGNhc2Uga1JjSG9sZDoKICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBrUmNJbmNyZWFzZToKLSAgICAgIGlmIChhdmdfbWF4X2JpdHJh
dGVfa2Jwc18gPj0gMCAmJgotICAgICAgICAgIGVzdGltYXRlZF90aHJvdWdocHV0X2ticHMgPgot
ICAgICAgICAgICAgICBhdmdfbWF4X2JpdHJhdGVfa2Jwc18gKyAzICogc3RkX21heF9iaXRfcmF0
ZSkgewotICAgICAgICByYXRlX2NvbnRyb2xfcmVnaW9uXyA9IGtSY01heFVua25vd247Ci0KLSAg
ICAgICAgYXZnX21heF9iaXRyYXRlX2ticHNfID0gLTEuMDsKKyAgICAgIGlmIChsaW5rX2NhcGFj
aXR5X2VzdGltYXRlX2ticHNfLmhhc192YWx1ZSgpICYmCisgICAgICAgICAgZXN0aW1hdGVkX3Ro
cm91Z2hwdXRfa2JwcyA+IGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18udmFsdWUoKSArCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzICogc3RkX2xpbmtfY2Fw
YWNpdHlfa2JwcykgeworICAgICAgICAvLyBUaGUgbGluayBjYXBhY2l0eSBhcHBlYXJzIHRvIGhh
dmUgY2hhbmdlZC4gRm9yZ2V0IHRoZSBwcmV2aW91cworICAgICAgICAvLyBlc3RpbWF0ZSBhbmQg
dXNlIG11bHRpcGxpY2F0aXZlIGluY3JlYXNlIHRvIHF1aWNrbHkgZGlzY292ZXIgbmV3CisgICAg
ICAgIC8vIGNhcGFjaXR5LgorICAgICAgICBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnJl
c2V0KCk7CiAgICAgICB9Ci0gICAgICBpZiAocmF0ZV9jb250cm9sX3JlZ2lvbl8gPT0ga1JjTmVh
ck1heCkgewotICAgICAgICB1aW50MzJfdCBhZGRpdGl2ZV9pbmNyZWFzZV9icHMgPQotICAgICAg
ICAgICAgQWRkaXRpdmVSYXRlSW5jcmVhc2Uobm93X21zLCB0aW1lX2xhc3RfYml0cmF0ZV9jaGFu
Z2VfKTsKLSAgICAgICAgbmV3X2JpdHJhdGVfYnBzICs9IGFkZGl0aXZlX2luY3JlYXNlX2JwczsK
KyAgICAgIGlmIChsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLmhhc192YWx1ZSgpKSB7Cisg
ICAgICAgIC8vIFRoZSBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfIGlzIHJlc2V0IGlmIHRo
ZSBtZWFzdXJlZCB0aHJvdWdocHV0CisgICAgICAgIC8vIGlzIHRvbyBmYXIgZnJvbSB0aGUgZXN0
aW1hdGUuIFdlIGNhbiB0aGVyZWZvcmUgYXNzdW1lIHRoYXQgb3VyIHRhcmdldAorICAgICAgICAv
LyByYXRlIGlzIHJlYXNvbmFibHkgY2xvc2UgdG8gbGluayBjYXBhY2l0eSBhbmQgdXNlIGFkZGl0
aXZlIGluY3JlYXNlLgorICAgICAgICBEYXRhUmF0ZSBhZGRpdGl2ZV9pbmNyZWFzZSA9CisgICAg
ICAgICAgICBBZGRpdGl2ZVJhdGVJbmNyZWFzZShhdF90aW1lLCB0aW1lX2xhc3RfYml0cmF0ZV9j
aGFuZ2VfKTsKKyAgICAgICAgbmV3X2JpdHJhdGUgKz0gYWRkaXRpdmVfaW5jcmVhc2U7CiAgICAg
ICB9IGVsc2UgewotICAgICAgICB1aW50MzJfdCBtdWx0aXBsaWNhdGl2ZV9pbmNyZWFzZV9icHMg
PSBNdWx0aXBsaWNhdGl2ZVJhdGVJbmNyZWFzZSgKLSAgICAgICAgICAgIG5vd19tcywgdGltZV9s
YXN0X2JpdHJhdGVfY2hhbmdlXywgbmV3X2JpdHJhdGVfYnBzKTsKLSAgICAgICAgbmV3X2JpdHJh
dGVfYnBzICs9IG11bHRpcGxpY2F0aXZlX2luY3JlYXNlX2JwczsKKyAgICAgICAgLy8gSWYgd2Ug
ZG9uJ3QgaGF2ZSBhbiBlc3RpbWF0ZSBvZiB0aGUgbGluayBjYXBhY2l0eSwgdXNlIGZhc3RlciBy
YW1wIHVwCisgICAgICAgIC8vIHRvIGRpc2NvdmVyIHRoZSBjYXBhY2l0eS4KKyAgICAgICAgRGF0
YVJhdGUgbXVsdGlwbGljYXRpdmVfaW5jcmVhc2UgPSBNdWx0aXBsaWNhdGl2ZVJhdGVJbmNyZWFz
ZSgKKyAgICAgICAgICAgIGF0X3RpbWUsIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8sIG5ld19i
aXRyYXRlKTsKKyAgICAgICAgbmV3X2JpdHJhdGUgKz0gbXVsdGlwbGljYXRpdmVfaW5jcmVhc2U7
CiAgICAgICB9CiAKLSAgICAgIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8gPSBub3dfbXM7Cisg
ICAgICB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfID0gYXRfdGltZTsKICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBrUmNEZWNyZWFzZToKLSAgICAgIC8vIFNldCBiaXQgcmF0ZSB0byBzb21ldGhp
bmcgc2xpZ2h0bHkgbG93ZXIgdGhhbiBtYXgKKyAgICAgIC8vIFNldCBiaXQgcmF0ZSB0byBzb21l
dGhpbmcgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGUgbWVhc3VyZWQgdGhyb3VnaHB1dAogICAgICAg
Ly8gdG8gZ2V0IHJpZCBvZiBhbnkgc2VsZi1pbmR1Y2VkIGRlbGF5LgotICAgICAgbmV3X2JpdHJh
dGVfYnBzID0KLSAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYmV0YV8gKiBlc3RpbWF0
ZWRfdGhyb3VnaHB1dF9icHMgKyAwLjUpOwotICAgICAgaWYgKG5ld19iaXRyYXRlX2JwcyA+IGN1
cnJlbnRfYml0cmF0ZV9icHNfKSB7CisgICAgICBuZXdfYml0cmF0ZSA9IGVzdGltYXRlZF90aHJv
dWdocHV0ICogYmV0YV87CisgICAgICBpZiAobmV3X2JpdHJhdGUgPiBjdXJyZW50X2JpdHJhdGVf
KSB7CiAgICAgICAgIC8vIEF2b2lkIGluY3JlYXNpbmcgdGhlIHJhdGUgd2hlbiBvdmVyLXVzaW5n
LgotICAgICAgICBpZiAocmF0ZV9jb250cm9sX3JlZ2lvbl8gIT0ga1JjTWF4VW5rbm93bikgewot
ICAgICAgICAgIG5ld19iaXRyYXRlX2JwcyA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigKLSAgICAg
ICAgICAgICAgYmV0YV8gKiBhdmdfbWF4X2JpdHJhdGVfa2Jwc18gKiAxMDAwICsgMC41Zik7Cisg
ICAgICAgIGlmIChsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLmhhc192YWx1ZSgpKSB7Cisg
ICAgICAgICAgbmV3X2JpdHJhdGUgPQorICAgICAgICAgICAgICBEYXRhUmF0ZTo6a2JwcyhiZXRh
XyAqIGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18udmFsdWUoKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgbmV3X2JpdHJhdGVfYnBzID0gc3RkOjptaW4obmV3X2JpdHJhdGVfYnBzLCBjdXJyZW50
X2JpdHJhdGVfYnBzXyk7CisgICAgICAgIG5ld19iaXRyYXRlID0gc3RkOjptaW4obmV3X2JpdHJh
dGUsIGN1cnJlbnRfYml0cmF0ZV8pOwogICAgICAgfQotICAgICAgcmF0ZV9jb250cm9sX3JlZ2lv
bl8gPSBrUmNOZWFyTWF4OwogCi0gICAgICBpZiAoYml0cmF0ZV9pc19pbml0aWFsaXplZF8gJiYK
LSAgICAgICAgICBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMgPCBjdXJyZW50X2JpdHJhdGVfYnBz
XykgewotICAgICAgICBjb25zdGV4cHIgZmxvYXQga0RlZ3JhZGF0aW9uRmFjdG9yID0gMC45ZjsK
KyAgICAgIGlmIChiaXRyYXRlX2lzX2luaXRpYWxpemVkXyAmJiBlc3RpbWF0ZWRfdGhyb3VnaHB1
dCA8IGN1cnJlbnRfYml0cmF0ZV8pIHsKKyAgICAgICAgY29uc3RleHByIGRvdWJsZSBrRGVncmFk
YXRpb25GYWN0b3IgPSAwLjk7CiAgICAgICAgIGlmIChzbW9vdGhpbmdfZXhwZXJpbWVudF8gJiYK
LSAgICAgICAgICAgIG5ld19iaXRyYXRlX2JwcyA8Ci0gICAgICAgICAgICAgICAga0RlZ3JhZGF0
aW9uRmFjdG9yICogYmV0YV8gKiBjdXJyZW50X2JpdHJhdGVfYnBzXykgeworICAgICAgICAgICAg
bmV3X2JpdHJhdGUgPCBrRGVncmFkYXRpb25GYWN0b3IgKiBiZXRhXyAqIGN1cnJlbnRfYml0cmF0
ZV8pIHsKICAgICAgICAgICAvLyBJZiBiaXRyYXRlIGRlY3JlYXNlcyBtb3JlIHRoYW4gYSBub3Jt
YWwgYmFjayBvZmYgYWZ0ZXIgb3ZlcnVzZSwgaXQKICAgICAgICAgICAvLyBpbmRpY2F0ZXMgYSBy
ZWFsIG5ldHdvcmsgZGVncmFkYXRpb24uIFdlIGRvIG5vdCBsZXQgc3VjaCBhIGRlY3JlYXNlCiAg
ICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBiYW5kd2lkdGggZXN0aW1hdGlvbiBwZXJpb2Qu
CiAgICAgICAgICAgbGFzdF9kZWNyZWFzZV8gPSBhYnNsOjpudWxsb3B0OwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgIGxhc3RfZGVjcmVhc2VfID0gY3VycmVudF9iaXRyYXRlX2Jwc18gLSBu
ZXdfYml0cmF0ZV9icHM7CisgICAgICAgICAgbGFzdF9kZWNyZWFzZV8gPSBjdXJyZW50X2JpdHJh
dGVfIC0gbmV3X2JpdHJhdGU7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGlmIChlc3RpbWF0
ZWRfdGhyb3VnaHB1dF9rYnBzIDwKLSAgICAgICAgICBhdmdfbWF4X2JpdHJhdGVfa2Jwc18gLSAz
ICogc3RkX21heF9iaXRfcmF0ZSkgewotICAgICAgICBhdmdfbWF4X2JpdHJhdGVfa2Jwc18gPSAt
MS4wZjsKKyAgICAgIGlmIChsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLmhhc192YWx1ZSgp
ICYmCisgICAgICAgICAgZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwcyA8IGxpbmtfY2FwYWNpdHlf
ZXN0aW1hdGVfa2Jwc18udmFsdWUoKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzICogc3RkX2xpbmtfY2FwYWNpdHlfa2JwcykgeworICAgICAgICAvLyBUaGUg
Y3VycmVudCB0aHJvdWdocHV0IGlzIGZhciBmcm9tIHRoZSBlc3RpbWF0ZWQgbGluayBjYXBhY2l0
eS4gQ2xlYXIKKyAgICAgICAgLy8gdGhlIGVzdGltYXRlIHRvIGFsbG93IGFuIGZhc3QgdXBkYXRl
IGluIFVwZGF0ZUxpbmtDYXBhY2l0eUVzdGltYXRlLgorICAgICAgICBsaW5rX2NhcGFjaXR5X2Vz
dGltYXRlX2ticHNfLnJlc2V0KCk7CiAgICAgICB9CiAKICAgICAgIGJpdHJhdGVfaXNfaW5pdGlh
bGl6ZWRfID0gdHJ1ZTsKLSAgICAgIFVwZGF0ZU1heFRocm91Z2hwdXRFc3RpbWF0ZShlc3RpbWF0
ZWRfdGhyb3VnaHB1dF9rYnBzKTsKKyAgICAgIFVwZGF0ZUxpbmtDYXBhY2l0eUVzdGltYXRlKGVz
dGltYXRlZF90aHJvdWdocHV0X2ticHMpOwogICAgICAgLy8gU3RheSBvbiBob2xkIHVudGlsIHRo
ZSBwaXBlcyBhcmUgY2xlYXJlZC4KICAgICAgIHJhdGVfY29udHJvbF9zdGF0ZV8gPSBrUmNIb2xk
OwotICAgICAgdGltZV9sYXN0X2JpdHJhdGVfY2hhbmdlXyA9IG5vd19tczsKLSAgICAgIHRpbWVf
bGFzdF9iaXRyYXRlX2RlY3JlYXNlXyA9IG5vd19tczsKKyAgICAgIHRpbWVfbGFzdF9iaXRyYXRl
X2NoYW5nZV8gPSBhdF90aW1lOworICAgICAgdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfID0g
YXRfdGltZTsKICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKICAgICAgIGFzc2VydChmYWxz
ZSk7CiAgIH0KLSAgcmV0dXJuIENsYW1wQml0cmF0ZShuZXdfYml0cmF0ZV9icHMsIGVzdGltYXRl
ZF90aHJvdWdocHV0X2Jwcyk7CisgIHJldHVybiBDbGFtcEJpdHJhdGUobmV3X2JpdHJhdGUsIGVz
dGltYXRlZF90aHJvdWdocHV0KTsKIH0KIAotdWludDMyX3QgQWltZFJhdGVDb250cm9sOjpDbGFt
cEJpdHJhdGUoCi0gICAgdWludDMyX3QgbmV3X2JpdHJhdGVfYnBzLAotICAgIHVpbnQzMl90IGVz
dGltYXRlZF90aHJvdWdocHV0X2JwcykgY29uc3QgeworRGF0YVJhdGUgQWltZFJhdGVDb250cm9s
OjpDbGFtcEJpdHJhdGUoRGF0YVJhdGUgbmV3X2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSBlc3RpbWF0ZWRfdGhyb3VnaHB1dCkgY29uc3Qg
ewogICAvLyBEb24ndCBjaGFuZ2UgdGhlIGJpdCByYXRlIGlmIHRoZSBzZW5kIHNpZGUgaXMgdG9v
IGZhciBvZmYuCiAgIC8vIFdlIGFsbG93IGEgYml0IG1vcmUgbGFnIGF0IHZlcnkgbG93IHJhdGVz
IHRvIG5vdCB0b28gZWFzaWx5IGdldCBzdHVjayBpZgogICAvLyB0aGUgZW5jb2RlciBwcm9kdWNl
cyB1bmV2ZW4gb3V0cHV0cy4KLSAgY29uc3QgdWludDMyX3QgbWF4X2JpdHJhdGVfYnBzID0KLSAg
ICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PigxLjVmICogZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBz
KSArIDEwMDAwOwotICBpZiAobmV3X2JpdHJhdGVfYnBzID4gY3VycmVudF9iaXRyYXRlX2Jwc18g
JiYKLSAgICAgIG5ld19iaXRyYXRlX2JwcyA+IG1heF9iaXRyYXRlX2JwcykgewotICAgIG5ld19i
aXRyYXRlX2JwcyA9IHN0ZDo6bWF4KGN1cnJlbnRfYml0cmF0ZV9icHNfLCBtYXhfYml0cmF0ZV9i
cHMpOworICBjb25zdCBEYXRhUmF0ZSBtYXhfYml0cmF0ZSA9IDEuNSAqIGVzdGltYXRlZF90aHJv
dWdocHV0ICsgRGF0YVJhdGU6OmticHMoMTApOworICBpZiAobmV3X2JpdHJhdGUgPiBjdXJyZW50
X2JpdHJhdGVfICYmIG5ld19iaXRyYXRlID4gbWF4X2JpdHJhdGUpIHsKKyAgICBuZXdfYml0cmF0
ZSA9IHN0ZDo6bWF4KGN1cnJlbnRfYml0cmF0ZV8sIG1heF9iaXRyYXRlKTsKICAgfQotICBuZXdf
Yml0cmF0ZV9icHMgPSBzdGQ6Om1heChuZXdfYml0cmF0ZV9icHMsIG1pbl9jb25maWd1cmVkX2Jp
dHJhdGVfYnBzXyk7Ci0gIHJldHVybiBuZXdfYml0cmF0ZV9icHM7CisgIG5ld19iaXRyYXRlID0g
c3RkOjptYXgobmV3X2JpdHJhdGUsIG1pbl9jb25maWd1cmVkX2JpdHJhdGVfKTsKKyAgcmV0dXJu
IG5ld19iaXRyYXRlOwogfQogCi11aW50MzJfdCBBaW1kUmF0ZUNvbnRyb2w6Ok11bHRpcGxpY2F0
aXZlUmF0ZUluY3JlYXNlKAotICAgIGludDY0X3Qgbm93X21zLAotICAgIGludDY0X3QgbGFzdF9t
cywKLSAgICB1aW50MzJfdCBjdXJyZW50X2JpdHJhdGVfYnBzKSBjb25zdCB7CitEYXRhUmF0ZSBB
aW1kUmF0ZUNvbnRyb2w6Ok11bHRpcGxpY2F0aXZlUmF0ZUluY3JlYXNlKAorICAgIFRpbWVzdGFt
cCBhdF90aW1lLAorICAgIFRpbWVzdGFtcCBsYXN0X3RpbWUsCisgICAgRGF0YVJhdGUgY3VycmVu
dF9iaXRyYXRlKSBjb25zdCB7CiAgIGRvdWJsZSBhbHBoYSA9IDEuMDg7Ci0gIGlmIChsYXN0X21z
ID4gLTEpIHsKLSAgICBhdXRvIHRpbWVfc2luY2VfbGFzdF91cGRhdGVfbXMgPQotICAgICAgICBy
dGM6OlNhZmVNaW48aW50NjRfdD4obm93X21zIC0gbGFzdF9tcywgMTAwMCk7Ci0gICAgYWxwaGEg
PSBwb3coYWxwaGEsIHRpbWVfc2luY2VfbGFzdF91cGRhdGVfbXMgLyAxMDAwLjApOworICBpZiAo
bGFzdF90aW1lLklzRmluaXRlKCkpIHsKKyAgICBhdXRvIHRpbWVfc2luY2VfbGFzdF91cGRhdGUg
PSBhdF90aW1lIC0gbGFzdF90aW1lOworICAgIGFscGhhID0gcG93KGFscGhhLCBzdGQ6Om1pbih0
aW1lX3NpbmNlX2xhc3RfdXBkYXRlLnNlY29uZHM8ZG91YmxlPigpLCAxLjApKTsKICAgfQotICB1
aW50MzJfdCBtdWx0aXBsaWNhdGl2ZV9pbmNyZWFzZV9icHMgPQotICAgICAgc3RkOjptYXgoY3Vy
cmVudF9iaXRyYXRlX2JwcyAqIChhbHBoYSAtIDEuMCksIDEwMDAuMCk7Ci0gIHJldHVybiBtdWx0
aXBsaWNhdGl2ZV9pbmNyZWFzZV9icHM7CisgIERhdGFSYXRlIG11bHRpcGxpY2F0aXZlX2luY3Jl
YXNlID0KKyAgICAgIHN0ZDo6bWF4KGN1cnJlbnRfYml0cmF0ZSAqIChhbHBoYSAtIDEuMCksIERh
dGFSYXRlOjpicHMoMTAwMCkpOworICByZXR1cm4gbXVsdGlwbGljYXRpdmVfaW5jcmVhc2U7CiB9
CiAKLXVpbnQzMl90IEFpbWRSYXRlQ29udHJvbDo6QWRkaXRpdmVSYXRlSW5jcmVhc2UoaW50NjRf
dCBub3dfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgbGFzdF9tcykgY29uc3QgewotICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KChub3dfbXMgLSBsYXN0X21zKSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0
TmVhck1heEluY3JlYXNlUmF0ZUJwcygpIC8gMTAwMCk7CitEYXRhUmF0ZSBBaW1kUmF0ZUNvbnRy
b2w6OkFkZGl0aXZlUmF0ZUluY3JlYXNlKFRpbWVzdGFtcCBhdF90aW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgbGFzdF90aW1lKSBj
b25zdCB7CisgIGRvdWJsZSB0aW1lX3BlcmlvZF9zZWNvbmRzID0gKGF0X3RpbWUgLSBsYXN0X3Rp
bWUpLnNlY29uZHM8ZG91YmxlPigpOworICBkb3VibGUgZGF0YV9yYXRlX2luY3JlYXNlX2JwcyA9
CisgICAgICBHZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzUGVyU2Vjb25kKCkgKiB0aW1lX3Blcmlv
ZF9zZWNvbmRzOworICByZXR1cm4gRGF0YVJhdGU6OmJwcyhkYXRhX3JhdGVfaW5jcmVhc2VfYnBz
KTsKIH0KIAotdm9pZCBBaW1kUmF0ZUNvbnRyb2w6OlVwZGF0ZU1heFRocm91Z2hwdXRFc3RpbWF0
ZSgKLSAgICBmbG9hdCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzKSB7Ci0gIGNvbnN0IGZsb2F0
IGFscGhhID0gMC4wNWY7Ci0gIGlmIChhdmdfbWF4X2JpdHJhdGVfa2Jwc18gPT0gLTEuMGYpIHsK
LSAgICBhdmdfbWF4X2JpdHJhdGVfa2Jwc18gPSBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzOwor
dm9pZCBBaW1kUmF0ZUNvbnRyb2w6OlVwZGF0ZUxpbmtDYXBhY2l0eUVzdGltYXRlKAorICAgIGRv
dWJsZSBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzKSB7CisgIGNvbnN0IGRvdWJsZSBhbHBoYSA9
IDAuMDU7CisgIGlmICghbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy5oYXNfdmFsdWUoKSkg
eworICAgIGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18gPSBlc3RpbWF0ZWRfdGhyb3VnaHB1
dF9rYnBzOwogICB9IGVsc2UgewotICAgIGF2Z19tYXhfYml0cmF0ZV9rYnBzXyA9Ci0gICAgICAg
ICgxIC0gYWxwaGEpICogYXZnX21heF9iaXRyYXRlX2ticHNfICsgYWxwaGEgKiBlc3RpbWF0ZWRf
dGhyb3VnaHB1dF9rYnBzOworICAgIGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18gPQorICAg
ICAgICAoMSAtIGFscGhhKSAqIGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18udmFsdWUoKSAr
CisgICAgICAgIGFscGhhICogZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwczsKICAgfQotICAvLyBF
c3RpbWF0ZSB0aGUgbWF4IGJpdCByYXRlIHZhcmlhbmNlIGFuZCBub3JtYWxpemUgdGhlIHZhcmlh
bmNlCi0gIC8vIHdpdGggdGhlIGF2ZXJhZ2UgbWF4IGJpdCByYXRlLgotICBjb25zdCBmbG9hdCBu
b3JtID0gc3RkOjptYXgoYXZnX21heF9iaXRyYXRlX2ticHNfLCAxLjBmKTsKLSAgdmFyX21heF9i
aXRyYXRlX2ticHNfID0KLSAgICAgICgxIC0gYWxwaGEpICogdmFyX21heF9iaXRyYXRlX2ticHNf
ICsKLSAgICAgIGFscGhhICogKGF2Z19tYXhfYml0cmF0ZV9rYnBzXyAtIGVzdGltYXRlZF90aHJv
dWdocHV0X2ticHMpICoKLSAgICAgICAgICAoYXZnX21heF9iaXRyYXRlX2ticHNfIC0gZXN0aW1h
dGVkX3Rocm91Z2hwdXRfa2JwcykgLyBub3JtOworICAvLyBFc3RpbWF0ZSB0aGUgdmFyaWFuY2Ug
b2YgdGhlIGxpbmsgY2FwYWNpdHkgZXN0aW1hdGUgYW5kIG5vcm1hbGl6ZSB0aGUKKyAgLy8gdmFy
aWFuY2Ugd2l0aCB0aGUgbGluayBjYXBhY2l0eSBlc3RpbWF0ZS4KKyAgY29uc3QgZG91YmxlIG5v
cm0gPSBzdGQ6Om1heChsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlKCksIDEuMCk7
CisgIHZhcl9saW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfID0KKyAgICAgICgxIC0gYWxwaGEp
ICogdmFyX2xpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18gKworICAgICAgYWxwaGEgKgorICAg
ICAgICAgIChsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlKCkgLSBlc3RpbWF0ZWRf
dGhyb3VnaHB1dF9rYnBzKSAqCisgICAgICAgICAgKGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jw
c18udmFsdWUoKSAtIGVzdGltYXRlZF90aHJvdWdocHV0X2ticHMpIC8KKyAgICAgICAgICBub3Jt
OwogICAvLyAwLjQgfj0gMTQga2JpdC9zIGF0IDUwMCBrYml0L3MKLSAgaWYgKHZhcl9tYXhfYml0
cmF0ZV9rYnBzXyA8IDAuNGYpIHsKLSAgICB2YXJfbWF4X2JpdHJhdGVfa2Jwc18gPSAwLjRmOwor
ICBpZiAodmFyX2xpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18gPCAwLjQpIHsKKyAgICB2YXJf
bGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXyA9IDAuNDsKICAgfQotICAvLyAyLjVmIH49IDM1
IGtiaXQvcyBhdCA1MDAga2JpdC9zCi0gIGlmICh2YXJfbWF4X2JpdHJhdGVfa2Jwc18gPiAyLjVm
KSB7Ci0gICAgdmFyX21heF9iaXRyYXRlX2ticHNfID0gMi41ZjsKKyAgLy8gMi41IH49IDM1IGti
aXQvcyBhdCA1MDAga2JpdC9zCisgIGlmICh2YXJfbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBz
XyA+IDIuNSkgeworICAgIHZhcl9saW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfID0gMi41Owog
ICB9CiB9CiAKIHZvaWQgQWltZFJhdGVDb250cm9sOjpDaGFuZ2VTdGF0ZShjb25zdCBSYXRlQ29u
dHJvbElucHV0JiBpbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2
NF90IG5vd19tcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFt
cCBhdF90aW1lKSB7CiAgIHN3aXRjaCAoaW5wdXQuYndfc3RhdGUpIHsKICAgICBjYXNlIEJhbmR3
aWR0aFVzYWdlOjprQndOb3JtYWw6CiAgICAgICBpZiAocmF0ZV9jb250cm9sX3N0YXRlXyA9PSBr
UmNIb2xkKSB7Ci0gICAgICAgIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8gPSBub3dfbXM7Cisg
ICAgICAgIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8gPSBhdF90aW1lOwogICAgICAgICByYXRl
X2NvbnRyb2xfc3RhdGVfID0ga1JjSW5jcmVhc2U7CiAgICAgICB9CiAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbC5oCmluZGV4IDJhM2Y3MWQ5OGFlOGE3NTU4YTE1
MmZkNzU0ZWI4MTdiNDE5NjA5NDYuLmFkYjk1OWExNGI5YzM4YjA1OGU1ZTA2MWFmYjllZGFjZTVm
ZmJkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
ZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRyb2wuaApAQCAtMTEsOCArMTEs
MTMgQEAKICNpZm5kZWYgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1JfQUlNRF9SQVRF
X0NPTlRST0xfSF8KICNkZWZpbmUgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1JfQUlN
RF9SQVRFX0NPTlRST0xfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0
aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1
Y3Rvcm1hZ2ljLmgiCisKKyNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9yYXRlLmgiCisjaW5jbHVk
ZSAiYXBpL3VuaXRzL3RpbWVzdGFtcC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMzAs
MjggKzM1LDI4IEBAIGNsYXNzIEFpbWRSYXRlQ29udHJvbCB7CiAgIC8vIGVpdGhlciBpZiBpdCBo
YXMgYmVlbiBleHBsaWNpdGx5IHNldCB2aWEgU2V0U3RhcnRCaXRyYXRlL1NldEVzdGltYXRlLCBv
ciBpZgogICAvLyB3ZSBoYXZlIG1lYXN1cmVkIGEgdGhyb3VnaHB1dC4KICAgYm9vbCBWYWxpZEVz
dGltYXRlKCkgY29uc3Q7Ci0gIHZvaWQgU2V0U3RhcnRCaXRyYXRlKGludCBzdGFydF9iaXRyYXRl
X2Jwcyk7Ci0gIHZvaWQgU2V0TWluQml0cmF0ZShpbnQgbWluX2JpdHJhdGVfYnBzKTsKLSAgaW50
NjRfdCBHZXRGZWVkYmFja0ludGVydmFsKCkgY29uc3Q7CisgIHZvaWQgU2V0U3RhcnRCaXRyYXRl
KERhdGFSYXRlIHN0YXJ0X2JpdHJhdGUpOworICB2b2lkIFNldE1pbkJpdHJhdGUoRGF0YVJhdGUg
bWluX2JpdHJhdGUpOworICBUaW1lRGVsdGEgR2V0RmVlZGJhY2tJbnRlcnZhbCgpIGNvbnN0Owog
CiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYml0cmF0ZSBlc3RpbWF0ZSBoYXNuJ3QgYmVlbiBj
aGFuZ2VkIGZvciBtb3JlIHRoYW4KICAgLy8gYW4gUlRULCBvciBpZiB0aGUgZXN0aW1hdGVkX3Ro
cm91Z2hwdXQgaXMgbGVzcyB0aGFuIGhhbGYgb2YgdGhlIGN1cnJlbnQKICAgLy8gZXN0aW1hdGUu
IFNob3VsZCBiZSB1c2VkIHRvIGRlY2lkZSBpZiB3ZSBzaG91bGQgcmVkdWNlIHRoZSByYXRlIGZ1
cnRoZXIKICAgLy8gd2hlbiBvdmVyLXVzaW5nLgotICBib29sIFRpbWVUb1JlZHVjZUZ1cnRoZXIo
aW50NjRfdCBub3dfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBlc3Rp
bWF0ZWRfdGhyb3VnaHB1dF9icHMpIGNvbnN0OworICBib29sIFRpbWVUb1JlZHVjZUZ1cnRoZXIo
VGltZXN0YW1wIGF0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSBl
c3RpbWF0ZWRfdGhyb3VnaHB1dCkgY29uc3Q7CiAgIC8vIEFzIGFib3ZlLiBUbyBiZSB1c2VkIGlm
IG92ZXJ1c2luZyBiZWZvcmUgd2UgaGF2ZSBtZWFzdXJlZCBhIHRocm91Z2hwdXQuCi0gIGJvb2wg
SW5pdGlhbFRpbWVUb1JlZHVjZUZ1cnRoZXIoaW50NjRfdCBub3dfbXMpIGNvbnN0OworICBib29s
IEluaXRpYWxUaW1lVG9SZWR1Y2VGdXJ0aGVyKFRpbWVzdGFtcCBhdF90aW1lKSBjb25zdDsKIAot
ICB1aW50MzJfdCBMYXRlc3RFc3RpbWF0ZSgpIGNvbnN0OwotICB2b2lkIFNldFJ0dChpbnQ2NF90
IHJ0dCk7Ci0gIHVpbnQzMl90IFVwZGF0ZShjb25zdCBSYXRlQ29udHJvbElucHV0KiBpbnB1dCwg
aW50NjRfdCBub3dfbXMpOwotICB2b2lkIFNldEVzdGltYXRlKGludCBiaXRyYXRlX2JwcywgaW50
NjRfdCBub3dfbXMpOworICBEYXRhUmF0ZSBMYXRlc3RFc3RpbWF0ZSgpIGNvbnN0OworICB2b2lk
IFNldFJ0dChUaW1lRGVsdGEgcnR0KTsKKyAgRGF0YVJhdGUgVXBkYXRlKGNvbnN0IFJhdGVDb250
cm9sSW5wdXQqIGlucHV0LCBUaW1lc3RhbXAgYXRfdGltZSk7CisgIHZvaWQgU2V0RXN0aW1hdGUo
RGF0YVJhdGUgYml0cmF0ZSwgVGltZXN0YW1wIGF0X3RpbWUpOwogCiAgIC8vIFJldHVybnMgdGhl
IGluY3JlYXNlIHJhdGUgd2hlbiB1c2VkIGJhbmR3aWR0aCBpcyBuZWFyIHRoZSBsaW5rIGNhcGFj
aXR5LgotICBpbnQgR2V0TmVhck1heEluY3JlYXNlUmF0ZUJwcygpIGNvbnN0OworICBkb3VibGUg
R2V0TmVhck1heEluY3JlYXNlUmF0ZUJwc1BlclNlY29uZCgpIGNvbnN0OwogICAvLyBSZXR1cm5z
IHRoZSBleHBlY3RlZCB0aW1lIGJldHdlZW4gb3ZlcnVzZSBzaWduYWxzIChhc3N1bWluZyBzdGVh
ZHkgc3RhdGUpLgotICBpbnQgR2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RNcygpIGNvbnN0Owor
ICBUaW1lRGVsdGEgR2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKSBjb25zdDsKIAogIHByaXZh
dGU6CiAgIGZyaWVuZCBjbGFzcyBHb29nQ2NTdGF0ZVByaW50ZXI7CkBAIC02Miw0MSArNjcsNDAg
QEAgY2xhc3MgQWltZFJhdGVDb250cm9sIHsKICAgLy8gaW4gdGhlICJkZWNyZWFzZSIgc3RhdGUg
dGhlIGJpdHJhdGUgd2lsbCBiZSBkZWNyZWFzZWQgdG8gc2xpZ2h0bHkgYmVsb3cgdGhlCiAgIC8v
IGN1cnJlbnQgdGhyb3VnaHB1dC4gV2hlbiBpbiB0aGUgImhvbGQiIHN0YXRlIHRoZSBiaXRyYXRl
IHdpbGwgYmUga2VwdAogICAvLyBjb25zdGFudCB0byBhbGxvdyBidWlsdCB1cCBxdWV1ZXMgdG8g
ZHJhaW4uCi0gIHVpbnQzMl90IENoYW5nZUJpdHJhdGUodWludDMyX3QgY3VycmVudF9iaXRyYXRl
LAorICBEYXRhUmF0ZSBDaGFuZ2VCaXRyYXRlKERhdGFSYXRlIGN1cnJlbnRfYml0cmF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSYXRlQ29udHJvbElucHV0JiBpbnB1dCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG5vd19tcyk7Ci0gIC8vIENsYW1wcyBuZXdf
Yml0cmF0ZV9icHMgdG8gd2l0aGluIHRoZSBjb25maWd1cmVkIG1pbiBiaXRyYXRlIGFuZCBhIGxp
bmVhcgorICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgLy8g
Q2xhbXBzIG5ld19iaXRyYXRlIHRvIHdpdGhpbiB0aGUgY29uZmlndXJlZCBtaW4gYml0cmF0ZSBh
bmQgYSBsaW5lYXIKICAgLy8gZnVuY3Rpb24gb2YgdGhlIHRocm91Z2hwdXQsIHNvIHRoYXQgdGhl
IG5ldyBiaXRyYXRlIGNhbid0IGdyb3cgdG9vCiAgIC8vIGxhcmdlIGNvbXBhcmVkIHRvIHRoZSBi
aXRyYXRlIGFjdHVhbGx5IGJlaW5nIHJlY2VpdmVkIGJ5IHRoZSBvdGhlciBlbmQuCi0gIHVpbnQz
Ml90IENsYW1wQml0cmF0ZSh1aW50MzJfdCBuZXdfYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpIGNvbnN0OwotICB1
aW50MzJfdCBNdWx0aXBsaWNhdGl2ZVJhdGVJbmNyZWFzZShpbnQ2NF90IG5vd19tcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBsYXN0X21zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjdXJyZW50X2JpdHJhdGVf
YnBzKSBjb25zdDsKLSAgdWludDMyX3QgQWRkaXRpdmVSYXRlSW5jcmVhc2UoaW50NjRfdCBub3df
bXMsIGludDY0X3QgbGFzdF9tcykgY29uc3Q7Ci0gIHZvaWQgVXBkYXRlQ2hhbmdlUGVyaW9kKGlu
dDY0X3Qgbm93X21zKTsKLSAgdm9pZCBVcGRhdGVNYXhUaHJvdWdocHV0RXN0aW1hdGUoZmxvYXQg
ZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2Jwcyk7Ci0gIHZvaWQgQ2hhbmdlU3RhdGUoY29uc3QgUmF0
ZUNvbnRyb2xJbnB1dCYgaW5wdXQsIGludDY0X3Qgbm93X21zKTsKKyAgRGF0YVJhdGUgQ2xhbXBC
aXRyYXRlKERhdGFSYXRlIG5ld19iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgRGF0
YVJhdGUgZXN0aW1hdGVkX3Rocm91Z2hwdXQpIGNvbnN0OworICBEYXRhUmF0ZSBNdWx0aXBsaWNh
dGl2ZVJhdGVJbmNyZWFzZShUaW1lc3RhbXAgYXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGxhc3RfbXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERhdGFSYXRlIGN1cnJlbnRfYml0cmF0ZSkgY29uc3Q7CisgIERh
dGFSYXRlIEFkZGl0aXZlUmF0ZUluY3JlYXNlKFRpbWVzdGFtcCBhdF90aW1lLCBUaW1lc3RhbXAg
bGFzdF90aW1lKSBjb25zdDsKKyAgdm9pZCBVcGRhdGVDaGFuZ2VQZXJpb2QoVGltZXN0YW1wIGF0
X3RpbWUpOworICB2b2lkIFVwZGF0ZUxpbmtDYXBhY2l0eUVzdGltYXRlKGRvdWJsZSBlc3RpbWF0
ZWRfdGhyb3VnaHB1dF9rYnBzKTsKKyAgdm9pZCBDaGFuZ2VTdGF0ZShjb25zdCBSYXRlQ29udHJv
bElucHV0JiBpbnB1dCwgVGltZXN0YW1wIGF0X3RpbWUpOwogCi0gIHVpbnQzMl90IG1pbl9jb25m
aWd1cmVkX2JpdHJhdGVfYnBzXzsKLSAgdWludDMyX3QgbWF4X2NvbmZpZ3VyZWRfYml0cmF0ZV9i
cHNfOwotICB1aW50MzJfdCBjdXJyZW50X2JpdHJhdGVfYnBzXzsKLSAgdWludDMyX3QgbGF0ZXN0
X2VzdGltYXRlZF90aHJvdWdocHV0X2Jwc187Ci0gIGZsb2F0IGF2Z19tYXhfYml0cmF0ZV9rYnBz
XzsKLSAgZmxvYXQgdmFyX21heF9iaXRyYXRlX2ticHNfOworICBEYXRhUmF0ZSBtaW5fY29uZmln
dXJlZF9iaXRyYXRlXzsKKyAgRGF0YVJhdGUgbWF4X2NvbmZpZ3VyZWRfYml0cmF0ZV87CisgIERh
dGFSYXRlIGN1cnJlbnRfYml0cmF0ZV87CisgIERhdGFSYXRlIGxhdGVzdF9lc3RpbWF0ZWRfdGhy
b3VnaHB1dF87CisgIGFic2w6Om9wdGlvbmFsPGRvdWJsZT4gbGlua19jYXBhY2l0eV9lc3RpbWF0
ZV9rYnBzXzsKKyAgZG91YmxlIHZhcl9saW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfOwogICBS
YXRlQ29udHJvbFN0YXRlIHJhdGVfY29udHJvbF9zdGF0ZV87Ci0gIFJhdGVDb250cm9sUmVnaW9u
IHJhdGVfY29udHJvbF9yZWdpb25fOwotICBpbnQ2NF90IHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5n
ZV87Ci0gIGludDY0X3QgdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfOwotICBpbnQ2NF90IHRp
bWVfZmlyc3RfdGhyb3VnaHB1dF9lc3RpbWF0ZV87CisgIFRpbWVzdGFtcCB0aW1lX2xhc3RfYml0
cmF0ZV9jaGFuZ2VfOworICBUaW1lc3RhbXAgdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfOwor
ICBUaW1lc3RhbXAgdGltZV9maXJzdF90aHJvdWdocHV0X2VzdGltYXRlXzsKICAgYm9vbCBiaXRy
YXRlX2lzX2luaXRpYWxpemVkXzsKLSAgZmxvYXQgYmV0YV87Ci0gIGludDY0X3QgcnR0XzsKKyAg
ZG91YmxlIGJldGFfOworICBUaW1lRGVsdGEgcnR0XzsKICAgY29uc3QgYm9vbCBpbl9leHBlcmlt
ZW50XzsKICAgY29uc3QgYm9vbCBzbW9vdGhpbmdfZXhwZXJpbWVudF87CiAgIGNvbnN0IGJvb2wg
aW5faW5pdGlhbF9iYWNrb2ZmX2ludGVydmFsX2V4cGVyaW1lbnRfOwotICBpbnQ2NF90IGluaXRp
YWxfYmFja29mZl9pbnRlcnZhbF9tc187Ci0gIGFic2w6Om9wdGlvbmFsPGludD4gbGFzdF9kZWNy
ZWFzZV87CisgIFRpbWVEZWx0YSBpbml0aWFsX2JhY2tvZmZfaW50ZXJ2YWxfOworICBhYnNsOjpv
cHRpb25hbDxEYXRhUmF0ZT4gbGFzdF9kZWNyZWFzZV87CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbF91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sX3VuaXR0ZXN0
LmNjCmluZGV4IDVjZGU3Y2VkYWY0OTJkYmRhNWEzZjNiYjBmMzBkN2UxMWU1ZTAwNzIuLjRiZWM5
ZThmZjUwMDc4MWQyNTNmNWNkMzQ3NWE2MjdiMjAyZDRiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0
aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sX3VuaXR0ZXN0LmNjCkBAIC00MCwxMyArNDAsMjYgQEAg
QWltZFJhdGVDb250cm9sU3RhdGVzIENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0YXRlcygpIHsKICAg
c3RhdGVzLnNpbXVsYXRlZF9jbG9jay5yZXNldChuZXcgU2ltdWxhdGVkQ2xvY2soa0Nsb2NrSW5p
dGlhbFRpbWUpKTsKICAgcmV0dXJuIHN0YXRlczsKIH0KLQorYWJzbDo6b3B0aW9uYWw8RGF0YVJh
dGU+IE9wdGlvbmFsUmF0ZUZyb21PcHRpb25hbEJwcygKKyAgICBhYnNsOjpvcHRpb25hbDxpbnQ+
IGJpdHJhdGVfYnBzKSB7CisgIGlmIChiaXRyYXRlX2JwcykgeworICAgIHJldHVybiBEYXRhUmF0
ZTo6YnBzKCpiaXRyYXRlX2Jwcyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGFic2w6Om51bGxv
cHQ7CisgIH0KK30KIHZvaWQgVXBkYXRlUmF0ZUNvbnRyb2woY29uc3QgQWltZFJhdGVDb250cm9s
U3RhdGVzJiBzdGF0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhbmR3aWR0aFVz
YWdlJiBiYW5kd2lkdGhfdXNhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlv
bmFsPHVpbnQzMl90PiB0aHJvdWdocHV0X2VzdGltYXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IG5vd19tcykgewotICBSYXRlQ29udHJvbElucHV0IGlucHV0KGJhbmR3aWR0aF91
c2FnZSwgdGhyb3VnaHB1dF9lc3RpbWF0ZSk7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+
VXBkYXRlKCZpbnB1dCwgbm93X21zKTsKKyAgUmF0ZUNvbnRyb2xJbnB1dCBpbnB1dChiYW5kd2lk
dGhfdXNhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWxSYXRlRnJvbU9wdGlv
bmFsQnBzKHRocm91Z2hwdXRfZXN0aW1hdGUpKTsKKyAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9s
LT5VcGRhdGUoJmlucHV0LCBUaW1lc3RhbXA6Om1zKG5vd19tcykpOworfQordm9pZCBTZXRFc3Rp
bWF0ZShjb25zdCBBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMmIHN0YXRlcywgaW50IGJpdHJhdGVfYnBz
KSB7CisgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCisgICAgICBEYXRh
UmF0ZTo6YnBzKGJpdHJhdGVfYnBzKSwKKyAgICAgIFRpbWVzdGFtcDo6bXMoc3RhdGVzLnNpbXVs
YXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
CkBAIC01NCw0MCArNjcsNDAgQEAgdm9pZCBVcGRhdGVSYXRlQ29udHJvbChjb25zdCBBaW1kUmF0
ZUNvbnRyb2xTdGF0ZXMmIHN0YXRlcywKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgTWluTmVh
ck1heEluY3JlYXNlUmF0ZU9uTG93QmFuZHdpdGgpIHsKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVB
aW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKTsKICAgY29uc3RleHByIGludCBrQml0cmF0ZSA9IDMwMDAw
OwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAgICAga0JpdHJh
dGUsIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKLSAgRVhQ
RUNUX0VRKDQwMDAsIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0TmVhck1heEluY3JlYXNl
UmF0ZUJwcygpKTsKKyAgU2V0RXN0aW1hdGUoc3RhdGVzLCBrQml0cmF0ZSk7CisgIEVYUEVDVF9F
USg0MDAwLAorICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXROZWFyTWF4
SW5jcmVhc2VSYXRlQnBzUGVyU2Vjb25kKCkpOwogfQogCiBURVNUKEFpbWRSYXRlQ29udHJvbFRl
c3QsIE5lYXJNYXhJbmNyZWFzZVJhdGVJczVrYnBzT245MGticHNBbmQyMDBtc1J0dCkgewogICBh
dXRvIHN0YXRlcyA9IENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0YXRlcygpOwogICBjb25zdGV4cHIg
aW50IGtCaXRyYXRlID0gOTAwMDA7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0
aW1hdGUoCi0gICAgICBrQml0cmF0ZSwgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWls
bGlzZWNvbmRzKCkpOwotICBFWFBFQ1RfRVEoNTAwMCwgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9s
LT5HZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0ZXMsIGtC
aXRyYXRlKTsKKyAgRVhQRUNUX0VRKDUwMDAsCisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRl
X2NvbnRyb2wtPkdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJTZWNvbmQoKSk7CiB9CiAKIFRF
U1QoQWltZFJhdGVDb250cm9sVGVzdCwgTmVhck1heEluY3JlYXNlUmF0ZUlzNWticHNPbjYwa2Jw
c0FuZDEwMG1zUnR0KSB7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3Rh
dGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0JpdHJhdGUgPSA2MDAwMDsKLSAgc3RhdGVzLmFpbWRf
cmF0ZV9jb250cm9sLT5TZXRFc3RpbWF0ZSgKLSAgICAgIGtCaXRyYXRlLCBzdGF0ZXMuc2ltdWxh
dGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29u
dHJvbC0+U2V0UnR0KDEwMCk7Ci0gIEVYUEVDVF9FUSg1MDAwLCBzdGF0ZXMuYWltZF9yYXRlX2Nv
bnRyb2wtPkdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRl
cywga0JpdHJhdGUpOworICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldFJ0dChUaW1lRGVs
dGE6Om1zKDEwMCkpOworICBFWFBFQ1RfRVEoNTAwMCwKKyAgICAgICAgICAgIHN0YXRlcy5haW1k
X3JhdGVfY29udHJvbC0+R2V0TmVhck1heEluY3JlYXNlUmF0ZUJwc1BlclNlY29uZCgpKTsKIH0K
IAogVEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBHZXRJbmNyZWFzZVJhdGVBbmRCYW5kd2lkdGhQ
ZXJpb2QpIHsKICAgLy8gU21vb3RoaW5nIGV4cGVyaW1lbnQgZGlzYWJsZWQKICAgYXV0byBzdGF0
ZXMgPSBDcmVhdGVBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKTsKICAgY29uc3RleHByIGludCBrQml0
cmF0ZSA9IDMwMDAwMDsKLSAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRFc3RpbWF0ZSgK
LSAgICAgIGtCaXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29u
ZHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRlcywga0JpdHJhdGUpOwogICBVcGRhdGVSYXRlQ29u
dHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmcsIGtCaXRyYXRlLAogICAg
ICAgICAgICAgICAgICAgICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29u
ZHMoKSk7Ci0gIEVYUEVDVF9ORUFSKDE0MDAwLCBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdl
dE5lYXJNYXhJbmNyZWFzZVJhdGVCcHMoKSwKKyAgRVhQRUNUX05FQVIoMTQwMDAsCisgICAgICAg
ICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0TmVhck1heEluY3JlYXNlUmF0ZUJw
c1BlclNlY29uZCgpLAogICAgICAgICAgICAgICAxMDAwKTsKICAgRVhQRUNUX0VRKGtEZWZhdWx0
UGVyaW9kTXNOb1Ntb290aGluZ0V4cCwKLSAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29u
dHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RNcygpKTsKKyAgICAgICAgICAgIHN0YXRl
cy5haW1kX3JhdGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKS5tcygpKTsK
IH0KIAogVEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBHZXRJbmNyZWFzZVJhdGVBbmRCYW5kd2lk
dGhQZXJpb2RTbW9vdGhpbmdFeHApIHsKQEAgLTk1LDIxICsxMDgsMjAgQEAgVEVTVChBaW1kUmF0
ZUNvbnRyb2xUZXN0LCBHZXRJbmNyZWFzZVJhdGVBbmRCYW5kd2lkdGhQZXJpb2RTbW9vdGhpbmdF
eHApIHsKICAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKGtT
bW9vdGhpbmdFeHBGaWVsZFRyaWFsKTsKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVBaW1kUmF0ZUNv
bnRyb2xTdGF0ZXMoKTsKICAgY29uc3RleHByIGludCBrQml0cmF0ZSA9IDMwMDAwMDsKLSAgc3Rh
dGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRFc3RpbWF0ZSgKLSAgICAgIGtCaXRyYXRlLCBzdGF0
ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CisgIFNldEVzdGltYXRl
KHN0YXRlcywga0JpdHJhdGUpOwogICBVcGRhdGVSYXRlQ29udHJvbChzdGF0ZXMsIEJhbmR3aWR0
aFVzYWdlOjprQndPdmVydXNpbmcsIGtCaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICBzdGF0
ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Ci0gIEVYUEVDVF9ORUFS
KDE0MDAwLCBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldE5lYXJNYXhJbmNyZWFzZVJhdGVC
cHMoKSwKKyAgRVhQRUNUX05FQVIoMTQwMDAsCisgICAgICAgICAgICAgIHN0YXRlcy5haW1kX3Jh
dGVfY29udHJvbC0+R2V0TmVhck1heEluY3JlYXNlUmF0ZUJwc1BlclNlY29uZCgpLAogICAgICAg
ICAgICAgICAxMDAwKTsKICAgRVhQRUNUX0VRKGtNaW5Cd2VQZXJpb2RNc1Ntb290aGluZ0V4cCwK
LSAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lk
dGhQZXJpb2RNcygpKTsKKyAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0
RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKS5tcygpKTsKIH0KIAogVEVTVChBaW1kUmF0ZUNvbnRy
b2xUZXN0LCBCd2VMaW1pdGVkQnlBY2tlZEJpdHJhdGUpIHsKICAgYXV0byBzdGF0ZXMgPSBDcmVh
dGVBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKTsKICAgY29uc3RleHByIGludCBrQWNrZWRCaXRyYXRl
ID0gMTAwMDA7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCi0gICAg
ICBrQWNrZWRCaXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29u
ZHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRlcywga0Fja2VkQml0cmF0ZSk7CiAgIHdoaWxlIChz
dGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSAtIGtDbG9ja0luaXRp
YWxUaW1lIDwKICAgICAgICAgIDIwMDAwKSB7CiAgICAgVXBkYXRlUmF0ZUNvbnRyb2woc3RhdGVz
LCBCYW5kd2lkdGhVc2FnZTo6a0J3Tm9ybWFsLCBrQWNrZWRCaXRyYXRlLApAQCAtMTE4LDE0ICsx
MzAsMTMgQEAgVEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBCd2VMaW1pdGVkQnlBY2tlZEJpdHJh
dGUpIHsKICAgfQogICBBU1NFUlRfVFJVRShzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlZhbGlk
RXN0aW1hdGUoKSk7CiAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1aW50MzJfdD4oMS41ICoga0Fj
a2VkQml0cmF0ZSArIDEwMDAwKSwKLSAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJv
bC0+TGF0ZXN0RXN0aW1hdGUoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRy
b2wtPkxhdGVzdEVzdGltYXRlKCkuYnBzKCkpOwogfQogCiBURVNUKEFpbWRSYXRlQ29udHJvbFRl
c3QsIEJ3ZU5vdExpbWl0ZWRCeURlY3JlYXNpbmdBY2tlZEJpdHJhdGUpIHsKICAgYXV0byBzdGF0
ZXMgPSBDcmVhdGVBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKTsKICAgY29uc3RleHByIGludCBrQWNr
ZWRCaXRyYXRlID0gMTAwMDAwOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGlt
YXRlKAotICAgICAga0Fja2VkQml0cmF0ZSwgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUlu
TWlsbGlzZWNvbmRzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0ZXMsIGtBY2tlZEJpdHJhdGUpOwog
ICB3aGlsZSAoc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkgLSBr
Q2xvY2tJbml0aWFsVGltZSA8CiAgICAgICAgICAyMDAwMCkgewogICAgIFVwZGF0ZVJhdGVDb250
cm9sKHN0YXRlcywgQmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1hbCwga0Fja2VkQml0cmF0ZSwKQEAg
LTEzNSwxMCArMTQ2LDEwIEBAIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgQndlTm90TGltaXRl
ZEJ5RGVjcmVhc2luZ0Fja2VkQml0cmF0ZSkgewogICBBU1NFUlRfVFJVRShzdGF0ZXMuYWltZF9y
YXRlX2NvbnRyb2wtPlZhbGlkRXN0aW1hdGUoKSk7CiAgIC8vIElmIHRoZSBhY2tlZCBiaXRyYXRl
IGRlY3JlYXNlcyB0aGUgQldFIHNob3VsZG4ndCBiZSByZWR1Y2VkIHRvIDEuNXgKICAgLy8gd2hh
dCdzIGJlaW5nIGFja2VkLCBidXQgYWxzbyBzaG91bGRuJ3QgZ2V0IHRvIGluY3JlYXNlIG1vcmUu
Ci0gIHVpbnQzMl90IHByZXZfZXN0aW1hdGUgPSBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkxh
dGVzdEVzdGltYXRlKCk7CisgIHVpbnQzMl90IHByZXZfZXN0aW1hdGUgPSBzdGF0ZXMuYWltZF9y
YXRlX2NvbnRyb2wtPkxhdGVzdEVzdGltYXRlKCkuYnBzKCk7CiAgIFVwZGF0ZVJhdGVDb250cm9s
KHN0YXRlcywgQmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1hbCwga0Fja2VkQml0cmF0ZSAvIDIsCiAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vj
b25kcygpKTsKLSAgdWludDMyX3QgbmV3X2VzdGltYXRlID0gc3RhdGVzLmFpbWRfcmF0ZV9jb250
cm9sLT5MYXRlc3RFc3RpbWF0ZSgpOworICB1aW50MzJfdCBuZXdfZXN0aW1hdGUgPSBzdGF0ZXMu
YWltZF9yYXRlX2NvbnRyb2wtPkxhdGVzdEVzdGltYXRlKCkuYnBzKCk7CiAgIEVYUEVDVF9ORUFS
KG5ld19lc3RpbWF0ZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEuNSAqIGtBY2tlZEJpdHJhdGUg
KyAxMDAwMCksCiAgICAgICAgICAgICAgIDIwMDApOwogICBFWFBFQ1RfRVEobmV3X2VzdGltYXRl
LCBwcmV2X2VzdGltYXRlKTsKQEAgLTE0NywzNSArMTU4LDM0IEBAIFRFU1QoQWltZFJhdGVDb250
cm9sVGVzdCwgQndlTm90TGltaXRlZEJ5RGVjcmVhc2luZ0Fja2VkQml0cmF0ZSkgewogVEVTVChB
aW1kUmF0ZUNvbnRyb2xUZXN0LCBEZWZhdWx0UGVyaW9kVW50aWxGaXJzdE92ZXJ1c2UpIHsKICAg
Ly8gU21vb3RoaW5nIGV4cGVyaW1lbnQgZGlzYWJsZWQKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVB
aW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKTsKLSAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRT
dGFydEJpdHJhdGUoMzAwMDAwKTsKKyAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRTdGFy
dEJpdHJhdGUoRGF0YVJhdGU6OmticHMoMzAwKSk7CiAgIEVYUEVDVF9FUShrRGVmYXVsdFBlcmlv
ZE1zTm9TbW9vdGhpbmdFeHAsCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wt
PkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWlt
ZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiAgIHN0
YXRlcy5zaW11bGF0ZWRfY2xvY2stPkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMCk7CiAgIFVw
ZGF0ZVJhdGVDb250cm9sKHN0YXRlcywgQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZywgMjgw
MDAwLAogICAgICAgICAgICAgICAgICAgICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5N
aWxsaXNlY29uZHMoKSk7CiAgIEVYUEVDVF9ORShrRGVmYXVsdFBlcmlvZE1zTm9TbW9vdGhpbmdF
eHAsCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFu
ZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wt
PkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVD
b250cm9sVGVzdCwgTWluUGVyaW9kVW50aWxGaXJzdE92ZXJ1c2VTbW9vdGhpbmdFeHApIHsKICAg
Ly8gU21vb3RoaW5nIGV4cGVyaW1lbnQgZW5hYmxlZAogICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFs
cyBvdmVycmlkZV9maWVsZF90cmlhbHMoa1Ntb290aGluZ0V4cEZpZWxkVHJpYWwpOwogICBhdXRv
IHN0YXRlcyA9IENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0YXRlcygpOwotICBzdGF0ZXMuYWltZF9y
YXRlX2NvbnRyb2wtPlNldFN0YXJ0Qml0cmF0ZSgzMDAwMDApOworICBzdGF0ZXMuYWltZF9yYXRl
X2NvbnRyb2wtPlNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZTo6a2JwcygzMDApKTsKICAgRVhQRUNU
X0VRKGtNaW5Cd2VQZXJpb2RNc1Ntb290aGluZ0V4cCwKLSAgICAgICAgICAgIHN0YXRlcy5haW1k
X3JhdGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RNcygpKTsKKyAgICAgICAg
ICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2Qo
KS5tcygpKTsKICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+QWR2YW5jZVRpbWVNaWxsaXNlY29u
ZHMoMTAwKTsKICAgVXBkYXRlUmF0ZUNvbnRyb2woc3RhdGVzLCBCYW5kd2lkdGhVc2FnZTo6a0J3
T3ZlcnVzaW5nLCAyODAwMDAsCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlcy5zaW11bGF0ZWRf
Y2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKICAgRVhQRUNUX05FKGtNaW5Cd2VQZXJpb2RN
c1Ntb290aGluZ0V4cCwKLSAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0
RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RNcygpKTsKKyAgICAgICAgICAgIHN0YXRlcy5haW1kX3Jh
dGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKS5tcygpKTsKIH0KIAogVEVT
VChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBFeHBlY3RlZFBlcmlvZEFmdGVyMjBrYnBzRHJvcEFuZDVr
YnBzSW5jcmVhc2UpIHsKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVBaW1kUmF0ZUNvbnRyb2xTdGF0
ZXMoKTsKICAgY29uc3RleHByIGludCBrSW5pdGlhbEJpdHJhdGUgPSAxMTAwMDA7Ci0gIHN0YXRl
cy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCi0gICAgICBrSW5pdGlhbEJpdHJhdGUs
IHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgU2V0RXN0
aW1hdGUoc3RhdGVzLCBrSW5pdGlhbEJpdHJhdGUpOwogICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2Nr
LT5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDApOwogICAvLyBNYWtlIHRoZSBiaXRyYXRlIGRy
b3AgYnkgMjAga2JwcyB0byBnZXQgdG8gOTAga2Jwcy4KICAgLy8gVGhlIHJhdGUgaW5jcmVhc2Ug
YXQgOTAga2JwcyBzaG91bGQgYmUgNSBrYnBzLCBzbyB0aGUgcGVyaW9kIHNob3VsZCBiZSA0IHMu
CkBAIC0xODMsOCArMTkzLDkgQEAgVEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBFeHBlY3RlZFBl
cmlvZEFmdGVyMjBrYnBzRHJvcEFuZDVrYnBzSW5jcmVhc2UpIHsKICAgICAgIChrSW5pdGlhbEJp
dHJhdGUgLSAyMDAwMCkgLyBrRnJhY3Rpb25BZnRlck92ZXJ1c2U7CiAgIFVwZGF0ZVJhdGVDb250
cm9sKHN0YXRlcywgQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZywga0Fja2VkQml0cmF0ZSwK
ICAgICAgICAgICAgICAgICAgICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlz
ZWNvbmRzKCkpOwotICBFWFBFQ1RfRVEoNTAwMCwgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5H
ZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzKCkpOwotICBFWFBFQ1RfRVEoNDAwMCwgc3RhdGVzLmFp
bWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZE1zKCkpOworICBFWFBF
Q1RfRVEoNTAwMCwKKyAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0TmVh
ck1heEluY3JlYXNlUmF0ZUJwc1BlclNlY29uZCgpKTsKKyAgRVhQRUNUX0VRKDQwMDAsIHN0YXRl
cy5haW1kX3JhdGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKS5tcygpKTsK
IH0KIAogVEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBNaW5QZXJpb2RBZnRlckxhcmdlQml0cmF0
ZURlY3JlYXNlU21vb3RoaW5nRXhwKSB7CkBAIC0xOTIsOCArMjAzLDcgQEAgVEVTVChBaW1kUmF0
ZUNvbnRyb2xUZXN0LCBNaW5QZXJpb2RBZnRlckxhcmdlQml0cmF0ZURlY3JlYXNlU21vb3RoaW5n
RXhwKSB7CiAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscyhr
U21vb3RoaW5nRXhwRmllbGRUcmlhbCk7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVD
b250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0luaXRpYWxCaXRyYXRlID0gMTEwMDAw
OwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAgICAga0luaXRp
YWxCaXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7
CisgIFNldEVzdGltYXRlKHN0YXRlcywga0luaXRpYWxCaXRyYXRlKTsKICAgc3RhdGVzLnNpbXVs
YXRlZF9jbG9jay0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwKTsKICAgLy8gTWFrZSBzdWNo
IGEgbGFyZ2UgZHJvcCBpbiBiaXRyYXRlIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgbmV0d29y
awogICAvLyBkZWdyYWRhdGlvbi4KQEAgLTIwMSwyMCArMjExLDE5IEBAIFRFU1QoQWltZFJhdGVD
b250cm9sVGVzdCwgTWluUGVyaW9kQWZ0ZXJMYXJnZUJpdHJhdGVEZWNyZWFzZVNtb290aGluZ0V4
cCkgewogICBVcGRhdGVSYXRlQ29udHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdlOjprQndPdmVy
dXNpbmcsIGtBY2tlZEJpdHJhdGUsCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlcy5zaW11bGF0
ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKICAgRVhQRUNUX0VRKGtNaW5Cd2VQZXJp
b2RNc1Ntb290aGluZ0V4cCwKLSAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+
R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RNcygpKTsKKyAgICAgICAgICAgIHN0YXRlcy5haW1k
X3JhdGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKS5tcygpKTsKIH0KIAog
VEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBCYW5kd2lkdGhQZXJpb2RJc05vdEJlbG93TWluKSB7
CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAgIGNvbnN0
ZXhwciBpbnQga0luaXRpYWxCaXRyYXRlID0gMTAwMDA7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29u
dHJvbC0+U2V0RXN0aW1hdGUoCi0gICAgICBrSW5pdGlhbEJpdHJhdGUsIHN0YXRlcy5zaW11bGF0
ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgU2V0RXN0aW1hdGUoc3RhdGVzLCBr
SW5pdGlhbEJpdHJhdGUpOwogICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5BZHZhbmNlVGltZU1p
bGxpc2Vjb25kcygxMDApOwogICAvLyBNYWtlIGEgc21hbGwgKDEuNSBrYnBzKSBiaXRyYXRlIGRy
b3AgdG8gOC41IGticHMuCiAgIFVwZGF0ZVJhdGVDb250cm9sKHN0YXRlcywgQmFuZHdpZHRoVXNh
Z2U6OmtCd092ZXJ1c2luZywga0luaXRpYWxCaXRyYXRlIC0gMSwKICAgICAgICAgICAgICAgICAg
ICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwogICBFWFBF
Q1RfRVEoa01pbkJ3ZVBlcmlvZE1zTm9TbW9vdGhpbmdFeHAsCi0gICAgICAgICAgICBzdGF0ZXMu
YWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAg
ICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVy
aW9kKCkubXMoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgQmFuZHdpZHRoUGVy
aW9kSXNOb3RBYm92ZU1heFNtb290aGluZ0V4cCkgewpAQCAtMjIyLDI5ICsyMzEsMjcgQEAgVEVT
VChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBCYW5kd2lkdGhQZXJpb2RJc05vdEFib3ZlTWF4U21vb3Ro
aW5nRXhwKSB7CiAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFs
cyhrU21vb3RoaW5nRXhwRmllbGRUcmlhbCk7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJh
dGVDb250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0luaXRpYWxCaXRyYXRlID0gNTAw
MDAwMDA7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCi0gICAgICBr
SW5pdGlhbEJpdHJhdGUsIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25k
cygpKTsKKyAgU2V0RXN0aW1hdGUoc3RhdGVzLCBrSW5pdGlhbEJpdHJhdGUpOwogICBzdGF0ZXMu
c2ltdWxhdGVkX2Nsb2NrLT5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDApOwogICAvLyBNYWtl
IGEgbGFyZ2UgKDEwIE1icHMpIGJpdHJhdGUgZHJvcCB0byAxMCBrYnBzLgogICBjb25zdGV4cHIg
aW50IGtBY2tlZEJpdHJhdGUgPSA0MDAwMDAwMCAvIGtGcmFjdGlvbkFmdGVyT3ZlcnVzZTsKICAg
VXBkYXRlUmF0ZUNvbnRyb2woc3RhdGVzLCBCYW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5nLCBr
QWNrZWRCaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2Nr
LT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgIEVYUEVDVF9FUShrTWF4QndlUGVyaW9kTXMsCi0g
ICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRo
UGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4
cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9s
VGVzdCwgQmFuZHdpZHRoUGVyaW9kSXNOb3RBYm92ZU1heE5vU21vb3RoaW5nRXhwKSB7CiAgIGF1
dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBp
bnQga0luaXRpYWxCaXRyYXRlID0gMTAwMTAwMDA7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJv
bC0+U2V0RXN0aW1hdGUoCi0gICAgICBrSW5pdGlhbEJpdHJhdGUsIHN0YXRlcy5zaW11bGF0ZWRf
Y2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgU2V0RXN0aW1hdGUoc3RhdGVzLCBrSW5p
dGlhbEJpdHJhdGUpOwogICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5BZHZhbmNlVGltZU1pbGxp
c2Vjb25kcygxMDApOwogICAvLyBNYWtlIGEgbGFyZ2UgKDEwIE1icHMpIGJpdHJhdGUgZHJvcCB0
byAxMCBrYnBzLgogICBjb25zdGV4cHIgaW50IGtBY2tlZEJpdHJhdGUgPSAxMDAwMCAvIGtGcmFj
dGlvbkFmdGVyT3ZlcnVzZTsKICAgVXBkYXRlUmF0ZUNvbnRyb2woc3RhdGVzLCBCYW5kd2lkdGhV
c2FnZTo6a0J3T3ZlcnVzaW5nLCBrQWNrZWRCaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICBz
dGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgIEVYUEVDVF9F
UShrTWF4QndlUGVyaW9kTXMsCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wt
PkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWlt
ZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAK
IFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgU2VuZGluZ1JhdGVCb3VuZGVkV2hlblRocm91Z2hw
dXROb3RFc3RpbWF0ZWQpIHsKQEAgLTI2NSw3ICsyNzIsNyBAQCBURVNUKEFpbWRSYXRlQ29udHJv
bFRlc3QsIFNlbmRpbmdSYXRlQm91bmRlZFdoZW5UaHJvdWdocHV0Tm90RXN0aW1hdGVkKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlz
ZWNvbmRzKCkpOwogICAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPkFkdmFuY2VUaW1lTWlsbGlz
ZWNvbmRzKDEwMCk7CiAgIH0KLSAgRVhQRUNUX0xFKHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+
TGF0ZXN0RXN0aW1hdGUoKSwKKyAgRVhQRUNUX0xFKHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+
TGF0ZXN0RXN0aW1hdGUoKS5icHMoKSwKICAgICAgICAgICAgIGtJbml0aWFsQml0cmF0ZUJwcyAq
IDEuNSArIDEwMDAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYndlX2Rl
ZmluZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9id2VfZGVmaW5lcy5jYwppbmRleCA2Y2JlNDY4
MzQ4OTY3NzE4NjNhMzhhMDczZDVkMTkwYzU0NWIzYjNjLi45MWYzY2Q0MDUwYjc4ZjBmZjcyZDI0
NmYwNWZiMzgzMTdmNzRhMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9id2VfZGVm
aW5lcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9id2VfZGVmaW5lcy5jYwpAQCAtMzQsOCAr
MzQsOCBAQCBEYXRhUmF0ZSBHZXRNaW5CaXRyYXRlKCkgewogCiBSYXRlQ29udHJvbElucHV0OjpS
YXRlQ29udHJvbElucHV0KAogICAgIEJhbmR3aWR0aFVzYWdlIGJ3X3N0YXRlLAotICAgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiYgZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzKQotICAg
IDogYndfc3RhdGUoYndfc3RhdGUpLCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMoZXN0aW1hdGVk
X3Rocm91Z2hwdXRfYnBzKSB7fQorICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiYg
ZXN0aW1hdGVkX3Rocm91Z2hwdXQpCisgICAgOiBid19zdGF0ZShid19zdGF0ZSksIGVzdGltYXRl
ZF90aHJvdWdocHV0KGVzdGltYXRlZF90aHJvdWdocHV0KSB7fQogCiBSYXRlQ29udHJvbElucHV0
Ojp+UmF0ZUNvbnRyb2xJbnB1dCgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9l
c3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVk
ZS9id2VfZGVmaW5lcy5oCmluZGV4IGQ5MTg1ZGU5OWNhZGIwZjBjNDQzNDU4NmNlNjQ3NjhiM2Y4
YmZkMWMuLjUyMjNhNmI0MjRiMWEwMDU3ZWVhZWNkMmFjYzU1YTFhNDFmNDc4YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5k
ZWYgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1JfSU5DTFVERV9CV0VfREVGSU5FU19I
XwogI2RlZmluZSBNT0RVTEVTX1JFTU9URV9CSVRSQVRFX0VTVElNQVRPUl9JTkNMVURFX0JXRV9E
RUZJTkVTX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMv
b3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9yYXRlLmgiCiAKQEAgLTQ1LDE1
ICs0NywxMyBAQCBlbnVtIGNsYXNzIEJhbmR3aWR0aFVzYWdlIHsKIAogZW51bSBSYXRlQ29udHJv
bFN0YXRlIHsga1JjSG9sZCwga1JjSW5jcmVhc2UsIGtSY0RlY3JlYXNlIH07CiAKLWVudW0gUmF0
ZUNvbnRyb2xSZWdpb24geyBrUmNOZWFyTWF4LCBrUmNBYm92ZU1heCwga1JjTWF4VW5rbm93biB9
OwotCiBzdHJ1Y3QgUmF0ZUNvbnRyb2xJbnB1dCB7CiAgIFJhdGVDb250cm9sSW5wdXQoQmFuZHdp
ZHRoVXNhZ2UgYndfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgYWJzbDo6b3B0aW9u
YWw8dWludDMyX3Q+JiBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpOworICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiYgZXN0aW1hdGVkX3Rocm91Z2hwdXQp
OwogICB+UmF0ZUNvbnRyb2xJbnB1dCgpOwogCiAgIEJhbmR3aWR0aFVzYWdlIGJ3X3N0YXRlOwot
ICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzOworICBh
YnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gZXN0aW1hdGVkX3Rocm91Z2hwdXQ7CiB9OwogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbnRlcl9h
cnJpdmFsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW50ZXJfYXJyaXZhbC5jYwppbmRleCAzYTBm
NTc5MDUyZjkwZjRkOTA0OTljNTE2OTQxNzE4ZmE3NDBkYmNkLi5iOGU2ODNiODlhNmYyZWZjMmYz
OTU4MDM5NGMxMzYzMDlkZDY3NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbnRl
cl9hcnJpdmFsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2ludGVyX2Fycml2YWwuY2MKQEAg
LTEwLDEwICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci9pbnRlcl9hcnJpdmFsLmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
Y2Fzc2VydD4KIAotI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVz
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXNfcHVibGlj
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0b3IuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvci9vdmVydXNlX2RldGVjdG9yLmNjCmluZGV4IDc3NmNhNDJhNTZmZjIyMDMy
NjJiMDE0OWE2Mjk1OGUyYjc0MWMxZTYuLmYzZGJlMWU5OTg4Mjk1ODAwNDdkOTUxNTEzY2RkNjcz
ZDliOTNjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0b3Iu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9kZXRlY3Rvci5jYwpAQCAtMTIsMTUg
KzEyLDEyIEBACiAKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNs
dWRlIDxzdGRsaWIuaD4KLQogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdHJpbmc+
CiAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3
ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Iv
dGVzdC9id2VfdGVzdF9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNz
L3NhZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRf
dHJpYWwuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9kZXRlY3Rv
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
ZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9kZXRlY3Rvci5oCmluZGV4IGYzMjJjMzA0
OTYwOTdmYzE1YjYzMDI4MzUxYWRlNmUwZWZkN2YyODMuLjYxZDFjM2Y3MDdlMzIwNmExMzlkZmYz
M2UwNzQyMTYwMTM2OWM0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2Vf
ZGV0ZWN0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2RldGVjdG9yLmgKQEAg
LTEwLDkgKzEwLDggQEAKICNpZm5kZWYgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1Jf
T1ZFUlVTRV9ERVRFQ1RPUl9IXwogI2RlZmluZSBNT0RVTEVTX1JFTU9URV9CSVRSQVRFX0VTVElN
QVRPUl9PVkVSVVNFX0RFVEVDVE9SX0hfCiAKLSNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHN0
ZGludC5oPgogCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3
ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGltYXRvci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJh
dGVfZXN0aW1hdG9yL292ZXJ1c2VfZXN0aW1hdG9yLmNjCmluZGV4IDA5ZGU1YzZlN2MxYzYyNzlj
ZWJkMTM1ZGIxYzQxY2U0NzVjOGRkNjYuLjIwNmNlYmE4NGMyNDY4ZTZmODM1OWI2YjkwMDRlOTYy
ZjBhYjViNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZXN0aW1hdG9y
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZXN0aW1hdG9yLmNjCkBAIC0xMiw5
ICsxMiw3IEBACiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5j
bHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRl
L2J3ZV9kZWZpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2Vz
dGltYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9lc3RpbWF0b3IuaAppbmRleCA0
YzkyNDkzOGFhMGI4NjRjMDgxODhjNjQ2NGFmZjUyOGQyNmY1YTRkLi4zZDdiZDE2YmU0N2U3Mzc5
OTIzMDQwZGM1YTg2ODU5MmZmNzYxNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9v
dmVydXNlX2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZXN0aW1h
dG9yLmgKQEAgLTEwLDYgKzEwLDcgQEAKICNpZm5kZWYgTU9EVUxFU19SRU1PVEVfQklUUkFURV9F
U1RJTUFUT1JfT1ZFUlVTRV9FU1RJTUFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19SRU1PVEVfQklU
UkFURV9FU1RJTUFUT1JfT1ZFUlVTRV9FU1RJTUFUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPGRlcXVlPgogCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJ
TlQoYnVpbGQvaW5jbHVkZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9i
aXRyYXRlX2VzdGltYXRvcl9hYnNfc2VuZF90aW1lLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yX2Fic19zZW5kX3RpbWUuY2MKaW5kZXggYTdjZmU0YzkwYWNj
NmJiMGYwMGIwYTdhMjQyYzkzZTg5NmJkMmY3NS4uMWFkMzVjN2JmMGRiNzQxYmQ2YTcyNTNmNjg1
OGE3ZmEyOGRhYmI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVtb3RlX2JpdHJh
dGVfZXN0aW1hdG9yX2Fic19zZW5kX3RpbWUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yX2Fic19zZW5kX3RpbWUuY2MKQEAgLTIyLDYgKzIyLDE2IEBA
CiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7CithYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gT3B0aW9u
YWxSYXRlRnJvbU9wdGlvbmFsQnBzKAorICAgIGFic2w6Om9wdGlvbmFsPGludD4gYml0cmF0ZV9i
cHMpIHsKKyAgaWYgKGJpdHJhdGVfYnBzKSB7CisgICAgcmV0dXJuIERhdGFSYXRlOjpicHMoKmJp
dHJhdGVfYnBzKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQor
fQorfSAgLy8gbmFtZXNwYWNlCiAKIGVudW0gewogICBrVGltZXN0YW1wR3JvdXBMZW5ndGhNcyA9
IDUsCkBAIC0xODgsNyArMTk4LDggQEAgUmVtb3RlQml0cmF0ZUVzdGltYXRvckFic1NlbmRUaW1l
OjpQcm9jZXNzQ2x1c3RlcnMoaW50NjRfdCBub3dfbXMpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiBicHMuIE1lYW4gc2VuZCBkZWx0YTogIiA8PCBiZXN0X2l0LT5zZW5kX21lYW5fbXMK
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBtcywgbWVhbiByZWN2IGRlbHRhOiAiIDw8IGJl
c3RfaXQtPnJlY3ZfbWVhbl9tcwogICAgICAgICAgICAgICAgICAgICAgICA8PCAiIG1zLCBudW0g
cHJvYmVzOiAiIDw8IGJlc3RfaXQtPmNvdW50OwotICAgICAgcmVtb3RlX3JhdGVfLlNldEVzdGlt
YXRlKHByb2JlX2JpdHJhdGVfYnBzLCBub3dfbXMpOworICAgICAgcmVtb3RlX3JhdGVfLlNldEVz
dGltYXRlKERhdGFSYXRlOjpicHMocHJvYmVfYml0cmF0ZV9icHMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRpbWVzdGFtcDo6bXMobm93X21zKSk7CiAgICAgICByZXR1cm4gUHJv
YmVSZXN1bHQ6OmtCaXRyYXRlVXBkYXRlZDsKICAgICB9CiAgIH0KQEAgLTIwNSw3ICsyMTYsNyBA
QCBib29sIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGltZTo6SXNCaXRyYXRlSW1wcm92
aW5nKAogICBib29sIGluaXRpYWxfcHJvYmUgPSAhcmVtb3RlX3JhdGVfLlZhbGlkRXN0aW1hdGUo
KSAmJiBuZXdfYml0cmF0ZV9icHMgPiAwOwogICBib29sIGJpdHJhdGVfYWJvdmVfZXN0aW1hdGUg
PQogICAgICAgcmVtb3RlX3JhdGVfLlZhbGlkRXN0aW1hdGUoKSAmJgotICAgICAgbmV3X2JpdHJh
dGVfYnBzID4gc3RhdGljX2Nhc3Q8aW50PihyZW1vdGVfcmF0ZV8uTGF0ZXN0RXN0aW1hdGUoKSk7
CisgICAgICBuZXdfYml0cmF0ZV9icHMgPiByZW1vdGVfcmF0ZV8uTGF0ZXN0RXN0aW1hdGUoKS5i
cHM8aW50PigpOwogICByZXR1cm4gaW5pdGlhbF9wcm9iZSB8fCBiaXRyYXRlX2Fib3ZlX2VzdGlt
YXRlOwogfQogCkBAIC0zMTYsMTMgKzMyNywxNCBAQCB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0
b3JBYnNTZW5kVGltZTo6SW5jb21pbmdQYWNrZXRJbmZvKAogICAgICAgLy8gQ2hlY2sgaWYgaXQn
cyB0aW1lIGZvciBhIHBlcmlvZGljIHVwZGF0ZSBvciBpZiB3ZSBzaG91bGQgdXBkYXRlIGJlY2F1
c2UKICAgICAgIC8vIG9mIGFuIG92ZXItdXNlLgogICAgICAgaWYgKGxhc3RfdXBkYXRlX21zXyA9
PSAtMSB8fAotICAgICAgICAgIG5vd19tcyAtIGxhc3RfdXBkYXRlX21zXyA+IHJlbW90ZV9yYXRl
Xy5HZXRGZWVkYmFja0ludGVydmFsKCkpIHsKKyAgICAgICAgICBub3dfbXMgLSBsYXN0X3VwZGF0
ZV9tc18gPiByZW1vdGVfcmF0ZV8uR2V0RmVlZGJhY2tJbnRlcnZhbCgpLm1zKCkpIHsKICAgICAg
ICAgdXBkYXRlX2VzdGltYXRlID0gdHJ1ZTsKICAgICAgIH0gZWxzZSBpZiAoZGV0ZWN0b3JfLlN0
YXRlKCkgPT0gQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZykgewogICAgICAgICBhYnNsOjpv
cHRpb25hbDx1aW50MzJfdD4gaW5jb21pbmdfcmF0ZSA9CiAgICAgICAgICAgICBpbmNvbWluZ19i
aXRyYXRlXy5SYXRlKGFycml2YWxfdGltZV9tcyk7CiAgICAgICAgIGlmIChpbmNvbWluZ19yYXRl
ICYmCi0gICAgICAgICAgICByZW1vdGVfcmF0ZV8uVGltZVRvUmVkdWNlRnVydGhlcihub3dfbXMs
ICppbmNvbWluZ19yYXRlKSkgeworICAgICAgICAgICAgcmVtb3RlX3JhdGVfLlRpbWVUb1JlZHVj
ZUZ1cnRoZXIoVGltZXN0YW1wOjptcyhub3dfbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGF0YVJhdGU6OmJwcygqaW5jb21pbmdfcmF0ZSkpKSB7CiAg
ICAgICAgICAgdXBkYXRlX2VzdGltYXRlID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgfQpAQCAt
MzMyLDkgKzM0NCwxMSBAQCB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGltZTo6
SW5jb21pbmdQYWNrZXRJbmZvKAogICAgICAgLy8gVGhlIGZpcnN0IG92ZXJ1c2Ugc2hvdWxkIGlt
bWVkaWF0ZWx5IHRyaWdnZXIgYSBuZXcgZXN0aW1hdGUuCiAgICAgICAvLyBXZSBhbHNvIGhhdmUg
dG8gdXBkYXRlIHRoZSBlc3RpbWF0ZSBpbW1lZGlhdGVseSBpZiB3ZSBhcmUgb3ZlcnVzaW5nCiAg
ICAgICAvLyBhbmQgdGhlIHRhcmdldCBiaXRyYXRlIGlzIHRvbyBoaWdoIGNvbXBhcmVkIHRvIHdo
YXQgd2UgYXJlIHJlY2VpdmluZy4KLSAgICAgIGNvbnN0IFJhdGVDb250cm9sSW5wdXQgaW5wdXQo
ZGV0ZWN0b3JfLlN0YXRlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
Y29taW5nX2JpdHJhdGVfLlJhdGUoYXJyaXZhbF90aW1lX21zKSk7Ci0gICAgICB0YXJnZXRfYml0
cmF0ZV9icHMgPSByZW1vdGVfcmF0ZV8uVXBkYXRlKCZpbnB1dCwgbm93X21zKTsKKyAgICAgIGNv
bnN0IFJhdGVDb250cm9sSW5wdXQgaW5wdXQoCisgICAgICAgICAgZGV0ZWN0b3JfLlN0YXRlKCks
CisgICAgICAgICAgT3B0aW9uYWxSYXRlRnJvbU9wdGlvbmFsQnBzKGluY29taW5nX2JpdHJhdGVf
LlJhdGUoYXJyaXZhbF90aW1lX21zKSkpOworICAgICAgdGFyZ2V0X2JpdHJhdGVfYnBzID0KKyAg
ICAgICAgICByZW1vdGVfcmF0ZV8uVXBkYXRlKCZpbnB1dCwgVGltZXN0YW1wOjptcyhub3dfbXMp
KS5icHM8dWludDMyX3Q+KCk7CiAgICAgICB1cGRhdGVfZXN0aW1hdGUgPSByZW1vdGVfcmF0ZV8u
VmFsaWRFc3RpbWF0ZSgpOwogICAgICAgc3NyY3MgPSBLZXlzKHNzcmNzXyk7CiAgICAgfQpAQCAt
Mzc0LDcgKzM4OCw3IEBAIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvckFic1NlbmRUaW1lOjpU
aW1lb3V0U3RyZWFtcyhpbnQ2NF90IG5vd19tcykgewogdm9pZCBSZW1vdGVCaXRyYXRlRXN0aW1h
dG9yQWJzU2VuZFRpbWU6Ok9uUnR0VXBkYXRlKGludDY0X3QgYXZnX3J0dF9tcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG1heF9y
dHRfbXMpIHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF8pOwotICByZW1vdGVfcmF0ZV8u
U2V0UnR0KGF2Z19ydHRfbXMpOworICByZW1vdGVfcmF0ZV8uU2V0UnR0KFRpbWVEZWx0YTo6bXMo
YXZnX3J0dF9tcykpOwogfQogCiB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGlt
ZTo6UmVtb3ZlU3RyZWFtKHVpbnQzMl90IHNzcmMpIHsKQEAgLTM5OSw3ICs0MTMsNyBAQCBib29s
IFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGltZTo6TGF0ZXN0RXN0aW1hdGUoCiAgIGlm
IChzc3Jjc18uZW1wdHkoKSkgewogICAgICpiaXRyYXRlX2JwcyA9IDA7CiAgIH0gZWxzZSB7Ci0g
ICAgKmJpdHJhdGVfYnBzID0gcmVtb3RlX3JhdGVfLkxhdGVzdEVzdGltYXRlKCk7CisgICAgKmJp
dHJhdGVfYnBzID0gcmVtb3RlX3JhdGVfLkxhdGVzdEVzdGltYXRlKCkuYnBzPHVpbnQzMl90Pigp
OwogICB9CiAgIHJldHVybiB0cnVlOwogfQpAQCAtNDA4LDYgKzQyMiw2IEBAIHZvaWQgUmVtb3Rl
Qml0cmF0ZUVzdGltYXRvckFic1NlbmRUaW1lOjpTZXRNaW5CaXRyYXRlKGludCBtaW5fYml0cmF0
ZV9icHMpIHsKICAgLy8gQ2FsbGVkIGZyb20gYm90aCB0aGUgY29uZmlndXJhdGlvbiB0aHJlYWQg
YW5kIHRoZSBuZXR3b3JrIHRocmVhZC4gU2hvdWxkbid0CiAgIC8vIGJlIGNhbGxlZCBmcm9tIHRo
ZSBuZXR3b3JrIHRocmVhZCBpbiB0aGUgZnV0dXJlLgogICBydGM6OkNyaXRTY29wZSBsb2NrKCZj
cml0Xyk7Ci0gIHJlbW90ZV9yYXRlXy5TZXRNaW5CaXRyYXRlKG1pbl9iaXRyYXRlX2Jwcyk7Cisg
IHJlbW90ZV9yYXRlXy5TZXRNaW5CaXRyYXRlKERhdGFSYXRlOjpicHMobWluX2JpdHJhdGVfYnBz
KSk7CiB9CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmNjCmluZGV4
IDNkNzkxZjc4NDg3ZDliNGRhODc3YjBkY2VhMDFkNWU5MWY1YTY5NjQuLmEyNjcwNTE5NDRiMTBm
MTliOGExMGRlZGQ1MjJlYjdiNzIzZTlkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmNjCkBAIC0x
MCwxNyArMTAsMzMgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmgiCiAKKyNpbmNsdWRl
IDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNp
bmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgi
ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbnRlcl9hcnJpdmFsLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9kZXRlY3Rvci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZXN0aW1h
dG9yLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
bG9nZ2luZy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAj
aW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKK25hbWVzcGFjZSB7CithYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gT3B0aW9uYWxS
YXRlRnJvbU9wdGlvbmFsQnBzKAorICAgIGFic2w6Om9wdGlvbmFsPGludD4gYml0cmF0ZV9icHMp
IHsKKyAgaWYgKGJpdHJhdGVfYnBzKSB7CisgICAgcmV0dXJuIERhdGFSYXRlOjpicHMoKmJpdHJh
dGVfYnBzKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorfQor
fSAgLy8gbmFtZXNwYWNlCiAKIGVudW0geyBrVGltZXN0YW1wR3JvdXBMZW5ndGhNcyA9IDUgfTsK
IHN0YXRpYyBjb25zdCBkb3VibGUga1RpbWVzdGFtcFRvTXMgPSAxLjAgLyA5MC4wOwpAQCAtMTI3
LDcgKzE0Myw4IEBAIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvclNpbmdsZVN0cmVhbTo6SW5j
b21pbmdQYWNrZXQoCiAgICAgICAgIGluY29taW5nX2JpdHJhdGVfLlJhdGUobm93X21zKTsKICAg
ICBpZiAoaW5jb21pbmdfYml0cmF0ZV9icHMgJiYKICAgICAgICAgKHByaW9yX3N0YXRlICE9IEJh
bmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmcgfHwKLSAgICAgICAgIEdldFJlbW90ZVJhdGUoKS0+
VGltZVRvUmVkdWNlRnVydGhlcihub3dfbXMsICppbmNvbWluZ19iaXRyYXRlX2JwcykpKSB7Cisg
ICAgICAgICBHZXRSZW1vdGVSYXRlKCktPlRpbWVUb1JlZHVjZUZ1cnRoZXIoCisgICAgICAgICAg
ICAgVGltZXN0YW1wOjptcyhub3dfbXMpLCBEYXRhUmF0ZTo6YnBzKCppbmNvbWluZ19iaXRyYXRl
X2JwcykpKSkgewogICAgICAgLy8gVGhlIGZpcnN0IG92ZXJ1c2Ugc2hvdWxkIGltbWVkaWF0ZWx5
IHRyaWdnZXIgYSBuZXcgZXN0aW1hdGUuCiAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gdXBkYXRl
IHRoZSBlc3RpbWF0ZSBpbW1lZGlhdGVseSBpZiB3ZSBhcmUgb3ZlcnVzaW5nCiAgICAgICAvLyBh
bmQgdGhlIHRhcmdldCBiaXRyYXRlIGlzIHRvbyBoaWdoIGNvbXBhcmVkIHRvIHdoYXQgd2UgYXJl
IHJlY2VpdmluZy4KQEAgLTE4MSwxMCArMTk4LDEyIEBAIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGlt
YXRvclNpbmdsZVN0cmVhbTo6VXBkYXRlRXN0aW1hdGUoaW50NjRfdCBub3dfbXMpIHsKICAgfQog
ICBBaW1kUmF0ZUNvbnRyb2wqIHJlbW90ZV9yYXRlID0gR2V0UmVtb3RlUmF0ZSgpOwogCi0gIGNv
bnN0IFJhdGVDb250cm9sSW5wdXQgaW5wdXQoYndfc3RhdGUsIGluY29taW5nX2JpdHJhdGVfLlJh
dGUobm93X21zKSk7Ci0gIHVpbnQzMl90IHRhcmdldF9iaXRyYXRlID0gcmVtb3RlX3JhdGUtPlVw
ZGF0ZSgmaW5wdXQsIG5vd19tcyk7CisgIGNvbnN0IFJhdGVDb250cm9sSW5wdXQgaW5wdXQoCisg
ICAgICBid19zdGF0ZSwgT3B0aW9uYWxSYXRlRnJvbU9wdGlvbmFsQnBzKGluY29taW5nX2JpdHJh
dGVfLlJhdGUobm93X21zKSkpOworICB1aW50MzJfdCB0YXJnZXRfYml0cmF0ZSA9CisgICAgICBy
ZW1vdGVfcmF0ZS0+VXBkYXRlKCZpbnB1dCwgVGltZXN0YW1wOjptcyhub3dfbXMpKS5icHM8dWlu
dDMyX3Q+KCk7CiAgIGlmIChyZW1vdGVfcmF0ZS0+VmFsaWRFc3RpbWF0ZSgpKSB7Ci0gICAgcHJv
Y2Vzc19pbnRlcnZhbF9tc18gPSByZW1vdGVfcmF0ZS0+R2V0RmVlZGJhY2tJbnRlcnZhbCgpOwor
ICAgIHByb2Nlc3NfaW50ZXJ2YWxfbXNfID0gcmVtb3RlX3JhdGUtPkdldEZlZWRiYWNrSW50ZXJ2
YWwoKS5tcygpOwogICAgIFJUQ19EQ0hFQ0tfR1QocHJvY2Vzc19pbnRlcnZhbF9tc18sIDApOwog
ICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzc3JjczsKICAgICBHZXRTc3Jjcygmc3NyY3MpOwpA
QCAtMTk2LDcgKzIxNSw3IEBAIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvclNpbmdsZVN0cmVh
bTo6VXBkYXRlRXN0aW1hdGUoaW50NjRfdCBub3dfbXMpIHsKIHZvaWQgUmVtb3RlQml0cmF0ZUVz
dGltYXRvclNpbmdsZVN0cmVhbTo6T25SdHRVcGRhdGUoaW50NjRfdCBhdmdfcnR0X21zLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IG1heF9ydHRfbXMpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRfc2VjdF8pOwotICBHZXRS
ZW1vdGVSYXRlKCktPlNldFJ0dChhdmdfcnR0X21zKTsKKyAgR2V0UmVtb3RlUmF0ZSgpLT5TZXRS
dHQoVGltZURlbHRhOjptcyhhdmdfcnR0X21zKSk7CiB9CiAKIHZvaWQgUmVtb3RlQml0cmF0ZUVz
dGltYXRvclNpbmdsZVN0cmVhbTo6UmVtb3ZlU3RyZWFtKHVuc2lnbmVkIGludCBzc3JjKSB7CkBA
IC0yMjAsNyArMjM5LDcgQEAgYm9vbCBSZW1vdGVCaXRyYXRlRXN0aW1hdG9yU2luZ2xlU3RyZWFt
OjpMYXRlc3RFc3RpbWF0ZSgKICAgaWYgKHNzcmNzLT5lbXB0eSgpKQogICAgICpiaXRyYXRlX2Jw
cyA9IDA7CiAgIGVsc2UKLSAgICAqYml0cmF0ZV9icHMgPSByZW1vdGVfcmF0ZV8tPkxhdGVzdEVz
dGltYXRlKCk7CisgICAgKmJpdHJhdGVfYnBzID0gcmVtb3RlX3JhdGVfLT5MYXRlc3RFc3RpbWF0
ZSgpLmJwczx1aW50MzJfdD4oKTsKICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI0Myw3ICsyNjIs
NyBAQCBBaW1kUmF0ZUNvbnRyb2wqIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJlYW06
OkdldFJlbW90ZVJhdGUoKSB7CiAKIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvclNpbmdsZVN0
cmVhbTo6U2V0TWluQml0cmF0ZShpbnQgbWluX2JpdHJhdGVfYnBzKSB7CiAgIHJ0Yzo6Q3JpdFNj
b3BlIGNzKCZjcml0X3NlY3RfKTsKLSAgcmVtb3RlX3JhdGVfLT5TZXRNaW5CaXRyYXRlKG1pbl9i
aXRyYXRlX2Jwcyk7CisgIHJlbW90ZV9yYXRlXy0+U2V0TWluQml0cmF0ZShEYXRhUmF0ZTo6YnBz
KG1pbl9iaXRyYXRlX2JwcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0
cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yX3Npbmds
ZV9zdHJlYW0uaAppbmRleCAxOGI0MzVhZmZkZDA5NDkzMWEzMzFmMmY0ZmNmMWYzMmRlYzZmNjFl
Li42MzhmMGQ2ODAyN2FiYzU1MDhjMWM4YTAxYTY5ZDZkZmMwMGZmMDRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9i
aXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVf
c3RyZWFtLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19SRU1PVEVfQklUUkFU
RV9FU1RJTUFUT1JfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX1NJTkdMRV9TVFJFQU1fSF8KICNk
ZWZpbmUgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1JfUkVNT1RFX0JJVFJBVEVfRVNU
SU1BVE9SX1NJTkdMRV9TVFJFQU1fSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
dmVjdG9yPgpAQCAtMjAsOSArMjIsMTMgQEAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rv
cm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvcmF0ZV9zdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFk
X2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBDbG9jazsKK3N0
cnVjdCBSVFBIZWFkZXI7CisKIGNsYXNzIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJl
YW0gOiBwdWJsaWMgUmVtb3RlQml0cmF0ZUVzdGltYXRvciB7CiAgcHVibGljOgogICBSZW1vdGVC
aXRyYXRlRXN0aW1hdG9yU2luZ2xlU3RyZWFtKFJlbW90ZUJpdHJhdGVPYnNlcnZlciogb2JzZXJ2
ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3Jfc2luZ2xlX3N0cmVhbV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9i
aXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtX3VuaXR0ZXN0LmNjCmluZGV4IDEyMGRiMTNj
N2YyODU0ZDc2MzEzNDI0ZWY5YWJiNGM3YjU3MGRmNTcuLjJhNGVmMDY0NzM3M2I2NjUxODZkYjVm
NzgzMWMzNTRkMGRjYTc2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9i
aXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtX3VuaXR0ZXN0
LmNjCkBAIC01NSw3ICs1NSw3IEBAIFRFU1RfRihSZW1vdGVCaXRyYXRlRXN0aW1hdG9yU2luZ2xl
VGVzdCwgQ2FwYWNpdHlEcm9wVGhyZWVTdHJlYW1zV3JhcCkgewogfQogCiBURVNUX0YoUmVtb3Rl
Qml0cmF0ZUVzdGltYXRvclNpbmdsZVRlc3QsIENhcGFjaXR5RHJvcFRoaXJ0ZWVuU3RyZWFtc1dy
YXApIHsKLSAgQ2FwYWNpdHlEcm9wVGVzdEhlbHBlcigxMywgdHJ1ZSwgNzMzLCAwKTsKKyAgQ2Fw
YWNpdHlEcm9wVGVzdEhlbHBlcigxMywgdHJ1ZSwgNTY3LCAwKTsKIH0KIAogVEVTVF9GKFJlbW90
ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVUZXN0LCBDYXBhY2l0eURyb3BOaW5ldGVlblN0cmVhbXNX
cmFwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90ZXN0L2VzdGltYXRvcnMvc2Vu
ZF9zaWRlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9lc3RpbWF0b3JzL3NlbmRfc2lkZS5j
YwppbmRleCBhNDQ0NDM3NTgwNWI0YmU2ZTUyNjg4ZDRkYmJlN2RjMGVhYTI0NmM0Li4yODlmZjcw
ZWUyMTU3ZWNlMzE1ZTBhMjMxMWMwOTRiNTdlNzA0MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvci90ZXN0L2VzdGltYXRvcnMvc2VuZF9zaWRlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yL3Rlc3QvZXN0aW1hdG9ycy9zZW5kX3NpZGUuY2MKQEAgLTMyLDYgKzMyLDcgQEAgU2VuZFNp
ZGVCd2VTZW5kZXI6OlNlbmRTaWRlQndlU2VuZGVyKGludCBrYnBzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXZlbnRfbG9nXykpLAogICAg
ICAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXygKICAgICAgICAgICBhYnNsOjptYWtl
X3VuaXF1ZTxBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yPigpKSwKKyAgICAgIHByb2JlX2Jp
dHJhdGVfZXN0aW1hdG9yXyhuZXcgUHJvYmVCaXRyYXRlRXN0aW1hdG9yKG51bGxwdHIpKSwKICAg
ICAgIGJ3ZV8obmV3IERlbGF5QmFzZWRCd2UobnVsbHB0cikpLAogICAgICAgZmVlZGJhY2tfb2Jz
ZXJ2ZXJfKGJpdHJhdGVfY29udHJvbGxlcl8uZ2V0KCkpLAogICAgICAgY2xvY2tfKGNsb2NrKSwK
QEAgLTQ0LDcgKzQ1LDcgQEAgU2VuZFNpZGVCd2VTZW5kZXI6OlNlbmRTaWRlQndlU2VuZGVyKGlu
dCBrYnBzLAogICBiaXRyYXRlX2NvbnRyb2xsZXJfLT5TZXRTdGFydEJpdHJhdGUoMTAwMCAqIGti
cHMpOwogICBiaXRyYXRlX2NvbnRyb2xsZXJfLT5TZXRNaW5NYXhCaXRyYXRlKDEwMDAgKiBrTWlu
Qml0cmF0ZUticHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAw
MCAqIGtNYXhCaXRyYXRlS2Jwcyk7Ci0gIGJ3ZV8tPlNldE1pbkJpdHJhdGUoMTAwMCAqIGtNaW5C
aXRyYXRlS2Jwcyk7CisgIGJ3ZV8tPlNldE1pbkJpdHJhdGUoRGF0YVJhdGU6OmticHMoa01pbkJp
dHJhdGVLYnBzKSk7CiB9CiAKIFNlbmRTaWRlQndlU2VuZGVyOjp+U2VuZFNpZGVCd2VTZW5kZXIo
KSB7fQpAQCAtNzIsMTYgKzczLDIyIEBAIHZvaWQgU2VuZFNpZGVCd2VTZW5kZXI6OkdpdmVGZWVk
YmFjayhjb25zdCBGZWVkYmFja1BhY2tldCYgZmVlZGJhY2spIHsKIAogICBpbnQ2NF90IHJ0dF9t
cyA9CiAgICAgICBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpIC0gZmVlZGJhY2subGF0ZXN0
X3NlbmRfdGltZV9tcygpOwotICBid2VfLT5PblJ0dFVwZGF0ZShydHRfbXMpOworICBid2VfLT5P
blJ0dFVwZGF0ZShUaW1lRGVsdGE6Om1zKHJ0dF9tcykpOwogICBCV0VfVEVTVF9MT0dHSU5HX1BM
T1QoMSwgIlJUVCIsIGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCksIHJ0dF9tcyk7CiAKICAg
c3RkOjpzb3J0KHBhY2tldF9mZWVkYmFja192ZWN0b3IuYmVnaW4oKSwgcGFja2V0X2ZlZWRiYWNr
X3ZlY3Rvci5lbmQoKSwKICAgICAgICAgICAgIFBhY2tldEZlZWRiYWNrQ29tcGFyYXRvcigpKTsK
ICAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFj
a1ZlY3RvcigKICAgICAgIHBhY2tldF9mZWVkYmFja192ZWN0b3IpOworICBmb3IgKFBhY2tldEZl
ZWRiYWNrJiBwYWNrZXQgOiBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yKSB7CisgICAgaWYgKHBhY2tl
dC5zZW5kX3RpbWVfbXMgIT0gUGFja2V0RmVlZGJhY2s6OmtOb1NlbmRUaW1lICYmCisgICAgICAg
IHBhY2tldC5wYWNpbmdfaW5mby5wcm9iZV9jbHVzdGVyX2lkICE9IFBhY2VkUGFja2V0SW5mbzo6
a05vdEFQcm9iZSkKKyAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy0+SGFuZGxlUHJvYmVB
bmRFc3RpbWF0ZUJpdHJhdGUocGFja2V0KTsKKyAgfQogICBEZWxheUJhc2VkQndlOjpSZXN1bHQg
cmVzdWx0ID0gYndlXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKLSAgICAgIHBhY2tl
dF9mZWVkYmFja192ZWN0b3IsIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJh
dGVfYnBzKCksCi0gICAgICBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgICAgIHBh
Y2tldF9mZWVkYmFja192ZWN0b3IsIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJp
dHJhdGUoKSwKKyAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy0+RmV0Y2hBbmRSZXNldExh
c3RFc3RpbWF0ZWRCaXRyYXRlKCksCisgICAgICBUaW1lc3RhbXA6Om1zKGNsb2NrXy0+VGltZUlu
TWlsbGlzZWNvbmRzKCkpKTsKICAgaWYgKHJlc3VsdC51cGRhdGVkKQogICAgIGJpdHJhdGVfY29u
dHJvbGxlcl8tPk9uRGVsYXlCYXNlZEJ3ZVJlc3VsdChyZXN1bHQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9i
aXRyYXRlX2VzdGltYXRvci90ZXN0L2VzdGltYXRvcnMvc2VuZF9zaWRlLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvci90ZXN0L2VzdGltYXRvcnMvc2VuZF9zaWRlLmgKaW5kZXggNmU5MzljMWYwMzU3MDZh
ZGRjZDM1ZjIwNjM3MTgxZWI3Nzk0ZTUwYi4uNWI0NWU2NmZiY2E3NTRiODkzODQ3ZDQ4NTFjNjQ4
MzMwZTQ3ZGY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9lc3RpbWF0b3Jz
L3NlbmRfc2lkZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3QvZXN0aW1hdG9ycy9zZW5k
X3NpZGUuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBTZW5kU2lkZUJ3ZVNlbmRlciA6IHB1Ymxp
YyBCd2VTZW5kZXIsIHB1YmxpYyBSZW1vdGVCaXRyYXRlT2JzZXJ2ZXIgewogIHByb3RlY3RlZDoK
ICAgc3RkOjp1bmlxdWVfcHRyPEJpdHJhdGVDb250cm9sbGVyPiBiaXRyYXRlX2NvbnRyb2xsZXJf
OwogICBzdGQ6OnVuaXF1ZV9wdHI8QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcj4gYWNrbm93
bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXzsKKyAgc3RkOjp1bmlxdWVfcHRyPFByb2JlQml0cmF0
ZUVzdGltYXRvcj4gcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfOwogICBzdGQ6OnVuaXF1ZV9wdHI8
RGVsYXlCYXNlZEJ3ZT4gYndlXzsKICAgUnRjcEJhbmR3aWR0aE9ic2VydmVyKiBmZWVkYmFja19v
YnNlcnZlcl87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rvb2xzL2J3ZV9ydHAu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci90b29scy9id2VfcnRwLmNjCmluZGV4IDAyMzBkYjE3ZGMw
MWMyZGRjMTU5Mjg3ZTIzMjA1MTlhMmE3Yjk1MGMuLmQ3Y2RiNTRkOTI4NzlhNDJjODdhYTdiZDZm
NWYyMDcyY2U4ZmFkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rvb2xzL2J3ZV9y
dHAuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdG9vbHMvYndlX3J0cC5jYwpAQCAtMjQsMjgg
KzI0LDMwIEBACiAKIG5hbWVzcGFjZSBmbGFncyB7CiAKLURFRklORV9zdHJpbmcoZXh0ZW5zaW9u
X3R5cGUsCi0gICAgICAgICAgICAgICJhYnMiLAotICAgICAgICAgICAgICAiRXh0ZW5zaW9uIHR5
cGUsIGVpdGhlciBhYnMgZm9yIGFic29sdXRlIHNlbmQgdGltZSBvciB0c29mZnNldCAiCi0gICAg
ICAgICAgICAgICJmb3IgdGltZXN0YW1wIG9mZnNldC4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KAorICAgIGV4dGVuc2lvbl90eXBlLAorICAgICJhYnMiLAorICAgICJFeHRlbnNpb24gdHlwZSwg
ZWl0aGVyIGFicyBmb3IgYWJzb2x1dGUgc2VuZCB0aW1lIG9yIHRzb2Zmc2V0ICIKKyAgICAiZm9y
IHRpbWVzdGFtcCBvZmZzZXQuIik7CiBzdGQ6OnN0cmluZyBFeHRlbnNpb25UeXBlKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfZXh0ZW5zaW9uX3R5cGUpOwogfQog
Ci1ERUZJTkVfaW50KGV4dGVuc2lvbl9pZCwgMywgIkV4dGVuc2lvbiBpZC4iKTsKK1dFQlJUQ19E
RUZJTkVfaW50KGV4dGVuc2lvbl9pZCwgMywgIkV4dGVuc2lvbiBpZC4iKTsKIGludCBFeHRlbnNp
b25JZCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19leHRlbnNpb25faWQpOwog
fQogCi1ERUZJTkVfc3RyaW5nKGlucHV0X2ZpbGUsICIiLCAiSW5wdXQgZmlsZS4iKTsKK1dFQlJU
Q19ERUZJTkVfc3RyaW5nKGlucHV0X2ZpbGUsICIiLCAiSW5wdXQgZmlsZS4iKTsKIHN0ZDo6c3Ry
aW5nIElucHV0RmlsZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFH
X2lucHV0X2ZpbGUpOwogfQogCi1ERUZJTkVfc3RyaW5nKHNzcmNfZmlsdGVyLAotICAgICAgICAg
ICAgICAiIiwKLSAgICAgICAgICAgICAgIkNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIFNTUkNzIGlu
IGhleGFkZWNpbWFsIHdoaWNoIGFyZSB0byBiZSAiCi0gICAgICAgICAgICAgICJ1c2VkIGFzIGlu
cHV0IHRvIHRoZSBCV0UgKG9ubHkgYXBwbGljYWJsZSB0byBwY2FwIGZpbGVzKS4iKTsKK1dFQlJU
Q19ERUZJTkVfc3RyaW5nKAorICAgIHNzcmNfZmlsdGVyLAorICAgICIiLAorICAgICJDb21tYS1z
ZXBhcmF0ZWQgbGlzdCBvZiBTU1JDcyBpbiBoZXhhZGVjaW1hbCB3aGljaCBhcmUgdG8gYmUgIgor
ICAgICJ1c2VkIGFzIGlucHV0IHRvIHRoZSBCV0UgKG9ubHkgYXBwbGljYWJsZSB0byBwY2FwIGZp
bGVzKS4iKTsKIHN0ZDo6c2V0PHVpbnQzMl90PiBTc3JjRmlsdGVyKCkgewogICBzdGQ6OnN0cmlu
ZyBzc3JjX2ZpbHRlcl9zdHJpbmcgPSBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zc3Jj
X2ZpbHRlcik7CiAgIGlmIChzc3JjX2ZpbHRlcl9zdHJpbmcuZW1wdHkoKSkKQEAgLTY0LDcgKzY2
LDcgQEAgc3RkOjpzZXQ8dWludDMyX3Q+IFNzcmNGaWx0ZXIoKSB7CiAgIHJldHVybiBzc3JjczsK
IH0KIAotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CitX
RUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CiB9
ICAvLyBuYW1lc3BhY2UgZmxhZ3MKIAogYm9vbCBQYXJzZUFyZ3NBbmRTZXR1cEVzdGltYXRvcihp
bnQgYXJnYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL0JVSUxELmduCmluZGV4IDRiMzcy
OTA3NjUyNzNlZmM2OTNjMWExNGFhN2ExMDU2OTIzMzcxZmYuLmVkYjk4MWJjNjdlZGMxNzJkMWFk
ODU4YjU5NDM1YTQwYTBiNjU4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvQlVJTEQuZ24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9CVUlM
RC5nbgpAQCAtMTEsNiArMTEsNyBAQCBpbXBvcnQoIi4uLy4uL3dlYnJ0Yy5nbmkiKQogcnRjX3Nv
dXJjZV9zZXQoInJ0cF9ydGNwX2Zvcm1hdCIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAg
cHVibGljID0gWworICAgICJpbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oIiwKICAgICAiaW5jbHVk
ZS9ydHBfY3ZvLmgiLAogICAgICJpbmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5oIiwK
ICAgICAiaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiLApAQCAtODUsNiArODYsNyBAQCBydGNf
c291cmNlX3NldCgicnRwX3J0Y3BfZm9ybWF0IikgewogCiAgIGRlcHMgPSBbCiAgICAgIi4uOm1v
ZHVsZV9hcGkiLAorICAgICIuLjptb2R1bGVfYXBpX3B1YmxpYyIsCiAgICAgIi4uLy4uOndlYnJ0
Y19jb21tb24iLAogICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uL2FwaTps
aWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKQEAgLTk2LDYgKzk4LDcgQEAgcnRjX3NvdXJj
ZV9zZXQoInJ0cF9ydGNwX2Zvcm1hdCIpIHsKICAgICAiLi4vLi4vcnRjX2Jhc2U6ZGVwcmVjYXRp
b24iLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4u
L3N5c3RlbV93cmFwcGVycyIsCisgICAgIi4uL3ZpZGVvX2NvZGluZzpjb2RlY19nbG9iYWxzX2hl
YWRlcnMiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25h
bCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOnZhcmlhbnQiLAog
ICBdCkBAIC0xODYsNyArMTg5LDEwIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRwX3J0Y3AiKSB7
CiAKICAgZGVwcyA9IFsKICAgICAiOnJ0cF9ydGNwX2Zvcm1hdCIsCisgICAgIjpydHBfdmlkZW9f
aGVhZGVyIiwKICAgICAiLi46bW9kdWxlX2FwaSIsCisgICAgIi4uOm1vZHVsZV9hcGlfcHVibGlj
IiwKKyAgICAiLi46bW9kdWxlX2ZlY19hcGkiLAogICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwK
ICAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGk6bGliamluZ2xlX3Bl
ZXJjb25uZWN0aW9uX2FwaSIsCkBAIC0yMTcsOSArMjIzLDEyIEBAIHJ0Y19zdGF0aWNfbGlicmFy
eSgicnRwX3J0Y3AiKSB7CiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKICAg
ICAiLi4vYXVkaW9fY29kaW5nOmF1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uIiwKICAgICAiLi4vcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yIiwKKyAgICAiLi4vdmlkZW9fY29kaW5nOmNvZGVjX2dsb2Jh
bHNfaGVhZGVycyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
cjppbmxpbmVkX3ZlY3RvciIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21l
bW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOnZhcmlhbnQiLAogICBdCiB9CiAKQEAg
LTI2NCw2ICsyNzMsNyBAQCBydGNfc291cmNlX3NldCgicnRwX3ZpZGVvX2hlYWRlciIpIHsKICAg
ICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAiLi4vLi4vbW9kdWxlcy92aWRl
b19jb2Rpbmc6Y29kZWNfZ2xvYmFsc19oZWFkZXJzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyOmlubGluZWRfdmVjdG9yIiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlczp2YXJpYW50IiwKICAgXQogfQpAQCAtMzIyLDYgKzMzMiw3IEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpydHBfcnRjcCIsCiAgICAgICAiLi4v
Li4vdGVzdDpmaWxldXRpbHMiLAogICAgICAgIi4uLy4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAg
ICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAg
ICBdCiAgIH0gICMgdGVzdF9wYWNrZXRfbWFza3NfbWV0cmljcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL2ZsZXhmZWNfcmVjZWl2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3JlY2VpdmVyLmgKaW5k
ZXggZjAwNjExMWUxMTdiNjJmYjNkZTk5NGFlMGMyMDg5YTJhZTg2OTI1OC4uZjBlZDU3NmM4NzU2
MDc5M2MzOWIzNzkzMzM4Y2IwNGI4OGVkMTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL2ZsZXhm
ZWNfcmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZlY19yZWNlaXZlci5oCkBAIC0xMSwx
NiArMTEsMjAgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX0ZMRVhGRUNfUkVD
RUlWRVJfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX0ZMRVhGRUNfUkVDRUlW
RVJfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3VscGZlY19yZWNlaXZlci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyLmgiCi0jaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRf
YW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNzIENsb2NrOworCiBj
bGFzcyBGbGV4ZmVjUmVjZWl2ZXIgewogIHB1YmxpYzoKICAgRmxleGZlY1JlY2VpdmVyKHVpbnQz
Ml90IHNzcmMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZlY19zZW5kZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9mbGV4ZmVjX3NlbmRlci5oCmluZGV4IDEyMjc3ZTEyOGY1NTU0OTE5ZmYyOTc2M2QyZjNh
ZGY4MzY3N2Q4NTAuLmFjZWUxMTc2NGMwYWFmMTVhYjY3MjM0YmIwMjg4MzUzZmVjNGY1NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3NlbmRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4
ZmVjX3NlbmRlci5oCkBAIC0xOCwxNyArMTgsMTUgQEAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmll
dy5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9p
bmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvZmxleGZlY19zZW5kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2lu
Y2x1ZGUvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmgiCi0jaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2dlbmVyYXRvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3JhbmRvbS5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBDbG9jazsKIGNsYXNzIFJ0cFBhY2tldFRvU2Vu
ZDsKIAogLy8gTm90ZSB0aGF0IHRoaXMgY2xhc3MgaXMgbm90IHRocmVhZCBzYWZlLCBhbmQgdGh1
cyByZXF1aXJlcyBleHRlcm5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlY2VpdmVfc3RhdGlz
dGljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9pbmNsdWRlL3JlY2VpdmVfc3RhdGlzdGljcy5oCmluZGV4IDI0ZDZmODEyMzdh
NWI2ZWVmYmQyNjQ4MDY2NTBmMDE0M2NiOTk0YjQuLmMyOTllYTY5ZDY2ZWMwM2JkNDgxZGM3OWU4
NmM1Mzk3MzQ1NDFkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZWNlaXZlX3N0YXRpc3RpY3Mu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcmVjZWl2ZV9zdGF0aXN0aWNzLmgKQEAgLTEyLDExICsxMiwxMyBA
QAogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX0lOQ0xVREVfUkVDRUlWRV9TVEFUSVNUSUNTX0hf
CiAKICNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4K
IAogI2luY2x1ZGUgImNhbGwvcnRwX3BhY2tldF9zaW5rX2ludGVyZmFjZS5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvaW5jbHVkZS9tb2R1bGUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9k
dWxlX2NvbW1vbl90eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9y
dGNwX3N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRw
X3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
cGFja2V0L3JlcG9ydF9ibG9jay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgi
CkBAIC01NCwxNCArNTYsMTQgQEAgY2xhc3MgUmVjZWl2ZVN0YXRpc3RpY3MgOiBwdWJsaWMgUmVj
ZWl2ZVN0YXRpc3RpY3NQcm92aWRlciwKICBwdWJsaWM6CiAgIH5SZWNlaXZlU3RhdGlzdGljcygp
IG92ZXJyaWRlID0gZGVmYXVsdDsKIAotICBzdGF0aWMgUmVjZWl2ZVN0YXRpc3RpY3MqIENyZWF0
ZShDbG9jayogY2xvY2spOworICBzdGF0aWMgUmVjZWl2ZVN0YXRpc3RpY3MqIENyZWF0ZShDbG9j
ayogY2xvY2spIHsKKyAgICByZXR1cm4gQ3JlYXRlKGNsb2NrLCBudWxscHRyLCBudWxscHRyKS5y
ZWxlYXNlKCk7CisgIH0KIAotICAvLyBVcGRhdGVzIHRoZSByZWNlaXZlIHN0YXRpc3RpY3Mgd2l0
aCB0aGlzIHBhY2tldC4KLSAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODAxNik6IERlcHJlY2F0
ZWQuIERlbGV0ZSBhcyBzb29uIGFzCi0gIC8vIGRvd25zdHJlYW0gY29kZSBpcyB1cGRhdGVkIHRv
IHVzZSBPblJ0cFBhY2tldC4KLSAgUlRDX0RFUFJFQ0FURUQKLSAgdmlydHVhbCB2b2lkIEluY29t
aW5nUGFja2V0KGNvbnN0IFJUUEhlYWRlciYgcnRwX2hlYWRlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBwYWNrZXRfbGVuZ3RoKSA9IDA7CisgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UmVjZWl2ZVN0YXRpc3RpY3M+IENyZWF0ZSgKKyAgICAgIENsb2NrKiBjbG9jaywK
KyAgICAgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIHJ0Y3BfY2FsbGJhY2ssCisgICAgICBTdHJl
YW1EYXRhQ291bnRlcnNDYWxsYmFjayogcnRwX2NhbGxiYWNrKTsKIAogICAvLyBJbmNyZW1lbnQg
Y291bnRlciBmb3IgbnVtYmVyIG9mIEZFQyBwYWNrZXRzIHJlY2VpdmVkLgogICB2aXJ0dWFsIHZv
aWQgRmVjUGFja2V0UmVjZWl2ZWQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgPSAw
OwpAQCAtNzQsMTQgKzc2LDYgQEAgY2xhc3MgUmVjZWl2ZVN0YXRpc3RpY3MgOiBwdWJsaWMgUmVj
ZWl2ZVN0YXRpc3RpY3NQcm92aWRlciwKICAgLy8gRGV0ZWN0IHJldHJhbnNtaXNzaW9ucywgZW5h
YmxpbmcgdXBkYXRlcyBvZiB0aGUgcmV0cmFuc21pdHRlZCBjb3VudGVycy4gVGhlCiAgIC8vIGRl
ZmF1bHQgaXMgZmFsc2UuCiAgIHZpcnR1YWwgdm9pZCBFbmFibGVSZXRyYW5zbWl0RGV0ZWN0aW9u
KHVpbnQzMl90IHNzcmMsIGJvb2wgZW5hYmxlKSA9IDA7Ci0KLSAgLy8gQ2FsbGVkIG9uIG5ldyBS
VENQIHN0YXRzIGNyZWF0aW9uLgotICB2aXJ0dWFsIHZvaWQgUmVnaXN0ZXJSdGNwU3RhdGlzdGlj
c0NhbGxiYWNrKAotICAgICAgUnRjcFN0YXRpc3RpY3NDYWxsYmFjayogY2FsbGJhY2spID0gMDsK
LQotICAvLyBDYWxsZWQgb24gbmV3IFJUUCBzdGF0cyBjcmVhdGlvbi4KLSAgdmlydHVhbCB2b2lk
IFJlZ2lzdGVyUnRwU3RhdGlzdGljc0NhbGxiYWNrKAotICAgICAgU3RyZWFtRGF0YUNvdW50ZXJz
Q2FsbGJhY2sqIGNhbGxiYWNrKSA9IDA7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL2luY2x1ZGUvcmVtb3RlX250cF90aW1lX2VzdGltYXRvci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3IuaAppbmRleCA1MTk1ZThhYjdlMzE2YzllZGVm
NzQxMGNkYWE2NWIxZGYxYjA0YjFhLi5lNmQyNjljNGRkYWJiMWI5YjUzYmE4OGUzNWVmNzY3NTQy
ZDUzODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcmVtb3RlX250cF90aW1lX2VzdGltYXRvci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3AvaW5jbHVkZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yLmgKQEAgLTExLDcgKzEx
LDcgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JFTU9URV9OVFBfVElNRV9F
U1RJTUFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JFTU9URV9OVFBf
VElNRV9FU1RJTUFUT1JfSF8KIAotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRpbnQu
aD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfbWVkaWFuX2ZpbHRlci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUxZDU3NmRlMmQ4NmZhOGU4NTIyNmJiZmI1OWY1YTZiMzg3NGJmNjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRjcF9zdGF0aXN0aWNzLmgKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9JTkNM
VURFX1JUQ1BfU1RBVElTVElDU19IXworI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX0lOQ0xVREVf
UlRDUF9TVEFUSVNUSUNTX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworbmFtZXNwYWNlIHdl
YnJ0YyB7CisKKy8vIFN0YXRpc3RpY3MgZm9yIGFuIFJUQ1AgY2hhbm5lbAorc3RydWN0IFJ0Y3BT
dGF0aXN0aWNzIHsKKyAgdWludDhfdCBmcmFjdGlvbl9sb3N0ID0gMDsKKyAgaW50MzJfdCBwYWNr
ZXRzX2xvc3QgPSAwOyAgLy8gRGVmaW5lZCBhcyBhIDI0IGJpdCBzaWduZWQgaW50ZWdlciBpbiBS
VENQCisgIHVpbnQzMl90IGV4dGVuZGVkX2hpZ2hlc3Rfc2VxdWVuY2VfbnVtYmVyID0gMDsKKyAg
dWludDMyX3Qgaml0dGVyID0gMDsKK307CisKK2NsYXNzIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sg
eworIHB1YmxpYzoKKyAgdmlydHVhbCB+UnRjcFN0YXRpc3RpY3NDYWxsYmFjaygpIHt9CisKKyAg
dmlydHVhbCB2b2lkIFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFJ0Y3BTdGF0aXN0aWNzJiBzdGF0
aXN0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYykg
PSAwOworICB2aXJ0dWFsIHZvaWQgQ05hbWVDaGFuZ2VkKGNvbnN0IGNoYXIqIGNuYW1lLCB1aW50
MzJfdCBzc3JjKSA9IDA7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisjZW5kaWYgIC8v
IE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9SVENQX1NUQVRJU1RJQ1NfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVh
ZGVyX2V4dGVuc2lvbl9tYXAuaAppbmRleCBiOGYyN2ExMzEyNDUzMmU1YjQyZWVjNjI2MDYzZTli
MzFjOThjODJkLi4zOTFjNWJlYWE1YTYyYmNiMDc5ZDE5MTIzMWE2MjViYTJhODMyYWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVm
IE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9SVFBfSEVBREVSX0VYVEVOU0lPTl9NQVBfSF8KICNk
ZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JUUF9IRUFERVJfRVhURU5TSU9OX01BUF9I
XwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAi
YXBpL2FycmF5X3ZpZXcuaCIKQEAgLTI2LDYgKzI3LDcgQEAgY2xhc3MgUnRwSGVhZGVyRXh0ZW5z
aW9uTWFwIHsKICAgc3RhdGljIGNvbnN0ZXhwciBpbnQga0ludmFsaWRJZCA9IDA7CiAKICAgUnRw
SGVhZGVyRXh0ZW5zaW9uTWFwKCk7CisgIGV4cGxpY2l0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcChi
b29sIGV4dG1hcF9hbGxvd19taXhlZCk7CiAgIGV4cGxpY2l0IFJ0cEhlYWRlckV4dGVuc2lvbk1h
cChydGM6OkFycmF5Vmlldzxjb25zdCBSdHBFeHRlbnNpb24+IGV4dGVuc2lvbnMpOwogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBFeHRlbnNpb24+CkBAIC01MywxOCArNTUsMTkgQEAgY2xhc3MgUnRw
SGVhZGVyRXh0ZW5zaW9uTWFwIHsKICAgfQogICBpbnQzMl90IERlcmVnaXN0ZXIoUlRQRXh0ZW5z
aW9uVHlwZSB0eXBlKTsKIAotICBib29sIElzTWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVk
KCkgY29uc3QgewotICAgIHJldHVybiBtaXhlZF9vbmVfdHdvX2J5dGVfaGVhZGVyX3N1cHBvcnRl
ZF87Ci0gIH0KLSAgdm9pZCBTZXRNaXhlZE9uZVR3b0J5dGVIZWFkZXJTdXBwb3J0ZWQoYm9vbCBz
dXBwb3J0ZWQpIHsKLSAgICBtaXhlZF9vbmVfdHdvX2J5dGVfaGVhZGVyX3N1cHBvcnRlZF8gPSBz
dXBwb3J0ZWQ7CisgIC8vIENvcnJlc3BvbmRzIHRvIHRoZSBTRFAgYXR0cmlidXRlIGV4dG1hcC1h
bGxvdy1taXhlZCwgc2VlIFJGQzgyODUuCisgIC8vIFNldCB0byB0cnVlIGlmIGl0J3MgYWxsb3dl
ZCB0byBtaXggb25lLSBhbmQgdHdvLWJ5dGUgUlRQIGhlYWRlciBleHRlbnNpb25zCisgIC8vIGlu
IHRoZSBzYW1lIHN0cmVhbS4KKyAgYm9vbCBFeHRtYXBBbGxvd01peGVkKCkgY29uc3QgeyByZXR1
cm4gZXh0bWFwX2FsbG93X21peGVkXzsgfQorICB2b2lkIFNldEV4dG1hcEFsbG93TWl4ZWQoYm9v
bCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICBleHRtYXBfYWxsb3dfbWl4ZWRfID0gZXh0bWFw
X2FsbG93X21peGVkOwogICB9CiAKICBwcml2YXRlOgogICBib29sIFJlZ2lzdGVyKGludCBpZCwg
UlRQRXh0ZW5zaW9uVHlwZSB0eXBlLCBjb25zdCBjaGFyKiB1cmkpOwogCiAgIHVpbnQ4X3QgaWRz
X1trUnRwRXh0ZW5zaW9uTnVtYmVyT2ZFeHRlbnNpb25zXTsKLSAgYm9vbCBtaXhlZF9vbmVfdHdv
X2J5dGVfaGVhZGVyX3N1cHBvcnRlZF87CisgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkXzsKIH07
CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVh
ZGVyX3BhcnNlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfcGFyc2VyLmgKaW5kZXggMmQ4NGZj
MWU2OTAzOTIwZjk5N2RmNDRiNmRmMDg4NjNkYmYwNTdkOC4uODVlYWI5MGE3M2FjZDUyMTQ3YTE3
Y2JlNTk0NDQ1YzMyNjM1MjM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfcGFy
c2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfcGFyc2VyLmgKQEAgLTEwLDYgKzEwLDcg
QEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JUUF9IRUFERVJfUEFSU0VSX0hf
CiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9SVFBfSEVBREVSX1BBUlNFUl9IXwog
CisjaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAg
LTM2LDggKzM3LDE0IEBAIGNsYXNzIFJ0cEhlYWRlclBhcnNlciB7CiAgIHZpcnR1YWwgYm9vbCBS
ZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihSVFBFeHRlbnNpb25UeXBlIHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGlkKSA9IDA7CiAKKyAg
Ly8gUmVnaXN0ZXJzIGFuIFJUUCBoZWFkZXIgZXh0ZW5zaW9uLgorICB2aXJ0dWFsIGJvb2wgUmVn
aXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUnRwRXh0ZW5zaW9uIGV4dGVuc2lvbikgPSAwOworCiAg
IC8vIERlLXJlZ2lzdGVycyBhbiBSVFAgaGVhZGVyIGV4dGVuc2lvbi4KICAgdmlydHVhbCBib29s
IERlcmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlKSA9IDA7
CisKKyAgLy8gRGUtcmVnaXN0ZXJzIGFuIFJUUCBoZWFkZXIgZXh0ZW5zaW9uLgorICB2aXJ0dWFs
IGJvb2wgRGVyZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihSdHBFeHRlbnNpb24gZXh0ZW5zaW9u
KSA9IDA7CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogI2VuZGlmICAvLyBNT0RVTEVTX1JU
UF9SVENQX0lOQ0xVREVfUlRQX0hFQURFUl9QQVJTRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVk
ZS9ydHBfcnRjcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwLmgKaW5kZXggOWIyOWY3NjIyZTJmZjEz
NDIzMGNhMDU2YjFkOGE2NTU1M2Q2ZTJjNS4uZDEzNmE1ZTZlOWEzYmE3NjIzY2NiM2M0YzczMjEz
MTIxMjcxNGQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL3J0cF9ydGNwLmgKQEAgLTE4LDkgKzE4LDkgQEAKIAogI2luY2x1ZGUgImFic2wvdHlwZXMv
b3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9u
LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkK
ICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL2ZsZXhmZWNfc2VuZGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3JlY2VpdmVfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29u
c3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgiCkBAIC0y
OCw2ICsyOCw3IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gRm9yd2FyZCBkZWNsYXJhdGlv
bnMuCitjbGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsKIGNsYXNzIE92ZXJoZWFkT2JzZXJ2
ZXI7CiBjbGFzcyBSYXRlTGltaXRlcjsKIGNsYXNzIFJlY2VpdmVTdGF0aXN0aWNzUHJvdmlkZXI7
CkBAIC05MiwxMSArOTMsMjAgQEAgY2xhc3MgUnRwUnRjcCA6IHB1YmxpYyBNb2R1bGUsIHB1Ymxp
YyBSdGNwRmVlZGJhY2tTZW5kZXJJbnRlcmZhY2UgewogICAgIFJhdGVMaW1pdGVyKiByZXRyYW5z
bWlzc2lvbl9yYXRlX2xpbWl0ZXIgPSBudWxscHRyOwogICAgIE92ZXJoZWFkT2JzZXJ2ZXIqIG92
ZXJoZWFkX29ic2VydmVyID0gbnVsbHB0cjsKICAgICBSdHBLZWVwQWxpdmVDb25maWcga2VlcGFs
aXZlX2NvbmZpZzsKLSAgICBSdGNwSW50ZXJ2YWxDb25maWcgcnRjcF9pbnRlcnZhbF9jb25maWc7
CisKKyAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPSAwOwogCiAgICAgLy8gVXBkYXRl
IG5ldHdvcmsyIGluc3RlYWQgb2YgcGFjZXJfZXhpdCBmaWVsZCBvZiB2aWRlbyB0aW1pbmcgZXh0
ZW5zaW9uLgogICAgIGJvb2wgcG9wdWxhdGVfbmV0d29yazJfdGltZXN0YW1wID0gZmFsc2U7CiAK
KyAgICAvLyBFMkVFIEN1c3RvbSBWaWRlbyBGcmFtZSBFbmNyeXB0aW9uCisgICAgRnJhbWVFbmNy
eXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvciA9IG51bGxwdHI7CisgICAgLy8gUmVxdWly
ZSBhbGwgb3V0Z29pbmcgZnJhbWVzIHRvIGJlIGVuY3J5cHRlZCB3aXRoIGEgRnJhbWVFbmNyeXB0
b3IuCisgICAgYm9vbCByZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24gPSBmYWxzZTsKKworICAgIC8v
IENvcnJlc3BvbmRzIHRvIGV4dG1hcC1hbGxvdy1taXhlZCBpbiBTRFAgbmVnb3RpYXRpb24uCisg
ICAgYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQgPSBmYWxzZTsKKwogICAgcHJpdmF0ZToKICAgICBS
VENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKENvbmZpZ3VyYXRpb24pOwogICB9OwpAQCAtMTM2
LDYgKzE0Niw4IEBAIGNsYXNzIFJ0cFJ0Y3AgOiBwdWJsaWMgTW9kdWxlLCBwdWJsaWMgUnRjcEZl
ZWRiYWNrU2VuZGVySW50ZXJmYWNlIHsKICAgLy8gUmV0dXJucyAtMSBvbiBmYWlsdXJlIGVsc2Ug
MC4KICAgdmlydHVhbCBpbnQzMl90IERlUmVnaXN0ZXJTZW5kUGF5bG9hZChpbnQ4X3QgcGF5bG9h
ZF90eXBlKSA9IDA7CiAKKyAgdmlydHVhbCB2b2lkIFNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBl
eHRtYXBfYWxsb3dfbWl4ZWQpID0gMDsKKwogICAvLyAoRGUpcmVnaXN0ZXJzIFJUUCBoZWFkZXIg
ZXh0ZW5zaW9uIHR5cGUgYW5kIGlkLgogICAvLyBSZXR1cm5zIC0xIG9uIGZhaWx1cmUgZWxzZSAw
LgogICB2aXJ0dWFsIGludDMyX3QgUmVnaXN0ZXJTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4
dGVuc2lvblR5cGUgdHlwZSwKQEAgLTIxMyw2ICsyMjUsMTAgQEAgY2xhc3MgUnRwUnRjcCA6IHB1
YmxpYyBNb2R1bGUsIHB1YmxpYyBSdGNwRmVlZGJhY2tTZW5kZXJJbnRlcmZhY2UgewogICAvLyBS
ZXR1cm5zIGN1cnJlbnQgbWVkaWEgc2VuZGluZyBzdGF0dXMuCiAgIHZpcnR1YWwgYm9vbCBTZW5k
aW5nTWVkaWEoKSBjb25zdCA9IDA7CiAKKyAgLy8gSW5kaWNhdGUgdGhhdCB0aGUgcGFja2V0cyBz
ZW50IGJ5IHRoaXMgbW9kdWxlIHNob3VsZCBiZSBjb3VudGVkIHRvd2FyZHMgdGhlCisgIC8vIGJp
dHJhdGUgZXN0aW1hdGUgc2luY2UgdGhlIHN0cmVhbSBwYXJ0aWNpcGF0ZXMgaW4gdGhlIGJpdHJh
dGUgYWxsb2NhdGlvbi4KKyAgdmlydHVhbCB2b2lkIFNldEFzUGFydE9mQWxsb2NhdGlvbihib29s
IHBhcnRfb2ZfYWxsb2NhdGlvbikgPSAwOworCiAgIC8vIFJldHVybnMgY3VycmVudCBiaXRyYXRl
IGluIEtiaXQvcy4KICAgdmlydHVhbCB2b2lkIEJpdHJhdGVTZW50KHVpbnQzMl90KiB0b3RhbF9y
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QqIHZpZGVvX3JhdGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBf
cnRjcF9kZWZpbmVzLmNjCmluZGV4IGY4NmIyMzhiN2RhZWJlNjMyZjFmZTRkYWQyM2E0NDgzNDQ0
YThjOWMuLmQ3NDNmNTJmN2U2ZGYzZWEyNjgzMjEyMDBjMzM3NTg1MTZmMjllZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRj
cF9kZWZpbmVzLmNjCkBAIC05LDYgKzksMTQgQEAKICAqLwogCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0LmgiCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1
ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KKworI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CkBAIC01NCw0ICs2Miw4MCBAQCBQYXlsb2FkVW5pb246On5QYXlsb2FkVW5pb24oKSA9IGRlZmF1
bHQ7CiBQYXlsb2FkVW5pb24mIFBheWxvYWRVbmlvbjo6b3BlcmF0b3I9KGNvbnN0IFBheWxvYWRV
bmlvbiYpID0gZGVmYXVsdDsKIFBheWxvYWRVbmlvbiYgUGF5bG9hZFVuaW9uOjpvcGVyYXRvcj0o
UGF5bG9hZFVuaW9uJiYpID0gZGVmYXVsdDsKIAorUGFja2V0RmVlZGJhY2s6OlBhY2tldEZlZWRi
YWNrKGludDY0X3QgYXJyaXZhbF90aW1lX21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlcikKKyAgICA6IFBhY2tldEZlZWRiYWNrKC0xLAor
ICAgICAgICAgICAgICAgICAgICAgYXJyaXZhbF90aW1lX21zLAorICAgICAgICAgICAgICAgICAg
ICAga05vU2VuZFRpbWUsCisgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIsCisg
ICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAg
ICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICBQYWNlZFBhY2tldEluZm8oKSkg
e30KKworUGFja2V0RmVlZGJhY2s6OlBhY2tldEZlZWRiYWNrKGludDY0X3QgYXJyaXZhbF90aW1l
X21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qgc2VuZF90aW1lX21z
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZF9zaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFj
aW5nX2luZm8pCisgICAgOiBQYWNrZXRGZWVkYmFjaygtMSwKKyAgICAgICAgICAgICAgICAgICAg
IGFycml2YWxfdGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgIHNlbmRfdGltZV9tcywKKyAg
ICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAg
IHBheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAg
ICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgcGFjaW5nX2luZm8pIHt9CisKK1BhY2tldEZl
ZWRiYWNrOjpQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGNyZWF0aW9uX3RpbWVfbXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkX3NpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbG9jYWxfbmV0X2lkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9uZXRfaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbykKKyAg
ICA6IFBhY2tldEZlZWRiYWNrKGNyZWF0aW9uX3RpbWVfbXMsCisgICAgICAgICAgICAgICAgICAg
ICBrTm90UmVjZWl2ZWQsCisgICAgICAgICAgICAgICAgICAgICBrTm9TZW5kVGltZSwKKyAgICAg
ICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAgIHBh
eWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGxvY2FsX25ldF9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgIHJlbW90ZV9uZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICBwYWNpbmdf
aW5mbykge30KKworUGFja2V0RmVlZGJhY2s6OlBhY2tldEZlZWRiYWNrKGludDY0X3QgY3JlYXRp
b25fdGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGFycml2
YWxfdGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNlbmRf
dGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXF1ZW5j
ZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBheWxvYWRf
c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBsb2NhbF9uZXRf
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgcmVtb3RlX25ldF9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8m
IHBhY2luZ19pbmZvKQorICAgIDogY3JlYXRpb25fdGltZV9tcyhjcmVhdGlvbl90aW1lX21zKSwK
KyAgICAgIGFycml2YWxfdGltZV9tcyhhcnJpdmFsX3RpbWVfbXMpLAorICAgICAgc2VuZF90aW1l
X21zKHNlbmRfdGltZV9tcyksCisgICAgICBzZXF1ZW5jZV9udW1iZXIoc2VxdWVuY2VfbnVtYmVy
KSwKKyAgICAgIHBheWxvYWRfc2l6ZShwYXlsb2FkX3NpemUpLAorICAgICAgdW5hY2tub3dsZWRn
ZWRfZGF0YSgwKSwKKyAgICAgIGxvY2FsX25ldF9pZChsb2NhbF9uZXRfaWQpLAorICAgICAgcmVt
b3RlX25ldF9pZChyZW1vdGVfbmV0X2lkKSwKKyAgICAgIHBhY2luZ19pbmZvKHBhY2luZ19pbmZv
KSB7fQorCitQYWNrZXRGZWVkYmFjazo6UGFja2V0RmVlZGJhY2soY29uc3QgUGFja2V0RmVlZGJh
Y2smKSA9IGRlZmF1bHQ7CitQYWNrZXRGZWVkYmFjayYgUGFja2V0RmVlZGJhY2s6Om9wZXJhdG9y
PShjb25zdCBQYWNrZXRGZWVkYmFjayYpID0gZGVmYXVsdDsKK1BhY2tldEZlZWRiYWNrOjp+UGFj
a2V0RmVlZGJhY2soKSA9IGRlZmF1bHQ7CisKK2Jvb2wgUGFja2V0RmVlZGJhY2s6Om9wZXJhdG9y
PT0oY29uc3QgUGFja2V0RmVlZGJhY2smIHJocykgY29uc3QgeworICByZXR1cm4gYXJyaXZhbF90
aW1lX21zID09IHJocy5hcnJpdmFsX3RpbWVfbXMgJiYKKyAgICAgICAgIHNlbmRfdGltZV9tcyA9
PSByaHMuc2VuZF90aW1lX21zICYmCisgICAgICAgICBzZXF1ZW5jZV9udW1iZXIgPT0gcmhzLnNl
cXVlbmNlX251bWJlciAmJgorICAgICAgICAgcGF5bG9hZF9zaXplID09IHJocy5wYXlsb2FkX3Np
emUgJiYgcGFjaW5nX2luZm8gPT0gcmhzLnBhY2luZ19pbmZvOworfQorCit2b2lkIFJ0cFBhY2tl
dENvdW50ZXI6OkFkZFBhY2tldChjb25zdCBSdHBQYWNrZXQmIHBhY2tldCkgeworICArK3BhY2tl
dHM7CisgIGhlYWRlcl9ieXRlcyArPSBwYWNrZXQuaGVhZGVyc19zaXplKCk7CisgIHBhZGRpbmdf
Ynl0ZXMgKz0gcGFja2V0LnBhZGRpbmdfc2l6ZSgpOworICBwYXlsb2FkX2J5dGVzICs9IHBhY2tl
dC5wYXlsb2FkX3NpemUoKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZp
bmVzLmgKaW5kZXggNjUwM2I0ZWRjYzNhM2I4OGQ3ZmUwY2U2NTdiMDNlZjdiNzgwYWQ2Yy4uYWI0
ZmNhZWNjNzlhNDgxMDcxYmMxNjZkYzc5YTUyZmViMGE2MjU1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL3J0cF9ydGNwX2RlZmluZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5o
CkBAIC0yNywyOCArMjcsMjAgQEAKICNkZWZpbmUgSVBfUEFDS0VUX1NJWkUgMTUwMCAgLy8gd2Ug
YXNzdW1lIGV0aGVybmV0CiAKIG5hbWVzcGFjZSB3ZWJydGMgeworY2xhc3MgUnRwUGFja2V0Owog
bmFtZXNwYWNlIHJ0Y3AgewogY2xhc3MgVHJhbnNwb3J0RmVlZGJhY2s7CiB9CiAKIGNvbnN0IGlu
dCBrVmlkZW9QYXlsb2FkVHlwZUZyZXF1ZW5jeSA9IDkwMDAwOwotLy8gVE9ETyhzb2xlbmJlcmcp
OiBSVFAgdGltZSBzdGFtcCByYXRlIGZvciBSVENQIGlzIGZpeGVkIGF0IDhrLCB0aGlzIGlzIGxl
Z2FjeQotLy8gYW5kIHNob3VsZCBiZSBmaXhlZC4KLS8vIFNlZTogaHR0cHM6Ly9idWdzLmNocm9t
aXVtLm9yZy9wL3dlYnJ0Yy9pc3N1ZXMvZGV0YWlsP2lkPTY0NTgKKworLy8gVE9ETyhidWdzLndl
YnJ0Yy5vcmcvNjQ1OCk6IFJlbW92ZSB0aGlzIHdoZW4gYWxsIHRoZSBkZXBlbmRpbmcgcHJvamVj
dHMgYXJlCisvLyB1cGRhdGVkIHRvIGNvcnJlY3RseSBzZXQgcnRwIHJhdGUgZm9yIFJ0Y3BTZW5k
ZXIuCiBjb25zdCBpbnQga0JvZ3VzUnRwUmF0ZUZvckF1ZGlvUnRjcCA9IDgwMDA7CiAKIC8vIE1p
bmltdW0gUlRQIGhlYWRlciBzaXplIGluIGJ5dGVzLgogY29uc3QgdWludDhfdCBrUnRwSGVhZGVy
U2l6ZSA9IDEyOwogCi1zdHJ1Y3QgUnRjcEludGVydmFsQ29uZmlnIGZpbmFsIHsKLSAgUnRjcElu
dGVydmFsQ29uZmlnKCkgPSBkZWZhdWx0OwotICBSdGNwSW50ZXJ2YWxDb25maWcoaW50NjRfdCB2
aWRlb19pbnRlcnZhbF9tcywgaW50NjRfdCBhdWRpb19pbnRlcnZhbF9tcykKLSAgICAgIDogdmlk
ZW9faW50ZXJ2YWxfbXModmlkZW9faW50ZXJ2YWxfbXMpLAotICAgICAgICBhdWRpb19pbnRlcnZh
bF9tcyhhdWRpb19pbnRlcnZhbF9tcykge30KLSAgaW50NjRfdCB2aWRlb19pbnRlcnZhbF9tcyA9
IDEwMDA7Ci0gIGludDY0X3QgYXVkaW9faW50ZXJ2YWxfbXMgPSA1MDAwOwotfTsKLQogc3RydWN0
IEF1ZGlvUGF5bG9hZCB7CiAgIFNkcEF1ZGlvRm9ybWF0IGZvcm1hdDsKICAgdWludDMyX3QgcmF0
ZTsKQEAgLTExMiw2ICsxMDQsNyBAQCBlbnVtIFJUUEV4dGVuc2lvblR5cGUgOiBpbnQgewogICBr
UnRwRXh0ZW5zaW9uUmVwYWlyZWRSdHBTdHJlYW1JZCwKICAga1J0cEV4dGVuc2lvbk1pZCwKICAg
a1J0cEV4dGVuc2lvbkdlbmVyaWNGcmFtZURlc2NyaXB0b3IsCisgIGtSdHBFeHRlbnNpb25Db2xv
clNwYWNlLAogICBrUnRwRXh0ZW5zaW9uTnVtYmVyT2ZFeHRlbnNpb25zICAvLyBNdXN0IGJlIHRo
ZSBsYXN0IGVudGl0eSBpbiB0aGUgZW51bS4KIH07CiAKQEAgLTIyMiwxNSArMjE1LDYgQEAgc3Ry
dWN0IFJ0cFN0YXRlIHsKICAgYm9vbCBtZWRpYV9oYXNfYmVlbl9zZW50OwogfTsKIAotY2xhc3Mg
UnRwRGF0YSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5SdHBEYXRhKCkge30KLQotICB2aXJ0dWFs
IGludDMyX3QgT25SZWNlaXZlZFBheWxvYWREYXRhKGNvbnN0IHVpbnQ4X3QqIHBheWxvYWRfZGF0
YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9h
ZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YlJ0Y1JUUEhlYWRlciogcnRwX2hlYWRlcikgPSAwOwotfTsKLQogLy8gQ2FsbGJhY2sgaW50ZXJm
YWNlIGZvciBwYWNrZXRzIHJlY292ZXJlZCBieSBGbGV4RkVDIG9yIFVMUEZFQy4gSW4KIC8vIHRo
ZSBGbGV4RkVDIGNhc2UsIHRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgYWJsZSB0byBkZW11
bHRpcGxleAogLy8gdGhlIHJlY292ZXJlZCBSVFAgcGFja2V0cyBiYXNlZCBvbiBTU1JDLgpAQCAt
MjYzLDQ0ICsyNDcsMjAgQEAgY2xhc3MgUnRjcEJhbmR3aWR0aE9ic2VydmVyIHsKIH07CiAKIHN0
cnVjdCBQYWNrZXRGZWVkYmFjayB7Ci0gIFBhY2tldEZlZWRiYWNrKGludDY0X3QgYXJyaXZhbF90
aW1lX21zLCB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIpCi0gICAgICA6IFBhY2tldEZlZWRiYWNr
KC0xLAotICAgICAgICAgICAgICAgICAgICAgICBhcnJpdmFsX3RpbWVfbXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGtOb1NlbmRUaW1lLAotICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5j
ZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAg
ICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAg
IFBhY2VkUGFja2V0SW5mbygpKSB7fQorICBQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGFycml2YWxf
dGltZV9tcywgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyKTsKIAogICBQYWNrZXRGZWVkYmFjayhp
bnQ2NF90IGFycml2YWxfdGltZV9tcywKICAgICAgICAgICAgICAgICAgaW50NjRfdCBzZW5kX3Rp
bWVfbXMsCiAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwKICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgY29uc3Qg
UGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbykKLSAgICAgIDogUGFja2V0RmVlZGJhY2soLTEs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGFycml2YWxfdGltZV9tcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgc2VuZF90aW1lX21zLAotICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9u
dW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRfc2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgcGFjaW5nX2luZm8pIHt9CisgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFj
a2V0SW5mbyYgcGFjaW5nX2luZm8pOwogCiAgIFBhY2tldEZlZWRiYWNrKGludDY0X3QgY3JlYXRp
b25fdGltZV9tcywKICAgICAgICAgICAgICAgICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAog
ICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZF9zaXplLAogICAgICAgICAgICAgICAgICB1
aW50MTZfdCBsb2NhbF9uZXRfaWQsCiAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9u
ZXRfaWQsCi0gICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2lu
Zm8pCi0gICAgICA6IFBhY2tldEZlZWRiYWNrKGNyZWF0aW9uX3RpbWVfbXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGtOb3RSZWNlaXZlZCwKLSAgICAgICAgICAgICAgICAgICAgICAga05vU2Vu
ZFRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgcGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICBsb2Nh
bF9uZXRfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9uZXRfaWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgIHBhY2luZ19pbmZvKSB7fQorICAgICAgICAgICAgICAgICBjb25zdCBQ
YWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKTsKIAogICBQYWNrZXRGZWVkYmFjayhpbnQ2NF90
IGNyZWF0aW9uX3RpbWVfbXMsCiAgICAgICAgICAgICAgICAgIGludDY0X3QgYXJyaXZhbF90aW1l
X21zLApAQCAtMzA5LDE1ICsyNjksMTAgQEAgc3RydWN0IFBhY2tldEZlZWRiYWNrIHsKICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwKICAgICAgICAgICAgICAgICAgdWludDE2
X3QgbG9jYWxfbmV0X2lkLAogICAgICAgICAgICAgICAgICB1aW50MTZfdCByZW1vdGVfbmV0X2lk
LAotICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKQot
ICAgICAgOiBjcmVhdGlvbl90aW1lX21zKGNyZWF0aW9uX3RpbWVfbXMpLAotICAgICAgICBhcnJp
dmFsX3RpbWVfbXMoYXJyaXZhbF90aW1lX21zKSwKLSAgICAgICAgc2VuZF90aW1lX21zKHNlbmRf
dGltZV9tcyksCi0gICAgICAgIHNlcXVlbmNlX251bWJlcihzZXF1ZW5jZV9udW1iZXIpLAotICAg
ICAgICBwYXlsb2FkX3NpemUocGF5bG9hZF9zaXplKSwKLSAgICAgICAgbG9jYWxfbmV0X2lkKGxv
Y2FsX25ldF9pZCksCi0gICAgICAgIHJlbW90ZV9uZXRfaWQocmVtb3RlX25ldF9pZCksCi0gICAg
ICAgIHBhY2luZ19pbmZvKHBhY2luZ19pbmZvKSB7fQorICAgICAgICAgICAgICAgICBjb25zdCBQ
YWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKTsKKyAgUGFja2V0RmVlZGJhY2soY29uc3QgUGFj
a2V0RmVlZGJhY2smKTsKKyAgUGFja2V0RmVlZGJhY2smIG9wZXJhdG9yPShjb25zdCBQYWNrZXRG
ZWVkYmFjayYpOworICB+UGFja2V0RmVlZGJhY2soKTsKIAogICBzdGF0aWMgY29uc3RleHByIGlu
dCBrTm90QVByb2JlID0gLTE7CiAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBrTm90UmVjZWl2
ZWQgPSAtMTsKQEAgLTMyOCwxMiArMjgzLDcgQEAgc3RydWN0IFBhY2tldEZlZWRiYWNrIHsKICAg
Ly8gICAgICAgZm9yIGJvb2sta2VlcGluZywgYW5kIGlzIG9mIG5vIGludGVyZXN0IG91dHNpZGUg
dGhhdCBjbGFzcy4KICAgLy8gVE9ETyhwaGlsaXBlbCk6IFJlbW92ZSB8Y3JlYXRpb25fdGltZV9t
c3wgZnJvbSBQYWNrZXRGZWVkYmFjayB3aGVuIGNsZWFuaW5nCiAgIC8vICAgICAgICAgICAgICAg
ICB1cCBTZW5kVGltZUhpc3RvcnkuCi0gIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYWNrZXRGZWVk
YmFjayYgcmhzKSBjb25zdCB7Ci0gICAgcmV0dXJuIGFycml2YWxfdGltZV9tcyA9PSByaHMuYXJy
aXZhbF90aW1lX21zICYmCi0gICAgICAgICAgIHNlbmRfdGltZV9tcyA9PSByaHMuc2VuZF90aW1l
X21zICYmCi0gICAgICAgICAgIHNlcXVlbmNlX251bWJlciA9PSByaHMuc2VxdWVuY2VfbnVtYmVy
ICYmCi0gICAgICAgICAgIHBheWxvYWRfc2l6ZSA9PSByaHMucGF5bG9hZF9zaXplICYmIHBhY2lu
Z19pbmZvID09IHJocy5wYWNpbmdfaW5mbzsKLSAgfQorICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
UGFja2V0RmVlZGJhY2smIHJocykgY29uc3Q7CiAKICAgLy8gVGltZSBjb3JyZXNwb25kaW5nIHRv
IHdoZW4gdGhpcyBvYmplY3Qgd2FzIGNyZWF0ZWQuCiAgIGludDY0X3QgY3JlYXRpb25fdGltZV9t
czsKQEAgLTM1Miw2ICszMDIsOCBAQCBzdHJ1Y3QgUGFja2V0RmVlZGJhY2sgewogICBpbnQ2NF90
IGxvbmdfc2VxdWVuY2VfbnVtYmVyOwogICAvLyBTaXplIG9mIHRoZSBwYWNrZXQgZXhjbHVkaW5n
IFJUUCBoZWFkZXJzLgogICBzaXplX3QgcGF5bG9hZF9zaXplOworICAvLyBTaXplIG9mIHByZWNl
ZWRpbmcgcGFja2V0cyB0aGF0IGFyZSBub3QgcGFydCBvZiBmZWVkYmFjay4KKyAgc2l6ZV90IHVu
YWNrbm93bGVkZ2VkX2RhdGE7CiAgIC8vIFRoZSBuZXR3b3JrIHJvdXRlIGlkcyB0aGF0IHRoaXMg
cGFja2V0IGlzIGFzc29jaWF0ZWQgd2l0aC4KICAgdWludDE2X3QgbG9jYWxfbmV0X2lkOwogICB1
aW50MTZfdCByZW1vdGVfbmV0X2lkOwpAQCAtNDg5LDEzICs0NDEsOCBAQCBzdHJ1Y3QgUnRwUGFj
a2V0Q291bnRlciB7CiAgICAgcGFja2V0cyAtPSBvdGhlci5wYWNrZXRzOwogICB9CiAKLSAgdm9p
ZCBBZGRQYWNrZXQoc2l6ZV90IHBhY2tldF9sZW5ndGgsIGNvbnN0IFJUUEhlYWRlciYgaGVhZGVy
KSB7Ci0gICAgKytwYWNrZXRzOwotICAgIGhlYWRlcl9ieXRlcyArPSBoZWFkZXIuaGVhZGVyTGVu
Z3RoOwotICAgIHBhZGRpbmdfYnl0ZXMgKz0gaGVhZGVyLnBhZGRpbmdMZW5ndGg7Ci0gICAgcGF5
bG9hZF9ieXRlcyArPQotICAgICAgICBwYWNrZXRfbGVuZ3RoIC0gKGhlYWRlci5oZWFkZXJMZW5n
dGggKyBoZWFkZXIucGFkZGluZ0xlbmd0aCk7Ci0gIH0KKyAgLy8gTm90IGlubGluZWQsIHNpbmNl
IHVzZSBvZiBSdHBQYWNrZXQgd291bGQgcmVzdWx0IGluIGNpcmN1bGFyIGluY2x1ZGVzLgorICB2
b2lkIEFkZFBhY2tldChjb25zdCBSdHBQYWNrZXQmIHBhY2tldCk7CiAKICAgc2l6ZV90IFRvdGFs
Qnl0ZXMoKSBjb25zdCB7CiAgICAgcmV0dXJuIGhlYWRlcl9ieXRlcyArIHBheWxvYWRfYnl0ZXMg
KyBwYWRkaW5nX2J5dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9tb2Nrcy9tb2NrX3J0cF9ydGNwLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9tb2Nrcy9tb2NrX3J0cF9ydGNwLmNjCmluZGV4IGQyNGMxYjA5NGM1MWY5OThlZGFiNjVkNmRl
ZjllMzc5MzdhOGJmZTMuLjA2MWY4Mjc2NWNjNzViYWEzY2EwNGNkZDQzYzY0ZjE5OTJkZDVlYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL21vY2tzL21vY2tf
cnRwX3J0Y3AuY2MKQEAgLTEyLDkgKzEyLDYgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLU1v
Y2tSdHBEYXRhOjpNb2NrUnRwRGF0YSgpID0gZGVmYXVsdDsKLU1vY2tSdHBEYXRhOjp+TW9ja1J0
cERhdGEoKSA9IGRlZmF1bHQ7Ci0KIE1vY2tSdHBSdGNwOjpNb2NrUnRwUnRjcCgpID0gZGVmYXVs
dDsKIE1vY2tSdHBSdGNwOjp+TW9ja1J0cFJ0Y3AoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9tb2Nrcy9tb2NrX3J0cF9ydGNwLmgKaW5kZXgg
NmQ1YmRlNDc4OGY0YTZhZTQ4ZmY2YThkZGMwODRmNzY2MzQ0ZmFkZS4uM2I5Yjk0M2M0NTM5NTA0
MTMwZDI2ZDU1YmM0ZWNmMzRhOWNjYjVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9tb2Nrcy9tb2NrX3J0cF9y
dGNwLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9tb2Nrcy9tb2NrX3J0cF9ydGNwLmgKQEAgLTI3LDE3ICsyNyw2IEBACiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBNb2NrUnRwRGF0YSA6IHB1YmxpYyBSdHBEYXRh
IHsKLSBwdWJsaWM6Ci0gIE1vY2tSdHBEYXRhKCk7Ci0gIH5Nb2NrUnRwRGF0YSgpOwotCi0gIE1P
Q0tfTUVUSE9EMyhPblJlY2VpdmVkUGF5bG9hZERhdGEsCi0gICAgICAgICAgICAgICBpbnQzMl90
KGNvbnN0IHVpbnQ4X3QqIHBheWxvYWRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHBheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUnRjUlRQ
SGVhZGVyKiBydHBfaGVhZGVyKSk7Ci19OwotCiBjbGFzcyBNb2NrUnRwUnRjcCA6IHB1YmxpYyBS
dHBSdGNwIHsKICBwdWJsaWM6CiAgIE1vY2tSdHBSdGNwKCk7CkBAIC01Miw2ICs0MSw3IEBAIGNs
YXNzIE1vY2tSdHBSdGNwIDogcHVibGljIFJ0cFJ0Y3AgewogICBNT0NLX01FVEhPRDIoUmVnaXN0
ZXJWaWRlb1NlbmRQYXlsb2FkLAogICAgICAgICAgICAgICAgdm9pZChpbnQgcGF5bG9hZF90eXBl
LCBjb25zdCBjaGFyKiBwYXlsb2FkX25hbWUpKTsKICAgTU9DS19NRVRIT0QxKERlUmVnaXN0ZXJT
ZW5kUGF5bG9hZCwgaW50MzJfdChpbnQ4X3QgcGF5bG9hZF90eXBlKSk7CisgIE1PQ0tfTUVUSE9E
MShTZXRFeHRtYXBBbGxvd01peGVkLCB2b2lkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSk7CiAg
IE1PQ0tfTUVUSE9EMihSZWdpc3RlclNlbmRSdHBIZWFkZXJFeHRlbnNpb24sCiAgICAgICAgICAg
ICAgICBpbnQzMl90KFJUUEV4dGVuc2lvblR5cGUgdHlwZSwgdWludDhfdCBpZCkpOwogICBNT0NL
X01FVEhPRDIoUmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24sCkBAIC04Myw2ICs3Myw3IEBAIGNs
YXNzIE1vY2tSdHBSdGNwIDogcHVibGljIFJ0cFJ0Y3AgewogICBNT0NLX0NPTlNUX01FVEhPRDAo
U2VuZGluZywgYm9vbCgpKTsKICAgTU9DS19NRVRIT0QxKFNldFNlbmRpbmdNZWRpYVN0YXR1cywg
dm9pZChib29sIHNlbmRpbmcpKTsKICAgTU9DS19DT05TVF9NRVRIT0QwKFNlbmRpbmdNZWRpYSwg
Ym9vbCgpKTsKKyAgTU9DS19NRVRIT0QxKFNldEFzUGFydE9mQWxsb2NhdGlvbiwgdm9pZChib29s
KSk7CiAgIE1PQ0tfQ09OU1RfTUVUSE9ENChCaXRyYXRlU2VudCwKICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQodWludDMyX3QqIHRvdGFsX3JhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90KiB2aWRlb19yYXRlLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5n
X3NvdXJjZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9jb250cmlidXRpbmdfc291cmNlcy5jYwppbmRleCA4NTM3
MDZjNGY1ZGMxNDA5MDllZTIyYzllMjZjMDJkNDdmYWMxYjk0Li42NGRjNDQzZTI5NWY1YzQ2ZDhh
NzBhMGQ3MWRmM2ZmY2Y1YzgzNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9jb250cmlidXRpbmdf
c291cmNlcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9jb250cmlidXRpbmdfc291cmNlcy5jYwpAQCAtMjUs
OSArMjUsMTEgQEAgQ29udHJpYnV0aW5nU291cmNlczo6Q29udHJpYnV0aW5nU291cmNlcygpID0g
ZGVmYXVsdDsKIENvbnRyaWJ1dGluZ1NvdXJjZXM6On5Db250cmlidXRpbmdTb3VyY2VzKCkgPSBk
ZWZhdWx0OwogCiB2b2lkIENvbnRyaWJ1dGluZ1NvdXJjZXM6OlVwZGF0ZShpbnQ2NF90IG5vd19t
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IHVpbnQzMl90PiBjc3JjcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRj
OjpBcnJheVZpZXc8Y29uc3QgdWludDMyX3Q+IGNzcmNzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gYXVkaW9fbGV2ZWwpIHsKKyAgRW50
cnkgZW50cnkgPSB7IG5vd19tcywgYXVkaW9fbGV2ZWwgfTsKICAgZm9yICh1aW50MzJfdCBjc3Jj
IDogY3NyY3MpIHsKLSAgICBsYXN0X3NlZW5fbXNfW2NzcmNdID0gbm93X21zOworICAgIGFjdGl2
ZV9jc3Jjc19bY3NyY10gPSBlbnRyeTsKICAgfQogICBpZiAoIW5leHRfcHJ1bmluZ19tc18pIHsK
ICAgICBuZXh0X3BydW5pbmdfbXNfID0gbm93X21zICsga1BydW5pbmdJbnRlcnZhbE1zOwpAQCAt
NDMsOSArNDUsMTYgQEAgdm9pZCBDb250cmlidXRpbmdTb3VyY2VzOjpVcGRhdGUoaW50NjRfdCBu
b3dfbXMsCiAvLyBub24tY29uc3QuCiBzdGQ6OnZlY3RvcjxSdHBTb3VyY2U+IENvbnRyaWJ1dGlu
Z1NvdXJjZXM6OkdldFNvdXJjZXMoaW50NjRfdCBub3dfbXMpIGNvbnN0IHsKICAgc3RkOjp2ZWN0
b3I8UnRwU291cmNlPiBzb3VyY2VzOwotICBmb3IgKGF1dG8mIHJlY29yZCA6IGxhc3Rfc2Vlbl9t
c18pIHsKLSAgICBpZiAocmVjb3JkLnNlY29uZCA+PSBub3dfbXMgLSBrSGlzdG9yeU1zKSB7Ci0g
ICAgICBzb3VyY2VzLmVtcGxhY2VfYmFjayhyZWNvcmQuc2Vjb25kLCByZWNvcmQuZmlyc3QsIFJ0
cFNvdXJjZVR5cGU6OkNTUkMpOworICBmb3IgKGF1dG8mIHJlY29yZCA6IGFjdGl2ZV9jc3Jjc18p
IHsKKyAgICBpZiAocmVjb3JkLnNlY29uZC5sYXN0X3NlZW5fbXMgPj0gbm93X21zIC0ga0hpc3Rv
cnlNcykgeworICAgICAgaWYgKHJlY29yZC5zZWNvbmQuYXVkaW9fbGV2ZWwuaGFzX3ZhbHVlKCkp
IHsKKyAgICAgICAgc291cmNlcy5lbXBsYWNlX2JhY2socmVjb3JkLnNlY29uZC5sYXN0X3NlZW5f
bXMsIHJlY29yZC5maXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwU291cmNl
VHlwZTo6Q1NSQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlY29yZC5zZWNvbmQu
YXVkaW9fbGV2ZWwpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc291cmNlcy5lbXBsYWNlX2Jh
Y2socmVjb3JkLnNlY29uZC5sYXN0X3NlZW5fbXMsIHJlY29yZC5maXJzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUnRwU291cmNlVHlwZTo6Q1NSQyk7CisgICAgICB9CiAgICAgfQog
ICB9CiAKQEAgLTU0LDE1ICs2MywyMCBAQCBzdGQ6OnZlY3RvcjxSdHBTb3VyY2U+IENvbnRyaWJ1
dGluZ1NvdXJjZXM6OkdldFNvdXJjZXMoaW50NjRfdCBub3dfbXMpIGNvbnN0IHsKIAogLy8gRGVs
ZXRlIHN0YWxlIGVudHJpZXMuCiB2b2lkIENvbnRyaWJ1dGluZ1NvdXJjZXM6OkRlbGV0ZU9sZEVu
dHJpZXMoaW50NjRfdCBub3dfbXMpIHsKLSAgZm9yIChhdXRvIGl0ID0gbGFzdF9zZWVuX21zXy5i
ZWdpbigpOyBpdCAhPSBsYXN0X3NlZW5fbXNfLmVuZCgpOykgewotICAgIGlmIChpdC0+c2Vjb25k
ID49IG5vd19tcyAtIGtIaXN0b3J5TXMpIHsKKyAgZm9yIChhdXRvIGl0ID0gYWN0aXZlX2NzcmNz
Xy5iZWdpbigpOyBpdCAhPSBhY3RpdmVfY3NyY3NfLmVuZCgpOykgeworICAgIGlmIChpdC0+c2Vj
b25kLmxhc3Rfc2Vlbl9tcyA+PSBub3dfbXMgLSBrSGlzdG9yeU1zKSB7CiAgICAgICAvLyBTdGls
bCByZWxldmFudC4KICAgICAgICsraXQ7CiAgICAgfSBlbHNlIHsKLSAgICAgIGl0ID0gbGFzdF9z
ZWVuX21zXy5lcmFzZShpdCk7CisgICAgICBpdCA9IGFjdGl2ZV9jc3Jjc18uZXJhc2UoaXQpOwog
ICAgIH0KICAgfQogICBuZXh0X3BydW5pbmdfbXNfID0gbm93X21zICsga1BydW5pbmdJbnRlcnZh
bE1zOwogfQogCitDb250cmlidXRpbmdTb3VyY2VzOjpFbnRyeTo6RW50cnkoKSA9IGRlZmF1bHQ7
CitDb250cmlidXRpbmdTb3VyY2VzOjpFbnRyeTo6RW50cnkoaW50NjRfdCB0aW1lc3RhbXBfbXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDhf
dD4gYXVkaW9fbGV2ZWxfYXJnKQorICAgIDogbGFzdF9zZWVuX21zKHRpbWVzdGFtcF9tcyksIGF1
ZGlvX2xldmVsKGF1ZGlvX2xldmVsX2FyZykge30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2Nv
bnRyaWJ1dGluZ19zb3VyY2VzLmgKaW5kZXggMWE0YTU3MmQ4ZjU0NDMxYmE2YTUyM2U0MGY1ZDMz
YWYwMWY4ZmIyMi4uNWUzNDUzOWNlNDc3ZTBiN2JlZGFmODBkMDk5YTc0NDczNTExNGU2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXMuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9j
b250cmlidXRpbmdfc291cmNlcy5oCkBAIC0xOCw3ICsxOCw4IEBACiAKICNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRl
ICJhcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJhcGkvcnRwcmVjZWl2ZXJp
bnRlcmZhY2UuaCIgIC8vIEZvciBSdHBTb3VyY2UKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRp
bHMuaCIgICAgICAgIC8vIEZvciBrTnVtTWlsbGlzZWNzUGVyU2VjCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogCkBAIC0zMSwxOCArMzIsMjUgQEAgY2xhc3MgQ29udHJpYnV0aW5nU291cmNlcyB7CiAg
IENvbnRyaWJ1dGluZ1NvdXJjZXMoKTsKICAgfkNvbnRyaWJ1dGluZ1NvdXJjZXMoKTsKIAotICAv
LyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy8zMzMzKTogTmVlZHMgdG8gYmUgZXh0ZW5kZWQgd2l0aCBh
dWRpby1sZXZlbCwgdG8KLSAgLy8gc3VwcG9ydCBSRkM2NDY1LgotICB2b2lkIFVwZGF0ZShpbnQ2
NF90IG5vd19tcywgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDMyX3Q+IGNzcmNzKTsKKyAgdm9p
ZCBVcGRhdGUoaW50NjRfdCBub3dfbXMsIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQzMl90PiBj
c3JjcywKKyAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gYXVkaW9fbGV2ZWwp
OwogCiAgIC8vIFJldHVybnMgY29udHJpYnV0aW5nIHNvdXJjZXMgc2VlbiB0aGUgbGFzdCAxMCBz
LgogICBzdGQ6OnZlY3RvcjxSdHBTb3VyY2U+IEdldFNvdXJjZXMoaW50NjRfdCBub3dfbXMpIGNv
bnN0OwogCiAgcHJpdmF0ZToKKyAgc3RydWN0IEVudHJ5IHsKKyAgICBFbnRyeSgpOworICAgIEVu
dHJ5KGludDY0X3QgdGltZXN0YW1wX21zLCBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBhdWRpb19s
ZXZlbCk7CisKKyAgICBpbnQ2NF90IGxhc3Rfc2Vlbl9tczsKKyAgICBhYnNsOjpvcHRpb25hbDx1
aW50OF90PiBhdWRpb19sZXZlbDsKKyAgfTsKKwogICB2b2lkIERlbGV0ZU9sZEVudHJpZXMoaW50
NjRfdCBub3dfbXMpOwogCiAgIC8vIEluZGV4ZWQgYnkgY3NyYy4KLSAgc3RkOjptYXA8dWludDMy
X3QsIGludDY0X3Q+IGxhc3Rfc2Vlbl9tc187CisgIHN0ZDo6bWFwPHVpbnQzMl90LCBFbnRyeT4g
YWN0aXZlX2NzcmNzXzsKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbmV4dF9wcnVuaW5nX21z
XzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1dGluZ19zb3VyY2VzX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXNfdW5pdHRlc3QuY2MKaW5kZXgg
OGIyMmQyNmM5NDgwNGNmNDQyMmMwZGI2MWQ2NTg3M2MxOGU0YmNkMi4uNWYxZDhkM2QxMTIwNDJj
ODk0MjQxNTY3OWJkN2RiYjkyZTZmYzFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0
aW5nX3NvdXJjZXNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJj
ZXNfdW5pdHRlc3QuY2MKQEAgLTMwLDcgKzMwLDcgQEAgVEVTVChDb250cmlidXRpbmdTb3VyY2Vz
VGVzdCwgUmVjb3JkU291cmNlcykgewogICBDb250cmlidXRpbmdTb3VyY2VzIGNzcmNzOwogICBj
b25zdGV4cHIgdWludDMyX3Qga0NzcmNzW10gPSB7a0NzcmMxLCBrQ3NyYzJ9OwogICBjb25zdGV4
cHIgaW50NjRfdCBrVGltZTEgPSAxMDsKLSAgY3NyY3MuVXBkYXRlKGtUaW1lMSwga0NzcmNzKTsK
KyAgY3NyY3MuVXBkYXRlKGtUaW1lMSwga0NzcmNzLCBhYnNsOjpudWxsb3B0KTsKICAgRVhQRUNU
X1RIQVQoCiAgICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtUaW1lMSksCiAgICAgICBVbm9yZGVyZWRF
bGVtZW50c0FyZShSdHBTb3VyY2Uoa1RpbWUxLCBrQ3NyYzEsIFJ0cFNvdXJjZVR5cGU6OkNTUkMp
LApAQCAtNDUsMTIgKzQ1LDEyIEBAIFRFU1QoQ29udHJpYnV0aW5nU291cmNlc1Rlc3QsIFVwZGF0
ZVNvdXJjZXMpIHsKICAgY29uc3RleHByIHVpbnQzMl90IGtDc3JjczJbXSA9IHtrQ3NyYzIsIGtD
c3JjM307CiAgIGNvbnN0ZXhwciBpbnQ2NF90IGtUaW1lMSA9IDEwOwogICBjb25zdGV4cHIgaW50
NjRfdCBrVGltZTIgPSBrVGltZTEgKyA1ICogcnRjOjprTnVtTWlsbGlzZWNzUGVyU2VjOwotICBj
c3Jjcy5VcGRhdGUoa1RpbWUxLCBrQ3NyY3MxKTsKKyAgY3NyY3MuVXBkYXRlKGtUaW1lMSwga0Nz
cmNzMSwgYWJzbDo6bnVsbG9wdCk7CiAgIEVYUEVDVF9USEFUKAogICAgICAgY3NyY3MuR2V0U291
cmNlcyhrVGltZTEpLAogICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoUnRwU291cmNlKGtUaW1l
MSwga0NzcmMxLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJ0cFNvdXJjZShrVGltZTEsIGtDc3JjMiwgUnRwU291cmNlVHlwZTo6Q1NSQykpKTsKLSAg
Y3NyY3MuVXBkYXRlKGtUaW1lMiwga0NzcmNzMik7CisgIGNzcmNzLlVwZGF0ZShrVGltZTIsIGtD
c3JjczIsIGFic2w6Om51bGxvcHQpOwogICBFWFBFQ1RfVEhBVCgKICAgICAgIGNzcmNzLkdldFNv
dXJjZXMoa1RpbWUyKSwKICAgICAgIFVub3JkZXJlZEVsZW1lbnRzQXJlKFJ0cFNvdXJjZShrVGlt
ZTEsIGtDc3JjMSwgUnRwU291cmNlVHlwZTo6Q1NSQyksCkBAIC02NSwxMiArNjUsMTIgQEAgVEVT
VChDb250cmlidXRpbmdTb3VyY2VzVGVzdCwgUmV0dXJuUmVjZW50T25seSkgewogICBjb25zdGV4
cHIgaW50NjRfdCBrVGltZTEgPSAxMDsKICAgY29uc3RleHByIGludDY0X3Qga1RpbWUyID0ga1Rp
bWUxICsgNSAqIHJ0Yzo6a051bU1pbGxpc2Vjc1BlclNlYzsKICAgY29uc3RleHByIGludDY0X3Qg
a1RpbWUzID0ga1RpbWUxICsgMTIgKiBydGM6OmtOdW1NaWxsaXNlY3NQZXJTZWM7Ci0gIGNzcmNz
LlVwZGF0ZShrVGltZTEsIGtDc3JjczEpOworICBjc3Jjcy5VcGRhdGUoa1RpbWUxLCBrQ3NyY3Mx
LCBhYnNsOjpudWxsb3B0KTsKICAgRVhQRUNUX1RIQVQoCiAgICAgICBjc3Jjcy5HZXRTb3VyY2Vz
KGtUaW1lMSksCiAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShSdHBTb3VyY2Uoa1RpbWUxLCBr
Q3NyYzEsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
UnRwU291cmNlKGtUaW1lMSwga0NzcmMyLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSkpOwotICBjc3Jj
cy5VcGRhdGUoa1RpbWUyLCBrQ3NyY3MyKTsKKyAgY3NyY3MuVXBkYXRlKGtUaW1lMiwga0NzcmNz
MiwgYWJzbDo6bnVsbG9wdCk7CiAgIEVYUEVDVF9USEFUKAogICAgICAgY3NyY3MuR2V0U291cmNl
cyhrVGltZTMpLAogICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoUnRwU291cmNlKGtUaW1lMiwg
a0NzcmMyLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSwKQEAgLTg0LDE4ICs4NCwxOCBAQCBURVNUKENv
bnRyaWJ1dGluZ1NvdXJjZXNUZXN0LCBQdXJnZU9sZFNvdXJjZXMpIHsKICAgY29uc3RleHByIGlu
dDY0X3Qga1RpbWUxID0gMTA7CiAgIGNvbnN0ZXhwciBpbnQ2NF90IGtUaW1lMiA9IGtUaW1lMSAr
IDEwICogcnRjOjprTnVtTWlsbGlzZWNzUGVyU2VjOwogICBjb25zdGV4cHIgaW50NjRfdCBrVGlt
ZTMgPSBrVGltZTEgKyAyMCAqIHJ0Yzo6a051bU1pbGxpc2Vjc1BlclNlYzsKLSAgY3NyY3MuVXBk
YXRlKGtUaW1lMSwga0NzcmNzMSk7CisgIGNzcmNzLlVwZGF0ZShrVGltZTEsIGtDc3JjczEsIGFi
c2w6Om51bGxvcHQpOwogICBFWFBFQ1RfVEhBVCgKICAgICAgIGNzcmNzLkdldFNvdXJjZXMoa1Rp
bWUyKSwKICAgICAgIFVub3JkZXJlZEVsZW1lbnRzQXJlKFJ0cFNvdXJjZShrVGltZTEsIGtDc3Jj
MSwgUnRwU291cmNlVHlwZTo6Q1NSQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBT
b3VyY2Uoa1RpbWUxLCBrQ3NyYzIsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpKSk7Ci0gIGNzcmNzLlVw
ZGF0ZShrVGltZTIsIGtDc3JjczIpOworICBjc3Jjcy5VcGRhdGUoa1RpbWUyLCBrQ3NyY3MyLCBh
YnNsOjpudWxsb3B0KTsKICAgRVhQRUNUX1RIQVQoCiAgICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtU
aW1lMiksCiAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShSdHBTb3VyY2Uoa1RpbWUxLCBrQ3Ny
YzEsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRw
U291cmNlKGtUaW1lMiwga0NzcmMyLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJ0cFNvdXJjZShrVGltZTIsIGtDc3JjMywgUnRwU291cmNlVHlwZTo6
Q1NSQykpKTsKLSAgY3NyY3MuVXBkYXRlKGtUaW1lMywga0NzcmNzMik7CisgIGNzcmNzLlVwZGF0
ZShrVGltZTMsIGtDc3JjczIsIGFic2w6Om51bGxvcHQpOwogICBFWFBFQ1RfVEhBVCgKICAgICAg
IGNzcmNzLkdldFNvdXJjZXMoa1RpbWUzKSwKICAgICAgIFVub3JkZXJlZEVsZW1lbnRzQXJlKFJ0
cFNvdXJjZShrVGltZTMsIGtDc3JjMiwgUnRwU291cmNlVHlwZTo6Q1NSQyksCkBAIC0xMDgsNCAr
MTA4LDIyIEBAIFRFU1QoQ29udHJpYnV0aW5nU291cmNlc1Rlc3QsIFB1cmdlT2xkU291cmNlcykg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwU291cmNlKGtUaW1lMywga0NzcmMzLCBS
dHBTb3VyY2VUeXBlOjpDU1JDKSkpOwogfQogCitURVNUKENvbnRyaWJ1dGluZ1NvdXJjZXNUZXN0
LCBBdWRpb0xldmVsKSB7CisgIENvbnRyaWJ1dGluZ1NvdXJjZXMgY3NyY3M7CisgIGNvbnN0ZXhw
ciB1aW50MzJfdCBrQ3NyY3NbXSA9IHtrQ3NyYzEsIGtDc3JjMn07CisgIGNvbnN0ZXhwciBpbnQ2
NF90IGtUaW1lMSA9IDEwOworICBjc3Jjcy5VcGRhdGUoa1RpbWUxLCBrQ3NyY3MsIDQ3KTsKKyAg
RVhQRUNUX1RIQVQoCisgICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtUaW1lMSksCisgICAgICBVbm9y
ZGVyZWRFbGVtZW50c0FyZShSdHBTb3VyY2Uoa1RpbWUxLCBrQ3NyYzEsIFJ0cFNvdXJjZVR5cGU6
OkNTUkMsIDQ3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFNvdXJjZShrVGltZTEs
IGtDc3JjMiwgUnRwU291cmNlVHlwZTo6Q1NSQywgNDcpKSk7CisKKyAgY29uc3RleHByIHVpbnQz
Ml90IGtDc3Jjc1N1YnNldFtdID0ge2tDc3JjMX07CisgIGNzcmNzLlVwZGF0ZShrVGltZTEgKyAx
LCBrQ3NyY3NTdWJzZXQsIGFic2w6Om51bGxvcHQpOworICBFWFBFQ1RfVEhBVCgKKyAgICAgIGNz
cmNzLkdldFNvdXJjZXMoa1RpbWUxICsgMSksCisgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShS
dHBTb3VyY2Uoa1RpbWUxICsgMSwga0NzcmMxLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJ0cFNvdXJjZShrVGltZTEsIGtDc3JjMiwgUnRwU291cmNl
VHlwZTo6Q1NSQywgNDcpKSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL2R0bWZfcXVldWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9kdG1mX3F1ZXVlLmNjCmluZGV4
IDg2ZGRiMTA1ZjkyNGU5OThmMTlkZWUyOTZiMGUxOWMwYzVhMTg0ZTEuLjEwZTY3NDc4OWE0YmEw
ZmNmNjc2MWI3ZmMzM2JiNWE5ZDk1YThmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZfcXVl
dWUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvZHRtZl9xdWV1ZS5jYwpAQCAtMTAsNiArMTAsMTAgQEAKIAog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZfcXVldWUuaCIKIAorI2luY2x1
ZGUgPHN0ZGRlZi5oPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKIG5hbWVzcGFj
ZSB7CiBjb25zdGV4cHIgc2l6ZV90IGtEdG1mT3V0YmFuZE1heCA9IDIwOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvZHRtZl9xdWV1ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZHRtZl9xdWV1ZS5oCmluZGV4IGRi
NzBjOTc1MDgwMDI4NmZhN2UzODFmMjI5ZDJlNTE5M2U0MDY5NjEuLmU1OTU1YTEyOTdjNDQzODNk
YTE5YzU1ZDQxMzg4NWFkM2ZkMjFmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZfcXVldWUu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9kdG1mX3F1ZXVlLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYg
TU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfRFRNRl9RVUVVRV9IXwogI2RlZmluZSBNT0RVTEVTX1JU
UF9SVENQX1NPVVJDRV9EVE1GX1FVRVVFX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxsaXN0PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9mbGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvZmxleGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5jYwppbmRleCBkNzY2NmUxMTkyYTMzOWNh
ZmIxOTI1MTY3MzUzMDlmYWM2M2I4YWRkLi5iODEzMzQwZWE2OGQ4NTU1ZTQ1Mzk2ODdhZWM4NWY1
ZmJmNTk5NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mbGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3Jp
dGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuY2MKQEAg
LTEyLDEyICsxMiwxMSBAQAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNsdWRlIDx1dGls
aXR5PgotCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9p
bnRlcm5hbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19oZWFkZXJf
cmVhZGVyX3dyaXRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5o
CmluZGV4IDFkNmRkZGE0YjQwOTg1ZjRiNjEyMTY2YTQ1MTEyOWRiMzc5NmM5MzAuLmQzMDVjNGMy
ODhkZTE0ZmRiODQwYjdhY2NhMmVhZDgzY2YxYzIyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2Zs
ZXhmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mbGV4ZmVjX2hlYWRl
cl9yZWFkZXJfd3JpdGVyLmgKQEAgLTExLDYgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBf
UlRDUF9TT1VSQ0VfRkxFWEZFQ19IRUFERVJfUkVBREVSX1dSSVRFUl9IXwogI2RlZmluZSBNT0RV
TEVTX1JUUF9SVENQX1NPVVJDRV9GTEVYRkVDX0hFQURFUl9SRUFERVJfV1JJVEVSX0hfCiAKKyNp
bmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfcmVjZWl2ZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9mbGV4ZmVjX3JlY2VpdmVyLmNjCmluZGV4IGMzZWQ0ZDUzYjJhNDNmZjllNmRlYzkw
OWNmZGU0YjE2NTk1MWQzYTkuLjFhNjJiY2VkNjhhNGQyZjIyZmIxYTZlMjMwZjcyOGM1MTJiNGYw
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfcmVjZWl2ZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvZmxleGZlY19yZWNlaXZlci5jYwpAQCAtMTAsNiArMTAsOSBAQAogCiAjaW5jbHVkZSAibW9k
dWxlcy9ydHBfcnRjcC9pbmNsdWRlL2ZsZXhmZWNfcmVjZWl2ZXIuaCIKIAorI2luY2x1ZGUgPHN0
cmluZy5oPgorCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfc2Vu
ZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19zZW5kZXIuY2MKaW5kZXggMjg2ZjQ3YzVmZTgwOGQy
Njc0OWY1YWJmMGZhZmFlNTQyZWExZTFiZi4uMTIwNGIyZDk3OGM0NGNmZjFkYmI3MDlmNTFiYzJh
ZDg4MDA2ZGViZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19zZW5kZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvZmxleGZlY19zZW5kZXIuY2MKQEAgLTEwLDExICsxMCwxNSBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL2ZsZXhmZWNfc2VuZGVyLmgiCiAKKyNpbmNsdWRl
IDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dp
bmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJk
X2Vycm9yX2NvcnJlY3Rpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24u
Y2MKaW5kZXggYjc0MzExMGIyZDYwMjRlZjAxNTBhYTc5MzQ4N2ZjZDVlYTFlZGNiYi4uYTUyZmVj
YWQxOGU3MGYzYzM3MmM4Y2U5ZDA4OGQxNjhmNjA0OTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
Zm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3Jf
Y29ycmVjdGlvbi5jYwpAQCAtMTEsMTEgKzExLDEwIEBACiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmgiCiAKICNpbmNsdWRlIDxzdHJp
bmcuaD4KLQogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNs
dWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25f
dHlwZXNfcHVibGljLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9y
dGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lv
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19oZWFkZXJfcmVh
ZGVyX3dyaXRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0
aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaAppbmRleCA4MTlmNmJj
ZWM1NmExNmVhNzA3OGI0NWZjYmFkZDMwM2YwMWZhMzY0Li5hZGI3NTcyYWU2NzBhOTY0ZWVmNWMw
ZmIxMTA5YWZjZGJkMzEwZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2Nv
cnJlY3Rpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaApAQCAt
MTEsMTYgKzExLDE1IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX0ZPUldBUkRf
RVJST1JfQ09SUkVDVElPTl9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9GT1JX
QVJEX0VSUk9SX0NPUlJFQ1RJT05fSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUg
PHN0ZGludC5oPgotCiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9mZWNfdHlwZXMu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVj
dGlvbl9pbnRlcm5hbC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3Bl
ZF9yZWZfcHRyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
Zm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9l
cnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmNjCmluZGV4IDdlNWZkOTFlMDM1NjQ0ZTAxYjZkMTkz
ZTI0MTE5YmEzOGE2ODAzODcuLjliMDIwMjZhNzdjNTA1ZjM4Zjg2NzdjNTVlNTg2YmJjZWY4Yzhi
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRlcm5h
bC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuY2MK
QEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2Zv
cndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRlcm5hbC5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvZmVjX3ByaXZhdGVfdGFibGVzX2J1cnN0eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9y
d2FyZF9lcnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9y
X2NvcnJlY3Rpb25faW50ZXJuYWwuaAppbmRleCAyZThhMjAyMTEzYWY5NDg2N2IxYjFhNTg2OGQ2
MGJlNWYwYWVjMzBjLi5lZDkzZjUyMGU1MjZmYzc4OGJjNjJlZWUzY2Q3ZTJlMDRjMTQ0YmJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuaApAQCAtMTEs
OSArMTEsMTEgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfRk9SV0FSRF9FUlJP
Ul9DT1JSRUNUSU9OX0lOVEVSTkFMX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNF
X0ZPUldBUkRfRVJST1JfQ09SUkVDVElPTl9JTlRFUk5BTF9IXwogCi0jaW5jbHVkZSAibW9kdWxl
cy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNp
bmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVk
ZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9mZWNfdHlwZXMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3BhY2tldF9sb3NzX3N0YXRzLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcGFja2V0X2xvc3Nfc3RhdHMuY2MKaW5kZXggMDc2MzQ4ZDJkYTNlMDg5M2UxYjA1NDkwY2Y2
MGRhODI3OWQ3ODRkNi4uMzZmMGE2M2Q1OTY2NTdiZTY0MzM5MWZkZDRiZGUwZGM4YzBlZmRkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcGFja2V0X2xvc3Nfc3RhdHMuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cGFja2V0X2xvc3Nfc3RhdHMuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3BhY2tldF9sb3NzX3N0YXRzLmgiCiAKKyNpbmNsdWRlIDxjc3Rk
aW50PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGxheW91dF9kZWxheV9v
cmFjbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9wbGF5b3V0X2RlbGF5X29yYWNsZS5jYwppbmRleCBkM2E3NWRk
MTNhYTM0YTk5ZjFkZmM5MDBjMDdmNDQyMzIzMzgwNmY1Li5kYzMzZmFkNTM2ZGVkM2QwNjdmNzUy
NTAwMjA5ZDEyOWIzZDI4NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9wbGF5b3V0X2RlbGF5X29y
YWNsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9wbGF5b3V0X2RlbGF5X29yYWNsZS5jYwpAQCAtMTMsNyAr
MTMsNiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZp
bmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRl
bnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcGxheW91dF9kZWxheV9vcmFjbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3BsYXlvdXRfZGVsYXlfb3JhY2xl
LmgKaW5kZXggNmU2ZTI1M2M4Yzc2ZTU2ZDkyZDhhYjVhZTFjMjYzZjI1ZmY4MzY4MS4uMGUzYmQz
OWE3ZWY1ZWUxYWU4NWRmZjI1NmFiYmI3OTQzMjY4ZWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cGxheW91dF9kZWxheV9vcmFjbGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9wbGF5b3V0X2RlbGF5X29yYWNs
ZS5oCkBAIC0xMyw4ICsxMywxMCBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKLSNpbmNsdWRl
ICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgorI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAibW9kdWxlcy9p
bmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXNfcHVibGljLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9j
b25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVjZWl2ZV9z
dGF0aXN0aWNzX2ltcGwuY2MKaW5kZXggYWJlMDI4ZDY3MDIzN2E4OTIxYTYzZDAzZTIzZTAwYmY3
ZGE3MDlmOS4uYmM3NDJkMWVhNjNmZjdiZDQ3OTRjY2VhYzNkZGJkODMzZDEyYzQ5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcmVjZWl2ZV9zdGF0aXN0aWNzX2ltcGwuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cmVjZWl2ZV9zdGF0aXN0aWNzX2ltcGwuY2MKQEAgLTExLDEwICsxMSwxMSBAQAogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmgiCiAKICNp
bmNsdWRlIDxtYXRoLmg+Ci0KICNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90ZXN0L2J3ZV90ZXN0X2xv
Z2dpbmcuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3Jl
Y2VpdmVkLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfY29u
ZmlnLmgiCkBAIC0zMywxMyArMzQsMTQgQEAgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6U3RyZWFt
U3RhdGlzdGljaWFuSW1wbCgKICAgICB1aW50MzJfdCBzc3JjLAogICAgIENsb2NrKiBjbG9jaywK
ICAgICBib29sIGVuYWJsZV9yZXRyYW5zbWl0X2RldGVjdGlvbiwKKyAgICBpbnQgbWF4X3Jlb3Jk
ZXJpbmdfdGhyZXNob2xkLAogICAgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIHJ0Y3BfY2FsbGJh
Y2ssCiAgICAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIHJ0cF9jYWxsYmFjaykKICAgICA6
IHNzcmNfKHNzcmMpLAogICAgICAgY2xvY2tfKGNsb2NrKSwKICAgICAgIGluY29taW5nX2JpdHJh
dGVfKGtTdGF0aXN0aWNzUHJvY2Vzc0ludGVydmFsTXMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBSYXRlU3RhdGlzdGljczo6a0Jwc1NjYWxlKSwKLSAgICAgIG1heF9yZW9yZGVyaW5nX3RocmVz
aG9sZF8oa0RlZmF1bHRNYXhSZW9yZGVyaW5nVGhyZXNob2xkKSwKKyAgICAgIG1heF9yZW9yZGVy
aW5nX3RocmVzaG9sZF8obWF4X3Jlb3JkZXJpbmdfdGhyZXNob2xkKSwKICAgICAgIGVuYWJsZV9y
ZXRyYW5zbWl0X2RldGVjdGlvbl8oZW5hYmxlX3JldHJhbnNtaXRfZGV0ZWN0aW9uKSwKICAgICAg
IGppdHRlcl9xNF8oMCksCiAgICAgICBjdW11bGF0aXZlX2xvc3NfKDApLApAQCAtNDgsNyArNTAs
NiBAQCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpTdHJlYW1TdGF0aXN0aWNpYW5JbXBsKAogICAg
ICAgcmVjZWl2ZWRfc2VxX2ZpcnN0XygwKSwKICAgICAgIHJlY2VpdmVkX3NlcV9tYXhfKDApLAog
ICAgICAgcmVjZWl2ZWRfc2VxX3dyYXBzXygwKSwKLSAgICAgIHJlY2VpdmVkX3BhY2tldF9vdmVy
aGVhZF8oMTIpLAogICAgICAgbGFzdF9yZXBvcnRfaW5vcmRlcl9wYWNrZXRzXygwKSwKICAgICAg
IGxhc3RfcmVwb3J0X29sZF9wYWNrZXRzXygwKSwKICAgICAgIGxhc3RfcmVwb3J0X3NlcV9tYXhf
KDApLApAQCAtNTcsNzkgKzU4LDcxIEBAIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OlN0cmVhbVN0
YXRpc3RpY2lhbkltcGwoCiAKIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6On5TdHJlYW1TdGF0aXN0
aWNpYW5JbXBsKCkgPSBkZWZhdWx0OwogCi12b2lkIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6Oklu
Y29taW5nUGFja2V0KGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFja2V0X2xlbmd0aCkgewotICBTdHJl
YW1EYXRhQ291bnRlcnMgY291bnRlcnM7Ci0gIHsKLSAgICBydGM6OkNyaXRTY29wZSBjcygmc3Ry
ZWFtX2xvY2tfKTsKLQotICAgIGJvb2wgcmV0cmFuc21pdHRlZCA9Ci0gICAgICAgIGVuYWJsZV9y
ZXRyYW5zbWl0X2RldGVjdGlvbl8gJiYgSXNSZXRyYW5zbWl0T2ZPbGRQYWNrZXQoaGVhZGVyKTsK
LSAgICBjb3VudGVycyA9IFVwZGF0ZUNvdW50ZXJzKGhlYWRlciwgcGFja2V0X2xlbmd0aCwgcmV0
cmFuc21pdHRlZCk7Ci0gIH0KLSAgcnRwX2NhbGxiYWNrXy0+RGF0YUNvdW50ZXJzVXBkYXRlZChj
b3VudGVycywgc3NyY18pOwordm9pZCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpPblJ0cFBhY2tl
dChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CisgIFN0cmVhbURhdGFDb3VudGVy
cyBjb3VudGVycyA9IFVwZGF0ZUNvdW50ZXJzKHBhY2tldCk7CisgIGlmIChydHBfY2FsbGJhY2tf
KQorICAgIHJ0cF9jYWxsYmFja18tPkRhdGFDb3VudGVyc1VwZGF0ZWQoY291bnRlcnMsIHNzcmNf
KTsKIH0KIAogU3RyZWFtRGF0YUNvdW50ZXJzIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OlVwZGF0
ZUNvdW50ZXJzKAotICAgIGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyLAotICAgIHNpemVfdCBwYWNr
ZXRfbGVuZ3RoLAotICAgIGJvb2wgcmV0cmFuc21pdHRlZCkgewotICBib29sIGluX29yZGVyID0g
SW5PcmRlclBhY2tldEludGVybmFsKGhlYWRlci5zZXF1ZW5jZU51bWJlcik7Ci0gIFJUQ19EQ0hF
Q0tfRVEoc3NyY18sIGhlYWRlci5zc3JjKTsKLSAgaW5jb21pbmdfYml0cmF0ZV8uVXBkYXRlKHBh
Y2tldF9sZW5ndGgsIGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwotICByZWNlaXZlX2Nv
dW50ZXJzXy50cmFuc21pdHRlZC5BZGRQYWNrZXQocGFja2V0X2xlbmd0aCwgaGVhZGVyKTsKLSAg
aWYgKCFpbl9vcmRlciAmJiByZXRyYW5zbWl0dGVkKSB7Ci0gICAgcmVjZWl2ZV9jb3VudGVyc18u
cmV0cmFuc21pdHRlZC5BZGRQYWNrZXQocGFja2V0X2xlbmd0aCwgaGVhZGVyKTsKKyAgICBjb25z
dCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZzdHJl
YW1fbG9ja18pOworICBSVENfRENIRUNLX0VRKHNzcmNfLCBwYWNrZXQuU3NyYygpKTsKKyAgdWlu
dDE2X3Qgc2VxdWVuY2VfbnVtYmVyID0gcGFja2V0LlNlcXVlbmNlTnVtYmVyKCk7CisgIGJvb2wg
aW5fb3JkZXIgPQorICAgICAgLy8gRmlyc3QgcGFja2V0IGlzIGFsd2F5cyBpbiBvcmRlci4KKyAg
ICAgIGxhc3RfcmVjZWl2ZV90aW1lX21zXyA9PSAwIHx8CisgICAgICBJc05ld2VyU2VxdWVuY2VO
dW1iZXIoc2VxdWVuY2VfbnVtYmVyLCByZWNlaXZlZF9zZXFfbWF4XykgfHwKKyAgICAgIC8vIElm
IHdlIGhhdmUgYSByZXN0YXJ0IG9mIHRoZSByZW1vdGUgc2lkZSB0aGlzIHBhY2tldCBpcyBzdGls
bCBpbiBvcmRlci4KKyAgICAgICFJc05ld2VyU2VxdWVuY2VOdW1iZXIoc2VxdWVuY2VfbnVtYmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZF9zZXFfbWF4XyAtIG1heF9y
ZW9yZGVyaW5nX3RocmVzaG9sZF8pOworICBpbnQ2NF90IG5vd19tcyA9IGNsb2NrXy0+VGltZUlu
TWlsbGlzZWNvbmRzKCk7CisKKyAgaW5jb21pbmdfYml0cmF0ZV8uVXBkYXRlKHBhY2tldC5zaXpl
KCksIG5vd19tcyk7CisgIHJlY2VpdmVfY291bnRlcnNfLnRyYW5zbWl0dGVkLkFkZFBhY2tldChw
YWNrZXQpOworICBpZiAoIWluX29yZGVyICYmIGVuYWJsZV9yZXRyYW5zbWl0X2RldGVjdGlvbl8g
JiYKKyAgICAgIElzUmV0cmFuc21pdE9mT2xkUGFja2V0KHBhY2tldCwgbm93X21zKSkgeworICAg
IHJlY2VpdmVfY291bnRlcnNfLnJldHJhbnNtaXR0ZWQuQWRkUGFja2V0KHBhY2tldCk7CiAgIH0K
IAogICBpZiAocmVjZWl2ZV9jb3VudGVyc18udHJhbnNtaXR0ZWQucGFja2V0cyA9PSAxKSB7Ci0g
ICAgcmVjZWl2ZWRfc2VxX2ZpcnN0XyA9IGhlYWRlci5zZXF1ZW5jZU51bWJlcjsKLSAgICByZWNl
aXZlX2NvdW50ZXJzXy5maXJzdF9wYWNrZXRfdGltZV9tcyA9IGNsb2NrXy0+VGltZUluTWlsbGlz
ZWNvbmRzKCk7CisgICAgcmVjZWl2ZWRfc2VxX2ZpcnN0XyA9IHBhY2tldC5TZXF1ZW5jZU51bWJl
cigpOworICAgIHJlY2VpdmVfY291bnRlcnNfLmZpcnN0X3BhY2tldF90aW1lX21zID0gbm93X21z
OwogICB9CiAKICAgLy8gQ291bnQgb25seSB0aGUgbmV3IHBhY2tldHMgcmVjZWl2ZWQuIFRoYXQg
aXMsIGlmIHBhY2tldHMgMSwgMiwgMywgNSwgNCwgNgogICAvLyBhcmUgcmVjZWl2ZWQsIDQgd2ls
bCBiZSBpZ25vcmVkLgogICBpZiAoaW5fb3JkZXIpIHsKLSAgICAvLyBDdXJyZW50IHRpbWUgaW4g
c2FtcGxlcy4KLSAgICBOdHBUaW1lIHJlY2VpdmVfdGltZSA9IGNsb2NrXy0+Q3VycmVudE50cFRp
bWUoKTsKLQogICAgIC8vIFdyb25nIGlmIHdlIHVzZSBSZXRyYW5zbWl0T2ZPbGRQYWNrZXQuCiAg
ICAgaWYgKHJlY2VpdmVfY291bnRlcnNfLnRyYW5zbWl0dGVkLnBhY2tldHMgPiAxICYmCi0gICAg
ICAgIHJlY2VpdmVkX3NlcV9tYXhfID4gaGVhZGVyLnNlcXVlbmNlTnVtYmVyKSB7CisgICAgICAg
IHJlY2VpdmVkX3NlcV9tYXhfID4gcGFja2V0LlNlcXVlbmNlTnVtYmVyKCkpIHsKICAgICAgIC8v
IFdyYXAgYXJvdW5kIGRldGVjdGVkLgogICAgICAgcmVjZWl2ZWRfc2VxX3dyYXBzXysrOwogICAg
IH0KICAgICAvLyBOZXcgbWF4LgotICAgIHJlY2VpdmVkX3NlcV9tYXhfID0gaGVhZGVyLnNlcXVl
bmNlTnVtYmVyOworICAgIHJlY2VpdmVkX3NlcV9tYXhfID0gcGFja2V0LlNlcXVlbmNlTnVtYmVy
KCk7CiAKICAgICAvLyBJZiBuZXcgdGltZSBzdGFtcCBhbmQgbW9yZSB0aGFuIG9uZSBpbi1vcmRl
ciBwYWNrZXQgcmVjZWl2ZWQsIGNhbGN1bGF0ZQogICAgIC8vIG5ldyBqaXR0ZXIgc3RhdGlzdGlj
cy4KLSAgICBpZiAoaGVhZGVyLnRpbWVzdGFtcCAhPSBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF8g
JiYKKyAgICBpZiAocGFja2V0LlRpbWVzdGFtcCgpICE9IGxhc3RfcmVjZWl2ZWRfdGltZXN0YW1w
XyAmJgogICAgICAgICAocmVjZWl2ZV9jb3VudGVyc18udHJhbnNtaXR0ZWQucGFja2V0cyAtCiAg
ICAgICAgICByZWNlaXZlX2NvdW50ZXJzXy5yZXRyYW5zbWl0dGVkLnBhY2tldHMpID4gMSkgewot
ICAgICAgVXBkYXRlSml0dGVyKGhlYWRlciwgcmVjZWl2ZV90aW1lKTsKKyAgICAgIFVwZGF0ZUpp
dHRlcihwYWNrZXQsIG5vd19tcyk7CiAgICAgfQotICAgIGxhc3RfcmVjZWl2ZWRfdGltZXN0YW1w
XyA9IGhlYWRlci50aW1lc3RhbXA7Ci0gICAgbGFzdF9yZWNlaXZlX3RpbWVfbnRwXyA9IHJlY2Vp
dmVfdGltZTsKLSAgICBsYXN0X3JlY2VpdmVfdGltZV9tc18gPSBjbG9ja18tPlRpbWVJbk1pbGxp
c2Vjb25kcygpOworICAgIGxhc3RfcmVjZWl2ZWRfdGltZXN0YW1wXyA9IHBhY2tldC5UaW1lc3Rh
bXAoKTsKKyAgICBsYXN0X3JlY2VpdmVfdGltZV9tc18gPSBub3dfbXM7CiAgIH0KLQotICBzaXpl
X3QgcGFja2V0X29oID0gaGVhZGVyLmhlYWRlckxlbmd0aCArIGhlYWRlci5wYWRkaW5nTGVuZ3Ro
OwotCi0gIC8vIE91ciBtZWFzdXJlZCBvdmVyaGVhZC4gRmlsdGVyIGZyb20gUkZDIDUxMDQgNC4y
LjEuMjoKLSAgLy8gYXZnX09IIChuZXcpID0gMTUvMTYqYXZnX09IIChvbGQpICsgMS8xNipwY2t0
X09ILAotICByZWNlaXZlZF9wYWNrZXRfb3ZlcmhlYWRfID0gKDE1ICogcmVjZWl2ZWRfcGFja2V0
X292ZXJoZWFkXyArIHBhY2tldF9vaCkgPj4gNDsKICAgcmV0dXJuIHJlY2VpdmVfY291bnRlcnNf
OwogfQogCi12b2lkIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OlVwZGF0ZUppdHRlcihjb25zdCBS
VFBIZWFkZXImIGhlYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE50cFRpbWUgcmVjZWl2ZV90aW1lKSB7Ci0gIHVpbnQzMl90IHJlY2VpdmVfdGltZV9ydHAg
PQotICAgICAgTnRwVG9SdHAocmVjZWl2ZV90aW1lLCBoZWFkZXIucGF5bG9hZF90eXBlX2ZyZXF1
ZW5jeSk7Ci0gIHVpbnQzMl90IGxhc3RfcmVjZWl2ZV90aW1lX3J0cCA9Ci0gICAgICBOdHBUb1J0
cChsYXN0X3JlY2VpdmVfdGltZV9udHBfLCBoZWFkZXIucGF5bG9hZF90eXBlX2ZyZXF1ZW5jeSk7
Ci0gIGludDMyX3QgdGltZV9kaWZmX3NhbXBsZXMgPSAocmVjZWl2ZV90aW1lX3J0cCAtIGxhc3Rf
cmVjZWl2ZV90aW1lX3J0cCkgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhlYWRl
ci50aW1lc3RhbXAgLSBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF8pOwordm9pZCBTdHJlYW1TdGF0
aXN0aWNpYW5JbXBsOjpVcGRhdGVKaXR0ZXIoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcmVj
ZWl2ZV90aW1lX21zKSB7CisgIGludDY0X3QgcmVjZWl2ZV9kaWZmX21zID0gcmVjZWl2ZV90aW1l
X21zIC0gbGFzdF9yZWNlaXZlX3RpbWVfbXNfOworICBSVENfRENIRUNLX0dFKHJlY2VpdmVfZGlm
Zl9tcywgMCk7CisgIHVpbnQzMl90IHJlY2VpdmVfZGlmZl9ydHAgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oCisgICAgICAocmVjZWl2ZV9kaWZmX21zICogcGFja2V0LnBheWxvYWRfdHlwZV9mcmVx
dWVuY3koKSkgLyAxMDAwKTsKKyAgaW50MzJfdCB0aW1lX2RpZmZfc2FtcGxlcyA9CisgICAgICBy
ZWNlaXZlX2RpZmZfcnRwIC0gKHBhY2tldC5UaW1lc3RhbXAoKSAtIGxhc3RfcmVjZWl2ZWRfdGlt
ZXN0YW1wXyk7CiAKICAgdGltZV9kaWZmX3NhbXBsZXMgPSBzdGQ6OmFicyh0aW1lX2RpZmZfc2Ft
cGxlcyk7CiAKQEAgLTE0MywxNSArMTM2LDE2IEBAIHZvaWQgU3RyZWFtU3RhdGlzdGljaWFuSW1w
bDo6VXBkYXRlSml0dGVyKGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyLAogICB9CiB9CiAKLXZvaWQg
U3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6RmVjUGFja2V0UmVjZWl2ZWQoY29uc3QgUlRQSGVhZGVy
JiBoZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBwYWNrZXRfbGVuZ3RoKSB7Cit2b2lkIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OkZl
Y1BhY2tldFJlY2VpdmVkKAorICAgIGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIHsK
ICAgU3RyZWFtRGF0YUNvdW50ZXJzIGNvdW50ZXJzOwogICB7CiAgICAgcnRjOjpDcml0U2NvcGUg
Y3MoJnN0cmVhbV9sb2NrXyk7Ci0gICAgcmVjZWl2ZV9jb3VudGVyc18uZmVjLkFkZFBhY2tldChw
YWNrZXRfbGVuZ3RoLCBoZWFkZXIpOworICAgIHJlY2VpdmVfY291bnRlcnNfLmZlYy5BZGRQYWNr
ZXQocGFja2V0KTsKICAgICBjb3VudGVycyA9IHJlY2VpdmVfY291bnRlcnNfOwogICB9Ci0gIHJ0
cF9jYWxsYmFja18tPkRhdGFDb3VudGVyc1VwZGF0ZWQoY291bnRlcnMsIHNzcmNfKTsKKyAgaWYg
KHJ0cF9jYWxsYmFja18pCisgICAgcnRwX2NhbGxiYWNrXy0+RGF0YUNvdW50ZXJzVXBkYXRlZChj
b3VudGVycywgc3NyY18pOwogfQogCiB2b2lkIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OlNldE1h
eFJlb3JkZXJpbmdUaHJlc2hvbGQoCkBAIC0xODgsNyArMTgyLDggQEAgYm9vbCBTdHJlYW1TdGF0
aXN0aWNpYW5JbXBsOjpHZXRTdGF0aXN0aWNzKFJ0Y3BTdGF0aXN0aWNzKiBzdGF0aXN0aWNzLAog
ICAgICpzdGF0aXN0aWNzID0gQ2FsY3VsYXRlUnRjcFN0YXRpc3RpY3MoKTsKICAgfQogCi0gIHJ0
Y3BfY2FsbGJhY2tfLT5TdGF0aXN0aWNzVXBkYXRlZCgqc3RhdGlzdGljcywgc3NyY18pOworICBp
ZiAocnRjcF9jYWxsYmFja18pCisgICAgcnRjcF9jYWxsYmFja18tPlN0YXRpc3RpY3NVcGRhdGVk
KCpzdGF0aXN0aWNzLCBzc3JjXyk7CiAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xOTYsNyArMTkx
LDcgQEAgYm9vbCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpHZXRBY3RpdmVTdGF0aXN0aWNzQW5k
UmVzZXQoCiAgICAgUnRjcFN0YXRpc3RpY3MqIHN0YXRpc3RpY3MpIHsKICAgewogICAgIHJ0Yzo6
Q3JpdFNjb3BlIGNzKCZzdHJlYW1fbG9ja18pOwotICAgIGlmIChjbG9ja18tPkN1cnJlbnROdHBJ
bk1pbGxpc2Vjb25kcygpIC0gbGFzdF9yZWNlaXZlX3RpbWVfbnRwXy5Ub01zKCkgPj0KKyAgICBp
ZiAoY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSAtIGxhc3RfcmVjZWl2ZV90aW1lX21zXyA+
PQogICAgICAgICBrU3RhdGlzdGljc1RpbWVvdXRNcykgewogICAgICAgLy8gTm90IGFjdGl2ZS4K
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMCw3ICsyMDUsOCBAQCBib29sIFN0cmVhbVN0YXRp
c3RpY2lhbkltcGw6OkdldEFjdGl2ZVN0YXRpc3RpY3NBbmRSZXNldCgKICAgICAqc3RhdGlzdGlj
cyA9IENhbGN1bGF0ZVJ0Y3BTdGF0aXN0aWNzKCk7CiAgIH0KIAotICBydGNwX2NhbGxiYWNrXy0+
U3RhdGlzdGljc1VwZGF0ZWQoKnN0YXRpc3RpY3MsIHNzcmNfKTsKKyAgaWYgKHJ0Y3BfY2FsbGJh
Y2tfKQorICAgIHJ0Y3BfY2FsbGJhY2tfLT5TdGF0aXN0aWNzVXBkYXRlZCgqc3RhdGlzdGljcywg
c3NyY18pOwogICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzEyLDE3ICszMDgsMTUgQEAgdWludDMy
X3QgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6Qml0cmF0ZVJlY2VpdmVkKCkgY29uc3QgewogfQog
CiBib29sIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OklzUmV0cmFuc21pdE9mT2xkUGFja2V0KAot
ICAgIGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyKSBjb25zdCB7Ci0gIGlmIChJbk9yZGVyUGFja2V0
SW50ZXJuYWwoaGVhZGVyLnNlcXVlbmNlTnVtYmVyKSkgewotICAgIHJldHVybiBmYWxzZTsKLSAg
fQotICB1aW50MzJfdCBmcmVxdWVuY3lfa2h6ID0gaGVhZGVyLnBheWxvYWRfdHlwZV9mcmVxdWVu
Y3kgLyAxMDAwOwotICBhc3NlcnQoZnJlcXVlbmN5X2toeiA+IDApOworICAgIGNvbnN0IFJ0cFBh
Y2tldFJlY2VpdmVkJiBwYWNrZXQsCisgICAgaW50NjRfdCBub3dfbXMpIGNvbnN0IHsKKyAgdWlu
dDMyX3QgZnJlcXVlbmN5X2toeiA9IHBhY2tldC5wYXlsb2FkX3R5cGVfZnJlcXVlbmN5KCkgLyAx
MDAwOworICBSVENfRENIRUNLX0dUKGZyZXF1ZW5jeV9raHosIDApOwogCi0gIGludDY0X3QgdGlt
ZV9kaWZmX21zID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSAtIGxhc3RfcmVjZWl2ZV90
aW1lX21zXzsKKyAgaW50NjRfdCB0aW1lX2RpZmZfbXMgPSBub3dfbXMgLSBsYXN0X3JlY2VpdmVf
dGltZV9tc187CiAKICAgLy8gRGlmZiBpbiB0aW1lIHN0YW1wIHNpbmNlIGxhc3QgcmVjZWl2ZWQg
aW4gb3JkZXIuCi0gIHVpbnQzMl90IHRpbWVzdGFtcF9kaWZmID0gaGVhZGVyLnRpbWVzdGFtcCAt
IGxhc3RfcmVjZWl2ZWRfdGltZXN0YW1wXzsKKyAgdWludDMyX3QgdGltZXN0YW1wX2RpZmYgPSBw
YWNrZXQuVGltZXN0YW1wKCkgLSBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF87CiAgIHVpbnQzMl90
IHJ0cF90aW1lX3N0YW1wX2RpZmZfbXMgPSB0aW1lc3RhbXBfZGlmZiAvIGZyZXF1ZW5jeV9raHo7
CiAKICAgaW50NjRfdCBtYXhfZGVsYXlfbXMgPSAwOwpAQCAtMzQxLDMwICszMzUsMjMgQEAgYm9v
bCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpJc1JldHJhbnNtaXRPZk9sZFBhY2tldCgKICAgcmV0
dXJuIHRpbWVfZGlmZl9tcyA+IHJ0cF90aW1lX3N0YW1wX2RpZmZfbXMgKyBtYXhfZGVsYXlfbXM7
CiB9CiAKLWJvb2wgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6SW5PcmRlclBhY2tldEludGVybmFs
KAotICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlcikgY29uc3QgewotICAvLyBGaXJzdCBwYWNr
ZXQgaXMgYWx3YXlzIGluIG9yZGVyLgotICBpZiAobGFzdF9yZWNlaXZlX3RpbWVfbXNfID09IDAp
Ci0gICAgcmV0dXJuIHRydWU7Ci0KLSAgaWYgKElzTmV3ZXJTZXF1ZW5jZU51bWJlcihzZXF1ZW5j
ZV9udW1iZXIsIHJlY2VpdmVkX3NlcV9tYXhfKSkgewotICAgIHJldHVybiB0cnVlOwotICB9IGVs
c2UgewotICAgIC8vIElmIHdlIGhhdmUgYSByZXN0YXJ0IG9mIHRoZSByZW1vdGUgc2lkZSB0aGlz
IHBhY2tldCBpcyBzdGlsbCBpbiBvcmRlci4KLSAgICByZXR1cm4gIUlzTmV3ZXJTZXF1ZW5jZU51
bWJlcigKLSAgICAgICAgc2VxdWVuY2VfbnVtYmVyLCByZWNlaXZlZF9zZXFfbWF4XyAtIG1heF9y
ZW9yZGVyaW5nX3RocmVzaG9sZF8pOwotICB9Ci19Ci0KLVJlY2VpdmVTdGF0aXN0aWNzKiBSZWNl
aXZlU3RhdGlzdGljczo6Q3JlYXRlKENsb2NrKiBjbG9jaykgewotICByZXR1cm4gbmV3IFJlY2Vp
dmVTdGF0aXN0aWNzSW1wbChjbG9jayk7CitzdGQ6OnVuaXF1ZV9wdHI8UmVjZWl2ZVN0YXRpc3Rp
Y3M+IFJlY2VpdmVTdGF0aXN0aWNzOjpDcmVhdGUoCisgICAgQ2xvY2sqIGNsb2NrLAorICAgIFJ0
Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIHJ0Y3BfY2FsbGJhY2ssCisgICAgU3RyZWFtRGF0YUNvdW50
ZXJzQ2FsbGJhY2sqIHJ0cF9jYWxsYmFjaykgeworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8
UmVjZWl2ZVN0YXRpc3RpY3NJbXBsPihjbG9jaywgcnRjcF9jYWxsYmFjaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX2NhbGxiYWNrKTsKIH0K
IAotUmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjpSZWNlaXZlU3RhdGlzdGljc0ltcGwoQ2xvY2sqIGNs
b2NrKQorUmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjpSZWNlaXZlU3RhdGlzdGljc0ltcGwoCisgICAg
Q2xvY2sqIGNsb2NrLAorICAgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIHJ0Y3BfY2FsbGJhY2ss
CisgICAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIHJ0cF9jYWxsYmFjaykKICAgICA6IGNs
b2NrXyhjbG9jayksCiAgICAgICBsYXN0X3JldHVybmVkX3NzcmNfKDApLAotICAgICAgcnRjcF9z
dGF0c19jYWxsYmFja18oTlVMTCksCi0gICAgICBydHBfc3RhdHNfY2FsbGJhY2tfKE5VTEwpIHt9
CisgICAgICBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGRfKGtEZWZhdWx0TWF4UmVvcmRlcmluZ1Ro
cmVzaG9sZCksCisgICAgICBydGNwX3N0YXRzX2NhbGxiYWNrXyhydGNwX2NhbGxiYWNrKSwKKyAg
ICAgIHJ0cF9zdGF0c19jYWxsYmFja18ocnRwX2NhbGxiYWNrKSB7fQogCiBSZWNlaXZlU3RhdGlz
dGljc0ltcGw6On5SZWNlaXZlU3RhdGlzdGljc0ltcGwoKSB7CiAgIHdoaWxlICghc3RhdGlzdGlj
aWFuc18uZW1wdHkoKSkgewpAQCAtMzc0LDMxICszNjEsMjQgQEAgUmVjZWl2ZVN0YXRpc3RpY3NJ
bXBsOjp+UmVjZWl2ZVN0YXRpc3RpY3NJbXBsKCkgewogfQogCiB2b2lkIFJlY2VpdmVTdGF0aXN0
aWNzSW1wbDo6T25SdHBQYWNrZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgewot
ICBSVFBIZWFkZXIgaGVhZGVyOwotICBwYWNrZXQuR2V0SGVhZGVyKCZoZWFkZXIpOwotICBJbmNv
bWluZ1BhY2tldChoZWFkZXIsIHBhY2tldC5zaXplKCkpOwotfQotCi12b2lkIFJlY2VpdmVTdGF0
aXN0aWNzSW1wbDo6SW5jb21pbmdQYWNrZXQoY29uc3QgUlRQSGVhZGVyJiBoZWFkZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhY2tldF9sZW5n
dGgpIHsKICAgU3RyZWFtU3RhdGlzdGljaWFuSW1wbCogaW1wbDsKICAgewogICAgIHJ0Yzo6Q3Jp
dFNjb3BlIGNzKCZyZWNlaXZlX3N0YXRpc3RpY3NfbG9ja18pOwotICAgIGF1dG8gaXQgPSBzdGF0
aXN0aWNpYW5zXy5maW5kKGhlYWRlci5zc3JjKTsKKyAgICBhdXRvIGl0ID0gc3RhdGlzdGljaWFu
c18uZmluZChwYWNrZXQuU3NyYygpKTsKICAgICBpZiAoaXQgIT0gc3RhdGlzdGljaWFuc18uZW5k
KCkpIHsKICAgICAgIGltcGwgPSBpdC0+c2Vjb25kOwogICAgIH0gZWxzZSB7CiAgICAgICBpbXBs
ID0gbmV3IFN0cmVhbVN0YXRpc3RpY2lhbkltcGwoCi0gICAgICAgICAgaGVhZGVyLnNzcmMsIGNs
b2NrXywgLyogZW5hYmxlX3JldHJhbnNtaXRfZGV0ZWN0aW9uID0gKi8gZmFsc2UsIHRoaXMsCi0g
ICAgICAgICAgdGhpcyk7Ci0gICAgICBzdGF0aXN0aWNpYW5zX1toZWFkZXIuc3NyY10gPSBpbXBs
OworICAgICAgICAgIHBhY2tldC5Tc3JjKCksIGNsb2NrXywgLyogZW5hYmxlX3JldHJhbnNtaXRf
ZGV0ZWN0aW9uID0gKi8gZmFsc2UsCisgICAgICAgICAgbWF4X3Jlb3JkZXJpbmdfdGhyZXNob2xk
XywgcnRjcF9zdGF0c19jYWxsYmFja18sIHJ0cF9zdGF0c19jYWxsYmFja18pOworICAgICAgc3Rh
dGlzdGljaWFuc19bcGFja2V0LlNzcmMoKV0gPSBpbXBsOwogICAgIH0KICAgfQogICAvLyBTdHJl
YW1TdGF0aXN0aWNpYW5JbXBsIGluc3RhbmNlIGlzIGNyZWF0ZWQgb25jZSBhbmQgb25seSBkZXN0
cm95ZWQgd2hlbgogICAvLyB0aGlzIHdob2xlIFJlY2VpdmVTdGF0aXN0aWNzSW1wbCBpcyBkZXN0
cm95ZWQuIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwgaGFzCiAgIC8vIGl0J3Mgb3duIGxvY2tpbmcg
c28gZG9uJ3QgaG9sZCByZWNlaXZlX3N0YXRpc3RpY3NfbG9ja18gKHBvdGVudGlhbAogICAvLyBk
ZWFkbG9jaykuCi0gIGltcGwtPkluY29taW5nUGFja2V0KGhlYWRlciwgcGFja2V0X2xlbmd0aCk7
CisgIGltcGwtPk9uUnRwUGFja2V0KHBhY2tldCk7CiB9CiAKIHZvaWQgUmVjZWl2ZVN0YXRpc3Rp
Y3NJbXBsOjpGZWNQYWNrZXRSZWNlaXZlZChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0
KSB7CkBAIC00MTEsOSArMzkxLDcgQEAgdm9pZCBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OkZlY1Bh
Y2tldFJlY2VpdmVkKGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIHsKICAgICAgIHJl
dHVybjsKICAgICBpbXBsID0gaXQtPnNlY29uZDsKICAgfQotICBSVFBIZWFkZXIgaGVhZGVyOwot
ICBwYWNrZXQuR2V0SGVhZGVyKCZoZWFkZXIpOwotICBpbXBsLT5GZWNQYWNrZXRSZWNlaXZlZCho
ZWFkZXIsIHBhY2tldC5zaXplKCkpOworICBpbXBsLT5GZWNQYWNrZXRSZWNlaXZlZChwYWNrZXQp
OwogfQogCiBTdHJlYW1TdGF0aXN0aWNpYW4qIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6R2V0U3Rh
dGlzdGljaWFuKApAQCAtNDI3LDggKzQwNSwxMyBAQCBTdHJlYW1TdGF0aXN0aWNpYW4qIFJlY2Vp
dmVTdGF0aXN0aWNzSW1wbDo6R2V0U3RhdGlzdGljaWFuKAogCiB2b2lkIFJlY2VpdmVTdGF0aXN0
aWNzSW1wbDo6U2V0TWF4UmVvcmRlcmluZ1RocmVzaG9sZCgKICAgICBpbnQgbWF4X3Jlb3JkZXJp
bmdfdGhyZXNob2xkKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZyZWNlaXZlX3N0YXRpc3RpY3Nf
bG9ja18pOwotICBmb3IgKGF1dG8mIHN0YXRpc3RpY2lhbiA6IHN0YXRpc3RpY2lhbnNfKSB7Cisg
IHN0ZDo6bWFwPHVpbnQzMl90LCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsKj4gc3RhdGlzdGljaWFu
czsKKyAgeworICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZyZWNlaXZlX3N0YXRpc3RpY3NfbG9ja18p
OworICAgIG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZF8gPSBtYXhfcmVvcmRlcmluZ190aHJlc2hv
bGQ7CisgICAgc3RhdGlzdGljaWFucyA9IHN0YXRpc3RpY2lhbnNfOworICB9CisgIGZvciAoYXV0
byYgc3RhdGlzdGljaWFuIDogc3RhdGlzdGljaWFucykgewogICAgIHN0YXRpc3RpY2lhbi5zZWNv
bmQtPlNldE1heFJlb3JkZXJpbmdUaHJlc2hvbGQobWF4X3Jlb3JkZXJpbmdfdGhyZXNob2xkKTsK
ICAgfQogfQpAQCAtNDQwLDcgKzQyMyw5IEBAIHZvaWQgUmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjpF
bmFibGVSZXRyYW5zbWl0RGV0ZWN0aW9uKHVpbnQzMl90IHNzcmMsCiAgICAgcnRjOjpDcml0U2Nv
cGUgY3MoJnJlY2VpdmVfc3RhdGlzdGljc19sb2NrXyk7CiAgICAgU3RyZWFtU3RhdGlzdGljaWFu
SW1wbComIGltcGxfcmVmID0gc3RhdGlzdGljaWFuc19bc3NyY107CiAgICAgaWYgKGltcGxfcmVm
ID09IG51bGxwdHIpIHsgIC8vIG5ldyBlbGVtZW50Ci0gICAgICBpbXBsX3JlZiA9IG5ldyBTdHJl
YW1TdGF0aXN0aWNpYW5JbXBsKHNzcmMsIGNsb2NrXywgZW5hYmxlLCB0aGlzLCB0aGlzKTsKKyAg
ICAgIGltcGxfcmVmID0gbmV3IFN0cmVhbVN0YXRpc3RpY2lhbkltcGwoCisgICAgICAgICAgc3Ny
YywgY2xvY2tfLCBlbmFibGUsIG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZF8sIHJ0Y3Bfc3RhdHNf
Y2FsbGJhY2tfLAorICAgICAgICAgIHJ0cF9zdGF0c19jYWxsYmFja18pOwogICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpbXBsID0gaW1wbF9yZWY7CkBAIC00NDgsNDMgKzQzMyw2IEBAIHZvaWQg
UmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjpFbmFibGVSZXRyYW5zbWl0RGV0ZWN0aW9uKHVpbnQzMl90
IHNzcmMsCiAgIGltcGwtPkVuYWJsZVJldHJhbnNtaXREZXRlY3Rpb24oZW5hYmxlKTsKIH0KIAot
dm9pZCBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OlJlZ2lzdGVyUnRjcFN0YXRpc3RpY3NDYWxsYmFj
aygKLSAgICBSdGNwU3RhdGlzdGljc0NhbGxiYWNrKiBjYWxsYmFjaykgewotICBydGM6OkNyaXRT
Y29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKLSAgaWYgKGNhbGxiYWNrICE9IE5V
TEwpCi0gICAgYXNzZXJ0KHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfID09IE5VTEwpOwotICBydGNwX3N0
YXRzX2NhbGxiYWNrXyA9IGNhbGxiYWNrOwotfQotCi12b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1w
bDo6U3RhdGlzdGljc1VwZGF0ZWQoY29uc3QgUnRjcFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3Ny
YykgewotICBydGM6OkNyaXRTY29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKLSAg
aWYgKHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfKQotICAgIHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfLT5TdGF0
aXN0aWNzVXBkYXRlZChzdGF0aXN0aWNzLCBzc3JjKTsKLX0KLQotdm9pZCBSZWNlaXZlU3RhdGlz
dGljc0ltcGw6OkNOYW1lQ2hhbmdlZChjb25zdCBjaGFyKiBjbmFtZSwgdWludDMyX3Qgc3NyYykg
ewotICBydGM6OkNyaXRTY29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKLSAgaWYg
KHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfKQotICAgIHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfLT5DTmFtZUNo
YW5nZWQoY25hbWUsIHNzcmMpOwotfQotCi12b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6UmVn
aXN0ZXJSdHBTdGF0aXN0aWNzQ2FsbGJhY2soCi0gICAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJh
Y2sqIGNhbGxiYWNrKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZyZWNlaXZlX3N0YXRpc3RpY3Nf
bG9ja18pOwotICBpZiAoY2FsbGJhY2sgIT0gTlVMTCkKLSAgICBhc3NlcnQocnRwX3N0YXRzX2Nh
bGxiYWNrXyA9PSBOVUxMKTsKLSAgcnRwX3N0YXRzX2NhbGxiYWNrXyA9IGNhbGxiYWNrOwotfQot
Ci12b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6RGF0YUNvdW50ZXJzVXBkYXRlZChjb25zdCBT
dHJlYW1EYXRhQ291bnRlcnMmIHN0YXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYykgewotICBydGM6OkNyaXRTY29wZSBjcygm
cmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKLSAgaWYgKHJ0cF9zdGF0c19jYWxsYmFja18pIHsK
LSAgICBydHBfc3RhdHNfY2FsbGJhY2tfLT5EYXRhQ291bnRlcnNVcGRhdGVkKHN0YXRzLCBzc3Jj
KTsKLSAgfQotfQotCiBzdGQ6OnZlY3RvcjxydGNwOjpSZXBvcnRCbG9jaz4gUmVjZWl2ZVN0YXRp
c3RpY3NJbXBsOjpSdGNwUmVwb3J0QmxvY2tzKAogICAgIHNpemVfdCBtYXhfYmxvY2tzKSB7CiAg
IHN0ZDo6bWFwPHVpbnQzMl90LCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsKj4gc3RhdGlzdGljaWFu
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9yZWNlaXZlX3N0YXRpc3RpY3NfaW1wbC5oCmluZGV4IDU2YmZkMmI0YTQwNWNlNmQxNzg2
NTY2YmRkNjlhMWI5YzAzNTAxMGQuLjgxNTNjNDQwMGQ0MGJjZjU5NWZkYjgyMGRiODI5YTVhYWQ3
MmZkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcmVjZWl2ZV9zdGF0aXN0aWNzX2ltcGwuaApAQCAtMTksMTUgKzE5LDE3IEBA
CiAKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNf
YmFzZS9yYXRlX3N0YXRpc3RpY3MuaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVk
ZS9udHBfdGltZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3MgU3RyZWFtU3RhdGlzdGljaWFuSW1wbCA6IHB1
YmxpYyBTdHJlYW1TdGF0aXN0aWNpYW4geworY2xhc3MgU3RyZWFtU3RhdGlzdGljaWFuSW1wbCA6
IHB1YmxpYyBTdHJlYW1TdGF0aXN0aWNpYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFJ0cFBhY2tldFNpbmtJbnRlcmZhY2UgewogIHB1YmxpYzoKICAgU3RyZWFtU3Rh
dGlzdGljaWFuSW1wbCh1aW50MzJfdCBzc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgIENs
b2NrKiBjbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZV9yZXRyYW5z
bWl0X2RldGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X3Jlb3JkZXJp
bmdfdGhyZXNob2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BTdGF0aXN0aWNzQ2Fs
bGJhY2sqIHJ0Y3BfY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtRGF0
YUNvdW50ZXJzQ2FsbGJhY2sqIHJ0cF9jYWxsYmFjayk7CiAgIH5TdHJlYW1TdGF0aXN0aWNpYW5J
bXBsKCkgb3ZlcnJpZGU7CkBAIC00MSwyNCArNDMsMjIgQEAgY2xhc3MgU3RyZWFtU3RhdGlzdGlj
aWFuSW1wbCA6IHB1YmxpYyBTdHJlYW1TdGF0aXN0aWNpYW4gewogICAgICAgU3RyZWFtRGF0YUNv
dW50ZXJzKiBkYXRhX2NvdW50ZXJzKSBjb25zdCBvdmVycmlkZTsKICAgdWludDMyX3QgQml0cmF0
ZVJlY2VpdmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgdm9pZCBJbmNvbWluZ1BhY2tldChjb25z
dCBSVFBIZWFkZXImIHJ0cF9oZWFkZXIsIHNpemVfdCBwYWNrZXRfbGVuZ3RoKTsKLSAgdm9pZCBG
ZWNQYWNrZXRSZWNlaXZlZChjb25zdCBSVFBIZWFkZXImIGhlYWRlciwgc2l6ZV90IHBhY2tldF9s
ZW5ndGgpOworICAvLyBJbXBsZW1lbnRzIFJ0cFBhY2tldFNpbmtJbnRlcmZhY2UKKyAgdm9pZCBP
blJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSBvdmVycmlkZTsKKwor
ICB2b2lkIEZlY1BhY2tldFJlY2VpdmVkKGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQp
OwogICB2b2lkIFNldE1heFJlb3JkZXJpbmdUaHJlc2hvbGQoaW50IG1heF9yZW9yZGVyaW5nX3Ro
cmVzaG9sZCk7CiAgIHZvaWQgRW5hYmxlUmV0cmFuc21pdERldGVjdGlvbihib29sIGVuYWJsZSk7
CiAKICBwcml2YXRlOgotICBib29sIElzUmV0cmFuc21pdE9mT2xkUGFja2V0KGNvbnN0IFJUUEhl
YWRlciYgaGVhZGVyKSBjb25zdAotICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChz
dHJlYW1fbG9ja18pOwotICBib29sIEluT3JkZXJQYWNrZXRJbnRlcm5hbCh1aW50MTZfdCBzZXF1
ZW5jZV9udW1iZXIpIGNvbnN0CisgIGJvb2wgSXNSZXRyYW5zbWl0T2ZPbGRQYWNrZXQoY29uc3Qg
UnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IG5vd19tcykgY29uc3QKICAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlS
RUQoc3RyZWFtX2xvY2tfKTsKICAgUnRjcFN0YXRpc3RpY3MgQ2FsY3VsYXRlUnRjcFN0YXRpc3Rp
Y3MoKQogICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChzdHJlYW1fbG9ja18pOwot
ICB2b2lkIFVwZGF0ZUppdHRlcihjb25zdCBSVFBIZWFkZXImIGhlYWRlciwgTnRwVGltZSByZWNl
aXZlX3RpbWUpCi0gICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKHN0cmVhbV9sb2Nr
Xyk7Ci0gIFN0cmVhbURhdGFDb3VudGVycyBVcGRhdGVDb3VudGVycyhjb25zdCBSVFBIZWFkZXIm
IHJ0cF9oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
cGFja2V0X2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
cmV0cmFuc21pdHRlZCkKKyAgdm9pZCBVcGRhdGVKaXR0ZXIoY29uc3QgUnRwUGFja2V0UmVjZWl2
ZWQmIHBhY2tldCwgaW50NjRfdCByZWNlaXZlX3RpbWVfbXMpCiAgICAgICBSVENfRVhDTFVTSVZF
X0xPQ0tTX1JFUVVJUkVEKHN0cmVhbV9sb2NrXyk7CisgIFN0cmVhbURhdGFDb3VudGVycyBVcGRh
dGVDb3VudGVycyhjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KTsKIAogICBjb25zdCB1
aW50MzJfdCBzc3JjXzsKICAgQ2xvY2sqIGNvbnN0IGNsb2NrXzsKQEAgLTczLDE0ICs3MywxMiBA
QCBjbGFzcyBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsIDogcHVibGljIFN0cmVhbVN0YXRpc3RpY2lh
biB7CiAgIHVpbnQzMl90IGN1bXVsYXRpdmVfbG9zc18gUlRDX0dVQVJERURfQlkoJnN0cmVhbV9s
b2NrXyk7CiAKICAgaW50NjRfdCBsYXN0X3JlY2VpdmVfdGltZV9tc18gUlRDX0dVQVJERURfQlko
JnN0cmVhbV9sb2NrXyk7Ci0gIE50cFRpbWUgbGFzdF9yZWNlaXZlX3RpbWVfbnRwXyBSVENfR1VB
UkRFRF9CWSgmc3RyZWFtX2xvY2tfKTsKICAgdWludDMyX3QgbGFzdF9yZWNlaXZlZF90aW1lc3Rh
bXBfIFJUQ19HVUFSREVEX0JZKCZzdHJlYW1fbG9ja18pOwogICB1aW50MTZfdCByZWNlaXZlZF9z
ZXFfZmlyc3RfIFJUQ19HVUFSREVEX0JZKCZzdHJlYW1fbG9ja18pOwogICB1aW50MTZfdCByZWNl
aXZlZF9zZXFfbWF4XyBSVENfR1VBUkRFRF9CWSgmc3RyZWFtX2xvY2tfKTsKICAgdWludDE2X3Qg
cmVjZWl2ZWRfc2VxX3dyYXBzXyBSVENfR1VBUkRFRF9CWSgmc3RyZWFtX2xvY2tfKTsKIAogICAv
LyBDdXJyZW50IGNvdW50ZXIgdmFsdWVzLgotICBzaXplX3QgcmVjZWl2ZWRfcGFja2V0X292ZXJo
ZWFkXyBSVENfR1VBUkRFRF9CWSgmc3RyZWFtX2xvY2tfKTsKICAgU3RyZWFtRGF0YUNvdW50ZXJz
IHJlY2VpdmVfY291bnRlcnNfIFJUQ19HVUFSREVEX0JZKCZzdHJlYW1fbG9ja18pOwogCiAgIC8v
IENvdW50ZXIgdmFsdWVzIHdoZW4gd2Ugc2VudCB0aGUgbGFzdCByZXBvcnQuCkBAIC05NCw0NyAr
OTIsMzYgQEAgY2xhc3MgU3RyZWFtU3RhdGlzdGljaWFuSW1wbCA6IHB1YmxpYyBTdHJlYW1TdGF0
aXN0aWNpYW4gewogICBTdHJlYW1EYXRhQ291bnRlcnNDYWxsYmFjayogY29uc3QgcnRwX2NhbGxi
YWNrXzsKIH07CiAKLWNsYXNzIFJlY2VpdmVTdGF0aXN0aWNzSW1wbCA6IHB1YmxpYyBSZWNlaXZl
U3RhdGlzdGljcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBSdGNwU3Rh
dGlzdGljc0NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFN0
cmVhbURhdGFDb3VudGVyc0NhbGxiYWNrIHsKK2NsYXNzIFJlY2VpdmVTdGF0aXN0aWNzSW1wbCA6
IHB1YmxpYyBSZWNlaXZlU3RhdGlzdGljcyB7CiAgcHVibGljOgotICBleHBsaWNpdCBSZWNlaXZl
U3RhdGlzdGljc0ltcGwoQ2xvY2sqIGNsb2NrKTsKKyAgUmVjZWl2ZVN0YXRpc3RpY3NJbXBsKENs
b2NrKiBjbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJh
Y2sqIHJ0Y3BfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1EYXRhQ291
bnRlcnNDYWxsYmFjayogcnRwX2NhbGxiYWNrKTsKIAogICB+UmVjZWl2ZVN0YXRpc3RpY3NJbXBs
KCkgb3ZlcnJpZGU7CiAKLSAgLy8gSW1wbGVtZW50IFJlY2VpdmVTdGF0aXN0aWNzUHJvdmlkZXIu
CisgIC8vIEltcGxlbWVudHMgUmVjZWl2ZVN0YXRpc3RpY3NQcm92aWRlci4KICAgc3RkOjp2ZWN0
b3I8cnRjcDo6UmVwb3J0QmxvY2s+IFJ0Y3BSZXBvcnRCbG9ja3Moc2l6ZV90IG1heF9ibG9ja3Mp
IG92ZXJyaWRlOwogCi0gIC8vIEltcGxlbWVudCBSdHBQYWNrZXRTaW5rSW50ZXJmYWNlCisgIC8v
IEltcGxlbWVudHMgUnRwUGFja2V0U2lua0ludGVyZmFjZQogICB2b2lkIE9uUnRwUGFja2V0KGNv
bnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIG92ZXJyaWRlOwogCi0gIC8vIEltcGxlbWVu
dCBSZWNlaXZlU3RhdGlzdGljcy4KLSAgdm9pZCBJbmNvbWluZ1BhY2tldChjb25zdCBSVFBIZWFk
ZXImIGhlYWRlciwgc2l6ZV90IHBhY2tldF9sZW5ndGgpIG92ZXJyaWRlOworICAvLyBJbXBsZW1l
bnRzIFJlY2VpdmVTdGF0aXN0aWNzLgogICB2b2lkIEZlY1BhY2tldFJlY2VpdmVkKGNvbnN0IFJ0
cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIG92ZXJyaWRlOwogICBTdHJlYW1TdGF0aXN0aWNpYW4q
IEdldFN0YXRpc3RpY2lhbih1aW50MzJfdCBzc3JjKSBjb25zdCBvdmVycmlkZTsKICAgdm9pZCBT
ZXRNYXhSZW9yZGVyaW5nVGhyZXNob2xkKGludCBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGQpIG92
ZXJyaWRlOwogICB2b2lkIEVuYWJsZVJldHJhbnNtaXREZXRlY3Rpb24odWludDMyX3Qgc3NyYywg
Ym9vbCBlbmFibGUpIG92ZXJyaWRlOwogCi0gIHZvaWQgUmVnaXN0ZXJSdGNwU3RhdGlzdGljc0Nh
bGxiYWNrKAotICAgICAgUnRjcFN0YXRpc3RpY3NDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRl
OwotCi0gIHZvaWQgUmVnaXN0ZXJSdHBTdGF0aXN0aWNzQ2FsbGJhY2soCi0gICAgICBTdHJlYW1E
YXRhQ291bnRlcnNDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwotCiAgcHJpdmF0ZToKLSAg
dm9pZCBTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBSdGNwU3RhdGlzdGljcyYgc3RhdGlzdGljcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzc3JjKSBvdmVycmlkZTsKLSAgdm9p
ZCBDTmFtZUNoYW5nZWQoY29uc3QgY2hhciogY25hbWUsIHVpbnQzMl90IHNzcmMpIG92ZXJyaWRl
OwotICB2b2lkIERhdGFDb3VudGVyc1VwZGF0ZWQoY29uc3QgU3RyZWFtRGF0YUNvdW50ZXJzJiBj
b3VudGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNzcmMpIG92ZXJy
aWRlOwotCiAgIENsb2NrKiBjb25zdCBjbG9ja187CiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHJl
Y2VpdmVfc3RhdGlzdGljc19sb2NrXzsKICAgdWludDMyX3QgbGFzdF9yZXR1cm5lZF9zc3JjXzsK
LSAgc3RkOjptYXA8dWludDMyX3QsIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwqPiBzdGF0aXN0aWNp
YW5zXzsKKyAgaW50IG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZF8gUlRDX0dVQVJERURfQlkocmVj
ZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKKyAgc3RkOjptYXA8dWludDMyX3QsIFN0cmVhbVN0YXRp
c3RpY2lhbkltcGwqPiBzdGF0aXN0aWNpYW5zXworICAgICAgUlRDX0dVQVJERURfQlkocmVjZWl2
ZV9zdGF0aXN0aWNzX2xvY2tfKTsKIAotICBSdGNwU3RhdGlzdGljc0NhbGxiYWNrKiBydGNwX3N0
YXRzX2NhbGxiYWNrXzsKLSAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIHJ0cF9zdGF0c19j
YWxsYmFja187CisgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIGNvbnN0IHJ0Y3Bfc3RhdHNfY2Fs
bGJhY2tfOworICBTdHJlYW1EYXRhQ291bnRlcnNDYWxsYmFjayogY29uc3QgcnRwX3N0YXRzX2Nh
bGxiYWNrXzsKIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAjZW5kaWYgIC8vIE1PRFVMRVNf
UlRQX1JUQ1BfU09VUkNFX1JFQ0VJVkVfU1RBVElTVElDU19JTVBMX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9yZWNlaXZlX3N0YXRpc3RpY3NfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZWNlaXZl
X3N0YXRpc3RpY3NfdW5pdHRlc3QuY2MKaW5kZXggMTg0NDhjYjc3ZWM2ZTU1NTFiOTJkODFkOWRl
YTJkNTVhYWJmZjhlNy4uMjUzOTM2MzFkZjliODliY2UxZDcxOTc5MWIzZGIwNmQ4NDgyNjVkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVjZWl2ZV9zdGF0aXN0aWNzX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc191bml0dGVzdC5jYwpAQCAtNDgsMTAgKzQ4LDcg
QEAgUnRwUGFja2V0UmVjZWl2ZWQgQ3JlYXRlUnRwUGFja2V0KHVpbnQzMl90IHNzcmMsCiAgICAg
cGFja2V0LlNldENzcmNzKGNzcmNzKTsKICAgfQogICBwYWNrZXQuU2V0UGF5bG9hZFNpemUocGF5
bG9hZF9zaXplKTsKLSAgaWYgKHBhZGRpbmdfc2l6ZSA+IDApIHsKLSAgICBSYW5kb20gcmFuZG9t
KDE3KTsKLSAgICBwYWNrZXQuU2V0UGFkZGluZyhwYWRkaW5nX3NpemUsICZyYW5kb20pOwotICB9
CisgIHBhY2tldC5TZXRQYWRkaW5nKHBhZGRpbmdfc2l6ZSk7CiAgIHJldHVybiBwYWNrZXQ7CiB9
CiAKQEAgLTc0LDcgKzcxLDkgQEAgdm9pZCBJbmNyZW1lbnRUaW1lc3RhbXAoUnRwUGFja2V0UmVj
ZWl2ZWQqIHBhY2tldCwgdWludDMyX3QgaW5jcikgewogY2xhc3MgUmVjZWl2ZVN0YXRpc3RpY3NU
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgcHVibGljOgogICBSZWNlaXZlU3RhdGlz
dGljc1Rlc3QoKQotICAgICAgOiBjbG9ja18oMCksIHJlY2VpdmVfc3RhdGlzdGljc18oUmVjZWl2
ZVN0YXRpc3RpY3M6OkNyZWF0ZSgmY2xvY2tfKSkgeworICAgICAgOiBjbG9ja18oMCksCisgICAg
ICAgIHJlY2VpdmVfc3RhdGlzdGljc18oCisgICAgICAgICAgICBSZWNlaXZlU3RhdGlzdGljczo6
Q3JlYXRlKCZjbG9ja18sIG51bGxwdHIsIG51bGxwdHIpKSB7CiAgICAgcGFja2V0MV8gPSBDcmVh
dGVSdHBQYWNrZXQoa1NzcmMxLCBrUGFja2V0U2l6ZTEpOwogICAgIHBhY2tldDJfID0gQ3JlYXRl
UnRwUGFja2V0KGtTc3JjMiwga1BhY2tldFNpemUyKTsKICAgfQpAQCAtMjU0LDcgKzI1Myw3IEBA
IFRFU1RfRihSZWNlaXZlU3RhdGlzdGljc1Rlc3QsIFJ0Y3BDYWxsYmFja3MpIHsKICAgICBSdGNw
U3RhdGlzdGljcyBzdGF0c187CiAgIH0gY2FsbGJhY2s7CiAKLSAgcmVjZWl2ZV9zdGF0aXN0aWNz
Xy0+UmVnaXN0ZXJSdGNwU3RhdGlzdGljc0NhbGxiYWNrKCZjYWxsYmFjayk7CisgIHJlY2VpdmVf
c3RhdGlzdGljc18gPSBSZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRlKCZjbG9ja18sICZjYWxsYmFj
aywgbnVsbHB0cik7CiAgIHJlY2VpdmVfc3RhdGlzdGljc18tPkVuYWJsZVJldHJhbnNtaXREZXRl
Y3Rpb24oa1NzcmMxLCB0cnVlKTsKIAogICAvLyBBZGQgc29tZSBhcmJpdHJhcnkgZGF0YSwgd2l0
aCBsb3NzIGFuZCBqaXR0ZXIuCkBAIC0yOTQsMzMgKzI5Myw2IEBAIFRFU1RfRihSZWNlaXZlU3Rh
dGlzdGljc1Rlc3QsIFJ0Y3BDYWxsYmFja3MpIHsKICAgRVhQRUNUX0VRKDEsIHN0YXRpc3RpY3Mu
cGFja2V0c19sb3N0KTsKICAgRVhQRUNUX0VRKDV1LCBzdGF0aXN0aWNzLmV4dGVuZGVkX2hpZ2hl
c3Rfc2VxdWVuY2VfbnVtYmVyKTsKICAgRVhQRUNUX0VRKDE3N3UsIHN0YXRpc3RpY3Muaml0dGVy
KTsKLQotICByZWNlaXZlX3N0YXRpc3RpY3NfLT5SZWdpc3RlclJ0Y3BTdGF0aXN0aWNzQ2FsbGJh
Y2soTlVMTCk7Ci0KLSAgLy8gQWRkIHNvbWUgbW9yZSBkYXRhLgotICBwYWNrZXQxXy5TZXRTZXF1
ZW5jZU51bWJlcigxKTsKLSAgY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDcpOwotICBJ
bmNyZW1lbnRUaW1lc3RhbXAoJnBhY2tldDFfLCAzKTsKLSAgcmVjZWl2ZV9zdGF0aXN0aWNzXy0+
T25SdHBQYWNrZXQocGFja2V0MV8pOwotICBJbmNyZW1lbnRTZXF1ZW5jZU51bWJlcigmcGFja2V0
MV8sIDIpOwotICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoOSk7Ci0gIEluY3JlbWVu
dFRpbWVzdGFtcCgmcGFja2V0MV8sIDkpOwotICByZWNlaXZlX3N0YXRpc3RpY3NfLT5PblJ0cFBh
Y2tldChwYWNrZXQxXyk7Ci0gIEluY3JlbWVudFNlcXVlbmNlTnVtYmVyKCZwYWNrZXQxXywgLTEp
OwotICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTMpOwotICBJbmNyZW1lbnRUaW1l
c3RhbXAoJnBhY2tldDFfLCA0Nyk7Ci0gIHJlY2VpdmVfc3RhdGlzdGljc18tPk9uUnRwUGFja2V0
KHBhY2tldDFfKTsKLSAgSW5jcmVtZW50U2VxdWVuY2VOdW1iZXIoJnBhY2tldDFfLCAzKTsKLSAg
Y2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDExKTsKLSAgSW5jcmVtZW50VGltZXN0YW1w
KCZwYWNrZXQxXywgMTcpOwotICByZWNlaXZlX3N0YXRpc3RpY3NfLT5PblJ0cFBhY2tldChwYWNr
ZXQxXyk7Ci0gIEluY3JlbWVudFNlcXVlbmNlTnVtYmVyKCZwYWNrZXQxXyk7Ci0KLSAgcmVjZWl2
ZV9zdGF0aXN0aWNzXy0+R2V0U3RhdGlzdGljaWFuKGtTc3JjMSktPkdldFN0YXRpc3RpY3MoJnN0
YXRpc3RpY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRydWUpOwotCi0gIC8vIFNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxl
ZCBhZnRlciBkZXJlZ2lzdGVyLgotICBFWFBFQ1RfRVEoMXUsIGNhbGxiYWNrLm51bV9jYWxsc18p
OwogfQogCiBjbGFzcyBSdHBUZXN0Q2FsbGJhY2sgOiBwdWJsaWMgU3RyZWFtRGF0YUNvdW50ZXJz
Q2FsbGJhY2sgewpAQCAtMzYxLDcgKzMzMyw3IEBAIGNsYXNzIFJ0cFRlc3RDYWxsYmFjayA6IHB1
YmxpYyBTdHJlYW1EYXRhQ291bnRlcnNDYWxsYmFjayB7CiAKIFRFU1RfRihSZWNlaXZlU3RhdGlz
dGljc1Rlc3QsIFJ0cENhbGxiYWNrcykgewogICBSdHBUZXN0Q2FsbGJhY2sgY2FsbGJhY2s7Ci0g
IHJlY2VpdmVfc3RhdGlzdGljc18tPlJlZ2lzdGVyUnRwU3RhdGlzdGljc0NhbGxiYWNrKCZjYWxs
YmFjayk7CisgIHJlY2VpdmVfc3RhdGlzdGljc18gPSBSZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRl
KCZjbG9ja18sIG51bGxwdHIsICZjYWxsYmFjayk7CiAgIHJlY2VpdmVfc3RhdGlzdGljc18tPkVu
YWJsZVJldHJhbnNtaXREZXRlY3Rpb24oa1NzcmMxLCB0cnVlKTsKIAogICBjb25zdCBzaXplX3Qg
a0hlYWRlckxlbmd0aCA9IDIwOwpAQCAtNDIwLDE5ICszOTIsMTEgQEAgVEVTVF9GKFJlY2VpdmVT
dGF0aXN0aWNzVGVzdCwgUnRwQ2FsbGJhY2tzKSB7CiAgIGV4cGVjdGVkLmZlYy5oZWFkZXJfYnl0
ZXMgPSBrSGVhZGVyTGVuZ3RoOwogICBleHBlY3RlZC5mZWMucGFja2V0cyA9IDE7CiAgIGNhbGxi
YWNrLk1hdGNoZXMoNSwga1NzcmMxLCBleHBlY3RlZCk7Ci0KLSAgcmVjZWl2ZV9zdGF0aXN0aWNz
Xy0+UmVnaXN0ZXJSdHBTdGF0aXN0aWNzQ2FsbGJhY2soTlVMTCk7Ci0KLSAgLy8gTmV3IHN0YXRz
LCBidXQgY2FsbGJhY2sgc2hvdWxkIG5vdCBiZSBjYWxsZWQuCi0gIEluY3JlbWVudFNlcXVlbmNl
TnVtYmVyKCZwYWNrZXQxKTsKLSAgY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDUpOwot
ICByZWNlaXZlX3N0YXRpc3RpY3NfLT5PblJ0cFBhY2tldChwYWNrZXQxKTsKLSAgY2FsbGJhY2su
TWF0Y2hlcyg1LCBrU3NyYzEsIGV4cGVjdGVkKTsKIH0KIAogVEVTVF9GKFJlY2VpdmVTdGF0aXN0
aWNzVGVzdCwgUnRwQ2FsbGJhY2tzRmVjRmlyc3QpIHsKICAgUnRwVGVzdENhbGxiYWNrIGNhbGxi
YWNrOwotICByZWNlaXZlX3N0YXRpc3RpY3NfLT5SZWdpc3RlclJ0cFN0YXRpc3RpY3NDYWxsYmFj
aygmY2FsbGJhY2spOworICByZWNlaXZlX3N0YXRpc3RpY3NfID0gUmVjZWl2ZVN0YXRpc3RpY3M6
OkNyZWF0ZSgmY2xvY2tfLCBudWxscHRyLCAmY2FsbGJhY2spOwogCiAgIGNvbnN0IHVpbnQzMl90
IGtIZWFkZXJMZW5ndGggPSAyMDsKICAgUnRwUGFja2V0UmVjZWl2ZWQgcGFja2V0ID0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
ZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yLmNjCmluZGV4IGZjODY3YTQ5MWEzNzQ5ODk2NjIwZmNm
ODc2MzBiZWFmMWYxODIwOGUuLmZkMTliMTM4M2E0NGUzYzhlOWZhZWI2ODM3YjNkYmQzZjIwOGUy
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3IuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcmVtb3RlX250cF90aW1lX2VzdGltYXRvci5jYwpAQCAtMTAsOCArMTAsOSBA
QAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlbW90ZV9udHBfdGltZV9l
c3RpbWF0b3IuaCIKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisKICNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGltZS90aW1lc3RhbXBfZXh0cmFwb2xhdG9y
LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1h
dG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVtb3RlX250cF90aW1lX2VzdGltYXRvcl91bml0
dGVzdC5jYwppbmRleCA1MjU0Y2Q1N2JiOTMzYjQxMDg5NGQxMmZhYzc3MTVlYWY5MWQyZjBmLi5i
MzAxNDYxNDI3YjY5N2M5NTA0OTYxOWIwYmE1YjdkYThjM2U4ODgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKQEAgLTU2LDcgKzU2LDggQEAg
Y2xhc3MgUmVtb3RlTnRwVGltZUVzdGltYXRvclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgbmV0d29ya2luZ19kZWxh
eV9tcykgewogICAgIHVpbnQzMl90IHJ0Y3BfdGltZXN0YW1wID0gR2V0UmVtb3RlVGltZXN0YW1w
KCk7CiAgICAgaW50NjRfdCBudHBfZXJyb3JfZnJhY3Rpb25zID0KLSAgICAgICAgbnRwX2Vycm9y
X21zICogTnRwVGltZTo6a0ZyYWN0aW9uc1BlclNlY29uZCAvIDEwMDA7CisgICAgICAgIG50cF9l
cnJvcl9tcyAqIHN0YXRpY19jYXN0PGludDY0X3Q+KE50cFRpbWU6OmtGcmFjdGlvbnNQZXJTZWNv
bmQpIC8KKyAgICAgICAgMTAwMDsKICAgICBOdHBUaW1lIG50cChzdGF0aWNfY2FzdDx1aW50NjRf
dD4ocmVtb3RlX2Nsb2NrXy5DdXJyZW50TnRwVGltZSgpKSArCiAgICAgICAgICAgICAgICAgbnRw
X2Vycm9yX2ZyYWN0aW9ucyk7CiAgICAgQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa1Rlc3RSdHQg
LyAyICsgbmV0d29ya2luZ19kZWxheV9tcyk7CkBAIC0xMTAsNyArMTExLDE3IEBAIFRFU1RfRihS
ZW1vdGVOdHBUaW1lRXN0aW1hdG9yVGVzdCwgRXN0aW1hdGUpIHsKIH0KIAogVEVTVF9GKFJlbW90
ZU50cFRpbWVFc3RpbWF0b3JUZXN0LCBBdmVyYWdlc0Vycm9yc091dCkgewotICAvLyBSZW1vdGUg
cGVlciBzZW5kcyBmaXJzdCA1IFJUQ1AgU1Igd2l0aG91dCBlcnJvcnMuCisgIC8vIFJlbW90ZSBw
ZWVyIHNlbmRzIGZpcnN0IDEwIFJUQ1AgU1Igd2l0aG91dCBlcnJvcnMuCisgIEFkdmFuY2VUaW1l
TWlsbGlzZWNvbmRzKDEwMDApOworICBTZW5kUnRjcFNyKCk7CisgIEFkdmFuY2VUaW1lTWlsbGlz
ZWNvbmRzKDEwMDApOworICBTZW5kUnRjcFNyKCk7CisgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRz
KDEwMDApOworICBTZW5kUnRjcFNyKCk7CisgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDAp
OworICBTZW5kUnRjcFNyKCk7CisgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDApOworICBT
ZW5kUnRjcFNyKCk7CiAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDApOwogICBTZW5kUnRj
cFNyKCk7CiAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDApOwpAQCAtMTIyLDE4ICsxMzMs
MTcgQEAgVEVTVF9GKFJlbW90ZU50cFRpbWVFc3RpbWF0b3JUZXN0LCBBdmVyYWdlc0Vycm9yc091
dCkgewogICBBZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKICAgU2VuZFJ0Y3BTcigpOwog
Ci0gIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDE1KTsKKyAgQWR2YW5jZVRpbWVNaWxsaXNlY29u
ZHMoMTUwKTsKICAgdWludDMyX3QgcnRwX3RpbWVzdGFtcCA9IEdldFJlbW90ZVRpbWVzdGFtcCgp
OwogICBpbnQ2NF90IGNhcHR1cmVfbnRwX3RpbWVfbXMgPSBsb2NhbF9jbG9ja18uQ3VycmVudE50
cEluTWlsbGlzZWNvbmRzKCk7Ci0KICAgLy8gTG9jYWwgcGVlciBnZXRzIGVub3VnaCBSVENQIFNS
IHRvIGNhbGN1bGF0ZSB0aGUgY2FwdHVyZSB0aW1lLgogICBFWFBFQ1RfRVEoY2FwdHVyZV9udHBf
dGltZV9tcywgZXN0aW1hdG9yXy0+RXN0aW1hdGUocnRwX3RpbWVzdGFtcCkpOwogCiAgIC8vIFJl
bW90ZSBzZW5kcyBjb3JydXB0ZWQgUlRDUCBTUnMKICAgQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMo
MTAwMCk7Ci0gIFNlbmRSdGNwU3JJbmFjY3VyYXRlbHkoMTAsIDEwKTsKKyAgU2VuZFJ0Y3BTcklu
YWNjdXJhdGVseSgvKm50cF9lcnJvcl9tcz0qLzIsIC8qbmV0d29ya2luZ19kZWxheV9tcz0qLy0x
KTsKICAgQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwMCk7Ci0gIFNlbmRSdGNwU3JJbmFjY3Vy
YXRlbHkoLTIwLCA1KTsKKyAgU2VuZFJ0Y3BTckluYWNjdXJhdGVseSgvKm50cF9lcnJvcl9tcz0q
Ly0yLCAvKm5ldHdvcmtpbmdfZGVsYXlfbXM9Ki8xKTsKIAogICAvLyBOZXcgUlRQIHBhY2tldCB0
byBlc3RpbWF0ZSB0aW1lc3RhbXAuCiAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDE1MCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX25hY2tfc3RhdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX25h
Y2tfc3RhdHMuY2MKaW5kZXggMjRiNzA4NTAyZWU2YzI3NTFhZWViMGMxYjQxZDQzZGMwMzE2NjQ0
ZC4uMWQ2NTJkMGI1YmE3YmM3NTgxYmUwYmY5MjBhYTUxNGE2OGUyYmU5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF9uYWNrX3N0YXRzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfbmFja19zdGF0
cy5jYwpAQCAtMTAsNyArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9uYWNrX3N0YXRzLmgiCiAKLSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxl
X2NvbW1vbl90eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9u
X3R5cGVzX3B1YmxpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9wYWNrZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0LmgKaW5kZXggMTEwMzdj
YmQ4MmQ2MjczNzZiY2RhYWI0OTc5MjRkZDUzZGJhNTZkNS4uNDBlNTFlODdhZDMzZDZmMGEwMDQx
N2FjZTgwYjJkMGIwZTFlYmRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC5oCkBAIC0xMSw2ICsxMSwxMCBAQAogI2lmbmRlZiBN
T0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVENQX1BBQ0tFVF9IXwogI2RlZmluZSBNT0RVTEVTX1JU
UF9SVENQX1NPVVJDRV9SVENQX1BBQ0tFVF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5j
bHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Z1bmN0aW9uX3ZpZXcuaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYXBwLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQvYXBwLmNjCmluZGV4IDRlMjFiYzkzZTQ4Nzk5MDBhNzk4OTM0NDc2NDY3YzQyMTNl
ZTk5ZTAuLmVhZGQ0ZDljMzUyZjhmZmY0NzNmYTM2ZDE0NTU4YjMzNWRhODgyYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2FwcC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tl
dC9hcHAuY2MKQEAgLTEwLDYgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0Y3BfcGFja2V0L2FwcC5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8Y3N0ZGludD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8u
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9jb21tb25f
aGVhZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC9hcHAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2FwcC5oCmluZGV4
IDE5YTk3ZTBlZDkyMGEzMWE1NGFlMjVkMzdiNjQzNWRlMWI5MDY1ZmYuLmE5NjAyYTgwY2ZiNWE4
NzhiOGI1YmNkMzY5ZjA0NWI4MDk4NDYxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFj
a2V0L2FwcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2FwcC5oCkBAIC0xMSw2ICsxMSw5
IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfUEFDS0VUX0FQUF9IXwog
I2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVENQX1BBQ0tFVF9BUFBfSF8KIAorI2lu
Y2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZm
ZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYnllLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9wYWNrZXQvYnllLmNjCmluZGV4IDBlMmViOWU0MWEzZTFkMmMyNzY1MmM1ZTEwNTgw
ZjYxOTk5OTczYTQuLjIzYWMzNWY4NTZiNTM4OTEzM2RkMGZiNTRkOGY3ZTU5NzEzZTNmYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2J5ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC9ieWUuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2J5ZS5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+Cisj
aW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9w
YWNrZXQvZXh0ZW5kZWRfaml0dGVyX3JlcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2V4
dGVuZGVkX2ppdHRlcl9yZXBvcnQuY2MKaW5kZXggMjdlZDRjY2VmNGY2MzIxYWEyM2U4NjFmZDNk
ZjJjM2NjNGQ5MjY1NC4uNWU3ZGFkZDFmNDgyYTExZDM4ZGVhMGJhN2YxNGIxZTRhZDZjNTk3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvZXh0ZW5kZWRfaml0dGVyX3JlcG9ydC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRlZF9qaXR0ZXJfcmVwb3J0LmNjCkBA
IC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC9leHRlbmRlZF9qaXR0ZXJfcmVwb3J0LmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50Pgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9i
eXRlX2lvLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRlZF9yZXBv
cnRzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvZXh0ZW5kZWRfcmVwb3J0cy5jYwppbmRleCA1
NTEzZjM3ZGJhMGIxZjM3NGI3YzEzYTIzZjlhYTJjNzZhZjc0MGFjLi4yYjVmOWNhY2Q3MjgyMTM5
MmJiODhiMmUzOTE5MTdjOWIzMmY4YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tl
dC9leHRlbmRlZF9yZXBvcnRzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2V4dGVuZGVk
X3JlcG9ydHMuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0Y3BfcGFja2V0L2V4dGVuZGVkX3JlcG9ydHMuaCIKIAorI2luY2x1ZGUgPHZl
Y3Rvcj4KKwogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9jb21tb25faGVhZGVy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3BhY2tldC9uYWNrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvbmFjay5jYwppbmRleCA2
YTRhMGJkYzBlNDNiYTdjMzQ4ZWZmNzVjMDlmYTM5Zjk4MjFkNTZhLi42ZmU3ZWFkZTYyYjY0Nzgw
OTZiMmRiYmFkZTIzY2IzMjgzNWQ5MWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tl
dC9uYWNrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L25hY2suY2MKQEAgLTExLDYgKzEx
LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9uYWNr
LmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRl
IDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcHNmYi5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQvcHNmYi5oCmluZGV4IGFlNjZhMTcyMzg3ZWNjODZlMTc3ZjEzNTdjMTY2ZTEyMzM5
ZGFlYzYuLjQ2ZWUyOTEyODUwNDYwODViZjQzMzYzY2ZlNWY5NjViYzE2Mjg3YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3BzZmIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tl
dC9wc2ZiLmgKQEAgLTEyLDYgKzEyLDkgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VS
Q0VfUlRDUF9QQUNLRVRfUFNGQl9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9S
VENQX1BBQ0tFVF9QU0ZCX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRp
bnQuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0Lmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
cmVjZWl2ZXJfcmVwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9yZWNlaXZlcl9yZXBvcnQu
aAppbmRleCA4ZjE0M2RhNzJjMDkwMWVmNjNjMGFhZGEyYzI4OWRlYzk0MDU3YTgyLi43NDcwZDFk
MmUxMGFiYjcyY2RiN2RhZjUzMDRiZjM0NDEyYTgyOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3BhY2tldC9yZWNlaXZlcl9yZXBvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9y
ZWNlaXZlcl9yZXBvcnQuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9S
VENQX1NPVVJDRV9SVENQX1BBQ0tFVF9SRUNFSVZFUl9SRVBPUlRfSF8KICNkZWZpbmUgTU9EVUxF
U19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRfUkVDRUlWRVJfUkVQT1JUX0hfCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVtYi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0
L3JlbWIuY2MKaW5kZXggMDI0MDYxMTZmNmU3OTNlNmIwMmI2NDY2ZmE4OTM5MDIyMTY1YjljOS4u
M2VkMWZiZGI4MDNlNjQzNGExZjI1NTg1YmFiYmU0YTU5ZTZhZWNmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9wYWNrZXQvcmVtYi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9yZW1i
LmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydGNwX3BhY2tldC9yZW1iLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHV0
aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ycnRyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3Bh
Y2tldC9ycnRyLmgKaW5kZXggYTQ3MGIxYTIxN2M1NTZiNTMwNDg2ZThhODA1ZjRiMmJlYmQ4MWMz
My4uOGViNGNlNjJhZGVmOGI4NmE4YWQ2ZDlmZDVkN2NkNzU2NjgxMWI5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF9wYWNrZXQvcnJ0ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3Jy
dHIuaApAQCAtMTIsNiArMTIsOSBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9S
VENQX1BBQ0tFVF9SUlRSX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1Bf
UEFDS0VUX1JSVFJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5o
PgorCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbnRwX3RpbWUuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ydHBmYi5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcnRwZmIuaAppbmRleCBhMDQwNzQxMWFiMzg4MDBjMDk2
YmJiMTZhMTgyZmE2ODU5NGQxNGRmLi4yMTk3NzczNmI2MTllNDg3YmU4ZDllOWMwZGFmYzI5ZWQ2
NTc2NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ydHBmYi5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0Y3BfcGFja2V0L3J0cGZiLmgKQEAgLTEyLDYgKzEyLDkgQEAKICNpZm5kZWYgTU9E
VUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRfUlRQRkJfSF8KICNkZWZpbmUgTU9EVUxF
U19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRfUlRQRkJfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9wYWNrZXQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3BhY2tldC9zZGVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvc2Rlcy5j
YwppbmRleCAzMzdjOGIwNGE4NDg3MDkyZTQ2Y2UwYTM2ODI4ZTQzZjQ0MmNlZDdiLi4wZWY0MzI5
MDNkYjU1ZWZmNDcyMTYzMjQ1NWIwODNjOTQxN2VhODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3BhY2tldC9zZGVzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3NkZXMuY2MKQEAg
LTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
cGFja2V0L3NkZXMuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHV0aWxpdHk+
CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1ibi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0
L3RtbWJuLmNjCmluZGV4IDRkMzhiM2I2ZGJiMzA5MWQ1ZDI5ZjhjZjAxZWE1ZDVjM2QzYjZlMjgu
LmY1N2U1NzQ5YzJkZWQwNWE5Y2ExYmMyZjg2MjBjN2FlMjMxZmNjZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0Y3BfcGFja2V0L3RtbWJuLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3Rt
bWJuLmNjCkBAIC0xMCw3ICsxMCw2IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC90bW1ibi5oIgogCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvYnl0ZV9pby5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
cGFja2V0L2NvbW1vbl9oZWFkZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3Bh
Y2tldC90bW1ici5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJyLmNjCmluZGV4IGQ4ZjA3
M2I4N2YzMDlkZjQ2NDliNTY5ZDM5NThiOTdkOTc1NTRhOTcuLjlkYzc0NWU1MDljNDhhMDkwZTgx
ZjkyZTk4MzA4MzM5YTFmMzVhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3Rt
bWJyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJyLmNjCkBAIC0xMCw3ICsxMCw2
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1i
ci5oIgogCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2NvbW1vbl9oZWFkZXIu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRfZmVlZGJh
Y2suY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRfZmVlZGJhY2suY2MKaW5kZXgg
NDcwM2QzMTMyZWU4NzJiM2I4OTE3ZGFkNjA4NTFjM2I0ODkzYTM1NC4uMjgxNjU1OTRiZWM0Yzk5
NWUwOTBhYWJlY2RjYmFiYjY2NDc3ODZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNr
ZXQvdHJhbnNwb3J0X2ZlZWRiYWNrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RyYW5z
cG9ydF9mZWVkYmFjay5jYwpAQCAtMTEsOSArMTEsMTAgQEAKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRfZmVlZGJhY2suaCIKIAogI2luY2x1
ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAK
LSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9jb21tb25faGVhZGVyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZlci5jYwppbmRleCA0OTY2NzU0OTdhZDIzZTNiNWNlY2M0
NDExOGY5YmM0N2M2ODIyNjhjLi4zODNmNzg1ZGZlYTgyMDYyMjUxZDBhNGZjYTcxZTZmYWI5YTI3
OGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0Y3BfcmVjZWl2ZXIuY2MKQEAgLTEzMSw2ICsxMzEsNyBAQCBSVENQUmVjZWl2ZXI6OlJUQ1BS
ZWNlaXZlcigKICAgICBSdGNwSW50cmFGcmFtZU9ic2VydmVyKiBydGNwX2ludHJhX2ZyYW1lX29i
c2VydmVyLAogICAgIFRyYW5zcG9ydEZlZWRiYWNrT2JzZXJ2ZXIqIHRyYW5zcG9ydF9mZWVkYmFj
a19vYnNlcnZlciwKICAgICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2JzZXJ2ZXIqIGJpdHJhdGVf
YWxsb2NhdGlvbl9vYnNlcnZlciwKKyAgICBpbnQgcmVwb3J0X2ludGVydmFsX21zLAogICAgIE1v
ZHVsZVJ0cFJ0Y3AqIG93bmVyKQogICAgIDogY2xvY2tfKGNsb2NrKSwKICAgICAgIHJlY2VpdmVy
X29ubHlfKHJlY2VpdmVyX29ubHkpLApAQCAtMTM5LDYgKzE0MCw3IEBAIFJUQ1BSZWNlaXZlcjo6
UlRDUFJlY2VpdmVyKAogICAgICAgcnRjcF9pbnRyYV9mcmFtZV9vYnNlcnZlcl8ocnRjcF9pbnRy
YV9mcmFtZV9vYnNlcnZlciksCiAgICAgICB0cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2ZXJfKHRy
YW5zcG9ydF9mZWVkYmFja19vYnNlcnZlciksCiAgICAgICBiaXRyYXRlX2FsbG9jYXRpb25fb2Jz
ZXJ2ZXJfKGJpdHJhdGVfYWxsb2NhdGlvbl9vYnNlcnZlciksCisgICAgICByZXBvcnRfaW50ZXJ2
YWxfbXNfKHJlcG9ydF9pbnRlcnZhbF9tcyksCiAgICAgICBtYWluX3NzcmNfKDApLAogICAgICAg
cmVtb3RlX3NzcmNfKDApLAogICAgICAgcmVtb3RlX3NlbmRlcl9ydHBfdGltZV8oMCksCkBAIC0y
ODAsNyArMjgyLDggQEAgUlRDUFJlY2VpdmVyOjpDb25zdW1lUmVjZWl2ZWRYclJlZmVyZW5jZVRp
bWVJbmZvKCkgewogICBzdGQ6OnZlY3RvcjxydGNwOjpSZWNlaXZlVGltZUluZm8+IGxhc3RfeHJf
cnRpczsKICAgbGFzdF94cl9ydGlzLnJlc2VydmUobGFzdF94cl9ydGlzX3NpemUpOwogCi0gIGNv
bnN0IHVpbnQzMl90IG5vd19udHAgPSBDb21wYWN0TnRwKGNsb2NrXy0+Q3VycmVudE50cFRpbWUo
KSk7CisgIGNvbnN0IHVpbnQzMl90IG5vd19udHAgPQorICAgICAgQ29tcGFjdE50cChUaW1lTWlj
cm9zVG9OdHAoY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSkpOwogCiAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGFzdF94cl9ydGlzX3NpemU7ICsraSkgewogICAgIFJydHJJbmZvcm1hdGlv
biYgcnJ0ciA9IHJlY2VpdmVkX3JydHJzXy5mcm9udCgpOwpAQCAtNDI3LDcgKzQzMCw3IEBAIHZv
aWQgUlRDUFJlY2VpdmVyOjpIYW5kbGVTZW5kZXJSZXBvcnQoY29uc3QgQ29tbW9uSGVhZGVyJiBy
dGNwX2Jsb2NrLAogCiAgICAgcmVtb3RlX3NlbmRlcl9udHBfdGltZV8gPSBzZW5kZXJfcmVwb3J0
Lm50cCgpOwogICAgIHJlbW90ZV9zZW5kZXJfcnRwX3RpbWVfID0gc2VuZGVyX3JlcG9ydC5ydHBf
dGltZXN0YW1wKCk7Ci0gICAgbGFzdF9yZWNlaXZlZF9zcl9udHBfID0gY2xvY2tfLT5DdXJyZW50
TnRwVGltZSgpOworICAgIGxhc3RfcmVjZWl2ZWRfc3JfbnRwXyA9IFRpbWVNaWNyb3NUb050cChj
bG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKICAgfSBlbHNlIHsKICAgICAvLyBXZSB3aWxs
IG9ubHkgc3RvcmUgdGhlIHNlbmQgcmVwb3J0IGZyb20gb25lIHNvdXJjZSwgYnV0CiAgICAgLy8g
d2Ugd2lsbCBzdG9yZSBhbGwgdGhlIHJlY2VpdmUgYmxvY2tzLgpAQCAtNTAzLDEwICs1MDYsMTgg
QEAgdm9pZCBSVENQUmVjZWl2ZXI6OkhhbmRsZVJlcG9ydEJsb2NrKGNvbnN0IFJlcG9ydEJsb2Nr
JiByZXBvcnRfYmxvY2ssCiAgIC8vIElmIG5vIFNSIGhhcyBiZWVuIHJlY2VpdmVkIHlldCwgdGhl
IGZpZWxkIGlzIHNldCB0byB6ZXJvLgogICAvLyBSZWNlaXZlciBydHBfcnRjcCBtb2R1bGUgaXMg
bm90IGV4cGVjdGVkIHRvIGNhbGN1bGF0ZSBydHQgdXNpbmcKICAgLy8gU2VuZGVyIFJlcG9ydHMg
ZXZlbiBpZiBpdCBhY2NpZGVudGFsbHkgY2FuLgotICBpZiAoIXJlY2VpdmVyX29ubHlfICYmIHNl
bmRfdGltZV9udHAgIT0gMCkgeworCisgIC8vIFRPRE8obmlzc2UpOiBVc2UgdGhpcyB3YXkgdG8g
ZGV0ZXJtaW5lIHRoZSBSVFQgb25seSB3aGVuIHxyZWNlaXZlcl9vbmx5X3wKKyAgLy8gaXMgZmFs
c2UuIEhvd2V2ZXIsIHRoYXQgY3VycmVudGx5IGJyZWFrcyB0aGUgdGVzdHMgb2YgdGhlCisgIC8v
IGdvb2dDYXB0dXJlU3RhcnROdHBUaW1lTXMgc3RhdCBmb3IgYXVkaW8gcmVjZWl2ZSBzdHJlYW1z
LiBUbyBmaXgsIGVpdGhlcgorICAvLyBkZWxldGUgYWxsIGRlcGVuZGVuY2llcyBvbiBSVFQgbWVh
c3VyZW1lbnRzIGZvciBhdWRpbyByZWNlaXZlIHN0cmVhbXMsIG9yCisgIC8vIGVuc3VyZSB0aGF0
IGF1ZGlvIHJlY2VpdmUgc3RyZWFtcyB0aGF0IG5lZWQgUlRUIGFuZCBzdGF0cyB0aGF0IGRlcGVu
ZCBvbiBpdAorICAvLyBhcmUgY29uZmlndXJlZCB3aXRoIGFuIGFzc29jaWF0ZWQgYXVkaW8gc2Vu
ZCBzdHJlYW0uCisgIGlmIChzZW5kX3RpbWVfbnRwICE9IDApIHsKICAgICB1aW50MzJfdCBkZWxh
eV9udHAgPSByZXBvcnRfYmxvY2suZGVsYXlfc2luY2VfbGFzdF9zcigpOwogICAgIC8vIExvY2Fs
IE5UUCB0aW1lLgotICAgIHVpbnQzMl90IHJlY2VpdmVfdGltZV9udHAgPSBDb21wYWN0TnRwKGNs
b2NrXy0+Q3VycmVudE50cFRpbWUoKSk7CisgICAgdWludDMyX3QgcmVjZWl2ZV90aW1lX250cCA9
CisgICAgICAgIENvbXBhY3ROdHAoVGltZU1pY3Jvc1RvTnRwKGNsb2NrXy0+VGltZUluTWljcm9z
ZWNvbmRzKCkpKTsKIAogICAgIC8vIFJUVCBpbiAxLygyXjE2KSBzZWNvbmRzLgogICAgIHVpbnQz
Ml90IHJ0dF9udHAgPSByZWNlaXZlX3RpbWVfbnRwIC0gZGVsYXlfbnRwIC0gc2VuZF90aW1lX250
cDsKQEAgLTU1MiwxMiArNTYzLDEyIEBAIFJUQ1BSZWNlaXZlcjo6VG1tYnJJbmZvcm1hdGlvbiog
UlRDUFJlY2VpdmVyOjpHZXRUbW1ickluZm9ybWF0aW9uKAogICByZXR1cm4gJml0LT5zZWNvbmQ7
CiB9CiAKLWJvb2wgUlRDUFJlY2VpdmVyOjpSdGNwUnJUaW1lb3V0KGludDY0X3QgcnRjcF9pbnRl
cnZhbF9tcykgeworYm9vbCBSVENQUmVjZWl2ZXI6OlJ0Y3BSclRpbWVvdXQoKSB7CiAgIHJ0Yzo6
Q3JpdFNjb3BlIGxvY2soJnJ0Y3BfcmVjZWl2ZXJfbG9ja18pOwogICBpZiAobGFzdF9yZWNlaXZl
ZF9yYl9tc18gPT0gMCkKICAgICByZXR1cm4gZmFsc2U7CiAKLSAgaW50NjRfdCB0aW1lX291dF9t
cyA9IGtSclRpbWVvdXRJbnRlcnZhbHMgKiBydGNwX2ludGVydmFsX21zOworICBpbnQ2NF90IHRp
bWVfb3V0X21zID0ga1JyVGltZW91dEludGVydmFscyAqIHJlcG9ydF9pbnRlcnZhbF9tc187CiAg
IGlmIChjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpID4gbGFzdF9yZWNlaXZlZF9yYl9tc18g
KyB0aW1lX291dF9tcykgewogICAgIC8vIFJlc2V0IHRoZSB0aW1lciB0byBvbmx5IHRyaWdnZXIg
b25lIGxvZy4KICAgICBsYXN0X3JlY2VpdmVkX3JiX21zXyA9IDA7CkBAIC01NjYsMTIgKzU3Nywx
MiBAQCBib29sIFJUQ1BSZWNlaXZlcjo6UnRjcFJyVGltZW91dChpbnQ2NF90IHJ0Y3BfaW50ZXJ2
YWxfbXMpIHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJUQ1BSZWNlaXZlcjo6UnRjcFJy
U2VxdWVuY2VOdW1iZXJUaW1lb3V0KGludDY0X3QgcnRjcF9pbnRlcnZhbF9tcykgeworYm9vbCBS
VENQUmVjZWl2ZXI6OlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dCgpIHsKICAgcnRjOjpDcml0
U2NvcGUgbG9jaygmcnRjcF9yZWNlaXZlcl9sb2NrXyk7CiAgIGlmIChsYXN0X2luY3JlYXNlZF9z
ZXF1ZW5jZV9udW1iZXJfbXNfID09IDApCiAgICAgcmV0dXJuIGZhbHNlOwogCi0gIGludDY0X3Qg
dGltZV9vdXRfbXMgPSBrUnJUaW1lb3V0SW50ZXJ2YWxzICogcnRjcF9pbnRlcnZhbF9tczsKKyAg
aW50NjRfdCB0aW1lX291dF9tcyA9IGtSclRpbWVvdXRJbnRlcnZhbHMgKiByZXBvcnRfaW50ZXJ2
YWxfbXNfOwogICBpZiAoY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSA+CiAgICAgICBsYXN0
X2luY3JlYXNlZF9zZXF1ZW5jZV9udW1iZXJfbXNfICsgdGltZV9vdXRfbXMpIHsKICAgICAvLyBS
ZXNldCB0aGUgdGltZXIgdG8gb25seSB0cmlnZ2VyIG9uZSBsb2cuCkBAIC03MjAsNyArNzMxLDgg
QEAgdm9pZCBSVENQUmVjZWl2ZXI6OkhhbmRsZVhyKGNvbnN0IENvbW1vbkhlYWRlciYgcnRjcF9i
bG9jaywKIHZvaWQgUlRDUFJlY2VpdmVyOjpIYW5kbGVYclJlY2VpdmVSZWZlcmVuY2VUaW1lKHVp
bnQzMl90IHNlbmRlcl9zc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjcDo6UnJ0ciYgcnJ0cikgewogICB1aW50MzJfdCByZWNlaXZl
ZF9yZW1vdGVfbWlkX250cF90aW1lID0gQ29tcGFjdE50cChycnRyLm50cCgpKTsKLSAgdWludDMy
X3QgbG9jYWxfcmVjZWl2ZV9taWRfbnRwX3RpbWUgPSBDb21wYWN0TnRwKGNsb2NrXy0+Q3VycmVu
dE50cFRpbWUoKSk7CisgIHVpbnQzMl90IGxvY2FsX3JlY2VpdmVfbWlkX250cF90aW1lID0KKyAg
ICAgIENvbXBhY3ROdHAoVGltZU1pY3Jvc1RvTnRwKGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRz
KCkpKTsKIAogICBhdXRvIGl0ID0gcmVjZWl2ZWRfcnJ0cnNfc3NyY19pdF8uZmluZChzZW5kZXJf
c3NyYyk7CiAgIGlmIChpdCAhPSByZWNlaXZlZF9ycnRyc19zc3JjX2l0Xy5lbmQoKSkgewpAQCAt
NzU0LDcgKzc2Niw3IEBAIHZvaWQgUlRDUFJlY2VpdmVyOjpIYW5kbGVYckRscnJSZXBvcnRCbG9j
ayhjb25zdCBydGNwOjpSZWNlaXZlVGltZUluZm8mIHJ0aSkgewogICAgIHJldHVybjsKIAogICB1
aW50MzJfdCBkZWxheV9udHAgPSBydGkuZGVsYXlfc2luY2VfbGFzdF9ycjsKLSAgdWludDMyX3Qg
bm93X250cCA9IENvbXBhY3ROdHAoY2xvY2tfLT5DdXJyZW50TnRwVGltZSgpKTsKKyAgdWludDMy
X3Qgbm93X250cCA9IENvbXBhY3ROdHAoVGltZU1pY3Jvc1RvTnRwKGNsb2NrXy0+VGltZUluTWlj
cm9zZWNvbmRzKCkpKTsKIAogICB1aW50MzJfdCBydHRfbnRwID0gbm93X250cCAtIGRlbGF5X250
cCAtIHNlbmRfdGltZV9udHA7CiAgIHhyX3JyX3J0dF9tc18gPSBDb21wYWN0TnRwUnR0VG9Ncyhy
dHRfbnRwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVjZWl2ZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0Y3BfcmVjZWl2ZXIuaAppbmRleCBhODYzY2FlZmY3YjY5ZTZjOTdiMDM0ZWI3MzA2MDEzZTE4
NzEzYjMxLi5iZTRjNzBlM2NlYTQ5MTg2ZTAwOWJkMTdmNmQwY2Q0ZTFiNDQ4NjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZl
ci5oCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rv
cj4KIAorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydGNwX3N0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfbmFja19zdGF0cy5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2RscnIuaCIKQEAg
LTU2LDYgKzU3LDcgQEAgY2xhc3MgUlRDUFJlY2VpdmVyIHsKICAgICAgICAgICAgICAgIFJ0Y3BJ
bnRyYUZyYW1lT2JzZXJ2ZXIqIHJ0Y3BfaW50cmFfZnJhbWVfb2JzZXJ2ZXIsCiAgICAgICAgICAg
ICAgICBUcmFuc3BvcnRGZWVkYmFja09ic2VydmVyKiB0cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2
ZXIsCiAgICAgICAgICAgICAgICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2JzZXJ2ZXIqIGJpdHJh
dGVfYWxsb2NhdGlvbl9vYnNlcnZlciwKKyAgICAgICAgICAgICAgIGludCByZXBvcnRfaW50ZXJ2
YWxfbXMsCiAgICAgICAgICAgICAgICBNb2R1bGVSdHBSdGNwKiBvd25lcik7CiAgIHZpcnR1YWwg
flJUQ1BSZWNlaXZlcigpOwogCkBAIC05NCwxMyArOTYsMTMgQEAgY2xhc3MgUlRDUFJlY2VpdmVy
IHsKIAogICAvLyBSZXR1cm5zIHRydWUgaWYgd2UgaGF2ZW4ndCByZWNlaXZlZCBhbiBSVENQIFJS
IGZvciBzZXZlcmFsIFJUQ1AKICAgLy8gaW50ZXJ2YWxzLCBidXQgb25seSB0cmlnZ2VycyB0cnVl
IG9uY2UuCi0gIGJvb2wgUnRjcFJyVGltZW91dChpbnQ2NF90IHJ0Y3BfaW50ZXJ2YWxfbXMpOwor
ICBib29sIFJ0Y3BSclRpbWVvdXQoKTsKIAogICAvLyBSZXR1cm5zIHRydWUgaWYgd2UgaGF2ZW4n
dCByZWNlaXZlZCBhbiBSVENQIFJSIHRlbGxpbmcgdGhlIHJlY2VpdmUgc2lkZQogICAvLyBoYXMg
bm90IHJlY2VpdmVkIFJUUCBwYWNrZXRzIGZvciB0b28gbG9uZywgaS5lLiBleHRlbmRlZCBoaWdo
ZXN0IHNlcXVlbmNlCiAgIC8vIG51bWJlciBoYXNuJ3QgaW5jcmVhc2VkIGZvciBzZXZlcmFsIFJU
Q1AgaW50ZXJ2YWxzLiBUaGUgZnVuY3Rpb24gb25seQogICAvLyByZXR1cm5zIHRydWUgb25jZSB1
bnRpbCBhIG5ldyBSUiBpcyByZWNlaXZlZC4KLSAgYm9vbCBSdGNwUnJTZXF1ZW5jZU51bWJlclRp
bWVvdXQoaW50NjRfdCBydGNwX2ludGVydmFsX21zKTsKKyAgYm9vbCBSdGNwUnJTZXF1ZW5jZU51
bWJlclRpbWVvdXQoKTsKIAogICBzdGQ6OnZlY3RvcjxydGNwOjpUbW1iSXRlbT4gVG1tYnJSZWNl
aXZlZCgpOwogICAvLyBSZXR1cm4gdHJ1ZSBpZiBuZXcgYmFuZHdpZHRoIHNob3VsZCBiZSBzZXQu
CkBAIC0yMTUsNiArMjE3LDcgQEAgY2xhc3MgUlRDUFJlY2VpdmVyIHsKICAgUnRjcEludHJhRnJh
bWVPYnNlcnZlciogY29uc3QgcnRjcF9pbnRyYV9mcmFtZV9vYnNlcnZlcl87CiAgIFRyYW5zcG9y
dEZlZWRiYWNrT2JzZXJ2ZXIqIGNvbnN0IHRyYW5zcG9ydF9mZWVkYmFja19vYnNlcnZlcl87CiAg
IFZpZGVvQml0cmF0ZUFsbG9jYXRpb25PYnNlcnZlciogY29uc3QgYml0cmF0ZV9hbGxvY2F0aW9u
X29ic2VydmVyXzsKKyAgY29uc3QgaW50IHJlcG9ydF9pbnRlcnZhbF9tc187CiAKICAgcnRjOjpD
cml0aWNhbFNlY3Rpb24gcnRjcF9yZWNlaXZlcl9sb2NrXzsKICAgdWludDMyX3QgbWFpbl9zc3Jj
XyBSVENfR1VBUkRFRF9CWShydGNwX3JlY2VpdmVyX2xvY2tfKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfcmVjZWl2ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyX3Vu
aXR0ZXN0LmNjCmluZGV4IGM3NzA4ZjBiZGRkOTdjYWE0YmJkNjRkZjQ4MzYwZjY4NjYyZmYwNGEu
LmE1NzZmZGM1ZTlhNTc2MzkxOTg1ZmU4NDM3OWQ4YzE0MzIwNGRiMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0Y3BfcmVjZWl2ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNl
aXZlcl91bml0dGVzdC5jYwpAQCAtMTA3LDYgKzEwNyw4IEBAIGNvbnN0ZXhwciB1aW50MzJfdCBr
UmVjZWl2ZXJFeHRyYVNzcmMgPSAweDEyMzQ1Njc7CiBjb25zdGV4cHIgdWludDMyX3Qga05vdFRv
VXNTc3JjID0gMHg2NTQzMjE7CiBjb25zdGV4cHIgdWludDMyX3Qga1Vua25vd25TZW5kZXJTc3Jj
ID0gMHg1NDMyMTsKIAorY29uc3RleHByIGludDY0X3Qga1J0Y3BJbnRlcnZhbE1zID0gMTAwMDsK
KwogfSAgLy8gbmFtZXNwYWNlCiAKIGNsYXNzIFJ0Y3BSZWNlaXZlclRlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsKQEAgLTEyMCw2ICsxMjIsNyBAQCBjbGFzcyBSdGNwUmVjZWl2ZXJUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICZpbnRy
YV9mcmFtZV9vYnNlcnZlcl8sCiAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFuc3BvcnRfZmVl
ZGJhY2tfb2JzZXJ2ZXJfLAogICAgICAgICAgICAgICAgICAgICAgICAmYml0cmF0ZV9hbGxvY2F0
aW9uX29ic2VydmVyXywKKyAgICAgICAgICAgICAgICAgICAgICAga1J0Y3BJbnRlcnZhbE1zLAog
ICAgICAgICAgICAgICAgICAgICAgICAmcnRwX3J0Y3BfaW1wbF8pIHt9CiAgIHZvaWQgU2V0VXAo
KSB7CiAgICAgc3RkOjpzZXQ8dWludDMyX3Q+IHNzcmNzID0ge2tSZWNlaXZlck1haW5Tc3JjLCBr
UmVjZWl2ZXJFeHRyYVNzcmN9OwpAQCAtMjA4LDcgKzIxMSw4IEBAIFRFU1RfRihSdGNwUmVjZWl2
ZXJUZXN0LCBJbmplY3RTclBhY2tldENhbGN1bGF0ZXNSVFQpIHsKICAgRVhQRUNUX0VRKAogICAg
ICAgLTEsIHJ0Y3BfcmVjZWl2ZXJfLlJUVChrU2VuZGVyU3NyYywgJnJ0dF9tcywgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0cikpOwogCi0gIHVpbnQzMl90IHNlbnRfbnRwID0gQ29tcGFjdE50cChz
eXN0ZW1fY2xvY2tfLkN1cnJlbnROdHBUaW1lKCkpOworICB1aW50MzJfdCBzZW50X250cCA9Cisg
ICAgICBDb21wYWN0TnRwKFRpbWVNaWNyb3NUb050cChzeXN0ZW1fY2xvY2tfLlRpbWVJbk1pY3Jv
c2Vjb25kcygpKSk7CiAgIHN5c3RlbV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa1J0
dE1zICsga0RlbGF5TXMpOwogCiAgIHJ0Y3A6OlNlbmRlclJlcG9ydCBzcjsKQEAgLTIzOCw3ICsy
NDIsOCBAQCBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgSW5qZWN0U3JQYWNrZXRDYWxjdWxhdGVz
TmVnYXRpdmVSVFRBc09uZSkgewogICBFWFBFQ1RfRVEoCiAgICAgICAtMSwgcnRjcF9yZWNlaXZl
cl8uUlRUKGtTZW5kZXJTc3JjLCAmcnR0X21zLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7
CiAKLSAgdWludDMyX3Qgc2VudF9udHAgPSBDb21wYWN0TnRwKHN5c3RlbV9jbG9ja18uQ3VycmVu
dE50cFRpbWUoKSk7CisgIHVpbnQzMl90IHNlbnRfbnRwID0KKyAgICAgIENvbXBhY3ROdHAoVGlt
ZU1pY3Jvc1RvTnRwKHN5c3RlbV9jbG9ja18uVGltZUluTWljcm9zZWNvbmRzKCkpKTsKICAgc3lz
dGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrUnR0TXMgKyBrRGVsYXlNcyk7CiAK
ICAgcnRjcDo6U2VuZGVyUmVwb3J0IHNyOwpAQCAtMjY2LDcgKzI3MSw4IEBAIFRFU1RfRigKICAg
Y29uc3QgdWludDMyX3Qga0RlbGF5TnRwID0gMTIzMDAwOwogICBjb25zdCBpbnQ2NF90IGtEZWxh
eU1zID0gQ29tcGFjdE50cFJ0dFRvTXMoa0RlbGF5TnRwKTsKIAotICB1aW50MzJfdCBzZW50X250
cCA9IENvbXBhY3ROdHAoc3lzdGVtX2Nsb2NrXy5DdXJyZW50TnRwVGltZSgpKTsKKyAgdWludDMy
X3Qgc2VudF9udHAgPQorICAgICAgQ29tcGFjdE50cChUaW1lTWljcm9zVG9OdHAoc3lzdGVtX2Ns
b2NrXy5UaW1lSW5NaWNyb3NlY29uZHMoKSkpOwogICBzeXN0ZW1fY2xvY2tfLkFkdmFuY2VUaW1l
TWlsbGlzZWNvbmRzKGtSdHRNcyArIGtEZWxheU1zKTsKIAogICBydGNwOjpTZW5kZXJSZXBvcnQg
c3I7CkBAIC03MzcsNyArNzQzLDggQEAgVEVTVF9GKFJ0Y3BSZWNlaXZlclRlc3QsIEluamVjdEV4
dGVuZGVkUmVwb3J0c0RscnJQYWNrZXRXaXRoU3ViQmxvY2spIHsKIAogICBJbmplY3RSdGNwUGFj
a2V0KHhyKTsKIAotICB1aW50MzJfdCBjb21wYWN0X250cF9ub3cgPSBDb21wYWN0TnRwKHN5c3Rl
bV9jbG9ja18uQ3VycmVudE50cFRpbWUoKSk7CisgIHVpbnQzMl90IGNvbXBhY3RfbnRwX25vdyA9
CisgICAgICBDb21wYWN0TnRwKFRpbWVNaWNyb3NUb050cChzeXN0ZW1fY2xvY2tfLlRpbWVJbk1p
Y3Jvc2Vjb25kcygpKSk7CiAgIEVYUEVDVF9UUlVFKHJ0Y3BfcmVjZWl2ZXJfLkdldEFuZFJlc2V0
WHJSclJ0dCgmcnR0X21zKSk7CiAgIHVpbnQzMl90IHJ0dF9udHAgPSBjb21wYWN0X250cF9ub3cg
LSBrRGVsYXkgLSBrTGFzdFJSOwogICBFWFBFQ1RfTkVBUihDb21wYWN0TnRwUnR0VG9NcyhydHRf
bnRwKSwgcnR0X21zLCAxKTsKQEAgLTc1Niw3ICs3NjMsOCBAQCBURVNUX0YoUnRjcFJlY2VpdmVy
VGVzdCwgSW5qZWN0RXh0ZW5kZWRSZXBvcnRzRGxyclBhY2tldFdpdGhNdWx0aXBsZVN1YkJsb2Nr
cykgewogCiAgIEluamVjdFJ0Y3BQYWNrZXQoeHIpOwogCi0gIHVpbnQzMl90IGNvbXBhY3RfbnRw
X25vdyA9IENvbXBhY3ROdHAoc3lzdGVtX2Nsb2NrXy5DdXJyZW50TnRwVGltZSgpKTsKKyAgdWlu
dDMyX3QgY29tcGFjdF9udHBfbm93ID0KKyAgICAgIENvbXBhY3ROdHAoVGltZU1pY3Jvc1RvTnRw
KHN5c3RlbV9jbG9ja18uVGltZUluTWljcm9zZWNvbmRzKCkpKTsKICAgaW50NjRfdCBydHRfbXMg
PSAwOwogICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5HZXRBbmRSZXNldFhyUnJSdHQoJnJ0
dF9tcykpOwogICB1aW50MzJfdCBydHRfbnRwID0gY29tcGFjdF9udHBfbm93IC0ga0RlbGF5IC0g
a0xhc3RSUjsKQEAgLTgxOCw3ICs4MjYsNyBAQCBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgUnR0
Q2FsY3VsYXRlZEFmdGVyRXh0ZW5kZWRSZXBvcnRzRGxycikgewogICBjb25zdCB1aW50MzJfdCBr
RGVsYXlOdHAgPSByYW5kLlJhbmQoMCwgMHg3ZmZmZmZmZik7CiAgIGNvbnN0IGludDY0X3Qga0Rl
bGF5TXMgPSBDb21wYWN0TnRwUnR0VG9NcyhrRGVsYXlOdHApOwogICBydGNwX3JlY2VpdmVyXy5T
ZXRSdGNwWHJScnRyU3RhdHVzKHRydWUpOwotICBOdHBUaW1lIG5vdyA9IHN5c3RlbV9jbG9ja18u
Q3VycmVudE50cFRpbWUoKTsKKyAgTnRwVGltZSBub3cgPSBUaW1lTWljcm9zVG9OdHAoc3lzdGVt
X2Nsb2NrXy5UaW1lSW5NaWNyb3NlY29uZHMoKSk7CiAgIHVpbnQzMl90IHNlbnRfbnRwID0gQ29t
cGFjdE50cChub3cpOwogICBzeXN0ZW1fY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtS
dHRNcyArIGtEZWxheU1zKTsKIApAQCAtODM4LDcgKzg0Niw3IEBAIFRFU1RfRihSdGNwUmVjZWl2
ZXJUZXN0LCBYckRscnJDYWxjdWxhdGVzTmVnYXRpdmVSdHRBc09uZSkgewogICBjb25zdCBpbnQ2
NF90IGtSdHRNcyA9IHJhbmQuUmFuZCgtMzYwMCAqIDEwMDAsIC0xKTsKICAgY29uc3QgdWludDMy
X3Qga0RlbGF5TnRwID0gcmFuZC5SYW5kKDAsIDB4N2ZmZmZmZmYpOwogICBjb25zdCBpbnQ2NF90
IGtEZWxheU1zID0gQ29tcGFjdE50cFJ0dFRvTXMoa0RlbGF5TnRwKTsKLSAgTnRwVGltZSBub3cg
PSBzeXN0ZW1fY2xvY2tfLkN1cnJlbnROdHBUaW1lKCk7CisgIE50cFRpbWUgbm93ID0gVGltZU1p
Y3Jvc1RvTnRwKHN5c3RlbV9jbG9ja18uVGltZUluTWljcm9zZWNvbmRzKCkpOwogICB1aW50MzJf
dCBzZW50X250cCA9IENvbXBhY3ROdHAobm93KTsKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGlt
ZU1pbGxpc2Vjb25kcyhrUnR0TXMgKyBrRGVsYXlNcyk7CiAgIHJ0Y3BfcmVjZWl2ZXJfLlNldFJ0
Y3BYclJydHJTdGF0dXModHJ1ZSk7CkBAIC05MzYsMTMgKzk0NCwxMiBAQCBURVNUX0YoUnRjcFJl
Y2VpdmVyVGVzdCwgU3RvcmVzTGFzdFJlY2VpdmVkUnJ0clBlclNzcmMpIHsKIH0KIAogVEVTVF9G
KFJ0Y3BSZWNlaXZlclRlc3QsIFJlY2VpdmVSZXBvcnRUaW1lb3V0KSB7Ci0gIGNvbnN0IGludDY0
X3Qga1J0Y3BJbnRlcnZhbE1zID0gMTAwMDsKICAgY29uc3QgdWludDE2X3Qga1NlcXVlbmNlTnVt
YmVyID0gMTIzNDsKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygzICog
a1J0Y3BJbnRlcnZhbE1zKTsKIAogICAvLyBObyBSUiByZWNlaXZlZCwgc2hvdWxkbid0IHRyaWdn
ZXIgYSB0aW1lb3V0LgotICBFWFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91
dChrUnRjcEludGVydmFsTXMpKTsKLSAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BS
clNlcXVlbmNlTnVtYmVyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKKyAgRVhQRUNUX0ZBTFNF
KHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoKSk7CisgIEVYUEVDVF9GQUxTRShydGNwX3Jl
Y2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoKSk7CiAKICAgLy8gQWRkIGEgUlIg
YW5kIGFkdmFuY2UgdGhlIGNsb2NrIGp1c3QgZW5vdWdoIHRvIG5vdCB0cmlnZ2VyIGEgdGltZW91
dC4KICAgcnRjcDo6UmVwb3J0QmxvY2sgcmIxOwpAQCAtOTU3LDggKzk2NCw4IEBAIFRFU1RfRihS
dGNwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlUmVwb3J0VGltZW91dCkgewogICBJbmplY3RSdGNwUGFj
a2V0KHJyMSk7CiAKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygzICog
a1J0Y3BJbnRlcnZhbE1zIC0gMSk7Ci0gIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNw
UnJUaW1lb3V0KGtSdGNwSW50ZXJ2YWxNcykpOwotICBFWFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZl
cl8uUnRjcFJyU2VxdWVuY2VOdW1iZXJUaW1lb3V0KGtSdGNwSW50ZXJ2YWxNcykpOworICBFWFBF
Q1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dCgpKTsKKyAgRVhQRUNUX0ZBTFNF
KHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dCgpKTsKIAogICAvLyBB
ZGQgYSBSUiB3aXRoIHRoZSBzYW1lIGV4dGVuZGVkIG1heCBhcyB0aGUgcHJldmlvdXMgUlIgdG8g
dHJpZ2dlciBhCiAgIC8vIHNlcXVlbmNlIG51bWJlciB0aW1lb3V0LCBidXQgbm90IGEgUlIgdGlt
ZW91dC4KQEAgLTk2NywxNyArOTc0LDE3IEBAIFRFU1RfRihSdGNwUmVjZWl2ZXJUZXN0LCBSZWNl
aXZlUmVwb3J0VGltZW91dCkgewogICBJbmplY3RSdGNwUGFja2V0KHJyMSk7CiAKICAgc3lzdGVt
X2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygyKTsKLSAgRVhQRUNUX0ZBTFNFKHJ0Y3Bf
cmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoa1J0Y3BJbnRlcnZhbE1zKSk7Ci0gIEVYUEVDVF9UUlVF
KHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dChrUnRjcEludGVydmFs
TXMpKTsKKyAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoKSk7Cisg
IEVYUEVDVF9UUlVFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dCgp
KTsKIAogICAvLyBBZHZhbmNlIGNsb2NrIGVub3VnaCB0byB0cmlnZ2VyIGFuIFJSIHRpbWVvdXQg
dG9vLgogICBzeXN0ZW1fY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDMgKiBrUnRjcElu
dGVydmFsTXMpOwotICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KGtS
dGNwSW50ZXJ2YWxNcykpOworICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1l
b3V0KCkpOwogCiAgIC8vIFdlIHNob3VsZCBvbmx5IGdldCBvbmUgdGltZW91dCBldmVuIHRob3Vn
aCB3ZSBzdGlsbCBoYXZlbid0IHJlY2VpdmVkIGEgbmV3CiAgIC8vIFJSLgotICBFWFBFQ1RfRkFM
U0UocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKLSAgRVhQ
RUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dChrUnRj
cEludGVydmFsTXMpKTsKKyAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVv
dXQoKSk7CisgIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJl
clRpbWVvdXQoKSk7CiAKICAgLy8gQWRkIGEgbmV3IFJSIHdpdGggaW5jcmVhc2Ugc2VxdWVuY2Ug
bnVtYmVyIHRvIHJlc2V0IHRpbWVycy4KICAgcnRjcDo6UmVwb3J0QmxvY2sgcmIyOwpAQCAtOTkx
LDggKzk5OCw4IEBAIFRFU1RfRihSdGNwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlUmVwb3J0VGltZW91
dCkgewogICBFWFBFQ1RfQ0FMTChiYW5kd2lkdGhfb2JzZXJ2ZXJfLCBPblJlY2VpdmVkUnRjcFJl
Y2VpdmVyUmVwb3J0KF8sIF8sIF8pKTsKICAgSW5qZWN0UnRjcFBhY2tldChycjIpOwogCi0gIEVY
UEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KGtSdGNwSW50ZXJ2YWxNcykp
OwotICBFWFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRjcFJyU2VxdWVuY2VOdW1iZXJUaW1l
b3V0KGtSdGNwSW50ZXJ2YWxNcykpOworICBFWFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRj
cFJyVGltZW91dCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVl
bmNlTnVtYmVyVGltZW91dCgpKTsKIAogICAvLyBWZXJpZnkgd2UgY2FuIGdldCBhIHRpbWVvdXQg
YWdhaW4gb25jZSB3ZSd2ZSByZWNlaXZlZCBuZXcgUlIuCiAgIHN5c3RlbV9jbG9ja18uQWR2YW5j
ZVRpbWVNaWxsaXNlY29uZHMoMiAqIGtSdGNwSW50ZXJ2YWxNcyk7CkBAIC0xMDAxLDExICsxMDA4
LDExIEBAIFRFU1RfRihSdGNwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlUmVwb3J0VGltZW91dCkgewog
ICBJbmplY3RSdGNwUGFja2V0KHJyMik7CiAKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1p
bGxpc2Vjb25kcyhrUnRjcEludGVydmFsTXMgKyAxKTsKLSAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVj
ZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoa1J0Y3BJbnRlcnZhbE1zKSk7Ci0gIEVYUEVDVF9UUlVFKHJ0
Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dChrUnRjcEludGVydmFsTXMp
KTsKKyAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoKSk7CisgIEVY
UEVDVF9UUlVFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dCgpKTsK
IAogICBzeXN0ZW1fY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDIgKiBrUnRjcEludGVy
dmFsTXMpOwotICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KGtSdGNw
SW50ZXJ2YWxNcykpOworICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0
KCkpOwogfQogCiBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgVG1tYnJSZWNlaXZlZFdpdGhOb0lu
Y29taW5nUGFja2V0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0Y3Bfc2VuZGVyLmNjCmluZGV4IGJmZGRjNDIyZjAxMjhiZTI3ZmNjZDE4ODY5MGEx
OGIyYzBmZDQyNWMuLjI1ODE0ODc5MjdiZjg0MDk0ZWJmY2YwZGU2ZGViNTk0MzI5MmZhMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bfc2VuZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bfc2Vu
ZGVyLmNjCkBAIC0xMCw3ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3NlbmRlci5oIgogCi0jaW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBtZW1jcHkKKyNp
bmNsdWRlIDxzdHJpbmcuaD4gICAvLyBtZW1jcHkKKyNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBz
dGQ6Om1pbgogCiAjaW5jbHVkZSA8dXRpbGl0eT4KIApAQCAtOTksMTYgKzEwMCwxNiBAQCBjbGFz
cyBSVENQU2VuZGVyOjpSdGNwQ29udGV4dCB7CiAgIFJ0Y3BDb250ZXh0KGNvbnN0IEZlZWRiYWNr
U3RhdGUmIGZlZWRiYWNrX3N0YXRlLAogICAgICAgICAgICAgICBpbnQzMl90IG5hY2tfc2l6ZSwK
ICAgICAgICAgICAgICAgY29uc3QgdWludDE2X3QqIG5hY2tfbGlzdCwKLSAgICAgICAgICAgICAg
TnRwVGltZSBub3cpCisgICAgICAgICAgICAgIGludDY0X3Qgbm93X3VzKQogICAgICAgOiBmZWVk
YmFja19zdGF0ZV8oZmVlZGJhY2tfc3RhdGUpLAogICAgICAgICBuYWNrX3NpemVfKG5hY2tfc2l6
ZSksCiAgICAgICAgIG5hY2tfbGlzdF8obmFja19saXN0KSwKLSAgICAgICAgbm93Xyhub3cpIHt9
CisgICAgICAgIG5vd191c18obm93X3VzKSB7fQogCiAgIGNvbnN0IEZlZWRiYWNrU3RhdGUmIGZl
ZWRiYWNrX3N0YXRlXzsKICAgY29uc3QgaW50MzJfdCBuYWNrX3NpemVfOwogICBjb25zdCB1aW50
MTZfdCogbmFja19saXN0XzsKLSAgY29uc3QgTnRwVGltZSBub3dfOworICBjb25zdCBpbnQ2NF90
IG5vd191c187CiB9OwogCiBSVENQU2VuZGVyOjpSVENQU2VuZGVyKApAQCAtMTE4LDE1ICsxMTks
MTQgQEAgUlRDUFNlbmRlcjo6UlRDUFNlbmRlcigKICAgICBSdGNwUGFja2V0VHlwZUNvdW50ZXJP
YnNlcnZlciogcGFja2V0X3R5cGVfY291bnRlcl9vYnNlcnZlciwKICAgICBSdGNFdmVudExvZyog
ZXZlbnRfbG9nLAogICAgIFRyYW5zcG9ydCogb3V0Z29pbmdfdHJhbnNwb3J0LAotICAgIFJ0Y3BJ
bnRlcnZhbENvbmZpZyBpbnRlcnZhbF9jb25maWcpCisgICAgaW50IHJlcG9ydF9pbnRlcnZhbF9t
cykKICAgICA6IGF1ZGlvXyhhdWRpbyksCiAgICAgICBjbG9ja18oY2xvY2spLAogICAgICAgcmFu
ZG9tXyhjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSwKICAgICAgIG1ldGhvZF8oUnRjcE1v
ZGU6OmtPZmYpLAogICAgICAgZXZlbnRfbG9nXyhldmVudF9sb2cpLAogICAgICAgdHJhbnNwb3J0
XyhvdXRnb2luZ190cmFuc3BvcnQpLAotICAgICAgaW50ZXJ2YWxfY29uZmlnXyhpbnRlcnZhbF9j
b25maWcpLAotICAgICAgdXNpbmdfbmFja18oZmFsc2UpLAorICAgICAgcmVwb3J0X2ludGVydmFs
X21zXyhyZXBvcnRfaW50ZXJ2YWxfbXMpLAogICAgICAgc2VuZGluZ18oZmFsc2UpLAogICAgICAg
bmV4dF90aW1lX3RvX3NlbmRfcnRjcF8oMCksCiAgICAgICB0aW1lc3RhbXBfb2Zmc2V0XygwKSwK
QEAgLTE1MSw3ICsxNTEsOCBAQCBSVENQU2VuZGVyOjpSVENQU2VuZGVyKAogCiAgICAgICB4cl9z
ZW5kX3JlY2VpdmVyX3JlZmVyZW5jZV90aW1lX2VuYWJsZWRfKGZhbHNlKSwKICAgICAgIHBhY2tl
dF90eXBlX2NvdW50ZXJfb2JzZXJ2ZXJfKHBhY2tldF90eXBlX2NvdW50ZXJfb2JzZXJ2ZXIpLAot
ICAgICAgc2VuZF92aWRlb19iaXRyYXRlX2FsbG9jYXRpb25fKGZhbHNlKSB7CisgICAgICBzZW5k
X3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbl8oZmFsc2UpLAorICAgICAgbGFzdF9wYXlsb2FkX3R5
cGVfKC0xKSB7CiAgIFJUQ19EQ0hFQ0sodHJhbnNwb3J0XyAhPSBudWxscHRyKTsKIAogICBidWls
ZGVyc19ba1J0Y3BTcl0gPSAmUlRDUFNlbmRlcjo6QnVpbGRTUjsKQEAgLTE4MCw5ICsxODEsOCBA
QCB2b2lkIFJUQ1BTZW5kZXI6OlNldFJUQ1BTdGF0dXMoUnRjcE1vZGUgbmV3X21ldGhvZCkgewog
CiAgIGlmIChtZXRob2RfID09IFJ0Y3BNb2RlOjprT2ZmICYmIG5ld19tZXRob2QgIT0gUnRjcE1v
ZGU6OmtPZmYpIHsKICAgICAvLyBXaGVuIHN3aXRjaGluZyBvbiwgcmVzY2hlZHVsZSB0aGUgbmV4
dCBwYWNrZXQKLSAgICBpbnQ2NF90IGludGVydmFsX21zID0gYXVkaW9fID8gaW50ZXJ2YWxfY29u
ZmlnXy5hdWRpb19pbnRlcnZhbF9tcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiBpbnRlcnZhbF9jb25maWdfLnZpZGVvX2ludGVydmFsX21zOwotICAgIG5leHRfdGltZV90b19z
ZW5kX3J0Y3BfID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSArIChpbnRlcnZhbF9tcyAv
IDIpOworICAgIG5leHRfdGltZV90b19zZW5kX3J0Y3BfID0KKyAgICAgICAgY2xvY2tfLT5UaW1l
SW5NaWxsaXNlY29uZHMoKSArIChyZXBvcnRfaW50ZXJ2YWxfbXNfIC8gMik7CiAgIH0KICAgbWV0
aG9kXyA9IG5ld19tZXRob2Q7CiB9CkBAIC0yNTQsOCArMjU0LDE0IEBAIHZvaWQgUlRDUFNlbmRl
cjo6U2V0VGltZXN0YW1wT2Zmc2V0KHVpbnQzMl90IHRpbWVzdGFtcF9vZmZzZXQpIHsKIH0KIAog
dm9pZCBSVENQU2VuZGVyOjpTZXRMYXN0UnRwVGltZSh1aW50MzJfdCBydHBfdGltZXN0YW1wLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGNhcHR1cmVfdGltZV9tcykg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGNhcHR1cmVfdGltZV9t
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50OF90IHBheWxvYWRfdHlwZSkg
ewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2VuZGVyXyk7
CisgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggY2xpZW50cyB3aG8gZG9uJ3Qgc2V0IHBheWxv
YWQgdHlwZSBjb3JyZWN0bHkgb24gYWxsCisgIC8vIGNhbGxzLgorICBpZiAocGF5bG9hZF90eXBl
ICE9IC0xKSB7CisgICAgbGFzdF9wYXlsb2FkX3R5cGVfID0gcGF5bG9hZF90eXBlOworICB9CiAg
IGxhc3RfcnRwX3RpbWVzdGFtcF8gPSBydHBfdGltZXN0YW1wOwogICBpZiAoY2FwdHVyZV90aW1l
X21zIDwgMCkgewogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBnZXQgYSBjYXB0dXJlIHRpbWUg
ZnJvbSBWb2ljZUVuZ2luZS4KQEAgLTI2NSw2ICsyNzEsMTEgQEAgdm9pZCBSVENQU2VuZGVyOjpT
ZXRMYXN0UnRwVGltZSh1aW50MzJfdCBydHBfdGltZXN0YW1wLAogICB9CiB9CiAKK3ZvaWQgUlRD
UFNlbmRlcjo6U2V0UnRwQ2xvY2tSYXRlKGludDhfdCBwYXlsb2FkX3R5cGUsIGludCBydHBfY2xv
Y2tfcmF0ZV9oeikgeworICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0aWNhbF9zZWN0aW9uX3J0
Y3Bfc2VuZGVyXyk7CisgIHJ0cF9jbG9ja19yYXRlc19raHpfW3BheWxvYWRfdHlwZV0gPSBydHBf
Y2xvY2tfcmF0ZV9oeiAvIDEwMDA7Cit9CisKIHVpbnQzMl90IFJUQ1BTZW5kZXI6OlNTUkMoKSBj
b25zdCB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRpY2FsX3NlY3Rpb25fcnRjcF9zZW5k
ZXJfKTsKICAgcmV0dXJuIHNzcmNfOwpAQCAtNDExLDE1ICs0MjIsMjEgQEAgc3RkOjp1bmlxdWVf
cHRyPHJ0Y3A6OlJ0Y3BQYWNrZXQ+IFJUQ1BTZW5kZXI6OkJ1aWxkU1IoY29uc3QgUnRjcENvbnRl
eHQmIGN0eCkgewogICAvLyB0aGUgZnJhbWUgYmVpbmcgY2FwdHVyZWQgYXQgdGhpcyBtb21lbnQu
IFdlIGFyZSBjYWxjdWxhdGluZyB0aGF0CiAgIC8vIHRpbWVzdGFtcCBhcyB0aGUgbGFzdCBmcmFt
ZSdzIHRpbWVzdGFtcCArIHRoZSB0aW1lIHNpbmNlIHRoZSBsYXN0IGZyYW1lCiAgIC8vIHdhcyBj
YXB0dXJlZC4KLSAgdWludDMyX3QgcnRwX3JhdGUgPQotICAgICAgKGF1ZGlvXyA/IGtCb2d1c1J0
cFJhdGVGb3JBdWRpb1J0Y3AgOiBrVmlkZW9QYXlsb2FkVHlwZUZyZXF1ZW5jeSkgLyAxMDAwOwor
ICBpbnQgcnRwX3JhdGUgPSBydHBfY2xvY2tfcmF0ZXNfa2h6X1tsYXN0X3BheWxvYWRfdHlwZV9d
OworICBpZiAocnRwX3JhdGUgPD0gMCkgeworICAgIHJ0cF9yYXRlID0KKyAgICAgICAgKGF1ZGlv
XyA/IGtCb2d1c1J0cFJhdGVGb3JBdWRpb1J0Y3AgOiBrVmlkZW9QYXlsb2FkVHlwZUZyZXF1ZW5j
eSkgLworICAgICAgICAxMDAwOworICB9CisgIC8vIFJvdW5kIG5vd191c18gdG8gdGhlIGNsb3Nl
c3QgbWlsbGlzZWNvbmQsIGJlY2F1c2UgTnRwIHRpbWUgaXMgcm91bmRlZAorICAvLyB3aGVuIGNv
bnZlcnRlZCB0byBtaWxsaXNlY29uZHMsCiAgIHVpbnQzMl90IHJ0cF90aW1lc3RhbXAgPQogICAg
ICAgdGltZXN0YW1wX29mZnNldF8gKyBsYXN0X3J0cF90aW1lc3RhbXBfICsKLSAgICAgIChjbG9j
a18tPlRpbWVJbk1pbGxpc2Vjb25kcygpIC0gbGFzdF9mcmFtZV9jYXB0dXJlX3RpbWVfbXNfKSAq
IHJ0cF9yYXRlOworICAgICAgKChjdHgubm93X3VzXyArIDUwMCkgLyAxMDAwIC0gbGFzdF9mcmFt
ZV9jYXB0dXJlX3RpbWVfbXNfKSAqIHJ0cF9yYXRlOwogCiAgIHJ0Y3A6OlNlbmRlclJlcG9ydCog
cmVwb3J0ID0gbmV3IHJ0Y3A6OlNlbmRlclJlcG9ydCgpOwogICByZXBvcnQtPlNldFNlbmRlclNz
cmMoc3NyY18pOwotICByZXBvcnQtPlNldE50cChjdHgubm93Xyk7CisgIHJlcG9ydC0+U2V0TnRw
KFRpbWVNaWNyb3NUb050cChjdHgubm93X3VzXykpOwogICByZXBvcnQtPlNldFJ0cFRpbWVzdGFt
cChydHBfdGltZXN0YW1wKTsKICAgcmVwb3J0LT5TZXRQYWNrZXRDb3VudChjdHguZmVlZGJhY2tf
c3RhdGVfLnBhY2tldHNfc2VudCk7CiAgIHJlcG9ydC0+U2V0T2N0ZXRDb3VudChjdHguZmVlZGJh
Y2tfc3RhdGVfLm1lZGlhX2J5dGVzX3NlbnQpOwpAQCAtNjAwLDcgKzYxNyw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxydGNwOjpSdGNwUGFja2V0PiBSVENQU2VuZGVyOjpCdWlsZEV4dGVuZGVkUmVwb3J0
cygKIAogICBpZiAoIXNlbmRpbmdfICYmIHhyX3NlbmRfcmVjZWl2ZXJfcmVmZXJlbmNlX3RpbWVf
ZW5hYmxlZF8pIHsKICAgICBydGNwOjpScnRyIHJydHI7Ci0gICAgcnJ0ci5TZXROdHAoY3R4Lm5v
d18pOworICAgIHJydHIuU2V0TnRwKFRpbWVNaWNyb3NUb050cChjdHgubm93X3VzXykpOwogICAg
IHhyLT5TZXRScnRyKHJydHIpOwogICB9CiAKQEAgLTY3NSw3ICs2OTIsNyBAQCBpbnQzMl90IFJU
Q1BTZW5kZXI6OlNlbmRDb21wb3VuZFJUQ1AoCiAKICAgICAvLyBXZSBuZWVkIHRvIHNlbmQgb3Vy
IE5UUCBldmVuIGlmIHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW55IHJlcG9ydHMuCiAgICAgUnRjcENv
bnRleHQgY29udGV4dChmZWVkYmFja19zdGF0ZSwgbmFja19zaXplLCBuYWNrX2xpc3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjbG9ja18tPkN1cnJlbnROdHBUaW1lKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSk7CiAKICAgICBQcmVw
YXJlUmVwb3J0KGZlZWRiYWNrX3N0YXRlKTsKIApAQCAtNzQ4LDI4ICs3NjUsMjQgQEAgdm9pZCBS
VENQU2VuZGVyOjpQcmVwYXJlUmVwb3J0KGNvbnN0IEZlZWRiYWNrU3RhdGUmIGZlZWRiYWNrX3N0
YXRlKSB7CiAgICAgfQogCiAgICAgLy8gZ2VuZXJhdGUgbmV4dCB0aW1lIHRvIHNlbmQgYW4gUlRD
UCByZXBvcnQKLSAgICB1aW50MzJfdCBtaW5JbnRlcnZhbE1zID0KLSAgICAgICAgcnRjOjpkY2hl
Y2tlZF9jYXN0PHVpbnQzMl90PihpbnRlcnZhbF9jb25maWdfLmF1ZGlvX2ludGVydmFsX21zKTsK
LQotICAgIGlmICghYXVkaW9fKSB7Ci0gICAgICBpZiAoc2VuZGluZ18pIHsKLSAgICAgICAgLy8g
Q2FsY3VsYXRlIGJhbmR3aWR0aCBmb3IgdmlkZW87IDM2MCAvIHNlbmQgYmFuZHdpZHRoIGluIGti
aXQvcy4KLSAgICAgICAgdWludDMyX3Qgc2VuZF9iaXRyYXRlX2tiaXQgPSBmZWVkYmFja19zdGF0
ZS5zZW5kX2JpdHJhdGUgLyAxMDAwOwotICAgICAgICBpZiAoc2VuZF9iaXRyYXRlX2tiaXQgIT0g
MCkKLSAgICAgICAgICBtaW5JbnRlcnZhbE1zID0gMzYwMDAwIC8gc2VuZF9iaXRyYXRlX2tiaXQ7
Ci0gICAgICB9Ci0gICAgICBpZiAobWluSW50ZXJ2YWxNcyA+Ci0gICAgICAgICAgcnRjOjpkY2hl
Y2tlZF9jYXN0PHVpbnQzMl90PihpbnRlcnZhbF9jb25maWdfLnZpZGVvX2ludGVydmFsX21zKSkg
ewotICAgICAgICBtaW5JbnRlcnZhbE1zID0KLSAgICAgICAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2Fz
dDx1aW50MzJfdD4oaW50ZXJ2YWxfY29uZmlnXy52aWRlb19pbnRlcnZhbF9tcyk7CisgICAgaW50
IG1pbl9pbnRlcnZhbF9tcyA9IHJlcG9ydF9pbnRlcnZhbF9tc187CisKKyAgICBpZiAoIWF1ZGlv
XyAmJiBzZW5kaW5nXykgeworICAgICAgLy8gQ2FsY3VsYXRlIGJhbmR3aWR0aCBmb3IgdmlkZW87
IDM2MCAvIHNlbmQgYmFuZHdpZHRoIGluIGtiaXQvcy4KKyAgICAgIGludCBzZW5kX2JpdHJhdGVf
a2JpdCA9IGZlZWRiYWNrX3N0YXRlLnNlbmRfYml0cmF0ZSAvIDEwMDA7CisgICAgICBpZiAoc2Vu
ZF9iaXRyYXRlX2tiaXQgIT0gMCkgeworICAgICAgICBtaW5faW50ZXJ2YWxfbXMgPSAzNjAwMDAg
LyBzZW5kX2JpdHJhdGVfa2JpdDsKKyAgICAgICAgbWluX2ludGVydmFsX21zID0gc3RkOjptaW4o
bWluX2ludGVydmFsX21zLCByZXBvcnRfaW50ZXJ2YWxfbXNfKTsKICAgICAgIH0KICAgICB9CiAK
ICAgICAvLyBUaGUgaW50ZXJ2YWwgYmV0d2VlbiBSVENQIHBhY2tldHMgaXMgdmFyaWVkIHJhbmRv
bWx5IG92ZXIgdGhlCiAgICAgLy8gcmFuZ2UgWzEvMiwzLzJdIHRpbWVzIHRoZSBjYWxjdWxhdGVk
IGludGVydmFsLgotICAgIHVpbnQzMl90IHRpbWVUb05leHQgPQotICAgICAgICByYW5kb21fLlJh
bmQobWluSW50ZXJ2YWxNcyAqIDEgLyAyLCBtaW5JbnRlcnZhbE1zICogMyAvIDIpOwotICAgIG5l
eHRfdGltZV90b19zZW5kX3J0Y3BfID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSArIHRp
bWVUb05leHQ7CisgICAgaW50IHRpbWVfdG9fbmV4dCA9CisgICAgICAgIHJhbmRvbV8uUmFuZCht
aW5faW50ZXJ2YWxfbXMgKiAxIC8gMiwgbWluX2ludGVydmFsX21zICogMyAvIDIpOworCisgICAg
UlRDX0RDSEVDS19HVCh0aW1lX3RvX25leHQsIDApOworICAgIG5leHRfdGltZV90b19zZW5kX3J0
Y3BfID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSArIHRpbWVfdG9fbmV4dDsKIAogICAg
IC8vIFJ0Y3BTZW5kZXIgZXhwZWN0ZWQgdG8gYmUgdXNlZCBmb3Igc2VuZGluZyBlaXRoZXIganVz
dCBzZW5kZXIgcmVwb3J0cwogICAgIC8vIG9yIGp1c3QgcmVjZWl2ZXIgcmVwb3J0cy4KQEAgLTc5
MSw3ICs4MDQsNyBAQCBzdGQ6OnZlY3RvcjxydGNwOjpSZXBvcnRCbG9jaz4gUlRDUFNlbmRlcjo6
Q3JlYXRlUmVwb3J0QmxvY2tzKAogICBpZiAoIXJlc3VsdC5lbXB0eSgpICYmICgoZmVlZGJhY2tf
c3RhdGUubGFzdF9ycl9udHBfc2VjcyAhPSAwKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAoZmVlZGJhY2tfc3RhdGUubGFzdF9ycl9udHBfZnJhYyAhPSAwKSkpIHsKICAgICAvLyBHZXQg
b3VyIE5UUCBhcyBsYXRlIGFzIHBvc3NpYmxlIHRvIGF2b2lkIGEgcmFjZS4KLSAgICB1aW50MzJf
dCBub3cgPSBDb21wYWN0TnRwKGNsb2NrXy0+Q3VycmVudE50cFRpbWUoKSk7CisgICAgdWludDMy
X3Qgbm93ID0gQ29tcGFjdE50cChUaW1lTWljcm9zVG9OdHAoY2xvY2tfLT5UaW1lSW5NaWNyb3Nl
Y29uZHMoKSkpOwogCiAgICAgdWludDMyX3QgcmVjZWl2ZV90aW1lID0gZmVlZGJhY2tfc3RhdGUu
bGFzdF9ycl9udHBfc2VjcyAmIDB4MDAwMEZGRkY7CiAgICAgcmVjZWl2ZV90aW1lIDw8PSAxNjsK
QEAgLTk0OSwxMiArOTYyLDQgQEAgYm9vbCBSVENQU2VuZGVyOjpTZW5kRmVlZGJhY2tQYWNrZXQo
Y29uc3QgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2smIHBhY2tldCkgewogICByZXR1cm4gcGFja2V0
LkJ1aWxkKG1heF9wYWNrZXRfc2l6ZSwgY2FsbGJhY2spICYmICFzZW5kX2ZhaWx1cmU7CiB9CiAK
LWludDY0X3QgUlRDUFNlbmRlcjo6UnRjcEF1ZGlvUmVwb3J0SW52ZXJ2YWwoKSBjb25zdCB7Ci0g
IHJldHVybiBpbnRlcnZhbF9jb25maWdfLmF1ZGlvX2ludGVydmFsX21zOwotfQotCi1pbnQ2NF90
IFJUQ1BTZW5kZXI6OlJ0Y3BWaWRlb1JlcG9ydEludmVydmFsKCkgY29uc3QgewotICByZXR1cm4g
aW50ZXJ2YWxfY29uZmlnXy52aWRlb19pbnRlcnZhbF9tczsKLX0KLQogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9zZW5kZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3Bfc2VuZGVyLmgKaW5kZXggYzkyMjBkZDM1YzdhOWRmYTAwYWQyYWM1ZDA5NzFiNWQzMzU3Mzdm
OS4uMDg0NTM5N2RhM2JmNmQyMjQ1NzhmNTFiMDU3YWNjYzgxM2FjMjQ5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF9zZW5kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlci5oCkBAIC02
OCw3ICs2OCw3IEBAIGNsYXNzIFJUQ1BTZW5kZXIgewogICAgICAgICAgICAgIFJ0Y3BQYWNrZXRU
eXBlQ291bnRlck9ic2VydmVyKiBwYWNrZXRfdHlwZV9jb3VudGVyX29ic2VydmVyLAogICAgICAg
ICAgICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCiAgICAgICAgICAgICAgVHJhbnNwb3J0KiBv
dXRnb2luZ190cmFuc3BvcnQsCi0gICAgICAgICAgICAgUnRjcEludGVydmFsQ29uZmlnIGludGVy
dmFsX2NvbmZpZyk7CisgICAgICAgICAgICAgaW50IHJlcG9ydF9pbnRlcnZhbF9tcyk7CiAgIHZp
cnR1YWwgflJUQ1BTZW5kZXIoKTsKIAogICBSdGNwTW9kZSBTdGF0dXMoKSBjb25zdDsKQEAgLTgy
LDcgKzgyLDEzIEBAIGNsYXNzIFJUQ1BTZW5kZXIgewogCiAgIHZvaWQgU2V0VGltZXN0YW1wT2Zm
c2V0KHVpbnQzMl90IHRpbWVzdGFtcF9vZmZzZXQpOwogCi0gIHZvaWQgU2V0TGFzdFJ0cFRpbWUo
dWludDMyX3QgcnRwX3RpbWVzdGFtcCwgaW50NjRfdCBjYXB0dXJlX3RpbWVfbXMpOworICAvLyBU
T0RPKGJ1Z3Mud2VicnRjLm9yZy82NDU4KTogUmVtb3ZlIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVl
IHdoZW4gYWxsIHRoZQorICAvLyBkZXBlbmRpbmcgcHJvamVjdHMgYXJlIHVwZGF0ZWQgdG8gY29y
cmVjdGx5IHNldCBwYXlsb2FkIHR5cGUuCisgIHZvaWQgU2V0TGFzdFJ0cFRpbWUodWludDMyX3Qg
cnRwX3RpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGNhcHR1cmVfdGlt
ZV9tcywKKyAgICAgICAgICAgICAgICAgICAgICBpbnQ4X3QgcGF5bG9hZF90eXBlID0gLTEpOwor
CisgIHZvaWQgU2V0UnRwQ2xvY2tSYXRlKGludDhfdCBwYXlsb2FkX3R5cGUsIGludCBydHBfY2xv
Y2tfcmF0ZV9oeik7CiAKICAgdWludDMyX3QgU1NSQygpIGNvbnN0OwogCkBAIC0xMzUsOSArMTQx
LDYgQEAgY2xhc3MgUlRDUFNlbmRlciB7CiAgIHZvaWQgU2V0VmlkZW9CaXRyYXRlQWxsb2NhdGlv
bihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlKTsKICAgYm9vbCBTZW5kRmVl
ZGJhY2tQYWNrZXQoY29uc3QgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2smIHBhY2tldCk7CiAKLSAg
aW50NjRfdCBSdGNwQXVkaW9SZXBvcnRJbnZlcnZhbCgpIGNvbnN0OwotICBpbnQ2NF90IFJ0Y3BW
aWRlb1JlcG9ydEludmVydmFsKCkgY29uc3Q7Ci0KICBwcml2YXRlOgogICBjbGFzcyBSdGNwQ29u
dGV4dDsKIApAQCAtMTg0LDEwICsxODcsOSBAQCBjbGFzcyBSVENQU2VuZGVyIHsKICAgUnRjRXZl
bnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187CiAgIFRyYW5zcG9ydCogY29uc3QgdHJhbnNwb3J0XzsK
IAotICBjb25zdCBSdGNwSW50ZXJ2YWxDb25maWcgaW50ZXJ2YWxfY29uZmlnXzsKKyAgY29uc3Qg
aW50IHJlcG9ydF9pbnRlcnZhbF9tc187CiAKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdGlj
YWxfc2VjdGlvbl9ydGNwX3NlbmRlcl87Ci0gIGJvb2wgdXNpbmdfbmFja18gUlRDX0dVQVJERURf
QlkoY3JpdGljYWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8pOwogICBib29sIHNlbmRpbmdfIFJUQ19H
VUFSREVEX0JZKGNyaXRpY2FsX3NlY3Rpb25fcnRjcF9zZW5kZXJfKTsKIAogICBpbnQ2NF90IG5l
eHRfdGltZV90b19zZW5kX3J0Y3BfIFJUQ19HVUFSREVEX0JZKGNyaXRpY2FsX3NlY3Rpb25fcnRj
cF9zZW5kZXJfKTsKQEAgLTI0NCw2ICsyNDYsMTEgQEAgY2xhc3MgUlRDUFNlbmRlciB7CiAgICAg
ICBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2VuZGVyXyk7CiAgIGJvb2wg
c2VuZF92aWRlb19iaXRyYXRlX2FsbG9jYXRpb25fCiAgICAgICBSVENfR1VBUkRFRF9CWShjcml0
aWNhbF9zZWN0aW9uX3J0Y3Bfc2VuZGVyXyk7CisKKyAgc3RkOjptYXA8aW50OF90LCBpbnQ+IHJ0
cF9jbG9ja19yYXRlc19raHpfCisgICAgICBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9u
X3J0Y3Bfc2VuZGVyXyk7CisgIGludDhfdCBsYXN0X3BheWxvYWRfdHlwZV8gUlRDX0dVQVJERURf
QlkoY3JpdGljYWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8pOworCiAgIGFic2w6Om9wdGlvbmFsPFZp
ZGVvQml0cmF0ZUFsbG9jYXRpb24+IENoZWNrQW5kVXBkYXRlTGF5ZXJTdHJ1Y3R1cmUoCiAgICAg
ICBjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlKSBjb25zdAogICAgICAgUlRD
X0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2VuZGVyXyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0Y3Bfc2VuZGVyX3VuaXR0ZXN0LmNjCmluZGV4IGJjZmZjODEyMTNkOWYxMjQ5YzgzMzQzMzg4
M2U2NTVmMzU5MjIzYmUuLmUxYTQzNmI4NDUyZmY3MjkxYzk0YjhmZjcxODBlZGI1ZjFjM2I4NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bfc2VuZGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3Bfc2VuZGVyX3VuaXR0ZXN0LmNjCkBAIC0xMSwxMSArMTEsMTMgQEAKICNpbmNsdWRl
IDxtZW1vcnk+CiAKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9p
bmNsdWRlKQorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZp
bmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYnll
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvY29tbW9u
X2hlYWRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bfc2VuZGVy
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZl
ZC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2ltcGwuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90aW1lX3V0aWwuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9yYXRlX2xpbWl0ZXIuaCIKICNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCiAjaW5j
bHVkZSAidGVzdC9ndGVzdC5oIgpAQCAtNDMsNyArNDUsNyBAQCBjbGFzcyBSdGNwUGFja2V0VHlw
ZUNvdW50ZXJPYnNlcnZlckltcGwgOiBwdWJsaWMgUnRjcFBhY2tldFR5cGVDb3VudGVyT2JzZXJ2
ZXIgewogICBSdGNwUGFja2V0VHlwZUNvdW50ZXIgY291bnRlcl87CiB9OwogCi1jbGFzcyBUZXN0
VHJhbnNwb3J0IDogcHVibGljIFRyYW5zcG9ydCwgcHVibGljIFJ0cERhdGEgeworY2xhc3MgVGVz
dFRyYW5zcG9ydCA6IHB1YmxpYyBUcmFuc3BvcnQgewogIHB1YmxpYzoKICAgVGVzdFRyYW5zcG9y
dCgpIHt9CiAKQEAgLTU2LDExICs1OCw2IEBAIGNsYXNzIFRlc3RUcmFuc3BvcnQgOiBwdWJsaWMg
VHJhbnNwb3J0LCBwdWJsaWMgUnRwRGF0YSB7CiAgICAgcGFyc2VyXy5QYXJzZShkYXRhLCBsZW4p
OwogICAgIHJldHVybiB0cnVlOwogICB9Ci0gIGludCBPblJlY2VpdmVkUGF5bG9hZERhdGEoY29u
c3QgdWludDhfdCogcGF5bG9hZF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBwYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
UnRjUlRQSGVhZGVyKiBydHBfaGVhZGVyKSBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0K
ICAgdGVzdDo6UnRjcFBhY2tldFBhcnNlciBwYXJzZXJfOwogfTsKIApAQCAtODIsMTUgKzc5LDE3
IEBAIGNsYXNzIFJ0Y3BTZW5kZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAg
Y29uZmlndXJhdGlvbi5jbG9jayA9ICZjbG9ja187CiAgICAgY29uZmlndXJhdGlvbi5vdXRnb2lu
Z190cmFuc3BvcnQgPSAmdGVzdF90cmFuc3BvcnRfOwogICAgIGNvbmZpZ3VyYXRpb24ucmV0cmFu
c21pc3Npb25fcmF0ZV9saW1pdGVyID0gJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl87Cisg
ICAgY29uZmlndXJhdGlvbi5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IDEwMDA7CiAKICAgICBy
dHBfcnRjcF9pbXBsXy5yZXNldChuZXcgTW9kdWxlUnRwUnRjcEltcGwoY29uZmlndXJhdGlvbikp
OwogICAgIHJ0Y3Bfc2VuZGVyXy5yZXNldChuZXcgUlRDUFNlbmRlcihmYWxzZSwgJmNsb2NrXywg
cmVjZWl2ZV9zdGF0aXN0aWNzXy5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgJnRlc3RfdHJhbnNwb3J0XywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5ydGNwX2ludGVydmFsX2Nv
bmZpZykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0
aW9uLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zKSk7CiAgICAgcnRjcF9zZW5kZXJfLT5TZXRTU1JD
KGtTZW5kZXJTc3JjKTsKICAgICBydGNwX3NlbmRlcl8tPlNldFJlbW90ZVNTUkMoa1JlbW90ZVNz
cmMpOwogICAgIHJ0Y3Bfc2VuZGVyXy0+U2V0VGltZXN0YW1wT2Zmc2V0KGtTdGFydFJ0cFRpbWVz
dGFtcCk7Ci0gICAgcnRjcF9zZW5kZXJfLT5TZXRMYXN0UnRwVGltZShrUnRwVGltZXN0YW1wLCBj
bG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOworICAgIHJ0Y3Bfc2VuZGVyXy0+U2V0TGFzdFJ0
cFRpbWUoa1J0cFRpbWVzdGFtcCwgY2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLypwYXlscGFkX3R5cGU9Ki8wKTsKICAgfQogCiAg
IHZvaWQgSW5zZXJ0SW5jb21pbmdQYWNrZXQodWludDMyX3QgcmVtb3RlX3NzcmMsIHVpbnQxNl90
IHNlcV9udW0pIHsKQEAgLTE0MSw3ICsxNDAsNyBAQCBURVNUX0YoUnRjcFNlbmRlclRlc3QsIFNl
bmRTcikgewogICBydGNwX3NlbmRlcl8tPlNldFNlbmRpbmdTdGF0dXMoZmVlZGJhY2tfc3RhdGUs
IHRydWUpOwogICBmZWVkYmFja19zdGF0ZS5wYWNrZXRzX3NlbnQgPSBrUGFja2V0Q291bnQ7CiAg
IGZlZWRiYWNrX3N0YXRlLm1lZGlhX2J5dGVzX3NlbnQgPSBrT2N0ZXRDb3VudDsKLSAgTnRwVGlt
ZSBudHAgPSBjbG9ja18uQ3VycmVudE50cFRpbWUoKTsKKyAgTnRwVGltZSBudHAgPSBUaW1lTWlj
cm9zVG9OdHAoY2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKICAgRVhQRUNUX0VRKDAsIHJ0
Y3Bfc2VuZGVyXy0+U2VuZFJUQ1AoZmVlZGJhY2tfc3RhdGUsIGtSdGNwU3IpKTsKICAgRVhQRUNU
X0VRKDEsIHBhcnNlcigpLT5zZW5kZXJfcmVwb3J0KCktPm51bV9wYWNrZXRzKCkpOwogICBFWFBF
Q1RfRVEoa1NlbmRlclNzcmMsIHBhcnNlcigpLT5zZW5kZXJfcmVwb3J0KCktPnNlbmRlcl9zc3Jj
KCkpOwpAQCAtMTUzLDEwICsxNTIsNDIgQEAgVEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBTZW5kU3Ip
IHsKICAgRVhQRUNUX0VRKDBVLCBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5yZXBvcnRfYmxv
Y2tzKCkuc2l6ZSgpKTsKIH0KIAorVEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBTZW5kQ29uc2VjdXRp
dmVTcldpdGhFeGFjdFNsb3BlKSB7CisgIGNvbnN0IHVpbnQzMl90IGtQYWNrZXRDb3VudCA9IDB4
MTIzNDU7CisgIGNvbnN0IHVpbnQzMl90IGtPY3RldENvdW50ID0gMHgyMzQ1NjsKKyAgY29uc3Qg
aW50IGtUaW1lQmV0d2VlblNSc1VzID0gMTAwNDM7ICAvLyBOb3QgZXhhY3QgdmFsdWUgaW4gbWls
bGlzZWNvbmRzLgorICBjb25zdCBpbnQga0V4dHJhUGFja2V0cyA9IDMwOworICAvLyBNYWtlIHN1
cmUgY2xvY2sgaXMgbm90IGV4YWN0bHkgYXQgc29tZSBtaWxsaXNlY29uZHMgcG9pbnQuCisgIGNs
b2NrXy5BZHZhbmNlVGltZU1pY3Jvc2Vjb25kcyhrVGltZUJldHdlZW5TUnNVcyk7CisgIHJ0Y3Bf
c2VuZGVyXy0+U2V0UlRDUFN0YXR1cyhSdGNwTW9kZTo6a1JlZHVjZWRTaXplKTsKKyAgUlRDUFNl
bmRlcjo6RmVlZGJhY2tTdGF0ZSBmZWVkYmFja19zdGF0ZSA9IHJ0cF9ydGNwX2ltcGxfLT5HZXRG
ZWVkYmFja1N0YXRlKCk7CisgIHJ0Y3Bfc2VuZGVyXy0+U2V0U2VuZGluZ1N0YXR1cyhmZWVkYmFj
a19zdGF0ZSwgdHJ1ZSk7CisgIGZlZWRiYWNrX3N0YXRlLnBhY2tldHNfc2VudCA9IGtQYWNrZXRD
b3VudDsKKyAgZmVlZGJhY2tfc3RhdGUubWVkaWFfYnl0ZXNfc2VudCA9IGtPY3RldENvdW50Owor
CisgIEVYUEVDVF9FUSgwLCBydGNwX3NlbmRlcl8tPlNlbmRSVENQKGZlZWRiYWNrX3N0YXRlLCBr
UnRjcFNyKSk7CisgIEVYUEVDVF9FUSgxLCBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5udW1f
cGFja2V0cygpKTsKKyAgTnRwVGltZSBudHAxID0gcGFyc2VyKCktPnNlbmRlcl9yZXBvcnQoKS0+
bnRwKCk7CisgIHVpbnQzMl90IHJ0cDEgPSBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5ydHBf
dGltZXN0YW1wKCk7CisKKyAgLy8gU2VuZCBtb3JlIFNScyB0byBlbnN1cmUgc2xvcGUgaXMgYWx3
YXlzIGV4YWN0IGZvciBkaWZmZXJlbnQgb2Zmc2V0cworICBmb3IgKGludCBwYWNrZXRzID0gMTsg
cGFja2V0cyA8PSBrRXh0cmFQYWNrZXRzOyArK3BhY2tldHMpIHsKKyAgICBjbG9ja18uQWR2YW5j
ZVRpbWVNaWNyb3NlY29uZHMoa1RpbWVCZXR3ZWVuU1JzVXMpOworICAgIEVYUEVDVF9FUSgwLCBy
dGNwX3NlbmRlcl8tPlNlbmRSVENQKGZlZWRiYWNrX3N0YXRlLCBrUnRjcFNyKSk7CisgICAgRVhQ
RUNUX0VRKHBhY2tldHMgKyAxLCBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5udW1fcGFja2V0
cygpKTsKKworICAgIE50cFRpbWUgbnRwMiA9IHBhcnNlcigpLT5zZW5kZXJfcmVwb3J0KCktPm50
cCgpOworICAgIHVpbnQzMl90IHJ0cDIgPSBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5ydHBf
dGltZXN0YW1wKCk7CisKKyAgICB1aW50MzJfdCBudHBfZGlmZl9pbl9ydHBfdW5pdHMgPQorICAg
ICAgICAobnRwMi5Ub01zKCkgLSBudHAxLlRvTXMoKSkgKiAoa1ZpZGVvUGF5bG9hZFR5cGVGcmVx
dWVuY3kgLyAxMDAwKTsKKyAgICBFWFBFQ1RfRVEocnRwMiAtIHJ0cDEsIG50cF9kaWZmX2luX3J0
cF91bml0cyk7CisgIH0KK30KKwogVEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBEb05vdFNlbmRTckJl
Zm9yZVJ0cCkgewogICBydGNwX3NlbmRlcl8ucmVzZXQobmV3IFJUQ1BTZW5kZXIoZmFsc2UsICZj
bG9ja18sIHJlY2VpdmVfc3RhdGlzdGljc18uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCAmdGVzdF90cmFuc3BvcnRfLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEludGVydmFsQ29uZmlne30pKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsICZ0ZXN0
X3RyYW5zcG9ydF8sIDEwMDApKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRTU1JDKGtTZW5kZXJTc3Jj
KTsKICAgcnRjcF9zZW5kZXJfLT5TZXRSZW1vdGVTU1JDKGtSZW1vdGVTc3JjKTsKICAgcnRjcF9z
ZW5kZXJfLT5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprUmVkdWNlZFNpemUpOwpAQCAtMTc0LDgg
KzIwNSw3IEBAIFRFU1RfRihSdGNwU2VuZGVyVGVzdCwgRG9Ob3RTZW5kU3JCZWZvcmVSdHApIHsK
IAogVEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBEb05vdFNlbmRDb21wdW5kQmVmb3JlUnRwKSB7CiAg
IHJ0Y3Bfc2VuZGVyXy5yZXNldChuZXcgUlRDUFNlbmRlcihmYWxzZSwgJmNsb2NrXywgcmVjZWl2
ZV9zdGF0aXN0aWNzXy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsIG51bGxwdHIsICZ0ZXN0X3RyYW5zcG9ydF8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSdGNwSW50ZXJ2YWxDb25maWd7fSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgJnRlc3RfdHJhbnNwb3J0Xywg
MTAwMCkpOwogICBydGNwX3NlbmRlcl8tPlNldFNTUkMoa1NlbmRlclNzcmMpOwogICBydGNwX3Nl
bmRlcl8tPlNldFJlbW90ZVNTUkMoa1JlbW90ZVNzcmMpOwogICBydGNwX3NlbmRlcl8tPlNldFJU
Q1BTdGF0dXMoUnRjcE1vZGU6OmtDb21wb3VuZCk7CkBAIC00NDcsNyArNDc3LDcgQEAgVEVTVF9G
KFJ0Y3BTZW5kZXJUZXN0LCBTZW5kWHJXaXRoUnJ0cikgewogICBydGNwX3NlbmRlcl8tPlNldFJU
Q1BTdGF0dXMoUnRjcE1vZGU6OmtDb21wb3VuZCk7CiAgIEVYUEVDVF9FUSgwLCBydGNwX3NlbmRl
cl8tPlNldFNlbmRpbmdTdGF0dXMoZmVlZGJhY2tfc3RhdGUoKSwgZmFsc2UpKTsKICAgcnRjcF9z
ZW5kZXJfLT5TZW5kUnRjcFhyUmVjZWl2ZXJSZWZlcmVuY2VUaW1lKHRydWUpOwotICBOdHBUaW1l
IG50cCA9IGNsb2NrXy5DdXJyZW50TnRwVGltZSgpOworICBOdHBUaW1lIG50cCA9IFRpbWVNaWNy
b3NUb050cChjbG9ja18uVGltZUluTWljcm9zZWNvbmRzKCkpOwogICBFWFBFQ1RfRVEoMCwgcnRj
cF9zZW5kZXJfLT5TZW5kUlRDUChmZWVkYmFja19zdGF0ZSgpLCBrUnRjcFJlcG9ydCkpOwogICBF
WFBFQ1RfRVEoMSwgcGFyc2VyKCktPnhyKCktPm51bV9wYWNrZXRzKCkpOwogICBFWFBFQ1RfRVEo
a1NlbmRlclNzcmMsIHBhcnNlcigpLT54cigpLT5zZW5kZXJfc3NyYygpKTsKQEAgLTQ3Niw3ICs1
MDYsNyBAQCBURVNUX0YoUnRjcFNlbmRlclRlc3QsIFRlc3RSZWdpc3RlclJ0Y3BQYWNrZXRUeXBl
T2JzZXJ2ZXIpIHsKICAgUnRjcFBhY2tldFR5cGVDb3VudGVyT2JzZXJ2ZXJJbXBsIG9ic2VydmVy
OwogICBydGNwX3NlbmRlcl8ucmVzZXQobmV3IFJUQ1BTZW5kZXIoZmFsc2UsICZjbG9ja18sIHJl
Y2VpdmVfc3RhdGlzdGljc18uZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmb2JzZXJ2ZXIsIG51bGxwdHIsICZ0ZXN0X3RyYW5zcG9ydF8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSdGNwSW50ZXJ2YWxDb25maWd7fSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMCkpOwogICBydGNwX3NlbmRlcl8tPlNldFJl
bW90ZVNTUkMoa1JlbW90ZVNzcmMpOwogICBydGNwX3NlbmRlcl8tPlNldFJUQ1BTdGF0dXMoUnRj
cE1vZGU6OmtSZWR1Y2VkU2l6ZSk7CiAgIEVYUEVDVF9FUSgwLCBydGNwX3NlbmRlcl8tPlNlbmRS
VENQKGZlZWRiYWNrX3N0YXRlKCksIGtSdGNwUGxpKSk7CkBAIC01OTgsMTIgKzYyOCwxMiBAQCBU
RVNUX0YoUnRjcFNlbmRlclRlc3QsIEJ5ZU11c3RCZUxhc3QpIHsKIAogICAvLyBSZS1jb25maWd1
cmUgcnRjcF9zZW5kZXJfIHdpdGggbW9ja190cmFuc3BvcnRfCiAgIHJ0Y3Bfc2VuZGVyXy5yZXNl
dChuZXcgUlRDUFNlbmRlcihmYWxzZSwgJmNsb2NrXywgcmVjZWl2ZV9zdGF0aXN0aWNzXy5nZXQo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIs
ICZtb2NrX3RyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0
Y3BJbnRlcnZhbENvbmZpZ3t9KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLCBudWxscHRyLCAmbW9ja190cmFuc3BvcnQsIDEwMDApKTsKICAgcnRjcF9zZW5k
ZXJfLT5TZXRTU1JDKGtTZW5kZXJTc3JjKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRSZW1vdGVTU1JD
KGtSZW1vdGVTc3JjKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRUaW1lc3RhbXBPZmZzZXQoa1N0YXJ0
UnRwVGltZXN0YW1wKTsKLSAgcnRjcF9zZW5kZXJfLT5TZXRMYXN0UnRwVGltZShrUnRwVGltZXN0
YW1wLCBjbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOworICBydGNwX3NlbmRlcl8tPlNldExh
c3RSdHBUaW1lKGtSdHBUaW1lc3RhbXAsIGNsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnBheWxwYWRfdHlwZT0qLzApOwogCiAgIC8v
IFNldCB1cCBSRU1CIGluZm8gdG8gYmUgaW5jbHVkZWQgd2l0aCBCWUUuCiAgIHJ0Y3Bfc2VuZGVy
Xy0+U2V0UlRDUFN0YXR1cyhSdGNwTW9kZTo6a0NvbXBvdW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfdHJhbnNjZWl2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyLmNjCmlu
ZGV4IDc3YjEwY2EwNTJkOTg2NDk5M2ZkYTFiZWFlNGFkZTBjNzFiMjIzNDYuLjU3ZDIxNDJmZmFk
NGZmZjFlMTcyOTU1ZmM2ZjMxZDZjZTg5ZGU5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
dHJhbnNjZWl2ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlci5jYwpAQCAtMzks
MTAgKzM5LDEwIEBAIFJ0Y3BUcmFuc2NlaXZlcjo6flJ0Y3BUcmFuc2NlaXZlcigpIHsKICAgUlRD
X0RDSEVDSyghcnRjcF90cmFuc2NlaXZlcl8pOwogfQogCi12b2lkIFJ0Y3BUcmFuc2NlaXZlcjo6
U3RvcChzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpRdWV1ZWRUYXNrPiBvbl9kZXN0cm95ZWQpIHsKK3Zv
aWQgUnRjcFRyYW5zY2VpdmVyOjpTdG9wKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBvbl9kZXN0cm95
ZWQpIHsKICAgUlRDX0RDSEVDSyhydGNwX3RyYW5zY2VpdmVyXyk7Ci0gIHRhc2tfcXVldWVfLT5Q
b3N0VGFza0FuZFJlcGx5KERlc3RydWN0b3J7c3RkOjptb3ZlKHJ0Y3BfdHJhbnNjZWl2ZXJfKX0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShvbl9kZXN0cm95ZWQp
KTsKKyAgdGFza19xdWV1ZV8tPlBvc3RUYXNrKHJ0Yzo6TmV3Q2xvc3VyZSgKKyAgICAgIERlc3Ry
dWN0b3J7c3RkOjptb3ZlKHJ0Y3BfdHJhbnNjZWl2ZXJfKX0sIHN0ZDo6bW92ZShvbl9kZXN0cm95
ZWQpKSk7CiAgIFJUQ19EQ0hFQ0soIXJ0Y3BfdHJhbnNjZWl2ZXJfKTsKIH0KIApAQCAtNTksMTMg
KzU5LDE0IEBAIHZvaWQgUnRjcFRyYW5zY2VpdmVyOjpBZGRNZWRpYVJlY2VpdmVyUnRjcE9ic2Vy
dmVyKAogdm9pZCBSdGNwVHJhbnNjZWl2ZXI6OlJlbW92ZU1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2
ZXIoCiAgICAgdWludDMyX3QgcmVtb3RlX3NzcmMsCiAgICAgTWVkaWFSZWNlaXZlclJ0Y3BPYnNl
cnZlciogb2JzZXJ2ZXIsCi0gICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6UXVldWVkVGFzaz4gb25f
cmVtb3ZlZCkgeworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBvbl9yZW1vdmVkKSB7CiAgIFJU
Q19DSEVDSyhydGNwX3RyYW5zY2VpdmVyXyk7CiAgIFJ0Y3BUcmFuc2NlaXZlckltcGwqIHB0ciA9
IHJ0Y3BfdHJhbnNjZWl2ZXJfLmdldCgpOwogICBhdXRvIHJlbW92ZSA9IFtwdHIsIHJlbW90ZV9z
c3JjLCBvYnNlcnZlcl0gewogICAgIHB0ci0+UmVtb3ZlTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZl
cihyZW1vdGVfc3NyYywgb2JzZXJ2ZXIpOwogICB9OwotICB0YXNrX3F1ZXVlXy0+UG9zdFRhc2tB
bmRSZXBseShzdGQ6Om1vdmUocmVtb3ZlKSwgc3RkOjptb3ZlKG9uX3JlbW92ZWQpKTsKKyAgdGFz
a19xdWV1ZV8tPlBvc3RUYXNrKAorICAgICAgcnRjOjpOZXdDbG9zdXJlKHN0ZDo6bW92ZShyZW1v
dmUpLCBzdGQ6Om1vdmUob25fcmVtb3ZlZCkpKTsKIH0KIAogdm9pZCBSdGNwVHJhbnNjZWl2ZXI6
OlNldFJlYWR5VG9TZW5kKGJvb2wgcmVhZHkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
dHJhbnNjZWl2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXIuaAppbmRleCBmYzk0ODhj
NGFiZDY0MGM1MDdmNWZjZTQzOWYzN2I4YjNlNTViYmVhLi45Yzk2NzUxMTBmYTYwZTM5NWY1MTI1
MDM0MWYxYjBlMGM5MGM5OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlci5oCkBAIC0xMSw2ICsxMSw3IEBACiAj
aWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfVFJBTlNDRUlWRVJfSF8KICNkZWZp
bmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9UUkFOU0NFSVZFUl9IXwogCisjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KQEAgLTQyLDE4ICs0MywxNyBAQCBjbGFzcyBSdGNwVHJhbnNjZWl2ZXIg
OiBwdWJsaWMgUnRjcEZlZWRiYWNrU2VuZGVySW50ZXJmYWNlIHsKICAgLy8gTm90ZSB0aGF0IGlu
dGVyZmFjZXMgcHJvdmlkZWQgaW4gY29uc3RydWN0b3Igb3IgcmVnaXN0ZXJlZCB3aXRoIEFkZE9i
c2VydmVyCiAgIC8vIHN0aWxsIG1pZ2h0IGJlIHVzZWQgYnkgdGhlIHRyYW5zY2VpdmVyIG9uIHRo
ZSB0YXNrIHF1ZXVlCiAgIC8vIHVudGlsIHxvbl9kZXN0cm95ZWR8IHJ1bnMuCi0gIHZvaWQgU3Rv
cChzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpRdWV1ZWRUYXNrPiBvbl9kZXN0cm95ZWQpOworICB2b2lk
IFN0b3Aoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG9uX2Rlc3Ryb3llZCk7CiAKICAgLy8gUmVnaXN0
ZXJzIG9ic2VydmVyIHRvIGJlIG5vdGlmaWVkIGFib3V0IGluY29taW5nIHJ0Y3AgcGFja2V0cy4K
ICAgLy8gQ2FsbHMgdG8gb2JzZXJ2ZXIgd2lsbCBiZSBkb25lIG9uIHRoZSB8Y29uZmlnLnRhc2tf
cXVldWV8LgogICB2b2lkIEFkZE1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIodWludDMyX3QgcmVt
b3RlX3NzcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVJlY2Vp
dmVyUnRjcE9ic2VydmVyKiBvYnNlcnZlcik7CiAgIC8vIERlcmVnaXN0ZXJzIHRoZSBvYnNlcnZl
ci4gTWlnaHQgcmV0dXJuIGJlZm9yZSBvYnNlcnZlciBpcyBkZXJlZ2lzdGVyZWQuCi0gIC8vIFBv
c3RzIHxvbl9yZW1vdmVkfCB0YXNrIHdoZW4gb2JzZXJ2ZXIgaXMgZGVyZWdpc3RlcmVkLgotICB2
b2lkIFJlbW92ZU1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIoCi0gICAgICB1aW50MzJfdCByZW1v
dGVfc3NyYywKLSAgICAgIE1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIqIG9ic2VydmVyLAotICAg
ICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6UXVldWVkVGFzaz4gb25fcmVtb3ZlZCk7CisgIC8vIFJ1
bnMgfG9uX3JlbW92ZWR8IHdoZW4gb2JzZXJ2ZXIgaXMgZGVyZWdpc3RlcmVkLgorICB2b2lkIFJl
bW92ZU1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIodWludDMyX3QgcmVtb3RlX3NzcmMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVJlY2VpdmVyUnRjcE9ic2Vy
dmVyKiBvYnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBvbl9yZW1vdmVkKTsKIAogICAvLyBFbmFibGVzL2Rpc2FibGVz
IHNlbmRpbmcgcnRjcCBwYWNrZXRzIGV2ZW50dWFsbHkuCiAgIC8vIFBhY2tldHMgbWF5IGJlIHNl
bnQgYWZ0ZXIgdGhlIFNldFJlYWR5VG9TZW5kKGZhbHNlKSByZXR1cm5zLCBidXQgbm8gbmV3CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2NvbmZpZy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRjcF90cmFuc2NlaXZlcl9jb25maWcuaAppbmRleCAwZGExOGUyY2MxYjEyOGEzZmQzYmYyNzAz
MjU1YThiZmYwYzhmZmRmLi4wMTMzMGQwYmM3ZGZiMGFmZjE2NDk3NjBmYWZiNWU3ZjFmNmZmMmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2NvbmZpZy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0Y3BfdHJhbnNjZWl2ZXJfY29uZmlnLmgKQEAgLTk3LDExICs5Nyw2IEBAIHN0cnVj
dCBSdGNwVHJhbnNjZWl2ZXJDb25maWcgewogICAvLyBFc3RpbWF0ZSBSVFQgYXMgbm9uLXNlbmRl
ciBhcyBkZXNjcmliZWQgaW4KICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM2
MTEjc2VjdGlvbi00LjQgYW5kICNzZWN0aW9uLTQuNQogICBib29sIG5vbl9zZW5kZXJfcnR0X21l
YXN1cmVtZW50ID0gZmFsc2U7Ci0gIC8vIENvcGllcyBMYXN0U1IvRGVsYXlTaW5jZUxhc3RTUiBm
b3IgcHJldmlvdXMgcmVwb3J0IGJsb2NrIHRvIGF2b2lkCi0gIC8vIHRyaWdnZXJpbmcgYnVnIGlu
IG9sZGVyIHZlcnNpb24gb2YgUnRjcFJlY2VpdmVyLgotICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9y
Zy84ODA1KTogQ2hhbmdlIHRvIGZhbHNlIGJ5IGRlZmF1bHQgdGhlbiByZW1vdmUgd2hlbgotICAv
LyBhbGwgbWFqb3Igd2VicnRjIGNsaWVudHMgdXBkYXRlZCB3aXRoIHRoZSBmaXggaW4gUnRjcFJl
Y2VpdmVyLgotICBib29sIGF2b2lkX3plcm9fbGFzdF9zcl9pbl9sYXN0X3JlcG9ydF9ibG9jayA9
IHRydWU7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydGNwX3RyYW5zY2VpdmVyX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2lt
cGwuY2MKaW5kZXggMmM2YzNhY2MzOTEzNjVjYTU4ZjY2ZTNkYzdlNzU2OTYzMDI3NGNjOS4uOTdj
MmFjMDE4YjMxZDBhNTZmMjIyYTBkMDg0NDJlNWYzY2I3YWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF90cmFuc2NlaXZlcl9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2
ZXJfaW1wbC5jYwpAQCAtNDIxLDEyICs0MjEsNiBAQCBzdGQ6OnZlY3RvcjxydGNwOjpSZXBvcnRC
bG9jaz4gUnRjcFRyYW5zY2VpdmVySW1wbDo6Q3JlYXRlUmVwb3J0QmxvY2tzKAogICAgIGF1dG8g
aXQgPSByZW1vdGVfc2VuZGVyc18uZmluZChyZXBvcnRfYmxvY2suc291cmNlX3NzcmMoKSk7CiAg
ICAgaWYgKGl0ID09IHJlbW90ZV9zZW5kZXJzXy5lbmQoKSB8fAogICAgICAgICAhaXQtPnNlY29u
ZC5sYXN0X3JlY2VpdmVkX3NlbmRlcl9yZXBvcnQpIHsKLSAgICAgIGlmIChjb25maWdfLmF2b2lk
X3plcm9fbGFzdF9zcl9pbl9sYXN0X3JlcG9ydF9ibG9jayAmJiBsYXN0X3NyICE9IDApIHsKLSAg
ICAgICAgLy8gU2ltdWxhdGUgYmVoYXZpb3VyIG9mIHRoZSBSdGNwU2VuZGVyIHRvIGF2b2lkIGhp
dHRpbmcgYnVnIGluCi0gICAgICAgIC8vIFJ0Y3BSZWNlaXZlci4KLSAgICAgICAgcmVwb3J0X2Js
b2NrLlNldExhc3RTcihsYXN0X3NyKTsKLSAgICAgICAgcmVwb3J0X2Jsb2NrLlNldERlbGF5TGFz
dFNyKGxhc3RfZGVsYXkpOwotICAgICAgfQogICAgICAgY29udGludWU7CiAgICAgfQogICAgIGNv
bnN0IFNlbmRlclJlcG9ydFRpbWVzJiBsYXN0X3NlbmRlcl9yZXBvcnQgPQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlcl9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF90cmFuc2NlaXZlcl9pbXBsX3VuaXR0ZXN0LmNjCmluZGV4IGU1ZGIwODYyY2M0NzYxMDliY2M5
M2IyYWJiNGIxZGY2ZWVlNzY1ZGMuLmU4NmQ2N2Y1NzkwYzdmMmNjZWEyZGIyNzFmZmRlNzljMTVl
ZjljZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXJfaW1wbF91bml0dGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2ltcGxfdW5pdHRlc3QuY2MKQEAg
LTc3LDcgKzc3LDYgQEAgY29uc3RleHByIGludCBrQWxtb3N0Rm9yZXZlck1zID0gMTAwMDsKIC8v
IEhlbHBlciB0byB3YWl0IGZvciBhbiBydGNwIHBhY2tldCBwcm9kdWNlZCBvbiBhIGRpZmZlcmVu
dCB0aHJlYWQvdGFzayBxdWV1ZS4KIGNsYXNzIEZha2VSdGNwVHJhbnNwb3J0IDogcHVibGljIHdl
YnJ0Yzo6VHJhbnNwb3J0IHsKICBwdWJsaWM6Ci0gIEZha2VSdGNwVHJhbnNwb3J0KCkgOiBzZW50
X3J0Y3BfKGZhbHNlLCBmYWxzZSkge30KICAgYm9vbCBTZW5kUnRjcChjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkgb3ZlcnJpZGUgewogICAgIHNlbnRfcnRjcF8uU2V0KCk7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC0xNDgsNyArMTQ3LDcgQEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJJbXBs
VGVzdCwgQ2FuRGVzdHJveU9uVGFza1F1ZXVlKSB7CiAgIC8vIFdhaXQgZm9yIGEgcGVyaW9kaWMg
cGFja2V0LgogICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnQuV2FpdFBhY2tldCgpKTsKIAotICBydGM6
OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICBxdWV1ZS5Q
b3N0VGFzayhbcnRjcF90cmFuc2NlaXZlciwgJmRvbmVdIHsKICAgICBkZWxldGUgcnRjcF90cmFu
c2NlaXZlcjsKICAgICBkb25lLlNldCgpOwpAQCAtMTg3LDcgKzE4Niw3IEBAIFRFU1QoUnRjcFRy
YW5zY2VpdmVySW1wbFRlc3QsIERlbGF5c1NlbmRpbmdGaXJzdENvbXBvbmRQYWNrZXQpIHsKICAg
RVhQRUNUX0dFKHJ0Yzo6VGltZU1pbGxpcygpIC0gc3RhcnRlZF9tcywgY29uZmlnLmluaXRpYWxf
cmVwb3J0X2RlbGF5X21zKTsKIAogICAvLyBDbGVhbnVwLgotICBydGM6OkV2ZW50IGRvbmUoZmFs
c2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICBxdWV1ZS5Qb3N0VGFzayhbJl0gewog
ICAgIHJ0Y3BfdHJhbnNjZWl2ZXIucmVzZXQoKTsKICAgICBkb25lLlNldCgpOwpAQCAtMjIwLDcg
KzIxOSw3IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVySW1wbFRlc3QsIFBlcmlvZGljYWxseVNlbmRz
UGFja2V0cykgewogICAgICAgICAgICAgY29uZmlnLnJlcG9ydF9wZXJpb2RfbXMgLSAxKTsKIAog
ICAvLyBDbGVhbnVwLgotICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpF
dmVudCBkb25lOwogICBxdWV1ZS5Qb3N0VGFzayhbJl0gewogICAgIHJ0Y3BfdHJhbnNjZWl2ZXIu
cmVzZXQoKTsKICAgICBkb25lLlNldCgpOwpAQCAtMjQyLDcgKzI0MSw3IEBAIFRFU1QoUnRjcFRy
YW5zY2VpdmVySW1wbFRlc3QsIFNlbmRDb21wb3VuZFBhY2tldERlbGF5c1BlcmlvZGljU2VuZFBh
Y2tldHMpIHsKICAgLy8gV2FpdCBmb3IgZmlyc3QgcGFja2V0LgogICBFWFBFQ1RfVFJVRSh0cmFu
c3BvcnQuV2FpdFBhY2tldCgpKTsKICAgLy8gU2VuZCBub24gcGVyaW9kaWMgb25lIGFmdGVyIGhh
bGYgcGVyaW9kLgotICBydGM6OkV2ZW50IG5vbl9wZXJpb2RpYyhmYWxzZSwgZmFsc2UpOworICBy
dGM6OkV2ZW50IG5vbl9wZXJpb2RpYzsKICAgaW50NjRfdCB0aW1lX29mX25vbl9wZXJpb2RpY19w
YWNrZXRfbXMgPSAwOwogICBxdWV1ZS5Qb3N0RGVsYXllZFRhc2soCiAgICAgICBbJl0gewpAQCAt
MjY1LDcgKzI2NCw3IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVySW1wbFRlc3QsIFNlbmRDb21wb3Vu
ZFBhY2tldERlbGF5c1BlcmlvZGljU2VuZFBhY2tldHMpIHsKICAgICAgICAgICAgIGNvbmZpZy5y
ZXBvcnRfcGVyaW9kX21zIC0gMSk7CiAKICAgLy8gQ2xlYW51cC4KLSAgcnRjOjpFdmVudCBkb25l
KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgcXVldWUuUG9zdFRhc2soWyZd
IHsKICAgICBydGNwX3RyYW5zY2VpdmVyLnJlc2V0KCk7CiAgICAgZG9uZS5TZXQoKTsKQEAgLTMy
OSw3ICszMjgsNyBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlckltcGxUZXN0LCBTZW5kc1BlcmlvZGlj
UnRjcFdoZW5OZXR3b3JrU3RhdGVJc1VwKSB7CiAgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydC5XYWl0
UGFja2V0KCkpOwogCiAgIC8vIENsZWFudXAuCi0gIHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFs
c2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIHF1ZXVlLlBvc3RUYXNrKFsmXSB7CiAgICAgcnRj
cF90cmFuc2NlaXZlci5yZXNldCgpOwogICAgIGRvbmUuU2V0KCk7CkBAIC02NzEsNyArNjcwLDYg
QEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJJbXBsVGVzdCwKIAogICBSdGNwVHJhbnNjZWl2ZXJDb25m
aWcgY29uZmlnOwogICBjb25maWcuc2NoZWR1bGVfcGVyaW9kaWNfY29tcG91bmRfcGFja2V0cyA9
IGZhbHNlOwotICBjb25maWcuYXZvaWRfemVyb19sYXN0X3NyX2luX2xhc3RfcmVwb3J0X2Jsb2Nr
ID0gZmFsc2U7CiAgIFJ0Y3BQYWNrZXRQYXJzZXIgcnRjcF9wYXJzZXI7CiAgIFJ0Y3BQYXJzZXJU
cmFuc3BvcnQgdHJhbnNwb3J0KCZydGNwX3BhcnNlcik7CiAgIGNvbmZpZy5vdXRnb2luZ190cmFu
c3BvcnQgPSAmdHJhbnNwb3J0OwpAQCAtNzAzLDUyICs3MDEsNiBAQCBURVNUKFJ0Y3BUcmFuc2Nl
aXZlckltcGxUZXN0LAogICBFWFBFQ1RfRVEocmVwb3J0X2Jsb2Nrc1sxXS5sYXN0X3NyKCksIDB1
KTsKIH0KIAotVEVTVChSdGNwVHJhbnNjZWl2ZXJJbXBsVGVzdCwgQXZvaWRMYXN0UmVwb3J0Qmxv
Y2tUb0hhdmVaZXJvTGFzdFNyRmllbGQpIHsKLSAgY29uc3QgdWludDMyX3Qga1JlbW90ZVNzcmMx
ID0gNTQzMjE7Ci0gIGNvbnN0IHVpbnQzMl90IGtSZW1vdGVTc3JjMiA9IDU0MzIzOwotICBNb2Nr
UmVjZWl2ZVN0YXRpc3RpY3NQcm92aWRlciByZWNlaXZlX3N0YXRpc3RpY3M7Ci0gIHN0ZDo6dmVj
dG9yPFJlcG9ydEJsb2NrPiBzdGF0aXN0aWNzX3JlcG9ydF9ibG9ja3MoMik7Ci0gIHN0YXRpc3Rp
Y3NfcmVwb3J0X2Jsb2Nrc1swXS5TZXRNZWRpYVNzcmMoa1JlbW90ZVNzcmMxKTsKLSAgc3RhdGlz
dGljc19yZXBvcnRfYmxvY2tzWzFdLlNldE1lZGlhU3NyYyhrUmVtb3RlU3NyYzIpOwotICBPTl9D
QUxMKHJlY2VpdmVfc3RhdGlzdGljcywgUnRjcFJlcG9ydEJsb2NrcyhfKSkKLSAgICAgIC5XaWxs
QnlEZWZhdWx0KFJldHVybihzdGF0aXN0aWNzX3JlcG9ydF9ibG9ja3MpKTsKLQotICBSdGNwVHJh
bnNjZWl2ZXJDb25maWcgY29uZmlnOwotICBjb25maWcuc2NoZWR1bGVfcGVyaW9kaWNfY29tcG91
bmRfcGFja2V0cyA9IGZhbHNlOwotICBjb25maWcuYXZvaWRfemVyb19sYXN0X3NyX2luX2xhc3Rf
cmVwb3J0X2Jsb2NrID0gdHJ1ZTsKLSAgUnRjcFBhY2tldFBhcnNlciBydGNwX3BhcnNlcjsKLSAg
UnRjcFBhcnNlclRyYW5zcG9ydCB0cmFuc3BvcnQoJnJ0Y3BfcGFyc2VyKTsKLSAgY29uZmlnLm91
dGdvaW5nX3RyYW5zcG9ydCA9ICZ0cmFuc3BvcnQ7Ci0gIGNvbmZpZy5yZWNlaXZlX3N0YXRpc3Rp
Y3MgPSAmcmVjZWl2ZV9zdGF0aXN0aWNzOwotICBSdGNwVHJhbnNjZWl2ZXJJbXBsIHJ0Y3BfdHJh
bnNjZWl2ZXIoY29uZmlnKTsKLQotICBjb25zdCBOdHBUaW1lIGtSZW1vdGVOdHAoMHg5ODc2NTQz
MjExKTsKLSAgLy8gUmVjZWl2ZSBTZW5kZXJSZXBvcnQgZm9yIFJlbW90ZVNzcmMxLCBidXQgbm8g
cmVwb3J0IGZvciBSZW1vdGVTc3JjMi4KLSAgU2VuZGVyUmVwb3J0IHNyOwotICBzci5TZXRTZW5k
ZXJTc3JjKGtSZW1vdGVTc3JjMSk7Ci0gIHNyLlNldE50cChrUmVtb3RlTnRwKTsKLSAgYXV0byBy
YXdfcGFja2V0ID0gc3IuQnVpbGQoKTsKLSAgcnRjcF90cmFuc2NlaXZlci5SZWNlaXZlUGFja2V0
KHJhd19wYWNrZXQsIC8qbm93X3VzPSovMCk7Ci0KLSAgLy8gVHJpZ2dlciBzZW5kaW5nIFJlY2Vp
dmVyUmVwb3J0LgotICBydGNwX3RyYW5zY2VpdmVyLlNlbmRDb21wb3VuZFBhY2tldCgpOwotCi0g
IEVYUEVDVF9HVChydGNwX3BhcnNlci5yZWNlaXZlcl9yZXBvcnQoKS0+bnVtX3BhY2tldHMoKSwg
MCk7Ci0gIGNvbnN0IGF1dG8mIHJlcG9ydF9ibG9ja3MgPSBydGNwX3BhcnNlci5yZWNlaXZlcl9y
ZXBvcnQoKS0+cmVwb3J0X2Jsb2NrcygpOwotICBBU1NFUlRfRVEocmVwb3J0X2Jsb2Nrcy5zaXpl
KCksIDJ1KTsKLSAgLy8gUnRjcFRyYW5zY2VpdmVySW1wbCBkb2Vzbid0IGd1YXJhbnRlZSBvcmRl
ciBvZiB0aGUgcmVwb3J0IGJsb2NrcwotICAvLyBtYXRjaCByZXN1bHQgb2YgUmVjZWl2ZVN0YXRp
c3RpY3NQcm92aWRlcjo6UnRjcFJlcG9ydEJsb2NrcyBjYWxsYmFjaywKLSAgLy8gYnV0IGZvciBz
aW1wbGljaXR5IG9mIHRoZSB0ZXN0IGFzdW1lIGl0IGlzIHRoZSBzYW1lLgotICBBU1NFUlRfRVEo
cmVwb3J0X2Jsb2Nrc1swXS5zb3VyY2Vfc3NyYygpLCBrUmVtb3RlU3NyYzEpOwotICBFWFBFQ1Rf
TkUocmVwb3J0X2Jsb2Nrc1swXS5sYXN0X3NyKCksIDB1KTsKLQotICBBU1NFUlRfRVEocmVwb3J0
X2Jsb2Nrc1sxXS5zb3VyY2Vfc3NyYygpLCBrUmVtb3RlU3NyYzIpOwotICAvLyBObyBTZW5kZXIg
UmVwb3J0IGZvciBrUmVtb3RlU3NyYzIsIHVzZSBzYW1lIExhc3RTUiBhcyBmb3Iga1JlbW90ZVNz
cmMxCi0gIEVYUEVDVF9FUShyZXBvcnRfYmxvY2tzWzFdLmxhc3Rfc3IoKSwgcmVwb3J0X2Jsb2Nr
c1swXS5sYXN0X3NyKCkpOwotICBFWFBFQ1RfRVEocmVwb3J0X2Jsb2Nrc1sxXS5kZWxheV9zaW5j
ZV9sYXN0X3NyKCksCi0gICAgICAgICAgICByZXBvcnRfYmxvY2tzWzBdLmRlbGF5X3NpbmNlX2xh
c3Rfc3IoKSk7Ci19Ci0KIFRFU1QoUnRjcFRyYW5zY2VpdmVySW1wbFRlc3QsCiAgICAgIFdoZW5T
ZW5kc1JlY2VpdmVyUmVwb3J0Q2FsY3VsYXRlc0RlbGF5U2luY2VMYXN0U2VuZGVyUmVwb3J0KSB7
CiAgIGNvbnN0IHVpbnQzMl90IGtSZW1vdGVTc3JjMSA9IDQzMjE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3RyYW5zY2VpdmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2Nl
aXZlcl91bml0dGVzdC5jYwppbmRleCAyZWE1YmM5YjUzNzdkMjEyYzg3ZTMxOTBiYTUwNzM0Mjk1
MzZkNzBiLi5kNzE5MThkYjAzYjRmN2E1NmMzMzhjNzZiNWQ0OGFjMGUxMmFhYmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0Y3BfdHJhbnNjZWl2ZXJfdW5pdHRlc3QuY2MKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgTW9j
a01lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIgOiBwdWJsaWMgd2VicnRjOjpNZWRpYVJlY2VpdmVy
UnRjcE9ic2VydmVyIHsKIGNvbnN0ZXhwciBpbnQga1RpbWVvdXRNcyA9IDEwMDA7CiAKIHZvaWQg
V2FpdFBvc3RlZFRhc2tzKHJ0Yzo6VGFza1F1ZXVlKiBxdWV1ZSkgewotICBydGM6OkV2ZW50IGRv
bmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICBxdWV1ZS0+UG9zdFRhc2so
WyZkb25lXSB7IGRvbmUuU2V0KCk7IH0pOwogICBBU1NFUlRfVFJVRShkb25lLldhaXQoa1RpbWVv
dXRNcykpOwogfQpAQCAtMTA4LDggKzEwOCw4IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVyVGVzdCwg
Q2FuQmVEZXN0cm95ZWRXaXRob3V0QmxvY2tpbmcpIHsKICAgYXV0byogcnRjcF90cmFuc2NlaXZl
ciA9IG5ldyBSdGNwVHJhbnNjZWl2ZXIoY29uZmlnKTsKICAgcnRjcF90cmFuc2NlaXZlci0+U2Vu
ZENvbXBvdW5kUGFja2V0KCk7CiAKLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7Ci0g
IHJ0Yzo6RXZlbnQgaGVhdnlfdGFzayhmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7
CisgIHJ0Yzo6RXZlbnQgaGVhdnlfdGFzazsKICAgcXVldWUuUG9zdFRhc2soWyZdIHsKICAgICBF
WFBFQ1RfVFJVRShoZWF2eV90YXNrLldhaXQoa1RpbWVvdXRNcykpOwogICAgIGRvbmUuU2V0KCk7
CkBAIC0xMjgsNyArMTI4LDcgQEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJUZXN0LCBNYXlTZW5kUGFj
a2V0c0FmdGVyRGVzdHJ1Y3RvcikgeyAgLy8gaS5lLiBCZSBjYXJlZnVsIQogICBjb25maWcudGFz
a19xdWV1ZSA9ICZxdWV1ZTsKICAgYXV0byogcnRjcF90cmFuc2NlaXZlciA9IG5ldyBSdGNwVHJh
bnNjZWl2ZXIoY29uZmlnKTsKIAotICBydGM6OkV2ZW50IGhlYXZ5X3Rhc2soZmFsc2UsIGZhbHNl
KTsKKyAgcnRjOjpFdmVudCBoZWF2eV90YXNrOwogICBxdWV1ZS5Qb3N0VGFzayhbJl0geyBFWFBF
Q1RfVFJVRShoZWF2eV90YXNrLldhaXQoa1RpbWVvdXRNcykpOyB9KTsKICAgcnRjcF90cmFuc2Nl
aXZlci0+U2VuZENvbXBvdW5kUGFja2V0KCk7CiAgIGRlbGV0ZSBydGNwX3RyYW5zY2VpdmVyOwpA
QCAtMTU4LDcgKzE1OCw3IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVyVGVzdCwgRG9lc250UG9zdFRv
UnRjcE9ic2VydmVyQWZ0ZXJDYWxsVG9SZW1vdmUpIHsKICAgY29uZmlnLm91dGdvaW5nX3RyYW5z
cG9ydCA9ICZudWxsX3RyYW5zcG9ydDsKICAgY29uZmlnLnRhc2tfcXVldWUgPSAmcXVldWU7CiAg
IFJ0Y3BUcmFuc2NlaXZlciBydGNwX3RyYW5zY2VpdmVyKGNvbmZpZyk7Ci0gIHJ0Yzo6RXZlbnQg
b2JzZXJ2ZXJfZGVsZXRlZChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IG9ic2VydmVyX2Rl
bGV0ZWQ7CiAKICAgYXV0byBvYnNlcnZlciA9IGFic2w6Om1ha2VfdW5pcXVlPE1vY2tNZWRpYVJl
Y2VpdmVyUnRjcE9ic2VydmVyPigpOwogICBFWFBFQ1RfQ0FMTCgqb2JzZXJ2ZXIsIE9uU2VuZGVy
UmVwb3J0KGtSZW1vdGVTc3JjLCBfLCAxKSk7CkBAIC0xNjYsMTIgKzE2NiwxMSBAQCBURVNUKFJ0
Y3BUcmFuc2NlaXZlclRlc3QsIERvZXNudFBvc3RUb1J0Y3BPYnNlcnZlckFmdGVyQ2FsbFRvUmVt
b3ZlKSB7CiAKICAgcnRjcF90cmFuc2NlaXZlci5BZGRNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVy
KGtSZW1vdGVTc3JjLCBvYnNlcnZlci5nZXQoKSk7CiAgIHJ0Y3BfdHJhbnNjZWl2ZXIuUmVjZWl2
ZVBhY2tldChDcmVhdGVTZW5kZXJSZXBvcnQoa1JlbW90ZVNzcmMsIDEpKTsKLSAgcnRjcF90cmFu
c2NlaXZlci5SZW1vdmVNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKAotICAgICAga1JlbW90ZVNz
cmMsIG9ic2VydmVyLmdldCgpLAotICAgICAgLypvbl9yZW1vdmVkPSovcnRjOjpOZXdDbG9zdXJl
KFsmXSB7Ci0gICAgICAgIG9ic2VydmVyLnJlc2V0KCk7Ci0gICAgICAgIG9ic2VydmVyX2RlbGV0
ZWQuU2V0KCk7Ci0gICAgICB9KSk7CisgIHJ0Y3BfdHJhbnNjZWl2ZXIuUmVtb3ZlTWVkaWFSZWNl
aXZlclJ0Y3BPYnNlcnZlcihrUmVtb3RlU3NyYywgb2JzZXJ2ZXIuZ2V0KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm9uX3JlbW92ZWQ9Ki9b
Jl0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvYnNlcnZlci5yZXNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvYnNlcnZlcl9kZWxldGVkLlNldCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgIHJ0Y3BfdHJhbnNjZWl2
ZXIuUmVjZWl2ZVBhY2tldChDcmVhdGVTZW5kZXJSZXBvcnQoa1JlbW90ZVNzcmMsIDIpKTsKIAog
ICBFWFBFQ1RfVFJVRShvYnNlcnZlcl9kZWxldGVkLldhaXQoa1RpbWVvdXRNcykpOwpAQCAtMTg5
LDE1ICsxODgsMTQgQEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJUZXN0LCBSZW1vdmVNZWRpYVJlY2Vp
dmVyUnRjcE9ic2VydmVySXNOb25CbG9ja2luZykgewogICBhdXRvIG9ic2VydmVyID0gYWJzbDo6
bWFrZV91bmlxdWU8TW9ja01lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXI+KCk7CiAgIHJ0Y3BfdHJh
bnNjZWl2ZXIuQWRkTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlcihrUmVtb3RlU3NyYywgb2JzZXJ2
ZXIuZ2V0KCkpOwogCi0gIHJ0Yzo6RXZlbnQgcXVldWVfYmxvY2tlcihmYWxzZSwgZmFsc2UpOwot
ICBydGM6OkV2ZW50IG9ic2VydmVyX2RlbGV0ZWQoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVu
dCBxdWV1ZV9ibG9ja2VyOworICBydGM6OkV2ZW50IG9ic2VydmVyX2RlbGV0ZWQ7CiAgIHF1ZXVl
LlBvc3RUYXNrKFsmXSB7IEVYUEVDVF9UUlVFKHF1ZXVlX2Jsb2NrZXIuV2FpdChrVGltZW91dE1z
KSk7IH0pOwotICBydGNwX3RyYW5zY2VpdmVyLlJlbW92ZU1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2
ZXIoCi0gICAgICBrUmVtb3RlU3NyYywgb2JzZXJ2ZXIuZ2V0KCksCi0gICAgICAvKm9uX3JlbW92
ZWQ9Ki9ydGM6Ok5ld0Nsb3N1cmUoWyZdIHsKLSAgICAgICAgb2JzZXJ2ZXIucmVzZXQoKTsKLSAg
ICAgICAgb2JzZXJ2ZXJfZGVsZXRlZC5TZXQoKTsKLSAgICAgIH0pKTsKKyAgcnRjcF90cmFuc2Nl
aXZlci5SZW1vdmVNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKGtSZW1vdGVTc3JjLCBvYnNlcnZl
ci5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qb25fcmVtb3ZlZD0qL1smXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLnJlc2V0KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyX2RlbGV0ZWQuU2V0
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KTsKIAogICBFWFBFQ1RfVEhBVChvYnNlcnZlciwgTm90KElzTnVsbCgpKSk7CiAgIHF1ZXVlX2Js
b2NrZXIuU2V0KCk7CkBAIC0yNDIsMTIgKzI0MCwxMiBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlclRl
c3QsIERvZXNudFNlbmRQYWNrZXRzQWZ0ZXJTdG9wQ2FsbGJhY2spIHsKICAgY29uZmlnLnNjaGVk
dWxlX3BlcmlvZGljX2NvbXBvdW5kX3BhY2tldHMgPSB0cnVlOwogCiAgIGF1dG8gcnRjcF90cmFu
c2NlaXZlciA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y3BUcmFuc2NlaXZlcj4oY29uZmlnKTsKLSAg
cnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgcnRj
cF90cmFuc2NlaXZlci0+U2VuZENvbXBvdW5kUGFja2V0KCk7Ci0gIHJ0Y3BfdHJhbnNjZWl2ZXIt
PlN0b3AocnRjOjpOZXdDbG9zdXJlKFsmXSB7CisgIHJ0Y3BfdHJhbnNjZWl2ZXItPlN0b3AoWyZd
IHsKICAgICBFWFBFQ1RfQ0FMTChvdXRnb2luZ190cmFuc3BvcnQsIFNlbmRSdGNwKS5UaW1lcygw
KTsKICAgICBkb25lLlNldCgpOwotICB9KSk7CisgIH0pOwogICBydGNwX3RyYW5zY2VpdmVyID0g
bnVsbHB0cjsKICAgRVhQRUNUX1RSVUUoZG9uZS5XYWl0KGtUaW1lb3V0TXMpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmNjCmlu
ZGV4IDEzZWMwYWZlOWY3YmQ2NzVhYzk4NDFiZTQxY2I5OThiOWVmMTUxYjAuLjAwMTBkOTA3NTBm
MjllZmQwMDFhOGE1ZDJiODExMzZiZWZlOWMzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9m
b3JtYXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5jYwpAQCAtMTAsMTMgKzEwLDE1IEBA
CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmgiCiAKLSNp
bmNsdWRlIDx1dGlsaXR5PgotCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5j
bHVkZSAiYWJzbC90eXBlcy92YXJpYW50LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX2Zvcm1hdF9oMjY0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX2Zvcm1hdF92cDguaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfZm9ybWF0X3ZwOS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy9oMjY0L2luY2x1ZGUvaDI2NF9nbG9iYWxzLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF9nbG9iYWxzLmgiCisjaW5jbHVkZSAibW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9pbmNsdWRlL3ZwOV9nbG9iYWxzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNjMsNiAr
NjUsMTEgQEAgc3RkOjp2ZWN0b3I8aW50PiBSdHBQYWNrZXRpemVyOjpTcGxpdEFib3V0RXF1YWxs
eSgKICAgUlRDX0RDSEVDS19HRShsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiwgMCk7
CiAKICAgc3RkOjp2ZWN0b3I8aW50PiByZXN1bHQ7CisgIGlmIChsaW1pdHMubWF4X3BheWxvYWRf
bGVuID49CisgICAgICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuICsgcGF5bG9h
ZF9sZW4pIHsKKyAgICByZXN1bHQucHVzaF9iYWNrKHBheWxvYWRfbGVuKTsKKyAgICByZXR1cm4g
cmVzdWx0OworICB9CiAgIGlmIChsaW1pdHMubWF4X3BheWxvYWRfbGVuIC0gbGltaXRzLmZpcnN0
X3BhY2tldF9yZWR1Y3Rpb25fbGVuIDwgMSB8fAogICAgICAgbGltaXRzLm1heF9wYXlsb2FkX2xl
biAtIGxpbWl0cy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuIDwgMSkgewogICAgIC8vIENhcGFj
aXR5IGlzIG5vdCBlbm91Z2ggdG8gcHV0IGEgc2luZ2xlIGJ5dGUgaW50byBvbmUgb2YgdGhlIHBh
Y2tldHMuCkBAIC03Nyw2ICs4NCwxMCBAQCBzdGQ6OnZlY3RvcjxpbnQ+IFJ0cFBhY2tldGl6ZXI6
OlNwbGl0QWJvdXRFcXVhbGx5KAogICAvLyBJbnRlZ2VyIGRpdmlzaW9ucyB3aXRoIHJvdW5kaW5n
IHVwLgogICBpbnQgbnVtX3BhY2tldHNfbGVmdCA9CiAgICAgICAodG90YWxfYnl0ZXMgKyBsaW1p
dHMubWF4X3BheWxvYWRfbGVuIC0gMSkgLyBsaW1pdHMubWF4X3BheWxvYWRfbGVuOworICBpZiAo
bnVtX3BhY2tldHNfbGVmdCA9PSAxKSB7CisgICAgLy8gU2luZ2xlIHBhY2tldCBpcyBhIHNwZWNp
YWwgY2FzZSBoYW5kbGVkIGFib3ZlLgorICAgIG51bV9wYWNrZXRzX2xlZnQgPSAyOworICB9CiAK
ICAgaWYgKHBheWxvYWRfbGVuIDwgbnVtX3BhY2tldHNfbGVmdCkgewogICAgIC8vIEVkZ2UgY2Fz
ZSB3aGVyZSBsaW1pdHMgZm9yY2UgdG8gaGF2ZSBtb3JlIHBhY2tldHMgdGhhbiB0aGVyZSBhcmUg
cGF5bG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2Zvcm1hdC5oCmluZGV4IDlmYWQ0Y2Y4Zjk3NjFjYWNiZjNjODdjYTQwNTFkNWI0YmU2MjFlNGQu
LjcxYzdkYzVlMGVjZDhkNGZhODBhMDc5YjE5MWE3OGY0MjNjZmI0MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF9mb3JtYXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmgKQEAgLTExLDE3
ICsxMSwxNyBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfRk9STUFUX0hf
CiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9GT1JNQVRfSF8KIAorI2luY2x1
ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzdHJpbmc+CiAjaW5j
bHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVs
ZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3Zp
ZGVvX2hlYWRlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKKwogY2xhc3MgUnRwUGFja2V0VG9T
ZW5kOwogCiBjbGFzcyBSdHBQYWNrZXRpemVyIHsKQEAgLTMwLDYgKzMwLDggQEAgY2xhc3MgUnRw
UGFja2V0aXplciB7CiAgICAgaW50IG1heF9wYXlsb2FkX2xlbiA9IDEyMDA7CiAgICAgaW50IGZp
cnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMDsKICAgICBpbnQgbGFzdF9wYWNrZXRfcmVkdWN0
aW9uX2xlbiA9IDA7CisgICAgLy8gUmVkdWN0aW9uIGxlbiBmb3IgcGFja2V0IHRoYXQgaXMgZmly
c3QgJiBsYXN0IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgaW50IHNpbmdsZV9wYWNrZXRfcmVkdWN0
aW9uX2xlbiA9IDA7CiAgIH07CiAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0aXpl
cj4gQ3JlYXRlKAogICAgICAgVmlkZW9Db2RlY1R5cGUgdHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9mb3JtYXRfaDI2NC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfaDI2NC5jYwppbmRl
eCA5NzkzZWJhZTI1OTEzMWRkZmVjODFlMzE3NmUyNzg4ZmEyNDhlMDdkLi43YTdiY2RmYmI4OWM4
NzQ4OTFmYTJjZTIyMDIyZWM1YzllNzFhZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9y
bWF0X2gyNjQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0LmNjCkBAIC0xMSwxMCAr
MTEsMTYgQEAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gy
NjQuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVk
ZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy92YXJpYW50LmgiCisjaW5jbHVkZSAi
Y29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJjb21t
b25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0
L3Bwc19wYXJzZXIuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9zcHNfcGFyc2VyLmgi
CkBAIC0xODYsOSArMTkyLDExIEBAIGJvb2wgUnRwUGFja2V0aXplckgyNjQ6OkdlbmVyYXRlUGFj
a2V0cygKICAgICAgIGNhc2UgSDI2NFBhY2tldGl6YXRpb25Nb2RlOjpOb25JbnRlcmxlYXZlZDoK
ICAgICAgICAgaW50IGZyYWdtZW50X2xlbiA9IGlucHV0X2ZyYWdtZW50c19baV0ubGVuZ3RoOwog
ICAgICAgICBpbnQgc2luZ2xlX3BhY2tldF9jYXBhY2l0eSA9IGxpbWl0c18ubWF4X3BheWxvYWRf
bGVuOwotICAgICAgICBpZiAoaSA9PSAwKQorICAgICAgICBpZiAoaW5wdXRfZnJhZ21lbnRzXy5z
aXplKCkgPT0gMSkKKyAgICAgICAgICBzaW5nbGVfcGFja2V0X2NhcGFjaXR5IC09IGxpbWl0c18u
c2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuOworICAgICAgICBlbHNlIGlmIChpID09IDApCiAg
ICAgICAgICAgc2luZ2xlX3BhY2tldF9jYXBhY2l0eSAtPSBsaW1pdHNfLmZpcnN0X3BhY2tldF9y
ZWR1Y3Rpb25fbGVuOwotICAgICAgICBpZiAoaSArIDEgPT0gaW5wdXRfZnJhZ21lbnRzXy5zaXpl
KCkpCisgICAgICAgIGVsc2UgaWYgKGkgKyAxID09IGlucHV0X2ZyYWdtZW50c18uc2l6ZSgpKQog
ICAgICAgICAgIHNpbmdsZV9wYWNrZXRfY2FwYWNpdHkgLT0gbGltaXRzXy5sYXN0X3BhY2tldF9y
ZWR1Y3Rpb25fbGVuOwogCiAgICAgICAgIGlmIChmcmFnbWVudF9sZW4gPiBzaW5nbGVfcGFja2V0
X2NhcGFjaXR5KSB7CkBAIC0yMTEsNyArMjE5LDEwIEBAIGJvb2wgUnRwUGFja2V0aXplckgyNjQ6
OlBhY2tldGl6ZUZ1QShzaXplX3QgZnJhZ21lbnRfaW5kZXgpIHsKICAgUGF5bG9hZFNpemVMaW1p
dHMgbGltaXRzID0gbGltaXRzXzsKICAgLy8gTGVhdmUgcm9vbSBmb3IgdGhlIEZVLUEgaGVhZGVy
LgogICBsaW1pdHMubWF4X3BheWxvYWRfbGVuIC09IGtGdUFIZWFkZXJTaXplOwotICAvLyBJZ25v
cmUgZmlyc3QvbGFzdCBwYWNrZXQgcmVkdWN0aW9ucyB1bmxlc3MgaXQgaXMgZmlyc3QvbGFzdCBm
cmFnbWVudC4KKyAgLy8gSWdub3JlIHNpbmdsZS9maXJzdC9sYXN0IHBhY2tldCByZWR1Y3Rpb25z
IHVubGVzcyBpdCBpcyBzaW5nbGUvZmlyc3QvbGFzdAorICAvLyBmcmFnbWVudC4KKyAgaWYgKGlu
cHV0X2ZyYWdtZW50c18uc2l6ZSgpICE9IDEpCisgICAgbGltaXRzLnNpbmdsZV9wYWNrZXRfcmVk
dWN0aW9uX2xlbiA9IDA7CiAgIGlmIChmcmFnbWVudF9pbmRleCAhPSAwKQogICAgIGxpbWl0cy5m
aXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDA7CiAgIGlmIChmcmFnbWVudF9pbmRleCAhPSBp
bnB1dF9mcmFnbWVudHNfLnNpemUoKSAtIDEpCkBAIC0yNDMsMTcgKzI1NCwzMSBAQCBib29sIFJ0
cFBhY2tldGl6ZXJIMjY0OjpQYWNrZXRpemVGdUEoc2l6ZV90IGZyYWdtZW50X2luZGV4KSB7CiBz
aXplX3QgUnRwUGFja2V0aXplckgyNjQ6OlBhY2tldGl6ZVN0YXBBKHNpemVfdCBmcmFnbWVudF9p
bmRleCkgewogICAvLyBBZ2dyZWdhdGUgZnJhZ21lbnRzIGludG8gb25lIHBhY2tldCAoU1RBUC1B
KS4KICAgc2l6ZV90IHBheWxvYWRfc2l6ZV9sZWZ0ID0gbGltaXRzXy5tYXhfcGF5bG9hZF9sZW47
Ci0gIGlmIChmcmFnbWVudF9pbmRleCA9PSAwKQorICBpZiAoaW5wdXRfZnJhZ21lbnRzXy5zaXpl
KCkgPT0gMSkKKyAgICBwYXlsb2FkX3NpemVfbGVmdCAtPSBsaW1pdHNfLnNpbmdsZV9wYWNrZXRf
cmVkdWN0aW9uX2xlbjsKKyAgZWxzZSBpZiAoZnJhZ21lbnRfaW5kZXggPT0gMCkKICAgICBwYXls
b2FkX3NpemVfbGVmdCAtPSBsaW1pdHNfLmZpcnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuOwogICBp
bnQgYWdncmVnYXRlZF9mcmFnbWVudHMgPSAwOwogICBzaXplX3QgZnJhZ21lbnRfaGVhZGVyc19s
ZW5ndGggPSAwOwogICBjb25zdCBGcmFnbWVudCogZnJhZ21lbnQgPSAmaW5wdXRfZnJhZ21lbnRz
X1tmcmFnbWVudF9pbmRleF07CiAgIFJUQ19DSEVDS19HRShwYXlsb2FkX3NpemVfbGVmdCwgZnJh
Z21lbnQtPmxlbmd0aCk7CiAgICsrbnVtX3BhY2tldHNfbGVmdF87Ci0gIHdoaWxlIChwYXlsb2Fk
X3NpemVfbGVmdCA+PSBmcmFnbWVudC0+bGVuZ3RoICsgZnJhZ21lbnRfaGVhZGVyc19sZW5ndGgg
JiYKLSAgICAgICAgIChmcmFnbWVudF9pbmRleCArIDEgPCBpbnB1dF9mcmFnbWVudHNfLnNpemUo
KSB8fAotICAgICAgICAgIHBheWxvYWRfc2l6ZV9sZWZ0ID49IGZyYWdtZW50LT5sZW5ndGggKyBm
cmFnbWVudF9oZWFkZXJzX2xlbmd0aCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbWl0c18ubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbikpIHsKKworICBhdXRvIHBheWxv
YWRfc2l6ZV9uZWVkZWQgPSBbJl0geworICAgIHNpemVfdCBmcmFnbWVudF9zaXplID0gZnJhZ21l
bnQtPmxlbmd0aCArIGZyYWdtZW50X2hlYWRlcnNfbGVuZ3RoOworICAgIGlmIChpbnB1dF9mcmFn
bWVudHNfLnNpemUoKSA9PSAxKSB7CisgICAgICAvLyBTaW5nbGUgZnJhZ21lbnQsIHNpbmdsZSBw
YWNrZXQsIHBheWxvYWRfc2l6ZV9sZWZ0IGFscmVhZHkgYWRqdXN0ZWQKKyAgICAgIC8vIHdpdGgg
bGltaXRzXy5zaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW4uCisgICAgICByZXR1cm4gZnJhZ21l
bnRfc2l6ZTsKKyAgICB9CisgICAgaWYgKGZyYWdtZW50X2luZGV4ID09IGlucHV0X2ZyYWdtZW50
c18uc2l6ZSgpIC0gMSkgeworICAgICAgLy8gTGFzdCBmcmFnbWVudCwgc28gU3RyYXBBIG1pZ2h0
IGJlIHRoZSBsYXN0IHBhY2tldC4KKyAgICAgIHJldHVybiBmcmFnbWVudF9zaXplICsgbGltaXRz
Xy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuOworICAgIH0KKyAgICByZXR1cm4gZnJhZ21lbnRf
c2l6ZTsKKyAgfTsKKworICB3aGlsZSAocGF5bG9hZF9zaXplX2xlZnQgPj0gcGF5bG9hZF9zaXpl
X25lZWRlZCgpKSB7CiAgICAgUlRDX0NIRUNLX0dUKGZyYWdtZW50LT5sZW5ndGgsIDApOwogICAg
IHBhY2tldHNfLnB1c2goUGFja2V0VW5pdCgqZnJhZ21lbnQsIGFnZ3JlZ2F0ZWRfZnJhZ21lbnRz
ID09IDAsIGZhbHNlLCB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVu
dC0+YnVmZmVyWzBdKSk7CkBAIC0yODIsOSArMzA3LDExIEBAIHNpemVfdCBSdHBQYWNrZXRpemVy
SDI2NDo6UGFja2V0aXplU3RhcEEoc2l6ZV90IGZyYWdtZW50X2luZGV4KSB7CiBib29sIFJ0cFBh
Y2tldGl6ZXJIMjY0OjpQYWNrZXRpemVTaW5nbGVOYWx1KHNpemVfdCBmcmFnbWVudF9pbmRleCkg
ewogICAvLyBBZGQgYSBzaW5nbGUgTkFMVSB0byB0aGUgcXVldWUsIG5vIGFnZ3JlZ2F0aW9uLgog
ICBzaXplX3QgcGF5bG9hZF9zaXplX2xlZnQgPSBsaW1pdHNfLm1heF9wYXlsb2FkX2xlbjsKLSAg
aWYgKGZyYWdtZW50X2luZGV4ID09IDApCisgIGlmIChpbnB1dF9mcmFnbWVudHNfLnNpemUoKSA9
PSAxKQorICAgIHBheWxvYWRfc2l6ZV9sZWZ0IC09IGxpbWl0c18uc2luZ2xlX3BhY2tldF9yZWR1
Y3Rpb25fbGVuOworICBlbHNlIGlmIChmcmFnbWVudF9pbmRleCA9PSAwKQogICAgIHBheWxvYWRf
c2l6ZV9sZWZ0IC09IGxpbWl0c18uZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW47Ci0gIGlmIChm
cmFnbWVudF9pbmRleCArIDEgPT0gaW5wdXRfZnJhZ21lbnRzXy5zaXplKCkpCisgIGVsc2UgaWYg
KGZyYWdtZW50X2luZGV4ICsgMSA9PSBpbnB1dF9mcmFnbWVudHNfLnNpemUoKSkKICAgICBwYXls
b2FkX3NpemVfbGVmdCAtPSBsaW1pdHNfLmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW47CiAgIGNv
bnN0IEZyYWdtZW50KiBmcmFnbWVudCA9ICZpbnB1dF9mcmFnbWVudHNfW2ZyYWdtZW50X2luZGV4
XTsKICAgaWYgKHBheWxvYWRfc2l6ZV9sZWZ0IDwgZnJhZ21lbnQtPmxlbmd0aCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gy
NjQuaAppbmRleCA3M2U0MDg3OGExOGJkOWVkZDFkNTAxNmYwYmY2YjkzMDNiMGNlYWExLi5mYmQ0
ZmQ5NTA5MDc1ZDhmYjg1MmUzM2Q0NTI2YmIzMmUzMzhkMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfZm9ybWF0X2gyNjQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gyNjQuaApAQCAt
MTEsMTIgKzExLDE3IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9GT1JN
QVRfSDI2NF9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfRk9STUFUX0gy
NjRfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPGRlcXVlPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxxdWV1ZT4KLSNpbmNsdWRl
IDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy9oMjY0L2luY2x1ZGUvaDI2NF9nbG9iYWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
YnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gyNjRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfZm9ybWF0X2gyNjRfdW5pdHRlc3QuY2MKaW5kZXggZWRmOTA3YWFjODU5Y2Y0N2VmMTBmMDZh
OWJlMGFmODZjYzlkOWZmOC4uYWVhYjgxM2I1M2UyNjUxYzRkZWIwMjA5NDQ3NDY1NGFjZmI1NGJh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0X3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9mb3JtYXRfaDI2NF91bml0dGVzdC5jYwpAQCAtMzkwLDcgKzM5MCw3IEBA
IHN0ZDo6dmVjdG9yPGludD4gVGVzdEZ1YShzaXplX3QgZnJhbWVfcGF5bG9hZF9zaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vRnJhZ21lbnRhdGlvbihmcmFtZSkpOwogICBz
dGQ6OnZlY3RvcjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tldHMgPSBGZXRjaEFsbFBhY2tldHMoJnBh
Y2tldGl6ZXIpOwogCi0gIFJUQ19DSEVDS19HRShwYWNrZXRzLnNpemUoKSwgMik7ICAvLyBTaW5n
bGUgcGFja2V0IGluZGljYXRlcyBpdCBpcyBub3QgRnVBLgorICBFWFBFQ1RfR0UocGFja2V0cy5z
aXplKCksIDJ1KTsgIC8vIFNpbmdsZSBwYWNrZXQgaW5kaWNhdGVzIGl0IGlzIG5vdCBGdUEuCiAg
IHN0ZDo6dmVjdG9yPHVpbnQxNl90PiBmdWFfaGVhZGVyOwogICBzdGQ6OnZlY3RvcjxpbnQ+IHBh
eWxvYWRfc2l6ZXM7CiAKQEAgLTQyMiw2ICs0MjIsNyBAQCBURVNUKFJ0cFBhY2tldGl6ZXJIMjY0
VGVzdCwgRlVBV2l0aEZpcnN0UGFja2V0UmVkdWN0aW9uKSB7CiAgIFJ0cFBhY2tldGl6ZXI6OlBh
eWxvYWRTaXplTGltaXRzIGxpbWl0czsKICAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiA9IDEyMDA7
CiAgIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDQ7CisgIGxpbWl0cy5zaW5n
bGVfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA0OwogICBFWFBFQ1RfVEhBVChUZXN0RnVhKDExOTgs
IGxpbWl0cyksIEVsZW1lbnRzQXJlKDU5NywgNjAxKSk7CiB9CiAKQEAgLTQyOSwxNCArNDMwLDE0
IEBAIFRFU1QoUnRwUGFja2V0aXplckgyNjRUZXN0LCBGVUFXaXRoTGFzdFBhY2tldFJlZHVjdGlv
bikgewogICBSdHBQYWNrZXRpemVyOjpQYXlsb2FkU2l6ZUxpbWl0cyBsaW1pdHM7CiAgIGxpbWl0
cy5tYXhfcGF5bG9hZF9sZW4gPSAxMjAwOwogICBsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0aW9u
X2xlbiA9IDQ7CisgIGxpbWl0cy5zaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA0OwogICBF
WFBFQ1RfVEhBVChUZXN0RnVhKDExOTgsIGxpbWl0cyksIEVsZW1lbnRzQXJlKDYwMSwgNTk3KSk7
CiB9CiAKLVRFU1QoUnRwUGFja2V0aXplckgyNjRUZXN0LCBGVUFXaXRoRmlyc3RBbmRMYXN0UGFj
a2V0UmVkdWN0aW9uKSB7CitURVNUKFJ0cFBhY2tldGl6ZXJIMjY0VGVzdCwgRlVBV2l0aFNpbmds
ZVBhY2tldFJlZHVjdGlvbikgewogICBSdHBQYWNrZXRpemVyOjpQYXlsb2FkU2l6ZUxpbWl0cyBs
aW1pdHM7CiAgIGxpbWl0cy5tYXhfcGF5bG9hZF9sZW4gPSAxMTk5OwotICBsaW1pdHMuZmlyc3Rf
cGFja2V0X3JlZHVjdGlvbl9sZW4gPSAxMDA7Ci0gIGxpbWl0cy5sYXN0X3BhY2tldF9yZWR1Y3Rp
b25fbGVuID0gMTAwOworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMjAw
OwogICBFWFBFQ1RfVEhBVChUZXN0RnVhKDEwMDAsIGxpbWl0cyksIEVsZW1lbnRzQXJlKDUwMCwg
NTAwKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfZm9ybWF0X3VuaXR0ZXN0LmNjCmluZGV4IGE3OWM0MzRiNjI5ZjMyNWIx
ZWY2NDI0YTI2NWJlMzYzMGM3OTE4M2MuLmFlMWI1YjA1NGFkZmEzZTRlMjE1MGVhYjQxODcxZWI1
MDE5OGYzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF91bml0dGVzdC5jYwpAQCAtMTk5LDIxICsxOTksMzIgQEAg
VEVTVChSdHBQYWNrZXRpemVyU3BsaXRBYm91dEVxdWFsbHksIEdpdmVzTm9uWmVyb1BheWxvYWRM
ZW5ndGhFYWNoUGFja2V0KSB7CiB9CiAKIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVh
bGx5LAotICAgICBPbmVQYWNrZXRXaGVuRXh0cmFTcGFjZUlzRW5vdWdoRm9yU3VtT2ZGaXJzdEFu
ZExhc3RQYWNrZXRSZWR1Y3Rpb25zKSB7CisgICAgIElnbm9yZXNGaXJzdEFuZExhc3RQYWNrZXRS
ZWR1Y3Rpb25XaGVuUGF5bG9hZEZpdHNJbnRvU2luZ2xlUGFja2V0KSB7CiAgIFJ0cFBhY2tldGl6
ZXI6OlBheWxvYWRTaXplTGltaXRzIGxpbWl0czsKICAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiA9
IDMwOwotICBsaW1pdHMuZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA2OwotICBsaW1pdHMu
bGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDQ7CisgIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVk
dWN0aW9uX2xlbiA9IDI5OworICBsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDI5
OworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMTA7CiAKICAgRVhQRUNU
X1RIQVQoUnRwUGFja2V0aXplcjo6U3BsaXRBYm91dEVxdWFsbHkoMjAsIGxpbWl0cyksIEVsZW1l
bnRzQXJlKDIwKSk7CiB9CiAKIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5LAot
ICAgICBUd29QYWNrZXRzV2hlbkV4dHJhU3BhY2VJc1Rvb1NtYWxsRm9yU3VtT2ZGaXJzdEFuZExh
c3RQYWNrZXRSZWR1Y3Rpb25zKSB7CisgICAgIE9uZVBhY2tldFdoZW5FeHRyYVNwYWNlSXNFbm91
Z2hGb3JTaW5nbGVQYWNrZXRSZWR1Y3Rpb24pIHsKKyAgUnRwUGFja2V0aXplcjo6UGF5bG9hZFNp
emVMaW1pdHMgbGltaXRzOworICBsaW1pdHMubWF4X3BheWxvYWRfbGVuID0gMzA7CisgIGxpbWl0
cy5zaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSAxMDsKKworICBFWFBFQ1RfVEhBVChSdHBQ
YWNrZXRpemVyOjpTcGxpdEFib3V0RXF1YWxseSgyMCwgbGltaXRzKSwgRWxlbWVudHNBcmUoMjAp
KTsKK30KKworVEVTVChSdHBQYWNrZXRpemVyU3BsaXRBYm91dEVxdWFsbHksCisgICAgIFR3b1Bh
Y2tldHNXaGVuRXh0cmFTcGFjZUlzVG9vU21hbGxGb3JTaW5nbGVQYWNrZXRSZWR1Y3Rpb24pIHsK
ICAgUnRwUGFja2V0aXplcjo6UGF5bG9hZFNpemVMaW1pdHMgbGltaXRzOwogICBsaW1pdHMubWF4
X3BheWxvYWRfbGVuID0gMjk7Ci0gIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9
IDY7Ci0gIGxpbWl0cy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNDsKKyAgbGltaXRzLmZp
cnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMzsKKyAgbGltaXRzLmxhc3RfcGFja2V0X3JlZHVj
dGlvbl9sZW4gPSAxOworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMTA7
CiAKICAgLy8gRmlyc3QgcGFja2V0IG5lZWRzIHR3byBtb3JlIGV4dHJhIGJ5dGVzIGNvbXBhcmVk
IHRvIGxhc3Qgb25lLAogICAvLyBzbyBzaG91bGQgaGF2ZSB0d28gbGVzcyBwYXlsb2FkIGJ5dGVz
LgpAQCAtMjQ2LDggKzI1Nyw3IEBAIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5
LCBSZWplY3RzWmVyb0xhc3RQYWNrZXRMZW4pIHsKIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJv
dXRFcXVhbGx5LCBDYW50UHV0U2luZ2xlUGF5bG9hZEJ5dGVJblR3b1BhY2tldHMpIHsKICAgUnRw
UGFja2V0aXplcjo6UGF5bG9hZFNpemVMaW1pdHMgbGltaXRzOwogICBsaW1pdHMubWF4X3BheWxv
YWRfbGVuID0gMTA7Ci0gIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDY7Ci0g
IGxpbWl0cy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNDsKKyAgbGltaXRzLnNpbmdsZV9w
YWNrZXRfcmVkdWN0aW9uX2xlbiA9IDEwOwogCiAgIEVYUEVDVF9USEFUKFJ0cFBhY2tldGl6ZXI6
OlNwbGl0QWJvdXRFcXVhbGx5KDEsIGxpbWl0cyksIElzRW1wdHkoKSk7CiB9CkBAIC0yNTUsOCAr
MjY1LDcgQEAgVEVTVChSdHBQYWNrZXRpemVyU3BsaXRBYm91dEVxdWFsbHksIENhbnRQdXRTaW5n
bGVQYXlsb2FkQnl0ZUluVHdvUGFja2V0cykgewogVEVTVChSdHBQYWNrZXRpemVyU3BsaXRBYm91
dEVxdWFsbHksIENhblB1dFR3b1BheWxvYWRCeXRlc0luVHdvUGFja2V0cykgewogICBSdHBQYWNr
ZXRpemVyOjpQYXlsb2FkU2l6ZUxpbWl0cyBsaW1pdHM7CiAgIGxpbWl0cy5tYXhfcGF5bG9hZF9s
ZW4gPSAxMDsKLSAgbGltaXRzLmZpcnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNjsKLSAgbGlt
aXRzLmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA0OworICBsaW1pdHMuc2luZ2xlX3BhY2tl
dF9yZWR1Y3Rpb25fbGVuID0gMTA7CiAKICAgRVhQRUNUX1RIQVQoUnRwUGFja2V0aXplcjo6U3Bs
aXRBYm91dEVxdWFsbHkoMiwgbGltaXRzKSwgRWxlbWVudHNBcmUoMSwgMSkpOwogfQpAQCAtMjY0
LDggKzI3Myw3IEBAIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5LCBDYW5QdXRU
d29QYXlsb2FkQnl0ZXNJblR3b1BhY2tldHMpIHsKIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJv
dXRFcXVhbGx5LCBDYW5QdXRTaW5nbGVQYXlsb2FkQnl0ZUluT25lUGFja2V0KSB7CiAgIFJ0cFBh
Y2tldGl6ZXI6OlBheWxvYWRTaXplTGltaXRzIGxpbWl0czsKICAgbGltaXRzLm1heF9wYXlsb2Fk
X2xlbiA9IDExOwotICBsaW1pdHMuZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA2OwotICBs
aW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDQ7CisgIGxpbWl0cy5zaW5nbGVfcGFj
a2V0X3JlZHVjdGlvbl9sZW4gPSAxMDsKIAogICBFWFBFQ1RfVEhBVChSdHBQYWNrZXRpemVyOjpT
cGxpdEFib3V0RXF1YWxseSgxLCBsaW1pdHMpLCBFbGVtZW50c0FyZSgxKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
Zm9ybWF0X3ZpZGVvX2dlbmVyaWMuY2MKaW5kZXggZWRkMWUzYzUzMDUxNjM1NDM1YjhjMGUxMWE4
NTExM2NhY2IzODQyNS4uOTJhYWRhNDY4OGE4NWZhNWNiY2M3NTg3MjBhNzg1NjkxZDUwOTg2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF9mb3JtYXRfdmlkZW9fZ2VuZXJpYy5jYwpAQCAtOCwxMSArOCwxMyBAQAogICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgogICovCiAKLSNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5j
bHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1v
bl90eXBlcy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRl
b19nZW5lcmljLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuaAppbmRleCAw
MzUwOWY1MDQxZGY2ZjdjZjZkNDhhZTc4OGI4ODk1NjVlMzJkY2IwLi4zNDU4ZDQ5NDIzMjlhMTVj
MTIwZGNmZjU5ZTMwZmY3Y2IxMjZkYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0
X3ZpZGVvX2dlbmVyaWMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMu
aApAQCAtMTAsNiArMTAsNyBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBf
Rk9STUFUX1ZJREVPX0dFTkVSSUNfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0Vf
UlRQX0ZPUk1BVF9WSURFT19HRU5FUklDX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpAQCAtMTgsNiArMTks
MTAgQEAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgeworCitjbGFzcyBSdHBQYWNrZXRUb1NlbmQ7CitzdHJ1Y3QgUlRQVmlkZW9IZWFk
ZXI7CisKIG5hbWVzcGFjZSBSdHBGb3JtYXRWaWRlb0dlbmVyaWMgewogc3RhdGljIGNvbnN0IHVp
bnQ4X3Qga0tleUZyYW1lQml0ID0gMHgwMTsKIHN0YXRpYyBjb25zdCB1aW50OF90IGtGaXJzdFBh
Y2tldEJpdCA9IDB4MDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA4LmNjCmluZGV4IGY0MDQzNGU3ZTAzMWY3MjlmMGQ0MzEy
Mjg1NWM5NWJjOTIzZGMyMDAuLmExMjQ4Y2YwNDBiMTczYzVjMDdhZDRiNzRmZGRkYzE3OTQyNThk
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA4LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9mb3JtYXRfdnA4LmNjCkBAIC0xMCwxMyArMTAsMTMgQEAKIAogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA4LmgiCiAKKyNpbmNsdWRlIDxzdGRpbnQu
aD4KICNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIG1lbWNweQotCi0jaW5jbHVkZSA8bGltaXRzPgot
I2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiY29tbW9u
X3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvaW50ZXJmYWNlL2NvbW1vbl9jb25zdGFudHMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA4LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0
X3ZwOC5oCmluZGV4IGU0YmMzNmUzZjNmNGVlMjVmNjM2YzljMWVlNzg1Y2E3Yjg0N2I2MzYuLjQ0
NDI5OGZiYmY4MDlkNTU1YmJjZDQwOGY2MmQ1YzhlNjc0YjU2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9mb3JtYXRfdnA4LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDguaApAQCAt
MjUsMTMgKzI1LDE1IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9GT1JN
QVRfVlA4X0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9GT1JNQVRfVlA4
X0hfCiAKLSNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8
Y3N0ZGludD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bmxpbmVkX3ZlY3Rvci5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF9nbG9iYWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDkuY2MK
aW5kZXggNDQxOWQxYTMwYzBiNWY5ODNiNTQyNDI4YWI0OThlM2M2YWQ4MGUxNy4uOWNkNzUxNDNi
OGMyOTcxYWYzMmFhYjU0MGE0OGZjNjQzZDU0ZWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2Zvcm1hdF92cDkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDkuY2MKQEAgLTEyLDkg
KzEyLDkgQEAKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogCi0jaW5jbHVkZSA8Y21hdGg+Ci0KKyNp
bmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9pbnRlcmZhY2UvY29tbW9uX2NvbnN0YW50
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKQEAgLTQ1MSw2ICs0NTEs
NyBAQCBSdHBQYWNrZXRpemVyVnA5OjpSdHBQYWNrZXRpemVyVnA5KHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IHVpbnQ4X3Q+IHBheWxvYWQsCiAgICAgICByZW1haW5pbmdfcGF5bG9hZF8ocGF5bG9hZCkg
ewogICBsaW1pdHMubWF4X3BheWxvYWRfbGVuIC09IGhlYWRlcl9zaXplXzsKICAgbGltaXRzLmZp
cnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuICs9IGZpcnN0X3BhY2tldF9leHRyYV9oZWFkZXJfc2l6
ZV87CisgIGxpbWl0cy5zaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW4gKz0gZmlyc3RfcGFja2V0
X2V4dHJhX2hlYWRlcl9zaXplXzsKIAogICBwYXlsb2FkX3NpemVzXyA9IFNwbGl0QWJvdXRFcXVh
bGx5KHBheWxvYWQuc2l6ZSgpLCBsaW1pdHMpOwogICBjdXJyZW50X3BhY2tldF8gPSBwYXlsb2Fk
X3NpemVzXy5iZWdpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDkuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA5LmgKaW5kZXggOGEyYTJhNjA0YzgxNGQzMjI1NTU4OTM0
MzQxOWVmZGI5MjZlOWVhOS4uYzNiOGYxN2E0YjA5ODFiYWMxNDgxYzk2NGU1MzM4NDc0ZTRhZTY5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDkuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfZm9ybWF0X3ZwOS5oCkBAIC0yMSwxMiArMjEsMTQgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBf
UlRDUF9TT1VSQ0VfUlRQX0ZPUk1BVF9WUDlfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9T
T1VSQ0VfUlRQX0ZPUk1BVF9WUDlfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3
LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9pbmNsdWRlL3ZwOV9nbG9iYWxzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmNjCmluZGV4IDFiOTMxMzI3
YmFkMWY4YTc5MTI5NzQyMGI2MzU3NjM4MzZjZTFkOTQuLmMyN2ZiNmUzZjZmODVmYjkxZGE5NDA5
ZTg2MzI2ZWQ4YzgzMzNkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1l
X2Rlc2NyaXB0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRv
ci5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5oIgogCisjaW5jbHVkZSA8Y3N0ZGludD4K
KwogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAg
LTU2LDYgKzU4LDE2IEBAIHZvaWQgUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvcjo6U2V0U3BhdGlh
bExheWVyc0JpdG1hc2soCiAgIHNwYXRpYWxfbGF5ZXJzXyA9IHNwYXRpYWxfbGF5ZXJzOwogfQog
Cit2b2lkIFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I6OlNldFJlc29sdXRpb24oaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KSB7CisgIFJUQ19EQ0hFQ0soRmlyc3RQYWNrZXRJblN1YkZyYW1lKCkpOwor
ICBSVENfRENIRUNLX0dFKHdpZHRoLCAwKTsKKyAgUlRDX0RDSEVDS19MRSh3aWR0aCwgMHhGRkZG
KTsKKyAgUlRDX0RDSEVDS19HRShoZWlnaHQsIDApOworICBSVENfRENIRUNLX0xFKGhlaWdodCwg
MHhGRkZGKTsKKyAgd2lkdGhfID0gd2lkdGg7CisgIGhlaWdodF8gPSBoZWlnaHQ7Cit9CisKIHVp
bnQxNl90IFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I6OkZyYW1lSWQoKSBjb25zdCB7CiAgIFJU
Q19EQ0hFQ0soRmlyc3RQYWNrZXRJblN1YkZyYW1lKCkpOwogICByZXR1cm4gZnJhbWVfaWRfOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5oCmluZGV4IDFiZGU0ZmE1NmRjYzc4
OWY4ZjZjYzNiNmM3ZWJhMWY4NjFlNDI5ZTMuLjNhNmMzNGQ1OWZmMjYzMGZhMTQzNmRlNTdmNGZj
ZTY5NjhhMTA0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2Ny
aXB0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmgKQEAg
LTUwLDYgKzUwLDEwIEBAIGNsYXNzIFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3IgewogICB1aW50
OF90IFNwYXRpYWxMYXllcnNCaXRtYXNrKCkgY29uc3Q7CiAgIHZvaWQgU2V0U3BhdGlhbExheWVy
c0JpdG1hc2sodWludDhfdCBzcGF0aWFsX2xheWVycyk7CiAKKyAgaW50IFdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gd2lkdGhfOyB9CisgIGludCBIZWlnaHQoKSBjb25zdCB7IHJldHVybiBoZWlnaHRf
OyB9CisgIHZvaWQgU2V0UmVzb2x1dGlvbihpbnQgd2lkdGgsIGludCBoZWlnaHQpOworCiAgIHVp
bnQxNl90IEZyYW1lSWQoKSBjb25zdDsKICAgdm9pZCBTZXRGcmFtZUlkKHVpbnQxNl90IGZyYW1l
X2lkKTsKIApAQCAtNzIsNiArNzYsOSBAQCBjbGFzcyBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9y
IHsKICAgdWludDhfdCB0ZW1wb3JhbF9sYXllcl8gPSAwOwogICBzaXplX3QgbnVtX2ZyYW1lX2Rl
cHNfID0gMDsKICAgdWludDE2X3QgZnJhbWVfZGVwc19pZF9kaWZmc19ba01heE51bUZyYW1lRGVw
ZW5kZW5jaWVzXTsKKyAgaW50IHdpZHRoXyA9IDA7CisgIGludCBoZWlnaHRfID0gMDsKKwogICBz
dGQ6OnZlY3Rvcjx1aW50OF90PiBieXRlX3JlcHJlc2VudGF0aW9uXzsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb24uY2MKaW5kZXgg
YzdiNTJkNWJhNjgwZDE0ZmQ4NjU2MmZhNGE4NWJiMTBmMDkwMjc4Yy4uN2NkMTIwZDlmNDVjMzk1
NzA2ZTc1MTkzNTBkOTU5MWY4MmMzMjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVy
aWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVy
aWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb24uY2MKQEAgLTM2LDYgKzM2LDE0IEBAIGNvbnN0
ZXhwciB1aW50OF90IGtGbGFnZVh0ZW5kZWRPZmZzZXQgPSAweDAyOwogLy8gQjogICArICAgICAg
RklEICAgICAgKwogLy8gICAgICB8ICAgICAgICAgICAgICAgfAogLy8gICAgICArLSstKy0rLSst
Ky0rLSstKworLy8gICAgICB8ICAgICAgICAgICAgICAgfAorLy8gICAgICArICAgICBXaWR0aCAg
ICAgKworLy8gQj0xICB8ICAgICAgICAgICAgICAgfAorLy8gYW5kICArLSstKy0rLSstKy0rLSst
KworLy8gRD0wICB8ICAgICAgICAgICAgICAgfAorLy8gICAgICArICAgICBIZWlnaHQgICAgKwor
Ly8gICAgICB8ICAgICAgICAgICAgICAgfAorLy8gICAgICArLSstKy0rLSstKy0rLSstKwogLy8g
RDogICB8ICAgIEZESUZGICB8WHxNfAogLy8gICAgICArLS0tLS0tLS0tLS0tLS0tKwogLy8gWDog
ICB8ICAgICAgLi4uICAgICAgfApAQCAtNzUsNiArODMsMTIgQEAgYm9vbCBSdHBHZW5lcmljRnJh
bWVEZXNjcmlwdG9yRXh0ZW5zaW9uOjpQYXJzZSgKICAgZGVzY3JpcHRvci0+Q2xlYXJGcmFtZURl
cGVuZGVuY2llcygpOwogICBzaXplX3Qgb2Zmc2V0ID0gNDsKICAgYm9vbCBoYXNfbW9yZV9kZXBl
bmRlbmNpZXMgPSAoZGF0YVswXSAmIGtGbGFnRGVwZW5kZW5jaWVzKSAhPSAwOworICBpZiAoIWhh
c19tb3JlX2RlcGVuZGVuY2llcyAmJiBkYXRhLnNpemUoKSA+PSBvZmZzZXQgKyA0KSB7CisgICAg
dWludDE2X3Qgd2lkdGggPSAoZGF0YVtvZmZzZXRdIDw8IDgpIHwgZGF0YVtvZmZzZXQgKyAxXTsK
KyAgICB1aW50MTZfdCBoZWlnaHQgPSAoZGF0YVtvZmZzZXQgKyAyXSA8PCA4KSB8IGRhdGFbb2Zm
c2V0ICsgM107CisgICAgZGVzY3JpcHRvci0+U2V0UmVzb2x1dGlvbih3aWR0aCwgaGVpZ2h0KTsK
KyAgICBvZmZzZXQgKz0gNDsKKyAgfQogICB3aGlsZSAoaGFzX21vcmVfZGVwZW5kZW5jaWVzKSB7
CiAgICAgaWYgKGRhdGEuc2l6ZSgpID09IG9mZnNldCkKICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTkxLDcgKzEwNSw3IEBAIGJvb2wgUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbjo6
UGFyc2UoCiAgICAgaWYgKCFkZXNjcmlwdG9yLT5BZGRGcmFtZURlcGVuZGVuY3lEaWZmKGZkaWZm
KSkKICAgICAgIHJldHVybiBmYWxzZTsKICAgfQotICByZXR1cm4gZGF0YS5zaXplKCkgPT0gb2Zm
c2V0OworICByZXR1cm4gdHJ1ZTsKIH0KIAogc2l6ZV90IFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0
b3JFeHRlbnNpb246OlZhbHVlU2l6ZSgKQEAgLTEwMyw2ICsxMTcsMTEgQEAgc2l6ZV90IFJ0cEdl
bmVyaWNGcmFtZURlc2NyaXB0b3JFeHRlbnNpb246OlZhbHVlU2l6ZSgKICAgZm9yICh1aW50MTZf
dCBmZGlmZiA6IGRlc2NyaXB0b3IuRnJhbWVEZXBlbmRlbmNpZXNEaWZmcygpKSB7CiAgICAgc2l6
ZSArPSAoZmRpZmYgPj0gKDEgPDwgNikpID8gMiA6IDE7CiAgIH0KKyAgaWYgKGRlc2NyaXB0b3Iu
Rmlyc3RQYWNrZXRJblN1YkZyYW1lKCkgJiYKKyAgICAgIGRlc2NyaXB0b3IuRnJhbWVEZXBlbmRl
bmNpZXNEaWZmcygpLmVtcHR5KCkgJiYgZGVzY3JpcHRvci5XaWR0aCgpID4gMCAmJgorICAgICAg
ZGVzY3JpcHRvci5IZWlnaHQoKSA+IDApIHsKKyAgICBzaXplICs9IDQ7CisgIH0KICAgcmV0dXJu
IHNpemU7CiB9CiAKQEAgLTEyOSw2ICsxNDgsMTMgQEAgYm9vbCBSdHBHZW5lcmljRnJhbWVEZXNj
cmlwdG9yRXh0ZW5zaW9uOjpXcml0ZSgKICAgZGF0YVszXSA9IGZyYW1lX2lkID4+IDg7CiAgIHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQxNl90PiBmZGlmZnMgPSBkZXNjcmlwdG9yLkZyYW1lRGVw
ZW5kZW5jaWVzRGlmZnMoKTsKICAgc2l6ZV90IG9mZnNldCA9IDQ7CisgIGlmIChkZXNjcmlwdG9y
LkZpcnN0UGFja2V0SW5TdWJGcmFtZSgpICYmIGZkaWZmcy5lbXB0eSgpICYmCisgICAgICBkZXNj
cmlwdG9yLldpZHRoKCkgPiAwICYmIGRlc2NyaXB0b3IuSGVpZ2h0KCkgPiAwKSB7CisgICAgZGF0
YVtvZmZzZXQrK10gPSAoZGVzY3JpcHRvci5XaWR0aCgpID4+IDgpOworICAgIGRhdGFbb2Zmc2V0
KytdID0gKGRlc2NyaXB0b3IuV2lkdGgoKSAmIDB4RkYpOworICAgIGRhdGFbb2Zmc2V0KytdID0g
KGRlc2NyaXB0b3IuSGVpZ2h0KCkgPj4gOCk7CisgICAgZGF0YVtvZmZzZXQrK10gPSAoZGVzY3Jp
cHRvci5IZWlnaHQoKSAmIDB4RkYpOworICB9CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmRp
ZmZzLnNpemUoKTsgaSsrKSB7CiAgICAgYm9vbCBleHRlbmRlZCA9IGZkaWZmc1tpXSA+PSAoMSA8
PCA2KTsKICAgICBib29sIG1vcmUgPSBpIDwgZmRpZmZzLnNpemUoKSAtIDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb24uaAppbmRleCAyZGQ5
ZGQ0OWViZTEyZTAyYTljMDVmZTI2YzNiZGI0MzFlMTgyZWUwLi4wZDY3M2UwNjAxOThkODFkYzBm
YWYzNzhjZmU4ZTg1M2JiMjgwYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19m
cmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2Zy
YW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLmgKQEAgLTIxLDYgKzIxLDcgQEAgbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKIGNsYXNzIFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3JFeHRlbnNpb24gewogIHB1
YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I7CiAg
IHN0YXRpYyBjb25zdGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0ZW5zaW9uR2Vu
ZXJpY0ZyYW1lRGVzY3JpcHRvcjsKICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtVcmlbXSA9CiAg
ICAgICAiaHR0cDovL3d3dy53ZWJydGMub3JnL2V4cGVyaW1lbnRzL3J0cC1oZHJleHQvIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb25f
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVu
c2lvbl91bml0dGVzdC5jYwppbmRleCBiYjY5ZTE0NTVkZDk0MGNhZjU3YmIxNTI4MGJjMzE5NWY1
Y2U3NDczLi43ZjhmYTJmNWE0MWU0NDdmY2Q5MzVjNTljNGU1NTA0NmY4ZTcyNGY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbl91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVu
c2lvbl91bml0dGVzdC5jYwpAQCAtMjc5LDUgKzI3OSwzMiBAQCBURVNUKFJ0cEdlbmVyaWNGcmFt
ZURlc2NyaXB0b3JFeHRlbnNpb25UZXN0LCBXcml0ZVR3b0ZyYW1lRGVwZW5kZW5jaWVzKSB7CiAg
IEVYUEVDVF9USEFUKGJ1ZmZlciwgRWxlbWVudHNBcmVBcnJheShrUmF3KSk7CiB9CiAKK1RFU1Qo
UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvblRlc3QsCisgICAgIFBhcnNlUmVzb2x1
dGlvbk9uSW5kZXBlbmRlbnRGcmFtZSkgeworICBjb25zdGV4cHIgaW50IGtXaWR0aCA9IDB4MjQ2
ODsKKyAgY29uc3RleHByIGludCBrSGVpZ2h0ID0gMHg2NTQzOworICBjb25zdGV4cHIgdWludDhf
dCBrUmF3W10gPSB7MHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgyNCwgMHg2OCwgMHg2NSwgMHg0
M307CisgIFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKworICBBU1NFUlRf
VFJVRShSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uOjpQYXJzZShrUmF3LCAmZGVz
Y3JpcHRvcikpOworICBFWFBFQ1RfRVEoZGVzY3JpcHRvci5XaWR0aCgpLCBrV2lkdGgpOworICBF
WFBFQ1RfRVEoZGVzY3JpcHRvci5IZWlnaHQoKSwga0hlaWdodCk7Cit9CisKK1RFU1QoUnRwR2Vu
ZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvblRlc3QsCisgICAgIFdyaXRlUmVzb2x1dGlvbk9u
SW5kZXBlbmRlbnRGcmFtZSkgeworICBjb25zdGV4cHIgaW50IGtXaWR0aCA9IDB4MjQ2ODsKKyAg
Y29uc3RleHByIGludCBrSGVpZ2h0ID0gMHg2NTQzOworICBjb25zdGV4cHIgdWludDhfdCBrUmF3
W10gPSB7MHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgyNCwgMHg2OCwgMHg2NSwgMHg0M307Cisg
IFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAgZGVzY3JpcHRvci5TZXRG
aXJzdFBhY2tldEluU3ViRnJhbWUodHJ1ZSk7CisgIGRlc2NyaXB0b3IuU2V0UmVzb2x1dGlvbihr
V2lkdGgsIGtIZWlnaHQpOworCisgIEFTU0VSVF9FUShSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9y
RXh0ZW5zaW9uOjpWYWx1ZVNpemUoZGVzY3JpcHRvciksCisgICAgICAgICAgICBzaXplb2Yoa1Jh
dykpOworICB1aW50OF90IGJ1ZmZlcltzaXplb2Yoa1JhdyldOworICBFWFBFQ1RfVFJVRShSdHBH
ZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uOjpXcml0ZShidWZmZXIsIGRlc2NyaXB0b3Ip
KTsKKyAgRVhQRUNUX1RIQVQoYnVmZmVyLCBFbGVtZW50c0FyZUFycmF5KGtSYXcpKTsKK30KIH0g
IC8vIG5hbWVzcGFjZQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRl
bnNpb25fbWFwLmNjCmluZGV4IDE2ODY2NWFmYzQ1MzJkZWI0ZDllODYzNWEyZDdlMGFiMzIwODQy
YWIuLjhlMGE0ODRkOTc3NGU2MDZlYWQ4NDVjZGE0NmU0MDg3MjY2Y2M3MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
aGVhZGVyX2V4dGVuc2lvbl9tYXAuY2MKQEAgLTQzLDYgKzQzLDcgQEAgY29uc3RleHByIEV4dGVu
c2lvbkluZm8ga0V4dGVuc2lvbnNbXSA9IHsKICAgICBDcmVhdGVFeHRlbnNpb25JbmZvPFJlcGFp
cmVkUnRwU3RyZWFtSWQ+KCksCiAgICAgQ3JlYXRlRXh0ZW5zaW9uSW5mbzxSdHBNaWQ+KCksCiAg
ICAgQ3JlYXRlRXh0ZW5zaW9uSW5mbzxSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9u
PigpLAorICAgIENyZWF0ZUV4dGVuc2lvbkluZm88Q29sb3JTcGFjZUV4dGVuc2lvbj4oKSwKIH07
CiAKIC8vIEJlY2F1c2Ugb2Yga1J0cEV4dGVuc2lvbk5vbmUsIE51bWJlck9mRXh0ZW5zaW9uIGlz
IDEgYmlnZ2VyIHRoYW4gdGhlIGFjdHVhbApAQCAtNTYsMTUgKzU3LDE3IEBAIHN0YXRpY19hc3Nl
cnQoYXJyYXlzaXplKGtFeHRlbnNpb25zKSA9PQogY29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUg
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwOjprSW52YWxpZFR5cGU7CiBjb25zdGV4cHIgaW50IFJ0cEhl
YWRlckV4dGVuc2lvbk1hcDo6a0ludmFsaWRJZDsKIAotUnRwSGVhZGVyRXh0ZW5zaW9uTWFwOjpS
dHBIZWFkZXJFeHRlbnNpb25NYXAoKQotICAgIDogbWl4ZWRfb25lX3R3b19ieXRlX2hlYWRlcl9z
dXBwb3J0ZWRfKGZhbHNlKSB7CitSdHBIZWFkZXJFeHRlbnNpb25NYXA6OlJ0cEhlYWRlckV4dGVu
c2lvbk1hcCgpIDogUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGZhbHNlKSB7fQorCitSdHBIZWFkZXJF
eHRlbnNpb25NYXA6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcChib29sIGV4dG1hcF9hbGxvd19taXhl
ZCkKKyAgICA6IGV4dG1hcF9hbGxvd19taXhlZF8oZXh0bWFwX2FsbG93X21peGVkKSB7CiAgIGZv
ciAoYXV0byYgaWQgOiBpZHNfKQogICAgIGlkID0ga0ludmFsaWRJZDsKIH0KIAogUnRwSGVhZGVy
RXh0ZW5zaW9uTWFwOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAoCiAgICAgcnRjOjpBcnJheVZpZXc8
Y29uc3QgUnRwRXh0ZW5zaW9uPiBleHRlbnNpb25zKQotICAgIDogUnRwSGVhZGVyRXh0ZW5zaW9u
TWFwKCkgeworICAgIDogUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGZhbHNlKSB7CiAgIGZvciAoY29u
c3QgUnRwRXh0ZW5zaW9uJiBleHRlbnNpb24gOiBleHRlbnNpb25zKQogICAgIFJlZ2lzdGVyQnlV
cmkoZXh0ZW5zaW9uLmlkLCBleHRlbnNpb24udXJpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9u
cy5jYwppbmRleCBmYzRiN2NlYjkyODFhZjVjMTIyZTViNDliZGE1MGQ1NGNjYWZlNzU5Li45MjY5
NGNkNWEzYTQ2NmEzMjhkODFjNDM3N2YwNDU2MWIyOGIyMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRl
bnNpb25zLmNjCkBAIC0xMCwxMCArMTAsMTQgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+
CisjaW5jbHVkZSA8Y21hdGg+CisKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUv
cnRwX2N2by5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIK
Ky8vIFRPRE8oYnVnOjk4NTUpIE1vdmUga05vU3BhdGlhbElkeCBmcm9tIHZwOV9nbG9iYWxzLmgg
dG8gY29tbW9uX2NvbnN0YW50cworI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy9pbnRlcmZhY2UvY29tbW9uX2NvbnN0YW50cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAvLyBBYnNvbHV0ZSBzZW5kIHRpbWUgaW4gUlRQIHN0cmVhbXMuCkBAIC00MzAsNiArNDM0LDE3
MiBAQCBib29sIEZyYW1lTWFya2luZ0V4dGVuc2lvbjo6V3JpdGUocnRjOjpBcnJheVZpZXc8dWlu
dDhfdD4gZGF0YSwKICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIENvbG9yIHNwYWNlIGluY2x1ZGlu
ZyBIRFIgbWV0YWRhdGEgYXMgYW4gb3B0aW9uYWwgZmllbGQuCisvLworLy8gUlRQIGhlYWRlciBl
eHRlbnNpb24gdG8gY2FycnkgSERSIG1ldGFkYXRhLgorLy8gRmxvYXQgdmFsdWVzIGFyZSB1cHNj
YWxlZCBieSBhIHN0YXRpYyBmYWN0b3IgYW5kIHRyYW5zbWl0dGVkIGFzIGludGVnZXJzLgorLy8K
Ky8vIERhdGEgbGF5b3V0IHdpdGggSERSIG1ldGFkYXRhCisvLyAgICAwICAgICAgICAgICAgICAg
ICAgIDEgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAzCisvLyAgICAwIDEg
MiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIgMyA0IDUgNiA3IDggOSAw
IDEgMgorLy8gICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rCisvLyAgIHwgICAgICAgSUQgICAgICB8ICAgbGVuZ3RoPTMw
ICAgIHwgICBQcmltYXJpZXMgICB8ICAgIFRyYW5zZmVyICAgIHwKKy8vICAgKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKwor
Ly8gICB8ICAgICBNYXRyaXggICAgfCAgICAgIFJhbmdlICAgICB8ICAgICAgICAgICAgICAgICBs
dW1pbmFuY2VfbWF4ICB8CisvLyAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKKy8vICAgfCAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICBsdW1pbmFuY2VfbWluICAgICAgICAgICAgICAgICAgfAorLy8gICAr
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rCisvLyAgIHwgICAgICAgICAgICAgIG1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5
X3IueCBhbmQgLnkgICAgICAgICAgICAgIHwKKy8vICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKworLy8gICB8ICAgICAg
ICAgICAgICBtYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9nLnggYW5kIC55ICAgICAgICAgICAg
ICB8CisvLyAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSsKKy8vICAgfCAgICAgICAgICAgICAgbWFzdGVyaW5nX21ldGFk
YXRhLnByaW1hcnlfYi54IGFuZCAueSAgICAgICAgICAgICAgfAorLy8gICArLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCisv
LyAgIHwgICAgICAgICAgICAgICAgbWFzdGVyaW5nX21ldGFkYXRhLndoaXRlLnggYW5kIC55ICAg
ICAgICAgICAgICAgIHwKKy8vICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKworLy8gICB8ICAgICBtYXhfY29udGVudF9s
aWdodF9sZXZlbCAgICB8IG1heF9mcmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVsICB8CisvLyAgICst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSsKKy8vCisvLyBEYXRhIGxheW91dCB3aXRob3V0IEhEUiBtZXRhZGF0YQorLy8gICAg
MCAgICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAg
ICAgMworLy8gICAgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAy
IDMgNCA1IDYgNyA4IDkgMCAxIDIKKy8vICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKworLy8gICB8ICAgICAgIElEICAg
ICAgfCAgICBsZW5ndGg9NCAgICB8ICAgUHJpbWFyaWVzICAgfCAgICBUcmFuc2ZlciAgICB8Cisv
LyAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSsKKy8vICAgfCAgICAgTWF0cml4ICAgIHwgICAgICBSYW5nZSAgICAgfAor
Ly8gICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstCisKK2NvbnN0ZXhwciBSVFBF
eHRlbnNpb25UeXBlIENvbG9yU3BhY2VFeHRlbnNpb246OmtJZDsKK2NvbnN0ZXhwciB1aW50OF90
IENvbG9yU3BhY2VFeHRlbnNpb246OmtWYWx1ZVNpemVCeXRlczsKK2NvbnN0ZXhwciBjb25zdCBj
aGFyIENvbG9yU3BhY2VFeHRlbnNpb246OmtVcmlbXTsKKworYm9vbCBDb2xvclNwYWNlRXh0ZW5z
aW9uOjpQYXJzZShydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBkYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlKiBjb2xvcl9zcGFjZSkgeworICBSVENf
RENIRUNLKGNvbG9yX3NwYWNlKTsKKyAgaWYgKGRhdGEuc2l6ZSgpICE9IGtWYWx1ZVNpemVCeXRl
cyAmJgorICAgICAgZGF0YS5zaXplKCkgIT0ga1ZhbHVlU2l6ZUJ5dGVzV2l0aG91dEhkck1ldGFk
YXRhKQorICAgIHJldHVybiBmYWxzZTsKKworICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgLy8gUmVh
ZCBjb2xvciBzcGFjZSBpbmZvcm1hdGlvbi4KKyAgaWYgKCFjb2xvcl9zcGFjZS0+c2V0X3ByaW1h
cmllc19mcm9tX3VpbnQ4KGRhdGEuZGF0YSgpW29mZnNldCsrXSkpCisgICAgcmV0dXJuIGZhbHNl
OworICBpZiAoIWNvbG9yX3NwYWNlLT5zZXRfdHJhbnNmZXJfZnJvbV91aW50OChkYXRhLmRhdGEo
KVtvZmZzZXQrK10pKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKCFjb2xvcl9zcGFjZS0+c2V0
X21hdHJpeF9mcm9tX3VpbnQ4KGRhdGEuZGF0YSgpW29mZnNldCsrXSkpCisgICAgcmV0dXJuIGZh
bHNlOworICBpZiAoIWNvbG9yX3NwYWNlLT5zZXRfcmFuZ2VfZnJvbV91aW50OChkYXRhLmRhdGEo
KVtvZmZzZXQrK10pKQorICAgIHJldHVybiBmYWxzZTsKKworICAvLyBSZWFkIEhEUiBtZXRhZGF0
YSBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSBjbGVhciBpdC4KKyAgaWYgKGRhdGEuc2l6ZSgpID09
IGtWYWx1ZVNpemVCeXRlc1dpdGhvdXRIZHJNZXRhZGF0YSkgeworICAgIGNvbG9yX3NwYWNlLT5z
ZXRfaGRyX21ldGFkYXRhKG51bGxwdHIpOworICB9IGVsc2UgeworICAgIEhkck1ldGFkYXRhIGhk
cl9tZXRhZGF0YTsKKyAgICBvZmZzZXQgKz0gUGFyc2VMdW1pbmFuY2UoZGF0YS5kYXRhKCkgKyBv
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoZHJfbWV0YWRhdGEubWFzdGVy
aW5nX21ldGFkYXRhLmx1bWluYW5jZV9tYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtMdW1pbmFuY2VNYXhEZW5vbWluYXRvcik7CisgICAgb2Zmc2V0ICs9IFBhcnNlTHVtaW5hbmNl
KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGRy
X21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5sdW1pbmFuY2VfbWluLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrTHVtaW5hbmNlTWluRGVub21pbmF0b3IpOworICAgIG9mZnNldCAr
PSBQYXJzZUNocm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFy
eV9yKTsKKyAgICBvZmZzZXQgKz0gUGFyc2VDaHJvbWF0aWNpdHkoZGF0YS5kYXRhKCkgKyBvZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoZHJfbWV0YWRhdGEubWFzdGVy
aW5nX21ldGFkYXRhLnByaW1hcnlfZyk7CisgICAgb2Zmc2V0ICs9IFBhcnNlQ2hyb21hdGljaXR5
KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
aGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2IpOworICAgIG9mZnNldCAr
PSBQYXJzZUNocm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEud2hpdGVf
cG9pbnQpOworICAgIGhkcl9tZXRhZGF0YS5tYXhfY29udGVudF9saWdodF9sZXZlbCA9CisgICAg
ICAgIEJ5dGVSZWFkZXI8dWludDE2X3Q+OjpSZWFkQmlnRW5kaWFuKGRhdGEuZGF0YSgpICsgb2Zm
c2V0KTsKKyAgICBvZmZzZXQgKz0gMjsKKyAgICBoZHJfbWV0YWRhdGEubWF4X2ZyYW1lX2F2ZXJh
Z2VfbGlnaHRfbGV2ZWwgPQorICAgICAgICBCeXRlUmVhZGVyPHVpbnQxNl90Pjo6UmVhZEJpZ0Vu
ZGlhbihkYXRhLmRhdGEoKSArIG9mZnNldCk7CisgICAgb2Zmc2V0ICs9IDI7CisgICAgY29sb3Jf
c3BhY2UtPnNldF9oZHJfbWV0YWRhdGEoJmhkcl9tZXRhZGF0YSk7CisgIH0KKyAgUlRDX0RDSEVD
S19FUShWYWx1ZVNpemUoKmNvbG9yX3NwYWNlKSwgb2Zmc2V0KTsKKyAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgQ29sb3JTcGFjZUV4dGVuc2lvbjo6V3JpdGUocnRjOjpBcnJheVZpZXc8dWludDhf
dD4gZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29sb3JTcGFj
ZSYgY29sb3Jfc3BhY2UpIHsKKyAgUlRDX0RDSEVDSyhkYXRhLnNpemUoKSA+PSBWYWx1ZVNpemUo
Y29sb3Jfc3BhY2UpKTsKKyAgc2l6ZV90IG9mZnNldCA9IDA7CisgIC8vIFdyaXRlIGNvbG9yIHNw
YWNlIGluZm9ybWF0aW9uLgorICBkYXRhLmRhdGEoKVtvZmZzZXQrK10gPSBzdGF0aWNfY2FzdDx1
aW50OF90Pihjb2xvcl9zcGFjZS5wcmltYXJpZXMoKSk7CisgIGRhdGEuZGF0YSgpW29mZnNldCsr
XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yX3NwYWNlLnRyYW5zZmVyKCkpOworICBkYXRh
LmRhdGEoKVtvZmZzZXQrK10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvcl9zcGFjZS5tYXRy
aXgoKSk7CisgIGRhdGEuZGF0YSgpW29mZnNldCsrXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNv
bG9yX3NwYWNlLnJhbmdlKCkpOworCisgIC8vIFdyaXRlIEhEUiBtZXRhZGF0YSBpZiBpdCBleGlz
dHMuCisgIGlmIChjb2xvcl9zcGFjZS5oZHJfbWV0YWRhdGEoKSkgeworICAgIGNvbnN0IEhkck1l
dGFkYXRhJiBoZHJfbWV0YWRhdGEgPSAqY29sb3Jfc3BhY2UuaGRyX21ldGFkYXRhKCk7CisgICAg
b2Zmc2V0ICs9IFdyaXRlTHVtaW5hbmNlKGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLmx1bWlu
YW5jZV9tYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtMdW1pbmFuY2VNYXhEZW5v
bWluYXRvcik7CisgICAgb2Zmc2V0ICs9IFdyaXRlTHVtaW5hbmNlKGRhdGEuZGF0YSgpICsgb2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5n
X21ldGFkYXRhLmx1bWluYW5jZV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtM
dW1pbmFuY2VNaW5EZW5vbWluYXRvcik7CisgICAgb2Zmc2V0ICs9IFdyaXRlQ2hyb21hdGljaXR5
KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
ZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfcik7CisgICAgb2Zmc2V0ICs9
IFdyaXRlQ2hyb21hdGljaXR5KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlf
Zyk7CisgICAgb2Zmc2V0ICs9IFdyaXRlQ2hyb21hdGljaXR5KGRhdGEuZGF0YSgpICsgb2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5n
X21ldGFkYXRhLnByaW1hcnlfYik7CisgICAgb2Zmc2V0ICs9IFdyaXRlQ2hyb21hdGljaXR5KGRh
dGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZHJf
bWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLndoaXRlX3BvaW50KTsKKworICAgIEJ5dGVXcml0
ZXI8dWludDE2X3Q+OjpXcml0ZUJpZ0VuZGlhbihkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyX21ldGFkYXRhLm1heF9jb250
ZW50X2xpZ2h0X2xldmVsKTsKKyAgICBvZmZzZXQgKz0gMjsKKyAgICBCeXRlV3JpdGVyPHVpbnQx
Nl90Pjo6V3JpdGVCaWdFbmRpYW4oCisgICAgICAgIGRhdGEuZGF0YSgpICsgb2Zmc2V0LCBoZHJf
bWV0YWRhdGEubWF4X2ZyYW1lX2F2ZXJhZ2VfbGlnaHRfbGV2ZWwpOworICAgIG9mZnNldCArPSAy
OworICB9CisgIFJUQ19EQ0hFQ0tfRVEoVmFsdWVTaXplKGNvbG9yX3NwYWNlKSwgb2Zmc2V0KTsK
KyAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBDb2xvclNwYWNlRXh0ZW5zaW9uOjpQYXJzZUNo
cm9tYXRpY2l0eSgKKyAgICBjb25zdCB1aW50OF90KiBkYXRhLAorICAgIEhkck1hc3RlcmluZ01l
dGFkYXRhOjpDaHJvbWF0aWNpdHkqIHApIHsKKyAgdWludDE2X3QgY2hyb21hdGljaXR5X3hfc2Nh
bGVkID0gQnl0ZVJlYWRlcjx1aW50MTZfdD46OlJlYWRCaWdFbmRpYW4oZGF0YSk7CisgIHVpbnQx
Nl90IGNocm9tYXRpY2l0eV95X3NjYWxlZCA9CisgICAgICBCeXRlUmVhZGVyPHVpbnQxNl90Pjo6
UmVhZEJpZ0VuZGlhbihkYXRhICsgMik7CisgIHAtPnggPSBzdGF0aWNfY2FzdDxmbG9hdD4oY2hy
b21hdGljaXR5X3hfc2NhbGVkKSAvIGtDaHJvbWF0aWNpdHlEZW5vbWluYXRvcjsKKyAgcC0+eSA9
IHN0YXRpY19jYXN0PGZsb2F0PihjaHJvbWF0aWNpdHlfeV9zY2FsZWQpIC8ga0Nocm9tYXRpY2l0
eURlbm9taW5hdG9yOworICByZXR1cm4gNDsgIC8vIFJldHVybiBudW1iZXIgb2YgYnl0ZXMgcmVh
ZC4KK30KKworc2l6ZV90IENvbG9yU3BhY2VFeHRlbnNpb246OlBhcnNlTHVtaW5hbmNlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQqIGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGRlbm9taW5hdG9yKSB7CisgIHVpbnQzMl90IGx1bWluYW5jZV9zY2FsZWQgPSBCeXRlUmVh
ZGVyPHVpbnQzMl90LCAzPjo6UmVhZEJpZ0VuZGlhbihkYXRhKTsKKyAgKmYgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4obHVtaW5hbmNlX3NjYWxlZCkgLyBkZW5vbWluYXRvcjsKKyAgcmV0dXJuIDM7ICAv
LyBSZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCit9CisKK3NpemVfdCBDb2xvclNwYWNlRXh0
ZW5zaW9uOjpXcml0ZUNocm9tYXRpY2l0eSgKKyAgICB1aW50OF90KiBkYXRhLAorICAgIGNvbnN0
IEhkck1hc3RlcmluZ01ldGFkYXRhOjpDaHJvbWF0aWNpdHkmIHApIHsKKyAgUlRDX0RDSEVDS19H
RShwLngsIDAuMGYpOworICBSVENfRENIRUNLX0dFKHAueSwgMC4wZik7CisgIEJ5dGVXcml0ZXI8
dWludDE2X3Q+OjpXcml0ZUJpZ0VuZGlhbigKKyAgICAgIGRhdGEsIHN0ZDo6cm91bmQocC54ICog
a0Nocm9tYXRpY2l0eURlbm9taW5hdG9yKSk7CisgIEJ5dGVXcml0ZXI8dWludDE2X3Q+OjpXcml0
ZUJpZ0VuZGlhbigKKyAgICAgIGRhdGEgKyAyLCBzdGQ6OnJvdW5kKHAueSAqIGtDaHJvbWF0aWNp
dHlEZW5vbWluYXRvcikpOworICByZXR1cm4gNDsgIC8vIFJldHVybiBudW1iZXIgb2YgYnl0ZXMg
d3JpdHRlbi4KK30KKworc2l6ZV90IENvbG9yU3BhY2VFeHRlbnNpb246OldyaXRlTHVtaW5hbmNl
KHVpbnQ4X3QqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZGVub21pbmF0b3IpIHsKKyAgUlRDX0RDSEVDS19HRShmLCAwLjBmKTsKKyAgQnl0ZVdyaXRl
cjx1aW50MzJfdCwgMz46OldyaXRlQmlnRW5kaWFuKGRhdGEsIHN0ZDo6cm91bmQoZiAqIGRlbm9t
aW5hdG9yKSk7CisgIHJldHVybiAzOyAgLy8gUmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVu
LgorfQorCiBib29sIEJhc2VSdHBTdHJpbmdFeHRlbnNpb246OlBhcnNlKHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IHVpbnQ4X3Q+IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0cmluZ1J0cEhlYWRlckV4dGVuc2lvbiogc3RyKSB7CiAgIGlmIChkYXRhLmVtcHR5KCkgfHwg
ZGF0YVswXSA9PSAwKSAgLy8gVmFsaWQgc3RyaW5nIGV4dGVuc2lvbiBjYW4ndCBiZSBlbXB0eS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX2hlYWRlcl9leHRlbnNpb25zLmgKaW5kZXggODRlOTgzMTQ3OWRiM2U5NGU5OTViNmZiNjVm
YTQwM2EzZmNjZTFiMC4uNDJhNjIxNmM3YjUyOTg5MmY1YmQ1OGQyN2NkOTQwYzg5NTAxMmRkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmgKQEAgLTEwLDE5ICsxMCwyNSBAQAogI2lmbmRlZiBN
T0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfSEVBREVSX0VYVEVOU0lPTlNfSF8KICNkZWZpbmUg
TU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX0hFQURFUl9FWFRFTlNJT05TX0hfCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAK
ICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS9ydHBfaGVhZGVycy5o
IgorI2luY2x1ZGUgImFwaS92aWRlby9jb2xvcl9zcGFjZS5oIgogI2luY2x1ZGUgImFwaS92aWRl
by92aWRlb19jb250ZW50X3R5cGUuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVf
bWFya2luZy5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19yb3RhdGlvbi5oIgogI2luY2x1
ZGUgImFwaS92aWRlby92aWRlb190aW1pbmcuaCIKKyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIg
IC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBjbGFzcyBB
YnNvbHV0ZVNlbmRUaW1lIHsKICBwdWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB1aW50MzJf
dDsKICAgc3RhdGljIGNvbnN0ZXhwciBSVFBFeHRlbnNpb25UeXBlIGtJZCA9IGtSdHBFeHRlbnNp
b25BYnNvbHV0ZVNlbmRUaW1lOwogICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qga1ZhbHVlU2l6
ZUJ5dGVzID0gMzsKICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyIGtVcmlbXSA9CkBAIC01
Nyw2ICs2Myw3IEBAIGNsYXNzIEF1ZGlvTGV2ZWwgewogCiBjbGFzcyBUcmFuc21pc3Npb25PZmZz
ZXQgewogIHB1YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IGludDMyX3Q7CiAgIHN0YXRpYyBj
b25zdGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0ZW5zaW9uVHJhbnNtaXNzaW9u
VGltZU9mZnNldDsKICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRlcyA9
IDM7CiAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciBrVXJpW10gPSAidXJuOmlldGY6cGFy
YW1zOnJ0cC1oZHJleHQ6dG9mZnNldCI7CkBAIC02OCw2ICs3NSw3IEBAIGNsYXNzIFRyYW5zbWlz
c2lvbk9mZnNldCB7CiAKIGNsYXNzIFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyIHsKICBwdWJsaWM6
CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB1aW50MTZfdDsKICAgc3RhdGljIGNvbnN0ZXhwciBSVFBF
eHRlbnNpb25UeXBlIGtJZCA9IGtSdHBFeHRlbnNpb25UcmFuc3BvcnRTZXF1ZW5jZU51bWJlcjsK
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRlcyA9IDI7CiAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgY2hhciBrVXJpW10gPQpAQCAtODAsNiArODgsNyBAQCBjbGFzcyBU
cmFuc3BvcnRTZXF1ZW5jZU51bWJlciB7CiAKIGNsYXNzIFZpZGVvT3JpZW50YXRpb24gewogIHB1
YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IFZpZGVvUm90YXRpb247CiAgIHN0YXRpYyBjb25z
dGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0ZW5zaW9uVmlkZW9Sb3RhdGlvbjsK
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRlcyA9IDE7CiAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgY2hhciBrVXJpW10gPSAidXJuOjNncHA6dmlkZW8tb3JpZW50YXRp
b24iOwpAQCAtOTQsNiArMTAzLDcgQEAgY2xhc3MgVmlkZW9PcmllbnRhdGlvbiB7CiAKIGNsYXNz
IFBsYXlvdXREZWxheUxpbWl0cyB7CiAgcHVibGljOgorICB1c2luZyB2YWx1ZV90eXBlID0gUGxh
eW91dERlbGF5OwogICBzdGF0aWMgY29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUga0lkID0ga1J0
cEV4dGVuc2lvblBsYXlvdXREZWxheTsKICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1
ZVNpemVCeXRlcyA9IDM7CiAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciBrVXJpW10gPQpA
QCAtMTE3LDYgKzEyNyw3IEBAIGNsYXNzIFBsYXlvdXREZWxheUxpbWl0cyB7CiAKIGNsYXNzIFZp
ZGVvQ29udGVudFR5cGVFeHRlbnNpb24gewogIHB1YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9
IFZpZGVvQ29udGVudFR5cGU7CiAgIHN0YXRpYyBjb25zdGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBr
SWQgPSBrUnRwRXh0ZW5zaW9uVmlkZW9Db250ZW50VHlwZTsKICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50OF90IGtWYWx1ZVNpemVCeXRlcyA9IDE7CiAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hh
ciBrVXJpW10gPQpAQCAtMTMzLDYgKzE0NCw3IEBAIGNsYXNzIFZpZGVvQ29udGVudFR5cGVFeHRl
bnNpb24gewogCiBjbGFzcyBWaWRlb1RpbWluZ0V4dGVuc2lvbiB7CiAgcHVibGljOgorICB1c2lu
ZyB2YWx1ZV90eXBlID0gVmlkZW9TZW5kVGltaW5nOwogICBzdGF0aWMgY29uc3RleHByIFJUUEV4
dGVuc2lvblR5cGUga0lkID0ga1J0cEV4dGVuc2lvblZpZGVvVGltaW5nOwogICBzdGF0aWMgY29u
c3RleHByIHVpbnQ4X3Qga1ZhbHVlU2l6ZUJ5dGVzID0gMTM7CiAgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgY2hhciBrVXJpW10gPQpAQCAtMTU1LDYgKzE2Nyw3IEBAIGNsYXNzIFZpZGVvVGltaW5n
RXh0ZW5zaW9uIHsKIAogY2xhc3MgRnJhbWVNYXJraW5nRXh0ZW5zaW9uIHsKICBwdWJsaWM6Cisg
IHVzaW5nIHZhbHVlX3R5cGUgPSBGcmFtZU1hcmtpbmc7CiAgIHN0YXRpYyBjb25zdGV4cHIgUlRQ
RXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0ZW5zaW9uRnJhbWVNYXJraW5nOwogICBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IGNoYXIga1VyaVtdID0KICAgICAgICJodHRwOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9kcmFmdC1pZXRmLWF2dGV4dC1mcmFtZW1hcmtpbmctMDciOwpAQCAtMTY5LDEwICsx
ODIsNDEgQEAgY2xhc3MgRnJhbWVNYXJraW5nRXh0ZW5zaW9uIHsKICAgc3RhdGljIGJvb2wgSXNT
Y2FsYWJsZSh1aW50OF90IHRlbXBvcmFsX2lkLCB1aW50OF90IGxheWVyX2lkKTsKIH07CiAKK2Ns
YXNzIENvbG9yU3BhY2VFeHRlbnNpb24geworIHB1YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9
IENvbG9yU3BhY2U7CisgIHN0YXRpYyBjb25zdGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBrSWQgPSBr
UnRwRXh0ZW5zaW9uQ29sb3JTcGFjZTsKKyAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1
ZVNpemVCeXRlcyA9IDMwOworICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qga1ZhbHVlU2l6ZUJ5
dGVzV2l0aG91dEhkck1ldGFkYXRhID0gNDsKKyAgLy8gVE9ETyh3ZWJydGM6ODY1MSk6IENoYW5n
ZSB0byBhIHZhbGlkIHVyaS4KKyAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyIGtVcmlbXSA9
ICJydHAtY29sb3JzcGFjZS11cmktcGxhY2Vob2xkZXIiOworCisgIHN0YXRpYyBib29sIFBhcnNl
KHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IGRhdGEsCisgICAgICAgICAgICAgICAgICAg
IENvbG9yU3BhY2UqIGNvbG9yX3NwYWNlKTsKKyAgc3RhdGljIHNpemVfdCBWYWx1ZVNpemUoY29u
c3QgQ29sb3JTcGFjZSYgY29sb3Jfc3BhY2UpIHsKKyAgICByZXR1cm4gY29sb3Jfc3BhY2UuaGRy
X21ldGFkYXRhKCkgPyBrVmFsdWVTaXplQnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBrVmFsdWVTaXplQnl0ZXNXaXRob3V0SGRyTWV0YWRhdGE7CisgIH0KKyAg
c3RhdGljIGJvb2wgV3JpdGUocnRjOjpBcnJheVZpZXc8dWludDhfdD4gZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ29sb3JTcGFjZSYgY29sb3Jfc3BhY2UpOworCisgcHJpdmF0ZToK
KyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga0Nocm9tYXRpY2l0eURlbm9taW5hdG9yID0gMTAwMDA7
ICAvLyAwLjAwMDEgcmVzb2x1dGlvbi4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga0x1bWluYW5j
ZU1heERlbm9taW5hdG9yID0gMTAwOyAgICAvLyAwLjAxIHJlc29sdXRpb24uCisgIHN0YXRpYyBj
b25zdGV4cHIgaW50IGtMdW1pbmFuY2VNaW5EZW5vbWluYXRvciA9IDEwMDAwOyAgLy8gMC4wMDAx
IHJlc29sdXRpb24uCisgIHN0YXRpYyBzaXplX3QgUGFyc2VDaHJvbWF0aWNpdHkoY29uc3QgdWlu
dDhfdCogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZHJNYXN0ZXJp
bmdNZXRhZGF0YTo6Q2hyb21hdGljaXR5KiBwKTsKKyAgc3RhdGljIHNpemVfdCBQYXJzZUx1bWlu
YW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBmbG9hdCogZiwgaW50IGRlbm9taW5hdG9yKTsKKyAg
c3RhdGljIHNpemVfdCBXcml0ZUNocm9tYXRpY2l0eSh1aW50OF90KiBkYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEhkck1hc3RlcmluZ01ldGFkYXRhOjpDaHJv
bWF0aWNpdHkmIHApOworICBzdGF0aWMgc2l6ZV90IFdyaXRlTHVtaW5hbmNlKHVpbnQ4X3QqIGRh
dGEsIGZsb2F0IGYsIGludCBkZW5vbWluYXRvcik7Cit9OworCiAvLyBCYXNlIGV4dGVuc2lvbiBj
bGFzcyBmb3IgUlRQIGhlYWRlciBleHRlbnNpb25zIHdoaWNoIGFyZSBzdHJpbmdzLgogLy8gU3Vi
Y2xhc3NlcyBtdXN0IGRlZmluZWQga0lkIGFuZCBrVXJpIHN0YXRpYyBjb25zdGV4cHIgbWVtYmVy
cy4KIGNsYXNzIEJhc2VSdHBTdHJpbmdFeHRlbnNpb24gewogIHB1YmxpYzoKKyAgdXNpbmcgdmFs
dWVfdHlwZSA9IHN0ZDo6c3RyaW5nOwogICAvLyBTdHJpbmcgUlRQIGhlYWRlciBleHRlbnNpb25z
IGFyZSBsaW1pdGVkIHRvIDE2IGJ5dGVzIGJlY2F1c2UgaXQgaXMgdGhlCiAgIC8vIG1heGltdW0g
bGVuZ3RoIHRoYXQgY2FuIGJlIGVuY29kZWQgd2l0aCBvbmUtYnl0ZSBoZWFkZXIgZXh0ZW5zaW9u
cy4KICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtNYXhWYWx1ZVNpemVCeXRlcyA9IDE2Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9wYXJzZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
aGVhZGVyX3BhcnNlci5jYwppbmRleCBkZjY4Zjc0ZGQ5Mzc3MjIyMzE5ZDZmZTBhMzBmYzFhYTgz
MjdjY2JmLi42NDgxYTQwM2EwNDM2YTNkM2U0NmY0NWNjNzdiMmUyY2IxNGExMmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX3BhcnNlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVh
ZGVyX3BhcnNlci5jYwpAQCAtOSw5ICs5LDEyIEBACiAgKi8KICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9wYXJzZXIuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5o
PgorCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5z
aW9uX21hcC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91dGlsaXR5
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0y
NSw4ICsyOCwxMCBAQCBjbGFzcyBSdHBIZWFkZXJQYXJzZXJJbXBsIDogcHVibGljIFJ0cEhlYWRl
clBhcnNlciB7CiAgICAgICAgICAgICAgUlRQSGVhZGVyKiBoZWFkZXIpIGNvbnN0IG92ZXJyaWRl
OwogCiAgIGJvb2wgUmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0
eXBlLCB1aW50OF90IGlkKSBvdmVycmlkZTsKKyAgYm9vbCBSZWdpc3RlclJ0cEhlYWRlckV4dGVu
c2lvbihSdHBFeHRlbnNpb24gZXh0ZW5zaW9uKSBvdmVycmlkZTsKIAogICBib29sIERlcmVnaXN0
ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlKSBvdmVycmlkZTsKKyAg
Ym9vbCBEZXJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJ0cEV4dGVuc2lvbiBleHRlbnNpb24p
IG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdGljYWxf
c2VjdGlvbl87CkBAIC02Myw2ICs2OCwxMCBAQCBib29sIFJ0cEhlYWRlclBhcnNlckltcGw6OlBh
cnNlKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwKICAgfQogICByZXR1cm4gdHJ1ZTsKIH0KK2Jvb2wg
UnRwSGVhZGVyUGFyc2VySW1wbDo6UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUnRwRXh0ZW5z
aW9uIGV4dGVuc2lvbikgeworICBydGM6OkNyaXRTY29wZSBjcygmY3JpdGljYWxfc2VjdGlvbl8p
OworICByZXR1cm4gcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXy5SZWdpc3RlckJ5VXJpKGV4dGVu
c2lvbi5pZCwgZXh0ZW5zaW9uLnVyaSk7Cit9CiAKIGJvb2wgUnRwSGVhZGVyUGFyc2VySW1wbDo6
UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGlk
KSB7CkBAIC03MCw2ICs3OSwxMiBAQCBib29sIFJ0cEhlYWRlclBhcnNlckltcGw6OlJlZ2lzdGVy
UnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUgdHlwZSwKICAgcmV0dXJuIHJ0cF9o
ZWFkZXJfZXh0ZW5zaW9uX21hcF8uUmVnaXN0ZXJCeVR5cGUoaWQsIHR5cGUpOwogfQogCitib29s
IFJ0cEhlYWRlclBhcnNlckltcGw6OkRlcmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUnRwRXh0
ZW5zaW9uIGV4dGVuc2lvbikgeworICBydGM6OkNyaXRTY29wZSBjcygmY3JpdGljYWxfc2VjdGlv
bl8pOworICByZXR1cm4gcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXy5EZXJlZ2lzdGVyKAorICAg
ICAgcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXy5HZXRUeXBlKGV4dGVuc2lvbi5pZCkpOworfQor
CiBib29sIFJ0cEhlYWRlclBhcnNlckltcGw6OkRlcmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24o
UlRQRXh0ZW5zaW9uVHlwZSB0eXBlKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0aWNhbF9z
ZWN0aW9uXyk7CiAgIHJldHVybiBydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXBfLkRlcmVnaXN0ZXIo
dHlwZSkgPT0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfcGFja2V0LmNjCmluZGV4IDBiOWVkODBhZjU2ZWQ4NjdhNTRjOTU4MGZjYmNjNjM0NGIz
ZWNkYzguLjlkNGRjZTRkZWEyN2U0ZGIwNDk1MWZmYzRmMTRkN2Y1YjAwNGZiNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9wYWNrZXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldC5jYwpA
QCAtMTAsMTYgKzEwLDE1IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfcGFja2V0LmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGNzdHJpbmc+CiAj
aW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0jaW5j
bHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9yYW5k
b20uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewpAQCAtMjEyLDggKzIxMSw3
IEBAIHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4X3Q+IFJ0cFBhY2tldDo6QWxsb2NhdGVSYXdFeHRlbnNp
b24oaW50IGlkLCBzaXplX3QgbGVuZ3RoKSB7CiAgIGNvbnN0IGJvb2wgdHdvX2J5dGVfaGVhZGVy
X3JlcXVpcmVkID0KICAgICAgIGlkID4gUnRwRXh0ZW5zaW9uOjprT25lQnl0ZUhlYWRlckV4dGVu
c2lvbk1heElkIHx8CiAgICAgICBsZW5ndGggPiBSdHBFeHRlbnNpb246OmtPbmVCeXRlSGVhZGVy
RXh0ZW5zaW9uTWF4VmFsdWVTaXplIHx8IGxlbmd0aCA9PSAwOwotICBSVENfQ0hFQ0soIXR3b19i
eXRlX2hlYWRlcl9yZXF1aXJlZCB8fAotICAgICAgICAgICAgZXh0ZW5zaW9uc18uSXNNaXhlZE9u
ZVR3b0J5dGVIZWFkZXJTdXBwb3J0ZWQoKSk7CisgIFJUQ19DSEVDSyghdHdvX2J5dGVfaGVhZGVy
X3JlcXVpcmVkIHx8IGV4dGVuc2lvbnNfLkV4dG1hcEFsbG93TWl4ZWQoKSk7CiAKICAgdWludDE2
X3QgcHJvZmlsZV9pZDsKICAgaWYgKGV4dGVuc2lvbnNfc2l6ZV8gPiAwKSB7CkBAIC0zNTksMjIg
KzM1NywyMCBAQCB1aW50OF90KiBSdHBQYWNrZXQ6OlNldFBheWxvYWRTaXplKHNpemVfdCBzaXpl
X2J5dGVzKSB7CiAgIHJldHVybiBXcml0ZUF0KHBheWxvYWRfb2Zmc2V0Xyk7CiB9CiAKLWJvb2wg
UnRwUGFja2V0OjpTZXRQYWRkaW5nKHVpbnQ4X3Qgc2l6ZV9ieXRlcywgUmFuZG9tKiByYW5kb20p
IHsKLSAgUlRDX0RDSEVDSyhyYW5kb20pOwotICBpZiAocGF5bG9hZF9vZmZzZXRfICsgcGF5bG9h
ZF9zaXplXyArIHNpemVfYnl0ZXMgPiBjYXBhY2l0eSgpKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJO
SU5HKSA8PCAiQ2Fubm90IHNldCBwYWRkaW5nIHNpemUgIiA8PCBzaXplX2J5dGVzIDw8ICIsIG9u
bHkgIgorYm9vbCBSdHBQYWNrZXQ6OlNldFBhZGRpbmcoc2l6ZV90IHBhZGRpbmdfYnl0ZXMpIHsK
KyAgaWYgKHBheWxvYWRfb2Zmc2V0XyArIHBheWxvYWRfc2l6ZV8gKyBwYWRkaW5nX2J5dGVzID4g
Y2FwYWNpdHkoKSkgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNhbm5vdCBzZXQgcGFk
ZGluZyBzaXplICIgPDwgcGFkZGluZ19ieXRlcworICAgICAgICAgICAgICAgICAgICAgICAgPDwg
Iiwgb25seSAiCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAoY2FwYWNpdHkoKSAtIHBheWxv
YWRfb2Zmc2V0XyAtIHBheWxvYWRfc2l6ZV8pCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
IGJ5dGVzIGxlZnQgaW4gYnVmZmVyLiI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9Ci0gIHBhZGRp
bmdfc2l6ZV8gPSBzaXplX2J5dGVzOworICBwYWRkaW5nX3NpemVfID0gcnRjOjpkY2hlY2tlZF9j
YXN0PHVpbnQ4X3Q+KHBhZGRpbmdfYnl0ZXMpOwogICBidWZmZXJfLlNldFNpemUocGF5bG9hZF9v
ZmZzZXRfICsgcGF5bG9hZF9zaXplXyArIHBhZGRpbmdfc2l6ZV8pOwogICBpZiAocGFkZGluZ19z
aXplXyA+IDApIHsKICAgICBzaXplX3QgcGFkZGluZ19vZmZzZXQgPSBwYXlsb2FkX29mZnNldF8g
KyBwYXlsb2FkX3NpemVfOwogICAgIHNpemVfdCBwYWRkaW5nX2VuZCA9IHBhZGRpbmdfb2Zmc2V0
ICsgcGFkZGluZ19zaXplXzsKLSAgICBmb3IgKHNpemVfdCBvZmZzZXQgPSBwYWRkaW5nX29mZnNl
dDsgb2Zmc2V0IDwgcGFkZGluZ19lbmQgLSAxOyArK29mZnNldCkgewotICAgICAgV3JpdGVBdChv
ZmZzZXQsIHJhbmRvbS0+UmFuZDx1aW50OF90PigpKTsKLSAgICB9CisgICAgbWVtc2V0KFdyaXRl
QXQocGFkZGluZ19vZmZzZXQpLCAwLCBwYWRkaW5nX3NpemVfIC0gMSk7CiAgICAgV3JpdGVBdChw
YWRkaW5nX2VuZCAtIDEsIHBhZGRpbmdfc2l6ZV8pOwogICAgIFdyaXRlQXQoMCwgZGF0YSgpWzBd
IHwgMHgyMCk7ICAvLyBTZXQgcGFkZGluZyBiaXQuCiAgIH0gZWxzZSB7CkBAIC01NTYsNyArNTUy
LDcgQEAgcnRjOjpBcnJheVZpZXc8dWludDhfdD4gUnRwUGFja2V0OjpBbGxvY2F0ZUV4dGVuc2lv
bihFeHRlbnNpb25UeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgpIHsKICAgLy8gVE9ETyh3ZWJydGM6Nzk5
MCk6IEFkZCBzdXBwb3J0IGZvciBlbXB0eSBleHRlbnNpb25zIChsZW5ndGg9PTApLgogICBpZiAo
bGVuZ3RoID09IDAgfHwgbGVuZ3RoID4gUnRwRXh0ZW5zaW9uOjprTWF4VmFsdWVTaXplIHx8Ci0g
ICAgICAoIWV4dGVuc2lvbnNfLklzTWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKCkgJiYK
KyAgICAgICghZXh0ZW5zaW9uc18uRXh0bWFwQWxsb3dNaXhlZCgpICYmCiAgICAgICAgbGVuZ3Ro
ID4gUnRwRXh0ZW5zaW9uOjprT25lQnl0ZUhlYWRlckV4dGVuc2lvbk1heFZhbHVlU2l6ZSkpIHsK
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQpAQCAtNTY2LDcgKzU2Miw3IEBAIHJ0Yzo6QXJyYXlW
aWV3PHVpbnQ4X3Q+IFJ0cFBhY2tldDo6QWxsb2NhdGVFeHRlbnNpb24oRXh0ZW5zaW9uVHlwZSB0
eXBlLAogICAgIC8vIEV4dGVuc2lvbiBub3QgcmVnaXN0ZXJlZC4KICAgICByZXR1cm4gbnVsbHB0
cjsKICAgfQotICBpZiAoIWV4dGVuc2lvbnNfLklzTWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9y
dGVkKCkgJiYKKyAgaWYgKCFleHRlbnNpb25zXy5FeHRtYXBBbGxvd01peGVkKCkgJiYKICAgICAg
IGlkID4gUnRwRXh0ZW5zaW9uOjprT25lQnl0ZUhlYWRlckV4dGVuc2lvbk1heElkKSB7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9wYWNrZXQuaAppbmRleCAxNWMzODY1YjM1OTRkYzg3NmU0MTgwNmE0Nzgz
ZjE3NDYyNTNkZDc0Li43NjY2NmI3ZjEyZDc2Mzc1MTlmMDUyMzM5MzA5MTIzY2UyMTVlN2I0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tl
dC5oCkBAIC0xMiwxMCArMTIsMTIgQEAKIAogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvZGVwcmVjYXRpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBSYW5kb207
CkBAIC05NCw4ICs5NiwxMSBAQCBjbGFzcyBSdHBQYWNrZXQgewogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRXh0ZW5zaW9uPgogICBib29sIEhhc0V4dGVuc2lvbigpIGNvbnN0OwogCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBFeHRlbnNpb24sIHR5cGVuYW1lLi4uIFZhbHVlcz4KLSAgYm9vbCBHZXRFeHRl
bnNpb24oVmFsdWVzLi4uKSBjb25zdDsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEV4dGVuc2lvbiwg
dHlwZW5hbWUgRmlyc3RWYWx1ZSwgdHlwZW5hbWUuLi4gVmFsdWVzPgorICBib29sIEdldEV4dGVu
c2lvbihGaXJzdFZhbHVlLCBWYWx1ZXMuLi4pIGNvbnN0OworCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBFeHRlbnNpb24+CisgIGFic2w6Om9wdGlvbmFsPHR5cGVuYW1lIEV4dGVuc2lvbjo6dmFsdWVf
dHlwZT4gR2V0RXh0ZW5zaW9uKCkgY29uc3Q7CiAKICAgLy8gUmV0dXJucyB2aWV3IG9mIHRoZSBy
YXcgZXh0ZW5zaW9uIG9yIGVtcHR5IHZpZXcgb24gZmFpbHVyZS4KICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEV4dGVuc2lvbj4KQEAgLTExMSw3ICsxMTYsMTIgQEAgY2xhc3MgUnRwUGFja2V0IHsKICAg
dWludDhfdCogU2V0UGF5bG9hZFNpemUoc2l6ZV90IHNpemVfYnl0ZXMpOwogICAvLyBTYW1lIGFz
IFNldFBheWxvYWRTaXplIGJ1dCBkb2Vzbid0IGd1YXJhbnRlZSB0byBrZWVwIGN1cnJlbnQgcGF5
bG9hZC4KICAgdWludDhfdCogQWxsb2NhdGVQYXlsb2FkKHNpemVfdCBzaXplX2J5dGVzKTsKLSAg
Ym9vbCBTZXRQYWRkaW5nKHVpbnQ4X3Qgc2l6ZV9ieXRlcywgUmFuZG9tKiByYW5kb20pOworICBS
VENfREVQUkVDQVRFRAorICBib29sIFNldFBhZGRpbmcodWludDhfdCBzaXplX2J5dGVzLCBSYW5k
b20qIHJhbmRvbSkgeworICAgIHJldHVybiBTZXRQYWRkaW5nKHNpemVfYnl0ZXMpOworICB9CisK
KyAgYm9vbCBTZXRQYWRkaW5nKHNpemVfdCBwYWRkaW5nX3NpemUpOwogCiAgcHJpdmF0ZToKICAg
c3RydWN0IEV4dGVuc2lvbkluZm8gewpAQCAtMTc3LDEyICsxODcsMjEgQEAgYm9vbCBSdHBQYWNr
ZXQ6Okhhc0V4dGVuc2lvbigpIGNvbnN0IHsKICAgcmV0dXJuICFGaW5kRXh0ZW5zaW9uKEV4dGVu
c2lvbjo6a0lkKS5lbXB0eSgpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRXh0ZW5zaW9uLCB0
eXBlbmFtZS4uLiBWYWx1ZXM+Ci1ib29sIFJ0cFBhY2tldDo6R2V0RXh0ZW5zaW9uKFZhbHVlcy4u
LiB2YWx1ZXMpIGNvbnN0IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBFeHRlbnNpb24sIHR5cGVuYW1l
IEZpcnN0VmFsdWUsIHR5cGVuYW1lLi4uIFZhbHVlcz4KK2Jvb2wgUnRwUGFja2V0OjpHZXRFeHRl
bnNpb24oRmlyc3RWYWx1ZSBmaXJzdCwgVmFsdWVzLi4uIHZhbHVlcykgY29uc3QgewogICBhdXRv
IHJhdyA9IEZpbmRFeHRlbnNpb24oRXh0ZW5zaW9uOjprSWQpOwogICBpZiAocmF3LmVtcHR5KCkp
CiAgICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gRXh0ZW5zaW9uOjpQYXJzZShyYXcsIHZhbHVl
cy4uLik7CisgIHJldHVybiBFeHRlbnNpb246OlBhcnNlKHJhdywgZmlyc3QsIHZhbHVlcy4uLik7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFeHRlbnNpb24+CithYnNsOjpvcHRpb25hbDx0eXBl
bmFtZSBFeHRlbnNpb246OnZhbHVlX3R5cGU+IFJ0cFBhY2tldDo6R2V0RXh0ZW5zaW9uKCkgY29u
c3QgeworICBhYnNsOjpvcHRpb25hbDx0eXBlbmFtZSBFeHRlbnNpb246OnZhbHVlX3R5cGU+IHJl
c3VsdDsKKyAgYXV0byByYXcgPSBGaW5kRXh0ZW5zaW9uKEV4dGVuc2lvbjo6a0lkKTsKKyAgaWYg
KHJhdy5lbXB0eSgpIHx8ICFFeHRlbnNpb246OlBhcnNlKHJhdywgJnJlc3VsdC5lbXBsYWNlKCkp
KQorICAgIHJlc3VsdCA9IGFic2w6Om51bGxvcHQ7CisgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBFeHRlbnNpb24+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFj
a2V0X2hpc3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnkuY2MKaW5kZXggZTEz
NzRmZWI1N2ZjZDk5NjEyMTUxMjhlMTExZjIzMzdlYzY4ZmFlMC4uOGMxYzhlYmJiZmFlOTFjYWI2
ZWEwNGM1MjhhMzZkOWM5OTc0YjljYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9o
aXN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfaGlzdG9yeS5jYwpAQCAtOTcsNiAr
OTcsMTUgQEAgdm9pZCBSdHBQYWNrZXRIaXN0b3J5OjpQdXRSdHBQYWNrZXQoc3RkOjp1bmlxdWVf
cHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0LAogICBjb25zdCB1aW50MTZfdCBydHBfc2VxX25v
ID0gcGFja2V0LT5TZXF1ZW5jZU51bWJlcigpOwogICBTdG9yZWRQYWNrZXQmIHN0b3JlZF9wYWNr
ZXQgPSBwYWNrZXRfaGlzdG9yeV9bcnRwX3NlcV9ub107CiAgIFJUQ19EQ0hFQ0soc3RvcmVkX3Bh
Y2tldC5wYWNrZXQgPT0gbnVsbHB0cik7CisgIGlmIChzdG9yZWRfcGFja2V0LnBhY2tldCkgewor
ICAgIC8vIEl0IGlzIGFuIGVycm9yIGlmIHRoaXMgaGFwcGVuLiBCdXQgaXQgY2FuIGhhcHBlbiBp
ZiB0aGUgc2VxdWVuY2UgbnVtYmVycworICAgIC8vIGZvciBzb21lIHJlYXNvbiByZXN0YXJ0IHdp
dGhvdXQgdGhhdCB0aGUgaGlzdG9yeSBoYXMgYmVlbiByZXNldC4KKyAgICBhdXRvIHNpemVfaXRl
cmF0b3IgPSBwYWNrZXRfc2l6ZV8uZmluZChzdG9yZWRfcGFja2V0LnBhY2tldC0+c2l6ZSgpKTsK
KyAgICBpZiAoc2l6ZV9pdGVyYXRvciAhPSBwYWNrZXRfc2l6ZV8uZW5kKCkgJiYKKyAgICAgICAg
c2l6ZV9pdGVyYXRvci0+c2Vjb25kID09IHN0b3JlZF9wYWNrZXQucGFja2V0LT5TZXF1ZW5jZU51
bWJlcigpKSB7CisgICAgICBwYWNrZXRfc2l6ZV8uZXJhc2Uoc2l6ZV9pdGVyYXRvcik7CisgICAg
fQorICB9CiAgIHN0b3JlZF9wYWNrZXQucGFja2V0ID0gc3RkOjptb3ZlKHBhY2tldCk7CiAKICAg
aWYgKHN0b3JlZF9wYWNrZXQucGFja2V0LT5jYXB0dXJlX3RpbWVfbXMoKSA8PSAwKSB7CkBAIC0x
MTYsOCArMTI1LDcgQEAgdm9pZCBSdHBQYWNrZXRIaXN0b3J5OjpQdXRSdHBQYWNrZXQoc3RkOjp1
bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0LAogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UnRwUGFja2V0VG9TZW5kPiBSdHBQYWNrZXRIaXN0b3J5OjpHZXRQYWNrZXRBbmRTZXRTZW5kVGlt
ZSgKLSAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsCi0gICAgYm9vbCB2ZXJpZnlfcnR0KSB7
CisgICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZs
b2NrXyk7CiAgIGlmIChtb2RlXyA9PSBTdG9yYWdlTW9kZTo6a0Rpc2FibGVkKSB7CiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xMzAsNyArMTM4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tl
dFRvU2VuZD4gUnRwUGFja2V0SGlzdG9yeTo6R2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoCiAgIH0K
IAogICBTdG9yZWRQYWNrZXQmIHBhY2tldCA9IHJ0cF9pdC0+c2Vjb25kOwotICBpZiAodmVyaWZ5
X3J0dCAmJiAhVmVyaWZ5UnR0KHJ0cF9pdC0+c2Vjb25kLCBub3dfbXMpKSB7CisgIGlmICghVmVy
aWZ5UnR0KHJ0cF9pdC0+c2Vjb25kLCBub3dfbXMpKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAg
IH0KIApAQCAtMTUwLDggKzE1OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+
IFJ0cFBhY2tldEhpc3Rvcnk6OkdldFBhY2tldEFuZFNldFNlbmRUaW1lKAogfQogCiBhYnNsOjpv
cHRpb25hbDxSdHBQYWNrZXRIaXN0b3J5OjpQYWNrZXRTdGF0ZT4gUnRwUGFja2V0SGlzdG9yeTo6
R2V0UGFja2V0U3RhdGUoCi0gICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAotICAgIGJvb2wg
dmVyaWZ5X3J0dCkgY29uc3QgeworICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlcikgY29uc3Qg
ewogICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwogICBpZiAobW9kZV8gPT0gU3RvcmFnZU1v
ZGU6OmtEaXNhYmxlZCkgewogICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwpAQCAtMTYyLDcgKzE2
OSw3IEBAIGFic2w6Om9wdGlvbmFsPFJ0cFBhY2tldEhpc3Rvcnk6OlBhY2tldFN0YXRlPiBSdHBQ
YWNrZXRIaXN0b3J5OjpHZXRQYWNrZXRTdGF0ZSgKICAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsK
ICAgfQogCi0gIGlmICh2ZXJpZnlfcnR0ICYmICFWZXJpZnlSdHQocnRwX2l0LT5zZWNvbmQsIGNs
b2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpKSB7CisgIGlmICghVmVyaWZ5UnR0KHJ0cF9pdC0+
c2Vjb25kLCBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSkgewogICAgIHJldHVybiBhYnNs
OjpudWxsb3B0OwogICB9CiAKQEAgLTIwOSw4ICsyMTYsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPFJ0
cFBhY2tldFRvU2VuZD4gUnRwUGFja2V0SGlzdG9yeTo6R2V0QmVzdEZpdHRpbmdQYWNrZXQoCiAg
IGNvbnN0IHVpbnQxNl90IHNlcV9ubyA9IHVwcGVyX2JvdW5kX2RpZmYgPCBsb3dlcl9ib3VuZF9k
aWZmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNpemVfaXRlcl91cHBlci0+c2Vj
b25kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNpemVfaXRlcl9sb3dlci0+c2Vj
b25kOwotICBSdHBQYWNrZXRUb1NlbmQqIGJlc3RfcGFja2V0ID0KLSAgICAgIHBhY2tldF9oaXN0
b3J5Xy5maW5kKHNlcV9ubyktPnNlY29uZC5wYWNrZXQuZ2V0KCk7CisgIGF1dG8gaGlzdG9yeV9p
dCA9IHBhY2tldF9oaXN0b3J5Xy5maW5kKHNlcV9ubyk7CisgIGlmIChoaXN0b3J5X2l0ID09IHBh
Y2tldF9oaXN0b3J5Xy5lbmQoKSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBm
aW5kIHBhY2tldCBpbiBoaXN0b3J5IHdpdGggc2VxX25vIiA8PCBzZXFfbm87CisgICAgUlRDX0RD
SEVDSyhmYWxzZSk7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKyAgaWYgKCFoaXN0b3J5X2l0
LT5zZWNvbmQucGFja2V0KSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlBhY2tldCBwb2lu
dGVyIGlzIG51bGwgaW4gaGlzdG9yeSBmb3Igc2VxX25vIgorICAgICAgICAgICAgICAgICAgICAg
IDw8IHNlcV9ubzsKKyAgICBSVENfRENIRUNLKGZhbHNlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
KyAgfQorICBSdHBQYWNrZXRUb1NlbmQqIGJlc3RfcGFja2V0ID0gaGlzdG9yeV9pdC0+c2Vjb25k
LnBhY2tldC5nZXQoKTsKICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFJ0cFBhY2tldFRvU2Vu
ZD4oKmJlc3RfcGFja2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9o
aXN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnkuaAppbmRleCAxNjQ2YmE3Yzc2
ZjNhZmE1ZTkyNjVlMjYzMDkyOWE3NmZmM2RhMDcyLi4wOTU0MjRlM2Q3MTMxMjNjOWMzYmIzYjcw
OTZkYmNkZDVlYTUwNzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3Rvcnku
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnkuaApAQCAtNzYsMTYgKzc2LDEzIEBA
IGNsYXNzIFJ0cFBhY2tldEhpc3RvcnkgewogICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRp
b25hbDxpbnQ2NF90PiBzZW5kX3RpbWVfbXMpOwogCiAgIC8vIEdldHMgc3RvcmVkIFJUUCBwYWNr
ZXQgY29ycmVzcG9uZGluZyB0byB0aGUgaW5wdXQgfHNlcXVlbmNlIG51bWJlcnwuCi0gIC8vIFJl
dHVybnMgbnVsbHB0ciBpZiBwYWNrZXQgaXMgbm90IGZvdW5kLiBJZiB8dmVyaWZ5X3J0dHwgaXMg
dHJ1ZSwgZG9lc24ndAotICAvLyByZXR1cm4gcGFja2V0IHRoYXQgd2FzIChyZSlzZW50IHRvbyBy
ZWNlbnRseS4KKyAgLy8gUmV0dXJucyBudWxscHRyIGlmIHBhY2tldCBpcyBub3QgZm91bmQgb3Ig
d2FzIChyZSlzZW50IHRvbyByZWNlbnRseS4KICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRv
U2VuZD4gR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoCi0gICAgICB1aW50MTZfdCBzZXF1ZW5jZV9u
dW1iZXIsCi0gICAgICBib29sIHZlcmlmeV9ydHQpOworICAgICAgdWludDE2X3Qgc2VxdWVuY2Vf
bnVtYmVyKTsKIAogICAvLyBTaW1pbGFyIHRvIEdldFBhY2tldEFuZFNldFNlbmRUaW1lKCksIGJ1
dCBvbmx5IHJldHVybnMgYSBzbmFwc2hvdCBvZiB0aGUKICAgLy8gY3VycmVudCBzdGF0ZSBmb3Ig
cGFja2V0LCBhbmQgbmV2ZXIgdXBkYXRlcyBpbnRlcm5hbCBzdGF0ZS4KLSAgYWJzbDo6b3B0aW9u
YWw8UGFja2V0U3RhdGU+IEdldFBhY2tldFN0YXRlKHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmVyaWZ5
X3J0dCkgY29uc3Q7CisgIGFic2w6Om9wdGlvbmFsPFBhY2tldFN0YXRlPiBHZXRQYWNrZXRTdGF0
ZSh1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIpIGNvbnN0OwogCiAgIC8vIEdldCB0aGUgcGFja2V0
IChpZiBhbnkpIGZyb20gdGhlIGhpc3RvcnksIHdpdGggc2l6ZSBjbG9zZXN0IHRvCiAgIC8vIHxw
YWNrZXRfc2l6ZXwuIFRoZSBleGFjdCBzaXplIG9mIHRoZSBwYWNrZXQgaXMgbm90IGd1YXJhbnRl
ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnlfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnlfdW5pdHRlc3QuY2MKaW5kZXggODVlOWViMjhj
ZDc0NTNhNDYyZDI4N2E2MTBkM2Q0NmU0MjZjOTAyMC4uMTQwNDM0Y2JiZGU3OWE2ZDFhMjU5NDJm
ZjgwMWVhZjFmNmQ5OTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfaGlzdG9yeV91bml0dGVzdC5j
YwpAQCAtNjMsMTEgKzYzLDExIEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgQ2xlYXJz
SGlzdG9yeUFmdGVyU2V0U3RvcmVTdGF0dXMpIHsKICAgLy8gU3RvcmUgYSBwYWNrZXQsIGJ1dCB3
aXRoIHNlbmQtdGltZS4gSXQgc2hvdWxkIHRoZW4gbm90IGJlIHJlbW92ZWQuCiAgIGhpc3RfLlB1
dFJ0cFBhY2tldChDcmVhdGVSdHBQYWNrZXQoa1N0YXJ0U2VxTnVtKSwga0FsbG93UmV0cmFuc21p
c3Npb24sCiAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpudWxsb3B0KTsKLSAgRVhQRUNUX1RS
VUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1Rf
VFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBDaGFuZ2lu
ZyBzdG9yZSBzdGF0dXMsIGV2ZW4gdG8gdGhlIGN1cnJlbnQgb25lLCB3aWxsIGNsZWFyIHRoZSBo
aXN0b3J5LgogICBoaXN0Xy5TZXRTdG9yZVBhY2tldHNTdGF0dXMoU3RvcmFnZU1vZGU6OmtTdG9y
ZSwgMTApOwotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVt
LCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2Vx
TnVtKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgU3RhcnRTZXFSZXNldEFm
dGVyUmVzZXQpIHsKQEAgLTc1LDE2ICs3NSwxNiBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRl
c3QsIFN0YXJ0U2VxUmVzZXRBZnRlclJlc2V0KSB7CiAgIC8vIFN0b3JlIGEgcGFja2V0LCBidXQg
d2l0aCBzZW5kLXRpbWUuIEl0IHNob3VsZCB0aGVuIG5vdCBiZSByZW1vdmVkLgogICBoaXN0Xy5Q
dXRSdHBQYWNrZXQoQ3JlYXRlUnRwUGFja2V0KGtTdGFydFNlcU51bSksIGtBbGxvd1JldHJhbnNt
aXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bnVsbG9wdCk7Ci0gIEVYUEVDVF9U
UlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNU
X1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQ2hhbmdp
bmcgc3RvcmUgc3RhdHVzLCB0byBjbGVhciB0aGUgaGlzdG9yeS4KICAgaGlzdF8uU2V0U3RvcmVQ
YWNrZXRzU3RhdHVzKFN0b3JhZ2VNb2RlOjprU3RvcmVBbmRDdWxsLCAxMCk7Ci0gIEVYUEVDVF9G
QUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVD
VF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBBZGQg
YSBuZXcgcGFja2V0LgogICBoaXN0Xy5QdXRSdHBQYWNrZXQoQ3JlYXRlUnRwUGFja2V0KGtTdGFy
dFNlcU51bSArIDEpLCBrQWxsb3dSZXRyYW5zbWlzc2lvbiwKICAgICAgICAgICAgICAgICAgICAg
IGFic2w6Om51bGxvcHQpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3Rh
cnRTZXFOdW0gKyAxLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0
ZShrU3RhcnRTZXFOdW0gKyAxKSk7CiAKICAgLy8gQWR2YW5jZSB0aW1lIHBhc3Qgd2hlcmUgcGFj
a2V0IGV4cGlyZXMuCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKApAQCAt
OTQsOSArOTQsOSBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFN0YXJ0U2VxUmVzZXRB
ZnRlclJlc2V0KSB7CiAgIC8vIEFkZCBvbmUgbW9yZSBwYWNrZXQgYW5kIHZlcmlmeSBubyBzdGF0
ZSBsZWZ0IGZyb20gcGFja2V0IGJlZm9yZSByZXNldC4KICAgaGlzdF8uUHV0UnRwUGFja2V0KENy
ZWF0ZVJ0cFBhY2tldChUbzE2dShrU3RhcnRTZXFOdW0gKyAyKSksCiAgICAgICAgICAgICAgICAg
ICAgICBrQWxsb3dSZXRyYW5zbWlzc2lvbiwgYWJzbDo6bnVsbG9wdCk7Ci0gIEVYUEVDVF9GQUxT
RShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7Ci0gIEVYUEVDVF9U
UlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSArIDEsIGZhbHNlKSk7Ci0gIEVY
UEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKFRvMTZ1KGtTdGFydFNlcU51bSArIDIpLCBm
YWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVt
KSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSArIDEp
KTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoVG8xNnUoa1N0YXJ0U2VxTnVt
ICsgMikpKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBOb1N0b3JlU3RhdHVz
KSB7CkBAIC0xMDQsMjEgKzEwNCwyMSBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIE5v
U3RvcmVTdGF0dXMpIHsKICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0
ID0gQ3JlYXRlUnRwUGFja2V0KGtTdGFydFNlcU51bSk7CiAgIGhpc3RfLlB1dFJ0cFBhY2tldChz
dGQ6Om1vdmUocGFja2V0KSwga0FsbG93UmV0cmFuc21pc3Npb24sIGFic2w6Om51bGxvcHQpOwog
ICAvLyBQYWNrZXQgc2hvdWxkIG5vdCBiZSBzdG9yZWQuCi0gIEVYUEVDVF9GQUxTRShoaXN0Xy5H
ZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9GQUxTRShoaXN0
Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhp
c3RvcnlUZXN0LCBHZXRSdHBQYWNrZXRfTm90U3RvcmVkKSB7CiAgIGhpc3RfLlNldFN0b3JlUGFj
a2V0c1N0YXR1cyhTdG9yYWdlTW9kZTo6a1N0b3JlLCAxMCk7Ci0gIEVYUEVDVF9GQUxTRShoaXN0
Xy5HZXRQYWNrZXRTdGF0ZSgwLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFj
a2V0U3RhdGUoMCkpOwogfQogCiBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFB1dFJ0cFBh
Y2tldCkgewogICBoaXN0Xy5TZXRTdG9yZVBhY2tldHNTdGF0dXMoU3RvcmFnZU1vZGU6OmtTdG9y
ZSwgMTApOwogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXQgPSBDcmVh
dGVSdHBQYWNrZXQoa1N0YXJ0U2VxTnVtKTsKIAotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFj
a2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0
UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAgIGhpc3RfLlB1dFJ0cFBhY2tldChzdGQ6Om1v
dmUocGFja2V0KSwga0FsbG93UmV0cmFuc21pc3Npb24sIGFic2w6Om51bGxvcHQpOwotICBFWFBF
Q1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVY
UEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOwogfQogCiBURVNU
X0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIEdldFJ0cFBhY2tldCkgewpAQCAtMTMwLDcgKzEzMCw3
IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgR2V0UnRwUGFja2V0KSB7CiAgIGhpc3Rf
LlB1dFJ0cFBhY2tldChzdGQ6Om1vdmUocGFja2V0KSwga0FsbG93UmV0cmFuc21pc3Npb24sIGFi
c2w6Om51bGxvcHQpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tl
dF9vdXQgPQotICAgICAgaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVt
LCBmYWxzZSk7CisgICAgICBoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFO
dW0pOwogICBFWFBFQ1RfVFJVRShwYWNrZXRfb3V0KTsKICAgRVhQRUNUX0VRKGJ1ZmZlciwgcGFj
a2V0X291dC0+QnVmZmVyKCkpOwogICBFWFBFQ1RfRVEoY2FwdHVyZV90aW1lX21zLCBwYWNrZXRf
b3V0LT5jYXB0dXJlX3RpbWVfbXMoKSk7CkBAIC0xNDYsNyArMTQ2LDcgQEAgVEVTVF9GKFJ0cFBh
Y2tldEhpc3RvcnlUZXN0LCBOb0NhcHR1cmVUaW1lKSB7CiAgIGhpc3RfLlB1dFJ0cFBhY2tldChz
dGQ6Om1vdmUocGFja2V0KSwga0FsbG93UmV0cmFuc21pc3Npb24sIGFic2w6Om51bGxvcHQpOwog
CiAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tldF9vdXQgPQotICAgICAg
aGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCBmYWxzZSk7CisgICAg
ICBoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0pOwogICBFWFBFQ1Rf
VFJVRShwYWNrZXRfb3V0KTsKICAgRVhQRUNUX0VRKGJ1ZmZlciwgcGFja2V0X291dC0+QnVmZmVy
KCkpOwogICBFWFBFQ1RfRVEoY2FwdHVyZV90aW1lX21zLCBwYWNrZXRfb3V0LT5jYXB0dXJlX3Rp
bWVfbXMoKSk7CkBAIC0xNjEsMTkgKzE2MSwyMSBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRl
c3QsIERvbnRSZXRyYW5zbWl0KSB7CiAKICAgLy8gR2V0IHRoZSBwYWNrZXQgYW5kIHZlcmlmeSBk
YXRhLgogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXRfb3V0OwotICBw
YWNrZXRfb3V0ID0gaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCBm
YWxzZSk7CisgIHBhY2tldF9vdXQgPSBoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3Rh
cnRTZXFOdW0pOwogICBBU1NFUlRfVFJVRShwYWNrZXRfb3V0KTsKICAgRVhQRUNUX0VRKGJ1ZmZl
ci5zaXplKCksIHBhY2tldF9vdXQtPnNpemUoKSk7CiAgIEVYUEVDVF9FUShjYXB0dXJlX3RpbWVf
bXMsIHBhY2tldF9vdXQtPmNhcHR1cmVfdGltZV9tcygpKTsKIAogICAvLyBOb24tcmV0cmFuc21p
dHRhYmxlIHBhY2tldHMgYXJlIGltbWVkaWF0ZWx5IHJlbW92ZWQsIHNvIGdldHRpbmcgaW4gYWdh
aW4KICAgLy8gc2hvdWxkIGZhaWwuCi0gIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRBbmRT
ZXRTZW5kVGltZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9GQUxTRShoaXN0Xy5H
ZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0pKTsKIH0KIAogVEVTVF9GKFJ0cFBh
Y2tldEhpc3RvcnlUZXN0LCBQYWNrZXRTdGF0ZUlzQ29ycmVjdCkgewogICBjb25zdCB1aW50MzJf
dCBrU3NyYyA9IDkyMzg0NzYyOworICBjb25zdCBpbnQ2NF90IGtSdHRNcyA9IDEwMDsKICAgaGlz
dF8uU2V0U3RvcmVQYWNrZXRzU3RhdHVzKFN0b3JhZ2VNb2RlOjprU3RvcmVBbmRDdWxsLCAxMCk7
CisgIGhpc3RfLlNldFJ0dChrUnR0TXMpOwogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9T
ZW5kPiBwYWNrZXQgPSBDcmVhdGVSdHBQYWNrZXQoa1N0YXJ0U2VxTnVtKTsKICAgcGFja2V0LT5T
ZXRTc3JjKGtTc3JjKTsKICAgcGFja2V0LT5TZXRQYXlsb2FkU2l6ZSgxMjM0KTsKQEAgLTE4Myw3
ICsxODUsNyBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFBhY2tldFN0YXRlSXNDb3Jy
ZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29u
ZHMoKSk7CiAKICAgYWJzbDo6b3B0aW9uYWw8UnRwUGFja2V0SGlzdG9yeTo6UGFja2V0U3RhdGU+
IHN0YXRlID0KLSAgICAgIGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2Up
OworICAgICAgaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKTsKICAgQVNTRVJUX1RS
VUUoc3RhdGUpOwogICBFWFBFQ1RfRVEoc3RhdGUtPnJ0cF9zZXF1ZW5jZV9udW1iZXIsIGtTdGFy
dFNlcU51bSk7CiAgIEVYUEVDVF9FUShzdGF0ZS0+c2VuZF90aW1lX21zLCBmYWtlX2Nsb2NrXy5U
aW1lSW5NaWxsaXNlY29uZHMoKSk7CkBAIC0xOTMsOSArMTk1LDEwIEBAIFRFU1RfRihSdHBQYWNr
ZXRIaXN0b3J5VGVzdCwgUGFja2V0U3RhdGVJc0NvcnJlY3QpIHsKICAgRVhQRUNUX0VRKHN0YXRl
LT50aW1lc19yZXRyYW5zbWl0dGVkLCAwdSk7CiAKICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVN
aWxsaXNlY29uZHMoMSk7Ci0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRU
aW1lKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0
QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKSk7CisgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1l
TWlsbGlzZWNvbmRzKGtSdHRNcyArIDEpOwogCi0gIHN0YXRlID0gaGlzdF8uR2V0UGFja2V0U3Rh
dGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSk7CisgIHN0YXRlID0gaGlzdF8uR2V0UGFja2V0U3RhdGUo
a1N0YXJ0U2VxTnVtKTsKICAgQVNTRVJUX1RSVUUoc3RhdGUpOwogICBFWFBFQ1RfRVEoc3RhdGUt
PnRpbWVzX3JldHJhbnNtaXR0ZWQsIDF1KTsKIH0KQEAgLTIxMSw3ICsyMTQsNyBAQCBURVNUX0Yo
UnRwUGFja2V0SGlzdG9yeVRlc3QsIE1pblJlc2VuZFRpbWVXaXRoUGFjZXIpIHsKICAgaGlzdF8u
UHV0UnRwUGFja2V0KHN0ZDo6bW92ZShwYWNrZXQpLCBrQWxsb3dSZXRyYW5zbWlzc2lvbiwgYWJz
bDo6bnVsbG9wdCk7CiAKICAgLy8gRmlyc3QgdHJhbnNtaXNzaW9uOiBUaW1lVG9TZW5kUGFja2V0
KCkgY2FsbCBmcm9tIHBhY2VyLgotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRT
ZW5kVGltZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBh
Y2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSkpOwogCiAgIC8vIEZpcnN0IHJldHJhbnNt
aXNzaW9uIC0gYWxsb3cgZWFybHkgcmV0cmFuc21pc3Npb24uCiAgIGZha2VfY2xvY2tfLkFkdmFu
Y2VUaW1lTWlsbGlzZWNvbmRzKDEpOwpAQCAtMjIxLDI2ICsyMjQsMjQgQEAgVEVTVF9GKFJ0cFBh
Y2tldEhpc3RvcnlUZXN0LCBNaW5SZXNlbmRUaW1lV2l0aFBhY2VyKSB7CiAgIC8vICAgIHBhY2tl
dCBpcyB0aGVyZSBhbmQgdmVyaWZ5IFJUVCBjb25zdHJhaW50cy4gVGhlbiB3ZSB1c2UgdGhlIHNz
cmMKICAgLy8gICAgYW5kIHNlcXVlbmNlIG51bWJlciB0byBlbnF1ZXVlIHRoZSByZXRyYW5zbWlz
c2lvbiBpbiB0aGUgcGFjZXIKICAgLy8gMikgV2hlbiB0aGUgcGFjZXIgZGV0ZXJtaW5lcyB0aGF0
IGl0IGlzIHRpbWUgdG8gc2VuZCB0aGUgcGFja2V0LCBpdCBjYWxscwotICAvLyAgICBHZXRQYWNr
ZXRBbmRTZXRTZW5kVGltZSgpLiBUaGlzIHRpbWUgd2UgZG8gbm90IG5lZWQgdG8gdmVyaWZ5IFJU
VCBhcwotICAvLyAgICBoYXMgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRvbmUuCisgIC8vICAgIEdl
dFBhY2tldEFuZFNldFNlbmRUaW1lKCkuCiAgIGFic2w6Om9wdGlvbmFsPFJ0cFBhY2tldEhpc3Rv
cnk6OlBhY2tldFN0YXRlPiBwYWNrZXRfc3RhdGUgPQotICAgICAgaGlzdF8uR2V0UGFja2V0U3Rh
dGUoa1N0YXJ0U2VxTnVtLCAvKnZlcmlmeV9ydHQ9Ki90cnVlKTsKKyAgICAgIGhpc3RfLkdldFBh
Y2tldFN0YXRlKGtTdGFydFNlcU51bSk7CiAgIEVYUEVDVF9UUlVFKHBhY2tldF9zdGF0ZSk7CiAg
IEVYUEVDVF9FUShsZW4sIHBhY2tldF9zdGF0ZS0+cGF5bG9hZF9zaXplKTsKICAgRVhQRUNUX0VR
KGNhcHR1cmVfdGltZV9tcywgcGFja2V0X3N0YXRlLT5jYXB0dXJlX3RpbWVfbXMpOwogCiAgIC8v
IFJldHJhbnNtaXNzaW9uIHdhcyBhbGxvd2VkLCBuZXh0IHNlbmQgaXQgZnJvbSBwYWNlci4KLSAg
RVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnZlcmlmeV9ydHQ9
Ki9mYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShr
U3RhcnRTZXFOdW0pKTsKIAogICAvLyBTZWNvbmQgcmV0cmFuc21pc3Npb24gLSBhZHZhbmNlIHRp
bWUgdG8ganVzdCBiZWZvcmUgcmV0cmFuc21pc3Npb24gT0suCiAgIGZha2VfY2xvY2tfLkFkdmFu
Y2VUaW1lTWlsbGlzZWNvbmRzKGtNaW5SZXRyYW5zbWl0SW50ZXJ2YWxNcyAtIDEpOwotICBFWFBF
Q1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCAvKnZlcmlmeV9ydHQ9
Ki90cnVlKSk7CisgIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFO
dW0pKTsKIAogICAvLyBBZHZhbmNlIHRpbWUgdG8ganVzdCBhZnRlciByZXRyYW5zbWlzc2lvbiBP
Sy4KICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMSk7Ci0gIEVYUEVDVF9U
UlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgLyp2ZXJpZnlfcnR0PSovdHJ1
ZSkpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRT
ZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFy
dFNlcU51bSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShr
U3RhcnRTZXFOdW0pKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBNaW5SZXNl
bmRUaW1lV2l0aG91dFBhY2VyKSB7CkBAIC0yNTYsMTggKzI1NywxOCBAQCBURVNUX0YoUnRwUGFj
a2V0SGlzdG9yeVRlc3QsIE1pblJlc2VuZFRpbWVXaXRob3V0UGFjZXIpIHsKIAogICAvLyBGaXJz
dCByZXRyYW5zbWlzc2lvbiAtIGFsbG93IGVhcmx5IHJldHJhbnNtaXNzaW9uLgogICBmYWtlX2Ns
b2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxKTsKLSAgcGFja2V0ID0gaGlzdF8uR2V0UGFj
a2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCB0cnVlKTsKKyAgcGFja2V0ID0gaGlzdF8u
R2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKTsKICAgRVhQRUNUX1RSVUUocGFj
a2V0KTsKICAgRVhQRUNUX0VRKGxlbiwgcGFja2V0LT5zaXplKCkpOwogICBFWFBFQ1RfRVEoY2Fw
dHVyZV90aW1lX21zLCBwYWNrZXQtPmNhcHR1cmVfdGltZV9tcygpKTsKIAogICAvLyBTZWNvbmQg
cmV0cmFuc21pc3Npb24gLSBhZHZhbmNlIHRpbWUgdG8ganVzdCBiZWZvcmUgcmV0cmFuc21pc3Np
b24gT0suCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtNaW5SZXRyYW5z
bWl0SW50ZXJ2YWxNcyAtIDEpOwotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0QW5kU2V0
U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCB0cnVlKSk7CisgIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQ
YWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBBZHZhbmNlIHRpbWUg
dG8ganVzdCBhZnRlciByZXRyYW5zbWlzc2lvbiBPSy4KICAgZmFrZV9jbG9ja18uQWR2YW5jZVRp
bWVNaWxsaXNlY29uZHMoMSk7Ci0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldEFuZFNldFNl
bmRUaW1lKGtTdGFydFNlcU51bSwgdHJ1ZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNr
ZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0pKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhp
c3RvcnlUZXN0LCBSZW1vdmVzT2xkZXN0U2VudFBhY2tldFdoZW5BdE1heFNpemUpIHsKQEAgLTI4
OSw3ICsyOTAsNyBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFJlbW92ZXNPbGRlc3RT
ZW50UGFja2V0V2hlbkF0TWF4U2l6ZSkgewogICB9CiAKICAgLy8gRmlyc3QgcGFja2V0IHNob3Vs
ZCBzdGlsbCBiZSB0aGVyZS4KLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0
YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShr
U3RhcnRTZXFOdW0pKTsKIAogICAvLyBIaXN0b3J5IGlzIGZ1bGwsIG9sZGVzdCBvbmUgc2hvdWxk
IGJlIG92ZXJ3cml0dGVuLgogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNr
ZXQgPQpAQCAtMjk4LDggKzI5OSw4IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgUmVt
b3Zlc09sZGVzdFNlbnRQYWNrZXRXaGVuQXRNYXhTaXplKSB7CiAgICAgICAgICAgICAgICAgICAg
ICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAKICAgLy8gT2xkZXN0IHBhY2tl
dCBzaG91bGQgYmUgZ29uZSwgYnV0IHBhY2tldCBhZnRlciB0aGFuIG9uZSBzdGlsbCBwcmVzZW50
LgotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxz
ZSkpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAx
LCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2Vx
TnVtKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSAr
IDEpKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBSZW1vdmVzT2xkZXN0UGFj
a2V0V2hlbkF0TWF4Q2FwYWNpdHkpIHsKQEAgLTMxNyw3ICszMTgsNyBAQCBURVNUX0YoUnRwUGFj
a2V0SGlzdG9yeVRlc3QsIFJlbW92ZXNPbGRlc3RQYWNrZXRXaGVuQXRNYXhDYXBhY2l0eSkgewog
ICB9CiAKICAgLy8gRmlyc3QgcGFja2V0IHNob3VsZCBzdGlsbCBiZSB0aGVyZS4KLSAgRVhQRUNU
X1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBF
Q1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBIaXN0
b3J5IGlzIGZ1bGwsIG9sZGVzdCBvbmUgc2hvdWxkIGJlIG92ZXJ3cml0dGVuLgogICBzdGQ6OnVu
aXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXQgPQpAQCAtMzI2LDggKzMyNyw4IEBAIFRF
U1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgUmVtb3Zlc09sZGVzdFBhY2tldFdoZW5BdE1heENh
cGFjaXR5KSB7CiAgICAgICAgICAgICAgICAgICAgICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNl
Y29uZHMoKSk7CiAKICAgLy8gT2xkZXN0IHBhY2tldCBzaG91bGQgYmUgZ29uZSwgYnV0IHBhY2tl
dCBhZnRlciB0aGFuIG9uZSBzdGlsbCBwcmVzZW50LgotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0
UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5H
ZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAxLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0Uo
aGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CisgIEVYUEVDVF9UUlVFKGhpc3Rf
LkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSArIDEpKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tl
dEhpc3RvcnlUZXN0LCBEb250UmVtb3ZlVW5zZW50UGFja2V0cykgewpAQCAtMzQzLDI1ICszNDQs
MjUgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBEb250UmVtb3ZlVW5zZW50UGFja2V0
cykgewogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhSdHBQYWNrZXRIaXN0
b3J5OjprTWluUGFja2V0RHVyYXRpb25Ncyk7CiAKICAgLy8gRmlyc3QgcGFja2V0IHNob3VsZCBz
dGlsbCBiZSB0aGVyZS4KLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0
U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3Rh
cnRTZXFOdW0pKTsKIAogICAvLyBIaXN0b3J5IGlzIGZ1bGwsIGJ1dCBvbGQgcGFja2V0cyBub3Qg
c2VudCwgc28gYWxsb3cgZXhwYW5zaW9uLgogICBoaXN0Xy5QdXRSdHBQYWNrZXQoQ3JlYXRlUnRw
UGFja2V0KFRvMTZ1KGtTdGFydFNlcU51bSArIGtNYXhOdW1QYWNrZXRzKSksCiAgICAgICAgICAg
ICAgICAgICAgICBrQWxsb3dSZXRyYW5zbWlzc2lvbiwgZmFrZV9jbG9ja18uVGltZUluTWlsbGlz
ZWNvbmRzKCkpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFO
dW0sIGZhbHNlKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNl
cU51bSkpOwogCiAgIC8vIFNldCBhbGwgcGFja2V0IGFzIHNlbnQgYW5kIGFkdmFuY2UgdGltZSBw
YXN0IG1pbiBwYWNrZXQgZHVyYXRpb24gdGltZSwKICAgLy8gb3RoZXJ3aXNlIHBhY2tldHMgdGls
bCBzdGlsbCBiZSBwcmV2ZW50ZWQgZnJvbSBiZWluZyByZW1vdmVkLgogICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8PSBrTWF4TnVtUGFja2V0czsgKytpKSB7Ci0gICAgRVhQRUNUX1RSVUUoaGlzdF8u
R2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoVG8xNnUoa1N0YXJ0U2VxTnVtICsgaSksIGZhbHNlKSk7
CisgICAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoVG8xNnUoa1N0
YXJ0U2VxTnVtICsgaSkpKTsKICAgfQogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vj
b25kcyhSdHBQYWNrZXRIaXN0b3J5OjprTWluUGFja2V0RHVyYXRpb25Ncyk7CiAgIC8vIEFkZCBh
IG5ldyBwYWNrZXQsIHRoaXMgbWVhbnMgdGhlIHR3byBvbGRlc3Qgb25lcyB3aWxsIGJlIGN1bGxl
ZC4KICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChUbzE2dShrU3RhcnRTZXFO
dW0gKyBrTWF4TnVtUGFja2V0cyArIDEpKSwKICAgICAgICAgICAgICAgICAgICAgIGtBbGxvd1Jl
dHJhbnNtaXNzaW9uLCBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Ci0gIEVYUEVD
VF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7Ci0gIEVY
UEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAxLCBmYWxzZSkp
OwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShUbzE2dShrU3RhcnRTZXFOdW0g
KyAyKSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFy
dFNlcU51bSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2Vx
TnVtICsgMSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShUbzE2dShrU3Rh
cnRTZXFOdW0gKyAyKSkpOwogfQogCiBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIERvbnRS
ZW1vdmVUb29SZWNlbnRseVRyYW5zbWl0dGVkUGFja2V0cykgewpAQCAtMzc4LDE1ICszNzksMTUg
QEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBEb250UmVtb3ZlVG9vUmVjZW50bHlUcmFu
c21pdHRlZFBhY2tldHMpIHsKICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChr
U3RhcnRTZXFOdW0gKyAxKSwga0FsbG93UmV0cmFuc21pc3Npb24sCiAgICAgICAgICAgICAgICAg
ICAgICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgIC8vIEZpcnN0IHBhY2tl
dCBzaG91bGQgc3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0
YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0
U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQWR2YW5jZSB0aW1lIHRvIHdoZXJlIHBhY2tl
dCB3aWxsIGJlIGVsaWdpYmxlIGZvciByZW1vdmFsIGFuZCB0cnkgYWdhaW4uCiAgIGZha2VfY2xv
Y2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEpOwogICBoaXN0Xy5QdXRSdHBQYWNrZXQoQ3Jl
YXRlUnRwUGFja2V0KFRvMTZ1KGtTdGFydFNlcU51bSArIDIpKSwKICAgICAgICAgICAgICAgICAg
ICAgIGtBbGxvd1JldHJhbnNtaXNzaW9uLCBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMo
KSk7CiAgIC8vIEZpcnN0IHBhY2tldCBzaG91bGQgbm8gYmUgZ29uZSwgYnV0IG5leHQgb25lIHN0
aWxsIHRoZXJlLgotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2Vx
TnVtLCBmYWxzZSkpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRT
ZXFOdW0gKyAxLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUo
a1N0YXJ0U2VxTnVtKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFy
dFNlcU51bSArIDEpKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBEb250UmVt
b3ZlVG9vUmVjZW50bHlUcmFuc21pdHRlZFBhY2tldHNIaWdoUnR0KSB7CkBAIC00MDcsMTUgKzQw
OCwxNSBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIERvbnRSZW1vdmVUb29SZWNlbnRs
eVRyYW5zbWl0dGVkUGFja2V0c0hpZ2hSdHQpIHsKICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0
ZVJ0cFBhY2tldChrU3RhcnRTZXFOdW0gKyAxKSwga0FsbG93UmV0cmFuc21pc3Npb24sCiAgICAg
ICAgICAgICAgICAgICAgICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgIC8v
IEZpcnN0IHBhY2tldCBzaG91bGQgc3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVDVF9UUlVFKGhpc3Rf
LkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlz
dF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQWR2YW5jZSB0aW1lIHRv
IHdoZXJlIHBhY2tldCB3aWxsIGJlIGVsaWdpYmxlIGZvciByZW1vdmFsIGFuZCB0cnkgYWdhaW4u
CiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEpOwogICBoaXN0Xy5QdXRS
dHBQYWNrZXQoQ3JlYXRlUnRwUGFja2V0KFRvMTZ1KGtTdGFydFNlcU51bSArIDIpKSwKICAgICAg
ICAgICAgICAgICAgICAgIGtBbGxvd1JldHJhbnNtaXNzaW9uLCBmYWtlX2Nsb2NrXy5UaW1lSW5N
aWxsaXNlY29uZHMoKSk7CiAgIC8vIEZpcnN0IHBhY2tldCBzaG91bGQgbm8gYmUgZ29uZSwgYnV0
IG5leHQgb25lIHN0aWxsIHRoZXJlLgotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3Rh
dGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRT
dGF0ZShrU3RhcnRTZXFOdW0gKyAxLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0
UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tl
dFN0YXRlKGtTdGFydFNlcU51bSArIDEpKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlU
ZXN0LCBSZW1vdmVzT2xkV2l0aEN1bGxpbmcpIHsKQEAgLTQzMSwxNCArNDMyLDE0IEBAIFRFU1Rf
RihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgUmVtb3Zlc09sZFdpdGhDdWxsaW5nKSB7CiAgIGZha2Vf
Y2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtNYXhQYWNrZXREdXJhdGlvbk1zIC0gMSk7
CiAKICAgLy8gRmlyc3QgcGFja2V0IHNob3VsZCBzdGlsbCBiZSB0aGVyZS4KLSAgRVhQRUNUX1RS
VUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1Rf
VFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBBZHZhbmNl
IHRvIHdoZXJlIHBhY2tldCBjYW4gYmUgY3VsbGVkLCBldmVuIGlmIGJ1ZmZlciBpcyBub3QgZnVs
bC4KICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMSk7CiAgIGhpc3RfLlB1
dFJ0cFBhY2tldChDcmVhdGVSdHBQYWNrZXQoa1N0YXJ0U2VxTnVtICsgMSksIGtBbGxvd1JldHJh
bnNtaXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlz
ZWNvbmRzKCkpOwogCi0gIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRT
ZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3Rh
cnRTZXFOdW0pKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBSZW1vdmVzT2xk
V2l0aEN1bGxpbmdIaWdoUnR0KSB7CkBAIC00NTcsMTQgKzQ1OCwxNCBAQCBURVNUX0YoUnRwUGFj
a2V0SGlzdG9yeVRlc3QsIFJlbW92ZXNPbGRXaXRoQ3VsbGluZ0hpZ2hSdHQpIHsKICAgZmFrZV9j
bG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa01heFBhY2tldER1cmF0aW9uTXMgLSAxKTsK
IAogICAvLyBGaXJzdCBwYWNrZXQgc2hvdWxkIHN0aWxsIGJlIHRoZXJlLgotICBFWFBFQ1RfVFJV
RShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9U
UlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOwogCiAgIC8vIEFkdmFuY2Ug
dG8gd2hlcmUgcGFja2V0IGNhbiBiZSBjdWxsZWQsIGV2ZW4gaWYgYnVmZmVyIGlzIG5vdCBmdWxs
LgogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxKTsKICAgaGlzdF8uUHV0
UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChrU3RhcnRTZXFOdW0gKyAxKSwga0FsbG93UmV0cmFu
c21pc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNl
Y29uZHMoKSk7CiAKLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNl
cU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFy
dFNlcU51bSkpOwogfQogCiBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIEdldEJlc3RGaXR0
aW5nUGFja2V0KSB7CkBAIC01MDMsNyArNTA0LDcgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlU
ZXN0LAogICBBU1NFUlRfVEhBVChwYWNrZXQsIDo6dGVzdGluZzo6Tm90TnVsbCgpKTsKIAogICAv
LyBTZW5kIHRoZSBwYWNrZXQgYW5kIGFkdmFuY2UgdGltZSBwYXN0IHdoZXJlIHBhY2tldCBleHBp
cmVzLgotICBBU1NFUlRfVEhBVChoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRT
ZXFOdW0sIGZhbHNlKSwKKyAgQVNTRVJUX1RIQVQoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRp
bWUoa1N0YXJ0U2VxTnVtKSwKICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpOb3ROdWxsKCkpOwog
ICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygKICAgICAgIFJ0cFBhY2tldEhp
c3Rvcnk6OmtQYWNrZXRDdWxsaW5nRGVsYXlGYWN0b3IgKgpAQCAtNTEzLDcgKzUxNCw3IEBAIFRF
U1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwKICAgcGFja2V0LT5TZXRQYXlsb2FkU2l6ZSgxMDAp
OwogICBoaXN0Xy5QdXRSdHBQYWNrZXQoc3RkOjptb3ZlKHBhY2tldCksIGtBbGxvd1JldHJhbnNt
aXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNv
bmRzKCkpOwotICBBU1NFUlRfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVt
LCBmYWxzZSkpOworICBBU1NFUlRfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2Vx
TnVtKSk7CiAKICAgYXV0byBiZXN0X3BhY2tldCA9IGhpc3RfLkdldEJlc3RGaXR0aW5nUGFja2V0
KHRhcmdldF9wYWNrZXRfc2l6ZSArIDIpOwogICBBU1NFUlRfVEhBVChiZXN0X3BhY2tldCwgOjp0
ZXN0aW5nOjpOb3ROdWxsKCkpOwpAQCAtNTczLDcgKzU3NCw3IEBAIFRFU1RfRihSdHBQYWNrZXRI
aXN0b3J5VGVzdCwKICAgaGlzdF8uUHV0UnRwUGFja2V0KHN0ZDo6bW92ZShwYWNrZXQpLCBrRG9u
dFJldHJhbnNtaXQsCiAgICAgICAgICAgICAgICAgICAgICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxs
aXNlY29uZHMoKSk7CiAgIEVYUEVDVF9USEFUKGhpc3RfLkdldEJlc3RGaXR0aW5nUGFja2V0KDUw
KSwgOjp0ZXN0aW5nOjpJc051bGwoKSk7Ci0gIEVYUEVDVF9USEFUKGhpc3RfLkdldFBhY2tldEFu
ZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSwgZmFsc2UpLAorICBFWFBFQ1RfVEhBVChoaXN0Xy5H
ZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0pLAogICAgICAgICAgICAgICA6OnRl
c3Rpbmc6Ok5vdE51bGwoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRf
cmVjZWl2ZWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmNjCmluZGV4IGM4ZGVi
OTlkOTBlNTU4NmZhNGM0MTUyNWRmNGFkZjdmOTU1MjRkZDMuLmY4MGZhZDY4ZTBkMzI2ZDZlZmZl
YjU1OTVhMjQwZjI0MTczYTk4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVj
ZWl2ZWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5jYwpAQCAtMTAsNiAr
MTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9y
ZWNlaXZlZC5oIgogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNp
bmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
aGVhZGVyX2V4dGVuc2lvbnMuaCIKQEAgLTY3LDYgKzY5LDcgQEAgdm9pZCBSdHBQYWNrZXRSZWNl
aXZlZDo6R2V0SGVhZGVyKFJUUEhlYWRlciogaGVhZGVyKSBjb25zdCB7CiAgIEdldEV4dGVuc2lv
bjxSZXBhaXJlZFJ0cFN0cmVhbUlkPigmaGVhZGVyLT5leHRlbnNpb24ucmVwYWlyZWRfc3RyZWFt
X2lkKTsKICAgR2V0RXh0ZW5zaW9uPFJ0cE1pZD4oJmhlYWRlci0+ZXh0ZW5zaW9uLm1pZCk7CiAg
IEdldEV4dGVuc2lvbjxQbGF5b3V0RGVsYXlMaW1pdHM+KCZoZWFkZXItPmV4dGVuc2lvbi5wbGF5
b3V0X2RlbGF5KTsKKyAgaGVhZGVyLT5leHRlbnNpb24uY29sb3Jfc3BhY2UgPSBHZXRFeHRlbnNp
b248Q29sb3JTcGFjZUV4dGVuc2lvbj4oKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X3BhY2tldF9yZWNlaXZlZC5oCmluZGV4IDg2OTAwMzEwZTQ5ZTMxOThlOWU0OTEyNWQzNWIzOGE2
NzA4NTg4NTEuLjU2NmIxMTZhMTBhNjEzYzI0NjA5M2YzNzkyOWJkZmQzZDYxNTlmN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
cGFja2V0X3JlY2VpdmVkLmgKQEAgLTEwLDkgKzEwLDExIEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQ
X1JUQ1BfU09VUkNFX1JUUF9QQUNLRVRfUkVDRUlWRURfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBf
UlRDUF9TT1VSQ0VfUlRQX1BBQ0tFVF9SRUNFSVZFRF9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJ
TlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUg
ImFwaS9ydHBfaGVhZGVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9wYWNrZXQuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9udHBfdGltZS5o
IgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfcGFja2V0X3RvX3NlbmQuY2MKaW5kZXggMDE1M2JiZTczYWMyMjllZDM0MDA3MjhmNWMw
YmUwNjJiMmQwMWQ5My4uYjU1ZTc0YWFmMDFmODA3ZGQyOTc1ODUyMWEyM2U4ZGU5ZTMwZmQ5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9wYWNrZXRfdG9fc2VuZC5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgiCiAKKyNpbmNsdWRlIDxj
c3RkaW50PgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogUnRwUGFja2V0VG9TZW5kOjpSdHBQYWNr
ZXRUb1NlbmQoY29uc3QgRXh0ZW5zaW9uTWFuYWdlciogZXh0ZW5zaW9ucykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19z
ZW5kLmgKaW5kZXggMWVkN2RkYTQ3ODI2OTc3MjA0N2ViNjcwZjNhODdiNDNkMjllZjdlYS4uNTZi
MTAyNGEwNTlkN2FjNWJkYWFlMWQzZDBiMjIzMDNmNGNjZGYyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX3BhY2tldF90b19zZW5kLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5k
LmgKQEAgLTEwLDkgKzEwLDEyIEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JU
UF9QQUNLRVRfVE9fU0VORF9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBf
UEFDS0VUX1RPX1NFTkRfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGlu
dC5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisj
aW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3RpbWluZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXQuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X3BhY2tldF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdW5pdHRlc3QuY2MKaW5k
ZXggMTI1MDAwZDJkYzk0ZWQ0YmUxNzg2MmUwNGIyNDQwNmJmM2QyNzQ3Yy4uYjFjMGU0MjUyNWVh
ZTUyNjc3YzBmODBhMGNjZjY0MTcxNDU5ZTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3Bh
Y2tldF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3VuaXR0ZXN0LmNjCkBA
IC0xOSw2ICsxOSw3IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CiAKK3VzaW5n
IDo6dGVzdGluZzo6RWFjaDsKIHVzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmU7CiB1c2luZyA6
OnRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXk7CiB1c2luZyA6OnRlc3Rpbmc6OklzRW1wdHk7CkBA
IC0xODQsNiArMTg1LDUyIEBAIGNvbnN0ZXhwciB1aW50OF90IGtQYWNrZXRXaXRoTGVnYWN5VGlt
aW5nRXh0ZW5zaW9uW10gPSB7CiAgICAgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwKICAgICAweDAw
LCAweDAwLCAweDAwLCAweDAwfTsKIC8vIGNsYW5nLWZvcm1hdCBvbgorCitIZHJNZXRhZGF0YSBD
cmVhdGVUZXN0SGRyTWV0YWRhdGEoKSB7CisgIC8vIFJhbmRvbSBidXQgcmVhc29uYWJsZSBIRFIg
bWV0YWRhdGEuCisgIEhkck1ldGFkYXRhIGhkcl9tZXRhZGF0YTsKKyAgaGRyX21ldGFkYXRhLm1h
c3RlcmluZ19tZXRhZGF0YS5sdW1pbmFuY2VfbWF4ID0gMjAwMC4wOworICBoZHJfbWV0YWRhdGEu
bWFzdGVyaW5nX21ldGFkYXRhLmx1bWluYW5jZV9taW4gPSAyLjAwMDE7CisgIGhkcl9tZXRhZGF0
YS5tYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9yLnggPSAwLjMwMDM7CisgIGhkcl9tZXRhZGF0
YS5tYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9yLnkgPSAwLjQwMDQ7CisgIGhkcl9tZXRhZGF0
YS5tYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9nLnggPSAwLjMyMDE7CisgIGhkcl9tZXRhZGF0
YS5tYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9nLnkgPSAwLjQ2MDQ7CisgIGhkcl9tZXRhZGF0
YS5tYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9iLnggPSAwLjM0MDk7CisgIGhkcl9tZXRhZGF0
YS5tYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9iLnkgPSAwLjQ5MDc7CisgIGhkcl9tZXRhZGF0
YS5tYXN0ZXJpbmdfbWV0YWRhdGEud2hpdGVfcG9pbnQueCA9IDAuNDEwMzsKKyAgaGRyX21ldGFk
YXRhLm1hc3RlcmluZ19tZXRhZGF0YS53aGl0ZV9wb2ludC55ID0gMC40ODA2OworICBoZHJfbWV0
YWRhdGEubWF4X2NvbnRlbnRfbGlnaHRfbGV2ZWwgPSAyMzQ1OworICBoZHJfbWV0YWRhdGEubWF4
X2ZyYW1lX2F2ZXJhZ2VfbGlnaHRfbGV2ZWwgPSAxNzg5OworICByZXR1cm4gaGRyX21ldGFkYXRh
OworfQorCitDb2xvclNwYWNlIENyZWF0ZVRlc3RDb2xvclNwYWNlKGJvb2wgd2l0aF9oZHJfbWV0
YWRhdGEpIHsKKyAgQ29sb3JTcGFjZSBjb2xvcl9zcGFjZSgKKyAgICAgIENvbG9yU3BhY2U6OlBy
aW1hcnlJRDo6a0JUNzA5LCBDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjprR0FNTUEyMiwKKyAgICAg
IENvbG9yU3BhY2U6Ok1hdHJpeElEOjprU01QVEUyMDg1LCBDb2xvclNwYWNlOjpSYW5nZUlEOjpr
RnVsbCk7CisgIGlmICh3aXRoX2hkcl9tZXRhZGF0YSkgeworICAgIEhkck1ldGFkYXRhIGhkcl9t
ZXRhZGF0YSA9IENyZWF0ZVRlc3RIZHJNZXRhZGF0YSgpOworICAgIGNvbG9yX3NwYWNlLnNldF9o
ZHJfbWV0YWRhdGEoJmhkcl9tZXRhZGF0YSk7CisgIH0KKyAgcmV0dXJuIGNvbG9yX3NwYWNlOwor
fQorCit2b2lkIFRlc3RDcmVhdGVBbmRQYXJzZUNvbG9yU3BhY2VFeHRlbnNpb24oYm9vbCB3aXRo
X2hkcl9tZXRhZGF0YSkgeworICAvLyBDcmVhdGUgcGFja2V0IHdpdGggZXh0ZW5zaW9uLgorICBS
dHBQYWNrZXQ6OkV4dGVuc2lvbk1hbmFnZXIgZXh0ZW5zaW9ucygvKmV4dG1hcC1hbGxvdy1taXhl
ZD0qL3RydWUpOworICBleHRlbnNpb25zLlJlZ2lzdGVyPENvbG9yU3BhY2VFeHRlbnNpb24+KDEp
OworICBSdHBQYWNrZXQgcGFja2V0KCZleHRlbnNpb25zKTsKKyAgY29uc3QgQ29sb3JTcGFjZSBr
Q29sb3JTcGFjZSA9IENyZWF0ZVRlc3RDb2xvclNwYWNlKHdpdGhfaGRyX21ldGFkYXRhKTsKKyAg
RVhQRUNUX1RSVUUocGFja2V0LlNldEV4dGVuc2lvbjxDb2xvclNwYWNlRXh0ZW5zaW9uPihrQ29s
b3JTcGFjZSkpOworICBwYWNrZXQuU2V0UGF5bG9hZFNpemUoNDIpOworCisgIC8vIFJlYWQgcGFj
a2V0IHdpdGggdGhlIGV4dGVuc2lvbi4KKyAgUnRwUGFja2V0UmVjZWl2ZWQgcGFyc2VkKCZleHRl
bnNpb25zKTsKKyAgRVhQRUNUX1RSVUUocGFyc2VkLlBhcnNlKHBhY2tldC5CdWZmZXIoKSkpOwor
ICBDb2xvclNwYWNlIHBhcnNlZF9jb2xvcl9zcGFjZTsKKyAgRVhQRUNUX1RSVUUocGFyc2VkLkdl
dEV4dGVuc2lvbjxDb2xvclNwYWNlRXh0ZW5zaW9uPigmcGFyc2VkX2NvbG9yX3NwYWNlKSk7Cisg
IEVYUEVDVF9FUShrQ29sb3JTcGFjZSwgcGFyc2VkX2NvbG9yX3NwYWNlKTsKK30KIH0gIC8vIG5h
bWVzcGFjZQogCiBURVNUKFJ0cFBhY2tldFRlc3QsIENyZWF0ZU1pbmltdW0pIHsKQEAgLTIyNSw4
ICsyNzIsNyBAQCBURVNUKFJ0cFBhY2tldFRlc3QsIENyZWF0ZVdpdGgyRXh0ZW5zaW9ucykgewog
fQogCiBURVNUKFJ0cFBhY2tldFRlc3QsIENyZWF0ZVdpdGhUd29CeXRlSGVhZGVyRXh0ZW5zaW9u
Rmlyc3QpIHsKLSAgUnRwUGFja2V0VG9TZW5kOjpFeHRlbnNpb25NYW5hZ2VyIGV4dGVuc2lvbnM7
Ci0gIGV4dGVuc2lvbnMuU2V0TWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKHRydWUpOwor
ICBSdHBQYWNrZXRUb1NlbmQ6OkV4dGVuc2lvbk1hbmFnZXIgZXh0ZW5zaW9ucyh0cnVlKTsKICAg
ZXh0ZW5zaW9ucy5SZWdpc3RlcihrUnRwRXh0ZW5zaW9uVHJhbnNtaXNzaW9uVGltZU9mZnNldCwK
ICAgICAgICAgICAgICAgICAgICAgICBrVHJhbnNtaXNzaW9uT2Zmc2V0RXh0ZW5zaW9uSWQpOwog
ICBleHRlbnNpb25zLlJlZ2lzdGVyKGtSdHBFeHRlbnNpb25BdWRpb0xldmVsLCBrQXVkaW9MZXZl
bEV4dGVuc2lvbklkKTsKQEAgLTI0Nyw4ICsyOTMsNyBAQCBURVNUKFJ0cFBhY2tldFRlc3QsIENy
ZWF0ZVdpdGhUd29CeXRlSGVhZGVyRXh0ZW5zaW9uRmlyc3QpIHsKIAogVEVTVChSdHBQYWNrZXRU
ZXN0LCBDcmVhdGVXaXRoVHdvQnl0ZUhlYWRlckV4dGVuc2lvbkxhc3QpIHsKICAgLy8gVGhpcyB0
ZXN0IHdpbGwgdHJpZ2dlciBSdHBQYWNrZXQ6OlByb21vdGVUb1R3b0J5dGVIZWFkZXJFeHRlbnNp
b24oKS4KLSAgUnRwUGFja2V0VG9TZW5kOjpFeHRlbnNpb25NYW5hZ2VyIGV4dGVuc2lvbnM7Ci0g
IGV4dGVuc2lvbnMuU2V0TWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKHRydWUpOworICBS
dHBQYWNrZXRUb1NlbmQ6OkV4dGVuc2lvbk1hbmFnZXIgZXh0ZW5zaW9ucyh0cnVlKTsKICAgZXh0
ZW5zaW9ucy5SZWdpc3RlcihrUnRwRXh0ZW5zaW9uVHJhbnNtaXNzaW9uVGltZU9mZnNldCwKICAg
ICAgICAgICAgICAgICAgICAgICBrVHJhbnNtaXNzaW9uT2Zmc2V0RXh0ZW5zaW9uSWQpOwogICBl
eHRlbnNpb25zLlJlZ2lzdGVyKGtSdHBFeHRlbnNpb25BdWRpb0xldmVsLCBrQXVkaW9MZXZlbEV4
dGVuc2lvbklkKTsKQEAgLTM2NywxMSArNDEyLDEwIEBAIFRFU1QoUnRwUGFja2V0VGVzdCwgQ3Jl
YXRlUHVyZVBhZGRpbmcpIHsKICAgcGFja2V0LlNldFNlcXVlbmNlTnVtYmVyKGtTZXFOdW0pOwog
ICBwYWNrZXQuU2V0VGltZXN0YW1wKGtUaW1lc3RhbXApOwogICBwYWNrZXQuU2V0U3NyYyhrU3Ny
Yyk7Ci0gIFJhbmRvbSByYW5kb20oMHgxMjM0NTY3ODkpOwogCiAgIEVYUEVDVF9MVChwYWNrZXQu
c2l6ZSgpLCBwYWNrZXQuY2FwYWNpdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShwYWNrZXQuU2V0UGFk
ZGluZyhrUGFkZGluZ1NpemUgKyAxLCAmcmFuZG9tKSk7Ci0gIEVYUEVDVF9UUlVFKHBhY2tldC5T
ZXRQYWRkaW5nKGtQYWRkaW5nU2l6ZSwgJnJhbmRvbSkpOworICBFWFBFQ1RfRkFMU0UocGFja2V0
LlNldFBhZGRpbmcoa1BhZGRpbmdTaXplICsgMSkpOworICBFWFBFQ1RfVFJVRShwYWNrZXQuU2V0
UGFkZGluZyhrUGFkZGluZ1NpemUpKTsKICAgRVhQRUNUX0VRKHBhY2tldC5zaXplKCksIHBhY2tl
dC5jYXBhY2l0eSgpKTsKIH0KIApAQCAtMzgzLDEzICs0MjcsNDggQEAgVEVTVChSdHBQYWNrZXRU
ZXN0LCBDcmVhdGVVbmFsaWduZWRQYWRkaW5nKSB7CiAgIHBhY2tldC5TZXRUaW1lc3RhbXAoa1Rp
bWVzdGFtcCk7CiAgIHBhY2tldC5TZXRTc3JjKGtTc3JjKTsKICAgcGFja2V0LlNldFBheWxvYWRT
aXplKGtQYXlsb2FkU2l6ZSk7Ci0gIFJhbmRvbSByKDB4MTIzNDU2Nzg5KTsKIAogICBFWFBFQ1Rf
TFQocGFja2V0LnNpemUoKSwgcGFja2V0LmNhcGFjaXR5KCkpOwotICBFWFBFQ1RfVFJVRShwYWNr
ZXQuU2V0UGFkZGluZyhrTWF4UGFkZGluZ1NpemUsICZyKSk7CisgIEVYUEVDVF9UUlVFKHBhY2tl
dC5TZXRQYWRkaW5nKGtNYXhQYWRkaW5nU2l6ZSkpOwogICBFWFBFQ1RfRVEocGFja2V0LnNpemUo
KSwgcGFja2V0LmNhcGFjaXR5KCkpOwogfQogCitURVNUKFJ0cFBhY2tldFRlc3QsIFdyaXRlc1Bh
ZGRpbmdTaXplVG9MYXN0Qnl0ZSkgeworICBjb25zdCBzaXplX3Qga1BhZGRpbmdTaXplID0gNTsK
KyAgUnRwUGFja2V0IHBhY2tldDsKKworICBFWFBFQ1RfVFJVRShwYWNrZXQuU2V0UGFkZGluZyhr
UGFkZGluZ1NpemUpKTsKKyAgRVhQRUNUX0VRKHBhY2tldC5kYXRhKClbcGFja2V0LnNpemUoKSAt
IDFdLCBrUGFkZGluZ1NpemUpOworfQorCitURVNUKFJ0cFBhY2tldFRlc3QsIFVzZXNaZXJvc0Zv
clBhZGRpbmcpIHsKKyAgY29uc3Qgc2l6ZV90IGtQYWRkaW5nU2l6ZSA9IDU7CisgIFJ0cFBhY2tl
dCBwYWNrZXQ7CisKKyAgRVhQRUNUX1RSVUUocGFja2V0LlNldFBhZGRpbmcoa1BhZGRpbmdTaXpl
KSk7CisgIEVYUEVDVF9USEFUKHJ0Yzo6TWFrZUFycmF5VmlldyhwYWNrZXQuZGF0YSgpICsgMTIs
IGtQYWRkaW5nU2l6ZSAtIDEpLAorICAgICAgICAgICAgICBFYWNoKDApKTsKK30KKworVEVTVChS
dHBQYWNrZXRUZXN0LCBDcmVhdGVPbmVCeXRlUGFkZGluZykgeworICBzaXplX3Qga1BheWxvYWRT
aXplID0gMTIzOworICBSdHBQYWNrZXQgcGFja2V0KG51bGxwdHIsIDEyICsga1BheWxvYWRTaXpl
ICsgMSk7CisgIHBhY2tldC5TZXRQYXlsb2FkU2l6ZShrUGF5bG9hZFNpemUpOworCisgIEVYUEVD
VF9UUlVFKHBhY2tldC5TZXRQYWRkaW5nKDEpKTsKKworICBFWFBFQ1RfRVEocGFja2V0LnNpemUo
KSwgMTIgKyBrUGF5bG9hZFNpemUgKyAxKTsKKyAgRVhQRUNUX0VRKHBhY2tldC5wYWRkaW5nX3Np
emUoKSwgMXUpOworfQorCitURVNUKFJ0cFBhY2tldFRlc3QsIEZhaWxzVG9BZGRQYWRkaW5nV2l0
aG91dENhcGFjaXR5KSB7CisgIHNpemVfdCBrUGF5bG9hZFNpemUgPSAxMjM7CisgIFJ0cFBhY2tl
dCBwYWNrZXQobnVsbHB0ciwgMTIgKyBrUGF5bG9hZFNpemUpOworICBwYWNrZXQuU2V0UGF5bG9h
ZFNpemUoa1BheWxvYWRTaXplKTsKKworICBFWFBFQ1RfRkFMU0UocGFja2V0LlNldFBhZGRpbmco
MSkpOworfQorCiBURVNUKFJ0cFBhY2tldFRlc3QsIFBhcnNlTWluaW11bSkgewogICBSdHBQYWNr
ZXRSZWNlaXZlZCBwYWNrZXQ7CiAgIEVYUEVDVF9UUlVFKHBhY2tldC5QYXJzZShrTWluaW11bVBh
Y2tldCwgc2l6ZW9mKGtNaW5pbXVtUGFja2V0KSkpOwpAQCAtNDMzLDYgKzUxMiwyMyBAQCBURVNU
KFJ0cFBhY2tldFRlc3QsIFBhcnNlV2l0aEV4dGVuc2lvbikgewogICBFWFBFQ1RfRVEoMHUsIHBh
Y2tldC5wYWRkaW5nX3NpemUoKSk7CiB9CiAKK1RFU1QoUnRwUGFja2V0VGVzdCwgR2V0RXh0ZW5z
aW9uV2l0aG91dFBhcmFtZXRlcnNSZXR1cm5zT3B0aW9uYWxWYWx1ZSkgeworICBSdHBQYWNrZXQ6
OkV4dGVuc2lvbk1hbmFnZXIgZXh0ZW5zaW9uczsKKyAgZXh0ZW5zaW9ucy5SZWdpc3RlcjxUcmFu
c21pc3Npb25PZmZzZXQ+KGtUcmFuc21pc3Npb25PZmZzZXRFeHRlbnNpb25JZCk7CisgIGV4dGVu
c2lvbnMuUmVnaXN0ZXI8UnRwU3RyZWFtSWQ+KGtSdHBTdHJlYW1JZEV4dGVuc2lvbklkKTsKKwor
ICBSdHBQYWNrZXRSZWNlaXZlZCBwYWNrZXQoJmV4dGVuc2lvbnMpOworICBFWFBFQ1RfVFJVRShw
YWNrZXQuUGFyc2Uoa1BhY2tldFdpdGhUTywgc2l6ZW9mKGtQYWNrZXRXaXRoVE8pKSk7CisKKyAg
YXV0byB0aW1lX29mZnNldCA9IHBhY2tldC5HZXRFeHRlbnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0
PigpOworICBzdGF0aWNfYXNzZXJ0KAorICAgICAgc3RkOjppc19zYW1lPGRlY2x0eXBlKHRpbWVf
b2Zmc2V0KSwKKyAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxUcmFuc21pc3Npb25P
ZmZzZXQ6OnZhbHVlX3R5cGU+Pjo6dmFsdWUsCisgICAgICAiIik7CisgIEVYUEVDVF9FUSh0aW1l
X29mZnNldCwga1RpbWVPZmZzZXQpOworICBFWFBFQ1RfRkFMU0UocGFja2V0LkdldEV4dGVuc2lv
bjxSdHBTdHJlYW1JZD4oKS5oYXNfdmFsdWUoKSk7Cit9CisKIFRFU1QoUnRwUGFja2V0VGVzdCwg
R2V0UmF3RXh0ZW5zaW9uV2hlblByZXNlbnQpIHsKICAgY29uc3RleHByIHVpbnQ4X3Qga1Jhd1Bh
Y2tldFtdID0gewogICAgICAgLy8gY29tbWVudCBmb3IgY2xhbmctZm9ybWF0IHRvIGFsaWduIGtS
YXdQYWNrZXQgbmljZXIuCkBAIC03NTEsNCArODQ3LDEyIEBAIFRFU1QoUnRwUGFja2V0VGVzdCwg
UGFyc2VMZWdhY3lUaW1pbmdGcmFtZUV4dGVuc2lvbikgewogICBFWFBFQ1RfRVEocmVjZWl2aWVk
X3RpbWluZy5mbGFncywgMCk7CiB9CiAKK1RFU1QoUnRwUGFja2V0VGVzdCwgQ3JlYXRlQW5kUGFy
c2VDb2xvclNwYWNlRXh0ZW5zaW9uKSB7CisgIFRlc3RDcmVhdGVBbmRQYXJzZUNvbG9yU3BhY2VF
eHRlbnNpb24oLyp3aXRoX2hkcl9tZXRhZGF0YT0qL3RydWUpOworfQorCitURVNUKFJ0cFBhY2tl
dFRlc3QsIENyZWF0ZUFuZFBhcnNlQ29sb3JTcGFjZUV4dGVuc2lvbldpdGhvdXRIZHJNZXRhZGF0
YSkgeworICBUZXN0Q3JlYXRlQW5kUGFyc2VDb2xvclNwYWNlRXh0ZW5zaW9uKC8qd2l0aF9oZHJf
bWV0YWRhdGE9Ki9mYWxzZSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9ydGNwX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsLmNj
CmluZGV4IDE3NWE5NGJlODAyMTYxZWYwNzc5OTYwYzU4YWRmMzBmMGU0NmNiZDEuLjBkMGNhOTYx
ODg4MDM3M2JkNGVmMTA2ODc0MzlkYmVhMjdiNjU5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9ydGNwX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbC5jYwpAQCAtMTEsMTIg
KzExLDE0IEBACiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1w
bC5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1
ZGUgPHV0aWxpdHk+CiAKLSNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2RscnIuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9jb25maWcuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKQEAgLTMxLDYg
KzMzLDggQEAgY29uc3QgaW50NjRfdCBrUnRwUnRjcE1heElkbGVUaW1lUHJvY2Vzc01zID0gNTsK
IGNvbnN0IGludDY0X3Qga1J0cFJ0Y3BSdHRQcm9jZXNzVGltZU1zID0gMTAwMDsKIGNvbnN0IGlu
dDY0X3Qga1J0cFJ0Y3BCaXRyYXRlUHJvY2Vzc1RpbWVNcyA9IDEwOwogY29uc3QgaW50NjRfdCBr
RGVmYXVsdEV4cGVjdGVkUmV0cmFuc21pc3Npb25UaW1lTXMgPSAxMjU7Citjb25zdGV4cHIgaW50
MzJfdCBrRGVmYXVsdFZpZGVvUmVwb3J0SW50ZXJ2YWwgPSAxMDAwOworY29uc3RleHByIGludDMy
X3Qga0RlZmF1bHRBdWRpb1JlcG9ydEludGVydmFsID0gNTAwMDsKIH0gIC8vIG5hbWVzcGFjZQog
CiBSdHBSdGNwOjpDb25maWd1cmF0aW9uOjpDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OwpAQCAt
NjIsNyArNjYsMTAgQEAgTW9kdWxlUnRwUnRjcEltcGw6Ok1vZHVsZVJ0cFJ0Y3BJbXBsKGNvbnN0
IENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgICAgICAgICAgICAgICAgY29uZmln
dXJhdGlvbi5ydGNwX3BhY2tldF90eXBlX2NvdW50ZXJfb2JzZXJ2ZXIsCiAgICAgICAgICAgICAg
ICAgICAgY29uZmlndXJhdGlvbi5ldmVudF9sb2csCiAgICAgICAgICAgICAgICAgICAgY29uZmln
dXJhdGlvbi5vdXRnb2luZ190cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgY29uZmlndXJh
dGlvbi5ydGNwX2ludGVydmFsX2NvbmZpZyksCisgICAgICAgICAgICAgICAgICAgY29uZmlndXJh
dGlvbi5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAg
PyBjb25maWd1cmF0aW9uLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zCisgICAgICAgICAgICAgICAg
ICAgICAgIDogKGNvbmZpZ3VyYXRpb24uYXVkaW8gPyBrRGVmYXVsdEF1ZGlvUmVwb3J0SW50ZXJ2
YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGtEZWZh
dWx0VmlkZW9SZXBvcnRJbnRlcnZhbCkpLAogICAgICAgcnRjcF9yZWNlaXZlcl8oY29uZmlndXJh
dGlvbi5jbG9jaywKICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucmVjZWl2ZXJf
b25seSwKICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucnRjcF9wYWNrZXRfdHlw
ZV9jb3VudGVyX29ic2VydmVyLApAQCAtNzAsNiArNzcsMTAgQEAgTW9kdWxlUnRwUnRjcEltcGw6
Ok1vZHVsZVJ0cFJ0Y3BJbXBsKGNvbnN0IENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAg
ICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLmludHJhX2ZyYW1lX2NhbGxiYWNrLAog
ICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi50cmFuc3BvcnRfZmVlZGJhY2tfY2Fs
bGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLmJpdHJhdGVfYWxsb2Nh
dGlvbl9vYnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucnRjcF9y
ZXBvcnRfaW50ZXJ2YWxfbXMgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb25maWd1
cmF0aW9uLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zCisgICAgICAgICAgICAgICAgICAgICAgICAg
OiAoY29uZmlndXJhdGlvbi5hdWRpbyA/IGtEZWZhdWx0QXVkaW9SZXBvcnRJbnRlcnZhbAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrRGVmYXVsdFZp
ZGVvUmVwb3J0SW50ZXJ2YWwpLAogICAgICAgICAgICAgICAgICAgICAgdGhpcyksCiAgICAgICBj
bG9ja18oY29uZmlndXJhdGlvbi5jbG9jayksCiAgICAgICBhdWRpb18oY29uZmlndXJhdGlvbi5h
dWRpbyksCkBAIC05OSw3ICsxMTAsOSBAQCBNb2R1bGVSdHBSdGNwSW1wbDo6TW9kdWxlUnRwUnRj
cEltcGwoY29uc3QgQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAgICAgY29uZmln
dXJhdGlvbi5zZW5kX3BhY2tldF9vYnNlcnZlciwKICAgICAgICAgY29uZmlndXJhdGlvbi5yZXRy
YW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXIsCiAgICAgICAgIGNvbmZpZ3VyYXRpb24ub3ZlcmhlYWRf
b2JzZXJ2ZXIsCi0gICAgICAgIGNvbmZpZ3VyYXRpb24ucG9wdWxhdGVfbmV0d29yazJfdGltZXN0
YW1wKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24ucG9wdWxhdGVfbmV0d29yazJfdGltZXN0YW1w
LAorICAgICAgICBjb25maWd1cmF0aW9uLmZyYW1lX2VuY3J5cHRvciwgY29uZmlndXJhdGlvbi5y
ZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24sCisgICAgICAgIGNvbmZpZ3VyYXRpb24uZXh0bWFwX2Fs
bG93X21peGVkKSk7CiAgICAgLy8gTWFrZSBzdXJlIHJ0Y3Agc2VuZGVyIHVzZSBzYW1lIHRpbWVz
dGFtcCBvZmZzZXQgYXMgcnRwIHNlbmRlci4KICAgICBydGNwX3NlbmRlcl8uU2V0VGltZXN0YW1w
T2Zmc2V0KHJ0cF9zZW5kZXJfLT5UaW1lc3RhbXBPZmZzZXQoKSk7CiAKQEAgLTE3NSwxMCArMTg4
LDkgQEAgdm9pZCBNb2R1bGVSdHBSdGNwSW1wbDo6UHJvY2VzcygpIHsKIAogICAgIC8vIFZlcmlm
eSByZWNlaXZlciByZXBvcnRzIGFyZSBkZWxpdmVyZWQgYW5kIHRoZSByZXBvcnRlZCBzZXF1ZW5j
ZSBudW1iZXIKICAgICAvLyBpcyBpbmNyZWFzaW5nLgotICAgIGludDY0X3QgcnRjcF9pbnRlcnZh
bCA9IFJ0Y3BSZXBvcnRJbnRlcnZhbCgpOwotICAgIGlmIChydGNwX3JlY2VpdmVyXy5SdGNwUnJU
aW1lb3V0KHJ0Y3BfaW50ZXJ2YWwpKSB7CisgICAgaWYgKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRp
bWVvdXQoKSkgewogICAgICAgUlRDX0xPR19GKExTX1dBUk5JTkcpIDw8ICJUaW1lb3V0OiBObyBS
VENQIFJSIHJlY2VpdmVkLiI7Ci0gICAgfSBlbHNlIGlmIChydGNwX3JlY2VpdmVyXy5SdGNwUnJT
ZXF1ZW5jZU51bWJlclRpbWVvdXQocnRjcF9pbnRlcnZhbCkpIHsKKyAgICB9IGVsc2UgaWYgKHJ0
Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dCgpKSB7CiAgICAgICBSVENf
TE9HX0YoTFNfV0FSTklORykgPDwgIlRpbWVvdXQ6IE5vIGluY3JlYXNlIGluIFJUQ1AgUlIgZXh0
ZW5kZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoaWdoZXN0IHNlcXVlbmNl
IG51bWJlci4iOwogICAgIH0KQEAgLTI1Myw2ICsyNjUsNyBAQCB2b2lkIE1vZHVsZVJ0cFJ0Y3BJ
bXBsOjpJbmNvbWluZ1J0Y3BQYWNrZXQoY29uc3QgdWludDhfdCogcnRjcF9wYWNrZXQsCiB9CiAK
IGludDMyX3QgTW9kdWxlUnRwUnRjcEltcGw6OlJlZ2lzdGVyU2VuZFBheWxvYWQoY29uc3QgQ29k
ZWNJbnN0JiB2b2ljZV9jb2RlYykgeworICBydGNwX3NlbmRlcl8uU2V0UnRwQ2xvY2tSYXRlKHZv
aWNlX2NvZGVjLnBsdHlwZSwgdm9pY2VfY29kZWMucGxmcmVxKTsKICAgcmV0dXJuIHJ0cF9zZW5k
ZXJfLT5SZWdpc3RlclBheWxvYWQoCiAgICAgICB2b2ljZV9jb2RlYy5wbG5hbWUsIHZvaWNlX2Nv
ZGVjLnBsdHlwZSwgdm9pY2VfY29kZWMucGxmcmVxLAogICAgICAgdm9pY2VfY29kZWMuY2hhbm5l
bHMsICh2b2ljZV9jb2RlYy5yYXRlIDwgMCkgPyAwIDogdm9pY2VfY29kZWMucmF0ZSk7CkBAIC0y
NjAsOCArMjczLDEwIEBAIGludDMyX3QgTW9kdWxlUnRwUnRjcEltcGw6OlJlZ2lzdGVyU2VuZFBh
eWxvYWQoY29uc3QgQ29kZWNJbnN0JiB2b2ljZV9jb2RlYykgewogCiB2b2lkIE1vZHVsZVJ0cFJ0
Y3BJbXBsOjpSZWdpc3RlclZpZGVvU2VuZFBheWxvYWQoaW50IHBheWxvYWRfdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBw
YXlsb2FkX25hbWUpIHsKLSAgUlRDX0NIRUNLX0VRKAotICAgICAgMCwgcnRwX3NlbmRlcl8tPlJl
Z2lzdGVyUGF5bG9hZChwYXlsb2FkX25hbWUsIHBheWxvYWRfdHlwZSwgOTAwMDAsIDAsIDApKTsK
KyAgcnRjcF9zZW5kZXJfLlNldFJ0cENsb2NrUmF0ZShwYXlsb2FkX3R5cGUsIGtWaWRlb1BheWxv
YWRUeXBlRnJlcXVlbmN5KTsKKyAgUlRDX0NIRUNLX0VRKDAsCisgICAgICAgICAgICAgICBydHBf
c2VuZGVyXy0+UmVnaXN0ZXJQYXlsb2FkKHBheWxvYWRfbmFtZSwgcGF5bG9hZF90eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVmlkZW9QYXlsb2FkVHlw
ZUZyZXF1ZW5jeSwgMCwgMCkpOwogfQogCiBpbnQzMl90IE1vZHVsZVJ0cFJ0Y3BJbXBsOjpEZVJl
Z2lzdGVyU2VuZFBheWxvYWQoY29uc3QgaW50OF90IHBheWxvYWRfdHlwZSkgewpAQCAtMzkyLDYg
KzQwNywxMSBAQCBib29sIE1vZHVsZVJ0cFJ0Y3BJbXBsOjpTZW5kaW5nTWVkaWEoKSBjb25zdCB7
CiAgIHJldHVybiBydHBfc2VuZGVyXyA/IHJ0cF9zZW5kZXJfLT5TZW5kaW5nTWVkaWEoKSA6IGZh
bHNlOwogfQogCit2b2lkIE1vZHVsZVJ0cFJ0Y3BJbXBsOjpTZXRBc1BhcnRPZkFsbG9jYXRpb24o
Ym9vbCBwYXJ0X29mX2FsbG9jYXRpb24pIHsKKyAgUlRDX0NIRUNLKHJ0cF9zZW5kZXJfKTsKKyAg
cnRwX3NlbmRlcl8tPlNldEFzUGFydE9mQWxsb2NhdGlvbihwYXJ0X29mX2FsbG9jYXRpb24pOwor
fQorCiBib29sIE1vZHVsZVJ0cFJ0Y3BJbXBsOjpTZW5kT3V0Z29pbmdEYXRhKAogICAgIEZyYW1l
VHlwZSBmcmFtZV90eXBlLAogICAgIGludDhfdCBwYXlsb2FkX3R5cGUsCkBAIC00MDIsNyArNDIy
LDcgQEAgYm9vbCBNb2R1bGVSdHBSdGNwSW1wbDo6U2VuZE91dGdvaW5nRGF0YSgKICAgICBjb25z
dCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uLAogICAgIGNvbnN0IFJUUFZp
ZGVvSGVhZGVyKiBydHBfdmlkZW9faGVhZGVyLAogICAgIHVpbnQzMl90KiB0cmFuc3BvcnRfZnJh
bWVfaWRfb3V0KSB7Ci0gIHJ0Y3Bfc2VuZGVyXy5TZXRMYXN0UnRwVGltZSh0aW1lX3N0YW1wLCBj
YXB0dXJlX3RpbWVfbXMpOworICBydGNwX3NlbmRlcl8uU2V0TGFzdFJ0cFRpbWUodGltZV9zdGFt
cCwgY2FwdHVyZV90aW1lX21zLCBwYXlsb2FkX3R5cGUpOwogICAvLyBNYWtlIHN1cmUgYW4gUlRD
UCByZXBvcnQgaXNuJ3QgcXVldWVkIGJlaGluZCBhIGtleSBmcmFtZS4KICAgaWYgKHJ0Y3Bfc2Vu
ZGVyXy5UaW1lVG9TZW5kUlRDUFJlcG9ydChrVmlkZW9GcmFtZUtleSA9PSBmcmFtZV90eXBlKSkg
ewogICAgIHJ0Y3Bfc2VuZGVyXy5TZW5kUlRDUChHZXRGZWVkYmFja1N0YXRlKCksIGtSdGNwUmVw
b3J0KTsKQEAgLTYwNCw2ICs2MjQsMTAgQEAgdm9pZCBNb2R1bGVSdHBSdGNwSW1wbDo6VW5zZXRS
ZW1iKCkgewogICBydGNwX3NlbmRlcl8uVW5zZXRSZW1iKCk7CiB9CiAKK3ZvaWQgTW9kdWxlUnRw
UnRjcEltcGw6OlNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsK
KyAgcnRwX3NlbmRlcl8tPlNldEV4dG1hcEFsbG93TWl4ZWQoZXh0bWFwX2FsbG93X21peGVkKTsK
K30KKwogaW50MzJfdCBNb2R1bGVSdHBSdGNwSW1wbDo6UmVnaXN0ZXJTZW5kUnRwSGVhZGVyRXh0
ZW5zaW9uKAogICAgIGNvbnN0IFJUUEV4dGVuc2lvblR5cGUgdHlwZSwKICAgICBjb25zdCB1aW50
OF90IGlkKSB7CkBAIC04NDMsMTMgKzg2Nyw2IEBAIHN0ZDo6dmVjdG9yPHJ0Y3A6OlRtbWJJdGVt
PiBNb2R1bGVSdHBSdGNwSW1wbDo6Qm91bmRpbmdTZXQoYm9vbCogdG1tYnJfb3duZXIpIHsKICAg
cmV0dXJuIHJ0Y3BfcmVjZWl2ZXJfLkJvdW5kaW5nU2V0KHRtbWJyX293bmVyKTsKIH0KIAotaW50
NjRfdCBNb2R1bGVSdHBSdGNwSW1wbDo6UnRjcFJlcG9ydEludGVydmFsKCkgewotICBpZiAoYXVk
aW9fKQotICAgIHJldHVybiBydGNwX3NlbmRlcl8uUnRjcEF1ZGlvUmVwb3J0SW52ZXJ2YWwoKTsK
LSAgZWxzZQotICAgIHJldHVybiBydGNwX3NlbmRlcl8uUnRjcFZpZGVvUmVwb3J0SW52ZXJ2YWwo
KTsKLX0KLQogdm9pZCBNb2R1bGVSdHBSdGNwSW1wbDo6U2V0UnRjcFJlY2VpdmVyU3NyY3ModWlu
dDMyX3QgbWFpbl9zc3JjKSB7CiAgIHN0ZDo6c2V0PHVpbnQzMl90PiBzc3JjczsKICAgc3NyY3Mu
aW5zZXJ0KG1haW5fc3NyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsLmgKaW5kZXggNjA0NDE0YWRmMmZmNDU0MTE4NTI5OGEx
NTUwZTM0MmFkZWNlZWQ4NC4uOGU5NzUxZGNjMWYwYjIzNzk2MGU0ZmQ1NDk2Y2E3MzkyMTAzMDJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9ydGNwX2ltcGwuaApAQCAtMTEsMTcgKzExLDI0IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JU
Q1BfU09VUkNFX1JUUF9SVENQX0lNUExfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VS
Q0VfUlRQX1JUQ1BfSU1QTF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3Rk
aW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJp
bmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL3J0cF9oZWFkZXJzLmgiCiAjaW5j
bHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgorI2luY2x1ZGUgImNv
bW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAibW9kdWxl
cy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1
ZGUvbW9kdWxlX2ZlY190eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yL2luY2x1ZGUvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIiAgLy8gUlRDUFBhY2tldFR5cGUKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9wYWNrZXRfbG9zc19zdGF0cy5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJfaXRlbS5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVjZWl2ZXIuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlci5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXIuaCIKQEAgLTMwLDYgKzM3LDEwIEBACiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBDbG9jazsKK3N0cnVjdCBQYWNlZFBhY2tldElu
Zm87CitzdHJ1Y3QgUlRQVmlkZW9IZWFkZXI7CisKIGNsYXNzIE1vZHVsZVJ0cFJ0Y3BJbXBsIDog
cHVibGljIFJ0cFJ0Y3AsIHB1YmxpYyBSVENQUmVjZWl2ZXI6Ok1vZHVsZVJ0cFJ0Y3AgewogIHB1
YmxpYzoKICAgZXhwbGljaXQgTW9kdWxlUnRwUnRjcEltcGwoY29uc3QgUnRwUnRjcDo6Q29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbik7CkBAIC01OSw2ICs3MCw4IEBAIGNsYXNzIE1vZHVsZVJ0
cFJ0Y3BJbXBsIDogcHVibGljIFJ0cFJ0Y3AsIHB1YmxpYyBSVENQUmVjZWl2ZXI6Ok1vZHVsZVJ0
cFJ0Y3AgewogCiAgIGludDMyX3QgRGVSZWdpc3RlclNlbmRQYXlsb2FkKGludDhfdCBwYXlsb2Fk
X3R5cGUpIG92ZXJyaWRlOwogCisgIHZvaWQgU2V0RXh0bWFwQWxsb3dNaXhlZChib29sIGV4dG1h
cF9hbGxvd19taXhlZCkgb3ZlcnJpZGU7CisKICAgLy8gUmVnaXN0ZXIgUlRQIGhlYWRlciBleHRl
bnNpb24uCiAgIGludDMyX3QgUmVnaXN0ZXJTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVu
c2lvblR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDhfdCBpZCkgb3ZlcnJpZGU7CkBAIC0xMTUsNiArMTI4LDggQEAgY2xhc3MgTW9kdWxlUnRw
UnRjcEltcGwgOiBwdWJsaWMgUnRwUnRjcCwgcHVibGljIFJUQ1BSZWNlaXZlcjo6TW9kdWxlUnRw
UnRjcCB7CiAKICAgYm9vbCBTZW5kaW5nTWVkaWEoKSBjb25zdCBvdmVycmlkZTsKIAorICB2b2lk
IFNldEFzUGFydE9mQWxsb2NhdGlvbihib29sIHBhcnRfb2ZfYWxsb2NhdGlvbikgb3ZlcnJpZGU7
CisKICAgLy8gVXNlZCBieSB0aGUgY29kZWMgbW9kdWxlIHRvIGRlbGl2ZXIgYSB2aWRlbyBvciBh
dWRpbyBmcmFtZSBmb3IKICAgLy8gcGFja2V0aXphdGlvbi4KICAgYm9vbCBTZW5kT3V0Z29pbmdE
YXRhKEZyYW1lVHlwZSBmcmFtZV90eXBlLApAQCAtMzExLDcgKzMyNiw2IEBAIGNsYXNzIE1vZHVs
ZVJ0cFJ0Y3BJbXBsIDogcHVibGljIFJ0cFJ0Y3AsIHB1YmxpYyBSVENQUmVjZWl2ZXI6Ok1vZHVs
ZVJ0cFJ0Y3AgewogIHByaXZhdGU6CiAgIEZSSUVORF9URVNUX0FMTF9QUkVGSVhFUyhSdHBSdGNw
SW1wbFRlc3QsIFJ0dCk7CiAgIEZSSUVORF9URVNUX0FMTF9QUkVGSVhFUyhSdHBSdGNwSW1wbFRl
c3QsIFJ0dEZvclJlY2VpdmVyT25seSk7Ci0gIGludDY0X3QgUnRjcFJlcG9ydEludGVydmFsKCk7
CiAgIHZvaWQgU2V0UnRjcFJlY2VpdmVyU3NyY3ModWludDMyX3QgbWFpbl9zc3JjKTsKIAogICB2
b2lkIHNldF9ydHRfbXMoaW50NjRfdCBydHRfbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X3J0Y3BfaW1wbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2ltcGxfdW5pdHRlc3Qu
Y2MKaW5kZXggNTE2MGE2NGJlNzNkODkyMjcwZWMzY2U4MTFlYWQ4MDNlYWI2N2QyNC4uNjMyYTUz
N2U4MDI5MTAxYjUwNjlmZDI2OTEzZGM3NDQ1ZjkwYTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX3J0Y3BfaW1wbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsX3Vu
aXR0ZXN0LmNjCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFJ0Y3BSdHRTdGF0c1Rlc3RJbXBsIDog
cHVibGljIFJ0Y3BSdHRTdGF0cyB7CiAgIGludDY0X3QgcnR0X21zXzsKIH07CiAKLWNsYXNzIFNl
bmRUcmFuc3BvcnQgOiBwdWJsaWMgVHJhbnNwb3J0LCBwdWJsaWMgUnRwRGF0YSB7CitjbGFzcyBT
ZW5kVHJhbnNwb3J0IDogcHVibGljIFRyYW5zcG9ydCB7CiAgcHVibGljOgogICBTZW5kVHJhbnNw
b3J0KCkKICAgICAgIDogcmVjZWl2ZXJfKG51bGxwdHIpLApAQCAtOTAsMTEgKzkwLDYgQEAgY2xh
c3MgU2VuZFRyYW5zcG9ydCA6IHB1YmxpYyBUcmFuc3BvcnQsIHB1YmxpYyBSdHBEYXRhIHsKICAg
ICArK3J0Y3BfcGFja2V0c19zZW50XzsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQotICBpbnQzMl90
IE9uUmVjZWl2ZWRQYXlsb2FkRGF0YShjb25zdCB1aW50OF90KiBwYXlsb2FkX2RhdGEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkX3NpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciogcnRwX2hlYWRl
cikgb3ZlcnJpZGUgewotICAgIHJldHVybiAwOwotICB9CiAgIHZvaWQgU2V0S2VlcGFsaXZlUGF5
bG9hZFR5cGUodWludDhfdCBwYXlsb2FkX3R5cGUpIHsKICAgICBrZWVwYWxpdmVfcGF5bG9hZF90
eXBlXyA9IHBheWxvYWRfdHlwZTsKICAgfQpAQCAtMTI5LDcgKzEyNCw3IEBAIGNsYXNzIFJ0cFJ0
Y3BNb2R1bGUgOiBwdWJsaWMgUnRjcFBhY2tldFR5cGVDb3VudGVyT2JzZXJ2ZXIgewogICBzdGQ6
OnVuaXF1ZV9wdHI8TW9kdWxlUnRwUnRjcEltcGw+IGltcGxfOwogICB1aW50MzJfdCByZW1vdGVf
c3NyY187CiAgIFJ0cEtlZXBBbGl2ZUNvbmZpZyBrZWVwYWxpdmVfY29uZmlnXzsKLSAgUnRjcElu
dGVydmFsQ29uZmlnIHJ0Y3BfaW50ZXJ2YWxfY29uZmlnXzsKKyAgaW50IHJ0Y3BfcmVwb3J0X2lu
dGVydmFsX21zXyA9IDA7CiAKICAgdm9pZCBTZXRSZW1vdGVTc3JjKHVpbnQzMl90IHNzcmMpIHsK
ICAgICByZW1vdGVfc3NyY18gPSBzc3JjOwpAQCAtMTY0LDggKzE1OSw4IEBAIGNsYXNzIFJ0cFJ0
Y3BNb2R1bGUgOiBwdWJsaWMgUnRjcFBhY2tldFR5cGVDb3VudGVyT2JzZXJ2ZXIgewogICAgIENy
ZWF0ZU1vZHVsZUltcGwoKTsKICAgICB0cmFuc3BvcnRfLlNldEtlZXBhbGl2ZVBheWxvYWRUeXBl
KGNvbmZpZy5wYXlsb2FkX3R5cGUpOwogICB9Ci0gIHZvaWQgU2V0UnRjcEludGVydmFsQ29uZmln
QW5kUmVzZXQoY29uc3QgUnRjcEludGVydmFsQ29uZmlnJiBjb25maWcpIHsKLSAgICBydGNwX2lu
dGVydmFsX2NvbmZpZ18gPSBjb25maWc7CisgIHZvaWQgU2V0UnRjcFJlcG9ydEludGVydmFsQW5k
UmVzZXQoaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zKSB7CisgICAgcnRjcF9yZXBvcnRfaW50
ZXJ2YWxfbXNfID0gcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM7CiAgICAgQ3JlYXRlTW9kdWxlSW1w
bCgpOwogICB9CiAKQEAgLTE3OSw3ICsxNzQsNyBAQCBjbGFzcyBSdHBSdGNwTW9kdWxlIDogcHVi
bGljIFJ0Y3BQYWNrZXRUeXBlQ291bnRlck9ic2VydmVyIHsKICAgICBjb25maWcucnRjcF9wYWNr
ZXRfdHlwZV9jb3VudGVyX29ic2VydmVyID0gdGhpczsKICAgICBjb25maWcucnR0X3N0YXRzID0g
JnJ0dF9zdGF0c187CiAgICAgY29uZmlnLmtlZXBhbGl2ZV9jb25maWcgPSBrZWVwYWxpdmVfY29u
ZmlnXzsKLSAgICBjb25maWcucnRjcF9pbnRlcnZhbF9jb25maWcgPSBydGNwX2ludGVydmFsX2Nv
bmZpZ187CisgICAgY29uZmlnLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0gcnRjcF9yZXBvcnRf
aW50ZXJ2YWxfbXNfOwogCiAgICAgaW1wbF8ucmVzZXQobmV3IE1vZHVsZVJ0cFJ0Y3BJbXBsKGNv
bmZpZykpOwogICAgIGltcGxfLT5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprQ29tcG91bmQpOwpA
QCAtNjQ4LDExICs2NDMsOCBAQCBURVNUX0YoUnRwUnRjcEltcGxUZXN0LCBTZW5kc0tlZXBhbGl2
ZUFmdGVyVGltb3V0KSB7CiBURVNUX0YoUnRwUnRjcEltcGxUZXN0LCBDb25maWd1cmFibGVSdGNw
UmVwb3J0SW50ZXJ2YWwpIHsKICAgY29uc3QgaW50IGtWaWRlb1JlcG9ydEludGVydmFsID0gMzAw
MDsKIAotICBSdGNwSW50ZXJ2YWxDb25maWcgY29uZmlnOwotICBjb25maWcudmlkZW9faW50ZXJ2
YWxfbXMgPSBrVmlkZW9SZXBvcnRJbnRlcnZhbDsKLQogICAvLyBSZWNyZWF0ZSBzZW5kZXIgaW1w
bCB3aXRoIG5ldyBjb25maWd1cmF0aW9uLCBhbmQgcmVkbyBzZXR1cC4KLSAgc2VuZGVyXy5TZXRS
dGNwSW50ZXJ2YWxDb25maWdBbmRSZXNldChjb25maWcpOworICBzZW5kZXJfLlNldFJ0Y3BSZXBv
cnRJbnRlcnZhbEFuZFJlc2V0KGtWaWRlb1JlcG9ydEludGVydmFsKTsKICAgU2V0VXAoKTsKIAog
ICBTZW5kRnJhbWUoJnNlbmRlcl8sIGtCYXNlTGF5ZXJUaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX3NlbmRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXIuY2MKaW5kZXggOWYxMGM0MGU1
NzU0MDI2OTU1MjM0ODUyMDA3MTk3ZTE3NWJkNzM2OS4uZGRmOTFmNWY1YTJkNTgwZDVmOTlmZjdm
OTJlNzc3ZjQwNDM2ZTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfc2VuZGVyLmNjCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSA8dXRp
bGl0eT4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wv
c3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X3J0cF9wYWNrZXRfb3V0Z29pbmcuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19l
dmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJh
dGVfZXN0aW1hdG9yL3Rlc3QvYndlX3Rlc3RfbG9nZ2luZy5oIgpAQCAtOTQsMTQgKzk1LDYgQEAg
Y29uc3QgY2hhciogRnJhbWVUeXBlVG9TdHJpbmcoRnJhbWVUeXBlIGZyYW1lX3R5cGUpIHsKICAg
fQogICByZXR1cm4gIiI7CiB9Ci0KLXZvaWQgQ291bnRQYWNrZXQoUnRwUGFja2V0Q291bnRlciog
Y291bnRlciwgY29uc3QgUnRwUGFja2V0VG9TZW5kJiBwYWNrZXQpIHsKLSAgKytjb3VudGVyLT5w
YWNrZXRzOwotICBjb3VudGVyLT5oZWFkZXJfYnl0ZXMgKz0gcGFja2V0LmhlYWRlcnNfc2l6ZSgp
OwotICBjb3VudGVyLT5wYWRkaW5nX2J5dGVzICs9IHBhY2tldC5wYWRkaW5nX3NpemUoKTsKLSAg
Y291bnRlci0+cGF5bG9hZF9ieXRlcyArPSBwYWNrZXQucGF5bG9hZF9zaXplKCk7Ci19Ci0KIH0g
IC8vIG5hbWVzcGFjZQogCiBSVFBTZW5kZXI6OlJUUFNlbmRlcigKQEAgLTExOSwyNCArMTEyLDMz
IEBAIFJUUFNlbmRlcjo6UlRQU2VuZGVyKAogICAgIFNlbmRQYWNrZXRPYnNlcnZlciogc2VuZF9w
YWNrZXRfb2JzZXJ2ZXIsCiAgICAgUmF0ZUxpbWl0ZXIqIHJldHJhbnNtaXNzaW9uX3JhdGVfbGlt
aXRlciwKICAgICBPdmVyaGVhZE9ic2VydmVyKiBvdmVyaGVhZF9vYnNlcnZlciwKLSAgICBib29s
IHBvcHVsYXRlX25ldHdvcmsyX3RpbWVzdGFtcCkKKyAgICBib29sIHBvcHVsYXRlX25ldHdvcmsy
X3RpbWVzdGFtcCwKKyAgICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9y
LAorICAgIGJvb2wgcmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uLAorICAgIGJvb2wgZXh0bWFwX2Fs
bG93X21peGVkKQogICAgIDogY2xvY2tfKGNsb2NrKSwKICAgICAgIC8vIFRPRE8oaG9sbWVyKTog
UmVtb3ZlIHRoaXMgY29udmVyc2lvbj8KICAgICAgIGNsb2NrX2RlbHRhX21zXyhjbG9ja18tPlRp
bWVJbk1pbGxpc2Vjb25kcygpIC0gcnRjOjpUaW1lTWlsbGlzKCkpLAogICAgICAgcmFuZG9tXyhj
bG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSwKICAgICAgIGF1ZGlvX2NvbmZpZ3VyZWRfKGF1
ZGlvKSwKICAgICAgIGF1ZGlvXyhhdWRpbyA/IG5ldyBSVFBTZW5kZXJBdWRpbyhjbG9jaywgdGhp
cykgOiBudWxscHRyKSwKLSAgICAgIHZpZGVvXyhhdWRpbyA/IG51bGxwdHIgOiBuZXcgUlRQU2Vu
ZGVyVmlkZW8oY2xvY2ssIHRoaXMsIGZsZXhmZWNfc2VuZGVyKSksCisgICAgICB2aWRlb18oYXVk
aW8gPyBudWxscHRyCisgICAgICAgICAgICAgICAgICAgOiBuZXcgUlRQU2VuZGVyVmlkZW8oY2xv
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4ZmVjX3NlbmRlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9lbmNyeXB0b3IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZV9mcmFtZV9lbmNyeXB0
aW9uKSksCiAgICAgICBwYWNlZF9zZW5kZXJfKHBhY2VkX3NlbmRlciksCiAgICAgICB0cmFuc3Bv
cnRfc2VxdWVuY2VfbnVtYmVyX2FsbG9jYXRvcl8oc2VxdWVuY2VfbnVtYmVyX2FsbG9jYXRvciks
CiAgICAgICB0cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2ZXJfKHRyYW5zcG9ydF9mZWVkYmFja19v
YnNlcnZlciksCiAgICAgICBsYXN0X2NhcHR1cmVfdGltZV9tc19zZW50XygwKSwKICAgICAgIHRy
YW5zcG9ydF8odHJhbnNwb3J0KSwKLSAgICAgIHNlbmRpbmdfbWVkaWFfKHRydWUpLCAgICAgICAg
ICAgICAgICAgICAvLyBEZWZhdWx0IHRvIHNlbmRpbmcgbWVkaWEuCisgICAgICBzZW5kaW5nX21l
ZGlhXyh0cnVlKSwgIC8vIERlZmF1bHQgdG8gc2VuZGluZyBtZWRpYS4KKyAgICAgIGZvcmNlX3Bh
cnRfb2ZfYWxsb2NhdGlvbl8oZmFsc2UpLAogICAgICAgbWF4X3BhY2tldF9zaXplXyhJUF9QQUNL
RVRfU0laRSAtIDI4KSwgIC8vIERlZmF1bHQgaXMgSVAtdjQvVURQLgogICAgICAgbGFzdF9wYXls
b2FkX3R5cGVfKC0xKSwKICAgICAgIHBheWxvYWRfdHlwZV9tYXBfKCksCi0gICAgICBydHBfaGVh
ZGVyX2V4dGVuc2lvbl9tYXBfKCksCisgICAgICBydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXBfKGV4
dG1hcF9hbGxvd19taXhlZCksCiAgICAgICBwYWNrZXRfaGlzdG9yeV8oY2xvY2spLAogICAgICAg
ZmxleGZlY19wYWNrZXRfaGlzdG9yeV8oY2xvY2spLAogICAgICAgLy8gU3RhdGlzdGljcwpAQCAt
MTY3LDkgKzE2OSw3IEBAIFJUUFNlbmRlcjo6UlRQU2VuZGVyKAogICAgICAgb3ZlcmhlYWRfb2Jz
ZXJ2ZXJfKG92ZXJoZWFkX29ic2VydmVyKSwKICAgICAgIHBvcHVsYXRlX25ldHdvcmsyX3RpbWVz
dGFtcF8ocG9wdWxhdGVfbmV0d29yazJfdGltZXN0YW1wKSwKICAgICAgIHNlbmRfc2lkZV9id2Vf
d2l0aF9vdmVyaGVhZF8oCi0gICAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVk
KCJXZWJSVEMtU2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikpLAotICAgICAgdW5saW1pdGVkX3Jl
dHJhbnNtaXNzaW9uX2V4cGVyaW1lbnRfKAotICAgICAgICAgIGZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoIldlYlJUQy1VbmxpbWl0ZWRTY3JlZW5zaGFyZVJldHJhbnNtaXNzaW9uIikpIHsKKyAgICAg
ICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1TZW5kU2lkZUJ3ZS1X
aXRoT3ZlcmhlYWQiKSkgewogICAvLyBUaGlzIHJhbmRvbSBpbml0aWFsaXphdGlvbiBpcyBub3Qg
aW50ZW5kZWQgdG8gYmUgY3J5cHRvZ3JhcGhpYyBzdHJvbmcuCiAgIHRpbWVzdGFtcF9vZmZzZXRf
ID0gcmFuZG9tXy5SYW5kPHVpbnQzMl90PigpOwogICAvLyBSYW5kb20gc3RhcnQsIDE2IGJpdHMu
IENhbid0IGJlIDAuCkBAIC0yMzksNiArMjM5LDExIEBAIHVpbnQzMl90IFJUUFNlbmRlcjo6TmFj
a092ZXJoZWFkUmF0ZSgpIGNvbnN0IHsKICAgcmV0dXJuIG5hY2tfYml0cmF0ZV9zZW50Xy5SYXRl
KGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpLnZhbHVlX29yKDApOwogfQogCit2b2lkIFJU
UFNlbmRlcjo6U2V0RXh0bWFwQWxsb3dNaXhlZChib29sIGV4dG1hcF9hbGxvd19taXhlZCkgewor
ICBydGM6OkNyaXRTY29wZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7CisgIHJ0cF9oZWFkZXJfZXh0
ZW5zaW9uX21hcF8uU2V0RXh0bWFwQWxsb3dNaXhlZChleHRtYXBfYWxsb3dfbWl4ZWQpOworfQor
CiBpbnQzMl90IFJUUFNlbmRlcjo6UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5z
aW9uVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgaWQpIHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2VuZF9jcml0c2VjdF8p
OwpAQCAtMjYwLDEzICsyNjUsMTIgQEAgaW50MzJfdCBSVFBTZW5kZXI6OkRlcmVnaXN0ZXJSdHBI
ZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlKSB7CiAgIHJldHVybiBydHBfaGVh
ZGVyX2V4dGVuc2lvbl9tYXBfLkRlcmVnaXN0ZXIodHlwZSk7CiB9CiAKLWludDMyX3QgUlRQU2Vu
ZGVyOjpSZWdpc3RlclBheWxvYWQoCi0gICAgY29uc3QgY2hhciBwYXlsb2FkX25hbWVbUlRQX1BB
WUxPQURfTkFNRV9TSVpFXSwKLSAgICBpbnQ4X3QgcGF5bG9hZF9udW1iZXIsCi0gICAgdWludDMy
X3QgZnJlcXVlbmN5LAotICAgIHNpemVfdCBjaGFubmVscywKLSAgICB1aW50MzJfdCByYXRlKSB7
Ci0gIFJUQ19EQ0hFQ0tfTFQoc3RybGVuKHBheWxvYWRfbmFtZSksIFJUUF9QQVlMT0FEX05BTUVf
U0laRSk7CitpbnQzMl90IFJUUFNlbmRlcjo6UmVnaXN0ZXJQYXlsb2FkKGFic2w6OnN0cmluZ192
aWV3IHBheWxvYWRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
OF90IHBheWxvYWRfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCBmcmVxdWVuY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBjaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgcmF0ZSkgeworICBSVENfRENIRUNLX0xUKHBheWxvYWRfbmFtZS5zaXplKCksIFJUUF9QQVlM
T0FEX05BTUVfU0laRSk7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsK
IAogICBzdGQ6Om1hcDxpbnQ4X3QsIFJ0cFV0aWxpdHk6OlBheWxvYWQqPjo6aXRlcmF0b3IgaXQg
PQpAQCAtMjc4LDggKzI4Miw3IEBAIGludDMyX3QgUlRQU2VuZGVyOjpSZWdpc3RlclBheWxvYWQo
CiAgICAgUlRDX0RDSEVDSyhwYXlsb2FkKTsKIAogICAgIC8vIENoZWNrIGlmIGl0J3MgdGhlIHNh
bWUgYXMgd2UgYWxyZWFkeSBoYXZlLgotICAgIGlmIChSdHBVdGlsaXR5OjpTdHJpbmdDb21wYXJl
KHBheWxvYWQtPm5hbWUsIHBheWxvYWRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSVFBfUEFZTE9BRF9OQU1FX1NJWkUgLSAxKSkgeworICAgIGlmIChhYnNsOjpFcXVh
bHNJZ25vcmVDYXNlKHBheWxvYWQtPm5hbWUsIHBheWxvYWRfbmFtZSkpIHsKICAgICAgIGlmIChh
dWRpb19jb25maWd1cmVkXyAmJiBwYXlsb2FkLT50eXBlU3BlY2lmaWMuaXNfYXVkaW8oKSkgewog
ICAgICAgICBhdXRvJiBwID0gcGF5bG9hZC0+dHlwZVNwZWNpZmljLmF1ZGlvX3BheWxvYWQoKTsK
ICAgICAgICAgaWYgKHJ0Yzo6U2FmZUVxKHAuZm9ybWF0LmNsb2NrcmF0ZV9oeiwgZnJlcXVlbmN5
KSAmJgpAQCAtNDI2LDExICs0MjksNiBAQCBib29sIFJUUFNlbmRlcjo6U2VuZE91dGdvaW5nRGF0
YShGcmFtZVR5cGUgZnJhbWVfdHlwZSwKICAgICAgICp0cmFuc3BvcnRfZnJhbWVfaWRfb3V0ID0g
cnRwX3RpbWVzdGFtcDsKICAgICBpZiAoIXNlbmRpbmdfbWVkaWFfKQogICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAvLyBDYWNoZSB2aWRlbyBjb250ZW50IHR5cGUuCi0gICAgaWYgKCFhdWRpb19j
b25maWd1cmVkXyAmJiBydHBfaGVhZGVyKSB7Ci0gICAgICB2aWRlb19jb250ZW50X3R5cGVfID0g
cnRwX2hlYWRlci0+Y29udGVudF90eXBlOwotICAgIH0KICAgfQogICBWaWRlb0NvZGVjVHlwZSB2
aWRlb190eXBlID0ga1ZpZGVvQ29kZWNHZW5lcmljOwogICBpZiAoQ2hlY2tQYXlsb2FkVHlwZShw
YXlsb2FkX3R5cGUsICZ2aWRlb190eXBlKSAhPSAwKSB7CkBAIC02MTksMTAgKzYxNywxNiBAQCBz
aXplX3QgUlRQU2VuZGVyOjpTZW5kUGFkRGF0YShzaXplX3QgYnl0ZXMsCiAgICAgUGFja2V0T3B0
aW9ucyBvcHRpb25zOwogICAgIC8vIFBhZGRpbmcgcGFja2V0cyBhcmUgbmV2ZXIgcmV0cmFuc21p
c3Npb25zLgogICAgIG9wdGlvbnMuaXNfcmV0cmFuc21pdCA9IGZhbHNlOwotICAgIGJvb2wgaGFz
X3RyYW5zcG9ydF9zZXFfbnVtID0KLSAgICAgICAgVXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1i
ZXIoJnBhZGRpbmdfcGFja2V0LCAmb3B0aW9ucy5wYWNrZXRfaWQpOwotICAgIHBhZGRpbmdfcGFj
a2V0LlNldFBhZGRpbmcocGFkZGluZ19ieXRlc19pbl9wYWNrZXQsICZyYW5kb21fKTsKLQorICAg
IGJvb2wgaGFzX3RyYW5zcG9ydF9zZXFfbnVtOworICAgIHsKKyAgICAgIHJ0Yzo6Q3JpdFNjb3Bl
IGxvY2soJnNlbmRfY3JpdHNlY3RfKTsKKyAgICAgIGhhc190cmFuc3BvcnRfc2VxX251bSA9Cisg
ICAgICAgICAgVXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoJnBhZGRpbmdfcGFja2V0LCAm
b3B0aW9ucy5wYWNrZXRfaWQpOworICAgICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9u
ID0KKyAgICAgICAgICBoYXNfdHJhbnNwb3J0X3NlcV9udW0gfHwgZm9yY2VfcGFydF9vZl9hbGxv
Y2F0aW9uXzsKKyAgICAgIG9wdGlvbnMuaW5jbHVkZWRfaW5fZmVlZGJhY2sgPSBoYXNfdHJhbnNw
b3J0X3NlcV9udW07CisgICAgfQorICAgIHBhZGRpbmdfcGFja2V0LlNldFBhZGRpbmcocGFkZGlu
Z19ieXRlc19pbl9wYWNrZXQpOwogICAgIGlmIChoYXNfdHJhbnNwb3J0X3NlcV9udW0pIHsKICAg
ICAgIEFkZFBhY2tldFRvVHJhbnNwb3J0RmVlZGJhY2sob3B0aW9ucy5wYWNrZXRfaWQsIHBhZGRp
bmdfcGFja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNpbmdfaW5m
byk7CkBAIC02NTQsNyArNjU4LDcgQEAgaW50MzJfdCBSVFBTZW5kZXI6OlJlU2VuZFBhY2tldCh1
aW50MTZfdCBwYWNrZXRfaWQpIHsKICAgLy8gVHJ5IHRvIGZpbmQgcGFja2V0IGluIFJUUCBwYWNr
ZXQgaGlzdG9yeS4gQWxzbyB2ZXJpZnkgUlRUIGhlcmUsIHNvIHRoYXQgd2UKICAgLy8gZG9uJ3Qg
cmV0cmFuc21pdCB0b28gb2Z0ZW4uCiAgIGFic2w6Om9wdGlvbmFsPFJ0cFBhY2tldEhpc3Rvcnk6
OlBhY2tldFN0YXRlPiBzdG9yZWRfcGFja2V0ID0KLSAgICAgIHBhY2tldF9oaXN0b3J5Xy5HZXRQ
YWNrZXRTdGF0ZShwYWNrZXRfaWQsIHRydWUpOworICAgICAgcGFja2V0X2hpc3RvcnlfLkdldFBh
Y2tldFN0YXRlKHBhY2tldF9pZCk7CiAgIGlmICghc3RvcmVkX3BhY2tldCkgewogICAgIC8vIFBh
Y2tldCBub3QgZm91bmQuCiAgICAgcmV0dXJuIDA7CkBAIC02NjQsMjAgKzY2OCw5IEBAIGludDMy
X3QgUlRQU2VuZGVyOjpSZVNlbmRQYWNrZXQodWludDE2X3QgcGFja2V0X2lkKSB7CiAKICAgLy8g
U2tpcCByZXRyYW5zbWlzc2lvbiByYXRlIGNoZWNrIGlmIG5vdCBjb25maWd1cmVkLgogICBpZiAo
cmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXykgewotICAgIC8vIFNraXAgcmV0cmFuc21pc3Np
b24gcmF0ZSBjaGVjayBpZiBzZW5kaW5nIHNjcmVlbnNoYXJlIGFuZCB0aGUgZXhwZXJpbWVudAot
ICAgIC8vIGlzIG9uLgotICAgIGJvb2wgc2tpcF9yZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ID0g
ZmFsc2U7Ci0gICAgaWYgKHVubGltaXRlZF9yZXRyYW5zbWlzc2lvbl9leHBlcmltZW50Xykgewot
ICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2VuZF9jcml0c2VjdF8pOwotICAgICAgc2tpcF9y
ZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ID0KLSAgICAgICAgICB2aWRlb19jb250ZW50X3R5cGVf
ICYmCi0gICAgICAgICAgdmlkZW9jb250ZW50dHlwZWhlbHBlcnM6OklzU2NyZWVuc2hhcmUoKnZp
ZGVvX2NvbnRlbnRfdHlwZV8pOwotICAgIH0KLQogICAgIC8vIENoZWNrIGlmIHdlJ3JlIG92ZXJ1
c2luZyByZXRyYW5zbWlzc2lvbiBiaXRyYXRlLgogICAgIC8vIFRPRE8oc3ByYW5nKTogQWRkIGhp
c3RvZ3JhbXMgZm9yIG5hY2sgc3VjY2VzcyBvciBmYWlsdXJlIHJlYXNvbnMuCi0gICAgaWYgKCFz
a2lwX3JldHJhbnNtaXNzaW9uX3JhdGVfbGltaXQgJiYKLSAgICAgICAgIXJldHJhbnNtaXNzaW9u
X3JhdGVfbGltaXRlcl8tPlRyeVVzZVJhdGUocGFja2V0X3NpemUpKSB7CisgICAgaWYgKCFyZXRy
YW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLT5UcnlVc2VSYXRlKHBhY2tldF9zaXplKSkgewogICAg
ICAgcmV0dXJuIC0xOwogICAgIH0KICAgfQpAQCAtNjk2LDcgKzY4OSw3IEBAIGludDMyX3QgUlRQ
U2VuZGVyOjpSZVNlbmRQYWNrZXQodWludDE2X3QgcGFja2V0X2lkKSB7CiAgIH0KIAogICBzdGQ6
OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXQgPQotICAgICAgcGFja2V0X2hpc3Rv
cnlfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKHBhY2tldF9pZCwgdHJ1ZSk7CisgICAgICBwYWNr
ZXRfaGlzdG9yeV8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUocGFja2V0X2lkKTsKICAgaWYgKCFw
YWNrZXQpIHsKICAgICAvLyBQYWNrZXQgY291bGQgdGhlb3JldGljYWxseSB0aW1lIG91dCBiZXR3
ZWVuIHRoZSBmaXJzdCBjaGVjayBhbmQgdGhpcyBvbmUuCiAgICAgcmV0dXJuIDA7CkBAIC03NzQs
MTcgKzc2NywxNCBAQCBib29sIFJUUFNlbmRlcjo6VGltZVRvU2VuZFBhY2tldCh1aW50MzJfdCBz
c3JjLAogICAgIHJldHVybiB0cnVlOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1Nl
bmQ+IHBhY2tldDsKLSAgLy8gTm8gbmVlZCB0byB2ZXJpZnkgUlRUIGhlcmUsIGl0IGhhcyBhbHJl
YWR5IGJlZW4gY2hlY2tlZCBiZWZvcmUgcHV0dGluZyB0aGUKLSAgLy8gcGFja2V0IGludG8gdGhl
IHBhY2VyLiBCdXQgX2RvXyB1cGRhdGUgdGhlIHNlbmQgdGltZS4KICAgaWYgKHNzcmMgPT0gU1NS
QygpKSB7Ci0gICAgcGFja2V0ID0gcGFja2V0X2hpc3RvcnlfLkdldFBhY2tldEFuZFNldFNlbmRU
aW1lKHNlcXVlbmNlX251bWJlciwgZmFsc2UpOworICAgIHBhY2tldCA9IHBhY2tldF9oaXN0b3J5
Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShzZXF1ZW5jZV9udW1iZXIpOwogICB9IGVsc2UgaWYg
KHNzcmMgPT0gRmxleGZlY1NzcmMoKSkgewotICAgIHBhY2tldCA9Ci0gICAgICAgIGZsZXhmZWNf
cGFja2V0X2hpc3RvcnlfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKHNlcXVlbmNlX251bWJlciwg
ZmFsc2UpOworICAgIHBhY2tldCA9IGZsZXhmZWNfcGFja2V0X2hpc3RvcnlfLkdldFBhY2tldEFu
ZFNldFNlbmRUaW1lKHNlcXVlbmNlX251bWJlcik7CiAgIH0KIAogICBpZiAoIXBhY2tldCkgewot
ICAgIC8vIFBhY2tldCBjYW5ub3QgYmUgZm91bmQuCisgICAgLy8gUGFja2V0IGNhbm5vdCBiZSBm
b3VuZCBvciB3YXMgcmVzZW5kIHRvbyByZWNlbnRseS4KICAgICByZXR1cm4gdHJ1ZTsKICAgfQog
CkBAIC04MzgsNyArODI4LDE2IEBAIGJvb2wgUlRQU2VuZGVyOjpQcmVwYXJlQW5kU2VuZFBhY2tl
dChzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXQsCiAgIC8vIEUuZy4gUlRQ
U2VuZGVyOjpUcnlTZW5kUmVkdW5kYW50UGF5bG9hZHMgY2FsbHMgUHJlcGFyZUFuZFNlbmRQYWNr
ZXQgd2l0aAogICAvLyBzZW5kX292ZXJfcnR4ID0gdHJ1ZSBidXQgaXNfcmV0cmFuc21pdCA9IGZh
bHNlLgogICBvcHRpb25zLmlzX3JldHJhbnNtaXQgPSBpc19yZXRyYW5zbWl0IHx8IHNlbmRfb3Zl
cl9ydHg7Ci0gIGlmIChVcGRhdGVUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihwYWNrZXRfdG9fc2Vu
ZCwgJm9wdGlvbnMucGFja2V0X2lkKSkgeworICBib29sIGhhc190cmFuc3BvcnRfc2VxX251bTsK
KyAgeworICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsKKyAgICBoYXNf
dHJhbnNwb3J0X3NlcV9udW0gPQorICAgICAgICBVcGRhdGVUcmFuc3BvcnRTZXF1ZW5jZU51bWJl
cihwYWNrZXRfdG9fc2VuZCwgJm9wdGlvbnMucGFja2V0X2lkKTsKKyAgICBvcHRpb25zLmluY2x1
ZGVkX2luX2FsbG9jYXRpb24gPQorICAgICAgICBoYXNfdHJhbnNwb3J0X3NlcV9udW0gfHwgZm9y
Y2VfcGFydF9vZl9hbGxvY2F0aW9uXzsKKyAgICBvcHRpb25zLmluY2x1ZGVkX2luX2ZlZWRiYWNr
ID0gaGFzX3RyYW5zcG9ydF9zZXFfbnVtOworICB9CisgIGlmIChoYXNfdHJhbnNwb3J0X3NlcV9u
dW0pIHsKICAgICBBZGRQYWNrZXRUb1RyYW5zcG9ydEZlZWRiYWNrKG9wdGlvbnMucGFja2V0X2lk
LCAqcGFja2V0X3RvX3NlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNp
bmdfaW5mbyk7CiAgIH0KQEAgLTg3NiwxMyArODc1LDEzIEBAIHZvaWQgUlRQU2VuZGVyOjpVcGRh
dGVSdHBTdGF0cyhjb25zdCBSdHBQYWNrZXRUb1NlbmQmIHBhY2tldCwKICAgICBjb3VudGVycy0+
Zmlyc3RfcGFja2V0X3RpbWVfbXMgPSBub3dfbXM7CiAKICAgaWYgKElzRmVjUGFja2V0KHBhY2tl
dCkpCi0gICAgQ291bnRQYWNrZXQoJmNvdW50ZXJzLT5mZWMsIHBhY2tldCk7CisgICAgY291bnRl
cnMtPmZlYy5BZGRQYWNrZXQocGFja2V0KTsKIAogICBpZiAoaXNfcmV0cmFuc21pdCkgewotICAg
IENvdW50UGFja2V0KCZjb3VudGVycy0+cmV0cmFuc21pdHRlZCwgcGFja2V0KTsKKyAgICBjb3Vu
dGVycy0+cmV0cmFuc21pdHRlZC5BZGRQYWNrZXQocGFja2V0KTsKICAgICBuYWNrX2JpdHJhdGVf
c2VudF8uVXBkYXRlKHBhY2tldC5zaXplKCksIG5vd19tcyk7CiAgIH0KLSAgQ291bnRQYWNrZXQo
JmNvdW50ZXJzLT50cmFuc21pdHRlZCwgcGFja2V0KTsKKyAgY291bnRlcnMtPnRyYW5zbWl0dGVk
LkFkZFBhY2tldChwYWNrZXQpOwogCiAgIGlmIChydHBfc3RhdHNfY2FsbGJhY2tfKQogICAgIHJ0
cF9zdGF0c19jYWxsYmFja18tPkRhdGFDb3VudGVyc1VwZGF0ZWQoKmNvdW50ZXJzLCBwYWNrZXQu
U3NyYygpKTsKQEAgLTkyMCwxNSArOTE5LDYgQEAgYm9vbCBSVFBTZW5kZXI6OlNlbmRUb05ldHdv
cmsoc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0LAogICBSVENfRENIRUNL
KHBhY2tldCk7CiAgIGludDY0X3Qgbm93X21zID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMo
KTsKIAotICAvLyB8Y2FwdHVyZV90aW1lX21zfCA8PSAwIGlzIGNvbnNpZGVyZWQgaW52YWxpZC4K
LSAgLy8gVE9ETyhob2xtZXIpOiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIGFsbCBvdmVyIFZpZGVv
IEVuZ2luZSBzbyB0aGF0IG5lZ2F0aXZlCi0gIC8vIHRpbWUgaXMgY29uc2lkZXIgaW52YWxpZCwg
d2hpbGUgMCBpcyBjb25zaWRlcmVkIGEgdmFsaWQgdGltZS4KLSAgaWYgKHBhY2tldC0+Y2FwdHVy
ZV90aW1lX21zKCkgPiAwKSB7Ci0gICAgcGFja2V0LT5TZXRFeHRlbnNpb248VHJhbnNtaXNzaW9u
T2Zmc2V0PigKLSAgICAgICAga1RpbWVzdGFtcFRpY2tzUGVyTXMgKiAobm93X21zIC0gcGFja2V0
LT5jYXB0dXJlX3RpbWVfbXMoKSkpOwotICB9Ci0gIHBhY2tldC0+U2V0RXh0ZW5zaW9uPEFic29s
dXRlU2VuZFRpbWU+KEFic29sdXRlU2VuZFRpbWU6Ok1zVG8yNEJpdHMobm93X21zKSk7Ci0KICAg
aWYgKHZpZGVvXykgewogICAgIEJXRV9URVNUX0xPR0dJTkdfUExPVF9XSVRIX1NTUkMoMSwgIlZp
ZGVvVG90Qml0cmF0ZV9rYnBzIiwgbm93X21zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWN0dWFsU2VuZEJpdHJhdGVLYml0KCksIHBhY2tldC0+U3NyYygpKTsKQEAgLTk3
MSw3ICs5NjEsMzEgQEAgYm9vbCBSVFBTZW5kZXI6OlNlbmRUb05ldHdvcmsoc3RkOjp1bmlxdWVf
cHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0LAogCiAgIFBhY2tldE9wdGlvbnMgb3B0aW9uczsK
ICAgb3B0aW9ucy5pc19yZXRyYW5zbWl0ID0gZmFsc2U7Ci0gIGlmIChVcGRhdGVUcmFuc3BvcnRT
ZXF1ZW5jZU51bWJlcihwYWNrZXQuZ2V0KCksICZvcHRpb25zLnBhY2tldF9pZCkpIHsKKworICAv
LyB8Y2FwdHVyZV90aW1lX21zfCA8PSAwIGlzIGNvbnNpZGVyZWQgaW52YWxpZC4KKyAgLy8gVE9E
Tyhob2xtZXIpOiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIGFsbCBvdmVyIFZpZGVvIEVuZ2luZSBz
byB0aGF0IG5lZ2F0aXZlCisgIC8vIHRpbWUgaXMgY29uc2lkZXIgaW52YWxpZCwgd2hpbGUgMCBp
cyBjb25zaWRlcmVkIGEgdmFsaWQgdGltZS4KKyAgaWYgKHBhY2tldC0+Y2FwdHVyZV90aW1lX21z
KCkgPiAwKSB7CisgICAgcGFja2V0LT5TZXRFeHRlbnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0PigK
KyAgICAgICAga1RpbWVzdGFtcFRpY2tzUGVyTXMgKiAobm93X21zIC0gcGFja2V0LT5jYXB0dXJl
X3RpbWVfbXMoKSkpOworCisgICAgaWYgKHBvcHVsYXRlX25ldHdvcmsyX3RpbWVzdGFtcF8gJiYK
KyAgICAgICAgcGFja2V0LT5IYXNFeHRlbnNpb248VmlkZW9UaW1pbmdFeHRlbnNpb24+KCkpIHsK
KyAgICAgIHBhY2tldC0+c2V0X25ldHdvcmsyX3RpbWVfbXMobm93X21zKTsKKyAgICB9CisgIH0K
KyAgcGFja2V0LT5TZXRFeHRlbnNpb248QWJzb2x1dGVTZW5kVGltZT4oQWJzb2x1dGVTZW5kVGlt
ZTo6TXNUbzI0Qml0cyhub3dfbXMpKTsKKworICBib29sIGhhc190cmFuc3BvcnRfc2VxX251bTsK
KyAgeworICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsKKyAgICBoYXNf
dHJhbnNwb3J0X3NlcV9udW0gPQorICAgICAgICBVcGRhdGVUcmFuc3BvcnRTZXF1ZW5jZU51bWJl
cihwYWNrZXQuZ2V0KCksICZvcHRpb25zLnBhY2tldF9pZCk7CisgICAgb3B0aW9ucy5pbmNsdWRl
ZF9pbl9hbGxvY2F0aW9uID0KKyAgICAgICAgaGFzX3RyYW5zcG9ydF9zZXFfbnVtIHx8IGZvcmNl
X3BhcnRfb2ZfYWxsb2NhdGlvbl87CisgICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9mZWVkYmFjayA9
IGhhc190cmFuc3BvcnRfc2VxX251bTsKKyAgfQorICBpZiAoaGFzX3RyYW5zcG9ydF9zZXFfbnVt
KSB7CiAgICAgQWRkUGFja2V0VG9UcmFuc3BvcnRGZWVkYmFjayhvcHRpb25zLnBhY2tldF9pZCwg
KnBhY2tldC5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2VkUGFj
a2V0SW5mbygpKTsKICAgfQpAQCAtMTE0MSw4ICsxMTU1LDE1IEBAIHZvaWQgUlRQU2VuZGVyOjpH
ZXREYXRhQ291bnRlcnMoU3RyZWFtRGF0YUNvdW50ZXJzKiBydHBfc3RhdHMsCiAKIHN0ZDo6dW5p
cXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IFJUUFNlbmRlcjo6QWxsb2NhdGVQYWNrZXQoKSBjb25z
dCB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsKLSAgc3RkOjp1bmlx
dWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0KAotICAgICAgbmV3IFJ0cFBhY2tldFRvU2Vu
ZCgmcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXywgbWF4X3BhY2tldF9zaXplXykpOworICAvLyBU
T0RPKGRhbmlsY2hhcCk6IEZpbmQgYmV0dGVyIG1vdGl2YXRvciBhbmQgdmFsdWUgZm9yIGV4dHJh
IGNhcGFjaXR5LgorICAvLyBSdHBQYWNrZXRpemVyIG1pZ2h0IHNsaWdodGx5IG1pc2NhbHVsYXRl
IG5lZWRlZCBzaXplLAorICAvLyBTUlRQIG1heSBiZW5lZml0IGZyb20gZXh0cmEgc3BhY2UgaW4g
dGhlIGJ1ZmZlciBhbmQgZG8gZW5jcnlwdGlvbiBpbiBwbGFjZQorICAvLyBzYXZpbmcgcmVhbGxv
Y2F0aW9uLgorICAvLyBXaGlsZSBzZW5kaW5nIHNsaWdodGx5IG92ZXJzaXplZCBwYWNrZXQgaW5j
cmVhc2UgY2hhbmNlIG9mIGRyb3BwZWQgcGFja2V0LAorICAvLyBpdCBpcyBiZXR0ZXIgdGhhbiBj
cmFzaCBvbiBkcm9wIHBhY2tldCB3aXRob3V0IHRyeWluZyB0byBzZW5kIGl0LgorICBzdGF0aWMg
Y29uc3RleHByIGludCBrRXh0cmFDYXBhY2l0eSA9IDE2OworICBhdXRvIHBhY2tldCA9IGFic2w6
Om1ha2VfdW5pcXVlPFJ0cFBhY2tldFRvU2VuZD4oCisgICAgICAmcnRwX2hlYWRlcl9leHRlbnNp
b25fbWFwXywgbWF4X3BhY2tldF9zaXplXyArIGtFeHRyYUNhcGFjaXR5KTsKICAgUlRDX0RDSEVD
Syhzc3JjXyk7CiAgIHBhY2tldC0+U2V0U3NyYygqc3NyY18pOwogICBwYWNrZXQtPlNldENzcmNz
KGNzcmNzXyk7CkBAIC0xMTgxLDEwICsxMjAyLDkgQEAgYm9vbCBSVFBTZW5kZXI6OkFzc2lnblNl
cXVlbmNlTnVtYmVyKFJ0cFBhY2tldFRvU2VuZCogcGFja2V0KSB7CiB9CiAKIGJvb2wgUlRQU2Vu
ZGVyOjpVcGRhdGVUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihSdHBQYWNrZXRUb1NlbmQqIHBhY2tl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHBh
Y2tldF9pZCkgY29uc3QgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCogcGFja2V0X2lkKSB7CiAgIFJUQ19EQ0hFQ0socGFja2V0KTsKICAgUlRDX0RD
SEVDSyhwYWNrZXRfaWQpOwotICBydGM6OkNyaXRTY29wZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7
CiAgIGlmICghcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXy5Jc1JlZ2lzdGVyZWQoVHJhbnNwb3J0
U2VxdWVuY2VOdW1iZXI6OmtJZCkpCiAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMjA5LDYgKzEy
MjksMTEgQEAgYm9vbCBSVFBTZW5kZXI6OlNlbmRpbmdNZWRpYSgpIGNvbnN0IHsKICAgcmV0dXJu
IHNlbmRpbmdfbWVkaWFfOwogfQogCit2b2lkIFJUUFNlbmRlcjo6U2V0QXNQYXJ0T2ZBbGxvY2F0
aW9uKGJvb2wgcGFydF9vZl9hbGxvY2F0aW9uKSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNl
bmRfY3JpdHNlY3RfKTsKKyAgZm9yY2VfcGFydF9vZl9hbGxvY2F0aW9uXyA9IHBhcnRfb2ZfYWxs
b2NhdGlvbjsKK30KKwogdm9pZCBSVFBTZW5kZXI6OlNldFRpbWVzdGFtcE9mZnNldCh1aW50MzJf
dCB0aW1lc3RhbXApIHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2VuZF9jcml0c2VjdF8pOwog
ICB0aW1lc3RhbXBfb2Zmc2V0XyA9IHRpbWVzdGFtcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9zZW5kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXIuaAppbmRleCA1YTkzZDdhNTIwMjFlMTRj
NTA4ZDc1NGQzMDZlMGEyZDg4NGViZjFiLi5mOWJiYmRkOWUyMmEyM2RmMDFkMjJjMTlkODdjYzcy
YjY5YzZkY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX3NlbmRlci5oCkBAIC0xNywxMCArMTcsMTAgQEAKICNpbmNsdWRlIDx1dGlsaXR5Pgog
I2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5o
IgogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlf
dmlldy5oIgogI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgotI2luY2x1ZGUgImFwaS92
aWRlby92aWRlb19jb250ZW50X3R5cGUuaCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8v
IE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVk
ZS9mbGV4ZmVjX3NlbmRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9y
dHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIKQEAgLTM4LDYgKzM4LDcgQEAKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKK2NsYXNzIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlOwogY2xhc3MgT3Zlcmhl
YWRPYnNlcnZlcjsKIGNsYXNzIFJhdGVMaW1pdGVyOwogY2xhc3MgUnRjRXZlbnRMb2c7CkBAIC02
Myw3ICs2NCwxMCBAQCBjbGFzcyBSVFBTZW5kZXIgewogICAgICAgICAgICAgU2VuZFBhY2tldE9i
c2VydmVyKiBzZW5kX3BhY2tldF9vYnNlcnZlciwKICAgICAgICAgICAgIFJhdGVMaW1pdGVyKiBu
YWNrX3JhdGVfbGltaXRlciwKICAgICAgICAgICAgIE92ZXJoZWFkT2JzZXJ2ZXIqIG92ZXJoZWFk
X29ic2VydmVyLAotICAgICAgICAgICAgYm9vbCBwb3B1bGF0ZV9uZXR3b3JrMl90aW1lc3RhbXAp
OworICAgICAgICAgICAgYm9vbCBwb3B1bGF0ZV9uZXR3b3JrMl90aW1lc3RhbXAsCisgICAgICAg
ICAgICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAgICAgICAg
ICAgYm9vbCByZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24sCisgICAgICAgICAgICBib29sIGV4dG1h
cF9hbGxvd19taXhlZCk7CiAKICAgflJUUFNlbmRlcigpOwogCkBAIC03NSw3ICs3OSw3IEBAIGNs
YXNzIFJUUFNlbmRlciB7CiAgIHVpbnQzMl90IEZlY092ZXJoZWFkUmF0ZSgpIGNvbnN0OwogICB1
aW50MzJfdCBOYWNrT3ZlcmhlYWRSYXRlKCkgY29uc3Q7CiAKLSAgaW50MzJfdCBSZWdpc3RlclBh
eWxvYWQoY29uc3QgY2hhciogcGF5bG9hZF9uYW1lLAorICBpbnQzMl90IFJlZ2lzdGVyUGF5bG9h
ZChhYnNsOjpzdHJpbmdfdmlldyBwYXlsb2FkX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGludDhfdCBwYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQzMl90IGZyZXF1ZW5jeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc2l6ZV90IGNoYW5uZWxzLApAQCAtODYsNiArOTAsOCBAQCBjbGFzcyBSVFBTZW5kZXIgewog
ICB2b2lkIFNldFNlbmRpbmdNZWRpYVN0YXR1cyhib29sIGVuYWJsZWQpOwogICBib29sIFNlbmRp
bmdNZWRpYSgpIGNvbnN0OwogCisgIHZvaWQgU2V0QXNQYXJ0T2ZBbGxvY2F0aW9uKGJvb2wgcGFy
dF9vZl9hbGxvY2F0aW9uKTsKKwogICB2b2lkIEdldERhdGFDb3VudGVycyhTdHJlYW1EYXRhQ291
bnRlcnMqIHJ0cF9zdGF0cywKICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtRGF0YUNvdW50
ZXJzKiBydHhfc3RhdHMpIGNvbnN0OwogCkBAIC0xMTQsNiArMTIwLDggQEAgY2xhc3MgUlRQU2Vu
ZGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiB0cmFuc3BvcnRfZnJhbWVf
aWRfb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBleHBlY3RlZF9yZXRyYW5z
bWlzc2lvbl90aW1lX21zKTsKIAorICB2b2lkIFNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRt
YXBfYWxsb3dfbWl4ZWQpOworCiAgIC8vIFJUUCBoZWFkZXIgZXh0ZW5zaW9uCiAgIGludDMyX3Qg
UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlLCB1aW50OF90
IGlkKTsKICAgYm9vbCBSZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihjb25zdCBzdGQ6OnN0cmlu
ZyYgdXJpLCBpbnQgaWQpOwpAQCAtMjQ3LDggKzI1NSw4IEBAIGNsYXNzIFJUUFNlbmRlciB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgY2FwdHVyZV90aW1lX21zLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzc3JjKTsKIAotICBib29sIFVwZGF0ZVRyYW5z
cG9ydFNlcXVlbmNlTnVtYmVyKFJ0cFBhY2tldFRvU2VuZCogcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCogcGFja2V0X2lkKSBjb25zdDsKKyAgYm9vbCBV
cGRhdGVUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihSdHBQYWNrZXRUb1NlbmQqIHBhY2tldCwgaW50
KiBwYWNrZXRfaWQpCisgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKHNlbmRfY3Jp
dHNlY3RfKTsKIAogICB2b2lkIFVwZGF0ZVJ0cFN0YXRzKGNvbnN0IFJ0cFBhY2tldFRvU2VuZCYg
cGFja2V0LAogICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfcnR4LApAQCAtMjc3LDcgKzI4
NSw3IEBAIGNsYXNzIFJUUFNlbmRlciB7CiAKICAgVHJhbnNwb3J0KiB0cmFuc3BvcnRfOwogICBi
b29sIHNlbmRpbmdfbWVkaWFfIFJUQ19HVUFSREVEX0JZKHNlbmRfY3JpdHNlY3RfKTsKLQorICBi
b29sIGZvcmNlX3BhcnRfb2ZfYWxsb2NhdGlvbl8gUlRDX0dVQVJERURfQlkoc2VuZF9jcml0c2Vj
dF8pOwogICBzaXplX3QgbWF4X3BhY2tldF9zaXplXzsKIAogICBpbnQ4X3QgbGFzdF9wYXlsb2Fk
X3R5cGVfIFJUQ19HVUFSREVEX0JZKHNlbmRfY3JpdHNlY3RfKTsKQEAgLTM0MywxMSArMzUxLDYg
QEAgY2xhc3MgUlRQU2VuZGVyIHsKIAogICBjb25zdCBib29sIHNlbmRfc2lkZV9id2Vfd2l0aF9v
dmVyaGVhZF87CiAKLSAgY29uc3QgYm9vbCB1bmxpbWl0ZWRfcmV0cmFuc21pc3Npb25fZXhwZXJp
bWVudF87Ci0KLSAgYWJzbDo6b3B0aW9uYWw8VmlkZW9Db250ZW50VHlwZT4gdmlkZW9fY29udGVu
dF90eXBlXwotICAgICAgUlRDX0dVQVJERURfQlkoc2VuZF9jcml0c2VjdF8pOwotCiAgIFJUQ19E
SVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoUlRQU2VuZGVyKTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfYXVkaW8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX2F1
ZGlvLmNjCmluZGV4IGJmODZhMzkzMzliZTczZjkwNzgzNTljNzc1NWJkZWQ4Nzc0MWVjNDYuLjYz
NmNjY2NmMGQ5YjdmZjkwYTBkYWQ0ZDNkNTI5YWFiNmZkYjBmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9zZW5kZXJfYXVkaW8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl9hdWRpby5j
YwpAQCAtMTEsMTYgKzExLDE4IEBACiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX3NlbmRlcl9hdWRpby5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRj
aC5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmgiCisjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90
aW1ldXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKQEAgLTMwLDE0ICszMiwxMyBAQCBSVFBTZW5kZXJBdWRpbzo6UlRQU2VuZGVy
QXVkaW8oQ2xvY2sqIGNsb2NrLCBSVFBTZW5kZXIqIHJ0cF9zZW5kZXIpCiAKIFJUUFNlbmRlckF1
ZGlvOjp+UlRQU2VuZGVyQXVkaW8oKSB7fQogCi1pbnQzMl90IFJUUFNlbmRlckF1ZGlvOjpSZWdp
c3RlckF1ZGlvUGF5bG9hZCgKLSAgICBjb25zdCBjaGFyIHBheWxvYWROYW1lW1JUUF9QQVlMT0FE
X05BTUVfU0laRV0sCi0gICAgY29uc3QgaW50OF90IHBheWxvYWRfdHlwZSwKLSAgICBjb25zdCB1
aW50MzJfdCBmcmVxdWVuY3ksCi0gICAgY29uc3Qgc2l6ZV90IGNoYW5uZWxzLAotICAgIGNvbnN0
IHVpbnQzMl90IHJhdGUsCi0gICAgUnRwVXRpbGl0eTo6UGF5bG9hZCoqIHBheWxvYWQpIHsKLSAg
aWYgKFJ0cFV0aWxpdHk6OlN0cmluZ0NvbXBhcmUocGF5bG9hZE5hbWUsICJjbiIsIDIpKSB7Citp
bnQzMl90IFJUUFNlbmRlckF1ZGlvOjpSZWdpc3RlckF1ZGlvUGF5bG9hZChhYnNsOjpzdHJpbmdf
dmlldyBwYXlsb2FkX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbnQ4X3QgcGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgZnJlcXVlbmN5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGNoYW5u
ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDMyX3QgcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJ0cFV0aWxpdHk6OlBheWxvYWQqKiBwYXlsb2FkKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKHBheWxvYWRfbmFtZSwgImNuIikpIHsKICAgICBydGM6OkNyaXRTY29wZSBjcygm
c2VuZF9hdWRpb19jcml0c2VjdF8pOwogICAgIC8vICB3ZSBjYW4gaGF2ZSBtdWx0aXBsZSBDTkcg
cGF5bG9hZCB0eXBlcwogICAgIHN3aXRjaCAoZnJlcXVlbmN5KSB7CkBAIC01Niw3ICs1Nyw3IEBA
IGludDMyX3QgUlRQU2VuZGVyQXVkaW86OlJlZ2lzdGVyQXVkaW9QYXlsb2FkKAogICAgICAgZGVm
YXVsdDoKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgfSBlbHNlIGlmIChSdHBVdGlsaXR5
OjpTdHJpbmdDb21wYXJlKHBheWxvYWROYW1lLCAidGVsZXBob25lLWV2ZW50IiwgMTUpKSB7Cisg
IH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25hbWUsICJ0ZWxlcGhv
bmUtZXZlbnQiKSkgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZzZW5kX2F1ZGlvX2NyaXRzZWN0
Xyk7CiAgICAgLy8gRG9uJ3QgYWRkIGl0IHRvIHRoZSBsaXN0CiAgICAgLy8gd2UgZG9udCB3YW50
IHRvIGFsbG93IHNlbmQgd2l0aCBhIERUTUYgcGF5bG9hZHR5cGUKQEAgLTY1LDkgKzY2LDkgQEAg
aW50MzJfdCBSVFBTZW5kZXJBdWRpbzo6UmVnaXN0ZXJBdWRpb1BheWxvYWQoCiAgICAgcmV0dXJu
IDA7CiAgIH0KICAgKnBheWxvYWQgPSBuZXcgUnRwVXRpbGl0eTo6UGF5bG9hZCgKLSAgICAgIHBh
eWxvYWROYW1lLAorICAgICAgcGF5bG9hZF9uYW1lLAogICAgICAgUGF5bG9hZFVuaW9uKEF1ZGlv
UGF5bG9hZHsKLSAgICAgICAgICBTZHBBdWRpb0Zvcm1hdChwYXlsb2FkTmFtZSwgZnJlcXVlbmN5
LCBjaGFubmVscyksIHJhdGV9KSk7CisgICAgICAgICAgU2RwQXVkaW9Gb3JtYXQocGF5bG9hZF9u
YW1lLCBmcmVxdWVuY3ksIGNoYW5uZWxzKSwgcmF0ZX0pKTsKICAgcmV0dXJuIDA7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfYXVkaW8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5k
ZXJfYXVkaW8uaAppbmRleCA2M2RmYzJiOTljMzkzODUyNzgzZDZjODBmNzk3YTRhNTBkM2NhMmNk
Li4xZGJlNWI1ODE3Y2MzZDE2NzQ2Mjk3MTFiMTA2MzQzNDQ1YjEwMGFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfc2VuZGVyX2F1ZGlvLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl9hdWRp
by5oCkBAIC0xMSwxNCArMTEsMTkgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0Vf
UlRQX1NFTkRFUl9BVURJT19IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBf
U0VOREVSX0FVRElPX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQu
aD4KKworI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgogI2luY2x1ZGUgImNv
bW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvZHRtZl9xdWV1ZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9ydGNwX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF9zZW5kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfdXRpbGl0eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9v
bmV0aW1lZXZlbnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIK
KyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIApAQCAtMjcsNyArMzIsNyBAQCBjbGFzcyBSVFBTZW5kZXJBdWRpbyB7CiAgIFJU
UFNlbmRlckF1ZGlvKENsb2NrKiBjbG9jaywgUlRQU2VuZGVyKiBydHBfc2VuZGVyKTsKICAgflJU
UFNlbmRlckF1ZGlvKCk7CiAKLSAgaW50MzJfdCBSZWdpc3RlckF1ZGlvUGF5bG9hZChjb25zdCBj
aGFyIHBheWxvYWROYW1lW1JUUF9QQVlMT0FEX05BTUVfU0laRV0sCisgIGludDMyX3QgUmVnaXN0
ZXJBdWRpb1BheWxvYWQoYWJzbDo6c3RyaW5nX3ZpZXcgcGF5bG9hZF9uYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDhfdCBwYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJlcXVlbmN5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBjaGFubmVscywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9z
ZW5kZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3VuaXR0ZXN0LmNjCmluZGV4
IDg2YjkyZGEyZTAwYjljZDE0Y2JkMzYwNmMzNTU1YjhiYjQxZjc4MTYuLmE2ODdiY2JiMzViMjdh
ZGM3M2I2N2VjZmEwODIwNDRiODIyOTE2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5k
ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl91bml0dGVzdC5jYwpAQCAt
MTg0LDcgKzE4NCw4IEBAIGNsYXNzIFJ0cFNlbmRlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPGJvb2w+IHsKICAgICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5z
cG9ydF8sIHBhY2VyID8gJm1vY2tfcGFjZWRfc2VuZGVyXyA6IG51bGxwdHIsCiAgICAgICAgIG51
bGxwdHIsICZzZXFfbnVtX2FsbG9jYXRvcl8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsCiAgICAgICAgICZtb2NrX3J0Y19ldmVudF9sb2dfLCAmc2VuZF9wYWNrZXRfb2JzZXJ2
ZXJfLAotICAgICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgcG9w
dWxhdGVfbmV0d29yazIpKTsKKyAgICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8s
IG51bGxwdHIsIHBvcHVsYXRlX25ldHdvcmsyLCBudWxscHRyLAorICAgICAgICBmYWxzZSwgZmFs
c2UpKTsKICAgICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAgICAg
cnRwX3NlbmRlcl8tPlNldFRpbWVzdGFtcE9mZnNldCgwKTsKICAgICBydHBfc2VuZGVyXy0+U2V0
U1NSQyhrU3NyYyk7CkBAIC0yNzYsNyArMjc3LDcgQEAgY2xhc3MgVGVzdFJ0cFNlbmRlclZpZGVv
IDogcHVibGljIFJUUFNlbmRlclZpZGVvIHsKICAgVGVzdFJ0cFNlbmRlclZpZGVvKENsb2NrKiBj
bG9jaywKICAgICAgICAgICAgICAgICAgICAgIFJUUFNlbmRlciogcnRwX3NlbmRlciwKICAgICAg
ICAgICAgICAgICAgICAgIEZsZXhmZWNTZW5kZXIqIGZsZXhmZWNfc2VuZGVyKQotICAgICAgOiBS
VFBTZW5kZXJWaWRlbyhjbG9jaywgcnRwX3NlbmRlciwgZmxleGZlY19zZW5kZXIpIHt9CisgICAg
ICA6IFJUUFNlbmRlclZpZGVvKGNsb2NrLCBydHBfc2VuZGVyLCBmbGV4ZmVjX3NlbmRlciwgbnVs
bHB0ciwgZmFsc2UpIHt9CiAgIH5UZXN0UnRwU2VuZGVyVmlkZW8oKSBvdmVycmlkZSB7fQogCiAg
IFN0b3JhZ2VUeXBlIEdldFN0b3JhZ2VUeXBlKGNvbnN0IFJUUFZpZGVvSGVhZGVyJiBoZWFkZXIs
CkBAIC0zODIsNyArMzgzLDggQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIEFzc2lnblNlcXVlbmNl
TnVtYmVyQWxsb3dzUGFkZGluZ09uQXVkaW8pIHsKICAgcnRwX3NlbmRlcl8ucmVzZXQobmV3IFJU
UFNlbmRlcigKICAgICAgIGtFbmFibGVBdWRpbywgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0LCAm
bW9ja19wYWNlZF9zZW5kZXJfLCBudWxscHRyLAogICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJm1vY2tfcnRjX2V2ZW50X2xvZ18sCi0gICAgICBudWxs
cHRyLCAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAg
ICAgIG51bGxwdHIsICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxz
ZSwgbnVsbHB0ciwgZmFsc2UsCisgICAgICBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0VGlt
ZXN0YW1wT2Zmc2V0KDApOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7CiAKQEAgLTQy
OCw3ICs0MzAsOCBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwKICAgcnRwX3Nl
bmRlcl8ucmVzZXQobmV3IFJUUFNlbmRlcigKICAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0
cmFuc3BvcnRfLCBudWxscHRyLCBudWxscHRyLCAmc2VxX251bV9hbGxvY2F0b3JfLAogICAgICAg
JmZlZWRiYWNrX29ic2VydmVyXywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJm1vY2tfcnRj
X2V2ZW50X2xvZ18sCi0gICAgICBudWxscHRyLCAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVy
XywgJm1vY2tfb3ZlcmhlYWRfb2JzZXJ2ZXIsIGZhbHNlKSk7CisgICAgICBudWxscHRyLCAmcmV0
cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgJm1vY2tfb3ZlcmhlYWRfb2JzZXJ2ZXIsIGZhbHNl
LAorICAgICAgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JD
KGtTc3JjKTsKICAgRVhQRUNUX0VRKDAsIHJ0cF9zZW5kZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4
dGVuc2lvbigKICAgICAgICAgICAgICAgICAgICBrUnRwRXh0ZW5zaW9uVHJhbnNwb3J0U2VxdWVu
Y2VOdW1iZXIsCkBAIC00NTUsNyArNDU4LDggQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3RXaXRob3V0
UGFjZXIsIFNlbmRzUGFja2V0c1dpdGhUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcikgewogICBydHBf
c2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAogICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywg
JnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIsICZzZXFfbnVtX2FsbG9jYXRvcl8sCiAgICAg
ICAmZmVlZGJhY2tfb2JzZXJ2ZXJfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAmbW9ja19y
dGNfZXZlbnRfbG9nXywKLSAgICAgICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sICZyZXRyYW5zbWlz
c2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSkpOworICAgICAgJnNlbmRfcGFja2V0
X29ic2VydmVyXywgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNl
LAorICAgICAgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JD
KGtTc3JjKTsKICAgRVhQRUNUX0VRKDAsIHJ0cF9zZW5kZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4
dGVuc2lvbigKICAgICAgICAgICAgICAgICAgICBrUnRwRXh0ZW5zaW9uVHJhbnNwb3J0U2VxdWVu
Y2VOdW1iZXIsCkBAIC00NzksMTMgKzQ4MywxNSBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdFdpdGhv
dXRQYWNlciwgU2VuZHNQYWNrZXRzV2l0aFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKSB7CiAgIEFT
U0VSVF9UUlVFKHBhY2tldC5HZXRFeHRlbnNpb248VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI+KCZ0
cmFuc3BvcnRfc2VxX25vKSk7CiAgIEVYUEVDVF9FUShrVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIs
IHRyYW5zcG9ydF9zZXFfbm8pOwogICBFWFBFQ1RfRVEodHJhbnNwb3J0Xy5sYXN0X29wdGlvbnNf
LnBhY2tldF9pZCwgdHJhbnNwb3J0X3NlcV9ubyk7CisgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydF8u
bGFzdF9vcHRpb25zXy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uKTsKIH0KIAogVEVTVF9QKFJ0cFNl
bmRlclRlc3RXaXRob3V0UGFjZXIsIFBhY2tldE9wdGlvbnNOb1JldHJhbnNtaXNzaW9uKSB7CiAg
IHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCiAgICAgICBmYWxzZSwgJmZha2VfY2xv
Y2tfLCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0ciwgJnNlcV9udW1fYWxsb2NhdG9yXywK
ICAgICAgICZmZWVkYmFja19vYnNlcnZlcl8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsICZt
b2NrX3J0Y19ldmVudF9sb2dfLAotICAgICAgJnNlbmRfcGFja2V0X29ic2VydmVyXywgJnJldHJh
bnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgICAgICAmc2VuZF9w
YWNrZXRfb2JzZXJ2ZXJfLCAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwg
ZmFsc2UsCisgICAgICBudWxscHRyLCBmYWxzZSwgZmFsc2UpKTsKICAgcnRwX3NlbmRlcl8tPlNl
dFNTUkMoa1NzcmMpOwogCiAgIFNlbmRHZW5lcmljUGF5bG9hZCgpOwpAQCAtNDkzLDE2ICs0OTks
NTMgQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3RXaXRob3V0UGFjZXIsIFBhY2tldE9wdGlvbnNOb1Jl
dHJhbnNtaXNzaW9uKSB7CiAgIEVYUEVDVF9GQUxTRSh0cmFuc3BvcnRfLmxhc3Rfb3B0aW9uc18u
aXNfcmV0cmFuc21pdCk7CiB9CiAKLVRFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLCBO
b0FsbG9jYXRpb25JZk5vdFJlZ2lzdGVyZWQpIHsKK1RFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91
dFBhY2VyLAorICAgICAgIFNldHNJbmNsdWRlZEluRmVlZGJhY2tXaGVuVHJhbnNwb3J0U2VxdWVu
Y2VOdW1iZXJFeHRlbnNpb25Jc1JlZ2lzdGVyZWQpIHsKKyAgU2V0VXBSdHBTZW5kZXIoZmFsc2Us
IGZhbHNlKTsKKyAgcnRwX3NlbmRlcl8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKGtSdHBF
eHRlbnNpb25UcmFuc3BvcnRTZXF1ZW5jZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtUcmFuc3BvcnRTZXF1ZW5jZU51bWJlckV4dGVuc2lvbklkKTsK
KyAgRVhQRUNUX0NBTEwoc2VxX251bV9hbGxvY2F0b3JfLCBBbGxvY2F0ZVNlcXVlbmNlTnVtYmVy
KCkpCisgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKGtUcmFuc3BvcnRTZXF1ZW5jZU51
bWJlcikpOworICBFWFBFQ1RfQ0FMTChzZW5kX3BhY2tldF9vYnNlcnZlcl8sIE9uU2VuZFBhY2tl
dCkuVGltZXMoMSk7CisgIFNlbmRHZW5lcmljUGF5bG9hZCgpOworICBFWFBFQ1RfVFJVRSh0cmFu
c3BvcnRfLmxhc3Rfb3B0aW9uc18uaW5jbHVkZWRfaW5fZmVlZGJhY2spOworfQorCitURVNUX1Ao
CisgICAgUnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwKKyAgICBTZXRzSW5jbHVkZWRJbkFsbG9j
YXRpb25XaGVuVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJFeHRlbnNpb25Jc1JlZ2lzdGVyZWQpIHsK
KyAgU2V0VXBSdHBTZW5kZXIoZmFsc2UsIGZhbHNlKTsKKyAgcnRwX3NlbmRlcl8tPlJlZ2lzdGVy
UnRwSGVhZGVyRXh0ZW5zaW9uKGtSdHBFeHRlbnNpb25UcmFuc3BvcnRTZXF1ZW5jZU51bWJlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtUcmFuc3BvcnRTZXF1
ZW5jZU51bWJlckV4dGVuc2lvbklkKTsKKyAgRVhQRUNUX0NBTEwoc2VxX251bV9hbGxvY2F0b3Jf
LCBBbGxvY2F0ZVNlcXVlbmNlTnVtYmVyKCkpCisgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0
dXJuKGtUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcikpOworICBFWFBFQ1RfQ0FMTChzZW5kX3BhY2tl
dF9vYnNlcnZlcl8sIE9uU2VuZFBhY2tldCkuVGltZXMoMSk7CiAgIFNlbmRHZW5lcmljUGF5bG9h
ZCgpOworICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnRfLmxhc3Rfb3B0aW9uc18uaW5jbHVkZWRfaW5f
YWxsb2NhdGlvbik7Cit9CisKK1RFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLAorICAg
ICAgIFNldHNJbmNsdWRlZEluQWxsb2NhdGlvbldoZW5Gb3JjZWRBc1BhcnRPZkFsbG9jYXRpb24p
IHsKKyAgU2V0VXBSdHBTZW5kZXIoZmFsc2UsIGZhbHNlKTsKKyAgcnRwX3NlbmRlcl8tPlNldEFz
UGFydE9mQWxsb2NhdGlvbih0cnVlKTsKKyAgU2VuZEdlbmVyaWNQYXlsb2FkKCk7CisgIEVYUEVD
VF9GQUxTRSh0cmFuc3BvcnRfLmxhc3Rfb3B0aW9uc18uaW5jbHVkZWRfaW5fZmVlZGJhY2spOwor
ICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnRfLmxhc3Rfb3B0aW9uc18uaW5jbHVkZWRfaW5fYWxsb2Nh
dGlvbik7Cit9CisKK1RFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLCBEb2VzblNldElu
Y2x1ZGVkSW5BbGxvY2F0aW9uQnlEZWZhdWx0KSB7CisgIFNldFVwUnRwU2VuZGVyKGZhbHNlLCBm
YWxzZSk7CisgIFNlbmRHZW5lcmljUGF5bG9hZCgpOworICBFWFBFQ1RfRkFMU0UodHJhbnNwb3J0
Xy5sYXN0X29wdGlvbnNfLmluY2x1ZGVkX2luX2ZlZWRiYWNrKTsKKyAgRVhQRUNUX0ZBTFNFKHRy
YW5zcG9ydF8ubGFzdF9vcHRpb25zXy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uKTsKIH0KIAogVEVT
VF9QKFJ0cFNlbmRlclRlc3RXaXRob3V0UGFjZXIsIE9uU2VuZFNpZGVEZWxheVVwZGF0ZWQpIHsK
ICAgdGVzdGluZzo6U3RyaWN0TW9jazxNb2NrU2VuZFNpZGVEZWxheU9ic2VydmVyPiBzZW5kX3Np
ZGVfZGVsYXlfb2JzZXJ2ZXJfOwotICBydHBfc2VuZGVyXy5yZXNldCgKLSAgICAgIG5ldyBSVFBT
ZW5kZXIoZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
ICZzZW5kX3NpZGVfZGVsYXlfb2JzZXJ2ZXJfLAotICAgICAgICAgICAgICAgICAgICAmbW9ja19y
dGNfZXZlbnRfbG9nXywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgZmFsc2UpKTsKKyAgcnRw
X3NlbmRlcl8ucmVzZXQobmV3IFJUUFNlbmRlcigKKyAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18s
ICZ0cmFuc3BvcnRfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAorICAgICAg
bnVsbHB0ciwgbnVsbHB0ciwgJnNlbmRfc2lkZV9kZWxheV9vYnNlcnZlcl8sICZtb2NrX3J0Y19l
dmVudF9sb2dfLAorICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgZmFsc2UsIG51bGxw
dHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7CiAKICAg
Y29uc3QgdWludDhfdCBrUGF5bG9hZFR5cGUgPSAxMjc7CkBAIC01ODAsNyArNjIzLDcgQEAgVEVT
VF9QKFJ0cFNlbmRlclRlc3QsIFNlbmRzUGFja2V0c1dpdGhUcmFuc3BvcnRTZXF1ZW5jZU51bWJl
cikgewogICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sICZtb2NrX3BhY2Vk
X3NlbmRlcl8sIG51bGxwdHIsCiAgICAgICAmc2VxX251bV9hbGxvY2F0b3JfLCAmZmVlZGJhY2tf
b2JzZXJ2ZXJfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAogICAgICAgJm1vY2tfcnRjX2V2
ZW50X2xvZ18sICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sCi0gICAgICAmcmV0cmFuc21pc3Npb25f
cmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgICAgICZyZXRyYW5zbWlzc2lvbl9y
YXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAg
IHJ0cF9zZW5kZXJfLT5TZXRTZXF1ZW5jZU51bWJlcihrU2VxTnVtKTsKICAgcnRwX3NlbmRlcl8t
PlNldFNTUkMoa1NzcmMpOwogICBydHBfc2VuZGVyXy0+U2V0U3RvcmVQYWNrZXRzU3RhdHVzKHRy
dWUsIDEwKTsKQEAgLTY0Nyw4ICs2OTAsOCBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdCwgV3JpdGVz
UGFjZXJFeGl0VG9UaW1pbmdFeHRlbnNpb24pIHsKICAgRVhQRUNUX0VRKGtTdG9yZWRUaW1lSW5N
cywgdmlkZW9fdGltaW5nLnBhY2VyX2V4aXRfZGVsdGFfbXMpOwogfQogCi1URVNUX1AoUnRwU2Vu
ZGVyVGVzdCwgV3JpdGVzTmV0d29yazJUb1RpbWluZ0V4dGVuc2lvbikgewotICBTZXRVcFJ0cFNl
bmRlcih0cnVlLCB0cnVlKTsKK1RFU1RfUChSdHBTZW5kZXJUZXN0LCBXcml0ZXNOZXR3b3JrMlRv
VGltaW5nRXh0ZW5zaW9uV2l0aFBhY2VyKSB7CisgIFNldFVwUnRwU2VuZGVyKC8qcGFjZXI9Ki90
cnVlLCAvKnBvcHVsYXRlX25ldHdvcmsyPSovdHJ1ZSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTdG9y
ZVBhY2tldHNTdGF0dXModHJ1ZSwgMTApOwogICBFWFBFQ1RfRVEoMCwgcnRwX3NlbmRlcl8tPlJl
Z2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKAogICAgICAgICAgICAgICAgICAgIGtSdHBFeHRlbnNp
b25WaWRlb1RpbWluZywga1ZpZGVvVGltaW5nRXh0ZW5zaW9uSWQpKTsKQEAgLTY4Niw2ICs3Mjks
MzEgQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIFdyaXRlc05ldHdvcmsyVG9UaW1pbmdFeHRlbnNp
b24pIHsKICAgRVhQRUNUX0VRKGtQYWNlckV4aXRNcywgdmlkZW9fdGltaW5nLnBhY2VyX2V4aXRf
ZGVsdGFfbXMpOwogfQogCitURVNUX1AoUnRwU2VuZGVyVGVzdCwgV3JpdGVzTmV0d29yazJUb1Rp
bWluZ0V4dGVuc2lvbldpdGhvdXRQYWNlcikgeworICBTZXRVcFJ0cFNlbmRlcigvKnBhY2VyPSov
ZmFsc2UsIC8qcG9wdWxhdGVfbmV0d29yazI9Ki90cnVlKTsKKyAgRVhQRUNUX0VRKDAsIHJ0cF9z
ZW5kZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbigKKyAgICAgICAgICAgICAgICAgICBr
UnRwRXh0ZW5zaW9uVmlkZW9UaW1pbmcsIGtWaWRlb1RpbWluZ0V4dGVuc2lvbklkKSk7CisgIGF1
dG8gcGFja2V0ID0gcnRwX3NlbmRlcl8tPkFsbG9jYXRlUGFja2V0KCk7CisgIHBhY2tldC0+U2V0
TWFya2VyKHRydWUpOworICBwYWNrZXQtPnNldF9jYXB0dXJlX3RpbWVfbXMoZmFrZV9jbG9ja18u
VGltZUluTWlsbGlzZWNvbmRzKCkpOworICBjb25zdCBWaWRlb1NlbmRUaW1pbmcga1ZpZGVvVGlt
aW5nID0gezB1LCAwdSwgMHUsIDB1LCAwdSwgMHUsIHRydWV9OworICBwYWNrZXQtPlNldEV4dGVu
c2lvbjxWaWRlb1RpbWluZ0V4dGVuc2lvbj4oa1ZpZGVvVGltaW5nKTsKKyAgRVhQRUNUX1RSVUUo
cnRwX3NlbmRlcl8tPkFzc2lnblNlcXVlbmNlTnVtYmVyKHBhY2tldC5nZXQoKSkpOworCisgIGNv
bnN0IGludCBrUHJvcGFnYXRlVGltZU1zID0gMTA7CisgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1l
TWlsbGlzZWNvbmRzKGtQcm9wYWdhdGVUaW1lTXMpOworCisgIEVYUEVDVF9UUlVFKHJ0cF9zZW5k
ZXJfLT5TZW5kVG9OZXR3b3JrKHN0ZDo6bW92ZShwYWNrZXQpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrQWxsb3dSZXRyYW5zbWlzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwUGFja2V0U2VuZGVyOjprTm9ybWFsUHJp
b3JpdHkpKTsKKworICBFWFBFQ1RfRVEoMSwgdHJhbnNwb3J0Xy5wYWNrZXRzX3NlbnQoKSk7Cisg
IGFic2w6Om9wdGlvbmFsPFZpZGVvU2VuZFRpbWluZz4gdmlkZW9fdGltaW5nID0KKyAgICAgIHRy
YW5zcG9ydF8ubGFzdF9zZW50X3BhY2tldCgpLkdldEV4dGVuc2lvbjxWaWRlb1RpbWluZ0V4dGVu
c2lvbj4oKTsKKyAgQVNTRVJUX1RSVUUodmlkZW9fdGltaW5nKTsKKyAgRVhQRUNUX0VRKGtQcm9w
YWdhdGVUaW1lTXMsIHZpZGVvX3RpbWluZy0+bmV0d29yazJfdGltZXN0YW1wX2RlbHRhX21zKTsK
K30KKwogVEVTVF9QKFJ0cFNlbmRlclRlc3QsIFRyYWZmaWNTbW9vdGhpbmdXaXRoRXh0ZW5zaW9u
cykgewogICBFWFBFQ1RfQ0FMTChtb2NrX3BhY2VkX3NlbmRlcl8sIEluc2VydFBhY2tldChSdHBQ
YWNrZXRTZW5kZXI6OmtOb3JtYWxQcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga1NzcmMsIGtTZXFOdW0sIF8sIF8sIF8pKTsKQEAgLTk0MCw3
ICsxMDA4LDcgQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIE9uU2VuZFBhY2tldE5vdFVwZGF0ZWRX
aXRob3V0U2VxTnVtQWxsb2NhdG9yKSB7CiAgICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJh
bnNwb3J0XywgJm1vY2tfcGFjZWRfc2VuZGVyXywgbnVsbHB0ciwKICAgICAgIG51bGxwdHIgLyog
VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJBbGxvY2F0b3IgKi8sIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsCiAgICAgICBudWxscHRyLCBudWxscHRyLCAmc2VuZF9wYWNrZXRfb2JzZXJ2ZXJfLCAm
cmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywKLSAgICAgIG51bGxwdHIsIGZhbHNlKSk7Cisg
ICAgICBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5k
ZXJfLT5TZXRTZXF1ZW5jZU51bWJlcihrU2VxTnVtKTsKICAgcnRwX3NlbmRlcl8tPlNldFNTUkMo
a1NzcmMpOwogICBFWFBFQ1RfRVEoMCwgcnRwX3NlbmRlcl8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0
ZW5zaW9uKApAQCAtOTY2LDcgKzEwMzQsNyBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdCwgU2VuZFJl
ZHVuZGFudFBheWxvYWRzKSB7CiAgIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCiAg
ICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0LCAmbW9ja19wYWNlZF9zZW5kZXJf
LCBudWxscHRyLCBudWxscHRyLAogICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgJm1vY2tfcnRjX2V2ZW50X2xvZ18sIG51bGxwdHIsCi0gICAgICAmcmV0cmFuc21pc3Np
b25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgICAgICZyZXRyYW5zbWlzc2lv
bl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7
CiAgIHJ0cF9zZW5kZXJfLT5TZXRTZXF1ZW5jZU51bWJlcihrU2VxTnVtKTsKICAgcnRwX3NlbmRl
cl8tPlNldFNTUkMoa1NzcmMpOwogICBydHBfc2VuZGVyXy0+U2V0UnR4UGF5bG9hZFR5cGUoa1J0
eFBheWxvYWQsIGtQYXlsb2FkKTsKQEAgLTEwOTAsNyArMTE1OCw3IEBAIFRFU1RfUChSdHBTZW5k
ZXJUZXN0LCBTZW5kRmxleGZlY1BhY2tldHMpIHsKICAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18s
ICZ0cmFuc3BvcnRfLCAmbW9ja19wYWNlZF9zZW5kZXJfLCAmZmxleGZlY19zZW5kZXIsCiAgICAg
ICAmc2VxX251bV9hbGxvY2F0b3JfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LAogICAgICAgJm1vY2tfcnRjX2V2ZW50X2xvZ18sICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sCi0g
ICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAg
ICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0
ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtNZWRpYVNzcmMpOwog
ICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAgIHJ0cF9zZW5kZXJf
LT5TZXRTdG9yZVBhY2tldHNTdGF0dXModHJ1ZSwgMTApOwpAQCAtMTE1MCw3ICsxMjE4LDcgQEAg
VEVTVF9QKFJ0cFNlbmRlclRlc3QsIE5vRmxleGZlY0ZvclRpbWluZ0ZyYW1lcykgewogICAgICAg
ZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sICZtb2NrX3BhY2VkX3NlbmRlcl8sICZm
bGV4ZmVjX3NlbmRlciwKICAgICAgICZzZXFfbnVtX2FsbG9jYXRvcl8sIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsCiAgICAgICAmbW9ja19ydGNfZXZlbnRfbG9nXywgJnNlbmRf
cGFja2V0X29ic2VydmVyXywKLSAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBu
dWxscHRyLCBmYWxzZSkpOworICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51
bGxwdHIsIGZhbHNlLCBudWxscHRyLCBmYWxzZSwgZmFsc2UpKTsKICAgcnRwX3NlbmRlcl8tPlNl
dFNTUkMoa01lZGlhU3NyYyk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTZXF1ZW5jZU51bWJlcihrU2Vx
TnVtKTsKICAgcnRwX3NlbmRlcl8tPlNldFN0b3JlUGFja2V0c1N0YXR1cyh0cnVlLCAxMCk7CkBA
IC0xMjQ1LDExICsxMzEzLDExIEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLCBT
ZW5kRmxleGZlY1BhY2tldHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyIC8qIHJ0cF9zdGF0ZSAqLywgJmZha2VfY2xvY2tfKTsKIAogICAvLyBSZXNldCB8cnRwX3Nl
bmRlcl98IHRvIHVzZSBGbGV4RkVDLgotICBydHBfc2VuZGVyXy5yZXNldCgKLSAgICAgIG5ldyBS
VFBTZW5kZXIoZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsICZmbGV4
ZmVjX3NlbmRlciwKLSAgICAgICAgICAgICAgICAgICAgJnNlcV9udW1fYWxsb2NhdG9yXywgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgJm1v
Y2tfcnRjX2V2ZW50X2xvZ18sICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sCi0gICAgICAgICAgICAg
ICAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSkpOwor
ICBydHBfc2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAorICAgICAgZmFsc2UsICZmYWtlX2Ns
b2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsICZmbGV4ZmVjX3NlbmRlciwKKyAgICAgICZzZXFf
bnVtX2FsbG9jYXRvcl8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAg
ICAmbW9ja19ydGNfZXZlbnRfbG9nXywgJnNlbmRfcGFja2V0X29ic2VydmVyXywKKyAgICAgICZy
ZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFs
c2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtNZWRpYVNzcmMpOwogICBydHBf
c2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAKQEAgLTEzMTMsNyArMTM4MSw3
IEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBGZWNPdmVyaGVhZFJhdGUpIHsKICAgICAgIGZhbHNl
LCAmZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRfLCAmbW9ja19wYWNlZF9zZW5kZXJfLCAmZmxleGZl
Y19zZW5kZXIsCiAgICAgICAmc2VxX251bV9hbGxvY2F0b3JfLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLAogICAgICAgJm1vY2tfcnRjX2V2ZW50X2xvZ18sICZzZW5kX3BhY2tl
dF9vYnNlcnZlcl8sCi0gICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0
ciwgZmFsc2UpKTsKKyAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRy
LCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JD
KGtNZWRpYVNzcmMpOwogICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7
CiAKQEAgLTEzNjUsNyArMTQzMyw3IEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBGcmFtZUNvdW50
Q2FsbGJhY2tzKSB7CiAgIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCiAgICAgICBm
YWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgJm1vY2tfcGFjZWRfc2VuZGVyXywgbnVs
bHB0ciwgbnVsbHB0ciwKICAgICAgIG51bGxwdHIsIG51bGxwdHIsICZjYWxsYmFjaywgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJf
LCBudWxscHRyLCBmYWxzZSkpOworICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8s
IG51bGxwdHIsIGZhbHNlLCBudWxscHRyLCBmYWxzZSwgZmFsc2UpKTsKICAgcnRwX3NlbmRlcl8t
PlNldFNTUkMoa1NzcmMpOwogICBjaGFyIHBheWxvYWRfbmFtZVtSVFBfUEFZTE9BRF9OQU1FX1NJ
WkVdID0gIkdFTkVSSUMiOwogICBjb25zdCB1aW50OF90IHBheWxvYWRfdHlwZSA9IDEyNzsKQEAg
LTE0MjUsMTAgKzE0OTMsMTAgQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIEJpdHJhdGVDYWxsYmFj
a3MpIHsKICAgICB1aW50MzJfdCB0b3RhbF9iaXRyYXRlXzsKICAgICB1aW50MzJfdCByZXRyYW5z
bWl0X2JpdHJhdGVfOwogICB9IGNhbGxiYWNrOwotICBydHBfc2VuZGVyXy5yZXNldCgKLSAgICAg
IG5ldyBSVFBTZW5kZXIoZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgIG51bGxwdHIsICZjYWxsYmFj
aywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgIHJ0
cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCisgICAgICBmYWxzZSwgJmZha2VfY2xvY2tf
LCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAg
ICZjYWxsYmFjaywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICZy
ZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFs
c2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsKIAogICAvLyBTaW11
bGF0ZSBrTnVtUGFja2V0cyBzZW50IHdpdGgga1BhY2tldEludGVydmFsIG1zIGludGVydmFscywg
d2l0aCB0aGUKQEAgLTE0ODUsMTAgKzE1NTMsMTAgQEAgY2xhc3MgUnRwU2VuZGVyQXVkaW9UZXN0
IDogcHVibGljIFJ0cFNlbmRlclRlc3QgewogCiAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7CiAg
ICAgcGF5bG9hZF8gPSBrQXVkaW9QYXlsb2FkOwotICAgIHJ0cF9zZW5kZXJfLnJlc2V0KAotICAg
ICAgICBuZXcgUlRQU2VuZGVyKHRydWUsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxw
dHIsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLCAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsK
KyAgICBydHBfc2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAorICAgICAgICB0cnVlLCAmZmFr
ZV9jbG9ja18sICZ0cmFuc3BvcnRfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LAorICAgICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAor
ICAgICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51
bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsK
ICAgICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAgIH0KQEAgLTIx
NTEsMTAgKzIyMTksMTEgQEAgVEVTVF9QKFJ0cFNlbmRlclZpZGVvVGVzdCwKIAogVEVTVF9QKFJ0
cFNlbmRlclRlc3QsIE9uT3ZlcmhlYWRDaGFuZ2VkKSB7CiAgIE1vY2tPdmVyaGVhZE9ic2VydmVy
IG1vY2tfb3ZlcmhlYWRfb2JzZXJ2ZXI7Ci0gIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5k
ZXIoCi0gICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywg
Jm1vY2tfb3ZlcmhlYWRfb2JzZXJ2ZXIsIGZhbHNlKSk7CisgIHJ0cF9zZW5kZXJfLnJlc2V0KAor
ICAgICAgbmV3IFJUUFNlbmRlcihmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sICZtb2NrX292ZXJoZWFkX29ic2Vy
dmVyLAorICAgICAgICAgICAgICAgICAgICBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7
CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsKIAogICAvLyBSVFAgb3ZlcmhlYWQgaXMg
MTJCLgpAQCAtMjE3MiwxMCArMjI0MSwxMSBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdCwgT25PdmVy
aGVhZENoYW5nZWQpIHsKIAogVEVTVF9QKFJ0cFNlbmRlclRlc3QsIERvZXNOb3RVcGRhdGVPdmVy
aGVhZE9uRXF1YWxTaXplKSB7CiAgIE1vY2tPdmVyaGVhZE9ic2VydmVyIG1vY2tfb3ZlcmhlYWRf
b2JzZXJ2ZXI7Ci0gIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCi0gICAgICBmYWxz
ZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwKLSAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsCi0gICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgJm1vY2tfb3ZlcmhlYWRf
b2JzZXJ2ZXIsIGZhbHNlKSk7CisgIHJ0cF9zZW5kZXJfLnJlc2V0KAorICAgICAgbmV3IFJUUFNl
bmRlcihmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgJnJldHJhbnNt
aXNzaW9uX3JhdGVfbGltaXRlcl8sICZtb2NrX292ZXJoZWFkX29ic2VydmVyLAorICAgICAgICAg
ICAgICAgICAgICBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJf
LT5TZXRTU1JDKGtTc3JjKTsKIAogICBFWFBFQ1RfQ0FMTChtb2NrX292ZXJoZWFkX29ic2VydmVy
LCBPbk92ZXJoZWFkQ2hhbmdlZChfKSkuVGltZXMoMSk7CkBAIC0yMTg1LDEwICsyMjU1LDEwIEBA
IFRFU1RfUChSdHBTZW5kZXJUZXN0LCBEb2VzTm90VXBkYXRlT3ZlcmhlYWRPbkVxdWFsU2l6ZSkg
ewogCiBURVNUX1AoUnRwU2VuZGVyVGVzdCwgU2VuZHNLZWVwQWxpdmUpIHsKICAgTW9ja1RyYW5z
cG9ydCB0cmFuc3BvcnQ7Ci0gIHJ0cF9zZW5kZXJfLnJlc2V0KAotICAgICAgbmV3IFJUUFNlbmRl
cihmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0LCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLAotICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCAmbW9ja19ydGNfZXZlbnRfbG9nXywKLSAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwg
JnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgIHJ0cF9z
ZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCisgICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAm
dHJhbnNwb3J0LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAorICAgICAgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJm1vY2tfcnRjX2V2ZW50X2xvZ18sIG51bGxwdHIsCisg
ICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51bGxw
dHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1Nl
cU51bSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRUaW1lc3RhbXBPZmZzZXQoMCk7CiAgIHJ0cF9zZW5k
ZXJfLT5TZXRTU1JDKGtTc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdmlk
ZW8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3ZpZGVvLmNjCmluZGV4IGU4ZjBlYTVjOGRlMDcx
ODBhY2JmMTkzMGM2NTJhMjhhYTFkYjg2MzUuLmNiMGI2NjU2MDg0NTU3NDVjY2QwNWNiN2E1Y2E5
ZTliNTBiNzEyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdmlkZW8uY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3NlbmRlcl92aWRlby5jYwpAQCAtMTksNiArMTksOCBAQAogI2luY2x1
ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9tYXRjaC5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVlbmNyeXB0
b3JpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0
Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8u
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dl
bmVyaWMuaCIKQEAgLTkxLDYgKzkzLDExIEBAIHZvaWQgQWRkUnRwSGVhZGVyRXh0ZW5zaW9ucyhj
b25zdCBSVFBWaWRlb0hlYWRlciYgdmlkZW9faGVhZGVyLAogICAgICAgZ2VuZXJpY19kZXNjcmlw
dG9yLlNldFNwYXRpYWxMYXllcnNCaXRtYXNrKHNwYXRpYWxfYmltYXNrKTsKIAogICAgICAgZ2Vu
ZXJpY19kZXNjcmlwdG9yLlNldFRlbXBvcmFsTGF5ZXIodmlkZW9faGVhZGVyLmdlbmVyaWMtPnRl
bXBvcmFsX2luZGV4KTsKKworICAgICAgaWYgKGZyYW1lX3R5cGUgPT0ga1ZpZGVvRnJhbWVLZXkp
IHsKKyAgICAgICAgZ2VuZXJpY19kZXNjcmlwdG9yLlNldFJlc29sdXRpb24odmlkZW9faGVhZGVy
LndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb19o
ZWFkZXIuaGVpZ2h0KTsKKyAgICAgIH0KICAgICB9CiAgICAgcGFja2V0LT5TZXRFeHRlbnNpb248
UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbj4oCiAgICAgICAgIGdlbmVyaWNfZGVz
Y3JpcHRvcik7CkBAIC0xMTUsNyArMTIyLDkgQEAgYm9vbCBNaW5pbWl6ZURlc2NyaXB0b3IoY29u
c3QgUlRQVmlkZW9IZWFkZXImIGZ1bGwsIFJUUFZpZGVvSGVhZGVyKiBtaW5pbWl6ZWQpIHsKIAog
UlRQU2VuZGVyVmlkZW86OlJUUFNlbmRlclZpZGVvKENsb2NrKiBjbG9jaywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSVFBTZW5kZXIqIHJ0cF9zZW5kZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmxleGZlY1NlbmRlciogZmxleGZlY19zZW5kZXIpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmxleGZlY1NlbmRlciogZmxleGZlY19zZW5kZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZy
YW1lX2VuY3J5cHRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlcXVp
cmVfZnJhbWVfZW5jcnlwdGlvbikKICAgICA6IHJ0cF9zZW5kZXJfKHJ0cF9zZW5kZXIpLAogICAg
ICAgY2xvY2tfKGNsb2NrKSwKICAgICAgIHZpZGVvX3R5cGVfKGtWaWRlb0NvZGVjR2VuZXJpYyks
CkBAIC0xMjgsNyArMTM3LDkgQEAgUlRQU2VuZGVyVmlkZW86OlJUUFNlbmRlclZpZGVvKENsb2Nr
KiBjbG9jaywKICAgICAgIGRlbHRhX2ZlY19wYXJhbXNfezAsIDEsIGtGZWNNYXNrUmFuZG9tfSwK
ICAgICAgIGtleV9mZWNfcGFyYW1zX3swLCAxLCBrRmVjTWFza1JhbmRvbX0sCiAgICAgICBmZWNf
Yml0cmF0ZV8oMTAwMCwgUmF0ZVN0YXRpc3RpY3M6OmtCcHNTY2FsZSksCi0gICAgICB2aWRlb19i
aXRyYXRlXygxMDAwLCBSYXRlU3RhdGlzdGljczo6a0Jwc1NjYWxlKSB7fQorICAgICAgdmlkZW9f
Yml0cmF0ZV8oMTAwMCwgUmF0ZVN0YXRpc3RpY3M6OmtCcHNTY2FsZSksCisgICAgICBmcmFtZV9l
bmNyeXB0b3JfKGZyYW1lX2VuY3J5cHRvciksCisgICAgICByZXF1aXJlX2ZyYW1lX2VuY3J5cHRp
b25fKHJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbikge30KIAogUlRQU2VuZGVyVmlkZW86On5SVFBT
ZW5kZXJWaWRlbygpIHt9CiAKQEAgLTE0MiwxOCArMTUzLDE4IEBAIFZpZGVvQ29kZWNUeXBlIFJU
UFNlbmRlclZpZGVvOjpWaWRlb0NvZGVjVHlwZSgpIGNvbnN0IHsKIAogLy8gU3RhdGljLgogUnRw
VXRpbGl0eTo6UGF5bG9hZCogUlRQU2VuZGVyVmlkZW86OkNyZWF0ZVZpZGVvUGF5bG9hZCgKLSAg
ICBjb25zdCBjaGFyIHBheWxvYWRfbmFtZVtSVFBfUEFZTE9BRF9OQU1FX1NJWkVdLAorICAgIGFi
c2w6OnN0cmluZ192aWV3IHBheWxvYWRfbmFtZSwKICAgICBpbnQ4X3QgcGF5bG9hZF90eXBlKSB7
CiAgIGVudW0gVmlkZW9Db2RlY1R5cGUgdmlkZW9fdHlwZSA9IGtWaWRlb0NvZGVjR2VuZXJpYzsK
LSAgaWYgKFJ0cFV0aWxpdHk6OlN0cmluZ0NvbXBhcmUocGF5bG9hZF9uYW1lLCAiVlA4IiwgMykp
IHsKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGF5bG9hZF9uYW1lLCAiVlA4IikpIHsK
ICAgICB2aWRlb190eXBlID0ga1ZpZGVvQ29kZWNWUDg7Ci0gIH0gZWxzZSBpZiAoUnRwVXRpbGl0
eTo6U3RyaW5nQ29tcGFyZShwYXlsb2FkX25hbWUsICJWUDkiLCAzKSkgeworICB9IGVsc2UgaWYg
KGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGF5bG9hZF9uYW1lLCAiVlA5IikpIHsKICAgICB2aWRl
b190eXBlID0ga1ZpZGVvQ29kZWNWUDk7Ci0gIH0gZWxzZSBpZiAoUnRwVXRpbGl0eTo6U3RyaW5n
Q29tcGFyZShwYXlsb2FkX25hbWUsICJIMjY0IiwgNCkpIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKHBheWxvYWRfbmFtZSwgIkgyNjQiKSkgewogICAgIHZpZGVvX3R5cGUg
PSBrVmlkZW9Db2RlY0gyNjQ7Ci0gIH0gZWxzZSBpZiAoUnRwVXRpbGl0eTo6U3RyaW5nQ29tcGFy
ZShwYXlsb2FkX25hbWUsICJJNDIwIiwgNCkpIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKHBheWxvYWRfbmFtZSwgIkk0MjAiKSkgewogICAgIHZpZGVvX3R5cGUgPSBrVmlk
ZW9Db2RlY0dlbmVyaWM7Ci0gIH0gZWxzZSBpZiAoUnRwVXRpbGl0eTo6U3RyaW5nQ29tcGFyZShw
YXlsb2FkX25hbWUsICJzdGVyZW8iLCA2KSkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UocGF5bG9hZF9uYW1lLCAic3RlcmVvIikpIHsKICAgICB2aWRlb190eXBlID0ga1Zp
ZGVvQ29kZWNHZW5lcmljOwogICB9IGVsc2UgewogICAgIHZpZGVvX3R5cGUgPSBrVmlkZW9Db2Rl
Y0dlbmVyaWM7CkBAIC0zODcsMjAgKzM5OCwxOSBAQCBib29sIFJUUFNlbmRlclZpZGVvOjpTZW5k
VmlkZW8oZW51bSBWaWRlb0NvZGVjVHlwZSB2aWRlb190eXBlLAogICBpbnQgcGFja2V0X2NhcGFj
aXR5ID0gcnRwX3NlbmRlcl8tPk1heFJ0cFBhY2tldFNpemUoKSAtIGZlY19wYWNrZXRfb3Zlcmhl
YWQgLQogICAgICAgICAgICAgICAgICAgICAgICAgKHJ0cF9zZW5kZXJfLT5SdHhTdGF0dXMoKSA/
IGtSdHhIZWFkZXJTaXplIDogMCk7CiAKLSAgYXV0byBjcmVhdGVfcGFja2V0ID0gWyZdIHsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBydHBfcGFja2V0ID0gcnRwX3NlbmRl
cl8tPkFsbG9jYXRlUGFja2V0KCk7Ci0gICAgUlRDX0RDSEVDS19MRShwYWNrZXRfY2FwYWNpdHks
IHJ0cF9wYWNrZXQtPmNhcGFjaXR5KCkpOwotCi0gICAgcnRwX3BhY2tldC0+U2V0UGF5bG9hZFR5
cGUocGF5bG9hZF90eXBlKTsKLSAgICBydHBfcGFja2V0LT5TZXRUaW1lc3RhbXAocnRwX3RpbWVz
dGFtcCk7Ci0gICAgcnRwX3BhY2tldC0+c2V0X2NhcHR1cmVfdGltZV9tcyhjYXB0dXJlX3RpbWVf
bXMpOwotICAgIHJldHVybiBydHBfcGFja2V0OwotICB9OworICBzdGQ6OnVuaXF1ZV9wdHI8UnRw
UGFja2V0VG9TZW5kPiBzaW5nbGVfcGFja2V0ID0KKyAgICAgIHJ0cF9zZW5kZXJfLT5BbGxvY2F0
ZVBhY2tldCgpOworICBSVENfRENIRUNLX0xFKHBhY2tldF9jYXBhY2l0eSwgc2luZ2xlX3BhY2tl
dC0+Y2FwYWNpdHkoKSk7CisgIHNpbmdsZV9wYWNrZXQtPlNldFBheWxvYWRUeXBlKHBheWxvYWRf
dHlwZSk7CisgIHNpbmdsZV9wYWNrZXQtPlNldFRpbWVzdGFtcChydHBfdGltZXN0YW1wKTsKKyAg
c2luZ2xlX3BhY2tldC0+c2V0X2NhcHR1cmVfdGltZV9tcyhjYXB0dXJlX3RpbWVfbXMpOwogCi0g
IGF1dG8gZmlyc3RfcGFja2V0ID0gY3JlYXRlX3BhY2tldCgpOwotICBhdXRvIG1pZGRsZV9wYWNr
ZXQgPSBhYnNsOjptYWtlX3VuaXF1ZTxSdHBQYWNrZXRUb1NlbmQ+KCpmaXJzdF9wYWNrZXQpOwot
ICBhdXRvIGxhc3RfcGFja2V0ID0gYWJzbDo6bWFrZV91bmlxdWU8UnRwUGFja2V0VG9TZW5kPigq
Zmlyc3RfcGFja2V0KTsKKyAgYXV0byBmaXJzdF9wYWNrZXQgPSBhYnNsOjptYWtlX3VuaXF1ZTxS
dHBQYWNrZXRUb1NlbmQ+KCpzaW5nbGVfcGFja2V0KTsKKyAgYXV0byBtaWRkbGVfcGFja2V0ID0g
YWJzbDo6bWFrZV91bmlxdWU8UnRwUGFja2V0VG9TZW5kPigqc2luZ2xlX3BhY2tldCk7CisgIGF1
dG8gbGFzdF9wYWNrZXQgPSBhYnNsOjptYWtlX3VuaXF1ZTxSdHBQYWNrZXRUb1NlbmQ+KCpzaW5n
bGVfcGFja2V0KTsKICAgLy8gU2ltcGxlc3Qgd2F5IHRvIGVzdGltYXRlIGhvdyBtdWNoIGV4dGVu
c2lvbnMgd291bGQgb2NjdXB5IGlzIHRvIHNldCB0aGVtLgorICBBZGRSdHBIZWFkZXJFeHRlbnNp
b25zKCp2aWRlb19oZWFkZXIsIGZyYW1lX3R5cGUsIHNldF92aWRlb19yb3RhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAvKmZpcnN0PSovdHJ1ZSwgLypsYXN0PSovdHJ1ZSwgc2luZ2xl
X3BhY2tldC5nZXQoKSk7CiAgIEFkZFJ0cEhlYWRlckV4dGVuc2lvbnMoKnZpZGVvX2hlYWRlciwg
ZnJhbWVfdHlwZSwgc2V0X3ZpZGVvX3JvdGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
IC8qZmlyc3Q9Ki90cnVlLCAvKmxhc3Q9Ki9mYWxzZSwgZmlyc3RfcGFja2V0LmdldCgpKTsKICAg
QWRkUnRwSGVhZGVyRXh0ZW5zaW9ucygqdmlkZW9faGVhZGVyLCBmcmFtZV90eXBlLCBzZXRfdmlk
ZW9fcm90YXRpb24sCkBAIC00MDgsMTIgKzQxOCwxNyBAQCBib29sIFJUUFNlbmRlclZpZGVvOjpT
ZW5kVmlkZW8oZW51bSBWaWRlb0NvZGVjVHlwZSB2aWRlb190eXBlLAogICBBZGRSdHBIZWFkZXJF
eHRlbnNpb25zKCp2aWRlb19oZWFkZXIsIGZyYW1lX3R5cGUsIHNldF92aWRlb19yb3RhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKmZpcnN0PSovZmFsc2UsIC8qbGFzdD0qL3RydWUs
IGxhc3RfcGFja2V0LmdldCgpKTsKIAorICBSVENfRENIRUNLX0dUKHBhY2tldF9jYXBhY2l0eSwg
c2luZ2xlX3BhY2tldC0+aGVhZGVyc19zaXplKCkpOwogICBSVENfRENIRUNLX0dUKHBhY2tldF9j
YXBhY2l0eSwgZmlyc3RfcGFja2V0LT5oZWFkZXJzX3NpemUoKSk7CiAgIFJUQ19EQ0hFQ0tfR1Qo
cGFja2V0X2NhcGFjaXR5LCBtaWRkbGVfcGFja2V0LT5oZWFkZXJzX3NpemUoKSk7CiAgIFJUQ19E
Q0hFQ0tfR1QocGFja2V0X2NhcGFjaXR5LCBsYXN0X3BhY2tldC0+aGVhZGVyc19zaXplKCkpOwog
ICBSdHBQYWNrZXRpemVyOjpQYXlsb2FkU2l6ZUxpbWl0cyBsaW1pdHM7CiAgIGxpbWl0cy5tYXhf
cGF5bG9hZF9sZW4gPSBwYWNrZXRfY2FwYWNpdHkgLSBtaWRkbGVfcGFja2V0LT5oZWFkZXJzX3Np
emUoKTsKIAorICBSVENfRENIRUNLX0dFKHNpbmdsZV9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpLCBt
aWRkbGVfcGFja2V0LT5oZWFkZXJzX3NpemUoKSk7CisgIGxpbWl0cy5zaW5nbGVfcGFja2V0X3Jl
ZHVjdGlvbl9sZW4gPQorICAgICAgc2luZ2xlX3BhY2tldC0+aGVhZGVyc19zaXplKCkgLSBtaWRk
bGVfcGFja2V0LT5oZWFkZXJzX3NpemUoKTsKKwogICBSVENfRENIRUNLX0dFKGZpcnN0X3BhY2tl
dC0+aGVhZGVyc19zaXplKCksIG1pZGRsZV9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpKTsKICAgbGlt
aXRzLmZpcnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0KICAgICAgIGZpcnN0X3BhY2tldC0+aGVh
ZGVyc19zaXplKCkgLSBtaWRkbGVfcGFja2V0LT5oZWFkZXJzX3NpemUoKTsKQEAgLTQyNCw5ICs0
MzksNDIgQEAgYm9vbCBSVFBTZW5kZXJWaWRlbzo6U2VuZFZpZGVvKGVudW0gVmlkZW9Db2RlY1R5
cGUgdmlkZW9fdHlwZSwKIAogICBSVFBWaWRlb0hlYWRlciBtaW5pbWl6ZWRfdmlkZW9faGVhZGVy
OwogICBjb25zdCBSVFBWaWRlb0hlYWRlciogcGFja2V0aXplX3ZpZGVvX2hlYWRlciA9IHZpZGVv
X2hlYWRlcjsKLSAgaWYgKGZpcnN0X3BhY2tldC0+SGFzRXh0ZW5zaW9uPFJ0cEdlbmVyaWNGcmFt
ZURlc2NyaXB0b3JFeHRlbnNpb24+KCkgJiYKLSAgICAgIE1pbmltaXplRGVzY3JpcHRvcigqdmlk
ZW9faGVhZGVyLCAmbWluaW1pemVkX3ZpZGVvX2hlYWRlcikpIHsKLSAgICBwYWNrZXRpemVfdmlk
ZW9faGVhZGVyID0gJm1pbmltaXplZF92aWRlb19oZWFkZXI7CisgIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IHVpbnQ4X3Q+IGdlbmVyaWNfZGVzY3JpcHRvcl9yYXcgPQorICAgICAgZmlyc3RfcGFja2V0
LT5HZXRSYXdFeHRlbnNpb248UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbj4oKTsK
KyAgaWYgKCFnZW5lcmljX2Rlc2NyaXB0b3JfcmF3LmVtcHR5KCkpIHsKKyAgICBpZiAoTWluaW1p
emVEZXNjcmlwdG9yKCp2aWRlb19oZWFkZXIsICZtaW5pbWl6ZWRfdmlkZW9faGVhZGVyKSkgewor
ICAgICAgcGFja2V0aXplX3ZpZGVvX2hlYWRlciA9ICZtaW5pbWl6ZWRfdmlkZW9faGVhZGVyOwor
ICAgIH0KKyAgfQorCisgIC8vIFRPRE8oYmVud3JpZ2h0QHdlYnJ0Yy5vcmcpIC0gQWxsb2NhdGUg
ZW5vdWdoIHRvIGFsd2F5cyBlbmNyeXB0IGlubGluZS4KKyAgcnRjOjpCdWZmZXIgZW5jcnlwdGVk
X3ZpZGVvX3BheWxvYWQ7CisgIGlmIChmcmFtZV9lbmNyeXB0b3JfICE9IG51bGxwdHIpIHsKKyAg
ICBpZiAoZ2VuZXJpY19kZXNjcmlwdG9yX3Jhdy5lbXB0eSgpKSB7CisgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgY29uc3Qgc2l6ZV90IG1heF9jaXBoZXJ0ZXh0X3NpemUgPQorICAg
ICAgICBmcmFtZV9lbmNyeXB0b3JfLT5HZXRNYXhDaXBoZXJ0ZXh0Qnl0ZVNpemUoY3JpY2tldDo6
TUVESUFfVFlQRV9WSURFTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBheWxvYWRfc2l6ZSk7CisgICAgZW5jcnlwdGVkX3ZpZGVvX3BheWxvYWQu
U2V0U2l6ZShtYXhfY2lwaGVydGV4dF9zaXplKTsKKworICAgIHNpemVfdCBieXRlc193cml0dGVu
ID0gMDsKKyAgICBpZiAoZnJhbWVfZW5jcnlwdG9yXy0+RW5jcnlwdCgKKyAgICAgICAgICAgIGNy
aWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIGZpcnN0X3BhY2tldC0+U3NyYygpLAorICAgICAgICAg
ICAgLyphZGRpdGlvbmFsX2RhdGE9Ki9udWxscHRyLAorICAgICAgICAgICAgcnRjOjpNYWtlQXJy
YXlWaWV3KHBheWxvYWRfZGF0YSwgcGF5bG9hZF9zaXplKSwKKyAgICAgICAgICAgIGVuY3J5cHRl
ZF92aWRlb19wYXlsb2FkLCAmYnl0ZXNfd3JpdHRlbikgIT0gMCkgeworICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGVuY3J5cHRlZF92aWRlb19wYXlsb2FkLlNldFNpemUoYnl0ZXNf
d3JpdHRlbik7CisgICAgcGF5bG9hZF9kYXRhID0gZW5jcnlwdGVkX3ZpZGVvX3BheWxvYWQuZGF0
YSgpOworICAgIHBheWxvYWRfc2l6ZSA9IGVuY3J5cHRlZF92aWRlb19wYXlsb2FkLnNpemUoKTsK
KyAgfSBlbHNlIGlmIChyZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb25fKSB7CisgICAgUlRDX0xPRyhM
U19XQVJOSU5HKQorICAgICAgICA8PCAiTm8gRnJhbWVFbmNyeXB0b3IgaXMgYXR0YWNoZWQgdG8g
dGhpcyB2aWRlbyBzZW5kaW5nIHN0cmVhbSBidXQgIgorICAgICAgICA8PCAib25lIGlzIHJlcXVp
cmVkIHNpbmNlIHJlcXVpcmVfZnJhbWVfZW5jcnlwdG9yIGlzIHNldCI7CiAgIH0KIAogICBzdGQ6
OnVuaXF1ZV9wdHI8UnRwUGFja2V0aXplcj4gcGFja2V0aXplciA9IFJ0cFBhY2tldGl6ZXI6OkNy
ZWF0ZSgKQEAgLTQ0NywxNiArNDk1LDkgQEAgYm9vbCBSVFBTZW5kZXJWaWRlbzo6U2VuZFZpZGVv
KGVudW0gVmlkZW9Db2RlY1R5cGUgdmlkZW9fdHlwZSwKICAgICBpbnQgZXhwZWN0ZWRfcGF5bG9h
ZF9jYXBhY2l0eTsKICAgICAvLyBDaG9vc2UgcmlnaHQgcGFja2V0IHRlbXBsYXRlOgogICAgIGlm
IChudW1fcGFja2V0cyA9PSAxKSB7Ci0gICAgICAvLyBObyBwcmVwYXJlZCB0ZW1wbGF0ZSwgY3Jl
YXRlIGEgbmV3IHBhY2tldC4KLSAgICAgIHBhY2tldCA9IGNyZWF0ZV9wYWNrZXQoKTsKLSAgICAg
IEFkZFJ0cEhlYWRlckV4dGVuc2lvbnMoKnZpZGVvX2hlYWRlciwgZnJhbWVfdHlwZSwgc2V0X3Zp
ZGVvX3JvdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmZpcnN0PSovdHJ1
ZSwgLypsYXN0PSovdHJ1ZSwgcGFja2V0LmdldCgpKTsKLSAgICAgIC8vIFRPRE8oYnVncy53ZWJy
dGMub3JnLzc5OTApOiBSZXZpc2l0IHRoaXMgY2FzZSB3aGVuIHR3byBieXRlIGhlYWRlcgotICAg
ICAgLy8gZXh0ZW5zaW9uIGFyZSBpbXBsZW1lbnRlZCBiZWNhdXNlIHRoZW4gc2luZ2xlIHBhY2tl
dCBtaWdodCBuZWVkIG1vcmUKLSAgICAgIC8vIHNwYWNlIGZvciBleHRlbnNpb25zIHRoYW4gc3Vt
IG9mIGZpcnN0IGFuZCBsYXN0IHBhY2tldCByZWR1Y3Rpb25zLgotICAgICAgZXhwZWN0ZWRfcGF5
bG9hZF9jYXBhY2l0eSA9IGxpbWl0cy5tYXhfcGF5bG9hZF9sZW4gLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiAtCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzLmxhc3RfcGFja2V0X3JlZHVj
dGlvbl9sZW47CisgICAgICBwYWNrZXQgPSBzdGQ6Om1vdmUoc2luZ2xlX3BhY2tldCk7CisgICAg
ICBleHBlY3RlZF9wYXlsb2FkX2NhcGFjaXR5ID0KKyAgICAgICAgICBsaW1pdHMubWF4X3BheWxv
YWRfbGVuIC0gbGltaXRzLnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbjsKICAgICB9IGVsc2Ug
aWYgKGkgPT0gMCkgewogICAgICAgcGFja2V0ID0gc3RkOjptb3ZlKGZpcnN0X3BhY2tldCk7CiAg
ICAgICBleHBlY3RlZF9wYXlsb2FkX2NhcGFjaXR5ID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9zZW5kZXJfdmlkZW8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdmlkZW8uaAppbmRleCBjZTdi
ZTE2MTQ5YzNiMzdhNDRkNzQ2OTMxMTdkNGRjNGVhNjM5YzlhLi5kM2E4OThiNDBhMzA2YTdkYmM0
MTA2MDI5Yzk5ZGU2MWZlYTUzOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3Zp
ZGVvLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl92aWRlby5oCkBAIC0xNCw2ICsxNCw3IEBA
CiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9zdHJpbmdfdmlldy5oIgogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNp
bmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3NlbmRlci5oIgpAQCAtMjksNiAr
MzAsOCBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKKworY2xhc3MgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U7CiBjbGFzcyBS
dHBQYWNrZXRpemVyOwogY2xhc3MgUnRwUGFja2V0VG9TZW5kOwogCkBAIC0zOCwxNCArNDEsMTUg
QEAgY2xhc3MgUlRQU2VuZGVyVmlkZW8gewogCiAgIFJUUFNlbmRlclZpZGVvKENsb2NrKiBjbG9j
aywKICAgICAgICAgICAgICAgICAgUlRQU2VuZGVyKiBydHBTZW5kZXIsCi0gICAgICAgICAgICAg
ICAgIEZsZXhmZWNTZW5kZXIqIGZsZXhmZWNfc2VuZGVyKTsKKyAgICAgICAgICAgICAgICAgRmxl
eGZlY1NlbmRlciogZmxleGZlY19zZW5kZXIsCisgICAgICAgICAgICAgICAgIEZyYW1lRW5jcnlw
dG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IsCisgICAgICAgICAgICAgICAgIGJvb2wgcmVx
dWlyZV9mcmFtZV9lbmNyeXB0aW9uKTsKICAgdmlydHVhbCB+UlRQU2VuZGVyVmlkZW8oKTsKIAog
ICB2aXJ0dWFsIGVudW0gVmlkZW9Db2RlY1R5cGUgVmlkZW9Db2RlY1R5cGUoKSBjb25zdDsKIAot
ICBzdGF0aWMgUnRwVXRpbGl0eTo6UGF5bG9hZCogQ3JlYXRlVmlkZW9QYXlsb2FkKAotICAgICAg
Y29uc3QgY2hhciBwYXlsb2FkX25hbWVbUlRQX1BBWUxPQURfTkFNRV9TSVpFXSwKLSAgICAgIGlu
dDhfdCBwYXlsb2FkX3R5cGUpOworICBzdGF0aWMgUnRwVXRpbGl0eTo6UGF5bG9hZCogQ3JlYXRl
VmlkZW9QYXlsb2FkKGFic2w6OnN0cmluZ192aWV3IHBheWxvYWRfbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ4X3QgcGF5bG9hZF90eXBl
KTsKIAogICBib29sIFNlbmRWaWRlbyhlbnVtIFZpZGVvQ29kZWNUeXBlIHZpZGVvX3R5cGUsCiAg
ICAgICAgICAgICAgICAgIEZyYW1lVHlwZSBmcmFtZV90eXBlLApAQCAtMTU4LDYgKzE2MiwxMyBA
QCBjbGFzcyBSVFBTZW5kZXJWaWRlbyB7CiAgICAgICBSVENfR1VBUkRFRF9CWShzdGF0c19jcml0
Xyk7CiAKICAgT25lVGltZUV2ZW50IGZpcnN0X2ZyYW1lX3NlbnRfOworCisgIC8vIEUyRUUgQ3Vz
dG9tIFZpZGVvIEZyYW1lIEVuY3J5cHRvciAob3B0aW9uYWwpCisgIEZyYW1lRW5jcnlwdG9ySW50
ZXJmYWNlKiBjb25zdCBmcmFtZV9lbmNyeXB0b3JfID0gbnVsbHB0cjsKKyAgLy8gSWYgc2V0IHRv
IHRydWUgd2lsbCByZXF1aXJlIGFsbCBvdXRnb2luZyBmcmFtZXMgdG8gcGFzcyB0aHJvdWdoIGFu
CisgIC8vIGluaXRpYWxpemVkIGZyYW1lX2VuY3J5cHRvcl8gYmVmb3JlIGJlaW5nIHNlbnQgb3V0
IG9mIHRoZSBuZXR3b3JrLgorICAvLyBPdGhlcndpc2UgdGhlc2UgcGF5bG9hZHMgd2lsbCBiZSBk
cm9wcGVkLgorICBib29sIHJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbl87CiB9OwogCiB9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF91dGlsaXR5LmNjCmluZGV4IDIyODU3MmY4ZDE2OWMyMWNiMGI3NmQ2YmEwNDUz
OWNlZTQ2NDdjZjMuLjQ0YzY3MWY1MDY3ZWFmMzdiZmFkZjhmOTYwYWZiOGZjOGM1M2NmODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91dGlsaXR5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91dGls
aXR5LmNjCkBAIC0xMCw5ICsxMCwxOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX3V0aWxpdHkuaCIKIAorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0
ZGRlZi5oPgorCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkvdmlk
ZW8vdmlkZW9fY29udGVudF90eXBlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1l
X21hcmtpbmcuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fcm90YXRpb24uaCIKKyNpbmNs
dWRlICJhcGkvdmlkZW8vdmlkZW9fdGltaW5nLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9pbmNsdWRlL3J0cF9jdm8uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9i
eXRlX2lvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9l
eHRlbnNpb25zLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2ludGVy
ZmFjZS9jb21tb25fY29uc3RhbnRzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0
aWxzLmgiCiAKQEAgLTMzLDEwICs0Myw2IEBAIGVudW0gewogICogTWlzYyB1dGlsaXR5IHJvdXRp
bmVzCiAgKi8KIAotYm9vbCBTdHJpbmdDb21wYXJlKGNvbnN0IGNoYXIqIHN0cjEsIGNvbnN0IGNo
YXIqIHN0cjIsIGNvbnN0IHVpbnQzMl90IGxlbmd0aCkgewotICByZXR1cm4gX3N0cm5pY21wKHN0
cjEsIHN0cjIsIGxlbmd0aCkgPT0gMDsKLX0KLQogc2l6ZV90IFdvcmQzMkFsaWduKHNpemVfdCBz
aXplKSB7CiAgIHVpbnQzMl90IHJlbWFpbmRlciA9IHNpemUgJSA0OwogICBpZiAocmVtYWluZGVy
ICE9IDApCkBAIC01MDEsNiArNTA3LDEwIEBAIHZvaWQgUnRwSGVhZGVyUGFyc2VyOjpQYXJzZU9u
ZUJ5dGVFeHRlbnNpb25IZWFkZXIoCiAgICAgICAgICAgUlRDX0xPRyhXQVJOSU5HKQogICAgICAg
ICAgICAgICA8PCAiUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvciB1bnN1cHBvcnRlZCBieSBydHAg
aGVhZGVyIHBhcnNlci4iOwogICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtSdHBFeHRl
bnNpb25Db2xvclNwYWNlOgorICAgICAgICAgIFJUQ19MT0coV0FSTklORykKKyAgICAgICAgICAg
ICAgPDwgIlJ0cEV4dGVuc2lvbkNvbG9yU3BhY2UgdW5zdXBwb3J0ZWQgYnkgcnRwIGhlYWRlciBw
YXJzZXIuIjsKKyAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBrUnRwRXh0ZW5zaW9uTm9u
ZToKICAgICAgICAgY2FzZSBrUnRwRXh0ZW5zaW9uTnVtYmVyT2ZFeHRlbnNpb25zOiB7CiAgICAg
ICAgICAgUlRDX05PVFJFQUNIRUQoKSA8PCAiSW52YWxpZCBleHRlbnNpb24gdHlwZTogIiA8PCB0
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3V0aWxpdHkuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91
dGlsaXR5LmgKaW5kZXggNzYyZjk2NGEyZTJmMzFlYWFjZTE1NDg1OTYwZjM4OTFlM2RiOTZiZi4u
NDA4NTE3NDgxYmI0OTVlNTQyNGViNjZjZjBkMDc4ZTVkMjRjYjgwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX3V0aWxpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5oCkBAIC0xMSwx
NCArMTEsMTQgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX1VUSUxJVFlf
SF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX1VUSUxJVFlfSF8KIAotI2lu
Y2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KIAotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9y
ZWNlaXZlX3N0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcu
aCIKKyNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKKyNpbmNsdWRlICJjb21tb25fdHlwZXMu
aCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9ydGNwX2NvbmZpZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJl
Y2F0aW9uLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yNywxNiArMjcsMTUgQEAgY29u
c3QgdWludDhfdCBrUnRwTWFya2VyQml0TWFzayA9IDB4ODA7CiBuYW1lc3BhY2UgUnRwVXRpbGl0
eSB7CiAKIHN0cnVjdCBQYXlsb2FkIHsKLSAgUGF5bG9hZChjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBQYXlsb2FkVW5pb24mIHB1KSA6IHR5cGVTcGVjaWZpYyhwdSkgewotICAgIHN0ZDo6c3RybmNw
eSh0aGlzLT5uYW1lLCBuYW1lLCBzaXplb2YodGhpcy0+bmFtZSkgLSAxKTsKLSAgICB0aGlzLT5u
YW1lW3NpemVvZih0aGlzLT5uYW1lKSAtIDFdID0gJ1wwJzsKKyAgUGF5bG9hZChhYnNsOjpzdHJp
bmdfdmlldyBwYXlsb2FkX25hbWUsIGNvbnN0IFBheWxvYWRVbmlvbiYgcHUpCisgICAgICA6IHR5
cGVTcGVjaWZpYyhwdSkgeworICAgIHNpemVfdCBjbGlwcGVkX3NpemUgPSBwYXlsb2FkX25hbWUu
Y29weShuYW1lLCBzaXplb2YobmFtZSkgLSAxKTsKKyAgICBuYW1lW2NsaXBwZWRfc2l6ZV0gPSAn
XDAnOwogICB9CiAgIGNoYXIgbmFtZVtSVFBfUEFZTE9BRF9OQU1FX1NJWkVdOwogICBQYXlsb2Fk
VW5pb24gdHlwZVNwZWNpZmljOwogfTsKIAotYm9vbCBTdHJpbmdDb21wYXJlKGNvbnN0IGNoYXIq
IHN0cjEsIGNvbnN0IGNoYXIqIHN0cjIsIGNvbnN0IHVpbnQzMl90IGxlbmd0aCk7Ci0KIC8vIFJv
dW5kIHVwIHRvIHRoZSBuZWFyZXN0IHNpemUgdGhhdCBpcyBhIG11bHRpcGxlIG9mIDQuCiBzaXpl
X3QgV29yZDMyQWxpZ24oc2l6ZV90IHNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
dmlkZW9faGVhZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3ZpZGVvX2hlYWRlci5jYwppbmRleCBhM2Vl
OGJhYTgzZTEzYWZiZDU1ZjUyODkwMWMyOTAzYmZjZjhmYWY3Li5iYjk0MTNkZGQ1ZTI4YTg5ZjM5
ZDc3YzM0NTJhYjFiZTNiYTYxNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdmlkZW9faGVh
ZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIuY2MKQEAgLTEyLDcgKzEyLDcg
QEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLVJUUFZpZGVvSGVhZGVyOjpSVFBWaWRlb0hlYWRl
cigpIDogcGxheW91dF9kZWxheSgpLCB2aWRlb190aW1pbmcoKSB7fQorUlRQVmlkZW9IZWFkZXI6
OlJUUFZpZGVvSGVhZGVyKCkgOiB2aWRlb190aW1pbmcoKSB7fQogUlRQVmlkZW9IZWFkZXI6OlJU
UFZpZGVvSGVhZGVyKGNvbnN0IFJUUFZpZGVvSGVhZGVyJiBvdGhlcikgPSBkZWZhdWx0OwogUlRQ
VmlkZW9IZWFkZXI6On5SVFBWaWRlb0hlYWRlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX3ZpZGVvX2hlYWRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3ZpZGVvX2hlYWRlci5o
CmluZGV4IDI4OGI3ZDAzYTAyNjBlNTJmM2RlMGUxMjU5N2M0NDY1ZWM2NmQwY2UuLjFjNzVmNTM5
YTFlODZiYjYzZmYxYTcxN2UwZTFhYjI1NmRhNDczYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF92aWRlb19oZWFkZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdmlkZW9faGVhZGVyLmgKQEAgLTEw
LDggKzEwLDEyIEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9WSURFT19I
RUFERVJfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX1ZJREVPX0hFQURF
Ul9IXwogCisjaW5jbHVkZSA8Y3N0ZGludD4KKwogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lu
bGluZWRfdmVjdG9yLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1
ZGUgImFic2wvdHlwZXMvdmFyaWFudC5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19jb2Rl
Y190eXBlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5oIgogI2lu
Y2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZV9tYXJraW5nLmgiCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvL3ZpZGVvX3JvdGF0aW9uLmgiCkBAIC01Niw3ICs2MCw3IEBAIHN0cnVjdCBSVFBWaWRlb0hl
YWRlciB7CiAgIHVpbnQ4X3Qgc2ltdWxjYXN0SWR4ID0gMDsKICAgVmlkZW9Db2RlY1R5cGUgY29k
ZWMgPSBWaWRlb0NvZGVjVHlwZTo6a1ZpZGVvQ29kZWNHZW5lcmljOwogCi0gIFBsYXlvdXREZWxh
eSBwbGF5b3V0X2RlbGF5OworICBQbGF5b3V0RGVsYXkgcGxheW91dF9kZWxheSA9IHstMSwgLTF9
OwogICBWaWRlb1NlbmRUaW1pbmcgdmlkZW9fdGltaW5nOwogICBGcmFtZU1hcmtpbmcgZnJhbWVf
bWFya2luZzsKICAgUlRQVmlkZW9UeXBlSGVhZGVyIHZpZGVvX3R5cGVfaGVhZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvdGltZV91dGlsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdGltZV91dGlsLmNjCmluZGV4
IDZhYzI4MGE2MWRiN2U5M2U3NTdhOGNmN2E1ZDJjZTgwMGNhODU4ZDUuLmU2NTMyOWQwNmI3ODA1
MmIyMDQwNTNiMmZkOWRhNDU3MTYwZGUwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RpbWVfdXRp
bC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS90aW1lX3V0aWwuY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTIyLDIw
ICsyMywyNyBAQCBpbmxpbmUgaW50NjRfdCBEaXZpZGVSb3VuZFRvTmVhcmVzdChpbnQ2NF90IHgs
IHVpbnQzMl90IHkpIHsKICAgcmV0dXJuICh4ICsgeSAvIDIpIC8geTsKIH0KIAotaW50NjRfdCBO
dHBPZmZzZXRVcygpIHsKK2ludDY0X3QgTnRwT2Zmc2V0TXNDYWxsZWRPbmNlKCkgewogICBjb25z
dGV4cHIgaW50NjRfdCBrTnRwSmFuMTk3MFNlYyA9IDIyMDg5ODg4MDA7Ci0gIGludDY0X3QgY2xv
Y2tfdGltZSA9IHJ0Yzo6VGltZU1pY3JvcygpOwotICBpbnQ2NF90IHV0Y190aW1lID0gcnRjOjpU
aW1lVVRDTWljcm9zKCk7Ci0gIHJldHVybiB1dGNfdGltZSAtIGNsb2NrX3RpbWUgKyBrTnRwSmFu
MTk3MFNlYyAqIHJ0Yzo6a051bU1pY3Jvc2Vjc1BlclNlYzsKKyAgaW50NjRfdCBjbG9ja190aW1l
ID0gcnRjOjpUaW1lTWlsbGlzKCk7CisgIGludDY0X3QgdXRjX3RpbWUgPSBydGM6OlRpbWVVVENN
aWxsaXMoKTsKKyAgcmV0dXJuIHV0Y190aW1lIC0gY2xvY2tfdGltZSArIGtOdHBKYW4xOTcwU2Vj
ICogcnRjOjprTnVtTWlsbGlzZWNzUGVyU2VjOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKIAotTnRw
VGltZSBUaW1lTWljcm9zVG9OdHAoaW50NjRfdCB0aW1lX3VzKSB7CitpbnQ2NF90IE50cE9mZnNl
dE1zKCkgewogICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCBvbmNlLgotICBzdGF0aWMgaW50NjRf
dCBudHBfb2Zmc2V0X3VzID0gTnRwT2Zmc2V0VXMoKTsKKyAgc3RhdGljIGludDY0X3QgbnRwX29m
ZnNldF9tcyA9IE50cE9mZnNldE1zQ2FsbGVkT25jZSgpOworICByZXR1cm4gbnRwX29mZnNldF9t
czsKK30KIAotICBpbnQ2NF90IHRpbWVfbnRwX3VzID0gdGltZV91cyArIG50cF9vZmZzZXRfdXM7
CitOdHBUaW1lIFRpbWVNaWNyb3NUb050cChpbnQ2NF90IHRpbWVfdXMpIHsKKyAgLy8gU2luY2Ug
dGhpcyBkb2Vzbid0IHJldHVybiBhIHdhbGxjbG9jayB0aW1lLCBidXQgb25seSBOVFAgcmVwcmVz
ZW50YXRpb24KKyAgLy8gb2YgcnRjOjpUaW1lTWlsbGlzKCkgY2xvY2ssIHRoZSBleGFjdCBvZmZz
ZXQgZG9lc24ndCBtYXR0ZXIuCisgIC8vIFRvIHNpbXBsaWZ5IGNvbnZlcnNpb25zIGJldHdlZW4g
TlRQIGFuZCBSVFAgdGltZSwgdGhpcyBvZmZzZXQgaXMKKyAgLy8gbGltaXRlZCB0byBtaWxsaXNl
Y29uZHMgaW4gcmVzb2x1dGlvbi4KKyAgaW50NjRfdCB0aW1lX250cF91cyA9IHRpbWVfdXMgKyBO
dHBPZmZzZXRNcygpICogMTAwMDsKICAgUlRDX0RDSEVDS19HRSh0aW1lX250cF91cywgMCk7ICAv
LyBUaW1lIGJlZm9yZSB5ZWFyIDE5MDAgaXMgdW5zdXBwb3J0ZWQuCiAKICAgLy8gVE9ETyhkYW5p
bGNoYXApOiBDb252ZXJ0IGJvdGggc2Vjb25kcyBhbmQgZnJhY3Rpb24gdG9nZXRoZXIgdXNpbmcg
aW50MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90aW1lX3V0aWwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RpbWVf
dXRpbC5oCmluZGV4IDY3MjcyMmMwN2Y5OWFjMGZiNzI3NzMxNzc2MDBlMjdhNTA5ZTAxOTQuLjk0
YjkxNDMxMGNjZjIwZGNhYjZjYTYwNDQ4YjI5YTlhZTFmMzkyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3RpbWVfdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RpbWVfdXRpbC5oCkBAIC0yMiwxMyArMjIs
MTQgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyBkaWZmZXJlbmNlIG9mIHRoZSBwYXNzZWQgdmFs
dWVzLgogLy8gQXMgYSByZXN1bHQgVGltZU1pY3Jvc1RvTnRwKHJ0Yzo6VGltZU1pY3JvcygpKSBk
b2Vzbid0IGd1YXJhbnRlZSB0byBtYXRjaAogLy8gc3lzdGVtIHRpbWUuCisvLyBIb3dldmVyLCBU
aW1lTWljcm9zVG9OdHAgR3VhcmFudGVlcyB0aGF0IHJldHVybmVkIE50cFRpbWUgd2lsbCBiZSBv
ZmZzZXR0ZWQKKy8vIGZyb20gcnRjOjpUaW1lTWljcm9zKCkgYnkgaW50ZWdyYWwgbnVtYmVyIG9m
IG1pbGxpc2Vjb25kcy4KKy8vIFVzZSBOdHBPZmZzZXRNcygpIHRvIGdldCB0aGF0IG9mZnNldCB2
YWx1ZS4KIE50cFRpbWUgVGltZU1pY3Jvc1RvTnRwKGludDY0X3QgdGltZV91cyk7CiAKLS8vIENv
bnZlcnRzIE5UUCB0aW1lc3RhbXAgdG8gUlRQIHRpbWVzdGFtcC4KLWlubGluZSB1aW50MzJfdCBO
dHBUb1J0cChOdHBUaW1lIG50cCwgdWludDMyX3QgZnJlcSkgewotICB1aW50MzJfdCB0bXAgPSAo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG50cC5mcmFjdGlvbnMoKSkgKiBmcmVxKSA+PiAzMjsKLSAg
cmV0dXJuIG50cC5zZWNvbmRzKCkgKiBmcmVxICsgdG1wOwotfQorLy8gRGlmZmVyZW5jZSBiZXR3
ZWVuIE50cCB0aW1lIGFuZCBsb2NhbCByZWxhdGl2ZSB0aW1lIHJldHVybmVkIGJ5CisvLyBydGM6
OlRpbWVNaWNyb3MoKQoraW50NjRfdCBOdHBPZmZzZXRNcygpOwogCiAvLyBIZWxwZXIgZnVuY3Rp
b24gZm9yIGNvbXBhY3QgbnRwIHJlcHJlc2VudGF0aW9uOgogLy8gUkZDIDM1NTAsIFNlY3Rpb24g
NC4gVGltZSBGb3JtYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90bW1icl9oZWxwLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvdG1tYnJfaGVscC5jYwppbmRleCA4YWE0NTMwMjExMzUzYzVhZDU4NGI0YTljMmZmNzk1
YTQ5Y2FiMGE2Li4zMTVhNGMyMTIwOWVhZGJlMmJhZjgyMzYzZDM4ZjQ5YTE0MzE4ZWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS90bW1icl9oZWxwLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RtbWJyX2hlbHAu
Y2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3RtbWJyX2hlbHAuaCIKIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KICNpbmNsdWRlIDxsaW1pdHM+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RtbWJyX2hlbHAu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3RtbWJyX2hlbHAuaAppbmRleCA5MWFlYWY0NjQxMDFjMmNmYzBiMzZhODMy
ZTkwOTE4ZDA3NGE3ZTA2Li5iZjg2ZjY1MjIyYzdlMDkyY2M4NDhiNDZlNDJjMGNiNDY2NWQxN2Mw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90bW1icl9oZWxwLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdG1tYnJf
aGVscC5oCkBAIC0xMSw3ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNF
X1RNTUJSX0hFTFBfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfVE1NQlJfSEVM
UF9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dmVjdG9yPgorCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdG1tYl9pdGVtLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2dlbmVyYXRvci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3VscGZlY19nZW5lcmF0b3IuY2MKaW5kZXggZTU3NzdlZGFiODUwNGIxNzQw
YjE2NGE2YjE5ZGZmOWFiODRkNjBjNS4uNTZkYWUyOTQ1MGU5NTBlZGQ1NmE3NWYzMzBlM2IwNTk4
NTljYTNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2dlbmVyYXRvci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS91bHBmZWNfZ2VuZXJhdG9yLmNjCkBAIC0xMCwxMiArMTAsMTUgQEAKIAogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19nZW5lcmF0b3IuaCIKIAorI2luY2x1
ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRw
X3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVf
aW8uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2Nv
cnJlY3Rpb24uaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vy
cm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfdXRpbGl0eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfZ2VuZXJhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfZ2Vu
ZXJhdG9yLmgKaW5kZXggZWZjNzUzZjRjNzQxMzIzMzFhZTZjNTM1N2NjY2NjMmI5ZWNlOTYzNC4u
NzRhMWQ4MDI1NmVhOWM5YzNiOTY1NjRjYjMwZDdhYmFhZjE5Nzg5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvdWxwZmVjX2dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19nZW5lcmF0b3Iu
aApAQCAtMTEsMTAgKzExLDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1VM
UEZFQ19HRU5FUkFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfVUxQRkVD
X0dFTkVSQVRPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgog
CisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9mZWNfdHlwZXMuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfaGVhZGVyX3Jl
YWRlcl93cml0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuY2MK
aW5kZXggYzU0ZDNjZGQ4ZjkwYjFmMzQxMjRjOWZkNDg5ZTRiMTgzYTBhYjE4MS4uMjJhZjdlNzcz
NjkwNGJiMjRkOWI4Mzc2N2NiYjQ1YmJjOTczYzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxw
ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19oZWFkZXJf
cmVhZGVyX3dyaXRlci5jYwpAQCAtMTAsMTEgKzEwLDEyIEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuaCIKIAotI2luY2x1
ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19oZWFkZXJfcmVh
ZGVyX3dyaXRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmgKaW5k
ZXggZmM4M2FmZGYwY2MwMjVhOTI5NjZiYTM1NWY2ZGU2YTZjYjc0NGJjMS4uYThiYjczN2RiYjU4
ZGEwNWViMmRlYTY4ZTFlNWYyNjg1N2MyMGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVj
X2hlYWRlcl9yZWFkZXJfd3JpdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2hlYWRlcl9yZWFk
ZXJfd3JpdGVyLmgKQEAgLTExLDYgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9T
T1VSQ0VfVUxQRkVDX0hFQURFUl9SRUFERVJfV1JJVEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQ
X1JUQ1BfU09VUkNFX1VMUEZFQ19IRUFERVJfUkVBREVSX1dSSVRFUl9IXwogCisjaW5jbHVkZSA8
c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1wbC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3VscGZlY19yZWNlaXZlcl9pbXBsLmNjCmluZGV4IGViMDljOTU4MTM0MTNkNTc1OTVlYmQ5
NGFiODk5Njg0YWI4MzhkZDQuLjdkYTZiODhhMDA3Y2Y1ZGRlZmRjYThjMjE4ZWJiMTk3NWY4NmY2
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19yZWNlaXZlcl9pbXBsLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3VscGZlY19yZWNlaXZlcl9pbXBsLmNjCkBAIC0xMCwxMiArMTAsMTMgQEAKIAogI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19yZWNlaXZlcl9pbXBsLmgiCiAK
KyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dXRpbGl0
eT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3VscGZlY19yZWNlaXZlcl9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfcmVjZWl2
ZXJfaW1wbC5oCmluZGV4IDk2MzY3ZGM3YWE4MjFlZGNjODU2ZTdlZGE2MWVlM2MzNTQzOWZhZjgu
LjA5NDMyNjYxNjE4MDJjNzg0MmRkMjQ2MDg0YTZmOWM1MDc4ODcyOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3VscGZlY19yZWNlaXZlcl9pbXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX3JlY2Vp
dmVyX2ltcGwuaApAQCAtMTEsOSArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9T
T1VSQ0VfVUxQRkVDX1JFQ0VJVkVSX0lNUExfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9T
T1VSQ0VfVUxQRkVDX1JFQ0VJVkVSX0lNUExfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2lu
Y2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAK
KyNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS91bHBmZWNfcmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9CVUlMRC5nbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0
eS9CVUlMRC5nbgppbmRleCAzMmRhMTA5NTBmMjkzZTYyNmE5MmY5N2Y2OGYwYWY1NWY3YWRjMDI4
Li4xZDc4MGIwZTRhNzcwZmQxZWZmMzU2NWVmMTFlNjQ0OTU3MmY2OGRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkv
QlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy91dGlsaXR5L0JVSUxELmduCkBAIC0yNiw3ICsyNiw2IEBAIHJ0Y19zdGF0aWNfbGli
cmFyeSgidXRpbGl0eSIpIHsKIAogICBkZXBzID0gWwogICAgICIuLjptb2R1bGVfYXBpIiwKLSAg
ICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL2NvbW1vbl9hdWRpbyIsCiAgICAg
Ii4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJvY2Vzc190aHJlYWRfaW1wbC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9z
b3VyY2UvcHJvY2Vzc190aHJlYWRfaW1wbC5jYwppbmRleCA5NzI3MmRhMmJmMTBhNzZlMzJiYWYx
MDVlMzRhYjdjZTNmNTE4ZTkwLi4yMGYyNmQ5MjdhMzk0NjM4OTg1NzJiYTlmNWY4NzcxMjZhNTRk
Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy91dGlsaXR5L3Nv
dXJjZS9wcm9jZXNzX3RocmVhZF9pbXBsLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuaCIKIAorI2luY2x1
ZGUgPHN0cmluZz4KKwogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGUuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVlLmgi
CkBAIC00Miw5ICs0NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyZWFkPiBQcm9jZXNz
VGhyZWFkOjpDcmVhdGUoY29uc3QgY2hhciogdGhyZWFkX25hbWUpIHsKIH0KIAogUHJvY2Vzc1Ro
cmVhZEltcGw6OlByb2Nlc3NUaHJlYWRJbXBsKGNvbnN0IGNoYXIqIHRocmVhZF9uYW1lKQotICAg
IDogd2FrZV91cF8oRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCi0gICAgICBzdG9wXyhmYWxzZSks
Ci0gICAgICB0aHJlYWRfbmFtZV8odGhyZWFkX25hbWUpIHt9CisgICAgOiBzdG9wXyhmYWxzZSks
IHRocmVhZF9uYW1lXyh0aHJlYWRfbmFtZSkge30KIAogUHJvY2Vzc1RocmVhZEltcGw6On5Qcm9j
ZXNzVGhyZWFkSW1wbCgpIHsKICAgUlRDX0RDSEVDSyh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25W
YWxpZFRocmVhZCgpKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBQcm9jZXNzVGhyZWFkSW1wbDo6
U3RvcCgpIHsKICAgICBzdG9wXyA9IHRydWU7CiAgIH0KIAotICB3YWtlX3VwXy0+U2V0KCk7Cisg
IHdha2VfdXBfLlNldCgpOwogCiAgIHRocmVhZF8tPlN0b3AoKTsKICAgc3RvcF8gPSBmYWxzZTsK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFByb2Nlc3NUaHJlYWRJbXBsOjpXYWtlVXAoTW9kdWxl
KiBtb2R1bGUpIHsKICAgICAgICAgbS5uZXh0X2NhbGxiYWNrID0ga0NhbGxQcm9jZXNzSW1tZWRp
YXRlbHk7CiAgICAgfQogICB9Ci0gIHdha2VfdXBfLT5TZXQoKTsKKyAgd2FrZV91cF8uU2V0KCk7
CiB9CiAKIHZvaWQgUHJvY2Vzc1RocmVhZEltcGw6OlBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OlF1ZXVlZFRhc2s+IHRhc2spIHsKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFByb2Nlc3NU
aHJlYWRJbXBsOjpQb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpRdWV1ZWRUYXNrPiB0YXNr
KSB7CiAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmbG9ja18pOwogICAgIHF1ZXVlXy5wdXNoKHRh
c2sucmVsZWFzZSgpKTsKICAgfQotICB3YWtlX3VwXy0+U2V0KCk7CisgIHdha2VfdXBfLlNldCgp
OwogfQogCiB2b2lkIFByb2Nlc3NUaHJlYWRJbXBsOjpSZWdpc3Rlck1vZHVsZShNb2R1bGUqIG1v
ZHVsZSwKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFByb2Nlc3NUaHJlYWRJbXBsOjpSZWdpc3Rl
ck1vZHVsZShNb2R1bGUqIG1vZHVsZSwKICAgLy8gV2FrZSB0aGUgdGhyZWFkIGNhbGxpbmcgUHJv
Y2Vzc1RocmVhZEltcGw6OlByb2Nlc3MoKSB0byB1cGRhdGUgdGhlCiAgIC8vIHdhaXRpbmcgdGlt
ZS4gVGhlIHdhaXRpbmcgdGltZSBmb3IgdGhlIGp1c3QgcmVnaXN0ZXJlZCBtb2R1bGUgbWF5IGJl
CiAgIC8vIHNob3J0ZXIgdGhhbiBhbGwgb3RoZXIgcmVnaXN0ZXJlZCBtb2R1bGVzLgotICB3YWtl
X3VwXy0+U2V0KCk7CisgIHdha2VfdXBfLlNldCgpOwogfQogCiB2b2lkIFByb2Nlc3NUaHJlYWRJ
bXBsOjpEZVJlZ2lzdGVyTW9kdWxlKE1vZHVsZSogbW9kdWxlKSB7CkBAIC0yMTUsNyArMjE1LDcg
QEAgYm9vbCBQcm9jZXNzVGhyZWFkSW1wbDo6UHJvY2VzcygpIHsKIAogICBpbnQ2NF90IHRpbWVf
dG9fd2FpdCA9IG5leHRfY2hlY2twb2ludCAtIHJ0Yzo6VGltZU1pbGxpcygpOwogICBpZiAodGlt
ZV90b193YWl0ID4gMCkKLSAgICB3YWtlX3VwXy0+V2FpdChzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPih0aW1lX3RvX3dhaXQpKTsKKyAgICB3YWtlX3VwXy5XYWl0KHN0YXRpY19jYXN0PGludD4o
dGltZV90b193YWl0KSk7CiAKICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNl
L3Byb2Nlc3NfdGhyZWFkX2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJvY2Vzc190aHJlYWRfaW1wbC5oCmlu
ZGV4IGMxZjZlZDQ0NDc1ZDZkNzQ4NTcwNDI0N2ViNmJkMGRiYTI1ODFmZjEuLmZmZjIxZDA0NjE5
YzAyOTY0MWE2OTBjY2I0N2RkNjNmMjdmN2VmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJvY2Vz
c190aHJlYWRfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJvY2Vzc190aHJlYWRfaW1wbC5oCkBAIC0x
MSwxNiArMTEsMTkgQEAKICNpZm5kZWYgTU9EVUxFU19VVElMSVRZX1NPVVJDRV9QUk9DRVNTX1RI
UkVBRF9JTVBMX0hfCiAjZGVmaW5lIE1PRFVMRVNfVVRJTElUWV9TT1VSQ0VfUFJPQ0VTU19USFJF
QURfSU1QTF9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bGlzdD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cXVldWU+CiAKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1
ZGUvbW9kdWxlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy91dGlsaXR5L2luY2x1ZGUvcHJvY2Vzc190
aHJlYWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGFz
a19xdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCi0jaW5jbHVk
ZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIApAQCAtNzIsNyArNzUsNyBAQCBjbGFzcyBQcm9jZXNzVGhyZWFkSW1wbCA6IHB1
YmxpYyBQcm9jZXNzVGhyZWFkIHsKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gbG9ja187ICAvLyBV
c2VkIHRvIGd1YXJkIG1vZHVsZXNfLCB0YXNrc18gYW5kIHN0b3BfLgogCiAgIHJ0Yzo6VGhyZWFk
Q2hlY2tlciB0aHJlYWRfY2hlY2tlcl87Ci0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdy
YXBwZXI+IHdha2VfdXBfOworICBydGM6OkV2ZW50IHdha2VfdXBfOwogICAvLyBUT0RPKHBib3Mp
OiBSZW1vdmUgdW5pcXVlX3B0ciBhbmQgc3RvcCByZWNyZWF0aW5nIHRoZSB0aHJlYWQuCiAgIHN0
ZDo6dW5pcXVlX3B0cjxydGM6OlBsYXRmb3JtVGhyZWFkPiB0aHJlYWRfOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxp
dHkvc291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nl
c3NfdGhyZWFkX2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggZDU5MjZiMjZjM2UyY2E0YjA3NzIyNjYz
Y2FjNmJiMGM0NmUxNWM3MC4uMTkxNTc5NjNhM2JiYmY5ZjkzZDc4ZGMzM2JhMDU1YjQyOTlkOGVk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy91dGlsaXR5L3NvdXJjZS9wcm9jZXNzX3RocmVhZF9pbXBsX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRp
bGl0eS9zb3VyY2UvcHJvY2Vzc190aHJlYWRfaW1wbF91bml0dGVzdC5jYwpAQCAtNDIsMTQgKzQy
LDE0IEBAIGNsYXNzIE1vY2tNb2R1bGUgOiBwdWJsaWMgTW9kdWxlIHsKIAogY2xhc3MgUmFpc2VF
dmVudFRhc2sgOiBwdWJsaWMgcnRjOjpRdWV1ZWRUYXNrIHsKICBwdWJsaWM6Ci0gIFJhaXNlRXZl
bnRUYXNrKEV2ZW50V3JhcHBlciogZXZlbnQpIDogZXZlbnRfKGV2ZW50KSB7fQorICBSYWlzZUV2
ZW50VGFzayhydGM6OkV2ZW50KiBldmVudCkgOiBldmVudF8oZXZlbnQpIHt9CiAgIGJvb2wgUnVu
KCkgb3ZlcnJpZGUgewogICAgIGV2ZW50Xy0+U2V0KCk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0K
IAogIHByaXZhdGU6Ci0gIEV2ZW50V3JhcHBlciogZXZlbnRfOworICBydGM6OkV2ZW50KiBldmVu
dF87CiB9OwogCiBBQ1RJT05fUChTZXRFdmVudCwgZXZlbnQpIHsKQEAgLTgzLDE5ICs4MywxOSBA
QCBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBQcm9jZXNzQ2FsbCkgewogICBQcm9jZXNzVGhyZWFk
SW1wbCB0aHJlYWQoIlByb2Nlc3NUaHJlYWQiKTsKICAgdGhyZWFkLlN0YXJ0KCk7CiAKLSAgc3Rk
Ojp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gZXZlbnQoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSk7
CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgTW9ja01vZHVsZSBtb2R1bGU7CiAgIEVYUEVDVF9D
QUxMKG1vZHVsZSwgVGltZVVudGlsTmV4dFByb2Nlc3MoKSkKICAgICAgIC5XaWxsT25jZShSZXR1
cm4oMCkpCiAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDEpKTsKICAgRVhQRUNUX0NBTEwo
bW9kdWxlLCBQcm9jZXNzKCkpCi0gICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0RXZlbnQoZXZlbnQu
Z2V0KCkpLCBSZXR1cm4oKSkpCisgICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0RXZlbnQoJmV2ZW50
KSwgUmV0dXJuKCkpKQogICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigpKTsKICAgRVhQRUNU
X0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQoJnRocmVhZCkpLlRpbWVzKDEpOwog
CiAgIHRocmVhZC5SZWdpc3Rlck1vZHVsZSgmbW9kdWxlLCBSVENfRlJPTV9IRVJFKTsKLSAgRVhQ
RUNUX0VRKGtFdmVudFNpZ25hbGVkLCBldmVudC0+V2FpdChrRXZlbnRXYWl0VGltZW91dCkpOwor
ICBFWFBFQ1RfVFJVRShldmVudC5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CiAKICAgRVhQRUNU
X0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQobnVsbHB0cikpLlRpbWVzKDEpOwog
ICB0aHJlYWQuU3RvcCgpOwpAQCAtMTA1LDIxICsxMDUsMjEgQEAgVEVTVChQcm9jZXNzVGhyZWFk
SW1wbCwgUHJvY2Vzc0NhbGwpIHsKIC8vIGNhbGwgdG8gU3RhcnQoKS4KIFRFU1QoUHJvY2Vzc1Ro
cmVhZEltcGwsIFByb2Nlc3NDYWxsMikgewogICBQcm9jZXNzVGhyZWFkSW1wbCB0aHJlYWQoIlBy
b2Nlc3NUaHJlYWQiKTsKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gZXZlbnQoRXZl
bnRXcmFwcGVyOjpDcmVhdGUoKSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgTW9ja01vZHVs
ZSBtb2R1bGU7CiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgVGltZVVudGlsTmV4dFByb2Nlc3MoKSkK
ICAgICAgIC5XaWxsT25jZShSZXR1cm4oMCkpCiAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJu
KDEpKTsKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzKCkpCi0gICAgICAuV2lsbE9uY2Uo
RG9BbGwoU2V0RXZlbnQoZXZlbnQuZ2V0KCkpLCBSZXR1cm4oKSkpCisgICAgICAuV2lsbE9uY2Uo
RG9BbGwoU2V0RXZlbnQoJmV2ZW50KSwgUmV0dXJuKCkpKQogICAgICAgLldpbGxSZXBlYXRlZGx5
KFJldHVybigpKTsKIAogICB0aHJlYWQuUmVnaXN0ZXJNb2R1bGUoJm1vZHVsZSwgUlRDX0ZST01f
SEVSRSk7CiAKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQoJnRo
cmVhZCkpLlRpbWVzKDEpOwogICB0aHJlYWQuU3RhcnQoKTsKLSAgRVhQRUNUX0VRKGtFdmVudFNp
Z25hbGVkLCBldmVudC0+V2FpdChrRXZlbnRXYWl0VGltZW91dCkpOworICBFWFBFQ1RfVFJVRShl
dmVudC5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CiAKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQ
cm9jZXNzVGhyZWFkQXR0YWNoZWQobnVsbHB0cikpLlRpbWVzKDEpOwogICB0aHJlYWQuU3RvcCgp
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIFByb2Nlc3NDYWxs
MikgewogLy8gQWZ0ZXIgdW5yZWdpc3RyYXRpb24sIHdlIHNob3VsZCBub3QgcmVjZWl2ZSBhbnkg
ZnVydGhlciBjYWxsYmFja3MuCiBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBEZXJlZ2lzdGVyKSB7
CiAgIFByb2Nlc3NUaHJlYWRJbXBsIHRocmVhZCgiUHJvY2Vzc1RocmVhZCIpOwotICBzdGQ6OnVu
aXF1ZV9wdHI8RXZlbnRXcmFwcGVyPiBldmVudChFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKTsKKyAg
cnRjOjpFdmVudCBldmVudDsKIAogICBpbnQgcHJvY2Vzc19jb3VudCA9IDA7CiAgIE1vY2tNb2R1
bGUgbW9kdWxlOwpAQCAtMTM3LDggKzEzNyw3IEBAIFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIERl
cmVnaXN0ZXIpIHsKICAgICAgIC5XaWxsT25jZShSZXR1cm4oMCkpCiAgICAgICAuV2lsbFJlcGVh
dGVkbHkoUmV0dXJuKDEpKTsKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzKCkpCi0gICAg
ICAuV2lsbE9uY2UoCi0gICAgICAgICAgRG9BbGwoU2V0RXZlbnQoZXZlbnQuZ2V0KCkpLCBJbmNy
ZW1lbnQoJnByb2Nlc3NfY291bnQpLCBSZXR1cm4oKSkpCisgICAgICAuV2lsbE9uY2UoRG9BbGwo
U2V0RXZlbnQoJmV2ZW50KSwgSW5jcmVtZW50KCZwcm9jZXNzX2NvdW50KSwgUmV0dXJuKCkpKQog
ICAgICAgLldpbGxSZXBlYXRlZGx5KERvQWxsKEluY3JlbWVudCgmcHJvY2Vzc19jb3VudCksIFJl
dHVybigpKSk7CiAKICAgdGhyZWFkLlJlZ2lzdGVyTW9kdWxlKCZtb2R1bGUsIFJUQ19GUk9NX0hF
UkUpOwpAQCAtMTQ2LDcgKzE0NSw3IEBAIFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIERlcmVnaXN0
ZXIpIHsKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQoJnRocmVh
ZCkpLlRpbWVzKDEpOwogICB0aHJlYWQuU3RhcnQoKTsKIAotICBFWFBFQ1RfRVEoa0V2ZW50U2ln
bmFsZWQsIGV2ZW50LT5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CisgIEVYUEVDVF9UUlVFKGV2
ZW50LldhaXQoa0V2ZW50V2FpdFRpbWVvdXQpKTsKIAogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFBy
b2Nlc3NUaHJlYWRBdHRhY2hlZChudWxscHRyKSkuVGltZXMoMSk7CiAgIHRocmVhZC5EZVJlZ2lz
dGVyTW9kdWxlKCZtb2R1bGUpOwpAQCAtMTU1LDcgKzE1NCw3IEBAIFRFU1QoUHJvY2Vzc1RocmVh
ZEltcGwsIERlcmVnaXN0ZXIpIHsKICAgaW50IGNvdW50X2FmdGVyX2RlcmVnaXN0ZXIgPSBwcm9j
ZXNzX2NvdW50OwogCiAgIC8vIFdlIHNob3VsZG4ndCBnZXQgYW55IG1vcmUgY2FsbGJhY2tzLgot
ICBFWFBFQ1RfRVEoa0V2ZW50VGltZW91dCwgZXZlbnQtPldhaXQoMjApKTsKKyAgRVhQRUNUX0ZB
TFNFKGV2ZW50LldhaXQoMjApKTsKICAgRVhQRUNUX0VRKGNvdW50X2FmdGVyX2RlcmVnaXN0ZXIs
IHByb2Nlc3NfY291bnQpOwogICB0aHJlYWQuU3RvcCgpOwogfQpAQCAtMTY3LDcgKzE2Niw3IEBA
IHZvaWQgUHJvY2Vzc0NhbGxBZnRlckFGZXdNcyhpbnQ2NF90IG1pbGxpc2Vjb25kcykgewogICBQ
cm9jZXNzVGhyZWFkSW1wbCB0aHJlYWQoIlByb2Nlc3NUaHJlYWQiKTsKICAgdGhyZWFkLlN0YXJ0
KCk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gZXZlbnQoRXZlbnRXcmFwcGVy
OjpDcmVhdGUoKSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgTW9ja01vZHVsZSBtb2R1bGU7
CiAgIGludDY0X3Qgc3RhcnRfdGltZSA9IDA7CkBAIC0xNzYsOCArMTc1LDcgQEAgdm9pZCBQcm9j
ZXNzQ2FsbEFmdGVyQUZld01zKGludDY0X3QgbWlsbGlzZWNvbmRzKSB7CiAgICAgICAuV2lsbE9u
Y2UoRG9BbGwoU2V0VGltZXN0YW1wKCZzdGFydF90aW1lKSwgUmV0dXJuKG1pbGxpc2Vjb25kcykp
KQogICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihtaWxsaXNlY29uZHMpKTsKICAgRVhQRUNU
X0NBTEwobW9kdWxlLCBQcm9jZXNzKCkpCi0gICAgICAuV2lsbE9uY2UoCi0gICAgICAgICAgRG9B
bGwoU2V0VGltZXN0YW1wKCZjYWxsZWRfdGltZSksIFNldEV2ZW50KGV2ZW50LmdldCgpKSwgUmV0
dXJuKCkpKQorICAgICAgLldpbGxPbmNlKERvQWxsKFNldFRpbWVzdGFtcCgmY2FsbGVkX3RpbWUp
LCBTZXRFdmVudCgmZXZlbnQpLCBSZXR1cm4oKSkpCiAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0
dXJuKCkpOwogCiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKCZ0
aHJlYWQpKS5UaW1lcygxKTsKQEAgLTE4NSw3ICsxODMsNyBAQCB2b2lkIFByb2Nlc3NDYWxsQWZ0
ZXJBRmV3TXMoaW50NjRfdCBtaWxsaXNlY29uZHMpIHsKIAogICAvLyBBZGQgYSBidWZmZXIgb2Yg
NTBtcyBkdWUgdG8gc2xvd25lc3Mgb2Ygc29tZSB0cnlib3RzCiAgIC8vIChlLmcuIHdpbl9kcm1l
bW9yeV9saWdodCkKLSAgRVhQRUNUX0VRKGtFdmVudFNpZ25hbGVkLCBldmVudC0+V2FpdChtaWxs
aXNlY29uZHMgKyA1MCkpOworICBFWFBFQ1RfVFJVRShldmVudC5XYWl0KG1pbGxpc2Vjb25kcyAr
IDUwKSk7CiAKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQobnVs
bHB0cikpLlRpbWVzKDEpOwogICB0aHJlYWQuU3RvcCgpOwpAQCAtMjMwLDcgKzIyOCw3IEBAIFRF
U1QoUHJvY2Vzc1RocmVhZEltcGwsIERJU0FCTEVEX1Byb2Nlc3M1MFRpbWVzKSB7CiAgIFByb2Nl
c3NUaHJlYWRJbXBsIHRocmVhZCgiUHJvY2Vzc1RocmVhZCIpOwogICB0aHJlYWQuU3RhcnQoKTsK
IAotICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPiBldmVudChFdmVudFdyYXBwZXI6OkNy
ZWF0ZSgpKTsKKyAgcnRjOjpFdmVudCBldmVudDsKIAogICBNb2NrTW9kdWxlIG1vZHVsZTsKICAg
aW50IGNhbGxiYWNrX2NvdW50ID0gMDsKQEAgLTI0Miw3ICsyNDAsNyBAQCBURVNUKFByb2Nlc3NU
aHJlYWRJbXBsLCBESVNBQkxFRF9Qcm9jZXNzNTBUaW1lcykgewogICBFWFBFQ1RfQ0FMTChtb2R1
bGUsIFByb2Nlc3NUaHJlYWRBdHRhY2hlZCgmdGhyZWFkKSkuVGltZXMoMSk7CiAgIHRocmVhZC5S
ZWdpc3Rlck1vZHVsZSgmbW9kdWxlLCBSVENfRlJPTV9IRVJFKTsKIAotICBFWFBFQ1RfRVEoa0V2
ZW50VGltZW91dCwgZXZlbnQtPldhaXQoMTAwMCkpOworICBFWFBFQ1RfVFJVRShldmVudC5XYWl0
KDEwMDApKTsKIAogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFByb2Nlc3NUaHJlYWRBdHRhY2hlZChu
dWxscHRyKSkuVGltZXMoMSk7CiAgIHRocmVhZC5TdG9wKCk7CkBAIC0yNjEsOCArMjU5LDggQEAg
VEVTVChQcm9jZXNzVGhyZWFkSW1wbCwgV2FrZVVwKSB7CiAgIFByb2Nlc3NUaHJlYWRJbXBsIHRo
cmVhZCgiUHJvY2Vzc1RocmVhZCIpOwogICB0aHJlYWQuU3RhcnQoKTsKIAotICBzdGQ6OnVuaXF1
ZV9wdHI8RXZlbnRXcmFwcGVyPiBzdGFydGVkKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpOwotICBz
dGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPiBjYWxsZWQoRXZlbnRXcmFwcGVyOjpDcmVhdGUo
KSk7CisgIHJ0Yzo6RXZlbnQgc3RhcnRlZDsKKyAgcnRjOjpFdmVudCBjYWxsZWQ7CiAKICAgTW9j
a01vZHVsZSBtb2R1bGU7CiAgIGludDY0X3Qgc3RhcnRfdGltZTsKQEAgLTI3NiwyMCArMjc0LDE5
IEBAIFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIFdha2VVcCkgewogICAvLyBUaGUgc2Vjb25kIHRp
bWUgVGltZVVudGlsTmV4dFByb2Nlc3MgaXMgdGhlbiBjYWxsZWQsIGlzIGFmdGVyIFByb2Nlc3MK
ICAgLy8gaGFzIGJlZW4gY2FsbGVkIGFuZCB3ZSBkb24ndCBleHBlY3QgYW55IG1vcmUgY2FsbHMu
CiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgVGltZVVudGlsTmV4dFByb2Nlc3MoKSkKLSAgICAgIC5X
aWxsT25jZShEb0FsbChTZXRUaW1lc3RhbXAoJnN0YXJ0X3RpbWUpLCBTZXRFdmVudChzdGFydGVk
LmdldCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4oMTAwMCkpKQorICAgICAgLldp
bGxPbmNlKAorICAgICAgICAgIERvQWxsKFNldFRpbWVzdGFtcCgmc3RhcnRfdGltZSksIFNldEV2
ZW50KCZzdGFydGVkKSwgUmV0dXJuKDEwMDApKSkKICAgICAgIC5XaWxsT25jZShSZXR1cm4oMTAw
MCkpOwogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFByb2Nlc3MoKSkKLSAgICAgIC5XaWxsT25jZSgK
LSAgICAgICAgICBEb0FsbChTZXRUaW1lc3RhbXAoJmNhbGxlZF90aW1lKSwgU2V0RXZlbnQoY2Fs
bGVkLmdldCgpKSwgUmV0dXJuKCkpKQorICAgICAgLldpbGxPbmNlKERvQWxsKFNldFRpbWVzdGFt
cCgmY2FsbGVkX3RpbWUpLCBTZXRFdmVudCgmY2FsbGVkKSwgUmV0dXJuKCkpKQogICAgICAgLldp
bGxSZXBlYXRlZGx5KFJldHVybigpKTsKIAogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFByb2Nlc3NU
aHJlYWRBdHRhY2hlZCgmdGhyZWFkKSkuVGltZXMoMSk7CiAgIHRocmVhZC5SZWdpc3Rlck1vZHVs
ZSgmbW9kdWxlLCBSVENfRlJPTV9IRVJFKTsKIAotICBFWFBFQ1RfRVEoa0V2ZW50U2lnbmFsZWQs
IHN0YXJ0ZWQtPldhaXQoa0V2ZW50V2FpdFRpbWVvdXQpKTsKKyAgRVhQRUNUX1RSVUUoc3RhcnRl
ZC5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CiAgIHRocmVhZC5XYWtlVXAoJm1vZHVsZSk7Ci0g
IEVYUEVDVF9FUShrRXZlbnRTaWduYWxlZCwgY2FsbGVkLT5XYWl0KGtFdmVudFdhaXRUaW1lb3V0
KSk7CisgIEVYUEVDVF9UUlVFKGNhbGxlZC5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CiAKICAg
RVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQobnVsbHB0cikpLlRpbWVz
KDEpOwogICB0aHJlYWQuU3RvcCgpOwpAQCAtMzA0LDExICszMDEsMTEgQEAgVEVTVChQcm9jZXNz
VGhyZWFkSW1wbCwgV2FrZVVwKSB7CiAvLyB0aHJlYWQuCiBURVNUKFByb2Nlc3NUaHJlYWRJbXBs
LCBQb3N0VGFzaykgewogICBQcm9jZXNzVGhyZWFkSW1wbCB0aHJlYWQoIlByb2Nlc3NUaHJlYWQi
KTsKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gdGFza19yYW4oRXZlbnRXcmFwcGVy
OjpDcmVhdGUoKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSYWlzZUV2ZW50VGFzaz4gdGFzayhuZXcg
UmFpc2VFdmVudFRhc2sodGFza19yYW4uZ2V0KCkpKTsKKyAgcnRjOjpFdmVudCB0YXNrX3JhbjsK
KyAgc3RkOjp1bmlxdWVfcHRyPFJhaXNlRXZlbnRUYXNrPiB0YXNrKG5ldyBSYWlzZUV2ZW50VGFz
aygmdGFza19yYW4pKTsKICAgdGhyZWFkLlN0YXJ0KCk7CiAgIHRocmVhZC5Qb3N0VGFzayhzdGQ6
Om1vdmUodGFzaykpOwotICBFWFBFQ1RfRVEoa0V2ZW50U2lnbmFsZWQsIHRhc2tfcmFuLT5XYWl0
KGtFdmVudFdhaXRUaW1lb3V0KSk7CisgIEVYUEVDVF9UUlVFKHRhc2tfcmFuLldhaXQoa0V2ZW50
V2FpdFRpbWVvdXQpKTsKICAgdGhyZWFkLlN0b3AoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJl
L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jYXB0dXJlL0JVSUxELmduCmluZGV4IGVmNmYzMzVlNDkzOWQ1NzZjZTYxODFl
ODkwOTRhZWJmZmMxMGM0YWIuLjQ0ZGIyZWI0NzdhYTI4YTUzZmM2YjEwOTFiYWVlMGNmNzY0YmM3
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY2FwdHVyZS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvQlVJTEQuZ24KQEAg
LTM4LDYgKzM4LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlb19jYXB0dXJlX21vZHVsZSIp
IHsKICAgICAiLi4vLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAogICAgICIuLi8uLi9ydGNfYmFz
ZS9zeW5jaHJvbml6YXRpb246cndfbG9ja193cmFwcGVyIiwKICAgICAiLi4vLi4vc3lzdGVtX3dy
YXBwZXJzIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAg
ICAgIi8vdGhpcmRfcGFydHkvbGlieXV2IiwKICAgXQogfQpAQCAtMTkwLDYgKzE5MSw3IEBAIGlm
ICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICAgICAgICAiLi4vLi4vY29tbW9uX3ZpZGVvOmNv
bW1vbl92aWRlbyIsCiAgICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIs
CiAgICAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6c3lzdGVtX3dyYXBwZXJzIiwKKyAgICAg
ICAgIi4uLy4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICAgIi4uLy4uL3Rlc3Q6dmlkZW9f
dGVzdF9jb21tb24iLAogICAgICAgICAiLi4vdXRpbGl0eSIsCiAgICAgICAgICIvL3Rlc3Rpbmcv
Z3Rlc3QiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL2RldmljZV9pbmZvX2ltcGwuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUv
ZGV2aWNlX2luZm9faW1wbC5jYwppbmRleCAyZjBhMzlmMjk2NGZiMzdjNzAzZjk4NjRmMTRhZDc3
YTBlYjM2MWZhLi5jZGNiNWRkYzRhODI3NDRjYzI5OGRlNTEyZDgyMDRlMjdhODAyNmI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NhcHR1cmUvZGV2aWNlX2luZm9faW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvZGV2aWNlX2lu
Zm9faW1wbC5jYwpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1
ZGUgPHN0ZGxpYi5oPgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy92aWRlb19jYXB0dXJlL2RldmljZV9pbmZvX2ltcGwuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NhcHR1cmUvdmlkZW9fY2FwdHVyZV9jb25maWcuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCkBAIC00MiwxNCArNDMsMTIgQEAgaW50MzJfdCBEZXZpY2VJbmZv
SW1wbDo6TnVtYmVyT2ZDYXBhYmlsaXRpZXMoY29uc3QgY2hhciogZGV2aWNlVW5pcXVlSWRVVEY4
KSB7CiAKICAgX2FwaUxvY2suQWNxdWlyZUxvY2tTaGFyZWQoKTsKIAotICBpZiAoX2xhc3RVc2Vk
RGV2aWNlTmFtZUxlbmd0aCA9PSBzdHJsZW4oKGNoYXIqKWRldmljZVVuaXF1ZUlkVVRGOCkpIHsK
LSAgICAvLyBJcyBpdCB0aGUgc2FtZSBkZXZpY2UgdGhhdCBpcyBhc2tlZCBmb3IgYWdhaW4uCi0g
ICAgaWYgKF9zdHJuaWNtcCgoY2hhciopX2xhc3RVc2VkRGV2aWNlTmFtZSwgKGNoYXIqKWRldmlj
ZVVuaXF1ZUlkVVRGOCwKLSAgICAgICAgICAgICAgICAgIF9sYXN0VXNlZERldmljZU5hbWVMZW5n
dGgpID09IDApIHsKLSAgICAgIC8vIHllcwotICAgICAgX2FwaUxvY2suUmVsZWFzZUxvY2tTaGFy
ZWQoKTsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihfY2FwdHVyZUNhcGFiaWxp
dGllcy5zaXplKCkpOwotICAgIH0KKyAgLy8gSXMgaXQgdGhlIHNhbWUgZGV2aWNlIHRoYXQgaXMg
YXNrZWQgZm9yIGFnYWluLgorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZSgKKyAgICAgICAg
ICBkZXZpY2VVbmlxdWVJZFVURjgsCisgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoX2xhc3RV
c2VkRGV2aWNlTmFtZSwgX2xhc3RVc2VkRGV2aWNlTmFtZUxlbmd0aCkpKSB7CisgICAgX2FwaUxv
Y2suUmVsZWFzZUxvY2tTaGFyZWQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
X2NhcHR1cmVDYXBhYmlsaXRpZXMuc2l6ZSgpKTsKICAgfQogICAvLyBOZWVkIHRvIGdldCBleGNs
dXNpdmUgcmlnaHRzIHRvIGNyZWF0ZSB0aGUgbmV3IGNhcGFiaWxpdHkgbWFwLgogICBfYXBpTG9j
ay5SZWxlYXNlTG9ja1NoYXJlZCgpOwpAQCAtNjYsOSArNjUsOSBAQCBpbnQzMl90IERldmljZUlu
Zm9JbXBsOjpHZXRDYXBhYmlsaXR5KGNvbnN0IGNoYXIqIGRldmljZVVuaXF1ZUlkVVRGOCwKIAog
ICBSZWFkTG9ja1Njb3BlZCBjcyhfYXBpTG9jayk7CiAKLSAgaWYgKChfbGFzdFVzZWREZXZpY2VO
YW1lTGVuZ3RoICE9IHN0cmxlbigoY2hhciopZGV2aWNlVW5pcXVlSWRVVEY4KSkgfHwKLSAgICAg
IChfc3RybmljbXAoKGNoYXIqKV9sYXN0VXNlZERldmljZU5hbWUsIChjaGFyKilkZXZpY2VVbmlx
dWVJZFVURjgsCi0gICAgICAgICAgICAgICAgIF9sYXN0VXNlZERldmljZU5hbWVMZW5ndGgpICE9
IDApKSB7CisgIGlmICghYWJzbDo6RXF1YWxzSWdub3JlQ2FzZSgKKyAgICAgICAgICBkZXZpY2VV
bmlxdWVJZFVURjgsCisgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoX2xhc3RVc2VkRGV2aWNl
TmFtZSwgX2xhc3RVc2VkRGV2aWNlTmFtZUxlbmd0aCkpKSB7CiAgICAgX2FwaUxvY2suUmVsZWFz
ZUxvY2tTaGFyZWQoKTsKICAgICBfYXBpTG9jay5BY3F1aXJlTG9ja0V4Y2x1c2l2ZSgpOwogICAg
IGlmICgtMSA9PSBDcmVhdGVDYXBhYmlsaXR5TWFwKGRldmljZVVuaXF1ZUlkVVRGOCkpIHsKQEAg
LTEwMCw5ICs5OSw5IEBAIGludDMyX3QgRGV2aWNlSW5mb0ltcGw6OkdldEJlc3RNYXRjaGVkQ2Fw
YWJpbGl0eSgKICAgICByZXR1cm4gLTE7CiAKICAgUmVhZExvY2tTY29wZWQgY3MoX2FwaUxvY2sp
OwotICBpZiAoKF9sYXN0VXNlZERldmljZU5hbWVMZW5ndGggIT0gc3RybGVuKChjaGFyKilkZXZp
Y2VVbmlxdWVJZFVURjgpKSB8fAotICAgICAgKF9zdHJuaWNtcCgoY2hhciopX2xhc3RVc2VkRGV2
aWNlTmFtZSwgKGNoYXIqKWRldmljZVVuaXF1ZUlkVVRGOCwKLSAgICAgICAgICAgICAgICAgX2xh
c3RVc2VkRGV2aWNlTmFtZUxlbmd0aCkgIT0gMCkpIHsKKyAgaWYgKCFhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKAorICAgICAgICAgIGRldmljZVVuaXF1ZUlkVVRGOCwKKyAgICAgICAgICBhYnNsOjpz
dHJpbmdfdmlldyhfbGFzdFVzZWREZXZpY2VOYW1lLCBfbGFzdFVzZWREZXZpY2VOYW1lTGVuZ3Ro
KSkpIHsKICAgICBfYXBpTG9jay5SZWxlYXNlTG9ja1NoYXJlZCgpOwogICAgIF9hcGlMb2NrLkFj
cXVpcmVMb2NrRXhjbHVzaXZlKCk7CiAgICAgaWYgKC0xID09IENyZWF0ZUNhcGFiaWxpdHlNYXAo
ZGV2aWNlVW5pcXVlSWRVVEY4KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL3ZpZGVvX2NhcHR1cmVf
aW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY2FwdHVyZS92aWRlb19jYXB0dXJlX2ltcGwuY2MKaW5kZXggNTNhZmVkMDBiNjQ0
ZTg5NWZkMmRhNWUwODNiMzI4NzcwNzEzMDQ0YS4uMjM1ZmQzNDM4YTIxNjQ2OWU3ODI5N2FjYWRl
NTY4MTMyNTc0YWFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL3ZpZGVvX2NhcHR1cmVfaW1wbC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NhcHR1cmUvdmlkZW9fY2FwdHVyZV9pbXBsLmNjCkBAIC0xNDMsNyArMTQzLDcgQEAgaW50
MzJfdCBWaWRlb0NhcHR1cmVJbXBsOjpJbmNvbWluZ0ZyYW1lKHVpbnQ4X3QqIHZpZGVvRnJhbWUs
CiAgIGludCBzdHJpZGVfeSA9IHdpZHRoOwogICBpbnQgc3RyaWRlX3V2ID0gKHdpZHRoICsgMSkg
LyAyOwogICBpbnQgdGFyZ2V0X3dpZHRoID0gd2lkdGg7Ci0gIGludCB0YXJnZXRfaGVpZ2h0ID0g
aGVpZ2h0OworICBpbnQgdGFyZ2V0X2hlaWdodCA9IGFicyhoZWlnaHQpOwogCiAgIC8vIFNldEFw
cGx5Um90YXRpb24gZG9lc24ndCB0YWtlIGFueSBsb2NrLiBNYWtlIGEgbG9jYWwgY29weSBoZXJl
LgogICBib29sIGFwcGx5X3JvdGF0aW9uID0gYXBwbHlfcm90YXRpb25fOwpAQCAtMTYzLDcgKzE2
Myw3IEBAIGludDMyX3QgVmlkZW9DYXB0dXJlSW1wbDo6SW5jb21pbmdGcmFtZSh1aW50OF90KiB2
aWRlb0ZyYW1lLAogCiAgIC8vIFRPRE8obmlzc2UpOiBVc2UgYSBwb29sPwogICBydGM6OnNjb3Bl
ZF9yZWZwdHI8STQyMEJ1ZmZlcj4gYnVmZmVyID0gSTQyMEJ1ZmZlcjo6Q3JlYXRlKAotICAgICAg
dGFyZ2V0X3dpZHRoLCBhYnModGFyZ2V0X2hlaWdodCksIHN0cmlkZV95LCBzdHJpZGVfdXYsIHN0
cmlkZV91dik7CisgICAgICB0YXJnZXRfd2lkdGgsIHRhcmdldF9oZWlnaHQsIHN0cmlkZV95LCBz
dHJpZGVfdXYsIHN0cmlkZV91dik7CiAKICAgbGlieXV2OjpSb3RhdGlvbk1vZGUgcm90YXRpb25f
bW9kZSA9IGxpYnl1djo6a1JvdGF0ZTA7CiAgIGlmIChhcHBseV9yb3RhdGlvbikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jYXB0dXJlL3dpbmRvd3MvdmlkZW9fY2FwdHVyZV9kcy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS93aW5kb3dz
L3ZpZGVvX2NhcHR1cmVfZHMuY2MKaW5kZXggNzc4ZmQ4NzYxYWMxOWIzOTYxYWMyNTc0N2E1Yzc0
M2FjNTgxMTU3Yy4uZWEzNzdhM2IwNWNiNmQ1ZDVhNDU0ZmJlZjYzMDdlNWJjYjMxYjc4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jYXB0dXJlL3dpbmRvd3MvdmlkZW9fY2FwdHVyZV9kcy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUv
d2luZG93cy92aWRlb19jYXB0dXJlX2RzLmNjCkBAIC05NSw2ICs5NSwxMCBAQCBpbnQzMl90IFZp
ZGVvQ2FwdHVyZURTOjpJbml0KGNvbnN0IGNoYXIqIGRldmljZVVuaXF1ZUlkVVRGOCkgewogICB9
CiAKICAgX291dHB1dENhcHR1cmVQaW4gPSBHZXRPdXRwdXRQaW4oX2NhcHR1cmVGaWx0ZXIsIFBJ
Tl9DQVRFR09SWV9DQVBUVVJFKTsKKyAgaWYgKCFfb3V0cHV0Q2FwdHVyZVBpbikgeworICAgIFJU
Q19MT0coTFNfSU5GTykgPDwgIkZhaWxlZCB0byBnZXQgb3V0cHV0IGNhcHR1cmUgcGluIjsKKyAg
ICByZXR1cm4gLTE7CisgIH0KIAogICAvLyBDcmVhdGUgdGhlIHNpbmsgZmlsdGUgdXNlZCBmb3Ig
cmVjZWl2aW5nIENhcHR1cmVkIGZyYW1lcy4KICAgX3NpbmtGaWx0ZXIgPSBuZXcgQ2FwdHVyZVNp
bmtGaWx0ZXIoU0lOS19GSUxURVJfTkFNRSwgTlVMTCwgJmhyLCAqdGhpcyk7CkBAIC0xMDksNyAr
MTEzLDEyIEBAIGludDMyX3QgVmlkZW9DYXB0dXJlRFM6OkluaXQoY29uc3QgY2hhciogZGV2aWNl
VW5pcXVlSWRVVEY4KSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiRmFpbGVkIHRvIGFkZCB0
aGUgc2VuZCBmaWx0ZXIgdG8gdGhlIGdyYXBoLiI7CiAgICAgcmV0dXJuIC0xOwogICB9CisKICAg
X2lucHV0U2VuZFBpbiA9IEdldElucHV0UGluKF9zaW5rRmlsdGVyKTsKKyAgaWYgKCFfaW5wdXRT
ZW5kUGluKSB7CisgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiRmFpbGVkIHRvIGdldCBpbnB1dCBz
ZW5kIHBpbiI7CisgICAgcmV0dXJuIC0xOworICB9CiAKICAgLy8gVGVtcG9yYXJ5IGNvbm5lY3Qg
aGVyZS4KICAgLy8gVGhpcyBpcyBkb25lIHNvIHRoYXQgbm8gb25lIGVsc2UgY2FuIHVzZSB0aGUg
Y2FwdHVyZSBkZXZpY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL0JVSUxE
LmduCmluZGV4IGU3NTlhNGE3ZThkZDVlNjM1ZGQ3ZjJjZWY0MGU1NTg0OGQ2YmFjYjguLmFjMzU5
YmM2NGY4Mjc3MTJlZjI1NDA2ZDdkMmNiMDZmNWE5ZGE0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL0JV
SUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL0JVSUxELmduCkBAIC0xNyw4ICsxNyw4IEBAIHJ0Y19zdGF0aWNf
bGlicmFyeSgiZW5jb2RlZF9mcmFtZSIpIHsKICAgZGVwcyA9IFsKICAgICAiOnZpZGVvX2NvZGVj
X2ludGVyZmFjZSIsCiAgICAgIi4uLy4uLzp3ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4vYXBp
L3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVf
aTQyMCIsCi0gICAgIi4uLy4uL2NvbW1vbl92aWRlbzpjb21tb25fdmlkZW8iLAogICAgICIuLi8u
Li9tb2R1bGVzOm1vZHVsZV9hcGkiLAogICAgICIuLi8uLi9tb2R1bGVzOm1vZHVsZV9hcGlfcHVi
bGljIiwKICAgICAiLi4vLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kaW5nX3V0aWxp
dHkiLApAQCAtNTcsNiArNTcsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoIm5hY2tfbW9kdWxlIikg
ewogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uL3J0
Y19iYXNlOnJ0Y19udW1lcmljcyIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCisgICAg
Ii4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uL3V0aWxpdHk6dXRp
bGl0eSIsCiAgIF0KIH0KQEAgLTE1OCw2ICsxNTksNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoInZp
ZGVvX2NvZGluZyIpIHsKICAgICAiLi46bW9kdWxlX2FwaV9wdWJsaWMiLAogICAgICIuLi8uLjp3
ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBpOmZlY19jb250cm9sbGVyX2FwaSIsCisgICAg
Ii4uLy4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnki
LAogICAgICIuLi8uLi9hcGkvdmlkZW86ZW5jb2RlZF9mcmFtZSIsCiAgICAgIi4uLy4uL2FwaS92
aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRvciIsCiAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRl
b19mcmFtZSIsCkBAIC0xNjUsMTIgKzE2NywxNCBAQCBydGNfc3RhdGljX2xpYnJhcnkoInZpZGVv
X2NvZGluZyIpIHsKICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBp
IiwKICAgICAiLi4vLi4vY29tbW9uX3ZpZGVvIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tz
IiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6ZGVwcmVjYXRpb24iLAogICAgICIuLi8uLi9ydGNfYmFz
ZTpydGNfYmFzZSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAg
ICAiLi4vLi4vcnRjX2Jhc2U6cnRjX251bWVyaWNzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRj
X3Rhc2tfcXVldWUiLAogICAgICIuLi8uLi9ydGNfYmFzZTpzZXF1ZW5jZWRfdGFza19jaGVja2Vy
IiwKICAgICAiLi4vLi4vcnRjX2Jhc2UvZXhwZXJpbWVudHM6YWxyX2V4cGVyaW1lbnQiLAorICAg
ICIuLi8uLi9ydGNfYmFzZS9leHBlcmltZW50czpqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVu
dCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlL2V4cGVyaW1lbnRzOnJ0dF9tdWx0X2V4cGVyaW1lbnQi
LAogICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06ZmFsbHRocm91Z2giLAogICAgICIuLi8uLi9y
dGNfYmFzZS90aGlyZF9wYXJ0eS9iYXNlNjQiLApAQCAtMjM4LDggKzI0Miw2IEBAIHJ0Y19zb3Vy
Y2Vfc2V0KCJ2aWRlb19jb2RpbmdfdXRpbGl0eSIpIHsKICAgICAidXRpbGl0eS9mcmFtZXJhdGVf
Y29udHJvbGxlci5oIiwKICAgICAidXRpbGl0eS9pdmZfZmlsZV93cml0ZXIuY2MiLAogICAgICJ1
dGlsaXR5L2l2Zl9maWxlX3dyaXRlci5oIiwKLSAgICAidXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5j
YyIsCi0gICAgInV0aWxpdHkvbW92aW5nX2F2ZXJhZ2UuaCIsCiAgICAgInV0aWxpdHkvcXVhbGl0
eV9zY2FsZXIuY2MiLAogICAgICJ1dGlsaXR5L3F1YWxpdHlfc2NhbGVyLmgiLAogICAgICJ1dGls
aXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9jYXRvci5jYyIsCkBAIC0yNjEsNiArMjYzLDcgQEAgcnRj
X3NvdXJjZV9zZXQoInZpZGVvX2NvZGluZ191dGlsaXR5IikgewogICAgICI6dmlkZW9fY29kZWNf
aW50ZXJmYWNlIiwKICAgICAiLi46bW9kdWxlX2FwaSIsCiAgICAgIi4uLy4uOndlYnJ0Y19jb21t
b24iLAorICAgICIuLi8uLi9hcGkvdmlkZW86ZW5jb2RlZF9pbWFnZSIsCiAgICAgIi4uLy4uL2Fw
aS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRvciIsCiAgICAgIi4uLy4uL2FwaS92aWRlb19j
b2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgIi4uLy4uL2NvbW1vbl92aWRlbyIsCkBAIC0z
MDIsOCArMzA1LDEwIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX2gyNjQiKSB7CiAgICAg
Ii4uLy4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tz
IiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAorICAgICIuLi8uLi9ydGNfYmFzZS9z
eXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwK
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvbGli
eXV2IiwKICAgXQogCkBAIC0zNzYsNiArMzgxLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJy
dGNfbXVsdGlwbGV4IikgewogICAgICI6dmlkZW9fY29kaW5nX3V0aWxpdHkiLAogICAgICIuLjpt
b2R1bGVfYXBpIiwKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaS92
aWRlbzplbmNvZGVkX2ltYWdlIiwKICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwK
ICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAogICAgICIuLi8uLi9hcGkv
dmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLApAQCAtMzkxLDIyICszOTcsMTMgQEAgcnRj
X3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNfdnA4IikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQog
ICBwb2lzb25vdXMgPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0KICAgc291cmNlcyA9IFsK
LSAgICAiY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5jYyIsCi0gICAgImNvZGVj
cy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuaCIsCi0gICAgImNvZGVjcy92cDgvaW5jbHVk
ZS90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5oIiwKICAgICAiY29kZWNzL3ZwOC9pbmNsdWRlL3Zw
OC5oIiwKLSAgICAiY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIsCiAg
ICAgImNvZGVjcy92cDgvbGlidnB4X2ludGVyZmFjZS5jYyIsCiAgICAgImNvZGVjcy92cDgvbGli
dnB4X2ludGVyZmFjZS5oIiwKICAgICAiY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIuY2Mi
LAogICAgICJjb2RlY3MvdnA4L2xpYnZweF92cDhfZGVjb2Rlci5oIiwKICAgICAiY29kZWNzL3Zw
OC9saWJ2cHhfdnA4X2VuY29kZXIuY2MiLAogICAgICJjb2RlY3MvdnA4L2xpYnZweF92cDhfZW5j
b2Rlci5oIiwKLSAgICAiY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuY2MiLAotICAgICJj
b2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVycy5oIiwKLSAgICAiY29kZWNzL3ZwOC90ZW1wb3Jh
bF9sYXllcnMuaCIsCi0gICAgImNvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2Mi
LAotICAgICJjb2RlY3MvdnA4L3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MiLAogICBdCiAKICAgaWYg
KCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CkBAIC00MTgsMTQgKzQxNSwxOCBA
QCBydGNfc3RhdGljX2xpYnJhcnkoIndlYnJ0Y192cDgiKSB7CiAgICAgIjpjb2RlY19nbG9iYWxz
X2hlYWRlcnMiLAogICAgICI6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKICAgICAiOnZpZGVvX2Nv
ZGluZ191dGlsaXR5IiwKKyAgICAiOndlYnJ0Y192cDhfdGVtcG9yYWxfbGF5ZXJzIiwKICAgICAi
Li46bW9kdWxlX2FwaSIsCiAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAorICAgICIuLi8uLi9h
cGkvdmlkZW86ZW5jb2RlZF9pbWFnZSIsCiAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFt
ZSIsCisgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6Y3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXll
cnMiLAogICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAogICAg
ICIuLi8uLi9jb21tb25fdmlkZW8iLAogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAg
ICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uL3J0Y19iYXNl
OnJ0Y19udW1lcmljcyIsCisgICAgIi4uLy4uL3J0Y19iYXNlL2V4cGVyaW1lbnRzOmNwdV9zcGVl
ZF9leHBlcmltZW50IiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAiLi4vLi4v
c3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJz
Om1ldHJpY3MiLApAQCAtNDM4LDYgKzQzOSw0MSBAQCBydGNfc3RhdGljX2xpYnJhcnkoIndlYnJ0
Y192cDgiKSB7CiAgIH0KIH0KIAorcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNfdnA4X3RlbXBv
cmFsX2xheWVycyIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgc291cmNlcyA9IFsKKyAg
ICAiY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5jYyIsCisgICAgImNvZGVjcy92
cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuaCIsCisgICAgImNvZGVjcy92cDgvaW5jbHVkZS90
ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5oIiwKKyAgICAiY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9s
YXllcnMuY2MiLAorICAgICJjb2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVycy5oIiwKKyAgICAi
Y29kZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnMuaCIsCisgICAgImNvZGVjcy92cDgvdGVtcG9yYWxf
bGF5ZXJzX2NoZWNrZXIuY2MiLAorICBdCisKKyAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYm
IGlzX2NsYW5nKSB7CisgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBD
bGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgorICAgIHN1cHByZXNzZWRfY29uZmln
cyArPSBbICIvL2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCisgIH0K
KworICBkZXBzID0gWworICAgICI6Y29kZWNfZ2xvYmFsc19oZWFkZXJzIiwKKyAgICAiOnZpZGVv
X2NvZGVjX2ludGVyZmFjZSIsCisgICAgIjp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCisgICAgIi4u
Om1vZHVsZV9hcGkiLAorICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4vYXBp
L3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hl
Y2tzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8u
Li9ydGNfYmFzZTpydGNfbnVtZXJpY3MiLAorICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAor
ICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICIuLi8uLi9zeXN0
ZW1fd3JhcHBlcnM6bWV0cmljcyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlv
bmFsIiwKKyAgXQorfQorCiAjIFRoaXMgdGFyZ2V0IGluY2x1ZGVzIFZQOSBmaWxlcyB0aGF0IG1h
eSBiZSB1c2VkIGZvciBhbnkgVlA5IGNvZGVjLCBpbnRlcm5hbCBTVyBvciBleHRlcm5hbCBIVy4K
IHJ0Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX3ZwOV9oZWxwZXJzIikgewogICBzb3VyY2VzID0g
WwpAQCAtNDY1LDE5ICs1MDEsMTQgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNfdnA5X2hl
bHBlcnMiKSB7CiBydGNfc3RhdGljX2xpYnJhcnkoIndlYnJ0Y192cDkiKSB7CiAgIHZpc2liaWxp
dHkgPSBbICIqIiBdCiAgIHBvaXNvbm91cyA9IFsgInNvZnR3YXJlX3ZpZGVvX2NvZGVjcyIgXQot
ICBpZiAocnRjX2xpYnZweF9idWlsZF92cDkpIHsKLSAgICBzb3VyY2VzID0gWwotICAgICAgImNv
ZGVjcy92cDkvaW5jbHVkZS92cDkuaCIsCi0gICAgICAiY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVm
ZmVyX3Bvb2wuY2MiLAotICAgICAgImNvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmgi
LAotICAgICAgImNvZGVjcy92cDkvdnA5X2ltcGwuY2MiLAotICAgICAgImNvZGVjcy92cDkvdnA5
X2ltcGwuaCIsCi0gICAgXQotICB9IGVsc2UgewotICAgIHNvdXJjZXMgPSBbCi0gICAgICAiY29k
ZWNzL3ZwOS92cDlfbm9vcC5jYyIsCi0gICAgXQotICB9CisgIHNvdXJjZXMgPSBbCisgICAgImNv
ZGVjcy92cDkvaW5jbHVkZS92cDkuaCIsCisgICAgImNvZGVjcy92cDkvdnA5LmNjIiwKKyAgICAi
Y29kZWNzL3ZwOS92cDlfZnJhbWVfYnVmZmVyX3Bvb2wuY2MiLAorICAgICJjb2RlY3MvdnA5L3Zw
OV9mcmFtZV9idWZmZXJfcG9vbC5oIiwKKyAgICAiY29kZWNzL3ZwOS92cDlfaW1wbC5jYyIsCisg
ICAgImNvZGVjcy92cDkvdnA5X2ltcGwuaCIsCisgIF0KIAogICBpZiAoIWJ1aWxkX3dpdGhfY2hy
b21pdW0gJiYgaXNfY2xhbmcpIHsKICAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIENo
cm9taXVtIENsYW5nIHBsdWdpbiAoYnVncy53ZWJydGMub3JnLzE2MykuCkBAIC01NzQsNyArNjA1
LDEwIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjp2aWRlb19jb2RpbmciLAog
ICAgICAgIjp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAgICAgICAiLi4vLi4vOndlYnJ0Y19jb21t
b24iLAorICAgICAgIi4uLy4uL2FwaTptb2NrX3ZpZGVvX2RlY29kZXIiLAorICAgICAgIi4uLy4u
L2FwaTptb2NrX3ZpZGVvX2VuY29kZXIiLAogICAgICAgIi4uLy4uL2FwaTpzaW11bGNhc3RfdGVz
dF9maXh0dXJlX2FwaSIsCisgICAgICAiLi4vLi4vYXBpL3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAog
ICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgICAiLi4vLi4vYXBpL3Zp
ZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAogICAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6dmlk
ZW9fY29kZWNzX2FwaSIsCkBAIC02MDYsNiArNjQwLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3Rz
KSB7CiAgICAgICAiOndlYnJ0Y192cDlfaGVscGVycyIsCiAgICAgICAiLi4vLi46d2VicnRjX2Nv
bW1vbiIsCiAgICAgICAiLi4vLi4vYXBpOnZpZGVvY29kZWNfdGVzdF9maXh0dXJlX2FwaSIsCisg
ICAgICAiLi4vLi4vYXBpL3ZpZGVvOmJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFj
dG9yeSIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yIiwK
ICAgICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAogICAgICAgIi4uLy4uL2FwaS92
aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKQEAgLTY3NCw2ICs3MDksNyBAQCBpZiAocnRjX2luY2x1
ZGVfdGVzdHMpIHsKICAgICAgICI6d2VicnRjX3ZwOV9oZWxwZXJzIiwKICAgICAgICIuLi8uLjp3
ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi8uLi9hcGk6dmlkZW9jb2RlY190ZXN0X2ZpeHR1cmVf
YXBpIiwKKyAgICAgICIuLi8uLi9hcGkvdGVzdC92aWRlbzpmdW5jdGlvbl92aWRlb19mYWN0b3J5
IiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAogICAg
ICAgIi4uLy4uL2NhbGw6dmlkZW9fc3RyZWFtX2FwaSIsCiAgICAgICAiLi4vLi4vY29tbW9uX3Zp
ZGVvIiwKQEAgLTcxOSw2ICs3NTUsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICB9
CiAKICAgICBkZXBzID0gWworICAgICAgIjptb2NrX2hlYWRlcnMiLAogICAgICAgIjp2aWRlb19j
b2RlY3NfdGVzdF9mcmFtZXdvcmsiLAogICAgICAgIjp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAg
ICAgICAiOnZpZGVvY29kZWNfdGVzdF9pbXBsIiwKQEAgLTczMCw3ICs3NjcsMTAgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAi
Li4vLi4vYXBpOmNyZWF0ZV92aWRlb2NvZGVjX3Rlc3RfZml4dHVyZV9hcGkiLAogICAgICAgIi4u
Ly4uL2FwaTptb2NrX3ZpZGVvX2NvZGVjX2ZhY3RvcnkiLAorICAgICAgIi4uLy4uL2FwaTptb2Nr
X3ZpZGVvX2RlY29kZXIiLAorICAgICAgIi4uLy4uL2FwaTptb2NrX3ZpZGVvX2VuY29kZXIiLAog
ICAgICAgIi4uLy4uL2FwaTp2aWRlb2NvZGVjX3Rlc3RfZml4dHVyZV9hcGkiLAorICAgICAgIi4u
Ly4uL2FwaS90ZXN0L3ZpZGVvOmZ1bmN0aW9uX3ZpZGVvX2ZhY3RvcnkiLAogICAgICAgIi4uLy4u
L2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2Zy
YW1lX2k0MjAiLAogICAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6cnRjX3NvZnR3YXJlX2Zh
bGxiYWNrX3dyYXBwZXJzIiwKQEAgLTczOSwxMSArNzc5LDExIEBAIGlmIChydGNfaW5jbHVkZV90
ZXN0cykgewogICAgICAgIi4uLy4uL21lZGlhOnJ0Y19oMjY0X3Byb2ZpbGVfaWQiLAogICAgICAg
Ii4uLy4uL21lZGlhOnJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3MiLAogICAgICAgIi4uLy4uL21l
ZGlhOnJ0Y19tZWRpYV9iYXNlIiwKKyAgICAgICIuLi8uLi9tZWRpYTpydGNfc2ltdWxjYXN0X2Vu
Y29kZXJfYWRhcHRlciIsCiAgICAgICAiLi4vLi4vbWVkaWE6cnRjX3ZwOV9wcm9maWxlIiwKICAg
ICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgICAiLi4vLi4vdGVzdDpmaWVsZF90
cmlhbCIsCiAgICAgICAiLi4vLi4vdGVzdDpmaWxldXRpbHMiLAotICAgICAgIi4uLy4uL3Rlc3Q6
dGVzdF9jb21tb24iLAogICAgICAgIi4uLy4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICIu
Li8uLi90ZXN0OnZpZGVvX3Rlc3RfY29tbW9uIiwKICAgICAgICIuLi9ydHBfcnRjcDpydHBfcnRj
cF9mb3JtYXQiLApAQCAtNzc0LDYgKzgxNCwxMCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsK
ICAgICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2lu
IChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KICAgICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIv
L2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCiAgICAgfQorCisgICAg
aWYgKHJ0Y19idWlsZF9saWJ2cHgpIHsKKyAgICAgIGRlcHMgKz0gWyBydGNfbGlidnB4X2RpciBd
CisgICAgfQogICB9CiAKICAgcnRjX3NvdXJjZV9zZXQoInZpZGVvX2NvZGluZ191bml0dGVzdHMi
KSB7CkBAIC04MDQsMTMgKzg0OCwxMSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAg
ICJzZXNzaW9uX2luZm9fdW5pdHRlc3QuY2MiLAogICAgICAgInRlc3Qvc3RyZWFtX2dlbmVyYXRv
ci5jYyIsCiAgICAgICAidGVzdC9zdHJlYW1fZ2VuZXJhdG9yLmgiLAotICAgICAgInRlc3QvdGVz
dF91dGlsLmgiLAogICAgICAgInRpbWluZ191bml0dGVzdC5jYyIsCiAgICAgICAidXRpbGl0eS9k
ZWZhdWx0X3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICJ1dGls
aXR5L2ZyYW1lX2Ryb3BwZXJfdW5pdHRlc3QuY2MiLAogICAgICAgInV0aWxpdHkvZnJhbWVyYXRl
X2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MiLAogICAgICAgInV0aWxpdHkvaXZmX2ZpbGVfd3JpdGVy
X3VuaXR0ZXN0LmNjIiwKLSAgICAgICJ1dGlsaXR5L21vdmluZ19hdmVyYWdlX3VuaXR0ZXN0LmNj
IiwKICAgICAgICJ1dGlsaXR5L3F1YWxpdHlfc2NhbGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJ1
dGlsaXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAidmlk
ZW9fY29kZWNfaW5pdGlhbGl6ZXJfdW5pdHRlc3QuY2MiLApAQCAtODM5LDE2ICs4ODEsMjMgQEAg
aWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOnZpZGVvY29kZWNfdGVzdF9pbXBsIiwK
ICAgICAgICI6d2VicnRjX2gyNjQiLAogICAgICAgIjp3ZWJydGNfdnA4IiwKKyAgICAgICI6d2Vi
cnRjX3ZwOF90ZW1wb3JhbF9sYXllcnMiLAogICAgICAgIjp3ZWJydGNfdnA5IiwKICAgICAgICI6
d2VicnRjX3ZwOV9oZWxwZXJzIiwKICAgICAgICIuLjptb2R1bGVfYXBpIiwKICAgICAgICIuLi8u
Ljp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi8uLi9hcGk6Y3JlYXRlX3NpbXVsY2FzdF90ZXN0
X2ZpeHR1cmVfYXBpIiwKKyAgICAgICIuLi8uLi9hcGk6bW9ja192aWRlb19kZWNvZGVyIiwKKyAg
ICAgICIuLi8uLi9hcGk6bW9ja192aWRlb19lbmNvZGVyIiwKICAgICAgICIuLi8uLi9hcGk6c2lt
dWxjYXN0X3Rlc3RfZml4dHVyZV9hcGkiLAogICAgICAgIi4uLy4uL2FwaTp2aWRlb2NvZGVjX3Rl
c3RfZml4dHVyZV9hcGkiLAorICAgICAgIi4uLy4uL2FwaS90ZXN0L3ZpZGVvOmZ1bmN0aW9uX3Zp
ZGVvX2ZhY3RvcnkiLAorICAgICAgIi4uLy4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJh
dGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19iaXRy
YXRlX2FsbG9jYXRvciIsCisgICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxs
b2NhdG9yX2ZhY3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAg
ICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAorICAgICAgIi4uLy4uL2Fw
aS92aWRlb19jb2RlY3M6Y3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMiLAogICAgICAgIi4uLy4u
L2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgICAiLi4vLi4vY29tbW9u
X3ZpZGVvOmNvbW1vbl92aWRlbyIsCiAgICAgICAiLi4vLi4vbWVkaWE6cnRjX21lZGlhX2Jhc2Ui
LApAQCAtODU5LDYgKzkwOCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4u
Ly4uL3J0Y19iYXNlOnJ0Y19udW1lcmljcyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX3Rh
c2tfcXVldWUiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlX2Zvcl90ZXN0
IiwKKyAgICAgICIuLi8uLi9ydGNfYmFzZS9leHBlcmltZW50czpqaXR0ZXJfdXBwZXJfYm91bmRf
ZXhwZXJpbWVudCIsCiAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAgICIuLi8u
Li9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICAgIi4uLy4uL3N5c3RlbV93cmFw
cGVyczptZXRyaWNzIiwKQEAgLTg3MCw2ICs5MjAsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMp
IHsKICAgICAgICIuLi8uLi90ZXN0OnZpZGVvX3Rlc3Rfc3VwcG9ydCIsCiAgICAgICAiLi4vcnRw
X3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnkiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
Om9wdGlvbmFsIiwKICAgICBdCiAgICAgaWYgKHJ0Y19idWlsZF9saWJ2cHgpIHsKICAgICAgIGRl
cHMgKz0gWyBydGNfbGlidnB4X2RpciBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9o
MjY0X2RlY29kZXJfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBs
LmNjCmluZGV4IDczZDQ1ODM3YWY3N2Q2OTlmNmE3OTZjMWRjZjUxZGYzMjE2ZWFkZWIuLmUyMTMy
MjNjYTRmODExZDcxZTk5YjVmYzhiZjEzOThjODljYzc3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gy
NjRfZGVjb2Rlcl9pbXBsLmNjCkBAIC0zMjMsMTMgKzMyMywxMSBAQCBpbnQzMl90IEgyNjREZWNv
ZGVySW1wbDo6RGVjb2RlKGNvbnN0IEVuY29kZWRJbWFnZSYgaW5wdXRfaW1hZ2UsCiAgIC8vIHdp
dGhvdXQgY29weWluZyB0aGUgdW5kZXJseWluZyBidWZmZXIuCiAgIGlmIChhdl9mcmFtZV8tPndp
ZHRoICE9IGk0MjBfYnVmZmVyLT53aWR0aCgpIHx8CiAgICAgICBhdl9mcmFtZV8tPmhlaWdodCAh
PSBpNDIwX2J1ZmZlci0+aGVpZ2h0KCkpIHsKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9G
cmFtZUJ1ZmZlcj4gY3JvcHBlZF9idWYoCi0gICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmpl
Y3Q8V3JhcHBlZEk0MjBCdWZmZXI+KAotICAgICAgICAgICAgYXZfZnJhbWVfLT53aWR0aCwgYXZf
ZnJhbWVfLT5oZWlnaHQsCi0gICAgICAgICAgICBpNDIwX2J1ZmZlci0+RGF0YVkoKSwgaTQyMF9i
dWZmZXItPlN0cmlkZVkoKSwKLSAgICAgICAgICAgIGk0MjBfYnVmZmVyLT5EYXRhVSgpLCBpNDIw
X2J1ZmZlci0+U3RyaWRlVSgpLAotICAgICAgICAgICAgaTQyMF9idWZmZXItPkRhdGFWKCksIGk0
MjBfYnVmZmVyLT5TdHJpZGVWKCksCi0gICAgICAgICAgICBydGM6OktlZXBSZWZVbnRpbERvbmUo
aTQyMF9idWZmZXIpKSk7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvRnJhbWVCdWZmZXI+
IGNyb3BwZWRfYnVmID0gV3JhcEk0MjBCdWZmZXIoCisgICAgICAgIGF2X2ZyYW1lXy0+d2lkdGgs
IGF2X2ZyYW1lXy0+aGVpZ2h0LCBpNDIwX2J1ZmZlci0+RGF0YVkoKSwKKyAgICAgICAgaTQyMF9i
dWZmZXItPlN0cmlkZVkoKSwgaTQyMF9idWZmZXItPkRhdGFVKCksIGk0MjBfYnVmZmVyLT5TdHJp
ZGVVKCksCisgICAgICAgIGk0MjBfYnVmZmVyLT5EYXRhVigpLCBpNDIwX2J1ZmZlci0+U3RyaWRl
VigpLAorICAgICAgICBydGM6OktlZXBSZWZVbnRpbERvbmUoaTQyMF9idWZmZXIpKTsKICAgICBW
aWRlb0ZyYW1lIGNyb3BwZWRfZnJhbWUgPQogICAgICAgICBWaWRlb0ZyYW1lOjpCdWlsZGVyKCkK
ICAgICAgICAgICAgIC5zZXRfdmlkZW9fZnJhbWVfYnVmZmVyKGNyb3BwZWRfYnVmKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9lbmNvZGVyX2ltcGwuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvaDI2NC9oMjY0X2VuY29kZXJfaW1wbC5jYwppbmRleCA0ZWZmY2RiYzUyNGZlYTk5NzcyN2Yy
YmU0ZWY2ODZlZmQ5NDIxZTQxLi5mMTkxZjJjNjQwMzJhYTk3NDUzYzBjODE5OWRmNDI0NWZiNmRi
OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2VuY29kZXJfaW1wbC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2VuY29kZXJfaW1wbC5jYwpAQCAtMTksNiArMTks
NyBAQAogI2luY2x1ZGUgInRoaXJkX3BhcnR5L29wZW5oMjY0L3NyYy9jb2RlYy9hcGkvc3ZjL2Nv
ZGVjX2RlZi5oIgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L29wZW5oMjY0L3NyYy9jb2RlYy9hcGkv
c3ZjL2NvZGVjX3Zlci5oIgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5j
bHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9jYXRv
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3V0
aWxpdHkuaCIKQEAgLTE2Nyw3ICsxNjgsNyBAQCBIMjY0RW5jb2RlckltcGw6OkgyNjRFbmNvZGVy
SW1wbChjb25zdCBjcmlja2V0OjpWaWRlb0NvZGVjJiBjb2RlYykKICAgICAgIGVuY29kZWRfaW1h
Z2VfY2FsbGJhY2tfKG51bGxwdHIpLAogICAgICAgaGFzX3JlcG9ydGVkX2luaXRfKGZhbHNlKSwK
ICAgICAgIGhhc19yZXBvcnRlZF9lcnJvcl8oZmFsc2UpIHsKLSAgUlRDX0NIRUNLKGNyaWNrZXQ6
OkNvZGVjTmFtZXNFcShjb2RlYy5uYW1lLCBjcmlja2V0OjprSDI2NENvZGVjTmFtZSkpOworICBS
VENfQ0hFQ0soYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBjcmlja2V0OjprSDI2
NENvZGVjTmFtZSkpOwogICBzdGQ6OnN0cmluZyBwYWNrZXRpemF0aW9uX21vZGVfc3RyaW5nOwog
ICBpZiAoY29kZWMuR2V0UGFyYW0oY3JpY2tldDo6a0gyNjRGbXRwUGFja2V0aXphdGlvbk1vZGUs
CiAgICAgICAgICAgICAgICAgICAgICAmcGFja2V0aXphdGlvbl9tb2RlX3N0cmluZykgJiYKQEAg
LTMxMCw3ICszMTEsNyBAQCBpbnQzMl90IEgyNjRFbmNvZGVySW1wbDo6SW5pdEVuY29kZShjb25z
dCBWaWRlb0NvZGVjKiBpbnN0LAogICB9CiAKICAgU2ltdWxjYXN0UmF0ZUFsbG9jYXRvciBpbml0
X2FsbG9jYXRvcihjb2RlY18pOwotICBCaXRyYXRlQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0gaW5p
dF9hbGxvY2F0b3IuR2V0QWxsb2NhdGlvbigKKyAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBhbGxv
Y2F0aW9uID0gaW5pdF9hbGxvY2F0b3IuR2V0QWxsb2NhdGlvbigKICAgICAgIGNvZGVjXy5zdGFy
dEJpdHJhdGUgKiAxMDAwLCBjb2RlY18ubWF4RnJhbWVyYXRlKTsKICAgcmV0dXJuIFNldFJhdGVB
bGxvY2F0aW9uKGFsbG9jYXRpb24sIGNvZGVjXy5tYXhGcmFtZXJhdGUpOwogfQpAQCAtMzM5LDcg
KzM0MCw3IEBAIGludDMyX3QgSDI2NEVuY29kZXJJbXBsOjpSZWdpc3RlckVuY29kZUNvbXBsZXRl
Q2FsbGJhY2soCiB9CiAKIGludDMyX3QgSDI2NEVuY29kZXJJbXBsOjpTZXRSYXRlQWxsb2NhdGlv
bigKLSAgICBjb25zdCBCaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSwKKyAgICBjb25zdCBWaWRl
b0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlLAogICAgIHVpbnQzMl90IG5ld19mcmFtZXJhdGUp
IHsKICAgaWYgKGVuY29kZXJzXy5lbXB0eSgpKQogICAgIHJldHVybiBXRUJSVENfVklERU9fQ09E
RUNfVU5JTklUSUFMSVpFRDsKQEAgLTUzNCwxMCArNTM1LDYgQEAgaW50MzJfdCBIMjY0RW5jb2Rl
ckltcGw6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9mcmFtZSwKICAgcmV0dXJuIFdF
QlJUQ19WSURFT19DT0RFQ19PSzsKIH0KIAotY29uc3QgY2hhciogSDI2NEVuY29kZXJJbXBsOjpJ
bXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7Ci0gIHJldHVybiAiT3BlbkgyNjQiOwotfQotCiAv
LyBJbml0aWFsaXphdGlvbiBwYXJhbWV0ZXJzLgogLy8gVGhlcmUgYXJlIHR3byB3YXlzIHRvIGlu
aXRpYWxpemUuIFRoZXJlIGlzIFNFbmNQYXJhbUJhc2UgKGNsZWFyZWQgd2l0aAogLy8gbWVtc2V0
KCZwLCAwLCBzaXplb2YoU0VuY1BhcmFtQmFzZSkpIHVzZWQgaW4gSW5pdGlhbGl6ZSwgYW5kIFNF
bmNQYXJhbUV4dApAQCAtNjI0LDE0ICs2MjEsMTMgQEAgdm9pZCBIMjY0RW5jb2RlckltcGw6OlJl
cG9ydEVycm9yKCkgewogICBoYXNfcmVwb3J0ZWRfZXJyb3JfID0gdHJ1ZTsKIH0KIAotaW50MzJf
dCBIMjY0RW5jb2RlckltcGw6OlNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9s
b3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgcnR0KSB7Ci0gIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Ci19Ci0KLVZpZGVvRW5j
b2Rlcjo6U2NhbGluZ1NldHRpbmdzIEgyNjRFbmNvZGVySW1wbDo6R2V0U2NhbGluZ1NldHRpbmdz
KCkgY29uc3QgewotICByZXR1cm4gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3Moa0xvd0gy
NjRRcFRocmVzaG9sZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtI
aWdoSDI2NFFwVGhyZXNob2xkKTsKK1ZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gSDI2NEVuY29k
ZXJJbXBsOjpHZXRFbmNvZGVySW5mbygpIGNvbnN0IHsKKyAgRW5jb2RlckluZm8gaW5mbzsKKyAg
aW5mby5zdXBwb3J0c19uYXRpdmVfaGFuZGxlID0gZmFsc2U7CisgIGluZm8uaW1wbGVtZW50YXRp
b25fbmFtZSA9ICJPcGVuSDI2NCI7CisgIGluZm8uc2NhbGluZ19zZXR0aW5ncyA9CisgICAgICBW
aWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyhrTG93SDI2NFFwVGhyZXNob2xkLCBrSGlnaEgy
NjRRcFRocmVzaG9sZCk7CisgIHJldHVybiBpbmZvOwogfQogCiB2b2lkIEgyNjRFbmNvZGVySW1w
bDo6TGF5ZXJDb25maWc6OlNldFN0cmVhbVN0YXRlKGJvb2wgc2VuZF9zdHJlYW0pIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZW5jb2Rlcl9pbXBsLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvaDI2NC9oMjY0X2VuY29kZXJfaW1wbC5oCmluZGV4IDBkMjU5NjYwZjY5OWI2YjU1YWIzYjU2
MzFiYzc2Mjc0ZDZkM2ExMzguLmRhMzI1NjNjOWIyZGUyZjdlZjJmMDk0ODRkMGY4OGQxMTQxZmNm
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZW5jb2Rlcl9pbXBsLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9lbmNvZGVyX2ltcGwuaApAQCAtNzAsMTIgKzcwLDcg
QEAgY2xhc3MgSDI2NEVuY29kZXJJbXBsIDogcHVibGljIEgyNjRFbmNvZGVyIHsKICAgICAgICAg
ICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCiAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1lVHlwZT4qIGZyYW1lX3R5cGVz
KSBvdmVycmlkZTsKIAotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBv
dmVycmlkZTsKLQotICBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0
dGluZ3MoKSBjb25zdCBvdmVycmlkZTsKLQotICAvLyBVbnN1cHBvcnRlZCAvIERvIG5vdGhpbmcu
Ci0gIGludDMyX3QgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsIGlu
dDY0X3QgcnR0KSBvdmVycmlkZTsKKyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25z
dCBvdmVycmlkZTsKIAogICAvLyBFeHBvc2VkIGZvciB0ZXN0aW5nLgogICBIMjY0UGFja2V0aXph
dGlvbk1vZGUgUGFja2V0aXphdGlvbk1vZGVGb3JUZXN0aW5nKCkgY29uc3QgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9zaW11bGNhc3RfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvaDI2NC9oMjY0X3NpbXVsY2FzdF91bml0dGVzdC5jYwppbmRleCA2YzZmYWU4YzFhMGQx
NDNhYWExMmEyNzMxZTQxYTdlYzg4MTI0OWYwLi4zYjcyMGIzODQzMGI0NzA5NzNlZTQ0NTRmYmRj
MjljZjdiN2U3ZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X3NpbXVsY2Fz
dF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X3NpbXVsY2FzdF91bml0
dGVzdC5jYwpAQCAtMTMsOSArMTMsOSBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5o
IgogI2luY2x1ZGUgImFwaS90ZXN0L2NyZWF0ZV9zaW11bGNhc3RfdGVzdF9maXh0dXJlLmgiCiAj
aW5jbHVkZSAiYXBpL3Rlc3Qvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oIgorI2luY2x1ZGUgImFw
aS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUg
ImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2luY2x1ZGUvaDI2NC5oIgotI2lu
Y2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAi
dGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJ0ZXN0L2d0
ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gy
NjQvaW5jbHVkZS9oMjY0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9pbmNsdWRlL2gyNjQuaAppbmRl
eCBlMjM4MThiNzU2Yjg2ZjMwMzNlYjZiOTUzYTM2ODhiYTNjODA2YTMyLi5mNWNlYmNmZTYyMTIy
YzVlZjcyN2YzNzcwNTAzYjYzZjdmZDRmMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2
NC9pbmNsdWRlL2gyNjQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9pbmNsdWRlL2gyNjQuaApA
QCAtMTcsNiArMTcsNyBAQAogCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKQEAgLTI2LDEzICsyNywxMyBAQCBzdHJ1Y3QgU2RwVmlkZW9Gb3JtYXQ7CiAvLyB8
cnRjX3VzZV9oMjY0fCBidWlsZCBmbGFnIGlzIHRydWUgKGlmIGZhbHNlLCB0aGlzIGZ1bmN0aW9u
IGRvZXMgbm90aGluZykuCiAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBi
ZWZvcmUgb3IgZHVyaW5nIFdlYlJUQyBpbml0aWFsaXphdGlvbgogLy8gYW5kIGlzIG5vdCB0aHJl
YWQtc2FmZS4KLXZvaWQgRGlzYWJsZVJ0Y1VzZUgyNjQoKTsKK1JUQ19FWFBPUlQgdm9pZCBEaXNh
YmxlUnRjVXNlSDI2NCgpOwogCiAvLyBSZXR1cm5zIGEgdmVjdG9yIHdpdGggYWxsIHN1cHBvcnRl
ZCBpbnRlcm5hbCBIMjY0IHByb2ZpbGVzIHRoYXQgd2UgY2FuCiAvLyBuZWdvdGlhdGUgaW4gU0RQ
LCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLgogc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IFN1
cHBvcnRlZEgyNjRDb2RlY3MoKTsKIAotY2xhc3MgSDI2NEVuY29kZXIgOiBwdWJsaWMgVmlkZW9F
bmNvZGVyIHsKK2NsYXNzIFJUQ19FWFBPUlQgSDI2NEVuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNv
ZGVyIHsKICBwdWJsaWM6CiAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SDI2NEVuY29kZXI+IENy
ZWF0ZShjb25zdCBjcmlja2V0OjpWaWRlb0NvZGVjJiBjb2RlYyk7CiAgIC8vIElmIEguMjY0IGlz
IHN1cHBvcnRlZCAoYW55IGltcGxlbWVudGF0aW9uKS4KQEAgLTQxLDcgKzQyLDcgQEAgY2xhc3Mg
SDI2NEVuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgfkgyNjRFbmNvZGVyKCkgb3Zl
cnJpZGUge30KIH07CiAKLWNsYXNzIEgyNjREZWNvZGVyIDogcHVibGljIFZpZGVvRGVjb2RlciB7
CitjbGFzcyBSVENfRVhQT1JUIEgyNjREZWNvZGVyIDogcHVibGljIFZpZGVvRGVjb2RlciB7CiAg
cHVibGljOgogICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEgyNjREZWNvZGVyPiBDcmVhdGUoKTsK
ICAgc3RhdGljIGJvb2wgSXNTdXBwb3J0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9o
MjY0L3Rlc3QvaDI2NF9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvdGVzdC9o
MjY0X2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggMTRiYjZiY2M0N2U2M2YxNTJmOGQxYTNhZjkwMzVh
ZTVlMzhmNzVhNC4uODJjMTRiN2ZkNTI5YzA2ZTQ2YWNhMDEwYWFmOWY2ZjJjOTU0YWE2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvdGVzdC9oMjY0X2ltcGxfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL2gyNjQvdGVzdC9oMjY0X2ltcGxfdW5pdHRlc3QuY2MKQEAgLTU2LDcg
KzU2LDcgQEAgVEVTVF9GKFRlc3RIMjY0SW1wbCwgTUFZQkVfRW5jb2RlRGVjb2RlKSB7CiAgIEFT
U0VSVF9UUlVFKGRlY29kZWRfZnJhbWUpOwogICBFWFBFQ1RfR1QoSTQyMFBTTlIoaW5wdXRfZnJh
bWUsIGRlY29kZWRfZnJhbWUuZ2V0KCkpLCAzNik7CiAKLSAgY29uc3QgQ29sb3JTcGFjZSBjb2xv
cl9zcGFjZSA9IGRlY29kZWRfZnJhbWUtPmNvbG9yX3NwYWNlKCkudmFsdWUoKTsKKyAgY29uc3Qg
Q29sb3JTcGFjZSBjb2xvcl9zcGFjZSA9ICpkZWNvZGVkX2ZyYW1lLT5jb2xvcl9zcGFjZSgpOwog
ICBFWFBFQ1RfRVEoQ29sb3JTcGFjZTo6UHJpbWFyeUlEOjprSW52YWxpZCwgY29sb3Jfc3BhY2Uu
cHJpbWFyaWVzKCkpOwogICBFWFBFQ1RfRVEoQ29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6a0ludmFs
aWQsIGNvbG9yX3NwYWNlLnRyYW5zZmVyKCkpOwogICBFWFBFQ1RfRVEoQ29sb3JTcGFjZTo6TWF0
cml4SUQ6OmtJbnZhbGlkLCBjb2xvcl9zcGFjZS5tYXRyaXgoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvaTQyMC9pbmNsdWRlL2k0MjAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9pNDIwL2luY2x1ZGUv
aTQyMC5oCmluZGV4IDU4MGJjMTZjMmY4YTljMDM0NWU3N2Y5NTMwYzk2NGZmMDVlNDEyNWEuLjk2
NzI4NmY0MmNiNDNlMGZjMzZiNzhhYWIyYTZlZGMwNjgyZWUxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy9pNDIwL2luY2x1ZGUvaTQyMC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9pNDIwL2luY2x1
ZGUvaTQyMC5oCkBAIC02NSwxMCArNjUsNiBAQCBjbGFzcyBJNDIwRW5jb2RlciA6IHB1YmxpYyBW
aWRlb0VuY29kZXIgewogICAvLyBSZXR1cm4gdmFsdWUgICAgICAgICAgICAgICAgOiBXRUJSVENf
VklERU9fQ09ERUNfT0sgaWYgT0ssIDwgMCBvdGhlcndpc2UuCiAgIGludCBSZWxlYXNlKCkgb3Zl
cnJpZGU7CiAKLSAgaW50IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IC8qcGFja2V0TG9z
cyovLCBpbnQ2NF90IC8qcnR0Ki8pIG92ZXJyaWRlIHsKLSAgICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX09LOwotICB9Ci0KICBwcml2YXRlOgogICBzdGF0aWMgdWludDhfdCogSW5zZXJ0SGVh
ZGVyKHVpbnQ4X3QqIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MTZfdCB3aWR0aCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvaW5jbHVkZS9t
dWx0aXBsZXhfZW5jb2Rlcl9hZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L2luY2x1
ZGUvbXVsdGlwbGV4X2VuY29kZXJfYWRhcHRlci5oCmluZGV4IDUzMWQwNzg3MGU3NmRlMWVhNDdk
ZTcwYTllZmJjOWRlZTljMTQ2NjMuLjIzNWEzNjAzMGIwNzhjZmFlYTJiZjMxMDhkNDI5NWI1ZWIz
NjAwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvaW5jbHVkZS9tdWx0aXBs
ZXhfZW5jb2Rlcl9hZGFwdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9pbmNsdWRl
L211bHRpcGxleF9lbmNvZGVyX2FkYXB0ZXIuaApAQCAtNDYsMTEgKzQ2LDEwIEBAIGNsYXNzIE11
bHRpcGxleEVuY29kZXJBZGFwdGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgICAgICAgICAg
ICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCiAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiogZnJhbWVfdHlwZXMpIG92ZXJyaWRl
OwogICBpbnQgUmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNhbGxi
YWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7Ci0gIGludCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50
MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwogICBpbnQgU2V0UmF0ZUFs
bG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IG5ld19mcmFtZXJhdGUpIG92ZXJyaWRlOwogICBpbnQg
UmVsZWFzZSgpIG92ZXJyaWRlOwotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVy
cmlkZTsKIAogICBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6UmVzdWx0IE9uRW5jb2RlZEltYWdlKAog
ICAgICAgQWxwaGFDb2RlY1N0cmVhbSBzdHJlYW1faWR4LApAQCAtODEsNiArODAsOCBAQCBjbGFz
cyBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogCiAgIGNv
bnN0IGJvb2wgc3VwcG9ydHNfYXVnbWVudGVkX2RhdGFfOwogICBpbnQgYXVnbWVudGluZ19kYXRh
X3NpemVfID0gMDsKKworICBFbmNvZGVySW5mbyBlbmNvZGVyX2luZm9fOwogfTsKIAogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9tdWx0
aXBsZXhfZGVjb2Rlcl9hZGFwdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9tdWx0aXBs
ZXhfZGVjb2Rlcl9hZGFwdGVyLmNjCmluZGV4IGNjNTg4ZDAzNDdhNTg1NTI3MDIxMzViMzY4NTI2
YjRhMWRmNzNhOTYuLmEyN2JjOGQyNTg4MzQ1ZjUwNDhhMmM0ZDc5MzU0YjQxZjE3OGZiOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlwbGV4X2RlY29kZXJfYWRhcHRl
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211bHRpcGxleF9kZWNvZGVyX2FkYXB0
ZXIuY2MKQEAgLTEwLDkgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy9tdWx0aXBsZXgvaW5jbHVkZS9tdWx0aXBsZXhfZGVjb2Rlcl9hZGFwdGVyLmgiCiAK
KyNpbmNsdWRlICJhcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oIgogI2luY2x1ZGUgImFwaS92aWRl
by9pNDIwX2J1ZmZlci5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZV9idWZmZXIu
aCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgogI2luY2x1
ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oIgogI2luY2x1ZGUg
ImNvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9pbmNsdWRlL2F1Z21lbnRlZF92
aWRlb19mcmFtZV9idWZmZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgv
bXVsdGlwbGV4X2VuY29kZWRfaW1hZ2VfcGFja2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4
L211bHRpcGxleF9lbmNvZGVkX2ltYWdlX3BhY2tlci5oCmluZGV4IGVhMzdmMGM0ZDlmZjQ2NTE2
MGNlOGZhNTM1N2FlZGY3NTU5M2Q2NTQuLjBkMmY5ZmEyNmVhMzVkNWE4YzRiMTU0MzU0Nzk2ZWUw
NTdjMzAyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlwbGV4X2Vu
Y29kZWRfaW1hZ2VfcGFja2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9tdWx0aXBs
ZXhfZW5jb2RlZF9pbWFnZV9wYWNrZXIuaApAQCAtMTQsOCArMTQsOCBAQAogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vZW5jb2RlZF9p
bWFnZS5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1
ZGUpCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVs
dGlwbGV4X2VuY29kZXJfYWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlw
bGV4X2VuY29kZXJfYWRhcHRlci5jYwppbmRleCBjM2E3NTA2MmI1NGViZTU4OTE0OTM5YWQyNzE0
YzhiMmQ2ZDEyZGIxLi40ZGFiY2E3N2ZkMDA1OWE1MWIzODMyMzE2MDFkMDM1OTM1MDBlMWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211bHRpcGxleF9lbmNvZGVyX2FkYXB0
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9tdWx0aXBsZXhfZW5jb2Rlcl9hZGFw
dGVyLmNjCkBAIC0xMiw3ICsxMiw3IEBACiAKICNpbmNsdWRlIDxjc3RyaW5nPgogCi0jaW5jbHVk
ZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKKyNpbmNsdWRlICJhcGkvdmlk
ZW8vZW5jb2RlZF9pbWFnZS5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVv
X2ZyYW1lX2J1ZmZlci5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93
ZWJydGNfbGlieXV2LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25f
dHlwZXMuaCIKQEAgLTUzLDYgKzUzLDcgQEAgTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXI6Ok11bHRp
cGxleEVuY29kZXJBZGFwdGVyKAogICAgIDogZmFjdG9yeV8oZmFjdG9yeSksCiAgICAgICBhc3Nv
Y2lhdGVkX2Zvcm1hdF8oYXNzb2NpYXRlZF9mb3JtYXQpLAogICAgICAgZW5jb2RlZF9jb21wbGV0
ZV9jYWxsYmFja18obnVsbHB0ciksCisgICAgICBrZXlfZnJhbWVfaW50ZXJ2YWxfKDApLAogICAg
ICAgc3VwcG9ydHNfYXVnbWVudGVkX2RhdGFfKHN1cHBvcnRzX2F1Z21lbnRlZF9kYXRhKSB7fQog
CiBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlcjo6fk11bHRpcGxleEVuY29kZXJBZGFwdGVyKCkgewpA
QCAtOTIsNiArOTMsMTEgQEAgaW50IE11bHRpcGxleEVuY29kZXJBZGFwdGVyOjpJbml0RW5jb2Rl
KGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsCiAgICAgICBicmVhazsKICAgfQogCisgIGVuY29kZXJf
aW5mb18gPSBFbmNvZGVySW5mbygpOworICBlbmNvZGVyX2luZm9fLmltcGxlbWVudGF0aW9uX25h
bWUgPSAiTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXIgKCI7CisgIC8vIFRoaXMgbmVlZHMgdG8gYmUg
ZmFsc2Ugc28gdGhhdCB3ZSBjYW4gZG8gdGhlIHNwbGl0IGluIEVuY29kZSgpLgorICBlbmNvZGVy
X2luZm9fLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBmYWxzZTsKKwogICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGtBbHBoYUNvZGVjU3RyZWFtczsgKytpKSB7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFZpZGVvRW5jb2Rlcj4gZW5jb2RlciA9CiAgICAgICAgIGZhY3RvcnlfLT5DcmVhdGVWaWRlb0Vu
Y29kZXIoYXNzb2NpYXRlZF9mb3JtYXRfKTsKQEAgLTEwNCw4ICsxMTAsMTcgQEAgaW50IE11bHRp
cGxleEVuY29kZXJBZGFwdGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsCiAg
ICAgYWRhcHRlcl9jYWxsYmFja3NfLmVtcGxhY2VfYmFjayhuZXcgQWRhcHRlckVuY29kZWRJbWFn
ZUNhbGxiYWNrKAogICAgICAgICB0aGlzLCBzdGF0aWNfY2FzdDxBbHBoYUNvZGVjU3RyZWFtPihp
KSkpOwogICAgIGVuY29kZXItPlJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhhZGFwdGVy
X2NhbGxiYWNrc18uYmFjaygpLmdldCgpKTsKKworICAgIGNvbnN0IEVuY29kZXJJbmZvJiBlbmNv
ZGVyX2ltcGxfaW5mbyA9IGVuY29kZXItPkdldEVuY29kZXJJbmZvKCk7CisgICAgZW5jb2Rlcl9p
bmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lICs9IGVuY29kZXJfaW1wbF9pbmZvLmltcGxlbWVudGF0
aW9uX25hbWU7CisgICAgaWYgKGkgIT0ga0FscGhhQ29kZWNTdHJlYW1zIC0gMSkgeworICAgICAg
ZW5jb2Rlcl9pbmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lICs9ICIsICI7CisgICAgfQorCiAgICAg
ZW5jb2RlcnNfLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoZW5jb2RlcikpOwogICB9CisgIGVuY29k
ZXJfaW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSArPSAiKSI7CisKICAgcmV0dXJuIFdFQlJUQ19W
SURFT19DT0RFQ19PSzsKIH0KIApAQCAtMTg3LDE2ICsyMDIsNiBAQCBpbnQgTXVsdGlwbGV4RW5j
b2RlckFkYXB0ZXI6OlJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaygKICAgcmV0dXJuIFdF
QlJUQ19WSURFT19DT0RFQ19PSzsKIH0KIAotaW50IE11bHRpcGxleEVuY29kZXJBZGFwdGVyOjpT
ZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBydHQpIHsKLSAgZm9y
IChhdXRvJiBlbmNvZGVyIDogZW5jb2RlcnNfKSB7Ci0gICAgY29uc3QgaW50IHJ2ID0gZW5jb2Rl
ci0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0X2xvc3MsIHJ0dCk7Ci0gICAgaWYgKHJ2KQot
ICAgICAgcmV0dXJuIHJ2OwotICB9Ci0gIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Ci19
Ci0KIGludCBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlcjo6U2V0UmF0ZUFsbG9jYXRpb24oCiAgICAg
Y29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSwKICAgICB1aW50MzJfdCBmcmFt
ZXJhdGUpIHsKQEAgLTIzOCw4ICsyNDMsOCBAQCBpbnQgTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXI6
OlJlbGVhc2UoKSB7CiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKLWNvbnN0
IGNoYXIqIE11bHRpcGxleEVuY29kZXJBZGFwdGVyOjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25z
dCB7Ci0gIHJldHVybiAiTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXIiOworVmlkZW9FbmNvZGVyOjpF
bmNvZGVySW5mbyBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlcjo6R2V0RW5jb2RlckluZm8oKSBjb25z
dCB7CisgIHJldHVybiBlbmNvZGVyX2luZm9fOwogfQogCiBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6
UmVzdWx0IE11bHRpcGxleEVuY29kZXJBZGFwdGVyOjpPbkVuY29kZWRJbWFnZSgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvX2NvZGVjX3VuaXR0ZXN0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdGVzdC92aWRlb19jb2RlY191bml0dGVzdC5oCmluZGV4IDQ4ODYwYzM1YTZmMzQ5NzE1OTJl
M2QzZWM5YjRjNzA3ZWRkYjdlNTEuLjlhNGQ2MGNlYzI2Nzg3MjY2MTNhMWE3MmMxODZhNzA1ZTcx
NWM1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvX2NvZGVjX3VuaXR0ZXN0
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9fY29kZWNfdW5pdHRlc3QuaApAQCAtMzIs
MTEgKzMyLDcgQEAgY2xhc3MgVmlkZW9Db2RlY1VuaXRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7CiAgIFZpZGVvQ29kZWNVbml0VGVzdCgpCiAgICAgICA6IGVuY29kZV9jb21wbGV0ZV9j
YWxsYmFja18odGhpcyksCiAgICAgICAgIGRlY29kZV9jb21wbGV0ZV9jYWxsYmFja18odGhpcyks
Ci0gICAgICAgIGVuY29kZWRfZnJhbWVfZXZlbnRfKGZhbHNlIC8qIG1hbnVhbCByZXNldCAqLywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaW5pdGlhbGx5IHNpZ25hbGVk
ICovKSwKICAgICAgICAgd2FpdF9mb3JfZW5jb2RlZF9mcmFtZXNfdGhyZXNob2xkXygxKSwKLSAg
ICAgICAgZGVjb2RlZF9mcmFtZV9ldmVudF8oZmFsc2UgLyogbWFudWFsIHJlc2V0ICovLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpbml0aWFsbHkgc2lnbmFsZWQgKi8p
LAogICAgICAgICBsYXN0X2lucHV0X2ZyYW1lX3RpbWVzdGFtcF8oMCkge30KIAogIHByb3RlY3Rl
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9maXh0dXJl
X2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfZml4dHVyZV9pbXBs
LmNjCmluZGV4IDRkYzI2OGEwNDMxZjA5NWVmZDk0NDNjNzNhY2NkODg5Njk5ODZlNTIuLjg0N2U4
NDc4NWJjYjQzMjZkNDczMzYxMzFmZTZiNGZjYzA3Njc0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9maXh0dXJlX2ltcGwuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X2ZpeHR1cmVfaW1wbC5jYwpAQCAtMTMwLDkgKzEzMCw3
IEBAIGJvb2wgUnVuRW5jb2RlSW5SZWFsVGltZShjb25zdCBWaWRlb0NvZGVjVGVzdEZpeHR1cmVJ
bXBsOjpDb25maWcmIGNvbmZpZykgewogCiBzdGQ6OnN0cmluZyBGaWxlbmFtZVdpdGhQYXJhbXMo
CiAgICAgY29uc3QgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlSW1wbDo6Q29uZmlnJiBjb25maWcpIHsK
LSAgc3RkOjpzdHJpbmcgaW1wbGVtZW50YXRpb25fdHlwZSA9IGNvbmZpZy5od19lbmNvZGVyID8g
Imh3IiA6ICJzdyI7CiAgIHJldHVybiBjb25maWcuZmlsZW5hbWUgKyAiXyIgKyBjb25maWcuQ29k
ZWNOYW1lKCkgKyAiXyIgKwotICAgICAgICAgaW1wbGVtZW50YXRpb25fdHlwZSArICJfIiArCiAg
ICAgICAgICBzdGQ6OnRvX3N0cmluZyhjb25maWcuY29kZWNfc2V0dGluZ3Muc3RhcnRCaXRyYXRl
KTsKIH0KIApAQCAtNDQ2LDcgKzQ0NCw3IEBAIHZvaWQgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlSW1w
bDo6UHJvY2Vzc0FsbEZyYW1lcygKICAgfQogCiAgIC8vIFdhaXQgdW50aWwgd2Uga25vdyB0aGF0
IHRoZSBsYXN0IGZyYW1lIGhhcyBiZWVuIHNlbnQgZm9yIGVuY29kZS4KLSAgcnRjOjpFdmVudCBz
eW5jX2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgc3luY19ldmVudDsKICAgdGFz
a19xdWV1ZS0+UG9zdFRhc2soWyZzeW5jX2V2ZW50XSB7IHN5bmNfZXZlbnQuU2V0KCk7IH0pOwog
ICBzeW5jX2V2ZW50LldhaXQocnRjOjpFdmVudDo6a0ZvcmV2ZXIpOwogCkBAIC02NzMsNyArNjcx
LDcgQEAgdm9pZCBWaWRlb0NvZGVjVGVzdEZpeHR1cmVJbXBsOjpQcmludFNldHRpbmdzKAogICBz
dGQ6OnN0cmluZyBlbmNvZGVyX25hbWU7CiAgIHN0ZDo6c3RyaW5nIGRlY29kZXJfbmFtZTsKICAg
dGFza19xdWV1ZS0+U2VuZFRhc2soW3RoaXMsICZlbmNvZGVyX25hbWUsICZkZWNvZGVyX25hbWVd
IHsKLSAgICBlbmNvZGVyX25hbWUgPSBlbmNvZGVyXy0+SW1wbGVtZW50YXRpb25OYW1lKCk7Cisg
ICAgZW5jb2Rlcl9uYW1lID0gZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkuaW1wbGVtZW50YXRp
b25fbmFtZTsKICAgICBkZWNvZGVyX25hbWUgPSBkZWNvZGVyc18uYXQoMCktPkltcGxlbWVudGF0
aW9uTmFtZSgpOwogICB9KTsKICAgcHJpbnRmKCJlbmNfaW1wbF9uYW1lOiAlc1xuIiwgZW5jb2Rl
cl9uYW1lLmNfc3RyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2Rl
Y190ZXN0X2xpYnZweC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9saWJ2
cHguY2MKaW5kZXggOTU4NmNlOWM3OTIzODIxMzM0MjFhZWQ4MTZjYmFmNWVkZWU4ZDA0OC4uZjY5
ZmRlNjg4NDAxMGZjMzVmYzM5NjcwMmUyNDNiYjI3NmFiNDMwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X2xpYnZweC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dGVzdC92aWRlb2NvZGVjX3Rlc3RfbGlidnB4LmNjCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNs
dWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvdGVzdC9jcmVhdGVfdmlk
ZW9jb2RlY190ZXN0X2ZpeHR1cmUuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlv
bl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3Nk
cF92aWRlb19mb3JtYXQuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgi
CiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuaCIKQEAgLTE5
LDcgKzIwLDYgQEAKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRh
cHRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvdnA4X2hlYWRl
cl9wYXJzZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3ZwOV91
bmNvbXByZXNzZWRfaGVhZGVyX3BhcnNlci5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogI2luY2x1ZGUg
InRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKQEAgLTYzLDggKzYzLDYgQEAgVmlkZW9D
b2RlY1Rlc3RGaXh0dXJlOjpDb25maWcgQ3JlYXRlQ29uZmlnKCkgewogICBjb25maWcuZmlsZXBh
dGggPSBSZXNvdXJjZVBhdGgoY29uZmlnLmZpbGVuYW1lLCAieXV2Iik7CiAgIGNvbmZpZy5udW1f
ZnJhbWVzID0ga051bUZyYW1lc0xvbmc7CiAgIGNvbmZpZy51c2Vfc2luZ2xlX2NvcmUgPSB0cnVl
OwotICBjb25maWcuaHdfZW5jb2RlciA9IGZhbHNlOwotICBjb25maWcuaHdfZGVjb2RlciA9IGZh
bHNlOwogICByZXR1cm4gY29uZmlnOwogfQogCkBAIC05Miw3ICs5MCw3IEBAIHZvaWQgUHJpbnRS
ZFBlcmYoc3RkOjptYXA8c2l6ZV90LCBzdGQ6OnZlY3RvcjxWaWRlb1N0YXRpc3RpY3M+PiByZF9z
dGF0cykgewogfQogfSAgLy8gbmFtZXNwYWNlCiAKLSNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9W
UDkpCisjaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2
cHgsIEhpZ2hCaXRyYXRlVlA5KSB7CiAgIGF1dG8gY29uZmlnID0gQ3JlYXRlQ29uZmlnKCk7CiAg
IGNvbmZpZy5TZXRDb2RlY1NldHRpbmdzKGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUsIDEsIDEsIDEs
IGZhbHNlLCB0cnVlLCBmYWxzZSwKQEAgLTEwNSw3ICsxMDMsNyBAQCBURVNUKFZpZGVvQ29kZWNU
ZXN0TGlidnB4LCBIaWdoQml0cmF0ZVZQOSkgewogICBzdGQ6OnZlY3RvcjxSYXRlUHJvZmlsZT4g
cmF0ZV9wcm9maWxlcyA9IHt7NTAwLCAzMCwga051bUZyYW1lc1Nob3J0fX07CiAKICAgc3RkOjp2
ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAgICAgezUs
IDEsIDAsIDAuMTEsIDAuMywgMC4xLCAwLCAxfX07CisgICAgICB7NSwgMSwgMCwgMSwgMC4zLCAw
LjEsIDAsIDF9fTsKIAogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNob2xkcz4gcXVhbGl0eV90
aHJlc2hvbGRzID0ge3szNywgMzYsIDAuOTQsIDAuOTJ9fTsKIApAQCAtMTI2LDkgKzEyNCw5IEBA
IFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIENoYW5nZUJpdHJhdGVWUDkpIHsKICAgICAgIHs1
MDAsIDMwLCBrTnVtRnJhbWVzTG9uZ319OwogCiAgIHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhy
ZXNob2xkcz4gcmNfdGhyZXNob2xkcyA9IHsKLSAgICAgIHs1LCAxLCAwLCAwLjE1LCAwLjUsIDAu
MSwgMCwgMX0sCi0gICAgICB7MTUsIDIsIDAsIDAuMiwgMC41LCAwLjEsIDAsIDB9LAotICAgICAg
ezEwLCAxLCAwLCAwLjMsIDAuNSwgMC4xLCAwLCAwfX07CisgICAgICB7NSwgMSwgMCwgMSwgMC41
LCAwLjEsIDAsIDF9LAorICAgICAgezE1LCAyLCAwLCAxLCAwLjUsIDAuMSwgMCwgMH0sCisgICAg
ICB7MTAsIDEsIDAsIDEsIDAuNSwgMC4xLCAwLCAwfX07CiAKICAgc3RkOjp2ZWN0b3I8UXVhbGl0
eVRocmVzaG9sZHM+IHF1YWxpdHlfdGhyZXNob2xkcyA9IHsKICAgICAgIHszNCwgMzMsIDAuOTAs
IDAuODh9LCB7MzgsIDM1LCAwLjk1LCAwLjkxfSwgezM1LCAzNCwgMC45MywgMC45MH19OwpAQCAt
MTUxLDkgKzE0OSw5IEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIENoYW5nZUZyYW1lcmF0
ZVZQOSkgewogCiAgIC8vIEZyYW1lcmF0ZSBtaXNtYXRjaCBzaG91bGQgYmUgbG93ZXIgZm9yIGxv
d2VyIGZyYW1lcmF0ZS4KICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190
aHJlc2hvbGRzID0gewotICAgICAgezEwLCAyLCA0MCwgMC40LCAwLjUsIDAuMiwgMCwgMX0sCi0g
ICAgICB7OCwgMiwgNSwgMC4yLCAwLjUsIDAuMiwgMCwgMH0sCi0gICAgICB7NSwgMiwgMCwgMC4y
MSwgMC41LCAwLjMsIDAsIDB9fTsKKyAgICAgIHsxMCwgMiwgNDAsIDEsIDAuNSwgMC4yLCAwLCAx
fSwKKyAgICAgIHs4LCAyLCA1LCAxLCAwLjUsIDAuMiwgMCwgMH0sCisgICAgICB7NSwgMiwgMCwg
MSwgMC41LCAwLjMsIDAsIDB9fTsKIAogICAvLyBRdWFsaXR5IHNob3VsZCBiZSBoaWdoZXIgZm9y
IGxvd2VyIGZyYW1lcmF0ZXMgZm9yIHRoZSBzYW1lIGNvbnRlbnQuCiAgIHN0ZDo6dmVjdG9yPFF1
YWxpdHlUaHJlc2hvbGRzPiBxdWFsaXR5X3RocmVzaG9sZHMgPSB7CkBAIC0xNzQsNyArMTcyLDcg
QEAgVEVTVChWaWRlb0NvZGVjVGVzdExpYnZweCwgRGVub2lzZXJPblZQOSkgewogICBzdGQ6OnZl
Y3RvcjxSYXRlUHJvZmlsZT4gcmF0ZV9wcm9maWxlcyA9IHt7NTAwLCAzMCwga051bUZyYW1lc1No
b3J0fX07CiAKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hv
bGRzID0gewotICAgICAgezUsIDEsIDAsIDAuMTEsIDAuMywgMC4xLCAwLCAxfX07CisgICAgICB7
NSwgMSwgMCwgMSwgMC4zLCAwLjEsIDAsIDF9fTsKIAogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhy
ZXNob2xkcz4gcXVhbGl0eV90aHJlc2hvbGRzID0ge3szNy41LCAzNiwgMC45NCwgMC45M319Owog
CkBAIC0xOTIsNyArMTkwLDcgQEAgVEVTVChWaWRlb0NvZGVjVGVzdExpYnZweCwgVmVyeUxvd0Jp
dHJhdGVWUDkpIHsKICAgc3RkOjp2ZWN0b3I8UmF0ZVByb2ZpbGU+IHJhdGVfcHJvZmlsZXMgPSB7
ezUwLCAzMCwga051bUZyYW1lc0xvbmd9fTsKIAogICBzdGQ6OnZlY3RvcjxSYXRlQ29udHJvbFRo
cmVzaG9sZHM+IHJjX3RocmVzaG9sZHMgPSB7Ci0gICAgICB7MTUsIDMsIDc1LCAxLjAsIDAuNSwg
MC40LCAxLCAxfX07CisgICAgICB7MTUsIDMsIDc1LCAxLCAwLjUsIDAuNCwgMSwgMX19OwogCiAg
IHN0ZDo6dmVjdG9yPFF1YWxpdHlUaHJlc2hvbGRzPiBxdWFsaXR5X3RocmVzaG9sZHMgPSB7ezI4
LCAyNSwgMC44MCwgMC42NX19OwogCkBAIC0yMDIsNyArMjAwLDcgQEAgVEVTVChWaWRlb0NvZGVj
VGVzdExpYnZweCwgVmVyeUxvd0JpdHJhdGVWUDkpIHsKIC8vIFRPRE8obWFycGFuKTogQWRkIHRl
bXBvcmFsIGxheWVyIHRlc3QgZm9yIFZQOSwgb25jZSBjaGFuZ2VzIGFyZSBpbgogLy8gdnA5IHdy
YXBwZXIgZm9yIHRoaXMuCiAKLSNlbmRpZiAgLy8gIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQor
I2VuZGlmICAvLyBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogCiBURVNUKFZpZGVvQ29kZWNUZXN0
TGlidnB4LCBIaWdoQml0cmF0ZVZQOCkgewogICBhdXRvIGNvbmZpZyA9IENyZWF0ZUNvbmZpZygp
OwpAQCAtMjE2LDcgKzIxNCw3IEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIEhpZ2hCaXRy
YXRlVlA4KSB7CiAgIHN0ZDo6dmVjdG9yPFJhdGVQcm9maWxlPiByYXRlX3Byb2ZpbGVzID0ge3s1
MDAsIDMwLCBrTnVtRnJhbWVzU2hvcnR9fTsKIAogICBzdGQ6OnZlY3RvcjxSYXRlQ29udHJvbFRo
cmVzaG9sZHM+IHJjX3RocmVzaG9sZHMgPSB7Ci0gICAgICB7NSwgMSwgMCwgMC4xLCAwLjIsIDAu
MSwgMCwgMX19OworICAgICAgezUsIDEsIDAsIDEsIDAuMiwgMC4xLCAwLCAxfX07CiAKICNpZiBk
ZWZpbmVkKFdFQlJUQ19BUkNIX0FSTSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02NCkKICAg
c3RkOjp2ZWN0b3I8UXVhbGl0eVRocmVzaG9sZHM+IHF1YWxpdHlfdGhyZXNob2xkcyA9IHt7MzUs
IDMzLCAwLjkxLCAwLjg5fX07CkBAIC0yNTUsOSArMjUzLDkgQEAgVEVTVChWaWRlb0NvZGVjVGVz
dExpYnZweCwgTUFZQkVfQ2hhbmdlQml0cmF0ZVZQOCkgewogICAgICAgezUwMCwgMzAsIGtOdW1G
cmFtZXNMb25nfX07CiAKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190
aHJlc2hvbGRzID0gewotICAgICAgezUsIDEsIDAsIDAuMSwgMC4yLCAwLjEsIDAsIDF9LAotICAg
ICAgezE1LjUsIDEsIDAsIDAuMSwgMC4yLCAwLjEsIDAsIDB9LAotICAgICAgezE1LCAxLCAwLCAw
LjMsIDAuMiwgMC4xLCAwLCAwfX07CisgICAgICB7NSwgMSwgMCwgMSwgMC4yLCAwLjEsIDAsIDF9
LAorICAgICAgezE1LjUsIDEsIDAsIDEsIDAuMiwgMC4xLCAwLCAwfSwKKyAgICAgIHsxNSwgMSwg
MCwgMSwgMC4yLCAwLjEsIDAsIDB9fTsKIAogI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNKSB8
fCBkZWZpbmVkKFdFQlJUQ19BUkNIX0FSTTY0KQogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNo
b2xkcz4gcXVhbGl0eV90aHJlc2hvbGRzID0gewpAQCAtMjkwLDE0ICsyODgsMTQgQEAgVEVTVChW
aWRlb0NvZGVjVGVzdExpYnZweCwgTUFZQkVfQ2hhbmdlRnJhbWVyYXRlVlA4KSB7CiAKICNpZiBk
ZWZpbmVkKFdFQlJUQ19BUkNIX0FSTSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02NCkKICAg
c3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAg
ICAgezEwLCAyLCA2MCwgMC41LCAwLjMsIDAuMywgMCwgMX0sCi0gICAgICB7MTAsIDIsIDMwLCAw
LjMsIDAuMywgMC4zLCAwLCAwfSwKLSAgICAgIHsxMCwgMiwgMTAsIDAuMiwgMC4zLCAwLjIsIDAs
IDB9fTsKKyAgICAgIHsxMCwgMiwgNjAsIDEsIDAuMywgMC4zLCAwLCAxfSwKKyAgICAgIHsxMCwg
MiwgMzAsIDEsIDAuMywgMC4zLCAwLCAwfSwKKyAgICAgIHsxMCwgMiwgMTAsIDEsIDAuMywgMC4y
LCAwLCAwfX07CiAjZWxzZQogICBzdGQ6OnZlY3RvcjxSYXRlQ29udHJvbFRocmVzaG9sZHM+IHJj
X3RocmVzaG9sZHMgPSB7Ci0gICAgICB7MTAsIDIsIDIwLCAwLjQsIDAuMywgMC4xLCAwLCAxfSwK
LSAgICAgIHs1LCAyLCA1LCAwLjMsIDAuMywgMC4xLCAwLCAwfSwKLSAgICAgIHs0LCAyLCAxLCAw
LjIsIDAuMywgMC4yLCAwLCAwfX07CisgICAgICB7MTAsIDIsIDIwLCAxLCAwLjMsIDAuMSwgMCwg
MX0sCisgICAgICB7NSwgMiwgNSwgMSwgMC4zLCAwLjEsIDAsIDB9LAorICAgICAgezQsIDIsIDEs
IDEsIDAuMywgMC4yLCAwLCAwfX07CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hf
QVJNKSB8fCBkZWZpbmVkKFdFQlJUQ19BUkNIX0FSTTY0KQpAQCAtMzI4LDEwICszMjYsMTAgQEAg
VEVTVChWaWRlb0NvZGVjVGVzdExpYnZweCwgTUFZQkVfVGVtcG9yYWxMYXllcnNWUDgpIHsKIAog
I2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNKSB8fCBkZWZpbmVkKFdFQlJUQ19BUkNIX0FSTTY0
KQogICBzdGQ6OnZlY3RvcjxSYXRlQ29udHJvbFRocmVzaG9sZHM+IHJjX3RocmVzaG9sZHMgPSB7
Ci0gICAgICB7MTAsIDEsIDIsIDAuMywgMC4yLCAwLjEsIDAsIDF9LCB7MTIsIDIsIDMsIDAuMSwg
MC4yLCAwLjEsIDAsIDF9fTsKKyAgICAgIHsxMCwgMSwgMiwgMSwgMC4yLCAwLjEsIDAsIDF9LCB7
MTIsIDIsIDMsIDEsIDAuMiwgMC4xLCAwLCAxfX07CiAjZWxzZQogICBzdGQ6OnZlY3RvcjxSYXRl
Q29udHJvbFRocmVzaG9sZHM+IHJjX3RocmVzaG9sZHMgPSB7Ci0gICAgICB7NSwgMSwgMCwgMC4x
LCAwLjIsIDAuMSwgMCwgMX0sIHsxMCwgMiwgMCwgMC4xLCAwLjIsIDAuMSwgMCwgMX19OworICAg
ICAgezUsIDEsIDAsIDEsIDAuMiwgMC4xLCAwLCAxfSwgezEwLCAyLCAwLCAxLCAwLjIsIDAuMSwg
MCwgMX19OwogI2VuZGlmCiAvLyBNaW4gU1NJTSBkcm9wcyBiZWNhdXNlIG9mIGhpZ2ggbW90aW9u
IHNjZW5lIHdpdGggY29tcGxleCBiYWNrZ291bmQgKHRyZWVzKS4KICNpZiBkZWZpbmVkKFdFQlJU
Q19BUkNIX0FSTSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02NCkKQEAgLTM2NCw3ICszNjIs
NyBAQCBURVNUKFZpZGVvQ29kZWNUZXN0TGlidnB4LCBNQVlCRV9NdWx0aXJlc1ZQOCkgewogICBz
dGQ6OnZlY3RvcjxSYXRlUHJvZmlsZT4gcmF0ZV9wcm9maWxlcyA9IHt7MTUwMCwgMzAsIGNvbmZp
Zy5udW1fZnJhbWVzfX07CiAKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiBy
Y190aHJlc2hvbGRzID0gewotICAgICAgezUsIDEsIDUsIDAuMiwgMC4zLCAwLjEsIDAsIDF9fTsK
KyAgICAgIHs1LCAxLCA1LCAxLCAwLjMsIDAuMSwgMCwgMX19OwogICBzdGQ6OnZlY3RvcjxRdWFs
aXR5VGhyZXNob2xkcz4gcXVhbGl0eV90aHJlc2hvbGRzID0ge3szNCwgMzIsIDAuOTAsIDAuODh9
fTsKIAogICBmaXh0dXJlLT5SdW5UZXN0KHJhdGVfcHJvZmlsZXMsICZyY190aHJlc2hvbGRzLCAm
cXVhbGl0eV90aHJlc2hvbGRzLCBudWxscHRyKTsKQEAgLTQwMSw3ICszOTksNyBAQCBURVNUKFZp
ZGVvQ29kZWNUZXN0TGlidnB4LCBNQVlCRV9TaW11bGNhc3RWUDgpIHsKICAgc3RkOjp2ZWN0b3I8
UmF0ZVByb2ZpbGU+IHJhdGVfcHJvZmlsZXMgPSB7ezE1MDAsIDMwLCBjb25maWcubnVtX2ZyYW1l
c319OwogCiAgIHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4gcmNfdGhyZXNob2xk
cyA9IHsKLSAgICAgIHsyMCwgNSwgOTAsIDAuOCwgMC41LCAwLjMsIDAsIDF9fTsKKyAgICAgIHsy
MCwgNSwgOTAsIDEsIDAuNSwgMC4zLCAwLCAxfX07CiAgIHN0ZDo6dmVjdG9yPFF1YWxpdHlUaHJl
c2hvbGRzPiBxdWFsaXR5X3RocmVzaG9sZHMgPSB7ezM0LCAzMiwgMC45MCwgMC44OH19OwogCiAg
IGZpeHR1cmUtPlJ1blRlc3QocmF0ZV9wcm9maWxlcywgJnJjX3RocmVzaG9sZHMsICZxdWFsaXR5
X3RocmVzaG9sZHMsIG51bGxwdHIpOwpAQCAtNDI2LDcgKzQyNCw3IEBAIFRFU1QoVmlkZW9Db2Rl
Y1Rlc3RMaWJ2cHgsIE1BWUJFX1N2Y1ZQOSkgewogICBzdGQ6OnZlY3RvcjxSYXRlUHJvZmlsZT4g
cmF0ZV9wcm9maWxlcyA9IHt7MTUwMCwgMzAsIGNvbmZpZy5udW1fZnJhbWVzfX07CiAKICAgc3Rk
Ojp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAgICAg
ezUsIDEsIDUsIDAuMiwgMC4zLCAwLjEsIDAsIDF9fTsKKyAgICAgIHs1LCAxLCA1LCAxLCAwLjMs
IDAuMSwgMCwgMX19OwogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNob2xkcz4gcXVhbGl0eV90
aHJlc2hvbGRzID0ge3szNiwgMzQsIDAuOTMsIDAuOTB9fTsKIAogICBmaXh0dXJlLT5SdW5UZXN0
KHJhdGVfcHJvZmlsZXMsICZyY190aHJlc2hvbGRzLCAmcXVhbGl0eV90aHJlc2hvbGRzLCBudWxs
cHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9tZWRp
YWNvZGVjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X21lZGlhY29kZWMu
Y2MKaW5kZXggOTliMWFlZDhjMGE1ODA1MzY3OTgwMjVhOGM2NThmNTdiMzZiNzI0NS4uZWRmYzIx
MWMyMjZkNTQ5Y2MwYzU5MzRmNzIzZjM1Y2UwNzkyNmU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X21lZGlhY29kZWMuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3Rlc3QvdmlkZW9jb2RlY190ZXN0X21lZGlhY29kZWMuY2MKQEAgLTMzLDggKzMzLDYgQEAgVmlk
ZW9Db2RlY1Rlc3RGaXh0dXJlOjpDb25maWcgQ3JlYXRlQ29uZmlnKCkgewogICBjb25maWcuZmls
ZW5hbWUgPSAiZm9yZW1hbl9jaWYiOwogICBjb25maWcuZmlsZXBhdGggPSBSZXNvdXJjZVBhdGgo
Y29uZmlnLmZpbGVuYW1lLCAieXV2Iik7CiAgIGNvbmZpZy5udW1fZnJhbWVzID0ga0ZvcmVtYW5O
dW1GcmFtZXM7Ci0gIGNvbmZpZy5od19lbmNvZGVyID0gdHJ1ZTsKLSAgY29uZmlnLmh3X2RlY29k
ZXIgPSB0cnVlOwogICAvLyBJbiBvcmRlciB0byBub3Qgb3ZlcndoZWxtIHRoZSBPcGVuTUFYIGJ1
ZmZlcnMgaW4gdGhlIEFuZHJvaWQgTWVkaWFDb2RlYy4KICAgY29uZmlnLmVuY29kZV9pbl9yZWFs
X3RpbWUgPSB0cnVlOwogICByZXR1cm4gY29uZmlnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3Rlc3QvdmlkZW9jb2RlY190ZXN0X29wZW5oMjY0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3Qvdmlk
ZW9jb2RlY190ZXN0X29wZW5oMjY0LmNjCmluZGV4IGU1Y2Y3MWJhOTBmOTA0MmVlNjkzYzExNmQ5
M2JhYmExM2VkZGUwZjMuLmJkNGJiNTJiODUxOTFkYzU2MGFmM2E4ZDA5YzRlMzlmODJjMzczNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9vcGVuaDI2NC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3Rfb3BlbmgyNjQuY2MKQEAg
LTMyLDggKzMyLDYgQEAgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlOjpDb25maWcgQ3JlYXRlQ29uZmln
KCkgewogICBjb25maWcubnVtX2ZyYW1lcyA9IGtOdW1GcmFtZXM7CiAgIC8vIE9ubHkgYWxsb3cg
ZW5jb2Rlci9kZWNvZGVyIHRvIHVzZSBzaW5nbGUgY29yZSwgZm9yIHByZWRpY3RhYmlsaXR5Lgog
ICBjb25maWcudXNlX3NpbmdsZV9jb3JlID0gdHJ1ZTsKLSAgY29uZmlnLmh3X2VuY29kZXIgPSBm
YWxzZTsKLSAgY29uZmlnLmh3X2RlY29kZXIgPSBmYWxzZTsKICAgcmV0dXJuIGNvbmZpZzsKIH0K
IH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2Rl
Y190ZXN0X3BhcmFtZXRlcml6ZWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rl
c3RfcGFyYW1ldGVyaXplZC5jYwppbmRleCAwZDQ5YjgwZDk1YWYzMGM1YjI5MTQwMTNjNGE0ZDU2
YzU0OWZkOTEzLi5lZmM4MGFkZDJkYTVjMWQyMzkyMzkxNzE2OWYzMDEyNDI2NjJlMmZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfcGFyYW1ldGVyaXplZC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfcGFyYW1ldGVyaXplZC5j
YwpAQCAtMjAsNyArMjAsNiBAQCBuYW1lc3BhY2UgewogLy8gTG9vcCB2YXJpYWJsZXMuCiBjb25z
dCBzaXplX3Qga0JpdHJhdGVzW10gPSB7NTAwfTsKIGNvbnN0IFZpZGVvQ29kZWNUeXBlIGtWaWRl
b0NvZGVjVHlwZVtdID0ge2tWaWRlb0NvZGVjVlA4fTsKLWNvbnN0IGJvb2wga0h3Q29kZWNbXSA9
IHtmYWxzZX07CiAKIC8vIENvZGVjIHNldHRpbmdzLgogY29uc3QgaW50IGtOdW1TcGF0aWFsTGF5
ZXJzID0gMTsKQEAgLTM5LDEyICszOCwxMSBAQCBjb25zdCBpbnQga051bUZyYW1lcyA9IDMwOwog
Y2xhc3MgVmlkZW9Db2RlY1Rlc3RQYXJhbWV0ZXJpemVkCiAgICAgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0LAogICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPAotICAg
ICAgICAgIDo6dGVzdGluZzo6dHVwbGU8c2l6ZV90LCBWaWRlb0NvZGVjVHlwZSwgYm9vbD4+IHsK
KyAgICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHNpemVfdCwgVmlkZW9Db2RlY1R5cGU+PiB7CiAg
cHJvdGVjdGVkOgogICBWaWRlb0NvZGVjVGVzdFBhcmFtZXRlcml6ZWQoKQogICAgICAgOiBiaXRy
YXRlXyg6OnRlc3Rpbmc6OmdldDwwPihHZXRQYXJhbSgpKSksCi0gICAgICAgIGNvZGVjX3R5cGVf
KDo6dGVzdGluZzo6Z2V0PDE+KEdldFBhcmFtKCkpKSwKLSAgICAgICAgaHdfY29kZWNfKDo6dGVz
dGluZzo6Z2V0PDI+KEdldFBhcmFtKCkpKSB7fQorICAgICAgICBjb2RlY190eXBlXyg6OnRlc3Rp
bmc6OmdldDwxPihHZXRQYXJhbSgpKSkge30KICAgflZpZGVvQ29kZWNUZXN0UGFyYW1ldGVyaXpl
ZCgpIG92ZXJyaWRlID0gZGVmYXVsdDsKIAogICB2b2lkIFJ1blRlc3Qoc2l6ZV90IHdpZHRoLApA
QCAtNTYsOCArNTQsNiBAQCBjbGFzcyBWaWRlb0NvZGVjVGVzdFBhcmFtZXRlcml6ZWQKICAgICBj
b25maWcuZmlsZXBhdGggPSBSZXNvdXJjZVBhdGgoZmlsZW5hbWUsICJ5dXYiKTsKICAgICBjb25m
aWcudXNlX3NpbmdsZV9jb3JlID0ga1VzZVNpbmdsZUNvcmU7CiAgICAgY29uZmlnLm1lYXN1cmVf
Y3B1ID0ga01lYXN1cmVDcHU7Ci0gICAgY29uZmlnLmh3X2VuY29kZXIgPSBod19jb2RlY187Ci0g
ICAgY29uZmlnLmh3X2RlY29kZXIgPSBod19jb2RlY187CiAgICAgY29uZmlnLm51bV9mcmFtZXMg
PSBrTnVtRnJhbWVzOwogCiAgICAgY29uc3Qgc2l6ZV90IG51bV9zaW11bGNhc3Rfc3RyZWFtcyA9
CkBAIC04MCwxNCArNzYsMTMgQEAgY2xhc3MgVmlkZW9Db2RlY1Rlc3RQYXJhbWV0ZXJpemVkCiAg
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0NvZGVjVGVzdEZpeHR1cmU+IGZpeHR1cmVfOwogICBjb25z
dCBzaXplX3QgYml0cmF0ZV87CiAgIGNvbnN0IFZpZGVvQ29kZWNUeXBlIGNvZGVjX3R5cGVfOwot
ICBjb25zdCBib29sIGh3X2NvZGVjXzsKIH07CiAKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKENv
ZGVjU2V0dGluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0NvZGVjVGVzdFBhcmFt
ZXRlcml6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OkNvbWJpbmUoOjp0
ZXN0aW5nOjpWYWx1ZXNJbihrQml0cmF0ZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4oa1ZpZGVvQ29kZWNUeXBlKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVl
c0luKGtId0NvZGVjKSkpOworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisgICAgQ29kZWNTZXR0
aW5ncywKKyAgICBWaWRlb0NvZGVjVGVzdFBhcmFtZXRlcml6ZWQsCisgICAgOjp0ZXN0aW5nOjpD
b21iaW5lKDo6dGVzdGluZzo6VmFsdWVzSW4oa0JpdHJhdGVzKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXNJbihrVmlkZW9Db2RlY1R5cGUpKSk7CiAKIFRFU1RfUChW
aWRlb0NvZGVjVGVzdFBhcmFtZXRlcml6ZWQsIEZvcmVtYW5fMzUyeDI4OF8zMCkgewogICBSdW5U
ZXN0KDM1MiwgMjg4LCAzMCwgImZvcmVtYW5fY2lmIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfdmlkZW90b29sYm94LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rl
c3QvdmlkZW9jb2RlY190ZXN0X3ZpZGVvdG9vbGJveC5jYwppbmRleCBmMzFmZjU0OGE4MTI1NWJl
YzQ0NTk3M2VjNzUwYzM2NzAzMjhmMDU3Li42ZGZiOTkzY2U4ODFjN2VlZWQ0NmM4MTY0ZWYxZGI4
ODY1YjRkNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3Rf
dmlkZW90b29sYm94LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF92
aWRlb3Rvb2xib3guY2MKQEAgLTI4LDggKzI4LDYgQEAgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlOjpD
b25maWcgQ3JlYXRlQ29uZmlnKCkgewogICBjb25maWcuZmlsZW5hbWUgPSAiZm9yZW1hbl9jaWYi
OwogICBjb25maWcuZmlsZXBhdGggPSBSZXNvdXJjZVBhdGgoY29uZmlnLmZpbGVuYW1lLCAieXV2
Iik7CiAgIGNvbmZpZy5udW1fZnJhbWVzID0ga0ZvcmVtYW5OdW1GcmFtZXM7Ci0gIGNvbmZpZy5o
d19lbmNvZGVyID0gdHJ1ZTsKLSAgY29uZmlnLmh3X2RlY29kZXIgPSB0cnVlOwogICByZXR1cm4g
Y29uZmlnOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb3Byb2Nlc3Nv
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvcHJvY2Vzc29yLmNjCmluZGV4IDVlOTgwY2Rj
ZjFhY2M4MTU1Zjg0MWU0ZjdlMDQ3NzkzYmEyMDZkNzQuLjY5NTgyNjYwZjkxMTg4YmFiODA5ZGFl
MzQ0MTQ5ZjFhNmZjOWY1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvcHJv
Y2Vzc29yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvcHJvY2Vzc29yLmNjCkBAIC0x
NCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNp
bmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCiAjaW5jbHVkZSAiY29tbW9u
X3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJjb21tb25fdmlk
ZW8vaDI2NC9oMjY0X2NvbW1vbi5oIgpAQCAtMTczLDggKzE3NCw5IEBAIFZpZGVvUHJvY2Vzc29y
OjpWaWRlb1Byb2Nlc3Nvcih3ZWJydGM6OlZpZGVvRW5jb2RlciogZW5jb2RlciwKICAgICAgIHN0
YXRzXyhzdGF0cyksCiAgICAgICBlbmNvZGVyXyhlbmNvZGVyKSwKICAgICAgIGRlY29kZXJzXyhk
ZWNvZGVycyksCi0gICAgICBiaXRyYXRlX2FsbG9jYXRvcl8oVmlkZW9Db2RlY0luaXRpYWxpemVy
OjpDcmVhdGVCaXRyYXRlQWxsb2NhdG9yKAotICAgICAgICAgIGNvbmZpZ18uY29kZWNfc2V0dGlu
Z3MpKSwKKyAgICAgIGJpdHJhdGVfYWxsb2NhdG9yXygKKyAgICAgICAgICBDcmVhdGVCdWlsdGlu
VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpCisgICAgICAgICAgICAgIC0+Q3JlYXRlVmlk
ZW9CaXRyYXRlQWxsb2NhdG9yKGNvbmZpZ18uY29kZWNfc2V0dGluZ3MpKSwKICAgICAgIGZyYW1l
cmF0ZV9mcHNfKDApLAogICAgICAgZW5jb2RlX2NhbGxiYWNrXyh0aGlzKSwKICAgICAgIGlucHV0
X2ZyYW1lX3JlYWRlcl8oaW5wdXRfZnJhbWVfcmVhZGVyKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy90ZXN0L3ZpZGVvcHJvY2Vzc29yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3Qv
dmlkZW9wcm9jZXNzb3JfdW5pdHRlc3QuY2MKaW5kZXggNTg5YTNkODk4YThlZTQ4OGE0MDE2ZWI2
MjNjOWVhZDQzODU0YTU3OC4uM2Q0MWFkOTk4ZmViZmM2MjA2Mzc4N2NhMGJkMzVmZGUxOGY3ZjM2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9wcm9jZXNzb3JfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9wcm9jZXNzb3JfdW5pdHRlc3QuY2MKQEAg
LTExLDEzICsxMSwxNCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFic2wvbWVt
b3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5oIgor
I2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgImFwaS90
ZXN0L3ZpZGVvY29kZWNfdGVzdF9maXh0dXJlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBf
YnVmZmVyLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5j
bHVkZSkKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X3N0YXRzX2lt
cGwuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb3By
b2Nlc3Nvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvbW9jay9t
b2NrX3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVlX2Zvcl90ZXN0LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5jYwppbmRleCBkNTNmNDY5OTRkMzYwOGVmMzll
M2UwNmU2MWVkYWZhYWMzYTliODc1Li5jNWUxNjNmY2Y3MjBiOGIyOGVjOTgyNzUzMjE3NzQ3MzVh
OTA3NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5
ZXJzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuY2MK
QEAgLTcsOCArNyw2IEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KIAotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuaCIKLQogI2luY2x1ZGUg
PHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCkBAIC0yMCw2ICsxOCw3IEBACiAjaW5j
bHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25f
dHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1
bHRfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5j
bHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCkBAIC0yNywyNyArMjYsMzAgQEAKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKLVRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZzo6RnJhbWVD
b25maWcoKQorVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnOjpGcmFtZUNvbmZpZygpCiAg
ICAgOiBGcmFtZUNvbmZpZyhrTm9uZSwga05vbmUsIGtOb25lLCBmYWxzZSkge30KIAotVGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnOjpGcmFtZUNvbmZpZyhUZW1wb3JhbExheWVyczo6QnVmZmVy
RmxhZ3MgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVt
cG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGdvbGRlbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGFyZikKK1ZwOFRl
bXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZzo6RnJhbWVDb25maWcoCisgICAgVnA4VGVtcG9yYWxM
YXllcnM6OkJ1ZmZlckZsYWdzIGxhc3QsCisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZs
YWdzIGdvbGRlbiwKKyAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgYXJmKQogICAg
IDogRnJhbWVDb25maWcobGFzdCwgZ29sZGVuLCBhcmYsIGZhbHNlKSB7fQogCi1UZW1wb3JhbExh
eWVyczo6RnJhbWVDb25maWc6OkZyYW1lQ29uZmlnKFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFn
cyBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wb3Jh
bExheWVyczo6QnVmZmVyRmxhZ3MgZ29sZGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgYXJmLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlemVFbnRyb3B5KQorVnA4VGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnOjpGcmFtZUNvbmZpZygKKyAgICBWcDhUZW1wb3JhbExheWVy
czo6QnVmZmVyRmxhZ3MgbGFzdCwKKyAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3Mg
Z29sZGVuLAorICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBhcmYsCisgICAgRnJl
ZXplRW50cm9weSkKICAgICA6IEZyYW1lQ29uZmlnKGxhc3QsIGdvbGRlbiwgYXJmLCB0cnVlKSB7
fQogCi1UZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc6OkZyYW1lQ29uZmlnKFRlbXBvcmFsTGF5
ZXJzOjpCdWZmZXJGbGFncyBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgZ29sZGVuLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3Mg
YXJmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyZWV6
ZV9lbnRyb3B5KQotICAgIDogZHJvcF9mcmFtZShsYXN0ID09IFRlbXBvcmFsTGF5ZXJzOjprTm9u
ZSAmJgotICAgICAgICAgICAgICAgICBnb2xkZW4gPT0gVGVtcG9yYWxMYXllcnM6OmtOb25lICYm
Ci0gICAgICAgICAgICAgICAgIGFyZiA9PSBUZW1wb3JhbExheWVyczo6a05vbmUpLAorVnA4VGVt
cG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnOjpGcmFtZUNvbmZpZygKKyAgICBWcDhUZW1wb3JhbExh
eWVyczo6QnVmZmVyRmxhZ3MgbGFzdCwKKyAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxh
Z3MgZ29sZGVuLAorICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBhcmYsCisgICAg
Ym9vbCBmcmVlemVfZW50cm9weSkKKyAgICA6IGRyb3BfZnJhbWUobGFzdCA9PSBWcDhUZW1wb3Jh
bExheWVyczo6a05vbmUgJiYKKyAgICAgICAgICAgICAgICAgZ29sZGVuID09IFZwOFRlbXBvcmFs
TGF5ZXJzOjprTm9uZSAmJgorICAgICAgICAgICAgICAgICBhcmYgPT0gVnA4VGVtcG9yYWxMYXll
cnM6OmtOb25lKSwKICAgICAgIGxhc3RfYnVmZmVyX2ZsYWdzKGxhc3QpLAogICAgICAgZ29sZGVu
X2J1ZmZlcl9mbGFncyhnb2xkZW4pLAogICAgICAgYXJmX2J1ZmZlcl9mbGFncyhhcmYpLApAQCAt
MTA2LDE1ICsxMDgsMTUgQEAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgaW50PiBHZXRUZW1wb3JhbElk
cyhzaXplX3QgbnVtX2xheWVycykgewogICByZXR1cm4gezB9OwogfQogCi11aW50OF90IEdldFVw
ZGF0ZWRCdWZmZXJzKGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgY29uZmlnKSB7
Cit1aW50OF90IEdldFVwZGF0ZWRCdWZmZXJzKGNvbnN0IFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFt
ZUNvbmZpZyYgY29uZmlnKSB7CiAgIHVpbnQ4X3QgZmxhZ3MgPSAwOwotICBpZiAoY29uZmlnLmxh
c3RfYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7
CisgIGlmIChjb25maWcubGFzdF9idWZmZXJfZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6QnVm
ZmVyRmxhZ3M6OmtVcGRhdGUpIHsKICAgICBmbGFncyB8PSBzdGF0aWNfY2FzdDx1aW50OF90PihW
cDhCdWZmZXJSZWZlcmVuY2U6OmtMYXN0KTsKICAgfQotICBpZiAoY29uZmlnLmdvbGRlbl9idWZm
ZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtVcGRhdGUpIHsKKyAgaWYg
KGNvbmZpZy5nb2xkZW5fYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZs
YWdzOjprVXBkYXRlKSB7CiAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVnA4QnVm
ZmVyUmVmZXJlbmNlOjprR29sZGVuKTsKICAgfQotICBpZiAoY29uZmlnLmFyZl9idWZmZXJfZmxh
Z3MgJiBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtVcGRhdGUpIHsKKyAgaWYgKGNvbmZp
Zy5hcmZfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBk
YXRlKSB7CiAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVnA4QnVmZmVyUmVmZXJl
bmNlOjprQWx0cmVmKTsKICAgfQogICByZXR1cm4gZmxhZ3M7CkBAIC0xMjIsMTAgKzEyNCwxMCBA
QCB1aW50OF90IEdldFVwZGF0ZWRCdWZmZXJzKGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNv
bmZpZyYgY29uZmlnKSB7CiAKIC8vIEZpbmQgdGhlIHNldCBvZiBidWZmZXJzIHRoYXQgYXJlIG5l
dmVyIHVwZGF0ZWQgYnkgdGhlIGdpdmVuIHBhdHRlcm4uCiBzdGQ6OnNldDxWcDhCdWZmZXJSZWZl
cmVuY2U+IEZpbmRLZkJ1ZmZlcnMoCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVtcG9yYWxMYXll
cnM6OkZyYW1lQ29uZmlnPiYgZnJhbWVfY29uZmlncykgeworICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZz4mIGZyYW1lX2NvbmZpZ3MpIHsKICAgc3Rk
OjpzZXQ8VnA4QnVmZmVyUmVmZXJlbmNlPiBrZl9idWZmZXJzKGtBbGxCdWZmZXJzLmJlZ2luKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQWxsQnVmZmVycy5l
bmQoKSk7Ci0gIGZvciAoVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIGNvbmZpZyA6IGZyYW1l
X2NvbmZpZ3MpIHsKKyAgZm9yIChWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgY29uZmln
IDogZnJhbWVfY29uZmlncykgewogICAgIC8vIEdldCBiaXQtbWFza2VkIHNldCBvZiB1cGRhdGUg
YnVmZmVycyBmb3IgdGhpcyBmcmFtZSBjb25maWcuCiAgICAgdWludDhfdCB1cGRhdGVkX2J1ZmZl
cnMgPSBHZXRVcGRhdGVkQnVmZmVycyhjb25maWcpOwogICAgIGZvciAoVnA4QnVmZmVyUmVmZXJl
bmNlIGJ1ZmZlciA6IGtBbGxCdWZmZXJzKSB7CkBAIC0xMzgsNyArMTQwLDcgQEAgc3RkOjpzZXQ8
VnA4QnVmZmVyUmVmZXJlbmNlPiBGaW5kS2ZCdWZmZXJzKAogfQogfSAgLy8gbmFtZXNwYWNlCiAK
LXN0ZDo6dmVjdG9yPFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZz4KK3N0ZDo6dmVjdG9yPFZw
OFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZz4KIERlZmF1bHRUZW1wb3JhbExheWVyczo6R2V0
VGVtcG9yYWxQYXR0ZXJuKHNpemVfdCBudW1fbGF5ZXJzKSB7CiAgIC8vIEZvciBpbmRleGluZyBp
biB0aGUgcGF0dGVybnMgZGVzY3JpYmVkIGJlbG93ICh3aGljaCB0ZW1wb3JhbCBsYXllcnMgdGhl
eQogICAvLyBiZWxvbmcgdG8pLCBzZWUgdGhlIGRpYWdyYW0gYWJvdmUuCkBAIC0yNjIsNyArMjY0
LDcgQEAgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzOjpEZWZhdWx0VGVtcG9yYWxMYXllcnMoaW50IG51
bWJlcl9vZl90ZW1wb3JhbF9sYXllcnMpCiAgICAgICBrZl9idWZmZXJzXyhGaW5kS2ZCdWZmZXJz
KHRlbXBvcmFsX3BhdHRlcm5fKSksCiAgICAgICBwYXR0ZXJuX2lkeF8oa1VuaW5pdGlhbGl6ZWRQ
YXR0ZXJuSW5kZXgpLAogICAgICAgY2hlY2tlcl8oVGVtcG9yYWxMYXllcnNDaGVja2VyOjpDcmVh
dGVUZW1wb3JhbExheWVyc0NoZWNrZXIoCi0gICAgICAgICAgVGVtcG9yYWxMYXllcnNUeXBlOjpr
Rml4ZWRQYXR0ZXJuLAorICAgICAgICAgIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0
dGVybiwKICAgICAgICAgICBudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzKSkgewogICBSVENfQ0hF
Q0tfR0Uoa01heFRlbXBvcmFsU3RyZWFtcywgbnVtYmVyX29mX3RlbXBvcmFsX2xheWVycyk7CiAg
IFJUQ19DSEVDS19HRShudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzLCAwKTsKQEAgLTI3OCw2ICsy
ODAsOCBAQCBEZWZhdWx0VGVtcG9yYWxMYXllcnM6OkRlZmF1bHRUZW1wb3JhbExheWVycyhpbnQg
bnVtYmVyX29mX3RlbXBvcmFsX2xheWVycykKICAgfQogfQogCitEZWZhdWx0VGVtcG9yYWxMYXll
cnM6On5EZWZhdWx0VGVtcG9yYWxMYXllcnMoKSA9IGRlZmF1bHQ7CisKIGJvb2wgRGVmYXVsdFRl
bXBvcmFsTGF5ZXJzOjpTdXBwb3J0c0VuY29kZXJGcmFtZURyb3BwaW5nKCkgY29uc3QgewogICAv
LyBUaGlzIGNsYXNzIGFsbG93cyB0aGUgZW5jb2RlciBkcm9wIGZyYW1lcyBhcyBpdCBzZWVzIGZp
dC4KICAgcmV0dXJuIHRydWU7CkBAIC0zNDYsMTMgKzM1MCwxMyBAQCBib29sIERlZmF1bHRUZW1w
b3JhbExheWVyczo6SXNTeW5jRnJhbWUoY29uc3QgRnJhbWVDb25maWcmIGNvbmZpZykgY29uc3Qg
ewogICByZXR1cm4gdHJ1ZTsKIH0KIAotVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIERlZmF1
bHRUZW1wb3JhbExheWVyczo6VXBkYXRlTGF5ZXJDb25maWcoCitWcDhUZW1wb3JhbExheWVyczo6
RnJhbWVDb25maWcgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzOjpVcGRhdGVMYXllckNvbmZpZygKICAg
ICB1aW50MzJfdCB0aW1lc3RhbXApIHsKICAgUlRDX0RDSEVDS19HVChudW1fbGF5ZXJzXywgMCk7
CiAgIFJUQ19EQ0hFQ0tfTFQoMCwgdGVtcG9yYWxfcGF0dGVybl8uc2l6ZSgpKTsKIAogICBwYXR0
ZXJuX2lkeF8gPSAocGF0dGVybl9pZHhfICsgMSkgJSB0ZW1wb3JhbF9wYXR0ZXJuXy5zaXplKCk7
Ci0gIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0ZW1wb3JhbF9wYXR0
ZXJuX1twYXR0ZXJuX2lkeF9dOworICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxf
Y29uZmlnID0gdGVtcG9yYWxfcGF0dGVybl9bcGF0dGVybl9pZHhfXTsKICAgdGxfY29uZmlnLmVu
Y29kZXJfbGF5ZXJfaWQgPSB0bF9jb25maWcucGFja2V0aXplcl90ZW1wb3JhbF9pZHggPQogICAg
ICAgdGVtcG9yYWxfaWRzX1twYXR0ZXJuX2lkeF8gJSB0ZW1wb3JhbF9pZHNfLnNpemUoKV07CiAK
QEAgLTU2MCw5ICs1NjQsMTEgQEAgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6RGVmYXVs
dFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcigKICAgfQogfQogCitEZWZhdWx0VGVtcG9yYWxMYXllcnND
aGVja2VyOjp+RGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcigpID0gZGVmYXVsdDsKKwogYm9v
bCBEZWZhdWx0VGVtcG9yYWxMYXllcnNDaGVja2VyOjpDaGVja1RlbXBvcmFsQ29uZmlnKAogICAg
IGJvb2wgZnJhbWVfaXNfa2V5ZnJhbWUsCi0gICAgY29uc3QgVGVtcG9yYWxMYXllcnM6OkZyYW1l
Q29uZmlnJiBmcmFtZV9jb25maWcpIHsKKyAgICBjb25zdCBWcDhUZW1wb3JhbExheWVyczo6RnJh
bWVDb25maWcmIGZyYW1lX2NvbmZpZykgewogICBpZiAoIVRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6
Q2hlY2tUZW1wb3JhbENvbmZpZyhmcmFtZV9pc19rZXlmcmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfY29uZmlnKSkgewogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTYxMyw3ICs2MTksNyBAQCBib29sIERlZmF1bHRUZW1wb3JhbExheWVy
c0NoZWNrZXI6OkNoZWNrVGVtcG9yYWxDb25maWcoCiAgIHN0ZDo6dmVjdG9yPGludD4gZGVwZW5k
ZW5jaWVzOwogCiAgIGlmIChmcmFtZV9jb25maWcubGFzdF9idWZmZXJfZmxhZ3MgJgotICAgICAg
VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprUmVmZXJlbmNlKSB7CisgICAgICBWcDhUZW1w
b3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtSZWZlcmVuY2UpIHsKICAgICB1aW50OF90IHJlZmVy
ZW5jZWRfbGF5ZXIgPSB0ZW1wb3JhbF9pZHNfW2xhc3RfLnBhdHRlcm5faWR4XTsKICAgICBpZiAo
cmVmZXJlbmNlZF9sYXllciA+IDApIHsKICAgICAgIG5lZWRfc3luYyA9IGZhbHNlOwpAQCAtNjI4
LDcgKzYzNCw4IEBAIGJvb2wgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q2hlY2tUZW1w
b3JhbENvbmZpZygKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAotICBpZiAoZnJhbWVfY29uZmln
LmFyZl9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtSZWZlcmVu
Y2UpIHsKKyAgaWYgKGZyYW1lX2NvbmZpZy5hcmZfYnVmZmVyX2ZsYWdzICYKKyAgICAgIFZwOFRl
bXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1JlZmVyZW5jZSkgewogICAgIHVpbnQ4X3QgcmVm
ZXJlbmNlZF9sYXllciA9IHRlbXBvcmFsX2lkc19bYXJmXy5wYXR0ZXJuX2lkeF07CiAgICAgaWYg
KHJlZmVyZW5jZWRfbGF5ZXIgPiAwKSB7CiAgICAgICBuZWVkX3N5bmMgPSBmYWxzZTsKQEAgLTY0
NCw3ICs2NTEsNyBAQCBib29sIERlZmF1bHRUZW1wb3JhbExheWVyc0NoZWNrZXI6OkNoZWNrVGVt
cG9yYWxDb25maWcoCiAgIH0KIAogICBpZiAoZnJhbWVfY29uZmlnLmdvbGRlbl9idWZmZXJfZmxh
Z3MgJgotICAgICAgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprUmVmZXJlbmNlKSB7Cisg
ICAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtSZWZlcmVuY2UpIHsKICAgICB1
aW50OF90IHJlZmVyZW5jZWRfbGF5ZXIgPSB0ZW1wb3JhbF9pZHNfW2dvbGRlbl8ucGF0dGVybl9p
ZHhdOwogICAgIGlmIChyZWZlcmVuY2VkX2xheWVyID4gMCkgewogICAgICAgbmVlZF9zeW5jID0g
ZmFsc2U7CkBAIC02ODAsMTcgKzY4NywxOSBAQCBib29sIERlZmF1bHRUZW1wb3JhbExheWVyc0No
ZWNrZXI6OkNoZWNrVGVtcG9yYWxDb25maWcoCiAgICAgfQogICB9CiAKLSAgaWYgKGZyYW1lX2Nv
bmZpZy5sYXN0X2J1ZmZlcl9mbGFncyAmIFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1Vw
ZGF0ZSkgeworICBpZiAoZnJhbWVfY29uZmlnLmxhc3RfYnVmZmVyX2ZsYWdzICYKKyAgICAgIFZw
OFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkgewogICAgIGxhc3RfLmlzX3Vw
ZGF0ZWRfdGhpc19jeWNsZSA9IHRydWU7CiAgICAgbGFzdF8ucGF0dGVybl9pZHggPSBwYXR0ZXJu
X2lkeF87CiAgICAgbGFzdF8uaXNfa2V5ZnJhbWUgPSBmYWxzZTsKICAgfQotICBpZiAoZnJhbWVf
Y29uZmlnLmFyZl9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtV
cGRhdGUpIHsKKyAgaWYgKGZyYW1lX2NvbmZpZy5hcmZfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9y
YWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7CiAgICAgYXJmXy5pc191cGRhdGVkX3Ro
aXNfY3ljbGUgPSB0cnVlOwogICAgIGFyZl8ucGF0dGVybl9pZHggPSBwYXR0ZXJuX2lkeF87CiAg
ICAgYXJmXy5pc19rZXlmcmFtZSA9IGZhbHNlOwogICB9Ci0gIGlmIChmcmFtZV9jb25maWcuZ29s
ZGVuX2J1ZmZlcl9mbGFncyAmIFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkg
eworICBpZiAoZnJhbWVfY29uZmlnLmdvbGRlbl9idWZmZXJfZmxhZ3MgJgorICAgICAgVnA4VGVt
cG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7CiAgICAgZ29sZGVuXy5pc191cGRh
dGVkX3RoaXNfY3ljbGUgPSB0cnVlOwogICAgIGdvbGRlbl8ucGF0dGVybl9pZHggPSBwYXR0ZXJu
X2lkeF87CiAgICAgZ29sZGVuXy5pc19rZXlmcmFtZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Zw
OC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5oCmluZGV4IGJkYTQzY2Q2ZDkzYjQxNGJiZTdhNGJh
YWE1YmQyNjYxZmM3NDlkNmIuLmZmZjYyYTU1N2QzNmUwZGU5ZmZkYWJmYjBjY2QwMDgxNTMyMDIz
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmgKQEAgLTE4
LDIzICsxOCwyMyBAQAogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5
ZXJzX2NoZWNrZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4
L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgotCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9v
cHRpb25hbC5oIgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5
ZXJzLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRl
L3RlbXBvcmFsX2xheWVyc19jaGVja2VyLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFz
cyBEZWZhdWx0VGVtcG9yYWxMYXllcnMgOiBwdWJsaWMgVGVtcG9yYWxMYXllcnMgeworY2xhc3Mg
RGVmYXVsdFRlbXBvcmFsTGF5ZXJzIDogcHVibGljIFZwOFRlbXBvcmFsTGF5ZXJzIHsKICBwdWJs
aWM6CiAgIGV4cGxpY2l0IERlZmF1bHRUZW1wb3JhbExheWVycyhpbnQgbnVtYmVyX29mX3RlbXBv
cmFsX2xheWVycyk7Ci0gIHZpcnR1YWwgfkRlZmF1bHRUZW1wb3JhbExheWVycygpIHt9CisgIH5E
ZWZhdWx0VGVtcG9yYWxMYXllcnMoKSBvdmVycmlkZTsKIAogICBib29sIFN1cHBvcnRzRW5jb2Rl
ckZyYW1lRHJvcHBpbmcoKSBjb25zdCBvdmVycmlkZTsKIAogICAvLyBSZXR1cm5zIHRoZSByZWNv
bW1lbmRlZCBWUDggZW5jb2RlIGZsYWdzIG5lZWRlZC4gTWF5IHJlZnJlc2ggdGhlIGRlY29kZXIK
ICAgLy8gYW5kL29yIHVwZGF0ZSB0aGUgcmVmZXJlbmNlIGJ1ZmZlcnMuCi0gIFRlbXBvcmFsTGF5
ZXJzOjpGcmFtZUNvbmZpZyBVcGRhdGVMYXllckNvbmZpZyh1aW50MzJfdCB0aW1lc3RhbXApIG92
ZXJyaWRlOworICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgVXBkYXRlTGF5ZXJDb25m
aWcodWludDMyX3QgdGltZXN0YW1wKSBvdmVycmlkZTsKIAogICAvLyBOZXcgdGFyZ2V0IGJpdHJh
dGUsIHBlciB0ZW1wb3JhbCBsYXllci4KICAgdm9pZCBPblJhdGVzVXBkYXRlZChjb25zdCBzdGQ6
OnZlY3Rvcjx1aW50MzJfdD4mIGJpdHJhdGVzX2JwcywKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3Mg
RGVmYXVsdFRlbXBvcmFsTGF5ZXJzIDogcHVibGljIFRlbXBvcmFsTGF5ZXJzIHsKIAogIHByaXZh
dGU6CiAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtLZXlmcmFtZUJ1ZmZlciA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7Ci0gIHN0YXRpYyBzdGQ6OnZlY3RvcjxUZW1wb3Jh
bExheWVyczo6RnJhbWVDb25maWc+IEdldFRlbXBvcmFsUGF0dGVybigKKyAgc3RhdGljIHN0ZDo6
dmVjdG9yPFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZz4gR2V0VGVtcG9yYWxQYXR0ZXJu
KAogICAgICAgc2l6ZV90IG51bV9sYXllcnMpOwogICBib29sIElzU3luY0ZyYW1lKGNvbnN0IEZy
YW1lQ29uZmlnJiBjb25maWcpIGNvbnN0OwogICB2b2lkIFZhbGlkYXRlUmVmZXJlbmNlcyhCdWZm
ZXJGbGFncyogZmxhZ3MsIFZwOEJ1ZmZlclJlZmVyZW5jZSByZWYpIGNvbnN0OwpAQCAtNTgsNyAr
NTgsNyBAQCBjbGFzcyBEZWZhdWx0VGVtcG9yYWxMYXllcnMgOiBwdWJsaWMgVGVtcG9yYWxMYXll
cnMgewogCiAgIGNvbnN0IHNpemVfdCBudW1fbGF5ZXJzXzsKICAgY29uc3Qgc3RkOjp2ZWN0b3I8
dW5zaWduZWQgaW50PiB0ZW1wb3JhbF9pZHNfOwotICBjb25zdCBzdGQ6OnZlY3RvcjxUZW1wb3Jh
bExheWVyczo6RnJhbWVDb25maWc+IHRlbXBvcmFsX3BhdHRlcm5fOworICBjb25zdCBzdGQ6OnZl
Y3RvcjxWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc+IHRlbXBvcmFsX3BhdHRlcm5fOwog
ICAvLyBTZXQgb2YgYnVmZmVycyB0aGF0IGFyZSBuZXZlciB1cGRhdGVkIGV4Y2VwdCBieSBrZXlm
cmFtZXMuCiAgIGNvbnN0IHN0ZDo6c2V0PFZwOEJ1ZmZlclJlZmVyZW5jZT4ga2ZfYnVmZmVyc187
CiAKQEAgLTk1LDkgKzk1LDExIEBAIGNsYXNzIERlZmF1bHRUZW1wb3JhbExheWVycyA6IHB1Ymxp
YyBUZW1wb3JhbExheWVycyB7CiBjbGFzcyBEZWZhdWx0VGVtcG9yYWxMYXllcnNDaGVja2VyIDog
cHVibGljIFRlbXBvcmFsTGF5ZXJzQ2hlY2tlciB7CiAgcHVibGljOgogICBleHBsaWNpdCBEZWZh
dWx0VGVtcG9yYWxMYXllcnNDaGVja2VyKGludCBudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzKTsK
KyAgfkRlZmF1bHRUZW1wb3JhbExheWVyc0NoZWNrZXIoKSBvdmVycmlkZTsKKwogICBib29sIENo
ZWNrVGVtcG9yYWxDb25maWcoCiAgICAgICBib29sIGZyYW1lX2lzX2tleWZyYW1lLAotICAgICAg
Y29uc3QgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiBmcmFtZV9jb25maWcpIG92ZXJyaWRl
OworICAgICAgY29uc3QgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiBmcmFtZV9jb25m
aWcpIG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAgc3RydWN0IEJ1ZmZlclN0YXRlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnNfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzX3VuaXR0ZXN0LmNj
CmluZGV4IGFkMzFhNmVmNGEwYWVjYmIzMzJiMTAxNTZmZTlkNzk5ODhmZDBmMWMuLjVlZTY1MjA1
NWNlYTUxNzc4MmIzY2NlZGNmMDk5NDNkYWY3MWM3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVyc191bml0dGVzdC5jYwpAQCAtNzQsNyArNzQs
NyBAQCBjb25zdGV4cHIgaW50IGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSA9CiBjb25zdGV4cHIgaW50
IGtEZWZhdWx0UXAgPSAyOwogfSAgLy8gbmFtZXNwYWNlCiAKLXVzaW5nIEJ1ZmZlckZsYWdzID0g
VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOwordXNpbmcgQnVmZmVyRmxhZ3MgPSBWcDhUZW1w
b3JhbExheWVyczo6QnVmZmVyRmxhZ3M7CiAKIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCAyTGF5
ZXJzKSB7CiAgIGNvbnN0ZXhwciBpbnQga051bUxheWVycyA9IDI7CkBAIC0xMTQsNyArMTE0LDcg
QEAgVEVTVChUZW1wb3JhbExheWVyc1Rlc3QsIDJMYXllcnMpIHsKIAogICB1aW50MzJfdCB0aW1l
c3RhbXAgPSAwOwogICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyArK2kpIHsKLSAgICBUZW1wb3Jh
bExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGlt
ZXN0YW1wKTsKKyAgICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0g
dGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRf
ZmxhZ3NbaV0sIExpYnZweFZwOEVuY29kZXI6OkVuY29kZUZsYWdzKHRsX2NvbmZpZykpIDw8IGk7
CiAgICAgdGwuT25FbmNvZGVEb25lKHRpbWVzdGFtcCwga0RlZmF1bHRCeXRlc1BlckZyYW1lLCBp
ID09IDAsIGtEZWZhdWx0UXAsCiAgICAgICAgICAgICAgICAgICAgICZ2cDhfaW5mbyk7CkBAIC0x
NjYsNyArMTY2LDcgQEAgVEVTVChUZW1wb3JhbExheWVyc1Rlc3QsIDNMYXllcnMpIHsKIAogICB1
bnNpZ25lZCBpbnQgdGltZXN0YW1wID0gMDsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytp
KSB7Ci0gICAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0
ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29u
ZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkX2ZsYWdzW2ldLCBMaWJ2cHhWcDhFbmNvZGVyOjpFbmNvZGVGbGFncyh0
bF9jb25maWcpKSA8PCBpOwogICAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0
Qnl0ZXNQZXJGcmFtZSwgaSA9PSAwLCBrRGVmYXVsdFFwLAogICAgICAgICAgICAgICAgICAgICAm
dnA4X2luZm8pOwpAQCAtMjA3LDcgKzIwNyw3IEBAIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCBB
bHRlcm5hdGl2ZTNMYXllcnMpIHsKIAogICB1bnNpZ25lZCBpbnQgdGltZXN0YW1wID0gMDsKICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpIHsKLSAgICBUZW1wb3JhbExheWVyczo6RnJhbWVD
b25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKKyAgICBW
cDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJD
b25maWcodGltZXN0YW1wKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZmxhZ3NbaV0sIExpYnZw
eFZwOEVuY29kZXI6OkVuY29kZUZsYWdzKHRsX2NvbmZpZykpIDw8IGk7CiAgICAgdGwuT25FbmNv
ZGVEb25lKHRpbWVzdGFtcCwga0RlZmF1bHRCeXRlc1BlckZyYW1lLCBpID09IDAsIGtEZWZhdWx0
UXAsCiAgICAgICAgICAgICAgICAgICAgICZ2cDhfaW5mbyk7CkBAIC0yMzgsNyArMjM4LDcgQEAg
VEVTVChUZW1wb3JhbExheWVyc1Rlc3QsIFNlYXJjaE9yZGVyKSB7CiAKICAgLy8gU3RhcnQgd2l0
aCBhIGtleS1mcmFtZS4gdGxfY29uZmlnIGZsYWdzIGNhbiBiZSBpZ25vcmVkLgogICB1aW50MzJf
dCB0aW1lc3RhbXAgPSAwOwotICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmln
ID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKKyAgVnA4VGVtcG9yYWxMYXllcnM6
OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7
CiAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwgdHJ1
ZSwga0RlZmF1bHRRcCwKICAgICAgICAgICAgICAgICAgICZ2cDhfaW5mbyk7CiAKQEAgLTI4Miw3
ICsyODIsNyBAQCBURVNUKFRlbXBvcmFsTGF5ZXJzVGVzdCwgU2VhcmNoT3JkZXJXaXRoRHJvcCkg
ewogCiAgIC8vIFN0YXJ0IHdpdGggYSBrZXktZnJhbWUuIHRsX2NvbmZpZyBmbGFncyBjYW4gYmUg
aWdub3JlZC4KICAgdWludDMyX3QgdGltZXN0YW1wID0gMDsKLSAgVGVtcG9yYWxMYXllcnM6OkZy
YW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7Cisg
IFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVMYXll
ckNvbmZpZyh0aW1lc3RhbXApOwogICB0bC5PbkVuY29kZURvbmUodGltZXN0YW1wLCBrRGVmYXVs
dEJ5dGVzUGVyRnJhbWUsIHRydWUsIGtEZWZhdWx0UXAsCiAgICAgICAgICAgICAgICAgICAmdnA4
X2luZm8pOwogCkBAIC0zNDMsNyArMzQzLDcgQEAgVEVTVChUZW1wb3JhbExheWVyc1Rlc3QsIDRM
YXllcnMpIHsKIAogICB1aW50MzJfdCB0aW1lc3RhbXAgPSAwOwogICBmb3IgKGludCBpID0gMDsg
aSA8IDE2OyArK2kpIHsKLSAgICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmln
ID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKKyAgICBWcDhUZW1wb3JhbExheWVy
czo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1w
KTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZmxhZ3NbaV0sIExpYnZweFZwOEVuY29kZXI6OkVu
Y29kZUZsYWdzKHRsX2NvbmZpZykpIDw8IGk7CiAgICAgdGwuT25FbmNvZGVEb25lKHRpbWVzdGFt
cCwga0RlZmF1bHRCeXRlc1BlckZyYW1lLCBpID09IDAsIGtEZWZhdWx0UXAsCiAgICAgICAgICAg
ICAgICAgICAgICZ2cDhfaW5mbyk7CkBAIC0zNzMsNyArMzczLDcgQEAgVEVTVChUZW1wb3JhbExh
eWVyc1Rlc3QsIERvZXNOb3RSZWZlcmVuY2VEcm9wcGVkRnJhbWVzKSB7CiAKICAgLy8gU3RhcnQg
d2l0aCBhIGtleWZyYW1lLgogICB1aW50MzJfdCB0aW1lc3RhbXAgPSAwOwotICBUZW1wb3JhbExh
eWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0
YW1wKTsKKyAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVw
ZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXAs
IGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwgdHJ1ZSwga0RlZmF1bHRRcCwKICAgICAgICAgICAgICAg
ICAgICZ2cDhfaW5mbyk7CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBURVNUKFRlbXBvcmFsTGF5ZXJz
VGVzdCwgRG9lc05vdFJlZmVyZW5jZVVubGVzc0d1YXJhbnRlZWRUb0V4aXN0KSB7CiAKICAgLy8g
U3RhcnQgd2l0aCBhIGtleWZyYW1lLgogICB1aW50MzJfdCB0aW1lc3RhbXAgPSAwOwotICBUZW1w
b3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWco
dGltZXN0YW1wKTsKKyAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9
IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgIHRsLk9uRW5jb2RlRG9uZSh0aW1l
c3RhbXAsIGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwgdHJ1ZSwga0RlZmF1bHRRcCwKICAgICAgICAg
ICAgICAgICAgICZ2cDhfaW5mbyk7CiAKQEAgLTUzMCw3ICs1MzAsNyBAQCBURVNUKFRlbXBvcmFs
TGF5ZXJzVGVzdCwgRG9lc05vdFJlZmVyZW5jZVVubGVzc0d1YXJhbnRlZWRUb0V4aXN0TG9uZ0Rl
bGF5KSB7CiAKICAgLy8gU3RhcnQgd2l0aCBhIGtleWZyYW1lLgogICB1aW50MzJfdCB0aW1lc3Rh
bXAgPSAwOwotICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBk
YXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKKyAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29u
ZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgIHRsLk9u
RW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwgdHJ1ZSwga0RlZmF1
bHRRcCwKICAgICAgICAgICAgICAgICAgICZ2cDhfaW5mbyk7CiAKQEAgLTYxMCw3ICs2MTAsOCBA
QCBURVNUKFRlbXBvcmFsTGF5ZXJzVGVzdCwgS2V5RnJhbWUpIHsKICAgICBmb3IgKGludCBqID0g
MTsgaiA8PSBpOyArK2opIHsKICAgICAgIC8vIFNpbmNlIGxhc3QgZnJhbWUgd2FzIGFsd2F5cyBh
IGtleWZyYW1lIGFuZCB0aHVzIGluZGV4IDAgaW4gdGhlIHBhdHRlcm4sCiAgICAgICAvLyB0aGlz
IGxvb3Agc3RhcnRzIGF0IGluZGV4IDEuCi0gICAgICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25m
aWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKKyAgICAgIFZw
OFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPQorICAgICAgICAgIHRsLlVw
ZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZmxh
Z3Nbal0sIExpYnZweFZwOEVuY29kZXI6OkVuY29kZUZsYWdzKHRsX2NvbmZpZykpCiAgICAgICAg
ICAgPDwgajsKICAgICAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0Qnl0ZXNQ
ZXJGcmFtZSwgZmFsc2UsIGtEZWZhdWx0UXAsCkBAIC02MjIsNyArNjIzLDcgQEAgVEVTVChUZW1w
b3JhbExheWVyc1Rlc3QsIEtleUZyYW1lKSB7CiAgICAgICB0aW1lc3RhbXAgKz0gMzAwMDsKICAg
ICB9CiAKLSAgICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBk
YXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKKyAgICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVD
b25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKICAgICB0
bC5PbkVuY29kZURvbmUodGltZXN0YW1wLCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUsIHRydWUsIGtE
ZWZhdWx0UXAsCiAgICAgICAgICAgICAgICAgICAgICZ2cDhfaW5mbyk7CiAgICAgRVhQRUNUX1RS
VUUodnA4X2luZm8ubGF5ZXJTeW5jKSA8PCAiS2V5IGZyYW1lIHNob3VsZCBiZSBtYXJrZWQgbGF5
ZXIgc3luYy4iOwpAQCAtNjUyLDkgKzY1Myw5IEBAIGNsYXNzIFRlbXBvcmFsTGF5ZXJzUmVmZXJl
bmNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7CiAgICAgYm9v
bCBzeW5jOwogICB9OwogCi0gIGJvb2wgVXBkYXRlU3luY1JlZlN0YXRlKGNvbnN0IFRlbXBvcmFs
TGF5ZXJzOjpCdWZmZXJGbGFncyYgZmxhZ3MsCisgIGJvb2wgVXBkYXRlU3luY1JlZlN0YXRlKGNv
bnN0IFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyYgZmxhZ3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1ZmZlclN0YXRlKiBidWZmZXJfc3RhdGUpIHsKLSAgICBpZiAoZmxhZ3Mg
JiBUZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgeworICAgIGlmIChmbGFncyAmIFZwOFRlbXBv
cmFsTGF5ZXJzOjprUmVmZXJlbmNlKSB7CiAgICAgICBpZiAoYnVmZmVyX3N0YXRlLT50ZW1wb3Jh
bF9pZHggPT0gLTEpCiAgICAgICAgIHJldHVybiB0cnVlOyAgLy8gUmVmZXJlbmNlcyBrZXktZnJh
bWUuCiAgICAgICBpZiAoYnVmZmVyX3N0YXRlLT50ZW1wb3JhbF9pZHggPT0gMCkgewpAQCAtNjY4
LDEwICs2NjksMTAgQEAgY2xhc3MgVGVtcG9yYWxMYXllcnNSZWZlcmVuY2VUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKICAgICByZXR1cm4gdHJ1ZTsgIC8vIE5v
IHJlZmVyZW5jZSwgZG9lcyBub3QgYWZmZWN0IHN5bmMgZnJhbWUgc3RhdHVzLgogICB9CiAKLSAg
dm9pZCBWYWxpZGF0ZVJlZmVyZW5jZShjb25zdCBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3Mm
IGZsYWdzLAorICB2b2lkIFZhbGlkYXRlUmVmZXJlbmNlKGNvbnN0IFZwOFRlbXBvcmFsTGF5ZXJz
OjpCdWZmZXJGbGFncyYgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnVm
ZmVyU3RhdGUmIGJ1ZmZlcl9zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGVt
cG9yYWxfbGF5ZXIpIHsKLSAgICBpZiAoZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1JlZmVyZW5j
ZSkgeworICAgIGlmIChmbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjprUmVmZXJlbmNlKSB7CiAg
ICAgICBpZiAodGVtcG9yYWxfbGF5ZXIgPiAwICYmIGJ1ZmZlcl9zdGF0ZS50aW1lc3RhbXAgPiAw
KSB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQgaGlnaCBsYXllciByZWZlcmVuY2UgZG9lcyBub3Qg
Z28gcGFzdCBsYXN0IHN5bmMgZnJhbWUuCiAgICAgICAgIEVYUEVDVF9HRShidWZmZXJfc3RhdGUu
dGltZXN0YW1wLCBsYXN0X3N5bmNfdGltZXN0YW1wXyk7CkBAIC03MDksOSArNzEwLDkgQEAgVEVT
VF9QKFRlbXBvcmFsTGF5ZXJzUmVmZXJlbmNlVGVzdCwgVmFsaWRGcmFtZUNvbmZpZ3MpIHsKICAg
Ly8gKGFueSkuIElmIGEgZ2l2ZW4gYnVmZmVyIGlzIG5ldmVyIHVwZGF0ZWQsIGl0IGlzIGxlZ2Fs
IHRvIHJlZmVyZW5jZSBpdAogICAvLyBldmVuIGZvciBzeW5jIGZyYW1lcy4gSW4gb3JkZXIgdG8g
YmUgZ2VuZXJhbCwgZG9uJ3QgYXNzdW1lIFRMMCBhbHdheXMKICAgLy8gdXBkYXRlcyB8bGFzdHwu
Ci0gIHN0ZDo6dmVjdG9yPFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZz4gdGxfY29uZmlncyhr
TWF4UGF0dGVybkxlbmd0aCk7CisgIHN0ZDo6dmVjdG9yPFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFt
ZUNvbmZpZz4gdGxfY29uZmlncyhrTWF4UGF0dGVybkxlbmd0aCk7CiAgIGZvciAoaW50IGkgPSAw
OyBpIDwga01heFBhdHRlcm5MZW5ndGg7ICsraSkgewotICAgIFRlbXBvcmFsTGF5ZXJzOjpGcmFt
ZUNvbmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXBfKTsKKyAg
ICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5
ZXJDb25maWcodGltZXN0YW1wXyk7CiAgICAgdGwuT25FbmNvZGVEb25lKHRpbWVzdGFtcF8sIGtE
ZWZhdWx0Qnl0ZXNQZXJGcmFtZSwgaSA9PSAwLCBrRGVmYXVsdFFwLAogICAgICAgICAgICAgICAg
ICAgICAmdnA4X3NwZWNpZmljcyk7CiAgICAgKyt0aW1lc3RhbXBfOwpAQCAtNzUyLDExICs3NTMs
MTEgQEAgVEVTVF9QKFRlbXBvcmFsTGF5ZXJzUmVmZXJlbmNlVGVzdCwgVmFsaWRGcmFtZUNvbmZp
Z3MpIHsKIAogICAgIC8vIFVwZGF0ZSB0aGUgY3VycmVudCBsYXllciBzdGF0ZS4KICAgICBCdWZm
ZXJTdGF0ZSBzdGF0ZSA9IHt0ZW1wb3JhbF9pZHgsIHRpbWVzdGFtcF8sIGlzX3N5bmNfZnJhbWV9
OwotICAgIGlmICh0bF9jb25maWcubGFzdF9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6
a1VwZGF0ZSkKKyAgICBpZiAodGxfY29uZmlnLmxhc3RfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9y
YWxMYXllcnM6OmtVcGRhdGUpCiAgICAgICBsYXN0X3N0YXRlID0gc3RhdGU7Ci0gICAgaWYgKHRs
X2NvbmZpZy5nb2xkZW5fYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpCisg
ICAgaWYgKHRsX2NvbmZpZy5nb2xkZW5fYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6
OmtVcGRhdGUpCiAgICAgICBnb2xkZW5fc3RhdGUgPSBzdGF0ZTsKLSAgICBpZiAodGxfY29uZmln
LmFyZl9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1VwZGF0ZSkKKyAgICBpZiAodGxf
Y29uZmlnLmFyZl9idWZmZXJfZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6a1VwZGF0ZSkKICAg
ICAgIGFsdHJlZl9zdGF0ZSA9IHN0YXRlOwogICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDgvaW5jbHVkZS90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5oCmluZGV4IDk4NzhhYzlmM2ExYzZi
ZGNkMTViY2ZlNzlmOTRiMTRmMDI4MTAwOTAuLmFlMTRmNjgyMzYxYzNmNDU0OWZiYmI3NjYxZWE2
MGZhMDk4MjZlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS90ZW1wb3Jh
bF9sYXllcnNfY2hlY2tlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS90ZW1wb3Jh
bF9sYXllcnNfY2hlY2tlci5oCkBAIC0xNSw3ICsxNSw3IEBACiAKICNpbmNsdWRlIDxtZW1vcnk+
CiAKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4
X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBv
cmFsX2xheWVycy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMjksMTAgKzI5LDEwIEBA
IGNsYXNzIFRlbXBvcmFsTGF5ZXJzQ2hlY2tlciB7CiAKICAgdmlydHVhbCBib29sIENoZWNrVGVt
cG9yYWxDb25maWcoCiAgICAgICBib29sIGZyYW1lX2lzX2tleWZyYW1lLAotICAgICAgY29uc3Qg
VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiBmcmFtZV9jb25maWcpOworICAgICAgY29uc3Qg
VnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiBmcmFtZV9jb25maWcpOwogCiAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8VGVtcG9yYWxMYXllcnNDaGVja2VyPiBDcmVhdGVUZW1wb3JhbExh
eWVyc0NoZWNrZXIoCi0gICAgICBUZW1wb3JhbExheWVyc1R5cGUgdHlwZSwKKyAgICAgIFZwOFRl
bXBvcmFsTGF5ZXJzVHlwZSB0eXBlLAogICAgICAgaW50IG51bV90ZW1wb3JhbF9sYXllcnMpOwog
CiAgcHJpdmF0ZToKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgVGVtcG9yYWxMYXllcnNDaGVja2Vy
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wqIG5lZWRfc3luYywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZnJhbWVfaXNfa2V5ZnJhbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHRlbXBvcmFsX2xheWVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpUZW1wb3JhbExheWVyczo6
QnVmZmVyRmxhZ3MgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJy
dGM6OlZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBmbGFncywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlcXVlbmNlX251bWJlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiBsb3dlc3Rfc2VxdWVuY2VfcmVmZXJlbmNl
ZCk7CiAgIEJ1ZmZlclN0YXRlIGxhc3RfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9p
bmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92
cDhfdGVtcG9yYWxfbGF5ZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZGJj
NGVjMmJmYzJiNjAxM2JhNGFhMjIyYTA3ZGUwZTRmYzM4ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90
ZW1wb3JhbF9sYXllcnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDE5OCArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX1ZJREVPX0NPRElOR19DT0RFQ1NfVlA4
X0lOQ0xVREVfVlA4X1RFTVBPUkFMX0xBWUVSU19IXwotI2RlZmluZSBNT0RVTEVTX1ZJREVPX0NP
RElOR19DT0RFQ1NfVlA4X0lOQ0xVREVfVlA4X1RFTVBPUkFMX0xBWUVSU19IXwotCi0jaW5jbHVk
ZSA8bWVtb3J5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8v
IFNvbWUgbm90ZXMgb24gdGhlIHByZXJlcXVpc2l0ZXMgb2YgdGhlIFRlbXBvcmFsTGF5ZXJzIGlu
dGVyZmFjZS4KLS8vICogSW1wbGVtZW50YXRpb25zIG9mIFRlbXBvcmFsTGF5ZXJzIG1heSBub3Qg
Y29udGFpbiBpbnRlcm5hbCBzeW5jaHJvbml6YXRpb24KLS8vICAgc28gY2FsbGVyIG11c3QgbWFr
ZSBzdXJlIGRvaW5nIHNvIHRocmVhZCBzYWZlLgotLy8gKiBUaGUgZW5jb2RlciBpcyBhc3N1bWVk
IHRvIGVuY29kZSBhbGwgZnJhbWVzIGluIG9yZGVyLCBhbmQgY2FsbGJhY2tzIHRvCi0vLyAgIFBv
cHVsYXRlQ29kZWNTcGVjaWZpYygpIC8gRnJhbWVFbmNvZGVkKCkgbXVzdCBoYXBwZW4gaW4gdGhl
IHNhbWUgb3JkZXIuCi0vLwotLy8gVGhpcyBtZWFucyB0aGF0IGluIHRoZSBjYXNlIG9mIHBpcGVs
aW5pbmcgZW5jb2RlcnMsIGl0IGlzIE9LIHRvIGhhdmUgYSBjaGFpbgotLy8gb2YgY2FsbHMgc3Vj
aCBhcyB0aGlzOgotLy8gLSBVcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXBBKQotLy8gLSBVcGRh
dGVMYXllckNvbmZpZyh0aW1lc3RhbXBCKQotLy8gLSBQb3B1bGF0ZUNvZGVjU3BlY2lmaWModGlt
ZXN0YW1wQSwgLi4uKQotLy8gLSBVcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXBDKQotLy8gLSBP
bkVuY29kZURvbmUodGltZXN0YW1wQSwgMTIzNCwgLi4uKQotLy8gLSBVcGRhdGVMYXllckNvbmZp
Zyh0aW1lc3RhbXBDKQotLy8gLSBPbkVuY29kZURvbmUodGltZXN0YW1wQiwgMCwgLi4uKQotLy8g
LSBPbkVuY29kZURvbmUodGltZXN0YW1wQywgMTIzNCwgLi4uKQotLy8gTm90ZSB0aGF0IFVwZGF0
ZUxheWVyQ29uZmlnKCkgZm9yIGEgbmV3IGZyYW1lIGNhbiBoYXBwZW4gYmVmb3JlCi0vLyBGcmFt
ZUVuY29kZWQoKSBmb3IgYSBwcmV2aW91cyBvbmUsIGJ1dCBjYWxscyB0aGVtc2VsdmVzIG11c3Qg
YmUgYm90aAotLy8gc3luY2hyb25pemVkIChlLmcuIHJ1biBvbiBhIHRhc2sgcXVldWUpIGFuZCBp
biBvcmRlciAocGVyIHR5cGUpLgotCi1lbnVtIGNsYXNzIFRlbXBvcmFsTGF5ZXJzVHlwZSB7IGtG
aXhlZFBhdHRlcm4sIGtCaXRyYXRlRHluYW1pYyB9OwotCi1zdHJ1Y3QgQ29kZWNTcGVjaWZpY0lu
Zm9WUDg7Ci1lbnVtIGNsYXNzIFZwOEJ1ZmZlclJlZmVyZW5jZSA6IHVpbnQ4X3QgewotICBrTm9u
ZSA9IDAsCi0gIGtMYXN0ID0gMSwKLSAga0dvbGRlbiA9IDIsCi0gIGtBbHRyZWYgPSA0Ci19Owot
Ci1zdHJ1Y3QgVnA4RW5jb2RlckNvbmZpZyB7Ci0gIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtN
YXhQZXJpb2RpY2l0eSA9IDE2OwotICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrTWF4TGF5ZXJz
ID0gNTsKLQotICAvLyBOdW1iZXIgb2YgYWN0aXZlIHRlbXBvcmFsIGxheWVycy4gU2V0IHRvIDAg
aWYgbm90IHVzZWQuCi0gIHVpbnQzMl90IHRzX251bWJlcl9sYXllcnM7Ci0gIC8vIEFycmF5cyBv
ZiBsZW5ndGggfHRzX251bWJlcl9sYXllcnN8LCBpbmRpY2F0aW5nIChjdW11bGF0aXZlKSB0YXJn
ZXQgYml0cmF0ZQotICAvLyBhbmQgcmF0ZSBkZWNpbWF0b3IgKGUuZy4gNCBpZiBldmVyeSA0dGgg
ZnJhbWUgaXMgaW4gdGhlIGdpdmVuIGxheWVyKSBmb3IKLSAgLy8gZWFjaCBhY3RpdmUgdGVtcG9y
YWwgbGF5ZXIsIHN0YXJ0aW5nIHdpdGggdGVtcG9yYWwgaWQgMC4KLSAgdWludDMyX3QgdHNfdGFy
Z2V0X2JpdHJhdGVba01heExheWVyc107Ci0gIHVpbnQzMl90IHRzX3JhdGVfZGVjaW1hdG9yW2tN
YXhMYXllcnNdOwotCi0gIC8vIFRoZSBwZXJpb2RpY2l0eSBvZiB0aGUgdGVtcG9yYWwgcGF0dGVy
bi4gU2V0IHRvIDAgaWYgbm90IHVzZWQuCi0gIHVpbnQzMl90IHRzX3BlcmlvZGljaXR5OwotICAv
LyBBcnJheSBvZiBsZW5ndGggfHRzX3BlcmlvZGljaXR5fCBpbmRpY2F0aW5nIHRoZSBzZXF1ZW5j
ZSBvZiB0ZW1wb3JhbCBpZCdzCi0gIC8vIHRvIGFzc2lnbiB0byBpbmNvbWluZyBmcmFtZXMuCi0g
IHVpbnQzMl90IHRzX2xheWVyX2lkW2tNYXhQZXJpb2RpY2l0eV07Ci0KLSAgLy8gVGFyZ2V0IGJp
dHJhdGUsIGluIGJwcy4KLSAgdWludDMyX3QgcmNfdGFyZ2V0X2JpdHJhdGU7Ci0KLSAgLy8gQ2xh
bXAgUVAgdG8gbWluL21heC4gVXNlIDAgdG8gZGlzYWJsZSBjbGFtcGluZy4KLSAgdWludDMyX3Qg
cmNfbWluX3F1YW50aXplcjsKLSAgdWludDMyX3QgcmNfbWF4X3F1YW50aXplcjsKLX07Ci0KLS8v
IFRoaXMgaW50ZXJmYWNlIGRlZmluZXMgYSB3YXkgb2YgZ2V0dGluZyB0aGUgZW5jb2RlciBzZXR0
aW5ncyBuZWVkZWQgdG8KLS8vIHJlYWxpemUgYSB0ZW1wb3JhbCBsYXllciBzdHJ1Y3R1cmUgb2Yg
cHJlZGVmaW5lZCBzaXplLgotY2xhc3MgVGVtcG9yYWxMYXllcnMgewotIHB1YmxpYzoKLSAgZW51
bSBCdWZmZXJGbGFncyA6IGludCB7Ci0gICAga05vbmUgPSAwLAotICAgIGtSZWZlcmVuY2UgPSAx
LAotICAgIGtVcGRhdGUgPSAyLAotICAgIGtSZWZlcmVuY2VBbmRVcGRhdGUgPSBrUmVmZXJlbmNl
IHwga1VwZGF0ZSwKLSAgfTsKLSAgZW51bSBGcmVlemVFbnRyb3B5IHsga0ZyZWV6ZUVudHJvcHkg
fTsKLQotICBzdHJ1Y3QgRnJhbWVDb25maWcgewotICAgIEZyYW1lQ29uZmlnKCk7Ci0KLSAgICBG
cmFtZUNvbmZpZyhCdWZmZXJGbGFncyBsYXN0LCBCdWZmZXJGbGFncyBnb2xkZW4sIEJ1ZmZlckZs
YWdzIGFyZik7Ci0gICAgRnJhbWVDb25maWcoQnVmZmVyRmxhZ3MgbGFzdCwKLSAgICAgICAgICAg
ICAgICBCdWZmZXJGbGFncyBnb2xkZW4sCi0gICAgICAgICAgICAgICAgQnVmZmVyRmxhZ3MgYXJm
LAotICAgICAgICAgICAgICAgIEZyZWV6ZUVudHJvcHkpOwotCi0gICAgYm9vbCBkcm9wX2ZyYW1l
OwotICAgIEJ1ZmZlckZsYWdzIGxhc3RfYnVmZmVyX2ZsYWdzOwotICAgIEJ1ZmZlckZsYWdzIGdv
bGRlbl9idWZmZXJfZmxhZ3M7Ci0gICAgQnVmZmVyRmxhZ3MgYXJmX2J1ZmZlcl9mbGFnczsKLQot
ICAgIC8vIFRoZSBlbmNvZGVyIGxheWVyIElEIGlzIHVzZWQgdG8gdXRpbGl6ZSB0aGUgY29ycmVj
dCBiaXRyYXRlIGFsbG9jYXRvcgotICAgIC8vIGluc2lkZSB0aGUgZW5jb2Rlci4gSXQgZG9lcyBu
b3QgY29udHJvbCByZWZlcmVuY2VzIG5vciBkZXRlcm1pbmUgd2hpY2gKLSAgICAvLyAiYWN0dWFs
IiB0ZW1wb3JhbCBsYXllciB0aGlzIGlzLiBUaGUgcGFja2V0aXplciB0ZW1wb3JhbCBpbmRleCBk
ZXRlcm1pbmVzCi0gICAgLy8gd2hpY2ggbGF5ZXIgdGhlIGVuY29kZWQgZnJhbWUgc2hvdWxkIGJl
IHBhY2tldGl6ZWQgaW50by4KLSAgICAvLyBOb3JtYWxseSB0aGVzZSBhcmUgdGhlIHNhbWUsIGJ1
dCBjdXJyZW50IHRlbXBvcmFsLWxheWVyIHN0cmF0ZWdpZXMgZm9yCi0gICAgLy8gc2NyZWVuc2hh
cmUgdXNlIG9uZSBiaXRyYXRlIGFsbG9jYXRvciBmb3IgYWxsIGxheWVycywgYnV0IGF0dGVtcHQg
dG8KLSAgICAvLyBwYWNrZXRpemUgLyB1dGlsaXplIHJlZmVyZW5jZXMgdG8gc3BsaXQgYSBzdHJl
YW0gaW50byBtdWx0aXBsZSBsYXllcnMsCi0gICAgLy8gd2l0aCBkaWZmZXJlbnQgcXVhbnRpemVy
IHNldHRpbmdzLCB0byBoaXQgdGFyZ2V0IGJpdHJhdGUuCi0gICAgLy8gVE9ETyhwYm9zKTogU2Ny
ZWVuc2hhcmUgbGF5ZXJzIGFyZSBiZWluZyByZWNvbnNpZGVyZWQgYXQgdGhlIHRpbWUgb2YKLSAg
ICAvLyB3cml0aW5nLCB3ZSBtaWdodCBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIGRpc3RpbmN0aW9u
LCBhbmQgaGF2ZSBhIHRlbXBvcmFsCi0gICAgLy8gbGF5ZXIgaW1wbHkgYm90aCAodGhlIG5vcm1h
bCBjYXNlKS4KLSAgICBpbnQgZW5jb2Rlcl9sYXllcl9pZDsKLSAgICBpbnQgcGFja2V0aXplcl90
ZW1wb3JhbF9pZHg7Ci0KLSAgICBib29sIGxheWVyX3N5bmM7Ci0KLSAgICBib29sIGZyZWV6ZV9l
bnRyb3B5OwotCi0gICAgLy8gSW5kaWNhdGVzIGluIHdoaWNoIG9yZGVyIHRoZSBlbmNvZGVyIHNo
b3VsZCBzZWFyY2ggdGhlIHJlZmVyZW5jZSBidWZmZXJzCi0gICAgLy8gd2hlbiBkb2luZyBtb3Rp
b24gcHJlZGljdGlvbi4gU2V0IHRvIGtOb25lIHRvIHVzZSB1bnNwZWNpZmllZCBvcmRlci4gQW55
Ci0gICAgLy8gYnVmZmVyIGluZGljYXRlZCBoZXJlIG11c3Qgbm90IGhhdmUgdGhlIGNvcnJlc3Bv
bmRpbmcgbm9fcmVmIGJpdCBzZXQuCi0gICAgLy8gSWYgYWxsIHRocmVlIGJ1ZmZlcnMgY2FuIGJl
IHJlZmVyZW5jZSwgdGhlIG9uZSBub3QgbGlzdGVkIGhlcmUgc2hvdWxkIGJlCi0gICAgLy8gc2Vh
cmNoZWQgbGFzdC4KLSAgICBWcDhCdWZmZXJSZWZlcmVuY2UgZmlyc3RfcmVmZXJlbmNlOwotICAg
IFZwOEJ1ZmZlclJlZmVyZW5jZSBzZWNvbmRfcmVmZXJlbmNlOwotCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZyYW1lQ29uZmlnJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgRnJhbWVDb25maWcmIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KLQotICAg
cHJpdmF0ZToKLSAgICBGcmFtZUNvbmZpZyhCdWZmZXJGbGFncyBsYXN0LAotICAgICAgICAgICAg
ICAgIEJ1ZmZlckZsYWdzIGdvbGRlbiwKLSAgICAgICAgICAgICAgICBCdWZmZXJGbGFncyBhcmYs
Ci0gICAgICAgICAgICAgICAgYm9vbCBmcmVlemVfZW50cm9weSk7Ci0gIH07Ci0KLSAgLy8gRmFj
dG9yeSBmb3IgVGVtcG9yYWxMYXllciBzdHJhdGVneS4gRGVmYXVsdCBiZWhhdmlvciBpcyBhIGZp
eGVkIHBhdHRlcm4KLSAgLy8gb2YgdGVtcG9yYWwgbGF5ZXJzLiBTZWUgZGVmYXVsdF90ZW1wb3Jh
bF9sYXllcnMuY2MKLSAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUZW1wb3JhbExheWVycz4gQ3Jl
YXRlVGVtcG9yYWxMYXllcnMoCi0gICAgICBUZW1wb3JhbExheWVyc1R5cGUgdHlwZSwKLSAgICAg
IGludCBudW1fdGVtcG9yYWxfbGF5ZXJzKTsKLQotICB2aXJ0dWFsIH5UZW1wb3JhbExheWVycygp
ID0gZGVmYXVsdDsKLQotICAvLyBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUsIHRoZSBlbmNv
ZGVyIGlzIGZyZWUgdG8gZHJvcCBmcmFtZXMgZm9yCi0gIC8vIGluc3RhbmNlIGluIGFuIGVmZm9y
dCB0byB1cGhvbGQgZW5jb2RpbmcgYml0cmF0ZS4KLSAgLy8gSWYgdGhpcyByZXR1cm4gZmFsc2Us
IHRoZSBlbmNvZGVyIG11c3Qgbm90IGRyb3AgYW55IGZyYW1lcyB1bmxlc3M6Ci0gIC8vICAxLiBS
ZXF1ZXN0ZWQgdG8gZG8gc28gdmlhIEZyYW1lQ29uZmlnLmRyb3BfZnJhbWUKLSAgLy8gIDIuIFRo
ZSBmcmFtZSB0byBiZSBlbmNvZGVkIGlzIHJlcXVlc3RlZCB0byBiZSBhIGtleWZyYW1lCi0gIC8v
ICAzLiBUaGUgZW5jb2RlZCBkZXRlY3RlZCBhIGxhcmdlIG92ZXJzaG9vdCBhbmQgZGVjaWRlZCB0
byBkcm9wIGFuZCB0aGVuCi0gIC8vICAgICByZS1lbmNvZGUgdGhlIGltYWdlIGF0IGEgbG93IGJp
dHJhdGUuIEluIHRoaXMgY2FzZSB0aGUgZW5jb2RlciBzaG91bGQKLSAgLy8gICAgIGNhbGwgT25F
bmNvZGVEb25lKCkgb25jZSB3aXRoIHNpemUgPSAwIHRvIGluZGljYXRlIGRyb3AsIGFuZCB0aGVu
IGNhbGwKLSAgLy8gICAgIE9uRW5jb2RlRG9uZSgpIGFnYWluIHdoZW4gdGhlIGZyYW1lIGhhcyBh
Y3R1YWxseSBiZWVuIGVuY29kZWQuCi0gIHZpcnR1YWwgYm9vbCBTdXBwb3J0c0VuY29kZXJGcmFt
ZURyb3BwaW5nKCkgY29uc3QgPSAwOwotCi0gIC8vIE5ldyB0YXJnZXQgYml0cmF0ZSwgcGVyIHRl
bXBvcmFsIGxheWVyLgotICB2aXJ0dWFsIHZvaWQgT25SYXRlc1VwZGF0ZWQoY29uc3Qgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+JiBiaXRyYXRlc19icHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZnJhbWVyYXRlX2ZwcykgPSAwOwotCi0gIC8vIENhbGxlZCBieSB0aGUgZW5jb2Rl
ciBiZWZvcmUgZW5jb2RpbmcgYSBmcmFtZS4gfGNmZ3wgY29udGFpbnMgdGhlIGN1cnJlbnQKLSAg
Ly8gY29uZmlndXJhdGlvbi4gSWYgdGhlIFRlbXBvcmFsTGF5ZXJzIGluc3RhbmNlIHdpc2hlcyBh
bnkgcGFydCBvZiB0aGF0Ci0gIC8vIHRvIGJlIGNoYW5nZWQgYmVmb3JlIHRoZSBlbmNvZGUgc3Rl
cCwgfGNmZ3wgc2hvdWxkIGJlIGNoYW5nZWQgYW5kIHRoZW4KLSAgLy8gcmV0dXJuIHRydWUuIElm
IGZhbHNlIGlzIHJldHVybmVkLCB0aGUgZW5jb2RlciB3aWxsIHByb2NlZWQgd2l0aG91dAotICAv
LyB1cGRhdGluZyB0aGUgY29uZmlndXJhdGlvbi4KLSAgdmlydHVhbCBib29sIFVwZGF0ZUNvbmZp
Z3VyYXRpb24oVnA4RW5jb2RlckNvbmZpZyogY2ZnKSA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0aGUg
cmVjb21tZW5kZWQgVlA4IGVuY29kZSBmbGFncyBuZWVkZWQsIGFuZCBtb3ZlcyB0aGUgdGVtcG9y
YWwKLSAgLy8gcGF0dGVybiB0byB0aGUgbmV4dCBmcmFtZS4KLSAgLy8gVGhlIHRpbWVzdGFtcCBt
YXkgYmUgdXNlZCBhcyBib3RoIGEgdGltZSBhbmQgYSB1bmlxdWUgaWRlbnRpZmllciwgYW5kIHNv
Ci0gIC8vIHRoZSBjYWxsZXIgbXVzdCBtYWtlIHN1cmUgbm8gdHdvIGZyYW1lcyB1c2UgdGhlIHNh
bWUgdGltZXN0YW1wLgotICAvLyBUaGUgdGltZXN0YW1wIHVzZXMgYSA5MGtIeiBSVFAgY2xvY2su
Ci0gIC8vIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGZpcnN0IGNhbGwgdGhlIGFjdHVhbCBl
bmNvZGVyIHdpdGggdGhlIHByb3ZpZGVkCi0gIC8vIGZyYW1lIGNvbmZpZ3VyYXRpb24sIGFuZCB0
aGVuIE9uRW5jb2RlRG9uZSgpIGJlbG93LgotICB2aXJ0dWFsIEZyYW1lQ29uZmlnIFVwZGF0ZUxh
eWVyQ29uZmlnKHVpbnQzMl90IHJ0cF90aW1lc3RhbXApID0gMDsKLQotICAvLyBDYWxsZWQgYWZ0
ZXIgdGhlIGVuY29kZSBzdGVwIGlzIGRvbmUuIHxydHBfdGltZXN0YW1wfCBtdXN0IG1hdGNoIHRo
ZQotICAvLyBwYXJhbWV0ZXIgdXNlIGluIHRoZSBVcGRhdGVMYXllckNvbmZpZygpIGNhbGwuCi0g
IC8vIHxpc19rZXlmcmFtZXwgbXVzdCBiZSB0cnVlIGlmZiB0aGUgZW5jb2RlciBkZWNpZGVkIHRv
IGVuY29kZSB0aGlzIGZyYW1lIGFzCi0gIC8vIGEga2V5ZnJhbWUuCi0gIC8vIElmIHRoZSBlbmNv
ZGVyIGRlY2lkZWQgdG8gZHJvcCB0aGlzIGZyYW1lLCB8c2l6ZV9ieXRlc3wgbXVzdCBiZSBzZXQg
dG8gMCwKLSAgLy8gb3RoZXJ3aXNlIGl0IHNob3VsZCBpbmRpY2F0ZSB0aGUgc2l6ZSBpbiBieXRl
cyBvZiB0aGUgZW5jb2RlZCBmcmFtZS4KLSAgLy8gSWYgfHNpemVfYnl0ZXN8ID4gMCwgYW5kIHx2
cDhfaW5mb3wgaXMgbm90IG51bGwsIHRoZSBUZW1wb3JhbExheWVycwotICAvLyBpbnN0YW5jZSBt
eSB1cGRhdGUgfHZwOF9pbmZvfCB3aXRoIGNvZGVjIHNwZWNpZmljIGRhdGEgc3VjaCBhcyB0ZW1w
b3JhbCBpZC4KLSAgLy8gU29tZSBmaWVsZHMgb2YgdGhpcyBzdHJ1Y3QgbWF5IGhhdmUgYWxyZWFk
eSBiZWVuIHBvcHVsYXRlZCBieSB0aGUgZW5jb2RlciwKLSAgLy8gY2hlY2sgYmVmb3JlIG92ZXJ3
cml0aW5nLgotICAvLyBJZiB8c2l6ZV9ieXRlc3wgPiAwLCB8cXB8IHNob3VsZCBpbmRpY2F0ZSB0
aGUgZnJhbWUtbGV2ZWwgUVAgdGhpcyBmcmFtZSB3YXMKLSAgLy8gZW5jb2RlZCBhdC4gSWYgdGhl
IGVuY29kZXIgZG9lcyBub3Qgc3VwcG9ydCBleHRyYWN0aW5nIHRoaXMsIHxxcHwgc2hvdWxkIGJl
Ci0gIC8vIHNldCB0byAwLgotICB2aXJ0dWFsIHZvaWQgT25FbmNvZGVEb25lKHVpbnQzMl90IHJ0
cF90aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemVfYnl0
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19rZXlmcmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29kZWNTcGVjaWZpY0luZm9WUDgqIHZwOF9pbmZvKSA9IDA7Ci19OwotCi19ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQ
OF9JTkNMVURFX1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4
X2RlY29kZXIuY2MKaW5kZXggMjA2ODRkMWQzOTE4NWU2MmUxMGZjNzEzZTNkOTk1MzU4ODY4Mjkx
My4uNDg4MzhlOTNlN2YzNjliNmNhMGRjNjcyZjU1NDU4MDliY2MyNTdlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIuY2MKQEAgLTEyLDcgKzEyLDYgQEAKICNpbmNsdWRlIDxz
dHJpbmc+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21t
b25fdmlkZW8vbGlieXV2L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3MvZXhwX2Zp
bHRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmgKaW5kZXggM2E2Y2Y5MjQw
NWNjN2VkYzhiNWEzMDRhNDU0ZDBjZDYzMjA1Y2I0OC4uY2ZmOWU4OTk4ODQxYjljMzg0ODQ2OTQ1
NWRmZjM2YmJmODhmNzhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4
X2RlY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZGVjb2Rlci5oCkBA
IC0xMywxMCArMTMsMTAgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgImFwaS92
aWRlby9lbmNvZGVkX2ltYWdlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19k
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5j
bHVkZSkKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS9pNDIwX2J1ZmZlcl9wb29sLmgi
Ci0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKICNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2VuY29kZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L2xpYnZweF92cDhfZW5jb2Rlci5jYwppbmRleCA0MWRhZDQwZDllNDBiZjNmOWM2ZmEw
ZWEzYmQ2NDYzZGU5NjBhMTdiLi5iZTUyNDJjMWI5MTY4YjA2ZjlhZGIxZDY2MDRlNGE5YzAxNmY4
YzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZW5jb2Rlci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZW5jb2Rlci5jYwpAQCAtMTQsNiArMTQs
OCBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5o
IgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMu
aCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNp
bmNsdWRlICJjb21tb25fdmlkZW8vbGlieXV2L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9lbmNvZGVy
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0
ZV9hbGxvY2F0b3IuaCIKQEAgLTI3LDcgKzI5LDggQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBu
YW1lc3BhY2UgewotY29uc3QgY2hhciBrVnA4R2ZCb29zdEZpZWxkVHJpYWxbXSA9ICJXZWJSVEMt
VlA4LUdmQm9vc3QiOworY29uc3QgY2hhciBrVnA4VHJ1c3RlZFJhdGVDb250cm9sbGVyRmllbGRU
cmlhbFtdID0KKyAgICAiV2ViUlRDLUxpYnZweFZwOFRydXN0ZWRSYXRlQ29udHJvbGxlciI7CiAK
IC8vIFFQIGlzIG9idGFpbmVkIGZyb20gVlA4LWJpdHN0cmVhbSBmb3IgSFcsIHNvIHRoZSBRUCBj
b3JyZXNwb25kcyB0byB0aGUKIC8vIGJpdHN0cmVhbSByYW5nZSBvZiBbMCwgMTI3XSBhbmQgbm90
IHRoZSB1c2VyLWxldmVsIHJhbmdlIG9mIFswLDYzXS4KQEAgLTU5LDIwICs2Miw2IEBAIHN0YXRp
YyBpbnQgR0NEKGludCBhLCBpbnQgYikgewogICByZXR1cm4gYjsKIH0KIAotYm9vbCBHZXRHZkJv
b3N0UGVyY2VudGFnZUZyb21GaWVsZFRyaWFsR3JvdXAoaW50KiBib29zdF9wZXJjZW50YWdlKSB7
Ci0gIHN0ZDo6c3RyaW5nIGdyb3VwID0gd2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1l
KGtWcDhHZkJvb3N0RmllbGRUcmlhbCk7Ci0gIGlmIChncm91cC5lbXB0eSgpKQotICAgIHJldHVy
biBmYWxzZTsKLQotICBpZiAoc3NjYW5mKGdyb3VwLmNfc3RyKCksICJFbmFibGVkLSVkIiwgYm9v
c3RfcGVyY2VudGFnZSkgIT0gMSkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKCpib29zdF9w
ZXJjZW50YWdlIDwgMCB8fCAqYm9vc3RfcGVyY2VudGFnZSA+IDEwMCkKLSAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpY19hc3NlcnQoVnA4RW5jb2RlckNvbmZp
Zzo6a01heFBlcmlvZGljaXR5ID09IFZQWF9UU19NQVhfUEVSSU9ESUNJVFksCiAgICAgICAgICAg
ICAgICJWcDhFbmNvZGVyQ29uZmlnOjprTWF4UGVyaW9kaWNpdHkgbXVzdCBiZSBrZXB0IGluIHN5
bmMgd2l0aCB0aGUgIgogICAgICAgICAgICAgICAiY29uc3RhbnQgaW4gbGlidnB4LiIpOwpAQCAt
MTEzLDcgKzEwMiw3IEBAIHN0YXRpYyB2b2lkIEZpbGxJbkVuY29kZXJDb25maWcodnB4X2NvZGVj
X2VuY19jZmcqIHZweF9jb25maWcsCiAgIHZweF9jb25maWctPnJjX21heF9xdWFudGl6ZXIgPSBj
b25maWcucmNfbWF4X3F1YW50aXplcjsKIH0KIAotYm9vbCBVcGRhdGVWcHhDb25maWd1cmF0aW9u
KFRlbXBvcmFsTGF5ZXJzKiB0ZW1wb3JhbF9sYXllcnMsCitib29sIFVwZGF0ZVZweENvbmZpZ3Vy
YXRpb24oVnA4VGVtcG9yYWxMYXllcnMqIHRlbXBvcmFsX2xheWVycywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2cHhfY29kZWNfZW5jX2NmZ190KiBjZmcpIHsKICAgVnA4RW5jb2RlckNv
bmZpZyBjb25maWcgPSBHZXRFbmNvZGVyQ29uZmlnKGNmZyk7CiAgIGNvbnN0IGJvb2wgcmVzID0g
dGVtcG9yYWxfbGF5ZXJzLT5VcGRhdGVDb25maWd1cmF0aW9uKCZjb25maWcpOwpAQCAtMTI5LDIy
ICsxMTgsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gVlA4RW5jb2Rlcjo6Q3Jl
YXRlKCkgewogfQogCiB2cHhfZW5jX2ZyYW1lX2ZsYWdzX3QgTGlidnB4VnA4RW5jb2Rlcjo6RW5j
b2RlRmxhZ3MoCi0gICAgY29uc3QgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiByZWZlcmVu
Y2VzKSB7CisgICAgY29uc3QgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiByZWZlcmVu
Y2VzKSB7CiAgIFJUQ19EQ0hFQ0soIXJlZmVyZW5jZXMuZHJvcF9mcmFtZSk7CiAKICAgdnB4X2Vu
Y19mcmFtZV9mbGFnc190IGZsYWdzID0gMDsKIAotICBpZiAoKHJlZmVyZW5jZXMubGFzdF9idWZm
ZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgPT0gMCkKKyAgaWYgKChyZWZl
cmVuY2VzLmxhc3RfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OmtSZWZlcmVuY2Up
ID09IDApCiAgICAgZmxhZ3MgfD0gVlA4X0VGTEFHX05PX1JFRl9MQVNUOwotICBpZiAoKHJlZmVy
ZW5jZXMubGFzdF9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1VwZGF0ZSkgPT0gMCkK
KyAgaWYgKChyZWZlcmVuY2VzLmxhc3RfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6
OmtVcGRhdGUpID09IDApCiAgICAgZmxhZ3MgfD0gVlA4X0VGTEFHX05PX1VQRF9MQVNUOwotICBp
ZiAoKHJlZmVyZW5jZXMuZ29sZGVuX2J1ZmZlcl9mbGFncyAmIFRlbXBvcmFsTGF5ZXJzOjprUmVm
ZXJlbmNlKSA9PSAwKQorICBpZiAoKHJlZmVyZW5jZXMuZ29sZGVuX2J1ZmZlcl9mbGFncyAmIFZw
OFRlbXBvcmFsTGF5ZXJzOjprUmVmZXJlbmNlKSA9PSAwKQogICAgIGZsYWdzIHw9IFZQOF9FRkxB
R19OT19SRUZfR0Y7Ci0gIGlmICgocmVmZXJlbmNlcy5nb2xkZW5fYnVmZmVyX2ZsYWdzICYgVGVt
cG9yYWxMYXllcnM6OmtVcGRhdGUpID09IDApCisgIGlmICgocmVmZXJlbmNlcy5nb2xkZW5fYnVm
ZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpID09IDApCiAgICAgZmxhZ3Mg
fD0gVlA4X0VGTEFHX05PX1VQRF9HRjsKLSAgaWYgKChyZWZlcmVuY2VzLmFyZl9idWZmZXJfZmxh
Z3MgJiBUZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgPT0gMCkKKyAgaWYgKChyZWZlcmVuY2Vz
LmFyZl9idWZmZXJfZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgPT0gMCkK
ICAgICBmbGFncyB8PSBWUDhfRUZMQUdfTk9fUkVGX0FSRjsKLSAgaWYgKChyZWZlcmVuY2VzLmFy
Zl9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1VwZGF0ZSkgPT0gMCkKKyAgaWYgKChy
ZWZlcmVuY2VzLmFyZl9idWZmZXJfZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6a1VwZGF0ZSkg
PT0gMCkKICAgICBmbGFncyB8PSBWUDhfRUZMQUdfTk9fVVBEX0FSRjsKICAgaWYgKHJlZmVyZW5j
ZXMuZnJlZXplX2VudHJvcHkpCiAgICAgZmxhZ3MgfD0gVlA4X0VGTEFHX05PX1VQRF9FTlRST1BZ
OwpAQCAtMTU3LDcgKzE0Niw5IEBAIExpYnZweFZwOEVuY29kZXI6OkxpYnZweFZwOEVuY29kZXIo
KQogCiBMaWJ2cHhWcDhFbmNvZGVyOjpMaWJ2cHhWcDhFbmNvZGVyKHN0ZDo6dW5pcXVlX3B0cjxM
aWJ2cHhJbnRlcmZhY2U+IGludGVyZmFjZSkKICAgICA6IGxpYnZweF8oc3RkOjptb3ZlKGludGVy
ZmFjZSkpLAotICAgICAgdXNlX2dmX2Jvb3N0Xyh3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoa1ZwOEdmQm9vc3RGaWVsZFRyaWFsKSksCisgICAgICBleHBlcmltZW50YWxfY3B1X3NwZWVk
X2NvbmZpZ19hcm1fKENwdVNwZWVkRXhwZXJpbWVudDo6R2V0Q29uZmlncygpKSwKKyAgICAgIHRy
dXN0ZWRfcmF0ZV9jb250cm9sbGVyXygKKyAgICAgICAgICBmaWVsZF90cmlhbDo6SXNFbmFibGVk
KGtWcDhUcnVzdGVkUmF0ZUNvbnRyb2xsZXJGaWVsZFRyaWFsKSksCiAgICAgICBlbmNvZGVkX2Nv
bXBsZXRlX2NhbGxiYWNrXyhudWxscHRyKSwKICAgICAgIGluaXRlZF8oZmFsc2UpLAogICAgICAg
dGltZXN0YW1wXygwKSwKQEAgLTE2Nyw3ICsxNTgsNiBAQCBMaWJ2cHhWcDhFbmNvZGVyOjpMaWJ2
cHhWcDhFbmNvZGVyKHN0ZDo6dW5pcXVlX3B0cjxMaWJ2cHhJbnRlcmZhY2U+IGludGVyZmFjZSkK
ICAgICAgIHJjX21heF9pbnRyYV90YXJnZXRfKDApLAogICAgICAga2V5X2ZyYW1lX3JlcXVlc3Rf
KGtNYXhTaW11bGNhc3RTdHJlYW1zLCBmYWxzZSkgewogICB0ZW1wb3JhbF9sYXllcnNfLnJlc2Vy
dmUoa01heFNpbXVsY2FzdFN0cmVhbXMpOwotICB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlcnNfLnJl
c2VydmUoa01heFNpbXVsY2FzdFN0cmVhbXMpOwogICByYXdfaW1hZ2VzXy5yZXNlcnZlKGtNYXhT
aW11bGNhc3RTdHJlYW1zKTsKICAgZW5jb2RlZF9pbWFnZXNfLnJlc2VydmUoa01heFNpbXVsY2Fz
dFN0cmVhbXMpOwogICBzZW5kX3N0cmVhbV8ucmVzZXJ2ZShrTWF4U2ltdWxjYXN0U3RyZWFtcyk7
CkBAIC0yMDYsNyArMTk2LDYgQEAgaW50IExpYnZweFZwOEVuY29kZXI6OlJlbGVhc2UoKSB7CiAg
ICAgcmF3X2ltYWdlc18ucG9wX2JhY2soKTsKICAgfQogICB0ZW1wb3JhbF9sYXllcnNfLmNsZWFy
KCk7Ci0gIHRlbXBvcmFsX2xheWVyc19jaGVja2Vyc18uY2xlYXIoKTsKICAgaW5pdGVkXyA9IGZh
bHNlOwogICByZXR1cm4gcmV0X3ZhbDsKIH0KQEAgLTI3OCwxMCArMjY3LDYgQEAgaW50IExpYnZw
eFZwOEVuY29kZXI6OlNldFJhdGVBbGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRp
b24mIGJpdHJhdGUsCiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKLWNvbnN0
IGNoYXIqIExpYnZweFZwOEVuY29kZXI6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsKLSAg
cmV0dXJuICJsaWJ2cHgiOwotfQotCiB2b2lkIExpYnZweFZwOEVuY29kZXI6OlNldFN0cmVhbVN0
YXRlKGJvb2wgc2VuZF9zdHJlYW0sIGludCBzdHJlYW1faWR4KSB7CiAgIGlmIChzZW5kX3N0cmVh
bSAmJiAhc2VuZF9zdHJlYW1fW3N0cmVhbV9pZHhdKSB7CiAgICAgLy8gTmVlZCBhIGtleSBmcmFt
ZSBpZiB3ZSBoYXZlIG5vdCBzZW50IHRoaXMgc3RyZWFtIGJlZm9yZS4KQEAgLTI5NCwyMSArMjc5
LDE4IEBAIHZvaWQgTGlidnB4VnA4RW5jb2Rlcjo6U2V0dXBUZW1wb3JhbExheWVycyhjb25zdCBW
aWRlb0NvZGVjJiBjb2RlYykgewogICBSVENfRENIRUNLKHRlbXBvcmFsX2xheWVyc18uZW1wdHko
KSk7CiAgIGludCBudW1fc3RyZWFtcyA9IFNpbXVsY2FzdFV0aWxpdHk6Ok51bWJlck9mU2ltdWxj
YXN0U3RyZWFtcyhjb2RlYyk7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3N0cmVhbXM7ICsr
aSkgewotICAgIFRlbXBvcmFsTGF5ZXJzVHlwZSB0eXBlOworICAgIFZwOFRlbXBvcmFsTGF5ZXJz
VHlwZSB0eXBlOwogICAgIGludCBudW1fdGVtcG9yYWxfbGF5ZXJzID0KICAgICAgICAgU2ltdWxj
YXN0VXRpbGl0eTo6TnVtYmVyT2ZUZW1wb3JhbExheWVycyhjb2RlYywgaSk7CiAgICAgaWYgKFNp
bXVsY2FzdFV0aWxpdHk6OklzQ29uZmVyZW5jZU1vZGVTY3JlZW5zaGFyZShjb2RlYykgJiYgaSA9
PSAwKSB7Ci0gICAgICB0eXBlID0gVGVtcG9yYWxMYXllcnNUeXBlOjprQml0cmF0ZUR5bmFtaWM7
CisgICAgICB0eXBlID0gVnA4VGVtcG9yYWxMYXllcnNUeXBlOjprQml0cmF0ZUR5bmFtaWM7CiAg
ICAgICAvLyBMZWdhY3kgc2NyZWVuc2hhcmUgbGF5ZXJzIHN1cHBvcnRzIG1heCAyIGxheWVycy4K
ICAgICAgIG51bV90ZW1wb3JhbF9sYXllcnMgPSBzdGQ6Om1heDxpbnQ+KDIsIG51bV90ZW1wb3Jh
bF9sYXllcnMpOwogICAgIH0gZWxzZSB7Ci0gICAgICB0eXBlID0gVGVtcG9yYWxMYXllcnNUeXBl
OjprRml4ZWRQYXR0ZXJuOworICAgICAgdHlwZSA9IFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0Zp
eGVkUGF0dGVybjsKICAgICB9CiAgICAgdGVtcG9yYWxfbGF5ZXJzXy5lbXBsYWNlX2JhY2soCi0g
ICAgICAgIFRlbXBvcmFsTGF5ZXJzOjpDcmVhdGVUZW1wb3JhbExheWVycyh0eXBlLCBudW1fdGVt
cG9yYWxfbGF5ZXJzKSk7Ci0gICAgdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXJzXy5lbXBsYWNlX2Jh
Y2soCi0gICAgICAgIFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q3JlYXRlVGVtcG9yYWxMYXllcnND
aGVja2VyKAotICAgICAgICAgICAgdHlwZSwgbnVtX3RlbXBvcmFsX2xheWVycykpOworICAgICAg
ICBDcmVhdGVWcDhUZW1wb3JhbExheWVycyh0eXBlLCBudW1fdGVtcG9yYWxfbGF5ZXJzKSk7CiAg
IH0KIH0KIApAQCAtNDUzLDEwICs0MzUsMTAgQEAgaW50IExpYnZweFZwOEVuY29kZXI6OkluaXRF
bmNvZGUoY29uc3QgVmlkZW9Db2RlYyogaW5zdCwKICAgfQogICBjcHVfc3BlZWRfZGVmYXVsdF8g
PSBjcHVfc3BlZWRfWzBdOwogICAvLyBTZXQgZW5jb2RpbmcgY29tcGxleGl0eSAoY3B1X3NwZWVk
KSBiYXNlZCBvbiByZXNvbHV0aW9uIGFuZC9vciBwbGF0Zm9ybS4KLSAgY3B1X3NwZWVkX1swXSA9
IFNldENwdVNwZWVkKGluc3QtPndpZHRoLCBpbnN0LT5oZWlnaHQpOworICBjcHVfc3BlZWRfWzBd
ID0gR2V0Q3B1U3BlZWQoaW5zdC0+d2lkdGgsIGluc3QtPmhlaWdodCk7CiAgIGZvciAoaW50IGkg
PSAxOyBpIDwgbnVtYmVyX29mX3N0cmVhbXM7ICsraSkgewogICAgIGNwdV9zcGVlZF9baV0gPQot
ICAgICAgICBTZXRDcHVTcGVlZChpbnN0LT5zaW11bGNhc3RTdHJlYW1bbnVtYmVyX29mX3N0cmVh
bXMgLSAxIC0gaV0ud2lkdGgsCisgICAgICAgIEdldENwdVNwZWVkKGluc3QtPnNpbXVsY2FzdFN0
cmVhbVtudW1iZXJfb2Zfc3RyZWFtcyAtIDEgLSBpXS53aWR0aCwKICAgICAgICAgICAgICAgICAg
ICAgaW5zdC0+c2ltdWxjYXN0U3RyZWFtW251bWJlcl9vZl9zdHJlYW1zIC0gMSAtIGldLmhlaWdo
dCk7CiAgIH0KICAgY29uZmlndXJhdGlvbnNfWzBdLmdfdyA9IGluc3QtPndpZHRoOwpAQCAtNTI4
LDcgKzUxMCw3IEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVv
Q29kZWMqIGluc3QsCiAgIHJldHVybiBJbml0QW5kU2V0Q29udHJvbFNldHRpbmdzKCk7CiB9CiAK
LWludCBMaWJ2cHhWcDhFbmNvZGVyOjpTZXRDcHVTcGVlZChpbnQgd2lkdGgsIGludCBoZWlnaHQp
IHsKK2ludCBMaWJ2cHhWcDhFbmNvZGVyOjpHZXRDcHVTcGVlZChpbnQgd2lkdGgsIGludCBoZWln
aHQpIHsKICNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX0FSTSkgfHwgZGVmaW5lZChXRUJSVENfQVJD
SF9BUk02NCkgfHwgXAogICAgIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCiAgIC8vIE9uIG1vYmls
ZSBwbGF0Zm9ybSwgdXNlIGEgbG93ZXIgc3BlZWQgc2V0dGluZyBmb3IgbG93ZXIgcmVzb2x1dGlv
bnMgZm9yCkBAIC01MzcsNiArNTE5LDExIEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpTZXRDcHVT
cGVlZChpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKICAgaWYgKG51bWJlcl9vZl9jb3Jlc18gPD0g
MykKICAgICByZXR1cm4gLTEyOwogCisgIGlmIChleHBlcmltZW50YWxfY3B1X3NwZWVkX2NvbmZp
Z19hcm1fKSB7CisgICAgcmV0dXJuIENwdVNwZWVkRXhwZXJpbWVudDo6R2V0VmFsdWUod2lkdGgg
KiBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4cGVy
aW1lbnRhbF9jcHVfc3BlZWRfY29uZmlnX2FybV8pOworICB9CisKICAgaWYgKHdpZHRoICogaGVp
Z2h0IDw9IDM1MiAqIDI4OCkKICAgICByZXR1cm4gLTg7CiAgIGVsc2UgaWYgKHdpZHRoICogaGVp
Z2h0IDw9IDY0MCAqIDQ4MCkKQEAgLTY0NCwxNCArNjMxLDYgQEAgaW50IExpYnZweFZwOEVuY29k
ZXI6OkluaXRBbmRTZXRDb250cm9sU2V0dGluZ3MoKSB7CiAgICAgbGlidnB4Xy0+Y29kZWNfY29u
dHJvbCgKICAgICAgICAgJihlbmNvZGVyc19baV0pLCBWUDhFX1NFVF9TQ1JFRU5fQ09OVEVOVF9N
T0RFLAogICAgICAgICBjb2RlY18ubW9kZSA9PSBWaWRlb0NvZGVjTW9kZTo6a1NjcmVlbnNoYXJp
bmcgPyAydSA6IDB1KTsKLSAgICAvLyBBcHBseSBib29zdCBvbiBnb2xkZW4gZnJhbWVzIChoYXMg
b25seSBlZmZlY3Qgd2hlbiByZXNpbGllbmNlIGlzIG9mZikuCi0gICAgaWYgKHVzZV9nZl9ib29z
dF8gJiYgY29uZmlndXJhdGlvbnNfWzBdLmdfZXJyb3JfcmVzaWxpZW50ID09IDApIHsKLSAgICAg
IGludCBnZl9ib29zdF9wZXJjZW50OwotICAgICAgaWYgKEdldEdmQm9vc3RQZXJjZW50YWdlRnJv
bUZpZWxkVHJpYWxHcm91cCgmZ2ZfYm9vc3RfcGVyY2VudCkpIHsKLSAgICAgICAgbGlidnB4Xy0+
Y29kZWNfY29udHJvbCgmKGVuY29kZXJzX1tpXSksIFZQOEVfU0VUX0dGX0NCUl9CT09TVF9QQ1Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZfYm9vc3RfcGVyY2VudCk7Ci0gICAg
ICB9Ci0gICAgfQogICB9CiAgIGluaXRlZF8gPSB0cnVlOwogICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX09LOwpAQCAtNzUwLDcgKzcyOSw3IEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpFbmNv
ZGUoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUsCiAgICAgfQogICB9CiAgIHZweF9lbmNfZnJhbWVf
ZmxhZ3NfdCBmbGFnc1trTWF4U2ltdWxjYXN0U3RyZWFtc107Ci0gIFRlbXBvcmFsTGF5ZXJzOjpG
cmFtZUNvbmZpZyB0bF9jb25maWdzW2tNYXhTaW11bGNhc3RTdHJlYW1zXTsKKyAgVnA4VGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZ3Nba01heFNpbXVsY2FzdFN0cmVhbXNdOwog
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVuY29kZXJzXy5zaXplKCk7ICsraSkgewogICAgIHRs
X2NvbmZpZ3NbaV0gPSB0ZW1wb3JhbF9sYXllcnNfW2ldLT5VcGRhdGVMYXllckNvbmZpZyhmcmFt
ZS50aW1lc3RhbXAoKSk7CiAgICAgaWYgKHRsX2NvbmZpZ3NbaV0uZHJvcF9mcmFtZSkgewpAQCAt
ODMxLDEwICs4MTAsMTEgQEAgaW50IExpYnZweFZwOEVuY29kZXI6OkVuY29kZShjb25zdCBWaWRl
b0ZyYW1lJiBmcmFtZSwKICAgICB9CiAgICAgaWYgKGVycm9yKQogICAgICAgcmV0dXJuIFdFQlJU
Q19WSURFT19DT0RFQ19FUlJPUjsKLSAgICB0aW1lc3RhbXBfICs9IGR1cmF0aW9uOwogICAgIC8v
IEV4YW1pbmVzIGZyYW1lIHRpbWVzdGFtcHMgb25seS4KICAgICBlcnJvciA9IEdldEVuY29kZWRQ
YXJ0aXRpb25zKGZyYW1lKTsKICAgfQorICAvLyBUT0RPKHNwcmFuZyk6IFNob3VsZG4ndCB3ZSB1
c2UgdGhlIGZyYW1lIHRpbWVzdGFtcCBpbnN0ZWFkPworICB0aW1lc3RhbXBfICs9IGR1cmF0aW9u
OwogICByZXR1cm4gZXJyb3I7CiB9CiAKQEAgLTg0NSw3ICs4MjUsNiBAQCB2b2lkIExpYnZweFZw
OEVuY29kZXI6OlBvcHVsYXRlQ29kZWNTcGVjaWZpYyhDb2RlY1NwZWNpZmljSW5mbyogY29kZWNf
c3BlY2lmaWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCB0aW1lc3RhbXApIHsKICAgYXNzZXJ0KGNvZGVjX3NwZWNpZmljICE9IE5VTEwpOwog
ICBjb2RlY19zcGVjaWZpYy0+Y29kZWNUeXBlID0ga1ZpZGVvQ29kZWNWUDg7Ci0gIGNvZGVjX3Nw
ZWNpZmljLT5jb2RlY19uYW1lID0gSW1wbGVtZW50YXRpb25OYW1lKCk7CiAgIENvZGVjU3BlY2lm
aWNJbmZvVlA4KiB2cDhJbmZvID0gJihjb2RlY19zcGVjaWZpYy0+Y29kZWNTcGVjaWZpYy5WUDgp
OwogICB2cDhJbmZvLT5rZXlJZHggPSBrTm9LZXlJZHg7ICAvLyBUT0RPKGhsdW5kaW4pIHBvcHVs
YXRlIHRoaXMKICAgdnA4SW5mby0+bm9uUmVmZXJlbmNlID0gKHBrdC5kYXRhLmZyYW1lLmZsYWdz
ICYgVlBYX0ZSQU1FX0lTX0RST1BQQUJMRSkgIT0gMDsKQEAgLTg2MywxNCArODQyLDkgQEAgaW50
IExpYnZweFZwOEVuY29kZXI6OkdldEVuY29kZWRQYXJ0aXRpb25zKGNvbnN0IFZpZGVvRnJhbWUm
IGlucHV0X2ltYWdlKSB7CiAgIGZvciAoc2l6ZV90IGVuY29kZXJfaWR4ID0gMDsgZW5jb2Rlcl9p
ZHggPCBlbmNvZGVyc18uc2l6ZSgpOwogICAgICAgICsrZW5jb2Rlcl9pZHgsIC0tc3RyZWFtX2lk
eCkgewogICAgIHZweF9jb2RlY19pdGVyX3QgaXRlciA9IE5VTEw7Ci0gICAgaW50IHBhcnRfaWR4
ID0gMDsKICAgICBlbmNvZGVkX2ltYWdlc19bZW5jb2Rlcl9pZHhdLl9sZW5ndGggPSAwOwogICAg
IGVuY29kZWRfaW1hZ2VzX1tlbmNvZGVyX2lkeF0uX2ZyYW1lVHlwZSA9IGtWaWRlb0ZyYW1lRGVs
dGE7Ci0gICAgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciBmcmFnX2luZm87Ci0gICAgLy8ga1Rva2Vu
UGFydGl0aW9ucyBpcyBudW1iZXIgb2YgYml0cyB1c2VkLgotICAgIGZyYWdfaW5mby5WZXJpZnlB
bmRBbGxvY2F0ZUZyYWdtZW50YXRpb25IZWFkZXIoKDEgPDwga1Rva2VuUGFydGl0aW9ucykgKyAx
KTsKICAgICBDb2RlY1NwZWNpZmljSW5mbyBjb2RlY19zcGVjaWZpYzsKLSAgICBib29sIGlzX2tl
eWZyYW1lID0gZmFsc2U7CiAgICAgY29uc3QgdnB4X2NvZGVjX2N4X3BrdF90KiBwa3QgPSBOVUxM
OwogICAgIHdoaWxlICgocGt0ID0gbGlidnB4Xy0+Y29kZWNfZ2V0X2N4X2RhdGEoJmVuY29kZXJz
X1tlbmNvZGVyX2lkeF0sICZpdGVyKSkgIT0KICAgICAgICAgICAgTlVMTCkgewpAQCAtODg3LDEz
ICs4NjEsOCBAQCBpbnQgTGlidnB4VnA4RW5jb2Rlcjo6R2V0RW5jb2RlZFBhcnRpdGlvbnMoY29u
c3QgVmlkZW9GcmFtZSYgaW5wdXRfaW1hZ2UpIHsKICAgICAgICAgICB9CiAgICAgICAgICAgbWVt
Y3B5KCZlbmNvZGVkX2ltYWdlc19bZW5jb2Rlcl9pZHhdLl9idWZmZXJbbGVuZ3RoXSwKICAgICAg
ICAgICAgICAgICAgcGt0LT5kYXRhLmZyYW1lLmJ1ZiwgcGt0LT5kYXRhLmZyYW1lLnN6KTsKLSAg
ICAgICAgICBmcmFnX2luZm8uZnJhZ21lbnRhdGlvbk9mZnNldFtwYXJ0X2lkeF0gPSBsZW5ndGg7
Ci0gICAgICAgICAgZnJhZ19pbmZvLmZyYWdtZW50YXRpb25MZW5ndGhbcGFydF9pZHhdID0gcGt0
LT5kYXRhLmZyYW1lLnN6OwotICAgICAgICAgIGZyYWdfaW5mby5mcmFnbWVudGF0aW9uUGxUeXBl
W3BhcnRfaWR4XSA9IDA7ICAvLyBub3Qga25vd24gaGVyZQotICAgICAgICAgIGZyYWdfaW5mby5m
cmFnbWVudGF0aW9uVGltZURpZmZbcGFydF9pZHhdID0gMDsKICAgICAgICAgICBlbmNvZGVkX2lt
YWdlc19bZW5jb2Rlcl9pZHhdLl9sZW5ndGggKz0gcGt0LT5kYXRhLmZyYW1lLnN6OwogICAgICAg
ICAgIGFzc2VydChsZW5ndGggPD0gZW5jb2RlZF9pbWFnZXNfW2VuY29kZXJfaWR4XS5fc2l6ZSk7
Ci0gICAgICAgICAgKytwYXJ0X2lkeDsKICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBkZWZhdWx0OgpAQCAtOTA0LDcgKzg3Myw2IEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpH
ZXRFbmNvZGVkUGFydGl0aW9ucyhjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9pbWFnZSkgewogICAg
ICAgICAvLyBjaGVjayBpZiBlbmNvZGVkIGZyYW1lIGlzIGEga2V5IGZyYW1lCiAgICAgICAgIGlm
IChwa3QtPmRhdGEuZnJhbWUuZmxhZ3MgJiBWUFhfRlJBTUVfSVNfS0VZKSB7CiAgICAgICAgICAg
ZW5jb2RlZF9pbWFnZXNfW2VuY29kZXJfaWR4XS5fZnJhbWVUeXBlID0ga1ZpZGVvRnJhbWVLZXk7
Ci0gICAgICAgICAgaXNfa2V5ZnJhbWUgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGVuY29k
ZWRfaW1hZ2VzX1tlbmNvZGVyX2lkeF0uU2V0U3BhdGlhbEluZGV4KHN0cmVhbV9pZHgpOwogICAg
ICAgICBQb3B1bGF0ZUNvZGVjU3BlY2lmaWMoJmNvZGVjX3NwZWNpZmljLCAqcGt0LCBzdHJlYW1f
aWR4LCBlbmNvZGVyX2lkeCwKQEAgLTkzNSw3ICs5MDMsNyBAQCBpbnQgTGlidnB4VnA4RW5jb2Rl
cjo6R2V0RW5jb2RlZFBhcnRpdGlvbnMoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRfaW1hZ2UpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXBfMTI4KTsKICAgICAgICAgZW5jb2Rl
ZF9pbWFnZXNfW2VuY29kZXJfaWR4XS5xcF8gPSBxcF8xMjg7CiAgICAgICAgIGVuY29kZWRfY29t
cGxldGVfY2FsbGJhY2tfLT5PbkVuY29kZWRJbWFnZShlbmNvZGVkX2ltYWdlc19bZW5jb2Rlcl9p
ZHhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmNvZGVjX3NwZWNpZmljLCAmZnJhZ19pbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZjb2RlY19zcGVjaWZpYywgbnVsbHB0cik7CiAgICAg
ICB9IGVsc2UgaWYgKCF0ZW1wb3JhbF9sYXllcnNfW3N0cmVhbV9pZHhdCiAgICAgICAgICAgICAg
ICAgICAgICAgLT5TdXBwb3J0c0VuY29kZXJGcmFtZURyb3BwaW5nKCkpIHsKICAgICAgICAgcmVz
dWx0ID0gV0VCUlRDX1ZJREVPX0NPREVDX1RBUkdFVF9CSVRSQVRFX09WRVJTSE9PVDsKQEAgLTk1
MCwxNyArOTE4LDIxIEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpHZXRFbmNvZGVkUGFydGl0aW9u
cyhjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9pbWFnZSkgewogICByZXR1cm4gcmVzdWx0OwogfQog
Ci1WaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBMaWJ2cHhWcDhFbmNvZGVyOjpHZXRTY2Fs
aW5nU2V0dGluZ3MoKSBjb25zdCB7CitWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIExpYnZweFZw
OEVuY29kZXI6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICBFbmNvZGVySW5mbyBpbmZvOwor
ICBpbmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBmYWxzZTsKKyAgaW5mby5pbXBsZW1lbnRh
dGlvbl9uYW1lID0gImxpYnZweCI7CisgIGluZm8uaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVy
ID0gdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXJfOworCiAgIGNvbnN0IGJvb2wgZW5hYmxlX3NjYWxp
bmcgPSBlbmNvZGVyc18uc2l6ZSgpID09IDEgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb25zX1swXS5yY19kcm9wZnJhbWVfdGhyZXNoID4gMCAmJgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNfLlZQOCgpLmF1dG9tYXRpY1Jlc2l6ZU9uOwot
ICByZXR1cm4gZW5hYmxlX3NjYWxpbmcgPyBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyhr
TG93VnA4UXBUaHJlc2hvbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtIaWdoVnA4UXBUaHJlc2hvbGQpCi0gICAgICAgICAgICAgICAg
ICAgICAgICA6IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjprT2ZmOwotfQorICBpbmZv
LnNjYWxpbmdfc2V0dGluZ3MgPSBlbmFibGVfc2NhbGluZworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncygKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtMb3dWcDhRcFRocmVzaG9sZCwga0hpZ2hWcDhRcFRocmVz
aG9sZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogVmlkZW9FbmNvZGVyOjpTY2Fs
aW5nU2V0dGluZ3M6OmtPZmY7CiAKLWludCBMaWJ2cHhWcDhFbmNvZGVyOjpTZXRDaGFubmVsUGFy
YW1ldGVycyh1aW50MzJfdCBwYWNrZXRMb3NzLCBpbnQ2NF90IHJ0dCkgewotICByZXR1cm4gV0VC
UlRDX1ZJREVPX0NPREVDX09LOworICByZXR1cm4gaW5mbzsKIH0KIAogaW50IExpYnZweFZwOEVu
Y29kZXI6OlJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaygKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDgvbGlidnB4X3ZwOF9lbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZw
eF92cDhfZW5jb2Rlci5oCmluZGV4IDNjMjA2NzJkZjJjZDRlNjA0MWEwZmI1Mzg5YTg0MjVlNDI1
YjZhMzEuLmRmMmRiY2VlNTllNjYzYWMyN2QzYTdiMTFlMmQxMWFkNGY0OTllOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9lbmNvZGVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC9saWJ2cHhfdnA4X2VuY29kZXIuaApAQCAtMTQsMTUgKzE0LDE1IEBACiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS92aWRlby9lbmNv
ZGVkX2ltYWdlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVk
ZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgi
ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVk
ZS92aWRlb19mcmFtZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDgvaW5jbHVkZS90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKLSNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X2ludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNf
aW50ZXJmYWNlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVkX2V4
cGVyaW1lbnQuaCIKIAogI2luY2x1ZGUgInZweC92cDhjeC5oIgogI2luY2x1ZGUgInZweC92cHhf
ZW5jb2Rlci5oIgpAQCAtNDcsMjMgKzQ3LDE5IEBAIGNsYXNzIExpYnZweFZwOEVuY29kZXIgOiBw
dWJsaWMgVmlkZW9FbmNvZGVyIHsKIAogICBpbnQgUmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxi
YWNrKEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAKLSAgaW50IFNl
dENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3Zl
cnJpZGU7Ci0KICAgaW50IFNldFJhdGVBbGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9j
YXRpb24mIGJpdHJhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBuZXdfZnJh
bWVyYXRlKSBvdmVycmlkZTsKIAotICBTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdz
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgc3RhdGljIHZweF9lbmNfZnJhbWVfZmxhZ3NfdCBFbmNvZGVGbGFncygKLSAg
ICAgIGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgcmVmZXJlbmNlcyk7CisgICAg
ICBjb25zdCBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcmIHJlZmVyZW5jZXMpOwogCiAg
cHJpdmF0ZToKICAgdm9pZCBTZXR1cFRlbXBvcmFsTGF5ZXJzKGNvbnN0IFZpZGVvQ29kZWMmIGNv
ZGVjKTsKIAotICAvLyBTZXQgdGhlIGNwdV9zcGVlZCBzZXR0aW5nIGZvciBlbmNvZGVyIGJhc2Vk
IG9uIHJlc29sdXRpb24gYW5kL29yIHBsYXRmb3JtLgotICBpbnQgU2V0Q3B1U3BlZWQoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKKyAgLy8gR2V0IHRoZSBjcHVfc3BlZWQgc2V0dGluZyBmb3IgZW5j
b2RlciBiYXNlZCBvbiByZXNvbHV0aW9uIGFuZC9vciBwbGF0Zm9ybS4KKyAgaW50IEdldENwdVNw
ZWVkKGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKICAgLy8gRGV0ZXJtaW5lIG51bWJlciBvZiBl
bmNvZGVyIHRocmVhZHMgdG8gdXNlLgogICBpbnQgTnVtYmVyT2ZUaHJlYWRzKGludCB3aWR0aCwg
aW50IGhlaWdodCwgaW50IG51bWJlcl9vZl9jb3Jlcyk7CkBAIC04Nyw3ICs4MywxMCBAQCBjbGFz
cyBMaWJ2cHhWcDhFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgIHVpbnQzMl90IEZy
YW1lRHJvcFRocmVzaG9sZChzaXplX3Qgc3BhdGlhbF9pZHgpIGNvbnN0OwogCiAgIGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxMaWJ2cHhJbnRlcmZhY2U+IGxpYnZweF87Ci0gIGNvbnN0IGJvb2wgdXNl
X2dmX2Jvb3N0XzsKKworICBjb25zdCBhYnNsOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxDcHVTcGVl
ZEV4cGVyaW1lbnQ6OkNvbmZpZz4+CisgICAgICBleHBlcmltZW50YWxfY3B1X3NwZWVkX2NvbmZp
Z19hcm1fOworICBjb25zdCBib29sIHRydXN0ZWRfcmF0ZV9jb250cm9sbGVyXzsKIAogICBFbmNv
ZGVkSW1hZ2VDYWxsYmFjayogZW5jb2RlZF9jb21wbGV0ZV9jYWxsYmFja187CiAgIFZpZGVvQ29k
ZWMgY29kZWNfOwpAQCAtOTcsOCArOTYsNyBAQCBjbGFzcyBMaWJ2cHhWcDhFbmNvZGVyIDogcHVi
bGljIFZpZGVvRW5jb2RlciB7CiAgIGludCBjcHVfc3BlZWRfZGVmYXVsdF87CiAgIGludCBudW1i
ZXJfb2ZfY29yZXNfOwogICB1aW50MzJfdCByY19tYXhfaW50cmFfdGFyZ2V0XzsKLSAgc3RkOjp2
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRlbXBvcmFsTGF5ZXJzPj4gdGVtcG9yYWxfbGF5ZXJzXzsK
LSAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcj4+IHRl
bXBvcmFsX2xheWVyc19jaGVja2Vyc187CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxW
cDhUZW1wb3JhbExheWVycz4+IHRlbXBvcmFsX2xheWVyc187CiAgIHN0ZDo6dmVjdG9yPGJvb2w+
IGtleV9mcmFtZV9yZXF1ZXN0XzsKICAgc3RkOjp2ZWN0b3I8Ym9vbD4gc2VuZF9zdHJlYW1fOwog
ICBzdGQ6OnZlY3RvcjxpbnQ+IGNwdV9zcGVlZF87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA4L2xpYnZweF92cDhfc2ltdWxjYXN0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZw
eF92cDhfc2ltdWxjYXN0X3Rlc3QuY2MKaW5kZXggNWY5NzRkNjQzYmIwZWUzMmNkNmY3NmRiZTAw
YWUzYjE5ZjE1NWQxZS4uZDQ5M2UyYWNlYjY0ODc3MWZhOTVlZDVlMjNjYzIwOGUzMGFiMmMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X3NpbXVsY2FzdF90ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9zaW11bGNhc3RfdGVzdC5jYwpAQCAt
MTMsOSArMTMsOSBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUg
ImFwaS90ZXN0L2NyZWF0ZV9zaW11bGNhc3RfdGVzdF9maXh0dXJlLmgiCiAjaW5jbHVkZSAiYXBp
L3Rlc3Qvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oIgorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVv
L2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS90ZXN0L3Zp
ZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1
bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25f
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVf
bGF5ZXJzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuY2MKaW5kZXgg
NzZjNDM4MmEyMWY4ZGZlZWNlN2VlMjZjYzBmZjc4ZDMxZTJmZWQ0Ni4uZWRlMjFlNTU0ZDcyNjQ4
YTk5MDA1ZThhNzdkOWNiZGE5ZjZhNzI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9z
Y3JlZW5zaGFyZV9sYXllcnMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9s
YXllcnMuY2MKQEAgLTUzLDcgKzUzLDcgQEAgU2NyZWVuc2hhcmVMYXllcnM6OlNjcmVlbnNoYXJl
TGF5ZXJzKGludCBudW1fdGVtcG9yYWxfbGF5ZXJzLCBDbG9jayogY2xvY2spCiAgICAgICBlbmNv
ZGVfZnJhbWVyYXRlXygxMDAwLjBmLCAxMDAwLjBmKSwgIC8vIDEgc2Vjb25kIHdpbmRvdywgc2Vj
b25kIHNjYWxlLgogICAgICAgYml0cmF0ZV91cGRhdGVkXyhmYWxzZSksCiAgICAgICBjaGVja2Vy
XyhUZW1wb3JhbExheWVyc0NoZWNrZXI6OkNyZWF0ZVRlbXBvcmFsTGF5ZXJzQ2hlY2tlcigKLSAg
ICAgICAgICBUZW1wb3JhbExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1pYywKKyAgICAgICAgICBW
cDhUZW1wb3JhbExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1pYywKICAgICAgICAgICBudW1fdGVt
cG9yYWxfbGF5ZXJzKSkgewogICBSVENfQ0hFQ0tfR1QobnVtYmVyX29mX3RlbXBvcmFsX2xheWVy
c18sIDApOwogICBSVENfQ0hFQ0tfTEUobnVtYmVyX29mX3RlbXBvcmFsX2xheWVyc18sIGtNYXhO
dW1UZW1wb3JhbExheWVycyk7CkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgU2NyZWVuc2hhcmVMYXll
cnM6OlN1cHBvcnRzRW5jb2RlckZyYW1lRHJvcHBpbmcoKSBjb25zdCB7CiAgIHJldHVybiBmYWxz
ZTsKIH0KIAotVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFNjcmVlbnNoYXJlTGF5ZXJzOjpV
cGRhdGVMYXllckNvbmZpZygKK1ZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyBTY3JlZW5z
aGFyZUxheWVyczo6VXBkYXRlTGF5ZXJDb25maWcoCiAgICAgdWludDMyX3QgdGltZXN0YW1wKSB7
CiAgIGF1dG8gaXQgPSBwZW5kaW5nX2ZyYW1lX2NvbmZpZ3NfLmZpbmQodGltZXN0YW1wKTsKICAg
aWYgKGl0ICE9IHBlbmRpbmdfZnJhbWVfY29uZmlnc18uZW5kKCkpIHsKQEAgLTc5LDcgKzc5LDcg
QEAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFNjcmVlbnNoYXJlTGF5ZXJzOjpVcGRhdGVM
YXllckNvbmZpZygKICAgaWYgKG51bWJlcl9vZl90ZW1wb3JhbF9sYXllcnNfIDw9IDEpIHsKICAg
ICAvLyBObyBmbGFncyBuZWVkZWQgZm9yIDEgbGF5ZXIgc2NyZWVuc2hhcmUuCiAgICAgLy8gVE9E
TyhwYm9zKTogQ29uc2lkZXIgdXBkYXRpbmcgb25seSBsYXN0LCBhbmQgbm90IGFsbCBidWZmZXJz
LgotICAgIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcoCisgICAgVnA4VGVt
cG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZygKICAgICAgICAga1JlZmVyZW5jZUFu
ZFVwZGF0ZSwga1JlZmVyZW5jZUFuZFVwZGF0ZSwga1JlZmVyZW5jZUFuZFVwZGF0ZSk7CiAgICAg
cGVuZGluZ19mcmFtZV9jb25maWdzX1t0aW1lc3RhbXBdID0gdGxfY29uZmlnOwogICAgIHJldHVy
biB0bF9jb25maWc7CkBAIC0xMDAsNyArMTAwLDcgQEAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29u
ZmlnIFNjcmVlbnNoYXJlTGF5ZXJzOjpVcGRhdGVMYXllckNvbmZpZygKICAgICAvLyBhdmVyYWdp
bmcgd2luZG93LCBvciBpZiBmcmFtZSBpbnRlcnZhbCBpcyBiZWxvdyA5MCUgb2YgZGVzaXJlZCB2
YWx1ZSwKICAgICAvLyBkcm9wIGZyYW1lLgogICAgIGlmIChlbmNvZGVfZnJhbWVyYXRlXy5SYXRl
KG5vd19tcykudmFsdWVfb3IoMCkgPiAqdGFyZ2V0X2ZyYW1lcmF0ZV8pCi0gICAgICByZXR1cm4g
VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnKGtOb25lLCBrTm9uZSwga05vbmUpOworICAgICAg
cmV0dXJuIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrTm9uZSwga05vbmUsIGtOb25l
KTsKIAogICAgIC8vIFByaW1hcmlseSBjaGVjayBpZiBmcmFtZSBpbnRlcnZhbCBpcyB0b28gc2hv
cnQgdXNpbmcgZnJhbWUgdGltZXN0YW1wcywKICAgICAvLyBhcyBpZiB0aGV5IGFyZSBjb3JyZWN0
IHRoZXkgd29uJ3QgYmUgYWZmZWN0ZWQgYnkgcXVldWluZyBpbiB3ZWJydGMuCkBAIC0xMDgsNyAr
MTA4LDcgQEAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFNjcmVlbnNoYXJlTGF5ZXJzOjpV
cGRhdGVMYXllckNvbmZpZygKICAgICAgICAga09uZVNlY29uZDkwS2h6IC8gKnRhcmdldF9mcmFt
ZXJhdGVfOwogICAgIGlmIChsYXN0X3RpbWVzdGFtcF8gIT0gLTEgJiYgdHNfZGlmZiA+IDApIHsK
ICAgICAgIGlmICh0c19kaWZmIDwgODUgKiBleHBlY3RlZF9mcmFtZV9pbnRlcnZhbF85MGtoeiAv
IDEwMCkgewotICAgICAgICByZXR1cm4gVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnKGtOb25l
LCBrTm9uZSwga05vbmUpOworICAgICAgICByZXR1cm4gVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1l
Q29uZmlnKGtOb25lLCBrTm9uZSwga05vbmUpOwogICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAg
ICAvLyBUaW1lc3RhbXBzIGxvb2tzIG9mZiwgdXNlIHJlYWx0aW1lIGNsb2NrIGhlcmUgaW5zdGVh
ZC4KQEAgLTExNiw3ICsxMTYsNyBAQCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgU2NyZWVu
c2hhcmVMYXllcnM6OlVwZGF0ZUxheWVyQ29uZmlnKAogICAgICAgaWYgKGxhc3RfZnJhbWVfdGlt
ZV9tc18gIT0gLTEgJiYKICAgICAgICAgICBub3dfbXMgLSBsYXN0X2ZyYW1lX3RpbWVfbXNfIDwK
ICAgICAgICAgICAgICAgKDg1ICogZXhwZWN0ZWRfZnJhbWVfaW50ZXJ2YWxfbXMpIC8gMTAwKSB7
Ci0gICAgICAgIHJldHVybiBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa05vbmUsIGtOb25l
LCBrTm9uZSk7CisgICAgICAgIHJldHVybiBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWco
a05vbmUsIGtOb25lLCBrTm9uZSk7CiAgICAgICB9CiAgICAgfQogICB9CkBAIC0xODIsMzAgKzE4
MiwzMCBAQCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgU2NyZWVuc2hhcmVMYXllcnM6OlVw
ZGF0ZUxheWVyQ29uZmlnKAogICAgICAgUlRDX05PVFJFQUNIRUQoKTsKICAgfQogCi0gIFRlbXBv
cmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWc7CisgIFZwOFRlbXBvcmFsTGF5ZXJzOjpG
cmFtZUNvbmZpZyB0bF9jb25maWc7CiAgIC8vIFRPRE8ocGJvcyk6IENvbnNpZGVyIHJlZmVyZW5j
aW5nIGJ1dCBub3QgdXBkYXRpbmcgdGhlICdhbHQnIGJ1ZmZlciBmb3IgYWxsCiAgIC8vIGxheWVy
cy4KICAgc3dpdGNoIChsYXllcl9zdGF0ZSkgewogICAgIGNhc2UgVGVtcG9yYWxMYXllclN0YXRl
OjprRHJvcDoKLSAgICAgIHRsX2NvbmZpZyA9IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhr
Tm9uZSwga05vbmUsIGtOb25lKTsKKyAgICAgIHRsX2NvbmZpZyA9IFZwOFRlbXBvcmFsTGF5ZXJz
OjpGcmFtZUNvbmZpZyhrTm9uZSwga05vbmUsIGtOb25lKTsKICAgICAgIGJyZWFrOwogICAgIGNh
c2UgVGVtcG9yYWxMYXllclN0YXRlOjprVGwwOgogICAgICAgLy8gVEwwIG9ubHkgcmVmZXJlbmNl
cyBhbmQgdXBkYXRlcyAnbGFzdCcuCiAgICAgICB0bF9jb25maWcgPQotICAgICAgICAgIFRlbXBv
cmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrUmVmZXJlbmNlQW5kVXBkYXRlLCBrTm9uZSwga05vbmUp
OworICAgICAgICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrUmVmZXJlbmNlQW5k
VXBkYXRlLCBrTm9uZSwga05vbmUpOwogICAgICAgdGxfY29uZmlnLnBhY2tldGl6ZXJfdGVtcG9y
YWxfaWR4ID0gMDsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGVtcG9yYWxMYXllclN0YXRlOjpr
VGwxOgogICAgICAgLy8gVEwxIHJlZmVyZW5jZXMgYm90aCAnbGFzdCcgYW5kICdnb2xkZW4nIGJ1
dCBvbmx5IHVwZGF0ZXMgJ2dvbGRlbicuCi0gICAgICB0bF9jb25maWcgPQotICAgICAgICAgIFRl
bXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrUmVmZXJlbmNlLCBrUmVmZXJlbmNlQW5kVXBkYXRl
LCBrTm9uZSk7CisgICAgICB0bF9jb25maWcgPSBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25m
aWcoa1JlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrUmVmZXJlbmNlQW5kVXBkYXRlLCBrTm9uZSk7CiAgICAgICB0bF9jb25maWcucGFj
a2V0aXplcl90ZW1wb3JhbF9pZHggPSAxOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZW1wb3Jh
bExheWVyU3RhdGU6OmtUbDFTeW5jOgogICAgICAgLy8gUHJlZGljdCBmcm9tIG9ubHkgVEwwIHRv
IGFsbG93IHBhcnRpY2lwYW50cyB0byBzd2l0Y2ggdG8gdGhlIGhpZ2gKICAgICAgIC8vIGJpdHJh
dGUgc3RyZWFtLiBVcGRhdGVzICdnb2xkZW4nIHNvIHRoYXQgVEwxIGNhbiBjb250aW51ZSB0byBy
ZWZlciB0bwogICAgICAgLy8gYW5kIHVwZGF0ZSAnZ29sZGVuJyBmcm9tIHRoaXMgcG9pbnQgb24u
Ci0gICAgICB0bF9jb25maWcgPSBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa1JlZmVyZW5j
ZSwga1VwZGF0ZSwga05vbmUpOworICAgICAgdGxfY29uZmlnID0gVnA4VGVtcG9yYWxMYXllcnM6
OkZyYW1lQ29uZmlnKGtSZWZlcmVuY2UsIGtVcGRhdGUsIGtOb25lKTsKICAgICAgIHRsX2NvbmZp
Zy5wYWNrZXRpemVyX3RlbXBvcmFsX2lkeCA9IDE7CiAgICAgICBicmVhazsKICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmgKaW5kZXggNjE5M2JlMzYwMDEwZGY2NmI3YjRmMjgx
ZjJhNGM2YjQ5MDhhYTIzOC4uMDM1OWIyYzMzZmM1OTBjYzBmY2MxY2VjYTQ0MjVlNTU3NmI1N2Q0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVycy5oCkBAIC0xMyw4ICsxMyw4IEBA
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS92
aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5oIgot
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVt
cG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9m
cmFtZV9kcm9wcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZV9zdGF0aXN0aWNzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCkBAIC0yNCw3ICsyNCw3IEBAIG5hbWVzcGFj
ZSB3ZWJydGMgewogc3RydWN0IENvZGVjU3BlY2lmaWNJbmZvVlA4OwogY2xhc3MgQ2xvY2s7CiAK
LWNsYXNzIFNjcmVlbnNoYXJlTGF5ZXJzIDogcHVibGljIFRlbXBvcmFsTGF5ZXJzIHsKK2NsYXNz
IFNjcmVlbnNoYXJlTGF5ZXJzIDogcHVibGljIFZwOFRlbXBvcmFsTGF5ZXJzIHsKICBwdWJsaWM6
CiAgIHN0YXRpYyBjb25zdCBkb3VibGUga01heFRMMEZwc1JlZHVjdGlvbjsKICAgc3RhdGljIGNv
bnN0IGRvdWJsZSBrQWNjZXB0YWJsZVRhcmdldE92ZXJzaG9vdDsKQEAgLTM4LDcgKzM4LDcgQEAg
Y2xhc3MgU2NyZWVuc2hhcmVMYXllcnMgOiBwdWJsaWMgVGVtcG9yYWxMYXllcnMgewogCiAgIC8v
IFJldHVybnMgdGhlIHJlY29tbWVuZGVkIFZQOCBlbmNvZGUgZmxhZ3MgbmVlZGVkLiBNYXkgcmVm
cmVzaCB0aGUgZGVjb2RlcgogICAvLyBhbmQvb3IgdXBkYXRlIHRoZSByZWZlcmVuY2UgYnVmZmVy
cy4KLSAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFVwZGF0ZUxheWVyQ29uZmlnKAorICBW
cDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgVXBkYXRlTGF5ZXJDb25maWcoCiAgICAgICB1
aW50MzJfdCBydHBfdGltZXN0YW1wKSBvdmVycmlkZTsKIAogICAvLyBOZXcgdGFyZ2V0IGJpdHJh
dGUsIHBlciB0ZW1wb3JhbCBsYXllci4KQEAgLTc0LDcgKzc0LDcgQEAgY2xhc3MgU2NyZWVuc2hh
cmVMYXllcnMgOiBwdWJsaWMgVGVtcG9yYWxMYXllcnMgewogICBpbnQgbWF4X3FwXzsKICAgdWlu
dDMyX3QgbWF4X2RlYnRfYnl0ZXNfOwogCi0gIHN0ZDo6bWFwPHVpbnQzMl90LCBUZW1wb3JhbExh
eWVyczo6RnJhbWVDb25maWc+IHBlbmRpbmdfZnJhbWVfY29uZmlnc187CisgIHN0ZDo6bWFwPHVp
bnQzMl90LCBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc+IHBlbmRpbmdfZnJhbWVfY29u
Zmlnc187CiAKICAgLy8gQ29uZmlndXJlZCBtYXggZnJhbWVyYXRlLgogICBhYnNsOjpvcHRpb25h
bDx1aW50MzJfdD4gdGFyZ2V0X2ZyYW1lcmF0ZV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA4L3NjcmVlbnNoYXJlX2xheWVyc191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2Ny
ZWVuc2hhcmVfbGF5ZXJzX3VuaXR0ZXN0LmNjCmluZGV4IDRhZTdlZDVlN2U0MjViNmFlNWM3MDhk
YjQwNGRiY2MwYzUzZjRjZjQuLjQ3NGU0ZjgyNWI1OTdlZTEwZTRkOTY0NDE1ZmE3YmM1ZjY3OWM5
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzX3VuaXR0ZXN0
LmNjCkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNzIFNjcmVlbnNoYXJlTGF5ZXJUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CiAgICAgcmV0dXJuIGZsYWdzOwogICB9CiAKLSAgVGVtcG9yYWxM
YXllcnM6OkZyYW1lQ29uZmlnIFVwZGF0ZUxheWVyQ29uZmlnKHVpbnQzMl90IHRpbWVzdGFtcCkg
eworICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgVXBkYXRlTGF5ZXJDb25maWcodWlu
dDMyX3QgdGltZXN0YW1wKSB7CiAgICAgaW50NjRfdCB0aW1lc3RhbXBfbXMgPSB0aW1lc3RhbXAg
LyA5MDsKICAgICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHModGltZXN0YW1wX21zIC0g
Y2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKICAgICByZXR1cm4gbGF5ZXJzXy0+VXBkYXRl
TGF5ZXJDb25maWcodGltZXN0YW1wKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBjbGFzcyBTY3JlZW5z
aGFyZUxheWVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICBzdGQ6OnVuaXF1ZV9w
dHI8U2NyZWVuc2hhcmVMYXllcnM+IGxheWVyc187CiAKICAgdWludDMyX3QgdGltZXN0YW1wXzsK
LSAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZ187CisgIFZwOFRlbXBvcmFs
TGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWdfOwogICBWcDhFbmNvZGVyQ29uZmlnIGNmZ187
CiAgIGJvb2wgY29uZmlnX3VwZGF0ZWRfOwogICBDb2RlY1NwZWNpZmljSW5mb1ZQOCB2cDhfaW5m
b187CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3RlbXBvcmFsX2xheWVycy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnMuaAppbmRleCA3ODhkNjlhMjdiYjMxNzRlNjIy
YWYwNDUwODA5Y2UzODUxYzc1ODgwLi45NTc2ZmIyN2JlYWE2MzE3YzExOTQ1ZTEzZGEwOGI0Mzcw
NzA3OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3RlbXBvcmFsX2xheWVycy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzLmgKQEAgLTEyLDYgKzEyLDYgQEAK
ICNkZWZpbmUgTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOF9URU1QT1JBTF9MQVlFUlNf
SF8KIAogLy8gVE9ETyh3ZWJydGM6OTAxMikgUmVtb3ZlIHRoaXMgZmlsZSB3aGVuIGRvd25zdHJl
YW0gcHJvamVjdHMgaGF2ZSB1cGRhdGVkLgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCisjaW5jbHVkZSAiYXBp
L3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAKICNlbmRpZiAgLy8gTU9EVUxF
U19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L3RlbXBvcmFsX2xheWVyc19jaGVja2VyLmNjCmluZGV4IGMwYTczNmE0ZWRkYTlmZDk0
YzAxYzA3YTJmNTY0YWZlMTllMDcwYWQuLjRkYmE3YTM2NmE5ZDkyOGZiZTQwOGMwYzQyZmFhNzg1
NGUzZTUyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzX2No
ZWNrZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5j
YwpAQCAtMTcsMTMgKzE3LDEzIEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogc3RkOjp1bmlxdWVf
cHRyPFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcj4KLVRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q3JlYXRl
VGVtcG9yYWxMYXllcnNDaGVja2VyKFRlbXBvcmFsTGF5ZXJzVHlwZSB0eXBlLAorVGVtcG9yYWxM
YXllcnNDaGVja2VyOjpDcmVhdGVUZW1wb3JhbExheWVyc0NoZWNrZXIoVnA4VGVtcG9yYWxMYXll
cnNUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbnVtX3RlbXBvcmFsX2xheWVycykgewogICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybjoKKyAgICBjYXNlIFZwOFRl
bXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybjoKICAgICAgIHJldHVybiBhYnNsOjptYWtl
X3VuaXF1ZTxEZWZhdWx0VGVtcG9yYWxMYXllcnNDaGVja2VyPigKICAgICAgICAgICBudW1fdGVt
cG9yYWxfbGF5ZXJzKTsKLSAgICBjYXNlIFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0JpdHJhdGVEeW5h
bWljOgorICAgIGNhc2UgVnA4VGVtcG9yYWxMYXllcnNUeXBlOjprQml0cmF0ZUR5bmFtaWM6CiAg
ICAgICAvLyBDb25mZXJlbmNlIG1vZGUgdGVtcG9yYWwgbGF5ZXJpbmcgZm9yIHNjcmVlbiBjb250
ZW50IGluIGJhc2Ugc3RyZWFtLgogICAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFRlbXBv
cmFsTGF5ZXJzQ2hlY2tlcj4obnVtX3RlbXBvcmFsX2xheWVycyk7CiAgIH0KQEAgLTQwLDEwICs0
MCwxMCBAQCBib29sIFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q2hlY2tBbmRVcGRhdGVCdWZmZXJT
dGF0ZSgKICAgICBib29sKiBuZWVkX3N5bmMsCiAgICAgYm9vbCBmcmFtZV9pc19rZXlmcmFtZSwK
ICAgICB1aW50OF90IHRlbXBvcmFsX2xheWVyLAotICAgIHdlYnJ0Yzo6VGVtcG9yYWxMYXllcnM6
OkJ1ZmZlckZsYWdzIGZsYWdzLAorICAgIHdlYnJ0Yzo6VnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZl
ckZsYWdzIGZsYWdzLAogICAgIHVpbnQzMl90IHNlcXVlbmNlX251bWJlciwKICAgICB1aW50MzJf
dCogbG93ZXN0X3NlcXVlbmNlX3JlZmVyZW5jZWQpIHsKLSAgaWYgKGZsYWdzICYgVGVtcG9yYWxM
YXllcnM6OkJ1ZmZlckZsYWdzOjprUmVmZXJlbmNlKSB7CisgIGlmIChmbGFncyAmIFZwOFRlbXBv
cmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1JlZmVyZW5jZSkgewogICAgIGlmIChzdGF0ZS0+dGVt
cG9yYWxfbGF5ZXIgPiAwICYmICFzdGF0ZS0+aXNfa2V5ZnJhbWUpIHsKICAgICAgICpuZWVkX3N5
bmMgPSBmYWxzZTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgVGVtcG9yYWxMYXllcnND
aGVja2VyOjpDaGVja0FuZFVwZGF0ZUJ1ZmZlclN0YXRlKAogICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgfQotICBpZiAoKGZsYWdzICYgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjpr
VXBkYXRlKSkgeworICBpZiAoKGZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdz
OjprVXBkYXRlKSkgewogICAgIHN0YXRlLT50ZW1wb3JhbF9sYXllciA9IHRlbXBvcmFsX2xheWVy
OwogICAgIHN0YXRlLT5zZXF1ZW5jZV9udW1iZXIgPSBzZXF1ZW5jZV9udW1iZXI7CiAgICAgc3Rh
dGUtPmlzX2tleWZyYW1lID0gZnJhbWVfaXNfa2V5ZnJhbWU7CkBAIC02OSw3ICs2OSw3IEBAIGJv
b2wgVGVtcG9yYWxMYXllcnNDaGVja2VyOjpDaGVja0FuZFVwZGF0ZUJ1ZmZlclN0YXRlKAogCiBi
b29sIFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q2hlY2tUZW1wb3JhbENvbmZpZygKICAgICBib29s
IGZyYW1lX2lzX2tleWZyYW1lLAotICAgIGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZp
ZyYgZnJhbWVfY29uZmlnKSB7CisgICAgY29uc3QgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29u
ZmlnJiBmcmFtZV9jb25maWcpIHsKICAgaWYgKGZyYW1lX2NvbmZpZy5kcm9wX2ZyYW1lIHx8CiAg
ICAgICBmcmFtZV9jb25maWcucGFja2V0aXplcl90ZW1wb3JhbF9pZHggPT0ga05vVGVtcG9yYWxJ
ZHgpIHsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVz
dC9tb2NrX2xpYnZweF9pbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVzdC9tb2NrX2xp
YnZweF9pbnRlcmZhY2UuaAppbmRleCA1ODA0ZTgxNGVjOTE0ODg1OGRkYzgzZGM3ZTc3NmI1Mjdj
NTdlZWYyLi5kY2ZmMWU2YTE4ODQ2YWRiZTNkZTQxOTAyNmUxNzczZTc5OGM2YWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdnA4L3Rlc3QvbW9ja19saWJ2cHhfaW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOC90ZXN0L21vY2tfbGlidnB4X2ludGVyZmFjZS5oCkBAIC0zMiw3ICsz
Miw3IEBAIGNsYXNzIE1vY2tMaWJ2cHhWcDhJbnRlcmZhY2UgOiBwdWJsaWMgTGlidnB4SW50ZXJm
YWNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqKSk7Ci0gIE1PQ0tfQ09OU1Rf
TUVUSE9EMShpbWdfZnJlZSwgdnB4X2NvZGVjX2Vycl90KGNvbnN0IHZweF9jb2RlY19lbmNfY2Zn
X3QqKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMShpbWdfZnJlZSwgdm9pZCh2cHhfaW1hZ2VfdCog
aW1nKSk7CiAgIE1PQ0tfQ09OU1RfTUVUSE9EMihjb2RlY19lbmNfY29uZmlnX3NldCwKICAgICAg
ICAgICAgICAgICAgICAgIHZweF9jb2RlY19lcnJfdCh2cHhfY29kZWNfY3R4X3QqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZweF9jb2RlY19lbmNfY2ZnX3Qq
KSk7CkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE1vY2tMaWJ2cHhWcDhJbnRlcmZhY2UgOiBwdWJs
aWMgTGlidnB4SW50ZXJmYWNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50NjRfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cHhfZW5j
X2ZyYW1lX2ZsYWdzX3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDY0X3QpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QzKGNvZGVjX2dldF9jeF9kYXRhLAorICBNT0NL
X0NPTlNUX01FVEhPRDIoY29kZWNfZ2V0X2N4X2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2cHhfY29kZWNfY3hfcGt0X3QqKHZweF9jb2RlY19jdHhfdCosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZweF9jb2RlY19pdGVyX3QqKSk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZXN0L3ZwOF9pbXBsX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOC90ZXN0L3ZwOF9pbXBsX3VuaXR0ZXN0LmNjCmluZGV4IDQ1YTA5
MGRmMzczNmRlOTEwNjYzNDQ1Y2FiZDc2OWE5MmIxOWMxMDkuLjVlZWQ1ZDM4MGNmNmE2ZjAxMmNl
MWY4MGQyZDkwZDc1NTBhNDlhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVzdC92
cDhfaW1wbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3Rlc3QvdnA4X2ltcGxf
dW5pdHRlc3QuY2MKQEAgLTEyLDE2ICsxMiwyNSBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCisj
aW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192aWRlb19kZWNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL3Rl
c3QvbW9ja192aWRlb19lbmNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhf
dGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRl
L3dlYnJ0Y19saWJ5dXYuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dGVzdC92aWRlb19jb2RlY191bml0dGVzdC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9lbmNvZGVyLmgiCisj
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZXN0L21vY2tfbGlidnB4
X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvdnA4
X2hlYWRlcl9wYXJzZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNs
dWRlICJ0ZXN0L3ZpZGVvX2NvZGVjX3NldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
Cit1c2luZyB0ZXN0aW5nOjpJbnZva2U7Cit1c2luZyB0ZXN0aW5nOjpOaWNlTW9jazsKK3VzaW5n
IHRlc3Rpbmc6OlJldHVybjsKK3VzaW5nIHRlc3Rpbmc6Ol87CisKIG5hbWVzcGFjZSB7CiBjb25z
dGV4cHIgdWludDMyX3Qga0luaXRpYWxUaW1lc3RhbXBSdHAgPSAxMjM7CiBjb25zdGV4cHIgaW50
NjRfdCBrVGVzdE50cFRpbWVNcyA9IDQ1NjsKQEAgLTY4LDcgKzc3LDcgQEAgY2xhc3MgVGVzdFZw
OEltcGwgOiBwdWJsaWMgVmlkZW9Db2RlY1VuaXRUZXN0IHsKICAgICAgICAgICAgICAgZW5jb2Rl
cl8tPkVuY29kZShpbnB1dF9mcmFtZSwgbnVsbHB0ciwgJmZyYW1lX3R5cGVzKSk7CiAgICAgQVNT
RVJUX1RSVUUoV2FpdEZvckVuY29kZWRGcmFtZShlbmNvZGVkX2ZyYW1lLCBjb2RlY19zcGVjaWZp
Y19pbmZvKSk7CiAgICAgVmVyaWZ5UXBQYXJzZXIoKmVuY29kZWRfZnJhbWUpOwotICAgIEVYUEVD
VF9TVFJFUSgibGlidnB4IiwgY29kZWNfc3BlY2lmaWNfaW5mby0+Y29kZWNfbmFtZSk7CisgICAg
RVhQRUNUX0VRKCJsaWJ2cHgiLCBlbmNvZGVyXy0+R2V0RW5jb2RlckluZm8oKS5pbXBsZW1lbnRh
dGlvbl9uYW1lKTsKICAgICBFWFBFQ1RfRVEoa1ZpZGVvQ29kZWNWUDgsIGNvZGVjX3NwZWNpZmlj
X2luZm8tPmNvZGVjVHlwZSk7CiAgICAgRVhQRUNUX0VRKDAsIGVuY29kZWRfZnJhbWUtPlNwYXRp
YWxJbmRleCgpKTsKICAgfQpAQCAtMzI1LDcgKzMzNCw4IEBAIFRFU1RfRihUZXN0VnA4SW1wbCwg
U2NhbGluZ0Rpc2FibGVkSWZBdXRvbWF0aWNSZXNpemVPZmYpIHsKICAgRVhQRUNUX0VRKFdFQlJU
Q19WSURFT19DT0RFQ19PSywKICAgICAgICAgICAgIGVuY29kZXJfLT5Jbml0RW5jb2RlKCZjb2Rl
Y19zZXR0aW5nc18sIGtOdW1Db3Jlcywga01heFBheWxvYWRTaXplKSk7CiAKLSAgVmlkZW9FbmNv
ZGVyOjpTY2FsaW5nU2V0dGluZ3Mgc2V0dGluZ3MgPSBlbmNvZGVyXy0+R2V0U2NhbGluZ1NldHRp
bmdzKCk7CisgIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIHNldHRpbmdzID0KKyAgICAg
IGVuY29kZXJfLT5HZXRFbmNvZGVySW5mbygpLnNjYWxpbmdfc2V0dGluZ3M7CiAgIEVYUEVDVF9G
QUxTRShzZXR0aW5ncy50aHJlc2hvbGRzLmhhc192YWx1ZSgpKTsKIH0KIApAQCAtMzM1LDcgKzM0
NSw4IEBAIFRFU1RfRihUZXN0VnA4SW1wbCwgU2NhbGluZ0VuYWJsZWRJZkF1dG9tYXRpY1Jlc2l6
ZU9uKSB7CiAgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCiAgICAgICAgICAgICBl
bmNvZGVyXy0+SW5pdEVuY29kZSgmY29kZWNfc2V0dGluZ3NfLCBrTnVtQ29yZXMsIGtNYXhQYXls
b2FkU2l6ZSkpOwogCi0gIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIHNldHRpbmdzID0g
ZW5jb2Rlcl8tPkdldFNjYWxpbmdTZXR0aW5ncygpOworICBWaWRlb0VuY29kZXI6OlNjYWxpbmdT
ZXR0aW5ncyBzZXR0aW5ncyA9CisgICAgICBlbmNvZGVyXy0+R2V0RW5jb2RlckluZm8oKS5zY2Fs
aW5nX3NldHRpbmdzOwogICBFWFBFQ1RfVFJVRShzZXR0aW5ncy50aHJlc2hvbGRzLmhhc192YWx1
ZSgpKTsKICAgRVhQRUNUX0VRKGtEZWZhdWx0TWluUGl4ZWxzUGVyRnJhbWUsIHNldHRpbmdzLm1p
bl9waXhlbHNfcGVyX2ZyYW1lKTsKIH0KQEAgLTM4MCw0ICszOTEsNDEgQEAgVEVTVF9GKFRlc3RW
cDhJbXBsLCBEb250RHJvcEtleWZyYW1lcykgewogICBFbmNvZGVBbmRFeHBlY3RGcmFtZVdpdGgo
Kk5leHRJbnB1dEZyYW1lKCksIDAsIHRydWUpOwogfQogCitURVNUX0YoVGVzdFZwOEltcGwsIEtl
ZXBzVGltZXN0YW1wT25SZWVuY29kZSkgeworICBhdXRvKiBjb25zdCB2cHggPSBuZXcgTmljZU1v
Y2s8TW9ja0xpYnZweFZwOEludGVyZmFjZT4oKTsKKyAgTGlidnB4VnA4RW5jb2RlciBlbmNvZGVy
KChzdGQ6OnVuaXF1ZV9wdHI8TGlidnB4SW50ZXJmYWNlPih2cHgpKSk7CisKKyAgLy8gU2V0dGlu
Z3MgbmVlZGVkIHRvIHRyaWdnZXIgU2NyZWVuc2hhcmVMYXllcnMgdXNhZ2UsIHdoaWNoIGlzIHJl
cXVpcmVkIGZvcgorICAvLyBvdmVyc2hvb3QtZHJvcC1yZWVuY29kZSBsb2dpYy4KKyAgY29kZWNf
c2V0dGluZ3NfLnRhcmdldEJpdHJhdGUgPSAyMDA7CisgIGNvZGVjX3NldHRpbmdzXy5tYXhCaXRy
YXRlID0gMTAwMDsKKyAgY29kZWNfc2V0dGluZ3NfLm1vZGUgPSBWaWRlb0NvZGVjTW9kZTo6a1Nj
cmVlbnNoYXJpbmc7CisgIGNvZGVjX3NldHRpbmdzXy5WUDgoKS0+bnVtYmVyT2ZUZW1wb3JhbExh
eWVycyA9IDI7CisKKyAgRVhQRUNUX0NBTEwoKnZweCwgaW1nX3dyYXAoXywgXywgXywgXywgXywg
XykpCisgICAgICAuV2lsbE9uY2UoSW52b2tlKFtdKHZweF9pbWFnZV90KiBpbWcsIHZweF9pbWdf
Zm10X3QgZm10LCB1bnNpZ25lZCBpbnQgZF93LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgZF9oLCB1bnNpZ25lZCBpbnQgc3RyaWRlX2FsaWduLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBpbWdfZGF0YSkgeworICAgICAgICBpbWctPmZt
dCA9IGZtdDsKKyAgICAgICAgaW1nLT5kX3cgPSBkX3c7CisgICAgICAgIGltZy0+ZF9oID0gZF9o
OworICAgICAgICBpbWctPmltZ19kYXRhID0gaW1nX2RhdGE7CisgICAgICAgIHJldHVybiBpbWc7
CisgICAgICB9KSk7CisgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCisgICAgICAg
ICAgICBlbmNvZGVyLkluaXRFbmNvZGUoJmNvZGVjX3NldHRpbmdzXywgMSwgMTAwMCkpOworICBN
b2NrRW5jb2RlZEltYWdlQ2FsbGJhY2sgY2FsbGJhY2s7CisgIGVuY29kZXIuUmVnaXN0ZXJFbmNv
ZGVDb21wbGV0ZUNhbGxiYWNrKCZjYWxsYmFjayk7CisKKyAgLy8gU2ltdWxhdGUgb3ZlcnNob290
IGRyb3AsIHJlLWVuY29kZTogZW5jb2RlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHR3aWNlCisg
IC8vIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycy4gY29kZWNfZ2V0X2N4X2RhdGEoKSB3aWxsIGJ5
IGRlZmF1bHQgcmV0dXJuIG5vCisgIC8vIGltYWdlIGRhdGEgYW5kIGJlIGludGVycHJldGVkIGFz
IGRyb3AuCisgIEVYUEVDVF9DQUxMKCp2cHgsIGNvZGVjX2VuY29kZShfLCBfLCAvKiBwdHMgPSAq
LyAwLCBfLCBfLCBfKSkKKyAgICAgIC5UaW1lcygyKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJl
dHVybih2cHhfY29kZWNfZXJyX3Q6OlZQWF9DT0RFQ19PSykpOworCisgIGF1dG8gZGVsdGFfZnJh
bWUgPSBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+e2tWaWRlb0ZyYW1lRGVsdGF9OworICBlbmNvZGVy
LkVuY29kZSgqTmV4dElucHV0RnJhbWUoKSwgbnVsbHB0ciwgJmRlbHRhX2ZyYW1lKTsKK30KKwog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC92cDhf
dGVtcG9yYWxfbGF5ZXJzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC92cDhfdGVtcG9yYWxfbGF5ZXJz
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTU4NDQxNGE5MTEzNzBkNzQ5Njg2
YjQzMGNhMWU1MDk4ZWZjZDZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdnA4X3RlbXBvcmFsX2xheWVycy5jYworKysgL2Rl
di9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJz
LmgiCi0KLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmgiCi0jaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMu
aCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgotCi1uYW1lc3Bh
Y2Ugd2VicnRjIHsKLQotYm9vbCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc6Om9wZXJhdG9y
PT0oY29uc3QgRnJhbWVDb25maWcmIG8pIGNvbnN0IHsKLSAgcmV0dXJuIGRyb3BfZnJhbWUgPT0g
by5kcm9wX2ZyYW1lICYmCi0gICAgICAgICBsYXN0X2J1ZmZlcl9mbGFncyA9PSBvLmxhc3RfYnVm
ZmVyX2ZsYWdzICYmCi0gICAgICAgICBnb2xkZW5fYnVmZmVyX2ZsYWdzID09IG8uZ29sZGVuX2J1
ZmZlcl9mbGFncyAmJgotICAgICAgICAgYXJmX2J1ZmZlcl9mbGFncyA9PSBvLmFyZl9idWZmZXJf
ZmxhZ3MgJiYgbGF5ZXJfc3luYyA9PSBvLmxheWVyX3N5bmMgJiYKLSAgICAgICAgIGZyZWV6ZV9l
bnRyb3B5ID09IG8uZnJlZXplX2VudHJvcHkgJiYKLSAgICAgICAgIGVuY29kZXJfbGF5ZXJfaWQg
PT0gby5lbmNvZGVyX2xheWVyX2lkICYmCi0gICAgICAgICBwYWNrZXRpemVyX3RlbXBvcmFsX2lk
eCA9PSBvLnBhY2tldGl6ZXJfdGVtcG9yYWxfaWR4OwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8VGVt
cG9yYWxMYXllcnM+IFRlbXBvcmFsTGF5ZXJzOjpDcmVhdGVUZW1wb3JhbExheWVycygKLSAgICBU
ZW1wb3JhbExheWVyc1R5cGUgdHlwZSwKLSAgICBpbnQgbnVtX3RlbXBvcmFsX2xheWVycykgewot
ICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0
dGVybjoKLSAgICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxEZWZhdWx0VGVtcG9yYWxMYXll
cnM+KG51bV90ZW1wb3JhbF9sYXllcnMpOwotICAgIGNhc2UgVGVtcG9yYWxMYXllcnNUeXBlOjpr
Qml0cmF0ZUR5bmFtaWM6Ci0gICAgICAvLyBDb25mZXJlbmNlIG1vZGUgdGVtcG9yYWwgbGF5ZXJp
bmcgZm9yIHNjcmVlbiBjb250ZW50IGluIGJhc2Ugc3RyZWFtLgotICAgICAgcmV0dXJuIGFic2w6
Om1ha2VfdW5pcXVlPFNjcmVlbnNoYXJlTGF5ZXJzPihudW1fdGVtcG9yYWxfbGF5ZXJzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9jazo6R2V0
UmVhbFRpbWVDbG9jaygpKTsKLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19jb25maWcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5
L3N2Y19jb25maWcuY2MKaW5kZXggNjgwNzY5ODI0NmU4ZmYzMzU1ZTlhYzJhYzA0NTJmYjkxYWVh
NmFiMC4uM2U5MjI4MDE0ODM5MjhjYzEzZWEzMWM3ZGVhMTNhNTRiZGVlZjNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfY29uZmlnLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkv
c3ZjX2NvbmZpZy5jYwpAQCAtMjIsOSArMjIsOSBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVz
cGFjZSB7CiBjb25zdCBzaXplX3Qga01pblZwOVN2Y0JpdHJhdGVLYnBzID0gMzA7CiAKLWNvbnN0
IHNpemVfdCBrTWF4TnVtTGF5ZXJzRm9yU2NyZWVuU2hhcmluZyA9IDI7Ci1jb25zdCBmbG9hdCBr
TWF4U2NyZWVuU2hhcmluZ0xheWVyRnJhbWVyYXRlRnBzW10gPSB7NS4wLCA1LjB9OwotY29uc3Qg
c2l6ZV90IGtNYXhTY3JlZW5TaGFyaW5nTGF5ZXJCaXRyYXRlS2Jwc1tdID0gezIwMCwgNTAwfTsK
K2NvbnN0IHNpemVfdCBrTWF4TnVtTGF5ZXJzRm9yU2NyZWVuU2hhcmluZyA9IDM7Citjb25zdCBm
bG9hdCBrTWF4U2NyZWVuU2hhcmluZ0xheWVyRnJhbWVyYXRlRnBzW10gPSB7NS4wLCA1LjAsIDMw
LjB9OworY29uc3Qgc2l6ZV90IGtNYXhTY3JlZW5TaGFyaW5nTGF5ZXJCaXRyYXRlS2Jwc1tdID0g
ezIwMCwgNTAwLCAxMjUwfTsKIH0gIC8vIG5hbWVzcGFjZQogCiBzdGQ6OnZlY3RvcjxTcGF0aWFs
TGF5ZXI+IENvbmZpZ3VyZVN2Y1NjcmVlblNoYXJpbmcoc2l6ZV90IGlucHV0X3dpZHRoLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfY29uZmlnX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOS9zdmNfY29uZmlnX3VuaXR0ZXN0LmNjCmluZGV4IDI1N2M1ZGYyZjAzN2JhMGY1
MDJkY2Y1YTRmN2VmMGMyZTc4MWRjNWUuLmI5OTc3Njc0NjU2NjFlOGIxODQ0YjQ1NzUwZmQxNzZl
YzhkN2UxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX2NvbmZpZ191bml0dGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19jb25maWdfdW5pdHRlc3QuY2MKQEAgLTQ5
LDEyICs0OSwxMyBAQCBURVNUKFN2Y0NvbmZpZywgU2NyZWVuU2hhcmluZykgewogICBzdGQ6OnZl
Y3RvcjxTcGF0aWFsTGF5ZXI+IHNwYXRpYWxfbGF5ZXJzID0KICAgICAgIEdldFN2Y0NvbmZpZygx
OTIwLCAxMDgwLCAzMCwgMywgMywgdHJ1ZSk7CiAKLSAgRVhQRUNUX0VRKHNwYXRpYWxfbGF5ZXJz
LnNpemUoKSwgMlVMKTsKKyAgRVhQRUNUX0VRKHNwYXRpYWxfbGF5ZXJzLnNpemUoKSwgM1VMKTsK
IAotICBmb3IgKGNvbnN0IFNwYXRpYWxMYXllciYgbGF5ZXIgOiBzcGF0aWFsX2xheWVycykgewor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgIGNvbnN0IFNwYXRpYWxMYXll
ciYgbGF5ZXIgPSBzcGF0aWFsX2xheWVyc1tpXTsKICAgICBFWFBFQ1RfRVEobGF5ZXIud2lkdGgs
IDE5MjApOwogICAgIEVYUEVDVF9FUShsYXllci5oZWlnaHQsIDEwODApOwotICAgIEVYUEVDVF9F
UShsYXllci5tYXhGcmFtZXJhdGUsIDUpOworICAgIEVYUEVDVF9FUShsYXllci5tYXhGcmFtZXJh
dGUsIChpIDwgMikgPyA1IDogMzApOwogICAgIEVYUEVDVF9FUShsYXllci5udW1iZXJPZlRlbXBv
cmFsTGF5ZXJzLCAxKTsKICAgICBFWFBFQ1RfTEUobGF5ZXIubWluQml0cmF0ZSwgbGF5ZXIubWF4
Qml0cmF0ZSk7CiAgICAgRVhQRUNUX0xFKGxheWVyLm1pbkJpdHJhdGUsIGxheWVyLnRhcmdldEJp
dHJhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3Jf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19yYXRlX2FsbG9jYXRvcl91bml0dGVz
dC5jYwppbmRleCAwNDhiZjdkNjk0NzExMTFlNzc0NjFhYTFjYjg1OTI4MTc0NTJjYjY5Li5lZWMy
YjlkNDE5OWVhOWY3N2UzYzk5YjZjYjJkNDc4NDliZDlmNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdnA5L3N2Y19yYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA5L3N2Y19yYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYwpAQCAtMTQ5LDcgKzE0OSw3IEBA
IFRFU1QoU3ZjUmF0ZUFsbG9jYXRvclRlc3QsIE1pbkJpdHJhdGVUb0dldFF1YWxpdHlMYXllcikg
ewogCiAgIGNvbnN0IFNwYXRpYWxMYXllciogbGF5ZXJzID0gY29kZWMuc3BhdGlhbExheWVyczsK
IAotICBFWFBFQ1RfTEUoY29kZWMuVlA5KCktPm51bWJlck9mU3BhdGlhbExheWVycywgMlUpOwor
ICBFWFBFQ1RfTEUoY29kZWMuVlA5KCktPm51bWJlck9mU3BhdGlhbExheWVycywgM1UpOwogCiAg
IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYWxsb2NhdGlvbiA9CiAgICAgICBhbGxvY2F0b3IuR2V0
QWxsb2NhdGlvbihsYXllcnNbMF0ubWluQml0cmF0ZSAqIDEwMDAsIDMwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDkvdGVzdC92cDlfaW1wbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDkvdGVzdC92cDlfaW1wbF91bml0dGVzdC5jYwppbmRleCA0NzMzYWQ5NzlhNDk5NWExYWNi
M2I2ZmQwMGJiOWNjZGZhNGEyMmNhLi44NWZhMjc4YTBkMzc2ZWFmNTUxMmVjMDc1OGI4Y2I3ZGQ3
MjFlYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3Rlc3QvdnA5X2ltcGxfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS90ZXN0L3ZwOV9pbXBsX3VuaXR0ZXN0LmNjCkBA
IC0xMDQsNiArMTA0LDMzIEBAIGNsYXNzIFRlc3RWcDlJbXBsIDogcHVibGljIFZpZGVvQ29kZWNV
bml0VGVzdCB7CiAgICAgICBjb2RlY19zZXR0aW5nc18uc3BhdGlhbExheWVyc1tpXSA9IGxheWVy
c1tpXTsKICAgICB9CiAgIH0KKworICBIZHJNZXRhZGF0YSBDcmVhdGVUZXN0SGRyTWV0YWRhdGEo
KSBjb25zdCB7CisgICAgLy8gUmFuZG9tIGJ1dCByZWFzb25hYmxlIEhEUiBtZXRhZGF0YS4KKyAg
ICBIZHJNZXRhZGF0YSBoZHJfbWV0YWRhdGE7CisgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19t
ZXRhZGF0YS5sdW1pbmFuY2VfbWF4ID0gMjAwMC4wOworICAgIGhkcl9tZXRhZGF0YS5tYXN0ZXJp
bmdfbWV0YWRhdGEubHVtaW5hbmNlX21pbiA9IDIuMDAwMTsKKyAgICBoZHJfbWV0YWRhdGEubWFz
dGVyaW5nX21ldGFkYXRhLnByaW1hcnlfci54ID0gMC4zMDsKKyAgICBoZHJfbWV0YWRhdGEubWFz
dGVyaW5nX21ldGFkYXRhLnByaW1hcnlfci55ID0gMC40MDsKKyAgICBoZHJfbWV0YWRhdGEubWFz
dGVyaW5nX21ldGFkYXRhLnByaW1hcnlfZy54ID0gMC4zMjsKKyAgICBoZHJfbWV0YWRhdGEubWFz
dGVyaW5nX21ldGFkYXRhLnByaW1hcnlfZy55ID0gMC40NjsKKyAgICBoZHJfbWV0YWRhdGEubWFz
dGVyaW5nX21ldGFkYXRhLnByaW1hcnlfYi54ID0gMC4zNDsKKyAgICBoZHJfbWV0YWRhdGEubWFz
dGVyaW5nX21ldGFkYXRhLnByaW1hcnlfYi55ID0gMC40OTsKKyAgICBoZHJfbWV0YWRhdGEubWFz
dGVyaW5nX21ldGFkYXRhLndoaXRlX3BvaW50LnggPSAwLjQxOworICAgIGhkcl9tZXRhZGF0YS5t
YXN0ZXJpbmdfbWV0YWRhdGEud2hpdGVfcG9pbnQueSA9IDAuNDg7CisgICAgaGRyX21ldGFkYXRh
Lm1heF9jb250ZW50X2xpZ2h0X2xldmVsID0gMjM0NTsKKyAgICBoZHJfbWV0YWRhdGEubWF4X2Zy
YW1lX2F2ZXJhZ2VfbGlnaHRfbGV2ZWwgPSAxNzg5OworICAgIHJldHVybiBoZHJfbWV0YWRhdGE7
CisgIH0KKworICBDb2xvclNwYWNlIENyZWF0ZVRlc3RDb2xvclNwYWNlKCkgY29uc3QgeworICAg
IEhkck1ldGFkYXRhIGhkcl9tZXRhZGF0YSA9IENyZWF0ZVRlc3RIZHJNZXRhZGF0YSgpOworICAg
IENvbG9yU3BhY2UgY29sb3Jfc3BhY2UoQ29sb3JTcGFjZTo6UHJpbWFyeUlEOjprQlQ3MDksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjprR0FNTUEy
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yU3BhY2U6Ok1hdHJpeElEOjprU01Q
VEUyMDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZTo6UmFuZ2VJRDo6
a0Z1bGwsICZoZHJfbWV0YWRhdGEpOworICAgIHJldHVybiBjb2xvcl9zcGFjZTsKKyAgfQogfTsK
IAogLy8gRGlzYWJsZWQgb24gaW9zIGFzIGZsYWtlLCBzZWUgaHR0cHM6Ly9jcmJ1Zy5jb20vd2Vi
cnRjLzcwNTcKQEAgLTEyOCw3ICsxNTUsNyBAQCBURVNUX0YoVGVzdFZwOUltcGwsIEVuY29kZURl
Y29kZSkgewogICBBU1NFUlRfVFJVRShkZWNvZGVkX2ZyYW1lKTsKICAgRVhQRUNUX0dUKEk0MjBQ
U05SKGlucHV0X2ZyYW1lLCBkZWNvZGVkX2ZyYW1lLmdldCgpKSwgMzYpOwogCi0gIGNvbnN0IENv
bG9yU3BhY2UgY29sb3Jfc3BhY2UgPSBkZWNvZGVkX2ZyYW1lLT5jb2xvcl9zcGFjZSgpLnZhbHVl
KCk7CisgIGNvbnN0IENvbG9yU3BhY2UgY29sb3Jfc3BhY2UgPSAqZGVjb2RlZF9mcmFtZS0+Y29s
b3Jfc3BhY2UoKTsKICAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlByaW1hcnlJRDo6a0ludmFsaWQs
IGNvbG9yX3NwYWNlLnByaW1hcmllcygpKTsKICAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlRyYW5z
ZmVySUQ6OmtJbnZhbGlkLCBjb2xvcl9zcGFjZS50cmFuc2ZlcigpKTsKICAgRVhQRUNUX0VRKENv
bG9yU3BhY2U6Ok1hdHJpeElEOjprSW52YWxpZCwgY29sb3Jfc3BhY2UubWF0cml4KCkpOwpAQCAt
MTU3LDYgKzE4NCw2MCBAQCBURVNUX0YoVGVzdFZwOUltcGwsIEVuY29kZWRSb3RhdGlvbkVxdWFs
c0lucHV0Um90YXRpb24pIHsKICAgRVhQRUNUX0VRKGtWaWRlb1JvdGF0aW9uXzkwLCBlbmNvZGVk
X2ZyYW1lLnJvdGF0aW9uXyk7CiB9CiAKK1RFU1RfRihUZXN0VnA5SW1wbCwgRW5jb2RlZENvbG9y
U3BhY2VFcXVhbHNJbnB1dENvbG9yU3BhY2UpIHsKKyAgLy8gVmlkZW8gZnJhbWUgd2l0aG91dCBl
eHBsaWNpdCBjb2xvciBzcGFjZSBpbmZvcm1hdGlvbi4KKyAgVmlkZW9GcmFtZSogaW5wdXRfZnJh
bWUgPSBOZXh0SW5wdXRGcmFtZSgpOworICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09L
LAorICAgICAgICAgICAgZW5jb2Rlcl8tPkVuY29kZSgqaW5wdXRfZnJhbWUsIG51bGxwdHIsIG51
bGxwdHIpKTsKKyAgRW5jb2RlZEltYWdlIGVuY29kZWRfZnJhbWU7CisgIENvZGVjU3BlY2lmaWNJ
bmZvIGNvZGVjX3NwZWNpZmljX2luZm87CisgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJh
bWUoJmVuY29kZWRfZnJhbWUsICZjb2RlY19zcGVjaWZpY19pbmZvKSk7CisgIEVYUEVDVF9GQUxT
RShlbmNvZGVkX2ZyYW1lLkNvbG9yU3BhY2UoKSk7CisKKyAgLy8gVmlkZW8gZnJhbWUgd2l0aCBl
eHBsaWNpdCBjb2xvciBzcGFjZSBpbmZvcm1hdGlvbi4KKyAgQ29sb3JTcGFjZSBjb2xvcl9zcGFj
ZSA9IENyZWF0ZVRlc3RDb2xvclNwYWNlKCk7CisgIFZpZGVvRnJhbWUgaW5wdXRfZnJhbWVfd19o
ZHIgPQorICAgICAgVmlkZW9GcmFtZTo6QnVpbGRlcigpCisgICAgICAgICAgLnNldF92aWRlb19m
cmFtZV9idWZmZXIoaW5wdXRfZnJhbWUtPnZpZGVvX2ZyYW1lX2J1ZmZlcigpKQorICAgICAgICAg
IC5zZXRfY29sb3Jfc3BhY2UoJmNvbG9yX3NwYWNlKQorICAgICAgICAgIC5idWlsZCgpOworICBF
WFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLAorICAgICAgICAgICAgZW5jb2Rlcl8tPkVu
Y29kZShpbnB1dF9mcmFtZV93X2hkciwgbnVsbHB0ciwgbnVsbHB0cikpOworICBBU1NFUlRfVFJV
RShXYWl0Rm9yRW5jb2RlZEZyYW1lKCZlbmNvZGVkX2ZyYW1lLCAmY29kZWNfc3BlY2lmaWNfaW5m
bykpOworICBBU1NFUlRfVFJVRShlbmNvZGVkX2ZyYW1lLkNvbG9yU3BhY2UoKSk7CisgIEVYUEVD
VF9FUSgqZW5jb2RlZF9mcmFtZS5Db2xvclNwYWNlKCksIGNvbG9yX3NwYWNlKTsKK30KKworVEVT
VF9GKFRlc3RWcDlJbXBsLCBEZWNvZGVkSGRyTWV0YWRhdGFFcXVhbHNFbmNvZGVkSGRyTWV0YWRh
dGEpIHsKKyAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAgICAgICAgICAgIGVu
Y29kZXJfLT5FbmNvZGUoKk5leHRJbnB1dEZyYW1lKCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAg
RW5jb2RlZEltYWdlIGVuY29kZWRfZnJhbWU7CisgIENvZGVjU3BlY2lmaWNJbmZvIGNvZGVjX3Nw
ZWNpZmljX2luZm87CisgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWUoJmVuY29kZWRf
ZnJhbWUsICZjb2RlY19zcGVjaWZpY19pbmZvKSk7CisKKyAgLy8gRW5jb2RlZCBmcmFtZSB3aXRo
b3V0IGV4cGxpY2l0IGNvbG9yIHNwYWNlIGluZm9ybWF0aW9uLgorICBFWFBFQ1RfRVEoV0VCUlRD
X1ZJREVPX0NPREVDX09LLAorICAgICAgICAgICAgZGVjb2Rlcl8tPkRlY29kZShlbmNvZGVkX2Zy
YW1lLCBmYWxzZSwgbnVsbHB0ciwgMCkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9GcmFtZT4g
ZGVjb2RlZF9mcmFtZTsKKyAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gZGVjb2RlZF9xcDsKKyAg
QVNTRVJUX1RSVUUoV2FpdEZvckRlY29kZWRGcmFtZSgmZGVjb2RlZF9mcmFtZSwgJmRlY29kZWRf
cXApKTsKKyAgQVNTRVJUX1RSVUUoZGVjb2RlZF9mcmFtZSk7CisgIC8vIENvbG9yIHNwYWNlIHBy
ZXNlbnQgZnJvbSBlbmNvZGVkIGJpdHN0cmVhbS4KKyAgQVNTRVJUX1RSVUUoZGVjb2RlZF9mcmFt
ZS0+Y29sb3Jfc3BhY2UoKSk7CisgIC8vIE5vIEhEUiBtZXRhZGF0YSBwcmVzZW50LgorICBFWFBF
Q1RfRkFMU0UoZGVjb2RlZF9mcmFtZS0+Y29sb3Jfc3BhY2UoKS0+aGRyX21ldGFkYXRhKCkpOwor
CisgIC8vIEVuY29kZWQgZnJhbWUgd2l0aCBleHBsaWNpdCBjb2xvciBzcGFjZSBpbmZvcm1hdGlv
bi4KKyAgQ29sb3JTcGFjZSBjb2xvcl9zcGFjZSA9IENyZWF0ZVRlc3RDb2xvclNwYWNlKCk7Cisg
IGVuY29kZWRfZnJhbWUuU2V0Q29sb3JTcGFjZSgmY29sb3Jfc3BhY2UpOworICBFWFBFQ1RfRVEo
V0VCUlRDX1ZJREVPX0NPREVDX09LLAorICAgICAgICAgICAgZGVjb2Rlcl8tPkRlY29kZShlbmNv
ZGVkX2ZyYW1lLCBmYWxzZSwgbnVsbHB0ciwgMCkpOworICBBU1NFUlRfVFJVRShXYWl0Rm9yRGVj
b2RlZEZyYW1lKCZkZWNvZGVkX2ZyYW1lLCAmZGVjb2RlZF9xcCkpOworICBBU1NFUlRfVFJVRShk
ZWNvZGVkX2ZyYW1lKTsKKyAgQVNTRVJUX1RSVUUoZGVjb2RlZF9mcmFtZS0+Y29sb3Jfc3BhY2Uo
KSk7CisgIEVYUEVDVF9FUShjb2xvcl9zcGFjZSwgKmRlY29kZWRfZnJhbWUtPmNvbG9yX3NwYWNl
KCkpOworfQorCiBURVNUX0YoVGVzdFZwOUltcGwsIERlY29kZWRRcEVxdWFsc0VuY29kZWRRcCkg
ewogICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLAogICAgICAgICAgICAgZW5jb2Rl
cl8tPkVuY29kZSgqTmV4dElucHV0RnJhbWUoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwpAQCAtMzkz
LDcgKzQ3NCw3IEBAIFRFU1RfRihUZXN0VnA5SW1wbCwgSW50ZXJMYXllclByZWQpIHsKICAgQ29u
ZmlndXJlU3ZjKG51bV9zcGF0aWFsX2xheWVycyk7CiAgIGNvZGVjX3NldHRpbmdzXy5WUDkoKS0+
ZnJhbWVEcm9wcGluZ09uID0gZmFsc2U7CiAKLSAgQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9h
bGxvY2F0aW9uOworICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbjsK
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fc3BhdGlhbF9sYXllcnM7ICsraSkgewogICAg
IGJpdHJhdGVfYWxsb2NhdGlvbi5TZXRCaXRyYXRlKAogICAgICAgICBpLCAwLCBjb2RlY19zZXR0
aW5nc18uc3BhdGlhbExheWVyc1tpXS50YXJnZXRCaXRyYXRlICogMTAwMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA5L3ZwOS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIyYTA4ODgxMjA4YTEyOWViNTJlMzVhNjBkNjlmOTZiNDMyZjMyYmQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOS5jYwpAQCAtMCwwICsxLDc1IEBACisvKgor
ICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDkvaW5jbHVkZS92cDkuaCIKKworI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgor
I2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJ2cHgvdnA4Y3guaCIKKyNpbmNsdWRlICJ2cHgv
dnA4ZHguaCIKKyNpbmNsdWRlICJ2cHgvdnB4X2NvZGVjLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCitzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gU3VwcG9ydGVkVlA5Q29kZWNzKCkgewor
I2lmZGVmIFJUQ19FTkFCTEVfVlA5CisgIC8vIFByb2ZpbGUgMiBtaWdodCBub3QgYmUgYXZhaWxh
YmxlIG9uIHNvbWUgcGxhdGZvcm1zIHVudGlsCisgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5v
cmcvcC93ZWJtL2lzc3Vlcy9kZXRhaWw/aWQ9MTU0NCBpcyBzb2x2ZWQuCisgIHN0YXRpYyBib29s
IHZweF9zdXBwb3J0c19oaWdoX2JpdF9kZXB0aCA9CisgICAgICAodnB4X2NvZGVjX2dldF9jYXBz
KHZweF9jb2RlY192cDlfY3goKSkgJiBWUFhfQ09ERUNfQ0FQX0hJR0hCSVRERVBUSCkgIT0KKyAg
ICAgICAgICAwICYmCisgICAgICAodnB4X2NvZGVjX2dldF9jYXBzKHZweF9jb2RlY192cDlfZHgo
KSkgJiBWUFhfQ09ERUNfQ0FQX0hJR0hCSVRERVBUSCkgIT0KKyAgICAgICAgICAwOworCisgIHN0
ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBzdXBwb3J0ZWRfZm9ybWF0c3tTZHBWaWRlb0Zvcm1h
dCgKKyAgICAgIGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUsCisgICAgICB7e2tWUDlGbXRwUHJvZmls
ZUlkLCBWUDlQcm9maWxlVG9TdHJpbmcoVlA5UHJvZmlsZTo6a1Byb2ZpbGUwKX19KX07CisgIGlm
ICh2cHhfc3VwcG9ydHNfaGlnaF9iaXRfZGVwdGgpIHsKKyAgICBzdXBwb3J0ZWRfZm9ybWF0cy5w
dXNoX2JhY2soU2RwVmlkZW9Gb3JtYXQoCisgICAgICAgIGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUs
CisgICAgICAgIHt7a1ZQOUZtdHBQcm9maWxlSWQsIFZQOVByb2ZpbGVUb1N0cmluZyhWUDlQcm9m
aWxlOjprUHJvZmlsZTIpfX0pKTsKKyAgfQorICByZXR1cm4gc3VwcG9ydGVkX2Zvcm1hdHM7Cisj
ZWxzZQorICByZXR1cm4gc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+KCk7CisjZW5kaWYKK30K
Kworc3RkOjp1bmlxdWVfcHRyPFZQOUVuY29kZXI+IFZQOUVuY29kZXI6OkNyZWF0ZSgpIHsKKyNp
ZmRlZiBSVENfRU5BQkxFX1ZQOQorICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8VlA5RW5jb2Rl
ckltcGw+KGNyaWNrZXQ6OlZpZGVvQ29kZWMoKSk7CisjZWxzZQorICBSVENfTk9UUkVBQ0hFRCgp
OworICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCitzdGQ6OnVuaXF1ZV9wdHI8VlA5RW5j
b2Rlcj4gVlA5RW5jb2Rlcjo6Q3JlYXRlKAorICAgIGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29kZWMm
IGNvZGVjKSB7CisjaWZkZWYgUlRDX0VOQUJMRV9WUDkKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5p
cXVlPFZQOUVuY29kZXJJbXBsPihjb2RlYyk7CisjZWxzZQorICBSVENfTk9UUkVBQ0hFRCgpOwor
ICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCitzdGQ6OnVuaXF1ZV9wdHI8VlA5RGVjb2Rl
cj4gVlA5RGVjb2Rlcjo6Q3JlYXRlKCkgeworI2lmZGVmIFJUQ19FTkFCTEVfVlA5CisgIHJldHVy
biBhYnNsOjptYWtlX3VuaXF1ZTxWUDlEZWNvZGVySW1wbD4oKTsKKyNlbHNlCisgIFJUQ19OT1RS
RUFDSEVEKCk7CisgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKK30gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZlcl9w
b29sLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVmZmVyX3Bvb2wuY2MKaW5kZXgg
NjkxMDFjYjUwNmYzNTA0MzE5OTAwODFmM2NiZjY2ZjUwMDg1ZWJmNy4uZWNiZGE0Y2IzYmQwZjI0
ZDM2OTY5NzQ2ZDhkNTg5NjgxNTRhMGI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92
cDlfZnJhbWVfYnVmZmVyX3Bvb2wuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfZnJhbWVf
YnVmZmVyX3Bvb2wuY2MKQEAgLTksNiArOSw4IEBACiAgKgogICovCiAKKyNpZmRlZiBSVENfRU5B
QkxFX1ZQOQorCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlf
ZnJhbWVfYnVmZmVyX3Bvb2wuaCIKIAogI2luY2x1ZGUgInZweC92cHhfY29kZWMuaCIKQEAgLTEz
OCwzICsxNDAsNSBAQCBpbnQzMl90IFZwOUZyYW1lQnVmZmVyUG9vbDo6VnB4UmVsZWFzZUZyYW1l
QnVmZmVyKHZvaWQqIHVzZXJfcHJpdiwKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisj
ZW5kaWYgIC8vIFJUQ19FTkFCTEVfVlA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3Zw
OV9mcmFtZV9idWZmZXJfcG9vbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVmZmVy
X3Bvb2wuaAppbmRleCA5YjAzNWViOTRhZGU3MzdkZWQzYjM1YmI2N2EyN2RjZjk4ODkzZjZjLi4w
MmVkZTI0MzI5NTVmZGVhNTcyYjFjNTllY2NhOGY1MTNmOWMzYTRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvdnA5L3ZwOV9mcmFtZV9idWZmZXJfcG9vbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDkvdnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmgKQEAgLTEyLDYgKzEyLDggQEAKICNpZm5kZWYgTU9E
VUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOV9WUDlfRlJBTUVfQlVGRkVSX1BPT0xfSF8KICNk
ZWZpbmUgTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOV9WUDlfRlJBTUVfQlVGRkVSX1BP
T0xfSF8KIAorI2lmZGVmIFJUQ19FTkFCTEVfVlA5CisKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNp
bmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKQEAgLTEyMCw0ICsxMjIsNiBAQCBjbGFzcyBWcDlG
cmFtZUJ1ZmZlclBvb2wgewogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKKyNlbmRpZiAgLy8g
UlRDX0VOQUJMRV9WUDkKKwogI2VuZGlmICAvLyBNT0RVTEVTX1ZJREVPX0NPRElOR19DT0RFQ1Nf
VlA5X1ZQOV9GUkFNRV9CVUZGRVJfUE9PTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Zw
OS92cDlfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwuY2MKaW5kZXggNmI5ODJh
OGExMzIzODlkMmFlYTUxZGZlYWFjOTJiZWRmOWMyYWY3Zi4uNjE1NDJjNTA4MjExNDk2Mjk3YjM2
Y2VjZGU0Nzk0YjQ2Mjg0ZTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfaW1w
bC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9pbXBsLmNjCkBAIC05LDYgKzksOCBAQAog
ICoKICAqLwogCisjaWZkZWYgUlRDX0VOQUJMRV9WUDkKKwogI2luY2x1ZGUgIm1vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4K
QEAgLTM3LDExICszOSwxNiBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIG5hbWVzcGFjZSB7Citj
b25zdCBjaGFyIGtWcDlUcnVzdGVkUmF0ZUNvbnRyb2xsZXJGaWVsZFRyaWFsW10gPQorICAgICJX
ZWJSVEMtTGlidnB4VnA5VHJ1c3RlZFJhdGVDb250cm9sbGVyIjsKKwogLy8gTWFwcyBmcm9tIGdv
Zl9pZHggdG8gZW5jb2RlciBpbnRlcm5hbCByZWZlcmVuY2UgZnJhbWUgYnVmZmVyIGluZGV4LiBU
aGVzZQogLy8gbWFwcyB3b3JrIGZvciAxLDIgYW5kIDMgdGVtcG9yYWwgbGF5ZXJzIHdpdGggR09G
IGxlbmd0aCBvZiAxLDIgYW5kIDQgZnJhbWVzLgogdWludDhfdCBrUmVmQnVmSWR4WzRdID0gezAs
IDAsIDAsIDF9OwogdWludDhfdCBrVXBkQnVmSWR4WzRdID0gezAsIDAsIDEsIDB9OwogCitpbnQg
a01heE51bVRpbGVzNGtWaWRlbyA9IDg7CisKIC8vIE9ubHkgcG9zaXRpdmUgc3BlZWRzLCByYW5n
ZSBmb3IgcmVhbC10aW1lIGNvZGluZyBjdXJyZW50bHkgaXM6IDUgLSA4LgogLy8gTG93ZXIgbWVh
bnMgc2xvd2VyL2JldHRlciBxdWFsaXR5LCBoaWdoZXIgbWVhbnMgZmFzdGVzdC9sb3dlciBxdWFs
aXR5LgogaW50IEdldENwdVNwZWVkKGludCB3aWR0aCwgaW50IGhlaWdodCkgewpAQCAtMTE5LDIz
ICsxMjYsNiBAQCBDb2xvclNwYWNlIEV4dHJhY3RWUDlDb2xvclNwYWNlKHZweF9jb2xvcl9zcGFj
ZV90IHNwYWNlX3QsCiB9CiB9ICAvLyBuYW1lc3BhY2UKIAotc3RkOjp2ZWN0b3I8U2RwVmlkZW9G
b3JtYXQ+IFN1cHBvcnRlZFZQOUNvZGVjcygpIHsKLSAgLy8gVE9ETyhlbWlyY2FuKTogQWRkIFBy
b2ZpbGUgMiBzdXBwb3J0IGFmdGVyIGZpeGluZyBicm93c2VyX3Rlc3RzLgotICBzdGQ6OnZlY3Rv
cjxTZHBWaWRlb0Zvcm1hdD4gc3VwcG9ydGVkX2Zvcm1hdHN7U2RwVmlkZW9Gb3JtYXQoCi0gICAg
ICBjcmlja2V0OjprVnA5Q29kZWNOYW1lLAotICAgICAge3trVlA5Rm10cFByb2ZpbGVJZCwgVlA5
UHJvZmlsZVRvU3RyaW5nKFZQOVByb2ZpbGU6OmtQcm9maWxlMCl9fSl9OwotICByZXR1cm4gc3Vw
cG9ydGVkX2Zvcm1hdHM7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxWUDlFbmNvZGVyPiBWUDlFbmNv
ZGVyOjpDcmVhdGUoKSB7Ci0gIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxWUDlFbmNvZGVySW1w
bD4oY3JpY2tldDo6VmlkZW9Db2RlYygpKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFZQOUVuY29k
ZXI+IFZQOUVuY29kZXI6OkNyZWF0ZSgKLSAgICBjb25zdCBjcmlja2V0OjpWaWRlb0NvZGVjJiBj
b2RlYykgewotICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8VlA5RW5jb2RlckltcGw+KGNvZGVj
KTsKLX0KLQogdm9pZCBWUDlFbmNvZGVySW1wbDo6RW5jb2Rlck91dHB1dENvZGVkUGFja2V0Q2Fs
bGJhY2sodnB4X2NvZGVjX2N4X3BrdCogcGt0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogdXNlcl9kYXRhKSB7CiAgIFZQOUVuY29k
ZXJJbXBsKiBlbmMgPSBzdGF0aWNfY2FzdDxWUDlFbmNvZGVySW1wbCo+KHVzZXJfZGF0YSk7CkBA
IC0xNjAsMTIgKzE1MCwxNiBAQCBWUDlFbmNvZGVySW1wbDo6VlA5RW5jb2RlckltcGwoY29uc3Qg
Y3JpY2tldDo6VmlkZW9Db2RlYyYgY29kZWMpCiAgICAgICBudW1fdGVtcG9yYWxfbGF5ZXJzXygw
KSwKICAgICAgIG51bV9zcGF0aWFsX2xheWVyc18oMCksCiAgICAgICBudW1fYWN0aXZlX3NwYXRp
YWxfbGF5ZXJzXygwKSwKLSAgICAgIGxheWVyX2RlYWN0aXZhdGlvbl9yZXF1aXJlc19rZXlfZnJh
bWVfKHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgKLSAgICAgICAgICAiV2ViUlRDLVZw
OUlzc3VlS2V5RnJhbWVPbkxheWVyRGVhY3RpdmF0aW9uIikpLAorICAgICAgbGF5ZXJfZGVhY3Rp
dmF0aW9uX3JlcXVpcmVzX2tleV9mcmFtZV8oCisgICAgICAgICAgZmllbGRfdHJpYWw6OklzRW5h
YmxlZCgiV2ViUlRDLVZwOUlzc3VlS2V5RnJhbWVPbkxheWVyRGVhY3RpdmF0aW9uIikpLAogICAg
ICAgaXNfc3ZjXyhmYWxzZSksCiAgICAgICBpbnRlcl9sYXllcl9wcmVkXyhJbnRlckxheWVyUHJl
ZE1vZGU6OmtPbiksCiAgICAgICBleHRlcm5hbF9yZWZfY29udHJvbF8oCi0gICAgICAgICAgd2Vi
cnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtVnA5RXh0ZXJuYWxSZWZDdHJsIikp
LAorICAgICAgICAgIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1WcDlFeHRlcm5hbFJl
ZkN0cmwiKSksCisgICAgICB0cnVzdGVkX3JhdGVfY29udHJvbGxlcl8oCisgICAgICAgICAgZmll
bGRfdHJpYWw6OklzRW5hYmxlZChrVnA5VHJ1c3RlZFJhdGVDb250cm9sbGVyRmllbGRUcmlhbCkp
LAorICAgICAgZnVsbF9zdXBlcmZyYW1lX2Ryb3BfKHRydWUpLAorICAgICAgZmlyc3RfZnJhbWVf
aW5fcGljdHVyZV8odHJ1ZSksCiAgICAgICBpc19mbGV4aWJsZV9tb2RlXyhmYWxzZSkgewogICBt
ZW1zZXQoJmNvZGVjXywgMCwgc2l6ZW9mKGNvZGVjXykpOwogICBtZW1zZXQoJnN2Y19wYXJhbXNf
LCAwLCBzaXplb2YodnB4X3N2Y19leHRyYV9jZmdfdCkpOwpAQCAtNjI3LDcgKzYyMSw4IEBAIGlu
dCBWUDlFbmNvZGVySW1wbDo6SW5pdEFuZFNldENvbnRyb2xTZXR0aW5ncyhjb25zdCBWaWRlb0Nv
ZGVjKiBpbnN0KSB7CiAgICAgLy8gcXVhbGl0eSBmbGlja2VyaW5nIGFuZCBpcyBub3QgY29tcGF0
aWJsZSB3aXRoIFJUUCBub24tZmxleGlibGUgbW9kZS4KICAgICB2cHhfc3ZjX2ZyYW1lX2Ryb3Bf
dCBzdmNfZHJvcF9mcmFtZTsKICAgICBtZW1zZXQoJnN2Y19kcm9wX2ZyYW1lLCAwLCBzaXplb2Yo
c3ZjX2Ryb3BfZnJhbWUpKTsKLSAgICBzdmNfZHJvcF9mcmFtZS5mcmFtZWRyb3BfbW9kZSA9IEZV
TExfU1VQRVJGUkFNRV9EUk9QOworICAgIHN2Y19kcm9wX2ZyYW1lLmZyYW1lZHJvcF9tb2RlID0K
KyAgICAgICAgZnVsbF9zdXBlcmZyYW1lX2Ryb3BfID8gRlVMTF9TVVBFUkZSQU1FX0RST1AgOiBD
T05TVFJBSU5FRF9MQVlFUl9EUk9QOwogICAgIHN2Y19kcm9wX2ZyYW1lLm1heF9jb25zZWNfZHJv
cCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1fc3BhdGlhbF9sYXllcnNfOyArK2kpIHsKICAgICAgIHN2Y19kcm9wX2ZyYW1l
LmZyYW1lZHJvcF90aHJlc2hbaV0gPSBjb25maWdfLT5yY19kcm9wZnJhbWVfdGhyZXNoOwpAQCAt
NzAxLDMwICs2OTYsMzMgQEAgaW50IFZQOUVuY29kZXJJbXBsOjpFbmNvZGUoY29uc3QgVmlkZW9G
cmFtZSYgaW5wdXRfaW1hZ2UsCiAgICAgfQogICB9CiAKLSAgaWYgKFZpZGVvQ29kZWNNb2RlOjpr
U2NyZWVuc2hhcmluZyA9PSBjb2RlY18ubW9kZSAmJiAhZm9yY2Vfa2V5X2ZyYW1lXykgewotICAg
IC8vIFNraXAgZW5jb2Rpbmcgc3BhdGlhbCBsYXllciBmcmFtZXMgaWYgdGhlaXIgdGFyZ2V0IGZy
YW1lIHJhdGUgaXMgbG93ZXIKLSAgICAvLyB0aGFuIGFjdHVhbCBpbnB1dCBmcmFtZSByYXRlLgor
ICBzaXplX3QgZmlyc3RfYWN0aXZlX3NwYXRpYWxfbGF5ZXJfaWQgPSAwOworICBpZiAoVmlkZW9D
b2RlY01vZGU6OmtTY3JlZW5zaGFyaW5nID09IGNvZGVjXy5tb2RlKSB7CiAgICAgdnB4X3N2Y19s
YXllcl9pZF90IGxheWVyX2lkID0gezB9OwotICAgIGNvbnN0IHNpemVfdCBnb2ZfaWR4ID0gKHBp
Y3Nfc2luY2Vfa2V5XyArIDEpICUgZ29mXy5udW1fZnJhbWVzX2luX2dvZjsKLSAgICBsYXllcl9p
ZC50ZW1wb3JhbF9sYXllcl9pZCA9IGdvZl8udGVtcG9yYWxfaWR4W2dvZl9pZHhdOworICAgIGlm
ICghZm9yY2Vfa2V5X2ZyYW1lXykgeworICAgICAgLy8gU2tpcCBlbmNvZGluZyBzcGF0aWFsIGxh
eWVyIGZyYW1lcyBpZiB0aGVpciB0YXJnZXQgZnJhbWUgcmF0ZSBpcyBsb3dlcgorICAgICAgLy8g
dGhhbiBhY3R1YWwgaW5wdXQgZnJhbWUgcmF0ZS4KKyAgICAgIGNvbnN0IHNpemVfdCBnb2ZfaWR4
ID0gKHBpY3Nfc2luY2Vfa2V5XyArIDEpICUgZ29mXy5udW1fZnJhbWVzX2luX2dvZjsKKyAgICAg
IGxheWVyX2lkLnRlbXBvcmFsX2xheWVyX2lkID0gZ29mXy50ZW1wb3JhbF9pZHhbZ29mX2lkeF07
CiAKLSAgICBjb25zdCB1aW50MzJfdCBmcmFtZV90aW1lc3RhbXBfbXMgPQotICAgICAgICAxMDAw
ICogaW5wdXRfaW1hZ2UudGltZXN0YW1wKCkgLyBrVmlkZW9QYXlsb2FkVHlwZUZyZXF1ZW5jeTsK
KyAgICAgIGNvbnN0IHVpbnQzMl90IGZyYW1lX3RpbWVzdGFtcF9tcyA9CisgICAgICAgICAgMTAw
MCAqIGlucHV0X2ltYWdlLnRpbWVzdGFtcCgpIC8ga1ZpZGVvUGF5bG9hZFR5cGVGcmVxdWVuY3k7
CiAKLSAgICBmb3IgKHVpbnQ4X3Qgc2xfaWR4ID0gMDsgc2xfaWR4IDwgbnVtX2FjdGl2ZV9zcGF0
aWFsX2xheWVyc187ICsrc2xfaWR4KSB7Ci0gICAgICBpZiAoZnJhbWVyYXRlX2NvbnRyb2xsZXJf
W3NsX2lkeF0uRHJvcEZyYW1lKGZyYW1lX3RpbWVzdGFtcF9tcykpIHsKLSAgICAgICAgKytsYXll
cl9pZC5zcGF0aWFsX2xheWVyX2lkOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgYnJlYWs7Cisg
ICAgICBmb3IgKHVpbnQ4X3Qgc2xfaWR4ID0gMDsgc2xfaWR4IDwgbnVtX2FjdGl2ZV9zcGF0aWFs
X2xheWVyc187ICsrc2xfaWR4KSB7CisgICAgICAgIGlmIChmcmFtZXJhdGVfY29udHJvbGxlcl9b
c2xfaWR4XS5Ecm9wRnJhbWUoZnJhbWVfdGltZXN0YW1wX21zKSkgeworICAgICAgICAgICsrbGF5
ZXJfaWQuc3BhdGlhbF9sYXllcl9pZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogICAgICAgfQotICAgIH0KIAotICAgIFJUQ19EQ0hFQ0tfTEUobGF5ZXJf
aWQuc3BhdGlhbF9sYXllcl9pZCwgbnVtX2FjdGl2ZV9zcGF0aWFsX2xheWVyc18pOwotICAgIGlm
IChsYXllcl9pZC5zcGF0aWFsX2xheWVyX2lkID49IG51bV9hY3RpdmVfc3BhdGlhbF9sYXllcnNf
KSB7Ci0gICAgICAvLyBEcm9wIGVudGlyZSBwaWN0dXJlLgotICAgICAgcmV0dXJuIFdFQlJUQ19W
SURFT19DT0RFQ19PSzsKKyAgICAgIFJUQ19EQ0hFQ0tfTEUobGF5ZXJfaWQuc3BhdGlhbF9sYXll
cl9pZCwgbnVtX2FjdGl2ZV9zcGF0aWFsX2xheWVyc18pOworICAgICAgaWYgKGxheWVyX2lkLnNw
YXRpYWxfbGF5ZXJfaWQgPj0gbnVtX2FjdGl2ZV9zcGF0aWFsX2xheWVyc18pIHsKKyAgICAgICAg
Ly8gRHJvcCBlbnRpcmUgcGljdHVyZS4KKyAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19PSzsKKyAgICAgIH0KICAgICB9Ci0KKyAgICBmaXJzdF9hY3RpdmVfc3BhdGlhbF9sYXllcl9p
ZCA9IGxheWVyX2lkLnNwYXRpYWxfbGF5ZXJfaWQ7CiAgICAgdnB4X2NvZGVjX2NvbnRyb2woZW5j
b2Rlcl8sIFZQOUVfU0VUX1NWQ19MQVlFUl9JRCwgJmxheWVyX2lkKTsKICAgfQogCkBAIC03ODUs
MTAgKzc4MywyMSBAQCBpbnQgVlA5RW5jb2RlckltcGw6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1l
JiBpbnB1dF9pbWFnZSwKICAgfQogCiAgIGlmIChleHRlcm5hbF9yZWZfY29udHJvbF8pIHsKLSAg
ICB2cHhfc3ZjX3JlZl9mcmFtZV9jb25maWdfdCByZWZfY29uZmlnID0gU2V0UmVmZXJlbmNlcyhm
b3JjZV9rZXlfZnJhbWVfKTsKKyAgICB2cHhfc3ZjX3JlZl9mcmFtZV9jb25maWdfdCByZWZfY29u
ZmlnID0KKyAgICAgICAgU2V0UmVmZXJlbmNlcyhmb3JjZV9rZXlfZnJhbWVfLCBmaXJzdF9hY3Rp
dmVfc3BhdGlhbF9sYXllcl9pZCk7CisKKyAgICBpZiAoVmlkZW9Db2RlY01vZGU6OmtTY3JlZW5z
aGFyaW5nID09IGNvZGVjXy5tb2RlKSB7CisgICAgICBmb3IgKHVpbnQ4X3Qgc2xfaWR4ID0gMDsg
c2xfaWR4IDwgbnVtX2FjdGl2ZV9zcGF0aWFsX2xheWVyc187ICsrc2xfaWR4KSB7CisgICAgICAg
IHJlZl9jb25maWcuZHVyYXRpb25bc2xfaWR4XSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KAorICAg
ICAgICAgICAgOTAwMDAgLyBmcmFtZXJhdGVfY29udHJvbGxlcl9bc2xfaWR4XS5HZXRUYXJnZXRS
YXRlKCkpOworICAgICAgfQorICAgIH0KKwogICAgIHZweF9jb2RlY19jb250cm9sKGVuY29kZXJf
LCBWUDlFX1NFVF9TVkNfUkVGX0ZSQU1FX0NPTkZJRywgJnJlZl9jb25maWcpOwogICB9CiAKKyAg
Zmlyc3RfZnJhbWVfaW5fcGljdHVyZV8gPSB0cnVlOworCiAgIC8vIFRPRE8oc3NpbGtpbik6IEZy
YW1lIGR1cmF0aW9uIHNob3VsZCBiZSBzcGVjaWZpZWQgcGVyIHNwYXRpYWwgbGF5ZXIKICAgLy8g
c2luY2UgdGhlaXIgZnJhbWUgcmF0ZSBjYW4gYmUgZGlmZmVyZW50LiBGb3Igbm93IGNhbGN1bGF0
ZSBmcmFtZSBkdXJhdGlvbgogICAvLyBiYXNlZCBvbiB0YXJnZXQgZnJhbWUgcmF0ZSBvZiB0aGUg
aGlnaGVzdCBzcGF0aWFsIGxheWVyLCB3aGljaCBmcmFtZSByYXRlCkBAIC04MTQsOCArODIzLDEw
IEBAIGludCBWUDlFbmNvZGVySW1wbDo6RW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2lt
YWdlLAogICB9CiAgIHRpbWVzdGFtcF8gKz0gZHVyYXRpb247CiAKLSAgY29uc3QgYm9vbCBlbmRf
b2ZfcGljdHVyZSA9IHRydWU7Ci0gIERlbGl2ZXJCdWZmZXJlZEZyYW1lKGVuZF9vZl9waWN0dXJl
KTsKKyAgaWYgKCFmdWxsX3N1cGVyZnJhbWVfZHJvcF8pIHsKKyAgICBjb25zdCBib29sIGVuZF9v
Zl9waWN0dXJlID0gdHJ1ZTsKKyAgICBEZWxpdmVyQnVmZmVyZWRGcmFtZShlbmRfb2ZfcGljdHVy
ZSk7CisgIH0KIAogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQpAQCAtODIzLDE0
ICs4MzQsMTIgQEAgaW50IFZQOUVuY29kZXJJbXBsOjpFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYg
aW5wdXRfaW1hZ2UsCiB2b2lkIFZQOUVuY29kZXJJbXBsOjpQb3B1bGF0ZUNvZGVjU3BlY2lmaWMo
Q29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGludD4qIHNwYXRpYWxfaWR4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZweF9jb2Rl
Y19jeF9wa3QmIHBrdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCB0aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBmaXJzdF9mcmFtZV9pbl9waWN0dXJlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZXN0YW1wKSB7CiAgIFJUQ19D
SEVDSyhjb2RlY19zcGVjaWZpYyAhPSBudWxscHRyKTsKICAgY29kZWNfc3BlY2lmaWMtPmNvZGVj
VHlwZSA9IGtWaWRlb0NvZGVjVlA5OwotICBjb2RlY19zcGVjaWZpYy0+Y29kZWNfbmFtZSA9IElt
cGxlbWVudGF0aW9uTmFtZSgpOwogICBDb2RlY1NwZWNpZmljSW5mb1ZQOSogdnA5X2luZm8gPSAm
KGNvZGVjX3NwZWNpZmljLT5jb2RlY1NwZWNpZmljLlZQOSk7CiAKLSAgdnA5X2luZm8tPmZpcnN0
X2ZyYW1lX2luX3BpY3R1cmUgPSBmaXJzdF9mcmFtZV9pbl9waWN0dXJlOworICB2cDlfaW5mby0+
Zmlyc3RfZnJhbWVfaW5fcGljdHVyZSA9IGZpcnN0X2ZyYW1lX2luX3BpY3R1cmVfOwogICB2cDlf
aW5mby0+ZmxleGlibGVfbW9kZSA9IGlzX2ZsZXhpYmxlX21vZGVfOwogICB2cDlfaW5mby0+c3Nf
ZGF0YV9hdmFpbGFibGUgPQogICAgICAgKHBrdC5kYXRhLmZyYW1lLmZsYWdzICYgVlBYX0ZSQU1F
X0lTX0tFWSkgPyB0cnVlIDogZmFsc2U7CkBAIC04NjEsNyArODcwLDcgQEAgdm9pZCBWUDlFbmNv
ZGVySW1wbDo6UG9wdWxhdGVDb2RlY1NwZWNpZmljKENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19z
cGVjaWZpYywKIAogICBpZiAocGt0LmRhdGEuZnJhbWUuZmxhZ3MgJiBWUFhfRlJBTUVfSVNfS0VZ
KSB7CiAgICAgcGljc19zaW5jZV9rZXlfID0gMDsKLSAgfSBlbHNlIGlmIChmaXJzdF9mcmFtZV9p
bl9waWN0dXJlKSB7CisgIH0gZWxzZSBpZiAoZmlyc3RfZnJhbWVfaW5fcGljdHVyZV8pIHsKICAg
ICArK3BpY3Nfc2luY2Vfa2V5XzsKICAgfQogCkBAIC04NzcsNyArODg2LDcgQEAgdm9pZCBWUDlF
bmNvZGVySW1wbDo6UG9wdWxhdGVDb2RlY1NwZWNpZmljKENvZGVjU3BlY2lmaWNJbmZvKiBjb2Rl
Y19zcGVjaWZpYywKICAgLy8gaWYgbG93IGxheWVyIGZyYW1lIGlzIGxvc3QpIHRoZW4gcmVjZWl2
ZXIgd29uJ3QgYmUgYWJsZSB0byBkZWNvZGUgbmV4dCBoaWdoCiAgIC8vIGxheWVyIGZyYW1lIHdo
aWNoIHVzZXMgSUxQLgogICB2cDlfaW5mby0+aW50ZXJfbGF5ZXJfcHJlZGljdGVkID0KLSAgICAg
IGZpcnN0X2ZyYW1lX2luX3BpY3R1cmUgPyBmYWxzZSA6IGlzX2ludGVyX2xheWVyX3ByZWRfYWxs
b3dlZDsKKyAgICAgIGZpcnN0X2ZyYW1lX2luX3BpY3R1cmVfID8gZmFsc2UgOiBpc19pbnRlcl9s
YXllcl9wcmVkX2FsbG93ZWQ7CiAKICAgLy8gTWFyayBhbGwgbG93IHNwYXRpYWwgbGF5ZXIgZnJh
bWVzIGFzIHJlZmVyZW5jZXMgKG5vdCBqdXN0IGZyYW1lcyBvZgogICAvLyBhY3RpdmUgbG93IHNw
YXRpYWwgbGF5ZXJzKSBpZiBpbnRlci1sYXllciBwcmVkaWN0aW9uIGlzIGVuYWJsZWQgc2luY2UK
QEAgLTkyMSw2ICs5MzAsOCBAQCB2b2lkIFZQOUVuY29kZXJJbXBsOjpQb3B1bGF0ZUNvZGVjU3Bl
Y2lmaWMoQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljLAogICAgICAgdnA5X2luZm8t
PmdvZi5Db3B5R29mSW5mb1ZQOShnb2ZfKTsKICAgICB9CiAgIH0KKworICBmaXJzdF9mcmFtZV9p
bl9waWN0dXJlXyA9IGZhbHNlOwogfQogCiB2b2lkIFZQOUVuY29kZXJJbXBsOjpGaWxsUmVmZXJl
bmNlSW5kaWNlcyhjb25zdCB2cHhfY29kZWNfY3hfcGt0JiBwa3QsCkBAIC05NzgsNiArOTg5LDgg
QEAgdm9pZCBWUDlFbmNvZGVySW1wbDo6RmlsbFJlZmVyZW5jZUluZGljZXMoY29uc3QgdnB4X2Nv
ZGVjX2N4X3BrdCYgcGt0LAogCiAgIHNpemVfdCBtYXhfcmVmX3RlbXBvcmFsX2xheWVyX2lkID0g
MDsKIAorICBzdGQ6OnZlY3RvcjxzaXplX3Q+IHJlZl9waWRfbGlzdDsKKwogICB2cDlfaW5mby0+
bnVtX3JlZl9waWNzID0gMDsKICAgZm9yIChjb25zdCBSZWZGcmFtZUJ1ZmZlciYgcmVmX2J1ZiA6
IHJlZl9idWZfbGlzdCkgewogICAgIFJUQ19EQ0hFQ0tfTEUocmVmX2J1Zi5waWNfbnVtLCBwaWNf
bnVtKTsKQEAgLTk5MCw2ICsxMDAzLDE2IEBAIHZvaWQgVlA5RW5jb2RlckltcGw6OkZpbGxSZWZl
cmVuY2VJbmRpY2VzKGNvbnN0IHZweF9jb2RlY19jeF9wa3QmIHBrdCwKICAgICAgIH0KICAgICAg
IFJUQ19EQ0hFQ0tfTEUocmVmX2J1Zi50ZW1wb3JhbF9sYXllcl9pZCwgbGF5ZXJfaWQudGVtcG9y
YWxfbGF5ZXJfaWQpOwogCisgICAgICAvLyBFbmNvZGVyIG1heSByZWZlcmVuY2Ugc2V2ZXJhbCBz
cGF0aWFsIGxheWVycyBvbiB0aGUgc2FtZSBwcmV2aW91cworICAgICAgLy8gZnJhbWUgaW4gY2Fz
ZSBpZiBzb21lIHNwYXRpYWwgbGF5ZXJzIGFyZSBza2lwcGVkIG9uIHRoZSBjdXJyZW50IGZyYW1l
LgorICAgICAgLy8gV2Ugc2hvdWxkbid0IHB1dCBkdXBsaWNhdGUgcmVmZXJlbmNlcyBhcyBpdCBt
YXkgYnJlYWsgc29tZSBvbGQKKyAgICAgIC8vIGNsaWVudHMgYW5kIGlzbid0IFJUUCBjb21wYXRp
YmxlLgorICAgICAgaWYgKHN0ZDo6ZmluZChyZWZfcGlkX2xpc3QuYmVnaW4oKSwgcmVmX3BpZF9s
aXN0LmVuZCgpLAorICAgICAgICAgICAgICAgICAgICByZWZfYnVmLnBpY19udW0pICE9IHJlZl9w
aWRfbGlzdC5lbmQoKSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIHJlZl9w
aWRfbGlzdC5wdXNoX2JhY2socmVmX2J1Zi5waWNfbnVtKTsKKwogICAgICAgY29uc3Qgc2l6ZV90
IHBfZGlmZiA9IHBpY19udW0gLSByZWZfYnVmLnBpY19udW07CiAgICAgICBSVENfRENIRUNLX0xF
KHBfZGlmZiwgMTI3VUwpOwogCkBAIC0xMDU0LDcgKzEwNzcsOSBAQCB2b2lkIFZQOUVuY29kZXJJ
bXBsOjpVcGRhdGVSZWZlcmVuY2VCdWZmZXJzKGNvbnN0IHZweF9jb2RlY19jeF9wa3QmIHBrdCwK
ICAgfQogfQogCi12cHhfc3ZjX3JlZl9mcmFtZV9jb25maWdfdCBWUDlFbmNvZGVySW1wbDo6U2V0
UmVmZXJlbmNlcyhib29sIGlzX2tleV9waWMpIHsKK3ZweF9zdmNfcmVmX2ZyYW1lX2NvbmZpZ190
IFZQOUVuY29kZXJJbXBsOjpTZXRSZWZlcmVuY2VzKAorICAgIGJvb2wgaXNfa2V5X3BpYywKKyAg
ICBzaXplX3QgZmlyc3RfYWN0aXZlX3NwYXRpYWxfbGF5ZXJfaWQpIHsKICAgLy8ga1JlZkJ1Zklk
eCwga1VwZEJ1ZklkeCBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gc3VwcG9ydCBsb25nZXIgR09Gcy4K
ICAgUlRDX0RDSEVDS19MRShnb2ZfLm51bV9mcmFtZXNfaW5fZ29mLCA0KTsKIApAQCAtMTEwNiwx
MyArMTEzMSwxNCBAQCB2cHhfc3ZjX3JlZl9mcmFtZV9jb25maWdfdCBWUDlFbmNvZGVySW1wbDo6
U2V0UmVmZXJlbmNlcyhib29sIGlzX2tleV9waWMpIHsKICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAoaXNfaW50ZXJfbGF5ZXJfcHJlZF9hbGxvd2VkICYmIHNsX2lkeCA+IDApIHsKKyAgICBpZiAo
aXNfaW50ZXJfbGF5ZXJfcHJlZF9hbGxvd2VkICYmIHNsX2lkeCA+IGZpcnN0X2FjdGl2ZV9zcGF0
aWFsX2xheWVyX2lkKSB7CiAgICAgICAvLyBTZXQgdXAgc3BhdGlhbCByZWZlcmVuY2UuCiAgICAg
ICBSVENfRENIRUNLKGxhc3RfdXBkYXRlZF9idWZfaWR4KTsKICAgICAgIHJlZl9jb25maWcuZ2xk
X2ZiX2lkeFtzbF9pZHhdID0gKmxhc3RfdXBkYXRlZF9idWZfaWR4OwogICAgICAgcmVmX2NvbmZp
Zy5yZWZlcmVuY2VfZ29sZGVuW3NsX2lkeF0gPSAxOwogICAgIH0gZWxzZSB7Ci0gICAgICBSVENf
RENIRUNLKHJlZl9jb25maWcucmVmZXJlbmNlX2xhc3Rbc2xfaWR4XSAhPSAwIHx8IHNsX2lkeCA9
PSAwIHx8CisgICAgICBSVENfRENIRUNLKHJlZl9jb25maWcucmVmZXJlbmNlX2xhc3Rbc2xfaWR4
XSAhPSAwIHx8CisgICAgICAgICAgICAgICAgIHNsX2lkeCA9PSBmaXJzdF9hY3RpdmVfc3BhdGlh
bF9sYXllcl9pZCB8fAogICAgICAgICAgICAgICAgICBpbnRlcl9sYXllcl9wcmVkXyA9PSBJbnRl
ckxheWVyUHJlZE1vZGU6OmtPZmYpOwogICAgIH0KIApAQCAtMTE0NywxMiArMTE3MywxMSBAQCBp
bnQgVlA5RW5jb2RlckltcGw6OkdldEVuY29kZWRMYXllckZyYW1lKGNvbnN0IHZweF9jb2RlY19j
eF9wa3QqIHBrdCkgewogICB2cHhfc3ZjX2xheWVyX2lkX3QgbGF5ZXJfaWQgPSB7MH07CiAgIHZw
eF9jb2RlY19jb250cm9sKGVuY29kZXJfLCBWUDlFX0dFVF9TVkNfTEFZRVJfSUQsICZsYXllcl9p
ZCk7CiAKLSAgY29uc3QgYm9vbCBmaXJzdF9mcmFtZV9pbl9waWN0dXJlID0gZW5jb2RlZF9pbWFn
ZV8uX2xlbmd0aCA9PSAwOwotICAvLyBFbnN1cmUgd2UgZG9uJ3QgYnVmZmVyIGxheWVycyBvZiBw
cmV2aW91cyBwaWN0dXJlIChzdXBlcmZyYW1lKS4KLSAgUlRDX0RDSEVDSyhmaXJzdF9mcmFtZV9p
bl9waWN0dXJlIHx8IGxheWVyX2lkLnNwYXRpYWxfbGF5ZXJfaWQgPiAwKTsKLQotICBjb25zdCBi
b29sIGVuZF9vZl9waWN0dXJlID0gZmFsc2U7Ci0gIERlbGl2ZXJCdWZmZXJlZEZyYW1lKGVuZF9v
Zl9waWN0dXJlKTsKKyAgaWYgKCFmdWxsX3N1cGVyZnJhbWVfZHJvcF8pIHsKKyAgICAvLyBEZWxp
dmVyIGJ1ZmZlcmVkIGxvdyBzcGF0aWFsIGxheWVyIGZyYW1lLgorICAgIGNvbnN0IGJvb2wgZW5k
X29mX3BpY3R1cmUgPSBmYWxzZTsKKyAgICBEZWxpdmVyQnVmZmVyZWRGcmFtZShlbmRfb2ZfcGlj
dHVyZSk7CisgIH0KIAogICBpZiAocGt0LT5kYXRhLmZyYW1lLnN6ID4gZW5jb2RlZF9pbWFnZV8u
X3NpemUpIHsKICAgICBkZWxldGVbXSBlbmNvZGVkX2ltYWdlXy5fYnVmZmVyOwpAQCAtMTE3OCw3
ICsxMjAzLDcgQEAgaW50IFZQOUVuY29kZXJJbXBsOjpHZXRFbmNvZGVkTGF5ZXJGcmFtZShjb25z
dCB2cHhfY29kZWNfY3hfcGt0KiBwa3QpIHsKICAgbWVtc2V0KCZjb2RlY19zcGVjaWZpY18sIDAs
IHNpemVvZihjb2RlY19zcGVjaWZpY18pKTsKICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzcGF0aWFs
X2luZGV4OwogICBQb3B1bGF0ZUNvZGVjU3BlY2lmaWMoJmNvZGVjX3NwZWNpZmljXywgJnNwYXRp
YWxfaW5kZXgsICpwa3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pbWFnZV8tPnRp
bWVzdGFtcCgpLCBmaXJzdF9mcmFtZV9pbl9waWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlucHV0X2ltYWdlXy0+dGltZXN0YW1wKCkpOwogICBlbmNvZGVkX2ltYWdlXy5TZXRTcGF0
aWFsSW5kZXgoc3BhdGlhbF9pbmRleCk7CiAKICAgaWYgKGlzX2ZsZXhpYmxlX21vZGVfKSB7CkBA
IC0xMjAwLDYgKzEyMjUsMTMgQEAgaW50IFZQOUVuY29kZXJJbXBsOjpHZXRFbmNvZGVkTGF5ZXJG
cmFtZShjb25zdCB2cHhfY29kZWNfY3hfcGt0KiBwa3QpIHsKICAgaW50IHFwID0gLTE7CiAgIHZw
eF9jb2RlY19jb250cm9sKGVuY29kZXJfLCBWUDhFX0dFVF9MQVNUX1FVQU5USVpFUiwgJnFwKTsK
ICAgZW5jb2RlZF9pbWFnZV8ucXBfID0gcXA7CisgIGVuY29kZWRfaW1hZ2VfLlNldENvbG9yU3Bh
Y2UoaW5wdXRfaW1hZ2VfLT5jb2xvcl9zcGFjZSgpKTsKKworICBpZiAoZnVsbF9zdXBlcmZyYW1l
X2Ryb3BfKSB7CisgICAgY29uc3QgYm9vbCBlbmRfb2ZfcGljdHVyZSA9IGVuY29kZWRfaW1hZ2Vf
LlNwYXRpYWxJbmRleCgpLnZhbHVlX29yKDApICsgMSA9PQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudW1fYWN0aXZlX3NwYXRpYWxfbGF5ZXJzXzsKKyAgICBEZWxpdmVyQnVmZmVy
ZWRGcmFtZShlbmRfb2ZfcGljdHVyZSk7CisgIH0KIAogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NP
REVDX09LOwogfQpAQCAtMTIzMCwyMiArMTI2MiwxOSBAQCB2b2lkIFZQOUVuY29kZXJJbXBsOjpE
ZWxpdmVyQnVmZmVyZWRGcmFtZShib29sIGVuZF9vZl9waWN0dXJlKSB7CiAgIH0KIH0KIAotaW50
IFZQOUVuY29kZXJJbXBsOjpTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9z
cywgaW50NjRfdCBydHQpIHsKLSAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLX0KLQog
aW50IFZQOUVuY29kZXJJbXBsOjpSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgICAg
RW5jb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSB7CiAgIGVuY29kZWRfY29tcGxldGVfY2Fs
bGJhY2tfID0gY2FsbGJhY2s7CiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAK
LWNvbnN0IGNoYXIqIFZQOUVuY29kZXJJbXBsOjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7
Ci0gIHJldHVybiAibGlidnB4IjsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFZQOURlY29kZXI+IFZQ
OURlY29kZXI6OkNyZWF0ZSgpIHsKLSAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFZQOURlY29k
ZXJJbXBsPigpOworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBWUDlFbmNvZGVySW1wbDo6R2V0
RW5jb2RlckluZm8oKSBjb25zdCB7CisgIEVuY29kZXJJbmZvIGluZm87CisgIGluZm8uc3VwcG9y
dHNfbmF0aXZlX2hhbmRsZSA9IGZhbHNlOworICBpbmZvLmltcGxlbWVudGF0aW9uX25hbWUgPSAi
bGlidnB4IjsKKyAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0gVmlkZW9FbmNvZGVyOjpTY2FsaW5n
U2V0dGluZ3M6OmtPZmY7CisgIGluZm8uaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyID0gdHJ1
c3RlZF9yYXRlX2NvbnRyb2xsZXJfOworICByZXR1cm4gaW5mbzsKIH0KIAogVlA5RGVjb2Rlcklt
cGw6OlZQOURlY29kZXJJbXBsKCkKQEAgLTEyNzIsMTMgKzEzMDEsMTggQEAgaW50IFZQOURlY29k
ZXJJbXBsOjpJbml0RGVjb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsIGludCBudW1iZXJfb2Zf
Y29yZXMpIHsKICAgaWYgKHJldF92YWwgPCAwKSB7CiAgICAgcmV0dXJuIHJldF92YWw7CiAgIH0K
KwogICBpZiAoZGVjb2Rlcl8gPT0gbnVsbHB0cikgewogICAgIGRlY29kZXJfID0gbmV3IHZweF9j
b2RlY19jdHhfdDsKICAgfQogICB2cHhfY29kZWNfZGVjX2NmZ190IGNmZzsKLSAgLy8gU2V0dGlu
ZyBudW1iZXIgb2YgdGhyZWFkcyB0byBhIGNvbnN0YW50IHZhbHVlICgxKQotICBjZmcudGhyZWFk
cyA9IDE7Ci0gIGNmZy5oID0gY2ZnLncgPSAwOyAgLy8gc2V0IGFmdGVyIGRlY29kZQorICBtZW1z
ZXQoJmNmZywgMCwgc2l6ZW9mKGNmZykpOworCisgIC8vIFdlIHdhbnQgdG8gdXNlIG11bHRpdGhy
ZWFkaW5nIHdoZW4gZGVjb2RpbmcgaGlnaCByZXNvbHV0aW9uIHZpZGVvcy4gQnV0LAorICAvLyBz
aW5jZSB3ZSBkb24ndCBrbm93IHJlc29sdXRpb24gb2YgaW5wdXQgc3RyZWFtIGF0IHRoaXMgc3Rh
Z2UsIHdlIGFsd2F5cworICAvLyBlbmFibGUgaXQuCisgIGNmZy50aHJlYWRzID0gc3RkOjptaW4o
bnVtYmVyX29mX2NvcmVzLCBrTWF4TnVtVGlsZXM0a1ZpZGVvKTsKKwogICB2cHhfY29kZWNfZmxh
Z3NfdCBmbGFncyA9IDA7CiAgIGlmICh2cHhfY29kZWNfZGVjX2luaXQoZGVjb2Rlcl8sIHZweF9j
b2RlY192cDlfZHgoKSwgJmNmZywgZmxhZ3MpKSB7CiAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19D
T0RFQ19NRU1PUlk7CkBAIC0xMzM2LDggKzEzNzAsOCBAQCBpbnQgVlA5RGVjb2RlckltcGw6OkRl
Y29kZShjb25zdCBFbmNvZGVkSW1hZ2UmIGlucHV0X2ltYWdlLAogICB2cHhfY29kZWNfZXJyX3Qg
dnB4X3JldCA9CiAgICAgICB2cHhfY29kZWNfY29udHJvbChkZWNvZGVyXywgVlBYRF9HRVRfTEFT
VF9RVUFOVElaRVIsICZxcCk7CiAgIFJUQ19EQ0hFQ0tfRVEodnB4X3JldCwgVlBYX0NPREVDX09L
KTsKLSAgaW50IHJldCA9Ci0gICAgICBSZXR1cm5GcmFtZShpbWcsIGlucHV0X2ltYWdlLlRpbWVz
dGFtcCgpLCBpbnB1dF9pbWFnZS5udHBfdGltZV9tc18sIHFwKTsKKyAgaW50IHJldCA9IFJldHVy
bkZyYW1lKGltZywgaW5wdXRfaW1hZ2UuVGltZXN0YW1wKCksIGlucHV0X2ltYWdlLm50cF90aW1l
X21zXywKKyAgICAgICAgICAgICAgICAgICAgICAgIHFwLCBpbnB1dF9pbWFnZS5Db2xvclNwYWNl
KCkpOwogICBpZiAocmV0ICE9IDApIHsKICAgICByZXR1cm4gcmV0OwogICB9CkBAIC0xMzQ3LDcg
KzEzODEsOCBAQCBpbnQgVlA5RGVjb2RlckltcGw6OkRlY29kZShjb25zdCBFbmNvZGVkSW1hZ2Um
IGlucHV0X2ltYWdlLAogaW50IFZQOURlY29kZXJJbXBsOjpSZXR1cm5GcmFtZShjb25zdCB2cHhf
aW1hZ2VfdCogaW1nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0
aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgbnRwX3Rp
bWVfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBxcCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcXAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENvbG9yU3BhY2UqIGV4cGxpY2l0X2NvbG9yX3NwYWNlKSB7CiAgIGlm
IChpbWcgPT0gbnVsbHB0cikgewogICAgIC8vIERlY29kZXIgT0sgYW5kIG51bGxwdHIgaW1hZ2Ug
PT4gTm8gc2hvdyBmcmFtZS4KICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX05PX09VVFBV
VDsKQEAgLTEzODksMTUgKzE0MjQsMjEgQEAgaW50IFZQOURlY29kZXJJbXBsOjpSZXR1cm5GcmFt
ZShjb25zdCB2cHhfaW1hZ2VfdCogaW1nLAogICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19OT19PVVRQVVQ7CiAgIH0KIAotICBWaWRlb0ZyYW1lIGRlY29kZWRfaW1hZ2UgPSBWaWRlb0Zy
YW1lOjpCdWlsZGVyKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRfdmlk
ZW9fZnJhbWVfYnVmZmVyKGltZ193cmFwcGVkX2J1ZmZlcikKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5zZXRfdGltZXN0YW1wX21zKDApCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAuc2V0X3RpbWVzdGFtcF9ydHAodGltZXN0YW1wKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLnNldF9udHBfdGltZV9tcyhudHBfdGltZV9tcykKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRfcm90YXRpb24od2VicnRjOjprVmlkZW9Sb3Rh
dGlvbl8wKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldF9jb2xvcl9zcGFj
ZShFeHRyYWN0VlA5Q29sb3JTcGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbWctPmNzLCBpbWctPnJhbmdlLCBpbWctPmJpdF9kZXB0aCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAuYnVpbGQoKTsKKyAgYXV0byBidWlsZGVyID0gVmlkZW9GcmFt
ZTo6QnVpbGRlcigpCisgICAgICAgICAgICAgICAgICAgICAuc2V0X3ZpZGVvX2ZyYW1lX2J1ZmZl
cihpbWdfd3JhcHBlZF9idWZmZXIpCisgICAgICAgICAgICAgICAgICAgICAuc2V0X3RpbWVzdGFt
cF9tcygwKQorICAgICAgICAgICAgICAgICAgICAgLnNldF90aW1lc3RhbXBfcnRwKHRpbWVzdGFt
cCkKKyAgICAgICAgICAgICAgICAgICAgIC5zZXRfbnRwX3RpbWVfbXMobnRwX3RpbWVfbXMpCisg
ICAgICAgICAgICAgICAgICAgICAuc2V0X3JvdGF0aW9uKHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25f
MCk7CisgIGlmIChleHBsaWNpdF9jb2xvcl9zcGFjZSkgeworICAgIGJ1aWxkZXIuc2V0X2NvbG9y
X3NwYWNlKGV4cGxpY2l0X2NvbG9yX3NwYWNlKTsKKyAgfSBlbHNlIHsKKyAgICBidWlsZGVyLnNl
dF9jb2xvcl9zcGFjZSgKKyAgICAgICAgRXh0cmFjdFZQOUNvbG9yU3BhY2UoaW1nLT5jcywgaW1n
LT5yYW5nZSwgaW1nLT5iaXRfZGVwdGgpKTsKKyAgfQorCisgIFZpZGVvRnJhbWUgZGVjb2RlZF9p
bWFnZSA9IGJ1aWxkZXIuYnVpbGQoKTsKKwogICBkZWNvZGVfY29tcGxldGVfY2FsbGJhY2tfLT5E
ZWNvZGVkKGRlY29kZWRfaW1hZ2UsIGFic2w6Om51bGxvcHQsIHFwKTsKICAgcmV0dXJuIFdFQlJU
Q19WSURFT19DT0RFQ19PSzsKIH0KQEAgLTE0MzUsMyArMTQ3Niw1IEBAIGNvbnN0IGNoYXIqIFZQ
OURlY29kZXJJbXBsOjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7CiB9CiAKIH0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBSVENfRU5BQkxFX1ZQOQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOS92cDlfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfaW1wbC5o
CmluZGV4IGQ4Y2UxZmYyYWI1ZWZiMjM3NzNjZjdmMjAyODA4YmYzMTRmYjllNzIuLjNiZmFiOWFk
NWZkNTg5YmFkZDUyM2I0MTlmODE4ZDFmMmU4MjA3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDkvdnA5X2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9pbXBsLmgKQEAgLTEy
LDYgKzEyLDggQEAKICNpZm5kZWYgTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOV9WUDlf
SU1QTF9IXwogI2RlZmluZSBNT0RVTEVTX1ZJREVPX0NPRElOR19DT0RFQ1NfVlA5X1ZQOV9JTVBM
X0hfCiAKKyNpZmRlZiBSVENfRU5BQkxFX1ZQOQorCiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CkBAIC00NiwxMiArNDgsMTAgQEAgY2xhc3MgVlA5
RW5jb2RlckltcGwgOiBwdWJsaWMgVlA5RW5jb2RlciB7CiAKICAgaW50IFJlZ2lzdGVyRW5jb2Rl
Q29tcGxldGVDYWxsYmFjayhFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRl
OwogCi0gIGludCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50
NjRfdCBydHQpIG92ZXJyaWRlOwotCiAgIGludCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRl
b0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlX2FsbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBmcmFtZV9yYXRlKSBvdmVycmlkZTsKIAotICBjb25zdCBjaGFyKiBJ
bXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgRW5jb2RlckluZm8gR2V0RW5j
b2RlckluZm8oKSBjb25zdCBvdmVycmlkZTsKIAogIHByaXZhdGU6CiAgIC8vIERldGVybWluZSBu
dW1iZXIgb2YgZW5jb2RlciB0aHJlYWRzIHRvIHVzZS4KQEAgLTYzLDE1ICs2MywxNiBAQCBjbGFz
cyBWUDlFbmNvZGVySW1wbCA6IHB1YmxpYyBWUDlFbmNvZGVyIHsKICAgdm9pZCBQb3B1bGF0ZUNv
ZGVjU3BlY2lmaWMoQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+KiBzcGF0aWFsX2lkeCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnB4X2NvZGVjX2N4X3BrdCYgcGt0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0aW1lc3RhbXAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmlyc3RfZnJhbWVfaW5fcGljdHVyZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVzdGFtcCk7CiAgIHZvaWQgRmls
bFJlZmVyZW5jZUluZGljZXMoY29uc3QgdnB4X2NvZGVjX2N4X3BrdCYgcGt0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBwaWNfbnVtLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGJvb2wgaW50ZXJfbGF5ZXJfcHJlZGljdGVkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvZGVjU3BlY2lmaWNJbmZvVlA5KiB2cDlfaW5mbyk7CiAgIHZv
aWQgVXBkYXRlUmVmZXJlbmNlQnVmZmVycyhjb25zdCB2cHhfY29kZWNfY3hfcGt0JiBwa3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgcGljX251bSk7Ci0gIHZw
eF9zdmNfcmVmX2ZyYW1lX2NvbmZpZ190IFNldFJlZmVyZW5jZXMoYm9vbCBpc19rZXlfcGljKTsK
KyAgdnB4X3N2Y19yZWZfZnJhbWVfY29uZmlnX3QgU2V0UmVmZXJlbmNlcygKKyAgICAgIGJvb2wg
aXNfa2V5X3BpYywKKyAgICAgIHNpemVfdCBmaXJzdF9hY3RpdmVfc3BhdGlhbF9sYXllcl9pZCk7
CiAKICAgYm9vbCBFeHBsaWNpdGx5Q29uZmlndXJlZFNwYXRpYWxMYXllcnMoKSBjb25zdDsKICAg
Ym9vbCBTZXRTdmNSYXRlcyhjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlX2Fs
bG9jYXRpb24pOwpAQCAtMTE5LDYgKzEyMCw5IEBAIGNsYXNzIFZQOUVuY29kZXJJbXBsIDogcHVi
bGljIFZQOUVuY29kZXIgewogICBib29sIGlzX3N2Y187CiAgIEludGVyTGF5ZXJQcmVkTW9kZSBp
bnRlcl9sYXllcl9wcmVkXzsKICAgYm9vbCBleHRlcm5hbF9yZWZfY29udHJvbF87CisgIGNvbnN0
IGJvb2wgdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXJfOworICBjb25zdCBib29sIGZ1bGxfc3VwZXJm
cmFtZV9kcm9wXzsKKyAgYm9vbCBmaXJzdF9mcmFtZV9pbl9waWN0dXJlXzsKIAogICBzdGQ6OnZl
Y3RvcjxGcmFtZXJhdGVDb250cm9sbGVyPiBmcmFtZXJhdGVfY29udHJvbGxlcl87CiAKQEAgLTE2
OCw3ICsxNzIsOCBAQCBjbGFzcyBWUDlEZWNvZGVySW1wbCA6IHB1YmxpYyBWUDlEZWNvZGVyIHsK
ICAgaW50IFJldHVybkZyYW1lKGNvbnN0IHZweF9pbWFnZV90KiBpbWcsCiAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCB0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG50cF90
aW1lX21zLAotICAgICAgICAgICAgICAgICAgaW50IHFwKTsKKyAgICAgICAgICAgICAgICAgIGlu
dCBxcCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IENvbG9yU3BhY2UqIGV4cGxpY2l0X2NvbG9y
X3NwYWNlKTsKIAogICAvLyBNZW1vcnkgcG9vbCB1c2VkIHRvIHNoYXJlIGJ1ZmZlcnMgYmV0d2Vl
biBsaWJ2cHggYW5kIHdlYnJ0Yy4KICAgVnA5RnJhbWVCdWZmZXJQb29sIGZyYW1lX2J1ZmZlcl9w
b29sXzsKQEAgLTE3OSw0ICsxODQsNiBAQCBjbGFzcyBWUDlEZWNvZGVySW1wbCA6IHB1YmxpYyBW
UDlEZWNvZGVyIHsKIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKKyNlbmRpZiAgLy8gUlRD
X0VOQUJMRV9WUDkKKwogI2VuZGlmICAvLyBNT0RVTEVTX1ZJREVPX0NPRElOR19DT0RFQ1NfVlA5
X1ZQOV9JTVBMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9lbmNvZGVkX2ZyYW1lLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9l
bmNvZGVkX2ZyYW1lLmgKaW5kZXggYTA4ZWIwNzY5Yzc3ZjlmNGFlYjMzZmM5ZTFmMTVjMmRhZWMx
NDhhNS4uYzdlZmQ0MDA3MjdiODY0YWZkZWU0OTBkNjI5YjFlYTE3NDdlOTljNiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvZW5jb2RlZF9mcmFtZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2VuY29kZWRfZnJhbWUuaApAQCAt
MTMsOCArMTMsOCBAQAogCiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL3ZpZGVv
L2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChi
dWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1l
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5n
X2RlZmluZXMuaCIKQEAgLTYwLDExICs2MCwyMSBAQCBjbGFzcyBWQ01FbmNvZGVkRnJhbWUgOiBw
cm90ZWN0ZWQgRW5jb2RlZEltYWdlIHsKICAgICogICBHZXQgcG9pbnRlciB0byBmcmFtZSBidWZm
ZXIKICAgICovCiAgIGNvbnN0IHVpbnQ4X3QqIEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIF9idWZm
ZXI7IH0KKyAgLyoqCisgICAqICAgR2V0IHBvaW50ZXIgdG8gZnJhbWUgYnVmZmVyIHRoYXQgY2Fu
IGJlIG11dGF0ZWQuCisgICAqLworICB1aW50OF90KiBNdXRhYmxlQnVmZmVyKCkgeyByZXR1cm4g
X2J1ZmZlcjsgfQogICAvKioKICAgICogICBHZXQgZnJhbWUgbGVuZ3RoCiAgICAqLwogICBzaXpl
X3QgTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gX2xlbmd0aDsgfQotCisgIC8qKgorICAgKiAgIFNl
dCBmcmFtZSBsZW5ndGgKKyAgICovCisgIHZvaWQgU2V0TGVuZ3RoKHNpemVfdCBsZW5ndGgpIHsK
KyAgICBSVENfRENIRUNLKGxlbmd0aCA8PSBfc2l6ZSk7CisgICAgX2xlbmd0aCA9IGxlbmd0aDsK
KyAgfQogICAvKioKICAgICogICBGcmFtZSBSVFAgdGltZXN0YW1wICg5MGtIeikKICAgICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9mZWNfY29udHJvbGxlcl9kZWZhdWx0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZmVjX2Nv
bnRyb2xsZXJfZGVmYXVsdC5jYwppbmRleCA1ZmUzOGU2Mjk3ZGQxMzc5YjBlMzQ4M2JjZmRhODJl
NDVjY2JhZjAzLi44NDFlZDc0MmRhYzUwOWU1NzcyYTAyNjc0MDQ0YzNmYmVmNDc0YThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9mZWNfY29udHJvbGxlcl9kZWZhdWx0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZlY19j
b250cm9sbGVyX2RlZmF1bHQuY2MKQEAgLTgsMTAgKzgsMTcgQEAKICAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCi0j
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvZmVjX2NvbnRyb2xsZXJfZGVmYXVsdC5oIgor
I2luY2x1ZGUgPGFsZ29yaXRobT4KKworI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2Zl
Y19jb250cm9sbGVyX2RlZmF1bHQuaCIgIC8vIE5PTElOVAorI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Z2dpbmcuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIHVzaW5nIHJ0Yzo6Q3JpdFNjb3BlOworCitjb25zdCBm
bG9hdCBrUHJvdGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVzaG9sZCA9IDAuNTsKKwogRmVjQ29udHJv
bGxlckRlZmF1bHQ6OkZlY0NvbnRyb2xsZXJEZWZhdWx0KAogICAgIENsb2NrKiBjbG9jaywKICAg
ICBWQ01Qcm90ZWN0aW9uQ2FsbGJhY2sqIHByb3RlY3Rpb25fY2FsbGJhY2spCkBAIC0xOSwxMyAr
MjYsMTUgQEAgRmVjQ29udHJvbGxlckRlZmF1bHQ6OkZlY0NvbnRyb2xsZXJEZWZhdWx0KAogICAg
ICAgcHJvdGVjdGlvbl9jYWxsYmFja18ocHJvdGVjdGlvbl9jYWxsYmFjayksCiAgICAgICBsb3Nz
X3Byb3RfbG9naWNfKG5ldyBtZWRpYV9vcHRpbWl6YXRpb246OlZDTUxvc3NQcm90ZWN0aW9uTG9n
aWMoCiAgICAgICAgICAgY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSkpLAotICAgICAgbWF4
X3BheWxvYWRfc2l6ZV8oMTQ2MCkge30KKyAgICAgIG1heF9wYXlsb2FkX3NpemVfKDE0NjApLAor
ICAgICAgb3ZlcmhlYWRfdGhyZXNob2xkXyhHZXRQcm90ZWN0aW9uT3ZlcmhlYWRSYXRlVGhyZXNo
b2xkKCkpIHt9CiAKIEZlY0NvbnRyb2xsZXJEZWZhdWx0OjpGZWNDb250cm9sbGVyRGVmYXVsdChD
bG9jayogY2xvY2spCiAgICAgOiBjbG9ja18oY2xvY2spLAogICAgICAgbG9zc19wcm90X2xvZ2lj
XyhuZXcgbWVkaWFfb3B0aW1pemF0aW9uOjpWQ01Mb3NzUHJvdGVjdGlvbkxvZ2ljKAogICAgICAg
ICAgIGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpKSwKLSAgICAgIG1heF9wYXlsb2FkX3Np
emVfKDE0NjApIHt9CisgICAgICBtYXhfcGF5bG9hZF9zaXplXygxNDYwKSwKKyAgICAgIG92ZXJo
ZWFkX3RocmVzaG9sZF8oR2V0UHJvdGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVzaG9sZCgpKSB7fQog
CiBGZWNDb250cm9sbGVyRGVmYXVsdDo6fkZlY0NvbnRyb2xsZXJEZWZhdWx0KHZvaWQpIHsKICAg
bG9zc19wcm90X2xvZ2ljXy0+UmVsZWFzZSgpOwpAQCAtNDYsNiArNTUsMjUgQEAgdm9pZCBGZWND
b250cm9sbGVyRGVmYXVsdDo6U2V0RW5jb2RpbmdEYXRhKHNpemVfdCB3aWR0aCwKICAgbWF4X3Bh
eWxvYWRfc2l6ZV8gPSBtYXhfcGF5bG9hZF9zaXplOwogfQogCitmbG9hdCBGZWNDb250cm9sbGVy
RGVmYXVsdDo6R2V0UHJvdGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVzaG9sZCgpIHsKKyAgZmxvYXQg
b3ZlcmhlYWRfdGhyZXNob2xkID0KKyAgICAgIHN0cnRvZih3ZWJydGM6OmZpZWxkX3RyaWFsOjpG
aW5kRnVsbE5hbWUoCisgICAgICAgICAgICAgICAgICJXZWJSVEMtUHJvdGVjdGlvbk92ZXJoZWFk
UmF0ZVRocmVzaG9sZCIpCisgICAgICAgICAgICAgICAgIC5jX3N0cigpLAorICAgICAgICAgICAg
IG51bGxwdHIpOworICBpZiAob3ZlcmhlYWRfdGhyZXNob2xkID4gMCAmJiBvdmVyaGVhZF90aHJl
c2hvbGQgPD0gMSkgeworICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlByb3RlY3Rpb25PdmVyaGVh
ZFJhdGVUaHJlc2hvbGQgaXMgc2V0IHRvICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IG92ZXJo
ZWFkX3RocmVzaG9sZDsKKyAgICByZXR1cm4gb3ZlcmhlYWRfdGhyZXNob2xkOworICB9IGVsc2Ug
aWYgKG92ZXJoZWFkX3RocmVzaG9sZCA8IDAgfHwgb3ZlcmhlYWRfdGhyZXNob2xkID4gMSkgewor
ICAgIFJUQ19MT0coV0FSTklORykgPDwgIlByb3RlY3Rpb25PdmVyaGVhZFJhdGVUaHJlc2hvbGQg
ZmllbGQgdHJpYWwgaXMgc2V0IHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbiBpbnZh
bGlkIHZhbHVlLCBleHBlY3RpbmcgYSB2YWx1ZSBiZXR3ZWVuICgwLCAxXS4iOworICB9CisgIC8v
IFdlYlJUQy1Qcm90ZWN0aW9uT3ZlcmhlYWRSYXRlVGhyZXNob2xkIGZpZWxkIHRyaWFsIHN0cmlu
ZyBpcyBub3QgZm91bmQsIHVzZQorICAvLyB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgcmV0dXJuIGtQ
cm90ZWN0aW9uT3ZlcmhlYWRSYXRlVGhyZXNob2xkOworfQorCiB1aW50MzJfdCBGZWNDb250cm9s
bGVyRGVmYXVsdDo6VXBkYXRlRmVjUmF0ZXMoCiAgICAgdWludDMyX3QgZXN0aW1hdGVkX2JpdHJh
dGVfYnBzLAogICAgIGludCBhY3R1YWxfZnJhbWVyYXRlX2ZwcywKQEAgLTEyNSw5ICsxNTMsOSBA
QCB1aW50MzJfdCBGZWNDb250cm9sbGVyRGVmYXVsdDo6VXBkYXRlRmVjUmF0ZXMoCiAgICAgICAg
IHN0YXRpY19jYXN0PGZsb2F0PihzZW50X25hY2tfcmF0ZV9icHMgKyBzZW50X2ZlY19yYXRlX2Jw
cykgLwogICAgICAgICBzZW50X3RvdGFsX3JhdGVfYnBzOwogICB9Ci0gIC8vIENhcCB0aGUgb3Zl
cmhlYWQgZXN0aW1hdGUgdG8gNTAlLgotICBpZiAocHJvdGVjdGlvbl9vdmVyaGVhZF9yYXRlID4g
MC41KQotICAgIHByb3RlY3Rpb25fb3ZlcmhlYWRfcmF0ZSA9IDAuNTsKKyAgLy8gQ2FwIHRoZSBv
dmVyaGVhZCBlc3RpbWF0ZSB0byBhIHRocmVzaG9sZCwgZGVmYXVsdCBpcyA1MCUuCisgIHByb3Rl
Y3Rpb25fb3ZlcmhlYWRfcmF0ZSA9CisgICAgICBzdGQ6Om1pbihwcm90ZWN0aW9uX292ZXJoZWFk
X3JhdGUsIG92ZXJoZWFkX3RocmVzaG9sZF8pOwogICAvLyBTb3VyY2UgY29kaW5nIHJhdGU6IHRv
dGFsIHJhdGUgLSBwcm90ZWN0aW9uIG92ZXJoZWFkLgogICByZXR1cm4gZXN0aW1hdGVkX2JpdHJh
dGVfYnBzICogKDEuMCAtIHByb3RlY3Rpb25fb3ZlcmhlYWRfcmF0ZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9mZWNfY29udHJvbGxlcl9kZWZhdWx0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mZWNfY29udHJvbGxlcl9k
ZWZhdWx0LmgKaW5kZXggYTk1ZWNlZDI0NWEyMjA4YTAyNDIwZDEyYmFjZDU2ODkxZjYxNzkwMC4u
OWQ3OWE2MWQyOGViYmFlZWQ3ZjBmMzFhNTFjN2Y3NjgwYWU0NGFlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvZmVjX2NvbnRyb2xsZXJfZGVmYXVsdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZlY19jb250cm9sbGVyX2Rl
ZmF1bHQuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBGZWNDb250cm9sbGVyRGVmYXVsdCA6IHB1
YmxpYyBGZWNDb250cm9sbGVyIHsKICAgdm9pZCBVcGRhdGVXaXRoRW5jb2RlZERhdGEoY29uc3Qg
c2l6ZV90IGVuY29kZWRfaW1hZ2VfbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBGcmFtZVR5cGUgZW5jb2RlZF9pbWFnZV9mcmFtZXR5cGUpIG92ZXJyaWRlOwogICBi
b29sIFVzZUxvc3NWZWN0b3JNYXNrKCkgb3ZlcnJpZGU7CisgIGZsb2F0IEdldFByb3RlY3Rpb25P
dmVyaGVhZFJhdGVUaHJlc2hvbGQoKTsKIAogIHByaXZhdGU6CiAgIGVudW0geyBrQml0cmF0ZUF2
ZXJhZ2VXaW5NcyA9IDEwMDAgfTsKQEAgLTUyLDYgKzUzLDcgQEAgY2xhc3MgRmVjQ29udHJvbGxl
ckRlZmF1bHQgOiBwdWJsaWMgRmVjQ29udHJvbGxlciB7CiAgICAgICBSVENfR1VBUkRFRF9CWShj
cml0X3NlY3RfKTsKICAgc2l6ZV90IG1heF9wYXlsb2FkX3NpemVfIFJUQ19HVUFSREVEX0JZKGNy
aXRfc2VjdF8pOwogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZlY0NvbnRyb2xsZXJE
ZWZhdWx0KTsKKyAgY29uc3QgZmxvYXQgb3ZlcmhlYWRfdGhyZXNob2xkXzsKIH07CiAKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9mcmFtZV9idWZmZXIyLmNjCmluZGV4IDM3NzYxMWU1ZTI3MTQzNzUwNmFkOTg0N2VhNjg0
MGM5ZTFkNmQ2MDYuLjA0ZmJhODRjYWY1NWI0NDdjMDU3ZGE5M2QwNmU2NTQwMTZlYzFlYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVy
Mi5jYwpAQCAtNDYsMTEgKzQ2LDkgQEAgRnJhbWVCdWZmZXI6OkZyYW1lQnVmZmVyKENsb2NrKiBj
bG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICBWQ01UaW1pbmcqIHRpbWluZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICBWQ01SZWNlaXZlU3RhdGlzdGljc0NhbGxiYWNrKiBzdGF0c19j
YWxsYmFjaykKICAgICA6IGNsb2NrXyhjbG9jayksCi0gICAgICBuZXdfY29udGludW91c19mcmFt
ZV9ldmVudF8oZmFsc2UsIGZhbHNlKSwKICAgICAgIGppdHRlcl9lc3RpbWF0b3JfKGppdHRlcl9l
c3RpbWF0b3IpLAogICAgICAgdGltaW5nXyh0aW1pbmcpLAogICAgICAgaW50ZXJfZnJhbWVfZGVs
YXlfKGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpLAotICAgICAgbGFzdF9kZWNvZGVkX2Zy
YW1lX3RpbWVzdGFtcF8oMCksCiAgICAgICBsYXN0X2RlY29kZWRfZnJhbWVfaXRfKGZyYW1lc18u
ZW5kKCkpLAogICAgICAgbGFzdF9jb250aW51b3VzX2ZyYW1lX2l0XyhmcmFtZXNfLmVuZCgpKSwK
ICAgICAgIG51bV9mcmFtZXNfaGlzdG9yeV8oMCksCkBAIC0xMTUsMTAgKzExMywxOSBAQCBGcmFt
ZUJ1ZmZlcjo6UmV0dXJuUmVhc29uIEZyYW1lQnVmZmVyOjpOZXh0RnJhbWUoCiAgICAgICAgIGlm
IChrZXlmcmFtZV9yZXF1aXJlZCAmJiAhZnJhbWUtPmlzX2tleWZyYW1lKCkpCiAgICAgICAgICAg
Y29udGludWU7CiAKKyAgICAgICAgLy8gVE9ETyhodHRwczovL2J1Z3Mud2VicnRjLm9yZy85OTc0
KTogY29uc2lkZXIgcmVtb3ZpbmcgdGhpcyBjaGVjaworICAgICAgICAvLyBhcyBpdCBtYXkgbWFr
ZSBhIHN0cmVhbSB1bmRlY29kYWJsZSBhZnRlciBhIHZlcnkgbG9uZyBkZWxheSBiZXR3ZWVuCisg
ICAgICAgIC8vIGZyYW1lcy4KKyAgICAgICAgaWYgKGxhc3RfZGVjb2RlZF9mcmFtZV90aW1lc3Rh
bXBfICYmCisgICAgICAgICAgICBBaGVhZE9mKCpsYXN0X2RlY29kZWRfZnJhbWVfdGltZXN0YW1w
XywgZnJhbWUtPlRpbWVzdGFtcCgpKSkgeworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKICAgICAgICAgbmV4dF9mcmFtZV9pdF8gPSBmcmFtZV9pdDsKLSAgICAgICAgaWYgKGZyYW1l
LT5SZW5kZXJUaW1lKCkgPT0gLTEpCisgICAgICAgIGlmIChmcmFtZS0+UmVuZGVyVGltZSgpID09
IC0xKSB7CiAgICAgICAgICAgZnJhbWUtPlNldFJlbmRlclRpbWUoCiAgICAgICAgICAgICAgIHRp
bWluZ18tPlJlbmRlclRpbWVNcyhmcmFtZS0+VGltZXN0YW1wKCksIG5vd19tcykpOworICAgICAg
ICB9CiAgICAgICAgIHdhaXRfbXMgPSB0aW1pbmdfLT5NYXhXYWl0aW5nVGltZShmcmFtZS0+UmVu
ZGVyVGltZSgpLCBub3dfbXMpOwogCiAgICAgICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB0aGUgZnJh
bWUgYnVmZmVyIHRvIHByZWZlciBoaWdoIGZyYW1lcmF0ZSByYXRoZXIKQEAgLTE3NSwzMyArMTgy
LDYgQEAgRnJhbWVCdWZmZXI6OlJldHVyblJlYXNvbiBGcmFtZUJ1ZmZlcjo6TmV4dEZyYW1lKAog
ICAgICAgVXBkYXRlVGltaW5nRnJhbWVJbmZvKCk7CiAgICAgICBQcm9wYWdhdGVEZWNvZGFiaWxp
dHkobmV4dF9mcmFtZV9pdF8tPnNlY29uZCk7CiAKLSAgICAgIC8vIFNhbml0eSBjaGVjayBmb3Ig
UlRQIHRpbWVzdGFtcCBtb25vdG9uaWNpdHkuCi0gICAgICBpZiAobGFzdF9kZWNvZGVkX2ZyYW1l
X2l0XyAhPSBmcmFtZXNfLmVuZCgpKSB7Ci0gICAgICAgIGNvbnN0IFZpZGVvTGF5ZXJGcmFtZUlk
JiBsYXN0X2RlY29kZWRfZnJhbWVfa2V5ID0KLSAgICAgICAgICAgIGxhc3RfZGVjb2RlZF9mcmFt
ZV9pdF8tPmZpcnN0OwotICAgICAgICBjb25zdCBWaWRlb0xheWVyRnJhbWVJZCYgZnJhbWVfa2V5
ID0gbmV4dF9mcmFtZV9pdF8tPmZpcnN0OwotCi0gICAgICAgIGNvbnN0IGJvb2wgZnJhbWVfaXNf
aGlnaGVyX3NwYXRpYWxfbGF5ZXJfb2ZfbGFzdF9kZWNvZGVkX2ZyYW1lID0KLSAgICAgICAgICAg
IGxhc3RfZGVjb2RlZF9mcmFtZV90aW1lc3RhbXBfID09IGZyYW1lLT5UaW1lc3RhbXAoKSAmJgot
ICAgICAgICAgICAgbGFzdF9kZWNvZGVkX2ZyYW1lX2tleS5waWN0dXJlX2lkID09IGZyYW1lX2tl
eS5waWN0dXJlX2lkICYmCi0gICAgICAgICAgICBsYXN0X2RlY29kZWRfZnJhbWVfa2V5LnNwYXRp
YWxfbGF5ZXIgPCBmcmFtZV9rZXkuc3BhdGlhbF9sYXllcjsKLQotICAgICAgICBpZiAoQWhlYWRP
ckF0KGxhc3RfZGVjb2RlZF9mcmFtZV90aW1lc3RhbXBfLCBmcmFtZS0+VGltZXN0YW1wKCkpICYm
Ci0gICAgICAgICAgICAhZnJhbWVfaXNfaGlnaGVyX3NwYXRpYWxfbGF5ZXJfb2ZfbGFzdF9kZWNv
ZGVkX2ZyYW1lKSB7Ci0gICAgICAgICAgLy8gVE9ETyhicmFuZHRyKTogQ29uc2lkZXIgY2xlYXJp
bmcgdGhlIGVudGlyZSBidWZmZXIgd2hlbiB3ZSBoaXQKLSAgICAgICAgICAvLyB0aGVzZSBjb25k
aXRpb25zLgotICAgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykKLSAgICAgICAgICAgICAgPDwg
IkZyYW1lIHdpdGggKHRpbWVzdGFtcDpwaWN0dXJlX2lkOnNwYXRpYWxfaWQpICgiCi0gICAgICAg
ICAgICAgIDw8IGZyYW1lLT5UaW1lc3RhbXAoKSA8PCAiOiIgPDwgZnJhbWUtPmlkLnBpY3R1cmVf
aWQgPDwgIjoiCi0gICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oZnJhbWUtPmlkLnNw
YXRpYWxfbGF5ZXIpIDw8ICIpIgotICAgICAgICAgICAgICA8PCAiIHNlbnQgdG8gZGVjb2RlciBh
ZnRlciBmcmFtZSB3aXRoIgotICAgICAgICAgICAgICA8PCAiICh0aW1lc3RhbXA6cGljdHVyZV9p
ZDpzcGF0aWFsX2lkKSAoIgotICAgICAgICAgICAgICA8PCBsYXN0X2RlY29kZWRfZnJhbWVfdGlt
ZXN0YW1wXyA8PCAiOiIKLSAgICAgICAgICAgICAgPDwgbGFzdF9kZWNvZGVkX2ZyYW1lX2tleS5w
aWN0dXJlX2lkIDw8ICI6IgotICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KGxhc3Rf
ZGVjb2RlZF9mcmFtZV9rZXkuc3BhdGlhbF9sYXllcikgPDwgIikuIjsKLSAgICAgICAgfQotICAg
ICAgfQotCiAgICAgICBBZHZhbmNlTGFzdERlY29kZWRGcmFtZShuZXh0X2ZyYW1lX2l0Xyk7CiAg
ICAgICBsYXN0X2RlY29kZWRfZnJhbWVfdGltZXN0YW1wXyA9IGZyYW1lLT5UaW1lc3RhbXAoKTsK
ICAgICAgICpmcmFtZV9vdXQgPSBzdGQ6Om1vdmUoZnJhbWUpOwpAQCAtMjY3LDYgKzI0NywxMSBA
QCB2b2lkIEZyYW1lQnVmZmVyOjpTdG9wKCkgewogICBuZXdfY29udGludW91c19mcmFtZV9ldmVu
dF8uU2V0KCk7CiB9CiAKK3ZvaWQgRnJhbWVCdWZmZXI6OkNsZWFyKCkgeworICBydGM6OkNyaXRT
Y29wZSBsb2NrKCZjcml0Xyk7CisgIENsZWFyRnJhbWVzQW5kSGlzdG9yeSgpOworfQorCiB2b2lk
IEZyYW1lQnVmZmVyOjpVcGRhdGVSdHQoaW50NjRfdCBydHRfbXMpIHsKICAgcnRjOjpDcml0U2Nv
cGUgbG9jaygmY3JpdF8pOwogICBqaXR0ZXJfZXN0aW1hdG9yXy0+VXBkYXRlUnR0KHJ0dF9tcyk7
CkBAIC0zNDgsNyArMzMzLDcgQEAgaW50NjRfdCBGcmFtZUJ1ZmZlcjo6SW5zZXJ0RnJhbWUoc3Rk
Ojp1bmlxdWVfcHRyPEVuY29kZWRGcmFtZT4gZnJhbWUpIHsKIAogICBpZiAobGFzdF9kZWNvZGVk
X2ZyYW1lX2l0XyAhPSBmcmFtZXNfLmVuZCgpICYmCiAgICAgICBpZCA8PSBsYXN0X2RlY29kZWRf
ZnJhbWVfaXRfLT5maXJzdCkgewotICAgIGlmIChBaGVhZE9mKGZyYW1lLT5UaW1lc3RhbXAoKSwg
bGFzdF9kZWNvZGVkX2ZyYW1lX3RpbWVzdGFtcF8pICYmCisgICAgaWYgKEFoZWFkT2YoZnJhbWUt
PlRpbWVzdGFtcCgpLCAqbGFzdF9kZWNvZGVkX2ZyYW1lX3RpbWVzdGFtcF8pICYmCiAgICAgICAg
IGZyYW1lLT5pc19rZXlmcmFtZSgpKSB7CiAgICAgICAvLyBJZiB0aGlzIGZyYW1lIGhhcyBhIG5l
d2VyIHRpbWVzdGFtcCBidXQgYW4gZWFybGllciBwaWN0dXJlIGlkIHRoZW4gd2UKICAgICAgIC8v
IGFzc3VtZSB0aGVyZSBoYXMgYmVlbiBhIGp1bXAgaW4gdGhlIHBpY3R1cmUgaWQgZHVlIHRvIHNv
bWUgZW5jb2RlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVyMi5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJh
bWVfYnVmZmVyMi5oCmluZGV4IGFlODRmY2Y5ZTZjMjkzODEwZDQ0NDMyZWYzYTAwOWRiNDFlZWY3
NGUuLmRjNWU1YTJlMzcyZmRjMTBhYzgwYWM2ZWU3MWY3NjljOGQ4NmM5ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2ZyYW1lX2J1ZmZlcjIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyLmgKQEAgLTc5
LDYgKzc5LDkgQEAgY2xhc3MgRnJhbWVCdWZmZXIgewogICAvLyBVcGRhdGVzIHRoZSBSVFQgZm9y
IGppdHRlciBidWZmZXIgZXN0aW1hdGlvbi4KICAgdm9pZCBVcGRhdGVSdHQoaW50NjRfdCBydHRf
bXMpOwogCisgIC8vIENsZWFycyB0aGUgRnJhbWVCdWZmZXIsIHJlbW92aW5nIGFsbCB0aGUgYnVm
ZmVyZWQgZnJhbWVzLgorICB2b2lkIENsZWFyKCk7CisKICBwcml2YXRlOgogICBzdHJ1Y3QgRnJh
bWVJbmZvIHsKICAgICBGcmFtZUluZm8oKTsKQEAgLTE2MSw3ICsxNjQsNyBAQCBjbGFzcyBGcmFt
ZUJ1ZmZlciB7CiAgIFZDTUppdHRlckVzdGltYXRvciogY29uc3Qgaml0dGVyX2VzdGltYXRvcl8g
UlRDX0dVQVJERURfQlkoY3JpdF8pOwogICBWQ01UaW1pbmcqIGNvbnN0IHRpbWluZ18gUlRDX0dV
QVJERURfQlkoY3JpdF8pOwogICBWQ01JbnRlckZyYW1lRGVsYXkgaW50ZXJfZnJhbWVfZGVsYXlf
IFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKLSAgdWludDMyX3QgbGFzdF9kZWNvZGVkX2ZyYW1lX3Rp
bWVzdGFtcF8gUlRDX0dVQVJERURfQlkoY3JpdF8pOworICBhYnNsOjpvcHRpb25hbDx1aW50MzJf
dD4gbGFzdF9kZWNvZGVkX2ZyYW1lX3RpbWVzdGFtcF8gUlRDX0dVQVJERURfQlkoY3JpdF8pOwog
ICBGcmFtZU1hcDo6aXRlcmF0b3IgbGFzdF9kZWNvZGVkX2ZyYW1lX2l0XyBSVENfR1VBUkRFRF9C
WShjcml0Xyk7CiAgIEZyYW1lTWFwOjppdGVyYXRvciBsYXN0X2NvbnRpbnVvdXNfZnJhbWVfaXRf
IFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKICAgRnJhbWVNYXA6Oml0ZXJhdG9yIG5leHRfZnJhbWVf
aXRfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZl
cjJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyX3VuaXR0ZXN0LmNjCmluZGV4IDM1
N2JhODY1NDA1NTFmOTkyYWVkNTYxYzVmZjkxMzg1MzJkZTAyZDMuLmUxMGY3ODUyNzk1N2U3N2Mw
NzVhMGYwODI3YjM3ZDZkN2JmNGNhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjJf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVyMl91bml0dGVzdC5jYwpAQCAtMTM3
LDkgKzEzNyw3IEBAIGNsYXNzIFRlc3RGcmFtZUJ1ZmZlcjIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXRzX2NhbGxiYWNrXykp
LAogICAgICAgICByYW5kXygweDM0Njc4MjEzKSwKICAgICAgICAgdGVhcl9kb3duXyhmYWxzZSks
Ci0gICAgICAgIGV4dHJhY3RfdGhyZWFkXygmRXh0cmFjdExvb3AsIHRoaXMsICJFeHRyYWN0IFRo
cmVhZCIpLAotICAgICAgICB0cmlnZ2VyX2V4dHJhY3RfZXZlbnRfKGZhbHNlLCBmYWxzZSksCi0g
ICAgICAgIGNyaXRfYWNxdWlyZWRfZXZlbnRfKGZhbHNlLCBmYWxzZSkge30KKyAgICAgICAgZXh0
cmFjdF90aHJlYWRfKCZFeHRyYWN0TG9vcCwgdGhpcywgIkV4dHJhY3QgVGhyZWFkIikge30KIAog
ICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgeyBleHRyYWN0X3RocmVhZF8uU3RhcnQoKTsgfQogCkBA
IC02MDAsNSArNTk4LDIxIEBAIFRFU1RfRihUZXN0RnJhbWVCdWZmZXIyLCBEb250VXBkYXRlT25V
bmRlY29kYWJsZUZyYW1lKSB7CiAgIEV4dHJhY3RGcmFtZSgwLCB0cnVlKTsKIH0KIAorVEVTVF9G
KFRlc3RGcmFtZUJ1ZmZlcjIsIERvbnREZWNvZGVPbGRlclRpbWVzdGFtcCkgeworICBJbnNlcnRG
cmFtZSgyLCAwLCAxLCBmYWxzZSk7CisgIEluc2VydEZyYW1lKDEsIDAsIDIsIGZhbHNlKTsgIC8v
IE9sZGVyIHBpY3R1cmUgaWQgYnV0IG5ld2VyIHRpbWVzdGFtcC4KKyAgRXh0cmFjdEZyYW1lKDAp
OworICBFeHRyYWN0RnJhbWUoMCk7CisgIENoZWNrRnJhbWUoMCwgMSwgMCk7CisgIENoZWNrTm9G
cmFtZSgxKTsKKworICBJbnNlcnRGcmFtZSgzLCAwLCA0LCBmYWxzZSk7CisgIEluc2VydEZyYW1l
KDQsIDAsIDMsIGZhbHNlKTsgIC8vIE5ld2VyIHBpY3R1cmUgaWQgYnV0IG9sZGVyIHRpbWVzdGFt
cC4KKyAgRXh0cmFjdEZyYW1lKDApOworICBFeHRyYWN0RnJhbWUoMCk7CisgIENoZWNrRnJhbWUo
MiwgMywgMCk7CisgIENoZWNrTm9GcmFtZSgzKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHZpZGVv
X2NvZGluZwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZ2VuZXJp
Y19lbmNvZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvZ2VuZXJpY19lbmNvZGVyLmNjCmluZGV4IGIxZDdjMjhhYmQy
NDczMzczOGY2MDg3ZjhjOTM5M2FhMDVmZWUwYjMuLmQ1Y2MwYThiYTA2OGRjZmRmZWY1ZWFmMjRk
Nzg5MTExNTZlYmI5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2dlbmVyaWNfZW5jb2Rlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9nZW5lcmljX2VuY29kZXIuY2MKQEAgLTEwMSwyNiArMTAxLDE0IEBAIGludDMyX3Qg
VkNNR2VuZXJpY0VuY29kZXI6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwKIAogdm9p
ZCBWQ01HZW5lcmljRW5jb2Rlcjo6U2V0RW5jb2RlclBhcmFtZXRlcnMoY29uc3QgRW5jb2RlclBh
cmFtZXRlcnMmIHBhcmFtcykgewogICBSVENfRENIRUNLX1JVTlNfU0VSSUFMSVpFRCgmcmFjZV9j
aGVja2VyXyk7Ci0gIGJvb2wgY2hhbm5lbF9wYXJhbWV0ZXJzX2hhdmVfY2hhbmdlZDsKICAgYm9v
bCByYXRlc19oYXZlX2NoYW5nZWQ7CiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZwYXJh
bXNfbG9ja18pOwotICAgIGNoYW5uZWxfcGFyYW1ldGVyc19oYXZlX2NoYW5nZWQgPQotICAgICAg
ICBwYXJhbXMubG9zc19yYXRlICE9IGVuY29kZXJfcGFyYW1zXy5sb3NzX3JhdGUgfHwKLSAgICAg
ICAgcGFyYW1zLnJ0dCAhPSBlbmNvZGVyX3BhcmFtc18ucnR0OwogICAgIHJhdGVzX2hhdmVfY2hh
bmdlZCA9CiAgICAgICAgIHBhcmFtcy50YXJnZXRfYml0cmF0ZSAhPSBlbmNvZGVyX3BhcmFtc18u
dGFyZ2V0X2JpdHJhdGUgfHwKICAgICAgICAgcGFyYW1zLmlucHV0X2ZyYW1lX3JhdGUgIT0gZW5j
b2Rlcl9wYXJhbXNfLmlucHV0X2ZyYW1lX3JhdGU7CiAgICAgZW5jb2Rlcl9wYXJhbXNfID0gcGFy
YW1zOwogICB9Ci0gIGlmIChjaGFubmVsX3BhcmFtZXRlcnNfaGF2ZV9jaGFuZ2VkKSB7Ci0gICAg
aW50IHJlcyA9IGVuY29kZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYXJhbXMubG9zc19yYXRl
LCBwYXJhbXMucnR0KTsKLSAgICBpZiAocmVzICE9IDApIHsKLSAgICAgIFJUQ19MT0coTFNfV0FS
TklORykgPDwgIkVycm9yIHNldCBlbmNvZGVyIHBhcmFtZXRlcnMgKGxvc3MgPSAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IHBhcmFtcy5sb3NzX3JhdGUgPDwgIiwgcnR0ID0gIiA8PCBw
YXJhbXMucnR0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIpOiAiIDw8IHJlczsKLSAg
ICB9Ci0gIH0KICAgaWYgKHJhdGVzX2hhdmVfY2hhbmdlZCkgewogICAgIGludCByZXMgPSBlbmNv
ZGVyXy0+U2V0UmF0ZUFsbG9jYXRpb24ocGFyYW1zLnRhcmdldF9iaXRyYXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmlucHV0X2ZyYW1lX3JhdGUp
OwpAQCAtMTY0LDkgKzE1Miw5IEBAIGJvb2wgVkNNR2VuZXJpY0VuY29kZXI6OkludGVybmFsU291
cmNlKCkgY29uc3QgewogICByZXR1cm4gaW50ZXJuYWxfc291cmNlXzsKIH0KIAotYm9vbCBWQ01H
ZW5lcmljRW5jb2Rlcjo6U3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCB7CitWaWRlb0VuY29k
ZXI6OkVuY29kZXJJbmZvIFZDTUdlbmVyaWNFbmNvZGVyOjpHZXRFbmNvZGVySW5mbygpIGNvbnN0
IHsKICAgUlRDX0RDSEVDS19SVU5TX1NFUklBTElaRUQoJnJhY2VfY2hlY2tlcl8pOwotICByZXR1
cm4gZW5jb2Rlcl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCk7CisgIHJldHVybiBlbmNvZGVyXy0+
R2V0RW5jb2RlckluZm8oKTsKIH0KIAogVkNNRW5jb2RlZEZyYW1lQ2FsbGJhY2s6OlZDTUVuY29k
ZWRGcmFtZUNhbGxiYWNrKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZ2VuZXJpY19lbmNvZGVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9nZW5lcmljX2VuY29kZXIuaAppbmRleCAxNTFlOTNlNDk3NTk3OTYwOTVhZWRmZWVmOWE0
MGQxM2I0MTBhZDljLi4yZjg0MWIzNGRkODE1ZDI5OTVlNDhiNGFjOTY4MTNiMGYwODc0ZGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9nZW5lcmljX2VuY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9nZW5lcmljX2Vu
Y29kZXIuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIFZDTUdlbmVyaWNFbmNvZGVyIHsKIAog
ICBpbnQzMl90IFJlcXVlc3RGcmFtZShjb25zdCBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+JiBmcmFt
ZV90eXBlcyk7CiAgIGJvb2wgSW50ZXJuYWxTb3VyY2UoKSBjb25zdDsKLSAgYm9vbCBTdXBwb3J0
c05hdGl2ZUhhbmRsZSgpIGNvbnN0OworICBWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIEdldEVu
Y29kZXJJbmZvKCkgY29uc3Q7CiAKICBwcml2YXRlOgogICBydGM6OlJhY2VDaGVja2VyIHJhY2Vf
Y2hlY2tlcl87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL21vY2svbW9ja192aWRlb19jb2Rl
Y19pbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvbW9jay9tb2NrX3ZpZGVvX2NvZGVjX2ludGVy
ZmFjZS5oCmluZGV4IGMyOWVmZWVhZDY4ZDQ2MzBjMzkxN2I2MTBiYTM1MTgyYWIxNDQ5M2MuLjdk
MDAzNTkxZWEzZDk1Y2M3ZWE3NDQxMDNkYTM5ZDQyNjdiNzEwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2luY2x1ZGUvbW9jay9tb2NrX3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2lu
Y2x1ZGUvbW9jay9tb2NrX3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oCkBAIC0xOSw2ICsxOSw4IEBA
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCisvLyBOT1RFOiBEZXByZWNhdGVkIGZpbGUsIGluY2x1
ZGUgYXBpL21vY2tfdmlkZW9fKGVuY29kZXJ8ZGVjb2RlcikuaCBpbnN0ZWFkLgorCiBjbGFzcyBN
b2NrRW5jb2RlZEltYWdlQ2FsbGJhY2sgOiBwdWJsaWMgRW5jb2RlZEltYWdlQ2FsbGJhY2sgewog
IHB1YmxpYzoKICAgTU9DS19NRVRIT0QzKE9uRW5jb2RlZEltYWdlLApAQCAtNDIsNyArNDQsNiBA
QCBjbGFzcyBNb2NrVmlkZW9FbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgICAgICAg
ICAgICAgICBpbnQzMl90KEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykpOwogICBNT0NL
X01FVEhPRDAoUmVsZWFzZSwgaW50MzJfdCgpKTsKICAgTU9DS19NRVRIT0QwKFJlc2V0LCBpbnQz
Ml90KCkpOwotICBNT0NLX01FVEhPRDIoU2V0Q2hhbm5lbFBhcmFtZXRlcnMsIGludDMyX3QodWlu
dDMyX3QgcGFja2V0TG9zcywgaW50NjRfdCBydHQpKTsKICAgTU9DS19NRVRIT0QyKFNldFJhdGVz
LCBpbnQzMl90KHVpbnQzMl90IG5ld0JpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkpOwogICBN
T0NLX01FVEhPRDIoU2V0UmF0ZUFsbG9jYXRpb24sCiAgICAgICAgICAgICAgICBpbnQzMl90KGNv
bnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIG5ld0JpdFJhdGUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2luaXRpYWxpemVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVv
X2NvZGVjX2luaXRpYWxpemVyLmgKaW5kZXggZWU3MDgxMGY2MmVkNzNkMzU4NDkxYjE3MjE2Y2Ez
MjEwNzEzYjdiOS4uZTk3OWY5Yzg2Nzc2ZTJiOWVkYmU3NDZiZDZkOTU4MjNkYmM5MjNkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbml0aWFsaXplci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIuaApAQCAtMzAsMTUgKzMwLDkgQEAg
Y2xhc3MgVmlkZW9Db2RlY0luaXRpYWxpemVyIHsKICAgLy8gdHlwZSB1c2VkLiBGb3IgaW5zdGFu
Y2UsIFZQOCB3aWxsIGNyZWF0ZSBhbiBhbGxvY2F0b3IgdGhhbiBjYW4gaGFuZGxlCiAgIC8vIHNp
bXVsY2FzdCBhbmQgdGVtcG9yYWwgbGF5ZXJpbmcuCiAgIC8vIEdldEJpdHJhdGVBbGxvY2F0b3Ig
aXMgY2FsbGVkIGltcGxpY2l0bHkgZnJvbSBoZXJlLCBubyBuZWVkIHRvIGNhbGwgYWdhaW4uCi0g
IHN0YXRpYyBib29sIFNldHVwQ29kZWMoCi0gICAgICBjb25zdCBWaWRlb0VuY29kZXJDb25maWcm
IGNvbmZpZywKLSAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiYgc3RyZWFtcywK
LSAgICAgIFZpZGVvQ29kZWMqIGNvZGVjLAotICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0
cmF0ZUFsbG9jYXRvcj4qIGJpdHJhdGVfYWxsb2NhdG9yKTsKLQotICAvLyBDcmVhdGUgYSBiaXRy
YXRlIGFsbG9jYXRvciBmb3IgdGhlIHNwZWNpZmllZCBjb2RlYy4KLSAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+IENyZWF0ZUJpdHJhdGVBbGxvY2F0b3IoCi0g
ICAgICBjb25zdCBWaWRlb0NvZGVjJiBjb2RlYyk7CisgIHN0YXRpYyBib29sIFNldHVwQ29kZWMo
Y29uc3QgVmlkZW9FbmNvZGVyQ29uZmlnJiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+JiBzdHJlYW1zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFZpZGVvQ29kZWMqIGNvZGVjKTsKIAogIHByaXZhdGU6CiAgIHN0YXRpYyBW
aWRlb0NvZGVjIFZpZGVvRW5jb2RlckNvbmZpZ1RvVmlkZW9Db2RlYygKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVv
X2NvZGVjX2ludGVyZmFjZS5oCmluZGV4IGQyYmFkZjkyMDFiMjFlZTRhYTMyNjM4NmQyMDFjNDk1
NDFhMTliNGUuLjM4NTgzYmZhM2I0MTBjNjI4NWIzMmNmMmI5NjU0YjdlMDc2ZjJmOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
aW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaApAQCAtNzksNiArNzksNyBAQCBzdHJ1Y3Qg
Q29kZWNTcGVjaWZpY0luZm8gewogICAgIG1lbXNldCgmY29kZWNTcGVjaWZpYywgMCwgc2l6ZW9m
KGNvZGVjU3BlY2lmaWMpKTsKICAgfQogICBWaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGU7CisgIC8v
IHxjb2RlY19uYW1lfCBpcyBkZXByZWNhdGVkLCB1c2UgbmFtZSBwcm92aWRlZCBieSBWaWRlb0Vu
Y29kZXIgaW5zdGVhZC4KICAgY29uc3QgY2hhciogY29kZWNfbmFtZTsKICAgQ29kZWNTcGVjaWZp
Y0luZm9VbmlvbiBjb2RlY1NwZWNpZmljOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUv
dmlkZW9fY29kaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZy5oCmluZGV4IDhlZjA0
NmFhMjMxOTNmN2YzMGYyYjFlY2RlZDExZmY3M2M4MzRkNjUuLjA4ODliMjMxZGVhMzQ3Y2NlMDQ3
YzA1NDdkYmVhN2NlODA1MzQxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29k
aW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RpbmcuaApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGUuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nX2RlZmluZXMuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9kZXByZWNhdGlvbi5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50
X3dyYXBwZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zNywyMCArMzgsNiBAQCBjbGFz
cyBWaWRlb0RlY29kZXI7CiBjbGFzcyBWaWRlb0VuY29kZXI7CiBzdHJ1Y3QgQ29kZWNTcGVjaWZp
Y0luZm87CiAKLWNsYXNzIEV2ZW50RmFjdG9yeSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5FdmVu
dEZhY3RvcnkoKSB7fQotCi0gIHZpcnR1YWwgRXZlbnRXcmFwcGVyKiBDcmVhdGVFdmVudCgpID0g
MDsKLX07Ci0KLWNsYXNzIEV2ZW50RmFjdG9yeUltcGwgOiBwdWJsaWMgRXZlbnRGYWN0b3J5IHsK
LSBwdWJsaWM6Ci0gIH5FdmVudEZhY3RvcnlJbXBsKCkgb3ZlcnJpZGUge30KLQotICBFdmVudFdy
YXBwZXIqIENyZWF0ZUV2ZW50KCkgb3ZlcnJpZGU7Ci19OwotCiAvLyBVc2VkIHRvIGluZGljYXRl
IHdoaWNoIGRlY29kZSB3aXRoIGVycm9ycyBtb2RlIHNob3VsZCBiZSB1c2VkLgogZW51bSBWQ01E
ZWNvZGVFcnJvck1vZGUgewogICBrTm9FcnJvcnMsICAgICAgICAgLy8gTmV2ZXIgZGVjb2RlIHdp
dGggZXJyb3JzLiBWaWRlbyB3aWxsIGZyZWV6ZQpAQCAtNjksNyArNTYsNyBAQCBjbGFzcyBWaWRl
b0NvZGluZ01vZHVsZSA6IHB1YmxpYyBNb2R1bGUgewogICBlbnVtIFNlbmRlck5hY2tNb2RlIHsg
a05hY2tOb25lLCBrTmFja0FsbCwga05hY2tTZWxlY3RpdmUgfTsKIAogICAvLyBERVBSRUNBVEVE
LgotICBzdGF0aWMgVmlkZW9Db2RpbmdNb2R1bGUqIENyZWF0ZShDbG9jayogY2xvY2ssIEV2ZW50
RmFjdG9yeSogZXZlbnRfZmFjdG9yeSk7CisgIHN0YXRpYyBWaWRlb0NvZGluZ01vZHVsZSogQ3Jl
YXRlKENsb2NrKiBjbG9jayk7CiAKICAgLyoKICAgICogICBTZW5kZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nX2RlZmluZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9f
Y29kaW5nX2RlZmluZXMuaAppbmRleCA3ZmI2ZjU4MzY0NzczZjhmYTgxODM5NmUxY2I3ZjY4NGY4
ZWRiMDZmLi43YmJjOThmZDQ4MzFhOGUyOGE0NDBjZWU5YWQyN2Y2ODI2OTYwYzE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZ19kZWZpbmVzLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvaW5j
bHVkZS92aWRlb19jb2RpbmdfZGVmaW5lcy5oCkBAIC0xNSw4ICsxNSw2IEBACiAjaW5jbHVkZSA8
dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCi0vLyBGb3IgRW5j
b2RlZEltYWdlCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKQEAgLTQzLDcgKzQxLDcgQEAgZW51bSB7CiAgIC8vIHxrRGVmYXVsdFRp
bWluZ0ZyYW1lc0RlbGF5TXN8LCBvciBpZiB0aGUgZnJhbWUgaXMgYXQgbGVhc3QKICAgLy8gfGtE
ZWZhdWx0T3V0bGlzZXJGcmFtZVNpemVQZXJjZW50fCBpbiBzaXplIG9mIGF2ZXJhZ2UgZnJhbWUu
CiAgIGtEZWZhdWx0VGltaW5nRnJhbWVzRGVsYXlNcyA9IDIwMCwKLSAga0RlZmF1bHRPdXRsaWVy
RnJhbWVTaXplUGVyY2VudCA9IDI1MCwKKyAga0RlZmF1bHRPdXRsaWVyRnJhbWVTaXplUGVyY2Vu
dCA9IDUwMCwKICAgLy8gTWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIGZvciB3aGF0IHdlIHN0b3Jl
IGVuY29kZSBzdGFydCB0aW1pbmcgaW5mb3JtYXRpb24uCiAgIGtNYXhFbmNvZGVTdGFydFRpbWVM
aXN0U2l6ZSA9IDUwLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9idWZmZXIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2ppdHRlcl9idWZmZXIuaAppbmRleCBmNjQ5YWRjOGIzYWIzNTkzMDRhZDFjNWNjYmNlM2Iy
NDZmODg0ODAwLi40ODI2Mjc2MDQ1NTNjZDMyMTIyMmYyYmRhODRkNmNlNWQ5NzU5MDQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9qaXR0ZXJfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2J1ZmZlci5o
CkBAIC0zNSw3ICszNSw2IEBAIGVudW0gVkNNTmFja01vZGUgeyBrTmFjaywga05vTmFjayB9Owog
CiAvLyBmb3J3YXJkIGRlY2xhcmF0aW9ucwogY2xhc3MgQ2xvY2s7Ci1jbGFzcyBFdmVudEZhY3Rv
cnk7CiBjbGFzcyBFdmVudFdyYXBwZXI7CiBjbGFzcyBWQ01GcmFtZUJ1ZmZlcjsKIGNsYXNzIFZD
TVBhY2tldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9idWZmZXJfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9qaXR0ZXJfYnVmZmVyX3VuaXR0ZXN0LmNjCmluZGV4IDZhZTY1ZDYyZTk4NmM3MjhjYWQ5
OGQ0N2Q0ZWFjYmJiMWVjYjZkMGMuLjNlZDE4YTkzODY1MGI3YmUwZGNkYzY1MzllY2ViZDI2MWEw
YmVlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9idWZmZXJfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2Rpbmcvaml0dGVyX2J1ZmZlcl91bml0dGVzdC5jYwpAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL21lZGlhX29wdF91dGlsLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy92aWRlb19jb2RpbmcvcGFja2V0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvdGVzdC9zdHJlYW1fZ2VuZXJhdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvdGVzdC90ZXN0X3V0aWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgogI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAjaW5jbHVkZSAic3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKQEAgLTIyMCw5ICsyMTksNyBAQCBjbGFz
cyBUZXN0QmFzaWNKaXR0ZXJCdWZmZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFt
PHN0ZDo6c3RyaW5nPiwKICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsKICAgICBjbG9ja18ucmVz
ZXQobmV3IFNpbXVsYXRlZENsb2NrKDApKTsKICAgICBqaXR0ZXJfYnVmZmVyXy5yZXNldChuZXcg
VkNNSml0dGVyQnVmZmVyKAotICAgICAgICBjbG9ja18uZ2V0KCksCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxFdmVudFdyYXBwZXI+KGV2ZW50X2ZhY3RvcnlfLkNyZWF0ZUV2ZW50KCkpLCB0aGlz
LAotICAgICAgICB0aGlzKSk7CisgICAgICAgIGNsb2NrXy5nZXQoKSwgYWJzbDo6V3JhcFVuaXF1
ZShFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSwgdGhpcywgdGhpcykpOwogICAgIGppdHRlcl9idWZm
ZXJfLT5TdGFydCgpOwogICAgIHNlcV9udW1fID0gMTIzNDsKICAgICB0aW1lc3RhbXBfID0gMDsK
QEAgLTMxMyw3ICszMTAsNiBAQCBjbGFzcyBUZXN0QmFzaWNKaXR0ZXJCdWZmZXIgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiwKICAgdWludDhfdCBkYXRhX1sx
NTAwXTsKICAgc3RkOjp1bmlxdWVfcHRyPFZDTVBhY2tldD4gcGFja2V0XzsKICAgc3RkOjp1bmlx
dWVfcHRyPFNpbXVsYXRlZENsb2NrPiBjbG9ja187Ci0gIE51bGxFdmVudEZhY3RvcnkgZXZlbnRf
ZmFjdG9yeV87CiAgIHN0ZDo6dW5pcXVlX3B0cjxWQ01KaXR0ZXJCdWZmZXI+IGppdHRlcl9idWZm
ZXJfOwogfTsKIApAQCAtMzM5LDkgKzMzNSw3IEBAIGNsYXNzIFRlc3RSdW5uaW5nSml0dGVyQnVm
ZmVyIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4sCiAgICAg
bWF4X25hY2tfbGlzdF9zaXplXyA9IDE1MDsKICAgICBvbGRlc3RfcGFja2V0X3RvX25hY2tfID0g
MjUwOwogICAgIGppdHRlcl9idWZmZXJfID0gbmV3IFZDTUppdHRlckJ1ZmZlcigKLSAgICAgICAg
Y2xvY2tfLmdldCgpLAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPihldmVu
dF9mYWN0b3J5Xy5DcmVhdGVFdmVudCgpKSwgdGhpcywKLSAgICAgICAgdGhpcyk7CisgICAgICAg
IGNsb2NrXy5nZXQoKSwgYWJzbDo6V3JhcFVuaXF1ZShFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSwg
dGhpcywgdGhpcyk7CiAgICAgc3RyZWFtX2dlbmVyYXRvcl8gPSBuZXcgU3RyZWFtR2VuZXJhdG9y
KDAsIGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwogICAgIGppdHRlcl9idWZmZXJfLT5T
dGFydCgpOwogICAgIGppdHRlcl9idWZmZXJfLT5TZXROYWNrU2V0dGluZ3MobWF4X25hY2tfbGlz
dF9zaXplXywgb2xkZXN0X3BhY2tldF90b19uYWNrXywKQEAgLTQzMyw3ICs0MjcsNiBAQCBjbGFz
cyBUZXN0UnVubmluZ0ppdHRlckJ1ZmZlciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08c3RkOjpzdHJpbmc+LAogICBWQ01KaXR0ZXJCdWZmZXIqIGppdHRlcl9idWZmZXJfOwogICBT
dHJlYW1HZW5lcmF0b3IqIHN0cmVhbV9nZW5lcmF0b3JfOwogICBzdGQ6OnVuaXF1ZV9wdHI8U2lt
dWxhdGVkQ2xvY2s+IGNsb2NrXzsKLSAgTnVsbEV2ZW50RmFjdG9yeSBldmVudF9mYWN0b3J5XzsK
ICAgc2l6ZV90IG1heF9uYWNrX2xpc3Rfc2l6ZV87CiAgIGludCBvbGRlc3RfcGFja2V0X3RvX25h
Y2tfOwogICB1aW50OF90IGRhdGFfYnVmZmVyX1trRGF0YUJ1ZmZlclNpemVdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2Rpbmcvaml0dGVyX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3IuY2MK
aW5kZXggNWU3NTRmMTA4ODVlZGM2NjU1ZTJlNzE1MmE0NDdiZWQ0MDM4NTk3Yi4uMGQwZmFjNzI5
MWU4ZmRkZDQxZGM2YjM1NWE5MzVmNjQ5NmQxNjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVy
X2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmNjCkBAIC0xNCwxOCAr
MTQsMjQgQEAKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVk
ZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHN0cmluZz4KIAor
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVv
X2NvZGluZy9pbnRlcm5hbF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvcnR0X2ZpbHRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2ppdHRlcl91
cHBlcl9ib3VuZF9leHBlcmltZW50LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1
ZGUvY2xvY2suaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlh
bC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLQotZW51bSB7IGtTdGFydHVwRGVsYXlTYW1wbGVz
ID0gMzAgfTsKLWVudW0geyBrRnNBY2N1U3RhcnR1cFNhbXBsZXMgPSA1IH07Ci1lbnVtIHsga01h
eEZyYW1lcmF0ZUVzdGltYXRlID0gMjAwIH07CituYW1lc3BhY2Ugeworc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBrU3RhcnR1cERlbGF5U2FtcGxlcyA9IDMwOworc3RhdGljIGNvbnN0ZXhwciBp
bnQ2NF90IGtGc0FjY3VTdGFydHVwU2FtcGxlcyA9IDU7CitzdGF0aWMgY29uc3RleHByIGRvdWJs
ZSBrTWF4RnJhbWVyYXRlRXN0aW1hdGUgPSAyMDAuMDsKK3N0YXRpYyBjb25zdGV4cHIgaW50NjRf
dCBrTmFja0NvdW50VGltZW91dE1zID0gNjAwMDA7CitzdGF0aWMgY29uc3RleHByIGRvdWJsZSBr
RGVmYXVsdE1heFRpbWVzdGFtcERldmlhdGlvbkluU2lnbWFzID0gMy41OworfSAgLy8gbmFtZXNw
YWNlCiAKIFZDTUppdHRlckVzdGltYXRvcjo6VkNNSml0dGVyRXN0aW1hdG9yKGNvbnN0IENsb2Nr
KiBjbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
dmNtSWQsCkBAIC00NSw3ICs1MSw5IEBAIFZDTUppdHRlckVzdGltYXRvcjo6VkNNSml0dGVyRXN0
aW1hdG9yKGNvbnN0IENsb2NrKiBjbG9jaywKICAgICAgIF9ydHRGaWx0ZXIoKSwKICAgICAgIGZw
c19jb3VudGVyXygzMCksICAvLyBUT0RPKHNwcmFuZyk6IFVzZSBhbiBlc3RpbWF0b3Igd2l0aCBs
aW1pdCBiYXNlZCBvbgogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRpbWUsIHJhdGhlciB0
aGFuIG51bWJlciBvZiBzYW1wbGVzLgotICAgICAgbG93X3JhdGVfZXhwZXJpbWVudF8oa0luaXQp
LAorICAgICAgdGltZV9kZXZpYXRpb25fdXBwZXJfYm91bmRfKAorICAgICAgICAgIEppdHRlclVw
cGVyQm91bmRFeHBlcmltZW50OjpHZXRVcHBlckJvdW5kU2lnbWFzKCkudmFsdWVfb3IoCisgICAg
ICAgICAgICAgIGtEZWZhdWx0TWF4VGltZXN0YW1wRGV2aWF0aW9uSW5TaWdtYXMpKSwKICAgICAg
IGNsb2NrXyhjbG9jaykgewogICBSZXNldCgpOwogfQpAQCAtNzUsNiArODMsNyBAQCBWQ01KaXR0
ZXJFc3RpbWF0b3ImIFZDTUppdHRlckVzdGltYXRvcjo6b3BlcmF0b3I9KAogICAgIF9sYXRlc3RO
YWNrVGltZXN0YW1wID0gcmhzLl9sYXRlc3ROYWNrVGltZXN0YW1wOwogICAgIF9uYWNrQ291bnQg
PSByaHMuX25hY2tDb3VudDsKICAgICBfcnR0RmlsdGVyID0gcmhzLl9ydHRGaWx0ZXI7CisgICAg
Y2xvY2tfID0gcmhzLmNsb2NrXzsKICAgfQogICByZXR1cm4gKnRoaXM7CiB9CkBAIC0xMDIsNiAr
MTExLDcgQEAgdm9pZCBWQ01KaXR0ZXJFc3RpbWF0b3I6OlJlc2V0KCkgewogICBfZmlsdGVySml0
dGVyRXN0aW1hdGUgPSAwLjA7CiAgIF9sYXRlc3ROYWNrVGltZXN0YW1wID0gMDsKICAgX25hY2tD
b3VudCA9IDA7CisgIF9sYXRlc3ROYWNrVGltZXN0YW1wID0gMDsKICAgX2ZzU3VtID0gMDsKICAg
X2ZzQ291bnQgPSAwOwogICBfc3RhcnR1cENvdW50ID0gMDsKQEAgLTE1NSw2ICsxNjUsMTIgQEAg
dm9pZCBWQ01KaXR0ZXJFc3RpbWF0b3I6OlVwZGF0ZUVzdGltYXRlKGludDY0X3QgZnJhbWVEZWxh
eU1TLAogICB9CiAgIF9wcmV2RnJhbWVTaXplID0gZnJhbWVTaXplQnl0ZXM7CiAKKyAgLy8gQ2Fw
IGZyYW1lRGVsYXlNUyBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lIGRldmlhdGlvbiBub2lzZS4K
KyAgaW50NjRfdCBtYXhfdGltZV9kZXZpYXRpb25fbXMgPQorICAgICAgc3RhdGljX2Nhc3Q8aW50
NjRfdD4odGltZV9kZXZpYXRpb25fdXBwZXJfYm91bmRfICogc3FydChfdmFyTm9pc2UpICsgMC41
KTsKKyAgZnJhbWVEZWxheU1TID0gc3RkOjptYXgoc3RkOjptaW4oZnJhbWVEZWxheU1TLCBtYXhf
dGltZV9kZXZpYXRpb25fbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAtbWF4X3RpbWVf
ZGV2aWF0aW9uX21zKTsKKwogICAvLyBPbmx5IHVwZGF0ZSB0aGUgS2FsbWFuIGZpbHRlciBpZiB0
aGUgc2FtcGxlIGlzIG5vdCBjb25zaWRlcmVkCiAgIC8vIGFuIGV4dHJlbWUgb3V0bGllci4gRXZl
biBpZiBpdCBpcyBhbiBleHRyZW1lIG91dGxpZXIgZnJvbSBhCiAgIC8vIGRlbGF5IHBvaW50IG9m
IHZpZXcsIGlmIHRoZSBmcmFtZSBzaXplIGFsc28gaXMgbGFyZ2UgdGhlCkBAIC0xOTMsMTUgKzIw
OSwxMCBAQCB2b2lkIFZDTUppdHRlckVzdGltYXRvcjo6VXBkYXRlRXN0aW1hdGUoaW50NjRfdCBm
cmFtZURlbGF5TVMsCiAKIC8vIFVwZGF0ZXMgdGhlIG5hY2svcGFja2V0IHJhdGlvCiB2b2lkIFZD
TUppdHRlckVzdGltYXRvcjo6RnJhbWVOYWNrZWQoKSB7Ci0gIC8vIFdhaXQgdW50aWwgX25hY2tM
aW1pdCByZXRyYW5zbWlzc2lvbnMgaGFzIGJlZW4gcmVjZWl2ZWQsCi0gIC8vIHRoZW4gYWx3YXlz
IGFkZCB+MSBSVFQgZGVsYXkuCi0gIC8vIFRPRE8oaG9sbWVyKTogU2hvdWxkIHdlIGV2ZXIgcmVt
b3ZlIHRoZSBhZGRpdGlvbmFsIGRlbGF5IGlmIHRoZQotICAvLyB0aGUgcGFja2V0IGxvc3NlcyBz
ZWVtIHRvIGhhdmUgc3RvcHBlZD8gV2UgY291bGQgZm9yIGluc3RhbmNlIHNjYWxlCi0gIC8vIHRo
ZSBudW1iZXIgb2YgUlRUcyB0byBhZGQgd2l0aCB0aGUgYW1vdW50IG9mIHJldHJhbnNtaXNzaW9u
cyBpbiBhIGdpdmVuCi0gIC8vIHRpbWUgaW50ZXJ2YWwsIG9yIHNpbWlsYXIuCiAgIGlmIChfbmFj
a0NvdW50IDwgX25hY2tMaW1pdCkgewogICAgIF9uYWNrQ291bnQrKzsKICAgfQorICBfbGF0ZXN0
TmFja1RpbWVzdGFtcCA9IGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCk7CiB9CiAKIC8vIFVw
ZGF0ZXMgS2FsbWFuIGVzdGltYXRlIG9mIHRoZSBjaGFubmVsCkBAIC0zMDksMjIgKzMyMCwyMCBA
QCB2b2lkIFZDTUppdHRlckVzdGltYXRvcjo6RXN0aW1hdGVSYW5kb21KaXR0ZXIoZG91YmxlIGRf
ZFQsCiAgIGlmIChfYWxwaGFDb3VudCA+IF9hbHBoYUNvdW50TWF4KQogICAgIF9hbHBoYUNvdW50
ID0gX2FscGhhQ291bnRNYXg7CiAKLSAgaWYgKExvd1JhdGVFeHBlcmltZW50RW5hYmxlZCgpKSB7
Ci0gICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgYSBsb3cgZnJhbWUgcmF0ZSBzdHJlYW0gdG8gcmVh
Y3Qgc2xvd2VyIHRvIGNoYW5nZXMsCi0gICAgLy8gc2NhbGUgdGhlIGFscGhhIHdlaWdodCByZWxh
dGl2ZSBhIDMwIGZwcyBzdHJlYW0uCi0gICAgZG91YmxlIGZwcyA9IEdldEZyYW1lUmF0ZSgpOwot
ICAgIGlmIChmcHMgPiAwLjApIHsKLSAgICAgIGRvdWJsZSByYXRlX3NjYWxlID0gMzAuMCAvIGZw
czsKLSAgICAgIC8vIEF0IHN0YXJ0dXAsIHRoZXJlIGNhbiBiZSBhIGxvdCBvZiBub2lzZSBpbiB0
aGUgZnBzIGVzdGltYXRlLgotICAgICAgLy8gSW50ZXJwb2xhdGUgcmF0ZV9zY2FsZSBsaW5lYXJs
eSwgZnJvbSAxLjAgYXQgc2FtcGxlICMxLCB0byAzMC4wIC8gZnBzCi0gICAgICAvLyBhdCBzYW1w
bGUgI2tTdGFydHVwRGVsYXlTYW1wbGVzLgotICAgICAgaWYgKF9hbHBoYUNvdW50IDwga1N0YXJ0
dXBEZWxheVNhbXBsZXMpIHsKLSAgICAgICAgcmF0ZV9zY2FsZSA9Ci0gICAgICAgICAgICAoX2Fs
cGhhQ291bnQgKiByYXRlX3NjYWxlICsgKGtTdGFydHVwRGVsYXlTYW1wbGVzIC0gX2FscGhhQ291
bnQpKSAvCi0gICAgICAgICAgICBrU3RhcnR1cERlbGF5U2FtcGxlczsKLSAgICAgIH0KLSAgICAg
IGFscGhhID0gcG93KGFscGhhLCByYXRlX3NjYWxlKTsKKyAgLy8gSW4gb3JkZXIgdG8gYXZvaWQg
YSBsb3cgZnJhbWUgcmF0ZSBzdHJlYW0gdG8gcmVhY3Qgc2xvd2VyIHRvIGNoYW5nZXMsCisgIC8v
IHNjYWxlIHRoZSBhbHBoYSB3ZWlnaHQgcmVsYXRpdmUgYSAzMCBmcHMgc3RyZWFtLgorICBkb3Vi
bGUgZnBzID0gR2V0RnJhbWVSYXRlKCk7CisgIGlmIChmcHMgPiAwLjApIHsKKyAgICBkb3VibGUg
cmF0ZV9zY2FsZSA9IDMwLjAgLyBmcHM7CisgICAgLy8gQXQgc3RhcnR1cCwgdGhlcmUgY2FuIGJl
IGEgbG90IG9mIG5vaXNlIGluIHRoZSBmcHMgZXN0aW1hdGUuCisgICAgLy8gSW50ZXJwb2xhdGUg
cmF0ZV9zY2FsZSBsaW5lYXJseSwgZnJvbSAxLjAgYXQgc2FtcGxlICMxLCB0byAzMC4wIC8gZnBz
CisgICAgLy8gYXQgc2FtcGxlICNrU3RhcnR1cERlbGF5U2FtcGxlcy4KKyAgICBpZiAoX2FscGhh
Q291bnQgPCBrU3RhcnR1cERlbGF5U2FtcGxlcykgeworICAgICAgcmF0ZV9zY2FsZSA9CisgICAg
ICAgICAgKF9hbHBoYUNvdW50ICogcmF0ZV9zY2FsZSArIChrU3RhcnR1cERlbGF5U2FtcGxlcyAt
IF9hbHBoYUNvdW50KSkgLworICAgICAgICAgIGtTdGFydHVwRGVsYXlTYW1wbGVzOwogICAgIH0K
KyAgICBhbHBoYSA9IHBvdyhhbHBoYSwgcmF0ZV9zY2FsZSk7CiAgIH0KIAogICBkb3VibGUgYXZn
Tm9pc2UgPSBhbHBoYSAqIF9hdmdOb2lzZSArICgxIC0gYWxwaGEpICogZF9kVDsKQEAgLTM4Niw0
NiArMzk1LDM1IEBAIHZvaWQgVkNNSml0dGVyRXN0aW1hdG9yOjpVcGRhdGVNYXhGcmFtZVNpemUo
dWludDMyX3QgZnJhbWVTaXplQnl0ZXMpIHsKIC8vIG90aGVyd2lzZSB0cmllcyB0byBjYWxjdWxh
dGUgYW4gZXN0aW1hdGUuCiBpbnQgVkNNSml0dGVyRXN0aW1hdG9yOjpHZXRKaXR0ZXJFc3RpbWF0
ZShkb3VibGUgcnR0TXVsdGlwbGllcikgewogICBkb3VibGUgaml0dGVyTVMgPSBDYWxjdWxhdGVF
c3RpbWF0ZSgpICsgT1BFUkFUSU5HX1NZU1RFTV9KSVRURVI7CisgIHVpbnQ2NF90IG5vdyA9IGNs
b2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCk7CisKKyAgaWYgKG5vdyAtIF9sYXRlc3ROYWNrVGlt
ZXN0YW1wID4ga05hY2tDb3VudFRpbWVvdXRNcyAqIDEwMDApCisgICAgX25hY2tDb3VudCA9IDA7
CisKICAgaWYgKF9maWx0ZXJKaXR0ZXJFc3RpbWF0ZSA+IGppdHRlck1TKQogICAgIGppdHRlck1T
ID0gX2ZpbHRlckppdHRlckVzdGltYXRlOwogICBpZiAoX25hY2tDb3VudCA+PSBfbmFja0xpbWl0
KQogICAgIGppdHRlck1TICs9IF9ydHRGaWx0ZXIuUnR0TXMoKSAqIHJ0dE11bHRpcGxpZXI7CiAK
LSAgaWYgKExvd1JhdGVFeHBlcmltZW50RW5hYmxlZCgpKSB7Ci0gICAgc3RhdGljIGNvbnN0IGRv
dWJsZSBrSml0dGVyU2NhbGVMb3dUaHJlc2hvbGQgPSA1LjA7Ci0gICAgc3RhdGljIGNvbnN0IGRv
dWJsZSBrSml0dGVyU2NhbGVIaWdoVGhyZXNob2xkID0gMTAuMDsKLSAgICBkb3VibGUgZnBzID0g
R2V0RnJhbWVSYXRlKCk7Ci0gICAgLy8gSWdub3JlIGppdHRlciBmb3IgdmVyeSBsb3cgZnBzIHN0
cmVhbXMuCi0gICAgaWYgKGZwcyA8IGtKaXR0ZXJTY2FsZUxvd1RocmVzaG9sZCkgewotICAgICAg
aWYgKGZwcyA9PSAwLjApIHsKLSAgICAgICAgcmV0dXJuIGppdHRlck1TOwotICAgICAgfQotICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLy8gU2VtaS1sb3cgZnJhbWUgcmF0ZTsgc2NhbGUg
YnkgZmFjdG9yIGxpbmVhcmx5IGludGVycG9sYXRlZCBmcm9tIDAuMCBhdAotICAgIC8vIGtKaXR0
ZXJTY2FsZUxvd1RocmVzaG9sZCB0byAxLjAgYXQga0ppdHRlclNjYWxlSGlnaFRocmVzaG9sZC4K
LSAgICBpZiAoZnBzIDwga0ppdHRlclNjYWxlSGlnaFRocmVzaG9sZCkgewotICAgICAgaml0dGVy
TVMgPQotICAgICAgICAgICgxLjAgLyAoa0ppdHRlclNjYWxlSGlnaFRocmVzaG9sZCAtIGtKaXR0
ZXJTY2FsZUxvd1RocmVzaG9sZCkpICoKLSAgICAgICAgICAoZnBzIC0ga0ppdHRlclNjYWxlTG93
VGhyZXNob2xkKSAqIGppdHRlck1TOworICBzdGF0aWMgY29uc3QgZG91YmxlIGtKaXR0ZXJTY2Fs
ZUxvd1RocmVzaG9sZCA9IDUuMDsKKyAgc3RhdGljIGNvbnN0IGRvdWJsZSBrSml0dGVyU2NhbGVI
aWdoVGhyZXNob2xkID0gMTAuMDsKKyAgZG91YmxlIGZwcyA9IEdldEZyYW1lUmF0ZSgpOworICAv
LyBJZ25vcmUgaml0dGVyIGZvciB2ZXJ5IGxvdyBmcHMgc3RyZWFtcy4KKyAgaWYgKGZwcyA8IGtK
aXR0ZXJTY2FsZUxvd1RocmVzaG9sZCkgeworICAgIGlmIChmcHMgPT0gMC4wKSB7CisgICAgICBy
ZXR1cm4gcnRjOjpjaGVja2VkX2Nhc3Q8aW50PihzdGQ6Om1heCgwLjAsIGppdHRlck1TKSArIDAu
NSk7CiAgICAgfQorICAgIHJldHVybiAwOwogICB9CiAKLSAgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQzMl90PihqaXR0ZXJNUyArIDAuNSk7Ci19Ci0KLWJvb2wgVkNNSml0dGVyRXN0aW1hdG9yOjpM
b3dSYXRlRXhwZXJpbWVudEVuYWJsZWQoKSB7Ci0gIGlmIChsb3dfcmF0ZV9leHBlcmltZW50XyA9
PSBrSW5pdCkgewotICAgIHN0ZDo6c3RyaW5nIGdyb3VwID0KLSAgICAgICAgd2VicnRjOjpmaWVs
ZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJXZWJSVEMtUmVkdWNlZEppdHRlckRlbGF5Iik7Ci0gICAg
aWYgKGdyb3VwID09ICJEaXNhYmxlZCIpIHsKLSAgICAgIGxvd19yYXRlX2V4cGVyaW1lbnRfID0g
a0Rpc2FibGVkOwotICAgIH0gZWxzZSB7Ci0gICAgICBsb3dfcmF0ZV9leHBlcmltZW50XyA9IGtF
bmFibGVkOwotICAgIH0KKyAgLy8gU2VtaS1sb3cgZnJhbWUgcmF0ZTsgc2NhbGUgYnkgZmFjdG9y
IGxpbmVhcmx5IGludGVycG9sYXRlZCBmcm9tIDAuMCBhdAorICAvLyBrSml0dGVyU2NhbGVMb3dU
aHJlc2hvbGQgdG8gMS4wIGF0IGtKaXR0ZXJTY2FsZUhpZ2hUaHJlc2hvbGQuCisgIGlmIChmcHMg
PCBrSml0dGVyU2NhbGVIaWdoVGhyZXNob2xkKSB7CisgICAgaml0dGVyTVMgPSAoMS4wIC8gKGtK
aXR0ZXJTY2FsZUhpZ2hUaHJlc2hvbGQgLSBrSml0dGVyU2NhbGVMb3dUaHJlc2hvbGQpKSAqCisg
ICAgICAgICAgICAgICAoZnBzIC0ga0ppdHRlclNjYWxlTG93VGhyZXNob2xkKSAqIGppdHRlck1T
OwogICB9Ci0gIHJldHVybiBsb3dfcmF0ZV9leHBlcmltZW50XyA9PSBrRW5hYmxlZCA/IHRydWUg
OiBmYWxzZTsKKworICByZXR1cm4gcnRjOjpjaGVja2VkX2Nhc3Q8aW50PihzdGQ6Om1heCgwLjAs
IGppdHRlck1TKSArIDAuNSk7CiB9CiAKIGRvdWJsZSBWQ01KaXR0ZXJFc3RpbWF0b3I6OkdldEZy
YW1lUmF0ZSgpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3IuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2ppdHRlcl9lc3RpbWF0b3IuaAppbmRleCBhZWJhM2VkZWQzM2NkMTU3YzU0Y2U3NWNh
MzFkMWZjZjQzMzg2YzBkLi41NmI1MzI4NTFkOTM5Y2U4OTM2NjA2ZGM2MmNmY2NjZTRiNzE4NzFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVy
X2VzdGltYXRvci5oCkBAIC03Miw4ICs3Miw2IEBAIGNsYXNzIFZDTUppdHRlckVzdGltYXRvciB7
CiAgIGRvdWJsZSBfdGhldGFbMl07ICAvLyBFc3RpbWF0ZWQgbGluZSBwYXJhbWV0ZXJzIChzbG9w
ZSwgb2Zmc2V0KQogICBkb3VibGUgX3Zhck5vaXNlOyAgLy8gVmFyaWFuY2Ugb2YgdGhlIHRpbWUt
ZGV2aWF0aW9uIGZyb20gdGhlIGxpbmUKIAotICB2aXJ0dWFsIGJvb2wgTG93UmF0ZUV4cGVyaW1l
bnRFbmFibGVkKCk7Ci0KICBwcml2YXRlOgogICAvLyBVcGRhdGVzIHRoZSBLYWxtYW4gZmlsdGVy
IGZvciB0aGUgbGluZSBkZXNjcmliaW5nCiAgIC8vIHRoZSBmcmFtZSBzaXplIGRlcGVuZGVudCBq
aXR0ZXIuCkBAIC0xNTksOCArMTU3LDcgQEAgY2xhc3MgVkNNSml0dGVyRXN0aW1hdG9yIHsKICAg
VkNNUnR0RmlsdGVyIF9ydHRGaWx0ZXI7CiAKICAgcnRjOjpSb2xsaW5nQWNjdW11bGF0b3I8dWlu
dDY0X3Q+IGZwc19jb3VudGVyXzsKLSAgZW51bSBFeHBlcmltZW50RmxhZyB7IGtJbml0LCBrRW5h
YmxlZCwga0Rpc2FibGVkIH07Ci0gIEV4cGVyaW1lbnRGbGFnIGxvd19yYXRlX2V4cGVyaW1lbnRf
OworICBjb25zdCBkb3VibGUgdGltZV9kZXZpYXRpb25fdXBwZXJfYm91bmRfOwogICBjb25zdCBD
bG9jayogY2xvY2tfOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2VzdGltYXRvcl90
ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3JfdGVzdHMuY2MKaW5kZXggZjAwZTFlZjZk
YThiNjQ1NjU5NzJjOGNkYWNkNzQ5M2VkMjQyMmZiNy4uNDUyNjJlZjgzNjAyZTdjMTVlMmE5Y2Yz
YjllODA2NmYzNWE5Mjc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2VzdGltYXRvcl90ZXN0
cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yX3Rlc3RzLmNjCkBAIC05LDM4ICs5LDMw
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmgi
CiAKKyNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhw
ZXJpbWVudC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9udW1lcmljcy9oaXN0b2dyYW1fcGVyY2VudGlsZV9jb3VudGVyLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
Y2xvY2suaCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9n
dGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3MgVGVzdEVzdGltYXRvciA6IHB1
YmxpYyBWQ01KaXR0ZXJFc3RpbWF0b3IgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgVGVzdEVzdGlt
YXRvcihib29sIGV4cF9lbmFibGVkKQotICAgICAgOiBWQ01KaXR0ZXJFc3RpbWF0b3IoJmZha2Vf
Y2xvY2tfLCAwLCAwKSwKLSAgICAgICAgZmFrZV9jbG9ja18oMCksCi0gICAgICAgIGV4cF9lbmFi
bGVkXyhleHBfZW5hYmxlZCkge30KK2NsYXNzIFRlc3RWQ01KaXR0ZXJFc3RpbWF0b3IgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFRlc3RWQ01KaXR0ZXJFc3RpbWF0
b3IoKSA6IGZha2VfY2xvY2tfKDApIHt9CiAKLSAgdmlydHVhbCBib29sIExvd1JhdGVFeHBlcmlt
ZW50RW5hYmxlZCgpIHsgcmV0dXJuIGV4cF9lbmFibGVkXzsgfQorICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7CisgICAgZXN0aW1hdG9yXyA9IGFic2w6Om1ha2VfdW5pcXVlPFZDTUppdHRlckVzdGlt
YXRvcj4oJmZha2VfY2xvY2tfLCAwLCAwKTsKKyAgfQogCiAgIHZvaWQgQWR2YW5jZUNsb2NrKGlu
dDY0X3QgbWljcm9zZWNvbmRzKSB7CiAgICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWNyb3Nl
Y29uZHMobWljcm9zZWNvbmRzKTsKICAgfQogCi0gcHJpdmF0ZToKICAgU2ltdWxhdGVkQ2xvY2sg
ZmFrZV9jbG9ja187Ci0gIGNvbnN0IGJvb2wgZXhwX2VuYWJsZWRfOwotfTsKLQotY2xhc3MgVGVz
dFZDTUppdHRlckVzdGltYXRvciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3Rl
ZDoKLSAgVGVzdFZDTUppdHRlckVzdGltYXRvcigpCi0gICAgICA6IHJlZ3VsYXJfZXN0aW1hdG9y
XyhmYWxzZSksIGxvd19yYXRlX2VzdGltYXRvcl8odHJ1ZSkge30KLQotICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKSB7IHJlZ3VsYXJfZXN0aW1hdG9yXy5SZXNldCgpOyB9Ci0KLSAgVGVzdEVzdGltYXRv
ciByZWd1bGFyX2VzdGltYXRvcl87Ci0gIFRlc3RFc3RpbWF0b3IgbG93X3JhdGVfZXN0aW1hdG9y
XzsKKyAgc3RkOjp1bmlxdWVfcHRyPFZDTUppdHRlckVzdGltYXRvcj4gZXN0aW1hdG9yXzsKIH07
CiAKIC8vIEdlbmVyYXRlcyBzb21lIHNpbXBsZSB0ZXN0IGRhdGEgaW4gdGhlIGZvcm0gb2YgYSBz
YXd0b290aCB3YXZlLgpAQCAtNjQsOTggKzU2LDU2IEBAIGNsYXNzIFZhbHVlR2VuZXJhdG9yIHsK
IC8vIDUgZnBzLCBkaXNhYmxlIGppdHRlciBkZWxheSBhbHRvZ2V0aGVyLgogVEVTVF9GKFRlc3RW
Q01KaXR0ZXJFc3RpbWF0b3IsIFRlc3RMb3dSYXRlKSB7CiAgIFZhbHVlR2VuZXJhdG9yIGdlbigx
MCk7Ci0gIHVpbnQ2NF90IHRpbWVfZGVsdGEgPSAxMDAwMDAwIC8gNTsKKyAgdWludDY0X3QgdGlt
ZV9kZWx0YV91cyA9IHJ0Yzo6a051bU1pY3Jvc2Vjc1BlclNlYyAvIDU7CiAgIGZvciAoaW50IGkg
PSAwOyBpIDwgNjA7ICsraSkgewotICAgIHJlZ3VsYXJfZXN0aW1hdG9yXy5VcGRhdGVFc3RpbWF0
ZShnZW4uRGVsYXkoKSwgZ2VuLkZyYW1lU2l6ZSgpKTsKLSAgICByZWd1bGFyX2VzdGltYXRvcl8u
QWR2YW5jZUNsb2NrKHRpbWVfZGVsdGEpOwotICAgIGxvd19yYXRlX2VzdGltYXRvcl8uVXBkYXRl
RXN0aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7Ci0gICAgbG93X3JhdGVfZXN0
aW1hdG9yXy5BZHZhbmNlQ2xvY2sodGltZV9kZWx0YSk7Ci0gICAgRVhQRUNUX0dUKHJlZ3VsYXJf
ZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSwgMCk7CisgICAgZXN0aW1hdG9yXy0+VXBk
YXRlRXN0aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7CisgICAgQWR2YW5jZUNs
b2NrKHRpbWVfZGVsdGFfdXMpOwogICAgIGlmIChpID4gMikKLSAgICAgIEVYUEVDVF9FUShsb3df
cmF0ZV9lc3RpbWF0b3JfLkdldEppdHRlckVzdGltYXRlKDApLCAwKTsKLSAgICBnZW4uQWR2YW5j
ZSgpOwotICB9Ci19Ci0KLS8vIDggZnBzLCBzdGVhZHkgc3RhdGUgZXN0aW1hdGUgc2hvdWxkIGJl
IGluIGludGVycG9sYXRlZCBpbnRlcnZhbCBiZXR3ZWVuIDAKLS8vIGFuZCB2YWx1ZSBvZiBwcmV2
aW91cyBtZXRob2QuCi1URVNUX0YoVGVzdFZDTUppdHRlckVzdGltYXRvciwgVGVzdE1pZFJhdGUp
IHsKLSAgVmFsdWVHZW5lcmF0b3IgZ2VuKDEwKTsKLSAgdWludDY0X3QgdGltZV9kZWx0YSA9IDEw
MDAwMDAgLyA4OwotICBmb3IgKGludCBpID0gMDsgaSA8IDYwOyArK2kpIHsKLSAgICByZWd1bGFy
X2VzdGltYXRvcl8uVXBkYXRlRXN0aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7
Ci0gICAgcmVndWxhcl9lc3RpbWF0b3JfLkFkdmFuY2VDbG9jayh0aW1lX2RlbHRhKTsKLSAgICBs
b3dfcmF0ZV9lc3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgpLCBnZW4uRnJhbWVT
aXplKCkpOwotICAgIGxvd19yYXRlX2VzdGltYXRvcl8uQWR2YW5jZUNsb2NrKHRpbWVfZGVsdGEp
OwotICAgIEVYUEVDVF9HVChyZWd1bGFyX2VzdGltYXRvcl8uR2V0Sml0dGVyRXN0aW1hdGUoMCks
IDApOwotICAgIEVYUEVDVF9HVChsb3dfcmF0ZV9lc3RpbWF0b3JfLkdldEppdHRlckVzdGltYXRl
KDApLCAwKTsKLSAgICBFWFBFQ1RfR0UocmVndWxhcl9lc3RpbWF0b3JfLkdldEppdHRlckVzdGlt
YXRlKDApLAotICAgICAgICAgICAgICBsb3dfcmF0ZV9lc3RpbWF0b3JfLkdldEppdHRlckVzdGlt
YXRlKDApKTsKKyAgICAgIEVYUEVDVF9FUShlc3RpbWF0b3JfLT5HZXRKaXR0ZXJFc3RpbWF0ZSgw
KSwgMCk7CiAgICAgZ2VuLkFkdmFuY2UoKTsKICAgfQogfQogCi0vLyAzMCBmcHMsIHN0ZWFkeSBz
dGF0ZSBlc3RpbWF0ZSBzaG91bGQgYmUgc2FtZSBhcyBwcmV2aW91cyBtZXRob2QuCi1URVNUX0Yo
VGVzdFZDTUppdHRlckVzdGltYXRvciwgVGVzdEhpZ2hSYXRlKSB7Ci0gIFZhbHVlR2VuZXJhdG9y
IGdlbigxMCk7Ci0gIHVpbnQ2NF90IHRpbWVfZGVsdGEgPSAxMDAwMDAwIC8gMzA7Ci0gIGZvciAo
aW50IGkgPSAwOyBpIDwgNjA7ICsraSkgewotICAgIHJlZ3VsYXJfZXN0aW1hdG9yXy5VcGRhdGVF
c3RpbWF0ZShnZW4uRGVsYXkoKSwgZ2VuLkZyYW1lU2l6ZSgpKTsKLSAgICByZWd1bGFyX2VzdGlt
YXRvcl8uQWR2YW5jZUNsb2NrKHRpbWVfZGVsdGEpOwotICAgIGxvd19yYXRlX2VzdGltYXRvcl8u
VXBkYXRlRXN0aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7Ci0gICAgbG93X3Jh
dGVfZXN0aW1hdG9yXy5BZHZhbmNlQ2xvY2sodGltZV9kZWx0YSk7Ci0gICAgRVhQRUNUX0VRKHJl
Z3VsYXJfZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSwKLSAgICAgICAgICAgICAgbG93
X3JhdGVfZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSk7Ci0gICAgZ2VuLkFkdmFuY2Uo
KTsKLSAgfQotfQotCi0vLyAxMCBmcHMsIGhpZ2ggaml0dGVyIHRoZW4gbG93IGppdHRlci4gTG93
IHJhdGUgZXN0aW1hdG9yIHNob3VsZCBjb252ZXJnZQotLy8gZmFzdGVyIHRvIGxvdyBub2lzZSBl
c3RpbWF0ZS4KLVRFU1RfRihUZXN0VkNNSml0dGVyRXN0aW1hdG9yLCBUZXN0Q29udmVyZ2VuY2Up
IHsKLSAgLy8gUmVhY2ggYSBzdGVhZHkgc3RhdGUgd2l0aCBoaWdoIG5vaXNlLgotICBWYWx1ZUdl
bmVyYXRvciBnZW4oNTApOwotICB1aW50NjRfdCB0aW1lX2RlbHRhID0gMTAwMDAwMCAvIDEwOwot
ICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0gICAgcmVndWxhcl9lc3RpbWF0b3Jf
LlVwZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgpLCBnZW4uRnJhbWVTaXplKCkpOwotICAgIHJlZ3Vs
YXJfZXN0aW1hdG9yXy5BZHZhbmNlQ2xvY2sodGltZV9kZWx0YSAqIDIpOwotICAgIGxvd19yYXRl
X2VzdGltYXRvcl8uVXBkYXRlRXN0aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7
Ci0gICAgbG93X3JhdGVfZXN0aW1hdG9yXy5BZHZhbmNlQ2xvY2sodGltZV9kZWx0YSAqIDIpOwot
ICAgIGdlbi5BZHZhbmNlKCk7Ci0gIH0KLQotICBpbnQgdGhyZXNob2xkID0gcmVndWxhcl9lc3Rp
bWF0b3JfLkdldEppdHRlckVzdGltYXRlKDApIC8gMjsKLQotICAvLyBOZXcgZ2VuZXJhdG9yIHdp
dGggemVybyBub2lzZS4KLSAgVmFsdWVHZW5lcmF0b3IgbG93X2dlbigwKTsKLSAgaW50IHJlZ3Vs
YXJfaXRlcmF0aW9ucyA9IDA7Ci0gIGludCBsb3dfcmF0ZV9pdGVyYXRpb25zID0gMDsKLSAgZm9y
IChpbnQgaSA9IDA7IGkgPCA1MDA7ICsraSkgewotICAgIGlmIChyZWd1bGFyX2l0ZXJhdGlvbnMg
PT0gMCkgewotICAgICAgcmVndWxhcl9lc3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRlKGxvd19nZW4u
RGVsYXkoKSwgbG93X2dlbi5GcmFtZVNpemUoKSk7Ci0gICAgICByZWd1bGFyX2VzdGltYXRvcl8u
QWR2YW5jZUNsb2NrKHRpbWVfZGVsdGEpOwotICAgICAgaWYgKHJlZ3VsYXJfZXN0aW1hdG9yXy5H
ZXRKaXR0ZXJFc3RpbWF0ZSgwKSA8IHRocmVzaG9sZCkgewotICAgICAgICByZWd1bGFyX2l0ZXJh
dGlvbnMgPSBpOwotICAgICAgfQorVEVTVF9GKFRlc3RWQ01KaXR0ZXJFc3RpbWF0b3IsIFRlc3RV
cHBlckJvdW5kKSB7CisgIHN0cnVjdCBUZXN0Q29udGV4dCB7CisgICAgVGVzdENvbnRleHQoKSA6
IHVwcGVyX2JvdW5kKDAuMCksIHBlcmNlbnRpbGVzKDEwMDApIHt9CisgICAgZG91YmxlIHVwcGVy
X2JvdW5kOworICAgIHJ0Yzo6SGlzdG9ncmFtUGVyY2VudGlsZUNvdW50ZXIgcGVyY2VudGlsZXM7
CisgIH07CisgIHN0ZDo6dmVjdG9yPFRlc3RDb250ZXh0PiB0ZXN0X2Nhc2VzKDIpOworCisgIHRl
c3RfY2FzZXNbMF0udXBwZXJfYm91bmQgPSAxMDAuMDsgIC8vIEZpcnN0IHVzZSBlc3NlbnRpYWxs
eSBubyBjYXAuCisgIHRlc3RfY2FzZXNbMV0udXBwZXJfYm91bmQgPSAzLjU7ICAgIC8vIFNlY29u
ZCwgcmVhc29uYWJseSBzbWFsbCBjYXAuCisKKyAgZm9yIChUZXN0Q29udGV4dCYgY29udGV4dCA6
IHRlc3RfY2FzZXMpIHsKKyAgICAvLyBTZXQgdXAgZmllbGQgdHJpYWwgYW5kIHJlc2V0IGppdHRl
ciBlc3RpbWF0b3IuCisgICAgY2hhciBzdHJpbmdfYnVmWzY0XTsKKyAgICBydGM6OlNpbXBsZVN0
cmluZ0J1aWxkZXIgc3NiKHN0cmluZ19idWYpOworICAgIHNzYiA8PCBKaXR0ZXJVcHBlckJvdW5k
RXhwZXJpbWVudDo6a0ppdHRlclVwcGVyQm91bmRFeHBlcmltZW50TmFtZQorICAgICAgICA8PCAi
L0VuYWJsZWQtIiA8PCBjb250ZXh0LnVwcGVyX2JvdW5kIDw8ICIvIjsKKyAgICB0ZXN0OjpTY29w
ZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMoc3NiLnN0cigpKTsKKyAgICBTZXRVcCgpOworCisg
ICAgVmFsdWVHZW5lcmF0b3IgZ2VuKDUwKTsKKyAgICB1aW50NjRfdCB0aW1lX2RlbHRhX3VzID0g
cnRjOjprTnVtTWljcm9zZWNzUGVyU2VjIC8gMzA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAx
MDA7ICsraSkgeworICAgICAgZXN0aW1hdG9yXy0+VXBkYXRlRXN0aW1hdGUoZ2VuLkRlbGF5KCks
IGdlbi5GcmFtZVNpemUoKSk7CisgICAgICBBZHZhbmNlQ2xvY2sodGltZV9kZWx0YV91cyk7Cisg
ICAgICBjb250ZXh0LnBlcmNlbnRpbGVzLkFkZCgKKyAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oZXN0aW1hdG9yXy0+R2V0Sml0dGVyRXN0aW1hdGUoMCkpKTsKKyAgICAgIGdlbi5BZHZh
bmNlKCk7CiAgICAgfQotCi0gICAgaWYgKGxvd19yYXRlX2l0ZXJhdGlvbnMgPT0gMCkgewotICAg
ICAgbG93X3JhdGVfZXN0aW1hdG9yXy5VcGRhdGVFc3RpbWF0ZShsb3dfZ2VuLkRlbGF5KCksIGxv
d19nZW4uRnJhbWVTaXplKCkpOwotICAgICAgbG93X3JhdGVfZXN0aW1hdG9yXy5BZHZhbmNlQ2xv
Y2sodGltZV9kZWx0YSk7Ci0gICAgICBpZiAobG93X3JhdGVfZXN0aW1hdG9yXy5HZXRKaXR0ZXJF
c3RpbWF0ZSgwKSA8IHRocmVzaG9sZCkgewotICAgICAgICBsb3dfcmF0ZV9pdGVyYXRpb25zID0g
aTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAocmVndWxhcl9pdGVyYXRpb25zICE9IDAgJiYg
bG93X3JhdGVfaXRlcmF0aW9ucyAhPSAwKSB7Ci0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBn
ZW4uQWR2YW5jZSgpOwogICB9CiAKLSAgRVhQRUNUX05FKHJlZ3VsYXJfaXRlcmF0aW9ucywgMCk7
Ci0gIEVYUEVDVF9ORShsb3dfcmF0ZV9pdGVyYXRpb25zLCAwKTsKLSAgRVhQRUNUX0xFKGxvd19y
YXRlX2l0ZXJhdGlvbnMsIHJlZ3VsYXJfaXRlcmF0aW9ucyk7CisgIC8vIE1lZGlhbiBzaG91bGQg
YmUgc2ltaWxhciBhZnRlciB0aHJlZSBzZWNvbmRzLiBBbGxvdyA1JSBlcnJvciBtYXJnaW4uCisg
IHVpbnQzMl90IG1lZGlhbl91bmJvdW5kID0gKnRlc3RfY2FzZXNbMF0ucGVyY2VudGlsZXMuR2V0
UGVyY2VudGlsZSgwLjUpOworICB1aW50MzJfdCBtZWRpYW5fYm91bmRlZCA9ICp0ZXN0X2Nhc2Vz
WzFdLnBlcmNlbnRpbGVzLkdldFBlcmNlbnRpbGUoMC41KTsKKyAgRVhQRUNUX05FQVIobWVkaWFu
X3VuYm91bmQsIG1lZGlhbl9ib3VuZGVkLCAobWVkaWFuX3VuYm91bmQgKiA1KSAvIDEwMCk7CisK
KyAgLy8gTWF4IHNob3VsZCBiZSBsb3dlciBmb3IgdGhlIGJvdW5kZWQgY2FzZS4KKyAgdWludDMy
X3QgbWF4X3VuYm91bmQgPSAqdGVzdF9jYXNlc1swXS5wZXJjZW50aWxlcy5HZXRQZXJjZW50aWxl
KDEuMCk7CisgIHVpbnQzMl90IG1heF9ib3VuZGVkID0gKnRlc3RfY2FzZXNbMV0ucGVyY2VudGls
ZXMuR2V0UGVyY2VudGlsZSgxLjApOworICBFWFBFQ1RfR1QobWF4X3VuYm91bmQsIHN0YXRpY19j
YXN0PHVpbnQzMl90PihtYXhfYm91bmRlZCAqIDEuMjUpKTsKIH0KKwogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1bGUuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9uYWNrX21v
ZHVsZS5jYwppbmRleCA3ZmJjZjM0YjQxYTkxMzczYmQ3ODYxYWUwZjVkZmUzZThlMWY3ZmQxLi4w
YzY5YjU3NzQ5MzQ5ZmZhZmNlMWQwODc3ZTVmZDUwNzA0YTcxMDcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9uYWNrX21vZHVsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9uYWNrX21vZHVsZS5jYwpAQCAtMTYsNiArMTYs
NyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3NfdGhyZWFkLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2lu
Zy5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yOCwxNCArMjksMjkgQEAgY29uc3QgaW50IGtQcm9j
ZXNzRnJlcXVlbmN5ID0gNTA7CiBjb25zdCBpbnQga1Byb2Nlc3NJbnRlcnZhbE1zID0gMTAwMCAv
IGtQcm9jZXNzRnJlcXVlbmN5OwogY29uc3QgaW50IGtNYXhSZW9yZGVyZWRQYWNrZXRzID0gMTI4
OwogY29uc3QgaW50IGtOdW1SZW9yZGVyaW5nQnVja2V0cyA9IDEwOworY29uc3QgaW50IGtEZWZh
dWx0U2VuZE5hY2tEZWxheU1zID0gMDsKKworaW50NjRfdCBHZXRTZW5kTmFja0RlbGF5KCkgewor
ICBpbnQ2NF90IGRlbGF5X21zID0gc3RydG9sKAorICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6
RmluZEZ1bGxOYW1lKCJXZWJSVEMtU2VuZE5hY2tEZWxheU1zIikuY19zdHIoKSwKKyAgICAgIG51
bGxwdHIsIDEwKTsKKyAgaWYgKGRlbGF5X21zID4gMCAmJiBkZWxheV9tcyA8PSAyMCkgeworICAg
IFJUQ19MT0coTFNfSU5GTykgPDwgIlNlbmROYWNrRGVsYXkgaXMgc2V0IHRvICIgPDwgZGVsYXlf
bXM7CisgICAgcmV0dXJuIGRlbGF5X21zOworICB9CisgIHJldHVybiBrRGVmYXVsdFNlbmROYWNr
RGVsYXlNczsKK30KIH0gIC8vIG5hbWVzcGFjZQogCiBOYWNrTW9kdWxlOjpOYWNrSW5mbzo6TmFj
a0luZm8oKQogICAgIDogc2VxX251bSgwKSwgc2VuZF9hdF9zZXFfbnVtKDApLCBzZW50X2F0X3Rp
bWUoLTEpLCByZXRyaWVzKDApIHt9CiAKLU5hY2tNb2R1bGU6Ok5hY2tJbmZvOjpOYWNrSW5mbyh1
aW50MTZfdCBzZXFfbnVtLCB1aW50MTZfdCBzZW5kX2F0X3NlcV9udW0pCitOYWNrTW9kdWxlOjpO
YWNrSW5mbzo6TmFja0luZm8odWludDE2X3Qgc2VxX251bSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MTZfdCBzZW5kX2F0X3NlcV9udW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBjcmVhdGVkX2F0X3RpbWUpCiAgICAgOiBzZXFfbnVtKHNlcV9u
dW0pLAogICAgICAgc2VuZF9hdF9zZXFfbnVtKHNlbmRfYXRfc2VxX251bSksCisgICAgICBjcmVh
dGVkX2F0X3RpbWUoY3JlYXRlZF9hdF90aW1lKSwKICAgICAgIHNlbnRfYXRfdGltZSgtMSksCiAg
ICAgICByZXRyaWVzKDApIHt9CiAKQEAgLTQ5LDEzICs2NSwyMCBAQCBOYWNrTW9kdWxlOjpOYWNr
TW9kdWxlKENsb2NrKiBjbG9jaywKICAgICAgIGluaXRpYWxpemVkXyhmYWxzZSksCiAgICAgICBy
dHRfbXNfKGtEZWZhdWx0UnR0TXMpLAogICAgICAgbmV3ZXN0X3NlcV9udW1fKDApLAotICAgICAg
bmV4dF9wcm9jZXNzX3RpbWVfbXNfKC0xKSB7CisgICAgICBuZXh0X3Byb2Nlc3NfdGltZV9tc18o
LTEpLAorICAgICAgc2VuZF9uYWNrX2RlbGF5X21zXyhHZXRTZW5kTmFja0RlbGF5KCkpIHsKICAg
UlRDX0RDSEVDSyhjbG9ja18pOwogICBSVENfRENIRUNLKG5hY2tfc2VuZGVyXyk7CiAgIFJUQ19E
Q0hFQ0soa2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXJfKTsKIH0KIAogaW50IE5hY2tNb2R1bGU6Ok9u
UmVjZWl2ZWRQYWNrZXQodWludDE2X3Qgc2VxX251bSwgYm9vbCBpc19rZXlmcmFtZSkgeworICBy
ZXR1cm4gT25SZWNlaXZlZFBhY2tldChzZXFfbnVtLCBpc19rZXlmcmFtZSwgZmFsc2UpOworfQor
CitpbnQgTmFja01vZHVsZTo6T25SZWNlaXZlZFBhY2tldCh1aW50MTZfdCBzZXFfbnVtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19rZXlmcmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfcmVjb3ZlcmVkKSB7CiAgIHJ0Yzo6Q3Jp
dFNjb3BlIGxvY2soJmNyaXRfKTsKICAgLy8gVE9ETyhwaGlsaXBlbCk6IFdoZW4gdGhlIHBhY2tl
dCBpbmNsdWRlcyBpbmZvcm1hdGlvbiB3aGV0aGVyIGl0IGlzCiAgIC8vICAgICAgICAgICAgICAg
ICByZXRyYW5zbWl0dGVkIG9yIG5vdCwgdXNlIHRoYXQgdmFsdWUgaW5zdGVhZC4gRm9yCkBAIC04
OCw4ICsxMTEsNiBAQCBpbnQgTmFja01vZHVsZTo6T25SZWNlaXZlZFBhY2tldCh1aW50MTZfdCBz
ZXFfbnVtLCBib29sIGlzX2tleWZyYW1lKSB7CiAgICAgICBVcGRhdGVSZW9yZGVyaW5nU3RhdGlz
dGljcyhzZXFfbnVtKTsKICAgICByZXR1cm4gbmFja3Nfc2VudF9mb3JfcGFja2V0OwogICB9Ci0g
IEFkZFBhY2tldHNUb05hY2sobmV3ZXN0X3NlcV9udW1fICsgMSwgc2VxX251bSk7Ci0gIG5ld2Vz
dF9zZXFfbnVtXyA9IHNlcV9udW07CiAKICAgLy8gS2VlcCB0cmFjayBvZiBuZXcga2V5ZnJhbWVz
LgogICBpZiAoaXNfa2V5ZnJhbWUpCkBAIC0xMDAsNiArMTIxLDIxIEBAIGludCBOYWNrTW9kdWxl
OjpPblJlY2VpdmVkUGFja2V0KHVpbnQxNl90IHNlcV9udW0sIGJvb2wgaXNfa2V5ZnJhbWUpIHsK
ICAgaWYgKGl0ICE9IGtleWZyYW1lX2xpc3RfLmJlZ2luKCkpCiAgICAga2V5ZnJhbWVfbGlzdF8u
ZXJhc2Uoa2V5ZnJhbWVfbGlzdF8uYmVnaW4oKSwgaXQpOwogCisgIGlmIChpc19yZWNvdmVyZWQp
IHsKKyAgICByZWNvdmVyZWRfbGlzdF8uaW5zZXJ0KHNlcV9udW0pOworCisgICAgLy8gUmVtb3Zl
IG9sZCBvbmVzIHNvIHdlIGRvbid0IGFjY3VtdWxhdGUgcmVjb3ZlcmVkIHBhY2tldHMuCisgICAg
YXV0byBpdCA9IHJlY292ZXJlZF9saXN0Xy5sb3dlcl9ib3VuZChzZXFfbnVtIC0ga01heFBhY2tl
dEFnZSk7CisgICAgaWYgKGl0ICE9IHJlY292ZXJlZF9saXN0Xy5iZWdpbigpKQorICAgICAgcmVj
b3ZlcmVkX2xpc3RfLmVyYXNlKHJlY292ZXJlZF9saXN0Xy5iZWdpbigpLCBpdCk7CisKKyAgICAv
LyBEbyBub3Qgc2VuZCBuYWNrIGZvciBwYWNrZXRzIHJlY292ZXJlZCBieSBGRUMgb3IgUlRYLgor
ICAgIHJldHVybiAwOworICB9CisKKyAgQWRkUGFja2V0c1RvTmFjayhuZXdlc3Rfc2VxX251bV8g
KyAxLCBzZXFfbnVtKTsKKyAgbmV3ZXN0X3NlcV9udW1fID0gc2VxX251bTsKKwogICAvLyBBcmUg
dGhlcmUgYW55IG5hY2tzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIHRoaXMgc2VxX251bS4KICAgc3Rk
Ojp2ZWN0b3I8dWludDE2X3Q+IG5hY2tfYmF0Y2ggPSBHZXROYWNrQmF0Y2goa1NlcU51bU9ubHkp
OwogICBpZiAoIW5hY2tfYmF0Y2guZW1wdHkoKSkKQEAgLTExMyw2ICsxNDksOCBAQCB2b2lkIE5h
Y2tNb2R1bGU6OkNsZWFyVXBUbyh1aW50MTZfdCBzZXFfbnVtKSB7CiAgIG5hY2tfbGlzdF8uZXJh
c2UobmFja19saXN0Xy5iZWdpbigpLCBuYWNrX2xpc3RfLmxvd2VyX2JvdW5kKHNlcV9udW0pKTsK
ICAga2V5ZnJhbWVfbGlzdF8uZXJhc2Uoa2V5ZnJhbWVfbGlzdF8uYmVnaW4oKSwKICAgICAgICAg
ICAgICAgICAgICAgICAga2V5ZnJhbWVfbGlzdF8ubG93ZXJfYm91bmQoc2VxX251bSkpOworICBy
ZWNvdmVyZWRfbGlzdF8uZXJhc2UocmVjb3ZlcmVkX2xpc3RfLmJlZ2luKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICByZWNvdmVyZWRfbGlzdF8ubG93ZXJfYm91bmQoc2VxX251bSkpOwogfQog
CiB2b2lkIE5hY2tNb2R1bGU6OlVwZGF0ZVJ0dChpbnQ2NF90IHJ0dF9tcykgewpAQCAtMTI0LDYg
KzE2Miw3IEBAIHZvaWQgTmFja01vZHVsZTo6Q2xlYXIoKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxv
Y2soJmNyaXRfKTsKICAgbmFja19saXN0Xy5jbGVhcigpOwogICBrZXlmcmFtZV9saXN0Xy5jbGVh
cigpOworICByZWNvdmVyZWRfbGlzdF8uY2xlYXIoKTsKIH0KIAogaW50NjRfdCBOYWNrTW9kdWxl
OjpUaW1lVW50aWxOZXh0UHJvY2VzcygpIHsKQEAgLTIwMCw3ICsyMzksMTEgQEAgdm9pZCBOYWNr
TW9kdWxlOjpBZGRQYWNrZXRzVG9OYWNrKHVpbnQxNl90IHNlcV9udW1fc3RhcnQsCiAgIH0KIAog
ICBmb3IgKHVpbnQxNl90IHNlcV9udW0gPSBzZXFfbnVtX3N0YXJ0OyBzZXFfbnVtICE9IHNlcV9u
dW1fZW5kOyArK3NlcV9udW0pIHsKLSAgICBOYWNrSW5mbyBuYWNrX2luZm8oc2VxX251bSwgc2Vx
X251bSArIFdhaXROdW1iZXJPZlBhY2tldHMoMC41KSk7CisgICAgLy8gRG8gbm90IHNlbmQgbmFj
ayBmb3IgcGFja2V0cyB0aGF0IGFyZSBhbHJlYWR5IHJlY292ZXJlZCBieSBGRUMgb3IgUlRYCisg
ICAgaWYgKHJlY292ZXJlZF9saXN0Xy5maW5kKHNlcV9udW0pICE9IHJlY292ZXJlZF9saXN0Xy5l
bmQoKSkKKyAgICAgIGNvbnRpbnVlOworICAgIE5hY2tJbmZvIG5hY2tfaW5mbyhzZXFfbnVtLCBz
ZXFfbnVtICsgV2FpdE51bWJlck9mUGFja2V0cygwLjUpLAorICAgICAgICAgICAgICAgICAgICAg
ICBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKICAgICBSVENfRENIRUNLKG5hY2tfbGlz
dF8uZmluZChzZXFfbnVtKSA9PSBuYWNrX2xpc3RfLmVuZCgpKTsKICAgICBuYWNrX2xpc3RfW3Nl
cV9udW1dID0gbmFja19pbmZvOwogICB9CkBAIC0yMTMsMjIgKzI1NiwxNCBAQCBzdGQ6OnZlY3Rv
cjx1aW50MTZfdD4gTmFja01vZHVsZTo6R2V0TmFja0JhdGNoKE5hY2tGaWx0ZXJPcHRpb25zIG9w
dGlvbnMpIHsKICAgc3RkOjp2ZWN0b3I8dWludDE2X3Q+IG5hY2tfYmF0Y2g7CiAgIGF1dG8gaXQg
PSBuYWNrX2xpc3RfLmJlZ2luKCk7CiAgIHdoaWxlIChpdCAhPSBuYWNrX2xpc3RfLmVuZCgpKSB7
Ci0gICAgaWYgKGNvbnNpZGVyX3NlcV9udW0gJiYgaXQtPnNlY29uZC5zZW50X2F0X3RpbWUgPT0g
LTEgJiYKLSAgICAgICAgQWhlYWRPckF0KG5ld2VzdF9zZXFfbnVtXywgaXQtPnNlY29uZC5zZW5k
X2F0X3NlcV9udW0pKSB7Ci0gICAgICBuYWNrX2JhdGNoLmVtcGxhY2VfYmFjayhpdC0+c2Vjb25k
LnNlcV9udW0pOwotICAgICAgKytpdC0+c2Vjb25kLnJldHJpZXM7Ci0gICAgICBpdC0+c2Vjb25k
LnNlbnRfYXRfdGltZSA9IG5vd19tczsKLSAgICAgIGlmIChpdC0+c2Vjb25kLnJldHJpZXMgPj0g
a01heE5hY2tSZXRyaWVzKSB7Ci0gICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlNlcXVl
bmNlIG51bWJlciAiIDw8IGl0LT5zZWNvbmQuc2VxX251bQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIgcmVtb3ZlZCBmcm9tIE5BQ0sgbGlzdCBkdWUgdG8gbWF4IHJldHJpZXMuIjsK
LSAgICAgICAgaXQgPSBuYWNrX2xpc3RfLmVyYXNlKGl0KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICsraXQ7Ci0gICAgICB9Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICBpZiAoY29u
c2lkZXJfdGltZXN0YW1wICYmIGl0LT5zZWNvbmQuc2VudF9hdF90aW1lICsgcnR0X21zXyA8PSBu
b3dfbXMpIHsKKyAgICBib29sIGRlbGF5X3RpbWVkX291dCA9CisgICAgICAgIG5vd19tcyAtIGl0
LT5zZWNvbmQuY3JlYXRlZF9hdF90aW1lID49IHNlbmRfbmFja19kZWxheV9tc187CisgICAgYm9v
bCBuYWNrX29uX3J0dF9wYXNzZWQgPSBub3dfbXMgLSBpdC0+c2Vjb25kLnNlbnRfYXRfdGltZSA+
PSBydHRfbXNfOworICAgIGJvb2wgbmFja19vbl9zZXFfbnVtX3Bhc3NlZCA9CisgICAgICAgIGl0
LT5zZWNvbmQuc2VudF9hdF90aW1lID09IC0xICYmCisgICAgICAgIEFoZWFkT3JBdChuZXdlc3Rf
c2VxX251bV8sIGl0LT5zZWNvbmQuc2VuZF9hdF9zZXFfbnVtKTsKKyAgICBpZiAoZGVsYXlfdGlt
ZWRfb3V0ICYmICgoY29uc2lkZXJfc2VxX251bSAmJiBuYWNrX29uX3NlcV9udW1fcGFzc2VkKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zaWRlcl90aW1lc3RhbXAgJiYgbmFj
a19vbl9ydHRfcGFzc2VkKSkpIHsKICAgICAgIG5hY2tfYmF0Y2guZW1wbGFjZV9iYWNrKGl0LT5z
ZWNvbmQuc2VxX251bSk7CiAgICAgICArK2l0LT5zZWNvbmQucmV0cmllczsKICAgICAgIGl0LT5z
ZWNvbmQuc2VudF9hdF90aW1lID0gbm93X21zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1
bGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL25hY2tfbW9kdWxlLmgKaW5kZXggNDQzNDBlOWQ0Y2E0NzY0NTRjYTdkMGIz
YjVhNjg3ZjU3ZGQ3NDNlOS4uZjg2ZGQxNmRiMjhhYzMwZTBmNGExMzZjMDRjNWI1M2E5YTk1MzJi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1bGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9uYWNrX21vZHVs
ZS5oCkBAIC0zMiw2ICszMiw4IEBAIGNsYXNzIE5hY2tNb2R1bGUgOiBwdWJsaWMgTW9kdWxlIHsK
ICAgICAgICAgICAgICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1lX3JlcXVlc3Rfc2Vu
ZGVyKTsKIAogICBpbnQgT25SZWNlaXZlZFBhY2tldCh1aW50MTZfdCBzZXFfbnVtLCBib29sIGlz
X2tleWZyYW1lKTsKKyAgaW50IE9uUmVjZWl2ZWRQYWNrZXQodWludDE2X3Qgc2VxX251bSwgYm9v
bCBpc19rZXlmcmFtZSwgYm9vbCBpc19yZWNvdmVyZWQpOworCiAgIHZvaWQgQ2xlYXJVcFRvKHVp
bnQxNl90IHNlcV9udW0pOwogICB2b2lkIFVwZGF0ZVJ0dChpbnQ2NF90IHJ0dF9tcyk7CiAgIHZv
aWQgQ2xlYXIoKTsKQEAgLTUwLDEwICs1MiwxMyBAQCBjbGFzcyBOYWNrTW9kdWxlIDogcHVibGlj
IE1vZHVsZSB7CiAgIC8vIHdlIGhhdmUgdHJpZWQgdG8gbmFjayB0aGlzIHBhY2tldC4KICAgc3Ry
dWN0IE5hY2tJbmZvIHsKICAgICBOYWNrSW5mbygpOwotICAgIE5hY2tJbmZvKHVpbnQxNl90IHNl
cV9udW0sIHVpbnQxNl90IHNlbmRfYXRfc2VxX251bSk7CisgICAgTmFja0luZm8odWludDE2X3Qg
c2VxX251bSwKKyAgICAgICAgICAgICB1aW50MTZfdCBzZW5kX2F0X3NlcV9udW0sCisgICAgICAg
ICAgICAgaW50NjRfdCBjcmVhdGVkX2F0X3RpbWUpOwogCiAgICAgdWludDE2X3Qgc2VxX251bTsK
ICAgICB1aW50MTZfdCBzZW5kX2F0X3NlcV9udW07CisgICAgaW50NjRfdCBjcmVhdGVkX2F0X3Rp
bWU7CiAgICAgaW50NjRfdCBzZW50X2F0X3RpbWU7CiAgICAgaW50IHJldHJpZXM7CiAgIH07CkBA
IC04Nyw2ICs5Miw4IEBAIGNsYXNzIE5hY2tNb2R1bGUgOiBwdWJsaWMgTW9kdWxlIHsKICAgICAg
IFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKICAgc3RkOjpzZXQ8dWludDE2X3QsIERlc2NlbmRpbmdT
ZXFOdW1Db21wPHVpbnQxNl90Pj4ga2V5ZnJhbWVfbGlzdF8KICAgICAgIFJUQ19HVUFSREVEX0JZ
KGNyaXRfKTsKKyAgc3RkOjpzZXQ8dWludDE2X3QsIERlc2NlbmRpbmdTZXFOdW1Db21wPHVpbnQx
Nl90Pj4gcmVjb3ZlcmVkX2xpc3RfCisgICAgICBSVENfR1VBUkRFRF9CWShjcml0Xyk7CiAgIHZp
ZGVvX2NvZGluZzo6SGlzdG9ncmFtIHJlb3JkZXJpbmdfaGlzdG9ncmFtXyBSVENfR1VBUkRFRF9C
WShjcml0Xyk7CiAgIGJvb2wgaW5pdGlhbGl6ZWRfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKICAg
aW50NjRfdCBydHRfbXNfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKQEAgLTk0LDYgKzEwMSw5IEBA
IGNsYXNzIE5hY2tNb2R1bGUgOiBwdWJsaWMgTW9kdWxlIHsKIAogICAvLyBPbmx5IHRvdWNoZWQg
b24gdGhlIHByb2Nlc3MgdGhyZWFkLgogICBpbnQ2NF90IG5leHRfcHJvY2Vzc190aW1lX21zXzsK
KworICAvLyBBZGRzIGEgZGVsYXkgYmVmb3JlIHNlbmQgbmFjayBvbiBwYWNrZXQgcmVjZWl2ZWQu
CisgIGNvbnN0IGludDY0X3Qgc2VuZF9uYWNrX2RlbGF5X21zXzsKIH07CiAKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL25hY2tfbW9kdWxlX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvbmFja19tb2R1bGVfdW5pdHRlc3QuY2MKaW5kZXggOGE1ZjQ2YmY3ZmJhNTY4NzJmMjU5
MzYzMjg3YzAzZDlkMzg3MTYwOC4uOGVmYjhhYzE1NDlmOWQ0YjRjYjc5OGU0NWE5YmEzNjY1OTdl
ZDExMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1bGVfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvbmFja19tb2R1bGVfdW5pdHRlc3QuY2MKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZ19kZWZpbmVzLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1bGUuaCIKICNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgorI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwu
aCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNDAs
MzggKzQxLDM4IEBAIGNsYXNzIFRlc3ROYWNrTW9kdWxlIDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCwKIH07CiAKIFRFU1RfRihUZXN0TmFja01vZHVsZSwgTmFja09uZVBhY2tldCkgewotICBuYWNr
X21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBmYWxzZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJl
Y2VpdmVkUGFja2V0KDMsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQo
MSwgZmFsc2UsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMywgZmFs
c2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDF1LCBzZW50X25hY2tzXy5zaXplKCkpOwogICBFWFBF
Q1RfRVEoMiwgc2VudF9uYWNrc19bMF0pOwogfQogCiBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIFdy
YXBwaW5nU2VxTnVtKSB7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDB4ZmZmZSwg
ZmFsc2UpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBmYWxzZSk7CisgIG5h
Y2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDB4ZmZmZSwgZmFsc2UsIGZhbHNlKTsKKyAgbmFj
a19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMSwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VR
KDJ1LCBzZW50X25hY2tzXy5zaXplKCkpOwogICBFWFBFQ1RfRVEoMHhmZmZmLCBzZW50X25hY2tz
X1swXSk7CiAgIEVYUEVDVF9FUSgwLCBzZW50X25hY2tzX1sxXSk7CiB9CiAKIFRFU1RfRihUZXN0
TmFja01vZHVsZSwgV3JhcHBpbmdTZXFOdW1DbGVhclRvS2V5ZnJhbWUpIHsKLSAgbmFja19tb2R1
bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMHhmZmZlLCBmYWxzZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJl
Y2VpdmVkUGFja2V0KDEsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQo
MHhmZmZlLCBmYWxzZSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgx
LCBmYWxzZSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoMnUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAg
IEVYUEVDVF9FUSgweGZmZmYsIHNlbnRfbmFja3NfWzBdKTsKICAgRVhQRUNUX0VRKDAsIHNlbnRf
bmFja3NfWzFdKTsKIAogICBzZW50X25hY2tzXy5jbGVhcigpOwotICBuYWNrX21vZHVsZV8uT25S
ZWNlaXZlZFBhY2tldCgyLCB0cnVlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQo
MiwgdHJ1ZSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoMHUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAK
LSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNTAxLCB0cnVlKTsKKyAgbmFja19tb2R1
bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNTAxLCB0cnVlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSg0OTh1
LCBzZW50X25hY2tzXy5zaXplKCkpOwogICBmb3IgKGludCBzZXFfbnVtID0gMzsgc2VxX251bSA8
IDUwMTsgKytzZXFfbnVtKQogICAgIEVYUEVDVF9FUShzZXFfbnVtLCBzZW50X25hY2tzX1tzZXFf
bnVtIC0gM10pOwogCiAgIHNlbnRfbmFja3NfLmNsZWFyKCk7Ci0gIG5hY2tfbW9kdWxlXy5PblJl
Y2VpdmVkUGFja2V0KDEwMDEsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNr
ZXQoMTAwMSwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDQ5OXUsIHNlbnRfbmFja3NfLnNp
emUoKSk7CiAgIGZvciAoaW50IHNlcV9udW0gPSA1MDI7IHNlcV9udW0gPCAxMDAxOyArK3NlcV9u
dW0pCiAgICAgRVhQRUNUX0VRKHNlcV9udW0sIHNlbnRfbmFja3NfW3NlcV9udW0gLSA1MDJdKTsK
QEAgLTkxLDcgKzkyLDcgQEAgVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBXcmFwcGluZ1NlcU51bUNs
ZWFyVG9LZXlmcmFtZSkgewogICAvLyBJdCB3aWxsIHRoZW4gY2xlYXIgYWxsIG5hY2tzIHVwIHRv
IHRoZSBuZXh0IGtleWZyYW1lIChzZXEgbnVtIDIpLAogICAvLyB0aHVzIHJlbW92aW5nIDB4ZmZm
ZiBhbmQgMCBmcm9tIHRoZSBuYWNrIGxpc3QuCiAgIHNlbnRfbmFja3NfLmNsZWFyKCk7Ci0gIG5h
Y2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMDQsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVf
Lk9uUmVjZWl2ZWRQYWNrZXQoMTAwNCwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDJ1LCBz
ZW50X25hY2tzXy5zaXplKCkpOwogICBFWFBFQ1RfRVEoMTAwMiwgc2VudF9uYWNrc19bMF0pOwog
ICBFWFBFQ1RfRVEoMTAwMywgc2VudF9uYWNrc19bMV0pOwpAQCAtMTA3LDcgKzEwOCw3IEBAIFRF
U1RfRihUZXN0TmFja01vZHVsZSwgV3JhcHBpbmdTZXFOdW1DbGVhclRvS2V5ZnJhbWUpIHsKIAog
ICAvLyBBZGRpbmcgcGFja2V0IDEwMDcgd2lsbCBjYXVzZSB0aGUgbmFjayBtb2R1bGUgdG8gb3Zl
cmZsb3cgYWdhaW4sIHRodXMKICAgLy8gY2xlYXJpbmcgZXZlcnl0aGluZyB1cCB0byA1MDEgd2hp
Y2ggaXMgdGhlIG5leHQga2V5ZnJhbWUuCi0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0
KDEwMDcsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwNywgZmFs
c2UsIGZhbHNlKTsKICAgc2VudF9uYWNrc18uY2xlYXIoKTsKICAgY2xvY2tfLT5BZHZhbmNlVGlt
ZU1pbGxpc2Vjb25kcygxMDApOwogICBuYWNrX21vZHVsZV8uUHJvY2VzcygpOwpAQCAtMTQ2LDgg
KzE0Nyw4IEBAIFRFU1RfRihUZXN0TmFja01vZHVsZSwgRG9udEJ1cnN0T25UaW1lU2tpcCkgewog
fQogCiBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIFJlc2VuZE5hY2spIHsKLSAgbmFja19tb2R1bGVf
Lk9uUmVjZWl2ZWRQYWNrZXQoMSwgZmFsc2UpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBh
Y2tldCgzLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIGZhbHNl
LCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDMsIGZhbHNlLCBmYWxz
ZSk7CiAgIEVYUEVDVF9FUSgxdSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQRUNUX0VRKDIs
IHNlbnRfbmFja3NfWzBdKTsKIApAQCAtMTY5LDE1ICsxNzAsMTUgQEAgVEVTVF9GKFRlc3ROYWNr
TW9kdWxlLCBSZXNlbmROYWNrKSB7CiAgIG5hY2tfbW9kdWxlXy5Qcm9jZXNzKCk7CiAgIEVYUEVD
VF9FUSg0dSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKIAotICBuYWNrX21vZHVsZV8uT25SZWNlaXZl
ZFBhY2tldCgyLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDIsIGZh
bHNlLCBmYWxzZSk7CiAgIGNsb2NrXy0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoNTApOwogICBu
YWNrX21vZHVsZV8uUHJvY2VzcygpOwogICBFWFBFQ1RfRVEoNHUsIHNlbnRfbmFja3NfLnNpemUo
KSk7CiB9CiAKIFRFU1RfRihUZXN0TmFja01vZHVsZSwgUmVzZW5kUGFja2V0TWF4UmV0cmllcykg
ewotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBmYWxzZSk7Ci0gIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDMsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2
ZWRQYWNrZXQoMSwgZmFsc2UsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNr
ZXQoMywgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDF1LCBzZW50X25hY2tzXy5zaXplKCkp
OwogICBFWFBFQ1RfRVEoMiwgc2VudF9uYWNrc19bMF0pOwogCkBAIC0xOTMsMzUgKzE5NCwzNSBA
QCBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIFJlc2VuZFBhY2tldE1heFJldHJpZXMpIHsKIH0KIAog
VEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBUb29MYXJnZU5hY2tMaXN0KSB7Ci0gIG5hY2tfbW9kdWxl
Xy5PblJlY2VpdmVkUGFja2V0KDAsIGZhbHNlKTsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQ
YWNrZXQoMTAwMSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgwLCBm
YWxzZSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAxLCBmYWxz
ZSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoMTAwMHUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAgIEVY
UEVDVF9FUSgwLCBrZXlmcmFtZXNfcmVxdWVzdGVkXyk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2Vp
dmVkUGFja2V0KDEwMDMsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQo
MTAwMywgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDEwMDB1LCBzZW50X25hY2tzXy5zaXpl
KCkpOwogICBFWFBFQ1RfRVEoMSwga2V5ZnJhbWVzX3JlcXVlc3RlZF8pOwotICBuYWNrX21vZHVs
ZV8uT25SZWNlaXZlZFBhY2tldCgxMDA0LCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2Vp
dmVkUGFja2V0KDEwMDQsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSgxMDAwdSwgc2VudF9u
YWNrc18uc2l6ZSgpKTsKICAgRVhQRUNUX0VRKDEsIGtleWZyYW1lc19yZXF1ZXN0ZWRfKTsKIH0K
IAogVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBUb29MYXJnZU5hY2tMaXN0V2l0aEtleUZyYW1lKSB7
Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDAsIGZhbHNlKTsKLSAgbmFja19tb2R1
bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMSwgdHJ1ZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVk
UGFja2V0KDEwMDEsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwg
ZmFsc2UsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMSwgdHJ1ZSwg
ZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAxLCBmYWxzZSwgZmFs
c2UpOwogICBFWFBFQ1RfRVEoOTk5dSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQRUNUX0VR
KDAsIGtleWZyYW1lc19yZXF1ZXN0ZWRfKTsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNr
ZXQoMTAwMywgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAzLCBm
YWxzZSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoMTAwMHUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAg
IEVYUEVDVF9FUSgwLCBrZXlmcmFtZXNfcmVxdWVzdGVkXyk7Ci0gIG5hY2tfbW9kdWxlXy5PblJl
Y2VpdmVkUGFja2V0KDEwMDUsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNr
ZXQoMTAwNSwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDEwMDB1LCBzZW50X25hY2tzXy5z
aXplKCkpOwogICBFWFBFQ1RfRVEoMSwga2V5ZnJhbWVzX3JlcXVlc3RlZF8pOwogfQogCiBURVNU
X0YoVGVzdE5hY2tNb2R1bGUsIENsZWFyVXBUbykgewotICBuYWNrX21vZHVsZV8uT25SZWNlaXZl
ZFBhY2tldCgwLCBmYWxzZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMCwg
ZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgwLCBmYWxzZSwgZmFsc2Up
OworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAsIGZhbHNlLCBmYWxzZSk7CiAg
IEVYUEVDVF9FUSg5OXUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAKICAgc2VudF9uYWNrc18uY2xl
YXIoKTsKQEAgLTIzMyw4ICsyMzQsOCBAQCBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIENsZWFyVXBU
bykgewogfQogCiBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIENsZWFyVXBUb1dyYXApIHsKLSAgbmFj
a19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMHhmZmYwLCBmYWxzZSk7Ci0gIG5hY2tfbW9kdWxl
Xy5PblJlY2VpdmVkUGFja2V0KDB4ZiwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZl
ZFBhY2tldCgweGZmZjAsIGZhbHNlLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVk
UGFja2V0KDB4ZiwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDMwdSwgc2VudF9uYWNrc18u
c2l6ZSgpKTsKIAogICBzZW50X25hY2tzXy5jbGVhcigpOwpAQCAtMjQ2LDIwICsyNDcsMjAgQEAg
VEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBDbGVhclVwVG9XcmFwKSB7CiB9CiAKIFRFU1RfRihUZXN0
TmFja01vZHVsZSwgUGFja2V0TmFja0NvdW50KSB7Ci0gIEVYUEVDVF9FUSgwLCBuYWNrX21vZHVs
ZV8uT25SZWNlaXZlZFBhY2tldCgwLCBmYWxzZSkpOwotICBFWFBFQ1RfRVEoMCwgbmFja19tb2R1
bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMiwgZmFsc2UpKTsKLSAgRVhQRUNUX0VRKDEsIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIGZhbHNlKSk7CisgIEVYUEVDVF9FUSgwLCBuYWNrX21v
ZHVsZV8uT25SZWNlaXZlZFBhY2tldCgwLCBmYWxzZSwgZmFsc2UpKTsKKyAgRVhQRUNUX0VRKDAs
IG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDIsIGZhbHNlLCBmYWxzZSkpOworICBFWFBF
Q1RfRVEoMSwgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMSwgZmFsc2UsIGZhbHNlKSk7
CiAKICAgc2VudF9uYWNrc18uY2xlYXIoKTsKICAgbmFja19tb2R1bGVfLlVwZGF0ZVJ0dCgxMDAp
OwotICBFWFBFQ1RfRVEoMCwgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNSwgZmFsc2Up
KTsKKyAgRVhQRUNUX0VRKDAsIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDUsIGZhbHNl
LCBmYWxzZSkpOwogICBjbG9ja18tPkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMCk7CiAgIG5h
Y2tfbW9kdWxlXy5Qcm9jZXNzKCk7CiAgIGNsb2NrXy0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMo
MTAwKTsKICAgbmFja19tb2R1bGVfLlByb2Nlc3MoKTsKLSAgRVhQRUNUX0VRKDMsIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDMsIGZhbHNlKSk7Ci0gIEVYUEVDVF9FUSgzLCBuYWNrX21v
ZHVsZV8uT25SZWNlaXZlZFBhY2tldCg0LCBmYWxzZSkpOwotICBFWFBFQ1RfRVEoMCwgbmFja19t
b2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNCwgZmFsc2UpKTsKKyAgRVhQRUNUX0VRKDMsIG5hY2tf
bW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDMsIGZhbHNlLCBmYWxzZSkpOworICBFWFBFQ1RfRVEo
MywgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNCwgZmFsc2UsIGZhbHNlKSk7CisgIEVY
UEVDVF9FUSgwLCBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCg0LCBmYWxzZSwgZmFsc2Up
KTsKIH0KIAogVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBOYWNrTGlzdEZ1bGxBbmROb092ZXJsYXBX
aXRoS2V5ZnJhbWVzKSB7CkBAIC0yNjcsMTQgKzI2OCw2MyBAQCBURVNUX0YoVGVzdE5hY2tNb2R1
bGUsIE5hY2tMaXN0RnVsbEFuZE5vT3ZlcmxhcFdpdGhLZXlmcmFtZXMpIHsKICAgY29uc3QgdW5z
aWduZWQgaW50IGtGaXJzdEdhcCA9IGtNYXhOYWNrUGFja2V0cyAtIDIwOwogICBjb25zdCB1bnNp
Z25lZCBpbnQga1NlY29uZEdhcCA9IDIwMDsKICAgdWludDE2X3Qgc2VxX251bSA9IDA7Ci0gIG5h
Y2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KHNlcV9udW0rKywgdHJ1ZSk7CisgIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KHNlcV9udW0rKywgdHJ1ZSwgZmFsc2UpOwogICBzZXFfbnVt
ICs9IGtGaXJzdEdhcDsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoc2VxX251bSsr
LCB0cnVlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoc2VxX251bSsrLCB0cnVl
LCBmYWxzZSk7CiAgIEVYUEVDVF9FUShrRmlyc3RHYXAsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAg
IHNlbnRfbmFja3NfLmNsZWFyKCk7CiAgIHNlcV9udW0gKz0ga1NlY29uZEdhcDsKLSAgbmFja19t
b2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoc2VxX251bSwgdHJ1ZSk7CisgIG5hY2tfbW9kdWxlXy5P
blJlY2VpdmVkUGFja2V0KHNlcV9udW0sIHRydWUsIGZhbHNlKTsKICAgRVhQRUNUX0VRKGtTZWNv
bmRHYXAsIHNlbnRfbmFja3NfLnNpemUoKSk7CiB9CiAKK1RFU1RfRihUZXN0TmFja01vZHVsZSwg
SGFuZGxlRmVjUmVjb3ZlcmVkUGFja2V0KSB7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFj
a2V0KDEsIGZhbHNlLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDQs
IGZhbHNlLCB0cnVlKTsKKyAgRVhQRUNUX0VRKDB1LCBzZW50X25hY2tzXy5zaXplKCkpOworICBu
YWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCg1LCBmYWxzZSwgZmFsc2UpOworICBFWFBFQ1Rf
RVEoMnUsIHNlbnRfbmFja3NfLnNpemUoKSk7Cit9CisKK1RFU1RfRihUZXN0TmFja01vZHVsZSwg
U2VuZE5hY2tXaXRob3V0RGVsYXkpIHsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQo
MCwgZmFsc2UsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwLCBm
YWxzZSwgZmFsc2UpOworICBFWFBFQ1RfRVEoOTl1LCBzZW50X25hY2tzXy5zaXplKCkpOworfQor
CitjbGFzcyBUZXN0TmFja01vZHVsZVdpdGhGaWVsZFRyaWFsIDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgTmFja1Nl
bmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgS2V5RnJh
bWVSZXF1ZXN0U2VuZGVyIHsKKyBwcm90ZWN0ZWQ6CisgIFRlc3ROYWNrTW9kdWxlV2l0aEZpZWxk
VHJpYWwoKQorICAgICAgOiBuYWNrX2RlbGF5X2ZpZWxkX3RyaWFsXygiV2ViUlRDLVNlbmROYWNr
RGVsYXlNcy8xMC8iKSwKKyAgICAgICAgY2xvY2tfKG5ldyBTaW11bGF0ZWRDbG9jaygwKSksCisg
ICAgICAgIG5hY2tfbW9kdWxlXyhjbG9ja18uZ2V0KCksIHRoaXMsIHRoaXMpLAorICAgICAgICBr
ZXlmcmFtZXNfcmVxdWVzdGVkXygwKSB7fQorCisgIHZvaWQgU2VuZE5hY2soY29uc3Qgc3RkOjp2
ZWN0b3I8dWludDE2X3Q+JiBzZXF1ZW5jZV9udW1iZXJzKSBvdmVycmlkZSB7CisgICAgc2VudF9u
YWNrc18uaW5zZXJ0KHNlbnRfbmFja3NfLmVuZCgpLCBzZXF1ZW5jZV9udW1iZXJzLmJlZ2luKCks
CisgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMuZW5kKCkpOworICB9CisK
KyAgdm9pZCBSZXF1ZXN0S2V5RnJhbWUoKSBvdmVycmlkZSB7ICsra2V5ZnJhbWVzX3JlcXVlc3Rl
ZF87IH0KKworICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBuYWNrX2RlbGF5X2ZpZWxkX3RyaWFs
XzsKKyAgc3RkOjp1bmlxdWVfcHRyPFNpbXVsYXRlZENsb2NrPiBjbG9ja187CisgIE5hY2tNb2R1
bGUgbmFja19tb2R1bGVfOworICBzdGQ6OnZlY3Rvcjx1aW50MTZfdD4gc2VudF9uYWNrc187Cisg
IGludCBrZXlmcmFtZXNfcmVxdWVzdGVkXzsKK307CisKK1RFU1RfRihUZXN0TmFja01vZHVsZVdp
dGhGaWVsZFRyaWFsLCBTZW5kTmFja1dpdGhEZWxheSkgeworICBuYWNrX21vZHVsZV8uT25SZWNl
aXZlZFBhY2tldCgwLCBmYWxzZSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBh
Y2tldCgxMDAsIGZhbHNlLCBmYWxzZSk7CisgIEVYUEVDVF9FUSgwdSwgc2VudF9uYWNrc18uc2l6
ZSgpKTsKKyAgY2xvY2tfLT5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMCk7CisgIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDEwNiwgZmFsc2UsIGZhbHNlKTsKKyAgRVhQRUNUX0VRKDk5
dSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKKyAgY2xvY2tfLT5BZHZhbmNlVGltZU1pbGxpc2Vjb25k
cygxMCk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwOSwgZmFsc2UsIGZhbHNl
KTsKKyAgRVhQRUNUX0VRKDEwNHUsIHNlbnRfbmFja3NfLnNpemUoKSk7Cit9CiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3JlY2Vp
dmVyLmNjCmluZGV4IDdmMjJiNzNhNWE2MjFhMjg5ZTg2MGEwYmQ0ZjlkOTI2MzU0MzYwYTUuLjVi
ZjI3MjU3YjA3YTMxYTZiOWQwYWZjN2M1Y2VjNDIyMDI3YWRhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L3JlY2VpdmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3JlY2VpdmVyLmNjCkBAIC0yOCwzMiArMjgsMjUgQEAg
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGVudW0geyBrTWF4UmVjZWl2ZXJEZWxheU1zID0gMTAwMDAg
fTsKIAotVkNNUmVjZWl2ZXI6OlZDTVJlY2VpdmVyKFZDTVRpbWluZyogdGltaW5nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIENsb2NrKiBjbG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBFdmVudEZhY3RvcnkqIGV2ZW50X2ZhY3RvcnkpCitWQ01SZWNlaXZlcjo6VkNNUmVjZWl2ZXIo
VkNNVGltaW5nKiB0aW1pbmcsIENsb2NrKiBjbG9jaykKICAgICA6IFZDTVJlY2VpdmVyOjpWQ01S
ZWNlaXZlcih0aW1pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfZmFjdG9yeSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhYnNsOjpXcmFwVW5pcXVlKEV2ZW50V3JhcHBlcjo6Q3JlYXRl
KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OldyYXBVbmlxdWUoRXZl
bnRXcmFwcGVyOjpDcmVhdGUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciwgIC8vIE5hY2tTZW5kZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKSAgLy8gS2V5ZnJhbWVSZXF1ZXN0U2VuZGVyCiB7fQogCiBWQ01SZWNlaXZlcjo6VkNNUmVj
ZWl2ZXIoVkNNVGltaW5nKiB0aW1pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvY2sq
IGNsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50RmFjdG9yeSogZXZlbnRfZmFj
dG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYWNrU2VuZGVyKiBuYWNrX3NlbmRlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1l
X3JlcXVlc3Rfc2VuZGVyKQotICAgIDogVkNNUmVjZWl2ZXIoCi0gICAgICAgICAgdGltaW5nLAot
ICAgICAgICAgIGNsb2NrLAotICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+
KGV2ZW50X2ZhY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPyBldmVudF9mYWN0b3J5LT5DcmVhdGVFdmVudCgpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCi0gICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4oZXZlbnRfZmFjdG9yeQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGV2ZW50X2ZhY3RvcnktPkNyZWF0
ZUV2ZW50KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBF
dmVudFdyYXBwZXI6OkNyZWF0ZSgpKSwKLSAgICAgICAgICBuYWNrX3NlbmRlciwKLSAgICAgICAg
ICBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcikge30KKyAgICA6IFZDTVJlY2VpdmVyKHRpbWluZywK
KyAgICAgICAgICAgICAgICAgIGNsb2NrLAorICAgICAgICAgICAgICAgICAgYWJzbDo6V3JhcFVu
aXF1ZShFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSwKKyAgICAgICAgICAgICAgICAgIGFic2w6Oldy
YXBVbmlxdWUoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCisgICAgICAgICAgICAgICAgICBuYWNr
X3NlbmRlciwKKyAgICAgICAgICAgICAgICAgIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKSB7fQog
CiBWQ01SZWNlaXZlcjo6VkNNUmVjZWl2ZXIoVkNNVGltaW5nKiB0aW1pbmcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ2xvY2sqIGNsb2NrLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcmVjZWl2ZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL3JlY2VpdmVyLmgKaW5kZXggNGY2NTkwZDI3NDgyMmYzOTJkYzJhZGVhYWNhMTA2
M2ZkMzZiOWM0MS4uNTAzY2FlN2M4ZGVlZGQ2N2U5YzRkZGIwYzIxYTU5NjYwYWRlMjZkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvcmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlci5oCkBAIC0zMCwx
NyArMzAsMTYgQEAgY2xhc3MgVkNNUmVjZWl2ZXIgewogIHB1YmxpYzoKICAgLy8gQ29uc3RydWN0
b3IgZm9yIGN1cnJlbnQgaW50ZXJmYWNlLCB3aWxsIGJlIHJlbW92ZWQgd2hlbiB0aGUKICAgLy8g
bmV3IGppdHRlciBidWZmZXIgaXMgaW4gcGxhY2UuCi0gIFZDTVJlY2VpdmVyKFZDTVRpbWluZyog
dGltaW5nLCBDbG9jayogY2xvY2ssIEV2ZW50RmFjdG9yeSogZXZlbnRfZmFjdG9yeSk7CisgIFZD
TVJlY2VpdmVyKFZDTVRpbWluZyogdGltaW5nLCBDbG9jayogY2xvY2spOwogCiAgIC8vIENyZWF0
ZSBtZXRob2QgZm9yIHRoZSBuZXcgaml0dGVyIGJ1ZmZlci4KICAgVkNNUmVjZWl2ZXIoVkNNVGlt
aW5nKiB0aW1pbmcsCiAgICAgICAgICAgICAgIENsb2NrKiBjbG9jaywKLSAgICAgICAgICAgICAg
RXZlbnRGYWN0b3J5KiBldmVudF9mYWN0b3J5LAogICAgICAgICAgICAgICBOYWNrU2VuZGVyKiBu
YWNrX3NlbmRlciwKICAgICAgICAgICAgICAgS2V5RnJhbWVSZXF1ZXN0U2VuZGVyKiBrZXlmcmFt
ZV9yZXF1ZXN0X3NlbmRlcik7CiAKLSAgLy8gVXNpbmcgdGhpcyBjb25zdHJ1Y3RvciwgeW91IGNh
biBzcGVjaWZ5IGEgZGlmZmVyZW50IGV2ZW50IGZhY3RvcnkgZm9yIHRoZQotICAvLyBqaXR0ZXIg
YnVmZmVyLiBVc2VmdWwgZm9yIHVuaXQgdGVzdHMgd2hlbiB5b3Ugd2FudCB0byBzaW11bGF0ZSBp
bmNvbWluZworICAvLyBVc2luZyB0aGlzIGNvbnN0cnVjdG9yLCB5b3UgY2FuIHNwZWNpZnkgYSBk
aWZmZXJlbnQgZXZlbnQgaW1wbGVtZXRhdGlvbiBmb3IKKyAgLy8gdGhlIGppdHRlciBidWZmZXIu
IFVzZWZ1bCBmb3IgdW5pdCB0ZXN0cyB3aGVuIHlvdSB3YW50IHRvIHNpbXVsYXRlIGluY29taW5n
CiAgIC8vIHBhY2tldHMsIGluIHdoaWNoIGNhc2UgdGhlIGppdHRlciBidWZmZXIncyB3YWl0IGV2
ZW50IGlzIGRpZmZlcmVudCBmcm9tCiAgIC8vIHRoYXQgb2YgVkNNUmVjZWl2ZXIgaXRzZWxmLgog
ICAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcmVjZWl2ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNl
aXZlcl91bml0dGVzdC5jYwppbmRleCAxZmY4NjYyOThlMmNjZGY0NjE2NjMxZmI5MTFkZDhhYzgw
NDlmZWZkLi5iYTM1ZjY5MzU4MmQ0ODFjM2NiYjEyMDRjZDNmZDQwNzkxM2E0ZWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9yZWNlaXZlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlcl91bml0
dGVzdC5jYwpAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L3BhY2tldC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3JlY2VpdmVyLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdGVzdC9zdHJlYW1fZ2VuZXJhdG9yLmgiCi0j
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdGVzdC90ZXN0X3V0aWwuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3ZpZGVvX2NvZGluZy90aW1pbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgpAQCAtMzEs
NyArMzAsNyBAQCBjbGFzcyBUZXN0VkNNUmVjZWl2ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKICAgVGVzdFZDTVJlY2VpdmVyKCkKICAgICAgIDogY2xvY2tfKG5ldyBTaW11bGF0ZWRDbG9j
aygwKSksCiAgICAgICAgIHRpbWluZ18oY2xvY2tfLmdldCgpKSwKLSAgICAgICAgcmVjZWl2ZXJf
KCZ0aW1pbmdfLCBjbG9ja18uZ2V0KCksICZldmVudF9mYWN0b3J5XykgeworICAgICAgICByZWNl
aXZlcl8oJnRpbWluZ18sIGNsb2NrXy5nZXQoKSkgewogICAgIHN0cmVhbV9nZW5lcmF0b3JfLnJl
c2V0KAogICAgICAgICBuZXcgU3RyZWFtR2VuZXJhdG9yKDAsIGNsb2NrXy0+VGltZUluTWlsbGlz
ZWNvbmRzKCkpKTsKICAgfQpAQCAtODEsNyArODAsNiBAQCBjbGFzcyBUZXN0VkNNUmVjZWl2ZXIg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8U2ltdWxhdGVk
Q2xvY2s+IGNsb2NrXzsKICAgVkNNVGltaW5nIHRpbWluZ187Ci0gIE51bGxFdmVudEZhY3Rvcnkg
ZXZlbnRfZmFjdG9yeV87CiAgIFZDTVJlY2VpdmVyIHJlY2VpdmVyXzsKICAgc3RkOjp1bmlxdWVf
cHRyPFN0cmVhbUdlbmVyYXRvcj4gc3RyZWFtX2dlbmVyYXRvcl87CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvdGVzdC90ZXN0X3V0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3Rlc3QvdGVzdF91dGlsLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzOGZjNThiMTI4NGJjNzgxYjFjNmY1Y2Q2NDJmN2Y2NmRj
M2FlNDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvdGVzdC90ZXN0X3V0aWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE1PRFVMRVNfVklERU9fQ09ESU5HX1RFU1RfVEVT
VF9VVElMX0hfCi0jZGVmaW5lIE1PRFVMRVNfVklERU9fQ09ESU5HX1RFU1RfVEVTVF9VVElMX0hf
Ci0KLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmgiCi0K
LWNsYXNzIE51bGxFdmVudEZhY3RvcnkgOiBwdWJsaWMgd2VicnRjOjpFdmVudEZhY3Rvcnkgewot
IHB1YmxpYzoKLSAgdmlydHVhbCB+TnVsbEV2ZW50RmFjdG9yeSgpIHt9Ci0KLSAgd2VicnRjOjpF
dmVudFdyYXBwZXIqIENyZWF0ZUV2ZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gbmV3IE51bGxFdmVu
dDsgfQotCi0gcHJpdmF0ZToKLSAgLy8gUHJpdmF0ZSBjbGFzcyB0byBhdm9pZCBtb3JlIGRlcGVu
ZGVuY2llcyBvbiBpdCBpbiB0ZXN0cy4KLSAgY2xhc3MgTnVsbEV2ZW50IDogcHVibGljIHdlYnJ0
Yzo6RXZlbnRXcmFwcGVyIHsKLSAgIHB1YmxpYzoKLSAgICB+TnVsbEV2ZW50KCkgb3ZlcnJpZGUg
e30KLSAgICBib29sIFNldCgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB3ZWJydGM6
OkV2ZW50VHlwZVdyYXBwZXIgV2FpdCh1bnNpZ25lZCBsb25nIG1heF90aW1lKSBvdmVycmlkZSB7
ICAvLyBOT0xJTlQKLSAgICAgIHJldHVybiB3ZWJydGM6OmtFdmVudFRpbWVvdXQ7Ci0gICAgfQot
ICB9OwotfTsKLQotI2VuZGlmICAvLyBNT0RVTEVTX1ZJREVPX0NPRElOR19URVNUX1RFU1RfVVRJ
TF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9pdmZfZmlsZV93cml0ZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L3V0aWxpdHkvaXZmX2ZpbGVfd3JpdGVyLmgKaW5kZXggN2Q5MTdlZDM1ZWU5YjEwZjk4N2VjZmM5
NGExY2VhODgwM2FhZmQzMi4uNDc3NWJlZGRhYzg1YTUxYjY5Mjk4YzViMTM1NTJlNzRhNTM5NWRl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9pdmZfZmlsZV93cml0ZXIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy91dGlsaXR5L2l2Zl9maWxlX3dyaXRlci5oCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIAotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNs
dWRlL3ZpZGVvX2ZyYW1lLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9maWxl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdlLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
dXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWIyM2UzZDkyZjNlNjA2M2VhY2RlZGZkODgwMmE5ZmZhODNkMWM3Mi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVy
YWdlLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
KGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
ICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVy
YWdlLmgiCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1N
b3ZpbmdBdmVyYWdlOjpNb3ZpbmdBdmVyYWdlKHNpemVfdCBzKSA6IHN1bV9oaXN0b3J5XyhzICsg
MSwgMCkge30KLU1vdmluZ0F2ZXJhZ2U6On5Nb3ZpbmdBdmVyYWdlKCkgPSBkZWZhdWx0OwotCi12
b2lkIE1vdmluZ0F2ZXJhZ2U6OkFkZFNhbXBsZShpbnQgc2FtcGxlKSB7Ci0gIGNvdW50XysrOwot
ICBzdW1fICs9IHNhbXBsZTsKLSAgc3VtX2hpc3RvcnlfW2NvdW50XyAlIHN1bV9oaXN0b3J5Xy5z
aXplKCldID0gc3VtXzsKLX0KLQotYWJzbDo6b3B0aW9uYWw8aW50PiBNb3ZpbmdBdmVyYWdlOjpH
ZXRBdmVyYWdlKCkgY29uc3QgewotICByZXR1cm4gR2V0QXZlcmFnZShzaXplKCkpOwotfQotCi1h
YnNsOjpvcHRpb25hbDxpbnQ+IE1vdmluZ0F2ZXJhZ2U6OkdldEF2ZXJhZ2Uoc2l6ZV90IG51bV9z
YW1wbGVzKSBjb25zdCB7Ci0gIGlmIChudW1fc2FtcGxlcyA+IHNpemUoKSB8fCBudW1fc2FtcGxl
cyA9PSAwKQotICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwotICBpbnQgc3VtID0gc3VtXyAtIHN1
bV9oaXN0b3J5X1soY291bnRfIC0gbnVtX3NhbXBsZXMpICUgc3VtX2hpc3RvcnlfLnNpemUoKV07
Ci0gIHJldHVybiBzdW0gLyBzdGF0aWNfY2FzdDxpbnQ+KG51bV9zYW1wbGVzKTsKLX0KLQotdm9p
ZCBNb3ZpbmdBdmVyYWdlOjpSZXNldCgpIHsKLSAgY291bnRfID0gMDsKLSAgc3VtXyA9IDA7Ci0g
IHN0ZDo6ZmlsbChzdW1faGlzdG9yeV8uYmVnaW4oKSwgc3VtX2hpc3RvcnlfLmVuZCgpLCAwKTsK
LX0KLQotc2l6ZV90IE1vdmluZ0F2ZXJhZ2U6OnNpemUoKSBjb25zdCB7Ci0gIHJldHVybiBzdGQ6
Om1pbihjb3VudF8sIHN1bV9oaXN0b3J5Xy5zaXplKCkgLSAxKTsKLX0KLQotfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3N2NlNjMzYjE4ZmNjMTZmNmYwMDFkNzE3ZDAxZDE2ZGQ1YWRiNzk2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvbW92aW5n
X2F2ZXJhZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IChjKSAyMDE1IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KLSAqLwotCi0jaWZuZGVmIE1PRFVMRVNfVklERU9fQ09ESU5HX1VUSUxJVFlfTU9WSU5HX0FW
RVJBR0VfSF8KLSNkZWZpbmUgTU9EVUxFU19WSURFT19DT0RJTkdfVVRJTElUWV9NT1ZJTkdfQVZF
UkFHRV9IXwotCi0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRp
b25hbC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIE1vdmluZ0F2ZXJhZ2UgewotIHB1
YmxpYzoKLSAgZXhwbGljaXQgTW92aW5nQXZlcmFnZShzaXplX3Qgcyk7Ci0gIH5Nb3ZpbmdBdmVy
YWdlKCk7Ci0gIHZvaWQgQWRkU2FtcGxlKGludCBzYW1wbGUpOwotICBhYnNsOjpvcHRpb25hbDxp
bnQ+IEdldEF2ZXJhZ2UoKSBjb25zdDsKLSAgYWJzbDo6b3B0aW9uYWw8aW50PiBHZXRBdmVyYWdl
KHNpemVfdCBudW1fc2FtcGxlcykgY29uc3Q7Ci0gIHZvaWQgUmVzZXQoKTsKLSAgc2l6ZV90IHNp
emUoKSBjb25zdDsKLQotIHByaXZhdGU6Ci0gIHNpemVfdCBjb3VudF8gPSAwOwotICBpbnQgc3Vt
XyA9IDA7Ci0gIHN0ZDo6dmVjdG9yPGludD4gc3VtX2hpc3RvcnlfOwotfTsKLX0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBNT0RVTEVTX1ZJREVPX0NPRElOR19VVElMSVRZX01P
VklOR19BVkVSQUdFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdl
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZV91bml0dGVzdC5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJmYzc3NWE4MjczMmRjZDE3NWJlNzYxZWI2
MjBkODVkZDYwZDZhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdlX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251
bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdlLmgiCi0KLSNpbmNsdWRl
ICJ0ZXN0L2d0ZXN0LmgiCi0KLVRFU1QoTW92aW5nQXZlcmFnZVRlc3QsIEVtcHR5QXZlcmFnZSkg
ewotICB3ZWJydGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMSk7Ci0gIEVYUEVDVF9F
USgwdSwgbW92aW5nX2F2ZXJhZ2Uuc2l6ZSgpKTsKLSAgRVhQRUNUX0ZBTFNFKG1vdmluZ19hdmVy
YWdlLkdldEF2ZXJhZ2UoMCkpOwotfQotCi0vLyBUZXN0IHNpbmdsZSB2YWx1ZS4KLVRFU1QoTW92
aW5nQXZlcmFnZVRlc3QsIE9uZUVsZW1lbnQpIHsKLSAgd2VicnRjOjpNb3ZpbmdBdmVyYWdlIG1v
dmluZ19hdmVyYWdlKDEpOwotICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoMyk7Ci0gIEVYUEVD
VF9FUSgxdSwgbW92aW5nX2F2ZXJhZ2Uuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDMsICptb3Zpbmdf
YXZlcmFnZS5HZXRBdmVyYWdlKCkpOwotICBFWFBFQ1RfRVEoMywgKm1vdmluZ19hdmVyYWdlLkdl
dEF2ZXJhZ2UoMSkpOwotICBFWFBFQ1RfRkFMU0UobW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZSgy
KSk7Ci19Ci0KLVRFU1QoTW92aW5nQXZlcmFnZVRlc3QsIEdldEF2ZXJhZ2UpIHsKLSAgd2VicnRj
OjpNb3ZpbmdBdmVyYWdlIG1vdmluZ19hdmVyYWdlKDEwMjQpOwotICBtb3ZpbmdfYXZlcmFnZS5B
ZGRTYW1wbGUoMSk7Ci0gIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgxKTsKLSAgbW92aW5nX2F2
ZXJhZ2UuQWRkU2FtcGxlKDMpOwotICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoMyk7Ci0gIEVY
UEVDVF9FUSgqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZSg0KSwgMik7Ci0gIEVYUEVDVF9FUSgq
bW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZSgyKSwgMyk7Ci0gIEVYUEVDVF9GQUxTRShtb3Zpbmdf
YXZlcmFnZS5HZXRBdmVyYWdlKDApKTsKLX0KLQotVEVTVChNb3ZpbmdBdmVyYWdlVGVzdCwgUmVz
ZXQpIHsKLSAgd2VicnRjOjpNb3ZpbmdBdmVyYWdlIG1vdmluZ19hdmVyYWdlKDUpOwotICBtb3Zp
bmdfYXZlcmFnZS5BZGRTYW1wbGUoMSk7Ci0gIEVYUEVDVF9FUSgxLCAqbW92aW5nX2F2ZXJhZ2Uu
R2V0QXZlcmFnZSgxKSk7Ci0gIG1vdmluZ19hdmVyYWdlLlJlc2V0KCk7Ci0gIEVYUEVDVF9GQUxT
RShtb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlKDEpKTsKLSAgRVhQRUNUX0ZBTFNFKG1vdmluZ19h
dmVyYWdlLkdldEF2ZXJhZ2UoNikpOwotfQotCi1URVNUKE1vdmluZ0F2ZXJhZ2VUZXN0LCBNYW55
U2FtcGxlcykgewotICB3ZWJydGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMTApOwot
ICBmb3IgKGludCBpID0gMTsgaSA8IDExOyBpKyspIHsKLSAgICBtb3ZpbmdfYXZlcmFnZS5BZGRT
YW1wbGUoaSk7Ci0gIH0KLSAgRVhQRUNUX0VRKCptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlKCks
IDUpOwotICBtb3ZpbmdfYXZlcmFnZS5SZXNldCgpOwotICBmb3IgKGludCBpID0gMTsgaSA8IDIw
MDE7IGkrKykgewotICAgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZShpKTsKLSAgfQotICBFWFBF
Q1RfRVEoKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2UoKSwgMTk5NSk7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy91dGlsaXR5L3F1YWxpdHlfc2NhbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5
X3NjYWxlci5jYwppbmRleCBlYTE5ZTQxOGM5ZDRlOTIxZmNlMGM5N2Q2ZDZhOTM0MzFmNmNlNzI1
Li4zMmFlMTY2YTljNjc3YTIxY2MzOTQ2ZjJhMjY1NzJmNTJkNWRiMzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy91dGlsaXR5L3F1YWxpdHlfc2NhbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0
eV9zY2FsZXIuY2MKQEAgLTE3Myw4ICsxNzMsOCBAQCB2b2lkIFF1YWxpdHlTY2FsZXI6OkNoZWNr
UXAoKSB7CiAgIC8vIElmIHdlIGhhdmUgbm90IG9ic2VydmVkIGF0IGxlYXN0IHRoaXMgbWFueSBm
cmFtZXMgd2UgY2FuJ3QgbWFrZSBhIGdvb2QKICAgLy8gc2NhbGluZyBkZWNpc2lvbi4KICAgY29u
c3Qgc2l6ZV90IGZyYW1lcyA9IGNvbmZpZ18udXNlX2FsbF9kcm9wX3JlYXNvbnMKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA/IGZyYW1lZHJvcF9wZXJjZW50X2FsbF8uc2l6ZSgpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBmcmFtZWRyb3BfcGVyY2VudF9tZWRpYV9vcHRfLnNp
emUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZyYW1lZHJvcF9wZXJjZW50X2Fs
bF8uU2l6ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmcmFtZWRyb3BfcGVyY2Vu
dF9tZWRpYV9vcHRfLlNpemUoKTsKICAgaWYgKGZyYW1lcyA8IGtNaW5GcmFtZXNOZWVkZWRUb1Nj
YWxlKSB7CiAgICAgb2JzZXJ2ZWRfZW5vdWdoX2ZyYW1lc18gPSBmYWxzZTsKICAgICByZXR1cm47
CkBAIC0xODMsOCArMTgzLDkgQEAgdm9pZCBRdWFsaXR5U2NhbGVyOjpDaGVja1FwKCkgewogCiAg
IC8vIENoZWNrIGlmIHdlIHNob3VsZCBzY2FsZSBkb3duIGR1ZSB0byBoaWdoIGZyYW1lIGRyb3Au
CiAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4gZHJvcF9yYXRlID0KLSAgICAgIGNvbmZpZ18u
dXNlX2FsbF9kcm9wX3JlYXNvbnMgPyBmcmFtZWRyb3BfcGVyY2VudF9hbGxfLkdldEF2ZXJhZ2Uo
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZyYW1lZHJvcF9wZXJjZW50
X21lZGlhX29wdF8uR2V0QXZlcmFnZSgpOworICAgICAgY29uZmlnXy51c2VfYWxsX2Ryb3BfcmVh
c29ucworICAgICAgICAgID8gZnJhbWVkcm9wX3BlcmNlbnRfYWxsXy5HZXRBdmVyYWdlUm91bmRl
ZERvd24oKQorICAgICAgICAgIDogZnJhbWVkcm9wX3BlcmNlbnRfbWVkaWFfb3B0Xy5HZXRBdmVy
YWdlUm91bmRlZERvd24oKTsKICAgaWYgKGRyb3BfcmF0ZSAmJiAqZHJvcF9yYXRlID49IGtGcmFt
ZWRyb3BQZXJjZW50VGhyZXNob2xkKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUmVwb3J0
aW5nIGhpZ2ggUVAsIGZyYW1lZHJvcCBwZXJjZW50ICIgPDwgKmRyb3BfcmF0ZTsKICAgICBSZXBv
cnRRcEhpZ2goKTsKQEAgLTE5MiwxMSArMTkzLDEyIEBAIHZvaWQgUXVhbGl0eVNjYWxlcjo6Q2hl
Y2tRcCgpIHsKICAgfQogCiAgIC8vIENoZWNrIGlmIHdlIHNob3VsZCBzY2FsZSB1cCBvciBkb3du
IGJhc2VkIG9uIFFQLgotICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+IGF2Z19xcF9oaWdoID0g
cXBfc21vb3RoZXJfaGlnaF8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA/IHFwX3Ntb290aGVyX2hpZ2hfLT5HZXRBdmcoKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYXZlcmFnZV9xcF8uR2V0QXZlcmFnZSgpOwor
ICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+IGF2Z19xcF9oaWdoID0KKyAgICAgIHFwX3Ntb290
aGVyX2hpZ2hfID8gcXBfc21vb3RoZXJfaGlnaF8tPkdldEF2ZygpCisgICAgICAgICAgICAgICAg
ICAgICAgICA6IGF2ZXJhZ2VfcXBfLkdldEF2ZXJhZ2VSb3VuZGVkRG93bigpOwogICBjb25zdCBh
YnNsOjpvcHRpb25hbDxpbnQ+IGF2Z19xcF9sb3cgPQotICAgICAgcXBfc21vb3RoZXJfbG93XyA/
IHFwX3Ntb290aGVyX2xvd18tPkdldEF2ZygpIDogYXZlcmFnZV9xcF8uR2V0QXZlcmFnZSgpOwor
ICAgICAgcXBfc21vb3RoZXJfbG93XyA/IHFwX3Ntb290aGVyX2xvd18tPkdldEF2ZygpCisgICAg
ICAgICAgICAgICAgICAgICAgIDogYXZlcmFnZV9xcF8uR2V0QXZlcmFnZVJvdW5kZWREb3duKCk7
CiAgIGlmIChhdmdfcXBfaGlnaCAmJiBhdmdfcXBfbG93KSB7CiAgICAgUlRDX0xPRyhMU19JTkZP
KSA8PCAiQ2hlY2tpbmcgYXZlcmFnZSBRUCAiIDw8ICphdmdfcXBfaGlnaCA8PCAiICgiCiAgICAg
ICAgICAgICAgICAgICAgICA8PCAqYXZnX3FwX2xvdyA8PCAiKS4iOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxl
ci5oCmluZGV4IDMwOTFlYmYzNmM0MmU5ZDk2NzI4ZTAwN2U3MTY2NDJiN2E3NzIzOWUuLjI3MmMw
MmU1M2E4MDM4MTUxMzQ5M2QxMjczOTU0NjkzMmZiNzE0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0
aWxpdHkvcXVhbGl0eV9zY2FsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3F1YWxpdHlfc2NhbGVy
LmgKQEAgLTE3LDggKzE3LDggQEAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiY29t
bW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKLSNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdlLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvZXhwZXJpbWVudHMvcXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnQuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Nl
cXVlbmNlZF90YXNrX2NoZWNrZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC03OSw5ICs3
OSwxMCBAQCBjbGFzcyBRdWFsaXR5U2NhbGVyIHsKICAgY29uc3QgVmlkZW9FbmNvZGVyOjpRcFRo
cmVzaG9sZHMgdGhyZXNob2xkc187CiAgIGNvbnN0IGludDY0X3Qgc2FtcGxpbmdfcGVyaW9kX21z
XzsKICAgYm9vbCBmYXN0X3JhbXB1cF8gUlRDX0dVQVJERURfQlkoJnRhc2tfY2hlY2tlcl8pOwot
ICBNb3ZpbmdBdmVyYWdlIGF2ZXJhZ2VfcXBfIFJUQ19HVUFSREVEX0JZKCZ0YXNrX2NoZWNrZXJf
KTsKLSAgTW92aW5nQXZlcmFnZSBmcmFtZWRyb3BfcGVyY2VudF9tZWRpYV9vcHRfIFJUQ19HVUFS
REVEX0JZKCZ0YXNrX2NoZWNrZXJfKTsKLSAgTW92aW5nQXZlcmFnZSBmcmFtZWRyb3BfcGVyY2Vu
dF9hbGxfIFJUQ19HVUFSREVEX0JZKCZ0YXNrX2NoZWNrZXJfKTsKKyAgcnRjOjpNb3ZpbmdBdmVy
YWdlIGF2ZXJhZ2VfcXBfIFJUQ19HVUFSREVEX0JZKCZ0YXNrX2NoZWNrZXJfKTsKKyAgcnRjOjpN
b3ZpbmdBdmVyYWdlIGZyYW1lZHJvcF9wZXJjZW50X21lZGlhX29wdF8KKyAgICAgIFJUQ19HVUFS
REVEX0JZKCZ0YXNrX2NoZWNrZXJfKTsKKyAgcnRjOjpNb3ZpbmdBdmVyYWdlIGZyYW1lZHJvcF9w
ZXJjZW50X2FsbF8gUlRDX0dVQVJERURfQlkoJnRhc2tfY2hlY2tlcl8pOwogCiAgIC8vIFVzZWQg
YnkgUXVhbGl0eVNjYWxpbmdFeHBlcmltZW50LgogICBjb25zdCBib29sIGV4cGVyaW1lbnRfZW5h
YmxlZF87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3F1YWxpdHlfc2NhbGVyX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxlcl91bml0dGVzdC5jYwppbmRleCBiMTcw
NjJkZjVjMTU4Y2E1YWZkYmJhMjJhMmE3OWRjZWUzNjZhMTdhLi5lZDc5Mzc5OTI5NzliMzBiNWJm
YjY4NDY2ZjI0MDI3ZjIzMDBjYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3F1YWxpdHlf
c2NhbGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0eV9zY2FsZXJfdW5p
dHRlc3QuY2MKQEAgLTI4LDE5ICsyOCwxOCBAQCBzdGF0aWMgY29uc3QgaW50IGtNaW5GcmFtZXNO
ZWVkZWRUb1NjYWxlID0gNjA7ICAvLyBGcm9tIHF1YWxpdHlfc2NhbGVyLmNjLgogc3RhdGljIGNv
bnN0IHNpemVfdCBrRGVmYXVsdFRpbWVvdXRNcyA9IDE1MDsKIH0gIC8vIG5hbWVzcGFjZQogCi0j
ZGVmaW5lIERPX1NZTkMocSwgYmxvY2spICAgICAgICAgICBcCi0gIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgcnRjOjpFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOyBc
Ci0gICAgcS0+UG9zdFRhc2soW3RoaXMsICZldmVudF0geyAgICBcCi0gICAgICBibG9jazsgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBldmVudC5TZXQoKTsgICAgICAgICAgICAgICAg
ICBcCi0gICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgUlRDX0NIRUNL
KGV2ZW50LldhaXQoMTAwMCkpOyAgICBcCisjZGVmaW5lIERPX1NZTkMocSwgYmxvY2spICAgICAg
ICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcnRjOjpFdmVudCBl
dmVudDsgICAgICAgICAgICBcCisgICAgcS0+UG9zdFRhc2soW3RoaXMsICZldmVudF0geyBcCisg
ICAgICBibG9jazsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBldmVudC5TZXQoKTsgICAg
ICAgICAgICAgICBcCisgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUlRD
X0NIRUNLKGV2ZW50LldhaXQoMTAwMCkpOyBcCiAgIH0gd2hpbGUgKDApCiAKIGNsYXNzIE1vY2tB
ZGFwdGF0aW9uT2JzZXJ2ZXIgOiBwdWJsaWMgQWRhcHRhdGlvbk9ic2VydmVySW50ZXJmYWNlIHsK
ICBwdWJsaWM6Ci0gIE1vY2tBZGFwdGF0aW9uT2JzZXJ2ZXIoKSA6IGV2ZW50KGZhbHNlLCBmYWxz
ZSkge30KICAgdmlydHVhbCB+TW9ja0FkYXB0YXRpb25PYnNlcnZlcigpIHt9CiAKICAgdm9pZCBB
ZGFwdFVwKEFkYXB0UmVhc29uIHIpIG92ZXJyaWRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxp
dHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9z
aW11bGNhc3RfcmF0ZV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKaW5kZXggN2Y1NDkzMmE4MTNkZGI1
MTQxYzhkM2IxNGY4ZDEzNjI3NmFkMzBlNi4uYmJlM2YxOWZiNzMyMGQ5ZTY0MWU1Mjg2ZmUzNTgx
NzI0OWY5ZjVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxv
Y2F0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxv
Y2F0b3JfdW5pdHRlc3QuY2MKQEAgLTE1LDggKzE1LDcgQEAKICNpbmNsdWRlIDx1dGlsaXR5Pgog
I2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCi0KKyNpbmNsdWRlICJhcGkvdmlk
ZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3Ry
aWFsLmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIK
QEAgLTM0LDkgKzMzLDkgQEAgY29uc3RleHByIHVpbnQzMl90IGtMZWdhY3lTY3JlZW5zaGFyZU1h
eEJpdHJhdGVLYnBzID0gMTAwMDsKIGNvbnN0ZXhwciB1aW50MzJfdCBrU2ltdWxjYXN0U2NyZWVu
c2hhcmVNaW5CaXRyYXRlS2JwcyA9IDYwMDsKIGNvbnN0ZXhwciB1aW50MzJfdCBrU2ltdWxjYXN0
U2NyZWVuc2hhcmVNYXhCaXRyYXRlS2JwcyA9IDEyNTA7CiAKLWNsYXNzIE1vY2tUZW1wb3JhbExh
eWVycyA6IHB1YmxpYyBUZW1wb3JhbExheWVycyB7CitjbGFzcyBNb2NrVGVtcG9yYWxMYXllcnMg
OiBwdWJsaWMgVnA4VGVtcG9yYWxMYXllcnMgewogIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKFVw
ZGF0ZUxheWVyQ29uZmlnLCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcodWludDMyX3QpKTsK
KyAgTU9DS19NRVRIT0QxKFVwZGF0ZUxheWVyQ29uZmlnLCBWcDhUZW1wb3JhbExheWVyczo6RnJh
bWVDb25maWcodWludDMyX3QpKTsKICAgTU9DS19NRVRIT0QyKE9uUmF0ZXNVcGRhdGVkLCB2b2lk
KGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiYsIGludCkpOwogICBNT0NLX01FVEhPRDEoVXBk
YXRlQ29uZmlndXJhdGlvbiwgYm9vbChWcDhFbmNvZGVyQ29uZmlnKikpOwogICBNT0NLX01FVEhP
RDUoT25FbmNvZGVEb25lLApAQCAtNDQsNyArNDMsNyBAQCBjbGFzcyBNb2NrVGVtcG9yYWxMYXll
cnMgOiBwdWJsaWMgVGVtcG9yYWxMYXllcnMgewogICBNT0NLX01FVEhPRDMoRnJhbWVFbmNvZGVk
LCB2b2lkKHVpbnQzMl90LCBzaXplX3QsIGludCkpOwogICBNT0NLX0NPTlNUX01FVEhPRDAoVGww
UGljSWR4LCB1aW50OF90KCkpOwogICBNT0NLX0NPTlNUX01FVEhPRDEoR2V0VGVtcG9yYWxMYXll
cklkLAotICAgICAgICAgICAgICAgICAgICAgaW50KGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFt
ZUNvbmZpZyYpKTsKKyAgICAgICAgICAgICAgICAgICAgIGludChjb25zdCBWcDhUZW1wb3JhbExh
eWVyczo6RnJhbWVDb25maWcmKSk7CiB9OwogfSAgLy8gbmFtZXNwYWNlCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9pbXBsLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRp
bGl0eS9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2ltcGwuY2MKaW5kZXggNGFmNTI2YzY2MzE5Y2Q3
NzJkY2U4MWM1YTBjOTliZjA3NTNhNDQwYy4uOTkyNzczZWNjNjA5ZWVmZDg5ODYxMDc4NmYyNTIy
ZDA2ZGJjMmY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdGVzdF9maXh0
dXJlX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2lt
cGwuY2MKQEAgLTE1LDkgKzE1LDEwIEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZl
Y3Rvcj4KIAorI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCiAjaW5jbHVkZSAi
YXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCi0jaW5jbHVkZSAiY29tbW9uX3Zp
ZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vbGlieXV2
L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RpbmdfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKQEAgLTgxOSw1ICs4MjAsNjcg
QEAgdm9pZCBTaW11bGNhc3RUZXN0Rml4dHVyZUltcGw6OlRlc3RTdHJpZGVFbmNvZGVEZWNvZGUo
KSB7CiAgIEVYUEVDVF9FUSgyLCBkZWNvZGVyX2NhbGxiYWNrLkRlY29kZWRGcmFtZXMoKSk7CiB9
CiAKK3ZvaWQgU2ltdWxjYXN0VGVzdEZpeHR1cmVJbXBsOjpUZXN0RGVjb2RlV2lkdGhIZWlnaHRT
ZXQoKSB7CisgIE1vY2tFbmNvZGVkSW1hZ2VDYWxsYmFjayBlbmNvZGVyX2NhbGxiYWNrOworICBN
b2NrRGVjb2RlZEltYWdlQ2FsbGJhY2sgZGVjb2Rlcl9jYWxsYmFjazsKKworICBFbmNvZGVkSW1h
Z2UgZW5jb2RlZF9mcmFtZVszXTsKKyAgU2V0UmF0ZXMoa01heEJpdHJhdGVzWzJdLCAzMCk7ICAv
LyBUbyBnZXQgYWxsIHRocmVlIHN0cmVhbXMuCisgIGVuY29kZXJfLT5SZWdpc3RlckVuY29kZUNv
bXBsZXRlQ2FsbGJhY2soJmVuY29kZXJfY2FsbGJhY2spOworICBkZWNvZGVyXy0+UmVnaXN0ZXJE
ZWNvZGVDb21wbGV0ZUNhbGxiYWNrKCZkZWNvZGVyX2NhbGxiYWNrKTsKKworICBFWFBFQ1RfQ0FM
TChlbmNvZGVyX2NhbGxiYWNrLCBPbkVuY29kZWRJbWFnZShfLCBfLCBfKSkKKyAgICAgIC5UaW1l
cygzKQorICAgICAgLldpbGxSZXBlYXRlZGx5KAorICAgICAgICAgIHRlc3Rpbmc6Okludm9rZShb
Jl0oY29uc3QgRW5jb2RlZEltYWdlJiBlbmNvZGVkX2ltYWdlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSVFBGcmFnbWVudGF0aW9uSGVh
ZGVyKiBmcmFnbWVudGF0aW9uKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZW5jb2RlZF9pbWFn
ZS5fZnJhbWVUeXBlLCBrVmlkZW9GcmFtZUtleSk7CisKKyAgICAgICAgICAgIHNpemVfdCBpbmRl
eCA9IGVuY29kZWRfaW1hZ2UuU3BhdGlhbEluZGV4KCkudmFsdWVfb3IoMCk7CisgICAgICAgICAg
ICBlbmNvZGVkX2ZyYW1lW2luZGV4XS5fYnVmZmVyID0gbmV3IHVpbnQ4X3RbZW5jb2RlZF9pbWFn
ZS5fc2l6ZV07CisgICAgICAgICAgICBlbmNvZGVkX2ZyYW1lW2luZGV4XS5fc2l6ZSA9IGVuY29k
ZWRfaW1hZ2UuX3NpemU7CisgICAgICAgICAgICBlbmNvZGVkX2ZyYW1lW2luZGV4XS5fbGVuZ3Ro
ID0gZW5jb2RlZF9pbWFnZS5fbGVuZ3RoOworICAgICAgICAgICAgZW5jb2RlZF9mcmFtZVtpbmRl
eF0uX2ZyYW1lVHlwZSA9IGVuY29kZWRfaW1hZ2UuX2ZyYW1lVHlwZTsKKyAgICAgICAgICAgIGVu
Y29kZWRfZnJhbWVbaW5kZXhdLl9jb21wbGV0ZUZyYW1lID0gZW5jb2RlZF9pbWFnZS5fY29tcGxl
dGVGcmFtZTsKKyAgICAgICAgICAgIG1lbWNweShlbmNvZGVkX2ZyYW1lW2luZGV4XS5fYnVmZmVy
LCBlbmNvZGVkX2ltYWdlLl9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgZW5jb2RlZF9pbWFn
ZS5fbGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6UmVz
dWx0KAorICAgICAgICAgICAgICAgIEVuY29kZWRJbWFnZUNhbGxiYWNrOjpSZXN1bHQ6Ok9LLCAw
KTsKKyAgICAgICAgICB9KSk7CisgIEVYUEVDVF9FUSgwLCBlbmNvZGVyXy0+RW5jb2RlKCppbnB1
dF9mcmFtZV8sIE5VTEwsIE5VTEwpKTsKKworICBFWFBFQ1RfQ0FMTChkZWNvZGVyX2NhbGxiYWNr
LCBEZWNvZGVkKF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6Okludm9rZShbXShW
aWRlb0ZyYW1lJiBkZWNvZGVkSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFic2w6Om9wdGlvbmFsPGludDMyX3Q+IGRlY29kZV90aW1lX21zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBxcCkgeworICAg
ICAgICBFWFBFQ1RfRVEoZGVjb2RlZEltYWdlLndpZHRoKCksIGtEZWZhdWx0V2lkdGggLyA0KTsK
KyAgICAgICAgRVhQRUNUX0VRKGRlY29kZWRJbWFnZS5oZWlnaHQoKSwga0RlZmF1bHRIZWlnaHQg
LyA0KTsKKyAgICAgIH0pKTsKKyAgRVhQRUNUX0VRKDAsIGRlY29kZXJfLT5EZWNvZGUoZW5jb2Rl
ZF9mcmFtZVswXSwgZmFsc2UsIE5VTEwsIDApKTsKKworICBFWFBFQ1RfQ0FMTChkZWNvZGVyX2Nh
bGxiYWNrLCBEZWNvZGVkKF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6Okludm9r
ZShbXShWaWRlb0ZyYW1lJiBkZWNvZGVkSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGludDMyX3Q+IGRlY29kZV90aW1lX21zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBxcCkg
eworICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZEltYWdlLndpZHRoKCksIGtEZWZhdWx0V2lkdGgg
LyAyKTsKKyAgICAgICAgRVhQRUNUX0VRKGRlY29kZWRJbWFnZS5oZWlnaHQoKSwga0RlZmF1bHRI
ZWlnaHQgLyAyKTsKKyAgICAgIH0pKTsKKyAgRVhQRUNUX0VRKDAsIGRlY29kZXJfLT5EZWNvZGUo
ZW5jb2RlZF9mcmFtZVsxXSwgZmFsc2UsIE5VTEwsIDApKTsKKworICBFWFBFQ1RfQ0FMTChkZWNv
ZGVyX2NhbGxiYWNrLCBEZWNvZGVkKF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6
Okludm9rZShbXShWaWRlb0ZyYW1lJiBkZWNvZGVkSW1hZ2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGludDMyX3Q+IGRlY29kZV90aW1lX21zLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50OF90
PiBxcCkgeworICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZEltYWdlLndpZHRoKCksIGtEZWZhdWx0
V2lkdGgpOworICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZEltYWdlLmhlaWdodCgpLCBrRGVmYXVs
dEhlaWdodCk7CisgICAgICB9KSk7CisgIEVYUEVDVF9FUSgwLCBkZWNvZGVyXy0+RGVjb2RlKGVu
Y29kZWRfZnJhbWVbMl0sIGZhbHNlLCBOVUxMLCAwKSk7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCAzOyArK2kpIHsKKyAgICBkZWxldGUgW10gZW5jb2RlZF9mcmFtZVtpXS5fYnVmZmVyOworICB9
Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmVfaW1wbC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvdXRpbGl0eS9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2ltcGwuaAppbmRleCA2NjM0YTY5YWQx
Y2E1NDM0MDJmN2UzZmVmMDk0MTFiN2NlMjZlODAwLi4yZjgzNGJkZmI1NWZjMjQzOWIyODg4ZmEy
OWEyMWUyNmQ5ODk4YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF90ZXN0
X2ZpeHR1cmVfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4dHVy
ZV9pbXBsLmgKQEAgLTE0LDYgKzE0LDggQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192aWRlb19kZWNvZGVyLmgiCisjaW5j
bHVkZSAiYXBpL3Rlc3QvbW9ja192aWRlb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL3Rlc3Qv
c2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZl
ci5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgpAQCAtMjEsNyArMjMsNiBA
QAogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAj
aW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9jYXRv
ci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvbW9jay9tb2NrX3Zp
ZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0
ZXN0IHsKQEAgLTUwLDYgKzUxLDcgQEAgY2xhc3MgU2ltdWxjYXN0VGVzdEZpeHR1cmVJbXBsIGZp
bmFsIDogcHVibGljIFNpbXVsY2FzdFRlc3RGaXh0dXJlIHsKICAgdm9pZCBUZXN0U3BhdGlvVGVt
cG9yYWxMYXllcnMzMzNQYXR0ZXJuRW5jb2RlcigpIG92ZXJyaWRlOwogICB2b2lkIFRlc3RTcGF0
aW9UZW1wb3JhbExheWVyczMyMVBhdHRlcm5FbmNvZGVyKCkgb3ZlcnJpZGU7CiAgIHZvaWQgVGVz
dFN0cmlkZUVuY29kZURlY29kZSgpIG92ZXJyaWRlOworICB2b2lkIFRlc3REZWNvZGVXaWR0aEhl
aWdodFNldCgpIG92ZXJyaWRlOwogCiAgIHN0YXRpYyB2b2lkIERlZmF1bHRTZXR0aW5ncyhWaWRl
b0NvZGVjKiBzZXR0aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu
dCogdGVtcG9yYWxfbGF5ZXJfcHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVj
X2luaXRpYWxpemVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIuY2MKaW5kZXgg
ZTcxMjVjZTI3ODIzMTNmOGZiYzI2MDZiOTZkYmU0NmFiM2VjNGU1Yy4uODZhNWFiMmE0ODIwOTk0
ZmQ3NDAyODc0ZTlmMzRmMmJiZTJlZjM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kZWNf
aW5pdGlhbGl6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIuY2MKQEAg
LTI0LDE1ICsyNCwxMyBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotYm9vbCBWaWRlb0NvZGVj
SW5pdGlhbGl6ZXI6OlNldHVwQ29kZWMoCi0gICAgY29uc3QgVmlkZW9FbmNvZGVyQ29uZmlnJiBj
b25maWcsCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+JiBzdHJlYW1zLAotICAg
IFZpZGVvQ29kZWMqIGNvZGVjLAotICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxv
Y2F0b3I+KiBiaXRyYXRlX2FsbG9jYXRvcikgeworYm9vbCBWaWRlb0NvZGVjSW5pdGlhbGl6ZXI6
OlNldHVwQ29kZWMoY29uc3QgVmlkZW9FbmNvZGVyQ29uZmlnJiBjb25maWcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVh
bT4mIHN0cmVhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRl
b0NvZGVjKiBjb2RlYykgewogICBpZiAoY29uZmlnLmNvZGVjX3R5cGUgPT0ga1ZpZGVvQ29kZWNN
dWx0aXBsZXgpIHsKICAgICBWaWRlb0VuY29kZXJDb25maWcgYXNzb2NpYXRlZF9jb25maWcgPSBj
b25maWcuQ29weSgpOwogICAgIGFzc29jaWF0ZWRfY29uZmlnLmNvZGVjX3R5cGUgPSBrVmlkZW9D
b2RlY1ZQOTsKLSAgICBpZiAoIVNldHVwQ29kZWMoYXNzb2NpYXRlZF9jb25maWcsIHN0cmVhbXMs
IGNvZGVjLCBiaXRyYXRlX2FsbG9jYXRvcikpIHsKKyAgICBpZiAoIVNldHVwQ29kZWMoYXNzb2Np
YXRlZF9jb25maWcsIHN0cmVhbXMsIGNvZGVjKSkgewogICAgICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIkZhaWxlZCB0byBjcmVhdGUgc3RlcmVvIGVuY29kZXIgY29uZmlndXJhdGlvbi4iOwogICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQxLDMxICszOSw5IEBAIGJvb2wgVmlkZW9Db2Rl
Y0luaXRpYWxpemVyOjpTZXR1cENvZGVjKAogICB9CiAKICAgKmNvZGVjID0gVmlkZW9FbmNvZGVy
Q29uZmlnVG9WaWRlb0NvZGVjKGNvbmZpZywgc3RyZWFtcyk7Ci0gICpiaXRyYXRlX2FsbG9jYXRv
ciA9IENyZWF0ZUJpdHJhdGVBbGxvY2F0b3IoKmNvZGVjKTsKLQogICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvcj4KLVZpZGVvQ29kZWNJbml0
aWFsaXplcjo6Q3JlYXRlQml0cmF0ZUFsbG9jYXRvcihjb25zdCBWaWRlb0NvZGVjJiBjb2RlYykg
ewotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiByYXRlX2FsbG9jYXRv
cjsKLQotICBzd2l0Y2ggKGNvZGVjLmNvZGVjVHlwZSkgewotICAgIGNhc2Uga1ZpZGVvQ29kZWNW
UDg6Ci0gICAgICBSVENfRkFMTFRIUk9VR0goKTsKLSAgICBjYXNlIGtWaWRlb0NvZGVjSDI2NDoK
LSAgICAgIHJhdGVfYWxsb2NhdG9yLnJlc2V0KG5ldyBTaW11bGNhc3RSYXRlQWxsb2NhdG9yKGNv
ZGVjKSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGtWaWRlb0NvZGVjVlA5OgotICAgICAgcmF0
ZV9hbGxvY2F0b3IucmVzZXQobmV3IFN2Y1JhdGVBbGxvY2F0b3IoY29kZWMpKTsKLSAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICByYXRlX2FsbG9jYXRvci5yZXNldChuZXcgRGVmYXVs
dFZpZGVvQml0cmF0ZUFsbG9jYXRvcihjb2RlYykpOwotICB9Ci0KLSAgcmV0dXJuIHJhdGVfYWxs
b2NhdG9yOwotfQotCiAvLyBUT0RPKHNwcmFuZyk6IFNwbGl0IHRoaXMgdXAgYW5kIHNlcGFyYXRl
IHRoZSBjb2RlYyBzcGVjaWZpYyBwYXJ0cy4KIFZpZGVvQ29kZWMgVmlkZW9Db2RlY0luaXRpYWxp
emVyOjpWaWRlb0VuY29kZXJDb25maWdUb1ZpZGVvQ29kZWMoCiAgICAgY29uc3QgVmlkZW9FbmNv
ZGVyQ29uZmlnJiBjb25maWcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19pbml0aWFs
aXplcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVjX2luaXRpYWxpemVyX3VuaXR0ZXN0
LmNjCmluZGV4IGZiNjAxZjBkNDI5OWVjOTUyYzJmNDY1NzYwNmJiZDYxOGY1YmRlMjMuLmNlZmYx
ZWJhZjc0MjdiZjkyOGZlN2U2YWRiZTAzYzUzMGExODdjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3Zp
ZGVvX2NvZGVjX2luaXRpYWxpemVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVj
X2luaXRpYWxpemVyX3VuaXR0ZXN0LmNjCkBAIC05LDExICs5LDEzIEBACiAgKi8KIAogI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIu
aCIKLSNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IuaCIKKyNpbmNs
dWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Lmgi
CisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5o
IgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgorI2luY2x1ZGUg
ImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L2luY2x1ZGUvdnA5X2dsb2Jh
bHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9y
ZWZjb3VudGVkb2JqZWN0LmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCkBAIC03NCwyMSAr
NzYsMjIgQEAgY2xhc3MgVmlkZW9Db2RlY0luaXRpYWxpemVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewogCiAgIGJvb2wgSW5pdGlhbGl6ZUNvZGVjKCkgewogICAgIGNvZGVjX291dF8g
PSBWaWRlb0NvZGVjKCk7Ci0gICAgYml0cmF0ZV9hbGxvY2F0b3Jfb3V0Xy5yZXNldCgpOwogICAg
IHRlbXBvcmFsX2xheWVyc18uY2xlYXIoKTsKLSAgICBpZiAoIVZpZGVvQ29kZWNJbml0aWFsaXpl
cjo6U2V0dXBDb2RlYyhjb25maWdfLCBzdHJlYW1zXywgJmNvZGVjX291dF8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJpdHJhdGVfYWxsb2NhdG9yX291dF8p
KSB7CisgICAgaWYgKCFWaWRlb0NvZGVjSW5pdGlhbGl6ZXI6OlNldHVwQ29kZWMoY29uZmlnXywg
c3RyZWFtc18sICZjb2RlY19vdXRfKSkgewogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAg
ICBiaXRyYXRlX2FsbG9jYXRvcl8gPSBDcmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9y
RmFjdG9yeSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Q3JlYXRlVmlkZW9CaXRy
YXRlQWxsb2NhdG9yKGNvZGVjX291dF8pOworICAgIFJUQ19DSEVDSyhiaXRyYXRlX2FsbG9jYXRv
cl8pOwogICAgIGlmIChjb2RlY19vdXRfLmNvZGVjVHlwZSA9PSBWaWRlb0NvZGVjVHlwZTo6a1Zp
ZGVvQ29kZWNNdWx0aXBsZXgpCiAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE1ha2Ugc3Vy
ZSB0ZW1wb3JhbCBsYXllcnMgaW5zdGFuY2VzIGhhdmUgYmVlbiBjcmVhdGVkLgogICAgIGlmIChj
b2RlY19vdXRfLmNvZGVjVHlwZSA9PSBWaWRlb0NvZGVjVHlwZTo6a1ZpZGVvQ29kZWNWUDgpIHsK
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29kZWNfb3V0Xy5udW1iZXJPZlNpbXVsY2FzdFN0
cmVhbXM7ICsraSkgewotICAgICAgICB0ZW1wb3JhbF9sYXllcnNfLmVtcGxhY2VfYmFjayhUZW1w
b3JhbExheWVyczo6Q3JlYXRlVGVtcG9yYWxMYXllcnMoCi0gICAgICAgICAgICBUZW1wb3JhbExh
eWVyc1R5cGU6OmtGaXhlZFBhdHRlcm4sCi0gICAgICAgICAgICBjb2RlY19vdXRfLlZQOCgpLT5u
dW1iZXJPZlRlbXBvcmFsTGF5ZXJzKSk7CisgICAgICAgIHRlbXBvcmFsX2xheWVyc18uZW1wbGFj
ZV9iYWNrKAorICAgICAgICAgICAgQ3JlYXRlVnA4VGVtcG9yYWxMYXllcnMoVnA4VGVtcG9yYWxM
YXllcnNUeXBlOjprRml4ZWRQYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29kZWNfb3V0Xy5WUDgoKS0+bnVtYmVyT2ZUZW1wb3JhbExheWVycykpOwogICAgICAg
fQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyNSw4ICsxMjgsOCBAQCBjbGFzcyBWaWRl
b0NvZGVjSW5pdGlhbGl6ZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAKICAgLy8g
T3V0cHV0LgogICBWaWRlb0NvZGVjIGNvZGVjX291dF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b0JpdHJhdGVBbGxvY2F0b3I+IGJpdHJhdGVfYWxsb2NhdG9yX291dF87Ci0gIHN0ZDo6dmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxUZW1wb3JhbExheWVycz4+IHRlbXBvcmFsX2xheWVyc187CisgIHN0
ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+IGJpdHJhdGVfYWxsb2NhdG9yXzsK
KyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZwOFRlbXBvcmFsTGF5ZXJzPj4gdGVtcG9y
YWxfbGF5ZXJzXzsKIH07CiAKIFRFU1RfRihWaWRlb0NvZGVjSW5pdGlhbGl6ZXJUZXN0LCBTaW5n
bGVTdHJlYW1WcDhTY3JlZW5zaGFyZSkgewpAQCAtMTM0LDkgKzEzNyw4IEBAIFRFU1RfRihWaWRl
b0NvZGVjSW5pdGlhbGl6ZXJUZXN0LCBTaW5nbGVTdHJlYW1WcDhTY3JlZW5zaGFyZSkgewogICBz
dHJlYW1zXy5wdXNoX2JhY2soRGVmYXVsdFN0cmVhbSgpKTsKICAgRVhQRUNUX1RSVUUoSW5pdGlh
bGl6ZUNvZGVjKCkpOwogCi0gIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxvY2F0
aW9uID0KLSAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX291dF8tPkdldEFsbG9jYXRpb24oa0RlZmF1
bHRUYXJnZXRCaXRyYXRlQnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrRGVmYXVsdEZyYW1lUmF0ZSk7CisgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0
cmF0ZV9hbGxvY2F0aW9uID0gYml0cmF0ZV9hbGxvY2F0b3JfLT5HZXRBbGxvY2F0aW9uKAorICAg
ICAga0RlZmF1bHRUYXJnZXRCaXRyYXRlQnBzLCBrRGVmYXVsdEZyYW1lUmF0ZSk7CiAgIEVYUEVD
VF9FUSgxdSwgY29kZWNfb3V0Xy5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMpOwogICBFWFBFQ1Rf
RVEoMXUsIGNvZGVjX291dF8uVlA4KCktPm51bWJlck9mVGVtcG9yYWxMYXllcnMpOwogICBFWFBF
Q1RfRVEoa0RlZmF1bHRUYXJnZXRCaXRyYXRlQnBzLCBiaXRyYXRlX2FsbG9jYXRpb24uZ2V0X3N1
bV9icHMoKSk7CkBAIC0xNDksOSArMTUxLDggQEAgVEVTVF9GKFZpZGVvQ29kZWNJbml0aWFsaXpl
clRlc3QsIFNpbmdsZVN0cmVhbVZwOFNjcmVlbnNoYXJlSW5hY3RpdmUpIHsKICAgc3RyZWFtc18u
cHVzaF9iYWNrKGluYWN0aXZlX3N0cmVhbSk7CiAgIEVYUEVDVF9UUlVFKEluaXRpYWxpemVDb2Rl
YygpKTsKIAotICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbiA9Ci0g
ICAgICBiaXRyYXRlX2FsbG9jYXRvcl9vdXRfLT5HZXRBbGxvY2F0aW9uKGtEZWZhdWx0VGFyZ2V0
Qml0cmF0ZUJwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a0RlZmF1bHRGcmFtZVJhdGUpOworICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxs
b2NhdGlvbiA9IGJpdHJhdGVfYWxsb2NhdG9yXy0+R2V0QWxsb2NhdGlvbigKKyAgICAgIGtEZWZh
dWx0VGFyZ2V0Qml0cmF0ZUJwcywga0RlZmF1bHRGcmFtZVJhdGUpOwogICBFWFBFQ1RfRVEoMXUs
IGNvZGVjX291dF8ubnVtYmVyT2ZTaW11bGNhc3RTdHJlYW1zKTsKICAgRVhQRUNUX0VRKDF1LCBj
b2RlY19vdXRfLlZQOCgpLT5udW1iZXJPZlRlbXBvcmFsTGF5ZXJzKTsKICAgRVhQRUNUX0VRKDBV
LCBiaXRyYXRlX2FsbG9jYXRpb24uZ2V0X3N1bV9icHMoKSk7CkBAIC0xNjQsOSArMTY1LDggQEAg
VEVTVF9GKFZpZGVvQ29kZWNJbml0aWFsaXplclRlc3QsIFRlbXBvcmFsTGF5ZXJlZFZwOFNjcmVl
bnNoYXJlKSB7CiAKICAgRVhQRUNUX0VRKDF1LCBjb2RlY19vdXRfLm51bWJlck9mU2ltdWxjYXN0
U3RyZWFtcyk7CiAgIEVYUEVDVF9FUSgydSwgY29kZWNfb3V0Xy5WUDgoKS0+bnVtYmVyT2ZUZW1w
b3JhbExheWVycyk7Ci0gIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxvY2F0aW9u
ID0KLSAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX291dF8tPkdldEFsbG9jYXRpb24oa1NjcmVlbnNo
YXJlQ29kZWNUYXJnZXRCaXRyYXRlQnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrU2NyZWVuc2hhcmVEZWZhdWx0RnJhbWVyYXRlKTsKKyAgVmlkZW9CaXRy
YXRlQWxsb2NhdGlvbiBiaXRyYXRlX2FsbG9jYXRpb24gPSBiaXRyYXRlX2FsbG9jYXRvcl8tPkdl
dEFsbG9jYXRpb24oCisgICAgICBrU2NyZWVuc2hhcmVDb2RlY1RhcmdldEJpdHJhdGVCcHMsIGtT
Y3JlZW5zaGFyZURlZmF1bHRGcmFtZXJhdGUpOwogICBFWFBFQ1RfRVEoa1NjcmVlbnNoYXJlQ29k
ZWNUYXJnZXRCaXRyYXRlQnBzLAogICAgICAgICAgICAgYml0cmF0ZV9hbGxvY2F0aW9uLmdldF9z
dW1fYnBzKCkpOwogICBFWFBFQ1RfRVEoa1NjcmVlbnNoYXJlVGwwQml0cmF0ZUJwcywgYml0cmF0
ZV9hbGxvY2F0aW9uLkdldEJpdHJhdGUoMCwgMCkpOwpAQCAtMTg0LDkgKzE4NCw4IEBAIFRFU1Rf
RihWaWRlb0NvZGVjSW5pdGlhbGl6ZXJUZXN0LCBTaW11bGNhc3RWcDhTY3JlZW5zaGFyZSkgewog
ICBFWFBFQ1RfRVEoMXUsIGNvZGVjX291dF8uVlA4KCktPm51bWJlck9mVGVtcG9yYWxMYXllcnMp
OwogICBjb25zdCB1aW50MzJfdCBtYXhfYml0cmF0ZV9icHMgPQogICAgICAgc3RyZWFtc19bMF0u
dGFyZ2V0X2JpdHJhdGVfYnBzICsgc3RyZWFtc19bMV0ubWF4X2JpdHJhdGVfYnBzOwotICBWaWRl
b0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbiA9Ci0gICAgICBiaXRyYXRlX2Fs
bG9jYXRvcl9vdXRfLT5HZXRBbGxvY2F0aW9uKG1heF9iaXRyYXRlX2JwcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1NjcmVlbnNoYXJlRGVmYXVsdEZyYW1l
cmF0ZSk7CisgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxvY2F0aW9uID0gYml0
cmF0ZV9hbGxvY2F0b3JfLT5HZXRBbGxvY2F0aW9uKAorICAgICAgbWF4X2JpdHJhdGVfYnBzLCBr
U2NyZWVuc2hhcmVEZWZhdWx0RnJhbWVyYXRlKTsKICAgRVhQRUNUX0VRKG1heF9iaXRyYXRlX2Jw
cywgYml0cmF0ZV9hbGxvY2F0aW9uLmdldF9zdW1fYnBzKCkpOwogICBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHN0cmVhbXNfWzBdLnRhcmdldF9iaXRyYXRlX2JwcyksCiAgICAgICAg
ICAgICBiaXRyYXRlX2FsbG9jYXRpb24uR2V0U3BhdGlhbExheWVyU3VtKDApKTsKQEAgLTIwOSw5
ICsyMDgsOCBAQCBURVNUX0YoVmlkZW9Db2RlY0luaXRpYWxpemVyVGVzdCwgU2ltdWxjYXN0VnA4
U2NyZWVuc2hhcmVJbmFjdGl2ZSkgewogICBFWFBFQ1RfRVEoMXUsIGNvZGVjX291dF8uVlA4KCkt
Pm51bWJlck9mVGVtcG9yYWxMYXllcnMpOwogICBjb25zdCB1aW50MzJfdCB0YXJnZXRfYml0cmF0
ZSA9CiAgICAgICBzdHJlYW1zX1swXS50YXJnZXRfYml0cmF0ZV9icHMgKyBzdHJlYW1zX1sxXS50
YXJnZXRfYml0cmF0ZV9icHM7Ci0gIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxv
Y2F0aW9uID0KLSAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX291dF8tPkdldEFsbG9jYXRpb24odGFy
Z2V0X2JpdHJhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtTY3JlZW5zaGFyZURlZmF1bHRGcmFtZXJhdGUpOworICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9u
IGJpdHJhdGVfYWxsb2NhdGlvbiA9IGJpdHJhdGVfYWxsb2NhdG9yXy0+R2V0QWxsb2NhdGlvbigK
KyAgICAgIHRhcmdldF9iaXRyYXRlLCBrU2NyZWVuc2hhcmVEZWZhdWx0RnJhbWVyYXRlKTsKICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdHJlYW1zX1swXS5tYXhfYml0cmF0ZV9i
cHMpLAogICAgICAgICAgICAgYml0cmF0ZV9hbGxvY2F0aW9uLmdldF9zdW1fYnBzKCkpOwogICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0cmVhbXNfWzBdLm1heF9iaXRyYXRlX2Jw
cyksCkBAIC0yMzQsNyArMjMyLDcgQEAgVEVTVF9GKFZpZGVvQ29kZWNJbml0aWFsaXplclRlc3Qs
IEhpZ2hGcHNTaW11bGNhc3RWcDhTY3JlZW5zaGFyZSkgewogICBjb25zdCB1aW50MzJfdCBtYXhf
Yml0cmF0ZV9icHMgPQogICAgICAgc3RyZWFtc19bMF0udGFyZ2V0X2JpdHJhdGVfYnBzICsgc3Ry
ZWFtc19bMV0ubWF4X2JpdHJhdGVfYnBzOwogICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJh
dGVfYWxsb2NhdGlvbiA9Ci0gICAgICBiaXRyYXRlX2FsbG9jYXRvcl9vdXRfLT5HZXRBbGxvY2F0
aW9uKG1heF9iaXRyYXRlX2Jwcywga0RlZmF1bHRGcmFtZVJhdGUpOworICAgICAgYml0cmF0ZV9h
bGxvY2F0b3JfLT5HZXRBbGxvY2F0aW9uKG1heF9iaXRyYXRlX2Jwcywga0RlZmF1bHRGcmFtZVJh
dGUpOwogICBFWFBFQ1RfRVEobWF4X2JpdHJhdGVfYnBzLCBiaXRyYXRlX2FsbG9jYXRpb24uZ2V0
X3N1bV9icHMoKSk7CiAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RyZWFtc19b
MF0udGFyZ2V0X2JpdHJhdGVfYnBzKSwKICAgICAgICAgICAgIGJpdHJhdGVfYWxsb2NhdGlvbi5H
ZXRTcGF0aWFsTGF5ZXJTdW0oMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kaW5nX2lt
cGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy92aWRlb19jb2RpbmdfaW1wbC5jYwppbmRleCBhMDYxYzE4ZmQ3MGUyMjJl
Y2NjYjc0MmZhMDc1ZGYzMTUxNmMyNTA5Li41ODM5N2FkMzg2ZDMyMjFlMDNmYjcyYjZkYmZlMDcx
NjU3OGM4M2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RpbmdfaW1wbC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy92aWRlb19jb2RpbmdfaW1wbC5jYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0
aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRl
by92aWRlb19iaXRyYXRlX2FsbG9jYXRvci5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAg
Ly8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9p
bmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKQEAgLTI3LDEwICsyOCw2IEBACiAjaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci1FdmVu
dFdyYXBwZXIqIEV2ZW50RmFjdG9yeUltcGw6OkNyZWF0ZUV2ZW50KCkgewotICByZXR1cm4gRXZl
bnRXcmFwcGVyOjpDcmVhdGUoKTsKLX0KLQogbmFtZXNwYWNlIHZjbSB7CiAKIGludDY0X3QgVkNN
UHJvY2Vzc1RpbWVyOjpQZXJpb2QoKSBjb25zdCB7CkBAIC04MSwxNyArNzgsMTMgQEAgY2xhc3Mg
RW5jb2RlZEltYWdlQ2FsbGJhY2tXcmFwcGVyIDogcHVibGljIEVuY29kZWRJbWFnZUNhbGxiYWNr
IHsKIGNsYXNzIFZpZGVvQ29kaW5nTW9kdWxlSW1wbCA6IHB1YmxpYyBWaWRlb0NvZGluZ01vZHVs
ZSB7CiAgcHVibGljOgogICBWaWRlb0NvZGluZ01vZHVsZUltcGwoQ2xvY2sqIGNsb2NrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgRXZlbnRGYWN0b3J5KiBldmVudF9mYWN0b3J5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgTmFja1NlbmRlciogbmFja19zZW5kZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVy
KQogICAgICAgOiBWaWRlb0NvZGluZ01vZHVsZSgpLAogICAgICAgICBzZW5kZXJfKGNsb2NrLCAm
cG9zdF9lbmNvZGVfY2FsbGJhY2tfKSwKKyAgICAgICAgcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8o
Q3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSksCiAgICAgICAgIHRp
bWluZ18obmV3IFZDTVRpbWluZyhjbG9jaykpLAotICAgICAgICByZWNlaXZlcl8oY2xvY2ssCi0g
ICAgICAgICAgICAgICAgICBldmVudF9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgdGltaW5n
Xy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgIG5hY2tfc2VuZGVyLAotICAgICAgICAgICAgICAg
ICAga2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIpIHt9CisgICAgICAgIHJlY2VpdmVyXyhjbG9jaywg
dGltaW5nXy5nZXQoKSwgbmFja19zZW5kZXIsIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKSB7fQog
CiAgIHZpcnR1YWwgflZpZGVvQ29kaW5nTW9kdWxlSW1wbCgpIHt9CiAKQEAgLTExNCw3ICsxMDcs
OCBAQCBjbGFzcyBWaWRlb0NvZGluZ01vZHVsZUltcGwgOiBwdWJsaWMgVmlkZW9Db2RpbmdNb2R1
bGUgewogICAgICAgLy8gYXN5bmNocm9ub3VzbHkga2VlcCB0aGUgaW5zdGFuY2UgYWxpdmUgdW50
aWwgZGVzdHJ1Y3Rpb24gb3IgdW50aWwgYQogICAgICAgLy8gbmV3IHNlbmQgY29kZWMgaXMgcmVn
aXN0ZXJlZC4KICAgICAgIFZpZGVvQ29kZWMgY29kZWMgPSAqc2VuZENvZGVjOwotICAgICAgcmF0
ZV9hbGxvY2F0b3JfID0gVmlkZW9Db2RlY0luaXRpYWxpemVyOjpDcmVhdGVCaXRyYXRlQWxsb2Nh
dG9yKGNvZGVjKTsKKyAgICAgIHJhdGVfYWxsb2NhdG9yXyA9CisgICAgICAgICAgcmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeV8tPkNyZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRvcihjb2RlYyk7CiAgICAg
ICByZXR1cm4gc2VuZGVyXy5SZWdpc3RlclNlbmRDb2RlYygmY29kZWMsIG51bWJlck9mQ29yZXMs
IG1heFBheWxvYWRTaXplKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbmRlcl8uUmVnaXN0ZXJTZW5k
Q29kZWMoc2VuZENvZGVjLCBudW1iZXJPZkNvcmVzLCBtYXhQYXlsb2FkU2l6ZSk7CkBAIC0xNDIs
NyArMTM2LDcgQEAgY2xhc3MgVmlkZW9Db2RpbmdNb2R1bGVJbXBsIDogcHVibGljIFZpZGVvQ29k
aW5nTW9kdWxlIHsKIAogICBpbnQzMl90IEFkZFZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYg
dmlkZW9GcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJ
bmZvKiBjb2RlY1NwZWNpZmljSW5mbykgb3ZlcnJpZGUgewotICAgIHJldHVybiBzZW5kZXJfLkFk
ZFZpZGVvRnJhbWUodmlkZW9GcmFtZSwgY29kZWNTcGVjaWZpY0luZm8pOworICAgIHJldHVybiBz
ZW5kZXJfLkFkZFZpZGVvRnJhbWUodmlkZW9GcmFtZSwgY29kZWNTcGVjaWZpY0luZm8sIGFic2w6
Om51bGxvcHQpOwogICB9CiAKICAgaW50MzJfdCBJbnRyYUZyYW1lUmVxdWVzdChzaXplX3Qgc3Ry
ZWFtX2luZGV4KSBvdmVycmlkZSB7CkBAIC0yMTMsMTkgKzIwNywxOCBAQCBjbGFzcyBWaWRlb0Nv
ZGluZ01vZHVsZUltcGwgOiBwdWJsaWMgVmlkZW9Db2RpbmdNb2R1bGUgewogICBydGM6OlRocmVh
ZENoZWNrZXIgY29uc3RydWN0aW9uX3RocmVhZF87CiAgIEVuY29kZWRJbWFnZUNhbGxiYWNrV3Jh
cHBlciBwb3N0X2VuY29kZV9jYWxsYmFja187CiAgIHZjbTo6VmlkZW9TZW5kZXIgc2VuZGVyXzsK
KyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+IHJh
dGVfYWxsb2NhdG9yX2ZhY3RvcnlfOwogICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxs
b2NhdG9yPiByYXRlX2FsbG9jYXRvcl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxWQ01UaW1pbmc+IHRp
bWluZ187CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxWQ01UaW1pbmc+IHRpbWluZ187CiAgIHZj
bTo6VmlkZW9SZWNlaXZlciByZWNlaXZlcl87CiB9OwogfSAgLy8gbmFtZXNwYWNlCiAKIC8vIERF
UFJFQ0FURUQuICBDcmVhdGUgbWV0aG9kIGZvciBjdXJyZW50IGludGVyZmFjZSwgd2lsbCBiZSBy
ZW1vdmVkIHdoZW4gdGhlCiAvLyBuZXcgaml0dGVyIGJ1ZmZlciBpcyBpbiBwbGFjZS4KLVZpZGVv
Q29kaW5nTW9kdWxlKiBWaWRlb0NvZGluZ01vZHVsZTo6Q3JlYXRlKENsb2NrKiBjbG9jaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50RmFjdG9yeSog
ZXZlbnRfZmFjdG9yeSkgeworVmlkZW9Db2RpbmdNb2R1bGUqIFZpZGVvQ29kaW5nTW9kdWxlOjpD
cmVhdGUoQ2xvY2sqIGNsb2NrKSB7CiAgIFJUQ19EQ0hFQ0soY2xvY2spOwotICBSVENfRENIRUNL
KGV2ZW50X2ZhY3RvcnkpOwotICByZXR1cm4gbmV3IFZpZGVvQ29kaW5nTW9kdWxlSW1wbChjbG9j
aywgZXZlbnRfZmFjdG9yeSwgbnVsbHB0ciwgbnVsbHB0cik7CisgIHJldHVybiBuZXcgVmlkZW9D
b2RpbmdNb2R1bGVJbXBsKGNsb2NrLCBudWxscHRyLCBudWxscHRyKTsKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kaW5nX2ltcGwuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL3ZpZGVvX2NvZGluZ19pbXBsLmgKaW5kZXggM2MwOWY5NmUyNjlmOWZjMGFhM2U0ZDBjMTQ4
ZmMyZDIyZmYzMDY2NS4uZTI3YTJmZTc2MDExZWU1ZDJmYTY0ZDM1MmJlYzg3YTU1Y2UyOGZiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kaW5nX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19j
b2RpbmdfaW1wbC5oCkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1
ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL2ZyYW1lX2NhbGxi
YWNrLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2RlY29kZXJfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy9lbmNvZGVyX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19j
b2RpbmcvZnJhbWVfYnVmZmVyLmgiCkBAIC05NCw3ICs5NCw4IEBAIGNsYXNzIFZpZGVvU2VuZGVy
IHsKICAgICAgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb25PYnNlcnZlciogYml0cmF0ZV91cGRhdGVk
X2NhbGxiYWNrKTsKIAogICBpbnQzMl90IEFkZFZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYg
dmlkZW9GcmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJ
bmZvKiBjb2RlY1NwZWNpZmljSW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
b2RlY1NwZWNpZmljSW5mbyogY29kZWNTcGVjaWZpY0luZm8sCisgICAgICAgICAgICAgICAgICAg
ICAgICBhYnNsOjpvcHRpb25hbDxWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvPiBlbmNvZGVyX2lu
Zm8pOwogCiAgIGludDMyX3QgSW50cmFGcmFtZVJlcXVlc3Qoc2l6ZV90IHN0cmVhbV9pbmRleCk7
CiAgIGludDMyX3QgRW5hYmxlRnJhbWVEcm9wcGVyKGJvb2wgZW5hYmxlKTsKQEAgLTExMyw3ICsx
MTQsMTggQEAgY2xhc3MgVmlkZW9TZW5kZXIgewogICBWQ01FbmNvZGVkRnJhbWVDYWxsYmFjayBf
ZW5jb2RlZEZyYW1lQ2FsbGJhY2sgUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9jcml0Xyk7CiAgIEVu
Y29kZWRJbWFnZUNhbGxiYWNrKiBjb25zdCBwb3N0X2VuY29kZV9jYWxsYmFja187CiAgIFZDTUVu
Y29kZXJEYXRhQmFzZSBfY29kZWNEYXRhQmFzZSBSVENfR1VBUkRFRF9CWShlbmNvZGVyX2NyaXRf
KTsKLSAgYm9vbCBmcmFtZV9kcm9wcGVyX2VuYWJsZWRfIFJUQ19HVUFSREVEX0JZKGVuY29kZXJf
Y3JpdF8pOworCisgIC8vIHxmcmFtZV9kcm9wcGVyX3JlcXVlc3RlZF98IHNwZWNpZmllcyBpZiB0
aGUgdXNlciBvZiB0aGlzIGNsYXNzIGhhcworICAvLyByZXF1ZXN0ZWQgZnJhbWUgZHJvcHBpbmcg
dG8gYmUgZW5hYmxlZCwgdmlhIEVuYWJsZUZyYW1lRHJvcHBlcigpLgorICAvLyBEZXBlbmRpbmcg
b24gdmlkZW8gZW5jb2RlciBjb25maWd1cmF0aW9uLCB0aGlzIHNldHRpbmcgbWF5IGJlIG92ZXJy
aWRkZW4KKyAgLy8gYW5kIHRoZSBmcmFtZSBkcm9wcGVyIGJlIGZvcmNlIGRpc2FibGVkLiBJZiBz
bywKKyAgLy8gfGZvcmNlX2Rpc2FibGVfZnJhbWVfZHJvcHBlcl98IHdpbGwgYmUgc2V0IHRvIHRy
dWUuCisgIC8vIElmIGZyYW1lIGRyb3BwZXIgaXMgcmVxdWVzdGVkLCBhbmQgaXMgbm90IGZvcmNl
IGRpc2FibGVkLCBmcmFtZSBkcm9wcGluZworICAvLyBtaWdodCBzdGlsbCBiZSBkaXNhYmxlZCBp
ZiBWaWRlb0VuY29kZXI6OkdldEVuY29kZXJJbmZvKCkgaW5kaWNhdGVzIHRoYXQKKyAgLy8gdGhl
IGVuY29kZXIgaGFzIGEgdHJ1c3RlZCByYXRlIGNvbnRyb2xsZXIuIFRoaXMgaXMgZGV0ZXJtaW5l
ZCBvbiBhCisgIC8vIHBlci1mcmFtZSBiYXNpcywgYXMgdGhlIGVuY29kZXIgYmVoYXZpb3IgbWln
aHQgZHluYW1pY2FsbHkgY2hhbmdlLgorICBib29sIGZyYW1lX2Ryb3BwZXJfcmVxdWVzdGVkXyBS
VENfR1VBUkRFRF9CWShlbmNvZGVyX2NyaXRfKTsKKyAgYm9vbCBmb3JjZV9kaXNhYmxlX2ZyYW1l
X2Ryb3BwZXJfIFJUQ19HVUFSREVEX0JZKGVuY29kZXJfY3JpdF8pOwogCiAgIC8vIE11c3QgYmUg
YWNjZXNzZWQgb24gdGhlIGNvbnN0cnVjdGlvbiB0aHJlYWQgb2YgVmlkZW9TZW5kZXIuCiAgIFZp
ZGVvQ29kZWMgY3VycmVudF9jb2RlY187CkBAIC0xMjgsNyArMTQwLDYgQEAgY2xhc3MgVmlkZW9T
ZW5kZXIgewogY2xhc3MgVmlkZW9SZWNlaXZlciA6IHB1YmxpYyBNb2R1bGUgewogIHB1YmxpYzoK
ICAgVmlkZW9SZWNlaXZlcihDbG9jayogY2xvY2ssCi0gICAgICAgICAgICAgICAgRXZlbnRGYWN0
b3J5KiBldmVudF9mYWN0b3J5LAogICAgICAgICAgICAgICAgIFZDTVRpbWluZyogdGltaW5nLAog
ICAgICAgICAgICAgICAgIE5hY2tTZW5kZXIqIG5hY2tfc2VuZGVyID0gbnVsbHB0ciwKICAgICAg
ICAgICAgICAgICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVy
ID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19wYWNrZXRfYnVmZmVyX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvdmlkZW9fcGFja2V0X2J1ZmZlcl91bml0dGVzdC5jYwppbmRleCA0MjU1
NDJjOTQ5YzAzNjUyMjJlNGFjYTA0YjVmMWM2NzEzYjhhNjhkLi4xM2U2NGVlYmFiNDFmMDlkNzNh
OGM1MWE4YjQzOWEyNDdmNGY4YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19wYWNrZXRfYnVm
ZmVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3BhY2tldF9idWZmZXJfdW5pdHRlc3Qu
Y2MKQEAgLTEyMCwxNCArMTIwLDcgQEAgVEVTVF9GKFRlc3RQYWNrZXRCdWZmZXIsIEluc2VydER1
cGxpY2F0ZVBhY2tldCkgewogICBFWFBFQ1RfVFJVRShJbnNlcnQoc2VxX251bSwga0tleUZyYW1l
LCBrRmlyc3QsIGtMYXN0KSk7CiB9CiAKLSNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQotLy8g
RmFpbHMgb24gYW5kcm9pZCBhZnRlciBjbGFuZyB1cGRhdGUKLS8vIFRPRE8oY3JidWcuY29tLzg4
NzQ2NCk6IFJlZW5hYmxlIHRoaXMKLSNkZWZpbmUgTUFZQkVfU2VxTnVtV3JhcE9uZUZyYW1lIERJ
U0FCTEVEX1NlcU51bVdyYXBPbmVGcmFtZQotI2Vsc2UKLSNkZWZpbmUgTUFZQkVfU2VxTnVtV3Jh
cE9uZUZyYW1lIFNlcU51bVdyYXBPbmVGcmFtZQotI2VuZGlmCi1URVNUX0YoVGVzdFBhY2tldEJ1
ZmZlciwgTUFZQkVfU2VxTnVtV3JhcE9uZUZyYW1lKSB7CitURVNUX0YoVGVzdFBhY2tldEJ1ZmZl
ciwgU2VxTnVtV3JhcE9uZUZyYW1lKSB7CiAgIEVYUEVDVF9UUlVFKEluc2VydCgweEZGRkYsIGtL
ZXlGcmFtZSwga0ZpcnN0LCBrTm90TGFzdCkpOwogICBFWFBFQ1RfVFJVRShJbnNlcnQoMHgwLCBr
S2V5RnJhbWUsIGtOb3RGaXJzdCwga0xhc3QpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9f
cmVjZWl2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19yZWNlaXZlci5jYwppbmRleCBkOTRiYTVlNjlmOWVm
NzBjMDQ1OGRjYjJhMmU1MjZlOGFlMzM4OGIxLi44YjRlZTc4NWVlZjc5ODdjMjQ5ZTA0MjUxYjMy
ZjQ5MDYzMzI5NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19yZWNlaXZlci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy92aWRlb19yZWNlaXZlci5jYwpAQCAtMjYsNyArMjYsNiBAQCBuYW1lc3BhY2Ugd2VicnRj
IHsKIG5hbWVzcGFjZSB2Y20gewogCiBWaWRlb1JlY2VpdmVyOjpWaWRlb1JlY2VpdmVyKENsb2Nr
KiBjbG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRGYWN0b3J5KiBldmVu
dF9mYWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQ01UaW1pbmcqIHRpbWlu
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFja1NlbmRlciogbmFja19zZW5kZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleUZyYW1lUmVxdWVzdFNlbmRlcioga2V5
ZnJhbWVfcmVxdWVzdF9zZW5kZXIpCkBAIC0zNCw3ICszMyw2IEBAIFZpZGVvUmVjZWl2ZXI6OlZp
ZGVvUmVjZWl2ZXIoQ2xvY2sqIGNsb2NrLAogICAgICAgX3RpbWluZyh0aW1pbmcpLAogICAgICAg
X3JlY2VpdmVyKF90aW1pbmcsCiAgICAgICAgICAgICAgICAgY2xvY2tfLAotICAgICAgICAgICAg
ICAgIGV2ZW50X2ZhY3RvcnksCiAgICAgICAgICAgICAgICAgbmFja19zZW5kZXIsCiAgICAgICAg
ICAgICAgICAga2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIpLAogICAgICAgX2RlY29kZWRGcmFtZUNh
bGxiYWNrKF90aW1pbmcsIGNsb2NrXyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19yZWNlaXZl
cl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3JlY2VpdmVyX3VuaXR0ZXN0LmNjCmluZGV4IGI3
YTQ2ZjkyZWE4OGU3ZWUyZDViZDE1MTRlMzVkMDFiMTQ5MjJiZjMuLmY5OWRhYzQ5MjAwYTNiYzk1
NWE4ODc1YmVjN2I2ZGFmZGY2ZGEwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3JlY2VpdmVy
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3JlY2VpdmVyX3VuaXR0ZXN0LmNjCkBAIC0x
MSwxMCArMTEsOSBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNp
bmNsdWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy9pbmNsdWRlL21vY2svbW9ja192Y21fY2FsbGJhY2tzLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS9tb2NrL21vY2tfdmlkZW9fY29kZWNfaW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19j
b2RpbmcuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy90ZXN0L3Rlc3RfdXRpbC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3RpbWluZy5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGluZ19pbXBsLmgiCiAjaW5jbHVkZSAic3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKQEAgLTM3LDcgKzM2LDcgQEAgY2xhc3MgVGVzdFZp
ZGVvUmVjZWl2ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIAogICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKSB7CiAgICAgdGltaW5nXy5yZXNldChuZXcgVkNNVGltaW5nKCZjbG9ja18pKTsKLSAg
ICByZWNlaXZlcl8ucmVzZXQobmV3IFZpZGVvUmVjZWl2ZXIoJmNsb2NrXywgJmV2ZW50X2ZhY3Rv
cnlfLCB0aW1pbmdfLmdldCgpKSk7CisgICAgcmVjZWl2ZXJfLnJlc2V0KG5ldyBWaWRlb1JlY2Vp
dmVyKCZjbG9ja18sIHRpbWluZ18uZ2V0KCkpKTsKICAgICByZWNlaXZlcl8tPlJlZ2lzdGVyRXh0
ZXJuYWxEZWNvZGVyKCZkZWNvZGVyXywga1VudXNlZFBheWxvYWRUeXBlKTsKICAgICBjb25zdCBz
aXplX3Qga01heE5hY2tMaXN0U2l6ZSA9IDI1MDsKICAgICBjb25zdCBpbnQga01heFBhY2tldEFn
ZVRvTmFjayA9IDQ1MDsKQEAgLTgxLDcgKzgwLDYgQEAgY2xhc3MgVGVzdFZpZGVvUmVjZWl2ZXIg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgfQogCiAgIFNpbXVsYXRlZENsb2NrIGNsb2Nr
XzsKLSAgTnVsbEV2ZW50RmFjdG9yeSBldmVudF9mYWN0b3J5XzsKICAgVmlkZW9Db2RlYyBzZXR0
aW5nc187CiAgIE5pY2VNb2NrPE1vY2tWaWRlb0RlY29kZXI+IGRlY29kZXJfOwogICBOaWNlTW9j
azxNb2NrUGFja2V0UmVxdWVzdENhbGxiYWNrPiBwYWNrZXRfcmVxdWVzdF9jYWxsYmFja187CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy92aWRlb19zZW5kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19zZW5kZXIuY2MK
aW5kZXggNGMxZTI0MzYxMjA0ZGMwNTliOGUzN2FkYWZmYTQwMWI2ZTUzNjNlZi4uNGJkNTI1MzBj
OWY1MDIwYTdmYmMyNzg2YzhjZjQ1OWEwYWIzMmE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9f
c2VuZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3NlbmRlci5jYwpAQCAtNDAsNyArNDAsOCBAQCBW
aWRlb1NlbmRlcjo6VmlkZW9TZW5kZXIoQ2xvY2sqIGNsb2NrLAogICAgICAgX2VuY29kZWRGcmFt
ZUNhbGxiYWNrKHBvc3RfZW5jb2RlX2NhbGxiYWNrLCAmX21lZGlhT3B0KSwKICAgICAgIHBvc3Rf
ZW5jb2RlX2NhbGxiYWNrXyhwb3N0X2VuY29kZV9jYWxsYmFjayksCiAgICAgICBfY29kZWNEYXRh
QmFzZSgmX2VuY29kZWRGcmFtZUNhbGxiYWNrKSwKLSAgICAgIGZyYW1lX2Ryb3BwZXJfZW5hYmxl
ZF8odHJ1ZSksCisgICAgICBmcmFtZV9kcm9wcGVyX3JlcXVlc3RlZF8odHJ1ZSksCisgICAgICBm
b3JjZV9kaXNhYmxlX2ZyYW1lX2Ryb3BwZXJfKGZhbHNlKSwKICAgICAgIGN1cnJlbnRfY29kZWNf
KCksCiAgICAgICBlbmNvZGVyX3BhcmFtc18oe1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24oKSwgMCwg
MCwgMH0pLAogICAgICAgZW5jb2Rlcl9oYXNfaW50ZXJuYWxfc291cmNlXyhmYWxzZSksCkBAIC05
NiwxNSArOTcsMTIgQEAgaW50MzJfdCBWaWRlb1NlbmRlcjo6UmVnaXN0ZXJTZW5kQ29kZWMoY29u
c3QgVmlkZW9Db2RlYyogc2VuZENvZGVjLAogICAgIG51bUxheWVycyA9IDE7CiAgIH0KIAotICAv
LyBJZiB3ZSBoYXZlIHNjcmVlbnNoYXJpbmcgYW5kIHdlIGhhdmUgbGF5ZXJzLCB3ZSBkaXNhYmxl
IGZyYW1lIGRyb3BwZXIuCi0gIGNvbnN0IGJvb2wgZGlzYWJsZV9mcmFtZV9kcm9wcGVyID0KKyAg
Ly8gRm9yY2UtZGlzYWJsZSBmcmFtZSBkcm9wcGVyIGlmIGVpdGhlcjoKKyAgLy8gICogV2UgaGF2
ZSBzY3JlZW5zaGFyaW5nIHdpdGggbGF5ZXJzLgorICAvLyAgKiAiV2ViUlRDLUZyYW1lRHJvcHBl
ciIgZmllbGQgdHJpYWwgaXMgIkRpc2FibGVkIi4KKyAgZm9yY2VfZGlzYWJsZV9mcmFtZV9kcm9w
cGVyXyA9CiAgICAgICBmaWVsZF90cmlhbDo6SXNEaXNhYmxlZChrRnJhbWVEcm9wcGVyRmllbGRU
cmlhbCkgfHwKICAgICAgIChudW1MYXllcnMgPiAxICYmIHNlbmRDb2RlYy0+bW9kZSA9PSBWaWRl
b0NvZGVjTW9kZTo6a1NjcmVlbnNoYXJpbmcpOwotICBpZiAoZGlzYWJsZV9mcmFtZV9kcm9wcGVy
KSB7Ci0gICAgX21lZGlhT3B0LkVuYWJsZUZyYW1lRHJvcHBlcihmYWxzZSk7Ci0gIH0gZWxzZSBp
ZiAoZnJhbWVfZHJvcHBlcl9lbmFibGVkXykgewotICAgIF9tZWRpYU9wdC5FbmFibGVGcmFtZURy
b3BwZXIodHJ1ZSk7Ci0gIH0KIAogICB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJnBhcmFtc19j
cml0Xyk7CkBAIC0yNDcsOCArMjQ1LDEwIEBAIHZvaWQgVmlkZW9TZW5kZXI6OlNldEVuY29kZXJQ
YXJhbWV0ZXJzKEVuY29kZXJQYXJhbWV0ZXJzIHBhcmFtcywKIH0KIAogLy8gQWRkIG9uZSByYXcg
dmlkZW8gZnJhbWUgdG8gdGhlIGVuY29kZXIsIGJsb2NraW5nLgotaW50MzJfdCBWaWRlb1NlbmRl
cjo6QWRkVmlkZW9GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNT
cGVjaWZpY0luZm8pIHsKK2ludDMyX3QgVmlkZW9TZW5kZXI6OkFkZFZpZGVvRnJhbWUoCisgICAg
Y29uc3QgVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwKKyAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5m
byogY29kZWNTcGVjaWZpY0luZm8sCisgICAgYWJzbDo6b3B0aW9uYWw8VmlkZW9FbmNvZGVyOjpF
bmNvZGVySW5mbz4gZW5jb2Rlcl9pbmZvKSB7CiAgIEVuY29kZXJQYXJhbWV0ZXJzIGVuY29kZXJf
cGFyYW1zOwogICBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+IG5leHRfZnJhbWVfdHlwZXM7CiAgIGJv
b2wgZW5jb2Rlcl9oYXNfaW50ZXJuYWxfc291cmNlID0gZmFsc2U7CkBAIC0yNjIsNiArMjYyLDE3
IEBAIGludDMyX3QgVmlkZW9TZW5kZXI6OkFkZFZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYg
dmlkZW9GcmFtZSwKICAgaWYgKF9lbmNvZGVyID09IG51bGxwdHIpCiAgICAgcmV0dXJuIFZDTV9V
TklOSVRJQUxJWkVEOwogICBTZXRFbmNvZGVyUGFyYW1ldGVycyhlbmNvZGVyX3BhcmFtcywgZW5j
b2Rlcl9oYXNfaW50ZXJuYWxfc291cmNlKTsKKyAgaWYgKCFlbmNvZGVyX2luZm8pIHsKKyAgICBl
bmNvZGVyX2luZm8gPSBfZW5jb2Rlci0+R2V0RW5jb2RlckluZm8oKTsKKyAgfQorCisgIC8vIEZy
YW1lIGRyb3BwaW5nIGlzIGVuYWJsZWQgaWZmIGZyYW1lIGRyb3BwaW5nIGhhcyBiZWVuIHJlcXVl
c3RlZCwgYW5kCisgIC8vIGZyYW1lIGRyb3BwaW5nIGlzIG5vdCBmb3JjZS1kaXNhYmxlZCwgYW5k
IHJhdGUgY29udHJvbGxlciBpcyBub3QgdHJ1c3RlZC4KKyAgY29uc3QgYm9vbCBmcmFtZV9kcm9w
cGluZ19lbmFibGVkID0KKyAgICAgIGZyYW1lX2Ryb3BwZXJfcmVxdWVzdGVkXyAmJiAhZm9yY2Vf
ZGlzYWJsZV9mcmFtZV9kcm9wcGVyXyAmJgorICAgICAgIWVuY29kZXJfaW5mby0+aGFzX3RydXN0
ZWRfcmF0ZV9jb250cm9sbGVyOworICBfbWVkaWFPcHQuRW5hYmxlRnJhbWVEcm9wcGVyKGZyYW1l
X2Ryb3BwaW5nX2VuYWJsZWQpOworCiAgIGlmIChfbWVkaWFPcHQuRHJvcEZyYW1lKCkpIHsKICAg
ICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICJEcm9wIEZyYW1lICIKICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJ0YXJnZXQgYml0cmF0ZSAiCkBAIC0yODcsNyArMjk4LDcgQEAgaW50MzJfdCBW
aWRlb1NlbmRlcjo6QWRkVmlkZW9GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLAog
ICBjb25zdCBib29sIGlzX2J1ZmZlcl90eXBlX3N1cHBvcnRlZCA9CiAgICAgICBidWZmZXJfdHlw
ZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCB8fAogICAgICAgKGJ1ZmZlcl90eXBl
ID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUgJiYKLSAgICAgICBfZW5jb2Rlci0+
U3VwcG9ydHNOYXRpdmVIYW5kbGUoKSk7CisgICAgICAgZW5jb2Rlcl9pbmZvLT5zdXBwb3J0c19u
YXRpdmVfaGFuZGxlKTsKICAgaWYgKCFpc19idWZmZXJfdHlwZV9zdXBwb3J0ZWQpIHsKICAgICAv
LyBUaGlzIG1vZHVsZSBvbmx5IHN1cHBvcnRzIHNvZnR3YXJlIGVuY29kaW5nLgogICAgIC8vIFRP
RE8ocGJvcyk6IE9mZmxvYWQgY29udmVyc2lvbiBmcm9tIHRoZSBlbmNvZGVyIHRocmVhZC4KQEAg
LTM1NSw3ICszNjYsNyBAQCBpbnQzMl90IFZpZGVvU2VuZGVyOjpJbnRyYUZyYW1lUmVxdWVzdChz
aXplX3Qgc3RyZWFtX2luZGV4KSB7CiAKIGludDMyX3QgVmlkZW9TZW5kZXI6OkVuYWJsZUZyYW1l
RHJvcHBlcihib29sIGVuYWJsZSkgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZlbmNvZGVyX2Ny
aXRfKTsKLSAgZnJhbWVfZHJvcHBlcl9lbmFibGVkXyA9IGVuYWJsZTsKKyAgZnJhbWVfZHJvcHBl
cl9yZXF1ZXN0ZWRfID0gZW5hYmxlOwogICBfbWVkaWFPcHQuRW5hYmxlRnJhbWVEcm9wcGVyKGVu
YWJsZSk7CiAgIHJldHVybiBWQ01fT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19zZW5k
ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19zZW5kZXJfdW5pdHRlc3QuY2MKaW5kZXggM2Nk
OWNhZjY1YzMwNjc5OGY4ODhmOWRjNWNhN2M3MDFhZDMyZDliOC4uYzJmZjBmNjIwN2MxMjlhOWRj
ODM4YmI3ZTg1NWZiMWZmM2FhYTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fc2VuZGVyX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3NlbmRlcl91bml0dGVzdC5jYwpAQCAtMTEsMTEg
KzExLDExIEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1
ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgImFwaS92aWRlby9p
NDIwX2J1ZmZlci5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xh
eWVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVk
ZS92cDguaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1
ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L2luY2x1ZGUvbW9jay9tb2NrX3ZjbV9jYWxsYmFja3MuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy9pbmNsdWRlL21vY2svbW9ja192aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvZGVmYXVsdF92aWRlb19iaXRyYXRl
X2FsbG9jYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2lt
dWxjYXN0X3JhdGVfYWxsb2NhdG9yLmgiCkBAIC0xODYsNyArMTg2LDEwIEBAIGNsYXNzIFRlc3RW
aWRlb1NlbmRlciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogCiAgIHZvaWQgQWRkRnJhbWUo
KSB7CiAgICAgYXNzZXJ0KGdlbmVyYXRvcl8uZ2V0KCkpOwotICAgIHNlbmRlcl8tPkFkZFZpZGVv
RnJhbWUoKmdlbmVyYXRvcl8tPk5leHRGcmFtZSgpLCBOVUxMKTsKKyAgICBzZW5kZXJfLT5BZGRW
aWRlb0ZyYW1lKCpnZW5lcmF0b3JfLT5OZXh0RnJhbWUoKSwgbnVsbHB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kZXJfID8gYWJzbDo6b3B0aW9uYWw8VmlkZW9FbmNvZGVyOjpF
bmNvZGVySW5mbz4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bmNvZGVyXy0+R2V0RW5jb2RlckluZm8oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogYWJzbDo6bnVsbG9wdCk7CiAgIH0KIAogICBTaW11bGF0ZWRDbG9jayBjbG9ja187
CkBAIC0zNjksOSArMzcyLDYgQEAgVEVTVF9GKFRlc3RWaWRlb1NlbmRlcldpdGhNb2NrRW5jb2Rl
ciwKICAgLy8gRXhwZWN0IGluaXRpYWwgY2FsbCB0byBTZXRDaGFubmVsUGFyYW1ldGVycy4gUmF0
ZXMgYXJlIGluaXRpYWxpemVkIHRocm91Z2gKICAgLy8gSW5pdEVuY29kZSBhbmQgZXhwZWN0cyBu
byBhZGRpdGlvbmFsIGNhbGwgYmVmb3JlIHRoZSBmcmFtZXJhdGUgKG9yIGJpdHJhdGUpCiAgIC8v
IHVwZGF0ZXMuCi0gIEVYUEVDVF9DQUxMKGVuY29kZXJfLCBTZXRDaGFubmVsUGFyYW1ldGVycyhr
TG9zc1JhdGUsIGtSdHQpKQotICAgICAgLlRpbWVzKDEpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJu
KDApKTsKICAgc2VuZGVyXy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMoc2V0dGluZ3NfLnN0YXJ0Qml0
cmF0ZSAqIDEwMDAsIGtMb3NzUmF0ZSwga1J0dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmF0ZV9hbGxvY2F0b3JfLmdldCgpLCBudWxscHRyKTsKICAgd2hpbGUgKGNsb2NrXy5U
aW1lSW5NaWxsaXNlY29uZHMoKSA8IHN0YXJ0X3RpbWUgKyBrUmF0ZVN0YXRzV2luZG93TXMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29y
dGMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9v
cnRjL0JVSUxELmduCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjUxNjVhMDM3YmU1
ZmNlZGZiMTFlYzBmOGRiZjUwYWM2Mjg1ZDU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL29ydGMvQlVJTEQuZ24KKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotIyBDb3B5
cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0jCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKLSMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0jIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSMgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotIyBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLQotaW1w
b3J0KCIuLi93ZWJydGMuZ25pIikKLWlmIChpc19hbmRyb2lkKSB7Ci0gIGltcG9ydCgiLy9idWls
ZC9jb25maWcvYW5kcm9pZC9jb25maWcuZ25pIikKLSAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9h
bmRyb2lkL3J1bGVzLmduaSIpCi19Ci0KLXJ0Y19zdGF0aWNfbGlicmFyeSgib3J0YyIpIHsKLSAg
ZGVmaW5lcyA9IFtdCi0gIHNvdXJjZXMgPSBbCi0gICAgIm9ydGNmYWN0b3J5LmNjIiwKLSAgICAi
b3J0Y2ZhY3RvcnkuaCIsCi0gICAgIm9ydGNydHByZWNlaXZlcmFkYXB0ZXIuY2MiLAotICAgICJv
cnRjcnRwcmVjZWl2ZXJhZGFwdGVyLmgiLAotICAgICJvcnRjcnRwc2VuZGVyYWRhcHRlci5jYyIs
Ci0gICAgIm9ydGNydHBzZW5kZXJhZGFwdGVyLmgiLAotICAgICJydHB0cmFuc3BvcnRhZGFwdGVy
LmNjIiwKLSAgICAicnRwdHJhbnNwb3J0YWRhcHRlci5oIiwKLSAgICAicnRwdHJhbnNwb3J0Y29u
dHJvbGxlcmFkYXB0ZXIuY2MiLAotICAgICJydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5o
IiwKLSAgXQotCi0gICMgVE9ETyhkZWFkYmVlZik6IENyZWF0ZSBhIHNlcGFyYXRlIHRhcmdldCBm
b3IgdGhlIGNvbW1vbiB0aGluZ3MgT1JUQyBhbmQKLSAgIyBQZWVyQ29ubmVjdGlvbiBjb2RlIHNo
YXJlcywgc28gdGhhdCBvcnRjIGNhbiBkZXBlbmQgb24gdGhhdCBpbnN0ZWFkIG9mCi0gICMgbGli
amluZ2xlX3BlZXJjb25uZWN0aW9uLgotICBkZXBzID0gWwotICAgICIuLi9hcGk6bGliamluZ2xl
X3BlZXJjb25uZWN0aW9uX2FwaSIsCi0gICAgIi4uL2FwaTpvcnRjX2FwaSIsCi0gICAgIi4uL2Fw
aS92aWRlb19jb2RlY3M6YnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkiLAotICAgICIuLi9h
cGkvdmlkZW9fY29kZWNzOmJ1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5IiwKLSAgICAiLi4v
Y2FsbDpjYWxsX2ludGVyZmFjZXMiLAotICAgICIuLi9jYWxsOnJ0cF9zZW5kZXIiLAotICAgICIu
Li9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKLSAgICAiLi4vbG9nZ2luZzpydGNfZXZlbnRf
bG9nX2ltcGxfYmFzZSIsCi0gICAgIi4uL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCi0gICAgIi4u
L21lZGlhOnJ0Y19tZWRpYSIsCi0gICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKLSAgICAi
Li4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAotICAgICIuLi9w
MnA6cnRjX3AycCIsCi0gICAgIi4uL3BjOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbiIsCi0gICAg
Ii4uL3BjOnBlZXJjb25uZWN0aW9uIiwKLSAgICAiLi4vcGM6cnRjX3BjIiwKLSAgICAiLi4vcGM6
cnRjX3BjX2Jhc2UiLAotICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAotICAgICIuLi9ydGNfYmFz
ZTpydGNfYmFzZSIsCi0gICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAi
Li4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdCIsCi0gICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL21lbW9yeSIsCi0gICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzOm9wdGlvbmFsIiwKLSAgXQotCi0gIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBp
c19jbGFuZykgewotICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xh
bmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KLSAgICBzdXBwcmVzc2VkX2NvbmZpZ3Mg
Kz0gWyAiLy9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRfY29uc3RydWN0cyIgXQotICB9Ci19
Ci0KLWlmIChydGNfaW5jbHVkZV90ZXN0cykgewotICBydGNfdGVzdCgib3J0Y191bml0dGVzdHMi
KSB7Ci0gICAgdGVzdG9ubHkgPSB0cnVlCi0KLSAgICBzb3VyY2VzID0gWwotICAgICAgIm9ydGNm
YWN0b3J5X2ludGVncmF0aW9udGVzdC5jYyIsCi0gICAgICAib3J0Y2ZhY3RvcnlfdW5pdHRlc3Qu
Y2MiLAotICAgICAgIm9ydGNydHByZWNlaXZlcl91bml0dGVzdC5jYyIsCi0gICAgICAib3J0Y3J0
cHNlbmRlcl91bml0dGVzdC5jYyIsCi0gICAgICAicnRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjIiwK
LSAgICAgICJydHB0cmFuc3BvcnRjb250cm9sbGVyX3VuaXR0ZXN0LmNjIiwKLSAgICAgICJzcnRw
dHJhbnNwb3J0X3VuaXR0ZXN0LmNjIiwKLSAgICAgICJ0ZXN0cnRwcGFyYW1ldGVycy5jYyIsCi0g
ICAgICAidGVzdHJ0cHBhcmFtZXRlcnMuaCIsCi0gICAgXQotCi0gICAgZGVwcyA9IFsKLSAgICAg
ICI6b3J0YyIsCi0gICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAot
ICAgICAgIi4uL2FwaTpvcnRjX2FwaSIsCi0gICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczpidWls
dGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeSIsCi0gICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczpi
dWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeSIsCi0gICAgICAiLi4vbWVkaWE6cnRjX21lZGlh
X3Rlc3RzX3V0aWxzIiwKLSAgICAgICIuLi9wMnA6cDJwX3Rlc3RfdXRpbHMiLAotICAgICAgIi4u
L3AycDpydGNfcDJwIiwKLSAgICAgICIuLi9wYzpwY190ZXN0X3V0aWxzIiwKLSAgICAgICIuLi9w
YzpwZWVyY29ubmVjdGlvbiIsCi0gICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAotICAgICAg
Ii4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZV90ZXN0c19tYWluIiwKLSAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGls
cyIsCi0gICAgICAiLi4vcnRjX2Jhc2Uvc3lzdGVtOmFyY2giLAotICAgIF0KLQotICAgIGlmICgh
YnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewotICAgICAgIyBTdXBwcmVzcyB3YXJu
aW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMp
LgotICAgICAgc3VwcHJlc3NlZF9jb25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2NsYW5nOmZp
bmRfYmFkX2NvbnN0cnVjdHMiIF0KLSAgICB9Ci0KLSAgICBpZiAoaXNfYW5kcm9pZCkgewotICAg
ICAgZGVwcyArPSBbICIvL3Rlc3RpbmcvYW5kcm9pZC9uYXRpdmVfdGVzdDpuYXRpdmVfdGVzdF9z
dXBwb3J0IiBdCi0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL0RFUFMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL0RFUFMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGJlYmYwMzBiODI5MGU2MjkwYzkzMjY5OTlkMWU1ZWFkYzE3ZmU2ZmQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ERVBTCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAs
MCBAQAotaW5jbHVkZV9ydWxlcyA9IFsKLSAgIithcGkiLAotICAiK2NhbGwiLAotICAiK2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZyIsCi0gICIrbWVkaWEiLAotICAiK21vZHVsZXMvYXVkaW9fY29kaW5n
IiwKLSAgIittb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmciLAotICAiK3AycCIsCi0gICIrcGMiLAot
Ci0gICIrbW9kdWxlcy9ydHBfcnRjcCIsCi0gICIrc3lzdGVtX3dyYXBwZXJzIiwKLQotICAiK21v
ZHVsZXMvYXVkaW9fZGV2aWNlIiwKLSAgIittb2R1bGVzL3ZpZGVvX2NvZGluZyIsCi0gICIrbW9k
dWxlcy92aWRlb19yZW5kZXIiLAotXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL09XTkVSUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGMwOGZmZjUwYjhmMmVhNzM5M2Q5YWI5ZDNlNzVkN2U0YjZjZDMwMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL09XTkVSUworKysgL2Rldi9udWxsCkBAIC0xLDcg
KzAsMCBAQAotcHRoYXRjaGVyQHdlYnJ0Yy5vcmcKLXN0ZXZlYW50b25Ad2VicnRjLm9yZwotCi0j
IFRoZXNlIGFyZSBmb3IgdGhlIGNvbW1vbiBjYXNlIG9mIGFkZGluZyBvciByZW5hbWluZyBmaWxl
cy4gSWYgeW91J3JlIGRvaW5nCi0jIHN0cnVjdHVyYWwgY2hhbmdlcywgcGxlYXNlIGdldCBhIHJl
dmlldyBmcm9tIGEgcmV2aWV3ZXIgaW4gdGhpcyBmaWxlLgotcGVyLWZpbGUgKi5nbj0qCi1wZXIt
ZmlsZSAqLmduaT0qCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9vcnRjL29ydGNmYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeS5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggY2I2M2QyNjE3NGJhNjc4NjQwOTU0NGZjMTU0ZTJiMTM1NWVmMmY1OS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNmYWN0b3J5LmNjCisrKyAvZGV2
L251bGwKQEAgLTEsNTYzICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJv
cnRjL29ydGNmYWN0b3J5LmgiCi0KLSNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6bW92
ZS4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
LSNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW10cmFja3Byb3h5LmgiCi0jaW5jbHVkZSAiYXBpL3By
b3h5LmgiCi0jaW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVvX2Nv
ZGVjcy9idWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImFwaS92aWRl
b19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJhcGkv
dmlkZW9zb3VyY2Vwcm94eS5oIgotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNf
ZXZlbnRfbG9nLmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgotI2lu
Y2x1ZGUgIm1lZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKLSNpbmNsdWRlICJvcnRj
L29ydGNydHByZWNlaXZlcmFkYXB0ZXIuaCIKLSNpbmNsdWRlICJvcnRjL29ydGNydHBzZW5kZXJh
ZGFwdGVyLmgiCi0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmgiCi0jaW5jbHVk
ZSAib3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5oIgotI2luY2x1ZGUgInAycC9i
YXNlL2Jhc2ljcGFja2V0c29ja2V0ZmFjdG9yeS5oIgotI2luY2x1ZGUgInAycC9iYXNlL3VkcHRy
YW5zcG9ydC5oIgotI2luY2x1ZGUgInBjL2F1ZGlvdHJhY2suaCIKLSNpbmNsdWRlICJwYy9jaGFu
bmVsbWFuYWdlci5oIgotI2luY2x1ZGUgInBjL2xvY2FsYXVkaW9zb3VyY2UuaCIKLSNpbmNsdWRl
ICJwYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5oIgotI2luY2x1ZGUgInBjL3ZpZGVvdHJhY2su
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2JpbmQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9oZWxwZXJzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKLQotbmFtZXNwYWNlIHsKLQot
Y29uc3QgaW50IGtEZWZhdWx0UnRjcENuYW1lTGVuZ3RoID0gMTY7Ci0KLS8vIEFzc2VydHMgdGhh
dCBhbGwgb2YgdGhlIGJ1aWx0LWluIGNhcGFiaWxpdGllcyBjYW4gYmUgY29udmVydGVkIHRvCi0v
LyBSdHBDYXBhYmlsaXRpZXMuIElmIHRoZXkgY2FuJ3QsIHNvbWV0aGluZydzIHdyb25nIChmb3Ig
ZXhhbXBsZSwgbWF5YmUgYSBuZXcKLS8vIGZlZWRiYWNrIG1lY2hhbmlzbSBpcyBzdXBwb3J0ZWQs
IGJ1dCBhbiBlbnVtIHZhbHVlIHdhc24ndCBhZGRlZCB0bwotLy8gcnRwcGFyYW1ldGVycy5oKS4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBDPgotd2VicnRjOjpSdHBDYXBhYmlsaXRpZXMgVG9SdHBDYXBh
YmlsaXRpZXNXaXRoQXNzZXJ0cygKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxDPiYgY3JpY2tldF9j
b2RlY3MsCi0gICAgY29uc3QgY3JpY2tldDo6UnRwSGVhZGVyRXh0ZW5zaW9ucyYgY3JpY2tldF9l
eHRlbnNpb25zKSB7Ci0gIHdlYnJ0Yzo6UnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcyA9Ci0g
ICAgICB3ZWJydGM6OlRvUnRwQ2FwYWJpbGl0aWVzKGNyaWNrZXRfY29kZWNzLCBjcmlja2V0X2V4
dGVuc2lvbnMpOwotICBSVENfRENIRUNLX0VRKGNhcGFiaWxpdGllcy5jb2RlY3Muc2l6ZSgpLCBj
cmlja2V0X2NvZGVjcy5zaXplKCkpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhcGFiaWxp
dGllcy5jb2RlY3Muc2l6ZSgpOyArK2kpIHsKLSAgICBSVENfRENIRUNLX0VRKGNhcGFiaWxpdGll
cy5jb2RlY3NbaV0ucnRjcF9mZWVkYmFjay5zaXplKCksCi0gICAgICAgICAgICAgICAgICBjcmlj
a2V0X2NvZGVjc1tpXS5mZWVkYmFja19wYXJhbXMucGFyYW1zKCkuc2l6ZSgpKTsKLSAgfQotICBS
VENfRENIRUNLX0VRKGNhcGFiaWxpdGllcy5oZWFkZXJfZXh0ZW5zaW9ucy5zaXplKCksCi0gICAg
ICAgICAgICAgICAgY3JpY2tldF9leHRlbnNpb25zLnNpemUoKSk7Ci0gIHJldHVybiBjYXBhYmls
aXRpZXM7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8g
Tm90ZSB0aGF0IHRoaXMgcHJveHkgY2xhc3MgdXNlcyB0aGUgbmV0d29yayB0aHJlYWQgYXMgdGhl
ICJ3b3JrZXIiIHRocmVhZC4KLUJFR0lOX09XTkVEX1BST1hZX01BUChPcnRjRmFjdG9yeSkKLVBS
T1hZX1NJR05BTElOR19USFJFQURfREVTVFJVQ1RPUigpCi1QUk9YWV9NRVRIT0QwKFJUQ0Vycm9y
T3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+PiwKLSAg
ICAgICAgICAgICAgQ3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcikKLVBST1hZX01FVEhPRDQo
UlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4sCi0gICAg
ICAgICAgICAgIENyZWF0ZVJ0cFRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgY29uc3QgUnRwVHJh
bnNwb3J0UGFyYW1ldGVycyYsCi0gICAgICAgICAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFj
ZSosCi0gICAgICAgICAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSosCi0gICAgICAgICAg
ICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UqKQotCi1QUk9YWV9NRVRIT0Q0KFJU
Q0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+PiwKLSAgICAg
ICAgICAgICAgQ3JlYXRlU3J0cFRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgY29uc3QgUnRwVHJh
bnNwb3J0UGFyYW1ldGVycyYsCi0gICAgICAgICAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFj
ZSosCi0gICAgICAgICAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSosCi0gICAgICAgICAg
ICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UqKQotCi1QUk9YWV9DT05TVE1FVEhP
RDEoUnRwQ2FwYWJpbGl0aWVzLAotICAgICAgICAgICAgICAgICAgIEdldFJ0cFNlbmRlckNhcGFi
aWxpdGllcywKLSAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpNZWRpYVR5cGUpCi1QUk9YWV9N
RVRIT0QyKFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+
PiwKLSAgICAgICAgICAgICAgQ3JlYXRlUnRwU2VuZGVyLAotICAgICAgICAgICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4sCi0gICAgICAgICAgICAgIFJ0
cFRyYW5zcG9ydEludGVyZmFjZSopCi1QUk9YWV9NRVRIT0QyKFJUQ0Vycm9yT3I8c3RkOjp1bmlx
dWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PiwKLSAgICAgICAgICAgICAgQ3JlYXRlUnRw
U2VuZGVyLAotICAgICAgICAgICAgICBjcmlja2V0OjpNZWRpYVR5cGUsCi0gICAgICAgICAgICAg
IFJ0cFRyYW5zcG9ydEludGVyZmFjZSopCi1QUk9YWV9DT05TVE1FVEhPRDEoUnRwQ2FwYWJpbGl0
aWVzLAotICAgICAgICAgICAgICAgICAgIEdldFJ0cFJlY2VpdmVyQ2FwYWJpbGl0aWVzLAotICAg
ICAgICAgICAgICAgICAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSkKLVBST1hZX01FVEhPRDIoUlRDRXJy
b3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFJlY2VpdmVySW50ZXJmYWNlPj4sCi0gICAgICAg
ICAgICAgIENyZWF0ZVJ0cFJlY2VpdmVyLAotICAgICAgICAgICAgICBjcmlja2V0OjpNZWRpYVR5
cGUsCi0gICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSopCi1QUk9YWV9XT1JLRVJf
TUVUSE9EMyhSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxVZHBUcmFuc3BvcnRJbnRlcmZhY2U+
PiwKLSAgICAgICAgICAgICAgICAgICAgIENyZWF0ZVVkcFRyYW5zcG9ydCwKLSAgICAgICAgICAg
ICAgICAgICAgIGludCwKLSAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90LAotICAgICAgICAg
ICAgICAgICAgICAgdWludDE2X3QpCi1QUk9YWV9NRVRIT0QxKHJ0Yzo6c2NvcGVkX3JlZnB0cjxB
dWRpb1NvdXJjZUludGVyZmFjZT4sCi0gICAgICAgICAgICAgIENyZWF0ZUF1ZGlvU291cmNlLAot
ICAgICAgICAgICAgICBjb25zdCBjcmlja2V0OjpBdWRpb09wdGlvbnMmKQotUFJPWFlfTUVUSE9E
MihydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9UcmFja0ludGVyZmFjZT4sCi0gICAgICAgICAgICAg
IENyZWF0ZVZpZGVvVHJhY2ssCi0gICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiwKLSAg
ICAgICAgICAgICAgVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZSopCi1QUk9YWV9NRVRIT0QyKHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1RyYWNrSW50ZXJmYWNlPiwKLSAgICAgICAgICAgICAgQ3Jl
YXRlQXVkaW9UcmFjaywKLSAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmLAotICAgICAg
ICAgICAgICBBdWRpb1NvdXJjZUludGVyZmFjZSopCi1FTkRfUFJPWFlfTUFQKCkKLQotLy8gc3Rh
dGljCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4+IE9y
dGNGYWN0b3J5OjpDcmVhdGUoCi0gICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAg
IHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgIHJ0Yzo6TmV0d29ya01hbmFnZXIq
IG5ldHdvcmtfbWFuYWdlciwKLSAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9m
YWN0b3J5LAotICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG0sCi0gICAgc3RkOjp1bmlxdWVfcHRy
PGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUsCi0gICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwK
LSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5KSB7Ci0gIC8vIEhvcCB0byBzaWduYWxpbmcgdGhyZWFkIGlmIG5lZWRlZC4KLSAg
aWYgKHNpZ25hbGluZ190aHJlYWQgJiYgIXNpZ25hbGluZ190aHJlYWQtPklzQ3VycmVudCgpKSB7
Ci0gICAgcmV0dXJuIHNpZ25hbGluZ190aHJlYWQKLSAgICAgICAgLT5JbnZva2U8UlRDRXJyb3JP
cjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+Pj4oCi0gICAgICAgICAgICBS
VENfRlJPTV9IRVJFLAotICAgICAgICAgICAgcnRjOjpCaW5kKCZPcnRjRmFjdG9yeTo6Q3JlYXRl
X3MsIG5ldHdvcmtfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLAotICAgICAgICAgICAgICAgICAg
ICAgIG5ldHdvcmtfbWFuYWdlciwgc29ja2V0X2ZhY3RvcnksIGFkbSwKLSAgICAgICAgICAgICAg
ICAgICAgICBtZWRpYV9lbmdpbmUucmVsZWFzZSgpLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0g
ICAgICAgICAgICAgICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KSk7Ci0gIH0KLSAgcmV0
dXJuIENyZWF0ZV9zKG5ldHdvcmtfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBuZXR3b3JrX21h
bmFnZXIsCi0gICAgICAgICAgICAgICAgICBzb2NrZXRfZmFjdG9yeSwgYWRtLCBtZWRpYV9lbmdp
bmUucmVsZWFzZSgpLAotICAgICAgICAgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBh
dWRpb19kZWNvZGVyX2ZhY3RvcnkpOwotfQotCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxP
cnRjRmFjdG9yeUludGVyZmFjZT4+IE9ydGNGYWN0b3J5SW50ZXJmYWNlOjpDcmVhdGUoCi0gICAg
cnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdf
dGhyZWFkLAotICAgIHJ0Yzo6TmV0d29ya01hbmFnZXIqIG5ldHdvcmtfbWFuYWdlciwKLSAgICBy
dGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAotICAgIEF1ZGlvRGV2aWNl
TW9kdWxlKiBhZG0sCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+
IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNv
ZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KSB7Ci0gIHJldHVybiBPcnRjRmFjdG9y
eTo6Q3JlYXRlKG5ldHdvcmtfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBuZXR3b3JrX21hbmFn
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF9mYWN0b3J5LCBhZG0sIG51
bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9y
eSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KTsKLX0KLQotT3J0Y0ZhY3Rvcnk6Ok9ydGNGYWN0b3J5
KAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2ln
bmFsaW5nX3RocmVhZCwKLSAgICBydGM6Ok5ldHdvcmtNYW5hZ2VyKiBuZXR3b3JrX21hbmFnZXIs
Ci0gICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFjdG9yeSwKLSAgICBBdWRp
b0RldmljZU1vZHVsZSogYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJG
YWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1
ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSkKLSAgICA6IG5ldHdvcmtf
dGhyZWFkXyhuZXR3b3JrX3RocmVhZCksCi0gICAgICBzaWduYWxpbmdfdGhyZWFkXyhzaWduYWxp
bmdfdGhyZWFkKSwKLSAgICAgIG5ldHdvcmtfbWFuYWdlcl8obmV0d29ya19tYW5hZ2VyKSwKLSAg
ICAgIHNvY2tldF9mYWN0b3J5Xyhzb2NrZXRfZmFjdG9yeSksCi0gICAgICBhZG1fKGFkbSksCi0g
ICAgICBudWxsX2V2ZW50X2xvZ18oUnRjRXZlbnRMb2c6OkNyZWF0ZU51bGwoKSksCi0gICAgICBh
dWRpb19lbmNvZGVyX2ZhY3RvcnlfKGF1ZGlvX2VuY29kZXJfZmFjdG9yeSksCi0gICAgICBhdWRp
b19kZWNvZGVyX2ZhY3RvcnlfKGF1ZGlvX2RlY29kZXJfZmFjdG9yeSkgewotICBpZiAoIXJ0Yzo6
Q3JlYXRlUmFuZG9tU3RyaW5nKGtEZWZhdWx0UnRjcENuYW1lTGVuZ3RoLCAmZGVmYXVsdF9jbmFt
ZV8pKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBnZW5lcmF0ZSBDTkFN
RT8iOwotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIH0KLSAgaWYgKCFuZXR3b3JrX3RocmVhZF8p
IHsKLSAgICBvd25lZF9uZXR3b3JrX3RocmVhZF8gPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNv
Y2tldFNlcnZlcigpOwotICAgIG93bmVkX25ldHdvcmtfdGhyZWFkXy0+U3RhcnQoKTsKLSAgICBu
ZXR3b3JrX3RocmVhZF8gPSBvd25lZF9uZXR3b3JrX3RocmVhZF8uZ2V0KCk7Ci0gIH0KLQotICAv
LyBUaGUgd29ya2VyIHRocmVhZCBpcyBjcmVhdGVkIGludGVybmFsbHkgYmVjYXVzZSBpdCdzIGFu
IGltcGxlbWVudGF0aW9uCi0gIC8vIGRldGFpbCwgYW5kIGNvbnN1bWVycyBvZiB0aGUgQVBJIGRv
bid0IG5lZWQgdG8gcmVhbGx5IGtub3cgYWJvdXQgaXQuCi0gIHdvcmtlcl90aHJlYWRfID0gcnRj
OjpUaHJlYWQ6OkNyZWF0ZSgpOwotICB3b3JrZXJfdGhyZWFkXy0+U2V0TmFtZSgiT1JUQy13b3Jr
ZXIiLCB0aGlzKTsKLSAgd29ya2VyX3RocmVhZF8tPlN0YXJ0KCk7Ci0KLSAgaWYgKHNpZ25hbGlu
Z190aHJlYWRfKSB7Ci0gICAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwot
ICB9IGVsc2UgewotICAgIHNpZ25hbGluZ190aHJlYWRfID0gcnRjOjpUaHJlYWQ6OkN1cnJlbnQo
KTsKLSAgICBpZiAoIXNpZ25hbGluZ190aHJlYWRfKSB7Ci0gICAgICAvLyBJZiB0aGlzIHRocmVh
ZCBpc24ndCBhbHJlYWR5IHdyYXBwZWQgYnkgYW4gcnRjOjpUaHJlYWQsIGNyZWF0ZSBhCi0gICAg
ICAvLyB3cmFwcGVyIGFuZCBvd24gaXQgaW4gdGhpcyBjbGFzcy4KLSAgICAgIHNpZ25hbGluZ190
aHJlYWRfID0gcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVudFRocmVh
ZCgpOwotICAgICAgd3JhcHNfc2lnbmFsaW5nX3RocmVhZF8gPSB0cnVlOwotICAgIH0KLSAgfQot
Ci0gIGlmIChzaWduYWxpbmdfdGhyZWFkXy0+bmFtZSgpLmVtcHR5KCkpIHsKLSAgICBzaWduYWxp
bmdfdGhyZWFkXy0+U2V0TmFtZSgiT1JUQy1zaWduYWxpbmciLCB0aGlzKTsKLSAgfQotCi0gIGlm
ICghbmV0d29ya19tYW5hZ2VyXykgewotICAgIG93bmVkX25ldHdvcmtfbWFuYWdlcl8ucmVzZXQo
bmV3IHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcigpKTsKLSAgICBuZXR3b3JrX21hbmFnZXJfID0g
b3duZWRfbmV0d29ya19tYW5hZ2VyXy5nZXQoKTsKLSAgfQotICBpZiAoIXNvY2tldF9mYWN0b3J5
XykgewotICAgIG93bmVkX3NvY2tldF9mYWN0b3J5Xy5yZXNldCgKLSAgICAgICAgbmV3IHJ0Yzo6
QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5KG5ldHdvcmtfdGhyZWFkXykpOwotICAgIHNvY2tldF9m
YWN0b3J5XyA9IG93bmVkX3NvY2tldF9mYWN0b3J5Xy5nZXQoKTsKLSAgfQotfQotCi1PcnRjRmFj
dG9yeTo6fk9ydGNGYWN0b3J5KCkgewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhy
ZWFkXyk7Ci0gIGlmICh3cmFwc19zaWduYWxpbmdfdGhyZWFkXykgewotICAgIHJ0Yzo6VGhyZWFk
TWFuYWdlcjo6SW5zdGFuY2UoKS0+VW53cmFwQ3VycmVudFRocmVhZCgpOwotICB9Ci19Ci0KLVJU
Q0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+
PgotT3J0Y0ZhY3Rvcnk6OkNyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIoKSB7Ci0gIFJUQ19E
Q0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgcmV0dXJuIFJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJBZGFwdGVyOjpDcmVhdGVQcm94aWVkKAotICAgICAgY3JpY2tldDo6TWVkaWFDb25m
aWcoKSwgY2hhbm5lbF9tYW5hZ2VyXy5nZXQoKSwgbnVsbF9ldmVudF9sb2dfLmdldCgpLAotICAg
ICAgc2lnbmFsaW5nX3RocmVhZF8sIHdvcmtlcl90aHJlYWRfLmdldCgpLCBuZXR3b3JrX3RocmVh
ZF8pOwotfQotCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZh
Y2U+PgotT3J0Y0ZhY3Rvcnk6OkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICBjb25zdCBSdHBUcmFu
c3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFj
ZSogcnRwLAotICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICBSdHBUcmFu
c3BvcnRDb250cm9sbGVySW50ZXJmYWNlKiB0cmFuc3BvcnRfY29udHJvbGxlcikgewotICBSVENf
RENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRl
cnMgY29waWVkX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwotICBpZiAoY29waWVkX3BhcmFtZXRl
cnMucnRjcC5jbmFtZS5lbXB0eSgpKSB7Ci0gICAgY29waWVkX3BhcmFtZXRlcnMucnRjcC5jbmFt
ZSA9IGRlZmF1bHRfY25hbWVfOwotICB9Ci0gIGlmICh0cmFuc3BvcnRfY29udHJvbGxlcikgewot
ICAgIHJldHVybiB0cmFuc3BvcnRfY29udHJvbGxlci0+R2V0SW50ZXJuYWwoKS0+Q3JlYXRlUHJv
eGllZFJ0cFRyYW5zcG9ydCgKLSAgICAgICAgY29waWVkX3BhcmFtZXRlcnMsIHJ0cCwgcnRjcCk7
Ci0gIH0gZWxzZSB7Ci0gICAgLy8gSWYgfHRyYW5zcG9ydF9jb250cm9sbGVyfCBpcyBudWxsLCBj
cmVhdGUgb25lIGF1dG9tYXRpY2FsbHksIHdoaWNoIHRoZQotICAgIC8vIHJldHVybmVkIFJ0cFRy
YW5zcG9ydCB3aWxsIG93bi4KLSAgICBhdXRvIGNvbnRyb2xsZXJfcmVzdWx0ID0gQ3JlYXRlUnRw
VHJhbnNwb3J0Q29udHJvbGxlcigpOwotICAgIGlmICghY29udHJvbGxlcl9yZXN1bHQub2soKSkg
ewotICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfcmVzdWx0Lk1vdmVFcnJvcigpOwotICAgIH0KLSAg
ICBhdXRvIGNvbnRyb2xsZXIgPSBjb250cm9sbGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgICBh
dXRvIHRyYW5zcG9ydF9yZXN1bHQgPQotICAgICAgICBjb250cm9sbGVyLT5HZXRJbnRlcm5hbCgp
LT5DcmVhdGVQcm94aWVkUnRwVHJhbnNwb3J0KGNvcGllZF9wYXJhbWV0ZXJzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cCwg
cnRjcCk7Ci0gICAgLy8gSWYgUnRwVHJhbnNwb3J0IHdhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCwg
dHJhbnNmZXIgb3duZXJzaGlwIG9mCi0gICAgLy8gfHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcnwu
IE90aGVyd2lzZSBpdCB3aWxsIGdvIG91dCBvZiBzY29wZSBhbmQgYmUKLSAgICAvLyBkZWxldGVk
IGF1dG9tYXRpY2FsbHkuCi0gICAgaWYgKHRyYW5zcG9ydF9yZXN1bHQub2soKSkgewotICAgICAg
dHJhbnNwb3J0X3Jlc3VsdC52YWx1ZSgpCi0gICAgICAgICAgLT5HZXRJbnRlcm5hbCgpCi0gICAg
ICAgICAgLT5UYWtlT3duZXJzaGlwT2ZSdHBUcmFuc3BvcnRDb250cm9sbGVyKHN0ZDo6bW92ZShj
b250cm9sbGVyKSk7Ci0gICAgfQotICAgIHJldHVybiB0cmFuc3BvcnRfcmVzdWx0OwotICB9Ci19
Ci0KLVJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+Pgot
T3J0Y0ZhY3Rvcnk6OkNyZWF0ZVNydHBUcmFuc3BvcnQoCi0gICAgY29uc3QgUnRwVHJhbnNwb3J0
UGFyYW1ldGVycyYgcGFyYW1ldGVycywKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0
cCwKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0Y3AsCi0gICAgUnRwVHJhbnNwb3J0
Q29udHJvbGxlckludGVyZmFjZSogdHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgUlRDX0RDSEVD
S19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIGNv
cGllZF9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKLSAgaWYgKGNvcGllZF9wYXJhbWV0ZXJzLnJ0
Y3AuY25hbWUuZW1wdHkoKSkgewotICAgIGNvcGllZF9wYXJhbWV0ZXJzLnJ0Y3AuY25hbWUgPSBk
ZWZhdWx0X2NuYW1lXzsKLSAgfQotICBpZiAodHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgICBy
ZXR1cm4gdHJhbnNwb3J0X2NvbnRyb2xsZXItPkdldEludGVybmFsKCktPkNyZWF0ZVByb3hpZWRT
cnRwVHJhbnNwb3J0KAotICAgICAgICBjb3BpZWRfcGFyYW1ldGVycywgcnRwLCBydGNwKTsKLSAg
fSBlbHNlIHsKLSAgICAvLyBJZiB8dHJhbnNwb3J0X2NvbnRyb2xsZXJ8IGlzIG51bGwsIGNyZWF0
ZSBvbmUgYXV0b21hdGljYWxseSwgd2hpY2ggdGhlCi0gICAgLy8gcmV0dXJuZWQgU3J0cFRyYW5z
cG9ydCB3aWxsIG93bi4KLSAgICBhdXRvIGNvbnRyb2xsZXJfcmVzdWx0ID0gQ3JlYXRlUnRwVHJh
bnNwb3J0Q29udHJvbGxlcigpOwotICAgIGlmICghY29udHJvbGxlcl9yZXN1bHQub2soKSkgewot
ICAgICAgcmV0dXJuIGNvbnRyb2xsZXJfcmVzdWx0Lk1vdmVFcnJvcigpOwotICAgIH0KLSAgICBh
dXRvIGNvbnRyb2xsZXIgPSBjb250cm9sbGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRv
IHRyYW5zcG9ydF9yZXN1bHQgPQotICAgICAgICBjb250cm9sbGVyLT5HZXRJbnRlcm5hbCgpLT5D
cmVhdGVQcm94aWVkU3J0cFRyYW5zcG9ydChjb3BpZWRfcGFyYW1ldGVycywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwLCBy
dGNwKTsKLSAgICAvLyBJZiBTcnRwVHJhbnNwb3J0IHdhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCwg
dHJhbnNmZXIgb3duZXJzaGlwIG9mCi0gICAgLy8gfHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcnwu
IE90aGVyd2lzZSBpdCB3aWxsIGdvIG91dCBvZiBzY29wZSBhbmQgYmUKLSAgICAvLyBkZWxldGVk
IGF1dG9tYXRpY2FsbHkuCi0gICAgaWYgKHRyYW5zcG9ydF9yZXN1bHQub2soKSkgewotICAgICAg
dHJhbnNwb3J0X3Jlc3VsdC52YWx1ZSgpCi0gICAgICAgICAgLT5HZXRJbnRlcm5hbCgpCi0gICAg
ICAgICAgLT5UYWtlT3duZXJzaGlwT2ZSdHBUcmFuc3BvcnRDb250cm9sbGVyKHN0ZDo6bW92ZShj
b250cm9sbGVyKSk7Ci0gICAgfQotICAgIHJldHVybiB0cmFuc3BvcnRfcmVzdWx0OwotICB9Ci19
Ci0KLVJ0cENhcGFiaWxpdGllcyBPcnRjRmFjdG9yeTo6R2V0UnRwU2VuZGVyQ2FwYWJpbGl0aWVz
KAotICAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0tfUlVO
X09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBjcmlj
a2V0OjpNRURJQV9UWVBFX0FVRElPOiB7Ci0gICAgICBjcmlja2V0OjpBdWRpb0NvZGVjcyBjcmlj
a2V0X2NvZGVjczsKLSAgICAgIGNyaWNrZXQ6OlJ0cEhlYWRlckV4dGVuc2lvbnMgY3JpY2tldF9l
eHRlbnNpb25zOwotICAgICAgY2hhbm5lbF9tYW5hZ2VyXy0+R2V0U3VwcG9ydGVkQXVkaW9TZW5k
Q29kZWNzKCZjcmlja2V0X2NvZGVjcyk7Ci0gICAgICBjaGFubmVsX21hbmFnZXJfLT5HZXRTdXBw
b3J0ZWRBdWRpb1J0cEhlYWRlckV4dGVuc2lvbnMoCi0gICAgICAgICAgJmNyaWNrZXRfZXh0ZW5z
aW9ucyk7Ci0gICAgICByZXR1cm4gVG9SdHBDYXBhYmlsaXRpZXNXaXRoQXNzZXJ0cyhjcmlja2V0
X2NvZGVjcywgY3JpY2tldF9leHRlbnNpb25zKTsKLSAgICB9Ci0gICAgY2FzZSBjcmlja2V0OjpN
RURJQV9UWVBFX1ZJREVPOiB7Ci0gICAgICBjcmlja2V0OjpWaWRlb0NvZGVjcyBjcmlja2V0X2Nv
ZGVjczsKLSAgICAgIGNyaWNrZXQ6OlJ0cEhlYWRlckV4dGVuc2lvbnMgY3JpY2tldF9leHRlbnNp
b25zOwotICAgICAgY2hhbm5lbF9tYW5hZ2VyXy0+R2V0U3VwcG9ydGVkVmlkZW9Db2RlY3MoJmNy
aWNrZXRfY29kZWNzKTsKLSAgICAgIGNoYW5uZWxfbWFuYWdlcl8tPkdldFN1cHBvcnRlZFZpZGVv
UnRwSGVhZGVyRXh0ZW5zaW9ucygKLSAgICAgICAgICAmY3JpY2tldF9leHRlbnNpb25zKTsKLSAg
ICAgIHJldHVybiBUb1J0cENhcGFiaWxpdGllc1dpdGhBc3NlcnRzKGNyaWNrZXRfY29kZWNzLCBj
cmlja2V0X2V4dGVuc2lvbnMpOwotICAgIH0KLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVf
REFUQToKLSAgICAgIHJldHVybiBSdHBDYXBhYmlsaXRpZXMoKTsKLSAgfQotICAvLyBOb3QgcmVh
Y2hlZDsgYXZvaWRzIGNvbXBpbGUgd2FybmluZy4KLSAgRkFUQUwoKTsKLX0KLQotUlRDRXJyb3JP
cjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVyZmFjZT4+Ci1PcnRjRmFjdG9yeTo6
Q3JlYXRlUnRwU2VuZGVyKAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbVRyYWNr
SW50ZXJmYWNlPiB0cmFjaywKLSAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkg
ewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIGlmICghdHJhY2sp
IHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1F
VEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBudWxsIHRyYWNrIGlu
dG8gQ3JlYXRlUnRwU2VuZGVyLiIpOwotICB9Ci0gIGF1dG8gcmVzdWx0ID0KLSAgICAgIENyZWF0
ZVJ0cFNlbmRlcihjcmlja2V0OjpNZWRpYVR5cGVGcm9tU3RyaW5nKHRyYWNrLT5raW5kKCkpLCB0
cmFuc3BvcnQpOwotICBpZiAoIXJlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAg
fQotICBhdXRvIGVyciA9IHJlc3VsdC52YWx1ZSgpLT5TZXRUcmFjayh0cmFjayk7Ci0gIGlmICgh
ZXJyLm9rKCkpIHsKLSAgICByZXR1cm4gc3RkOjptb3ZlKGVycik7Ci0gIH0KLSAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVy
ZmFjZT4+Ci1PcnRjRmFjdG9yeTo6Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1lZGlhVHlwZSBr
aW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2Uq
IHRyYW5zcG9ydCkgewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0g
IGlmIChraW5kID09IGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQSkgewotICAgIExPR19BTkRfUkVU
VVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIkNhbm5vdCBjcmVhdGUgZGF0YSBSdHBTZW5kZXIuIik7Ci0gIH0KLSAgaWYg
KCF0cmFuc3BvcnQpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklO
VkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBu
dWxsIHRyYW5zcG9ydCBpbnRvIENyZWF0ZVJ0cFNlbmRlci4iKTsKLSAgfQotICByZXR1cm4gdHJh
bnNwb3J0LT5HZXRJbnRlcm5hbCgpCi0gICAgICAtPnJ0cF90cmFuc3BvcnRfY29udHJvbGxlcigp
Ci0gICAgICAtPkNyZWF0ZVByb3hpZWRSdHBTZW5kZXIoa2luZCwgdHJhbnNwb3J0KTsKLX0KLQot
UnRwQ2FwYWJpbGl0aWVzIE9ydGNGYWN0b3J5OjpHZXRSdHBSZWNlaXZlckNhcGFiaWxpdGllcygK
LSAgICBjcmlja2V0OjpNZWRpYVR5cGUga2luZCkgY29uc3QgewotICBSVENfRENIRUNLX1JVTl9P
TihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgY3JpY2tl
dDo6TUVESUFfVFlQRV9BVURJTzogewotICAgICAgY3JpY2tldDo6QXVkaW9Db2RlY3MgY3JpY2tl
dF9jb2RlY3M7Ci0gICAgICBjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb25zIGNyaWNrZXRfZXh0
ZW5zaW9uczsKLSAgICAgIGNoYW5uZWxfbWFuYWdlcl8tPkdldFN1cHBvcnRlZEF1ZGlvUmVjZWl2
ZUNvZGVjcygmY3JpY2tldF9jb2RlY3MpOwotICAgICAgY2hhbm5lbF9tYW5hZ2VyXy0+R2V0U3Vw
cG9ydGVkQXVkaW9SdHBIZWFkZXJFeHRlbnNpb25zKAotICAgICAgICAgICZjcmlja2V0X2V4dGVu
c2lvbnMpOwotICAgICAgcmV0dXJuIFRvUnRwQ2FwYWJpbGl0aWVzV2l0aEFzc2VydHMoY3JpY2tl
dF9jb2RlY3MsIGNyaWNrZXRfZXh0ZW5zaW9ucyk7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tldDo6
TUVESUFfVFlQRV9WSURFTzogewotICAgICAgY3JpY2tldDo6VmlkZW9Db2RlY3MgY3JpY2tldF9j
b2RlY3M7Ci0gICAgICBjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb25zIGNyaWNrZXRfZXh0ZW5z
aW9uczsKLSAgICAgIGNoYW5uZWxfbWFuYWdlcl8tPkdldFN1cHBvcnRlZFZpZGVvQ29kZWNzKCZj
cmlja2V0X2NvZGVjcyk7Ci0gICAgICBjaGFubmVsX21hbmFnZXJfLT5HZXRTdXBwb3J0ZWRWaWRl
b1J0cEhlYWRlckV4dGVuc2lvbnMoCi0gICAgICAgICAgJmNyaWNrZXRfZXh0ZW5zaW9ucyk7Ci0g
ICAgICByZXR1cm4gVG9SdHBDYXBhYmlsaXRpZXNXaXRoQXNzZXJ0cyhjcmlja2V0X2NvZGVjcywg
Y3JpY2tldF9leHRlbnNpb25zKTsKLSAgICB9Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBF
X0RBVEE6Ci0gICAgICByZXR1cm4gUnRwQ2FwYWJpbGl0aWVzKCk7Ci0gIH0KLSAgLy8gTm90IHJl
YWNoZWQ7IGF2b2lkcyBjb21waWxlIHdhcm5pbmcuCi0gIEZBVEFMKCk7Ci19Ci0KLVJUQ0Vycm9y
T3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckludGVyZmFjZT4+Ci1PcnRjRmFjdG9y
eTo6Q3JlYXRlUnRwUmVjZWl2ZXIoY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQpIHsK
LSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBpZiAoa2luZCA9PSBj
cmlja2V0OjpNRURJQV9UWVBFX0RBVEEpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENF
cnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJD
YW5ub3QgY3JlYXRlIGRhdGEgUnRwUmVjZWl2ZXIuIik7Ci0gIH0KLSAgaWYgKCF0cmFuc3BvcnQp
IHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1F
VEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBudWxsIHRyYW5zcG9y
dCBpbnRvIENyZWF0ZVJ0cFJlY2VpdmVyLiIpOwotICB9Ci0gIHJldHVybiB0cmFuc3BvcnQtPkdl
dEludGVybmFsKCkKLSAgICAgIC0+cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyKCkKLSAgICAgIC0+
Q3JlYXRlUHJveGllZFJ0cFJlY2VpdmVyKGtpbmQsIHRyYW5zcG9ydCk7Ci19Ci0KLS8vIFVkcFRy
YW5zcG9ydCBleHBlY3RzIGFsbCBtZXRob2RzIHRvIGJlIGNhbGxlZCBvbiBvbmUgdGhyZWFkLCB3
aGljaCBuZWVkcyB0bwotLy8gYmUgdGhlIG5ldHdvcmsgdGhyZWFkLCBzaW5jZSB0aGF0J3Mgd2hl
cmUgaXRzIHNvY2tldCBjYW4gc2FmZWx5IGJlIHVzZWQuIFNvCi0vLyByZXR1cm4gYSBwcm94eSB0
byB0aGUgY3JlYXRlZCBVZHBUcmFuc3BvcnQuCi1CRUdJTl9PV05FRF9QUk9YWV9NQVAoVWRwVHJh
bnNwb3J0KQotUFJPWFlfV09SS0VSX1RIUkVBRF9ERVNUUlVDVE9SKCkKLVBST1hZX1dPUktFUl9D
T05TVE1FVEhPRDAocnRjOjpTb2NrZXRBZGRyZXNzLCBHZXRMb2NhbEFkZHJlc3MpCi1QUk9YWV9X
T1JLRVJfTUVUSE9EMShib29sLCBTZXRSZW1vdGVBZGRyZXNzLCBjb25zdCBydGM6OlNvY2tldEFk
ZHJlc3MmKQotUFJPWFlfV09SS0VSX0NPTlNUTUVUSE9EMChydGM6OlNvY2tldEFkZHJlc3MsIEdl
dFJlbW90ZUFkZHJlc3MpCi1wcm90ZWN0ZWQ6Ci1ydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFs
KiBHZXRJbnRlcm5hbCgpIG92ZXJyaWRlIHsKLSAgcmV0dXJuIGludGVybmFsKCk7Ci19Ci1FTkRf
UFJPWFlfTUFQKCkKLQotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8VWRwVHJhbnNwb3J0SW50
ZXJmYWNlPj4KLU9ydGNGYWN0b3J5OjpDcmVhdGVVZHBUcmFuc3BvcnQoaW50IGZhbWlseSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWluX3BvcnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1heF9wb3J0KSB7Ci0gIFJUQ19EQ0hF
Q0tfUlVOX09OKG5ldHdvcmtfdGhyZWFkXyk7Ci0gIGlmIChmYW1pbHkgIT0gQUZfSU5FVCAmJiBm
YW1pbHkgIT0gQUZfSU5FVDYpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5
cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJBZGRyZXNz
IGZhbWlseSBtdXN0IGJlIEFGX0lORVQgb3IgQUZfSU5FVDYuIik7Ci0gIH0KLSAgaWYgKG1pbl9w
b3J0ID4gbWF4X3BvcnQpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6
OklOVkFMSURfUkFOR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlBvcnQgcmFuZ2UgaW52
YWxpZDsgbWluaW11bSBwb3J0IG11c3QgYmUgbGVzcyB0aGFuICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAib3IgZXF1YWwgdG8gbWF4IHBvcnQuIik7Ci0gIH0KLSAgc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNvY2tldCgKLSAgICAgIHNvY2tldF9mYWN0b3J5Xy0+
Q3JlYXRlVWRwU29ja2V0KAotICAgICAgICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyhydGM6OkdldEFu
eUlQKGZhbWlseSksIDApLCBtaW5fcG9ydCwgbWF4X3BvcnQpKTsKLSAgaWYgKCFzb2NrZXQpIHsK
LSAgICAvLyBPbmx5IGxvZyBhdCB3YXJuaW5nIGxldmVsLCBiZWNhdXNlIHRoaXMgbWV0aG9kIG1h
eSBiZSBjYWxsZWQgd2l0aAotICAgIC8vIHNwZWNpZmljIHBvcnQgcmFuZ2VzIHRvIGRldGVybWlu
ZSBpZiBhIHBvcnQgaXMgYXZhaWxhYmxlLCBleHBlY3RpbmcgdGhlCi0gICAgLy8gcG9zc2liaWxp
dHkgb2YgYW4gZXJyb3IuCi0gICAgTE9HX0FORF9SRVRVUk5fRVJST1JfRVgoUlRDRXJyb3JUeXBl
OjpSRVNPVVJDRV9FWEhBVVNURUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxvY2Fs
IHNvY2tldCBhbGxvY2F0aW9uIGZhaWx1cmUuIiwgTFNfV0FSTklORyk7Ci0gIH0KLSAgUlRDX0xP
RyhMU19JTkZPKSA8PCAiQ3JlYXRlZCBVRFAgc29ja2V0IHdpdGggYWRkcmVzcyAiCi0gICAgICAg
ICAgICAgICAgICAgPDwgc29ja2V0LT5HZXRMb2NhbEFkZHJlc3MoKS5Ub1NlbnNpdGl2ZVN0cmlu
ZygpIDw8ICIuIjsKLSAgLy8gTWFrZSBhIHVuaXF1ZSBkZWJ1ZyBuYW1lIChmb3IgbG9nZ2luZy9k
aWFnbm9zdGljcyBvbmx5KS4KLSAgcnRjOjpTdHJpbmdCdWlsZGVyIG9zczsKLSAgc3RhdGljIGlu
dCB1ZHBfaWQgPSAwOwotICBvc3MgPDwgInVkcCIgPDwgdWRwX2lkKys7Ci0gIHJldHVybiBVZHBU
cmFuc3BvcnRQcm94eVdpdGhJbnRlcm5hbDxjcmlja2V0OjpVZHBUcmFuc3BvcnQ+OjpDcmVhdGUo
Ci0gICAgICBzaWduYWxpbmdfdGhyZWFkXywgbmV0d29ya190aHJlYWRfLAotICAgICAgc3RkOjp1
bmlxdWVfcHRyPGNyaWNrZXQ6OlVkcFRyYW5zcG9ydD4oCi0gICAgICAgICAgbmV3IGNyaWNrZXQ6
OlVkcFRyYW5zcG9ydChvc3Muc3RyKCksIHN0ZDo6bW92ZShzb2NrZXQpKSkpOwotfQotCi1ydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9Tb3VyY2VJbnRlcmZhY2U+IE9ydGNGYWN0b3J5OjpDcmVhdGVB
dWRpb1NvdXJjZSgKLSAgICBjb25zdCBjcmlja2V0OjpBdWRpb09wdGlvbnMmIG9wdGlvbnMpIHsK
LSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICByZXR1cm4gcnRjOjpz
Y29wZWRfcmVmcHRyPExvY2FsQXVkaW9Tb3VyY2U+KAotICAgICAgTG9jYWxBdWRpb1NvdXJjZTo6
Q3JlYXRlKCZvcHRpb25zKSk7Ci19Ci0KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlb1RyYWNrSW50
ZXJmYWNlPiBPcnRjRmFjdG9yeTo6Q3JlYXRlVmlkZW9UcmFjaygKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyYgaWQsCi0gICAgVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZSogc291cmNlKSB7Ci0gIFJU
Q19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgcnRjOjpzY29wZWRfcmVmcHRy
PFZpZGVvVHJhY2tJbnRlcmZhY2U+IHRyYWNrKAotICAgICAgVmlkZW9UcmFjazo6Q3JlYXRlKGlk
LCBzb3VyY2UsIHdvcmtlcl90aHJlYWRfLmdldCgpKSk7Ci0gIHJldHVybiBWaWRlb1RyYWNrUHJv
eHk6OkNyZWF0ZShzaWduYWxpbmdfdGhyZWFkXywgd29ya2VyX3RocmVhZF8uZ2V0KCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayk7Ci19Ci0KLXJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb1RyYWNrSW50ZXJmYWNlPiBPcnRjRmFjdG9yeTo6Q3JlYXRlQXVkaW9UcmFjaygK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyYgaWQsCi0gICAgQXVkaW9Tb3VyY2VJbnRlcmZhY2UqIHNv
dXJjZSkgewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb1RyYWNrSW50ZXJmYWNlPiB0cmFjayhBdWRpb1RyYWNrOjpDcmVh
dGUoaWQsIHNvdXJjZSkpOwotICByZXR1cm4gQXVkaW9UcmFja1Byb3h5OjpDcmVhdGUoc2lnbmFs
aW5nX3RocmVhZF8sIHRyYWNrKTsKLX0KLQotLy8gc3RhdGljCi1SVENFcnJvck9yPHN0ZDo6dW5p
cXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4+IE9ydGNGYWN0b3J5OjpDcmVhdGVfcygKLSAg
ICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHNpZ25hbGlu
Z190aHJlYWQsCi0gICAgcnRjOjpOZXR3b3JrTWFuYWdlciogbmV0d29ya19tYW5hZ2VyLAotICAg
IHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnksCi0gICAgQXVkaW9EZXZp
Y2VNb2R1bGUqIGFkbSwKLSAgICBjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZSogbWVkaWFf
ZW5naW5lLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRp
b19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZh
Y3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSkgewotICAvLyBBZGQgdGhlIHVuaXF1ZV9wdHIg
d3JhcHBlciBiYWNrLgotICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRl
cmZhY2U+IG93bmVkX21lZGlhX2VuZ2luZSgKLSAgICAgIG1lZGlhX2VuZ2luZSk7Ci0gIHN0ZDo6
dW5pcXVlX3B0cjxPcnRjRmFjdG9yeT4gbmV3X2ZhY3RvcnkobmV3IE9ydGNGYWN0b3J5KAotICAg
ICAgbmV0d29ya190aHJlYWQsIHNpZ25hbGluZ190aHJlYWQsIG5ldHdvcmtfbWFuYWdlciwgc29j
a2V0X2ZhY3RvcnksIGFkbSwKLSAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5KSk7Ci0gIFJUQ0Vycm9yIGVyciA9IG5ld19mYWN0b3J5LT5Jbml0aWFsaXpl
KHN0ZDo6bW92ZShvd25lZF9tZWRpYV9lbmdpbmUpKTsKLSAgaWYgKCFlcnIub2soKSkgewotICAg
IHJldHVybiBzdGQ6Om1vdmUoZXJyKTsKLSAgfQotICAvLyBSZXR1cm4gYSBwcm94eSBzbyB0aGF0
IGFueSBjYWxscyBvbiB0aGUgcmV0dXJuZWQgb2JqZWN0IChpbmNsdWRpbmcKLSAgLy8gZGVzdHJ1
Y3RvcikgaGFwcGVuIG9uIHRoZSBzaWduYWxpbmcgdGhyZWFkLgotICBydGM6OlRocmVhZCogc2ln
bmFsaW5nID0gbmV3X2ZhY3RvcnktPnNpZ25hbGluZ190aHJlYWQoKTsKLSAgcnRjOjpUaHJlYWQq
IG5ldHdvcmsgPSBuZXdfZmFjdG9yeS0+bmV0d29ya190aHJlYWQoKTsKLSAgcmV0dXJuIE9ydGNG
YWN0b3J5UHJveHk6OkNyZWF0ZShzaWduYWxpbmcsIG5ldHdvcmssIHN0ZDo6bW92ZShuZXdfZmFj
dG9yeSkpOwotfQotCi1SVENFcnJvciBPcnRjRmFjdG9yeTo6SW5pdGlhbGl6ZSgKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2VuZ2luZSkg
ewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIC8vIFRPRE8oZGVh
ZGJlZWYpOiBHZXQgcmlkIG9mIHJlcXVpcmVtZW50IHRvIGhvcCB0byB3b3JrZXIgdGhyZWFkIGhl
cmUuCi0gIGlmICghbWVkaWFfZW5naW5lKSB7Ci0gICAgbWVkaWFfZW5naW5lID0KLSAgICAgICAg
d29ya2VyX3RocmVhZF8tPkludm9rZTxzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdp
bmVJbnRlcmZhY2U+PigKLSAgICAgICAgICAgIFJUQ19GUk9NX0hFUkUsIHJ0Yzo6QmluZCgmT3J0
Y0ZhY3Rvcnk6OkNyZWF0ZU1lZGlhRW5naW5lX3csIHRoaXMpKTsKLSAgfQotCi0gIGNoYW5uZWxf
bWFuYWdlcl8ucmVzZXQobmV3IGNyaWNrZXQ6OkNoYW5uZWxNYW5hZ2VyKAotICAgICAgc3RkOjpt
b3ZlKG1lZGlhX2VuZ2luZSksIGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OlJ0cERhdGFFbmdp
bmU+KCksCi0gICAgICB3b3JrZXJfdGhyZWFkXy5nZXQoKSwgbmV0d29ya190aHJlYWRfKSk7Ci0g
IGNoYW5uZWxfbWFuYWdlcl8tPlNldFZpZGVvUnR4RW5hYmxlZCh0cnVlKTsKLSAgaWYgKCFjaGFu
bmVsX21hbmFnZXJfLT5Jbml0KCkpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJv
clR5cGU6OklOVEVSTkFMX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQg
dG8gaW5pdGlhbGl6ZSBDaGFubmVsTWFuYWdlci4iKTsKLSAgfQotICByZXR1cm4gUlRDRXJyb3I6
Ok9LKCk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFj
ZT4KLU9ydGNGYWN0b3J5OjpDcmVhdGVNZWRpYUVuZ2luZV93KCkgewotICBSVENfRENIRUNLX1JV
Tl9PTih3b3JrZXJfdGhyZWFkXy5nZXQoKSk7Ci0gIC8vIFRoZSBudWxsIGFyZ3VtZW50cyBhcmUg
b3B0aW9uYWwgZmFjdG9yaWVzIHRoYXQgY291bGQgYmUgcGFzc2VkIGludG8gdGhlCi0gIC8vIE9y
dGNGYWN0b3J5LCBidXQgYXJlbid0IHlldC4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0IHxhZG1ffCBt
YXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgZGVmYXVsdAot
ICAvLyBBdWRpb0RldmljZU1vZHVsZSB3aWxsIGJlIHVzZWQuCi0gIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+KAotICAgICAgY3JpY2tldDo6V2Vi
UnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCi0gICAgICAgICAgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGU+KGFkbV8pLAotICAgICAgICAgIGF1ZGlvX2Vu
Y29kZXJfZmFjdG9yeV8sIGF1ZGlvX2RlY29kZXJfZmFjdG9yeV8sCi0gICAgICAgICAgd2VicnRj
OjpDcmVhdGVCdWlsdGluVmlkZW9FbmNvZGVyRmFjdG9yeSgpLAotICAgICAgICAgIHdlYnJ0Yzo6
Q3JlYXRlQnVpbHRpblZpZGVvRGVjb2RlckZhY3RvcnkoKSwgbnVsbHB0ciwKLSAgICAgICAgICB3
ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKSkpOwotfQotCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9vcnRjL29ydGNmYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNmYWN0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ3MmY2MTIxZGJiZDkyYTM4ZTY5YWY1Y2E3MDNjODFhNDM1ODIzMmUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgT1JU
Q19PUlRDRkFDVE9SWV9IXwotI2RlZmluZSBPUlRDX09SVENGQUNUT1JZX0hfCi0KLSNpbmNsdWRl
IDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVkZSAiYXBpL29ydGMvb3J0Y2Zh
Y3RvcnlpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhZW5naW5lLmgiCi0j
aW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lLmgiCi0jaW5jbHVkZSAicGMv
Y2hhbm5lbG1hbmFnZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKLQotbmFtZXNwYWNlIHdlYnJ0
YyB7Ci0KLS8vIEltcGxlbWVudGF0aW9uIG9mIE9ydGNGYWN0b3J5SW50ZXJmYWNlLgotLy8KLS8v
IFNlZSBvcnRjZmFjdG9yeWludGVyZmFjZS5oIGZvciBkb2N1bWVudGF0aW9uLgotY2xhc3MgT3J0
Y0ZhY3RvcnkgOiBwdWJsaWMgT3J0Y0ZhY3RvcnlJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgfk9y
dGNGYWN0b3J5KCkgb3ZlcnJpZGU7Ci0KLSAgLy8gSW50ZXJuYWwtb25seSBDcmVhdGUgbWV0aG9k
IHRoYXQgYWxsb3dzIHBhc3NpbmcgaW4gYSBmYWtlIG1lZGlhIGVuZ2luZSwKLSAgLy8gZm9yIHRl
c3RpbmcuCi0gIHN0YXRpYyBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUlu
dGVyZmFjZT4+IENyZWF0ZSgKLSAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAg
ICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgICAgcnRjOjpOZXR3b3JrTWFu
YWdlciogbmV0d29ya19tYW5hZ2VyLAotICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBz
b2NrZXRfZmFjdG9yeSwKLSAgICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG0sCi0gICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2VuZ2luZSwK
LSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNv
ZGVyX2ZhY3RvcnksCi0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9y
eT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KTsKLQotICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0
cjxSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlPj4KLSAgQ3JlYXRlUnRwVHJhbnNwb3J0
Q29udHJvbGxlcigpIG92ZXJyaWRlOwotCi0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFJ0
cFRyYW5zcG9ydEludGVyZmFjZT4+IENyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIGNvbnN0IFJ0
cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJ
bnRlcmZhY2UqIHJ0cCwKLSAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAg
ICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UqIHRyYW5zcG9ydF9jb250cm9sbGVy
KSBvdmVycmlkZTsKLQotICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0
SW50ZXJmYWNlPj4gQ3JlYXRlU3J0cFRyYW5zcG9ydCgKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9y
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2Uq
IHJ0cCwKLSAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICAgIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UqIHRyYW5zcG9ydF9jb250cm9sbGVyKSBvdmVycmlk
ZTsKLQotICBSdHBDYXBhYmlsaXRpZXMgR2V0UnRwU2VuZGVyQ2FwYWJpbGl0aWVzKAotICAgICAg
Y3JpY2tldDo6TWVkaWFUeXBlIGtpbmQpIGNvbnN0IG92ZXJyaWRlOwotCi0gIFJUQ0Vycm9yT3I8
c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PiBDcmVhdGVSdHBTZW5kZXIo
Ci0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4gdHJh
Y2ssCi0gICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgb3ZlcnJpZGU7Ci0K
LSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVyZmFjZT4+IENy
ZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAgICAgUnRw
VHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQpIG92ZXJyaWRlOwotCi0gIFJ0cENhcGFiaWxp
dGllcyBHZXRSdHBSZWNlaXZlckNhcGFiaWxpdGllcygKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhVHlw
ZSBraW5kKSBjb25zdCBvdmVycmlkZTsKLQotICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxP
cnRjUnRwUmVjZWl2ZXJJbnRlcmZhY2U+PiBDcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNr
ZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3Bv
cnQpIG92ZXJyaWRlOwotCi0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFVkcFRyYW5zcG9y
dEludGVyZmFjZT4+Ci0gIENyZWF0ZVVkcFRyYW5zcG9ydChpbnQgZmFtaWx5LCB1aW50MTZfdCBt
aW5fcG9ydCwgdWludDE2X3QgbWF4X3BvcnQpIG92ZXJyaWRlOwotCi0gIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb1NvdXJjZUludGVyZmFjZT4gQ3JlYXRlQXVkaW9Tb3VyY2UoCi0gICAgICBjb25z
dCBjcmlja2V0OjpBdWRpb09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlOwotCi0gIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxWaWRlb1RyYWNrSW50ZXJmYWNlPiBDcmVhdGVWaWRlb1RyYWNrKAotICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIGlkLAotICAgICAgVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZSog
c291cmNlKSBvdmVycmlkZTsKLQotICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9UcmFja0ludGVy
ZmFjZT4gQ3JlYXRlQXVkaW9UcmFjaygKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwKLSAg
ICAgIEF1ZGlvU291cmNlSW50ZXJmYWNlKiBzb3VyY2UpIG92ZXJyaWRlOwotCi0gIHJ0Yzo6VGhy
ZWFkKiBuZXR3b3JrX3RocmVhZCgpIHsgcmV0dXJuIG5ldHdvcmtfdGhyZWFkXzsgfQotICBydGM6
OlRocmVhZCogd29ya2VyX3RocmVhZCgpIHsgcmV0dXJuIHdvcmtlcl90aHJlYWRfLmdldCgpOyB9
Ci0gIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkKCkgeyByZXR1cm4gc2lnbmFsaW5nX3Ro
cmVhZF87IH0KLQotIHByaXZhdGU6Ci0gIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSBPcnRj
RmFjdG9yeUludGVyZmFjZTo6Q3JlYXRlLgotICBPcnRjRmFjdG9yeShydGM6OlRocmVhZCogbmV0
d29ya190aHJlYWQsCi0gICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFk
LAotICAgICAgICAgICAgICBydGM6Ok5ldHdvcmtNYW5hZ2VyKiBuZXR3b3JrX21hbmFnZXIsCi0g
ICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnksCi0g
ICAgICAgICAgICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG0sCi0gICAgICAgICAgICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3Rvcnks
Ci0gICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBh
dWRpb19kZWNvZGVyX2ZhY3RvcnkpOwotCi0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+PgotICBDcmVhdGVSdHBUcmFuc3BvcnRDb250
cm9sbGVyKGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwotCi0gIC8v
IFRocmVhZDo6SW52b2tlIGRvZXNuJ3Qgc3VwcG9ydCBtb3ZlLW9ubHkgYXJndW1lbnRzLCBzbyB3
ZSBuZWVkIHRvIHJlbW92ZQotICAvLyB0aGUgdW5pcXVlX3B0ciB3cmFwcGVyIGZyb20gbWVkaWFf
ZW5naW5lLiBUT0RPKGRlYWRiZWVmKTogRml4IHRoaXMuCi0gIHN0YXRpYyBSVENFcnJvck9yPHN0
ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4+IENyZWF0ZV9zKAotICAgICAgcnRj
OjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190
aHJlYWQsCi0gICAgICBydGM6Ok5ldHdvcmtNYW5hZ2VyKiBuZXR3b3JrX21hbmFnZXIsCi0gICAg
ICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAotICAgICAgQXVkaW9E
ZXZpY2VNb2R1bGUqIGFkbSwKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlKiBt
ZWRpYV9lbmdpbmUsCi0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9y
eT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
RGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSk7Ci0KLSAgLy8gUGVyZm9ybXMg
aW5pdGlhbGl6YXRpb24gdGhhdCBjYW4gZmFpbC4gQ2FsbGVkIGJ5IGZhY3RvcnkgbWV0aG9kIGFm
dGVyCi0gIC8vIGNvbnN0cnVjdGlvbiwgYW5kIGlmIGl0IGZhaWxzLCBubyBvYmplY3QgaXMgcmV0
dXJuZWQuCi0gIFJUQ0Vycm9yIEluaXRpYWxpemUoCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y3Jp
Y2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2VuZ2luZSk7Ci0gIHN0ZDo6dW5pcXVl
X3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gQ3JlYXRlTWVkaWFFbmdpbmVfdygp
OwotCi0gIC8vIFRocmVhZHMgYW5kIG5ldHdvcmtpbmcgb2JqZWN0cy4KLSAgcnRjOjpUaHJlYWQq
IG5ldHdvcmtfdGhyZWFkXzsKLSAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWRfOwotICBy
dGM6Ok5ldHdvcmtNYW5hZ2VyKiBuZXR3b3JrX21hbmFnZXJfOwotICBydGM6OlBhY2tldFNvY2tl
dEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5XzsKLSAgQXVkaW9EZXZpY2VNb2R1bGUqIGFkbV87Ci0g
IC8vIElmIHdlIGNyZWF0ZWQvb3duIHRoZSBvYmplY3RzIGFib3ZlLCB0aGVzZSB3aWxsIGJlIG5v
bi1udWxsIGFuZCB0aHVzIHdpbGwKLSAgLy8gYmUgcmVsZWFzZWQgYXV0b21hdGljYWxseSB1cG9u
IGRlc3RydWN0aW9uLgotICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IG93bmVkX25ldHdv
cmtfdGhyZWFkXzsKLSAgYm9vbCB3cmFwc19zaWduYWxpbmdfdGhyZWFkXyA9IGZhbHNlOwotICBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpOZXR3b3JrTWFuYWdlcj4gb3duZWRfbmV0d29ya19tYW5hZ2Vy
XzsKLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeT4gb3duZWRfc29j
a2V0X2ZhY3RvcnlfOwotICAvLyBXZSBhbHdheXMgb3duIHRoZSB3b3JrZXIgdGhyZWFkLgotICBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHdvcmtlcl90aHJlYWRfOwotICAvLyBNZWRpYS1y
ZWxlYXRlZCBvYmplY3RzLgotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2c+IG51bGxfZXZl
bnRfbG9nXzsKLSAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlv
X2VuY29kZXJfZmFjdG9yeV87Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0
b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnlfOwotICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6
Q2hhbm5lbE1hbmFnZXI+IGNoYW5uZWxfbWFuYWdlcl87Ci0gIC8vIERlZmF1bHQgQ05BTUUgdG8g
dXNlIGZvciBSdHBUcmFuc3BvcnRzIGlmIG5vbmUgaXMgcGFzc2VkIGluLgotICBzdGQ6OnN0cmlu
ZyBkZWZhdWx0X2NuYW1lXzsKLQotICBmcmllbmQgY2xhc3MgT3J0Y0ZhY3RvcnlJbnRlcmZhY2U7
Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihPcnRjRmFjdG9yeSk7Ci19OwotCi19
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gT1JUQ19PUlRDRkFDVE9SWV9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0
Yy9vcnRjZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNmYWN0b3J5X2ludGVncmF0aW9udGVzdC5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJmMjk1MjBlZDhkNzY4ODhhNzE4OTBhNzcx
NTk2N2ExOTExOGYxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNm
YWN0b3J5X2ludGVncmF0aW9udGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDcyNCArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAot
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHV0aWxp
dHk+ICAvLyBGb3Igc3RkOjpwYWlyLCBzdGQ6Om1vdmUuCi0KLSNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiYXBpL2F1
ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImFw
aS9vcnRjL29ydGNmYWN0b3J5aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAib3J0Yy90ZXN0cnRwcGFy
YW1ldGVycy5oIgotI2luY2x1ZGUgInAycC9iYXNlL3VkcHRyYW5zcG9ydC5oIgotI2luY2x1ZGUg
InBjL3Rlc3QvZmFrZWF1ZGlvY2FwdHVyZW1vZHVsZS5oIgotI2luY2x1ZGUgInBjL3Rlc3QvZmFr
ZXBlcmlvZGljdmlkZW90cmFja3NvdXJjZS5oIgotI2luY2x1ZGUgInBjL3Rlc3QvZmFrZXZpZGVv
dHJhY2tyZW5kZXJlci5oIgotI2luY2x1ZGUgInBjL3ZpZGVvdHJhY2tzb3VyY2UuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9mYWtl
bmV0d29yay5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2Uvc3lzdGVtL2FyY2guaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmgiCi0KLW5hbWVzcGFjZSB7Ci0KLWNv
bnN0IGludCBrRGVmYXVsdFRpbWVvdXQgPSAxMDAwMDsgICAgLy8gMTAgc2Vjb25kcy4KLWNvbnN0
IGludCBrUmVjZWl2aW5nRHVyYXRpb24gPSAxMDAwOyAgLy8gMSBzZWNvbmQuCi0KLS8vIERlZmF1
bHQgbnVtYmVyIG9mIGF1ZGlvL3ZpZGVvIGZyYW1lcyB0byB3YWl0IGZvciBiZWZvcmUgY29uc2lk
ZXJpbmcgYSB0ZXN0IGEKLS8vIHN1Y2Nlc3MuCi1jb25zdCBpbnQga0RlZmF1bHROdW1GcmFtZXMg
PSAzOwotY29uc3QgcnRjOjpJUEFkZHJlc3Mga0lQdjRMb2NhbEhvc3RBZGRyZXNzID0KLSAgICBy
dGM6OklQQWRkcmVzcygweDdGMDAwMDAxKTsgIC8vIDEyNy4wLjAuMQotCi1zdGF0aWMgY29uc3Qg
Y2hhciBrVGVzdEtleVBhcmFtczFbXSA9Ci0gICAgImlubGluZTpXVk5mWDE5elpXMWpkR3dnS3Nr
Z2V3a3lNakE3ZlFwOUNuVnViR1Z6IjsKLXN0YXRpYyBjb25zdCBjaGFyIGtUZXN0S2V5UGFyYW1z
MltdID0KLSAgICAiaW5saW5lOlBTMXVRQ1ZlZUNGQ2FuVm1jamtwYXl3ak5XaGNZRDBtWFh0eGFW
QlIiOwotc3RhdGljIGNvbnN0IGNoYXIga1Rlc3RLZXlQYXJhbXMzW10gPQotICAgICJpbmxpbmU6
V1ZOZlgxOXpaVzFqZEd3Z0tza2dld2t5TWpBN2ZRcDlDblZ1YkdWYSI7Ci1zdGF0aWMgY29uc3Qg
Y2hhciBrVGVzdEtleVBhcmFtczRbXSA9Ci0gICAgImlubGluZTpXVk5mWDE5elpXMWpkR3dnS3Nr
Z2V3a3lNakE3ZlFwOUNuVnViR1ZiIjsKLXN0YXRpYyBjb25zdCBjcmlja2V0OjpDcnlwdG9QYXJh
bXMga1Rlc3RDcnlwdG9QYXJhbXMxKDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1Rlc3RLZXlQ
YXJhbXMxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiIpOwotc3RhdGljIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1BhcmFtcyBrVGVzdENyeXB0
b1BhcmFtczIoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJBRVNfQ01fMTI4X0hNQUNfU0hBMV84MCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVGVzdEtleVBhcmFtczIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIik7Ci1z
dGF0aWMgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1zIGtUZXN0Q3J5cHRvUGFyYW1zMygxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFF
U19DTV8xMjhfSE1BQ19TSEExXzgwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtUZXN0S2V5UGFyYW1zMywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiKTsKLXN0YXRpYyBjb25zdCBj
cmlja2V0OjpDcnlwdG9QYXJhbXMga1Rlc3RDcnlwdG9QYXJhbXM0KDEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUVTX0NNXzEyOF9ITUFD
X1NIQTFfODAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga1Rlc3RLZXlQYXJhbXM0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiIpOwotfSAgLy8gbmFtZXNwYWNlCi0KLW5hbWVzcGFj
ZSB3ZWJydGMgewotCi0vLyBVc2VkIHRvIHRlc3QgdGhhdCB0aGluZ3Mgd29yayBlbmQtdG8tZW5k
IHdoZW4gdXNpbmcgdGhlIGRlZmF1bHQKLS8vIGltcGxlbWVudGF0aW9ucyBvZiB0aHJlYWRzL2V0
Yy4gcHJvdmlkZWQgYnkgT3J0Y0ZhY3RvcnksIHdpdGggdGhlIGV4Y2VwdGlvbgotLy8gb2YgdXNp
bmcgYSB2aXJ0dWFsIG5ldHdvcmsuCi0vLwotLy8gQnkgZGVmYXVsdCwgdGhlIHZpcnR1YWwgbmV0
d29yayBtYW5hZ2VyIGRvZXNuJ3QgZW51bWVyYXRlIGFueSBuZXR3b3JrcywgYnV0Ci0vLyBzb2Nr
ZXRzIGNhbiBzdGlsbCBiZSBjcmVhdGVkIGluIHRoaXMgc3RhdGUuCi1jbGFzcyBPcnRjRmFjdG9y
eUludGVncmF0aW9uVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6Ci0gIE9y
dGNGYWN0b3J5SW50ZWdyYXRpb25UZXN0KCkKLSAgICAgIDogbmV0d29ya190aHJlYWRfKCZ2aXJ0
dWFsX3NvY2tldF9zZXJ2ZXJfKSwKLSAgICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTFf
KEZha2VBdWRpb0NhcHR1cmVNb2R1bGU6OkNyZWF0ZSgpKSwKLSAgICAgICAgZmFrZV9hdWRpb19j
YXB0dXJlX21vZHVsZTJfKEZha2VBdWRpb0NhcHR1cmVNb2R1bGU6OkNyZWF0ZSgpKSB7Ci0gICAg
Ly8gU29ja2V0cyBhcmUgYm91bmQgdG8gdGhlIEFOWSBhZGRyZXNzLCBzbyB0aGlzIGlzIG5lZWRl
ZCB0byB0ZWxsIHRoZQotICAgIC8vIHZpcnR1YWwgbmV0d29yayB3aGljaCBhZGRyZXNzIHRvIHVz
ZSBpbiB0aGlzIGNhc2UuCi0gICAgdmlydHVhbF9zb2NrZXRfc2VydmVyXy5TZXREZWZhdWx0Um91
dGUoa0lQdjRMb2NhbEhvc3RBZGRyZXNzKTsKLSAgICBuZXR3b3JrX3RocmVhZF8uU2V0TmFtZSgi
VGVzdE5ldHdvcmtUaHJlYWQiLCB0aGlzKTsKLSAgICBuZXR3b3JrX3RocmVhZF8uU3RhcnQoKTsK
LSAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhZnRlciBuZXR3b3JrIHRocmVhZCBpcyBzdGFydGVkLgot
ICAgIG9ydGNfZmFjdG9yeTFfID0KLSAgICAgICAgT3J0Y0ZhY3RvcnlJbnRlcmZhY2U6OkNyZWF0
ZSgKLSAgICAgICAgICAgICZuZXR3b3JrX3RocmVhZF8sIG51bGxwdHIsICZmYWtlX25ldHdvcmtf
bWFuYWdlcl8sIG51bGxwdHIsCi0gICAgICAgICAgICBmYWtlX2F1ZGlvX2NhcHR1cmVfbW9kdWxl
MV8sIENyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCi0gICAgICAgICAgICBDcmVh
dGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpKQotICAgICAgICAgICAgLk1vdmVWYWx1ZSgp
OwotICAgIG9ydGNfZmFjdG9yeTJfID0KLSAgICAgICAgT3J0Y0ZhY3RvcnlJbnRlcmZhY2U6OkNy
ZWF0ZSgKLSAgICAgICAgICAgICZuZXR3b3JrX3RocmVhZF8sIG51bGxwdHIsICZmYWtlX25ldHdv
cmtfbWFuYWdlcl8sIG51bGxwdHIsCi0gICAgICAgICAgICBmYWtlX2F1ZGlvX2NhcHR1cmVfbW9k
dWxlMl8sIENyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCi0gICAgICAgICAgICBD
cmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpKQotICAgICAgICAgICAgLk1vdmVWYWx1
ZSgpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHR5cGVkZWYgc3RkOjpwYWlyPHN0ZDo6dW5pcXVl
X3B0cjxVZHBUcmFuc3BvcnRJbnRlcmZhY2U+LAotICAgICAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VWRwVHJhbnNwb3J0SW50ZXJmYWNlPj4KLSAgICAgIFVkcFRyYW5zcG9ydFBhaXI7
Ci0gIHR5cGVkZWYgc3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZh
Y2U+LAotICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50
ZXJmYWNlPj4KLSAgICAgIFJ0cFRyYW5zcG9ydFBhaXI7Ci0gIHR5cGVkZWYgc3RkOjpwYWlyPHN0
ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNlPiwKLSAgICAgICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+PgotICAgICAgU3J0cFRy
YW5zcG9ydFBhaXI7Ci0gIHR5cGVkZWYgc3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFu
c3BvcnRDb250cm9sbGVySW50ZXJmYWNlPiwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+PgotICAgICAgUnRwVHJhbnNw
b3J0Q29udHJvbGxlclBhaXI7Ci0KLSAgLy8gSGVscGVyIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBv
bmUgVURQIHRyYW5zcG9ydCBlYWNoIGZvciB8b3J0Y19mYWN0b3J5MV98Ci0gIC8vIGFuZCB8b3J0
Y19mYWN0b3J5Ml98LCBhbmQgY29ubmVjdHMgdGhlbS4KLSAgVWRwVHJhbnNwb3J0UGFpciBDcmVh
dGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigpIHsKLSAgICBhdXRvIHRyYW5zcG9ydDEgPSBv
cnRjX2ZhY3RvcnkxXy0+Q3JlYXRlVWRwVHJhbnNwb3J0KEFGX0lORVQpLk1vdmVWYWx1ZSgpOwot
ICAgIGF1dG8gdHJhbnNwb3J0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVVZHBUcmFuc3BvcnQo
QUZfSU5FVCkuTW92ZVZhbHVlKCk7Ci0gICAgdHJhbnNwb3J0MS0+U2V0UmVtb3RlQWRkcmVzcygK
LSAgICAgICAgcnRjOjpTb2NrZXRBZGRyZXNzKHZpcnR1YWxfc29ja2V0X3NlcnZlcl8uR2V0RGVm
YXVsdFJvdXRlKEFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0
Mi0+R2V0TG9jYWxBZGRyZXNzKCkucG9ydCgpKSk7Ci0gICAgdHJhbnNwb3J0Mi0+U2V0UmVtb3Rl
QWRkcmVzcygKLSAgICAgICAgcnRjOjpTb2NrZXRBZGRyZXNzKHZpcnR1YWxfc29ja2V0X3NlcnZl
cl8uR2V0RGVmYXVsdFJvdXRlKEFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNwb3J0MS0+R2V0TG9jYWxBZGRyZXNzKCkucG9ydCgpKSk7Ci0gICAgcmV0dXJuIHtzdGQ6
Om1vdmUodHJhbnNwb3J0MSksIHN0ZDo6bW92ZSh0cmFuc3BvcnQyKX07Ci0gIH0KLQotICAvLyBD
cmVhdGVzIG9uZSB0cmFuc3BvcnQgY29udHJvbGxlciBlYWNoIGZvciB8b3J0Y19mYWN0b3J5MV98
IGFuZAotICAvLyB8b3J0Y19mYWN0b3J5Ml98LgotICBSdHBUcmFuc3BvcnRDb250cm9sbGVyUGFp
ciBDcmVhdGVSdHBUcmFuc3BvcnRDb250cm9sbGVyUGFpcigpIHsKLSAgICByZXR1cm4ge29ydGNf
ZmFjdG9yeTFfLT5DcmVhdGVSdHBUcmFuc3BvcnRDb250cm9sbGVyKCkuTW92ZVZhbHVlKCksCi0g
ICAgICAgICAgICBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcigp
Lk1vdmVWYWx1ZSgpfTsKLSAgfQotCi0gIC8vIEhlbHBlciBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMg
YSBwYWlyIG9mIFJ0cFRyYW5zcG9ydHMgYmV0d2VlbgotICAvLyB8b3J0Y19mYWN0b3J5MV98IGFu
ZCB8b3J0Y19mYWN0b3J5Ml98LiBFeHBlY3RlZCB0byBiZSBjYWxsZWQgd2l0aCB0aGUKLSAgLy8g
cmVzdWx0IG9mIENyZWF0ZUFuZENvbm5lY3RVZHBUcmFuc3BvcnRQYWlyLiB8cnRjcF91ZHBfdHJh
bnNwb3J0c3wgY2FuIGJlCi0gIC8vIGVtcHR5IGlmIFJUQ1AgbXV4aW5nIGlzIHVzZWQuIHx0cmFu
c3BvcnRfY29udHJvbGxlcnN8IGNhbiBiZSBlbXB0eSBpZgotICAvLyB0aGVzZSB0cmFuc3BvcnRz
IGFyZSBiZWluZyBjcmVhdGVkIHVzaW5nIGEgZGVmYXVsdCB0cmFuc3BvcnQgY29udHJvbGxlci4K
LSAgUnRwVHJhbnNwb3J0UGFpciBDcmVhdGVSdHBUcmFuc3BvcnRQYWlyKAotICAgICAgY29uc3Qg
UnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywKLSAgICAgIGNvbnN0IFVkcFRyYW5z
cG9ydFBhaXImIHJ0cF91ZHBfdHJhbnNwb3J0cywKLSAgICAgIGNvbnN0IFVkcFRyYW5zcG9ydFBh
aXImIHJ0Y3BfdWRwX3RyYW5zcG9ydHMsCi0gICAgICBjb25zdCBSdHBUcmFuc3BvcnRDb250cm9s
bGVyUGFpciYgdHJhbnNwb3J0X2NvbnRyb2xsZXJzKSB7Ci0gICAgYXV0byB0cmFuc3BvcnRfcmVz
dWx0MSA9IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICAgIHBhcmFt
ZXRlcnMsIHJ0cF91ZHBfdHJhbnNwb3J0cy5maXJzdC5nZXQoKSwKLSAgICAgICAgcnRjcF91ZHBf
dHJhbnNwb3J0cy5maXJzdC5nZXQoKSwgdHJhbnNwb3J0X2NvbnRyb2xsZXJzLmZpcnN0LmdldCgp
KTsKLSAgICBhdXRvIHRyYW5zcG9ydF9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0
cFRyYW5zcG9ydCgKLSAgICAgICAgcGFyYW1ldGVycywgcnRwX3VkcF90cmFuc3BvcnRzLnNlY29u
ZC5nZXQoKSwKLSAgICAgICAgcnRjcF91ZHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCksIHRyYW5z
cG9ydF9jb250cm9sbGVycy5zZWNvbmQuZ2V0KCkpOwotICAgIHJldHVybiB7dHJhbnNwb3J0X3Jl
c3VsdDEuTW92ZVZhbHVlKCksIHRyYW5zcG9ydF9yZXN1bHQyLk1vdmVWYWx1ZSgpfTsKLSAgfQot
Ci0gIFNydHBUcmFuc3BvcnRQYWlyIENyZWF0ZVNydHBUcmFuc3BvcnRQYWlyKAotICAgICAgY29u
c3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywKLSAgICAgIGNvbnN0IFVkcFRy
YW5zcG9ydFBhaXImIHJ0cF91ZHBfdHJhbnNwb3J0cywKLSAgICAgIGNvbnN0IFVkcFRyYW5zcG9y
dFBhaXImIHJ0Y3BfdWRwX3RyYW5zcG9ydHMsCi0gICAgICBjb25zdCBSdHBUcmFuc3BvcnRDb250
cm9sbGVyUGFpciYgdHJhbnNwb3J0X2NvbnRyb2xsZXJzKSB7Ci0gICAgYXV0byB0cmFuc3BvcnRf
cmVzdWx0MSA9IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVTcnRwVHJhbnNwb3J0KAotICAgICAgICBw
YXJhbWV0ZXJzLCBydHBfdWRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCksCi0gICAgICAgIHJ0Y3Bf
dWRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCksIHRyYW5zcG9ydF9jb250cm9sbGVycy5maXJzdC5n
ZXQoKSk7Ci0gICAgYXV0byB0cmFuc3BvcnRfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVh
dGVTcnRwVHJhbnNwb3J0KAotICAgICAgICBwYXJhbWV0ZXJzLCBydHBfdWRwX3RyYW5zcG9ydHMu
c2Vjb25kLmdldCgpLAotICAgICAgICBydGNwX3VkcF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSwg
dHJhbnNwb3J0X2NvbnRyb2xsZXJzLnNlY29uZC5nZXQoKSk7Ci0gICAgcmV0dXJuIHt0cmFuc3Bv
cnRfcmVzdWx0MS5Nb3ZlVmFsdWUoKSwgdHJhbnNwb3J0X3Jlc3VsdDIuTW92ZVZhbHVlKCl9Owot
ICB9Ci0KLSAgLy8gRm9yIGNvbnZlbmllbmNlIHdoZW4gfHJ0Y3BfdWRwX3RyYW5zcG9ydHN8IGFu
ZCB8dHJhbnNwb3J0X2NvbnRyb2xsZXJzfAotICAvLyBhcmVuJ3QgbmVlZGVkLgotICBSdHBUcmFu
c3BvcnRQYWlyIENyZWF0ZVJ0cFRyYW5zcG9ydFBhaXIoCi0gICAgICBjb25zdCBSdHBUcmFuc3Bv
cnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgICAgY29uc3QgVWRwVHJhbnNwb3J0UGFpciYg
cnRwX3VkcF90cmFuc3BvcnRzKSB7Ci0gICAgcmV0dXJuIENyZWF0ZVJ0cFRyYW5zcG9ydFBhaXIo
cGFyYW1ldGVycywgcnRwX3VkcF90cmFuc3BvcnRzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVkcFRyYW5zcG9ydFBhaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyUGFpcigpKTsKLSAgfQotCi0gIFNydHBUcmFu
c3BvcnRQYWlyIENyZWF0ZVNydHBUcmFuc3BvcnRQYWlyQW5kU2V0S2V5cygKLSAgICAgIGNvbnN0
IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICBjb25zdCBVZHBUcmFu
c3BvcnRQYWlyJiBydHBfdWRwX3RyYW5zcG9ydHMpIHsKLSAgICBTcnRwVHJhbnNwb3J0UGFpciBz
cnRwX3RyYW5zcG9ydHMgPSBDcmVhdGVTcnRwVHJhbnNwb3J0UGFpcigKLSAgICAgICAgcGFyYW1l
dGVycywgcnRwX3VkcF90cmFuc3BvcnRzLCBVZHBUcmFuc3BvcnRQYWlyKCksCi0gICAgICAgIFJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJQYWlyKCkpOwotICAgIEVYUEVDVF9UUlVFKHNydHBfdHJhbnNw
b3J0cy5maXJzdC0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJhbXMxKS5vaygpKTsKLSAg
ICBFWFBFQ1RfVFJVRSgKLSAgICAgICAgc3J0cF90cmFuc3BvcnRzLmZpcnN0LT5TZXRTcnRwUmVj
ZWl2ZUtleShrVGVzdENyeXB0b1BhcmFtczIpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKAotICAg
ICAgICBzcnRwX3RyYW5zcG9ydHMuc2Vjb25kLT5TZXRTcnRwU2VuZEtleShrVGVzdENyeXB0b1Bh
cmFtczIpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKAotICAgICAgICBzcnRwX3RyYW5zcG9ydHMu
c2Vjb25kLT5TZXRTcnRwUmVjZWl2ZUtleShrVGVzdENyeXB0b1BhcmFtczEpLm9rKCkpOwotICAg
IHJldHVybiBzcnRwX3RyYW5zcG9ydHM7Ci0gIH0KLQotICBTcnRwVHJhbnNwb3J0UGFpciBDcmVh
dGVTcnRwVHJhbnNwb3J0UGFpckFuZFNldE1pc21hdGNoaW5nS2V5cygKLSAgICAgIGNvbnN0IFJ0
cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICBjb25zdCBVZHBUcmFuc3Bv
cnRQYWlyJiBydHBfdWRwX3RyYW5zcG9ydHMpIHsKLSAgICBTcnRwVHJhbnNwb3J0UGFpciBzcnRw
X3RyYW5zcG9ydHMgPSBDcmVhdGVTcnRwVHJhbnNwb3J0UGFpcigKLSAgICAgICAgcGFyYW1ldGVy
cywgcnRwX3VkcF90cmFuc3BvcnRzLCBVZHBUcmFuc3BvcnRQYWlyKCksCi0gICAgICAgIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJQYWlyKCkpOwotICAgIEVYUEVDVF9UUlVFKHNydHBfdHJhbnNwb3J0
cy5maXJzdC0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJhbXMxKS5vaygpKTsKLSAgICBF
WFBFQ1RfVFJVRSgKLSAgICAgICAgc3J0cF90cmFuc3BvcnRzLmZpcnN0LT5TZXRTcnRwUmVjZWl2
ZUtleShrVGVzdENyeXB0b1BhcmFtczIpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKAotICAgICAg
ICBzcnRwX3RyYW5zcG9ydHMuc2Vjb25kLT5TZXRTcnRwU2VuZEtleShrVGVzdENyeXB0b1BhcmFt
czEpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKAotICAgICAgICBzcnRwX3RyYW5zcG9ydHMuc2Vj
b25kLT5TZXRTcnRwUmVjZWl2ZUtleShrVGVzdENyeXB0b1BhcmFtczIpLm9rKCkpOwotICAgIHJl
dHVybiBzcnRwX3RyYW5zcG9ydHM7Ci0gIH0KLQotICAvLyBFbmRzIHVwIHVzaW5nIGZha2UgYXVk
aW8gY2FwdHVyZSBtb2R1bGUsIHdoaWNoIHdhcyBwYXNzZWQgaW50byBPcnRjRmFjdG9yeQotICAv
LyBvbiBjcmVhdGlvbi4KLSAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0lu
dGVyZmFjZT4gQ3JlYXRlTG9jYWxBdWRpb1RyYWNrKAotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGlkLAotICAgICAgT3J0Y0ZhY3RvcnlJbnRlcmZhY2UqIG9ydGNfZmFjdG9yeSkgewotICAgIC8v
IERpc2FibGUgZWNobyBjYW5jZWxsYXRpb24gdG8gbWFrZSB0ZXN0IG1vcmUgZWZmaWNpZW50Lgot
ICAgIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuZWNob19jYW5j
ZWxsYXRpb24uZW1wbGFjZSh0cnVlKTsKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1NvdXJjZUludGVyZmFjZT4gc291cmNlID0KLSAgICAgICAgb3J0Y19mYWN0b3J5LT5DcmVh
dGVBdWRpb1NvdXJjZShvcHRpb25zKTsKLSAgICByZXR1cm4gb3J0Y19mYWN0b3J5LT5DcmVhdGVB
dWRpb1RyYWNrKGlkLCBzb3VyY2UpOwotICB9Ci0KLSAgLy8gU3RvcmVzIGNyZWF0ZWQgdmlkZW8g
c291cmNlIGluIHxmYWtlX3ZpZGVvX3RyYWNrX3NvdXJjZXNffC4KLSAgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4KLSAgQ3JlYXRlTG9jYWxWaWRlb1RyYWNr
QW5kRmFrZVNvdXJjZShjb25zdCBzdGQ6OnN0cmluZyYgaWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgT3J0Y0ZhY3RvcnlJbnRlcmZhY2UqIG9ydGNfZmFjdG9yeSkgewot
ICAgIEZha2VQZXJpb2RpY1ZpZGVvU291cmNlOjpDb25maWcgY29uZmlnOwotICAgIGNvbmZpZy50
aW1lc3RhbXBfb2Zmc2V0X21zID0gcnRjOjpUaW1lTWlsbGlzKCk7Ci0gICAgZmFrZV92aWRlb190
cmFja19zb3VyY2VzXy5lbXBsYWNlX2JhY2soCi0gICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRP
YmplY3Q8RmFrZVBlcmlvZGljVmlkZW9UcmFja1NvdXJjZT4oCi0gICAgICAgICAgICBjb25maWcs
IGZhbHNlIC8qIHJlbW90ZSAqLykpOwotICAgIHJldHVybiBydGM6OnNjb3BlZF9yZWZwdHI8Vmlk
ZW9UcmFja0ludGVyZmFjZT4oCi0gICAgICAgIG9ydGNfZmFjdG9yeS0+Q3JlYXRlVmlkZW9UcmFj
ayhpZCwgZmFrZV92aWRlb190cmFja19zb3VyY2VzXy5iYWNrKCkpKTsKLSAgfQotCi0gIC8vIEhl
bHBlciBmdW5jdGlvbiB1c2VkIHRvIHRlc3QgdHdvIHdheSBSVFAgc2VuZGVycyBhbmQgcmVjZWl2
ZXJzIHdpdGggYmFzaWMKLSAgLy8gY29uZmlndXJhdGlvbnMuCi0gIC8vIElmIHxleHBlY3Rfc3Vj
Y2Vzc3wgaXMgdHJ1ZSwgd2FpdHMgZm9yIGtEZWZhdWx0VGltZW91dCBmb3IKLSAgLy8ga0RlZmF1
bHROdW1GcmFtZXMgZnJhbWVzIHRvIGJlIHJlY2VpdmVkIGJ5IGFsbCBSdHBSZWNlaXZlcnMuCi0g
IC8vIElmIHxleHBlY3Rfc3VjY2Vzc3wgaXMgZmFsc2UsIHNpbXBseSB3YWl0cyBmb3IgfGtSZWNl
aXZpbmdEdXJhdGlvbnwsIGFuZAotICAvLyBzdG9yZXMgdGhlIG51bWJlciBvZiByZWNlaXZlZCBm
cmFtZXMgaW4gfHJlY2VpdmVkX2F1ZGlvX2ZyYW1lMV98IGV0Yy4KLSAgdm9pZCBCYXNpY1R3b1dh
eVJ0cFNlbmRlcnNBbmRSZWNlaXZlcnNUZXN0KFJ0cFRyYW5zcG9ydFBhaXIgc3J0cF90cmFuc3Bv
cnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBl
eHBlY3Rfc3VjY2VzcykgewotICAgIHJlY2VpdmVkX2F1ZGlvX2ZyYW1lczFfID0gMDsKLSAgICBy
ZWNlaXZlZF9hdWRpb19mcmFtZXMyXyA9IDA7Ci0gICAgcmVuZGVyZWRfdmlkZW9fZnJhbWVzMV8g
PSAwOwotICAgIHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczJfID0gMDsKLSAgICAvLyBDcmVhdGUgYWxs
IHRoZSBzZW5kZXJzIGFuZCByZWNlaXZlcnMgKGZvdXIgcGVyIGVuZHBvaW50KS4KLSAgICBhdXRv
IGF1ZGlvX3NlbmRlcl9yZXN1bHQxID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0cFNlbmRlcigK
LSAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgc3J0cF90cmFuc3BvcnRzLmZpcnN0
LmdldCgpKTsKLSAgICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQxID0gb3J0Y19mYWN0b3J5MV8t
PkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgc3J0
cF90cmFuc3BvcnRzLmZpcnN0LmdldCgpKTsKLSAgICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3Vs
dDEgPSBvcnRjX2ZhY3RvcnkxXy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICAgIGNyaWNrZXQ6
Ok1FRElBX1RZUEVfQVVESU8sIHNydHBfdHJhbnNwb3J0cy5maXJzdC5nZXQoKSk7Ci0gICAgYXV0
byB2aWRlb19yZWNlaXZlcl9yZXN1bHQxID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0cFJlY2Vp
dmVyKAotICAgICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBzcnRwX3RyYW5zcG9ydHMu
Zmlyc3QuZ2V0KCkpOwotICAgIEFTU0VSVF9UUlVFKGF1ZGlvX3NlbmRlcl9yZXN1bHQxLm9rKCkp
OwotICAgIEFTU0VSVF9UUlVFKHZpZGVvX3NlbmRlcl9yZXN1bHQxLm9rKCkpOwotICAgIEFTU0VS
VF9UUlVFKGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDEub2soKSk7Ci0gICAgQVNTRVJUX1RSVUUodmlk
ZW9fcmVjZWl2ZXJfcmVzdWx0MS5vaygpKTsKLSAgICBhdXRvIGF1ZGlvX3NlbmRlcjEgPSBhdWRp
b19zZW5kZXJfcmVzdWx0MS5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRvIHZpZGVvX3NlbmRlcjEgPSB2
aWRlb19zZW5kZXJfcmVzdWx0MS5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRvIGF1ZGlvX3JlY2VpdmVy
MSA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDEuTW92ZVZhbHVlKCk7Ci0gICAgYXV0byB2aWRlb19y
ZWNlaXZlcjEgPSB2aWRlb19yZWNlaXZlcl9yZXN1bHQxLk1vdmVWYWx1ZSgpOwotCi0gICAgYXV0
byBhdWRpb19zZW5kZXJfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBTZW5kZXIo
Ci0gICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHNydHBfdHJhbnNwb3J0cy5zZWNv
bmQuZ2V0KCkpOwotICAgIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdDIgPSBvcnRjX2ZhY3Rvcnky
Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBz
cnRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpKTsKLSAgICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jl
c3VsdDIgPSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICAgIGNyaWNr
ZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHNydHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCkpOwotICAg
IGF1dG8gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBS
ZWNlaXZlcigKLSAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgc3J0cF90cmFuc3Bv
cnRzLnNlY29uZC5nZXQoKSk7Ci0gICAgQVNTRVJUX1RSVUUoYXVkaW9fc2VuZGVyX3Jlc3VsdDIu
b2soKSk7Ci0gICAgQVNTRVJUX1RSVUUodmlkZW9fc2VuZGVyX3Jlc3VsdDIub2soKSk7Ci0gICAg
QVNTRVJUX1RSVUUoYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Mi5vaygpKTsKLSAgICBBU1NFUlRfVFJV
RSh2aWRlb19yZWNlaXZlcl9yZXN1bHQyLm9rKCkpOwotICAgIGF1dG8gYXVkaW9fc2VuZGVyMiA9
IGF1ZGlvX3NlbmRlcl9yZXN1bHQyLk1vdmVWYWx1ZSgpOwotICAgIGF1dG8gdmlkZW9fc2VuZGVy
MiA9IHZpZGVvX3NlbmRlcl9yZXN1bHQyLk1vdmVWYWx1ZSgpOwotICAgIGF1dG8gYXVkaW9fcmVj
ZWl2ZXIyID0gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Mi5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRvIHZp
ZGVvX3JlY2VpdmVyMiA9IHZpZGVvX3JlY2VpdmVyX3Jlc3VsdDIuTW92ZVZhbHVlKCk7Ci0KLSAg
ICAvLyBBZGQgZmFrZSB0cmFja3MuCi0gICAgUlRDRXJyb3IgZXJyb3IgPSBhdWRpb19zZW5kZXIx
LT5TZXRUcmFjaygKLSAgICAgICAgQ3JlYXRlTG9jYWxBdWRpb1RyYWNrKCJhdWRpbyIsIG9ydGNf
ZmFjdG9yeTFfLmdldCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0gICAgZXJy
b3IgPSB2aWRlb19zZW5kZXIxLT5TZXRUcmFjaygKLSAgICAgICAgQ3JlYXRlTG9jYWxWaWRlb1Ry
YWNrQW5kRmFrZVNvdXJjZSgidmlkZW8iLCBvcnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwotICAgIEVY
UEVDVF9UUlVFKGVycm9yLm9rKCkpOwotICAgIGVycm9yID0gYXVkaW9fc2VuZGVyMi0+U2V0VHJh
Y2soCi0gICAgICAgIENyZWF0ZUxvY2FsQXVkaW9UcmFjaygiYXVkaW8iLCBvcnRjX2ZhY3Rvcnky
Xy5nZXQoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwotICAgIGVycm9yID0gdmlk
ZW9fc2VuZGVyMi0+U2V0VHJhY2soCi0gICAgICAgIENyZWF0ZUxvY2FsVmlkZW9UcmFja0FuZEZh
a2VTb3VyY2UoInZpZGVvIiwgb3J0Y19mYWN0b3J5Ml8uZ2V0KCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShlcnJvci5vaygpKTsKLQotICAgIC8vICJzZW50X1hfcGFyYW1ldGVyczEiIGFyZSB0aGUgcGFy
YW1ldGVycyB0aGF0IGVuZHBvaW50IDEgc2VuZHMgd2l0aCBhbmQKLSAgICAvLyBlbmRwb2ludCAy
IHJlY2VpdmVzIHdpdGguCi0gICAgUnRwUGFyYW1ldGVycyBzZW50X29wdXNfcGFyYW1ldGVyczEg
PQotICAgICAgICBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aFNzcmMoMHhkZWFkYmVlZik7
Ci0gICAgUnRwUGFyYW1ldGVycyBzZW50X3ZwOF9wYXJhbWV0ZXJzMSA9Ci0gICAgICAgIE1ha2VN
aW5pbWFsVnA4UGFyYW1ldGVyc1dpdGhTc3JjKDB4YmFhZGZlZWQpOwotICAgIFJ0cFBhcmFtZXRl
cnMgc2VudF9vcHVzX3BhcmFtZXRlcnMyID0KLSAgICAgICAgTWFrZU1pbmltYWxPcHVzUGFyYW1l
dGVyc1dpdGhTc3JjKDB4MTMzMzMzMzcpOwotICAgIFJ0cFBhcmFtZXRlcnMgc2VudF92cDhfcGFy
YW1ldGVyczIgPQotICAgICAgICBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoU3NyYygweDEy
MzQ1Njc4KTsKLQotICAgIC8vIENvbmZpZ3VyZSB0aGUgc2VuZGVycycgYW5kIHJlY2VpdmVycycg
cGFyYW1ldGVycy4KLSAgICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlcjEtPlJlY2VpdmUoc2Vu
dF9vcHVzX3BhcmFtZXRlcnMyKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZl
cjEtPlJlY2VpdmUoc2VudF92cDhfcGFyYW1ldGVyczIpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVF
KGF1ZGlvX3JlY2VpdmVyMi0+UmVjZWl2ZShzZW50X29wdXNfcGFyYW1ldGVyczEpLm9rKCkpOwot
ICAgIEVYUEVDVF9UUlVFKHZpZGVvX3JlY2VpdmVyMi0+UmVjZWl2ZShzZW50X3ZwOF9wYXJhbWV0
ZXJzMSkub2soKSk7Ci0gICAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyMS0+U2VuZChzZW50X29w
dXNfcGFyYW1ldGVyczEpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlcjEtPlNl
bmQoc2VudF92cDhfcGFyYW1ldGVyczEpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKGF1ZGlvX3Nl
bmRlcjItPlNlbmQoc2VudF9vcHVzX3BhcmFtZXRlcnMyKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJV
RSh2aWRlb19zZW5kZXIyLT5TZW5kKHNlbnRfdnA4X3BhcmFtZXRlcnMyKS5vaygpKTsKLQotICAg
IEZha2VWaWRlb1RyYWNrUmVuZGVyZXIgZmFrZV92aWRlb19yZW5kZXJlcjEoCi0gICAgICAgIHN0
YXRpY19jYXN0PFZpZGVvVHJhY2tJbnRlcmZhY2UqPih2aWRlb19yZWNlaXZlcjEtPkdldFRyYWNr
KCkuZ2V0KCkpKTsKLSAgICBGYWtlVmlkZW9UcmFja1JlbmRlcmVyIGZha2VfdmlkZW9fcmVuZGVy
ZXIyKAotICAgICAgICBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrSW50ZXJmYWNlKj4odmlkZW9fcmVj
ZWl2ZXIyLT5HZXRUcmFjaygpLmdldCgpKSk7Ci0KLSAgICBpZiAoZXhwZWN0X3N1Y2Nlc3MpIHsK
LSAgICAgIEVYUEVDVF9UUlVFX1dBSVQoCi0gICAgICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21v
ZHVsZTFfLT5mcmFtZXNfcmVjZWl2ZWQoKSA+IGtEZWZhdWx0TnVtRnJhbWVzICYmCi0gICAgICAg
ICAgICAgIGZha2VfdmlkZW9fcmVuZGVyZXIxLm51bV9yZW5kZXJlZF9mcmFtZXMoKSA+IGtEZWZh
dWx0TnVtRnJhbWVzICYmCi0gICAgICAgICAgICAgIGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUy
Xy0+ZnJhbWVzX3JlY2VpdmVkKCkgPgotICAgICAgICAgICAgICAgICAga0RlZmF1bHROdW1GcmFt
ZXMgJiYKLSAgICAgICAgICAgICAgZmFrZV92aWRlb19yZW5kZXJlcjIubnVtX3JlbmRlcmVkX2Zy
YW1lcygpID4ga0RlZmF1bHROdW1GcmFtZXMsCi0gICAgICAgICAga0RlZmF1bHRUaW1lb3V0KQot
ICAgICAgICAgIDw8ICJBdWRpbyBjYXB0dXJlIG1vZHVsZSAxIHJlY2VpdmVkICIKLSAgICAgICAg
ICA8PCBmYWtlX2F1ZGlvX2NhcHR1cmVfbW9kdWxlMV8tPmZyYW1lc19yZWNlaXZlZCgpCi0gICAg
ICAgICAgPDwgIiBmcmFtZXMsIFZpZGVvIHJlbmRlcmVyIDEgcmVuZGVyZWQgIgotICAgICAgICAg
IDw8IGZha2VfdmlkZW9fcmVuZGVyZXIxLm51bV9yZW5kZXJlZF9mcmFtZXMoKQotICAgICAgICAg
IDw8ICIgZnJhbWVzLCBBdWRpbyBjYXB0dXJlIG1vZHVsZSAyIHJlY2VpdmVkICIKLSAgICAgICAg
ICA8PCBmYWtlX2F1ZGlvX2NhcHR1cmVfbW9kdWxlMl8tPmZyYW1lc19yZWNlaXZlZCgpCi0gICAg
ICAgICAgPDwgIiBmcmFtZXMsIFZpZGVvIHJlbmRlcmVyIDIgcmVuZGVyZWQgIgotICAgICAgICAg
IDw8IGZha2VfdmlkZW9fcmVuZGVyZXIyLm51bV9yZW5kZXJlZF9mcmFtZXMoKSA8PCAiIGZyYW1l
cy4iOwotICAgIH0gZWxzZSB7Ci0gICAgICBXQUlUKGZhbHNlLCBrUmVjZWl2aW5nRHVyYXRpb24p
OwotICAgICAgcmVuZGVyZWRfdmlkZW9fZnJhbWVzMV8gPSBmYWtlX3ZpZGVvX3JlbmRlcmVyMS5u
dW1fcmVuZGVyZWRfZnJhbWVzKCk7Ci0gICAgICByZW5kZXJlZF92aWRlb19mcmFtZXMyXyA9IGZh
a2VfdmlkZW9fcmVuZGVyZXIyLm51bV9yZW5kZXJlZF9mcmFtZXMoKTsKLSAgICAgIHJlY2VpdmVk
X2F1ZGlvX2ZyYW1lczFfID0gZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTFfLT5mcmFtZXNfcmVj
ZWl2ZWQoKTsKLSAgICAgIHJlY2VpdmVkX2F1ZGlvX2ZyYW1lczJfID0gZmFrZV9hdWRpb19jYXB0
dXJlX21vZHVsZTJfLT5mcmFtZXNfcmVjZWl2ZWQoKTsKLSAgICB9Ci0gIH0KLQotICBydGM6OlZp
cnR1YWxTb2NrZXRTZXJ2ZXIgdmlydHVhbF9zb2NrZXRfc2VydmVyXzsKLSAgcnRjOjpUaHJlYWQg
bmV0d29ya190aHJlYWRfOwotICBydGM6OkZha2VOZXR3b3JrTWFuYWdlciBmYWtlX25ldHdvcmtf
bWFuYWdlcl87Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGYWtlQXVkaW9DYXB0dXJlTW9kdWxlPiBm
YWtlX2F1ZGlvX2NhcHR1cmVfbW9kdWxlMV87Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGYWtlQXVk
aW9DYXB0dXJlTW9kdWxlPiBmYWtlX2F1ZGlvX2NhcHR1cmVfbW9kdWxlMl87Ci0gIHN0ZDo6dW5p
cXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4gb3J0Y19mYWN0b3J5MV87Ci0gIHN0ZDo6dW5p
cXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4gb3J0Y19mYWN0b3J5Ml87Ci0gIHN0ZDo6dmVj
dG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlb1RyYWNrU291cmNlPj4gZmFrZV92aWRlb190cmFj
a19zb3VyY2VzXzsKLSAgaW50IHJlY2VpdmVkX2F1ZGlvX2ZyYW1lczFfID0gMDsKLSAgaW50IHJl
Y2VpdmVkX2F1ZGlvX2ZyYW1lczJfID0gMDsKLSAgaW50IHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczFf
ID0gMDsKLSAgaW50IHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczJfID0gMDsKLX07Ci0KLS8vIERpc2Fi
bGUgZm9yIFRTYW4gdjIsIHNlZQotLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3dlYnJ0
Yy9pc3N1ZXMvZGV0YWlsP2lkPTczNjYgZm9yIGRldGFpbHMuCi0jaWYgIWRlZmluZWQoVEhSRUFE
X1NBTklUSVpFUikKLQotLy8gVmVyeSBiYXNpYyBlbmQtdG8tZW5kIHRlc3Qgd2l0aCBhIHNpbmds
ZSBwYWlyIG9mIGF1ZGlvIFJUUCBzZW5kZXIgYW5kCi0vLyByZWNlaXZlci4KLS8vCi0vLyBVc2Vz
IG11eGVkIFJUQ1AsIGFuZCBtaW5pbWFsIHBhcmFtZXRlcnMgd2l0aCBhIGhhcmQtY29kZWQgY29u
ZmlnIHRoYXQncwotLy8ga25vd24gdG8gd29yay4KLVRFU1RfRihPcnRjRmFjdG9yeUludGVncmF0
aW9uVGVzdCwgQmFzaWNPbmVXYXlBdWRpb1J0cFNlbmRlckFuZFJlY2VpdmVyKSB7Ci0gIGF1dG8g
dWRwX3RyYW5zcG9ydHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwotICBh
dXRvIHJ0cF90cmFuc3BvcnRzID0KLSAgICAgIENyZWF0ZVJ0cFRyYW5zcG9ydFBhaXIoTWFrZVJ0
Y3BNdXhQYXJhbWV0ZXJzKCksIHVkcF90cmFuc3BvcnRzKTsKLQotICBhdXRvIHNlbmRlcl9yZXN1
bHQgPSBvcnRjX2ZhY3RvcnkxXy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVE
SUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICBhdXRvIHJlY2Vp
dmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNy
aWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSk7Ci0g
IEFTU0VSVF9UUlVFKHNlbmRlcl9yZXN1bHQub2soKSk7Ci0gIEFTU0VSVF9UUlVFKHJlY2VpdmVy
X3Jlc3VsdC5vaygpKTsKLSAgYXV0byBzZW5kZXIgPSBzZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgp
OwotICBhdXRvIHJlY2VpdmVyID0gcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIFJU
Q0Vycm9yIGVycm9yID0KLSAgICAgIHNlbmRlci0+U2V0VHJhY2soQ3JlYXRlTG9jYWxBdWRpb1Ry
YWNrKCJhdWRpbyIsIG9ydGNfZmFjdG9yeTFfLmdldCgpKSk7Ci0gIEVYUEVDVF9UUlVFKGVycm9y
Lm9rKCkpOwotCi0gIFJ0cFBhcmFtZXRlcnMgb3B1c19wYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxP
cHVzUGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJVRShyZWNlaXZlci0+UmVjZWl2ZShvcHVzX3Bh
cmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShzZW5kZXItPlNlbmQob3B1c19wYXJhbWV0
ZXJzKS5vaygpKTsKLSAgLy8gU2VuZGVyIGFuZCByZWNlaXZlciBhcmUgY29ubmVjdGVkIGFuZCBj
b25maWd1cmVkOyBhdWRpbyBmcmFtZXMgc2hvdWxkIGJlCi0gIC8vIGFibGUgdG8gZmxvdyBhdCB0
aGlzIHBvaW50LgotICBFWFBFQ1RfVFJVRV9XQUlUKAotICAgICAgZmFrZV9hdWRpb19jYXB0dXJl
X21vZHVsZTJfLT5mcmFtZXNfcmVjZWl2ZWQoKSA+IGtEZWZhdWx0TnVtRnJhbWVzLAotICAgICAg
a0RlZmF1bHRUaW1lb3V0KTsKLX0KLQotLy8gVmVyeSBiYXNpYyBlbmQtdG8tZW5kIHRlc3Qgd2l0
aCBhIHNpbmdsZSBwYWlyIG9mIHZpZGVvIFJUUCBzZW5kZXIgYW5kCi0vLyByZWNlaXZlci4KLS8v
Ci0vLyBVc2VzIG11eGVkIFJUQ1AsIGFuZCBtaW5pbWFsIHBhcmFtZXRlcnMgd2l0aCBhIGhhcmQt
Y29kZWQgY29uZmlnIHRoYXQncwotLy8ga25vd24gdG8gd29yay4KLVRFU1RfRihPcnRjRmFjdG9y
eUludGVncmF0aW9uVGVzdCwgQmFzaWNPbmVXYXlWaWRlb1J0cFNlbmRlckFuZFJlY2VpdmVyKSB7
Ci0gIGF1dG8gdWRwX3RyYW5zcG9ydHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFp
cigpOwotICBhdXRvIHJ0cF90cmFuc3BvcnRzID0KLSAgICAgIENyZWF0ZVJ0cFRyYW5zcG9ydFBh
aXIoTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCksIHVkcF90cmFuc3BvcnRzKTsKLQotICBhdXRvIHNl
bmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnkxXy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3Jp
Y2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICBh
dXRvIHJlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBSZWNlaXZlcigK
LSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRzLnNlY29uZC5n
ZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKHNlbmRlcl9yZXN1bHQub2soKSk7Ci0gIEFTU0VSVF9UUlVF
KHJlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLSAgYXV0byBzZW5kZXIgPSBzZW5kZXJfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotICBhdXRvIHJlY2VpdmVyID0gcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgp
OwotCi0gIFJUQ0Vycm9yIGVycm9yID0gc2VuZGVyLT5TZXRUcmFjaygKLSAgICAgIENyZWF0ZUxv
Y2FsVmlkZW9UcmFja0FuZEZha2VTb3VyY2UoInZpZGVvIiwgb3J0Y19mYWN0b3J5MV8uZ2V0KCkp
KTsKLSAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0KLSAgUnRwUGFyYW1ldGVycyB2cDhfcGFy
YW1ldGVycyA9IE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJVRShyZWNl
aXZlci0+UmVjZWl2ZSh2cDhfcGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9UUlVFKHNlbmRl
ci0+U2VuZCh2cDhfcGFyYW1ldGVycykub2soKSk7Ci0gIEZha2VWaWRlb1RyYWNrUmVuZGVyZXIg
ZmFrZV9yZW5kZXJlcigKLSAgICAgIHN0YXRpY19jYXN0PFZpZGVvVHJhY2tJbnRlcmZhY2UqPihy
ZWNlaXZlci0+R2V0VHJhY2soKS5nZXQoKSkpOwotICAvLyBTZW5kZXIgYW5kIHJlY2VpdmVyIGFy
ZSBjb25uZWN0ZWQgYW5kIGNvbmZpZ3VyZWQ7IHZpZGVvIGZyYW1lcyBzaG91bGQgYmUKLSAgLy8g
YWJsZSB0byBmbG93IGF0IHRoaXMgcG9pbnQuCi0gIEVYUEVDVF9UUlVFX1dBSVQoZmFrZV9yZW5k
ZXJlci5udW1fcmVuZGVyZWRfZnJhbWVzKCkgPiBrRGVmYXVsdE51bUZyYW1lcywKLSAgICAgICAg
ICAgICAgICAgICBrRGVmYXVsdFRpbWVvdXQpOwotfQotCi0vLyBUZXN0IHRoYXQgaWYgdGhlIHRy
YWNrIGlzIGNoYW5nZWQgd2hpbGUgc2VuZGluZywgdGhlIHNlbmRlciBzZWFtbGVzc2x5Ci0vLyB0
cmFuc2l0aW9ucyB0byBzZW5kaW5nIGl0IGFuZCBmcmFtZXMgYXJlIHJlY2VpdmVkIGVuZC10by1l
bmQuCi0vLwotLy8gT25seSBkb2luZyB0aGlzIGZvciB2aWRlbywgc2luY2UgZ2l2ZW4gdGhhdCBh
dWRpbyBpcyBzb3VyY2VkIGZyb20gYSBzaW5nbGUKLS8vIGZha2UgYXVkaW8gY2FwdHVyZSBtb2R1
bGUsIHRoZSBhdWRpbyB0cmFjayBpcyBqdXN0IGEgZHVtbXkgb2JqZWN0LgotLy8gVE9ETyhkZWFk
YmVlZik6IENoYW5nZSB0aGlzIHdoZW4gcG9zc2libGUuCi1URVNUX0YoT3J0Y0ZhY3RvcnlJbnRl
Z3JhdGlvblRlc3QsIFNldFRyYWNrV2hpbGVTZW5kaW5nKSB7Ci0gIGF1dG8gdWRwX3RyYW5zcG9y
dHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwotICBhdXRvIHJ0cF90cmFu
c3BvcnRzID0KLSAgICAgIENyZWF0ZVJ0cFRyYW5zcG9ydFBhaXIoTWFrZVJ0Y3BNdXhQYXJhbWV0
ZXJzKCksIHVkcF90cmFuc3BvcnRzKTsKLQotICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2Zh
Y3RvcnkxXy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURF
TywgcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICBhdXRvIHJlY2VpdmVyX3Jlc3VsdCA9
IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElB
X1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVF
KHNlbmRlcl9yZXN1bHQub2soKSk7Ci0gIEFTU0VSVF9UUlVFKHJlY2VpdmVyX3Jlc3VsdC5vaygp
KTsKLSAgYXV0byBzZW5kZXIgPSBzZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBhdXRvIHJl
Y2VpdmVyID0gcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIFJUQ0Vycm9yIGVycm9y
ID0gc2VuZGVyLT5TZXRUcmFjaygKLSAgICAgIENyZWF0ZUxvY2FsVmlkZW9UcmFja0FuZEZha2VT
b3VyY2UoInZpZGVvXzEiLCBvcnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwotICBFWFBFQ1RfVFJVRShl
cnJvci5vaygpKTsKLSAgUnRwUGFyYW1ldGVycyB2cDhfcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFs
VnA4UGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJVRShyZWNlaXZlci0+UmVjZWl2ZSh2cDhfcGFy
YW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9UUlVFKHNlbmRlci0+U2VuZCh2cDhfcGFyYW1ldGVy
cykub2soKSk7Ci0gIEZha2VWaWRlb1RyYWNrUmVuZGVyZXIgZmFrZV9yZW5kZXJlcigKLSAgICAg
IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tJbnRlcmZhY2UqPihyZWNlaXZlci0+R2V0VHJhY2soKS5n
ZXQoKSkpOwotICAvLyBFeHBlY3QgZm9yIHNvbWUgaW5pdGlhbCBudW1iZXIgb2YgZnJhbWVzIHRv
IGJlIHJlY2VpdmVkLgotICBFWFBFQ1RfVFJVRV9XQUlUKGZha2VfcmVuZGVyZXIubnVtX3JlbmRl
cmVkX2ZyYW1lcygpID4ga0RlZmF1bHROdW1GcmFtZXMsCi0gICAgICAgICAgICAgICAgICAga0Rl
ZmF1bHRUaW1lb3V0KTsKLSAgLy8gRGVzdHJveSBvbGQgc291cmNlLCBzZXQgYSBuZXcgdHJhY2ss
IGFuZCB2ZXJpZnkgbmV3IGZyYW1lcyBhcmUgcmVjZWl2ZWQKLSAgLy8gZnJvbSB0aGUgbmV3IHRy
YWNrLiBUaGUgVmlkZW9UcmFja1NvdXJjZSBpcyByZWZlcmVuY2UgY291bnRlZCBhbmQgbWF5IGxp
dmUKLSAgLy8gYSBsaXR0bGUgbG9uZ2VyLCBzbyB0ZWxsIGl0IHRoYXQgaXRzIHNvdXJjZSBpcyBn
b2luZyBhd2F5IG5vdy4KLSAgZmFrZV92aWRlb190cmFja19zb3VyY2VzX1swXSA9IG51bGxwdHI7
Ci0gIGludCBwcmV2X251bV9mcmFtZXMgPSBmYWtlX3JlbmRlcmVyLm51bV9yZW5kZXJlZF9mcmFt
ZXMoKTsKLSAgZXJyb3IgPSBzZW5kZXItPlNldFRyYWNrKAotICAgICAgQ3JlYXRlTG9jYWxWaWRl
b1RyYWNrQW5kRmFrZVNvdXJjZSgidmlkZW9fMiIsIG9ydGNfZmFjdG9yeTFfLmdldCgpKSk7Ci0g
IEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwotICBFWFBFQ1RfVFJVRV9XQUlUKAotICAgICAgZmFr
ZV9yZW5kZXJlci5udW1fcmVuZGVyZWRfZnJhbWVzKCkgPiBrRGVmYXVsdE51bUZyYW1lcyArIHBy
ZXZfbnVtX2ZyYW1lcywKLSAgICAgIGtEZWZhdWx0VGltZW91dCk7Ci19Ci0KLS8vIFRPRE8od2Vi
cnRjOjc5MTUsIHdlYnJ0Yzo5MTg0KTogVGVzdHMgYmVsb3cgYXJlIGRpc2FibGVkIGZvciBpT1Mg
NjQgb24gZGVidWcKLS8vIGJ1aWxkcyBiZWNhdXNlIG9mIGZsYWtpbmVzcy4KLSNpZiAhKGRlZmlu
ZWQoV0VCUlRDX0lPUykgJiYgZGVmaW5lZChXRUJSVENfQVJDSF82NF9CSVRTKSAmJiAhZGVmaW5l
ZChOREVCVUcpKQotI2RlZmluZSBNQVlCRV9CYXNpY1R3b1dheUF1ZGlvVmlkZW9SdHBTZW5kZXJz
QW5kUmVjZWl2ZXJzIFwKLSAgQmFzaWNUd29XYXlBdWRpb1ZpZGVvUnRwU2VuZGVyc0FuZFJlY2Vp
dmVycwotI2RlZmluZSBNQVlCRV9CYXNpY1R3b1dheUF1ZGlvVmlkZW9TcnRwU2VuZGVyc0FuZFJl
Y2VpdmVycyBcCi0gIEJhc2ljVHdvV2F5QXVkaW9WaWRlb1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJz
Ci0jZGVmaW5lIE1BWUJFX1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzV2l0aE1pc21hdGNoaW5nS2V5
cyBcCi0gIFNydHBTZW5kZXJzQW5kUmVjZWl2ZXJzV2l0aE1pc21hdGNoaW5nS2V5cwotI2RlZmlu
ZSBNQVlCRV9PbmVTaWRlU3J0cFNlbmRlckFuZFJlY2VpdmVyIE9uZVNpZGVTcnRwU2VuZGVyQW5k
UmVjZWl2ZXIKLSNkZWZpbmUgTUFZQkVfRnVsbFR3b1dheUF1ZGlvVmlkZW9TcnRwU2VuZGVyc0Fu
ZFJlY2VpdmVycyBcCi0gIEZ1bGxUd29XYXlBdWRpb1ZpZGVvU3J0cFNlbmRlcnNBbmRSZWNlaXZl
cnMKLSNlbHNlCi0jZGVmaW5lIE1BWUJFX0Jhc2ljVHdvV2F5QXVkaW9WaWRlb1J0cFNlbmRlcnNB
bmRSZWNlaXZlcnMgXAotICBESVNBQkxFRF9CYXNpY1R3b1dheUF1ZGlvVmlkZW9SdHBTZW5kZXJz
QW5kUmVjZWl2ZXJzCi0jZGVmaW5lIE1BWUJFX0Jhc2ljVHdvV2F5QXVkaW9WaWRlb1NydHBTZW5k
ZXJzQW5kUmVjZWl2ZXJzIFwKLSAgRElTQUJMRURfQmFzaWNUd29XYXlBdWRpb1ZpZGVvU3J0cFNl
bmRlcnNBbmRSZWNlaXZlcnMKLSNkZWZpbmUgTUFZQkVfU3J0cFNlbmRlcnNBbmRSZWNlaXZlcnNX
aXRoTWlzbWF0Y2hpbmdLZXlzIFwKLSAgRElTQUJMRURfU3J0cFNlbmRlcnNBbmRSZWNlaXZlcnNX
aXRoTWlzbWF0Y2hpbmdLZXlzCi0jZGVmaW5lIE1BWUJFX09uZVNpZGVTcnRwU2VuZGVyQW5kUmVj
ZWl2ZXIgRElTQUJMRURfT25lU2lkZVNydHBTZW5kZXJBbmRSZWNlaXZlcgotI2RlZmluZSBNQVlC
RV9GdWxsVHdvV2F5QXVkaW9WaWRlb1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzIFwKLSAgRElTQUJM
RURfRnVsbFR3b1dheUF1ZGlvVmlkZW9TcnRwU2VuZGVyc0FuZFJlY2VpdmVycwotI2VuZGlmCi0K
LS8vIEVuZC10by1lbmQgdGVzdCB3aXRoIHR3byBwYWlycyBvZiBSVFAgc2VuZGVycyBhbmQgcmVj
ZWl2ZXJzLCBmb3IgYXVkaW8gYW5kCi0vLyB2aWRlby4KLS8vCi0vLyBVc2VzIG11eGVkIFJUQ1As
IGFuZCBtaW5pbWFsIHBhcmFtZXRlcnMgd2l0aCBoYXJkLWNvZGVkIGNvbmZpZ3MgdGhhdCBhcmUK
LS8vIGtub3duIHRvIHdvcmsuCi1URVNUX0YoT3J0Y0ZhY3RvcnlJbnRlZ3JhdGlvblRlc3QsCi0g
ICAgICAgTUFZQkVfQmFzaWNUd29XYXlBdWRpb1ZpZGVvUnRwU2VuZGVyc0FuZFJlY2VpdmVycykg
ewotICBhdXRvIHVkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5zcG9ydFBh
aXIoKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0cyA9Ci0gICAgICBDcmVhdGVSdHBUcmFuc3BvcnRQ
YWlyKE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCB1ZHBfdHJhbnNwb3J0cyk7Ci0gIGJvb2wgZXhw
ZWN0X3N1Y2Nlc3MgPSB0cnVlOwotICBCYXNpY1R3b1dheVJ0cFNlbmRlcnNBbmRSZWNlaXZlcnNU
ZXN0KHN0ZDo6bW92ZShydHBfdHJhbnNwb3J0cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0X3N1Y2Nlc3MpOwotfQotCi1URVNUX0YoT3J0Y0ZhY3RvcnlJ
bnRlZ3JhdGlvblRlc3QsCi0gICAgICAgTUFZQkVfQmFzaWNUd29XYXlBdWRpb1ZpZGVvU3J0cFNl
bmRlcnNBbmRSZWNlaXZlcnMpIHsKLSAgYXV0byB1ZHBfdHJhbnNwb3J0cyA9IENyZWF0ZUFuZENv
bm5lY3RVZHBUcmFuc3BvcnRQYWlyKCk7Ci0gIGF1dG8gc3J0cF90cmFuc3BvcnRzID0gQ3JlYXRl
U3J0cFRyYW5zcG9ydFBhaXJBbmRTZXRLZXlzKAotICAgICAgTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJz
KCksIHVkcF90cmFuc3BvcnRzKTsKLSAgYm9vbCBleHBlY3Rfc3VjY2VzcyA9IHRydWU7Ci0gIEJh
c2ljVHdvV2F5UnRwU2VuZGVyc0FuZFJlY2VpdmVyc1Rlc3Qoc3RkOjptb3ZlKHNydHBfdHJhbnNw
b3J0cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3N1
Y2Nlc3MpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBwYWNrZXRzIGNhbm5vdCBiZSBkZWNvZGVk
IGlmIHRoZSBrZXlzIGFyZSBtaXNtYXRjaGVkLgotLy8gVE9ETyh3ZWJydGM6OTE4NCk6IERpc2Fi
bGVkIGJlY2F1c2UgdGhpcyB0ZXN0IGlzIGZsYWt5LgotVEVTVF9GKE9ydGNGYWN0b3J5SW50ZWdy
YXRpb25UZXN0LAotICAgICAgIE1BWUJFX1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzV2l0aE1pc21h
dGNoaW5nS2V5cykgewotICBhdXRvIHVkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVk
cFRyYW5zcG9ydFBhaXIoKTsKLSAgYXV0byBzcnRwX3RyYW5zcG9ydHMgPSBDcmVhdGVTcnRwVHJh
bnNwb3J0UGFpckFuZFNldE1pc21hdGNoaW5nS2V5cygKLSAgICAgIE1ha2VSdGNwTXV4UGFyYW1l
dGVycygpLCB1ZHBfdHJhbnNwb3J0cyk7Ci0gIGJvb2wgZXhwZWN0X3N1Y2Nlc3MgPSBmYWxzZTsK
LSAgQmFzaWNUd29XYXlSdHBTZW5kZXJzQW5kUmVjZWl2ZXJzVGVzdChzdGQ6Om1vdmUoc3J0cF90
cmFuc3BvcnRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3Rfc3VjY2Vzcyk7Ci0gIC8vIE5vIGZyYW1lcyBhcmUgZXhwZWN0ZWQgdG8gYmUgZGVjb2RlZC4K
LSAgRVhQRUNUX1RSVUUocmVjZWl2ZWRfYXVkaW9fZnJhbWVzMV8gPT0gMCAmJiByZWNlaXZlZF9h
dWRpb19mcmFtZXMyXyA9PSAwICYmCi0gICAgICAgICAgICAgIHJlbmRlcmVkX3ZpZGVvX2ZyYW1l
czFfID09IDAgJiYgcmVuZGVyZWRfdmlkZW9fZnJhbWVzMl8gPT0gMCk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgdGhlIGZyYW1lcyBjYW5ub3QgYmUgZGVjb2RlZCBpZiBvbmx5IG9uZSBzaWRlIHVzZXMg
U1JUUC4KLVRFU1RfRihPcnRjRmFjdG9yeUludGVncmF0aW9uVGVzdCwgTUFZQkVfT25lU2lkZVNy
dHBTZW5kZXJBbmRSZWNlaXZlcikgewotICBhdXRvIHJ0Y3BfcGFyYW1ldGVycyA9IE1ha2VSdGNw
TXV4UGFyYW1ldGVycygpOwotICBhdXRvIHVkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5kQ29ubmVj
dFVkcFRyYW5zcG9ydFBhaXIoKTsKLSAgYXV0byBydGNwX3VkcF90cmFuc3BvcnRzID0gVWRwVHJh
bnNwb3J0UGFpcigpOwotICBhdXRvIHRyYW5zcG9ydF9jb250cm9sbGVycyA9IFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJQYWlyKCk7Ci0gIGF1dG8gdHJhbnNwb3J0X3Jlc3VsdDEgPSBvcnRjX2ZhY3Rv
cnkxXy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgcnRjcF9wYXJhbWV0ZXJzLCB1ZHBfdHJh
bnNwb3J0cy5maXJzdC5nZXQoKSwKLSAgICAgIHJ0Y3BfdWRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0
KCksIHRyYW5zcG9ydF9jb250cm9sbGVycy5maXJzdC5nZXQoKSk7Ci0gIGF1dG8gdHJhbnNwb3J0
X3Jlc3VsdDIgPSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlU3J0cFRyYW5zcG9ydCgKLSAgICAgIHJ0
Y3BfcGFyYW1ldGVycywgdWRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpLAotICAgICAgcnRjcF91
ZHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCksIHRyYW5zcG9ydF9jb250cm9sbGVycy5zZWNvbmQu
Z2V0KCkpOwotCi0gIGF1dG8gcnRwX3RyYW5zcG9ydCA9IHRyYW5zcG9ydF9yZXN1bHQxLk1vdmVW
YWx1ZSgpOwotICBhdXRvIHNydHBfdHJhbnNwb3J0ID0gdHJhbnNwb3J0X3Jlc3VsdDIuTW92ZVZh
bHVlKCk7Ci0gIEVYUEVDVF9UUlVFKHNydHBfdHJhbnNwb3J0LT5TZXRTcnRwU2VuZEtleShrVGVz
dENyeXB0b1BhcmFtczEpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydC0+U2V0
U3J0cFJlY2VpdmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMyKS5vaygpKTsKLSAgYm9vbCBleHBlY3Rf
c3VjY2VzcyA9IGZhbHNlOwotICBCYXNpY1R3b1dheVJ0cFNlbmRlcnNBbmRSZWNlaXZlcnNUZXN0
KAotICAgICAge3N0ZDo6bW92ZShydHBfdHJhbnNwb3J0KSwgc3RkOjptb3ZlKHNydHBfdHJhbnNw
b3J0KX0sIGV4cGVjdF9zdWNjZXNzKTsKLQotICAvLyBUaGUgU1JUUCBzaWRlIGlzIG5vdCBleHBl
Y3RlZCB0byBkZWNvZGUgYW55IGF1ZGlvIG9yIHZpZGVvIGZyYW1lcy4KLSAgLy8gVGhlIFJUUCBz
aWRlIGlzIG5vdCBleHBlY3RlZCB0byBkZWNvZGUgYW55IHZpZGVvIGZyYW1lcyB3aGlsZSBpdCBp
cwotICAvLyBwb3NzaWJsZSB0aGF0IHRoZSBlbmNyeXB0ZWQgYXVkaW8gZnJhbWVzIGNhbiBiZSBh
Y2NpZGVudGFsbHkgZGVjb2RlZCB3aGljaAotICAvLyBpcyB3aHkgcmVjZWl2ZWRfYXVkaW9fZnJh
bWVzMV8gaXMgbm90IHZhbGlkYXRlZC4KLSAgRVhQRUNUX1RSVUUocmVjZWl2ZWRfYXVkaW9fZnJh
bWVzMl8gPT0gMCAmJiByZW5kZXJlZF92aWRlb19mcmFtZXMxXyA9PSAwICYmCi0gICAgICAgICAg
ICAgIHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczJfID09IDApOwotfQotCi0vLyBFbmQtdG8tZW5kIHRl
c3Qgd2l0aCB0d28gcGFpcnMgb2YgUlRQIHNlbmRlcnMgYW5kIHJlY2VpdmVycywgZm9yIGF1ZGlv
IGFuZAotLy8gdmlkZW8uIFVubGlrZSB0aGUgdGVzdCBhYm92ZSwgdGhpcyBhdHRlbXB0cyB0byBt
YWtlIHRoZSBwYXJhbWV0ZXJzIGFzCi0vLyBjb21wbGV4IGFzIHBvc3NpYmxlLiBUaGUgc2VuZGVy
cyBhbmQgcmVjZWl2ZXJzIHVzZSB0aGUgU1JUUCB0cmFuc3BvcnQgd2l0aAotLy8gZGlmZmVyZW50
IGtleXMuCi0vLwotLy8gVXNlcyBub24tbXV4ZWQgUlRDUCwgd2l0aCBzZXBhcmF0ZSBhdWRpby92
aWRlbyB0cmFuc3BvcnRzLCBhbmQgYSBmdWxsIHNldCBvZgotLy8gcGFyYW1ldGVycywgYXMgd291
bGQgbm9ybWFsbHkgYmUgdXNlZCBpbiBhIFBlZXJDb25uZWN0aW9uLgotLy8KLS8vIFRPRE8oZGVh
ZGJlZWYpOiBVcGRhdGUgdGhpcyB0ZXN0IGFzIG1vcmUgYXVkaW8vdmlkZW8gZmVhdHVyZXMgYmVj
b21lCi0vLyBzdXBwb3J0ZWQuCi1URVNUX0YoT3J0Y0ZhY3RvcnlJbnRlZ3JhdGlvblRlc3QsCi0g
ICAgICAgTUFZQkVfRnVsbFR3b1dheUF1ZGlvVmlkZW9TcnRwU2VuZGVyc0FuZFJlY2VpdmVycykg
ewotICAvLyBXZSB3YW50IGZvdXIgcGFpcnMgb2YgVURQIHRyYW5zcG9ydHMgZm9yIHRoaXMgdGVz
dCwgZm9yIGF1ZGlvL3ZpZGVvIGFuZAotICAvLyBSVFAvUlRDUC4KLSAgYXV0byBhdWRpb19ydHBf
dWRwX3RyYW5zcG9ydHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwotICBh
dXRvIGF1ZGlvX3J0Y3BfdWRwX3RyYW5zcG9ydHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNw
b3J0UGFpcigpOwotICBhdXRvIHZpZGVvX3J0cF91ZHBfdHJhbnNwb3J0cyA9IENyZWF0ZUFuZENv
bm5lY3RVZHBUcmFuc3BvcnRQYWlyKCk7Ci0gIGF1dG8gdmlkZW9fcnRjcF91ZHBfdHJhbnNwb3J0
cyA9IENyZWF0ZUFuZENvbm5lY3RVZHBUcmFuc3BvcnRQYWlyKCk7Ci0KLSAgLy8gU2luY2Ugd2Ug
aGF2ZSBtdWx0aXBsZSBSVFAgdHJhbnNwb3J0cyBvbiBlYWNoIHNpZGUsIHdlIG5lZWQgYW4gUlRQ
Ci0gIC8vIHRyYW5zcG9ydCBjb250cm9sbGVyLgotICBhdXRvIHRyYW5zcG9ydF9jb250cm9sbGVy
cyA9IENyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXJQYWlyKCk7Ci0KLSAgUnRwVHJhbnNwb3J0
UGFyYW1ldGVycyBhdWRpb19ydHBfdHJhbnNwb3J0X3BhcmFtZXRlcnM7Ci0gIGF1ZGlvX3J0cF90
cmFuc3BvcnRfcGFyYW1ldGVycy5ydGNwLm11eCA9IGZhbHNlOwotICBhdXRvIGF1ZGlvX3NydHBf
dHJhbnNwb3J0cyA9IENyZWF0ZVNydHBUcmFuc3BvcnRQYWlyKAotICAgICAgYXVkaW9fcnRwX3Ry
YW5zcG9ydF9wYXJhbWV0ZXJzLCBhdWRpb19ydHBfdWRwX3RyYW5zcG9ydHMsCi0gICAgICBhdWRp
b19ydGNwX3VkcF90cmFuc3BvcnRzLCB0cmFuc3BvcnRfY29udHJvbGxlcnMpOwotCi0gIFJ0cFRy
YW5zcG9ydFBhcmFtZXRlcnMgdmlkZW9fcnRwX3RyYW5zcG9ydF9wYXJhbWV0ZXJzOwotICB2aWRl
b19ydHBfdHJhbnNwb3J0X3BhcmFtZXRlcnMucnRjcC5tdXggPSBmYWxzZTsKLSAgdmlkZW9fcnRw
X3RyYW5zcG9ydF9wYXJhbWV0ZXJzLnJ0Y3AucmVkdWNlZF9zaXplID0gdHJ1ZTsKLSAgYXV0byB2
aWRlb19zcnRwX3RyYW5zcG9ydHMgPSBDcmVhdGVTcnRwVHJhbnNwb3J0UGFpcigKLSAgICAgIHZp
ZGVvX3J0cF90cmFuc3BvcnRfcGFyYW1ldGVycywgdmlkZW9fcnRwX3VkcF90cmFuc3BvcnRzLAot
ICAgICAgdmlkZW9fcnRjcF91ZHBfdHJhbnNwb3J0cywgdHJhbnNwb3J0X2NvbnRyb2xsZXJzKTsK
LQotICAvLyBTZXQga2V5cyBmb3IgU1JUUCB0cmFuc3BvcnRzLgotICBhdWRpb19zcnRwX3RyYW5z
cG9ydHMuZmlyc3QtPlNldFNydHBTZW5kS2V5KGtUZXN0Q3J5cHRvUGFyYW1zMSk7Ci0gIGF1ZGlv
X3NydHBfdHJhbnNwb3J0cy5maXJzdC0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RDcnlwdG9QYXJh
bXMyKTsKLSAgdmlkZW9fc3J0cF90cmFuc3BvcnRzLmZpcnN0LT5TZXRTcnRwU2VuZEtleShrVGVz
dENyeXB0b1BhcmFtczMpOwotICB2aWRlb19zcnRwX3RyYW5zcG9ydHMuZmlyc3QtPlNldFNydHBS
ZWNlaXZlS2V5KGtUZXN0Q3J5cHRvUGFyYW1zNCk7Ci0KLSAgYXVkaW9fc3J0cF90cmFuc3BvcnRz
LnNlY29uZC0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJhbXMyKTsKLSAgYXVkaW9fc3J0
cF90cmFuc3BvcnRzLnNlY29uZC0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMx
KTsKLSAgdmlkZW9fc3J0cF90cmFuc3BvcnRzLnNlY29uZC0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RD
cnlwdG9QYXJhbXM0KTsKLSAgdmlkZW9fc3J0cF90cmFuc3BvcnRzLnNlY29uZC0+U2V0U3J0cFJl
Y2VpdmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMzKTsKLQotICAvLyBDcmVhdGUgYWxsIHRoZSBzZW5k
ZXJzIGFuZCByZWNlaXZlcnMgKGZvdXIgcGVyIGVuZHBvaW50KS4KLSAgYXV0byBhdWRpb19zZW5k
ZXJfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlj
a2V0OjpNRURJQV9UWVBFX0FVRElPLCBhdWRpb19zcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCkp
OwotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQxID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0
cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3NydHBfdHJh
bnNwb3J0cy5maXJzdC5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0MSA9IG9y
dGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfQVVESU8sIGF1ZGlvX3NydHBfdHJhbnNwb3J0cy5maXJzdC5nZXQoKSk7Ci0gIGF1dG8gdmlk
ZW9fcmVjZWl2ZXJfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBSZWNlaXZlcigK
LSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3NydHBfdHJhbnNwb3J0cy5m
aXJzdC5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKGF1ZGlvX3NlbmRlcl9yZXN1bHQxLm9rKCkpOwot
ICBBU1NFUlRfVFJVRSh2aWRlb19zZW5kZXJfcmVzdWx0MS5vaygpKTsKLSAgQVNTRVJUX1RSVUUo
YXVkaW9fcmVjZWl2ZXJfcmVzdWx0MS5vaygpKTsKLSAgQVNTRVJUX1RSVUUodmlkZW9fcmVjZWl2
ZXJfcmVzdWx0MS5vaygpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIxID0gYXVkaW9fc2VuZGVyX3Jl
c3VsdDEuTW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyMSA9IHZpZGVvX3NlbmRlcl9y
ZXN1bHQxLk1vdmVWYWx1ZSgpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyMSA9IGF1ZGlvX3JlY2Vp
dmVyX3Jlc3VsdDEuTW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXIxID0gdmlkZW9f
cmVjZWl2ZXJfcmVzdWx0MS5Nb3ZlVmFsdWUoKTsKLQotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1
bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfQVVESU8sIGF1ZGlvX3NydHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCkpOwotICBh
dXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0cFNlbmRl
cigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3NydHBfdHJhbnNwb3J0
cy5zZWNvbmQuZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDIgPSBvcnRjX2Zh
Y3RvcnkyXy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FV
RElPLCBhdWRpb19zcnRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpKTsKLSAgYXV0byB2aWRlb19y
ZWNlaXZlcl9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAg
ICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgdmlkZW9fc3J0cF90cmFuc3BvcnRzLnNlY29u
ZC5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKGF1ZGlvX3NlbmRlcl9yZXN1bHQyLm9rKCkpOwotICBB
U1NFUlRfVFJVRSh2aWRlb19zZW5kZXJfcmVzdWx0Mi5vaygpKTsKLSAgQVNTRVJUX1RSVUUoYXVk
aW9fcmVjZWl2ZXJfcmVzdWx0Mi5vaygpKTsKLSAgQVNTRVJUX1RSVUUodmlkZW9fcmVjZWl2ZXJf
cmVzdWx0Mi5vaygpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIyID0gYXVkaW9fc2VuZGVyX3Jlc3Vs
dDIuTW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyMiA9IHZpZGVvX3NlbmRlcl9yZXN1
bHQyLk1vdmVWYWx1ZSgpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyMiA9IGF1ZGlvX3JlY2VpdmVy
X3Jlc3VsdDIuTW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXIyID0gdmlkZW9fcmVj
ZWl2ZXJfcmVzdWx0Mi5Nb3ZlVmFsdWUoKTsKLQotICBSVENFcnJvciBlcnJvciA9IGF1ZGlvX3Nl
bmRlcjEtPlNldFRyYWNrKAotICAgICAgQ3JlYXRlTG9jYWxBdWRpb1RyYWNrKCJhdWRpbyIsIG9y
dGNfZmFjdG9yeTFfLmdldCgpKSk7Ci0gIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwotICBlcnJv
ciA9IHZpZGVvX3NlbmRlcjEtPlNldFRyYWNrKAotICAgICAgQ3JlYXRlTG9jYWxWaWRlb1RyYWNr
QW5kRmFrZVNvdXJjZSgidmlkZW8iLCBvcnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwotICBFWFBFQ1Rf
VFJVRShlcnJvci5vaygpKTsKLSAgZXJyb3IgPSBhdWRpb19zZW5kZXIyLT5TZXRUcmFjaygKLSAg
ICAgIENyZWF0ZUxvY2FsQXVkaW9UcmFjaygiYXVkaW8iLCBvcnRjX2ZhY3RvcnkyXy5nZXQoKSkp
OwotICBFWFBFQ1RfVFJVRShlcnJvci5vaygpKTsKLSAgZXJyb3IgPSB2aWRlb19zZW5kZXIyLT5T
ZXRUcmFjaygKLSAgICAgIENyZWF0ZUxvY2FsVmlkZW9UcmFja0FuZEZha2VTb3VyY2UoInZpZGVv
Iiwgb3J0Y19mYWN0b3J5Ml8uZ2V0KCkpKTsKLSAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0K
LSAgLy8gVXNlIGRpZmZlcmVudCBjb2RlY3MgaW4gZGlmZmVyZW50IGRpcmVjdGlvbnMgZm9yIGV4
dHJhIGNoYWxsZW5nZS4KLSAgUnRwUGFyYW1ldGVycyBvcHVzX3NlbmRfcGFyYW1ldGVycyA9IE1h
a2VGdWxsT3B1c1BhcmFtZXRlcnMoKTsKLSAgUnRwUGFyYW1ldGVycyBpc2FjX3NlbmRfcGFyYW1l
dGVycyA9IE1ha2VGdWxsSXNhY1BhcmFtZXRlcnMoKTsKLSAgUnRwUGFyYW1ldGVycyB2cDhfc2Vu
ZF9wYXJhbWV0ZXJzID0gTWFrZUZ1bGxWcDhQYXJhbWV0ZXJzKCk7Ci0gIFJ0cFBhcmFtZXRlcnMg
dnA5X3NlbmRfcGFyYW1ldGVycyA9IE1ha2VGdWxsVnA5UGFyYW1ldGVycygpOwotCi0gIC8vIFJl
bW92ZSAicGF5bG9hZF90eXBlIiBmcm9tIHJlY2VpdmUgcGFyYW1ldGVycy4gUmVjZWl2ZXIgd2ls
bCBuZWVkIHRvCi0gIC8vIGRpc2Nlcm4gdGhlIHBheWxvYWQgdHlwZSBmcm9tIHBhY2tldHMgcmVj
ZWl2ZWQuCi0gIFJ0cFBhcmFtZXRlcnMgb3B1c19yZWNlaXZlX3BhcmFtZXRlcnMgPSBvcHVzX3Nl
bmRfcGFyYW1ldGVyczsKLSAgUnRwUGFyYW1ldGVycyBpc2FjX3JlY2VpdmVfcGFyYW1ldGVycyA9
IGlzYWNfc2VuZF9wYXJhbWV0ZXJzOwotICBSdHBQYXJhbWV0ZXJzIHZwOF9yZWNlaXZlX3BhcmFt
ZXRlcnMgPSB2cDhfc2VuZF9wYXJhbWV0ZXJzOwotICBSdHBQYXJhbWV0ZXJzIHZwOV9yZWNlaXZl
X3BhcmFtZXRlcnMgPSB2cDlfc2VuZF9wYXJhbWV0ZXJzOwotICBvcHVzX3JlY2VpdmVfcGFyYW1l
dGVycy5lbmNvZGluZ3NbMF0uY29kZWNfcGF5bG9hZF90eXBlLnJlc2V0KCk7Ci0gIGlzYWNfcmVj
ZWl2ZV9wYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5jb2RlY19wYXlsb2FkX3R5cGUucmVzZXQoKTsK
LSAgdnA4X3JlY2VpdmVfcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uY29kZWNfcGF5bG9hZF90eXBl
LnJlc2V0KCk7Ci0gIHZwOV9yZWNlaXZlX3BhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLmNvZGVjX3Bh
eWxvYWRfdHlwZS5yZXNldCgpOwotCi0gIC8vIENvbmZpZ3VyZSB0aGUgc2VuZGVycycgYW5kIHJl
Y2VpdmVycycgcGFyYW1ldGVycy4KLSAgLy8KLSAgLy8gTm90ZTogSW50ZW50aW9uYWxseSwgdGhl
IHRvcCBjb2RlYyBpbiB0aGUgcmVjZWl2ZSBwYXJhbWV0ZXJzIGRvZXMgbm90Ci0gIC8vIG1hdGNo
IHRoZSBjb2RlYyBzZW50IGJ5IHRoZSBvdGhlciBzaWRlLiBJZiAiUmVjZWl2ZSIgaXMgY2FsbGVk
IHdpdGggYSBsaXN0Ci0gIC8vIG9mIGNvZGVjcywgdGhlIHJlY2VpdmVyIHNob3VsZCBiZSBwcmVw
YXJlZCB0byByZWNlaXZlIGFueSBvZiB0aGVtLCBub3QKLSAgLy8ganVzdCB0aGUgb25lIG9uIHRv
cC4KLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXIxLT5SZWNlaXZlKG9wdXNfcmVjZWl2ZV9w
YXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXIxLT5SZWNlaXZl
KHZwOF9yZWNlaXZlX3BhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNl
aXZlcjItPlJlY2VpdmUoaXNhY19yZWNlaXZlX3BhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1Rf
VFJVRSh2aWRlb19yZWNlaXZlcjItPlJlY2VpdmUodnA5X3JlY2VpdmVfcGFyYW1ldGVycykub2so
KSk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlcjEtPlNlbmQob3B1c19zZW5kX3BhcmFtZXRl
cnMpLm9rKCkpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXIxLT5TZW5kKHZwOF9zZW5kX3Bh
cmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXIyLT5TZW5kKGlzYWNf
c2VuZF9wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyMi0+U2Vu
ZCh2cDlfc2VuZF9wYXJhbWV0ZXJzKS5vaygpKTsKLQotICBGYWtlVmlkZW9UcmFja1JlbmRlcmVy
IGZha2VfdmlkZW9fcmVuZGVyZXIxKAotICAgICAgc3RhdGljX2Nhc3Q8VmlkZW9UcmFja0ludGVy
ZmFjZSo+KHZpZGVvX3JlY2VpdmVyMS0+R2V0VHJhY2soKS5nZXQoKSkpOwotICBGYWtlVmlkZW9U
cmFja1JlbmRlcmVyIGZha2VfdmlkZW9fcmVuZGVyZXIyKAotICAgICAgc3RhdGljX2Nhc3Q8Vmlk
ZW9UcmFja0ludGVyZmFjZSo+KHZpZGVvX3JlY2VpdmVyMi0+R2V0VHJhY2soKS5nZXQoKSkpOwot
Ci0gIC8vIFNlbmRlcnMgYW5kIHJlY2VpdmVycyBhcmUgY29ubmVjdGVkIGFuZCBjb25maWd1cmVk
OyBhdWRpbyBhbmQgdmlkZW8gZnJhbWVzCi0gIC8vIHNob3VsZCBiZSBhYmxlIHRvIGZsb3cgYXQg
dGhpcyBwb2ludC4KLSAgRVhQRUNUX1RSVUVfV0FJVCgKLSAgICAgIGZha2VfYXVkaW9fY2FwdHVy
ZV9tb2R1bGUxXy0+ZnJhbWVzX3JlY2VpdmVkKCkgPiBrRGVmYXVsdE51bUZyYW1lcyAmJgotICAg
ICAgICAgIGZha2VfdmlkZW9fcmVuZGVyZXIxLm51bV9yZW5kZXJlZF9mcmFtZXMoKSA+IGtEZWZh
dWx0TnVtRnJhbWVzICYmCi0gICAgICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTJfLT5m
cmFtZXNfcmVjZWl2ZWQoKSA+IGtEZWZhdWx0TnVtRnJhbWVzICYmCi0gICAgICAgICAgZmFrZV92
aWRlb19yZW5kZXJlcjIubnVtX3JlbmRlcmVkX2ZyYW1lcygpID4ga0RlZmF1bHROdW1GcmFtZXMs
Ci0gICAgICBrRGVmYXVsdFRpbWVvdXQpOwotfQotCi0vLyBUT0RPKGRlYWRiZWVmKTogRW5kLXRv
LWVuZCB0ZXN0IGZvciBtdWx0aXBsZSBzZW5kZXJzL3JlY2VpdmVycyBvZiB0aGUgc2FtZQotLy8g
bWVkaWEgdHlwZSwgb25jZSB0aGF0J3Mgc3VwcG9ydGVkLiBDdXJyZW50bHksIGl0IGlzIG5vdCBi
ZWNhdXNlIHRoZQotLy8gQmFzZUNoYW5uZWwgbW9kZWwgcmVsaWVzIG9uIHRoZXJlIGJlaW5nIGEg
c2luZ2xlIFZvaWNlQ2hhbm5lbCBhbmQKLS8vIFZpZGVvQ2hhbm5lbCwgYW5kIHRoZXNlIG9ubHkg
c3VwcG9ydCBhIHNpbmdsZSBzZXQgb2YgY29kZWNzL2V0Yy4gcGVyCi0vLyBzZW5kL3JlY2VpdmUg
ZGlyZWN0aW9uLgotCi0vLyBUT0RPKGRlYWRiZWVmKTogRW5kLXRvLWVuZCB0ZXN0IGZvciBzaW11
bGNhc3QsIG9uY2UgdGhhdCdzIHN1cHBvcnRlZCBieSB0aGlzCi0vLyBBUEkuCi0KLSNlbmRpZiAg
Ly8gaWYgIWRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
b3J0Yy9vcnRjZmFjdG9yeV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y2ZhY3RvcnlfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQwYWZiZDMyOGI2ZGZlMTc2YTY4ZTExYjIzMjNjODRlMzM1OTM4
NTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeV91bml0
dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDI1MCArMCwwIEBACi0vKgotICogIENvcHlyaWdo
dCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAq
LwotCi0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWls
dGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3Mv
YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL2Zh
a2VtZWRpYWVuZ2luZS5oIgotI2luY2x1ZGUgIm9ydGMvb3J0Y2ZhY3RvcnkuaCIKLSNpbmNsdWRl
ICJvcnRjL3Rlc3RydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAicDJwL2Jhc2UvZmFrZXBhY2tl
dHRyYW5zcG9ydC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Zha2VuZXR3b3JrLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS92aXJ0dWFsc29ja2V0c2Vy
dmVyLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBUaGlzIHRlc3QgdXNlcyBhIHZpcnR1
YWwgbmV0d29yayBhbmQgZmFrZSBtZWRpYSBlbmdpbmUsIGluIG9yZGVyIHRvIHRlc3QgdGhlCi0v
LyBPcnRjRmFjdG9yeSBhdCBvbmx5IGFuIEFQSSBsZXZlbC4gQW55IGVuZC10by1lbmQgdGVzdCBz
aG91bGQgZ28gaW4KLS8vIG9ydGNmYWN0b3J5X2ludGVncmF0aW9udGVzdC5jYyBpbnN0ZWFkLgot
Y2xhc3MgT3J0Y0ZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoK
LSAgT3J0Y0ZhY3RvcnlUZXN0KCkKLSAgICAgIDogdGhyZWFkXygmdmlydHVhbF9zb2NrZXRfc2Vy
dmVyXyksCi0gICAgICAgIGZha2VfcGFja2V0X3RyYW5zcG9ydF8oImZha2UgdHJhbnNwb3J0Iikg
ewotICAgIG9ydGNfZmFjdG9yeV8gPQotICAgICAgICBPcnRjRmFjdG9yeTo6Q3JlYXRlKCZ0aHJl
YWRfLCBudWxscHRyLCAmZmFrZV9uZXR3b3JrX21hbmFnZXJfLCBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZSgpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFj
dG9yeSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ1aWx0aW5BdWRpb0Rl
Y29kZXJGYWN0b3J5KCkpCi0gICAgICAgICAgICAuTW92ZVZhbHVlKCk7Ci0gIH0KLQotIHByb3Rl
Y3RlZDoKLSAgLy8gVXNlcyBhIHNpbmdsZSBwcmUtbWFkZSBGYWtlUGFja2V0VHJhbnNwb3J0LCBz
byBzaG91bGRuJ3QgYmUgY2FsbGVkIHR3aWNlIGluCi0gIC8vIHRoZSBzYW1lIHRlc3QuCi0gIHN0
ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+Ci0gIENyZWF0ZVJ0cFRyYW5zcG9y
dFdpdGhGYWtlUGFja2V0VHJhbnNwb3J0KCkgewotICAgIHJldHVybiBvcnRjX2ZhY3RvcnlfCi0g
ICAgICAgIC0+Q3JlYXRlUnRwVHJhbnNwb3J0KE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCAmZmFr
ZV9wYWNrZXRfdHJhbnNwb3J0XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwgbnVsbHB0cikKLSAgICAgICAgLk1vdmVWYWx1ZSgpOwotICB9Ci0KLSAgcnRjOjpWaXJ0dWFs
U29ja2V0U2VydmVyIHZpcnR1YWxfc29ja2V0X3NlcnZlcl87Ci0gIHJ0Yzo6QXV0b1NvY2tldFNl
cnZlclRocmVhZCB0aHJlYWRfOwotICBydGM6OkZha2VOZXR3b3JrTWFuYWdlciBmYWtlX25ldHdv
cmtfbWFuYWdlcl87Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBmYWtlX3BhY2tldF90cmFu
c3BvcnRfOwotICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+IG9ydGNfZmFj
dG9yeV87Ci19OwotCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDYW5DcmVhdGVNdWx0aXBsZVJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJzKSB7Ci0gIGF1dG8gY29udHJvbGxlcl9yZXN1bHQxID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcigpOwotICBFWFBFQ1RfVFJV
RShjb250cm9sbGVyX3Jlc3VsdDEub2soKSk7Ci0gIGF1dG8gY29udHJvbGxlcl9yZXN1bHQyID0g
b3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcigpOwotICBFWFBFQ1Rf
VFJVRShjb250cm9sbGVyX3Jlc3VsdDEub2soKSk7Ci19Ci0KLS8vIFNpbXBsZSB0ZXN0IGZvciB0
aGUgc3VjY2Vzc2Z1bCBjYXNlcyBvZiBDcmVhdGVSdHBUcmFuc3BvcnQuCi1URVNUX0YoT3J0Y0Zh
Y3RvcnlUZXN0LCBDcmVhdGVSdHBUcmFuc3BvcnRXaXRoQW5kV2l0aG91dE11eCkgewotICBydGM6
OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRwKCJydHAiKTsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNw
b3J0IHJ0Y3AoInJ0Y3AiKTsKLSAgLy8gV2l0aCBtdXhlZCBSVENQLgotICBSdHBUcmFuc3BvcnRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKTsKLSAgYXV0byBy
ZXN1bHQgPQotICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KHBhcmFtZXRl
cnMsICZydHAsIG51bGxwdHIsIG51bGxwdHIpOwotICBFWFBFQ1RfVFJVRShyZXN1bHQub2soKSk7
Ci0gIHJlc3VsdC5Nb3ZlVmFsdWUoKS5yZXNldCgpOwotICAvLyBXaXRoIG5vbi1tdXhlZCBSVENQ
LgotICBwYXJhbWV0ZXJzLnJ0Y3AubXV4ID0gZmFsc2U7Ci0gIHJlc3VsdCA9IG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydChwYXJhbWV0ZXJzLCAmcnRwLCAmcnRjcCwgbnVsbHB0cik7
Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdC5vaygpKTsKLX0KLQotLy8gU2ltcGxlIHRlc3QgZm9yIHRo
ZSBzdWNjZXNzZnVsIGNhc2VzIG9mIENyZWF0ZVNydHBUcmFuc3BvcnQuCi1URVNUX0YoT3J0Y0Zh
Y3RvcnlUZXN0LCBDcmVhdGVTcnRwVHJhbnNwb3J0KSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5z
cG9ydCBydHAoInJ0cCIpOwotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRjcCgicnRjcCIp
OwotICAvLyBXaXRoIG11eGVkIFJUQ1AuCi0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1l
dGVycyA9IE1ha2VSdGNwTXV4UGFyYW1ldGVycygpOwotICBhdXRvIHJlc3VsdCA9Ci0gICAgICBv
cnRjX2ZhY3RvcnlfLT5DcmVhdGVTcnRwVHJhbnNwb3J0KHBhcmFtZXRlcnMsICZydHAsIG51bGxw
dHIsIG51bGxwdHIpOwotICBFWFBFQ1RfVFJVRShyZXN1bHQub2soKSk7Ci0gIHJlc3VsdC5Nb3Zl
VmFsdWUoKS5yZXNldCgpOwotICAvLyBXaXRoIG5vbi1tdXhlZCBSVENQLgotICBwYXJhbWV0ZXJz
LnJ0Y3AubXV4ID0gZmFsc2U7Ci0gIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVNydHBU
cmFuc3BvcnQocGFyYW1ldGVycywgJnJ0cCwgJnJ0Y3AsIG51bGxwdHIpOwotICBFWFBFQ1RfVFJV
RShyZXN1bHQub2soKSk7Ci19Ci0KLS8vIElmIG5vIENOQU1FIGlzIHByb3ZpZGVkLCBvbmUgc2hv
dWxkIGJlIGdlbmVyYXRlZCBhbmQgcmV0dXJuZWQgYnkKLS8vIEdldFJ0cFBhcmFtZXRlcnMuCi1U
RVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVSdHBUcmFuc3BvcnRHZW5lcmF0ZXNDbmFtZSkg
ewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRwKCJydHAiKTsKLSAgYXV0byByZXN1bHQg
PSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJz
KCksICZydHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsIG51bGxwdHIpOwotICBBU1NFUlRfVFJVRShyZXN1bHQub2soKSk7Ci0gIEVY
UEVDVF9GQUxTRShyZXN1bHQudmFsdWUoKS0+R2V0UGFyYW1ldGVycygpLnJ0Y3AuY25hbWUuZW1w
dHkoKSk7Ci19Ci0KLS8vIEV4dGVuc2lvbiBvZiB0aGUgYWJvdmUgdGVzdDsgbXVsdGlwbGUgdHJh
bnNwb3J0cyBjcmVhdGVkIGJ5IHRoZSBzYW1lIGZhY3RvcnkKLS8vIHNob3VsZCB1c2UgdGhlIHNh
bWUgZ2VuZXJhdGVkIENOQU1FLgotVEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgTXVsdGlwbGVSdHBU
cmFuc3BvcnRzVXNlU2FtZUdlbmVyYXRlZENuYW1lKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5z
cG9ydCBwYWNrZXRfdHJhbnNwb3J0MSgiMSIpOwotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQg
cGFja2V0X3RyYW5zcG9ydDIoIjIiKTsKLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBwYXJhbWV0
ZXJzID0gTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCk7Ci0gIC8vIFNhbml0eSBjaGVjay4KLSAgQVNT
RVJUX1RSVUUocGFyYW1ldGVycy5ydGNwLmNuYW1lLmVtcHR5KCkpOwotICBhdXRvIHJlc3VsdCA9
IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIHBhcmFtZXRlcnMsICZw
YWNrZXRfdHJhbnNwb3J0MSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIEFTU0VSVF9UUlVFKHJlc3Vs
dC5vaygpKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0MSA9IHJlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAg
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KHBhcmFtZXRlcnMsICZw
YWNrZXRfdHJhbnNwb3J0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsIG51bGxwdHIpOwotICBBU1NFUlRfVFJVRShyZXN1bHQub2soKSk7Ci0g
IGF1dG8gcnRwX3RyYW5zcG9ydDIgPSByZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIFJ0Y3BQYXJhbWV0
ZXJzIHBhcmFtczEgPSBydHBfdHJhbnNwb3J0MS0+R2V0UGFyYW1ldGVycygpLnJ0Y3A7Ci0gIFJ0
Y3BQYXJhbWV0ZXJzIHBhcmFtczIgPSBydHBfdHJhbnNwb3J0Mi0+R2V0UGFyYW1ldGVycygpLnJ0
Y3A7Ci0gIEVYUEVDVF9GQUxTRShwYXJhbXMxLmNuYW1lLmVtcHR5KCkpOwotICBFWFBFQ1RfRVEo
cGFyYW1zMS5jbmFtZSwgcGFyYW1zMi5jbmFtZSk7Ci19Ci0KLVRFU1RfRihPcnRjRmFjdG9yeVRl
c3QsIENyZWF0ZVJ0cFRyYW5zcG9ydFdpdGhOb1BhY2tldFRyYW5zcG9ydCkgewotICBhdXRvIHJl
c3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydChNYWtlUnRjcE11eFBhcmFt
ZXRlcnMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6
OklOVkFMSURfUEFSQU1FVEVSLCByZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotfQotCi0vLyBJZiB0
aGUgfG11eHwgbWVtYmVyIG9mIHRoZSBSdGNwUGFyYW1ldGVycyBpcyBmYWxzZSwgYm90aCBhbiBS
VFAgYW5kIFJUQ1AKLS8vIHBhY2tldCB0cmFuc3BvcnQgYXJlIG5lZWRlZC4KLVRFU1RfRihPcnRj
RmFjdG9yeVRlc3QsIENyZWF0ZVJ0cFRyYW5zcG9ydFdpdGhNaXNzaW5nUnRjcFRyYW5zcG9ydCkg
ewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRwKCJydHAiKTsKLSAgUnRwVHJhbnNwb3J0
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICBwYXJhbWV0ZXJzLnJ0Y3AubXV4ID0gZmFsc2U7Ci0g
IGF1dG8gcmVzdWx0ID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydChw
YXJhbWV0ZXJzLCAmcnRwLCBudWxscHRyLCBudWxscHRyKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9y
VHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsIHJlc3VsdC5lcnJvcigpLnR5cGUoKSk7Ci19Ci0KLS8v
IElmIHRoZSB8bXV4fCBtZW1iZXIgb2YgdGhlIFJ0Y3BQYXJhbWV0ZXJzIGlzIHRydWUsIG9ubHkg
YW4gUlRQIHBhY2tldAotLy8gdHJhbnNwb3J0IGlzIG5lY2Vzc2FyeS4gU28sIHBhc3NpbmcgaW4g
YW4gUlRDUCB0cmFuc3BvcnQgaXMgbW9zdCBsaWtlbHkKLS8vIGFuIGFjY2lkZW50LCBhbmQgdGh1
cyBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBlcnJvci4KLVRFU1RfRihPcnRjRmFjdG9yeVRlc3Qs
IENyZWF0ZVJ0cFRyYW5zcG9ydFdpdGhFeHRyYW5lb3VzUnRjcFRyYW5zcG9ydCkgewotICBydGM6
OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRwKCJydHAiKTsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNw
b3J0IHJ0Y3AoInJ0Y3AiKTsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBUcmFuc3BvcnQoTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCksICZydHAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZydGNwLCBudWxscHRyKTsKLSAg
RVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsIHJlc3VsdC5lcnJvcigp
LnR5cGUoKSk7Ci19Ci0KLS8vIEJhc2ljIHRlc3QgdGhhdCBDcmVhdGVVZHBUcmFuc3BvcnQgd29y
a3Mgd2l0aCBBRl9JTkVUIGFuZCBBRl9JTkVUNi4KLVRFU1RfRihPcnRjRmFjdG9yeVRlc3QsIENy
ZWF0ZVVkcFRyYW5zcG9ydCkgewotICBhdXRvIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVVkcFRyYW5zcG9ydChBRl9JTkVUKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0Lm9rKCkpOwotICBy
ZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVVZHBUcmFuc3BvcnQoQUZfSU5FVDYpOwotICBF
WFBFQ1RfVFJVRShyZXN1bHQub2soKSk7Ci19Ci0KLS8vIFRlc3QgQ3JlYXRlVWRwUG9ydCB3aXRo
IHRoZSB8bWluX3BvcnR8IGFuZCB8bWF4X3BvcnR8IGFyZ3VtZW50cy4KLVRFU1RfRihPcnRjRmFj
dG9yeVRlc3QsIENyZWF0ZVVkcFRyYW5zcG9ydFdpdGhQb3J0UmFuZ2UpIHsKLSAgYXV0byBzb2Nr
ZXRfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVVkcFRyYW5zcG9ydChBRl9JTkVULCAy
MDAwLCAyMDAyKTsKLSAgQVNTRVJUX1RSVUUoc29ja2V0X3Jlc3VsdDEub2soKSk7Ci0gIEVYUEVD
VF9FUSgyMDAwLCBzb2NrZXRfcmVzdWx0MS52YWx1ZSgpLT5HZXRMb2NhbEFkZHJlc3MoKS5wb3J0
KCkpOwotICBhdXRvIHNvY2tldF9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlVWRwVHJh
bnNwb3J0KEFGX0lORVQsIDIwMDAsIDIwMDIpOwotICBBU1NFUlRfVFJVRShzb2NrZXRfcmVzdWx0
Mi5vaygpKTsKLSAgRVhQRUNUX0VRKDIwMDEsIHNvY2tldF9yZXN1bHQyLnZhbHVlKCktPkdldExv
Y2FsQWRkcmVzcygpLnBvcnQoKSk7Ci0gIGF1dG8gc29ja2V0X3Jlc3VsdDMgPSBvcnRjX2ZhY3Rv
cnlfLT5DcmVhdGVVZHBUcmFuc3BvcnQoQUZfSU5FVCwgMjAwMCwgMjAwMik7Ci0gIEFTU0VSVF9U
UlVFKHNvY2tldF9yZXN1bHQzLm9rKCkpOwotICBFWFBFQ1RfRVEoMjAwMiwgc29ja2V0X3Jlc3Vs
dDMudmFsdWUoKS0+R2V0TG9jYWxBZGRyZXNzKCkucG9ydCgpKTsKLQotICAvLyBBbGwgc29ja2V0
cyBpbiB0aGUgcmFuZ2UgaGF2ZSBiZWVuIGV4aGF1c3RlZCwgc28gdGhlIG5leHQgY2FsbCBzaG91
bGQKLSAgLy8gZmFpbC4KLSAgYXV0byBmYWlsZWRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3Jl
YXRlVWRwVHJhbnNwb3J0KEFGX0lORVQsIDIwMDAsIDIwMDIpOwotICBFWFBFQ1RfRVEoUlRDRXJy
b3JUeXBlOjpSRVNPVVJDRV9FWEhBVVNURUQsIGZhaWxlZF9yZXN1bHQuZXJyb3IoKS50eXBlKCkp
OwotCi0gIC8vIElmIG9uZSBzb2NrZXQgaXMgZGVzdHJveWVkLCB0aGF0IHBvcnQgc2hvdWxkIGJl
IGZyZWVkIHVwIGFnYWluLgotICBzb2NrZXRfcmVzdWx0Mi5Nb3ZlVmFsdWUoKS5yZXNldCgpOwot
ICBhdXRvIHNvY2tldF9yZXN1bHQ0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlVWRwVHJhbnNwb3J0
KEFGX0lORVQsIDIwMDAsIDIwMDIpOwotICBBU1NFUlRfVFJVRShzb2NrZXRfcmVzdWx0NC5vaygp
KTsKLSAgRVhQRUNUX0VRKDIwMDEsIHNvY2tldF9yZXN1bHQ0LnZhbHVlKCktPkdldExvY2FsQWRk
cmVzcygpLnBvcnQoKSk7Ci19Ci0KLS8vIEJhc2ljIHRlc3QgdGhhdCBDcmVhdGVVZHBUcmFuc3Bv
cnQgd29ya3Mgd2l0aCBBRl9JTkVUIGFuZCBBRl9JTkVUNi4KLVRFU1RfRihPcnRjRmFjdG9yeVRl
c3QsIENyZWF0ZVVkcFRyYW5zcG9ydFdpdGhJbnZhbGlkQWRkcmVzc0ZhbWlseSkgewotICBhdXRv
IHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVVkcFRyYW5zcG9ydCgxMjM0NSk7Ci0gIEVY
UEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCByZXN1bHQuZXJyb3IoKS50
eXBlKCkpOwotfQotCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVVZHBUcmFuc3BvcnRX
aXRoSW52YWxpZFBvcnRSYW5nZSkgewotICBhdXRvIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNy
ZWF0ZVVkcFRyYW5zcG9ydChBRl9JTkVULCAzMDAwLCAyMDAwKTsKLSAgRVhQRUNUX0VRKFJUQ0Vy
cm9yVHlwZTo6SU5WQUxJRF9SQU5HRSwgcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLX0KLQotLy8g
SnVzdCBzYW5pdHkgY2hlY2sgdGhhdCBlYWNoICJHZXRDYXBhYmlsaXRpZXMiIG1ldGhvZCByZXR1
cm5zIHNvbWUgY29kZWNzLgotVEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgR2V0U2VuZGVyQW5kUmVj
ZWl2ZXJDYXBhYmlsaXRpZXMpIHsKLSAgUnRwQ2FwYWJpbGl0aWVzIGF1ZGlvX3NlbmRfY2FwcyA9
Ci0gICAgICBvcnRjX2ZhY3RvcnlfLT5HZXRSdHBTZW5kZXJDYXBhYmlsaXRpZXMoY3JpY2tldDo6
TUVESUFfVFlQRV9BVURJTyk7Ci0gIEVYUEVDVF9HVChhdWRpb19zZW5kX2NhcHMuY29kZWNzLnNp
emUoKSwgMHUpOwotICBSdHBDYXBhYmlsaXRpZXMgdmlkZW9fc2VuZF9jYXBzID0KLSAgICAgIG9y
dGNfZmFjdG9yeV8tPkdldFJ0cFNlbmRlckNhcGFiaWxpdGllcyhjcmlja2V0OjpNRURJQV9UWVBF
X1ZJREVPKTsKLSAgRVhQRUNUX0dUKHZpZGVvX3NlbmRfY2Fwcy5jb2RlY3Muc2l6ZSgpLCAwdSk7
Ci0gIFJ0cENhcGFiaWxpdGllcyBhdWRpb19yZWNlaXZlX2NhcHMgPQotICAgICAgb3J0Y19mYWN0
b3J5Xy0+R2V0UnRwUmVjZWl2ZXJDYXBhYmlsaXRpZXMoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJ
Tyk7Ci0gIEVYUEVDVF9HVChhdWRpb19yZWNlaXZlX2NhcHMuY29kZWNzLnNpemUoKSwgMHUpOwot
ICBSdHBDYXBhYmlsaXRpZXMgdmlkZW9fcmVjZWl2ZV9jYXBzID0KLSAgICAgIG9ydGNfZmFjdG9y
eV8tPkdldFJ0cFJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8p
OwotICBFWFBFQ1RfR1QodmlkZW9fcmVjZWl2ZV9jYXBzLmNvZGVjcy5zaXplKCksIDB1KTsKLX0K
LQotLy8gQ2FsbGluZyBDcmVhdGVSdHBTZW5kZXIgd2l0aCBhIG51bGwgdHJhY2sgc2hvdWxkIGZh
aWwsIHNpbmNlIHRoYXQgbWFrZXMgaXQKLS8vIGltcG9zc2libGUgdG8ga25vdyB3aGV0aGVyIHRv
IGNyZWF0ZSBhbiBhdWRpbyBvciB2aWRlbyBzZW5kZXIuIFRoZQotLy8gYXBwbGljYXRpb24gc2hv
dWxkIGJlIHVzaW5nIHRoZSBtZXRob2QgdGhhdCB0YWtlcyBhIGNyaWNrZXQ6Ok1lZGlhVHlwZQot
Ly8gaW5zdGVhZC4KLVRFU1RfRihPcnRjRmFjdG9yeVRlc3QsIENyZWF0ZVNlbmRlcldpdGhOdWxs
VHJhY2spIHsKLSAgYXV0byBydHBfdHJhbnNwb3J0ID0gQ3JlYXRlUnRwVHJhbnNwb3J0V2l0aEZh
a2VQYWNrZXRUcmFuc3BvcnQoKTsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBTZW5kZXIobnVsbHB0ciwgcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9FUShS
VENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCByZXN1bHQuZXJyb3IoKS50eXBlKCkpOwot
fQotCi0vLyBDYWxsaW5nIENyZWF0ZVJ0cFNlbmRlciBvciBDcmVhdGVSdHBSZWNlaXZlciB3aXRo
IE1FRElBX1RZUEVfREFUQSBzaG91bGQKLS8vIGZhaWwuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0
LCBDcmVhdGVTZW5kZXJPclJlY2VpZXZlcldpdGhJbnZhbGlkS2luZCkgewotICBhdXRvIHJ0cF90
cmFuc3BvcnQgPSBDcmVhdGVSdHBUcmFuc3BvcnRXaXRoRmFrZVBhY2tldFRyYW5zcG9ydCgpOwot
ICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoY3Jp
Y2tldDo6TUVESUFfVFlQRV9EQVRBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9FUShS
VENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCBzZW5kZXJfcmVzdWx0LmVycm9yKCkudHlw
ZSgpKTsKLSAgYXV0byByZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBS
ZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQSwgcnRwX3RyYW5zcG9ydC5n
ZXQoKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCByZWNl
aXZlcl9yZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotfQotCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0
LCBDcmVhdGVTZW5kZXJzT3JSZWNlaWV2ZXJzV2l0aE51bGxUcmFuc3BvcnQpIHsKLSAgYXV0byBz
ZW5kZXJfcmVzdWx0ID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcihjcmlj
a2V0OjpNRURJQV9UWVBFX0FVRElPLCBudWxscHRyKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlw
ZTo6SU5WQUxJRF9QQVJBTUVURVIsIHNlbmRlcl9yZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotICBh
dXRvIHJlY2VpdmVyX3Jlc3VsdCA9Ci0gICAgICBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNl
aXZlcihjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBudWxscHRyKTsKLSAgRVhQRUNUX0VRKFJU
Q0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsIHJlY2VpdmVyX3Jlc3VsdC5lcnJvcigpLnR5
cGUoKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0
Yy9vcnRjcnRwcmVjZWl2ZXJfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGYwZTkyMzg3MTQ1ZWFjNjRhOWY2ZDgwOGYyNGVmYWZhOWZlYTM1ZGYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJfdW5pdHRlc3QuY2MKKysr
IC9kZXYvbnVsbApAQCAtMSw1NTAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQot
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1
ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19k
ZWNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVk
aW9fZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdp
bmUuaCIKLSNpbmNsdWRlICJvcnRjL29ydGNmYWN0b3J5LmgiCi0jaW5jbHVkZSAib3J0Yy90ZXN0
cnRwcGFyYW1ldGVycy5oIgotI2luY2x1ZGUgInAycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQu
aCIKLSNpbmNsdWRlICJwYy90ZXN0L2Zha2V2aWRlb3RyYWNrc291cmNlLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvZ3VuaXQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFRoaXMgdGVzdCB1
c2VzIGFuIGluZGl2aWR1YWwgUnRwUmVjZWl2ZXIgdXNpbmcgb25seSB0aGUgcHVibGljIGludGVy
ZmFjZSwKLS8vIGFuZCB2ZXJpZmllcyB0aGF0IGl0IGJlaGF2ZXMgYXMgZGVzaWduZWQgYXQgYW4g
QVBJIGxldmVsLiBBbHNvIHRlc3RzIHRoYXQKLS8vIHBhcmFtZXRlcnMgYXJlIGFwcGxpZWQgdG8g
dGhlIGF1ZGlvL3ZpZGVvIGVuZ2luZXMgYXMgZXhwZWN0ZWQuIE5ldHdvcmsgYW5kCi0vLyBtZWRp
YSBpbnRlcmZhY2VzIGFyZSBmYWtlZCB0byBpc29sYXRlIHdoYXQncyBiZWluZyB0ZXN0ZWQuCi0v
LwotLy8gVGhpcyB0ZXN0IHNob3VsZG4ndCByZXN1bHQgYW55IGFueSBhY3R1YWwgbWVkaWEgYmVp
bmcgc2VudC4gVGhhdCBzb3J0IG9mCi0vLyB0ZXN0IHNob3VsZCBnbyBpbiBvcnRjZmFjdG9yeV9p
bnRlZ3JhdGlvbnRlc3QuY2MuCi1jbGFzcyBPcnRjUnRwUmVjZWl2ZXJUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgT3J0Y1J0cFJlY2VpdmVyVGVzdCgpIDogZmFrZV9w
YWNrZXRfdHJhbnNwb3J0XygiZmFrZSIpIHsKLSAgICBmYWtlX21lZGlhX2VuZ2luZV8gPSBuZXcg
Y3JpY2tldDo6RmFrZU1lZGlhRW5naW5lKCk7Ci0gICAgLy8gTm90ZTogVGhpcyBkb2Vzbid0IG5l
ZWQgdG8gdXNlIGZha2UgbmV0d29yayBjbGFzc2VzLCBzaW5jZSB3ZSBhbHJlYWR5Ci0gICAgLy8g
dXNlIEZha2VQYWNrZXRUcmFuc3BvcnQuCi0gICAgYXV0byBvcnRjX2ZhY3RvcnlfcmVzdWx0ID0g
T3J0Y0ZhY3Rvcnk6OkNyZWF0ZSgKLSAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlh
RW5naW5lSW50ZXJmYWNlPihmYWtlX21lZGlhX2VuZ2luZV8pLAotICAgICAgICBDcmVhdGVCdWls
dGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLCBDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9y
eSgpKTsKLSAgICBvcnRjX2ZhY3RvcnlfID0gb3J0Y19mYWN0b3J5X3Jlc3VsdC5Nb3ZlVmFsdWUo
KTsKLSAgICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVy
cy5ydGNwLm11eCA9IHRydWU7Ci0gICAgYXV0byBydHBfdHJhbnNwb3J0X3Jlc3VsdCA9IG9ydGNf
ZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgICAgcGFyYW1ldGVycywgJmZha2Vf
cGFja2V0X3RyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIpOwotICAgIHJ0cF90cmFuc3BvcnRf
ID0gcnRwX3RyYW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIH0KLQotIHByb3RlY3RlZDoK
LSAgLy8gT3duZWQgYnkgfG9ydGNfZmFjdG9yeV98LgotICBjcmlja2V0OjpGYWtlTWVkaWFFbmdp
bmUqIGZha2VfbWVkaWFfZW5naW5lXzsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IGZha2Vf
cGFja2V0X3RyYW5zcG9ydF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFj
ZT4gb3J0Y19mYWN0b3J5XzsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVyZmFj
ZT4gcnRwX3RyYW5zcG9ydF87Ci19OwotCi0vLyBTZWUgb3J0Y3J0cHJlY2VpdmVyaW50ZXJmYWNl
LmggZm9yIHRoZSBjdXJyZW50IGV4cGVjdGF0aW9ucyBvZiB3aGF0IEdldFRyYWNrCi0vLyB3aWxs
IHJldHVybiBhZnRlciBjYWxscyB0byBSZWNlaXZlLgotLy8gVE9ETyhkZWFkYmVlZik6IFJlcGxh
Y2UgdGhpcyB0ZXN0IHdoZW4gdGhlIG5vbi1zdGFuZGFyZCBiZWhhdmlvciBpcyBmaXhlZAotLy8g
YW5kIEdldFRyYWNrIHN0YXJ0cyByZXR1cm5pbmcgdGhlIHNhbWUgdHJhY2sgZm9yIHRoZSBsaWZl
dGltZSBvZiB0aGUKLS8vIHJlY2VpdmVyLgotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIEdl
dFRyYWNrKSB7Ci0gIGF1dG8gcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNw
b3J0Xy5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKHJlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLSAgYXV0
byByZWNlaXZlciA9IHJlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAvLyBUcmFjayBp
bml0aWFsbHkgZXhwZWN0ZWQgdG8gYmUgbnVsbC4KLSAgRVhQRUNUX0VRKG51bGxwdHIsIHJlY2Vp
dmVyX3Jlc3VsdC52YWx1ZSgpLmdldCgpKTsKLQotICBFWFBFQ1RfVFJVRShyZWNlaXZlci0+UmVj
ZWl2ZShNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoTm9Tc3JjKCkpLm9rKCkpOwotICBhdXRv
IGluaXRpYWxfdHJhY2sgPSByZWNlaXZlci0+R2V0VHJhY2soKTsKLSAgRVhQRUNUX05FKG51bGxw
dHIsIGluaXRpYWxfdHJhY2spOwotCi0gIC8vIENvZGVjIGNoYW5naW5nIGJ1dCBTU1JDIChvciBs
YWNrIHRoZXJlb2YpIGlzbid0OyBzaG91bGRuJ3QgY3JlYXRlIG5ldyB0cmFjawotICBFWFBFQ1Rf
VFJVRShyZWNlaXZlci0+UmVjZWl2ZShNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnNXaXRoTm9Tc3Jj
KCkpLm9rKCkpOwotICBFWFBFQ1RfRVEoaW5pdGlhbF90cmFjaywgcmVjZWl2ZXItPkdldFRyYWNr
KCkpOwotCi0gIC8vIEV4cGxpY2l0bHkgc2V0IFNTUkMgYW5kIGV4cGVjdCBhIGRpZmZlcmVudCB0
cmFjay4KLSAgRVhQRUNUX1RSVUUoCi0gICAgICByZWNlaXZlci0+UmVjZWl2ZShNYWtlTWluaW1h
bFZwOVBhcmFtZXRlcnNXaXRoU3NyYygweGRlYWRiZWVmKSkub2soKSk7Ci0gIGF1dG8gbmV4dF90
cmFjayA9IHJlY2VpdmVyLT5HZXRUcmFjaygpOwotICBFWFBFQ1RfTkUobmV4dF90cmFjaywgaW5p
dGlhbF90cmFjayk7Ci0KLSAgLy8gRGVhY3RpdmF0aW5nIHRoZSBlbmNvZGluZyBzaG91bGRuJ3Qg
Y2hhbmdlIHRoZSB0cmFjay4KLSAgUnRwUGFyYW1ldGVycyBpbmFjdGl2ZV9lbmNvZGluZyA9Ci0g
ICAgICBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnNXaXRoU3NyYygweGRlYWRiZWVmKTsKLSAgaW5h
Y3RpdmVfZW5jb2RpbmcuZW5jb2RpbmdzWzBdLmFjdGl2ZSA9IGZhbHNlOwotICBFWFBFQ1RfVFJV
RShyZWNlaXZlci0+UmVjZWl2ZShpbmFjdGl2ZV9lbmNvZGluZykub2soKSk7Ci0gIEVYUEVDVF9F
UShuZXh0X3RyYWNrLCByZWNlaXZlci0+R2V0VHJhY2soKSk7Ci0KLSAgLy8gUmVtb3ZpbmcgYWxs
IGVuY29kaW5ncyAqaXMqIGV4cGVjdGVkIHRvIGNsZWFyIHRoZSB0cmFjay4KLSAgUnRwUGFyYW1l
dGVycyBub19lbmNvZGluZ3MgPSBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnNXaXRoU3NyYygweGRl
YWRiZWVmKTsKLSAgbm9fZW5jb2RpbmdzLmVuY29kaW5ncy5jbGVhcigpOwotICBFWFBFQ1RfVFJV
RShyZWNlaXZlci0+UmVjZWl2ZShub19lbmNvZGluZ3MpLm9rKCkpOwotICBFWFBFQ1RfRVEobnVs
bHB0ciwgcmVjZWl2ZXItPkdldFRyYWNrKCkpOwotfQotCi0vLyBDdXJyZW50bHkgU2V0VHJhbnNw
b3J0IGlzbid0IHN1cHBvcnRlZC4gV2hlbiBpdCBpcywgcmVwbGFjZSB0aGlzIHRlc3Qgd2l0aCBh
Ci0vLyB0ZXN0L3Rlc3RzIGZvciBpdC4KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBTZXRU
cmFuc3BvcnRGYWlscykgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRf
dHJhbnNwb3J0KCJhbm90aGVyX3RyYW5zcG9ydCIpOwotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRlcnMucnRjcC5tdXggPSB0cnVlOwotICBhdXRvIHJ0cF90
cmFuc3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAg
ICAgcGFyYW1ldGVycywgJmZha2VfcGFja2V0X3RyYW5zcG9ydCwgbnVsbHB0ciwgbnVsbHB0cik7
Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydCA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgp
OwotCi0gIGF1dG8gcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVj
ZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5n
ZXQoKSk7Ci0gIGF1dG8gcmVjZWl2ZXIgPSByZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0g
IEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAg
ICAgIHJlY2VpdmVyLT5TZXRUcmFuc3BvcnQocnRwX3RyYW5zcG9ydC5nZXQoKSkudHlwZSgpKTsK
LX0KLQotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIEdldFRyYW5zcG9ydCkgewotICBhdXRv
IHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKGNyaWNrZXQ6Ok1FRElB
X1RZUEVfQVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfRVEocnRwX3RyYW5zcG9ydF8u
Z2V0KCksIHJlc3VsdC52YWx1ZSgpLT5HZXRUcmFuc3BvcnQoKSk7Ci19Ci0KLS8vIFRlc3QgdGhh
dCAiUmVjZWl2ZSIgY2F1c2VzIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQg
dG8gdGhlIG1lZGlhCi0vLyBlbmdpbmUgbGV2ZWwsIGZvciBhbiBhdWRpbyByZWNlaXZlci4KLVRF
U1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlQXBwbGllc0F1ZGlvUGFyYW1ldGVyc1Rv
TWVkaWFFbmdpbmUpIHsKLSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rv
cnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8s
IHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9IGF1ZGlvX3Jl
Y2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAvLyBGaXJzdCwgY3JlYXRlIHBhcmFtZXRl
cnMgd2l0aCBhbGwgdGhlIGJlbGxzIGFuZCB3aGlzdGxlcy4KLSAgUnRwUGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyBvcHVzX2NvZGVjOwotICBvcHVzX2NvZGVj
Lm5hbWUgPSAib3B1cyI7Ci0gIG9wdXNfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVf
QVVESU87Ci0gIG9wdXNfY29kZWMucGF5bG9hZF90eXBlID0gMTIwOwotICBvcHVzX2NvZGVjLmNs
b2NrX3JhdGUuZW1wbGFjZSg0ODAwMCk7Ci0gIG9wdXNfY29kZWMubnVtX2NoYW5uZWxzLmVtcGxh
Y2UoMik7Ci0gIG9wdXNfY29kZWMucGFyYW1ldGVyc1sibWlucHRpbWUiXSA9ICIxMCI7Ci0gIG9w
dXNfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6VFJB
TlNQT1JUX0NDKTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShvcHVz
X2NvZGVjKSk7Ci0KLSAgLy8gQWRkIHR3byBjb2RlY3MsIGV4cGVjdGluZyB0aGUgZmlyc3QgdG8g
YmUgdXNlZC4KLSAgLy8gVE9ETyhkZWFkYmVlZik6IE9uY2UgImNvZGVjX3BheWxvYWRfdHlwZSIg
aXMgc3VwcG9ydGVkLCB1c2UgaXQgdG8gc2VsZWN0IGEKLSAgLy8gY29kZWMgdGhhdCdzIG5vdCBh
dCB0aGUgdG9wIG9mIHRoZSBsaXN0LgotICBSdHBDb2RlY1BhcmFtZXRlcnMgaXNhY19jb2RlYzsK
LSAgaXNhY19jb2RlYy5uYW1lID0gIklTQUMiOwotICBpc2FjX2NvZGVjLmtpbmQgPSBjcmlja2V0
OjpNRURJQV9UWVBFX0FVRElPOwotICBpc2FjX2NvZGVjLnBheWxvYWRfdHlwZSA9IDExMDsKLSAg
aXNhY19jb2RlYy5jbG9ja19yYXRlLmVtcGxhY2UoMTYwMDApOwotICBwYXJhbWV0ZXJzLmNvZGVj
cy5wdXNoX2JhY2soc3RkOjptb3ZlKGlzYWNfY29kZWMpKTsKLQotICBSdHBFbmNvZGluZ1BhcmFt
ZXRlcnMgZW5jb2Rpbmc7Ci0gIGVuY29kaW5nLnNzcmMuZW1wbGFjZSgweGRlYWRiZWVmKTsKLSAg
cGFyYW1ldGVycy5lbmNvZGluZ3MucHVzaF9iYWNrKHN0ZDo6bW92ZShlbmNvZGluZykpOwotCi0g
IHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAotICAgICAgInVybjpp
ZXRmOnBhcmFtczpydHAtaGRyZXh0OnNzcmMtYXVkaW8tbGV2ZWwiLCAzKTsKLQotICBFWFBFQ1Rf
VFJVRShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5vaygpKTsKLQotICAvLyBO
b3cgdmVyaWZ5IHRoYXQgdGhlIHBhcmFtZXRlcnMgd2VyZSBhcHBsaWVkIHRvIHRoZSBmYWtlIG1l
ZGlhIGVuZ2luZSBsYXllcgotICAvLyB0aGF0IGV4aXN0cyBiZWxvdyBCYXNlQ2hhbm5lbC4KLSAg
Y3JpY2tldDo6RmFrZVZvaWNlTWVkaWFDaGFubmVsKiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAg
ICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWb2ljZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShu
dWxscHRyLCBmYWtlX3ZvaWNlX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZvaWNlX2No
YW5uZWwtPnBsYXlvdXQoKSk7Ci0KLSAgLy8gVmVyaWZ5IGNvZGVjIHBhcmFtZXRlcnMuCi0gIEFT
U0VSVF9HVChmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3ZfY29kZWNzKCkuc2l6ZSgpLCAwdSk7Ci0g
IGNvbnN0IGNyaWNrZXQ6OkF1ZGlvQ29kZWMmIHRvcF9jb2RlYyA9IGZha2Vfdm9pY2VfY2hhbm5l
bC0+cmVjdl9jb2RlY3MoKVswXTsKLSAgRVhQRUNUX0VRKCJvcHVzIiwgdG9wX2NvZGVjLm5hbWUp
OwotICBFWFBFQ1RfRVEoMTIwLCB0b3BfY29kZWMuaWQpOwotICBFWFBFQ1RfRVEoNDgwMDAsIHRv
cF9jb2RlYy5jbG9ja3JhdGUpOwotICBFWFBFQ1RfRVEoMnUsIHRvcF9jb2RlYy5jaGFubmVscyk7
Ci0gIEFTU0VSVF9ORSh0b3BfY29kZWMucGFyYW1zLmVuZCgpLCB0b3BfY29kZWMucGFyYW1zLmZp
bmQoIm1pbnB0aW1lIikpOwotICBFWFBFQ1RfRVEoIjEwIiwgdG9wX2NvZGVjLnBhcmFtcy5hdCgi
bWlucHRpbWUiKSk7Ci0KLSAgLy8gVmVyaWZ5IGVuY29kaW5nIHBhcmFtZXRlcnMuCi0gIEFTU0VS
VF9FUSgxdSwgZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2X3N0cmVhbXMoKS5zaXplKCkpOwotICBj
b25zdCBjcmlja2V0OjpTdHJlYW1QYXJhbXMmIHJlY3Zfc3RyZWFtID0KLSAgICAgIGZha2Vfdm9p
Y2VfY2hhbm5lbC0+cmVjdl9zdHJlYW1zKClbMF07Ci0gIEVYUEVDVF9FUSgxdSwgcmVjdl9zdHJl
YW0uc3NyY3Muc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDB4ZGVhZGJlZWYsIHJlY3Zfc3RyZWFtLmZp
cnN0X3NzcmMoKSk7Ci0KLSAgLy8gVmVyaWZ5IGhlYWRlciBleHRlbnNpb25zLgotICBBU1NFUlRf
RVEoMXUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+cmVjdl9leHRlbnNpb25zKCkuc2l6ZSgpKTsKLSAg
Y29uc3QgUnRwRXh0ZW5zaW9uJiBleHRlbnNpb24gPSBmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3Zf
ZXh0ZW5zaW9ucygpWzBdOwotICBFWFBFQ1RfRVEoInVybjppZXRmOnBhcmFtczpydHAtaGRyZXh0
OnNzcmMtYXVkaW8tbGV2ZWwiLCBleHRlbnNpb24udXJpKTsKLSAgRVhQRUNUX0VRKDMsIGV4dGVu
c2lvbi5pZCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCAiUmVjZWl2ZSIgY2F1c2VzIHRoZSBleHBlY3Rl
ZCBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIG1lZGlhCi0vLyBlbmdpbmUgbGV2ZWws
IGZvciBhIHZpZGVvIHJlY2VpdmVyLgotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIFJlY2Vp
dmVBcHBsaWVzVmlkZW9QYXJhbWV0ZXJzVG9NZWRpYUVuZ2luZSkgewotICBhdXRvIHZpZGVvX3Jl
Y2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAg
Y3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRv
IHZpZGVvX3JlY2VpdmVyID0gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0g
IC8vIEZpcnN0LCBjcmVhdGUgcGFyYW1ldGVycyB3aXRoIGFsbCB0aGUgYmVsbHMgYW5kIHdoaXN0
bGVzLgotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJz
IHZwOF9jb2RlYzsKLSAgdnA4X2NvZGVjLm5hbWUgPSAiVlA4IjsKLSAgdnA4X2NvZGVjLmtpbmQg
PSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB2cDhfY29kZWMucGF5bG9hZF90eXBlID0g
OTk7Ci0gIC8vIFRyeSBhIGNvdXBsZSB0eXBlcyBvZiBmZWVkYmFjayBwYXJhbXMuICJHZW5lcmlj
IE5BQ0siIGlzIGEgYml0IG9mIGEKLSAgLy8gc3BlY2lhbCBjYXNlLCBzbyB0ZXN0IGl0IGhlcmUu
Ci0gIHZwOF9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBl
OjpDQ00sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNwRmVlZGJh
Y2tNZXNzYWdlVHlwZTo6RklSKTsKLSAgdnA4X2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9i
YWNrKFJ0Y3BGZWVkYmFja1R5cGU6Ok5BQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSdGNwRmVlZGJhY2tNZXNzYWdlVHlwZTo6R0VORVJJQ19OQUNLKTsKLSAgcGFy
YW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZSh2cDhfY29kZWMpKTsKLQotICBSdHBD
b2RlY1BhcmFtZXRlcnMgdnA4X3J0eF9jb2RlYzsKLSAgdnA4X3J0eF9jb2RlYy5uYW1lID0gInJ0
eCI7Ci0gIHZwOF9ydHhfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0g
IHZwOF9ydHhfY29kZWMucGF5bG9hZF90eXBlID0gMTAwOwotICB2cDhfcnR4X2NvZGVjLnBhcmFt
ZXRlcnNbImFwdCJdID0gIjk5IjsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6
bW92ZSh2cDhfcnR4X2NvZGVjKSk7Ci0KLSAgLy8gQWRkIHR3byBjb2RlY3MsIGV4cGVjdGluZyB0
aGUgZmlyc3QgdG8gYmUgdXNlZC4KLSAgLy8gVE9ETyhkZWFkYmVlZik6IE9uY2UgImNvZGVjX3Bh
eWxvYWRfdHlwZSIgaXMgc3VwcG9ydGVkLCB1c2UgaXQgdG8gc2VsZWN0IGEKLSAgLy8gY29kZWMg
dGhhdCdzIG5vdCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0LgotICBSdHBDb2RlY1BhcmFtZXRlcnMg
dnA5X2NvZGVjOwotICB2cDlfY29kZWMubmFtZSA9ICJWUDkiOwotICB2cDlfY29kZWMua2luZCA9
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0gIHZwOV9jb2RlYy5wYXlsb2FkX3R5cGUgPSAx
MDI7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUodnA5X2NvZGVjKSk7
Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHZwOV9ydHhfY29kZWM7Ci0gIHZwOV9ydHhfY29kZWMu
bmFtZSA9ICJydHgiOwotICB2cDlfcnR4X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBF
X1ZJREVPOwotICB2cDlfcnR4X2NvZGVjLnBheWxvYWRfdHlwZSA9IDEwMzsKLSAgdnA5X3J0eF9j
b2RlYy5wYXJhbWV0ZXJzWyJhcHQiXSA9ICIxMDIiOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNo
X2JhY2soc3RkOjptb3ZlKHZwOV9ydHhfY29kZWMpKTsKLQotICBSdHBFbmNvZGluZ1BhcmFtZXRl
cnMgZW5jb2Rpbmc7Ci0gIGVuY29kaW5nLnNzcmMuZW1wbGFjZSgweGRlYWRiZWVmKTsKLSAgZW5j
b2RpbmcucnR4LmVtcGxhY2UoMHhiYWFkZmVlZCk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1
c2hfYmFjayhzdGQ6Om1vdmUoZW5jb2RpbmcpKTsKLQotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRl
bnNpb25zLmVtcGxhY2VfYmFjaygidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iLCA0KTsKLSAg
cGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soCi0gICAgICAiaHR0cDov
L3d3dy53ZWJydGMub3JnL2V4cGVyaW1lbnRzL3J0cC1oZHJleHQvcGxheW91dC1kZWxheSIsIDYp
OwotCi0gIEVYUEVDVF9UUlVFKHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKHBhcmFtZXRlcnMpLm9r
KCkpOwotCi0gIC8vIE5vdyB2ZXJpZnkgdGhhdCB0aGUgcGFyYW1ldGVycyB3ZXJlIGFwcGxpZWQg
dG8gdGhlIGZha2UgbWVkaWEgZW5naW5lIGxheWVyCi0gIC8vIHRoYXQgZXhpc3RzIGJlbG93IEJh
c2VDaGFubmVsLgotICBjcmlja2V0OjpGYWtlVmlkZW9NZWRpYUNoYW5uZWwqIGZha2VfdmlkZW9f
Y2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZpZGVvQ2hhbm5lbCgwKTsK
LSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2VfdmlkZW9fY2hhbm5lbCk7Ci0KLSAgLy8gVmVyaWZ5
IGNvZGVjIHBhcmFtZXRlcnMuCi0gIEFTU0VSVF9HRShmYWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3Zf
Y29kZWNzKCkuc2l6ZSgpLCAydSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29kZWMmIHRvcF9j
b2RlYyA9IGZha2VfdmlkZW9fY2hhbm5lbC0+cmVjdl9jb2RlY3MoKVswXTsKLSAgRVhQRUNUX0VR
KCJWUDgiLCB0b3BfY29kZWMubmFtZSk7Ci0gIEVYUEVDVF9FUSg5OSwgdG9wX2NvZGVjLmlkKTsK
LSAgRVhQRUNUX1RSVUUodG9wX2NvZGVjLmZlZWRiYWNrX3BhcmFtcy5IYXMoeyJjY20iLCAiZmly
In0pKTsKLSAgRVhQRUNUX1RSVUUodG9wX2NvZGVjLmZlZWRiYWNrX3BhcmFtcy5IYXMoY3JpY2tl
dDo6RmVlZGJhY2tQYXJhbSgibmFjayIpKSk7Ci0KLSAgY29uc3QgY3JpY2tldDo6VmlkZW9Db2Rl
YyYgcnR4X2NvZGVjID0gZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X2NvZGVjcygpWzFdOwotICBF
WFBFQ1RfRVEoInJ0eCIsIHJ0eF9jb2RlYy5uYW1lKTsKLSAgRVhQRUNUX0VRKDEwMCwgcnR4X2Nv
ZGVjLmlkKTsKLSAgQVNTRVJUX05FKHJ0eF9jb2RlYy5wYXJhbXMuZW5kKCksIHJ0eF9jb2RlYy5w
YXJhbXMuZmluZCgiYXB0IikpOwotICBFWFBFQ1RfRVEoIjk5IiwgcnR4X2NvZGVjLnBhcmFtcy5h
dCgiYXB0IikpOwotCi0gIC8vIFZlcmlmeSBlbmNvZGluZyBwYXJhbWV0ZXJzLgotICBBU1NFUlRf
RVEoMXUsIGZha2VfdmlkZW9fY2hhbm5lbC0+cmVjdl9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAgY29u
c3QgY3JpY2tldDo6U3RyZWFtUGFyYW1zJiByZWN2X3N0cmVhbSA9Ci0gICAgICBmYWtlX3ZpZGVv
X2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpWzBdOwotICBFWFBFQ1RfRVEoMnUsIHJlY3Zfc3RyZWFt
LnNzcmNzLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgweGRlYWRiZWVmLCByZWN2X3N0cmVhbS5maXJz
dF9zc3JjKCkpOwotICB1aW50MzJfdCBydHhfc3NyYyA9IDB1OwotICBFWFBFQ1RfVFJVRShyZWN2
X3N0cmVhbS5HZXRGaWRTc3JjKHJlY3Zfc3RyZWFtLmZpcnN0X3NzcmMoKSwgJnJ0eF9zc3JjKSk7
Ci0gIEVYUEVDVF9FUSgweGJhYWRmZWVkLCBydHhfc3NyYyk7Ci0KLSAgLy8gVmVyaWZ5IGhlYWRl
ciBleHRlbnNpb25zLgotICBBU1NFUlRfRVEoMnUsIGZha2VfdmlkZW9fY2hhbm5lbC0+cmVjdl9l
eHRlbnNpb25zKCkuc2l6ZSgpKTsKLSAgY29uc3QgUnRwRXh0ZW5zaW9uJiBleHRlbnNpb24xID0g
ZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X2V4dGVuc2lvbnMoKVswXTsKLSAgRVhQRUNUX0VRKCJ1
cm46M2dwcDp2aWRlby1vcmllbnRhdGlvbiIsIGV4dGVuc2lvbjEudXJpKTsKLSAgRVhQRUNUX0VR
KDQsIGV4dGVuc2lvbjEuaWQpOwotICBjb25zdCBSdHBFeHRlbnNpb24mIGV4dGVuc2lvbjIgPSBm
YWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3ZfZXh0ZW5zaW9ucygpWzFdOwotICBFWFBFQ1RfRVEoImh0
dHA6Ly93d3cud2VicnRjLm9yZy9leHBlcmltZW50cy9ydHAtaGRyZXh0L3BsYXlvdXQtZGVsYXki
LAotICAgICAgICAgICAgZXh0ZW5zaW9uMi51cmkpOwotICBFWFBFQ1RfRVEoNiwgZXh0ZW5zaW9u
Mi5pZCk7Ci19Ci0KLS8vIFRlc3QgY2hhbmdpbmcgYm90aCB0aGUgcmVjZWl2ZSBjb2RlYyBhbmQg
U1NSQyBhdCB0aGUgc2FtZSB0aW1lLCBhbmQgdmVyaWZ5Ci0vLyB0aGF0IHRoZSBuZXcgcGFyYW1l
dGVycyBhcmUgYXBwbGllZCB0byB0aGUgbWVkaWEgZW5naW5lIGxldmVsLgotVEVTVF9GKE9ydGNS
dHBSZWNlaXZlclRlc3QsIENhbGxpbmdSZWNlaXZlVHdpY2VDaGFuZ2VzUGFyYW1ldGVycykgewot
ICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJl
Y2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8u
Z2V0KCkpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyID0gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotICBSVENFcnJvciBlcnJvciA9Ci0gICAgICBhdWRpb19yZWNlaXZlci0+UmVj
ZWl2ZShNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aFNzcmMoMHgxMTExMTExMSkpOwotICBF
WFBFQ1RfVFJVRShlcnJvci5vaygpKTsKLSAgZXJyb3IgPQotICAgICAgYXVkaW9fcmVjZWl2ZXIt
PlJlY2VpdmUoTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVyc1dpdGhTc3JjKDB4MjIyMjIyMjIpKTsK
LSAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZvaWNlTWVkaWFD
aGFubmVsKiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5H
ZXRWb2ljZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZvaWNlX2NoYW5u
ZWwpOwotICBBU1NFUlRfR1QoZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2X2NvZGVjcygpLnNpemUo
KSwgMHUpOwotICBFWFBFQ1RfRVEoIklTQUMiLCBmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3ZfY29k
ZWNzKClbMF0ubmFtZSk7Ci0gIEFTU0VSVF9FUSgxdSwgZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2
X3N0cmVhbXMoKS5zaXplKCkpOwotICBFWFBFQ1RfRVEoMHgyMjIyMjIyMnUsIGZha2Vfdm9pY2Vf
Y2hhbm5lbC0+cmVjdl9zdHJlYW1zKClbMF0uZmlyc3Rfc3NyYygpKTsKLQotICBhdXRvIHZpZGVv
X3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAg
ICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBh
dXRvIHZpZGVvX3JlY2VpdmVyID0gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwot
ICBlcnJvciA9IHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVy
c1dpdGhTc3JjKDB4MzMzMzMzMzMpKTsKLSAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0gIGVy
cm9yID0gdmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0
aFNzcmMoMHg0NDQ0NDQ0NCkpOwotICBFWFBFQ1RfVFJVRShlcnJvci5vaygpKTsKLQotICBjcmlj
a2V0OjpGYWtlVmlkZW9NZWRpYUNoYW5uZWwqIGZha2VfdmlkZW9fY2hhbm5lbCA9Ci0gICAgICBm
YWtlX21lZGlhX2VuZ2luZV8tPkdldFZpZGVvQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxw
dHIsIGZha2VfdmlkZW9fY2hhbm5lbCk7Ci0gIEFTU0VSVF9HVChmYWtlX3ZpZGVvX2NoYW5uZWwt
PnJlY3ZfY29kZWNzKCkuc2l6ZSgpLCAwdSk7Ci0gIEVYUEVDVF9FUSgiVlA5IiwgZmFrZV92aWRl
b19jaGFubmVsLT5yZWN2X2NvZGVjcygpWzBdLm5hbWUpOwotICBBU1NFUlRfRVEoMXUsIGZha2Vf
dmlkZW9fY2hhbm5lbC0+cmVjdl9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDB4NDQ0
NDQ0NDR1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpWzBdLmZpcnN0X3NzcmMo
KSk7Ci19Ci0KLS8vIEVuc3VyZSB0aGF0IGlmIHRoZSB8YWN0aXZlfCBmbGFnIG9mIFJ0cEVuY29k
aW5nUGFyYW1ldGVycyBpcyBzZXQgdG8gZmFsc2UsCi0vLyBwbGF5b3V0IHN0b3BzIGF0IHRoZSBt
ZWRpYSBlbmdpbmUgbGV2ZWwuIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgYXBwbGljYWJsZQotLy8g
dG8gYXVkaW8gKGF0IGxlYXN0IGN1cnJlbnRseSkuCi1URVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVz
dCwgRGVhY3RpdmF0aW5nRW5jb2RpbmdTdG9wc1BsYXlvdXQpIHsKLSAgYXV0byBhdWRpb19yZWNl
aXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNy
aWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBh
dWRpb19yZWNlaXZlciA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgUnRw
UGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpOwotICBF
WFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5vaygpKTsKLQot
ICAvLyBFeHBlY3QgInBsYXlvdXQiIGZsYWcgdG8gaW5pdGlhbGx5IGJlIHRydWUuCi0gIGNyaWNr
ZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0KLSAgICAgIGZh
a2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0
ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92b2ljZV9jaGFubmVs
LT5wbGF5b3V0KCkpOwotCi0gIC8vIERlYWN0aXZhdGUgZW5jb2RpbmcgYW5kIGV4cGVjdCBpdCB0
byBjaGFuZ2UgdG8gZmFsc2UuCi0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLmFjdGl2ZSA9IGZh
bHNlOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5v
aygpKTsKLSAgRVhQRUNUX0ZBTFNFKGZha2Vfdm9pY2VfY2hhbm5lbC0+cGxheW91dCgpKTsKLX0K
LQotLy8gRW5zdXJlIHRoYXQgY2FsbGluZyBSZWNlaXZlIHdpdGggYW4gZW1wdHkgbGlzdCBvZiBl
bmNvZGluZ3MgY2F1c2VzIHJlY2VpdmUKLS8vIHN0cmVhbXMgYXQgdGhlIG1lZGlhIGVuZ2luZSBs
ZXZlbCB0byBiZSBjbGVhcmVkLgotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsCi0gICAgICAg
Q2FsbGluZ1JlY2VpdmVXaXRoRW1wdHlFbmNvZGluZ3NDbGVhcnNSZWNlaXZlU3RyZWFtcykgewot
ICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJl
Y2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8u
Z2V0KCkpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyID0gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbE9wdXNQ
YXJhbWV0ZXJzKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVyLT5SZWNlaXZlKHBhcmFt
ZXRlcnMpLm9rKCkpOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5jbGVhcigpOwotICBFWFBFQ1Rf
VFJVRShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5vaygpKTsKLQotICBjcmlj
a2V0OjpGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2VfY2hhbm5lbCA9Ci0gICAgICBm
YWtlX21lZGlhX2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxw
dHIsIGZha2Vfdm9pY2VfY2hhbm5lbCk7Ci0gIEVYUEVDVF9UUlVFKGZha2Vfdm9pY2VfY2hhbm5l
bC0+cmVjdl9zdHJlYW1zKCkuZW1wdHkoKSk7Ci0KLSAgYXV0byB2aWRlb19yZWNlaXZlcl9yZXN1
bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19yZWNl
aXZlciA9IHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgcGFyYW1ldGVycyA9
IE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZl
ci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5vaygpKTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3MuY2xl
YXIoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUocGFyYW1ldGVycyku
b2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2No
YW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0g
IEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShm
YWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpLmVtcHR5KCkpOwotfQotCi0vLyBUaGVz
ZSBlcnJvcnMgc2hvdWxkIGJlIGNvdmVyZWQgYnkgcnRwcGFyYW1ldGVyc2NvbnZlcnNpb25fdW5p
dHRlc3QuY2MsIGJ1dAotLy8gd2Ugc2hvdWxkIGF0IGxlYXN0IHRlc3QgdGhhdCB0aG9zZSBlcnJv
cnMgYXJlIHByb3BvZ2F0ZWQgZnJvbSBjYWxscyB0bwotLy8gUmVjZWl2ZSwgd2l0aCBhIGZldyBl
eGFtcGxlcy4KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlUmV0dXJuc0Vycm9y
T25JbnZhbGlkUGFyYW1ldGVycykgewotICBhdXRvIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNy
ZWF0ZVJ0cFJlY2VpdmVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX3RyYW5zcG9ydF8uZ2V0KCkp
OwotICBhdXRvIHJlY2VpdmVyID0gcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICAvLyBDQ00gZmVlZGJh
Y2sgbWlzc2luZyBtZXNzYWdlIHR5cGUuCi0gIFJ0cFBhcmFtZXRlcnMgaW52YWxpZF9mZWVkYmFj
ayA9IE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgaW52YWxpZF9mZWVkYmFjay5jb2Rl
Y3NbMF0ucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6Q0NNKTsK
LSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAg
ICByZWNlaXZlci0+UmVjZWl2ZShpbnZhbGlkX2ZlZWRiYWNrKS50eXBlKCkpOwotICAvLyBQYXls
b2FkIHR5cGUgZ3JlYXRlciB0aGFuIDEyNy4KLSAgUnRwUGFyYW1ldGVycyBpbnZhbGlkX3B0ID0g
TWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpOwotICBpbnZhbGlkX3B0LmNvZGVjc1swXS5wYXls
b2FkX3R5cGUgPSAxMjg7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUkFOR0Us
IHJlY2VpdmVyLT5SZWNlaXZlKGludmFsaWRfcHQpLnR5cGUoKSk7Ci0gIC8vIER1cGxpY2F0ZSBo
ZWFkZXIgZXh0ZW5zaW9uIElEcy4KLSAgUnRwUGFyYW1ldGVycyBkdXBsaWNhdGVfaWRzID0gTWFr
ZU1pbmltYWxPcHVzUGFyYW1ldGVycygpOwotICBkdXBsaWNhdGVfaWRzLmhlYWRlcl9leHRlbnNp
b25zLmVtcGxhY2VfYmFjaygiZm9vIiwgNSk7Ci0gIGR1cGxpY2F0ZV9pZHMuaGVhZGVyX2V4dGVu
c2lvbnMuZW1wbGFjZV9iYWNrKCJiYXIiLCA1KTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6
SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICByZWNlaXZlci0+UmVjZWl2ZShkdXBsaWNh
dGVfaWRzKS50eXBlKCkpOwotfQotCi0vLyBUd28gcmVjZWl2ZXJzIHVzaW5nIHRoZSBzYW1lIHRy
YW5zcG9ydCBzaG91bGRuJ3QgYmUgYWJsZSB0byB1c2UgdGhlIHNhbWUKLS8vIHBheWxvYWQgdHlw
ZSB0byByZWZlciB0byBkaWZmZXJlbnQgY29kZWNzLCBzYW1lIGhlYWRlciBleHRlbnNpb24gSURz
IHRvCi0vLyByZWZlciB0byBkaWZmZXJlbnQgZXh0ZW5zaW9ucywgb3Igc2FtZSBTU1JDLgotVEVT
VF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIFJlY2VpdmVSZXR1cm5zRXJyb3JPbklkQ29uZmxpY3Rz
KSB7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNw
b3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5
Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBy
dHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXIgPSBhdWRpb19yZWNl
aXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXIgPSB2aWRlb19y
ZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gRmlyc3QgdGVzdCBwYXlsb2FkIHR5
cGUgY29uZmxpY3QuCi0gIFJ0cFBhcmFtZXRlcnMgYXVkaW9fcGFyYW1ldGVycyA9IE1ha2VNaW5p
bWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgUnRwUGFyYW1ldGVycyB2aWRlb19wYXJhbWV0ZXJzID0g
TWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCk7Ci0gIGF1ZGlvX3BhcmFtZXRlcnMuY29kZWNzWzBd
LnBheWxvYWRfdHlwZSA9IDEwMDsKLSAgdmlkZW9fcGFyYW1ldGVycy5jb2RlY3NbMF0ucGF5bG9h
ZF90eXBlID0gMTAwOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShhdWRp
b19wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9Q
QVJBTUVURVIsCi0gICAgICAgICAgICB2aWRlb19yZWNlaXZlci0+UmVjZWl2ZSh2aWRlb19wYXJh
bWV0ZXJzKS50eXBlKCkpOwotCi0gIC8vIFRlc3QgaGVhZGVyIGV4dGVuc2lvbiBJRCBjb25mbGlj
dC4KLSAgdmlkZW9fcGFyYW1ldGVycy5jb2RlY3NbMF0ucGF5bG9hZF90eXBlID0gMTEwOwotICBh
dWRpb19wYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygiZm9vIiwgNCk7
Ci0gIHZpZGVvX3BhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKCJiYXIi
LCA0KTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUoYXVkaW9fcGFyYW1l
dGVycykub2soKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVS
LAotICAgICAgICAgICAgdmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUodmlkZW9fcGFyYW1ldGVycyku
dHlwZSgpKTsKLQotICAvLyBUZXN0IFNTUkMgY29uZmxpY3QuIEhhdmUgYW4gUlRYIFNTUkMgdGhh
dCBjb25mbGljdHMgd2l0aCBhIHByaW1hcnkgU1NSQwotICAvLyBmb3IgZXh0cmEgY2hhbGxlbmdl
LgotICB2aWRlb19wYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zWzBdLnVyaSA9ICJmb28iOwot
ICBhdWRpb19wYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjLmVtcGxhY2UoMHhhYmJhYWJiYSk7
Ci0gIGF1ZGlvX3BhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnJ0eC5lbXBsYWNlKDB4ZGVhZGJlZWYp
OwotICB2aWRlb19wYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjLmVtcGxhY2UoMHhkZWFkYmVl
Zik7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVyLT5SZWNlaXZlKGF1ZGlvX3BhcmFtZXRl
cnMpLm9rKCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwK
LSAgICAgICAgICAgIHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKHZpZGVvX3BhcmFtZXRlcnMpLnR5
cGUoKSk7Ci0KLSAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgcGFyYW1ldGVycyBjYW4gYmUgc2V0IGlm
IHRoZSBjb25mbGljdHMgYXJlIGFsbCByZXNvbHZlZC4KLSAgdmlkZW9fcGFyYW1ldGVycy5lbmNv
ZGluZ3NbMF0uc3NyYy5lbXBsYWNlKDB4YmFhZGYwMGQpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19y
ZWNlaXZlci0+UmVjZWl2ZSh2aWRlb19wYXJhbWV0ZXJzKS5vaygpKTsKLX0KLQotLy8gRW5zdXJl
IHRoYXQgZGVsZXRpbmcgYSByZWNlaXZlciBjYXVzZXMgcmVjZWl2ZSBzdHJlYW1zIGF0IHRoZSBt
ZWRpYSBlbmdpbmUKLS8vIGxldmVsIHRvIGJlIGNsZWFyZWQuCi1URVNUX0YoT3J0Y1J0cFJlY2Vp
dmVyVGVzdCwgRGVsZXRpbmdSZWNlaXZlckNsZWFyc1JlY2VpdmVTdHJlYW1zKSB7Ci0gIGF1dG8g
YXVkaW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIo
Ci0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7
Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXIgPSBhdWRpb19yZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVl
KCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVyLT5SZWNlaXZlKE1ha2VNaW5pbWFsT3B1
c1BhcmFtZXRlcnMoKSkub2soKSk7Ci0KLSAgLy8gQWxzbyBjcmVhdGUgYW4gYXVkaW8gc2VuZGVy
LCB0byBwcmV2ZW50IHRoZSB2b2ljZSBjaGFubmVsIGZyb20gYmVpbmcKLSAgLy8gY29tcGxldGVs
eSBkZWxldGVkLgotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5D
cmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJh
bnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3Vs
dC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5p
bWFsT3B1c1BhcmFtZXRlcnMoKSkub2soKSk7Ci0KLSAgYXVkaW9fcmVjZWl2ZXIucmVzZXQobnVs
bHB0cik7Ci0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFu
bmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBB
U1NFUlRfTkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFr
ZV92b2ljZV9jaGFubmVsLT5yZWN2X3N0cmVhbXMoKS5lbXB0eSgpKTsKLQotICBhdXRvIHZpZGVv
X3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAg
ICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBh
dXRvIHZpZGVvX3JlY2VpdmVyID0gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwot
ICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZlci0+UmVjZWl2ZShNYWtlTWluaW1hbFZwOFBhcmFt
ZXRlcnMoKSkub2soKSk7Ci0KLSAgLy8gQWxzbyBjcmVhdGUgYW4gdmlkZW8gc2VuZGVyLCB0byBw
cmV2ZW50IHRoZSB2aWRlbyBjaGFubmVsIGZyb20gYmVpbmcKLSAgLy8gY29tcGxldGVseSBkZWxl
dGVkLgotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0
Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3Zl
VmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsVnA4
UGFyYW1ldGVycygpKS5vaygpKTsKLQotICB2aWRlb19yZWNlaXZlci5yZXNldChudWxscHRyKTsK
LSAgY3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQot
ICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9O
RShudWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVv
X2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpLmVtcHR5KCkpOwotfQotCi0vLyBJZiBSZWNlaXZlIGhh
c24ndCBiZWVuIGNhbGxlZCwgR2V0UGFyYW1ldGVycyBzaG91bGQgcmV0dXJuIGVtcHR5IHBhcmFt
ZXRlcnMuCi1URVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVzdCwgR2V0RGVmYXVsdFBhcmFtZXRlcnMp
IHsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcihjcmlj
a2V0OjpNRURJQV9UWVBFX0FVRElPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgRVhQRUNUX0VRKFJ0cFBh
cmFtZXRlcnMoKSwgcmVzdWx0LnZhbHVlKCktPkdldFBhcmFtZXRlcnMoKSk7Ci0gIHJlc3VsdCA9
IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklE
RU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFu
c3BvcnRfLmdldCgpKTsKLSAgRVhQRUNUX0VRKFJ0cFBhcmFtZXRlcnMoKSwgcmVzdWx0LnZhbHVl
KCktPkdldFBhcmFtZXRlcnMoKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBHZXRQYXJhbWV0ZXJzIHJl
dHVybnMgdGhlIGxhc3QgcGFyYW1ldGVycyBwYXNzZWQgaW50byBSZWNlaXZlLAotLy8gYWxvbmcg
d2l0aCB0aGUgaW1wbGVtZW50YXRpb24tZGVmYXVsdCB2YWx1ZXMgZmlsbGVkIGluIHdoZXJlIHRo
ZXkgd2VyZSBsZWZ0Ci0vLyB1bnNldC4KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LAotICAg
ICAgIEdldFBhcmFtZXRlcnNSZXR1cm5zTGFzdFNldFBhcmFtZXRlcnNXaXRoRGVmYXVsdHNGaWxs
ZWQpIHsKLSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFu
c3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9IGF1ZGlvX3JlY2VpdmVyX3Jl
c3VsdC5Nb3ZlVmFsdWUoKTsKLQotICBSdHBQYXJhbWV0ZXJzIG9wdXNfcGFyYW1ldGVycyA9IE1h
a2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXIt
PlJlY2VpdmUob3B1c19wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKG9wdXNfcGFyYW1l
dGVycywgYXVkaW9fcmVjZWl2ZXItPkdldFBhcmFtZXRlcnMoKSk7Ci0KLSAgUnRwUGFyYW1ldGVy
cyBpc2FjX3BhcmFtZXRlcnMgPSBNYWtlTWluaW1hbElzYWNQYXJhbWV0ZXJzKCk7Ci0gIC8vIFNh
bml0eSBjaGVjayB0aGF0IG51bV9jaGFubmVscyBhY3R1YWxseSBpcyBsZWZ0IHVuc2V0LgotICBB
U1NFUlRfRkFMU0UoaXNhY19wYXJhbWV0ZXJzLmNvZGVjc1swXS5udW1fY2hhbm5lbHMpOwotICBF
WFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShpc2FjX3BhcmFtZXRlcnMpLm9rKCkp
OwotICAvLyBTaG91bGQgYmUgZmlsbGVkIHdpdGggYSBkZWZhdWx0ICJudW0gY2hhbm5lbHMiIG9m
IDEuCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBUaGlzIHNob3VsZCBhY3R1YWxseSBkZWZhdWx0IHRv
IDIgZm9yIHNvbWUgY29kZWNzLiBVcGRhdGUKLSAgLy8gdGhpcyB0ZXN0IG9uY2UgdGhhdCdzIGlt
cGxlbWVudGVkLgotICBpc2FjX3BhcmFtZXRlcnMuY29kZWNzWzBdLm51bV9jaGFubmVscy5lbXBs
YWNlKDEpOwotICBFWFBFQ1RfRVEoaXNhY19wYXJhbWV0ZXJzLCBhdWRpb19yZWNlaXZlci0+R2V0
UGFyYW1ldGVycygpKTsKLQotICBhdXRvIHZpZGVvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFj
dG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURF
TywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyID0gdmlkZW9f
cmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIFJ0cFBhcmFtZXRlcnMgdnA4X3BhcmFt
ZXRlcnMgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgLy8gU2FuaXR5IGNoZWNrIHRo
YXQgY2xvY2tfcmF0ZSBhY3R1YWxseSBpcyBsZWZ0IHVuc2V0LgotICBFWFBFQ1RfVFJVRSh2aWRl
b19yZWNlaXZlci0+UmVjZWl2ZSh2cDhfcGFyYW1ldGVycykub2soKSk7Ci0gIC8vIFNob3VsZCBi
ZSBmaWxsZWQgd2l0aCBhIGRlZmF1bHQgY2xvY2sgcmF0ZSBvZiA5MDAwMC4KLSAgdnA4X3BhcmFt
ZXRlcnMuY29kZWNzWzBdLmNsb2NrX3JhdGUuZW1wbGFjZSg5MDAwMCk7Ci0gIEVYUEVDVF9FUSh2
cDhfcGFyYW1ldGVycywgdmlkZW9fcmVjZWl2ZXItPkdldFBhcmFtZXRlcnMoKSk7Ci0KLSAgUnRw
UGFyYW1ldGVycyB2cDlfcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA5UGFyYW1ldGVycygpOwot
ICAvLyBTYW5pdHkgY2hlY2sgdGhhdCBjbG9ja19yYXRlIGFjdHVhbGx5IGlzIGxlZnQgdW5zZXQu
Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKHZwOV9wYXJhbWV0ZXJzKS5v
aygpKTsKLSAgLy8gU2hvdWxkIGJlIGZpbGxlZCB3aXRoIGEgZGVmYXVsdCBjbG9jayByYXRlIG9m
IDkwMDAwLgotICB2cDlfcGFyYW1ldGVycy5jb2RlY3NbMF0uY2xvY2tfcmF0ZS5lbXBsYWNlKDkw
MDAwKTsKLSAgRVhQRUNUX0VRKHZwOV9wYXJhbWV0ZXJzLCB2aWRlb19yZWNlaXZlci0+R2V0UGFy
YW1ldGVycygpKTsKLX0KLQotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIEdldEtpbmQpIHsK
LSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBS
ZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRf
LmdldCgpKTsKLSAgYXV0byB2aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5D
cmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90
cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9IGF1ZGlvX3JlY2VpdmVy
X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgYXV0byB2aWRlb19yZWNlaXZlciA9IHZpZGVvX3JlY2Vp
dmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX0VRKGNyaWNrZXQ6Ok1FRElBX1RZUEVf
QVVESU8sIGF1ZGlvX3JlY2VpdmVyLT5HZXRLaW5kKCkpOwotICBFWFBFQ1RfRVEoY3JpY2tldDo6
TUVESUFfVFlQRV9WSURFTywgdmlkZW9fcmVjZWl2ZXItPkdldEtpbmQoKSk7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyYWRhcHRlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyYWRh
cHRlci5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg5NDEyMjE3YWNjOGI1ZDBm
Yzg0ZWE2OWIzNDRjYTczYjJmYWQwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9v
cnRjL29ydGNydHByZWNlaXZlcmFkYXB0ZXIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm9ydGMvb3J0Y3J0cHJlY2VpdmVy
YWRhcHRlci5oIgotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5j
bHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgot
I2luY2x1ZGUgIm9ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIgIC8vIEZvciAiQ3JlYXRl
UmFuZG9tWCIuCi0KLW5hbWVzcGFjZSB7Ci0KLXZvaWQgRmlsbEF1ZGlvUmVjZWl2ZXJQYXJhbWV0
ZXJzKHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyogcGFyYW1ldGVycykgewotICBmb3IgKHdlYnJ0Yzo6
UnRwQ29kZWNQYXJhbWV0ZXJzJiBjb2RlYyA6IHBhcmFtZXRlcnMtPmNvZGVjcykgewotICAgIGlm
ICghY29kZWMubnVtX2NoYW5uZWxzKSB7Ci0gICAgICBjb2RlYy5udW1fY2hhbm5lbHMgPSAxOwot
ICAgIH0KLSAgfQotfQotCi12b2lkIEZpbGxWaWRlb1JlY2VpdmVyUGFyYW1ldGVycyh3ZWJydGM6
OlJ0cFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMpIHsKLSAgZm9yICh3ZWJydGM6OlJ0cENvZGVjUGFy
YW1ldGVycyYgY29kZWMgOiBwYXJhbWV0ZXJzLT5jb2RlY3MpIHsKLSAgICBpZiAoIWNvZGVjLmNs
b2NrX3JhdGUpIHsKLSAgICAgIGNvZGVjLmNsb2NrX3JhdGUgPSBjcmlja2V0OjprVmlkZW9Db2Rl
Y0Nsb2NrcmF0ZTsKLSAgICB9Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLW5hbWVzcGFj
ZSB3ZWJydGMgewotCi1CRUdJTl9PV05FRF9QUk9YWV9NQVAoT3J0Y1J0cFJlY2VpdmVyKQotUFJP
WFlfU0lHTkFMSU5HX1RIUkVBRF9ERVNUUlVDVE9SKCkKLVBST1hZX0NPTlNUTUVUSE9EMChydGM6
OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4sIEdldFRyYWNrKQotUFJP
WFlfTUVUSE9EMShSVENFcnJvciwgU2V0VHJhbnNwb3J0LCBSdHBUcmFuc3BvcnRJbnRlcmZhY2Uq
KQotUFJPWFlfQ09OU1RNRVRIT0QwKFJ0cFRyYW5zcG9ydEludGVyZmFjZSosIEdldFRyYW5zcG9y
dCkKLVBST1hZX01FVEhPRDEoUlRDRXJyb3IsIFJlY2VpdmUsIGNvbnN0IFJ0cFBhcmFtZXRlcnMm
KQotUFJPWFlfQ09OU1RNRVRIT0QwKFJ0cFBhcmFtZXRlcnMsIEdldFBhcmFtZXRlcnMpCi1QUk9Y
WV9DT05TVE1FVEhPRDAoY3JpY2tldDo6TWVkaWFUeXBlLCBHZXRLaW5kKQotRU5EX1BST1hZX01B
UCgpCi0KLS8vIHN0YXRpYwotc3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckludGVyZmFj
ZT4gT3J0Y1J0cFJlY2VpdmVyQWRhcHRlcjo6Q3JlYXRlUHJveHkoCi0gICAgc3RkOjp1bmlxdWVf
cHRyPE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI+IHdyYXBwZWRfcmVjZWl2ZXIpIHsKLSAgUlRDX0RD
SEVDSyh3cmFwcGVkX3JlY2VpdmVyKTsKLSAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZyA9Ci0gICAg
ICB3cmFwcGVkX3JlY2VpdmVyLT5ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5zaWduYWxpbmdf
dGhyZWFkKCk7Ci0gIHJ0Yzo6VGhyZWFkKiB3b3JrZXIgPQotICAgICAgd3JhcHBlZF9yZWNlaXZl
ci0+cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+d29ya2VyX3RocmVhZCgpOwotICByZXR1cm4g
T3J0Y1J0cFJlY2VpdmVyUHJveHk6OkNyZWF0ZShzaWduYWxpbmcsIHdvcmtlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHdyYXBwZWRfcmVjZWl2ZXIp
KTsKLX0KLQotT3J0Y1J0cFJlY2VpdmVyQWRhcHRlcjo6fk9ydGNSdHBSZWNlaXZlckFkYXB0ZXIo
KSB7Ci0gIGludGVybmFsX3JlY2VpdmVyXyA9IG51bGxwdHI7Ci0gIFNpZ25hbERlc3Ryb3llZCgp
OwotfQotCi1ydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4gT3J0
Y1J0cFJlY2VpdmVyQWRhcHRlcjo6R2V0VHJhY2soKQotICAgIGNvbnN0IHsKLSAgcmV0dXJuIGlu
dGVybmFsX3JlY2VpdmVyXyA/IGludGVybmFsX3JlY2VpdmVyXy0+dHJhY2soKSA6IG51bGxwdHI7
Ci19Ci0KLVJUQ0Vycm9yIE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI6OlNldFRyYW5zcG9ydCgKLSAg
ICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgewotICBMT0dfQU5EX1JFVFVSTl9F
UlJPUigKLSAgICAgIFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAg
IkNoYW5naW5nIHRoZSB0cmFuc3BvcnQgb2YgYW4gUnRwUmVjZWl2ZXIgaXMgbm90IHlldCBzdXBw
b3J0ZWQuIik7Ci19Ci0KLVJ0cFRyYW5zcG9ydEludGVyZmFjZSogT3J0Y1J0cFJlY2VpdmVyQWRh
cHRlcjo6R2V0VHJhbnNwb3J0KCkgY29uc3QgewotICByZXR1cm4gdHJhbnNwb3J0XzsKLX0KLQot
UlRDRXJyb3IgT3J0Y1J0cFJlY2VpdmVyQWRhcHRlcjo6UmVjZWl2ZShjb25zdCBSdHBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgZmlsbGVkX3BhcmFtZXRlcnMgPSBw
YXJhbWV0ZXJzOwotICBSVENFcnJvciBlcnI7Ci0gIHN3aXRjaCAoa2luZF8pIHsKLSAgICBjYXNl
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86Ci0gICAgICBGaWxsQXVkaW9SZWNlaXZlclBhcmFt
ZXRlcnMoJmZpbGxlZF9wYXJhbWV0ZXJzKTsKLSAgICAgIGVyciA9IHJ0cF90cmFuc3BvcnRfY29u
dHJvbGxlcl8tPlZhbGlkYXRlQW5kQXBwbHlBdWRpb1JlY2VpdmVyUGFyYW1ldGVycygKLSAgICAg
ICAgICBmaWxsZWRfcGFyYW1ldGVycyk7Ci0gICAgICBpZiAoIWVyci5vaygpKSB7Ci0gICAgICAg
IHJldHVybiBlcnI7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfVklERU86Ci0gICAgICBGaWxsVmlkZW9SZWNlaXZlclBhcmFtZXRlcnMoJmZpbGxl
ZF9wYXJhbWV0ZXJzKTsKLSAgICAgIGVyciA9IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPlZh
bGlkYXRlQW5kQXBwbHlWaWRlb1JlY2VpdmVyUGFyYW1ldGVycygKLSAgICAgICAgICBmaWxsZWRf
cGFyYW1ldGVycyk7Ci0gICAgICBpZiAoIWVyci5vaygpKSB7Ci0gICAgICAgIHJldHVybiBlcnI7
Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFU
QToKLSAgICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgICByZXR1cm4gd2VicnRjOjpSVENFcnJv
cih3ZWJydGM6OlJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IpOwotICB9Ci0gIGxhc3RfYXBw
bGllZF9wYXJhbWV0ZXJzXyA9IGZpbGxlZF9wYXJhbWV0ZXJzOwotCi0gIC8vIE5vdyB0aGF0IHBh
cmFtZXRlcnMgd2VyZSBhcHBsaWVkLCBjYW4gY3JlYXRlIChvciByZWNyZWF0ZSkgdGhlIGludGVy
bmFsCi0gIC8vIHJlY2VpdmVyLgotICAvLwotICAvLyBUaGlzIGlzIGFuYWxvZ291cyB0byBhIFBl
ZXJDb25uZWN0aW9uIGNyZWF0aW5nIGEgcmVjZWl2ZXIgYWZ0ZXIKLSAgLy8gU2V0UmVtb3RlRGVz
Y3JpcHRpb24gaXMgc3VjY2Vzc2Z1bC4KLSAgTWF5YmVSZWNyZWF0ZUludGVybmFsUmVjZWl2ZXIo
KTsKLSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1SdHBQYXJhbWV0ZXJzIE9ydGNSdHBS
ZWNlaXZlckFkYXB0ZXI6OkdldFBhcmFtZXRlcnMoKSBjb25zdCB7Ci0gIHJldHVybiBsYXN0X2Fw
cGxpZWRfcGFyYW1ldGVyc187Ci19Ci0KLWNyaWNrZXQ6Ok1lZGlhVHlwZSBPcnRjUnRwUmVjZWl2
ZXJBZGFwdGVyOjpHZXRLaW5kKCkgY29uc3QgewotICByZXR1cm4ga2luZF87Ci19Ci0KLU9ydGNS
dHBSZWNlaXZlckFkYXB0ZXI6Ok9ydGNSdHBSZWNlaXZlckFkYXB0ZXIoCi0gICAgY3JpY2tldDo6
TWVkaWFUeXBlIGtpbmQsCi0gICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0g
ICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90cmFuc3BvcnRfY29udHJvbGxl
cikKLSAgICA6IGtpbmRfKGtpbmQpLAotICAgICAgdHJhbnNwb3J0Xyh0cmFuc3BvcnQpLAotICAg
ICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXyhydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIpIHt9
Ci0KLXZvaWQgT3J0Y1J0cFJlY2VpdmVyQWRhcHRlcjo6TWF5YmVSZWNyZWF0ZUludGVybmFsUmVj
ZWl2ZXIoKSB7Ci0gIGlmIChsYXN0X2FwcGxpZWRfcGFyYW1ldGVyc18uZW5jb2RpbmdzLmVtcHR5
KCkpIHsKLSAgICBpbnRlcm5hbF9yZWNlaXZlcl8gPSBudWxscHRyOwotICAgIHJldHVybjsKLSAg
fQotICAvLyBBbiBTU1JDIG9mIDAgaXMgdmFsaWQ7IHRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSAi
dGhlIGRlZmF1bHQgU1NSQyIgKHdoaWNoCi0gIC8vIGlzIHRoZSBmaXJzdCBvbmUgc2VlbiBieSB0
aGUgdW5kZXJseWluZyBtZWRpYSBlbmdpbmUpLgotICB1aW50MzJfdCBzc3JjID0gMDsKLSAgaWYg
KGxhc3RfYXBwbGllZF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3NbMF0uc3NyYykgewotICAgIHNzcmMg
PSAqbGFzdF9hcHBsaWVkX3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5zc3JjOwotICB9Ci0gIGlm
IChpbnRlcm5hbF9yZWNlaXZlcl8gJiYgc3NyYyA9PSBpbnRlcm5hbF9yZWNlaXZlcl8tPnNzcmMo
KSkgewotICAgIC8vIFNTUkMgbm90IGNoYW5naW5nOyBub3RoaW5nIHRvIGRvLgotICAgIHJldHVy
bjsKLSAgfQotICBpbnRlcm5hbF9yZWNlaXZlcl8gPSBudWxscHRyOwotICBzd2l0Y2ggKGtpbmRf
KSB7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOiB7Ci0gICAgICBhdXRvKiBh
dWRpb19yZWNlaXZlciA9IG5ldyBBdWRpb1J0cFJlY2VpdmVyKAotICAgICAgICAgIHJ0cF90cmFu
c3BvcnRfY29udHJvbGxlcl8tPndvcmtlcl90aHJlYWQoKSwgcnRjOjpDcmVhdGVSYW5kb21VdWlk
KCksCi0gICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KHt9KSk7Ci0gICAgICBhdXRv
KiB2b2ljZV9jaGFubmVsID0gcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+dm9pY2VfY2hhbm5l
bCgpOwotICAgICAgUlRDX0RDSEVDSyh2b2ljZV9jaGFubmVsKTsKLSAgICAgIGF1ZGlvX3JlY2Vp
dmVyLT5TZXRWb2ljZU1lZGlhQ2hhbm5lbCh2b2ljZV9jaGFubmVsLT5tZWRpYV9jaGFubmVsKCkp
OwotICAgICAgaW50ZXJuYWxfcmVjZWl2ZXJfID0gYXVkaW9fcmVjZWl2ZXI7Ci0gICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOiB7Ci0gICAgICBh
dXRvKiB2aWRlb19yZWNlaXZlciA9IG5ldyBWaWRlb1J0cFJlY2VpdmVyKAotICAgICAgICAgIHJ0
cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPndvcmtlcl90aHJlYWQoKSwgcnRjOjpDcmVhdGVSYW5k
b21VdWlkKCksCi0gICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KHt9KSk7Ci0gICAg
ICBhdXRvKiB2aWRlb19jaGFubmVsID0gcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+dmlkZW9f
Y2hhbm5lbCgpOwotICAgICAgUlRDX0RDSEVDSyh2aWRlb19jaGFubmVsKTsKLSAgICAgIHZpZGVv
X3JlY2VpdmVyLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCh2aWRlb19jaGFubmVsLT5tZWRpYV9jaGFu
bmVsKCkpOwotICAgICAgaW50ZXJuYWxfcmVjZWl2ZXJfID0gdmlkZW9fcmVjZWl2ZXI7Ci0gICAg
ICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEE6Ci0gICAg
ICBSVENfTk9UUkVBQ0hFRCgpOwotICB9Ci0gIGludGVybmFsX3JlY2VpdmVyXy0+U2V0dXBNZWRp
YUNoYW5uZWwoc3NyYyk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHJl
Y2VpdmVyYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJhZGFwdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ2NDdiMDQzMTQ1YWRhZTRiMDJmODcyNzUxMzNjN2ViZWE1OWQzY2UuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJhZGFwdGVyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0g
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVm
IE9SVENfT1JUQ1JUUFJFQ0VJVkVSQURBUFRFUl9IXwotI2RlZmluZSBPUlRDX09SVENSVFBSRUNF
SVZFUkFEQVBURVJfSF8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgImFwaS9vcnRj
L29ydGNydHByZWNlaXZlcmludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgot
I2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3Bv
cnRjb250cm9sbGVyYWRhcHRlci5oIgotI2luY2x1ZGUgInBjL3J0cHJlY2VpdmVyLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
aXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5o
IgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgT3J0Y1J0cFJl
Y2VpdmVySW50ZXJmYWNlIHRoYXQgd29ya3Mgd2l0aAotLy8gUnRwVHJhbnNwb3J0QWRhcHRlciwg
YW5kIHdyYXBzIGEgVmlkZW9SdHBSZWNlaXZlci9BdWRpb1J0cFJlY2VpdmVyIHRoYXQncwotLy8g
bm9ybWFsbHkgdXNlZCB3aXRoIHRoZSBQZWVyQ29ubmVjdGlvbi4KLS8vCi0vLyBUT0RPKGRlYWRi
ZWVmKTogV2hlbiBCYXNlQ2hhbm5lbCBpcyBzcGxpdCBhcGFydCBpbnRvIHNlcGFyYXRlCi0vLyAi
UnRwUmVjZWl2ZXIiLyJSdHBUcmFuc2NlaXZlciIvIlJ0cFJlY2VpdmVyIi8iUnRwUmVjZWl2ZXIi
IG9iamVjdHMsIHRoaXMKLS8vIGFkYXB0ZXIgb2JqZWN0IGNhbiBiZSByZW1vdmVkLgotY2xhc3Mg
T3J0Y1J0cFJlY2VpdmVyQWRhcHRlciA6IHB1YmxpYyBPcnRjUnRwUmVjZWl2ZXJJbnRlcmZhY2Ug
ewotIHB1YmxpYzoKLSAgLy8gV3JhcHMgfHdyYXBwZWRfcmVjZWl2ZXJ8IGluIGEgcHJveHkgdGhh
dCB3aWxsIHNhZmVseSBjYWxsIG1ldGhvZHMgb24gdGhlCi0gIC8vIGNvcnJlY3QgdGhyZWFkLgot
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckludGVyZmFjZT4gQ3JlYXRl
UHJveHkoCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFJlY2VpdmVyQWRhcHRlcj4gd3Jh
cHBlZF9yZWNlaXZlcik7Ci0KLSAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IFJ0cFRyYW5z
cG9ydENvbnRyb2xsZXJBZGFwdGVyLgotICBPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyKAotICAgICAg
Y3JpY2tldDo6TWVkaWFUeXBlIGtpbmQsCi0gICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRy
YW5zcG9ydCwKLSAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKiBydHBfdHJhbnNw
b3J0X2NvbnRyb2xsZXIpOwotICB+T3J0Y1J0cFJlY2VpdmVyQWRhcHRlcigpIG92ZXJyaWRlOwot
Ci0gIC8vIE9ydGNSdHBSZWNlaXZlckludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4KLSAgcnRjOjpz
Y29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+IEdldFRyYWNrKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgUlRDRXJyb3IgU2V0VHJhbnNwb3J0KFJ0cFRyYW5zcG9ydEludGVyZmFj
ZSogdHJhbnNwb3J0KSBvdmVycmlkZTsKLSAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBHZXRUcmFu
c3BvcnQoKSBjb25zdCBvdmVycmlkZTsKLQotICBSVENFcnJvciBSZWNlaXZlKGNvbnN0IFJ0cFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpIG92ZXJyaWRlOwotICBSdHBQYXJhbWV0ZXJzIEdldFBhcmFt
ZXRlcnMoKSBjb25zdCBvdmVycmlkZTsKLQotICBjcmlja2V0OjpNZWRpYVR5cGUgR2V0S2luZCgp
IGNvbnN0IG92ZXJyaWRlOwotCi0gIC8vIFVzZWQgc28gdGhhdCB0aGUgUnRwVHJhbnNwb3J0Q29u
dHJvbGxlckFkYXB0ZXIga25vd3Mgd2hlbiBpdCBjYW4KLSAgLy8gZGVhbGxvY2F0ZSByZXNvdXJj
ZXMgYWxsb2NhdGVkIGZvciB0aGlzIG9iamVjdC4KLSAgc2lnc2xvdDo6c2lnbmFsMDw+IFNpZ25h
bERlc3Ryb3llZDsKLQotIHByaXZhdGU6Ci0gIHZvaWQgTWF5YmVSZWNyZWF0ZUludGVybmFsUmVj
ZWl2ZXIoKTsKLQotICBjcmlja2V0OjpNZWRpYVR5cGUga2luZF87Ci0gIFJ0cFRyYW5zcG9ydElu
dGVyZmFjZSogdHJhbnNwb3J0XzsKLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0
cF90cmFuc3BvcnRfY29udHJvbGxlcl87Ci0gIC8vIFNjb3BlZCByZWZwdHIgZHVlIHRvIHJlZi1j
b3VudGVkIGludGVyZmFjZSwgYnV0IHdlIHNob3VsZCBiZSB0aGUgb25seQotICAvLyByZWZlcmVu
Y2UgaG9sZGVyLgotICBydGM6OnNjb3BlZF9yZWZwdHI8UnRwUmVjZWl2ZXJJbnRlcm5hbD4gaW50
ZXJuYWxfcmVjZWl2ZXJfOwotICBSdHBQYXJhbWV0ZXJzIGxhc3RfYXBwbGllZF9wYXJhbWV0ZXJz
XzsKLQotICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKE9ydGNSdHBSZWNlaXZl
ckFkYXB0ZXIpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE9S
VENfT1JUQ1JUUFJFQ0VJVkVSQURBUFRFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwc2VuZGVyX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRw
c2VuZGVyX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGJkOGY5
MzkzNDUzOGI1MWFjOGYwNjJmZTA5MDdlNDAwMzEwNTJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL29ydGMvb3J0Y3J0cHNlbmRlcl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBA
IC0xLDY3MCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8bWVtb3J5Pgot
Ci0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9y
eS5oIgotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2Zh
Y3RvcnkuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2VtZWRpYWVuZ2luZS5oIgotI2luY2x1
ZGUgIm9ydGMvb3J0Y2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJvcnRjL3Rlc3RydHBwYXJhbWV0ZXJz
LmgiCi0jaW5jbHVkZSAicDJwL2Jhc2UvZmFrZXBhY2tldHRyYW5zcG9ydC5oIgotI2luY2x1ZGUg
InBjL3Rlc3QvZmFrZXZpZGVvdHJhY2tzb3VyY2UuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9ndW5p
dC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVGhpcyB0ZXN0IHVzZXMgYW4gaW5kaXZp
ZHVhbCBSdHBTZW5kZXIgdXNpbmcgb25seSB0aGUgcHVibGljIGludGVyZmFjZSwgYW5kCi0vLyB2
ZXJpZmllcyB0aGF0IGl0cyBiZWhhdmVzIGFzIGRlc2lnbmVkIGF0IGFuIEFQSSBsZXZlbC4gQWxz
byB0ZXN0cyB0aGF0Ci0vLyBwYXJhbWV0ZXJzIGFyZSBhcHBsaWVkIHRvIHRoZSBhdWRpby92aWRl
byBlbmdpbmVzIGFzIGV4cGVjdGVkLiBOZXR3b3JrIGFuZAotLy8gbWVkaWEgaW50ZXJmYWNlcyBh
cmUgZmFrZWQgdG8gaXNvbGF0ZSB3aGF0J3MgYmVpbmcgdGVzdGVkLgotLy8KLS8vIFRoaXMgdGVz
dCBzaG91bGRuJ3QgcmVzdWx0IGFueSBhbnkgYWN0dWFsIG1lZGlhIGJlaW5nIHNlbnQuIFRoYXQg
c29ydCBvZgotLy8gdGVzdCBzaG91bGQgZ28gaW4gb3J0Y2ZhY3RvcnlfaW50ZWdyYXRpb250ZXN0
LmNjLgotY2xhc3MgT3J0Y1J0cFNlbmRlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0g
cHVibGljOgotICBPcnRjUnRwU2VuZGVyVGVzdCgpIDogZmFrZV9wYWNrZXRfdHJhbnNwb3J0Xygi
ZmFrZSIpIHsKLSAgICAvLyBOZWVkIHRvIHNldCB0aGUgZmFrZSBwYWNrZXQgdHJhbnNwb3J0IHRv
IHdyaXRhYmxlLCBpbiBvcmRlciB0byB0ZXN0IHRoYXQKLSAgICAvLyB0aGUgInNlbmQiIGZsYWcg
aXMgYXBwbGllZCB0byB0aGUgbWVkaWEgZW5naW5lIGJhc2VkIG9uIHRoZSBlbmNvZGluZwotICAg
IC8vIHxhY3RpdmV8IGZsYWcuCi0gICAgZmFrZV9wYWNrZXRfdHJhbnNwb3J0Xy5TZXRXcml0YWJs
ZSh0cnVlKTsKLSAgICBmYWtlX21lZGlhX2VuZ2luZV8gPSBuZXcgY3JpY2tldDo6RmFrZU1lZGlh
RW5naW5lKCk7Ci0gICAgLy8gTm90ZTogVGhpcyBkb2Vzbid0IG5lZWQgdG8gdXNlIGZha2UgbmV0
d29yayBjbGFzc2VzLCBzaW5jZSB3ZSBhbHJlYWR5Ci0gICAgLy8gdXNlIEZha2VQYWNrZXRUcmFu
c3BvcnQuCi0gICAgYXV0byBvcnRjX2ZhY3RvcnlfcmVzdWx0ID0gT3J0Y0ZhY3Rvcnk6OkNyZWF0
ZSgKLSAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPihm
YWtlX21lZGlhX2VuZ2luZV8pLAotICAgICAgICBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFj
dG9yeSgpLCBDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpKTsKLSAgICBvcnRjX2Zh
Y3RvcnlfID0gb3J0Y19mYWN0b3J5X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgICBSdHBUcmFuc3Bv
cnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5ydGNwLm11eCA9IHRydWU7
Ci0gICAgYXV0byBydHBfdHJhbnNwb3J0X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0
cFRyYW5zcG9ydCgKLSAgICAgICAgcGFyYW1ldGVycywgJmZha2VfcGFja2V0X3RyYW5zcG9ydF8s
IG51bGxwdHIsIG51bGxwdHIpOwotICAgIHJ0cF90cmFuc3BvcnRfID0gcnRwX3RyYW5zcG9ydF9y
ZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvVHJhY2tJbnRlcmZhY2U+IENyZWF0ZUF1ZGlvVHJhY2soCi0gICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgaWQpIHsKLSAgICByZXR1cm4gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlQXVkaW9U
cmFjayhpZCwgbnVsbHB0cik7Ci0gIH0KLQotICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9UcmFj
a0ludGVyZmFjZT4gQ3JlYXRlVmlkZW9UcmFjaygKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBp
ZCkgewotICAgIHJldHVybiBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50
ZXJmYWNlPigKLSAgICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlVmlkZW9UcmFjayhpZCwgRmFr
ZVZpZGVvVHJhY2tTb3VyY2U6OkNyZWF0ZSgpKSk7Ci0gIH0KLQotICAvLyBPd25lZCBieSB8b3J0
Y19mYWN0b3J5X3wuCi0gIGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZSogZmFrZV9tZWRpYV9lbmdp
bmVfOwotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRfdHJhbnNwb3J0XzsK
LSAgc3RkOjp1bmlxdWVfcHRyPE9ydGNGYWN0b3J5SW50ZXJmYWNlPiBvcnRjX2ZhY3RvcnlfOwot
ICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPiBydHBfdHJhbnNwb3J0XzsK
LX07Ci0KLVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwgR2V0QW5kU2V0VHJhY2spIHsKLSAgLy8g
VGVzdCBHZXRUcmFjayB3aXRoIGEgc2VuZGVyIGNvbnN0cnVjdGVkIHdpdGggYSB0cmFjay4KLSAg
YXV0byBhdWRpb190cmFjayA9IENyZWF0ZUF1ZGlvVHJhY2soImF1ZGlvIik7Ci0gIGF1dG8gYXVk
aW9fc2VuZGVyX3Jlc3VsdCA9Ci0gICAgICBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIo
YXVkaW9fdHJhY2ssIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIg
PSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfRVEoYXVkaW9fdHJh
Y2ssIGF1ZGlvX3NlbmRlci0+R2V0VHJhY2soKSk7Ci0KLSAgLy8gVGVzdCBHZXRUcmFjayBhZnRl
ciBTZXRUcmFjay4KLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+
Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3Ry
YW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1
bHQuTW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fdHJhY2sgPSBDcmVhdGVWaWRlb1RyYWNrKCJ2
aWRlbzEiKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZXRUcmFjayh2aWRlb190cmFj
aykub2soKSk7Ci0gIEVYUEVDVF9FUSh2aWRlb190cmFjaywgdmlkZW9fc2VuZGVyLT5HZXRUcmFj
aygpKTsKLSAgdmlkZW9fdHJhY2sgPSBDcmVhdGVWaWRlb1RyYWNrKCJ2aWRlbzIiKTsKLSAgRVhQ
RUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZXRUcmFjayh2aWRlb190cmFjaykub2soKSk7Ci0gIEVY
UEVDVF9FUSh2aWRlb190cmFjaywgdmlkZW9fc2VuZGVyLT5HZXRUcmFjaygpKTsKLX0KLQotLy8g
VGVzdCB0aGF0IHRyYWNrIGNhbiBiZSBzZXQgd2hlbiBwcmV2aW91c2x5IHVuc2V0LCBldmVuIGFm
dGVyIFNlbmQgaGFzIGJlZW4KLS8vIGNhbGxlZC4KLVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwg
U2V0VHJhY2tXaGlsZVNlbmRpbmcpIHsKLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9B
VURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlv
X3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+
U2VuZChNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShh
dWRpb19zZW5kZXItPlNldFRyYWNrKENyZWF0ZUF1ZGlvVHJhY2soImF1ZGlvIikpLm9rKCkpOwot
Ci0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNl
bmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdl
dCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1
ZSgpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNlbmQoTWFrZU1pbmltYWxWcDhQYXJh
bWV0ZXJzKCkpLm9rKCkpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNldFRyYWNrKENy
ZWF0ZVZpZGVvVHJhY2soInZpZGVvIikpLm9rKCkpOwotfQotCi0vLyBUZXN0IHRoYXQgdHJhY2sg
Y2FuIGJlIGNoYW5nZWQgbWlkLXNlbmRpbmcuIERpZmZlcnMgZnJvbSB0aGUgYWJvdmUgdGVzdCBp
bgotLy8gdGhhdCB0aGUgdHJhY2sgaXMgc2V0IGFuZCBiZWluZyBjaGFuZ2VkLCByYXRoZXIgdGhh
biB1bnNldCBhbmQgYmVpbmcgc2V0IGZvcgotLy8gdGhlIGZpcnN0IHRpbWUuCi1URVNUX0YoT3J0
Y1J0cFNlbmRlclRlc3QsIENoYW5nZVRyYWNrV2hpbGVTZW5kaW5nKSB7Ci0gIGF1dG8gYXVkaW9f
c2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIENy
ZWF0ZUF1ZGlvVHJhY2soImF1ZGlvMSIpLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8g
YXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNU
X1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKSkub2so
KSk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2V0VHJhY2soQ3JlYXRlQXVkaW9UcmFj
aygiYXVkaW8yIikpLm9rKCkpOwotCi0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNf
ZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIENyZWF0ZVZpZGVvVHJhY2soInZpZGVv
MSIpLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9f
c2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5T
ZW5kKE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUodmlk
ZW9fc2VuZGVyLT5TZXRUcmFjayhDcmVhdGVWaWRlb1RyYWNrKCJ2aWRlbzIiKSkub2soKSk7Ci19
Ci0KLS8vIFRlc3QgdGhhdCB0cmFjayBjYW4gYmUgc2V0IHRvIG51bGwgd2hpbGUgc2VuZGluZy4K
LVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwgVW5zZXRUcmFja1doaWxlU2VuZGluZykgewotICBh
dXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIo
Ci0gICAgICBDcmVhdGVBdWRpb1RyYWNrKCJhdWRpbyIpLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7
Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsK
LSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRl
cnMoKSkub2soKSk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2V0VHJhY2sobnVsbHB0
cikub2soKSk7Ci0KLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+
Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgQ3JlYXRlVmlkZW9UcmFjaygidmlkZW8iKSwgcnRwX3Ry
YW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1
bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZChNYWtlTWlu
aW1hbFZwOFBhcmFtZXRlcnMoKSkub2soKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+
U2V0VHJhY2sobnVsbHB0cikub2soKSk7Ci19Ci0KLS8vIFNob3VsZG4ndCBiZSBhYmxlIHRvIHNl
dCBhbiBhdWRpbyB0cmFjayBvbiBhIHZpZGVvIHNlbmRlciBvciB2aWNlIHZlcnNhLgotVEVTVF9G
KE9ydGNSdHBTZW5kZXJUZXN0LCBTZXRUcmFja09mV3JvbmdLaW5kRmFpbHMpIHsKLSAgYXV0byBh
dWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAg
ICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBh
dXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVY
UEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgYXVk
aW9fc2VuZGVyLT5TZXRUcmFjayhDcmVhdGVWaWRlb1RyYWNrKCJ2aWRlbyIpKS50eXBlKCkpOwot
Ci0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNl
bmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdl
dCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1
ZSgpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAg
ICAgICAgIHZpZGVvX3NlbmRlci0+U2V0VHJhY2soQ3JlYXRlQXVkaW9UcmFjaygiYXVkaW8iKSku
dHlwZSgpKTsKLX0KLQotLy8gQ3VycmVudGx5IFNldFRyYW5zcG9ydCBpc24ndCBzdXBwb3J0ZWQu
IFdoZW4gaXQgaXMsIHJlcGxhY2UgdGhpcyB0ZXN0IHdpdGggYQotLy8gdGVzdC90ZXN0cyBmb3Ig
aXQuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIFNldFRyYW5zcG9ydEZhaWxzKSB7Ci0gIHJ0
Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBmYWtlX3BhY2tldF90cmFuc3BvcnQoImFub3RoZXJfdHJh
bnNwb3J0Iik7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgcGFyYW1l
dGVycy5ydGNwLm11eCA9IHRydWU7Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRj
X2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBwYXJhbWV0ZXJzLCAmZmFrZV9w
YWNrZXRfdHJhbnNwb3J0LCBudWxscHRyLCBudWxscHRyKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0
ID0gcnRwX3RyYW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgYXV0byBzZW5kZXJfcmVz
dWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVf
QVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gc2VuZGVyID0gc2VuZGVyX3Jlc3Vs
dC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BF
UkFUSU9OLAotICAgICAgICAgICAgc2VuZGVyLT5TZXRUcmFuc3BvcnQocnRwX3RyYW5zcG9ydC5n
ZXQoKSkudHlwZSgpKTsKLX0KLQotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBHZXRUcmFuc3Bv
cnQpIHsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoY3Jp
Y2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfRVEocnRwX3Ry
YW5zcG9ydF8uZ2V0KCksIHJlc3VsdC52YWx1ZSgpLT5HZXRUcmFuc3BvcnQoKSk7Ci19Ci0KLS8v
IFRlc3QgdGhhdCAiU2VuZCIgY2F1c2VzIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzIHRvIGJlIGFw
cGxpZWQgdG8gdGhlIG1lZGlhCi0vLyBlbmdpbmUgbGV2ZWwsIGZvciBhbiBhdWRpbyBzZW5kZXIu
Ci1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIFNlbmRBcHBsaWVzQXVkaW9QYXJhbWV0ZXJzVG9N
ZWRpYUVuZ2luZSkgewotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBf
dHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jl
c3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAvLyBGaXJzdCwgY3JlYXRlIHBhcmFtZXRlcnMgd2l0aCBh
bGwgdGhlIGJlbGxzIGFuZCB3aGlzdGxlcy4KLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwot
Ci0gIFJ0cENvZGVjUGFyYW1ldGVycyBvcHVzX2NvZGVjOwotICBvcHVzX2NvZGVjLm5hbWUgPSAi
b3B1cyI7Ci0gIG9wdXNfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87Ci0g
IG9wdXNfY29kZWMucGF5bG9hZF90eXBlID0gMTIwOwotICBvcHVzX2NvZGVjLmNsb2NrX3JhdGUu
ZW1wbGFjZSg0ODAwMCk7Ci0gIG9wdXNfY29kZWMubnVtX2NoYW5uZWxzLmVtcGxhY2UoMik7Ci0g
IG9wdXNfY29kZWMucGFyYW1ldGVyc1sibWlucHRpbWUiXSA9ICIxMCI7Ci0gIG9wdXNfY29kZWMu
cnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6VFJBTlNQT1JUX0ND
KTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShvcHVzX2NvZGVjKSk7
Ci0KLSAgLy8gQWRkIHR3byBjb2RlY3MsIGV4cGVjdGluZyB0aGUgZmlyc3QgdG8gYmUgdXNlZC4K
LSAgLy8gVE9ETyhkZWFkYmVlZik6IE9uY2UgImNvZGVjX3BheWxvYWRfdHlwZSIgaXMgc3VwcG9y
dGVkLCB1c2UgaXQgdG8gc2VsZWN0IGEKLSAgLy8gY29kZWMgdGhhdCdzIG5vdCBhdCB0aGUgdG9w
IG9mIHRoZSBsaXN0LgotICBSdHBDb2RlY1BhcmFtZXRlcnMgaXNhY19jb2RlYzsKLSAgaXNhY19j
b2RlYy5uYW1lID0gIklTQUMiOwotICBpc2FjX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPOwotICBpc2FjX2NvZGVjLnBheWxvYWRfdHlwZSA9IDExMDsKLSAgaXNhY19jb2Rl
Yy5jbG9ja19yYXRlLmVtcGxhY2UoMTYwMDApOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2Jh
Y2soc3RkOjptb3ZlKGlzYWNfY29kZWMpKTsKLQotICBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgZW5j
b2Rpbmc7Ci0gIGVuY29kaW5nLnNzcmMuZW1wbGFjZSgweGRlYWRiZWVmKTsKLSAgZW5jb2Rpbmcu
bWF4X2JpdHJhdGVfYnBzLmVtcGxhY2UoMjAwMDApOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5w
dXNoX2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0KLSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0
ZW5zaW9ucy5lbXBsYWNlX2JhY2soCi0gICAgICAidXJuOmlldGY6cGFyYW1zOnJ0cC1oZHJleHQ6
c3NyYy1hdWRpby1sZXZlbCIsIDMpOwotCi0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2Vu
ZChwYXJhbWV0ZXJzKS5vaygpKTsKLQotICAvLyBOb3cgdmVyaWZ5IHRoYXQgdGhlIHBhcmFtZXRl
cnMgd2VyZSBhcHBsaWVkIHRvIHRoZSBmYWtlIG1lZGlhIGVuZ2luZSBsYXllcgotICAvLyB0aGF0
IGV4aXN0cyBiZWxvdyBCYXNlQ2hhbm5lbC4KLSAgY3JpY2tldDo6RmFrZVZvaWNlTWVkaWFDaGFu
bmVsKiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRW
b2ljZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZvaWNlX2NoYW5uZWwp
OwotICBFWFBFQ1RfVFJVRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRpbmcoKSk7Ci0KLSAgLy8g
VmVyaWZ5IGNvZGVjIHBhcmFtZXRlcnMuCi0gIEFTU0VSVF9HVChmYWtlX3ZvaWNlX2NoYW5uZWwt
PnNlbmRfY29kZWNzKCkuc2l6ZSgpLCAwdSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OkF1ZGlvQ29kZWMm
IHRvcF9jb2RlYyA9IGZha2Vfdm9pY2VfY2hhbm5lbC0+c2VuZF9jb2RlY3MoKVswXTsKLSAgRVhQ
RUNUX0VRKCJvcHVzIiwgdG9wX2NvZGVjLm5hbWUpOwotICBFWFBFQ1RfRVEoMTIwLCB0b3BfY29k
ZWMuaWQpOwotICBFWFBFQ1RfRVEoNDgwMDAsIHRvcF9jb2RlYy5jbG9ja3JhdGUpOwotICBFWFBF
Q1RfRVEoMnUsIHRvcF9jb2RlYy5jaGFubmVscyk7Ci0gIEFTU0VSVF9ORSh0b3BfY29kZWMucGFy
YW1zLmVuZCgpLCB0b3BfY29kZWMucGFyYW1zLmZpbmQoIm1pbnB0aW1lIikpOwotICBFWFBFQ1Rf
RVEoIjEwIiwgdG9wX2NvZGVjLnBhcmFtcy5hdCgibWlucHRpbWUiKSk7Ci0KLSAgLy8gVmVyaWZ5
IGVuY29kaW5nIHBhcmFtZXRlcnMuCi0gIEVYUEVDVF9FUSgyMDAwMCwgZmFrZV92b2ljZV9jaGFu
bmVsLT5tYXhfYnBzKCkpOwotICBBU1NFUlRfRVEoMXUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+c2Vu
ZF9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAgY29uc3QgY3JpY2tldDo6U3RyZWFtUGFyYW1zJiBzZW5k
X3N0cmVhbSA9Ci0gICAgICBmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpWzBdOwot
ICBFWFBFQ1RfRVEoMXUsIHNlbmRfc3RyZWFtLnNzcmNzLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgw
eGRlYWRiZWVmLCBzZW5kX3N0cmVhbS5maXJzdF9zc3JjKCkpOwotCi0gIC8vIFZlcmlmeSBoZWFk
ZXIgZXh0ZW5zaW9ucy4KLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRf
ZXh0ZW5zaW9ucygpLnNpemUoKSk7Ci0gIGNvbnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uID0g
ZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX2V4dGVuc2lvbnMoKVswXTsKLSAgRVhQRUNUX0VRKCJ1
cm46aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDpzc3JjLWF1ZGlvLWxldmVsIiwgZXh0ZW5zaW9uLnVy
aSk7Ci0gIEVYUEVDVF9FUSgzLCBleHRlbnNpb24uaWQpOwotfQotCi0vLyBUZXN0IHRoYXQgIlNl
bmQiIGNhdXNlcyB0aGUgZXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVkIHRvIHRoZSBt
ZWRpYQotLy8gZW5naW5lIGxldmVsLCBmb3IgYSB2aWRlbyBzZW5kZXIuCi1URVNUX0YoT3J0Y1J0
cFNlbmRlclRlc3QsIFNlbmRBcHBsaWVzVmlkZW9QYXJhbWV0ZXJzVG9NZWRpYUVuZ2luZSkgewot
ICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5k
ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQo
KSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUo
KTsKLQotICAvLyBGaXJzdCwgY3JlYXRlIHBhcmFtZXRlcnMgd2l0aCBhbGwgdGhlIGJlbGxzIGFu
ZCB3aGlzdGxlcy4KLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gIFJ0cENvZGVjUGFy
YW1ldGVycyB2cDhfY29kZWM7Ci0gIHZwOF9jb2RlYy5uYW1lID0gIlZQOCI7Ci0gIHZwOF9jb2Rl
Yy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgdnA4X2NvZGVjLnBheWxvYWRf
dHlwZSA9IDk5OwotICAvLyBUcnkgYSBjb3VwbGUgdHlwZXMgb2YgZmVlZGJhY2sgcGFyYW1zLiAi
R2VuZXJpYyBOQUNLIiBpcyBhIGJpdCBvZiBhCi0gIC8vIHNwZWNpYWwgY2FzZSwgc28gdGVzdCBp
dCBoZXJlLgotICB2cDhfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRi
YWNrVHlwZTo6Q0NNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRj
cEZlZWRiYWNrTWVzc2FnZVR5cGU6OkZJUik7Ci0gIHZwOF9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVt
cGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpOQUNLLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5cGU6OkdFTkVSSUNfTkFDSyk7
Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUodnA4X2NvZGVjKSk7Ci0K
LSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHZwOF9ydHhfY29kZWM7Ci0gIHZwOF9ydHhfY29kZWMubmFt
ZSA9ICJydHgiOwotICB2cDhfcnR4X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJ
REVPOwotICB2cDhfcnR4X2NvZGVjLnBheWxvYWRfdHlwZSA9IDEwMDsKLSAgdnA4X3J0eF9jb2Rl
Yy5wYXJhbWV0ZXJzWyJhcHQiXSA9ICI5OSI7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFj
ayhzdGQ6Om1vdmUodnA4X3J0eF9jb2RlYykpOwotCi0gIC8vIEFkZCB0d28gY29kZWNzLCBleHBl
Y3RpbmcgdGhlIGZpcnN0IHRvIGJlIHVzZWQuCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBPbmNlICJj
b2RlY19wYXlsb2FkX3R5cGUiIGlzIHN1cHBvcnRlZCwgdXNlIGl0IHRvIHNlbGVjdCBhCi0gIC8v
IGNvZGVjIHRoYXQncyBub3QgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4KLSAgUnRwQ29kZWNQYXJh
bWV0ZXJzIHZwOV9jb2RlYzsKLSAgdnA5X2NvZGVjLm5hbWUgPSAiVlA5IjsKLSAgdnA5X2NvZGVj
LmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB2cDlfY29kZWMucGF5bG9hZF90
eXBlID0gMTAyOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHZwOV9j
b2RlYykpOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyB2cDlfcnR4X2NvZGVjOwotICB2cDlfcnR4
X2NvZGVjLm5hbWUgPSAicnR4IjsKLSAgdnA5X3J0eF9jb2RlYy5raW5kID0gY3JpY2tldDo6TUVE
SUFfVFlQRV9WSURFTzsKLSAgdnA5X3J0eF9jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMDM7Ci0gIHZw
OV9ydHhfY29kZWMucGFyYW1ldGVyc1siYXB0Il0gPSAiMTAyIjsKLSAgcGFyYW1ldGVycy5jb2Rl
Y3MucHVzaF9iYWNrKHN0ZDo6bW92ZSh2cDlfcnR4X2NvZGVjKSk7Ci0KLSAgUnRwRW5jb2RpbmdQ
YXJhbWV0ZXJzIGVuY29kaW5nOwotICBlbmNvZGluZy5zc3JjLmVtcGxhY2UoMHhkZWFkYmVlZik7
Ci0gIGVuY29kaW5nLnJ0eC5lbXBsYWNlKDB4YmFhZGZlZWQpOwotICBlbmNvZGluZy5tYXhfYml0
cmF0ZV9icHMuZW1wbGFjZSg5OTk5OSk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1c2hfYmFj
ayhzdGQ6Om1vdmUoZW5jb2RpbmcpKTsKLQotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25z
LmVtcGxhY2VfYmFjaygidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iLCA0KTsKLSAgcGFyYW1l
dGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soCi0gICAgICAiaHR0cDovL3d3dy53
ZWJydGMub3JnL2V4cGVyaW1lbnRzL3J0cC1oZHJleHQvcGxheW91dC1kZWxheSIsIDYpOwotCi0g
IEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZChwYXJhbWV0ZXJzKS5vaygpKTsKLQotICAv
LyBOb3cgdmVyaWZ5IHRoYXQgdGhlIHBhcmFtZXRlcnMgd2VyZSBhcHBsaWVkIHRvIHRoZSBmYWtl
IG1lZGlhIGVuZ2luZSBsYXllcgotICAvLyB0aGF0IGV4aXN0cyBiZWxvdyBCYXNlQ2hhbm5lbC4K
LSAgY3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQot
ICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9O
RShudWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVv
X2NoYW5uZWwtPnNlbmRpbmcoKSk7Ci0KLSAgLy8gVmVyaWZ5IGNvZGVjIHBhcmFtZXRlcnMuCi0g
IEFTU0VSVF9HRShmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfY29kZWNzKCkuc2l6ZSgpLCAydSk7
Ci0gIGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29kZWMmIHRvcF9jb2RlYyA9IGZha2VfdmlkZW9fY2hh
bm5lbC0+c2VuZF9jb2RlY3MoKVswXTsKLSAgRVhQRUNUX0VRKCJWUDgiLCB0b3BfY29kZWMubmFt
ZSk7Ci0gIEVYUEVDVF9FUSg5OSwgdG9wX2NvZGVjLmlkKTsKLSAgRVhQRUNUX1RSVUUodG9wX2Nv
ZGVjLmZlZWRiYWNrX3BhcmFtcy5IYXMoeyJjY20iLCAiZmlyIn0pKTsKLSAgRVhQRUNUX1RSVUUo
dG9wX2NvZGVjLmZlZWRiYWNrX3BhcmFtcy5IYXMoY3JpY2tldDo6RmVlZGJhY2tQYXJhbSgibmFj
ayIpKSk7Ci0KLSAgY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyYgcnR4X2NvZGVjID0gZmFrZV92
aWRlb19jaGFubmVsLT5zZW5kX2NvZGVjcygpWzFdOwotICBFWFBFQ1RfRVEoInJ0eCIsIHJ0eF9j
b2RlYy5uYW1lKTsKLSAgRVhQRUNUX0VRKDEwMCwgcnR4X2NvZGVjLmlkKTsKLSAgQVNTRVJUX05F
KHJ0eF9jb2RlYy5wYXJhbXMuZW5kKCksIHJ0eF9jb2RlYy5wYXJhbXMuZmluZCgiYXB0IikpOwot
ICBFWFBFQ1RfRVEoIjk5IiwgcnR4X2NvZGVjLnBhcmFtcy5hdCgiYXB0IikpOwotCi0gIC8vIFZl
cmlmeSBlbmNvZGluZyBwYXJhbWV0ZXJzLgotICBFWFBFQ1RfRVEoOTk5OTksIGZha2VfdmlkZW9f
Y2hhbm5lbC0+bWF4X2JwcygpKTsKLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZpZGVvX2NoYW5uZWwt
PnNlbmRfc3RyZWFtcygpLnNpemUoKSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYg
c2VuZF9zdHJlYW0gPQotICAgICAgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVsw
XTsKLSAgRVhQRUNUX0VRKDJ1LCBzZW5kX3N0cmVhbS5zc3Jjcy5zaXplKCkpOwotICBFWFBFQ1Rf
RVEoMHhkZWFkYmVlZiwgc2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpKTsKLSAgdWludDMyX3QgcnR4
X3NzcmMgPSAwdTsKLSAgRVhQRUNUX1RSVUUoc2VuZF9zdHJlYW0uR2V0RmlkU3NyYyhzZW5kX3N0
cmVhbS5maXJzdF9zc3JjKCksICZydHhfc3NyYykpOwotICBFWFBFQ1RfRVEoMHhiYWFkZmVlZCwg
cnR4X3NzcmMpOwotCi0gIC8vIFZlcmlmeSBoZWFkZXIgZXh0ZW5zaW9ucy4KLSAgQVNTRVJUX0VR
KDJ1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfZXh0ZW5zaW9ucygpLnNpemUoKSk7Ci0gIGNv
bnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uMSA9IGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9l
eHRlbnNpb25zKClbMF07Ci0gIEVYUEVDVF9FUSgidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24i
LCBleHRlbnNpb24xLnVyaSk7Ci0gIEVYUEVDVF9FUSg0LCBleHRlbnNpb24xLmlkKTsKLSAgY29u
c3QgUnRwRXh0ZW5zaW9uJiBleHRlbnNpb24yID0gZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX2V4
dGVuc2lvbnMoKVsxXTsKLSAgRVhQRUNUX0VRKCJodHRwOi8vd3d3LndlYnJ0Yy5vcmcvZXhwZXJp
bWVudHMvcnRwLWhkcmV4dC9wbGF5b3V0LWRlbGF5IiwKLSAgICAgICAgICAgIGV4dGVuc2lvbjIu
dXJpKTsKLSAgRVhQRUNUX0VRKDYsIGV4dGVuc2lvbjIuaWQpOwotfQotCi0vLyBFbnN1cmUgdGhh
dCB3aGVuIHByaW1hcnkgb3IgUlRYIFNTUkNzIGFyZSBsZWZ0IHVuc2V0LCB0aGV5J3JlIGdlbmVy
YXRlZAotLy8gYXV0b21hdGljYWxseS4KLVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwgU2VuZEdl
bmVyYXRlc1NzcmNzV2hlbkVtcHR5KSB7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9y
dGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVf
QVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRp
b19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMg
PSBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aE5vU3NyYygpOwotICAvLyBEZWZhdWx0IFJU
WCBwYXJhbWV0ZXJzLCB3aXRoIG5vIFNTUkMuCi0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnJ0
eC5lbXBsYWNlKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChwYXJhbWV0ZXJz
KS5vaygpKTsKLQotICBjcmlja2V0OjpGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2Vf
Y2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsK
LSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2Vfdm9pY2VfY2hhbm5lbCk7Ci0gIEFTU0VSVF9FUSgx
dSwgZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX3N0cmVhbXMoKS5zaXplKCkpOwotICBjb25zdCBj
cmlja2V0OjpTdHJlYW1QYXJhbXMmIGF1ZGlvX3NlbmRfc3RyZWFtID0KLSAgICAgIGZha2Vfdm9p
Y2VfY2hhbm5lbC0+c2VuZF9zdHJlYW1zKClbMF07Ci0gIEVYUEVDVF9ORSgwdSwgYXVkaW9fc2Vu
ZF9zdHJlYW0uZmlyc3Rfc3NyYygpKTsKLSAgdWludDMyX3QgcnR4X3NzcmMgPSAwdTsKLSAgRVhQ
RUNUX1RSVUUoCi0gICAgICBhdWRpb19zZW5kX3N0cmVhbS5HZXRGaWRTc3JjKGF1ZGlvX3NlbmRf
c3RyZWFtLmZpcnN0X3NzcmMoKSwgJnJ0eF9zc3JjKSk7Ci0gIEVYUEVDVF9ORSgwdSwgcnR4X3Nz
cmMpOwotICBFWFBFQ1RfTkUoYXVkaW9fc2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpLCBydHhfc3Ny
Yyk7Ci0KLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9y
dF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92
ZVZhbHVlKCk7Ci0gIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoTm9T
c3JjKCk7Ci0gIC8vIERlZmF1bHQgUlRYIHBhcmFtZXRlcnMsIHdpdGggbm8gU1NSQy4KLSAgcGFy
YW1ldGVycy5lbmNvZGluZ3NbMF0ucnR4LmVtcGxhY2UoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9f
c2VuZGVyLT5TZW5kKHBhcmFtZXRlcnMpLm9rKCkpOwotCi0gIGNyaWNrZXQ6OkZha2VWaWRlb01l
ZGlhQ2hhbm5lbCogZmFrZV92aWRlb19jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5l
Xy0+R2V0VmlkZW9DaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92aWRlb19j
aGFubmVsKTsKLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfc3RyZWFt
cygpLnNpemUoKSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYgdmlkZW9fc2VuZF9z
dHJlYW0gPQotICAgICAgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVswXTsKLSAg
RVhQRUNUX05FKDB1LCB2aWRlb19zZW5kX3N0cmVhbS5maXJzdF9zc3JjKCkpOwotICBydHhfc3Ny
YyA9IDB1OwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIHZpZGVvX3NlbmRfc3RyZWFtLkdldEZpZFNz
cmModmlkZW9fc2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpLCAmcnR4X3NzcmMpKTsKLSAgRVhQRUNU
X05FKDB1LCBydHhfc3NyYyk7Ci0gIEVYUEVDVF9ORSh2aWRlb19zZW5kX3N0cmVhbS5maXJzdF9z
c3JjKCksIHJ0eF9zc3JjKTsKLSAgRVhQRUNUX05FKHZpZGVvX3NlbmRfc3RyZWFtLmZpcnN0X3Nz
cmMoKSwgYXVkaW9fc2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpKTsKLX0KLQotLy8gVGVzdCBjaGFu
Z2luZyBib3RoIHRoZSBzZW5kIGNvZGVjIGFuZCBTU1JDIGF0IHRoZSBzYW1lIHRpbWUsIGFuZCB2
ZXJpZnkgdGhhdAotLy8gdGhlIG5ldyBwYXJhbWV0ZXJzIGFyZSBhcHBsaWVkIHRvIHRoZSBtZWRp
YSBlbmdpbmUgbGV2ZWwuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIENhbGxpbmdTZW5kVHdp
Y2VDaGFuZ2VzUGFyYW1ldGVycykgewotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRj
X2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FV
RElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9f
c2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICBhdWRpb19z
ZW5kZXItPlNlbmQoTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVyc1dpdGhTc3JjKDB4MTExMTExMTEp
KS5vaygpKTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICBhdWRpb19zZW5kZXItPlNlbmQoTWFrZU1p
bmltYWxJc2FjUGFyYW1ldGVyc1dpdGhTc3JjKDB4MjIyMjIyMjIpKS5vaygpKTsKLQotICBjcmlj
a2V0OjpGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2VfY2hhbm5lbCA9Ci0gICAgICBm
YWtlX21lZGlhX2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxw
dHIsIGZha2Vfdm9pY2VfY2hhbm5lbCk7Ci0gIEFTU0VSVF9HVChmYWtlX3ZvaWNlX2NoYW5uZWwt
PnNlbmRfY29kZWNzKCkuc2l6ZSgpLCAwdSk7Ci0gIEVYUEVDVF9FUSgiSVNBQyIsIGZha2Vfdm9p
Y2VfY2hhbm5lbC0+c2VuZF9jb2RlY3MoKVswXS5uYW1lKTsKLSAgQVNTRVJUX0VRKDF1LCBmYWtl
X3ZvaWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgweDIy
MjIyMjIydSwgZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVswXS5maXJzdF9zc3Jj
KCkpOwotCi0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3Bv
cnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIHZpZGVvX3NlbmRlci0+U2VuZChNYWtl
TWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoU3NyYygweDMzMzMzMzMzKSkub2soKSk7Ci0gIEVYUEVD
VF9UUlVFKAotICAgICAgdmlkZW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsVnA5UGFyYW1ldGVy
c1dpdGhTc3JjKDB4NDQ0NDQ0NDQpKS5vaygpKTsKLQotICBjcmlja2V0OjpGYWtlVmlkZW9NZWRp
YUNoYW5uZWwqIGZha2VfdmlkZW9fY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8t
PkdldFZpZGVvQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2VfdmlkZW9fY2hh
bm5lbCk7Ci0gIEFTU0VSVF9HVChmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfY29kZWNzKCkuc2l6
ZSgpLCAwdSk7Ci0gIEVYUEVDVF9FUSgiVlA5IiwgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX2Nv
ZGVjcygpWzBdLm5hbWUpOwotICBBU1NFUlRfRVEoMXUsIGZha2VfdmlkZW9fY2hhbm5lbC0+c2Vu
ZF9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDB4NDQ0NDQ0NDR1LCBmYWtlX3ZpZGVv
X2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpWzBdLmZpcnN0X3NzcmMoKSk7Ci19Ci0KLS8vIEVuc3Vy
ZSB0aGF0IGlmIHRoZSB8YWN0aXZlfCBmbGFnIG9mIFJ0cEVuY29kaW5nUGFyYW1ldGVycyBpcyBz
ZXQgdG8gZmFsc2UsCi0vLyBzZW5kaW5nIHN0b3BzIGF0IHRoZSBtZWRpYSBlbmdpbmUgbGV2ZWwu
Ci1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIERlYWN0aXZhdGluZ0VuY29kaW5nU3RvcHNTZW5k
aW5nKSB7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3Bv
cnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbE9wdXNQ
YXJhbWV0ZXJzKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChwYXJhbWV0ZXJz
KS5vaygpKTsKLQotICAvLyBFeHBlY3QgInNlbmRpbmciIGZsYWcgdG8gaW5pdGlhbGx5IGJlIHRy
dWUuCi0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVs
ID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NF
UlRfTkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92
b2ljZV9jaGFubmVsLT5zZW5kaW5nKCkpOwotCi0gIC8vIERlYWN0aXZhdGUgZW5jb2RpbmcgYW5k
IGV4cGVjdCBpdCB0byBjaGFuZ2UgdG8gZmFsc2UuCi0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBd
LmFjdGl2ZSA9IGZhbHNlOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQocGFyYW1l
dGVycykub2soKSk7Ci0gIEVYUEVDVF9GQUxTRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRpbmco
KSk7Ci0KLSAgLy8gVHJ5IHRoZSBzYW1lIHRoaW5nIGZvciB2aWRlbyBub3cuCi0gIGF1dG8gdmlk
ZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAg
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0
byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBwYXJh
bWV0ZXJzID0gTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVv
X3NlbmRlci0+U2VuZChwYXJhbWV0ZXJzKS5vaygpKTsKLQotICBjcmlja2V0OjpGYWtlVmlkZW9N
ZWRpYUNoYW5uZWwqIGZha2VfdmlkZW9fY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2lu
ZV8tPkdldFZpZGVvQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2VfdmlkZW9f
Y2hhbm5lbCk7Ci0gIEVYUEVDVF9UUlVFKGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZGluZygpKTsK
LQotICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5hY3RpdmUgPSBmYWxzZTsKLSAgRVhQRUNUX1RS
VUUodmlkZW9fc2VuZGVyLT5TZW5kKHBhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfRkFMU0Uo
ZmFrZV92aWRlb19jaGFubmVsLT5zZW5kaW5nKCkpOwotfQotCi0vLyBFbnN1cmUgdGhhdCBjYWxs
aW5nIFNlbmQgd2l0aCBhbiBlbXB0eSBsaXN0IG9mIGVuY29kaW5ncyBjYXVzZXMgc2VuZCBzdHJl
YW1zCi0vLyBhdCB0aGUgbWVkaWEgZW5naW5lIGxldmVsIHRvIGJlIGNsZWFyZWQuCi1URVNUX0Yo
T3J0Y1J0cFNlbmRlclRlc3QsIENhbGxpbmdTZW5kV2l0aEVtcHR5RW5jb2RpbmdzQ2xlYXJzU2Vu
ZFN0cmVhbXMpIHsKLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+
Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3Ry
YW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9yZXN1
bHQuTW92ZVZhbHVlKCk7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFs
T3B1c1BhcmFtZXRlcnMoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKHBhcmFt
ZXRlcnMpLm9rKCkpOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5jbGVhcigpOwotICBFWFBFQ1Rf
VFJVRShhdWRpb19zZW5kZXItPlNlbmQocGFyYW1ldGVycykub2soKSk7Ci0KLSAgY3JpY2tldDo6
RmFrZVZvaWNlTWVkaWFDaGFubmVsKiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9t
ZWRpYV9lbmdpbmVfLT5HZXRWb2ljZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBm
YWtlX3ZvaWNlX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnNl
bmRfc3RyZWFtcygpLmVtcHR5KCkpOwotCi0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9y
dGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVf
VklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRl
b19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxW
cDhQYXJhbWV0ZXJzKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZChwYXJhbWV0
ZXJzKS5vaygpKTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3MuY2xlYXIoKTsKLSAgRVhQRUNUX1RS
VUUodmlkZW9fc2VuZGVyLT5TZW5kKHBhcmFtZXRlcnMpLm9rKCkpOwotCi0gIGNyaWNrZXQ6OkZh
a2VWaWRlb01lZGlhQ2hhbm5lbCogZmFrZV92aWRlb19jaGFubmVsID0KLSAgICAgIGZha2VfbWVk
aWFfZW5naW5lXy0+R2V0VmlkZW9DaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFr
ZV92aWRlb19jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92aWRlb19jaGFubmVsLT5zZW5k
X3N0cmVhbXMoKS5lbXB0eSgpKTsKLX0KLQotLy8gVGhlc2UgZXJyb3JzIHNob3VsZCBiZSBjb3Zl
cmVkIGJ5IHJ0cHBhcmFtZXRlcnNjb252ZXJzaW9uX3VuaXR0ZXN0LmNjLCBidXQKLS8vIHdlIHNo
b3VsZCBhdCBsZWFzdCB0ZXN0IHRoYXQgdGhvc2UgZXJyb3JzIGFyZSBwcm9wb2dhdGVkIGZyb20g
Y2FsbHMgdG8gU2VuZCwKLS8vIHdpdGggYSBmZXcgZXhhbXBsZXMuCi1URVNUX0YoT3J0Y1J0cFNl
bmRlclRlc3QsIFNlbmRSZXR1cm5zRXJyb3JPbkludmFsaWRQYXJhbWV0ZXJzKSB7Ci0gIGF1dG8g
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfVklERU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBzZW5kZXIgPSByZXN1bHQuTW92ZVZhbHVl
KCk7Ci0gIC8vIE5BQ0sgZmVlZGJhY2sgbWlzc2luZyBtZXNzYWdlIHR5cGUuCi0gIFJ0cFBhcmFt
ZXRlcnMgaW52YWxpZF9mZWVkYmFjayA9IE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpOwotICBp
bnZhbGlkX2ZlZWRiYWNrLmNvZGVjc1swXS5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNw
RmVlZGJhY2tUeXBlOjpOQUNLKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9Q
QVJBTUVURVIsCi0gICAgICAgICAgICBzZW5kZXItPlNlbmQoaW52YWxpZF9mZWVkYmFjaykudHlw
ZSgpKTsKLSAgLy8gTmVnYXRpdmUgcGF5bG9hZCB0eXBlLgotICBSdHBQYXJhbWV0ZXJzIGludmFs
aWRfcHQgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgaW52YWxpZF9wdC5jb2RlY3Nb
MF0ucGF5bG9hZF90eXBlID0gLTE7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURf
UkFOR0UsIHNlbmRlci0+U2VuZChpbnZhbGlkX3B0KS50eXBlKCkpOwotICAvLyBEdXBsaWNhdGUg
Y29kZWMgcGF5bG9hZCB0eXBlcy4KLSAgUnRwUGFyYW1ldGVycyBkdXBsaWNhdGVfcGF5bG9hZF90
eXBlcyA9IE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpOwotICBkdXBsaWNhdGVfcGF5bG9hZF90
eXBlcy5jb2RlY3MucHVzaF9iYWNrKGR1cGxpY2F0ZV9wYXlsb2FkX3R5cGVzLmNvZGVjc1swXSk7
Ci0gIGR1cGxpY2F0ZV9wYXlsb2FkX3R5cGVzLmNvZGVjcy5iYWNrKCkubmFtZSA9ICJWUDkiOwot
ICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAg
IHNlbmRlci0+U2VuZChkdXBsaWNhdGVfcGF5bG9hZF90eXBlcykudHlwZSgpKTsKLX0KLQotLy8g
VHdvIHNlbmRlcnMgdXNpbmcgdGhlIHNhbWUgdHJhbnNwb3J0IHNob3VsZG4ndCBiZSBhYmxlIHRv
IHVzZSB0aGUgc2FtZQotLy8gcGF5bG9hZCB0eXBlIHRvIHJlZmVyIHRvIGRpZmZlcmVudCBjb2Rl
Y3MsIHNhbWUgaGVhZGVyIGV4dGVuc2lvbiBJRHMgdG8KLS8vIHJlZmVyIHRvIGRpZmZlcmVudCBl
eHRlbnNpb25zLCBvciBzYW1lIFNTUkMuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIFNlbmRS
ZXR1cm5zRXJyb3JPbklkQ29uZmxpY3RzKSB7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9
IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXJfcmVz
dWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVE
SUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRl
ciA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVy
ID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAvLyBGaXJzdCB0ZXN0IHBh
eWxvYWQgdHlwZSBjb25mbGljdC4KLSAgUnRwUGFyYW1ldGVycyBhdWRpb19wYXJhbWV0ZXJzID0g
TWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpOwotICBSdHBQYXJhbWV0ZXJzIHZpZGVvX3BhcmFt
ZXRlcnMgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgYXVkaW9fcGFyYW1ldGVycy5j
b2RlY3NbMF0ucGF5bG9hZF90eXBlID0gMTAwOwotICB2aWRlb19wYXJhbWV0ZXJzLmNvZGVjc1sw
XS5wYXlsb2FkX3R5cGUgPSAxMDA7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChh
dWRpb19wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJ
RF9QQVJBTUVURVIsCi0gICAgICAgICAgICB2aWRlb19zZW5kZXItPlNlbmQodmlkZW9fcGFyYW1l
dGVycykudHlwZSgpKTsKLQotICAvLyBUZXN0IGhlYWRlciBleHRlbnNpb24gSUQgY29uZmxpY3Qu
Ci0gIHZpZGVvX3BhcmFtZXRlcnMuY29kZWNzWzBdLnBheWxvYWRfdHlwZSA9IDExMDsKLSAgYXVk
aW9fcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soImZvbyIsIDQpOwot
ICB2aWRlb19wYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygiYmFyIiwg
NCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChhdWRpb19wYXJhbWV0ZXJzKS5v
aygpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAg
ICAgICAgICB2aWRlb19zZW5kZXItPlNlbmQodmlkZW9fcGFyYW1ldGVycykudHlwZSgpKTsKLQot
ICAvLyBUZXN0IFNTUkMgY29uZmxpY3QuIEhhdmUgYW4gUlRYIFNTUkMgdGhhdCBjb25mbGljdHMg
d2l0aCBhIHByaW1hcnkgU1NSQwotICAvLyBmb3IgZXh0cmEgY2hhbGxlbmdlLgotICB2aWRlb19w
YXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zWzBdLnVyaSA9ICJmb28iOwotICBhdWRpb19wYXJh
bWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjLmVtcGxhY2UoMHhkZWFkYmVlZik7Ci0gIHZpZGVvX3Bh
cmFtZXRlcnMuZW5jb2RpbmdzWzBdLnNzcmMuZW1wbGFjZSgweGFiYmFhYmJhKTsKLSAgdmlkZW9f
cGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ucnR4LmVtcGxhY2UoMHhkZWFkYmVlZik7Ci0gIEVYUEVD
VF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChhdWRpb19wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQ
RUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICB2aWRl
b19zZW5kZXItPlNlbmQodmlkZW9fcGFyYW1ldGVycykudHlwZSgpKTsKLQotICAvLyBTYW5pdHkg
Y2hlY2sgdGhhdCBwYXJhbWV0ZXJzIGNhbiBiZSBzZXQgaWYgdGhlIGNvbmZsaWN0cyBhcmUgYWxs
IHJlc29sdmVkLgotICB2aWRlb19wYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5ydHgtPnNzcmMuZW1w
bGFjZSgweGJhYWRmMDBkKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZW5kKHZpZGVv
X3BhcmFtZXRlcnMpLm9rKCkpOwotfQotCi0vLyBFbnN1cmUgdGhhdCBkZWxldGluZyBhIHNlbmRl
ciBjYXVzZXMgc2VuZCBzdHJlYW1zIGF0IHRoZSBtZWRpYSBlbmdpbmUgbGV2ZWwKLS8vIHRvIGJl
IGNsZWFyZWQuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIERlbGV0aW5nU2VuZGVyQ2xlYXJz
U2VuZFN0cmVhbXMpIHsKLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5
Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRw
X3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9y
ZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChNYWtl
TWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0gIC8vIEFsc28gY3JlYXRlIGFuIGF1
ZGlvIHJlY2VpdmVyLCB0byBwcmV2ZW50IHRoZSB2b2ljZSBjaGFubmVsIGZyb20gYmVpbmcKLSAg
Ly8gY29tcGxldGVseSBkZWxldGVkLgotICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9y
dGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQ
RV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyID0g
YXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRShhdWRpb19y
ZWNlaXZlci0+UmVjZWl2ZShNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0g
IGF1ZGlvX3NlbmRlci5yZXNldChudWxscHRyKTsKLSAgY3JpY2tldDo6RmFrZVZvaWNlTWVkaWFD
aGFubmVsKiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5H
ZXRWb2ljZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZvaWNlX2NoYW5u
ZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpLmVt
cHR5KCkpOwotCi0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNy
ZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFu
c3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0
Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNlbmQoTWFrZU1pbmlt
YWxWcDhQYXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0gIC8vIEFsc28gY3JlYXRlIGFuIHZpZGVvIHJl
Y2VpdmVyLCB0byBwcmV2ZW50IHRoZSB2aWRlbyBjaGFubmVsIGZyb20gYmVpbmcKLSAgLy8gY29t
cGxldGVseSBkZWxldGVkLgotICBhdXRvIHZpZGVvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFj
dG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURF
TywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyID0gdmlkZW9f
cmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZl
ci0+UmVjZWl2ZShNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKSkub2soKSk7Ci0KLSAgdmlkZW9f
c2VuZGVyLnJlc2V0KG51bGxwdHIpOwotICBjcmlja2V0OjpGYWtlVmlkZW9NZWRpYUNoYW5uZWwq
IGZha2VfdmlkZW9fY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZpZGVv
Q2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2VfdmlkZW9fY2hhbm5lbCk7Ci0g
IEVYUEVDVF9UUlVFKGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9zdHJlYW1zKCkuZW1wdHkoKSk7
Ci19Ci0KLS8vIElmIFNlbmQgaGFzbid0IGJlZW4gY2FsbGVkLCBHZXRQYXJhbWV0ZXJzIHNob3Vs
ZCByZXR1cm4gZW1wdHkgcGFyYW1ldGVycy4KLVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwgR2V0
RGVmYXVsdFBhcmFtZXRlcnMpIHsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBTZW5kZXIoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBF
WFBFQ1RfRVEoUnRwUGFyYW1ldGVycygpLCByZXN1bHQudmFsdWUoKS0+R2V0UGFyYW1ldGVycygp
KTsKLSAgcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1F
RElBX1RZUEVfVklERU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSdHBQYXJhbWV0ZXJzKCksIHJl
c3VsdC52YWx1ZSgpLT5HZXRQYXJhbWV0ZXJzKCkpOwotfQotCi0vLyBUZXN0IHRoYXQgR2V0UGFy
YW1ldGVycyByZXR1cm5zIHRoZSBsYXN0IHBhcmFtZXRlcnMgcGFzc2VkIGludG8gU2VuZCwgYWxv
bmcKLS8vIHdpdGggdGhlIGltcGxlbWVudGF0aW9uLWRlZmF1bHQgdmFsdWVzIGZpbGxlZCBpbiB3
aGVyZSB0aGV5IHdlcmUgbGVmdCB1bnNldC4KLVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwKLSAg
ICAgICBHZXRQYXJhbWV0ZXJzUmV0dXJuc0xhc3RTZXRQYXJhbWV0ZXJzV2l0aERlZmF1bHRzRmls
bGVkKSB7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFNlbmRlcigKLSAgICAgIENyZWF0ZUF1ZGlvVHJhY2soImF1ZGlvIiksIHJ0cF90cmFuc3Bv
cnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotCi0gIFJ0cFBhcmFtZXRlcnMgb3B1c19wYXJhbWV0ZXJzID0gTWFrZU1pbmlt
YWxPcHVzUGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQob3B1
c19wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKG9wdXNfcGFyYW1ldGVycywgYXVkaW9f
c2VuZGVyLT5HZXRQYXJhbWV0ZXJzKCkpOwotCi0gIFJ0cFBhcmFtZXRlcnMgaXNhY19wYXJhbWV0
ZXJzID0gTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVycygpOwotICAvLyBTYW5pdHkgY2hlY2sgdGhh
dCBudW1fY2hhbm5lbHMgYWN0dWFsbHkgaXMgbGVmdCB1bnNldC4KLSAgQVNTRVJUX0ZBTFNFKGlz
YWNfcGFyYW1ldGVycy5jb2RlY3NbMF0ubnVtX2NoYW5uZWxzKTsKLSAgRVhQRUNUX1RSVUUoYXVk
aW9fc2VuZGVyLT5TZW5kKGlzYWNfcGFyYW1ldGVycykub2soKSk7Ci0gIC8vIFNob3VsZCBiZSBm
aWxsZWQgd2l0aCBhIGRlZmF1bHQgIm51bSBjaGFubmVscyIgb2YgMS4KLSAgLy8gVE9ETyhkZWFk
YmVlZik6IFRoaXMgc2hvdWxkIGFjdHVhbGx5IGRlZmF1bHQgdG8gMiBmb3Igc29tZSBjb2RlY3Mu
IFVwZGF0ZQotICAvLyB0aGlzIHRlc3Qgb25jZSB0aGF0J3MgaW1wbGVtZW50ZWQuCi0gIGlzYWNf
cGFyYW1ldGVycy5jb2RlY3NbMF0ubnVtX2NoYW5uZWxzLmVtcGxhY2UoMSk7Ci0gIEVYUEVDVF9F
UShpc2FjX3BhcmFtZXRlcnMsIGF1ZGlvX3NlbmRlci0+R2V0UGFyYW1ldGVycygpKTsKLQotICBh
dXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIo
Ci0gICAgICBDcmVhdGVWaWRlb1RyYWNrKCJ2aWRlbyIpLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7
Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsK
LQotICBSdHBQYXJhbWV0ZXJzIHZwOF9wYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxWcDhQYXJhbWV0
ZXJzKCk7Ci0gIC8vIFNhbml0eSBjaGVjayB0aGF0IGNsb2NrX3JhdGUgYWN0dWFsbHkgaXMgbGVm
dCB1bnNldC4KLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZW5kKHZwOF9wYXJhbWV0ZXJz
KS5vaygpKTsKLSAgLy8gU2hvdWxkIGJlIGZpbGxlZCB3aXRoIGEgZGVmYXVsdCBjbG9jayByYXRl
IG9mIDkwMDAwLgotICB2cDhfcGFyYW1ldGVycy5jb2RlY3NbMF0uY2xvY2tfcmF0ZS5lbXBsYWNl
KDkwMDAwKTsKLSAgRVhQRUNUX0VRKHZwOF9wYXJhbWV0ZXJzLCB2aWRlb19zZW5kZXItPkdldFBh
cmFtZXRlcnMoKSk7Ci0KLSAgUnRwUGFyYW1ldGVycyB2cDlfcGFyYW1ldGVycyA9IE1ha2VNaW5p
bWFsVnA5UGFyYW1ldGVycygpOwotICAvLyBTYW5pdHkgY2hlY2sgdGhhdCBjbG9ja19yYXRlIGFj
dHVhbGx5IGlzIGxlZnQgdW5zZXQuCi0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZCh2
cDlfcGFyYW1ldGVycykub2soKSk7Ci0gIC8vIFNob3VsZCBiZSBmaWxsZWQgd2l0aCBhIGRlZmF1
bHQgY2xvY2sgcmF0ZSBvZiA5MDAwMC4KLSAgdnA5X3BhcmFtZXRlcnMuY29kZWNzWzBdLmNsb2Nr
X3JhdGUuZW1wbGFjZSg5MDAwMCk7Ci0gIEVYUEVDVF9FUSh2cDlfcGFyYW1ldGVycywgdmlkZW9f
c2VuZGVyLT5HZXRQYXJhbWV0ZXJzKCkpOwotfQotCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3Qs
IEdldEtpbmQpIHsKLSAgLy8gQ29uc3RydWN0IG9uZSBzZW5kZXIgZnJvbSB0aGUgImtpbmQiIGVu
dW0gYW5kIGFub3RoZXIgZnJvbSBhIHRyYWNrLgotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQg
PSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jl
c3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIENyZWF0ZVZpZGVv
VHJhY2soInZpZGVvIiksIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5k
ZXIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBhdXRvIHZpZGVvX3NlbmRl
ciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9FUShjcmlja2V0
OjpNRURJQV9UWVBFX0FVRElPLCBhdWRpb19zZW5kZXItPkdldEtpbmQoKSk7Ci0gIEVYUEVDVF9F
UShjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb19zZW5kZXItPkdldEtpbmQoKSk7Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHNlbmRlcmFkYXB0ZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHBzZW5k
ZXJhZGFwdGVyLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjU0MWNiOGY4NWYz
YTY0YWUxYTBmNDU5NGE0Mjc1NWRlNTFjYmQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL29ydGMvb3J0Y3J0cHNlbmRlcmFkYXB0ZXIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxODgg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm9ydGMvb3J0Y3J0cHNlbmRl
cmFkYXB0ZXIuaCIKLQotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNpbmNsdWRlICJtZWRpYS9iYXNl
L21lZGlhY29uc3RhbnRzLmgiCi0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0KLW5hbWVzcGFjZSB7Ci0KLXZvaWQgRmls
bEF1ZGlvU2VuZGVyUGFyYW1ldGVycyh3ZWJydGM6OlJ0cFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMp
IHsKLSAgZm9yICh3ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYgY29kZWMgOiBwYXJhbWV0ZXJz
LT5jb2RlY3MpIHsKLSAgICBpZiAoIWNvZGVjLm51bV9jaGFubmVscykgewotICAgICAgY29kZWMu
bnVtX2NoYW5uZWxzID0gMTsKLSAgICB9Ci0gIH0KLX0KLQotdm9pZCBGaWxsVmlkZW9TZW5kZXJQ
YXJhbWV0ZXJzKHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyogcGFyYW1ldGVycykgewotICBmb3IgKHdl
YnJ0Yzo6UnRwQ29kZWNQYXJhbWV0ZXJzJiBjb2RlYyA6IHBhcmFtZXRlcnMtPmNvZGVjcykgewot
ICAgIGlmICghY29kZWMuY2xvY2tfcmF0ZSkgewotICAgICAgY29kZWMuY2xvY2tfcmF0ZSA9IGNy
aWNrZXQ6OmtWaWRlb0NvZGVjQ2xvY2tyYXRlOwotICAgIH0KLSAgfQotfQotCi19ICAvLyBuYW1l
c3BhY2UKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLUJFR0lOX09XTkVEX1BST1hZX01BUChPcnRj
UnRwU2VuZGVyKQotUFJPWFlfU0lHTkFMSU5HX1RIUkVBRF9ERVNUUlVDVE9SKCkKLVBST1hZX01F
VEhPRDEoUlRDRXJyb3IsIFNldFRyYWNrLCBNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlKikKLVBS
T1hZX0NPTlNUTUVUSE9EMChydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVy
ZmFjZT4sIEdldFRyYWNrKQotUFJPWFlfTUVUSE9EMShSVENFcnJvciwgU2V0VHJhbnNwb3J0LCBS
dHBUcmFuc3BvcnRJbnRlcmZhY2UqKQotUFJPWFlfQ09OU1RNRVRIT0QwKFJ0cFRyYW5zcG9ydElu
dGVyZmFjZSosIEdldFRyYW5zcG9ydCkKLVBST1hZX01FVEhPRDEoUlRDRXJyb3IsIFNlbmQsIGNv
bnN0IFJ0cFBhcmFtZXRlcnMmKQotUFJPWFlfQ09OU1RNRVRIT0QwKFJ0cFBhcmFtZXRlcnMsIEdl
dFBhcmFtZXRlcnMpCi1QUk9YWV9DT05TVE1FVEhPRDAoY3JpY2tldDo6TWVkaWFUeXBlLCBHZXRL
aW5kKQotRU5EX1BST1hZX01BUCgpCi0KLS8vIHN0YXRpYwotc3RkOjp1bmlxdWVfcHRyPE9ydGNS
dHBTZW5kZXJJbnRlcmZhY2U+IE9ydGNSdHBTZW5kZXJBZGFwdGVyOjpDcmVhdGVQcm94eSgKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckFkYXB0ZXI+IHdyYXBwZWRfc2VuZGVyKSB7
Ci0gIFJUQ19EQ0hFQ0sod3JhcHBlZF9zZW5kZXIpOwotICBydGM6OlRocmVhZCogc2lnbmFsaW5n
ID0KLSAgICAgIHdyYXBwZWRfc2VuZGVyLT5ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5zaWdu
YWxpbmdfdGhyZWFkKCk7Ci0gIHJ0Yzo6VGhyZWFkKiB3b3JrZXIgPQotICAgICAgd3JhcHBlZF9z
ZW5kZXItPnJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPndvcmtlcl90aHJlYWQoKTsKLSAgcmV0
dXJuIE9ydGNSdHBTZW5kZXJQcm94eTo6Q3JlYXRlKHNpZ25hbGluZywgd29ya2VyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHdyYXBwZWRfc2VuZGVyKSk7
Ci19Ci0KLU9ydGNSdHBTZW5kZXJBZGFwdGVyOjp+T3J0Y1J0cFNlbmRlckFkYXB0ZXIoKSB7Ci0g
IGludGVybmFsX3NlbmRlcl8gPSBudWxscHRyOwotICBTaWduYWxEZXN0cm95ZWQoKTsKLX0KLQot
UlRDRXJyb3IgT3J0Y1J0cFNlbmRlckFkYXB0ZXI6OlNldFRyYWNrKE1lZGlhU3RyZWFtVHJhY2tJ
bnRlcmZhY2UqIHRyYWNrKSB7Ci0gIGlmICh0cmFjayAmJiBjcmlja2V0OjpNZWRpYVR5cGVGcm9t
U3RyaW5nKHRyYWNrLT5raW5kKCkpICE9IGtpbmRfKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJS
T1IoCi0gICAgICAgIFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICJU
cmFjayBraW5kIChhdWRpby92aWRlbykgZG9lc24ndCBtYXRjaCB0aGUga2luZCBvZiB0aGlzIHNl
bmRlci4iKTsKLSAgfQotICBpZiAoaW50ZXJuYWxfc2VuZGVyXyAmJiAhaW50ZXJuYWxfc2VuZGVy
Xy0+U2V0VHJhY2sodHJhY2spKSB7Ci0gICAgLy8gU2luY2Ugd2UgY2hlY2tlZCB0aGUgdHJhY2sg
dHlwZSBhYm92ZSwgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLi4uCi0gICAgUlRDX05PVFJFQUNI
RUQoKTsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVEVSTkFMX0VS
Uk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gc2V0IHRyYWNrIG9uIFJ0
cFNlbmRlci4iKTsKLSAgfQotICB0cmFja18gPSB0cmFjazsKLSAgcmV0dXJuIFJUQ0Vycm9yOjpP
SygpOwotfQotCi1ydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4g
T3J0Y1J0cFNlbmRlckFkYXB0ZXI6OkdldFRyYWNrKCkKLSAgICBjb25zdCB7Ci0gIHJldHVybiB0
cmFja187Ci19Ci0KLVJUQ0Vycm9yIE9ydGNSdHBTZW5kZXJBZGFwdGVyOjpTZXRUcmFuc3BvcnQo
UnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQpIHsKLSAgTE9HX0FORF9SRVRVUk5fRVJS
T1IoCi0gICAgICBSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICJD
aGFuZ2luZyB0aGUgdHJhbnNwb3J0IG9mIGFuIFJ0cFNlbmRlciBpcyBub3QgeWV0IHN1cHBvcnRl
ZC4iKTsKLX0KLQotUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBPcnRjUnRwU2VuZGVyQWRhcHRlcjo6
R2V0VHJhbnNwb3J0KCkgY29uc3QgewotICByZXR1cm4gdHJhbnNwb3J0XzsKLX0KLQotUlRDRXJy
b3IgT3J0Y1J0cFNlbmRlckFkYXB0ZXI6OlNlbmQoY29uc3QgUnRwUGFyYW1ldGVycyYgcGFyYW1l
dGVycykgewotICBSdHBQYXJhbWV0ZXJzIGZpbGxlZF9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsK
LSAgUlRDRXJyb3IgZXJyOwotICB1aW50MzJfdCBzc3JjID0gMDsKLSAgc3dpdGNoIChraW5kXykg
ewotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzoKLSAgICAgIEZpbGxBdWRpb1Nl
bmRlclBhcmFtZXRlcnMoJmZpbGxlZF9wYXJhbWV0ZXJzKTsKLSAgICAgIGVyciA9IHJ0cF90cmFu
c3BvcnRfY29udHJvbGxlcl8tPlZhbGlkYXRlQW5kQXBwbHlBdWRpb1NlbmRlclBhcmFtZXRlcnMo
Ci0gICAgICAgICAgZmlsbGVkX3BhcmFtZXRlcnMsICZzc3JjKTsKLSAgICAgIGlmICghZXJyLm9r
KCkpIHsKLSAgICAgICAgcmV0dXJuIGVycjsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNh
c2UgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzoKLSAgICAgIEZpbGxWaWRlb1NlbmRlclBhcmFt
ZXRlcnMoJmZpbGxlZF9wYXJhbWV0ZXJzKTsKLSAgICAgIGVyciA9IHJ0cF90cmFuc3BvcnRfY29u
dHJvbGxlcl8tPlZhbGlkYXRlQW5kQXBwbHlWaWRlb1NlbmRlclBhcmFtZXRlcnMoCi0gICAgICAg
ICAgZmlsbGVkX3BhcmFtZXRlcnMsICZzc3JjKTsKLSAgICAgIGlmICghZXJyLm9rKCkpIHsKLSAg
ICAgICAgcmV0dXJuIGVycjsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgY3JpY2tl
dDo6TUVESUFfVFlQRV9EQVRBOgotICAgICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgICAgIHJldHVy
biB3ZWJydGM6OlJUQ0Vycm9yKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUik7
Ci0gIH0KLSAgbGFzdF9hcHBsaWVkX3BhcmFtZXRlcnNfID0gZmlsbGVkX3BhcmFtZXRlcnM7Ci0K
LSAgLy8gTm93IHRoYXQgcGFyYW1ldGVycyB3ZXJlIGFwcGxpZWQsIGNhbiBjYWxsIFNldFNzcmMg
b24gdGhlIGludGVybmFsIHNlbmRlci4KLSAgLy8gVGhpcyBpcyBhbmFsb2dvdXMgdG8gYSBQZWVy
Q29ubmVjdGlvbiBjYWxsaW5nIFNldFNzcmMgYWZ0ZXIKLSAgLy8gU2V0TG9jYWxEZXNjcmlwdGlv
biBpcyBzdWNjZXNzZnVsLgotICAvLwotICAvLyBJZiB0aGVyZSB3ZXJlIG5vIGVuY29kaW5ncywg
dGhpcyBTU1JDIG1heSBiZSAwLCB3aGljaCBpcyB2YWxpZC4KLSAgaWYgKCFpbnRlcm5hbF9zZW5k
ZXJfKSB7Ci0gICAgQ3JlYXRlSW50ZXJuYWxTZW5kZXIoKTsKLSAgfQotICBpbnRlcm5hbF9zZW5k
ZXJfLT5TZXRTc3JjKHNzcmMpOwotCi0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQotUnRw
UGFyYW1ldGVycyBPcnRjUnRwU2VuZGVyQWRhcHRlcjo6R2V0UGFyYW1ldGVycygpIGNvbnN0IHsK
LSAgcmV0dXJuIGxhc3RfYXBwbGllZF9wYXJhbWV0ZXJzXzsKLX0KLQotY3JpY2tldDo6TWVkaWFU
eXBlIE9ydGNSdHBTZW5kZXJBZGFwdGVyOjpHZXRLaW5kKCkgY29uc3QgewotICByZXR1cm4ga2lu
ZF87Ci19Ci0KLU9ydGNSdHBTZW5kZXJBZGFwdGVyOjpPcnRjUnRwU2VuZGVyQWRhcHRlcigKLSAg
ICBjcmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRy
YW5zcG9ydCwKLSAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogcnRwX3RyYW5zcG9y
dF9jb250cm9sbGVyKQotICAgIDoga2luZF8oa2luZCksCi0gICAgICB0cmFuc3BvcnRfKHRyYW5z
cG9ydCksCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfKHJ0cF90cmFuc3BvcnRfY29u
dHJvbGxlcikge30KLQotdm9pZCBPcnRjUnRwU2VuZGVyQWRhcHRlcjo6Q3JlYXRlSW50ZXJuYWxT
ZW5kZXIoKSB7Ci0gIHN3aXRjaCAoa2luZF8pIHsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfQVVESU86IHsKLSAgICAgIGF1dG8qIGF1ZGlvX3NlbmRlciA9IG5ldyBBdWRpb1J0cFNlbmRl
cigKLSAgICAgICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT53b3JrZXJfdGhyZWFkKCks
IC8qaWQ9Ki8iIiwgbnVsbHB0cik7Ci0gICAgICBhdXRvKiB2b2ljZV9jaGFubmVsID0gcnRwX3Ry
YW5zcG9ydF9jb250cm9sbGVyXy0+dm9pY2VfY2hhbm5lbCgpOwotICAgICAgUlRDX0RDSEVDSyh2
b2ljZV9jaGFubmVsKTsKLSAgICAgIGF1ZGlvX3NlbmRlci0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwo
dm9pY2VfY2hhbm5lbC0+bWVkaWFfY2hhbm5lbCgpKTsKLSAgICAgIGludGVybmFsX3NlbmRlcl8g
PSBhdWRpb19zZW5kZXI7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBjcmlja2V0OjpN
RURJQV9UWVBFX1ZJREVPOiB7Ci0gICAgICBhdXRvKiB2aWRlb19zZW5kZXIgPSBuZXcgVmlkZW9S
dHBTZW5kZXIoCi0gICAgICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+d29ya2VyX3Ro
cmVhZCgpLCAvKmlkPSovIiIpOwotICAgICAgYXV0byogdmlkZW9fY2hhbm5lbCA9IHJ0cF90cmFu
c3BvcnRfY29udHJvbGxlcl8tPnZpZGVvX2NoYW5uZWwoKTsKLSAgICAgIFJUQ19EQ0hFQ0sodmlk
ZW9fY2hhbm5lbCk7Ci0gICAgICB2aWRlb19zZW5kZXItPlNldFZpZGVvTWVkaWFDaGFubmVsKHZp
ZGVvX2NoYW5uZWwtPm1lZGlhX2NoYW5uZWwoKSk7Ci0gICAgICBpbnRlcm5hbF9zZW5kZXJfID0g
dmlkZW9fc2VuZGVyOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tldDo6TUVE
SUFfVFlQRV9EQVRBOgotICAgICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgfQotICBpZiAodHJhY2tf
KSB7Ci0gICAgaWYgKCFpbnRlcm5hbF9zZW5kZXJfLT5TZXRUcmFjayh0cmFja18pKSB7Ci0gICAg
ICAvLyBTaW5jZSB3ZSBjaGVja2VkIHRoZSB0cmFjayB0eXBlIHdoZW4gaXQgd2FzIHNldCwgdGhp
cyBzaG91bGQgbmV2ZXIKLSAgICAgIC8vIGhhcHBlbi4uLgotICAgICAgUlRDX05PVFJFQUNIRUQo
KTsKLSAgICB9Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwc2Vu
ZGVyYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
b3J0Yy9vcnRjcnRwc2VuZGVyYWRhcHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiMDc4ZGE5ODVjOWQxOGEwNjg4NjIyMGQyNDlmOGE5MDk0ZmM1YWJiLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHNlbmRlcmFkYXB0ZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBw
cm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgT1JUQ19P
UlRDUlRQU0VOREVSQURBUFRFUl9IXwotI2RlZmluZSBPUlRDX09SVENSVFBTRU5ERVJBREFQVEVS
X0hfCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvb3J0Yy9vcnRjcnRwc2Vu
ZGVyaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCi0jaW5jbHVkZSAiYXBp
L3J0cHBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJvcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJh
ZGFwdGVyLmgiCi0jaW5jbHVkZSAicGMvcnRwc2VuZGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Ns
b3Qvc2lnc2xvdC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gSW1wbGVtZW50YXRpb24g
b2YgT3J0Y1J0cFNlbmRlckludGVyZmFjZSB0aGF0IHdvcmtzIHdpdGggUnRwVHJhbnNwb3J0QWRh
cHRlciwKLS8vIGFuZCB3cmFwcyBhIFZpZGVvUnRwU2VuZGVyL0F1ZGlvUnRwU2VuZGVyIHRoYXQn
cyBub3JtYWxseSB1c2VkIHdpdGggdGhlCi0vLyBQZWVyQ29ubmVjdGlvbi4KLS8vCi0vLyBUT0RP
KGRlYWRiZWVmKTogV2hlbiBCYXNlQ2hhbm5lbCBpcyBzcGxpdCBhcGFydCBpbnRvIHNlcGFyYXRl
Ci0vLyAiUnRwU2VuZGVyIi8iUnRwVHJhbnNjZWl2ZXIiLyJSdHBTZW5kZXIiLyJSdHBSZWNlaXZl
ciIgb2JqZWN0cywgdGhpcyBhZGFwdGVyCi0vLyBvYmplY3QgY2FuIGJlIHJlbW92ZWQuCi1jbGFz
cyBPcnRjUnRwU2VuZGVyQWRhcHRlciA6IHB1YmxpYyBPcnRjUnRwU2VuZGVySW50ZXJmYWNlIHsK
LSBwdWJsaWM6Ci0gIC8vIFdyYXBzIHx3cmFwcGVkX3NlbmRlcnwgaW4gYSBwcm94eSB0aGF0IHdp
bGwgc2FmZWx5IGNhbGwgbWV0aG9kcyBvbiB0aGUKLSAgLy8gY29ycmVjdCB0aHJlYWQuCi0gIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVyZmFjZT4gQ3JlYXRlUHJveHko
Ci0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckFkYXB0ZXI+IHdyYXBwZWRfc2Vu
ZGVyKTsKLQotICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgYnkgUnRwVHJhbnNwb3J0Q29udHJv
bGxlckFkYXB0ZXIuCi0gIE9ydGNSdHBTZW5kZXJBZGFwdGVyKGNyaWNrZXQ6Ok1lZGlhVHlwZSBr
aW5kLAotICAgICAgICAgICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5z
cG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0
ZXIqIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcik7Ci0gIH5PcnRjUnRwU2VuZGVyQWRhcHRlcigp
IG92ZXJyaWRlOwotCi0gIC8vIE9ydGNSdHBTZW5kZXJJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24u
Ci0gIFJUQ0Vycm9yIFNldFRyYWNrKE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2UqIHRyYWNrKSBv
dmVycmlkZTsKLSAgcnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+
IEdldFRyYWNrKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgUlRDRXJyb3IgU2V0VHJhbnNwb3J0KFJ0
cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0KSBvdmVycmlkZTsKLSAgUnRwVHJhbnNwb3J0
SW50ZXJmYWNlKiBHZXRUcmFuc3BvcnQoKSBjb25zdCBvdmVycmlkZTsKLQotICBSVENFcnJvciBT
ZW5kKGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIG92ZXJyaWRlOwotICBSdHBQYXJh
bWV0ZXJzIEdldFBhcmFtZXRlcnMoKSBjb25zdCBvdmVycmlkZTsKLQotICBjcmlja2V0OjpNZWRp
YVR5cGUgR2V0S2luZCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gIC8vIFVzZWQgc28gdGhhdCB0aGUg
UnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIga25vd3Mgd2hlbiBpdCBjYW4KLSAgLy8gZGVh
bGxvY2F0ZSByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciB0aGlzIG9iamVjdC4KLSAgc2lnc2xvdDo6
c2lnbmFsMDw+IFNpZ25hbERlc3Ryb3llZDsKLQotIHByaXZhdGU6Ci0gIHZvaWQgQ3JlYXRlSW50
ZXJuYWxTZW5kZXIoKTsKLQotICBjcmlja2V0OjpNZWRpYVR5cGUga2luZF87Ci0gIFJ0cFRyYW5z
cG9ydEludGVyZmFjZSogdHJhbnNwb3J0XzsKLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0
ZXIqIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl87Ci0gIC8vIFNjb3BlZCByZWZwdHIgZHVlIHRv
IHJlZi1jb3VudGVkIGludGVyZmFjZSwgYnV0IHdlIHNob3VsZCBiZSB0aGUgb25seQotICAvLyBy
ZWZlcmVuY2UgaG9sZGVyLgotICBydGM6OnNjb3BlZF9yZWZwdHI8UnRwU2VuZGVySW50ZXJuYWw+
IGludGVybmFsX3NlbmRlcl87Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbVRyYWNr
SW50ZXJmYWNlPiB0cmFja187Ci0gIFJ0cFBhcmFtZXRlcnMgbGFzdF9hcHBsaWVkX3BhcmFtZXRl
cnNfOwotCi0gIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoT3J0Y1J0cFNlbmRl
ckFkYXB0ZXIpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE9S
VENfT1JUQ1JUUFNFTkRFUkFEQVBURVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3Bv
cnRfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYWQ0M2ZhYjNl
ZGVlNzA0MDViYTU1MjFkOTE1ZGZiNTkzMDliOGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwy
ODYgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQotI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIK
LSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKLSNpbmNsdWRlICJv
cnRjL29ydGNmYWN0b3J5LmgiCi0jaW5jbHVkZSAib3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5oIgot
I2luY2x1ZGUgInAycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9ndW5pdC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVGhpcyB0ZXN0IHVzZXMg
ZmFrZSBwYWNrZXQgdHJhbnNwb3J0cyBhbmQgYSBmYWtlIG1lZGlhIGVuZ2luZSwgaW4gb3JkZXIg
dG8KLS8vIHRlc3QgdGhlIFJ0cFRyYW5zcG9ydCBhdCBvbmx5IGFuIEFQSSBsZXZlbC4gQW55IGVu
ZC10by1lbmQgdGVzdCBzaG91bGQgZ28gaW4KLS8vIG9ydGNmYWN0b3J5X2ludGVncmF0aW9udGVz
dC5jYyBpbnN0ZWFkLgotY2xhc3MgUnRwVHJhbnNwb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKLSBwdWJsaWM6Ci0gIFJ0cFRyYW5zcG9ydFRlc3QoKSB7Ci0gICAgZmFrZV9tZWRpYV9l
bmdpbmVfID0gbmV3IGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZSgpOwotICAgIC8vIE5vdGU6IFRo
aXMgZG9lc24ndCBuZWVkIHRvIHVzZSBmYWtlIG5ldHdvcmsgY2xhc3Nlcywgc2luY2UgaXQgdXNl
cwotICAgIC8vIEZha2VQYWNrZXRUcmFuc3BvcnRzLgotICAgIGF1dG8gcmVzdWx0ID0gT3J0Y0Zh
Y3Rvcnk6OkNyZWF0ZSgKLSAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5l
SW50ZXJmYWNlPihmYWtlX21lZGlhX2VuZ2luZV8pLAotICAgICAgICBDcmVhdGVCdWlsdGluQXVk
aW9FbmNvZGVyRmFjdG9yeSgpLCBDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpKTsK
LSAgICBvcnRjX2ZhY3RvcnlfID0gcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICB9Ci0KLSBwcm90ZWN0
ZWQ6Ci0gIC8vIE93bmVkIGJ5IHxvcnRjX2ZhY3RvcnlffC4KLSAgY3JpY2tldDo6RmFrZU1lZGlh
RW5naW5lKiBmYWtlX21lZGlhX2VuZ2luZV87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9y
eUludGVyZmFjZT4gb3J0Y19mYWN0b3J5XzsKLX07Ci0KLS8vIFRlc3QgR2V0UnRwUGFja2V0VHJh
bnNwb3J0IGFuZCBHZXRSdGNwUGFja2V0VHJhbnNwb3J0LCB3aXRoIGFuZCB3aXRob3V0IFJUQ1AK
LS8vIG11eGluZy4KLVRFU1RfRihSdHBUcmFuc3BvcnRUZXN0LCBHZXRQYWNrZXRUcmFuc3BvcnRz
KSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBydHAoInJ0cCIpOwotICBydGM6OkZha2VQ
YWNrZXRUcmFuc3BvcnQgcnRjcCgicnRjcCIpOwotICAvLyBXaXRoIG11eGVkIFJUQ1AuCi0gIFJ0
cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9
IHRydWU7Ci0gIGF1dG8gcmVzdWx0ID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRy
YW5zcG9ydChwYXJhbWV0ZXJzLCAmcnRwLCBudWxscHRyLCBudWxscHRyKTsKLSAgQVNTRVJUX1RS
VUUocmVzdWx0Lm9rKCkpOwotICBFWFBFQ1RfRVEoJnJ0cCwgcmVzdWx0LnZhbHVlKCktPkdldFJ0
cFBhY2tldFRyYW5zcG9ydCgpKTsKLSAgRVhQRUNUX0VRKG51bGxwdHIsIHJlc3VsdC52YWx1ZSgp
LT5HZXRSdGNwUGFja2V0VHJhbnNwb3J0KCkpOwotICByZXN1bHQuTW92ZVZhbHVlKCkucmVzZXQo
KTsKLSAgLy8gV2l0aCBub24tbXV4ZWQgUlRDUC4KLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IGZh
bHNlOwotICByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQocGFyYW1l
dGVycywgJnJ0cCwgJnJ0Y3AsIG51bGxwdHIpOwotICBBU1NFUlRfVFJVRShyZXN1bHQub2soKSk7
Ci0gIEVYUEVDVF9FUSgmcnRwLCByZXN1bHQudmFsdWUoKS0+R2V0UnRwUGFja2V0VHJhbnNwb3J0
KCkpOwotICBFWFBFQ1RfRVEoJnJ0Y3AsIHJlc3VsdC52YWx1ZSgpLT5HZXRSdGNwUGFja2V0VHJh
bnNwb3J0KCkpOwotfQotCi0vLyBJZiBhbiBSdHBUcmFuc3BvcnQgc3RhcnRzIG91dCB1bi1tdXhl
ZCBhbmQgdGhlbiBzdGFydHMgbXV4aW5nLCB0aGUgUlRDUAotLy8gcGFja2V0IHRyYW5zcG9ydCBz
aG91bGQgYmUgZm9yZ290dGVuIGFuZCBHZXRSdGNwUGFja2V0VHJhbnNwb3J0IHNob3VsZAotLy8g
cmV0dXJuIG51bGwuCi1URVNUX0YoUnRwVHJhbnNwb3J0VGVzdCwgRW5hYmxpbmdSdGNwTXV4aW5n
VW5zZXRzUnRjcFRyYW5zcG9ydCkgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRwKCJy
dHAiKTsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0Y3AoInJ0Y3AiKTsKLQotICAvLyBD
cmVhdGUgbm9uLW11eGVkLgotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0g
IHBhcmFtZXRlcnMucnRjcC5tdXggPSBmYWxzZTsKLSAgYXV0byByZXN1bHQgPQotICAgICAgb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KHBhcmFtZXRlcnMsICZydHAsICZydGNwLCBu
dWxscHRyKTsKLSAgQVNTRVJUX1RSVUUocmVzdWx0Lm9rKCkpOwotICBhdXRvIHJ0cF90cmFuc3Bv
cnQgPSByZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gRW5hYmxlIG11eGluZy4KLSAgcGFyYW1l
dGVycy5ydGNwLm11eCA9IHRydWU7Ci0gIEVYUEVDVF9UUlVFKHJ0cF90cmFuc3BvcnQtPlNldFBh
cmFtZXRlcnMocGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9FUShudWxscHRyLCBydHBfdHJh
bnNwb3J0LT5HZXRSdGNwUGFja2V0VHJhbnNwb3J0KCkpOwotfQotCi1URVNUX0YoUnRwVHJhbnNw
b3J0VGVzdCwgR2V0QW5kU2V0UnRjcFBhcmFtZXRlcnMpIHsKLSAgcnRjOjpGYWtlUGFja2V0VHJh
bnNwb3J0IHJ0cCgicnRwIik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBydGNwKCJydGNw
Iik7Ci0gIC8vIFN0YXJ0IHdpdGggbm9uLW11eGVkIFJUQ1AuCi0gIFJ0cFRyYW5zcG9ydFBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IGZhbHNlOwotICBwYXJh
bWV0ZXJzLnJ0Y3AuY25hbWUgPSAidGVTVCI7Ci0gIHBhcmFtZXRlcnMucnRjcC5yZWR1Y2VkX3Np
emUgPSBmYWxzZTsKLSAgYXV0byByZXN1bHQgPQotICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwVHJhbnNwb3J0KHBhcmFtZXRlcnMsICZydHAsICZydGNwLCBudWxscHRyKTsKLSAgQVNTRVJU
X1RSVUUocmVzdWx0Lm9rKCkpOwotICBhdXRvIHRyYW5zcG9ydCA9IHJlc3VsdC5Nb3ZlVmFsdWUo
KTsKLSAgRVhQRUNUX0VRKHBhcmFtZXRlcnMsIHRyYW5zcG9ydC0+R2V0UGFyYW1ldGVycygpKTsK
LQotICAvLyBDaGFuZ2luZyB0aGUgQ05BTUUgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkLgotICBw
YXJhbWV0ZXJzLnJ0Y3AuY25hbWUgPSAiZGlmZmVyZW50IjsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9y
VHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgdHJhbnNwb3J0LT5TZXRQ
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpLnR5cGUoKSk7Ci0gIHBhcmFtZXRlcnMucnRjcC5jbmFtZSA9
ICJ0ZVNUIjsKLQotICAvLyBFbmFibGUgUlRDUCBtdXhpbmcgYW5kIHJlZHVjZWQtc2l6ZSBSVENQ
LgotICBwYXJhbWV0ZXJzLnJ0Y3AubXV4ID0gdHJ1ZTsKLSAgcGFyYW1ldGVycy5ydGNwLnJlZHVj
ZWRfc2l6ZSA9IHRydWU7Ci0gIEVYUEVDVF9UUlVFKHRyYW5zcG9ydC0+U2V0UGFyYW1ldGVycyhw
YXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKHBhcmFtZXRlcnMsIHRyYW5zcG9ydC0+R2V0
UGFyYW1ldGVycygpKTsKLQotICAvLyBFbXB0eSBDTkFNRSBzaG91bGQgcmVzdWx0IGluIHRoZSBl
eGlzdGluZyBDTkFNRSBiZWluZyB1c2VkLgotICBwYXJhbWV0ZXJzLnJ0Y3AuY25hbWUuY2xlYXIo
KTsKLSAgRVhQRUNUX1RSVUUodHJhbnNwb3J0LT5TZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLm9r
KCkpOwotICBFWFBFQ1RfRVEoInRlU1QiLCB0cmFuc3BvcnQtPkdldFBhcmFtZXRlcnMoKS5ydGNw
LmNuYW1lKTsKLQotICAvLyBEaXNhYmxpbmcgUlRDUCBtdXhpbmcgYWZ0ZXIgZW5hYmxpbmcgc2hv
dWxkbid0IGJlIGFsbG93ZWQsIHNpbmNlIGVuYWJsaW5nCi0gIC8vIG11eGluZyBzaG91bGQgaGF2
ZSBtYWRlIHRoZSBSVFAgdHJhbnNwb3J0IGZvcmdldCBhYm91dCB0aGUgUlRDUCBwYWNrZXQKLSAg
Ly8gdHJhbnNwb3J0IGluaXRpYWxseSBwYXNzZWQgaW50byBpdC4KLSAgcGFyYW1ldGVycy5ydGNw
Lm11eCA9IGZhbHNlOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1NUQVRFLAot
ICAgICAgICAgICAgdHJhbnNwb3J0LT5TZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLnR5cGUoKSk7
Ci19Ci0KLS8vIFdoZW4gU2VuZCBvciBSZWNlaXZlIGlzIGNhbGxlZCBvbiBhIHNlbmRlciBvciBy
ZWNlaXZlciwgdGhlIFJUQ1AgcGFyYW1ldGVycwotLy8gZnJvbSB0aGUgUnRwVHJhbnNwb3J0IHVu
ZGVybmVhdGggdGhlIHNlbmRlciBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgY3JlYXRlZAotLy8g
bWVkaWEgc3RyZWFtLiBUaGUgb25seSByZWxldmFudCBwYXJhbWV0ZXJzIChjdXJyZW50bHkpIGFy
ZSB8Y25hbWV8IGFuZAotLy8gfHJlZHVjZWRfc2l6ZXwuCi1URVNUX0YoUnRwVHJhbnNwb3J0VGVz
dCwgU2VuZEFuZFJlY2VpdmVBcHBseVJ0Y3BQYXJhbWV0ZXJzVG9NZWRpYUVuZ2luZSkgewotICAv
LyBGaXJzdCwgY3JlYXRlIHZpZGVvIHRyYW5zcG9ydCB3aXRoIHJlZHVjZWQtc2l6ZSBSVENQLgot
ICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRfdHJhbnNwb3J0MSgiMSIpOwot
ICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRlcnMucnRjcC5t
dXggPSB0cnVlOwotICBwYXJhbWV0ZXJzLnJ0Y3AucmVkdWNlZF9zaXplID0gdHJ1ZTsKLSAgcGFy
YW1ldGVycy5ydGNwLmNuYW1lID0gImZvbyI7Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydF9yZXN1bHQg
PSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBwYXJhbWV0ZXJzLCAm
ZmFrZV9wYWNrZXRfdHJhbnNwb3J0MSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIGF1dG8gdmlkZW9f
dHJhbnNwb3J0ID0gcnRwX3RyYW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gQ3Jl
YXRlIHZpZGVvIHNlbmRlciBhbmQgY2FsbCBTZW5kLCBleHBlY3RpbmcgcGFyYW1ldGVycyB0byBi
ZSBhcHBsaWVkLgotICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBTZW5kZXIoY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvX3RyYW5zcG9ydC5nZXQoKSk7
Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQ
RUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpKS5v
aygpKTsKLSAgY3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5u
ZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFT
U0VSVF9ORShudWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtl
X3ZpZGVvX2NoYW5uZWwtPnNlbmRfcnRjcF9wYXJhbWV0ZXJzKCkucmVkdWNlZF9zaXplKTsKLSAg
QVNTRVJUX0VRKDF1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpLnNpemUoKSk7
Ci0gIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYgdmlkZW9fc2VuZF9zdHJlYW0gPQotICAg
ICAgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVswXTsKLSAgRVhQRUNUX0VRKCJm
b28iLCB2aWRlb19zZW5kX3N0cmVhbS5jbmFtZSk7Ci0KLSAgLy8gQ3JlYXRlIHZpZGVvIHJlY2Vp
dmVyIGFuZCBjYWxsIFJlY2VpdmUsIGV4cGVjdGluZyBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQK
LSAgLy8gKG1pbnVzIHxjbmFtZXwsIHNpbmNlIHRoYXQncyB0aGUgc2VudCBjbmFtZSwgbm90IHJl
Y2VpdmVkKS4KLSAgYXV0byByZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3RyYW5z
cG9ydC5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXIgPSByZWNlaXZlcl9yZXN1bHQuTW92
ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgdmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUo
TWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzV2l0aFNzcmMoMHhkZWFkYmVlZikpCi0gICAgICAgICAg
Lm9rKCkpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3ZfcnRjcF9wYXJh
bWV0ZXJzKCkucmVkdWNlZF9zaXplKTsKLQotICAvLyBDcmVhdGUgYXVkaW8gdHJhbnNwb3J0IHdp
dGggbm9uLXJlZHVjZWQgc2l6ZSBSVENQLgotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFr
ZV9wYWNrZXRfdHJhbnNwb3J0MigiMiIpOwotICBwYXJhbWV0ZXJzLnJ0Y3AucmVkdWNlZF9zaXpl
ID0gZmFsc2U7Ci0gIHBhcmFtZXRlcnMucnRjcC5jbmFtZSA9ICJiYXIiOwotICBydHBfdHJhbnNw
b3J0X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIHBh
cmFtZXRlcnMsICZmYWtlX3BhY2tldF90cmFuc3BvcnQyLCBudWxscHRyLCBudWxscHRyKTsKLSAg
YXV0byBhdWRpb190cmFuc3BvcnQgPSBydHBfdHJhbnNwb3J0X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsK
LQotICAvLyBDcmVhdGUgYXVkaW8gc2VuZGVyIGFuZCBjYWxsIFNlbmQsIGV4cGVjdGluZyBwYXJh
bWV0ZXJzIHRvIGJlIGFwcGxpZWQuCi0gIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5D
cmVhdGVSdHBTZW5kZXIoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb190cmFuc3BvcnQuZ2V0KCkp
OwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IHNlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVY
UEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbElzYWNQYXJhbWV0ZXJzKCkp
Lm9rKCkpOwotCi0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9j
aGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwot
ICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX0ZBTFNF
KGZha2Vfdm9pY2VfY2hhbm5lbC0+c2VuZF9ydGNwX3BhcmFtZXRlcnMoKS5yZWR1Y2VkX3NpemUp
OwotICBBU1NFUlRfRVEoMXUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+c2VuZF9zdHJlYW1zKCkuc2l6
ZSgpKTsKLSAgY29uc3QgY3JpY2tldDo6U3RyZWFtUGFyYW1zJiBhdWRpb19zZW5kX3N0cmVhbSA9
Ci0gICAgICBmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpWzBdOwotICBFWFBFQ1Rf
RVEoImJhciIsIGF1ZGlvX3NlbmRfc3RyZWFtLmNuYW1lKTsKLQotICAvLyBDcmVhdGUgYXVkaW8g
cmVjZWl2ZXIgYW5kIGNhbGwgUmVjZWl2ZSwgZXhwZWN0aW5nIHBhcmFtZXRlcnMgdG8gYmUgYXBw
bGllZAotICAvLyAobWludXMgfGNuYW1lfCwgc2luY2UgdGhhdCdzIHRoZSBzZW50IGNuYW1lLCBu
b3QgcmVjZWl2ZWQpLgotICByZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBSZWNlaXZlcihjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb190cmFuc3BvcnQuZ2V0KCkp
OwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyID0gcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwot
ICBFWFBFQ1RfVFJVRSgKLSAgICAgIGF1ZGlvX3JlY2VpdmVyLT5SZWNlaXZlKE1ha2VNaW5pbWFs
T3B1c1BhcmFtZXRlcnNXaXRoU3NyYygweGJhYWRmMDBkKSkKLSAgICAgICAgICAub2soKSk7Ci0g
IEVYUEVDVF9GQUxTRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3ZfcnRjcF9wYXJhbWV0ZXJzKCku
cmVkdWNlZF9zaXplKTsKLX0KLQotLy8gV2hlbiBTZXRQYXJhbWV0ZXJzIGlzIGNhbGxlZCwgdGhl
IG1vZGlmaWVkIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGFwcGxpZWQKLS8vIHRvIHRoZSBtZWRpYSBl
bmdpbmUuCi0vLyBUT0RPKGRlYWRiZWVmKTogT25jZSB0aGUgaW1wbGVtZW50YXRpb24gc3VwcG9y
dHMgY2hhbmdpbmcgdGhlIENOQU1FLAotLy8gdGVzdCB0aGF0IGhlcmUuCi1URVNUX0YoUnRwVHJh
bnNwb3J0VGVzdCwgU2V0UnRjcFBhcmFtZXRlcnNBcHBsaWVzUGFyYW1ldGVyc1RvTWVkaWFFbmdp
bmUpIHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IGZha2VfcGFja2V0X3RyYW5zcG9ydCgi
ZmFrZSIpOwotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRl
cnMucnRjcC5tdXggPSB0cnVlOwotICBwYXJhbWV0ZXJzLnJ0Y3AucmVkdWNlZF9zaXplID0gZmFs
c2U7Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBUcmFuc3BvcnQoCi0gICAgICBwYXJhbWV0ZXJzLCAmZmFrZV9wYWNrZXRfdHJhbnNwb3J0LCBu
dWxscHRyLCBudWxscHRyKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0ID0gcnRwX3RyYW5zcG9ydF9y
ZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gQ3JlYXRlIHZpZGVvIHNlbmRlciBhbmQgY2FsbCBT
ZW5kLCBhcHBseWluZyBhbiBpbml0aWFsIHNldCBvZiBwYXJhbWV0ZXJzLgotICBhdXRvIHNlbmRl
cl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoY3JpY2tldDo6TUVESUFf
VFlQRV9WSURFTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBhdXRvIHNlbmRlciA9IHNlbmRlcl9y
ZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKHNlbmRlci0+U2VuZChNYWtlTWluaW1h
bFZwOFBhcmFtZXRlcnMoKSkub2soKSk7Ci0KLSAgLy8gTW9kaWZ5IHBhcmFtZXRlcnMgYW5kIGV4
cGVjdCB0aGVtIHRvIGJlIGNoYW5nZWQgYXQgdGhlIG1lZGlhIGVuZ2luZSBsZXZlbC4KLSAgcGFy
YW1ldGVycy5ydGNwLnJlZHVjZWRfc2l6ZSA9IHRydWU7Ci0gIEVYUEVDVF9UUlVFKHJ0cF90cmFu
c3BvcnQtPlNldFBhcmFtZXRlcnMocGFyYW1ldGVycykub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFr
ZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRp
YV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtl
X3ZpZGVvX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRf
cnRjcF9wYXJhbWV0ZXJzKCkucmVkdWNlZF9zaXplKTsKLX0KLQotLy8gU2V0UGFyYW1ldGVycyBz
aG91bGQgc2V0IGtlZXBhbGl2ZSBmb3IgYWxsIFJUUCB0cmFuc3BvcnRzLgotLy8gSXQgaXMgaW1w
b3NzaWJsZSB0byBtb2RpZnkga2VlcGFsaXZlIHBhcmFtZXRlcnMgaWYgYW55IHN0cmVhbXMgYXJl
IGNyZWF0ZWQuCi0vLyBOb3RlOiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBmb3Ig
Y3VycmVudCB3YXkgb2YgY29uZmlndXJpbmcgdGhlCi0vLyBrZWVwLWFsaXZlLiBJdCBtYXkgY2hh
bmdlIGluIHRoZSBmdXR1cmUuCi1URVNUX0YoUnRwVHJhbnNwb3J0VGVzdCwgQ2FudENoYW5nZUtl
ZXBBbGl2ZUFmdGVyQ3JlYXRlZFNlbmRTdHJlYW1zKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5z
cG9ydCBmYWtlX3BhY2tldF90cmFuc3BvcnQoImZha2UiKTsKLSAgUnRwVHJhbnNwb3J0UGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwotICBwYXJhbWV0ZXJzLmtlZXBhbGl2ZS50aW1lb3V0X2ludGVydmFs
X21zID0gMTAwOwotICBhdXRvIHJ0cF90cmFuc3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+
Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgcGFyYW1ldGVycywgJmZha2VfcGFja2V0X3RyYW5z
cG9ydCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIEFTU0VSVF9UUlVFKHJ0cF90cmFuc3BvcnRfcmVz
dWx0Lm9rKCkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPiBydHBf
dHJhbnNwb3J0ID0KLSAgICAgIHJ0cF90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0g
IC8vIFVwZGF0aW5nIGtlZXBhbGl2ZSBwYXJhbWV0ZXJzIGlzIG9rLCBzaW5jZSBubyBydHAgc2Vu
ZGVyIGNyZWF0ZWQuCi0gIHBhcmFtZXRlcnMua2VlcGFsaXZlLnRpbWVvdXRfaW50ZXJ2YWxfbXMg
PSAyMDA7Ci0gIEVYUEVDVF9UUlVFKHJ0cF90cmFuc3BvcnQtPlNldFBhcmFtZXRlcnMocGFyYW1l
dGVycykub2soKSk7Ci0KLSAgLy8gQ3JlYXRlIHZpZGVvIHNlbmRlci4gTm90ZTogfHNlbmRlcl9y
ZXN1bHR8IHNjb3BlIG11c3QgZXh0ZW5kIHBhc3QgdGhlCi0gIC8vIFNldFBhcmFtZXRlcnMoKSBj
YWxsIGJlbG93LgotICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBTZW5kZXIoY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnQuZ2V0KCkpOwot
ICBFWFBFQ1RfVFJVRShzZW5kZXJfcmVzdWx0Lm9rKCkpOwotCi0gIC8vIE1vZGlmeSBwYXJhbWV0
ZXJzIHNlY29uZCB0aW1lIGFmdGVyIHZpZGVvIHNlbmQgc3RyZWFtIGNyZWF0ZWQuCi0gIHBhcmFt
ZXRlcnMua2VlcGFsaXZlLnRpbWVvdXRfaW50ZXJ2YWxfbXMgPSAxMDsKLSAgRVhQRUNUX0VRKFJU
Q0Vycm9yVHlwZTo6SU5WQUxJRF9NT0RJRklDQVRJT04sCi0gICAgICAgICAgICBydHBfdHJhbnNw
b3J0LT5TZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLnR5cGUoKSk7Ci19Ci0KLS8vIE5vdGU6IFRo
aXMgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGZvciBjdXJyZW50IHdheSBvZiBjb25maWd1
cmluZyB0aGUKLS8vIGtlZXAtYWxpdmUuIEl0IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KLVRF
U1RfRihSdHBUcmFuc3BvcnRUZXN0LCBLZWVwQWxpdmVNdXN0QmVTYW1lQWNyb3NzVHJhbnNwb3J0
Q29udHJvbGxlcikgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRfdHJh
bnNwb3J0KCJmYWtlIik7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAg
cGFyYW1ldGVycy5rZWVwYWxpdmUudGltZW91dF9pbnRlcnZhbF9tcyA9IDEwMDsKLQotICAvLyBN
YW51YWxseSBjcmVhdGUgYSBjb250cm9sbGVyLCB0aGF0IGNhbiBiZSBzaGFyZWQgYnkgbXVsdGlw
bGUgdHJhbnNwb3J0cy4KLSAgYXV0byBjb250cm9sbGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8t
PkNyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIoKTsKLSAgQVNTRVJUX1RSVUUoY29udHJvbGxl
cl9yZXN1bHQub2soKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9sbGVy
SW50ZXJmYWNlPiBjb250cm9sbGVyID0KLSAgICAgIGNvbnRyb2xsZXJfcmVzdWx0Lk1vdmVWYWx1
ZSgpOwotCi0gIC8vIENyZWF0ZSBhIGZpcnN0IHRyYW5zcG9ydC4KLSAgYXV0byBmaXJzdF90cmFu
c3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAg
cGFyYW1ldGVycywgJmZha2VfcGFja2V0X3RyYW5zcG9ydCwgbnVsbHB0ciwgY29udHJvbGxlci5n
ZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKGZpcnN0X3RyYW5zcG9ydF9yZXN1bHQub2soKSk7Ci0KLSAg
Ly8gVXBkYXRlIHRoZSBwYXJhbWV0ZXJzLCBhbmQgY3JlYXRlIGFub3RoZXIgdHJhbnNwb3J0IGZv
ciB0aGUgc2FtZQotICAvLyBjb250cm9sbGVyLgotICBwYXJhbWV0ZXJzLmtlZXBhbGl2ZS50aW1l
b3V0X2ludGVydmFsX21zID0gMTA7Ci0gIGF1dG8gc2Vjb25kc190cmFuc3BvcnRfcmVzdWx0ID0g
b3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgcGFyYW1ldGVycywgJmZh
a2VfcGFja2V0X3RyYW5zcG9ydCwgbnVsbHB0ciwgY29udHJvbGxlci5nZXQoKSk7Ci0gIEVYUEVD
VF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLAotICAgICAgICAgICAgc2Vj
b25kc190cmFuc3BvcnRfcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLX0KLQotfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGMyZWYwOWU2NmVkZGI5YWM3ODRjMzcxNjExZGU3
MjNmZWE3YWUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNw
b3J0YWRhcHRlci5jYworKysgL2Rldi9udWxsCkBAIC0xLDIzMCArMCwwIEBACi0vKgotICogIENv
cHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KLSAqLwotCi0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmgiCi0KLSNpbmNs
dWRlIDxhbGdvcml0aG0+ICAvLyBGb3Igc3RkOjpmaW5kLgotI2luY2x1ZGUgPHNldD4KLSNpbmNs
dWRlIDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6bW92ZS4KLQotI2luY2x1ZGUgImFic2wvbWVtb3J5
L21lbW9yeS5oIgotI2luY2x1ZGUgImFwaS9wcm94eS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Z2dpbmcuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLUJFR0lOX09XTkVEX1BST1hZX01BUChS
dHBUcmFuc3BvcnQpCi1QUk9YWV9TSUdOQUxJTkdfVEhSRUFEX0RFU1RSVUNUT1IoKQotUFJPWFlf
Q09OU1RNRVRIT0QwKFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSosIEdldFJ0cFBhY2tldFRyYW5z
cG9ydCkKLVBST1hZX0NPTlNUTUVUSE9EMChQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqLCBHZXRS
dGNwUGFja2V0VHJhbnNwb3J0KQotUFJPWFlfTUVUSE9EMShSVENFcnJvciwgU2V0UGFyYW1ldGVy
cywgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYpCi1QUk9YWV9DT05TVE1FVEhPRDAoUnRw
VHJhbnNwb3J0UGFyYW1ldGVycywgR2V0UGFyYW1ldGVycykKLXByb3RlY3RlZDoKLVJ0cFRyYW5z
cG9ydEFkYXB0ZXIqIEdldEludGVybmFsKCkgb3ZlcnJpZGUgewotICByZXR1cm4gaW50ZXJuYWwo
KTsKLX0KLUVORF9QUk9YWV9NQVAoKQotCi1CRUdJTl9PV05FRF9QUk9YWV9NQVAoU3J0cFRyYW5z
cG9ydCkKLVBST1hZX1NJR05BTElOR19USFJFQURfREVTVFJVQ1RPUigpCi1QUk9YWV9DT05TVE1F
VEhPRDAoUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiwgR2V0UnRwUGFja2V0VHJhbnNwb3J0KQot
UFJPWFlfQ09OU1RNRVRIT0QwKFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSosIEdldFJ0Y3BQYWNr
ZXRUcmFuc3BvcnQpCi1QUk9YWV9NRVRIT0QxKFJUQ0Vycm9yLCBTZXRQYXJhbWV0ZXJzLCBjb25z
dCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJikKLVBST1hZX0NPTlNUTUVUSE9EMChSdHBUcmFuc3Bv
cnRQYXJhbWV0ZXJzLCBHZXRQYXJhbWV0ZXJzKQotUFJPWFlfTUVUSE9EMShSVENFcnJvciwgU2V0
U3J0cFNlbmRLZXksIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1BhcmFtcyYpCi1QUk9YWV9NRVRIT0Qx
KFJUQ0Vycm9yLCBTZXRTcnRwUmVjZWl2ZUtleSwgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1z
JikKLXByb3RlY3RlZDoKLVJ0cFRyYW5zcG9ydEFkYXB0ZXIqIEdldEludGVybmFsKCkgb3ZlcnJp
ZGUgewotICByZXR1cm4gaW50ZXJuYWwoKTsKLX0KLUVORF9QUk9YWV9NQVAoKQotCi0vLyBzdGF0
aWMKLVJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVyZmFjZT4+Ci1S
dHBUcmFuc3BvcnRBZGFwdGVyOjpDcmVhdGVQcm94aWVkKAotICAgIGNvbnN0IFJ0cFRyYW5zcG9y
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBy
dHAsCi0gICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydGNwLAotICAgIFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJBZGFwdGVyKiBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgaWYgKCFy
dHApIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFS
QU1FVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IHByb3ZpZGUgYW4gUlRQIHBh
Y2tldCB0cmFuc3BvcnQuIik7Ci0gIH0KLSAgaWYgKCFwYXJhbWV0ZXJzLnJ0Y3AubXV4ICYmICFy
dGNwKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoCi0gICAgICAgIFJUQ0Vycm9yVHlwZTo6
SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICJNdXN0IHByb3ZpZGUgYW4gUlRDUCBwYWNrZXQg
dHJhbnNwb3J0IHdoZW4gUlRDUCBtdXhpbmcgaXMgbm90IHVzZWQuIik7Ci0gIH0KLSAgaWYgKHBh
cmFtZXRlcnMucnRjcC5tdXggJiYgcnRjcCkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJU
Q0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IkNyZWF0aW5nIGFuIFJ0cFRyYW5zcG9ydCB3aXRoIFJUQ1AgbXV4aW5nIGVuYWJsZWQsICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAid2l0aCBhIHNlcGFyYXRlIFJUQ1AgcGFja2V0IHRyYW5z
cG9ydD8iKTsKLSAgfQotICBpZiAoIXJ0cF90cmFuc3BvcnRfY29udHJvbGxlcikgewotICAgIC8v
IFNpbmNlIE9ydGNGYWN0b3J5OjpDcmVhdGVSdHBUcmFuc3BvcnQgY3JlYXRlcyBhbiBSdHBUcmFu
c3BvcnRDb250cm9sbGVyCi0gICAgLy8gYXV0b21hdGljYWxseSB3aGVuIG9uZSBpc24ndCBwYXNz
ZWQgaW4sIHRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuCi0gICAgUlRDX05PVFJFQUNIRUQo
KTsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1F
VEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IHByb3ZpZGUgYW4gUlRQIHRyYW5z
cG9ydCBjb250cm9sbGVyLiIpOwotICB9Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRB
ZGFwdGVyPiB0cmFuc3BvcnRfYWRhcHRlcigKLSAgICAgIG5ldyBSdHBUcmFuc3BvcnRBZGFwdGVy
KHBhcmFtZXRlcnMucnRjcCwgcnRwLCBydGNwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmFsc2UgLyppc19zcnRwX3RyYW5zcG9ydCovKSk7Ci0gIFJUQ0Vycm9yIHBhcmFtc19yZXN1
bHQgPSB0cmFuc3BvcnRfYWRhcHRlci0+U2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKLSAgaWYg
KCFwYXJhbXNfcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gc3RkOjptb3ZlKHBhcmFtc19yZXN1
bHQpOwotICB9Ci0KLSAgcmV0dXJuIFJ0cFRyYW5zcG9ydFByb3h5V2l0aEludGVybmFsPFJ0cFRy
YW5zcG9ydEFkYXB0ZXI+OjpDcmVhdGUoCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIt
PnNpZ25hbGluZ190aHJlYWQoKSwKLSAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlci0+d29y
a2VyX3RocmVhZCgpLCBzdGQ6Om1vdmUodHJhbnNwb3J0X2FkYXB0ZXIpKTsKLX0KLQotUlRDRXJy
b3JPcjxzdGQ6OnVuaXF1ZV9wdHI8U3J0cFRyYW5zcG9ydEludGVyZmFjZT4+Ci1SdHBUcmFuc3Bv
cnRBZGFwdGVyOjpDcmVhdGVTcnRwUHJveGllZCgKLSAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAot
ICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICBSdHBUcmFuc3BvcnRDb250
cm9sbGVyQWRhcHRlciogcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyKSB7Ci0gIGlmICghcnRwKSB7
Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRF
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiTXVzdCBwcm92aWRlIGFuIFJUUCBwYWNrZXQg
dHJhbnNwb3J0LiIpOwotICB9Ci0gIGlmICghcGFyYW1ldGVycy5ydGNwLm11eCAmJiAhcnRjcCkg
ewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKAotICAgICAgICBSVENFcnJvclR5cGU6OklOVkFM
SURfUEFSQU1FVEVSLAotICAgICAgICAiTXVzdCBwcm92aWRlIGFuIFJUQ1AgcGFja2V0IHRyYW5z
cG9ydCB3aGVuIFJUQ1AgbXV4aW5nIGlzIG5vdCB1c2VkLiIpOwotICB9Ci0gIGlmIChwYXJhbWV0
ZXJzLnJ0Y3AubXV4ICYmIHJ0Y3ApIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJv
clR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVh
dGluZyBhbiBSdHBUcmFuc3BvcnQgd2l0aCBSVENQIG11eGluZyBlbmFibGVkLCAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIndpdGggYSBzZXBhcmF0ZSBSVENQIHBhY2tldCB0cmFuc3BvcnQ/
Iik7Ci0gIH0KLSAgaWYgKCFydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgICAvLyBTaW5j
ZSBPcnRjRmFjdG9yeTo6Q3JlYXRlUnRwVHJhbnNwb3J0IGNyZWF0ZXMgYW4gUnRwVHJhbnNwb3J0
Q29udHJvbGxlcgotICAgIC8vIGF1dG9tYXRpY2FsbHkgd2hlbiBvbmUgaXNuJ3QgcGFzc2VkIGlu
LCB0aGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLgotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0g
ICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAiTXVzdCBwcm92aWRlIGFuIFJUUCB0cmFuc3BvcnQg
Y29udHJvbGxlci4iKTsKLSAgfQotCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRBZGFw
dGVyPiB0cmFuc3BvcnRfYWRhcHRlcjsKLSAgdHJhbnNwb3J0X2FkYXB0ZXIucmVzZXQobmV3IFJ0
cFRyYW5zcG9ydEFkYXB0ZXIocGFyYW1ldGVycy5ydGNwLCBydHAsIHJ0Y3AsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnRfY29u
dHJvbGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJ1ZSAvKmlzX3NydHBfdHJhbnNwb3J0Ki8pKTsKLSAgUlRDRXJyb3IgcGFyYW1zX3Jlc3Vs
dCA9IHRyYW5zcG9ydF9hZGFwdGVyLT5TZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotICBpZiAo
IXBhcmFtc19yZXN1bHQub2soKSkgewotICAgIHJldHVybiBzdGQ6Om1vdmUocGFyYW1zX3Jlc3Vs
dCk7Ci0gIH0KLQotICByZXR1cm4gU3J0cFRyYW5zcG9ydFByb3h5V2l0aEludGVybmFsPFJ0cFRy
YW5zcG9ydEFkYXB0ZXI+OjpDcmVhdGUoCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIt
PnNpZ25hbGluZ190aHJlYWQoKSwKLSAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlci0+d29y
a2VyX3RocmVhZCgpLCBzdGQ6Om1vdmUodHJhbnNwb3J0X2FkYXB0ZXIpKTsKLX0KLQotdm9pZCBS
dHBUcmFuc3BvcnRBZGFwdGVyOjpUYWtlT3duZXJzaGlwT2ZSdHBUcmFuc3BvcnRDb250cm9sbGVy
KAotICAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlPiBj
b250cm9sbGVyKSB7Ci0gIFJUQ19EQ0hFQ0tfRVEocnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXywg
Y29udHJvbGxlci0+R2V0SW50ZXJuYWwoKSk7Ci0gIFJUQ19EQ0hFQ0sob3duZWRfcnRwX3RyYW5z
cG9ydF9jb250cm9sbGVyXy5nZXQoKSA9PSBudWxscHRyKTsKLSAgb3duZWRfcnRwX3RyYW5zcG9y
dF9jb250cm9sbGVyXyA9IHN0ZDo6bW92ZShjb250cm9sbGVyKTsKLX0KLQotUnRwVHJhbnNwb3J0
QWRhcHRlcjo6UnRwVHJhbnNwb3J0QWRhcHRlcigKLSAgICBjb25zdCBSdGNwUGFyYW1ldGVycyYg
cnRjcF9wYXJhbXMsCi0gICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgUGFj
a2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydGNwLAotICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJB
ZGFwdGVyKiBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIsCi0gICAgYm9vbCBpc19zcnRwX3RyYW5z
cG9ydCkKLSAgICA6IHJ0cF9wYWNrZXRfdHJhbnNwb3J0XyhydHApLAotICAgICAgcnRjcF9wYWNr
ZXRfdHJhbnNwb3J0XyhydGNwKSwKLSAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8ocnRw
X3RyYW5zcG9ydF9jb250cm9sbGVyKSwKLSAgICAgIG5ldHdvcmtfdGhyZWFkXyhydHBfdHJhbnNw
b3J0X2NvbnRyb2xsZXJfLT5uZXR3b3JrX3RocmVhZCgpKSB7Ci0gIHBhcmFtZXRlcnNfLnJ0Y3Ag
PSBydGNwX3BhcmFtczsKLSAgLy8gQ05BTUUgc2hvdWxkIGhhdmUgYmVlbiBmaWxsZWQgYnkgT3J0
Y0ZhY3RvcnkgaWYgZW1wdHkuCi0gIFJUQ19EQ0hFQ0soIXBhcmFtZXRlcnNfLnJ0Y3AuY25hbWUu
ZW1wdHkoKSk7Ci0gIFJUQ19EQ0hFQ0socnRwX3RyYW5zcG9ydF9jb250cm9sbGVyKTsKLQotICBp
ZiAoaXNfc3J0cF90cmFuc3BvcnQpIHsKLSAgICBzcnRwX3RyYW5zcG9ydF8gPSBhYnNsOjptYWtl
X3VuaXF1ZTxTcnRwVHJhbnNwb3J0PihydGNwID09IG51bGxwdHIpOwotICAgIHRyYW5zcG9ydF8g
PSBzcnRwX3RyYW5zcG9ydF8uZ2V0KCk7Ci0gIH0gZWxzZSB7Ci0gICAgdW5lbmNyeXB0ZWRfcnRw
X3RyYW5zcG9ydF8gPQotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxSdHBUcmFuc3BvcnQ+KHJ0
Y3AgPT0gbnVsbHB0cik7Ci0gICAgdHJhbnNwb3J0XyA9IHVuZW5jcnlwdGVkX3J0cF90cmFuc3Bv
cnRfLmdldCgpOwotICB9Ci0gIFJUQ19EQ0hFQ0sodHJhbnNwb3J0Xyk7Ci0KLSAgbmV0d29ya190
aHJlYWRfLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWz1dIHsKLSAgICBTZXRSdHBQYWNr
ZXRUcmFuc3BvcnQocnRwLT5HZXRJbnRlcm5hbCgpKTsKLSAgICBpZiAocnRjcCkgewotICAgICAg
U2V0UnRjcFBhY2tldFRyYW5zcG9ydChydGNwLT5HZXRJbnRlcm5hbCgpKTsKLSAgICB9Ci0gIH0p
OwotCi0gIHRyYW5zcG9ydF8tPlNpZ25hbFJlYWR5VG9TZW5kLmNvbm5lY3QodGhpcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUnRwVHJhbnNwb3J0QWRhcHRlcjo6
T25SZWFkeVRvU2VuZCk7Ci0gIHRyYW5zcG9ydF8tPlNpZ25hbFJ0Y3BQYWNrZXRSZWNlaXZlZC5j
b25uZWN0KAotICAgICAgdGhpcywgJlJ0cFRyYW5zcG9ydEFkYXB0ZXI6Ok9uUnRjcFBhY2tldFJl
Y2VpdmVkKTsKLSAgdHJhbnNwb3J0Xy0+U2lnbmFsV3JpdGFibGVTdGF0ZS5jb25uZWN0KAotICAg
ICAgdGhpcywgJlJ0cFRyYW5zcG9ydEFkYXB0ZXI6Ok9uV3JpdGFibGVTdGF0ZSk7Ci19Ci0KLVJ0
cFRyYW5zcG9ydEFkYXB0ZXI6On5SdHBUcmFuc3BvcnRBZGFwdGVyKCkgewotICBTaWduYWxEZXN0
cm95ZWQodGhpcyk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydEFkYXB0ZXI6OlNldFBhcmFt
ZXRlcnMoCi0gICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgewot
ICBpZiAoIXBhcmFtZXRlcnMucnRjcC5tdXggJiYgcGFyYW1ldGVyc18ucnRjcC5tdXgpIHsKLSAg
ICBMT0dfQU5EX1JFVFVSTl9FUlJPUih3ZWJydGM6OlJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9TVEFU
RSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgZGlzYWJsZSBSVENQIG11eGluZyBh
ZnRlciBlbmFibGluZy4iKTsKLSAgfQotICBpZiAoIXBhcmFtZXRlcnMucnRjcC5jbmFtZS5lbXB0
eSgpICYmCi0gICAgICBwYXJhbWV0ZXJzLnJ0Y3AuY25hbWUgIT0gcGFyYW1ldGVyc18ucnRjcC5j
bmFtZSkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpV
TlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkNoYW5naW5n
IHRoZSBSVENQIENOQU1FIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC4iKTsKLSAgfQotICAvLyBJ
ZiB0aGUgQ05BTUUgaXMgZW1wdHksIHVzZSB0aGUgZXhpc3Rpbmcgb25lLgotICBSdHBUcmFuc3Bv
cnRQYXJhbWV0ZXJzIGNvcHkgPSBwYXJhbWV0ZXJzOwotICBpZiAoY29weS5ydGNwLmNuYW1lLmVt
cHR5KCkpIHsKLSAgICBjb3B5LnJ0Y3AuY25hbWUgPSBwYXJhbWV0ZXJzXy5ydGNwLmNuYW1lOwot
ICB9Ci0gIFJUQ0Vycm9yIGVyciA9Ci0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5T
ZXRSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzKGNvcHksIHRoaXMpOwotICBpZiAoIWVyci5vaygpKSB7
Ci0gICAgcmV0dXJuIGVycjsKLSAgfQotICBwYXJhbWV0ZXJzXyA9IGNvcHk7Ci0gIGlmIChwYXJh
bWV0ZXJzXy5ydGNwLm11eCkgewotICAgIHJ0Y3BfcGFja2V0X3RyYW5zcG9ydF8gPSBudWxscHRy
OwotICB9Ci0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQotUlRDRXJyb3IgUnRwVHJhbnNw
b3J0QWRhcHRlcjo6U2V0U3J0cFNlbmRLZXkoCi0gICAgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFy
YW1zJiBwYXJhbXMpIHsKLSAgaWYgKCFuZXR3b3JrX3RocmVhZF8tPklzQ3VycmVudCgpKSB7Ci0g
ICAgcmV0dXJuIG5ldHdvcmtfdGhyZWFkXy0+SW52b2tlPFJUQ0Vycm9yPigKLSAgICAgICAgUlRD
X0ZST01fSEVSRSwgWyZdIHsgcmV0dXJuIFNldFNydHBTZW5kS2V5KHBhcmFtcyk7IH0pOwotICB9
Ci0gIHJldHVybiB0cmFuc3BvcnRfLT5TZXRTcnRwU2VuZEtleShwYXJhbXMpOwotfQotCi1SVENF
cnJvciBSdHBUcmFuc3BvcnRBZGFwdGVyOjpTZXRTcnRwUmVjZWl2ZUtleSgKLSAgICBjb25zdCBj
cmlja2V0OjpDcnlwdG9QYXJhbXMmIHBhcmFtcykgewotICBpZiAoIW5ldHdvcmtfdGhyZWFkXy0+
SXNDdXJyZW50KCkpIHsKLSAgICByZXR1cm4gbmV0d29ya190aHJlYWRfLT5JbnZva2U8UlRDRXJy
b3I+KAotICAgICAgICBSVENfRlJPTV9IRVJFLCBbJl0geyByZXR1cm4gU2V0U3J0cFJlY2VpdmVL
ZXkocGFyYW1zKTsgfSk7Ci0gIH0KLSAgcmV0dXJuIHRyYW5zcG9ydF8tPlNldFNydHBSZWNlaXZl
S2V5KHBhcmFtcyk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0
YWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0
Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgx
OTE0ZjZiOGQxYjQ3NWY3NWIwNDg1NTk1YTE4YTdmMTY0MWE1NDQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQot
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBPUlRDX1JUUFRS
QU5TUE9SVEFEQVBURVJfSF8KLSNkZWZpbmUgT1JUQ19SVFBUUkFOU1BPUlRBREFQVEVSX0hfCi0K
LSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiYXBpL3J0
Y2Vycm9yLmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9zdHJlYW1wYXJhbXMuaCIKLSNpbmNsdWRl
ICJvcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmgiCi0jaW5jbHVkZSAicGMvY2hh
bm5lbC5oIgotI2luY2x1ZGUgInBjL3J0cHRyYW5zcG9ydGludGVybmFsYWRhcHRlci5oIgotI2lu
Y2x1ZGUgInBjL3NydHB0cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rv
cm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90
LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotLy8gVGhpcyBjbGFzcyBpcyBhIHdyYXBwZXIgb3Zl
ciBhbiBSdHBUcmFuc3BvcnQgb3IgYW4gU3J0cFRyYW5zcG9ydC4gVGhlIGJhc2UKLS8vIGNsYXNz
IFJ0cFRyYW5zcG9ydEludGVybmFsQWRhcHRlciBrZWVwcyBhIHJhdyBwb2ludGVyLCB8dHJhbnNw
b3J0X3wsIG9mIHRoZQotLy8gdHJhbnNwb3J0IG9iamVjdCBhbmQgaW1wbGVtZW50cyBib3RoIHRo
ZSBwdWJsaWMgU3J0cFRyYW5zcG9ydEludGVyZmFjZSBhbmQKLS8vIFJ0cFRyYW5zcG9ydCBpbnRl
cm5hbCBpbnRlcmZhY2UgYnkgY2FsbGluZyB0aGUgfHRyYW5zcG9ydF98IHVuZGVybmVhdGguCi0v
LwotLy8gVGhpcyBhZGFwdGVyIGNhbiBiZSB1c2VkIGFzIGFuIHVuZW5jcnlwdGVkIFJUUCB0cmFu
c3BvcnQgb3IgYW4gU3J0cFRyYW5zcG9ydAotLy8gd2l0aCBSdHBTZW5kZXJBZGFwdGVyLCBSdHBS
ZWNlaXZlckFkYXB0ZXIsIGFuZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlci4KLS8vCi0v
LyBUT0RPKGRlYWRiZWVmKTogV2hlbiBCYXNlQ2hhbm5lbCBpcyBzcGxpdCBhcGFydCBpbnRvIHNl
cGFyYXRlCi0vLyAiUnRwVHJhbnNwb3J0Ii8iUnRwVHJhbnNjZWl2ZXIiLyJSdHBTZW5kZXIiLyJS
dHBSZWNlaXZlciIgb2JqZWN0cywgdGhpcwotLy8gYWRhcHRlciBvYmplY3QgY2FuIGJlIHJlbW92
ZWQuCi1jbGFzcyBSdHBUcmFuc3BvcnRBZGFwdGVyIDogcHVibGljIFJ0cFRyYW5zcG9ydEludGVy
bmFsQWRhcHRlciB7Ci0gcHVibGljOgotICAvLyB8cnRwfCBjYW4ndCBiZSBudWxsLiB8cnRjcHwg
Y2FuIGlmIFJUQ1AgbXV4aW5nIGlzIHVzZWQgaW1tZWRpYXRlbHkgKG1lYW5pbmcKLSAgLy8gfHJ0
Y3BfcGFyYW1ldGVycy5tdXh8IGlzIGFsc28gdHJ1ZSkuCi0gIHN0YXRpYyBSVENFcnJvck9yPHN0
ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+PiBDcmVhdGVQcm94aWVkKAotICAg
ICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcnRjcF9wYXJhbWV0ZXJzLAotICAgICAg
UGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRl
cmZhY2UqIHJ0Y3AsCi0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogcnRwX3Ry
YW5zcG9ydF9jb250cm9sbGVyKTsKLQotICBzdGF0aWMgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9w
dHI8U3J0cFRyYW5zcG9ydEludGVyZmFjZT4+IENyZWF0ZVNydHBQcm94aWVkKAotICAgICAgY29u
c3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcnRjcF9wYXJhbWV0ZXJzLAotICAgICAgUGFja2V0
VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2Uq
IHJ0Y3AsCi0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogcnRwX3RyYW5zcG9y
dF9jb250cm9sbGVyKTsKLQotICB+UnRwVHJhbnNwb3J0QWRhcHRlcigpIG92ZXJyaWRlOwotCi0g
IC8vIFJ0cFRyYW5zcG9ydEludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4KLSAgUGFja2V0VHJhbnNw
b3J0SW50ZXJmYWNlKiBHZXRSdHBQYWNrZXRUcmFuc3BvcnQoKSBjb25zdCBvdmVycmlkZSB7Ci0g
ICAgcmV0dXJuIHJ0cF9wYWNrZXRfdHJhbnNwb3J0XzsKLSAgfQotICBQYWNrZXRUcmFuc3BvcnRJ
bnRlcmZhY2UqIEdldFJ0Y3BQYWNrZXRUcmFuc3BvcnQoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAg
cmV0dXJuIHJ0Y3BfcGFja2V0X3RyYW5zcG9ydF87Ci0gIH0KLSAgUlRDRXJyb3IgU2V0UGFyYW1l
dGVycyhjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBvdmVycmlkZTsK
LSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBHZXRQYXJhbWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gcGFyYW1ldGVyc187IH0KLQotICAvLyBTUlRQIHNwZWNpZmljIGltcGxlbWVudGF0
aW9uLgotICBSVENFcnJvciBTZXRTcnRwU2VuZEtleShjb25zdCBjcmlja2V0OjpDcnlwdG9QYXJh
bXMmIHBhcmFtcykgb3ZlcnJpZGU7Ci0gIFJUQ0Vycm9yIFNldFNydHBSZWNlaXZlS2V5KGNvbnN0
IGNyaWNrZXQ6OkNyeXB0b1BhcmFtcyYgcGFyYW1zKSBvdmVycmlkZTsKLQotICAvLyBNZXRob2Rz
IHVzZWQgaW50ZXJuYWxseSBieSBPcnRjRmFjdG9yeS4KLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxl
ckFkYXB0ZXIqIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcigpIHsKLSAgICByZXR1cm4gcnRwX3Ry
YW5zcG9ydF9jb250cm9sbGVyXzsKLSAgfQotICB2b2lkIFRha2VPd25lcnNoaXBPZlJ0cFRyYW5z
cG9ydENvbnRyb2xsZXIoCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJv
bGxlckludGVyZmFjZT4gY29udHJvbGxlcik7Ci0KLSAgLy8gVXNlZCBieSBSdHBUcmFuc3BvcnRD
b250cm9sbGVyQWRhcHRlciB0byB0ZWxsIHdoZW4gaXQgc2hvdWxkIHN0b3AKLSAgLy8gcmV0dXJu
aW5nIHRoaXMgdHJhbnNwb3J0IGZyb20gR2V0VHJhbnNwb3J0cygpLgotICBzaWdzbG90OjpzaWdu
YWwxPFJ0cFRyYW5zcG9ydEFkYXB0ZXIqPiBTaWduYWxEZXN0cm95ZWQ7Ci0KLSAgYm9vbCBJc1Ny
dHBBY3RpdmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cmFuc3BvcnRfLT5Jc1NydHBBY3Rp
dmUoKTsgfQotCi0gcHJvdGVjdGVkOgotICBSdHBUcmFuc3BvcnRBZGFwdGVyKiBHZXRJbnRlcm5h
bCgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KLQotIHByaXZhdGU6Ci0gIFJ0cFRyYW5zcG9y
dEFkYXB0ZXIoY29uc3QgUnRjcFBhcmFtZXRlcnMmIHJ0Y3BfcGFyYW1zLAotICAgICAgICAgICAg
ICAgICAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAotICAgICAgICAgICAgICAg
ICAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICAgICAgICAgICAgICAg
ICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogcnRwX3RyYW5zcG9ydF9jb250cm9s
bGVyLAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfc3J0cF90cmFuc3BvcnQpOwotCi0g
IHZvaWQgT25SZWFkeVRvU2VuZChib29sIHJlYWR5KSB7IFNpZ25hbFJlYWR5VG9TZW5kKHJlYWR5
KTsgfQotCi0gIHZvaWQgT25SdGNwUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZl
ciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0
VGltZSYgdGltZSkgewotICAgIFNpZ25hbFJ0Y3BQYWNrZXRSZWNlaXZlZChwYWNrZXQsIHRpbWUp
OwotICB9Ci0KLSAgdm9pZCBPbldyaXRhYmxlU3RhdGUoYm9vbCB3cml0YWJsZSkgeyBTaWduYWxX
cml0YWJsZVN0YXRlKHdyaXRhYmxlKTsgfQotCi0gIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSog
cnRwX3BhY2tldF90cmFuc3BvcnRfID0gbnVsbHB0cjsKLSAgUGFja2V0VHJhbnNwb3J0SW50ZXJm
YWNlKiBydGNwX3BhY2tldF90cmFuc3BvcnRfID0gbnVsbHB0cjsKLSAgUnRwVHJhbnNwb3J0Q29u
dHJvbGxlckFkYXB0ZXIqIGNvbnN0IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8gPSBudWxscHRy
OwotICAvLyBOb24tbnVsbCBpZiB0aGlzIGNsYXNzIG93bnMgdGhlIHRyYW5zcG9ydCBjb250cm9s
bGVyLgotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4K
LSAgICAgIG93bmVkX3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl87Ci0gIFJ0cFRyYW5zcG9ydFBh
cmFtZXRlcnMgcGFyYW1ldGVyc187Ci0KLSAgLy8gT25seSBvbmUgb2YgdGhlbSBpcyBub24tbnVs
bDsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydD4gdW5lbmNyeXB0ZWRfcnRwX3RyYW5z
cG9ydF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0PiBzcnRwX3RyYW5zcG9ydF87
Ci0KLSAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkXyA9IG51bGxwdHI7Ci0KLSAgUlRDX0RJ
U0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhSdHBUcmFuc3BvcnRBZGFwdGVyKTsKLX07Ci0K
LX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBPUlRDX1JUUFRSQU5TUE9SVEFE
QVBURVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL29ydGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0Y29udHJv
bGxlcl91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1NDg0MTdl
ZTdjZjY3ZjQyOTdkZjc3YTg3YzZiMGY3N2YzOTdjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJfdW5pdHRlc3QuY2MKKysrIC9kZXYv
bnVsbApAQCAtMSwxOTkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1l
bW9yeT4KLQotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVy
X2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5j
b2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIK
LSNpbmNsdWRlICJvcnRjL29ydGNmYWN0b3J5LmgiCi0jaW5jbHVkZSAib3J0Yy90ZXN0cnRwcGFy
YW1ldGVycy5oIgotI2luY2x1ZGUgInAycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVGhp
cyB0ZXN0IHVzZXMgZmFrZSBwYWNrZXQgdHJhbnNwb3J0cyBhbmQgYSBmYWtlIG1lZGlhIGVuZ2lu
ZSwgaW4gb3JkZXIgdG8KLS8vIHRlc3QgdGhlIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXIgYXQgb25s
eSBhbiBBUEkgbGV2ZWwuIEFueSBlbmQtdG8tZW5kIHRlc3QKLS8vIHNob3VsZCBnbyBpbiBvcnRj
ZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MgaW5zdGVhZC4KLS8vCi0vLyBDdXJyZW50bHksIHRo
aXMgdGVzdCBtYWlubHkgZm9jdXNlcyBvbiB0aGUgbGltaXRhdGlvbnMgb2YgdGhlICJhZGFwdGVy
IgotLy8gUnRwVHJhbnNwb3J0Q29udHJvbGxlciBpbXBsZW1lbnRhdGlvbi4gT25seSBvbmUgb2Yg
ZWFjaCB0eXBlIG9mCi0vLyBzZW5kZXIvcmVjZWl2ZXIgY2FuIGJlIGNyZWF0ZWQsIGFuZCB0aGUg
c2VuZGVyL3JlY2VpdmVyIG9mIHRoZSBzYW1lIG1lZGlhCi0vLyB0eXBlIG11c3QgdXNlIHRoZSBz
YW1lIHRyYW5zcG9ydC4KLWNsYXNzIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclRlc3Qo
KSB7Ci0gICAgLy8gTm90ZTogVGhpcyBkb2Vzbid0IG5lZWQgdG8gdXNlIGZha2UgbmV0d29yayBj
bGFzc2VzLCBzaW5jZSBpdCB1c2VzCi0gICAgLy8gRmFrZVBhY2tldFRyYW5zcG9ydHMuCi0gICAg
YXV0byByZXN1bHQgPSBPcnRjRmFjdG9yeTo6Q3JlYXRlKAotICAgICAgICBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+KAotICAgICAgICAgICAgbmV3IGNyaWNrZXQ6
OkZha2VNZWRpYUVuZ2luZSgpKSwKLSAgICAgICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZh
Y3RvcnkoKSwgQ3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSk7Ci0gICAgb3J0Y19m
YWN0b3J5XyA9IHJlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xs
ZXJfID0KLSAgICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxl
cigpLk1vdmVWYWx1ZSgpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHN0ZDo6dW5pcXVlX3B0cjxP
cnRjRmFjdG9yeUludGVyZmFjZT4gb3J0Y19mYWN0b3J5XzsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl87
Ci19OwotCi1URVNUX0YoUnRwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIEdldFRyYW5zcG9ydHMp
IHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHBhY2tldF90cmFuc3BvcnQxKCJvbmUiKTsK
LSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHBhY2tldF90cmFuc3BvcnQyKCJ0d28iKTsKLQot
ICBhdXRvIHJ0cF90cmFuc3BvcnRfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRy
YW5zcG9ydCgKLSAgICAgIE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCAmcGFja2V0X3RyYW5zcG9y
dDEsIG51bGxwdHIsCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLmdldCgpKTsKLSAg
QVNTRVJUX1RSVUUocnRwX3RyYW5zcG9ydF9yZXN1bHQxLm9rKCkpOwotCi0gIGF1dG8gcnRwX3Ry
YW5zcG9ydF9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAg
ICAgTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCksICZwYWNrZXRfdHJhbnNwb3J0MiwgbnVsbHB0ciwK
LSAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8uZ2V0KCkpOwotICBBU1NFUlRfVFJVRShy
dHBfdHJhbnNwb3J0X3Jlc3VsdDIub2soKSk7Ci0KLSAgYXV0byByZXR1cm5lZF90cmFuc3BvcnRz
ID0gcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0VHJhbnNwb3J0cygpOwotICBBU1NFUlRf
RVEoMnUsIHJldHVybmVkX3RyYW5zcG9ydHMuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKHJ0cF90cmFu
c3BvcnRfcmVzdWx0MS52YWx1ZSgpLmdldCgpLCByZXR1cm5lZF90cmFuc3BvcnRzWzBdKTsKLSAg
RVhQRUNUX0VRKHJ0cF90cmFuc3BvcnRfcmVzdWx0Mi52YWx1ZSgpLmdldCgpLCByZXR1cm5lZF90
cmFuc3BvcnRzWzFdKTsKLQotICAvLyBJZiBhIHRyYW5zcG9ydCBpcyBkZWxldGVkLCBpdCBzaG91
bGRuJ3QgYmUgcmV0dXJuZWQgYW55IG1vcmUuCi0gIHJ0cF90cmFuc3BvcnRfcmVzdWx0MS5Nb3Zl
VmFsdWUoKS5yZXNldCgpOwotICByZXR1cm5lZF90cmFuc3BvcnRzID0gcnRwX3RyYW5zcG9ydF9j
b250cm9sbGVyXy0+R2V0VHJhbnNwb3J0cygpOwotICBBU1NFUlRfRVEoMXUsIHJldHVybmVkX3Ry
YW5zcG9ydHMuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKHJ0cF90cmFuc3BvcnRfcmVzdWx0Mi52YWx1
ZSgpLmdldCgpLCByZXR1cm5lZF90cmFuc3BvcnRzWzBdKTsKLX0KLQotLy8gQ3JlYXRlIFJ0cFNl
bmRlcnMgYW5kIFJ0cFJlY2VpdmVycyBvbiB0b3Agb2YgUnRwVHJhbnNwb3J0cyBjb250cm9sbGVk
IGJ5IHRoZQotLy8gc2FtZSBSdHBUcmFuc3BvcnRDb250cm9sbGVyLiBDdXJyZW50bHkgb25seSBv
bmUgZWFjaCBvZiBhdWRpby92aWRlbyBpcwotLy8gc3VwcG9ydGVkLgotVEVTVF9GKFJ0cFRyYW5z
cG9ydENvbnRyb2xsZXJUZXN0LCBBdHRhY2hNdWx0aXBsZVNlbmRlcnNBbmRSZWNlaXZlcnMpIHsK
LSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IGF1ZGlvX3BhY2tldF90cmFuc3BvcnQoImF1ZGlv
Iik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCB2aWRlb19wYWNrZXRfdHJhbnNwb3J0KCJ2
aWRlbyIpOwotCi0gIGF1dG8gYXVkaW9fcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRjX2ZhY3Rv
cnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSwg
JmF1ZGlvX3BhY2tldF90cmFuc3BvcnQsIG51bGxwdHIsCi0gICAgICBydHBfdHJhbnNwb3J0X2Nv
bnRyb2xsZXJfLmdldCgpKTsKLSAgQVNTRVJUX1RSVUUoYXVkaW9fcnRwX3RyYW5zcG9ydF9yZXN1
bHQub2soKSk7Ci0gIGF1dG8gYXVkaW9fcnRwX3RyYW5zcG9ydCA9IGF1ZGlvX3J0cF90cmFuc3Bv
cnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIGF1dG8gdmlkZW9fcnRwX3RyYW5zcG9ydF9yZXN1
bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBNYWtlUnRjcE11
eFBhcmFtZXRlcnMoKSwgJnZpZGVvX3BhY2tldF90cmFuc3BvcnQsIG51bGxwdHIsCi0gICAgICBy
dHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLmdldCgpKTsKLSAgQVNTRVJUX1RSVUUodmlkZW9fcnRw
X3RyYW5zcG9ydF9yZXN1bHQub2soKSk7Ci0gIGF1dG8gdmlkZW9fcnRwX3RyYW5zcG9ydCA9IHZp
ZGVvX3J0cF90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIGF1dG8gYXVkaW9fc2Vu
ZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNr
ZXQ6Ok1FRElBX1RZUEVfQVVESU8sIGF1ZGlvX3J0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBF
Q1RfVFJVRShhdWRpb19zZW5kZXJfcmVzdWx0Lm9rKCkpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVy
X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tl
dDo6TUVESUFfVFlQRV9BVURJTywgYXVkaW9fcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVD
VF9UUlVFKGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLSAgYXV0byB2aWRlb19zZW5kZXJf
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6
TUVESUFfVFlQRV9WSURFTywgdmlkZW9fcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9U
UlVFKHZpZGVvX3NlbmRlcl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXJfcmVz
dWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpN
RURJQV9UWVBFX1ZJREVPLCB2aWRlb19ydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQRUNUX1RS
VUUodmlkZW9fcmVjZWl2ZXJfcmVzdWx0Lm9rKCkpOwotCi0gIC8vIE5vdyB0aGF0IHdlIGhhdmUg
b25lIGVhY2ggb2YgYXVkaW8vdmlkZW8gc2VuZGVycy9yZWNlaXZlcnMsIHRyeWluZyB0bwotICAv
LyBjcmVhdGUgbW9yZSBvbiB0b3Agb2YgdGhlIHNhbWUgY29udHJvbGxlciBpcyBleHBlY3RlZCB0
byBmYWlsLgotICAvLyBUT0RPKGRlYWRiZWVmKTogVXBkYXRlIHRoaXMgdGVzdCBvbmNlIG11bHRp
cGxlIHNlbmRlcnMvcmVjZWl2ZXJzIG9uIHRvcCBvZgotICAvLyB0aGUgc2FtZSBjb250cm9sbGVy
IGlzIHN1cHBvcnRlZC4KLSAgYXV0byBmYWlsZWRfc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIGF1
ZGlvX3J0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpVTlNV
UFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICBmYWlsZWRfc2VuZGVyX3Jlc3VsdC5lcnJv
cigpLnR5cGUoKSk7Ci0gIGF1dG8gZmFpbGVkX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywg
YXVkaW9fcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVO
U1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgIGZhaWxlZF9yZWNlaXZlcl9yZXN1bHQu
ZXJyb3IoKS50eXBlKCkpOwotICBmYWlsZWRfc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8t
PkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVv
X3J0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpVTlNVUFBP
UlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICBmYWlsZWRfc2VuZGVyX3Jlc3VsdC5lcnJvcigp
LnR5cGUoKSk7Ci0gIGZhaWxlZF9yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3J0
cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRF
RF9PUEVSQVRJT04sCi0gICAgICAgICAgICBmYWlsZWRfcmVjZWl2ZXJfcmVzdWx0LmVycm9yKCku
dHlwZSgpKTsKLQotICAvLyBJZiB3ZSBkZXN0cm95IHRoZSBleGlzdGluZyBzZW5kZXIvcmVjZWl2
ZXIgdXNpbmcgYSB0cmFuc3BvcnQgY29udHJvbGxlciwKLSAgLy8gd2Ugc2hvdWxkIGJlIGFibGUg
dG8gbWFrZSBhIG5ldyBvbmUsIGRlc3BpdGUgdGhlIGFib3ZlIGxpbWl0YXRpb24uCi0gIGF1ZGlv
X3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCkucmVzZXQoKTsKLSAgYXVkaW9fc2VuZGVyX3Jlc3Vs
dCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElB
X1RZUEVfQVVESU8sIGF1ZGlvX3J0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShh
dWRpb19zZW5kZXJfcmVzdWx0Lm9rKCkpOwotICBhdWRpb19yZWNlaXZlcl9yZXN1bHQuTW92ZVZh
bHVlKCkucmVzZXQoKTsKLSAgYXVkaW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+
Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBhdWRp
b19ydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXJfcmVz
dWx0Lm9rKCkpOwotICB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpLnJlc2V0KCk7Ci0g
IHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0g
ICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb19ydHBfdHJhbnNwb3J0LmdldCgp
KTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyX3Jlc3VsdC5vaygpKTsKLSAgdmlkZW9fcmVj
ZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpLnJlc2V0KCk7Ci0gIHZpZGVvX3JlY2VpdmVyX3Jlc3Vs
dCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVE
SUFfVFlQRV9WSURFTywgdmlkZW9fcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVF
KHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLX0KLQotLy8gR2l2ZW4gdGhlIGN1cnJlbnQg
bGltaXRhdGlvbnMgb2YgdGhlIEJhc2VDaGFubmVsLWJhc2VkIGltcGxlbWVudGF0aW9uLCBpdCdz
Ci0vLyBub3QgcG9zc2libGUgZm9yIGFuIGF1ZGlvIHNlbmRlciBhbmQgcmVjZWl2ZXIgdG8gdXNl
IGRpZmZlcmVudCBSdHBUcmFuc3BvcnRzLgotLy8gVE9ETyhkZWFkYmVlZik6IE9uY2UgdGhpcyBp
cyBzdXBwb3J0ZWQsIHVwZGF0ZS9yZXBsYWNlIHRoaXMgdGVzdC4KLVRFU1RfRihSdHBUcmFuc3Bv
cnRDb250cm9sbGVyVGVzdCwKLSAgICAgICBTZW5kZXJBbmRSZWNlaXZlclVzaW5nRGlmZmVyZW50
VHJhbnNwb3J0c1Vuc3VwcG9ydGVkKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBwYWNr
ZXRfdHJhbnNwb3J0MSgib25lIik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBwYWNrZXRf
dHJhbnNwb3J0MigidHdvIik7Ci0KLSAgYXV0byBydHBfdHJhbnNwb3J0X3Jlc3VsdDEgPSBvcnRj
X2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBNYWtlUnRjcE11eFBhcmFtZXRl
cnMoKSwgJnBhY2tldF90cmFuc3BvcnQxLCBudWxscHRyLAotICAgICAgcnRwX3RyYW5zcG9ydF9j
b250cm9sbGVyXy5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKHJ0cF90cmFuc3BvcnRfcmVzdWx0MS5v
aygpKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0MSA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0MS5Nb3Zl
VmFsdWUoKTsKLQotICBhdXRvIHJ0cF90cmFuc3BvcnRfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeV8t
PkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCAmcGFj
a2V0X3RyYW5zcG9ydDIsIG51bGxwdHIsCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJf
LmdldCgpKTsKLSAgQVNTRVJUX1RSVUUocnRwX3RyYW5zcG9ydF9yZXN1bHQyLm9rKCkpOwotICBh
dXRvIHJ0cF90cmFuc3BvcnQyID0gcnRwX3RyYW5zcG9ydF9yZXN1bHQyLk1vdmVWYWx1ZSgpOwot
Ci0gIC8vIENyZWF0ZSBhbiBhdWRpbyBzZW5kZXIgb24gdHJhbnNwb3J0IDEsIHRoZW4gdHJ5IHRv
IGNyZWF0ZSBhIHJlY2VpdmVyIG9uIDIuCi0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9y
dGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVf
QVVESU8sIHJ0cF90cmFuc3BvcnQxLmdldCgpKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVy
X3Jlc3VsdC5vaygpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rv
cnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8s
IHJ0cF90cmFuc3BvcnQyLmdldCgpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5TVVBQ
T1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgYXVkaW9fcmVjZWl2ZXJfcmVzdWx0LmVycm9y
KCkudHlwZSgpKTsKLSAgLy8gRGVsZXRlIHRoZSBzZW5kZXI7IG5vdyB3ZSBzaG91bGQgYmUgb2sg
dG8gY3JlYXRlIHRoZSByZWNlaXZlciBvbiAyLgotICBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVW
YWx1ZSgpLnJlc2V0KCk7Ci0gIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8t
PkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRw
X3RyYW5zcG9ydDIuZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlcl9yZXN1bHQu
b2soKSk7Ci0KLSAgLy8gRG8gdGhlIHNhbWUgdGhpbmcgZm9yIHZpZGVvLCByZXZlcnNpbmcgMSBh
bmQgMiAoZm9yIHZhcmlldHkpLgotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2Zh
Y3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVP
LCBydHBfdHJhbnNwb3J0Mi5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlcl9yZXN1
bHQub2soKSk7Ci0KLSAgYXV0byB2aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0
cF90cmFuc3BvcnQxLmdldCgpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JU
RURfT1BFUkFUSU9OLAotICAgICAgICAgICAgdmlkZW9fcmVjZWl2ZXJfcmVzdWx0LmVycm9yKCku
dHlwZSgpKTsKLSAgdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKS5yZXNldCgpOwotICB2
aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigK
LSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnQxLmdldCgpKTsK
LSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXJfcmVzdWx0Lm9rKCkpOwotfQotCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRj
b250cm9sbGVyYWRhcHRlci5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJiMDNl
YTMyMWY1NDY3MzdlZjMxZmQzMWVhYjg2NDhkNWQwMDg4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmNjCisrKyAvZGV2
L251bGwKQEAgLTEsOTcxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJv
cnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmgiCi0KLSNpbmNsdWRlIDxhbGdvcml0
aG0+ICAvLyBGb3IgInJlbW92ZSIsICJmaW5kIi4KLSNpbmNsdWRlIDxzZXQ+Ci0jaW5jbHVkZSA8
dW5vcmRlcmVkX21hcD4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6bW92ZS4KLQot
I2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgotI2luY2x1ZGUgImFwaS9wcm94eS5oIgot
I2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKLSNpbmNsdWRlICJvcnRjL29y
dGNydHByZWNlaXZlcmFkYXB0ZXIuaCIKLSNpbmNsdWRlICJvcnRjL29ydGNydHBzZW5kZXJhZGFw
dGVyLmgiCi0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmgiCi0jaW5jbHVkZSAi
cGMvcnRwbWVkaWF1dGlscy5oIgotI2luY2x1ZGUgInBjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9u
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3Ry
aW5ncy9zdHJpbmdfYnVpbGRlci5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gTm90ZTog
SXQncyBhc3N1bWVkIHRoYXQgZWFjaCBpbmRpdmlkdWFsIGxpc3QgZG9lc24ndCBoYXZlIGNvbmZs
aWN0cywgc2luY2UKLS8vIHRoZXkgc2hvdWxkIGhhdmUgYmVlbiBkZXRlY3RlZCBhbHJlYWR5IGJ5
IHJ0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNjLiBUaGlzCi0vLyBvbmx5IG5lZWRzIHRvIGRldGVj
dCBjb25mbGljdHMgKmJldHdlZW4qIEEgYW5kIEIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5
cGVuYW1lIEMyPgotc3RhdGljIFJUQ0Vycm9yIENoZWNrRm9ySWRDb25mbGljdHMoCi0gICAgY29u
c3Qgc3RkOjp2ZWN0b3I8QzE+JiBjb2RlY3NfYSwKLSAgICBjb25zdCBjcmlja2V0OjpSdHBIZWFk
ZXJFeHRlbnNpb25zJiBleHRlbnNpb25zX2EsCi0gICAgY29uc3QgY3JpY2tldDo6U3RyZWFtUGFy
YW1zVmVjJiBzdHJlYW1zX2EsCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8QzI+JiBjb2RlY3NfYiwK
LSAgICBjb25zdCBjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb25zJiBleHRlbnNpb25zX2IsCi0g
ICAgY29uc3QgY3JpY2tldDo6U3RyZWFtUGFyYW1zVmVjJiBzdHJlYW1zX2IpIHsKLSAgcnRjOjpT
dHJpbmdCdWlsZGVyIG9zczsKLSAgLy8gU2luY2UgaXQncyBhc3N1bWVkIHRoYXQgQzEgYW5kIEMy
IGFyZSBkaWZmZXJlbnQgdHlwZXMsIGNvZGVjc19hIGFuZAotICAvLyBjb2RlY3NfYiBzaG91bGQg
bmV2ZXIgY29udGFpbiB0aGUgc2FtZSBwYXlsb2FkIHR5cGUsIGFuZCB0aHVzIHdlIGNhbiBqdXN0
Ci0gIC8vIHVzZSBhIHNldC4KLSAgc3RkOjpzZXQ8aW50PiBzZWVuX3BheWxvYWRfdHlwZXM7Ci0g
IGZvciAoY29uc3QgQzEmIGNvZGVjIDogY29kZWNzX2EpIHsKLSAgICBzZWVuX3BheWxvYWRfdHlw
ZXMuaW5zZXJ0KGNvZGVjLmlkKTsKLSAgfQotICBmb3IgKGNvbnN0IEMyJiBjb2RlYyA6IGNvZGVj
c19iKSB7Ci0gICAgaWYgKCFzZWVuX3BheWxvYWRfdHlwZXMuaW5zZXJ0KGNvZGVjLmlkKS5zZWNv
bmQpIHsKLSAgICAgIG9zcyA8PCAiU2FtZSBwYXlsb2FkIHR5cGUgdXNlZCBmb3IgYXVkaW8gYW5k
IHZpZGVvIGNvZGVjczogIiA8PCBjb2RlYy5pZDsKLSAgICAgIExPR19BTkRfUkVUVVJOX0VSUk9S
KFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsIG9zcy5zdHIoKSk7Ci0gICAgfQotICB9
Ci0gIC8vIEF1ZGlvIGFuZCB2aWRlbyAqbWF5KiB1c2UgdGhlIHNhbWUgaGVhZGVyIGV4dGVuc2lv
bnMsIHNvIHVzZSBhIG1hcC4KLSAgc3RkOjp1bm9yZGVyZWRfbWFwPGludCwgc3RkOjpzdHJpbmc+
IHNlZW5fZXh0ZW5zaW9uczsKLSAgZm9yIChjb25zdCB3ZWJydGM6OlJ0cEV4dGVuc2lvbiYgZXh0
ZW5zaW9uIDogZXh0ZW5zaW9uc19hKSB7Ci0gICAgc2Vlbl9leHRlbnNpb25zW2V4dGVuc2lvbi5p
ZF0gPSBleHRlbnNpb24udXJpOwotICB9Ci0gIGZvciAoY29uc3Qgd2VicnRjOjpSdHBFeHRlbnNp
b24mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNfYikgewotICAgIGlmIChzZWVuX2V4dGVuc2lvbnMu
ZmluZChleHRlbnNpb24uaWQpICE9IHNlZW5fZXh0ZW5zaW9ucy5lbmQoKSAmJgotICAgICAgICBz
ZWVuX2V4dGVuc2lvbnMuYXQoZXh0ZW5zaW9uLmlkKSAhPSBleHRlbnNpb24udXJpKSB7Ci0gICAg
ICBvc3MgPDwgIlNhbWUgSUQgdXNlZCBmb3IgZGlmZmVyZW50IFJUUCBoZWFkZXIgZXh0ZW5zaW9u
czogIgotICAgICAgICAgIDw8IGV4dGVuc2lvbi5pZDsKLSAgICAgIExPR19BTkRfUkVUVVJOX0VS
Uk9SKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsIG9zcy5zdHIoKSk7Ci0gICAgfQot
ICB9Ci0gIHN0ZDo6c2V0PHVpbnQzMl90PiBzZWVuX3NzcmNzOwotICBmb3IgKGNvbnN0IGNyaWNr
ZXQ6OlN0cmVhbVBhcmFtcyYgc3RyZWFtIDogc3RyZWFtc19hKSB7Ci0gICAgc2Vlbl9zc3Jjcy5p
bnNlcnQoc3RyZWFtLnNzcmNzLmJlZ2luKCksIHN0cmVhbS5zc3Jjcy5lbmQoKSk7Ci0gIH0KLSAg
Zm9yIChjb25zdCBjcmlja2V0OjpTdHJlYW1QYXJhbXMmIHN0cmVhbSA6IHN0cmVhbXNfYikgewot
ICAgIGZvciAodWludDMyX3Qgc3NyYyA6IHN0cmVhbS5zc3JjcykgewotICAgICAgaWYgKCFzZWVu
X3NzcmNzLmluc2VydChzc3JjKS5zZWNvbmQpIHsKLSAgICAgICAgb3NzIDw8ICJTYW1lIFNTUkMg
dXNlZCBmb3IgYXVkaW8gYW5kIHZpZGVvIHNlbmRlcnM6ICIgPDwgc3NyYzsKLSAgICAgICAgTE9H
X0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwgb3NzLnN0
cigpKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQot
Ci1CRUdJTl9PV05FRF9QUk9YWV9NQVAoUnRwVHJhbnNwb3J0Q29udHJvbGxlcikKLVBST1hZX1NJ
R05BTElOR19USFJFQURfREVTVFJVQ1RPUigpCi1QUk9YWV9DT05TVE1FVEhPRDAoc3RkOjp2ZWN0
b3I8UnRwVHJhbnNwb3J0SW50ZXJmYWNlKj4sIEdldFRyYW5zcG9ydHMpCi1wcm90ZWN0ZWQ6Ci1S
dHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogR2V0SW50ZXJuYWwoKSBvdmVycmlkZSB7Ci0g
IHJldHVybiBpbnRlcm5hbCgpOwotfQotRU5EX1BST1hZX01BUCgpCi0KLS8vIHN0YXRpYwotc3Rk
Ojp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+Ci1SdHBUcmFuc3Bv
cnRDb250cm9sbGVyQWRhcHRlcjo6Q3JlYXRlUHJveGllZCgKLSAgICBjb25zdCBjcmlja2V0OjpN
ZWRpYUNvbmZpZyYgY29uZmlnLAotICAgIGNyaWNrZXQ6OkNoYW5uZWxNYW5hZ2VyKiBjaGFubmVs
X21hbmFnZXIsCi0gICAgd2VicnRjOjpSdGNFdmVudExvZyogZXZlbnRfbG9nLAotICAgIHJ0Yzo6
VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFk
LAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCkgewotICBzdGQ6OnVuaXF1ZV9wdHI8
UnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI+IHdyYXBwZWQoCi0gICAgICBuZXcgUnRwVHJh
bnNwb3J0Q29udHJvbGxlckFkYXB0ZXIoY29uZmlnLCBjaGFubmVsX21hbmFnZXIsIGV2ZW50X2xv
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxpbmdfdGhy
ZWFkLCB3b3JrZXJfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldHdvcmtfdGhyZWFkKSk7Ci0gIHJldHVybiBSdHBUcmFuc3BvcnRDb250cm9sbGVyUHJv
eHlXaXRoSW50ZXJuYWw8Ci0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcj46OkNy
ZWF0ZShzaWduYWxpbmdfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHdyYXBwZWQpKTsKLX0KLQotUnRw
VHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6On5SdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRl
cigpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBpZiAoIXRy
YW5zcG9ydF9wcm94aWVzXy5lbXB0eSgpKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikKLSAgICAg
ICAgPDwgIkRlc3Ryb3lpbmcgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIgd2hpbGUgUnRw
VHJhbnNwb3J0cyAiCi0gICAgICAgICAgICJhcmUgc3RpbGwgdXNpbmcgaXQ7IHRoaXMgaXMgdW5z
YWZlLiI7Ci0gIH0KLSAgaWYgKHZvaWNlX2NoYW5uZWxfKSB7Ci0gICAgLy8gVGhpcyB3b3VsZCBt
ZWFuIGF1ZGlvIFJUUCBzZW5kZXJzL3JlY2VpdmVycyB0aGF0IGFyZSB1c2luZyB1cyBoYXZlbid0
Ci0gICAgLy8gYmVlbiBkZXN0cm95ZWQuIFRoaXMgaXNuJ3Qgc2FmZSAoc2VlIGVycm9yIGxvZyBh
Ym92ZSkuCi0gICAgRGVzdHJveVZvaWNlQ2hhbm5lbCgpOwotICB9Ci0gIGlmICh2b2ljZV9jaGFu
bmVsXykgewotICAgIC8vIFRoaXMgd291bGQgbWVhbiB2aWRlbyBSVFAgc2VuZGVycy9yZWNlaXZl
cnMgdGhhdCBhcmUgdXNpbmcgdXMgaGF2ZW4ndAotICAgIC8vIGJlZW4gZGVzdHJveWVkLiBUaGlz
IGlzbid0IHNhZmUgKHNlZSBlcnJvciBsb2cgYWJvdmUpLgotICAgIERlc3Ryb3lWaWRlb0NoYW5u
ZWwoKTsKLSAgfQotICAvLyBDYWxsIG11c3QgYmUgZGVzdHJveWVkIG9uIHRoZSB3b3JrZXIgdGhy
ZWFkLgotICB3b3JrZXJfdGhyZWFkXy0+SW52b2tlPHZvaWQ+KAotICAgICAgUlRDX0ZST01fSEVS
RSwgcnRjOjpCaW5kKCZSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q2xvc2VfdywgdGhp
cykpOwotfQotCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZh
Y2U+PgotUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNyZWF0ZVByb3hpZWRSdHBUcmFu
c3BvcnQoCi0gICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywKLSAg
ICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRl
cmZhY2UqIHJ0Y3ApIHsKLSAgaWYgKCF0cmFuc3BvcnRfcHJveGllc18uZW1wdHkoKSAmJiAocGFy
YW1ldGVycy5rZWVwYWxpdmUgIT0ga2VlcGFsaXZlXykpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9F
UlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICJDYW5ub3QgY3JlYXRlIFJ0cFRyYW5zcG9ydCB3aXRoIGRpZmZlcmVudCBrZWVw
LWFsaXZlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSB0aGUgUnRwVHJhbnNwb3J0
cyBhbHJlYWR5IGFzc29jaWF0ZWQgd2l0aCB0aGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAidHJhbnNwb3J0IGNvbnRyb2xsZXIuIik7Ci0gIH0KLSAgYXV0byByZXN1bHQgPSBSdHBUcmFu
c3BvcnRBZGFwdGVyOjpDcmVhdGVQcm94aWVkKHBhcmFtZXRlcnMsIHJ0cCwgcnRjcCwgdGhpcyk7
Ci0gIGlmIChyZXN1bHQub2soKSkgewotICAgIHRyYW5zcG9ydF9wcm94aWVzXy5wdXNoX2JhY2so
cmVzdWx0LnZhbHVlKCkuZ2V0KCkpOwotICAgIHRyYW5zcG9ydF9wcm94aWVzXy5iYWNrKCktPkdl
dEludGVybmFsKCktPlNpZ25hbERlc3Ryb3llZC5jb25uZWN0KAotICAgICAgICB0aGlzLCAmUnRw
VHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6Ok9uUnRwVHJhbnNwb3J0RGVzdHJveWVkKTsKLSAg
fQotICByZXR1cm4gcmVzdWx0OwotfQotCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxTcnRw
VHJhbnNwb3J0SW50ZXJmYWNlPj4KLVJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpDcmVh
dGVQcm94aWVkU3J0cFRyYW5zcG9ydCgKLSAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLAotICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAotICAgIFBh
Y2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCkgewotICBhdXRvIHJlc3VsdCA9Ci0gICAgICBS
dHBUcmFuc3BvcnRBZGFwdGVyOjpDcmVhdGVTcnRwUHJveGllZChwYXJhbWV0ZXJzLCBydHAsIHJ0
Y3AsIHRoaXMpOwotICBpZiAocmVzdWx0Lm9rKCkpIHsKLSAgICB0cmFuc3BvcnRfcHJveGllc18u
cHVzaF9iYWNrKHJlc3VsdC52YWx1ZSgpLmdldCgpKTsKLSAgICB0cmFuc3BvcnRfcHJveGllc18u
YmFjaygpLT5HZXRJbnRlcm5hbCgpLT5TaWduYWxEZXN0cm95ZWQuY29ubmVjdCgKLSAgICAgICAg
dGhpcywgJlJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPblJ0cFRyYW5zcG9ydERlc3Ry
b3llZCk7Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1
ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVyZmFjZT4+Ci1SdHBUcmFuc3BvcnRDb250cm9sbGVyQWRh
cHRlcjo6Q3JlYXRlUHJveGllZFJ0cFNlbmRlcigKLSAgICBjcmlja2V0OjpNZWRpYVR5cGUga2lu
ZCwKLSAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydF9wcm94eSkgewotICBSVENf
RENIRUNLKHRyYW5zcG9ydF9wcm94eSk7Ci0gIFJUQ19EQ0hFQ0soc3RkOjpmaW5kKHRyYW5zcG9y
dF9wcm94aWVzXy5iZWdpbigpLCB0cmFuc3BvcnRfcHJveGllc18uZW5kKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIHRyYW5zcG9ydF9wcm94eSkgIT0gdHJhbnNwb3J0X3Byb3hpZXNfLmVuZCgp
KTsKLSAgc3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJBZGFwdGVyPiBuZXdfc2VuZGVyKAot
ICAgICAgbmV3IE9ydGNSdHBTZW5kZXJBZGFwdGVyKGtpbmQsIHRyYW5zcG9ydF9wcm94eSwgdGhp
cykpOwotICBSVENFcnJvciBlcnI7Ci0gIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgY3JpY2tl
dDo6TUVESUFfVFlQRV9BVURJTzoKLSAgICAgIGVyciA9IEF0dGFjaEF1ZGlvU2VuZGVyKG5ld19z
ZW5kZXIuZ2V0KCksIHRyYW5zcG9ydF9wcm94eS0+R2V0SW50ZXJuYWwoKSk7Ci0gICAgICBicmVh
azsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU86Ci0gICAgICBlcnIgPSBBdHRh
Y2hWaWRlb1NlbmRlcihuZXdfc2VuZGVyLmdldCgpLCB0cmFuc3BvcnRfcHJveHktPkdldEludGVy
bmFsKCkpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEE6
Ci0gICAgICBSVENfTk9UUkVBQ0hFRCgpOwotICB9Ci0gIGlmICghZXJyLm9rKCkpIHsKLSAgICBy
ZXR1cm4gc3RkOjptb3ZlKGVycik7Ci0gIH0KLQotICByZXR1cm4gT3J0Y1J0cFNlbmRlckFkYXB0
ZXI6OkNyZWF0ZVByb3h5KHN0ZDo6bW92ZShuZXdfc2VuZGVyKSk7Ci19Ci0KLVJUQ0Vycm9yT3I8
c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckludGVyZmFjZT4+Ci1SdHBUcmFuc3BvcnRD
b250cm9sbGVyQWRhcHRlcjo6Q3JlYXRlUHJveGllZFJ0cFJlY2VpdmVyKAotICAgIGNyaWNrZXQ6
Ok1lZGlhVHlwZSBraW5kLAotICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0X3By
b3h5KSB7Ci0gIFJUQ19EQ0hFQ0sodHJhbnNwb3J0X3Byb3h5KTsKLSAgUlRDX0RDSEVDSyhzdGQ6
OmZpbmQodHJhbnNwb3J0X3Byb3hpZXNfLmJlZ2luKCksIHRyYW5zcG9ydF9wcm94aWVzXy5lbmQo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3Byb3h5KSAhPSB0cmFuc3BvcnRf
cHJveGllc18uZW5kKCkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFJlY2VpdmVyQWRhcHRl
cj4gbmV3X3JlY2VpdmVyKAotICAgICAgbmV3IE9ydGNSdHBSZWNlaXZlckFkYXB0ZXIoa2luZCwg
dHJhbnNwb3J0X3Byb3h5LCB0aGlzKSk7Ci0gIFJUQ0Vycm9yIGVycjsKLSAgc3dpdGNoIChraW5k
KSB7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOgotICAgICAgZXJyID0gQXR0
YWNoQXVkaW9SZWNlaXZlcihuZXdfcmVjZWl2ZXIuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYW5zcG9ydF9wcm94eS0+R2V0SW50ZXJuYWwoKSk7Ci0gICAgICBicmVh
azsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU86Ci0gICAgICBlcnIgPSBBdHRh
Y2hWaWRlb1JlY2VpdmVyKG5ld19yZWNlaXZlci5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhbnNwb3J0X3Byb3h5LT5HZXRJbnRlcm5hbCgpKTsKLSAgICAgIGJyZWFr
OwotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9EQVRBOgotICAgICAgUlRDX05PVFJFQUNI
RUQoKTsKLSAgfQotICBpZiAoIWVyci5vaygpKSB7Ci0gICAgcmV0dXJuIHN0ZDo6bW92ZShlcnIp
OwotICB9Ci0KLSAgcmV0dXJuIE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI6OkNyZWF0ZVByb3h5KHN0
ZDo6bW92ZShuZXdfcmVjZWl2ZXIpKTsKLX0KLQotc3RkOjp2ZWN0b3I8UnRwVHJhbnNwb3J0SW50
ZXJmYWNlKj4KLVJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpHZXRUcmFuc3BvcnRzKCkg
Y29uc3QgewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIHJldHVy
biB0cmFuc3BvcnRfcHJveGllc187Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJBZGFwdGVyOjpTZXRSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzKAotICAgIGNvbnN0IFJ0cFRyYW5z
cG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBp
bm5lcl90cmFuc3BvcnQpIHsKLSAgaWYgKCh2aWRlb19jaGFubmVsXyAhPSBudWxscHRyIHx8IHZv
aWNlX2NoYW5uZWxfICE9IG51bGxwdHIpICYmCi0gICAgICAocGFyYW1ldGVycy5rZWVwYWxpdmUg
IT0ga2VlcGFsaXZlXykpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6
OklOVkFMSURfTU9ESUZJQ0FUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qg
Y2hhbmdlIGtlZXAtYWxpdmUgc2V0dGluZ3MgYWZ0ZXIgY3JlYXRpbmcgIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICJtZWRpYSBzdHJlYW1zIG9yIGFkZGl0aW9uYWwgdHJhbnNwb3J0cyBmb3Ig
dGhlIHNhbWUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc3BvcnQgY29udHJvbGxl
ci4iKTsKLSAgfQotICAvLyBDYWxsIG11c3QgYmUgY29uZmlndXJlZCBvbiB0aGUgd29ya2VyIHRo
cmVhZC4KLSAgd29ya2VyX3RocmVhZF8tPkludm9rZTx2b2lkPigKLSAgICAgIFJUQ19GUk9NX0hF
UkUsCi0gICAgICBydGM6OkJpbmQoJlJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpTZXRS
dHBUcmFuc3BvcnRQYXJhbWV0ZXJzX3csCi0gICAgICAgICAgICAgICAgdGhpcywgcGFyYW1ldGVy
cykpOwotCi0gIGRvIHsKLSAgICBpZiAoaW5uZXJfdHJhbnNwb3J0ID09IGlubmVyX2F1ZGlvX3Ry
YW5zcG9ydF8pIHsKLSAgICAgIENvcHlSdGNwUGFyYW1ldGVyc1RvRGVzY3JpcHRpb25zKHBhcmFt
ZXRlcnMucnRjcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2Nh
bF9hdWRpb19kZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmcmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXyk7Ci0gICAgICBpZiAoIXZvaWNlX2NoYW5u
ZWxfLT5TZXRMb2NhbENvbnRlbnQoJmxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBUeXBlOjprT2ZmZXIsIG51bGxw
dHIpKSB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYgKCF2b2ljZV9jaGFubmVs
Xy0+U2V0UmVtb3RlQ29udGVudCgmcmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a0Fuc3dlciwgbnVs
bHB0cikpIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfSBlbHNlIGlmIChpbm5lcl90
cmFuc3BvcnQgPT0gaW5uZXJfdmlkZW9fdHJhbnNwb3J0XykgewotICAgICAgQ29weVJ0Y3BQYXJh
bWV0ZXJzVG9EZXNjcmlwdGlvbnMocGFyYW1ldGVycy5ydGNwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25f
KTsKLSAgICAgIGlmICghdmlkZW9fY2hhbm5lbF8tPlNldExvY2FsQ29udGVudCgmbG9jYWxfdmlk
ZW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNkcFR5cGU6OmtPZmZlciwgbnVsbHB0cikpIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9
Ci0gICAgICBpZiAoIXZpZGVvX2NoYW5uZWxfLT5TZXRSZW1vdGVDb250ZW50KCZyZW1vdGVfdmlk
ZW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZHBUeXBlOjprQW5zd2VyLCBudWxscHRyKSkgewotICAgICAgICBicmVhazsKLSAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotICB9IHdoaWxlIChmYWxzZSk7
Ci0gIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYXBwbHkgbmV3IFJUQ1AgcGFyYW1ldGVy
cy4iKTsKLX0KLQotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6U2V0UnRwVHJh
bnNwb3J0UGFyYW1ldGVyc193KAotICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpIHsKLSAgY2FsbF9zZW5kX3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPlNldEtl
ZXBBbGl2ZUNvbmZpZyhwYXJhbWV0ZXJzLmtlZXBhbGl2ZSk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpWYWxpZGF0ZUFuZEFwcGx5QXVkaW9TZW5kZXJQYXJh
bWV0ZXJzKAotICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgdWludDMy
X3QqIHByaW1hcnlfc3NyYykgewotICBSVENfRENIRUNLKHZvaWNlX2NoYW5uZWxfKTsKLSAgUlRD
X0RDSEVDSyhoYXZlX2F1ZGlvX3NlbmRlcl8pOwotCi0gIGF1dG8gY29kZWNzX3Jlc3VsdCA9IFRv
Q3JpY2tldENvZGVjczxjcmlja2V0OjpBdWRpb0NvZGVjPihwYXJhbWV0ZXJzLmNvZGVjcyk7Ci0g
IGlmICghY29kZWNzX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJuIGNvZGVjc19yZXN1bHQuTW92
ZUVycm9yKCk7Ci0gIH0KLQotICBhdXRvIGV4dGVuc2lvbnNfcmVzdWx0ID0KLSAgICAgIFRvQ3Jp
Y2tldFJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucyk7Ci0g
IGlmICghZXh0ZW5zaW9uc19yZXN1bHQub2soKSkgewotICAgIHJldHVybiBleHRlbnNpb25zX3Jl
c3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIGF1dG8gc3RyZWFtX3BhcmFtc19yZXN1bHQgPSBN
YWtlU2VuZFN0cmVhbVBhcmFtc1ZlYygKLSAgICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzLCBpbm5l
cl9hdWRpb190cmFuc3BvcnRfLT5HZXRQYXJhbWV0ZXJzKCkucnRjcC5jbmFtZSwKLSAgICAgIGxv
Y2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXyk7Ci0gIGlmICghc3RyZWFtX3BhcmFtc19yZXN1bHQub2so
KSkgewotICAgIHJldHVybiBzdHJlYW1fcGFyYW1zX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQot
Ci0gIC8vIENoZWNrIHRoYXQgYXVkaW8vdmlkZW8gc2VuZGVyIGFyZW4ndCB1c2luZyB0aGUgc2Ft
ZSBJRHMgdG8gcmVmZXIgdG8KLSAgLy8gZGlmZmVyZW50IHRoaW5ncywgaWYgdGhleSBzaGFyZSB0
aGUgc2FtZSB0cmFuc3BvcnQuCi0gIGlmIChpbm5lcl9hdWRpb190cmFuc3BvcnRfID09IGlubmVy
X3ZpZGVvX3RyYW5zcG9ydF8pIHsKLSAgICBSVENFcnJvciBlcnIgPSBDaGVja0ZvcklkQ29uZmxp
Y3RzKAotICAgICAgICBjb2RlY3NfcmVzdWx0LnZhbHVlKCksIGV4dGVuc2lvbnNfcmVzdWx0LnZh
bHVlKCksCi0gICAgICAgIHN0cmVhbV9wYXJhbXNfcmVzdWx0LnZhbHVlKCksIHJlbW90ZV92aWRl
b19kZXNjcmlwdGlvbl8uY29kZWNzKCksCi0gICAgICAgIHJlbW90ZV92aWRlb19kZXNjcmlwdGlv
bl8ucnRwX2hlYWRlcl9leHRlbnNpb25zKCksCi0gICAgICAgIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0
aW9uXy5zdHJlYW1zKCkpOwotICAgIGlmICghZXJyLm9rKCkpIHsKLSAgICAgIHJldHVybiBlcnI7
Ci0gICAgfQotICB9Ci0KLSAgYm9vbCBsb2NhbF9zZW5kID0gZmFsc2U7Ci0gIGludCBiYW5kd2lk
dGggPSBjcmlja2V0OjprQXV0b0JhbmR3aWR0aDsKLSAgaWYgKHBhcmFtZXRlcnMuZW5jb2Rpbmdz
LnNpemUoKSA9PSAxdSkgewotICAgIGlmIChwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5tYXhfYml0
cmF0ZV9icHMpIHsKLSAgICAgIGJhbmR3aWR0aCA9ICpwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5t
YXhfYml0cmF0ZV9icHM7Ci0gICAgfQotICAgIGxvY2FsX3NlbmQgPSBwYXJhbWV0ZXJzLmVuY29k
aW5nc1swXS5hY3RpdmU7Ci0gIH0KLSAgY29uc3QgYm9vbCBsb2NhbF9yZWN2ID0KLSAgICAgIFJ0
cFRyYW5zY2VpdmVyRGlyZWN0aW9uSGFzUmVjdihsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8uZGly
ZWN0aW9uKCkpOwotICBjb25zdCBhdXRvIGxvY2FsX2RpcmVjdGlvbiA9Ci0gICAgICBSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbkZyb21TZW5kUmVjdihsb2NhbF9zZW5kLCBsb2NhbF9yZWN2KTsKLSAg
aWYgKHByaW1hcnlfc3NyYyAmJiAhc3RyZWFtX3BhcmFtc19yZXN1bHQudmFsdWUoKS5lbXB0eSgp
KSB7Ci0gICAgKnByaW1hcnlfc3NyYyA9IHN0cmVhbV9wYXJhbXNfcmVzdWx0LnZhbHVlKClbMF0u
Zmlyc3Rfc3NyYygpOwotICB9Ci0KLSAgLy8gVmFsaWRhdGlvbiBpcyBkb25lLCBzbyB3ZSBjYW4g
YXR0ZW1wdCBhcHBseWluZyB0aGUgZGVzY3JpcHRpb25zLiBTZW50Ci0gIC8vIGNvZGVjcyBhbmQg
aGVhZGVyIGV4dGVuc2lvbnMgZ28gaW4gcmVtb3RlIGRlc2NyaXB0aW9uLCBzdHJlYW1zIGdvIGlu
Ci0gIC8vIGxvY2FsLgotICAvLwotICAvLyBJZiB0aGVyZSBhcmUgbm8gY29kZWNzIG9yIGVuY29k
aW5ncywganVzdCBsZWF2ZSB0aGUgcHJldmlvdXMgc2V0IG9mCi0gIC8vIGNvZGVjcy4gVGhlIG1l
ZGlhIGVuZ2luZSBkb2Vzbid0IGxpa2UgYW4gZW1wdHkgc2V0IG9mIGNvZGVjcy4KLSAgaWYgKGxv
Y2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zdHJlYW1zKCkuZW1wdHkoKSAmJgotICAgICAgcmVtb3Rl
X2F1ZGlvX2Rlc2NyaXB0aW9uXy5jb2RlY3MoKS5lbXB0eSgpKSB7Ci0gIH0gZWxzZSB7Ci0gICAg
cmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zZXRfY29kZWNzKGNvZGVjc19yZXN1bHQuTW92ZVZh
bHVlKCkpOwotICB9Ci0gIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uc2V0X3J0cF9oZWFkZXJf
ZXh0ZW5zaW9ucygKLSAgICAgIGV4dGVuc2lvbnNfcmVzdWx0Lk1vdmVWYWx1ZSgpKTsKLSAgcmVt
b3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zZXRfYmFuZHdpZHRoKGJhbmR3aWR0aCk7Ci0gIGxvY2Fs
X2F1ZGlvX2Rlc2NyaXB0aW9uXy5tdXRhYmxlX3N0cmVhbXMoKSA9IHN0cmVhbV9wYXJhbXNfcmVz
dWx0Lk1vdmVWYWx1ZSgpOwotICAvLyBEaXJlY3Rpb24gc2V0IGJhc2VkIG9uIGVuY29kaW5nICJh
Y3RpdmUiIGZsYWcuCi0gIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zZXRfZGlyZWN0aW9uKGxv
Y2FsX2RpcmVjdGlvbik7Ci0gIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uc2V0X2RpcmVjdGlv
bigKLSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uUmV2ZXJzZWQobG9jYWxfZGlyZWN0aW9u
KSk7Ci0KLSAgLy8gU2V0IHJlbW90ZSBjb250ZW50IGZpcnN0LCB0byBlbnN1cmUgdGhlIHN0cmVh
bSBpcyBjcmVhdGVkIHdpdGggdGhlIGNvcnJlY3QKLSAgLy8gY29kZWMuCi0gIGlmICghdm9pY2Vf
Y2hhbm5lbF8tPlNldFJlbW90ZUNvbnRlbnQoJnJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a09mZmVyLCBu
dWxscHRyKSkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJO
QUxfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhcHBseSByZW1v
dGUgcGFyYW1ldGVycyB0byBtZWRpYSBjaGFubmVsLiIpOwotICB9Ci0gIGlmICghdm9pY2VfY2hh
bm5lbF8tPlNldExvY2FsQ29udGVudCgmbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a0Fuc3dlciwgbnVsbHB0
cikpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVEVSTkFMX0VS
Uk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYXBwbHkgbG9jYWwgcGFy
YW1ldGVycyB0byBtZWRpYSBjaGFubmVsLiIpOwotICB9Ci0gIHJldHVybiBSVENFcnJvcjo6T0so
KTsKLX0KLQotUlRDRXJyb3IgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OlZhbGlkYXRl
QW5kQXBwbHlWaWRlb1NlbmRlclBhcmFtZXRlcnMoCi0gICAgY29uc3QgUnRwUGFyYW1ldGVycyYg
cGFyYW1ldGVycywKLSAgICB1aW50MzJfdCogcHJpbWFyeV9zc3JjKSB7Ci0gIFJUQ19EQ0hFQ0so
dmlkZW9fY2hhbm5lbF8pOwotICBSVENfRENIRUNLKGhhdmVfdmlkZW9fc2VuZGVyXyk7Ci0KLSAg
YXV0byBjb2RlY3NfcmVzdWx0ID0gVG9Dcmlja2V0Q29kZWNzPGNyaWNrZXQ6OlZpZGVvQ29kZWM+
KHBhcmFtZXRlcnMuY29kZWNzKTsKLSAgaWYgKCFjb2RlY3NfcmVzdWx0Lm9rKCkpIHsKLSAgICBy
ZXR1cm4gY29kZWNzX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIGF1dG8gZXh0ZW5zaW9u
c19yZXN1bHQgPQotICAgICAgVG9Dcmlja2V0UnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJhbWV0ZXJz
LmhlYWRlcl9leHRlbnNpb25zKTsKLSAgaWYgKCFleHRlbnNpb25zX3Jlc3VsdC5vaygpKSB7Ci0g
ICAgcmV0dXJuIGV4dGVuc2lvbnNfcmVzdWx0Lk1vdmVFcnJvcigpOwotICB9Ci0KLSAgYXV0byBz
dHJlYW1fcGFyYW1zX3Jlc3VsdCA9IE1ha2VTZW5kU3RyZWFtUGFyYW1zVmVjKAotICAgICAgcGFy
YW1ldGVycy5lbmNvZGluZ3MsIGlubmVyX3ZpZGVvX3RyYW5zcG9ydF8tPkdldFBhcmFtZXRlcnMo
KS5ydGNwLmNuYW1lLAotICAgICAgbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fKTsKLSAgaWYgKCFz
dHJlYW1fcGFyYW1zX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJuIHN0cmVhbV9wYXJhbXNfcmVz
dWx0Lk1vdmVFcnJvcigpOwotICB9Ci0KLSAgLy8gQ2hlY2sgdGhhdCBhdWRpby92aWRlbyBzZW5k
ZXIgYXJlbid0IHVzaW5nIHRoZSBzYW1lIElEcyB0byByZWZlciB0bwotICAvLyBkaWZmZXJlbnQg
dGhpbmdzLCBpZiB0aGV5IHNoYXJlIHRoZSBzYW1lIHRyYW5zcG9ydC4KLSAgaWYgKGlubmVyX2F1
ZGlvX3RyYW5zcG9ydF8gPT0gaW5uZXJfdmlkZW9fdHJhbnNwb3J0XykgewotICAgIFJUQ0Vycm9y
IGVyciA9IENoZWNrRm9ySWRDb25mbGljdHMoCi0gICAgICAgIGNvZGVjc19yZXN1bHQudmFsdWUo
KSwgZXh0ZW5zaW9uc19yZXN1bHQudmFsdWUoKSwKLSAgICAgICAgc3RyZWFtX3BhcmFtc19yZXN1
bHQudmFsdWUoKSwgcmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXy5jb2RlY3MoKSwKLSAgICAgICAg
cmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXy5ydHBfaGVhZGVyX2V4dGVuc2lvbnMoKSwKLSAgICAg
ICAgbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKSk7Ci0gICAgaWYgKCFlcnIub2so
KSkgewotICAgICAgcmV0dXJuIGVycjsKLSAgICB9Ci0gIH0KLQotICBib29sIGxvY2FsX3NlbmQg
PSBmYWxzZTsKLSAgaW50IGJhbmR3aWR0aCA9IGNyaWNrZXQ6OmtBdXRvQmFuZHdpZHRoOwotICBp
ZiAocGFyYW1ldGVycy5lbmNvZGluZ3Muc2l6ZSgpID09IDF1KSB7Ci0gICAgaWYgKHBhcmFtZXRl
cnMuZW5jb2RpbmdzWzBdLm1heF9iaXRyYXRlX2JwcykgewotICAgICAgYmFuZHdpZHRoID0gKnBh
cmFtZXRlcnMuZW5jb2RpbmdzWzBdLm1heF9iaXRyYXRlX2JwczsKLSAgICB9Ci0gICAgbG9jYWxf
c2VuZCA9IHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLmFjdGl2ZTsKLSAgfQotICBjb25zdCBib29s
IGxvY2FsX3JlY3YgPQotICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25IYXNSZWN2KGxvY2Fs
X2F1ZGlvX2Rlc2NyaXB0aW9uXy5kaXJlY3Rpb24oKSk7Ci0gIGNvbnN0IGF1dG8gbG9jYWxfZGly
ZWN0aW9uID0KLSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uRnJvbVNlbmRSZWN2KGxvY2Fs
X3NlbmQsIGxvY2FsX3JlY3YpOwotICBpZiAocHJpbWFyeV9zc3JjICYmICFzdHJlYW1fcGFyYW1z
X3Jlc3VsdC52YWx1ZSgpLmVtcHR5KCkpIHsKLSAgICAqcHJpbWFyeV9zc3JjID0gc3RyZWFtX3Bh
cmFtc19yZXN1bHQudmFsdWUoKVswXS5maXJzdF9zc3JjKCk7Ci0gIH0KLQotICAvLyBWYWxpZGF0
aW9uIGlzIGRvbmUsIHNvIHdlIGNhbiBhdHRlbXB0IGFwcGx5aW5nIHRoZSBkZXNjcmlwdGlvbnMu
IFNlbnQKLSAgLy8gY29kZWNzIGFuZCBoZWFkZXIgZXh0ZW5zaW9ucyBnbyBpbiByZW1vdGUgZGVz
Y3JpcHRpb24sIHN0cmVhbXMgZ28gaW4KLSAgLy8gbG9jYWwuCi0gIC8vCi0gIC8vIElmIHRoZXJl
IGFyZSBubyBjb2RlY3Mgb3IgZW5jb2RpbmdzLCBqdXN0IGxlYXZlIHRoZSBwcmV2aW91cyBzZXQg
b2YKLSAgLy8gY29kZWNzLiBUaGUgbWVkaWEgZW5naW5lIGRvZXNuJ3QgbGlrZSBhbiBlbXB0eSBz
ZXQgb2YgY29kZWNzLgotICBpZiAobG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKS5l
bXB0eSgpICYmCi0gICAgICByZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLmNvZGVjcygpLmVtcHR5
KCkpIHsKLSAgfSBlbHNlIHsKLSAgICByZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLnNldF9jb2Rl
Y3MoY29kZWNzX3Jlc3VsdC5Nb3ZlVmFsdWUoKSk7Ci0gIH0KLSAgcmVtb3RlX3ZpZGVvX2Rlc2Ny
aXB0aW9uXy5zZXRfcnRwX2hlYWRlcl9leHRlbnNpb25zKAotICAgICAgZXh0ZW5zaW9uc19yZXN1
bHQuTW92ZVZhbHVlKCkpOwotICByZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLnNldF9iYW5kd2lk
dGgoYmFuZHdpZHRoKTsKLSAgbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLm11dGFibGVfc3RyZWFt
cygpID0gc3RyZWFtX3BhcmFtc19yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIC8vIERpcmVjdGlvbiBz
ZXQgYmFzZWQgb24gZW5jb2RpbmcgImFjdGl2ZSIgZmxhZy4KLSAgbG9jYWxfdmlkZW9fZGVzY3Jp
cHRpb25fLnNldF9kaXJlY3Rpb24obG9jYWxfZGlyZWN0aW9uKTsKLSAgcmVtb3RlX3ZpZGVvX2Rl
c2NyaXB0aW9uXy5zZXRfZGlyZWN0aW9uKAotICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25S
ZXZlcnNlZChsb2NhbF9kaXJlY3Rpb24pKTsKLQotICAvLyBTZXQgcmVtb3RlIGNvbnRlbnQgZmly
c3QsIHRvIGVuc3VyZSB0aGUgc3RyZWFtIGlzIGNyZWF0ZWQgd2l0aCB0aGUgY29ycmVjdAotICAv
LyBjb2RlYy4KLSAgaWYgKCF2aWRlb19jaGFubmVsXy0+U2V0UmVtb3RlQ29udGVudCgmcmVtb3Rl
X3ZpZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZHBUeXBlOjprT2ZmZXIsIG51bGxwdHIpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJS
T1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAiRmFpbGVkIHRvIGFwcGx5IHJlbW90ZSBwYXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5uZWwuIik7
Ci0gIH0KLSAgaWYgKCF2aWRlb19jaGFubmVsXy0+U2V0TG9jYWxDb250ZW50KCZsb2NhbF92aWRl
b19kZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
ZHBUeXBlOjprQW5zd2VyLCBudWxscHRyKSkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJU
Q0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZh
aWxlZCB0byBhcHBseSBsb2NhbCBwYXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5uZWwuIik7Ci0gIH0K
LSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1SVENFcnJvciBSdHBUcmFuc3BvcnRDb250
cm9sbGVyQWRhcHRlcjo6VmFsaWRhdGVBbmRBcHBseUF1ZGlvUmVjZWl2ZXJQYXJhbWV0ZXJzKAot
ICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIHsKLSAgUlRDX0RDSEVDSyh2b2lj
ZV9jaGFubmVsXyk7Ci0gIFJUQ19EQ0hFQ0soaGF2ZV9hdWRpb19yZWNlaXZlcl8pOwotCi0gIGF1
dG8gY29kZWNzX3Jlc3VsdCA9IFRvQ3JpY2tldENvZGVjczxjcmlja2V0OjpBdWRpb0NvZGVjPihw
YXJhbWV0ZXJzLmNvZGVjcyk7Ci0gIGlmICghY29kZWNzX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0
dXJuIGNvZGVjc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICBhdXRvIGV4dGVuc2lvbnNf
cmVzdWx0ID0KLSAgICAgIFRvQ3JpY2tldFJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1ldGVycy5o
ZWFkZXJfZXh0ZW5zaW9ucyk7Ci0gIGlmICghZXh0ZW5zaW9uc19yZXN1bHQub2soKSkgewotICAg
IHJldHVybiBleHRlbnNpb25zX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIGF1dG8gc3Ry
ZWFtX3BhcmFtc19yZXN1bHQgPSBUb0NyaWNrZXRTdHJlYW1QYXJhbXNWZWMocGFyYW1ldGVycy5l
bmNvZGluZ3MpOwotICBpZiAoIXN0cmVhbV9wYXJhbXNfcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1
cm4gc3RyZWFtX3BhcmFtc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICAvLyBDaGVjayB0
aGF0IGF1ZGlvL3ZpZGVvIHJlY2VpdmUgYXJlbid0IHVzaW5nIHRoZSBzYW1lIElEcyB0byByZWZl
ciB0bwotICAvLyBkaWZmZXJlbnQgdGhpbmdzLCBpZiB0aGV5IHNoYXJlIHRoZSBzYW1lIHRyYW5z
cG9ydC4KLSAgaWYgKGlubmVyX2F1ZGlvX3RyYW5zcG9ydF8gPT0gaW5uZXJfdmlkZW9fdHJhbnNw
b3J0XykgewotICAgIFJUQ0Vycm9yIGVyciA9IENoZWNrRm9ySWRDb25mbGljdHMoCi0gICAgICAg
IGNvZGVjc19yZXN1bHQudmFsdWUoKSwgZXh0ZW5zaW9uc19yZXN1bHQudmFsdWUoKSwKLSAgICAg
ICAgc3RyZWFtX3BhcmFtc19yZXN1bHQudmFsdWUoKSwgbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25f
LmNvZGVjcygpLAotICAgICAgICBsb2NhbF92aWRlb19kZXNjcmlwdGlvbl8ucnRwX2hlYWRlcl9l
eHRlbnNpb25zKCksCi0gICAgICAgIHJlbW90ZV92aWRlb19kZXNjcmlwdGlvbl8uc3RyZWFtcygp
KTsKLSAgICBpZiAoIWVyci5vaygpKSB7Ci0gICAgICByZXR1cm4gZXJyOwotICAgIH0KLSAgfQot
Ci0gIGNvbnN0IGJvb2wgbG9jYWxfc2VuZCA9Ci0gICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlv
bkhhc1NlbmQobG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLmRpcmVjdGlvbigpKTsKLSAgY29uc3Qg
Ym9vbCBsb2NhbF9yZWN2ID0KLSAgICAgICFwYXJhbWV0ZXJzLmVuY29kaW5ncy5lbXB0eSgpICYm
IHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLmFjdGl2ZTsKLSAgY29uc3QgYXV0byBsb2NhbF9kaXJl
Y3Rpb24gPQotICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25Gcm9tU2VuZFJlY3YobG9jYWxf
c2VuZCwgbG9jYWxfcmVjdik7Ci0KLSAgLy8gVmFsaWRhdGlvbiBpcyBkb25lLCBzbyB3ZSBjYW4g
YXR0ZW1wdCBhcHBseWluZyB0aGUgZGVzY3JpcHRpb25zLiBSZWNlaXZlZAotICAvLyBjb2RlY3Mg
YW5kIGhlYWRlciBleHRlbnNpb25zIGdvIGluIGxvY2FsIGRlc2NyaXB0aW9uLCBzdHJlYW1zIGdv
IGluCi0gIC8vIHJlbW90ZS4KLSAgLy8KLSAgLy8gSWYgdGhlcmUgYXJlIG5vIGNvZGVjcyBvciBl
bmNvZGluZ3MsIGp1c3QgbGVhdmUgdGhlIHByZXZpb3VzIHNldCBvZgotICAvLyBjb2RlY3MuIFRo
ZSBtZWRpYSBlbmdpbmUgZG9lc24ndCBsaWtlIGFuIGVtcHR5IHNldCBvZiBjb2RlY3MuCi0gIGlm
IChyZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKS5lbXB0eSgpICYmCi0gICAgICBs
b2NhbF9hdWRpb19kZXNjcmlwdGlvbl8uY29kZWNzKCkuZW1wdHkoKSkgewotICB9IGVsc2Ugewot
ICAgIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zZXRfY29kZWNzKGNvZGVjc19yZXN1bHQuTW92
ZVZhbHVlKCkpOwotICB9Ci0gIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zZXRfcnRwX2hlYWRl
cl9leHRlbnNpb25zKAotICAgICAgZXh0ZW5zaW9uc19yZXN1bHQuTW92ZVZhbHVlKCkpOwotICBy
ZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fLm11dGFibGVfc3RyZWFtcygpID0KLSAgICAgIHN0cmVh
bV9wYXJhbXNfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICAvLyBEaXJlY3Rpb24gc2V0IGJhc2VkIG9u
IGVuY29kaW5nICJhY3RpdmUiIGZsYWcuCi0gIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zZXRf
ZGlyZWN0aW9uKGxvY2FsX2RpcmVjdGlvbik7Ci0gIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8u
c2V0X2RpcmVjdGlvbigKLSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uUmV2ZXJzZWQobG9j
YWxfZGlyZWN0aW9uKSk7Ci0KLSAgaWYgKCF2b2ljZV9jaGFubmVsXy0+U2V0TG9jYWxDb250ZW50
KCZsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTZHBUeXBlOjprT2ZmZXIsIG51bGxwdHIpKSB7Ci0gICAgTE9HX0FORF9SRVRV
Uk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAiRmFpbGVkIHRvIGFwcGx5IGxvY2FsIHBhcmFtZXRlcnMgdG8gbWVkaWEgY2hhbm5l
bC4iKTsKLSAgfQotICBpZiAoIXZvaWNlX2NoYW5uZWxfLT5TZXRSZW1vdGVDb250ZW50KCZyZW1v
dGVfYXVkaW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNkcFR5cGU6OmtBbnN3ZXIsIG51bGxwdHIpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5f
RVJST1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiRmFpbGVkIHRvIGFwcGx5IHJlbW90ZSBwYXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5uZWwu
Iik7Ci0gIH0KLSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1SVENFcnJvciBSdHBUcmFu
c3BvcnRDb250cm9sbGVyQWRhcHRlcjo6VmFsaWRhdGVBbmRBcHBseVZpZGVvUmVjZWl2ZXJQYXJh
bWV0ZXJzKAotICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIHsKLSAgUlRDX0RD
SEVDSyh2aWRlb19jaGFubmVsXyk7Ci0gIFJUQ19EQ0hFQ0soaGF2ZV92aWRlb19yZWNlaXZlcl8p
OwotCi0gIGF1dG8gY29kZWNzX3Jlc3VsdCA9IFRvQ3JpY2tldENvZGVjczxjcmlja2V0OjpWaWRl
b0NvZGVjPihwYXJhbWV0ZXJzLmNvZGVjcyk7Ci0gIGlmICghY29kZWNzX3Jlc3VsdC5vaygpKSB7
Ci0gICAgcmV0dXJuIGNvZGVjc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICBhdXRvIGV4
dGVuc2lvbnNfcmVzdWx0ID0KLSAgICAgIFRvQ3JpY2tldFJ0cEhlYWRlckV4dGVuc2lvbnMocGFy
YW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucyk7Ci0gIGlmICghZXh0ZW5zaW9uc19yZXN1bHQub2so
KSkgewotICAgIHJldHVybiBleHRlbnNpb25zX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0g
IGludCBiYW5kd2lkdGggPSBjcmlja2V0OjprQXV0b0JhbmR3aWR0aDsKLSAgYXV0byBzdHJlYW1f
cGFyYW1zX3Jlc3VsdCA9IFRvQ3JpY2tldFN0cmVhbVBhcmFtc1ZlYyhwYXJhbWV0ZXJzLmVuY29k
aW5ncyk7Ci0gIGlmICghc3RyZWFtX3BhcmFtc19yZXN1bHQub2soKSkgewotICAgIHJldHVybiBz
dHJlYW1fcGFyYW1zX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIC8vIENoZWNrIHRoYXQg
YXVkaW8vdmlkZW8gcmVjZWl2ZXIgYXJlbid0IHVzaW5nIHRoZSBzYW1lIElEcyB0byByZWZlciB0
bwotICAvLyBkaWZmZXJlbnQgdGhpbmdzLCBpZiB0aGV5IHNoYXJlIHRoZSBzYW1lIHRyYW5zcG9y
dC4KLSAgaWYgKGlubmVyX2F1ZGlvX3RyYW5zcG9ydF8gPT0gaW5uZXJfdmlkZW9fdHJhbnNwb3J0
XykgewotICAgIFJUQ0Vycm9yIGVyciA9IENoZWNrRm9ySWRDb25mbGljdHMoCi0gICAgICAgIGNv
ZGVjc19yZXN1bHQudmFsdWUoKSwgZXh0ZW5zaW9uc19yZXN1bHQudmFsdWUoKSwKLSAgICAgICAg
c3RyZWFtX3BhcmFtc19yZXN1bHQudmFsdWUoKSwgbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLmNv
ZGVjcygpLAotICAgICAgICBsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8ucnRwX2hlYWRlcl9leHRl
bnNpb25zKCksCi0gICAgICAgIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uc3RyZWFtcygpKTsK
LSAgICBpZiAoIWVyci5vaygpKSB7Ci0gICAgICByZXR1cm4gZXJyOwotICAgIH0KLSAgfQotCi0g
IGNvbnN0IGJvb2wgbG9jYWxfc2VuZCA9Ci0gICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbkhh
c1NlbmQobG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLmRpcmVjdGlvbigpKTsKLSAgY29uc3QgYm9v
bCBsb2NhbF9yZWN2ID0KLSAgICAgICFwYXJhbWV0ZXJzLmVuY29kaW5ncy5lbXB0eSgpICYmIHBh
cmFtZXRlcnMuZW5jb2RpbmdzWzBdLmFjdGl2ZTsKLSAgY29uc3QgYXV0byBsb2NhbF9kaXJlY3Rp
b24gPQotICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25Gcm9tU2VuZFJlY3YobG9jYWxfc2Vu
ZCwgbG9jYWxfcmVjdik7Ci0KLSAgLy8gVmFsaWRhdGlvbiBpcyBkb25lLCBzbyB3ZSBjYW4gYXR0
ZW1wdCBhcHBseWluZyB0aGUgZGVzY3JpcHRpb25zLiBSZWNlaXZlZAotICAvLyBjb2RlY3MgYW5k
IGhlYWRlciBleHRlbnNpb25zIGdvIGluIGxvY2FsIGRlc2NyaXB0aW9uLCBzdHJlYW1zIGdvIGlu
Ci0gIC8vIHJlbW90ZS4KLSAgLy8KLSAgLy8gSWYgdGhlcmUgYXJlIG5vIGNvZGVjcyBvciBlbmNv
ZGluZ3MsIGp1c3QgbGVhdmUgdGhlIHByZXZpb3VzIHNldCBvZgotICAvLyBjb2RlY3MuIFRoZSBt
ZWRpYSBlbmdpbmUgZG9lc24ndCBsaWtlIGFuIGVtcHR5IHNldCBvZiBjb2RlY3MuCi0gIGlmIChy
ZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKS5lbXB0eSgpICYmCi0gICAgICBsb2Nh
bF92aWRlb19kZXNjcmlwdGlvbl8uY29kZWNzKCkuZW1wdHkoKSkgewotICB9IGVsc2UgewotICAg
IGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zZXRfY29kZWNzKGNvZGVjc19yZXN1bHQuTW92ZVZh
bHVlKCkpOwotICB9Ci0gIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zZXRfcnRwX2hlYWRlcl9l
eHRlbnNpb25zKAotICAgICAgZXh0ZW5zaW9uc19yZXN1bHQuTW92ZVZhbHVlKCkpOwotICBsb2Nh
bF92aWRlb19kZXNjcmlwdGlvbl8uc2V0X2JhbmR3aWR0aChiYW5kd2lkdGgpOwotICByZW1vdGVf
dmlkZW9fZGVzY3JpcHRpb25fLm11dGFibGVfc3RyZWFtcygpID0KLSAgICAgIHN0cmVhbV9wYXJh
bXNfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICAvLyBEaXJlY3Rpb24gc2V0IGJhc2VkIG9uIGVuY29k
aW5nICJhY3RpdmUiIGZsYWcuCi0gIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zZXRfZGlyZWN0
aW9uKGxvY2FsX2RpcmVjdGlvbik7Ci0gIHJlbW90ZV92aWRlb19kZXNjcmlwdGlvbl8uc2V0X2Rp
cmVjdGlvbigKLSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uUmV2ZXJzZWQobG9jYWxfZGly
ZWN0aW9uKSk7Ci0KLSAgaWYgKCF2aWRlb19jaGFubmVsXy0+U2V0TG9jYWxDb250ZW50KCZsb2Nh
bF92aWRlb19kZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZHBUeXBlOjprT2ZmZXIsIG51bGxwdHIpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJS
T1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAiRmFpbGVkIHRvIGFwcGx5IGxvY2FsIHBhcmFtZXRlcnMgdG8gbWVkaWEgY2hhbm5lbC4iKTsK
LSAgfQotICBpZiAoIXZpZGVvX2NoYW5uZWxfLT5TZXRSZW1vdGVDb250ZW50KCZyZW1vdGVfdmlk
ZW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNkcFR5cGU6OmtBbnN3ZXIsIG51bGxwdHIpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1Io
UlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAi
RmFpbGVkIHRvIGFwcGx5IHJlbW90ZSBwYXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5uZWwuIik7Ci0g
IH0KLSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1SdHBUcmFuc3BvcnRDb250cm9sbGVy
QWRhcHRlcjo6UnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIoCi0gICAgY29uc3QgY3JpY2tl
dDo6TWVkaWFDb25maWcmIGNvbmZpZywKLSAgICBjcmlja2V0OjpDaGFubmVsTWFuYWdlciogY2hh
bm5lbF9tYW5hZ2VyLAotICAgIHdlYnJ0Yzo6UnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKLSAgICBy
dGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2VyX3Ro
cmVhZCwKLSAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQpCi0gICAgOiBzaWduYWxpbmdf
dGhyZWFkXyhzaWduYWxpbmdfdGhyZWFkKSwKLSAgICAgIHdvcmtlcl90aHJlYWRfKHdvcmtlcl90
aHJlYWQpLAotICAgICAgbmV0d29ya190aHJlYWRfKG5ldHdvcmtfdGhyZWFkKSwKLSAgICAgIG1l
ZGlhX2NvbmZpZ18oY29uZmlnKSwKLSAgICAgIGNoYW5uZWxfbWFuYWdlcl8oY2hhbm5lbF9tYW5h
Z2VyKSwKLSAgICAgIGV2ZW50X2xvZ18oZXZlbnRfbG9nKSwKLSAgICAgIGNhbGxfc2VuZF9ydHBf
dHJhbnNwb3J0X2NvbnRyb2xsZXJfKG51bGxwdHIpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2ln
bmFsaW5nX3RocmVhZF8pOwotICBSVENfRENIRUNLKGNoYW5uZWxfbWFuYWdlcl8pOwotICAvLyBB
ZGQgImR1bW15IiBjb2RlY3MgdG8gdGhlIGRlc2NyaXB0aW9ucywgYmVjYXVzZSB0aGUgbWVkaWEg
ZW5naW5lcwotICAvLyBjdXJyZW50bHkgcmVqZWN0IGVtcHR5IGxpc3RzIG9mIGNvZGVjcy4gTm90
ZSB0aGF0IHRoZXNlIGNvZGVjcyB3aWxsIG5ldmVyCi0gIC8vIGFjdHVhbGx5IGJlIHVzZWQsIGJl
Y2F1c2Ugd2hlbiBwYXJhbWV0ZXJzIGFyZSBzZXQsIHRoZSBkdW1teSBjb2RlY3Mgd2lsbAotICAv
LyBiZSByZXBsYWNlZCBieSBhY3R1YWwgY29kZWNzIGJlZm9yZSBhbnkgc2VuZC9yZWNlaXZlIHN0
cmVhbXMgYXJlIGNyZWF0ZWQuCi0gIGNvbnN0IGNyaWNrZXQ6OkF1ZGlvQ29kZWMgZHVtbXlfYXVk
aW8oMCwgY3JpY2tldDo6a1BjbXVDb2RlY05hbWUsIDgwMDAsIDAsIDEpOwotICBjb25zdCBjcmlj
a2V0OjpWaWRlb0NvZGVjIGR1bW15X3ZpZGVvKDk2LCBjcmlja2V0OjprVnA4Q29kZWNOYW1lKTsK
LSAgbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLkFkZENvZGVjKGR1bW15X2F1ZGlvKTsKLSAgcmVt
b3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXy5BZGRDb2RlYyhkdW1teV9hdWRpbyk7Ci0gIGxvY2FsX3Zp
ZGVvX2Rlc2NyaXB0aW9uXy5BZGRDb2RlYyhkdW1teV92aWRlbyk7Ci0gIHJlbW90ZV92aWRlb19k
ZXNjcmlwdGlvbl8uQWRkQ29kZWMoZHVtbXlfdmlkZW8pOwotCi0gIHdvcmtlcl90aHJlYWRfLT5J
bnZva2U8dm9pZD4oCi0gICAgICBSVENfRlJPTV9IRVJFLCBydGM6OkJpbmQoJlJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJBZGFwdGVyOjpJbml0X3csIHRoaXMpKTsKLX0KLQotLy8gVE9ETyhuaXNzZSk6
IER1cGxpY2F0ZXMgY29ycmVzcG9uZGluZyBtZXRob2QgaW4gUGVlckNvbm5lY3Rpb24gKHVzZWQK
LS8vIHRvIGJlIGluIE1lZGlhQ29udHJvbGxlcikuCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJBZGFwdGVyOjpJbml0X3coKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF8tPklzQ3Vy
cmVudCgpKTsKLSAgUlRDX0RDSEVDSyghY2FsbF8pOwotCi0gIGNvbnN0IGludCBrTWluQmFuZHdp
ZHRoQnBzID0gMzAwMDA7Ci0gIGNvbnN0IGludCBrU3RhcnRCYW5kd2lkdGhCcHMgPSAzMDAwMDA7
Ci0gIGNvbnN0IGludCBrTWF4QmFuZHdpZHRoQnBzID0gMjAwMDAwMDsKLQotICB3ZWJydGM6OkNh
bGw6OkNvbmZpZyBjYWxsX2NvbmZpZyhldmVudF9sb2dfKTsKLSAgY2FsbF9jb25maWcuYXVkaW9f
c3RhdGUgPSBjaGFubmVsX21hbmFnZXJfLT5tZWRpYV9lbmdpbmUoKS0+R2V0QXVkaW9TdGF0ZSgp
OwotICBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5taW5fYml0cmF0ZV9icHMgPSBrTWluQmFu
ZHdpZHRoQnBzOwotICBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5zdGFydF9iaXRyYXRlX2Jw
cyA9IGtTdGFydEJhbmR3aWR0aEJwczsKLSAgY2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcubWF4
X2JpdHJhdGVfYnBzID0ga01heEJhbmR3aWR0aEJwczsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJTZW5kPiBjb250cm9sbGVyX3NlbmQgPQotICAgICAgYWJzbDo6bWFr
ZV91bmlxdWU8UnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQ+KAotICAgICAgICAgIENsb2NrOjpH
ZXRSZWFsVGltZUNsb2NrKCksIGV2ZW50X2xvZ18sCi0gICAgICAgICAgY2FsbF9jb25maWcubmV0
d29ya19jb250cm9sbGVyX2ZhY3RvcnksIGNhbGxfY29uZmlnLmJpdHJhdGVfY29uZmlnKTsKLSAg
Y2FsbF9zZW5kX3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl8gPSBjb250cm9sbGVyX3NlbmQuZ2V0
KCk7Ci0gIGNhbGxfLnJlc2V0KHdlYnJ0Yzo6Q2FsbDo6Q3JlYXRlKGNhbGxfY29uZmlnLCBzdGQ6
Om1vdmUoY29udHJvbGxlcl9zZW5kKSkpOwotfQotCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJBZGFwdGVyOjpDbG9zZV93KCkgewotICBjYWxsXy5yZXNldCgpOwotICBjYWxsX3NlbmRfcnRw
X3RyYW5zcG9ydF9jb250cm9sbGVyXyA9IG51bGxwdHI7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5z
cG9ydENvbnRyb2xsZXJBZGFwdGVyOjpBdHRhY2hBdWRpb1NlbmRlcigKLSAgICBPcnRjUnRwU2Vu
ZGVyQWRhcHRlciogc2VuZGVyLAotICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJfdHJh
bnNwb3J0KSB7Ci0gIGlmIChoYXZlX2F1ZGlvX3NlbmRlcl8pIHsKLSAgICBMT0dfQU5EX1JFVFVS
Tl9FUlJPUihSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAiVXNpbmcgdHdvIGF1ZGlvIFJ0cFNlbmRlcnMgd2l0aCB0aGUgc2FtZSAi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIlJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVy
IGlzIG5vdCBjdXJyZW50bHkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0ZWQu
Iik7Ci0gIH0KLSAgaWYgKGlubmVyX2F1ZGlvX3RyYW5zcG9ydF8gJiYgaW5uZXJfYXVkaW9fdHJh
bnNwb3J0XyAhPSBpbm5lcl90cmFuc3BvcnQpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihS
VENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiVXNpbmcgZGlmZmVyZW50IHRyYW5zcG9ydHMgZm9yIHRoZSBhdWRpbyAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIlJ0cFNlbmRlciBhbmQgUnRwUmVjZWl2ZXIgaXMgbm90IGN1cnJl
bnRseSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZC4iKTsKLSAgfQotCi0g
IC8vIElmIHNldHRpbmcgbmV3IHRyYW5zcG9ydCwgZXh0cmFjdCBpdHMgUlRDUCBwYXJhbWV0ZXJz
IGFuZCBjcmVhdGUgdm9pY2UKLSAgLy8gY2hhbm5lbC4KLSAgaWYgKCFpbm5lcl9hdWRpb190cmFu
c3BvcnRfKSB7Ci0gICAgQ29weVJ0Y3BQYXJhbWV0ZXJzVG9EZXNjcmlwdGlvbnMoaW5uZXJfdHJh
bnNwb3J0LT5HZXRQYXJhbWV0ZXJzKCkucnRjcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZyZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fKTsKLSAgICBpbm5l
cl9hdWRpb190cmFuc3BvcnRfID0gaW5uZXJfdHJhbnNwb3J0OwotICAgIENyZWF0ZVZvaWNlQ2hh
bm5lbCgpOwotICB9Ci0gIGhhdmVfYXVkaW9fc2VuZGVyXyA9IHRydWU7Ci0gIHNlbmRlci0+U2ln
bmFsRGVzdHJveWVkLmNvbm5lY3QoCi0gICAgICB0aGlzLCAmUnRwVHJhbnNwb3J0Q29udHJvbGxl
ckFkYXB0ZXI6Ok9uQXVkaW9TZW5kZXJEZXN0cm95ZWQpOwotICByZXR1cm4gUlRDRXJyb3I6Ok9L
KCk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpBdHRhY2hW
aWRlb1NlbmRlcigKLSAgICBPcnRjUnRwU2VuZGVyQWRhcHRlciogc2VuZGVyLAotICAgIFJ0cFRy
YW5zcG9ydEludGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0KSB7Ci0gIGlmIChoYXZlX3ZpZGVvX3Nl
bmRlcl8pIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OlVOU1VQUE9S
VEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiVXNpbmcgdHdvIHZpZGVv
IFJ0cFNlbmRlcnMgd2l0aCB0aGUgc2FtZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyIGlzIG5vdCBjdXJyZW50bHkgIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICJzdXBwb3J0ZWQuIik7Ci0gIH0KLSAgaWYgKGlubmVyX3ZpZGVvX3Ry
YW5zcG9ydF8gJiYgaW5uZXJfdmlkZW9fdHJhbnNwb3J0XyAhPSBpbm5lcl90cmFuc3BvcnQpIHsK
LSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJB
VElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiVXNpbmcgZGlmZmVyZW50IHRyYW5zcG9y
dHMgZm9yIHRoZSB2aWRlbyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlJ0cFNlbmRlciBh
bmQgUnRwUmVjZWl2ZXIgaXMgbm90IGN1cnJlbnRseSAiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgInN1cHBvcnRlZC4iKTsKLSAgfQotCi0gIC8vIElmIHNldHRpbmcgbmV3IHRyYW5zcG9ydCwg
ZXh0cmFjdCBpdHMgUlRDUCBwYXJhbWV0ZXJzIGFuZCBjcmVhdGUgdmlkZW8KLSAgLy8gY2hhbm5l
bC4KLSAgaWYgKCFpbm5lcl92aWRlb190cmFuc3BvcnRfKSB7Ci0gICAgQ29weVJ0Y3BQYXJhbWV0
ZXJzVG9EZXNjcmlwdGlvbnMoaW5uZXJfdHJhbnNwb3J0LT5HZXRQYXJhbWV0ZXJzKCkucnRjcCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxfdmlkZW9fZGVzY3Jp
cHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZW1vdGVfdmlk
ZW9fZGVzY3JpcHRpb25fKTsKLSAgICBpbm5lcl92aWRlb190cmFuc3BvcnRfID0gaW5uZXJfdHJh
bnNwb3J0OwotICAgIENyZWF0ZVZpZGVvQ2hhbm5lbCgpOwotICB9Ci0gIGhhdmVfdmlkZW9fc2Vu
ZGVyXyA9IHRydWU7Ci0gIHNlbmRlci0+U2lnbmFsRGVzdHJveWVkLmNvbm5lY3QoCi0gICAgICB0
aGlzLCAmUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6Ok9uVmlkZW9TZW5kZXJEZXN0cm95
ZWQpOwotICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJBZGFwdGVyOjpBdHRhY2hBdWRpb1JlY2VpdmVyKAotICAgIE9ydGNSdHBSZWNl
aXZlckFkYXB0ZXIqIHJlY2VpdmVyLAotICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJf
dHJhbnNwb3J0KSB7Ci0gIGlmIChoYXZlX2F1ZGlvX3JlY2VpdmVyXykgewotICAgIExPR19BTkRf
UkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICJVc2luZyB0d28gYXVkaW8gUnRwUmVjZWl2ZXJzIHdpdGggdGhl
IHNhbWUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJSdHBUcmFuc3BvcnRDb250cm9sbGVy
QWRhcHRlciBpcyBub3QgY3VycmVudGx5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAic3Vw
cG9ydGVkLiIpOwotICB9Ci0gIGlmIChpbm5lcl9hdWRpb190cmFuc3BvcnRfICYmIGlubmVyX2F1
ZGlvX3RyYW5zcG9ydF8gIT0gaW5uZXJfdHJhbnNwb3J0KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5f
RVJST1IoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIlVzaW5nIGRpZmZlcmVudCB0cmFuc3BvcnRzIGZvciB0aGUgYXVkaW8gIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICJSdHBSZWNlaXZlciBhbmQgUnRwUmVjZWl2ZXIgaXMg
bm90IGN1cnJlbnRseSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZC4iKTsK
LSAgfQotCi0gIC8vIElmIHNldHRpbmcgbmV3IHRyYW5zcG9ydCwgZXh0cmFjdCBpdHMgUlRDUCBw
YXJhbWV0ZXJzIGFuZCBjcmVhdGUgdm9pY2UKLSAgLy8gY2hhbm5lbC4KLSAgaWYgKCFpbm5lcl9h
dWRpb190cmFuc3BvcnRfKSB7Ci0gICAgQ29weVJ0Y3BQYXJhbWV0ZXJzVG9EZXNjcmlwdGlvbnMo
aW5uZXJfdHJhbnNwb3J0LT5HZXRQYXJhbWV0ZXJzKCkucnRjcCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fKTsK
LSAgICBpbm5lcl9hdWRpb190cmFuc3BvcnRfID0gaW5uZXJfdHJhbnNwb3J0OwotICAgIENyZWF0
ZVZvaWNlQ2hhbm5lbCgpOwotICB9Ci0gIGhhdmVfYXVkaW9fcmVjZWl2ZXJfID0gdHJ1ZTsKLSAg
cmVjZWl2ZXItPlNpZ25hbERlc3Ryb3llZC5jb25uZWN0KAotICAgICAgdGhpcywgJlJ0cFRyYW5z
cG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPbkF1ZGlvUmVjZWl2ZXJEZXN0cm95ZWQpOwotICByZXR1
cm4gUlRDRXJyb3I6Ok9LKCk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJB
ZGFwdGVyOjpBdHRhY2hWaWRlb1JlY2VpdmVyKAotICAgIE9ydGNSdHBSZWNlaXZlckFkYXB0ZXIq
IHJlY2VpdmVyLAotICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0KSB7
Ci0gIGlmIChoYXZlX3ZpZGVvX3JlY2VpdmVyXykgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9S
KFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICJVc2luZyB0d28gdmlkZW8gUnRwUmVjZWl2ZXJzIHdpdGggdGhlIHNhbWUgIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICJSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciBpcyBu
b3QgY3VycmVudGx5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydGVkLiIpOwot
ICB9Ci0gIGlmIChpbm5lcl92aWRlb190cmFuc3BvcnRfICYmIGlubmVyX3ZpZGVvX3RyYW5zcG9y
dF8gIT0gaW5uZXJfdHJhbnNwb3J0KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJy
b3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IlVzaW5nIGRpZmZlcmVudCB0cmFuc3BvcnRzIGZvciB0aGUgdmlkZW8gIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICJSdHBSZWNlaXZlciBhbmQgUnRwUmVjZWl2ZXIgaXMgbm90IGN1cnJlbnRs
eSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZC4iKTsKLSAgfQotICAvLyBJ
ZiBzZXR0aW5nIG5ldyB0cmFuc3BvcnQsIGV4dHJhY3QgaXRzIFJUQ1AgcGFyYW1ldGVycyBhbmQg
Y3JlYXRlIHZpZGVvCi0gIC8vIGNoYW5uZWwuCi0gIGlmICghaW5uZXJfdmlkZW9fdHJhbnNwb3J0
XykgewotICAgIENvcHlSdGNwUGFyYW1ldGVyc1RvRGVzY3JpcHRpb25zKGlubmVyX3RyYW5zcG9y
dC0+R2V0UGFyYW1ldGVycygpLnJ0Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXyk7Ci0gICAgaW5uZXJfdmlk
ZW9fdHJhbnNwb3J0XyA9IGlubmVyX3RyYW5zcG9ydDsKLSAgICBDcmVhdGVWaWRlb0NoYW5uZWwo
KTsKLSAgfQotICBoYXZlX3ZpZGVvX3JlY2VpdmVyXyA9IHRydWU7Ci0gIHJlY2VpdmVyLT5TaWdu
YWxEZXN0cm95ZWQuY29ubmVjdCgKLSAgICAgIHRoaXMsICZSdHBUcmFuc3BvcnRDb250cm9sbGVy
QWRhcHRlcjo6T25WaWRlb1JlY2VpdmVyRGVzdHJveWVkKTsKLSAgcmV0dXJuIFJUQ0Vycm9yOjpP
SygpOwotfQotCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPblJ0cFRyYW5z
cG9ydERlc3Ryb3llZCgKLSAgICBSdHBUcmFuc3BvcnRBZGFwdGVyKiB0cmFuc3BvcnQpIHsKLSAg
UlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBhdXRvIGl0ID0gc3RkOjpm
aW5kX2lmKHRyYW5zcG9ydF9wcm94aWVzXy5iZWdpbigpLCB0cmFuc3BvcnRfcHJveGllc18uZW5k
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zcG9ydF0oUnRwVHJhbnNwb3J0SW50
ZXJmYWNlKiBwcm94eSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3h5
LT5HZXRJbnRlcm5hbCgpID09IHRyYW5zcG9ydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9
KTsKLSAgaWYgKGl0ID09IHRyYW5zcG9ydF9wcm94aWVzXy5lbmQoKSkgewotICAgIFJUQ19OT1RS
RUFDSEVEKCk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIHRyYW5zcG9ydF9wcm94aWVzXy5lcmFzZShp
dCk7Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6Ok9uQXVkaW9TZW5k
ZXJEZXN0cm95ZWQoKSB7Ci0gIGlmICghaGF2ZV9hdWRpb19zZW5kZXJfKSB7Ci0gICAgUlRDX05P
VFJFQUNIRUQoKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy8gRW1wdHkgcGFyYW1ldGVycyBzaG91
bGQgcmVzdWx0IGluIHNlbmRpbmcgYmVpbmcgc3RvcHBlZC4KLSAgUlRDRXJyb3IgZXJyID0KLSAg
ICAgIFZhbGlkYXRlQW5kQXBwbHlBdWRpb1NlbmRlclBhcmFtZXRlcnMoUnRwUGFyYW1ldGVycygp
LCBudWxscHRyKTsKLSAgUlRDX0RDSEVDSyhlcnIub2soKSk7Ci0gIGhhdmVfYXVkaW9fc2VuZGVy
XyA9IGZhbHNlOwotICBpZiAoIWhhdmVfYXVkaW9fcmVjZWl2ZXJfKSB7Ci0gICAgRGVzdHJveVZv
aWNlQ2hhbm5lbCgpOwotICB9Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0
ZXI6Ok9uVmlkZW9TZW5kZXJEZXN0cm95ZWQoKSB7Ci0gIGlmICghaGF2ZV92aWRlb19zZW5kZXJf
KSB7Ci0gICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy8gRW1wdHkg
cGFyYW1ldGVycyBzaG91bGQgcmVzdWx0IGluIHNlbmRpbmcgYmVpbmcgc3RvcHBlZC4KLSAgUlRD
RXJyb3IgZXJyID0KLSAgICAgIFZhbGlkYXRlQW5kQXBwbHlWaWRlb1NlbmRlclBhcmFtZXRlcnMo
UnRwUGFyYW1ldGVycygpLCBudWxscHRyKTsKLSAgUlRDX0RDSEVDSyhlcnIub2soKSk7Ci0gIGhh
dmVfdmlkZW9fc2VuZGVyXyA9IGZhbHNlOwotICBpZiAoIWhhdmVfdmlkZW9fcmVjZWl2ZXJfKSB7
Ci0gICAgRGVzdHJveVZpZGVvQ2hhbm5lbCgpOwotICB9Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0
Q29udHJvbGxlckFkYXB0ZXI6Ok9uQXVkaW9SZWNlaXZlckRlc3Ryb3llZCgpIHsKLSAgaWYgKCFo
YXZlX2F1ZGlvX3JlY2VpdmVyXykgewotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgcmV0dXJu
OwotICB9Ci0gIC8vIEVtcHR5IHBhcmFtZXRlcnMgc2hvdWxkIHJlc3VsdCBpbiByZWNlaXZpbmcg
YmVpbmcgc3RvcHBlZC4KLSAgUlRDRXJyb3IgZXJyID0gVmFsaWRhdGVBbmRBcHBseUF1ZGlvUmVj
ZWl2ZXJQYXJhbWV0ZXJzKFJ0cFBhcmFtZXRlcnMoKSk7Ci0gIFJUQ19EQ0hFQ0soZXJyLm9rKCkp
OwotICBoYXZlX2F1ZGlvX3JlY2VpdmVyXyA9IGZhbHNlOwotICBpZiAoIWhhdmVfYXVkaW9fc2Vu
ZGVyXykgewotICAgIERlc3Ryb3lWb2ljZUNoYW5uZWwoKTsKLSAgfQotfQotCi12b2lkIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPblZpZGVvUmVjZWl2ZXJEZXN0cm95ZWQoKSB7Ci0g
IGlmICghaGF2ZV92aWRlb19yZWNlaXZlcl8pIHsKLSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICAg
IHJldHVybjsKLSAgfQotICAvLyBFbXB0eSBwYXJhbWV0ZXJzIHNob3VsZCByZXN1bHQgaW4gcmVj
ZWl2aW5nIGJlaW5nIHN0b3BwZWQuCi0gIFJUQ0Vycm9yIGVyciA9IFZhbGlkYXRlQW5kQXBwbHlW
aWRlb1JlY2VpdmVyUGFyYW1ldGVycyhSdHBQYXJhbWV0ZXJzKCkpOwotICBSVENfRENIRUNLKGVy
ci5vaygpKTsKLSAgaGF2ZV92aWRlb19yZWNlaXZlcl8gPSBmYWxzZTsKLSAgaWYgKCFoYXZlX3Zp
ZGVvX3NlbmRlcl8pIHsKLSAgICBEZXN0cm95VmlkZW9DaGFubmVsKCk7Ci0gIH0KLX0KLQotdm9p
ZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q3JlYXRlVm9pY2VDaGFubmVsKCkgewot
ICB2b2ljZV9jaGFubmVsXyA9IGNoYW5uZWxfbWFuYWdlcl8tPkNyZWF0ZVZvaWNlQ2hhbm5lbCgK
LSAgICAgIGNhbGxfLmdldCgpLCBtZWRpYV9jb25maWdfLCBpbm5lcl9hdWRpb190cmFuc3BvcnRf
LT5HZXRJbnRlcm5hbCgpLAotICAgICAgc2lnbmFsaW5nX3RocmVhZF8sICJhdWRpbyIsIGZhbHNl
LCBydGM6OkNyeXB0b09wdGlvbnMoKSwKLSAgICAgIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKTsK
LSAgUlRDX0RDSEVDSyh2b2ljZV9jaGFubmVsXyk7Ci0gIHZvaWNlX2NoYW5uZWxfLT5FbmFibGUo
dHJ1ZSk7Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNyZWF0ZVZp
ZGVvQ2hhbm5lbCgpIHsKLSAgdmlkZW9fY2hhbm5lbF8gPSBjaGFubmVsX21hbmFnZXJfLT5DcmVh
dGVWaWRlb0NoYW5uZWwoCi0gICAgICBjYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnXywgaW5uZXJf
dmlkZW9fdHJhbnNwb3J0Xy0+R2V0SW50ZXJuYWwoKSwKLSAgICAgIHNpZ25hbGluZ190aHJlYWRf
LCAidmlkZW8iLCBmYWxzZSwgcnRjOjpDcnlwdG9PcHRpb25zKCksCi0gICAgICBjcmlja2V0OjpW
aWRlb09wdGlvbnMoKSk7Ci0gIFJUQ19EQ0hFQ0sodmlkZW9fY2hhbm5lbF8pOwotICB2aWRlb19j
aGFubmVsXy0+RW5hYmxlKHRydWUpOwotfQotCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJB
ZGFwdGVyOjpEZXN0cm95Vm9pY2VDaGFubmVsKCkgewotICBSVENfRENIRUNLKHZvaWNlX2NoYW5u
ZWxfKTsKLSAgY2hhbm5lbF9tYW5hZ2VyXy0+RGVzdHJveVZvaWNlQ2hhbm5lbCh2b2ljZV9jaGFu
bmVsXyk7Ci0gIHZvaWNlX2NoYW5uZWxfID0gbnVsbHB0cjsKLSAgaW5uZXJfYXVkaW9fdHJhbnNw
b3J0XyA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6
OkRlc3Ryb3lWaWRlb0NoYW5uZWwoKSB7Ci0gIFJUQ19EQ0hFQ0sodmlkZW9fY2hhbm5lbF8pOwot
ICBjaGFubmVsX21hbmFnZXJfLT5EZXN0cm95VmlkZW9DaGFubmVsKHZpZGVvX2NoYW5uZWxfKTsK
LSAgdmlkZW9fY2hhbm5lbF8gPSBudWxscHRyOwotICBpbm5lcl92aWRlb190cmFuc3BvcnRfID0g
bnVsbHB0cjsKLX0KLQotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q29weVJ0
Y3BQYXJhbWV0ZXJzVG9EZXNjcmlwdGlvbnMoCi0gICAgY29uc3QgUnRjcFBhcmFtZXRlcnMmIHBh
cmFtcywKLSAgICBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogbG9jYWwsCi0gICAg
Y3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qIHJlbW90ZSkgewotICBsb2NhbC0+c2V0
X3J0Y3BfbXV4KHBhcmFtcy5tdXgpOwotICByZW1vdGUtPnNldF9ydGNwX211eChwYXJhbXMubXV4
KTsKLSAgbG9jYWwtPnNldF9ydGNwX3JlZHVjZWRfc2l6ZShwYXJhbXMucmVkdWNlZF9zaXplKTsK
LSAgcmVtb3RlLT5zZXRfcnRjcF9yZWR1Y2VkX3NpemUocGFyYW1zLnJlZHVjZWRfc2l6ZSk7Ci0g
IGZvciAoY3JpY2tldDo6U3RyZWFtUGFyYW1zJiBzdHJlYW1fcGFyYW1zIDogbG9jYWwtPm11dGFi
bGVfc3RyZWFtcygpKSB7Ci0gICAgc3RyZWFtX3BhcmFtcy5jbmFtZSA9IHBhcmFtcy5jbmFtZTsK
LSAgfQotfQotCi11aW50MzJfdCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6R2VuZXJh
dGVVbnVzZWRTc3JjKAotICAgIHN0ZDo6c2V0PHVpbnQzMl90PiogbmV3X3NzcmNzKSBjb25zdCB7
Ci0gIHVpbnQzMl90IHNzcmM7Ci0gIGRvIHsKLSAgICBzc3JjID0gcnRjOjpDcmVhdGVSYW5kb21O
b25aZXJvSWQoKTsKLSAgfSB3aGlsZSAoCi0gICAgICBjcmlja2V0OjpHZXRTdHJlYW1CeVNzcmMo
bG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKSwgc3NyYykgfHwKLSAgICAgIGNyaWNr
ZXQ6OkdldFN0cmVhbUJ5U3NyYyhyZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKSwg
c3NyYykgfHwKLSAgICAgIGNyaWNrZXQ6OkdldFN0cmVhbUJ5U3NyYyhsb2NhbF92aWRlb19kZXNj
cmlwdGlvbl8uc3RyZWFtcygpLCBzc3JjKSB8fAotICAgICAgY3JpY2tldDo6R2V0U3RyZWFtQnlT
c3JjKHJlbW90ZV92aWRlb19kZXNjcmlwdGlvbl8uc3RyZWFtcygpLCBzc3JjKSB8fAotICAgICAg
IW5ld19zc3Jjcy0+aW5zZXJ0KHNzcmMpLnNlY29uZCk7Ci0gIHJldHVybiBzc3JjOwotfQotCi1S
VENFcnJvck9yPGNyaWNrZXQ6OlN0cmVhbVBhcmFtc1ZlYz4KLVJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJBZGFwdGVyOjpNYWtlU2VuZFN0cmVhbVBhcmFtc1ZlYygKLSAgICBzdGQ6OnZlY3RvcjxSdHBF
bmNvZGluZ1BhcmFtZXRlcnM+IGVuY29kaW5ncywKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgY25h
bWUsCi0gICAgY29uc3QgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uKSBjb25zdCB7Ci0gIGlmIChlbmNvZGluZ3Muc2l6ZSgpID4gMXUpIHsKLSAgICBMT0dfQU5E
X1JFVFVSTl9FUlJPUih3ZWJydGM6OlJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfUEFSQU1FVEVS
LAotICAgICAgICAgICAgICAgICAgICAgICAgICJPUlRDIEFQSSBpbXBsZW1lbnRhdGlvbiBkb2Vz
bid0IGN1cnJlbnRseSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnQgc2ltdWxj
YXN0IG9yIGxheWVyZWQgZW5jb2RpbmdzLiIpOwotICB9IGVsc2UgaWYgKGVuY29kaW5ncy5lbXB0
eSgpKSB7Ci0gICAgcmV0dXJuIGNyaWNrZXQ6OlN0cmVhbVBhcmFtc1ZlYygpOwotICB9Ci0gIFJ0
cEVuY29kaW5nUGFyYW1ldGVycyYgZW5jb2RpbmcgPSBlbmNvZGluZ3NbMF07Ci0gIHN0ZDo6c2V0
PHVpbnQzMl90PiBuZXdfc3NyY3M7Ci0gIGlmIChlbmNvZGluZy5zc3JjKSB7Ci0gICAgbmV3X3Nz
cmNzLmluc2VydCgqZW5jb2Rpbmcuc3NyYyk7Ci0gIH0KLSAgaWYgKGVuY29kaW5nLnJ0eCAmJiBl
bmNvZGluZy5ydHgtPnNzcmMpIHsKLSAgICBuZXdfc3NyY3MuaW5zZXJ0KCplbmNvZGluZy5ydHgt
PnNzcmMpOwotICB9Ci0gIC8vIE1heSBuZWVkIHRvIGZpbGwgbWlzc2luZyBTU1JDcyB3aXRoIGdl
bmVyYXRlZCBvbmVzLgotICBpZiAoIWVuY29kaW5nLnNzcmMpIHsKLSAgICBpZiAoIWRlc2NyaXB0
aW9uLnN0cmVhbXMoKS5lbXB0eSgpKSB7Ci0gICAgICBlbmNvZGluZy5zc3JjLmVtcGxhY2UoZGVz
Y3JpcHRpb24uc3RyZWFtcygpWzBdLmZpcnN0X3NzcmMoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
IGVuY29kaW5nLnNzcmMuZW1wbGFjZShHZW5lcmF0ZVVudXNlZFNzcmMoJm5ld19zc3JjcykpOwot
ICAgIH0KLSAgfQotICBpZiAoZW5jb2RpbmcucnR4ICYmICFlbmNvZGluZy5ydHgtPnNzcmMpIHsK
LSAgICB1aW50MzJfdCBleGlzdGluZ19ydHhfc3NyYzsKLSAgICBpZiAoIWRlc2NyaXB0aW9uLnN0
cmVhbXMoKS5lbXB0eSgpICYmCi0gICAgICAgIGRlc2NyaXB0aW9uLnN0cmVhbXMoKVswXS5HZXRG
aWRTc3JjKAotICAgICAgICAgICAgZGVzY3JpcHRpb24uc3RyZWFtcygpWzBdLmZpcnN0X3NzcmMo
KSwgJmV4aXN0aW5nX3J0eF9zc3JjKSkgewotICAgICAgZW5jb2RpbmcucnR4LT5zc3JjLmVtcGxh
Y2UoZXhpc3RpbmdfcnR4X3NzcmMpOwotICAgIH0gZWxzZSB7Ci0gICAgICBlbmNvZGluZy5ydHgt
PnNzcmMuZW1wbGFjZShHZW5lcmF0ZVVudXNlZFNzcmMoJm5ld19zc3JjcykpOwotICAgIH0KLSAg
fQotCi0gIGF1dG8gcmVzdWx0ID0gVG9Dcmlja2V0U3RyZWFtUGFyYW1zVmVjKGVuY29kaW5ncyk7
Ci0gIGlmICghcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gcmVzdWx0Lk1vdmVFcnJvcigpOwot
ICB9Ci0gIC8vIElmIGNvbnZlcnNpb24gd2FzIHN1Y2Nlc3NmdWwsIHRoZXJlIHNob3VsZCBiZSBv
bmUgU3RyZWFtUGFyYW1zLgotICBSVENfRENIRUNLX0VRKDF1LCByZXN1bHQudmFsdWUoKS5zaXpl
KCkpOwotICByZXN1bHQudmFsdWUoKVswXS5jbmFtZSA9IGNuYW1lOwotICByZXR1cm4gcmVzdWx0
OwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJh
ZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRj
L3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDE0YzU3OGFhNDZmNWNhYWJiNzcwZDIzNDBkZTdkNDRjNTljYWI1YmIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjIxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIw
MTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0K
LSNpZm5kZWYgT1JUQ19SVFBUUkFOU1BPUlRDT05UUk9MTEVSQURBUFRFUl9IXwotI2RlZmluZSBP
UlRDX1JUUFRSQU5TUE9SVENPTlRST0xMRVJBREFQVEVSX0hfCi0KLSNpbmNsdWRlIDxtZW1vcnk+
Ci0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0K
LSNpbmNsdWRlICJhcGkvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKLSNpbmNsdWRl
ICJhcGkvb3J0Yy9vcnRjcnRwc2VuZGVyaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMv
cnRwdHJhbnNwb3J0Y29udHJvbGxlcmludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9vcnRjL3Ny
dHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJjYWxsL2NhbGwuaCIKLSNpbmNsdWRl
ICJjYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kLmgiCi0jaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL21l
ZGlhY2hhbm5lbC5oIiAgLy8gRm9yIE1lZGlhQ29uZmlnLgotI2luY2x1ZGUgInBjL2NoYW5uZWxt
YW5hZ2VyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL3RocmVhZC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotY2xhc3MgUnRwVHJhbnNw
b3J0QWRhcHRlcjsKLWNsYXNzIE9ydGNSdHBTZW5kZXJBZGFwdGVyOwotY2xhc3MgT3J0Y1J0cFJl
Y2VpdmVyQWRhcHRlcjsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgUnRwVHJhbnNwb3J0Q29udHJv
bGxlckludGVyZmFjZS4gV3JhcHMgYSBDYWxsLAotLy8gYSBWb2ljZUNoYW5uZWwgYW5kIFZpZGVv
Q2hhbm5lbCwgYW5kIG1haW50YWlucyBhIGxpc3Qgb2YgZGVwZW5kZW50IFJUUAotLy8gdHJhbnNw
b3J0cy4KLS8vCi0vLyBXaGVuIHVzZWQgYWxvbmcgd2l0aCBhbiBSdHBTZW5kZXJBZGFwdGVyIG9y
IFJ0cFJlY2VpdmVyQWRhcHRlciwgdGhlCi0vLyBzZW5kZXIvcmVjZWl2ZXIgcGFzc2VzIGl0cyBw
YXJhbWV0ZXJzIGFsb25nIHRvIHRoaXMgY2xhc3MsIHdoaWNoIHR1cm5zIHRoZW0KLS8vIGludG8g
Y3JpY2tldDo6IG1lZGlhIGRlc2NyaXB0aW9ucyAodGhlIGludGVyZmFjZSB1c2VkIGJ5IEJhc2VD
aGFubmVsKS4KLS8vCi0vLyBEdWUgdG8gdGhlIGZhY3QgdGhhdCBCYXNlQ2hhbm5lbCBoYXMgZGlm
ZmVyZW50IHN1YmNsYXNzZXMgZm9yIGF1ZGlvL3ZpZGVvLAotLy8gdGhlIGFjdHVhbCBCYXNlQ2hh
bm5lbCBvYmplY3QgaXMgbm90IGNyZWF0ZWQgdW50aWwgYW4gUnRwU2VuZGVyL1J0cFJlY2VpdmVy
Ci0vLyBuZWVkcyB0aGVtLgotLy8KLS8vIEFsbCBtZXRob2RzIHNob3VsZCBiZSBjYWxsZWQgb24g
dGhlIHNpZ25hbGluZyB0aHJlYWQuCi0vLwotLy8gVE9ETyhkZWFkYmVlZik6IFdoZW4gQmFzZUNo
YW5uZWwgaXMgc3BsaXQgYXBhcnQgaW50byBzZXBhcmF0ZQotLy8gIlJ0cFNlbmRlciIvIlJ0cFRy
YW5zY2VpdmVyIi8iUnRwU2VuZGVyIi8iUnRwUmVjZWl2ZXIiIG9iamVjdHMsIHRoaXMgYWRhcHRl
cgotLy8gb2JqZWN0IGNhbiBiZSByZXBsYWNlZCBieSBhICJyZWFsIiBvbmUuCi1jbGFzcyBSdHBU
cmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciA6IHB1YmxpYyBSdHBUcmFuc3BvcnRDb250cm9sbGVy
SW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
c2lnc2xvdDo6aGFzX3Nsb3RzPD4gewotIHB1YmxpYzoKLSAgLy8gQ3JlYXRlcyBhIHByb3h5IHRo
YXQgd2lsbCBjYWxsICJwdWJsaWMgaW50ZXJmYWNlIiBtZXRob2RzIG9uIHRoZSBjb3JyZWN0Ci0g
IC8vIHRocmVhZC4KLSAgLy8KLSAgLy8gRG9lc24ndCB0YWtlIG93bmVyc2hpcCBvZiBhbnkgb2Jq
ZWN0cyBwYXNzZWQgaW4uCi0gIC8vCi0gIC8vIHxjaGFubmVsX21hbmFnZXJ8IG11c3Qgbm90IGJl
IG51bGwuCi0gIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlcklu
dGVyZmFjZT4gQ3JlYXRlUHJveGllZCgKLSAgICAgIGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29uZmln
JiBjb25maWcsCi0gICAgICBjcmlja2V0OjpDaGFubmVsTWFuYWdlciogY2hhbm5lbF9tYW5hZ2Vy
LAotICAgICAgd2VicnRjOjpSdGNFdmVudExvZyogZXZlbnRfbG9nLAotICAgICAgcnRjOjpUaHJl
YWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwK
LSAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCk7Ci0KLSAgflJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJBZGFwdGVyKCkgb3ZlcnJpZGU7Ci0KLSAgLy8gUnRwVHJhbnNwb3J0Q29udHJvbGxl
ckludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4KLSAgc3RkOjp2ZWN0b3I8UnRwVHJhbnNwb3J0SW50
ZXJmYWNlKj4gR2V0VHJhbnNwb3J0cygpIGNvbnN0IG92ZXJyaWRlOwotCi0gIC8vIFRoZXNlIG1l
dGhvZHMgYXJlIHVzZWQgYnkgT3J0Y0ZhY3RvcnkgdG8gY3JlYXRlIFJ0cFRyYW5zcG9ydHMsIFJ0
cFNlbmRlcnMKLSAgLy8gYW5kIFJ0cFJlY2VpdmVycyB1c2luZyB0aGlzIGNvbnRyb2xsZXIuIENh
bGxlZCAiQ3JlYXRlUHJveGllZCIgYmVjYXVzZQotICAvLyB0aGVzZSBtZXRob2RzIHJldHVybiBw
cm94aWVzIHRoYXQgd2lsbCBzYWZlbHkgY2FsbCBtZXRob2RzIG9uIHRoZSBjb3JyZWN0Ci0gIC8v
IHRocmVhZC4KLSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJm
YWNlPj4gQ3JlYXRlUHJveGllZFJ0cFRyYW5zcG9ydCgKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9y
dFBhcmFtZXRlcnMmIHJ0Y3BfcGFyYW1ldGVycywKLSAgICAgIFBhY2tldFRyYW5zcG9ydEludGVy
ZmFjZSogcnRwLAotICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydGNwKTsKLQotICBS
VENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4KLSAgQ3Jl
YXRlUHJveGllZFNydHBUcmFuc3BvcnQoY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcnRj
cF9wYXJhbWV0ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrZXRUcmFuc3Bv
cnRJbnRlcmZhY2UqIHJ0cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0VHJh
bnNwb3J0SW50ZXJmYWNlKiBydGNwKTsKLQotICAvLyB8dHJhbnNwb3J0X3Byb3h5fCBuZWVkcyB0
byBiZSBhIHByb3h5IHRvIGEgdHJhbnNwb3J0IGJlY2F1c2UgdGhlCi0gIC8vIGFwcGxpY2F0aW9u
IG1heSBjYWxsIEdldFRyYW5zcG9ydCgpIG9uIHRoZSByZXR1cm5lZCBzZW5kZXIgb3IgcmVjZWl2
ZXIsCi0gIC8vIGFuZCBleHBlY3RzIGl0IHRvIHJldHVybiBhIHRocmVhZC1zYWZlIHRyYW5zcG9y
dCBwcm94eS4KLSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVy
ZmFjZT4+IENyZWF0ZVByb3hpZWRSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNZWRpYVR5cGUg
a2luZCwKLSAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0X3Byb3h5KTsKLSAg
UlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFJlY2VpdmVySW50ZXJmYWNlPj4KLSAg
Q3JlYXRlUHJveGllZFJ0cFJlY2VpdmVyKGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnRfcHJv
eHkpOwotCi0gIC8vIE1ldGhvZHMgdXNlZCBpbnRlcm5hbGx5IGJ5IG90aGVyICJhZGFwdGVyIiBj
bGFzc2VzLgotICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCgpIGNvbnN0IHsgcmV0dXJu
IHNpZ25hbGluZ190aHJlYWRfOyB9Ci0gIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkKCkgY29u
c3QgeyByZXR1cm4gd29ya2VyX3RocmVhZF87IH0KLSAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhy
ZWFkKCkgY29uc3QgeyByZXR1cm4gbmV0d29ya190aHJlYWRfOyB9Ci0KLSAgLy8gfHBhcmFtZXRl
cnMua2VlcGFsaXZlfCB3aWxsIGJlIHNldCBmb3IgQUxMIFJUUCB0cmFuc3BvcnRzIGluIHRoZSBj
YWxsLgotICBSVENFcnJvciBTZXRSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzKGNvbnN0IFJ0cFRyYW5z
cG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBpbm5lcl90cmFuc3BvcnQpOwotICB2b2lk
IFNldFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnNfdyhjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKTsKLQotICBjcmlja2V0OjpWb2ljZUNoYW5uZWwqIHZvaWNlX2NoYW5uZWwo
KSB7IHJldHVybiB2b2ljZV9jaGFubmVsXzsgfQotICBjcmlja2V0OjpWaWRlb0NoYW5uZWwqIHZp
ZGVvX2NoYW5uZWwoKSB7IHJldHVybiB2aWRlb19jaGFubmVsXzsgfQotCi0gIC8vIHxwcmltYXJ5
X3NzcmN8IG91dCBwYXJhbWV0ZXIgaXMgZmlsbGVkIHdpdGggZWl0aGVyCi0gIC8vIHxwYXJhbWV0
ZXJzLmVuY29kaW5nc1swXS5zc3JjfCwgb3IgYSBnZW5lcmF0ZWQgU1NSQyBpZiB0aGF0J3MgbGVm
dCB1bnNldC4KLSAgUlRDRXJyb3IgVmFsaWRhdGVBbmRBcHBseUF1ZGlvU2VuZGVyUGFyYW1ldGVy
cygKLSAgICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICB1aW50MzJf
dCogcHJpbWFyeV9zc3JjKTsKLSAgUlRDRXJyb3IgVmFsaWRhdGVBbmRBcHBseVZpZGVvU2VuZGVy
UGFyYW1ldGVycygKLSAgICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAg
ICB1aW50MzJfdCogcHJpbWFyeV9zc3JjKTsKLSAgUlRDRXJyb3IgVmFsaWRhdGVBbmRBcHBseUF1
ZGlvUmVjZWl2ZXJQYXJhbWV0ZXJzKAotICAgICAgY29uc3QgUnRwUGFyYW1ldGVycyYgcGFyYW1l
dGVycyk7Ci0gIFJUQ0Vycm9yIFZhbGlkYXRlQW5kQXBwbHlWaWRlb1JlY2VpdmVyUGFyYW1ldGVy
cygKLSAgICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwotCi0gcHJvdGVjdGVk
OgotICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogR2V0SW50ZXJuYWwoKSBvdmVycmlk
ZSB7IHJldHVybiB0aGlzOyB9Ci0KLSBwcml2YXRlOgotICAvLyBPbmx5IGV4cGVjdGVkIHRvIGJl
IGNhbGxlZCBieSBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q3JlYXRlUHJveGllZC4K
LSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIoY29uc3QgY3JpY2tldDo6TWVkaWFDb25m
aWcmIGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6Q2hh
bm5lbE1hbmFnZXIqIGNoYW5uZWxfbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2VicnRjOjpSdGNFdmVudExvZyogZXZlbnRfbG9nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCk7Ci0g
IHZvaWQgSW5pdF93KCk7Ci0gIHZvaWQgQ2xvc2VfdygpOwotCi0gIC8vIFRoZXNlIHJldHVybiBh
biBlcnJvciBpZiBhbm90aGVyIG9mIHRoZSBzYW1lIHR5cGUgb2Ygb2JqZWN0IGlzIGFscmVhZHkK
LSAgLy8gYXR0YWNoZWQsIG9yIGlmIHx0cmFuc3BvcnRfcHJveHl8IGNhbid0IGJlIHVzZWQgd2l0
aCB0aGUgc2VuZGVyL3JlY2VpdmVyCi0gIC8vIGR1ZSB0byB0aGUgbGltaXRhdGlvbiB0aGF0IHRo
ZSBzZW5kZXIvcmVjZWl2ZXIgb2YgdGhlIHNhbWUgbWVkaWEgdHlwZSBtdXN0Ci0gIC8vIHVzZSB0
aGUgc2FtZSB0cmFuc3BvcnQuCi0gIFJUQ0Vycm9yIEF0dGFjaEF1ZGlvU2VuZGVyKE9ydGNSdHBT
ZW5kZXJBZGFwdGVyKiBzZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFRy
YW5zcG9ydEludGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0KTsKLSAgUlRDRXJyb3IgQXR0YWNoVmlk
ZW9TZW5kZXIoT3J0Y1J0cFNlbmRlckFkYXB0ZXIqIHNlbmRlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBpbm5lcl90cmFuc3BvcnQpOwotICBS
VENFcnJvciBBdHRhY2hBdWRpb1JlY2VpdmVyKE9ydGNSdHBSZWNlaXZlckFkYXB0ZXIqIHJlY2Vp
dmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFj
ZSogaW5uZXJfdHJhbnNwb3J0KTsKLSAgUlRDRXJyb3IgQXR0YWNoVmlkZW9SZWNlaXZlcihPcnRj
UnRwUmVjZWl2ZXJBZGFwdGVyKiByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIGlubmVyX3RyYW5zcG9ydCk7Ci0KLSAgdm9pZCBP
blJ0cFRyYW5zcG9ydERlc3Ryb3llZChSdHBUcmFuc3BvcnRBZGFwdGVyKiB0cmFuc3BvcnQpOwot
Ci0gIHZvaWQgT25BdWRpb1NlbmRlckRlc3Ryb3llZCgpOwotICB2b2lkIE9uVmlkZW9TZW5kZXJE
ZXN0cm95ZWQoKTsKLSAgdm9pZCBPbkF1ZGlvUmVjZWl2ZXJEZXN0cm95ZWQoKTsKLSAgdm9pZCBP
blZpZGVvUmVjZWl2ZXJEZXN0cm95ZWQoKTsKLQotICB2b2lkIENyZWF0ZVZvaWNlQ2hhbm5lbCgp
OwotICB2b2lkIENyZWF0ZVZpZGVvQ2hhbm5lbCgpOwotICB2b2lkIERlc3Ryb3lWb2ljZUNoYW5u
ZWwoKTsKLSAgdm9pZCBEZXN0cm95VmlkZW9DaGFubmVsKCk7Ci0KLSAgdm9pZCBDb3B5UnRjcFBh
cmFtZXRlcnNUb0Rlc2NyaXB0aW9ucygKLSAgICAgIGNvbnN0IFJ0Y3BQYXJhbWV0ZXJzJiBwYXJh
bXMsCi0gICAgICBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogbG9jYWwsCi0gICAg
ICBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogcmVtb3RlKTsKLQotICAvLyBIZWxw
ZXIgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYW4gU1NSQyB0aGF0IGRvZXNuJ3QgbWF0Y2ggb25lIGlu
IGFueSBvZiB0aGUKLSAgLy8gImNvbnRlbnQgZGVzY3JpcHRpb24iIHN0cnVjdHMsIG9yIGluIHxu
ZXdfc3NyY3N8ICh3aGljaCBpcyBuZWVkZWQgc2luY2UKLSAgLy8gbXVsdGlwbGUgU1NSQ3MgbWF5
IGJlIGdlbmVyYXRlZCBpbiBvbmUgZ28pLgotICB1aW50MzJfdCBHZW5lcmF0ZVVudXNlZFNzcmMo
c3RkOjpzZXQ8dWludDMyX3Q+KiBuZXdfc3NyY3MpIGNvbnN0OwotCi0gIC8vIHxkZXNjcmlwdGlv
bnwgaXMgdGhlIG1hdGNoaW5nIGRlc2NyaXB0aW9uIHdoZXJlIGV4aXN0aW5nIFNTUkNzIGNhbiBi
ZQotICAvLyBmb3VuZC4KLSAgLy8KLSAgLy8gVGhpcyBpcyBhIG1lbWJlciBmdW5jdGlvbiBiZWNh
dXNlIGl0IG1heSBuZWVkIHRvIGdlbmVyYXRlIFNTUkNzIHRoYXQgZG9uJ3QKLSAgLy8gbWF0Y2gg
ZXhpc3Rpbmcgb25lcywgd2hpY2ggaXMgbW9yZSB0aGFuIFRvU3RyZWFtUGFyYW1zVmVjIGRvZXMu
Ci0gIFJUQ0Vycm9yT3I8Y3JpY2tldDo6U3RyZWFtUGFyYW1zVmVjPiBNYWtlU2VuZFN0cmVhbVBh
cmFtc1ZlYygKLSAgICAgIHN0ZDo6dmVjdG9yPFJ0cEVuY29kaW5nUGFyYW1ldGVycz4gZW5jb2Rp
bmdzLAotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNuYW1lLAotICAgICAgY29uc3QgY3JpY2tl
dDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKSBjb25zdDsKLQotICBydGM6
OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZF87Ci0gIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFk
XzsKLSAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkXzsKLSAgLy8gfHRyYW5zcG9ydF9wcm94
aWVzX3wgYW5kIHxpbm5lcl9hdWRpb190cmFuc3BvcnRffC98aW5uZXJfYXVkaW9fdHJhbnNwb3J0
X3wKLSAgLy8gYXJlIHNvbWV3aGF0IHJlZHVuZGFudCwgYnV0IHRoZSBsYXR0ZXIgYXJlIG9ubHkg
c2V0IHdoZW4KLSAgLy8gUnRwU2VuZGVycy9SdHBSZWNlaXZlcnMgYXJlIGF0dGFjaGVkIHRvIHRo
ZSB0cmFuc3BvcnQuCi0gIHN0ZDo6dmVjdG9yPFJ0cFRyYW5zcG9ydEludGVyZmFjZSo+IHRyYW5z
cG9ydF9wcm94aWVzXzsKLSAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBpbm5lcl9hdWRpb190cmFu
c3BvcnRfID0gbnVsbHB0cjsKLSAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBpbm5lcl92aWRlb190
cmFuc3BvcnRfID0gbnVsbHB0cjsKLSAgY29uc3QgY3JpY2tldDo6TWVkaWFDb25maWcgbWVkaWFf
Y29uZmlnXzsKLSAgUnRwS2VlcEFsaXZlQ29uZmlnIGtlZXBhbGl2ZV87Ci0gIGNyaWNrZXQ6OkNo
YW5uZWxNYW5hZ2VyKiBjaGFubmVsX21hbmFnZXJfOwotICB3ZWJydGM6OlJ0Y0V2ZW50TG9nKiBl
dmVudF9sb2dfOwotICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbD4gY2FsbF87Ci0gIHdlYnJ0Yzo6UnRw
VHJhbnNwb3J0Q29udHJvbGxlclNlbmQqIGNhbGxfc2VuZF9ydHBfdHJhbnNwb3J0X2NvbnRyb2xs
ZXJfOwotCi0gIC8vIEJhc2VDaGFubmVsIHRha2VzIGNvbnRlbnQgZGVzY3JpcHRpb25zIGFzIGlu
cHV0LCBzbyB3ZSBzdG9yZSB0aGVtIGhlcmUKLSAgLy8gc3VjaCB0aGF0IHRoZXkgY2FuIGJlIHVw
ZGF0ZWQgd2hlbiBhIG5ldyBSdHBTZW5kZXJBZGFwdGVyLwotICAvLyBSdHBSZWNlaXZlckFkYXB0
ZXIgYXR0YWNoZXMgaXRzZWxmLgotICBjcmlja2V0OjpBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiBs
b2NhbF9hdWRpb19kZXNjcmlwdGlvbl87Ci0gIGNyaWNrZXQ6OkF1ZGlvQ29udGVudERlc2NyaXB0
aW9uIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl87Ci0gIGNyaWNrZXQ6OlZpZGVvQ29udGVudERl
c2NyaXB0aW9uIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXzsKLSAgY3JpY2tldDo6VmlkZW9Db250
ZW50RGVzY3JpcHRpb24gcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXzsKLSAgY3JpY2tldDo6Vm9p
Y2VDaGFubmVsKiB2b2ljZV9jaGFubmVsXyA9IG51bGxwdHI7Ci0gIGNyaWNrZXQ6OlZpZGVvQ2hh
bm5lbCogdmlkZW9fY2hhbm5lbF8gPSBudWxscHRyOwotICBib29sIGhhdmVfYXVkaW9fc2VuZGVy
XyA9IGZhbHNlOwotICBib29sIGhhdmVfdmlkZW9fc2VuZGVyXyA9IGZhbHNlOwotICBib29sIGhh
dmVfYXVkaW9fcmVjZWl2ZXJfID0gZmFsc2U7Ci0gIGJvb2wgaGF2ZV92aWRlb19yZWNlaXZlcl8g
PSBmYWxzZTsKLQotICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKFJ0cFRyYW5z
cG9ydENvbnRyb2xsZXJBZGFwdGVyKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQot
I2VuZGlmICAvLyBPUlRDX1JUUFRSQU5TUE9SVENPTlRST0xMRVJBREFQVEVSX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3NydHB0
cmFuc3BvcnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9vcnRjL3NydHB0cmFuc3BvcnRfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE1MDZhYTcwNDE0ZTI5YWUyN2IwZmI5YWQ4MWQyZDQ5OGZlMjEyYWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9zcnRwdHJhbnNwb3J0X3VuaXR0ZXN0
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIw
MTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0K
LSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5f
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWls
dGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZW1l
ZGlhZW5naW5lLmgiCi0jaW5jbHVkZSAib3J0Yy9vcnRjZmFjdG9yeS5oIgotI2luY2x1ZGUgIm9y
dGMvdGVzdHJ0cHBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJwMnAvYmFzZS9mYWtlcGFja2V0dHJh
bnNwb3J0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0
YyB7Ci0KLXN0YXRpYyBjb25zdCBjaGFyIGtUZXN0U2hhMUtleVBhcmFtczFbXSA9Ci0gICAgImlu
bGluZTpXVk5mWDE5elpXMWpkR3dnS0NrZ2V3a3lNakE3ZlFwOUNuVnViR1Z6IjsKLXN0YXRpYyBj
b25zdCBjaGFyIGtUZXN0U2hhMUtleVBhcmFtczJbXSA9Ci0gICAgImlubGluZTpQUzF1UUNWZWVD
RkNhblZtY2prcFB5d2pOV2hjWUQwbVhYdHhhVkJSIjsKLXN0YXRpYyBjb25zdCBjaGFyIGtUZXN0
R2NtS2V5UGFyYW1zM1tdID0KLSAgICAiaW5saW5lOmUxNjZLRmxLekpzR1cwZDVhcFgrcnJJMDV2
eGJydk1KRXpGSTE0YVREQ2E2M0lSVGxMSzRpSDY2dU9JPSI7Ci0KLXN0YXRpYyBjb25zdCBjcmlj
a2V0OjpDcnlwdG9QYXJhbXMga1Rlc3RTaGExQ3J5cHRvUGFyYW1zMSgKLSAgICAxLAotICAgICJB
RVNfQ01fMTI4X0hNQUNfU0hBMV84MCIsCi0gICAga1Rlc3RTaGExS2V5UGFyYW1zMSwKLSAgICAi
Iik7Ci1zdGF0aWMgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1zIGtUZXN0U2hhMUNyeXB0b1Bh
cmFtczIoCi0gICAgMSwKLSAgICAiQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAiLAotICAgIGtUZXN0
U2hhMUtleVBhcmFtczIsCi0gICAgIiIpOwotc3RhdGljIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1Bh
cmFtcyBrVGVzdEdjbUNyeXB0b1BhcmFtczMoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBRUFEX0FFU18yNTZfR0NNIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtUZXN0
R2NtS2V5UGFyYW1zMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIiKTsKLQotLy8gVGhpcyB0ZXN0IHVzZXMgZmFrZSBwYWNrZXQgdHJh
bnNwb3J0cyBhbmQgYSBmYWtlIG1lZGlhIGVuZ2luZSwgaW4gb3JkZXIgdG8KLS8vIHRlc3QgdGhl
IFNydHBUcmFuc3BvcnQgYXQgb25seSBhbiBBUEkgbGV2ZWwuIEFueSBlbmQtdG8tZW5kIHRlc3Qg
c2hvdWxkIGdvIGluCi0vLyBvcnRjZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MgaW5zdGVhZC4K
LWNsYXNzIFNydHBUcmFuc3BvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHB1Ymxp
YzoKLSAgU3J0cFRyYW5zcG9ydFRlc3QoKSB7Ci0gICAgZmFrZV9tZWRpYV9lbmdpbmVfID0gbmV3
IGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZSgpOwotICAgIC8vIE5vdGU6IFRoaXMgZG9lc24ndCBu
ZWVkIHRvIHVzZSBmYWtlIG5ldHdvcmsgY2xhc3Nlcywgc2luY2UgaXQgdXNlcwotICAgIC8vIEZh
a2VQYWNrZXRUcmFuc3BvcnRzLgotICAgIGF1dG8gcmVzdWx0ID0gT3J0Y0ZhY3Rvcnk6OkNyZWF0
ZSgKLSAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPihm
YWtlX21lZGlhX2VuZ2luZV8pLAotICAgICAgICBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFj
dG9yeSgpLCBDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpKTsKLSAgICBvcnRjX2Zh
Y3RvcnlfID0gcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxl
cl8gPQotICAgICAgICBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnRDb250cm9sbGVy
KCkuTW92ZVZhbHVlKCk7Ci0KLSAgICBmYWtlX3BhY2tldF90cmFuc3BvcnRfLnJlc2V0KG5ldyBy
dGM6OkZha2VQYWNrZXRUcmFuc3BvcnQoImZha2UiKSk7Ci0gICAgYXV0byBzcnRwX3RyYW5zcG9y
dF9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVTcnRwVHJhbnNwb3J0KAotICAgICAgICBy
dHBfdHJhbnNwb3J0X3BhcmFtZXRlcnNfLCBmYWtlX3BhY2tldF90cmFuc3BvcnRfLmdldCgpLCBu
dWxscHRyLAotICAgICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLmdldCgpKTsKLSAgICBz
cnRwX3RyYW5zcG9ydF8gPSBzcnRwX3RyYW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIH0K
LQotIHByb3RlY3RlZDoKLSAgLy8gT3duZWQgYnkgfG9ydGNfZmFjdG9yeV98LgotICBjcmlja2V0
OjpGYWtlTWVkaWFFbmdpbmUqIGZha2VfbWVkaWFfZW5naW5lXzsKLSAgc3RkOjp1bmlxdWVfcHRy
PE9ydGNGYWN0b3J5SW50ZXJmYWNlPiBvcnRjX2ZhY3RvcnlfOwotICBzdGQ6OnVuaXF1ZV9wdHI8
UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4gcnRwX3RyYW5zcG9ydF9jb250cm9sbGVy
XzsKLSAgc3RkOjp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+IHNydHBfdHJhbnNw
b3J0XzsKLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBydHBfdHJhbnNwb3J0X3BhcmFtZXRlcnNf
OwotICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0PiBmYWtlX3BhY2tl
dF90cmFuc3BvcnRfOwotfTsKLQotLy8gVGVzdHMgdGhhdCBzZXR0aW5nIHRoZSBTUlRQIHNlbmQv
cmVjZWl2ZSBrZXkgc3VjY2VlZHMuCi1URVNUX0YoU3J0cFRyYW5zcG9ydFRlc3QsIFNldFNydHBT
ZW5kQW5kUmVjZWl2ZUtleSkgewotICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydF8tPlNldFNy
dHBTZW5kS2V5KGtUZXN0U2hhMUNyeXB0b1BhcmFtczEpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShz
cnRwX3RyYW5zcG9ydF8tPlNldFNydHBSZWNlaXZlS2V5KGtUZXN0U2hhMUNyeXB0b1BhcmFtczIp
Lm9rKCkpOwotICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBT
ZW5kZXIoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0g
IEVYUEVDVF9UUlVFKHNlbmRlcl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gcmVjZWl2ZXJfcmVzdWx0
ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJ
QV9UWVBFX0FVRElPLCBzcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShyZWNl
aXZlcl9yZXN1bHQub2soKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgc2V0dGluZyB0aGUgU1JUUCBz
ZW5kL3JlY2VpdmUga2V5IHR3aWNlIGlzIG5vdCBzdXBwb3J0ZWQuCi1URVNUX0YoU3J0cFRyYW5z
cG9ydFRlc3QsIFNldFNydHBTZW5kQW5kUmVjZWl2ZUtleVR3aWNlKSB7Ci0gIEVYUEVDVF9UUlVF
KHNydHBfdHJhbnNwb3J0Xy0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RTaGExQ3J5cHRvUGFyYW1zMSku
b2soKSk7Ci0gIEVYUEVDVF9UUlVFKHNydHBfdHJhbnNwb3J0Xy0+U2V0U3J0cFJlY2VpdmVLZXko
a1Rlc3RTaGExQ3J5cHRvUGFyYW1zMikub2soKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6
OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgIHNydHBfdHJhbnNwb3J0Xy0+U2V0
U3J0cFNlbmRLZXkoa1Rlc3RTaGExQ3J5cHRvUGFyYW1zMikudHlwZSgpKTsKLSAgRVhQRUNUX0VR
KFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgc3J0cF90
cmFuc3BvcnRfLT5TZXRTcnRwUmVjZWl2ZUtleShrVGVzdFNoYTFDcnlwdG9QYXJhbXMxKS50eXBl
KCkpOwotICAvLyBFbnN1cmUgdGhhdCB0aGUgc2VuZGVycyBhbmQgcmVjZWl2ZXJzIGNhbiBiZSBj
cmVhdGVkIGRlc3BpdGUgdGhlIHByZXZpb3VzCi0gIC8vIGVycm9ycy4KLSAgYXV0byBzZW5kZXJf
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfQVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShzZW5kZXJfcmVz
dWx0Lm9rKCkpOwotICBhdXRvIHJlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgc3J0cF90cmFu
c3BvcnRfLmdldCgpKTsKLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXJfcmVzdWx0Lm9rKCkpOwotfQot
Ci0vLyBUZXN0IHRoYXQgdGhlIFNSVFAgc2VuZCBrZXkgYW5kIHJlY2VpdmUga2V5IG11c3QgaGF2
ZSB0aGUgc2FtZSBjaXBoZXIgc3VpdGUuCi1URVNUX0YoU3J0cFRyYW5zcG9ydFRlc3QsIFNldFNy
dHBTZW5kQW5kUmVjZWl2ZUtleURpZmZlcmVudENpcGhlclN1aXRlKSB7Ci0gIEVYUEVDVF9UUlVF
KHNydHBfdHJhbnNwb3J0Xy0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RTaGExQ3J5cHRvUGFyYW1zMSku
b2soKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwK
LSAgICAgICAgICAgIHNydHBfdHJhbnNwb3J0Xy0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RHY21D
cnlwdG9QYXJhbXMzKS50eXBlKCkpOwotICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydF8tPlNl
dFNydHBSZWNlaXZlS2V5KGtUZXN0U2hhMUNyeXB0b1BhcmFtczIpLm9rKCkpOwotICAvLyBFbnN1
cmUgdGhhdCB0aGUgc2VuZGVycyBhbmQgcmVjZWl2ZXJzIGNhbiBiZSBjcmVhdGVkIGRlc3BpdGUg
dGhlIHByZXZpb3VzCi0gIC8vIGVycm9yLgotICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2Zh
Y3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNydHBfdHJh
bnNwb3J0Xy5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKHNlbmRlcl9yZXN1bHQub2soKSk7Ci0gIGF1
dG8gcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0g
ICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBzcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwot
ICBFWFBFQ1RfVFJVRShyZWNlaXZlcl9yZXN1bHQub2soKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL29ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3Rlc3RydHBwYXJhbWV0ZXJzLmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4MmQ5NjU5MGZiOTY1NWVhNzg4NTMwNTcyNDg5MzExNmY2N2Fm
MjlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvdGVzdHJ0cHBhcmFtZXRl
cnMuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwzMTUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
MjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8K
LQotI2luY2x1ZGUgIm9ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuaCIKLQotI2luY2x1ZGUgPGFsZ29y
aXRobT4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotUnRwUGFy
YW1ldGVycyBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkgewotICBSdHBQYXJhbWV0ZXJzIHBh
cmFtZXRlcnM7Ci0gIFJ0cENvZGVjUGFyYW1ldGVycyBvcHVzX2NvZGVjOwotICBvcHVzX2NvZGVj
Lm5hbWUgPSAib3B1cyI7Ci0gIG9wdXNfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVf
QVVESU87Ci0gIG9wdXNfY29kZWMucGF5bG9hZF90eXBlID0gMTExOwotICBvcHVzX2NvZGVjLmNs
b2NrX3JhdGUuZW1wbGFjZSg0ODAwMCk7Ci0gIG9wdXNfY29kZWMubnVtX2NoYW5uZWxzLmVtcGxh
Y2UoMik7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUob3B1c19jb2Rl
YykpOwotICBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgZW5jb2Rpbmc7Ci0gIGVuY29kaW5nLmNvZGVj
X3BheWxvYWRfdHlwZS5lbXBsYWNlKDExMSk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1c2hf
YmFjayhzdGQ6Om1vdmUoZW5jb2RpbmcpKTsKLSAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLVJ0
cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVycygpIHsKLSAgUnRwUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwotICBSdHBDb2RlY1BhcmFtZXRlcnMgaXNhY19jb2RlYzsKLSAgaXNhY19j
b2RlYy5uYW1lID0gIklTQUMiOwotICBpc2FjX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPOwotICBpc2FjX2NvZGVjLnBheWxvYWRfdHlwZSA9IDEwMzsKLSAgaXNhY19jb2Rl
Yy5jbG9ja19yYXRlLmVtcGxhY2UoMTYwMDApOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2Jh
Y2soc3RkOjptb3ZlKGlzYWNfY29kZWMpKTsKLSAgUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIGVuY29k
aW5nOwotICBlbmNvZGluZy5jb2RlY19wYXlsb2FkX3R5cGUuZW1wbGFjZSgxMTEpOwotICBwYXJh
bWV0ZXJzLmVuY29kaW5ncy5wdXNoX2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0gIHJldHVy
biBwYXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRl
cnNXaXRoU3NyYyh1aW50MzJfdCBzc3JjKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9
IE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0u
c3NyYy5lbXBsYWNlKHNzcmMpOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotUnRwUGFyYW1l
dGVycyBNYWtlTWluaW1hbElzYWNQYXJhbWV0ZXJzV2l0aFNzcmModWludDMyX3Qgc3NyYykgewot
ICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbElzYWNQYXJhbWV0ZXJzKCk7
Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnNzcmMuZW1wbGFjZShzc3JjKTsKLSAgcmV0dXJu
IHBhcmFtZXRlcnM7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxWaWRlb1BhcmFtZXRl
cnMoY29uc3QgY2hhciogY29kZWNfbmFtZSkgewotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7
Ci0gIFJ0cENvZGVjUGFyYW1ldGVycyB2cDhfY29kZWM7Ci0gIHZwOF9jb2RlYy5uYW1lID0gY29k
ZWNfbmFtZTsKLSAgdnA4X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwot
ICB2cDhfY29kZWMucGF5bG9hZF90eXBlID0gOTY7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hf
YmFjayhzdGQ6Om1vdmUodnA4X2NvZGVjKSk7Ci0gIFJ0cEVuY29kaW5nUGFyYW1ldGVycyBlbmNv
ZGluZzsKLSAgZW5jb2RpbmcuY29kZWNfcGF5bG9hZF90eXBlLmVtcGxhY2UoOTYpOwotICBwYXJh
bWV0ZXJzLmVuY29kaW5ncy5wdXNoX2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0gIHJldHVy
biBwYXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVy
cygpIHsKLSAgcmV0dXJuIE1ha2VNaW5pbWFsVmlkZW9QYXJhbWV0ZXJzKCJWUDgiKTsKLX0KLQot
UnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnMoKSB7Ci0gIHJldHVybiBNYWtl
TWluaW1hbFZpZGVvUGFyYW1ldGVycygiVlA5Iik7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1p
bmltYWxWcDhQYXJhbWV0ZXJzV2l0aFNzcmModWludDMyX3Qgc3NyYykgewotICBSdHBQYXJhbWV0
ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgcGFyYW1ldGVy
cy5lbmNvZGluZ3NbMF0uc3NyYy5lbXBsYWNlKHNzcmMpOwotICByZXR1cm4gcGFyYW1ldGVyczsK
LX0KLQotUnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnNXaXRoU3NyYyh1aW50
MzJfdCBzc3JjKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA5
UGFyYW1ldGVycygpOwotICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjLmVtcGxhY2Uoc3Ny
Yyk7Ci0gIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi0vLyBOb3RlOiBDdXJyZW50bHksIHRoZXNl
ICJXaXRoTm9Tc3JjIiBtZXRob2RzIGFyZSBpZGVudGljYWwgdG8gdGhlIG5vcm1hbAotLy8gIk1h
a2VNaW5pbWFsIiBtZXRob2RzLCBidXQgd2l0aCB0aGUgYWRkZWQgZ3VhcmFudGVlIHRoYXQgdGhl
eSB3aWxsIG5ldmVyIGJlCi0vLyBjaGFuZ2VkIHRvIGluY2x1ZGUgYW4gU1NSQy4KLQotUnRwUGFy
YW1ldGVycyBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aE5vU3NyYygpIHsKLSAgUnRwUGFy
YW1ldGVycyBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpOwotICBSVENf
RENIRUNLKCFwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjKTsKLSAgcmV0dXJuIHBhcmFtZXRl
cnM7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVyc1dpdGhOb1Nz
cmMoKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsSXNhY1BhcmFt
ZXRlcnMoKTsKLSAgUlRDX0RDSEVDSyghcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYyk7Ci0g
IHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA4UGFy
YW1ldGVyc1dpdGhOb1NzcmMoKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VN
aW5pbWFsVnA4UGFyYW1ldGVycygpOwotICBSVENfRENIRUNLKCFwYXJhbWV0ZXJzLmVuY29kaW5n
c1swXS5zc3JjKTsKLSAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFr
ZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0aE5vU3NyYygpIHsKLSAgUnRwUGFyYW1ldGVycyBwYXJh
bWV0ZXJzID0gTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzKCk7Ci0gIFJUQ19EQ0hFQ0soIXBhcmFt
ZXRlcnMuZW5jb2RpbmdzWzBdLnNzcmMpOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotLy8g
TWFrZSBhdWRpbyBwYXJhbWV0ZXJzIHdpdGggYWxsIHRoZSBhdmFpbGFibGUgcHJvcGVydGllcyBj
b25maWd1cmVkIGFuZAotLy8gZmVhdHVyZXMgdXNlZCwgYW5kIHdpdGggbXVsdGlwbGUgY29kZWNz
IG9mZmVyZWQuIE9idGFpbmVkIGJ5IHRha2luZyBhCi0vLyBzbmFwc2hvdCBvZiBhIGRlZmF1bHQg
UGVlckNvbm5lY3Rpb24gb2ZmZXIgKGFuZCBhZGRpbmcgb3RoZXIgdGhpbmdzLCBsaWtlCi0vLyBi
aXRyYXRlIGxpbWl0KS4KLS8vCi0vLyBTZWUgIk1ha2VGdWxsT3B1c1BhcmFtZXRlcnMiLyJNYWtl
RnVsbElzYWNQYXJhbWV0ZXJzIiBiZWxvdy4KLVJ0cFBhcmFtZXRlcnMgTWFrZUZ1bGxBdWRpb1Bh
cmFtZXRlcnMoaW50IHByZWZlcnJlZF9wYXlsb2FkX3R5cGUpIHsKLSAgUnRwUGFyYW1ldGVycyBw
YXJhbWV0ZXJzOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyBvcHVzX2NvZGVjOwotICBvcHVzX2Nv
ZGVjLm5hbWUgPSAib3B1cyI7Ci0gIG9wdXNfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfQVVESU87Ci0gIG9wdXNfY29kZWMucGF5bG9hZF90eXBlID0gMTExOwotICBvcHVzX2NvZGVj
LmNsb2NrX3JhdGUuZW1wbGFjZSg0ODAwMCk7Ci0gIG9wdXNfY29kZWMubnVtX2NoYW5uZWxzLmVt
cGxhY2UoMik7Ci0gIG9wdXNfY29kZWMucGFyYW1ldGVyc1sibWlucHRpbWUiXSA9ICIxMCI7Ci0g
IG9wdXNfY29kZWMucGFyYW1ldGVyc1sidXNlaW5iYW5kZmVjIl0gPSAiMSI7Ci0gIG9wdXNfY29k
ZWMucGFyYW1ldGVyc1sidXNlZHR4Il0gPSAiMSI7Ci0gIG9wdXNfY29kZWMucGFyYW1ldGVyc1si
c3RlcmVvIl0gPSAiMSI7Ci0gIG9wdXNfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2so
UnRjcEZlZWRiYWNrVHlwZTo6VFJBTlNQT1JUX0NDKTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVz
aF9iYWNrKHN0ZDo6bW92ZShvcHVzX2NvZGVjKSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIGlz
YWNfY29kZWM7Ci0gIGlzYWNfY29kZWMubmFtZSA9ICJJU0FDIjsKLSAgaXNhY19jb2RlYy5raW5k
ID0gY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzsKLSAgaXNhY19jb2RlYy5wYXlsb2FkX3R5cGUg
PSAxMDM7Ci0gIGlzYWNfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDE2MDAwKTsKLSAgcGFyYW1l
dGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShpc2FjX2NvZGVjKSk7Ci0KLSAgUnRwQ29k
ZWNQYXJhbWV0ZXJzIGNuX2NvZGVjOwotICBjbl9jb2RlYy5uYW1lID0gIkNOIjsKLSAgY25fY29k
ZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87Ci0gIGNuX2NvZGVjLnBheWxvYWRf
dHlwZSA9IDEwNjsKLSAgY25fY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDMyMDAwKTsKLSAgcGFy
YW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShjbl9jb2RlYykpOwotCi0gIFJ0cENv
ZGVjUGFyYW1ldGVycyBkdG1mX2NvZGVjOwotICBkdG1mX2NvZGVjLm5hbWUgPSAidGVsZXBob25l
LWV2ZW50IjsKLSAgZHRtZl9jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzsK
LSAgZHRtZl9jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMjY7Ci0gIGR0bWZfY29kZWMuY2xvY2tfcmF0
ZS5lbXBsYWNlKDgwMDApOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3Zl
KGR0bWZfY29kZWMpKTsKLQotICAvLyAiY29kZWNfcGF5bG9hZF90eXBlIiBpc24ndCBpbXBsZW1l
bnRlZCwgc28gd2UgbmVlZCB0byByZW9yZGVyIGNvZGVjcyB0bwotICAvLyBjYXVzZSBvbmUgdG8g
YmUgdXNlZC4KLSAgLy8gVE9ETyhkZWFkYmVlZik6IFJlbW92ZSB0aGlzIHdoZW4gaXQgYmVjb21l
cyB1bm5lY2Vzc2FyeS4KLSAgYXV0byBpdCA9IHN0ZDo6ZmluZF9pZihwYXJhbWV0ZXJzLmNvZGVj
cy5iZWdpbigpLCBwYXJhbWV0ZXJzLmNvZGVjcy5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBbcHJlZmVycmVkX3BheWxvYWRfdHlwZV0oY29uc3QgUnRwQ29kZWNQYXJhbWV0ZXJzJiBw
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcC5wYXlsb2FkX3R5cGUgPT0g
cHJlZmVycmVkX3BheWxvYWRfdHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAg
UnRwQ29kZWNQYXJhbWV0ZXJzIHByZWZlcnJlZCA9ICppdDsKLSAgcGFyYW1ldGVycy5jb2RlY3Mu
ZXJhc2UoaXQpOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5pbnNlcnQocGFyYW1ldGVycy5jb2RlY3Mu
YmVnaW4oKSwgcHJlZmVycmVkKTsKLQotICAvLyBJbnRlbnRpb25hbGx5IGxlYXZlIG91dCBTU1JD
IHNvIG9uZSdzIGNob3NlbiBhdXRvbWF0aWNhbGx5LgotICBSdHBFbmNvZGluZ1BhcmFtZXRlcnMg
ZW5jb2Rpbmc7Ci0gIGVuY29kaW5nLmNvZGVjX3BheWxvYWRfdHlwZS5lbXBsYWNlKHByZWZlcnJl
ZF9wYXlsb2FkX3R5cGUpOwotICBlbmNvZGluZy5kdHguZW1wbGFjZShEdHhTdGF0dXM6OkVOQUJM
RUQpOwotICAvLyAyMCBrYnBzLgotICBlbmNvZGluZy5tYXhfYml0cmF0ZV9icHMuZW1wbGFjZSgy
MDAwMCk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1c2hfYmFjayhzdGQ6Om1vdmUoZW5jb2Rp
bmcpKTsKLQotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygKLSAg
ICAgICJ1cm46aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDpzc3JjLWF1ZGlvLWxldmVsIiwgMSk7Ci0g
IHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VGdWxsT3B1c1BhcmFt
ZXRlcnMoKSB7Ci0gIHJldHVybiBNYWtlRnVsbEF1ZGlvUGFyYW1ldGVycygxMTEpOwotfQotCi1S
dHBQYXJhbWV0ZXJzIE1ha2VGdWxsSXNhY1BhcmFtZXRlcnMoKSB7Ci0gIHJldHVybiBNYWtlRnVs
bEF1ZGlvUGFyYW1ldGVycygxMDMpOwotfQotCi0vLyBNYWtlIHZpZGVvIHBhcmFtZXRlcnMgd2l0
aCBhbGwgdGhlIGF2YWlsYWJsZSBwcm9wZXJ0aWVzIGNvbmZpZ3VyZWQgYW5kCi0vLyBmZWF0dXJl
cyB1c2VkLCBhbmQgd2l0aCBtdWx0aXBsZSBjb2RlY3Mgb2ZmZXJlZC4gT2J0YWluZWQgYnkgdGFr
aW5nIGEKLS8vIHNuYXBzaG90IG9mIGEgZGVmYXVsdCBQZWVyQ29ubmVjdGlvbiBvZmZlciAoYW5k
IGFkZGluZyBvdGhlciB0aGluZ3MsIGxpa2UKLS8vIGJpdHJhdGUgbGltaXQpLgotLy8KLS8vIFNl
ZSAiTWFrZUZ1bGxWcDhQYXJhbWV0ZXJzIi8iTWFrZUZ1bGxWcDlQYXJhbWV0ZXJzIiBiZWxvdy4K
LVJ0cFBhcmFtZXRlcnMgTWFrZUZ1bGxWaWRlb1BhcmFtZXRlcnMoaW50IHByZWZlcnJlZF9wYXls
b2FkX3R5cGUpIHsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gIFJ0cENvZGVjUGFy
YW1ldGVycyB2cDhfY29kZWM7Ci0gIHZwOF9jb2RlYy5uYW1lID0gIlZQOCI7Ci0gIHZwOF9jb2Rl
Yy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgdnA4X2NvZGVjLnBheWxvYWRf
dHlwZSA9IDEwMDsKLSAgdnA4X2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFjZSg5MDAwMCk7Ci0gIHZw
OF9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpDQ00s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNwRmVlZGJhY2tNZXNz
YWdlVHlwZTo6RklSKTsKLSAgdnA4X2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0
Y3BGZWVkYmFja1R5cGU6Ok5BQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSdGNwRmVlZGJhY2tNZXNzYWdlVHlwZTo6R0VORVJJQ19OQUNLKTsKLSAgdnA4X2NvZGVj
LnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6Ok5BQ0ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNwRmVlZGJhY2tNZXNzYWdlVHlw
ZTo6UExJKTsKLSAgdnA4X2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVk
YmFja1R5cGU6OlJFTUIpOwotICB2cDhfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2so
UnRjcEZlZWRiYWNrVHlwZTo6VFJBTlNQT1JUX0NDKTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVz
aF9iYWNrKHN0ZDo6bW92ZSh2cDhfY29kZWMpKTsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgdnA4
X3J0eF9jb2RlYzsKLSAgdnA4X3J0eF9jb2RlYy5uYW1lID0gInJ0eCI7Ci0gIHZwOF9ydHhfY29k
ZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0gIHZwOF9ydHhfY29kZWMucGF5
bG9hZF90eXBlID0gOTY7Ci0gIHZwOF9ydHhfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDkwMDAw
KTsKLSAgdnA4X3J0eF9jb2RlYy5wYXJhbWV0ZXJzWyJhcHQiXSA9ICIxMDAiOwotICBwYXJhbWV0
ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHZwOF9ydHhfY29kZWMpKTsKLQotICBSdHBD
b2RlY1BhcmFtZXRlcnMgdnA5X2NvZGVjOwotICB2cDlfY29kZWMubmFtZSA9ICJWUDkiOwotICB2
cDlfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0gIHZwOV9jb2RlYy5w
YXlsb2FkX3R5cGUgPSAxMDE7Ci0gIHZwOV9jb2RlYy5jbG9ja19yYXRlLmVtcGxhY2UoOTAwMDAp
OwotICB2cDlfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlw
ZTo6Q0NNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEZlZWRi
YWNrTWVzc2FnZVR5cGU6OkZJUik7Ci0gIHZwOV9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2Vf
YmFjayhSdGNwRmVlZGJhY2tUeXBlOjpOQUNLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5cGU6OkdFTkVSSUNfTkFDSyk7Ci0gIHZw
OV9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpOQUNL
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVz
c2FnZVR5cGU6OlBMSSk7Ci0gIHZwOV9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhS
dGNwRmVlZGJhY2tUeXBlOjpSRU1CKTsKLSAgdnA5X2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFj
ZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6OlRSQU5TUE9SVF9DQyk7Ci0gIHBhcmFtZXRlcnMuY29k
ZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUodnA5X2NvZGVjKSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0
ZXJzIHZwOV9ydHhfY29kZWM7Ci0gIHZwOV9ydHhfY29kZWMubmFtZSA9ICJydHgiOwotICB2cDlf
cnR4X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB2cDlfcnR4X2Nv
ZGVjLnBheWxvYWRfdHlwZSA9IDk3OwotICB2cDlfcnR4X2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFj
ZSg5MDAwMCk7Ci0gIHZwOV9ydHhfY29kZWMucGFyYW1ldGVyc1siYXB0Il0gPSAiMTAxIjsKLSAg
cGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZSh2cDlfcnR4X2NvZGVjKSk7Ci0K
LSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHJlZF9jb2RlYzsKLSAgcmVkX2NvZGVjLm5hbWUgPSAicmVk
IjsKLSAgcmVkX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICByZWRf
Y29kZWMucGF5bG9hZF90eXBlID0gMTE2OwotICByZWRfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNl
KDkwMDAwKTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShyZWRfY29k
ZWMpKTsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgcmVkX3J0eF9jb2RlYzsKLSAgcmVkX3J0eF9j
b2RlYy5uYW1lID0gInJ0eCI7Ci0gIHJlZF9ydHhfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElB
X1RZUEVfVklERU87Ci0gIHJlZF9ydHhfY29kZWMucGF5bG9hZF90eXBlID0gOTg7Ci0gIHJlZF9y
dHhfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDkwMDAwKTsKLSAgcmVkX3J0eF9jb2RlYy5wYXJh
bWV0ZXJzWyJhcHQiXSA9ICIxMTYiOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3Rk
Ojptb3ZlKHJlZF9ydHhfY29kZWMpKTsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgdWxwZmVjX2Nv
ZGVjOwotICB1bHBmZWNfY29kZWMubmFtZSA9ICJ1bHBmZWMiOwotICB1bHBmZWNfY29kZWMua2lu
ZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0gIHVscGZlY19jb2RlYy5wYXlsb2FkX3R5
cGUgPSAxMTc7Ci0gIHVscGZlY19jb2RlYy5jbG9ja19yYXRlLmVtcGxhY2UoOTAwMDApOwotICBw
YXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHVscGZlY19jb2RlYykpOwotCi0g
IC8vICJjb2RlY19wYXlsb2FkX3R5cGUiIGlzbid0IGltcGxlbWVudGVkLCBzbyB3ZSBuZWVkIHRv
IHJlb3JkZXIgY29kZWNzIHRvCi0gIC8vIGNhdXNlIG9uZSB0byBiZSB1c2VkLgotICAvLyBUT0RP
KGRlYWRiZWVmKTogUmVtb3ZlIHRoaXMgd2hlbiBpdCBiZWNvbWVzIHVubmVjZXNzYXJ5LgotICBh
dXRvIGl0ID0gc3RkOjpmaW5kX2lmKHBhcmFtZXRlcnMuY29kZWNzLmJlZ2luKCksIHBhcmFtZXRl
cnMuY29kZWNzLmVuZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVmZXJyZWRfcGF5
bG9hZF90eXBlXShjb25zdCBSdHBDb2RlY1BhcmFtZXRlcnMmIHApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBwLnBheWxvYWRfdHlwZSA9PSBwcmVmZXJyZWRfcGF5bG9hZF90
eXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICBSdHBDb2RlY1BhcmFtZXRlcnMg
cHJlZmVycmVkID0gKml0OwotICBwYXJhbWV0ZXJzLmNvZGVjcy5lcmFzZShpdCk7Ci0gIHBhcmFt
ZXRlcnMuY29kZWNzLmluc2VydChwYXJhbWV0ZXJzLmNvZGVjcy5iZWdpbigpLCBwcmVmZXJyZWQp
OwotCi0gIC8vIEludGVudGlvbmFsbHkgbGVhdmUgb3V0IFNTUkMgc28gb25lJ3MgY2hvc2VuIGF1
dG9tYXRpY2FsbHkuCi0gIFJ0cEVuY29kaW5nUGFyYW1ldGVycyBlbmNvZGluZzsKLSAgZW5jb2Rp
bmcuY29kZWNfcGF5bG9hZF90eXBlLmVtcGxhY2UocHJlZmVycmVkX3BheWxvYWRfdHlwZSk7Ci0g
IGVuY29kaW5nLmZlYy5lbXBsYWNlKEZlY01lY2hhbmlzbTo6UkVEX0FORF9VTFBGRUMpOwotICAv
LyBXaWxsIGNyZWF0ZSBkZWZhdWx0IFJ0eFBhcmFtZXRlcnMsIHdpdGggdW5zZXQgU1NSQy4KLSAg
ZW5jb2RpbmcucnR4LmVtcGxhY2UoKTsKLSAgLy8gMTAwIGticHMuCi0gIGVuY29kaW5nLm1heF9i
aXRyYXRlX2Jwcy5lbXBsYWNlKDEwMDAwMCk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1c2hf
YmFjayhzdGQ6Om1vdmUoZW5jb2RpbmcpKTsKLQotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNp
b25zLmVtcGxhY2VfYmFjaygKLSAgICAgICJ1cm46aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDp0b2Zm
c2V0IiwgMik7Ci0gIHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAot
ICAgICAgImh0dHA6Ly93d3cud2VicnRjLm9yZy9leHBlcmltZW50cy9ydHAtaGRyZXh0L2Ficy1z
ZW5kLXRpbWUiLCAzKTsKLSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2Jh
Y2soInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiwgNCk7Ci0gIHBhcmFtZXRlcnMuaGVhZGVy
X2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAotICAgICAgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQv
IgotICAgICAgImRyYWZ0LWhvbG1lci1ybWNhdC10cmFuc3BvcnQtd2lkZS1jYy1leHRlbnNpb25z
LTAxIiwKLSAgICAgIDUpOwotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2Vf
YmFjaygKLSAgICAgICJodHRwOi8vd3d3LndlYnJ0Yy5vcmcvZXhwZXJpbWVudHMvcnRwLWhkcmV4
dC9wbGF5b3V0LWRlbGF5IiwgNik7Ci0gIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1SdHBQYXJh
bWV0ZXJzIE1ha2VGdWxsVnA4UGFyYW1ldGVycygpIHsKLSAgcmV0dXJuIE1ha2VGdWxsVmlkZW9Q
YXJhbWV0ZXJzKDEwMCk7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZUZ1bGxWcDlQYXJhbWV0ZXJz
KCkgewotICByZXR1cm4gTWFrZUZ1bGxWaWRlb1BhcmFtZXRlcnMoMTAxKTsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvb3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2U1MWUxNDA4MzdkNGI5YzQ5NmM1NmUzYzQ5ODk1
MTk3OTcwNTg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvdGVzdHJ0cHBh
cmFtZXRlcnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
ICovCi0KLSNpZm5kZWYgT1JUQ19URVNUUlRQUEFSQU1FVEVSU19IXwotI2RlZmluZSBPUlRDX1RF
U1RSVFBQQVJBTUVURVJTX0hfCi0KLSNpbmNsdWRlICJhcGkvb3J0Yy9ydHB0cmFuc3BvcnRpbnRl
cmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgotCi1uYW1lc3BhY2Ugd2Vi
cnRjIHsKLQotLy8gSGVscGVyIG1ldGhvZHMgdG8gY3JlYXRlIFJ0cFBhcmFtZXRlcnMgdG8gdXNl
IGZvciBzZW5kaW5nL3JlY2VpdmluZy4KLS8vCi0vLyAiTWFrZU1pbmltYWwiIG1ldGhvZHMgY29u
dGFpbiB0aGUgbWluaW1hbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZm9yIGFuCi0vLyBSdHBTZW5k
ZXIgb3IgUnRwUmVjZWl2ZXIgdG8gZnVuY3Rpb24uIFRoZSAiTWFrZUZ1bGwiIG1ldGhvZHMgYXJl
IHRoZQotLy8gb3Bwb3NpdGUsIGFuZCBpbmNsdWRlIGFsbCBmZWF0dXJlcyB0aGF0IHdvdWxkIG5v
cm1hbGx5IGJlIG9mZmVyZWQgYnkgYQotLy8gUGVlckNvbm5lY3Rpb24sIGFuZCBpbiBzb21lIGNh
c2VzIGFkZGl0aW9uYWwgb25lcy4KLS8vCi0vLyBUaGVzZSBtZXRob2RzIGFyZSBpbnRlbmRlZCB0
byBiZSB1c2VkIGZvciBlbmQtdG8tZW5kIHRlc3RpbmcgKHN1Y2ggYXMgaW4KLS8vIG9ydGNmYWN0
b3J5X2ludGVncmF0aW9udGVzdC5jYyksIG9yIHVuaXQgdGVzdGluZyB0aGF0IGRvZXNuJ3QgY2Fy
ZSBhYm91dCB0aGUKLS8vIHNwZWNpZmljIGNvbnRlbnRzIG9mIHRoZSBwYXJhbWV0ZXJzLiBUZXN0
cyBzaG91bGQgTk9UIGFzc3VtZSB0aGF0IHRoZXNlCi0vLyBtZXRob2RzIHdpbGwgbm90IGNoYW5n
ZTsgdGVzdHMgdGhhdCBhcmUgdGVzdGluZyB0aGF0IGEgc3BlY2lmaWMgdmFsdWUgaW4gdGhlCi0v
LyBwYXJhbWV0ZXJzIGlzIGFwcGxpZWQgcHJvcGVybHkgc2hvdWxkIGNvbnN0cnVjdCB0aGUgcGFy
YW1ldGVycyBpbiB0aGUgdGVzdAotLy8gaXRzZWxmLgotCi1pbmxpbmUgUnRwVHJhbnNwb3J0UGFy
YW1ldGVycyBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSB7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRl
cnMgcGFyYW1ldGVyczsKLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IHRydWU7Ci0gIHJldHVybiBw
YXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMo
KTsKLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVycygpOwotUnRwUGFyYW1l
dGVycyBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aFNzcmModWludDMyX3Qgc3NyYyk7Ci1S
dHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsSXNhY1BhcmFtZXRlcnNXaXRoU3NyYyh1aW50MzJfdCBz
c3JjKTsKLQotUnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLVJ0cFBh
cmFtZXRlcnMgTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzKCk7Ci1SdHBQYXJhbWV0ZXJzIE1ha2VN
aW5pbWFsVnA4UGFyYW1ldGVyc1dpdGhTc3JjKHVpbnQzMl90IHNzcmMpOwotUnRwUGFyYW1ldGVy
cyBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnNXaXRoU3NyYyh1aW50MzJfdCBzc3JjKTsKLQotLy8g
V2lsbCBjcmVhdGUgYW4gZW5jb2Rpbmcgd2l0aCBubyBTU1JDIChtZWFuaW5nICJtYXRjaCBmaXJz
dCBTU1JDIHNlZW4iIGZvciBhCi0vLyByZWNlaXZlciwgb3IgInBpY2sgb25lIGF1dG9tYXRpY2Fs
bHkiIGZvciBhIHNlbmRlcikuCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRl
cnNXaXRoTm9Tc3JjKCk7Ci1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsSXNhY1BhcmFtZXRlcnNX
aXRoTm9Tc3JjKCk7Ci1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVyc1dpdGhO
b1NzcmMoKTsKLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0aE5vU3Ny
YygpOwotCi0vLyBNYWtlIGF1ZGlvIHBhcmFtZXRlcnMgd2l0aCBhbGwgdGhlIGF2YWlsYWJsZSBw
cm9wZXJ0aWVzIGNvbmZpZ3VyZWQgYW5kCi0vLyBmZWF0dXJlcyB1c2VkLCBhbmQgd2l0aCBtdWx0
aXBsZSBjb2RlY3Mgb2ZmZXJlZC4gT2J0YWluZWQgYnkgdGFraW5nIGEKLS8vIHNuYXBzaG90IG9m
IGEgZGVmYXVsdCBQZWVyQ29ubmVjdGlvbiBvZmZlciAoYW5kIGFkZGluZyBvdGhlciB0aGluZ3Ms
IGxpa2UKLS8vIGJpdHJhdGUgbGltaXQpLgotUnRwUGFyYW1ldGVycyBNYWtlRnVsbE9wdXNQYXJh
bWV0ZXJzKCk7Ci1SdHBQYXJhbWV0ZXJzIE1ha2VGdWxsSXNhY1BhcmFtZXRlcnMoKTsKLQotLy8g
TWFrZSB2aWRlbyBwYXJhbWV0ZXJzIHdpdGggYWxsIHRoZSBhdmFpbGFibGUgcHJvcGVydGllcyBj
b25maWd1cmVkIGFuZAotLy8gZmVhdHVyZXMgdXNlZCwgYW5kIHdpdGggbXVsdGlwbGUgY29kZWNz
IG9mZmVyZWQuIE9idGFpbmVkIGJ5IHRha2luZyBhCi0vLyBzbmFwc2hvdCBvZiBhIGRlZmF1bHQg
UGVlckNvbm5lY3Rpb24gb2ZmZXIgKGFuZCBhZGRpbmcgb3RoZXIgdGhpbmdzLCBsaWtlCi0vLyBi
aXRyYXRlIGxpbWl0KS4KLVJ0cFBhcmFtZXRlcnMgTWFrZUZ1bGxWcDhQYXJhbWV0ZXJzKCk7Ci1S
dHBQYXJhbWV0ZXJzIE1ha2VGdWxsVnA5UGFyYW1ldGVycygpOwotCi19ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCi0KLSNlbmRpZiAgLy8gT1JUQ19URVNUUlRQUEFSQU1FVEVSU19IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL0JVSUxELmdu
CmluZGV4IDJkMzUxYmIwZmEyY2ZmMDM4OTIzYmY2MTI3ZTdiZjM3ZTVmYmIxYTcuLjI5ZTYzM2M1
ZDIyN2Y5MjQzNTBjOTRiMmI1ZTM1MWE5NzE4YWZlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9CVUlMRC5nbgorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvQlVJTEQuZ24KQEAgLTI5LDYg
KzI5LDggQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfcDJwIikgewogICAgICJiYXNlL2R0bHN0
cmFuc3BvcnQuaCIsCiAgICAgImJhc2UvZHRsc3RyYW5zcG9ydGludGVybmFsLmNjIiwKICAgICAi
YmFzZS9kdGxzdHJhbnNwb3J0aW50ZXJuYWwuaCIsCisgICAgImJhc2UvaWNlY3JlZGVudGlhbHNp
dGVyYXRvci5jYyIsCisgICAgImJhc2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvci5oIiwKICAgICAi
YmFzZS9pY2V0cmFuc3BvcnRpbnRlcm5hbC5jYyIsCiAgICAgImJhc2UvaWNldHJhbnNwb3J0aW50
ZXJuYWwuaCIsCiAgICAgImJhc2UvbWRuc19tZXNzYWdlLmNjIiwKQEAgLTc0LDggKzc2LDYgQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJydGNfcDJwIikgewogICAgICJiYXNlL3R1cm5wb3J0LmNjIiwK
ICAgICAiYmFzZS90dXJucG9ydC5oIiwKICAgICAiYmFzZS91ZHBwb3J0LmgiLAotICAgICJiYXNl
L3VkcHRyYW5zcG9ydC5jYyIsCi0gICAgImJhc2UvdWRwdHJhbnNwb3J0LmgiLAogICAgICJjbGll
bnQvYmFzaWNwb3J0YWxsb2NhdG9yLmNjIiwKICAgICAiY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRv
ci5oIiwKICAgICAiY2xpZW50L3JlbGF5cG9ydGZhY3RvcnlpbnRlcmZhY2UuaCIsCkBAIC04Niwx
NyArODYsMjAgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfcDJwIikgewogICBkZXBzID0gWwog
ICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgIi4uL2FwaTpv
cnRjX2FwaSIsCisgICAgIi4uL2FwaS90cmFuc3BvcnQ6ZW51bXMiLAogICAgICIuLi9sb2dnaW5n
OmljZV9sb2ciLAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpy
dGNfYmFzZSIsCiAgICAgIi4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAiLi4vcnRjX2Jh
c2U6c3RyaW5ndXRpbHMiLAogICAgICIuLi9ydGNfYmFzZTp3ZWFrX3B0ciIsCisgICAgIi4uL3J0
Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkv
YmFzZTY0IiwKICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdCIsCiAgICAgIi4u
L3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVyczpt
ZXRyaWNzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogCkBAIC0xMzcsNiAr
MTQwLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOnJ0Y19wMnAiLAogICAg
ICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi9hcGk6
b3J0Y19hcGkiLAorICAgICAgIi4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICAgIi4u
L3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3Zl
ZCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLApAQCAtMTUzLDYg
KzE1Nyw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgImJhc2UvYXN5bmNzdHVu
dGNwc29ja2V0X3VuaXR0ZXN0LmNjIiwKICAgICAgICJiYXNlL2Jhc2ljYXN5bmNyZXNvbHZlcmZh
Y3RvcnlfdW5pdHRlc3QuY2MiLAogICAgICAgImJhc2UvZHRsc3RyYW5zcG9ydF91bml0dGVzdC5j
YyIsCisgICAgICAiYmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yX3VuaXR0ZXN0LmNjIiwKICAg
ICAgICJiYXNlL21kbnNfbWVzc2FnZV91bml0dGVzdC5jYyIsCiAgICAgICAiYmFzZS9wMnB0cmFu
c3BvcnRjaGFubmVsX3VuaXR0ZXN0LmNjIiwKICAgICAgICJiYXNlL3BhY2tldGxvc3Nlc3RpbWF0
b3JfdW5pdHRlc3QuY2MiLApAQCAtMTcwLDcgKzE3NSw2IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0
cykgewogICAgICAgImJhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5X3VuaXR0ZXN0LmNj
IiwKICAgICAgICJiYXNlL3R1cm5wb3J0X3VuaXR0ZXN0LmNjIiwKICAgICAgICJiYXNlL3R1cm5z
ZXJ2ZXJfdW5pdHRlc3QuY2MiLAotICAgICAgImJhc2UvdWRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNj
IiwKICAgICAgICJjbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yX3VuaXR0ZXN0LmNjIiwKICAgICBd
CiAgICAgZGVwcyA9IFsKQEAgLTE3OCwxMCArMTgyLDEyIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0
cykgewogICAgICAgIjpydGNfcDJwIiwKICAgICAgICIuLi9hcGk6b3J0Y19hcGkiLAogICAgICAg
Ii4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIs
CiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIs
CiAgICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAorICAgICAgIi4uL3J0Y19iYXNlOnRl
c3RjbGllbnQiLAogICAgICAgIi4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKICAgICAgICIu
Li90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKQEAgLTIwNiw2
ICsyMTIsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImxpYnN0dW5wcm9iZXIiKSB7CiAgICAgIi4u
OndlYnJ0Y19jb21tb24iLAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZSIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAg
XQogfQogCkBAIC0yMjEsNiArMjI4LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAg
ICAiOnAycF90ZXN0X3V0aWxzIiwKICAgICAgICI6cnRjX3AycCIsCiAgICAgICAiLi4vcnRjX2Jh
c2U6Y2hlY2tzIiwKKyAgICAgICIuLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgICAgICIu
Li9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNf
dXRpbHMiLAogICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvT1dORVJTIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL09XTkVSUwppbmRleCAxOGY2MDQ0YjE2
M2Q4NWY5MmYwMWQ3NGY5MDY4NDIyZWEyMWQ5MDI3Li44NGExOWVkNTk2Y2NlZDM1ZDNkY2I3MDMx
ZWU4ZDljMDU5Y2FmYjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvT1dORVJTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9PV05FUlMKQEAgLTYsNiArNiw5IEBAIG1mbG9kbWFuQHdlYnJ0
Yy5vcmcKIHBlcmtqQHdlYnJ0Yy5vcmcKIHB0aGF0Y2hlckB3ZWJydGMub3JnCiBxaW5nc2lAd2Vi
cnRjLm9yZworamVyb2VuZGJAd2VicnRjLm9yZworZW1hZG9tYXJhQHdlYnJ0Yy5vcmcKK3N0ZXZl
YW50b25Ad2VicnRjLm9yZwogc2VyZ2V5dUBjaHJvbWl1bS5vcmcKIHRvbW1pQHdlYnJ0Yy5vcmcK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvYXN5bmNzdHVudGNwc29ja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvYXN5bmNzdHVudGNwc29ja2V0LmNjCmluZGV4IDhi
Yjc5NmZkMWQ1OWNiNTlmODkwNDc1MWVlMmIxYmMwYmU0ODJhMjYuLmQwMTg1YzNlYjI5MGVlODcy
YjkzMzBjOGIyYTA3NTE3NjIyMDk0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2FzeW5jc3R1bnRjcHNvY2tldC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9hc3lu
Y3N0dW50Y3Bzb2NrZXQuY2MKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEFzeW5jU3R1blRDUFNv
Y2tldDo6UHJvY2Vzc0lucHV0KGNoYXIqIGRhdGEsIHNpemVfdCogbGVuKSB7CiAgICAgfQogCiAg
ICAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBkYXRhLCBleHBlY3RlZF9wa3RfbGVuLCByZW1vdGVf
YWRkciwKLSAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7Cisg
ICAgICAgICAgICAgICAgICAgICBydGM6OlRpbWVNaWNyb3MoKSk7CiAKICAgICAqbGVuIC09IGFj
dHVhbF9sZW5ndGg7CiAgICAgaWYgKCpsZW4gPiAwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9hc3luY3N0dW50Y3Bzb2Nr
ZXRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9hc3luY3N0dW50Y3Bzb2NrZXRfdW5pdHRlc3QuY2MKaW5kZXggZGU5NTQxOTQx
ZjQxOGRhMTQ1ODFlMTQ3ODhiOWNiMjhlODdhOGExMS4uYjVmYTE0ZWRjMTRiZjhmNDM2ZDZhNjJi
MzM1ZTZlMWIxZDU1MzQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvYXN5bmNzdHVudGNwc29ja2V0X3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2Fz
eW5jc3R1bnRjcHNvY2tldF91bml0dGVzdC5jYwpAQCAtODEsNyArODEsNyBAQCBjbGFzcyBBc3lu
Y1N0dW5UQ1BTb2NrZXRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4s
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2Fk
ZHIsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3Rp
bWUpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVf
dXMgKi8pIHsKICAgICByZWN2X3BhY2tldHNfLnB1c2hfYmFjayhzdGQ6OnN0cmluZyhkYXRhLCBs
ZW4pKTsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydC5jYwppbmRleCAz
MTRmNjNjZTc0Zjg2NWYxYWYzNDY5MjhiNWQ0ZTExN2Q2YmZhZjM0Li45N2M2YjEzZmI3YTdiMGQx
YjNhODA3NjljZmIzYTI1Mjk5ZmQwM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFu
c3BvcnQuY2MKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9kc2NwLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2Vx
dWV1ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3J0Y2NlcnRpZmljYXRlLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgpAQCAtMTEzLDM3ICsxMTQsMjMgQEAgdm9p
ZCBTdHJlYW1JbnRlcmZhY2VDaGFubmVsOjpDbG9zZSgpIHsKICAgc3RhdGVfID0gcnRjOjpTU19D
TE9TRUQ7CiB9CiAKLUR0bHNUcmFuc3BvcnQ6OkR0bHNUcmFuc3BvcnQoSWNlVHJhbnNwb3J0SW50
ZXJuYWwqIGljZV90cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpCi0gICAgOiB0cmFuc3BvcnRfbmFt
ZV8oaWNlX3RyYW5zcG9ydC0+dHJhbnNwb3J0X25hbWUoKSksCi0gICAgICBjb21wb25lbnRfKGlj
ZV90cmFuc3BvcnQtPmNvbXBvbmVudCgpKSwKLSAgICAgIGljZV90cmFuc3BvcnRfKGljZV90cmFu
c3BvcnQpLAotICAgICAgZG93bndhcmRfKE5VTEwpLAotICAgICAgc3J0cF9jaXBoZXJzXyhHZXRT
dXBwb3J0ZWREdGxzU3J0cENyeXB0b1N1aXRlcyhjcnlwdG9fb3B0aW9ucykpLAotICAgICAgc3Ns
X21heF92ZXJzaW9uXyhydGM6OlNTTF9QUk9UT0NPTF9EVExTXzEyKSwKLSAgICAgIGNyeXB0b19v
cHRpb25zXyhjcnlwdG9fb3B0aW9ucykgewotICBSVENfRENIRUNLKGljZV90cmFuc3BvcnRfKTsK
LSAgQ29ubmVjdFRvSWNlVHJhbnNwb3J0KCk7Ci19Ci0KIER0bHNUcmFuc3BvcnQ6OkR0bHNUcmFu
c3BvcnQoCiAgICAgc3RkOjp1bmlxdWVfcHRyPEljZVRyYW5zcG9ydEludGVybmFsPiBpY2VfdHJh
bnNwb3J0LAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpCisg
ICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykKICAgICA6IHRy
YW5zcG9ydF9uYW1lXyhpY2VfdHJhbnNwb3J0LT50cmFuc3BvcnRfbmFtZSgpKSwKICAgICAgIGNv
bXBvbmVudF8oaWNlX3RyYW5zcG9ydC0+Y29tcG9uZW50KCkpLAotICAgICAgaWNlX3RyYW5zcG9y
dF8oaWNlX3RyYW5zcG9ydC5nZXQoKSksCi0gICAgICBvd25lZF9pY2VfdHJhbnNwb3J0XyhzdGQ6
Om1vdmUoaWNlX3RyYW5zcG9ydCkpLAorICAgICAgaWNlX3RyYW5zcG9ydF8oc3RkOjptb3ZlKGlj
ZV90cmFuc3BvcnQpKSwKICAgICAgIGRvd253YXJkXyhOVUxMKSwKLSAgICAgIHNydHBfY2lwaGVy
c18oR2V0U3VwcG9ydGVkRHRsc1NydHBDcnlwdG9TdWl0ZXMoY3J5cHRvX29wdGlvbnMpKSwKKyAg
ICAgIHNydHBfY2lwaGVyc18oY3J5cHRvX29wdGlvbnMuR2V0U3VwcG9ydGVkRHRsc1NydHBDcnlw
dG9TdWl0ZXMoKSksCiAgICAgICBzc2xfbWF4X3ZlcnNpb25fKHJ0Yzo6U1NMX1BST1RPQ09MX0RU
TFNfMTIpLAogICAgICAgY3J5cHRvX29wdGlvbnNfKGNyeXB0b19vcHRpb25zKSB7Ci0gIFJUQ19E
Q0hFQ0sob3duZWRfaWNlX3RyYW5zcG9ydF8pOworICBSVENfRENIRUNLKGljZV90cmFuc3BvcnRf
KTsKICAgQ29ubmVjdFRvSWNlVHJhbnNwb3J0KCk7CiB9CiAKIER0bHNUcmFuc3BvcnQ6On5EdGxz
VHJhbnNwb3J0KCkgPSBkZWZhdWx0OwogCi1jb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIER0bHNU
cmFuc3BvcnQ6OmNyeXB0b19vcHRpb25zKCkgY29uc3QgeworY29uc3Qgd2VicnRjOjpDcnlwdG9P
cHRpb25zJiBEdGxzVHJhbnNwb3J0OjpjcnlwdG9fb3B0aW9ucygpIGNvbnN0IHsKICAgcmV0dXJu
IGNyeXB0b19vcHRpb25zXzsKIH0KIApAQCAtMzM1LDcgKzMyMiw4IEBAIGJvb2wgRHRsc1RyYW5z
cG9ydDo6RXhwb3J0S2V5aW5nTWF0ZXJpYWwoY29uc3Qgc3RkOjpzdHJpbmcmIGxhYmVsLAogCiBi
b29sIER0bHNUcmFuc3BvcnQ6OlNldHVwRHRscygpIHsKICAgUlRDX0RDSEVDSyhkdGxzX3JvbGVf
KTsKLSAgU3RyZWFtSW50ZXJmYWNlQ2hhbm5lbCogZG93bndhcmQgPSBuZXcgU3RyZWFtSW50ZXJm
YWNlQ2hhbm5lbChpY2VfdHJhbnNwb3J0Xyk7CisgIFN0cmVhbUludGVyZmFjZUNoYW5uZWwqIGRv
d253YXJkID0KKyAgICAgIG5ldyBTdHJlYW1JbnRlcmZhY2VDaGFubmVsKGljZV90cmFuc3BvcnRf
LmdldCgpKTsKIAogICBkdGxzXy5yZXNldChydGM6OlNTTFN0cmVhbUFkYXB0ZXI6OkNyZWF0ZShk
b3dud2FyZCkpOwogICBpZiAoIWR0bHNfKSB7CkBAIC00MzEsNyArNDE5LDcgQEAgaW50IER0bHNU
cmFuc3BvcnQ6OlNlbmRQYWNrZXQoY29uc3QgY2hhciogZGF0YSwKIH0KIAogSWNlVHJhbnNwb3J0
SW50ZXJuYWwqIER0bHNUcmFuc3BvcnQ6OmljZV90cmFuc3BvcnQoKSB7Ci0gIHJldHVybiBpY2Vf
dHJhbnNwb3J0XzsKKyAgcmV0dXJuIGljZV90cmFuc3BvcnRfLmdldCgpOwogfQogCiBib29sIER0
bHNUcmFuc3BvcnQ6OklzRHRsc0Nvbm5lY3RlZCgpIHsKQEAgLTQ4OCw3ICs0NzYsNyBAQCB2b2lk
IER0bHNUcmFuc3BvcnQ6OkNvbm5lY3RUb0ljZVRyYW5zcG9ydCgpIHsKIC8vICAgICAgIGltcGwg
YWdhaW4KIHZvaWQgRHRsc1RyYW5zcG9ydDo6T25Xcml0YWJsZVN0YXRlKHJ0Yzo6UGFja2V0VHJh
bnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCkgewogICBSVENfRENIRUNLX1JVTl9PTigmdGhyZWFk
X2NoZWNrZXJfKTsKLSAgUlRDX0RDSEVDSyh0cmFuc3BvcnQgPT0gaWNlX3RyYW5zcG9ydF8pOwor
ICBSVENfRENIRUNLKHRyYW5zcG9ydCA9PSBpY2VfdHJhbnNwb3J0Xy5nZXQoKSk7CiAgIFJUQ19M
T0coTFNfVkVSQk9TRSkgPDwgVG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAgIDw8ICI6
IGljZV90cmFuc3BvcnQgd3JpdGFibGUgc3RhdGUgY2hhbmdlZCB0byAiCiAgICAgICAgICAgICAg
ICAgICAgICAgPDwgaWNlX3RyYW5zcG9ydF8tPndyaXRhYmxlKCk7CkBAIC01MjAsNyArNTA4LDcg
QEAgdm9pZCBEdGxzVHJhbnNwb3J0OjpPbldyaXRhYmxlU3RhdGUocnRjOjpQYWNrZXRUcmFuc3Bv
cnRJbnRlcm5hbCogdHJhbnNwb3J0KSB7CiAKIHZvaWQgRHRsc1RyYW5zcG9ydDo6T25SZWNlaXZp
bmdTdGF0ZShydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQpIHsKICAgUlRD
X0RDSEVDS19SVU5fT04oJnRocmVhZF9jaGVja2VyXyk7Ci0gIFJUQ19EQ0hFQ0sodHJhbnNwb3J0
ID09IGljZV90cmFuc3BvcnRfKTsKKyAgUlRDX0RDSEVDSyh0cmFuc3BvcnQgPT0gaWNlX3RyYW5z
cG9ydF8uZ2V0KCkpOwogICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8IFRvU3RyaW5nKCkKICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiOiBpY2VfdHJhbnNwb3J0ICIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAicmVjZWl2aW5nIHN0YXRlIGNoYW5nZWQgdG8gIgpAQCAtNTM0LDE1ICs1MjIsMTUg
QEAgdm9pZCBEdGxzVHJhbnNwb3J0OjpPblJlY2VpdmluZ1N0YXRlKHJ0Yzo6UGFja2V0VHJhbnNw
b3J0SW50ZXJuYWwqIHRyYW5zcG9ydCkgewogdm9pZCBEdGxzVHJhbnNwb3J0OjpPblJlYWRQYWNr
ZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7CiAgIFJUQ19EQ0hFQ0tfUlVO
X09OKCZ0aHJlYWRfY2hlY2tlcl8pOwotICBSVENfRENIRUNLKHRyYW5zcG9ydCA9PSBpY2VfdHJh
bnNwb3J0Xyk7CisgIFJUQ19EQ0hFQ0sodHJhbnNwb3J0ID09IGljZV90cmFuc3BvcnRfLmdldCgp
KTsKICAgUlRDX0RDSEVDSyhmbGFncyA9PSAwKTsKIAogICBpZiAoIWR0bHNfYWN0aXZlXykgewog
ICAgIC8vIE5vdCBkb2luZyBEVExTLgotICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwg
c2l6ZSwgcGFja2V0X3RpbWUsIDApOworICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwg
c2l6ZSwgcGFja2V0X3RpbWVfdXMsIDApOwogICAgIHJldHVybjsKICAgfQogCkBAIC02MDUsNyAr
NTkzLDcgQEAgdm9pZCBEdGxzVHJhbnNwb3J0OjpPblJlYWRQYWNrZXQocnRjOjpQYWNrZXRUcmFu
c3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAgICAgICBSVENfRENIRUNLKCFzcnRwX2NpcGhl
cnNfLmVtcHR5KCkpOwogCiAgICAgICAgIC8vIFNpZ25hbCB0aGlzIHVwd2FyZHMgYXMgYSBieXBh
c3MgcGFja2V0LgotICAgICAgICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEsIHNpemUsIHBh
Y2tldF90aW1lLCBQRl9TUlRQX0JZUEFTUyk7CisgICAgICAgIFNpZ25hbFJlYWRQYWNrZXQodGhp
cywgZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWVfdXMsIFBGX1NSVFBfQllQQVNTKTsKICAgICAgIH0K
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRFRMU19UUkFOU1BPUlRfRkFJTEVEOgpAQCAtNjUxLDcg
KzYzOSw3IEBAIHZvaWQgRHRsc1RyYW5zcG9ydDo6T25EdGxzRXZlbnQocnRjOjpTdHJlYW1JbnRl
cmZhY2UqIGR0bHMsIGludCBzaWcsIGludCBlcnIpIHsKICAgICBkbyB7CiAgICAgICByZXQgPSBk
dGxzXy0+UmVhZChidWYsIHNpemVvZihidWYpLCAmcmVhZCwgJnJlYWRfZXJyb3IpOwogICAgICAg
aWYgKHJldCA9PSBydGM6OlNSX1NVQ0NFU1MpIHsKLSAgICAgICAgU2lnbmFsUmVhZFBhY2tldCh0
aGlzLCBidWYsIHJlYWQsIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSwgMCk7CisgICAgICAgIFNp
Z25hbFJlYWRQYWNrZXQodGhpcywgYnVmLCByZWFkLCBydGM6OlRpbWVNaWNyb3MoKSwgMCk7CiAg
ICAgICB9IGVsc2UgaWYgKHJldCA9PSBydGM6OlNSX0VPUykgewogICAgICAgICAvLyBSZW1vdGUg
cGVlciBzaHV0IGRvd24gdGhlIGFzc29jaWF0aW9uIHdpdGggbm8gZXJyb3IuCiAgICAgICAgIFJU
Q19MT0coTFNfSU5GTykgPDwgVG9TdHJpbmcoKSA8PCAiOiBEVExTIHRyYW5zcG9ydCBjbG9zZWQi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvZHRsc3RyYW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydC5oCmluZGV4IDQ1NmYzNzVhMTA3MDgw
N2U3YTdiMjc4MDAxYTc1OWNhYmZiMWMxMGEuLmNlOTU4MDNhZWNiMjEzZGU3M2UzNDg0NGFiNGJj
ZDMzYzQ0MDQyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0LmgKQEAgLTE1
LDYgKzE1LDcgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5j
bHVkZSAiYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvZHRs
c3RyYW5zcG9ydGludGVybmFsLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvaWNldHJhbnNwb3J0aW50
ZXJuYWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKQEAgLTk0LDE1ICs5NSwxMiBA
QCBjbGFzcyBEdGxzVHJhbnNwb3J0IDogcHVibGljIER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAg
IC8vCiAgIC8vIHxjcnlwdG9fb3B0aW9uc3wgYXJlIHRoZSBvcHRpb25zIHVzZWQgZm9yIHRoZSBE
VExTIGhhbmRzaGFrZS4gVGhpcyBhZmZlY3RzCiAgIC8vIHdoZXRoZXIgR0NNIGNyeXB0byBzdWl0
ZXMgYXJlIG5lZ290aWF0ZWQuCi0gIC8vIFRPRE8oemhpaHVhbmcpOiBSZW1vdmUgdGhpcyBvbmNl
IHdlIHN3aXRjaCB0byBKc2VwVHJhbnNwb3J0Q29udHJvbGxlci4KLSAgZXhwbGljaXQgRHRsc1Ry
YW5zcG9ydChJY2VUcmFuc3BvcnRJbnRlcm5hbCogaWNlX3RyYW5zcG9ydCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKTsK
ICAgZXhwbGljaXQgRHRsc1RyYW5zcG9ydChzdGQ6OnVuaXF1ZV9wdHI8SWNlVHJhbnNwb3J0SW50
ZXJuYWw+IGljZV90cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucyk7CiAKICAgfkR0
bHNUcmFuc3BvcnQoKSBvdmVycmlkZTsKIAotICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNy
eXB0b19vcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0
aW9ucyYgY3J5cHRvX29wdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKICAgRHRsc1RyYW5zcG9ydFN0
YXRlIGR0bHNfc3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRy
YW5zcG9ydF9uYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIGludCBjb21wb25lbnQoKSBjb25zdCBv
dmVycmlkZTsKQEAgLTE5Niw3ICsxOTQsNyBAQCBjbGFzcyBEdGxzVHJhbnNwb3J0IDogcHVibGlj
IER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIHZvaWQgT25SZWFkUGFja2V0KHJ0Yzo6UGFja2V0
VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUsCisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzLAogICAgICAgICAgICAgICAg
ICAgICBpbnQgZmxhZ3MpOwogICB2b2lkIE9uU2VudFBhY2tldChydGM6OlBhY2tldFRyYW5zcG9y
dEludGVybmFsKiB0cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U2Vu
dFBhY2tldCYgc2VudF9wYWNrZXQpOwpAQCAtMjIwLDkgKzIxOCw4IEBAIGNsYXNzIER0bHNUcmFu
c3BvcnQgOiBwdWJsaWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAgc3RkOjpzdHJpbmcgdHJh
bnNwb3J0X25hbWVfOwogICBpbnQgY29tcG9uZW50XzsKICAgRHRsc1RyYW5zcG9ydFN0YXRlIGR0
bHNfc3RhdGVfID0gRFRMU19UUkFOU1BPUlRfTkVXOwotICAvLyBVbmRlcmx5aW5nIGljZV90cmFu
c3BvcnQsIG5vdCBvd25lZCBieSB0aGlzIGNsYXNzLgotICBJY2VUcmFuc3BvcnRJbnRlcm5hbCog
Y29uc3QgaWNlX3RyYW5zcG9ydF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxJY2VUcmFuc3BvcnRJbnRl
cm5hbD4gb3duZWRfaWNlX3RyYW5zcG9ydF87CisgIC8vIFVuZGVybHlpbmcgaWNlX3RyYW5zcG9y
dCwgb3duZWQgYnkgdGhpcyBjbGFzcy4KKyAgc3RkOjp1bmlxdWVfcHRyPEljZVRyYW5zcG9ydElu
dGVybmFsPiBpY2VfdHJhbnNwb3J0XzsKICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMU3RyZWFt
QWRhcHRlcj4gZHRsc187ICAvLyBUaGUgRFRMUyBzdHJlYW0KICAgU3RyZWFtSW50ZXJmYWNlQ2hh
bm5lbCoKICAgICAgIGRvd253YXJkXzsgIC8vIFdyYXBwZXIgZm9yIGljZV90cmFuc3BvcnRfLCBv
d25lZCBieSBkdGxzXy4KQEAgLTIzMSw3ICsyMjgsNyBAQCBjbGFzcyBEdGxzVHJhbnNwb3J0IDog
cHVibGljIER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxydGM6
OlJUQ0NlcnRpZmljYXRlPiBsb2NhbF9jZXJ0aWZpY2F0ZV87CiAgIGFic2w6Om9wdGlvbmFsPHJ0
Yzo6U1NMUm9sZT4gZHRsc19yb2xlXzsKICAgcnRjOjpTU0xQcm90b2NvbFZlcnNpb24gc3NsX21h
eF92ZXJzaW9uXzsKLSAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKKyAgd2Vi
cnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKICAgcnRjOjpCdWZmZXIgcmVtb3Rl
X2ZpbmdlcnByaW50X3ZhbHVlXzsKICAgc3RkOjpzdHJpbmcgcmVtb3RlX2ZpbmdlcnByaW50X2Fs
Z29yaXRobV87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFuc3BvcnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0X3Vu
aXR0ZXN0LmNjCmluZGV4IDNjZjQyM2U4NTEzY2RmOWY3ODRhNzNmNjc5ZGM1MWY1MWE2Y2ZkOTIu
LjkzZjNkYTMzN2QzMDMwODRmMDdiZjkwYWFmM2YyY2I0MDNhYWJmMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFu
c3BvcnRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydF91bml0dGVzdC5jYwpAQCAtMTEsNiArMTEs
NyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
c2V0PgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJwMnAvYmFzZS9kdGxzdHJhbnNw
b3J0LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvZmFrZWljZXRyYW5zcG9ydC5oIgpAQCAtMTksNiAr
MjAsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2RzY3AuaCIKICNpbmNsdWRlICJydGNfYmFzZS9n
dW5pdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9ydGNjZXJ0aWZpY2F0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGFkYXB0ZXIuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zc2xpZGVudGl0eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbHN0
cmVhbWFkYXB0ZXIuaCIKQEAgLTQ3LDggKzQ5LDggQEAgdm9pZCBTZXRSZW1vdGVGaW5nZXJwcmlu
dEZyb21DZXJ0KAogICAgIER0bHNUcmFuc3BvcnQqIHRyYW5zcG9ydCwKICAgICBjb25zdCBydGM6
OnNjb3BlZF9yZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4mIGNlcnQsCiAgICAgYm9vbCBtb2Rp
ZnlfZGlnZXN0ID0gZmFsc2UpIHsKLSAgcnRjOjpTU0xGaW5nZXJwcmludCogZmluZ2VycHJpbnQg
PQotICAgICAgcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKGNlcnQp
OworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4gZmluZ2VycHJpbnQgPQor
ICAgICAgcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKCpjZXJ0KTsK
ICAgaWYgKG1vZGlmeV9kaWdlc3QpIHsKICAgICArK2ZpbmdlcnByaW50LT5kaWdlc3RbMF07CiAg
IH0KQEAgLTU3LDcgKzU5LDYgQEAgdm9pZCBTZXRSZW1vdGVGaW5nZXJwcmludEZyb21DZXJ0KAog
ICAgICAgZmluZ2VycHJpbnQtPmFsZ29yaXRobSwKICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGZpbmdlcnByaW50LT5kaWdlc3QuZGF0YSgpKSwKICAgICAgIGZpbmdlcnBy
aW50LT5kaWdlc3Quc2l6ZSgpKSk7Ci0gIGRlbGV0ZSBmaW5nZXJwcmludDsKIH0KIAogY2xhc3Mg
RHRsc1Rlc3RDbGllbnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewpAQCAtNzYsMTgg
Kzc3LDE4IEBAIGNsYXNzIER0bHNUZXN0Q2xpZW50IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90
czw+IHsKICAgfQogICAvLyBTZXQgdXAgZmFrZSBJQ0UgdHJhbnNwb3J0IGFuZCByZWFsIERUTFMg
dHJhbnNwb3J0IHVuZGVyIHRlc3QuCiAgIHZvaWQgU2V0dXBUcmFuc3BvcnRzKEljZVJvbGUgcm9s
ZSwgaW50IGFzeW5jX2RlbGF5X21zID0gMCkgewotICAgIGZha2VfaWNlX3RyYW5zcG9ydF8ucmVz
ZXQobmV3IEZha2VJY2VUcmFuc3BvcnQoImZha2UiLCAwKSk7Ci0gICAgZmFrZV9pY2VfdHJhbnNw
b3J0Xy0+U2V0QXN5bmModHJ1ZSk7Ci0gICAgZmFrZV9pY2VfdHJhbnNwb3J0Xy0+U2V0QXN5bmNE
ZWxheShhc3luY19kZWxheV9tcyk7Ci0gICAgZmFrZV9pY2VfdHJhbnNwb3J0Xy0+U2V0SWNlUm9s
ZShyb2xlKTsKLSAgICBmYWtlX2ljZV90cmFuc3BvcnRfLT5TZXRJY2VUaWVicmVha2VyKChyb2xl
ID09IElDRVJPTEVfQ09OVFJPTExJTkcpID8gMQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAyKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RmFrZUljZVRyYW5zcG9ydD4gZmFrZV9pY2VfdHJhbnNwb3J0OworICAg
IGZha2VfaWNlX3RyYW5zcG9ydC5yZXNldChuZXcgRmFrZUljZVRyYW5zcG9ydCgiZmFrZSIsIDAp
KTsKKyAgICBmYWtlX2ljZV90cmFuc3BvcnQtPlNldEFzeW5jKHRydWUpOworICAgIGZha2VfaWNl
X3RyYW5zcG9ydC0+U2V0QXN5bmNEZWxheShhc3luY19kZWxheV9tcyk7CisgICAgZmFrZV9pY2Vf
dHJhbnNwb3J0LT5TZXRJY2VSb2xlKHJvbGUpOworICAgIGZha2VfaWNlX3RyYW5zcG9ydC0+U2V0
SWNlVGllYnJlYWtlcigocm9sZSA9PSBJQ0VST0xFX0NPTlRST0xMSU5HKSA/IDEgOiAyKTsKICAg
ICAvLyBIb29rIHRoZSByYXcgcGFja2V0cyBzbyB0aGF0IHdlIGNhbiB2ZXJpZnkgdGhleSBhcmUg
ZW5jcnlwdGVkLgotICAgIGZha2VfaWNlX3RyYW5zcG9ydF8tPlNpZ25hbFJlYWRQYWNrZXQuY29u
bmVjdCgKKyAgICBmYWtlX2ljZV90cmFuc3BvcnQtPlNpZ25hbFJlYWRQYWNrZXQuY29ubmVjdCgK
ICAgICAgICAgdGhpcywgJkR0bHNUZXN0Q2xpZW50OjpPbkZha2VJY2VUcmFuc3BvcnRSZWFkUGFj
a2V0KTsKIAotICAgIGR0bHNfdHJhbnNwb3J0Xy5yZXNldCgKLSAgICAgICAgbmV3IER0bHNUcmFu
c3BvcnQoZmFrZV9pY2VfdHJhbnNwb3J0Xy5nZXQoKSwgcnRjOjpDcnlwdG9PcHRpb25zKCkpKTsK
KyAgICBkdGxzX3RyYW5zcG9ydF8gPSBhYnNsOjptYWtlX3VuaXF1ZTxEdGxzVHJhbnNwb3J0PigK
KyAgICAgICAgc3RkOjptb3ZlKGZha2VfaWNlX3RyYW5zcG9ydCksIHdlYnJ0Yzo6Q3J5cHRvT3B0
aW9ucygpKTsKICAgICBkdGxzX3RyYW5zcG9ydF8tPlNldFNzbE1heFByb3RvY29sVmVyc2lvbihz
c2xfbWF4X3ZlcnNpb25fKTsKICAgICAvLyBOb3RlOiBDZXJ0aWZpY2F0ZSBtYXkgYmUgbnVsbCBo
ZXJlIGlmIHRlc3RpbmcgcGFzc3Rocm91Z2guCiAgICAgZHRsc190cmFuc3BvcnRfLT5TZXRMb2Nh
bENlcnRpZmljYXRlKGNlcnRpZmljYXRlXyk7CkBAIC05OSwxMyArMTAwLDE2IEBAIGNsYXNzIER0
bHNUZXN0Q2xpZW50IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgICAgdGhp
cywgJkR0bHNUZXN0Q2xpZW50OjpPblRyYW5zcG9ydFNlbnRQYWNrZXQpOwogICB9CiAKLSAgRmFr
ZUljZVRyYW5zcG9ydCogZmFrZV9pY2VfdHJhbnNwb3J0KCkgeyByZXR1cm4gZmFrZV9pY2VfdHJh
bnNwb3J0Xy5nZXQoKTsgfQorICBGYWtlSWNlVHJhbnNwb3J0KiBmYWtlX2ljZV90cmFuc3BvcnQo
KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZha2VJY2VUcmFuc3BvcnQqPihkdGxzX3RyYW5z
cG9ydF8tPmljZV90cmFuc3BvcnQoKSk7CisgIH0KIAogICBEdGxzVHJhbnNwb3J0KiBkdGxzX3Ry
YW5zcG9ydCgpIHsgcmV0dXJuIGR0bHNfdHJhbnNwb3J0Xy5nZXQoKTsgfQogCiAgIC8vIFNpbXVs
YXRlIGZha2UgSUNFIHRyYW5zcG9ydHMgY29ubmVjdGluZy4KICAgYm9vbCBDb25uZWN0KER0bHNU
ZXN0Q2xpZW50KiBwZWVyLCBib29sIGFzeW1tZXRyaWMpIHsKLSAgICBmYWtlX2ljZV90cmFuc3Bv
cnRfLT5TZXREZXN0aW5hdGlvbihwZWVyLT5mYWtlX2ljZV90cmFuc3BvcnQoKSwgYXN5bW1ldHJp
Yyk7CisgICAgZmFrZV9pY2VfdHJhbnNwb3J0KCktPlNldERlc3RpbmF0aW9uKHBlZXItPmZha2Vf
aWNlX3RyYW5zcG9ydCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhc3ltbWV0cmljKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCkBAIC0yMzIsNyArMjM2LDcg
QEAgY2xhc3MgRHRsc1Rlc3RDbGllbnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewog
ICB2b2lkIE9uVHJhbnNwb3J0UmVhZFBhY2tldChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFs
KiB0cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRh
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGlt
ZV91cyAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7CiAgICAg
dWludDMyX3QgcGFja2V0X251bSA9IDA7CiAgICAgQVNTRVJUX1RSVUUoVmVyaWZ5UGFja2V0KGRh
dGEsIHNpemUsICZwYWNrZXRfbnVtKSk7CkBAIC0yNTQsNyArMjU4LDcgQEAgY2xhc3MgRHRsc1Rl
c3RDbGllbnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICB2b2lkIE9uRmFrZUlj
ZVRyYW5zcG9ydFJlYWRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNw
b3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiB0
aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYg
LyogcGFja2V0X3RpbWVfdXMgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgZmxhZ3MpIHsKICAgICAvLyBGbGFncyBzaG91bGRuJ3QgYmUgc2V0IG9uIHRoZSB1bmRl
cmx5aW5nIFRyYW5zcG9ydCBwYWNrZXRzLgogICAgIEFTU0VSVF9FUSgwLCBmbGFncyk7CkBAIC01
MTMsOCArNTE3LDggQEAgVEVTVF9GKER0bHNUcmFuc3BvcnRUZXN0LCBUZXN0Q2VydGlmaWNhdGVz
QmVmb3JlQ29ubmVjdCkgewogICAvLyByZW1vdGUgY2VydGlmaWNhdGUsIGJlY2F1c2UgY29ubmVj
dGlvbiBoYXMgbm90IHlldCBvY2N1cnJlZC4KICAgYXV0byBjZXJ0aWZpY2F0ZTEgPSBjbGllbnQx
Xy5kdGxzX3RyYW5zcG9ydCgpLT5HZXRMb2NhbENlcnRpZmljYXRlKCk7CiAgIGF1dG8gY2VydGlm
aWNhdGUyID0gY2xpZW50Ml8uZHRsc190cmFuc3BvcnQoKS0+R2V0TG9jYWxDZXJ0aWZpY2F0ZSgp
OwotICBBU1NFUlRfTkUoY2VydGlmaWNhdGUxLT5zc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0cmlu
ZygpLAotICAgICAgICAgICAgY2VydGlmaWNhdGUyLT5zc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0
cmluZygpKTsKKyAgQVNTRVJUX05FKGNlcnRpZmljYXRlMS0+R2V0U1NMQ2VydGlmaWNhdGUoKS5U
b1BFTVN0cmluZygpLAorICAgICAgICAgICAgY2VydGlmaWNhdGUyLT5HZXRTU0xDZXJ0aWZpY2F0
ZSgpLlRvUEVNU3RyaW5nKCkpOwogICBBU1NFUlRfRkFMU0UoY2xpZW50MV8uZHRsc190cmFuc3Bv
cnQoKS0+R2V0UmVtb3RlU1NMQ2VydENoYWluKCkpOwogICBBU1NFUlRfRkFMU0UoY2xpZW50Ml8u
ZHRsc190cmFuc3BvcnQoKS0+R2V0UmVtb3RlU1NMQ2VydENoYWluKCkpOwogfQpAQCAtNTI3LDgg
KzUzMSw4IEBAIFRFU1RfRihEdGxzVHJhbnNwb3J0VGVzdCwgVGVzdENlcnRpZmljYXRlc0FmdGVy
Q29ubmVjdCkgewogICAvLyBBZnRlciBjb25uZWN0aW9uLCBlYWNoIHNpZGUgaGFzIGEgZGlzdGlu
Y3QgbG9jYWwgY2VydGlmaWNhdGUuCiAgIGF1dG8gY2VydGlmaWNhdGUxID0gY2xpZW50MV8uZHRs
c190cmFuc3BvcnQoKS0+R2V0TG9jYWxDZXJ0aWZpY2F0ZSgpOwogICBhdXRvIGNlcnRpZmljYXRl
MiA9IGNsaWVudDJfLmR0bHNfdHJhbnNwb3J0KCktPkdldExvY2FsQ2VydGlmaWNhdGUoKTsKLSAg
QVNTRVJUX05FKGNlcnRpZmljYXRlMS0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwK
LSAgICAgICAgICAgIGNlcnRpZmljYXRlMi0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmco
KSk7CisgIEFTU0VSVF9ORShjZXJ0aWZpY2F0ZTEtPkdldFNTTENlcnRpZmljYXRlKCkuVG9QRU1T
dHJpbmcoKSwKKyAgICAgICAgICAgIGNlcnRpZmljYXRlMi0+R2V0U1NMQ2VydGlmaWNhdGUoKS5U
b1BFTVN0cmluZygpKTsKIAogICAvLyBFYWNoIHNpZGUncyByZW1vdGUgY2VydGlmaWNhdGUgaXMg
dGhlIG90aGVyIHNpZGUncyBsb2NhbCBjZXJ0aWZpY2F0ZS4KICAgc3RkOjp1bmlxdWVfcHRyPHJ0
Yzo6U1NMQ2VydENoYWluPiByZW1vdGVfY2VydDEgPQpAQCAtNTM2LDEzICs1NDAsMTMgQEAgVEVT
VF9GKER0bHNUcmFuc3BvcnRUZXN0LCBUZXN0Q2VydGlmaWNhdGVzQWZ0ZXJDb25uZWN0KSB7CiAg
IEFTU0VSVF9UUlVFKHJlbW90ZV9jZXJ0MSk7CiAgIEFTU0VSVF9FUSgxdSwgcmVtb3RlX2NlcnQx
LT5HZXRTaXplKCkpOwogICBBU1NFUlRfRVEocmVtb3RlX2NlcnQxLT5HZXQoMCkuVG9QRU1TdHJp
bmcoKSwKLSAgICAgICAgICAgIGNlcnRpZmljYXRlMi0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1T
dHJpbmcoKSk7CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZTItPkdldFNTTENlcnRpZmljYXRlKCku
VG9QRU1TdHJpbmcoKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTENlcnRDaGFpbj4gcmVt
b3RlX2NlcnQyID0KICAgICAgIGNsaWVudDJfLmR0bHNfdHJhbnNwb3J0KCktPkdldFJlbW90ZVNT
TENlcnRDaGFpbigpOwogICBBU1NFUlRfVFJVRShyZW1vdGVfY2VydDIpOwogICBBU1NFUlRfRVEo
MXUsIHJlbW90ZV9jZXJ0Mi0+R2V0U2l6ZSgpKTsKICAgQVNTRVJUX0VRKHJlbW90ZV9jZXJ0Mi0+
R2V0KDApLlRvUEVNU3RyaW5nKCksCi0gICAgICAgICAgICBjZXJ0aWZpY2F0ZTEtPnNzbF9jZXJ0
aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCkpOworICAgICAgICAgICAgY2VydGlmaWNhdGUxLT5HZXRT
U0xDZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCkpOwogfQogCiAvLyBUZXN0IHRoYXQgcGFja2V0
cyBhcmUgcmV0cmFuc21pdHRlZCBhY2NvcmRpbmcgdG8gdGhlIGV4cGVjdGVkIHNjaGVkdWxlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvZHRsc3RyYW5zcG9ydGludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0aW50ZXJuYWwuaAppbmRleCA1
OGQzNmZhMDhkYmM4M2Y2NjA2ZjRjZTk4ZTg0NDZmMjVhZGJmYWFkLi5hNzEzNzQ0OWY0Y2YxNTk4
NDQzMzhkMjVhYWM0MTMwZDg1Mjk5NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0aW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9k
dGxzdHJhbnNwb3J0aW50ZXJuYWwuaApAQCAtMTUsMTAgKzE1LDEwIEBACiAjaW5jbHVkZSA8c3Ry
aW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRvb3B0
aW9ucy5oIgogI2luY2x1ZGUgInAycC9iYXNlL2ljZXRyYW5zcG9ydGludGVybmFsLmgiCiAjaW5j
bHVkZSAicDJwL2Jhc2UvcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9zc2xzdHJlYW1hZGFwdGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2Rl
LmgiCiAKIG5hbWVzcGFjZSBjcmlja2V0IHsKIApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBEdGxz
VHJhbnNwb3J0SW50ZXJuYWwgOiBwdWJsaWMgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCB7
CiAgcHVibGljOgogICB+RHRsc1RyYW5zcG9ydEludGVybmFsKCkgb3ZlcnJpZGU7CiAKLSAgdmly
dHVhbCBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKCkgY29uc3QgPSAw
OworICB2aXJ0dWFsIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMo
KSBjb25zdCA9IDA7CiAKICAgdmlydHVhbCBEdGxzVHJhbnNwb3J0U3RhdGUgZHRsc19zdGF0ZSgp
IGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvZmFrZWR0bHN0cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2Zha2VkdGxzdHJhbnNwb3J0LmgK
aW5kZXggY2I5NDRkM2RiNWIzOWRhNzYwZDQ1NDIyNDU3OTJkZjUyYmRiNjdhZC4uZGFlZjVjNzdm
Yzk5OGE0MTE5MGJhODhlNGJmNDIwOWE1ZjVmYzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZmFrZWR0bHN0cmFuc3BvcnQu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS9mYWtlZHRsc3RyYW5zcG9ydC5oCkBAIC0xNyw5ICsxNywxMSBAQAogI2luY2x1ZGUgPHZlY3Rv
cj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS9jcnlw
dG8vY3J5cHRvb3B0aW9ucy5oIgogI2luY2x1ZGUgInAycC9iYXNlL2R0bHN0cmFuc3BvcnRpbnRl
cm5hbC5oIgogI2luY2x1ZGUgInAycC9iYXNlL2Zha2VpY2V0cmFuc3BvcnQuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9mYWtlc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0
aWZpY2F0ZS5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKQEAgLTMyLDcgKzM0LDcgQEAgY2xh
c3MgRmFrZUR0bHNUcmFuc3BvcnQgOiBwdWJsaWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAg
ICAgIDogaWNlX3RyYW5zcG9ydF8oaWNlX3RyYW5zcG9ydCksCiAgICAgICAgIHRyYW5zcG9ydF9u
YW1lXyhpY2VfdHJhbnNwb3J0LT50cmFuc3BvcnRfbmFtZSgpKSwKICAgICAgICAgY29tcG9uZW50
XyhpY2VfdHJhbnNwb3J0LT5jb21wb25lbnQoKSksCi0gICAgICAgIGR0bHNfZmluZ2VycHJpbnRf
KCIiLCBudWxscHRyLCAwKSB7CisgICAgICAgIGR0bHNfZmluZ2VycHJpbnRfKCIiLCBudWxscHRy
KSB7CiAgICAgUlRDX0RDSEVDSyhpY2VfdHJhbnNwb3J0Xyk7CiAgICAgaWNlX3RyYW5zcG9ydF8t
PlNpZ25hbFJlYWRQYWNrZXQuY29ubmVjdCgKICAgICAgICAgdGhpcywgJkZha2VEdGxzVHJhbnNw
b3J0OjpPbkljZVRyYW5zcG9ydFJlYWRQYWNrZXQpOwpAQCAtNDQsNyArNDYsNyBAQCBjbGFzcyBG
YWtlRHRsc1RyYW5zcG9ydCA6IHB1YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJuYWwgewogICAgICAg
OiBvd25lZF9pY2VfdHJhbnNwb3J0XyhzdGQ6Om1vdmUoaWNlKSksCiAgICAgICAgIHRyYW5zcG9y
dF9uYW1lXyhvd25lZF9pY2VfdHJhbnNwb3J0Xy0+dHJhbnNwb3J0X25hbWUoKSksCiAgICAgICAg
IGNvbXBvbmVudF8ob3duZWRfaWNlX3RyYW5zcG9ydF8tPmNvbXBvbmVudCgpKSwKLSAgICAgICAg
ZHRsc19maW5nZXJwcmludF8oIiIsIG51bGxwdHIsIDApIHsKKyAgICAgICAgZHRsc19maW5nZXJw
cmludF8oIiIsIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+KCkpIHsKICAgICBpY2VfdHJh
bnNwb3J0XyA9IG93bmVkX2ljZV90cmFuc3BvcnRfLmdldCgpOwogICAgIGljZV90cmFuc3BvcnRf
LT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3QoCiAgICAgICAgIHRoaXMsICZGYWtlRHRsc1RyYW5z
cG9ydDo6T25JY2VUcmFuc3BvcnRSZWFkUGFja2V0KTsKQEAgLTgyLDYgKzg0LDcgQEAgY2xhc3Mg
RmFrZUR0bHNUcmFuc3BvcnQgOiBwdWJsaWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAgICBp
Y2VfdHJhbnNwb3J0Xy0+U2V0UmVjZWl2aW5nKHJlY2VpdmluZyk7CiAgICAgc2V0X3JlY2Vpdmlu
ZyhyZWNlaXZpbmcpOwogICB9CisgIHZvaWQgU2V0RHRsc1N0YXRlKER0bHNUcmFuc3BvcnRTdGF0
ZSBzdGF0ZSkgeyBkdGxzX3N0YXRlXyA9IHN0YXRlOyB9CiAKICAgLy8gU2ltdWxhdGVzIHRoZSB0
d28gRFRMUyB0cmFuc3BvcnRzIGNvbm5lY3RpbmcgdG8gZWFjaCBvdGhlci4KICAgLy8gSWYgfGFz
eW1tZXRyaWN8IGlzIHRydWUgdGhpcyBtZXRob2Qgb25seSBhZmZlY3RzIHRoaXMgRmFrZUR0bHNU
cmFuc3BvcnQuCkBAIC0xMzIsNyArMTM1LDggQEAgY2xhc3MgRmFrZUR0bHNUcmFuc3BvcnQgOiBw
dWJsaWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAgYm9vbCBTZXRSZW1vdGVGaW5nZXJwcmlu
dChjb25zdCBzdGQ6OnN0cmluZyYgYWxnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QqIGRpZ2VzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGlnZXN0X2xlbikgb3ZlcnJpZGUgewotICAgIGR0bHNfZmluZ2VycHJpbnRfID0gcnRjOjpTU0xG
aW5nZXJwcmludChhbGcsIGRpZ2VzdCwgZGlnZXN0X2xlbik7CisgICAgZHRsc19maW5nZXJwcmlu
dF8gPQorICAgICAgICBydGM6OlNTTEZpbmdlcnByaW50KGFsZywgcnRjOjpNYWtlQXJyYXlWaWV3
KGRpZ2VzdCwgZGlnZXN0X2xlbikpOwogICAgIHJldHVybiB0cnVlOwogICB9CiAgIGJvb2wgU2V0
U3NsTWF4UHJvdG9jb2xWZXJzaW9uKHJ0Yzo6U1NMUHJvdG9jb2xWZXJzaW9uIHZlcnNpb24pIG92
ZXJyaWRlIHsKQEAgLTE0OSwxMCArMTUzLDEwIEBAIGNsYXNzIEZha2VEdGxzVHJhbnNwb3J0IDog
cHVibGljIER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgICAgKnJvbGUgPSAqZHRsc19yb2xlXzsK
ICAgICByZXR1cm4gdHJ1ZTsKICAgfQotICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0
b19vcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGUgeworICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlv
bnMmIGNyeXB0b19vcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGUgewogICAgIHJldHVybiBjcnlwdG9f
b3B0aW9uc187CiAgIH0KLSAgdm9pZCBTZXRDcnlwdG9PcHRpb25zKGNvbnN0IHJ0Yzo6Q3J5cHRv
T3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIHsKKyAgdm9pZCBTZXRDcnlwdG9PcHRpb25zKGNvbnN0
IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIHsKICAgICBjcnlwdG9fb3B0
aW9uc18gPSBjcnlwdG9fb3B0aW9uczsKICAgfQogICBib29sIFNldExvY2FsQ2VydGlmaWNhdGUo
CkBAIC0xNzgsOCArMTgyLDEwIEBAIGNsYXNzIEZha2VEdGxzVHJhbnNwb3J0IDogcHVibGljIER0
bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgICAgcmV0dXJuIGxvY2FsX2NlcnRfOwogICB9CiAgIHN0
ZDo6dW5pcXVlX3B0cjxydGM6OlNTTENlcnRDaGFpbj4gR2V0UmVtb3RlU1NMQ2VydENoYWluKCkg
Y29uc3Qgb3ZlcnJpZGUgewotICAgIHJldHVybiByZW1vdGVfY2VydF8gPyBhYnNsOjptYWtlX3Vu
aXF1ZTxydGM6OlNTTENlcnRDaGFpbj4ocmVtb3RlX2NlcnRfKQotICAgICAgICAgICAgICAgICAg
ICAgICAgOiBudWxscHRyOworICAgIGlmICghcmVtb3RlX2NlcnRfKSB7CisgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPHJ0Yzo6U1NMQ2Vy
dENoYWluPihyZW1vdGVfY2VydF8tPkNsb25lKCkpOwogICB9CiAgIGJvb2wgRXhwb3J0S2V5aW5n
TWF0ZXJpYWwoY29uc3Qgc3RkOjpzdHJpbmcmIGxhYmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QqIGNvbnRleHQsCkBAIC0yMzIsOSArMjM4LDkgQEAgY2xhc3Mg
RmFrZUR0bHNUcmFuc3BvcnQgOiBwdWJsaWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAgdm9p
ZCBPbkljZVRyYW5zcG9ydFJlYWRQYWNrZXQoUGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIGljZV8s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGltZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykgewotICAgIFNpZ25hbFJlYWRQ
YWNrZXQodGhpcywgZGF0YSwgbGVuLCB0aW1lLCBmbGFncyk7CisgICAgU2lnbmFsUmVhZFBhY2tl
dCh0aGlzLCBkYXRhLCBsZW4sIHBhY2tldF90aW1lX3VzLCBmbGFncyk7CiAgIH0KIAogICB2b2lk
IHNldF9yZWNlaXZpbmcoYm9vbCByZWNlaXZpbmcpIHsKQEAgLTI3Miw3ICsyNzgsNyBAQCBjbGFz
cyBGYWtlRHRsc1RyYW5zcG9ydCA6IHB1YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJuYWwgewogICBy
dGM6OlNTTEZpbmdlcnByaW50IGR0bHNfZmluZ2VycHJpbnRfOwogICBhYnNsOjpvcHRpb25hbDxy
dGM6OlNTTFJvbGU+IGR0bHNfcm9sZV87CiAgIGludCBjcnlwdG9fc3VpdGVfID0gcnRjOjpTUlRQ
X0FFUzEyOF9DTV9TSEExXzgwOwotICBydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnNf
OworICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnNfOwogCiAgIER0bHNUcmFu
c3BvcnRTdGF0ZSBkdGxzX3N0YXRlXyA9IERUTFNfVFJBTlNQT1JUX05FVzsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZmFr
ZWljZXRyYW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvZmFrZWljZXRyYW5zcG9ydC5oCmluZGV4IDQ4MTU3NDUxZWE2OWExYjE1MjJk
NDE4NjU0ZTAwN2JiOWFlNDM1ZDAuLjg4YWZjMzgyZWNiYjg1MTkxNTMyOGIzNjkzNmU3NDBjYWNl
ZTc4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL2Zha2VpY2V0cmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9mYWtlaWNldHJhbnNwb3J0LmgKQEAgLTIz
LDggKzIzLDEzIEBAIG5hbWVzcGFjZSBjcmlja2V0IHsKIAogY2xhc3MgRmFrZUljZVRyYW5zcG9y
dCA6IHB1YmxpYyBJY2VUcmFuc3BvcnRJbnRlcm5hbCB7CiAgcHVibGljOgotICBleHBsaWNpdCBG
YWtlSWNlVHJhbnNwb3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBpbnQgY29tcG9uZW50KQot
ICAgICAgOiBuYW1lXyhuYW1lKSwgY29tcG9uZW50Xyhjb21wb25lbnQpIHt9CisgIGV4cGxpY2l0
IEZha2VJY2VUcmFuc3BvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGNvbXBvbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQgPSBudWxscHRyKQorICAgICAgOiBuYW1lXyhu
YW1lKSwKKyAgICAgICAgY29tcG9uZW50Xyhjb21wb25lbnQpLAorICAgICAgICBuZXR3b3JrX3Ro
cmVhZF8obmV0d29ya190aHJlYWQgPyBuZXR3b3JrX3RocmVhZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBydGM6OlRocmVhZDo6Q3VycmVudCgpKSB7fQogICB+RmFr
ZUljZVRyYW5zcG9ydCgpIG92ZXJyaWRlIHsKICAgICBpZiAoZGVzdF8gJiYgZGVzdF8tPmRlc3Rf
ID09IHRoaXMpIHsKICAgICAgIGRlc3RfLT5kZXN0XyA9IG51bGxwdHI7CkBAIC0xMTQsNiArMTE5
LDE5IEBAIGNsYXNzIEZha2VJY2VUcmFuc3BvcnQgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJu
YWwgewogICAgIHJldHVybiBJY2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfQ09OTkVDVElORzsKICAg
fQogCisgIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGUgR2V0SWNlVHJhbnNwb3J0U3RhdGUoKSBj
b25zdCBvdmVycmlkZSB7CisgICAgaWYgKGNvbm5lY3Rpb25fY291bnRfID09IDApIHsKKyAgICAg
IHJldHVybiBoYWRfY29ubmVjdGlvbl8gPyB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlOjprRmFp
bGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogd2VicnRjOjpJY2VUcmFuc3BvcnRT
dGF0ZTo6a05ldzsKKyAgICB9CisKKyAgICBpZiAoY29ubmVjdGlvbl9jb3VudF8gPT0gMSkgewor
ICAgICAgcmV0dXJuIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtDb21wbGV0ZWQ7CisgICAg
fQorCisgICAgcmV0dXJuIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtDb25uZWN0ZWQ7Cisg
IH0KKwogICB2b2lkIFNldEljZVJvbGUoSWNlUm9sZSByb2xlKSBvdmVycmlkZSB7IHJvbGVfID0g
cm9sZTsgfQogICBJY2VSb2xlIEdldEljZVJvbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBy
b2xlXzsgfQogICB2b2lkIFNldEljZVRpZWJyZWFrZXIodWludDY0X3QgdGllYnJlYWtlcikgb3Zl
cnJpZGUgewpAQCAtMjI2LDYgKzI0NCw4IEBAIGNsYXNzIEZha2VJY2VUcmFuc3BvcnQgOiBwdWJs
aWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewogICB9CiAgIHZvaWQgU2V0TmV0d29ya1JvdXRlKGFi
c2w6Om9wdGlvbmFsPHJ0Yzo6TmV0d29ya1JvdXRlPiBuZXR3b3JrX3JvdXRlKSB7CiAgICAgbmV0
d29ya19yb3V0ZV8gPSBuZXR3b3JrX3JvdXRlOworICAgIG5ldHdvcmtfdGhyZWFkXy0+SW52b2tl
PHZvaWQ+KAorICAgICAgICBSVENfRlJPTV9IRVJFLCBbdGhpc10geyBTaWduYWxOZXR3b3JrUm91
dGVDaGFuZ2VkKG5ldHdvcmtfcm91dGVfKTsgfSk7CiAgIH0KIAogIHByaXZhdGU6CkBAIC0yNTMs
NyArMjczLDcgQEAgY2xhc3MgRmFrZUljZVRyYW5zcG9ydCA6IHB1YmxpYyBJY2VUcmFuc3BvcnRJ
bnRlcm5hbCB7CiAgICAgaWYgKGRlc3RfKSB7CiAgICAgICBsYXN0X3NlbnRfcGFja2V0XyA9IHBh
Y2tldDsKICAgICAgIGRlc3RfLT5TaWduYWxSZWFkUGFja2V0KGRlc3RfLCBwYWNrZXQuZGF0YTxj
aGFyPigpLCBwYWNrZXQuc2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRj
OjpDcmVhdGVQYWNrZXRUaW1lKDApLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJ0Yzo6VGltZU1pY3JvcygpLCAwKTsKICAgICB9CiAgIH0KIApAQCAtMjgyLDYgKzMwMiw3IEBA
IGNsYXNzIEZha2VJY2VUcmFuc3BvcnQgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewog
ICBhYnNsOjpvcHRpb25hbDxydGM6Ok5ldHdvcmtSb3V0ZT4gbmV0d29ya19yb3V0ZV87CiAgIHN0
ZDo6bWFwPHJ0Yzo6U29ja2V0OjpPcHRpb24sIGludD4gc29ja2V0X29wdGlvbnNfOwogICBydGM6
OkNvcHlPbldyaXRlQnVmZmVyIGxhc3Rfc2VudF9wYWNrZXRfOworICBydGM6OlRocmVhZCogY29u
c3QgbmV0d29ya190aHJlYWRfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L2Zha2VwYWNrZXR0cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaAppbmRleCBlNTdiYzE3OWE3
OTkxNzE0YzFiNGI0MzIzYjU3ZjU0NzJkMTlkYjdmLi41MmIzOTIxNWM3NTI0YWMzNDViYzUzOWRj
YTA3NWMyMTgyN2Y4MThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9mYWtlcGFja2V0dHJhbnNwb3J0LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZmFrZXBhY2tldHRy
YW5zcG9ydC5oCkBAIC0xMTksNyArMTE5LDcgQEAgY2xhc3MgRmFrZVBhY2tldFRyYW5zcG9ydCA6
IHB1YmxpYyBQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCB7CiAgICAgbGFzdF9zZW50X3BhY2tldF8g
PSBwYWNrZXQ7CiAgICAgaWYgKGRlc3RfKSB7CiAgICAgICBkZXN0Xy0+U2lnbmFsUmVhZFBhY2tl
dChkZXN0XywgcGFja2V0LmRhdGE8Y2hhcj4oKSwgcGFja2V0LnNpemUoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENyZWF0ZVBhY2tldFRpbWUoMCksIDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGltZU1pY3JvcygpLCAwKTsKICAgICB9CiAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
aWNlY3JlZGVudGlhbHNpdGVyYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2QyOTY1MzQ0MGQ3Y2IyZGE4MGM2ZDVhY2YxMGUzMzljMTIzZWQwZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2MKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2luY2x1ZGUgInAycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9oZWxwZXJzLmgiCisKK25hbWVzcGFjZSBjcmlja2V0IHsKKworSWNl
Q3JlZGVudGlhbHNJdGVyYXRvcjo6SWNlQ3JlZGVudGlhbHNJdGVyYXRvcigKKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxJY2VQYXJhbWV0ZXJzPiYgcG9vbGVkX2NyZWRlbnRpYWxzKQorICAgIDogcG9v
bGVkX2ljZV9jcmVkZW50aWFsc18ocG9vbGVkX2NyZWRlbnRpYWxzKSB7fQorCitJY2VDcmVkZW50
aWFsc0l0ZXJhdG9yOjp+SWNlQ3JlZGVudGlhbHNJdGVyYXRvcigpID0gZGVmYXVsdDsKKworSWNl
UGFyYW1ldGVycyBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yOjpDcmVhdGVSYW5kb21JY2VDcmVkZW50
aWFscygpIHsKKyAgcmV0dXJuIEljZVBhcmFtZXRlcnMocnRjOjpDcmVhdGVSYW5kb21TdHJpbmco
SUNFX1VGUkFHX0xFTkdUSCksCisgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3JlYXRlUmFu
ZG9tU3RyaW5nKElDRV9QV0RfTEVOR1RIKSwgZmFsc2UpOworfQorCitJY2VQYXJhbWV0ZXJzIElj
ZUNyZWRlbnRpYWxzSXRlcmF0b3I6OkdldEljZUNyZWRlbnRpYWxzKCkgeworICBpZiAocG9vbGVk
X2ljZV9jcmVkZW50aWFsc18uZW1wdHkoKSkgeworICAgIHJldHVybiBDcmVhdGVSYW5kb21JY2VD
cmVkZW50aWFscygpOworICB9CisgIEljZVBhcmFtZXRlcnMgY3JlZGVudGlhbHMgPSBwb29sZWRf
aWNlX2NyZWRlbnRpYWxzXy5iYWNrKCk7CisgIHBvb2xlZF9pY2VfY3JlZGVudGlhbHNfLnBvcF9i
YWNrKCk7CisgIHJldHVybiBjcmVkZW50aWFsczsKK30KKworfSAgLy8gbmFtZXNwYWNlIGNyaWNr
ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zM2UxZDY0NjBhZTkwNmIzNTY4OTdjNGVkYjhhYzZiOWU5MDRlYzNhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvci5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpZm5kZWYgUDJQX0JBU0VfSUNFQ1JFREVOVElBTFNJVEVSQVRPUl9I
XworI2RlZmluZSBQMlBfQkFTRV9JQ0VDUkVERU5USUFMU0lURVJBVE9SX0hfCisKKyNpbmNsdWRl
IDx2ZWN0b3I+CisKKyNpbmNsdWRlICJwMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5oIgor
CituYW1lc3BhY2UgY3JpY2tldCB7CisKK2NsYXNzIEljZUNyZWRlbnRpYWxzSXRlcmF0b3Igewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgSWNlQ3JlZGVudGlhbHNJdGVyYXRvcihjb25zdCBzdGQ6OnZl
Y3RvcjxJY2VQYXJhbWV0ZXJzPiYpOworICB2aXJ0dWFsIH5JY2VDcmVkZW50aWFsc0l0ZXJhdG9y
KCk7CisKKyAgLy8gR2V0IG5leHQgcG9vbGVkIGljZSBjcmVkZW50aWFscy4KKyAgLy8gUmV0dXJu
cyBhIG5ldyByYW5kb20gY3JlZGVudGlhbCBpZiB0aGUgcG9vbCBpcyBlbXB0eS4KKyAgSWNlUGFy
YW1ldGVycyBHZXRJY2VDcmVkZW50aWFscygpOworCisgIHN0YXRpYyBJY2VQYXJhbWV0ZXJzIENy
ZWF0ZVJhbmRvbUljZUNyZWRlbnRpYWxzKCk7CisKKyBwcml2YXRlOgorICBzdGQ6OnZlY3RvcjxJ
Y2VQYXJhbWV0ZXJzPiBwb29sZWRfaWNlX2NyZWRlbnRpYWxzXzsKK307CisKK30gIC8vIG5hbWVz
cGFjZSBjcmlja2V0CisKKyNlbmRpZiAgLy8gUDJQX0JBU0VfSUNFQ1JFREVOVElBTFNJVEVSQVRP
Ul9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxz
aXRlcmF0b3JfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBmYWNmYmI4OGQxZWZjOWNlNjM5Yjg5
ZDcwMTZiYTUzZDRkNDlhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3JfdW5p
dHRlc3QuY2MKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2Vi
UlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUg
PG1lbW9yeT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVk
ZSAicDJwL2Jhc2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvci5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L2d1bml0LmgiCisKK3VzaW5nIGNyaWNrZXQ6OkljZVBhcmFtZXRlcnM7Cit1c2luZyBjcmlja2V0
OjpJY2VDcmVkZW50aWFsc0l0ZXJhdG9yOworCitURVNUKEljZUNyZWRlbnRpYWxzSXRlcmF0b3JU
ZXN0LCBHZXRFbXB0eSkgeworICBzdGQ6OnZlY3RvcjxJY2VQYXJhbWV0ZXJzPiBlbXB0eTsKKyAg
SWNlQ3JlZGVudGlhbHNJdGVyYXRvciBpdGVyYXRvcihlbXB0eSk7CisgIC8vIFZlcmlmeSB0aGF0
IHdlIGNhbiBnZXQgY3JlZGVudGlhbHMgZXZlbiBpZiBpbnB1dCBpcyBlbXB0eS4KKyAgSWNlUGFy
YW1ldGVycyBjcmVkZW50aWFsczEgPSBpdGVyYXRvci5HZXRJY2VDcmVkZW50aWFscygpOworfQor
CitURVNUKEljZUNyZWRlbnRpYWxzSXRlcmF0b3JUZXN0LCBHZXRPbmUpIHsKKyAgc3RkOjp2ZWN0
b3I8SWNlUGFyYW1ldGVycz4gb25lID0geworICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvcjo6
Q3JlYXRlUmFuZG9tSWNlQ3JlZGVudGlhbHMoKX07CisgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3Ig
aXRlcmF0b3Iob25lKTsKKyAgRVhQRUNUX0VRKGl0ZXJhdG9yLkdldEljZUNyZWRlbnRpYWxzKCks
IG9uZVswXSk7CisgIGF1dG8gcmFuZG9tID0gaXRlcmF0b3IuR2V0SWNlQ3JlZGVudGlhbHMoKTsK
KyAgRVhQRUNUX05FKHJhbmRvbSwgb25lWzBdKTsKKyAgRVhQRUNUX05FKHJhbmRvbSwgaXRlcmF0
b3IuR2V0SWNlQ3JlZGVudGlhbHMoKSk7Cit9CisKK1RFU1QoSWNlQ3JlZGVudGlhbHNJdGVyYXRv
clRlc3QsIEdldFR3bykgeworICBzdGQ6OnZlY3RvcjxJY2VQYXJhbWV0ZXJzPiB0d28gPSB7Cisg
ICAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yOjpDcmVhdGVSYW5kb21JY2VDcmVkZW50aWFscygp
LAorICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvcjo6Q3JlYXRlUmFuZG9tSWNlQ3JlZGVudGlh
bHMoKX07CisgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IgaXRlcmF0b3IodHdvKTsKKyAgRVhQRUNU
X0VRKGl0ZXJhdG9yLkdldEljZUNyZWRlbnRpYWxzKCksIHR3b1sxXSk7CisgIEVYUEVDVF9FUShp
dGVyYXRvci5HZXRJY2VDcmVkZW50aWFscygpLCB0d29bMF0pOworICBhdXRvIHJhbmRvbSA9IGl0
ZXJhdG9yLkdldEljZUNyZWRlbnRpYWxzKCk7CisgIEVYUEVDVF9ORShyYW5kb20sIHR3b1swXSk7
CisgIEVYUEVDVF9ORShyYW5kb20sIHR3b1sxXSk7CisgIEVYUEVDVF9ORShyYW5kb20sIGl0ZXJh
dG9yLkdldEljZUNyZWRlbnRpYWxzKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvaWNldHJhbnNwb3J0aW50ZXJuYWwu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2lj
ZXRyYW5zcG9ydGludGVybmFsLmgKaW5kZXggNzQ4M2MzYmFiYzJlMjFlY2MyZDM5NzYyOGRiNjQ0
MWZhMDczYTQyYi4uMDk5Y2VhNzBlOGY4OTA4MzdkOWI0MjBmMDg5YmI4NmM2OTFiODIwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvaWNldHJhbnNwb3J0aW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9pY2V0cmFuc3BvcnRpbnRlcm5hbC5oCkBAIC0xNSwx
MSArMTUsMTIgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvY2FuZGlkYXRl
LmgiCisjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9lbnVtcy5oIgogI2luY2x1ZGUgInAycC9iYXNl
L2NhbmRpZGF0ZXBhaXJpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wYWNrZXR0cmFu
c3BvcnRpbnRlcm5hbC5oIgogI2luY2x1ZGUgInAycC9iYXNlL3BvcnQuaCIKICNpbmNsdWRlICJw
MnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmlu
Z2VuY29kZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5h
bWVzcGFjZSBjcmlja2V0IHsKIApAQCAtMTgxLDE0ICsxODIsMTcgQEAgZW51bSBJY2VQcm90b2Nv
bFR5cGUgewogCiAvLyBJY2VUcmFuc3BvcnRJbnRlcm5hbCBpcyBhbiBpbnRlcm5hbCBhYnN0cmFj
dCBjbGFzcyB0aGF0IGRvZXMgSUNFLgogLy8gT25jZSB0aGUgcHVibGljIGludGVyZmFjZSBpcyBz
dXBwb3J0ZWQsCi0vLyAoaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8jcnRjaWNldHJhbnNw
b3J0LWludGVyZmFjZSkKKy8vIChodHRwczovL3d3dy53My5vcmcvVFIvd2VicnRjLyNydGNpY2V0
cmFuc3BvcnQpCiAvLyB0aGUgSWNlVHJhbnNwb3J0SW50ZXJmYWNlIHdpbGwgYmUgc3BsaXQgZnJv
bSB0aGlzIGNsYXNzLgotY2xhc3MgSWNlVHJhbnNwb3J0SW50ZXJuYWwgOiBwdWJsaWMgcnRjOjpQ
YWNrZXRUcmFuc3BvcnRJbnRlcm5hbCB7CitjbGFzcyBSVENfRVhQT1JUIEljZVRyYW5zcG9ydElu
dGVybmFsIDogcHVibGljIHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwgewogIHB1YmxpYzoK
ICAgSWNlVHJhbnNwb3J0SW50ZXJuYWwoKTsKICAgfkljZVRyYW5zcG9ydEludGVybmFsKCkgb3Zl
cnJpZGU7CiAKKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTMwOCk6IFJlbW92ZSBHZXRTdGF0
ZSBvbmNlIGFsbCB1c2VzIGhhdmUgYmVlbgorICAvLyBtaWdyYXRlZCB0byBHZXRJY2VUcmFuc3Bv
cnRTdGF0ZS4KICAgdmlydHVhbCBJY2VUcmFuc3BvcnRTdGF0ZSBHZXRTdGF0ZSgpIGNvbnN0ID0g
MDsKKyAgdmlydHVhbCB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlIEdldEljZVRyYW5zcG9ydFN0
YXRlKCkgY29uc3QgPSAwOwogCiAgIHZpcnR1YWwgaW50IGNvbXBvbmVudCgpIGNvbnN0ID0gMDsK
IApAQCAtMjU4LDggKzI2MiwxMyBAQCBjbGFzcyBJY2VUcmFuc3BvcnRJbnRlcm5hbCA6IHB1Ymxp
YyBydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsIHsKICAgc2lnc2xvdDo6c2lnbmFsMTxJY2VU
cmFuc3BvcnRJbnRlcm5hbCo+IFNpZ25hbFJvbGVDb25mbGljdDsKIAogICAvLyBFbWl0dGVkIHdo
ZW5ldmVyIHRoZSB0cmFuc3BvcnQgc3RhdGUgY2hhbmdlZC4KKyAgLy8gVE9ETyhidWdzLndlYnJ0
Yy5vcmcvOTMwOCk6IFJlbW92ZSBvbmNlIGFsbCB1c2VzIGhhdmUgbWlncmF0ZWQgdG8gdGhlIG5l
dworICAvLyBJY2VUcmFuc3BvcnRTdGF0ZS4KICAgc2lnc2xvdDo6c2lnbmFsMTxJY2VUcmFuc3Bv
cnRJbnRlcm5hbCo+IFNpZ25hbFN0YXRlQ2hhbmdlZDsKIAorICAvLyBFbWl0dGVkIHdoZW5ldmVy
IHRoZSBuZXcgc3RhbmRhcmRzLWNvbXBsaWFudCB0cmFuc3BvcnQgc3RhdGUgY2hhbmdlZC4KKyAg
c2lnc2xvdDo6c2lnbmFsMTxJY2VUcmFuc3BvcnRJbnRlcm5hbCo+IFNpZ25hbEljZVRyYW5zcG9y
dFN0YXRlQ2hhbmdlZDsKKwogICAvLyBJbnZva2VkIHdoZW4gdGhlIHRyYW5zcG9ydCBpcyBiZWlu
ZyBkZXN0cm95ZWQuCiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8SWNlVHJhbnNwb3J0SW50ZXJuYWwqPiBT
aWduYWxEZXN0cm95ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvbWRuc19tZXNzYWdlLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvbWRuc19tZXNzYWdlLmNjCmlu
ZGV4IDYxYWY2ZjM5ZjI5Yzg5OGUzYzJhMGRiMjFhYzUwOTdjNzM4MWM2MGIuLmYxNGEwZDExN2Uz
NWVhMzljMjIxZWUxZmZmMGNmNzgyM2Q5OTRmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5z
X21lc3NhZ2UuY2MKQEAgLTE5LDEzICsxOSwxMyBAQCBuYW1lc3BhY2UgewogLy8gUkZDIDEwMzUs
IFNlY3Rpb24gNC4xLjEuCiAvLwogLy8gUVIgYml0LgotY29uc3RleHByIHVpbnQxNl90IGtNRG5z
RmxhZ01hc2tRdWVyeU9yUmVzcG9uc2UgPSAweDgwMDA7Citjb25zdGV4cHIgdWludDE2X3Qga01k
bnNGbGFnTWFza1F1ZXJ5T3JSZXNwb25zZSA9IDB4ODAwMDsKIC8vIEFBIGJpdC4KLWNvbnN0ZXhw
ciB1aW50MTZfdCBrTURuc0ZsYWdNYXNrQXV0aG9yaXRhdGl2ZSA9IDB4MDQwMDsKK2NvbnN0ZXhw
ciB1aW50MTZfdCBrTWRuc0ZsYWdNYXNrQXV0aG9yaXRhdGl2ZSA9IDB4MDQwMDsKIC8vIFJGQyAx
MDM1LCBTZWN0aW9uIDQuMS4yLCBRQ0xBU1MgYW5kIFJGQyA2NzYyLCBTZWN0aW9uIDE4LjEyLCBy
ZXB1cnBvc2luZyBvZgogLy8gdG9wIGJpdCBvZiBRQ0xBU1MgYXMgdGhlIHVuaWNhc3QgcmVzcG9u
c2UgYml0LgotY29uc3RleHByIHVpbnQxNl90IGtNRG5zUUNsYXNzTWFza1VuaWNhc3RSZXNwb25z
ZSA9IDB4ODAwMDsKLWNvbnN0ZXhwciBzaXplX3Qga01EbnNIZWFkZXJTaXplQnl0ZXMgPSAxMjsK
K2NvbnN0ZXhwciB1aW50MTZfdCBrTWRuc1FDbGFzc01hc2tVbmljYXN0UmVzcG9uc2UgPSAweDgw
MDA7Citjb25zdGV4cHIgc2l6ZV90IGtNZG5zSGVhZGVyU2l6ZUJ5dGVzID0gMTI7CiAKIGJvb2wg
UmVhZERvbWFpbk5hbWUoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmLCBzdGQ6OnN0cmluZyogbmFt
ZSkgewogICBzaXplX3QgbmFtZV9zdGFydF9wb3MgPSBidWYtPkN1cnJlbnRPZmZzZXQoKTsKQEAg
LTY0LDcgKzY0LDcgQEAgYm9vbCBSZWFkRG9tYWluTmFtZShNZXNzYWdlQnVmZmVyUmVhZGVyKiBi
dWYsIHN0ZDo6c3RyaW5nKiBuYW1lKSB7CiAgICAgLy8gQSBsZWdpdGltYXRlIHBvaW50ZXIgb25s
eSByZWZlcnMgdG8gYSBwcmlvciBvY2N1cnJlbmNlIG9mIHRoZSBzYW1lIG5hbWUsCiAgICAgLy8g
YW5kIHdlIHNob3VsZCBvbmx5IG1vdmUgc3RyaWN0bHkgYmFja3dhcmQgdG8gYSBwcmlvciBuYW1l
IGZpZWxkIGFmdGVyIHRoZQogICAgIC8vIGhlYWRlci4KLSAgICBpZiAocG9zX2p1bXBfdG8gPj0g
bmFtZV9zdGFydF9wb3MgfHwgcG9zX2p1bXBfdG8gPCBrTURuc0hlYWRlclNpemVCeXRlcykgewor
ICAgIGlmIChwb3NfanVtcF90byA+PSBuYW1lX3N0YXJ0X3BvcyB8fCBwb3NfanVtcF90byA8IGtN
ZG5zSGVhZGVyU2l6ZUJ5dGVzKSB7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIE1l
c3NhZ2VCdWZmZXJSZWFkZXIgbmV3X2J1ZihidWYtPk1lc3NhZ2VEYXRhKCksIGJ1Zi0+TWVzc2Fn
ZUxlbmd0aCgpKTsKQEAgLTg4LDI3ICs4OCwyNyBAQCB2b2lkIFdyaXRlRG9tYWluTmFtZShydGM6
OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZiwgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIHsKIAogfSAg
Ly8gbmFtZXNwYWNlCiAKLXZvaWQgTURuc0hlYWRlcjo6U2V0UXVlcnlPclJlc3BvbnNlKGJvb2wg
aXNfcXVlcnkpIHsKK3ZvaWQgTWRuc0hlYWRlcjo6U2V0UXVlcnlPclJlc3BvbnNlKGJvb2wgaXNf
cXVlcnkpIHsKICAgaWYgKGlzX3F1ZXJ5KSB7Ci0gICAgZmxhZ3MgJj0gfmtNRG5zRmxhZ01hc2tR
dWVyeU9yUmVzcG9uc2U7CisgICAgZmxhZ3MgJj0gfmtNZG5zRmxhZ01hc2tRdWVyeU9yUmVzcG9u
c2U7CiAgIH0gZWxzZSB7Ci0gICAgZmxhZ3MgfD0ga01EbnNGbGFnTWFza1F1ZXJ5T3JSZXNwb25z
ZTsKKyAgICBmbGFncyB8PSBrTWRuc0ZsYWdNYXNrUXVlcnlPclJlc3BvbnNlOwogICB9CiB9CiAK
LXZvaWQgTURuc0hlYWRlcjo6U2V0QXV0aG9yaXRhdGl2ZShib29sIGlzX2F1dGhvcml0YXRpdmUp
IHsKK3ZvaWQgTWRuc0hlYWRlcjo6U2V0QXV0aG9yaXRhdGl2ZShib29sIGlzX2F1dGhvcml0YXRp
dmUpIHsKICAgaWYgKGlzX2F1dGhvcml0YXRpdmUpIHsKLSAgICBmbGFncyB8PSBrTURuc0ZsYWdN
YXNrQXV0aG9yaXRhdGl2ZTsKKyAgICBmbGFncyB8PSBrTWRuc0ZsYWdNYXNrQXV0aG9yaXRhdGl2
ZTsKICAgfSBlbHNlIHsKLSAgICBmbGFncyAmPSB+a01EbnNGbGFnTWFza0F1dGhvcml0YXRpdmU7
CisgICAgZmxhZ3MgJj0gfmtNZG5zRmxhZ01hc2tBdXRob3JpdGF0aXZlOwogICB9CiB9CiAKLWJv
b2wgTURuc0hlYWRlcjo6SXNBdXRob3JpdGF0aXZlKCkgY29uc3QgewotICByZXR1cm4gZmxhZ3Mg
JiBrTURuc0ZsYWdNYXNrQXV0aG9yaXRhdGl2ZTsKK2Jvb2wgTWRuc0hlYWRlcjo6SXNBdXRob3Jp
dGF0aXZlKCkgY29uc3QgeworICByZXR1cm4gZmxhZ3MgJiBrTWRuc0ZsYWdNYXNrQXV0aG9yaXRh
dGl2ZTsKIH0KIAotYm9vbCBNRG5zSGVhZGVyOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1
ZikgeworYm9vbCBNZG5zSGVhZGVyOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1Zikgewog
ICBpZiAoIWJ1Zi0+UmVhZFVJbnQxNigmaWQpIHx8ICFidWYtPlJlYWRVSW50MTYoJmZsYWdzKSB8
fAogICAgICAgIWJ1Zi0+UmVhZFVJbnQxNigmcWRjb3VudCkgfHwgIWJ1Zi0+UmVhZFVJbnQxNigm
YW5jb3VudCkgfHwKICAgICAgICFidWYtPlJlYWRVSW50MTYoJm5zY291bnQpIHx8ICFidWYtPlJl
YWRVSW50MTYoJmFyY291bnQpKSB7CkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBNRG5zSGVhZGVy
OjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgewogICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBNRG5zSGVhZGVyOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3Qg
ewordm9pZCBNZG5zSGVhZGVyOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29u
c3QgewogICBidWYtPldyaXRlVUludDE2KGlkKTsKICAgYnVmLT5Xcml0ZVVJbnQxNihmbGFncyk7
CiAgIGJ1Zi0+V3JpdGVVSW50MTYocWRjb3VudCk7CkBAIC0xMjcsMTUgKzEyNywxNSBAQCB2b2lk
IE1EbnNIZWFkZXI6OldyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7CiAg
IGJ1Zi0+V3JpdGVVSW50MTYoYXJjb3VudCk7CiB9CiAKLWJvb2wgTURuc0hlYWRlcjo6SXNRdWVy
eSgpIGNvbnN0IHsKLSAgcmV0dXJuICEoZmxhZ3MgJiBrTURuc0ZsYWdNYXNrUXVlcnlPclJlc3Bv
bnNlKTsKK2Jvb2wgTWRuc0hlYWRlcjo6SXNRdWVyeSgpIGNvbnN0IHsKKyAgcmV0dXJuICEoZmxh
Z3MgJiBrTWRuc0ZsYWdNYXNrUXVlcnlPclJlc3BvbnNlKTsKIH0KIAotTURuc1NlY3Rpb25FbnRy
eTo6TURuc1NlY3Rpb25FbnRyeSgpID0gZGVmYXVsdDsKLU1EbnNTZWN0aW9uRW50cnk6On5NRG5z
U2VjdGlvbkVudHJ5KCkgPSBkZWZhdWx0OwotTURuc1NlY3Rpb25FbnRyeTo6TURuc1NlY3Rpb25F
bnRyeShjb25zdCBNRG5zU2VjdGlvbkVudHJ5JiBvdGhlcikgPSBkZWZhdWx0OworTWRuc1NlY3Rp
b25FbnRyeTo6TWRuc1NlY3Rpb25FbnRyeSgpID0gZGVmYXVsdDsKK01kbnNTZWN0aW9uRW50cnk6
On5NZG5zU2VjdGlvbkVudHJ5KCkgPSBkZWZhdWx0OworTWRuc1NlY3Rpb25FbnRyeTo6TWRuc1Nl
Y3Rpb25FbnRyeShjb25zdCBNZG5zU2VjdGlvbkVudHJ5JiBvdGhlcikgPSBkZWZhdWx0OwogCi12
b2lkIE1EbnNTZWN0aW9uRW50cnk6OlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZSB0eXBlKSB7Cit2
b2lkIE1kbnNTZWN0aW9uRW50cnk6OlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZSB0eXBlKSB7CiAg
IHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU2VjdGlvbkVudHJ5VHlwZTo6a0E6CiAgICAgICB0
eXBlXyA9IDE7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBNRG5zU2VjdGlvbkVudHJ5OjpTZXRU
eXBlKFNlY3Rpb25FbnRyeVR5cGUgdHlwZSkgewogICB9CiB9CiAKLVNlY3Rpb25FbnRyeVR5cGUg
TURuc1NlY3Rpb25FbnRyeTo6R2V0VHlwZSgpIGNvbnN0IHsKK1NlY3Rpb25FbnRyeVR5cGUgTWRu
c1NlY3Rpb25FbnRyeTo6R2V0VHlwZSgpIGNvbnN0IHsKICAgc3dpdGNoICh0eXBlXykgewogICAg
IGNhc2UgMToKICAgICAgIHJldHVybiBTZWN0aW9uRW50cnlUeXBlOjprQTsKQEAgLTE1OSw3ICsx
NTksNyBAQCBTZWN0aW9uRW50cnlUeXBlIE1EbnNTZWN0aW9uRW50cnk6OkdldFR5cGUoKSBjb25z
dCB7CiAgIH0KIH0KIAotdm9pZCBNRG5zU2VjdGlvbkVudHJ5OjpTZXRDbGFzcyhTZWN0aW9uRW50
cnlDbGFzcyBjbHMpIHsKK3ZvaWQgTWRuc1NlY3Rpb25FbnRyeTo6U2V0Q2xhc3MoU2VjdGlvbkVu
dHJ5Q2xhc3MgY2xzKSB7CiAgIHN3aXRjaCAoY2xzKSB7CiAgICAgY2FzZSBTZWN0aW9uRW50cnlD
bGFzczo6a0lOOgogICAgICAgY2xhc3NfID0gMTsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIE1E
bnNTZWN0aW9uRW50cnk6OlNldENsYXNzKFNlY3Rpb25FbnRyeUNsYXNzIGNscykgewogICB9CiB9
CiAKLVNlY3Rpb25FbnRyeUNsYXNzIE1EbnNTZWN0aW9uRW50cnk6OkdldENsYXNzKCkgY29uc3Qg
eworU2VjdGlvbkVudHJ5Q2xhc3MgTWRuc1NlY3Rpb25FbnRyeTo6R2V0Q2xhc3MoKSBjb25zdCB7
CiAgIHN3aXRjaCAoY2xhc3NfKSB7CiAgICAgY2FzZSAxOgogICAgICAgcmV0dXJuIFNlY3Rpb25F
bnRyeUNsYXNzOjprSU47CkBAIC0xNzgsMTEgKzE3OCwxMSBAQCBTZWN0aW9uRW50cnlDbGFzcyBN
RG5zU2VjdGlvbkVudHJ5OjpHZXRDbGFzcygpIGNvbnN0IHsKICAgfQogfQogCi1NRG5zUXVlc3Rp
b246Ok1EbnNRdWVzdGlvbigpID0gZGVmYXVsdDsKLU1EbnNRdWVzdGlvbjo6TURuc1F1ZXN0aW9u
KGNvbnN0IE1EbnNRdWVzdGlvbiYgb3RoZXIpID0gZGVmYXVsdDsKLU1EbnNRdWVzdGlvbjo6fk1E
bnNRdWVzdGlvbigpID0gZGVmYXVsdDsKK01kbnNRdWVzdGlvbjo6TWRuc1F1ZXN0aW9uKCkgPSBk
ZWZhdWx0OworTWRuc1F1ZXN0aW9uOjpNZG5zUXVlc3Rpb24oY29uc3QgTWRuc1F1ZXN0aW9uJiBv
dGhlcikgPSBkZWZhdWx0OworTWRuc1F1ZXN0aW9uOjp+TWRuc1F1ZXN0aW9uKCkgPSBkZWZhdWx0
OwogCi1ib29sIE1EbnNRdWVzdGlvbjo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsK
K2Jvb2wgTWRuc1F1ZXN0aW9uOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgewogICBp
ZiAoIVJlYWREb21haW5OYW1lKGJ1ZiwgJm5hbWVfKSkgewogICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJJbnZhbGlkIG5hbWUuIjsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTQsMzEgKzE5NCwz
MSBAQCBib29sIE1EbnNRdWVzdGlvbjo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsK
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTURuc1F1ZXN0aW9uOjpXcml0ZShydGM6OkJ5dGVC
dWZmZXJXcml0ZXIqIGJ1ZikgY29uc3QgeworYm9vbCBNZG5zUXVlc3Rpb246OldyaXRlKHJ0Yzo6
Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7CiAgIFdyaXRlRG9tYWluTmFtZShidWYsIG5h
bWVfKTsKICAgYnVmLT5Xcml0ZVVJbnQxNih0eXBlXyk7CiAgIGJ1Zi0+V3JpdGVVSW50MTYoY2xh
c3NfKTsKICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTURuc1F1ZXN0aW9uOjpTZXRVbmljYXN0
UmVzcG9uc2UoYm9vbCBzaG91bGRfdW5pY2FzdCkgewordm9pZCBNZG5zUXVlc3Rpb246OlNldFVu
aWNhc3RSZXNwb25zZShib29sIHNob3VsZF91bmljYXN0KSB7CiAgIGlmIChzaG91bGRfdW5pY2Fz
dCkgewotICAgIGNsYXNzXyB8PSBrTURuc1FDbGFzc01hc2tVbmljYXN0UmVzcG9uc2U7CisgICAg
Y2xhc3NfIHw9IGtNZG5zUUNsYXNzTWFza1VuaWNhc3RSZXNwb25zZTsKICAgfSBlbHNlIHsKLSAg
ICBjbGFzc18gJj0gfmtNRG5zUUNsYXNzTWFza1VuaWNhc3RSZXNwb25zZTsKKyAgICBjbGFzc18g
Jj0gfmtNZG5zUUNsYXNzTWFza1VuaWNhc3RSZXNwb25zZTsKICAgfQogfQogCi1ib29sIE1EbnNR
dWVzdGlvbjo6U2hvdWxkVW5pY2FzdFJlc3BvbnNlKCkgY29uc3QgewotICByZXR1cm4gY2xhc3Nf
ICYga01EbnNRQ2xhc3NNYXNrVW5pY2FzdFJlc3BvbnNlOworYm9vbCBNZG5zUXVlc3Rpb246OlNo
b3VsZFVuaWNhc3RSZXNwb25zZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGNsYXNzXyAmIGtNZG5zUUNs
YXNzTWFza1VuaWNhc3RSZXNwb25zZTsKIH0KIAotTURuc1Jlc291cmNlUmVjb3JkOjpNRG5zUmVz
b3VyY2VSZWNvcmQoKSA9IGRlZmF1bHQ7Ci1NRG5zUmVzb3VyY2VSZWNvcmQ6Ok1EbnNSZXNvdXJj
ZVJlY29yZChjb25zdCBNRG5zUmVzb3VyY2VSZWNvcmQmIG90aGVyKSA9CitNZG5zUmVzb3VyY2VS
ZWNvcmQ6Ok1kbnNSZXNvdXJjZVJlY29yZCgpID0gZGVmYXVsdDsKK01kbnNSZXNvdXJjZVJlY29y
ZDo6TWRuc1Jlc291cmNlUmVjb3JkKGNvbnN0IE1kbnNSZXNvdXJjZVJlY29yZCYgb3RoZXIpID0K
ICAgICBkZWZhdWx0OwotTURuc1Jlc291cmNlUmVjb3JkOjp+TURuc1Jlc291cmNlUmVjb3JkKCkg
PSBkZWZhdWx0OworTWRuc1Jlc291cmNlUmVjb3JkOjp+TWRuc1Jlc291cmNlUmVjb3JkKCkgPSBk
ZWZhdWx0OwogCi1ib29sIE1EbnNSZXNvdXJjZVJlY29yZDo6UmVhZChNZXNzYWdlQnVmZmVyUmVh
ZGVyKiBidWYpIHsKK2Jvb2wgTWRuc1Jlc291cmNlUmVjb3JkOjpSZWFkKE1lc3NhZ2VCdWZmZXJS
ZWFkZXIqIGJ1ZikgewogICBpZiAoIVJlYWREb21haW5OYW1lKGJ1ZiwgJm5hbWVfKSkgewogICAg
IHJldHVybiBmYWxzZTsKICAgfQpAQCAtMjM5LDE3ICsyMzksMTcgQEAgYm9vbCBNRG5zUmVzb3Vy
Y2VSZWNvcmQ6OlJlYWQoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7CiAgIH0KICAgcmV0dXJu
IGZhbHNlOwogfQotYm9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6OlJlYWRBUkRhdGEoTWVzc2FnZUJ1
ZmZlclJlYWRlciogYnVmKSB7Citib29sIE1kbnNSZXNvdXJjZVJlY29yZDo6UmVhZEFSRGF0YShN
ZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKICAgLy8gQSBSREFUQSBjb250YWlucyBhIDMyLWJp
dCBJUHY0IGFkZHJlc3MuCiAgIHJldHVybiBidWYtPlJlYWRTdHJpbmcoJnJkYXRhXywgNCk7CiB9
CiAKLWJvb2wgTURuc1Jlc291cmNlUmVjb3JkOjpSZWFkUXVhZEFSRGF0YShNZXNzYWdlQnVmZmVy
UmVhZGVyKiBidWYpIHsKK2Jvb2wgTWRuc1Jlc291cmNlUmVjb3JkOjpSZWFkUXVhZEFSRGF0YShN
ZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKICAgLy8gQUFBQSBSREFUQSBjb250YWlucyBhIDEy
OC1iaXQgSVB2NiBhZGRyZXNzLgogICByZXR1cm4gYnVmLT5SZWFkU3RyaW5nKCZyZGF0YV8sIDE2
KTsKIH0KIAotYm9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6OldyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldy
aXRlciogYnVmKSBjb25zdCB7Citib29sIE1kbnNSZXNvdXJjZVJlY29yZDo6V3JpdGUocnRjOjpC
eXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKICAgV3JpdGVEb21haW5OYW1lKGJ1ZiwgbmFt
ZV8pOwogICBidWYtPldyaXRlVUludDE2KHR5cGVfKTsKICAgYnVmLT5Xcml0ZVVJbnQxNihjbGFz
c18pOwpAQCAtMjcwLDE1ICsyNzAsMTUgQEAgYm9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6OldyaXRl
KHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7CiAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIE1EbnNSZXNvdXJjZVJlY29yZDo6V3JpdGVBUkRhdGEocnRjOjpCeXRlQnVmZmVyV3Jp
dGVyKiBidWYpIGNvbnN0IHsKK3ZvaWQgTWRuc1Jlc291cmNlUmVjb3JkOjpXcml0ZUFSRGF0YShy
dGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3QgewogICBidWYtPldyaXRlU3RyaW5nKHJk
YXRhXyk7CiB9CiAKLXZvaWQgTURuc1Jlc291cmNlUmVjb3JkOjpXcml0ZVF1YWRBUkRhdGEocnRj
OjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKK3ZvaWQgTWRuc1Jlc291cmNlUmVjb3Jk
OjpXcml0ZVF1YWRBUkRhdGEocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKICAg
YnVmLT5Xcml0ZVN0cmluZyhyZGF0YV8pOwogfQogCi1ib29sIE1EbnNSZXNvdXJjZVJlY29yZDo6
U2V0SVBBZGRyZXNzSW5SZWNvcmREYXRhKAorYm9vbCBNZG5zUmVzb3VyY2VSZWNvcmQ6OlNldElQ
QWRkcmVzc0luUmVjb3JkRGF0YSgKICAgICBjb25zdCBydGM6OklQQWRkcmVzcyYgYWRkcmVzcykg
ewogICBpbnQgYWYgPSBhZGRyZXNzLmZhbWlseSgpOwogICBpZiAoYWYgIT0gQUZfSU5FVCAmJiBh
ZiAhPSBBRl9JTkVUNikgewpAQCAtMjkzLDcgKzI5Myw3IEBAIGJvb2wgTURuc1Jlc291cmNlUmVj
b3JkOjpTZXRJUEFkZHJlc3NJblJlY29yZERhdGEoCiAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IE1EbnNSZXNvdXJjZVJlY29yZDo6R2V0SVBBZGRyZXNzRnJvbVJlY29yZERhdGEoCitib29sIE1k
bnNSZXNvdXJjZVJlY29yZDo6R2V0SVBBZGRyZXNzRnJvbVJlY29yZERhdGEoCiAgICAgcnRjOjpJ
UEFkZHJlc3MqIGFkZHJlc3MpIGNvbnN0IHsKICAgaWYgKEdldFR5cGUoKSAhPSBTZWN0aW9uRW50
cnlUeXBlOjprQSAmJgogICAgICAgR2V0VHlwZSgpICE9IFNlY3Rpb25FbnRyeVR5cGU6OmtBQUFB
KSB7CkBAIC0zMTAsMTYgKzMxMCwxNiBAQCBib29sIE1EbnNSZXNvdXJjZVJlY29yZDo6R2V0SVBB
ZGRyZXNzRnJvbVJlY29yZERhdGEoCiAgIHJldHVybiBydGM6OklQRnJvbVN0cmluZyhzdGQ6OnN0
cmluZyhvdXQpLCBhZGRyZXNzKTsKIH0KIAotTURuc01lc3NhZ2U6Ok1EbnNNZXNzYWdlKCkgPSBk
ZWZhdWx0OwotTURuc01lc3NhZ2U6On5NRG5zTWVzc2FnZSgpID0gZGVmYXVsdDsKK01kbnNNZXNz
YWdlOjpNZG5zTWVzc2FnZSgpID0gZGVmYXVsdDsKK01kbnNNZXNzYWdlOjp+TWRuc01lc3NhZ2Uo
KSA9IGRlZmF1bHQ7CiAKLWJvb2wgTURuc01lc3NhZ2U6OlJlYWQoTWVzc2FnZUJ1ZmZlclJlYWRl
ciogYnVmKSB7Citib29sIE1kbnNNZXNzYWdlOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1
ZikgewogICBSVENfRENIRUNLX0VRKDB1LCBidWYtPkN1cnJlbnRPZmZzZXQoKSk7CiAgIGlmICgh
aGVhZGVyXy5SZWFkKGJ1ZikpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAotICBhdXRvIHJl
YWRfcXVlc3Rpb24gPSBbJmJ1Zl0oc3RkOjp2ZWN0b3I8TURuc1F1ZXN0aW9uPiogc2VjdGlvbiwK
KyAgYXV0byByZWFkX3F1ZXN0aW9uID0gWyZidWZdKHN0ZDo6dmVjdG9yPE1kbnNRdWVzdGlvbj4q
IHNlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBjb3VudCkg
ewogICAgIHNlY3Rpb24tPnJlc2l6ZShjb3VudCk7CiAgICAgZm9yIChhdXRvJiBxdWVzdGlvbiA6
ICgqc2VjdGlvbikpIHsKQEAgLTMyOSw3ICszMjksNyBAQCBib29sIE1EbnNNZXNzYWdlOjpSZWFk
KE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgewogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKICAg
fTsKLSAgYXV0byByZWFkX3JyID0gWyZidWZdKHN0ZDo6dmVjdG9yPE1EbnNSZXNvdXJjZVJlY29y
ZD4qIHNlY3Rpb24sCisgIGF1dG8gcmVhZF9yciA9IFsmYnVmXShzdGQ6OnZlY3RvcjxNZG5zUmVz
b3VyY2VSZWNvcmQ+KiBzZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3Qg
Y291bnQpIHsKICAgICBzZWN0aW9uLT5yZXNpemUoY291bnQpOwogICAgIGZvciAoYXV0byYgcnIg
OiAoKnNlY3Rpb24pKSB7CkBAIC0zNDksMTAgKzM0OSwxMCBAQCBib29sIE1EbnNNZXNzYWdlOjpS
ZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgewogICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBNRG5zTWVzc2FnZTo6V3JpdGUocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsK
K2Jvb2wgTWRuc01lc3NhZ2U6OldyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25z
dCB7CiAgIGhlYWRlcl8uV3JpdGUoYnVmKTsKIAotICBhdXRvIHdyaXRlX3JyID0gWyZidWZdKGNv
bnN0IHN0ZDo6dmVjdG9yPE1EbnNSZXNvdXJjZVJlY29yZD4mIHNlY3Rpb24pIHsKKyAgYXV0byB3
cml0ZV9yciA9IFsmYnVmXShjb25zdCBzdGQ6OnZlY3RvcjxNZG5zUmVzb3VyY2VSZWNvcmQ+JiBz
ZWN0aW9uKSB7CiAgICAgZm9yIChhdXRvIHJyIDogc2VjdGlvbikgewogICAgICAgaWYgKCFyci5X
cml0ZShidWYpKSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3NCw3ICszNzQsNyBAQCBi
b29sIE1EbnNNZXNzYWdlOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3Qg
ewogICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNRG5zTWVzc2FnZTo6U2hvdWxkVW5pY2FzdFJl
c3BvbnNlKCkgY29uc3QgeworYm9vbCBNZG5zTWVzc2FnZTo6U2hvdWxkVW5pY2FzdFJlc3BvbnNl
KCkgY29uc3QgewogICBib29sIHNob3VsZF91bmljYXN0ID0gZmFsc2U7CiAgIGZvciAoY29uc3Qg
YXV0byYgcXVlc3Rpb24gOiBxdWVzdGlvbl9zZWN0aW9uXykgewogICAgIHNob3VsZF91bmljYXN0
IHw9IHF1ZXN0aW9uLlNob3VsZFVuaWNhc3RSZXNwb25zZSgpOwpAQCAtMzgyLDEyICszODIsMTIg
QEAgYm9vbCBNRG5zTWVzc2FnZTo6U2hvdWxkVW5pY2FzdFJlc3BvbnNlKCkgY29uc3QgewogICBy
ZXR1cm4gc2hvdWxkX3VuaWNhc3Q7CiB9CiAKLXZvaWQgTURuc01lc3NhZ2U6OkFkZFF1ZXN0aW9u
KGNvbnN0IE1EbnNRdWVzdGlvbiYgcXVlc3Rpb24pIHsKK3ZvaWQgTWRuc01lc3NhZ2U6OkFkZFF1
ZXN0aW9uKGNvbnN0IE1kbnNRdWVzdGlvbiYgcXVlc3Rpb24pIHsKICAgcXVlc3Rpb25fc2VjdGlv
bl8ucHVzaF9iYWNrKHF1ZXN0aW9uKTsKICAgaGVhZGVyXy5xZGNvdW50ID0gcXVlc3Rpb25fc2Vj
dGlvbl8uc2l6ZSgpOwogfQogCi12b2lkIE1EbnNNZXNzYWdlOjpBZGRBbnN3ZXJSZWNvcmQoY29u
c3QgTURuc1Jlc291cmNlUmVjb3JkJiBhbnN3ZXIpIHsKK3ZvaWQgTWRuc01lc3NhZ2U6OkFkZEFu
c3dlclJlY29yZChjb25zdCBNZG5zUmVzb3VyY2VSZWNvcmQmIGFuc3dlcikgewogICBhbnN3ZXJf
c2VjdGlvbl8ucHVzaF9iYWNrKGFuc3dlcik7CiAgIGhlYWRlcl8uYW5jb3VudCA9IGFuc3dlcl9z
ZWN0aW9uXy5zaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2UuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZS5oCmluZGV4
IGY2ZGVjMjBhOTU2ZDUzMDIwNzQ4ZGZjOWNiMmI0ODlmZDQwOTgyMDcuLjdhYTFiMjEwMzlhNTMw
ZjExZjhjOGY4NTUxYzliNTBjYWQzZGRjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVz
c2FnZS5oCkBAIC0xNSw3ICsxNSw3IEBACiAvLyA2NzYyIGFuZCBSRkMgMTAyNSAoRE5TIG1lc3Nh
Z2VzKS4gTm90ZSB0aGF0IGl0IGlzIHJlY29tbWVuZGVkIGJ5IFJGQyA2NzYyIHRvCiAvLyB1c2Ug
dGhlIG5hbWUgY29tcHJlc3Npb24gc2NoZW1lIGRlZmluZWQgaW4gUkZDIDEwMzUgd2hlbmV2ZXIg
cG9zc2libGUuIFdlCiAvLyBjdXJyZW50bHkgb25seSBpbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkg
b2YgcmVhZGluZyBjb21wcmVzc2VkIG5hbWVzIGluIG1ETlMKLS8vIG1lc3NhZ2VzIGluIE1EbnNN
ZXNzYWdlOjpSZWFkKCk7IGhvd2V2ZXIsIHRoZSBNRG5zTWVzc2FnZTo6V3JpdGUoKSBkb2VzIG5v
dAorLy8gbWVzc2FnZXMgaW4gTWRuc01lc3NhZ2U6OlJlYWQoKTsgaG93ZXZlciwgdGhlIE1kbnNN
ZXNzYWdlOjpXcml0ZSgpIGRvZXMgbm90CiAvLyBzdXBwb3J0IG5hbWUgY29tcHJlc3Npb24geWV0
LgogLy8KIC8vIEZ1enplciB0ZXN0cyAodGVzdC9mdXp6ZXJzL21kbnNfcGFyc2VyX2Z1enplci5j
YykgTVVTVCBhbHdheXMgYmUgcGVyZm9ybWVkCkBAIC01MCw3ICs1MCw3IEBAIGVudW0gY2xhc3Mg
U2VjdGlvbkVudHJ5Q2xhc3MgewogfTsKIAogLy8gUkZDIDEwMzUsIFNlY3Rpb24gNC4xLjEuCi1j
bGFzcyBNRG5zSGVhZGVyIGZpbmFsIHsKK2NsYXNzIE1kbnNIZWFkZXIgZmluYWwgewogIHB1Ymxp
YzoKICAgYm9vbCBSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1Zik7CiAgIHZvaWQgV3JpdGUo
cnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0OwpAQCAtNzQsMTEgKzc0LDExIEBAIGNs
YXNzIE1EbnNIZWFkZXIgZmluYWwgewogCiAvLyBFbnRyaWVzIGluIGVhY2ggc2VjdGlvbiBhZnRl
ciB0aGUgaGVhZGVyIHNoYXJlIGEgY29tbW9uIHN0cnVjdHVyZS4gTm90ZSB0aGF0CiAvLyB0aGlz
IGlzIG5vdCBhIGNvbmNlcHQgZGVmaW5lZCBpbiBSRkMgMTAzNS4KLWNsYXNzIE1EbnNTZWN0aW9u
RW50cnkgeworY2xhc3MgTWRuc1NlY3Rpb25FbnRyeSB7CiAgcHVibGljOgotICBNRG5zU2VjdGlv
bkVudHJ5KCk7Ci0gIE1EbnNTZWN0aW9uRW50cnkoY29uc3QgTURuc1NlY3Rpb25FbnRyeSYgb3Ro
ZXIpOwotICB2aXJ0dWFsIH5NRG5zU2VjdGlvbkVudHJ5KCk7CisgIE1kbnNTZWN0aW9uRW50cnko
KTsKKyAgTWRuc1NlY3Rpb25FbnRyeShjb25zdCBNZG5zU2VjdGlvbkVudHJ5JiBvdGhlcik7Cisg
IHZpcnR1YWwgfk1kbnNTZWN0aW9uRW50cnkoKTsKICAgdmlydHVhbCBib29sIFJlYWQoTWVzc2Fn
ZUJ1ZmZlclJlYWRlciogYnVmKSA9IDA7CiAgIHZpcnR1YWwgYm9vbCBXcml0ZShydGM6OkJ5dGVC
dWZmZXJXcml0ZXIqIGJ1ZikgY29uc3QgPSAwOwogCkBAIC05OSwxMSArOTksMTEgQEAgY2xhc3Mg
TURuc1NlY3Rpb25FbnRyeSB7CiB9OwogCiAvLyBSRkMgMTAzNSwgU2VjdGlvbiA0LjEuMi4KLWNs
YXNzIE1EbnNRdWVzdGlvbiBmaW5hbCA6IHB1YmxpYyBNRG5zU2VjdGlvbkVudHJ5IHsKK2NsYXNz
IE1kbnNRdWVzdGlvbiBmaW5hbCA6IHB1YmxpYyBNZG5zU2VjdGlvbkVudHJ5IHsKICBwdWJsaWM6
Ci0gIE1EbnNRdWVzdGlvbigpOwotICBNRG5zUXVlc3Rpb24oY29uc3QgTURuc1F1ZXN0aW9uJiBv
dGhlcik7Ci0gIH5NRG5zUXVlc3Rpb24oKSBvdmVycmlkZTsKKyAgTWRuc1F1ZXN0aW9uKCk7Cisg
IE1kbnNRdWVzdGlvbihjb25zdCBNZG5zUXVlc3Rpb24mIG90aGVyKTsKKyAgfk1kbnNRdWVzdGlv
bigpIG92ZXJyaWRlOwogCiAgIGJvb2wgUmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIG92
ZXJyaWRlOwogICBib29sIFdyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCBv
dmVycmlkZTsKQEAgLTExMywxMSArMTEzLDExIEBAIGNsYXNzIE1EbnNRdWVzdGlvbiBmaW5hbCA6
IHB1YmxpYyBNRG5zU2VjdGlvbkVudHJ5IHsKIH07CiAKIC8vIFJGQyAxMDM1LCBTZWN0aW9uIDQu
MS4zLgotY2xhc3MgTURuc1Jlc291cmNlUmVjb3JkIGZpbmFsIDogcHVibGljIE1EbnNTZWN0aW9u
RW50cnkgeworY2xhc3MgTWRuc1Jlc291cmNlUmVjb3JkIGZpbmFsIDogcHVibGljIE1kbnNTZWN0
aW9uRW50cnkgewogIHB1YmxpYzoKLSAgTURuc1Jlc291cmNlUmVjb3JkKCk7Ci0gIE1EbnNSZXNv
dXJjZVJlY29yZChjb25zdCBNRG5zUmVzb3VyY2VSZWNvcmQmIG90aGVyKTsKLSAgfk1EbnNSZXNv
dXJjZVJlY29yZCgpIG92ZXJyaWRlOworICBNZG5zUmVzb3VyY2VSZWNvcmQoKTsKKyAgTWRuc1Jl
c291cmNlUmVjb3JkKGNvbnN0IE1kbnNSZXNvdXJjZVJlY29yZCYgb3RoZXIpOworICB+TWRuc1Jl
c291cmNlUmVjb3JkKCkgb3ZlcnJpZGU7CiAKICAgYm9vbCBSZWFkKE1lc3NhZ2VCdWZmZXJSZWFk
ZXIqIGJ1Zikgb3ZlcnJpZGU7CiAgIGJvb2wgV3JpdGUocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBi
dWYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTQ1LDE3ICsxNDUsMTcgQEAgY2xhc3MgTURuc1Jlc291
cmNlUmVjb3JkIGZpbmFsIDogcHVibGljIE1EbnNTZWN0aW9uRW50cnkgewogICBzdGQ6OnN0cmlu
ZyByZGF0YV87CiB9OwogCi1jbGFzcyBNRG5zTWVzc2FnZSBmaW5hbCB7CitjbGFzcyBNZG5zTWVz
c2FnZSBmaW5hbCB7CiAgcHVibGljOgogICAvLyBSRkMgMTAzNSwgU2VjdGlvbiA0LjEuCiAgIGVu
dW0gY2xhc3MgU2VjdGlvbiB7IGtRdWVzdGlvbiwga0Fuc3dlciwga0F1dGhvcml0eSwga0FkZGl0
aW9uYWwgfTsKIAotICBNRG5zTWVzc2FnZSgpOwotICB+TURuc01lc3NhZ2UoKTsKKyAgTWRuc01l
c3NhZ2UoKTsKKyAgfk1kbnNNZXNzYWdlKCk7CiAgIC8vIFJlYWRzIHRoZSBtRE5TIG1lc3NhZ2Ug
aW4gfGJ1ZnwgYW5kIHBvcHVsYXRlcyB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgaW4KLSAgLy8g
TURuc01lc3NhZ2UuCisgIC8vIE1kbnNNZXNzYWdlLgogICBib29sIFJlYWQoTWVzc2FnZUJ1ZmZl
clJlYWRlciogYnVmKTsKLSAgLy8gV3JpdGUgYW4gbUROUyBtZXNzYWdlIHRvIHxidWZ8IGJhc2Vk
IG9uIHRoZSBmaWVsZHMgaW4gTURuc01lc3NhZ2UuCisgIC8vIFdyaXRlIGFuIG1ETlMgbWVzc2Fn
ZSB0byB8YnVmfCBiYXNlZCBvbiB0aGUgZmllbGRzIGluIE1kbnNNZXNzYWdlLgogICAvLwogICAv
LyBUT0RPKHFpbmdzaSk6IEltcGxlbWVudCBuYW1lIGNvbXByZXNzaW9uIHdoZW4gd3JpdGluZyBt
RE5TIG1lc3NhZ2VzLgogICBib29sIFdyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBj
b25zdDsKQEAgLTE3NywyOSArMTc3LDI5IEBAIGNsYXNzIE1EbnNNZXNzYWdlIGZpbmFsIHsKICAg
Ly8gcHJlZmVycmVkLiBGYWxzZSBvdGhlcndpc2UuCiAgIGJvb2wgU2hvdWxkVW5pY2FzdFJlc3Bv
bnNlKCkgY29uc3Q7CiAKLSAgdm9pZCBBZGRRdWVzdGlvbihjb25zdCBNRG5zUXVlc3Rpb24mIHF1
ZXN0aW9uKTsKKyAgdm9pZCBBZGRRdWVzdGlvbihjb25zdCBNZG5zUXVlc3Rpb24mIHF1ZXN0aW9u
KTsKICAgLy8gVE9ETyhxaW5nc2kpOiBJbXBsZW1lbnQgQWRkWFJlY29yZCBmb3IgbmFtZSBzZXJ2
ZXIgYW5kIGFkZGl0aW9uYWwgcmVjb3Jkcy4KLSAgdm9pZCBBZGRBbnN3ZXJSZWNvcmQoY29uc3Qg
TURuc1Jlc291cmNlUmVjb3JkJiBhbnN3ZXIpOworICB2b2lkIEFkZEFuc3dlclJlY29yZChjb25z
dCBNZG5zUmVzb3VyY2VSZWNvcmQmIGFuc3dlcik7CiAKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8TURu
c1F1ZXN0aW9uPiYgcXVlc3Rpb25fc2VjdGlvbigpIGNvbnN0IHsKKyAgY29uc3Qgc3RkOjp2ZWN0
b3I8TWRuc1F1ZXN0aW9uPiYgcXVlc3Rpb25fc2VjdGlvbigpIGNvbnN0IHsKICAgICByZXR1cm4g
cXVlc3Rpb25fc2VjdGlvbl87CiAgIH0KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8TURuc1Jlc291cmNl
UmVjb3JkPiYgYW5zd2VyX3NlY3Rpb24oKSBjb25zdCB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPE1k
bnNSZXNvdXJjZVJlY29yZD4mIGFuc3dlcl9zZWN0aW9uKCkgY29uc3QgewogICAgIHJldHVybiBh
bnN3ZXJfc2VjdGlvbl87CiAgIH0KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8TURuc1Jlc291cmNlUmVj
b3JkPiYgYXV0aG9yaXR5X3NlY3Rpb24oKSBjb25zdCB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPE1k
bnNSZXNvdXJjZVJlY29yZD4mIGF1dGhvcml0eV9zZWN0aW9uKCkgY29uc3QgewogICAgIHJldHVy
biBhdXRob3JpdHlfc2VjdGlvbl87CiAgIH0KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8TURuc1Jlc291
cmNlUmVjb3JkPiYgYWRkaXRpb25hbF9zZWN0aW9uKCkgY29uc3QgeworICBjb25zdCBzdGQ6OnZl
Y3RvcjxNZG5zUmVzb3VyY2VSZWNvcmQ+JiBhZGRpdGlvbmFsX3NlY3Rpb24oKSBjb25zdCB7CiAg
ICAgcmV0dXJuIGFkZGl0aW9uYWxfc2VjdGlvbl87CiAgIH0KIAogIHByaXZhdGU6Ci0gIE1EbnNI
ZWFkZXIgaGVhZGVyXzsKLSAgc3RkOjp2ZWN0b3I8TURuc1F1ZXN0aW9uPiBxdWVzdGlvbl9zZWN0
aW9uXzsKLSAgc3RkOjp2ZWN0b3I8TURuc1Jlc291cmNlUmVjb3JkPiBhbnN3ZXJfc2VjdGlvbl87
Ci0gIHN0ZDo6dmVjdG9yPE1EbnNSZXNvdXJjZVJlY29yZD4gYXV0aG9yaXR5X3NlY3Rpb25fOwot
ICBzdGQ6OnZlY3RvcjxNRG5zUmVzb3VyY2VSZWNvcmQ+IGFkZGl0aW9uYWxfc2VjdGlvbl87Cisg
IE1kbnNIZWFkZXIgaGVhZGVyXzsKKyAgc3RkOjp2ZWN0b3I8TWRuc1F1ZXN0aW9uPiBxdWVzdGlv
bl9zZWN0aW9uXzsKKyAgc3RkOjp2ZWN0b3I8TWRuc1Jlc291cmNlUmVjb3JkPiBhbnN3ZXJfc2Vj
dGlvbl87CisgIHN0ZDo6dmVjdG9yPE1kbnNSZXNvdXJjZVJlY29yZD4gYXV0aG9yaXR5X3NlY3Rp
b25fOworICBzdGQ6OnZlY3RvcjxNZG5zUmVzb3VyY2VSZWNvcmQ+IGFkZGl0aW9uYWxfc2VjdGlv
bl87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2VfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9tZG5zX21lc3NhZ2VfdW5pdHRlc3QuY2MKaW5kZXggZmI0YTNiMWU3YTI2MTU2MDlkMWE1
YTQzZDJkM2FiZWYwMDQ0OGY3Mi4uN2Y4MTZmNzQwYjhhNDBkNDcxZmExYjFlY2IzNzI0ODVmNGZm
YjY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvbWRuc19tZXNzYWdlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZV91bml0dGVz
dC5jYwpAQCAtMTksOSArMTksOSBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3Mu
aCIKICNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCiAKLSNkZWZpbmUgUmVhZE1EbnNNZXNzYWdlKFgs
IFkpIFJlYWRNRG5zTWVzc2FnZVRlc3RDYXNlKFgsIFksIHNpemVvZihZKSkKLSNkZWZpbmUgV3Jp
dGVNRG5zTWVzc2FnZUFuZENvbXBhcmUoWCwgWSkgXAotICBXcml0ZU1EbnNNZXNzYWdlQW5kQ29t
cGFyZVdpdGhUZXN0Q2FzdChYLCBZLCBzaXplb2YoWSkpCisjZGVmaW5lIFJlYWRNZG5zTWVzc2Fn
ZShYLCBZKSBSZWFkTWRuc01lc3NhZ2VUZXN0Q2FzZShYLCBZLCBzaXplb2YoWSkpCisjZGVmaW5l
IFdyaXRlTWRuc01lc3NhZ2VBbmRDb21wYXJlKFgsIFkpIFwKKyAgV3JpdGVNZG5zTWVzc2FnZUFu
ZENvbXBhcmVXaXRoVGVzdENhc3QoWCwgWSwgc2l6ZW9mKFkpKQogCiB1c2luZyA6OnRlc3Rpbmc6
OkVsZW1lbnRzQXJlOwogdXNpbmcgOjp0ZXN0aW5nOjpQYWlyOwpAQCAtMjU1LDE0ICsyNTUsMTQg
QEAgY29uc3QgdWludDhfdCBrQ29ycnVwdGVkQW5zd2VyV2l0aE5hbWVDb21wcmVzc2lvbjJbXSA9
IHsKICAgICAweGMwLCAweEE4LCAweDAwLCAweDAxLCAgLy8gMTkyLjE2OC4wLjEKIH07CiAKLWJv
b2wgUmVhZE1EbnNNZXNzYWdlVGVzdENhc2UoTURuc01lc3NhZ2UqIG1zZywKK2Jvb2wgUmVhZE1k
bnNNZXNzYWdlVGVzdENhc2UoTWRuc01lc3NhZ2UqIG1zZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCogdGVzdGNhc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplKSB7CiAgIE1lc3NhZ2VCdWZmZXJSZWFkZXIgYnVmKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHRlc3RjYXNlKSwgc2l6ZSk7CiAgIHJldHVybiBtc2ctPlJl
YWQoJmJ1Zik7CiB9CiAKLXZvaWQgV3JpdGVNRG5zTWVzc2FnZUFuZENvbXBhcmVXaXRoVGVzdENh
c3QoTURuc01lc3NhZ2UqIG1zZywKK3ZvaWQgV3JpdGVNZG5zTWVzc2FnZUFuZENvbXBhcmVXaXRo
VGVzdENhc3QoTWRuc01lc3NhZ2UqIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogdGVzdGNhc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKSB7CiAgIHJ0Yzo6Qnl0ZUJ1
ZmZlcldyaXRlciBvdXQ7CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBXcml0ZU1EbnNNZXNzYWdl
QW5kQ29tcGFyZVdpdGhUZXN0Q2FzdChNRG5zTWVzc2FnZSogbXNnLAogICBFWFBFQ1RfRVEodGVz
dGNhc2VfYnl0ZXMsIGJ5dGVzKTsKIH0KIAotYm9vbCBHZXRRdWVyaWVkTmFtZXMoTURuc01lc3Nh
Z2UqIG1zZywgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+KiBuYW1lcykgeworYm9vbCBHZXRRdWVyaWVk
TmFtZXMoTWRuc01lc3NhZ2UqIG1zZywgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+KiBuYW1lcykgewog
ICBpZiAoIW1zZy0+SXNRdWVyeSgpIHx8IG1zZy0+cXVlc3Rpb25fc2VjdGlvbigpLmVtcHR5KCkp
IHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KQEAgLTI4Niw3ICsyODYsNyBAQCBib29sIEdldFF1
ZXJpZWROYW1lcyhNRG5zTWVzc2FnZSogbXNnLCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4qIG5hbWVz
KSB7CiAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEdldFJlc29sdXRpb24oTURuc01lc3NhZ2Uq
IG1zZywKK2Jvb2wgR2V0UmVzb2x1dGlvbihNZG5zTWVzc2FnZSogbXNnLAogICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBydGM6OklQQWRkcmVzcz4qIG5hbWVzKSB7CiAg
IGlmIChtc2ctPklzUXVlcnkoKSB8fCBtc2ctPmFuc3dlcl9zZWN0aW9uKCkuZW1wdHkoKSkgewog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMwMywxMCArMzAzLDEwIEBAIGJvb2wgR2V0UmVzb2x1dGlv
bihNRG5zTWVzc2FnZSogbXNnLAogCiB9ICAvLyBuYW1lc3BhY2UKIAotVEVTVChNRG5zTWVzc2Fn
ZVRlc3QsIFJlYWRTaW5nbGVRdWVzdGlvbkZvcklQdjRBZGRyZXNzKSB7Ci0gIE1EbnNNZXNzYWdl
IG1zZzsKK1RFU1QoTWRuc01lc3NhZ2VUZXN0LCBSZWFkU2luZ2xlUXVlc3Rpb25Gb3JJUHY0QWRk
cmVzcykgeworICBNZG5zTWVzc2FnZSBtc2c7CiAgIEFTU0VSVF9UUlVFKAotICAgICAgUmVhZE1E
bnNNZXNzYWdlKCZtc2csIGtTaW5nbGVRdWVzdGlvbkZvcklQdjRBZGRyV2l0aFVuaWNhc3RSZXNw
b25zZSkpOworICAgICAgUmVhZE1kbnNNZXNzYWdlKCZtc2csIGtTaW5nbGVRdWVzdGlvbkZvcklQ
djRBZGRyV2l0aFVuaWNhc3RSZXNwb25zZSkpOwogICBFWFBFQ1RfVFJVRShtc2cuSXNRdWVyeSgp
KTsKICAgRVhQRUNUX0VRKDB4MTIzNCwgbXNnLkdldElkKCkpOwogICBBU1NFUlRfRVEoMXUsIG1z
Zy5xdWVzdGlvbl9zZWN0aW9uKCkuc2l6ZSgpKTsKQEAgLTMyMyw5ICszMjMsOSBAQCBURVNUKE1E
bnNNZXNzYWdlVGVzdCwgUmVhZFNpbmdsZVF1ZXN0aW9uRm9ySVB2NEFkZHJlc3MpIHsKICAgRVhQ
RUNUX1RIQVQocXVlcmllZF9uYW1lcywgRWxlbWVudHNBcmUoIndlYnJ0Yy5vcmcuIikpOwogfQog
Ci1URVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFR3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRk
cikgewotICBNRG5zTWVzc2FnZSBtc2c7Ci0gIEFTU0VSVF9UUlVFKFJlYWRNRG5zTWVzc2FnZSgK
K1RFU1QoTWRuc01lc3NhZ2VUZXN0LCBSZWFkVHdvUXVlc3Rpb25zRm9ySVB2NEFuZElQdjZBZGRy
KSB7CisgIE1kbnNNZXNzYWdlIG1zZzsKKyAgQVNTRVJUX1RSVUUoUmVhZE1kbnNNZXNzYWdlKAog
ICAgICAgJm1zZywga1R3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcldpdGhNdWx0aWNhc3RS
ZXNwb25zZSkpOwogICBFWFBFQ1RfVFJVRShtc2cuSXNRdWVyeSgpKTsKICAgRVhQRUNUX0VRKDB4
MTIzNCwgbXNnLkdldElkKCkpOwpAQCAtMzQ1LDkgKzM0NSw5IEBAIFRFU1QoTURuc01lc3NhZ2VU
ZXN0LCBSZWFkVHdvUXVlc3Rpb25zRm9ySVB2NEFuZElQdjZBZGRyKSB7CiAgICAgICAgICAgICAg
IFVub3JkZXJlZEVsZW1lbnRzQXJlKCJ3ZWJydGM0Lm9yZy4iLCAid2VicnRjNi5vcmcuIikpOwog
fQogCi1URVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFR3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2
QWRkcldpdGhOYW1lQ29tcHJlc3Npb24pIHsKLSAgTURuc01lc3NhZ2UgbXNnOwotICBBU1NFUlRf
VFJVRShSZWFkTURuc01lc3NhZ2UoCitURVNUKE1kbnNNZXNzYWdlVGVzdCwgUmVhZFR3b1F1ZXN0
aW9uc0ZvcklQdjRBbmRJUHY2QWRkcldpdGhOYW1lQ29tcHJlc3Npb24pIHsKKyAgTWRuc01lc3Nh
Z2UgbXNnOworICBBU1NFUlRfVFJVRShSZWFkTWRuc01lc3NhZ2UoCiAgICAgICAmbXNnLAogICAg
ICAga1R3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcldpdGhNdWx0aWNhc3RSZXNwb25zZUFu
ZE5hbWVDb21wcmVzc2lvbikpOwogCkBAIC0zNjMsMTAgKzM2MywxMCBAQCBURVNUKE1EbnNNZXNz
YWdlVGVzdCwgUmVhZFR3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcldpdGhOYW1lQ29tcHJl
c3Npb24pIHsKICAgICAgICAgICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoInd3dy53ZWJydGMu
b3JnLiIsICJtZG5zLndlYnJ0Yy5vcmcuIikpOwogfQogCi1URVNUKE1EbnNNZXNzYWdlVGVzdCwg
UmVhZFRocmVlUXVlc3Rpb25zV2l0aFR3b1BvaW50ZXJzVG9UaGVTYW1lTmFtZVN1ZmZpeCkgewot
ICBNRG5zTWVzc2FnZSBtc2c7CitURVNUKE1kbnNNZXNzYWdlVGVzdCwgUmVhZFRocmVlUXVlc3Rp
b25zV2l0aFR3b1BvaW50ZXJzVG9UaGVTYW1lTmFtZVN1ZmZpeCkgeworICBNZG5zTWVzc2FnZSBt
c2c7CiAgIEFTU0VSVF9UUlVFKAotICAgICAgUmVhZE1EbnNNZXNzYWdlKCZtc2csIGtUaHJlZVF1
ZXN0aW9uc1dpdGhUd29Qb2ludGVyc1RvVGhlU2FtZU5hbWVTdWZmaXgpKTsKKyAgICAgIFJlYWRN
ZG5zTWVzc2FnZSgmbXNnLCBrVGhyZWVRdWVzdGlvbnNXaXRoVHdvUG9pbnRlcnNUb1RoZVNhbWVO
YW1lU3VmZml4KSk7CiAKICAgQVNTRVJUX0VRKDN1LCBtc2cucXVlc3Rpb25fc2VjdGlvbigpLnNp
emUoKSk7CiAgIGNvbnN0IGF1dG8mIHF1ZXN0aW9uMSA9IG1zZy5xdWVzdGlvbl9zZWN0aW9uKClb
MF07CkBAIC0zODMsMTAgKzM4MywxMCBAQCBURVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFRocmVl
UXVlc3Rpb25zV2l0aFR3b1BvaW50ZXJzVG9UaGVTYW1lTmFtZVN1ZmZpeCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAid2VicnRjLm9yZy4iKSk7CiB9CiAKLVRFU1QoTURu
c01lc3NhZ2VUZXN0LAorVEVTVChNZG5zTWVzc2FnZVRlc3QsCiAgICAgIFJlYWRUaHJlZVF1ZXN0
aW9uc1dpdGhQb2ludGVyVG9OYW1lU3VmZml4Q29udGFpbmluZ0Fub3RoZXJQb2ludGVyKSB7Ci0g
IE1EbnNNZXNzYWdlIG1zZzsKLSAgQVNTRVJUX1RSVUUoUmVhZE1EbnNNZXNzYWdlKAorICBNZG5z
TWVzc2FnZSBtc2c7CisgIEFTU0VSVF9UUlVFKFJlYWRNZG5zTWVzc2FnZSgKICAgICAgICZtc2cs
IGtUaHJlZVF1ZXN0aW9uc1dpdGhQb2ludGVyVG9OYW1lU3VmZml4Q29udGFpbmluZ0Fub3RoZXJQ
b2ludGVyKSk7CiAKICAgQVNTRVJUX0VRKDN1LCBtc2cucXVlc3Rpb25fc2VjdGlvbigpLnNpemUo
KSk7CkBAIC00MDQsMTYgKzQwNCwxNiBAQCBURVNUKE1EbnNNZXNzYWdlVGVzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInd3dy5tZG5zLndlYnJ0Yy5vcmcuIikpOwogfQog
Ci1URVNUKE1EbnNNZXNzYWdlVGVzdCwKK1RFU1QoTWRuc01lc3NhZ2VUZXN0LAogICAgICBSZWFk
UXVlc3Rpb25XaXRoQ29ycnVwdGVkUG9pbnRlckluTmFtZUNvbXByZXNzaW9uU2hvdWxkRmFpbCkg
ewotICBNRG5zTWVzc2FnZSBtc2c7Ci0gIEVYUEVDVF9GQUxTRShSZWFkTURuc01lc3NhZ2UoJm1z
Zywga0NvcnJ1cHRlZFF1ZXN0aW9uV2l0aE5hbWVDb21wcmVzc2lvbjEpKTsKLSAgRVhQRUNUX0ZB
TFNFKFJlYWRNRG5zTWVzc2FnZSgmbXNnLCBrQ29ycnVwdGVkUXVlc3Rpb25XaXRoTmFtZUNvbXBy
ZXNzaW9uMikpOworICBNZG5zTWVzc2FnZSBtc2c7CisgIEVYUEVDVF9GQUxTRShSZWFkTWRuc01l
c3NhZ2UoJm1zZywga0NvcnJ1cHRlZFF1ZXN0aW9uV2l0aE5hbWVDb21wcmVzc2lvbjEpKTsKKyAg
RVhQRUNUX0ZBTFNFKFJlYWRNZG5zTWVzc2FnZSgmbXNnLCBrQ29ycnVwdGVkUXVlc3Rpb25XaXRo
TmFtZUNvbXByZXNzaW9uMikpOwogfQogCi1URVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFNpbmds
ZUFuc3dlckZvcklQdjRBZGRyKSB7Ci0gIE1EbnNNZXNzYWdlIG1zZzsKLSAgQVNTRVJUX1RSVUUo
UmVhZE1EbnNNZXNzYWdlKCZtc2csIGtTaW5nbGVBdXRob3JpdGF0aXZlQW5zd2VyV2l0aElQdjRB
ZGRyKSk7CitURVNUKE1kbnNNZXNzYWdlVGVzdCwgUmVhZFNpbmdsZUFuc3dlckZvcklQdjRBZGRy
KSB7CisgIE1kbnNNZXNzYWdlIG1zZzsKKyAgQVNTRVJUX1RSVUUoUmVhZE1kbnNNZXNzYWdlKCZt
c2csIGtTaW5nbGVBdXRob3JpdGF0aXZlQW5zd2VyV2l0aElQdjRBZGRyKSk7CiAgIEVYUEVDVF9G
QUxTRShtc2cuSXNRdWVyeSgpKTsKICAgRVhQRUNUX1RSVUUobXNnLklzQXV0aG9yaXRhdGl2ZSgp
KTsKICAgRVhQRUNUX0VRKDB4MTIzNCwgbXNnLkdldElkKCkpOwpAQCAtNDMyLDEwICs0MzIsMTAg
QEAgVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRTaW5nbGVBbnN3ZXJGb3JJUHY0QWRkcikgewog
ICBFWFBFQ1RfVEhBVChyZXNvbHV0aW9uLCBFbGVtZW50c0FyZShQYWlyKCJ3ZWJydGMub3JnLiIs
IGV4cGVjdGVkX2FkZHIpKSk7CiB9CiAKLVRFU1QoTURuc01lc3NhZ2VUZXN0LCBSZWFkVHdvQW5z
d2Vyc0ZvcklQdjRBbmRJUHY2QWRkcikgewotICBNRG5zTWVzc2FnZSBtc2c7CitURVNUKE1kbnNN
ZXNzYWdlVGVzdCwgUmVhZFR3b0Fuc3dlcnNGb3JJUHY0QW5kSVB2NkFkZHIpIHsKKyAgTWRuc01l
c3NhZ2UgbXNnOwogICBBU1NFUlRfVFJVRSgKLSAgICAgIFJlYWRNRG5zTWVzc2FnZSgmbXNnLCBr
VHdvQXV0aG9yaXRhdGl2ZUFuc3dlcnNXaXRoSVB2NEFuZElQdjZBZGRyKSk7CisgICAgICBSZWFk
TWRuc01lc3NhZ2UoJm1zZywga1R3b0F1dGhvcml0YXRpdmVBbnN3ZXJzV2l0aElQdjRBbmRJUHY2
QWRkcikpOwogICBFWFBFQ1RfRkFMU0UobXNnLklzUXVlcnkoKSk7CiAgIEVYUEVDVF9UUlVFKG1z
Zy5Jc0F1dGhvcml0YXRpdmUoKSk7CiAgIEVYUEVDVF9FUSgweDEyMzQsIG1zZy5HZXRJZCgpKTsK
QEAgLTQ2Miw5ICs0NjIsOSBAQCBURVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFR3b0Fuc3dlcnNG
b3JJUHY0QW5kSVB2NkFkZHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFpcigid2VicnRjNi5vcmcuIiwgZXhwZWN0ZWRfYWRkcl9pcHY2KSkpOwogfQogCi1URVNUKE1E
bnNNZXNzYWdlVGVzdCwgUmVhZFR3b0Fuc3dlcnNGb3JJUHY0QW5kSVB2NkFkZHJXaXRoTmFtZUNv
bXByZXNzaW9uKSB7Ci0gIE1EbnNNZXNzYWdlIG1zZzsKLSAgQVNTRVJUX1RSVUUoUmVhZE1EbnNN
ZXNzYWdlKAorVEVTVChNZG5zTWVzc2FnZVRlc3QsIFJlYWRUd29BbnN3ZXJzRm9ySVB2NEFuZElQ
djZBZGRyV2l0aE5hbWVDb21wcmVzc2lvbikgeworICBNZG5zTWVzc2FnZSBtc2c7CisgIEFTU0VS
VF9UUlVFKFJlYWRNZG5zTWVzc2FnZSgKICAgICAgICZtc2csIGtUd29BdXRob3JpdGF0aXZlQW5z
d2Vyc1dpdGhJUHY0QW5kSVB2NkFkZHJXaXRoTmFtZUNvbXByZXNzaW9uKSk7CiAKICAgc3RkOjpt
YXA8c3RkOjpzdHJpbmcsIHJ0Yzo6SVBBZGRyZXNzPiByZXNvbHV0aW9uOwpAQCAtNDc4LDU3ICs0
NzgsNTcgQEAgVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRUd29BbnN3ZXJzRm9ySVB2NEFuZElQ
djZBZGRyV2l0aE5hbWVDb21wcmVzc2lvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYWlyKCJ3ZWJydGMub3JnLiIsIGV4cGVjdGVkX2FkZHJfaXB2NikpKTsKIH0KIAot
VEVTVChNRG5zTWVzc2FnZVRlc3QsCitURVNUKE1kbnNNZXNzYWdlVGVzdCwKICAgICAgUmVhZEFu
c3dlcldpdGhDb3JydXB0ZWRQb2ludGVySW5OYW1lQ29tcHJlc3Npb25TaG91bGRGYWlsKSB7Ci0g
IE1EbnNNZXNzYWdlIG1zZzsKLSAgRVhQRUNUX0ZBTFNFKFJlYWRNRG5zTWVzc2FnZSgmbXNnLCBr
Q29ycnVwdGVkQW5zd2VyV2l0aE5hbWVDb21wcmVzc2lvbjEpKTsKLSAgRVhQRUNUX0ZBTFNFKFJl
YWRNRG5zTWVzc2FnZSgmbXNnLCBrQ29ycnVwdGVkQW5zd2VyV2l0aE5hbWVDb21wcmVzc2lvbjIp
KTsKKyAgTWRuc01lc3NhZ2UgbXNnOworICBFWFBFQ1RfRkFMU0UoUmVhZE1kbnNNZXNzYWdlKCZt
c2csIGtDb3JydXB0ZWRBbnN3ZXJXaXRoTmFtZUNvbXByZXNzaW9uMSkpOworICBFWFBFQ1RfRkFM
U0UoUmVhZE1kbnNNZXNzYWdlKCZtc2csIGtDb3JydXB0ZWRBbnN3ZXJXaXRoTmFtZUNvbXByZXNz
aW9uMikpOwogfQogCi1URVNUKE1EbnNNZXNzYWdlVGVzdCwgV3JpdGVTaW5nbGVRdWVzdGlvbkZv
cklQdjRBZGRyKSB7Ci0gIE1EbnNNZXNzYWdlIG1zZzsKK1RFU1QoTWRuc01lc3NhZ2VUZXN0LCBX
cml0ZVNpbmdsZVF1ZXN0aW9uRm9ySVB2NEFkZHIpIHsKKyAgTWRuc01lc3NhZ2UgbXNnOwogICBt
c2cuU2V0SWQoMHgxMjM0KTsKICAgbXNnLlNldFF1ZXJ5T3JSZXNwb25zZSh0cnVlKTsKIAotICBN
RG5zUXVlc3Rpb24gcXVlc3Rpb247CisgIE1kbnNRdWVzdGlvbiBxdWVzdGlvbjsKICAgcXVlc3Rp
b24uU2V0TmFtZSgid2VicnRjLm9yZy4iKTsKICAgcXVlc3Rpb24uU2V0VHlwZShTZWN0aW9uRW50
cnlUeXBlOjprQSk7CiAgIHF1ZXN0aW9uLlNldENsYXNzKFNlY3Rpb25FbnRyeUNsYXNzOjprSU4p
OwogICBxdWVzdGlvbi5TZXRVbmljYXN0UmVzcG9uc2UodHJ1ZSk7CiAgIG1zZy5BZGRRdWVzdGlv
bihxdWVzdGlvbik7CiAKLSAgV3JpdGVNRG5zTWVzc2FnZUFuZENvbXBhcmUoJm1zZywKKyAgV3Jp
dGVNZG5zTWVzc2FnZUFuZENvbXBhcmUoJm1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga1NpbmdsZVF1ZXN0aW9uRm9ySVB2NEFkZHJXaXRoVW5pY2FzdFJlc3BvbnNlKTsKIH0KIAot
VEVTVChNRG5zTWVzc2FnZVRlc3QsIFdyaXRlVHdvUXVlc3Rpb25zRm9ySVB2NEFuZElQdjZBZGRy
KSB7Ci0gIE1EbnNNZXNzYWdlIG1zZzsKK1RFU1QoTWRuc01lc3NhZ2VUZXN0LCBXcml0ZVR3b1F1
ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcikgeworICBNZG5zTWVzc2FnZSBtc2c7CiAgIG1zZy5T
ZXRJZCgweDEyMzQpOwogICBtc2cuU2V0UXVlcnlPclJlc3BvbnNlKHRydWUpOwogCi0gIE1EbnNR
dWVzdGlvbiBxdWVzdGlvbjE7CisgIE1kbnNRdWVzdGlvbiBxdWVzdGlvbjE7CiAgIHF1ZXN0aW9u
MS5TZXROYW1lKCJ3ZWJydGM0Lm9yZy4iKTsKICAgcXVlc3Rpb24xLlNldFR5cGUoU2VjdGlvbkVu
dHJ5VHlwZTo6a0EpOwogICBxdWVzdGlvbjEuU2V0Q2xhc3MoU2VjdGlvbkVudHJ5Q2xhc3M6OmtJ
Tik7CiAgIG1zZy5BZGRRdWVzdGlvbihxdWVzdGlvbjEpOwogCi0gIE1EbnNRdWVzdGlvbiBxdWVz
dGlvbjI7CisgIE1kbnNRdWVzdGlvbiBxdWVzdGlvbjI7CiAgIHF1ZXN0aW9uMi5TZXROYW1lKCJ3
ZWJydGM2Lm9yZy4iKTsKICAgcXVlc3Rpb24yLlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZTo6a0FB
QUEpOwogICBxdWVzdGlvbjIuU2V0Q2xhc3MoU2VjdGlvbkVudHJ5Q2xhc3M6OmtJTik7CiAgIG1z
Zy5BZGRRdWVzdGlvbihxdWVzdGlvbjIpOwogCi0gIFdyaXRlTURuc01lc3NhZ2VBbmRDb21wYXJl
KAorICBXcml0ZU1kbnNNZXNzYWdlQW5kQ29tcGFyZSgKICAgICAgICZtc2csIGtUd29RdWVzdGlv
bnNGb3JJUHY0QW5kSVB2NkFkZHJXaXRoTXVsdGljYXN0UmVzcG9uc2UpOwogfQogCi1URVNUKE1E
bnNNZXNzYWdlVGVzdCwgV3JpdGVTaW5nbGVBbnN3ZXJUb0lQdjRBZGRyKSB7Ci0gIE1EbnNNZXNz
YWdlIG1zZzsKK1RFU1QoTWRuc01lc3NhZ2VUZXN0LCBXcml0ZVNpbmdsZUFuc3dlclRvSVB2NEFk
ZHIpIHsKKyAgTWRuc01lc3NhZ2UgbXNnOwogICBtc2cuU2V0SWQoMHgxMjM0KTsKICAgbXNnLlNl
dFF1ZXJ5T3JSZXNwb25zZShmYWxzZSk7CiAgIG1zZy5TZXRBdXRob3JpdGF0aXZlKHRydWUpOwog
Ci0gIE1EbnNSZXNvdXJjZVJlY29yZCBhbnN3ZXI7CisgIE1kbnNSZXNvdXJjZVJlY29yZCBhbnN3
ZXI7CiAgIGFuc3dlci5TZXROYW1lKCJ3ZWJydGMub3JnLiIpOwogICBhbnN3ZXIuU2V0VHlwZShT
ZWN0aW9uRW50cnlUeXBlOjprQSk7CiAgIGFuc3dlci5TZXRDbGFzcyhTZWN0aW9uRW50cnlDbGFz
czo6a0lOKTsKQEAgLTUzNywxNiArNTM3LDE2IEBAIFRFU1QoTURuc01lc3NhZ2VUZXN0LCBXcml0
ZVNpbmdsZUFuc3dlclRvSVB2NEFkZHIpIHsKICAgYW5zd2VyLlNldFR0bFNlY29uZHMoMTIwKTsK
ICAgbXNnLkFkZEFuc3dlclJlY29yZChhbnN3ZXIpOwogCi0gIFdyaXRlTURuc01lc3NhZ2VBbmRD
b21wYXJlKCZtc2csIGtTaW5nbGVBdXRob3JpdGF0aXZlQW5zd2VyV2l0aElQdjRBZGRyKTsKKyAg
V3JpdGVNZG5zTWVzc2FnZUFuZENvbXBhcmUoJm1zZywga1NpbmdsZUF1dGhvcml0YXRpdmVBbnN3
ZXJXaXRoSVB2NEFkZHIpOwogfQogCi1URVNUKE1EbnNNZXNzYWdlVGVzdCwgV3JpdGVUd29BbnN3
ZXJzVG9JUHY0QW5kSVB2NkFkZHIpIHsKLSAgTURuc01lc3NhZ2UgbXNnOworVEVTVChNZG5zTWVz
c2FnZVRlc3QsIFdyaXRlVHdvQW5zd2Vyc1RvSVB2NEFuZElQdjZBZGRyKSB7CisgIE1kbnNNZXNz
YWdlIG1zZzsKICAgbXNnLlNldElkKDB4MTIzNCk7CiAgIG1zZy5TZXRRdWVyeU9yUmVzcG9uc2Uo
ZmFsc2UpOwogICBtc2cuU2V0QXV0aG9yaXRhdGl2ZSh0cnVlKTsKIAotICBNRG5zUmVzb3VyY2VS
ZWNvcmQgYW5zd2VyMTsKKyAgTWRuc1Jlc291cmNlUmVjb3JkIGFuc3dlcjE7CiAgIGFuc3dlcjEu
U2V0TmFtZSgid2VicnRjNC5vcmcuIik7CiAgIGFuc3dlcjEuU2V0VHlwZShTZWN0aW9uRW50cnlU
eXBlOjprQSk7CiAgIGFuc3dlcjEuU2V0Q2xhc3MoU2VjdGlvbkVudHJ5Q2xhc3M6OmtJTik7CkBA
IC01NTUsNyArNTU1LDcgQEAgVEVTVChNRG5zTWVzc2FnZVRlc3QsIFdyaXRlVHdvQW5zd2Vyc1Rv
SVB2NEFuZElQdjZBZGRyKSB7CiAgIGFuc3dlcjEuU2V0VHRsU2Vjb25kcyg2MCk7CiAgIG1zZy5B
ZGRBbnN3ZXJSZWNvcmQoYW5zd2VyMSk7CiAKLSAgTURuc1Jlc291cmNlUmVjb3JkIGFuc3dlcjI7
CisgIE1kbnNSZXNvdXJjZVJlY29yZCBhbnN3ZXIyOwogICBhbnN3ZXIyLlNldE5hbWUoIndlYnJ0
YzYub3JnLiIpOwogICBhbnN3ZXIyLlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZTo6a0FBQUEpOwog
ICBhbnN3ZXIyLlNldENsYXNzKFNlY3Rpb25FbnRyeUNsYXNzOjprSU4pOwpAQCAtNTY0LDcgKzU2
NCw3IEBAIFRFU1QoTURuc01lc3NhZ2VUZXN0LCBXcml0ZVR3b0Fuc3dlcnNUb0lQdjRBbmRJUHY2
QWRkcikgewogICBhbnN3ZXIyLlNldFR0bFNlY29uZHMoMTIwKTsKICAgbXNnLkFkZEFuc3dlclJl
Y29yZChhbnN3ZXIyKTsKIAotICBXcml0ZU1EbnNNZXNzYWdlQW5kQ29tcGFyZSgmbXNnLCBrVHdv
QXV0aG9yaXRhdGl2ZUFuc3dlcnNXaXRoSVB2NEFuZElQdjZBZGRyKTsKKyAgV3JpdGVNZG5zTWVz
c2FnZUFuZENvbXBhcmUoJm1zZywga1R3b0F1dGhvcml0YXRpdmVBbnN3ZXJzV2l0aElQdjRBbmRJ
UHY2QWRkcik7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21vY2tpY2V0cmFu
c3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL21vY2tpY2V0cmFuc3BvcnQuaAppbmRleCBkMTg2M2M1MjkzNTIwOWVlZTQ0MmE0ODNjNDI2
NTAxOGY2ZWIyYzcwLi5iMThjZTNkNWFkZTFkYTk0MDBjY2FkMjAyYmQ4YWRkYThjYWE1ZmU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9tb2NraWNldHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvbW9ja2ljZXRyYW5zcG9ydC5oCkBAIC00Nyw2ICs0Nywx
MCBAQCBjbGFzcyBNb2NrSWNlVHJhbnNwb3J0IDogcHVibGljIEljZVRyYW5zcG9ydEludGVybmFs
IHsKICAgSWNlVHJhbnNwb3J0U3RhdGUgR2V0U3RhdGUoKSBjb25zdCBvdmVycmlkZSB7CiAgICAg
cmV0dXJuIEljZVRyYW5zcG9ydFN0YXRlOjpTVEFURV9JTklUOwogICB9CisgIHdlYnJ0Yzo6SWNl
VHJhbnNwb3J0U3RhdGUgR2V0SWNlVHJhbnNwb3J0U3RhdGUoKSBjb25zdCBvdmVycmlkZSB7Cisg
ICAgcmV0dXJuIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtOZXc7CisgIH0KKwogICBjb25z
dCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0X25hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cmFuc3BvcnRfbmFtZV87IH0KICAgaW50IGNvbXBvbmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIDA7IH0KICAgdm9pZCBTZXRJY2VSb2xlKEljZVJvbGUgcm9sZSkgb3ZlcnJpZGUge30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3AycGNvbnN0YW50cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2UvcDJwY29uc3RhbnRzLmgKaW5kZXggYjJlOTJlZmYxMzUyYWM4YzYwNWNh
MDE0ODQ5ODE5NGE2YTcxMWJlZi4uMjk0OGJlMGJiODM3ZDRjMDRkY2JmMjA4MWY5OGIwMmQwZDQ3
ZDk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvcDJwY29uc3RhbnRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwY29uc3RhbnRzLmgKQEAgLTEzLDYgKzEzLDgg
QEAKIAogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNf
ZXhwb3J0LmgiCisKIG5hbWVzcGFjZSBjcmlja2V0IHsKIAogLy8gQ05fID09ICJjb250ZW50IG5h
bWUiLiAgV2hlbiB3ZSBpbml0aWF0ZSBhIHNlc3Npb24sIHdlIGNob29zZSB0aGUKQEAgLTI5LDcg
KzMxLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgQ05fT1RIRVJbXTsKIGV4dGVybiBjb25zdCBjaGFy
IEdST1VQX1RZUEVfQlVORExFW107CiAKIGV4dGVybiBjb25zdCBpbnQgSUNFX1VGUkFHX0xFTkdU
SDsKLWV4dGVybiBjb25zdCBpbnQgSUNFX1BXRF9MRU5HVEg7CitSVENfRVhQT1JUIGV4dGVybiBj
b25zdCBpbnQgSUNFX1BXRF9MRU5HVEg7CiBleHRlcm4gY29uc3Qgc2l6ZV90IElDRV9VRlJBR19N
SU5fTEVOR1RIOwogZXh0ZXJuIGNvbnN0IHNpemVfdCBJQ0VfUFdEX01JTl9MRU5HVEg7CiBleHRl
cm4gY29uc3Qgc2l6ZV90IElDRV9VRlJBR19NQVhfTEVOR1RIOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0
Y2hhbm5lbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWwuY2MKaW5kZXggYjBhYmUyNGEwNTgwYTEyYTBmYmVj
MDI1ZTYzYWYxMjBkZWM2N2ZiMC4uZjYxMjkxYzVkZGMwMDgyNmViNDI0NzM2NGFjNGY1YTFiYTI1
MTIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFubmVsLmNj
CkBAIC0zMjMsNiArMzIzLDEwIEBAIEljZVRyYW5zcG9ydFN0YXRlIFAyUFRyYW5zcG9ydENoYW5u
ZWw6OkdldFN0YXRlKCkgY29uc3QgewogICByZXR1cm4gc3RhdGVfOwogfQogCit3ZWJydGM6Oklj
ZVRyYW5zcG9ydFN0YXRlIFAyUFRyYW5zcG9ydENoYW5uZWw6OkdldEljZVRyYW5zcG9ydFN0YXRl
KCkgY29uc3QgeworICByZXR1cm4gc3RhbmRhcmRpemVkX3N0YXRlXzsKK30KKwogY29uc3Qgc3Rk
OjpzdHJpbmcmIFAyUFRyYW5zcG9ydENoYW5uZWw6OnRyYW5zcG9ydF9uYW1lKCkgY29uc3Qgewog
ICByZXR1cm4gdHJhbnNwb3J0X25hbWVfOwogfQpAQCAtMzg3LDYgKzM5MSw0MSBAQCBJY2VUcmFu
c3BvcnRTdGF0ZSBQMlBUcmFuc3BvcnRDaGFubmVsOjpDb21wdXRlU3RhdGUoKSBjb25zdCB7CiAg
IHJldHVybiBJY2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfQ09NUExFVEVEOwogfQogCisvLyBDb21w
dXRlIHRoZSBjdXJyZW50IFJUQ0ljZVRyYW5zcG9ydFN0YXRlIGFzIGRlc2NyaWJlZCBpbgorLy8g
aHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8jZG9tLXJ0Y2ljZXRyYW5zcG9ydHN0YXRlCisv
LyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85MzA4KTogUmV0dXJuIEljZVRyYW5zcG9ydFN0YXRlOjpr
RGlzY29ubmVjdGVkIHdoZW4gaXQKKy8vIG1ha2VzIHNlbnNlLgorLy8gVE9ETyhidWdzLndlYnJ0
Yy5vcmcvOTIxOCk6IEF2b2lkIHByZW1hdHVyZWx5IHNpZ25hbGxpbmcga0ZhaWxlZCBvbmNlIHdl
IGhhdmUKKy8vIGltcGxlbWVudGVkIGVuZC1vZi1jYW5kaWRhdGVzIHNpZ25hbGxpbmcuCit3ZWJy
dGM6OkljZVRyYW5zcG9ydFN0YXRlIFAyUFRyYW5zcG9ydENoYW5uZWw6OkNvbXB1dGVJY2VUcmFu
c3BvcnRTdGF0ZSgpCisgICAgY29uc3QgeworICBib29sIGhhc19jb25uZWN0aW9uID0gZmFsc2U7
CisgIGZvciAoQ29ubmVjdGlvbiogY29ubmVjdGlvbiA6IGNvbm5lY3Rpb25zXykgeworICAgIGlm
IChjb25uZWN0aW9uLT5hY3RpdmUoKSkgeworICAgICAgaGFzX2Nvbm5lY3Rpb24gPSB0cnVlOwor
ICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgc3dpdGNoIChnYXRoZXJpbmdfc3RhdGVfKSB7
CisgICAgY2FzZSBrSWNlR2F0aGVyaW5nQ29tcGxldGU6CisgICAgICBpZiAoaGFzX2Nvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybiB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlOjprQ29tcGxldGVk
OworICAgICAgZWxzZQorICAgICAgICByZXR1cm4gd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6
a0ZhaWxlZDsKKyAgICBjYXNlIGtJY2VHYXRoZXJpbmdOZXc6CisgICAgICByZXR1cm4gd2VicnRj
OjpJY2VUcmFuc3BvcnRTdGF0ZTo6a05ldzsKKyAgICBjYXNlIGtJY2VHYXRoZXJpbmdHYXRoZXJp
bmc6CisgICAgICBpZiAoaGFzX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB3ZWJydGM6Oklj
ZVRyYW5zcG9ydFN0YXRlOjprQ29ubmVjdGVkOworICAgICAgZWxzZQorICAgICAgICByZXR1cm4g
d2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6a0NoZWNraW5nOworICAgIGRlZmF1bHQ6CisgICAg
ICBSVENfTk9UUkVBQ0hFRCgpOworICAgICAgcmV0dXJuIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3Rh
dGU6OmtGYWlsZWQ7CisgIH0KK30KKwogdm9pZCBQMlBUcmFuc3BvcnRDaGFubmVsOjpTZXRJY2VQ
YXJhbWV0ZXJzKGNvbnN0IEljZVBhcmFtZXRlcnMmIGljZV9wYXJhbXMpIHsKICAgUlRDX0RDSEVD
SyhuZXR3b3JrX3RocmVhZF8gPT0gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSk7CiAgIFJUQ19MT0co
TFNfSU5GTykgPDwgIlNldCBJQ0UgdWZyYWc6ICIgPDwgaWNlX3BhcmFtcy51ZnJhZwpAQCAtMTgy
Nyw2ICsxODY2LDkgQEAgdm9pZCBQMlBUcmFuc3BvcnRDaGFubmVsOjpTd2l0Y2hTZWxlY3RlZENv
bm5lY3Rpb24oQ29ubmVjdGlvbiogY29ubikgewogLy8gZXhhbXBsZSwgd2UgY2FsbCB0aGlzIGF0
IHRoZSBlbmQgb2YgU29ydENvbm5lY3Rpb25zQW5kVXBkYXRlU3RhdGUuCiB2b2lkIFAyUFRyYW5z
cG9ydENoYW5uZWw6OlVwZGF0ZVN0YXRlKCkgewogICBJY2VUcmFuc3BvcnRTdGF0ZSBzdGF0ZSA9
IENvbXB1dGVTdGF0ZSgpOworICB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlIGN1cnJlbnRfc3Rh
bmRhcmRpemVkX3N0YXRlID0KKyAgICAgIENvbXB1dGVJY2VUcmFuc3BvcnRTdGF0ZSgpOworCiAg
IGlmIChzdGF0ZV8gIT0gc3RhdGUpIHsKICAgICBSVENfTE9HKExTX0lORk8pIDw8IFRvU3RyaW5n
KCkKICAgICAgICAgICAgICAgICAgICAgIDw8ICI6IFRyYW5zcG9ydCBjaGFubmVsIHN0YXRlIGNo
YW5nZWQgZnJvbSAiCkBAIC0xODY4LDYgKzE5MTAsMTAgQEAgdm9pZCBQMlBUcmFuc3BvcnRDaGFu
bmVsOjpVcGRhdGVTdGF0ZSgpIHsKICAgICBTaWduYWxTdGF0ZUNoYW5nZWQodGhpcyk7CiAgIH0K
IAorICBpZiAoc3RhbmRhcmRpemVkX3N0YXRlXyAhPSBjdXJyZW50X3N0YW5kYXJkaXplZF9zdGF0
ZSkgeworICAgIHN0YW5kYXJkaXplZF9zdGF0ZV8gPSBjdXJyZW50X3N0YW5kYXJkaXplZF9zdGF0
ZTsKKyAgICBTaWduYWxJY2VUcmFuc3BvcnRTdGF0ZUNoYW5nZWQodGhpcyk7CisgIH0KICAgLy8g
SWYgb3VyIHNlbGVjdGVkIGNvbm5lY3Rpb24gaXMgInByZXN1bWVkIHdyaXRhYmxlIiAoVFVSTi1U
VVJOIHdpdGggbm8KICAgLy8gQ3JlYXRlUGVybWlzc2lvbiByZXF1aXJlZCksIGFjdCBsaWtlIHdl
J3JlIGFscmVhZHkgd3JpdGFibGUgdG8gdGhlIHVwcGVyCiAgIC8vIGxheWVycywgc28gdGhleSBj
YW4gc3RhcnQgbWVkaWEgcXVpY2tlci4KQEAgLTIzMTksNyArMjM2NSw3IEBAIGJvb2wgUDJQVHJh
bnNwb3J0Q2hhbm5lbDo6UHJ1bmVQb3J0KFBvcnRJbnRlcmZhY2UqIHBvcnQpIHsKIHZvaWQgUDJQ
VHJhbnNwb3J0Q2hhbm5lbDo6T25SZWFkUGFja2V0KENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYg
cGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgUlRDX0RDSEVDSyhuZXR3b3JrX3RocmVhZF8gPT0g
cnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSk7CiAKICAgLy8gRG8gbm90IGRlbGl2ZXIsIGlmIHBhY2tl
dCBkb2Vzbid0IGJlbG9uZyB0byB0aGUgY29ycmVjdCB0cmFuc3BvcnQgY2hhbm5lbC4KQEAgLTIz
MjcsNyArMjM3Myw3IEBAIHZvaWQgUDJQVHJhbnNwb3J0Q2hhbm5lbDo6T25SZWFkUGFja2V0KENv
bm5lY3Rpb24qIGNvbm5lY3Rpb24sCiAgICAgcmV0dXJuOwogCiAgIC8vIExldCB0aGUgY2xpZW50
IGtub3cgb2YgYW4gaW5jb21pbmcgcGFja2V0Ci0gIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0
YSwgbGVuLCBwYWNrZXRfdGltZSwgMCk7CisgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwg
bGVuLCBwYWNrZXRfdGltZV91cywgMCk7CiAKICAgLy8gTWF5IG5lZWQgdG8gc3dpdGNoIHRoZSBz
ZW5kaW5nIGNvbm5lY3Rpb24gYmFzZWQgb24gdGhlIHJlY2VpdmluZyBtZWRpYSBwYXRoCiAgIC8v
IGlmIHRoaXMgaXMgdGhlIGNvbnRyb2xsZWQgc2lkZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5zcG9ydGNoYW5u
ZWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3AycHRyYW5zcG9ydGNoYW5uZWwuaAppbmRleCBmYmVkMzQ0Y2MzM2U2ZWM3MzFjOWYwODYwMGJk
ZGI1YThkYjAxZmM5Li5hYmVkZDBiZGQzNDg5Mzc1ZTUyZjk0MzYxMjJmY2Q2MTljYTc1MzY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9wMnB0cmFuc3BvcnRjaGFubmVsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbC5oCkBAIC00Miw2
ICs0Miw3IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Ry
aW5ncy9zdHJpbmdfYnVpbGRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhw
b3J0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90Lmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNzUsNyArNzYsNyBAQCBjbGFzcyBSZW1vdGVDYW5k
aWRhdGUgOiBwdWJsaWMgQ2FuZGlkYXRlIHsKIAogLy8gUDJQVHJhbnNwb3J0Q2hhbm5lbCBtYW5h
Z2VzIHRoZSBjYW5kaWRhdGVzIGFuZCBjb25uZWN0aW9uIHByb2Nlc3MgdG8ga2VlcAogLy8gdHdv
IFAyUCBjbGllbnRzIGNvbm5lY3RlZCB0byBlYWNoIG90aGVyLgotY2xhc3MgUDJQVHJhbnNwb3J0
Q2hhbm5lbCA6IHB1YmxpYyBJY2VUcmFuc3BvcnRJbnRlcm5hbCB7CitjbGFzcyBSVENfRVhQT1JU
IFAyUFRyYW5zcG9ydENoYW5uZWwgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewogIHB1
YmxpYzoKICAgLy8gRm9yIHRlc3Rpbmcgb25seS4KICAgLy8gVE9ETyh6c3RlaW4pOiBSZW1vdmUg
b25jZSBBc3luY1Jlc29sdmVyRmFjdG9yeSBpcyByZXF1aXJlZC4KQEAgLTkxLDYgKzkyLDggQEAg
Y2xhc3MgUDJQVHJhbnNwb3J0Q2hhbm5lbCA6IHB1YmxpYyBJY2VUcmFuc3BvcnRJbnRlcm5hbCB7
CiAKICAgLy8gRnJvbSBUcmFuc3BvcnRDaGFubmVsSW1wbDoKICAgSWNlVHJhbnNwb3J0U3RhdGUg
R2V0U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZSBH
ZXRJY2VUcmFuc3BvcnRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB0cmFuc3BvcnRfbmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICBpbnQgY29tcG9uZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgIGJvb2wgd3JpdGFibGUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTI0
Myw3ICsyNDYsMTMgQEAgY2xhc3MgUDJQVHJhbnNwb3J0Q2hhbm5lbCA6IHB1YmxpYyBJY2VUcmFu
c3BvcnRJbnRlcm5hbCB7CiAgIHZvaWQgVXBkYXRlU3RhdGUoKTsKICAgdm9pZCBIYW5kbGVBbGxU
aW1lZE91dCgpOwogICB2b2lkIE1heWJlU3RvcFBvcnRBbGxvY2F0b3JTZXNzaW9ucygpOworCisg
IC8vIENvbXB1dGVJY2VUcmFuc3BvcnRTdGF0ZSBjb21wdXRlcyB0aGUgUlRDSWNlVHJhbnNwb3J0
U3RhdGUgYXMgZGVzY3JpYmVkIGluCisgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMt
cGMvI2RvbS1ydGNpY2V0cmFuc3BvcnRzdGF0ZS4gQ29tcHV0ZVN0YXRlCisgIC8vIGNvbXB1dGVz
IHRoZSB2YWx1ZSB3ZSBjdXJyZW50bHkgZXhwb3J0IGFzIFJUQ0ljZVRyYW5zcG9ydFN0YXRlLgor
ICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85MzA4KTogUmVtb3ZlIENvbXB1dGVTdGF0ZSBvbmNl
IGl0J3Mgbm8gbG9uZ2VyIHVzZWQuCiAgIEljZVRyYW5zcG9ydFN0YXRlIENvbXB1dGVTdGF0ZSgp
IGNvbnN0OworICB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlIENvbXB1dGVJY2VUcmFuc3BvcnRT
dGF0ZSgpIGNvbnN0OwogCiAgIENvbm5lY3Rpb24qIEdldEJlc3RDb25uZWN0aW9uT25OZXR3b3Jr
KHJ0Yzo6TmV0d29yayogbmV0d29yaykgY29uc3Q7CiAgIGJvb2wgQ3JlYXRlQ29ubmVjdGlvbnMo
Y29uc3QgQ2FuZGlkYXRlJiByZW1vdGVfY2FuZGlkYXRlLApAQCAtMjk1LDcgKzMwNCw3IEBAIGNs
YXNzIFAyUFRyYW5zcG9ydENoYW5uZWwgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewog
ICB2b2lkIE9uUmVhZFBhY2tldChDb25uZWN0aW9uKiBjb25uZWN0aW9uLAogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVu
LAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQg
T25TZW50UGFja2V0KGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgc2VudF9wYWNrZXQpOwogICB2b2lk
IE9uUmVhZHlUb1NlbmQoQ29ubmVjdGlvbiogY29ubmVjdGlvbik7CiAgIHZvaWQgT25Db25uZWN0
aW9uRGVzdHJveWVkKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24pOwpAQCAtNDA3LDcgKzQxNiwxMSBA
QCBjbGFzcyBQMlBUcmFuc3BvcnRDaGFubmVsIDogcHVibGljIEljZVRyYW5zcG9ydEludGVybmFs
IHsKICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6QmFzaWNSZWdhdGhlcmluZ0NvbnRyb2xsZXI+
IHJlZ2F0aGVyaW5nX2NvbnRyb2xsZXJfOwogICBpbnQ2NF90IGxhc3RfcGluZ19zZW50X21zXyA9
IDA7CiAgIGludCB3ZWFrX3BpbmdfaW50ZXJ2YWxfID0gV0VBS19QSU5HX0lOVEVSVkFMOworICAv
LyBUT0RPKGpvbmFzb2xzc29uKTogUmVtb3ZlIHN0YXRlXyBhbmQgcmVuYW1lIHN0YW5kYXJkaXpl
ZF9zdGF0ZV8gb25jZSBzdGF0ZV8KKyAgLy8gaXMgbm8gbG9uZ2VyIHVzZWQgdG8gY29tcHV0ZSB0
aGUgSUNFIGNvbm5lY3Rpb24gc3RhdGUuCiAgIEljZVRyYW5zcG9ydFN0YXRlIHN0YXRlXyA9IElj
ZVRyYW5zcG9ydFN0YXRlOjpTVEFURV9JTklUOworICB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRl
IHN0YW5kYXJkaXplZF9zdGF0ZV8gPQorICAgICAgd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6
a05ldzsKICAgSWNlQ29uZmlnIGNvbmZpZ187CiAgIGludCBsYXN0X3NlbnRfcGFja2V0X2lkXyA9
IC0xOyAgLy8gLTEgaW5kaWNhdGVzIG5vIHBhY2tldCB3YXMgc2VudCBiZWZvcmUuCiAgIGJvb2wg
c3RhcnRlZF9waW5naW5nXyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbF91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3AycHRyYW5zcG9ydGNoYW5uZWxfdW5pdHRlc3QuY2MKaW5kZXggNzZiOTE4Y2ExZTRiY2U5
Mjc2M2JkZWU0NTcxMTM3YTczZWI1Y2Y1Zi4uMmFiM2Q4OGFmYmM1OTdhZDdlNTIwYzdlOGYxYmY5
ZmZjMGM0OGNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbF91bml0dGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFu
c3BvcnRjaGFubmVsX3VuaXR0ZXN0LmNjCkBAIC02OTksNyArNjk5LDYgQEAgY2xhc3MgUDJQVHJh
bnNwb3J0Q2hhbm5lbFRlc3RCYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QsCiAgICAgRVhQRUNU
X05FKGluZm8ucGFja2V0X3R5cGUsIHJ0Yzo6UGFja2V0VHlwZTo6a1Vua25vd24pOwogICAgIEVY
UEVDVF9ORShpbmZvLnByb3RvY29sLCBydGM6OlBhY2tldEluZm9Qcm90b2NvbFR5cGU6OmtVbmtu
b3duKTsKICAgICBFWFBFQ1RfVFJVRShpbmZvLm5ldHdvcmtfaWQuaGFzX3ZhbHVlKCkpOwotICAg
IEVYUEVDVF9GQUxTRShpbmZvLmxvY2FsX3NvY2tldF9hZGRyZXNzLklzTmlsKCkpOwogICB9CiAK
ICAgdm9pZCBPblJlYWR5VG9TZW5kKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5z
cG9ydCkgewpAQCAtODExLDcgKzgxMCw3IEBAIGNsYXNzIFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0
QmFzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICB2b2lkIE9uUmVhZFBhY2tldChydGM6OlBh
Y2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUsCisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovLAogICAgICAg
ICAgICAgICAgICAgICBpbnQgZmxhZ3MpIHsKICAgICBzdGQ6Omxpc3Q8c3RkOjpzdHJpbmc+JiBw
YWNrZXRzID0gR2V0UGFja2V0TGlzdCh0cmFuc3BvcnQpOwogICAgIHBhY2tldHMucHVzaF9mcm9u
dChzdGQ6OnN0cmluZyhkYXRhLCBsZW4pKTsKQEAgLTMyMDQsNyArMzIwMyw3IEBAIGNsYXNzIFAy
UFRyYW5zcG9ydENoYW5uZWxQaW5nVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgIG1z
Zy5BZGRGaW5nZXJwcmludCgpOwogICAgIHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciBidWY7CiAgICAg
bXNnLldyaXRlKCZidWYpOwotICAgIGNvbm4tPk9uUmVhZFBhY2tldChidWYuRGF0YSgpLCBidWYu
TGVuZ3RoKCksIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7CisgICAgY29ubi0+T25SZWFkUGFj
a2V0KGJ1Zi5EYXRhKCksIGJ1Zi5MZW5ndGgoKSwgcnRjOjpUaW1lTWljcm9zKCkpOwogICB9CiAK
ICAgdm9pZCBPblJlYWR5VG9TZW5kKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5z
cG9ydCkgewpAQCAtMzYxMyw3ICszNjEyLDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxQ
aW5nVGVzdCwgVGVzdFJlY2VpdmluZ1N0YXRlQ2hhbmdlKSB7CiAKICAgY2xvY2suQWR2YW5jZVRp
bWUod2VicnRjOjpUaW1lRGVsdGE6OnNlY29uZHMoMSkpOwogICBjb25uMS0+UmVjZWl2ZWRQaW5n
KCk7Ci0gIGNvbm4xLT5PblJlYWRQYWNrZXQoIkFCQyIsIDMsIHJ0Yzo6Q3JlYXRlUGFja2V0VGlt
ZSgwKSk7CisgIGNvbm4xLT5PblJlYWRQYWNrZXQoIkFCQyIsIDMsIHJ0Yzo6VGltZU1pY3Jvcygp
KTsKICAgRVhQRUNUX1RSVUVfU0lNVUxBVEVEX1dBSVQoY2gucmVjZWl2aW5nKCksIGtTaG9ydFRp
bWVvdXQsIGNsb2NrKTsKICAgRVhQRUNUX1RSVUVfU0lNVUxBVEVEX1dBSVQoIWNoLnJlY2Vpdmlu
ZygpLCBrU2hvcnRUaW1lb3V0LCBjbG9jayk7CiB9CkBAIC0zODA0LDcgKzM4MDMsNyBAQCBURVNU
X0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFBpbmdUZXN0LCBUZXN0U2VsZWN0Q29ubmVjdGlvbkJhc2Vk
T25NZWRpYVJlY2VpdmVkKSB7CiAgIENvbm5lY3Rpb24qIGNvbm4yID0gV2FpdEZvckNvbm5lY3Rp
b25UbygmY2gsICIyLjIuMi4yIiwgMik7CiAgIEFTU0VSVF9UUlVFKGNvbm4yICE9IG51bGxwdHIp
OwogICBjb25uMi0+UmVjZWl2ZWRQaW5nUmVzcG9uc2UoTE9XX1JUVCwgImlkIik7ICAvLyBCZWNv
bWUgd3JpdGFibGUgYW5kIHJlY2VpdmluZy4KLSAgY29ubjItPk9uUmVhZFBhY2tldCgiQUJDIiwg
MywgcnRjOjpDcmVhdGVQYWNrZXRUaW1lKDApKTsKKyAgY29ubjItPk9uUmVhZFBhY2tldCgiQUJD
IiwgMywgcnRjOjpUaW1lTWljcm9zKCkpOwogICBFWFBFQ1RfRVEoY29ubjIsIGNoLnNlbGVjdGVk
X2Nvbm5lY3Rpb24oKSk7CiAgIGNvbm4yLT5SZWNlaXZlZFBpbmdSZXNwb25zZShMT1dfUlRULCAi
aWQiKTsgIC8vIEJlY29tZSB3cml0YWJsZS4KIApAQCAtMzgzMiw3ICszODMxLDcgQEAgVEVTVF9G
KFAyUFRyYW5zcG9ydENoYW5uZWxQaW5nVGVzdCwgVGVzdFNlbGVjdENvbm5lY3Rpb25CYXNlZE9u
TWVkaWFSZWNlaXZlZCkgewogICAvLyBzZWxlY3RlZCBjb25uZWN0aW9uIHdhcyBub21pbmF0ZWQg
YnkgdGhlIGNvbnRyb2xsaW5nIHNpZGUuCiAgIGNvbm4yLT5SZWNlaXZlZFBpbmcoKTsKICAgY29u
bjItPlJlY2VpdmVkUGluZ1Jlc3BvbnNlKExPV19SVFQsICJpZCIpOwotICBjb25uMi0+T25SZWFk
UGFja2V0KCJYWVoiLCAzLCBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpOworICBjb25uMi0+T25S
ZWFkUGFja2V0KCJYWVoiLCAzLCBydGM6OlRpbWVNaWNyb3MoKSk7CiAgIEVYUEVDVF9FUV9XQUlU
KGNvbm4zLCBjaC5zZWxlY3RlZF9jb25uZWN0aW9uKCksIGtEZWZhdWx0VGltZW91dCk7CiB9CiAK
QEAgLTM4NjEsMTIgKzM4NjAsMTIgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxQaW5nVGVz
dCwKICAgLy8gQWR2YW5jZSB0aGUgY2xvY2sgYnkgMW1zIHNvIHRoYXQgdGhlIGxhc3QgZGF0YSBy
ZWNlaXZpbmcgdGltZXN0YW1wIG9mCiAgIC8vIGNvbm4yIGlzIGxhcmdlci4KICAgU0lNVUxBVEVE
X1dBSVQoZmFsc2UsIDEsIGNsb2NrKTsKLSAgY29ubjItPk9uUmVhZFBhY2tldCgiWFlaIiwgMywg
cnRjOjpDcmVhdGVQYWNrZXRUaW1lKDApKTsKKyAgY29ubjItPk9uUmVhZFBhY2tldCgiWFlaIiwg
MywgcnRjOjpUaW1lTWljcm9zKCkpOwogICBFWFBFQ1RfRVEoMSwgcmVzZXRfc2VsZWN0ZWRfY2Fu
ZGlkYXRlX3BhaXJfc3dpdGNoZXMoKSk7CiAgIEVYUEVDVF9UUlVFKENhbmRpZGF0ZVBhaXJNYXRj
aGVzTmV0d29ya1JvdXRlKGNvbm4yKSk7CiAKICAgLy8gY29ubjEgYWxzbyByZWNlaXZlcyBkYXRh
OyBpdCBiZWNvbWVzIHNlbGVjdGVkIGR1ZSB0byBwcmlvcml0eSBhZ2Fpbi4KLSAgY29ubjEtPk9u
UmVhZFBhY2tldCgiWFlaIiwgMywgcnRjOjpDcmVhdGVQYWNrZXRUaW1lKDApKTsKKyAgY29ubjEt
Pk9uUmVhZFBhY2tldCgiWFlaIiwgMywgcnRjOjpUaW1lTWljcm9zKCkpOwogICBFWFBFQ1RfRVEo
MSwgcmVzZXRfc2VsZWN0ZWRfY2FuZGlkYXRlX3BhaXJfc3dpdGNoZXMoKSk7CiAgIEVYUEVDVF9U
UlVFKENhbmRpZGF0ZVBhaXJNYXRjaGVzTmV0d29ya1JvdXRlKGNvbm4yKSk7CiAKQEAgLTM4NzUs
NyArMzg3NCw3IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsUGluZ1Rlc3QsCiAgIFNJTVVM
QVRFRF9XQUlUKGZhbHNlLCAxLCBjbG9jayk7CiAgIC8vIE5lZWQgdG8gYmVjb21lIHdyaXRhYmxl
IGFnYWluIGJlY2F1c2UgaXQgd2FzIHBydW5lZC4KICAgY29ubjItPlJlY2VpdmVkUGluZ1Jlc3Bv
bnNlKExPV19SVFQsICJpZCIpOwotICBjb25uMi0+T25SZWFkUGFja2V0KCJYWVoiLCAzLCBydGM6
OkNyZWF0ZVBhY2tldFRpbWUoMCkpOworICBjb25uMi0+T25SZWFkUGFja2V0KCJYWVoiLCAzLCBy
dGM6OlRpbWVNaWNyb3MoKSk7CiAgIEVYUEVDVF9FUSgxLCByZXNldF9zZWxlY3RlZF9jYW5kaWRh
dGVfcGFpcl9zd2l0Y2hlcygpKTsKICAgRVhQRUNUX1RSVUUoQ2FuZGlkYXRlUGFpck1hdGNoZXNO
ZXR3b3JrUm91dGUoY29ubjIpKTsKIApAQCAtMzkwNSw3ICszOTA0LDcgQEAgVEVTVF9GKFAyUFRy
YW5zcG9ydENoYW5uZWxQaW5nVGVzdCwKICAgLy8gY29ubjEgcmVjZWl2ZWQgZGF0YTsgaXQgaXMg
dGhlIHNlbGVjdGVkIGNvbm5lY3Rpb24uCiAgIC8vIEFkdmFuY2UgdGhlIGNsb2NrIHRvIGhhdmUg
YSBub24temVybyBsYXN0LWRhdGEtcmVjZWl2aW5nIHRpbWUuCiAgIFNJTVVMQVRFRF9XQUlUKGZh
bHNlLCAxLCBjbG9jayk7Ci0gIGNvbm4xLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0Yzo6Q3Jl
YXRlUGFja2V0VGltZSgwKSk7CisgIGNvbm4xLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0Yzo6
VGltZU1pY3JvcygpKTsKICAgRVhQRUNUX0VRKDEsIHJlc2V0X3NlbGVjdGVkX2NhbmRpZGF0ZV9w
YWlyX3N3aXRjaGVzKCkpOwogICBFWFBFQ1RfVFJVRShDYW5kaWRhdGVQYWlyTWF0Y2hlc05ldHdv
cmtSb3V0ZShjb25uMSkpOwogCkBAIC00MTI2LDcgKzQxMjUsNyBAQCBURVNUX0YoUDJQVHJhbnNw
b3J0Q2hhbm5lbFBpbmdUZXN0LCBUZXN0RG9udFBydW5lSGlnaFByaW9yaXR5Q29ubmVjdGlvbnMp
IHsKICAgLy8gY29ubjIuCiAgIE5vbWluYXRlQ29ubmVjdGlvbihjb25uMSk7CiAgIFNJTVVMQVRF
RF9XQUlUKGZhbHNlLCAxLCBjbG9jayk7Ci0gIGNvbm4xLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMs
IHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7CisgIGNvbm4xLT5PblJlYWRQYWNrZXQoIlhZWiIs
IDMsIHJ0Yzo6VGltZU1pY3JvcygpKTsKICAgU0lNVUxBVEVEX1dBSVQoY29ubjItPnBydW5lZCgp
LCAxMDAsIGNsb2NrKTsKICAgRVhQRUNUX0ZBTFNFKGNvbm4yLT5wcnVuZWQoKSk7CiB9CkBAIC00
MTM3LDYgKzQxMzYsNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFBpbmdUZXN0LCBUZXN0
R2V0U3RhdGUpIHsKICAgY2xvY2suQWR2YW5jZVRpbWUod2VicnRjOjpUaW1lRGVsdGE6OnNlY29u
ZHMoMSkpOwogICBGYWtlUG9ydEFsbG9jYXRvciBwYShydGM6OlRocmVhZDo6Q3VycmVudCgpLCBu
dWxscHRyKTsKICAgUDJQVHJhbnNwb3J0Q2hhbm5lbCBjaCgidGVzdCBjaGFubmVsIiwgMSwgJnBh
KTsKKyAgRVhQRUNUX0VRKHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtOZXcsIGNoLkdldElj
ZVRyYW5zcG9ydFN0YXRlKCkpOwogICBQcmVwYXJlQ2hhbm5lbCgmY2gpOwogICBjaC5NYXliZVN0
YXJ0R2F0aGVyaW5nKCk7CiAgIEVYUEVDVF9FUShJY2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfSU5J
VCwgY2guR2V0U3RhdGUoKSk7CkBAIC00MTQ0LDYgKzQxNDQsOCBAQCBURVNUX0YoUDJQVHJhbnNw
b3J0Q2hhbm5lbFBpbmdUZXN0LCBUZXN0R2V0U3RhdGUpIHsKICAgY2guQWRkUmVtb3RlQ2FuZGlk
YXRlKENyZWF0ZVVkcENhbmRpZGF0ZShMT0NBTF9QT1JUX1RZUEUsICIyLjIuMi4yIiwgMiwgMSkp
OwogICBDb25uZWN0aW9uKiBjb25uMSA9IFdhaXRGb3JDb25uZWN0aW9uVG8oJmNoLCAiMS4xLjEu
MSIsIDEsICZjbG9jayk7CiAgIENvbm5lY3Rpb24qIGNvbm4yID0gV2FpdEZvckNvbm5lY3Rpb25U
bygmY2gsICIyLjIuMi4yIiwgMiwgJmNsb2NrKTsKKyAgLy8gR2F0aGVyaW5nIGNvbXBsZXRlIHdp
dGggY2FuZGlkYXRlcy4KKyAgRVhQRUNUX0VRKHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtD
b21wbGV0ZWQsIGNoLkdldEljZVRyYW5zcG9ydFN0YXRlKCkpOwogICBBU1NFUlRfVFJVRShjb25u
MSAhPSBudWxscHRyKTsKICAgQVNTRVJUX1RSVUUoY29ubjIgIT0gbnVsbHB0cik7CiAgIC8vIE5v
dyB0aGVyZSBhcmUgdHdvIGNvbm5lY3Rpb25zLCBzbyB0aGUgdHJhbnNwb3J0IGNoYW5uZWwgaXMg
Y29ubmVjdGluZy4KQEAgLTQxNTYsNiArNDE1OCw3IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFu
bmVsUGluZ1Rlc3QsIFRlc3RHZXRTdGF0ZSkgewogICAvLyBOZWVkIHRvIHdhaXQgdW50aWwgdGhl
IGNoYW5uZWwgc3RhdGUgaXMgdXBkYXRlZC4KICAgRVhQRUNUX0VRX1NJTVVMQVRFRF9XQUlUKElj
ZVRyYW5zcG9ydFN0YXRlOjpTVEFURV9GQUlMRUQsIGNoLkdldFN0YXRlKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrU2hvcnRUaW1lb3V0LCBjbG9jayk7CisgIEVYUEVDVF9FUSh3ZWJy
dGM6OkljZVRyYW5zcG9ydFN0YXRlOjprRmFpbGVkLCBjaC5HZXRJY2VUcmFuc3BvcnRTdGF0ZSgp
KTsKIH0KIAogLy8gVGVzdCB0aGF0IHdoZW4gYSBsb3ctcHJpb3JpdHkgY29ubmVjdGlvbiBpcyBw
cnVuZWQsIGl0IGlzIG5vdCBkZWxldGVkCkBAIC00NTkwLDcgKzQ1OTMsNyBAQCBURVNUKFAyUFRy
YW5zcG9ydENoYW5uZWxSZXNvbHZlclRlc3QsIEhvc3RuYW1lQ2FuZGlkYXRlSXNSZXNvbHZlZCkg
ewogLy8gcHJmbHggY2FuZGlkYXRlIGlzIHVwZGF0ZWQgdG8gYSBob3N0IGNhbmRpZGF0ZSBhZnRl
ciB0aGUgbmFtZSByZXNvbHV0aW9uIGlzCiAvLyBkb25lLgogVEVTVF9GKFAyUFRyYW5zcG9ydENo
YW5uZWxUZXN0LAotICAgICAgIFBlZXJSZWZsZXhpdmVDYW5kaWRhdGVCZWZvcmVTaWduYWxpbmdX
aXRoTURuc05hbWUpIHsKKyAgICAgICBQZWVyUmVmbGV4aXZlQ2FuZGlkYXRlQmVmb3JlU2lnbmFs
aW5nV2l0aE1kbnNOYW1lKSB7CiAgIHJ0Yzo6TW9ja0FzeW5jUmVzb2x2ZXIgbW9ja19hc3luY19y
ZXNvbHZlcjsKICAgd2VicnRjOjpNb2NrQXN5bmNSZXNvbHZlckZhY3RvcnkgbW9ja19hc3luY19y
ZXNvbHZlcl9mYWN0b3J5OwogICBFWFBFQ1RfQ0FMTChtb2NrX2FzeW5jX3Jlc29sdmVyX2ZhY3Rv
cnksIENyZWF0ZSgpKQpAQCAtNDYwMSw3ICs0NjA0LDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENo
YW5uZWxUZXN0LAogICBDb25maWd1cmVFbmRwb2ludHMoT1BFTiwgT1BFTiwga09ubHlMb2NhbFBv
cnRzLCBrT25seUxvY2FsUG9ydHMpOwogICAvLyBJQ0UgcGFyYW1ldGVyIHdpbGwgYmUgc2V0IHVw
IHdoZW4gY3JlYXRpbmcgdGhlIGNoYW5uZWxzLgogICBzZXRfcmVtb3RlX2ljZV9wYXJhbWV0ZXJf
c291cmNlKEZST01fU0VUSUNFUEFSQU1FVEVSUyk7Ci0gIEdldEVuZHBvaW50KDApLT5uZXR3b3Jr
X21hbmFnZXJfLkNyZWF0ZU1EbnNSZXNwb25kZXIoKTsKKyAgR2V0RW5kcG9pbnQoMCktPm5ldHdv
cmtfbWFuYWdlcl8uQ3JlYXRlTWRuc1Jlc3BvbmRlcigpOwogICBHZXRFbmRwb2ludCgxKS0+YXN5
bmNfcmVzb2x2ZXJfZmFjdG9yeV8gPSAmbW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5OwogICBD
cmVhdGVDaGFubmVscygpOwogICAvLyBQYXVzZSBzZW5kaW5nIGNhbmRpZGF0ZXMgZnJvbSBib3Ro
IGVuZHBvaW50cyB1bnRpbCB3ZSBmaW5kIG91dCB3aGF0IHBvcnQKQEAgLTQ2NTYsNyArNDY1OSw3
IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsVGVzdCwKIC8vIGEgaG9zdCBjYW5kaWRhdGUg
aWYgdGhlIGhvc3RuYW1lIGNhbmRpZGF0ZSB0dXJucyBvdXQgdG8gaGF2ZSB0aGUgc2FtZSBJUAog
Ly8gYWRkcmVzcyBhZnRlciB0aGUgcmVzb2x1dGlvbiBjb21wbGV0ZXMuCiBURVNUX0YoUDJQVHJh
bnNwb3J0Q2hhbm5lbFRlc3QsCi0gICAgICAgUGVlclJlZmxleGl2ZUNhbmRpZGF0ZUR1cmluZ1Jl
c29sdmluZ0hvc3RDYW5kaWRhdGVXaXRoTURuc05hbWUpIHsKKyAgICAgICBQZWVyUmVmbGV4aXZl
Q2FuZGlkYXRlRHVyaW5nUmVzb2x2aW5nSG9zdENhbmRpZGF0ZVdpdGhNZG5zTmFtZSkgewogICBO
aWNlTW9jazxydGM6Ok1vY2tBc3luY1Jlc29sdmVyPiBtb2NrX2FzeW5jX3Jlc29sdmVyOwogICB3
ZWJydGM6Ok1vY2tBc3luY1Jlc29sdmVyRmFjdG9yeSBtb2NrX2FzeW5jX3Jlc29sdmVyX2ZhY3Rv
cnk7CiAgIEVYUEVDVF9DQUxMKG1vY2tfYXN5bmNfcmVzb2x2ZXJfZmFjdG9yeSwgQ3JlYXRlKCkp
CkBAIC00NjY3LDcgKzQ2NzAsNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFRlc3QsCiAg
IENvbmZpZ3VyZUVuZHBvaW50cyhPUEVOLCBPUEVOLCBrT25seUxvY2FsUG9ydHMsIGtPbmx5TG9j
YWxQb3J0cyk7CiAgIC8vIElDRSBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdXAgd2hlbiBjcmVhdGlu
ZyB0aGUgY2hhbm5lbHMuCiAgIHNldF9yZW1vdGVfaWNlX3BhcmFtZXRlcl9zb3VyY2UoRlJPTV9T
RVRJQ0VQQVJBTUVURVJTKTsKLSAgR2V0RW5kcG9pbnQoMCktPm5ldHdvcmtfbWFuYWdlcl8uQ3Jl
YXRlTURuc1Jlc3BvbmRlcigpOworICBHZXRFbmRwb2ludCgwKS0+bmV0d29ya19tYW5hZ2VyXy5D
cmVhdGVNZG5zUmVzcG9uZGVyKCk7CiAgIEdldEVuZHBvaW50KDEpLT5hc3luY19yZXNvbHZlcl9m
YWN0b3J5XyA9ICZtb2NrX2FzeW5jX3Jlc29sdmVyX2ZhY3Rvcnk7CiAgIENyZWF0ZUNoYW5uZWxz
KCk7CiAgIC8vIFBhdXNlIHNlbmRpbmcgY2FuZGlkYXRlcyBmcm9tIGJvdGggZW5kcG9pbnRzIHVu
dGlsIHdlIGZpbmQgb3V0IHdoYXQgcG9ydApAQCAtNDcyMyw3ICs0NzI2LDcgQEAgVEVTVF9GKFAy
UFRyYW5zcG9ydENoYW5uZWxUZXN0LAogLy8gVGVzdCB0aGF0IGlmIHdlIG9ubHkgZ2F0aGVyIGFu
ZCBzaWduYWwgYSBob3N0IGNhbmRpZGF0ZSwgdGhlIElQIGFkZHJlc3Mgb2YKIC8vIHdoaWNoIGlz
IG9iZnVzY2F0ZWQgYnkgYW4gbUROUyBuYW1lLCBhbmQgaWYgdGhlIHBlZXIgY2FuIGNvbXBsZXRl
IHRoZSBuYW1lCiAvLyByZXNvbHV0aW9uIHdpdGggdGhlIGNvcnJlY3QgSVAgYWRkcmVzcywgd2Ug
Y2FuIGhhdmUgYSBwMnAgY29ubmVjdGlvbi4KLVRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsVGVz
dCwgQ2FuQ29ubmVjdFdpdGhIb3N0Q2FuZGlkYXRlV2l0aE1EbnNOYW1lKSB7CitURVNUX0YoUDJQ
VHJhbnNwb3J0Q2hhbm5lbFRlc3QsIENhbkNvbm5lY3RXaXRoSG9zdENhbmRpZGF0ZVdpdGhNZG5z
TmFtZSkgewogICBOaWNlTW9jazxydGM6Ok1vY2tBc3luY1Jlc29sdmVyPiBtb2NrX2FzeW5jX3Jl
c29sdmVyOwogICB3ZWJydGM6Ok1vY2tBc3luY1Jlc29sdmVyRmFjdG9yeSBtb2NrX2FzeW5jX3Jl
c29sdmVyX2ZhY3Rvcnk7CiAgIEVYUEVDVF9DQUxMKG1vY2tfYXN5bmNfcmVzb2x2ZXJfZmFjdG9y
eSwgQ3JlYXRlKCkpCkBAIC00NzM0LDcgKzQ3MzcsNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hh
bm5lbFRlc3QsIENhbkNvbm5lY3RXaXRoSG9zdENhbmRpZGF0ZVdpdGhNRG5zTmFtZSkgewogICBD
b25maWd1cmVFbmRwb2ludHMoT1BFTiwgT1BFTiwga09ubHlMb2NhbFBvcnRzLCBrT25seUxvY2Fs
UG9ydHMpOwogICAvLyBJQ0UgcGFyYW1ldGVyIHdpbGwgYmUgc2V0IHVwIHdoZW4gY3JlYXRpbmcg
dGhlIGNoYW5uZWxzLgogICBzZXRfcmVtb3RlX2ljZV9wYXJhbWV0ZXJfc291cmNlKEZST01fU0VU
SUNFUEFSQU1FVEVSUyk7Ci0gIEdldEVuZHBvaW50KDApLT5uZXR3b3JrX21hbmFnZXJfLkNyZWF0
ZU1EbnNSZXNwb25kZXIoKTsKKyAgR2V0RW5kcG9pbnQoMCktPm5ldHdvcmtfbWFuYWdlcl8uQ3Jl
YXRlTWRuc1Jlc3BvbmRlcigpOwogICBHZXRFbmRwb2ludCgxKS0+YXN5bmNfcmVzb2x2ZXJfZmFj
dG9yeV8gPSAmbW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5OwogICBDcmVhdGVDaGFubmVscygp
OwogICAvLyBQYXVzZSBzZW5kaW5nIGNhbmRpZGF0ZXMgZnJvbSBib3RoIGVuZHBvaW50cyB1bnRp
bCB3ZSBmaW5kIG91dCB3aGF0IHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BhY2tldHNvY2tldGZhY3RvcnkuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BhY2tldHNv
Y2tldGZhY3RvcnkuaAppbmRleCA0NjY3YmIxZmQ3MDAyOGI5ZTA2ZDRmNjU1NzU2MzA2YjYyMzYz
ZWQ2Li5jOTAzZGYwNmM4YTk4ZGQ0NTY1M2NkNGUwM2ZhNGYwNTBjMWJlNTc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wYWNr
ZXRzb2NrZXRmYWN0b3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvcGFja2V0c29ja2V0ZmFjdG9yeS5oCkBAIC0xNyw2ICsxNyw3IEBA
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3Byb3h5aW5mby5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHJ0YyB7
CiAKQEAgLTM2LDcgKzM3LDcgQEAgc3RydWN0IFBhY2tldFNvY2tldFRjcE9wdGlvbnMgewogY2xh
c3MgQXN5bmNQYWNrZXRTb2NrZXQ7CiBjbGFzcyBBc3luY1Jlc29sdmVySW50ZXJmYWNlOwogCi1j
bGFzcyBQYWNrZXRTb2NrZXRGYWN0b3J5IHsKK2NsYXNzIFJUQ19FWFBPUlQgUGFja2V0U29ja2V0
RmFjdG9yeSB7CiAgcHVibGljOgogICBlbnVtIE9wdGlvbnMgewogICAgIE9QVF9TVFVOID0gMHgw
NCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3BhY2tldHRyYW5zcG9ydGludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5o
CmluZGV4IGNhN2YwMDM2MTE0ZGY4MzZmMWJjY2M2OGUwYzU4NTU5ODdiMzM3MWIuLjdkNTBmOWMw
ZWVhMWQ5NzdiYjgwNWEyZmI2NDc4ZGVkZGI1OTEyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BhY2tldHRyYW5zcG9ydGlu
dGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuaApAQCAtMjEsMTUgKzIxLDE2IEBACiAj
aW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9uZXR3b3Jrcm91dGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJk
X3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIHN0cnVjdCBQYWNr
ZXRPcHRpb25zOwotc3RydWN0IFBhY2tldFRpbWU7CiBzdHJ1Y3QgU2VudFBhY2tldDsKIAotY2xh
c3MgUGFja2V0VHJhbnNwb3J0SW50ZXJuYWwgOiBwdWJsaWMgdmlydHVhbCB3ZWJydGM6OlBhY2tl
dFRyYW5zcG9ydEludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKK2NsYXNzIFJUQ19FWFBPUlQgUGFja2V0VHJhbnNw
b3J0SW50ZXJuYWwKKyAgICA6IHB1YmxpYyB2aXJ0dWFsIHdlYnJ0Yzo6UGFja2V0VHJhbnNwb3J0
SW50ZXJmYWNlLAorICAgICAgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICBwdWJsaWM6
CiAgIHZpcnR1YWwgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9uYW1lKCkgY29uc3QgPSAw
OwogCkBAIC04NSw3ICs4Niw5IEBAIGNsYXNzIFBhY2tldFRyYW5zcG9ydEludGVybmFsIDogcHVi
bGljIHZpcnR1YWwgd2VicnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UsCiAgIHNpZ3Nsb3Q6
OnNpZ25hbDU8UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqLAogICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqLAogICAgICAgICAgICAgICAgICAgIHNpemVfdCwKLSAgICAgICAgICAgICAgICAg
ICBjb25zdCBydGM6OlBhY2tldFRpbWUmLAorICAgICAgICAgICAgICAgICAgIC8vIFRPRE8oYnVn
cy53ZWJydGMub3JnLzk1ODQpOiBDaGFuZ2UgdG8gcGFzc2luZyB0aGUgaW50NjRfdAorICAgICAg
ICAgICAgICAgICAgIC8vIHRpbWVzdGFtcCBieSB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICBj
b25zdCBpbnQ2NF90JiwKICAgICAgICAgICAgICAgICAgICBpbnQ+CiAgICAgICBTaWduYWxSZWFk
UGFja2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydC5jYwppbmRleCBhYzc1MjFlNjY3MjdmNmU5NDM0ODA3
ZjY1MGMxYWUzYmQyZjYzMTc5Li41YjhlMDJkMjhmZjg5NGQzZDM3NmVmYWIzYjA3ZjBmM2JlZTQw
Y2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9wb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3BvcnQuY2MKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlIDx2
ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JjMzIuaCIK
QEAgLTI3LDcgKzI4LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
dHJpbmdlbmNvZGUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2NC9iYXNlNjQuaCIKIAogbmFtZXNwYWNlIHsK
QEAgLTE4Myw3ICsxODMsNyBAQCBjb25zdCBjaGFyKiBQcm90b1RvU3RyaW5nKFByb3RvY29sVHlw
ZSBwcm90bykgewogCiBib29sIFN0cmluZ1RvUHJvdG8oY29uc3QgY2hhciogdmFsdWUsIFByb3Rv
Y29sVHlwZSogcHJvdG8pIHsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPD0gUFJPVE9fTEFTVDsg
KytpKSB7Ci0gICAgaWYgKF9zdHJpY21wKFBST1RPX05BTUVTW2ldLCB2YWx1ZSkgPT0gMCkgewor
ICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKFBST1RPX05BTUVTW2ldLCB2YWx1ZSkpIHsK
ICAgICAgICpwcm90byA9IHN0YXRpY19jYXN0PFByb3RvY29sVHlwZT4oaSk7CiAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkBAIC0zOTksOSArMzk5LDkgQEAgdm9pZCBQb3J0OjpBZGRBZGRyZXNz
KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCB0eXBlX3ByZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmVsYXlf
cHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICBib29sIGZpbmFsKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc19maW5hbCkgewogICBBZGRBZGRyZXNzKGFkZHJlc3MsIGJh
c2VfYWRkcmVzcywgcmVsYXRlZF9hZGRyZXNzLCBwcm90b2NvbCwgcmVsYXlfcHJvdG9jb2wsCi0g
ICAgICAgICAgICAgdGNwdHlwZSwgdHlwZSwgdHlwZV9wcmVmZXJlbmNlLCByZWxheV9wcmVmZXJl
bmNlLCAiIiwgZmluYWwpOworICAgICAgICAgICAgIHRjcHR5cGUsIHR5cGUsIHR5cGVfcHJlZmVy
ZW5jZSwgcmVsYXlfcHJlZmVyZW5jZSwgIiIsIGlzX2ZpbmFsKTsKIH0KIAogdm9pZCBQb3J0OjpB
ZGRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywKQEAgLTQzMCw0NCAr
NDMwLDYwIEBAIHZvaWQgUG9ydDo6QWRkQWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3Mm
IGFkZHJlc3MsCiAgIGMuc2V0X25ldHdvcmtfbmFtZShuZXR3b3JrXy0+bmFtZSgpKTsKICAgYy5z
ZXRfbmV0d29ya190eXBlKG5ldHdvcmtfLT50eXBlKCkpOwogICBjLnNldF91cmwodXJsKTsKKyAg
Yy5zZXRfcmVsYXRlZF9hZGRyZXNzKHJlbGF0ZWRfYWRkcmVzcyk7CisKKyAgYm9vbCBwZW5kaW5n
ID0gTWF5YmVPYmZ1c2NhdGVBZGRyZXNzKCZjLCB0eXBlLCBpc19maW5hbCk7CisKKyAgaWYgKCFw
ZW5kaW5nKSB7CisgICAgRmluaXNoQWRkaW5nQWRkcmVzcyhjLCBpc19maW5hbCk7CisgIH0KK30K
KworYm9vbCBQb3J0OjpNYXliZU9iZnVzY2F0ZUFkZHJlc3MoQ2FuZGlkYXRlKiBjLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX2ZpbmFsKSB7CiAgIC8vIFRPRE8o
YnVncy53ZWJydGMub3JnLzk3MjMpOiBVc2UgYSBjb25maWcgdG8gY29udHJvbCB0aGUgZmVhdHVy
ZSBvZiBJUAogICAvLyBoYW5kbGluZyB3aXRoIG1ETlMuCi0gIGlmIChuZXR3b3JrXy0+R2V0TURu
c1Jlc3BvbmRlcigpICE9IG51bGxwdHIpIHsKLSAgICAvLyBPYmZ1c2NhdGUgdGhlIElQIGFkZHJl
c3Mgb2YgYSBob3N0IGNhbmRpZGF0ZXMgYnkgYW4gbUROUyBob3N0bmFtZS4KLSAgICBpZiAodHlw
ZSA9PSBMT0NBTF9QT1JUX1RZUEUpIHsKLSAgICAgIGF1dG8gd2Vha19wdHIgPSB3ZWFrX2ZhY3Rv
cnlfLkdldFdlYWtQdHIoKTsKLSAgICAgIGF1dG8gY2FsbGJhY2sgPSBbd2Vha19wdHIsIGMsIGlz
X2ZpbmFsXShjb25zdCBydGM6OklQQWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkgbXV0YWJs
ZSB7Ci0gICAgICAgIFJUQ19EQ0hFQ0soYy5hZGRyZXNzKCkuaXBhZGRyKCkgPT0gYWRkcik7Ci0g
ICAgICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBob3N0bmFtZV9hZGRyZXNzKG5hbWUsIGMuYWRkcmVz
cygpLnBvcnQoKSk7Ci0gICAgICAgIC8vIEluIFBvcnQgYW5kIENvbm5lY3Rpb24sIHdlIG5lZWQg
dGhlIElQIGFkZHJlc3MgaW5mb3JtYXRpb24gdG8KLSAgICAgICAgLy8gY29ycmVjdGx5IGhhbmRs
ZSB0aGUgdXBkYXRlIG9mIGNhbmRpZGF0ZSB0eXBlIHRvIHByZmx4LiBUaGUgcmVtb3ZhbAotICAg
ICAgICAvLyBvZiBJUCBhZGRyZXNzIHdoZW4gc2lnbmFsaW5nIHRoaXMgY2FuZGlkYXRlIHdpbGwg
dGFrZSBwbGFjZSBpbgotICAgICAgICAvLyBCYXNpY1BvcnRBbGxvY2F0b3JTZXNzaW9uOjpPbkNh
bmRpZGF0ZVJlYWR5LCB2aWEgU2FuaXRpemVDYW5kaWRhdGUuCi0gICAgICAgIGhvc3RuYW1lX2Fk
ZHJlc3MuU2V0UmVzb2x2ZWRJUChhZGRyKTsKLSAgICAgICAgYy5zZXRfYWRkcmVzcyhob3N0bmFt
ZV9hZGRyZXNzKTsKLSAgICAgICAgUlRDX0RDSEVDSyhjLnJlbGF0ZWRfYWRkcmVzcygpID09IHJ0
Yzo6U29ja2V0QWRkcmVzcygpKTsKLSAgICAgICAgaWYgKHdlYWtfcHRyICE9IG51bGxwdHIpIHsK
LSAgICAgICAgICB3ZWFrX3B0ci0+RmluaXNoQWRkaW5nQWRkcmVzcyhjLCBpc19maW5hbCk7Ci0g
ICAgICAgIH0KLSAgICAgIH07Ci0gICAgICBuZXR3b3JrXy0+R2V0TURuc1Jlc3BvbmRlcigpLT5D
cmVhdGVOYW1lRm9yQWRkcmVzcyhjLmFkZHJlc3MoKS5pcGFkZHIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKTsKLSAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gRm9yIG90aGVyIHR5cGVzIG9mIGNhbmRpZGF0ZXMs
IHRoZSByZWxhdGVkIGFkZHJlc3Mgc2hvdWxkIGJlIHNldCB0bwotICAgIC8vIDAuMC4wLjAgb3Ig
OjowLgotICAgIGMuc2V0X3JlbGF0ZWRfYWRkcmVzcyhydGM6OlNvY2tldEFkZHJlc3MoKSk7Ci0g
IH0gZWxzZSB7Ci0gICAgYy5zZXRfcmVsYXRlZF9hZGRyZXNzKHJlbGF0ZWRfYWRkcmVzcyk7Cisg
IGlmIChuZXR3b3JrXy0+R2V0TWRuc1Jlc3BvbmRlcigpID09IG51bGxwdHIpIHsKKyAgICByZXR1
cm4gZmFsc2U7CisgIH0KKyAgaWYgKHR5cGUgIT0gTE9DQUxfUE9SVF9UWVBFKSB7CisgICAgcmV0
dXJuIGZhbHNlOwogICB9Ci0gIEZpbmlzaEFkZGluZ0FkZHJlc3MoYywgaXNfZmluYWwpOworCisg
IGF1dG8gY29weSA9ICpjOworICBhdXRvIHdlYWtfcHRyID0gd2Vha19mYWN0b3J5Xy5HZXRXZWFr
UHRyKCk7CisgIGF1dG8gY2FsbGJhY2sgPSBbd2Vha19wdHIsIGNvcHksIGlzX2ZpbmFsXShjb25z
dCBydGM6OklQQWRkcmVzcyYgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSBtdXRhYmxlIHsKKyAgICBSVENf
RENIRUNLKGNvcHkuYWRkcmVzcygpLmlwYWRkcigpID09IGFkZHIpOworICAgIHJ0Yzo6U29ja2V0
QWRkcmVzcyBob3N0bmFtZV9hZGRyZXNzKG5hbWUsIGNvcHkuYWRkcmVzcygpLnBvcnQoKSk7Cisg
ICAgLy8gSW4gUG9ydCBhbmQgQ29ubmVjdGlvbiwgd2UgbmVlZCB0aGUgSVAgYWRkcmVzcyBpbmZv
cm1hdGlvbiB0bworICAgIC8vIGNvcnJlY3RseSBoYW5kbGUgdGhlIHVwZGF0ZSBvZiBjYW5kaWRh
dGUgdHlwZSB0byBwcmZseC4gVGhlIHJlbW92YWwKKyAgICAvLyBvZiBJUCBhZGRyZXNzIHdoZW4g
c2lnbmFsaW5nIHRoaXMgY2FuZGlkYXRlIHdpbGwgdGFrZSBwbGFjZSBpbgorICAgIC8vIEJhc2lj
UG9ydEFsbG9jYXRvclNlc3Npb246Ok9uQ2FuZGlkYXRlUmVhZHksIHZpYSBTYW5pdGl6ZUNhbmRp
ZGF0ZS4KKyAgICBob3N0bmFtZV9hZGRyZXNzLlNldFJlc29sdmVkSVAoYWRkcik7CisgICAgY29w
eS5zZXRfYWRkcmVzcyhob3N0bmFtZV9hZGRyZXNzKTsKKyAgICBjb3B5LnNldF9yZWxhdGVkX2Fk
ZHJlc3MocnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGlmICh3ZWFrX3B0ciAhPSBudWxscHRy
KSB7CisgICAgICB3ZWFrX3B0ci0+c2V0X21kbnNfbmFtZV9yZWdpc3RyYXRpb25fc3RhdHVzKAor
ICAgICAgICAgIE1kbnNOYW1lUmVnaXN0cmF0aW9uU3RhdHVzOjprQ29tcGxldGVkKTsKKyAgICAg
IHdlYWtfcHRyLT5GaW5pc2hBZGRpbmdBZGRyZXNzKGNvcHksIGlzX2ZpbmFsKTsKKyAgICB9Cisg
IH07CisgIHNldF9tZG5zX25hbWVfcmVnaXN0cmF0aW9uX3N0YXR1cyhNZG5zTmFtZVJlZ2lzdHJh
dGlvblN0YXR1czo6a0luUHJvZ3Jlc3MpOworICBuZXR3b3JrXy0+R2V0TWRuc1Jlc3BvbmRlcigp
LT5DcmVhdGVOYW1lRm9yQWRkcmVzcyhjb3B5LmFkZHJlc3MoKS5pcGFkZHIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2spOwor
ICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBQb3J0OjpGaW5pc2hBZGRpbmdBZGRyZXNzKGNvbnN0
IENhbmRpZGF0ZSYgYywgYm9vbCBpc19maW5hbCkgewogICBjYW5kaWRhdGVzXy5wdXNoX2JhY2so
Yyk7CiAgIFNpZ25hbENhbmRpZGF0ZVJlYWR5KHRoaXMsIGMpOwogCisgIFBvc3RBZGRBZGRyZXNz
KGlzX2ZpbmFsKTsKK30KKwordm9pZCBQb3J0OjpQb3N0QWRkQWRkcmVzcyhib29sIGlzX2ZpbmFs
KSB7CiAgIGlmIChpc19maW5hbCkgewogICAgIFNpZ25hbFBvcnRDb21wbGV0ZSh0aGlzKTsKICAg
fQpAQCAtNzczLDcgKzc4OSw3IEBAIGJvb2wgUG9ydDo6SGFuZGxlSW5jb21pbmdQYWNrZXQocnRj
OjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpT
b2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIFJUQ19OT1RSRUFD
SEVEKCk7CiAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTEyMzYsNyArMTI1Miw3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6T25TZW5kU3R1blBhY2tldChjb25zdCB2b2lkKiBkYXRhLAogCiB2b2lkIENvbm5l
Y3Rpb246Ok9uUmVhZFBhY2tldChjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxJ
Y2VNZXNzYWdlPiBtc2c7CiAgIHN0ZDo6c3RyaW5nIHJlbW90ZV91ZnJhZzsKICAgY29uc3QgcnRj
OjpTb2NrZXRBZGRyZXNzJiBhZGRyKHJlbW90ZV9jYW5kaWRhdGVfLmFkZHJlc3MoKSk7CkBAIC0x
MjQ2LDcgKzEyNjIsNyBAQCB2b2lkIENvbm5lY3Rpb246Ok9uUmVhZFBhY2tldChjb25zdCBjaGFy
KiBkYXRhLAogICAgIGxhc3RfZGF0YV9yZWNlaXZlZF8gPSBydGM6OlRpbWVNaWxsaXMoKTsKICAg
ICBVcGRhdGVSZWNlaXZpbmcobGFzdF9kYXRhX3JlY2VpdmVkXyk7CiAgICAgcmVjdl9yYXRlX3Ry
YWNrZXJfLkFkZFNhbXBsZXMoc2l6ZSk7Ci0gICAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBkYXRh
LCBzaXplLCBwYWNrZXRfdGltZSk7CisgICAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBkYXRhLCBz
aXplLCBwYWNrZXRfdGltZV91cyk7CiAKICAgICAvLyBJZiB0aW1lZCBvdXQgc2VuZGluZyB3cml0
YWJpbGl0eSBjaGVja3MsIHN0YXJ0IHVwIGFnYWluCiAgICAgaWYgKCFwcnVuZWRfICYmICh3cml0
ZV9zdGF0ZV8gPT0gU1RBVEVfV1JJVEVfVElNRU9VVCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnQuaAppbmRl
eCA4NTcxMWU0MWY1NmY5Mzg5MmU0M2Q3MzNiOWE1Y2IzMDQ4Y2RhOTY3Li45YThmOTJhOTZlNDVm
ZDlhMzllOGNmOGRiNGI1M2M1MzU2ZTY0MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydC5oCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvcHJveHlpbmZvLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvcmF0ZXRyYWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKICNpbmNsdWRlICJydGNf
YmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS90
aHJlYWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS93ZWFrX3B0ci5oIgpAQCAtNDksNyArNTAsNyBA
QCBjbGFzcyBDb25uZWN0aW9uUmVxdWVzdDsKIGV4dGVybiBjb25zdCBjaGFyIExPQ0FMX1BPUlRf
VFlQRVtdOwogZXh0ZXJuIGNvbnN0IGNoYXIgU1RVTl9QT1JUX1RZUEVbXTsKIGV4dGVybiBjb25z
dCBjaGFyIFBSRkxYX1BPUlRfVFlQRVtdOwotZXh0ZXJuIGNvbnN0IGNoYXIgUkVMQVlfUE9SVF9U
WVBFW107CitSVENfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyIFJFTEFZX1BPUlRfVFlQRVtdOwog
CiAvLyBSRkMgNjU0NCwgVENQIGNhbmRpZGF0ZSBlbmNvZGluZyBydWxlcy4KIGV4dGVybiBjb25z
dCBpbnQgRElTQ0FSRF9QT1JUOwpAQCAtODMsNiArODQsMTggQEAgZW51bSBjbGFzcyBJY2VDYW5k
aWRhdGVQYWlyU3RhdGUgewogICAvLyBmcm96ZW4gYmVjYXVzZSB3ZSBoYXZlIG5vdCBpbXBsZW1l
bnRlZCBJQ0UgZnJlZXppbmcgbG9naWMuCiB9OwogCitlbnVtIGNsYXNzIE1kbnNOYW1lUmVnaXN0
cmF0aW9uU3RhdHVzIHsKKyAgLy8gSVAgY29uY2VhbG1lbnQgd2l0aCBtRE5TIGlzIG5vdCBlbmFi
bGVkIG9yIHRoZSBuYW1lIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGlzCisgIC8vIG5vdCBzdGFydGVk
IHlldC4KKyAga05vdFN0YXJ0ZWQsCisgIC8vIEEgcmVxdWVzdCB0byBjcmVhdGUgYW5kIHJlZ2lz
dGVyIGFuIG1ETlMgbmFtZSBmb3IgYSBsb2NhbCBJUCBhZGRyZXNzIG9mIGEKKyAgLy8gaG9zdCBj
YW5kaWRhdGUgaXMgc2VudCB0byB0aGUgbUROUyByZXNwb25kZXIuCisgIGtJblByb2dyZXNzLAor
ICAvLyBUaGUgbmFtZSByZWdpc3RyYXRpb24gaXMgY29tcGxldGUgYW5kIHRoZSBjcmVhdGVkIG5h
bWUgaXMgcmV0dXJuZWQgYnkgdGhlCisgIC8vIG1ETlMgcmVzcG9uZGVyLgorICBrQ29tcGxldGVk
LAorfTsKKwogLy8gU3RhdHMgdGhhdCB3ZSBjYW4gcmV0dXJuIGFib3V0IHRoZSBwb3J0IG9mIGEg
U1RVTiBjYW5kaWRhdGUuCiBjbGFzcyBTdHVuU3RhdHMgewogIHB1YmxpYzoKQEAgLTMwNSw3ICsz
MTgsNyBAQCBjbGFzcyBQb3J0IDogcHVibGljIFBvcnRJbnRlcmZhY2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBw
YWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IHBhY2tldF90aW1lX3VzKTsKIAogICAvLyBTaGFsbCB0aGUgcG9ydCBoYW5kbGUgcGFja2V0IGZy
b20gdGhpcyB8cmVtb3RlX2FkZHJ8LgogICAvLyBUaGlzIG1ldGhvZCBpcyBvdmVycmlkZGVuIGJ5
IFR1cm5Qb3J0LgpAQCAtMzkyLDcgKzQwNSw3IEBAIGNsYXNzIFBvcnQgOiBwdWJsaWMgUG9ydElu
dGVyZmFjZSwKICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlLAogICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZV9wcmVmZXJlbmNlLAogICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgcmVsYXlfcHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgIGJvb2wgZmlu
YWwpOworICAgICAgICAgICAgICAgICAgYm9vbCBpc19maW5hbCk7CiAKICAgdm9pZCBBZGRBZGRy
ZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywKICAgICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYmFzZV9hZGRyZXNzLApAQCAtNDA4LDYgKzQyMSw4
IEBAIGNsYXNzIFBvcnQgOiBwdWJsaWMgUG9ydEludGVyZmFjZSwKIAogICB2b2lkIEZpbmlzaEFk
ZGluZ0FkZHJlc3MoY29uc3QgQ2FuZGlkYXRlJiBjLCBib29sIGlzX2ZpbmFsKTsKIAorICB2aXJ0
dWFsIHZvaWQgUG9zdEFkZEFkZHJlc3MoYm9vbCBpc19maW5hbCk7CisKICAgLy8gQWRkcyB0aGUg
Z2l2ZW4gY29ubmVjdGlvbiB0byB0aGUgbWFwIGtleWVkIGJ5IHRoZSByZW1vdGUgY2FuZGlkYXRl
IGFkZHJlc3MuCiAgIC8vIElmIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gaGFzIHRoZSBzYW1lIGFk
ZHJlc3MsIHRoZSBleGlzdGluZyBvbmUgd2lsbCBiZQogICAvLyByZXBsYWNlZCBhbmQgZGVzdHJv
eWVkLgpAQCAtNDQzLDYgKzQ1OCwxMyBAQCBjbGFzcyBQb3J0IDogcHVibGljIFBvcnRJbnRlcmZh
Y2UsCiAKICAgdm9pZCBDb3B5UG9ydEluZm9ybWF0aW9uVG9QYWNrZXRJbmZvKHJ0Yzo6UGFja2V0
SW5mbyogaW5mbykgY29uc3Q7CiAKKyAgTWRuc05hbWVSZWdpc3RyYXRpb25TdGF0dXMgbWRuc19u
YW1lX3JlZ2lzdHJhdGlvbl9zdGF0dXMoKSBjb25zdCB7CisgICAgcmV0dXJuIG1kbnNfbmFtZV9y
ZWdpc3RyYXRpb25fc3RhdHVzXzsKKyAgfQorICB2b2lkIHNldF9tZG5zX25hbWVfcmVnaXN0cmF0
aW9uX3N0YXR1cyhNZG5zTmFtZVJlZ2lzdHJhdGlvblN0YXR1cyBzdGF0dXMpIHsKKyAgICBtZG5z
X25hbWVfcmVnaXN0cmF0aW9uX3N0YXR1c18gPSBzdGF0dXM7CisgIH0KKwogIHByaXZhdGU6CiAg
IHZvaWQgQ29uc3RydWN0KCk7CiAgIC8vIENhbGxlZCB3aGVuIG9uZSBvZiBvdXIgY29ubmVjdGlv
bnMgZGVsZXRlcyBpdHNlbGYuCkBAIC00ODcsOSArNTA5LDE1IEBAIGNsYXNzIFBvcnQgOiBwdWJs
aWMgUG9ydEludGVyZmFjZSwKICAgaW50MTZfdCBuZXR3b3JrX2Nvc3RfOwogICBTdGF0ZSBzdGF0
ZV8gPSBTdGF0ZTo6SU5JVDsKICAgaW50NjRfdCBsYXN0X3RpbWVfYWxsX2Nvbm5lY3Rpb25zX3Jl
bW92ZWRfID0gMDsKKyAgTWRuc05hbWVSZWdpc3RyYXRpb25TdGF0dXMgbWRuc19uYW1lX3JlZ2lz
dHJhdGlvbl9zdGF0dXNfID0KKyAgICAgIE1kbnNOYW1lUmVnaXN0cmF0aW9uU3RhdHVzOjprTm90
U3RhcnRlZDsKIAogICBydGM6OldlYWtQdHJGYWN0b3J5PFBvcnQ+IHdlYWtfZmFjdG9yeV87CiAK
KyAgYm9vbCBNYXliZU9iZnVzY2F0ZUFkZHJlc3MoQ2FuZGlkYXRlKiBjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc19maW5hbCk7CisKICAgZnJpZW5kIGNsYXNzIENvbm5lY3Rp
b247CiB9OwogCkBAIC01NzgsMTUgKzYwNiwxMiBAQCBjbGFzcyBDb25uZWN0aW9uIDogcHVibGlj
IENhbmRpZGF0ZVBhaXJJbnRlcmZhY2UsCiAgIC8vIEVycm9yIGlmIFNlbmQoKSByZXR1cm5zIDwg
MAogICB2aXJ0dWFsIGludCBHZXRFcnJvcigpID0gMDsKIAotICBzaWdzbG90OjpzaWduYWw0PENv
bm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgc2l6ZV90LCBjb25zdCBydGM6OlBhY2tldFRpbWUmPgot
ICAgICAgU2lnbmFsUmVhZFBhY2tldDsKKyAgc2lnc2xvdDo6c2lnbmFsNDxDb25uZWN0aW9uKiwg
Y29uc3QgY2hhciosIHNpemVfdCwgaW50NjRfdD4gU2lnbmFsUmVhZFBhY2tldDsKIAogICBzaWdz
bG90OjpzaWduYWwxPENvbm5lY3Rpb24qPiBTaWduYWxSZWFkeVRvU2VuZDsKIAogICAvLyBDYWxs
ZWQgd2hlbiBhIHBhY2tldCBpcyByZWNlaXZlZCBvbiB0aGlzIGNvbm5lY3Rpb24uCi0gIHZvaWQg
T25SZWFkUGFja2V0KGNvbnN0IGNoYXIqIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzaXplLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKTsKKyAgdm9pZCBPblJlYWRQYWNrZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNp
emUsIGludDY0X3QgcGFja2V0X3RpbWVfdXMpOwogCiAgIC8vIENhbGxlZCB3aGVuIHRoZSBzb2Nr
ZXQgaXMgY3VycmVudGx5IGFibGUgdG8gc2VuZC4KICAgdm9pZCBPblJlYWR5VG9TZW5kKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9wb3J0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvcG9ydF91bml0dGVzdC5jYwppbmRleCA1MDI4MDMwMWQ0Y2UxOGZm
YmY3YjFlYjU3YjBiOGZkM2FkNTViNzEyLi43MTkyOTQyM2NiNjIwMDQ4ZTBlMzIxODMzNjJiNjYy
MTZkOTk0MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9wb3J0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRfdW5pdHRlc3QuY2MKQEAgLTkx
LDE4ICs5MSwxOCBAQCBTb2NrZXRBZGRyZXNzIEdldEFkZHJlc3MoUG9ydCogcG9ydCkgewogICBy
ZXR1cm4gR2V0Q2FuZGlkYXRlKHBvcnQpLmFkZHJlc3MoKTsKIH0KIAotSWNlTWVzc2FnZSogQ29w
eVN0dW5NZXNzYWdlKGNvbnN0IEljZU1lc3NhZ2UqIHNyYykgewotICBJY2VNZXNzYWdlKiBkc3Qg
PSBuZXcgSWNlTWVzc2FnZSgpOworc3RkOjp1bmlxdWVfcHRyPEljZU1lc3NhZ2U+IENvcHlTdHVu
TWVzc2FnZShjb25zdCBJY2VNZXNzYWdlJiBzcmMpIHsKKyAgYXV0byBkc3QgPSBhYnNsOjptYWtl
X3VuaXF1ZTxJY2VNZXNzYWdlPigpOwogICBCeXRlQnVmZmVyV3JpdGVyIGJ1ZjsKLSAgc3JjLT5X
cml0ZSgmYnVmKTsKKyAgc3JjLldyaXRlKCZidWYpOwogICBCeXRlQnVmZmVyUmVhZGVyIHJlYWRf
YnVmKGJ1Zik7CiAgIGRzdC0+UmVhZCgmcmVhZF9idWYpOwogICByZXR1cm4gZHN0OwogfQogCi1i
b29sIFdyaXRlU3R1bk1lc3NhZ2UoY29uc3QgU3R1bk1lc3NhZ2UqIG1zZywgQnl0ZUJ1ZmZlcldy
aXRlciogYnVmKSB7Citib29sIFdyaXRlU3R1bk1lc3NhZ2UoY29uc3QgU3R1bk1lc3NhZ2UmIG1z
ZywgQnl0ZUJ1ZmZlcldyaXRlciogYnVmKSB7CiAgIGJ1Zi0+UmVzaXplKDApOyAgLy8gY2xlYXIg
b3V0IGFueSBleGlzdGluZyBidWZmZXIgY29udGVudHMKLSAgcmV0dXJuIG1zZy0+V3JpdGUoYnVm
KTsKKyAgcmV0dXJuIG1zZy5Xcml0ZShidWYpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTE4
OSwxNyArMTg5LDE1IEBAIGNsYXNzIFRlc3RQb3J0IDogcHVibGljIFBvcnQgewogICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRPcHRpb25zJiBvcHRpb25zLAogICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBwYXlsb2FkKSB7CiAgICAgaWYgKCFwYXlsb2FkKSB7Ci0gICAgICBJ
Y2VNZXNzYWdlKiBtc2cgPSBuZXcgSWNlTWVzc2FnZTsKLSAgICAgIGF1dG8qIGJ1ZiA9Ci0gICAg
ICAgICAgbmV3IHJ0Yzo6QnVmZmVyVDx1aW50OF90PihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIHNpemUpOworICAgICAgYXV0byBtc2cgPSBhYnNsOjptYWtlX3VuaXF1ZTxJY2VNZXNz
YWdlPigpOworICAgICAgYXV0byBidWYgPSBhYnNsOjptYWtlX3VuaXF1ZTxydGM6OkJ1ZmZlclQ8
dWludDhfdD4+KAorICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6
ZSk7CiAgICAgICBCeXRlQnVmZmVyUmVhZGVyIHJlYWRfYnVmKCpidWYpOwogICAgICAgaWYgKCFt
c2ctPlJlYWQoJnJlYWRfYnVmKSkgewotICAgICAgICBkZWxldGUgbXNnOwotICAgICAgICBkZWxl
dGUgYnVmOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgICB9Ci0gICAgICBsYXN0X3N0dW5fYnVm
Xy5yZXNldChidWYpOwotICAgICAgbGFzdF9zdHVuX21zZ18ucmVzZXQobXNnKTsKKyAgICAgIGxh
c3Rfc3R1bl9idWZfID0gc3RkOjptb3ZlKGJ1Zik7CisgICAgICBsYXN0X3N0dW5fbXNnXyA9IHN0
ZDo6bW92ZShtc2cpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzaXplKTsK
ICAgfQpAQCAtMjM0LDI0ICsyMzIsMTggQEAgc3RhdGljIHZvaWQgU2VuZFBpbmdBbmRSZWNlaXZl
UmVzcG9uc2UoQ29ubmVjdGlvbiogbGNvbm4sCiAgIEFTU0VSVF9UUlVFX1dBSVQobHBvcnQtPmxh
c3Rfc3R1bl9tc2coKSwga0RlZmF1bHRUaW1lb3V0KTsKICAgQVNTRVJUX1RSVUUobHBvcnQtPmxh
c3Rfc3R1bl9idWYoKSk7CiAgIHJjb25uLT5PblJlYWRQYWNrZXQobHBvcnQtPmxhc3Rfc3R1bl9i
dWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0X3N0
dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAg
ICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMgKi8g
LTEpOwogICBjbG9jay0+QWR2YW5jZVRpbWUod2VicnRjOjpUaW1lRGVsdGE6Om1zKG1zKSk7CiAg
IEFTU0VSVF9UUlVFX1dBSVQocnBvcnQtPmxhc3Rfc3R1bl9tc2coKSwga0RlZmF1bHRUaW1lb3V0
KTsKICAgQVNTRVJUX1RSVUUocnBvcnQtPmxhc3Rfc3R1bl9idWYoKSk7CiAgIGxjb25uLT5PblJl
YWRQYWNrZXQocnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAg
ICAgICAgICAgICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRU
aW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNp
emUoKSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogfQogCiBjbGFzcyBUZXN0Q2hhbm5lbCA6
IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgcHVibGljOgogICAvLyBUYWtlcyBvd25l
cnNoaXAgb2YgfHAxfCAoYnV0IG5vdCB8cDJ8KS4KLSAgZXhwbGljaXQgVGVzdENoYW5uZWwoUG9y
dCogcDEpCi0gICAgICA6IGljZV9tb2RlXyhJQ0VNT0RFX0ZVTEwpLAotICAgICAgICBwb3J0Xyhw
MSksCi0gICAgICAgIGNvbXBsZXRlX2NvdW50XygwKSwKLSAgICAgICAgY29ubl8oTlVMTCksCi0g
ICAgICAgIHJlbW90ZV9yZXF1ZXN0XygpLAotICAgICAgICBub21pbmF0ZWRfKGZhbHNlKSB7Cisg
IGV4cGxpY2l0IFRlc3RDaGFubmVsKHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBwMSkgOiBwb3J0Xyhz
dGQ6Om1vdmUocDEpKSB7CiAgICAgcG9ydF8tPlNpZ25hbFBvcnRDb21wbGV0ZS5jb25uZWN0KHRo
aXMsICZUZXN0Q2hhbm5lbDo6T25Qb3J0Q29tcGxldGUpOwogICAgIHBvcnRfLT5TaWduYWxVbmtu
b3duQWRkcmVzcy5jb25uZWN0KHRoaXMsICZUZXN0Q2hhbm5lbDo6T25Vbmtub3duQWRkcmVzcyk7
CiAgICAgcG9ydF8tPlNpZ25hbERlc3Ryb3llZC5jb25uZWN0KHRoaXMsICZUZXN0Q2hhbm5lbDo6
T25TcmNQb3J0RGVzdHJveWVkKTsKQEAgLTMyNyw3ICszMTksNyBAQCBjbGFzcyBUZXN0Q2hhbm5l
bCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgRVhQRUNUX1RSVUUobWlfYXR0
ciAhPSBOVUxMKTsKICAgICBFWFBFQ1RfVFJVRShmaW5nZXJwcmludF9hdHRyICE9IE5VTEwpOwog
ICAgIHJlbW90ZV9hZGRyZXNzXyA9IGFkZHI7Ci0gICAgcmVtb3RlX3JlcXVlc3RfLnJlc2V0KENv
cHlTdHVuTWVzc2FnZShtc2cpKTsKKyAgICByZW1vdGVfcmVxdWVzdF8gPSBDb3B5U3R1bk1lc3Nh
Z2UoKm1zZyk7CiAgICAgcmVtb3RlX2ZyYWdfID0gcmY7CiAgIH0KIApAQCAtMzYyLDE1ICszNTQs
MTUgQEAgY2xhc3MgVGVzdENoYW5uZWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewog
ICAgIGNvbm5lY3Rpb25fcmVhZHlfdG9fc2VuZF8gPSB0cnVlOwogICB9CiAKLSAgSWNlTW9kZSBp
Y2VfbW9kZV87CisgIEljZU1vZGUgaWNlX21vZGVfID0gSUNFTU9ERV9GVUxMOwogICBzdGQ6OnVu
aXF1ZV9wdHI8UG9ydD4gcG9ydF87CiAKLSAgaW50IGNvbXBsZXRlX2NvdW50XzsKLSAgQ29ubmVj
dGlvbiogY29ubl87CisgIGludCBjb21wbGV0ZV9jb3VudF8gPSAwOworICBDb25uZWN0aW9uKiBj
b25uXyA9IG51bGxwdHI7CiAgIFNvY2tldEFkZHJlc3MgcmVtb3RlX2FkZHJlc3NfOwogICBzdGQ6
OnVuaXF1ZV9wdHI8U3R1bk1lc3NhZ2U+IHJlbW90ZV9yZXF1ZXN0XzsKICAgc3RkOjpzdHJpbmcg
cmVtb3RlX2ZyYWdfOwotICBib29sIG5vbWluYXRlZF87CisgIGJvb2wgbm9taW5hdGVkXyA9IGZh
bHNlOwogICBib29sIGNvbm5lY3Rpb25fcmVhZHlfdG9fc2VuZF8gPSBmYWxzZTsKIH07CiAKQEAg
LTQwMCw4MiArMzkyLDg1IEBAIGNsYXNzIFBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qs
IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAKICBwcm90ZWN0ZWQ6CiAgIHZvaWQgVGVz
dExvY2FsVG9Mb2NhbCgpIHsKLSAgICBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2Fs
QWRkcjEpOworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKICAg
ICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKLSAgICBQ
b3J0KiBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOworICAgIGF1dG8gcG9ydDIg
PSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKICAgICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlj
a2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwotICAgIFRlc3RDb25uZWN0aXZpdHkoInVkcCIsIHBv
cnQxLCAidWRwIiwgcG9ydDIsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOworICAgIFRlc3RDb25u
ZWN0aXZpdHkoInVkcCIsIHN0ZDo6bW92ZShwb3J0MSksICJ1ZHAiLCBzdGQ6Om1vdmUocG9ydDIp
LCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CiAgIH0KICAg
dm9pZCBUZXN0TG9jYWxUb1N0dW4oTkFUVHlwZSBudHlwZSkgewotICAgIFBvcnQqIHBvcnQxID0g
Q3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CisgICAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBv
cnQoa0xvY2FsQWRkcjEpOwogICAgIHBvcnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVf
Q09OVFJPTExJTkcpOwotICAgIG5hdF9zZXJ2ZXIyXy5yZXNldChDcmVhdGVOYXRTZXJ2ZXIoa05h
dEFkZHIyLCBudHlwZSkpOwotICAgIFBvcnQqIHBvcnQyID0gQ3JlYXRlU3R1blBvcnQoa0xvY2Fs
QWRkcjIsICZuYXRfc29ja2V0X2ZhY3RvcnkyXyk7CisgICAgbmF0X3NlcnZlcjJfID0gQ3JlYXRl
TmF0U2VydmVyKGtOYXRBZGRyMiwgbnR5cGUpOworICAgIGF1dG8gcG9ydDIgPSBDcmVhdGVTdHVu
UG9ydChrTG9jYWxBZGRyMiwgJm5hdF9zb2NrZXRfZmFjdG9yeTJfKTsKICAgICBwb3J0Mi0+U2V0
SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwotICAgIFRlc3RDb25uZWN0aXZp
dHkoInVkcCIsIHBvcnQxLCBTdHVuTmFtZShudHlwZSksIHBvcnQyLAorICAgIFRlc3RDb25uZWN0
aXZpdHkoInVkcCIsIHN0ZDo6bW92ZShwb3J0MSksIFN0dW5OYW1lKG50eXBlKSwgc3RkOjptb3Zl
KHBvcnQyKSwKICAgICAgICAgICAgICAgICAgICAgIG50eXBlID09IE5BVF9PUEVOX0NPTkUsIHRy
dWUsIG50eXBlICE9IE5BVF9TWU1NRVRSSUMsCiAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsK
ICAgfQogICB2b2lkIFRlc3RMb2NhbFRvUmVsYXkoUmVsYXlUeXBlIHJ0eXBlLCBQcm90b2NvbFR5
cGUgcHJvdG8pIHsKLSAgICBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEp
OworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKICAgICBwb3J0
MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKLSAgICBQb3J0KiBw
b3J0MiA9IENyZWF0ZVJlbGF5UG9ydChrTG9jYWxBZGRyMiwgcnR5cGUsIHByb3RvLCBQUk9UT19V
RFApOworICAgIGF1dG8gcG9ydDIgPSBDcmVhdGVSZWxheVBvcnQoa0xvY2FsQWRkcjIsIHJ0eXBl
LCBwcm90bywgUFJPVE9fVURQKTsKICAgICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VS
T0xFX0NPTlRST0xMRUQpOwotICAgIFRlc3RDb25uZWN0aXZpdHkoInVkcCIsIHBvcnQxLCBSZWxh
eU5hbWUocnR5cGUsIHByb3RvKSwgcG9ydDIsCi0gICAgICAgICAgICAgICAgICAgICBydHlwZSA9
PSBSRUxBWV9HVFVSTiwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgVGVzdENvbm5lY3Rpdml0eSgi
dWRwIiwgc3RkOjptb3ZlKHBvcnQxKSwgUmVsYXlOYW1lKHJ0eXBlLCBwcm90byksCisgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1vdmUocG9ydDIpLCBydHlwZSA9PSBSRUxBWV9HVFVSTiwgdHJ1
ZSwgdHJ1ZSwgdHJ1ZSk7CiAgIH0KICAgdm9pZCBUZXN0U3R1blRvTG9jYWwoTkFUVHlwZSBudHlw
ZSkgewotICAgIG5hdF9zZXJ2ZXIxXy5yZXNldChDcmVhdGVOYXRTZXJ2ZXIoa05hdEFkZHIxLCBu
dHlwZSkpOwotICAgIFBvcnQqIHBvcnQxID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsICZu
YXRfc29ja2V0X2ZhY3RvcnkxXyk7CisgICAgbmF0X3NlcnZlcjFfID0gQ3JlYXRlTmF0U2VydmVy
KGtOYXRBZGRyMSwgbnR5cGUpOworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVTdHVuUG9ydChrTG9j
YWxBZGRyMSwgJm5hdF9zb2NrZXRfZmFjdG9yeTFfKTsKICAgICBwb3J0MS0+U2V0SWNlUm9sZShj
cmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKLSAgICBQb3J0KiBwb3J0MiA9IENyZWF0ZVVk
cFBvcnQoa0xvY2FsQWRkcjIpOworICAgIGF1dG8gcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2Nh
bEFkZHIyKTsKICAgICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xM
RUQpOwotICAgIFRlc3RDb25uZWN0aXZpdHkoU3R1bk5hbWUobnR5cGUpLCBwb3J0MSwgInVkcCIs
IHBvcnQyLCB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgbnR5cGUgIT0gTkFUX1NZTU1FVFJJ
QywgdHJ1ZSwgdHJ1ZSk7CisgICAgVGVzdENvbm5lY3Rpdml0eShTdHVuTmFtZShudHlwZSksIHN0
ZDo6bW92ZShwb3J0MSksICJ1ZHAiLCBzdGQ6Om1vdmUocG9ydDIpLAorICAgICAgICAgICAgICAg
ICAgICAgdHJ1ZSwgbnR5cGUgIT0gTkFUX1NZTU1FVFJJQywgdHJ1ZSwgdHJ1ZSk7CiAgIH0KICAg
dm9pZCBUZXN0U3R1blRvU3R1bihOQVRUeXBlIG50eXBlMSwgTkFUVHlwZSBudHlwZTIpIHsKLSAg
ICBuYXRfc2VydmVyMV8ucmVzZXQoQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMSwgbnR5cGUxKSk7
Ci0gICAgUG9ydCogcG9ydDEgPSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgJm5hdF9zb2Nr
ZXRfZmFjdG9yeTFfKTsKKyAgICBuYXRfc2VydmVyMV8gPSBDcmVhdGVOYXRTZXJ2ZXIoa05hdEFk
ZHIxLCBudHlwZTEpOworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRy
MSwgJm5hdF9zb2NrZXRfZmFjdG9yeTFfKTsKICAgICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0
OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKLSAgICBuYXRfc2VydmVyMl8ucmVzZXQoQ3JlYXRlTmF0
U2VydmVyKGtOYXRBZGRyMiwgbnR5cGUyKSk7Ci0gICAgUG9ydCogcG9ydDIgPSBDcmVhdGVTdHVu
UG9ydChrTG9jYWxBZGRyMiwgJm5hdF9zb2NrZXRfZmFjdG9yeTJfKTsKKyAgICBuYXRfc2VydmVy
Ml8gPSBDcmVhdGVOYXRTZXJ2ZXIoa05hdEFkZHIyLCBudHlwZTIpOworICAgIGF1dG8gcG9ydDIg
PSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMiwgJm5hdF9zb2NrZXRfZmFjdG9yeTJfKTsKICAg
ICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwotICAgIFRl
c3RDb25uZWN0aXZpdHkoU3R1bk5hbWUobnR5cGUxKSwgcG9ydDEsIFN0dW5OYW1lKG50eXBlMiks
IHBvcnQyLAotICAgICAgICAgICAgICAgICAgICAgbnR5cGUyID09IE5BVF9PUEVOX0NPTkUsIG50
eXBlMSAhPSBOQVRfU1lNTUVUUklDLAotICAgICAgICAgICAgICAgICAgICAgbnR5cGUyICE9IE5B
VF9TWU1NRVRSSUMsCisgICAgVGVzdENvbm5lY3Rpdml0eShTdHVuTmFtZShudHlwZTEpLCBzdGQ6
Om1vdmUocG9ydDEpLCBTdHVuTmFtZShudHlwZTIpLAorICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojptb3ZlKHBvcnQyKSwgbnR5cGUyID09IE5BVF9PUEVOX0NPTkUsCisgICAgICAgICAgICAgICAg
ICAgICBudHlwZTEgIT0gTkFUX1NZTU1FVFJJQywgbnR5cGUyICE9IE5BVF9TWU1NRVRSSUMsCiAg
ICAgICAgICAgICAgICAgICAgICBudHlwZTEgKyBudHlwZTIgPCAoTkFUX1BPUlRfUkVTVFJJQ1RF
RCArIE5BVF9TWU1NRVRSSUMpKTsKICAgfQogICB2b2lkIFRlc3RTdHVuVG9SZWxheShOQVRUeXBl
IG50eXBlLCBSZWxheVR5cGUgcnR5cGUsIFByb3RvY29sVHlwZSBwcm90bykgewotICAgIG5hdF9z
ZXJ2ZXIxXy5yZXNldChDcmVhdGVOYXRTZXJ2ZXIoa05hdEFkZHIxLCBudHlwZSkpOwotICAgIFBv
cnQqIHBvcnQxID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsICZuYXRfc29ja2V0X2ZhY3Rv
cnkxXyk7CisgICAgbmF0X3NlcnZlcjFfID0gQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMSwgbnR5
cGUpOworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgJm5hdF9z
b2NrZXRfZmFjdG9yeTFfKTsKICAgICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xF
X0NPTlRST0xMSU5HKTsKLSAgICBQb3J0KiBwb3J0MiA9IENyZWF0ZVJlbGF5UG9ydChrTG9jYWxB
ZGRyMiwgcnR5cGUsIHByb3RvLCBQUk9UT19VRFApOworICAgIGF1dG8gcG9ydDIgPSBDcmVhdGVS
ZWxheVBvcnQoa0xvY2FsQWRkcjIsIHJ0eXBlLCBwcm90bywgUFJPVE9fVURQKTsKICAgICBwb3J0
Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwotICAgIFRlc3RDb25u
ZWN0aXZpdHkoU3R1bk5hbWUobnR5cGUpLCBwb3J0MSwgUmVsYXlOYW1lKHJ0eXBlLCBwcm90byks
IHBvcnQyLAotICAgICAgICAgICAgICAgICAgICAgcnR5cGUgPT0gUkVMQVlfR1RVUk4sIG50eXBl
ICE9IE5BVF9TWU1NRVRSSUMsIHRydWUsIHRydWUpOworICAgIFRlc3RDb25uZWN0aXZpdHkoU3R1
bk5hbWUobnR5cGUpLCBzdGQ6Om1vdmUocG9ydDEpLCBSZWxheU5hbWUocnR5cGUsIHByb3RvKSwK
KyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShwb3J0MiksIHJ0eXBlID09IFJFTEFZX0dU
VVJOLAorICAgICAgICAgICAgICAgICAgICAgbnR5cGUgIT0gTkFUX1NZTU1FVFJJQywgdHJ1ZSwg
dHJ1ZSk7CiAgIH0KICAgdm9pZCBUZXN0VGNwVG9UY3AoKSB7Ci0gICAgUG9ydCogcG9ydDEgPSBD
cmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRlVGNwUG9y
dChrTG9jYWxBZGRyMSk7CiAgICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9D
T05UUk9MTElORyk7Ci0gICAgUG9ydCogcG9ydDIgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIy
KTsKKyAgICBhdXRvIHBvcnQyID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMik7CiAgICAgcG9y
dDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKLSAgICBUZXN0Q29u
bmVjdGl2aXR5KCJ0Y3AiLCBwb3J0MSwgInRjcCIsIHBvcnQyLCB0cnVlLCBmYWxzZSwgdHJ1ZSwg
dHJ1ZSk7CisgICAgVGVzdENvbm5lY3Rpdml0eSgidGNwIiwgc3RkOjptb3ZlKHBvcnQxKSwgInRj
cCIsIHN0ZDo6bW92ZShwb3J0MiksIHRydWUsCisgICAgICAgICAgICAgICAgICAgICBmYWxzZSwg
dHJ1ZSwgdHJ1ZSk7CiAgIH0KICAgdm9pZCBUZXN0VGNwVG9SZWxheShSZWxheVR5cGUgcnR5cGUs
IFByb3RvY29sVHlwZSBwcm90bykgewotICAgIFBvcnQqIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChr
TG9jYWxBZGRyMSk7CisgICAgYXV0byBwb3J0MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEp
OwogICAgIHBvcnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwot
ICAgIFBvcnQqIHBvcnQyID0gQ3JlYXRlUmVsYXlQb3J0KGtMb2NhbEFkZHIyLCBydHlwZSwgcHJv
dG8sIFBST1RPX1RDUCk7CisgICAgYXV0byBwb3J0MiA9IENyZWF0ZVJlbGF5UG9ydChrTG9jYWxB
ZGRyMiwgcnR5cGUsIHByb3RvLCBQUk9UT19UQ1ApOwogICAgIHBvcnQyLT5TZXRJY2VSb2xlKGNy
aWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7Ci0gICAgVGVzdENvbm5lY3Rpdml0eSgidGNwIiwg
cG9ydDEsIFJlbGF5TmFtZShydHlwZSwgcHJvdG8pLCBwb3J0MiwKLSAgICAgICAgICAgICAgICAg
ICAgIHJ0eXBlID09IFJFTEFZX0dUVVJOLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgVGVzdENv
bm5lY3Rpdml0eSgidGNwIiwgc3RkOjptb3ZlKHBvcnQxKSwgUmVsYXlOYW1lKHJ0eXBlLCBwcm90
byksCisgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUocG9ydDIpLCBydHlwZSA9PSBSRUxB
WV9HVFVSTiwgZmFsc2UsIHRydWUsIHRydWUpOwogICB9CiAgIHZvaWQgVGVzdFNzbFRjcFRvUmVs
YXkoUmVsYXlUeXBlIHJ0eXBlLCBQcm90b2NvbFR5cGUgcHJvdG8pIHsKLSAgICBQb3J0KiBwb3J0
MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpOworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVU
Y3BQb3J0KGtMb2NhbEFkZHIxKTsKICAgICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VS
T0xFX0NPTlRST0xMSU5HKTsKLSAgICBQb3J0KiBwb3J0MiA9IENyZWF0ZVJlbGF5UG9ydChrTG9j
YWxBZGRyMiwgcnR5cGUsIHByb3RvLCBQUk9UT19TU0xUQ1ApOworICAgIGF1dG8gcG9ydDIgPSBD
cmVhdGVSZWxheVBvcnQoa0xvY2FsQWRkcjIsIHJ0eXBlLCBwcm90bywgUFJPVE9fU1NMVENQKTsK
ICAgICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwotICAg
IFRlc3RDb25uZWN0aXZpdHkoInNzbHRjcCIsIHBvcnQxLCBSZWxheU5hbWUocnR5cGUsIHByb3Rv
KSwgcG9ydDIsCi0gICAgICAgICAgICAgICAgICAgICBydHlwZSA9PSBSRUxBWV9HVFVSTiwgZmFs
c2UsIHRydWUsIHRydWUpOworICAgIFRlc3RDb25uZWN0aXZpdHkoInNzbHRjcCIsIHN0ZDo6bW92
ZShwb3J0MSksIFJlbGF5TmFtZShydHlwZSwgcHJvdG8pLAorICAgICAgICAgICAgICAgICAgICAg
c3RkOjptb3ZlKHBvcnQyKSwgcnR5cGUgPT0gUkVMQVlfR1RVUk4sIGZhbHNlLCB0cnVlLCB0cnVl
KTsKICAgfQogCiAgIHJ0Yzo6TmV0d29yayogTWFrZU5ldHdvcmsoY29uc3QgU29ja2V0QWRkcmVz
cyYgYWRkcikgewpAQCAtNDg1LDcxICs0ODAsNzEgQEAgY2xhc3MgUG9ydFRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCwgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgfQogCiAgIC8v
IGhlbHBlcnMgZm9yIGFib3ZlIGZ1bmN0aW9ucwotICBVRFBQb3J0KiBDcmVhdGVVZHBQb3J0KGNv
bnN0IFNvY2tldEFkZHJlc3MmIGFkZHIpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFVEUFBvcnQ+IENy
ZWF0ZVVkcFBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkcikgewogICAgIHJldHVybiBDcmVh
dGVVZHBQb3J0KGFkZHIsICZzb2NrZXRfZmFjdG9yeV8pOwogICB9Ci0gIFVEUFBvcnQqIENyZWF0
ZVVkcFBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFjdG9yeSkgeworICBzdGQ6OnVuaXF1
ZV9wdHI8VURQUG9ydD4gQ3JlYXRlVWRwUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrZXRTb2NrZXRGYWN0
b3J5KiBzb2NrZXRfZmFjdG9yeSkgewogICAgIHJldHVybiBVRFBQb3J0OjpDcmVhdGUoJm1haW5f
LCBzb2NrZXRfZmFjdG9yeSwgTWFrZU5ldHdvcmsoYWRkciksIDAsIDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1c2VybmFtZV8sIHBhc3N3b3JkXywgc3RkOjpzdHJpbmcoKSwgdHJ1ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om51bGxvcHQpOwogICB9Ci0gIFRDUFBv
cnQqIENyZWF0ZVRjcFBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkcikgeworICBzdGQ6OnVu
aXF1ZV9wdHI8VENQUG9ydD4gQ3JlYXRlVGNwUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRy
KSB7CiAgICAgcmV0dXJuIENyZWF0ZVRjcFBvcnQoYWRkciwgJnNvY2tldF9mYWN0b3J5Xyk7CiAg
IH0KLSAgVENQUG9ydCogQ3JlYXRlVGNwUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0
b3J5KSB7CisgIHN0ZDo6dW5pcXVlX3B0cjxUQ1BQb3J0PiBDcmVhdGVUY3BQb3J0KGNvbnN0IFNv
Y2tldEFkZHJlc3MmIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5KSB7CiAgICAgcmV0dXJuIFRD
UFBvcnQ6OkNyZWF0ZSgmbWFpbl8sIHNvY2tldF9mYWN0b3J5LCBNYWtlTmV0d29yayhhZGRyKSwg
MCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lXywgcGFzc3dvcmRfLCB0
cnVlKTsKICAgfQotICBTdHVuUG9ydCogQ3JlYXRlU3R1blBvcnQoY29uc3QgU29ja2V0QWRkcmVz
cyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFj
dG9yeSogZmFjdG9yeSkgeworICBzdGQ6OnVuaXF1ZV9wdHI8U3R1blBvcnQ+IENyZWF0ZVN0dW5Q
b3J0KGNvbnN0IFNvY2tldEFkZHJlc3MmIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5KSB7CiAg
ICAgU2VydmVyQWRkcmVzc2VzIHN0dW5fc2VydmVyczsKICAgICBzdHVuX3NlcnZlcnMuaW5zZXJ0
KGtTdHVuQWRkcik7CiAgICAgcmV0dXJuIFN0dW5Qb3J0OjpDcmVhdGUoJm1haW5fLCBmYWN0b3J5
LCBNYWtlTmV0d29yayhhZGRyKSwgMCwgMCwgdXNlcm5hbWVfLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhc3N3b3JkXywgc3R1bl9zZXJ2ZXJzLCBzdGQ6OnN0cmluZygpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om51bGxvcHQpOwogICB9Ci0gIFBvcnQqIENyZWF0
ZVJlbGF5UG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgUmVsYXlUeXBlIHJ0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xU
eXBlIGludF9wcm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBleHRf
cHJvdG8pIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IENyZWF0ZVJlbGF5UG9ydChjb25zdCBT
b2NrZXRBZGRyZXNzJiBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlbGF5VHlwZSBydHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQcm90b2NvbFR5cGUgaW50X3Byb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFByb3RvY29sVHlwZSBleHRfcHJvdG8pIHsKICAgICBpZiAocnR5cGUgPT0g
UkVMQVlfVFVSTikgewogICAgICAgcmV0dXJuIENyZWF0ZVR1cm5Qb3J0KGFkZHIsICZzb2NrZXRf
ZmFjdG9yeV8sIGludF9wcm90bywgZXh0X3Byb3RvKTsKICAgICB9IGVsc2UgewogICAgICAgcmV0
dXJuIENyZWF0ZUd0dXJuUG9ydChhZGRyLCBpbnRfcHJvdG8sIGV4dF9wcm90byk7CiAgICAgfQog
ICB9Ci0gIFR1cm5Qb3J0KiBDcmVhdGVUdXJuUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0
X2ZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgaW50X3By
b3RvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGV4dF9wcm90bykg
eworICBzdGQ6OnVuaXF1ZV9wdHI8VHVyblBvcnQ+IENyZWF0ZVR1cm5Qb3J0KGNvbnN0IFNvY2tl
dEFkZHJlc3MmIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGludF9wcm90bywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgZXh0X3By
b3RvKSB7CiAgICAgU29ja2V0QWRkcmVzcyBzZXJ2ZXJfYWRkciA9CiAgICAgICAgIGludF9wcm90
byA9PSBQUk9UT19UQ1AgPyBrVHVyblRjcEludEFkZHIgOiBrVHVyblVkcEludEFkZHI7CiAgICAg
cmV0dXJuIENyZWF0ZVR1cm5Qb3J0KGFkZHIsIHNvY2tldF9mYWN0b3J5LCBpbnRfcHJvdG8sIGV4
dF9wcm90bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2FkZHIpOwogICB9Ci0g
IFR1cm5Qb3J0KiBDcmVhdGVUdXJuUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3Rv
cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgaW50X3Byb3RvLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGV4dF9wcm90bywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgc2VydmVyX2Fk
ZHIpIHsKLSAgICByZXR1cm4gVHVyblBvcnQ6OkNyZWF0ZSgKLSAgICAgICAgJm1haW5fLCBzb2Nr
ZXRfZmFjdG9yeSwgTWFrZU5ldHdvcmsoYWRkciksIDAsIDAsIHVzZXJuYW1lXywgcGFzc3dvcmRf
LAotICAgICAgICBQcm90b2NvbEFkZHJlc3Moc2VydmVyX2FkZHIsIGludF9wcm90byksIGtSZWxh
eUNyZWRlbnRpYWxzLCAwLAotICAgICAgICBzdGQ6OnN0cmluZygpLCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4oKSwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCksCi0gICAgICAgIG51bGxwdHIs
IG51bGxwdHIpOwotICB9Ci0gIFJlbGF5UG9ydCogQ3JlYXRlR3R1cm5Qb3J0KGNvbnN0IFNvY2tl
dEFkZHJlc3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlw
ZSBpbnRfcHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBl
eHRfcHJvdG8pIHsKLSAgICBSZWxheVBvcnQqIHBvcnQgPSBDcmVhdGVHdHVyblBvcnQoYWRkcik7
CisgIHN0ZDo6dW5pcXVlX3B0cjxUdXJuUG9ydD4gQ3JlYXRlVHVyblBvcnQoCisgICAgICBjb25z
dCBTb2NrZXRBZGRyZXNzJiBhZGRyLAorICAgICAgUGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0
X2ZhY3RvcnksCisgICAgICBQcm90b2NvbFR5cGUgaW50X3Byb3RvLAorICAgICAgUHJvdG9jb2xU
eXBlIGV4dF9wcm90bywKKyAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgc2VydmVyX2Fk
ZHIpIHsKKyAgICByZXR1cm4gVHVyblBvcnQ6OkNyZWF0ZSgmbWFpbl8sIHNvY2tldF9mYWN0b3J5
LCBNYWtlTmV0d29yayhhZGRyKSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2VybmFtZV8sIHBhc3N3b3JkXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2Nv
bEFkZHJlc3Moc2VydmVyX2FkZHIsIGludF9wcm90byksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga1JlbGF5Q3JlZGVudGlhbHMsIDAsICIiLCB7fSwge30sIG51bGxwdHIsIG51bGxwdHIp
OworICB9CisgIHN0ZDo6dW5pcXVlX3B0cjxSZWxheVBvcnQ+IENyZWF0ZUd0dXJuUG9ydChjb25z
dCBTb2NrZXRBZGRyZXNzJiBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGludF9wcm90bywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBleHRfcHJvdG8pIHsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVsYXlQb3J0PiBwb3J0ID0gQ3JlYXRlR3R1cm5Qb3J0KGFkZHIpOwog
ICAgIFNvY2tldEFkZHJlc3MgYWRkcnNbXSA9IHtrUmVsYXlVZHBJbnRBZGRyLCBrUmVsYXlUY3BJ
bnRBZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrUmVsYXlTc2xUY3BJbnRBZGRy
fTsKICAgICBwb3J0LT5BZGRTZXJ2ZXJBZGRyZXNzKFByb3RvY29sQWRkcmVzcyhhZGRyc1tpbnRf
cHJvdG9dLCBpbnRfcHJvdG8pKTsKICAgICByZXR1cm4gcG9ydDsKICAgfQotICBSZWxheVBvcnQq
IENyZWF0ZUd0dXJuUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyKSB7CisgIHN0ZDo6dW5p
cXVlX3B0cjxSZWxheVBvcnQ+IENyZWF0ZUd0dXJuUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBh
ZGRyKSB7CiAgICAgLy8gVE9ETyhwdGhhdGNoZXIpOiAgUmVtb3ZlIEdUVVJOLgogICAgIC8vIEdl
bmVyYXRlIGEgdXNlcm5hbWUgd2l0aCBsZW5ndGggb2YgMTYgZm9yIEd0dXJuIG9ubHkuCiAgICAg
c3RkOjpzdHJpbmcgdXNlcm5hbWUgPSBydGM6OkNyZWF0ZVJhbmRvbVN0cmluZyhrR3R1cm5Vc2Vy
TmFtZUxlbmd0aCk7CkBAIC01NTgsOSArNTUzLDEwIEBAIGNsYXNzIFBvcnRUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgLy8gVE9E
Tyg/KTogQWRkIGFuIGV4dGVybmFsIGFkZHJlc3MgZm9yIGV4dF9wcm90bywgc28gdGhhdCB0aGUK
ICAgICAvLyBvdGhlciBzaWRlIGNhbiBjb25uZWN0IHRvIHRoaXMgcG9ydCB1c2luZyBhIG5vbi1V
RFAgcHJvdG9jb2wuCiAgIH0KLSAgcnRjOjpOQVRTZXJ2ZXIqIENyZWF0ZU5hdFNlcnZlcihjb25z
dCBTb2NrZXRBZGRyZXNzJiBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJ0Yzo6TkFUVHlwZSB0eXBlKSB7Ci0gICAgcmV0dXJuIG5ldyBydGM6Ok5BVFNlcnZlcih0eXBl
LCBzc18uZ2V0KCksIGFkZHIsIGFkZHIsIHNzXy5nZXQoKSwgYWRkcik7CisgIHN0ZDo6dW5pcXVl
X3B0cjxydGM6Ok5BVFNlcnZlcj4gQ3JlYXRlTmF0U2VydmVyKGNvbnN0IFNvY2tldEFkZHJlc3Mm
IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJ0Yzo6TkFUVHlwZSB0eXBlKSB7CisgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPHJ0Yzo6
TkFUU2VydmVyPih0eXBlLCBzc18uZ2V0KCksIGFkZHIsIGFkZHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc18uZ2V0KCksIGFkZHIpOwogICB9CiAgIHN0
YXRpYyBjb25zdCBjaGFyKiBTdHVuTmFtZShOQVRUeXBlIHR5cGUpIHsKICAgICBzd2l0Y2ggKHR5
cGUpIHsKQEAgLTYxMiw5ICs2MDgsOSBAQCBjbGFzcyBQb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogCiAgIC8vIFRoaXMgZG9lcyBh
bGwgdGhlIHdvcmsgYW5kIHRoZW4gZGVsZXRlcyB8cG9ydDF8IGFuZCB8cG9ydDJ8LgogICB2b2lk
IFRlc3RDb25uZWN0aXZpdHkoY29uc3QgY2hhciogbmFtZTEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBQb3J0KiBwb3J0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQb3J0PiBwb3J0MSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUy
LAotICAgICAgICAgICAgICAgICAgICAgICAgUG9ydCogcG9ydDIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gcG9ydDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGFjY2VwdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2FtZV9hZGRy
MSwKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2FtZV9hZGRyMiwKQEAgLTY4MCwxNyAr
Njc2LDE3IEBAIGNsYXNzIFBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiB7CiAKICAgdm9pZCBUZXN0VGNwUmVjb25uZWN0KGJvb2wgcGlu
Z19hZnRlcl9kaXNjb25uZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlbmRf
YWZ0ZXJfZGlzY29ubmVjdGVkKSB7Ci0gICAgUG9ydCogcG9ydDEgPSBDcmVhdGVUY3BQb3J0KGtM
b2NhbEFkZHIxKTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7
CiAgICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7Ci0g
ICAgUG9ydCogcG9ydDIgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIyKTsKKyAgICBhdXRvIHBv
cnQyID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMik7CiAgICAgcG9ydDItPlNldEljZVJvbGUo
Y3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKIAogICAgIHBvcnQxLT5zZXRfY29tcG9uZW50
KGNyaWNrZXQ6OklDRV9DQU5ESURBVEVfQ09NUE9ORU5UX0RFRkFVTFQpOwogICAgIHBvcnQyLT5z
ZXRfY29tcG9uZW50KGNyaWNrZXQ6OklDRV9DQU5ESURBVEVfQ09NUE9ORU5UX0RFRkFVTFQpOwog
CiAgICAgLy8gU2V0IHVwIGNoYW5uZWxzIGFuZCBlbnN1cmUgYm90aCBwb3J0cyB3aWxsIGJlIGRl
bGV0ZWQuCi0gICAgVGVzdENoYW5uZWwgY2gxKHBvcnQxKTsKLSAgICBUZXN0Q2hhbm5lbCBjaDIo
cG9ydDIpOworICAgIFRlc3RDaGFubmVsIGNoMShzdGQ6Om1vdmUocG9ydDEpKTsKKyAgICBUZXN0
Q2hhbm5lbCBjaDIoc3RkOjptb3ZlKHBvcnQyKSk7CiAgICAgRVhQRUNUX0VRKDAsIGNoMS5jb21w
bGV0ZV9jb3VudCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgY2gyLmNvbXBsZXRlX2NvdW50KCkpOwog
CkBAIC03MDAsNyArNjk2LDcgQEAgY2xhc3MgUG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCwgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICBBU1NFUlRfRVFfV0FJVCgxLCBj
aDIuY29tcGxldGVfY291bnQoKSwga0RlZmF1bHRUaW1lb3V0KTsKIAogICAgIC8vIEluaXRpYWwg
Y29ubmVjdGluZyB0aGUgY2hhbm5lbCwgY3JlYXRlIGNvbm5lY3Rpb24gb24gY2hhbm5lbDEuCi0g
ICAgY2gxLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKHBvcnQyKSk7CisgICAgY2gxLkNy
ZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNoMi5wb3J0KCkpKTsKICAgICBDb25uZWN0U3Rh
cnRlZENoYW5uZWxzKCZjaDEsICZjaDIpOwogCiAgICAgLy8gU2hvcnRlbiB0aGUgdGltZW91dCBw
ZXJpb2QuCkBAIC03NTMsNDMgKzc0OSw0NSBAQCBjbGFzcyBQb3J0VGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIEVYUEVDVF9UUlVF
X1dBSVQoY2gyLmNvbm4oKSA9PSBOVUxMLCBrRGVmYXVsdFRpbWVvdXQpOwogICB9CiAKLSAgSWNl
TWVzc2FnZSogQ3JlYXRlU3R1bk1lc3NhZ2UoaW50IHR5cGUpIHsKLSAgICBJY2VNZXNzYWdlKiBt
c2cgPSBuZXcgSWNlTWVzc2FnZSgpOworICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gQ3Jl
YXRlU3R1bk1lc3NhZ2UoaW50IHR5cGUpIHsKKyAgICBhdXRvIG1zZyA9IGFic2w6Om1ha2VfdW5p
cXVlPEljZU1lc3NhZ2U+KCk7CiAgICAgbXNnLT5TZXRUeXBlKHR5cGUpOwogICAgIG1zZy0+U2V0
VHJhbnNhY3Rpb25JRCgiVEVTVFRFU1RURVNUIik7CiAgICAgcmV0dXJuIG1zZzsKICAgfQotICBJ
Y2VNZXNzYWdlKiBDcmVhdGVTdHVuTWVzc2FnZVdpdGhVc2VybmFtZShpbnQgdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHVzZXJuYW1lKSB7Ci0gICAgSWNlTWVzc2FnZSogbXNnID0gQ3JlYXRlU3R1bk1lc3NhZ2UodHlw
ZSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxJY2VNZXNzYWdlPiBDcmVhdGVTdHVuTWVzc2FnZVdpdGhV
c2VybmFtZSgKKyAgICAgIGludCB0eXBlLAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJu
YW1lKSB7CisgICAgc3RkOjp1bmlxdWVfcHRyPEljZU1lc3NhZ2U+IG1zZyA9IENyZWF0ZVN0dW5N
ZXNzYWdlKHR5cGUpOwogICAgIG1zZy0+QWRkQXR0cmlidXRlKGFic2w6Om1ha2VfdW5pcXVlPFN0
dW5CeXRlU3RyaW5nQXR0cmlidXRlPigKICAgICAgICAgU1RVTl9BVFRSX1VTRVJOQU1FLCB1c2Vy
bmFtZSkpOwogICAgIHJldHVybiBtc2c7CiAgIH0KLSAgVGVzdFBvcnQqIENyZWF0ZVRlc3RQb3J0
KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCkgewotICAgIFRlc3RQb3J0KiBwb3J0ID0g
bmV3IFRlc3RQb3J0KCZtYWluXywgInRlc3QiLCAmc29ja2V0X2ZhY3RvcnlfLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2VOZXR3b3JrKGFkZHIpLCAwLCAwLCB1c2VybmFt
ZSwgcGFzc3dvcmQpOworICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IENyZWF0ZVRlc3RQb3J0
KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBh
c3N3b3JkKSB7CisgICAgYXV0byBwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8VGVzdFBvcnQ+KCZt
YWluXywgInRlc3QiLCAmc29ja2V0X2ZhY3RvcnlfLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNYWtlTmV0d29yayhhZGRyKSwgMCwgMCwgdXNlcm5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkKTsKICAg
ICBwb3J0LT5TaWduYWxSb2xlQ29uZmxpY3QuY29ubmVjdCh0aGlzLCAmUG9ydFRlc3Q6Ok9uUm9s
ZUNvbmZsaWN0KTsKICAgICByZXR1cm4gcG9ydDsKICAgfQotICBUZXN0UG9ydCogQ3JlYXRlVGVz
dFBvcnQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JpY2tldDo6SWNlUm9sZSByb2xlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHRpZWJyZWFrZXIpIHsKLSAgICBUZXN0UG9ydCogcG9ydCA9IENyZWF0ZVRlc3RQb3J0
KGFkZHIsIHVzZXJuYW1lLCBwYXNzd29yZCk7CisgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4g
Q3JlYXRlVGVzdFBvcnQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2Vy
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JpY2tldDo6SWNlUm9sZSByb2xlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCB0aWVicmVha2VyKSB7CisgICAgYXV0byBwb3J0ID0gQ3Jl
YXRlVGVzdFBvcnQoYWRkciwgdXNlcm5hbWUsIHBhc3N3b3JkKTsKICAgICBwb3J0LT5TZXRJY2VS
b2xlKHJvbGUpOwogICAgIHBvcnQtPlNldEljZVRpZWJyZWFrZXIodGllYnJlYWtlcik7CiAgICAg
cmV0dXJuIHBvcnQ7CiAgIH0KICAgLy8gT3ZlcmxvYWQgdG8gY3JlYXRlIGEgdGVzdCBwb3J0IGdp
dmVuIGFuIHJ0Yzo6TmV0d29yayBkaXJlY3RseS4KLSAgVGVzdFBvcnQqIENyZWF0ZVRlc3RQb3J0
KHJ0Yzo6TmV0d29yayogbmV0d29yaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCkgewotICAgIFRlc3RQb3J0KiBwb3J0ID0gbmV3IFRlc3RQ
b3J0KCZtYWluXywgInRlc3QiLCAmc29ja2V0X2ZhY3RvcnlfLCBuZXR3b3JrLCAwLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHVzZXJuYW1lLCBwYXNzd29yZCk7CisgIHN0
ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gQ3JlYXRlVGVzdFBvcnQocnRjOjpOZXR3b3JrKiBuZXR3
b3JrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiB1c2VybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQpIHsKKyAgICBhdXRvIHBvcnQgPSBh
YnNsOjptYWtlX3VuaXF1ZTxUZXN0UG9ydD4oJm1haW5fLCAidGVzdCIsICZzb2NrZXRfZmFjdG9y
eV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmss
IDAsIDAsIHVzZXJuYW1lLCBwYXNzd29yZCk7CiAgICAgcG9ydC0+U2lnbmFsUm9sZUNvbmZsaWN0
LmNvbm5lY3QodGhpcywgJlBvcnRUZXN0OjpPblJvbGVDb25mbGljdCk7CiAgICAgcmV0dXJuIHBv
cnQ7CiAgIH0KQEAgLTgzNCw5ICs4MzIsOSBAQCBjbGFzcyBQb3J0VGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogfTsKIAogdm9pZCBQb3J0
VGVzdDo6VGVzdENvbm5lY3Rpdml0eShjb25zdCBjaGFyKiBuYW1lMSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUG9ydCogcG9ydDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBwb3J0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBvcnQqIHBvcnQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UG9ydD4gcG9ydDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgYWNjZXB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhbWVf
YWRkcjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2FtZV9hZGRyMiwK
QEAgLTg0Nyw4ICs4NDUsOCBAQCB2b2lkIFBvcnRUZXN0OjpUZXN0Q29ubmVjdGl2aXR5KGNvbnN0
IGNoYXIqIG5hbWUxLAogICBwb3J0Mi0+c2V0X2NvbXBvbmVudChjcmlja2V0OjpJQ0VfQ0FORElE
QVRFX0NPTVBPTkVOVF9ERUZBVUxUKTsKIAogICAvLyBTZXQgdXAgY2hhbm5lbHMgYW5kIGVuc3Vy
ZSBib3RoIHBvcnRzIHdpbGwgYmUgZGVsZXRlZC4KLSAgVGVzdENoYW5uZWwgY2gxKHBvcnQxKTsK
LSAgVGVzdENoYW5uZWwgY2gyKHBvcnQyKTsKKyAgVGVzdENoYW5uZWwgY2gxKHN0ZDo6bW92ZShw
b3J0MSkpOworICBUZXN0Q2hhbm5lbCBjaDIoc3RkOjptb3ZlKHBvcnQyKSk7CiAgIEVYUEVDVF9F
USgwLCBjaDEuY29tcGxldGVfY291bnQoKSk7CiAgIEVYUEVDVF9FUSgwLCBjaDIuY29tcGxldGVf
Y291bnQoKSk7CiAKQEAgLTg1OSw3ICs4NTcsNyBAQCB2b2lkIFBvcnRUZXN0OjpUZXN0Q29ubmVj
dGl2aXR5KGNvbnN0IGNoYXIqIG5hbWUxLAogICBBU1NFUlRfRVFfU0lNVUxBVEVEX1dBSVQoMSwg
Y2gyLmNvbXBsZXRlX2NvdW50KCksIGtEZWZhdWx0VGltZW91dCwgY2xvY2spOwogCiAgIC8vIFNl
bmQgYSBwaW5nIGZyb20gc3JjIHRvIGRzdC4gVGhpcyBtYXkgb3IgbWF5IG5vdCBtYWtlIGl0Lgot
ICBjaDEuQ3JlYXRlQ29ubmVjdGlvbihHZXRDYW5kaWRhdGUocG9ydDIpKTsKKyAgY2gxLkNyZWF0
ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNoMi5wb3J0KCkpKTsKICAgQVNTRVJUX1RSVUUoY2gx
LmNvbm4oKSAhPSBOVUxMKTsKICAgRVhQRUNUX1RSVUVfU0lNVUxBVEVEX1dBSVQoY2gxLmNvbm4o
KS0+Y29ubmVjdGVkKCksIGtEZWZhdWx0VGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xvY2spOyAgLy8gZm9yIFRDUCBjb25uZWN0CkBAIC04NzAsMTYgKzg2OCwxNiBAQCB2
b2lkIFBvcnRUZXN0OjpUZXN0Q29ubmVjdGl2aXR5KGNvbnN0IGNoYXIqIG5hbWUxLAogICAgIC8v
IFdlIGFyZSBhYmxlIHRvIHNlbmQgYSBwaW5nIGZyb20gc3JjIHRvIGRzdC4gVGhpcyBpcyB0aGUg
Y2FzZSB3aGVuCiAgICAgLy8gc2VuZGluZyB0byBVRFAgcG9ydHMgYW5kIGNvbmUgTkFUcy4KICAg
ICBFWFBFQ1RfVFJVRShjaDEucmVtb3RlX2FkZHJlc3MoKS5Jc05pbCgpKTsKLSAgICBFWFBFQ1Rf
RVEoY2gyLnJlbW90ZV9mcmFnbWVudCgpLCBwb3J0MS0+dXNlcm5hbWVfZnJhZ21lbnQoKSk7Cisg
ICAgRVhQRUNUX0VRKGNoMi5yZW1vdGVfZnJhZ21lbnQoKSwgY2gxLnBvcnQoKS0+dXNlcm5hbWVf
ZnJhZ21lbnQoKSk7CiAKICAgICAvLyBFbnN1cmUgdGhlIHBpbmcgY2FtZSBmcm9tIHRoZSBzYW1l
IGFkZHJlc3MgdXNlZCBmb3Igc3JjLgogICAgIC8vIFRoaXMgaXMgdGhlIGNhc2UgdW5sZXNzIHRo
ZSBzb3VyY2UgTkFUIHdhcyBzeW1tZXRyaWMuCiAgICAgaWYgKHNhbWVfYWRkcjEpCi0gICAgICBF
WFBFQ1RfRVEoY2gyLnJlbW90ZV9hZGRyZXNzKCksIEdldEFkZHJlc3MocG9ydDEpKTsKKyAgICAg
IEVYUEVDVF9FUShjaDIucmVtb3RlX2FkZHJlc3MoKSwgR2V0QWRkcmVzcyhjaDEucG9ydCgpKSk7
CiAgICAgRVhQRUNUX1RSVUUoc2FtZV9hZGRyMik7CiAKICAgICAvLyBTZW5kIGEgcGluZyBmcm9t
IGRzdCB0byBzcmMuCi0gICAgY2gyLkFjY2VwdENvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKHBvcnQx
KSk7CisgICAgY2gyLkFjY2VwdENvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNoMS5wb3J0KCkpKTsK
ICAgICBBU1NFUlRfVFJVRShjaDIuY29ubigpICE9IE5VTEwpOwogICAgIGNoMi5QaW5nKCk7CiAg
ICAgRVhQRUNUX0VRX1NJTVVMQVRFRF9XQUlUKENvbm5lY3Rpb246OlNUQVRFX1dSSVRBQkxFLApA
QCAtODkxLDcgKzg4OSw3IEBAIHZvaWQgUG9ydFRlc3Q6OlRlc3RDb25uZWN0aXZpdHkoY29uc3Qg
Y2hhciogbmFtZTEsCiAgICAgRVhQRUNUX1RSVUUoY2gyLnJlbW90ZV9hZGRyZXNzKCkuSXNOaWwo
KSk7CiAKICAgICAvLyBTZW5kIGEgcGluZyBmcm9tIGRzdCB0byBzcmMuIEFnYWluLCB0aGlzIG1h
eSBvciBtYXkgbm90IG1ha2UgaXQuCi0gICAgY2gyLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlk
YXRlKHBvcnQxKSk7CisgICAgY2gyLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNoMS5w
b3J0KCkpKTsKICAgICBBU1NFUlRfVFJVRShjaDIuY29ubigpICE9IE5VTEwpOwogICAgIGNoMi5Q
aW5nKCk7CiAgICAgU0lNVUxBVEVEX1dBSVQoY2gyLmNvbm4oKS0+d3JpdGVfc3RhdGUoKSA9PSBD
b25uZWN0aW9uOjpTVEFURV9XUklUQUJMRSwKQEAgLTkyNSw3ICs5MjMsNyBAQCB2b2lkIFBvcnRU
ZXN0OjpUZXN0Q29ubmVjdGl2aXR5KGNvbnN0IGNoYXIqIG5hbWUxLAogICAgICAgRVhQRUNUX1RS
VUUoY2gxLnJlbW90ZV9hZGRyZXNzKCkuSXNOaWwoKSk7CiAKICAgICAgIC8vIFBpY2sgdXAgdGhl
IGFjdHVhbCBhZGRyZXNzIGFuZCBlc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24uCi0gICAgICBjaDIu
QWNjZXB0Q29ubmVjdGlvbihHZXRDYW5kaWRhdGUocG9ydDEpKTsKKyAgICAgIGNoMi5BY2NlcHRD
b25uZWN0aW9uKEdldENhbmRpZGF0ZShjaDEucG9ydCgpKSk7CiAgICAgICBBU1NFUlRfVFJVRShj
aDIuY29ubigpICE9IE5VTEwpOwogICAgICAgY2gyLlBpbmcoKTsKICAgICAgIEVYUEVDVF9FUV9T
SU1VTEFURURfV0FJVChDb25uZWN0aW9uOjpTVEFURV9XUklUQUJMRSwKQEAgLTkzOCw3ICs5MzYs
NyBAQCB2b2lkIFBvcnRUZXN0OjpUZXN0Q29ubmVjdGl2aXR5KGNvbnN0IGNoYXIqIG5hbWUxLAog
ICAgICAgRVhQRUNUX0ZBTFNFKGNoMS5jb25uKCktPnJlY2VpdmluZygpKTsKIAogICAgICAgLy8g
VXBkYXRlIG91ciBhZGRyZXNzIGFuZCBjb21wbGV0ZSB0aGUgY29ubmVjdGlvbi4KLSAgICAgIGNo
MS5BY2NlcHRDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0MikpOworICAgICAgY2gxLkFjY2Vw
dENvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNoMi5wb3J0KCkpKTsKICAgICAgIGNoMS5QaW5nKCk7
CiAgICAgICBFWFBFQ1RfRVFfU0lNVUxBVEVEX1dBSVQoQ29ubmVjdGlvbjo6U1RBVEVfV1JJVEFC
TEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2gxLmNvbm4oKS0+d3JpdGVfc3Rh
dGUoKSwga0RlZmF1bHRUaW1lb3V0LApAQCAtMTI2MSwxMiArMTI1OSwxMiBAQCBURVNUX0YoUG9y
dFRlc3QsIFRlc3RUY3BSZWNvbm5lY3RUaW1lb3V0KSB7CiAvLyBUZXN0IHdoZW4gVGNwQ29ubmVj
dGlvbiBuZXZlciBjb25uZWN0cywgdGhlIE9uQ2xvc2UoKSB3aWxsIGJlIGNhbGxlZCB0bwogLy8g
ZGVzdHJveSB0aGUgY29ubmVjdGlvbi4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdFRjcE5ldmVyQ29u
bmVjdCkgewotICBQb3J0KiBwb3J0MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpOworICBh
dXRvIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHBvcnQxLT5TZXRJY2VS
b2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwogICBwb3J0MS0+c2V0X2NvbXBvbmVu
dChjcmlja2V0OjpJQ0VfQ0FORElEQVRFX0NPTVBPTkVOVF9ERUZBVUxUKTsKIAogICAvLyBTZXQg
dXAgYSBjaGFubmVsIGFuZCBlbnN1cmUgdGhlIHBvcnQgd2lsbCBiZSBkZWxldGVkLgotICBUZXN0
Q2hhbm5lbCBjaDEocG9ydDEpOworICBUZXN0Q2hhbm5lbCBjaDEoc3RkOjptb3ZlKHBvcnQxKSk7
CiAgIEVYUEVDVF9FUSgwLCBjaDEuY29tcGxldGVfY291bnQoKSk7CiAKICAgY2gxLlN0YXJ0KCk7
CkBAIC0xMjc3LDcgKzEyNzUsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RUY3BOZXZlckNvbm5l
Y3QpIHsKICAgLy8gQmluZCBidXQgbm90IGxpc3Rlbi4KICAgRVhQRUNUX0VRKDAsIHNlcnZlci0+
QmluZChrTG9jYWxBZGRyMikpOwogCi0gIENhbmRpZGF0ZSBjID0gR2V0Q2FuZGlkYXRlKHBvcnQx
KTsKKyAgQ2FuZGlkYXRlIGMgPSBHZXRDYW5kaWRhdGUoY2gxLnBvcnQoKSk7CiAgIGMuc2V0X2Fk
ZHJlc3Moc2VydmVyLT5HZXRMb2NhbEFkZHJlc3MoKSk7CiAKICAgY2gxLkNyZWF0ZUNvbm5lY3Rp
b24oYyk7CkBAIC0xMzEyLDEwICsxMzEwLDggQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0U3NsVGNw
VG9Tc2xUY3BSZWxheSkgewogLy8gaWkpIGl0IGhhcyBub3QgcmVjZWl2ZWQgYW55dGhpbmcgZm9y
IERFQURfQ09OTkVDVElPTl9SRUNFSVZFX1RJTUVPVVQKIC8vICAgICBtaWxsaXNlY29uZHMgc2lu
Y2UgbGFzdCByZWNlaXZpbmcuCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RDb25uZWN0aW9uRGVhZCkg
ewotICBVRFBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwotICBVRFBQ
b3J0KiBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOwotICBUZXN0Q2hhbm5lbCBj
aDEocG9ydDEpOwotICBUZXN0Q2hhbm5lbCBjaDIocG9ydDIpOworICBUZXN0Q2hhbm5lbCBjaDEo
Q3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSkpOworICBUZXN0Q2hhbm5lbCBjaDIoQ3JlYXRlVWRw
UG9ydChrTG9jYWxBZGRyMikpOwogICAvLyBBY3F1aXJlIGFkZHJlc3MuCiAgIGNoMS5TdGFydCgp
OwogICBjaDIuU3RhcnQoKTsKQEAgLTEzMjQsNyArMTMyMCw3IEBAIFRFU1RfRihQb3J0VGVzdCwg
VGVzdENvbm5lY3Rpb25EZWFkKSB7CiAKICAgLy8gVGVzdCBjYXNlIHRoYXQgdGhlIGNvbm5lY3Rp
b24gaGFzIG5ldmVyIHJlY2VpdmVkIGFueXRoaW5nLgogICBpbnQ2NF90IGJlZm9yZV9jcmVhdGVk
ID0gcnRjOjpUaW1lTWlsbGlzKCk7Ci0gIGNoMS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0
ZShwb3J0MikpOworICBjaDEuQ3JlYXRlQ29ubmVjdGlvbihHZXRDYW5kaWRhdGUoY2gyLnBvcnQo
KSkpOwogICBpbnQ2NF90IGFmdGVyX2NyZWF0ZWQgPSBydGM6OlRpbWVNaWxsaXMoKTsKICAgQ29u
bmVjdGlvbiogY29ubiA9IGNoMS5jb25uKCk7CiAgIEFTU0VSVF9ORShjb25uLCBudWxscHRyKTsK
QEAgLTEzNDMsNyArMTMzOSw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdENvbm5lY3Rpb25EZWFk
KSB7CiAKICAgLy8gVGVzdCBjYXNlIHRoYXQgdGhlIGNvbm5lY3Rpb24gaGFzIHJlY2VpdmVkIHNv
bWV0aGluZy4KICAgLy8gQ3JlYXRlIGEgY29ubmVjdGlvbiBhZ2FpbiBhbmQgcmVjZWl2ZSBhIHBp
bmcuCi0gIGNoMS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0MikpOworICBjaDEu
Q3JlYXRlQ29ubmVjdGlvbihHZXRDYW5kaWRhdGUoY2gyLnBvcnQoKSkpOwogICBjb25uID0gY2gx
LmNvbm4oKTsKICAgQVNTRVJUX05FKGNvbm4sIG51bGxwdHIpOwogICBpbnQ2NF90IGJlZm9yZV9s
YXN0X3JlY2VpdmluZyA9IHJ0Yzo6VGltZU1pbGxpcygpOwpAQCAtMTM2MiwxNCArMTM1OCwxNSBA
QCBURVNUX0YoUG9ydFRlc3QsIFRlc3RDb25uZWN0aW9uRGVhZCkgewogLy8gdmVyaWZpZXMgTWVz
c2FnZSBJbnRlZ3JpdHkgYXR0cmlidXRlIGluIFNUVU4gbWVzc2FnZXMgYW5kIHVzZXJuYW1lIGlu
IFNUVU4KIC8vIGJpbmRpbmcgcmVxdWVzdCB3aWxsIGhhdmUgY29sb24gKCI6IikgYmV0d2VlbiBy
ZW1vdGUgYW5kIGxvY2FsIHVzZXJuYW1lLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0TG9jYWxUb0xv
Y2FsU3RhbmRhcmQpIHsKLSAgVURQUG9ydCogcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFk
ZHIxKTsKKyAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwogICBwb3J0
MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgcG9ydDEtPlNl
dEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKLSAgVURQUG9ydCogcG9ydDIgPSBDcmVhdGVV
ZHBQb3J0KGtMb2NhbEFkZHIyKTsKKyAgYXV0byBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2Fs
QWRkcjIpOwogICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQp
OwogICBwb3J0Mi0+U2V0SWNlVGllYnJlYWtlcihrVGllYnJlYWtlcjIpOwogICAvLyBTYW1lIHBh
cmFtZXRlcnMgYXMgVGVzdExvY2FsVG9Mb2NhbCBhYm92ZS4KLSAgVGVzdENvbm5lY3Rpdml0eSgi
dWRwIiwgcG9ydDEsICJ1ZHAiLCBwb3J0MiwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgIFRl
c3RDb25uZWN0aXZpdHkoInVkcCIsIHN0ZDo6bW92ZShwb3J0MSksICJ1ZHAiLCBzdGQ6Om1vdmUo
cG9ydDIpLCB0cnVlLCB0cnVlLAorICAgICAgICAgICAgICAgICAgIHRydWUsIHRydWUpOwogfQog
CiAvLyBUaGlzIHRlc3QgaXMgdHJ5aW5nIHRvIHZhbGlkYXRlIGEgc3VjY2Vzc2Z1bCBhbmQgZmFp
bHVyZSBzY2VuYXJpbyBpbiBhCkBAIC0xMzc3LDggKzEzNzQsNyBAQCBURVNUX0YoUG9ydFRlc3Qs
IFRlc3RMb2NhbFRvTG9jYWxTdGFuZGFyZCkgewogLy8gc2hvdWxkIHJlbWFpbiBlcXVhbCB0byB0
aGUgcmVxdWVzdCBnZW5lcmF0ZWQgYnkgdGhlIHBvcnQgYW5kIHJvbGUgb2YgcG9ydAogLy8gbXVz
dCBiZSBpbiBjb250cm9sbGluZy4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdExvb3BiYWNrQ2FsbCkg
ewotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IGxwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBv
cnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpKTsKKyAgYXV0byBscG9ydCA9IENyZWF0
ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3MiKTsKICAgbHBvcnQtPlNldElj
ZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIGxwb3J0LT5TZXRJY2VUaWVi
cmVha2VyKGtUaWVicmVha2VyMSk7CiAgIGxwb3J0LT5QcmVwYXJlQWRkcmVzcygpOwpAQCAtMTM5
MSw3ICsxMzg3LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0TG9vcGJhY2tDYWxsKSB7CiAgIElj
ZU1lc3NhZ2UqIG1zZyA9IGxwb3J0LT5sYXN0X3N0dW5fbXNnKCk7CiAgIEVYUEVDVF9FUShTVFVO
X0JJTkRJTkdfUkVRVUVTVCwgbXNnLT50eXBlKCkpOwogICBjb25uLT5PblJlYWRQYWNrZXQobHBv
cnQtPmxhc3Rfc3R1bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAg
bHBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICBscG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIC8qIHBhY2tl
dF90aW1lX3VzICovIC0xKTsKICAgQVNTRVJUX1RSVUVfV0FJVChscG9ydC0+bGFzdF9zdHVuX21z
ZygpICE9IE5VTEwsIGtEZWZhdWx0VGltZW91dCk7CiAgIG1zZyA9IGxwb3J0LT5sYXN0X3N0dW5f
bXNnKCk7CiAgIEVYUEVDVF9FUShTVFVOX0JJTkRJTkdfUkVTUE9OU0UsIG1zZy0+dHlwZSgpKTsK
QEAgLTE0MjIsOSArMTQxOCw5IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdExvb3BiYWNrQ2FsbCkg
ewogICBtb2RpZmllZF9yZXEtPkFkZEZpbmdlcnByaW50KCk7CiAKICAgbHBvcnQtPlJlc2V0KCk7
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxCeXRlQnVmZmVyV3JpdGVyPiBidWYobmV3IEJ5dGVCdWZmZXJX
cml0ZXIoKSk7Ci0gIFdyaXRlU3R1bk1lc3NhZ2UobW9kaWZpZWRfcmVxLmdldCgpLCBidWYuZ2V0
KCkpOwotICBjb25uMS0+T25SZWFkUGFja2V0KGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBy
dGM6OlBhY2tldFRpbWUoKSk7CisgIGF1dG8gYnVmID0gYWJzbDo6bWFrZV91bmlxdWU8Qnl0ZUJ1
ZmZlcldyaXRlcj4oKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqbW9kaWZpZWRfcmVxLCBidWYuZ2V0
KCkpOworICBjb25uMS0+T25SZWFkUGFja2V0KGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCAv
KiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIEFTU0VSVF9UUlVFX1dBSVQobHBvcnQtPmxhc3Rf
c3R1bl9tc2coKSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVvdXQpOwogICBtc2cgPSBscG9ydC0+bGFz
dF9zdHVuX21zZygpOwogICBFWFBFQ1RfRVEoU1RVTl9CSU5ESU5HX0VSUk9SX1JFU1BPTlNFLCBt
c2ctPnR5cGUoKSk7CkBAIC0xNDM2LDEyICsxNDMyLDEwIEBAIFRFU1RfRihQb3J0VGVzdCwgVGVz
dExvb3BiYWNrQ2FsbCkgewogLy8gdmFsdWUgb2YgdGllYnJlYWtlciwgd2hlbiBpdCByZWNlaXZl
cyBwaW5nIHJlcXVlc3QgZnJvbSB8cnBvcnR8IGl0IHdpbGwKIC8vIHNlbmQgcm9sZSBjb25mbGlj
dCBzaWduYWwuCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RJY2VSb2xlQ29uZmxpY3QpIHsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPFRlc3RQb3J0PiBscG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2Nh
bEFkZHIxLCAibGZyYWciLCAibHBhc3MiKSk7CisgIGF1dG8gbHBvcnQgPSBDcmVhdGVUZXN0UG9y
dChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIik7CiAgIGxwb3J0LT5TZXRJY2VSb2xlKGNy
aWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwogICBscG9ydC0+U2V0SWNlVGllYnJlYWtlcihr
VGllYnJlYWtlcjEpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAg
Q3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBy
cG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsKICAg
cnBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIHJwb3J0
LT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMik7CiAKQEAgLTE0NjAsNyArMTQ1NCw3IEBA
IFRFU1RfRihQb3J0VGVzdCwgVGVzdEljZVJvbGVDb25mbGljdCkgewogICBFWFBFQ1RfRVEoU1RV
Tl9CSU5ESU5HX1JFUVVFU1QsIG1zZy0+dHlwZSgpKTsKICAgLy8gU2VuZCBycG9ydCBiaW5kaW5n
IHJlcXVlc3QgdG8gbHBvcnQuCiAgIGxjb25uLT5PblJlYWRQYWNrZXQocnBvcnQtPmxhc3Rfc3R1
bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgIHJwb3J0LT5sYXN0
X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAg
ICAgICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMg
Ki8gLTEpOwogCiAgIEFTU0VSVF9UUlVFX1dBSVQobHBvcnQtPmxhc3Rfc3R1bl9tc2coKSAhPSBO
VUxMLCBrRGVmYXVsdFRpbWVvdXQpOwogICBFWFBFQ1RfRVEoU1RVTl9CSU5ESU5HX1JFU1BPTlNF
LCBscG9ydC0+bGFzdF9zdHVuX21zZygpLT50eXBlKCkpOwpAQCAtMTQ2OCwxMyArMTQ2MiwxMiBA
QCBURVNUX0YoUG9ydFRlc3QsIFRlc3RJY2VSb2xlQ29uZmxpY3QpIHsKIH0KIAogVEVTVF9GKFBv
cnRUZXN0LCBUZXN0VGNwTm9EZWxheSkgewotICBUQ1BQb3J0KiBwb3J0MSA9IENyZWF0ZVRjcFBv
cnQoa0xvY2FsQWRkcjEpOworICBhdXRvIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRy
MSk7CiAgIHBvcnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwog
ICBpbnQgb3B0aW9uX3ZhbHVlID0gLTE7CiAgIGludCBzdWNjZXNzID0gcG9ydDEtPkdldE9wdGlv
bihydGM6OlNvY2tldDo6T1BUX05PREVMQVksICZvcHRpb25fdmFsdWUpOwogICBBU1NFUlRfRVEo
MCwgc3VjY2Vzcyk7ICAvLyBHZXRPcHRpb24oKSBzaG91bGQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5
IHcvIDAKICAgQVNTRVJUX0VRKDEsIG9wdGlvbl92YWx1ZSk7Ci0gIGRlbGV0ZSBwb3J0MTsKIH0K
IAogVEVTVF9GKFBvcnRUZXN0LCBUZXN0RGVsYXllZEJpbmRpbmdVZHApIHsKQEAgLTE0ODIsNyAr
MTQ3NSw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdERlbGF5ZWRCaW5kaW5nVWRwKSB7CiAgIEZh
a2VQYWNrZXRTb2NrZXRGYWN0b3J5IHNvY2tldF9mYWN0b3J5OwogCiAgIHNvY2tldF9mYWN0b3J5
LnNldF9uZXh0X3VkcF9zb2NrZXQoc29ja2V0KTsKLSAgc3RkOjp1bmlxdWVfcHRyPFVEUFBvcnQ+
IHBvcnQoQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSwgJnNvY2tldF9mYWN0b3J5KSk7CisgIGF1
dG8gcG9ydCA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEsICZzb2NrZXRfZmFjdG9yeSk7CiAK
ICAgc29ja2V0LT5zZXRfc3RhdGUoQXN5bmNQYWNrZXRTb2NrZXQ6OlNUQVRFX0JJTkRJTkcpOwog
ICBwb3J0LT5QcmVwYXJlQWRkcmVzcygpOwpAQCAtMTQ5OCw3ICsxNDkxLDcgQEAgVEVTVF9GKFBv
cnRUZXN0LCBUZXN0RGVsYXllZEJpbmRpbmdUY3ApIHsKICAgRmFrZVBhY2tldFNvY2tldEZhY3Rv
cnkgc29ja2V0X2ZhY3Rvcnk7CiAKICAgc29ja2V0X2ZhY3Rvcnkuc2V0X25leHRfc2VydmVyX3Rj
cF9zb2NrZXQoc29ja2V0KTsKLSAgc3RkOjp1bmlxdWVfcHRyPFRDUFBvcnQ+IHBvcnQoQ3JlYXRl
VGNwUG9ydChrTG9jYWxBZGRyMSwgJnNvY2tldF9mYWN0b3J5KSk7CisgIGF1dG8gcG9ydCA9IENy
ZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEsICZzb2NrZXRfZmFjdG9yeSk7CiAKICAgc29ja2V0LT5z
ZXRfc3RhdGUoQXN5bmNQYWNrZXRTb2NrZXQ6OlNUQVRFX0JJTkRJTkcpOwogICBwb3J0LT5QcmVw
YXJlQWRkcmVzcygpOwpAQCAtMTUxOSwxMCArMTUxMiwxMCBAQCB2b2lkIFBvcnRUZXN0OjpUZXN0
Q3Jvc3NGYW1pbHlQb3J0cyhpbnQgdHlwZSkgewogICAgIEZha2VBc3luY1BhY2tldFNvY2tldCog
c29ja2V0ID0gbmV3IEZha2VBc3luY1BhY2tldFNvY2tldCgpOwogICAgIGlmICh0eXBlID09IFNP
Q0tfREdSQU0pIHsKICAgICAgIGZhY3Rvcnkuc2V0X25leHRfdWRwX3NvY2tldChzb2NrZXQpOwot
ICAgICAgcG9ydHNbaV0ucmVzZXQoQ3JlYXRlVWRwUG9ydChhZGRyZXNzZXNbaV0sICZmYWN0b3J5
KSk7CisgICAgICBwb3J0c1tpXSA9IENyZWF0ZVVkcFBvcnQoYWRkcmVzc2VzW2ldLCAmZmFjdG9y
eSk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IFNPQ0tfU1RSRUFNKSB7CiAgICAgICBmYWN0b3J5
LnNldF9uZXh0X3NlcnZlcl90Y3Bfc29ja2V0KHNvY2tldCk7Ci0gICAgICBwb3J0c1tpXS5yZXNl
dChDcmVhdGVUY3BQb3J0KGFkZHJlc3Nlc1tpXSwgJmZhY3RvcnkpKTsKKyAgICAgIHBvcnRzW2ld
ID0gQ3JlYXRlVGNwUG9ydChhZGRyZXNzZXNbaV0sICZmYWN0b3J5KTsKICAgICB9CiAgICAgc29j
a2V0LT5zZXRfc3RhdGUoQXN5bmNQYWNrZXRTb2NrZXQ6OlNUQVRFX0JJTkRJTkcpOwogICAgIHNv
Y2tldC0+U2lnbmFsQWRkcmVzc1JlYWR5KHNvY2tldCwgYWRkcmVzc2VzW2ldKTsKQEAgLTE1ODYs
NyArMTU3OSw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFVkcFY2Q3Jvc3NUeXBlUG9ydHMpIHsK
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICBGYWtlQXN5bmNQYWNrZXRTb2Nr
ZXQqIHNvY2tldCA9IG5ldyBGYWtlQXN5bmNQYWNrZXRTb2NrZXQoKTsKICAgICBmYWN0b3J5LnNl
dF9uZXh0X3VkcF9zb2NrZXQoc29ja2V0KTsKLSAgICBwb3J0c1tpXS5yZXNldChDcmVhdGVVZHBQ
b3J0KGFkZHJlc3Nlc1tpXSwgJmZhY3RvcnkpKTsKKyAgICBwb3J0c1tpXSA9IENyZWF0ZVVkcFBv
cnQoYWRkcmVzc2VzW2ldLCAmZmFjdG9yeSk7CiAgICAgc29ja2V0LT5zZXRfc3RhdGUoQXN5bmNQ
YWNrZXRTb2NrZXQ6OlNUQVRFX0JJTkRJTkcpOwogICAgIHNvY2tldC0+U2lnbmFsQWRkcmVzc1Jl
YWR5KHNvY2tldCwgYWRkcmVzc2VzW2ldKTsKICAgICBwb3J0c1tpXS0+UHJlcGFyZUFkZHJlc3Mo
KTsKQEAgLTE2MTEsMjggKzE2MDQsMjcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0VWRwVjZDcm9z
c1R5cGVQb3J0cykgewogLy8gZ2V0IHRocm91Z2ggRGVmYXVsdERzY3BWYWx1ZS4KIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdERlZmF1bHREc2NwVmFsdWUpIHsKICAgaW50IGRzY3A7Ci0gIHN0ZDo6dW5p
cXVlX3B0cjxVRFBQb3J0PiB1ZHBwb3J0KENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpKTsKKyAg
YXV0byB1ZHBwb3J0ID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgIEVYUEVDVF9FUSgw
LCB1ZHBwb3J0LT5TZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9EU0NQLCBydGM6OkRTQ1BfQ1M2
KSk7CiAgIEVYUEVDVF9FUSgwLCB1ZHBwb3J0LT5HZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9E
U0NQLCAmZHNjcCkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VENQUG9ydD4gdGNwcG9ydChDcmVhdGVU
Y3BQb3J0KGtMb2NhbEFkZHIxKSk7CisgIGF1dG8gdGNwcG9ydCA9IENyZWF0ZVRjcFBvcnQoa0xv
Y2FsQWRkcjEpOwogICBFWFBFQ1RfRVEoMCwgdGNwcG9ydC0+U2V0T3B0aW9uKHJ0Yzo6U29ja2V0
OjpPUFRfRFNDUCwgcnRjOjpEU0NQX0FGMzEpKTsKICAgRVhQRUNUX0VRKDAsIHRjcHBvcnQtPkdl
dE9wdGlvbihydGM6OlNvY2tldDo6T1BUX0RTQ1AsICZkc2NwKSk7CiAgIEVYUEVDVF9FUShydGM6
OkRTQ1BfQUYzMSwgZHNjcCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxTdHVuUG9ydD4gc3R1bnBvcnQo
Ci0gICAgICBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgp
KSk7CisgIGF1dG8gc3R1bnBvcnQgPSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3Nv
Y2tldF9mYWN0b3J5MSgpKTsKICAgRVhQRUNUX0VRKDAsIHN0dW5wb3J0LT5TZXRPcHRpb24ocnRj
OjpTb2NrZXQ6Ok9QVF9EU0NQLCBydGM6OkRTQ1BfQUY0MSkpOwogICBFWFBFQ1RfRVEoMCwgc3R1
bnBvcnQtPkdldE9wdGlvbihydGM6OlNvY2tldDo6T1BUX0RTQ1AsICZkc2NwKSk7CiAgIEVYUEVD
VF9FUShydGM6OkRTQ1BfQUY0MSwgZHNjcCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUdXJuUG9ydD4g
dHVybnBvcnQxKAotICAgICAgQ3JlYXRlVHVyblBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRf
ZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQUk9UT19VRFApKTsKKyAgYXV0byB0dXJucG9ydDEgPQor
ICAgICAgQ3JlYXRlVHVyblBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwg
UFJPVE9fVURQLCBQUk9UT19VRFApOwogICAvLyBTb2NrZXQgaXMgY3JlYXRlZCBpbiBQcmVwYXJl
QWRkcmVzcy4KICAgdHVybnBvcnQxLT5QcmVwYXJlQWRkcmVzcygpOwogICBFWFBFQ1RfRVEoMCwg
dHVybnBvcnQxLT5TZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9EU0NQLCBydGM6OkRTQ1BfQ1M3
KSk7CiAgIEVYUEVDVF9FUSgwLCB0dXJucG9ydDEtPkdldE9wdGlvbihydGM6OlNvY2tldDo6T1BU
X0RTQ1AsICZkc2NwKSk7CiAgIEVYUEVDVF9FUShydGM6OkRTQ1BfQ1M3LCBkc2NwKTsKICAgLy8g
VGhpcyB3aWxsIHZlcmlmeSBjb3JyZWN0IHZhbHVlIHJldHVybmVkIHdpdGhvdXQgdGhlIHNvY2tl
dC4KLSAgc3RkOjp1bmlxdWVfcHRyPFR1cm5Qb3J0PiB0dXJucG9ydDIoCi0gICAgICBDcmVhdGVU
dXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBS
T1RPX1VEUCkpOworICBhdXRvIHR1cm5wb3J0MiA9CisgICAgICBDcmVhdGVUdXJuUG9ydChrTG9j
YWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VEUCk7CiAg
IEVYUEVDVF9FUSgwLCB0dXJucG9ydDItPlNldE9wdGlvbihydGM6OlNvY2tldDo6T1BUX0RTQ1As
IHJ0Yzo6RFNDUF9DUzYpKTsKICAgRVhQRUNUX0VRKDAsIHR1cm5wb3J0Mi0+R2V0T3B0aW9uKHJ0
Yzo6U29ja2V0OjpPUFRfRFNDUCwgJmRzY3ApKTsKICAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9DUzYs
IGRzY3ApOwpAQCAtMTY0MCwxMCArMTYzMiw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdERlZmF1
bHREc2NwVmFsdWUpIHsKIAogLy8gVGVzdCBzZW5kaW5nIFNUVU4gbWVzc2FnZXMuCiBURVNUX0Yo
UG9ydFRlc3QsIFRlc3RTZW5kU3R1bk1lc3NhZ2UpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQ
b3J0PiBscG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAi
bHBhc3MiKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBDcmVh
dGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIikpOworICBhdXRvIGxwb3J0
ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpOworICBhdXRv
IHJwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwog
ICBscG9ydC0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBv
cnQtPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKICAgcnBvcnQtPlNldEljZVJvbGUo
Y3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKQEAgLTE2ODksMTcgKzE2NzksMTcgQEAgVEVT
VF9GKFBvcnRUZXN0LCBUZXN0U2VuZFN0dW5NZXNzYWdlKSB7CiAgIEFTU0VSVF9UUlVFKG1zZy0+
R2V0VUludDMyKFNUVU5fQVRUUl9SRVRSQU5TTUlUX0NPVU5UKSA9PSBOVUxMKTsKIAogICAvLyBT
YXZlIGEgY29weSBvZiB0aGUgQklORElORy1SRVFVRVNUIGZvciB1c2UgYmVsb3cuCi0gIHN0ZDo6
dW5pcXVlX3B0cjxJY2VNZXNzYWdlPiByZXF1ZXN0KENvcHlTdHVuTWVzc2FnZShtc2cpKTsKKyAg
c3RkOjp1bmlxdWVfcHRyPEljZU1lc3NhZ2U+IHJlcXVlc3QgPSBDb3B5U3R1bk1lc3NhZ2UoKm1z
Zyk7CiAKICAgLy8gUmVjZWl2ZSB0aGUgQklORElORy1SRVFVRVNUIGFuZCByZXNwb25kIHdpdGgg
QklORElORy1SRVNQT05TRS4KICAgcmNvbm4tPk9uUmVhZFBhY2tldChscG9ydC0+bGFzdF9zdHVu
X2J1ZigpLT5kYXRhPGNoYXI+KCksCi0gICAgICAgICAgICAgICAgICAgICAgbHBvcnQtPmxhc3Rf
c3R1bl9idWYoKS0+c2l6ZSgpLCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgbHBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCAvKiBwYWNrZXRfdGltZV91cyAq
LyAtMSk7CiAgIG1zZyA9IHJwb3J0LT5sYXN0X3N0dW5fbXNnKCk7CiAgIEFTU0VSVF9UUlVFKG1z
ZyAhPSBOVUxMKTsKICAgRVhQRUNUX0VRKFNUVU5fQklORElOR19SRVNQT05TRSwgbXNnLT50eXBl
KCkpOwogICAvLyBSZWNlaXZlZCBhIEJJTkRJTkctUkVTUE9OU0UuCiAgIGxjb25uLT5PblJlYWRQ
YWNrZXQocnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAg
ICAgICAgICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1l
KCkpOworICAgICAgICAgICAgICAgICAgICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUo
KSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICAvLyBWZXJpZnkgdGhlIFNUVU4gU3RhdHMu
CiAgIEVYUEVDVF9FUSgxVSwgbGNvbm4tPnN0YXRzKCkuc2VudF9waW5nX3JlcXVlc3RzX3RvdGFs
KTsKICAgRVhQRUNUX0VRKDFVLCBsY29ubi0+c3RhdHMoKS5zZW50X3BpbmdfcmVxdWVzdHNfYmVm
b3JlX2ZpcnN0X3Jlc3BvbnNlKTsKQEAgLTE3NzcsMTMgKzE3NjcsMTMgQEAgVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0U2VuZFN0dW5NZXNzYWdlKSB7CiAgIEVYUEVDVF9FUSgyVSwgcmV0cmFuc21pdF9h
dHRyLT52YWx1ZSgpKTsKIAogICAvLyBSZXNwb25kIHdpdGggYSBCSU5ESU5HLVJFU1BPTlNFLgot
ICByZXF1ZXN0LnJlc2V0KENvcHlTdHVuTWVzc2FnZShtc2cpKTsKKyAgcmVxdWVzdCA9IENvcHlT
dHVuTWVzc2FnZSgqbXNnKTsKICAgbGNvbm4tPk9uUmVhZFBhY2tldChycG9ydC0+bGFzdF9zdHVu
X2J1ZigpLT5kYXRhPGNoYXI+KCksCi0gICAgICAgICAgICAgICAgICAgICAgcnBvcnQtPmxhc3Rf
c3R1bl9idWYoKS0+c2l6ZSgpLCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgcnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCAvKiBwYWNrZXRfdGltZV91cyAq
LyAtMSk7CiAgIG1zZyA9IGxwb3J0LT5sYXN0X3N0dW5fbXNnKCk7CiAgIC8vIFJlY2VpdmUgdGhl
IEJJTkRJTkctUkVTUE9OU0UuCiAgIHJjb25uLT5PblJlYWRQYWNrZXQobHBvcnQtPmxhc3Rfc3R1
bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0
X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAg
ICAgICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMg
Ki8gLTEpOwogCiAgIC8vIFZlcmlmeSB0aGUgU3R1biBwaW5nIHN0YXRzLgogICBFWFBFQ1RfRVEo
M1UsIHJjb25uLT5zdGF0cygpLnNlbnRfcGluZ19yZXF1ZXN0c190b3RhbCk7CkBAIC0xODA0LDEw
ICsxNzk0LDggQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0U2VuZFN0dW5NZXNzYWdlKSB7CiB9CiAK
IFRFU1RfRihQb3J0VGVzdCwgVGVzdE5vbWluYXRpb24pIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRl
c3RQb3J0PiBscG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWci
LCAibHBhc3MiKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBD
cmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIikpOworICBhdXRvIGxw
b3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpOworICBh
dXRvIHJwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIp
OwogICBscG9ydC0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAg
bHBvcnQtPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKICAgcnBvcnQtPlNldEljZVJv
bGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKQEAgLTE4MzcsNyArMTgyNSw3IEBAIFRF
U1RfRihQb3J0VGVzdCwgVGVzdE5vbWluYXRpb24pIHsKICAgQVNTRVJUX1RSVUVfV0FJVChscG9y
dC0+bGFzdF9zdHVuX21zZygpLCBrRGVmYXVsdFRpbWVvdXQpOwogICBBU1NFUlRfVFJVRShscG9y
dC0+bGFzdF9zdHVuX2J1ZigpKTsKICAgcmNvbm4tPk9uUmVhZFBhY2tldChscG9ydC0+bGFzdF9z
dHVuX2J1ZigpLT5kYXRhPGNoYXI+KCksCi0gICAgICAgICAgICAgICAgICAgICAgbHBvcnQtPmxh
c3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgbHBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCAvKiBwYWNrZXRfdGltZV91
cyAqLyAtMSk7CiAgIEVYUEVDVF9FUShub21pbmF0aW9uLCByY29ubi0+cmVtb3RlX25vbWluYXRp
b24oKSk7CiAgIEVYUEVDVF9GQUxTRShsY29ubi0+bm9taW5hdGVkKCkpOwogICBFWFBFQ1RfVFJV
RShyY29ubi0+bm9taW5hdGVkKCkpOwpAQCAtMTg0OSw3ICsxODM3LDcgQEAgVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0Tm9taW5hdGlvbikgewogICBBU1NFUlRfVFJVRV9XQUlUKHJwb3J0LT5sYXN0X3N0
dW5fbXNnKCksIGtEZWZhdWx0VGltZW91dCk7CiAgIEFTU0VSVF9UUlVFKHJwb3J0LT5sYXN0X3N0
dW5fYnVmKCkpOwogICBsY29ubi0+T25SZWFkUGFja2V0KHJwb3J0LT5sYXN0X3N0dW5fYnVmKCkt
PmRhdGE8Y2hhcj4oKSwKLSAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1
ZigpLT5zaXplKCksIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICBy
cG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsK
ICAgRVhQRUNUX0VRKG5vbWluYXRpb24sIGxjb25uLT5hY2tlZF9ub21pbmF0aW9uKCkpOwogICBF
WFBFQ1RfVFJVRShsY29ubi0+bm9taW5hdGVkKCkpOwogICBFWFBFQ1RfVFJVRShyY29ubi0+bm9t
aW5hdGVkKCkpOwpAQCAtMTg2MCwxMCArMTg0OCw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdE5v
bWluYXRpb24pIHsKIFRFU1RfRihQb3J0VGVzdCwgVGVzdFJvdW5kVHJpcFRpbWUpIHsKICAgcnRj
OjpTY29wZWRGYWtlQ2xvY2sgY2xvY2s7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBs
cG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3Mi
KSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBDcmVhdGVUZXN0
UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIikpOworICBhdXRvIGxwb3J0ID0gQ3Jl
YXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpOworICBhdXRvIHJwb3J0
ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogICBscG9y
dC0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBvcnQtPlNl
dEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKICAgcnBvcnQtPlNldEljZVJvbGUoY3JpY2tl
dDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKQEAgLTE5MDEsMTAgKzE4ODcsOCBAQCBURVNUX0YoUG9y
dFRlc3QsIFRlc3RSb3VuZFRyaXBUaW1lKSB7CiB9CiAKIFRFU1RfRihQb3J0VGVzdCwgVGVzdFVz
ZUNhbmRpZGF0ZUF0dHJpYnV0ZSkgewotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IGxwb3J0
KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpKTsK
LSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBycG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0
KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKSk7CisgIGF1dG8gbHBvcnQgPSBDcmVhdGVU
ZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIik7CisgIGF1dG8gcnBvcnQgPSBD
cmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIik7CiAgIGxwb3J0LT5T
ZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwogICBscG9ydC0+U2V0SWNl
VGllYnJlYWtlcihrVGllYnJlYWtlcjEpOwogICBycG9ydC0+U2V0SWNlUm9sZShjcmlja2V0OjpJ
Q0VST0xFX0NPTlRST0xMRUQpOwpAQCAtMTkzMiwxMCArMTkxNiw4IEBAIFRFU1RfRihQb3J0VGVz
dCwgVGVzdFVzZUNhbmRpZGF0ZUF0dHJpYnV0ZSkgewogLy8gdGhlIHJlbW90ZSBuZXR3b3JrIGNv
c3RzIGFyZSB1cGRhdGVkIHdpdGggdGhlIHN0dW4gYmluZGluZyByZXF1ZXN0cy4KIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdE5ldHdvcmtDb3N0Q2hhbmdlKSB7CiAgIHJ0Yzo6TmV0d29yayogdGVzdF9u
ZXR3b3JrID0gTWFrZU5ldHdvcmsoa0xvY2FsQWRkcjEpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVz
dFBvcnQ+IGxwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQodGVzdF9uZXR3b3JrLCAibGZyYWci
LCAibHBhc3MiKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBD
cmVhdGVUZXN0UG9ydCh0ZXN0X25ldHdvcmssICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBs
cG9ydCA9IENyZWF0ZVRlc3RQb3J0KHRlc3RfbmV0d29yaywgImxmcmFnIiwgImxwYXNzIik7Cisg
IGF1dG8gcnBvcnQgPSBDcmVhdGVUZXN0UG9ydCh0ZXN0X25ldHdvcmssICJyZnJhZyIsICJycGFz
cyIpOwogICBscG9ydC0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsK
ICAgbHBvcnQtPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKICAgcnBvcnQtPlNldElj
ZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKQEAgLTE5ODIsNyArMTk2NCw3IEBA
IFRFU1RfRihQb3J0VGVzdCwgVGVzdE5ldHdvcmtDb3N0Q2hhbmdlKSB7CiAgIEVYUEVDVF9FUShT
VFVOX0JJTkRJTkdfUkVRVUVTVCwgbXNnLT50eXBlKCkpOwogICAvLyBQYXNzIHRoZSBiaW5kaW5n
IHJlcXVlc3QgdG8gcnBvcnQuCiAgIHJjb25uLT5PblJlYWRQYWNrZXQobHBvcnQtPmxhc3Rfc3R1
bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0
X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAg
ICAgICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMg
Ki8gLTEpOwogICAvLyBXYWl0IHVudGlsIHJwb3J0IHNlbmRzIHRoZSByZXNwb25zZSBhbmQgdGhl
biBjaGVjayB0aGUgcmVtb3RlIG5ldHdvcmsgY29zdC4KICAgQVNTRVJUX1RSVUVfV0FJVChycG9y
dC0+bGFzdF9zdHVuX21zZygpICE9IE5VTEwsIGtEZWZhdWx0VGltZW91dCk7CiAgIEVYUEVDVF9F
UShydGM6OmtOZXR3b3JrQ29zdEhpZ2gsIHJjb25uLT5yZW1vdGVfY2FuZGlkYXRlKCkubmV0d29y
a19jb3N0KCkpOwpAQCAtMTk5MCwxMCArMTk3Miw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdE5l
dHdvcmtDb3N0Q2hhbmdlKSB7CiAKIFRFU1RfRihQb3J0VGVzdCwgVGVzdE5ldHdvcmtJbmZvQXR0
cmlidXRlKSB7CiAgIHJ0Yzo6TmV0d29yayogdGVzdF9uZXR3b3JrID0gTWFrZU5ldHdvcmsoa0xv
Y2FsQWRkcjEpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IGxwb3J0KAotICAgICAgQ3Jl
YXRlVGVzdFBvcnQodGVzdF9uZXR3b3JrLCAibGZyYWciLCAibHBhc3MiKSk7Ci0gIHN0ZDo6dW5p
cXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydCh0ZXN0X25ldHdv
cmssICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBscG9ydCA9IENyZWF0ZVRlc3RQb3J0KHRl
c3RfbmV0d29yaywgImxmcmFnIiwgImxwYXNzIik7CisgIGF1dG8gcnBvcnQgPSBDcmVhdGVUZXN0
UG9ydCh0ZXN0X25ldHdvcmssICJyZnJhZyIsICJycGFzcyIpOwogICBscG9ydC0+U2V0SWNlUm9s
ZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBvcnQtPlNldEljZVRpZWJyZWFr
ZXIoa1RpZWJyZWFrZXIxKTsKICAgcnBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9D
T05UUk9MTEVEKTsKQEAgLTIwMzcsNDQgKzIwMTcsNDMgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0
TmV0d29ya0luZm9BdHRyaWJ1dGUpIHsKIC8vIFRlc3QgaGFuZGxpbmcgU1RVTiBtZXNzYWdlcy4K
IFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlKSB7CiAgIC8vIE91ciBwb3J0
IHdpbGwgYWN0IGFzIHRoZSAicmVtb3RlIiBwb3J0LgotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBv
cnQ+IHBvcnQoQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsK
KyAgYXV0byBwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFz
cyIpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxJY2VNZXNzYWdlPiBpbl9tc2csIG91dF9tc2c7Ci0g
IHN0ZDo6dW5pcXVlX3B0cjxCeXRlQnVmZmVyV3JpdGVyPiBidWYobmV3IEJ5dGVCdWZmZXJXcml0
ZXIoKSk7CisgIGF1dG8gYnVmID0gYWJzbDo6bWFrZV91bmlxdWU8Qnl0ZUJ1ZmZlcldyaXRlcj4o
KTsKICAgcnRjOjpTb2NrZXRBZGRyZXNzIGFkZHIoa0xvY2FsQWRkcjEpOwogICBzdGQ6OnN0cmlu
ZyB1c2VybmFtZTsKIAogICAvLyBCSU5ESU5HLVJFUVVFU1QgZnJvbSBsb2NhbCB0byByZW1vdGUg
d2l0aCB2YWxpZCBJQ0UgdXNlcm5hbWUsCiAgIC8vIE1FU1NBR0UtSU5URUdSSVRZLCBhbmQgRklO
R0VSUFJJTlQuCi0gIGluX21zZy5yZXNldCgKLSAgICAgIENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVz
ZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAicmZyYWc6bGZyYWciKSk7CisgIGluX21zZyA9
IENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAicmZy
YWc6bGZyYWciKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50ZWdyaXR5KCJycGFzcyIpOwogICBp
bl9tc2ctPkFkZEZpbmdlcnByaW50KCk7Ci0gIFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgp
LCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAg
IEVYUEVDVF9UUlVFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0
aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cuZ2V0KCkgIT0gTlVMTCk7CiAgIEVY
UEVDVF9FUSgibGZyYWciLCB1c2VybmFtZSk7CiAKICAgLy8gQklORElORy1SRVNQT05TRSB3aXRo
b3V0IHVzZXJuYW1lLCB3aXRoIE1FU1NBR0UtSU5URUdSSVRZIGFuZCBGSU5HRVJQUklOVC4KLSAg
aW5fbXNnLnJlc2V0KENyZWF0ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19SRVNQT05TRSkpOwor
ICBpbl9tc2cgPSBDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfUkVTUE9OU0UpOwogICBp
bl9tc2ctPkFkZEF0dHJpYnV0ZShhYnNsOjptYWtlX3VuaXF1ZTxTdHVuWG9yQWRkcmVzc0F0dHJp
YnV0ZT4oCiAgICAgICBTVFVOX0FUVFJfWE9SX01BUFBFRF9BRERSRVNTLCBrTG9jYWxBZGRyMikp
OwogICBpbl9tc2ctPkFkZE1lc3NhZ2VJbnRlZ3JpdHkoInJwYXNzIik7CiAgIGluX21zZy0+QWRk
RmluZ2VycHJpbnQoKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQo
KSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX1RS
VUUocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIs
ICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUp
KTsKICAgRVhQRUNUX1RSVUUob3V0X21zZy5nZXQoKSAhPSBOVUxMKTsKICAgRVhQRUNUX0VRKCIi
LCB1c2VybmFtZSk7CiAKICAgLy8gQklORElORy1FUlJPUi1SRVNQT05TRSB3aXRob3V0IHVzZXJu
YW1lLCB3aXRoIGVycm9yLCBNLUksIGFuZCBGSU5HRVJQUklOVC4KLSAgaW5fbXNnLnJlc2V0KENy
ZWF0ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19FUlJPUl9SRVNQT05TRSkpOworICBpbl9tc2cg
PSBDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfRVJST1JfUkVTUE9OU0UpOwogICBpbl9t
c2ctPkFkZEF0dHJpYnV0ZShhYnNsOjptYWtlX3VuaXF1ZTxTdHVuRXJyb3JDb2RlQXR0cmlidXRl
PigKICAgICAgIFNUVU5fQVRUUl9FUlJPUl9DT0RFLCBTVFVOX0VSUk9SX1NFUlZFUl9FUlJPUiwK
ICAgICAgIFNUVU5fRVJST1JfUkVBU09OX1NFUlZFUl9FUlJPUikpOwogICBpbl9tc2ctPkFkZEZp
bmdlcnByaW50KCk7Ci0gIFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0KCkp
OworICBXcml0ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9UUlVF
KHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAm
b3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7
CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cuZ2V0KCkgIT0gTlVMTCk7CkBAIC0yMDg3LDE4ICsyMDY2
LDE4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlKSB7CiAKIC8vIFRl
c3RzIGhhbmRsaW5nIG9mIElDRSBiaW5kaW5nIHJlcXVlc3RzIHdpdGggbWlzc2luZyBvciBpbmNv
cnJlY3QgdXNlcm5hbWVzLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VC
YWRVc2VybmFtZSkgewotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHBvcnQoQ3JlYXRlVGVz
dFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBwb3J0ID0gQ3Jl
YXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogCiAgIHN0ZDo6dW5p
cXVlX3B0cjxJY2VNZXNzYWdlPiBpbl9tc2csIG91dF9tc2c7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxC
eXRlQnVmZmVyV3JpdGVyPiBidWYobmV3IEJ5dGVCdWZmZXJXcml0ZXIoKSk7CisgIGF1dG8gYnVm
ID0gYWJzbDo6bWFrZV91bmlxdWU8Qnl0ZUJ1ZmZlcldyaXRlcj4oKTsKICAgcnRjOjpTb2NrZXRB
ZGRyZXNzIGFkZHIoa0xvY2FsQWRkcjEpOwogICBzdGQ6OnN0cmluZyB1c2VybmFtZTsKIAogICAv
LyBCSU5ESU5HLVJFUVVFU1Qgd2l0aCBubyB1c2VybmFtZS4KLSAgaW5fbXNnLnJlc2V0KENyZWF0
ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19SRVFVRVNUKSk7CisgIGluX21zZyA9IENyZWF0ZVN0
dW5NZXNzYWdlKFNUVU5fQklORElOR19SRVFVRVNUKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50
ZWdyaXR5KCJycGFzcyIpOwogICBpbl9tc2ctPkFkZEZpbmdlcnByaW50KCk7Ci0gIFdyaXRlU3R1
bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCpp
bl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9UUlVFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1
Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cu
Z2V0KCkgPT0gTlVMTCk7CkBAIC0yMTA2LDEwICsyMDg1LDEwIEBAIFRFU1RfRihQb3J0VGVzdCwg
VGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFkVXNlcm5hbWUpIHsKICAgRVhQRUNUX0VRKFNUVU5fRVJS
T1JfQkFEX1JFUVVFU1QsIHBvcnQtPmxhc3Rfc3R1bl9lcnJvcl9jb2RlKCkpOwogCiAgIC8vIEJJ
TkRJTkctUkVRVUVTVCB3aXRoIGVtcHR5IHVzZXJuYW1lLgotICBpbl9tc2cucmVzZXQoQ3JlYXRl
U3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5HX1JFUVVFU1QsICIiKSk7CisgIGlu
X21zZyA9IENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNU
LCAiIik7CiAgIGluX21zZy0+QWRkTWVzc2FnZUludGVncml0eSgicnBhc3MiKTsKICAgaW5fbXNn
LT5BZGRGaW5nZXJwcmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVm
LmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBF
Q1RfVFJVRShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwg
YWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2Vy
bmFtZSkpOwogICBFWFBFQ1RfVFJVRShvdXRfbXNnLmdldCgpID09IE5VTEwpOwpAQCAtMjExNywx
MCArMjA5NiwxMCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZFVz
ZXJuYW1lKSB7CiAgIEVYUEVDVF9FUShTVFVOX0VSUk9SX1VOQVVUSE9SSVpFRCwgcG9ydC0+bGFz
dF9zdHVuX2Vycm9yX2NvZGUoKSk7CiAKICAgLy8gQklORElORy1SRVFVRVNUIHdpdGggdG9vLXNo
b3J0IHVzZXJuYW1lLgotICBpbl9tc2cucmVzZXQoQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5h
bWUoU1RVTl9CSU5ESU5HX1JFUVVFU1QsICJyZnJhIikpOworICBpbl9tc2cgPSBDcmVhdGVTdHVu
TWVzc2FnZVdpdGhVc2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgInJmcmEiKTsKICAgaW5f
bXNnLT5BZGRNZXNzYWdlSW50ZWdyaXR5KCJycGFzcyIpOwogICBpbl9tc2ctPkFkZEZpbmdlcnBy
aW50KCk7Ci0gIFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBX
cml0ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9UUlVFKHBvcnQt
PkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21z
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7CiAgIEVY
UEVDVF9UUlVFKG91dF9tc2cuZ2V0KCkgPT0gTlVMTCk7CkBAIC0yMTI4LDExICsyMTA3LDEwIEBA
IFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFkVXNlcm5hbWUpIHsKICAg
RVhQRUNUX0VRKFNUVU5fRVJST1JfVU5BVVRIT1JJWkVELCBwb3J0LT5sYXN0X3N0dW5fZXJyb3Jf
Y29kZSgpKTsKIAogICAvLyBCSU5ESU5HLVJFUVVFU1Qgd2l0aCByZXZlcnNlZCB1c2VybmFtZS4K
LSAgaW5fbXNnLnJlc2V0KAotICAgICAgQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RV
Tl9CSU5ESU5HX1JFUVVFU1QsICJsZnJhZzpyZnJhZyIpKTsKKyAgaW5fbXNnID0gQ3JlYXRlU3R1
bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5HX1JFUVVFU1QsICJsZnJhZzpyZnJhZyIp
OwogICBpbl9tc2ctPkFkZE1lc3NhZ2VJbnRlZ3JpdHkoInJwYXNzIik7CiAgIGluX21zZy0+QWRk
RmluZ2VycHJpbnQoKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQo
KSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX1RS
VUUocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIs
ICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUp
KTsKICAgRVhQRUNUX1RSVUUob3V0X21zZy5nZXQoKSA9PSBOVUxMKTsKQEAgLTIxNDAsMTEgKzIx
MTgsMTAgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRVc2VybmFt
ZSkgewogICBFWFBFQ1RfRVEoU1RVTl9FUlJPUl9VTkFVVEhPUklaRUQsIHBvcnQtPmxhc3Rfc3R1
bl9lcnJvcl9jb2RlKCkpOwogCiAgIC8vIEJJTkRJTkctUkVRVUVTVCB3aXRoIGdhcmJhZ2UgdXNl
cm5hbWUuCi0gIGluX21zZy5yZXNldCgKLSAgICAgIENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJu
YW1lKFNUVU5fQklORElOR19SRVFVRVNULCAiYWJjZDplZmdoIikpOworICBpbl9tc2cgPSBDcmVh
dGVTdHVuTWVzc2FnZVdpdGhVc2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgImFiY2Q6ZWZn
aCIpOwogICBpbl9tc2ctPkFkZE1lc3NhZ2VJbnRlZ3JpdHkoInJwYXNzIik7CiAgIGluX21zZy0+
QWRkRmluZ2VycHJpbnQoKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5n
ZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNU
X1RSVUUocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFk
ZHIsICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5h
bWUpKTsKICAgRVhQRUNUX1RSVUUob3V0X21zZy5nZXQoKSA9PSBOVUxMKTsKQEAgLTIxNTUsMTkg
KzIxMzIsMTggQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRVc2Vy
bmFtZSkgewogLy8gVGVzdCBoYW5kbGluZyBTVFVOIG1lc3NhZ2VzIHdpdGggbWlzc2luZyBvciBt
YWxmb3JtZWQgTS1JLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRN
ZXNzYWdlSW50ZWdyaXR5KSB7CiAgIC8vIE91ciBwb3J0IHdpbGwgYWN0IGFzIHRoZSAicmVtb3Rl
IiBwb3J0LgotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHBvcnQoQ3JlYXRlVGVzdFBvcnQo
a0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBwb3J0ID0gQ3JlYXRlVGVz
dFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogCiAgIHN0ZDo6dW5pcXVlX3B0
cjxJY2VNZXNzYWdlPiBpbl9tc2csIG91dF9tc2c7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxCeXRlQnVm
ZmVyV3JpdGVyPiBidWYobmV3IEJ5dGVCdWZmZXJXcml0ZXIoKSk7CisgIGF1dG8gYnVmID0gYWJz
bDo6bWFrZV91bmlxdWU8Qnl0ZUJ1ZmZlcldyaXRlcj4oKTsKICAgcnRjOjpTb2NrZXRBZGRyZXNz
IGFkZHIoa0xvY2FsQWRkcjEpOwogICBzdGQ6OnN0cmluZyB1c2VybmFtZTsKIAogICAvLyBCSU5E
SU5HLVJFUVVFU1QgZnJvbSBsb2NhbCB0byByZW1vdGUgd2l0aCB2YWxpZCBJQ0UgdXNlcm5hbWUg
YW5kCiAgIC8vIEZJTkdFUlBSSU5ULCBidXQgbm8gTUVTU0FHRS1JTlRFR1JJVFkuCi0gIGluX21z
Zy5yZXNldCgKLSAgICAgIENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElO
R19SRVFVRVNULCAicmZyYWc6bGZyYWciKSk7CisgIGluX21zZyA9IENyZWF0ZVN0dW5NZXNzYWdl
V2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAicmZyYWc6bGZyYWciKTsKICAgaW5f
bXNnLT5BZGRGaW5nZXJwcmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwg
YnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBF
WFBFQ1RfVFJVRShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgo
KSwgYWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1
c2VybmFtZSkpOwogICBFWFBFQ1RfVFJVRShvdXRfbXNnLmdldCgpID09IE5VTEwpOwpAQCAtMjE3
NiwxMSArMjE1MiwxMCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJh
ZE1lc3NhZ2VJbnRlZ3JpdHkpIHsKIAogICAvLyBCSU5ESU5HLVJFUVVFU1QgZnJvbSBsb2NhbCB0
byByZW1vdGUgd2l0aCB2YWxpZCBJQ0UgdXNlcm5hbWUgYW5kCiAgIC8vIEZJTkdFUlBSSU5ULCBi
dXQgaW52YWxpZCBNRVNTQUdFLUlOVEVHUklUWS4KLSAgaW5fbXNnLnJlc2V0KAotICAgICAgQ3Jl
YXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5HX1JFUVVFU1QsICJyZnJhZzps
ZnJhZyIpKTsKKyAgaW5fbXNnID0gQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9C
SU5ESU5HX1JFUVVFU1QsICJyZnJhZzpsZnJhZyIpOwogICBpbl9tc2ctPkFkZE1lc3NhZ2VJbnRl
Z3JpdHkoImludmFsaWQiKTsKICAgaW5fbXNnLT5BZGRGaW5nZXJwcmludCgpOwotICBXcml0ZVN0
dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgq
aW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfVFJVRShwb3J0LT5HZXRTdHVuTWVzc2FnZShi
dWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfVFJVRShvdXRfbXNn
LmdldCgpID09IE5VTEwpOwpAQCAtMjE5NSwxOSArMjE3MCwxOCBAQCBURVNUX0YoUG9ydFRlc3Qs
IFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZE1lc3NhZ2VJbnRlZ3JpdHkpIHsKIC8vIFRlc3QgaGFu
ZGxpbmcgU1RVTiBtZXNzYWdlcyB3aXRoIG1pc3Npbmcgb3IgbWFsZm9ybWVkIEZJTkdFUlBSSU5U
LgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRGaW5nZXJwcmludCkg
ewogICAvLyBPdXIgcG9ydCB3aWxsIGFjdCBhcyB0aGUgInJlbW90ZSIgcG9ydC4KLSAgc3RkOjp1
bmlxdWVfcHRyPFRlc3RQb3J0PiBwb3J0KENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZy
YWciLCAicnBhc3MiKSk7CisgIGF1dG8gcG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIy
LCAicmZyYWciLCAicnBhc3MiKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gaW5f
bXNnLCBvdXRfbXNnOwotICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZUJ1ZmZlcldyaXRlcj4gYnVmKG5l
dyBCeXRlQnVmZmVyV3JpdGVyKCkpOworICBhdXRvIGJ1ZiA9IGFic2w6Om1ha2VfdW5pcXVlPEJ5
dGVCdWZmZXJXcml0ZXI+KCk7CiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBhZGRyKGtMb2NhbEFkZHIx
KTsKICAgc3RkOjpzdHJpbmcgdXNlcm5hbWU7CiAKICAgLy8gQklORElORy1SRVFVRVNUIGZyb20g
bG9jYWwgdG8gcmVtb3RlIHdpdGggdmFsaWQgSUNFIHVzZXJuYW1lIGFuZAogICAvLyBNRVNTQUdF
LUlOVEVHUklUWSwgYnV0IG5vIEZJTkdFUlBSSU5UOyBHZXRTdHVuTWVzc2FnZSBzaG91bGQgZmFp
bC4KLSAgaW5fbXNnLnJlc2V0KAotICAgICAgQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUo
U1RVTl9CSU5ESU5HX1JFUVVFU1QsICJyZnJhZzpsZnJhZyIpKTsKKyAgaW5fbXNnID0gQ3JlYXRl
U3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5HX1JFUVVFU1QsICJyZnJhZzpsZnJh
ZyIpOwogICBpbl9tc2ctPkFkZE1lc3NhZ2VJbnRlZ3JpdHkoInJwYXNzIik7Ci0gIFdyaXRlU3R1
bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCpp
bl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9GQUxTRShwb3J0LT5HZXRTdHVuTWVzc2FnZShi
dWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUpKTsKICAgRVhQRUNUX0VRKDAsIHBvcnQt
Pmxhc3Rfc3R1bl9lcnJvcl9jb2RlKCkpOwpAQCAtMjIxNSwxNyArMjE4OSwxNyBAQCBURVNUX0Yo
UG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZEZpbmdlcnByaW50KSB7CiAgIC8vIE5v
dywgYWRkIGEgZmluZ2VycHJpbnQsIGJ1dCBtdW5nZSB0aGUgbWVzc2FnZSBzbyBpdCdzIG5vdCB2
YWxpZC4KICAgaW5fbXNnLT5BZGRGaW5nZXJwcmludCgpOwogICBpbl9tc2ctPlNldFRyYW5zYWN0
aW9uSUQoIlRFU1RURVNUQkFERCIpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwg
YnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBF
WFBFQ1RfRkFMU0UocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3Ro
KCksIGFkZHIsICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9FUSgwLCBwb3J0LT5sYXN0X3N0dW5fZXJyb3JfY29kZSgp
KTsKIAogICAvLyBWYWxpZCBCSU5ESU5HLVJFU1BPTlNFLCBleGNlcHQgbm8gRklOR0VSUFJJTlQu
Ci0gIGluX21zZy5yZXNldChDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfUkVTUE9OU0Up
KTsKKyAgaW5fbXNnID0gQ3JlYXRlU3R1bk1lc3NhZ2UoU1RVTl9CSU5ESU5HX1JFU1BPTlNFKTsK
ICAgaW5fbXNnLT5BZGRBdHRyaWJ1dGUoYWJzbDo6bWFrZV91bmlxdWU8U3R1blhvckFkZHJlc3NB
dHRyaWJ1dGU+KAogICAgICAgU1RVTl9BVFRSX1hPUl9NQVBQRURfQUREUkVTUywga0xvY2FsQWRk
cjIpKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50ZWdyaXR5KCJycGFzcyIpOwotICBXcml0ZVN0
dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgq
aW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfRkFMU0UocG9ydC0+R2V0U3R1bk1lc3NhZ2Uo
YnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIsICZvdXRfbXNnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9FUSgwLCBwb3J0
LT5sYXN0X3N0dW5fZXJyb3JfY29kZSgpKTsKQEAgLTIyMzMsMTggKzIyMDcsMTggQEAgVEVTVF9G
KFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRGaW5nZXJwcmludCkgewogICAvLyBO
b3csIGFkZCBhIGZpbmdlcnByaW50LCBidXQgbXVuZ2UgdGhlIG1lc3NhZ2Ugc28gaXQncyBub3Qg
dmFsaWQuCiAgIGluX21zZy0+QWRkRmluZ2VycHJpbnQoKTsKICAgaW5fbXNnLT5TZXRUcmFuc2Fj
dGlvbklEKCJURVNUVEVTVEJBREQiKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCks
IGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAg
RVhQRUNUX0ZBTFNFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0
aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfRVEoMCwgcG9ydC0+bGFzdF9zdHVuX2Vycm9yX2NvZGUo
KSk7CiAKICAgLy8gVmFsaWQgQklORElORy1FUlJPUi1SRVNQT05TRSwgZXhjZXB0IG5vIEZJTkdF
UlBSSU5ULgotICBpbl9tc2cucmVzZXQoQ3JlYXRlU3R1bk1lc3NhZ2UoU1RVTl9CSU5ESU5HX0VS
Uk9SX1JFU1BPTlNFKSk7CisgIGluX21zZyA9IENyZWF0ZVN0dW5NZXNzYWdlKFNUVU5fQklORElO
R19FUlJPUl9SRVNQT05TRSk7CiAgIGluX21zZy0+QWRkQXR0cmlidXRlKGFic2w6Om1ha2VfdW5p
cXVlPFN0dW5FcnJvckNvZGVBdHRyaWJ1dGU+KAogICAgICAgU1RVTl9BVFRSX0VSUk9SX0NPREUs
IFNUVU5fRVJST1JfU0VSVkVSX0VSUk9SLAogICAgICAgU1RVTl9FUlJPUl9SRUFTT05fU0VSVkVS
X0VSUk9SKSk7CiAgIGluX21zZy0+QWRkTWVzc2FnZUludGVncml0eSgicnBhc3MiKTsKLSAgV3Jp
dGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3Nh
Z2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX0ZBTFNFKHBvcnQtPkdldFN0dW5NZXNz
YWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfRVEoMCwg
cG9ydC0+bGFzdF9zdHVuX2Vycm9yX2NvZGUoKSk7CkBAIC0yMjUyLDcgKzIyMjYsNyBAQCBURVNU
X0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZEZpbmdlcnByaW50KSB7CiAgIC8v
IE5vdywgYWRkIGEgZmluZ2VycHJpbnQsIGJ1dCBtdW5nZSB0aGUgbWVzc2FnZSBzbyBpdCdzIG5v
dCB2YWxpZC4KICAgaW5fbXNnLT5BZGRGaW5nZXJwcmludCgpOwogICBpbl9tc2ctPlNldFRyYW5z
YWN0aW9uSUQoIlRFU1RURVNUQkFERCIpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQo
KSwgYnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwog
ICBFWFBFQ1RfRkFMU0UocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVu
Z3RoKCksIGFkZHIsICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9FUSgwLCBwb3J0LT5sYXN0X3N0dW5fZXJyb3JfY29k
ZSgpKTsKQEAgLTIyNjEsOCArMjIzNSw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0
dW5NZXNzYWdlQmFkRmluZ2VycHJpbnQpIHsKIC8vIFRlc3QgaGFuZGxpbmcgb2YgU1RVTiBiaW5k
aW5nIGluZGljYXRpb24gbWVzc2FnZXMgLiBTVFVOIGJpbmRpbmcKIC8vIGluZGljYXRpb25zIGFy
ZSBhbGxvd2VkIG9ubHkgdG8gdGhlIGNvbm5lY3Rpb24gd2hpY2ggaXMgaW4gcmVhZCBtb2RlLgog
VEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bkJpbmRpbmdJbmRpY2F0aW9uKSB7Ci0gIHN0
ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gbHBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9j
YWxBZGRyMiwgImxmcmFnIiwgImxwYXNzIikpOworICBhdXRvIGxwb3J0ID0gQ3JlYXRlVGVzdFBv
cnQoa0xvY2FsQWRkcjIsICJsZnJhZyIsICJscGFzcyIpOwogICBscG9ydC0+U2V0SWNlUm9sZShj
cmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBvcnQtPlNldEljZVRpZWJyZWFrZXIo
a1RpZWJyZWFrZXIxKTsKIApAQCAtMjI3Miw5ICsyMjQ1LDkgQEAgVEVTVF9GKFBvcnRUZXN0LCBU
ZXN0SGFuZGxlU3R1bkJpbmRpbmdJbmRpY2F0aW9uKSB7CiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBh
ZGRyKGtMb2NhbEFkZHIxKTsKICAgc3RkOjpzdHJpbmcgdXNlcm5hbWU7CiAKLSAgaW5fbXNnLnJl
c2V0KENyZWF0ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19JTkRJQ0FUSU9OKSk7CisgIGluX21z
ZyA9IENyZWF0ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19JTkRJQ0FUSU9OKTsKICAgaW5fbXNn
LT5BZGRGaW5nZXJwcmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVm
LmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBF
Q1RfVFJVRShscG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCks
IGFkZHIsICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVz
ZXJuYW1lKSk7CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cuZ2V0KCkgIT0gTlVMTCk7CkBAIC0yMjgz
LDggKzIyNTYsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuQmluZGluZ0luZGlj
YXRpb24pIHsKIAogICAvLyBWZXJpZnkgY29ubmVjdGlvbiBjYW4gaGFuZGxlIFNUVU4gaW5kaWNh
dGlvbiBhbmQgdXBkYXRlcwogICAvLyBsYXN0X3BpbmdfcmVjZWl2ZWQuCi0gIHN0ZDo6dW5pcXVl
X3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwg
InJmcmFnIiwgInJwYXNzIikpOworICBhdXRvIHJwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2Fs
QWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogICBycG9ydC0+U2V0SWNlUm9sZShjcmlja2V0OjpJ
Q0VST0xFX0NPTlRST0xMRUQpOwogICBycG9ydC0+U2V0SWNlVGllYnJlYWtlcihrVGllYnJlYWtl
cjIpOwogCkBAIC0yMzA0LDcgKzIyNzYsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVT
dHVuQmluZGluZ0luZGljYXRpb24pIHsKICAgRVhQRUNUX0VRKFNUVU5fQklORElOR19SRVFVRVNU
LCBtc2ctPnR5cGUoKSk7CiAgIC8vIFNlbmQgcnBvcnQgYmluZGluZyByZXF1ZXN0IHRvIGxwb3J0
LgogICBsY29ubi0+T25SZWFkUGFja2V0KHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8Y2hh
cj4oKSwKLSAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXpl
KCksIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFz
dF9zdHVuX2J1ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgQVNTRVJU
X1RSVUVfV0FJVChscG9ydC0+bGFzdF9zdHVuX21zZygpICE9IE5VTEwsIGtEZWZhdWx0VGltZW91
dCk7CiAgIEVYUEVDVF9FUShTVFVOX0JJTkRJTkdfUkVTUE9OU0UsIGxwb3J0LT5sYXN0X3N0dW5f
bXNnKCktPnR5cGUoKSk7CiAgIGludDY0X3QgbGFzdF9waW5nX3JlY2VpdmVkMSA9IGxjb25uLT5s
YXN0X3BpbmdfcmVjZWl2ZWQoKTsKQEAgLTIzMTIsMTMgKzIyODQsMTMgQEAgVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0SGFuZGxlU3R1bkJpbmRpbmdJbmRpY2F0aW9uKSB7CiAgIC8vIEFkZGluZyBhIGRl
bGF5IG9mIDEwMG1zLgogICBydGM6OlRocmVhZDo6Q3VycmVudCgpLT5Qcm9jZXNzTWVzc2FnZXMo
MTAwKTsKICAgLy8gUGluZ2luZyBsY29ubiB1c2luZyBzdHVuIGluZGljYXRpb24gbWVzc2FnZS4K
LSAgbGNvbm4tPk9uUmVhZFBhY2tldChidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgcnRjOjpQ
YWNrZXRUaW1lKCkpOworICBsY29ubi0+T25SZWFkUGFja2V0KGJ1Zi0+RGF0YSgpLCBidWYtPkxl
bmd0aCgpLCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIGludDY0X3QgbGFzdF9waW5nX3Jl
Y2VpdmVkMiA9IGxjb25uLT5sYXN0X3BpbmdfcmVjZWl2ZWQoKTsKICAgRVhQRUNUX0dUKGxhc3Rf
cGluZ19yZWNlaXZlZDIsIGxhc3RfcGluZ19yZWNlaXZlZDEpOwogfQogCiBURVNUX0YoUG9ydFRl
c3QsIFRlc3RDb21wdXRlQ2FuZGlkYXRlUHJpb3JpdHkpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRl
c3RQb3J0PiBwb3J0KENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibmFtZSIsICJwYXNzIikp
OworICBhdXRvIHBvcnQgPSBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgIm5hbWUiLCAicGFz
cyIpOwogICBwb3J0LT5zZXRfdHlwZV9wcmVmZXJlbmNlKDkwKTsKICAgcG9ydC0+c2V0X2NvbXBv
bmVudCgxNzcpOwogICBwb3J0LT5BZGRDYW5kaWRhdGVBZGRyZXNzKFNvY2tldEFkZHJlc3MoIjE5
Mi4xNjguMS40IiwgMTIzNCkpOwpAQCAtMjM1NSw4ICsyMzI3LDcgQEAgVEVTVF9GKFBvcnRUZXN0
LCBUZXN0Q29tcHV0ZUNhbmRpZGF0ZVByaW9yaXR5KSB7CiAvLyBJbiB0aGUgY2FzZSBvZiBzaGFy
ZWQgc29ja2V0LCBvbmUgcG9ydCBtYXkgYmUgc2hhcmVkIGJ5IGxvY2FsIGFuZCBzdHVuLgogLy8g
VGVzdCB0aGF0IGNhbmRpZGF0ZXMgd2l0aCBkaWZmZXJlbnQgdHlwZXMgd2lsbCBoYXZlIGRpZmZl
cmVudCBmb3VuZGF0aW9uLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0Rm91bmRhdGlvbikgewotICBz
dGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHRlc3Rwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQo
a0xvY2FsQWRkcjEsICJuYW1lIiwgInBhc3MiKSk7CisgIGF1dG8gdGVzdHBvcnQgPSBDcmVhdGVU
ZXN0UG9ydChrTG9jYWxBZGRyMSwgIm5hbWUiLCAicGFzcyIpOwogICB0ZXN0cG9ydC0+QWRkQ2Fu
ZGlkYXRlQWRkcmVzcyhrTG9jYWxBZGRyMSwga0xvY2FsQWRkcjEsIExPQ0FMX1BPUlRfVFlQRSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6SUNFX1RZUEVfUFJFRkVS
RU5DRV9IT1NULCBmYWxzZSk7CiAgIHRlc3Rwb3J0LT5BZGRDYW5kaWRhdGVBZGRyZXNzKGtMb2Nh
bEFkZHIyLCBrTG9jYWxBZGRyMSwgU1RVTl9QT1JUX1RZUEUsCkBAIC0yMzY5LDIwICsyMzQwLDE5
IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdEZvdW5kYXRpb24pIHsKIFRFU1RfRihQb3J0VGVzdCwg
VGVzdENhbmRpZGF0ZUZvdW5kYXRpb24pIHsKICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6TkFUU2Vy
dmVyPiBuYXRfc2VydmVyKAogICAgICAgQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMSwgTkFUX09Q
RU5fQ09ORSkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VURQUG9ydD4gdWRwcG9ydDEoQ3JlYXRlVWRw
UG9ydChrTG9jYWxBZGRyMSkpOworICBhdXRvIHVkcHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9j
YWxBZGRyMSk7CiAgIHVkcHBvcnQxLT5QcmVwYXJlQWRkcmVzcygpOwotICBzdGQ6OnVuaXF1ZV9w
dHI8VURQUG9ydD4gdWRwcG9ydDIoQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSkpOworICBhdXRv
IHVkcHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHVkcHBvcnQyLT5QcmVw
YXJlQWRkcmVzcygpOwogICBFWFBFQ1RfRVEodWRwcG9ydDEtPkNhbmRpZGF0ZXMoKVswXS5mb3Vu
ZGF0aW9uKCksCiAgICAgICAgICAgICB1ZHBwb3J0Mi0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRp
b24oKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUQ1BQb3J0PiB0Y3Bwb3J0MShDcmVhdGVUY3BQb3J0
KGtMb2NhbEFkZHIxKSk7CisgIGF1dG8gdGNwcG9ydDEgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFk
ZHIxKTsKICAgdGNwcG9ydDEtPlByZXBhcmVBZGRyZXNzKCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxU
Q1BQb3J0PiB0Y3Bwb3J0MihDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKSk7CisgIGF1dG8gdGNw
cG9ydDIgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKTsKICAgdGNwcG9ydDItPlByZXBhcmVB
ZGRyZXNzKCk7CiAgIEVYUEVDVF9FUSh0Y3Bwb3J0MS0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRp
b24oKSwKICAgICAgICAgICAgIHRjcHBvcnQyLT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigp
KTsKLSAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IHN0dW5wb3J0KAotICAgICAgQ3JlYXRlU3R1blBv
cnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSkpOworICBhdXRvIHN0dW5wb3J0
ID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSk7CiAg
IHN0dW5wb3J0LT5QcmVwYXJlQWRkcmVzcygpOwogICBBU1NFUlRfRVFfV0FJVCgxVSwgc3R1bnBv
cnQtPkNhbmRpZGF0ZXMoKS5zaXplKCksIGtEZWZhdWx0VGltZW91dCk7CiAgIEVYUEVDVF9ORSh0
Y3Bwb3J0MS0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSwKQEAgLTIzOTQsNyArMjM2NCw3
IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdENhbmRpZGF0ZUZvdW5kYXRpb24pIHsKICAgRVhQRUNU
X05FKHVkcHBvcnQyLT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpLAogICAgICAgICAgICAg
c3R1bnBvcnQtPkNhbmRpZGF0ZXMoKVswXS5mb3VuZGF0aW9uKCkpOwogICAvLyBWZXJpZnkgR1RV
Uk4gY2FuZGlkYXRlIGZvdW5kYXRpb24uCi0gIHN0ZDo6dW5pcXVlX3B0cjxSZWxheVBvcnQ+IHJl
bGF5cG9ydChDcmVhdGVHdHVyblBvcnQoa0xvY2FsQWRkcjEpKTsKKyAgYXV0byByZWxheXBvcnQg
PSBDcmVhdGVHdHVyblBvcnQoa0xvY2FsQWRkcjEpOwogICByZWxheXBvcnQtPkFkZFNlcnZlckFk
ZHJlc3MoCiAgICAgICBjcmlja2V0OjpQcm90b2NvbEFkZHJlc3Moa1JlbGF5VWRwSW50QWRkciwg
Y3JpY2tldDo6UFJPVE9fVURQKSk7CiAgIHJlbGF5cG9ydC0+UHJlcGFyZUFkZHJlc3MoKTsKQEAg
LTI0MDQsOCArMjM3NCw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdENhbmRpZGF0ZUZvdW5kYXRp
b24pIHsKICAgRVhQRUNUX05FKHVkcHBvcnQyLT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigp
LAogICAgICAgICAgICAgcmVsYXlwb3J0LT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpKTsK
ICAgLy8gVmVyaWZ5aW5nIFRVUk4gY2FuZGlkYXRlIGZvdW5kYXRpb24uCi0gIHN0ZDo6dW5pcXVl
X3B0cjxQb3J0PiB0dXJucG9ydDEoCi0gICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwg
bmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VEUCkpOworICBhdXRvIHR1
cm5wb3J0MSA9CisgICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9m
YWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VEUCk7CiAgIHR1cm5wb3J0MS0+UHJlcGFyZUFk
ZHJlc3MoKTsKICAgQVNTRVJUX0VRX1dBSVQoMVUsIHR1cm5wb3J0MS0+Q2FuZGlkYXRlcygpLnNp
emUoKSwga0RlZmF1bHRUaW1lb3V0KTsKICAgRVhQRUNUX05FKHVkcHBvcnQxLT5DYW5kaWRhdGVz
KClbMF0uZm91bmRhdGlvbigpLApAQCAtMjQxNCw4ICsyMzg0LDggQEAgVEVTVF9GKFBvcnRUZXN0
LCBUZXN0Q2FuZGlkYXRlRm91bmRhdGlvbikgewogICAgICAgICAgICAgdHVybnBvcnQxLT5DYW5k
aWRhdGVzKClbMF0uZm91bmRhdGlvbigpKTsKICAgRVhQRUNUX05FKHN0dW5wb3J0LT5DYW5kaWRh
dGVzKClbMF0uZm91bmRhdGlvbigpLAogICAgICAgICAgICAgdHVybnBvcnQxLT5DYW5kaWRhdGVz
KClbMF0uZm91bmRhdGlvbigpKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IHR1cm5wb3J0MigK
LSAgICAgIENyZWF0ZVR1cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCks
IFBST1RPX1VEUCwgUFJPVE9fVURQKSk7CisgIGF1dG8gdHVybnBvcnQyID0KKyAgICAgIENyZWF0
ZVR1cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1VEUCwg
UFJPVE9fVURQKTsKICAgdHVybnBvcnQyLT5QcmVwYXJlQWRkcmVzcygpOwogICBBU1NFUlRfRVFf
V0FJVCgxVSwgdHVybnBvcnQyLT5DYW5kaWRhdGVzKCkuc2l6ZSgpLCBrRGVmYXVsdFRpbWVvdXQp
OwogICBFWFBFQ1RfRVEodHVybnBvcnQxLT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpLApA
QCAtMjQyNiw5ICsyMzk2LDggQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q2FuZGlkYXRlRm91bmRh
dGlvbikgewogICBTb2NrZXRBZGRyZXNzIGtUdXJuVWRwRXh0QWRkcjIoIjk5Ljk5Ljk4LjUiLCAw
KTsKICAgVGVzdFR1cm5TZXJ2ZXIgdHVybl9zZXJ2ZXIyKHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCks
IGtUdXJuVWRwSW50QWRkcjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVHVyblVk
cEV4dEFkZHIyKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IHR1cm5wb3J0MygKLSAgICAgIENy
ZWF0ZVR1cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1VE
UCwgUFJPVE9fVURQLAotICAgICAgICAgICAgICAgICAgICAga1R1cm5VZHBJbnRBZGRyMikpOwor
ICBhdXRvIHR1cm5wb3J0MyA9IENyZWF0ZVR1cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0
X2ZhY3RvcnkxKCksIFBST1RPX1VEUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9UT19VRFAsIGtUdXJuVWRwSW50QWRkcjIpOwogICB0dXJucG9ydDMtPlByZXBhcmVBZGRy
ZXNzKCk7CiAgIEFTU0VSVF9FUV9XQUlUKDFVLCB0dXJucG9ydDMtPkNhbmRpZGF0ZXMoKS5zaXpl
KCksIGtEZWZhdWx0VGltZW91dCk7CiAgIEVYUEVDVF9ORSh0dXJucG9ydDMtPkNhbmRpZGF0ZXMo
KVswXS5mb3VuZGF0aW9uKCksCkBAIC0yNDM4LDggKzI0MDcsOCBAQCBURVNUX0YoUG9ydFRlc3Qs
IFRlc3RDYW5kaWRhdGVGb3VuZGF0aW9uKSB7CiAgIC8vIGRpZmZlcmVudCBmb3VuZGF0aW9ucyBp
ZiB0aGVpciByZWxheSBwcm90b2NvbHMgYXJlIGRpZmZlcmVudC4KICAgVGVzdFR1cm5TZXJ2ZXIg
dHVybl9zZXJ2ZXIzKHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksIGtUdXJuVGNwSW50QWRkciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtUdXJuVWRwRXh0QWRkciwgUFJPVE9fVENQKTsK
LSAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IHR1cm5wb3J0NCgKLSAgICAgIENyZWF0ZVR1cm5Qb3J0
KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1RDUCwgUFJPVE9fVURQ
KSk7CisgIGF1dG8gdHVybnBvcnQ0ID0KKyAgICAgIENyZWF0ZVR1cm5Qb3J0KGtMb2NhbEFkZHIx
LCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1RDUCwgUFJPVE9fVURQKTsKICAgdHVybnBv
cnQ0LT5QcmVwYXJlQWRkcmVzcygpOwogICBBU1NFUlRfRVFfV0FJVCgxVSwgdHVybnBvcnQ0LT5D
YW5kaWRhdGVzKCkuc2l6ZSgpLCBrRGVmYXVsdFRpbWVvdXQpOwogICBFWFBFQ1RfTkUodHVybnBv
cnQyLT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpLApAQCAtMjQ0OSwxNyArMjQxOCwxNSBA
QCBURVNUX0YoUG9ydFRlc3QsIFRlc3RDYW5kaWRhdGVGb3VuZGF0aW9uKSB7CiAvLyBUaGlzIHRl
c3QgdmVyaWZpZXMgdGhlIHJlbGF0ZWQgYWRkcmVzc2VzIG9mIGRpZmZlcmVudCB0eXBlcyBvZgog
Ly8gSUNFIGNhbmRpYXRlcy4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdENhbmRpZGF0ZVJlbGF0ZWRB
ZGRyZXNzKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxydGM6Ok5BVFNlcnZlcj4gbmF0X3NlcnZlcigK
LSAgICAgIENyZWF0ZU5hdFNlcnZlcihrTmF0QWRkcjEsIE5BVF9PUEVOX0NPTkUpKTsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPFVEUFBvcnQ+IHVkcHBvcnQoQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSkp
OworICBhdXRvIG5hdF9zZXJ2ZXIgPSBDcmVhdGVOYXRTZXJ2ZXIoa05hdEFkZHIxLCBOQVRfT1BF
Tl9DT05FKTsKKyAgYXV0byB1ZHBwb3J0ID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAg
IHVkcHBvcnQtPlByZXBhcmVBZGRyZXNzKCk7CiAgIC8vIEZvciBVRFBQb3J0LCByZWxhdGVkIGFk
ZHJlc3Mgd2lsbCBiZSBlbXB0eS4KICAgRVhQRUNUX1RSVUUodWRwcG9ydC0+Q2FuZGlkYXRlcygp
WzBdLnJlbGF0ZWRfYWRkcmVzcygpLklzTmlsKCkpOwogICAvLyBUZXN0aW5nIHJlbGF0ZWQgYWRk
cmVzcyBmb3Igc3R1biBjYW5kaWRhdGVzLgogICAvLyBGb3Igc3R1biBjYW5kaWRhdGUgcmVsYXRl
ZCBhZGRyZXNzIG11c3QgYmUgZXF1YWwgdG8gdGhlIGJhc2UKICAgLy8gc29ja2V0IGFkZHJlc3Mu
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxTdHVuUG9ydD4gc3R1bnBvcnQoCi0gICAgICBDcmVhdGVTdHVu
UG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpKSk7CisgIGF1dG8gc3R1bnBv
cnQgPSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpKTsK
ICAgc3R1bnBvcnQtPlByZXBhcmVBZGRyZXNzKCk7CiAgIEFTU0VSVF9FUV9XQUlUKDFVLCBzdHVu
cG9ydC0+Q2FuZGlkYXRlcygpLnNpemUoKSwga0RlZmF1bHRUaW1lb3V0KTsKICAgLy8gQ2hlY2sg
U1RVTiBjYW5kaWRhdGUgYWRkcmVzcy4KQEAgLTI0NzAsNyArMjQzNyw3IEBAIFRFU1RfRihQb3J0
VGVzdCwgVGVzdENhbmRpZGF0ZVJlbGF0ZWRBZGRyZXNzKSB7CiAgIC8vIFZlcmlmeWluZyB0aGUg
cmVsYXRlZCBhZGRyZXNzIGZvciB0aGUgR1RVUk4gY2FuZGlkYXRlcy4KICAgLy8gTk9URTogSW4g
Y2FzZSBvZiBHVFVSTiByZWxhdGVkIGFkZHJlc3Mgd2lsbCBiZSBlcXVhbCB0byB0aGUgbWFwcGVk
CiAgIC8vIGFkZHJlc3MsIGJ1dCBhZGRyZXNzKG1hcHBlZCkgd2lsbCBub3QgYmUgWE9SLgotICBz
dGQ6OnVuaXF1ZV9wdHI8UmVsYXlQb3J0PiByZWxheXBvcnQoQ3JlYXRlR3R1cm5Qb3J0KGtMb2Nh
bEFkZHIxKSk7CisgIGF1dG8gcmVsYXlwb3J0ID0gQ3JlYXRlR3R1cm5Qb3J0KGtMb2NhbEFkZHIx
KTsKICAgcmVsYXlwb3J0LT5BZGRTZXJ2ZXJBZGRyZXNzKAogICAgICAgY3JpY2tldDo6UHJvdG9j
b2xBZGRyZXNzKGtSZWxheVVkcEludEFkZHIsIGNyaWNrZXQ6OlBST1RPX1VEUCkpOwogICByZWxh
eXBvcnQtPlByZXBhcmVBZGRyZXNzKCk7CkBAIC0yNDc5LDggKzI0NDYsOCBAQCBURVNUX0YoUG9y
dFRlc3QsIFRlc3RDYW5kaWRhdGVSZWxhdGVkQWRkcmVzcykgewogICBFWFBFQ1RfRVEocnRjOjpT
b2NrZXRBZGRyZXNzKCksIHJlbGF5cG9ydC0+Q2FuZGlkYXRlcygpWzBdLnJlbGF0ZWRfYWRkcmVz
cygpKTsKICAgLy8gVmVyaWZ5aW5nIHRoZSByZWxhdGVkIGFkZHJlc3MgZm9yIFRVUk4gY2FuZGlk
YXRlLgogICAvLyBGb3IgVFVSTiByZWxhdGVkIGFkZHJlc3MgbXVzdCBiZSBlcXVhbCB0byB0aGUg
bWFwcGVkIGFkZHJlc3MuCi0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiB0dXJucG9ydCgKLSAgICAg
IENyZWF0ZVR1cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RP
X1VEUCwgUFJPVE9fVURQKSk7CisgIGF1dG8gdHVybnBvcnQgPQorICAgICAgQ3JlYXRlVHVyblBv
cnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQUk9UT19V
RFApOwogICB0dXJucG9ydC0+UHJlcGFyZUFkZHJlc3MoKTsKICAgQVNTRVJUX0VRX1dBSVQoMVUs
IHR1cm5wb3J0LT5DYW5kaWRhdGVzKCkuc2l6ZSgpLCBrRGVmYXVsdFRpbWVvdXQpOwogICBFWFBF
Q1RfRVEoa1R1cm5VZHBFeHRBZGRyLmlwYWRkcigpLApAQCAtMjUwMCwxMSArMjQ2Nyw5IEBAIFRF
U1RfRihQb3J0VGVzdCwgVGVzdENhbmRpZGF0ZVByaW9yaXR5KSB7CiAKIC8vIFRlc3QgdGhlIENv
bm5lY3Rpb24gcHJpb3JpdHkgaXMgY2FsY3VsYXRlZCBjb3JyZWN0bHkuCiBURVNUX0YoUG9ydFRl
c3QsIFRlc3RDb25uZWN0aW9uUHJpb3JpdHkpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0
PiBscG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBh
c3MiKSk7CisgIGF1dG8gbHBvcnQgPSBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFn
IiwgImxwYXNzIik7CiAgIGxwb3J0LT5zZXRfdHlwZV9wcmVmZXJlbmNlKGNyaWNrZXQ6OklDRV9U
WVBFX1BSRUZFUkVOQ0VfSE9TVCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQo
Ci0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIikpOwor
ICBhdXRvIHJwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFz
cyIpOwogICBycG9ydC0+c2V0X3R5cGVfcHJlZmVyZW5jZShjcmlja2V0OjpJQ0VfVFlQRV9QUkVG
RVJFTkNFX1JFTEFZX1VEUCk7CiAgIGxwb3J0LT5zZXRfY29tcG9uZW50KDEyMyk7CiAgIGxwb3J0
LT5BZGRDYW5kaWRhdGVBZGRyZXNzKFNvY2tldEFkZHJlc3MoIjE5Mi4xNjguMS40IiwgMTIzNCkp
OwpAQCAtMjU0NSwxNCArMjUxMCwxNCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RDb25uZWN0aW9u
UHJpb3JpdHkpIHsKIC8vIGVzdGltYXRlIGdpdmVuIGJ5IHxNSU5JTVVNX1JUVHwgPSAxMDAuCiBU
RVNUX0YoUG9ydFRlc3QsIFRlc3RXcml0YWJsZVN0YXRlKSB7CiAgIHJ0Yzo6U2NvcGVkRmFrZUNs
b2NrIGNsb2NrOwotICBVRFBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEp
OworICBhdXRvIHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHBvcnQxLT5T
ZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwotICBVRFBQb3J0KiBwb3J0
MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOworICBhdXRvIHBvcnQyID0gQ3JlYXRlVWRw
UG9ydChrTG9jYWxBZGRyMik7CiAgIHBvcnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVf
Q09OVFJPTExFRCk7CiAKICAgLy8gU2V0IHVwIGNoYW5uZWxzLgotICBUZXN0Q2hhbm5lbCBjaDEo
cG9ydDEpOwotICBUZXN0Q2hhbm5lbCBjaDIocG9ydDIpOworICBUZXN0Q2hhbm5lbCBjaDEoc3Rk
Ojptb3ZlKHBvcnQxKSk7CisgIFRlc3RDaGFubmVsIGNoMihzdGQ6Om1vdmUocG9ydDIpKTsKIAog
ICAvLyBBY3F1aXJlIGFkZHJlc3Nlcy4KICAgY2gxLlN0YXJ0KCk7CkBAIC0yNTYxLDcgKzI1MjYs
NyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RXcml0YWJsZVN0YXRlKSB7CiAgIEFTU0VSVF9FUV9T
SU1VTEFURURfV0FJVCgxLCBjaDIuY29tcGxldGVfY291bnQoKSwga0RlZmF1bHRUaW1lb3V0LCBj
bG9jayk7CiAKICAgLy8gU2VuZCBhIHBpbmcgZnJvbSBzcmMgdG8gZHN0LgotICBjaDEuQ3JlYXRl
Q29ubmVjdGlvbihHZXRDYW5kaWRhdGUocG9ydDIpKTsKKyAgY2gxLkNyZWF0ZUNvbm5lY3Rpb24o
R2V0Q2FuZGlkYXRlKGNoMi5wb3J0KCkpKTsKICAgQVNTRVJUX1RSVUUoY2gxLmNvbm4oKSAhPSBO
VUxMKTsKICAgRVhQRUNUX0VRKENvbm5lY3Rpb246OlNUQVRFX1dSSVRFX0lOSVQsIGNoMS5jb25u
KCktPndyaXRlX3N0YXRlKCkpOwogICAvLyBmb3IgVENQIGNvbm5lY3QKQEAgLTI1NzcsNyArMjU0
Miw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFdyaXRhYmxlU3RhdGUpIHsKIAogICAvLyBBY2Nl
cHQgdGhlIGNvbm5lY3Rpb24gdG8gcmV0dXJuIHRoZSBiaW5kaW5nIHJlc3BvbnNlLCB0cmFuc2l0
aW9uIHRvCiAgIC8vIHdyaXRhYmxlLCBhbmQgYWxsb3cgZGF0YSB0byBiZSBzZW50LgotICBjaDIu
QWNjZXB0Q29ubmVjdGlvbihHZXRDYW5kaWRhdGUocG9ydDEpKTsKKyAgY2gyLkFjY2VwdENvbm5l
Y3Rpb24oR2V0Q2FuZGlkYXRlKGNoMS5wb3J0KCkpKTsKICAgRVhQRUNUX0VRX1NJTVVMQVRFRF9X
QUlUKENvbm5lY3Rpb246OlNUQVRFX1dSSVRBQkxFLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2gxLmNvbm4oKS0+d3JpdGVfc3RhdGUoKSwga0RlZmF1bHRUaW1lb3V0LCBjbG9jayk7CiAg
IEVYUEVDVF9FUShkYXRhX3NpemUsIGNoMS5jb25uKCktPlNlbmQoZGF0YSwgZGF0YV9zaXplLCBv
cHRpb25zKSk7CkBAIC0yNjIyLDE0ICsyNTg3LDE0IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFdy
aXRhYmxlU3RhdGUpIHsKIC8vIHxDT05ORUNUSU9OX1dSSVRFX0NPTk5FQ1RfRkFJTFVSRVN8Lgog
VEVTVF9GKFBvcnRUZXN0LCBUZXN0V3JpdGFibGVTdGF0ZVdpdGhDb25maWd1cmVkVGhyZXNob2xk
KSB7CiAgIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGNsb2NrOwotICBVRFBQb3J0KiBwb3J0MSA9IENy
ZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOworICBhdXRvIHBvcnQxID0gQ3JlYXRlVWRwUG9ydChr
TG9jYWxBZGRyMSk7CiAgIHBvcnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJP
TExJTkcpOwotICBVRFBQb3J0KiBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOwor
ICBhdXRvIHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMik7CiAgIHBvcnQyLT5TZXRJ
Y2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CiAKICAgLy8gU2V0IHVwIGNoYW5u
ZWxzLgotICBUZXN0Q2hhbm5lbCBjaDEocG9ydDEpOwotICBUZXN0Q2hhbm5lbCBjaDIocG9ydDIp
OworICBUZXN0Q2hhbm5lbCBjaDEoc3RkOjptb3ZlKHBvcnQxKSk7CisgIFRlc3RDaGFubmVsIGNo
MihzdGQ6Om1vdmUocG9ydDIpKTsKIAogICAvLyBBY3F1aXJlIGFkZHJlc3Nlcy4KICAgY2gxLlN0
YXJ0KCk7CkBAIC0yNjM4LDE0ICsyNjAzLDE0IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFdyaXRh
YmxlU3RhdGVXaXRoQ29uZmlndXJlZFRocmVzaG9sZCkgewogICBBU1NFUlRfRVFfU0lNVUxBVEVE
X1dBSVQoMSwgY2gyLmNvbXBsZXRlX2NvdW50KCksIGtEZWZhdWx0VGltZW91dCwgY2xvY2spOwog
CiAgIC8vIFNlbmQgYSBwaW5nIGZyb20gc3JjIHRvIGRzdC4KLSAgY2gxLkNyZWF0ZUNvbm5lY3Rp
b24oR2V0Q2FuZGlkYXRlKHBvcnQyKSk7CisgIGNoMS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRp
ZGF0ZShjaDIucG9ydCgpKSk7CiAgIEFTU0VSVF9UUlVFKGNoMS5jb25uKCkgIT0gTlVMTCk7CiAg
IGNoMS5QaW5nKCk7CiAgIFNJTVVMQVRFRF9XQUlUKCFjaDIucmVtb3RlX2FkZHJlc3MoKS5Jc05p
bCgpLCBrU2hvcnRUaW1lb3V0LCBjbG9jayk7CiAKICAgLy8gQWNjZXB0IHRoZSBjb25uZWN0aW9u
IHRvIHJldHVybiB0aGUgYmluZGluZyByZXNwb25zZSwgdHJhbnNpdGlvbiB0bwogICAvLyB3cml0
YWJsZSwgYW5kIGFsbG93IGRhdGEgdG8gYmUgc2VudC4KLSAgY2gyLkFjY2VwdENvbm5lY3Rpb24o
R2V0Q2FuZGlkYXRlKHBvcnQxKSk7CisgIGNoMi5BY2NlcHRDb25uZWN0aW9uKEdldENhbmRpZGF0
ZShjaDEucG9ydCgpKSk7CiAgIEVYUEVDVF9FUV9TSU1VTEFURURfV0FJVChDb25uZWN0aW9uOjpT
VEFURV9XUklUQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoMS5jb25uKCktPndy
aXRlX3N0YXRlKCksIGtEZWZhdWx0VGltZW91dCwgY2xvY2spOwogCkBAIC0yNjc2LDIwICsyNjQx
LDIwIEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFdyaXRhYmxlU3RhdGVXaXRoQ29uZmlndXJlZFRo
cmVzaG9sZCkgewogfQogCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RUaW1lb3V0Rm9yTmV2ZXJXcml0
YWJsZSkgewotICBVRFBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwor
ICBhdXRvIHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHBvcnQxLT5TZXRJ
Y2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwotICBVRFBQb3J0KiBwb3J0MiA9
IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOworICBhdXRvIHBvcnQyID0gQ3JlYXRlVWRwUG9y
dChrTG9jYWxBZGRyMik7CiAgIHBvcnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09O
VFJPTExFRCk7CiAKICAgLy8gU2V0IHVwIGNoYW5uZWxzLgotICBUZXN0Q2hhbm5lbCBjaDEocG9y
dDEpOwotICBUZXN0Q2hhbm5lbCBjaDIocG9ydDIpOworICBUZXN0Q2hhbm5lbCBjaDEoc3RkOjpt
b3ZlKHBvcnQxKSk7CisgIFRlc3RDaGFubmVsIGNoMihzdGQ6Om1vdmUocG9ydDIpKTsKIAogICAv
LyBBY3F1aXJlIGFkZHJlc3Nlcy4KICAgY2gxLlN0YXJ0KCk7CiAgIGNoMi5TdGFydCgpOwogCi0g
IGNoMS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0MikpOworICBjaDEuQ3JlYXRl
Q29ubmVjdGlvbihHZXRDYW5kaWRhdGUoY2gyLnBvcnQoKSkpOwogICBBU1NFUlRfVFJVRShjaDEu
Y29ubigpICE9IE5VTEwpOwogICBFWFBFQ1RfRVEoQ29ubmVjdGlvbjo6U1RBVEVfV1JJVEVfSU5J
VCwgY2gxLmNvbm4oKS0+d3JpdGVfc3RhdGUoKSk7CiAKQEAgLTI3MDYsMTUgKzI2NzEsMTUgQEAg
VEVTVF9GKFBvcnRUZXN0LCBUZXN0VGltZW91dEZvck5ldmVyV3JpdGFibGUpIHsKIC8vIEluIHRo
aXMgdGVzdCB8Y2gxfCBiZWhhdmVzIGxpa2UgRlVMTCBtb2RlIGNsaWVudCBhbmQgd2UgaGF2ZSBj
cmVhdGVkCiAvLyBwb3J0IHdoaWNoIHJlc3BvbmRzIHRvIHRoZSBwaW5nIG1lc3NhZ2UganVzdCBs
aWtlIExJVEUgY2xpZW50LgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0SWNlTGl0ZUNvbm5lY3Rpdml0
eSkgewotICBUZXN0UG9ydCogaWNlX2Z1bGxfcG9ydCA9CisgIGF1dG8gaWNlX2Z1bGxfcG9ydCA9
CiAgICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIiwKICAg
ICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcsIGtUaWVicmVh
a2VyMSk7CisgIGF1dG8qIGljZV9mdWxsX3BvcnRfcHRyID0gaWNlX2Z1bGxfcG9ydC5nZXQoKTsK
IAotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IGljZV9saXRlX3BvcnQoCi0gICAgICBDcmVh
dGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIiwgY3JpY2tldDo6SUNFUk9M
RV9DT05UUk9MTEVELAotICAgICAgICAgICAgICAgICAgICAga1RpZWJyZWFrZXIyKSk7CisgIGF1
dG8gaWNlX2xpdGVfcG9ydCA9IENyZWF0ZVRlc3RQb3J0KAorICAgICAga0xvY2FsQWRkcjIsICJy
ZnJhZyIsICJycGFzcyIsIGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCwga1RpZWJyZWFrZXIy
KTsKICAgLy8gU2V0dXAgVGVzdENoYW5uZWwuIFRoaXMgYmVoYXZlcyBsaWtlIEZVTEwgbW9kZSBj
bGllbnQuCi0gIFRlc3RDaGFubmVsIGNoMShpY2VfZnVsbF9wb3J0KTsKKyAgVGVzdENoYW5uZWwg
Y2gxKHN0ZDo6bW92ZShpY2VfZnVsbF9wb3J0KSk7CiAgIGNoMS5TZXRJY2VNb2RlKElDRU1PREVf
RlVMTCk7CiAKICAgLy8gU3RhcnQgZ2F0aGVyaW5nIGNhbmRpZGF0ZXMuCkBAIC0yNzM0LDI0ICsy
Njk5LDI0IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdEljZUxpdGVDb25uZWN0aXZpdHkpIHsKIAog
ICAvLyBWZXJpZnkgc3R1biBwaW5nIGlzIHdpdGhvdXQgVVNFX0NBTkRJREFURV9BVFRSLiBHZXR0
aW5nIG1lc3NhZ2UgZGlyZWN0bHkKICAgLy8gZnJvbSBwb3J0LgotICBBU1NFUlRfVFJVRV9XQUlU
KGljZV9mdWxsX3BvcnQtPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVvdXQp
OwotICBJY2VNZXNzYWdlKiBtc2cgPSBpY2VfZnVsbF9wb3J0LT5sYXN0X3N0dW5fbXNnKCk7Cisg
IEFTU0VSVF9UUlVFX1dBSVQoaWNlX2Z1bGxfcG9ydF9wdHItPmxhc3Rfc3R1bl9tc2coKSAhPSBO
VUxMLCBrRGVmYXVsdFRpbWVvdXQpOworICBJY2VNZXNzYWdlKiBtc2cgPSBpY2VfZnVsbF9wb3J0
X3B0ci0+bGFzdF9zdHVuX21zZygpOwogICBFWFBFQ1RfVFJVRShtc2ctPkdldEJ5dGVTdHJpbmco
U1RVTl9BVFRSX1VTRV9DQU5ESURBVEUpID09IE5VTEwpOwogCiAgIC8vIFJlc3BvbmQgd2l0aCBh
IEJJTkRJTkctUkVTUE9OU0UgZnJvbSBsaXRlbW9kZSBjbGllbnQuCiAgIC8vIE5PVEU6IElkZWFs
bHkgd2Ugc2hvdWxkJ3QgY3JlYXRlIGNvbm5lY3Rpb24gYXQgdGhpcyBzdGFnZSBmcm9tIGxpdGUK
ICAgLy8gcG9ydCwgYXMgaXQgc2hvdWxkIGJlIGRvbmUgb25seSBhZnRlciByZWNlaXZpbmcgcGlu
ZyB3aXRoIFVTRV9DQU5ESURBVEUuCiAgIC8vIEJ1dCB3ZSBuZWVkIGEgY29ubmVjdGlvbiB0byBz
ZW5kIGEgcmVzcG9uc2UgbWVzc2FnZS4KLSAgaWNlX2xpdGVfcG9ydC0+Q3JlYXRlQ29ubmVjdGlv
bihpY2VfZnVsbF9wb3J0LT5DYW5kaWRhdGVzKClbMF0sCisgIGljZV9saXRlX3BvcnQtPkNyZWF0
ZUNvbm5lY3Rpb24oaWNlX2Z1bGxfcG9ydF9wdHItPkNhbmRpZGF0ZXMoKVswXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpQb3J0OjpPUklHSU5fTUVTU0FHRSk7
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxJY2VNZXNzYWdlPiByZXF1ZXN0KENvcHlTdHVuTWVzc2FnZSht
c2cpKTsKLSAgaWNlX2xpdGVfcG9ydC0+U2VuZEJpbmRpbmdSZXNwb25zZShyZXF1ZXN0LmdldCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljZV9mdWxsX3BvcnQtPkNh
bmRpZGF0ZXMoKVswXS5hZGRyZXNzKCkpOworICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4g
cmVxdWVzdCA9IENvcHlTdHVuTWVzc2FnZSgqbXNnKTsKKyAgaWNlX2xpdGVfcG9ydC0+U2VuZEJp
bmRpbmdSZXNwb25zZSgKKyAgICAgIHJlcXVlc3QuZ2V0KCksIGljZV9mdWxsX3BvcnRfcHRyLT5D
YW5kaWRhdGVzKClbMF0uYWRkcmVzcygpKTsKIAogICAvLyBGZWVkaW5nIHRoZSByZXNwb25lIG1l
c3NhZ2UgZnJvbSBsaXRlbW9kZSB0byB0aGUgZnVsbCBtb2RlIGNvbm5lY3Rpb24uCiAgIGNoMS5j
b25uKCktPk9uUmVhZFBhY2tldChpY2VfbGl0ZV9wb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8
Y2hhcj4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljZV9saXRlX3BvcnQtPmxhc3Rf
c3R1bl9idWYoKS0+c2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNr
ZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcGFja2V0X3RpbWVfdXMg
Ki8gLTEpOwogICAvLyBWZXJpZnlpbmcgZnVsbCBtb2RlIGNvbm5lY3Rpb24gYmVjb21lcyB3cml0
YWJsZSBmcm9tIHRoZSByZXNwb25zZS4KICAgRVhQRUNUX0VRX1dBSVQoQ29ubmVjdGlvbjo6U1RB
VEVfV1JJVEFCTEUsIGNoMS5jb25uKCktPndyaXRlX3N0YXRlKCksCiAgICAgICAgICAgICAgICAg
IGtEZWZhdWx0VGltZW91dCk7CkBAIC0yNzU5LDExICsyNzI0LDExIEBAIFRFU1RfRihQb3J0VGVz
dCwgVGVzdEljZUxpdGVDb25uZWN0aXZpdHkpIHsKIAogICAvLyBDbGVhciBleGlzdGluZyBzdHVu
IG1lc3NzYWdlcy4gT3RoZXJ3aXNlIHdlIHdpbGwgcHJvY2VzcyBvbGQgc3R1bgogICAvLyBtZXNz
YWdlIHJpZ2h0IGFmdGVyIHdlIHNlbmQgcGluZy4KLSAgaWNlX2Z1bGxfcG9ydC0+UmVzZXQoKTsK
KyAgaWNlX2Z1bGxfcG9ydF9wdHItPlJlc2V0KCk7CiAgIC8vIFNlbmQgcGluZy4gVGhpcyBtdXN0
IGhhdmUgVVNFX0NBTkRJREFURV9BVFRSLgogICBjaDEuUGluZygpOwotICBBU1NFUlRfVFJVRV9X
QUlUKGljZV9mdWxsX3BvcnQtPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVv
dXQpOwotICBtc2cgPSBpY2VfZnVsbF9wb3J0LT5sYXN0X3N0dW5fbXNnKCk7CisgIEFTU0VSVF9U
UlVFX1dBSVQoaWNlX2Z1bGxfcG9ydF9wdHItPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxMLCBrRGVm
YXVsdFRpbWVvdXQpOworICBtc2cgPSBpY2VfZnVsbF9wb3J0X3B0ci0+bGFzdF9zdHVuX21zZygp
OwogICBFWFBFQ1RfVFJVRShtc2ctPkdldEJ5dGVTdHJpbmcoU1RVTl9BVFRSX1VTRV9DQU5ESURB
VEUpICE9IE5VTEwpOwogICBjaDEuU3RvcCgpOwogfQpAQCAtMjc3NCwyMSArMjczOSwyMSBAQCBU
RVNUX0YoUG9ydFRlc3QsIFRlc3RJY2VMaXRlQ29ubmVjdGl2aXR5KSB7CiBURVNUX0YoUG9ydFRl
c3QsIFRlc3RQb3J0VGltZW91dElmTm90S2VwdEFsaXZlKSB7CiAgIHJ0Yzo6U2NvcGVkRmFrZUNs
b2NrIGNsb2NrOwogICBpbnQgdGltZW91dF9kZWxheSA9IDEwMDsKLSAgVURQUG9ydCogcG9ydDEg
PSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKLSAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVk
KHBvcnQxKTsKKyAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOworICBD
b25uZWN0VG9TaWduYWxEZXN0cm95ZWQocG9ydDEuZ2V0KCkpOwogICBwb3J0MS0+c2V0X3RpbWVv
dXRfZGVsYXkodGltZW91dF9kZWxheSk7ICAvLyBtaWxsaXNlY29uZHMKICAgcG9ydDEtPlNldElj
ZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIHBvcnQxLT5TZXRJY2VUaWVi
cmVha2VyKGtUaWVicmVha2VyMSk7CiAKLSAgVURQUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0
KGtMb2NhbEFkZHIyKTsKLSAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQyKTsKKyAgYXV0
byBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOworICBDb25uZWN0VG9TaWduYWxE
ZXN0cm95ZWQocG9ydDIuZ2V0KCkpOwogICBwb3J0Mi0+c2V0X3RpbWVvdXRfZGVsYXkodGltZW91
dF9kZWxheSk7ICAvLyBtaWxsaXNlY29uZHMKICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6
SUNFUk9MRV9DT05UUk9MTEVEKTsKICAgcG9ydDItPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFr
ZXIyKTsKIAogICAvLyBTZXQgdXAgY2hhbm5lbHMgYW5kIGVuc3VyZSBib3RoIHBvcnRzIHdpbGwg
YmUgZGVsZXRlZC4KLSAgVGVzdENoYW5uZWwgY2gxKHBvcnQxKTsKLSAgVGVzdENoYW5uZWwgY2gy
KHBvcnQyKTsKKyAgVGVzdENoYW5uZWwgY2gxKHN0ZDo6bW92ZShwb3J0MSkpOworICBUZXN0Q2hh
bm5lbCBjaDIoc3RkOjptb3ZlKHBvcnQyKSk7CiAKICAgLy8gU2ltdWxhdGUgYSBjb25uZWN0aW9u
IHRoYXQgc3VjY2VlZHMsIGFuZCB0aGVuIGlzIGRlc3Ryb3llZC4KICAgU3RhcnRDb25uZWN0QW5k
U3RvcENoYW5uZWxzKCZjaDEsICZjaDIpOwpAQCAtMjgwMywyMiArMjc2OCwyMiBAQCBURVNUX0Yo
UG9ydFRlc3QsIFRlc3RQb3J0VGltZW91dElmTm90S2VwdEFsaXZlKSB7CiBURVNUX0YoUG9ydFRl
c3QsIFRlc3RQb3J0VGltZW91dEFmdGVyTmV3Q29ubmVjdGlvbkNyZWF0ZWRBbmREZXN0cm95ZWQp
IHsKICAgcnRjOjpTY29wZWRGYWtlQ2xvY2sgY2xvY2s7CiAgIGludCB0aW1lb3V0X2RlbGF5ID0g
MTAwOwotICBVRFBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwotICBD
b25uZWN0VG9TaWduYWxEZXN0cm95ZWQocG9ydDEpOworICBhdXRvIHBvcnQxID0gQ3JlYXRlVWRw
UG9ydChrTG9jYWxBZGRyMSk7CisgIENvbm5lY3RUb1NpZ25hbERlc3Ryb3llZChwb3J0MS5nZXQo
KSk7CiAgIHBvcnQxLT5zZXRfdGltZW91dF9kZWxheSh0aW1lb3V0X2RlbGF5KTsgIC8vIG1pbGxp
c2Vjb25kcwogICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5H
KTsKICAgcG9ydDEtPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKIAotICBVRFBQb3J0
KiBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOwotICBDb25uZWN0VG9TaWduYWxE
ZXN0cm95ZWQocG9ydDIpOworICBhdXRvIHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRy
Mik7CisgIENvbm5lY3RUb1NpZ25hbERlc3Ryb3llZChwb3J0Mi5nZXQoKSk7CiAgIHBvcnQyLT5z
ZXRfdGltZW91dF9kZWxheSh0aW1lb3V0X2RlbGF5KTsgIC8vIG1pbGxpc2Vjb25kcwogCiAgIHBv
cnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CiAgIHBvcnQyLT5T
ZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMik7CiAKICAgLy8gU2V0IHVwIGNoYW5uZWxzIGFu
ZCBlbnN1cmUgYm90aCBwb3J0cyB3aWxsIGJlIGRlbGV0ZWQuCi0gIFRlc3RDaGFubmVsIGNoMShw
b3J0MSk7Ci0gIFRlc3RDaGFubmVsIGNoMihwb3J0Mik7CisgIFRlc3RDaGFubmVsIGNoMShzdGQ6
Om1vdmUocG9ydDEpKTsKKyAgVGVzdENoYW5uZWwgY2gyKHN0ZDo6bW92ZShwb3J0MikpOwogCiAg
IC8vIFNpbXVsYXRlIGEgY29ubmVjdGlvbiB0aGF0IHN1Y2NlZWRzLCBhbmQgdGhlbiBpcyBkZXN0
cm95ZWQuCiAgIFN0YXJ0Q29ubmVjdEFuZFN0b3BDaGFubmVscygmY2gxLCAmY2gyKTsKQEAgLTI4
NDQsMTQgKzI4MDksMTQgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0UG9ydFRpbWVvdXRBZnRlck5l
d0Nvbm5lY3Rpb25DcmVhdGVkQW5kRGVzdHJveWVkKSB7CiBURVNUX0YoUG9ydFRlc3QsIFRlc3RQ
b3J0Tm90VGltZW91dFVudGlsUHJ1bmVkKSB7CiAgIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGNsb2Nr
OwogICBpbnQgdGltZW91dF9kZWxheSA9IDEwMDsKLSAgVURQUG9ydCogcG9ydDEgPSBDcmVhdGVV
ZHBQb3J0KGtMb2NhbEFkZHIxKTsKLSAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQxKTsK
KyAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOworICBDb25uZWN0VG9T
aWduYWxEZXN0cm95ZWQocG9ydDEuZ2V0KCkpOwogICBwb3J0MS0+c2V0X3RpbWVvdXRfZGVsYXko
dGltZW91dF9kZWxheSk7ICAvLyBtaWxsaXNlY29uZHMKICAgcG9ydDEtPlNldEljZVJvbGUoY3Jp
Y2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIHBvcnQxLT5TZXRJY2VUaWVicmVha2VyKGtU
aWVicmVha2VyMSk7CiAKLSAgVURQUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFk
ZHIyKTsKLSAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQyKTsKKyAgYXV0byBwb3J0MiA9
IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOworICBDb25uZWN0VG9TaWduYWxEZXN0cm95ZWQo
cG9ydDIuZ2V0KCkpOwogICBwb3J0Mi0+c2V0X3RpbWVvdXRfZGVsYXkodGltZW91dF9kZWxheSk7
ICAvLyBtaWxsaXNlY29uZHMKICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9D
T05UUk9MTEVEKTsKICAgcG9ydDItPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIyKTsKQEAg
LTI4NjIsNDAgKzI4MjcsMzkgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0UG9ydE5vdFRpbWVvdXRV
bnRpbFBydW5lZCkgewogICBwb3J0Mi0+c2V0X2NvbXBvbmVudChjcmlja2V0OjpJQ0VfQ0FORElE
QVRFX0NPTVBPTkVOVF9ERUZBVUxUKTsKIAogICAvLyBTZXQgdXAgY2hhbm5lbHMgYW5kIGtlZXAg
dGhlIHBvcnQgYWxpdmUuCi0gIFRlc3RDaGFubmVsIGNoMShwb3J0MSk7Ci0gIFRlc3RDaGFubmVs
IGNoMihwb3J0Mik7CisgIFRlc3RDaGFubmVsIGNoMShzdGQ6Om1vdmUocG9ydDEpKTsKKyAgVGVz
dENoYW5uZWwgY2gyKHN0ZDo6bW92ZShwb3J0MikpOwogICAvLyBTaW11bGF0ZSBhIGNvbm5lY3Rp
b24gdGhhdCBzdWNjZWVkcywgYW5kIHRoZW4gaXMgZGVzdHJveWVkLiBCdXQgcG9ydHMKICAgLy8g
YXJlIGtlcHQgYWxpdmUuIFBvcnRzIHdvbid0IGJlIGRlc3Ryb3llZC4KICAgU3RhcnRDb25uZWN0
QW5kU3RvcENoYW5uZWxzKCZjaDEsICZjaDIpOwotICBwb3J0MS0+S2VlcEFsaXZlVW50aWxQcnVu
ZWQoKTsKLSAgcG9ydDItPktlZXBBbGl2ZVVudGlsUHJ1bmVkKCk7CisgIGNoMS5wb3J0KCktPktl
ZXBBbGl2ZVVudGlsUHJ1bmVkKCk7CisgIGNoMi5wb3J0KCktPktlZXBBbGl2ZVVudGlsUHJ1bmVk
KCk7CiAgIFNJTVVMQVRFRF9XQUlUKHBvcnRzX2Rlc3Ryb3llZCgpID4gMCwgMTUwLCBjbG9jayk7
CiAgIEVYUEVDVF9FUSgwLCBwb3J0c19kZXN0cm95ZWQoKSk7CiAKICAgLy8gSWYgdGhleSBhcmUg
cHJ1bmVkIG5vdywgdGhleSB3aWxsIGJlIGRlc3Ryb3llZCByaWdodCBhd2F5LgotICBwb3J0MS0+
UHJ1bmUoKTsKLSAgcG9ydDItPlBydW5lKCk7CisgIGNoMS5wb3J0KCktPlBydW5lKCk7CisgIGNo
Mi5wb3J0KCktPlBydW5lKCk7CiAgIC8vIFRoZSBwb3J0cyBvbiBib3RoIHNpZGVzIHNob3VsZCBi
ZSBkZXN0cm95ZWQgYWZ0ZXIgdGltZW91dC4KICAgRVhQRUNUX1RSVUVfU0lNVUxBVEVEX1dBSVQo
cG9ydHNfZGVzdHJveWVkKCkgPT0gMiwgMSwgY2xvY2spOwogfQogCiBURVNUX0YoUG9ydFRlc3Qs
IFRlc3RTdXBwb3J0c1Byb3RvY29sKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiB1ZHBfcG9y
dChDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKSk7CisgIGF1dG8gdWRwX3BvcnQgPSBDcmVhdGVV
ZHBQb3J0KGtMb2NhbEFkZHIxKTsKICAgRVhQRUNUX1RSVUUodWRwX3BvcnQtPlN1cHBvcnRzUHJv
dG9jb2woVURQX1BST1RPQ09MX05BTUUpKTsKICAgRVhQRUNUX0ZBTFNFKHVkcF9wb3J0LT5TdXBw
b3J0c1Byb3RvY29sKFRDUF9QUk9UT0NPTF9OQU1FKSk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFBv
cnQ+IHN0dW5fcG9ydCgKLSAgICAgIENyZWF0ZVN0dW5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29j
a2V0X2ZhY3RvcnkxKCkpKTsKKyAgYXV0byBzdHVuX3BvcnQgPSBDcmVhdGVTdHVuUG9ydChrTG9j
YWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpKTsKICAgRVhQRUNUX1RSVUUoc3R1bl9wb3J0
LT5TdXBwb3J0c1Byb3RvY29sKFVEUF9QUk9UT0NPTF9OQU1FKSk7CiAgIEVYUEVDVF9GQUxTRShz
dHVuX3BvcnQtPlN1cHBvcnRzUHJvdG9jb2woVENQX1BST1RPQ09MX05BTUUpKTsKIAotICBzdGQ6
OnVuaXF1ZV9wdHI8UG9ydD4gdGNwX3BvcnQoQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSkpOwor
ICBhdXRvIHRjcF9wb3J0ID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7CiAgIEVYUEVDVF9U
UlVFKHRjcF9wb3J0LT5TdXBwb3J0c1Byb3RvY29sKFRDUF9QUk9UT0NPTF9OQU1FKSk7CiAgIEVY
UEVDVF9UUlVFKHRjcF9wb3J0LT5TdXBwb3J0c1Byb3RvY29sKFNTTFRDUF9QUk9UT0NPTF9OQU1F
KSk7CiAgIEVYUEVDVF9GQUxTRSh0Y3BfcG9ydC0+U3VwcG9ydHNQcm90b2NvbChVRFBfUFJPVE9D
T0xfTkFNRSkpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiB0dXJuX3BvcnQoCi0gICAgICBD
cmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19V
RFAsIFBST1RPX1VEUCkpOworICBhdXRvIHR1cm5fcG9ydCA9CisgICAgICBDcmVhdGVUdXJuUG9y
dChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VE
UCk7CiAgIEVYUEVDVF9UUlVFKHR1cm5fcG9ydC0+U3VwcG9ydHNQcm90b2NvbChVRFBfUFJPVE9D
T0xfTkFNRSkpOwogICBFWFBFQ1RfRkFMU0UodHVybl9wb3J0LT5TdXBwb3J0c1Byb3RvY29sKFRD
UF9QUk9UT0NPTF9OQU1FKSk7CiB9CkBAIC0yOTAzLDggKzI4NjcsNyBAQCBURVNUX0YoUG9ydFRl
c3QsIFRlc3RTdXBwb3J0c1Byb3RvY29sKSB7CiAvLyBUZXN0IHRoYXQgU2V0SWNlUGFyYW1ldGVy
cyB1cGRhdGVzIHRoZSBjb21wb25lbnQsIHVmcmFnIGFuZCBwYXNzd29yZAogLy8gb24gYm90aCB0
aGUgcG9ydCBpdHNlbGYgYW5kIGl0cyBjYW5kaWRhdGVzLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0
U2V0SWNlUGFyYW1ldGVycykgewotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHBvcnQoCi0g
ICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgInVmcmFnMSIsICJwYXNzd29yZDEiKSk7
CisgIGF1dG8gcG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAidWZyYWcxIiwgInBh
c3N3b3JkMSIpOwogICBwb3J0LT5QcmVwYXJlQWRkcmVzcygpOwogICBFWFBFQ1RfRVEoMVVMLCBw
b3J0LT5DYW5kaWRhdGVzKCkuc2l6ZSgpKTsKICAgcG9ydC0+U2V0SWNlUGFyYW1ldGVycygxLCAi
dWZyYWcyIiwgInBhc3N3b3JkMiIpOwpAQCAtMjkxOCw4ICsyODgxLDcgQEAgVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0U2V0SWNlUGFyYW1ldGVycykgewogfQogCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RB
ZGRDb25uZWN0aW9uV2l0aFNhbWVBZGRyZXNzKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9y
dD4gcG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAidWZyYWcxIiwgInBh
c3N3b3JkMSIpKTsKKyAgYXV0byBwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJ1
ZnJhZzEiLCAicGFzc3dvcmQxIik7CiAgIHBvcnQtPlByZXBhcmVBZGRyZXNzKCk7CiAgIEVYUEVD
VF9FUSgxdSwgcG9ydC0+Q2FuZGlkYXRlcygpLnNpemUoKSk7CiAgIHJ0Yzo6U29ja2V0QWRkcmVz
cyBhZGRyZXNzKCIxLjEuMS4xIiwgNTAwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9j
YXRvci5jYwppbmRleCA1NDcwYjViODJlNjU1ZTM2NDNiZWUwZWQ5ZjQyZWI5ZWI3MDY1NzhhLi5k
M2IzYTU2ZWRkOTI2YzdjMGEwMzE0YmM1M2M4NmE0NzI5NzRjMjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2Nh
dG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3BvcnRhbGxvY2F0b3IuY2MKQEAgLTEwLDggKzEwLDEwIEBACiAKICNpbmNsdWRlICJw
MnAvYmFzZS9wb3J0YWxsb2NhdG9yLmgiCiAKKyNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRl
IDx1dGlsaXR5PgogCisjaW5jbHVkZSAicDJwL2Jhc2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvci5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CkBA
IC0xMjEsNiArMTIzLDEwIEBAIFBvcnRBbGxvY2F0b3I6On5Qb3J0QWxsb2NhdG9yKCkgewogICBD
aGVja1J1bk9uVmFsaWRUaHJlYWRJZkluaXRpYWxpemVkKCk7CiB9CiAKK3ZvaWQgUG9ydEFsbG9j
YXRvcjo6c2V0X3Jlc3RyaWN0X2ljZV9jcmVkZW50aWFsc19jaGFuZ2UoYm9vbCB2YWx1ZSkgewor
ICByZXN0cmljdF9pY2VfY3JlZGVudGlhbHNfY2hhbmdlXyA9IHZhbHVlOworfQorCiBib29sIFBv
cnRBbGxvY2F0b3I6OlNldENvbmZpZ3VyYXRpb24oCiAgICAgY29uc3QgU2VydmVyQWRkcmVzc2Vz
JiBzdHVuX3NlcnZlcnMsCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UmVsYXlTZXJ2ZXJDb25maWc+
JiB0dXJuX3NlcnZlcnMsCkBAIC0xNjYsOCArMTcyLDggQEAgYm9vbCBQb3J0QWxsb2NhdG9yOjpT
ZXRDb25maWd1cmF0aW9uKAogICAvLyBJZiB8Y2FuZGlkYXRlX3Bvb2xfc2l6ZV98IGlzIGxlc3Mg
dGhhbiB0aGUgbnVtYmVyIG9mIHBvb2xlZCBzZXNzaW9ucywgZ2V0CiAgIC8vIHJpZCBvZiB0aGUg
ZXh0cmFzLgogICB3aGlsZSAoY2FuZGlkYXRlX3Bvb2xfc2l6ZV8gPCBzdGF0aWNfY2FzdDxpbnQ+
KHBvb2xlZF9zZXNzaW9uc18uc2l6ZSgpKSkgewotICAgIHBvb2xlZF9zZXNzaW9uc18uZnJvbnQo
KS5yZXNldChudWxscHRyKTsKLSAgICBwb29sZWRfc2Vzc2lvbnNfLnBvcF9mcm9udCgpOworICAg
IHBvb2xlZF9zZXNzaW9uc18uYmFjaygpLnJlc2V0KG51bGxwdHIpOworICAgIHBvb2xlZF9zZXNz
aW9uc18ucG9wX2JhY2soKTsKICAgfQogCiAgIC8vIHxzdHVuX2NhbmRpZGF0ZV9rZWVwYWxpdmVf
aW50ZXJ2YWxffCB3aWxsIGJlIHVzZWQgaW4gU1RVTiBwb3J0IGFsbG9jYXRpb24KQEAgLTE4Myw3
ICsxODksMTEgQEAgYm9vbCBQb3J0QWxsb2NhdG9yOjpTZXRDb25maWd1cmF0aW9uKAogICAvLyBJ
ZiB8Y2FuZGlkYXRlX3Bvb2xfc2l6ZV98IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHBv
b2xlZCBzZXNzaW9ucywKICAgLy8gY3JlYXRlIG5ldyBzZXNzaW9ucy4KICAgd2hpbGUgKHN0YXRp
Y19jYXN0PGludD4ocG9vbGVkX3Nlc3Npb25zXy5zaXplKCkpIDwgY2FuZGlkYXRlX3Bvb2xfc2l6
ZV8pIHsKLSAgICBQb3J0QWxsb2NhdG9yU2Vzc2lvbiogcG9vbGVkX3Nlc3Npb24gPSBDcmVhdGVT
ZXNzaW9uSW50ZXJuYWwoIiIsIDAsICIiLCAiIik7CisgICAgSWNlUGFyYW1ldGVycyBpY2VDcmVk
ZW50aWFscyA9CisgICAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3I6OkNyZWF0ZVJhbmRvbUlj
ZUNyZWRlbnRpYWxzKCk7CisgICAgUG9ydEFsbG9jYXRvclNlc3Npb24qIHBvb2xlZF9zZXNzaW9u
ID0KKyAgICAgICAgQ3JlYXRlU2Vzc2lvbkludGVybmFsKCIiLCAwLCBpY2VDcmVkZW50aWFscy51
ZnJhZywgaWNlQ3JlZGVudGlhbHMucHdkKTsKKyAgICBwb29sZWRfc2Vzc2lvbi0+c2V0X3Bvb2xl
ZCh0cnVlKTsKICAgICBwb29sZWRfc2Vzc2lvbi0+U3RhcnRHZXR0aW5nUG9ydHMoKTsKICAgICBw
b29sZWRfc2Vzc2lvbnNfLnB1c2hfYmFjaygKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvcnRB
bGxvY2F0b3JTZXNzaW9uPihwb29sZWRfc2Vzc2lvbikpOwpAQCAtMjE0LDIyICsyMjQsNTAgQEAg
c3RkOjp1bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9uPiBQb3J0QWxsb2NhdG9yOjpUYWtl
UG9vbGVkU2Vzc2lvbigKICAgaWYgKHBvb2xlZF9zZXNzaW9uc18uZW1wdHkoKSkgewogICAgIHJl
dHVybiBudWxscHRyOwogICB9Ci0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0QWxsb2NhdG9yU2Vzc2lv
bj4gcmV0ID0KLSAgICAgIHN0ZDo6bW92ZShwb29sZWRfc2Vzc2lvbnNfLmZyb250KCkpOworCisg
IEljZVBhcmFtZXRlcnMgY3JlZGVudGlhbHMoaWNlX3VmcmFnLCBpY2VfcHdkLCBmYWxzZSk7Cisg
IC8vIElmIHJlc3RyaWN0X2ljZV9jcmVkZW50aWFsc19jaGFuZ2VfIGlzIFRSVUUsIHRoZW4gY2Fs
bCBGaW5kUG9vbGVkU2Vzc2lvbgorICAvLyB3aXRoIGljZSBjcmVkZW50aWFscy4gT3RoZXJ3aXNl
IGNhbGwgaXQgd2l0aCBudWxscHRyIHdoaWNoIG1lYW5zCisgIC8vICJmaW5kIGFueSIgcG9vbGVk
IHNlc3Npb24uCisgIGF1dG8gY2l0ID0gRmluZFBvb2xlZFNlc3Npb24ocmVzdHJpY3RfaWNlX2Ny
ZWRlbnRpYWxzX2NoYW5nZV8gPyAmY3JlZGVudGlhbHMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxwdHIpOworICBp
ZiAoY2l0ID09IHBvb2xlZF9zZXNzaW9uc18uZW5kKCkpIHsKKyAgICByZXR1cm4gbnVsbHB0cjsK
KyAgfQorCisgIGF1dG8gaXQgPQorICAgICAgcG9vbGVkX3Nlc3Npb25zXy5iZWdpbigpICsgc3Rk
OjpkaXN0YW5jZShwb29sZWRfc2Vzc2lvbnNfLmNiZWdpbigpLCBjaXQpOworICBzdGQ6OnVuaXF1
ZV9wdHI8UG9ydEFsbG9jYXRvclNlc3Npb24+IHJldCA9IHN0ZDo6bW92ZSgqaXQpOwogICByZXQt
PlNldEljZVBhcmFtZXRlcnMoY29udGVudF9uYW1lLCBjb21wb25lbnQsIGljZV91ZnJhZywgaWNl
X3B3ZCk7Ci0gIC8vIEFjY29yZGluZyB0byBKU0VQLCBhIHBvb2xlZCBzZXNzaW9uIHNob3VsZCBm
aWx0ZXIgY2FuZGlkYXRlcyBvbmx5IGFmdGVyCi0gIC8vIGl0J3MgdGFrZW4gb3V0IG9mIHRoZSBw
b29sLgorICByZXQtPnNldF9wb29sZWQoZmFsc2UpOworICAvLyBBY2NvcmRpbmcgdG8gSlNFUCwg
YSBwb29sZWQgc2Vzc2lvbiBzaG91bGQgZmlsdGVyIGNhbmRpZGF0ZXMgb25seQorICAvLyBhZnRl
ciBpdCdzIHRha2VuIG91dCBvZiB0aGUgcG9vbC4KICAgcmV0LT5TZXRDYW5kaWRhdGVGaWx0ZXIo
Y2FuZGlkYXRlX2ZpbHRlcigpKTsKLSAgcG9vbGVkX3Nlc3Npb25zXy5wb3BfZnJvbnQoKTsKKyAg
cG9vbGVkX3Nlc3Npb25zXy5lcmFzZShpdCk7CiAgIHJldHVybiByZXQ7CiB9CiAKLWNvbnN0IFBv
cnRBbGxvY2F0b3JTZXNzaW9uKiBQb3J0QWxsb2NhdG9yOjpHZXRQb29sZWRTZXNzaW9uKCkgY29u
c3QgeworY29uc3QgUG9ydEFsbG9jYXRvclNlc3Npb24qIFBvcnRBbGxvY2F0b3I6OkdldFBvb2xl
ZFNlc3Npb24oCisgICAgY29uc3QgSWNlUGFyYW1ldGVycyogaWNlX2NyZWRlbnRpYWxzKSBjb25z
dCB7CiAgIENoZWNrUnVuT25WYWxpZFRocmVhZEFuZEluaXRpYWxpemVkKCk7Ci0gIGlmIChwb29s
ZWRfc2Vzc2lvbnNfLmVtcHR5KCkpIHsKKyAgYXV0byBpdCA9IEZpbmRQb29sZWRTZXNzaW9uKGlj
ZV9jcmVkZW50aWFscyk7CisgIGlmIChpdCA9PSBwb29sZWRfc2Vzc2lvbnNfLmVuZCgpKSB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGl0LT5nZXQoKTsKKyAg
fQorfQorCitzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UG9ydEFsbG9jYXRvclNlc3Npb24+
Pjo6Y29uc3RfaXRlcmF0b3IKK1BvcnRBbGxvY2F0b3I6OkZpbmRQb29sZWRTZXNzaW9uKGNvbnN0
IEljZVBhcmFtZXRlcnMqIGljZV9jcmVkZW50aWFscykgY29uc3QgeworICBmb3IgKGF1dG8gaXQg
PSBwb29sZWRfc2Vzc2lvbnNfLmJlZ2luKCk7IGl0ICE9IHBvb2xlZF9zZXNzaW9uc18uZW5kKCk7
ICsraXQpIHsKKyAgICBpZiAoaWNlX2NyZWRlbnRpYWxzID09IG51bGxwdHIgfHwKKyAgICAgICAg
KCgqaXQpLT5pY2VfdWZyYWcoKSA9PSBpY2VfY3JlZGVudGlhbHMtPnVmcmFnICYmCisgICAgICAg
ICAoKml0KS0+aWNlX3B3ZCgpID09IGljZV9jcmVkZW50aWFscy0+cHdkKSkgeworICAgICAgcmV0
dXJuIGl0OworICAgIH0KICAgfQotICByZXR1cm4gcG9vbGVkX3Nlc3Npb25zXy5mcm9udCgpLmdl
dCgpOworICByZXR1cm4gcG9vbGVkX3Nlc3Npb25zXy5lbmQoKTsKIH0KIAogdm9pZCBQb3J0QWxs
b2NhdG9yOjpGcmVlemVDYW5kaWRhdGVQb29sKCkgewpAQCAtMjUwLDQgKzI4OCwxNCBAQCB2b2lk
IFBvcnRBbGxvY2F0b3I6OkdldENhbmRpZGF0ZVN0YXRzRnJvbVBvb2xlZFNlc3Npb25zKAogICB9
CiB9CiAKK3N0ZDo6dmVjdG9yPEljZVBhcmFtZXRlcnM+IFBvcnRBbGxvY2F0b3I6OkdldFBvb2xl
ZEljZUNyZWRlbnRpYWxzKCkgeworICBDaGVja1J1bk9uVmFsaWRUaHJlYWRBbmRJbml0aWFsaXpl
ZCgpOworICBzdGQ6OnZlY3RvcjxJY2VQYXJhbWV0ZXJzPiBsaXN0OworICBmb3IgKGNvbnN0IGF1
dG8mIHNlc3Npb24gOiBwb29sZWRfc2Vzc2lvbnNfKSB7CisgICAgbGlzdC5wdXNoX2JhY2soCisg
ICAgICAgIEljZVBhcmFtZXRlcnMoc2Vzc2lvbi0+aWNlX3VmcmFnKCksIHNlc3Npb24tPmljZV9w
d2QoKSwgZmFsc2UpKTsKKyAgfQorICByZXR1cm4gbGlzdDsKK30KKwogfSAgLy8gbmFtZXNwYWNl
IGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3IuaAppbmRleCA4YmQ3MDk2
NDJjOGFlYzM4NDY1ODFiZThkNmM2YjA2ZTc4YmNlMDIwLi43MDI2ZjJiMmI2MzIwNGY3MmFhYmQ3
MjMzNjlkNWMzZjE5ZDI0OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRvci5o
CkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3Byb3h5aW5mby5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmlj
YXRlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKICNpbmNsdWRlICJydGNf
YmFzZS90aHJlYWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgpAQCAt
MTQ2LDcgKzE0Nyw3IEBAIHN0cnVjdCBSZWxheUNyZWRlbnRpYWxzIHsKIAogdHlwZWRlZiBzdGQ6
OnZlY3RvcjxQcm90b2NvbEFkZHJlc3M+IFBvcnRMaXN0OwogLy8gVE9ETyhkZWFkYmVlZik6IFJl
bmFtZSB0byBUdXJuU2VydmVyQ29uZmlnLgotc3RydWN0IFJlbGF5U2VydmVyQ29uZmlnIHsKK3N0
cnVjdCBSVENfRVhQT1JUIFJlbGF5U2VydmVyQ29uZmlnIHsKICAgZXhwbGljaXQgUmVsYXlTZXJ2
ZXJDb25maWcoUmVsYXlUeXBlIHR5cGUpOwogICBSZWxheVNlcnZlckNvbmZpZyhjb25zdCBydGM6
OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB1c2VybmFtZSwKQEAgLTE4Myw3ICsxODQsNyBAQCBzdHJ1Y3QgUmVsYXlTZXJ2ZXJD
b25maWcgewogICBydGM6OlNTTENlcnRpZmljYXRlVmVyaWZpZXIqIHRsc19jZXJ0X3ZlcmlmaWVy
ID0gbnVsbHB0cjsKIH07CiAKLWNsYXNzIFBvcnRBbGxvY2F0b3JTZXNzaW9uIDogcHVibGljIHNp
Z3Nsb3Q6Omhhc19zbG90czw+IHsKK2NsYXNzIFJUQ19FWFBPUlQgUG9ydEFsbG9jYXRvclNlc3Np
b24gOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogIHB1YmxpYzoKICAgLy8gQ29udGVu
dCBuYW1lIHBhc3NlZCBpbiBtb3N0bHkgZm9yIGxvZ2dpbmcgYW5kIGRlYnVnZ2luZy4KICAgUG9y
dEFsbG9jYXRvclNlc3Npb24oY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKQEAgLTIw
MSw3ICsyMDIsNyBAQCBjbGFzcyBQb3J0QWxsb2NhdG9yU2Vzc2lvbiA6IHB1YmxpYyBzaWdzbG90
OjpoYXNfc2xvdHM8PiB7CiAgIGludCBjb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBjb21wb25l
bnRfOyB9CiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpY2VfdWZyYWcoKSBjb25zdCB7IHJldHVybiBp
Y2VfdWZyYWdfOyB9CiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpY2VfcHdkKCkgY29uc3QgeyByZXR1
cm4gaWNlX3B3ZF87IH0KLSAgYm9vbCBwb29sZWQoKSBjb25zdCB7IHJldHVybiBpY2VfdWZyYWdf
LmVtcHR5KCk7IH0KKyAgYm9vbCBwb29sZWQoKSBjb25zdCB7IHJldHVybiBwb29sZWRfOyB9CiAK
ICAgLy8gU2V0dGluZyB0aGlzIGZpbHRlciBzaG91bGQgYWZmZWN0IG5vdCBvbmx5IGNhbmRpZGF0
ZXMgZ2F0aGVyZWQgaW4gdGhlCiAgIC8vIGZ1dHVyZSwgYnV0IGNhbmRpZGF0ZXMgYWxyZWFkeSBn
YXRoZXJlZCBhbmQgcG9ydHMgYWxyZWFkeSAicmVhZHkiLApAQCAtMzA5LDYgKzMxMCw4IEBAIGNs
YXNzIFBvcnRBbGxvY2F0b3JTZXNzaW9uIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsK
ICAgICBVcGRhdGVJY2VQYXJhbWV0ZXJzSW50ZXJuYWwoKTsKICAgfQogCisgIHZvaWQgc2V0X3Bv
b2xlZChib29sIHZhbHVlKSB7IHBvb2xlZF8gPSB2YWx1ZTsgfQorCiAgIHVpbnQzMl90IGZsYWdz
XzsKICAgdWludDMyX3QgZ2VuZXJhdGlvbl87CiAgIHN0ZDo6c3RyaW5nIGNvbnRlbnRfbmFtZV87
CkBAIC0zMTYsNiArMzE5LDggQEAgY2xhc3MgUG9ydEFsbG9jYXRvclNlc3Npb24gOiBwdWJsaWMg
c2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICBzdGQ6OnN0cmluZyBpY2VfdWZyYWdfOwogICBzdGQ6
OnN0cmluZyBpY2VfcHdkXzsKIAorICBib29sIHBvb2xlZF8gPSBmYWxzZTsKKwogICAvLyBTZXRJ
Y2VQYXJhbWV0ZXJzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB3aGljaCBvbmx5IFBvcnRB
bGxvY2F0b3IKICAgLy8gc2hvdWxkIGJlIGFibGUgdG8gY2FsbC4KICAgZnJpZW5kIGNsYXNzIFBv
cnRBbGxvY2F0b3I7CkBAIC0zMjYsNyArMzMxLDcgQEAgY2xhc3MgUG9ydEFsbG9jYXRvclNlc3Np
b24gOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogLy8KIC8vIFRoaXMgYWxsb3dzIGEg
UG9ydEFsbG9jYXRvciBzdWJjbGFzcyB0byBiZSBjb25zdHJ1Y3RlZCBhbmQgY29uZmlndXJlZCBv
biBvbmUKIC8vIHRocmVhZCwgYW5kIHBhc3NlZCBpbnRvIGFuIG9iamVjdCB0aGF0IHVzZXMgaXQg
b24gYSBkaWZmZXJlbnQgdGhyZWFkLgotY2xhc3MgUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBzaWdz
bG90OjpoYXNfc2xvdHM8PiB7CitjbGFzcyBSVENfRVhQT1JUIFBvcnRBbGxvY2F0b3IgOiBwdWJs
aWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogIHB1YmxpYzoKICAgUG9ydEFsbG9jYXRvcigpOwog
ICB+UG9ydEFsbG9jYXRvcigpIG92ZXJyaWRlOwpAQCAtMzM1LDYgKzM0MCwxMSBAQCBjbGFzcyBQ
b3J0QWxsb2NhdG9yIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgLy8gY29uc3Ry
dWN0aW5nIGFuZCBjb25maWd1cmluZyB0aGUgUG9ydEFsbG9jYXRvciBzdWJjbGFzc2VzLgogICB2
aXJ0dWFsIHZvaWQgSW5pdGlhbGl6ZSgpOwogCisgIC8vIFNldCB0byB0cnVlIGlmIHNvbWUgUG9y
dHMgbmVlZCB0byBrbm93IHRoZSBJQ0UgY3JlZGVudGlhbHMgd2hlbiB0aGV5IGFyZQorICAvLyBj
cmVhdGVkLiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIFBvcnRBbGxvY2F0b3Igd2lsbCBvbmx5
IG1hdGNoIHBvb2xlZAorICAvLyBhbGxvY2F0b3Igc2Vzc2lvbnMgdG8gdGhlIElDRSB0cmFuc3Bv
cnQgd2l0aCB0aGUgc2FtZSBjcmVkZW50aWFscy4KKyAgdmlydHVhbCB2b2lkIHNldF9yZXN0cmlj
dF9pY2VfY3JlZGVudGlhbHNfY2hhbmdlKGJvb2wgdmFsdWUpOworCiAgIC8vIFNldCBTVFVOIGFu
ZCBUVVJOIHNlcnZlcnMgdG8gYmUgdXNlZCBpbiBmdXR1cmUgc2Vzc2lvbnMsIGFuZCBzZXQKICAg
Ly8gY2FuZGlkYXRlIHBvb2wgc2l6ZSwgYXMgZGVzY3JpYmVkIGluIEpTRVAuCiAgIC8vCkBAIC0z
OTIsNiArNDAyLDggQEAgY2xhc3MgUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBzaWdzbG90OjpoYXNf
c2xvdHM8PiB7CiAgIC8vCiAgIC8vIENhbGxlciB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHJldHVy
bmVkIHNlc3Npb24uCiAgIC8vCisgIC8vIElmIHJlc3RyaWN0X2ljZV9jcmVkZW50aWFsc19jaGFu
Z2UgaXMgVFJVRSwgdGhlbiBpdCB3aWxsIG9ubHkKKyAgLy8gICByZXR1cm4gYSBwb29sZWQgc2Vz
c2lvbiB3aXRoIG1hdGNoaW5nIGljZSBjcmVkZW50aWFscy4KICAgLy8gSWYgbm8gcG9vbGVkIHNl
c3Npb25zIGFyZSBhdmFpbGFibGUsIHJldHVybnMgbnVsbC4KICAgc3RkOjp1bmlxdWVfcHRyPFBv
cnRBbGxvY2F0b3JTZXNzaW9uPiBUYWtlUG9vbGVkU2Vzc2lvbigKICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBjb250ZW50X25hbWUsCkBAIC0zOTksOCArNDExLDEwIEBAIGNsYXNzIFBvcnRBbGxv
Y2F0b3IgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGljZV91ZnJhZywKICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpY2VfcHdkKTsKIAot
ICAvLyBSZXR1cm5zIHRoZSBuZXh0IHNlc3Npb24gdGhhdCB3b3VsZCBiZSByZXR1cm5lZCBieSBU
YWtlUG9vbGVkU2Vzc2lvbi4KLSAgY29uc3QgUG9ydEFsbG9jYXRvclNlc3Npb24qIEdldFBvb2xl
ZFNlc3Npb24oKSBjb25zdDsKKyAgLy8gUmV0dXJucyB0aGUgbmV4dCBzZXNzaW9uIHRoYXQgd291
bGQgYmUgcmV0dXJuZWQgYnkgVGFrZVBvb2xlZFNlc3Npb24KKyAgLy8gb3B0aW9uYWxseSByZXN0
cmljdGluZyBpdCB0byBzZXNzaW9ucyB3aXRoIHNwZWNpZmllZCBpY2UgY3JlZGVudGlhbHMuCisg
IGNvbnN0IFBvcnRBbGxvY2F0b3JTZXNzaW9uKiBHZXRQb29sZWRTZXNzaW9uKAorICAgICAgY29u
c3QgSWNlUGFyYW1ldGVycyogaWNlX2NyZWRlbnRpYWxzID0gbnVsbHB0cikgY29uc3Q7CiAKICAg
Ly8gQWZ0ZXIgRnJlZXplQ2FuZGlkYXRlUG9vbCBpcyBjYWxsZWQsIGNoYW5naW5nIHRoZSBjYW5k
aWRhdGUgcG9vbCBzaXplIHdpbGwKICAgLy8gbm8gbG9uZ2VyIGJlIGFsbG93ZWQsIGFuZCBjaGFu
Z2luZyBJQ0Ugc2VydmVycyB3aWxsIG5vdCBjYXVzZSBwb29sZWQKQEAgLTU0OCw2ICs1NjIsOSBA
QCBjbGFzcyBQb3J0QWxsb2NhdG9yIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAg
dmlydHVhbCB2b2lkIEdldENhbmRpZGF0ZVN0YXRzRnJvbVBvb2xlZFNlc3Npb25zKAogICAgICAg
Q2FuZGlkYXRlU3RhdHNMaXN0KiBjYW5kaWRhdGVfc3RhdHNfbGlzdCk7CiAKKyAgLy8gUmV0dXJu
IEljZVBhcmFtZXRlcnMgb2YgdGhlIHBvb2xlZCBzZXNzaW9ucy4KKyAgc3RkOjp2ZWN0b3I8SWNl
UGFyYW1ldGVycz4gR2V0UG9vbGVkSWNlQ3JlZGVudGlhbHMoKTsKKwogIHByb3RlY3RlZDoKICAg
dmlydHVhbCBQb3J0QWxsb2NhdG9yU2Vzc2lvbiogQ3JlYXRlU2Vzc2lvbkludGVybmFsKAogICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKQEAgLTU1NSw3ICs1NzIsNyBAQCBj
bGFzcyBQb3J0QWxsb2NhdG9yIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBpY2VfdWZyYWcsCiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
aWNlX3B3ZCkgPSAwOwogCi0gIGNvbnN0IHN0ZDo6ZGVxdWU8c3RkOjp1bmlxdWVfcHRyPFBvcnRB
bGxvY2F0b3JTZXNzaW9uPj4mIHBvb2xlZF9zZXNzaW9ucygpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9uPj4mIHBvb2xlZF9zZXNzaW9u
cygpIHsKICAgICByZXR1cm4gcG9vbGVkX3Nlc3Npb25zXzsKICAgfQogCkBAIC01ODYsNyArNjAz
LDcgQEAgY2xhc3MgUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7
CiAgIFNlcnZlckFkZHJlc3NlcyBzdHVuX3NlcnZlcnNfOwogICBzdGQ6OnZlY3RvcjxSZWxheVNl
cnZlckNvbmZpZz4gdHVybl9zZXJ2ZXJzXzsKICAgaW50IGNhbmRpZGF0ZV9wb29sX3NpemVfID0g
MDsgIC8vIExhc3QgdmFsdWUgcGFzc2VkIGludG8gU2V0Q29uZmlndXJhdGlvbi4KLSAgc3RkOjpk
ZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8UG9ydEFsbG9jYXRvclNlc3Npb24+PiBwb29sZWRfc2Vzc2lv
bnNfOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UG9ydEFsbG9jYXRvclNlc3Npb24+
PiBwb29sZWRfc2Vzc2lvbnNfOwogICBib29sIGNhbmRpZGF0ZV9wb29sX2Zyb3plbl8gPSBmYWxz
ZTsKICAgYm9vbCBwcnVuZV90dXJuX3BvcnRzXyA9IGZhbHNlOwogCkBAIC01OTYsNiArNjEzLDE1
IEBAIGNsYXNzIFBvcnRBbGxvY2F0b3IgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewog
ICB3ZWJydGM6OlR1cm5DdXN0b21pemVyKiB0dXJuX2N1c3RvbWl6ZXJfID0gbnVsbHB0cjsKIAog
ICBhYnNsOjpvcHRpb25hbDxpbnQ+IHN0dW5fY2FuZGlkYXRlX2tlZXBhbGl2ZV9pbnRlcnZhbF87
CisKKyAgLy8gSWYgdHJ1ZSwgVGFrZVBvb2xlZFNlc3Npb24oKSB3aWxsIG9ubHkgcmV0dXJuIHNl
c3Npb25zIHRoYXQgaGFzIHNhbWUgaWNlCisgIC8vIGNyZWRlbnRpYWxzIGFzIHJlcXVlc3RlZC4K
KyAgYm9vbCByZXN0cmljdF9pY2VfY3JlZGVudGlhbHNfY2hhbmdlXyA9IGZhbHNlOworCisgIC8v
IFJldHVybnMgaXRlcmF0b3IgdG8gcG9vbGVkIHNlc3Npb24gd2l0aCBzcGVjaWZpZWQgaWNlX2Ny
ZWRlbnRpYWxzIG9yIGZpcnN0CisgIC8vIGlmIGljZV9jcmVkZW50aWFscyBpcyBudWxscHRyLgor
ICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UG9ydEFsbG9jYXRvclNlc3Npb24+Pjo6Y29u
c3RfaXRlcmF0b3IKKyAgRmluZFBvb2xlZFNlc3Npb24oY29uc3QgSWNlUGFyYW1ldGVycyogaWNl
X2NyZWRlbnRpYWxzID0gbnVsbHB0cikgY29uc3Q7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgY3Jp
Y2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3JfdW5pdHRlc3Qu
Y2MKaW5kZXggMzg4N2E5MGRiMWYyOWJhNmYwODEyM2JiMTNlMmQ4Y2JmNTMyN2YxNy4uOGIzMTdm
NGQ1YTk1M2M4NDczMzI4MDliNmU2NmMyMDMxYmE2MzYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRvcl91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yX3VuaXR0ZXN0LmNjCkBAIC03MSw4ICs3MSw3IEBAIGNs
YXNzIFBvcnRBbGxvY2F0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBzaWdz
bG90OjpoYXNfc2xvdHM8PiB7CiAKICAgaW50IEdldEFsbFBvb2xlZFNlc3Npb25zUmV0dXJuQ291
bnQoKSB7CiAgICAgaW50IGNvdW50ID0gMDsKLSAgICB3aGlsZSAoR2V0UG9vbGVkU2Vzc2lvbigp
KSB7Ci0gICAgICBUYWtlUG9vbGVkU2Vzc2lvbigpOworICAgIHdoaWxlIChUYWtlUG9vbGVkU2Vz
c2lvbigpICE9IG51bGxwdHIpIHsKICAgICAgICsrY291bnQ7CiAgICAgfQogICAgIHJldHVybiBj
b3VudDsKQEAgLTI3NSwzICsyNzQsMjkgQEAgVEVTVF9GKFBvcnRBbGxvY2F0b3JUZXN0LCBEaXNj
YXJkQ2FuZGlkYXRlUG9vbCkgewogICBhbGxvY2F0b3JfLT5EaXNjYXJkQ2FuZGlkYXRlUG9vbCgp
OwogICBFWFBFQ1RfRVEoMCwgR2V0QWxsUG9vbGVkU2Vzc2lvbnNSZXR1cm5Db3VudCgpKTsKIH0K
KworVEVTVF9GKFBvcnRBbGxvY2F0b3JUZXN0LCBSZXN0cmljdEljZUNyZWRlbnRpYWxzQ2hhbmdl
KSB7CisgIFNldENvbmZpZ3VyYXRpb25XaXRoUG9vbFNpemUoMSk7CisgIEVYUEVDVF9FUSgxLCBH
ZXRBbGxQb29sZWRTZXNzaW9uc1JldHVybkNvdW50KCkpOworICBhbGxvY2F0b3JfLT5EaXNjYXJk
Q2FuZGlkYXRlUG9vbCgpOworCisgIC8vIE9ubHkgcmV0dXJuIHBvb2xlZCBzZXNzaW9ucyB3aXRo
IHRoZSBpY2UgY3JlZGVudGlhbHMgdGhhdAorICAvLyBtYXRjaCB0aG9zZSByZXF1ZXN0ZWQgaW4g
VGFrZVBvb2xlZFNlc3Npb24oKS4KKyAgYWxsb2NhdG9yXy0+c2V0X3Jlc3RyaWN0X2ljZV9jcmVk
ZW50aWFsc19jaGFuZ2UodHJ1ZSk7CisgIFNldENvbmZpZ3VyYXRpb25XaXRoUG9vbFNpemUoMSk7
CisgIEVYUEVDVF9FUSgwLCBHZXRBbGxQb29sZWRTZXNzaW9uc1JldHVybkNvdW50KCkpOworICBh
bGxvY2F0b3JfLT5EaXNjYXJkQ2FuZGlkYXRlUG9vbCgpOworCisgIFNldENvbmZpZ3VyYXRpb25X
aXRoUG9vbFNpemUoMSk7CisgIGF1dG8gY3JlZGVudGlhbHMgPSBhbGxvY2F0b3JfLT5HZXRQb29s
ZWRJY2VDcmVkZW50aWFscygpOworICBBU1NFUlRfRVEoMXUsIGNyZWRlbnRpYWxzLnNpemUoKSk7
CisgIEVYUEVDVF9FUShudWxscHRyLAorICAgICAgICAgICAgYWxsb2NhdG9yXy0+VGFrZVBvb2xl
ZFNlc3Npb24oa0NvbnRlbnROYW1lLCAwLCBrSWNlVWZyYWcsIGtJY2VQd2QpKTsKKyAgRVhQRUNU
X05FKG51bGxwdHIsCisgICAgICAgICAgICBhbGxvY2F0b3JfLT5UYWtlUG9vbGVkU2Vzc2lvbihr
Q29udGVudE5hbWUsIDAsIGNyZWRlbnRpYWxzWzBdLnVmcmFnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbHNbMF0ucHdkKSk7CisgIEVYUEVDVF9F
UShudWxscHRyLAorICAgICAgICAgICAgYWxsb2NhdG9yXy0+VGFrZVBvb2xlZFNlc3Npb24oa0Nv
bnRlbnROYW1lLCAwLCBjcmVkZW50aWFsc1swXS51ZnJhZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzWzBdLnB3ZCkpOworICBhbGxvY2F0b3Jf
LT5EaXNjYXJkQ2FuZGlkYXRlUG9vbCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNldWRvdGNwLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNldWRvdGNwLmNj
CmluZGV4IDE2MTEyMmI2ZDVjNzM4NDJiNzc1MjFmYzExZTI4NmM2ZDg1N2MwYTkuLmM3NDI5ODU4
NGFlZTFhZjFiYjIzODJkOThjZmIwMDNjZGYzNzQxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1
ZG90Y3AuY2MKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zb2NrZXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiAvLyBUaGUgZm9sbG93aW5nIGxvZ2dpbmcg
aXMgZm9yIGRldGFpbGVkIChwYWNrZXQtbGV2ZWwpIGFuYWx5c2lzIG9ubHkuCkBAIC0xODYsOCAr
MTg1LDggQEAgdm9pZCBSZXBvcnRTdGF0cygpIHsKICAgY2hhciBidWZmZXJbMjU2XTsKICAgc2l6
ZV90IGxlbiA9IDA7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgU19OVU1fU1RBVFM7ICsraSkgewot
ICAgIGxlbiArPSBydGM6OnNwcmludGZuKGJ1ZmZlciwgYXJyYXlzaXplKGJ1ZmZlciksICIlcyVz
OiVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9PSAwKSA/ICIiIDogIiwi
LCBTVEFUX05BTUVTW2ldLCBnX3N0YXRzW2ldKTsKKyAgICBsZW4gKz0gc25wcmludGYoYnVmZmVy
LCBhcnJheXNpemUoYnVmZmVyKSwgIiVzJXM6JWQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAoaSA9PSAwKSA/ICIiIDogIiwiLCBTVEFUX05BTUVTW2ldLCBnX3N0YXRzW2ldKTsKICAgICBn
X3N0YXRzW2ldID0gMDsKICAgfQogICBSVENfTE9HKExTX0lORk8pIDw8ICJTdGF0c1siIDw8IGJ1
ZmZlciA8PCAiXSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1ZG90Y3AuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcC5oCmluZGV4IGMzNjNlZjY0Yjc0
YWY5YjEyMjNmZjdjYTUzMzE3OWFlODJjMWFjYjQuLjViMjZhZWIyMWE1YmNlNDM1YTE5ODU3Y2E3
ZDA1MWZhZGQ5MTM3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcC5oCkBAIC0xNCw2ICsx
NCw3IEBACiAjaW5jbHVkZSA8bGlzdD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSBjcmlj
a2V0IHsKIApAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBJUHNldWRvVGNwTm90aWZ5IHsKIC8vIFBz
ZXVkb1RjcAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi1jbGFzcyBQc2V1ZG9UY3AgeworY2xhc3MgUlRDX0VY
UE9SVCBQc2V1ZG9UY3AgewogIHB1YmxpYzoKICAgc3RhdGljIHVpbnQzMl90IE5vdygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9wc2V1ZG90Y3BfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1ZG90Y3BfdW5pdHRlc3QuY2MKaW5kZXggZGQ4NmY5
MjFkNTJmYWExNTY5MmNhMjNhMjQ5OGUwY2E3NmZlMWZmMi4uMmZjOTkwMGNiY2NhNWIxZmJmNDk2
MGJjMTVlYTFiODQ5MGE4MmE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNldWRvdGNwX3VuaXR0ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3Rj
cF91bml0dGVzdC5jYwpAQCAtMTUsOCArMTUsOCBAQAogI2luY2x1ZGUgInAycC9iYXNlL3BzZXVk
b3RjcC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
aGVscGVycy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lbW9yeV9zdHJlYW0uaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1
dGlscy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXBvcnQuY2MKaW5kZXggZmI4MzBjZTY2YTk0
M2NkMjQ5ZGRhNDBhZDI4ZTlkY2U0YmFhMzhmMC4uYjFiOTI0YjgwMjc0YzM5NDI0MmZjZTVkYTM1
OWQ0NjMyZDYzOThiNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydC5jYwpAQCAtMTM5LDcg
KzEzOSw3IEBAIGNsYXNzIFJlbGF5RW50cnkgOiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwg
cHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAKICAgdm9pZCBP
blNlbnRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGM6OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KTsKQEAgLTM5Nyw5ICsz
OTcsOSBAQCB2b2lkIFJlbGF5UG9ydDo6T25SZWFkUGFja2V0KGNvbnN0IGNoYXIqIGRhdGEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgcHJvdG8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewog
ICBpZiAoQ29ubmVjdGlvbiogY29ubiA9IEdldENvbm5lY3Rpb24ocmVtb3RlX2FkZHIpKSB7Ci0g
ICAgY29ubi0+T25SZWFkUGFja2V0KGRhdGEsIHNpemUsIHBhY2tldF90aW1lKTsKKyAgICBjb25u
LT5PblJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWVfdXMpOwogICB9IGVsc2Ugewog
ICAgIFBvcnQ6Ok9uUmVhZFBhY2tldChkYXRhLCBzaXplLCByZW1vdGVfYWRkciwgcHJvdG8pOwog
ICB9CkBAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBSZWxheUVudHJ5OjpPblJlYWRQYWNrZXQocnRj
OjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRB
ZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKSB7CiAgIC8vIFJUQ19EQ0hFQ0so
cmVtb3RlX2FkZHIgPT0gcG9ydF8tPnNlcnZlcl9hZGRyKCkpOwogICAvLyBUT0RPKD8pOiBhcmUg
d2Ugd29ycmllZCBhYm91dCB0aGlzPwogCkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBSZWxheUVu
dHJ5OjpPblJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAvLyBi
eSB0aGUgc2VydmVyLCAgVGhlIGFjdHVhbCByZW1vdGUgYWRkcmVzcyBpcyB0aGUgb25lIHdlIHJl
Y29yZGVkLgogICBpZiAoIXBvcnRfLT5IYXNNYWdpY0Nvb2tpZShkYXRhLCBzaXplKSkgewogICAg
IGlmIChsb2NrZWRfKSB7Ci0gICAgICBwb3J0Xy0+T25SZWFkUGFja2V0KGRhdGEsIHNpemUsIGV4
dF9hZGRyXywgUFJPVE9fVURQLCBwYWNrZXRfdGltZSk7CisgICAgICBwb3J0Xy0+T25SZWFkUGFj
a2V0KGRhdGEsIHNpemUsIGV4dF9hZGRyXywgUFJPVE9fVURQLCBwYWNrZXRfdGltZV91cyk7CiAg
ICAgfSBlbHNlIHsKICAgICAgIFJUQ19MT0coV0FSTklORykgPDwgIkRyb3BwaW5nIHBhY2tldDog
ZW50cnkgbm90IGxvY2tlZCI7CiAgICAgfQpAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgUmVsYXlF
bnRyeTo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKIAogICAv
LyBQcm9jZXNzIHRoZSBhY3R1YWwgZGF0YSBhbmQgcmVtb3RlIGFkZHJlc3MgaW4gdGhlIG5vcm1h
bCBtYW5uZXIuCiAgIHBvcnRfLT5PblJlYWRQYWNrZXQoZGF0YV9hdHRyLT5ieXRlcygpLCBkYXRh
X2F0dHItPmxlbmd0aCgpLCByZW1vdGVfYWRkcjIsCi0gICAgICAgICAgICAgICAgICAgICAgUFJP
VE9fVURQLCBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgUFJPVE9fVURQLCBw
YWNrZXRfdGltZV91cyk7CiB9CiAKIHZvaWQgUmVsYXlFbnRyeTo6T25TZW50UGFja2V0KHJ0Yzo6
QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0LmgKaW5k
ZXggNDhhOTM5ZTBjZmQxMGU4ZjdiMmZkZmY3YWRjZGMzMDEzY2Q1NGRiYi4uNTk4OWY3NmU4MWY1
ZjY2NGZjMWQ4YzYzNzg4MzgxMzc5MTg5Mzg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0
LmgKQEAgLTEyLDEwICsxMiwxMiBAQAogI2RlZmluZSBQMlBfQkFTRV9SRUxBWVBPUlRfSF8KIAog
I2luY2x1ZGUgPGRlcXVlPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAj
aW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wb3J0LmgiCiAjaW5jbHVkZSAicDJw
L2Jhc2Uvc3R1bnJlcXVlc3QuaCIKIApAQCAtMzUsMTUgKzM3LDE2IEBAIGNsYXNzIFJlbGF5UG9y
dCA6IHB1YmxpYyBQb3J0IHsKICAgdHlwZWRlZiBzdGQ6OnBhaXI8cnRjOjpTb2NrZXQ6Ok9wdGlv
biwgaW50PiBPcHRpb25WYWx1ZTsKIAogICAvLyBSZWxheVBvcnQgZG9lc24ndCB5ZXQgZG8gYW55
dGhpbmcgZmFuY3kgaW4gdGhlIGN0b3IuCi0gIHN0YXRpYyBSZWxheVBvcnQqIENyZWF0ZShydGM6
OlRocmVhZCogdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRT
b2NrZXRGYWN0b3J5KiBmYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpO
ZXR3b3JrKiBuZXR3b3JrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWlu
X3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtYXhfcG9ydCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCkgewot
ICAgIHJldHVybiBuZXcgUmVsYXlQb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgbWluX3Bv
cnQsIG1heF9wb3J0LCB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29y
ZCk7CisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVsYXlQb3J0PiBDcmVhdGUocnRjOjpUaHJl
YWQqIHRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3JrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1pbl9wb3J0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1heF9wb3J0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB1c2VybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQpIHsKKyAgICAvLyBVc2luZyBgbmV3YCB0byBh
Y2Nlc3MgYSBub24tcHVibGljIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiBhYnNsOjpXcmFwVW5p
cXVlKG5ldyBSZWxheVBvcnQodGhyZWFkLCBmYWN0b3J5LCBuZXR3b3JrLCBtaW5fcG9ydCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9wb3J0LCB1c2VybmFt
ZSwgcGFzc3dvcmQpKTsKICAgfQogICB+UmVsYXlQb3J0KCkgb3ZlcnJpZGU7CiAKQEAgLTkyLDcg
Kzk1LDcgQEAgY2xhc3MgUmVsYXlQb3J0IDogcHVibGljIFBvcnQgewogICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRB
ZGRyZXNzJiByZW1vdGVfYWRkciwKICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIHBy
b3RvLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90
aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAKICAg
Ly8gVGhlIE9uU2VudFBhY2tldCBjYWxsYmFjayBpcyBsZWZ0IGVtcHR5IGhlcmUgc2luY2UgdGhl
eSBhcmUgaGFuZGxlZCBieQogICAvLyBSZWxheUVudHJ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0X3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvcmVsYXlwb3J0X3VuaXR0ZXN0LmNjCmluZGV4IGU2ZTkyMmZkYWY3N2ZlYTdkMDQ0MzQ3NGE3
MzkyZTBkMDZiYWRmZmYuLjFjYTY5ZjRlZjk2Y2UyMGJmOThlYWMzN2YwMjYzZTYwZTE0NGUxZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3JlbGF5cG9ydF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXBvcnRfdW5pdHRlc3QuY2MKQEAgLTYy
LDEwICs2MiwxMCBAQCBjbGFzcyBSZWxheVBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qs
IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIH0KIAogICB2b2lkIE9uUmVhZFBhY2tl
dChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sCisgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCAvKiBzaXplICovLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlNvY2tldEFkZHJlc3MmIC8qIHJlbW90ZV9hZGRyICovLAorICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLykgewogICAgIHJlY2VpdmVkX3BhY2tl
dF9jb3VudF9bc29ja2V0XSsrOwogICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5c2VydmVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlzZXJ2ZXIu
Y2MKaW5kZXggOGUxN2E3OWRiOGQ0NDRkNTZjMzNkZmZmYzc0OGNlNmJlYTQzYmJkZS4uYWQ2YjQ4
NzI4MmUxNDhjMDkyNzQ1N2M3ZGUxOTAxM2VkZjViODRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlzZXJ2ZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
cmVsYXlzZXJ2ZXIuY2MKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbGF5U2VydmVyOjpBZGRJ
bnRlcm5hbFNvY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQpIHsKIH0KIAogdm9p
ZCBSZWxheVNlcnZlcjo6UmVtb3ZlSW50ZXJuYWxTb2NrZXQocnRjOjpBc3luY1BhY2tldFNvY2tl
dCogc29ja2V0KSB7Ci0gIFNvY2tldExpc3Q6Oml0ZXJhdG9yIGl0ZXIgPQorICBhdXRvIGl0ZXIg
PQogICAgICAgc3RkOjpmaW5kKGludGVybmFsX3NvY2tldHNfLmJlZ2luKCksIGludGVybmFsX3Nv
Y2tldHNfLmVuZCgpLCBzb2NrZXQpOwogICBSVENfRENIRUNLKGl0ZXIgIT0gaW50ZXJuYWxfc29j
a2V0c18uZW5kKCkpOwogICBpbnRlcm5hbF9zb2NrZXRzXy5lcmFzZShpdGVyKTsKQEAgLTEzMiw3
ICsxMzIsNyBAQCB2b2lkIFJlbGF5U2VydmVyOjpBZGRFeHRlcm5hbFNvY2tldChydGM6OkFzeW5j
UGFja2V0U29ja2V0KiBzb2NrZXQpIHsKIH0KIAogdm9pZCBSZWxheVNlcnZlcjo6UmVtb3ZlRXh0
ZXJuYWxTb2NrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0KSB7Ci0gIFNvY2tldExp
c3Q6Oml0ZXJhdG9yIGl0ZXIgPQorICBhdXRvIGl0ZXIgPQogICAgICAgc3RkOjpmaW5kKGV4dGVy
bmFsX3NvY2tldHNfLmJlZ2luKCksIGV4dGVybmFsX3NvY2tldHNfLmVuZCgpLCBzb2NrZXQpOwog
ICBSVENfRENIRUNLKGl0ZXIgIT0gZXh0ZXJuYWxfc29ja2V0c18uZW5kKCkpOwogICBleHRlcm5h
bF9zb2NrZXRzXy5lcmFzZShpdGVyKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIFJlbGF5U2Vy
dmVyOjpBZGRJbnRlcm5hbFNlcnZlclNvY2tldChydGM6OkFzeW5jU29ja2V0KiBzb2NrZXQsCiB9
CiAKIHZvaWQgUmVsYXlTZXJ2ZXI6OlJlbW92ZUludGVybmFsU2VydmVyU29ja2V0KHJ0Yzo6QXN5
bmNTb2NrZXQqIHNvY2tldCkgewotICBTZXJ2ZXJTb2NrZXRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
ZXJ2ZXJfc29ja2V0c18uZmluZChzb2NrZXQpOworICBhdXRvIGl0ZXIgPSBzZXJ2ZXJfc29ja2V0
c18uZmluZChzb2NrZXQpOwogICBSVENfRENIRUNLKGl0ZXIgIT0gc2VydmVyX3NvY2tldHNfLmVu
ZCgpKTsKICAgc2VydmVyX3NvY2tldHNfLmVyYXNlKGl0ZXIpOwogICBzb2NrZXQtPlNpZ25hbFJl
YWRFdmVudC5kaXNjb25uZWN0KHRoaXMpOwpAQCAtMTYwLDEwICsxNjAsOSBAQCBpbnQgUmVsYXlT
ZXJ2ZXI6OkdldENvbm5lY3Rpb25Db3VudCgpIGNvbnN0IHsKIAogcnRjOjpTb2NrZXRBZGRyZXNz
UGFpciBSZWxheVNlcnZlcjo6R2V0Q29ubmVjdGlvbihpbnQgY29ubmVjdGlvbikgY29uc3Qgewog
ICBpbnQgaSA9IDA7Ci0gIGZvciAoQ29ubmVjdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBj
b25uZWN0aW9uc18uYmVnaW4oKTsKLSAgICAgICBpdCAhPSBjb25uZWN0aW9uc18uZW5kKCk7ICsr
aXQpIHsKKyAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGNvbm5lY3Rpb25zXykgewogICAgIGlm
IChpID09IGNvbm5lY3Rpb24pIHsKLSAgICAgIHJldHVybiBpdC0+c2Vjb25kLT5hZGRyX3BhaXIo
KTsKKyAgICAgIHJldHVybiBlbnRyeS5zZWNvbmQtPmFkZHJfcGFpcigpOwogICAgIH0KICAgICAr
K2k7CiAgIH0KQEAgLTE3MSw5ICsxNzAsOCBAQCBydGM6OlNvY2tldEFkZHJlc3NQYWlyIFJlbGF5
U2VydmVyOjpHZXRDb25uZWN0aW9uKGludCBjb25uZWN0aW9uKSBjb25zdCB7CiB9CiAKIGJvb2wg
UmVsYXlTZXJ2ZXI6Okhhc0Nvbm5lY3Rpb24oY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRy
ZXNzKSBjb25zdCB7Ci0gIGZvciAoQ29ubmVjdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBj
b25uZWN0aW9uc18uYmVnaW4oKTsKLSAgICAgICBpdCAhPSBjb25uZWN0aW9uc18uZW5kKCk7ICsr
aXQpIHsKLSAgICBpZiAoaXQtPnNlY29uZC0+YWRkcl9wYWlyKCkuZGVzdGluYXRpb24oKSA9PSBh
ZGRyZXNzKSB7CisgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBjb25uZWN0aW9uc18pIHsKKyAg
ICBpZiAoZW50cnkuc2Vjb25kLT5hZGRyX3BhaXIoKS5kZXN0aW5hdGlvbigpID09IGFkZHJlc3Mp
IHsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgfQpAQCAtMTg5LDE0ICsxODcsMTQgQEAg
dm9pZCBSZWxheVNlcnZlcjo6T25JbnRlcm5hbFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0
KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRy
ZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLykgewogICAv
LyBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGNvbm5lY3Rpb24gd2UganVzdCByZWNlaXZlZCBvbi4K
ICAgcnRjOjpTb2NrZXRBZGRyZXNzUGFpciBhcChyZW1vdGVfYWRkciwgc29ja2V0LT5HZXRMb2Nh
bEFkZHJlc3MoKSk7CiAgIFJUQ19EQ0hFQ0soIWFwLmRlc3RpbmF0aW9uKCkuSXNOaWwoKSk7CiAK
ICAgLy8gSWYgdGhpcyBkaWQgbm90IGNvbWUgZnJvbSBhbiBleGlzdGluZyBjb25uZWN0aW9uLCBp
dCBzaG91bGQgYmUgYSBTVFVOCiAgIC8vIGFsbG9jYXRlIHJlcXVlc3QuCi0gIENvbm5lY3Rpb25N
YXA6Oml0ZXJhdG9yIHBpdGVyID0gY29ubmVjdGlvbnNfLmZpbmQoYXApOworICBhdXRvIHBpdGVy
ID0gY29ubmVjdGlvbnNfLmZpbmQoYXApOwogICBpZiAocGl0ZXIgPT0gY29ubmVjdGlvbnNfLmVu
ZCgpKSB7CiAgICAgSGFuZGxlU3R1bkFsbG9jYXRlKGJ5dGVzLCBzaXplLCBhcCwgc29ja2V0KTsK
ICAgICByZXR1cm47CkBAIC0yMzQsMTMgKzIzMiwxMyBAQCB2b2lkIFJlbGF5U2VydmVyOjpPbkV4
dGVybmFsUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnl0ZXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBh
Y2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu
dDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovKSB7CiAgIC8vIEdldCB0aGUgYWRkcmVzcyBvZiB0
aGUgY29ubmVjdGlvbiB3ZSBqdXN0IHJlY2VpdmVkIG9uLgogICBydGM6OlNvY2tldEFkZHJlc3NQ
YWlyIGFwKHJlbW90ZV9hZGRyLCBzb2NrZXQtPkdldExvY2FsQWRkcmVzcygpKTsKICAgUlRDX0RD
SEVDSyghYXAuZGVzdGluYXRpb24oKS5Jc05pbCgpKTsKIAogICAvLyBJZiB0aGlzIGNvbm5lY3Rp
b24gYWxyZWFkeSBleGlzdHMsIHRoZW4gZm9yd2FyZCB0aGUgdHJhZmZpYy4KLSAgQ29ubmVjdGlv
bk1hcDo6aXRlcmF0b3IgcGl0ZXIgPSBjb25uZWN0aW9uc18uZmluZChhcCk7CisgIGF1dG8gcGl0
ZXIgPSBjb25uZWN0aW9uc18uZmluZChhcCk7CiAgIGlmIChwaXRlciAhPSBjb25uZWN0aW9uc18u
ZW5kKCkpIHsKICAgICAvLyBUT0RPKD8pOiBDaGVjayB0aGUgSE1BQy4KICAgICBSZWxheVNlcnZl
ckNvbm5lY3Rpb24qIGV4dF9jb25uID0gcGl0ZXItPnNlY29uZDsKQEAgLTI3Niw3ICsyNzQsNyBA
QCB2b2lkIFJlbGF5U2VydmVyOjpPbkV4dGVybmFsUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2Nr
ZXQqIHNvY2tldCwKICAgLy8gVE9ETyg/KTogQ2hlY2sgdGhlIEhNQUMuCiAKICAgLy8gVGhlIGJp
bmRpbmcgc2hvdWxkIGFscmVhZHkgYmUgcHJlc2VudC4KLSAgQmluZGluZ01hcDo6aXRlcmF0b3Ig
Yml0ZXIgPSBiaW5kaW5nc18uZmluZCh1c2VybmFtZSk7CisgIGF1dG8gYml0ZXIgPSBiaW5kaW5n
c18uZmluZCh1c2VybmFtZSk7CiAgIGlmIChiaXRlciA9PSBiaW5kaW5nc18uZW5kKCkpIHsKICAg
ICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJEcm9wcGluZyBwYWNrZXQ6IG5vIGJpbmRpbmcgd2l0
aCB1c2VybmFtZSI7CiAgICAgcmV0dXJuOwpAQCAtMzUxLDcgKzM0OSw3IEBAIHZvaWQgUmVsYXlT
ZXJ2ZXI6OkhhbmRsZVN0dW5BbGxvY2F0ZShjb25zdCBjaGFyKiBieXRlcywKIAogICBSZWxheVNl
cnZlckJpbmRpbmcqIGJpbmRpbmc7CiAKLSAgQmluZGluZ01hcDo6aXRlcmF0b3IgYml0ZXIgPSBi
aW5kaW5nc18uZmluZCh1c2VybmFtZSk7CisgIGF1dG8gYml0ZXIgPSBiaW5kaW5nc18uZmluZCh1
c2VybmFtZSk7CiAgIGlmIChiaXRlciAhPSBiaW5kaW5nc18uZW5kKCkpIHsKICAgICBiaW5kaW5n
ID0gYml0ZXItPnNlY29uZDsKICAgfSBlbHNlIHsKQEAgLTUxNCwxMyArNTEyLDEzIEBAIHZvaWQg
UmVsYXlTZXJ2ZXI6OkFkZENvbm5lY3Rpb24oUmVsYXlTZXJ2ZXJDb25uZWN0aW9uKiBjb25uKSB7
CiB9CiAKIHZvaWQgUmVsYXlTZXJ2ZXI6OlJlbW92ZUNvbm5lY3Rpb24oUmVsYXlTZXJ2ZXJDb25u
ZWN0aW9uKiBjb25uKSB7Ci0gIENvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBjb25uZWN0
aW9uc18uZmluZChjb25uLT5hZGRyX3BhaXIoKSk7CisgIGF1dG8gaXRlciA9IGNvbm5lY3Rpb25z
Xy5maW5kKGNvbm4tPmFkZHJfcGFpcigpKTsKICAgUlRDX0RDSEVDSyhpdGVyICE9IGNvbm5lY3Rp
b25zXy5lbmQoKSk7CiAgIGNvbm5lY3Rpb25zXy5lcmFzZShpdGVyKTsKIH0KIAogdm9pZCBSZWxh
eVNlcnZlcjo6UmVtb3ZlQmluZGluZyhSZWxheVNlcnZlckJpbmRpbmcqIGJpbmRpbmcpIHsKLSAg
QmluZGluZ01hcDo6aXRlcmF0b3IgaXRlciA9IGJpbmRpbmdzXy5maW5kKGJpbmRpbmctPnVzZXJu
YW1lKCkpOworICBhdXRvIGl0ZXIgPSBiaW5kaW5nc18uZmluZChiaW5kaW5nLT51c2VybmFtZSgp
KTsKICAgUlRDX0RDSEVDSyhpdGVyICE9IGJpbmRpbmdzXy5lbmQoKSk7CiAgIGJpbmRpbmdzXy5l
cmFzZShpdGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlzZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5c2VydmVyLmgKaW5kZXggYzc2NjEy
MDRmODE5OTA5OTA2NGJiY2JiMTNlZjQ3MGVkM2FlMjViMy4uNWJhNWUwNjVhODY4MTIwNTgyMjNl
ZmNhNTE4OGM2MmM5OGE3OWUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXNlcnZlci5oCkBA
IC02OCwzMyArNjgsMjcgQEAgY2xhc3MgUmVsYXlTZXJ2ZXIgOiBwdWJsaWMgcnRjOjpNZXNzYWdl
SGFuZGxlciwgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgYm9vbCBIYXNDb25uZWN0
aW9uKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcykgY29uc3Q7CiAKICBwcml2YXRl
OgotICB0eXBlZGVmIHN0ZDo6dmVjdG9yPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqPiBTb2NrZXRM
aXN0OwotICB0eXBlZGVmIHN0ZDo6bWFwPHJ0Yzo6QXN5bmNTb2NrZXQqLCBjcmlja2V0OjpQcm90
b2NvbFR5cGU+IFNlcnZlclNvY2tldE1hcDsKLSAgdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0cmlu
ZywgUmVsYXlTZXJ2ZXJCaW5kaW5nKj4gQmluZGluZ01hcDsKLSAgdHlwZWRlZiBzdGQ6Om1hcDxy
dGM6OlNvY2tldEFkZHJlc3NQYWlyLCBSZWxheVNlcnZlckNvbm5lY3Rpb24qPgotICAgICAgQ29u
bmVjdGlvbk1hcDsKLQogICBydGM6OlRocmVhZCogdGhyZWFkXzsKICAgd2VicnRjOjpSYW5kb20g
cmFuZG9tXzsKICAgYm9vbCBsb2dfYmluZGluZ3NfOwotICBTb2NrZXRMaXN0IGludGVybmFsX3Nv
Y2tldHNfOwotICBTb2NrZXRMaXN0IGV4dGVybmFsX3NvY2tldHNfOwotICBTb2NrZXRMaXN0IHJl
bW92ZWRfc29ja2V0c187Ci0gIFNlcnZlclNvY2tldE1hcCBzZXJ2ZXJfc29ja2V0c187Ci0gIEJp
bmRpbmdNYXAgYmluZGluZ3NfOwotICBDb25uZWN0aW9uTWFwIGNvbm5lY3Rpb25zXzsKKyAgc3Rk
Ojp2ZWN0b3I8cnRjOjpBc3luY1BhY2tldFNvY2tldCo+IGludGVybmFsX3NvY2tldHNfOworICBz
dGQ6OnZlY3RvcjxydGM6OkFzeW5jUGFja2V0U29ja2V0Kj4gZXh0ZXJuYWxfc29ja2V0c187Cisg
IHN0ZDo6dmVjdG9yPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqPiByZW1vdmVkX3NvY2tldHNfOwor
ICBzdGQ6Om1hcDxydGM6OkFzeW5jU29ja2V0KiwgY3JpY2tldDo6UHJvdG9jb2xUeXBlPiBzZXJ2
ZXJfc29ja2V0c187CisgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBSZWxheVNlcnZlckJpbmRpbmcq
PiBiaW5kaW5nc187CisgIHN0ZDo6bWFwPHJ0Yzo6U29ja2V0QWRkcmVzc1BhaXIsIFJlbGF5U2Vy
dmVyQ29ubmVjdGlvbio+IGNvbm5lY3Rpb25zXzsKIAogICAvLyBDYWxsZWQgd2hlbiBhIHBhY2tl
dCBpcyByZWNlaXZlZCBieSB0aGUgc2VydmVyIG9uIG9uZSBvZiBpdHMgc29ja2V0cy4KICAgdm9p
ZCBPbkludGVybmFsUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ5dGVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNv
Y2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQgT25FeHRlcm5hbFBhY2tldChy
dGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVf
YWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFj
a2V0X3RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0
X3RpbWVfdXMpOwogCiAgIHZvaWQgT25SZWFkRXZlbnQocnRjOjpBc3luY1NvY2tldCogc29ja2V0
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2Uvc3R1bi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3N0dW4uY2MKaW5kZXggY2M5ZmI0ZTRjMDkwYzMzYjU3Yzk5OWJhZGYw
Njk2ODEyYjc3Yjk0Mi4uZmE2YjZmODMyZTA4NTc1YTk4YTMyMGY4MTVmMjYwYjA1MGFhY2NlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2Uvc3R1bi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS9zdHVuLmNjCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAicnRjX2Jh
c2UvY3JjMzIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5o
IgogCiB1c2luZyBydGM6OkJ5dGVCdWZmZXJSZWFkZXI7CiB1c2luZyBydGM6OkJ5dGVCdWZmZXJX
cml0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS9zdHVucG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5wb3J0LmNjCmluZGV4IGM2MGJmOTJlYjQ5MjBjM2Rl
ZmRjMmM1MWQ2MDAyOWYyY2NlZjNlMmYuLjcyNzMxMjMyOWVlNGQwOTk2N2JlNzE3ZGQ4YjY0MGM5
OTg3MDBmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3N0dW5wb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5wb3J0LmNjCkBAIC0zMTksOSArMzE5LDkg
QEAgYm9vbCBVRFBQb3J0OjpIYW5kbGVJbmNvbWluZ1BhY2tldChydGM6OkFzeW5jUGFja2V0U29j
a2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFk
ZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgLy8gQWxsIHBhY2tl
dHMgZ2l2ZW4gdG8gVURQIHBvcnQgd2lsbCBiZSBjb25zdW1lZC4KLSAgT25SZWFkUGFja2V0KHNv
Y2tldCwgZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsIHBhY2tldF90aW1lKTsKKyAgT25SZWFkUGFj
a2V0KHNvY2tldCwgZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsIHBhY2tldF90aW1lX3VzKTsKICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTM1OCwxMSArMzU4LDE1IEBAIHZvaWQgVURQUG9ydDo6T25M
b2NhbEFkZHJlc3NSZWFkeShydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgIE1heWJl
UHJlcGFyZVN0dW5DYW5kaWRhdGUoKTsKIH0KIAordm9pZCBVRFBQb3J0OjpQb3N0QWRkQWRkcmVz
cyhib29sIGlzX2ZpbmFsKSB7CisgIE1heWJlU2V0UG9ydENvbXBsZXRlT3JFcnJvcigpOworfQor
CiB2b2lkIFVEUFBvcnQ6Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2Nr
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpIHsK
ICAgUlRDX0RDSEVDSyhzb2NrZXQgPT0gc29ja2V0Xyk7CiAgIFJUQ19EQ0hFQ0soIXJlbW90ZV9h
ZGRyLklzVW5yZXNvbHZlZElQKCkpOwogCkBAIC0zNzYsNyArMzgwLDcgQEAgdm9pZCBVRFBQb3J0
OjpPblJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICB9CiAKICAg
aWYgKENvbm5lY3Rpb24qIGNvbm4gPSBHZXRDb25uZWN0aW9uKHJlbW90ZV9hZGRyKSkgewotICAg
IGNvbm4tPk9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBwYWNrZXRfdGltZSk7CisgICAgY29ubi0+
T25SZWFkUGFja2V0KGRhdGEsIHNpemUsIHBhY2tldF90aW1lX3VzKTsKICAgfSBlbHNlIHsKICAg
ICBQb3J0OjpPblJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsIFBST1RPX1VEUCk7
CiAgIH0KQEAgLTUxNyw4ICs1MjEsMTQgQEAgdm9pZCBVRFBQb3J0OjpPblN0dW5CaW5kaW5nT3JS
ZXNvbHZlUmVxdWVzdEZhaWxlZCgKIH0KIAogdm9pZCBVRFBQb3J0OjpNYXliZVNldFBvcnRDb21w
bGV0ZU9yRXJyb3IoKSB7Ci0gIGlmIChyZWFkeV8pCisgIGlmIChtZG5zX25hbWVfcmVnaXN0cmF0
aW9uX3N0YXR1cygpID09CisgICAgICBNZG5zTmFtZVJlZ2lzdHJhdGlvblN0YXR1czo6a0luUHJv
Z3Jlc3MpIHsKICAgICByZXR1cm47CisgIH0KKworICBpZiAocmVhZHlfKSB7CisgICAgcmV0dXJu
OworICB9CiAKICAgLy8gRG8gbm90IHNldCBwb3J0IHJlYWR5IGlmIHdlIGFyZSBzdGlsbCB3YWl0
aW5nIGZvciBiaW5kIHJlc3BvbnNlcy4KICAgY29uc3Qgc2l6ZV90IHNlcnZlcnNfZG9uZV9iaW5k
X3JlcXVlc3QgPQpAQCAtNTYzLDIyICs1NzMsMjQgQEAgYm9vbCBVRFBQb3J0OjpIYXNDYW5kaWRh
dGVXaXRoQWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHIpIGNvbnN0IHsKICAg
cmV0dXJuIGZhbHNlOwogfQogCi1TdHVuUG9ydCogU3R1blBvcnQ6OkNyZWF0ZShydGM6OlRocmVh
ZCogdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRTb2NrZXRG
YWN0b3J5KiBmYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpOZXR3b3Jr
KiBuZXR3b3JrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWluX3BvcnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtYXhfcG9ydCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlcnZlckFkZHJlc3NlcyYgc2VydmVycywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IHN0dW5fa2VlcGFsaXZlX2lu
dGVydmFsKSB7Ci0gIFN0dW5Qb3J0KiBwb3J0ID0gbmV3IFN0dW5Qb3J0KHRocmVhZCwgZmFjdG9y
eSwgbmV0d29yaywgbWluX3BvcnQsIG1heF9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1c2VybmFtZSwgcGFzc3dvcmQsIHNlcnZlcnMsIG9yaWdpbik7CitzdGQ6OnVuaXF1
ZV9wdHI8U3R1blBvcnQ+IFN0dW5Qb3J0OjpDcmVhdGUoCisgICAgcnRjOjpUaHJlYWQqIHRocmVh
ZCwKKyAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCisgICAgcnRjOjpOZXR3
b3JrKiBuZXR3b3JrLAorICAgIHVpbnQxNl90IG1pbl9wb3J0LAorICAgIHVpbnQxNl90IG1heF9w
b3J0LAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyYgcGFzc3dvcmQsCisgICAgY29uc3QgU2VydmVyQWRkcmVzc2VzJiBzZXJ2ZXJzLAorICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCisgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzdHVu
X2tlZXBhbGl2ZV9pbnRlcnZhbCkgeworICAvLyBVc2luZyBgbmV3YCB0byBhY2Nlc3MgYSBub24t
cHVibGljIGNvbnN0cnVjdG9yLgorICBhdXRvIHBvcnQgPSBhYnNsOjpXcmFwVW5pcXVlKG5ldyBT
dHVuUG9ydCh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIG1pbl9wb3J0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfcG9ydCwgdXNlcm5hbWUsIHBhc3N3
b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJz
LCBvcmlnaW4pKTsKICAgcG9ydC0+c2V0X3N0dW5fa2VlcGFsaXZlX2RlbGF5KHN0dW5fa2VlcGFs
aXZlX2ludGVydmFsKTsKICAgaWYgKCFwb3J0LT5Jbml0KCkpIHsKLSAgICBkZWxldGUgcG9ydDsK
LSAgICBwb3J0ID0gTlVMTDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICAgfQogICByZXR1cm4gcG9y
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL3N0dW5wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVucG9ydC5oCmluZGV4IDVlMzk3ODM1ZGJlYjY1MTg2Njlm
ZDM4NzQyN2NlYWY5NzRlNGZlOTAuLmNhNDNjYmM4YzQ4M2QwNzQ5MTkzYzZiMWU0NDg5NDE2MGQ0
Y2ZmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL3N0dW5wb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnBvcnQuaApAQCAtMTUsNiArMTUsNyBAQAogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9y
eS9tZW1vcnkuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wb3J0LmgiCiAjaW5jbHVkZSAicDJwL2Jh
c2Uvc3R1bnJlcXVlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5o
IgpAQCAtMzUsNDIgKzM2LDQ1IEBAIHN0YXRpYyBjb25zdCBpbnQgSElHSF9DT1NUX1BPUlRfS0VF
UEFMSVZFX0xJRkVUSU1FID0gMiAqIDYwICogMTAwMDsKIC8vIENvbW11bmljYXRlcyB1c2luZyB0
aGUgYWRkcmVzcyBvbiB0aGUgb3V0c2lkZSBvZiBhIE5BVC4KIGNsYXNzIFVEUFBvcnQgOiBwdWJs
aWMgUG9ydCB7CiAgcHVibGljOgotICBzdGF0aWMgVURQUG9ydCogQ3JlYXRlKHJ0Yzo6VGhyZWFk
KiB0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0
b3J5KiBmYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29yayogbmV0
d29yaywKLSAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBz
b2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29y
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW1pdF9sb2NhbF9mb3JfYW55YWRkcmVzcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IHN0dW5fa2VlcGFs
aXZlX2ludGVydmFsKSB7Ci0gICAgVURQUG9ydCogcG9ydCA9IG5ldyBVRFBQb3J0KHRocmVhZCwg
ZmFjdG9yeSwgbmV0d29yaywgc29ja2V0LCB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFzc3dvcmQsIG9yaWdpbiwgZW1pdF9sb2NhbF9mb3JfYW55YWRkcmVzcyk7
CisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VURQUG9ydD4gQ3JlYXRlKAorICAgICAgcnRjOjpU
aHJlYWQqIHRocmVhZCwKKyAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogZmFjdG9yeSwK
KyAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKKyAgICAgIHJ0Yzo6QXN5bmNQYWNrZXRTb2Nr
ZXQqIHNvY2tldCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKKyAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmln
aW4sCisgICAgICBib29sIGVtaXRfbG9jYWxfZm9yX2FueWFkZHJlc3MsCisgICAgICBhYnNsOjpv
cHRpb25hbDxpbnQ+IHN0dW5fa2VlcGFsaXZlX2ludGVydmFsKSB7CisgICAgLy8gVXNpbmcgYG5l
d2AgdG8gYWNjZXNzIGEgbm9uLXB1YmxpYyBjb25zdHJ1Y3Rvci4KKyAgICBhdXRvIHBvcnQgPSBh
YnNsOjpXcmFwVW5pcXVlKG5ldyBVRFBQb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgc29j
a2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5h
bWUsIHBhc3N3b3JkLCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbWl0X2xvY2FsX2Zvcl9hbnlhZGRyZXNzKSk7CiAgICAgcG9ydC0+c2V0X3N0
dW5fa2VlcGFsaXZlX2RlbGF5KHN0dW5fa2VlcGFsaXZlX2ludGVydmFsKTsKICAgICBpZiAoIXBv
cnQtPkluaXQoKSkgewotICAgICAgZGVsZXRlIHBvcnQ7Ci0gICAgICBwb3J0ID0gTlVMTDsKKyAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gcG9ydDsKICAgfQogCi0gIHN0
YXRpYyBVRFBQb3J0KiBDcmVhdGUocnRjOjpUaHJlYWQqIHRocmVhZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3JrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQxNl90IG1pbl9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQx
Nl90IG1heF9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
cGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9y
aWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVtaXRfbG9jYWxfZm9yX2FueWFk
ZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzdHVu
X2tlZXBhbGl2ZV9pbnRlcnZhbCkgewotICAgIFVEUFBvcnQqIHBvcnQgPQorICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFVEUFBvcnQ+IENyZWF0ZSgKKyAgICAgIHJ0Yzo6VGhyZWFkKiB0aHJlYWQs
CisgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCisgICAgICBydGM6Ok5l
dHdvcmsqIG5ldHdvcmssCisgICAgICB1aW50MTZfdCBtaW5fcG9ydCwKKyAgICAgIHVpbnQxNl90
IG1heF9wb3J0LAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLAorICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9yaWdp
biwKKyAgICAgIGJvb2wgZW1pdF9sb2NhbF9mb3JfYW55YWRkcmVzcywKKyAgICAgIGFic2w6Om9w
dGlvbmFsPGludD4gc3R1bl9rZWVwYWxpdmVfaW50ZXJ2YWwpIHsKKyAgICAvLyBVc2luZyBgbmV3
YCB0byBhY2Nlc3MgYSBub24tcHVibGljIGNvbnN0cnVjdG9yLgorICAgIGF1dG8gcG9ydCA9IGFi
c2w6OldyYXBVbmlxdWUoCiAgICAgICAgIG5ldyBVRFBQb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0
d29yaywgbWluX3BvcnQsIG1heF9wb3J0LCB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
cGFzc3dvcmQsIG9yaWdpbiwgZW1pdF9sb2NhbF9mb3JfYW55YWRkcmVzcyk7CisgICAgICAgICAg
ICAgICAgICAgIHBhc3N3b3JkLCBvcmlnaW4sIGVtaXRfbG9jYWxfZm9yX2FueWFkZHJlc3MpKTsK
ICAgICBwb3J0LT5zZXRfc3R1bl9rZWVwYWxpdmVfZGVsYXkoc3R1bl9rZWVwYWxpdmVfaW50ZXJ2
YWwpOwogICAgIGlmICghcG9ydC0+SW5pdCgpKSB7Ci0gICAgICBkZWxldGUgcG9ydDsKLSAgICAg
IHBvcnQgPSBOVUxMOworICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBw
b3J0OwogICB9CkBAIC0xMDAsNyArMTA0LDcgQEAgY2xhc3MgVURQUG9ydCA6IHB1YmxpYyBQb3J0
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgb3Zl
cnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91
cykgb3ZlcnJpZGU7CiAKICAgYm9vbCBTdXBwb3J0c1Byb3RvY29sKGNvbnN0IHN0ZDo6c3RyaW5n
JiBwcm90b2NvbCkgY29uc3Qgb3ZlcnJpZGU7CiAgIFByb3RvY29sVHlwZSBHZXRQcm90b2NvbCgp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtMTU2LDEwICsxNjAsMTQgQEAgY2xhc3MgVURQUG9ydCA6IHB1
YmxpYyBQb3J0IHsKIAogICB2b2lkIE9uTG9jYWxBZGRyZXNzUmVhZHkocnRjOjpBc3luY1BhY2tl
dFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpT
b2NrZXRBZGRyZXNzJiBhZGRyZXNzKTsKKworICB2b2lkIFBvc3RBZGRBZGRyZXNzKGJvb2wgaXNf
ZmluYWwpIG92ZXJyaWRlOworCiAgIHZvaWQgT25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQqIHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCisgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBy
dGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW50NjRfdCYgcGFja2V0X3RpbWVfdXMpOwogCiAgIHZvaWQgT25TZW50UGFja2V0KHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpT
ZW50UGFja2V0JiBzZW50X3BhY2tldCkgb3ZlcnJpZGU7CkBAIC0yNjIsMTYgKzI3MCwxNyBAQCBj
bGFzcyBVRFBQb3J0IDogcHVibGljIFBvcnQgewogCiBjbGFzcyBTdHVuUG9ydCA6IHB1YmxpYyBV
RFBQb3J0IHsKICBwdWJsaWM6Ci0gIHN0YXRpYyBTdHVuUG9ydCogQ3JlYXRlKHJ0Yzo6VGhyZWFk
KiB0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFj
dG9yeSogZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpOZXR3b3JrKiBu
ZXR3b3JrLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtaW5fcG9ydCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWF4X3BvcnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTZXJ2ZXJBZGRyZXNzZXMmIHNlcnZlcnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGludD4gc3R1bl9rZWVwYWxpdmVfaW50ZXJ2YWwpOwor
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFN0dW5Qb3J0PiBDcmVhdGUoCisgICAgICBydGM6OlRo
cmVhZCogdGhyZWFkLAorICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAor
ICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3JrLAorICAgICAgdWludDE2X3QgbWluX3BvcnQsCisg
ICAgICB1aW50MTZfdCBtYXhfcG9ydCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFt
ZSwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKKyAgICAgIGNvbnN0IFNlcnZl
ckFkZHJlc3NlcyYgc2VydmVycywKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCisg
ICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IHN0dW5fa2VlcGFsaXZlX2ludGVydmFsKTsKIAogICB2
b2lkIFByZXBhcmVBZGRyZXNzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5wb3J0X3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
c3R1bnBvcnRfdW5pdHRlc3QuY2MKaW5kZXggMjk3NTRlODYxYzkzOGE0MWE3ZWE4ZmJjODY3Y2Fm
YzNmMGY3YjFkMi4uMDE1MThhOTQ2ODM2NGQxMGVjMzQxZGMzMDdlODNiNWEyODJhMDFjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2Uvc3R1bnBvcnRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnBvcnRfdW5pdHRlc3QuY2MKQEAgLTc1LDEwICs3
NSwxMCBAQCBjbGFzcyBTdHVuUG9ydFRlc3RCYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1
YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIH0KIAogICB2b2lkIENyZWF0ZVN0dW5Qb3J0
KGNvbnN0IFNlcnZlckFkZHJlc3NlcyYgc3R1bl9zZXJ2ZXJzKSB7Ci0gICAgc3R1bl9wb3J0Xy5y
ZXNldChjcmlja2V0OjpTdHVuUG9ydDo6Q3JlYXRlKAorICAgIHN0dW5fcG9ydF8gPSBjcmlja2V0
OjpTdHVuUG9ydDo6Q3JlYXRlKAogICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLCAmc29j
a2V0X2ZhY3RvcnlfLCAmbmV0d29ya18sIDAsIDAsCiAgICAgICAgIHJ0Yzo6Q3JlYXRlUmFuZG9t
U3RyaW5nKDE2KSwgcnRjOjpDcmVhdGVSYW5kb21TdHJpbmcoMjIpLCBzdHVuX3NlcnZlcnMsCi0g
ICAgICAgIHN0ZDo6c3RyaW5nKCksIGFic2w6Om51bGxvcHQpKTsKKyAgICAgICAgc3RkOjpzdHJp
bmcoKSwgYWJzbDo6bnVsbG9wdCk7CiAgICAgc3R1bl9wb3J0Xy0+c2V0X3N0dW5fa2VlcGFsaXZl
X2RlbGF5KHN0dW5fa2VlcGFsaXZlX2RlbGF5Xyk7CiAgICAgLy8gSWYgfHN0dW5fa2VlcGFsaXZl
X2xpZmV0aW1lX3wgaXMgbmVnYXRpdmUsIGxldCB0aGUgc3R1biBwb3J0CiAgICAgLy8gY2hvb3Nl
IGl0cyBsaWZldGltZSBmcm9tIHRoZSBuZXR3b3JrIHR5cGUuCkBAIC0xMDAsMTAgKzEwMCwxMCBA
QCBjbGFzcyBTdHVuUG9ydFRlc3RCYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgfQogICAgIEFTU0VSVF9UUlVFKHNvY2tldF8gIT0g
TlVMTCk7CiAgICAgc29ja2V0Xy0+U2lnbmFsUmVhZFBhY2tldC5jb25uZWN0KHRoaXMsICZTdHVu
UG9ydFRlc3RCYXNlOjpPblJlYWRQYWNrZXQpOwotICAgIHN0dW5fcG9ydF8ucmVzZXQoY3JpY2tl
dDo6VURQUG9ydDo6Q3JlYXRlKAorICAgIHN0dW5fcG9ydF8gPSBjcmlja2V0OjpVRFBQb3J0OjpD
cmVhdGUoCiAgICAgICAgIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksICZzb2NrZXRfZmFjdG9yeV8s
ICZuZXR3b3JrXywgc29ja2V0Xy5nZXQoKSwKICAgICAgICAgcnRjOjpDcmVhdGVSYW5kb21TdHJp
bmcoMTYpLCBydGM6OkNyZWF0ZVJhbmRvbVN0cmluZygyMiksIHN0ZDo6c3RyaW5nKCksCi0gICAg
ICAgIGZhbHNlLCBhYnNsOjpudWxsb3B0KSk7CisgICAgICAgIGZhbHNlLCBhYnNsOjpudWxsb3B0
KTsKICAgICBBU1NFUlRfVFJVRShzdHVuX3BvcnRfICE9IE5VTEwpOwogICAgIFNlcnZlckFkZHJl
c3NlcyBzdHVuX3NlcnZlcnM7CiAgICAgc3R1bl9zZXJ2ZXJzLmluc2VydChzZXJ2ZXJfYWRkcik7
CkBAIC0xMTksMTUgKzExOSwxNSBAQCBjbGFzcyBTdHVuUG9ydFRlc3RCYXNlIDogcHVibGljIHRl
c3Rpbmc6OlRlc3QsIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9h
ZGRyLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90
aW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1l
X3VzICovKSB7CiAgICAgc3R1bl9wb3J0Xy0+SGFuZGxlSW5jb21pbmdQYWNrZXQoc29ja2V0LCBk
YXRhLCBzaXplLCByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICB9CiAKICAgdm9pZCBTZW5kRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKSB7CiAgICAgc3R1bl9wb3J0Xy0+SGFuZGxlSW5j
b21pbmdQYWNrZXQoc29ja2V0Xy5nZXQoKSwgZGF0YSwgbGVuLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6U29ja2V0QWRkcmVzcygiMjIuMjIuMjIuMjIiLCAwKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldFRpbWUoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcGFja2V0X3RpbWVfdXMg
Ki8gLTEpOwogICB9CiAKICBwcm90ZWN0ZWQ6CkBAIC0yMTYsNyArMjE2LDcgQEAgVEVTVF9GKFN0
dW5Qb3J0VGVzdCwgVGVzdFByZXBhcmVBZGRyZXNzRmFpbCkgewogCiAvLyBUZXN0IHRoYXQgd2Ug
Y2FuIGdldCBhbiBhZGRyZXNzIGZyb20gYSBTVFVOIHNlcnZlciBzcGVjaWZpZWQgYnkgYSBob3N0
bmFtZS4KIC8vIENyYXNoZXMgb24gTGludXgsIHNlZSB3ZWJydGM6NzQxNgotI2lmIGRlZmluZWQo
V0VCUlRDX0xJTlVYKQorI2lmIGRlZmluZWQoV0VCUlRDX0xJTlVYKSB8fCBkZWZpbmVkKFdFQlJU
Q19XSU4pCiAjZGVmaW5lIE1BWUJFX1Rlc3RQcmVwYXJlQWRkcmVzc0hvc3RuYW1lIERJU0FCTEVE
X1Rlc3RQcmVwYXJlQWRkcmVzc0hvc3RuYW1lCiAjZWxzZQogI2RlZmluZSBNQVlCRV9UZXN0UHJl
cGFyZUFkZHJlc3NIb3N0bmFtZSBUZXN0UHJlcGFyZUFkZHJlc3NIb3N0bmFtZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1
bnJlcXVlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9zdHVucmVxdWVzdC5jYwppbmRleCA1NjQxMGJlYTA4OWQ5YjI2OWUyZmZlMjE2Zjdj
YzlhZDQ0Nzc3MjRjLi5lZGJhNGQ2OGU1NGJjMjBhMGVmM2ZkNDY2YTg0ZTVjOWQzNjMyZmNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9zdHVucmVxdWVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVucmVxdWVzdC5jYwpAQCAtMTgsNyArMTgsNyBAQAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
ZW5jb2RlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiICAvLyBGb3IgVGltZU1p
bGxpcwogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5zZXJ2ZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVuc2VydmVy
LmNjCmluZGV4IDAwZWFjZjE3YmM5ZTE5YTZhZWJlN2VmYzJjZWU2MTVkYTRlNmE0NGQuLjk1ZjBj
ZWJlMGE3MGQ4OGNmMDM5Yzg1NWFmZjI1NDQxODIxNTZiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5zZXJ2ZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
c3R1bnNlcnZlci5jYwpAQCAtMjksNyArMjksNyBAQCB2b2lkIFN0dW5TZXJ2ZXI6Ok9uUGFja2V0
KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBy
ZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRU
aW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2
NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLykgewogICAvLyBQYXJzZSB0aGUgU1RVTiBtZXNzYWdl
OyBlYXQgYW55IG1lc3NhZ2VzIHRoYXQgZmFpbCB0byBwYXJzZS4KICAgcnRjOjpCeXRlQnVmZmVy
UmVhZGVyIGJidWYoYnVmLCBzaXplKTsKICAgU3R1bk1lc3NhZ2UgbXNnOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnNl
cnZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2Uvc3R1bnNlcnZlci5oCmluZGV4IDkwMTZkMDZjMjBhY2E4ZDkxODYwOTY5YjFiNmExYTU1OWJk
Yzg4ZmEuLjAwNjFkMzgyYmMxNDkyNTI0MDY0YTIzZjcyMGY4YzJiZDNiNzI2NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0
dW5zZXJ2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9zdHVuc2VydmVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgU3R1blNlcnZl
ciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYnVmLAogICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgY29u
c3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpOwogCiAgIC8vIEhhbmRsZXJzIGZvciB0aGUgZGlm
ZmVyZW50IHR5cGVzIG9mIFNUVU4vVFVSTiByZXF1ZXN0czoKICAgdmlydHVhbCB2b2lkIE9uQmlu
ZGluZ1JlcXVlc3QoU3R1bk1lc3NhZ2UqIG1zZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjCmlu
ZGV4IGM2NmM3MzA3Mzc1ZTAzZmI4OTc0YjkwYTBlZjJiZjkyMDg0YjdmODMuLjBkN2FlYTlkNjBh
NDgzZjE1YzI1MTFjMWEwYTA1ZjhjNzkyZGJkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5j
YwpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgVENQUG9ydDo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3Rl
X2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUm
IHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90
JiBwYWNrZXRfdGltZV91cykgewogICBQb3J0OjpPblJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcmVt
b3RlX2FkZHIsIFBST1RPX1RDUCk7CiB9CiAKQEAgLTU0NSw5ICs1NDUsOSBAQCB2b2lkIFRDUENv
bm5lY3Rpb246Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBw
YWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50
NjRfdCYgcGFja2V0X3RpbWVfdXMpIHsKICAgUlRDX0RDSEVDSyhzb2NrZXQgPT0gc29ja2V0Xy5n
ZXQoKSk7Ci0gIENvbm5lY3Rpb246Ok9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBwYWNrZXRfdGlt
ZSk7CisgIENvbm5lY3Rpb246Ok9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBwYWNrZXRfdGltZV91
cyk7CiB9CiAKIHZvaWQgVENQQ29ubmVjdGlvbjo6T25SZWFkeVRvU2VuZChydGM6OkFzeW5jUGFj
a2V0U29ja2V0KiBzb2NrZXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuaAppbmRleCBmYTVjOTU4
YzIxYzI2M2JiYjRiMWVhMDE5YjhhMTcwYmZhN2FkNjk3Li40ZDA2YTY1MDdjMzUzNDIxZWFjY2U5
MTMyYTllMzFkZDE2MjhjMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5oCkBAIC0xNSw2ICsx
NSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUg
ImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInAycC9iYXNlL3BvcnQuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oIgogCkBAIC0zMCwxNiArMzEsMTggQEAg
Y2xhc3MgVENQQ29ubmVjdGlvbjsKIC8vIGNhbGwgdGhpcyBUQ1BQb3J0OjpPblJlYWRQYWNrZXQg
KDMgYXJnKSB0byBkaXNwYXRjaCB0byBhIGNvbm5lY3Rpb24uCiBjbGFzcyBUQ1BQb3J0IDogcHVi
bGljIFBvcnQgewogIHB1YmxpYzoKLSAgc3RhdGljIFRDUFBvcnQqIENyZWF0ZShydGM6OlRocmVh
ZCogdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFj
dG9yeSogZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBydGM6Ok5ldHdvcmsqIG5l
dHdvcmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWluX3BvcnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWF4X3BvcnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGFsbG93X2xpc3RlbikgewotICAgIHJldHVybiBuZXcgVENQUG9ydCh0aHJlYWQs
IGZhY3RvcnksIG5ldHdvcmssIG1pbl9wb3J0LCBtYXhfcG9ydCwgdXNlcm5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgIHBhc3N3b3JkLCBhbGxvd19saXN0ZW4pOworICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFRDUFBvcnQ+IENyZWF0ZShydGM6OlRocmVhZCogdGhyZWFkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3Rvcnkq
IGZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6
TmV0d29yayogbmV0d29yaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDE2X3QgbWluX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQxNl90IG1heF9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGxvd19saXN0ZW4p
IHsKKyAgICAvLyBVc2luZyBgbmV3YCB0byBhY2Nlc3MgYSBub24tcHVibGljIGNvbnN0cnVjdG9y
LgorICAgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlKG5ldyBUQ1BQb3J0KHRocmVhZCwgZmFjdG9y
eSwgbmV0d29yaywgbWluX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF4X3BvcnQsIHVzZXJuYW1lLCBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbGxvd19saXN0ZW4pKTsKICAgfQogICB+VENQUG9ydCgpIG92
ZXJyaWRlOwogCkBAIC05MSw3ICs5NCw3IEBAIGNsYXNzIFRDUFBvcnQgOiBwdWJsaWMgUG9ydCB7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFk
ZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tl
dFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYg
cGFja2V0X3RpbWVfdXMpOwogCiAgIHZvaWQgT25TZW50UGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTZW50UGFja2V0
JiBzZW50X3BhY2tldCkgb3ZlcnJpZGU7CkBAIC0xNTksNyArMTYyLDcgQEAgY2xhc3MgVENQQ29u
bmVjdGlvbiA6IHB1YmxpYyBDb25uZWN0aW9uIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQgT25S
ZWFkeVRvU2VuZChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQpOwogCiAgIHN0ZDo6dW5p
cXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXRfOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydF91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3RjcHBvcnRfdW5pdHRlc3QuY2MKaW5kZXggZWYzMDJmOTAyNjAzMmQwNDMyMGJkMWNj
MDhlZmU3MDA1OTgwNTRlZS4uMzQzODVhN2Y5YmVlNjk0MDg0Y2RiNWI2MzY0ZGRlZTYxY2Q3MzAx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvdGNwcG9ydF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0X3VuaXR0ZXN0LmNjCkBAIC0xNCw2
ICsxNCw3IEBACiAjaW5jbHVkZSAicDJwL2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0b3J5Lmgi
CiAjaW5jbHVkZSAicDJwL2Jhc2UvdGNwcG9ydC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
cmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5jYwppbmRleCBhZDI5
YTExOTllN2Q1MzFiMDg3ZDBjMGEyNmNjZThlOTFkYjQ5OTEzLi4zNzdhNGMzZWVlMzI3ODU0MTY2
ZTIyZTBhN2RhZTQxOTZjOTVhYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFu
c3BvcnRkZXNjcmlwdGlvbi5jYwpAQCAtMTAsOSArMTAsOSBAQAogCiAjaW5jbHVkZSAicDJwL2Jh
c2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uaCIKIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRj
aC5oIgogI2luY2x1ZGUgInAycC9iYXNlL3AycGNvbnN0YW50cy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2FycmF5c2l6ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKIG5h
bWVzcGFjZSBjcmlja2V0IHsKIApAQCAtMjIsNyArMjIsNyBAQCBib29sIFN0cmluZ1RvQ29ubmVj
dGlvblJvbGUoY29uc3Qgc3RkOjpzdHJpbmcmIHJvbGVfc3RyLCBDb25uZWN0aW9uUm9sZSogcm9s
ZSkgewogICAgICAgQ09OTkVDVElPTlJPTEVfQUNUUEFTU19TVFIsIENPTk5FQ1RJT05ST0xFX0hP
TERDT05OX1NUUn07CiAKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUocm9sZXMp
OyArK2kpIHsKLSAgICBpZiAoX3N0cmljbXAocm9sZXNbaV0sIHJvbGVfc3RyLmNfc3RyKCkpID09
IDApIHsKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShyb2xlc1tpXSwgcm9sZV9zdHIp
KSB7CiAgICAgICAqcm9sZSA9IHN0YXRpY19jYXN0PENvbm5lY3Rpb25Sb2xlPihDT05ORUNUSU9O
Uk9MRV9BQ1RJVkUgKyBpKTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5z
cG9ydGRlc2NyaXB0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5oCmluZGV4IDNiZmZkZjk3MWEwZTkz
NmYyMDA4MTE2M2M5ODkzZmNmYmRkYzRkZGMuLjJhYjk3MzI3OGZhZjcyYWE2MDM0ZDg4MzQ4M2Qw
ZTg1NzczMGZmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3Jp
cHRpb24uaApAQCAtNjcsMTEgKzY3LDEzIEBAIHN0cnVjdCBJY2VQYXJhbWV0ZXJzIHsKICAgICAg
ICAgICAgICAgICBib29sIGljZV9yZW5vbWluYXRpb24pCiAgICAgICA6IHVmcmFnKGljZV91ZnJh
ZyksIHB3ZChpY2VfcHdkKSwgcmVub21pbmF0aW9uKGljZV9yZW5vbWluYXRpb24pIHt9CiAKLSAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEljZVBhcmFtZXRlcnMmIG90aGVyKSB7CisgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBJY2VQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QgewogICAgIHJldHVybiB1
ZnJhZyA9PSBvdGhlci51ZnJhZyAmJiBwd2QgPT0gb3RoZXIucHdkICYmCiAgICAgICAgICAgIHJl
bm9taW5hdGlvbiA9PSBvdGhlci5yZW5vbWluYXRpb247CiAgIH0KLSAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEljZVBhcmFtZXRlcnMmIG90aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQorICBib29sIG9wZXJhdG9yIT0oY29uc3QgSWNlUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0IHsK
KyAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgIH0KIH07CiAKIGV4dGVybiBjb25zdCBj
aGFyIENPTk5FQ1RJT05ST0xFX0FDVElWRV9TVFJbXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0
aW9uZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uZmFjdG9yeS5jYwppbmRleCA2MTg3MjZlODQx
MTY0YzA5NmFlMDUwODljNTRkMTVlYzE3NDVkMDQ2Li42ODljZDRmN2EyZDBiZGM3ZjA1MWYzYTQ0
Y2E3NTBhOTZhZmU2MGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnkuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJh
bnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5LmNjCkBAIC0yNywxMyArMjcsMTUgQEAgVHJhbnNwb3J0
RGVzY3JpcHRpb25GYWN0b3J5Ojp+VHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5KCkgPSBkZWZh
dWx0OwogCiBUcmFuc3BvcnREZXNjcmlwdGlvbiogVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5
OjpDcmVhdGVPZmZlcigKICAgICBjb25zdCBUcmFuc3BvcnRPcHRpb25zJiBvcHRpb25zLAotICAg
IGNvbnN0IFRyYW5zcG9ydERlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uKSBjb25zdCB7
CisgICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24sCisg
ICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIHN0
ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYyhuZXcgVHJhbnNwb3J0RGVz
Y3JpcHRpb24oKSk7CiAKICAgLy8gR2VuZXJhdGUgdGhlIElDRSBjcmVkZW50aWFscyBpZiB3ZSBk
b24ndCBhbHJlYWR5IGhhdmUgdGhlbS4KICAgaWYgKCFjdXJyZW50X2Rlc2NyaXB0aW9uIHx8IG9w
dGlvbnMuaWNlX3Jlc3RhcnQpIHsKLSAgICBkZXNjLT5pY2VfdWZyYWcgPSBydGM6OkNyZWF0ZVJh
bmRvbVN0cmluZyhJQ0VfVUZSQUdfTEVOR1RIKTsKLSAgICBkZXNjLT5pY2VfcHdkID0gcnRjOjpD
cmVhdGVSYW5kb21TdHJpbmcoSUNFX1BXRF9MRU5HVEgpOworICAgIEljZVBhcmFtZXRlcnMgY3Jl
ZGVudGlhbHMgPSBpY2VfY3JlZGVudGlhbHMtPkdldEljZUNyZWRlbnRpYWxzKCk7CisgICAgZGVz
Yy0+aWNlX3VmcmFnID0gY3JlZGVudGlhbHMudWZyYWc7CisgICAgZGVzYy0+aWNlX3B3ZCA9IGNy
ZWRlbnRpYWxzLnB3ZDsKICAgfSBlbHNlIHsKICAgICBkZXNjLT5pY2VfdWZyYWcgPSBjdXJyZW50
X2Rlc2NyaXB0aW9uLT5pY2VfdWZyYWc7CiAgICAgZGVzYy0+aWNlX3B3ZCA9IGN1cnJlbnRfZGVz
Y3JpcHRpb24tPmljZV9wd2Q7CkBAIC01OSw3ICs2MSw4IEBAIFRyYW5zcG9ydERlc2NyaXB0aW9u
KiBUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3Rvcnk6OkNyZWF0ZUFuc3dlcigKICAgICBjb25zdCBU
cmFuc3BvcnREZXNjcmlwdGlvbiogb2ZmZXIsCiAgICAgY29uc3QgVHJhbnNwb3J0T3B0aW9ucyYg
b3B0aW9ucywKICAgICBib29sIHJlcXVpcmVfdHJhbnNwb3J0X2F0dHJpYnV0ZXMsCi0gICAgY29u
c3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24pIGNvbnN0IHsKKyAg
ICBjb25zdCBUcmFuc3BvcnREZXNjcmlwdGlvbiogY3VycmVudF9kZXNjcmlwdGlvbiwKKyAgICBJ
Y2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0IHsKICAgLy8gVE9E
TyhqdWJlcnRpKTogRmlndXJlIG91dCB3aHkgd2UgZ2V0IE5VTEwgb2ZmZXJzLCBhbmQgZml4IHRo
aXMgdXBzdHJlYW0uCiAgIGlmICghb2ZmZXIpIHsKICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8
ICJGYWlsZWQgdG8gY3JlYXRlIFRyYW5zcG9ydERlc2NyaXB0aW9uIGFuc3dlciAiCkBAIC03MSw4
ICs3NCw5IEBAIFRyYW5zcG9ydERlc2NyaXB0aW9uKiBUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3Rv
cnk6OkNyZWF0ZUFuc3dlcigKICAgLy8gR2VuZXJhdGUgdGhlIElDRSBjcmVkZW50aWFscyBpZiB3
ZSBkb24ndCBhbHJlYWR5IGhhdmUgdGhlbSBvciBpY2UgaXMKICAgLy8gYmVpbmcgcmVzdGFydGVk
LgogICBpZiAoIWN1cnJlbnRfZGVzY3JpcHRpb24gfHwgb3B0aW9ucy5pY2VfcmVzdGFydCkgewot
ICAgIGRlc2MtPmljZV91ZnJhZyA9IHJ0Yzo6Q3JlYXRlUmFuZG9tU3RyaW5nKElDRV9VRlJBR19M
RU5HVEgpOwotICAgIGRlc2MtPmljZV9wd2QgPSBydGM6OkNyZWF0ZVJhbmRvbVN0cmluZyhJQ0Vf
UFdEX0xFTkdUSCk7CisgICAgSWNlUGFyYW1ldGVycyBjcmVkZW50aWFscyA9IGljZV9jcmVkZW50
aWFscy0+R2V0SWNlQ3JlZGVudGlhbHMoKTsKKyAgICBkZXNjLT5pY2VfdWZyYWcgPSBjcmVkZW50
aWFscy51ZnJhZzsKKyAgICBkZXNjLT5pY2VfcHdkID0gY3JlZGVudGlhbHMucHdkOwogICB9IGVs
c2UgewogICAgIGRlc2MtPmljZV91ZnJhZyA9IGN1cnJlbnRfZGVzY3JpcHRpb24tPmljZV91ZnJh
ZzsKICAgICBkZXNjLT5pY2VfcHdkID0gY3VycmVudF9kZXNjcmlwdGlvbi0+aWNlX3B3ZDsKQEAg
LTExNiw4ICsxMjAsOCBAQCBib29sIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeTo6U2V0U2Vj
dXJpdHlJbmZvKFRyYW5zcG9ydERlc2NyaXB0aW9uKiBkZXNjLAogICAvLyBUaGlzIGRpZ2VzdCBh
bGdvcml0aG0gaXMgdXNlZCB0byBwcm9kdWNlIHRoZSBhPWZpbmdlcnByaW50IGxpbmVzIGluIFNE
UC4KICAgLy8gUkZDIDQ1NzIgU2VjdGlvbiA1IHJlcXVpcmVzIHRoYXQgdGhvc2UgbGluZXMgdXNl
IHRoZSBzYW1lIGhhc2ggZnVuY3Rpb24gYXMKICAgLy8gdGhlIGNlcnRpZmljYXRlJ3Mgc2lnbmF0
dXJlLCB3aGljaCBpcyB3aGF0IENyZWF0ZUZyb21DZXJ0aWZpY2F0ZSBkb2VzLgotICBkZXNjLT5p
ZGVudGl0eV9maW5nZXJwcmludC5yZXNldCgKLSAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNy
ZWF0ZUZyb21DZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZV8pKTsKKyAgZGVzYy0+aWRlbnRpdHlfZmlu
Z2VycHJpbnQgPQorICAgICAgcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmlj
YXRlKCpjZXJ0aWZpY2F0ZV8pOwogICBpZiAoIWRlc2MtPmlkZW50aXR5X2ZpbmdlcnByaW50KSB7
CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3Rv
cnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3RyYW5zcG9ydGRlc2NyaXB0aW9uZmFjdG9yeS5oCmluZGV4IDkzN2M1ZmExZmVhNGEyMWZhYWNj
YmY1ZTUxOTVlMzJiZjJkMTBiM2UuLmRjMTQ3NmE4MGY1MDcxYjkwNjhjMDE0YzI3ZmQxMzRjZDRk
ZDk3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2Ny
aXB0aW9uZmFjdG9yeS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFAyUF9CQVNFX1RSQU5T
UE9SVERFU0NSSVBUSU9ORkFDVE9SWV9IXwogI2RlZmluZSBQMlBfQkFTRV9UUkFOU1BPUlRERVND
UklQVElPTkZBQ1RPUllfSF8KIAorI2luY2x1ZGUgInAycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRl
cmF0b3IuaCIKICNpbmNsdWRlICJwMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3J0Y2NlcnRpZmljYXRlLmgiCiAKQEAgLTU0LDcgKzU1LDggQEAgY2xh
c3MgVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5IHsKICAgLy8gQ3JlYXRlcyBhIHRyYW5zcG9y
dCBkZXNjcmlwdGlvbiBzdWl0YWJsZSBmb3IgdXNlIGluIGFuIG9mZmVyLgogICBUcmFuc3BvcnRE
ZXNjcmlwdGlvbiogQ3JlYXRlT2ZmZXIoCiAgICAgICBjb25zdCBUcmFuc3BvcnRPcHRpb25zJiBv
cHRpb25zLAotICAgICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3Jp
cHRpb24pIGNvbnN0OworICAgICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIGN1cnJlbnRf
ZGVzY3JpcHRpb24sCisgICAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlh
bHMpIGNvbnN0OwogICAvLyBDcmVhdGUgYSB0cmFuc3BvcnQgZGVzY3JpcHRpb24gdGhhdCBpcyBh
IHJlc3BvbnNlIHRvIGFuIG9mZmVyLgogICAvLwogICAvLyBJZiB8cmVxdWlyZV90cmFuc3BvcnRf
YXR0cmlidXRlc3wgaXMgdHJ1ZSwgdGhlbiBUUkFOU1BPUlQgY2F0ZWdvcnkKQEAgLTY2LDcgKzY4
LDggQEAgY2xhc3MgVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5IHsKICAgICAgIGNvbnN0IFRy
YW5zcG9ydERlc2NyaXB0aW9uKiBvZmZlciwKICAgICAgIGNvbnN0IFRyYW5zcG9ydE9wdGlvbnMm
IG9wdGlvbnMsCiAgICAgICBib29sIHJlcXVpcmVfdHJhbnNwb3J0X2F0dHJpYnV0ZXMsCi0gICAg
ICBjb25zdCBUcmFuc3BvcnREZXNjcmlwdGlvbiogY3VycmVudF9kZXNjcmlwdGlvbikgY29uc3Q7
CisgICAgICBjb25zdCBUcmFuc3BvcnREZXNjcmlwdGlvbiogY3VycmVudF9kZXNjcmlwdGlvbiwK
KyAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3Q7CiAK
ICBwcml2YXRlOgogICBib29sIFNldFNlY3VyaXR5SW5mbyhUcmFuc3BvcnREZXNjcmlwdGlvbiog
ZGVzY3JpcHRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnlfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90
cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnlfdW5pdHRlc3QuY2MKaW5kZXggYTdjMzRiNTZhMDRk
MzVjNmRmOTBiMDhkYWU5NDNjZjg3OTM1MWRlZC4uYzQ2NjMwYWNlMjE5MmYxNTg2YTc2Y2UzZWE2
MzcwZTk2YzE2Y2JjNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5X3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uZmFjdG9yeV91bml0dGVzdC5jYwpAQCAtMjYsNyArMjYs
OCBAQCB1c2luZyBjcmlja2V0OjpUcmFuc3BvcnRPcHRpb25zOwogY2xhc3MgVHJhbnNwb3J0RGVz
Y3JpcHRpb25GYWN0b3J5VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICBwdWJsaWM6CiAg
IFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QoKQotICAgICAgOiBjZXJ0MV8ocnRjOjpS
VENDZXJ0aWZpY2F0ZTo6Q3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTElkZW50aXR5PigK
KyAgICAgIDogaWNlX2NyZWRlbnRpYWxzXyh7fSksCisgICAgICAgIGNlcnQxXyhydGM6OlJUQ0Nl
cnRpZmljYXRlOjpDcmVhdGUoc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMSWRlbnRpdHk+KAogICAg
ICAgICAgICAgbmV3IHJ0Yzo6RmFrZVNTTElkZW50aXR5KCJVc2VyMSIpKSkpLAogICAgICAgICBj
ZXJ0Ml8ocnRjOjpSVENDZXJ0aWZpY2F0ZTo6Q3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNT
TElkZW50aXR5PigKICAgICAgICAgICAgIG5ldyBydGM6OkZha2VTU0xJZGVudGl0eSgiVXNlcjIi
KSkpKSB7fQpAQCAtNjQsMjEgKzY1LDIyIEBAIGNsYXNzIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFj
dG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgU2V0RHRscyhkdGxzKTsKICAg
ICBjcmlja2V0OjpUcmFuc3BvcnRPcHRpb25zIG9wdGlvbnM7CiAgICAgLy8gVGhlIGluaXRpYWwg
b2ZmZXIgLyBhbnN3ZXIgZXhjaGFuZ2UuCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERl
c2NyaXB0aW9uPiBvZmZlcihmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgTlVMTCkpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gb2ZmZXIoCisgICAgICAgIGYxXy5D
cmVhdGVPZmZlcihvcHRpb25zLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gYW5zd2VyKAotICAgICAgICBmMl8uQ3Jl
YXRlQW5zd2VyKG9mZmVyLmdldCgpLCBvcHRpb25zLCB0cnVlLCBOVUxMKSk7CisgICAgICAgIGYy
Xy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIG9wdGlvbnMsIHRydWUsIE5VTEwsICZpY2VfY3Jl
ZGVudGlhbHNfKSk7CiAKICAgICAvLyBDcmVhdGUgYW4gdXBkYXRlZCBvZmZlciB3aGVyZSB3ZSBy
ZXN0YXJ0IGljZS4KICAgICBvcHRpb25zLmljZV9yZXN0YXJ0ID0gdHJ1ZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IHJlc3RhcnRfb2ZmZXIoCi0gICAgICAgIGYx
Xy5DcmVhdGVPZmZlcihvcHRpb25zLCBvZmZlci5nZXQoKSkpOworICAgICAgICBmMV8uQ3JlYXRl
T2ZmZXIob3B0aW9ucywgb2ZmZXIuZ2V0KCksICZpY2VfY3JlZGVudGlhbHNfKSk7CiAKICAgICBW
ZXJpZnlVZnJhZ0FuZFBhc3N3b3JkQ2hhbmdlZChkdGxzLCBvZmZlci5nZXQoKSwgcmVzdGFydF9v
ZmZlci5nZXQoKSk7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgYW5zd2VyLiBUaGUgdHJhbnNwb3J0
IHVmcmFnIGFuZCBwYXNzd29yZCBpcyBjaGFuZ2VkIHNpbmNlCiAgICAgLy8gfG9wdGlvbnMuaWNl
X3Jlc3RhcnQgPT0gdHJ1ZXwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRp
b24+IHJlc3RhcnRfYW5zd2VyKAotICAgICAgICBmMl8uQ3JlYXRlQW5zd2VyKHJlc3RhcnRfb2Zm
ZXIuZ2V0KCksIG9wdGlvbnMsIHRydWUsIGFuc3dlci5nZXQoKSkpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gcmVzdGFydF9hbnN3ZXIoZjJfLkNyZWF0ZUFuc3dl
cigKKyAgICAgICAgcmVzdGFydF9vZmZlci5nZXQoKSwgb3B0aW9ucywgdHJ1ZSwgYW5zd2VyLmdl
dCgpLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICAgIEFTU0VSVF9UUlVFKHJlc3RhcnRfYW5zd2Vy
LmdldCgpICE9IE5VTEwpOwogCiAgICAgVmVyaWZ5VWZyYWdBbmRQYXNzd29yZENoYW5nZWQoZHRs
cywgYW5zd2VyLmdldCgpLCByZXN0YXJ0X2Fuc3dlci5nZXQoKSk7CkBAIC0xMDgsMTkgKzExMCwy
MCBAQCBjbGFzcyBUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewogICAgIGNyaWNrZXQ6OlRyYW5zcG9ydE9wdGlvbnMgb3B0aW9uczsKICAgICAv
LyBUaGUgaW5pdGlhbCBvZmZlciAvIGFuc3dlciBleGNoYW5nZS4KICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG9mZmVyKAotICAgICAgICBmMV8uQ3JlYXRlT2ZmZXIo
b3B0aW9ucywgbnVsbHB0cikpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlw
dGlvbj4gYW5zd2VyKAotICAgICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBvcHRp
b25zLCB0cnVlLCBudWxscHRyKSk7CisgICAgICAgIGYxXy5DcmVhdGVPZmZlcihvcHRpb25zLCBu
dWxscHRyLCAmaWNlX2NyZWRlbnRpYWxzXykpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3Bv
cnREZXNjcmlwdGlvbj4gYW5zd2VyKGYyXy5DcmVhdGVBbnN3ZXIoCisgICAgICAgIG9mZmVyLmdl
dCgpLCBvcHRpb25zLCB0cnVlLCBudWxscHRyLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICAgIFZl
cmlmeVJlbm9taW5hdGlvbihvZmZlci5nZXQoKSwgZmFsc2UpOwogICAgIFZlcmlmeVJlbm9taW5h
dGlvbihhbnN3ZXIuZ2V0KCksIGZhbHNlKTsKIAogICAgIG9wdGlvbnMuZW5hYmxlX2ljZV9yZW5v
bWluYXRpb24gPSB0cnVlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlv
bj4gcmVub21pbmF0aW9uX29mZmVyKAotICAgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywg
b2ZmZXIuZ2V0KCkpKTsKKyAgICAgICAgZjFfLkNyZWF0ZU9mZmVyKG9wdGlvbnMsIG9mZmVyLmdl
dCgpLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICAgIFZlcmlmeVJlbm9taW5hdGlvbihyZW5vbWlu
YXRpb25fb2ZmZXIuZ2V0KCksIHRydWUpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9y
dERlc2NyaXB0aW9uPiByZW5vbWluYXRpb25fYW5zd2VyKGYyXy5DcmVhdGVBbnN3ZXIoCi0gICAg
ICAgIHJlbm9taW5hdGlvbl9vZmZlci5nZXQoKSwgb3B0aW9ucywgdHJ1ZSwgYW5zd2VyLmdldCgp
KSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiByZW5vbWluYXRp
b25fYW5zd2VyKAorICAgICAgICBmMl8uQ3JlYXRlQW5zd2VyKHJlbm9taW5hdGlvbl9vZmZlci5n
ZXQoKSwgb3B0aW9ucywgdHJ1ZSwgYW5zd2VyLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgICAgVmVyaWZ5UmVub21pbmF0aW9uKHJlbm9taW5h
dGlvbl9hbnN3ZXIuZ2V0KCksIHRydWUpOwogICB9CiAKQEAgLTE0NSw2ICsxNDgsNyBAQCBjbGFz
cyBUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
ewogICAgIH0KICAgfQogCisgIGNyaWNrZXQ6OkljZUNyZWRlbnRpYWxzSXRlcmF0b3IgaWNlX2Ny
ZWRlbnRpYWxzXzsKICAgVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5IGYxXzsKICAgVHJhbnNw
b3J0RGVzY3JpcHRpb25GYWN0b3J5IGYyXzsKIApAQCAtMTU0LDcgKzE1OCw3IEBAIGNsYXNzIFRy
YW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAK
IFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0T2ZmZXJEZWZhdWx0
KSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYygKLSAgICAg
IGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwpKTsKKyAgICAgIGYxXy5D
cmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7
CiAgIENoZWNrRGVzYyhkZXNjLmdldCgpLCAiIiwgIiIsICIiLCAiIik7CiB9CiAKQEAgLTE2Mywx
MyArMTY3LDEzIEBAIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0
T2ZmZXJEdGxzKSB7CiAgIGYxXy5zZXRfY2VydGlmaWNhdGUoY2VydDFfKTsKICAgc3RkOjpzdHJp
bmcgZGlnZXN0X2FsZzsKICAgQVNTRVJUX1RSVUUoCi0gICAgICBjZXJ0MV8tPnNzbF9jZXJ0aWZp
Y2F0ZSgpLkdldFNpZ25hdHVyZURpZ2VzdEFsZ29yaXRobSgmZGlnZXN0X2FsZykpOworICAgICAg
Y2VydDFfLT5HZXRTU0xDZXJ0aWZpY2F0ZSgpLkdldFNpZ25hdHVyZURpZ2VzdEFsZ29yaXRobSgm
ZGlnZXN0X2FsZykpOwogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRl
c2MoCi0gICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMKSk7Cisg
ICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMLCAmaWNlX2NyZWRl
bnRpYWxzXykpOwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIiLCAiIiwgZGlnZXN0X2Fs
Zyk7CiAgIC8vIEVuc3VyZSBpdCBhbHNvIHdvcmtzIHdpdGggU0VDX1JFUVVJUkVELgogICBmMV8u
c2V0X3NlY3VyZShjcmlja2V0OjpTRUNfUkVRVUlSRUQpOwotICBkZXNjLnJlc2V0KGYxXy5DcmVh
dGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwpKTsKKyAgZGVzYy5yZXNldChmMV8uQ3Jl
YXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwog
ICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIiLCAiIiwgZGlnZXN0X2FsZyk7CiB9CiAKQEAg
LTE3Nyw3ICsxODEsNyBAQCBURVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCwg
VGVzdE9mZmVyRHRscykgewogVEVTVF9GKFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3Qs
IFRlc3RPZmZlckR0bHNXaXRoTm9JZGVudGl0eSkgewogICBmMV8uc2V0X3NlY3VyZShjcmlja2V0
OjpTRUNfRU5BQkxFRCk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4g
ZGVzYygKLSAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwpKTsK
KyAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwsICZpY2VfY3Jl
ZGVudGlhbHNfKSk7CiAgIEFTU0VSVF9UUlVFKGRlc2MuZ2V0KCkgPT0gTlVMTCk7CiB9CiAKQEAg
LTE4OCwzNiArMTkyLDM4IEBAIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0
LCBUZXN0T2ZmZXJEdGxzUmVvZmZlckR0bHMpIHsKICAgZjFfLnNldF9jZXJ0aWZpY2F0ZShjZXJ0
MV8pOwogICBzdGQ6OnN0cmluZyBkaWdlc3RfYWxnOwogICBBU1NFUlRfVFJVRSgKLSAgICAgIGNl
cnQxXy0+c3NsX2NlcnRpZmljYXRlKCkuR2V0U2lnbmF0dXJlRGlnZXN0QWxnb3JpdGhtKCZkaWdl
c3RfYWxnKSk7CisgICAgICBjZXJ0MV8tPkdldFNTTENlcnRpZmljYXRlKCkuR2V0U2lnbmF0dXJl
RGlnZXN0QWxnb3JpdGhtKCZkaWdlc3RfYWxnKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3Bv
cnREZXNjcmlwdGlvbj4gb2xkX2Rlc2MoCi0gICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0
T3B0aW9ucygpLCBOVUxMKSk7CisgICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9u
cygpLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBBU1NFUlRfVFJVRShvbGRfZGVzYy5n
ZXQoKSAhPSBOVUxMKTsKICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBk
ZXNjKAotICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgb2xkX2Rlc2Mu
Z2V0KCkpKTsKKyAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIG9sZF9k
ZXNjLmdldCgpLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwg
IiIsIG9sZF9kZXNjLT5pY2VfdWZyYWcsIG9sZF9kZXNjLT5pY2VfcHdkLCBkaWdlc3RfYWxnKTsK
IH0KIAogVEVTVF9GKFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RBbnN3ZXJE
ZWZhdWx0KSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gb2ZmZXIo
Ci0gICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMKSk7CisgICAg
ICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMLCAmaWNlX2NyZWRlbnRp
YWxzXykpOwogICBBU1NFUlRfVFJVRShvZmZlci5nZXQoKSAhPSBOVUxMKTsKLSAgc3RkOjp1bmlx
dWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBkZXNjKAotICAgICAgZjJfLkNyZWF0ZUFuc3dl
cihvZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMKSk7CisgIHN0ZDo6
dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYyhmMl8uQ3JlYXRlQW5zd2VyKAor
ICAgICAgb2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCwgJmljZV9j
cmVkZW50aWFsc18pKTsKICAgQ2hlY2tEZXNjKGRlc2MuZ2V0KCksICIiLCAiIiwgIiIsICIiKTsK
LSAgZGVzYy5yZXNldChmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRp
b25zKCksIHRydWUsIE5VTEwpKTsKKyAgZGVzYy5yZXNldChmMl8uQ3JlYXRlQW5zd2VyKG9mZmVy
LmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBDaGVja0Rlc2MoZGVzYy5nZXQo
KSwgIiIsICIiLCAiIiwgIiIpOwogfQogCiAvLyBUZXN0IHRoYXQgd2UgY2FuIHVwZGF0ZSBhbiBh
bnN3ZXIgcHJvcGVybHk7IElDRSBjcmVkZW50aWFscyBzaG91bGRuJ3QgY2hhbmdlLgogVEVTVF9G
KFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RSZWFuc3dlcikgewogICBzdGQ6
OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG9mZmVyKAotICAgICAgZjFfLkNyZWF0
ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCkpOworICAgICAgZjFfLkNyZWF0ZU9mZmVy
KFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQVNTRVJU
X1RSVUUob2ZmZXIuZ2V0KCkgIT0gTlVMTCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnRE
ZXNjcmlwdGlvbj4gb2xkX2Rlc2MoCi0gICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgp
LCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFRy
YW5zcG9ydERlc2NyaXB0aW9uPiBvbGRfZGVzYyhmMl8uQ3JlYXRlQW5zd2VyKAorICAgICAgb2Zm
ZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCwgJmljZV9jcmVkZW50aWFs
c18pKTsKICAgQVNTRVJUX1RSVUUob2xkX2Rlc2MuZ2V0KCkgIT0gTlVMTCk7CiAgIHN0ZDo6dW5p
cXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYygKLSAgICAgIGYyXy5DcmVhdGVBbnN3
ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgb2xkX2Rlc2MuZ2V0KCkp
KTsKKyAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMo
KSwgdHJ1ZSwgb2xkX2Rlc2MuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICZpY2VfY3Jl
ZGVudGlhbHNfKSk7CiAgIEFTU0VSVF9UUlVFKGRlc2MuZ2V0KCkgIT0gTlVMTCk7CiAgIENoZWNr
RGVzYyhkZXNjLmdldCgpLCAiIiwgb2xkX2Rlc2MtPmljZV91ZnJhZywgb2xkX2Rlc2MtPmljZV9w
d2QsICIiKTsKIH0KQEAgLTIyNywxMCArMjMzLDEwIEBAIFRFU1RfRihUcmFuc3BvcnREZXNjcmlw
dGlvbkZhY3RvcnlUZXN0LCBUZXN0QW5zd2VyRHRsc1RvTm9EdGxzKSB7CiAgIGYxXy5zZXRfc2Vj
dXJlKGNyaWNrZXQ6OlNFQ19FTkFCTEVEKTsKICAgZjFfLnNldF9jZXJ0aWZpY2F0ZShjZXJ0MV8p
OwogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG9mZmVyKAotICAgICAg
ZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCkpOworICAgICAgZjFfLkNy
ZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsK
ICAgQVNTRVJUX1RSVUUob2ZmZXIuZ2V0KCkgIT0gTlVMTCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxU
cmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYygKLSAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIu
Z2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCkpOworICBzdGQ6OnVuaXF1ZV9w
dHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRlc2MoZjJfLkNyZWF0ZUFuc3dlcigKKyAgICAgIG9m
ZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwsICZpY2VfY3JlZGVudGlh
bHNfKSk7CiAgIENoZWNrRGVzYyhkZXNjLmdldCgpLCAiIiwgIiIsICIiLCAiIik7CiB9CiAKQEAg
LTI0MCwxMyArMjQ2LDE0IEBAIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0
LCBUZXN0QW5zd2VyTm9EdGxzVG9EdGxzKSB7CiAgIGYyXy5zZXRfc2VjdXJlKGNyaWNrZXQ6OlNF
Q19FTkFCTEVEKTsKICAgZjJfLnNldF9jZXJ0aWZpY2F0ZShjZXJ0Ml8pOwogICBzdGQ6OnVuaXF1
ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG9mZmVyKAotICAgICAgZjFfLkNyZWF0ZU9mZmVy
KFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCkpOworICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5z
cG9ydE9wdGlvbnMoKSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQVNTRVJUX1RSVUUo
b2ZmZXIuZ2V0KCkgIT0gTlVMTCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlw
dGlvbj4gZGVzYygKLSAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9y
dE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVz
Y3JpcHRpb24+IGRlc2MoZjJfLkNyZWF0ZUFuc3dlcigKKyAgICAgIG9mZmVyLmdldCgpLCBUcmFu
c3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIENoZWNr
RGVzYyhkZXNjLmdldCgpLCAiIiwgIiIsICIiLCAiIik7CiAgIGYyXy5zZXRfc2VjdXJlKGNyaWNr
ZXQ6OlNFQ19SRVFVSVJFRCk7Ci0gIGRlc2MucmVzZXQoZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5n
ZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMKSk7CisgIGRlc2MucmVzZXQoZjJf
LkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxM
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmljZV9jcmVkZW50aWFsc18pKTsKICAg
QVNTRVJUX1RSVUUoZGVzYy5nZXQoKSA9PSBOVUxMKTsKIH0KIApAQCAtMjYyLDE2ICsyNjksMTcg
QEAgVEVTVF9GKFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RBbnN3ZXJEdGxz
VG9EdGxzKSB7CiAgIC8vIGFuc3dlciBtdXN0IGNvbnRhaW4gZmluZ2VycHJpbnQgbGluZXMgd2l0
aCBjZXJ0Ml8ncyBkaWdlc3QgYWxnb3JpdGhtLgogICBzdGQ6OnN0cmluZyBkaWdlc3RfYWxnMjsK
ICAgQVNTRVJUX1RSVUUoCi0gICAgICBjZXJ0Ml8tPnNzbF9jZXJ0aWZpY2F0ZSgpLkdldFNpZ25h
dHVyZURpZ2VzdEFsZ29yaXRobSgmZGlnZXN0X2FsZzIpKTsKKyAgICAgIGNlcnQyXy0+R2V0U1NM
Q2VydGlmaWNhdGUoKS5HZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG0oJmRpZ2VzdF9hbGcyKSk7
CiAKICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBvZmZlcigKLSAgICAg
IGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwpKTsKKyAgICAgIGYxXy5D
cmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7
CiAgIEFTU0VSVF9UUlVFKG9mZmVyLmdldCgpICE9IE5VTEwpOwotICBzdGQ6OnVuaXF1ZV9wdHI8
VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRlc2MoCi0gICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVy
LmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwpKTsKKyAgc3RkOjp1bmlxdWVf
cHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBkZXNjKGYyXy5DcmVhdGVBbnN3ZXIoCisgICAgICBv
ZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMLCAmaWNlX2NyZWRlbnRp
YWxzXykpOwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIiLCAiIiwgZGlnZXN0X2FsZzIp
OwogICBmMl8uc2V0X3NlY3VyZShjcmlja2V0OjpTRUNfUkVRVUlSRUQpOwotICBkZXNjLnJlc2V0
KGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwg
TlVMTCkpOworICBkZXNjLnJlc2V0KGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRyYW5z
cG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIENoZWNrRGVzYyhkZXNjLmdldCgpLCAiIiwgIiIsICIi
LCBkaWdlc3RfYWxnMik7CiB9CiAKQEAgLTMwNCw5ICszMTIsMzYgQEAgVEVTVF9GKFRyYW5zcG9y
dERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RJY2VSZW5vbWluYXRpb25XaXRoRHRscykgewog
VEVTVF9GKFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIEFkZHNUcmlja2xlSWNlT3B0
aW9uKSB7CiAgIGNyaWNrZXQ6OlRyYW5zcG9ydE9wdGlvbnMgb3B0aW9uczsKICAgc3RkOjp1bmlx
dWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBvZmZlcigKLSAgICAgIGYxXy5DcmVhdGVPZmZl
cihvcHRpb25zLCBudWxscHRyKSk7CisgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgbnVs
bHB0ciwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgRVhQRUNUX1RSVUUob2ZmZXItPkhhc09wdGlv
bigidHJpY2tsZSIpKTsKICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBh
bnN3ZXIoCi0gICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBvcHRpb25zLCB0cnVl
LCBudWxscHRyKSk7CisgICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBvcHRpb25z
LCB0cnVlLCBudWxscHRyLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBFWFBFQ1RfVFJVRShhbnN3
ZXItPkhhc09wdGlvbigidHJpY2tsZSIpKTsKIH0KKworLy8gVGVzdCBDcmVhdGVPZmZlciB3aXRo
IEljZUNyZWRlbnRpYWxzSXRlcmF0b3IuCitURVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0
b3J5VGVzdCwgQ3JlYXRlT2ZmZXJJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKSB7CisgIHN0ZDo6dmVj
dG9yPGNyaWNrZXQ6OkljZVBhcmFtZXRlcnM+IGNyZWRlbnRpYWxzID0geworICAgICAgY3JpY2tl
dDo6SWNlUGFyYW1ldGVycygia2FsbGUiLCAiYW5rYSIsIGZhbHNlKX07CisgIGNyaWNrZXQ6Oklj
ZUNyZWRlbnRpYWxzSXRlcmF0b3IgY3JlZGVudGlhbHNJdGVyYXRvcihjcmVkZW50aWFscyk7Cisg
IGNyaWNrZXQ6OlRyYW5zcG9ydE9wdGlvbnMgb3B0aW9uczsKKyAgc3RkOjp1bmlxdWVfcHRyPFRy
YW5zcG9ydERlc2NyaXB0aW9uPiBvZmZlcigKKyAgICAgIGYxXy5DcmVhdGVPZmZlcihvcHRpb25z
LCBudWxscHRyLCAmY3JlZGVudGlhbHNJdGVyYXRvcikpOworICBFWFBFQ1RfRVEob2ZmZXItPkdl
dEljZVBhcmFtZXRlcnMoKS51ZnJhZywgY3JlZGVudGlhbHNbMF0udWZyYWcpOworICBFWFBFQ1Rf
RVEob2ZmZXItPkdldEljZVBhcmFtZXRlcnMoKS5wd2QsIGNyZWRlbnRpYWxzWzBdLnB3ZCk7Cit9
CisKKy8vIFRlc3QgQ3JlYXRlQW5zd2VyIHdpdGggSWNlQ3JlZGVudGlhbHNJdGVyYXRvci4KK1RF
U1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBDcmVhdGVBbnN3ZXJJY2VDcmVk
ZW50aWFsc0l0ZXJhdG9yKSB7CisgIGNyaWNrZXQ6OlRyYW5zcG9ydE9wdGlvbnMgb3B0aW9uczsK
KyAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBvZmZlcigKKyAgICAgIGYx
Xy5DcmVhdGVPZmZlcihvcHRpb25zLCBudWxscHRyLCAmaWNlX2NyZWRlbnRpYWxzXykpOworCisg
IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OkljZVBhcmFtZXRlcnM+IGNyZWRlbnRpYWxzID0geworICAg
ICAgY3JpY2tldDo6SWNlUGFyYW1ldGVycygia2FsbGUiLCAiYW5rYSIsIGZhbHNlKX07CisgIGNy
aWNrZXQ6OkljZUNyZWRlbnRpYWxzSXRlcmF0b3IgY3JlZGVudGlhbHNJdGVyYXRvcihjcmVkZW50
aWFscyk7CisgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gYW5zd2VyKGYx
Xy5DcmVhdGVBbnN3ZXIoCisgICAgICBvZmZlci5nZXQoKSwgb3B0aW9ucywgZmFsc2UsIG51bGxw
dHIsICZjcmVkZW50aWFsc0l0ZXJhdG9yKSk7CisgIEVYUEVDVF9FUShhbnN3ZXItPkdldEljZVBh
cmFtZXRlcnMoKS51ZnJhZywgY3JlZGVudGlhbHNbMF0udWZyYWcpOworICBFWFBFQ1RfRVEoYW5z
d2VyLT5HZXRJY2VQYXJhbWV0ZXJzKCkucHdkLCBjcmVkZW50aWFsc1swXS5wd2QpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvdHJhbnNwb3J0ZmFjdG9yeWludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZmFjdG9yeWludGVyZmFjZS5oCmlu
ZGV4IGNlMzJlZTg0ODNlZGViN2VlMmYwODQ1NzgzMjMwMjRhYTc4M2E2N2UuLjk4MDVkYjAwNWNj
MDIxNTVmYmQyMmRmNmNlZGVhMDNiMDI0MDk5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGZhY3RvcnlpbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS90cmFuc3BvcnRmYWN0b3J5aW50ZXJmYWNlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xh
c3MgVHJhbnNwb3J0RmFjdG9yeUludGVyZmFjZSB7CiAKICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8RHRsc1RyYW5zcG9ydEludGVybmFsPiBDcmVhdGVEdGxzVHJhbnNwb3J0KAogICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEljZVRyYW5zcG9ydEludGVybmFsPiBpY2UsCi0gICAgICBjb25zdCBydGM6
OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSA9IDA7CisgICAgICBjb25zdCB3ZWJydGM6
OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSA9IDA7CiB9OwogCiB9ICAvLyBuYW1lc3Bh
Y2UgY3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvdHVybnBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJucG9ydC5jYwppbmRleCA5NzU0MWY2MGMwMmRk
OWI3NDJkN2RlZjIyYzM1MDlmYmJiODRiMjExLi5lYjBhZGZhM2NlNGUxZGI5OTBjMzAzOTcyYTZj
MGU4NTU4NzA5M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJucG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJucG9ydC5jYwpAQCAtMjQsNyArMjQs
NiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9u
ZXRoZWxwZXJzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mv
c3RyaW5nX2J1aWxkZXIuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewpAQCAtNjIzLDcgKzYyMiw3
IEBAIGJvb2wgVHVyblBvcnQ6OkhhbmRsZUluY29taW5nUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29j
a2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIGlmIChz
b2NrZXQgIT0gc29ja2V0XykgewogICAgIC8vIFRoZSBwYWNrZXQgd2FzIHJlY2VpdmVkIG9uIGEg
c2hhcmVkIHNvY2tldCBhZnRlciB3ZSd2ZSBhbGxvY2F0ZWQgYSBuZXcKICAgICAvLyBzb2NrZXQg
Zm9yIHRoaXMgVFVSTiBwb3J0LgpAQCAtNjYwLDEyICs2NTksMTIgQEAgYm9vbCBUdXJuUG9ydDo6
SGFuZGxlSW5jb21pbmdQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAv
LyBhIHJlc3BvbnNlIHRvIGEgcHJldmlvdXMgcmVxdWVzdC4KICAgdWludDE2X3QgbXNnX3R5cGUg
PSBydGM6OkdldEJFMTYoZGF0YSk7CiAgIGlmIChJc1R1cm5DaGFubmVsRGF0YShtc2dfdHlwZSkp
IHsKLSAgICBIYW5kbGVDaGFubmVsRGF0YShtc2dfdHlwZSwgZGF0YSwgc2l6ZSwgcGFja2V0X3Rp
bWUpOworICAgIEhhbmRsZUNoYW5uZWxEYXRhKG1zZ190eXBlLCBkYXRhLCBzaXplLCBwYWNrZXRf
dGltZV91cyk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICBpZiAobXNnX3R5cGUgPT0gVFVS
Tl9EQVRBX0lORElDQVRJT04pIHsKLSAgICBIYW5kbGVEYXRhSW5kaWNhdGlvbihkYXRhLCBzaXpl
LCBwYWNrZXRfdGltZSk7CisgICAgSGFuZGxlRGF0YUluZGljYXRpb24oZGF0YSwgc2l6ZSwgcGFj
a2V0X3RpbWVfdXMpOwogICAgIHJldHVybiB0cnVlOwogICB9CiAKQEAgLTY5Niw4ICs2OTUsOCBA
QCB2b2lkIFR1cm5Qb3J0OjpPblJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29j
a2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7
Ci0gIEhhbmRsZUluY29taW5nUGFja2V0KHNvY2tldCwgZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIs
IHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90
JiBwYWNrZXRfdGltZV91cykgeworICBIYW5kbGVJbmNvbWluZ1BhY2tldChzb2NrZXQsIGRhdGEs
IHNpemUsIHJlbW90ZV9hZGRyLCBwYWNrZXRfdGltZV91cyk7CiB9CiAKIHZvaWQgVHVyblBvcnQ6
Ok9uU2VudFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCkBAIC05MzMsNyAr
OTMyLDcgQEAgdm9pZCBUdXJuUG9ydDo6T25BbGxvY2F0ZVJlcXVlc3RUaW1lb3V0KCkgewogCiB2
b2lkIFR1cm5Qb3J0OjpIYW5kbGVEYXRhSW5kaWNhdGlvbihjb25zdCBjaGFyKiBkYXRhLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90
aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tl
dF90aW1lX3VzKSB7CiAgIC8vIFJlYWQgaW4gdGhlIG1lc3NhZ2UsIGFuZCBwcm9jZXNzIGFjY29y
ZGluZyB0byBSRkM1NzY2LCBTZWN0aW9uIDEwLjQuCiAgIHJ0Yzo6Qnl0ZUJ1ZmZlclJlYWRlciBi
dWYoZGF0YSwgc2l6ZSk7CiAgIFR1cm5NZXNzYWdlIG1zZzsKQEAgLTk3MiwxMyArOTcxLDEzIEBA
IHZvaWQgVHVyblBvcnQ6OkhhbmRsZURhdGFJbmRpY2F0aW9uKGNvbnN0IGNoYXIqIGRhdGEsCiAg
IH0KIAogICBEaXNwYXRjaFBhY2tldChkYXRhX2F0dHItPmJ5dGVzKCksIGRhdGFfYXR0ci0+bGVu
Z3RoKCksIGV4dF9hZGRyLCBQUk9UT19VRFAsCi0gICAgICAgICAgICAgICAgIHBhY2tldF90aW1l
KTsKKyAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIFR1cm5Qb3J0
OjpIYW5kbGVDaGFubmVsRGF0YShpbnQgY2hhbm5lbF9pZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgLy8gUmVhZCB0aGUgbWVz
c2FnZSwgYW5kIHByb2Nlc3MgYWNjb3JkaW5nIHRvIFJGQzU3NjYsIFNlY3Rpb24gMTEuNi4KICAg
Ly8gICAgMCAgICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAg
ICAgICAgICAgMwogICAvLyAgICAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYgNyA4
IDkgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEKQEAgLTEwMTQsMTYgKzEwMTMsMTYgQEAgdm9pZCBU
dXJuUG9ydDo6SGFuZGxlQ2hhbm5lbERhdGEoaW50IGNoYW5uZWxfaWQsCiAgIH0KIAogICBEaXNw
YXRjaFBhY2tldChkYXRhICsgVFVSTl9DSEFOTkVMX0hFQURFUl9TSVpFLCBsZW4sIGVudHJ5LT5h
ZGRyZXNzKCksCi0gICAgICAgICAgICAgICAgIFBST1RPX1VEUCwgcGFja2V0X3RpbWUpOworICAg
ICAgICAgICAgICAgICBQUk9UT19VRFAsIHBhY2tldF90aW1lX3VzKTsKIH0KIAogdm9pZCBUdXJu
UG9ydDo6RGlzcGF0Y2hQYWNrZXQoY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFByb3RvY29sVHlwZSBwcm90bywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgaWYgKENvbm5l
Y3Rpb24qIGNvbm4gPSBHZXRDb25uZWN0aW9uKHJlbW90ZV9hZGRyKSkgewotICAgIGNvbm4tPk9u
UmVhZFBhY2tldChkYXRhLCBzaXplLCBwYWNrZXRfdGltZSk7CisgICAgY29ubi0+T25SZWFkUGFj
a2V0KGRhdGEsIHNpemUsIHBhY2tldF90aW1lX3VzKTsKICAgfSBlbHNlIHsKICAgICBQb3J0OjpP
blJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsIHByb3RvKTsKICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
dHVybnBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3R1cm5wb3J0LmgKaW5kZXggMTFiNThkNGY2Yzk5ZmFhOTQyOGI4MjViYWM2N2FlODYz
Y2QxZDNhYS4uNWRiMTk1NmE5YjFhZmE3Y2E2NDdjMjZlYjMyMGU1ZjRiMzZhOTUwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
dHVybnBvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS90dXJucG9ydC5oCkBAIC0xNCwxMCArMTQsMTIgQEAKICNpbmNsdWRlIDxzdGRp
by5oPgogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAor
I2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInAycC9iYXNlL3BvcnQu
aCIKICNpbmNsdWRlICJwMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2FzeW5jaW52b2tlci5oIgpAQCAtNTAsMjUgKzUyLDQ0IEBAIGNsYXNzIFR1cm5Q
b3J0IDogcHVibGljIFBvcnQgewogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhY2tldHMu
CiAgIH07CiAgIC8vIENyZWF0ZSBhIFRVUk4gcG9ydCB1c2luZyB0aGUgc2hhcmVkIFVEUCBzb2Nr
ZXQsIHxzb2NrZXR8LgotICBzdGF0aWMgVHVyblBvcnQqIENyZWF0ZShydGM6OlRocmVhZCogdGhy
ZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3Rvcnkq
IGZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29y
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogc29j
a2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5h
bWUsICAvLyBpY2UgdXNlcm5hbWUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBwYXNzd29yZCwgIC8vIGljZSBwYXNzd29yZC4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUHJvdG9jb2xBZGRyZXNzJiBzZXJ2ZXJfYWRkcmVzcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUmVsYXlDcmVkZW50aWFscyYgY3JlZGVudGlhbHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXJ2ZXJfcHJpb3JpdHksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHdlYnJ0Yzo6VHVybkN1c3RvbWl6ZXIqIGN1c3RvbWl6ZXIpIHsKLSAgICBy
ZXR1cm4gbmV3IFR1cm5Qb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgc29ja2V0LCB1c2Vy
bmFtZSwgcGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfYWRkcmVzcywg
Y3JlZGVudGlhbHMsIHNlcnZlcl9wcmlvcml0eSwgb3JpZ2luLAotICAgICAgICAgICAgICAgICAg
ICAgICAgY3VzdG9taXplcik7CisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VHVyblBvcnQ+IENy
ZWF0ZSgKKyAgICAgIHJ0Yzo6VGhyZWFkKiB0aHJlYWQsCisgICAgICBydGM6OlBhY2tldFNvY2tl
dEZhY3RvcnkqIGZhY3RvcnksCisgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdvcmssCisgICAgICBy
dGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
dXNlcm5hbWUsICAvLyBpY2UgdXNlcm5hbWUuCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFz
c3dvcmQsICAvLyBpY2UgcGFzc3dvcmQuCisgICAgICBjb25zdCBQcm90b2NvbEFkZHJlc3MmIHNl
cnZlcl9hZGRyZXNzLAorICAgICAgY29uc3QgUmVsYXlDcmVkZW50aWFscyYgY3JlZGVudGlhbHMs
CisgICAgICBpbnQgc2VydmVyX3ByaW9yaXR5LAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9y
aWdpbiwKKyAgICAgIHdlYnJ0Yzo6VHVybkN1c3RvbWl6ZXIqIGN1c3RvbWl6ZXIpIHsKKyAgICAv
LyBVc2luZyBgbmV3YCB0byBhY2Nlc3MgYSBub24tcHVibGljIGNvbnN0cnVjdG9yLgorICAgIHJl
dHVybiBhYnNsOjpXcmFwVW5pcXVlKG5ldyBUdXJuUG9ydCgKKyAgICAgICAgdGhyZWFkLCBmYWN0
b3J5LCBuZXR3b3JrLCBzb2NrZXQsIHVzZXJuYW1lLCBwYXNzd29yZCwgc2VydmVyX2FkZHJlc3Ms
CisgICAgICAgIGNyZWRlbnRpYWxzLCBzZXJ2ZXJfcHJpb3JpdHksIG9yaWdpbiwgY3VzdG9taXpl
cikpOworICB9CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92ZSBvbmNlIGRvd25zdHJlYW0g
Y2xpZW50cyBoYXZlIG1vdmVkIHRvIHxDcmVhdGV8LgorICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFR1cm5Qb3J0PiBDcmVhdGVVbmlxdWUoCisgICAgICBydGM6OlRocmVhZCogdGhyZWFkLAorICAg
ICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAorICAgICAgcnRjOjpOZXR3b3Jr
KiBuZXR3b3JrLAorICAgICAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAorICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLCAgLy8gaWNlIHVzZXJuYW1lLgorICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLCAgLy8gaWNlIHBhc3N3b3JkLgorICAgICAgY29uc3Qg
UHJvdG9jb2xBZGRyZXNzJiBzZXJ2ZXJfYWRkcmVzcywKKyAgICAgIGNvbnN0IFJlbGF5Q3JlZGVu
dGlhbHMmIGNyZWRlbnRpYWxzLAorICAgICAgaW50IHNlcnZlcl9wcmlvcml0eSwKKyAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCisgICAgICB3ZWJydGM6OlR1cm5DdXN0b21pemVyKiBj
dXN0b21pemVyKSB7CisgICAgcmV0dXJuIENyZWF0ZSh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmss
IHNvY2tldCwgdXNlcm5hbWUsIHBhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgc2VydmVyX2Fk
ZHJlc3MsIGNyZWRlbnRpYWxzLCBzZXJ2ZXJfcHJpb3JpdHksIG9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgIGN1c3RvbWl6ZXIpOwogICB9CiAKICAgLy8gQ3JlYXRlIGEgVFVSTiBwb3J0IHRoYXQg
d2lsbCB1c2UgYSBuZXcgc29ja2V0LCBib3VuZCB0byB8bmV0d29ya3wgYW5kCiAgIC8vIHVzaW5n
IGEgcG9ydCBpbiB0aGUgcmFuZ2UgYmV0d2VlbiB8bWluX3BvcnR8IGFuZCB8bWF4X3BvcnR8Lgot
ICBzdGF0aWMgVHVyblBvcnQqIENyZWF0ZSgKKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUdXJu
UG9ydD4gQ3JlYXRlKAogICAgICAgcnRjOjpUaHJlYWQqIHRocmVhZCwKICAgICAgIHJ0Yzo6UGFj
a2V0U29ja2V0RmFjdG9yeSogZmFjdG9yeSwKICAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywK
QEAgLTg0LDEwICsxMDUsMzQgQEAgY2xhc3MgVHVyblBvcnQgOiBwdWJsaWMgUG9ydCB7CiAgICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHRsc19lbGxpcHRpY19jdXJ2ZXMsCiAg
ICAgICB3ZWJydGM6OlR1cm5DdXN0b21pemVyKiBjdXN0b21pemVyLAogICAgICAgcnRjOjpTU0xD
ZXJ0aWZpY2F0ZVZlcmlmaWVyKiB0bHNfY2VydF92ZXJpZmllciA9IG51bGxwdHIpIHsKLSAgICBy
ZXR1cm4gbmV3IFR1cm5Qb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgbWluX3BvcnQsIG1h
eF9wb3J0LCB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkLCBzZXJ2
ZXJfYWRkcmVzcywgY3JlZGVudGlhbHMsIHNlcnZlcl9wcmlvcml0eSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG9yaWdpbiwgdGxzX2FscG5fcHJvdG9jb2xzLCB0bHNfZWxsaXB0aWNfY3VydmVz
LAotICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9taXplciwgdGxzX2NlcnRfdmVyaWZpZXIp
OworICAgIC8vIFVzaW5nIGBuZXdgIHRvIGFjY2VzcyBhIG5vbi1wdWJsaWMgY29uc3RydWN0b3Iu
CisgICAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWUoCisgICAgICAgIG5ldyBUdXJuUG9ydCh0aHJl
YWQsIGZhY3RvcnksIG5ldHdvcmssIG1pbl9wb3J0LCBtYXhfcG9ydCwgdXNlcm5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICBwYXNzd29yZCwgc2VydmVyX2FkZHJlc3MsIGNyZWRlbnRpYWxzLCBz
ZXJ2ZXJfcHJpb3JpdHksCisgICAgICAgICAgICAgICAgICAgICBvcmlnaW4sIHRsc19hbHBuX3By
b3RvY29scywgdGxzX2VsbGlwdGljX2N1cnZlcywKKyAgICAgICAgICAgICAgICAgICAgIGN1c3Rv
bWl6ZXIsIHRsc19jZXJ0X3ZlcmlmaWVyKSk7CisgIH0KKyAgLy8gVE9ETyhzdGV2ZWFudG9uKTog
UmVtb3ZlIG9uY2UgZG93bnN0cmVhbSBjbGllbnRzIGhhdmUgbW92ZWQgdG8gfENyZWF0ZXwuCisg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VHVyblBvcnQ+IENyZWF0ZVVuaXF1ZSgKKyAgICAgIHJ0
Yzo6VGhyZWFkKiB0aHJlYWQsCisgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3Rv
cnksCisgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdvcmssCisgICAgICB1aW50MTZfdCBtaW5fcG9y
dCwKKyAgICAgIHVpbnQxNl90IG1heF9wb3J0LAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVz
ZXJuYW1lLCAgLy8gaWNlIHVzZXJuYW1lLgorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3
b3JkLCAgLy8gaWNlIHBhc3N3b3JkLgorICAgICAgY29uc3QgUHJvdG9jb2xBZGRyZXNzJiBzZXJ2
ZXJfYWRkcmVzcywKKyAgICAgIGNvbnN0IFJlbGF5Q3JlZGVudGlhbHMmIGNyZWRlbnRpYWxzLAor
ICAgICAgaW50IHNlcnZlcl9wcmlvcml0eSwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmln
aW4sCisgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHRsc19hbHBuX3Byb3Rv
Y29scywKKyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdGxzX2VsbGlwdGlj
X2N1cnZlcywKKyAgICAgIHdlYnJ0Yzo6VHVybkN1c3RvbWl6ZXIqIGN1c3RvbWl6ZXIsCisgICAg
ICBydGM6OlNTTENlcnRpZmljYXRlVmVyaWZpZXIqIHRsc19jZXJ0X3ZlcmlmaWVyID0gbnVsbHB0
cikgeworICAgIHJldHVybiBDcmVhdGUodGhyZWFkLCBmYWN0b3J5LCBuZXR3b3JrLCBtaW5fcG9y
dCwgbWF4X3BvcnQsIHVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgcGFzc3dvcmQsIHNlcnZl
cl9hZGRyZXNzLCBjcmVkZW50aWFscywgc2VydmVyX3ByaW9yaXR5LAorICAgICAgICAgICAgICAg
ICAgb3JpZ2luLCB0bHNfYWxwbl9wcm90b2NvbHMsIHRsc19lbGxpcHRpY19jdXJ2ZXMsIGN1c3Rv
bWl6ZXIsCisgICAgICAgICAgICAgICAgICB0bHNfY2VydF92ZXJpZmllcik7CiAgIH0KIAogICB+
VHVyblBvcnQoKSBvdmVycmlkZTsKQEAgLTEzMCwxMyArMTc1LDE0IEBAIGNsYXNzIFR1cm5Qb3J0
IDogcHVibGljIFBvcnQgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRk
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBh
Y2tldF90aW1lKSBvdmVycmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IHBhY2tldF90aW1lX3VzKSBvdmVycmlkZTsKICAgYm9vbCBDYW5IYW5kbGVJbmNvbWluZ1BhY2tl
dHNGcm9tKAogICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyKSBjb25zdCBvdmVy
cmlkZTsKICAgdmlydHVhbCB2b2lkIE9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0
KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0
X3RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tl
dF90aW1lX3VzKTsKIAogICB2b2lkIE9uU2VudFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0
KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgc2Vu
dF9wYWNrZXQpIG92ZXJyaWRlOwpAQCAtMjY4LDEzICszMTQsMTggQEAgY2xhc3MgVHVyblBvcnQg
OiBwdWJsaWMgUG9ydCB7CiAgIHZvaWQgT25BbGxvY2F0ZUVycm9yKCk7CiAgIHZvaWQgT25BbGxv
Y2F0ZVJlcXVlc3RUaW1lb3V0KCk7CiAKLSAgdm9pZCBIYW5kbGVEYXRhSW5kaWNhdGlvbihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKLSAgdm9pZCBIYW5kbGVDaGFubmVs
RGF0YShpbnQgY2hhbm5lbF9pZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7
Ci0gIHZvaWQgRGlzcGF0Y2hQYWNrZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsCi0g
ICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgUHJvdG9j
b2xUeXBlIHByb3RvLCBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgdm9p
ZCBIYW5kbGVEYXRhSW5kaWNhdGlvbihjb25zdCBjaGFyKiBkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDY0X3QgcGFja2V0X3RpbWVfdXMpOworICB2b2lkIEhhbmRsZUNoYW5uZWxEYXRhKGludCBjaGFu
bmVsX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CisgIHZvaWQgRGlzcGF0Y2hQYWNrZXQoY29uc3Qg
Y2hhciogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAorICAg
ICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBwcm90bywKKyAgICAgICAgICAgICAgICAg
ICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKTsKIAogICBib29sIFNjaGVkdWxlUmVmcmVzaCh1
aW50MzJfdCBsaWZldGltZSk7CiAgIHZvaWQgU2VuZFJlcXVlc3QoU3R1blJlcXVlc3QqIHJlcXVl
c3QsIGludCBkZWxheSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJucG9ydF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5wb3J0X3VuaXR0ZXN0
LmNjCmluZGV4IGJhYzM1ZTg5MWNkNDlkY2RlMGNhMzY5NDFjY2NiNmJjODllMmIwNDEuLjYxN2U3
Nzk4YWRmNTNmYWU1NDRlMDBjMTljNDQ0NjExY2M5ZGMzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5wb3J0X3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3R1cm5wb3J0X3VuaXR0ZXN0LmNjCkBAIC0xOTQsMjMgKzE5NCwyMyBAQCBjbGFzcyBU
dXJuUG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgdm9pZCBPblR1cm5SZWFkUGFj
a2V0KENvbm5lY3Rpb24qIGNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgICAgdHVybl9w
YWNrZXRzXy5wdXNoX2JhY2socnRjOjpCdWZmZXIoZGF0YSwgc2l6ZSkpOwogICB9CiAgIHZvaWQg
T25VZHBQb3J0Q29tcGxldGUoUG9ydCogcG9ydCkgeyB1ZHBfcmVhZHlfID0gdHJ1ZTsgfQogICB2
b2lkIE9uVWRwUmVhZFBhY2tldChDb25uZWN0aW9uKiBjb25uLAogICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRf
dGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7
CiAgICAgdWRwX3BhY2tldHNfLnB1c2hfYmFjayhydGM6OkJ1ZmZlcihkYXRhLCBzaXplKSk7CiAg
IH0KICAgdm9pZCBPblNvY2tldFJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29j
a2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cykgewogICAg
IHR1cm5fcG9ydF8tPkhhbmRsZUluY29taW5nUGFja2V0KHNvY2tldCwgZGF0YSwgc2l6ZSwgcmVt
b3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3Rp
bWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lX3Vz
KTsKICAgfQogICB2b2lkIE9uVHVyblBvcnRDbG9zZWQoVHVyblBvcnQqIHBvcnQpIHsgdHVybl9w
b3J0X2Nsb3NlZF8gPSB0cnVlOyB9CiAgIHZvaWQgT25UdXJuUG9ydERlc3Ryb3llZChQb3J0SW50
ZXJmYWNlKiBwb3J0KSB7IHR1cm5fcG9ydF9kZXN0cm95ZWRfID0gdHJ1ZTsgfQpAQCAtMjcwLDEw
ICsyNzAsOSBAQCBjbGFzcyBUdXJuUG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvdG9jb2xBZGRyZXNzJiBz
ZXJ2ZXJfYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIG9yaWdpbikgewogICAgIFJlbGF5Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMo
dXNlcm5hbWUsIHBhc3N3b3JkKTsKLSAgICB0dXJuX3BvcnRfLnJlc2V0KFR1cm5Qb3J0OjpDcmVh
dGUoCisgICAgdHVybl9wb3J0XyA9IFR1cm5Qb3J0OjpDcmVhdGUoCiAgICAgICAgICZtYWluXywg
JnNvY2tldF9mYWN0b3J5XywgbmV0d29yaywgMCwgMCwga0ljZVVmcmFnMSwga0ljZVB3ZDEsCi0g
ICAgICAgIHNlcnZlcl9hZGRyZXNzLCBjcmVkZW50aWFscywgMCwgb3JpZ2luLCBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4oKSwKLSAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCksIHR1
cm5fY3VzdG9taXplcl8uZ2V0KCkpKTsKKyAgICAgICAgc2VydmVyX2FkZHJlc3MsIGNyZWRlbnRp
YWxzLCAwLCBvcmlnaW4sIHt9LCB7fSwgdHVybl9jdXN0b21pemVyXy5nZXQoKSk7CiAgICAgLy8g
VGhpcyBUVVJOIHBvcnQgd2lsbCBiZSB0aGUgY29udHJvbGxpbmcuCiAgICAgdHVybl9wb3J0Xy0+
U2V0SWNlUm9sZShJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgICBDb25uZWN0U2lnbmFscygpOwpA
QCAtMzAxLDEwICszMDAsMTAgQEAgY2xhc3MgVHVyblBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QsCiAgICAgfQogCiAgICAgUmVsYXlDcmVkZW50aWFscyBjcmVkZW50aWFscyh1c2VybmFt
ZSwgcGFzc3dvcmQpOwotICAgIHR1cm5fcG9ydF8ucmVzZXQoVHVyblBvcnQ6OkNyZWF0ZSgmbWFp
bl8sICZzb2NrZXRfZmFjdG9yeV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1ha2VOZXR3b3JrKGtMb2NhbEFkZHIxKSwgc29ja2V0Xy5nZXQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga0ljZVVmcmFnMSwga0ljZVB3ZDEsIHNlcnZlcl9h
ZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVkZW50aWFs
cywgMCwgc3RkOjpzdHJpbmcoKSwgbnVsbHB0cikpOworICAgIHR1cm5fcG9ydF8gPQorICAgICAg
ICBUdXJuUG9ydDo6Q3JlYXRlKCZtYWluXywgJnNvY2tldF9mYWN0b3J5XywgTWFrZU5ldHdvcmso
a0xvY2FsQWRkcjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF8uZ2V0KCksIGtJ
Y2VVZnJhZzEsIGtJY2VQd2QxLCBzZXJ2ZXJfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVkZW50aWFscywgMCwgc3RkOjpzdHJpbmcoKSwgbnVsbHB0cik7CiAgICAgLy8gVGhp
cyBUVVJOIHBvcnQgd2lsbCBiZSB0aGUgY29udHJvbGxpbmcuCiAgICAgdHVybl9wb3J0Xy0+U2V0
SWNlUm9sZShJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgICBDb25uZWN0U2lnbmFscygpOwpAQCAt
MzI5LDkgKzMyOCw5IEBAIGNsYXNzIFR1cm5Qb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
LAogICB2b2lkIENyZWF0ZVVkcFBvcnQoKSB7IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOyB9
CiAKICAgdm9pZCBDcmVhdGVVZHBQb3J0KGNvbnN0IFNvY2tldEFkZHJlc3MmIGFkZHJlc3MpIHsK
LSAgICB1ZHBfcG9ydF8ucmVzZXQoVURQUG9ydDo6Q3JlYXRlKAotICAgICAgICAmbWFpbl8sICZz
b2NrZXRfZmFjdG9yeV8sIE1ha2VOZXR3b3JrKGFkZHJlc3MpLCAwLCAwLCBrSWNlVWZyYWcyLAot
ICAgICAgICBrSWNlUHdkMiwgc3RkOjpzdHJpbmcoKSwgZmFsc2UsIGFic2w6Om51bGxvcHQpKTsK
KyAgICB1ZHBfcG9ydF8gPSBVRFBQb3J0OjpDcmVhdGUoJm1haW5fLCAmc29ja2V0X2ZhY3Rvcnlf
LCBNYWtlTmV0d29yayhhZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCwga0ljZVVmcmFnMiwga0ljZVB3ZDIsIHN0ZDo6c3RyaW5nKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhbHNlLCBhYnNsOjpudWxsb3B0KTsKICAgICAvLyBVRFAgcG9y
dCB3aWxsIGJlIGNvbnRyb2xsZWQuCiAgICAgdWRwX3BvcnRfLT5TZXRJY2VSb2xlKElDRVJPTEVf
Q09OVFJPTExFRCk7CiAgICAgdWRwX3BvcnRfLT5TaWduYWxQb3J0Q29tcGxldGUuY29ubmVjdCh0
aGlzLApAQCAtMTAzMiw4ICsxMDMxLDcgQEAgVEVTVF9GKFR1cm5Qb3J0VGVzdCwgVGVzdFR1cm5B
bGxvY2F0ZU1pc21hdGNoKSB7CiAgIHN0ZDo6c3RyaW5nIHRlc3RfcGFja2V0ID0gIlRlc3QgcGFj
a2V0IjsKICAgRVhQRUNUX0ZBTFNFKHR1cm5fcG9ydF8tPkhhbmRsZUluY29taW5nUGFja2V0KAog
ICAgICAgc29ja2V0Xy5nZXQoKSwgdGVzdF9wYWNrZXQuZGF0YSgpLCB0ZXN0X3BhY2tldC5zaXpl
KCksCi0gICAgICBydGM6OlNvY2tldEFkZHJlc3Moa1R1cm5VZHBFeHRBZGRyLmlwYWRkcigpLCAw
KSwKLSAgICAgIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSkpOworICAgICAgcnRjOjpTb2NrZXRB
ZGRyZXNzKGtUdXJuVWRwRXh0QWRkci5pcGFkZHIoKSwgMCksIHJ0Yzo6VGltZU1pY3JvcygpKSk7
CiB9CiAKIC8vIFRlc3RzIHRoYXQgYSBzaGFyZWQtc29ja2V0LVR1cm5Qb3J0IGNyZWF0ZXMgaXRz
IG93biBzb2NrZXQgYWZ0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJuc2VydmVyLmNjCmluZGV4IDAy
MjExM2U3ZTc0NmEwYzU5MDc2YjhiMDYyY2IzMTA5OTJhOTRlMzAuLmE4YmI0MWM4N2E2YWNhZDJl
Mjg0YWE3ODMxMDE1MzdmNzc3NGZmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnNlcnZlci5j
YwpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0
YWRhcHRlcnMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
dGhyZWFkLmgiCiAKQEAgLTE5OSw5ICsxOTgsMTAgQEAgdm9pZCBUdXJuU2VydmVyOjpPbkludGVy
bmFsU29ja2V0Q2xvc2UocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogfQogCiB2b2lk
IFR1cm5TZXJ2ZXI6Ok9uSW50ZXJuYWxQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29j
a2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRy
ZXNzJiBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLykgewogICBSVENfRENIRUNL
KHRocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICAvLyBGYWlsIGlmIHRo
ZSBwYWNrZXQgaXMgdG9vIHNtYWxsIHRvIGV2ZW4gY29udGFpbiBhIGNoYW5uZWwgaGVhZGVyLgog
ICBpZiAoc2l6ZSA8IFRVUk5fQ0hBTk5FTF9IRUFERVJfU0laRSkgewpAQCAtODQyLDkgKzg0Miwx
MCBAQCB2b2lkIFR1cm5TZXJ2ZXJBbGxvY2F0aW9uOjpIYW5kbGVDaGFubmVsRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgewogCiB2b2lkIFR1cm5TZXJ2ZXJBbGxvY2F0aW9uOjpP
bkV4dGVybmFsUGFja2V0KAogICAgIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKLSAg
ICBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwKKyAgICBjb25zdCBjaGFyKiBkYXRhLAor
ICAgIHNpemVfdCBzaXplLAogICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKLSAg
ICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgY29uc3QgaW50NjRf
dCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAgUlRDX0RDSEVDSyhleHRlcm5hbF9zb2NrZXRf
LmdldCgpID09IHNvY2tldCk7CiAgIENoYW5uZWwqIGNoYW5uZWwgPSBGaW5kQ2hhbm5lbChhZGRy
KTsKICAgaWYgKGNoYW5uZWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIuaAppbmRleCBl
N2Y4ODZjZjhmYjU1M2RlMzQ5NGNiZTcyODEzYTlkODhkM2Y5ODRiLi5hZjUxMjUxYmJjZDBjZjAz
OTg0ZjAzMWJiMjcyODk3ZTM0M2U0MzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJuc2VydmVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnNlcnZlci5o
CkBAIC0xMDUsOSArMTA1LDEwIEBAIGNsYXNzIFR1cm5TZXJ2ZXJBbGxvY2F0aW9uIDogcHVibGlj
IHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCiAgIHZvaWQgSGFuZGxlQ2hhbm5lbEJpbmRSZXF1ZXN0KGNv
bnN0IFR1cm5NZXNzYWdlKiBtc2cpOwogCiAgIHZvaWQgT25FeHRlcm5hbFBhY2tldChydGM6OkFz
eW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpOwogCiAg
IHN0YXRpYyBpbnQgQ29tcHV0ZUxpZmV0aW1lKGNvbnN0IFR1cm5NZXNzYWdlKiBtc2cpOwogICBi
b29sIEhhc1Blcm1pc3Npb24oY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIpOwpAQCAtMjU2LDkg
KzI1NywxMSBAQCBjbGFzcyBUdXJuU2VydmVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+
IHsKIAogIHByaXZhdGU6CiAgIHN0ZDo6c3RyaW5nIEdlbmVyYXRlTm9uY2UoaW50NjRfdCBub3cp
IGNvbnN0OwotICB2b2lkIE9uSW50ZXJuYWxQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCog
c29ja2V0LCBjb25zdCBjaGFyKiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNpemUsIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICB2b2lkIE9u
SW50ZXJuYWxQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRB
ZGRyZXNzJiBhZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYg
cGFja2V0X3RpbWVfdXMpOwogCiAgIHZvaWQgT25OZXdJbnRlcm5hbENvbm5lY3Rpb24ocnRjOjpB
c3luY1NvY2tldCogc29ja2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJhbnNwb3J0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJhbnNwb3J0LmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjFlNWI4NzY5ZWU2ZGM2NmY1YTNiNzI0
YjM3ZjgzMDRlMTEwMjZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3VkcHRyYW5zcG9ydC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KLSAqLwotCi0jaW5jbHVkZSAicDJwL2Jhc2UvdWRwdHJhbnNwb3J0LmgiCi0KLSNpbmNs
dWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6Om1vdmUuCi0KLSNp
bmNsdWRlICJydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2FzeW5jdWRwc29ja2V0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL25ldGhlbHBlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJl
c3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90
aHJlYWRfY2hlY2tlci5oIgotCi1uYW1lc3BhY2UgY3JpY2tldCB7Ci0KLVVkcFRyYW5zcG9ydDo6
VWRwVHJhbnNwb3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0
PiBzb2NrZXQpCi0gICAgOiB0cmFuc3BvcnRfbmFtZV8odHJhbnNwb3J0X25hbWUpLCBzb2NrZXRf
KHN0ZDo6bW92ZShzb2NrZXQpKSB7Ci0gIFJUQ19EQ0hFQ0soc29ja2V0Xyk7Ci0gIHNvY2tldF8t
PlNpZ25hbFJlYWRQYWNrZXQuY29ubmVjdCh0aGlzLCAmVWRwVHJhbnNwb3J0OjpPblNvY2tldFJl
YWRQYWNrZXQpOwotICBzb2NrZXRfLT5TaWduYWxTZW50UGFja2V0LmNvbm5lY3QodGhpcywgJlVk
cFRyYW5zcG9ydDo6T25Tb2NrZXRTZW50UGFja2V0KTsKLX0KLQotVWRwVHJhbnNwb3J0Ojp+VWRw
VHJhbnNwb3J0KCkgewotICBSVENfRENIRUNLX1JVTl9PTigmbmV0d29ya190aHJlYWRfY2hlY2tl
cl8pOwotfQotCi1ydGM6OlNvY2tldEFkZHJlc3MgVWRwVHJhbnNwb3J0OjpHZXRMb2NhbEFkZHJl
c3MoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKCZuZXR3b3JrX3RocmVhZF9jaGVja2Vy
Xyk7Ci0gIHJldHVybiBzb2NrZXRfLT5HZXRMb2NhbEFkZHJlc3MoKTsKLX0KLQotYm9vbCBVZHBU
cmFuc3BvcnQ6OlNldFJlbW90ZUFkZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRy
KSB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKCZuZXR3b3JrX3RocmVhZF9jaGVja2VyXyk7Ci0gIGlm
ICghYWRkci5Jc0NvbXBsZXRlKCkpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJSZW1v
dGUgYWRkcmVzcyBub3QgY29tcGxldGUuIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgLy8g
VE9ETyhqb2hhbik6IGNoZWNrIGZvciBpcHY0LCBvdGhlciBzZXR0aW5ncy4KLSAgYm9vbCBwcmV2
X2Rlc3RpbmF0aW9uX25pbCA9IHJlbW90ZV9hZGRyZXNzXy5Jc05pbCgpOwotICByZW1vdGVfYWRk
cmVzc18gPSBhZGRyOwotICAvLyBHb2luZyBmcm9tICJkaWRuJ3QgaGF2ZSBkZXN0aW5hdGlvbiIg
dG8gImhhdmUgZGVzdGluYXRpb24iIG9yIHZpY2UgdmVyc2EuCi0gIGlmIChwcmV2X2Rlc3RpbmF0
aW9uX25pbCAhPSByZW1vdGVfYWRkcmVzc18uSXNOaWwoKSkgewotICAgIFNpZ25hbFdyaXRhYmxl
U3RhdGUodGhpcyk7Ci0gICAgaWYgKHByZXZfZGVzdGluYXRpb25fbmlsKSB7Ci0gICAgICBTaWdu
YWxSZWFkeVRvU2VuZCh0aGlzKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLXJ0
Yzo6U29ja2V0QWRkcmVzcyBVZHBUcmFuc3BvcnQ6OkdldFJlbW90ZUFkZHJlc3MoKSBjb25zdCB7
Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKCZuZXR3b3JrX3RocmVhZF9jaGVja2VyXyk7Ci0gIHJldHVy
biByZW1vdGVfYWRkcmVzc187Ci19Ci0KLWNvbnN0IHN0ZDo6c3RyaW5nJiBVZHBUcmFuc3BvcnQ6
OnRyYW5zcG9ydF9uYW1lKCkgY29uc3QgewotICByZXR1cm4gdHJhbnNwb3J0X25hbWVfOwotfQot
Ci1ib29sIFVkcFRyYW5zcG9ydDo6cmVjZWl2aW5nKCkgY29uc3QgewotICAvLyBUT0RPKGpvaGFu
KTogSW1wbGVtZW50IG1ldGhvZCBhbmQgc2lnbmFsLgotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBVZHBUcmFuc3BvcnQ6OndyaXRhYmxlKCkgY29uc3QgewotICBSVENfRENIRUNLX1JVTl9PTigm
bmV0d29ya190aHJlYWRfY2hlY2tlcl8pOwotICByZXR1cm4gIXJlbW90ZV9hZGRyZXNzXy5Jc05p
bCgpOwotfQotCi1pbnQgVWRwVHJhbnNwb3J0OjpTZW5kUGFja2V0KGNvbnN0IGNoYXIqIGRhdGEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0T3B0aW9ucyYgb3B0aW9ucywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7Ci0gIC8vIE5vIHRocmVhZF9jaGVj
a2VyIGluIGhpZ2ggZnJlcXVlbmN5IG5ldHdvcmsgZnVuY3Rpb24uCi0gIGlmIChyZW1vdGVfYWRk
cmVzc18uSXNOaWwoKSkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlJlbW90ZSBhZGRy
ZXNzIG5vdCBzZXQuIjsKLSAgICBzZW5kX2Vycm9yXyA9IEVOT1RDT05OOwotICAgIHJldHVybiAt
MTsKLSAgfQotICBpbnQgcmVzdWx0ID0KLSAgICAgIHNvY2tldF8tPlNlbmRUbygoY29uc3Qgdm9p
ZCopZGF0YSwgbGVuLCByZW1vdGVfYWRkcmVzc18sIG9wdGlvbnMpOwotICBpZiAocmVzdWx0IDw9
IDApIHsKLSAgICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICJTZW5kUGFja2V0KCkgIiA8PCByZXN1
bHQ7Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYWJzbDo6b3B0aW9uYWw8cnRjOjpOZXR3
b3JrUm91dGU+IFVkcFRyYW5zcG9ydDo6bmV0d29ya19yb3V0ZSgpIGNvbnN0IHsKLSAgcnRjOjpO
ZXR3b3JrUm91dGUgbmV0d29ya19yb3V0ZTsKLSAgbmV0d29ya19yb3V0ZS5wYWNrZXRfb3Zlcmhl
YWQgPQotICAgICAgLyprVWRwT3ZlcmhlYWQ9Ki84ICsgR2V0SXBPdmVyaGVhZChHZXRMb2NhbEFk
ZHJlc3MoKS5mYW1pbHkoKSk7Ci0gIHJldHVybiBhYnNsOjpvcHRpb25hbDxydGM6Ok5ldHdvcmtS
b3V0ZT4obmV0d29ya19yb3V0ZSk7Ci19Ci0KLWludCBVZHBUcmFuc3BvcnQ6OlNldE9wdGlvbihy
dGM6OlNvY2tldDo6T3B0aW9uIG9wdCwgaW50IHZhbHVlKSB7Ci0gIHJldHVybiAwOwotfQotCi1p
bnQgVWRwVHJhbnNwb3J0OjpHZXRFcnJvcigpIHsKLSAgcmV0dXJuIHNlbmRfZXJyb3JfOwotfQot
Ci1ydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiBVZHBUcmFuc3BvcnQ6OkdldEludGVybmFs
KCkgewotICByZXR1cm4gdGhpczsKLX0KLQotdm9pZCBVZHBUcmFuc3BvcnQ6Ok9uU29ja2V0UmVh
ZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGlt
ZSYgcGFja2V0X3RpbWUpIHsKLSAgLy8gTm8gdGhyZWFkX2NoZWNrZXIgaW4gaGlnaCBmcmVxdWVu
Y3kgbmV0d29yayBmdW5jdGlvbi4KLSAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBkYXRhLCBsZW4s
IHBhY2tldF90aW1lLCAwKTsKLX0KLQotdm9pZCBVZHBUcmFuc3BvcnQ6Ok9uU29ja2V0U2VudFBh
Y2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgcGFja2V0KSB7Ci0gIFJU
Q19EQ0hFQ0tfRVEoc29ja2V0Xy5nZXQoKSwgc29ja2V0KTsKLSAgU2lnbmFsU2VudFBhY2tldCh0
aGlzLCBwYWNrZXQpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJh
bnNwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS91ZHB0cmFuc3BvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZhNzk1
ZjJlMWY5YTUwNDExNDZmOGE5YWFkYmM2ZDY5OTAyNmU0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS91ZHB0cmFuc3BvcnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg5
ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgUDJQX0JBU0VfVURQVFJBTlNQ
T1JUX0hfCi0jZGVmaW5lIFAyUF9CQVNFX1VEUFRSQU5TUE9SVF9IXwotCi0jaW5jbHVkZSA8bWVt
b3J5PgotI2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKLSNpbmNsdWRlICJhcGkvb3J0Yy91ZHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLSNpbmNsdWRl
ICJwMnAvYmFzZS9wYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2FzeW5jcGFja2V0c29ja2V0LmgiICAvLyBGb3IgUGFja2V0T3B0aW9ucy4KLSNpbmNsdWRlICJy
dGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgotCi1uYW1lc3BhY2UgcnRjIHsKLWNsYXNzIEFzeW5j
UGFja2V0U29ja2V0Owotc3RydWN0IFBhY2tldFRpbWU7Ci1zdHJ1Y3QgU2VudFBhY2tldDsKLWNs
YXNzIFNvY2tldEFkZHJlc3M7Ci19ICAvLyBuYW1lc3BhY2UgcnRjCi0KLW5hbWVzcGFjZSBjcmlj
a2V0IHsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgVWRwVHJhbnNwb3J0SW50ZXJmYWNlLgotLy8g
VXNlZCBieSBPcnRjRmFjdG9yeS4KLWNsYXNzIFVkcFRyYW5zcG9ydCA6IHB1YmxpYyBydGM6OlBh
Y2tldFRyYW5zcG9ydEludGVybmFsLAotICAgICAgICAgICAgICAgICAgICAgcHVibGljIHdlYnJ0
Yzo6VWRwVHJhbnNwb3J0SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC8vIHx0cmFuc3BvcnRfbmFt
ZXwgaXMgb25seSB1c2VkIGZvciBpZGVudGlmaWNhdGlvbi9sb2dnaW5nLgotICAvLyB8c29ja2V0
fCBtdXN0IGJlIG5vbi1udWxsLgotICBVZHBUcmFuc3BvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIHRy
YW5zcG9ydF9uYW1lLAotICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQ
YWNrZXRTb2NrZXQ+IHNvY2tldCk7Ci0gIH5VZHBUcmFuc3BvcnQoKSBvdmVycmlkZTsKLQotICAv
LyBPdmVycmlkZXMgb2YgVWRwVHJhbnNwb3J0SW50ZXJmYWNlLCB1c2VkIGJ5IHRoZSBBUEkgY29u
c3VtZXIuCi0gIHJ0Yzo6U29ja2V0QWRkcmVzcyBHZXRMb2NhbEFkZHJlc3MoKSBjb25zdCBvdmVy
cmlkZTsKLSAgYm9vbCBTZXRSZW1vdGVBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYg
YWRkcikgb3ZlcnJpZGU7Ci0gIHJ0Yzo6U29ja2V0QWRkcmVzcyBHZXRSZW1vdGVBZGRyZXNzKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0KLSAgLy8gT3ZlcnJpZGVzIG9mIFBhY2tldFRyYW5zcG9ydEludGVy
bmFsLCB1c2VkIGJ5IHdlYnJ0YyBpbnRlcm5hbGx5LgotICBjb25zdCBzdGQ6OnN0cmluZyYgdHJh
bnNwb3J0X25hbWUoKSBjb25zdCBvdmVycmlkZTsKLQotICBib29sIHJlY2VpdmluZygpIGNvbnN0
IG92ZXJyaWRlOwotCi0gIGJvb2wgd3JpdGFibGUoKSBjb25zdCBvdmVycmlkZTsKLQotICBpbnQg
U2VuZFBhY2tldChjb25zdCBjaGFyKiBkYXRhLAotICAgICAgICAgICAgICAgICBzaXplX3QgbGVu
LAotICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldE9wdGlvbnMmIG9wdGlvbnMsCi0g
ICAgICAgICAgICAgICAgIGludCBmbGFncykgb3ZlcnJpZGU7Ci0KLSAgaW50IFNldE9wdGlvbihy
dGM6OlNvY2tldDo6T3B0aW9uIG9wdCwgaW50IHZhbHVlKSBvdmVycmlkZTsKLQotICBpbnQgR2V0
RXJyb3IoKSBvdmVycmlkZTsKLQotICBhYnNsOjpvcHRpb25hbDxydGM6Ok5ldHdvcmtSb3V0ZT4g
bmV0d29ya19yb3V0ZSgpIGNvbnN0IG92ZXJyaWRlOwotCi0gcHJvdGVjdGVkOgotICBQYWNrZXRU
cmFuc3BvcnRJbnRlcm5hbCogR2V0SW50ZXJuYWwoKSBvdmVycmlkZTsKLQotIHByaXZhdGU6Ci0g
IHZvaWQgT25Tb2NrZXRSZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7Ci0gIHZvaWQgT25Tb2Nr
ZXRTZW50UGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTZW50UGFja2V0JiBwYWNrZXQpOwotICBib29sIElz
TG9jYWxDb25zaXN0ZW50KCk7Ci0KLSAgc3RkOjpzdHJpbmcgdHJhbnNwb3J0X25hbWVfOwotICBp
bnQgc2VuZF9lcnJvcl8gPSAwOwotICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNv
Y2tldD4gc29ja2V0XzsKLSAgLy8gSWYgbm90IHNldCwgd2lsbCBiZSBhbiAibmlsIiBhZGRyZXNz
ICgiSXNOaWwiIHJldHVybnMgdHJ1ZSkuCi0gIHJ0Yzo6U29ja2V0QWRkcmVzcyByZW1vdGVfYWRk
cmVzc187Ci0gIHJ0Yzo6VGhyZWFkQ2hlY2tlciBuZXR3b3JrX3RocmVhZF9jaGVja2VyXzsKLX07
Ci0KLX0gIC8vIG5hbWVzcGFjZSBjcmlja2V0Ci0KLSNlbmRpZiAgLy8gUDJQX0JBU0VfVURQVFJB
TlNQT1JUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS91ZHB0cmFuc3BvcnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS91ZHB0cmFuc3BvcnRfdW5pdHRl
c3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZDM2NjU5NWY0MTZiODJjYTIy
ZTFiZGFkODkwYmE3ODU3ZGZiZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvdWRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICsw
LDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTYgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVk
ZSA8bGlzdD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRl
IDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJwMnAvYmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3Rvcnku
aCIKLSNpbmNsdWRlICJwMnAvYmFzZS9wYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5oIgotI2luY2x1
ZGUgInAycC9iYXNlL3VkcHRyYW5zcG9ydC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcGFj
a2V0c29ja2V0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9pcGFkZHJlc3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0c2VydmVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhy
ZWFkLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5oIgotCi1uYW1l
c3BhY2UgY3JpY2tldCB7Ci0KLWNvbnN0ZXhwciBpbnQga1RpbWVvdXRNcyA9IDEwMDAwOwotc3Rh
dGljIGNvbnN0IHJ0Yzo6SVBBZGRyZXNzIGtJUHY0TG9jYWxIb3N0QWRkcmVzcyA9Ci0gICAgcnRj
OjpJUEFkZHJlc3MoMHg3RjAwMDAwMSk7ICAvLyAxMjcuMC4wLjEKLQotY2xhc3MgVWRwVHJhbnNw
b3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3Rz
PD4gewotIHB1YmxpYzoKLSAgVWRwVHJhbnNwb3J0VGVzdCgpCi0gICAgICA6IHZpcnR1YWxfc29j
a2V0X3NlcnZlcl8obmV3IHJ0Yzo6VmlydHVhbFNvY2tldFNlcnZlcigpKSwKLSAgICAgICAgbmV0
d29ya190aHJlYWRfKHZpcnR1YWxfc29ja2V0X3NlcnZlcl8uZ2V0KCkpLAotICAgICAgICBlcDFf
KCJOYW1lMSIsCi0gICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQ+KAotICAgICAgICAgICAgICAgICBzb2NrZXRfZmFjdG9yeV8uQ3JlYXRlVWRwU29ja2V0
KAotICAgICAgICAgICAgICAgICAgICAgcnRjOjpTb2NrZXRBZGRyZXNzKHJ0Yzo6R2V0QW55SVAo
QUZfSU5FVCksIDApLAotICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAg
ICAgIDApKSksCi0gICAgICAgIGVwMl8oIk5hbWUyIiwKLSAgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4oCi0gICAgICAgICAgICAgICAgIHNvY2tldF9m
YWN0b3J5Xy5DcmVhdGVVZHBTb2NrZXQoCi0gICAgICAgICAgICAgICAgICAgICBydGM6OlNvY2tl
dEFkZHJlc3MocnRjOjpHZXRBbnlJUChBRl9JTkVUKSwgMCksCi0gICAgICAgICAgICAgICAgICAg
ICAwLAotICAgICAgICAgICAgICAgICAgICAgMCkpKSB7Ci0gICAgLy8gU2V0dXAgSVAgQWRkcmVz
cyBmb3Igb3V0Z29pbmcgcGFja2V0cyBmcm9tIHNvY2tldHMgYm91bmQgdG8gSVBWNAotICAgIC8v
IElOQUREUl9BTlkgKCIwLjAuMC4wLiIpLCBhcyB1c2VkIGFib3ZlIHdoZW4gY3JlYXRpbmcgdGhl
IHZpcnR1YWwKLSAgICAvLyBzb2NrZXRzLiBUaGUgdmlydHVhbCBzb2NrZXQgc2VydmVyIHNlbmRz
IHRoZXNlIHBhY2tldHMgb25seSBpZiB0aGUKLSAgICAvLyBkZWZhdWx0IGFkZHJlc3MgaXMgZXhw
bGljaXQgc2V0LiBXaXRoIGEgcGh5c2ljYWwgc29ja2V0LCB0aGUgYWN0dWFsCi0gICAgLy8gbmV0
d29yayBzdGFjayAvIG9wZXJhdGluZyBzeXN0ZW0gd291bGQgc2V0IHRoZSBJUCBhZGRyZXNzIGZv
ciBvdXRnb2luZwotICAgIC8vIHBhY2tldHMuCi0gICAgdmlydHVhbF9zb2NrZXRfc2VydmVyXy0+
U2V0RGVmYXVsdFJvdXRlKGtJUHY0TG9jYWxIb3N0QWRkcmVzcyk7Ci0gIH0KLQotICBzdHJ1Y3Qg
RW5kcG9pbnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewotICAgIGV4cGxpY2l0IEVu
ZHBvaW50KHN0ZDo6c3RyaW5nIHRjaF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQpIHsKLSAgICAgIGNoXy5y
ZXNldChuZXcgVWRwVHJhbnNwb3J0KHN0ZDo6bW92ZSh0Y2hfbmFtZSksIHN0ZDo6bW92ZShzb2Nr
ZXQpKSk7Ci0gICAgICBjaF8tPlNpZ25hbFJlYWRQYWNrZXQuY29ubmVjdCh0aGlzLCAmRW5kcG9p
bnQ6Ok9uUmVhZFBhY2tldCk7Ci0gICAgICBjaF8tPlNpZ25hbFNlbnRQYWNrZXQuY29ubmVjdCh0
aGlzLCAmRW5kcG9pbnQ6Ok9uU2VudFBhY2tldCk7Ci0gICAgICBjaF8tPlNpZ25hbFJlYWR5VG9T
ZW5kLmNvbm5lY3QodGhpcywgJkVuZHBvaW50OjpPblJlYWR5VG9TZW5kKTsKLSAgICAgIGNoXy0+
U2lnbmFsV3JpdGFibGVTdGF0ZS5jb25uZWN0KHRoaXMsICZFbmRwb2ludDo6T25Xcml0YWJsZVN0
YXRlKTsKLSAgICB9Ci0KLSAgICBib29sIENoZWNrRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuKSB7Ci0gICAgICBib29sIHJldCA9IGZhbHNlOwotICAgICAgaWYgKCFjaF9wYWNrZXRzXy5l
bXB0eSgpKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIHBhY2tldCA9IGNoX3BhY2tldHNfLmZyb250
KCk7Ci0gICAgICAgIHJldCA9IChwYWNrZXQgPT0gc3RkOjpzdHJpbmcoZGF0YSwgbGVuKSk7Ci0g
ICAgICAgIGNoX3BhY2tldHNfLnBvcF9mcm9udCgpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJl
dDsKLSAgICB9Ci0KLSAgICB2b2lkIE9uV3JpdGFibGVTdGF0ZShydGM6OlBhY2tldFRyYW5zcG9y
dEludGVybmFsKiB0cmFuc3BvcnQpIHsKLSAgICAgIG51bV9zaWdfd3JpdGFibGVfKys7Ci0gICAg
fQotCi0gICAgdm9pZCBPblJlYWR5VG9TZW5kKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwq
IHRyYW5zcG9ydCkgewotICAgICAgbnVtX3NpZ19yZWFkeV90b19zZW5kXysrOwotICAgIH0KLQot
ICAgIHZvaWQgT25SZWFkUGFja2V0KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5z
cG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAotICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxh
Z3MpIHsKLSAgICAgIG51bV9yZWNlaXZlZF9wYWNrZXRzXysrOwotICAgICAgUlRDX0xPRyhMU19W
RVJCT1NFKSA8PCAiT25SZWFkUGFja2V0ICh1bml0dGVzdCkiOwotICAgICAgY2hfcGFja2V0c18u
cHVzaF9mcm9udChzdGQ6OnN0cmluZyhkYXRhLCBsZW4pKTsKLSAgICB9Ci0KLSAgICB2b2lkIE9u
U2VudFBhY2tldChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTZW50UGFja2V0JikgewotICAgICAgbnVtX3Np
Z19zZW50X3BhY2tldHNfKys7Ci0gICAgfQotCi0gICAgaW50IFNlbmREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW4pIHsKLSAgICAgIHJ0Yzo6UGFja2V0T3B0aW9ucyBvcHRpb25zOwot
ICAgICAgcmV0dXJuIGNoXy0+U2VuZFBhY2tldChkYXRhLCBsZW4sIG9wdGlvbnMsIDApOwotICAg
IH0KLQotICAgIHZvaWQgR2V0TG9jYWxQb3J0KHVpbnQxNl90KiBsb2NhbF9wb3J0KSB7Ci0gICAg
ICAqbG9jYWxfcG9ydCA9IGNoXy0+R2V0TG9jYWxBZGRyZXNzKCkucG9ydCgpOwotICAgIH0KLQot
ICAgIHN0ZDo6bGlzdDxzdGQ6OnN0cmluZz4gY2hfcGFja2V0c187Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFVkcFRyYW5zcG9ydD4gY2hfOwotICAgIHVpbnQzMl90IG51bV9yZWNlaXZlZF9wYWNrZXRz
XyA9IDA7ICAgLy8gSW5jcmVhc2VzIG9uIFNpZ25hbFJlYWRQYWNrZXQuCi0gICAgdWludDMyX3Qg
bnVtX3NpZ19zZW50X3BhY2tldHNfID0gMDsgICAvLyBJbmNyZWFzZXMgb24gU2lnbmFsU2VudFBh
Y2tldC4KLSAgICB1aW50MzJfdCBudW1fc2lnX3dyaXRhYmxlXyA9IDA7ICAgICAgIC8vIEluY3Jl
YXNlcyBvbiBTaWduYWxXcml0YWJsZS4KLSAgICB1aW50MzJfdCBudW1fc2lnX3JlYWR5X3RvX3Nl
bmRfID0gMDsgIC8vIEluY3JlYXNlcyBvbiBTaWduYWxSZWFkeVRvU2VuZC4KLSAgfTsKLQotICBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpWaXJ0dWFsU29ja2V0U2VydmVyPiB2aXJ0dWFsX3NvY2tldF9z
ZXJ2ZXJfOwotICBydGM6OkF1dG9Tb2NrZXRTZXJ2ZXJUaHJlYWQgbmV0d29ya190aHJlYWRfOwot
ICAvLyBVc2VzIGN1cnJlbnQgdGhyZWFkJ3Mgc29ja2V0IHNlcnZlciwgd2hpY2ggd2lsbCBiZSBz
ZXQgYnkgc3Nfc2NvcGVfLgotICBydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeSBzb2NrZXRf
ZmFjdG9yeV87Ci0KLSAgRW5kcG9pbnQgZXAxXzsKLSAgRW5kcG9pbnQgZXAyXzsKLQotICB2b2lk
IFRlc3RTZW5kUmVjdigpIHsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgNTsgKytpKSB7
Ci0gICAgICBzdGF0aWMgY29uc3QgY2hhciogZGF0YSA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVW
V1hZWjEyMzQ1Njc4OTAiOwotICAgICAgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4oc3RybGVu
KGRhdGEpKTsKLSAgICAgIC8vIGxvY2FsX2NoYW5uZWwgPD09PiByZW1vdGVfY2hhbm5lbAotICAg
ICAgRVhQRUNUX0VRX1dBSVQobGVuLCBlcDFfLlNlbmREYXRhKGRhdGEsIGxlbiksIGtUaW1lb3V0
TXMpOwotICAgICAgRVhQRUNUX1RSVUVfV0FJVChlcDJfLkNoZWNrRGF0YShkYXRhLCBsZW4pLCBr
VGltZW91dE1zKTsKLSAgICAgIEVYUEVDVF9FUV9XQUlUKGkgKyAxdSwgZXAyXy5udW1fcmVjZWl2
ZWRfcGFja2V0c18sIGtUaW1lb3V0TXMpOwotICAgICAgRVhQRUNUX0VRX1dBSVQobGVuLCBlcDJf
LlNlbmREYXRhKGRhdGEsIGxlbiksIGtUaW1lb3V0TXMpOwotICAgICAgRVhQRUNUX1RSVUVfV0FJ
VChlcDFfLkNoZWNrRGF0YShkYXRhLCBsZW4pLCBrVGltZW91dE1zKTsKLSAgICAgIEVYUEVDVF9F
UV9XQUlUKGkgKyAxdSwgZXAxXy5udW1fcmVjZWl2ZWRfcGFja2V0c18sIGtUaW1lb3V0TXMpOwot
ICAgIH0KLSAgfQotfTsKLQotVEVTVF9GKFVkcFRyYW5zcG9ydFRlc3QsIEFkZHJlc3NHZXR0ZXJz
KSB7Ci0gIC8vIEluaXRpYWxseSwgcmVtb3RlIGFkZHJlc3Mgc2hvdWxkIGJlIG5pbCBidXQgbG9j
YWwgYWRkcmVzcyBzaG91bGRuJ3QgYmUuCi0gIEVYUEVDVF9GQUxTRShlcDFfLmNoXy0+R2V0TG9j
YWxBZGRyZXNzKCkuSXNOaWwoKSk7Ci0gIEVYUEVDVF9UUlVFKGVwMV8uY2hfLT5HZXRSZW1vdGVB
ZGRyZXNzKCkuSXNOaWwoKSk7Ci0gIHJ0Yzo6U29ja2V0QWRkcmVzcyBkZXN0aW5hdGlvbigiMTI3
LjAuMC4xIiwgMTMzNyk7Ci0gIEFTU0VSVF9UUlVFKGVwMV8uY2hfLT5TZXRSZW1vdGVBZGRyZXNz
KGRlc3RpbmF0aW9uKSk7Ci0gIEVYUEVDVF9FUShkZXN0aW5hdGlvbiwgZXAxXy5jaF8tPkdldFJl
bW90ZUFkZHJlc3MoKSk7Ci19Ci0KLS8vIFNldHRpbmcgYW4gaW52YWxpZCBhZGRyZXNzIHNob3Vs
ZCBmYWlsIGFuZCBoYXZlIG5vIGVmZmVjdC4KLVRFU1RfRihVZHBUcmFuc3BvcnRUZXN0LCBTZXR0
aW5nSW5jb21wbGV0ZVJlbW90ZUFkZHJlc3NGYWlscykgewotICBFWFBFQ1RfRkFMU0UoZXAxXy5j
aF8tPlNldFJlbW90ZUFkZHJlc3MocnRjOjpTb2NrZXRBZGRyZXNzKCIxMjcuMC4wLjEiLCAwKSkp
OwotICBFWFBFQ1RfVFJVRShlcDFfLmNoXy0+R2V0UmVtb3RlQWRkcmVzcygpLklzTmlsKCkpOwot
fQotCi1URVNUX0YoVWRwVHJhbnNwb3J0VGVzdCwgU2VuZFJlY3ZCYXNpYykgewotICB1aW50MTZf
dCBwb3J0OwotICBlcDJfLkdldExvY2FsUG9ydCgmcG9ydCk7Ci0gIHJ0Yzo6U29ja2V0QWRkcmVz
cyBhZGRyMiA9IHJ0Yzo6U29ja2V0QWRkcmVzcygiMTI3LjAuMC4xIiwgcG9ydCk7Ci0gIEVYUEVD
VF9UUlVFKGVwMV8uY2hfLT5TZXRSZW1vdGVBZGRyZXNzKGFkZHIyKSk7Ci0gIGVwMV8uR2V0TG9j
YWxQb3J0KCZwb3J0KTsKLSAgcnRjOjpTb2NrZXRBZGRyZXNzIGFkZHIxID0gcnRjOjpTb2NrZXRB
ZGRyZXNzKCIxMjcuMC4wLjEiLCBwb3J0KTsKLSAgRVhQRUNUX1RSVUUoZXAyXy5jaF8tPlNldFJl
bW90ZUFkZHJlc3MoYWRkcjEpKTsKLSAgVGVzdFNlbmRSZWN2KCk7Ci19Ci0KLS8vIFRlc3QgdGhl
IHNpZ25hbHMgYW5kIHN0YXRlIG1ldGhvZHMgdXNlZCBpbnRlcm5hbGx5IGJ5IGNhdXNpbmcgYSBV
ZHBUcmFuc3BvcnQKLS8vIHRvIHNlbmQgYSBwYWNrZXQgdG8gaXRzZWxmLgotVEVTVF9GKFVkcFRy
YW5zcG9ydFRlc3QsIFN0YXR1c0FuZFNpZ25hbHMpIHsKLSAgRVhQRUNUX0VRKDB1LCBlcDFfLm51
bV9zaWdfd3JpdGFibGVfKTsKLSAgRVhQRUNUX0VRKDB1LCBlcDFfLm51bV9zaWdfcmVhZHlfdG9f
c2VuZF8pOwotICAvLyBMb29wYmFjawotICBFWFBFQ1RfVFJVRSghZXAxXy5jaF8tPndyaXRhYmxl
KCkpOwotICBydGM6OlNvY2tldEFkZHJlc3MgYWRkciA9IGVwMV8uY2hfLT5HZXRMb2NhbEFkZHJl
c3MoKTsKLSAgLy8gS2VlcCBwb3J0LCBidXQgZXhwbGljaXRseSBzZXQgSVAuCi0gIGFkZHIuU2V0
SVAoIjEyNy4wLjAuMSIpOwotICBlcDFfLmNoXy0+U2V0UmVtb3RlQWRkcmVzcyhhZGRyKTsKLSAg
RVhQRUNUX1RSVUUoZXAxXy5jaF8tPndyaXRhYmxlKCkpOwotICBFWFBFQ1RfRVEoMXUsIGVwMV8u
bnVtX3NpZ193cml0YWJsZV8pOwotICBFWFBFQ1RfRVEoMXUsIGVwMV8ubnVtX3NpZ19yZWFkeV90
b19zZW5kXyk7Ci0gIGNvbnN0IGNoYXIgZGF0YVtdID0gImFiYyI7Ci0gIGVwMV8uU2VuZERhdGEo
ZGF0YSwgc2l6ZW9mKGRhdGEpKTsKLSAgRVhQRUNUX0VRX1dBSVQoMXUsIGVwMV8uY2hfcGFja2V0
c18uc2l6ZSgpLCBrVGltZW91dE1zKTsKLSAgRVhQRUNUX0VRX1dBSVQoMXUsIGVwMV8ubnVtX3Np
Z19zZW50X3BhY2tldHNfLCBrVGltZW91dE1zKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGNyaWNr
ZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuY2MKaW5k
ZXggYzFiMWRlNThkZGI2MGZmMjc4YWU1M2ExYzg2M2M5OTQwMDNiMjQ2Ni4uMGMyZmVmMzExMjYw
NTc5NmI2ODNjNWVkZDU4MDFkZmU3NDc4YzY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3Iu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Ns
aWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuY2MKQEAgLTUxOCw2ICs1MTgsMTAgQEAgdm9pZCBCYXNp
Y1BvcnRBbGxvY2F0b3JTZXNzaW9uOjpHZXRDYW5kaWRhdGVzRnJvbVBvcnQoCiAgIH0KIH0KIAor
Ym9vbCBCYXNpY1BvcnRBbGxvY2F0b3JTZXNzaW9uOjpNZG5zT2JmdXNjYXRpb25FbmFibGVkKCkg
Y29uc3QgeworICByZXR1cm4gYWxsb2NhdG9yXy0+bmV0d29ya19tYW5hZ2VyKCktPkdldE1kbnNS
ZXNwb25kZXIoKSAhPSBudWxscHRyOworfQorCiBDYW5kaWRhdGUgQmFzaWNQb3J0QWxsb2NhdG9y
U2Vzc2lvbjo6U2FuaXRpemVDYW5kaWRhdGUoCiAgICAgY29uc3QgQ2FuZGlkYXRlJiBjKSBjb25z
dCB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKG5ldHdvcmtfdGhyZWFkXyk7CkBAIC01MzQsNyArNTM4
LDcgQEAgQ2FuZGlkYXRlIEJhc2ljUG9ydEFsbG9jYXRvclNlc3Npb246OlNhbml0aXplQ2FuZGlk
YXRlKAogICBib29sIGZpbHRlcl9zdHVuX3JlbGF0ZWRfYWRkcmVzcyA9CiAgICAgICAoKGZsYWdz
KCkgJiBQT1JUQUxMT0NBVE9SX0RJU0FCTEVfQURBUFRFUl9FTlVNRVJBVElPTikgJiYKICAgICAg
ICAoZmxhZ3MoKSAmIFBPUlRBTExPQ0FUT1JfRElTQUJMRV9ERUZBVUxUX0xPQ0FMX0NBTkRJREFU
RSkpIHx8Ci0gICAgICAhKGNhbmRpZGF0ZV9maWx0ZXJfICYgQ0ZfSE9TVCk7CisgICAgICAhKGNh
bmRpZGF0ZV9maWx0ZXJfICYgQ0ZfSE9TVCkgfHwgTWRuc09iZnVzY2F0aW9uRW5hYmxlZCgpOwog
ICAvLyBJZiB0aGUgY2FuZGlkYXRlIGZpbHRlciBkb2Vzbid0IGFsbG93IHJlZmxleGl2ZSBhZGRy
ZXNzZXMsIGVtcHR5IFRVUk4gcmFkZHIKICAgLy8gdG8gYXZvaWQgcmVmbGV4aXZlIGFkZHJlc3Mg
bGVha2FnZS4KICAgYm9vbCBmaWx0ZXJfdHVybl9yZWxhdGVkX2FkZHJlc3MgPSAhKGNhbmRpZGF0
ZV9maWx0ZXJfICYgQ0ZfUkVGTEVYSVZFKTsKQEAgLTEzNjIsNyArMTM2Niw3IEBAIHZvaWQgQWxs
b2NhdGlvblNlcXVlbmNlOjpDcmVhdGVVRFBQb3J0cygpIHsKIAogICAvLyBUT0RPKG1hbGxpbmF0
aCkgLSBSZW1vdmUgVURQUG9ydCBjcmVhdGluZyBzb2NrZXQgYWZ0ZXIgc2hhcmVkIHNvY2tldAog
ICAvLyBpcyBlbmFibGVkIGNvbXBsZXRlbHkuCi0gIFVEUFBvcnQqIHBvcnQgPSBOVUxMOworICBz
dGQ6OnVuaXF1ZV9wdHI8VURQUG9ydD4gcG9ydDsKICAgYm9vbCBlbWl0X2xvY2FsX2NhbmRpZGF0
ZV9mb3JfYW55YWRkcmVzcyA9CiAgICAgICAhSXNGbGFnU2V0KFBPUlRBTExPQ0FUT1JfRElTQUJM
RV9ERUZBVUxUX0xPQ0FMX0NBTkRJREFURSk7CiAgIGlmIChJc0ZsYWdTZXQoUE9SVEFMTE9DQVRP
Ul9FTkFCTEVfU0hBUkVEX1NPQ0tFVCkgJiYgdWRwX3NvY2tldF8pIHsKQEAgLTEzODQsNyArMTM4
OCw3IEBAIHZvaWQgQWxsb2NhdGlvblNlcXVlbmNlOjpDcmVhdGVVRFBQb3J0cygpIHsKICAgICAv
LyBJZiBzaGFyZWQgc29ja2V0IGlzIGVuYWJsZWQsIFNUVU4gY2FuZGlkYXRlIHdpbGwgYmUgYWxs
b2NhdGVkIGJ5IHRoZQogICAgIC8vIFVEUFBvcnQuCiAgICAgaWYgKElzRmxhZ1NldChQT1JUQUxM
T0NBVE9SX0VOQUJMRV9TSEFSRURfU09DS0VUKSkgewotICAgICAgdWRwX3BvcnRfID0gcG9ydDsK
KyAgICAgIHVkcF9wb3J0XyA9IHBvcnQuZ2V0KCk7CiAgICAgICBwb3J0LT5TaWduYWxEZXN0cm95
ZWQuY29ubmVjdCh0aGlzLCAmQWxsb2NhdGlvblNlcXVlbmNlOjpPblBvcnREZXN0cm95ZWQpOwog
CiAgICAgICAvLyBJZiBTVFVOIGlzIG5vdCBkaXNhYmxlZCwgc2V0dGluZyBzdHVuIHNlcnZlciBh
ZGRyZXNzIHRvIHBvcnQuCkBAIC0xMzk4LDcgKzE0MDIsNyBAQCB2b2lkIEFsbG9jYXRpb25TZXF1
ZW5jZTo6Q3JlYXRlVURQUG9ydHMoKSB7CiAgICAgICB9CiAgICAgfQogCi0gICAgc2Vzc2lvbl8t
PkFkZEFsbG9jYXRlZFBvcnQocG9ydCwgdGhpcywgdHJ1ZSk7CisgICAgc2Vzc2lvbl8tPkFkZEFs
bG9jYXRlZFBvcnQocG9ydC5yZWxlYXNlKCksIHRoaXMsIHRydWUpOwogICB9CiB9CiAKQEAgLTE0
MDgsMTMgKzE0MTIsMTMgQEAgdm9pZCBBbGxvY2F0aW9uU2VxdWVuY2U6OkNyZWF0ZVRDUFBvcnRz
KCkgewogICAgIHJldHVybjsKICAgfQogCi0gIFBvcnQqIHBvcnQgPSBUQ1BQb3J0OjpDcmVhdGUo
CisgIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBwb3J0ID0gVENQUG9ydDo6Q3JlYXRlKAogICAgICAg
c2Vzc2lvbl8tPm5ldHdvcmtfdGhyZWFkKCksIHNlc3Npb25fLT5zb2NrZXRfZmFjdG9yeSgpLCBu
ZXR3b3JrXywKICAgICAgIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+bWluX3BvcnQoKSwgc2Vzc2lv
bl8tPmFsbG9jYXRvcigpLT5tYXhfcG9ydCgpLAogICAgICAgc2Vzc2lvbl8tPnVzZXJuYW1lKCks
IHNlc3Npb25fLT5wYXNzd29yZCgpLAogICAgICAgc2Vzc2lvbl8tPmFsbG9jYXRvcigpLT5hbGxv
d190Y3BfbGlzdGVuKCkpOwogICBpZiAocG9ydCkgewotICAgIHNlc3Npb25fLT5BZGRBbGxvY2F0
ZWRQb3J0KHBvcnQsIHRoaXMsIHRydWUpOworICAgIHNlc3Npb25fLT5BZGRBbGxvY2F0ZWRQb3J0
KHBvcnQucmVsZWFzZSgpLCB0aGlzLCB0cnVlKTsKICAgICAvLyBTaW5jZSBUQ1BQb3J0IGlzIG5v
dCBjcmVhdGVkIHVzaW5nIHNoYXJlZCBzb2NrZXQsIHxwb3J0fCB3aWxsIG5vdCBiZQogICAgIC8v
IGFkZGVkIHRvIHRoZSBkZXF1ZXVlLgogICB9CkBAIC0xNDM2LDE0ICsxNDQwLDE0IEBAIHZvaWQg
QWxsb2NhdGlvblNlcXVlbmNlOjpDcmVhdGVTdHVuUG9ydHMoKSB7CiAgICAgcmV0dXJuOwogICB9
CiAKLSAgU3R1blBvcnQqIHBvcnQgPSBTdHVuUG9ydDo6Q3JlYXRlKAorICBzdGQ6OnVuaXF1ZV9w
dHI8U3R1blBvcnQ+IHBvcnQgPSBTdHVuUG9ydDo6Q3JlYXRlKAogICAgICAgc2Vzc2lvbl8tPm5l
dHdvcmtfdGhyZWFkKCksIHNlc3Npb25fLT5zb2NrZXRfZmFjdG9yeSgpLCBuZXR3b3JrXywKICAg
ICAgIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+bWluX3BvcnQoKSwgc2Vzc2lvbl8tPmFsbG9jYXRv
cigpLT5tYXhfcG9ydCgpLAogICAgICAgc2Vzc2lvbl8tPnVzZXJuYW1lKCksIHNlc3Npb25fLT5w
YXNzd29yZCgpLCBjb25maWdfLT5TdHVuU2VydmVycygpLAogICAgICAgc2Vzc2lvbl8tPmFsbG9j
YXRvcigpLT5vcmlnaW4oKSwKICAgICAgIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+c3R1bl9jYW5k
aWRhdGVfa2VlcGFsaXZlX2ludGVydmFsKCkpOwogICBpZiAocG9ydCkgewotICAgIHNlc3Npb25f
LT5BZGRBbGxvY2F0ZWRQb3J0KHBvcnQsIHRoaXMsIHRydWUpOworICAgIHNlc3Npb25fLT5BZGRB
bGxvY2F0ZWRQb3J0KHBvcnQucmVsZWFzZSgpLCB0aGlzLCB0cnVlKTsKICAgICAvLyBTaW5jZSBT
dHVuUG9ydCBpcyBub3QgY3JlYXRlZCB1c2luZyBzaGFyZWQgc29ja2V0LCB8cG9ydHwgd2lsbCBu
b3QgYmUKICAgICAvLyBhZGRlZCB0byB0aGUgZGVxdWV1ZS4KICAgfQpAQCAtMTQ3OSwxMSArMTQ4
MywxMiBAQCB2b2lkIEFsbG9jYXRpb25TZXF1ZW5jZTo6Q3JlYXRlUmVsYXlQb3J0cygpIHsKIAog
dm9pZCBBbGxvY2F0aW9uU2VxdWVuY2U6OkNyZWF0ZUd0dXJuUG9ydChjb25zdCBSZWxheVNlcnZl
ckNvbmZpZyYgY29uZmlnKSB7CiAgIC8vIFRPRE8obWFsbGluYXRoKSAtIFJlbmFtZSBSZWxheVBv
cnQgdG8gR1R1cm5Qb3J0LgotICBSZWxheVBvcnQqIHBvcnQgPSBSZWxheVBvcnQ6OkNyZWF0ZSgK
KyAgc3RkOjp1bmlxdWVfcHRyPFJlbGF5UG9ydD4gcG9ydCA9IFJlbGF5UG9ydDo6Q3JlYXRlKAog
ICAgICAgc2Vzc2lvbl8tPm5ldHdvcmtfdGhyZWFkKCksIHNlc3Npb25fLT5zb2NrZXRfZmFjdG9y
eSgpLCBuZXR3b3JrXywKICAgICAgIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+bWluX3BvcnQoKSwg
c2Vzc2lvbl8tPmFsbG9jYXRvcigpLT5tYXhfcG9ydCgpLAogICAgICAgY29uZmlnXy0+dXNlcm5h
bWUsIGNvbmZpZ18tPnBhc3N3b3JkKTsKICAgaWYgKHBvcnQpIHsKKyAgICBSZWxheVBvcnQqIHBv
cnRfcHRyID0gcG9ydC5yZWxlYXNlKCk7CiAgICAgLy8gU2luY2UgUmVsYXlQb3J0IGlzIG5vdCBj
cmVhdGVkIHVzaW5nIHNoYXJlZCBzb2NrZXQsIHxwb3J0fCB3aWxsIG5vdCBiZQogICAgIC8vIGFk
ZGVkIHRvIHRoZSBkZXF1ZXVlLgogICAgIC8vIE5vdGU6IFdlIG11c3QgYWRkIHRoZSBhbGxvY2F0
ZWQgcG9ydCBiZWZvcmUgd2UgYWRkIGFkZHJlc3NlcyBiZWNhdXNlCkBAIC0xNDkxLDE3ICsxNDk2
LDE3IEBAIHZvaWQgQWxsb2NhdGlvblNlcXVlbmNlOjpDcmVhdGVHdHVyblBvcnQoY29uc3QgUmVs
YXlTZXJ2ZXJDb25maWcmIGNvbmZpZykgewogICAgIC8vICAgICAgIHNldHRpbmdzLiAgSG93ZXZl
ciwgd2UgYWxzbyBjYW4ndCBwcmVwYXJlIHRoZSBhZGRyZXNzIChub3JtYWxseQogICAgIC8vICAg
ICAgIGRvbmUgYnkgQWRkQWxsb2NhdGVkUG9ydCkgdW50aWwgd2UgaGF2ZSB0aGVzZSBhZGRyZXNz
ZXMuICBTbyB3ZQogICAgIC8vICAgICAgIHdhaXQgdG8gZG8gdGhhdCB1bnRpbCBiZWxvdy4KLSAg
ICBzZXNzaW9uXy0+QWRkQWxsb2NhdGVkUG9ydChwb3J0LCB0aGlzLCBmYWxzZSk7CisgICAgc2Vz
c2lvbl8tPkFkZEFsbG9jYXRlZFBvcnQocG9ydF9wdHIsIHRoaXMsIGZhbHNlKTsKIAogICAgIC8v
IEFkZCB0aGUgYWRkcmVzc2VzIG9mIHRoaXMgcHJvdG9jb2wuCiAgICAgUG9ydExpc3Q6OmNvbnN0
X2l0ZXJhdG9yIHJlbGF5X3BvcnQ7CiAgICAgZm9yIChyZWxheV9wb3J0ID0gY29uZmlnLnBvcnRz
LmJlZ2luKCk7IHJlbGF5X3BvcnQgIT0gY29uZmlnLnBvcnRzLmVuZCgpOwogICAgICAgICAgKyty
ZWxheV9wb3J0KSB7Ci0gICAgICBwb3J0LT5BZGRTZXJ2ZXJBZGRyZXNzKCpyZWxheV9wb3J0KTsK
LSAgICAgIHBvcnQtPkFkZEV4dGVybmFsQWRkcmVzcygqcmVsYXlfcG9ydCk7CisgICAgICBwb3J0
X3B0ci0+QWRkU2VydmVyQWRkcmVzcygqcmVsYXlfcG9ydCk7CisgICAgICBwb3J0X3B0ci0+QWRk
RXh0ZXJuYWxBZGRyZXNzKCpyZWxheV9wb3J0KTsKICAgICB9CiAgICAgLy8gU3RhcnQgZmV0Y2hp
bmcgYW4gYWRkcmVzcyBmb3IgdGhpcyBwb3J0LgotICAgIHBvcnQtPlByZXBhcmVBZGRyZXNzKCk7
CisgICAgcG9ydF9wdHItPlByZXBhcmVBZGRyZXNzKCk7CiAgIH0KIH0KIApAQCAtMTU3OSw3ICsx
NTg0LDcgQEAgdm9pZCBBbGxvY2F0aW9uU2VxdWVuY2U6Ok9uUmVhZFBhY2tldChydGM6OkFzeW5j
UGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBh
Y2tldF90aW1lX3VzKSB7CiAgIFJUQ19EQ0hFQ0soc29ja2V0ID09IHVkcF9zb2NrZXRfLmdldCgp
KTsKIAogICBib29sIHR1cm5fcG9ydF9mb3VuZCA9IGZhbHNlOwpAQCAtMTU5Myw3ICsxNTk4LDcg
QEAgdm9pZCBBbGxvY2F0aW9uU2VxdWVuY2U6Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0
U29ja2V0KiBzb2NrZXQsCiAgIGZvciAoYXV0byogcG9ydCA6IHJlbGF5X3BvcnRzXykgewogICAg
IGlmIChwb3J0LT5DYW5IYW5kbGVJbmNvbWluZ1BhY2tldHNGcm9tKHJlbW90ZV9hZGRyKSkgewog
ICAgICAgaWYgKHBvcnQtPkhhbmRsZUluY29taW5nUGFja2V0KHNvY2tldCwgZGF0YSwgc2l6ZSwg
cmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0
X3RpbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3Rp
bWVfdXMpKSB7CiAgICAgICAgIHJldHVybjsKICAgICAgIH0KICAgICAgIHR1cm5fcG9ydF9mb3Vu
ZCA9IHRydWU7CkBAIC0xNjA5LDcgKzE2MTQsNyBAQCB2b2lkIEFsbG9jYXRpb25TZXF1ZW5jZTo6
T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgc3R1
bl9zZXJ2ZXJzLmZpbmQocmVtb3RlX2FkZHIpICE9IHN0dW5fc2VydmVycy5lbmQoKSkgewogICAg
ICAgUlRDX0RDSEVDSyh1ZHBfcG9ydF8tPlNoYXJlZFNvY2tldCgpKTsKICAgICAgIHVkcF9wb3J0
Xy0+SGFuZGxlSW5jb21pbmdQYWNrZXQoc29ja2V0LCBkYXRhLCBzaXplLCByZW1vdGVfYWRkciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdGltZV91cyk7CiAgICAg
fQogICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3Iu
aAppbmRleCA4Yjk1MWNhZTllNjJjYmY3ZWVjMTg3MmI0Yjk5ZmNjMzI4OWQ0NThmLi42NzJmM2Rk
YjdjMjYzYjFhNTVmYTMxNDIyYjlmMTAzYTViZTdiNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9j
YXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmgKQEAgLTIyLDExICsyMiwxMiBAQAogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdvcmsuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0
ZW0vcnRjX2V4cG9ydC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogCiBuYW1lc3Bh
Y2UgY3JpY2tldCB7CiAKLWNsYXNzIEJhc2ljUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBQb3J0QWxs
b2NhdG9yIHsKK2NsYXNzIFJUQ19FWFBPUlQgQmFzaWNQb3J0QWxsb2NhdG9yIDogcHVibGljIFBv
cnRBbGxvY2F0b3IgewogIHB1YmxpYzoKICAgLy8gbm90ZTogVGhlIChvcHRpb25hbCkgcmVsYXlf
cG9ydF9mYWN0b3J5IGlzIG93bmVkIGJ5IGNhbGxlcgogICAvLyBhbmQgbXVzdCBoYXZlIGEgbGlm
ZSB0aW1lIHRoYXQgZXhjZWVkcyB0aGF0IG9mIEJhc2ljUG9ydEFsbG9jYXRvci4KQEAgLTExMCw4
ICsxMTEsOCBAQCBlbnVtIGNsYXNzIFNlc3Npb25TdGF0ZSB7CiAgICAgICAgICAgICAgIC8vIHBy
b2Nlc3Mgd2lsbCBiZSBzdGFydGVkLgogfTsKIAotY2xhc3MgQmFzaWNQb3J0QWxsb2NhdG9yU2Vz
c2lvbiA6IHB1YmxpYyBQb3J0QWxsb2NhdG9yU2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciB7CitjbGFzcyBSVENfRVhQ
T1JUIEJhc2ljUG9ydEFsbG9jYXRvclNlc3Npb24gOiBwdWJsaWMgUG9ydEFsbG9jYXRvclNlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
cnRjOjpNZXNzYWdlSGFuZGxlciB7CiAgcHVibGljOgogICBCYXNpY1BvcnRBbGxvY2F0b3JTZXNz
aW9uKEJhc2ljUG9ydEFsbG9jYXRvciogYWxsb2NhdG9yLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCkBAIC0yMzUsNiArMjM2LDEw
IEBAIGNsYXNzIEJhc2ljUG9ydEFsbG9jYXRvclNlc3Npb24gOiBwdWJsaWMgUG9ydEFsbG9jYXRv
clNlc3Npb24sCiAKICAgYm9vbCBDaGVja0NhbmRpZGF0ZUZpbHRlcihjb25zdCBDYW5kaWRhdGUm
IGMpIGNvbnN0OwogICBib29sIENhbmRpZGF0ZVBhaXJhYmxlKGNvbnN0IENhbmRpZGF0ZSYgYywg
Y29uc3QgUG9ydCogcG9ydCkgY29uc3Q7CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGlz
IGFuIG1ETlMgcmVzcG9uZGVyIGF0dGFjaGVkIHRvIHRoZSBuZXR3b3JrIG1hbmFnZXIKKyAgYm9v
bCBNZG5zT2JmdXNjYXRpb25FbmFibGVkKCkgY29uc3Q7CisKICAgLy8gQ2xlYXJzIDEpIHRoZSBh
ZGRyZXNzIGlmIHRoZSBjYW5kaWRhdGUgaXMgc3VwcG9zZWRseSBhIGhvc3RuYW1lIGNhbmRpZGF0
ZTsKICAgLy8gMikgdGhlIHJlbGF0ZWQgYWRkcmVzcyBhY2NvcmRpbmcgdG8gdGhlIGZsYWdzIGFu
ZCBjYW5kaWRhdGUgZmlsdGVyIGluIG9yZGVyCiAgIC8vIHRvIGF2b2lkIGxlYWtpbmcgYW55IGlu
Zm9ybWF0aW9uLgpAQCAtMjc0LDcgKzI3OSw3IEBAIGNsYXNzIEJhc2ljUG9ydEFsbG9jYXRvclNl
c3Npb24gOiBwdWJsaWMgUG9ydEFsbG9jYXRvclNlc3Npb24sCiAKIC8vIFJlY29yZHMgY29uZmln
dXJhdGlvbiBpbmZvcm1hdGlvbiB1c2VmdWwgaW4gY3JlYXRpbmcgcG9ydHMuCiAvLyBUT0RPKGRl
YWRiZWVmKTogUmVuYW1lICJyZWxheSIgdG8gInR1cm5fc2VydmVyIiBpbiB0aGlzIHN0cnVjdC4K
LXN0cnVjdCBQb3J0Q29uZmlndXJhdGlvbiA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VEYXRhIHsKK3N0
cnVjdCBSVENfRVhQT1JUIFBvcnRDb25maWd1cmF0aW9uIDogcHVibGljIHJ0Yzo6TWVzc2FnZURh
dGEgewogICAvLyBUT0RPKGppYXlsKTogcmVtb3ZlIHxzdHVuX2FkZHJlc3N8IHdoZW4gQ2hyb21l
IGlzIHVwZGF0ZWQuCiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBzdHVuX2FkZHJlc3M7CiAgIFNlcnZl
ckFkZHJlc3NlcyBzdHVuX3NlcnZlcnM7CkBAIC0zODMsNyArMzg4LDcgQEAgY2xhc3MgQWxsb2Nh
dGlvblNlcXVlbmNlIDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9h
ZGRyLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90
aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMp
OwogCiAgIHZvaWQgT25Qb3J0RGVzdHJveWVkKFBvcnRJbnRlcmZhY2UqIHBvcnQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xp
ZW50L2Jhc2ljcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yX3VuaXR0
ZXN0LmNjCmluZGV4IGE0NmU1M2JhOWRhNjYyMGU3YjQ2NWQyMWFkMmE1OTQ3MWU5ODgyMWMuLjg5
NDNlYmM3M2RiYTJkYjY4YTJmYmNkYmU0MDczNTc4NmY0ZWFmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0
YWxsb2NhdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yX3VuaXR0ZXN0LmNjCkBA
IC0zOCw3ICszOCw2IEBACiAKIHVzaW5nIHJ0Yzo6SVBBZGRyZXNzOwogdXNpbmcgcnRjOjpTb2Nr
ZXRBZGRyZXNzOwotdXNpbmcgcnRjOjpUaHJlYWQ7CiAKICNkZWZpbmUgTUFZQkVfU0tJUF9JUFY0
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICBpZiAoIXJ0Yzo6SGFzSVB2NEVuYWJsZWQoKSkg
eyAgICAgICAgICAgICAgICBcCkBAIC0xNDcsMTUgKzE0NiwxNSBAQCBjbGFzcyBCYXNpY1BvcnRB
bGxvY2F0b3JUZXN0QmFzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgICAgICAvLyBtdXN0
IGJlIGNhbGxlZC4KICAgICAgICAgbmF0X2ZhY3RvcnlfKHZzc18uZ2V0KCksIGtOYXRVZHBBZGRy
LCBrTmF0VGNwQWRkciksCiAgICAgICAgIG5hdF9zb2NrZXRfZmFjdG9yeV8obmV3IHJ0Yzo6QmFz
aWNQYWNrZXRTb2NrZXRGYWN0b3J5KCZuYXRfZmFjdG9yeV8pKSwKLSAgICAgICAgc3R1bl9zZXJ2
ZXJfKFRlc3RTdHVuU2VydmVyOjpDcmVhdGUoVGhyZWFkOjpDdXJyZW50KCksIGtTdHVuQWRkcikp
LAotICAgICAgICByZWxheV9zZXJ2ZXJfKFRocmVhZDo6Q3VycmVudCgpLAorICAgICAgICBzdHVu
X3NlcnZlcl8oVGVzdFN0dW5TZXJ2ZXI6OkNyZWF0ZShydGM6OlRocmVhZDo6Q3VycmVudCgpLCBr
U3R1bkFkZHIpKSwKKyAgICAgICAgcmVsYXlfc2VydmVyXyhydGM6OlRocmVhZDo6Q3VycmVudCgp
LAogICAgICAgICAgICAgICAgICAgICAgIGtSZWxheVVkcEludEFkZHIsCiAgICAgICAgICAgICAg
ICAgICAgICAga1JlbGF5VWRwRXh0QWRkciwKICAgICAgICAgICAgICAgICAgICAgICBrUmVsYXlU
Y3BJbnRBZGRyLAogICAgICAgICAgICAgICAgICAgICAgIGtSZWxheVRjcEV4dEFkZHIsCiAgICAg
ICAgICAgICAgICAgICAgICAga1JlbGF5U3NsVGNwSW50QWRkciwKICAgICAgICAgICAgICAgICAg
ICAgICBrUmVsYXlTc2xUY3BFeHRBZGRyKSwKLSAgICAgICAgdHVybl9zZXJ2ZXJfKFRocmVhZDo6
Q3VycmVudCgpLCBrVHVyblVkcEludEFkZHIsIGtUdXJuVWRwRXh0QWRkciksCisgICAgICAgIHR1
cm5fc2VydmVyXyhydGM6OlRocmVhZDo6Q3VycmVudCgpLCBrVHVyblVkcEludEFkZHIsIGtUdXJu
VWRwRXh0QWRkciksCiAgICAgICAgIGNhbmRpZGF0ZV9hbGxvY2F0aW9uX2RvbmVfKGZhbHNlKSB7
CiAgICAgU2VydmVyQWRkcmVzc2VzIHN0dW5fc2VydmVyczsKICAgICBzdHVuX3NlcnZlcnMuaW5z
ZXJ0KGtTdHVuQWRkcik7CkBAIC0yMjQ3LDggKzIyNDYsOCBAQCBURVNUX0YoQmFzaWNQb3J0QWxs
b2NhdG9yVGVzdCwgSWNlUmVnYXRoZXJpbmdNZXRyaWNzTG9nZ2VkV2hlbk5ldHdvcmtDaGFuZ2Vz
KSB7CiB9CiAKIC8vIFRlc3QgdGhhdCB3aGVuIGFuIG1ETlMgcmVzcG9uZGVyIGlzIHByZXNlbnQs
IHRoZSBsb2NhbCBhZGRyZXNzIG9mIGEgaG9zdAotLy8gY2FuZGlkYXRlIGlzIG1hc2tlZCBieSBh
biBtRE5TIGhvc3RuYW1lIGFuZCB0aGUgcmVsYXRlZCBhZGRyZXNzIG9mIGFueSBvdGhlcgotLy8g
dHlwZSBvZiBjYW5kaWRhdGVzIGlzIHNldCB0byAwLjAuMC4wIG9yIDo6MC4KKy8vIGNhbmRpZGF0
ZSBpcyBjb25jZWFsZWQgYnkgYW4gbUROUyBob3N0bmFtZSBhbmQgdGhlIHJlbGF0ZWQgYWRkcmVz
cyBvZiBhIHNyZmx4CisvLyBjYW5kaWRhdGUgaXMgc2V0IHRvIDAuMC4wLjAgb3IgOjowLgogVEVT
VF9GKEJhc2ljUG9ydEFsbG9jYXRvclRlc3QsIEhvc3RDYW5kaWRhdGVBZGRyZXNzSXNSZXBsYWNl
ZEJ5SG9zdG5hbWUpIHsKICAgLy8gRGVmYXVsdCBjb25maWcgdXNlcyBHVFVSTiBhbmQgbm8gTkFU
LCBzbyByZXBsYWNlIHRoYXQgd2l0aCB0aGUKICAgLy8gZGVzaXJlZCBzZXR1cCAoTkFULCBTVFVO
IHNlcnZlciwgVFVSTiBzZXJ2ZXIsIFVEUC9UQ1ApLgpAQCAtMjI1OCw3ICsyMjU3LDcgQEAgVEVT
VF9GKEJhc2ljUG9ydEFsbG9jYXRvclRlc3QsIEhvc3RDYW5kaWRhdGVBZGRyZXNzSXNSZXBsYWNl
ZEJ5SG9zdG5hbWUpIHsKICAgQWRkVHVyblNlcnZlcnMoa1R1cm5VZHBJbnRJUHY2QWRkciwga1R1
cm5UY3BJbnRJUHY2QWRkcik7CiAKICAgQVNTRVJUX0VRKCZuZXR3b3JrX21hbmFnZXJfLCBhbGxv
Y2F0b3IoKS5uZXR3b3JrX21hbmFnZXIoKSk7Ci0gIG5ldHdvcmtfbWFuYWdlcl8uQ3JlYXRlTURu
c1Jlc3BvbmRlcigpOworICBuZXR3b3JrX21hbmFnZXJfLkNyZWF0ZU1kbnNSZXNwb25kZXIoKTsK
ICAgQWRkSW50ZXJmYWNlKGtDbGllbnRBZGRyKTsKICAgQVNTRVJUX1RSVUUoQ3JlYXRlU2Vzc2lv
bihJQ0VfQ0FORElEQVRFX0NPTVBPTkVOVF9SVFApKTsKICAgc2Vzc2lvbl8tPlN0YXJ0R2V0dGlu
Z1BvcnRzKCk7CkBAIC0yMjcwLDIzICsyMjY5LDI5IEBAIFRFU1RfRihCYXNpY1BvcnRBbGxvY2F0
b3JUZXN0LCBIb3N0Q2FuZGlkYXRlQWRkcmVzc0lzUmVwbGFjZWRCeUhvc3RuYW1lKSB7CiAgIGlu
dCBudW1fc3JmbHhfY2FuZGlkYXRlcyA9IDA7CiAgIGludCBudW1fcmVsYXlfY2FuZGlkYXRlcyA9
IDA7CiAgIGZvciAoY29uc3QgYXV0byYgY2FuZGlkYXRlIDogY2FuZGlkYXRlc18pIHsKKyAgICBj
b25zdCBhdXRvJiByYWRkciA9IGNhbmRpZGF0ZS5yZWxhdGVkX2FkZHJlc3MoKTsKKwogICAgIGlm
IChjYW5kaWRhdGUudHlwZSgpID09IExPQ0FMX1BPUlRfVFlQRSkgewotICAgICAgRVhQRUNUX1RS
VUUoY2FuZGlkYXRlLmFkZHJlc3MoKS5Jc1VucmVzb2x2ZWRJUCgpKTsKKyAgICAgIEVYUEVDVF9G
QUxTRShjYW5kaWRhdGUuYWRkcmVzcygpLmhvc3RuYW1lKCkuZW1wdHkoKSk7CisgICAgICBFWFBF
Q1RfVFJVRShyYWRkci5Jc05pbCgpKTsKICAgICAgIGlmIChjYW5kaWRhdGUucHJvdG9jb2woKSA9
PSBVRFBfUFJPVE9DT0xfTkFNRSkgewogICAgICAgICArK251bV9ob3N0X3VkcF9jYW5kaWRhdGVz
OwogICAgICAgfSBlbHNlIHsKICAgICAgICAgKytudW1faG9zdF90Y3BfY2FuZGlkYXRlczsKICAg
ICAgIH0KKyAgICB9IGVsc2UgaWYgKGNhbmRpZGF0ZS50eXBlKCkgPT0gU1RVTl9QT1JUX1RZUEUp
IHsKKyAgICAgIC8vIEZvciBhIHNyZmx4IGNhbmRpZGF0ZSwgdGhlIHJlbGF0ZWQgYWRkcmVzcyBz
aG91bGQgYmUgc2V0IHRvIDAuMC4wLjAgb3IKKyAgICAgIC8vIDo6MAorICAgICAgRVhQRUNUX1RS
VUUoSVBJc0FueShyYWRkci5pcGFkZHIoKSkpOworICAgICAgRVhQRUNUX0VRKHJhZGRyLnBvcnQo
KSwgMCk7CisgICAgICArK251bV9zcmZseF9jYW5kaWRhdGVzOworICAgIH0gZWxzZSBpZiAoY2Fu
ZGlkYXRlLnR5cGUoKSA9PSBSRUxBWV9QT1JUX1RZUEUpIHsKKyAgICAgIEVYUEVDVF9FUShrTmF0
VWRwQWRkci5pcGFkZHIoKSwgcmFkZHIuaXBhZGRyKCkpOworICAgICAgRVhQRUNUX0VRKGtOYXRV
ZHBBZGRyLmZhbWlseSgpLCByYWRkci5mYW1pbHkoKSk7CisgICAgICArK251bV9yZWxheV9jYW5k
aWRhdGVzOwogICAgIH0gZWxzZSB7Ci0gICAgICBFWFBFQ1RfTkUoUFJGTFhfUE9SVF9UWVBFLCBj
YW5kaWRhdGUudHlwZSgpKTsKLSAgICAgIC8vIFRoZSByZWxhdGVkIGFkZHJlc3Mgc2hvdWxkIGJl
IHNldCB0byAwLjAuMC4wIG9yIDo6MCBmb3Igc3JmbHggYW5kCi0gICAgICAvLyByZWxheSBjYW5k
aWRhdGVzLgotICAgICAgRVhQRUNUX0VRKHJ0Yzo6U29ja2V0QWRkcmVzcygpLCBjYW5kaWRhdGUu
cmVsYXRlZF9hZGRyZXNzKCkpOwotICAgICAgaWYgKGNhbmRpZGF0ZS50eXBlKCkgPT0gU1RVTl9Q
T1JUX1RZUEUpIHsKLSAgICAgICAgKytudW1fc3JmbHhfY2FuZGlkYXRlczsKLSAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICsrbnVtX3JlbGF5X2NhbmRpZGF0ZXM7Ci0gICAgICB9CisgICAgICAvLyBw
cmZseCBjYW5kaWRhdGVzIGFyZSBub3QgZXhwZWN0ZWQKKyAgICAgIEZBSUwoKTsKICAgICB9CiAg
IH0KICAgRVhQRUNUX0VRKDEsIG51bV9ob3N0X3VkcF9jYW5kaWRhdGVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvdHVy
bnBvcnRmYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2NsaWVudC90dXJucG9ydGZhY3RvcnkuY2MKaW5kZXggNjQwNDEzNGM0YTE5ZDhjNWUx
YTBlZTczNGE2Yjc2NmUwZmI0YTc3OC4uYzBjMTcyMDc2YmMxZWI3ZDIyZjc1OTMxYTI1YTkwNTA0
NTcyYzcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2NsaWVudC90dXJucG9ydGZhY3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC90dXJucG9ydGZhY3RvcnkuY2MK
QEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJwMnAvY2xpZW50L3R1cm5wb3J0ZmFjdG9yeS5o
IgogCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJw
MnAvYmFzZS90dXJucG9ydC5oIgogCkBAIC0yMSwyNiArMjIsMjYgQEAgVHVyblBvcnRGYWN0b3J5
Ojp+VHVyblBvcnRGYWN0b3J5KCkge30KIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBUdXJuUG9ydEZh
Y3Rvcnk6OkNyZWF0ZSgKICAgICBjb25zdCBDcmVhdGVSZWxheVBvcnRBcmdzJiBhcmdzLAogICAg
IHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHVkcF9zb2NrZXQpIHsKLSAgVHVyblBvcnQqIHBvcnQg
PSBUdXJuUG9ydDo6Q3JlYXRlKAorICBhdXRvIHBvcnQgPSBUdXJuUG9ydDo6Q3JlYXRlVW5pcXVl
KAogICAgICAgYXJncy5uZXR3b3JrX3RocmVhZCwgYXJncy5zb2NrZXRfZmFjdG9yeSwgYXJncy5u
ZXR3b3JrLCB1ZHBfc29ja2V0LAogICAgICAgYXJncy51c2VybmFtZSwgYXJncy5wYXNzd29yZCwg
KmFyZ3Muc2VydmVyX2FkZHJlc3MsCiAgICAgICBhcmdzLmNvbmZpZy0+Y3JlZGVudGlhbHMsIGFy
Z3MuY29uZmlnLT5wcmlvcml0eSwgYXJncy5vcmlnaW4sCiAgICAgICBhcmdzLnR1cm5fY3VzdG9t
aXplcik7CiAgIHBvcnQtPlNldFRsc0NlcnRQb2xpY3koYXJncy5jb25maWctPnRsc19jZXJ0X3Bv
bGljeSk7Ci0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4ocG9ydCk7CisgIHJldHVybiBz
dGQ6Om1vdmUocG9ydCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBUdXJuUG9ydEZhY3Rv
cnk6OkNyZWF0ZShjb25zdCBDcmVhdGVSZWxheVBvcnRBcmdzJiBhcmdzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW5fcG9ydCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X3BvcnQpIHsKLSAg
VHVyblBvcnQqIHBvcnQgPSBUdXJuUG9ydDo6Q3JlYXRlKAorICBhdXRvIHBvcnQgPSBUdXJuUG9y
dDo6Q3JlYXRlVW5pcXVlKAogICAgICAgYXJncy5uZXR3b3JrX3RocmVhZCwgYXJncy5zb2NrZXRf
ZmFjdG9yeSwgYXJncy5uZXR3b3JrLCBtaW5fcG9ydCwKICAgICAgIG1heF9wb3J0LCBhcmdzLnVz
ZXJuYW1lLCBhcmdzLnBhc3N3b3JkLCAqYXJncy5zZXJ2ZXJfYWRkcmVzcywKICAgICAgIGFyZ3Mu
Y29uZmlnLT5jcmVkZW50aWFscywgYXJncy5jb25maWctPnByaW9yaXR5LCBhcmdzLm9yaWdpbiwK
ICAgICAgIGFyZ3MuY29uZmlnLT50bHNfYWxwbl9wcm90b2NvbHMsIGFyZ3MuY29uZmlnLT50bHNf
ZWxsaXB0aWNfY3VydmVzLAogICAgICAgYXJncy50dXJuX2N1c3RvbWl6ZXIsIGFyZ3MuY29uZmln
LT50bHNfY2VydF92ZXJpZmllcik7CiAgIHBvcnQtPlNldFRsc0NlcnRQb2xpY3koYXJncy5jb25m
aWctPnRsc19jZXJ0X3BvbGljeSk7Ci0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4ocG9y
dCk7CisgIHJldHVybiBzdGQ6Om1vdmUocG9ydCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBjcmlj
a2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvc3R1bnByb2Jlci9zdHVucHJvYmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL3N0dW5wcm9iZXIvc3R1bnByb2Jlci5jYwppbmRleCA1MTUw
NmI2NzBkNzUxOGFmMzcxYWQwYWNjMDAyNmFlMmEzNjU3NzE2Li45Nzc4NDE2YTFiMDA5MTIwNWQy
N2JkZGM2N2RmYTU4NzVjMmE1YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvc3R1bnByb2Jlci9zdHVucHJvYmVyLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9zdHVucHJvYmVyL3N0
dW5wcm9iZXIuY2MKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgU3R1blByb2Jlcjo6UmVxdWVzdGVy
IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2Nr
ZXRBZGRyZXNzJiBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpQYWNrZXRUaW1lJiB0aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsKIAogICBjb25zdCBzdGQ6OnZlY3RvcjxSZXF1ZXN0
Kj4mIHJlcXVlc3RzKCkgeyByZXR1cm4gcmVxdWVzdHNfOyB9CiAKQEAgLTIwNCw3ICsyMDQsNyBA
QCB2b2lkIFN0dW5Qcm9iZXI6OlJlcXVlc3Rlcjo6T25TdHVuUmVzcG9uc2VSZWNlaXZlZCgKICAg
ICBjb25zdCBjaGFyKiBidWYsCiAgICAgc2l6ZV90IHNpemUsCiAgICAgY29uc3QgcnRjOjpTb2Nr
ZXRBZGRyZXNzJiBhZGRyLAotICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGltZSkgeworICAg
IGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovKSB7CiAgIFJUQ19EQ0hFQ0sodGhy
ZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAgIFJUQ19EQ0hFQ0soc29ja2V0
Xyk7CiAgIFJlcXVlc3QqIHJlcXVlc3QgPSBHZXRSZXF1ZXN0QnlBZGRyZXNzKGFkZHIuaXBhZGRy
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL3N0dW5wcm9iZXIvc3R1bnByb2Jlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL3N0dW5wcm9iZXIvc3R1bnByb2Jlci5oCmluZGV4IDlmMWQ0
MmYzMmNlMzdiMWJiMmU1NjM4NzcyYTY0YThiNjFhMTNhNzEuLmE0ZmVlY2Q4MTMyYTlmMzViNDlj
Yjk3OGMzM2I2NDU1MGVlNjZjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9zdHVucHJvYmVyL3N0dW5wcm9iZXIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvc3R1bnByb2Jlci9zdHVu
cHJvYmVyLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9pcGFkZHJlc3Mu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29j
a2V0YWRkcmVzcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2No
ZWNrZXIuaCIKIApAQCAtNDksNyArNTAsNyBAQCBlbnVtIE5hdFR5cGUgewogICBOQVRUWVBFX05P
Tl9TWU1NRVRSSUMgIC8vIEJlaGluZCBhIG5vbi1zeW1tZXRyaWMgTkFULgogfTsKIAotY2xhc3Mg
U3R1blByb2JlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CitjbGFzcyBSVENfRVhQ
T1JUIFN0dW5Qcm9iZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogIHB1YmxpYzoK
ICAgZW51bSBTdGF0dXMgeyAgICAgICAvLyBVc2VkIGluIFVNQV9ISVNUT0dSQU1fRU5VTUVSQVRJ
T04uCiAgICAgU1VDQ0VTUywgICAgICAgICAgLy8gU3VjY2Vzc2Z1bGx5IHJlY2VpdmVkIGJ5dGVz
IGZyb20gdGhlIHNlcnZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvQlVJTEQuZ24KaW5kZXggNGU2ZTU1ODEwYWQ5YzIwYjg0OWRlNzU2
Yzk3Mzc0N2E3ZTYzOGEzNi4uNjVhYjMzYTUwYjQ5N2QyZGMyMDM2YzM2NTA2MjhiOGQ3NDhiZjhh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvQlVJTEQuZ24KQEAgLTMxLDYgKzMxLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNf
cGNfYmFzZSIpIHsKICAgc291cmNlcyA9IFsKICAgICAiY2hhbm5lbC5jYyIsCiAgICAgImNoYW5u
ZWwuaCIsCisgICAgImNoYW5uZWxpbnRlcmZhY2UuaCIsCiAgICAgImNoYW5uZWxtYW5hZ2VyLmNj
IiwKICAgICAiY2hhbm5lbG1hbmFnZXIuaCIsCiAgICAgImR0bHNzcnRwdHJhbnNwb3J0LmNjIiwK
QEAgLTg3LDYgKzg4LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfcGNfYmFzZSIpIHsKICAg
ICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdCIsCiAgICAgIi4uL3N5c3RlbV93cmFw
cGVyczptZXRyaWNzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogCkBAIC0y
MDMsNiArMjA1LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJwZWVyY29ubmVjdGlvbiIpIHsKICAg
ICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi9ydGNfYmFzZTpzdHJp
bmd1dGlscyIsCiAgICAgIi4uL3J0Y19iYXNlL2V4cGVyaW1lbnRzOmNvbmdlc3Rpb25fY29udHJv
bGxlcl9leHBlcmltZW50IiwKKyAgICAiLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAog
ICAgICIuLi9ydGNfYmFzZS90aGlyZF9wYXJ0eS9iYXNlNjQiLAogICAgICIuLi9ydGNfYmFzZS90
aGlyZF9wYXJ0eS9zaWdzbG90IiwKICAgICAiLi4vc3RhdHMiLApAQCAtMjEwLDYyICsyMTMsMTEg
QEAgcnRjX3N0YXRpY19saWJyYXJ5KCJwZWVyY29ubmVjdGlvbiIpIHsKICAgICAiLi4vc3lzdGVt
X3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3Mi
LAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CiAKLXJ0Y19zdGF0aWNfbGli
cmFyeSgiYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IikgewotICBzb3Vy
Y2VzID0gWwotICAgICJidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2Mi
LAotICAgICJidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIsCi0gIF0K
LQotICBkZXBzID0gWwotICAgICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeSIsCi0gICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKLSAgICAiLi4vbW9kdWxl
cy92aWRlb19jb2Rpbmc6dmlkZW9fY29kaW5nX3V0aWxpdHkiLAotICAgICIuLi9tb2R1bGVzL3Zp
ZGVvX2NvZGluZzp3ZWJydGNfdnA5X2hlbHBlcnMiLAotICAgICIuLi9ydGNfYmFzZTpwdHJfdXRp
bCIsCi0gICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpmYWxsdGhyb3VnaCIsCi0gICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCi0gIF0KLX0KLQotIyBUaGlzIHRhcmdldCBp
bXBsZW1lbnRzIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSBtZXRob2RzIHRoYXQgd2lsbCBj
cmVhdGUgYQotIyBQZWVyQ29ubmVjdGlvbiB3aWxsIGZ1bGwgZnVuY3Rpb25hbGl0eSAoYXVkaW8s
IHZpZGVvIGFuZCBkYXRhKS4gQXBwbGljYXRpb25zCi0jIHRoYXQgd2lzaCB0byByZWR1Y2UgdGhl
aXIgYmluYXJ5IHNpemUgYnkgb21taXR0aW5nIGZ1bmN0aW9uYWxpdHkgdGhleSBkb24ndAotIyBu
ZWVkIHNob3VsZCB1c2UgQ3JlYXRlTW9kdWxhckNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSBp
bnN0ZWFkLCB1c2luZyB0aGUKLSMgInBlZXJjb25uZWN0aW9uIiBidWlsZCB0YXJnZXQgYW5kIG90
aGVyIHRhcmdldHMgc3BlY2lmaWMgdG8gdGhlaXIKLSMgcmVxdXJlbWVudHMuIFNlZSBjb21tZW50
IGluIHBlZXJjb25uZWN0aW9uZmFjdG9yeWludGVyZmFjZS5oLgotcnRjX3N0YXRpY19saWJyYXJ5
KCJjcmVhdGVfcGNfZmFjdG9yeSIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAiY3JlYXRlcGVlcmNv
bm5lY3Rpb25mYWN0b3J5LmNjIiwKLSAgXQotCi0gIGRlcHMgPSBbCi0gICAgIi4uL2FwaTpjYWxs
ZmFjdG9yeV9hcGkiLAotICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIs
Ci0gICAgIi4uL2FwaS9hdWRpbzphdWRpb19taXhlcl9hcGkiLAotICAgICIuLi9hcGkvYXVkaW9f
Y29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVv
X2NvZGVjc19hcGkiLAotICAgICIuLi9jYWxsIiwKLSAgICAiLi4vY2FsbDpjYWxsX2ludGVyZmFj
ZXMiLAotICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKLSAgICAiLi4vbG9nZ2lu
ZzpydGNfZXZlbnRfbG9nX2ltcGxfYmFzZSIsCi0gICAgIi4uL21lZGlhOnJ0Y19hdWRpb192aWRl
byIsCi0gICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKLSAgICAiLi4vbW9kdWxlcy9hdWRp
b19kZXZpY2U6YXVkaW9fZGV2aWNlIiwKLSAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
OmF1ZGlvX3Byb2Nlc3NpbmciLAotICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCi0gICAgIi4u
L3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgXQotCi0gIGlmICghYnVpbGRfd2l0aF9j
aHJvbWl1bSAmJiBpc19jbGFuZykgewotICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUg
Q2hyb21pdW0gQ2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KLSAgICBzdXBwcmVz
c2VkX2NvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRfY29uc3RydWN0
cyIgXQotICB9Ci19Ci0KIHJ0Y19zb3VyY2Vfc2V0KCJsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24i
KSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIGFsbG93X3BvaXNvbiA9IFsKQEAgLTI3Myw4
ICsyMjUsOCBAQCBydGNfc291cmNlX3NldCgibGliamluZ2xlX3BlZXJjb25uZWN0aW9uIikgewog
ICAgICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiLCAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy83OTI1
KTogUmVtb3ZlLgogICBdCiAgIGRlcHMgPSBbCi0gICAgIjpjcmVhdGVfcGNfZmFjdG9yeSIsCiAg
ICAgIjpwZWVyY29ubmVjdGlvbiIsCisgICAgIi4uL2FwaTpjcmVhdGVfcGVlcmNvbm5lY3Rpb25f
ZmFjdG9yeSIsCiAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAg
XQogfQpAQCAtMjkzLDYgKzI0NSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAg
InJ0Y3BtdXhmaWx0ZXJfdW5pdHRlc3QuY2MiLAogICAgICAgInJ0cHRyYW5zcG9ydF91bml0dGVz
dC5jYyIsCiAgICAgICAicnRwdHJhbnNwb3J0dGVzdHV0aWwuaCIsCisgICAgICAic2Vzc2lvbmRl
c2NyaXB0aW9uX3VuaXR0ZXN0LmNjIiwKICAgICAgICJzcnRwZmlsdGVyX3VuaXR0ZXN0LmNjIiwK
ICAgICAgICJzcnRwc2Vzc2lvbl91bml0dGVzdC5jYyIsCiAgICAgICAic3J0cHRlc3R1dGlsLmgi
LApAQCAtMzE2LDYgKzI2OSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpy
dGNfcGMiLAogICAgICAgIjpydGNfcGNfYmFzZSIsCiAgICAgICAiLi4vYXBpOmFycmF5X3ZpZXci
LAorICAgICAgIi4uL2FwaTpmYWtlX21lZGlhX3RyYW5zcG9ydCIsCiAgICAgICAiLi4vYXBpOmxp
YmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAgICAgIi4uL2NhbGw6cnRwX2ludGVyZmFj
ZXMiLAogICAgICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLApAQCAtMzI1LDYgKzI3
OSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL3AycDpwMnBfdGVzdF91
dGlscyIsCiAgICAgICAiLi4vcDJwOnJ0Y19wMnAiLAogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNr
cyIsCisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAiLi4vcnRjX2Jh
c2U6cnRjX2Jhc2UiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAg
ICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c19tYWluIiwKQEAgLTM1Myw2ICszMDgsNyBA
QCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBdCiAgICAgZGVwcyA9IFsKICAgICAgICI6
cGNfdGVzdF91dGlscyIsCisgICAgICAiLi4vYXBpOmNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0
b3J5IiwKICAgICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAg
ICAiLi4vYXBpOnJ0Y19zdGF0c19hcGkiLAogICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVp
bHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkiLApAQCAtMzYzLDYgKzMxOSw3IEBAIGlmIChydGNf
aW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL3AycDpwMnBfdGVzdF91dGlscyIsCiAgICAgICAi
Li4vcDJwOnJ0Y19wMnAiLAogICAgICAgIi4uL3BjOnBlZXJjb25uZWN0aW9uIiwKKyAgICAgICIu
Li9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIs
CiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uL3J0Y19i
YXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKQEAgLTM5MSw2ICszNDgsNyBAQCBpZiAocnRjX2lu
Y2x1ZGVfdGVzdHMpIHsKICAgICAgICJ0ZXN0L2Zha2V2aWRlb3RyYWNrcmVuZGVyZXIuaCIsCiAg
ICAgICAidGVzdC9mYWtldmlkZW90cmFja3NvdXJjZS5oIiwKICAgICAgICJ0ZXN0L2ZyYW1lZ2Vu
ZXJhdG9yY2FwdHVyZXJ2aWRlb3RyYWNrc291cmNlLmgiLAorICAgICAgInRlc3QvbW9ja19jaGFu
bmVsaW50ZXJmYWNlLmgiLAogICAgICAgInRlc3QvbW9ja19kYXRhY2hhbm5lbC5oIiwKICAgICAg
ICJ0ZXN0L21vY2tfcnRwcmVjZWl2ZXJpbnRlcm5hbC5oIiwKICAgICAgICJ0ZXN0L21vY2tfcnRw
c2VuZGVyaW50ZXJuYWwuaCIsCkBAIC00MDYsNiArMzY0LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rl
c3RzKSB7CiAgICAgICAiOnBlZXJjb25uZWN0aW9uIiwKICAgICAgICI6cnRjX3BjX2Jhc2UiLAog
ICAgICAgIi4uOndlYnJ0Y19jb21tb24iLAorICAgICAgIi4uL2FwaTpjcmVhdGVfcGVlcmNvbm5l
Y3Rpb25fZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9h
cGkiLAogICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fdGVzdF9hcGkiLAog
ICAgICAgIi4uL2FwaTpydGNfc3RhdHNfYXBpIiwKQEAgLTQxOSwxMiArMzc4LDEzIEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKICAg
ICAgICIuLi9tZWRpYTpydGNfbWVkaWFfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uL21vZHVsZXMv
YXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZSIsCisgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nOmFwaSIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3By
b2Nlc3NpbmciLAogICAgICAgIi4uL3AycDpwMnBfdGVzdF91dGlscyIsCiAgICAgICAiLi4vcnRj
X2Jhc2U6Y2hlY2tzIiwKKyAgICAgICIuLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgICAg
ICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBw
cm92ZWQiLAotICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAg
ICIuLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCiAgICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRf
cGFydHkvc2lnc2xvdCIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLApAQCAtNDcwLDYg
KzQzMCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgInJ0cG1lZGlhdXRpbHNf
dW5pdHRlc3QuY2MiLAogICAgICAgInJ0cHBhcmFtZXRlcnNjb252ZXJzaW9uX3VuaXR0ZXN0LmNj
IiwKICAgICAgICJydHBzZW5kZXJyZWNlaXZlcl91bml0dGVzdC5jYyIsCisgICAgICAicnRwdHJh
bnNjZWl2ZXJfdW5pdHRlc3QuY2MiLAogICAgICAgInNjdHB1dGlsc191bml0dGVzdC5jYyIsCiAg
ICAgICAic3RhdHNjb2xsZWN0b3JfdW5pdHRlc3QuY2MiLAogICAgICAgInRlc3QvZmFrZWF1ZGlv
Y2FwdHVyZW1vZHVsZV91bml0dGVzdC5jYyIsCkBAIC00OTIsMTcgKzQ1MywyMyBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICBkZXBzID0gWwogICAgICAgIjpwZWVyY29ubmVjdGlvbiIs
CiAgICAgICAiOnJ0Y19wY19iYXNlIiwKLSAgICAgICIuLi9hcGk6ZmFrZV9mcmFtZV9jcnlwdG8i
LAorICAgICAgIi4uL2FwaTpjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeSIsCisgICAgICAi
Li4vYXBpOmZha2VfZnJhbWVfZGVjcnlwdG9yIiwKKyAgICAgICIuLi9hcGk6ZmFrZV9mcmFtZV9l
bmNyeXB0b3IiLAogICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwK
KyAgICAgICIuLi9hcGk6bG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0IiwKICAgICAgICIuLi9hcGk6
bW9ja19ydHAiLAogICAgICAgIi4uL2FwaS91bml0czp0aW1lX2RlbHRhIiwKICAgICAgICIuLi9s
b2dnaW5nOmZha2VfcnRjX2V2ZW50X2xvZyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwK
KyAgICAgICIuLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKKyAgICAgICIuLi9ydGNfYmFzZTpy
dGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAog
ICAgICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2NCIsCiAgICAgICAiLi4vc3lzdGVt
X3dyYXBwZXJzOm1ldHJpY3MiLAogICAgICAgIi4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgIF0KICAgICBpZiAoaXNfYW5kcm9pZCkg
ewogICAgICAgZGVwcyArPSBbICI6YW5kcm9pZF9ibGFja19tYWdpYyIgXQpAQCAtNTEzLDYgKzQ4
MCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpwY190ZXN0X3V0aWxzIiwK
ICAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi9hcGk6Y2FsbGZhY3RvcnlfYXBp
IiwKKyAgICAgICIuLi9hcGk6ZmFrZV9tZWRpYV90cmFuc3BvcnQiLAogICAgICAgIi4uL2FwaTps
aWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fdGVzdF9hcGkiLAogICAgICAgIi4uL2FwaTpydGNfc3Rh
dHNfYXBpIiwKICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLApA
QCAtNTMxLDYgKzQ5OSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL21l
ZGlhOnJ0Y19kYXRhIiwgICMgVE9ETyhwaG9nbHVuZCk6IEFGQUlLIG9ubHkgdXNlZCBmb3Igb25l
IHNjdHAgY29uc3RhbnQuCiAgICAgICAiLi4vbWVkaWE6cnRjX21lZGlhX2Jhc2UiLAogICAgICAg
Ii4uL21lZGlhOnJ0Y19tZWRpYV90ZXN0c191dGlscyIsCisgICAgICAiLi4vbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nOmFwaSIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1
ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgIi4uL21vZHVsZXMvdXRpbGl0eTp1dGlsaXR5IiwKICAg
ICAgICIuLi9wMnA6cDJwX3Rlc3RfdXRpbHMiLApAQCAtNTM5LDcgKzUwOCw2IEBAIGlmIChydGNf
aW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAgICIu
Li9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jh
c2VfdGVzdHNfbWFpbiIsCi0gICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMi
LAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKICAgICAgICIuLi9ydGNfYmFz
ZTpzYWZlX2NvbnZlcnNpb25zIiwKICAgICAgICIuLi90ZXN0OmF1ZGlvX2NvZGVjX21vY2tzIiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZkN2Rh
ZWE2ZmE5OGFmN2YwMGE5YmZmZjQxNWY5OTlmOGI3OWUzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MK
KysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQot
I2luY2x1ZGUgInBjL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgot
Ci0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9j
b2RlYy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX3Jh
dGVfYWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9k
ZWZhdWx0X3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vZmFsbHRocm91Z2guaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLW5h
bWVzcGFjZSB7Ci0KLWNsYXNzIEJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5Ci0g
ICAgOiBwdWJsaWMgVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSB7Ci0gcHVibGljOgotICBC
dWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpID0gZGVmYXVsdDsKLSAgfkJ1aWx0
aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OwotCi0g
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+IENyZWF0ZVZpZGVvQml0cmF0
ZUFsbG9jYXRvcigKLSAgICAgIGNvbnN0IFZpZGVvQ29kZWMmIGNvZGVjKSBvdmVycmlkZSB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvcj4gcmF0ZV9hbGxvY2F0b3I7
Ci0gICAgc3dpdGNoIChjb2RlYy5jb2RlY1R5cGUpIHsKLSAgICAgIGNhc2Uga1ZpZGVvQ29kZWNW
UDg6Ci0gICAgICAgIFJUQ19GQUxMVEhST1VHSCgpOwotICAgICAgY2FzZSBrVmlkZW9Db2RlY0gy
NjQ6Ci0gICAgICAgIHJhdGVfYWxsb2NhdG9yLnJlc2V0KG5ldyBTaW11bGNhc3RSYXRlQWxsb2Nh
dG9yKGNvZGVjKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBrVmlkZW9Db2RlY1ZQOToK
LSAgICAgICAgcmF0ZV9hbGxvY2F0b3IucmVzZXQobmV3IFN2Y1JhdGVBbGxvY2F0b3IoY29kZWMp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByYXRlX2FsbG9jYXRv
ci5yZXNldChuZXcgRGVmYXVsdFZpZGVvQml0cmF0ZUFsbG9jYXRvcihjb2RlYykpOwotICAgIH0K
LSAgICByZXR1cm4gcmF0ZV9hbGxvY2F0b3I7Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZQot
Ci1zdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KLUNyZWF0ZUJ1
aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkgewotICByZXR1cm4gYWJzbDo6bWFr
ZV91bmlxdWU8QnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+KCk7Ci19Ci0KLX0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFj
dG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVp
bHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDYwZjJhZmNiYWJhMTI3ODE0ZDYzNWJhZTQyZjAwM2FkMzAyMGZlNDcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVpbHRpbl92aWRlb19iaXRyYXRlX2Fs
bG9jYXRvcl9mYWN0b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBQQ19CVUlMVElOX1ZJREVPX0JJVFJBVEVfQUxMT0NB
VE9SX0ZBQ1RPUllfSF8KLSNkZWZpbmUgUENfQlVJTFRJTl9WSURFT19CSVRSQVRFX0FMTE9DQVRP
Ul9GQUNUT1JZX0hfCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvdmlkZW8v
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsK
LQotc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+Ci1DcmVhdGVC
dWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpOwotCi19ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCi0KLSNlbmRpZiAgLy8gUENfQlVJTFRJTl9WSURFT19CSVRSQVRFX0FMTE9DQVRPUl9G
QUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDIwMWQyYmY5NWNhYjU0NzE2MjA5MmQ5MTk3ZTc5MTA5ODFjZWVmZDYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVyLmNjCisrKyAvZGV2L251bGwK
QEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQot
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgInBjL2J1bmRs
ZWZpbHRlci5oIgotCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9ydHB1dGlscy5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIGNyaWNrZXQgewotCi1CdW5kbGVGaWx0
ZXI6OkJ1bmRsZUZpbHRlcigpIHt9Ci0KLUJ1bmRsZUZpbHRlcjo6fkJ1bmRsZUZpbHRlcigpIHt9
Ci0KLWJvb2wgQnVuZGxlRmlsdGVyOjpEZW11eFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgbGVuKSB7Ci0gIC8vIEZvciBSVFAgcGFja2V0cywgd2UgY2hlY2sgd2hldGhlciB0aGUg
cGF5bG9hZCB0eXBlIGNhbiBiZSBmb3VuZC4KLSAgaWYgKCFJc1J0cFBhY2tldChkYXRhLCBsZW4p
KSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgaW50IHBheWxvYWRfdHlwZSA9IDA7Ci0g
IGlmICghR2V0UnRwUGF5bG9hZFR5cGUoZGF0YSwgbGVuLCAmcGF5bG9hZF90eXBlKSkgewotICAg
IHJldHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4gRmluZFBheWxvYWRUeXBlKHBheWxvYWRfdHlw
ZSk7Ci19Ci0KLXZvaWQgQnVuZGxlRmlsdGVyOjpBZGRQYXlsb2FkVHlwZShpbnQgcGF5bG9hZF90
eXBlKSB7Ci0gIHBheWxvYWRfdHlwZXNfLmluc2VydChwYXlsb2FkX3R5cGUpOwotfQotCi1ib29s
IEJ1bmRsZUZpbHRlcjo6RmluZFBheWxvYWRUeXBlKGludCBwbF90eXBlKSBjb25zdCB7Ci0gIHJl
dHVybiBwYXlsb2FkX3R5cGVzXy5maW5kKHBsX3R5cGUpICE9IHBheWxvYWRfdHlwZXNfLmVuZCgp
OwotfQotCi12b2lkIEJ1bmRsZUZpbHRlcjo6Q2xlYXJBbGxQYXlsb2FkVHlwZXMoKSB7Ci0gIHBh
eWxvYWRfdHlwZXNfLmNsZWFyKCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idW5k
bGVmaWx0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2J1bmRsZWZpbHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTQ3N2Y0NTdm
Mjk0OGJiNDM0MTU3M2VhYmRjZTJkMWZmODk5YzUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL2J1bmRsZWZpbHRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAot
LyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBQQ19CVU5ETEVGSUxURVJfSF8KLSNkZWZpbmUg
UENfQlVORExFRklMVEVSX0hfCi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotI2luY2x1ZGUgPHNl
dD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJtZWRpYS9iYXNlL3N0cmVhbXBhcmFt
cy5oIgotLy8jaW5jbHVkZSAicnRjX2Jhc2UvYmFzaWN0eXBlcy5oIgotCi1uYW1lc3BhY2UgY3Jp
Y2tldCB7Ci0KLS8vIEluIGNhc2Ugb2Ygc2luZ2xlIFJUUCBzZXNzaW9uIGFuZCBzaW5nbGUgdHJh
bnNwb3J0IGNoYW5uZWwsIGFsbCBzZXNzaW9uCi0vLyAob3IgbWVkaWEpIGNoYW5uZWxzIHNoYXJl
IGEgY29tbW9uIHRyYW5zcG9ydCBjaGFubmVsLiBIZW5jZSB0aGV5IGFsbCBnZXQKLS8vIFNpZ25h
bFJlYWRQYWNrZXQgd2hlbiBwYWNrZXQgcmVjZWl2ZWQgb24gdHJhbnNwb3J0IGNoYW5uZWwuIFRo
aXMgcmVxdWlyZXMKLS8vIGNyaWNrZXQ6OkJhc2VDaGFubmVsIHRvIGtub3cgYWxsIHRoZSB2YWxp
ZCBzb3VyY2VzLCBlbHNlIG1lZGlhIGNoYW5uZWwKLS8vIHdpbGwgZGVjb2RlIGludmFsaWQgcGFj
a2V0cy4KLS8vCi0vLyBUaGlzIGNsYXNzIGRldGVybWluZXMgd2hldGhlciBhIHBhY2tldCBpcyBk
ZXN0aW5lZCBmb3IgY3JpY2tldDo6QmFzZUNoYW5uZWwuCi0vLyBUaGlzIGlzIG9ubHkgdG8gYmUg
dXNlZCBmb3IgUlRQIHBhY2tldHMgYXMgUlRDUCBwYWNrZXRzIGFyZSBub3QgZmlsdGVyZWQuCi0v
LyBGb3IgUlRQIHBhY2tldHMsIHRoaXMgaXMgZGVjaWRlZCBiYXNlZCBvbiB0aGUgcGF5bG9hZCB0
eXBlLgotY2xhc3MgQnVuZGxlRmlsdGVyIHsKLSBwdWJsaWM6Ci0gIEJ1bmRsZUZpbHRlcigpOwot
ICB+QnVuZGxlRmlsdGVyKCk7Ci0KLSAgLy8gRGV0ZXJtaW5lcyBpZiBhIFJUUCBwYWNrZXQgYmVs
b25ncyB0byB2YWxpZCBjcmlja2V0OjpCYXNlQ2hhbm5lbC4KLSAgYm9vbCBEZW11eFBhY2tldChj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuKTsKLQotICAvLyBBZGRzIHRoZSBzdXBwb3J0
ZWQgcGF5bG9hZCB0eXBlLgotICB2b2lkIEFkZFBheWxvYWRUeXBlKGludCBwYXlsb2FkX3R5cGUp
OwotCi0gIC8vIFB1YmxpYyBmb3IgdW5pdHRlc3RzLgotICBib29sIEZpbmRQYXlsb2FkVHlwZShp
bnQgcGxfdHlwZSkgY29uc3Q7Ci0gIHZvaWQgQ2xlYXJBbGxQYXlsb2FkVHlwZXMoKTsKLQotIHBy
aXZhdGU6Ci0gIHN0ZDo6c2V0PGludD4gcGF5bG9hZF90eXBlc187Ci19OwotCi19ICAvLyBuYW1l
c3BhY2UgY3JpY2tldAotCi0jZW5kaWYgIC8vIFBDX0JVTkRMRUZJTFRFUl9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmls
dGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvYnVuZGxlZmlsdGVyX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlN2NhZGJmYmFjNjEzYzY0MjlhOGJlMjc3ZTIxZjM3NWNmYzRiZDcxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZpbHRlcl91bml0dGVzdC5jYworKysgL2Rl
di9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJw
Yy9idW5kbGVmaWx0ZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgotCi11c2luZyBj
cmlja2V0OjpTdHJlYW1QYXJhbXM7Ci0KLXN0YXRpYyBjb25zdCBpbnQga1BheWxvYWRUeXBlMSA9
IDB4MTE7Ci1zdGF0aWMgY29uc3QgaW50IGtQYXlsb2FkVHlwZTIgPSAweDIyOwotc3RhdGljIGNv
bnN0IGludCBrUGF5bG9hZFR5cGUzID0gMHgzMzsKLQotLy8gU1NSQyA9IDB4MTExMSwgUGF5bG9h
ZCB0eXBlID0gMHgxMQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga1J0cFBhY2tldFB0MVNz
cmMxW10gPSB7Ci0gICAgMHg4MCwga1BheWxvYWRUeXBlMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgw
MCwKLSAgICAweDAwLCAweDAwLCAgICAgICAgICAweDAwLCAweDAwLCAweDExLCAweDExLAotfTsK
LQotLy8gU1NSQyA9IDB4MjIyMiwgUGF5bG9hZCB0eXBlID0gMHgyMgotc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGNoYXIga1J0cFBhY2tldFB0MlNzcmMyW10gPSB7Ci0gICAgMHg4MCwgMHg4MCArIGtQ
YXlsb2FkVHlwZTIsCi0gICAgMHgwMCwgMHgwMSwKLSAgICAweDAwLCAweDAwLAotICAgIDB4MDAs
IDB4MDAsCi0gICAgMHgwMCwgMHgwMCwKLSAgICAweDIyLCAweDIyLAotfTsKLQotLy8gU1NSQyA9
IDB4MjIyMiwgUGF5bG9hZCB0eXBlID0gMHgzMwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg
a1J0cFBhY2tldFB0M1NzcmMyW10gPSB7Ci0gICAgMHg4MCwga1BheWxvYWRUeXBlMywgMHgwMCwg
MHgwMSwgMHgwMCwgMHgwMCwKLSAgICAweDAwLCAweDAwLCAgICAgICAgICAweDAwLCAweDAwLCAw
eDIyLCAweDIyLAotfTsKLQotLy8gQW4gU0NUUCBwYWNrZXQuCi1zdGF0aWMgY29uc3QgdW5zaWdu
ZWQgY2hhciBrU2N0cFBhY2tldFtdID0gewotICAgIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDEsIDB4
ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsCi0gICAgMHgwMCwgMHgwMCwgMHgwMywg
MHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLX07Ci0KLVRFU1QoQnVu
ZGxlRmlsdGVyVGVzdCwgUnRwUGFja2V0VGVzdCkgewotICBjcmlja2V0OjpCdW5kbGVGaWx0ZXIg
YnVuZGxlX2ZpbHRlcjsKLSAgYnVuZGxlX2ZpbHRlci5BZGRQYXlsb2FkVHlwZShrUGF5bG9hZFR5
cGUxKTsKLSAgRVhQRUNUX1RSVUUoYnVuZGxlX2ZpbHRlci5EZW11eFBhY2tldChrUnRwUGFja2V0
UHQxU3NyYzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m
KGtSdHBQYWNrZXRQdDFTc3JjMSkpKTsKLSAgYnVuZGxlX2ZpbHRlci5BZGRQYXlsb2FkVHlwZShr
UGF5bG9hZFR5cGUyKTsKLSAgRVhQRUNUX1RSVUUoYnVuZGxlX2ZpbHRlci5EZW11eFBhY2tldChr
UnRwUGFja2V0UHQyU3NyYzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZW9mKGtSdHBQYWNrZXRQdDJTc3JjMikpKTsKLQotICAvLyBQYXlsb2FkIHR5cGUgMHgz
MyBpcyBub3QgYWRkZWQuCi0gIEVYUEVDVF9GQUxTRShidW5kbGVfZmlsdGVyLkRlbXV4UGFja2V0
KGtSdHBQYWNrZXRQdDNTc3JjMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZW9mKGtSdHBQYWNrZXRQdDNTc3JjMikpKTsKLSAgLy8gU2l6ZSBpcyB0b28gc21h
bGwuCi0gIEVYUEVDVF9GQUxTRShidW5kbGVfZmlsdGVyLkRlbXV4UGFja2V0KGtSdHBQYWNrZXRQ
dDFTc3JjMSwgMTEpKTsKLQotICBidW5kbGVfZmlsdGVyLkNsZWFyQWxsUGF5bG9hZFR5cGVzKCk7
Ci0gIEVYUEVDVF9GQUxTRShidW5kbGVfZmlsdGVyLkRlbXV4UGFja2V0KGtSdHBQYWNrZXRQdDFT
c3JjMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGtS
dHBQYWNrZXRQdDFTc3JjMSkpKTsKLSAgRVhQRUNUX0ZBTFNFKGJ1bmRsZV9maWx0ZXIuRGVtdXhQ
YWNrZXQoa1J0cFBhY2tldFB0MlNzcmMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplb2Yoa1J0cFBhY2tldFB0MlNzcmMyKSkpOwotfQotCi1URVNUKEJ1bmRs
ZUZpbHRlclRlc3QsIEludmFsaWRSdHBQYWNrZXQpIHsKLSAgY3JpY2tldDo6QnVuZGxlRmlsdGVy
IGJ1bmRsZV9maWx0ZXI7Ci0gIEVYUEVDVF9GQUxTRShidW5kbGVfZmlsdGVyLkRlbXV4UGFja2V0
KGtTY3RwUGFja2V0LCBzaXplb2Yoa1NjdHBQYWNrZXQpKSk7Ci19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbC5jYwppbmRl
eCBiNjNjZWE3Y2VjZjMwMjFjMzYyYTdhNzJkNzg0NmM3ZTIxMzJhY2ZhLi42N2Q2OTg0ODdjZTRm
ODliY2QyZjkyMzZiN2NlZjAyNGY2YTlkNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWwuY2MKQEAgLTkzLDYgKzkz
LDcgQEAgdm9pZCBSdHBTZW5kUGFyYW1ldGVyc0Zyb21NZWRpYURlc2NyaXB0aW9uKAogICAgIFJ0
cFNlbmRQYXJhbWV0ZXJzPENvZGVjPiogc2VuZF9wYXJhbXMpIHsKICAgUnRwUGFyYW1ldGVyc0Zy
b21NZWRpYURlc2NyaXB0aW9uKGRlc2MsIGV4dGVuc2lvbnMsIHNlbmRfcGFyYW1zKTsKICAgc2Vu
ZF9wYXJhbXMtPm1heF9iYW5kd2lkdGhfYnBzID0gZGVzYy0+YmFuZHdpZHRoKCk7CisgIHNlbmRf
cGFyYW1zLT5leHRtYXBfYWxsb3dfbWl4ZWQgPSBkZXNjLT5leHRtYXBfYWxsb3dfbWl4ZWQoKTsK
IH0KIAogQmFzZUNoYW5uZWw6OkJhc2VDaGFubmVsKHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFk
LApAQCAtMTAxLDcgKzEwMiw3IEBAIEJhc2VDaGFubmVsOjpCYXNlQ2hhbm5lbChydGM6OlRocmVh
ZCogd29ya2VyX3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TWVkaWFDaGFubmVsPiBtZWRpYV9jaGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBzcnRwX3JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3J5
cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpCiAgICAgOiB3b3JrZXJfdGhyZWFkXyh3
b3JrZXJfdGhyZWFkKSwKICAgICAgIG5ldHdvcmtfdGhyZWFkXyhuZXR3b3JrX3RocmVhZCksCiAg
ICAgICBzaWduYWxpbmdfdGhyZWFkXyhzaWduYWxpbmdfdGhyZWFkKSwKQEAgLTExNyw2ICsxMTgs
MTEgQEAgQmFzZUNoYW5uZWw6OkJhc2VDaGFubmVsKHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFk
LAogQmFzZUNoYW5uZWw6On5CYXNlQ2hhbm5lbCgpIHsKICAgVFJBQ0VfRVZFTlQwKCJ3ZWJydGMi
LCAiQmFzZUNoYW5uZWw6On5CYXNlQ2hhbm5lbCIpOwogICBSVENfRENIRUNLX1JVTl9PTih3b3Jr
ZXJfdGhyZWFkXyk7CisKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBtZWRpYV90cmFu
c3BvcnRfLT5TZXROZXR3b3JrQ2hhbmdlQ2FsbGJhY2sobnVsbHB0cik7CisgIH0KKwogICAvLyBF
YXRzIGFueSBvdXRzdGFuZGluZyBtZXNzYWdlcyBvciBwYWNrZXRzLgogICB3b3JrZXJfdGhyZWFk
Xy0+Q2xlYXIoJmludm9rZXJfKTsKICAgd29ya2VyX3RocmVhZF8tPkNsZWFyKHRoaXMpOwpAQCAt
MTM2LDggKzE0MiwxNSBAQCBib29sIEJhc2VDaGFubmVsOjpDb25uZWN0VG9SdHBUcmFuc3BvcnQo
KSB7CiAgICAgICB0aGlzLCAmQmFzZUNoYW5uZWw6Ok9uVHJhbnNwb3J0UmVhZHlUb1NlbmQpOwog
ICBydHBfdHJhbnNwb3J0Xy0+U2lnbmFsUnRjcFBhY2tldFJlY2VpdmVkLmNvbm5lY3QoCiAgICAg
ICB0aGlzLCAmQmFzZUNoYW5uZWw6Ok9uUnRjcFBhY2tldFJlY2VpdmVkKTsKLSAgcnRwX3RyYW5z
cG9ydF8tPlNpZ25hbE5ldHdvcmtSb3V0ZUNoYW5nZWQuY29ubmVjdCgKLSAgICAgIHRoaXMsICZC
YXNlQ2hhbm5lbDo6T25OZXR3b3JrUm91dGVDaGFuZ2VkKTsKKworICAvLyBJZiBtZWRpYSB0cmFu
c3BvcnQgaXMgdXNlZCwgaXQncyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIG5ldHdvcmsKKyAg
Ly8gcm91dGUgY2hhbmdlZCBjYWxsYmFja3MuCisgIGlmICghbWVkaWFfdHJhbnNwb3J0Xykgewor
ICAgIHJ0cF90cmFuc3BvcnRfLT5TaWduYWxOZXR3b3JrUm91dGVDaGFuZ2VkLmNvbm5lY3QoCisg
ICAgICAgIHRoaXMsICZCYXNlQ2hhbm5lbDo6T25OZXR3b3JrUm91dGVDaGFuZ2VkKTsKKyAgfQor
ICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NzE5KTogTWVkaWEgdHJhbnNwb3J0IHNob3VsZCBh
bHNvIGJlIHVzZWQgdG8gcHJvdmlkZQorICAvLyAnd3JpdGFibGUnIHN0YXRlIGhlcmUuCiAgIHJ0
cF90cmFuc3BvcnRfLT5TaWduYWxXcml0YWJsZVN0YXRlLmNvbm5lY3QodGhpcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQmFzZUNoYW5uZWw6Ok9uV3Jp
dGFibGVTdGF0ZSk7CiAgIHJ0cF90cmFuc3BvcnRfLT5TaWduYWxTZW50UGFja2V0LmNvbm5lY3Qo
dGhpcywKQEAgLTE1NSwxOSArMTY4LDI5IEBAIHZvaWQgQmFzZUNoYW5uZWw6OkRpc2Nvbm5lY3RG
cm9tUnRwVHJhbnNwb3J0KCkgewogICBydHBfdHJhbnNwb3J0Xy0+U2lnbmFsU2VudFBhY2tldC5k
aXNjb25uZWN0KHRoaXMpOwogfQogCi12b2lkIEJhc2VDaGFubmVsOjpJbml0X3cod2VicnRjOjpS
dHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCkgewordm9pZCBCYXNlQ2hhbm5lbDo6
SW5pdF93KHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVk
aWFfdHJhbnNwb3J0KSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKHdvcmtlcl90aHJlYWRfKTsKKyAg
bWVkaWFfdHJhbnNwb3J0XyA9IG1lZGlhX3RyYW5zcG9ydDsKKwogICBuZXR3b3JrX3RocmVhZF8t
Pkludm9rZTx2b2lkPigKICAgICAgIFJUQ19GUk9NX0hFUkUsIFt0aGlzLCBydHBfdHJhbnNwb3J0
XSB7IFNldFJ0cFRyYW5zcG9ydChydHBfdHJhbnNwb3J0KTsgfSk7CiAKICAgLy8gQm90aCBSVFAg
YW5kIFJUQ1AgY2hhbm5lbHMgc2hvdWxkIGJlIHNldCwgd2UgY2FuIGNhbGwgU2V0SW50ZXJmYWNl
IG9uCiAgIC8vIHRoZSBtZWRpYSBjaGFubmVsIGFuZCBpdCBjYW4gc2V0IG5ldHdvcmsgb3B0aW9u
cy4KLSAgbWVkaWFfY2hhbm5lbF8tPlNldEludGVyZmFjZSh0aGlzKTsKKyAgbWVkaWFfY2hhbm5l
bF8tPlNldEludGVyZmFjZSh0aGlzLCBtZWRpYV90cmFuc3BvcnQpOworCisgIFJUQ19MT0coTFNf
SU5GTykgPDwgIkJhc2VDaGFubmVsOjpJbml0X3csIG1lZGlhX3RyYW5zcG9ydD0iCisgICAgICAg
ICAgICAgICAgICAgPDwgKG1lZGlhX3RyYW5zcG9ydF8gIT0gbnVsbHB0cik7CisgIGlmIChtZWRp
YV90cmFuc3BvcnRfKSB7CisgICAgbWVkaWFfdHJhbnNwb3J0Xy0+U2V0TmV0d29ya0NoYW5nZUNh
bGxiYWNrKHRoaXMpOworICB9CiB9CiAKIHZvaWQgQmFzZUNoYW5uZWw6OkRlaW5pdCgpIHsKICAg
UlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkXy0+SXNDdXJyZW50KCkpOwotICBtZWRpYV9jaGFubmVs
Xy0+U2V0SW50ZXJmYWNlKE5VTEwpOworICBtZWRpYV9jaGFubmVsXy0+U2V0SW50ZXJmYWNlKC8q
aWZhY2U9Ki9udWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFf
dHJhbnNwb3J0PSovbnVsbHB0cik7CiAgIC8vIFBhY2tldHMgYXJyaXZlIG9uIHRoZSBuZXR3b3Jr
IHRocmVhZCwgcHJvY2Vzc2luZyBwYWNrZXRzIGNhbGxzIHZpcnR1YWwKICAgLy8gZnVuY3Rpb25z
LCBzbyBuZWVkIHRvIHN0b3AgdGhpcyBwcm9jZXNzIGluIERlaW5pdCB0aGF0IGlzIGNhbGxlZCBp
bgogICAvLyBkZXJpdmVkIGNsYXNzZXMgZGVzdHJ1Y3Rvci4KQEAgLTM1MCw2ICszNzMsOCBAQCB2
b2lkIEJhc2VDaGFubmVsOjpPbldyaXRhYmxlU3RhdGUoYm9vbCB3cml0YWJsZSkgewogCiB2b2lk
IEJhc2VDaGFubmVsOjpPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCiAgICAgYWJzbDo6b3B0aW9uYWw8
cnRjOjpOZXR3b3JrUm91dGU+IG5ldHdvcmtfcm91dGUpIHsKKyAgUlRDX0xPRyhMU19JTkZPKSA8
PCAiTmV0d29yayByb3V0ZSB3YXMgY2hhbmdlZC4iOworCiAgIFJUQ19EQ0hFQ0sobmV0d29ya190
aHJlYWRfLT5Jc0N1cnJlbnQoKSk7CiAgIHJ0Yzo6TmV0d29ya1JvdXRlIG5ld19yb3V0ZTsKICAg
aWYgKG5ldHdvcmtfcm91dGUpIHsKQEAgLTQzOSwxMyArNDY0LDEyIEBAIHZvaWQgQmFzZUNoYW5u
ZWw6Ok9uUnRwUGFja2V0KGNvbnN0IHdlYnJ0Yzo6UnRwUGFja2V0UmVjZWl2ZWQmIHBhcnNlZF9w
YWNrZXQpIHsKICAgLy8gUnRwUGFja2V0UmVjZWl2ZWQuYXJyaXZhbF90aW1lX21zID0gKFBhY2tl
dFRpbWUgKyA1MDApIC8gMTAwMDsKICAgLy8gTm90ZTogVGhlIHxub3RfYmVmb3JlfCBmaWVsZCBp
cyBhbHdheXMgMCBoZXJlLiBUaGlzIGZpZWxkIGlzIG5vdCBjdXJyZW50bHkKICAgLy8gdXNlZCwg
c28gaXQgc2hvdWxkIGJlIGZpbmUuCi0gIGludDY0X3QgdGltZXN0YW1wID0gLTE7CisgIGludDY0
X3QgdGltZXN0YW1wX3VzID0gLTE7CiAgIGlmIChwYXJzZWRfcGFja2V0LmFycml2YWxfdGltZV9t
cygpID4gMCkgewotICAgIHRpbWVzdGFtcCA9IHBhcnNlZF9wYWNrZXQuYXJyaXZhbF90aW1lX21z
KCkgKiAxMDAwOworICAgIHRpbWVzdGFtcF91cyA9IHBhcnNlZF9wYWNrZXQuYXJyaXZhbF90aW1l
X21zKCkgKiAxMDAwOwogICB9Ci0gIHJ0Yzo6UGFja2V0VGltZSBwYWNrZXRfdGltZSh0aW1lc3Rh
bXAsIC8qbm90X2JlZm9yZT0qLzApOwogCi0gIE9uUGFja2V0UmVjZWl2ZWQoLypydGNwPSovZmFs
c2UsIHBhcnNlZF9wYWNrZXQuQnVmZmVyKCksIHBhY2tldF90aW1lKTsKKyAgT25QYWNrZXRSZWNl
aXZlZCgvKnJ0Y3A9Ki9mYWxzZSwgcGFyc2VkX3BhY2tldC5CdWZmZXIoKSwgdGltZXN0YW1wX3Vz
KTsKIH0KIAogdm9pZCBCYXNlQ2hhbm5lbDo6VXBkYXRlUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKApA
QCAtNDcyLDEzICs0OTYsMTMgQEAgYm9vbCBCYXNlQ2hhbm5lbDo6UmVnaXN0ZXJSdHBEZW11eGVy
U2luaygpIHsKIH0KIAogdm9pZCBCYXNlQ2hhbm5lbDo6T25SdGNwUGFja2V0UmVjZWl2ZWQocnRj
OjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewotICBPblBh
Y2tldFJlY2VpdmVkKC8qcnRjcD0qL3RydWUsICpwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMp
IHsKKyAgT25QYWNrZXRSZWNlaXZlZCgvKnJ0Y3A9Ki90cnVlLCAqcGFja2V0LCBwYWNrZXRfdGlt
ZV91cyk7CiB9CiAKIHZvaWQgQmFzZUNoYW5uZWw6Ok9uUGFja2V0UmVjZWl2ZWQoYm9vbCBydGNw
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldy
aXRlQnVmZmVyJiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBpZiAoIWhhc19yZWNl
aXZlZF9wYWNrZXRfICYmICFydGNwKSB7CiAgICAgaGFzX3JlY2VpdmVkX3BhY2tldF8gPSB0cnVl
OwogICAgIHNpZ25hbGluZ190aHJlYWQoKS0+UG9zdChSVENfRlJPTV9IRVJFLCB0aGlzLCBNU0df
RklSU1RQQUNLRVRSRUNFSVZFRCk7CkBAIC01MDQsMjEgKzUyOCwyMSBAQCB2b2lkIEJhc2VDaGFu
bmVsOjpPblBhY2tldFJlY2VpdmVkKGJvb2wgcnRjcCwKIAogICBpbnZva2VyXy5Bc3luY0ludm9r
ZTx2b2lkPigKICAgICAgIFJUQ19GUk9NX0hFUkUsIHdvcmtlcl90aHJlYWRfLAotICAgICAgQmlu
ZCgmQmFzZUNoYW5uZWw6OlByb2Nlc3NQYWNrZXQsIHRoaXMsIHJ0Y3AsIHBhY2tldCwgcGFja2V0
X3RpbWUpKTsKKyAgICAgIEJpbmQoJkJhc2VDaGFubmVsOjpQcm9jZXNzUGFja2V0LCB0aGlzLCBy
dGNwLCBwYWNrZXQsIHBhY2tldF90aW1lX3VzKSk7CiB9CiAKIHZvaWQgQmFzZUNoYW5uZWw6OlBy
b2Nlc3NQYWNrZXQoYm9vbCBydGNwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBS
VENfRENIRUNLKHdvcmtlcl90aHJlYWRfLT5Jc0N1cnJlbnQoKSk7CiAKICAgLy8gTmVlZCB0byBj
b3B5IHZhcmlhYmxlIGJlY2F1c2UgT25SdGNwUmVjZWl2ZWQvT25QYWNrZXRSZWNlaXZlZAogICAv
LyByZXF1aXJlcyBub24tY29uc3QgcG9pbnRlciB0byBidWZmZXIuIFRoaXMgZG9lc24ndCBtZW1j
cHkgdGhlIGFjdHVhbCBkYXRhLgogICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIGRhdGEocGFja2V0
KTsKICAgaWYgKHJ0Y3ApIHsKLSAgICBtZWRpYV9jaGFubmVsXy0+T25SdGNwUmVjZWl2ZWQoJmRh
dGEsIHBhY2tldF90aW1lKTsKKyAgICBtZWRpYV9jaGFubmVsXy0+T25SdGNwUmVjZWl2ZWQoJmRh
dGEsIHBhY2tldF90aW1lX3VzKTsKICAgfSBlbHNlIHsKLSAgICBtZWRpYV9jaGFubmVsXy0+T25Q
YWNrZXRSZWNlaXZlZCgmZGF0YSwgcGFja2V0X3RpbWUpOworICAgIG1lZGlhX2NoYW5uZWxfLT5P
blBhY2tldFJlY2VpdmVkKCZkYXRhLCBwYWNrZXRfdGltZV91cyk7CiAgIH0KIH0KIApAQCAtNjcz
LDcgKzY5Nyw3IEBAIGJvb2wgQmFzZUNoYW5uZWw6OlVwZGF0ZVJlbW90ZVN0cmVhbXNfdygKIFJ0
cEhlYWRlckV4dGVuc2lvbnMgQmFzZUNoYW5uZWw6OkdldEZpbHRlcmVkUnRwSGVhZGVyRXh0ZW5z
aW9ucygKICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25zJiBleHRlbnNpb25zKSB7CiAgIFJU
Q19EQ0hFQ0socnRwX3RyYW5zcG9ydF8pOwotICBpZiAoY3J5cHRvX29wdGlvbnNfLmVuYWJsZV9l
bmNyeXB0ZWRfcnRwX2hlYWRlcl9leHRlbnNpb25zKSB7CisgIGlmIChjcnlwdG9fb3B0aW9uc18u
c3J0cC5lbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucykgewogICAgIFJ0cEhl
YWRlckV4dGVuc2lvbnMgZmlsdGVyZWQ7CiAgICAgYXV0byBwcmVkID0gW10oY29uc3Qgd2VicnRj
OjpSdHBFeHRlbnNpb24mIGV4dGVuc2lvbikgewogICAgICAgcmV0dXJuICFleHRlbnNpb24uZW5j
cnlwdDsKQEAgLTcwMCw3ICs3MjQsNyBAQCB2b2lkIEJhc2VDaGFubmVsOjpPbk1lc3NhZ2UocnRj
OjpNZXNzYWdlKiBwbXNnKSB7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNU0dfRklS
U1RQQUNLRVRSRUNFSVZFRDogewotICAgICAgU2lnbmFsRmlyc3RQYWNrZXRSZWNlaXZlZCh0aGlz
KTsKKyAgICAgIFNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWRfKHRoaXMpOwogICAgICAgYnJlYWs7
CiAgICAgfQogICB9CkBAIC03NDIsNyArNzY2LDcgQEAgVm9pY2VDaGFubmVsOjpWb2ljZUNoYW5u
ZWwocnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Vm9pY2VNZWRpYUNoYW5uZWw+IG1lZGlhX2NoYW5uZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzcnRwX3JlcXVpcmVkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRp
b25zKQogICAgIDogQmFzZUNoYW5uZWwod29ya2VyX3RocmVhZCwKICAgICAgICAgICAgICAgICAg
IG5ldHdvcmtfdGhyZWFkLAogICAgICAgICAgICAgICAgICAgc2lnbmFsaW5nX3RocmVhZCwKQEAg
LTc2NSw2ICs3ODksMTEgQEAgdm9pZCBCYXNlQ2hhbm5lbDo6VXBkYXRlTWVkaWFTZW5kUmVjdlN0
YXRlKCkgewogICAgICAgQmluZCgmQmFzZUNoYW5uZWw6OlVwZGF0ZU1lZGlhU2VuZFJlY3ZTdGF0
ZV93LCB0aGlzKSk7CiB9CiAKK3ZvaWQgQmFzZUNoYW5uZWw6Ok9uTmV0d29ya1JvdXRlQ2hhbmdl
ZCgKKyAgICBjb25zdCBydGM6Ok5ldHdvcmtSb3V0ZSYgbmV0d29ya19yb3V0ZSkgeworICBPbk5l
dHdvcmtSb3V0ZUNoYW5nZWQoYWJzbDo6bWFrZV9vcHRpb25hbChuZXR3b3JrX3JvdXRlKSk7Cit9
CisKIHZvaWQgVm9pY2VDaGFubmVsOjpVcGRhdGVNZWRpYVNlbmRSZWN2U3RhdGVfdygpIHsKICAg
Ly8gUmVuZGVyIGluY29taW5nIGRhdGEgaWYgd2UncmUgdGhlIGFjdGl2ZSBjYWxsLCBhbmQgd2Ug
aGF2ZSB0aGUgbG9jYWwKICAgLy8gY29udGVudC4gV2UgcmVjZWl2ZSBkYXRhIG9uIHRoZSBkZWZh
dWx0IGNoYW5uZWwgYW5kIG11bHRpcGxleGVkIHN0cmVhbXMuCkBAIC03OTcsNiArODI2LDcgQEAg
Ym9vbCBWb2ljZUNoYW5uZWw6OlNldExvY2FsQ29udGVudF93KGNvbnN0IE1lZGlhQ29udGVudERl
c2NyaXB0aW9uKiBjb250ZW50LAogICBSdHBIZWFkZXJFeHRlbnNpb25zIHJ0cF9oZWFkZXJfZXh0
ZW5zaW9ucyA9CiAgICAgICBHZXRGaWx0ZXJlZFJ0cEhlYWRlckV4dGVuc2lvbnMoYXVkaW8tPnJ0
cF9oZWFkZXJfZXh0ZW5zaW9ucygpKTsKICAgVXBkYXRlUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKHJ0
cF9oZWFkZXJfZXh0ZW5zaW9ucyk7CisgIG1lZGlhX2NoYW5uZWwoKS0+U2V0RXh0bWFwQWxsb3dN
aXhlZChhdWRpby0+ZXh0bWFwX2FsbG93X21peGVkKCkpOwogCiAgIEF1ZGlvUmVjdlBhcmFtZXRl
cnMgcmVjdl9wYXJhbXMgPSBsYXN0X3JlY3ZfcGFyYW1zXzsKICAgUnRwUGFyYW1ldGVyc0Zyb21N
ZWRpYURlc2NyaXB0aW9uKGF1ZGlvLCBydHBfaGVhZGVyX2V4dGVuc2lvbnMsICZyZWN2X3BhcmFt
cyk7CkBAIC04ODEsNyArOTExLDcgQEAgVmlkZW9DaGFubmVsOjpWaWRlb0NoYW5uZWwocnRjOjpU
aHJlYWQqIHdvcmtlcl90aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IG1lZGlhX2NoYW5uZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBzcnRwX3JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKQogICAg
IDogQmFzZUNoYW5uZWwod29ya2VyX3RocmVhZCwKICAgICAgICAgICAgICAgICAgIG5ldHdvcmtf
dGhyZWFkLAogICAgICAgICAgICAgICAgICAgc2lnbmFsaW5nX3RocmVhZCwKQEAgLTkzMiw2ICs5
NjIsNyBAQCBib29sIFZpZGVvQ2hhbm5lbDo6U2V0TG9jYWxDb250ZW50X3coY29uc3QgTWVkaWFD
b250ZW50RGVzY3JpcHRpb24qIGNvbnRlbnQsCiAgIFJ0cEhlYWRlckV4dGVuc2lvbnMgcnRwX2hl
YWRlcl9leHRlbnNpb25zID0KICAgICAgIEdldEZpbHRlcmVkUnRwSGVhZGVyRXh0ZW5zaW9ucyh2
aWRlby0+cnRwX2hlYWRlcl9leHRlbnNpb25zKCkpOwogICBVcGRhdGVSdHBIZWFkZXJFeHRlbnNp
b25NYXAocnRwX2hlYWRlcl9leHRlbnNpb25zKTsKKyAgbWVkaWFfY2hhbm5lbCgpLT5TZXRFeHRt
YXBBbGxvd01peGVkKHZpZGVvLT5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7CiAKICAgVmlkZW9SZWN2
UGFyYW1ldGVycyByZWN2X3BhcmFtcyA9IGxhc3RfcmVjdl9wYXJhbXNfOwogICBSdHBQYXJhbWV0
ZXJzRnJvbU1lZGlhRGVzY3JpcHRpb24odmlkZW8sIHJ0cF9oZWFkZXJfZXh0ZW5zaW9ucywgJnJl
Y3ZfcGFyYW1zKTsKQEAgLTEwMTksNyArMTA1MCw3IEBAIFJ0cERhdGFDaGFubmVsOjpSdHBEYXRh
Q2hhbm5lbChydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YU1lZGlhQ2hhbm5lbD4gbWVkaWFfY2hhbm5l
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29u
dGVudF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3J0cF9yZXF1
aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMg
Y3J5cHRvX29wdGlvbnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpD
cnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKQogICAgIDogQmFzZUNoYW5uZWwod29ya2VyX3Ro
cmVhZCwKICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfdGhyZWFkLAogICAgICAgICAgICAgICAg
ICAgc2lnbmFsaW5nX3RocmVhZCwKQEAgLTEwMzYsNyArMTA2Nyw3IEBAIFJ0cERhdGFDaGFubmVs
Ojp+UnRwRGF0YUNoYW5uZWwoKSB7CiB9CiAKIHZvaWQgUnRwRGF0YUNoYW5uZWw6OkluaXRfdyh3
ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0KSB7Ci0gIEJhc2VDaGFu
bmVsOjpJbml0X3cocnRwX3RyYW5zcG9ydCk7CisgIEJhc2VDaGFubmVsOjpJbml0X3cocnRwX3Ry
YW5zcG9ydCwgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgbWVkaWFfY2hhbm5lbCgp
LT5TaWduYWxEYXRhUmVjZWl2ZWQuY29ubmVjdCh0aGlzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZSdHBEYXRhQ2hhbm5lbDo6T25EYXRhUmVjZWl2ZWQp
OwogICBtZWRpYV9jaGFubmVsKCktPlNpZ25hbFJlYWR5VG9TZW5kLmNvbm5lY3QoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVs
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVs
LmgKaW5kZXggYmE1ODQ2OTBiYTZhZDA3NTU3YmMxOTZhMTYwMzMwZTFkODQ0ZjUwNy4uNjI2NGJi
MzkwNDFhZTdkM2Q0YTFhNWU3MjcwZjQzNDhjMjM0YTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWwuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIm1lZGlhL2Jhc2Uvc3RyZWFtcGFyYW1zLmgiCiAjaW5jbHVk
ZSAicDJwL2Jhc2UvZHRsc3RyYW5zcG9ydGludGVybmFsLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2Uv
cGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuaCIKKyNpbmNsdWRlICJwYy9jaGFubmVsaW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAicGMvZHRsc3NydHB0cmFuc3BvcnQuaCIKICNpbmNsdWRlICJwYy9tZWRp
YXNlc3Npb24uaCIKICNpbmNsdWRlICJwYy9ydHB0cmFuc3BvcnQuaCIKQEAgLTQyLDEyICs0Mywx
MiBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEF1ZGlvU2lua0ludGVyZmFjZTsKK2Ns
YXNzIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlOwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCiBu
YW1lc3BhY2UgY3JpY2tldCB7CiAKIHN0cnVjdCBDcnlwdG9QYXJhbXM7Ci1jbGFzcyBNZWRpYUNv
bnRlbnREZXNjcmlwdGlvbjsKIAogLy8gQmFzZUNoYW5uZWwgY29udGFpbnMgbG9naWMgY29tbW9u
IHRvIHZvaWNlIGFuZCB2aWRlbywgaW5jbHVkaW5nIGVuYWJsZSwKIC8vIG1hcnNoYWxpbmcgY2Fs
bHMgdG8gYSB3b3JrZXIgYW5kIG5ldHdvcmsgdGhyZWFkcywgYW5kIGNvbm5lY3Rpb24gYW5kIG1l
ZGlhCkBAIC02NywxMCArNjgsMTIgQEAgY2xhc3MgTWVkaWFDb250ZW50RGVzY3JpcHRpb247CiAv
LyB2dGFibGUsIGFuZCB0aGUgbWVkaWEgY2hhbm5lbCdzIHRocmVhZCB1c2luZyBCYXNlQ2hhbm5l
bCBhcyB0aGUKIC8vIE5ldHdvcmtJbnRlcmZhY2UuCiAKLWNsYXNzIEJhc2VDaGFubmVsIDogcHVi
bGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCitjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBDaGFu
bmVsSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpNZXNzYWdlSGFu
ZGxlciwKICAgICAgICAgICAgICAgICAgICAgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+LAog
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgTWVkaWFDaGFubmVsOjpOZXR3b3JrSW50ZXJmYWNl
LAotICAgICAgICAgICAgICAgICAgICBwdWJsaWMgd2VicnRjOjpSdHBQYWNrZXRTaW5rSW50ZXJm
YWNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHdlYnJ0Yzo6UnRwUGFja2V0U2lua0lu
dGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHdlYnJ0Yzo6TWVkaWFUcmFuc3Bv
cnROZXR3b3JrQ2hhbmdlQ2FsbGJhY2sgewogIHB1YmxpYzoKICAgLy8gSWYgfHNydHBfcmVxdWly
ZWR8IGlzIHRydWUsIHRoZSBjaGFubmVsIHdpbGwgbm90IHNlbmQgb3IgcmVjZWl2ZSBhbnkKICAg
Ly8gUlRQL1JUQ1AgcGFja2V0cyB3aXRob3V0IHVzaW5nIFNSVFAgKGVpdGhlciB1c2luZyBTREVT
IG9yIERUTFMtU1JUUCkuCkBAIC04Miw5ICs4NSwxMCBAQCBjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1
YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAogICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFDaGFubmVsPiBtZWRpYV9jaGFubmVsLAogICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgY29udGVudF9uYW1lLAogICAgICAgICAgICAgICBib29sIHNydHBfcmVxdWlyZWQsCi0g
ICAgICAgICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucyk7CisgICAgICAg
ICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucyk7CiAgIHZpcnR1YWwg
fkJhc2VDaGFubmVsKCk7Ci0gIHZvaWQgSW5pdF93KHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJu
YWwqIHJ0cF90cmFuc3BvcnQpOworICB2b2lkIEluaXRfdyh3ZWJydGM6OlJ0cFRyYW5zcG9ydElu
dGVybmFsKiBydHBfdHJhbnNwb3J0LAorICAgICAgICAgICAgICB3ZWJydGM6Ok1lZGlhVHJhbnNw
b3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpOwogCiAgIC8vIERlaW5pdCBtYXkgYmUgY2Fs
bGVkIG11bHRpcGxlIHRpbWVzIGFuZCBpcyBzaW1wbHkgaWdub3JlZCBpZiBpdCdzIGFscmVhZHkK
ICAgLy8gZG9uZS4KQEAgLTkyLDEwICs5NiwxMCBAQCBjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1Ymxp
YyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAogCiAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkKCkg
Y29uc3QgeyByZXR1cm4gd29ya2VyX3RocmVhZF87IH0KICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtf
dGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbmV0d29ya190aHJlYWRfOyB9Ci0gIGNvbnN0IHN0ZDo6
c3RyaW5nJiBjb250ZW50X25hbWUoKSBjb25zdCB7IHJldHVybiBjb250ZW50X25hbWVfOyB9Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBjb250ZW50X25hbWVfOyB9CiAgIC8vIFRPRE8oZGVhZGJlZWYpOiBUaGlzIGlzIHJlZHVuZGFu
dDsgcmVtb3ZlIHRoaXMuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIHRyYW5zcG9ydF9uYW1lXzsgfQotICBib29sIGVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBlbmFibGVkXzsgfQorICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0X25hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cmFuc3BvcnRfbmFtZV87IH0KKyAgYm9vbCBlbmFi
bGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZW5hYmxlZF87IH0KIAogICAvLyBUaGlzIGZ1
bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB1c2luZyBTUlRQIChEVExTLWJhc2VkIGtleWluZyBvciBT
REVTKS4KICAgYm9vbCBzcnRwX2FjdGl2ZSgpIGNvbnN0IHsKQEAgLTEwOCwxNyArMTEyLDE3IEBA
IGNsYXNzIEJhc2VDaGFubmVsIDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCiAgIC8vIGVu
Y3J5cHRpb24sIGFuIFNydHBUcmFuc3BvcnQgZm9yIFNERVMgb3IgYSBEdGxzU3J0cFRyYW5zcG9y
dCBmb3IgRFRMUy1TUlRQLgogICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFk
IGFuZCBpdCBob3BzIHRvIHRoZSBuZXR3b3JrIHRocmVhZAogICAvLyBpbnRlcm5hbGx5LiBJdCB3
b3VsZCByZXBsYWNlIHRoZSB8U2V0VHJhbnNwb3J0c3wgYW5kIGl0cyB2YXJpYW50cy4KLSAgYm9v
bCBTZXRSdHBUcmFuc3BvcnQod2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5z
cG9ydCk7CisgIGJvb2wgU2V0UnRwVHJhbnNwb3J0KHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJu
YWwqIHJ0cF90cmFuc3BvcnQpIG92ZXJyaWRlOwogCiAgIC8vIENoYW5uZWwgY29udHJvbAogICBi
b29sIFNldExvY2FsQ29udGVudChjb25zdCBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogY29udGVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpTZHBUeXBlIHR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnJvcl9kZXNjKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmcqIGVycm9yX2Rlc2MpIG92ZXJyaWRlOwogICBib29sIFNldFJl
bW90ZUNvbnRlbnQoY29uc3QgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIGNvbnRlbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlNkcFR5cGUgdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnJvcl9kZXNjKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nKiBlcnJvcl9kZXNjKSBvdmVycmlkZTsKIAotICBib29sIEVuYWJsZShi
b29sIGVuYWJsZSk7CisgIGJvb2wgRW5hYmxlKGJvb2wgZW5hYmxlKSBvdmVycmlkZTsKIAogICAv
LyBUT0RPKHpoaWh1YW5nKTogVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgdGVzdGluZyBhbmQg
Y2FuIGJlIHJlbW92ZWQuCiAgIGJvb2wgQWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMm
IHNwKTsKQEAgLTEzOCw3ICsxNDIsOSBAQCBjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBydGM6
Ok1lc3NhZ2VIYW5kbGVyLAogICB2b2lkIFNpZ25hbER0bHNTcnRwU2V0dXBGYWlsdXJlX3MoYm9v
bCBydGNwKTsKIAogICAvLyBVc2VkIGZvciBsYXRlbmN5IG1lYXN1cmVtZW50cy4KLSAgc2lnc2xv
dDo6c2lnbmFsMTxCYXNlQ2hhbm5lbCo+IFNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWQ7CisgIHNp
Z3Nsb3Q6OnNpZ25hbDE8Q2hhbm5lbEludGVyZmFjZSo+JiBTaWduYWxGaXJzdFBhY2tldFJlY2Vp
dmVkKCkgb3ZlcnJpZGUgeworICAgIHJldHVybiBTaWduYWxGaXJzdFBhY2tldFJlY2VpdmVkXzsK
KyAgfQogCiAgIC8vIEZvcndhcmQgU2lnbmFsU2VudFBhY2tldCB0byB3b3JrZXIgdGhyZWFkLgog
ICBzaWdzbG90OjpzaWduYWwxPGNvbnN0IHJ0Yzo6U2VudFBhY2tldCY+IFNpZ25hbFNlbnRQYWNr
ZXQ7CkBAIC0xNjIsNiArMTY4LDExIEBAIGNsYXNzIEJhc2VDaGFubmVsIDogcHVibGljIHJ0Yzo6
TWVzc2FnZUhhbmRsZXIsCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KIAorICAvLyBSZXR1cm5z
IG1lZGlhIHRyYW5zcG9ydCwgY2FuIGJlIG51bGwgaWYgbWVkaWEgdHJhbnNwb3J0IGlzIG5vdCBh
dmFpbGFibGUuCisgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5z
cG9ydCgpIHsKKyAgICByZXR1cm4gbWVkaWFfdHJhbnNwb3J0XzsKKyAgfQorCiAgIC8vIEZyb20g
UnRwVHJhbnNwb3J0IC0gcHVibGljIGZvciB0ZXN0aW5nIG9ubHkKICAgdm9pZCBPblRyYW5zcG9y
dFJlYWR5VG9TZW5kKGJvb2wgcmVhZHkpOwogCkBAIC0xNjksOCArMTgwLDYgQEAgY2xhc3MgQmFz
ZUNoYW5uZWwgOiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwKICAgaW50IFNldE9wdGlvbihT
b2NrZXRUeXBlIHR5cGUsIHJ0Yzo6U29ja2V0OjpPcHRpb24gbywgaW50IHZhbCkgb3ZlcnJpZGU7
CiAgIGludCBTZXRPcHRpb25fbihTb2NrZXRUeXBlIHR5cGUsIHJ0Yzo6U29ja2V0OjpPcHRpb24g
bywgaW50IHZhbCk7CiAKLSAgdmlydHVhbCBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgp
ID0gMDsKLQogICAvLyBSdHBQYWNrZXRTaW5rSW50ZXJmYWNlIG92ZXJyaWRlcy4KICAgdm9pZCBP
blJ0cFBhY2tldChjb25zdCB3ZWJydGM6OlJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIG92ZXJy
aWRlOwogCkBAIC0xODAsOSArMTg5LDkgQEAgY2xhc3MgQmFzZUNoYW5uZWwgOiBwdWJsaWMgcnRj
OjpNZXNzYWdlSGFuZGxlciwKICAgICB0cmFuc3BvcnRfbmFtZV8gPSB0cmFuc3BvcnRfbmFtZTsK
ICAgfQogCi0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIE1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5l
bCgpIGNvbnN0IHsgcmV0dXJuIG1lZGlhX2NoYW5uZWxfLmdldCgpOyB9CisgIE1lZGlhQ2hhbm5l
bCogbWVkaWFfY2hhbm5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1lZGlhX2NoYW5uZWxf
LmdldCgpOyB9CiAKKyBwcm90ZWN0ZWQ6CiAgIGJvb2wgd2FzX2V2ZXJfd3JpdGFibGUoKSBjb25z
dCB7IHJldHVybiB3YXNfZXZlcl93cml0YWJsZV87IH0KICAgdm9pZCBzZXRfbG9jYWxfY29udGVu
dF9kaXJlY3Rpb24od2VicnRjOjpSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rpb24pIHsK
ICAgICBsb2NhbF9jb250ZW50X2RpcmVjdGlvbl8gPSBkaXJlY3Rpb247CkBAIC0yMjUsMTQgKzIz
NCwxNCBAQCBjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAog
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRPcHRpb25zJiBvcHRpb25zKTsKIAog
ICB2b2lkIE9uUnRjcFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBh
Y2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90
aW1lX3VzKTsKIAogICB2b2lkIE9uUGFja2V0UmVjZWl2ZWQoYm9vbCBydGNwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgcGFja2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKTsKICAgdm9p
ZCBQcm9jZXNzUGFja2V0KGJvb2wgcnRjcCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXImIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCBwYWNrZXRfdGltZV91cyk7CiAKICAgdm9pZCBFbmFibGVNZWRpYV93KCk7CiAgIHZvaWQg
RGlzYWJsZU1lZGlhX3coKTsKQEAgLTI5NSwxMCArMzA0LDE0IEBAIGNsYXNzIEJhc2VDaGFubmVs
IDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCiAgIHZvaWQgU2lnbmFsU2VudFBhY2tldF9u
KGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgc2VudF9wYWNrZXQpOwogICB2b2lkIFNpZ25hbFNlbnRQ
YWNrZXRfdyhjb25zdCBydGM6OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KTsKICAgYm9vbCBJc1Jl
YWR5VG9TZW5kTWVkaWFfbigpIGNvbnN0OworCisgIC8vIE1lZGlhVHJhbnNwb3J0TmV0d29ya0No
YW5nZUNhbGxiYWNrIG92ZXJyaWRlLgorICB2b2lkIE9uTmV0d29ya1JvdXRlQ2hhbmdlZChjb25z
dCBydGM6Ok5ldHdvcmtSb3V0ZSYgbmV0d29ya19yb3V0ZSkgb3ZlcnJpZGU7CiAgIHJ0Yzo6VGhy
ZWFkKiBjb25zdCB3b3JrZXJfdGhyZWFkXzsKICAgcnRjOjpUaHJlYWQqIGNvbnN0IG5ldHdvcmtf
dGhyZWFkXzsKICAgcnRjOjpUaHJlYWQqIGNvbnN0IHNpZ25hbGluZ190aHJlYWRfOwogICBydGM6
OkFzeW5jSW52b2tlciBpbnZva2VyXzsKKyAgc2lnc2xvdDo6c2lnbmFsMTxDaGFubmVsSW50ZXJm
YWNlKj4gU2lnbmFsRmlyc3RQYWNrZXRSZWNlaXZlZF87CiAKICAgY29uc3Qgc3RkOjpzdHJpbmcg
Y29udGVudF9uYW1lXzsKIApAQCAtMzA3LDEzICszMjAsMTggQEAgY2xhc3MgQmFzZUNoYW5uZWwg
OiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwKIAogICB3ZWJydGM6OlJ0cFRyYW5zcG9ydElu
dGVybmFsKiBydHBfdHJhbnNwb3J0XyA9IG51bGxwdHI7CiAKKyAgLy8gT3B0aW9uYWwgbWVkaWEg
dHJhbnNwb3J0IChleHBlcmltZW50YWwpLgorICAvLyBJZiBwcm92aWRlZCwgYXVkaW8gYW5kIHZp
ZGVvIHdpbGwgYmUgc2VudCB0aHJvdWdoIG1lZGlhX3RyYW5zcG9ydCBpbnN0ZWFkCisgIC8vIG9m
IFJUUC9SVENQLiBDdXJyZW50bHkgbWVkaWFfdHJhbnNwb3J0IGNhbiBjby1leGlzdCB3aXRoIHJ0
cF90cmFuc3BvcnQuCisgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3Ry
YW5zcG9ydF8gPSBudWxscHRyOworCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxydGM6OlNvY2tl
dDo6T3B0aW9uLCBpbnQ+ID4gc29ja2V0X29wdGlvbnNfOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnBh
aXI8cnRjOjpTb2NrZXQ6Ok9wdGlvbiwgaW50PiA+IHJ0Y3Bfc29ja2V0X29wdGlvbnNfOwogICBi
b29sIHdyaXRhYmxlXyA9IGZhbHNlOwogICBib29sIHdhc19ldmVyX3dyaXRhYmxlXyA9IGZhbHNl
OwogICBib29sIGhhc19yZWNlaXZlZF9wYWNrZXRfID0gZmFsc2U7CiAgIGNvbnN0IGJvb2wgc3J0
cF9yZXF1aXJlZF8gPSB0cnVlOwotICBydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnNf
OworICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnNfOwogCiAgIC8vIE1lZGlh
Q2hhbm5lbCByZWxhdGVkIG1lbWJlcnMgdGhhdCBzaG91bGQgYmUgYWNjZXNzZWQgZnJvbSB0aGUg
d29ya2VyCiAgIC8vIHRocmVhZC4KQEAgLTM0Myw3ICszNjEsNyBAQCBjbGFzcyBWb2ljZUNoYW5u
ZWwgOiBwdWJsaWMgQmFzZUNoYW5uZWwgewogICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFZvaWNlTWVkaWFDaGFubmVsPiBjaGFubmVsLAogICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAgICAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwK
LSAgICAgICAgICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucyk7CisgICAg
ICAgICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpOwogICB+Vm9p
Y2VDaGFubmVsKCk7CiAKICAgLy8gZG93bmNhc3RzIGEgTWVkaWFDaGFubmVsCkBAIC0zNTEsMTAg
KzM2OSw5IEBAIGNsYXNzIFZvaWNlQ2hhbm5lbCA6IHB1YmxpYyBCYXNlQ2hhbm5lbCB7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFZvaWNlTWVkaWFDaGFubmVsKj4oQmFzZUNoYW5uZWw6Om1lZGlh
X2NoYW5uZWwoKSk7CiAgIH0KIAotICB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgR2V0UnRwU2VuZFBh
cmFtZXRlcnNfdyh1aW50MzJfdCBzc3JjKSBjb25zdDsKLSAgd2VicnRjOjpSVENFcnJvciBTZXRS
dHBTZW5kUGFyYW1ldGVyc193KHVpbnQzMl90IHNzcmMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyk7Ci0g
IGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gY3JpY2tl
dDo6TUVESUFfVFlQRV9BVURJTzsgfQorICBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsKKyAgICByZXR1cm4gY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzsK
KyAgfQogCiAgcHJpdmF0ZToKICAgLy8gb3ZlcnJpZGVzIGZyb20gQmFzZUNoYW5uZWwKQEAgLTM4
Myw3ICs0MDAsNyBAQCBjbGFzcyBWaWRlb0NoYW5uZWwgOiBwdWJsaWMgQmFzZUNoYW5uZWwgewog
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBtZWRpYV9j
aGFubmVsLAogICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwK
ICAgICAgICAgICAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgICAgICAgICAgIHJ0Yzo6
Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucyk7CisgICAgICAgICAgICAgICB3ZWJydGM6OkNy
eXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpOwogICB+VmlkZW9DaGFubmVsKCk7CiAKICAgLy8g
ZG93bmNhc3RzIGEgTWVkaWFDaGFubmVsCkBAIC0zOTMsNyArNDEwLDkgQEAgY2xhc3MgVmlkZW9D
aGFubmVsIDogcHVibGljIEJhc2VDaGFubmVsIHsKIAogICB2b2lkIEZpbGxCaXRyYXRlSW5mbyhC
YW5kd2lkdGhFc3RpbWF0aW9uSW5mbyogYndlX2luZm8pOwogCi0gIGNyaWNrZXQ6Ok1lZGlhVHlw
ZSBtZWRpYV90eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gY3JpY2tldDo6TUVESUFfVFlQRV9WSURF
TzsgfQorICBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsK
KyAgICByZXR1cm4gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKKyAgfQogCiAgcHJpdmF0ZToK
ICAgLy8gb3ZlcnJpZGVzIGZyb20gQmFzZUNoYW5uZWwKQEAgLTQyMiw3ICs0NDEsNyBAQCBjbGFz
cyBSdHBEYXRhQ2hhbm5lbCA6IHB1YmxpYyBCYXNlQ2hhbm5lbCB7CiAgICAgICAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxEYXRhTWVkaWFDaGFubmVsPiBjaGFubmVsLAogICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAogICAgICAgICAgICAgICAgICBi
b29sIHNydHBfcmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBj
cnlwdG9fb3B0aW9ucyk7CisgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBj
cnlwdG9fb3B0aW9ucyk7CiAgIH5SdHBEYXRhQ2hhbm5lbCgpOwogICAvLyBUT0RPKHpoaWh1YW5n
KTogUmVtb3ZlIHRoaXMgb25jZSB0aGUgUnRwVHJhbnNwb3J0IGNhbiBiZSBzaGFyZWQgYmV0d2Vl
bgogICAvLyBCYXNlQ2hhbm5lbHMuCkBAIC00NDUsNyArNDY0LDkgQEAgY2xhc3MgUnRwRGF0YUNo
YW5uZWwgOiBwdWJsaWMgQmFzZUNoYW5uZWwgewogICAvLyBUaGF0IG9jY3VycyB3aGVuIHRoZSBj
aGFubmVsIGlzIGVuYWJsZWQsIHRoZSB0cmFuc3BvcnQgaXMgd3JpdGFibGUsCiAgIC8vIGJvdGgg
bG9jYWwgYW5kIHJlbW90ZSBkZXNjcmlwdGlvbnMgYXJlIHNldCwgYW5kIHRoZSBjaGFubmVsIGlz
IHVuYmxvY2tlZC4KICAgc2lnc2xvdDo6c2lnbmFsMTxib29sPiBTaWduYWxSZWFkeVRvU2VuZERh
dGE7Ci0gIGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4g
Y3JpY2tldDo6TUVESUFfVFlQRV9EQVRBOyB9CisgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90
eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgIHJldHVybiBjcmlja2V0OjpNRURJQV9UWVBFX0RB
VEE7CisgIH0KIAogIHByb3RlY3RlZDoKICAgLy8gZG93bmNhc3RzIGEgTWVkaWFDaGFubmVsLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
Y2hhbm5lbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL2NoYW5uZWxfdW5pdHRlc3QuY2MKaW5kZXggNThjYjE3YjhiYmY1ZGQxZjdjYmU0
MDBmYzVjNWQ1MDA5YzZkNzJiNy4uNWQ0ZDRjN2Y5ZTAwNGU1NmQ1ZWNiOGFmMjA3NjgwYjlkYTky
NjMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvY2hhbm5lbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsX3VuaXR0ZXN0LmNjCkBAIC0xNSw3ICsxNSw2IEBA
CiAjaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKICNpbmNsdWRlICJtZWRp
YS9iYXNlL2Zha2VydHAuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY2hhbm5lbC5oIgot
I2luY2x1ZGUgIm1lZGlhL2Jhc2UvdGVzdHV0aWxzLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvZmFr
ZWNhbmRpZGF0ZXBhaXIuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9mYWtlZHRsc3RyYW5zcG9ydC5o
IgogI2luY2x1ZGUgInAycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaCIKQEAgLTI1MCw4ICsy
NDksOCBAQCBjbGFzcyBDaGFubmVsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMg
c2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFk
ID0gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKTsKICAgICBhdXRvIGNoYW5uZWwgPSBhYnNsOjptYWtl
X3VuaXF1ZTx0eXBlbmFtZSBUOjpDaGFubmVsPigKICAgICAgICAgd29ya2VyX3RocmVhZCwgbmV0
d29ya190aHJlYWQsIHNpZ25hbGluZ190aHJlYWQsIGVuZ2luZSwgc3RkOjptb3ZlKGNoKSwKLSAg
ICAgICAgY3JpY2tldDo6Q05fQVVESU8sIChmbGFncyAmIERUTFMpICE9IDAsIHJ0Yzo6Q3J5cHRv
T3B0aW9ucygpKTsKLSAgICBjaGFubmVsLT5Jbml0X3cocnRwX3RyYW5zcG9ydCk7CisgICAgICAg
IGNyaWNrZXQ6OkNOX0FVRElPLCAoZmxhZ3MgJiBEVExTKSAhPSAwLCB3ZWJydGM6OkNyeXB0b09w
dGlvbnMoKSk7CisgICAgY2hhbm5lbC0+SW5pdF93KHJ0cF90cmFuc3BvcnQsIC8qbWVkaWFfdHJh
bnNwb3J0PSovbnVsbHB0cik7CiAgICAgcmV0dXJuIGNoYW5uZWw7CiAgIH0KIApAQCAtNTc3LDYg
KzU3NiwzNyBAQCBjbGFzcyBDaGFubmVsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJs
aWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgICBDb2RlY01hdGNoZXMoY29udGVudC5j
b2RlY3MoKVswXSwgbWVkaWFfY2hhbm5lbDFfLT5jb2RlY3MoKVswXSkpOwogICB9CiAKKyAgLy8g
VGVzdCB0aGF0IFNldExvY2FsQ29udGVudCBhbmQgU2V0UmVtb3RlQ29udGVudCBwcm9wZXJseSBj
b25maWd1cmUKKyAgLy8gZXh0bWFwLWFsbG93LW1peGVkLgorICB2b2lkIFRlc3RTZXRDb250ZW50
c0V4dG1hcEFsbG93TWl4ZWRDYWxsZXIoYm9vbCBvZmZlciwgYm9vbCBhbnN3ZXIpIHsKKyAgICAv
LyBGb3IgYSBjYWxsZXIsIFNldExvY2FsQ29udGVudCgpIGlzIGNhbGxlZCBmaXJzdCB3aXRoIGFu
IG9mZmVyIGFuZCBuZXh0CisgICAgLy8gU2V0UmVtb3RlQ29udGVudCgpIGlzIGNhbGxlZCB3aXRo
IHRoZSBhbnN3ZXIuCisgICAgQ3JlYXRlQ2hhbm5lbHMoMCwgMCk7CisgICAgdHlwZW5hbWUgVDo6
Q29udGVudCBjb250ZW50OworICAgIENyZWF0ZUNvbnRlbnQoMCwga1BjbXVDb2RlYywga0gyNjRD
b2RlYywgJmNvbnRlbnQpOworICAgIGF1dG8gb2ZmZXJfZW51bSA9IG9mZmVyID8gKFQ6OkNvbnRl
bnQ6OmtTZXNzaW9uKSA6IChUOjpDb250ZW50OjprTm8pOworICAgIGF1dG8gYW5zd2VyX2VudW0g
PSBhbnN3ZXIgPyAoVDo6Q29udGVudDo6a1Nlc3Npb24pIDogKFQ6OkNvbnRlbnQ6OmtObyk7Cisg
ICAgY29udGVudC5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0ob2ZmZXJfZW51bSk7CisgICAg
RVhQRUNUX1RSVUUoY2hhbm5lbDFfLT5TZXRMb2NhbENvbnRlbnQoJmNvbnRlbnQsIFNkcFR5cGU6
OmtPZmZlciwgTlVMTCkpOworICAgIGNvbnRlbnQuc2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVt
KGFuc3dlcl9lbnVtKTsKKyAgICBFWFBFQ1RfVFJVRShjaGFubmVsMV8tPlNldFJlbW90ZUNvbnRl
bnQoJmNvbnRlbnQsIFNkcFR5cGU6OmtBbnN3ZXIsIE5VTEwpKTsKKyAgICBFWFBFQ1RfRVEoYW5z
d2VyLCBtZWRpYV9jaGFubmVsMV8tPkV4dG1hcEFsbG93TWl4ZWQoKSk7CisgIH0KKyAgdm9pZCBU
ZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVlKGJvb2wgb2ZmZXIsIGJvb2wgYW5z
d2VyKSB7CisgICAgLy8gRm9yIGEgY2FsbGVlLCBTZXRSZW1vdGVDb250ZW50KCkgaXMgY2FsbGVk
IGZpcnN0IHdpdGggYW4gb2ZmZXIgYW5kIG5leHQKKyAgICAvLyBTZXRMb2NhbENvbnRlbnQoKSBp
cyBjYWxsZWQgd2l0aCB0aGUgYW5zd2VyLgorICAgIENyZWF0ZUNoYW5uZWxzKDAsIDApOworICAg
IHR5cGVuYW1lIFQ6OkNvbnRlbnQgY29udGVudDsKKyAgICBDcmVhdGVDb250ZW50KDAsIGtQY211
Q29kZWMsIGtIMjY0Q29kZWMsICZjb250ZW50KTsKKyAgICBhdXRvIG9mZmVyX2VudW0gPSBvZmZl
ciA/IChUOjpDb250ZW50OjprU2Vzc2lvbikgOiAoVDo6Q29udGVudDo6a05vKTsKKyAgICBhdXRv
IGFuc3dlcl9lbnVtID0gYW5zd2VyID8gKFQ6OkNvbnRlbnQ6OmtTZXNzaW9uKSA6IChUOjpDb250
ZW50OjprTm8pOworICAgIGNvbnRlbnQuc2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKG9mZmVy
X2VudW0pOworICAgIEVYUEVDVF9UUlVFKGNoYW5uZWwxXy0+U2V0UmVtb3RlQ29udGVudCgmY29u
dGVudCwgU2RwVHlwZTo6a09mZmVyLCBOVUxMKSk7CisgICAgY29udGVudC5zZXRfZXh0bWFwX2Fs
bG93X21peGVkX2VudW0oYW5zd2VyX2VudW0pOworICAgIEVYUEVDVF9UUlVFKGNoYW5uZWwxXy0+
U2V0TG9jYWxDb250ZW50KCZjb250ZW50LCBTZHBUeXBlOjprQW5zd2VyLCBOVUxMKSk7CisgICAg
RVhQRUNUX0VRKGFuc3dlciwgbWVkaWFfY2hhbm5lbDFfLT5FeHRtYXBBbGxvd01peGVkKCkpOwor
ICB9CisKICAgLy8gVGVzdCB0aGF0IFNldExvY2FsQ29udGVudCBhbmQgU2V0UmVtb3RlQ29udGVu
dCBwcm9wZXJseSBkZWFscwogICAvLyB3aXRoIGFuIGVtcHR5IG9mZmVyLgogICB2b2lkIFRlc3RT
ZXRDb250ZW50c051bGxPZmZlcigpIHsKQEAgLTE1NDUsOCArMTU3NSw4IEBAIHN0ZDo6dW5pcXVl
X3B0cjxjcmlja2V0OjpWaWRlb0NoYW5uZWw+IENoYW5uZWxUZXN0PFZpZGVvVHJhaXRzPjo6Q3Jl
YXRlQ2hhbm5lbCgKICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQgPSBydGM6OlRocmVh
ZDo6Q3VycmVudCgpOwogICBhdXRvIGNoYW5uZWwgPSBhYnNsOjptYWtlX3VuaXF1ZTxjcmlja2V0
OjpWaWRlb0NoYW5uZWw+KAogICAgICAgd29ya2VyX3RocmVhZCwgbmV0d29ya190aHJlYWQsIHNp
Z25hbGluZ190aHJlYWQsIHN0ZDo6bW92ZShjaCksCi0gICAgICBjcmlja2V0OjpDTl9WSURFTywg
KGZsYWdzICYgRFRMUykgIT0gMCwgcnRjOjpDcnlwdG9PcHRpb25zKCkpOwotICBjaGFubmVsLT5J
bml0X3cocnRwX3RyYW5zcG9ydCk7CisgICAgICBjcmlja2V0OjpDTl9WSURFTywgKGZsYWdzICYg
RFRMUykgIT0gMCwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpOworICBjaGFubmVsLT5Jbml0X3co
cnRwX3RyYW5zcG9ydCwgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgcmV0dXJuIGNo
YW5uZWw7CiB9CiAKQEAgLTE2MTUsNiArMTY0NSwyNCBAQCBURVNUX0YoVm9pY2VDaGFubmVsU2lu
Z2xlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzKSB7CiAgIEJhc2U6OlRlc3RTZXRDb250ZW50
cygpOwogfQogCitURVNUX0YoVm9pY2VDaGFubmVsU2luZ2xlVGhyZWFkVGVzdCwgVGVzdFNldENv
bnRlbnRzRXh0bWFwQWxsb3dNaXhlZEFzQ2FsbGVyKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50
c0V4dG1hcEFsbG93TWl4ZWRDYWxsZXIoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovdHJ1ZSk7
Cit9CisKK1RFU1RfRihWb2ljZUNoYW5uZWxTaW5nbGVUaHJlYWRUZXN0LAorICAgICAgIFRlc3RT
ZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWROb3RTdXBwb3J0ZWRBc0NhbGxlcikgeworICBCYXNl
OjpUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVyKC8qb2ZmZXI9Ki90cnVlLCAv
KmFuc3dlcj0qL2ZhbHNlKTsKK30KKworVEVTVF9GKFZvaWNlQ2hhbm5lbFNpbmdsZVRocmVhZFRl
c3QsIFRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRBc0NhbGxlZSkgeworICBCYXNlOjpU
ZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVlKC8qb2ZmZXI9Ki90cnVlLCAvKmFu
c3dlcj0qL3RydWUpOworfQorCitURVNUX0YoVm9pY2VDaGFubmVsU2luZ2xlVGhyZWFkVGVzdCwK
KyAgICAgICBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkTm90U3VwcG9ydGVkQXNDYWxs
ZWUpIHsKKyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlZSgvKm9m
ZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki9mYWxzZSk7Cit9CisKIFRFU1RfRihWb2ljZUNoYW5uZWxT
aW5nbGVUaHJlYWRUZXN0LCBUZXN0U2V0Q29udGVudHNOdWxsT2ZmZXIpIHsKICAgQmFzZTo6VGVz
dFNldENvbnRlbnRzTnVsbE9mZmVyKCk7CiB9CkBAIC0xNzUwLDYgKzE3OTgsMjQgQEAgVEVTVF9G
KFZvaWNlQ2hhbm5lbERvdWJsZVRocmVhZFRlc3QsIFRlc3RTZXRDb250ZW50cykgewogICBCYXNl
OjpUZXN0U2V0Q29udGVudHMoKTsKIH0KIAorVEVTVF9GKFZvaWNlQ2hhbm5lbERvdWJsZVRocmVh
ZFRlc3QsIFRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRBc0NhbGxlcikgeworICBCYXNl
OjpUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVyKC8qb2ZmZXI9Ki90cnVlLCAv
KmFuc3dlcj0qL3RydWUpOworfQorCitURVNUX0YoVm9pY2VDaGFubmVsRG91YmxlVGhyZWFkVGVz
dCwKKyAgICAgICBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkTm90U3VwcG9ydGVkQXND
YWxsZXIpIHsKKyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlcigv
Km9mZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki9mYWxzZSk7Cit9CisKK1RFU1RfRihWb2ljZUNoYW5u
ZWxEb3VibGVUaHJlYWRUZXN0LCBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQXNDYWxs
ZWUpIHsKKyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlZSgvKm9m
ZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki90cnVlKTsKK30KKworVEVTVF9GKFZvaWNlQ2hhbm5lbERv
dWJsZVRocmVhZFRlc3QsCisgICAgICAgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZE5v
dFN1cHBvcnRlZEFzQ2FsbGVlKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93
TWl4ZWRDYWxsZWUoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovZmFsc2UpOworfQorCiBURVNU
X0YoVm9pY2VDaGFubmVsRG91YmxlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzTnVsbE9mZmVy
KSB7CiAgIEJhc2U6OlRlc3RTZXRDb250ZW50c051bGxPZmZlcigpOwogfQpAQCAtMTg4Myw2ICsx
OTQ5LDI0IEBAIFRFU1RfRihWaWRlb0NoYW5uZWxTaW5nbGVUaHJlYWRUZXN0LCBUZXN0U2V0Q29u
dGVudHMpIHsKICAgQmFzZTo6VGVzdFNldENvbnRlbnRzKCk7CiB9CiAKK1RFU1RfRihWaWRlb0No
YW5uZWxTaW5nbGVUaHJlYWRUZXN0LCBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQXND
YWxsZXIpIHsKKyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlcigv
Km9mZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki90cnVlKTsKK30KKworVEVTVF9GKFZpZGVvQ2hhbm5l
bFNpbmdsZVRocmVhZFRlc3QsCisgICAgICAgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhl
ZE5vdFN1cHBvcnRlZEFzQ2FsbGVyKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFs
bG93TWl4ZWRDYWxsZXIoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovZmFsc2UpOworfQorCitU
RVNUX0YoVmlkZW9DaGFubmVsU2luZ2xlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzRXh0bWFw
QWxsb3dNaXhlZEFzQ2FsbGVlKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93
TWl4ZWRDYWxsZWUoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovdHJ1ZSk7Cit9CisKK1RFU1Rf
RihWaWRlb0NoYW5uZWxTaW5nbGVUaHJlYWRUZXN0LAorICAgICAgIFRlc3RTZXRDb250ZW50c0V4
dG1hcEFsbG93TWl4ZWROb3RTdXBwb3J0ZWRBc0NhbGxlZSkgeworICBCYXNlOjpUZXN0U2V0Q29u
dGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVlKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL2Zh
bHNlKTsKK30KKwogVEVTVF9GKFZpZGVvQ2hhbm5lbFNpbmdsZVRocmVhZFRlc3QsIFRlc3RTZXRD
b250ZW50c051bGxPZmZlcikgewogICBCYXNlOjpUZXN0U2V0Q29udGVudHNOdWxsT2ZmZXIoKTsK
IH0KQEAgLTIwMTYsNiArMjEwMCwyNCBAQCBURVNUX0YoVmlkZW9DaGFubmVsRG91YmxlVGhyZWFk
VGVzdCwgVGVzdFNldENvbnRlbnRzKSB7CiAgIEJhc2U6OlRlc3RTZXRDb250ZW50cygpOwogfQog
CitURVNUX0YoVmlkZW9DaGFubmVsRG91YmxlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzRXh0
bWFwQWxsb3dNaXhlZEFzQ2FsbGVyKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFs
bG93TWl4ZWRDYWxsZXIoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovdHJ1ZSk7Cit9CisKK1RF
U1RfRihWaWRlb0NoYW5uZWxEb3VibGVUaHJlYWRUZXN0LAorICAgICAgIFRlc3RTZXRDb250ZW50
c0V4dG1hcEFsbG93TWl4ZWROb3RTdXBwb3J0ZWRBc0NhbGxlcikgeworICBCYXNlOjpUZXN0U2V0
Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVyKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0q
L2ZhbHNlKTsKK30KKworVEVTVF9GKFZpZGVvQ2hhbm5lbERvdWJsZVRocmVhZFRlc3QsIFRlc3RT
ZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRBc0NhbGxlZSkgeworICBCYXNlOjpUZXN0U2V0Q29u
dGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVlKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL3Ry
dWUpOworfQorCitURVNUX0YoVmlkZW9DaGFubmVsRG91YmxlVGhyZWFkVGVzdCwKKyAgICAgICBU
ZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkTm90U3VwcG9ydGVkQXNDYWxsZWUpIHsKKyAg
QmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlZSgvKm9mZmVyPSovdHJ1
ZSwgLyphbnN3ZXI9Ki9mYWxzZSk7Cit9CisKIFRFU1RfRihWaWRlb0NoYW5uZWxEb3VibGVUaHJl
YWRUZXN0LCBUZXN0U2V0Q29udGVudHNOdWxsT2ZmZXIpIHsKICAgQmFzZTo6VGVzdFNldENvbnRl
bnRzTnVsbE9mZmVyKCk7CiB9CkBAIC0yMTY0LDcgKzIyNjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Y3JpY2tldDo6UnRwRGF0YUNoYW5uZWw+IENoYW5uZWxUZXN0PERhdGFUcmFpdHM+OjpDcmVhdGVD
aGFubmVsKAogICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCA9IHJ0Yzo6VGhyZWFkOjpD
dXJyZW50KCk7CiAgIGF1dG8gY2hhbm5lbCA9IGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OlJ0
cERhdGFDaGFubmVsPigKICAgICAgIHdvcmtlcl90aHJlYWQsIG5ldHdvcmtfdGhyZWFkLCBzaWdu
YWxpbmdfdGhyZWFkLCBzdGQ6Om1vdmUoY2gpLAotICAgICAgY3JpY2tldDo6Q05fREFUQSwgKGZs
YWdzICYgRFRMUykgIT0gMCwgcnRjOjpDcnlwdG9PcHRpb25zKCkpOworICAgICAgY3JpY2tldDo6
Q05fREFUQSwgKGZsYWdzICYgRFRMUykgIT0gMCwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpOwog
ICBjaGFubmVsLT5Jbml0X3cocnRwX3RyYW5zcG9ydCk7CiAgIHJldHVybiBjaGFubmVsOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
Y2hhbm5lbGludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvY2hhbm5lbGludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlNDEwOWEwNDU0MmY1MzU2
NTZiZGE0MTJlOTJlNjUyMjM3MTYxYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsaW50ZXJmYWNlLmgKQEAgLTAs
MCArMSw2OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBQQ19DSEFOTkVMSU5URVJG
QUNFX0hfCisjZGVmaW5lIFBDX0NIQU5ORUxJTlRFUkZBQ0VfSF8KKworI2luY2x1ZGUgPHN0cmlu
Zz4KKworI2luY2x1ZGUgImFwaS9qc2VwLmgiCisjaW5jbHVkZSAiYXBpL21lZGlhdHlwZXMuaCIK
KyNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY2hhbm5lbC5oIgorI2luY2x1ZGUgInBjL3J0cHRy
YW5zcG9ydGludGVybmFsLmgiCisKK25hbWVzcGFjZSBjcmlja2V0IHsKKworY2xhc3MgTWVkaWFD
b250ZW50RGVzY3JpcHRpb247CisKKy8vIENoYW5uZWxJbnRlcmZhY2UgY29udGFpbnMgbWV0aG9k
cyBjb21tb24gdG8gdm9pY2UsIHZpZGVvIGFuZCBkYXRhIGNoYW5uZWxzLgorLy8gQXMgbW9yZSBt
ZXRob2RzIGFyZSBhZGRlZCB0byBCYXNlQ2hhbm5lbCwgdGhleSBzaG91bGQgYmUgaW5jbHVkZWQg
aW4gdGhlCisvLyBpbnRlcmZhY2UgYXMgd2VsbC4KK2NsYXNzIENoYW5uZWxJbnRlcmZhY2Ugewor
IHB1YmxpYzoKKyAgdmlydHVhbCBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgpIGNvbnN0
ID0gMDsKKworICB2aXJ0dWFsIE1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCgpIGNvbnN0ID0g
MDsKKworICAvLyBUT0RPKGRlYWRiZWVmKTogVGhpcyBpcyByZWR1bmRhbnQ7IHJlbW92ZSB0aGlz
LgorICB2aXJ0dWFsIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSgpIGNvbnN0ID0g
MDsKKworICB2aXJ0dWFsIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUoKSBjb25zdCA9
IDA7CisKKyAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCA9IDA7CisKKyAgLy8gRW5hYmxl
cyBvciBkaXNhYmxlcyB0aGlzIGNoYW5uZWwKKyAgdmlydHVhbCBib29sIEVuYWJsZShib29sIGVu
YWJsZSkgPSAwOworCisgIC8vIFVzZWQgZm9yIGxhdGVuY3kgbWVhc3VyZW1lbnRzLgorICB2aXJ0
dWFsIHNpZ3Nsb3Q6OnNpZ25hbDE8Q2hhbm5lbEludGVyZmFjZSo+JiBTaWduYWxGaXJzdFBhY2tl
dFJlY2VpdmVkKCkgPSAwOworCisgIC8vIENoYW5uZWwgY29udHJvbAorICB2aXJ0dWFsIGJvb2wg
U2V0TG9jYWxDb250ZW50KGNvbnN0IE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBjb250ZW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6U2RwVHlwZSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnJvcl9kZXNjKSA9IDA7
CisgIHZpcnR1YWwgYm9vbCBTZXRSZW1vdGVDb250ZW50KGNvbnN0IE1lZGlhQ29udGVudERlc2Ny
aXB0aW9uKiBjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6
OlNkcFR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmcqIGVycm9yX2Rlc2MpID0gMDsKKworICAvLyBTZXQgYW4gUlRQIGxldmVsIHRyYW5zcG9ydC4K
KyAgLy8gU29tZSBleGFtcGxlczoKKyAgLy8gICAqIEFuIFJ0cFRyYW5zcG9ydCB3aXRob3V0IGVu
Y3J5cHRpb24uCisgIC8vICAgKiBBbiBTcnRwVHJhbnNwb3J0IGZvciBTREVTLgorICAvLyAgICog
QSBEdGxzU3J0cFRyYW5zcG9ydCBmb3IgRFRMUy1TUlRQLgorICB2aXJ0dWFsIGJvb2wgU2V0UnRw
VHJhbnNwb3J0KHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQpID0g
MDsKKworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB+Q2hhbm5lbEludGVyZmFjZSgpID0gZGVmYXVs
dDsKK307CisKK30gIC8vIG5hbWVzcGFjZSBjcmlja2V0CisKKyNlbmRpZiAgLy8gUENfQ0hBTk5F
TElOVEVSRkFDRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvY2hhbm5lbG1hbmFnZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5jYwppbmRleCBkYWI2MjJhZDcw
ZTQyZjA3OWZiNDMwZDJlOTAxZmNhOWRkNDk5MjNjLi5lZGE1YTJkZDU3OTIyY2JkN2FlNGZlODQ5
ODJjYTdlZjA4ZGZlYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5jYwpAQCAtMTQsMTAg
KzE0LDEwIEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1lZGlh
L2Jhc2UvcnRwZGF0YWVuZ2luZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGls
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50LmgiCiAKIG5hbWVzcGFjZSBjcmlj
a2V0IHsKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBDaGFubmVsTWFuYWdlcjo6R2V0U3VwcG9ydGVk
QXVkaW9TZW5kQ29kZWNzKAogICBpZiAoIW1lZGlhX2VuZ2luZV8pIHsKICAgICByZXR1cm47CiAg
IH0KLSAgKmNvZGVjcyA9IG1lZGlhX2VuZ2luZV8tPmF1ZGlvX3NlbmRfY29kZWNzKCk7CisgICpj
b2RlY3MgPSBtZWRpYV9lbmdpbmVfLT52b2ljZSgpLnNlbmRfY29kZWNzKCk7CiB9CiAKIHZvaWQg
Q2hhbm5lbE1hbmFnZXI6OkdldFN1cHBvcnRlZEF1ZGlvUmVjZWl2ZUNvZGVjcygKQEAgLTc0LDcg
Kzc0LDcgQEAgdm9pZCBDaGFubmVsTWFuYWdlcjo6R2V0U3VwcG9ydGVkQXVkaW9SZWNlaXZlQ29k
ZWNzKAogICBpZiAoIW1lZGlhX2VuZ2luZV8pIHsKICAgICByZXR1cm47CiAgIH0KLSAgKmNvZGVj
cyA9IG1lZGlhX2VuZ2luZV8tPmF1ZGlvX3JlY3ZfY29kZWNzKCk7CisgICpjb2RlY3MgPSBtZWRp
YV9lbmdpbmVfLT52b2ljZSgpLnJlY3ZfY29kZWNzKCk7CiB9CiAKIHZvaWQgQ2hhbm5lbE1hbmFn
ZXI6OkdldFN1cHBvcnRlZEF1ZGlvUnRwSGVhZGVyRXh0ZW5zaW9ucygKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBDaGFubmVsTWFuYWdlcjo6R2V0U3VwcG9ydGVkQXVkaW9SdHBIZWFkZXJFeHRlbnNp
b25zKAogICBpZiAoIW1lZGlhX2VuZ2luZV8pIHsKICAgICByZXR1cm47CiAgIH0KLSAgKmV4dCA9
IG1lZGlhX2VuZ2luZV8tPkdldEF1ZGlvQ2FwYWJpbGl0aWVzKCkuaGVhZGVyX2V4dGVuc2lvbnM7
CisgICpleHQgPSBtZWRpYV9lbmdpbmVfLT52b2ljZSgpLkdldENhcGFiaWxpdGllcygpLmhlYWRl
cl9leHRlbnNpb25zOwogfQogCiB2b2lkIENoYW5uZWxNYW5hZ2VyOjpHZXRTdXBwb3J0ZWRWaWRl
b0NvZGVjcygKQEAgLTkyLDEwICs5MiwxMCBAQCB2b2lkIENoYW5uZWxNYW5hZ2VyOjpHZXRTdXBw
b3J0ZWRWaWRlb0NvZGVjcygKICAgfQogICBjb2RlY3MtPmNsZWFyKCk7CiAKLSAgc3RkOjp2ZWN0
b3I8VmlkZW9Db2RlYz4gdmlkZW9fY29kZWNzID0gbWVkaWFfZW5naW5lXy0+dmlkZW9fY29kZWNz
KCk7CisgIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IHZpZGVvX2NvZGVjcyA9IG1lZGlhX2VuZ2lu
ZV8tPnZpZGVvKCkuY29kZWNzKCk7CiAgIGZvciAoY29uc3QgYXV0byYgdmlkZW9fY29kZWMgOiB2
aWRlb19jb2RlY3MpIHsKICAgICBpZiAoIWVuYWJsZV9ydHhfICYmCi0gICAgICAgIF9zdHJpY21w
KGtSdHhDb2RlY05hbWUsIHZpZGVvX2NvZGVjLm5hbWUuY19zdHIoKSkgPT0gMCkgeworICAgICAg
ICBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGtSdHhDb2RlY05hbWUsIHZpZGVvX2NvZGVjLm5hbWUp
KSB7CiAgICAgICBjb250aW51ZTsKICAgICB9CiAgICAgY29kZWNzLT5wdXNoX2JhY2sodmlkZW9f
Y29kZWMpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ2hhbm5lbE1hbmFnZXI6OkdldFN1cHBv
cnRlZFZpZGVvUnRwSGVhZGVyRXh0ZW5zaW9ucygKICAgaWYgKCFtZWRpYV9lbmdpbmVfKSB7CiAg
ICAgcmV0dXJuOwogICB9Ci0gICpleHQgPSBtZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NhcGFiaWxp
dGllcygpLmhlYWRlcl9leHRlbnNpb25zOworICAqZXh0ID0gbWVkaWFfZW5naW5lXy0+dmlkZW8o
KS5HZXRDYXBhYmlsaXRpZXMoKS5oZWFkZXJfZXh0ZW5zaW9uczsKIH0KIAogdm9pZCBDaGFubmVs
TWFuYWdlcjo6R2V0U3VwcG9ydGVkRGF0YUNvZGVjcygKQEAgLTE1NiwxNiArMTU2LDE3IEBAIFZv
aWNlQ2hhbm5lbCogQ2hhbm5lbE1hbmFnZXI6OkNyZWF0ZVZvaWNlQ2hhbm5lbCgKICAgICB3ZWJy
dGM6OkNhbGwqIGNhbGwsCiAgICAgY29uc3QgY3JpY2tldDo6TWVkaWFDb25maWcmIG1lZGlhX2Nv
bmZpZywKICAgICB3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0LAor
ICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCwKICAg
ICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
Y29udGVudF9uYW1lLAogICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICBjb25zdCBydGM6OkNy
eXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0
aW9ucyYgY3J5cHRvX29wdGlvbnMsCiAgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKSB7
CiAgIGlmICghd29ya2VyX3RocmVhZF8tPklzQ3VycmVudCgpKSB7CiAgICAgcmV0dXJuIHdvcmtl
cl90aHJlYWRfLT5JbnZva2U8Vm9pY2VDaGFubmVsKj4oUlRDX0ZST01fSEVSRSwgWyZdIHsKICAg
ICAgIHJldHVybiBDcmVhdGVWb2ljZUNoYW5uZWwoY2FsbCwgbWVkaWFfY29uZmlnLCBydHBfdHJh
bnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxpbmdfdGhyZWFk
LCBjb250ZW50X25hbWUsIHNydHBfcmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyeXB0b19vcHRpb25zLCBvcHRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVkaWFfdHJhbnNwb3J0LCBzaWduYWxpbmdfdGhyZWFkLCBjb250ZW50X25hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNydHBfcmVxdWlyZWQsIGNyeXB0b19v
cHRpb25zLCBvcHRpb25zKTsKICAgICB9KTsKICAgfQogCkBAIC0xNzYsOCArMTc3LDggQEAgVm9p
Y2VDaGFubmVsKiBDaGFubmVsTWFuYWdlcjo6Q3JlYXRlVm9pY2VDaGFubmVsKAogICAgIHJldHVy
biBudWxscHRyOwogICB9CiAKLSAgVm9pY2VNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwgPQot
ICAgICAgbWVkaWFfZW5naW5lXy0+Q3JlYXRlQ2hhbm5lbChjYWxsLCBtZWRpYV9jb25maWcsIG9w
dGlvbnMpOworICBWb2ljZU1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCA9IG1lZGlhX2VuZ2lu
ZV8tPnZvaWNlKCkuQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbCwgbWVkaWFfY29uZmln
LCBvcHRpb25zLCBjcnlwdG9fb3B0aW9ucyk7CiAgIGlmICghbWVkaWFfY2hhbm5lbCkgewogICAg
IHJldHVybiBudWxscHRyOwogICB9CkBAIC0xODcsNyArMTg4LDcgQEAgVm9pY2VDaGFubmVsKiBD
aGFubmVsTWFuYWdlcjo6Q3JlYXRlVm9pY2VDaGFubmVsKAogICAgICAgYWJzbDo6V3JhcFVuaXF1
ZShtZWRpYV9jaGFubmVsKSwgY29udGVudF9uYW1lLCBzcnRwX3JlcXVpcmVkLAogICAgICAgY3J5
cHRvX29wdGlvbnMpOwogCi0gIHZvaWNlX2NoYW5uZWwtPkluaXRfdyhydHBfdHJhbnNwb3J0KTsK
KyAgdm9pY2VfY2hhbm5lbC0+SW5pdF93KHJ0cF90cmFuc3BvcnQsIG1lZGlhX3RyYW5zcG9ydCk7
CiAKICAgVm9pY2VDaGFubmVsKiB2b2ljZV9jaGFubmVsX3B0ciA9IHZvaWNlX2NoYW5uZWwuZ2V0
KCk7CiAgIHZvaWNlX2NoYW5uZWxzXy5wdXNoX2JhY2soc3RkOjptb3ZlKHZvaWNlX2NoYW5uZWwp
KTsKQEAgLTIyNiw3ICsyMjcsNyBAQCBWaWRlb0NoYW5uZWwqIENoYW5uZWxNYW5hZ2VyOjpDcmVh
dGVWaWRlb0NoYW5uZWwoCiAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCiAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICBib29sIHNydHBfcmVxdWlyZWQs
Ci0gICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBjb25z
dCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAgIGNvbnN0IFZpZGVv
T3B0aW9ucyYgb3B0aW9ucykgewogICBpZiAoIXdvcmtlcl90aHJlYWRfLT5Jc0N1cnJlbnQoKSkg
ewogICAgIHJldHVybiB3b3JrZXJfdGhyZWFkXy0+SW52b2tlPFZpZGVvQ2hhbm5lbCo+KFJUQ19G
Uk9NX0hFUkUsIFsmXSB7CkBAIC0yNDMsOCArMjQ0LDggQEAgVmlkZW9DaGFubmVsKiBDaGFubmVs
TWFuYWdlcjo6Q3JlYXRlVmlkZW9DaGFubmVsKAogICAgIHJldHVybiBudWxscHRyOwogICB9CiAK
LSAgVmlkZW9NZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwgPQotICAgICAgbWVkaWFfZW5naW5l
Xy0+Q3JlYXRlVmlkZW9DaGFubmVsKGNhbGwsIG1lZGlhX2NvbmZpZywgb3B0aW9ucyk7CisgIFZp
ZGVvTWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsID0gbWVkaWFfZW5naW5lXy0+dmlkZW8oKS5D
cmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICBjYWxsLCBtZWRpYV9jb25maWcsIG9wdGlvbnMsIGNy
eXB0b19vcHRpb25zKTsKICAgaWYgKCFtZWRpYV9jaGFubmVsKSB7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiAgIH0KQEAgLTI1Myw3ICsyNTQsOSBAQCBWaWRlb0NoYW5uZWwqIENoYW5uZWxNYW5hZ2Vy
OjpDcmVhdGVWaWRlb0NoYW5uZWwoCiAgICAgICB3b3JrZXJfdGhyZWFkXywgbmV0d29ya190aHJl
YWRfLCBzaWduYWxpbmdfdGhyZWFkLAogICAgICAgYWJzbDo6V3JhcFVuaXF1ZShtZWRpYV9jaGFu
bmVsKSwgY29udGVudF9uYW1lLCBzcnRwX3JlcXVpcmVkLAogICAgICAgY3J5cHRvX29wdGlvbnMp
OwotICB2aWRlb19jaGFubmVsLT5Jbml0X3cocnRwX3RyYW5zcG9ydCk7CisKKyAgLy8gVE9ETyhz
dWtoYW5vdik6IEFkZCBtZWRpYV90cmFuc3BvcnQgc3VwcG9ydCBmb3IgdmlkZW8gY2hhbm5lbC4K
KyAgdmlkZW9fY2hhbm5lbC0+SW5pdF93KHJ0cF90cmFuc3BvcnQsIC8qbWVkaWFfdHJhbnNwb3J0
PSovbnVsbHB0cik7CiAKICAgVmlkZW9DaGFubmVsKiB2aWRlb19jaGFubmVsX3B0ciA9IHZpZGVv
X2NoYW5uZWwuZ2V0KCk7CiAgIHZpZGVvX2NoYW5uZWxzXy5wdXNoX2JhY2soc3RkOjptb3ZlKHZp
ZGVvX2NoYW5uZWwpKTsKQEAgLTI5MSw3ICsyOTQsNyBAQCBSdHBEYXRhQ2hhbm5lbCogQ2hhbm5l
bE1hbmFnZXI6OkNyZWF0ZVJ0cERhdGFDaGFubmVsKAogICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxp
bmdfdGhyZWFkLAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgYm9v
bCBzcnRwX3JlcXVpcmVkLAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29w
dGlvbnMpIHsKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25z
KSB7CiAgIGlmICghd29ya2VyX3RocmVhZF8tPklzQ3VycmVudCgpKSB7CiAgICAgcmV0dXJuIHdv
cmtlcl90aHJlYWRfLT5JbnZva2U8UnRwRGF0YUNoYW5uZWwqPihSVENfRlJPTV9IRVJFLCBbJl0g
ewogICAgICAgcmV0dXJuIENyZWF0ZVJ0cERhdGFDaGFubmVsKG1lZGlhX2NvbmZpZywgcnRwX3Ry
YW5zcG9ydCwgc2lnbmFsaW5nX3RocmVhZCwKQEAgLTM0NiwxMyArMzQ5LDEzIEBAIHZvaWQgQ2hh
bm5lbE1hbmFnZXI6OkRlc3Ryb3lSdHBEYXRhQ2hhbm5lbChSdHBEYXRhQ2hhbm5lbCogZGF0YV9j
aGFubmVsKSB7CiBib29sIENoYW5uZWxNYW5hZ2VyOjpTdGFydEFlY0R1bXAocnRjOjpQbGF0Zm9y
bUZpbGUgZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG1h
eF9zaXplX2J5dGVzKSB7CiAgIHJldHVybiB3b3JrZXJfdGhyZWFkXy0+SW52b2tlPGJvb2w+KFJU
Q19GUk9NX0hFUkUsIFsmXSB7Ci0gICAgcmV0dXJuIG1lZGlhX2VuZ2luZV8tPlN0YXJ0QWVjRHVt
cChmaWxlLCBtYXhfc2l6ZV9ieXRlcyk7CisgICAgcmV0dXJuIG1lZGlhX2VuZ2luZV8tPnZvaWNl
KCkuU3RhcnRBZWNEdW1wKGZpbGUsIG1heF9zaXplX2J5dGVzKTsKICAgfSk7CiB9CiAKIHZvaWQg
Q2hhbm5lbE1hbmFnZXI6OlN0b3BBZWNEdW1wKCkgewogICB3b3JrZXJfdGhyZWFkXy0+SW52b2tl
PHZvaWQ+KFJUQ19GUk9NX0hFUkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZd
IHsgbWVkaWFfZW5naW5lXy0+U3RvcEFlY0R1bXAoKTsgfSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyZdIHsgbWVkaWFfZW5naW5lXy0+dm9pY2UoKS5TdG9wQWVjRHVtcCgpOyB9
KTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5hZ2VyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5o
CmluZGV4IGM2YjYwMWVhOGY2Y2IwZTAwMTdiMGJmMGFjYTcwM2RlMDI0OTY1OGEuLjVjYWZkOGNm
YTcyZjU2Mzc3ZmM1ODE1NzMxNDhhM2E5NWI0ODBjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5hZ2VyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbG1hbmFn
ZXIuaApAQCAtODAsMTQgKzgwLDE2IEBAIGNsYXNzIENoYW5uZWxNYW5hZ2VyIGZpbmFsIHsKICAg
Ly8gY2FsbCB0aGUgYXBwcm9wcmlhdGUgRGVzdHJveSpDaGFubmVsIG1ldGhvZCB3aGVuIGRvbmUu
CiAKICAgLy8gQ3JlYXRlcyBhIHZvaWNlIGNoYW5uZWwsIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0
aGUgc3BlY2lmaWVkIHNlc3Npb24uCi0gIFZvaWNlQ2hhbm5lbCogQ3JlYXRlVm9pY2VDaGFubmVs
KHdlYnJ0Yzo6Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY3JpY2tldDo6TWVkaWFDb25maWcmIG1lZGlhX2NvbmZpZywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3Ry
YW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQq
IHNpZ25hbGluZ190aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25z
KTsKKyAgVm9pY2VDaGFubmVsKiBDcmVhdGVWb2ljZUNoYW5uZWwoCisgICAgICB3ZWJydGM6OkNh
bGwqIGNhbGwsCisgICAgICBjb25zdCBjcmlja2V0OjpNZWRpYUNvbmZpZyYgbWVkaWFfY29uZmln
LAorICAgICAgd2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwKKyAg
ICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCwKKyAg
ICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAorICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIGNvbnRlbnRfbmFtZSwKKyAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKKyAgICAgIGNvbnN0
IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgICBjb25zdCBBdWRp
b09wdGlvbnMmIG9wdGlvbnMpOwogICAvLyBEZXN0cm95cyBhIHZvaWNlIGNoYW5uZWwgY3JlYXRl
ZCBieSBDcmVhdGVWb2ljZUNoYW5uZWwuCiAgIHZvaWQgRGVzdHJveVZvaWNlQ2hhbm5lbChWb2lj
ZUNoYW5uZWwqIHZvaWNlX2NoYW5uZWwpOwogCkBAIC0xMDAsNyArMTAyLDcgQEAgY2xhc3MgQ2hh
bm5lbE1hbmFnZXIgZmluYWwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBzcnRwX3JlcXVpcmVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRp
b25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OkNy
eXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpOwogICAvLyBEZXN0cm95cyBhIHZp
ZGVvIGNoYW5uZWwgY3JlYXRlZCBieSBDcmVhdGVWaWRlb0NoYW5uZWwuCiAgIHZvaWQgRGVzdHJv
eVZpZGVvQ2hhbm5lbChWaWRlb0NoYW5uZWwqIHZpZGVvX2NoYW5uZWwpOwpAQCAtMTExLDcgKzEx
Myw3IEBAIGNsYXNzIENoYW5uZWxNYW5hZ2VyIGZpbmFsIHsKICAgICAgIHJ0Yzo6VGhyZWFkKiBz
aWduYWxpbmdfdGhyZWFkLAogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwK
ICAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9u
cyYgY3J5cHRvX29wdGlvbnMpOworICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBj
cnlwdG9fb3B0aW9ucyk7CiAgIC8vIERlc3Ryb3lzIGEgZGF0YSBjaGFubmVsIGNyZWF0ZWQgYnkg
Q3JlYXRlUnRwRGF0YUNoYW5uZWwuCiAgIHZvaWQgRGVzdHJveVJ0cERhdGFDaGFubmVsKFJ0cERh
dGFDaGFubmVsKiBkYXRhX2NoYW5uZWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlcl91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5h
Z2VyX3VuaXR0ZXN0LmNjCmluZGV4IDQ3Yzk1MzA2ZWU3MGY4YjI2MWI4MGFjMDRlY2U3ZDM4ODQw
MjcxMmQuLjZlOWNhYjZjZGE4MWRlNmM2MGViZTdlZTg3ZmMxYWI3N2JiOTVhYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxt
YW5hZ2VyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5hZ2VyX3VuaXR0ZXN0LmNjCkBAIC0xMSw2ICsxMSw3IEBA
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhcGkv
dGVzdC9mYWtlX21lZGlhX3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZW1l
ZGlhZW5naW5lLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS90ZXN0dXRpbHMuaCIKICNpbmNsdWRl
ICJtZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y2NhbGwuaCIKQEAgLTYxLDIwICs2MiwzMiBAQCBjbGFz
cyBDaGFubmVsTWFuYWdlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgcmV0dXJu
IGR0bHNfc3J0cF90cmFuc3BvcnQ7CiAgIH0KIAotICB2b2lkIFRlc3RDcmVhdGVEZXN0cm95Q2hh
bm5lbHMod2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCkgeworICBz
dGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZT4gQ3JlYXRlTWVk
aWFUcmFuc3BvcnQoCisgICAgICBydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiBwYWNrZXRf
dHJhbnNwb3J0KSB7CisgICAgYXV0byBtZWRpYV90cmFuc3BvcnRfcmVzdWx0ID0KKyAgICAgICAg
ZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeV8uQ3JlYXRlTWVkaWFUcmFuc3BvcnQocGFja2V0
X3RyYW5zcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmV0d29ya18uZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qaXNfY2FsbGVyPSovdHJ1ZSk7Cisg
ICAgUlRDX0NIRUNLKG1lZGlhX3RyYW5zcG9ydF9yZXN1bHQub2soKSk7CisgICAgcmV0dXJuIG1l
ZGlhX3RyYW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7CisgIH0KKworICB2b2lkIFRlc3RDcmVh
dGVEZXN0cm95Q2hhbm5lbHMoCisgICAgICB3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFsKiBy
dHBfdHJhbnNwb3J0LAorICAgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVk
aWFfdHJhbnNwb3J0KSB7CiAgICAgY3JpY2tldDo6Vm9pY2VDaGFubmVsKiB2b2ljZV9jaGFubmVs
ID0gY21fLT5DcmVhdGVWb2ljZUNoYW5uZWwoCi0gICAgICAgICZmYWtlX2NhbGxfLCBjcmlja2V0
OjpNZWRpYUNvbmZpZygpLCBydHBfdHJhbnNwb3J0LAorICAgICAgICAmZmFrZV9jYWxsXywgY3Jp
Y2tldDo6TWVkaWFDb25maWcoKSwgcnRwX3RyYW5zcG9ydCwgbWVkaWFfdHJhbnNwb3J0LAogICAg
ICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLCBjcmlja2V0OjpDTl9BVURJTywga0RlZmF1bHRT
cnRwUmVxdWlyZWQsCi0gICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBBdWRpb09wdGlvbnMo
KSk7CisgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBBdWRpb09wdGlvbnMoKSk7CiAg
ICAgRVhQRUNUX1RSVUUodm9pY2VfY2hhbm5lbCAhPSBudWxscHRyKTsKICAgICBjcmlja2V0OjpW
aWRlb0NoYW5uZWwqIHZpZGVvX2NoYW5uZWwgPSBjbV8tPkNyZWF0ZVZpZGVvQ2hhbm5lbCgKICAg
ICAgICAgJmZha2VfY2FsbF8sIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIHJ0cF90cmFuc3BvcnQs
CiAgICAgICAgIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksIGNyaWNrZXQ6OkNOX1ZJREVPLCBrRGVm
YXVsdFNydHBSZXF1aXJlZCwKLSAgICAgICAgcnRjOjpDcnlwdG9PcHRpb25zKCksIFZpZGVvT3B0
aW9ucygpKTsKKyAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCksIFZpZGVvT3B0aW9ucygp
KTsKICAgICBFWFBFQ1RfVFJVRSh2aWRlb19jaGFubmVsICE9IG51bGxwdHIpOwogICAgIGNyaWNr
ZXQ6OlJ0cERhdGFDaGFubmVsKiBydHBfZGF0YV9jaGFubmVsID0gY21fLT5DcmVhdGVSdHBEYXRh
Q2hhbm5lbCgKICAgICAgICAgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgcnRwX3RyYW5zcG9ydCwg
cnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwKLSAgICAgICAgY3JpY2tldDo6Q05fREFUQSwga0RlZmF1
bHRTcnRwUmVxdWlyZWQsIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKKyAgICAgICAgY3JpY2tldDo6
Q05fREFUQSwga0RlZmF1bHRTcnRwUmVxdWlyZWQsIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsK
ICAgICBFWFBFQ1RfVFJVRShydHBfZGF0YV9jaGFubmVsICE9IG51bGxwdHIpOwogICAgIGNtXy0+
RGVzdHJveVZpZGVvQ2hhbm5lbCh2aWRlb19jaGFubmVsKTsKICAgICBjbV8tPkRlc3Ryb3lWb2lj
ZUNoYW5uZWwodm9pY2VfY2hhbm5lbCk7CkBAIC05MCw2ICsxMDMsNyBAQCBjbGFzcyBDaGFubmVs
TWFuYWdlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgIGNyaWNrZXQ6OkZha2VEYXRh
RW5naW5lKiBmZG1lXzsKICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkNoYW5uZWxNYW5hZ2Vy
PiBjbV87CiAgIGNyaWNrZXQ6OkZha2VDYWxsIGZha2VfY2FsbF87CisgIHdlYnJ0Yzo6RmFrZU1l
ZGlhVHJhbnNwb3J0RmFjdG9yeSBmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5XzsKIH07CiAK
IC8vIFRlc3QgdGhhdCB3ZSBzdGFydHVwL3NodXRkb3duIHByb3Blcmx5LgpAQCAtMTU0LDcgKzE2
OCwxNSBAQCBURVNUX0YoQ2hhbm5lbE1hbmFnZXJUZXN0LCBTZXRWaWRlb1J0eEVuYWJsZWQpIHsK
IFRFU1RfRihDaGFubmVsTWFuYWdlclRlc3QsIENyZWF0ZURlc3Ryb3lDaGFubmVscykgewogICBF
WFBFQ1RfVFJVRShjbV8tPkluaXQoKSk7CiAgIGF1dG8gcnRwX3RyYW5zcG9ydCA9IENyZWF0ZUR0
bHNTcnRwVHJhbnNwb3J0KCk7Ci0gIFRlc3RDcmVhdGVEZXN0cm95Q2hhbm5lbHMocnRwX3RyYW5z
cG9ydC5nZXQoKSk7CisgIFRlc3RDcmVhdGVEZXN0cm95Q2hhbm5lbHMocnRwX3RyYW5zcG9ydC5n
ZXQoKSwgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKK30KKworVEVTVF9GKENoYW5uZWxN
YW5hZ2VyVGVzdCwgQ3JlYXRlRGVzdHJveUNoYW5uZWxzV2l0aE1lZGlhVHJhbnNwb3J0KSB7Cisg
IEVYUEVDVF9UUlVFKGNtXy0+SW5pdCgpKTsKKyAgYXV0byBydHBfdHJhbnNwb3J0ID0gQ3JlYXRl
RHRsc1NydHBUcmFuc3BvcnQoKTsKKyAgYXV0byBtZWRpYV90cmFuc3BvcnQgPQorICAgICAgQ3Jl
YXRlTWVkaWFUcmFuc3BvcnQocnRwX3RyYW5zcG9ydC0+cnRjcF9wYWNrZXRfdHJhbnNwb3J0KCkp
OworICBUZXN0Q3JlYXRlRGVzdHJveUNoYW5uZWxzKHJ0cF90cmFuc3BvcnQuZ2V0KCksIG1lZGlh
X3RyYW5zcG9ydC5nZXQoKSk7CiB9CiAKIFRFU1RfRihDaGFubmVsTWFuYWdlclRlc3QsIENyZWF0
ZURlc3Ryb3lDaGFubmVsc09uVGhyZWFkKSB7CkBAIC0xNjQsNyArMTg2LDcgQEAgVEVTVF9GKENo
YW5uZWxNYW5hZ2VyVGVzdCwgQ3JlYXRlRGVzdHJveUNoYW5uZWxzT25UaHJlYWQpIHsKICAgRVhQ
RUNUX1RSVUUoY21fLT5zZXRfbmV0d29ya190aHJlYWQobmV0d29ya18uZ2V0KCkpKTsKICAgRVhQ
RUNUX1RSVUUoY21fLT5Jbml0KCkpOwogICBhdXRvIHJ0cF90cmFuc3BvcnQgPSBDcmVhdGVEdGxz
U3J0cFRyYW5zcG9ydCgpOwotICBUZXN0Q3JlYXRlRGVzdHJveUNoYW5uZWxzKHJ0cF90cmFuc3Bv
cnQuZ2V0KCkpOworICBUZXN0Q3JlYXRlRGVzdHJveUNoYW5uZWxzKHJ0cF90cmFuc3BvcnQuZ2V0
KCksIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBj
cmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9jcmVhdGVwZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jcmVhdGVwZWVyY29ubmVjdGlvbmZhY3Rvcnku
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYzRlYmJlNzMwZjk5YWUzODAyN2Yy
MzgxMjkxODE4OGI1YTAxOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY3Jl
YXRlcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
Ci0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJhcGkvY2FsbC9jYWxsZmFjdG9yeWlu
dGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgotI2lu
Y2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVk
ZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJs
b2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19mYWN0b3J5X2ludGVyZmFjZS5oIgot
I2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZS5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlLmgiCi0jaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL2JpbmQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQot
I2lmIGRlZmluZWQoVVNFX0JVSUxUSU5fU1dfQ09ERUNTKQotcnRjOjpzY29wZWRfcmVmcHRyPFBl
ZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5
KAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNv
ZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+
IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSkgewotICByZXR1cm4gQ3JlYXRlUGVlckNvbm5lY3Rpb25G
YWN0b3J5V2l0aEF1ZGlvTWl4ZXIoCi0gICAgICBudWxscHRyIC8qbmV0d29ya190aHJlYWQqLywg
bnVsbHB0ciAvKndvcmtlcl90aHJlYWQqLywKLSAgICAgIG51bGxwdHIgLypzaWduYWxpbmdfdGhy
ZWFkKi8sIG51bGxwdHIgLypkZWZhdWx0X2FkbSovLAotICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgICBudWxscHRyIC8qdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5Ki8sIG51bGxwdHIgLyp2aWRlb19kZWNvZGVyX2ZhY3RvcnkqLywKLSAgICAgIG51
bGxwdHIgLyphdWRpb19taXhlciovKTsKLX0KLQotLy8gTm90ZTogYWxsIHRoZSBvdGhlciBDcmVh
dGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkgdmFyaWFudHMganVzdCBlbmQgdXAgY2FsbGluZwotLy8g
dGhpcywgdWx0aW1hdGVseS4KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3Rv
cnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICBydGM6OlRocmVh
ZCogbmV0d29ya190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAg
cnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRl
ZmF1bHRfYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBh
dWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2Rl
ckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRl
b0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2Vi
UnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhlciwKLSAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nKSB7Ci0gIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmdfdXNlID0gYXVkaW9fcHJv
Y2Vzc2luZzsKLSAgaWYgKCFhdWRpb19wcm9jZXNzaW5nX3VzZSkgewotICAgIGF1ZGlvX3Byb2Nl
c3NpbmdfdXNlID0gQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpOwotICB9Ci0KLSAg
c3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdp
bmUoCi0gICAgICBjcmlja2V0OjpXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKLSAg
ICAgICAgICBkZWZhdWx0X2FkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVy
X2ZhY3RvcnksCi0gICAgICAgICAgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LCB2aWRlb19kZWNvZGVy
X2ZhY3RvcnksIGF1ZGlvX21peGVyLAotICAgICAgICAgIGF1ZGlvX3Byb2Nlc3NpbmdfdXNlKSk7
Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPENhbGxGYWN0b3J5SW50ZXJmYWNlPiBjYWxsX2ZhY3Rvcnkg
PSBDcmVhdGVDYWxsRmFjdG9yeSgpOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZ0Zh
Y3RvcnlJbnRlcmZhY2U+IGV2ZW50X2xvZ19mYWN0b3J5ID0KLSAgICAgIENyZWF0ZVJ0Y0V2ZW50
TG9nRmFjdG9yeSgpOwotCi0gIHJldHVybiBDcmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0
b3J5KAotICAgICAgbmV0d29ya190aHJlYWQsIHdvcmtlcl90aHJlYWQsIHNpZ25hbGluZ190aHJl
YWQsIHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpLAotICAgICAgc3RkOjptb3ZlKGNhbGxfZmFjdG9y
eSksIHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSkpOwotfQotCi1ydGM6OnNjb3BlZF9yZWZw
dHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZh
Y3RvcnkoCi0gICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFk
KiB3b3JrZXJfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAg
IEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8
QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0g
ICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29k
ZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4
ZXIsCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vz
c2luZywKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+
IGZlY19jb250cm9sbGVyX2ZhY3RvcnksCi0gICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250
cm9sbGVyRmFjdG9yeUludGVyZmFjZT4KLSAgICAgICAgbmV0d29ya19jb250cm9sbGVyX2ZhY3Rv
cnkpIHsKLSAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vz
c2luZ191c2UgPSBhdWRpb19wcm9jZXNzaW5nOwotICBpZiAoIWF1ZGlvX3Byb2Nlc3NpbmdfdXNl
KSB7Ci0gICAgYXVkaW9fcHJvY2Vzc2luZ191c2UgPSBBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCku
Q3JlYXRlKCk7Ci0gIH0KLQotICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJ
bnRlcmZhY2U+IG1lZGlhX2VuZ2luZSgKLSAgICAgIGNyaWNrZXQ6OldlYlJ0Y01lZGlhRW5naW5l
RmFjdG9yeTo6Q3JlYXRlKAotICAgICAgICAgIGRlZmF1bHRfYWRtLCBhdWRpb19lbmNvZGVyX2Zh
Y3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICB2aWRlb19lbmNvZGVyX2Zh
Y3RvcnksIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwgYXVkaW9fbWl4ZXIsCi0gICAgICAgICAgYXVk
aW9fcHJvY2Vzc2luZ191c2UpKTsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEZhY3RvcnlJbnRl
cmZhY2U+IGNhbGxfZmFjdG9yeSA9IENyZWF0ZUNhbGxGYWN0b3J5KCk7Ci0KLSAgc3RkOjp1bmlx
dWVfcHRyPFJ0Y0V2ZW50TG9nRmFjdG9yeUludGVyZmFjZT4gZXZlbnRfbG9nX2ZhY3RvcnkgPQot
ICAgICAgQ3JlYXRlUnRjRXZlbnRMb2dGYWN0b3J5KCk7Ci0KLSAgcmV0dXJuIENyZWF0ZU1vZHVs
YXJQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCi0gICAgICBuZXR3b3JrX3RocmVhZCwgd29ya2VyX3Ro
cmVhZCwgc2lnbmFsaW5nX3RocmVhZCwgc3RkOjptb3ZlKG1lZGlhX2VuZ2luZSksCi0gICAgICBz
dGQ6Om1vdmUoY2FsbF9mYWN0b3J5KSwgc3RkOjptb3ZlKGV2ZW50X2xvZ19mYWN0b3J5KSwKLSAg
ICAgIHN0ZDo6bW92ZShmZWNfY29udHJvbGxlcl9mYWN0b3J5KSwgc3RkOjptb3ZlKG5ldHdvcmtf
Y29udHJvbGxlcl9mYWN0b3J5KSk7Ci19Ci0jZW5kaWYKLQotcnRjOjpzY29wZWRfcmVmcHRyPFBl
ZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5
KAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29y
a2VyX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9EZXZpY2VNb2R1bGU+IGRlZmF1bHRfYWRtLAotICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3Rvcnks
Ci0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29k
ZXJfZmFjdG9yeSwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXJGYWN0
b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
TWl4ZXI+IGF1ZGlvX21peGVyLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Np
bmc+IGF1ZGlvX3Byb2Nlc3NpbmcpIHsKLSAgaWYgKCFhdWRpb19wcm9jZXNzaW5nKQotICAgIGF1
ZGlvX3Byb2Nlc3NpbmcgPSBBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCk7Ci0KLSAg
c3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdp
bmUgPQotICAgICAgY3JpY2tldDo6V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCi0g
ICAgICAgICAgZGVmYXVsdF9hZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LAotICAgICAgICAgIHN0ZDo6bW92ZSh2aWRlb19lbmNvZGVyX2ZhY3RvcnkpLCBz
dGQ6Om1vdmUodmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSwKLSAgICAgICAgICBhdWRpb19taXhlciwg
YXVkaW9fcHJvY2Vzc2luZyk7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPENhbGxGYWN0b3J5SW50ZXJm
YWNlPiBjYWxsX2ZhY3RvcnkgPSBDcmVhdGVDYWxsRmFjdG9yeSgpOwotCi0gIHN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudExvZ0ZhY3RvcnlJbnRlcmZhY2U+IGV2ZW50X2xvZ19mYWN0b3J5ID0KLSAg
ICAgIENyZWF0ZVJ0Y0V2ZW50TG9nRmFjdG9yeSgpOwotCi0gIHJldHVybiBDcmVhdGVNb2R1bGFy
UGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgICAgbmV0d29ya190aHJlYWQsIHdvcmtlcl90aHJl
YWQsIHNpZ25hbGluZ190aHJlYWQsIHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpLAotICAgICAgc3Rk
Ojptb3ZlKGNhbGxfZmFjdG9yeSksIHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSkpOwotfQot
Ci0jaWYgZGVmaW5lZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCi1ydGM6OnNjb3BlZF9yZWZwdHI8
UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPgotQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0
b3J5V2l0aEF1ZGlvTWl4ZXIoCi0gICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAg
IHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdf
dGhyZWFkLAotICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwKLSAgICBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAot
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVy
X2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9f
ZW5jb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnkq
IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhl
cj4gYXVkaW9fbWl4ZXIpIHsKLSAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgK
LSAgICAgIG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBk
ZWZhdWx0X2FkbSwKLSAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9m
YWN0b3J5LCB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICB2aWRlb19kZWNvZGVyX2ZhY3Rv
cnksIGF1ZGlvX21peGVyLCBudWxscHRyKTsKLX0KLQotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJD
b25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAot
ICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2Vy
X3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBBdWRpb0Rl
dmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5j
b2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZw
dHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNr
ZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAg
ICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3Rv
cnkpIHsKLSAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeVdpdGhBdWRpb01peGVy
KAotICAgICAgbmV0d29ya190aHJlYWQsIHdvcmtlcl90aHJlYWQsIHNpZ25hbGluZ190aHJlYWQs
IGRlZmF1bHRfYWRtLAotICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVy
X2ZhY3RvcnksIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgIHZpZGVvX2RlY29kZXJfZmFj
dG9yeSwgbnVsbHB0cik7Ci19Ci0jZW5kaWYKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZGF0
YWNoYW5uZWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9kYXRhY2hhbm5lbC5jYwppbmRleCBmODE5ZDI2Njk1NzYwNTE1ZDA4ZmUxOTRiYTAxMzE1MjAz
NzA0MDhkLi5lOTg5NTg2NjA3ZDc3YmYzYTQxZjkyODNkNTI0ZDNhZDNmNzNiMGUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kYXRhY2hh
bm5lbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9kYXRhY2hhbm5lbC5jYwpAQCAtMTE4LDYgKzExOCwxMCBAQCBydGM6OnNjb3BlZF9yZWZwdHI8
RGF0YUNoYW5uZWw+IERhdGFDaGFubmVsOjpDcmVhdGUoCiAgIHJldHVybiBjaGFubmVsOwogfQog
Citib29sIERhdGFDaGFubmVsOjpJc1NjdHBMaWtlKGNyaWNrZXQ6OkRhdGFDaGFubmVsVHlwZSB0
eXBlKSB7CisgIHJldHVybiB0eXBlID09IGNyaWNrZXQ6OkRDVF9TQ1RQIHx8IHR5cGUgPT0gY3Jp
Y2tldDo6RENUX01FRElBX1RSQU5TUE9SVDsKK30KKwogRGF0YUNoYW5uZWw6OkRhdGFDaGFubmVs
KERhdGFDaGFubmVsUHJvdmlkZXJJbnRlcmZhY2UqIHByb3ZpZGVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyaWNrZXQ6OkRhdGFDaGFubmVsVHlwZSBkY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxhYmVsKQpAQCAtMTQ3LDcgKzE1MSw3IEBAIGJv
b2wgRGF0YUNoYW5uZWw6OkluaXQoY29uc3QgSW50ZXJuYWxEYXRhQ2hhbm5lbEluaXQmIGNvbmZp
ZykgewogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBoYW5kc2hha2Vfc3RhdGVfID0g
a0hhbmRzaGFrZVJlYWR5OwotICB9IGVsc2UgaWYgKGRhdGFfY2hhbm5lbF90eXBlXyA9PSBjcmlj
a2V0OjpEQ1RfU0NUUCkgeworICB9IGVsc2UgaWYgKElzU2N0cExpa2UoZGF0YV9jaGFubmVsX3R5
cGVfKSkgewogICAgIGlmIChjb25maWcuaWQgPCAtMSB8fCBjb25maWcubWF4UmV0cmFuc21pdHMg
PCAtMSB8fAogICAgICAgICBjb25maWcubWF4UmV0cmFuc21pdFRpbWUgPCAtMSkgewogICAgICAg
UlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBTQ1RQIGRhdGEg
Y2hhbm5lbCBkdWUgdG8gIgpAQCAtMjQxLDcgKzI0NSw3IEBAIGJvb2wgRGF0YUNoYW5uZWw6OlNl
bmQoY29uc3QgRGF0YUJ1ZmZlciYgYnVmZmVyKSB7CiAgIGlmICghcXVldWVkX3NlbmRfZGF0YV8u
RW1wdHkoKSkgewogICAgIC8vIE9ubHkgU0NUUCBEYXRhQ2hhbm5lbCBxdWV1ZXMgdGhlIG91dGdv
aW5nIGRhdGEgd2hlbiB0aGUgdHJhbnNwb3J0IGlzCiAgICAgLy8gYmxvY2tlZC4KLSAgICBSVENf
RENIRUNLKGRhdGFfY2hhbm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfU0NUUCk7CisgICAgUlRD
X0RDSEVDSyhJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpOwogICAgIGlmICghUXVldWVT
ZW5kRGF0YU1lc3NhZ2UoYnVmZmVyKSkgewogICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNs
b3NpbmcgdGhlIERhdGFDaGFubmVsIGR1ZSB0byBhIGZhaWx1cmUgdG8gcXVldWUgIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImFkZGl0aW9uYWwgZGF0YS4iOwpAQCAtMjczLDcgKzI3Nyw3
IEBAIHZvaWQgRGF0YUNoYW5uZWw6OlNldFJlY2VpdmVTc3JjKHVpbnQzMl90IHJlY2VpdmVfc3Ny
Yykgewogdm9pZCBEYXRhQ2hhbm5lbDo6U2V0U2N0cFNpZChpbnQgc2lkKSB7CiAgIFJUQ19EQ0hF
Q0tfTFQoY29uZmlnXy5pZCwgMCk7CiAgIFJUQ19EQ0hFQ0tfR0Uoc2lkLCAwKTsKLSAgUlRDX0RD
SEVDS19FUShkYXRhX2NoYW5uZWxfdHlwZV8sIGNyaWNrZXQ6OkRDVF9TQ1RQKTsKKyAgUlRDX0RD
SEVDSyhJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpOwogICBpZiAoY29uZmlnXy5pZCA9
PSBzaWQpIHsKICAgICByZXR1cm47CiAgIH0KQEAgLTI4Myw3ICsyODcsNyBAQCB2b2lkIERhdGFD
aGFubmVsOjpTZXRTY3RwU2lkKGludCBzaWQpIHsKIH0KIAogdm9pZCBEYXRhQ2hhbm5lbDo6T25D
bG9zaW5nUHJvY2VkdXJlU3RhcnRlZFJlbW90ZWx5KGludCBzaWQpIHsKLSAgaWYgKGRhdGFfY2hh
bm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfU0NUUCAmJiBzaWQgPT0gY29uZmlnXy5pZCAmJgor
ICBpZiAoSXNTY3RwTGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pICYmIHNpZCA9PSBjb25maWdfLmlk
ICYmCiAgICAgICBzdGF0ZV8gIT0ga0Nsb3NpbmcgJiYgc3RhdGVfICE9IGtDbG9zZWQpIHsKICAg
ICAvLyBEb24ndCBib3RoZXIgc2VuZGluZyBxdWV1ZWQgZGF0YSBzaW5jZSB0aGUgc2lkZSB0aGF0
IGluaXRpYXRlZCB0aGUKICAgICAvLyBjbG9zdXJlIHdvdWxkbid0IHJlY2VpdmUgaXQgYW55d2F5
LiBTZWUgY3JidWcuY29tLzU1OTM5NCBmb3IgYSBsZW5ndGh5CkBAIC0yOTksNyArMzAzLDcgQEAg
dm9pZCBEYXRhQ2hhbm5lbDo6T25DbG9zaW5nUHJvY2VkdXJlU3RhcnRlZFJlbW90ZWx5KGludCBz
aWQpIHsKIH0KIAogdm9pZCBEYXRhQ2hhbm5lbDo6T25DbG9zaW5nUHJvY2VkdXJlQ29tcGxldGUo
aW50IHNpZCkgewotICBpZiAoZGF0YV9jaGFubmVsX3R5cGVfID09IGNyaWNrZXQ6OkRDVF9TQ1RQ
ICYmIHNpZCA9PSBjb25maWdfLmlkKSB7CisgIGlmIChJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90
eXBlXykgJiYgc2lkID09IGNvbmZpZ18uaWQpIHsKICAgICAvLyBJZiB0aGUgY2xvc2luZyBwcm9j
ZWR1cmUgaXMgY29tcGxldGUsIHdlIHNob3VsZCBoYXZlIGZpbmlzaGVkIHNlbmRpbmcKICAgICAv
LyBhbGwgcGVuZGluZyBkYXRhIGFuZCB0cmFuc2l0aW9uZWQgdG8ga0Nsb3NpbmcgYWxyZWFkeS4K
ICAgICBSVENfRENIRUNLX0VRKHN0YXRlXywga0Nsb3NpbmcpOwpAQCAtMzEwLDcgKzMxNCw3IEBA
IHZvaWQgRGF0YUNoYW5uZWw6Ok9uQ2xvc2luZ1Byb2NlZHVyZUNvbXBsZXRlKGludCBzaWQpIHsK
IH0KIAogdm9pZCBEYXRhQ2hhbm5lbDo6T25UcmFuc3BvcnRDaGFubmVsQ3JlYXRlZCgpIHsKLSAg
UlRDX0RDSEVDSyhkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6RENUX1NDVFApOworICBS
VENfRENIRUNLKElzU2N0cExpa2UoZGF0YV9jaGFubmVsX3R5cGVfKSk7CiAgIGlmICghY29ubmVj
dGVkX3RvX3Byb3ZpZGVyXykgewogICAgIGNvbm5lY3RlZF90b19wcm92aWRlcl8gPSBwcm92aWRl
cl8tPkNvbm5lY3REYXRhQ2hhbm5lbCh0aGlzKTsKICAgfQpAQCAtMzQ4LDEyICszNTIsMTIgQEAg
dm9pZCBEYXRhQ2hhbm5lbDo6T25EYXRhUmVjZWl2ZWQoY29uc3QgY3JpY2tldDo6UmVjZWl2ZURh
dGFQYXJhbXMmIHBhcmFtcywKICAgaWYgKGRhdGFfY2hhbm5lbF90eXBlXyA9PSBjcmlja2V0OjpE
Q1RfUlRQICYmIHBhcmFtcy5zc3JjICE9IHJlY2VpdmVfc3NyY18pIHsKICAgICByZXR1cm47CiAg
IH0KLSAgaWYgKGRhdGFfY2hhbm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfU0NUUCAmJiBwYXJh
bXMuc2lkICE9IGNvbmZpZ18uaWQpIHsKKyAgaWYgKElzU2N0cExpa2UoZGF0YV9jaGFubmVsX3R5
cGVfKSAmJiBwYXJhbXMuc2lkICE9IGNvbmZpZ18uaWQpIHsKICAgICByZXR1cm47CiAgIH0KIAog
ICBpZiAocGFyYW1zLnR5cGUgPT0gY3JpY2tldDo6RE1UX0NPTlRST0wpIHsKLSAgICBSVENfRENI
RUNLKGRhdGFfY2hhbm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfU0NUUCk7CisgICAgUlRDX0RD
SEVDSyhJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpOwogICAgIGlmIChoYW5kc2hha2Vf
c3RhdGVfICE9IGtIYW5kc2hha2VXYWl0aW5nRm9yQWNrKSB7CiAgICAgICAvLyBJZ25vcmUgaXQg
aWYgd2UgYXJlIG5vdCBleHBlY3RpbmcgYW4gQUNLIG1lc3NhZ2UuCiAgICAgICBSVENfTE9HKExT
X1dBUk5JTkcpCkBAIC01NzAsNyArNTc0LDcgQEAgYm9vbCBEYXRhQ2hhbm5lbDo6U2VuZERhdGFN
ZXNzYWdlKGNvbnN0IERhdGFCdWZmZXImIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHF1ZXVlX2lmX2Jsb2NrZWQpIHsKICAgY3JpY2tldDo6U2VuZERhdGFQ
YXJhbXMgc2VuZF9wYXJhbXM7CiAKLSAgaWYgKGRhdGFfY2hhbm5lbF90eXBlXyA9PSBjcmlja2V0
OjpEQ1RfU0NUUCkgeworICBpZiAoSXNTY3RwTGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pKSB7CiAg
ICAgc2VuZF9wYXJhbXMub3JkZXJlZCA9IGNvbmZpZ18ub3JkZXJlZDsKICAgICAvLyBTZW5kIGFz
IG9yZGVyZWQgaWYgaXQgaXMgc3RpbGwgZ29pbmcgdGhyb3VnaCBPUEVOL0FDSyBzaWduYWxpbmcu
CiAgICAgaWYgKGhhbmRzaGFrZV9zdGF0ZV8gIT0ga0hhbmRzaGFrZVJlYWR5ICYmICFjb25maWdf
Lm9yZGVyZWQpIHsKQEAgLTU5Nyw3ICs2MDEsNyBAQCBib29sIERhdGFDaGFubmVsOjpTZW5kRGF0
YU1lc3NhZ2UoY29uc3QgRGF0YUJ1ZmZlciYgYnVmZmVyLAogICAgIHJldHVybiB0cnVlOwogICB9
CiAKLSAgaWYgKGRhdGFfY2hhbm5lbF90eXBlXyAhPSBjcmlja2V0OjpEQ1RfU0NUUCkgeworICBp
ZiAoIUlzU2N0cExpa2UoZGF0YV9jaGFubmVsX3R5cGVfKSkgewogICAgIHJldHVybiBmYWxzZTsK
ICAgfQogCkBAIC02NDksNyArNjUzLDcgQEAgdm9pZCBEYXRhQ2hhbm5lbDo6UXVldWVDb250cm9s
TWVzc2FnZShjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIpIHsKIGJvb2wgRGF0
YUNoYW5uZWw6OlNlbmRDb250cm9sTWVzc2FnZShjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVy
JiBidWZmZXIpIHsKICAgYm9vbCBpc19vcGVuX21lc3NhZ2UgPSBoYW5kc2hha2Vfc3RhdGVfID09
IGtIYW5kc2hha2VTaG91bGRTZW5kT3BlbjsKIAotICBSVENfRENIRUNLX0VRKGRhdGFfY2hhbm5l
bF90eXBlXywgY3JpY2tldDo6RENUX1NDVFApOworICBSVENfRENIRUNLKElzU2N0cExpa2UoZGF0
YV9jaGFubmVsX3R5cGVfKSk7CiAgIFJUQ19EQ0hFQ0sod3JpdGFibGVfKTsKICAgUlRDX0RDSEVD
S19HRShjb25maWdfLmlkLCAwKTsKICAgUlRDX0RDSEVDSyghaXNfb3Blbl9tZXNzYWdlIHx8ICFj
b25maWdfLm5lZ290aWF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvZGF0YWNoYW5uZWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2RhdGFjaGFubmVsLmgKaW5kZXggY2JiMGM4YjJjZjBh
YmE1NjhjYTdkYmZmNGIzZDFiOTNhNWNiOTViMS4uMjJlYTM1NGMyMTE2MzJkYjg2ZTc5NDIzNDhi
ZDVjMzI4NjY0ZjdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvZGF0YWNoYW5uZWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kYXRhY2hhbm5lbC5oCkBAIC0xMjIsNiArMTIyLDggQEAg
Y2xhc3MgRGF0YUNoYW5uZWwgOiBwdWJsaWMgRGF0YUNoYW5uZWxJbnRlcmZhY2UsIHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbGFiZWwsCiAg
ICAgICBjb25zdCBJbnRlcm5hbERhdGFDaGFubmVsSW5pdCYgY29uZmlnKTsKIAorICBzdGF0aWMg
Ym9vbCBJc1NjdHBMaWtlKGNyaWNrZXQ6OkRhdGFDaGFubmVsVHlwZSB0eXBlKTsKKwogICB2aXJ0
dWFsIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcihEYXRhQ2hhbm5lbE9ic2VydmVyKiBvYnNlcnZlcik7
CiAgIHZpcnR1YWwgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZHRsc3NydHB0cmFuc3Bv
cnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kdGxz
c3J0cHRyYW5zcG9ydC5jYwppbmRleCBlMzFiMmY1ODcyY2E5NmI1NzNiYzgxMjRhMDVjZDFkMzgw
MjBjZDg0Li4yODM1ZDM0YTQ2Nzc2NTQ5NzJiNTRiN2Y2MDMzYTFmNDIwMzk2MzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kdGxzc3J0
cHRyYW5zcG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9kdGxzc3J0cHRyYW5zcG9ydC5jYwpAQCAtMzAxLDYgKzMwMSw4IEBAIHZvaWQgRHRs
c1NydHBUcmFuc3BvcnQ6Ok9uRHRsc1N0YXRlKGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5h
bCogdHJhbnNwb3J0LAogICBSVENfRENIRUNLKHRyYW5zcG9ydCA9PSBydHBfZHRsc190cmFuc3Bv
cnRfIHx8CiAgICAgICAgICAgICAgdHJhbnNwb3J0ID09IHJ0Y3BfZHRsc190cmFuc3BvcnRfKTsK
IAorICBTaWduYWxEdGxzU3RhdGVDaGFuZ2UoKTsKKwogICBpZiAoc3RhdGUgIT0gY3JpY2tldDo6
RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEKSB7CiAgICAgUmVzZXRQYXJhbXMoKTsKICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9kdGxzc3J0cHRyYW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvZHRsc3NydHB0cmFuc3BvcnQuaAppbmRleCA0OThmMDJlOTE3NjIyYjcz
MDA0OTQ2MDYxMTU4ZmUwOTg2ZjdlYjcxLi5jYWM1NjBlNzlhY2U4NWFmMzY3MjgzNWM0ZGFiZjk1
YzBjY2FmM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9kdGxzc3J0cHRyYW5zcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2R0bHNzcnRwdHJhbnNwb3J0LmgKQEAgLTQyLDcgKzQy
LDggQEAgY2xhc3MgRHRsc1NydHBUcmFuc3BvcnQgOiBwdWJsaWMgU3J0cFRyYW5zcG9ydCB7CiAg
IHZvaWQgVXBkYXRlUmVjdkVuY3J5cHRlZEhlYWRlckV4dGVuc2lvbklkcygKICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPGludD4mIHJlY3ZfZXh0ZW5zaW9uX2lkcyk7CiAKLSAgc2lnc2xvdDo6c2ln
bmFsMjxEdGxzU3J0cFRyYW5zcG9ydCosIGJvb2w+IFNpZ25hbER0bHNTcnRwU2V0dXBGYWlsdXJl
OworICBzaWdzbG90OjpzaWduYWw8RHRsc1NydHBUcmFuc3BvcnQqLCBib29sPiBTaWduYWxEdGxz
U3J0cFNldHVwRmFpbHVyZTsKKyAgc2lnc2xvdDo6c2lnbmFsPD4gU2lnbmFsRHRsc1N0YXRlQ2hh
bmdlOwogCiAgIFJUQ0Vycm9yIFNldFNydHBTZW5kS2V5KGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1Bh
cmFtcyYgcGFyYW1zKSBvdmVycmlkZSB7CiAgICAgcmV0dXJuIFJUQ0Vycm9yKFJUQ0Vycm9yVHlw
ZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcGljZWNhbmRpZGF0ZS5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXBpY2VjYW5kaWRhdGUuY2MK
aW5kZXggMjc3ZjFiYWI0ZmZmMTBkMzg0ZjdkMTNhNzRmYWUzYThkNDhhNzhiZS4uMjEzM2Q5ZGFk
ZDI1ODE4NGI0OTc3Njg5N2NjMzM5ZmZhMmM2Yjg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcGljZWNhbmRpZGF0ZS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwaWNlY2Fu
ZGlkYXRlLmNjCkBAIC0xNCw3ICsxNCw2IEBACiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1v
cnkuaCIKICNpbmNsdWRlICJwYy93ZWJydGNzZHAuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJp
bmdlbmNvZGUuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXBzZXNzaW9uZGVzY3JpcHRp
b24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2Vw
c2Vzc2lvbmRlc2NyaXB0aW9uLmNjCmluZGV4IDY0YTdhMmJkNTkxYjBhNjkxZWQyMWM5MWE2Zjhi
YTczOTU0ZTRkMzIuLjEzZDA3NDM4MDgyMDA1MzQyOGYyM2VkYTE5ODVjMTgyYTQyZDA5NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pz
ZXBzZXNzaW9uZGVzY3JpcHRpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvanNlcHNlc3Npb25kZXNjcmlwdGlvbi5jYwpAQCAtMTcsNyArMTcs
NiBAQAogI2luY2x1ZGUgInBjL21lZGlhc2Vzc2lvbi5oIgogI2luY2x1ZGUgInBjL3dlYnJ0Y3Nk
cC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L3N0cmluZ2VuY29kZS5oIgogCiB1c2luZyBjcmlja2V0OjpTZXNzaW9uRGVzY3JpcHRpb247CiAK
QEAgLTkzLDM3ICs5Miw5IEBAIHZvaWQgVXBkYXRlQ29ubmVjdGlvbkFkZHJlc3MoCiAKIH0gIC8v
IG5hbWVzcGFjZQogCi1jb25zdCBjaGFyIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6a09m
ZmVyW10gPSAib2ZmZXIiOwotY29uc3QgY2hhciBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6
OmtQckFuc3dlcltdID0gInByYW5zd2VyIjsKLWNvbnN0IGNoYXIgU2Vzc2lvbkRlc2NyaXB0aW9u
SW50ZXJmYWNlOjprQW5zd2VyW10gPSAiYW5zd2VyIjsKLQogY29uc3QgaW50IEpzZXBTZXNzaW9u
RGVzY3JpcHRpb246OmtEZWZhdWx0VmlkZW9Db2RlY0lkID0gMTAwOwogY29uc3QgY2hhciBKc2Vw
U2Vzc2lvbkRlc2NyaXB0aW9uOjprRGVmYXVsdFZpZGVvQ29kZWNOYW1lW10gPSAiVlA4IjsKIAot
Y29uc3QgY2hhciogU2RwVHlwZVRvU3RyaW5nKFNkcFR5cGUgdHlwZSkgewotICBzd2l0Y2ggKHR5
cGUpIHsKLSAgICBjYXNlIFNkcFR5cGU6OmtPZmZlcjoKLSAgICAgIHJldHVybiBTZXNzaW9uRGVz
Y3JpcHRpb25JbnRlcmZhY2U6OmtPZmZlcjsKLSAgICBjYXNlIFNkcFR5cGU6OmtQckFuc3dlcjoK
LSAgICAgIHJldHVybiBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtQckFuc3dlcjsKLSAg
ICBjYXNlIFNkcFR5cGU6OmtBbnN3ZXI6Ci0gICAgICByZXR1cm4gU2Vzc2lvbkRlc2NyaXB0aW9u
SW50ZXJmYWNlOjprQW5zd2VyOwotICB9Ci0gIHJldHVybiAiIjsKLX0KLQotYWJzbDo6b3B0aW9u
YWw8U2RwVHlwZT4gU2RwVHlwZUZyb21TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGVfc3Ry
KSB7Ci0gIGlmICh0eXBlX3N0ciA9PSBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtPZmZl
cikgewotICAgIHJldHVybiBTZHBUeXBlOjprT2ZmZXI7Ci0gIH0gZWxzZSBpZiAodHlwZV9zdHIg
PT0gU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprUHJBbnN3ZXIpIHsKLSAgICByZXR1cm4g
U2RwVHlwZTo6a1ByQW5zd2VyOwotICB9IGVsc2UgaWYgKHR5cGVfc3RyID09IFNlc3Npb25EZXNj
cmlwdGlvbkludGVyZmFjZTo6a0Fuc3dlcikgewotICAgIHJldHVybiBTZHBUeXBlOjprQW5zd2Vy
OwotICB9IGVsc2UgewotICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwotICB9Ci19Ci0KIC8vIFRP
RE8oc3RldmVhbnRvbik6IFJlbW92ZSB0aGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb25jZSBD
aHJvbWl1bSBoYXMgYmVlbgogLy8gdXBkYXRlZC4KIFNkcFR5cGUgU2Vzc2lvbkRlc2NyaXB0aW9u
SW50ZXJmYWNlOjpHZXRUeXBlKCkgY29uc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnQuY2MKaW5k
ZXggYzNkZmQzMjQ2NGRlZDI1NzlhMTk0YzAxZDdlYzFkYTgxMDJmNmRkNS4uODhkMjBhNDViMTc5
MjdmNDFkMzYyNWIxNGIxMWNmMDVlYzRhMWNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0LmNj
CkBAIC0xMyw3ICsxMyw2IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+
ICAvLyBmb3Igc3RkOjpwYWlyCiAKLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNp
bmNsdWRlICJhcGkvY2FuZGlkYXRlLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvcDJwY29uc3RhbnRz
LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbC5oIgpAQCAtOTQsMTEg
KzkzLDEzIEBAIEpzZXBUcmFuc3BvcnQ6OkpzZXBUcmFuc3BvcnQoCiAgICAgc3RkOjp1bmlxdWVf
cHRyPHdlYnJ0Yzo6U3J0cFRyYW5zcG9ydD4gc2Rlc190cmFuc3BvcnQsCiAgICAgc3RkOjp1bmlx
dWVfcHRyPHdlYnJ0Yzo6RHRsc1NydHBUcmFuc3BvcnQ+IGR0bHNfc3J0cF90cmFuc3BvcnQsCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPER0bHNUcmFuc3BvcnRJbnRlcm5hbD4gcnRwX2R0bHNfdHJhbnNw
b3J0LAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEdGxzVHJhbnNwb3J0SW50ZXJuYWw+IHJ0Y3BfZHRs
c190cmFuc3BvcnQpCisgICAgc3RkOjp1bmlxdWVfcHRyPER0bHNUcmFuc3BvcnRJbnRlcm5hbD4g
cnRjcF9kdGxzX3RyYW5zcG9ydCwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRy
YW5zcG9ydEludGVyZmFjZT4gbWVkaWFfdHJhbnNwb3J0KQogICAgIDogbWlkXyhtaWQpLAogICAg
ICAgbG9jYWxfY2VydGlmaWNhdGVfKGxvY2FsX2NlcnRpZmljYXRlKSwKICAgICAgIHJ0cF9kdGxz
X3RyYW5zcG9ydF8oc3RkOjptb3ZlKHJ0cF9kdGxzX3RyYW5zcG9ydCkpLAotICAgICAgcnRjcF9k
dGxzX3RyYW5zcG9ydF8oc3RkOjptb3ZlKHJ0Y3BfZHRsc190cmFuc3BvcnQpKSB7CisgICAgICBy
dGNwX2R0bHNfdHJhbnNwb3J0XyhzdGQ6Om1vdmUocnRjcF9kdGxzX3RyYW5zcG9ydCkpLAorICAg
ICAgbWVkaWFfdHJhbnNwb3J0XyhzdGQ6Om1vdmUobWVkaWFfdHJhbnNwb3J0KSkgewogICBSVENf
RENIRUNLKHJ0cF9kdGxzX3RyYW5zcG9ydF8pOwogICBpZiAodW5lbmNyeXB0ZWRfcnRwX3RyYW5z
cG9ydCkgewogICAgIFJUQ19EQ0hFQ0soIXNkZXNfdHJhbnNwb3J0KTsKQEAgLTExNCw5ICsxMTUs
MTcgQEAgSnNlcFRyYW5zcG9ydDo6SnNlcFRyYW5zcG9ydCgKICAgICBSVENfRENIRUNLKCFzZGVz
X3RyYW5zcG9ydCk7CiAgICAgZHRsc19zcnRwX3RyYW5zcG9ydF8gPSBzdGQ6Om1vdmUoZHRsc19z
cnRwX3RyYW5zcG9ydCk7CiAgIH0KKworICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIG1l
ZGlhX3RyYW5zcG9ydF8tPlNldE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayh0aGlzKTsKKyAg
fQogfQogCi1Kc2VwVHJhbnNwb3J0Ojp+SnNlcFRyYW5zcG9ydCgpIHt9CitKc2VwVHJhbnNwb3J0
Ojp+SnNlcFRyYW5zcG9ydCgpIHsKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBtZWRp
YV90cmFuc3BvcnRfLT5TZXRNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sobnVsbHB0cik7Cisg
IH0KK30KIAogd2VicnRjOjpSVENFcnJvciBKc2VwVHJhbnNwb3J0OjpTZXRMb2NhbEpzZXBUcmFu
c3BvcnREZXNjcmlwdGlvbigKICAgICBjb25zdCBKc2VwVHJhbnNwb3J0RGVzY3JpcHRpb24mIGpz
ZXBfZGVzY3JpcHRpb24sCkBAIC0zMTUsOCArMzI0LDkgQEAgd2VicnRjOjpSVENFcnJvciBKc2Vw
VHJhbnNwb3J0OjpWZXJpZnlDZXJ0aWZpY2F0ZUZpbmdlcnByaW50KAogICAgIHJldHVybiB3ZWJy
dGM6OlJUQ0Vycm9yKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluZ2VycHJpbnQgcHJvdmlkZWQgYnV0IG5vIGlk
ZW50aXR5IGF2YWlsYWJsZS4iKTsKICAgfQotICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5n
ZXJwcmludD4gZnBfdG1wKHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZSgKLSAgICAgIGZpbmdl
cnByaW50LT5hbGdvcml0aG0sIGNlcnRpZmljYXRlLT5pZGVudGl0eSgpKSk7CisgIHN0ZDo6dW5p
cXVlX3B0cjxydGM6OlNTTEZpbmdlcnByaW50PiBmcF90bXAgPQorICAgICAgcnRjOjpTU0xGaW5n
ZXJwcmludDo6Q3JlYXRlVW5pcXVlKGZpbmdlcnByaW50LT5hbGdvcml0aG0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNlcnRpZmljYXRlLT5pZGVudGl0eSgpKTsK
ICAgUlRDX0RDSEVDSyhmcF90bXAuZ2V0KCkgIT0gTlVMTCk7CiAgIGlmICgqZnBfdG1wID09ICpm
aW5nZXJwcmludCkgewogICAgIHJldHVybiB3ZWJydGM6OlJUQ0Vycm9yOjpPSygpOwpAQCAtNTA1
LDcgKzUxNSw4IEBAIHdlYnJ0Yzo6UlRDRXJyb3IgSnNlcFRyYW5zcG9ydDo6TmVnb3RpYXRlQW5k
U2V0RHRsc1BhcmFtZXRlcnMoCiAgICAgICAgICJMb2NhbCBmaW5nZXJwcmludCBzdXBwbGllZCB3
aGVuIGNhbGxlciBkaWRuJ3Qgb2ZmZXIgRFRMUy4iKTsKICAgfSBlbHNlIHsKICAgICAvLyBXZSBh
cmUgbm90IGRvaW5nIERUTFMKLSAgICByZW1vdGVfZmluZ2VycHJpbnQgPSBhYnNsOjptYWtlX3Vu
aXF1ZTxydGM6OlNTTEZpbmdlcnByaW50PigiIiwgbnVsbHB0ciwgMCk7CisgICAgcmVtb3RlX2Zp
bmdlcnByaW50ID0gYWJzbDo6bWFrZV91bmlxdWU8cnRjOjpTU0xGaW5nZXJwcmludD4oCisgICAg
ICAgICIiLCBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PigpKTsKICAgfQogICAvLyBOb3cg
dGhhdCB3ZSBoYXZlIG5lZ290aWF0ZWQgZXZlcnl0aGluZywgcHVzaCBpdCBkb3dud2FyZC4KICAg
Ly8gTm90ZSB0aGF0IHdlIGNhY2hlIHRoZSByZXN1bHQgc28gdGhhdCBpZiB3ZSBoYXZlIHJhY2Ug
Y29uZGl0aW9ucwpAQCAtNjMzLDQgKzY0NCwxMiBAQCBib29sIEpzZXBUcmFuc3BvcnQ6OkdldFRy
YW5zcG9ydFN0YXRzKER0bHNUcmFuc3BvcnRJbnRlcm5hbCogZHRsc190cmFuc3BvcnQsCiAgIHJl
dHVybiB0cnVlOwogfQogCit2b2lkIEpzZXBUcmFuc3BvcnQ6Ok9uU3RhdGVDaGFuZ2VkKHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZSBzdGF0ZSkgeworICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9y
Zy85NzE5KSBUaGlzIG1ldGhvZCBjdXJyZW50bHkgZmlyZXMgb24gdGhlIG5ldHdvcmsKKyAgLy8g
dGhyZWFkLCBidXQgbWVkaWEgdHJhbnNwb3J0IGRvZXMgbm90IG1ha2Ugc3VjaCBndWFyYW50ZWVz
LiBXZSBuZWVkIHRvIG1ha2UKKyAgLy8gc3VyZSB0aGlzIGNhbGxiYWNrIGlzIGd1YXJhbnRlZWQg
dG8gYmUgZXhlY3V0ZWQgb24gdGhlIG5ldHdvcmsgdGhyZWFkLgorICBtZWRpYV90cmFuc3BvcnRf
c3RhdGVfID0gc3RhdGU7CisgIFNpZ25hbE1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkKCk7Cit9
CisKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0LmgKaW5kZXgg
OGU4OTg1MzNlZjk3YzFlYzZkMmJlZTQ3OGZmYTk2ZDIwNTAxZmVkMC4uOTUyZjJjY2I4Zjc0ODQ4
ZjY0NjU4NzEwNzBkZWEzNWIwOGMxNjIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnQuaApAQCAt
MTksNiArMTksNyBAQAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRl
ICJhcGkvY2FuZGlkYXRlLmgiCiAjaW5jbHVkZSAiYXBpL2pzZXAuaCIKKyNpbmNsdWRlICJhcGkv
bWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgInAycC9iYXNlL2R0bHN0cmFu
c3BvcnQuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wMnBjb25zdGFudHMuaCIKICNpbmNsdWRlICJw
MnAvYmFzZS90cmFuc3BvcnRpbmZvLmgiCkBAIC03MCwxMSArNzEsMTYgQEAgc3RydWN0IEpzZXBU
cmFuc3BvcnREZXNjcmlwdGlvbiB7CiAvLwogLy8gT24gVGhyZWFkaW5nOiBKc2VwVHJhbnNwb3J0
IHBlcmZvcm1zIHdvcmsgc29sZWx5IG9uIHRoZSBuZXR3b3JrIHRocmVhZCwgYW5kCiAvLyBzbyBp
dHMgbWV0aG9kcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIG5ldHdvcmsgdGhyZWFkLgot
Y2xhc3MgSnNlcFRyYW5zcG9ydCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CitjbGFz
cyBKc2VwVHJhbnNwb3J0IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+LAorICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayB7
CiAgcHVibGljOgogICAvLyB8bWlkfCBpcyBqdXN0IHVzZWQgZm9yIGxvZyBzdGF0ZW1lbnRzIGlu
IG9yZGVyIHRvIGlkZW50aWZ5IHRoZSBUcmFuc3BvcnQuCiAgIC8vIE5vdGUgdGhhdCB8bG9jYWxf
Y2VydGlmaWNhdGV8IGlzIGFsbG93ZWQgdG8gYmUgbnVsbCBzaW5jZSBhIHJlbW90ZQogICAvLyBk
ZXNjcmlwdGlvbiBtYXkgYmUgc2V0IGJlZm9yZSBhIGxvY2FsIGNlcnRpZmljYXRlIGlzIGdlbmVy
YXRlZC4KKyAgLy8KKyAgLy8gfG1lZGlhX3RyYXNwb3J0fCBpcyBvcHRpb25hbCAoZXhwZXJpbWVu
dGFsKS4gSWYgYXZhaWxhYmxlIGl0IHdpbGwgYmUgdXNlZAorICAvLyB0byBzZW5kIC8gcmVjZWl2
ZSBlbmNvZGVkIGF1ZGlvIGFuZCB2aWRlbyBmcmFtZXMgaW5zdGVhZCBvZiBSVFAuCisgIC8vIEN1
cnJlbnRseSB8bWVkaWFfdHJhbnNwb3J0fCBjYW4gY28tZXhpc3Qgd2l0aCBSVFAgLyBSVENQIHRy
YW5zcG9ydHMuCiAgIEpzZXBUcmFuc3BvcnQoCiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlk
LAogICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+JiBs
b2NhbF9jZXJ0aWZpY2F0ZSwKQEAgLTgyLDcgKzg4LDggQEAgY2xhc3MgSnNlcFRyYW5zcG9ydCA6
IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpTcnRwVHJhbnNwb3J0PiBzZGVzX3RyYW5zcG9ydCwKICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjx3ZWJydGM6OkR0bHNTcnRwVHJhbnNwb3J0PiBkdGxzX3NydHBfdHJhbnNwb3J0LAogICAgICAg
c3RkOjp1bmlxdWVfcHRyPER0bHNUcmFuc3BvcnRJbnRlcm5hbD4gcnRwX2R0bHNfdHJhbnNwb3J0
LAotICAgICAgc3RkOjp1bmlxdWVfcHRyPER0bHNUcmFuc3BvcnRJbnRlcm5hbD4gcnRjcF9kdGxz
X3RyYW5zcG9ydCk7CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHRsc1RyYW5zcG9ydEludGVybmFs
PiBydGNwX2R0bHNfdHJhbnNwb3J0LAorICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVk
aWFUcmFuc3BvcnRJbnRlcmZhY2U+IG1lZGlhX3RyYW5zcG9ydCk7CiAKICAgfkpzZXBUcmFuc3Bv
cnQoKSBvdmVycmlkZTsKIApAQCAtMTU4LDExICsxNjUsMjYgQEAgY2xhc3MgSnNlcFRyYW5zcG9y
dCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgcmV0dXJuIHJ0Y3BfZHRsc190
cmFuc3BvcnRfLmdldCgpOwogICB9CiAKKyAgLy8gUmV0dXJucyBtZWRpYSB0cmFuc3BvcnQsIGlm
IGF2YWlsYWJsZS4KKyAgLy8gTm90ZSB0aGF0IG1lZGlhIHRyYW5zcG9ydCBpcyBvd25lZCBieSBq
c2VwdHJhbnNwb3J0IGFuZCB0aGUgcG9pbnRlcgorICAvLyB0byBtZWRpYSB0cmFuc3BvcnQgd2ls
bCBiZWNvbWVzIGludmFsaWQgYWZ0ZXIgZGVzdHJ1Y3Rpb24gb2YganNlcHRyYW5zcG9ydC4KKyAg
d2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KCkgY29uc3Qg
eworICAgIHJldHVybiBtZWRpYV90cmFuc3BvcnRfLmdldCgpOworICB9CisKKyAgLy8gUmV0dXJu
cyB0aGUgbGF0ZXN0IG1lZGlhIHRyYW5zcG9ydCBzdGF0ZS4KKyAgd2VicnRjOjpNZWRpYVRyYW5z
cG9ydFN0YXRlIG1lZGlhX3RyYW5zcG9ydF9zdGF0ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gbWVk
aWFfdHJhbnNwb3J0X3N0YXRlXzsKKyAgfQorCiAgIC8vIFRoaXMgaXMgc2lnbmFsZWQgd2hlbiBS
VENQLW11eCBiZWNvbWVzIGFjdGl2ZSBhbmQKICAgLy8gfHJ0Y3BfZHRsc190cmFuc3BvcnRffCBp
cyBkZXN0cm95ZWQuIFRoZSBKc2VwVHJhbnNwb3J0Q29udHJvbGxlciB3aWxsCiAgIC8vIGhhbmRs
ZSB0aGUgc2lnbmFsIGFuZCB1cGRhdGUgdGhlIGFnZ3JlZ2F0ZSB0cmFuc3BvcnQgc3RhdGVzLgog
ICBzaWdzbG90OjpzaWduYWw8PiBTaWduYWxSdGNwTXV4QWN0aXZlOwogCisgIC8vIFRoaXMgaXMg
c2lnbmFsZWQgZm9yIGNoYW5nZXMgaW4gfG1lZGlhX3RyYW5zcG9ydF98IHN0YXRlLgorICBzaWdz
bG90OjpzaWduYWw8PiBTaWduYWxNZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZDsKKwogICAvLyBU
T0RPKGRlYWRiZWVmKTogVGhlIG1ldGhvZHMgYmVsb3cgYXJlIG9ubHkgcHVibGljIGZvciB0ZXN0
aW5nLiBTaG91bGQgbWFrZQogICAvLyB0aGVtIHV0aWxpdHkgZnVuY3Rpb25zIG9yIG9iamVjdHMg
c28gdGhleSBjYW4gYmUgdGVzdGVkIGluZGVwZW5kZW50bHkgZnJvbQogICAvLyB0aGlzIGNsYXNz
LgpAQCAtMjE4LDYgKzI0MCw5IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnQgOiBwdWJsaWMgc2lnc2xv
dDo6aGFzX3Nsb3RzPD4gewogICBib29sIEdldFRyYW5zcG9ydFN0YXRzKER0bHNUcmFuc3BvcnRJ
bnRlcm5hbCogZHRsc190cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNw
b3J0U3RhdHMqIHN0YXRzKTsKIAorICAvLyBJbnZva2VkIHdoZW5ldmVyIHRoZSBzdGF0ZSBvZiB0
aGUgbWVkaWEgdHJhbnNwb3J0IGNoYW5nZXMuCisgIHZvaWQgT25TdGF0ZUNoYW5nZWQod2VicnRj
OjpNZWRpYVRyYW5zcG9ydFN0YXRlIHN0YXRlKSBvdmVycmlkZTsKKwogICBjb25zdCBzdGQ6OnN0
cmluZyBtaWRfOwogICAvLyBuZWVkcy1pY2UtcmVzdGFydCBiaXQgYXMgZGVzY3JpYmVkIGluIEpT
RVAuCiAgIGJvb2wgbmVlZHNfaWNlX3Jlc3RhcnRfID0gZmFsc2U7CkBAIC0yNDEsNiArMjY2LDE0
IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewog
ICBhYnNsOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxpbnQ+PiBzZW5kX2V4dGVuc2lvbl9pZHNfOwog
ICBhYnNsOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxpbnQ+PiByZWN2X2V4dGVuc2lvbl9pZHNfOwog
CisgIC8vIE9wdGlvbmFsIG1lZGlhIHRyYW5zcG9ydCAoZXhwZXJpbWVudGFsKS4KKyAgc3RkOjp1
bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+IG1lZGlhX3RyYW5zcG9y
dF87CisKKyAgLy8gSWYgfG1lZGlhX3RyYW5zcG9ydF98IGlzIHByb3ZpZGVkLCB0aGlzIHZhcmlh
YmxlIHJlcHJlc2VudHMgdGhlIHN0YXRlIG9mCisgIC8vIG1lZGlhIHRyYW5zcG9ydC4KKyAgd2Vi
cnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlIG1lZGlhX3RyYW5zcG9ydF9zdGF0ZV8gPQorICAgICAg
d2VicnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlOjprUGVuZGluZzsKKwogICBSVENfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKEpzZXBUcmFuc3BvcnQpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydF91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pz
ZXB0cmFuc3BvcnRfdW5pdHRlc3QuY2MKaW5kZXggNTZhNzQyYzMzOGJjN2ZlMDNhZDNjMjE4Nzhl
MWNhNDBmMDkxY2M3NS4uZTUxODMwMWNlMmM4NjJmYzc1ZjY0OTFhZmY0YWQwM2ZiYzE2OWU2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
anNlcHRyYW5zcG9ydF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCkBAIC05OCwxMSAr
OTgsMTYgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydDJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qs
IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgIFJUQ19OT1RSRUFDSEVEKCk7
CiAgICAgfQogCisgICAgLy8gVE9ETyhzdWtoYW5vdik6IEN1cnJlbnRseSB0aGVyZSBpcyBubyBt
ZWRpYV90cmFuc3BvcnQgc3BlY2lmaWMKKyAgICAvLyBsb2dpYyBpbiBqc2VwdHJhbnNwb3J0LCBz
byBqc2VwdHJhbnNwb3J0IHVuaXR0ZXN0cyBhcmUgY3JlYXRlZCB3aXRoCisgICAgLy8gbWVkaWFf
dHJhbnNwb3J0ID0gbnVsbHB0ci4gSW4gdGhlIGZ1dHVyZSB3ZSB3aWxsIHByb2JhYmx5IGFkZAor
ICAgIC8vIG1vcmUgbG9naWMgdGhhdCByZXF1aXJlIHVuaXQgdGVzdHMuIE5vdGUgdGhhdCBjcmVh
dGlvbiBvZiBtZWRpYV90cmFuc3BvcnQKKyAgICAvLyBpcyBjb3ZlcmVkIGluIGpzZXB0cmFuc3Bv
cnRjb250cm9sbGVyX3VuaXR0ZXN0LgogICAgIGF1dG8ganNlcF90cmFuc3BvcnQgPSBhYnNsOjpt
YWtlX3VuaXF1ZTxKc2VwVHJhbnNwb3J0PigKICAgICAgICAga1RyYW5zcG9ydE5hbWUsIC8qbG9j
YWxfY2VydGlmaWNhdGU9Ki9udWxscHRyLAogICAgICAgICBzdGQ6Om1vdmUodW5lbmNyeXB0ZWRf
cnRwX3RyYW5zcG9ydCksIHN0ZDo6bW92ZShzZGVzX3RyYW5zcG9ydCksCiAgICAgICAgIHN0ZDo6
bW92ZShkdGxzX3NydHBfdHJhbnNwb3J0KSwgc3RkOjptb3ZlKHJ0cF9kdGxzX3RyYW5zcG9ydCks
Ci0gICAgICAgIHN0ZDo6bW92ZShydGNwX2R0bHNfdHJhbnNwb3J0KSk7CisgICAgICAgIHN0ZDo6
bW92ZShydGNwX2R0bHNfdHJhbnNwb3J0KSwgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsK
IAogICAgIHNpZ25hbF9ydGNwX211eF9hY3RpdmVfcmVjZWl2ZWRfID0gZmFsc2U7CiAgICAganNl
cF90cmFuc3BvcnQtPlNpZ25hbFJ0Y3BNdXhBY3RpdmUuY29ubmVjdCgKQEAgLTEyMSw3ICsxMjYs
NyBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0MlRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVi
bGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNT
TEZpbmdlcnByaW50PiBmaW5nZXJwcmludDsKICAgICBpZiAoY2VydCkgewotICAgICAgZmluZ2Vy
cHJpbnQucmVzZXQocnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKGNl
cnQpKTsKKyAgICAgIGZpbmdlcnByaW50ID0gcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJv
bUNlcnRpZmljYXRlKCpjZXJ0KTsKICAgICB9CiAgICAganNlcF9kZXNjcmlwdGlvbi50cmFuc3Bv
cnRfZGVzYyA9CiAgICAgICAgIFRyYW5zcG9ydERlc2NyaXB0aW9uKHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPigpLCB1ZnJhZywgcHdkLApAQCAtMzc4LDExICszODMsMTIgQEAgVEVTVF9QKEpzZXBU
cmFuc3BvcnQyV2l0aFJ0Y3BNdXgsIFZlcmlmeUNlcnRpZmljYXRlRmluZ2VycHJpbnQpIHsKICAg
ICBBU1NFUlRfTkUobnVsbHB0ciwgY2VydGlmaWNhdGUpOwogCiAgICAgc3RkOjpzdHJpbmcgZGln
ZXN0X2FsZ29yaXRobTsKLSAgICBBU1NFUlRfVFJVRShjZXJ0aWZpY2F0ZS0+c3NsX2NlcnRpZmlj
YXRlKCkuR2V0U2lnbmF0dXJlRGlnZXN0QWxnb3JpdGhtKAorICAgIEFTU0VSVF9UUlVFKGNlcnRp
ZmljYXRlLT5HZXRTU0xDZXJ0aWZpY2F0ZSgpLkdldFNpZ25hdHVyZURpZ2VzdEFsZ29yaXRobSgK
ICAgICAgICAgJmRpZ2VzdF9hbGdvcml0aG0pKTsKICAgICBBU1NFUlRfRkFMU0UoZGlnZXN0X2Fs
Z29yaXRobS5lbXB0eSgpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmlu
dD4gZ29vZF9maW5nZXJwcmludCgKLSAgICAgICAgcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRl
KGRpZ2VzdF9hbGdvcml0aG0sIGNlcnRpZmljYXRlLT5pZGVudGl0eSgpKSk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPHJ0Yzo6U1NMRmluZ2VycHJpbnQ+IGdvb2RfZmluZ2VycHJpbnQgPQorICAgICAg
ICBydGM6OlNTTEZpbmdlcnByaW50OjpDcmVhdGVVbmlxdWUoZGlnZXN0X2FsZ29yaXRobSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjZXJ0aWZpY2F0ZS0+aWRl
bnRpdHkoKSk7CiAgICAgQVNTRVJUX05FKG51bGxwdHIsIGdvb2RfZmluZ2VycHJpbnQpOwogCiAg
ICAgRVhQRUNUX1RSVUUoanNlcF90cmFuc3BvcnRfCkBAIC0xMDQ1LDcgKzEwNTEsNyBAQCBjbGFz
cyBKc2VwVHJhbnNwb3J0MkhlYWRlckV4dGVuc2lvblRlc3QKICAgdm9pZCBPblJlYWRQYWNrZXQx
KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGltZSwKKyAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovLAog
ICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8
PCAiSnNlcFRyYW5zcG9ydCAxIFJlY2VpdmVkIGEgcGFja2V0LiI7CiAgICAgQ29tcGFyZUhlYWRl
ckV4dGVuc2lvbnMoCkBAIC0xMDU4LDcgKzEwNjQsNyBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Mkhl
YWRlckV4dGVuc2lvblRlc3QKICAgdm9pZCBPblJlYWRQYWNrZXQyKHJ0Yzo6UGFja2V0VHJhbnNw
b3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGltZSwKKyAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovLAogICAgICAgICAgICAgICAgICAg
ICAgaW50IGZsYWdzKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiSnNlcFRyYW5zcG9ydCAy
IFJlY2VpdmVkIGEgcGFja2V0LiI7CiAgICAgQ29tcGFyZUhlYWRlckV4dGVuc2lvbnMoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2Vw
dHJhbnNwb3J0Y29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9sbGVyLmNjCmluZGV4IDRjNjlhNmEwN2Uy
OTU4OGNlOWJmYTRkZmE3YmUzNDg1NWEyZmYwMTIuLjc4ZWNhZjMxZGVhYzRlNDFlOGRiNDg4YTBk
ZjZjYTgxNTA0ZDJjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9sbGVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9s
bGVyLmNjCkBAIC0xNCwxMCArMTQsMTEgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
dXRpbGl0eT4KIAotI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInAy
cC9iYXNlL3BvcnQuaCIKKyNpbmNsdWRlICJwYy9zcnRwZmlsdGVyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvYmluZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2tleV9kZXJpdmF0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCiAK
IHVzaW5nIHdlYnJ0Yzo6U2RwVHlwZTsKQEAgLTEzMyw2ICsxMzQsMjQgQEAgUnRwVHJhbnNwb3J0
SW50ZXJuYWwqIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpHZXRSdHBUcmFuc3BvcnQoCiAgIHJl
dHVybiBqc2VwX3RyYW5zcG9ydC0+cnRwX3RyYW5zcG9ydCgpOwogfQogCitNZWRpYVRyYW5zcG9y
dEludGVyZmFjZSogSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkdldE1lZGlhVHJhbnNwb3J0KAor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpIGNvbnN0IHsKKyAgYXV0byBqc2VwX3RyYW5zcG9y
dCA9IEdldEpzZXBUcmFuc3BvcnRGb3JNaWQobWlkKTsKKyAgaWYgKCFqc2VwX3RyYW5zcG9ydCkg
eworICAgIHJldHVybiBudWxscHRyOworICB9CisgIHJldHVybiBqc2VwX3RyYW5zcG9ydC0+bWVk
aWFfdHJhbnNwb3J0KCk7Cit9CisKK01lZGlhVHJhbnNwb3J0U3RhdGUgSnNlcFRyYW5zcG9ydENv
bnRyb2xsZXI6OkdldE1lZGlhVHJhbnNwb3J0U3RhdGUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IG1pZCkgY29uc3QgeworICBhdXRvIGpzZXBfdHJhbnNwb3J0ID0gR2V0SnNlcFRyYW5zcG9ydEZv
ck1pZChtaWQpOworICBpZiAoIWpzZXBfdHJhbnNwb3J0KSB7CisgICAgcmV0dXJuIE1lZGlhVHJh
bnNwb3J0U3RhdGU6OmtQZW5kaW5nOworICB9CisgIHJldHVybiBqc2VwX3RyYW5zcG9ydC0+bWVk
aWFfdHJhbnNwb3J0X3N0YXRlKCk7Cit9CisKIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5h
bCogSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkdldER0bHNUcmFuc3BvcnQoCiAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIG1pZCkgY29uc3QgewogICBhdXRvIGpzZXBfdHJhbnNwb3J0ID0gR2V0SnNl
cFRyYW5zcG9ydEZvck1pZChtaWQpOwpAQCAtMzcwLDYgKzM4OSwxNSBAQCB2b2lkIEpzZXBUcmFu
c3BvcnRDb250cm9sbGVyOjpTZXRBY3RpdmVSZXNldFNydHBQYXJhbXMoCiAgIH0KIH0KIAordm9p
ZCBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6U2V0TWVkaWFUcmFuc3BvcnRGYWN0b3J5KAorICAg
IE1lZGlhVHJhbnNwb3J0RmFjdG9yeSogbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpIHsKKyAgUlRD
X0RDSEVDSyhtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9PSBjb25maWdfLm1lZGlhX3RyYW5zcG9y
dF9mYWN0b3J5IHx8CisgICAgICAgICAgICAganNlcF90cmFuc3BvcnRzX2J5X25hbWVfLmVtcHR5
KCkpCisgICAgICA8PCAiWW91IGNhbiBvbmx5IGNhbGwgU2V0TWVkaWFUcmFuc3BvcnRGYWN0b3J5
IGJlZm9yZSAiCisgICAgICAgICAiSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgY3JlYXRlZCBpdHMg
Zmlyc3QgdHJhbnNwb3J0LiI7CisgIGNvbmZpZ18ubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgPSBt
ZWRpYV90cmFuc3BvcnRfZmFjdG9yeTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkR0
bHNUcmFuc3BvcnRJbnRlcm5hbD4KIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpDcmVhdGVEdGxz
VHJhbnNwb3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcnRjcCkgewpAQCAtNDcxLDYg
KzQ5OSw4IEBAIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpDcmVhdGVEdGxzU3J0cFRyYW5zcG9y
dCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjcF9kdGxzX3Ry
YW5zcG9ydCk7CiAgIGR0bHNfc3J0cF90cmFuc3BvcnQtPlNldEFjdGl2ZVJlc2V0U3J0cFBhcmFt
cygKICAgICAgIGNvbmZpZ18uYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zKTsKKyAgZHRsc19zcnRw
X3RyYW5zcG9ydC0+U2lnbmFsRHRsc1N0YXRlQ2hhbmdlLmNvbm5lY3QoCisgICAgICB0aGlzLCAm
SnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OlVwZGF0ZUFnZ3JlZ2F0ZVN0YXRlc19uKTsKICAgcmV0
dXJuIGR0bHNfc3J0cF90cmFuc3BvcnQ7CiB9CiAKQEAgLTUyMyw3ICs1NTMsNyBAQCBSVENFcnJv
ciBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6QXBwbHlEZXNjcmlwdGlvbl9uKAogICAgICAgICAo
SXNCdW5kbGVkKGNvbnRlbnRfaW5mby5uYW1lKSAmJiBjb250ZW50X2luZm8ubmFtZSAhPSAqYnVu
ZGxlZF9taWQoKSkpIHsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KLSAgICBlcnJvciA9IE1heWJl
Q3JlYXRlSnNlcFRyYW5zcG9ydChjb250ZW50X2luZm8pOworICAgIGVycm9yID0gTWF5YmVDcmVh
dGVKc2VwVHJhbnNwb3J0KGxvY2FsLCBjb250ZW50X2luZm8pOwogICAgIGlmICghZXJyb3Iub2so
KSkgewogICAgICAgcmV0dXJuIGVycm9yOwogICAgIH0KQEAgLTczMiw2ICs3NjIsMTAgQEAgYm9v
bCBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6SGFuZGxlQnVuZGxlZENvbnRlbnQoCiAgIC8vIEJh
c2VDaGFubmVsL1NjdHBUcmFuc3BvcnQgY2hhbmdlIHRoZSBSdHBUcmFuc3BvcnQvRHRsc1RyYW5z
cG9ydCBmaXJzdCwKICAgLy8gdGhlbiBkZXN0cm95IHRoZSBjcmlja2V0OjpKc2VwVHJhbnNwb3J0
LgogICBpZiAoU2V0VHJhbnNwb3J0Rm9yTWlkKGNvbnRlbnRfaW5mby5uYW1lLCBqc2VwX3RyYW5z
cG9ydCkpIHsKKyAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NzE5KSBGb3IgbWVkaWEgdHJh
bnNwb3J0IHRoaXMgaXMgZmFyIGZyb20gaWRlYWwsCisgICAgLy8gYmVjYXVzZSBpdCBtZWFucyB0
aGF0IHdlIGZpcnN0IGNyZWF0ZSBtZWRpYSB0cmFuc3BvcnQgYW5kIHN0YXJ0CisgICAgLy8gY29u
bmVjdGluZyBpdCwgYW5kIHRoZW4gd2UgZGVzdHJveSBpdC4gV2Ugd2lsbCBuZWVkIHRvIGFkZHJl
c3MgaXQgYmVmb3JlCisgICAgLy8gdmlkZW8gcGF0aCBpcyBlbmFibGVkLgogICAgIE1heWJlRGVz
dHJveUpzZXBUcmFuc3BvcnQoY29udGVudF9pbmZvLm5hbWUpOwogICAgIHJldHVybiB0cnVlOwog
ICB9CkBAIC03NDksMTIgKzc4MywxMiBAQCBib29sIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpT
ZXRUcmFuc3BvcnRGb3JNaWQoCiAgIG1pZF90b190cmFuc3BvcnRfW21pZF0gPSBqc2VwX3RyYW5z
cG9ydDsKICAgcmV0dXJuIGNvbmZpZ18udHJhbnNwb3J0X29ic2VydmVyLT5PblRyYW5zcG9ydENo
YW5nZWQoCiAgICAgICBtaWQsIGpzZXBfdHJhbnNwb3J0LT5ydHBfdHJhbnNwb3J0KCksCi0gICAg
ICBqc2VwX3RyYW5zcG9ydC0+cnRwX2R0bHNfdHJhbnNwb3J0KCkpOworICAgICAganNlcF90cmFu
c3BvcnQtPnJ0cF9kdGxzX3RyYW5zcG9ydCgpLCBqc2VwX3RyYW5zcG9ydC0+bWVkaWFfdHJhbnNw
b3J0KCkpOwogfQogCiB2b2lkIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpSZW1vdmVUcmFuc3Bv
cnRGb3JNaWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCkgewotICBib29sIHJldCA9Ci0gICAgICBj
b25maWdfLnRyYW5zcG9ydF9vYnNlcnZlci0+T25UcmFuc3BvcnRDaGFuZ2VkKG1pZCwgbnVsbHB0
ciwgbnVsbHB0cik7CisgIGJvb2wgcmV0ID0gY29uZmlnXy50cmFuc3BvcnRfb2JzZXJ2ZXItPk9u
VHJhbnNwb3J0Q2hhbmdlZChtaWQsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyKTsKICAg
Ly8gQ2FsbGluZyBPblRyYW5zcG9ydENoYW5nZWQgd2l0aCBudWxscHRyIHNob3VsZCBhbHdheXMg
c3VjY2VlZCwgc2luY2UgaXQgaXMKICAgLy8gb25seSBleHBlY3RlZCB0byBmYWlsIHdoZW4gYWRk
aW5nIG1lZGlhIHRvIGEgdHJhbnNwb3J0IChub3QgcmVtb3ZpbmcpLgogICBSVENfRENIRUNLKHJl
dCk7CkBAIC04MDYsNyArODQwLDcgQEAgc3RkOjp2ZWN0b3I8aW50PiBKc2VwVHJhbnNwb3J0Q29u
dHJvbGxlcjo6R2V0RW5jcnlwdGVkSGVhZGVyRXh0ZW5zaW9uSWRzKAogICAgICAgc3RhdGljX2Nh
c3Q8Y29uc3QgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qPigKICAgICAgICAgICBj
b250ZW50X2luZm8uZGVzY3JpcHRpb24pOwogCi0gIGlmICghY29uZmlnXy5jcnlwdG9fb3B0aW9u
cy5lbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucykgeworICBpZiAoIWNvbmZp
Z18uY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5z
aW9ucykgewogICAgIHJldHVybiBzdGQ6OnZlY3RvcjxpbnQ+KCk7CiAgIH0KIApAQCAtODg4LDcg
KzkyMiw5NCBAQCBjcmlja2V0OjpKc2VwVHJhbnNwb3J0KiBKc2VwVHJhbnNwb3J0Q29udHJvbGxl
cjo6R2V0SnNlcFRyYW5zcG9ydEJ5TmFtZSgKICAgcmV0dXJuIChpdCA9PSBqc2VwX3RyYW5zcG9y
dHNfYnlfbmFtZV8uZW5kKCkpID8gbnVsbHB0ciA6IGl0LT5zZWNvbmQuZ2V0KCk7CiB9CiAKK3N0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPgorSnNlcFRyYW5z
cG9ydENvbnRyb2xsZXI6Ok1heWJlQ3JlYXRlTWVkaWFUcmFuc3BvcnQoCisgICAgY29uc3QgY3Jp
Y2tldDo6Q29udGVudEluZm8mIGNvbnRlbnRfaW5mbywKKyAgICBib29sIGxvY2FsLAorICAgIGNy
aWNrZXQ6OkljZVRyYW5zcG9ydEludGVybmFsKiBpY2VfdHJhbnNwb3J0KSB7CisgIGFic2w6Om9w
dGlvbmFsPGNyaWNrZXQ6OkNyeXB0b1BhcmFtcz4gc2VsZWN0ZWRfY3J5cHRvX2Zvcl9tZWRpYV90
cmFuc3BvcnQ7CisgIGlmIChjb250ZW50X2luZm8ubWVkaWFfZGVzY3JpcHRpb24oKSAmJgorICAg
ICAgIWNvbnRlbnRfaW5mby5tZWRpYV9kZXNjcmlwdGlvbigpLT5jcnlwdG9zKCkuZW1wdHkoKSkg
eworICAgIC8vIE9yZGVyIG9mIGNyeXB0b3MgaXMgZGV0ZXJtaW5pc3RpYyAocmZjNDU2OCwgNS4x
LjEpLCBzbyB3ZSBqdXN0IHNlbGVjdCB0aGUKKyAgICAvLyBmaXJzdCBvbmUgKGluIGZhY3QgdGhl
IGZpcnN0IG9uZSBzaG91bGQgYmUgdGhlIG1vc3QgcHJlZmVycmVkIG9uZS4pIFdlCisgICAgLy8g
aWdub3JlIHRoZSBITUFDIHNpemUsIGFzIG1lZGlhIHRyYW5zcG9ydCBjcnlwdG8gc2V0dGluZ3Mg
Y3VycmVudGx5IGRvbid0CisgICAgLy8gZXhwb3NlIEhNQUMgc2l6ZSwgbm9yIGNyeXB0byBwcm90
b2NvbCBmb3IgdGhhdCBtYXR0ZXIuCisgICAgc2VsZWN0ZWRfY3J5cHRvX2Zvcl9tZWRpYV90cmFu
c3BvcnQgPQorICAgICAgICBjb250ZW50X2luZm8ubWVkaWFfZGVzY3JpcHRpb24oKS0+Y3J5cHRv
cygpWzBdOworICB9CisKKyAgaWYgKGNvbmZpZ18ubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgIT0g
bnVsbHB0cikgeworICAgIGlmICghc2VsZWN0ZWRfY3J5cHRvX2Zvcl9tZWRpYV90cmFuc3BvcnQu
aGFzX3ZhbHVlKCkpIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgImE9Y3J5dG8gbGlu
ZSB3YXMgbm90IGZvdW5kIGluIHRoZSBvZmZlci4gTW9zdCAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJsaWtlbHkgeW91IGRpZCBub3QgZW5hYmxlIFNERVMuICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1ha2Ugc3VyZSB0byBwYXNzIGNvbmZpZy5lbmFibGVfZHRsc19z
cnRwPWZhbHNlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvIFJUQ0NvbmZpZ3Vy
YXRpb24uICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBjb250aW51ZSB3
aXRoIG1lZGlhIHRyYW5zcG9ydC4gRmFsbGluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJiYWNrIHRvIFJUUC4gaXNfbG9jYWw9IgorICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCBsb2NhbDsKKworICAgICAgLy8gUmVtb3ZlIG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5IGZyb20g
Y29uZmlnLCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8KKyAgICAgIC8vIHVzZSBpdCBvbiB0aGUg
c3Vic2VxdWVudCBjYWxsIChmb3IgdGhlIG90aGVyIHNpZGUgb2YgdGhlIG9mZmVyKS4KKyAgICAg
IGNvbmZpZ18ubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgPSBudWxscHRyOworICAgIH0gZWxzZSB7
CisgICAgICAvLyBOb3RlIHRoYXQgd2UgaWdub3JlIGhlcmUgbGlmZXRpbWUgYW5kIGxlbmd0aC4K
KyAgICAgIC8vIEluIGZhY3Qgd2UgdGFrZSB0aG9zZSBiaXRzIChpbmxpbmUsIGxpZmV0aW1lIGFu
ZCBsZW5ndGgpIGFuZCBrZWVwIGl0IGFzCisgICAgICAvLyBwYXJ0IG9mIGtleSBkZXJpdmF0aW9u
LgorICAgICAgLy8KKyAgICAgIC8vIFRlY2huaWNhbGx5LCB3ZSBhcmUgYWxzbyBub3QgZm9sbG93
aW5nIHJmYzQ1NjgsIHdoaWNoIHJlcXVpcmVzIHVzIHRvCisgICAgICAvLyBzZW5kIGFuZCBhbnN3
ZXIgd2l0aCB0aGUga2V5IHRoYXQgd2UgY2hvc2UuIEluIHByYWN0aWNlLCBmb3IgbWVkaWEKKyAg
ICAgIC8vIHRyYW5zcG9ydCwgdGhlIGN1cnJlbnQgYXBwcm9hY2ggc2hvdWxkIGJlIHN1ZmZpY2ll
bnQgKHdlIHRha2UgdGhlIGtleQorICAgICAgLy8gdGhhdCBzZW5kZXIgb2ZmZXJlZCwgYW5kIGNh
bGxlciBhc3N1bWVzIHdlIHdpbGwgdXNlIGl0LiBXZSBhcmUgbm90CisgICAgICAvLyBzaWduYWxp
bmcgYmFjayB0aGF0IHdlIGluZGVlZCB1c2VkIGl0LikKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OktleURlcml2YXRpb24+IGtleV9kZXJpdmF0aW9uID0KKyAgICAgICAgICBydGM6OktleURl
cml2YXRpb246OkNyZWF0ZShydGM6OktleURlcml2YXRpb25BbGdvcml0aG06OkhLREZfU0hBMjU2
KTsKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGxhYmVsID0gIk1lZGlhVHJhbnNwb3J0TGFiZWwi
OworICAgICAgY29uc3RleHByIGludCBrRGVyaXZlZEtleUJ5dGVTaXplID0gMzI7CisKKyAgICAg
IGludCBrZXlfbGVuLCBzYWx0X2xlbjsKKyAgICAgIGlmICghcnRjOjpHZXRTcnRwS2V5QW5kU2Fs
dExlbmd0aHMoCisgICAgICAgICAgICAgIHJ0Yzo6U3J0cENyeXB0b1N1aXRlRnJvbU5hbWUoCisg
ICAgICAgICAgICAgICAgICBzZWxlY3RlZF9jcnlwdG9fZm9yX21lZGlhX3RyYW5zcG9ydC52YWx1
ZSgpLmNpcGhlcl9zdWl0ZSksCisgICAgICAgICAgICAgICZrZXlfbGVuLCAmc2FsdF9sZW4pKSB7
CisgICAgICAgIFJUQ19DSEVDSyhmYWxzZSkgPDwgIkNhbm5vdCBzZXQgdXAgc2VjdXJlIG1lZGlh
IHRyYW5zcG9ydCI7CisgICAgICB9CisgICAgICBydGM6Olplcm9PbkZyZWVCdWZmZXI8dWludDhf
dD4gcmF3X2tleShrZXlfbGVuICsgc2FsdF9sZW4pOworCisgICAgICBjcmlja2V0OjpTcnRwRmls
dGVyOjpQYXJzZUtleVBhcmFtcygKKyAgICAgICAgICBzZWxlY3RlZF9jcnlwdG9fZm9yX21lZGlh
X3RyYW5zcG9ydC52YWx1ZSgpLmtleV9wYXJhbXMsCisgICAgICAgICAgcmF3X2tleS5kYXRhKCks
IHJhd19rZXkuc2l6ZSgpKTsKKyAgICAgIGFic2w6Om9wdGlvbmFsPHJ0Yzo6WmVyb09uRnJlZUJ1
ZmZlcjx1aW50OF90Pj4ga2V5ID0KKyAgICAgICAgICBrZXlfZGVyaXZhdGlvbi0+RGVyaXZlS2V5
KAorICAgICAgICAgICAgICByYXdfa2V5LAorICAgICAgICAgICAgICAvKnNhbHQ9Ki9udWxscHRy
LAorICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PigKKyAgICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGxhYmVsLmRhdGEoKSks
IGxhYmVsLnNpemUoKSksCisgICAgICAgICAgICAgIGtEZXJpdmVkS2V5Qnl0ZVNpemUpOworCisg
ICAgICAvLyBXZSB3YW50IHRvIGNyYXNoIHRoZSBhcHAgaWYgd2UgZG9uJ3QgaGF2ZSBhIGtleSwg
YW5kIG5vdCBzaWxlbnRseSBmYWxsCisgICAgICAvLyBiYWNrIHRvIHRoZSB1bnNlY3VyZSBjb21t
dW5pY2F0aW9uLgorICAgICAgUlRDX0NIRUNLKGtleS5oYXNfdmFsdWUoKSk7CisgICAgICBNZWRp
YVRyYW5zcG9ydFNldHRpbmdzIHNldHRpbmdzOworICAgICAgc2V0dGluZ3MuaXNfY2FsbGVyID0g
bG9jYWw7CisgICAgICBzZXR0aW5ncy5wcmVfc2hhcmVkX2tleSA9CisgICAgICAgICAgc3RkOjpz
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oa2V5LnZhbHVlKCkuZGF0YSgpKSwK
KyAgICAgICAgICAgICAgICAgICAgICBrZXkudmFsdWUoKS5zaXplKCkpOworICAgICAgYXV0byBt
ZWRpYV90cmFuc3BvcnRfcmVzdWx0ID0KKyAgICAgICAgICBjb25maWdfLm1lZGlhX3RyYW5zcG9y
dF9mYWN0b3J5LT5DcmVhdGVNZWRpYVRyYW5zcG9ydCgKKyAgICAgICAgICAgICAgaWNlX3RyYW5z
cG9ydCwgbmV0d29ya190aHJlYWRfLCBzZXR0aW5ncyk7CisKKyAgICAgIC8vIFRPRE8oc3VraGFu
b3YpOiBQcm9wZXIgZXJyb3IgaGFuZGxpbmcuCisgICAgICBSVENfQ0hFQ0sobWVkaWFfdHJhbnNw
b3J0X3Jlc3VsdC5vaygpKTsKKworICAgICAgcmV0dXJuIG1lZGlhX3RyYW5zcG9ydF9yZXN1bHQu
TW92ZVZhbHVlKCk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFJUQ0Vy
cm9yIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpNYXliZUNyZWF0ZUpzZXBUcmFuc3BvcnQoCisg
ICAgYm9vbCBsb2NhbCwKICAgICBjb25zdCBjcmlja2V0OjpDb250ZW50SW5mbyYgY29udGVudF9p
bmZvKSB7CiAgIFJUQ19EQ0hFQ0sobmV0d29ya190aHJlYWRfLT5Jc0N1cnJlbnQoKSk7CiAgIGNy
aWNrZXQ6OkpzZXBUcmFuc3BvcnQqIHRyYW5zcG9ydCA9IEdldEpzZXBUcmFuc3BvcnRCeU5hbWUo
Y29udGVudF9pbmZvLm5hbWUpOwpAQCAtOTA2LDE3ICsxMDI3LDI0IEBAIFJUQ0Vycm9yIEpzZXBU
cmFuc3BvcnRDb250cm9sbGVyOjpNYXliZUNyZWF0ZUpzZXBUcmFuc3BvcnQoCiAKICAgc3RkOjp1
bmlxdWVfcHRyPGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbD4gcnRwX2R0bHNfdHJhbnNw
b3J0ID0KICAgICAgIENyZWF0ZUR0bHNUcmFuc3BvcnQoY29udGVudF9pbmZvLm5hbWUsIC8qcnRj
cCA9Ki9mYWxzZSk7CisKICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJ
bnRlcm5hbD4gcnRjcF9kdGxzX3RyYW5zcG9ydDsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5z
cG9ydD4gdW5lbmNyeXB0ZWRfcnRwX3RyYW5zcG9ydDsKKyAgc3RkOjp1bmlxdWVfcHRyPFNydHBU
cmFuc3BvcnQ+IHNkZXNfdHJhbnNwb3J0OworICBzdGQ6OnVuaXF1ZV9wdHI8RHRsc1NydHBUcmFu
c3BvcnQ+IGR0bHNfc3J0cF90cmFuc3BvcnQ7CisgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5z
cG9ydEludGVyZmFjZT4gbWVkaWFfdHJhbnNwb3J0OworCiAgIGlmIChjb25maWdfLnJ0Y3BfbXV4
X3BvbGljeSAhPQogICAgICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprUnRjcE11eFBv
bGljeVJlcXVpcmUgJiYKICAgICAgIGNvbnRlbnRfaW5mby50eXBlID09IGNyaWNrZXQ6Ok1lZGlh
UHJvdG9jb2xUeXBlOjprUnRwKSB7CiAgICAgcnRjcF9kdGxzX3RyYW5zcG9ydCA9CiAgICAgICAg
IENyZWF0ZUR0bHNUcmFuc3BvcnQoY29udGVudF9pbmZvLm5hbWUsIC8qcnRjcCA9Ki90cnVlKTsK
ICAgfQorICBtZWRpYV90cmFuc3BvcnQgPSBNYXliZUNyZWF0ZU1lZGlhVHJhbnNwb3J0KAorICAg
ICAgY29udGVudF9pbmZvLCBsb2NhbCwgcnRwX2R0bHNfdHJhbnNwb3J0LT5pY2VfdHJhbnNwb3J0
KCkpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnQ+IHVuZW5jcnlwdGVkX3J0cF90
cmFuc3BvcnQ7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0PiBzZGVzX3RyYW5zcG9y
dDsKLSAgc3RkOjp1bmlxdWVfcHRyPER0bHNTcnRwVHJhbnNwb3J0PiBkdGxzX3NydHBfdHJhbnNw
b3J0OworICAvLyBUT0RPKHN1a2hhbm92KTogRG8gbm90IGNyZWF0ZSBSVFAvUlRDUCB0cmFuc3Bv
cnRzIGlmIG1lZGlhIHRyYW5zcG9ydCBpcworICAvLyB1c2VkLgogICBpZiAoY29uZmlnXy5kaXNh
YmxlX2VuY3J5cHRpb24pIHsKICAgICB1bmVuY3J5cHRlZF9ydHBfdHJhbnNwb3J0ID0gQ3JlYXRl
VW5lbmNyeXB0ZWRSdHBUcmFuc3BvcnQoCiAgICAgICAgIGNvbnRlbnRfaW5mby5uYW1lLCBydHBf
ZHRsc190cmFuc3BvcnQuZ2V0KCksIHJ0Y3BfZHRsc190cmFuc3BvcnQuZ2V0KCkpOwpAQCAtOTMy
LDkgKzEwNjAsMTIgQEAgUlRDRXJyb3IgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok1heWJlQ3Jl
YXRlSnNlcFRyYW5zcG9ydCgKICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OkpzZXBU
cmFuc3BvcnQ+KAogICAgICAgICAgIGNvbnRlbnRfaW5mby5uYW1lLCBjZXJ0aWZpY2F0ZV8sIHN0
ZDo6bW92ZSh1bmVuY3J5cHRlZF9ydHBfdHJhbnNwb3J0KSwKICAgICAgICAgICBzdGQ6Om1vdmUo
c2Rlc190cmFuc3BvcnQpLCBzdGQ6Om1vdmUoZHRsc19zcnRwX3RyYW5zcG9ydCksCi0gICAgICAg
ICAgc3RkOjptb3ZlKHJ0cF9kdGxzX3RyYW5zcG9ydCksIHN0ZDo6bW92ZShydGNwX2R0bHNfdHJh
bnNwb3J0KSk7CisgICAgICAgICAgc3RkOjptb3ZlKHJ0cF9kdGxzX3RyYW5zcG9ydCksIHN0ZDo6
bW92ZShydGNwX2R0bHNfdHJhbnNwb3J0KSwKKyAgICAgICAgICBzdGQ6Om1vdmUobWVkaWFfdHJh
bnNwb3J0KSk7CiAgIGpzZXBfdHJhbnNwb3J0LT5TaWduYWxSdGNwTXV4QWN0aXZlLmNvbm5lY3Qo
CiAgICAgICB0aGlzLCAmSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OlVwZGF0ZUFnZ3JlZ2F0ZVN0
YXRlc19uKTsKKyAganNlcF90cmFuc3BvcnQtPlNpZ25hbE1lZGlhVHJhbnNwb3J0U3RhdGVDaGFu
Z2VkLmNvbm5lY3QoCisgICAgICB0aGlzLCAmSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok9uTWVk
aWFUcmFuc3BvcnRTdGF0ZUNoYW5nZWRfbik7CiAgIFNldFRyYW5zcG9ydEZvck1pZChjb250ZW50
X2luZm8ubmFtZSwganNlcF90cmFuc3BvcnQuZ2V0KCkpOwogCiAgIGpzZXBfdHJhbnNwb3J0c19i
eV9uYW1lX1tjb250ZW50X2luZm8ubmFtZV0gPSBzdGQ6Om1vdmUoanNlcF90cmFuc3BvcnQpOwpA
QCAtOTU2LDEyICsxMDg3LDE5IEBAIHZvaWQgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok1heWJl
RGVzdHJveUpzZXBUcmFuc3BvcnQoCiAgICAgICByZXR1cm47CiAgICAgfQogICB9CisKICAganNl
cF90cmFuc3BvcnRzX2J5X25hbWVfLmVyYXNlKG1pZCk7CiAgIFVwZGF0ZUFnZ3JlZ2F0ZVN0YXRl
c19uKCk7CiB9CiAKIHZvaWQgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkRlc3Ryb3lBbGxKc2Vw
VHJhbnNwb3J0c19uKCkgewogICBSVENfRENIRUNLKG5ldHdvcmtfdGhyZWFkXy0+SXNDdXJyZW50
KCkpOworCisgIGZvciAoY29uc3QgYXV0byYganNlcF90cmFuc3BvcnQgOiBqc2VwX3RyYW5zcG9y
dHNfYnlfbmFtZV8pIHsKKyAgICBjb25maWdfLnRyYW5zcG9ydF9vYnNlcnZlci0+T25UcmFuc3Bv
cnRDaGFuZ2VkKGpzZXBfdHJhbnNwb3J0LmZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Cisg
IH0KKwogICBqc2VwX3RyYW5zcG9ydHNfYnlfbmFtZV8uY2xlYXIoKTsKIH0KIApAQCAtMTExNiwx
OCArMTI1NCwzNSBAQCB2b2lkIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpPblRyYW5zcG9ydFN0
YXRlQ2hhbmdlZF9uKAogICBVcGRhdGVBZ2dyZWdhdGVTdGF0ZXNfbigpOwogfQogCit2b2lkIEpz
ZXBUcmFuc3BvcnRDb250cm9sbGVyOjpPbk1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkX24oKSB7
CisgIFNpZ25hbE1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkKCk7CisgIFVwZGF0ZUFnZ3JlZ2F0
ZVN0YXRlc19uKCk7Cit9CisKIHZvaWQgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OlVwZGF0ZUFn
Z3JlZ2F0ZVN0YXRlc19uKCkgewogICBSVENfRENIRUNLKG5ldHdvcmtfdGhyZWFkXy0+SXNDdXJy
ZW50KCkpOwogCiAgIGF1dG8gZHRsc190cmFuc3BvcnRzID0gR2V0RHRsc1RyYW5zcG9ydHMoKTsK
ICAgY3JpY2tldDo6SWNlQ29ubmVjdGlvblN0YXRlIG5ld19jb25uZWN0aW9uX3N0YXRlID0KICAg
ICAgIGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGluZzsKKyAgUGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUgPQor
ICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZTo6a0ljZUNv
bm5lY3Rpb25OZXc7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0
YXRlIG5ld19jb21iaW5lZF9zdGF0ZSA9CisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
UGVlckNvbm5lY3Rpb25TdGF0ZTo6a05ldzsKICAgY3JpY2tldDo6SWNlR2F0aGVyaW5nU3RhdGUg
bmV3X2dhdGhlcmluZ19zdGF0ZSA9IGNyaWNrZXQ6OmtJY2VHYXRoZXJpbmdOZXc7CiAgIGJvb2wg
YW55X2ZhaWxlZCA9IGZhbHNlOworCisgIC8vIFRPRE8oaHR0cDovL2J1Z3Mud2VicnRjLm9yZy85
NzE5KSBJZih3aGVuKSBtZWRpYV90cmFuc3BvcnQgZGlzYWJsZXMKKyAgLy8gZHRsc190cmFuc3Bv
cnRzIGVudGlyZWx5LCB0aGUgYmVsb3cgbGluZSB3aWxsIGhhdmUgdG8gYmUgY2hhbmdlZCB0byBh
Y2NvdW50CisgIC8vIGZvciB0aGUgZmFjdCB0aGF0IGR0bHMgdHJhbnNwb3J0cyBtaWdodCBiZSBh
YnNlbnQuCiAgIGJvb2wgYWxsX2Nvbm5lY3RlZCA9ICFkdGxzX3RyYW5zcG9ydHMuZW1wdHkoKTsK
ICAgYm9vbCBhbGxfY29tcGxldGVkID0gIWR0bHNfdHJhbnNwb3J0cy5lbXB0eSgpOwogICBib29s
IGFueV9nYXRoZXJpbmcgPSBmYWxzZTsKICAgYm9vbCBhbGxfZG9uZV9nYXRoZXJpbmcgPSAhZHRs
c190cmFuc3BvcnRzLmVtcHR5KCk7CisKKyAgc3RkOjptYXA8SWNlVHJhbnNwb3J0U3RhdGUsIGlu
dD4gaWNlX3N0YXRlX2NvdW50czsKKyAgc3RkOjptYXA8Y3JpY2tldDo6RHRsc1RyYW5zcG9ydFN0
YXRlLCBpbnQ+IGR0bHNfc3RhdGVfY291bnRzOworCiAgIGZvciAoY29uc3QgYXV0byYgZHRscyA6
IGR0bHNfdHJhbnNwb3J0cykgewogICAgIGFueV9mYWlsZWQgPSBhbnlfZmFpbGVkIHx8IGR0bHMt
PmljZV90cmFuc3BvcnQoKS0+R2V0U3RhdGUoKSA9PQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmlja2V0OjpJY2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfRkFJTEVEOwpAQCAt
MTE0NCw3ICsxMjk5LDM1IEBAIHZvaWQgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OlVwZGF0ZUFn
Z3JlZ2F0ZVN0YXRlc19uKCkgewogICAgIGFsbF9kb25lX2dhdGhlcmluZyA9CiAgICAgICAgIGFs
bF9kb25lX2dhdGhlcmluZyAmJiBkdGxzLT5pY2VfdHJhbnNwb3J0KCktPmdhdGhlcmluZ19zdGF0
ZSgpID09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6a0ljZUdh
dGhlcmluZ0NvbXBsZXRlOworCisgICAgZHRsc19zdGF0ZV9jb3VudHNbZHRscy0+ZHRsc19zdGF0
ZSgpXSsrOworICAgIGljZV9zdGF0ZV9jb3VudHNbZHRscy0+aWNlX3RyYW5zcG9ydCgpLT5HZXRJ
Y2VUcmFuc3BvcnRTdGF0ZSgpXSsrOwogICB9CisKKyAgZm9yIChhdXRvIGl0ID0ganNlcF90cmFu
c3BvcnRzX2J5X25hbWVfLmJlZ2luKCk7CisgICAgICAgaXQgIT0ganNlcF90cmFuc3BvcnRzX2J5
X25hbWVfLmVuZCgpOyArK2l0KSB7CisgICAgYXV0byBqc2VwX3RyYW5zcG9ydCA9IGl0LT5zZWNv
bmQuZ2V0KCk7CisgICAgaWYgKCFqc2VwX3RyYW5zcG9ydC0+bWVkaWFfdHJhbnNwb3J0KCkpIHsK
KyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIC8vIFRoZXJlIGlzIG5vICdrSWNlQ29ubmVj
dGlvbkRpc2Nvbm5lY3RlZCcsIHNvIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUKKyAgICAvLyBjb25u
ZWN0ZWQgYW5kIGNvbXBsZXRlZC4KKyAgICAvLyBXZSB0cmVhdCBrQ2xvc2VkIGFzIGZhaWxlZCwg
YmVjYXVzZSBpZiBpdCBoYXBwZW5zIGJlZm9yZSBzaHV0dGluZyBkb3duCisgICAgLy8gbWVkaWEg
dHJhbnNwb3J0cyBpdCBtZWFucyB0aGF0IHRoZXJlIHdhcyBhIGZhaWx1cmUuCisgICAgLy8gTWVk
aWFUcmFuc3BvcnRJbnRlcmZhY2UgYWxsb3dzIHRvIGZsaXAgYmFjayBhbmQgZm9ydGggYmV0d2Vl
biBrV3JpdGFibGUKKyAgICAvLyBhbmQga1BlbmRpbmcsIGJ1dCB0aGVyZSBkb2VzIG5vdCBleGlz
dCBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGRvZXMgdGhhdCwKKyAgICAvLyBhbmQgdGhlIGNvbnRy
YWN0IG9mIGpzZXAgdHJhbnNwb3J0IGNvbnRyb2xsZXIgZG9lc24ndCBxdWl0ZSBleHBlY3QgdGhh
dC4KKyAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywgd2Ugd291bGQgZ28gZnJvbSBjb25uZWN0ZWQg
dG8gY29ubmVjdGluZyBzdGF0ZSwgYnV0CisgICAgLy8gdGhpcyBtYXkgY2hhbmdlIGluIGZ1dHVy
ZS4KKyAgICBhbnlfZmFpbGVkIHw9IGpzZXBfdHJhbnNwb3J0LT5tZWRpYV90cmFuc3BvcnRfc3Rh
dGUoKSA9PQorICAgICAgICAgICAgICAgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlOjpr
Q2xvc2VkOworICAgIGFsbF9jb21wbGV0ZWQgJj0ganNlcF90cmFuc3BvcnQtPm1lZGlhX3RyYW5z
cG9ydF9zdGF0ZSgpID09CisgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6Ok1lZGlhVHJhbnNw
b3J0U3RhdGU6OmtXcml0YWJsZTsKKyAgICBhbGxfY29ubmVjdGVkICY9IGpzZXBfdHJhbnNwb3J0
LT5tZWRpYV90cmFuc3BvcnRfc3RhdGUoKSA9PQorICAgICAgICAgICAgICAgICAgICAgd2VicnRj
OjpNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGU7CisgIH0KKwogICBpZiAoYW55X2ZhaWxl
ZCkgewogICAgIG5ld19jb25uZWN0aW9uX3N0YXRlID0gY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25G
YWlsZWQ7CiAgIH0gZWxzZSBpZiAoYWxsX2NvbXBsZXRlZCkgewpAQCAtMTE2MCw2ICsxMzQzLDEy
NyBAQCB2b2lkIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpVcGRhdGVBZ2dyZWdhdGVTdGF0ZXNf
bigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgfQogCisgIC8vIENv
bXB1dGUgdGhlIGN1cnJlbnQgUlRDSWNlQ29ubmVjdGlvblN0YXRlIGFzIGRlc2NyaWJlZCBpbgor
ICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2VicnRjLyNkb20tcnRjaWNlY29ubmVjdGlvbnN0
YXRlLgorICAvLyBUaGUgUGVlckNvbm5lY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5n
IHRoZSAiY2xvc2VkIiBzdGF0ZS4KKyAgaW50IHRvdGFsX2ljZV9jaGVja2luZyA9IGljZV9zdGF0
ZV9jb3VudHNbSWNlVHJhbnNwb3J0U3RhdGU6OmtDaGVja2luZ107CisgIGludCB0b3RhbF9pY2Vf
Y29ubmVjdGVkID0gaWNlX3N0YXRlX2NvdW50c1tJY2VUcmFuc3BvcnRTdGF0ZTo6a0Nvbm5lY3Rl
ZF07CisgIGludCB0b3RhbF9pY2VfY29tcGxldGVkID0gaWNlX3N0YXRlX2NvdW50c1tJY2VUcmFu
c3BvcnRTdGF0ZTo6a0NvbXBsZXRlZF07CisgIGludCB0b3RhbF9pY2VfZmFpbGVkID0gaWNlX3N0
YXRlX2NvdW50c1tJY2VUcmFuc3BvcnRTdGF0ZTo6a0ZhaWxlZF07CisgIGludCB0b3RhbF9pY2Vf
ZGlzY29ubmVjdGVkID0KKyAgICAgIGljZV9zdGF0ZV9jb3VudHNbSWNlVHJhbnNwb3J0U3RhdGU6
OmtEaXNjb25uZWN0ZWRdOworICBpbnQgdG90YWxfaWNlX2Nsb3NlZCA9IGljZV9zdGF0ZV9jb3Vu
dHNbSWNlVHJhbnNwb3J0U3RhdGU6OmtDbG9zZWRdOworICBpbnQgdG90YWxfaWNlX25ldyA9IGlj
ZV9zdGF0ZV9jb3VudHNbSWNlVHJhbnNwb3J0U3RhdGU6OmtOZXddOworICBpbnQgdG90YWxfaWNl
ID0gZHRsc190cmFuc3BvcnRzLnNpemUoKTsKKworICBpZiAodG90YWxfaWNlX2ZhaWxlZCA+IDAp
IHsKKyAgICAvLyBBbnkgb2YgdGhlIFJUQ0ljZVRyYW5zcG9ydHMgYXJlIGluIHRoZSAiZmFpbGVk
IiBzdGF0ZS4KKyAgICBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUgPSBQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25GYWlsZWQ7CisgIH0gZWxzZSBpZiAodG90YWxfaWNlX2Rp
c2Nvbm5lY3RlZCA+IDApIHsKKyAgICAvLyBBbnkgb2YgdGhlIFJUQ0ljZVRyYW5zcG9ydHMgYXJl
IGluIHRoZSAiZGlzY29ubmVjdGVkIiBzdGF0ZSBhbmQgbm9uZSBvZgorICAgIC8vIHRoZW0gYXJl
IGluIHRoZSAiZmFpbGVkIiBzdGF0ZS4KKyAgICBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUgPQor
ICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25EaXNjb25uZWN0
ZWQ7CisgIH0gZWxzZSBpZiAodG90YWxfaWNlX2NoZWNraW5nID4gMCkgeworICAgIC8vIEFueSBv
ZiB0aGUgUlRDSWNlVHJhbnNwb3J0cyBhcmUgaW4gdGhlICJjaGVja2luZyIgc3RhdGUgYW5kIG5v
bmUgb2YgdGhlbQorICAgIC8vIGFyZSBpbiB0aGUgImRpc2Nvbm5lY3RlZCIgb3IgImZhaWxlZCIg
c3RhdGUuCisgICAgbmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlID0gUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OmtJY2VDb25uZWN0aW9uQ2hlY2tpbmc7CisgIH0gZWxzZSBpZiAodG90YWxfaWNlX2Nv
bXBsZXRlZCArIHRvdGFsX2ljZV9jbG9zZWQgPT0gdG90YWxfaWNlICYmCisgICAgICAgICAgICAg
dG90YWxfaWNlX2NvbXBsZXRlZCA+IDApIHsKKyAgICAvLyBBbGwgUlRDSWNlVHJhbnNwb3J0cyBh
cmUgaW4gdGhlICJjb21wbGV0ZWQiIG9yICJjbG9zZWQiIHN0YXRlIGFuZCBhdAorICAgIC8vIGxl
YXN0IG9uZSBvZiB0aGVtIGlzIGluIHRoZSAiY29tcGxldGVkIiBzdGF0ZS4KKyAgICBuZXdfaWNl
X2Nvbm5lY3Rpb25fc3RhdGUgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rp
b25Db21wbGV0ZWQ7CisgIH0gZWxzZSBpZiAodG90YWxfaWNlX2Nvbm5lY3RlZCArIHRvdGFsX2lj
ZV9jb21wbGV0ZWQgKyB0b3RhbF9pY2VfY2xvc2VkID09CisgICAgICAgICAgICAgICAgIHRvdGFs
X2ljZSAmJgorICAgICAgICAgICAgIHRvdGFsX2ljZV9jb25uZWN0ZWQgPiAwKSB7CisgICAgLy8g
QWxsIFJUQ0ljZVRyYW5zcG9ydHMgYXJlIGluIHRoZSAiY29ubmVjdGVkIiwgImNvbXBsZXRlZCIg
b3IgImNsb3NlZCIKKyAgICAvLyBzdGF0ZSBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZW0gaXMgaW4g
dGhlICJjb25uZWN0ZWQiIHN0YXRlLgorICAgIG5ld19pY2VfY29ubmVjdGlvbl9zdGF0ZSA9IFBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkNvbm5lY3RlZDsKKyAgfSBlbHNl
IGlmICgodG90YWxfaWNlX25ldyA+IDAgJiYKKyAgICAgICAgICAgICAgdG90YWxfaWNlX2NoZWNr
aW5nICsgdG90YWxfaWNlX2Rpc2Nvbm5lY3RlZCArIHRvdGFsX2ljZV9mYWlsZWQgPT0KKyAgICAg
ICAgICAgICAgICAgIDApIHx8CisgICAgICAgICAgICAgdG90YWxfaWNlID09IHRvdGFsX2ljZV9j
bG9zZWQpIHsKKyAgICAvLyBBbnkgb2YgdGhlIFJUQ0ljZVRyYW5zcG9ydHMgYXJlIGluIHRoZSAi
bmV3IiBzdGF0ZSBhbmQgbm9uZSBvZiB0aGVtIGFyZQorICAgIC8vIGluIHRoZSAiY2hlY2tpbmci
LCAiZGlzY29ubmVjdGVkIiBvciAiZmFpbGVkIiBzdGF0ZSwgb3IgYWxsCisgICAgLy8gUlRDSWNl
VHJhbnNwb3J0cyBhcmUgaW4gdGhlICJjbG9zZWQiIHN0YXRlLCBvciB0aGVyZSBhcmUgbm8gdHJh
bnNwb3J0cy4KKyAgICBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUgPSBQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25OZXc7CisgIH0gZWxzZSB7CisgICAgUlRDX05PVFJFQUNI
RUQoKTsKKyAgfQorCisgIGlmIChzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25fc3RhdGVfICE9
IG5ld19pY2VfY29ubmVjdGlvbl9zdGF0ZSkgeworICAgIHN0YW5kYXJkaXplZF9pY2VfY29ubmVj
dGlvbl9zdGF0ZV8gPSBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGU7CisgICAgaW52b2tlcl8uQXN5
bmNJbnZva2U8dm9pZD4oCisgICAgICAgIFJUQ19GUk9NX0hFUkUsIHNpZ25hbGluZ190aHJlYWRf
LCBbdGhpcywgbmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlXSB7CisgICAgICAgICAgU2lnbmFsU3Rh
bmRhcmRpemVkSWNlQ29ubmVjdGlvblN0YXRlKG5ld19pY2VfY29ubmVjdGlvbl9zdGF0ZSk7Cisg
ICAgICAgIH0pOworICB9CisKKyAgLy8gQ29tcHV0ZSB0aGUgY3VycmVudCBSVENQZWVyQ29ubmVj
dGlvblN0YXRlIGFzIGRlc2NyaWJlZCBpbgorICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2Vi
cnRjLyNkb20tcnRjcGVlcmNvbm5lY3Rpb25zdGF0ZS4KKyAgLy8gVGhlIFBlZXJDb25uZWN0aW9u
IGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgImNsb3NlZCIgc3RhdGUuCisgIC8vIE5v
dGUgdGhhdCAiY29ubmVjdGluZyIgaXMgb25seSBhIHZhbGlkIHN0YXRlIGZvciBEVExTIHRyYW5z
cG9ydHMgd2hpbGUKKyAgLy8gImNoZWNraW5nIiwgImNvbXBsZXRlZCIgYW5kICJkaXNjb25uZWN0
ZWQiIGFyZSBvbmx5IHZhbGlkIGZvciBJQ0UKKyAgLy8gdHJhbnNwb3J0cy4KKyAgaW50IHRvdGFs
X2Nvbm5lY3RlZCA9IHRvdGFsX2ljZV9jb25uZWN0ZWQgKworICAgICAgICAgICAgICAgICAgICAg
ICAgZHRsc19zdGF0ZV9jb3VudHNbY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEXTsK
KyAgaW50IHRvdGFsX2R0bHNfY29ubmVjdGluZyA9CisgICAgICBkdGxzX3N0YXRlX2NvdW50c1tj
cmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNUSU5HXTsKKyAgaW50IHRvdGFsX2ZhaWxlZCA9
CisgICAgICB0b3RhbF9pY2VfZmFpbGVkICsgZHRsc19zdGF0ZV9jb3VudHNbY3JpY2tldDo6RFRM
U19UUkFOU1BPUlRfRkFJTEVEXTsKKyAgaW50IHRvdGFsX2Nsb3NlZCA9CisgICAgICB0b3RhbF9p
Y2VfY2xvc2VkICsgZHRsc19zdGF0ZV9jb3VudHNbY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ0xP
U0VEXTsKKyAgaW50IHRvdGFsX25ldyA9CisgICAgICB0b3RhbF9pY2VfbmV3ICsgZHRsc19zdGF0
ZV9jb3VudHNbY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfTkVXXTsKKyAgaW50IHRvdGFsX3RyYW5z
cG9ydHMgPSB0b3RhbF9pY2UgKiAyOworCisgIGlmICh0b3RhbF9mYWlsZWQgPiAwKSB7CisgICAg
Ly8gQW55IG9mIHRoZSBSVENJY2VUcmFuc3BvcnRzIG9yIFJUQ0R0bHNUcmFuc3BvcnRzIGFyZSBp
biBhICJmYWlsZWQiIHN0YXRlLgorICAgIG5ld19jb21iaW5lZF9zdGF0ZSA9IFBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprRmFpbGVkOworICB9IGVsc2UgaWYg
KHRvdGFsX2ljZV9kaXNjb25uZWN0ZWQgPiAwICYmCisgICAgICAgICAgICAgdG90YWxfZHRsc19j
b25uZWN0aW5nICsgdG90YWxfaWNlX2NoZWNraW5nID09IDApIHsKKyAgICAvLyBBbnkgb2YgdGhl
IFJUQ0ljZVRyYW5zcG9ydHMgb3IgUlRDRHRsc1RyYW5zcG9ydHMgYXJlIGluIHRoZQorICAgIC8v
ICJkaXNjb25uZWN0ZWQiIHN0YXRlIGFuZCBub25lIG9mIHRoZW0gYXJlIGluIHRoZSAiZmFpbGVk
IiBvciAiY29ubmVjdGluZyIKKyAgICAvLyBvciAiY2hlY2tpbmciIHN0YXRlLgorICAgIG5ld19j
b21iaW5lZF9zdGF0ZSA9CisgICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29u
bmVjdGlvblN0YXRlOjprRGlzY29ubmVjdGVkOworICB9IGVsc2UgaWYgKHRvdGFsX2R0bHNfY29u
bmVjdGluZyArIHRvdGFsX2ljZV9jaGVja2luZyA+IDApIHsKKyAgICAvLyBBbnkgb2YgdGhlIFJU
Q0ljZVRyYW5zcG9ydHMgb3IgUlRDRHRsc1RyYW5zcG9ydHMgYXJlIGluIHRoZSAiY29ubmVjdGlu
ZyIKKyAgICAvLyBvciAiY2hlY2tpbmciIHN0YXRlIGFuZCBub25lIG9mIHRoZW0gaXMgaW4gdGhl
ICJmYWlsZWQiIHN0YXRlLgorICAgIG5ld19jb21iaW5lZF9zdGF0ZSA9CisgICAgICAgIFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29ubmVjdGluZzsKKyAg
fSBlbHNlIGlmICh0b3RhbF9jb25uZWN0ZWQgKyB0b3RhbF9pY2VfY29tcGxldGVkICsgdG90YWxf
Y2xvc2VkID09CisgICAgICAgICAgICAgICAgIHRvdGFsX3RyYW5zcG9ydHMgJiYKKyAgICAgICAg
ICAgICB0b3RhbF9jb25uZWN0ZWQgKyB0b3RhbF9pY2VfY29tcGxldGVkID4gMCkgeworICAgIC8v
IEFsbCBSVENJY2VUcmFuc3BvcnRzIGFuZCBSVENEdGxzVHJhbnNwb3J0cyBhcmUgaW4gdGhlICJj
b25uZWN0ZWQiLAorICAgIC8vICJjb21wbGV0ZWQiIG9yICJjbG9zZWQiIHN0YXRlIGFuZCBhdCBs
ZWFzdCBvbmUgb2YgdGhlbSBpcyBpbiB0aGUKKyAgICAvLyAiY29ubmVjdGVkIiBvciAiY29tcGxl
dGVkIiBzdGF0ZS4KKyAgICBuZXdfY29tYmluZWRfc3RhdGUgPQorICAgICAgICBQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3RlZDsKKyAgfSBlbHNl
IGlmICgodG90YWxfbmV3ID4gMCAmJiB0b3RhbF9kdGxzX2Nvbm5lY3RpbmcgKyB0b3RhbF9pY2Vf
Y2hlY2tpbmcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxf
ZmFpbGVkICsgdG90YWxfaWNlX2Rpc2Nvbm5lY3RlZCA9PQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwKSB8fAorICAgICAgICAgICAgIHRvdGFsX3RyYW5zcG9ydHMgPT0gdG90
YWxfY2xvc2VkKSB7CisgICAgLy8gQW55IG9mIHRoZSBSVENJY2VUcmFuc3BvcnRzIG9yIFJUQ0R0
bHNUcmFuc3BvcnRzIGFyZSBpbiB0aGUgIm5ldyIgc3RhdGUKKyAgICAvLyBhbmQgbm9uZSBvZiB0
aGUgdHJhbnNwb3J0cyBhcmUgaW4gdGhlICJjb25uZWN0aW5nIiwgImNoZWNraW5nIiwgImZhaWxl
ZCIKKyAgICAvLyBvciAiZGlzY29ubmVjdGVkIiBzdGF0ZSwgb3IgYWxsIHRyYW5zcG9ydHMgYXJl
IGluIHRoZSAiY2xvc2VkIiBzdGF0ZSwgb3IKKyAgICAvLyB0aGVyZSBhcmUgbm8gdHJhbnNwb3J0
cy4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBpZiBub25lIG9mIHRoZSBvdGhlciBjb25kaXRp
b25zIGhvbGQgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlCisgICAgLy8gdHJ1ZS4KKyAgICBuZXdf
Y29tYmluZWRfc3RhdGUgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25T
dGF0ZTo6a05ldzsKKyAgfSBlbHNlIHsKKyAgICBSVENfTk9UUkVBQ0hFRCgpOworICB9CisKKyAg
aWYgKGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfICE9IG5ld19jb21iaW5lZF9zdGF0ZSkgewor
ICAgIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfID0gbmV3X2NvbWJpbmVkX3N0YXRlOworICAg
IGludm9rZXJfLkFzeW5jSW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIHNpZ25hbGluZ190aHJl
YWRfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLCBuZXdfY29tYmluZWRf
c3RhdGVdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hbENvbm5lY3Rp
b25TdGF0ZShuZXdfY29tYmluZWRfc3RhdGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0pOworICB9CisKICAgaWYgKGFsbF9kb25lX2dhdGhlcmluZykgewogICAgIG5ld19nYXRo
ZXJpbmdfc3RhdGUgPSBjcmlja2V0OjprSWNlR2F0aGVyaW5nQ29tcGxldGU7CiAgIH0gZWxzZSBp
ZiAoYW55X2dhdGhlcmluZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydGNvbnRyb2xsZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9s
bGVyLmgKaW5kZXggZDkzNDBjZjM1N2QwZTEzNDVkYjYzNTg5M2UyZmIyN2EzNDQ1MTQ4MC4uM2Vk
N2Y1ZjQzM2I3YTYyNTBiMzQ1ZWQ5NjA4NmZlMmYzODNkMzBjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydGNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9qc2VwdHJhbnNwb3J0Y29udHJvbGxlci5oCkBAIC0xOCw2ICsxOCw4IEBACiAjaW5jbHVkZSA8
dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2NhbmRpZGF0ZS5oIgorI2luY2x1ZGUgImFwaS9jcnlw
dG8vY3J5cHRvb3B0aW9ucy5oIgorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJtZWRp
YS9zY3RwL3NjdHB0cmFuc3BvcnRpbnRlcm5hbC5oIgpAQCAtMzIsNyArMzQsNiBAQAogI2luY2x1
ZGUgInJ0Y19iYXNlL2FzeW5jaW52b2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVj
dG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
aXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKQEAgLTU2LDcg
KzU3LDggQEAgY2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgOiBwdWJsaWMgc2lnc2xvdDo6
aGFzX3Nsb3RzPD4gewogICAgIHZpcnR1YWwgYm9vbCBPblRyYW5zcG9ydENoYW5nZWQoCiAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsCiAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVybmFs
KiBydHBfdHJhbnNwb3J0LAotICAgICAgICBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwq
IGR0bHNfdHJhbnNwb3J0KSA9IDA7CisgICAgICAgIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRl
cm5hbCogZHRsc190cmFuc3BvcnQsCisgICAgICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBt
ZWRpYV90cmFuc3BvcnQpID0gMDsKICAgfTsKIAogICBzdHJ1Y3QgQ29uZmlnIHsKQEAgLTY3LDcg
KzY5LDcgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgOiBwdWJsaWMgc2lnc2xvdDo6
aGFzX3Nsb3RzPD4gewogICAgIHJ0Yzo6U1NMUHJvdG9jb2xWZXJzaW9uIHNzbF9tYXhfdmVyc2lv
biA9IHJ0Yzo6U1NMX1BST1RPQ09MX0RUTFNfMTI7CiAgICAgLy8gfGNyeXB0b19vcHRpb25zfCBp
cyB1c2VkIHRvIGRldGVybWluZSBpZiBjcmVhdGVkIERUTFMgdHJhbnNwb3J0cwogICAgIC8vIG5l
Z290aWF0ZSBHQ00gY3J5cHRvIHN1aXRlcyBvciBub3QuCi0gICAgcnRjOjpDcnlwdG9PcHRpb25z
IGNyeXB0b19vcHRpb25zOworICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9u
czsKICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6QnVuZGxlUG9saWN5IGJ1bmRsZV9wb2xp
Y3kgPQogICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0J1bmRsZVBvbGljeUJhbGFu
Y2VkOwogICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSdGNwTXV4UG9saWN5IHJ0Y3BfbXV4
X3BvbGljeSA9CkBAIC03OSw2ICs4MSwxMyBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxl
ciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgT2JzZXJ2ZXIqIHRyYW5zcG9y
dF9vYnNlcnZlciA9IG51bGxwdHI7CiAgICAgYm9vbCBhY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMg
PSBmYWxzZTsKICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nID0gbnVsbHB0cjsKKworICAgIC8v
IE9wdGlvbmFsIG1lZGlhIHRyYW5zcG9ydCBmYWN0b3J5IChleHBlcmltZW50YWwpLiBJZiBwcm92
aWRlZCBpdCB3aWxsIGJlCisgICAgLy8gdXNlZCB0byBjcmVhdGUgbWVkaWFfdHJhbnNwb3J0IGFu
ZCB3aWxsIGJlIHVzZWQgdG8gc2VuZCAvIHJlY2VpdmUKKyAgICAvLyBhdWRpbyBhbmQgdmlkZW8g
ZnJhbWVzIGluc3RlYWQgb2YgUlRQLiBOb3RlIHRoYXQgY3VycmVudGx5CisgICAgLy8gbWVkaWFf
dHJhbnNwb3J0IGNvLWV4aXN0cyB3aXRoIFJUUCAvIFJUQ1AgdHJhbnNwb3J0cyBhbmQgdXNlcyB0
aGUgc2FtZQorICAgIC8vIHVuZGVybHlpbmcgSUNFIHRyYW5zcG9ydC4KKyAgICBNZWRpYVRyYW5z
cG9ydEZhY3RvcnkqIG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gbnVsbHB0cjsKICAgfTsKIAog
ICAvLyBUaGUgSUNFIHJlbGF0ZWQgZXZlbnRzIGFyZSBzaWduYWxlZCBvbiB0aGUgfHNpZ25hbGlu
Z190aHJlYWR8LgpAQCAtMTA4LDYgKzExNyw5IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnRDb250cm9s
bGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgY3JpY2tldDo6RHRsc1RyYW5z
cG9ydEludGVybmFsKiBHZXRSdGNwRHRsc1RyYW5zcG9ydCgKICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBtaWQpIGNvbnN0OwogCisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBHZXRNZWRpYVRy
YW5zcG9ydChjb25zdCBzdGQ6OnN0cmluZyYgbWlkKSBjb25zdDsKKyAgTWVkaWFUcmFuc3BvcnRT
dGF0ZSBHZXRNZWRpYVRyYW5zcG9ydFN0YXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpIGNvbnN0
OworCiAgIC8qKioqKioqKioqKioqKioqKioqKioKICAgICogSUNFLXJlbGF0ZWQgbWV0aG9kcwog
ICAgKioqKioqKioqKioqKioqKioqKiovCkBAIC0xNTcsNiArMTY5LDEyIEBAIGNsYXNzIEpzZXBU
cmFuc3BvcnRDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKIAogICB2
b2lkIFNldEFjdGl2ZVJlc2V0U3J0cFBhcmFtcyhib29sIGFjdGl2ZV9yZXNldF9zcnRwX3BhcmFt
cyk7CiAKKyAgLy8gQWxsb3dzIHRvIG92ZXJ3cml0ZSB0aGUgc2V0dGluZ3MgZnJvbSBjb25maWcu
IFlvdSBtYXkgc2V0IG9yIHJlc2V0IHRoZQorICAvLyBtZWRpYSB0cmFuc3BvcnQgZmFjdG9yeSBv
biB0aGUganNlcCB0cmFuc3BvcnQgY29udHJvbGxlciwgYXMgbG9uZyBhcyB5b3UKKyAgLy8gZGlk
IG5vdCBjYWxsICdHZXRNZWRpYVRyYW5zcG9ydCcgb3IgJ01heWJlQ3JlYXRlSnNlcFRyYW5zcG9y
dCcuIE9uY2UgSnNlcAorICAvLyB0cmFuc3BvcnQgaXMgY3JlYXRlZCwgeW91IGNhbid0IGNoYW5n
ZSB0aGlzIHNldHRpbmcuCisgIHZvaWQgU2V0TWVkaWFUcmFuc3BvcnRGYWN0b3J5KE1lZGlhVHJh
bnNwb3J0RmFjdG9yeSogbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpOworCiAgIC8vIEFsbCBvZiB0
aGVzZSBzaWduYWxzIGFyZSBmaXJlZCBvbiB0aGUgc2lnbmFsaW5nIHRocmVhZC4KIAogICAvLyBJ
ZiBhbnkgdHJhbnNwb3J0IGZhaWxlZCA9PiBmYWlsZWQsCkBAIC0xNjUsNiArMTgzLDExIEBAIGNs
YXNzIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+
IHsKICAgLy8gRWxzZSA9PiBjb25uZWN0aW5nCiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8Y3JpY2tldDo6
SWNlQ29ubmVjdGlvblN0YXRlPiBTaWduYWxJY2VDb25uZWN0aW9uU3RhdGU7CiAKKyAgc2lnc2xv
dDo6c2lnbmFsMTxQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZT4K
KyAgICAgIFNpZ25hbENvbm5lY3Rpb25TdGF0ZTsKKyAgc2lnc2xvdDo6c2lnbmFsMTxQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlPgorICAgICAgU2lnbmFsU3RhbmRh
cmRpemVkSWNlQ29ubmVjdGlvblN0YXRlOworCiAgIC8vIElmIGFsbCB0cmFuc3BvcnRzIGRvbmUg
Z2F0aGVyaW5nID0+IGNvbXBsZXRlLAogICAvLyBFbHNlIGlmIGFueSBhcmUgZ2F0aGVyaW5nID0+
IGdhdGhlcmluZywKICAgLy8gRWxzZSA9PiBuZXcKQEAgLTE3OSw2ICsyMDIsOCBAQCBjbGFzcyBK
c2VwVHJhbnNwb3J0Q29udHJvbGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAK
ICAgc2lnc2xvdDo6c2lnbmFsMTxydGM6OlNTTEhhbmRzaGFrZUVycm9yPiBTaWduYWxEdGxzSGFu
ZHNoYWtlRXJyb3I7CiAKKyAgc2lnc2xvdDo6c2lnbmFsPD4gU2lnbmFsTWVkaWFUcmFuc3BvcnRT
dGF0ZUNoYW5nZWQ7CisKICBwcml2YXRlOgogICBSVENFcnJvciBBcHBseURlc2NyaXB0aW9uX24o
Ym9vbCBsb2NhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFR5cGUgdHlwZSwK
QEAgLTI0MSw3ICsyNjYsMjAgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgOiBwdWJs
aWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICBjcmlja2V0OjpKc2VwVHJhbnNwb3J0KiBHZXRK
c2VwVHJhbnNwb3J0QnlOYW1lKAogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9u
YW1lKTsKIAotICBSVENFcnJvciBNYXliZUNyZWF0ZUpzZXBUcmFuc3BvcnQoY29uc3QgY3JpY2tl
dDo6Q29udGVudEluZm8mIGNvbnRlbnRfaW5mbyk7CisgIC8vIENyZWF0ZXMganNlcCB0cmFuc3Bv
cnQuIE5vb3AgaWYgdHJhbnNwb3J0IGlzIGFscmVhZHkgY3JlYXRlZC4KKyAgLy8gVHJhbnNwb3J0
IGlzIGNyZWF0ZWQgZWl0aGVyIGR1cmluZyBTZXRMb2NhbERlc2NyaXB0aW9uICh8bG9jYWx8ID09
IHRydWUpIG9yCisgIC8vIGR1cmluZyBTZXRSZW1vdGVEZXNjcmlwdGlvbiAofGxvY2FsfCA9PSBm
YWxzZSkuIFBhc3NpbmcgfGxvY2FsfCBoZWxwcyB0bworICAvLyBkaWZmZXJlbnRpYXRlIGluaXRp
YXRvciAoY2FsbGVyKSBmcm9tIGFuc3dlcmVyIChjYWxsZWUpLgorICBSVENFcnJvciBNYXliZUNy
ZWF0ZUpzZXBUcmFuc3BvcnQoYm9vbCBsb2NhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNyaWNrZXQ6OkNvbnRlbnRJbmZvJiBjb250ZW50X2luZm8pOworCisg
IC8vIENyZWF0ZXMgbWVkaWEgdHJhbnNwb3J0IGlmIGNvbmZpZyB3YW50cyB0byB1c2UgaXQsIGFu
ZCBwcmUtc2hhcmVkIGtleSBpcworICAvLyBwcm92aWRlZCBpbiBjb250ZW50IGluZm8uIEl0IG1v
ZGlmaWVzIHRoZSBjb25maWcgdG8gZGlzYWJsZSBtZWRpYSB0cmFuc3BvcnQKKyAgLy8gaWYgcHJl
LXNoYXJlZCBrZXkgaXMgbm90IHByb3ZpZGVkLgorICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpN
ZWRpYVRyYW5zcG9ydEludGVyZmFjZT4gTWF5YmVDcmVhdGVNZWRpYVRyYW5zcG9ydCgKKyAgICAg
IGNvbnN0IGNyaWNrZXQ6OkNvbnRlbnRJbmZvJiBjb250ZW50X2luZm8sCisgICAgICBib29sIGxv
Y2FsLAorICAgICAgY3JpY2tldDo6SWNlVHJhbnNwb3J0SW50ZXJuYWwqIGljZV90cmFuc3BvcnQp
OwogICB2b2lkIE1heWJlRGVzdHJveUpzZXBUcmFuc3BvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1p
ZCk7CiAgIHZvaWQgRGVzdHJveUFsbEpzZXBUcmFuc3BvcnRzX24oKTsKIApAQCAtMjg1LDYgKzMy
Myw3IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhh
c19zbG90czw+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y3JpY2tldDo6Q2FuZGlkYXRlcyYgY2FuZGlkYXRlcyk7CiAgIHZvaWQgT25UcmFuc3BvcnRSb2xl
Q29uZmxpY3Rfbihjcmlja2V0OjpJY2VUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0KTsKICAg
dm9pZCBPblRyYW5zcG9ydFN0YXRlQ2hhbmdlZF9uKGNyaWNrZXQ6OkljZVRyYW5zcG9ydEludGVy
bmFsKiB0cmFuc3BvcnQpOworICB2b2lkIE9uTWVkaWFUcmFuc3BvcnRTdGF0ZUNoYW5nZWRfbigp
OwogCiAgIHZvaWQgVXBkYXRlQWdncmVnYXRlU3RhdGVzX24oKTsKIApAQCAtMzAxLDkgKzM0MCwx
NiBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNf
c2xvdHM8PiB7CiAgIC8vIChCYXNlQ2hhbm5lbC9TY3RwVHJhbnNwb3J0KSBhbmQgdGhlIEpzZXBU
cmFuc3BvcnQgdW5kZXJuZWF0aC4KICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIGNyaWNrZXQ6Okpz
ZXBUcmFuc3BvcnQqPiBtaWRfdG9fdHJhbnNwb3J0XzsKIAotICAvLyBBZ2dyZWdhdGUgc3RhdGUg
Zm9yIFRyYW5zcG9ydHMuCisgIC8vIEFnZ3JlZ2F0ZSBzdGF0ZXMgZm9yIFRyYW5zcG9ydHMuCisg
IC8vIHN0YW5kYXJkaXplZF9pY2VfY29ubmVjdGlvbl9zdGF0ZV8gaXMgaW50ZW5kZWQgdG8gcmVw
bGFjZQorICAvLyBpY2VfY29ubmVjdGlvbl9zdGF0ZSwgc2VlIGJ1Z3Mud2VicnRjLm9yZy85MzA4
CiAgIGNyaWNrZXQ6OkljZUNvbm5lY3Rpb25TdGF0ZSBpY2VfY29ubmVjdGlvbl9zdGF0ZV8gPQog
ICAgICAgY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25Db25uZWN0aW5nOworICBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlCisgICAgICBzdGFuZGFyZGl6ZWRfaWNlX2Nv
bm5lY3Rpb25fc3RhdGVfID0KKyAgICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0lj
ZUNvbm5lY3Rpb25OZXc7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlv
blN0YXRlIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfID0KKyAgICAgIFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprTmV3OwogICBjcmlja2V0OjpJY2VHYXRo
ZXJpbmdTdGF0ZSBpY2VfZ2F0aGVyaW5nX3N0YXRlXyA9IGNyaWNrZXQ6OmtJY2VHYXRoZXJpbmdO
ZXc7CiAKICAgQ29uZmlnIGNvbmZpZ187CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJvbGxlcl91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0
cmFuc3BvcnRjb250cm9sbGVyX3VuaXR0ZXN0LmNjCmluZGV4IDZmODY5M2JlYTdhOWI1NzE1MDI1
OGQwNDg2YzBhN2YyNGVlZmIzZjcuLjEyOWQyMmE0ZmNjODQ3MzBlMWY5OWI3YTg1NGU5NjdjYTJl
ZjlhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9s
bGVyX3VuaXR0ZXN0LmNjCkBAIC0xMSw3ICsxMSw4IEBACiAjaW5jbHVkZSA8bWFwPgogI2luY2x1
ZGUgPG1lbW9yeT4KIAotI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUg
ImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvZmFr
ZV9tZWRpYV90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9mYWtlZHRsc3RyYW5zcG9y
dC5oIgogI2luY2x1ZGUgInAycC9iYXNlL2Zha2VpY2V0cmFuc3BvcnQuaCIKICNpbmNsdWRlICJw
MnAvYmFzZS90cmFuc3BvcnRmYWN0b3J5aW50ZXJmYWNlLmgiCkBAIC00MSw2ICs0MiwyMCBAQCBz
dGF0aWMgY29uc3QgY2hhciBrRGF0YU1pZDFbXSA9ICJkYXRhMSI7CiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogCituYW1lc3BhY2UgeworCisvLyBNZWRpYSB0cmFuc3BvcnQgZmFjdG9yeSByZXF1aXJl
cyBjcnlwdG8gc2V0dGluZ3MgdG8gYmUgcHJlc2VudCBpbiBvcmRlciB0bworLy8gY3JlYXRlIG1l
ZGlhIHRyYW5zcG9ydC4KK3ZvaWQgQWRkQ3J5cHRvU2V0dGluZ3MoY3JpY2tldDo6U2Vzc2lvbkRl
c2NyaXB0aW9uKiBkZXNjcmlwdGlvbikgeworICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBkZXNjcmlw
dGlvbi0+Y29udGVudHMoKSkgeworICAgIGNvbnRlbnQubWVkaWFfZGVzY3JpcHRpb24oKS0+QWRk
Q3J5cHRvKGNyaWNrZXQ6OkNyeXB0b1BhcmFtcygKKyAgICAgICAgLyp0PSovMCwgc3RkOjpzdHJp
bmcocnRjOjpDU19BRVNfQ01fMTI4X0hNQUNfU0hBMV84MCksCisgICAgICAgICJpbmxpbmU6WVVK
RFpHVm1aMmhwU2t0TWJXOVFVWEp6VkhWV2QzbDZNVEl6TkRVMiIsICIiKSk7CisgIH0KK30KKwor
fSAgLy8gbmFtZXNwYWNlCisKIGNsYXNzIEZha2VUcmFuc3BvcnRGYWN0b3J5IDogcHVibGljIGNy
aWNrZXQ6OlRyYW5zcG9ydEZhY3RvcnlJbnRlcmZhY2UgewogIHB1YmxpYzoKICAgc3RkOjp1bmlx
dWVfcHRyPGNyaWNrZXQ6OkljZVRyYW5zcG9ydEludGVybmFsPiBDcmVhdGVJY2VUcmFuc3BvcnQo
CkBAIC01Miw3ICs2Nyw3IEBAIGNsYXNzIEZha2VUcmFuc3BvcnRGYWN0b3J5IDogcHVibGljIGNy
aWNrZXQ6OlRyYW5zcG9ydEZhY3RvcnlJbnRlcmZhY2UgewogCiAgIHN0ZDo6dW5pcXVlX3B0cjxj
cmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWw+IENyZWF0ZUR0bHNUcmFuc3BvcnQoCiAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6SWNlVHJhbnNwb3J0SW50ZXJuYWw+IGljZSwKLSAg
ICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIG92ZXJyaWRlIHsK
KyAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIG92ZXJy
aWRlIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6RmFrZUljZVRyYW5zcG9ydD4gZmFr
ZV9pY2UoCiAgICAgICAgIHN0YXRpY19jYXN0PGNyaWNrZXQ6OkZha2VJY2VUcmFuc3BvcnQqPihp
Y2UucmVsZWFzZSgpKSk7CiAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPEZha2VEdGxzVHJh
bnNwb3J0PihzdGQ6Om1vdmUoZmFrZV9pY2UpKTsKQEAgLTg0LDYgKzk5LDEwIEBAIGNsYXNzIEpz
ZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCA6IHB1YmxpYyBKc2VwVHJhbnNwb3J0Q29udHJvbGxl
cjo6T2JzZXJ2ZXIsCiAgIHZvaWQgQ29ubmVjdFRyYW5zcG9ydENvbnRyb2xsZXJTaWduYWxzKCkg
ewogICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsSWNlQ29ubmVjdGlvblN0YXRlLmNv
bm5lY3QoCiAgICAgICAgIHRoaXMsICZKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3Q6Ok9uQ29u
bmVjdGlvblN0YXRlKTsKKyAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPlNpZ25hbFN0YW5kYXJk
aXplZEljZUNvbm5lY3Rpb25TdGF0ZS5jb25uZWN0KAorICAgICAgICB0aGlzLCAmSnNlcFRyYW5z
cG9ydENvbnRyb2xsZXJUZXN0OjpPblN0YW5kYXJkaXplZEljZUNvbm5lY3Rpb25TdGF0ZSk7Cisg
ICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TaWduYWxDb25uZWN0aW9uU3RhdGUuY29ubmVjdCgK
KyAgICAgICAgdGhpcywgJkpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdDo6T25Db21iaW5lZENv
bm5lY3Rpb25TdGF0ZSk7CiAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TaWduYWxJY2VHYXRo
ZXJpbmdTdGF0ZS5jb25uZWN0KAogICAgICAgICB0aGlzLCAmSnNlcFRyYW5zcG9ydENvbnRyb2xs
ZXJUZXN0OjpPbkdhdGhlcmluZ1N0YXRlKTsKICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPlNp
Z25hbEljZUNhbmRpZGF0ZXNHYXRoZXJlZC5jb25uZWN0KApAQCAtMTcwLDcgKzE4OSw3IEBAIGNs
YXNzIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCA6IHB1YmxpYyBKc2VwVHJhbnNwb3J0Q29u
dHJvbGxlcjo6T2JzZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4gY2VydCkgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OlNTTEZpbmdlcnByaW50PiBmaW5nZXJwcmludDsKICAgICBpZiAoY2VydCkgewotICAgICAg
ZmluZ2VycHJpbnQucmVzZXQocnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmlj
YXRlKGNlcnQpKTsKKyAgICAgIGZpbmdlcnByaW50ID0gcnRjOjpTU0xGaW5nZXJwcmludDo6Q3Jl
YXRlRnJvbUNlcnRpZmljYXRlKCpjZXJ0KTsKICAgICB9CiAKICAgICBjcmlja2V0OjpUcmFuc3Bv
cnREZXNjcmlwdGlvbiB0cmFuc3BvcnRfZGVzYyhzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSwK
QEAgLTI0Myw2ICsyNjIsMjQgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0IDog
cHVibGljIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpPYnNlcnZlciwKICAgICArK2Nvbm5lY3Rp
b25fc3RhdGVfc2lnbmFsX2NvdW50XzsKICAgfQogCisgIHZvaWQgT25TdGFuZGFyZGl6ZWRJY2VD
b25uZWN0aW9uU3RhdGUoCisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVj
dGlvblN0YXRlIHN0YXRlKSB7CisgICAgaWYgKCFzaWduYWxpbmdfdGhyZWFkXy0+SXNDdXJyZW50
KCkpIHsKKyAgICAgIHNpZ25hbGVkX29uX25vbl9zaWduYWxpbmdfdGhyZWFkXyA9IHRydWU7Cisg
ICAgfQorICAgIGljZV9jb25uZWN0aW9uX3N0YXRlXyA9IHN0YXRlOworICAgICsraWNlX2Nvbm5l
Y3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50XzsKKyAgfQorCisgIHZvaWQgT25Db21iaW5lZENvbm5l
Y3Rpb25TdGF0ZSgKKyAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlv
blN0YXRlIHN0YXRlKSB7CisgICAgaWYgKCFzaWduYWxpbmdfdGhyZWFkXy0+SXNDdXJyZW50KCkp
IHsKKyAgICAgIHNpZ25hbGVkX29uX25vbl9zaWduYWxpbmdfdGhyZWFkXyA9IHRydWU7CisgICAg
fQorICAgIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfID0gc3RhdGU7CisgICAgKytjb21iaW5l
ZF9jb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF87CisgIH0KKwogICB2b2lkIE9uR2F0aGVy
aW5nU3RhdGUoY3JpY2tldDo6SWNlR2F0aGVyaW5nU3RhdGUgc3RhdGUpIHsKICAgICBpZiAoIXNp
Z25hbGluZ190aHJlYWRfLT5Jc0N1cnJlbnQoKSkgewogICAgICAgc2lnbmFsZWRfb25fbm9uX3Np
Z25hbGluZ190aHJlYWRfID0gdHJ1ZTsKQEAgLTI2MiwzMSArMjk5LDM3IEBAIGNsYXNzIEpzZXBU
cmFuc3BvcnRDb250cm9sbGVyVGVzdCA6IHB1YmxpYyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6
T2JzZXJ2ZXIsCiAgIH0KIAogICAvLyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6T2JzZXJ2ZXIg
b3ZlcnJpZGVzLgotICBib29sIE9uVHJhbnNwb3J0Q2hhbmdlZCgKLSAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBtaWQsCi0gICAgICBSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwK
LSAgICAgIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCogZHRsc190cmFuc3BvcnQpIG92
ZXJyaWRlIHsKKyAgYm9vbCBPblRyYW5zcG9ydENoYW5nZWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1p
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90
cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkR0bHNUcmFuc3Bv
cnRJbnRlcm5hbCogZHRsc190cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1l
ZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpIG92ZXJyaWRlIHsKICAgICBj
aGFuZ2VkX3J0cF90cmFuc3BvcnRfYnlfbWlkX1ttaWRdID0gcnRwX3RyYW5zcG9ydDsKICAgICBj
aGFuZ2VkX2R0bHNfdHJhbnNwb3J0X2J5X21pZF9bbWlkXSA9IGR0bHNfdHJhbnNwb3J0OworICAg
IGNoYW5nZWRfbWVkaWFfdHJhbnNwb3J0X2J5X21pZF9bbWlkXSA9IG1lZGlhX3RyYW5zcG9ydDsK
ICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgIC8vIEluZm9ybWF0aW9uIHJlY2VpdmVkIGZyb20g
c2lnbmFscyBmcm9tIHRyYW5zcG9ydCBjb250cm9sbGVyLgogICBjcmlja2V0OjpJY2VDb25uZWN0
aW9uU3RhdGUgY29ubmVjdGlvbl9zdGF0ZV8gPQogICAgICAgY3JpY2tldDo6a0ljZUNvbm5lY3Rp
b25Db25uZWN0aW5nOworICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0
YXRlIGljZV9jb25uZWN0aW9uX3N0YXRlXyA9CisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6a0ljZUNvbm5lY3Rpb25OZXc7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29u
bmVjdGlvblN0YXRlIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfID0KKyAgICAgIFBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprTmV3OwogICBib29sIHJlY2Vp
dmluZ18gPSBmYWxzZTsKICAgY3JpY2tldDo6SWNlR2F0aGVyaW5nU3RhdGUgZ2F0aGVyaW5nX3N0
YXRlXyA9IGNyaWNrZXQ6OmtJY2VHYXRoZXJpbmdOZXc7CiAgIC8vIHRyYW5zcG9ydF9uYW1lID0+
IGNhbmRpZGF0ZXMKICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIENhbmRpZGF0ZXM+IGNhbmRpZGF0
ZXNfOwogICAvLyBDb3VudHMgb2YgZWFjaCBzaWduYWwgZW1pdHRlZC4KICAgaW50IGNvbm5lY3Rp
b25fc3RhdGVfc2lnbmFsX2NvdW50XyA9IDA7CisgIGludCBpY2VfY29ubmVjdGlvbl9zdGF0ZV9z
aWduYWxfY291bnRfID0gMDsKKyAgaW50IGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFs
X2NvdW50XyA9IDA7CiAgIGludCByZWNlaXZpbmdfc2lnbmFsX2NvdW50XyA9IDA7CiAgIGludCBn
YXRoZXJpbmdfc3RhdGVfc2lnbmFsX2NvdW50XyA9IDA7CiAgIGludCBjYW5kaWRhdGVzX3NpZ25h
bF9jb3VudF8gPSAwOwogCiAgIC8vIHxuZXR3b3JrX3RocmVhZF98IHNob3VsZCBiZSBkZXN0cm95
ZWQgYWZ0ZXIgfHRyYW5zcG9ydF9jb250cm9sbGVyX3wKICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6
VGhyZWFkPiBuZXR3b3JrX3RocmVhZF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxKc2VwVHJhbnNwb3J0
Q29udHJvbGxlcj4gdHJhbnNwb3J0X2NvbnRyb2xsZXJfOwogICBzdGQ6OnVuaXF1ZV9wdHI8RmFr
ZVRyYW5zcG9ydEZhY3Rvcnk+IGZha2VfdHJhbnNwb3J0X2ZhY3RvcnlfOwogICBydGM6OlRocmVh
ZCogY29uc3Qgc2lnbmFsaW5nX3RocmVhZF8gPSBudWxscHRyOwogICBib29sIHNpZ25hbGVkX29u
X25vbl9zaWduYWxpbmdfdGhyZWFkXyA9IGZhbHNlOwpAQCAtMjk1LDYgKzMzOCwxMiBAQCBjbGFz
cyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QgOiBwdWJsaWMgSnNlcFRyYW5zcG9ydENvbnRy
b2xsZXI6Ok9ic2VydmVyLAogICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgUnRwVHJhbnNwb3J0SW50
ZXJuYWwqPiBjaGFuZ2VkX3J0cF90cmFuc3BvcnRfYnlfbWlkXzsKICAgc3RkOjptYXA8c3RkOjpz
dHJpbmcsIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCo+CiAgICAgICBjaGFuZ2VkX2R0
bHNfdHJhbnNwb3J0X2J5X21pZF87CisgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBNZWRpYVRyYW5z
cG9ydEludGVyZmFjZSo+CisgICAgICBjaGFuZ2VkX21lZGlhX3RyYW5zcG9ydF9ieV9taWRfOwor
CisgIC8vIFRyYW5zcG9ydCBjb250cm9sbGVyIG5lZWRzIHRvIGJlIGRlc3Ryb3llZCBmaXJzdCwg
YmVjYXVzZSBpdCBtYXkgaXNzdWUKKyAgLy8gY2FsbGJhY2tzIHRoYXQgbW9kaWZ5IHRoZSBjaGFu
Z2VkXypfYnlfbWlkIGluIHRoZSBkZXN0cnVjdG9yLgorICBzdGQ6OnVuaXF1ZV9wdHI8SnNlcFRy
YW5zcG9ydENvbnRyb2xsZXI+IHRyYW5zcG9ydF9jb250cm9sbGVyXzsKIH07CiAKIFRFU1RfRihK
c2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIEdldFJ0cFRyYW5zcG9ydCkgewpAQCAtMzQxLDYg
KzM5MCwxMTggQEAgVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgR2V0RHRsc1Ry
YW5zcG9ydFdpdGhSdGNwTXV4KSB7CiAgIEVYUEVDVF9FUShudWxscHRyLCB0cmFuc3BvcnRfY29u
dHJvbGxlcl8tPkdldFJ0Y3BEdGxzVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKICAgRVhQRUNUX05F
KG51bGxwdHIsIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0RHRsc1RyYW5zcG9ydChrVmlkZW9N
aWQxKSk7CiAgIEVYUEVDVF9FUShudWxscHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldFJ0
Y3BEdGxzVHJhbnNwb3J0KGtWaWRlb01pZDEpKTsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIHRyYW5z
cG9ydF9jb250cm9sbGVyXy0+R2V0TWVkaWFUcmFuc3BvcnQoa0F1ZGlvTWlkMSkpOworfQorCitU
RVNUX0YoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LCBHZXRNZWRpYVRyYW5zcG9ydEluQ2Fs
bGVyKSB7CisgIEZha2VNZWRpYVRyYW5zcG9ydEZhY3RvcnkgZmFrZV9tZWRpYV90cmFuc3BvcnRf
ZmFjdG9yeTsKKyAgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkNvbmZpZyBjb25maWc7CisKKyAg
Y29uZmlnLnJ0Y3BfbXV4X3BvbGljeSA9IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprUnRjcE11
eFBvbGljeU5lZ290aWF0ZTsKKyAgY29uZmlnLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gJmZh
a2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7CisgIENyZWF0ZUpzZXBUcmFuc3BvcnRDb250cm9s
bGVyKGNvbmZpZyk7CisgIGF1dG8gZGVzY3JpcHRpb24gPSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRp
b25XaXRob3V0QnVuZGxlKCk7CisgIEFkZENyeXB0b1NldHRpbmdzKGRlc2NyaXB0aW9uLmdldCgp
KTsKKworICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnRfY29udHJvbGxlcl8KKyAgICAgICAgICAgICAg
ICAgIC0+U2V0TG9jYWxEZXNjcmlwdGlvbihTZHBUeXBlOjprT2ZmZXIsIGRlc2NyaXB0aW9uLmdl
dCgpKQorICAgICAgICAgICAgICAgICAgLm9rKCkpOworCisgIEZha2VNZWRpYVRyYW5zcG9ydCog
bWVkaWFfdHJhbnNwb3J0ID0gc3RhdGljX2Nhc3Q8RmFrZU1lZGlhVHJhbnNwb3J0Kj4oCisgICAg
ICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsK
KworICBBU1NFUlRfTkUobnVsbHB0ciwgbWVkaWFfdHJhbnNwb3J0KTsKKworICAvLyBBZnRlciBT
ZXRMb2NhbERlc2NyaXB0aW9uLCBtZWRpYSB0cmFuc3BvcnQgc2hvdWxkIGJlIGNyZWF0ZWQgYXMg
Y2FsbGVyLgorICBFWFBFQ1RfVFJVRShtZWRpYV90cmFuc3BvcnQtPmlzX2NhbGxlcigpKTsKKyAg
RVhQRUNUX1RSVUUobWVkaWFfdHJhbnNwb3J0LT5wcmVfc2hhcmVkX2tleSgpLmhhc192YWx1ZSgp
KTsKKworICAvLyBSZXR1cm4gbnVsbHB0ciBmb3Igbm9uLWV4aXN0aW5nIG1pZHMuCisgIEVYUEVD
VF9FUShudWxscHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtW
aWRlb01pZDIpKTsKK30KKworVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgR2V0
TWVkaWFUcmFuc3BvcnRJbkNhbGxlZSkgeworICBGYWtlTWVkaWFUcmFuc3BvcnRGYWN0b3J5IGZh
a2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7CisgIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpD
b25maWcgY29uZmlnOworCisgIGNvbmZpZy5ydGNwX211eF9wb2xpY3kgPSBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6a1J0Y3BNdXhQb2xpY3lOZWdvdGlhdGU7CisgIGNvbmZpZy5tZWRpYV90cmFu
c3BvcnRfZmFjdG9yeSA9ICZmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5OworICBDcmVhdGVK
c2VwVHJhbnNwb3J0Q29udHJvbGxlcihjb25maWcpOworICBhdXRvIGRlc2NyaXB0aW9uID0gQ3Jl
YXRlU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aG91dEJ1bmRsZSgpOworICBBZGRDcnlwdG9TZXR0aW5n
cyhkZXNjcmlwdGlvbi5nZXQoKSk7CisgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydF9jb250cm9sbGVy
XworICAgICAgICAgICAgICAgICAgLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihTZHBUeXBlOjprT2Zm
ZXIsIGRlc2NyaXB0aW9uLmdldCgpKQorICAgICAgICAgICAgICAgICAgLm9rKCkpOworCisgIEZh
a2VNZWRpYVRyYW5zcG9ydCogbWVkaWFfdHJhbnNwb3J0ID0gc3RhdGljX2Nhc3Q8RmFrZU1lZGlh
VHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNw
b3J0KGtBdWRpb01pZDEpKTsKKworICBBU1NFUlRfTkUobnVsbHB0ciwgbWVkaWFfdHJhbnNwb3J0
KTsKKworICAvLyBBZnRlciBTZXRSZW1vdGVEZXNjcmlwdGlvbiwgbWVkaWEgdHJhbnNwb3J0IHNo
b3VsZCBiZSBjcmVhdGVkIGFzIGNhbGxlZS4KKyAgRVhQRUNUX0ZBTFNFKG1lZGlhX3RyYW5zcG9y
dC0+aXNfY2FsbGVyKCkpOworICBFWFBFQ1RfVFJVRShtZWRpYV90cmFuc3BvcnQtPnByZV9zaGFy
ZWRfa2V5KCkuaGFzX3ZhbHVlKCkpOworCisgIC8vIFJldHVybiBudWxscHRyIGZvciBub24tZXhp
c3RpbmcgbWlkcy4KKyAgRVhQRUNUX0VRKG51bGxwdHIsIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+
R2V0TWVkaWFUcmFuc3BvcnQoa1ZpZGVvTWlkMikpOworfQorCitURVNUX0YoSnNlcFRyYW5zcG9y
dENvbnRyb2xsZXJUZXN0LCBHZXRNZWRpYVRyYW5zcG9ydElzTm90U2V0SWZOb1NkZXMpIHsKKyAg
RmFrZU1lZGlhVHJhbnNwb3J0RmFjdG9yeSBmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5Owor
ICBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6Q29uZmlnIGNvbmZpZzsKKworICBjb25maWcucnRj
cF9tdXhfcG9saWN5ID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtSdGNwTXV4UG9saWN5TmVn
b3RpYXRlOworICBjb25maWcubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgPSAmZmFrZV9tZWRpYV90
cmFuc3BvcnRfZmFjdG9yeTsKKyAgQ3JlYXRlSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIoY29uZmln
KTsKKyAgYXV0byBkZXNjcmlwdGlvbiA9IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhvdXRC
dW5kbGUoKTsKKyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0X2NvbnRyb2xsZXJfCisgICAgICAgICAg
ICAgICAgICAtPlNldFJlbW90ZURlc2NyaXB0aW9uKFNkcFR5cGU6OmtPZmZlciwgZGVzY3JpcHRp
b24uZ2V0KCkpCisgICAgICAgICAgICAgICAgICAub2soKSk7CisKKyAgRVhQRUNUX0VRKG51bGxw
dHIsIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0TWVkaWFUcmFuc3BvcnQoa0F1ZGlvTWlkMSkp
OworCisgIC8vIEV2ZW4gaWYgd2Ugc2V0IGxvY2FsIGRlc2NyaXB0aW9uIHdpdGggY3J5cHRvIG5v
dyAoYWZ0ZXIgdGhlIHJlbW90ZSBvZmZlcgorICAvLyB3YXMgc2V0KSwgbWVkaWEgdHJhbnNwb3J0
IHdvbid0IGJlIHByb3ZpZGVkLgorICBhdXRvIGRlc2NyaXB0aW9uMiA9IENyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvbldpdGhvdXRCdW5kbGUoKTsKKyAgQWRkQ3J5cHRvU2V0dGluZ3MoZGVzY3JpcHRp
b24yLmdldCgpKTsKKyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0X2NvbnRyb2xsZXJfCisgICAgICAg
ICAgICAgICAgICAtPlNldExvY2FsRGVzY3JpcHRpb24oU2RwVHlwZTo6a0Fuc3dlciwgZGVzY3Jp
cHRpb24yLmdldCgpKQorICAgICAgICAgICAgICAgICAgLm9rKCkpOworCisgIEVYUEVDVF9FUShu
dWxscHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtBdWRpb01p
ZDEpKTsKK30KKworVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwKKyAgICAgICBB
ZnRlclNldHRpbmdBbnN3ZXJUaGVTYW1lTWVkaWFUcmFuc3BvcnRJc1JldHVybmVkKSB7CisgIEZh
a2VNZWRpYVRyYW5zcG9ydEZhY3RvcnkgZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeTsKKyAg
SnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkNvbmZpZyBjb25maWc7CisKKyAgY29uZmlnLnJ0Y3Bf
bXV4X3BvbGljeSA9IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprUnRjcE11eFBvbGljeU5lZ290
aWF0ZTsKKyAgY29uZmlnLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gJmZha2VfbWVkaWFfdHJh
bnNwb3J0X2ZhY3Rvcnk7CisgIENyZWF0ZUpzZXBUcmFuc3BvcnRDb250cm9sbGVyKGNvbmZpZyk7
CisgIGF1dG8gZGVzY3JpcHRpb24gPSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVu
ZGxlKCk7CisgIEFkZENyeXB0b1NldHRpbmdzKGRlc2NyaXB0aW9uLmdldCgpKTsKKyAgRVhQRUNU
X1RSVUUodHJhbnNwb3J0X2NvbnRyb2xsZXJfCisgICAgICAgICAgICAgICAgICAtPlNldFJlbW90
ZURlc2NyaXB0aW9uKFNkcFR5cGU6OmtPZmZlciwgZGVzY3JpcHRpb24uZ2V0KCkpCisgICAgICAg
ICAgICAgICAgICAub2soKSk7CisKKyAgRmFrZU1lZGlhVHJhbnNwb3J0KiBtZWRpYV90cmFuc3Bv
cnQgPSBzdGF0aWNfY2FzdDxGYWtlTWVkaWFUcmFuc3BvcnQqPigKKyAgICAgIHRyYW5zcG9ydF9j
b250cm9sbGVyXy0+R2V0TWVkaWFUcmFuc3BvcnQoa0F1ZGlvTWlkMSkpOworICBFWFBFQ1RfTkUo
bnVsbHB0ciwgbWVkaWFfdHJhbnNwb3J0KTsKKyAgRVhQRUNUX1RSVUUobWVkaWFfdHJhbnNwb3J0
LT5wcmVfc2hhcmVkX2tleSgpLmhhc192YWx1ZSgpKTsKKworICAvLyBFdmVuIGlmIHdlIHNldCBs
b2NhbCBkZXNjcmlwdGlvbiB3aXRoIGNyeXB0byBub3cgKGFmdGVyIHRoZSByZW1vdGUgb2ZmZXIK
KyAgLy8gd2FzIHNldCksIG1lZGlhIHRyYW5zcG9ydCB3b24ndCBiZSBwcm92aWRlZC4KKyAgYXV0
byBkZXNjcmlwdGlvbjIgPSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVuZGxlKCk7
CisgIEFkZENyeXB0b1NldHRpbmdzKGRlc2NyaXB0aW9uMi5nZXQoKSk7CisKKyAgUlRDRXJyb3Ig
cmVzdWx0ID0gdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TZXRMb2NhbERlc2NyaXB0aW9uKAorICAg
ICAgU2RwVHlwZTo6a0Fuc3dlciwgZGVzY3JpcHRpb24yLmdldCgpKTsKKyAgRVhQRUNUX1RSVUUo
cmVzdWx0Lm9rKCkpIDw8IHJlc3VsdC5tZXNzYWdlKCk7CisKKyAgLy8gTWVkaWEgdHJhbnNwb3J0
IGRpZCBub3QgY2hhbmdlLgorICBFWFBFQ1RfRVEobWVkaWFfdHJhbnNwb3J0LAorICAgICAgICAg
ICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChrQXVkaW9NaWQxKSk7
CiB9CiAKIFRFU1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIFNldEljZUNvbmZpZykg
ewpAQCAtNTY4LDkgKzcyOSwxNiBAQCBURVNUX0YoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0
LCBTaWduYWxDb25uZWN0aW9uU3RhdGVGYWlsZWQpIHsKICAgZmFrZV9pY2UtPlNldENvbm5lY3Rp
b25Db3VudCgwKTsKICAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25GYWls
ZWQsIGNvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CiAgIEVYUEVDVF9FUSgxLCBjb25uZWN0
aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOworICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25GYWlsZWQsCisgICAgICAgICAgICAgICAgIGljZV9j
b25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMSwgaWNlX2Nvbm5lY3Rp
b25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7CisgIEVYUEVDVF9FUV9XQUlUKFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprRmFpbGVkLAorICAgICAgICAgICAgICAg
ICBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMSwg
Y29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKIH0KIAotVEVTVF9GKEpz
ZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgU2lnbmFsQ29ubmVjdGlvblN0YXRlQ29ubmVjdGVk
KSB7CitURVNUX0YoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LAorICAgICAgIFNpZ25hbENv
bm5lY3Rpb25TdGF0ZUNvbm5lY3RlZE5vTWVkaWFUcmFuc3BvcnQpIHsKICAgQ3JlYXRlSnNlcFRy
YW5zcG9ydENvbnRyb2xsZXIoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkNvbmZpZygpKTsKICAg
YXV0byBkZXNjcmlwdGlvbiA9IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhvdXRCdW5kbGUo
KTsKICAgRVhQRUNUX1RSVUUodHJhbnNwb3J0X2NvbnRyb2xsZXJfCkBAIC01OTUsMTMgKzc2Mywx
MTQgQEAgVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgU2lnbmFsQ29ubmVjdGlv
blN0YXRlQ29ubmVjdGVkKSB7CiAKICAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0ljZUNvbm5l
Y3Rpb25GYWlsZWQsIGNvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CiAgIEVYUEVDVF9FUSgx
LCBjb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOwotCisgIEVYUEVDVF9FUV9XQUlUKFBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkZhaWxlZCwKKyAgICAgICAgICAg
ICAgICAgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CisgIEVYUEVDVF9FUSgxLCBp
Y2VfY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKKyAgRVhQRUNUX0VRX1dBSVQoUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtGYWlsZWQsCisgICAg
ICAgICAgICAgICAgIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CisgIEVY
UEVDVF9FUSgxLCBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOworCisg
IGZha2VfYXVkaW9fZHRscy0+U2V0RHRsc1N0YXRlKGNyaWNrZXQ6OkRUTFNfVFJBTlNQT1JUX0NP
Tk5FQ1RFRCk7CisgIGZha2VfdmlkZW9fZHRscy0+U2V0RHRsc1N0YXRlKGNyaWNrZXQ6OkRUTFNf
VFJBTlNQT1JUX0NPTk5FQ1RFRCk7CiAgIC8vIFNldCB0aGUgY29ubmVjdGlvbiBjb3VudCB0byBi
ZSAyIGFuZCB0aGUgY3JpY2tldDo6RmFrZUljZVRyYW5zcG9ydCB3aWxsIHNldAogICAvLyB0aGUg
dHJhbnNwb3J0IHN0YXRlIHRvIGJlIFNUQVRFX0NPTk5FQ1RJTkcuCiAgIGZha2VfdmlkZW9fZHRs
cy0+ZmFrZV9pY2VfdHJhbnNwb3J0KCktPlNldENvbm5lY3Rpb25Db3VudCgyKTsKICAgZmFrZV92
aWRlb19kdGxzLT5TZXRXcml0YWJsZSh0cnVlKTsKICAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6
a0ljZUNvbm5lY3Rpb25Db25uZWN0ZWQsIGNvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CiAg
IEVYUEVDVF9FUSgyLCBjb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOworICBFWFBFQ1Rf
RVFfV0FJVChQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25Db25uZWN0ZWQs
CisgICAgICAgICAgICAgICAgIGljZV9jb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBF
WFBFQ1RfRVEoMiwgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7CisgIEVYUEVD
VF9FUV9XQUlUKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjpr
Q29ubmVjdGVkLAorICAgICAgICAgICAgICAgICBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXywg
a1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMiwgY29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV9zaWdu
YWxfY291bnRfKTsKK30KKworVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwKKyAg
ICAgICBTaWduYWxDb25uZWN0aW9uU3RhdGVDb25uZWN0ZWRXaXRoTWVkaWFUcmFuc3BvcnQpIHsK
KyAgRmFrZU1lZGlhVHJhbnNwb3J0RmFjdG9yeSBmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
OworICBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6Q29uZmlnIGNvbmZpZzsKKyAgY29uZmlnLm1l
ZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gJmZha2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7Cisg
IENyZWF0ZUpzZXBUcmFuc3BvcnRDb250cm9sbGVyKGNvbmZpZyk7CisgIGF1dG8gZGVzY3JpcHRp
b24gPSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVuZGxlKCk7CisgIEFkZENyeXB0
b1NldHRpbmdzKGRlc2NyaXB0aW9uLmdldCgpKTsKKyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0X2Nv
bnRyb2xsZXJfCisgICAgICAgICAgICAgICAgICAtPlNldExvY2FsRGVzY3JpcHRpb24oU2RwVHlw
ZTo6a09mZmVyLCBkZXNjcmlwdGlvbi5nZXQoKSkKKyAgICAgICAgICAgICAgICAgIC5vaygpKTsK
KworICBhdXRvIGZha2VfYXVkaW9fZHRscyA9IHN0YXRpY19jYXN0PEZha2VEdGxzVHJhbnNwb3J0
Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0bHNUcmFuc3BvcnQoa0F1ZGlv
TWlkMSkpOworICBhdXRvIGZha2VfdmlkZW9fZHRscyA9IHN0YXRpY19jYXN0PEZha2VEdGxzVHJh
bnNwb3J0Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0bHNUcmFuc3BvcnQo
a1ZpZGVvTWlkMSkpOworICBmYWtlX2F1ZGlvX2R0bHMtPlNldFdyaXRhYmxlKHRydWUpOworICBm
YWtlX3ZpZGVvX2R0bHMtPlNldFdyaXRhYmxlKHRydWUpOworICAvLyBEZWNyZWFzaW5nIGNvbm5l
Y3Rpb24gY291bnQgZnJvbSAyIHRvIDEgdHJpZ2dlcnMgY29ubmVjdGlvbiBzdGF0ZSBldmVudC4K
KyAgZmFrZV9hdWRpb19kdGxzLT5mYWtlX2ljZV90cmFuc3BvcnQoKS0+U2V0Q29ubmVjdGlvbkNv
dW50KDIpOworICBmYWtlX2F1ZGlvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgpLT5TZXRDb25u
ZWN0aW9uQ291bnQoMSk7CisgIGZha2VfdmlkZW9fZHRscy0+ZmFrZV9pY2VfdHJhbnNwb3J0KCkt
PlNldENvbm5lY3Rpb25Db3VudCgyKTsKKyAgZmFrZV92aWRlb19kdGxzLT5mYWtlX2ljZV90cmFu
c3BvcnQoKS0+U2V0Q29ubmVjdGlvbkNvdW50KDEpOworICBmYWtlX2F1ZGlvX2R0bHMtPlNldER0
bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOworICBmYWtlX3ZpZGVv
X2R0bHMtPlNldER0bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOwor
CisgIC8vIFN0aWxsIG5vdCBjb25uZWN0ZWQsIGJlY2F1c2Ugd2UgYXJlIHdhaXRpbmcgZm9yIG1l
ZGlhIHRyYW5zcG9ydC4KKyAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25D
b25uZWN0aW5nLCBjb25uZWN0aW9uX3N0YXRlXywKKyAgICAgICAgICAgICAgICAga1RpbWVvdXQp
OworCisgIEZha2VNZWRpYVRyYW5zcG9ydCogbWVkaWFfdHJhbnNwb3J0ID0gc3RhdGljX2Nhc3Q8
RmFrZU1lZGlhVHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1l
ZGlhVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKKworICBtZWRpYV90cmFuc3BvcnQtPlNldFN0YXRl
KHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKTsKKyAgRVhQRUNUX0VRX1dB
SVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25Db25uZWN0aW5nLCBjb25uZWN0aW9uX3N0YXRlXywK
KyAgICAgICAgICAgICAgICAga1RpbWVvdXQpOworCisgIC8vIFN0aWxsIHdhaXRpbmcgZm9yIHRo
ZSBzZWNvbmQgbWVkaWEgdHJhbnNwb3J0LgorICBtZWRpYV90cmFuc3BvcnQgPSBzdGF0aWNfY2Fz
dDxGYWtlTWVkaWFUcmFuc3BvcnQqPigKKyAgICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0
TWVkaWFUcmFuc3BvcnQoa1ZpZGVvTWlkMSkpOworICBtZWRpYV90cmFuc3BvcnQtPlNldFN0YXRl
KHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKTsKKworICBFWFBFQ1RfRVFf
V0FJVChjcmlja2V0OjprSWNlQ29ubmVjdGlvbkNvbm5lY3RlZCwgY29ubmVjdGlvbl9zdGF0ZV8s
IGtUaW1lb3V0KTsKK30KKworVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwKKyAg
ICAgICBTaWduYWxDb25uZWN0aW9uU3RhdGVGYWlsZWRXaGVuTWVkaWFUcmFuc3BvcnRDbG9zZWQp
IHsKKyAgRmFrZU1lZGlhVHJhbnNwb3J0RmFjdG9yeSBmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0
b3J5OworICBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6Q29uZmlnIGNvbmZpZzsKKyAgY29uZmln
Lm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gJmZha2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7
CisgIENyZWF0ZUpzZXBUcmFuc3BvcnRDb250cm9sbGVyKGNvbmZpZyk7CisgIGF1dG8gZGVzY3Jp
cHRpb24gPSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVuZGxlKCk7CisgIEFkZENy
eXB0b1NldHRpbmdzKGRlc2NyaXB0aW9uLmdldCgpKTsKKyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0
X2NvbnRyb2xsZXJfCisgICAgICAgICAgICAgICAgICAtPlNldExvY2FsRGVzY3JpcHRpb24oU2Rw
VHlwZTo6a09mZmVyLCBkZXNjcmlwdGlvbi5nZXQoKSkKKyAgICAgICAgICAgICAgICAgIC5vaygp
KTsKKworICBhdXRvIGZha2VfYXVkaW9fZHRscyA9IHN0YXRpY19jYXN0PEZha2VEdGxzVHJhbnNw
b3J0Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0bHNUcmFuc3BvcnQoa0F1
ZGlvTWlkMSkpOworICBhdXRvIGZha2VfdmlkZW9fZHRscyA9IHN0YXRpY19jYXN0PEZha2VEdGxz
VHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0bHNUcmFuc3Bv
cnQoa1ZpZGVvTWlkMSkpOworICBmYWtlX2F1ZGlvX2R0bHMtPlNldFdyaXRhYmxlKHRydWUpOwor
ICBmYWtlX3ZpZGVvX2R0bHMtPlNldFdyaXRhYmxlKHRydWUpOworICAvLyBEZWNyZWFzaW5nIGNv
bm5lY3Rpb24gY291bnQgZnJvbSAyIHRvIDEgdHJpZ2dlcnMgY29ubmVjdGlvbiBzdGF0ZSBldmVu
dC4KKyAgZmFrZV9hdWRpb19kdGxzLT5mYWtlX2ljZV90cmFuc3BvcnQoKS0+U2V0Q29ubmVjdGlv
bkNvdW50KDIpOworICBmYWtlX2F1ZGlvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgpLT5TZXRD
b25uZWN0aW9uQ291bnQoMSk7CisgIGZha2VfdmlkZW9fZHRscy0+ZmFrZV9pY2VfdHJhbnNwb3J0
KCktPlNldENvbm5lY3Rpb25Db3VudCgyKTsKKyAgZmFrZV92aWRlb19kdGxzLT5mYWtlX2ljZV90
cmFuc3BvcnQoKS0+U2V0Q29ubmVjdGlvbkNvdW50KDEpOworICBmYWtlX2F1ZGlvX2R0bHMtPlNl
dER0bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOworICBmYWtlX3Zp
ZGVvX2R0bHMtPlNldER0bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQp
OworCisgIEZha2VNZWRpYVRyYW5zcG9ydCogbWVkaWFfdHJhbnNwb3J0ID0gc3RhdGljX2Nhc3Q8
RmFrZU1lZGlhVHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1l
ZGlhVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKKworICBtZWRpYV90cmFuc3BvcnQtPlNldFN0YXRl
KHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKTsKKworICBtZWRpYV90cmFu
c3BvcnQgPSBzdGF0aWNfY2FzdDxGYWtlTWVkaWFUcmFuc3BvcnQqPigKKyAgICAgIHRyYW5zcG9y
dF9jb250cm9sbGVyXy0+R2V0TWVkaWFUcmFuc3BvcnQoa1ZpZGVvTWlkMSkpOworCisgIG1lZGlh
X3RyYW5zcG9ydC0+U2V0U3RhdGUod2VicnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFi
bGUpOworCisgIEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGVk
LCBjb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworCisgIG1lZGlhX3RyYW5zcG9ydC0+U2V0
U3RhdGUod2VicnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlOjprQ2xvc2VkKTsKKyAgRVhQRUNUX0VR
X1dBSVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25GYWlsZWQsIGNvbm5lY3Rpb25fc3RhdGVfLCBr
VGltZW91dCk7CiB9CiAKIFRFU1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIFNpZ25h
bENvbm5lY3Rpb25TdGF0ZUNvbXBsZXRlKSB7CkBAIC02MjksMTMgKzg5OCwyNyBAQCBURVNUX0Yo
SnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LCBTaWduYWxDb25uZWN0aW9uU3RhdGVDb21wbGV0
ZSkgewogCiAgIEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uRmFpbGVkLCBj
b25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOwogICBFWFBFQ1RfRVEoMSwgY29ubmVjdGlvbl9z
dGF0ZV9zaWduYWxfY291bnRfKTsKLQorICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25GYWlsZWQsCisgICAgICAgICAgICAgICAgIGljZV9jb25u
ZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMSwgaWNlX2Nvbm5lY3Rpb25f
c3RhdGVfc2lnbmFsX2NvdW50Xyk7CisgIEVYUEVDVF9FUV9XQUlUKFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprRmFpbGVkLAorICAgICAgICAgICAgICAgICBj
b21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMSwgY29t
YmluZWRfY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKKworICBmYWtlX2F1ZGlvX2R0
bHMtPlNldER0bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOworICBm
YWtlX3ZpZGVvX2R0bHMtPlNldER0bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05O
RUNURUQpOwogICAvLyBTZXQgdGhlIGNvbm5lY3Rpb24gY291bnQgdG8gYmUgMSBhbmQgdGhlIGNy
aWNrZXQ6OkZha2VJY2VUcmFuc3BvcnQgd2lsbCBzZXQKICAgLy8gdGhlIHRyYW5zcG9ydCBzdGF0
ZSB0byBiZSBTVEFURV9DT01QTEVURUQuCiAgIGZha2VfdmlkZW9fZHRscy0+ZmFrZV9pY2VfdHJh
bnNwb3J0KCktPlNldENvbm5lY3Rpb25Db3VudCgxKTsKICAgZmFrZV92aWRlb19kdGxzLT5TZXRX
cml0YWJsZSh0cnVlKTsKICAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25D
b21wbGV0ZWQsIGNvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CiAgIEVYUEVDVF9FUSgyLCBj
b25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOworICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25Db21wbGV0ZWQsCisgICAgICAgICAgICAg
ICAgIGljZV9jb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMiwgaWNl
X2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7CisgIEVYUEVDVF9FUV9XQUlUKFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29ubmVjdGVkLAorICAg
ICAgICAgICAgICAgICBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBF
WFBFQ1RfRVEoMiwgY29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKIH0K
IAogVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgU2lnbmFsSWNlR2F0aGVyaW5n
U3RhdGVHYXRoZXJpbmcpIHsKQEAgLTcwOSw2ICs5OTIsNyBAQCBURVNUX0YoSnNlcFRyYW5zcG9y
dENvbnRyb2xsZXJUZXN0LAogICBmYWtlX2F1ZGlvX2R0bHMtPlNldFdyaXRhYmxlKHRydWUpOwog
ICBmYWtlX2F1ZGlvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgpLT5TZXRDYW5kaWRhdGVzR2F0
aGVyaW5nQ29tcGxldGUoKTsKICAgZmFrZV9hdWRpb19kdGxzLT5mYWtlX2ljZV90cmFuc3BvcnQo
KS0+U2V0Q29ubmVjdGlvbkNvdW50KDEpOworICBmYWtlX2F1ZGlvX2R0bHMtPlNldER0bHNTdGF0
ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOwogICBFWFBFQ1RfRVEoMSwgZ2F0
aGVyaW5nX3N0YXRlX3NpZ25hbF9jb3VudF8pOwogCiAgIC8vIFNldCB0aGUgcmVtb3RlIGRlc2Ny
aXB0aW9uIGFuZCBlbmFibGUgdGhlIGJ1bmRsZS4KQEAgLTcyMSw2ICsxMDA1LDEwIEBAIFRFU1Rf
RihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsCiAgICAgICB0cmFuc3BvcnRfY29udHJvbGxl
cl8tPkdldER0bHNUcmFuc3BvcnQoa1ZpZGVvTWlkMSkpOwogICBFWFBFQ1RfRVEoZmFrZV9hdWRp
b19kdGxzLCBmYWtlX3ZpZGVvX2R0bHMpOwogICBFWFBFQ1RfRVFfV0FJVChjcmlja2V0OjprSWNl
Q29ubmVjdGlvbkNvbXBsZXRlZCwgY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAgRVhQ
RUNUX0VRKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkNvbXBsZXRlZCwK
KyAgICAgICAgICAgIGljZV9jb25uZWN0aW9uX3N0YXRlXyk7CisgIEVYUEVDVF9FUShQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3RlZCwKKyAgICAg
ICAgICAgIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfKTsKICAgRVhQRUNUX0VRX1dBSVQoY3Jp
Y2tldDo6a0ljZUdhdGhlcmluZ0NvbXBsZXRlLCBnYXRoZXJpbmdfc3RhdGVfLCBrVGltZW91dCk7
CiAgIEVYUEVDVF9FUSgyLCBnYXRoZXJpbmdfc3RhdGVfc2lnbmFsX2NvdW50Xyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9sb2Nh
bGF1ZGlvc291cmNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9sb2NhbGF1ZGlvc291cmNlLmgKaW5kZXggYzVmNjUzMDRkMGIzY2ViNWI3NzA0MDY1NTQ0
MjRkMzRjYzNjN2Y0OS4uYzQ4ZjU0MDdkNGMxZTUzNGY1ZTZjYjM2Y2I5N2NhMmY1NGY2MzQyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
bG9jYWxhdWRpb3NvdXJjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL2xvY2FsYXVkaW9zb3VyY2UuaApAQCAtMjksNyArMjksNyBAQCBjbGFzcyBM
b2NhbEF1ZGlvU291cmNlIDogcHVibGljIE5vdGlmaWVyPEF1ZGlvU291cmNlSW50ZXJmYWNlPiB7
CiAgIFNvdXJjZVN0YXRlIHN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4ga0xpdmU7IH0K
ICAgYm9vbCByZW1vdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gIHZp
cnR1YWwgY29uc3QgY3JpY2tldDo6QXVkaW9PcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1
cm4gb3B0aW9uc187IH0KKyAgY29uc3QgY3JpY2tldDo6QXVkaW9PcHRpb25zIG9wdGlvbnMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBvcHRpb25zXzsgfQogCiAgIHZvaWQgQWRkU2luayhBdWRp
b1RyYWNrU2lua0ludGVyZmFjZSogc2luaykgb3ZlcnJpZGUge30KICAgdm9pZCBSZW1vdmVTaW5r
KEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSBvdmVycmlkZSB7fQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9u
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFz
ZXNzaW9uLmNjCmluZGV4IDlhZTQ2YmUyN2M1YmY4NWEwM2EyYzgyZGU3YWU3ZjZhNzRhMTE1YjQu
LjcyMzlhZjg2YzM5OWU3YmRiZTQ4NmQ4YjA2YmRhY2E2OWE2MTJjMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRp
YXNlc3Npb24uY2MKQEAgLTE4LDkgKzE4LDkgQEAKICNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNp
bmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2NyeXB0b3BhcmFt
cy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
CiAjaW5jbHVkZSAibWVkaWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2ZWxfaWQuaCIKICNpbmNsdWRl
ICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvcDJwY29u
c3RhbnRzLmgiCkBAIC0zOSwxMCArMzksMTAgQEAgdXNpbmcgd2VicnRjOjpSdHBUcmFuc2NlaXZl
ckRpcmVjdGlvbjsKIAogY29uc3QgY2hhciBrSW5saW5lW10gPSAiaW5saW5lOiI7CiAKLXZvaWQg
R2V0U3VwcG9ydGVkU2Rlc0NyeXB0b1N1aXRlTmFtZXModm9pZCAoKmZ1bmMpKGNvbnN0IHJ0Yzo6
Q3J5cHRvT3B0aW9ucyYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+KiksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiogbmFtZXMpIHsKK3ZvaWQgR2V0U3VwcG9ydGVkU2Rlc0NyeXB0b1N1aXRlTmFtZXMoCisg
ICAgdm9pZCAoKmZ1bmMpKGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYsIHN0ZDo6dmVjdG9y
PGludD4qKSwKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25z
LAorICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogbmFtZXMpIHsKICAgc3RkOjp2ZWN0b3I8
aW50PiBjcnlwdG9fc3VpdGVzOwogICBmdW5jKGNyeXB0b19vcHRpb25zLCAmY3J5cHRvX3N1aXRl
cyk7CiAgIGZvciAoY29uc3QgYXV0byBjcnlwdG8gOiBjcnlwdG9fc3VpdGVzKSB7CkBAIC0xOTUs
MjggKzE5NSwzMCBAQCBib29sIEZpbmRNYXRjaGluZ0NyeXB0byhjb25zdCBDcnlwdG9QYXJhbXNW
ZWMmIGNyeXB0b3MsCiAKIC8vIEZvciBhdWRpbywgSE1BQyAzMiAoaWYgZW5hYmxlZCkgaXMgcHJl
ZmVyZWQgb3ZlciBITUFDIDgwIGJlY2F1c2Ugb2YgdGhlCiAvLyBsb3cgb3ZlcmhlYWQuCi12b2lk
IEdldFN1cHBvcnRlZEF1ZGlvU2Rlc0NyeXB0b1N1aXRlcyhjb25zdCBydGM6OkNyeXB0b09wdGlv
bnMmIGNyeXB0b19vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5cHRvX3N1aXRlcykgewotICBpZiAoY3J5cHRvX29wdGlv
bnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzKSB7Cit2b2lkIEdldFN1cHBvcnRlZEF1ZGlvU2Rl
c0NyeXB0b1N1aXRlcygKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19v
cHRpb25zLAorICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0b19zdWl0ZXMpIHsKKyAgaWYgKGNy
eXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzKSB7CiAgICAgY3J5cHRv
X3N1aXRlcy0+cHVzaF9iYWNrKHJ0Yzo6U1JUUF9BRUFEX0FFU18yNTZfR0NNKTsKICAgICBjcnlw
dG9fc3VpdGVzLT5wdXNoX2JhY2socnRjOjpTUlRQX0FFQURfQUVTXzEyOF9HQ00pOwogICB9Ci0g
IGlmIChjcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlcikg
eworICBpZiAoY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRv
X2NpcGhlcikgewogICAgIGNyeXB0b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6OlNSVFBfQUVTMTI4
X0NNX1NIQTFfMzIpOwogICB9CiAgIGNyeXB0b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6OlNSVFBf
QUVTMTI4X0NNX1NIQTFfODApOwogfQogCiB2b2lkIEdldFN1cHBvcnRlZEF1ZGlvU2Rlc0NyeXB0
b1N1aXRlTmFtZXMoCi0gICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogY3J5cHRvX3N1aXRlX25hbWVzKSB7CiAgIEdldFN1
cHBvcnRlZFNkZXNDcnlwdG9TdWl0ZU5hbWVzKEdldFN1cHBvcnRlZEF1ZGlvU2Rlc0NyeXB0b1N1
aXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3J5cHRvX29wdGlvbnMs
IGNyeXB0b19zdWl0ZV9uYW1lcyk7CiB9CiAKLXZvaWQgR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5
cHRvU3VpdGVzKGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+KiBjcnlw
dG9fc3VpdGVzKSB7Ci0gIGlmIChjcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0
ZXMpIHsKK3ZvaWQgR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRvU3VpdGVzKAorICAgIGNvbnN0
IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgc3RkOjp2ZWN0b3I8
aW50PiogY3J5cHRvX3N1aXRlcykgeworICBpZiAoY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVf
Z2NtX2NyeXB0b19zdWl0ZXMpIHsKICAgICBjcnlwdG9fc3VpdGVzLT5wdXNoX2JhY2socnRjOjpT
UlRQX0FFQURfQUVTXzI1Nl9HQ00pOwogICAgIGNyeXB0b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6
OlNSVFBfQUVBRF9BRVNfMTI4X0dDTSk7CiAgIH0KQEAgLTIyNCwxNSArMjI2LDE2IEBAIHZvaWQg
R2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRvU3VpdGVzKGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9u
cyYgY3J5cHRvX29wdGlvbnMsCiB9CiAKIHZvaWQgR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRv
U3VpdGVOYW1lcygKLSAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25z
LAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCiAgICAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBjcnlwdG9fc3VpdGVfbmFtZXMpIHsKICAgR2V0U3Vw
cG9ydGVkU2Rlc0NyeXB0b1N1aXRlTmFtZXMoR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRvU3Vp
dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnlwdG9fb3B0aW9ucywg
Y3J5cHRvX3N1aXRlX25hbWVzKTsKIH0KIAotdm9pZCBHZXRTdXBwb3J0ZWREYXRhU2Rlc0NyeXB0
b1N1aXRlcyhjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+KiBjcnlwdG9f
c3VpdGVzKSB7Ci0gIGlmIChjcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMp
IHsKK3ZvaWQgR2V0U3VwcG9ydGVkRGF0YVNkZXNDcnlwdG9TdWl0ZXMoCisgICAgY29uc3Qgd2Vi
cnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBzdGQ6OnZlY3RvcjxpbnQ+
KiBjcnlwdG9fc3VpdGVzKSB7CisgIGlmIChjcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21f
Y3J5cHRvX3N1aXRlcykgewogICAgIGNyeXB0b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6OlNSVFBf
QUVBRF9BRVNfMjU2X0dDTSk7CiAgICAgY3J5cHRvX3N1aXRlcy0+cHVzaF9iYWNrKHJ0Yzo6U1JU
UF9BRUFEX0FFU18xMjhfR0NNKTsKICAgfQpAQCAtMjQwLDcgKzI0Myw3IEBAIHZvaWQgR2V0U3Vw
cG9ydGVkRGF0YVNkZXNDcnlwdG9TdWl0ZXMoY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlw
dG9fb3B0aW9ucywKIH0KIAogdm9pZCBHZXRTdXBwb3J0ZWREYXRhU2Rlc0NyeXB0b1N1aXRlTmFt
ZXMoCi0gICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBj
b25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAgIHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiogY3J5cHRvX3N1aXRlX25hbWVzKSB7CiAgIEdldFN1cHBvcnRlZFNk
ZXNDcnlwdG9TdWl0ZU5hbWVzKEdldFN1cHBvcnRlZERhdGFTZGVzQ3J5cHRvU3VpdGVzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnlwdG9fb3B0aW9ucywgY3J5cHRvX3N1
aXRlX25hbWVzKTsKQEAgLTI1MiwxNyArMjU1LDE3IEBAIHZvaWQgR2V0U3VwcG9ydGVkRGF0YVNk
ZXNDcnlwdG9TdWl0ZU5hbWVzKAogLy8gUGljayB0aGUgY3J5cHRvIGluIHRoZSBsaXN0IHRoYXQg
aXMgc3VwcG9ydGVkLgogc3RhdGljIGJvb2wgU2VsZWN0Q3J5cHRvKGNvbnN0IE1lZGlhQ29udGVu
dERlc2NyaXB0aW9uKiBvZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJ1bmRs
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNy
eXB0b19vcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5
cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgQ3J5
cHRvUGFyYW1zKiBjcnlwdG9fb3V0KSB7CiAgIGJvb2wgYXVkaW8gPSBvZmZlci0+dHlwZSgpID09
IE1FRElBX1RZUEVfQVVESU87CiAgIGNvbnN0IENyeXB0b1BhcmFtc1ZlYyYgY3J5cHRvcyA9IG9m
ZmVyLT5jcnlwdG9zKCk7CiAKICAgZm9yIChjb25zdCBDcnlwdG9QYXJhbXMmIGNyeXB0byA6IGNy
eXB0b3MpIHsKLSAgICBpZiAoKGNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRl
cyAmJgorICAgIGlmICgoY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0
ZXMgJiYKICAgICAgICAgIHJ0Yzo6SXNHY21DcnlwdG9TdWl0ZU5hbWUoY3J5cHRvLmNpcGhlcl9z
dWl0ZSkpIHx8CiAgICAgICAgIHJ0Yzo6Q1NfQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAgPT0gY3J5
cHRvLmNpcGhlcl9zdWl0ZSB8fAogICAgICAgICAocnRjOjpDU19BRVNfQ01fMTI4X0hNQUNfU0hB
MV8zMiA9PSBjcnlwdG8uY2lwaGVyX3N1aXRlICYmIGF1ZGlvICYmCi0gICAgICAgICAhYnVuZGxl
ICYmIGNyeXB0b19vcHRpb25zLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyKSkg
eworICAgICAgICAgIWJ1bmRsZSAmJiBjcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9hZXMxMjhf
c2hhMV8zMl9jcnlwdG9fY2lwaGVyKSkgewogICAgICAgcmV0dXJuIENyZWF0ZUNyeXB0b1BhcmFt
cyhjcnlwdG8udGFnLCBjcnlwdG8uY2lwaGVyX3N1aXRlLCBjcnlwdG9fb3V0KTsKICAgICB9CiAg
IH0KQEAgLTMwOSw3ICszMTIsOCBAQCB2b2lkIEZpbHRlckRhdGFDb2RlY3Moc3RkOjp2ZWN0b3I8
RGF0YUNvZGVjPiogY29kZWNzLCBib29sIHNjdHApIHsKICAgICAgIHNjdHAgPyBrR29vZ2xlUnRw
RGF0YUNvZGVjTmFtZSA6IGtHb29nbGVTY3RwRGF0YUNvZGVjTmFtZTsKICAgY29kZWNzLT5lcmFz
ZShzdGQ6OnJlbW92ZV9pZihjb2RlY3MtPmJlZ2luKCksIGNvZGVjcy0+ZW5kKCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWyZjb2RlY19uYW1lXShjb25zdCBEYXRhQ29kZWMmIGNv
ZGVjKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ29kZWNOYW1l
c0VxKGNvZGVjLm5hbWUsIGNvZGVjX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
ZGVjX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAg
ICAgICAgIGNvZGVjcy0+ZW5kKCkpOwogfQpAQCAtNjUwLDcgKzY1NCw3IEBAIHN0YXRpYyBib29s
IENvbnRhaW5zUnR4Q29kZWMoY29uc3Qgc3RkOjp2ZWN0b3I8Qz4mIGNvZGVjcykgewogCiB0ZW1w
bGF0ZSA8Y2xhc3MgQz4KIHN0YXRpYyBib29sIElzUnR4Q29kZWMoY29uc3QgQyYgY29kZWMpIHsK
LSAgcmV0dXJuIFNUUl9DQVNFX0NNUChjb2RlYy5uYW1lLmNfc3RyKCksIGtSdHhDb2RlY05hbWUp
ID09IDA7CisgIHJldHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjLm5hbWUsIGtSdHhD
b2RlY05hbWUpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgQz4KQEAgLTY2NSw3ICs2NjksNyBAQCBz
dGF0aWMgYm9vbCBDb250YWluc0ZsZXhmZWNDb2RlYyhjb25zdCBzdGQ6OnZlY3RvcjxDPiYgY29k
ZWNzKSB7CiAKIHRlbXBsYXRlIDxjbGFzcyBDPgogc3RhdGljIGJvb2wgSXNGbGV4ZmVjQ29kZWMo
Y29uc3QgQyYgY29kZWMpIHsKLSAgcmV0dXJuIFNUUl9DQVNFX0NNUChjb2RlYy5uYW1lLmNfc3Ry
KCksIGtGbGV4ZmVjQ29kZWNOYW1lKSA9PSAwOworICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3Jl
Q2FzZShjb2RlYy5uYW1lLCBrRmxleGZlY0NvZGVjTmFtZSk7CiB9CiAKIC8vIENyZWF0ZSBhIG1l
ZGlhIGNvbnRlbnQgdG8gYmUgb2ZmZXJlZCBmb3IgdGhlIGdpdmVuIHxzZW5kZXJfb3B0aW9uc3ws
CkBAIC03NDMsNyArNzQ3LDcgQEAgc3RhdGljIHZvaWQgTmVnb3RpYXRlQ29kZWNzKGNvbnN0IHN0
ZDo6dmVjdG9yPEM+JiBsb2NhbF9jb2RlY3MsCiAgICAgICAgIFJUQ19EQ0hFQ0soYXB0X2l0ICE9
IHRoZWlycy5wYXJhbXMuZW5kKCkpOwogICAgICAgICBuZWdvdGlhdGVkLlNldFBhcmFtKGtDb2Rl
Y1BhcmFtQXNzb2NpYXRlZFBheWxvYWRUeXBlLCBhcHRfaXQtPnNlY29uZCk7CiAgICAgICB9Ci0g
ICAgICBpZiAoQ29kZWNOYW1lc0VxKG91cnMubmFtZS5jX3N0cigpLCBrSDI2NENvZGVjTmFtZSkp
IHsKKyAgICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG91cnMubmFtZSwga0gyNjRDb2Rl
Y05hbWUpKSB7CiAgICAgICAgIHdlYnJ0Yzo6SDI2NDo6R2VuZXJhdGVQcm9maWxlTGV2ZWxJZEZv
ckFuc3dlcigKICAgICAgICAgICAgIG91cnMucGFyYW1zLCB0aGVpcnMucGFyYW1zLCAmbmVnb3Rp
YXRlZC5wYXJhbXMpOwogICAgICAgfQpAQCAtMTAzOCw5ICsxMDQyLDggQEAgc3RhdGljIHZvaWQg
TmVnb3RpYXRlUnRwSGVhZGVyRXh0ZW5zaW9ucygKIHN0YXRpYyB2b2lkIFN0cmlwQ05Db2RlY3Mo
QXVkaW9Db2RlY3MqIGF1ZGlvX2NvZGVjcykgewogICBhdWRpb19jb2RlY3MtPmVyYXNlKHN0ZDo6
cmVtb3ZlX2lmKGF1ZGlvX2NvZGVjcy0+YmVnaW4oKSwgYXVkaW9fY29kZWNzLT5lbmQoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXShjb25zdCBBdWRpb0NvZGVjJiBj
b2RlYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNU
Ul9DQVNFX0NNUCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29kZWMubmFtZS5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrQ29tZm9ydE5vaXNlQ29kZWNOYW1lKSA9PSAwOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9y
ZUNhc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWMu
bmFtZSwga0NvbWZvcnROb2lzZUNvZGVjTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fY29kZWNzLT5lbmQo
KSk7CiB9CkBAIC0xMDY5LDYgKzEwNzIsOCBAQCBzdGF0aWMgYm9vbCBDcmVhdGVNZWRpYUNvbnRl
bnRBbnN3ZXIoCiAgIE5lZ290aWF0ZUNvZGVjcyhsb2NhbF9jb2RlY3MsIG9mZmVyLT5jb2RlY3Mo
KSwgJm5lZ290aWF0ZWRfY29kZWNzKTsKICAgYW5zd2VyLT5BZGRDb2RlY3MobmVnb3RpYXRlZF9j
b2RlY3MpOwogICBhbnN3ZXItPnNldF9wcm90b2NvbChvZmZlci0+cHJvdG9jb2woKSk7CisKKyAg
YW5zd2VyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0ob2ZmZXItPmV4dG1hcF9hbGxvd19t
aXhlZF9lbnVtKCkpOwogICBSdHBIZWFkZXJFeHRlbnNpb25zIG5lZ290aWF0ZWRfcnRwX2V4dGVu
c2lvbnM7CiAgIE5lZ290aWF0ZVJ0cEhlYWRlckV4dGVuc2lvbnMoCiAgICAgICBsb2NhbF9ydHBf
ZXh0ZW5zdGlvbnMsIG9mZmVyLT5ydHBfaGVhZGVyX2V4dGVuc2lvbnMoKSwKQEAgLTEyNjIsNiAr
MTI2Nyw4IEBAIFNlc3Npb25EZXNjcmlwdGlvbiogTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0
b3J5OjpDcmVhdGVPZmZlcigKICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJlbnRf
ZGVzY3JpcHRpb24pIGNvbnN0IHsKICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlv
bj4gb2ZmZXIobmV3IFNlc3Npb25EZXNjcmlwdGlvbigpKTsKIAorICBJY2VDcmVkZW50aWFsc0l0
ZXJhdG9yIGljZV9jcmVkZW50aWFscygKKyAgICAgIHNlc3Npb25fb3B0aW9ucy5wb29sZWRfaWNl
X2NyZWRlbnRpYWxzKTsKICAgU3RyZWFtUGFyYW1zVmVjIGN1cnJlbnRfc3RyZWFtczsKICAgR2V0
Q3VycmVudFN0cmVhbVBhcmFtcyhjdXJyZW50X2Rlc2NyaXB0aW9uLCAmY3VycmVudF9zdHJlYW1z
KTsKIApAQCAtMTMwNSwxOCArMTMxMiwxOCBAQCBTZXNzaW9uRGVzY3JpcHRpb24qIE1lZGlhU2Vz
c2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlT2ZmZXIoCiAgICAgfQogICAgIHN3aXRjaCAo
bWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy50eXBlKSB7CiAgICAgICBjYXNlIE1FRElBX1RZUEVf
QVVESU86Ci0gICAgICAgIGlmICghQWRkQXVkaW9Db250ZW50Rm9yT2ZmZXIobWVkaWFfZGVzY3Jp
cHRpb25fb3B0aW9ucywgc2Vzc2lvbl9vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRfY29udGVudCwgY3VycmVudF9kZXNjcmlwdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19ydHBfZXh0ZW5zaW9ucywgb2Zm
ZXJfYXVkaW9fY29kZWNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZj
dXJyZW50X3N0cmVhbXMsIG9mZmVyLmdldCgpKSkgeworICAgICAgICBpZiAoIUFkZEF1ZGlvQ29u
dGVudEZvck9mZmVyKAorICAgICAgICAgICAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMs
IHNlc3Npb25fb3B0aW9ucywgY3VycmVudF9jb250ZW50LAorICAgICAgICAgICAgICAgIGN1cnJl
bnRfZGVzY3JpcHRpb24sIGF1ZGlvX3J0cF9leHRlbnNpb25zLCBvZmZlcl9hdWRpb19jb2RlY3Ms
CisgICAgICAgICAgICAgICAgJmN1cnJlbnRfc3RyZWFtcywgb2ZmZXIuZ2V0KCksICZpY2VfY3Jl
ZGVudGlhbHMpKSB7CiAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIE1FRElBX1RZUEVfVklERU86Ci0gICAgICAgIGlmICghQWRk
VmlkZW9Db250ZW50Rm9yT2ZmZXIobWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucywgc2Vzc2lvbl9v
cHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfY29u
dGVudCwgY3VycmVudF9kZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2aWRlb19ydHBfZXh0ZW5zaW9ucywgb2ZmZXJfdmlkZW9fY29kZWNzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJyZW50X3N0cmVhbXMsIG9mZmVyLmdl
dCgpKSkgeworICAgICAgICBpZiAoIUFkZFZpZGVvQ29udGVudEZvck9mZmVyKAorICAgICAgICAg
ICAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25fb3B0aW9ucywgY3VycmVu
dF9jb250ZW50LAorICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3JpcHRpb24sIHZpZGVvX3J0
cF9leHRlbnNpb25zLCBvZmZlcl92aWRlb19jb2RlY3MsCisgICAgICAgICAgICAgICAgJmN1cnJl
bnRfc3RyZWFtcywgb2ZmZXIuZ2V0KCksICZpY2VfY3JlZGVudGlhbHMpKSB7CiAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0xMzI0LDcgKzEz
MzEsNyBAQCBTZXNzaW9uRGVzY3JpcHRpb24qIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9y
eTo6Q3JlYXRlT2ZmZXIoCiAgICAgICAgIGlmICghQWRkRGF0YUNvbnRlbnRGb3JPZmZlcihtZWRp
YV9kZXNjcmlwdGlvbl9vcHRpb25zLCBzZXNzaW9uX29wdGlvbnMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2NvbnRlbnQsIGN1cnJlbnRfZGVzY3JpcHRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZlcl9kYXRhX2NvZGVjcywg
JmN1cnJlbnRfc3RyZWFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m
ZmVyLmdldCgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXIu
Z2V0KCksICZpY2VfY3JlZGVudGlhbHMpKSB7CiAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0xMzcxLDYgKzEzNzgsOCBAQCBTZXNzaW9uRGVz
Y3JpcHRpb24qIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlT2ZmZXIoCiAg
ICAgb2ZmZXItPnNldF9tc2lkX3NpZ25hbGluZyhjcmlja2V0OjprTXNpZFNpZ25hbGluZ1NzcmNB
dHRyaWJ1dGUpOwogICB9CiAKKyAgb2ZmZXItPnNldF9leHRtYXBfYWxsb3dfbWl4ZWQoc2Vzc2lv
bl9vcHRpb25zLm9mZmVyX2V4dG1hcF9hbGxvd19taXhlZCk7CisKICAgcmV0dXJuIG9mZmVyLnJl
bGVhc2UoKTsKIH0KIApAQCAtMTM4MSw2ICsxMzkwLDEwIEBAIFNlc3Npb25EZXNjcmlwdGlvbiog
TWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVBbnN3ZXIoCiAgIGlmICghb2Zm
ZXIpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQorCisgIEljZUNyZWRlbnRpYWxzSXRlcmF0
b3IgaWNlX2NyZWRlbnRpYWxzKAorICAgICAgc2Vzc2lvbl9vcHRpb25zLnBvb2xlZF9pY2VfY3Jl
ZGVudGlhbHMpOworCiAgIC8vIFRoZSBhbnN3ZXIgY29udGFpbnMgdGhlIGludGVyc2VjdGlvbiBv
ZiB0aGUgY29kZWNzIGluIHRoZSBvZmZlciB3aXRoIHRoZQogICAvLyBjb2RlY3Mgd2Ugc3VwcG9y
dC4gQXMgaW5kaWNhdGVkIGJ5IFhFUC0wMTY3LCB3ZSByZXRhaW4gdGhlIHNhbWUgcGF5bG9hZCBp
ZHMKICAgLy8gZnJvbSB0aGUgb2ZmZXIgaW4gdGhlIGFuc3dlci4KQEAgLTEzOTYsNiArMTQwOSw4
IEBAIFNlc3Npb25EZXNjcmlwdGlvbiogTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpD
cmVhdGVBbnN3ZXIoCiAgIC8vIFRyYW5zcG9ydCBpbmZvIHNoYXJlZCBieSB0aGUgYnVuZGxlIGdy
b3VwLgogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0SW5mbz4gYnVuZGxlX3RyYW5zcG9ydDsK
IAorICBhbnN3ZXItPnNldF9leHRtYXBfYWxsb3dfbWl4ZWQob2ZmZXItPmV4dG1hcF9hbGxvd19t
aXhlZCgpKTsKKwogICAvLyBHZXQgbGlzdCBvZiBhbGwgcG9zc2libGUgY29kZWNzIHRoYXQgcmVz
cGVjdHMgZXhpc3RpbmcgcGF5bG9hZCB0eXBlCiAgIC8vIG1hcHBpbmdzIGFuZCB1c2VzIGEgc2lu
Z2xlIHBheWxvYWQgdHlwZSBzcGFjZS4KICAgLy8KQEAgLTE0NDAsNyArMTQ1NSw3IEBAIFNlc3Np
b25EZXNjcmlwdGlvbiogTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVBbnN3
ZXIoCiAgICAgICAgICAgICAgICAgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucywgc2Vzc2lvbl9v
cHRpb25zLCBvZmZlcl9jb250ZW50LAogICAgICAgICAgICAgICAgIG9mZmVyLCBjdXJyZW50X2Nv
bnRlbnQsIGN1cnJlbnRfZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgYnVuZGxlX3RyYW5z
cG9ydC5nZXQoKSwgYW5zd2VyX2F1ZGlvX2NvZGVjcywgJmN1cnJlbnRfc3RyZWFtcywKLSAgICAg
ICAgICAgICAgICBhbnN3ZXIuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgYW5zd2VyLmdldCgp
LCAmaWNlX2NyZWRlbnRpYWxzKSkgewogICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTQ0OSwxNiArMTQ2NCwxNiBAQCBTZXNzaW9uRGVzY3Jp
cHRpb24qIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlQW5zd2VyKAogICAg
ICAgICAgICAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25fb3B0aW9ucywg
b2ZmZXJfY29udGVudCwKICAgICAgICAgICAgICAgICBvZmZlciwgY3VycmVudF9jb250ZW50LCBj
dXJyZW50X2Rlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgIGJ1bmRsZV90cmFuc3BvcnQuZ2V0
KCksIGFuc3dlcl92aWRlb19jb2RlY3MsICZjdXJyZW50X3N0cmVhbXMsCi0gICAgICAgICAgICAg
ICAgYW5zd2VyLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGFuc3dlci5nZXQoKSwgJmljZV9j
cmVkZW50aWFscykpIHsKICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICAgIGNhc2UgTUVESUFfVFlQRV9EQVRBOgotICAgICAgICBpZiAoIUFk
ZERhdGFDb250ZW50Rm9yQW5zd2VyKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25f
b3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZlcl9jb250
ZW50LCBvZmZlciwgY3VycmVudF9jb250ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRfZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnVuZGxlX3RyYW5zcG9ydC5nZXQoKSwgYW5zd2VyX2RhdGFfY29kZWNzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJyZW50X3N0cmVhbXMsIGFu
c3dlci5nZXQoKSkpIHsKKyAgICAgICAgaWYgKCFBZGREYXRhQ29udGVudEZvckFuc3dlcigKKyAg
ICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLCBzZXNzaW9uX29wdGlvbnMs
IG9mZmVyX2NvbnRlbnQsCisgICAgICAgICAgICAgICAgb2ZmZXIsIGN1cnJlbnRfY29udGVudCwg
Y3VycmVudF9kZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICBidW5kbGVfdHJhbnNwb3J0Lmdl
dCgpLCBhbnN3ZXJfZGF0YV9jb2RlY3MsICZjdXJyZW50X3N0cmVhbXMsCisgICAgICAgICAgICAg
ICAgYW5zd2VyLmdldCgpLCAmaWNlX2NyZWRlbnRpYWxzKSkgewogICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTc2NSwxMyArMTc4MCwxNSBA
QCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6QWRkVHJhbnNwb3J0T2ZmZXIo
CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICBjb25zdCBUcmFuc3Bv
cnRPcHRpb25zJiB0cmFuc3BvcnRfb3B0aW9ucywKICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRp
b24qIGN1cnJlbnRfZGVzYywKLSAgICBTZXNzaW9uRGVzY3JpcHRpb24qIG9mZmVyX2Rlc2MpIGNv
bnN0IHsKKyAgICBTZXNzaW9uRGVzY3JpcHRpb24qIG9mZmVyX2Rlc2MsCisgICAgSWNlQ3JlZGVu
dGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIGlmICghdHJhbnNwb3J0
X2Rlc2NfZmFjdG9yeV8pCiAgICAgcmV0dXJuIGZhbHNlOwogICBjb25zdCBUcmFuc3BvcnREZXNj
cmlwdGlvbiogY3VycmVudF90ZGVzYyA9CiAgICAgICBHZXRUcmFuc3BvcnREZXNjcmlwdGlvbihj
b250ZW50X25hbWUsIGN1cnJlbnRfZGVzYyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnRE
ZXNjcmlwdGlvbj4gbmV3X3RkZXNjKAotICAgICAgdHJhbnNwb3J0X2Rlc2NfZmFjdG9yeV8tPkNy
ZWF0ZU9mZmVyKHRyYW5zcG9ydF9vcHRpb25zLCBjdXJyZW50X3RkZXNjKSk7CisgICAgICB0cmFu
c3BvcnRfZGVzY19mYWN0b3J5Xy0+Q3JlYXRlT2ZmZXIodHJhbnNwb3J0X29wdGlvbnMsIGN1cnJl
bnRfdGRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNl
X2NyZWRlbnRpYWxzKSk7CiAgIGJvb2wgcmV0ID0KICAgICAgIChuZXdfdGRlc2MuZ2V0KCkgIT0g
TlVMTCAmJgogICAgICAgIG9mZmVyX2Rlc2MtPkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0SW5m
byhjb250ZW50X25hbWUsICpuZXdfdGRlc2MpKSk7CkBAIC0xNzg3LDcgKzE4MDQsOCBAQCBUcmFu
c3BvcnREZXNjcmlwdGlvbiogTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVU
cmFuc3BvcnRBbnN3ZXIoCiAgICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBvZmZlcl9kZXNj
LAogICAgIGNvbnN0IFRyYW5zcG9ydE9wdGlvbnMmIHRyYW5zcG9ydF9vcHRpb25zLAogICAgIGNv
bnN0IFNlc3Npb25EZXNjcmlwdGlvbiogY3VycmVudF9kZXNjLAotICAgIGJvb2wgcmVxdWlyZV90
cmFuc3BvcnRfYXR0cmlidXRlcykgY29uc3QgeworICAgIGJvb2wgcmVxdWlyZV90cmFuc3BvcnRf
YXR0cmlidXRlcywKKyAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMp
IGNvbnN0IHsKICAgaWYgKCF0cmFuc3BvcnRfZGVzY19mYWN0b3J5XykKICAgICByZXR1cm4gTlVM
TDsKICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIG9mZmVyX3RkZXNjID0KQEAgLTE3OTYs
NyArMTgxNCw3IEBAIFRyYW5zcG9ydERlc2NyaXB0aW9uKiBNZWRpYVNlc3Npb25EZXNjcmlwdGlv
bkZhY3Rvcnk6OkNyZWF0ZVRyYW5zcG9ydEFuc3dlcigKICAgICAgIEdldFRyYW5zcG9ydERlc2Ny
aXB0aW9uKGNvbnRlbnRfbmFtZSwgY3VycmVudF9kZXNjKTsKICAgcmV0dXJuIHRyYW5zcG9ydF9k
ZXNjX2ZhY3RvcnlfLT5DcmVhdGVBbnN3ZXIob2ZmZXJfdGRlc2MsIHRyYW5zcG9ydF9vcHRpb25z
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJl
X3RyYW5zcG9ydF9hdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50X3RkZXNjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3VycmVudF90ZGVzYywgaWNlX2NyZWRlbnRpYWxzKTsKIH0K
IAogYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZFRyYW5zcG9ydEFuc3dl
cigKQEAgLTE4MzIsNyArMTg1MCw4IEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0
b3J5OjpBZGRBdWRpb0NvbnRlbnRGb3JPZmZlcigKICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNp
b25zJiBhdWRpb19ydHBfZXh0ZW5zaW9ucywKICAgICBjb25zdCBBdWRpb0NvZGVjcyYgYXVkaW9f
Y29kZWNzLAogICAgIFN0cmVhbVBhcmFtc1ZlYyogY3VycmVudF9zdHJlYW1zLAotICAgIFNlc3Np
b25EZXNjcmlwdGlvbiogZGVzYykgY29uc3QgeworICAgIFNlc3Npb25EZXNjcmlwdGlvbiogZGVz
YywKKyAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0IHsK
ICAgLy8gRmlsdGVyIGF1ZGlvX2NvZGVjcyAod2hpY2ggaW5jbHVkZXMgYWxsIGNvZGVjcywgd2l0
aCBjb3JyZWN0bHkgcmVtYXBwZWQKICAgLy8gcGF5bG9hZCB0eXBlcykgYmFzZWQgb24gdHJhbnNj
ZWl2ZXIgZGlyZWN0aW9uLgogICBjb25zdCBBdWRpb0NvZGVjcyYgc3VwcG9ydGVkX2F1ZGlvX2Nv
ZGVjcyA9CkBAIC0xODg4LDcgKzE5MDcsNyBAQCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9u
RmFjdG9yeTo6QWRkQXVkaW9Db250ZW50Rm9yT2ZmZXIoCiAgICAgICAgICAgICAgICAgICAgbWVk
aWFfZGVzY3JpcHRpb25fb3B0aW9ucy5zdG9wcGVkLCBhdWRpby5yZWxlYXNlKCkpOwogICBpZiAo
IUFkZFRyYW5zcG9ydE9mZmVyKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMudHJhbnNwb3J0X29w
dGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9kZXNjcmlwdGlvbiwgZGVz
YykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Rlc2NyaXB0aW9uLCBkZXNj
LCBpY2VfY3JlZGVudGlhbHMpKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKQEAgLTE5MDMs
NyArMTkyMiw4IEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpBZGRWaWRl
b0NvbnRlbnRGb3JPZmZlcigKICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25zJiB2aWRlb19y
dHBfZXh0ZW5zaW9ucywKICAgICBjb25zdCBWaWRlb0NvZGVjcyYgdmlkZW9fY29kZWNzLAogICAg
IFN0cmVhbVBhcmFtc1ZlYyogY3VycmVudF9zdHJlYW1zLAotICAgIFNlc3Npb25EZXNjcmlwdGlv
biogZGVzYykgY29uc3QgeworICAgIFNlc3Npb25EZXNjcmlwdGlvbiogZGVzYywKKyAgICBJY2VD
cmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0IHsKICAgY3JpY2tldDo6
U2VjdXJlUG9saWN5IHNkZXNfcG9saWN5ID0KICAgICAgIElzRHRsc0FjdGl2ZShjdXJyZW50X2Nv
bnRlbnQsIGN1cnJlbnRfZGVzY3JpcHRpb24pID8gY3JpY2tldDo6U0VDX0RJU0FCTEVECiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNl
Y3VyZSgpOwpAQCAtMTk1Nyw3ICsxOTc3LDcgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlv
bkZhY3Rvcnk6OkFkZFZpZGVvQ29udGVudEZvck9mZmVyKAogICAgICAgICAgICAgICAgICAgIG1l
ZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMuc3RvcHBlZCwgdmlkZW8ucmVsZWFzZSgpKTsKICAgaWYg
KCFBZGRUcmFuc3BvcnRPZmZlcihtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLm1pZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5zcG9ydF9v
cHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3JpcHRpb24sIGRl
c2MpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9kZXNjcmlwdGlvbiwgZGVz
YywgaWNlX2NyZWRlbnRpYWxzKSkgewogICAgIHJldHVybiBmYWxzZTsKICAgfQogICByZXR1cm4g
dHJ1ZTsKQEAgLTE5NzAsNyArMTk5MCw4IEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25G
YWN0b3J5OjpBZGREYXRhQ29udGVudEZvck9mZmVyKAogICAgIGNvbnN0IFNlc3Npb25EZXNjcmlw
dGlvbiogY3VycmVudF9kZXNjcmlwdGlvbiwKICAgICBjb25zdCBEYXRhQ29kZWNzJiBkYXRhX2Nv
ZGVjcywKICAgICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICBTZXNzaW9u
RGVzY3JpcHRpb24qIGRlc2MpIGNvbnN0IHsKKyAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2Ms
CisgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAg
IGJvb2wgc2VjdXJlX3RyYW5zcG9ydCA9ICh0cmFuc3BvcnRfZGVzY19mYWN0b3J5Xy0+c2VjdXJl
KCkgIT0gU0VDX0RJU0FCTEVEKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YUNvbnRlbnREZXNj
cmlwdGlvbj4gZGF0YShuZXcgRGF0YUNvbnRlbnREZXNjcmlwdGlvbigpKTsKQEAgLTIwMjQsNyAr
MjA0NSw3IEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpBZGREYXRhQ29u
dGVudEZvck9mZmVyKAogICB9CiAgIGlmICghQWRkVHJhbnNwb3J0T2ZmZXIobWVkaWFfZGVzY3Jp
cHRpb25fb3B0aW9ucy5taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFfZGVzY3Jp
cHRpb25fb3B0aW9ucy50cmFuc3BvcnRfb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBjdXJyZW50X2Rlc2NyaXB0aW9uLCBkZXNjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRfZGVzY3JpcHRpb24sIGRlc2MsIGljZV9jcmVkZW50aWFscykpIHsKICAgICByZXR1
cm4gZmFsc2U7CiAgIH0KICAgcmV0dXJuIHRydWU7CkBAIC0yMDUyLDE1ICsyMDczLDE2IEBAIGJv
b2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpBZGRBdWRpb0NvbnRlbnRGb3JBbnN3
ZXIoCiAgICAgY29uc3QgVHJhbnNwb3J0SW5mbyogYnVuZGxlX3RyYW5zcG9ydCwKICAgICBjb25z
dCBBdWRpb0NvZGVjcyYgYXVkaW9fY29kZWNzLAogICAgIFN0cmVhbVBhcmFtc1ZlYyogY3VycmVu
dF9zdHJlYW1zLAotICAgIFNlc3Npb25EZXNjcmlwdGlvbiogYW5zd2VyKSBjb25zdCB7CisgICAg
U2Vzc2lvbkRlc2NyaXB0aW9uKiBhbnN3ZXIsCisgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciog
aWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIFJUQ19DSEVDSyhJc01lZGlhQ29udGVudE9mVHlw
ZShvZmZlcl9jb250ZW50LCBNRURJQV9UWVBFX0FVRElPKSk7CiAgIGNvbnN0IEF1ZGlvQ29udGVu
dERlc2NyaXB0aW9uKiBvZmZlcl9hdWRpb19kZXNjcmlwdGlvbiA9CiAgICAgICBvZmZlcl9jb250
ZW50LT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19hdWRpbygpOwogCi0gIHN0ZDo6dW5pcXVlX3B0
cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gYXVkaW9fdHJhbnNwb3J0KAotICAgICAgQ3JlYXRlVHJh
bnNwb3J0QW5zd2VyKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkLCBvZmZlcl9kZXNjcmlw
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRp
b25zLnRyYW5zcG9ydF9vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRfZGVzY3JpcHRpb24sIGJ1bmRsZV90cmFuc3BvcnQgIT0gbnVsbHB0cikpOworICBzdGQ6OnVu
aXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGF1ZGlvX3RyYW5zcG9ydChDcmVhdGVUcmFu
c3BvcnRBbnN3ZXIoCisgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLm1pZCwgb2ZmZXJf
ZGVzY3JpcHRpb24sCisgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5zcG9ydF9v
cHRpb25zLCBjdXJyZW50X2Rlc2NyaXB0aW9uLAorICAgICAgYnVuZGxlX3RyYW5zcG9ydCAhPSBu
dWxscHRyLCBpY2VfY3JlZGVudGlhbHMpKTsKICAgaWYgKCFhdWRpb190cmFuc3BvcnQpIHsKICAg
ICByZXR1cm4gZmFsc2U7CiAgIH0KQEAgLTIxNDYsMTUgKzIxNjgsMTYgQEAgYm9vbCBNZWRpYVNl
c3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZFZpZGVvQ29udGVudEZvckFuc3dlcigKICAgICBj
b25zdCBUcmFuc3BvcnRJbmZvKiBidW5kbGVfdHJhbnNwb3J0LAogICAgIGNvbnN0IFZpZGVvQ29k
ZWNzJiB2aWRlb19jb2RlY3MsCiAgICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0cmVhbXMs
Ci0gICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBhbnN3ZXIpIGNvbnN0IHsKKyAgICBTZXNzaW9uRGVz
Y3JpcHRpb24qIGFuc3dlciwKKyAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVu
dGlhbHMpIGNvbnN0IHsKICAgUlRDX0NIRUNLKElzTWVkaWFDb250ZW50T2ZUeXBlKG9mZmVyX2Nv
bnRlbnQsIE1FRElBX1RZUEVfVklERU8pKTsKICAgY29uc3QgVmlkZW9Db250ZW50RGVzY3JpcHRp
b24qIG9mZmVyX3ZpZGVvX2Rlc2NyaXB0aW9uID0KICAgICAgIG9mZmVyX2NvbnRlbnQtPm1lZGlh
X2Rlc2NyaXB0aW9uKCktPmFzX3ZpZGVvKCk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9y
dERlc2NyaXB0aW9uPiB2aWRlb190cmFuc3BvcnQoCi0gICAgICBDcmVhdGVUcmFuc3BvcnRBbnN3
ZXIobWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy5taWQsIG9mZmVyX2Rlc2NyaXB0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMudHJhbnNw
b3J0X29wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9kZXNjcmlw
dGlvbiwgYnVuZGxlX3RyYW5zcG9ydCAhPSBudWxscHRyKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxU
cmFuc3BvcnREZXNjcmlwdGlvbj4gdmlkZW9fdHJhbnNwb3J0KENyZWF0ZVRyYW5zcG9ydEFuc3dl
cigKKyAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkLCBvZmZlcl9kZXNjcmlwdGlv
biwKKyAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMudHJhbnNwb3J0X29wdGlvbnMsIGN1
cnJlbnRfZGVzY3JpcHRpb24sCisgICAgICBidW5kbGVfdHJhbnNwb3J0ICE9IG51bGxwdHIsIGlj
ZV9jcmVkZW50aWFscykpOwogICBpZiAoIXZpZGVvX3RyYW5zcG9ydCkgewogICAgIHJldHVybiBm
YWxzZTsKICAgfQpAQCAtMjIzMiwxMSArMjI1NSwxMiBAQCBib29sIE1lZGlhU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFjdG9yeTo6QWRkRGF0YUNvbnRlbnRGb3JBbnN3ZXIoCiAgICAgY29uc3QgVHJhbnNw
b3J0SW5mbyogYnVuZGxlX3RyYW5zcG9ydCwKICAgICBjb25zdCBEYXRhQ29kZWNzJiBkYXRhX2Nv
ZGVjcywKICAgICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICBTZXNzaW9u
RGVzY3JpcHRpb24qIGFuc3dlcikgY29uc3QgewotICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0
RGVzY3JpcHRpb24+IGRhdGFfdHJhbnNwb3J0KAotICAgICAgQ3JlYXRlVHJhbnNwb3J0QW5zd2Vy
KG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkLCBvZmZlcl9kZXNjcmlwdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5zcG9y
dF9vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3JpcHRp
b24sIGJ1bmRsZV90cmFuc3BvcnQgIT0gbnVsbHB0cikpOworICAgIFNlc3Npb25EZXNjcmlwdGlv
biogYW5zd2VyLAorICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykg
Y29uc3QgeworICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRhdGFfdHJh
bnNwb3J0KENyZWF0ZVRyYW5zcG9ydEFuc3dlcigKKyAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29w
dGlvbnMubWlkLCBvZmZlcl9kZXNjcmlwdGlvbiwKKyAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29w
dGlvbnMudHJhbnNwb3J0X29wdGlvbnMsIGN1cnJlbnRfZGVzY3JpcHRpb24sCisgICAgICBidW5k
bGVfdHJhbnNwb3J0ICE9IG51bGxwdHIsIGljZV9jcmVkZW50aWFscykpOwogICBpZiAoIWRhdGFf
dHJhbnNwb3J0KSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5o
CmluZGV4IGI0MDk3NDAzOWI4MjBhOTY1ZjU3ZDU3ZjM1YzY4OTAyMWM0NDU0MzAuLjU5MDQ2MDVm
MTBhNGRhMjVmYmQ3Y2RjOTVjZmI5MGY5NDk5MTQ2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5o
CkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiYXBpL21lZGlhdHlwZXMuaCIKICNpbmNsdWRl
ICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRp
YWVuZ2luZS5oIiAgLy8gRm9yIERhdGFDaGFubmVsVHlwZQorI2luY2x1ZGUgInAycC9iYXNlL2lj
ZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCIKICNpbmNsdWRlICJwMnAvYmFzZS90cmFuc3BvcnRkZXNj
cmlwdGlvbmZhY3RvcnkuaCIKICNpbmNsdWRlICJwYy9qc2VwdHJhbnNwb3J0LmgiCiAjaW5jbHVk
ZSAicGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgiCkBAIC05MywxMSArOTQsMTMgQEAgc3RydWN0IE1l
ZGlhU2Vzc2lvbk9wdGlvbnMgewogICBib29sIHJ0Y3BfbXV4X2VuYWJsZWQgPSB0cnVlOwogICBi
b29sIGJ1bmRsZV9lbmFibGVkID0gZmFsc2U7CiAgIGJvb2wgaXNfdW5pZmllZF9wbGFuID0gZmFs
c2U7CisgIGJvb2wgb2ZmZXJfZXh0bWFwX2FsbG93X21peGVkID0gZmFsc2U7CiAgIHN0ZDo6c3Ry
aW5nIHJ0Y3BfY25hbWUgPSBrRGVmYXVsdFJ0Y3BDbmFtZTsKLSAgcnRjOjpDcnlwdG9PcHRpb25z
IGNyeXB0b19vcHRpb25zOworICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnM7
CiAgIC8vIExpc3Qgb2YgbWVkaWEgZGVzY3JpcHRpb24gb3B0aW9ucyBpbiB0aGUgc2FtZSBvcmRl
ciB0aGF0IHRoZSBtZWRpYQogICAvLyBkZXNjcmlwdGlvbnMgd2lsbCBiZSBnZW5lcmF0ZWQuCiAg
IHN0ZDo6dmVjdG9yPE1lZGlhRGVzY3JpcHRpb25PcHRpb25zPiBtZWRpYV9kZXNjcmlwdGlvbl9v
cHRpb25zOworICBzdGQ6OnZlY3RvcjxJY2VQYXJhbWV0ZXJzPiBwb29sZWRfaWNlX2NyZWRlbnRp
YWxzOwogfTsKIAogLy8gQ3JlYXRlcyBtZWRpYSBzZXNzaW9uIGRlc2NyaXB0aW9ucyBhY2NvcmRp
bmcgdG8gdGhlIHN1cHBsaWVkIGNvZGVjcyBhbmQKQEAgLTE4NiwxNCArMTg5LDE2IEBAIGNsYXNz
IE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeSB7CiAgIGJvb2wgQWRkVHJhbnNwb3J0T2Zm
ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUcmFuc3BvcnRPcHRpb25zJiB0cmFuc3BvcnRfb3B0aW9ucywKICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIG9mZmVyKSBjb25z
dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIG9mZmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVk
ZW50aWFscykgY29uc3Q7CiAKICAgVHJhbnNwb3J0RGVzY3JpcHRpb24qIENyZWF0ZVRyYW5zcG9y
dEFuc3dlcigKICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgICBj
b25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIG9mZmVyX2Rlc2MsCiAgICAgICBjb25zdCBUcmFuc3Bv
cnRPcHRpb25zJiB0cmFuc3BvcnRfb3B0aW9ucywKICAgICAgIGNvbnN0IFNlc3Npb25EZXNjcmlw
dGlvbiogY3VycmVudF9kZXNjLAotICAgICAgYm9vbCByZXF1aXJlX3RyYW5zcG9ydF9hdHRyaWJ1
dGVzKSBjb25zdDsKKyAgICAgIGJvb2wgcmVxdWlyZV90cmFuc3BvcnRfYXR0cmlidXRlcywKKyAg
ICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3Q7CiAKICAg
Ym9vbCBBZGRUcmFuc3BvcnRBbnN3ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24mIHRy
YW5zcG9ydF9kZXNjLApAQCAtMjExLDcgKzIxNiw4IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFjdG9yeSB7CiAgICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25zJiBhdWRpb19y
dHBfZXh0ZW5zaW9ucywKICAgICAgIGNvbnN0IEF1ZGlvQ29kZWNzJiBhdWRpb19jb2RlY3MsCiAg
ICAgICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICAgIFNlc3Npb25EZXNj
cmlwdGlvbiogZGVzYykgY29uc3Q7CisgICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MsCisg
ICAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0OwogCiAg
IGJvb2wgQWRkVmlkZW9Db250ZW50Rm9yT2ZmZXIoCiAgICAgICBjb25zdCBNZWRpYURlc2NyaXB0
aW9uT3B0aW9ucyYgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucywKQEAgLTIyMSw3ICsyMjcsOCBA
QCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnkgewogICAgICAgY29uc3QgUnRw
SGVhZGVyRXh0ZW5zaW9ucyYgdmlkZW9fcnRwX2V4dGVuc2lvbnMsCiAgICAgICBjb25zdCBWaWRl
b0NvZGVjcyYgdmlkZW9fY29kZWNzLAogICAgICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0
cmVhbXMsCi0gICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MpIGNvbnN0OworICAgICAgU2Vz
c2lvbkRlc2NyaXB0aW9uKiBkZXNjLAorICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNl
X2NyZWRlbnRpYWxzKSBjb25zdDsKIAogICBib29sIEFkZERhdGFDb250ZW50Rm9yT2ZmZXIoCiAg
ICAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uT3B0aW9ucyYgbWVkaWFfZGVzY3JpcHRpb25fb3B0
aW9ucywKQEAgLTIzMCw3ICsyMzcsOCBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZh
Y3RvcnkgewogICAgICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0
aW9uLAogICAgICAgY29uc3QgRGF0YUNvZGVjcyYgZGF0YV9jb2RlY3MsCiAgICAgICBTdHJlYW1Q
YXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICAgIFNlc3Npb25EZXNjcmlwdGlvbiogZGVz
YykgY29uc3Q7CisgICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MsCisgICAgICBJY2VDcmVk
ZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0OwogCiAgIGJvb2wgQWRkQXVk
aW9Db250ZW50Rm9yQW5zd2VyKAogICAgICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvbk9wdGlvbnMm
IG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsCkBAIC0yNDIsNyArMjUwLDggQEAgY2xhc3MgTWVk
aWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5IHsKICAgICAgIGNvbnN0IFRyYW5zcG9ydEluZm8q
IGJ1bmRsZV90cmFuc3BvcnQsCiAgICAgICBjb25zdCBBdWRpb0NvZGVjcyYgYXVkaW9fY29kZWNz
LAogICAgICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0cmVhbXMsCi0gICAgICBTZXNzaW9u
RGVzY3JpcHRpb24qIGFuc3dlcikgY29uc3Q7CisgICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGFu
c3dlciwKKyAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29u
c3Q7CiAKICAgYm9vbCBBZGRWaWRlb0NvbnRlbnRGb3JBbnN3ZXIoCiAgICAgICBjb25zdCBNZWRp
YURlc2NyaXB0aW9uT3B0aW9ucyYgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucywKQEAgLTI1NCw3
ICsyNjMsOCBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnkgewogICAgICAg
Y29uc3QgVHJhbnNwb3J0SW5mbyogYnVuZGxlX3RyYW5zcG9ydCwKICAgICAgIGNvbnN0IFZpZGVv
Q29kZWNzJiB2aWRlb19jb2RlY3MsCiAgICAgICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRfc3Ry
ZWFtcywKLSAgICAgIFNlc3Npb25EZXNjcmlwdGlvbiogYW5zd2VyKSBjb25zdDsKKyAgICAgIFNl
c3Npb25EZXNjcmlwdGlvbiogYW5zd2VyLAorICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciog
aWNlX2NyZWRlbnRpYWxzKSBjb25zdDsKIAogICBib29sIEFkZERhdGFDb250ZW50Rm9yQW5zd2Vy
KAogICAgICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvbk9wdGlvbnMmIG1lZGlhX2Rlc2NyaXB0aW9u
X29wdGlvbnMsCkBAIC0yNjYsNyArMjc2LDggQEAgY2xhc3MgTWVkaWFTZXNzaW9uRGVzY3JpcHRp
b25GYWN0b3J5IHsKICAgICAgIGNvbnN0IFRyYW5zcG9ydEluZm8qIGJ1bmRsZV90cmFuc3BvcnQs
CiAgICAgICBjb25zdCBEYXRhQ29kZWNzJiBkYXRhX2NvZGVjcywKICAgICAgIFN0cmVhbVBhcmFt
c1ZlYyogY3VycmVudF9zdHJlYW1zLAotICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBhbnN3ZXIp
IGNvbnN0OworICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBhbnN3ZXIsCisgICAgICBJY2VDcmVk
ZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0OwogCiAgIHZvaWQgQ29tcHV0
ZUF1ZGlvQ29kZWNzSW50ZXJzZWN0aW9uQW5kVW5pb24oKTsKIApAQCAtMzI3LDIwICszMzgsMjMg
QEAgRGF0YUNvbnRlbnREZXNjcmlwdGlvbiogR2V0Rmlyc3REYXRhQ29udGVudERlc2NyaXB0aW9u
KAogICAgIFNlc3Npb25EZXNjcmlwdGlvbiogc2Rlc2MpOwogCiAvLyBIZWxwZXIgZnVuY3Rpb25z
IHRvIHJldHVybiBjcnlwdG8gc3VpdGVzIHVzZWQgZm9yIFNERVMuCi12b2lkIEdldFN1cHBvcnRl
ZEF1ZGlvU2Rlc0NyeXB0b1N1aXRlcyhjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19v
cHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8aW50PiogY3J5cHRvX3N1aXRlcyk7Ci12b2lkIEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0
b1N1aXRlcyhjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5cHRv
X3N1aXRlcyk7Ci12b2lkIEdldFN1cHBvcnRlZERhdGFTZGVzQ3J5cHRvU3VpdGVzKGNvbnN0IHJ0
Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0b19zdWl0ZXMpOwordm9pZCBH
ZXRTdXBwb3J0ZWRBdWRpb1NkZXNDcnlwdG9TdWl0ZXMoCisgICAgY29uc3Qgd2VicnRjOjpDcnlw
dG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBzdGQ6OnZlY3RvcjxpbnQ+KiBjcnlwdG9f
c3VpdGVzKTsKK3ZvaWQgR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRvU3VpdGVzKAorICAgIGNv
bnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgc3RkOjp2ZWN0
b3I8aW50PiogY3J5cHRvX3N1aXRlcyk7Cit2b2lkIEdldFN1cHBvcnRlZERhdGFTZGVzQ3J5cHRv
U3VpdGVzKAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMs
CisgICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5cHRvX3N1aXRlcyk7CiB2b2lkIEdldFN1cHBvcnRl
ZEF1ZGlvU2Rlc0NyeXB0b1N1aXRlTmFtZXMoCi0gICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25z
JiBjcnlwdG9fb3B0aW9ucywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0
b19vcHRpb25zLAogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogY3J5cHRvX3N1aXRlX25h
bWVzKTsKIHZvaWQgR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRvU3VpdGVOYW1lcygKLSAgICBj
b25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgIGNvbnN0IHdlYnJ0
Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+KiBjcnlwdG9fc3VpdGVfbmFtZXMpOwogdm9pZCBHZXRTdXBwb3J0ZWREYXRhU2Rlc0Ny
eXB0b1N1aXRlTmFtZXMoCi0gICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0
aW9ucywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAog
ICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogY3J5cHRvX3N1aXRlX25hbWVzKTsKIAogLy8g
UmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBtZWRpYSBzZWN0aW9uIHByb3RvY29sIGluZGljYXRl
cyB1c2Ugb2YgUlRQLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3VuaXR0ZXN0LmNjCmlu
ZGV4IGRiMzI1ZWQyZWYxNjdlYmY5YjNhZGU4MzJjYjRjY2RiZjdmNzNjMTYuLjA3NmFkMTJhNWIz
NDk4MGMwMGMzMTIwOTc0OWExZWI1MzZmYzM0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbl91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNl
c3Npb25fdW5pdHRlc3QuY2MKQEAgLTI2LDEwICsyNiwxMSBAQAogI2luY2x1ZGUgInJ0Y19iYXNl
L21lc3NhZ2VkaWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xhZGFwdGVyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgorI2luY2x1ZGUgInRlc3Qv
Z21vY2suaCIKIAogI2RlZmluZSBBU1NFUlRfQ1JZUFRPKGNkLCBzLCBjcykgICAgICBcCiAgIEFT
U0VSVF9FUShzLCBjZC0+Y3J5cHRvcygpLnNpemUoKSk7IFwKLSAgQVNTRVJUX0VRKHN0ZDo6c3Ry
aW5nKGNzKSwgY2QtPmNyeXB0b3MoKVswXS5jaXBoZXJfc3VpdGUpCisgIEFTU0VSVF9FUShjcywg
Y2QtPmNyeXB0b3MoKVswXS5jaXBoZXJfc3VpdGUpCiAKIHR5cGVkZWYgc3RkOjp2ZWN0b3I8Y3Jp
Y2tldDo6Q2FuZGlkYXRlPiBDYW5kaWRhdGVzOwogCkBAIC03MSw2ICs3Miw3IEBAIHVzaW5nIHJ0
Yzo6Q1NfQUVTX0NNXzEyOF9ITUFDX1NIQTFfMzI7CiB1c2luZyBydGM6OkNTX0FFU19DTV8xMjhf
SE1BQ19TSEExXzgwOwogdXNpbmcgcnRjOjpDU19BRUFEX0FFU18xMjhfR0NNOwogdXNpbmcgcnRj
OjpDU19BRUFEX0FFU18yNTZfR0NNOwordXNpbmcgdGVzdGluZzo6RWxlbWVudHNBcmVBcnJheTsK
IHVzaW5nIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOwogdXNpbmcgd2VicnRjOjpSdHBUcmFuc2NlaXZl
ckRpcmVjdGlvbjsKIApAQCAtNTQ1LDcgKzU0Nyw3IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFjdG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgRVhQRUNUX1RS
VUUoQ29tcGFyZUNyeXB0b1BhcmFtcyhhdWRpb19tZWRpYV9kZXNjLT5jcnlwdG9zKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb19tZWRpYV9kZXNjLT5jcnlwdG9z
KCkpKTsKICAgICBFWFBFQ1RfRVEoMXUsIGF1ZGlvX21lZGlhX2Rlc2MtPmNyeXB0b3MoKS5zaXpl
KCkpOwotICAgIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSks
CisgICAgRVhQRUNUX0VRKGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlLAogICAgICAgICAgICAgICBh
dWRpb19tZWRpYV9kZXNjLT5jcnlwdG9zKClbMF0uY2lwaGVyX3N1aXRlKTsKIAogICAgIC8vIFZl
cmlmeSB0aGUgc2VsZWN0ZWQgY3J5cHRvIGlzIG9uZSBmcm9tIHRoZSByZWZlcmVuY2UgYXVkaW8K
QEAgLTYwOSwxMSArNjExLDExIEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9y
eVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgIHZvaWQgVGVzdFZpZGVvR2NtQ2lwaGVy
KGJvb2wgZ2NtX29mZmVyLCBib29sIGdjbV9hbnN3ZXIpIHsKICAgICBNZWRpYVNlc3Npb25PcHRp
b25zIG9mZmVyX29wdHM7CiAgICAgQWRkQXVkaW9WaWRlb1NlY3Rpb25zKFJ0cFRyYW5zY2VpdmVy
RGlyZWN0aW9uOjprUmVjdk9ubHksICZvZmZlcl9vcHRzKTsKLSAgICBvZmZlcl9vcHRzLmNyeXB0
b19vcHRpb25zLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IGdjbV9vZmZlcjsKKyAgICBvZmZl
cl9vcHRzLmNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gZ2Nt
X29mZmVyOwogCiAgICAgTWVkaWFTZXNzaW9uT3B0aW9ucyBhbnN3ZXJfb3B0czsKICAgICBBZGRB
dWRpb1ZpZGVvU2VjdGlvbnMoUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246OmtSZWN2T25seSwgJmFu
c3dlcl9vcHRzKTsKLSAgICBhbnN3ZXJfb3B0cy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2Ny
eXB0b19zdWl0ZXMgPSBnY21fYW5zd2VyOworICAgIGFuc3dlcl9vcHRzLmNyeXB0b19vcHRpb25z
LnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gZ2NtX2Fuc3dlcjsKIAogICAgIGYxXy5z
ZXRfc2VjdXJlKFNFQ19FTkFCTEVEKTsKICAgICBmMl8uc2V0X3NlY3VyZShTRUNfRU5BQkxFRCk7
CkBAIC02MzEsNyArNjMzLDcgQEAgY2xhc3MgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBjb25zdCBBdWRpb0NvbnRlbnREZXNj
cmlwdGlvbiogYWNkID0gYWMtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7CiAgICAg
Y29uc3QgVmlkZW9Db250ZW50RGVzY3JpcHRpb24qIHZjZCA9IHZjLT5tZWRpYV9kZXNjcmlwdGlv
bigpLT5hc192aWRlbygpOwogICAgIEVYUEVDVF9FUShNRURJQV9UWVBFX0FVRElPLCBhY2QtPnR5
cGUoKSk7Ci0gICAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtBdWRpb0NvZGVjc0Fuc3dlciksIGFj
ZC0+Y29kZWNzKCkpOworICAgIEVYUEVDVF9USEFUKGFjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJl
QXJyYXkoa0F1ZGlvQ29kZWNzQW5zd2VyKSk7CiAgICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRo
LCBhY2QtPmJhbmR3aWR0aCgpKTsgIC8vIG5lZ290aWF0ZWQgYXV0byBidwogICAgIEVYUEVDVF9F
USgwVSwgYWNkLT5maXJzdF9zc3JjKCkpOyAgICAgICAgICAgICAvLyBubyBzZW5kZXIgaXMgYXR0
YWNoZWQKICAgICBFWFBFQ1RfVFJVRShhY2QtPnJ0Y3BfbXV4KCkpOyAgICAgICAgICAgICAgICAg
Ly8gbmVnb3RpYXRlZCBydGNwLW11eApAQCAtNjQxLDcgKzY0Myw3IEBAIGNsYXNzIE1lZGlhU2Vz
c2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAg
ICBBU1NFUlRfQ1JZUFRPKGFjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKICAgICB9
CiAgICAgRVhQRUNUX0VRKE1FRElBX1RZUEVfVklERU8sIHZjZC0+dHlwZSgpKTsKLSAgICBFWFBF
Q1RfRVEoTUFLRV9WRUNUT1Ioa1ZpZGVvQ29kZWNzQW5zd2VyKSwgdmNkLT5jb2RlY3MoKSk7Cisg
ICAgRVhQRUNUX1RIQVQodmNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrVmlkZW9Db2Rl
Y3NBbnN3ZXIpKTsKICAgICBFWFBFQ1RfRVEoMFUsIHZjZC0+Zmlyc3Rfc3NyYygpKTsgIC8vIG5v
IHNlbmRlciBpcyBhdHRhY2hlZAogICAgIEVYUEVDVF9UUlVFKHZjZC0+cnRjcF9tdXgoKSk7ICAg
ICAgLy8gbmVnb3RpYXRlZCBydGNwLW11eAogICAgIGlmIChnY21fb2ZmZXIgJiYgZ2NtX2Fuc3dl
cikgewpAQCAtNjQ5LDcgKzY1MSw3IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFj
dG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgfSBlbHNlIHsKICAgICAgIEFT
U0VSVF9DUllQVE8odmNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwogICAgIH0KLSAg
ICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiksIHZj
ZC0+cHJvdG9jb2woKSk7CisgICAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2
cGYsIHZjZC0+cHJvdG9jb2woKSk7CiAgIH0KIAogIHByb3RlY3RlZDoKQEAgLTY3Nyw3ICs2Nzks
NyBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdENyZWF0
ZUF1ZGlvT2ZmZXIpIHsKICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0
aCgpKTsgIC8vIGRlZmF1bHQgYmFuZHdpZHRoIChhdXRvKQogICBFWFBFQ1RfVFJVRShhY2QtPnJ0
Y3BfbXV4KCkpOyAgICAgICAgICAgICAgICAgLy8gcnRjcC1tdXggZGVmYXVsdHMgb24KICAgQVNT
RVJUX0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVYUEVDVF9F
UShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgYWNkLT5wcm90b2Nv
bCgpKTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGFjZC0+cHJv
dG9jb2woKSk7CiB9CiAKIC8vIENyZWF0ZSBhIHR5cGljYWwgdmlkZW8gb2ZmZXIsIGFuZCBlbnN1
cmUgaXQgbWF0Y2hlcyB3aGF0IHdlIGV4cGVjdC4KQEAgLTcwMSwxNCArNzAzLDE0IEBAIFRFU1Rf
RihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3JlYXRlVmlkZW9PZmZl
cikgewogICBFWFBFQ1RfRVEoa0F1dG9CYW5kd2lkdGgsIGFjZC0+YmFuZHdpZHRoKCkpOyAgLy8g
ZGVmYXVsdCBiYW5kd2lkdGggKGF1dG8pCiAgIEVYUEVDVF9UUlVFKGFjZC0+cnRjcF9tdXgoKSk7
ICAgICAgICAgICAgICAgICAvLyBydGNwLW11eCBkZWZhdWx0cyBvbgogICBBU1NFUlRfQ1JZUFRP
KGFjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3Ry
aW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCBhY2QtPnByb3RvY29sKCkpOworICBF
WFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgYWNkLT5wcm90b2NvbCgpKTsK
ICAgRVhQRUNUX0VRKE1FRElBX1RZUEVfVklERU8sIHZjZC0+dHlwZSgpKTsKICAgRVhQRUNUX0VR
KGYxXy52aWRlb19jb2RlY3MoKSwgdmNkLT5jb2RlY3MoKSk7CiAgIEVYUEVDVF9FUSgwVSwgdmNk
LT5maXJzdF9zc3JjKCkpOyAgICAgICAgICAgICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAg
RVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCB2Y2QtPmJhbmR3aWR0aCgpKTsgIC8vIGRlZmF1bHQg
YmFuZHdpZHRoIChhdXRvKQogICBFWFBFQ1RfVFJVRSh2Y2QtPnJ0Y3BfbXV4KCkpOyAgICAgICAg
ICAgICAgICAgLy8gcnRjcC1tdXggZGVmYXVsdHMgb24KICAgQVNTRVJUX0NSWVBUTyh2Y2QsIDFV
LCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlj
a2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgdmNkLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VR
KGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIHZjZC0+cHJvdG9jb2woKSk7CiB9CiAKIC8v
IFRlc3QgY3JlYXRpbmcgYW4gb2ZmZXIgd2l0aCBidW5kbGUgd2hlcmUgdGhlIENvZGVjcyBoYXZl
IHRoZSBzYW1lIGR5bmFtaWMKQEAgLTc3OSwxMSArNzgxLDExIEBAIFRFU1RfRihNZWRpYVNlc3Np
b25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LAogICBFWFBFQ1RfVFJVRShOVUxMICE9IGRjZCk7CiAK
ICAgQVNTRVJUX0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVY
UEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgYWNkLT5w
cm90b2NvbCgpKTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGFj
ZC0+cHJvdG9jb2woKSk7CiAgIEFTU0VSVF9DUllQVE8odmNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5
cHRvU3VpdGUpOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9j
b2xTYXZwZiksIHZjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQ
cm90b2NvbFNhdnBmLCB2Y2QtPnByb3RvY29sKCkpOwogICBBU1NFUlRfQ1JZUFRPKGRjZCwgMVUs
IGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNr
ZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCBkY2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEo
Y3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgZGNkLT5wcm90b2NvbCgpKTsKIH0KIAogLy8g
Q3JlYXRlIGEgUlRQIGRhdGEgb2ZmZXIsIGFuZCBlbnN1cmUgaXQgbWF0Y2hlcyB3aGF0IHdlIGV4
cGVjdC4KQEAgLTgwOCw3ICs4MTAsNyBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25G
YWN0b3J5VGVzdCwgVGVzdENyZWF0ZVJ0cERhdGFPZmZlcikgewogICBFWFBFQ1RfRVEoa0F1dG9C
YW5kd2lkdGgsIGFjZC0+YmFuZHdpZHRoKCkpOyAgLy8gZGVmYXVsdCBiYW5kd2lkdGggKGF1dG8p
CiAgIEVYUEVDVF9UUlVFKGFjZC0+cnRjcF9tdXgoKSk7ICAgICAgICAgICAgICAgICAvLyBydGNw
LW11eCBkZWZhdWx0cyBvbgogICBBU1NFUlRfQ1JZUFRPKGFjZCwgMVUsIGtEZWZhdWx0U3J0cENy
eXB0b1N1aXRlKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3Rv
Y29sU2F2cGYpLCBhY2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlh
UHJvdG9jb2xTYXZwZiwgYWNkLT5wcm90b2NvbCgpKTsKICAgRVhQRUNUX0VRKE1FRElBX1RZUEVf
REFUQSwgZGNkLT50eXBlKCkpOwogICBFWFBFQ1RfRVEoZjFfLmRhdGFfY29kZWNzKCksIGRjZC0+
Y29kZWNzKCkpOwogICBFWFBFQ1RfRVEoMFUsIGRjZC0+Zmlyc3Rfc3NyYygpKTsgIC8vIG5vIHNl
bmRlciBpcyBhdHRhY2hlZC4KQEAgLTgxNiw3ICs4MTgsNyBAQCBURVNUX0YoTWVkaWFTZXNzaW9u
RGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdENyZWF0ZVJ0cERhdGFPZmZlcikgewogICAgICAg
ICAgICAgZGNkLT5iYW5kd2lkdGgoKSk7ICAgLy8gZGVmYXVsdCBiYW5kd2lkdGggKGF1dG8pCiAg
IEVYUEVDVF9UUlVFKGRjZC0+cnRjcF9tdXgoKSk7ICAvLyBydGNwLW11eCBkZWZhdWx0cyBvbgog
ICBBU1NFUlRfQ1JZUFRPKGRjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKLSAgRVhQ
RUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCBkY2QtPnBy
b3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgZGNk
LT5wcm90b2NvbCgpKTsKIH0KIAogLy8gQ3JlYXRlIGFuIFNDVFAgZGF0YSBvZmZlciB3aXRoIGJ1
bmRsZSB3aXRob3V0IGVycm9yLgpAQCAtOTM5LDEyICs5NDEsMTIgQEAgVEVTVF9GKE1lZGlhU2Vz
c2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVBdWRpb0Fuc3dlcikgewogICBF
WFBFQ1RfRVEoTWVkaWFQcm90b2NvbFR5cGU6OmtSdHAsIGFjLT50eXBlKTsKICAgY29uc3QgQXVk
aW9Db250ZW50RGVzY3JpcHRpb24qIGFjZCA9IGFjLT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19h
dWRpbygpOwogICBFWFBFQ1RfRVEoTUVESUFfVFlQRV9BVURJTywgYWNkLT50eXBlKCkpOwotICBF
WFBFQ1RfRVEoTUFLRV9WRUNUT1Ioa0F1ZGlvQ29kZWNzQW5zd2VyKSwgYWNkLT5jb2RlY3MoKSk7
CisgIEVYUEVDVF9USEFUKGFjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa0F1ZGlvQ29k
ZWNzQW5zd2VyKSk7CiAgIEVYUEVDVF9FUSgwVSwgYWNkLT5maXJzdF9zc3JjKCkpOyAgICAgICAg
ICAgICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRo
LCBhY2QtPmJhbmR3aWR0aCgpKTsgIC8vIG5lZ290aWF0ZWQgYXV0byBidwogICBFWFBFQ1RfVFJV
RShhY2QtPnJ0Y3BfbXV4KCkpOyAgICAgICAgICAgICAgICAgLy8gbmVnb3RpYXRlZCBydGNwLW11
eAogICBBU1NFUlRfQ1JZUFRPKGFjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKLSAg
RVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCBhY2Qt
PnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwg
YWNkLT5wcm90b2NvbCgpKTsKIH0KIAogLy8gQ3JlYXRlIGEgdHlwaWNhbCBhdWRpbyBhbnN3ZXIg
d2l0aCBHQ00gY2lwaGVycyBlbmFibGVkLCBhbmQgZW5zdXJlIGl0CkBAIC05NTMsNyArOTU1LDcg
QEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVB
dWRpb0Fuc3dlckdjbSkgewogICBmMV8uc2V0X3NlY3VyZShTRUNfRU5BQkxFRCk7CiAgIGYyXy5z
ZXRfc2VjdXJlKFNFQ19FTkFCTEVEKTsKICAgTWVkaWFTZXNzaW9uT3B0aW9ucyBvcHRzID0gQ3Jl
YXRlUGxhbkJNZWRpYVNlc3Npb25PcHRpb25zKCk7Ci0gIG9wdHMuY3J5cHRvX29wdGlvbnMuZW5h
YmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKKyAgb3B0cy5jcnlwdG9fb3B0aW9ucy5zcnRw
LmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHRydWU7CiAgIHN0ZDo6dW5pcXVlX3B0cjxTZXNz
aW9uRGVzY3JpcHRpb24+IG9mZmVyKGYxXy5DcmVhdGVPZmZlcihvcHRzLCBOVUxMKSk7CiAgIEFT
U0VSVF9UUlVFKG9mZmVyLmdldCgpICE9IE5VTEwpOwogICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lv
bkRlc2NyaXB0aW9uPiBhbnN3ZXIoCkBAIC05NjUsMTIgKzk2NywxMiBAQCBURVNUX0YoTWVkaWFT
ZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdENyZWF0ZUF1ZGlvQW5zd2VyR2NtKSB7
CiAgIEVYUEVDVF9FUShNZWRpYVByb3RvY29sVHlwZTo6a1J0cCwgYWMtPnR5cGUpOwogICBjb25z
dCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYWNkID0gYWMtPm1lZGlhX2Rlc2NyaXB0aW9uKCkt
PmFzX2F1ZGlvKCk7CiAgIEVYUEVDVF9FUShNRURJQV9UWVBFX0FVRElPLCBhY2QtPnR5cGUoKSk7
Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrQXVkaW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVj
cygpKTsKKyAgRVhQRUNUX1RIQVQoYWNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVk
aW9Db2RlY3NBbnN3ZXIpKTsKICAgRVhQRUNUX0VRKDBVLCBhY2QtPmZpcnN0X3NzcmMoKSk7ICAg
ICAgICAgICAgIC8vIG5vIHNlbmRlciBpcyBhdHRhY2hlZAogICBFWFBFQ1RfRVEoa0F1dG9CYW5k
d2lkdGgsIGFjZC0+YmFuZHdpZHRoKCkpOyAgLy8gbmVnb3RpYXRlZCBhdXRvIGJ3CiAgIEVYUEVD
VF9UUlVFKGFjZC0+cnRjcF9tdXgoKSk7ICAgICAgICAgICAgICAgICAvLyBuZWdvdGlhdGVkIHJ0
Y3AtbXV4CiAgIEFTU0VSVF9DUllQVE8oYWNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGVH
Y20pOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZw
ZiksIGFjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2Nv
bFNhdnBmLCBhY2QtPnByb3RvY29sKCkpOwogfQogCiAvLyBDcmVhdGUgYSB0eXBpY2FsIHZpZGVv
IGFuc3dlciwgYW5kIGVuc3VyZSBpdCBtYXRjaGVzIHdoYXQgd2UgZXhwZWN0LgpAQCAtOTkyLDE3
ICs5OTQsMTcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRl
c3RDcmVhdGVWaWRlb0Fuc3dlcikgewogICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiog
YWNkID0gYWMtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7CiAgIGNvbnN0IFZpZGVv
Q29udGVudERlc2NyaXB0aW9uKiB2Y2QgPSB2Yy0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfdmlk
ZW8oKTsKICAgRVhQRUNUX0VRKE1FRElBX1RZUEVfQVVESU8sIGFjZC0+dHlwZSgpKTsKLSAgRVhQ
RUNUX0VRKE1BS0VfVkVDVE9SKGtBdWRpb0NvZGVjc0Fuc3dlciksIGFjZC0+Y29kZWNzKCkpOwor
ICBFWFBFQ1RfVEhBVChhY2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtBdWRpb0NvZGVj
c0Fuc3dlcikpOwogICBFWFBFQ1RfRVEoa0F1dG9CYW5kd2lkdGgsIGFjZC0+YmFuZHdpZHRoKCkp
OyAgLy8gbmVnb3RpYXRlZCBhdXRvIGJ3CiAgIEVYUEVDVF9FUSgwVSwgYWNkLT5maXJzdF9zc3Jj
KCkpOyAgICAgICAgICAgICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAgRVhQRUNUX1RSVUUo
YWNkLT5ydGNwX211eCgpKTsgICAgICAgICAgICAgICAgIC8vIG5lZ290aWF0ZWQgcnRjcC1tdXgK
ICAgQVNTRVJUX0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7CiAgIEVY
UEVDVF9FUShNRURJQV9UWVBFX1ZJREVPLCB2Y2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtF
X1ZFQ1RPUihrVmlkZW9Db2RlY3NBbnN3ZXIpLCB2Y2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RI
QVQodmNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrVmlkZW9Db2RlY3NBbnN3ZXIpKTsK
ICAgRVhQRUNUX0VRKDBVLCB2Y2QtPmZpcnN0X3NzcmMoKSk7ICAvLyBubyBzZW5kZXIgaXMgYXR0
YWNoZWQKICAgRVhQRUNUX1RSVUUodmNkLT5ydGNwX211eCgpKTsgICAgICAvLyBuZWdvdGlhdGVk
IHJ0Y3AtbXV4CiAgIEFTU0VSVF9DUllQVE8odmNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3Vp
dGUpOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZw
ZiksIHZjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2Nv
bFNhdnBmLCB2Y2QtPnByb3RvY29sKCkpOwogfQogCiAvLyBDcmVhdGUgYSB0eXBpY2FsIHZpZGVv
IGFuc3dlciB3aXRoIEdDTSBjaXBoZXJzIGVuYWJsZWQsIGFuZCBlbnN1cmUgaXQKQEAgLTEwNDEs
MjMgKzEwNDMsMjMgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3Qs
IFRlc3RDcmVhdGVEYXRhQW5zd2VyKSB7CiAgIGNvbnN0IEF1ZGlvQ29udGVudERlc2NyaXB0aW9u
KiBhY2QgPSBhYy0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfYXVkaW8oKTsKICAgY29uc3QgRGF0
YUNvbnRlbnREZXNjcmlwdGlvbiogZGNkID0gZGMtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2Rh
dGEoKTsKICAgRVhQRUNUX0VRKE1FRElBX1RZUEVfQVVESU8sIGFjZC0+dHlwZSgpKTsKLSAgRVhQ
RUNUX0VRKE1BS0VfVkVDVE9SKGtBdWRpb0NvZGVjc0Fuc3dlciksIGFjZC0+Y29kZWNzKCkpOwor
ICBFWFBFQ1RfVEhBVChhY2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtBdWRpb0NvZGVj
c0Fuc3dlcikpOwogICBFWFBFQ1RfRVEoa0F1dG9CYW5kd2lkdGgsIGFjZC0+YmFuZHdpZHRoKCkp
OyAgLy8gbmVnb3RpYXRlZCBhdXRvIGJ3CiAgIEVYUEVDVF9FUSgwVSwgYWNkLT5maXJzdF9zc3Jj
KCkpOyAgICAgICAgICAgICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAgRVhQRUNUX1RSVUUo
YWNkLT5ydGNwX211eCgpKTsgICAgICAgICAgICAgICAgIC8vIG5lZ290aWF0ZWQgcnRjcC1tdXgK
ICAgQVNTRVJUX0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7CiAgIEVY
UEVDVF9FUShNRURJQV9UWVBFX0RBVEEsIGRjZC0+dHlwZSgpKTsKLSAgRVhQRUNUX0VRKE1BS0Vf
VkVDVE9SKGtEYXRhQ29kZWNzQW5zd2VyKSwgZGNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9USEFU
KGRjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa0RhdGFDb2RlY3NBbnN3ZXIpKTsKICAg
RVhQRUNUX0VRKDBVLCBkY2QtPmZpcnN0X3NzcmMoKSk7ICAvLyBubyBzZW5kZXIgaXMgYXR0YWNo
ZWQKICAgRVhQRUNUX1RSVUUoZGNkLT5ydGNwX211eCgpKTsgICAgICAvLyBuZWdvdGlhdGVkIHJ0
Y3AtbXV4CiAgIEFTU0VSVF9DUllQVE8oZGNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUp
OwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiks
IGRjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbFNh
dnBmLCBkY2QtPnByb3RvY29sKCkpOwogfQogCiBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRp
b25GYWN0b3J5VGVzdCwgVGVzdENyZWF0ZURhdGFBbnN3ZXJHY20pIHsKICAgTWVkaWFTZXNzaW9u
T3B0aW9ucyBvcHRzID0gQ3JlYXRlUGxhbkJNZWRpYVNlc3Npb25PcHRpb25zKCk7CiAgIEFkZERh
dGFTZWN0aW9uKGNyaWNrZXQ6OkRDVF9SVFAsIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uOjprUmVj
dk9ubHksICZvcHRzKTsKLSAgb3B0cy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19z
dWl0ZXMgPSB0cnVlOworICBvcHRzLmNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlw
dG9fc3VpdGVzID0gdHJ1ZTsKICAgZjFfLnNldF9zZWN1cmUoU0VDX0VOQUJMRUQpOwogICBmMl8u
c2V0X3NlY3VyZShTRUNfRU5BQkxFRCk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3Jp
cHRpb24+IG9mZmVyKGYxXy5DcmVhdGVPZmZlcihvcHRzLCBOVUxMKSk7CkBAIC0xMDczLDE3ICsx
MDc1LDE3IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0
Q3JlYXRlRGF0YUFuc3dlckdjbSkgewogICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiog
YWNkID0gYWMtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7CiAgIGNvbnN0IERhdGFD
b250ZW50RGVzY3JpcHRpb24qIGRjZCA9IGRjLT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19kYXRh
KCk7CiAgIEVYUEVDVF9FUShNRURJQV9UWVBFX0FVRElPLCBhY2QtPnR5cGUoKSk7Ci0gIEVYUEVD
VF9FUShNQUtFX1ZFQ1RPUihrQXVkaW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsKKyAg
RVhQRUNUX1RIQVQoYWNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NB
bnN3ZXIpKTsKICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgpKTsg
IC8vIG5lZ290aWF0ZWQgYXV0byBidwogICBFWFBFQ1RfRVEoMFUsIGFjZC0+Zmlyc3Rfc3NyYygp
KTsgICAgICAgICAgICAgLy8gbm8gc2VuZGVyIGlzIGF0dGFjaGVkCiAgIEVYUEVDVF9UUlVFKGFj
ZC0+cnRjcF9tdXgoKSk7ICAgICAgICAgICAgICAgICAvLyBuZWdvdGlhdGVkIHJ0Y3AtbXV4CiAg
IEFTU0VSVF9DUllQVE8oYWNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGVHY20pOwogICBF
WFBFQ1RfRVEoTUVESUFfVFlQRV9EQVRBLCBkY2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtF
X1ZFQ1RPUihrRGF0YUNvZGVjc0Fuc3dlciksIGRjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhB
VChkY2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtEYXRhQ29kZWNzQW5zd2VyKSk7CiAg
IEVYUEVDVF9FUSgwVSwgZGNkLT5maXJzdF9zc3JjKCkpOyAgLy8gbm8gc2VuZGVyIGlzIGF0dGFj
aGVkCiAgIEVYUEVDVF9UUlVFKGRjZC0+cnRjcF9tdXgoKSk7ICAgICAgLy8gbmVnb3RpYXRlZCBy
dGNwLW11eAogICBBU1NFUlRfQ1JZUFRPKGRjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRl
R2NtKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2
cGYpLCBkY2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9j
b2xTYXZwZiwgZGNkLT5wcm90b2NvbCgpKTsKIH0KIAogLy8gVGhlIHVzZV9zY3RwbWFwIGZsYWcg
c2hvdWxkIGJlIHNldCBpbiBhIERhdGFDb250ZW50RGVzY3JpcHRpb24gYnkgZGVmYXVsdC4KQEAg
LTEyNjQsNyArMTI2Niw3IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlU
ZXN0LCBBdWRpb09mZmVyQW5zd2VyV2l0aENyeXB0b0Rpc2FibGVkKSB7CiAgIGNvbnN0IEF1ZGlv
Q29udGVudERlc2NyaXB0aW9uKiBvZmZlcl9hY2QgPQogICAgICAgR2V0Rmlyc3RBdWRpb0NvbnRl
bnREZXNjcmlwdGlvbihvZmZlci5nZXQoKSk7CiAgIEFTU0VSVF9UUlVFKG9mZmVyX2FjZCAhPSBO
VUxMKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sQXZw
ZiksIG9mZmVyX2FjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQ
cm90b2NvbEF2cGYsIG9mZmVyX2FjZC0+cHJvdG9jb2woKSk7CiAKICAgc3RkOjp1bmlxdWVfcHRy
PFNlc3Npb25EZXNjcmlwdGlvbj4gYW5zd2VyKAogICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZl
ci5nZXQoKSwgb3B0cywgTlVMTCkpOwpAQCAtMTI3Niw3ICsxMjc4LDcgQEAgVEVTVF9GKE1lZGlh
U2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIEF1ZGlvT2ZmZXJBbnN3ZXJXaXRoQ3J5cHRv
RGlzYWJsZWQpIHsKICAgY29uc3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGFuc3dlcl9hY2Qg
PQogICAgICAgR2V0Rmlyc3RBdWRpb0NvbnRlbnREZXNjcmlwdGlvbihhbnN3ZXIuZ2V0KCkpOwog
ICBBU1NFUlRfVFJVRShhbnN3ZXJfYWNkICE9IE5VTEwpOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJp
bmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xBdnBmKSwgYW5zd2VyX2FjZC0+cHJvdG9jb2woKSk7
CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbEF2cGYsIGFuc3dlcl9hY2QtPnBy
b3RvY29sKCkpOwogfQogCiAvLyBDcmVhdGUgYSB2aWRlbyBvZmZlciBhbmQgYW5zd2VyIGFuZCBl
bnN1cmUgdGhlIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucwpAQCAtMTU4MSw2ICsxNTgzLDY3IEBAIFRF
U1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LAogICBFWFBFQ1RfVFJVRShk
Yy0+cmVqZWN0ZWQpOwogfQogCitURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5
VGVzdCwKKyAgICAgICBDcmVhdGVBbnN3ZXJTdXBwb3J0c01peGVkT25lQW5kVHdvQnl0ZUhlYWRl
ckV4dGVuc2lvbnMpIHsKKyAgTWVkaWFTZXNzaW9uT3B0aW9ucyBvcHRzOworICBzdGQ6OnVuaXF1
ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBvZmZlcihmMV8uQ3JlYXRlT2ZmZXIob3B0cywgTlVM
TCkpOworICAvLyBPZmZlciB3aXRob3V0IHJlcXVlc3Qgb2YgbWl4ZWQgb25lLSBhbmQgdHdvLWJ5
dGUgaGVhZGVyIGV4dGVuc2lvbnMuCisgIG9mZmVyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkKGZh
bHNlKTsKKyAgQVNTRVJUX1RSVUUob2ZmZXIuZ2V0KCkgIT0gTlVMTCk7CisgIHN0ZDo6dW5pcXVl
X3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGFuc3dlcl9ub19zdXBwb3J0KAorICAgICAgZjJfLkNy
ZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0cywgTlVMTCkpOworICBFWFBFQ1RfRkFMU0UoYW5z
d2VyX25vX3N1cHBvcnQtPmV4dG1hcF9hbGxvd19taXhlZCgpKTsKKworICAvLyBPZmZlciB3aXRo
IHJlcXVlc3Qgb2YgbWl4ZWQgb25lLSBhbmQgdHdvLWJ5dGUgaGVhZGVyIGV4dGVuc2lvbnMuCisg
IG9mZmVyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkKHRydWUpOworICBBU1NFUlRfVFJVRShvZmZl
ci5nZXQoKSAhPSBOVUxMKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbj4g
YW5zd2VyX3N1cHBvcnQoCisgICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBvcHRz
LCBOVUxMKSk7CisgIEVYUEVDVF9UUlVFKGFuc3dlcl9zdXBwb3J0LT5leHRtYXBfYWxsb3dfbWl4
ZWQoKSk7Cit9CisKK1RFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LAor
ICAgICAgIENyZWF0ZUFuc3dlclN1cHBvcnRzTWl4ZWRPbmVBbmRUd29CeXRlSGVhZGVyRXh0ZW5z
aW9uc09uTWVkaWFMZXZlbCkgeworICBNZWRpYVNlc3Npb25PcHRpb25zIG9wdHM7CisgIEFkZEF1
ZGlvVmlkZW9TZWN0aW9ucyhSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a1NlbmRSZWN2LCAmb3B0
cyk7CisgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+IG9mZmVyKGYxXy5DcmVh
dGVPZmZlcihvcHRzLCBOVUxMKSk7CisgIE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiB2aWRlb19v
ZmZlciA9CisgICAgICBvZmZlci0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKCJ2aWRlbyIp
OworICBBU1NFUlRfVFJVRSh2aWRlb19vZmZlcik7CisgIE1lZGlhQ29udGVudERlc2NyaXB0aW9u
KiBhdWRpb19vZmZlciA9CisgICAgICBvZmZlci0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1l
KCJhdWRpbyIpOworICBBU1NFUlRfVFJVRShhdWRpb19vZmZlcik7CisKKyAgLy8gRXhwbGljaXQg
ZGlzYWJsZSBvZiBtaXhlZCBvbmUtdHdvIGJ5dGUgaGVhZGVyIHN1cHBvcnQgaW4gb2ZmZXIuCisg
IHZpZGVvX29mZmVyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVz
Y3JpcHRpb246OmtObyk7CisgIGF1ZGlvX29mZmVyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2Vu
dW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtObyk7CisKKyAgQVNTRVJUX1RSVUUob2ZmZXIu
Z2V0KCkgIT0gTlVMTCk7CisgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGFu
c3dlcl9ub19zdXBwb3J0KAorICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0
cywgTlVMTCkpOworICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogdmlkZW9fYW5zd2VyID0KKyAg
ICAgIGFuc3dlcl9ub19zdXBwb3J0LT5HZXRDb250ZW50RGVzY3JpcHRpb25CeU5hbWUoInZpZGVv
Iik7CisgIE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBhdWRpb19hbnN3ZXIgPQorICAgICAgYW5z
d2VyX25vX3N1cHBvcnQtPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZSgiYXVkaW8iKTsKKyAg
RVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8sCisgICAgICAgICAgICB2aWRl
b19hbnN3ZXItPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworICBFWFBFQ1RfRVEoTWVkaWFD
b250ZW50RGVzY3JpcHRpb246OmtObywKKyAgICAgICAgICAgIGF1ZGlvX2Fuc3dlci0+ZXh0bWFw
X2FsbG93X21peGVkX2VudW0oKSk7CisKKyAgLy8gRW5hYmxlIG1peGVkIG9uZS10d28gYnl0ZSBo
ZWFkZXIgc3VwcG9ydCBpbiBvZmZlci4KKyAgdmlkZW9fb2ZmZXItPnNldF9leHRtYXBfYWxsb3df
bWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgYXVkaW9fb2Zm
ZXItPnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6
a01lZGlhKTsKKyAgQVNTRVJUX1RSVUUob2ZmZXIuZ2V0KCkgIT0gTlVMTCk7CisgIHN0ZDo6dW5p
cXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGFuc3dlcl9zdXBwb3J0KAorICAgICAgZjJfLkNy
ZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0cywgTlVMTCkpOworICB2aWRlb19hbnN3ZXIgPSBh
bnN3ZXJfc3VwcG9ydC0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKCJ2aWRlbyIpOworICBh
dWRpb19hbnN3ZXIgPSBhbnN3ZXJfc3VwcG9ydC0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1l
KCJhdWRpbyIpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSwK
KyAgICAgICAgICAgIHZpZGVvX2Fuc3dlci0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7Cisg
IEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhLAorICAgICAgICAgICAg
YXVkaW9fYW5zd2VyLT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKK30KKwogLy8gQ3JlYXRl
IGFuIGF1ZGlvIGFuZCB2aWRlbyBvZmZlciB3aXRoOgogLy8gLSBvbmUgdmlkZW8gdHJhY2sKIC8v
IC0gdHdvIGF1ZGlvIHRyYWNrcwpAQCAtMTgxNCw3ICsxODc3LDcgQEAgVEVTVF9GKE1lZGlhU2Vz
c2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVNdWx0aVN0cmVhbVZpZGVvQW5z
d2VyKSB7CiAgIEFTU0VSVF9DUllQVE8oZGNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUp
OwogCiAgIEVYUEVDVF9FUShNRURJQV9UWVBFX0FVRElPLCBhY2QtPnR5cGUoKSk7Ci0gIEVYUEVD
VF9FUShNQUtFX1ZFQ1RPUihrQXVkaW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsKKyAg
RVhQRUNUX1RIQVQoYWNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NB
bnN3ZXIpKTsKIAogICBjb25zdCBTdHJlYW1QYXJhbXNWZWMmIGF1ZGlvX3N0cmVhbXMgPSBhY2Qt
PnN0cmVhbXMoKTsKICAgQVNTRVJUX0VRKDJVLCBhdWRpb19zdHJlYW1zLnNpemUoKSk7CkBAIC0x
ODMwLDcgKzE4OTMsNyBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVz
dCwgVGVzdENyZWF0ZU11bHRpU3RyZWFtVmlkZW9BbnN3ZXIpIHsKICAgRVhQRUNUX1RSVUUoYWNk
LT5ydGNwX211eCgpKTsgICAgICAgICAgICAgICAgIC8vIHJ0Y3AtbXV4IGRlZmF1bHRzIG9uCiAK
ICAgRVhQRUNUX0VRKE1FRElBX1RZUEVfVklERU8sIHZjZC0+dHlwZSgpKTsKLSAgRVhQRUNUX0VR
KE1BS0VfVkVDVE9SKGtWaWRlb0NvZGVjc0Fuc3dlciksIHZjZC0+Y29kZWNzKCkpOworICBFWFBF
Q1RfVEhBVCh2Y2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtWaWRlb0NvZGVjc0Fuc3dl
cikpOwogCiAgIGNvbnN0IFN0cmVhbVBhcmFtc1ZlYyYgdmlkZW9fc3RyZWFtcyA9IHZjZC0+c3Ry
ZWFtcygpOwogICBBU1NFUlRfRVEoMVUsIHZpZGVvX3N0cmVhbXMuc2l6ZSgpKTsKQEAgLTE4NDAs
NyArMTkwMyw3IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBU
ZXN0Q3JlYXRlTXVsdGlTdHJlYW1WaWRlb0Fuc3dlcikgewogICBFWFBFQ1RfVFJVRSh2Y2QtPnJ0
Y3BfbXV4KCkpOyAgICAgICAgICAgICAgICAgLy8gcnRjcC1tdXggZGVmYXVsdHMgb24KIAogICBF
WFBFQ1RfRVEoTUVESUFfVFlQRV9EQVRBLCBkY2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtF
X1ZFQ1RPUihrRGF0YUNvZGVjc0Fuc3dlciksIGRjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhB
VChkY2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtEYXRhQ29kZWNzQW5zd2VyKSk7CiAK
ICAgY29uc3QgU3RyZWFtUGFyYW1zVmVjJiBkYXRhX3N0cmVhbXMgPSBkY2QtPnN0cmVhbXMoKTsK
ICAgQVNTRVJUX0VRKDJVLCBkYXRhX3N0cmVhbXMuc2l6ZSgpKTsKQEAgLTE5MjMsMTEgKzE5ODYs
MTEgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsCiAKICAgY29u
c3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGFjZCA9CiAgICAgICBHZXRGaXJzdEF1ZGlvQ29u
dGVudERlc2NyaXB0aW9uKGFuc3dlci5nZXQoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihr
QXVkaW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQoYWNkLT5j
b2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NBbnN3ZXIpKTsKIAogICBjb25z
dCBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiogdmNkID0KICAgICAgIEdldEZpcnN0VmlkZW9Db250
ZW50RGVzY3JpcHRpb24oYW5zd2VyLmdldCgpKTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtW
aWRlb0NvZGVjc0Fuc3dlciksIHZjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhBVCh2Y2QtPmNv
ZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtWaWRlb0NvZGVjc0Fuc3dlcikpOwogCiAgIHN0ZDo6
dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+IHVwZGF0ZWRfb2ZmZXIoCiAgICAgICBmMl8u
Q3JlYXRlT2ZmZXIob3B0cywgYW5zd2VyLmdldCgpKSk7CkBAIC0xOTUwLDExICsyMDEzLDExIEBA
IFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LAogCiAgIGNvbnN0IEF1
ZGlvQ29udGVudERlc2NyaXB0aW9uKiB1cGRhdGVkX2FjZCA9CiAgICAgICBHZXRGaXJzdEF1ZGlv
Q29udGVudERlc2NyaXB0aW9uKHVwZGF0ZWRfb2ZmZXIuZ2V0KCkpOwotICBFWFBFQ1RfRVEoTUFL
RV9WRUNUT1Ioa1VwZGF0ZWRBdWRpb0NvZGVjT2ZmZXIpLCB1cGRhdGVkX2FjZC0+Y29kZWNzKCkp
OworICBFWFBFQ1RfVEhBVCh1cGRhdGVkX2FjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXko
a1VwZGF0ZWRBdWRpb0NvZGVjT2ZmZXIpKTsKIAogICBjb25zdCBWaWRlb0NvbnRlbnREZXNjcmlw
dGlvbiogdXBkYXRlZF92Y2QgPQogICAgICAgR2V0Rmlyc3RWaWRlb0NvbnRlbnREZXNjcmlwdGlv
bih1cGRhdGVkX29mZmVyLmdldCgpKTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtVcGRhdGVk
VmlkZW9Db2RlY09mZmVyKSwgdXBkYXRlZF92Y2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQo
dXBkYXRlZF92Y2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtVcGRhdGVkVmlkZW9Db2Rl
Y09mZmVyKSk7CiB9CiAKIC8vIENyZWF0ZSBhbiB1cGRhdGVkIG9mZmVyIGFmdGVyIGNyZWF0aW5n
IGFuIGFuc3dlciB0byB0aGUgb3JpZ2luYWwgb2ZmZXIgYW5kCkBAIC0yMDc5LDcgKzIxNDIsNyBA
QCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKIAogICBjb25zdCBB
dWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYWNkID0KICAgICAgIEdldEZpcnN0QXVkaW9Db250ZW50
RGVzY3JpcHRpb24oYW5zd2VyLmdldCgpKTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtBdWRp
b0NvZGVjc0Fuc3dlciksIGFjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhBVChhY2QtPmNvZGVj
cygpLCBFbGVtZW50c0FyZUFycmF5KGtBdWRpb0NvZGVjc0Fuc3dlcikpOwogCiAgIC8vIE5vdyAt
IGxldCB8ZjJffCBhZGQgdmlkZW8gd2l0aCBSVFggYW5kIGxldCB0aGUgcGF5bG9hZCB0eXBlIHRo
ZSBSVFggY29kZWMKICAgLy8gcmVmZXJlbmNlICBiZSB0aGUgc2FtZSBhcyBhbiBhdWRpbyBjb2Rl
YyB0aGF0IHdhcyBuZWdvdGlhdGVkIGluIHRoZQpAQCAtMjEwMSwxMyArMjE2NCwxMyBAQCBURVNU
X0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKIAogICBjb25zdCBBdWRpb0Nv
bnRlbnREZXNjcmlwdGlvbiogdXBkYXRlZF9hY2QgPQogICAgICAgR2V0Rmlyc3RBdWRpb0NvbnRl
bnREZXNjcmlwdGlvbihhbnN3ZXIuZ2V0KCkpOwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Ioa0F1
ZGlvQ29kZWNzQW5zd2VyKSwgdXBkYXRlZF9hY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQo
dXBkYXRlZF9hY2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtBdWRpb0NvZGVjc0Fuc3dl
cikpOwogCiAgIGNvbnN0IFZpZGVvQ29udGVudERlc2NyaXB0aW9uKiB1cGRhdGVkX3ZjZCA9CiAg
ICAgICBHZXRGaXJzdFZpZGVvQ29udGVudERlc2NyaXB0aW9uKHVwZGF0ZWRfYW5zd2VyLmdldCgp
KTsKIAogICBBU1NFUlRfRVEoIkgyNjQiLCB1cGRhdGVkX3ZjZC0+Y29kZWNzKClbMF0ubmFtZSk7
Ci0gIEFTU0VSVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprUnR4Q29kZWNOYW1lKSwgdXBkYXRl
ZF92Y2QtPmNvZGVjcygpWzFdLm5hbWUpOworICBBU1NFUlRfRVEoY3JpY2tldDo6a1J0eENvZGVj
TmFtZSwgdXBkYXRlZF92Y2QtPmNvZGVjcygpWzFdLm5hbWUpOwogICBpbnQgbmV3X2gyNjRfcGxf
dHlwZSA9IHVwZGF0ZWRfdmNkLT5jb2RlY3MoKVswXS5pZDsKICAgRVhQRUNUX05FKHVzZWRfcGxf
dHlwZSwgbmV3X2gyNjRfcGxfdHlwZSk7CiAgIFZpZGVvQ29kZWMgcnR4ID0gdXBkYXRlZF92Y2Qt
PmNvZGVjcygpWzFdOwpAQCAtMjc3Niw4ICsyODM5LDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRl
c2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RPZmZlckR0bHNTYXZwZkNyZWF0ZUFuc3dlcikgewog
CiAgIGNvbnN0IEF1ZGlvQ29udGVudERlc2NyaXB0aW9uKiBhbnN3ZXJfYXVkaW9fZGVzYyA9CiAg
ICAgICBhbnN3ZXJfY29udGVudC0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfYXVkaW8oKTsKLSAg
RVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sRHRsc1NhdnBmKSwK
LSAgICAgICAgICAgIGFuc3dlcl9hdWRpb19kZXNjLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VR
KGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sRHRsc1NhdnBmLCBhbnN3ZXJfYXVkaW9fZGVzYy0+cHJv
dG9jb2woKSk7CiB9CiAKIC8vIFRlc3QgdGhhdCB3ZSBpbmNsdWRlIGJvdGggU0RFUyBhbmQgRFRM
UyBpbiB0aGUgb2ZmZXIsIGJ1dCBvbmx5IGluY2x1ZGUgU0RFUwpAQCAtMjg0MiwxMCArMjkwNCw4
IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3J5cHRv
RHRscykgewogICBBU1NFUlRfVFJVRSh2aWRlb19tZWRpYV9kZXNjICE9IE5VTEwpOwogICBFWFBF
Q1RfVFJVRShhdWRpb19tZWRpYV9kZXNjLT5jcnlwdG9zKCkuZW1wdHkoKSk7CiAgIEVYUEVDVF9U
UlVFKHZpZGVvX21lZGlhX2Rlc2MtPmNyeXB0b3MoKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0VRKHN0
ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLAotICAgICAgICAgICAgYXVk
aW9fbWVkaWFfZGVzYy0+cHJvdG9jb2woKSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlj
a2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwKLSAgICAgICAgICAgIHZpZGVvX21lZGlhX2Rlc2Mt
PnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwg
YXVkaW9fbWVkaWFfZGVzYy0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVk
aWFQcm90b2NvbFNhdnBmLCB2aWRlb19tZWRpYV9kZXNjLT5wcm90b2NvbCgpKTsKIAogICBhdWRp
b190cmFuc19kZXNjID0gYW5zd2VyLT5HZXRUcmFuc3BvcnREZXNjcmlwdGlvbkJ5TmFtZSgiYXVk
aW8iKTsKICAgQVNTRVJUX1RSVUUoYXVkaW9fdHJhbnNfZGVzYyAhPSBOVUxMKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25u
ZWN0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cGVlcmNvbm5lY3Rpb24uY2MKaW5kZXggNmQ2NzMyOTI0MmQ3NWMxY2E4MjU2ZDA3YTQ1MTRjNzJk
OWY0MDI4Ny4uYTZiNDdjMTZkZWJhMzgxZTU3YWJmYmYxMjMwMTE4MTY1ZmIxNThhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNv
bm5lY3Rpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcGVlcmNvbm5lY3Rpb24uY2MKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJhcGkv
anNlcHNlc3Npb25kZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbXByb3h5
LmgiCiAjaW5jbHVkZSAiYXBpL21lZGlhc3RyZWFtdHJhY2twcm94eS5oIgorI2luY2x1ZGUgImFw
aS91bWFtZXRyaWNzLmgiCiAjaW5jbHVkZSAiY2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2ljZWxvZ2dlci5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9vdXRwdXQvcnRjX2V2ZW50X2xvZ19vdXRwdXRfZmlsZS5oIgpAQCAtNjMwLDYgKzYzMSwz
NSBAQCBhYnNsOjpvcHRpb25hbDxpbnQ+IFJUQ0NvbmZpZ3VyYXRpb25Ub0ljZUNvbmZpZ09wdGlv
bmFsSW50KAogICByZXR1cm4gcnRjX2NvbmZpZ3VyYXRpb25fcGFyYW1ldGVyOwogfQogCitjcmlj
a2V0OjpEYXRhTWVzc2FnZVR5cGUgVG9Dcmlja2V0RGF0YU1lc3NhZ2VUeXBlKERhdGFNZXNzYWdl
VHlwZSB0eXBlKSB7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRGF0YU1lc3NhZ2VUeXBl
OjprVGV4dDoKKyAgICAgIHJldHVybiBjcmlja2V0OjpETVRfVEVYVDsKKyAgICBjYXNlIERhdGFN
ZXNzYWdlVHlwZTo6a0JpbmFyeToKKyAgICAgIHJldHVybiBjcmlja2V0OjpETVRfQklOQVJZOwor
ICAgIGNhc2UgRGF0YU1lc3NhZ2VUeXBlOjprQ29udHJvbDoKKyAgICAgIHJldHVybiBjcmlja2V0
OjpETVRfQ09OVFJPTDsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIGNyaWNrZXQ6OkRNVF9O
T05FOworICB9CisgIHJldHVybiBjcmlja2V0OjpETVRfTk9ORTsKK30KKworRGF0YU1lc3NhZ2VU
eXBlIFRvV2VicnRjRGF0YU1lc3NhZ2VUeXBlKGNyaWNrZXQ6OkRhdGFNZXNzYWdlVHlwZSB0eXBl
KSB7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgY3JpY2tldDo6RE1UX1RFWFQ6CisgICAg
ICByZXR1cm4gRGF0YU1lc3NhZ2VUeXBlOjprVGV4dDsKKyAgICBjYXNlIGNyaWNrZXQ6OkRNVF9C
SU5BUlk6CisgICAgICByZXR1cm4gRGF0YU1lc3NhZ2VUeXBlOjprQmluYXJ5OworICAgIGNhc2Ug
Y3JpY2tldDo6RE1UX0NPTlRST0w6CisgICAgICByZXR1cm4gRGF0YU1lc3NhZ2VUeXBlOjprQ29u
dHJvbDsKKyAgICBjYXNlIGNyaWNrZXQ6OkRNVF9OT05FOgorICAgIGRlZmF1bHQ6CisgICAgICBS
VENfTk9UUkVBQ0hFRCgpOworICB9CisgIHJldHVybiBEYXRhTWVzc2FnZVR5cGU6OmtDb250cm9s
OworfQorCiB9ICAvLyBuYW1lc3BhY2UKIAogLy8gVXBvbiBjb21wbGV0aW9uLCBwb3N0cyBhIHRh
c2sgdG8gZXhlY3V0ZSB0aGUgY2FsbGJhY2sgb2YgdGhlCkBAIC02ODQsNiArNzE0LDcgQEAgYm9v
bCBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbjo6b3BlcmF0b3I9PSgK
ICAgICBDYW5kaWRhdGVOZXR3b3JrUG9saWN5IGNhbmRpZGF0ZV9uZXR3b3JrX3BvbGljeTsKICAg
ICBpbnQgYXVkaW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0czsKICAgICBib29sIGF1ZGlvX2pp
dHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlOworICAgIGludCBhdWRpb19qaXR0ZXJfYnVmZmVy
X21pbl9kZWxheV9tczsKICAgICBpbnQgaWNlX2Nvbm5lY3Rpb25fcmVjZWl2aW5nX3RpbWVvdXQ7
CiAgICAgaW50IGljZV9iYWNrdXBfY2FuZGlkYXRlX3BhaXJfcGluZ19pbnRlcnZhbDsKICAgICBD
b250aW51YWxHYXRoZXJpbmdQb2xpY3kgY29udGludWFsX2dhdGhlcmluZ19wb2xpY3k7CkBAIC03
MDQsNiArNzM1LDEwIEBAIGJvb2wgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3Vy
YXRpb246Om9wZXJhdG9yPT0oCiAgICAgU2RwU2VtYW50aWNzIHNkcF9zZW1hbnRpY3M7CiAgICAg
YWJzbDo6b3B0aW9uYWw8cnRjOjpBZGFwdGVyVHlwZT4gbmV0d29ya19wcmVmZXJlbmNlOwogICAg
IGJvb2wgYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zOworICAgIGJvb2wgdXNlX21lZGlhX3RyYW5z
cG9ydDsKKyAgICBib29sIHVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHM7Cisg
ICAgYWJzbDo6b3B0aW9uYWw8Q3J5cHRvT3B0aW9ucz4gY3J5cHRvX29wdGlvbnM7CisgICAgYm9v
bCBvZmZlcl9leHRtYXBfYWxsb3dfbWl4ZWQ7CiAgIH07CiAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KHN0dWZmX2JlaW5nX3Rlc3RlZF9mb3JfZXF1YWxpdHkpID09IHNpemVvZigqdGhpcyksCiAgICAg
ICAgICAgICAgICAgIkRpZCB5b3UgYWRkIHNvbWV0aGluZyB0byBSVENDb25maWd1cmF0aW9uIGFu
ZCBmb3JnZXQgdG8gIgpAQCAtNzE2LDYgKzc1MSw4IEBAIGJvb2wgUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb246Om9wZXJhdG9yPT0oCiAgICAgICAgICBhdWRpb19qaXR0
ZXJfYnVmZmVyX21heF9wYWNrZXRzID09IG8uYXVkaW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0
cyAmJgogICAgICAgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGUgPT0KICAg
ICAgICAgICAgICBvLmF1ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlICYmCisgICAg
ICAgICBhdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcyA9PQorICAgICAgICAgICAgIG8u
YXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMgJiYKICAgICAgICAgIGljZV9jb25uZWN0
aW9uX3JlY2VpdmluZ190aW1lb3V0ID09CiAgICAgICAgICAgICAgby5pY2VfY29ubmVjdGlvbl9y
ZWNlaXZpbmdfdGltZW91dCAmJgogICAgICAgICAgaWNlX2JhY2t1cF9jYW5kaWRhdGVfcGFpcl9w
aW5nX2ludGVydmFsID09CkBAIC03NTEsNyArNzg4LDEyIEBAIGJvb2wgUGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb246Om9wZXJhdG9yPT0oCiAgICAgICAgICB0dXJuX2N1
c3RvbWl6ZXIgPT0gby50dXJuX2N1c3RvbWl6ZXIgJiYKICAgICAgICAgIHNkcF9zZW1hbnRpY3Mg
PT0gby5zZHBfc2VtYW50aWNzICYmCiAgICAgICAgICBuZXR3b3JrX3ByZWZlcmVuY2UgPT0gby5u
ZXR3b3JrX3ByZWZlcmVuY2UgJiYKLSAgICAgICAgIGFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtcyA9
PSBvLmFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtczsKKyAgICAgICAgIGFjdGl2ZV9yZXNldF9zcnRw
X3BhcmFtcyA9PSBvLmFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtcyAmJgorICAgICAgICAgdXNlX21l
ZGlhX3RyYW5zcG9ydCA9PSBvLnVzZV9tZWRpYV90cmFuc3BvcnQgJiYKKyAgICAgICAgIHVzZV9t
ZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPT0KKyAgICAgICAgICAgICBvLnVzZV9t
ZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgJiYKKyAgICAgICAgIGNyeXB0b19vcHRp
b25zID09IG8uY3J5cHRvX29wdGlvbnMgJiYKKyAgICAgICAgIG9mZmVyX2V4dG1hcF9hbGxvd19t
aXhlZCA9PSBvLm9mZmVyX2V4dG1hcF9hbGxvd19taXhlZDsKIH0KIAogYm9vbCBQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbjo6b3BlcmF0b3IhPSgKQEAgLTgyMCw2ICs4
NjIsNyBAQCBQZWVyQ29ubmVjdGlvbjo6flBlZXJDb25uZWN0aW9uKCkgewogICB3ZWJydGNfc2Vz
c2lvbl9kZXNjX2ZhY3RvcnlfLnJlc2V0KCk7CiAgIHNjdHBfaW52b2tlcl8ucmVzZXQoKTsKICAg
c2N0cF9mYWN0b3J5Xy5yZXNldCgpOworICBtZWRpYV90cmFuc3BvcnRfaW52b2tlcl8ucmVzZXQo
KTsKICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLnJlc2V0KCk7CiAKICAgLy8gcG9ydF9hbGxvY2F0
b3JfIGxpdmVzIG9uIHRoZSBuZXR3b3JrIHRocmVhZCBhbmQgc2hvdWxkIGJlIGRlc3Ryb3llZCB0
aGVyZS4KQEAgLTkyOSwxOCArOTcyLDQwIEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OkluaXRpYWxp
emUoCiAgIGNvbmZpZy5kaXNhYmxlX2VuY3J5cHRpb24gPSBvcHRpb25zLmRpc2FibGVfZW5jcnlw
dGlvbjsKICAgY29uZmlnLmJ1bmRsZV9wb2xpY3kgPSBjb25maWd1cmF0aW9uLmJ1bmRsZV9wb2xp
Y3k7CiAgIGNvbmZpZy5ydGNwX211eF9wb2xpY3kgPSBjb25maWd1cmF0aW9uLnJ0Y3BfbXV4X3Bv
bGljeTsKLSAgY29uZmlnLmNyeXB0b19vcHRpb25zID0gb3B0aW9ucy5jcnlwdG9fb3B0aW9uczsK
KyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTg5MSkgLSBSZW1vdmUgb3B0aW9ucy5jcnlwdG9f
b3B0aW9ucyB0aGVuIHJlbW92ZSB0aGlzCisgIC8vIHN0dWIuCisgIGNvbmZpZy5jcnlwdG9fb3B0
aW9ucyA9IGNvbmZpZ3VyYXRpb24uY3J5cHRvX29wdGlvbnMuaGFzX3ZhbHVlKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID8gKmNvbmZpZ3VyYXRpb24uY3J5cHRvX29wdGlvbnMKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogb3B0aW9ucy5jcnlwdG9fb3B0aW9uczsKICAg
Y29uZmlnLnRyYW5zcG9ydF9vYnNlcnZlciA9IHRoaXM7CiAgIGNvbmZpZy5ldmVudF9sb2cgPSBl
dmVudF9sb2dfLmdldCgpOwogI2lmIGRlZmluZWQoRU5BQkxFX0VYVEVSTkFMX0FVVEgpCiAgIGNv
bmZpZy5lbmFibGVfZXh0ZXJuYWxfYXV0aCA9IHRydWU7CiAjZW5kaWYKICAgY29uZmlnLmFjdGl2
ZV9yZXNldF9zcnRwX3BhcmFtcyA9IGNvbmZpZ3VyYXRpb24uYWN0aXZlX3Jlc2V0X3NydHBfcGFy
YW1zOworCisgIGlmIChjb25maWd1cmF0aW9uLnVzZV9tZWRpYV90cmFuc3BvcnQgfHwKKyAgICAg
IGNvbmZpZ3VyYXRpb24udXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscykgewor
ICAgIGlmICghZmFjdG9yeV8tPm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KCkpIHsKKyAgICAgIFJU
Q19EQ0hFQ0soZmFsc2UpCisgICAgICAgICAgPDwgIlBlZXJDb25uZWN0b24gaXMgaW5pdGlhbGl6
ZWQgd2l0aCB1c2VfbWVkaWFfdHJhbnNwb3J0ID0gdHJ1ZSBvciAiCisgICAgICAgICAgPDwgInVz
ZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPSB0cnVlICIKKyAgICAgICAgICA8
PCAiYnV0IG1lZGlhIHRyYW5zcG9ydCBmYWN0b3J5IGlzIG5vdCBzZXQgaW4gUGVlckNvbm5lY3Rp
b25GYWN0b3J5IjsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25maWcubWVk
aWFfdHJhbnNwb3J0X2ZhY3RvcnkgPSBmYWN0b3J5Xy0+bWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnko
KTsKKyAgfQorCiAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy5yZXNldChuZXcgSnNlcFRyYW5zcG9y
dENvbnRyb2xsZXIoCiAgICAgICBzaWduYWxpbmdfdGhyZWFkKCksIG5ldHdvcmtfdGhyZWFkKCks
IHBvcnRfYWxsb2NhdG9yXy5nZXQoKSwKICAgICAgIGFzeW5jX3Jlc29sdmVyX2ZhY3RvcnlfLmdl
dCgpLCBjb25maWcpKTsKICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TaWduYWxJY2VDb25uZWN0
aW9uU3RhdGUuY29ubmVjdCgKICAgICAgIHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6T25UcmFuc3Bv
cnRDb250cm9sbGVyQ29ubmVjdGlvblN0YXRlKTsKKyAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5T
aWduYWxTdGFuZGFyZGl6ZWRJY2VDb25uZWN0aW9uU3RhdGUuY29ubmVjdCgKKyAgICAgIHRoaXMs
ICZQZWVyQ29ubmVjdGlvbjo6U2V0U3RhbmRhcmRpemVkSWNlQ29ubmVjdGlvblN0YXRlKTsKKyAg
dHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TaWduYWxDb25uZWN0aW9uU3RhdGUuY29ubmVjdCgKKyAg
ICAgIHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6U2V0Q29ubmVjdGlvblN0YXRlKTsKICAgdHJhbnNw
b3J0X2NvbnRyb2xsZXJfLT5TaWduYWxJY2VHYXRoZXJpbmdTdGF0ZS5jb25uZWN0KAogICAgICAg
dGhpcywgJlBlZXJDb25uZWN0aW9uOjpPblRyYW5zcG9ydENvbnRyb2xsZXJHYXRoZXJpbmdTdGF0
ZSk7CiAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsSWNlQ2FuZGlkYXRlc0dhdGhlcmVk
LmNvbm5lY3QoCkBAIC05NzksMTAgKzEwNDQsMTggQEAgYm9vbCBQZWVyQ29ubmVjdGlvbjo6SW5p
dGlhbGl6ZSgKICAgICB9CiAgIH0KIAotICAvLyBFbmFibGUgY3JlYXRpb24gb2YgUlRQIGRhdGEg
Y2hhbm5lbHMgaWYgdGhlIGtFbmFibGVSdHBEYXRhQ2hhbm5lbHMgaXMgc2V0LgotICAvLyBJdCB0
YWtlcyBwcmVjZW5kZW5jZSBvdmVyIHRoZSBkaXNhYmxlX3NjdHBfZGF0YV9jaGFubmVscwotICAv
LyBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U6Ok9wdGlvbnMuCi0gIGlmIChjb25maWd1
cmF0aW9uLmVuYWJsZV9ydHBfZGF0YV9jaGFubmVsKSB7CisgIGlmIChjb25maWd1cmF0aW9uLnVz
ZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMpIHsKKyAgICBpZiAoY29uZmlndXJh
dGlvbi5lbmFibGVfcnRwX2RhdGFfY2hhbm5lbCkgeworICAgICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgImVuYWJsZV9ydHBfZGF0YV9jaGFubmVsIGFuZCAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAidXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyBhcmUgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImluY29tcGF0aWJsZSBhbmQgY2Fubm90IGJvdGggYmUgc2V0
IHRvIHRydWUiOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkYXRhX2NoYW5uZWxf
dHlwZV8gPSBjcmlja2V0OjpEQ1RfTUVESUFfVFJBTlNQT1JUOworICB9IGVsc2UgaWYgKGNvbmZp
Z3VyYXRpb24uZW5hYmxlX3J0cF9kYXRhX2NoYW5uZWwpIHsKKyAgICAvLyBFbmFibGUgY3JlYXRp
b24gb2YgUlRQIGRhdGEgY2hhbm5lbHMgaWYgdGhlIGtFbmFibGVSdHBEYXRhQ2hhbm5lbHMgaXMK
KyAgICAvLyBzZXQuIEl0IHRha2VzIHByZWNlbmRlbmNlIG92ZXIgdGhlIGRpc2FibGVfc2N0cF9k
YXRhX2NoYW5uZWxzCisgICAgLy8gUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlOjpPcHRp
b25zLgogICAgIGRhdGFfY2hhbm5lbF90eXBlXyA9IGNyaWNrZXQ6OkRDVF9SVFA7CiAgIH0gZWxz
ZSB7CiAgICAgLy8gRFRMUyBoYXMgdG8gYmUgZW5hYmxlZCB0byB1c2UgU0NUUC4KQEAgLTEwMDIs
NiArMTA3NSw5IEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OkluaXRpYWxpemUoCiAgIGF1ZGlvX29w
dGlvbnNfLmF1ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlID0KICAgICAgIGNvbmZp
Z3VyYXRpb24uYXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGU7CiAKKyAgYXVkaW9f
b3B0aW9uc18uYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMgPQorICAgICAgY29uZmln
dXJhdGlvbi5hdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tczsKKwogICAvLyBXaGV0aGVy
IHRoZSBjZXJ0aWZpY2F0ZSBnZW5lcmF0b3IvY2VydGlmaWNhdGUgaXMgbnVsbCBvciBub3QgZGV0
ZXJtaW5lcwogICAvLyB3aGF0IFBlZXJDb25uZWN0aW9uRGVzY3JpcHRpb25GYWN0b3J5IHdpbGwg
ZG8sIHNvIG1ha2Ugc3VyZSB0aGF0IHdlIGdpdmUgaXQKICAgLy8gdGhlIHJpZ2h0IGluc3RydWN0
aW9ucyBieSBjbGVhcmluZyB0aGUgdmFyaWFibGVzIGlmIG5lZWRlZC4KQEAgLTEwMjQsNyArMTEw
MCw3IEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OkluaXRpYWxpemUoCiAgIH0KIAogICB3ZWJydGNf
c2Vzc2lvbl9kZXNjX2ZhY3RvcnlfLT5zZXRfZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4
dGVuc2lvbnMoCi0gICAgICBvcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9lbmNyeXB0ZWRf
cnRwX2hlYWRlcl9leHRlbnNpb25zKTsKKyAgICAgIEdldENyeXB0b09wdGlvbnMoKS5zcnRwLmVu
YWJsZV9lbmNyeXB0ZWRfcnRwX2hlYWRlcl9leHRlbnNpb25zKTsKIAogICAvLyBBZGQgZGVmYXVs
dCBhdWRpby92aWRlbyB0cmFuc2NlaXZlcnMgZm9yIFBsYW4gQiBTRFAuCiAgIGlmICghSXNVbmlm
aWVkUGxhbigpKSB7CkBAIC0xMTgzLDcgKzEyNTksNyBAQCBQZWVyQ29ubmVjdGlvbjo6QWRkVHJh
Y2tQbGFuQigKICAgYXV0byBuZXdfc2VuZGVyID0KICAgICAgIENyZWF0ZVNlbmRlcihtZWRpYV90
eXBlLCB0cmFjay0+aWQoKSwgdHJhY2ssIGFkanVzdGVkX3N0cmVhbV9pZHMsIHt9KTsKICAgaWYg
KHRyYWNrLT5raW5kKCkgPT0gTWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZTo6a0F1ZGlvS2luZCkg
ewotICAgIG5ld19zZW5kZXItPmludGVybmFsKCktPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNl
X21lZGlhX2NoYW5uZWwoKSk7CisgICAgbmV3X3NlbmRlci0+aW50ZXJuYWwoKS0+U2V0TWVkaWFD
aGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWwoKSk7CiAgICAgR2V0QXVkaW9UcmFuc2NlaXZlcigp
LT5pbnRlcm5hbCgpLT5BZGRTZW5kZXIobmV3X3NlbmRlcik7CiAgICAgY29uc3QgUnRwU2VuZGVy
SW5mbyogc2VuZGVyX2luZm8gPQogICAgICAgICBGaW5kU2VuZGVySW5mbyhsb2NhbF9hdWRpb19z
ZW5kZXJfaW5mb3NfLApAQCAtMTE5Myw3ICsxMjY5LDcgQEAgUGVlckNvbm5lY3Rpb246OkFkZFRy
YWNrUGxhbkIoCiAgICAgfQogICB9IGVsc2UgewogICAgIFJUQ19EQ0hFQ0tfRVEoTWVkaWFTdHJl
YW1UcmFja0ludGVyZmFjZTo6a1ZpZGVvS2luZCwgdHJhY2stPmtpbmQoKSk7Ci0gICAgbmV3X3Nl
bmRlci0+aW50ZXJuYWwoKS0+U2V0VmlkZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5l
bCgpKTsKKyAgICBuZXdfc2VuZGVyLT5pbnRlcm5hbCgpLT5TZXRNZWRpYUNoYW5uZWwodmlkZW9f
bWVkaWFfY2hhbm5lbCgpKTsKICAgICBHZXRWaWRlb1RyYW5zY2VpdmVyKCktPmludGVybmFsKCkt
PkFkZFNlbmRlcihuZXdfc2VuZGVyKTsKICAgICBjb25zdCBSdHBTZW5kZXJJbmZvKiBzZW5kZXJf
aW5mbyA9CiAgICAgICAgIEZpbmRTZW5kZXJJbmZvKGxvY2FsX3ZpZGVvX3NlbmRlcl9pbmZvc18s
CkBAIC0xNTIzLDE0ICsxNTk5LDE0IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjxSdHBTZW5kZXJJbnRl
cmZhY2U+IFBlZXJDb25uZWN0aW9uOjpDcmVhdGVTZW5kZXIoCiAgIGlmIChraW5kID09IE1lZGlh
U3RyZWFtVHJhY2tJbnRlcmZhY2U6OmtBdWRpb0tpbmQpIHsKICAgICBhdXRvKiBhdWRpb19zZW5k
ZXIgPSBuZXcgQXVkaW9SdHBTZW5kZXIoCiAgICAgICAgIHdvcmtlcl90aHJlYWQoKSwgcnRjOjpD
cmVhdGVSYW5kb21VdWlkKCksIHN0YXRzXy5nZXQoKSk7Ci0gICAgYXVkaW9fc2VuZGVyLT5TZXRW
b2ljZU1lZGlhQ2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVsKCkpOworICAgIGF1ZGlvX3NlbmRl
ci0+U2V0TWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWwoKSk7CiAgICAgbmV3X3NlbmRl
ciA9IFJ0cFNlbmRlclByb3h5V2l0aEludGVybmFsPFJ0cFNlbmRlckludGVybmFsPjo6Q3JlYXRl
KAogICAgICAgICBzaWduYWxpbmdfdGhyZWFkKCksIGF1ZGlvX3NlbmRlcik7CiAgICAgR2V0QXVk
aW9UcmFuc2NlaXZlcigpLT5pbnRlcm5hbCgpLT5BZGRTZW5kZXIobmV3X3NlbmRlcik7CiAgIH0g
ZWxzZSBpZiAoa2luZCA9PSBNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlOjprVmlkZW9LaW5kKSB7
CiAgICAgYXV0byogdmlkZW9fc2VuZGVyID0KICAgICAgICAgbmV3IFZpZGVvUnRwU2VuZGVyKHdv
cmtlcl90aHJlYWQoKSwgcnRjOjpDcmVhdGVSYW5kb21VdWlkKCkpOwotICAgIHZpZGVvX3NlbmRl
ci0+U2V0VmlkZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbCgpKTsKKyAgICB2aWRl
b19zZW5kZXItPlNldE1lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsKCkpOwogICAgIG5l
d19zZW5kZXIgPSBSdHBTZW5kZXJQcm94eVdpdGhJbnRlcm5hbDxSdHBTZW5kZXJJbnRlcm5hbD46
OkNyZWF0ZSgKICAgICAgICAgc2lnbmFsaW5nX3RocmVhZCgpLCB2aWRlb19zZW5kZXIpOwogICAg
IEdldFZpZGVvVHJhbnNjZWl2ZXIoKS0+aW50ZXJuYWwoKS0+QWRkU2VuZGVyKG5ld19zZW5kZXIp
OwpAQCAtMTY0Nyw3ICsxNzIzLDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6R2V0U3RhdHMoCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgfQotICAvLyBJZiB0aGVyZSBpcyBubyB8aW50ZXJuYWxf
c2VuZGVyfMKgdGhlbiB8c2VsZWN0b3J8IGlzIGVpdGhlciBudWxsIG9yIGRvZXMgbm90CisgIC8v
IElmIHRoZXJlIGlzIG5vIHxpbnRlcm5hbF9zZW5kZXJ8IHRoZW4gfHNlbGVjdG9yfCBpcyBlaXRo
ZXIgbnVsbCBvciBkb2VzIG5vdAogICAvLyBiZWxvbmcgdG8gdGhlIFBlZXJDb25uZWN0aW9uIChp
biBQbGFuIEIsIHNlbmRlcnMgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUKICAgLy8gUGVlckNvbm5l
Y3Rpb24pLiBUaGlzIG1lYW5zIHRoYXQgImFsbCB0aGUgc3RhdHMgb2JqZWN0cyByZXByZXNlbnRp
bmcgdGhlCiAgIC8vIHNlbGVjdG9yIiBpcyBhbiBlbXB0eSBzZXQuIEludm9raW5nIEdldFN0YXRz
UmVwb3J0KCkgd2l0aCBhIG51bGwgc2VsZWN0b3IKQEAgLTE2NzUsNyArMTc1MSw3IEBAIHZvaWQg
UGVlckNvbm5lY3Rpb246OkdldFN0YXRzKAogICAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAg
Ly8gSWYgdGhlcmUgaXMgbm8gfGludGVybmFsX3JlY2VpdmVyfMKgdGhlbiB8c2VsZWN0b3J8IGlz
IGVpdGhlciBudWxsIG9yIGRvZXMKKyAgLy8gSWYgdGhlcmUgaXMgbm8gfGludGVybmFsX3JlY2Vp
dmVyfCB0aGVuIHxzZWxlY3RvcnwgaXMgZWl0aGVyIG51bGwgb3IgZG9lcwogICAvLyBub3QgYmVs
b25nIHRvIHRoZSBQZWVyQ29ubmVjdGlvbiAoaW4gUGxhbiBCLCByZWNlaXZlcnMgY2FuIGJlIHJl
bW92ZWQgZnJvbQogICAvLyB0aGUgUGVlckNvbm5lY3Rpb24pLiBUaGlzIG1lYW5zIHRoYXQgImFs
bCB0aGUgc3RhdHMgb2JqZWN0cyByZXByZXNlbnRpbmcKICAgLy8gdGhlIHNlbGVjdG9yIiBpcyBh
biBlbXB0eSBzZXQuIEludm9raW5nIEdldFN0YXRzUmVwb3J0KCkgd2l0aCBhIG51bGwKQEAgLTE2
OTIsNiArMTc2OCwxNiBAQCBQZWVyQ29ubmVjdGlvbjo6aWNlX2Nvbm5lY3Rpb25fc3RhdGUoKSB7
CiAgIHJldHVybiBpY2VfY29ubmVjdGlvbl9zdGF0ZV87CiB9CiAKK1BlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUKK1BlZXJDb25uZWN0aW9uOjpzdGFuZGFyZGl6ZWRf
aWNlX2Nvbm5lY3Rpb25fc3RhdGUoKSB7CisgIHJldHVybiBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5l
Y3Rpb25fc3RhdGVfOworfQorCitQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rp
b25TdGF0ZQorUGVlckNvbm5lY3Rpb246OnBlZXJfY29ubmVjdGlvbl9zdGF0ZSgpIHsKKyAgcmV0
dXJuIGNvbm5lY3Rpb25fc3RhdGVfOworfQorCiBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNl
R2F0aGVyaW5nU3RhdGUKIFBlZXJDb25uZWN0aW9uOjppY2VfZ2F0aGVyaW5nX3N0YXRlKCkgewog
ICByZXR1cm4gaWNlX2dhdGhlcmluZ19zdGF0ZV87CkBAIC0xOTk1LDYgKzIwODEsMTYgQEAgUlRD
RXJyb3IgUGVlckNvbm5lY3Rpb246OkFwcGx5TG9jYWxEZXNjcmlwdGlvbigKICAgLy8gfGxvY2Fs
X2Rlc2NyaXB0aW9uKCl8LgogICBSVENfRENIRUNLKGxvY2FsX2Rlc2NyaXB0aW9uKCkpOwogCisg
IGlmICghaXNfY2FsbGVyXykgeworICAgIGlmIChyZW1vdGVfZGVzY3JpcHRpb24oKSkgeworICAg
ICAgLy8gUmVtb3RlIGRlc2NyaXB0aW9uIHdhcyBhcHBsaWVkIGZpcnN0LCBzbyB0aGlzIFBDIGlz
IHRoZSBjYWxsZWUuCisgICAgICBpc19jYWxsZXJfID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAg
ICAgIC8vIExvY2FsIGRlc2NyaXB0aW9uIGlzIGFwcGxpZWQgZmlyc3QsIHNvIHRoaXMgUEMgaXMg
dGhlIGNhbGxlci4KKyAgICAgIGlzX2NhbGxlcl8gPSB0cnVlOworICAgIH0KKyAgfQorCiAgIFJU
Q0Vycm9yIGVycm9yID0gUHVzaGRvd25UcmFuc3BvcnREZXNjcmlwdGlvbihjcmlja2V0OjpDU19M
T0NBTCwgdHlwZSk7CiAgIGlmICghZXJyb3Iub2soKSkgewogICAgIHJldHVybiBlcnJvcjsKQEAg
LTIwNzcsNyArMjE3Myw3IEBAIFJUQ0Vycm9yIFBlZXJDb25uZWN0aW9uOjpBcHBseUxvY2FsRGVz
Y3JpcHRpb24oCiAgIC8vIElmIHNldHRpbmcgdGhlIGRlc2NyaXB0aW9uIGRlY2lkZWQgb3VyIFNT
TCByb2xlLCBhbGxvY2F0ZSBhbnkgbmVjZXNzYXJ5CiAgIC8vIFNDVFAgc2lkcy4KICAgcnRjOjpT
U0xSb2xlIHJvbGU7Ci0gIGlmIChkYXRhX2NoYW5uZWxfdHlwZSgpID09IGNyaWNrZXQ6OkRDVF9T
Q1RQICYmIEdldFNjdHBTc2xSb2xlKCZyb2xlKSkgeworICBpZiAoRGF0YUNoYW5uZWw6OklzU2N0
cExpa2UoZGF0YV9jaGFubmVsX3R5cGVfKSAmJiBHZXRTY3RwU3NsUm9sZSgmcm9sZSkpIHsKICAg
ICBBbGxvY2F0ZVNjdHBTaWRzKHJvbGUpOwogICB9CiAKQEAgLTIzNTIsNyArMjQ0OCw3IEBAIFJU
Q0Vycm9yIFBlZXJDb25uZWN0aW9uOjpBcHBseVJlbW90ZURlc2NyaXB0aW9uKAogICAvLyBJZiBz
ZXR0aW5nIHRoZSBkZXNjcmlwdGlvbiBkZWNpZGVkIG91ciBTU0wgcm9sZSwgYWxsb2NhdGUgYW55
IG5lY2Vzc2FyeQogICAvLyBTQ1RQIHNpZHMuCiAgIHJ0Yzo6U1NMUm9sZSByb2xlOwotICBpZiAo
ZGF0YV9jaGFubmVsX3R5cGUoKSA9PSBjcmlja2V0OjpEQ1RfU0NUUCAmJiBHZXRTY3RwU3NsUm9s
ZSgmcm9sZSkpIHsKKyAgaWYgKERhdGFDaGFubmVsOjpJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90
eXBlXykgJiYgR2V0U2N0cFNzbFJvbGUoJnJvbGUpKSB7CiAgICAgQWxsb2NhdGVTY3RwU2lkcyhy
b2xlKTsKICAgfQogCkBAIC0yNjQ2LDExICsyNzQyLDExIEBAIFJUQ0Vycm9yIFBlZXJDb25uZWN0
aW9uOjpVcGRhdGVUcmFuc2NlaXZlckNoYW5uZWwoCiAgICAgY29uc3QgY3JpY2tldDo6Q29udGVu
dEdyb3VwKiBidW5kbGVfZ3JvdXApIHsKICAgUlRDX0RDSEVDSyhJc1VuaWZpZWRQbGFuKCkpOwog
ICBSVENfRENIRUNLKHRyYW5zY2VpdmVyKTsKLSAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5u
ZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOworICBjcmlja2V0OjpDaGFu
bmVsSW50ZXJmYWNlKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNoYW5uZWwo
KTsKICAgaWYgKGNvbnRlbnQucmVqZWN0ZWQpIHsKICAgICBpZiAoY2hhbm5lbCkgewogICAgICAg
dHJhbnNjZWl2ZXItPmludGVybmFsKCktPlNldENoYW5uZWwobnVsbHB0cik7Ci0gICAgICBEZXN0
cm95QmFzZUNoYW5uZWwoY2hhbm5lbCk7CisgICAgICBEZXN0cm95Q2hhbm5lbEludGVyZmFjZShj
aGFubmVsKTsKICAgICB9CiAgIH0gZWxzZSB7CiAgICAgaWYgKCFjaGFubmVsKSB7CkBAIC0yNjgz
LDcgKzI3NzksNyBAQCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbjo6VXBkYXRlRGF0YUNoYW5uZWwo
CiAgIGlmIChjb250ZW50LnJlamVjdGVkKSB7CiAgICAgRGVzdHJveURhdGFDaGFubmVsKCk7CiAg
IH0gZWxzZSB7Ci0gICAgaWYgKCFydHBfZGF0YV9jaGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRf
KSB7CisgICAgaWYgKCFydHBfZGF0YV9jaGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRfICYmICFt
ZWRpYV90cmFuc3BvcnRfKSB7CiAgICAgICBpZiAoIUNyZWF0ZURhdGFDaGFubmVsKGNvbnRlbnQu
bmFtZSkpIHsKICAgICAgICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlRF
Uk5BTF9FUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVh
dGUgZGF0YSBjaGFubmVsLiIpOwpAQCAtMjg3MCw2ICsyOTY2LDQ5IEBAIGJvb2wgUGVlckNvbm5l
Y3Rpb246OlNldENvbmZpZ3VyYXRpb24oY29uc3QgUlRDQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbiwKICAgICByZXR1cm4gU2FmZVNldEVycm9yKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9NT0RJ
RklDQVRJT04sIGVycm9yKTsKICAgfQogCisgIGlmIChsb2NhbF9kZXNjcmlwdGlvbigpICYmCisg
ICAgICBjb25maWd1cmF0aW9uLnVzZV9tZWRpYV90cmFuc3BvcnQgIT0gY29uZmlndXJhdGlvbl8u
dXNlX21lZGlhX3RyYW5zcG9ydCkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBj
aGFuZ2UgbWVkaWFfdHJhbnNwb3J0IGFmdGVyIGNhbGxpbmcgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICJTZXRMb2NhbERlc2NyaXB0aW9uLiI7CisgICAgcmV0dXJuIFNhZmVTZXRFcnJvcihS
VENFcnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLCBlcnJvcik7CisgIH0KKworICBpZiAo
cmVtb3RlX2Rlc2NyaXB0aW9uKCkgJiYKKyAgICAgIGNvbmZpZ3VyYXRpb24udXNlX21lZGlhX3Ry
YW5zcG9ydCAhPSBjb25maWd1cmF0aW9uXy51c2VfbWVkaWFfdHJhbnNwb3J0KSB7CisgICAgUlRD
X0xPRyhMU19FUlJPUikgPDwgIkNhbid0IGNoYW5nZSBtZWRpYV90cmFuc3BvcnQgYWZ0ZXIgY2Fs
bGluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIlNldFJlbW90ZURlc2NyaXB0aW9uLiI7
CisgICAgcmV0dXJuIFNhZmVTZXRFcnJvcihSVENFcnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FU
SU9OLCBlcnJvcik7CisgIH0KKworICBpZiAobG9jYWxfZGVzY3JpcHRpb24oKSAmJgorICAgICAg
Y29uZmlndXJhdGlvbi51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzICE9Cisg
ICAgICAgICAgY29uZmlndXJhdGlvbl8udXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFu
bmVscykgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBjaGFuZ2UgbWVkaWFfdHJh
bnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYWZ0
ZXIgY2FsbGluZyBTZXRMb2NhbERlc2NyaXB0aW9uLiI7CisgICAgcmV0dXJuIFNhZmVTZXRFcnJv
cihSVENFcnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLCBlcnJvcik7CisgIH0KKworICBp
ZiAocmVtb3RlX2Rlc2NyaXB0aW9uKCkgJiYKKyAgICAgIGNvbmZpZ3VyYXRpb24udXNlX21lZGlh
X3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyAhPQorICAgICAgICAgIGNvbmZpZ3VyYXRpb25f
LnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMpIHsKKyAgICBSVENfTE9HKExT
X0VSUk9SKSA8PCAiQ2FuJ3QgY2hhbmdlIG1lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVs
cyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImFmdGVyIGNhbGxpbmcgU2V0UmVtb3RlRGVz
Y3JpcHRpb24uIjsKKyAgICByZXR1cm4gU2FmZVNldEVycm9yKFJUQ0Vycm9yVHlwZTo6SU5WQUxJ
RF9NT0RJRklDQVRJT04sIGVycm9yKTsKKyAgfQorCisgIGlmIChsb2NhbF9kZXNjcmlwdGlvbigp
ICYmCisgICAgICBjb25maWd1cmF0aW9uLmNyeXB0b19vcHRpb25zICE9IGNvbmZpZ3VyYXRpb25f
LmNyeXB0b19vcHRpb25zKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbid0IGNoYW5n
ZSBjcnlwdG9fb3B0aW9ucyBhZnRlciBjYWxsaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAiU2V0TG9jYWxEZXNjcmlwdGlvbi4iOworICAgIHJldHVybiBTYWZlU2V0RXJyb3IoUlRDRXJy
b3JUeXBlOjpJTlZBTElEX01PRElGSUNBVElPTiwgZXJyb3IpOworICB9CisKKyAgaWYgKGNvbmZp
Z3VyYXRpb24udXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyB8fAorICAgICAg
Y29uZmlndXJhdGlvbi51c2VfbWVkaWFfdHJhbnNwb3J0KSB7CisgICAgUlRDX0NIRUNLKGNvbmZp
Z3VyYXRpb24uYnVuZGxlX3BvbGljeSA9PSBrQnVuZGxlUG9saWN5TWF4QnVuZGxlKQorICAgICAg
ICA8PCAiTWVkaWEgdHJhbnNwb3J0IHJlcXVpcmVzIE1heEJ1bmRsZSBwb2xpY3kuIjsKKyAgfQor
CiAgIC8vIFRoZSBzaW1wbGVzdCAoYW5kIG1vc3QgZnV0dXJlLWNvbXBhdGlibGUpIHdheSB0byB0
ZWxsIGlmIHRoZSBjb25maWcgd2FzCiAgIC8vIG1vZGlmaWVkIGluIGFuIGludmFsaWQgd2F5IGlz
IHRvIGNvcHkgZWFjaCBwcm9wZXJ0eSB3ZSBkbyBzdXBwb3J0CiAgIC8vIG1vZGlmeWluZywgdGhl
biB1c2Ugb3BlcmF0b3I9PS4gVGhlcmUgYXJlIGZhciBtb3JlIHByb3BlcnRpZXMgd2UgZG9uJ3QK
QEAgLTI4OTQsNiArMzAzMyw5IEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OlNldENvbmZpZ3VyYXRp
b24oY29uc3QgUlRDQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwKICAgbW9kaWZpZWRfY29u
ZmlnLm5ldHdvcmtfcHJlZmVyZW5jZSA9IGNvbmZpZ3VyYXRpb24ubmV0d29ya19wcmVmZXJlbmNl
OwogICBtb2RpZmllZF9jb25maWcuYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zID0KICAgICAgIGNv
bmZpZ3VyYXRpb24uYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zOworICBtb2RpZmllZF9jb25maWcu
dXNlX21lZGlhX3RyYW5zcG9ydCA9IGNvbmZpZ3VyYXRpb24udXNlX21lZGlhX3RyYW5zcG9ydDsK
KyAgbW9kaWZpZWRfY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMg
PQorICAgICAgY29uZmlndXJhdGlvbi51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5u
ZWxzOwogICBpZiAoY29uZmlndXJhdGlvbiAhPSBtb2RpZmllZF9jb25maWcpIHsKICAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiTW9kaWZ5aW5nIHRoZSBjb25maWd1cmF0aW9uIGluIGFuIHVuc3Vw
cG9ydGVkIHdheS4iOwogICAgIHJldHVybiBTYWZlU2V0RXJyb3IoUlRDRXJyb3JUeXBlOjpJTlZB
TElEX01PRElGSUNBVElPTiwgZXJyb3IpOwpAQCAtMjk1MSw2ICszMDkzLDExIEBAIGJvb2wgUGVl
ckNvbm5lY3Rpb246OlNldENvbmZpZ3VyYXRpb24oY29uc3QgUlRDQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbiwKICAgfQogCiAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2V0SWNlQ29uZmln
KFBhcnNlSWNlQ29uZmlnKG1vZGlmaWVkX2NvbmZpZykpOworICB0cmFuc3BvcnRfY29udHJvbGxl
cl8tPlNldE1lZGlhVHJhbnNwb3J0RmFjdG9yeSgKKyAgICAgIG1vZGlmaWVkX2NvbmZpZy51c2Vf
bWVkaWFfdHJhbnNwb3J0IHx8CisgICAgICAgICAgICAgIG1vZGlmaWVkX2NvbmZpZy51c2VfbWVk
aWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzCisgICAgICAgICAgPyBmYWN0b3J5Xy0+bWVk
aWFfdHJhbnNwb3J0X2ZhY3RvcnkoKQorICAgICAgICAgIDogbnVsbHB0cik7CiAKICAgaWYgKGNv
bmZpZ3VyYXRpb25fLmFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtcyAhPQogICAgICAgbW9kaWZpZWRf
Y29uZmlnLmFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtcykgewpAQCAtMzExOSw3ICszMjY2LDcgQEAg
dm9pZCBQZWVyQ29ubmVjdGlvbjo6U2V0QXVkaW9QbGF5b3V0KGJvb2wgcGxheW91dCkgewogICAg
IHJldHVybjsKICAgfQogICBhdXRvIGF1ZGlvX3N0YXRlID0KLSAgICAgIGZhY3RvcnlfLT5jaGFu
bmVsX21hbmFnZXIoKS0+bWVkaWFfZW5naW5lKCktPkdldEF1ZGlvU3RhdGUoKTsKKyAgICAgIGZh
Y3RvcnlfLT5jaGFubmVsX21hbmFnZXIoKS0+bWVkaWFfZW5naW5lKCktPnZvaWNlKCkuR2V0QXVk
aW9TdGF0ZSgpOwogICBhdWRpb19zdGF0ZS0+U2V0UGxheW91dChwbGF5b3V0KTsKIH0KIApAQCAt
MzEzMSw3ICszMjc4LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6U2V0QXVkaW9SZWNvcmRpbmco
Ym9vbCByZWNvcmRpbmcpIHsKICAgICByZXR1cm47CiAgIH0KICAgYXV0byBhdWRpb19zdGF0ZSA9
Ci0gICAgICBmYWN0b3J5Xy0+Y2hhbm5lbF9tYW5hZ2VyKCktPm1lZGlhX2VuZ2luZSgpLT5HZXRB
dWRpb1N0YXRlKCk7CisgICAgICBmYWN0b3J5Xy0+Y2hhbm5lbF9tYW5hZ2VyKCktPm1lZGlhX2Vu
Z2luZSgpLT52b2ljZSgpLkdldEF1ZGlvU3RhdGUoKTsKICAgYXVkaW9fc3RhdGUtPlNldFJlY29y
ZGluZyhyZWNvcmRpbmcpOwogfQogCkBAIC0zMTQxLDcgKzMyODgsNyBAQCBQZWVyQ29ubmVjdGlv
bjo6R2V0UmVtb3RlQXVkaW9TU0xDZXJ0aWZpY2F0ZSgpIHsKICAgaWYgKCFjaGFpbiB8fCAhY2hh
aW4tPkdldFNpemUoKSkgewogICAgIHJldHVybiBudWxscHRyOwogICB9Ci0gIHJldHVybiBjaGFp
bi0+R2V0KDApLkdldFVuaXF1ZVJlZmVyZW5jZSgpOworICByZXR1cm4gY2hhaW4tPkdldCgwKS5D
bG9uZSgpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xDZXJ0Q2hhaW4+CkBAIC0zMTcw
LDkgKzMzMTcsMTMgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbjo6U3RhcnRSdGNFdmVudExvZyhydGM6
OlBsYXRmb3JtRmlsZSBmaWxlLAogICBjb25zdCBzaXplX3QgbWF4X3NpemUgPSAobWF4X3NpemVf
Ynl0ZXMgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBSdGNFdmVudExvZzo6
a1VubGltaXRlZE91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBydGM6OnNh
dHVyYXRlZF9jYXN0PHNpemVfdD4obWF4X3NpemVfYnl0ZXMpOworICBpbnQ2NF90IG91dHB1dF9w
ZXJpb2RfbXMgPSB3ZWJydGM6OlJ0Y0V2ZW50TG9nOjprSW1tZWRpYXRlT3V0cHV0OworICBpZiAo
ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVJ0Y0V2ZW50TG9nTmV3Rm9ybWF0IikpIHsK
KyAgICBvdXRwdXRfcGVyaW9kX21zID0gNTAwMDsKKyAgfQogICByZXR1cm4gU3RhcnRSdGNFdmVu
dExvZygKICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nT3V0cHV0RmlsZT4oZmls
ZSwgbWF4X3NpemUpLAotICAgICAgd2VicnRjOjpSdGNFdmVudExvZzo6a0ltbWVkaWF0ZU91dHB1
dCk7CisgICAgICBvdXRwdXRfcGVyaW9kX21zKTsKIH0KIAogYm9vbCBQZWVyQ29ubmVjdGlvbjo6
U3RhcnRSdGNFdmVudExvZyhzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dPdXRwdXQ+IG91dHB1
dCwKQEAgLTMzNDcsNyArMzQ5OCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkNyZWF0ZUF1ZGlv
UmVjZWl2ZXIoCiAgIC8vIHRoZSBjb25zdHJ1Y3RvciB0YWtpbmcgc3RyZWFtIElEcyBpbnN0ZWFk
LgogICBhdXRvKiBhdWRpb19yZWNlaXZlciA9IG5ldyBBdWRpb1J0cFJlY2VpdmVyKAogICAgICAg
d29ya2VyX3RocmVhZCgpLCByZW1vdGVfc2VuZGVyX2luZm8uc2VuZGVyX2lkLCBzdHJlYW1zKTsK
LSAgYXVkaW9fcmVjZWl2ZXItPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5u
ZWwoKSk7CisgIGF1ZGlvX3JlY2VpdmVyLT5TZXRNZWRpYUNoYW5uZWwodm9pY2VfbWVkaWFfY2hh
bm5lbCgpKTsKICAgYXVkaW9fcmVjZWl2ZXItPlNldHVwTWVkaWFDaGFubmVsKHJlbW90ZV9zZW5k
ZXJfaW5mby5maXJzdF9zc3JjKTsKICAgYXV0byByZWNlaXZlciA9IFJ0cFJlY2VpdmVyUHJveHlX
aXRoSW50ZXJuYWw8UnRwUmVjZWl2ZXJJbnRlcm5hbD46OkNyZWF0ZSgKICAgICAgIHNpZ25hbGlu
Z190aHJlYWQoKSwgYXVkaW9fcmVjZWl2ZXIpOwpAQCAtMzM2NSw3ICszNTE2LDcgQEAgdm9pZCBQ
ZWVyQ29ubmVjdGlvbjo6Q3JlYXRlVmlkZW9SZWNlaXZlcigKICAgLy8gdGhlIGNvbnN0cnVjdG9y
IHRha2luZyBzdHJlYW0gSURzIGluc3RlYWQuCiAgIGF1dG8qIHZpZGVvX3JlY2VpdmVyID0gbmV3
IFZpZGVvUnRwUmVjZWl2ZXIoCiAgICAgICB3b3JrZXJfdGhyZWFkKCksIHJlbW90ZV9zZW5kZXJf
aW5mby5zZW5kZXJfaWQsIHN0cmVhbXMpOwotICB2aWRlb19yZWNlaXZlci0+U2V0VmlkZW9NZWRp
YUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbCgpKTsKKyAgdmlkZW9fcmVjZWl2ZXItPlNldE1l
ZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsKCkpOwogICB2aWRlb19yZWNlaXZlci0+U2V0
dXBNZWRpYUNoYW5uZWwocmVtb3RlX3NlbmRlcl9pbmZvLmZpcnN0X3NzcmMpOwogICBhdXRvIHJl
Y2VpdmVyID0gUnRwUmVjZWl2ZXJQcm94eVdpdGhJbnRlcm5hbDxSdHBSZWNlaXZlckludGVybmFs
Pjo6Q3JlYXRlKAogICAgICAgc2lnbmFsaW5nX3RocmVhZCgpLCB2aWRlb19yZWNlaXZlcik7CkBA
IC0zNDA4LDcgKzM1NTksNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpBZGRBdWRpb1RyYWNrKEF1
ZGlvVHJhY2tJbnRlcmZhY2UqIHRyYWNrLAogICAvLyBOb3JtYWwgY2FzZTsgd2UndmUgbmV2ZXIg
c2VlbiB0aGlzIHRyYWNrIGJlZm9yZS4KICAgYXV0byBuZXdfc2VuZGVyID0gQ3JlYXRlU2VuZGVy
KGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHRyYWNrLT5pZCgpLCB0cmFjaywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHtzdHJlYW0tPmlkKCl9LCB7fSk7Ci0gIG5ld19zZW5k
ZXItPmludGVybmFsKCktPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWwo
KSk7CisgIG5ld19zZW5kZXItPmludGVybmFsKCktPlNldE1lZGlhQ2hhbm5lbCh2b2ljZV9tZWRp
YV9jaGFubmVsKCkpOwogICBHZXRBdWRpb1RyYW5zY2VpdmVyKCktPmludGVybmFsKCktPkFkZFNl
bmRlcihuZXdfc2VuZGVyKTsKICAgLy8gSWYgdGhlIHNlbmRlciBoYXMgYWxyZWFkeSBiZWVuIGNv
bmZpZ3VyZWQgaW4gU0RQLCB3ZSBjYWxsIFNldFNzcmMsCiAgIC8vIHdoaWNoIHdpbGwgY29ubmVj
dCB0aGUgc2VuZGVyIHRvIHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydC4gVGhpcyBjYW4KQEAgLTM0
NTMsNyArMzYwNCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkFkZFZpZGVvVHJhY2soVmlkZW9U
cmFja0ludGVyZmFjZSogdHJhY2ssCiAgIC8vIE5vcm1hbCBjYXNlOyB3ZSd2ZSBuZXZlciBzZWVu
IHRoaXMgdHJhY2sgYmVmb3JlLgogICBhdXRvIG5ld19zZW5kZXIgPSBDcmVhdGVTZW5kZXIoY3Jp
Y2tldDo6TUVESUFfVFlQRV9WSURFTywgdHJhY2stPmlkKCksIHRyYWNrLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAge3N0cmVhbS0+aWQoKX0sIHt9KTsKLSAgbmV3X3NlbmRlci0+
aW50ZXJuYWwoKS0+U2V0VmlkZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbCgpKTsK
KyAgbmV3X3NlbmRlci0+aW50ZXJuYWwoKS0+U2V0TWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2No
YW5uZWwoKSk7CiAgIEdldFZpZGVvVHJhbnNjZWl2ZXIoKS0+aW50ZXJuYWwoKS0+QWRkU2VuZGVy
KG5ld19zZW5kZXIpOwogICBjb25zdCBSdHBTZW5kZXJJbmZvKiBzZW5kZXJfaW5mbyA9CiAgICAg
ICBGaW5kU2VuZGVySW5mbyhsb2NhbF92aWRlb19zZW5kZXJfaW5mb3NfLCBzdHJlYW0tPmlkKCks
IHRyYWNrLT5pZCgpKTsKQEAgLTM0OTUsNiArMzY0NiwyOSBAQCB2b2lkIFBlZXJDb25uZWN0aW9u
OjpTZXRJY2VDb25uZWN0aW9uU3RhdGUoSWNlQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0ZSkgewog
ICBPYnNlcnZlcigpLT5PbkljZUNvbm5lY3Rpb25DaGFuZ2UoaWNlX2Nvbm5lY3Rpb25fc3RhdGVf
KTsKIH0KIAordm9pZCBQZWVyQ29ubmVjdGlvbjo6U2V0U3RhbmRhcmRpemVkSWNlQ29ubmVjdGlv
blN0YXRlKAorICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUg
bmV3X3N0YXRlKSB7CisgIFJUQ19EQ0hFQ0soc2lnbmFsaW5nX3RocmVhZCgpLT5Jc0N1cnJlbnQo
KSk7CisgIGlmIChzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25fc3RhdGVfID09IG5ld19zdGF0
ZSkKKyAgICByZXR1cm47CisgIGlmIChJc0Nsb3NlZCgpKQorICAgIHJldHVybjsKKyAgc3RhbmRh
cmRpemVkX2ljZV9jb25uZWN0aW9uX3N0YXRlXyA9IG5ld19zdGF0ZTsKKyAgLy8gVE9ETyhqb25h
c29sc3Nvbik6IFBhc3MgdGhpcyB2YWx1ZSBvbiB0byBPbkljZUNvbm5lY3Rpb25DaGFuZ2UgaW5z
dGVhZCBvZgorICAvLyB0aGUgb2xkIG9uZSBvbmNlIGRpc2Nvbm5lY3RzIGFyZSBoYW5kbGVkIHBy
b3Blcmx5LgorfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpTZXRDb25uZWN0aW9uU3RhdGUoCisg
ICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRl
KSB7CisgIFJUQ19EQ0hFQ0soc2lnbmFsaW5nX3RocmVhZCgpLT5Jc0N1cnJlbnQoKSk7CisgIGlm
IChjb25uZWN0aW9uX3N0YXRlXyA9PSBuZXdfc3RhdGUpCisgICAgcmV0dXJuOworICBpZiAoSXND
bG9zZWQoKSkKKyAgICByZXR1cm47CisgIGNvbm5lY3Rpb25fc3RhdGVfID0gbmV3X3N0YXRlOwor
ICBPYnNlcnZlcigpLT5PbkNvbm5lY3Rpb25DaGFuZ2UobmV3X3N0YXRlKTsKK30KKwogdm9pZCBQ
ZWVyQ29ubmVjdGlvbjo6T25JY2VHYXRoZXJpbmdDaGFuZ2UoCiAgICAgUGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OkljZUdhdGhlcmluZ1N0YXRlIG5ld19zdGF0ZSkgewogICBSVENfRENIRUNLKHNp
Z25hbGluZ190aHJlYWQoKS0+SXNDdXJyZW50KCkpOwpAQCAtMzU0Miw2ICszNzE2LDEwIEBAIHZv
aWQgUGVlckNvbm5lY3Rpb246OkNoYW5nZVNpZ25hbGluZ1N0YXRlKAogICBpZiAoc2lnbmFsaW5n
X3N0YXRlID09IGtDbG9zZWQpIHsKICAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV8gPSBrSWNlQ29u
bmVjdGlvbkNsb3NlZDsKICAgICBPYnNlcnZlcigpLT5PbkljZUNvbm5lY3Rpb25DaGFuZ2UoaWNl
X2Nvbm5lY3Rpb25fc3RhdGVfKTsKKyAgICBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25fc3Rh
dGVfID0KKyAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0
ZTo6a0ljZUNvbm5lY3Rpb25DbG9zZWQ7CisgICAgY29ubmVjdGlvbl9zdGF0ZV8gPSBQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nsb3NlZDsKKyAgICBPYnNl
cnZlcigpLT5PbkNvbm5lY3Rpb25DaGFuZ2UoY29ubmVjdGlvbl9zdGF0ZV8pOwogICAgIGlmIChp
Y2VfZ2F0aGVyaW5nX3N0YXRlXyAhPSBrSWNlR2F0aGVyaW5nQ29tcGxldGUpIHsKICAgICAgIGlj
ZV9nYXRoZXJpbmdfc3RhdGVfID0ga0ljZUdhdGhlcmluZ0NvbXBsZXRlOwogICAgICAgT2JzZXJ2
ZXIoKS0+T25JY2VHYXRoZXJpbmdDaGFuZ2UoaWNlX2dhdGhlcmluZ19zdGF0ZV8pOwpAQCAtMzY0
MSw4ICszODE5LDE1IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkdldE9wdGlvbnNGb3JPZmZlcigK
ICAgfQogCiAgIHNlc3Npb25fb3B0aW9ucy0+cnRjcF9jbmFtZSA9IHJ0Y3BfY25hbWVfOwotICBz
ZXNzaW9uX29wdGlvbnMtPmNyeXB0b19vcHRpb25zID0gZmFjdG9yeV8tPm9wdGlvbnMoKS5jcnlw
dG9fb3B0aW9uczsKKyAgc2Vzc2lvbl9vcHRpb25zLT5jcnlwdG9fb3B0aW9ucyA9IEdldENyeXB0
b09wdGlvbnMoKTsKICAgc2Vzc2lvbl9vcHRpb25zLT5pc191bmlmaWVkX3BsYW4gPSBJc1VuaWZp
ZWRQbGFuKCk7CisgIHNlc3Npb25fb3B0aW9ucy0+cG9vbGVkX2ljZV9jcmVkZW50aWFscyA9Cisg
ICAgICBuZXR3b3JrX3RocmVhZCgpLT5JbnZva2U8c3RkOjp2ZWN0b3I8Y3JpY2tldDo6SWNlUGFy
YW1ldGVycz4+KAorICAgICAgICAgIFJUQ19GUk9NX0hFUkUsCisgICAgICAgICAgcnRjOjpCaW5k
KCZjcmlja2V0OjpQb3J0QWxsb2NhdG9yOjpHZXRQb29sZWRJY2VDcmVkZW50aWFscywKKyAgICAg
ICAgICAgICAgICAgICAgcG9ydF9hbGxvY2F0b3JfLmdldCgpKSk7CisgIHNlc3Npb25fb3B0aW9u
cy0+b2ZmZXJfZXh0bWFwX2FsbG93X21peGVkID0KKyAgICAgIGNvbmZpZ3VyYXRpb25fLm9mZmVy
X2V4dG1hcF9hbGxvd19taXhlZDsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbjo6R2V0T3B0aW9u
c0ZvclBsYW5CT2ZmZXIoCkBAIC0zOTAxLDggKzQwODYsMTMgQEAgdm9pZCBQZWVyQ29ubmVjdGlv
bjo6R2V0T3B0aW9uc0ZvckFuc3dlcigKICAgfQogCiAgIHNlc3Npb25fb3B0aW9ucy0+cnRjcF9j
bmFtZSA9IHJ0Y3BfY25hbWVfOwotICBzZXNzaW9uX29wdGlvbnMtPmNyeXB0b19vcHRpb25zID0g
ZmFjdG9yeV8tPm9wdGlvbnMoKS5jcnlwdG9fb3B0aW9uczsKKyAgc2Vzc2lvbl9vcHRpb25zLT5j
cnlwdG9fb3B0aW9ucyA9IEdldENyeXB0b09wdGlvbnMoKTsKICAgc2Vzc2lvbl9vcHRpb25zLT5p
c191bmlmaWVkX3BsYW4gPSBJc1VuaWZpZWRQbGFuKCk7CisgIHNlc3Npb25fb3B0aW9ucy0+cG9v
bGVkX2ljZV9jcmVkZW50aWFscyA9CisgICAgICBuZXR3b3JrX3RocmVhZCgpLT5JbnZva2U8c3Rk
Ojp2ZWN0b3I8Y3JpY2tldDo6SWNlUGFyYW1ldGVycz4+KAorICAgICAgICAgIFJUQ19GUk9NX0hF
UkUsCisgICAgICAgICAgcnRjOjpCaW5kKCZjcmlja2V0OjpQb3J0QWxsb2NhdG9yOjpHZXRQb29s
ZWRJY2VDcmVkZW50aWFscywKKyAgICAgICAgICAgICAgICAgICAgcG9ydF9hbGxvY2F0b3JfLmdl
dCgpKSk7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb246OkdldE9wdGlvbnNGb3JQbGFuQkFuc3dl
cigKQEAgLTQwNjksNiArNDI1OSw4IEBAIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBQZWVy
Q29ubmVjdGlvbjo6R2V0RGF0YU1pZCgpIGNvbnN0IHsKICAgICAgIHJldHVybiBydHBfZGF0YV9j
aGFubmVsXy0+Y29udGVudF9uYW1lKCk7CiAgICAgY2FzZSBjcmlja2V0OjpEQ1RfU0NUUDoKICAg
ICAgIHJldHVybiBzY3RwX21pZF87CisgICAgY2FzZSBjcmlja2V0OjpEQ1RfTUVESUFfVFJBTlNQ
T1JUOgorICAgICAgcmV0dXJuIG1lZGlhX3RyYW5zcG9ydF9kYXRhX21pZF87CiAgICAgZGVmYXVs
dDoKICAgICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwogICB9CkBAIC00NDMxLDcgKzQ2MjMsNyBA
QCBydGM6OnNjb3BlZF9yZWZwdHI8RGF0YUNoYW5uZWw+IFBlZXJDb25uZWN0aW9uOjpJbnRlcm5h
bENyZWF0ZURhdGFDaGFubmVsKAogICB9CiAgIEludGVybmFsRGF0YUNoYW5uZWxJbml0IG5ld19j
b25maWcgPQogICAgICAgY29uZmlnID8gKCpjb25maWcpIDogSW50ZXJuYWxEYXRhQ2hhbm5lbElu
aXQoKTsKLSAgaWYgKGRhdGFfY2hhbm5lbF90eXBlKCkgPT0gY3JpY2tldDo6RENUX1NDVFApIHsK
KyAgaWYgKERhdGFDaGFubmVsOjpJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpIHsKICAg
ICBpZiAobmV3X2NvbmZpZy5pZCA8IDApIHsKICAgICAgIHJ0Yzo6U1NMUm9sZSByb2xlOwogICAg
ICAgaWYgKChHZXRTY3RwU3NsUm9sZSgmcm9sZSkpICYmCkBAIC00NDYyLDcgKzQ2NTQsNyBAQCBy
dGM6OnNjb3BlZF9yZWZwdHI8RGF0YUNoYW5uZWw+IFBlZXJDb25uZWN0aW9uOjpJbnRlcm5hbENy
ZWF0ZURhdGFDaGFubmVsKAogICAgIH0KICAgICBydHBfZGF0YV9jaGFubmVsc19bY2hhbm5lbC0+
bGFiZWwoKV0gPSBjaGFubmVsOwogICB9IGVsc2UgewotICAgIFJUQ19EQ0hFQ0soY2hhbm5lbC0+
ZGF0YV9jaGFubmVsX3R5cGUoKSA9PSBjcmlja2V0OjpEQ1RfU0NUUCk7CisgICAgUlRDX0RDSEVD
SyhEYXRhQ2hhbm5lbDo6SXNTY3RwTGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pKTsKICAgICBzY3Rw
X2RhdGFfY2hhbm5lbHNfLnB1c2hfYmFjayhjaGFubmVsKTsKICAgICBjaGFubmVsLT5TaWduYWxD
bG9zZWQuY29ubmVjdCh0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQ
ZWVyQ29ubmVjdGlvbjo6T25TY3RwRGF0YUNoYW5uZWxDbG9zZWQpOwpAQCAtNDU0Miw2ICs0NzM0
LDI3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246Ok9uRGF0YUNoYW5uZWxPcGVuTWVzc2FnZSgKICAg
Tm90ZVVzYWdlRXZlbnQoVXNhZ2VFdmVudDo6REFUQV9BRERFRCk7CiB9CiAKK2Jvb2wgUGVlckNv
bm5lY3Rpb246OkhhbmRsZU9wZW5NZXNzYWdlX3MoCisgICAgY29uc3QgY3JpY2tldDo6UmVjZWl2
ZURhdGFQYXJhbXMmIHBhcmFtcywKKyAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBi
dWZmZXIpIHsKKyAgaWYgKHBhcmFtcy50eXBlID09IGNyaWNrZXQ6OkRNVF9DT05UUk9MICYmIElz
T3Blbk1lc3NhZ2UoYnVmZmVyKSkgeworICAgIC8vIFJlY2VpdmVkIE9QRU4gbWVzc2FnZTsgcGFy
c2UgYW5kIHNpZ25hbCB0aGF0IGEgbmV3IGRhdGEgY2hhbm5lbCBzaG91bGQKKyAgICAvLyBiZSBj
cmVhdGVkLgorICAgIHN0ZDo6c3RyaW5nIGxhYmVsOworICAgIEludGVybmFsRGF0YUNoYW5uZWxJ
bml0IGNvbmZpZzsKKyAgICBjb25maWcuaWQgPSBwYXJhbXMuc3NyYzsKKyAgICBpZiAoIVBhcnNl
RGF0YUNoYW5uZWxPcGVuTWVzc2FnZShidWZmZXIsICZsYWJlbCwgJmNvbmZpZykpIHsKKyAgICAg
IFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byBwYXJzZSB0aGUgT1BFTiBtZXNzYWdl
IGZvciBzc3JjICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcGFyYW1zLnNzcmM7Cisg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY29uZmlnLm9wZW5faGFuZHNoYWtlX3JvbGUg
PSBJbnRlcm5hbERhdGFDaGFubmVsSW5pdDo6a0Fja2VyOworICAgIE9uRGF0YUNoYW5uZWxPcGVu
TWVzc2FnZShsYWJlbCwgY29uZmlnKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1cm4g
ZmFsc2U7Cit9CisKIHJ0Yzo6c2NvcGVkX3JlZnB0cjxSdHBUcmFuc2NlaXZlclByb3h5V2l0aElu
dGVybmFsPFJ0cFRyYW5zY2VpdmVyPj4KIFBlZXJDb25uZWN0aW9uOjpHZXRBdWRpb1RyYW5zY2Vp
dmVyKCkgY29uc3QgewogICAvLyBUaGlzIG1ldGhvZCBvbmx5IHdvcmtzIHdpdGggUGxhbiBCIFNE
UCwgd2hlcmUgdGhlcmUgaXMgYSBzaW5nbGUKQEAgLTQ3NjksMTAgKzQ5ODIsMTAgQEAgdm9pZCBQ
ZWVyQ29ubmVjdGlvbjo6U3RvcFJ0Y0V2ZW50TG9nX3coKSB7CiAgIH0KIH0KIAotY3JpY2tldDo6
QmFzZUNoYW5uZWwqIFBlZXJDb25uZWN0aW9uOjpHZXRDaGFubmVsKAorY3JpY2tldDo6Q2hhbm5l
bEludGVyZmFjZSogUGVlckNvbm5lY3Rpb246OkdldENoYW5uZWwoCiAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGNvbnRlbnRfbmFtZSkgewogICBmb3IgKGF1dG8gdHJhbnNjZWl2ZXIgOiB0cmFuc2Nl
aXZlcnNfKSB7Ci0gICAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5uZWwgPSB0cmFuc2NlaXZl
ci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOworICAgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2Uq
IGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOwogICAgIGlmIChj
aGFubmVsICYmIGNoYW5uZWwtPmNvbnRlbnRfbmFtZSgpID09IGNvbnRlbnRfbmFtZSkgewogICAg
ICAgcmV0dXJuIGNoYW5uZWw7CiAgICAgfQpAQCAtNDc4NSwxOSArNDk5OCwyNSBAQCBjcmlja2V0
OjpCYXNlQ2hhbm5lbCogUGVlckNvbm5lY3Rpb246OkdldENoYW5uZWwoCiB9CiAKIGJvb2wgUGVl
ckNvbm5lY3Rpb246OkdldFNjdHBTc2xSb2xlKHJ0Yzo6U1NMUm9sZSogcm9sZSkgeworICBSVENf
RENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkKCkpOwogICBpZiAoIWxvY2FsX2Rlc2NyaXB0
aW9uKCkgfHwgIXJlbW90ZV9kZXNjcmlwdGlvbigpKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKQog
ICAgICAgICA8PCAiTG9jYWwgYW5kIFJlbW90ZSBkZXNjcmlwdGlvbnMgbXVzdCBiZSBhcHBsaWVk
IHRvIGdldCB0aGUgIgogICAgICAgICAgICAiU1NMIFJvbGUgb2YgdGhlIFNDVFAgdHJhbnNwb3J0
LiI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9Ci0gIGlmICghc2N0cF90cmFuc3BvcnRfKSB7Cisg
IGlmICghc2N0cF90cmFuc3BvcnRfICYmICFtZWRpYV90cmFuc3BvcnRfKSB7CiAgICAgUlRDX0xP
RyhMU19JTkZPKSA8PCAiTm9uLXJlamVjdGVkIFNDVFAgbT0gc2VjdGlvbiBpcyBuZWVkZWQgdG8g
Z2V0IHRoZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiU1NMIFJvbGUgb2YgdGhlIFNDVFAg
dHJhbnNwb3J0LiI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKLSAgYXV0byBkdGxzX3JvbGUg
PSB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0bHNSb2xlKCpzY3RwX21pZF8pOworICBhYnNs
OjpvcHRpb25hbDxydGM6OlNTTFJvbGU+IGR0bHNfcm9sZTsKKyAgaWYgKHNjdHBfbWlkXykgewor
ICAgIGR0bHNfcm9sZSA9IHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0RHRsc1JvbGUoKnNjdHBf
bWlkXyk7CisgIH0gZWxzZSBpZiAoaXNfY2FsbGVyXykgeworICAgIGR0bHNfcm9sZSA9ICppc19j
YWxsZXJfID8gcnRjOjpTU0xfU0VSVkVSIDogcnRjOjpTU0xfQ0xJRU5UOworICB9CiAgIGlmIChk
dGxzX3JvbGUpIHsKICAgICAqcm9sZSA9ICpkdGxzX3JvbGU7CiAgICAgcmV0dXJuIHRydWU7CkBA
IC00ODgzLDcgKzUxMDIsNyBAQCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbjo6UHVzaGRvd25NZWRp
YURlc2NyaXB0aW9uKAogICBmb3IgKGF1dG8gdHJhbnNjZWl2ZXIgOiB0cmFuc2NlaXZlcnNfKSB7
CiAgICAgY29uc3QgQ29udGVudEluZm8qIGNvbnRlbnRfaW5mbyA9CiAgICAgICAgIEZpbmRNZWRp
YVNlY3Rpb25Gb3JUcmFuc2NlaXZlcih0cmFuc2NlaXZlciwgc2Rlc2MpOwotICAgIGNyaWNrZXQ6
OkJhc2VDaGFubmVsKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNoYW5uZWwo
KTsKKyAgICBjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBjaGFubmVsID0gdHJhbnNjZWl2ZXIt
PmludGVybmFsKCktPmNoYW5uZWwoKTsKICAgICBpZiAoIWNoYW5uZWwgfHwgIWNvbnRlbnRfaW5m
byB8fCBjb250ZW50X2luZm8tPnJlamVjdGVkKSB7CiAgICAgICBjb250aW51ZTsKICAgICB9CkBA
IC01MDQzLDExICs1MjYyLDIyIEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OkdldFJlbW90ZVRyYWNr
SWRCeVNzcmModWludDMyX3Qgc3NyYywKIGJvb2wgUGVlckNvbm5lY3Rpb246OlNlbmREYXRhKGNv
bnN0IGNyaWNrZXQ6OlNlbmREYXRhUGFyYW1zJiBwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBwYXlsb2FkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6U2VuZERhdGFSZXN1bHQqIHJlc3VsdCkg
ewotICBpZiAoIXJ0cF9kYXRhX2NoYW5uZWxfICYmICFzY3RwX3RyYW5zcG9ydF8pIHsKLSAgICBS
VENfTE9HKExTX0VSUk9SKSA8PCAiU2VuZERhdGEgY2FsbGVkIHdoZW4gcnRwX2RhdGFfY2hhbm5l
bF8gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgc2N0cF90cmFuc3BvcnRfIGFyZSBO
VUxMLiI7CisgIGlmICghcnRwX2RhdGFfY2hhbm5lbF8gJiYgIXNjdHBfdHJhbnNwb3J0XyAmJiAh
bWVkaWFfdHJhbnNwb3J0XykgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJTZW5kRGF0YSBj
YWxsZWQgd2hlbiBydHBfZGF0YV9jaGFubmVsXywgIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICJzY3RwX3RyYW5zcG9ydF8sIGFuZCBtZWRpYV90cmFuc3BvcnRfIGFyZSBOVUxMLiI7CiAgICAg
cmV0dXJuIGZhbHNlOwogICB9CisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgU2VuZERh
dGFQYXJhbXMgc2VuZF9wYXJhbXM7CisgICAgc2VuZF9wYXJhbXMudHlwZSA9IFRvV2VicnRjRGF0
YU1lc3NhZ2VUeXBlKHBhcmFtcy50eXBlKTsKKyAgICBzZW5kX3BhcmFtcy5vcmRlcmVkID0gcGFy
YW1zLm9yZGVyZWQ7CisgICAgaWYgKHBhcmFtcy5tYXhfcnR4X2NvdW50ID49IDApIHsKKyAgICAg
IHNlbmRfcGFyYW1zLm1heF9ydHhfY291bnQgPSBwYXJhbXMubWF4X3J0eF9jb3VudDsKKyAgICB9
IGVsc2UgaWYgKHBhcmFtcy5tYXhfcnR4X21zID49IDApIHsKKyAgICAgIHNlbmRfcGFyYW1zLm1h
eF9ydHhfbXMgPSBwYXJhbXMubWF4X3J0eF9tczsKKyAgICB9CisgICAgcmV0dXJuIG1lZGlhX3Ry
YW5zcG9ydF8tPlNlbmREYXRhKHBhcmFtcy5zaWQsIHNlbmRfcGFyYW1zLCBwYXlsb2FkKS5vaygp
OworICB9CiAgIHJldHVybiBydHBfZGF0YV9jaGFubmVsXwogICAgICAgICAgICAgID8gcnRwX2Rh
dGFfY2hhbm5lbF8tPlNlbmREYXRhKHBhcmFtcywgcGF5bG9hZCwgcmVzdWx0KQogICAgICAgICAg
ICAgIDogbmV0d29ya190aHJlYWQoKS0+SW52b2tlPGJvb2w+KApAQCAtNTA1NywxMyArNTI4Nywy
MyBAQCBib29sIFBlZXJDb25uZWN0aW9uOjpTZW5kRGF0YShjb25zdCBjcmlja2V0OjpTZW5kRGF0
YVBhcmFtcyYgcGFyYW1zLAogfQogCiBib29sIFBlZXJDb25uZWN0aW9uOjpDb25uZWN0RGF0YUNo
YW5uZWwoRGF0YUNoYW5uZWwqIHdlYnJ0Y19kYXRhX2NoYW5uZWwpIHsKLSAgaWYgKCFydHBfZGF0
YV9jaGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRfKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKHNp
Z25hbGluZ190aHJlYWQoKSk7CisgIGlmICghcnRwX2RhdGFfY2hhbm5lbF8gJiYgIXNjdHBfdHJh
bnNwb3J0XyAmJiAhbWVkaWFfdHJhbnNwb3J0XykgewogICAgIC8vIERvbid0IGxvZyBhbiBlcnJv
ciBoZXJlLCBiZWNhdXNlIERhdGFDaGFubmVscyBhcmUgZXhwZWN0ZWQgdG8gY2FsbAogICAgIC8v
IENvbm5lY3REYXRhQ2hhbm5lbCBpbiB0aGlzIHN0YXRlLiBJdCdzIHRoZSBvbmx5IHdheSB0byBp
bml0aWFsbHkgdGVsbAogICAgIC8vIHdoZXRoZXIgb3Igbm90IHRoZSB1bmRlcmx5aW5nIHRyYW5z
cG9ydCBpcyByZWFkeS4KICAgICByZXR1cm4gZmFsc2U7CiAgIH0KLSAgaWYgKHJ0cF9kYXRhX2No
YW5uZWxfKSB7CisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgU2lnbmFsTWVkaWFUcmFu
c3BvcnRXcml0YWJsZV9zLmNvbm5lY3Qod2VicnRjX2RhdGFfY2hhbm5lbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRGF0YUNoYW5uZWw6Ok9uQ2hhbm5lbFJl
YWR5KTsKKyAgICBTaWduYWxNZWRpYVRyYW5zcG9ydFJlY2VpdmVkRGF0YV9zLmNvbm5lY3Qod2Vi
cnRjX2RhdGFfY2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJkRhdGFDaGFubmVsOjpPbkRhdGFSZWNlaXZlZCk7CisgICAgU2lnbmFsTWVkaWFU
cmFuc3BvcnRDaGFubmVsQ2xvc2luZ19zLmNvbm5lY3QoCisgICAgICAgIHdlYnJ0Y19kYXRhX2No
YW5uZWwsICZEYXRhQ2hhbm5lbDo6T25DbG9zaW5nUHJvY2VkdXJlU3RhcnRlZFJlbW90ZWx5KTsK
KyAgICBTaWduYWxNZWRpYVRyYW5zcG9ydENoYW5uZWxDbG9zZWRfcy5jb25uZWN0KAorICAgICAg
ICB3ZWJydGNfZGF0YV9jaGFubmVsLCAmRGF0YUNoYW5uZWw6Ok9uQ2xvc2luZ1Byb2NlZHVyZUNv
bXBsZXRlKTsKKyAgfSBlbHNlIGlmIChydHBfZGF0YV9jaGFubmVsXykgewogICAgIHJ0cF9kYXRh
X2NoYW5uZWxfLT5TaWduYWxSZWFkeVRvU2VuZERhdGEuY29ubmVjdCgKICAgICAgICAgd2VicnRj
X2RhdGFfY2hhbm5lbCwgJkRhdGFDaGFubmVsOjpPbkNoYW5uZWxSZWFkeSk7CiAgICAgcnRwX2Rh
dGFfY2hhbm5lbF8tPlNpZ25hbERhdGFSZWNlaXZlZC5jb25uZWN0KHdlYnJ0Y19kYXRhX2NoYW5u
ZWwsCkBAIC01MDgyLDEzICs1MzIyLDE5IEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OkNvbm5lY3RE
YXRhQ2hhbm5lbChEYXRhQ2hhbm5lbCogd2VicnRjX2RhdGFfY2hhbm5lbCkgewogfQogCiB2b2lk
IFBlZXJDb25uZWN0aW9uOjpEaXNjb25uZWN0RGF0YUNoYW5uZWwoRGF0YUNoYW5uZWwqIHdlYnJ0
Y19kYXRhX2NoYW5uZWwpIHsKLSAgaWYgKCFydHBfZGF0YV9jaGFubmVsXyAmJiAhc2N0cF90cmFu
c3BvcnRfKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWQoKSk7CisgIGlm
ICghcnRwX2RhdGFfY2hhbm5lbF8gJiYgIXNjdHBfdHJhbnNwb3J0XyAmJiAhbWVkaWFfdHJhbnNw
b3J0XykgewogICAgIFJUQ19MT0coTFNfRVJST1IpCiAgICAgICAgIDw8ICJEaXNjb25uZWN0RGF0
YUNoYW5uZWwgY2FsbGVkIHdoZW4gcnRwX2RhdGFfY2hhbm5lbF8gYW5kICIKICAgICAgICAgICAg
InNjdHBfdHJhbnNwb3J0XyBhcmUgTlVMTC4iOwogICAgIHJldHVybjsKICAgfQotICBpZiAocnRw
X2RhdGFfY2hhbm5lbF8pIHsKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBTaWduYWxN
ZWRpYVRyYW5zcG9ydFdyaXRhYmxlX3MuZGlzY29ubmVjdCh3ZWJydGNfZGF0YV9jaGFubmVsKTsK
KyAgICBTaWduYWxNZWRpYVRyYW5zcG9ydFJlY2VpdmVkRGF0YV9zLmRpc2Nvbm5lY3Qod2VicnRj
X2RhdGFfY2hhbm5lbCk7CisgICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRDaGFubmVsQ2xvc2luZ19z
LmRpc2Nvbm5lY3Qod2VicnRjX2RhdGFfY2hhbm5lbCk7CisgICAgU2lnbmFsTWVkaWFUcmFuc3Bv
cnRDaGFubmVsQ2xvc2VkX3MuZGlzY29ubmVjdCh3ZWJydGNfZGF0YV9jaGFubmVsKTsKKyAgfSBl
bHNlIGlmIChydHBfZGF0YV9jaGFubmVsXykgewogICAgIHJ0cF9kYXRhX2NoYW5uZWxfLT5TaWdu
YWxSZWFkeVRvU2VuZERhdGEuZGlzY29ubmVjdCh3ZWJydGNfZGF0YV9jaGFubmVsKTsKICAgICBy
dHBfZGF0YV9jaGFubmVsXy0+U2lnbmFsRGF0YVJlY2VpdmVkLmRpc2Nvbm5lY3Qod2VicnRjX2Rh
dGFfY2hhbm5lbCk7CiAgIH0gZWxzZSB7CkBAIC01MTAwLDYgKzUzNDYsMTAgQEAgdm9pZCBQZWVy
Q29ubmVjdGlvbjo6RGlzY29ubmVjdERhdGFDaGFubmVsKERhdGFDaGFubmVsKiB3ZWJydGNfZGF0
YV9jaGFubmVsKSB7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb246OkFkZFNjdHBEYXRhU3RyZWFt
KGludCBzaWQpIHsKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICAvLyBOby1vcC4gIE1l
ZGlhIHRyYW5zcG9ydCBkb2VzIG5vdCBuZWVkIHRvIGFkZCBzdHJlYW1zLgorICAgIHJldHVybjsK
KyAgfQogICBpZiAoIXNjdHBfdHJhbnNwb3J0XykgewogICAgIFJUQ19MT0coTFNfRVJST1IpCiAg
ICAgICAgIDw8ICJBZGRTY3RwRGF0YVN0cmVhbSBjYWxsZWQgd2hlbiBzY3RwX3RyYW5zcG9ydF8g
aXMgTlVMTC4iOwpAQCAtNTExMSw2ICs1MzYxLDEwIEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkFk
ZFNjdHBEYXRhU3RyZWFtKGludCBzaWQpIHsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbjo6UmVt
b3ZlU2N0cERhdGFTdHJlYW0oaW50IHNpZCkgeworICBpZiAobWVkaWFfdHJhbnNwb3J0Xykgewor
ICAgIG1lZGlhX3RyYW5zcG9ydF8tPkNsb3NlQ2hhbm5lbChzaWQpOworICAgIHJldHVybjsKKyAg
fQogICBpZiAoIXNjdHBfdHJhbnNwb3J0XykgewogICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJS
ZW1vdmVTY3RwRGF0YVN0cmVhbSBjYWxsZWQgd2hlbiBzY3RwX3RyYW5zcG9ydF8gaXMgIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICJOVUxMLiI7CkBAIC01MTIyLDEwICs1Mzc2LDQzIEBAIHZv
aWQgUGVlckNvbm5lY3Rpb246OlJlbW92ZVNjdHBEYXRhU3RyZWFtKGludCBzaWQpIHsKIH0KIAog
Ym9vbCBQZWVyQ29ubmVjdGlvbjo6UmVhZHlUb1NlbmREYXRhKCkgY29uc3QgeworICBSVENfRENI
RUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkKCkpOwogICByZXR1cm4gKHJ0cF9kYXRhX2NoYW5u
ZWxfICYmIHJ0cF9kYXRhX2NoYW5uZWxfLT5yZWFkeV90b19zZW5kX2RhdGEoKSkgfHwKKyAgICAg
ICAgIChtZWRpYV90cmFuc3BvcnRfICYmIG1lZGlhX3RyYW5zcG9ydF9yZWFkeV90b19zZW5kX2Rh
dGFfKSB8fAogICAgICAgICAgc2N0cF9yZWFkeV90b19zZW5kX2RhdGFfOwogfQogCit2b2lkIFBl
ZXJDb25uZWN0aW9uOjpPbkRhdGFSZWNlaXZlZChpbnQgY2hhbm5lbF9pZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFNZXNzYWdlVHlwZSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYg
YnVmZmVyKSB7CisgIGNyaWNrZXQ6OlJlY2VpdmVEYXRhUGFyYW1zIHBhcmFtczsKKyAgcGFyYW1z
LnNpZCA9IGNoYW5uZWxfaWQ7CisgIHBhcmFtcy50eXBlID0gVG9Dcmlja2V0RGF0YU1lc3NhZ2VU
eXBlKHR5cGUpOworICBtZWRpYV90cmFuc3BvcnRfaW52b2tlcl8tPkFzeW5jSW52b2tlPHZvaWQ+
KAorICAgICAgUlRDX0ZST01fSEVSRSwgc2lnbmFsaW5nX3RocmVhZCgpLCBbdGhpcywgcGFyYW1z
LCBidWZmZXJdIHsKKyAgICAgICAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZCgp
KTsKKyAgICAgICAgaWYgKCFIYW5kbGVPcGVuTWVzc2FnZV9zKHBhcmFtcywgYnVmZmVyKSkgewor
ICAgICAgICAgIFNpZ25hbE1lZGlhVHJhbnNwb3J0UmVjZWl2ZWREYXRhX3MocGFyYW1zLCBidWZm
ZXIpOworICAgICAgICB9CisgICAgICB9KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6T25D
aGFubmVsQ2xvc2luZyhpbnQgY2hhbm5lbF9pZCkgeworICBtZWRpYV90cmFuc3BvcnRfaW52b2tl
cl8tPkFzeW5jSW52b2tlPHZvaWQ+KAorICAgICAgUlRDX0ZST01fSEVSRSwgc2lnbmFsaW5nX3Ro
cmVhZCgpLCBbdGhpcywgY2hhbm5lbF9pZF0geworICAgICAgICBSVENfRENIRUNLX1JVTl9PTihz
aWduYWxpbmdfdGhyZWFkKCkpOworICAgICAgICBTaWduYWxNZWRpYVRyYW5zcG9ydENoYW5uZWxD
bG9zaW5nX3MoY2hhbm5lbF9pZCk7CisgICAgICB9KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlv
bjo6T25DaGFubmVsQ2xvc2VkKGludCBjaGFubmVsX2lkKSB7CisgIG1lZGlhX3RyYW5zcG9ydF9p
bnZva2VyXy0+QXN5bmNJbnZva2U8dm9pZD4oCisgICAgICBSVENfRlJPTV9IRVJFLCBzaWduYWxp
bmdfdGhyZWFkKCksIFt0aGlzLCBjaGFubmVsX2lkXSB7CisgICAgICAgIFJUQ19EQ0hFQ0tfUlVO
X09OKHNpZ25hbGluZ190aHJlYWQoKSk7CisgICAgICAgIFNpZ25hbE1lZGlhVHJhbnNwb3J0Q2hh
bm5lbENsb3NlZF9zKGNoYW5uZWxfaWQpOworICAgICAgfSk7Cit9CisKIGFic2w6Om9wdGlvbmFs
PHN0ZDo6c3RyaW5nPiBQZWVyQ29ubmVjdGlvbjo6c2N0cF90cmFuc3BvcnRfbmFtZSgpIGNvbnN0
IHsKICAgaWYgKHNjdHBfbWlkXyAmJiB0cmFuc3BvcnRfY29udHJvbGxlcl8pIHsKICAgICBhdXRv
IGR0bHNfdHJhbnNwb3J0ID0gdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXREdGxzVHJhbnNwb3J0
KCpzY3RwX21pZF8pOwpAQCAtNTE1MCw3ICs1NDM3LDcgQEAgc3RkOjptYXA8c3RkOjpzdHJpbmcs
IHN0ZDo6c3RyaW5nPiBQZWVyQ29ubmVjdGlvbjo6R2V0VHJhbnNwb3J0TmFtZXNCeU1pZCgpCiAg
ICAgY29uc3QgewogICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IHRyYW5zcG9y
dF9uYW1lc19ieV9taWQ7CiAgIGZvciAoYXV0byB0cmFuc2NlaXZlciA6IHRyYW5zY2VpdmVyc18p
IHsKLSAgICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IHRyYW5zY2VpdmVyLT5pbnRl
cm5hbCgpLT5jaGFubmVsKCk7CisgICAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5l
bCA9IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCk7CiAgICAgaWYgKGNoYW5uZWwp
IHsKICAgICAgIHRyYW5zcG9ydF9uYW1lc19ieV9taWRbY2hhbm5lbC0+Y29udGVudF9uYW1lKCld
ID0KICAgICAgICAgICBjaGFubmVsLT50cmFuc3BvcnRfbmFtZSgpOwpAQCAtNTMyNyw3ICs1NjE0
LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6T25UcmFuc3BvcnRDb250cm9sbGVyRHRsc0hhbmRz
aGFrZUVycm9yKAogCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpFbmFibGVTZW5kaW5nKCkgewogICBm
b3IgKGF1dG8gdHJhbnNjZWl2ZXIgOiB0cmFuc2NlaXZlcnNfKSB7Ci0gICAgY3JpY2tldDo6QmFz
ZUNoYW5uZWwqIGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOwor
ICAgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50
ZXJuYWwoKS0+Y2hhbm5lbCgpOwogICAgIGlmIChjaGFubmVsICYmICFjaGFubmVsLT5lbmFibGVk
KCkpIHsKICAgICAgIGNoYW5uZWwtPkVuYWJsZSh0cnVlKTsKICAgICB9CkBAIC01NDg2LDcgKzU3
NzMsNyBAQCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlQ2hhbm5lbHMoY29uc3QgU2Vz
c2lvbkRlc2NyaXB0aW9uJiBkZXNjKSB7CiAKICAgY29uc3QgY3JpY2tldDo6Q29udGVudEluZm8q
IGRhdGEgPSBjcmlja2V0OjpHZXRGaXJzdERhdGFDb250ZW50KCZkZXNjKTsKICAgaWYgKGRhdGFf
Y2hhbm5lbF90eXBlXyAhPSBjcmlja2V0OjpEQ1RfTk9ORSAmJiBkYXRhICYmICFkYXRhLT5yZWpl
Y3RlZCAmJgotICAgICAgIXJ0cF9kYXRhX2NoYW5uZWxfICYmICFzY3RwX3RyYW5zcG9ydF8pIHsK
KyAgICAgICFydHBfZGF0YV9jaGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRfICYmICFtZWRpYV90
cmFuc3BvcnRfKSB7CiAgICAgaWYgKCFDcmVhdGVEYXRhQ2hhbm5lbChkYXRhLT5uYW1lKSkgewog
ICAgICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGRhdGEgY2hhbm5l
bC4iKTsKQEAgLTU0OTksMTMgKzU3ODYsMTYgQEAgUlRDRXJyb3IgUGVlckNvbm5lY3Rpb246OkNy
ZWF0ZUNoYW5uZWxzKGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiYgZGVzYykgewogLy8gVE9ETyhz
dGV2ZWFudG9uKTogUGVyaGFwcyB0aGlzIHNob3VsZCBiZSBtYW5hZ2VkIGJ5IHRoZSBSdHBUcmFu
c2NlaXZlci4KIGNyaWNrZXQ6OlZvaWNlQ2hhbm5lbCogUGVlckNvbm5lY3Rpb246OkNyZWF0ZVZv
aWNlQ2hhbm5lbCgKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlkKSB7Ci0gIFJ0cFRyYW5zcG9y
dEludGVybmFsKiBydHBfdHJhbnNwb3J0ID0KLSAgICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+
R2V0UnRwVHJhbnNwb3J0KG1pZCk7Ci0gIFJUQ19EQ0hFQ0socnRwX3RyYW5zcG9ydCk7CisgIFJ0
cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0ID0gR2V0UnRwVHJhbnNwb3J0KG1pZCk7
CisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQgPSBudWxscHRyOwor
ICBpZiAoY29uZmlndXJhdGlvbl8udXNlX21lZGlhX3RyYW5zcG9ydCkgeworICAgIG1lZGlhX3Ry
YW5zcG9ydCA9IEdldE1lZGlhVHJhbnNwb3J0KG1pZCk7CisgIH0KKwogICBjcmlja2V0OjpWb2lj
ZUNoYW5uZWwqIHZvaWNlX2NoYW5uZWwgPSBjaGFubmVsX21hbmFnZXIoKS0+Q3JlYXRlVm9pY2VD
aGFubmVsKAotICAgICAgY2FsbF8uZ2V0KCksIGNvbmZpZ3VyYXRpb25fLm1lZGlhX2NvbmZpZywg
cnRwX3RyYW5zcG9ydCwKLSAgICAgIHNpZ25hbGluZ190aHJlYWQoKSwgbWlkLCBTcnRwUmVxdWly
ZWQoKSwKLSAgICAgIGZhY3RvcnlfLT5vcHRpb25zKCkuY3J5cHRvX29wdGlvbnMsIGF1ZGlvX29w
dGlvbnNfKTsKKyAgICAgIGNhbGxfLmdldCgpLCBjb25maWd1cmF0aW9uXy5tZWRpYV9jb25maWcs
IHJ0cF90cmFuc3BvcnQsIG1lZGlhX3RyYW5zcG9ydCwKKyAgICAgIHNpZ25hbGluZ190aHJlYWQo
KSwgbWlkLCBTcnRwUmVxdWlyZWQoKSwgR2V0Q3J5cHRvT3B0aW9ucygpLAorICAgICAgYXVkaW9f
b3B0aW9uc18pOwogICBpZiAoIXZvaWNlX2NoYW5uZWwpIHsKICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgfQpAQCAtNTUyMSwxMyArNTgxMSwxMyBAQCBjcmlja2V0OjpWb2ljZUNoYW5uZWwqIFBlZXJD
b25uZWN0aW9uOjpDcmVhdGVWb2ljZUNoYW5uZWwoCiAvLyBUT0RPKHN0ZXZlYW50b24pOiBQZXJo
YXBzIHRoaXMgc2hvdWxkIGJlIG1hbmFnZWQgYnkgdGhlIFJ0cFRyYW5zY2VpdmVyLgogY3JpY2tl
dDo6VmlkZW9DaGFubmVsKiBQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlVmlkZW9DaGFubmVsKAogICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpIHsKLSAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90
cmFuc3BvcnQgPQotICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRSdHBUcmFuc3BvcnQo
bWlkKTsKLSAgUlRDX0RDSEVDSyhydHBfdHJhbnNwb3J0KTsKKyAgUnRwVHJhbnNwb3J0SW50ZXJu
YWwqIHJ0cF90cmFuc3BvcnQgPSBHZXRSdHBUcmFuc3BvcnQobWlkKTsKKworICAvLyBUT0RPKHN1
a2hhbm92KTogUHJvcGFnYXRlIG1lZGlhX3RyYW5zcG9ydCB0byB2aWRlbyBjaGFubmVsLgogICBj
cmlja2V0OjpWaWRlb0NoYW5uZWwqIHZpZGVvX2NoYW5uZWwgPSBjaGFubmVsX21hbmFnZXIoKS0+
Q3JlYXRlVmlkZW9DaGFubmVsKAogICAgICAgY2FsbF8uZ2V0KCksIGNvbmZpZ3VyYXRpb25fLm1l
ZGlhX2NvbmZpZywgcnRwX3RyYW5zcG9ydCwKLSAgICAgIHNpZ25hbGluZ190aHJlYWQoKSwgbWlk
LCBTcnRwUmVxdWlyZWQoKSwKLSAgICAgIGZhY3RvcnlfLT5vcHRpb25zKCkuY3J5cHRvX29wdGlv
bnMsIHZpZGVvX29wdGlvbnNfKTsKKyAgICAgIHNpZ25hbGluZ190aHJlYWQoKSwgbWlkLCBTcnRw
UmVxdWlyZWQoKSwgR2V0Q3J5cHRvT3B0aW9ucygpLAorICAgICAgdmlkZW9fb3B0aW9uc18pOwog
ICBpZiAoIXZpZGVvX2NoYW5uZWwpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQpAQCAtNTU0
MSwzNyArNTgzMSw0OSBAQCBjcmlja2V0OjpWaWRlb0NoYW5uZWwqIFBlZXJDb25uZWN0aW9uOjpD
cmVhdGVWaWRlb0NoYW5uZWwoCiB9CiAKIGJvb2wgUGVlckNvbm5lY3Rpb246OkNyZWF0ZURhdGFD
aGFubmVsKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpIHsKLSAgYm9vbCBzY3RwID0gKGRhdGFfY2hh
bm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfU0NUUCk7Ci0gIGlmIChzY3RwKSB7Ci0gICAgaWYg
KCFzY3RwX2ZhY3RvcnlfKSB7Ci0gICAgICBSVENfTE9HKExTX0VSUk9SKQotICAgICAgICAgIDw8
ICJUcnlpbmcgdG8gY3JlYXRlIFNDVFAgdHJhbnNwb3J0LCBidXQgZGlkbid0IGNvbXBpbGUgd2l0
aCAiCi0gICAgICAgICAgICAgIlNDVFAgc3VwcG9ydCAoSEFWRV9TQ1RQKSI7Ci0gICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmICghbmV0d29ya190aHJlYWQoKS0+SW52b2tlPGJvb2w+
KAotICAgICAgICAgICAgUlRDX0ZST01fSEVSRSwKLSAgICAgICAgICAgIHJ0Yzo6QmluZCgmUGVl
ckNvbm5lY3Rpb246OkNyZWF0ZVNjdHBUcmFuc3BvcnRfbiwgdGhpcywgbWlkKSkpIHsKLSAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjaGFubmVsIDogc2N0
cF9kYXRhX2NoYW5uZWxzXykgewotICAgICAgY2hhbm5lbC0+T25UcmFuc3BvcnRDaGFubmVsQ3Jl
YXRlZCgpOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICBSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRw
X3RyYW5zcG9ydCA9Ci0gICAgICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0UnRwVHJhbnNw
b3J0KG1pZCk7Ci0gICAgUlRDX0RDSEVDSyhydHBfdHJhbnNwb3J0KTsKLSAgICBydHBfZGF0YV9j
aGFubmVsXyA9IGNoYW5uZWxfbWFuYWdlcigpLT5DcmVhdGVSdHBEYXRhQ2hhbm5lbCgKLSAgICAg
ICAgY29uZmlndXJhdGlvbl8ubWVkaWFfY29uZmlnLCBydHBfdHJhbnNwb3J0LCBzaWduYWxpbmdf
dGhyZWFkKCksIG1pZCwKLSAgICAgICAgU3J0cFJlcXVpcmVkKCksIGZhY3RvcnlfLT5vcHRpb25z
KCkuY3J5cHRvX29wdGlvbnMpOwotICAgIGlmICghcnRwX2RhdGFfY2hhbm5lbF8pIHsKKyAgc3dp
dGNoIChkYXRhX2NoYW5uZWxfdHlwZV8pIHsKKyAgICBjYXNlIGNyaWNrZXQ6OkRDVF9NRURJQV9U
UkFOU1BPUlQ6CisgICAgICBpZiAobmV0d29ya190aHJlYWQoKS0+SW52b2tlPGJvb2w+KAorICAg
ICAgICAgICAgICBSVENfRlJPTV9IRVJFLAorICAgICAgICAgICAgICBydGM6OkJpbmQoJlBlZXJD
b25uZWN0aW9uOjpTZXR1cE1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzX24sCisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLCBtaWQpKSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGNoYW5uZWwgOiBzY3RwX2RhdGFfY2hhbm5lbHNfKSB7CisgICAgICAgICAgY2hhbm5lbC0+T25U
cmFuc3BvcnRDaGFubmVsQ3JlYXRlZCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgfQogICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBydHBfZGF0YV9jaGFu
bmVsXy0+U2lnbmFsRHRsc1NydHBTZXR1cEZhaWx1cmUuY29ubmVjdCgKLSAgICAgICAgdGhpcywg
JlBlZXJDb25uZWN0aW9uOjpPbkR0bHNTcnRwU2V0dXBGYWlsdXJlKTsKLSAgICBydHBfZGF0YV9j
aGFubmVsXy0+U2lnbmFsU2VudFBhY2tldC5jb25uZWN0KAotICAgICAgICB0aGlzLCAmUGVlckNv
bm5lY3Rpb246Ok9uU2VudFBhY2tldF93KTsKLSAgICBydHBfZGF0YV9jaGFubmVsXy0+U2V0UnRw
VHJhbnNwb3J0KHJ0cF90cmFuc3BvcnQpOworICAgIGNhc2UgY3JpY2tldDo6RENUX1NDVFA6Cisg
ICAgICBpZiAoIXNjdHBfZmFjdG9yeV8pIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikKKyAg
ICAgICAgICAgIDw8ICJUcnlpbmcgdG8gY3JlYXRlIFNDVFAgdHJhbnNwb3J0LCBidXQgZGlkbid0
IGNvbXBpbGUgd2l0aCAiCisgICAgICAgICAgICAgICAiU0NUUCBzdXBwb3J0IChIQVZFX1NDVFAp
IjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgaWYgKCFuZXR3b3JrX3Ro
cmVhZCgpLT5JbnZva2U8Ym9vbD4oCisgICAgICAgICAgICAgIFJUQ19GUk9NX0hFUkUsCisgICAg
ICAgICAgICAgIHJ0Yzo6QmluZCgmUGVlckNvbm5lY3Rpb246OkNyZWF0ZVNjdHBUcmFuc3BvcnRf
biwgdGhpcywgbWlkKSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAg
Zm9yIChjb25zdCBhdXRvJiBjaGFubmVsIDogc2N0cF9kYXRhX2NoYW5uZWxzXykgeworICAgICAg
ICBjaGFubmVsLT5PblRyYW5zcG9ydENoYW5uZWxDcmVhdGVkKCk7CisgICAgICB9CisgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIGNyaWNrZXQ6OkRDVF9SVFA6CisgICAgZGVmYXVsdDoKKyAg
ICAgIFJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0ID0gR2V0UnRwVHJhbnNwb3J0
KG1pZCk7CisgICAgICBydHBfZGF0YV9jaGFubmVsXyA9IGNoYW5uZWxfbWFuYWdlcigpLT5DcmVh
dGVSdHBEYXRhQ2hhbm5lbCgKKyAgICAgICAgICBjb25maWd1cmF0aW9uXy5tZWRpYV9jb25maWcs
IHJ0cF90cmFuc3BvcnQsIHNpZ25hbGluZ190aHJlYWQoKSwgbWlkLAorICAgICAgICAgIFNydHBS
ZXF1aXJlZCgpLCBHZXRDcnlwdG9PcHRpb25zKCkpOworICAgICAgaWYgKCFydHBfZGF0YV9jaGFu
bmVsXykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBydHBfZGF0YV9j
aGFubmVsXy0+U2lnbmFsRHRsc1NydHBTZXR1cEZhaWx1cmUuY29ubmVjdCgKKyAgICAgICAgICB0
aGlzLCAmUGVlckNvbm5lY3Rpb246Ok9uRHRsc1NydHBTZXR1cEZhaWx1cmUpOworICAgICAgcnRw
X2RhdGFfY2hhbm5lbF8tPlNpZ25hbFNlbnRQYWNrZXQuY29ubmVjdCgKKyAgICAgICAgICB0aGlz
LCAmUGVlckNvbm5lY3Rpb246Ok9uU2VudFBhY2tldF93KTsKKyAgICAgIHJ0cF9kYXRhX2NoYW5u
ZWxfLT5TZXRSdHBUcmFuc3BvcnQocnRwX3RyYW5zcG9ydCk7CisgICAgICByZXR1cm4gdHJ1ZTsK
ICAgfQogCiAgIHJldHVybiB0cnVlOwpAQCAtNTY2MSwyMiArNTk2Myw4IEBAIHZvaWQgUGVlckNv
bm5lY3Rpb246Ok9uU2N0cFRyYW5zcG9ydERhdGFSZWNlaXZlZF9uKAogdm9pZCBQZWVyQ29ubmVj
dGlvbjo6T25TY3RwVHJhbnNwb3J0RGF0YVJlY2VpdmVkX3MoCiAgICAgY29uc3QgY3JpY2tldDo6
UmVjZWl2ZURhdGFQYXJhbXMmIHBhcmFtcywKICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVm
ZmVyJiBwYXlsb2FkKSB7Ci0gIFJUQ19EQ0hFQ0soc2lnbmFsaW5nX3RocmVhZCgpLT5Jc0N1cnJl
bnQoKSk7Ci0gIGlmIChwYXJhbXMudHlwZSA9PSBjcmlja2V0OjpETVRfQ09OVFJPTCAmJiBJc09w
ZW5NZXNzYWdlKHBheWxvYWQpKSB7Ci0gICAgLy8gUmVjZWl2ZWQgT1BFTiBtZXNzYWdlOyBwYXJz
ZSBhbmQgc2lnbmFsIHRoYXQgYSBuZXcgZGF0YSBjaGFubmVsIHNob3VsZAotICAgIC8vIGJlIGNy
ZWF0ZWQuCi0gICAgc3RkOjpzdHJpbmcgbGFiZWw7Ci0gICAgSW50ZXJuYWxEYXRhQ2hhbm5lbElu
aXQgY29uZmlnOwotICAgIGNvbmZpZy5pZCA9IHBhcmFtcy5zc3JjOwotICAgIGlmICghUGFyc2VE
YXRhQ2hhbm5lbE9wZW5NZXNzYWdlKHBheWxvYWQsICZsYWJlbCwgJmNvbmZpZykpIHsKLSAgICAg
IFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byBwYXJzZSB0aGUgT1BFTiBtZXNzYWdl
IGZvciBzaWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBwYXJhbXMuc3NyYzsKLSAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29uZmlnLm9wZW5faGFuZHNoYWtlX3JvbGUgPSBJbnRl
cm5hbERhdGFDaGFubmVsSW5pdDo6a0Fja2VyOwotICAgIE9uRGF0YUNoYW5uZWxPcGVuTWVzc2Fn
ZShsYWJlbCwgY29uZmlnKTsKLSAgfSBlbHNlIHsKLSAgICAvLyBPdGhlcndpc2UganVzdCBmb3J3
YXJkIHRoZSBzaWduYWwuCisgIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWQoKSk7
CisgIGlmICghSGFuZGxlT3Blbk1lc3NhZ2VfcyhwYXJhbXMsIHBheWxvYWQpKSB7CiAgICAgU2ln
bmFsU2N0cERhdGFSZWNlaXZlZChwYXJhbXMsIHBheWxvYWQpOwogICB9CiB9CkBAIC01Njk5LDYg
KzU5ODcsNDkgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6T25TY3RwQ2xvc2luZ1Byb2NlZHVyZUNv
bXBsZXRlX24oaW50IHNpZCkgewogICAgICAgICAgICAgICAgICZTaWduYWxTY3RwQ2xvc2luZ1By
b2NlZHVyZUNvbXBsZXRlLCBzaWQpKTsKIH0KIAorYm9vbCBQZWVyQ29ubmVjdGlvbjo6U2V0dXBN
ZWRpYVRyYW5zcG9ydEZvckRhdGFDaGFubmVsc19uKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBt
aWQpIHsKKyAgbWVkaWFfdHJhbnNwb3J0XyA9IHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0TWVk
aWFUcmFuc3BvcnQobWlkKTsKKyAgaWYgKCFtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgUlRDX0xP
RyhMU19FUlJPUikgPDwgIk1lZGlhIHRyYW5zcG9ydCBpcyBub3QgYXZhaWxhYmxlIGZvciBkYXRh
IGNoYW5uZWxzIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBtZWRpYV90cmFuc3BvcnRf
aW52b2tlcl8gPSBhYnNsOjptYWtlX3VuaXF1ZTxydGM6OkFzeW5jSW52b2tlcj4oKTsKKyAgbWVk
aWFfdHJhbnNwb3J0Xy0+U2V0RGF0YVNpbmsodGhpcyk7CisgIG1lZGlhX3RyYW5zcG9ydF9kYXRh
X21pZF8gPSBtaWQ7CisgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsTWVkaWFUcmFuc3Bv
cnRTdGF0ZUNoYW5nZWQuY29ubmVjdCgKKyAgICAgIHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6T25N
ZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZF9uKTsKKyAgLy8gQ2hlY2sgdGhlIGluaXRpYWwgc3Rh
dGUgcmlnaHQgYXdheSwgaW4gY2FzZSB0cmFuc3BvcnQgaXMgYWxyZWFkeSB3cml0YWJsZS4KKyAg
T25NZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZF9uKCk7CisgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uOjpUZWFyZG93bk1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxz
X24oKSB7CisgIGlmICghbWVkaWFfdHJhbnNwb3J0XykgeworICAgIHJldHVybjsKKyAgfQorICB0
cmFuc3BvcnRfY29udHJvbGxlcl8tPlNpZ25hbE1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkLmRp
c2Nvbm5lY3QodGhpcyk7CisgIG1lZGlhX3RyYW5zcG9ydF9kYXRhX21pZF8ucmVzZXQoKTsKKyAg
bWVkaWFfdHJhbnNwb3J0Xy0+U2V0RGF0YVNpbmsobnVsbHB0cik7CisgIG1lZGlhX3RyYW5zcG9y
dF9pbnZva2VyXyA9IG51bGxwdHI7CisgIG1lZGlhX3RyYW5zcG9ydF8gPSBudWxscHRyOworfQor
Cit2b2lkIFBlZXJDb25uZWN0aW9uOjpPbk1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkX24oKSB7
CisgIGlmICghbWVkaWFfdHJhbnNwb3J0X2RhdGFfbWlkXyB8fAorICAgICAgdHJhbnNwb3J0X2Nv
bnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydFN0YXRlKAorICAgICAgICAgICptZWRpYV90cmFu
c3BvcnRfZGF0YV9taWRfKSAhPSBNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpIHsKKyAg
ICByZXR1cm47CisgIH0KKyAgbWVkaWFfdHJhbnNwb3J0X2ludm9rZXJfLT5Bc3luY0ludm9rZTx2
b2lkPigKKyAgICAgIFJUQ19GUk9NX0hFUkUsIHNpZ25hbGluZ190aHJlYWQoKSwgW3RoaXNdIHsK
KyAgICAgICAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZCgpKTsKKyAgICAgICAg
bWVkaWFfdHJhbnNwb3J0X3JlYWR5X3RvX3NlbmRfZGF0YV8gPSB0cnVlOworICAgICAgICBTaWdu
YWxNZWRpYVRyYW5zcG9ydFdyaXRhYmxlX3MobWVkaWFfdHJhbnNwb3J0X3JlYWR5X3RvX3NlbmRf
ZGF0YV8pOworICAgICAgfSk7Cit9CisKIC8vIFJldHVybnMgZmFsc2UgaWYgYnVuZGxlIGlzIGVu
YWJsZWQgYW5kIHJ0Y3BfbXV4IGlzIGRpc2FibGVkLgogYm9vbCBQZWVyQ29ubmVjdGlvbjo6VmFs
aWRhdGVCdW5kbGVTZXR0aW5ncyhjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MpIHsKICAg
Ym9vbCBidW5kbGVfZW5hYmxlZCA9IGRlc2MtPkhhc0dyb3VwKGNyaWNrZXQ6OkdST1VQX1RZUEVf
QlVORExFKTsKQEAgLTYxNjksNyArNjUwMCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246Ok9uU2Vu
dFBhY2tldF93KGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgc2VudF9wYWNrZXQpIHsKIAogY29uc3Qg
c3RkOjpzdHJpbmcgUGVlckNvbm5lY3Rpb246OkdldFRyYW5zcG9ydE5hbWUoCiAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSkgewotICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hh
bm5lbCA9IEdldENoYW5uZWwoY29udGVudF9uYW1lKTsKKyAgY3JpY2tldDo6Q2hhbm5lbEludGVy
ZmFjZSogY2hhbm5lbCA9IEdldENoYW5uZWwoY29udGVudF9uYW1lKTsKICAgaWYgKGNoYW5uZWwp
IHsKICAgICByZXR1cm4gY2hhbm5lbC0+dHJhbnNwb3J0X25hbWUoKTsKICAgfQpAQCAtNjE4OCwx
NyArNjUxOSwxNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpEZXN0cm95VHJhbnNjZWl2ZXJDaGFu
bmVsKAogICAgICAgICB0cmFuc2NlaXZlcikgewogICBSVENfRENIRUNLKHRyYW5zY2VpdmVyKTsK
IAotICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IHRyYW5zY2VpdmVyLT5pbnRlcm5h
bCgpLT5jaGFubmVsKCk7CisgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwgPSB0
cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOwogICBpZiAoY2hhbm5lbCkgewogICAg
IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5TZXRDaGFubmVsKG51bGxwdHIpOwotICAgIERlc3Ry
b3lCYXNlQ2hhbm5lbChjaGFubmVsKTsKKyAgICBEZXN0cm95Q2hhbm5lbEludGVyZmFjZShjaGFu
bmVsKTsKICAgfQogfQogCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpEZXN0cm95RGF0YUNoYW5uZWwo
KSB7CiAgIGlmIChydHBfZGF0YV9jaGFubmVsXykgewogICAgIE9uRGF0YUNoYW5uZWxEZXN0cm95
ZWQoKTsKLSAgICBEZXN0cm95QmFzZUNoYW5uZWwocnRwX2RhdGFfY2hhbm5lbF8pOworICAgIERl
c3Ryb3lDaGFubmVsSW50ZXJmYWNlKHJ0cF9kYXRhX2NoYW5uZWxfKTsKICAgICBydHBfZGF0YV9j
aGFubmVsXyA9IG51bGxwdHI7CiAgIH0KIApAQCAtNjIxMyw5ICs2NTQ0LDE4IEBAIHZvaWQgUGVl
ckNvbm5lY3Rpb246OkRlc3Ryb3lEYXRhQ2hhbm5lbCgpIHsKICAgICBuZXR3b3JrX3RocmVhZCgp
LT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW3RoaXNdIHsgRGVzdHJveVNjdHBUcmFuc3BvcnRfbigpOyB9KTsKICAgfQorCisg
IGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgT25EYXRhQ2hhbm5lbERlc3Ryb3llZCgpOwor
ICAgIG5ldHdvcmtfdGhyZWFkKCktPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbdGhpc10g
eworICAgICAgUlRDX0RDSEVDS19SVU5fT04obmV0d29ya190aHJlYWQoKSk7CisgICAgICBUZWFy
ZG93bk1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzX24oKTsKKyAgICB9KTsKKyAgfQogfQog
Ci12b2lkIFBlZXJDb25uZWN0aW9uOjpEZXN0cm95QmFzZUNoYW5uZWwoY3JpY2tldDo6QmFzZUNo
YW5uZWwqIGNoYW5uZWwpIHsKK3ZvaWQgUGVlckNvbm5lY3Rpb246OkRlc3Ryb3lDaGFubmVsSW50
ZXJmYWNlKAorICAgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwpIHsKICAgUlRD
X0RDSEVDSyhjaGFubmVsKTsKICAgc3dpdGNoIChjaGFubmVsLT5tZWRpYV90eXBlKCkpIHsKICAg
ICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86CkBAIC02MjM5LDcgKzY1NzksOCBAQCB2
b2lkIFBlZXJDb25uZWN0aW9uOjpEZXN0cm95QmFzZUNoYW5uZWwoY3JpY2tldDo6QmFzZUNoYW5u
ZWwqIGNoYW5uZWwpIHsKIGJvb2wgUGVlckNvbm5lY3Rpb246Ok9uVHJhbnNwb3J0Q2hhbmdlZCgK
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlkLAogICAgIFJ0cFRyYW5zcG9ydEludGVybmFsKiBy
dHBfdHJhbnNwb3J0LAotICAgIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCogZHRsc190
cmFuc3BvcnQpIHsKKyAgICBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIGR0bHNfdHJh
bnNwb3J0LAorICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpIHsK
ICAgYm9vbCByZXQgPSB0cnVlOwogICBhdXRvIGJhc2VfY2hhbm5lbCA9IEdldENoYW5uZWwobWlk
KTsKICAgaWYgKGJhc2VfY2hhbm5lbCkgewpAQCAtNjI0OCw2ICs2NTg5LDkgQEAgYm9vbCBQZWVy
Q29ubmVjdGlvbjo6T25UcmFuc3BvcnRDaGFuZ2VkKAogICBpZiAoc2N0cF90cmFuc3BvcnRfICYm
IG1pZCA9PSBzY3RwX21pZF8pIHsKICAgICBzY3RwX3RyYW5zcG9ydF8tPlNldER0bHNUcmFuc3Bv
cnQoZHRsc190cmFuc3BvcnQpOwogICB9CisKKyAgY2FsbF8tPk1lZGlhVHJhbnNwb3J0Q2hhbmdl
KG1lZGlhX3RyYW5zcG9ydCk7CisKICAgcmV0dXJuIHJldDsKIH0KIApAQCAtNjI2MSw2ICs2NjA1
LDE0IEBAIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIqIFBlZXJDb25uZWN0aW9uOjpPYnNlcnZlcigp
IGNvbnN0IHsKICAgcmV0dXJuIG9ic2VydmVyXzsKIH0KIAorQ3J5cHRvT3B0aW9ucyBQZWVyQ29u
bmVjdGlvbjo6R2V0Q3J5cHRvT3B0aW9ucygpIHsKKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcv
OTg5MSkgLSBSZW1vdmUgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpDcnlwdG9PcHRpb25zCisgIC8v
IGFmdGVyIGl0IGhhcyBiZWVuIHJlbW92ZWQuCisgIHJldHVybiBjb25maWd1cmF0aW9uXy5jcnlw
dG9fb3B0aW9ucy5oYXNfdmFsdWUoKQorICAgICAgICAgICAgID8gKmNvbmZpZ3VyYXRpb25fLmNy
eXB0b19vcHRpb25zCisgICAgICAgICAgICAgOiBmYWN0b3J5Xy0+b3B0aW9ucygpLmNyeXB0b19v
cHRpb25zOworfQorCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpDbGVhclN0YXRzQ2FjaGUoKSB7CiAg
IGlmIChzdGF0c19jb2xsZWN0b3JfKSB7CiAgICAgc3RhdHNfY29sbGVjdG9yXy0+Q2xlYXJDYWNo
ZWRTdGF0c1JlcG9ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmgKaW5kZXggMzdjOWQ3M2Jk
NDZjODgxYzkxYzVhYmRkYTI3YTk3YThhYWRhYzY3Ny4uN2U5N2FmYWI3YzYwNTM5NWRiMGM5YjQw
NDQ2MzY4MmU1MTVkMzc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5oCkBAIC0xNyw2ICsx
Nyw3IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUg
ImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25u
ZWN0aW9uaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3R1cm5jdXN0b21pemVyLmgiCiAjaW5j
bHVkZSAicGMvaWNlc2VydmVycGFyc2luZy5oIgpAQCAtNTEsNiArNTIsNyBAQCBjbGFzcyBSdGNF
dmVudExvZzsKIC8vIC0gR2VuZXJhdGluZyBzdGF0cy4KIGNsYXNzIFBlZXJDb25uZWN0aW9uIDog
cHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBEYXRhQ2hhbm5lbFByb3ZpZGVySW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgRGF0YUNoYW5uZWxTaW5rLAogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
SnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok9ic2VydmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKQEAgLTE0NSw2ICsxNDcsOCBAQCBjbGFzcyBQZWVy
Q29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkludGVybmFsLAogICBTaWduYWxpbmdT
dGF0ZSBzaWduYWxpbmdfc3RhdGUoKSBvdmVycmlkZTsKIAogICBJY2VDb25uZWN0aW9uU3RhdGUg
aWNlX2Nvbm5lY3Rpb25fc3RhdGUoKSBvdmVycmlkZTsKKyAgSWNlQ29ubmVjdGlvblN0YXRlIHN0
YW5kYXJkaXplZF9pY2VfY29ubmVjdGlvbl9zdGF0ZSgpOworICBQZWVyQ29ubmVjdGlvblN0YXRl
IHBlZXJfY29ubmVjdGlvbl9zdGF0ZSgpIG92ZXJyaWRlOwogICBJY2VHYXRoZXJpbmdTdGF0ZSBp
Y2VfZ2F0aGVyaW5nX3N0YXRlKCkgb3ZlcnJpZGU7CiAKICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0
aW9uSW50ZXJmYWNlKiBsb2NhbF9kZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzcy
LDYgKzM3NiwxMSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVjdGlv
bkludGVybmFsLAogICAgICAgICAgIHJlY2VpdmVyKTsKIAogICB2b2lkIFNldEljZUNvbm5lY3Rp
b25TdGF0ZShJY2VDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKTsKKyAgdm9pZCBTZXRTdGFuZGFy
ZGl6ZWRJY2VDb25uZWN0aW9uU3RhdGUoCisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
SWNlQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0ZSk7CisgIHZvaWQgU2V0Q29ubmVjdGlvblN0YXRl
KAorICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUgbmV3
X3N0YXRlKTsKKwogICAvLyBDYWxsZWQgYW55IHRpbWUgdGhlIEljZUdhdGhlcmluZ1N0YXRlIGNo
YW5nZXMKICAgdm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZShJY2VHYXRoZXJpbmdTdGF0ZSBuZXdf
c3RhdGUpOwogICAvLyBOZXcgSUNFIGNhbmRpZGF0ZSBoYXMgYmVlbiBnYXRoZXJlZC4KQEAgLTYy
NCw2ICs2MzMsMTEgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rp
b25JbnRlcm5hbCwKICAgLy8gQ2FsbGVkIHdoZW4gYSB2YWxpZCBkYXRhIGNoYW5uZWwgT1BFTiBt
ZXNzYWdlIGlzIHJlY2VpdmVkLgogICB2b2lkIE9uRGF0YUNoYW5uZWxPcGVuTWVzc2FnZShjb25z
dCBzdGQ6OnN0cmluZyYgbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEludGVybmFsRGF0YUNoYW5uZWxJbml0JiBjb25maWcpOworICAvLyBQYXJzZXMgYW5kIGhh
bmRsZXMgb3BlbiBtZXNzYWdlcy4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWVzc2FnZSBpcyBhbiBv
cGVuCisgIC8vIG1lc3NhZ2UsIGZhbHNlIG90aGVyd2lzZS4KKyAgYm9vbCBIYW5kbGVPcGVuTWVz
c2FnZV9zKGNvbnN0IGNyaWNrZXQ6OlJlY2VpdmVEYXRhUGFyYW1zJiBwYXJhbXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIp
CisgICAgICBSVENfUlVOX09OKHNpZ25hbGluZ190aHJlYWQoKSk7CiAKICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBQZWVyQ29ubmVjdGlvbiBpcyBjb25maWd1cmVkIHRvIHVzZSBVbmlmaWVkIFBs
YW4KICAgLy8gc2VtYW50aWNzIGZvciBjcmVhdGluZyBvZmZlcnMvYW5zd2VycyBhbmQgc2V0dGlu
ZyBsb2NhbC9yZW1vdGUKQEAgLTcwNSw3ICs3MTksNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6
IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkludGVybmFsLAogICBTZXNzaW9uRXJyb3Igc2Vzc2lvbl9l
cnJvcigpIGNvbnN0IHsgcmV0dXJuIHNlc3Npb25fZXJyb3JfOyB9CiAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBzZXNzaW9uX2Vycm9yX2Rlc2MoKSBjb25zdCB7IHJldHVybiBzZXNzaW9uX2Vycm9yX2Rl
c2NfOyB9CiAKLSAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIEdldENoYW5uZWwoY29uc3Qgc3RkOjpz
dHJpbmcmIGNvbnRlbnRfbmFtZSk7CisgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIEdldENo
YW5uZWwoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSk7CiAKICAgLy8gR2V0IGN1cnJl
bnQgU1NMIHJvbGUgdXNlZCBieSBTQ1RQJ3MgdW5kZXJseWluZyB0cmFuc3BvcnQuCiAgIGJvb2wg
R2V0U2N0cFNzbFJvbGUocnRjOjpTU0xSb2xlKiByb2xlKTsKQEAgLTcyNSw2ICs3MzksMTMgQEAg
Y2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKIAog
ICBjcmlja2V0OjpEYXRhQ2hhbm5lbFR5cGUgZGF0YV9jaGFubmVsX3R5cGUoKSBjb25zdDsKIAor
ICAvLyBJbXBsZW1lbnRzIERhdGFDaGFubmVsU2luay4KKyAgdm9pZCBPbkRhdGFSZWNlaXZlZChp
bnQgY2hhbm5lbF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICBEYXRhTWVzc2FnZVR5cGUgdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBi
dWZmZXIpIG92ZXJyaWRlOworICB2b2lkIE9uQ2hhbm5lbENsb3NpbmcoaW50IGNoYW5uZWxfaWQp
IG92ZXJyaWRlOworICB2b2lkIE9uQ2hhbm5lbENsb3NlZChpbnQgY2hhbm5lbF9pZCkgb3ZlcnJp
ZGU7CisKICAgLy8gQ2FsbGVkIHdoZW4gYW4gUlRDQ2VydGlmaWNhdGUgaXMgZ2VuZXJhdGVkIG9y
IHJldHJpZXZlZCBieQogICAvLyBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5LiBTaG91
bGQgaGFwcGVuIGJlZm9yZSBzZXRMb2NhbERlc2NyaXB0aW9uLgogICB2b2lkIE9uQ2VydGlmaWNh
dGVSZWFkeSgKQEAgLTgyMiw2ICs4NDMsMTEgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJs
aWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKICAgdm9pZCBPblNjdHBDbG9zaW5nUHJvY2VkdXJl
U3RhcnRlZFJlbW90ZWx5X24oaW50IHNpZCk7CiAgIHZvaWQgT25TY3RwQ2xvc2luZ1Byb2NlZHVy
ZUNvbXBsZXRlX24oaW50IHNpZCk7CiAKKyAgYm9vbCBTZXR1cE1lZGlhVHJhbnNwb3J0Rm9yRGF0
YUNoYW5uZWxzX24oY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCkKKyAgICAgIFJUQ19SVU5fT04obmV0
d29ya190aHJlYWQoKSk7CisgIHZvaWQgT25NZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZF9uKCkg
UlRDX1JVTl9PTihuZXR3b3JrX3RocmVhZCgpKTsKKyAgdm9pZCBUZWFyZG93bk1lZGlhVHJhbnNw
b3J0Rm9yRGF0YUNoYW5uZWxzX24oKSBSVENfUlVOX09OKG5ldHdvcmtfdGhyZWFkKCkpOworCiAg
IGJvb2wgVmFsaWRhdGVCdW5kbGVTZXR0aW5ncyhjb25zdCBjcmlja2V0OjpTZXNzaW9uRGVzY3Jp
cHRpb24qIGRlc2MpOwogICBib29sIEhhc1J0Y3BNdXhFbmFibGVkKGNvbnN0IGNyaWNrZXQ6OkNv
bnRlbnRJbmZvKiBjb250ZW50KTsKICAgLy8gQmVsb3cgbWV0aG9kcyBhcmUgaGVscGVyIG1ldGhv
ZHMgd2hpY2ggdmVyaWZpZXMgU0RQLgpAQCAtODk2LDkgKzkyMiw5IEBAIGNsYXNzIFBlZXJDb25u
ZWN0aW9uIDogcHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAgIC8vIERlc3Ryb3lzIHRo
ZSBSVFAgZGF0YSBjaGFubmVsIGFuZC9vciB0aGUgU0NUUCBkYXRhIGNoYW5uZWwgYW5kIGNsZWFy
cyBpdC4KICAgdm9pZCBEZXN0cm95RGF0YUNoYW5uZWwoKTsKIAotICAvLyBEZXN0cm95cyB0aGUg
Z2l2ZW4gQmFzZUNoYW5uZWwuIFRoZSBjaGFubmVsIGNhbm5vdCBiZSBhY2Nlc3NlZCBhZnRlciB0
aGlzCi0gIC8vIG1ldGhvZCBpcyBjYWxsZWQuCi0gIHZvaWQgRGVzdHJveUJhc2VDaGFubmVsKGNy
aWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsKTsKKyAgLy8gRGVzdHJveXMgdGhlIGdpdmVuIENo
YW5uZWxJbnRlcmZhY2UuCisgIC8vIFRoZSBjaGFubmVsIGNhbm5vdCBiZSBhY2Nlc3NlZCBhZnRl
ciB0aGlzIG1ldGhvZCBpcyBjYWxsZWQuCisgIHZvaWQgRGVzdHJveUNoYW5uZWxJbnRlcmZhY2Uo
Y3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbCk7CiAKICAgLy8gSnNlcFRyYW5zcG9y
dENvbnRyb2xsZXI6Ok9ic2VydmVyIG92ZXJyaWRlLgogICAvLwpAQCAtOTA2LDE0ICs5MzIsNDEg
QEAgY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwK
ICAgLy8gZnJvbSBhIHNlc3Npb24gZGVzY3JpcHRpb24sIGFuZCB0aGUgbWFwcGluZyBmcm9tIG09
IHNlY3Rpb25zIHRvIHRyYW5zcG9ydHMKICAgLy8gY2hhbmdlZCAoYXMgYSByZXN1bHQgb2YgQlVO
RExFIG5lZ290aWF0aW9uLCBvciBtPSBzZWN0aW9ucyBiZWluZwogICAvLyByZWplY3RlZCkuCi0g
IGJvb2wgT25UcmFuc3BvcnRDaGFuZ2VkKAotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwK
LSAgICAgIFJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0LAotICAgICAgY3JpY2tl
dDo6RHRsc1RyYW5zcG9ydEludGVybmFsKiBkdGxzX3RyYW5zcG9ydCkgb3ZlcnJpZGU7CisgIGJv
b2wgT25UcmFuc3BvcnRDaGFuZ2VkKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIGR0
bHNfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVRyYW5zcG9ydElu
dGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KSBvdmVycmlkZTsKIAogICAvLyBSZXR1cm5zIHRoZSBv
YnNlcnZlci4gV2lsbCBjcmFzaCBvbiBDSEVDSyBpZiB0aGUgb2JzZXJ2ZXIgaXMgcmVtb3ZlZC4K
ICAgUGVlckNvbm5lY3Rpb25PYnNlcnZlciogT2JzZXJ2ZXIoKSBjb25zdDsKIAorICAvLyBSZXR1
cm5zIHRoZSBDcnlwdG9PcHRpb25zIGZvciB0aGlzIFBlZXJDb25uZWN0aW9uLiBUaGlzIHdpbGwg
YWx3YXlzCisgIC8vIHJldHVybiB0aGUgUlRDQ29uZmlndXJhdGlvbi5jcnlwdG9fb3B0aW9ucyBp
ZiBzZXQgYW5kIHdpbGwgb25seSBkZWZhdWx0CisgIC8vIGJhY2sgdG8gdGhlIFBlZXJDb25uZWN0
aW9uRmFjdG9yeSBzZXR0aW5ncyBpZiBub3RoaW5nIHdhcyBzZXQuCisgIENyeXB0b09wdGlvbnMg
R2V0Q3J5cHRvT3B0aW9ucygpOworCisgIC8vIFJldHVybnMgcnRwIHRyYW5zcG9ydCwgcmVzdWx0
IGNhbiBub3QgYmUgbnVsbHB0ci4KKyAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIEdldFJ0cFRyYW5z
cG9ydChjb25zdCBzdGQ6OnN0cmluZyYgbWlkKSB7CisgICAgYXV0byBydHBfdHJhbnNwb3J0ID0g
dHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRSdHBUcmFuc3BvcnQobWlkKTsKKyAgICBSVENfRENI
RUNLKHJ0cF90cmFuc3BvcnQpOworICAgIHJldHVybiBydHBfdHJhbnNwb3J0OworICB9CisKKyAg
Ly8gUmV0dXJucyBtZWRpYSB0cmFuc3BvcnQsIGlmIFBlZXJDb25uZWN0aW9uIHdhcyBjcmVhdGVk
IHdpdGggY29uZmlndXJhdGlvbgorICAvLyB0byB1c2UgbWVkaWEgdHJhbnNwb3J0LiBPdGhlcndp
c2UgcmV0dXJucyBudWxscHRyLgorICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogR2V0TWVkaWFU
cmFuc3BvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCkgeworICAgIGF1dG8gbWVkaWFfdHJhbnNw
b3J0ID0gdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChtaWQpOworICAg
IFJUQ19EQ0hFQ0soKGNvbmZpZ3VyYXRpb25fLnVzZV9tZWRpYV90cmFuc3BvcnQgfHwKKyAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uXy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2No
YW5uZWxzKSA9PQorICAgICAgICAgICAgICAgKG1lZGlhX3RyYW5zcG9ydCAhPSBudWxscHRyKSkK
KyAgICAgICAgPDwgImNvbmZpZ3VyYXRpb25fLnVzZV9tZWRpYV90cmFuc3BvcnQ9IgorICAgICAg
ICA8PCBjb25maWd1cmF0aW9uXy51c2VfbWVkaWFfdHJhbnNwb3J0CisgICAgICAgIDw8ICIsIGNv
bmZpZ3VyYXRpb25fLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHM9IgorICAg
ICAgICA8PCBjb25maWd1cmF0aW9uXy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5u
ZWxzCisgICAgICAgIDw8ICIsIChtZWRpYV90cmFuc3BvcnQgIT0gbnVsbHB0cik9IiA8PCAobWVk
aWFfdHJhbnNwb3J0ICE9IG51bGxwdHIpOworICAgIHJldHVybiBtZWRpYV90cmFuc3BvcnQ7Cisg
IH0KKwogICBzaWdzbG90OjpzaWduYWwxPERhdGFDaGFubmVsKj4gU2lnbmFsRGF0YUNoYW5uZWxD
cmVhdGVkXzsKIAogICAvLyBTdG9yaW5nIHRoZSBmYWN0b3J5IGFzIGEgc2NvcGVkIHJlZmVyZW5j
ZSBwb2ludGVyIGVuc3VyZXMgdGhhdCB0aGUgbWVtb3J5CkBAIC05MzAsNiArOTgzLDExIEBAIGNs
YXNzIFBlZXJDb25uZWN0aW9uIDogcHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAKICAg
U2lnbmFsaW5nU3RhdGUgc2lnbmFsaW5nX3N0YXRlXyA9IGtTdGFibGU7CiAgIEljZUNvbm5lY3Rp
b25TdGF0ZSBpY2VfY29ubmVjdGlvbl9zdGF0ZV8gPSBrSWNlQ29ubmVjdGlvbk5ldzsKKyAgUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZQorICAgICAgc3RhbmRhcmRp
emVkX2ljZV9jb25uZWN0aW9uX3N0YXRlXyA9IGtJY2VDb25uZWN0aW9uTmV3OworICBQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBjb25uZWN0aW9uX3N0YXRlXyA9
CisgICAgICBQZWVyQ29ubmVjdGlvblN0YXRlOjprTmV3OworCiAgIEljZUdhdGhlcmluZ1N0YXRl
IGljZV9nYXRoZXJpbmdfc3RhdGVfID0ga0ljZUdhdGhlcmluZ05ldzsKICAgUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbl87CiAKQEAgLTEwMTAs
NiArMTA2OCwzMyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVjdGlv
bkludGVybmFsLAogICBzaWdzbG90OjpzaWduYWwxPGludD4gU2lnbmFsU2N0cENsb3NpbmdQcm9j
ZWR1cmVTdGFydGVkUmVtb3RlbHk7CiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8aW50PiBTaWduYWxTY3Rw
Q2xvc2luZ1Byb2NlZHVyZUNvbXBsZXRlOwogCisgIC8vIFdoZXRoZXIgdGhpcyBwZWVyIGlzIHRo
ZSBjYWxsZXIuIFNldCB3aGVuIHRoZSBsb2NhbCBkZXNjcmlwdGlvbiBpcyBhcHBsaWVkLgorICBh
YnNsOjpvcHRpb25hbDxib29sPiBpc19jYWxsZXJfIFJUQ19HVUFSREVEX0JZKHNpZ25hbGluZ190
aHJlYWQoKSk7CisKKyAgLy8gQ29udGVudCBuYW1lIChNSUQpIGZvciBtZWRpYSB0cmFuc3BvcnQg
ZGF0YSBjaGFubmVscyBpbiBTRFAuCisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBtZWRp
YV90cmFuc3BvcnRfZGF0YV9taWRfOworCisgIC8vIE1lZGlhIHRyYW5zcG9ydCB1c2VkIGZvciBk
YXRhIGNoYW5uZWxzLiAgVGhyZWFkLXNhZmUuCisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBt
ZWRpYV90cmFuc3BvcnRfID0gbnVsbHB0cjsKKworICAvLyBDYWNoZWQgdmFsdWUgb2Ygd2hldGhl
ciB0aGUgbWVkaWEgdHJhbnNwb3J0IGlzIHJlYWR5IHRvIHNlbmQuCisgIGJvb2wgbWVkaWFfdHJh
bnNwb3J0X3JlYWR5X3RvX3NlbmRfZGF0YV8gUlRDX0dVQVJERURfQlkoc2lnbmFsaW5nX3RocmVh
ZCgpKSA9CisgICAgICBmYWxzZTsKKworICAvLyBVc2VkIHRvIGludm9rZSBtZWRpYSB0cmFuc3Bv
cnQgc2lnbmFscyBvbiB0aGUgc2lnbmFsaW5nIHRocmVhZC4KKyAgc3RkOjp1bmlxdWVfcHRyPHJ0
Yzo6QXN5bmNJbnZva2VyPiBtZWRpYV90cmFuc3BvcnRfaW52b2tlcl87CisKKyAgLy8gSWRlbnRp
Y2FsIHRvIHRoZSBzaWduYWxzIGZvciBTQ1RQLCBidXQgZnJvbSBtZWRpYSB0cmFuc3BvcnQ6Cisg
IHNpZ3Nsb3Q6OnNpZ25hbDE8Ym9vbD4gU2lnbmFsTWVkaWFUcmFuc3BvcnRXcml0YWJsZV9zCisg
ICAgICBSVENfR1VBUkRFRF9CWShzaWduYWxpbmdfdGhyZWFkKCkpOworICBzaWdzbG90OjpzaWdu
YWwyPGNvbnN0IGNyaWNrZXQ6OlJlY2VpdmVEYXRhUGFyYW1zJiwKKyAgICAgICAgICAgICAgICAg
ICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJj4KKyAgICAgIFNpZ25hbE1lZGlhVHJhbnNw
b3J0UmVjZWl2ZWREYXRhX3MgUlRDX0dVQVJERURfQlkoc2lnbmFsaW5nX3RocmVhZCgpKTsKKyAg
c2lnc2xvdDo6c2lnbmFsMTxpbnQ+IFNpZ25hbE1lZGlhVHJhbnNwb3J0Q2hhbm5lbENsb3Npbmdf
cworICAgICAgUlRDX0dVQVJERURfQlkoc2lnbmFsaW5nX3RocmVhZCgpKTsKKyAgc2lnc2xvdDo6
c2lnbmFsMTxpbnQ+IFNpZ25hbE1lZGlhVHJhbnNwb3J0Q2hhbm5lbENsb3NlZF9zCisgICAgICBS
VENfR1VBUkRFRF9CWShzaWduYWxpbmdfdGhyZWFkKCkpOworCiAgIHN0ZDo6dW5pcXVlX3B0cjxT
ZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+IGN1cnJlbnRfbG9jYWxfZGVzY3JpcHRpb25fOwog
ICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlPiBwZW5kaW5nX2xv
Y2FsX2Rlc2NyaXB0aW9uXzsKICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbklu
dGVyZmFjZT4gY3VycmVudF9yZW1vdGVfZGVzY3JpcHRpb25fOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fYnVu
ZGxlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcGVlcmNvbm5lY3Rpb25fYnVuZGxlX3VuaXR0ZXN0LmNjCmluZGV4IDkwNzY2OWI1YWQz
MGM0ODY2YWVhYWM4M2IzYzYyNmI0MDc2ZjJjNDIuLjZjMzcyYjRiODk4MmI4Mjg5OTIxYzc1YzA3
YTJhNjliZmEyZTZkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2J1bmRsZV91bml0dGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlv
bl9idW5kbGVfdW5pdHRlc3QuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgImFwaS9h
dWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJh
cGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVk
ZSAiYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3Bl
ZXJjb25uZWN0aW9ucHJveHkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5f
dmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWls
dGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fY3J5cHRvX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVl
cmNvbm5lY3Rpb25fY3J5cHRvX3VuaXR0ZXN0LmNjCmluZGV4IDFjY2ZlNTU2MGYwOTUwOWY1MTQz
YzYwYzRmODdmNDg0YTRiNWIwMzMuLjZmN2UyM2I5NGY1YWQzNTA1MzRhM2VkNzE0MzJhZDVlZDFl
NWNlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3BlZXJjb25uZWN0aW9uX2NyeXB0b191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9jcnlwdG9f
dW5pdHRlc3QuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2Rl
Y3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL2Ny
ZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVj
cy9idWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19j
b2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJwMnAvYmFz
ZS9mYWtlcG9ydGFsbG9jYXRvci5oIgpAQCAtNzYsNiArNzcsNyBAQCBjbGFzcyBQZWVyQ29ubmVj
dGlvbkNyeXB0b0Jhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBvYnNlcnZlci0+U2V0UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2UocGMuZ2V0KCkpOwogICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxQZWVyQ29ubmVj
dGlvbldyYXBwZXI+KHBjX2ZhY3RvcnlfLCBwYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUob2JzZXJ2ZXIpKTsKICAgfQpAQCAt
Mjc4LDEzICsyODAsMzUgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uQ3J5cHRvVGVzdCwgQ29ycmVj
dENyeXB0b0luQW5zd2VyV2hlbkVuY3J5cHRpb25EaXNhYmxlZCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbnN3ZXItPmRlc2NyaXB0aW9uKCkpKTsKIH0KIAorLy8gQ3J5cHRvT3B0
aW9ucyBoYXMgYmVlbiBwcm9tb3RlZCB0byBSVENDb25maWd1cmF0aW9uLiBBcyBzdWNoIGlmIGl0
IGlzIGV2ZXIKKy8vIHNldCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdCBzaG91bGQgb3ZlcnJpdGUg
dGhlIHNldHRpbmdzIHNldCBpbiB0aGUgZmFjdG9yeS4KK1RFU1RfUChQZWVyQ29ubmVjdGlvbkNy
eXB0b1Rlc3QsIFJUQ0NvbmZpZ3VyYXRpb25DcnlwdG9PcHRpb25PdmVycmlkZXNGYWN0b3J5KSB7
CisgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0aW9ucyBvcHRpb25zOworICBv
cHRpb25zLmNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1
ZTsKKyAgcGNfZmFjdG9yeV8tPlNldE9wdGlvbnMob3B0aW9ucyk7CisKKyAgUlRDQ29uZmlndXJh
dGlvbiBjb25maWc7CisgIGNvbmZpZy5lbmFibGVfZHRsc19zcnRwLmVtcGxhY2UoZmFsc2UpOwor
ICBDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zOworICBjcnlwdG9fb3B0aW9ucy5zcnRwLmVu
YWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IGZhbHNlOworICBjb25maWcuY3J5cHRvX29wdGlvbnMg
PSBjcnlwdG9fb3B0aW9uczsKKyAgYXV0byBjYWxsZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldp
dGhBdWRpb1ZpZGVvKGNvbmZpZyk7CisKKyAgYXV0byBvZmZlciA9IGNhbGxlci0+Q3JlYXRlT2Zm
ZXIoKTsKKyAgQVNTRVJUX1RSVUUob2ZmZXIpOworCisgIEFTU0VSVF9GQUxTRShvZmZlci0+ZGVz
Y3JpcHRpb24oKS0+Y29udGVudHMoKS5lbXB0eSgpKTsKKyAgLy8gVGhpcyBzaG91bGQgZXhpc3Qg
aWYgR0NNIGlzIGVuYWJsZWQgc2VlIENvcnJlY3RDcnlwdG9Jbk9mZmVyV2l0aFNkZXNBbmRHY20K
KyAgRVhQRUNUX0ZBTFNFKFNkcENvbnRlbnRzQWxsKEhhdmVTZGVzR2NtQ3J5cHRvcygzKSwgb2Zm
ZXItPmRlc2NyaXB0aW9uKCkpKTsKK30KKwogLy8gV2hlbiBEVExTIGlzIGRpc2FibGVkIGFuZCBH
Q00gY2lwaGVyIHN1aXRlcyBhcmUgZW5hYmxlZCwgdGhlIFNEUCBvZmZlci9hbnN3ZXIKIC8vIHNo
b3VsZCBoYXZlIHRoZSBjb3JyZWN0IGNpcGhlcnMgaW4gdGhlIFNERVMgY3J5cHRvIG9wdGlvbnMu
CiAvLyBXaXRoIEdDTSBjaXBoZXIgc3VpdGVzIGVuYWJsZWQsIHRoZXJlIHdpbGwgYmUgMyBjcnlw
dG9zIGluIHRoZSBvZmZlciBhbmQgMQogLy8gaW4gdGhlIGFuc3dlci4KIFRFU1RfUChQZWVyQ29u
bmVjdGlvbkNyeXB0b1Rlc3QsIENvcnJlY3RDcnlwdG9Jbk9mZmVyV2l0aFNkZXNBbmRHY20pIHsK
ICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlOjpPcHRpb25zIG9wdGlvbnM7Ci0gIG9w
dGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKKyAg
b3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHRy
dWU7CiAgIHBjX2ZhY3RvcnlfLT5TZXRPcHRpb25zKG9wdGlvbnMpOwogCiAgIFJUQ0NvbmZpZ3Vy
YXRpb24gY29uZmlnOwpAQCAtMjk3LDkgKzMyMSwxMCBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25D
cnlwdG9UZXN0LCBDb3JyZWN0Q3J5cHRvSW5PZmZlcldpdGhTZGVzQW5kR2NtKSB7CiAgIEFTU0VS
VF9GQUxTRShvZmZlci0+ZGVzY3JpcHRpb24oKS0+Y29udGVudHMoKS5lbXB0eSgpKTsKICAgRVhQ
RUNUX1RSVUUoU2RwQ29udGVudHNBbGwoSGF2ZVNkZXNHY21DcnlwdG9zKDMpLCBvZmZlci0+ZGVz
Y3JpcHRpb24oKSkpOwogfQorCiBURVNUX1AoUGVlckNvbm5lY3Rpb25DcnlwdG9UZXN0LCBDb3Jy
ZWN0Q3J5cHRvSW5BbnN3ZXJXaXRoU2Rlc0FuZEdjbSkgewogICBQZWVyQ29ubmVjdGlvbkZhY3Rv
cnlJbnRlcmZhY2U6Ok9wdGlvbnMgb3B0aW9uczsKLSAgb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5l
bmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSB0cnVlOworICBvcHRpb25zLmNyeXB0b19vcHRpb25z
LnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKICAgcGNfZmFjdG9yeV8tPlNl
dE9wdGlvbnMob3B0aW9ucyk7CiAKICAgUlRDQ29uZmlndXJhdGlvbiBjb25maWc7CkBAIC0zMTcs
NyArMzQyLDcgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uQ3J5cHRvVGVzdCwgQ29ycmVjdENyeXB0
b0luQW5zd2VyV2l0aFNkZXNBbmRHY20pIHsKIAogVEVTVF9QKFBlZXJDb25uZWN0aW9uQ3J5cHRv
VGVzdCwgQ2FuU2V0U2Rlc0djbVJlbW90ZU9mZmVyQW5kTG9jYWxBbnN3ZXIpIHsKICAgUGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlOjpPcHRpb25zIG9wdGlvbnM7Ci0gIG9wdGlvbnMuY3J5
cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKKyAgb3B0aW9ucy5j
cnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHRydWU7CiAgIHBj
X2ZhY3RvcnlfLT5TZXRPcHRpb25zKG9wdGlvbnMpOwogCiAgIFJUQ0NvbmZpZ3VyYXRpb24gY29u
ZmlnOwpAQCAtNzAzLDggKzcyOCw4IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkNyeXB0b1Rlc3Qs
IFNlc3Npb25FcnJvcklmRmluZ2VycHJpbnRJbnZhbGlkKSB7CiAgICAgICBpbnZhbGlkX2Fuc3dl
ci0+ZGVzY3JpcHRpb24oKS0+R2V0VHJhbnNwb3J0SW5mb0J5TmFtZSgKICAgICAgICAgICBhdWRp
b19jb250ZW50LT5uYW1lKTsKICAgQVNTRVJUX1RSVUUoYXVkaW9fdHJhbnNwb3J0X2luZm8pOwot
ICBhdWRpb190cmFuc3BvcnRfaW5mby0+ZGVzY3JpcHRpb24uaWRlbnRpdHlfZmluZ2VycHJpbnQu
cmVzZXQoCi0gICAgICBydGM6OlNTTEZpbmdlcnByaW50OjpDcmVhdGVGcm9tQ2VydGlmaWNhdGUo
b3RoZXJfY2VydGlmaWNhdGUpKTsKKyAgYXVkaW9fdHJhbnNwb3J0X2luZm8tPmRlc2NyaXB0aW9u
LmlkZW50aXR5X2ZpbmdlcnByaW50ID0KKyAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0
ZUZyb21DZXJ0aWZpY2F0ZSgqb3RoZXJfY2VydGlmaWNhdGUpOwogCiAgIC8vIFNldCB0aGUgaW52
YWxpZCBhbnN3ZXIgYW5kIGV4cGVjdCBhIGZpbmdlcnByaW50IGVycm9yLgogICBzdGQ6OnN0cmlu
ZyBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2RhdGFjaGFubmVsX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fZGF0
YWNoYW5uZWxfdW5pdHRlc3QuY2MKaW5kZXggMDMzYTYwOWY5OGFkYWIyMzkxMTE5Y2U5NmRmYzcx
NWVhYjY2NTFlMS4uY2ZiNWRkZTIyYWYzY2JlMDQ4N2Q0NmU5Y2Y5YzkzMjM1MWMwNDg3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVl
cmNvbm5lY3Rpb25fZGF0YWNoYW5uZWxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fZGF0YWNoYW5uZWxf
dW5pdHRlc3QuY2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDx0dXBsZT4KIAogI2luY2x1
ZGUgImFwaS9wZWVyY29ubmVjdGlvbnByb3h5LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvZmFrZV9t
ZWRpYV90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2VtZWRpYWVuZ2luZS5o
IgogI2luY2x1ZGUgInBjL21lZGlhc2Vzc2lvbi5oIgogI2luY2x1ZGUgInBjL3BlZXJjb25uZWN0
aW9uLmgiCkBAIC0zMSwxNyArMzIsMzkgQEAgdXNpbmcgUlRDQ29uZmlndXJhdGlvbiA9IFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uOwogdXNpbmcgUlRDT2ZmZXJBbnN3
ZXJPcHRpb25zID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ09mZmVyQW5zd2VyT3B0aW9u
czsKIHVzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwogCituYW1lc3BhY2UgeworCitQZWVyQ29ubmVj
dGlvbkZhY3RvcnlEZXBlbmRlbmNpZXMgQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5RGVwZW5k
ZW5jaWVzKAorICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVh
ZCogd29ya2VyX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2Vu
Z2luZSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEZhY3RvcnlJbnRlcmZhY2U+IGNhbGxfZmFj
dG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRGYWN0b3J5PiBtZWRpYV90
cmFuc3BvcnRfZmFjdG9yeSkgeworICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlEZXBlbmRlbmNpZXMg
ZGVwczsKKyAgZGVwcy5uZXR3b3JrX3RocmVhZCA9IG5ldHdvcmtfdGhyZWFkOworICBkZXBzLndv
cmtlcl90aHJlYWQgPSB3b3JrZXJfdGhyZWFkOworICBkZXBzLnNpZ25hbGluZ190aHJlYWQgPSBz
aWduYWxpbmdfdGhyZWFkOworICBkZXBzLm1lZGlhX2VuZ2luZSA9IHN0ZDo6bW92ZShtZWRpYV9l
bmdpbmUpOworICBkZXBzLmNhbGxfZmFjdG9yeSA9IHN0ZDo6bW92ZShjYWxsX2ZhY3RvcnkpOwor
ICBkZXBzLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gc3RkOjptb3ZlKG1lZGlhX3RyYW5zcG9y
dF9mYWN0b3J5KTsKKyAgcmV0dXJuIGRlcHM7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCiBjbGFz
cyBQZWVyQ29ubmVjdGlvbkZhY3RvcnlGb3JEYXRhQ2hhbm5lbFRlc3QKICAgICA6IHB1YmxpYyBy
dGM6OlJlZkNvdW50ZWRPYmplY3Q8UGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7CiAgcHVibGljOgog
ICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlGb3JEYXRhQ2hhbm5lbFRlc3QoKQogICAgICAgOiBydGM6
OlJlZkNvdW50ZWRPYmplY3Q8UGVlckNvbm5lY3Rpb25GYWN0b3J5PigKLSAgICAgICAgICAgIHJ0
Yzo6VGhyZWFkOjpDdXJyZW50KCksCi0gICAgICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgp
LAotICAgICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwKLSAgICAgICAgICAgIGFic2w6
Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZT4oKSwKLSAgICAgICAgICAgIENy
ZWF0ZUNhbGxGYWN0b3J5KCksCi0gICAgICAgICAgICBudWxscHRyKSB7fQorICAgICAgICAgICAg
Q3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5RGVwZW5kZW5jaWVzKAorICAgICAgICAgICAgICAg
IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksCisgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1
cnJlbnQoKSwKKyAgICAgICAgICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLAorICAgICAg
ICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZT4oKSwK
KyAgICAgICAgICAgICAgICBDcmVhdGVDYWxsRmFjdG9yeSgpLAorICAgICAgICAgICAgICAgIGFi
c2w6Om1ha2VfdW5pcXVlPEZha2VNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+KCkpKSB7fQogCiAgIHN0
ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpTY3RwVHJhbnNwb3J0SW50ZXJuYWxGYWN0b3J5PgogICBD
cmVhdGVTY3RwVHJhbnNwb3J0SW50ZXJuYWxGYWN0b3J5KCkgewpAQCAtMTIzLDYgKzE0Niw3IEBA
IGNsYXNzIFBlZXJDb25uZWN0aW9uRGF0YUNoYW5uZWxCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgb2JzZXJ2ZXIt
PlNldFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlKHBjLmdldCgpKTsKICAgICBhdXRvIHdyYXBwZXIg
PSBhYnNsOjptYWtlX3VuaXF1ZTxQZWVyQ29ubmVjdGlvbldyYXBwZXJGb3JEYXRhQ2hhbm5lbFRl
c3Q+KAogICAgICAgICBwY19mYWN0b3J5LCBwYywgc3RkOjptb3ZlKG9ic2VydmVyKSk7CiAgICAg
UlRDX0RDSEVDSyhwY19mYWN0b3J5LT5sYXN0X2Zha2Vfc2N0cF90cmFuc3BvcnRfZmFjdG9yeV8p
OwpAQCAtMzIzLDYgKzM0Nyw1MiBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25EYXRhQ2hhbm5lbFRl
c3QsIFNjdHBQb3J0UHJvcGFnYXRlZEZyb21TZHBUb1RyYW5zcG9ydCkgewogICBFWFBFQ1RfRVEo
a05ld1JlY3ZQb3J0LCBjYWxsZWVfdHJhbnNwb3J0LT5sb2NhbF9wb3J0KCkpOwogfQogCitURVNU
X1AoUGVlckNvbm5lY3Rpb25EYXRhQ2hhbm5lbFRlc3QsCisgICAgICAgTm9TY3RwVHJhbnNwb3J0
Q3JlYXRlZElmTWVkaWFUcmFuc3BvcnREYXRhQ2hhbm5lbHNFbmFibGVkKSB7CisgIFJUQ0NvbmZp
Z3VyYXRpb24gY29uZmlnOworICBjb25maWcudXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9j
aGFubmVscyA9IHRydWU7CisgIGNvbmZpZy5lbmFibGVfZHRsc19zcnRwID0gZmFsc2U7ICAvLyBT
REVTIGlzIHJlcXVpcmVkIHRvIHVzZSBtZWRpYSB0cmFuc3BvcnQuCisgIGF1dG8gY2FsbGVyID0g
Q3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoRGF0YUNoYW5uZWwoY29uZmlnKTsKKworICBBU1NFUlRf
VFJVRShjYWxsZXItPlNldExvY2FsRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVPZmZlcigpKSk7
CisgIEVYUEVDVF9GQUxTRShjYWxsZXItPnNjdHBfdHJhbnNwb3J0X2ZhY3RvcnkoKS0+bGFzdF9m
YWtlX3NjdHBfdHJhbnNwb3J0KCkpOworfQorCitURVNUX1AoUGVlckNvbm5lY3Rpb25EYXRhQ2hh
bm5lbFRlc3QsCisgICAgICAgTWVkaWFUcmFuc3BvcnREYXRhQ2hhbm5lbENyZWF0ZWRFdmVuSWZT
Y3RwQXZhaWxhYmxlKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOworICBjb25maWcudXNl
X21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9IHRydWU7CisgIGNvbmZpZy5lbmFi
bGVfZHRsc19zcnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJlcXVpcmVkIHRvIHVzZSBtZWRpYSB0
cmFuc3BvcnQuCisgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0aW9ucyBvcHRp
b25zOworICBvcHRpb25zLmRpc2FibGVfc2N0cF9kYXRhX2NoYW5uZWxzID0gZmFsc2U7CisgIGF1
dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoRGF0YUNoYW5uZWwoY29uZmlnLCBv
cHRpb25zKTsKKworICBBU1NFUlRfVFJVRShjYWxsZXItPlNldExvY2FsRGVzY3JpcHRpb24oY2Fs
bGVyLT5DcmVhdGVPZmZlcigpKSk7CisgIEVYUEVDVF9GQUxTRShjYWxsZXItPnNjdHBfdHJhbnNw
b3J0X2ZhY3RvcnkoKS0+bGFzdF9mYWtlX3NjdHBfdHJhbnNwb3J0KCkpOworfQorCitURVNUX1Ao
UGVlckNvbm5lY3Rpb25EYXRhQ2hhbm5lbFRlc3QsCisgICAgICAgQ2Fubm90RW5hYmxlQm90aE1l
ZGlhVHJhbnNwb3J0QW5kUnRwRGF0YUNoYW5uZWxzKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24gY29u
ZmlnOworICBjb25maWcuZW5hYmxlX3J0cF9kYXRhX2NoYW5uZWwgPSB0cnVlOworICBjb25maWcu
dXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9IHRydWU7CisgIGNvbmZpZy5l
bmFibGVfZHRsc19zcnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJlcXVpcmVkIHRvIHVzZSBtZWRp
YSB0cmFuc3BvcnQuCisgIEVYUEVDVF9FUShDcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWcpLCBu
dWxscHRyKTsKK30KKworVEVTVF9QKFBlZXJDb25uZWN0aW9uRGF0YUNoYW5uZWxUZXN0LAorICAg
ICAgIE1lZGlhVHJhbnNwb3J0RGF0YUNoYW5uZWxGYWlsc1dpdGhvdXRTZGVzKSB7CisgIFJUQ0Nv
bmZpZ3VyYXRpb24gY29uZmlnOworICBjb25maWcudXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0
YV9jaGFubmVscyA9IHRydWU7CisgIGNvbmZpZy5lbmFibGVfZHRsc19zcnRwID0gdHJ1ZTsgIC8v
IERpc2FibGVzIFNERVMgZm9yIGRhdGEgc2VjdGlvbnMuCisgIGF1dG8gY2FsbGVyID0gQ3JlYXRl
UGVlckNvbm5lY3Rpb25XaXRoRGF0YUNoYW5uZWwoY29uZmlnKTsKKworICBzdGQ6OnN0cmluZyBl
cnJvcjsKKyAgQVNTRVJUX0ZBTFNFKGNhbGxlci0+U2V0TG9jYWxEZXNjcmlwdGlvbihjYWxsZXIt
PkNyZWF0ZU9mZmVyKCksICZlcnJvcikpOworICBFWFBFQ1RfRVEoZXJyb3IsCisgICAgICAgICAg
ICAiRmFpbGVkIHRvIHNldCBsb2NhbCBvZmZlciBzZHA6IEZhaWxlZCB0byBjcmVhdGUgZGF0YSBj
aGFubmVsLiIpOworfQorCiBJTlNUQU5USUFURV9URVNUX0NBU0VfUChQZWVyQ29ubmVjdGlvbkRh
dGFDaGFubmVsVGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFBlZXJDb25uZWN0aW9uRGF0
YUNoYW5uZWxUZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKFNkcFNlbWFudGlj
czo6a1BsYW5CLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25faGlzdG9ncmFtX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25faGlz
dG9ncmFtX3VuaXR0ZXN0LmNjCmluZGV4IGI1YzA3ZjQ5ZWM0MTFiMDY4MGNhMTNiZGQ3NTBiYTg2
ZTA0NDc5NWUuLjQ5N2UzM2E2ODhjNjVkYjQ5MTA3NzY4YTJjOWIyYzk5NzdjMDk2ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJj
b25uZWN0aW9uX2hpc3RvZ3JhbV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9oaXN0b2dyYW1fdW5pdHRl
c3QuY2MKQEAgLTI1MSw2ICsyNTEsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvblVzYWdlSGlzdG9n
cmFtVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCisgICAgb2JzZXJ2ZXItPlNldFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlKHBjLmdl
dCgpKTsKICAgICBhdXRvIHdyYXBwZXIgPQogICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxQZWVy
Q29ubmVjdGlvbldyYXBwZXJGb3JVc2FnZUhpc3RvZ3JhbVRlc3Q+KAogICAgICAgICAgICAgcGNf
ZmFjdG9yeSwgcGMsIHN0ZDo6bW92ZShvYnNlcnZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25faWNlX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cGVlcmNvbm5lY3Rpb25faWNlX3VuaXR0ZXN0LmNjCmluZGV4IDk2NTk1NmM0MmEzMjQxYjExODBl
NWRiODczNTgxNGVkZTM2ZjUzNzUuLjkyODU0OWYzODAwZjI1NjRmZTliNjc0YzJkNGM2ZjgwNWVm
MGFhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3BlZXJjb25uZWN0aW9uX2ljZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9pY2VfdW5pdHRl
c3QuY2MKQEAgLTIxLDcgKzIxLDkgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFj
dG9yeS5oIgorI2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIgog
I2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbnByb3h5LmgiCisjaW5jbHVkZSAiYXBpL3VtYW1l
dHJpY3MuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rl
cl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2Vu
Y29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInBjL3Rlc3QvZmFrZWF1ZGlvY2FwdHVyZW1vZHVs
ZS5oIgpAQCAtNzcsNiArNzksOSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbldyYXBwZXJGb3JJY2VU
ZXN0IDogcHVibGljIFBlZXJDb25uZWN0aW9uV3JhcHBlciB7CiAKICAgdm9pZCBzZXRfbmV0d29y
ayhydGM6OkZha2VOZXR3b3JrTWFuYWdlciogbmV0d29yaykgeyBuZXR3b3JrXyA9IG5ldHdvcms7
IH0KIAorICAvLyBUaGUgcG9ydCBhbGxvY2F0b3IgdXNlZCBieSB0aGlzIFBDLgorICBjcmlja2V0
OjpQb3J0QWxsb2NhdG9yKiBwb3J0X2FsbG9jYXRvcl87CisKICBwcml2YXRlOgogICBydGM6OkZh
a2VOZXR3b3JrTWFuYWdlciogbmV0d29ya187CiB9OwpAQCAtMTE0LDE1ICsxMTksMTggQEAgY2xh
c3MgUGVlckNvbm5lY3Rpb25JY2VCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qgewog
ICAgIFJUQ0NvbmZpZ3VyYXRpb24gbW9kaWZpZWRfY29uZmlnID0gY29uZmlnOwogICAgIG1vZGlm
aWVkX2NvbmZpZy5zZHBfc2VtYW50aWNzID0gc2RwX3NlbWFudGljc187CiAgICAgYXV0byBvYnNl
cnZlciA9IGFic2w6Om1ha2VfdW5pcXVlPE1vY2tQZWVyQ29ubmVjdGlvbk9ic2VydmVyPigpOwor
ICAgIGF1dG8gcG9ydF9hbGxvY2F0b3JfY29weSA9IHBvcnRfYWxsb2NhdG9yLmdldCgpOwogICAg
IGF1dG8gcGMgPSBwY19mYWN0b3J5Xy0+Q3JlYXRlUGVlckNvbm5lY3Rpb24oCiAgICAgICAgIG1v
ZGlmaWVkX2NvbmZpZywgc3RkOjptb3ZlKHBvcnRfYWxsb2NhdG9yKSwgbnVsbHB0ciwgb2JzZXJ2
ZXIuZ2V0KCkpOwogICAgIGlmICghcGMpIHsKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAorICAgIG9ic2VydmVyLT5TZXRQZWVyQ29ubmVjdGlvbkludGVyZmFjZShwYy5nZXQoKSk7CiAg
ICAgYXV0byB3cmFwcGVyID0gYWJzbDo6bWFrZV91bmlxdWU8UGVlckNvbm5lY3Rpb25XcmFwcGVy
Rm9ySWNlVGVzdD4oCiAgICAgICAgIHBjX2ZhY3RvcnlfLCBwYywgc3RkOjptb3ZlKG9ic2VydmVy
KSk7CiAgICAgd3JhcHBlci0+c2V0X25ldHdvcmsoZmFrZV9uZXR3b3JrKTsKKyAgICB3cmFwcGVy
LT5wb3J0X2FsbG9jYXRvcl8gPSBwb3J0X2FsbG9jYXRvcl9jb3B5OwogICAgIHJldHVybiB3cmFw
cGVyOwogICB9CiAKQEAgLTIwNSw3ICsyMTMsMTIgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JY2VC
YXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIFBlZXJDb25uZWN0aW9uKiBw
YyA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4ocGNfcHJveHktPmludGVybmFsKCkpOwog
ICAgIGZvciAoYXV0byB0cmFuc2NlaXZlciA6IHBjLT5HZXRUcmFuc2NlaXZlcnNJbnRlcm5hbCgp
KSB7CiAgICAgICBpZiAodHJhbnNjZWl2ZXItPm1lZGlhX3R5cGUoKSA9PSBjcmlja2V0OjpNRURJ
QV9UWVBFX0FVRElPKSB7Ci0gICAgICAgIGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsID0g
dHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNoYW5uZWwoKTsKKyAgICAgICAgLy8gVE9ETyhhbWl0
aGkpOiBUaGlzIHRlc3Qgc2VlbXMgdG8gYmUgdXNpbmcgYSBtZXRob2QgdGhhdCBzaG91bGQgbm90
CisgICAgICAgIC8vIGJlIHB1YmxpYyB8cnRwX3BhY2tldF90cmFuc3BvcnR8LiBCZWNhdXNlIHRo
ZSB0ZXN0IGlzIG5vdCBtb2NraW5nCisgICAgICAgIC8vIHRoZSBjaGFubmVscyBvciB0cmFuc2Nl
aXZlciwgd29ya2Fyb3VuZCB3aWxsIGJlIHRvIHxzdGF0aWNfY2FzdHwKKyAgICAgICAgLy8gdGhl
IGNoYW5uZWwgdW50aWwgdGhlIG1ldGhvZCBpcyByZXdyaXR0ZW4uCisgICAgICAgIGNyaWNrZXQ6
OkJhc2VDaGFubmVsKiBjaGFubmVsID0gc3RhdGljX2Nhc3Q8Y3JpY2tldDo6QmFzZUNoYW5uZWwq
PigKKyAgICAgICAgICAgIHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCkpOwogICAg
ICAgICBpZiAoY2hhbm5lbCkgewogICAgICAgICAgIGF1dG8gZHRsc190cmFuc3BvcnQgPSBzdGF0
aWNfY2FzdDxjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqPigKICAgICAgICAgICAgICAg
Y2hhbm5lbC0+cnRwX3BhY2tldF90cmFuc3BvcnQoKSk7CkBAIC0xMDA3LDQgKzEwMjAsNDEgQEAg
VEVTVF9GKFBlZXJDb25uZWN0aW9uSWNlQ29uZmlnVGVzdCwgU2V0U3R1bkNhbmRpZGF0ZUtlZXBh
bGl2ZUludGVydmFsKSB7CiAgIEVYUEVDVF9FUShhY3R1YWxfc3R1bl9rZWVwYWxpdmVfaW50ZXJ2
YWwudmFsdWVfb3IoLTEpLCAzMjEpOwogfQogCitURVNUX1AoUGVlckNvbm5lY3Rpb25JY2VUZXN0
LCBJY2VDcmVkZW50aWFsc0NyZWF0ZU9mZmVyKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmln
OworICBjb25maWcuaWNlX2NhbmRpZGF0ZV9wb29sX3NpemUgPSAxOworICBhdXRvIHBjID0gQ3Jl
YXRlUGVlckNvbm5lY3Rpb25XaXRoQXVkaW9WaWRlbyhjb25maWcpOworICBBU1NFUlRfTkUocGMt
PnBvcnRfYWxsb2NhdG9yXywgbnVsbHB0cik7CisgIGF1dG8gb2ZmZXIgPSBwYy0+Q3JlYXRlT2Zm
ZXIoKTsKKyAgYXV0byBjcmVkZW50aWFscyA9IHBjLT5wb3J0X2FsbG9jYXRvcl8tPkdldFBvb2xl
ZEljZUNyZWRlbnRpYWxzKCk7CisgIEFTU0VSVF9FUSgxdSwgY3JlZGVudGlhbHMuc2l6ZSgpKTsK
KworICBhdXRvKiBkZXNjID0gb2ZmZXItPmRlc2NyaXB0aW9uKCk7CisgIGZvciAoY29uc3QgYXV0
byYgY29udGVudCA6IGRlc2MtPmNvbnRlbnRzKCkpIHsKKyAgICBhdXRvKiB0cmFuc3BvcnRfaW5m
byA9IGRlc2MtPkdldFRyYW5zcG9ydEluZm9CeU5hbWUoY29udGVudC5uYW1lKTsKKyAgICBFWFBF
Q1RfRVEodHJhbnNwb3J0X2luZm8tPmRlc2NyaXB0aW9uLmljZV91ZnJhZywgY3JlZGVudGlhbHNb
MF0udWZyYWcpOworICAgIEVYUEVDVF9FUSh0cmFuc3BvcnRfaW5mby0+ZGVzY3JpcHRpb24uaWNl
X3B3ZCwgY3JlZGVudGlhbHNbMF0ucHdkKTsKKyAgfQorfQorCitURVNUX1AoUGVlckNvbm5lY3Rp
b25JY2VUZXN0LCBJY2VDcmVkZW50aWFsc0NyZWF0ZUFuc3dlcikgeworICBSVENDb25maWd1cmF0
aW9uIGNvbmZpZzsKKyAgY29uZmlnLmljZV9jYW5kaWRhdGVfcG9vbF9zaXplID0gMTsKKyAgYXV0
byBwYyA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlvVmlkZW8oY29uZmlnKTsKKyAgQVNT
RVJUX05FKHBjLT5wb3J0X2FsbG9jYXRvcl8sIG51bGxwdHIpOworICBhdXRvIG9mZmVyID0gcGMt
PkNyZWF0ZU9mZmVyKCk7CisgIEFTU0VSVF9UUlVFKHBjLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihz
dGQ6Om1vdmUob2ZmZXIpKSk7CisgIGF1dG8gYW5zd2VyID0gcGMtPkNyZWF0ZUFuc3dlcigpOwor
CisgIGF1dG8gY3JlZGVudGlhbHMgPSBwYy0+cG9ydF9hbGxvY2F0b3JfLT5HZXRQb29sZWRJY2VD
cmVkZW50aWFscygpOworICBBU1NFUlRfRVEoMXUsIGNyZWRlbnRpYWxzLnNpemUoKSk7CisKKyAg
YXV0byogZGVzYyA9IGFuc3dlci0+ZGVzY3JpcHRpb24oKTsKKyAgZm9yIChjb25zdCBhdXRvJiBj
b250ZW50IDogZGVzYy0+Y29udGVudHMoKSkgeworICAgIGF1dG8qIHRyYW5zcG9ydF9pbmZvID0g
ZGVzYy0+R2V0VHJhbnNwb3J0SW5mb0J5TmFtZShjb250ZW50Lm5hbWUpOworICAgIEVYUEVDVF9F
USh0cmFuc3BvcnRfaW5mby0+ZGVzY3JpcHRpb24uaWNlX3VmcmFnLCBjcmVkZW50aWFsc1swXS51
ZnJhZyk7CisgICAgRVhQRUNUX0VRKHRyYW5zcG9ydF9pbmZvLT5kZXNjcmlwdGlvbi5pY2VfcHdk
LCBjcmVkZW50aWFsc1swXS5wd2QpOworICB9Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3BlZXJjb25uZWN0aW9uX2ludGVncmF0aW9udGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2ludGVncmF0aW9udGVzdC5j
YwppbmRleCAyOGUwMTEwMzU1MDM3ZWQ0ZDdlYzkxNjMyNmFlNjhmMTcxY2UxM2QzLi5hN2Y3YWFk
MGY1NGIzMWNhZWQzZWE3ZmQ0NWY2M2Y0N2M5NGE5ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9pbnRlZ3Jh
dGlvbnRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcGVlcmNvbm5lY3Rpb25faW50ZWdyYXRpb250ZXN0LmNjCkBAIC0yOCw2ICsyOCw4IEBA
CiAjaW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBp
L3BlZXJjb25uZWN0aW9ucHJveHkuaCIKICNpbmNsdWRlICJhcGkvcnRwcmVjZWl2ZXJpbnRlcmZh
Y2UuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnQuaCIKKyNp
bmNsdWRlICJhcGkvdW1hbWV0cmljcy5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVp
bHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNz
L2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2Nv
ZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCkBAIC0yNTAsNyArMjUyLDggQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb25XcmFwcGVyIDogcHVibGljIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciwK
ICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llcyhudWxs
cHRyKTsKICAgICBkZXBlbmRlbmNpZXMuY2VydF9nZW5lcmF0b3IgPSBzdGQ6Om1vdmUoY2VydF9n
ZW5lcmF0b3IpOwogICAgIGlmICghY2xpZW50LT5Jbml0KG51bGxwdHIsIG51bGxwdHIsIHN0ZDo6
bW92ZShkZXBlbmRlbmNpZXMpLCBuZXR3b3JrX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAg
ICB3b3JrZXJfdGhyZWFkLCBudWxscHRyKSkgeworICAgICAgICAgICAgICAgICAgICAgIHdvcmtl
cl90aHJlYWQsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3Bv
cnRfZmFjdG9yeT0qL251bGxwdHIpKSB7CiAgICAgICBkZWxldGUgY2xpZW50OwogICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMzE3LDYgKzMyMCwxMiBAQCBjbGFzcyBQZWVyQ29ubmVj
dGlvbldyYXBwZXIgOiBwdWJsaWMgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyLAogICAg
IGljZV9jb25uZWN0aW9uX3N0YXRlX2hpc3RvcnlfLmNsZWFyKCk7CiAgIH0KIAorICAvLyBFdmVy
eSBQZWVyQ29ubmVjdGlvbiBzdGF0ZSBpbiBvcmRlciB0aGF0IGhhcyBiZWVuIHNlZW4gYnkgdGhl
IG9ic2VydmVyLgorICBzdGQ6OnZlY3RvcjxQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNv
bm5lY3Rpb25TdGF0ZT4KKyAgcGVlcl9jb25uZWN0aW9uX3N0YXRlX2hpc3RvcnkoKSBjb25zdCB7
CisgICAgcmV0dXJuIHBlZXJfY29ubmVjdGlvbl9zdGF0ZV9oaXN0b3J5XzsKKyAgfQorCiAgIC8v
IEV2ZXJ5IElDRSBnYXRoZXJpbmcgc3RhdGUgaW4gb3JkZXIgdGhhdCBoYXMgYmVlbiBzZWVuIGJ5
IHRoZSBvYnNlcnZlci4KICAgc3RkOjp2ZWN0b3I8UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6Oklj
ZUdhdGhlcmluZ1N0YXRlPgogICBpY2VfZ2F0aGVyaW5nX3N0YXRlX2hpc3RvcnkoKSBjb25zdCB7
CkBAIC01ODEsMTIgKzU5MCwxNCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbldyYXBwZXIgOiBwdWJs
aWMgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyLAogICBleHBsaWNpdCBQZWVyQ29ubmVj
dGlvbldyYXBwZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGRlYnVnX25hbWUpCiAgICAgICA6IGRlYnVn
X25hbWVfKGRlYnVnX25hbWUpIHt9CiAKLSAgYm9vbCBJbml0KGNvbnN0IFBlZXJDb25uZWN0aW9u
RmFjdG9yeTo6T3B0aW9ucyogb3B0aW9ucywKLSAgICAgICAgICAgIGNvbnN0IFBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uKiBjb25maWcsCi0gICAgICAgICAgICB3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llcywKLSAgICAgICAgICAg
IHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiB3
b3JrZXJfdGhyZWFkLAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6RmFrZVJ0
Y0V2ZW50TG9nRmFjdG9yeT4gZXZlbnRfbG9nX2ZhY3RvcnkpIHsKKyAgYm9vbCBJbml0KAorICAg
ICAgY29uc3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zKiBvcHRpb25zLAorICAgICAg
Y29uc3QgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24qIGNvbmZpZywK
KyAgICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzLAor
ICAgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgICAgcnRjOjpUaHJlYWQqIHdv
cmtlcl90aHJlYWQsCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpGYWtlUnRjRXZlbnRM
b2dGYWN0b3J5PiBldmVudF9sb2dfZmFjdG9yeSwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6Ok1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpIHsKICAg
ICAvLyBUaGVyZSdzIGFuIGVycm9yIGluIHRoaXMgdGVzdCBjb2RlIGlmIEluaXQgZW5kcyB1cCBi
ZWluZyBjYWxsZWQgdHdpY2UuCiAgICAgUlRDX0RDSEVDSyghcGVlcl9jb25uZWN0aW9uXyk7CiAg
ICAgUlRDX0RDSEVDSyghcGVlcl9jb25uZWN0aW9uX2ZhY3RvcnlfKTsKQEAgLTYyNCw2ICs2MzUs
MTAgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25XcmFwcGVyIDogcHVibGljIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25PYnNlcnZlciwKICAgICAgIHBjX2ZhY3RvcnlfZGVwZW5kZW5jaWVzLmV2ZW50X2xv
Z19mYWN0b3J5ID0KICAgICAgICAgICB3ZWJydGM6OkNyZWF0ZVJ0Y0V2ZW50TG9nRmFjdG9yeSgp
OwogICAgIH0KKyAgICBpZiAobWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpIHsKKyAgICAgIHBjX2Zh
Y3RvcnlfZGVwZW5kZW5jaWVzLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0KKyAgICAgICAgICBz
dGQ6Om1vdmUobWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpOworICAgIH0KICAgICBwZWVyX2Nvbm5l
Y3Rpb25fZmFjdG9yeV8gPSB3ZWJydGM6OkNyZWF0ZU1vZHVsYXJQZWVyQ29ubmVjdGlvbkZhY3Rv
cnkoCiAgICAgICAgIHN0ZDo6bW92ZShwY19mYWN0b3J5X2RlcGVuZGVuY2llcykpOwogCkBAIC05
MTMsNiArOTI4LDExIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uV3JhcHBlciA6IHB1YmxpYyB3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIsCiAgICAgRVhQRUNUX0VRKHBjKCktPmljZV9jb25u
ZWN0aW9uX3N0YXRlKCksIG5ld19zdGF0ZSk7CiAgICAgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfaGlz
dG9yeV8ucHVzaF9iYWNrKG5ld19zdGF0ZSk7CiAgIH0KKyAgdm9pZCBPbkNvbm5lY3Rpb25DaGFu
Z2UoCisgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlv
blN0YXRlIG5ld19zdGF0ZSkgb3ZlcnJpZGUgeworICAgIHBlZXJfY29ubmVjdGlvbl9zdGF0ZV9o
aXN0b3J5Xy5wdXNoX2JhY2sobmV3X3N0YXRlKTsKKyAgfQorCiAgIHZvaWQgT25JY2VHYXRoZXJp
bmdDaGFuZ2UoCiAgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VHYXRo
ZXJpbmdTdGF0ZSBuZXdfc3RhdGUpIG92ZXJyaWRlIHsKICAgICBFWFBFQ1RfRVEocGMoKS0+aWNl
X2dhdGhlcmluZ19zdGF0ZSgpLCBuZXdfc3RhdGUpOwpAQCAtMTAwOSw2ICsxMDI5LDggQEAgY2xh
c3MgUGVlckNvbm5lY3Rpb25XcmFwcGVyIDogcHVibGljIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25P
YnNlcnZlciwKIAogICBzdGQ6OnZlY3RvcjxQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29u
bmVjdGlvblN0YXRlPgogICAgICAgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfaGlzdG9yeV87CisgIHN0
ZDo6dmVjdG9yPFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlPgor
ICAgICAgcGVlcl9jb25uZWN0aW9uX3N0YXRlX2hpc3RvcnlfOwogICBzdGQ6OnZlY3RvcjxQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6SWNlR2F0aGVyaW5nU3RhdGU+CiAgICAgICBpY2VfZ2F0aGVy
aW5nX3N0YXRlX2hpc3RvcnlfOwogCkBAIC0xMTQyLDcgKzExNjQsOCBAQCBjbGFzcyBQZWVyQ29u
bmVjdGlvbkludGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAg
ICAgIHNzXyhuZXcgcnRjOjpWaXJ0dWFsU29ja2V0U2VydmVyKCkpLAogICAgICAgICBmc3NfKG5l
dyBydGM6OkZpcmV3YWxsU29ja2V0U2VydmVyKHNzXy5nZXQoKSkpLAogICAgICAgICBuZXR3b3Jr
X3RocmVhZF8obmV3IHJ0Yzo6VGhyZWFkKGZzc18uZ2V0KCkpKSwKLSAgICAgICAgd29ya2VyX3Ro
cmVhZF8ocnRjOjpUaHJlYWQ6OkNyZWF0ZSgpKSB7CisgICAgICAgIHdvcmtlcl90aHJlYWRfKHJ0
Yzo6VGhyZWFkOjpDcmVhdGUoKSksCisgICAgICAgIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHNf
KG5ldHdvcmtfdGhyZWFkXy5nZXQoKSkgewogICAgIG5ldHdvcmtfdGhyZWFkXy0+U2V0TmFtZSgi
UENOZXR3b3JrVGhyZWFkIiwgdGhpcyk7CiAgICAgd29ya2VyX3RocmVhZF8tPlNldE5hbWUoIlBD
V29ya2VyVGhyZWFkIiwgdGhpcyk7CiAgICAgUlRDX0NIRUNLKG5ldHdvcmtfdGhyZWFkXy0+U3Rh
cnQoKSk7CkBAIC0xMTk4LDcgKzEyMjEsOCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVncmF0
aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgICBjb25zdCBQZWVyQ29u
bmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMqIG9wdGlvbnMsCiAgICAgICBjb25zdCBSVENDb25maWd1
cmF0aW9uKiBjb25maWcsCiAgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVz
IGRlcGVuZGVuY2llcywKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkZha2VSdGNFdmVu
dExvZ0ZhY3Rvcnk+IGV2ZW50X2xvZ19mYWN0b3J5KSB7CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpGYWtlUnRjRXZlbnRMb2dGYWN0b3J5PiBldmVudF9sb2dfZmFjdG9yeSwKKyAgICAg
IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gbWVkaWFfdHJh
bnNwb3J0X2ZhY3RvcnkpIHsKICAgICBSVENDb25maWd1cmF0aW9uIG1vZGlmaWVkX2NvbmZpZzsK
ICAgICBpZiAoY29uZmlnKSB7CiAgICAgICBtb2RpZmllZF9jb25maWcgPSAqY29uZmlnOwpAQCAt
MTIxMyw3ICsxMjM3LDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogCiAgICAgaWYgKCFjbGllbnQtPkluaXQob3B0aW9u
cywgJm1vZGlmaWVkX2NvbmZpZywgc3RkOjptb3ZlKGRlcGVuZGVuY2llcyksCiAgICAgICAgICAg
ICAgICAgICAgICAgbmV0d29ya190aHJlYWRfLmdldCgpLCB3b3JrZXJfdGhyZWFkXy5nZXQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpKSkgewor
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSksCisgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KSkpIHsK
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gY2xpZW50OwpAQCAtMTIy
OSw3ICsxMjU0LDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgICAgICBuZXcgd2VicnRjOjpGYWtlUnRjRXZlbnRM
b2dGYWN0b3J5KHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCkpKTsKICAgICByZXR1cm4gQ3JlYXRlUGVl
ckNvbm5lY3Rpb25XcmFwcGVyKGRlYnVnX25hbWUsIG9wdGlvbnMsIGNvbmZpZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShkZXBlbmRlbmNpZXMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGV2ZW50X2xv
Z19mYWN0b3J5KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyptZWRpYV90cmFuc3BvcnRfZmFjdG9yeT0qL251bGxwdHIpOwogICB9CiAKICAg
Ym9vbCBDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXJzKCkgewpAQCAtMTI1MCwxMSArMTI3Niwx
MSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiAgICAgc2RwX3NlbWFudGljc18gPSBjYWxsZXJfc2VtYW50aWNzOwogICAg
IGNhbGxlcl8gPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXIoCiAgICAgICAgICJDYWxsZXIi
LCBudWxscHRyLCBudWxscHRyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzKG51
bGxwdHIpLAotICAgICAgICBudWxscHRyKTsKKyAgICAgICAgbnVsbHB0ciwgLyptZWRpYV90cmFu
c3BvcnRfZmFjdG9yeT0qL251bGxwdHIpOwogICAgIHNkcF9zZW1hbnRpY3NfID0gY2FsbGVlX3Nl
bWFudGljczsKICAgICBjYWxsZWVfID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyKAogICAg
ICAgICAiQ2FsbGVlIiwgbnVsbHB0ciwgbnVsbHB0ciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRl
cGVuZGVuY2llcyhudWxscHRyKSwKLSAgICAgICAgbnVsbHB0cik7CisgICAgICAgIG51bGxwdHIs
IC8qbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk9Ki9udWxscHRyKTsKICAgICBzZHBfc2VtYW50aWNz
XyA9IG9yaWdpbmFsX3NlbWFudGljczsKICAgICByZXR1cm4gY2FsbGVyXyAmJiBjYWxsZWVfOwog
ICB9CkBAIC0xMjY0LDEwICsxMjkwLDI4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZWdyYXRp
b25CYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICAgIGNvbnN0IFBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiBjYWxsZWVfY29uZmlnKSB7CiAgICAg
Y2FsbGVyXyA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcigKICAgICAgICAgIkNhbGxlciIs
IG51bGxwdHIsICZjYWxsZXJfY29uZmlnLAotICAgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9u
RGVwZW5kZW5jaWVzKG51bGxwdHIpLCBudWxscHRyKTsKKyAgICAgICAgd2VicnRjOjpQZWVyQ29u
bmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwgbnVsbHB0ciwKKyAgICAgICAgLyptZWRpYV90
cmFuc3BvcnRfZmFjdG9yeT0qL251bGxwdHIpOwogICAgIGNhbGxlZV8gPSBDcmVhdGVQZWVyQ29u
bmVjdGlvbldyYXBwZXIoCiAgICAgICAgICJDYWxsZWUiLCBudWxscHRyLCAmY2FsbGVlX2NvbmZp
ZywKLSAgICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwg
bnVsbHB0cik7CisgICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMobnVs
bHB0ciksIG51bGxwdHIsCisgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk9Ki9udWxs
cHRyKTsKKyAgICByZXR1cm4gY2FsbGVyXyAmJiBjYWxsZWVfOworICB9CisKKyAgYm9vbCBDcmVh
dGVQZWVyQ29ubmVjdGlvbldyYXBwZXJzV2l0aENvbmZpZ0FuZE1lZGlhVHJhbnNwb3J0RmFjdG9y
eSgKKyAgICAgIGNvbnN0IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9u
JiBjYWxsZXJfY29uZmlnLAorICAgICAgY29uc3QgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJU
Q0NvbmZpZ3VyYXRpb24mIGNhbGxlZV9jb25maWcsCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IGNhbGxlcl9mYWN0b3J5LAorICAgICAgc3RkOjp1
bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRGYWN0b3J5PiBjYWxsZWVfZmFjdG9yeSkg
eworICAgIGNhbGxlcl8gPQorICAgICAgICBDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXIoIkNh
bGxlciIsIG51bGxwdHIsICZjYWxsZXJfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIHN0ZDo6bW92ZShj
YWxsZXJfZmFjdG9yeSkpOworICAgIGNhbGxlZV8gPQorICAgICAgICBDcmVhdGVQZWVyQ29ubmVj
dGlvbldyYXBwZXIoIkNhbGxlZSIsIG51bGxwdHIsICZjYWxsZWVfY29uZmlnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVu
Y2llcyhudWxscHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsIHN0ZDo6bW92ZShjYWxsZWVfZmFjdG9yeSkpOwogICAgIHJldHVybiBjYWxsZXJfICYmIGNh
bGxlZV87CiAgIH0KIApAQCAtMTI3OCwxMCArMTMyMiwxMiBAQCBjbGFzcyBQZWVyQ29ubmVjdGlv
bkludGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgICB3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzIGNhbGxlZV9kZXBlbmRlbmNpZXMpIHsKICAg
ICBjYWxsZXJfID0KICAgICAgICAgQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyKCJDYWxsZXIi
LCBudWxscHRyLCAmY2FsbGVyX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bW92ZShjYWxsZXJfZGVwZW5kZW5jaWVzKSwgbnVsbHB0cik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoY2FsbGVyX2RlcGVuZGVuY2ll
cyksIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlh
X3RyYW5zcG9ydF9mYWN0b3J5PSovbnVsbHB0cik7CiAgICAgY2FsbGVlXyA9CiAgICAgICAgIENy
ZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcigiQ2FsbGVlIiwgbnVsbHB0ciwgJmNhbGxlZV9jb25m
aWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoY2FsbGVl
X2RlcGVuZGVuY2llcyksIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptb3ZlKGNhbGxlZV9kZXBlbmRlbmNpZXMpLCBudWxscHRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnRfZmFjdG9yeT0qL251
bGxwdHIpOwogICAgIHJldHVybiBjYWxsZXJfICYmIGNhbGxlZV87CiAgIH0KIApAQCAtMTI5MCwx
MCArMTMzNiwxMiBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uQmFzZVRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgICBjb25zdCBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6
Ok9wdGlvbnMmIGNhbGxlZV9vcHRpb25zKSB7CiAgICAgY2FsbGVyXyA9IENyZWF0ZVBlZXJDb25u
ZWN0aW9uV3JhcHBlcigKICAgICAgICAgIkNhbGxlciIsICZjYWxsZXJfb3B0aW9ucywgbnVsbHB0
ciwKLSAgICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwg
bnVsbHB0cik7CisgICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMobnVs
bHB0ciksIG51bGxwdHIsCisgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk9Ki9udWxs
cHRyKTsKICAgICBjYWxsZWVfID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyKAogICAgICAg
ICAiQ2FsbGVlIiwgJmNhbGxlZV9vcHRpb25zLCBudWxscHRyLAotICAgICAgICB3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzKG51bGxwdHIpLCBudWxscHRyKTsKKyAgICAgICAgd2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwgbnVsbHB0ciwKKyAgICAg
ICAgLyptZWRpYV90cmFuc3BvcnRfZmFjdG9yeT0qL251bGxwdHIpOwogICAgIHJldHVybiBjYWxs
ZXJfICYmIGNhbGxlZV87CiAgIH0KIApAQCAtMTMxNyw3ICsxMzY1LDggQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAg
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzKG51bGxwdHIp
OwogICAgIGRlcGVuZGVuY2llcy5jZXJ0X2dlbmVyYXRvciA9IHN0ZDo6bW92ZShjZXJ0X2dlbmVy
YXRvcik7CiAgICAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcigiTmV3IFBlZXIi
LCBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptb3ZlKGRlcGVuZGVuY2llcyksIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGRlcGVuZGVuY2llcyksIG51bGxwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydF9m
YWN0b3J5PSovbnVsbHB0cik7CiAgIH0KIAogICBjcmlja2V0OjpUZXN0VHVyblNlcnZlciogQ3Jl
YXRlVHVyblNlcnZlcigKQEAgLTE0MDUsNiArMTQ1NCwxMCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlv
bkludGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAKICAgcnRjOjpW
aXJ0dWFsU29ja2V0U2VydmVyKiB2aXJ0dWFsX3NvY2tldF9zZXJ2ZXIoKSB7IHJldHVybiBzc18u
Z2V0KCk7IH0KIAorICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0UGFpciogbG9vcGJhY2tfbWVkaWFf
dHJhbnNwb3J0cygpIHsKKyAgICByZXR1cm4gJmxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHNfOwor
ICB9CisKICAgUGVlckNvbm5lY3Rpb25XcmFwcGVyKiBjYWxsZXIoKSB7IHJldHVybiBjYWxsZXJf
LmdldCgpOyB9CiAKICAgLy8gU2V0IHRoZSB8Y2FsbGVyX3wgdG8gdGhlIHx3cmFwcGVyfCBwYXNz
ZWQgaW4gYW5kIHJldHVybiB0aGUKQEAgLTE1NTcsOSArMTYxMCwxMSBAQCBjbGFzcyBQZWVyQ29u
bmVjdGlvbkludGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVtb3RlX2djbV9lbmFi
bGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXhwZWN0
ZWRfY2lwaGVyX3N1aXRlKSB7CiAgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zIGNh
bGxlcl9vcHRpb25zOwotICAgIGNhbGxlcl9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9n
Y21fY3J5cHRvX3N1aXRlcyA9IGxvY2FsX2djbV9lbmFibGVkOworICAgIGNhbGxlcl9vcHRpb25z
LmNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0KKyAgICAgICAg
bG9jYWxfZ2NtX2VuYWJsZWQ7CiAgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zIGNh
bGxlZV9vcHRpb25zOwotICAgIGNhbGxlZV9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9n
Y21fY3J5cHRvX3N1aXRlcyA9IHJlbW90ZV9nY21fZW5hYmxlZDsKKyAgICBjYWxsZWVfb3B0aW9u
cy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9CisgICAgICAg
IHJlbW90ZV9nY21fZW5hYmxlZDsKICAgICBUZXN0TmVnb3RpYXRlZENpcGhlclN1aXRlKGNhbGxl
cl9vcHRpb25zLCBjYWxsZWVfb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkX2NpcGhlcl9zdWl0ZSk7CiAgIH0KQEAgLTE1ODEsNiArMTYzNiw3IEBAIGNsYXNz
IFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25CYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKICAgLy8gb24gdGhlIG5ldHdvcmsgdGhyZWFkLgogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Y3JpY2tldDo6VGVzdFR1cm5TZXJ2ZXI+PiB0dXJuX3NlcnZlcnNfOwogICBzdGQ6OnZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6VGVzdFR1cm5DdXN0b21pemVyPj4gdHVybl9j
dXN0b21pemVyc187CisgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRQYWlyIGxvb3BiYWNrX21lZGlh
X3RyYW5zcG9ydHNfOwogICBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25XcmFwcGVyPiBj
YWxsZXJfOwogICBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25XcmFwcGVyPiBjYWxsZWVf
OwogfTsKQEAgLTE4MDUsMjYgKzE4NjEsMjYgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdy
YXRpb25UZXN0LAogCiAgIGF1dG8gY2FsbGVyX3JlbW90ZV9jZXJ0ID0gR2V0UmVtb3RlQXVkaW9T
U0xDZXJ0aWZpY2F0ZShjYWxsZXIoKSk7CiAgIEFTU0VSVF9UUlVFKGNhbGxlcl9yZW1vdGVfY2Vy
dCk7Ci0gIEVYUEVDVF9FUShjYWxsZWVfY2VydC0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJp
bmcoKSwKKyAgRVhQRUNUX0VRKGNhbGxlZV9jZXJ0LT5HZXRTU0xDZXJ0aWZpY2F0ZSgpLlRvUEVN
U3RyaW5nKCksCiAgICAgICAgICAgICBjYWxsZXJfcmVtb3RlX2NlcnQtPlRvUEVNU3RyaW5nKCkp
OwogCiAgIGF1dG8gY2FsbGVlX3JlbW90ZV9jZXJ0ID0gR2V0UmVtb3RlQXVkaW9TU0xDZXJ0aWZp
Y2F0ZShjYWxsZWUoKSk7CiAgIEFTU0VSVF9UUlVFKGNhbGxlZV9yZW1vdGVfY2VydCk7Ci0gIEVY
UEVDVF9FUShjYWxsZXJfY2VydC0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwKKyAg
RVhQRUNUX0VRKGNhbGxlcl9jZXJ0LT5HZXRTU0xDZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCks
CiAgICAgICAgICAgICBjYWxsZWVfcmVtb3RlX2NlcnQtPlRvUEVNU3RyaW5nKCkpOwogCiAgIGF1
dG8gY2FsbGVyX3JlbW90ZV9jZXJ0X2NoYWluID0gR2V0UmVtb3RlQXVkaW9TU0xDZXJ0Q2hhaW4o
Y2FsbGVyKCkpOwogICBBU1NFUlRfVFJVRShjYWxsZXJfcmVtb3RlX2NlcnRfY2hhaW4pOwogICBB
U1NFUlRfRVEoMVUsIGNhbGxlcl9yZW1vdGVfY2VydF9jaGFpbi0+R2V0U2l6ZSgpKTsKICAgYXV0
byByZW1vdGVfY2VydCA9ICZjYWxsZXJfcmVtb3RlX2NlcnRfY2hhaW4tPkdldCgwKTsKLSAgRVhQ
RUNUX0VRKGNhbGxlZV9jZXJ0LT5zc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpLAorICBF
WFBFQ1RfRVEoY2FsbGVlX2NlcnQtPkdldFNTTENlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwK
ICAgICAgICAgICAgIHJlbW90ZV9jZXJ0LT5Ub1BFTVN0cmluZygpKTsKIAogICBhdXRvIGNhbGxl
ZV9yZW1vdGVfY2VydF9jaGFpbiA9IEdldFJlbW90ZUF1ZGlvU1NMQ2VydENoYWluKGNhbGxlZSgp
KTsKICAgQVNTRVJUX1RSVUUoY2FsbGVlX3JlbW90ZV9jZXJ0X2NoYWluKTsKICAgQVNTRVJUX0VR
KDFVLCBjYWxsZWVfcmVtb3RlX2NlcnRfY2hhaW4tPkdldFNpemUoKSk7CiAgIHJlbW90ZV9jZXJ0
ID0gJmNhbGxlZV9yZW1vdGVfY2VydF9jaGFpbi0+R2V0KDApOwotICBFWFBFQ1RfRVEoY2FsbGVy
X2NlcnQtPnNzbF9jZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCksCisgIEVYUEVDVF9FUShjYWxs
ZXJfY2VydC0+R2V0U1NMQ2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpLAogICAgICAgICAgICAg
cmVtb3RlX2NlcnQtPlRvUEVNU3RyaW5nKCkpOwogfQogCkBAIC0yODQyLDkgKzI4OTgsMTAgQEAg
VEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LCBDYWxsZXJEdGxzMTBUb0NhbGxl
ZUR0bHMxMikgewogVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LAogICAgICAg
IEFlczEyOFNoYTFfMzJfQ2lwaGVyTm90VXNlZFdoZW5Pbmx5Q2FsbGVyU3VwcG9ydGVkKSB7CiAg
IFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyBjYWxsZXJfb3B0aW9uczsKLSAgY2FsbGVy
X29wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBo
ZXIgPSB0cnVlOworICBjYWxsZXJfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9h
ZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gdHJ1ZTsKICAgUGVlckNvbm5lY3Rpb25GYWN0
b3J5OjpPcHRpb25zIGNhbGxlZV9vcHRpb25zOwotICBjYWxsZWVfb3B0aW9ucy5jcnlwdG9fb3B0
aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9IGZhbHNlOworICBjYWxs
ZWVfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlw
dG9fY2lwaGVyID0KKyAgICAgIGZhbHNlOwogICBpbnQgZXhwZWN0ZWRfY2lwaGVyX3N1aXRlID0g
cnRjOjpTUlRQX0FFUzEyOF9DTV9TSEExXzgwOwogICBUZXN0TmVnb3RpYXRlZENpcGhlclN1aXRl
KGNhbGxlcl9vcHRpb25zLCBjYWxsZWVfb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZF9jaXBoZXJfc3VpdGUpOwpAQCAtMjg1Myw5ICsyOTEwLDEwIEBAIFRFU1Rf
UChQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uVGVzdCwKIFRFU1RfUChQZWVyQ29ubmVjdGlvbklu
dGVncmF0aW9uVGVzdCwKICAgICAgICBBZXMxMjhTaGExXzMyX0NpcGhlck5vdFVzZWRXaGVuT25s
eUNhbGxlZVN1cHBvcnRlZCkgewogICBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMgY2Fs
bGVyX29wdGlvbnM7Ci0gIGNhbGxlcl9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9hZXMx
Mjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gZmFsc2U7CisgIGNhbGxlcl9vcHRpb25zLmNyeXB0
b19vcHRpb25zLnNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPQorICAg
ICAgZmFsc2U7CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyBjYWxsZWVfb3B0aW9u
czsKLSAgY2FsbGVlX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2FlczEyOF9zaGExXzMy
X2NyeXB0b19jaXBoZXIgPSB0cnVlOworICBjYWxsZWVfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5z
cnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gdHJ1ZTsKICAgaW50IGV4
cGVjdGVkX2NpcGhlcl9zdWl0ZSA9IHJ0Yzo6U1JUUF9BRVMxMjhfQ01fU0hBMV84MDsKICAgVGVz
dE5lZ290aWF0ZWRDaXBoZXJTdWl0ZShjYWxsZXJfb3B0aW9ucywgY2FsbGVlX29wdGlvbnMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfY2lwaGVyX3N1aXRlKTsKQEAgLTI4
NjMsOSArMjkyMSw5IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uVGVzdCwKIAog
VEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LCBBZXMxMjhTaGExXzMyX0NpcGhl
clVzZWRXaGVuU3VwcG9ydGVkKSB7CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyBj
YWxsZXJfb3B0aW9uczsKLSAgY2FsbGVyX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2Fl
czEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPSB0cnVlOworICBjYWxsZXJfb3B0aW9ucy5jcnlw
dG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gdHJ1
ZTsKICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zIGNhbGxlZV9vcHRpb25zOwotICBj
YWxsZWVfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRv
X2NpcGhlciA9IHRydWU7CisgIGNhbGxlZV9vcHRpb25zLmNyeXB0b19vcHRpb25zLnNydHAuZW5h
YmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPSB0cnVlOwogICBpbnQgZXhwZWN0ZWRf
Y2lwaGVyX3N1aXRlID0gcnRjOjpTUlRQX0FFUzEyOF9DTV9TSEExXzMyOwogICBUZXN0TmVnb3Rp
YXRlZENpcGhlclN1aXRlKGNhbGxlcl9vcHRpb25zLCBjYWxsZWVfb3B0aW9ucywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9jaXBoZXJfc3VpdGUpOwpAQCAtMjkxNSw3ICsy
OTczLDcgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LAogLy8gd29ya3Mg
d2l0aCBpdC4KIFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uVGVzdCwgRW5kVG9FbmRD
YWxsV2l0aEdjbUNpcGhlcikgewogICBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMgZ2Nt
X29wdGlvbnM7Ci0gIGdjbV9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5cHRv
X3N1aXRlcyA9IHRydWU7CisgIGdjbV9vcHRpb25zLmNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxl
X2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKICAgQVNTRVJUX1RSVUUoCiAgICAgICBDcmVhdGVQ
ZWVyQ29ubmVjdGlvbldyYXBwZXJzV2l0aE9wdGlvbnMoZ2NtX29wdGlvbnMsIGdjbV9vcHRpb25z
KSk7CiAgIENvbm5lY3RGYWtlU2lnbmFsaW5nKCk7CkBAIC0zMzI5LDYgKzMzODcsMTQ2IEBAIFRF
U1RfUChQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uVGVzdCwKIAogI2VuZGlmICAvLyBIQVZFX1ND
VFAKIAorLy8gVGhpcyB0ZXN0IHNldHMgdXAgYSBjYWxsIGJldHdlZW4gdHdvIHBhcnRpZXMgd2l0
aCBhIG1lZGlhIHRyYW5zcG9ydCBkYXRhCisvLyBjaGFubmVsLgorVEVTVF9QKFBlZXJDb25uZWN0
aW9uSW50ZWdyYXRpb25UZXN0LCBNZWRpYVRyYW5zcG9ydERhdGFDaGFubmVsRW5kVG9FbmQpIHsK
KyAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gcnRjX2NvbmZpZzsK
KyAgcnRjX2NvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1
ZTsKKyAgcnRjX2NvbmZpZy5lbmFibGVfZHRsc19zcnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJl
cXVpcmVkIGZvciBtZWRpYSB0cmFuc3BvcnQuCisgIEFTU0VSVF9UUlVFKENyZWF0ZVBlZXJDb25u
ZWN0aW9uV3JhcHBlcnNXaXRoQ29uZmlnQW5kTWVkaWFUcmFuc3BvcnRGYWN0b3J5KAorICAgICAg
cnRjX2NvbmZpZywgcnRjX2NvbmZpZywgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5maXJz
dF9mYWN0b3J5KCksCisgICAgICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPnNlY29uZF9m
YWN0b3J5KCkpKTsKKyAgQ29ubmVjdEZha2VTaWduYWxpbmcoKTsKKworICAvLyBFeHBlY3QgdGhh
dCBkYXRhIGNoYW5uZWwgY3JlYXRlZCBvbiBjYWxsZXIgc2lkZSB3aWxsIHNob3cgdXAgZm9yIGNh
bGxlZSBhcworICAvLyB3ZWxsLgorICBjYWxsZXIoKS0+Q3JlYXRlRGF0YUNoYW5uZWwoKTsKKyAg
Y2FsbGVyKCktPkNyZWF0ZUFuZFNldEFuZFNpZ25hbE9mZmVyKCk7CisgIEFTU0VSVF9UUlVFX1dB
SVQoU2lnbmFsaW5nU3RhdGVTdGFibGUoKSwga0RlZmF1bHRUaW1lb3V0KTsKKworICAvLyBFbnN1
cmUgdGhhdCB0aGUgbWVkaWEgdHJhbnNwb3J0IGlzIHJlYWR5LgorICBsb29wYmFja19tZWRpYV90
cmFuc3BvcnRzKCktPlNldFN0YXRlKHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRh
YmxlKTsKKyAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5GbHVzaEFzeW5jSW52b2tlcygp
OworCisgIC8vIENhbGxlciBkYXRhIGNoYW5uZWwgc2hvdWxkIGFscmVhZHkgZXhpc3QgKGl0IGNy
ZWF0ZWQgb25lKS4gQ2FsbGVlIGRhdGEKKyAgLy8gY2hhbm5lbCBtYXkgbm90IGV4aXN0IHlldCwg
c2luY2UgbmVnb3RpYXRpb24gaGFwcGVucyBpbi1iYW5kLCBub3QgaW4gU0RQLgorICBBU1NFUlRf
TkUobnVsbHB0ciwgY2FsbGVyKCktPmRhdGFfY2hhbm5lbCgpKTsKKyAgQVNTRVJUX1RSVUVfV0FJ
VChjYWxsZWUoKS0+ZGF0YV9jaGFubmVsKCkgIT0gbnVsbHB0ciwga0RlZmF1bHRUaW1lb3V0KTsK
KyAgRVhQRUNUX1RSVUVfV0FJVChjYWxsZXIoKS0+ZGF0YV9vYnNlcnZlcigpLT5Jc09wZW4oKSwg
a0RlZmF1bHRUaW1lb3V0KTsKKyAgRVhQRUNUX1RSVUVfV0FJVChjYWxsZWUoKS0+ZGF0YV9vYnNl
cnZlcigpLT5Jc09wZW4oKSwga0RlZmF1bHRUaW1lb3V0KTsKKworICAvLyBFbnN1cmUgZGF0YSBj
YW4gYmUgc2VudCBpbiBib3RoIGRpcmVjdGlvbnMuCisgIHN0ZDo6c3RyaW5nIGRhdGEgPSAiaGVs
bG8gd29ybGQiOworICBjYWxsZXIoKS0+ZGF0YV9jaGFubmVsKCktPlNlbmQoRGF0YUJ1ZmZlcihk
YXRhKSk7CisgIEVYUEVDVF9FUV9XQUlUKGRhdGEsIGNhbGxlZSgpLT5kYXRhX29ic2VydmVyKCkt
Pmxhc3RfbWVzc2FnZSgpLAorICAgICAgICAgICAgICAgICBrRGVmYXVsdFRpbWVvdXQpOworICBj
YWxsZWUoKS0+ZGF0YV9jaGFubmVsKCktPlNlbmQoRGF0YUJ1ZmZlcihkYXRhKSk7CisgIEVYUEVD
VF9FUV9XQUlUKGRhdGEsIGNhbGxlcigpLT5kYXRhX29ic2VydmVyKCktPmxhc3RfbWVzc2FnZSgp
LAorICAgICAgICAgICAgICAgICBrRGVmYXVsdFRpbWVvdXQpOworfQorCisvLyBFbnN1cmUgdGhh
dCB3aGVuIHRoZSBjYWxsZWUgY2xvc2VzIGEgbWVkaWEgdHJhbnNwb3J0IGRhdGEgY2hhbm5lbCwg
dGhlCisvLyBjbG9zaW5nIHByb2NlZHVyZSByZXN1bHRzIGluIHRoZSBkYXRhIGNoYW5uZWwgYmVp
bmcgY2xvc2VkIGZvciB0aGUgY2FsbGVyCisvLyBhcyB3ZWxsLgorVEVTVF9QKFBlZXJDb25uZWN0
aW9uSW50ZWdyYXRpb25UZXN0LCBNZWRpYVRyYW5zcG9ydERhdGFDaGFubmVsQ2FsbGVlQ2xvc2Vz
KSB7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uIHJ0Y19jb25m
aWc7CisgIHJ0Y19jb25maWcudXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9
IHRydWU7CisgIHJ0Y19jb25maWcuZW5hYmxlX2R0bHNfc3J0cCA9IGZhbHNlOyAgLy8gU0RFUyBp
cyByZXF1aXJlZCBmb3IgbWVkaWEgdHJhbnNwb3J0LgorICBBU1NFUlRfVFJVRShDcmVhdGVQZWVy
Q29ubmVjdGlvbldyYXBwZXJzV2l0aENvbmZpZ0FuZE1lZGlhVHJhbnNwb3J0RmFjdG9yeSgKKyAg
ICAgIHJ0Y19jb25maWcsIHJ0Y19jb25maWcsIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+
Zmlyc3RfZmFjdG9yeSgpLAorICAgICAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5zZWNv
bmRfZmFjdG9yeSgpKSk7CisgIENvbm5lY3RGYWtlU2lnbmFsaW5nKCk7CisKKyAgLy8gQ3JlYXRl
IGEgZGF0YSBjaGFubmVsIG9uIHRoZSBjYWxsZXIgYW5kIHNpZ25hbCBpdCB0byB0aGUgY2FsbGVl
LgorICBjYWxsZXIoKS0+Q3JlYXRlRGF0YUNoYW5uZWwoKTsKKyAgY2FsbGVyKCktPkNyZWF0ZUFu
ZFNldEFuZFNpZ25hbE9mZmVyKCk7CisgIEFTU0VSVF9UUlVFX1dBSVQoU2lnbmFsaW5nU3RhdGVT
dGFibGUoKSwga0RlZmF1bHRUaW1lb3V0KTsKKworICAvLyBFbnN1cmUgdGhhdCB0aGUgbWVkaWEg
dHJhbnNwb3J0IGlzIHJlYWR5LgorICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPlNldFN0
YXRlKHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKTsKKyAgbG9vcGJhY2tf
bWVkaWFfdHJhbnNwb3J0cygpLT5GbHVzaEFzeW5jSW52b2tlcygpOworCisgIC8vIERhdGEgY2hh
bm5lbHMgZXhpc3QgYW5kIG9wZW4gb24gYm90aCBlbmRzIG9mIHRoZSBjb25uZWN0aW9uLgorICBB
U1NFUlRfTkUobnVsbHB0ciwgY2FsbGVyKCktPmRhdGFfY2hhbm5lbCgpKTsKKyAgQVNTRVJUX1RS
VUVfV0FJVChjYWxsZWUoKS0+ZGF0YV9jaGFubmVsKCkgIT0gbnVsbHB0ciwga0RlZmF1bHRUaW1l
b3V0KTsKKyAgQVNTRVJUX1RSVUVfV0FJVChjYWxsZXIoKS0+ZGF0YV9vYnNlcnZlcigpLT5Jc09w
ZW4oKSwga0RlZmF1bHRUaW1lb3V0KTsKKyAgQVNTRVJUX1RSVUVfV0FJVChjYWxsZWUoKS0+ZGF0
YV9vYnNlcnZlcigpLT5Jc09wZW4oKSwga0RlZmF1bHRUaW1lb3V0KTsKKworICAvLyBDbG9zZSB0
aGUgZGF0YSBjaGFubmVsIG9uIHRoZSBjYWxsZWUgc2lkZSwgYW5kIHdhaXQgZm9yIGl0IHRvIHJl
YWNoIHRoZQorICAvLyAiY2xvc2VkIiBzdGF0ZSBvbiBib3RoIHNpZGVzLgorICBjYWxsZWUoKS0+
ZGF0YV9jaGFubmVsKCktPkNsb3NlKCk7CisgIEVYUEVDVF9UUlVFX1dBSVQoIWNhbGxlcigpLT5k
YXRhX29ic2VydmVyKCktPklzT3BlbigpLCBrRGVmYXVsdFRpbWVvdXQpOworICBFWFBFQ1RfVFJV
RV9XQUlUKCFjYWxsZWUoKS0+ZGF0YV9vYnNlcnZlcigpLT5Jc09wZW4oKSwga0RlZmF1bHRUaW1l
b3V0KTsKK30KKworVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LAorICAgICAg
IE1lZGlhVHJhbnNwb3J0RGF0YUNoYW5uZWxDb25maWdTZW50VG9PdGhlclNpZGUpIHsKKyAgUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gcnRjX2NvbmZpZzsKKyAgcnRj
X2NvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1ZTsKKyAg
cnRjX2NvbmZpZy5lbmFibGVfZHRsc19zcnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJlcXVpcmVk
IGZvciBtZWRpYSB0cmFuc3BvcnQuCisgIEFTU0VSVF9UUlVFKENyZWF0ZVBlZXJDb25uZWN0aW9u
V3JhcHBlcnNXaXRoQ29uZmlnQW5kTWVkaWFUcmFuc3BvcnRGYWN0b3J5KAorICAgICAgcnRjX2Nv
bmZpZywgcnRjX2NvbmZpZywgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5maXJzdF9mYWN0
b3J5KCksCisgICAgICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPnNlY29uZF9mYWN0b3J5
KCkpKTsKKyAgQ29ubmVjdEZha2VTaWduYWxpbmcoKTsKKworICAvLyBDcmVhdGUgYSBkYXRhIGNo
YW5uZWwgd2l0aCBhIG5vbi1kZWZhdWx0IGNvbmZpZ3VyYXRpb24gYW5kIHNpZ25hbCBpdCB0byB0
aGUKKyAgLy8gY2FsbGVlLgorICB3ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OworICBpbml0
LmlkID0gNTM7CisgIGluaXQubWF4UmV0cmFuc21pdHMgPSA1MjsKKyAgY2FsbGVyKCktPkNyZWF0
ZURhdGFDaGFubmVsKCJkYXRhLWNoYW5uZWwiLCAmaW5pdCk7CisgIGNhbGxlcigpLT5DcmVhdGVB
bmRTZXRBbmRTaWduYWxPZmZlcigpOworICBBU1NFUlRfVFJVRV9XQUlUKFNpZ25hbGluZ1N0YXRl
U3RhYmxlKCksIGtEZWZhdWx0VGltZW91dCk7CisKKyAgLy8gRW5zdXJlIHRoYXQgdGhlIG1lZGlh
IHRyYW5zcG9ydCBpcyByZWFkeS4KKyAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5TZXRT
dGF0ZSh3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJsZSk7CisgIGxvb3BiYWNr
X21lZGlhX3RyYW5zcG9ydHMoKS0+Rmx1c2hBc3luY0ludm9rZXMoKTsKKworICAvLyBFbnN1cmUg
dGhhdCB0aGUgZGF0YSBjaGFubmVsIGV4aXN0cyBvbiB0aGUgY2FsbGVlIHdpdGggdGhlIGNvcnJl
Y3QKKyAgLy8gY29uZmlndXJhdGlvbi4KKyAgQVNTRVJUX1RSVUVfV0FJVChjYWxsZWUoKS0+ZGF0
YV9jaGFubmVsKCkgIT0gbnVsbHB0ciwga0RlZmF1bHRUaW1lb3V0KTsKKyAgQVNTRVJUX1RSVUVf
V0FJVChjYWxsZWUoKS0+ZGF0YV9vYnNlcnZlcigpLT5Jc09wZW4oKSwga0RlZmF1bHRUaW1lb3V0
KTsKKyAgRVhQRUNUX0VRKGluaXQuaWQsIGNhbGxlZSgpLT5kYXRhX2NoYW5uZWwoKS0+aWQoKSk7
CisgIEVYUEVDVF9FUSgiZGF0YS1jaGFubmVsIiwgY2FsbGVlKCktPmRhdGFfY2hhbm5lbCgpLT5s
YWJlbCgpKTsKKyAgRVhQRUNUX0VRKGluaXQubWF4UmV0cmFuc21pdHMsIGNhbGxlZSgpLT5kYXRh
X2NoYW5uZWwoKS0+bWF4UmV0cmFuc21pdHMoKSk7CisgIEVYUEVDVF9GQUxTRShjYWxsZWUoKS0+
ZGF0YV9jaGFubmVsKCktPm5lZ290aWF0ZWQoKSk7Cit9CisKK1RFU1RfUChQZWVyQ29ubmVjdGlv
bkludGVncmF0aW9uVGVzdCwgTWVkaWFUcmFuc3BvcnRCaWRpcmVjdGlvbmFsQXVkaW8pIHsKKyAg
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gcnRjX2NvbmZpZzsKKyAg
cnRjX2NvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0ID0gdHJ1ZTsKKyAgcnRjX2NvbmZpZy5lbmFi
bGVfZHRsc19zcnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJlcXVpcmVkIGZvciBtZWRpYSB0cmFu
c3BvcnQuCisgIEFTU0VSVF9UUlVFKENyZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcnNXaXRoQ29u
ZmlnQW5kTWVkaWFUcmFuc3BvcnRGYWN0b3J5KAorICAgICAgcnRjX2NvbmZpZywgcnRjX2NvbmZp
ZywgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5maXJzdF9mYWN0b3J5KCksCisgICAgICBs
b29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPnNlY29uZF9mYWN0b3J5KCkpKTsKKyAgQ29ubmVj
dEZha2VTaWduYWxpbmcoKTsKKworICBjYWxsZXIoKS0+QWRkQXVkaW9UcmFjaygpOworICBjYWxs
ZWUoKS0+QWRkQXVkaW9UcmFjaygpOworICAvLyBTdGFydCBvZmZlci9hbnN3ZXIgZXhjaGFuZ2Ug
YW5kIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgorICBjYWxsZXIoKS0+Q3JlYXRlQW5kU2V0QW5k
U2lnbmFsT2ZmZXIoKTsKKyAgQVNTRVJUX1RSVUVfV0FJVChTaWduYWxpbmdTdGF0ZVN0YWJsZSgp
LCBrRGVmYXVsdFRpbWVvdXQpOworCisgIC8vIEVuc3VyZSB0aGF0IHRoZSBtZWRpYSB0cmFuc3Bv
cnQgaXMgcmVhZHkuCisgIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+U2V0U3RhdGUod2Vi
cnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpOworICBsb29wYmFja19tZWRpYV90
cmFuc3BvcnRzKCktPkZsdXNoQXN5bmNJbnZva2VzKCk7CisKKyAgTWVkaWFFeHBlY3RhdGlvbnMg
bWVkaWFfZXhwZWN0YXRpb25zOworICBtZWRpYV9leHBlY3RhdGlvbnMuRXhwZWN0QmlkaXJlY3Rp
b25hbEF1ZGlvKCk7CisgIEFTU0VSVF9UUlVFKEV4cGVjdE5ld0ZyYW1lcyhtZWRpYV9leHBlY3Rh
dGlvbnMpKTsKKworICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0UGFpcjo6U3RhdHMgZmlyc3Rfc3Rh
dHMgPQorICAgICAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5GaXJzdFN0YXRzKCk7Cisg
IHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRQYWlyOjpTdGF0cyBzZWNvbmRfc3RhdHMgPQorICAgICAg
bG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5TZWNvbmRTdGF0cygpOworCisgIEVYUEVDVF9H
VChmaXJzdF9zdGF0cy5yZWNlaXZlZF9hdWRpb19mcmFtZXMsIDApOworICBFWFBFQ1RfR0Uoc2Vj
b25kX3N0YXRzLnNlbnRfYXVkaW9fZnJhbWVzLCBmaXJzdF9zdGF0cy5yZWNlaXZlZF9hdWRpb19m
cmFtZXMpOworCisgIEVYUEVDVF9HVChzZWNvbmRfc3RhdHMucmVjZWl2ZWRfYXVkaW9fZnJhbWVz
LCAwKTsKKyAgRVhQRUNUX0dFKGZpcnN0X3N0YXRzLnNlbnRfYXVkaW9fZnJhbWVzLCBzZWNvbmRf
c3RhdHMucmVjZWl2ZWRfYXVkaW9fZnJhbWVzKTsKK30KKwogLy8gVGVzdCB0aGF0IHRoZSBJQ0Ug
Y29ubmVjdGlvbiBhbmQgZ2F0aGVyaW5nIHN0YXRlcyBldmVudHVhbGx5IHJlYWNoCiAvLyAiY29t
cGxldGUiLgogVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LCBJY2VTdGF0ZXNS
ZWFjaENvbXBsZXRpb24pIHsKQEAgLTM1NTcsNiArMzc1NSwxNyBAQCBURVNUX1AoUGVlckNvbm5l
Y3Rpb25JbnRlZ3JhdGlvbkljZVN0YXRlc1Rlc3QsIFZlcmlmeUljZVN0YXRlcykgewogICAgICAg
ICAgICAgICBFbGVtZW50c0FyZShQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rp
b25DaGVja2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25Db21wbGV0ZWQpKTsKKyAg
Ly8gQWZ0ZXIgdGhlIGljZSB0cmFuc3BvcnQgdHJhbnNpdGlvbnMgZnJvbSBjaGVja2luZyB0byBj
b25uZWN0ZWQgd2UgcmV2ZXJ0CisgIC8vIGJhY2sgdG8gbmV3IGFzIHRoZSBzdGFuZGFyZCByZXF1
aXJlcywgYXMgYXQgdGhhdCBwb2ludCB0aGUgRFRMUyB0cmFuc3BvcnQKKyAgLy8gaXMgaW4gdGhl
ICJuZXciIHN0YXRlIHdoaWxlIG5vIHRyYW5zcG9ydHMgYXJlICJjb25uZWN0aW5nIiwgImNoZWNr
aW5nIiwKKyAgLy8gImZhaWxlZCIgb3IgZGlzY29ubmVjdGVkLiBUaGlzIGlzIHByZXR0eSB1bmlu
dHVpdGl2ZSwgYW5kIHdlIG1pZ2h0IHdhbnQgdG8KKyAgLy8gYW1lbmQgdGhlIHNwZWMgdG8gaGFu
ZGxlIHRoaXMgY2FzZSBtb3JlIGdyYWNlZnVsbHkuCisgIEVYUEVDVF9USEFUKAorICAgICAgY2Fs
bGVyKCktPnBlZXJfY29ubmVjdGlvbl9zdGF0ZV9oaXN0b3J5KCksCisgICAgICBFbGVtZW50c0Fy
ZShQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3Rp
bmcsCisgICAgICAgICAgICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5l
Y3Rpb25TdGF0ZTo6a05ldywKKyAgICAgICAgICAgICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29ubmVjdGluZywKKyAgICAgICAgICAgICAgICAg
IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29ubmVjdGVk
KSk7CiAgIEVYUEVDVF9USEFUKGNhbGxlcigpLT5pY2VfZ2F0aGVyaW5nX3N0YXRlX2hpc3Rvcnko
KSwKICAgICAgICAgICAgICAgRWxlbWVudHNBcmUoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJ
Y2VHYXRoZXJpbmdHYXRoZXJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjprSWNlR2F0aGVyaW5nQ29tcGxldGUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9u
X2pzZXBfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9qc2VwX3VuaXR0ZXN0LmNjCmluZGV4IDdkZTBhM2ZmMTRh
NGFiOTdhOThjYmM3NjdhOTM5OGNjN2ZhODg4YjEuLmZlODc4YjA1Zjc4YzIzMTc3MDA2OGFlYWUy
Y2NlYTYxOTAzNTI0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2pzZXBfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25f
anNlcF91bml0dGVzdC5jYwpAQCAtOTUsNiArOTUsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkpz
ZXBUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKKyAgICBvYnNlcnZlci0+U2V0UGVlckNvbm5lY3Rpb25JbnRlcmZhY2UocGMuZ2V0
KCkpOwogICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxQZWVyQ29ubmVjdGlvbldyYXBwZXI+
KHBjX2ZhY3RvcnksIHBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bW92ZShvYnNlcnZlcikpOwogICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9t
ZWRpYV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3BlZXJjb25uZWN0aW9uX21lZGlhX3VuaXR0ZXN0LmNjCmluZGV4IDZmNGZlMWUzZjQ4
OWU5ODkyZDY0OTIxNjhiMzdlYmRkNTAzMGU1YmYuLjZhZjBjOTg4N2U2ZTJkZmU0YTFjMDdjYWQy
MjBlYmQxMjBlNTY0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX21lZGlhX3VuaXR0ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9u
X21lZGlhX3VuaXR0ZXN0LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8dHVwbGU+CiAK
ICNpbmNsdWRlICJhcGkvY2FsbC9jYWxsZmFjdG9yeWludGVyZmFjZS5oIgorI2luY2x1ZGUgImFw
aS90ZXN0L2Zha2VfbWVkaWFfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL3J0Y19ldmVudF9sb2dfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFr
ZW1lZGlhZW5naW5lLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvZmFrZXBvcnRhbGxvY2F0b3IuaCIK
QEAgLTcxLDEzICs3MiwyNiBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbk1lZGlhQmFzZVRlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICByZXR1cm4gQ3JlYXRlUGVlckNvbm5lY3Rpb24o
UlRDQ29uZmlndXJhdGlvbigpKTsKICAgfQogCisgIC8vIENyZWF0ZXMgUGVlckNvbm5lY3Rpb25G
YWN0b3J5IGFuZCBQZWVyQ29ubmVjdGlvbiBmb3IgZ2l2ZW4gY29uZmlndXJhdGlvbi4KKyAgLy8g
Tm90ZSB0aGF0IFBlZXJDb25uZWN0aW9uRmFjdG9yeSBpcyBjcmVhdGVkIHdpdGggTWVkaWFUcmFu
c3BvcnRGYWN0b3J5LAorICAvLyBiZWNhdXNlIHNvbWUgdGVzdHMgcGFzcyBjb25maWcudXNlX21l
ZGlhX3RyYW5zcG9ydCA9IHRydWUuCiAgIFdyYXBwZXJQdHIgQ3JlYXRlUGVlckNvbm5lY3Rpb24o
Y29uc3QgUlRDQ29uZmlndXJhdGlvbiYgY29uZmlnKSB7CiAgICAgYXV0byBtZWRpYV9lbmdpbmUg
PSBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTWVkaWFFbmdpbmU+KCk7CiAgICAgYXV0byogbWVkaWFf
ZW5naW5lX3B0ciA9IG1lZGlhX2VuZ2luZS5nZXQoKTsKLSAgICBhdXRvIHBjX2ZhY3RvcnkgPSBD
cmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgICAgICBydGM6OlRocmVhZDo6
Q3VycmVudCgpLCBydGM6OlRocmVhZDo6Q3VycmVudCgpLCBydGM6OlRocmVhZDo6Q3VycmVudCgp
LAotICAgICAgICBzdGQ6Om1vdmUobWVkaWFfZW5naW5lKSwgQ3JlYXRlQ2FsbEZhY3RvcnkoKSwK
LSAgICAgICAgQ3JlYXRlUnRjRXZlbnRMb2dGYWN0b3J5KCkpOworCisgICAgUGVlckNvbm5lY3Rp
b25GYWN0b3J5RGVwZW5kZW5jaWVzIGZhY3RvcnlfZGVwZW5kZW5jaWVzOworCisgICAgZmFjdG9y
eV9kZXBlbmRlbmNpZXMubmV0d29ya190aHJlYWQgPSBydGM6OlRocmVhZDo6Q3VycmVudCgpOwor
ICAgIGZhY3RvcnlfZGVwZW5kZW5jaWVzLndvcmtlcl90aHJlYWQgPSBydGM6OlRocmVhZDo6Q3Vy
cmVudCgpOworICAgIGZhY3RvcnlfZGVwZW5kZW5jaWVzLnNpZ25hbGluZ190aHJlYWQgPSBydGM6
OlRocmVhZDo6Q3VycmVudCgpOworICAgIGZhY3RvcnlfZGVwZW5kZW5jaWVzLm1lZGlhX2VuZ2lu
ZSA9IHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpOworICAgIGZhY3RvcnlfZGVwZW5kZW5jaWVzLmNh
bGxfZmFjdG9yeSA9IENyZWF0ZUNhbGxGYWN0b3J5KCk7CisgICAgZmFjdG9yeV9kZXBlbmRlbmNp
ZXMuZXZlbnRfbG9nX2ZhY3RvcnkgPSBDcmVhdGVSdGNFdmVudExvZ0ZhY3RvcnkoKTsKKyAgICBm
YWN0b3J5X2RlcGVuZGVuY2llcy5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9CisgICAgICAgIGFi
c2w6Om1ha2VfdW5pcXVlPEZha2VNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+KCk7CisKKyAgICBhdXRv
IHBjX2ZhY3RvcnkgPQorICAgICAgICBDcmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5
KHN0ZDo6bW92ZShmYWN0b3J5X2RlcGVuZGVuY2llcykpOwogCiAgICAgYXV0byBmYWtlX3BvcnRf
YWxsb2NhdG9yID0gYWJzbDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6RmFrZVBvcnRBbGxvY2F0b3I+
KAogICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLCBudWxscHRyKTsKQEAgLTkxLDEyICsx
MDUsMjUgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25NZWRpYUJhc2VUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBvYnNlcnZl
ci0+U2V0UGVlckNvbm5lY3Rpb25JbnRlcmZhY2UocGMuZ2V0KCkpOwogICAgIGF1dG8gd3JhcHBl
ciA9IGFic2w6Om1ha2VfdW5pcXVlPFBlZXJDb25uZWN0aW9uV3JhcHBlckZvck1lZGlhVGVzdD4o
CiAgICAgICAgIHBjX2ZhY3RvcnksIHBjLCBzdGQ6Om1vdmUob2JzZXJ2ZXIpKTsKICAgICB3cmFw
cGVyLT5zZXRfbWVkaWFfZW5naW5lKG1lZGlhX2VuZ2luZV9wdHIpOwogICAgIHJldHVybiB3cmFw
cGVyOwogICB9CiAKKyAgLy8gQWNjZXB0cyB0aGUgc2FtZSBhcmd1bWVudHMgYXMgQ3JlYXRlUGVl
ckNvbm5lY3Rpb24gYW5kIGFkZHMgZGVmYXVsdCBhdWRpbworICAvLyB0cmFjayAoYnV0IG5vIHZp
ZGVvKS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIFdyYXBwZXJQdHIgQ3JlYXRl
UGVlckNvbm5lY3Rpb25XaXRoQXVkaW8oQXJncyYmLi4uIGFyZ3MpIHsKKyAgICBhdXRvIHdyYXBw
ZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwor
ICAgIGlmICghd3JhcHBlcikgeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHdy
YXBwZXItPkFkZEF1ZGlvVHJhY2soImEiKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKKyAgfQorCiAg
IC8vIEFjY2VwdHMgdGhlIHNhbWUgYXJndW1lbnRzIGFzIENyZWF0ZVBlZXJDb25uZWN0aW9uIGFu
ZCBhZGRzIGRlZmF1bHQgYXVkaW8KICAgLy8gYW5kIHZpZGVvIHRyYWNrcy4KICAgdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC02NzcsNyArNzA0LDcgQEAgdm9pZCBBZGRDb21mb3J0Tm9p
c2VDb2RlY3NUb1NlbmQoY3JpY2tldDo6RmFrZU1lZGlhRW5naW5lKiBtZWRpYV9lbmdpbmUpIHsK
ICAgY29uc3QgY3JpY2tldDo6QXVkaW9Db2RlYyBrQ29tZm9ydE5vaXNlQ29kZWM4aygxMDIsICJD
TiIsIDgwMDAsIDAsIDEpOwogICBjb25zdCBjcmlja2V0OjpBdWRpb0NvZGVjIGtDb21mb3J0Tm9p
c2VDb2RlYzE2aygxMDMsICJDTiIsIDE2MDAwLCAwLCAxKTsKIAotICBhdXRvIGNvZGVjcyA9IG1l
ZGlhX2VuZ2luZS0+YXVkaW9fc2VuZF9jb2RlY3MoKTsKKyAgYXV0byBjb2RlY3MgPSBtZWRpYV9l
bmdpbmUtPnZvaWNlKCkuc2VuZF9jb2RlY3MoKTsKICAgY29kZWNzLnB1c2hfYmFjayhrQ29tZm9y
dE5vaXNlQ29kZWM4ayk7CiAgIGNvZGVjcy5wdXNoX2JhY2soa0NvbWZvcnROb2lzZUNvZGVjMTZr
KTsKICAgbWVkaWFfZW5naW5lLT5TZXRBdWRpb0NvZGVjcyhjb2RlY3MpOwpAQCAtMTA3Miw2ICsx
MDk5LDEyOCBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25NZWRpYVRlc3QsCiAgICAgICAgICAgICBh
dWRpb19vcHRpb25zLmNvbWJpbmVkX2F1ZGlvX3ZpZGVvX2J3ZSk7CiB9CiAKK1RFU1RfUChQZWVy
Q29ubmVjdGlvbk1lZGlhVGVzdCwgTWVkaWFUcmFuc3BvcnRQcm9wYWdhdGVkVG9Wb2ljZUVuZ2lu
ZSkgeworICBSVENDb25maWd1cmF0aW9uIGNvbmZpZzsKKworICAvLyBTZXR1cCBQZWVyQ29ubmVj
dGlvbiB0byB1c2UgbWVkaWEgdHJhbnNwb3J0LgorICBjb25maWcudXNlX21lZGlhX3RyYW5zcG9y
dCA9IHRydWU7CisKKyAgLy8gRm9yY2UgU0RFUy4KKyAgY29uZmlnLmVuYWJsZV9kdGxzX3NydHAg
PSBmYWxzZTsKKworICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlv
KGNvbmZpZyk7CisgIGF1dG8gY2FsbGVlID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQXVkaW8o
Y29uZmlnKTsKKworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldFJlbW90ZURlc2NyaXB0aW9uKGNh
bGxlci0+Q3JlYXRlT2ZmZXJBbmRTZXRBc0xvY2FsKCkpKTsKKyAgYXV0byBhbnN3ZXIgPSBjYWxs
ZWUtPkNyZWF0ZUFuc3dlcigpOworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldExvY2FsRGVzY3Jp
cHRpb24oc3RkOjptb3ZlKGFuc3dlcikpKTsKKworICBhdXRvIGNhbGxlcl92b2ljZSA9IGNhbGxl
ci0+bWVkaWFfZW5naW5lKCktPkdldFZvaWNlQ2hhbm5lbCgwKTsKKyAgYXV0byBjYWxsZWVfdm9p
Y2UgPSBjYWxsZWUtPm1lZGlhX2VuZ2luZSgpLT5HZXRWb2ljZUNoYW5uZWwoMCk7CisgIEFTU0VS
VF9UUlVFKGNhbGxlcl92b2ljZSk7CisgIEFTU0VSVF9UUlVFKGNhbGxlZV92b2ljZSk7CisKKyAg
Ly8gTWFrZSBzdXJlIG1lZGlhIHRyYW5zcG9ydCBpcyBwcm9wYWdhdGVkIHRvIHZvaWNlIGNoYW5u
ZWwuCisgIEZha2VNZWRpYVRyYW5zcG9ydCogY2FsbGVyX3ZvaWNlX21lZGlhX3RyYW5zcG9ydCA9
CisgICAgICBzdGF0aWNfY2FzdDxGYWtlTWVkaWFUcmFuc3BvcnQqPihjYWxsZXJfdm9pY2UtPm1l
ZGlhX3RyYW5zcG9ydCgpKTsKKyAgRmFrZU1lZGlhVHJhbnNwb3J0KiBjYWxsZWVfdm9pY2VfbWVk
aWFfdHJhbnNwb3J0ID0KKyAgICAgIHN0YXRpY19jYXN0PEZha2VNZWRpYVRyYW5zcG9ydCo+KGNh
bGxlZV92b2ljZS0+bWVkaWFfdHJhbnNwb3J0KCkpOworICBBU1NFUlRfTkUobnVsbHB0ciwgY2Fs
bGVyX3ZvaWNlX21lZGlhX3RyYW5zcG9ydCk7CisgIEFTU0VSVF9ORShudWxscHRyLCBjYWxsZWVf
dm9pY2VfbWVkaWFfdHJhbnNwb3J0KTsKKworICAvLyBNYWtlIHN1cmUgbWVkaWEgdHJhbnNwb3J0
IGlzIGNyZWF0ZWQgd2l0aCBjb3JyZWN0IGlzX2NhbGxlci4KKyAgRVhQRUNUX1RSVUUoY2FsbGVy
X3ZvaWNlX21lZGlhX3RyYW5zcG9ydC0+aXNfY2FsbGVyKCkpOworICBFWFBFQ1RfRkFMU0UoY2Fs
bGVlX3ZvaWNlX21lZGlhX3RyYW5zcG9ydC0+aXNfY2FsbGVyKCkpOworCisgIC8vIFRPRE8oc3Vr
aGFub3YpOiBQcm9wYWdhdGUgbWVkaWEgdHJhbnNwb3J0IHRvIHZpZGVvIGNoYW5uZWwuCisgIC8v
IFRoaXMgdGVzdCBkb2VzIE5PVCBzZXQgdXAgdmlkZW8gY2hhbm5lbHMsIGJlY2F1c2UgY3VycmVu
dGx5IGl0IGNhdXNlcworICAvLyB1cyB0byBjcmVhdGUgdHdvIG1lZGlhIHRyYW5zcG9ydHMuCit9
CisKK1RFU1RfUChQZWVyQ29ubmVjdGlvbk1lZGlhVGVzdCwgTWVkaWFUcmFuc3BvcnRPbmx5Rm9y
RGF0YUNoYW5uZWxzKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOworCisgIC8vIFNldHVw
IFBlZXJDb25uZWN0aW9uIHRvIHVzZSBtZWRpYSB0cmFuc3BvcnQgZm9yIGRhdGEgY2hhbm5lbHMu
CisgIGNvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1ZTsK
KworICAvLyBGb3JjZSBTREVTLgorICBjb25maWcuZW5hYmxlX2R0bHNfc3J0cCA9IGZhbHNlOwor
CisgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQXVkaW8oY29uZmlnKTsK
KyAgYXV0byBjYWxsZWUgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhBdWRpbyhjb25maWcpOwor
CisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVh
dGVPZmZlckFuZFNldEFzTG9jYWwoKSkpOworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldExvY2Fs
RGVzY3JpcHRpb24oY2FsbGVlLT5DcmVhdGVBbnN3ZXIoKSkpOworCisgIGF1dG8gY2FsbGVyX3Zv
aWNlID0gY2FsbGVyLT5tZWRpYV9lbmdpbmUoKS0+R2V0Vm9pY2VDaGFubmVsKDApOworICBhdXRv
IGNhbGxlZV92b2ljZSA9IGNhbGxlZS0+bWVkaWFfZW5naW5lKCktPkdldFZvaWNlQ2hhbm5lbCgw
KTsKKyAgQVNTRVJUX1RSVUUoY2FsbGVyX3ZvaWNlKTsKKyAgQVNTRVJUX1RSVUUoY2FsbGVlX3Zv
aWNlKTsKKworICAvLyBNYWtlIHN1cmUgbWVkaWEgdHJhbnNwb3J0IGlzIG5vdCBwcm9wYWdhdGVk
IHRvIHZvaWNlIGNoYW5uZWwuCisgIEVYUEVDVF9FUShudWxscHRyLCBjYWxsZXJfdm9pY2UtPm1l
ZGlhX3RyYW5zcG9ydCgpKTsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIGNhbGxlZV92b2ljZS0+bWVk
aWFfdHJhbnNwb3J0KCkpOworfQorCitURVNUX1AoUGVlckNvbm5lY3Rpb25NZWRpYVRlc3QsIE1l
ZGlhVHJhbnNwb3J0Rm9yTWVkaWFBbmREYXRhQ2hhbm5lbHMpIHsKKyAgUlRDQ29uZmlndXJhdGlv
biBjb25maWc7CisKKyAgLy8gU2V0dXAgUGVlckNvbm5lY3Rpb24gdG8gdXNlIG1lZGlhIHRyYW5z
cG9ydCBmb3IgYm90aCBtZWRpYSBhbmQgZGF0YQorICAvLyBjaGFubmVscy4KKyAgY29uZmlnLnVz
ZV9tZWRpYV90cmFuc3BvcnQgPSB0cnVlOworICBjb25maWcudXNlX21lZGlhX3RyYW5zcG9ydF9m
b3JfZGF0YV9jaGFubmVscyA9IHRydWU7CisKKyAgLy8gRm9yY2UgU0RFUy4KKyAgY29uZmlnLmVu
YWJsZV9kdGxzX3NydHAgPSBmYWxzZTsKKworICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25u
ZWN0aW9uV2l0aEF1ZGlvKGNvbmZpZyk7CisgIGF1dG8gY2FsbGVlID0gQ3JlYXRlUGVlckNvbm5l
Y3Rpb25XaXRoQXVkaW8oY29uZmlnKTsKKworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldFJlbW90
ZURlc2NyaXB0aW9uKGNhbGxlci0+Q3JlYXRlT2ZmZXJBbmRTZXRBc0xvY2FsKCkpKTsKKyAgQVNT
RVJUX1RSVUUoY2FsbGVlLT5TZXRMb2NhbERlc2NyaXB0aW9uKGNhbGxlZS0+Q3JlYXRlQW5zd2Vy
KCkpKTsKKworICBhdXRvIGNhbGxlcl92b2ljZSA9IGNhbGxlci0+bWVkaWFfZW5naW5lKCktPkdl
dFZvaWNlQ2hhbm5lbCgwKTsKKyAgYXV0byBjYWxsZWVfdm9pY2UgPSBjYWxsZWUtPm1lZGlhX2Vu
Z2luZSgpLT5HZXRWb2ljZUNoYW5uZWwoMCk7CisgIEFTU0VSVF9UUlVFKGNhbGxlcl92b2ljZSk7
CisgIEFTU0VSVF9UUlVFKGNhbGxlZV92b2ljZSk7CisKKyAgLy8gTWFrZSBzdXJlIG1lZGlhIHRy
YW5zcG9ydCBpcyBwcm9wYWdhdGVkIHRvIHZvaWNlIGNoYW5uZWwuCisgIEZha2VNZWRpYVRyYW5z
cG9ydCogY2FsbGVyX3ZvaWNlX21lZGlhX3RyYW5zcG9ydCA9CisgICAgICBzdGF0aWNfY2FzdDxG
YWtlTWVkaWFUcmFuc3BvcnQqPihjYWxsZXJfdm9pY2UtPm1lZGlhX3RyYW5zcG9ydCgpKTsKKyAg
RmFrZU1lZGlhVHJhbnNwb3J0KiBjYWxsZWVfdm9pY2VfbWVkaWFfdHJhbnNwb3J0ID0KKyAgICAg
IHN0YXRpY19jYXN0PEZha2VNZWRpYVRyYW5zcG9ydCo+KGNhbGxlZV92b2ljZS0+bWVkaWFfdHJh
bnNwb3J0KCkpOworICBBU1NFUlRfTkUobnVsbHB0ciwgY2FsbGVyX3ZvaWNlX21lZGlhX3RyYW5z
cG9ydCk7CisgIEFTU0VSVF9ORShudWxscHRyLCBjYWxsZWVfdm9pY2VfbWVkaWFfdHJhbnNwb3J0
KTsKKworICAvLyBNYWtlIHN1cmUgbWVkaWEgdHJhbnNwb3J0IGlzIGNyZWF0ZWQgd2l0aCBjb3Jy
ZWN0IGlzX2NhbGxlci4KKyAgRVhQRUNUX1RSVUUoY2FsbGVyX3ZvaWNlX21lZGlhX3RyYW5zcG9y
dC0+aXNfY2FsbGVyKCkpOworICBFWFBFQ1RfRkFMU0UoY2FsbGVlX3ZvaWNlX21lZGlhX3RyYW5z
cG9ydC0+aXNfY2FsbGVyKCkpOworfQorCitURVNUX1AoUGVlckNvbm5lY3Rpb25NZWRpYVRlc3Qs
IE1lZGlhVHJhbnNwb3J0Tm90UHJvcGFnYXRlZFRvVm9pY2VFbmdpbmUpIHsKKyAgYXV0byBjYWxs
ZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhBdWRpb1ZpZGVvKCk7CisgIGF1dG8gY2FsbGVl
ID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQXVkaW9WaWRlbygpOworCisgIEFTU0VSVF9UUlVF
KGNhbGxlZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVPZmZlckFuZFNldEFz
TG9jYWwoKSkpOworICBhdXRvIGFuc3dlciA9IGNhbGxlZS0+Q3JlYXRlQW5zd2VyKCk7CisgIEFT
U0VSVF9UUlVFKGNhbGxlZS0+U2V0TG9jYWxEZXNjcmlwdGlvbihzdGQ6Om1vdmUoYW5zd2VyKSkp
OworCisgIGF1dG8gY2FsbGVyX3ZvaWNlID0gY2FsbGVyLT5tZWRpYV9lbmdpbmUoKS0+R2V0Vm9p
Y2VDaGFubmVsKDApOworICBhdXRvIGNhbGxlZV92b2ljZSA9IGNhbGxlZS0+bWVkaWFfZW5naW5l
KCktPkdldFZvaWNlQ2hhbm5lbCgwKTsKKyAgQVNTRVJUX1RSVUUoY2FsbGVyX3ZvaWNlKTsKKyAg
QVNTRVJUX1RSVUUoY2FsbGVlX3ZvaWNlKTsKKworICAvLyBTaW5jZSB3ZSBkaWQgbm90IHNldHVw
IFBlZXJDb25uZWN0aW9uIHRvIHVzZSBtZWRpYSB0cmFuc3BvcnQsIG1lZGlhCisgIC8vIHRyYW5z
cG9ydCBzaG91bGQgbm90IGJlIGNyZWF0ZWQgLyBwcm9wYWdhdGVkIHRvIHRoZSB2b2ljZSBlbmdp
bmUuCisgIEFTU0VSVF9FUShudWxscHRyLCBjYWxsZXJfdm9pY2UtPm1lZGlhX3RyYW5zcG9ydCgp
KTsKKyAgQVNTRVJUX0VRKG51bGxwdHIsIGNhbGxlZV92b2ljZS0+bWVkaWFfdHJhbnNwb3J0KCkp
OworCisgIGF1dG8gY2FsbGVyX3ZpZGVvID0gY2FsbGVyLT5tZWRpYV9lbmdpbmUoKS0+R2V0Vmlk
ZW9DaGFubmVsKDApOworICBhdXRvIGNhbGxlZV92aWRlbyA9IGNhbGxlZS0+bWVkaWFfZW5naW5l
KCktPkdldFZpZGVvQ2hhbm5lbCgwKTsKKyAgQVNTRVJUX0VRKG51bGxwdHIsIGNhbGxlcl92aWRl
by0+bWVkaWFfdHJhbnNwb3J0KCkpOworICBBU1NFUlRfRVEobnVsbHB0ciwgY2FsbGVlX3ZpZGVv
LT5tZWRpYV90cmFuc3BvcnQoKSk7Cit9CisKIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFBlZXJD
b25uZWN0aW9uTWVkaWFUZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgUGVlckNvbm5lY3Rp
b25NZWRpYVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoU2RwU2VtYW50aWNz
OjprUGxhbkIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9yYW1wdXBfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9yYW1wdXBfdGVz
dHMuY2MKaW5kZXggODUwMjEyYmYwZGNhNGJkNzUyODI4Mjg4NjkwMzJjZWRhOGM5MzMwZC4uNzRm
ODAxOGZiMDliN2UwZGExMDdmNzgzNDk0MzIyNzIxNGU5YzhjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fcmFt
cHVwX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3BlZXJjb25uZWN0aW9uX3JhbXB1cF90ZXN0cy5jYwpAQCAtMTAsNiArMTAsNyBAQAog
CiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9y
eS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2Zh
Y3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJhcGkvc3RhdHMvcnRjc3RhdHNfb2JqZWN0cy5oIgogI2luY2x1ZGUgImFwaS92
aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJh
cGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29u
bmVjdGlvbl9ydHBfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9ydHBfdW5pdHRlc3QuY2MKaW5kZXggYmMzNjYy
Y2JiZDQzZTM0MWQxYWFlODIzYzdkODE2ODMxOGFlMjgyZS4uNzA5ODQ3MGJhYWVlZTk4ZDBlNzRh
NmZjNzA3NGE4NzYxMWY5NTk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fcnRwX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0
aW9uX3J0cF91bml0dGVzdC5jYwpAQCAtMTQsOSArMTQsMTEgQEAKICNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1
ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rp
b25fZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9qc2VwLmgiCiAjaW5jbHVkZSAiYXBpL21lZGlh
c3RyZWFtaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNl
LmgiCisjaW5jbHVkZSAiYXBpL3VtYW1ldHJpY3MuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29k
ZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInBjL21l
ZGlhc2Vzc2lvbi5oIgpAQCAtMTE2LDYgKzExOCw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uUnRw
QmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgYXV0byBvYnNlcnZlciA9IGFi
c2w6Om1ha2VfdW5pcXVlPE1vY2tQZWVyQ29ubmVjdGlvbk9ic2VydmVyPigpOwogICAgIGF1dG8g
cGMgPSBwY19mYWN0b3J5Xy0+Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlnLCBudWxscHRyLCBu
dWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2JzZXJ2ZXIuZ2V0KCkpOworICAgIEVYUEVDVF9UUlVFKHBjLmdldCgpKTsKKyAgICBvYnNlcnZl
ci0+U2V0UGVlckNvbm5lY3Rpb25JbnRlcmZhY2UocGMuZ2V0KCkpOwogICAgIHJldHVybiBhYnNs
OjptYWtlX3VuaXF1ZTxQZWVyQ29ubmVjdGlvbldyYXBwZXI+KHBjX2ZhY3RvcnlfLCBwYywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1v
dmUob2JzZXJ2ZXIpKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fc2lnbmFsaW5nX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5l
Y3Rpb25fc2lnbmFsaW5nX3VuaXR0ZXN0LmNjCmluZGV4IDk1ZjQ2NGIyZWUyNDkyMjQwNDI0MThk
NjdiMTljZmY5YmE4NGM4MmIuLmY1N2Y4MDZiNjQ3ZjAxMzM5ZmJiMDI1MmNjMTA3MWVhM2EyNDJk
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3BlZXJjb25uZWN0aW9uX3NpZ25hbGluZ191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9zaWduYWxp
bmdfdW5pdHRlc3QuY2MKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19j
b2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBp
L2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25u
ZWN0aW9ucHJveHkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9f
ZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeS5oIgpAQCAtOTAsNiArOTEsNyBAQCBjbGFzcyBQZWVyQ29ubmVj
dGlvblNpZ25hbGluZ0Jhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBvYnNlcnZlci0+U2V0UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2UocGMuZ2V0KCkpOwogICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxQZWVyQ29u
bmVjdGlvbldyYXBwZXJGb3JTaWduYWxpbmdUZXN0PigKICAgICAgICAgcGNfZmFjdG9yeV8sIHBj
LCBzdGQ6Om1vdmUob2JzZXJ2ZXIpKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25lbmR0b2VuZF91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Bl
ZXJjb25uZWN0aW9uZW5kdG9lbmRfdW5pdHRlc3QuY2MKaW5kZXggNjBkYTJkMjQyYzFhYTM1ZGNm
MWNkZGVmNDdmZTZiMzIzZmVkZTlmZi4uZGVlMjUzYjdjNzE4NzBhNzI4YzIyYjk4YTBmNjdiNTM5
MGNjOTRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25lbmR0b2VuZF91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmVuZHRv
ZW5kX3VuaXR0ZXN0LmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAj
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21h
dGNoLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rlcl9MMTYu
aCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5oIgog
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9pZC5oIgpAQCAtMjAs
NyArMjEsNiBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNv
ZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiAjaWZkZWYgV0VCUlRDX0FORFJPSUQK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJwYy90ZXN0L21vY2twZWVyY29ubmVjdGlvbm9i
c2VydmVycy5oIgogI2luY2x1ZGUgInRlc3QvbW9ja19hdWRpb19kZWNvZGVyLmgiCiAjaW5jbHVk
ZSAidGVzdC9tb2NrX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgInRlc3QvbW9j
a19hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKIAogdXNpbmcgdGVzdGluZzo6QXRMZWFzdDsKIHVz
aW5nIHRlc3Rpbmc6Okludm9rZTsKQEAgLTMwMCw3ICszMDEsNyBAQCBDcmVhdGVGb3J3YXJkaW5n
TW9ja0RlY29kZXJGYWN0b3J5KAogc3RydWN0IEF1ZGlvRW5jb2RlclVuaWNvcm5TcGFya2xlc1Jh
aW5ib3cgewogICB1c2luZyBDb25maWcgPSB3ZWJydGM6OkF1ZGlvRW5jb2RlckwxNjo6Q29uZmln
OwogICBzdGF0aWMgYWJzbDo6b3B0aW9uYWw8Q29uZmlnPiBTZHBUb0NvbmZpZyh3ZWJydGM6OlNk
cEF1ZGlvRm9ybWF0IGZvcm1hdCkgewotICAgIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUu
Y19zdHIoKSwgIlVuaWNvcm5TcGFya2xlc1JhaW5ib3ciKSA9PSAwKSB7CisgICAgaWYgKGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJVbmljb3JuU3BhcmtsZXNSYWluYm93Iikp
IHsKICAgICAgIGNvbnN0IHdlYnJ0Yzo6U2RwQXVkaW9Gb3JtYXQ6OlBhcmFtZXRlcnMgZXhwZWN0
ZWRfcGFyYW1zID0gewogICAgICAgICAgIHsibnVtX2hvcm5zIiwgIjEifX07CiAgICAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWRfcGFyYW1zLCBmb3JtYXQucGFyYW1ldGVycyk7CkBAIC0zMzcsNyArMzM4
LDcgQEAgc3RydWN0IEF1ZGlvRW5jb2RlclVuaWNvcm5TcGFya2xlc1JhaW5ib3cgewogc3RydWN0
IEF1ZGlvRGVjb2RlclVuaWNvcm5TcGFya2xlc1JhaW5ib3cgewogICB1c2luZyBDb25maWcgPSB3
ZWJydGM6OkF1ZGlvRGVjb2RlckwxNjo6Q29uZmlnOwogICBzdGF0aWMgYWJzbDo6b3B0aW9uYWw8
Q29uZmlnPiBTZHBUb0NvbmZpZyh3ZWJydGM6OlNkcEF1ZGlvRm9ybWF0IGZvcm1hdCkgewotICAg
IGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIlVuaWNvcm5TcGFya2xlc1Jh
aW5ib3ciKSA9PSAwKSB7CisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5h
bWUsICJVbmljb3JuU3BhcmtsZXNSYWluYm93IikpIHsKICAgICAgIGNvbnN0IHdlYnJ0Yzo6U2Rw
QXVkaW9Gb3JtYXQ6OlBhcmFtZXRlcnMgZXhwZWN0ZWRfcGFyYW1zID0gewogICAgICAgICAgIHsi
bnVtX2hvcm5zIiwgIjEifX07CiAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGFyYW1zLCBmb3Jt
YXQucGFyYW1ldGVycyk7CkBAIC00ODEsNyArNDgyLDcgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9u
RW5kVG9FbmRUZXN0LCBDYWxsV2l0aEN1c3RvbUNvZGVjKSB7CiAvLyBWZXJpZmllcyB0aGF0IGEg
RGF0YUNoYW5uZWwgY3JlYXRlZCBiZWZvcmUgdGhlIG5lZ290aWF0aW9uIGNhbiB0cmFuc2l0aW9u
IHRvCiAvLyAiT1BFTiIgYW5kIHRyYW5zZmVyIGRhdGEuCiBURVNUX1AoUGVlckNvbm5lY3Rpb25F
bmRUb0VuZFRlc3QsIENyZWF0ZURhdGFDaGFubmVsQmVmb3JlTmVnb3RpYXRlKSB7Ci0gIENyZWF0
ZVBjcyh3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCisgIENyZWF0
ZVBjcyh3ZWJydGM6Ok1vY2tBdWRpb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3Rvcnko
KSwKICAgICAgICAgICAgIHdlYnJ0Yzo6TW9ja0F1ZGlvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZUVt
cHR5RmFjdG9yeSgpKTsKIAogICB3ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OwpAQCAtNTA2
LDcgKzUwNyw3IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwgQ3JlYXRlRGF0
YUNoYW5uZWxCZWZvcmVOZWdvdGlhdGUpIHsKIC8vIFZlcmlmaWVzIHRoYXQgYSBEYXRhQ2hhbm5l
bCBjcmVhdGVkIGFmdGVyIHRoZSBuZWdvdGlhdGlvbiBjYW4gdHJhbnNpdGlvbiB0bwogLy8gIk9Q
RU4iIGFuZCB0cmFuc2ZlciBkYXRhLgogVEVTVF9QKFBlZXJDb25uZWN0aW9uRW5kVG9FbmRUZXN0
LCBDcmVhdGVEYXRhQ2hhbm5lbEFmdGVyTmVnb3RpYXRlKSB7Ci0gIENyZWF0ZVBjcyh3ZWJydGM6
OkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCisgIENyZWF0ZVBjcyh3ZWJydGM6
Ok1vY2tBdWRpb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSwKICAgICAgICAg
ICAgIHdlYnJ0Yzo6TW9ja0F1ZGlvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgp
KTsKIAogICB3ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OwpAQCAtNTM4LDcgKzUzOSw3IEBA
IFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwgQ3JlYXRlRGF0YUNoYW5uZWxBZnRl
ck5lZ290aWF0ZSkgewogCiAvLyBWZXJpZmllcyB0aGF0IGEgRGF0YUNoYW5uZWwgY3JlYXRlZCBj
YW4gdHJhbnNmZXIgbGFyZ2UgbWVzc2FnZXMuCiBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0Vu
ZFRlc3QsIENyZWF0ZURhdGFDaGFubmVsTGFyZ2VUcmFuc2ZlcikgewotICBDcmVhdGVQY3Mod2Vi
cnRjOjpDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLAorICBDcmVhdGVQY3Mod2Vi
cnRjOjpNb2NrQXVkaW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCksCiAgICAg
ICAgICAgICB3ZWJydGM6Ok1vY2tBdWRpb0RlY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3Rv
cnkoKSk7CiAKICAgd2VicnRjOjpEYXRhQ2hhbm5lbEluaXQgaW5pdDsKQEAgLTU3Miw3ICs1NzMs
NyBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRlc3QsIENyZWF0ZURhdGFDaGFubmVs
TGFyZ2VUcmFuc2ZlcikgewogCiAvLyBWZXJpZmllcyB0aGF0IERhdGFDaGFubmVsIElEcyBhcmUg
ZXZlbi9vZGQgYmFzZWQgb24gdGhlIERUTFMgcm9sZXMuCiBURVNUX1AoUGVlckNvbm5lY3Rpb25F
bmRUb0VuZFRlc3QsIERhdGFDaGFubmVsSWRBc3NpZ25tZW50KSB7Ci0gIENyZWF0ZVBjcyh3ZWJy
dGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCisgIENyZWF0ZVBjcyh3ZWJy
dGM6Ok1vY2tBdWRpb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSwKICAgICAg
ICAgICAgIHdlYnJ0Yzo6TW9ja0F1ZGlvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9y
eSgpKTsKIAogICB3ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OwpAQCAtNjAwLDcgKzYwMSw3
IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwgRGF0YUNoYW5uZWxJZEFzc2ln
bm1lbnQpIHsKIC8vIHRoZXJlIGFyZSBtdWx0aXBsZSBEYXRhQ2hhbm5lbHMuCiBURVNUX1AoUGVl
ckNvbm5lY3Rpb25FbmRUb0VuZFRlc3QsCiAgICAgICAgTWVzc2FnZVRyYW5zZmVyQmV0d2VlblR3
b1BhaXJzT2ZEYXRhQ2hhbm5lbHMpIHsKLSAgQ3JlYXRlUGNzKHdlYnJ0Yzo6Q3JlYXRlQnVpbHRp
bkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwKKyAgQ3JlYXRlUGNzKHdlYnJ0Yzo6TW9ja0F1ZGlvRW5j
b2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpLAogICAgICAgICAgICAgd2VicnRjOjpN
b2NrQXVkaW9EZWNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCkpOwogCiAgIHdlYnJ0
Yzo6RGF0YUNoYW5uZWxJbml0IGluaXQ7CkBAIC02NDAsNyArNjQxLDcgQEAgVEVTVF9QKFBlZXJD
b25uZWN0aW9uRW5kVG9FbmRUZXN0LAogLy8gY2hhbm5lbCwgYW5kIHRoZSBjbG9zZWQgY2hhbm5l
bCB3YXMgaW5jb3JyZWN0bHkgc3RpbGwgYXNzaWduZWQgdG8gdGhlIElELgogVEVTVF9QKFBlZXJD
b25uZWN0aW9uRW5kVG9FbmRUZXN0LAogICAgICAgIERhdGFDaGFubmVsRnJvbU9wZW5Xb3Jrc0Fm
dGVyUHJldmlvdXNDaGFubmVsQ2xvc2VkKSB7Ci0gIENyZWF0ZVBjcyh3ZWJydGM6OkNyZWF0ZUJ1
aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCisgIENyZWF0ZVBjcyh3ZWJydGM6Ok1vY2tBdWRp
b0VuY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSwKICAgICAgICAgICAgIHdlYnJ0
Yzo6TW9ja0F1ZGlvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpKTsKIAogICB3
ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OwpAQCAtNjczLDcgKzY3NCw3IEBAIFRFU1RfUChQ
ZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwKIC8vIGNsb3NpbmcgYmVmb3JlIGNyZWF0aW5nIHRo
ZSBzZWNvbmQgb25lLgogVEVTVF9QKFBlZXJDb25uZWN0aW9uRW5kVG9FbmRUZXN0LAogICAgICAg
IERhdGFDaGFubmVsRnJvbU9wZW5Xb3Jrc1doaWxlUHJldmlvdXNDaGFubmVsQ2xvc2luZykgewot
ICBDcmVhdGVQY3Mod2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLAor
ICBDcmVhdGVQY3Mod2VicnRjOjpNb2NrQXVkaW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlG
YWN0b3J5KCksCiAgICAgICAgICAgICB3ZWJydGM6Ok1vY2tBdWRpb0RlY29kZXJGYWN0b3J5OjpD
cmVhdGVFbXB0eUZhY3RvcnkoKSk7CiAKICAgd2VicnRjOjpEYXRhQ2hhbm5lbEluaXQgaW5pdDsK
QEAgLTcwNCw3ICs3MDUsNyBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRlc3QsCiAv
LyByZWZlcmVuY2UgY291bnQpLCBubyBtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiB3aWxsIG9jY3Vy
LgogLy8gU2VlOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRh
aWw/aWQ9NTY1MDQ4CiBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRlc3QsIENsb3NlRGF0
YUNoYW5uZWxSZW1vdGVseVdoaWxlTm90UmVmZXJlbmNlZCkgewotICBDcmVhdGVQY3Mod2VicnRj
OjpDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLAorICBDcmVhdGVQY3Mod2VicnRj
OjpNb2NrQXVkaW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCksCiAgICAgICAg
ICAgICB3ZWJydGM6Ok1vY2tBdWRpb0RlY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3Rvcnko
KSk7CiAKICAgd2VicnRjOjpEYXRhQ2hhbm5lbEluaXQgaW5pdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFj
dG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Bl
ZXJjb25uZWN0aW9uZmFjdG9yeS5jYwppbmRleCA1M2Y0ZGE4NTE2ZTQ2YzhmNTg4NDYzZWQ5MjIy
ZjU2ZWRiMjAyMjk0Li43NTI2MTUwOGIyNzJkMmU3ZTY2MmE1Zjg3M2YzNWFmOGJkZTUzOGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9w
ZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjCkBAIC0xNSw2ICsxNSw3
IEBACiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvZmVj
X2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5o
IgogI2luY2x1ZGUgImFwaS9tZWRpYWNvbnN0cmFpbnRzaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
YXBpL21lZGlhc3RyZWFtcHJveHkuaCIKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW10cmFja3By
b3h5LmgiCkBAIC00Niw2ICs0Nyw3IEBACiAjaW5jbHVkZSAicGMvdmlkZW9jYXB0dXJlcnRyYWNr
c291cmNlLmgiCiAjaW5jbHVkZSAicGMvdmlkZW90cmFjay5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2V4cGVyaW1lbnRzL2Nvbmdlc3Rpb25fY29udHJvbGxlcl9leHBlcmltZW50LmgiCisjaW5jbHVk
ZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKQEAgLTE4Nyw3ICsxODksOSBAQCBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OlBlZXJD
b25uZWN0aW9uRmFjdG9yeSgKICAgICAgICAgICBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzLmNhbGxf
ZmFjdG9yeSksCiAgICAgICAgICAgc3RkOjptb3ZlKGRlcGVuZGVuY2llcy5ldmVudF9sb2dfZmFj
dG9yeSksCiAgICAgICAgICAgc3RkOjptb3ZlKGRlcGVuZGVuY2llcy5mZWNfY29udHJvbGxlcl9m
YWN0b3J5KSwKLSAgICAgICAgICBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzLm5ldHdvcmtfY29udHJv
bGxlcl9mYWN0b3J5KSkge30KKyAgICAgICAgICBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzLm5ldHdv
cmtfY29udHJvbGxlcl9mYWN0b3J5KSkgeworICBtZWRpYV90cmFuc3BvcnRfZmFjdG9yeV8gPSBz
dGQ6Om1vdmUoZGVwZW5kZW5jaWVzLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KTsKK30KIAogUGVl
ckNvbm5lY3Rpb25GYWN0b3J5Ojp+UGVlckNvbm5lY3Rpb25GYWN0b3J5KCkgewogICBSVENfRENI
RUNLKHNpZ25hbGluZ190aHJlYWRfLT5Jc0N1cnJlbnQoKSk7CkBAIC0zNTYsOSArMzYwLDEyIEBA
IFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6Q3JlYXRlUGVlckNvbm5lY3Rpb24oCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfdGhy
ZWFkXyk7CiAgIH0KICAgaWYgKCFkZXBlbmRlbmNpZXMuYWxsb2NhdG9yKSB7Ci0gICAgZGVwZW5k
ZW5jaWVzLmFsbG9jYXRvci5yZXNldChuZXcgY3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yKAot
ICAgICAgICBkZWZhdWx0X25ldHdvcmtfbWFuYWdlcl8uZ2V0KCksIGRlZmF1bHRfc29ja2V0X2Zh
Y3RvcnlfLmdldCgpLAotICAgICAgICBjb25maWd1cmF0aW9uLnR1cm5fY3VzdG9taXplcikpOwor
ICAgIG5ldHdvcmtfdGhyZWFkXy0+SW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIFt0aGlzLCAm
Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmRlcGVuZGVuY2llc10oKSB7CisgICAgICBkZXBlbmRlbmNpZXMuYWxsb2NhdG9y
ID0gYWJzbDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPigKKyAgICAg
ICAgICBkZWZhdWx0X25ldHdvcmtfbWFuYWdlcl8uZ2V0KCksIGRlZmF1bHRfc29ja2V0X2ZhY3Rv
cnlfLmdldCgpLAorICAgICAgICAgIGNvbmZpZ3VyYXRpb24udHVybl9jdXN0b21pemVyKTsKKyAg
ICB9KTsKICAgfQogCiAgIC8vIFRPRE8oenN0ZWluKTogT25jZSBjaHJvbWl1bSBpbmplY3RzIGl0
cyBvd24gQXN5bmNSZXNvbHZlckZhY3RvcnksIHNldApAQCAtNDQyLDcgKzQ0OSwxMCBAQCBydGM6
OlRocmVhZCogUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpuZXR3b3JrX3RocmVhZCgpIHsKIAogc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkNyZWF0ZVJ0
Y0V2ZW50TG9nX3coKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKHdvcmtlcl90aHJlYWRfKTsKLSAg
Y29uc3QgYXV0byBlbmNvZGluZ190eXBlID0gUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TGVn
YWN5OworCisgIGF1dG8gZW5jb2RpbmdfdHlwZSA9IFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6
OkxlZ2FjeTsKKyAgaWYgKGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1SdGNFdmVudExv
Z05ld0Zvcm1hdCIpKQorICAgIGVuY29kaW5nX3R5cGUgPSBSdGNFdmVudExvZzo6RW5jb2RpbmdU
eXBlOjpOZXdGb3JtYXQ7CiAgIHJldHVybiBldmVudF9sb2dfZmFjdG9yeV8KICAgICAgICAgICAg
ICA/IGV2ZW50X2xvZ19mYWN0b3J5Xy0+Q3JlYXRlUnRjRXZlbnRMb2coZW5jb2RpbmdfdHlwZSkK
ICAgICAgICAgICAgICA6IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nTnVsbEltcGw+KCk7
CkBAIC00NjAsNyArNDcwLDggQEAgc3RkOjp1bmlxdWVfcHRyPENhbGw+IFBlZXJDb25uZWN0aW9u
RmFjdG9yeTo6Q3JlYXRlQ2FsbF93KAogICBpZiAoIWNoYW5uZWxfbWFuYWdlcl8tPm1lZGlhX2Vu
Z2luZSgpIHx8ICFjYWxsX2ZhY3RvcnlfKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KLSAg
Y2FsbF9jb25maWcuYXVkaW9fc3RhdGUgPSBjaGFubmVsX21hbmFnZXJfLT5tZWRpYV9lbmdpbmUo
KS0+R2V0QXVkaW9TdGF0ZSgpOworICBjYWxsX2NvbmZpZy5hdWRpb19zdGF0ZSA9CisgICAgICBj
aGFubmVsX21hbmFnZXJfLT5tZWRpYV9lbmdpbmUoKS0+dm9pY2UoKS5HZXRBdWRpb1N0YXRlKCk7
CiAgIGNhbGxfY29uZmlnLmJpdHJhdGVfY29uZmlnLm1pbl9iaXRyYXRlX2JwcyA9IGtNaW5CYW5k
d2lkdGhCcHM7CiAgIGNhbGxfY29uZmlnLmJpdHJhdGVfY29uZmlnLnN0YXJ0X2JpdHJhdGVfYnBz
ID0ga1N0YXJ0QmFuZHdpZHRoQnBzOwogICBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5tYXhf
Yml0cmF0ZV9icHMgPSBrTWF4QmFuZHdpZHRoQnBzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVj
dGlvbmZhY3RvcnkuaAppbmRleCBmMzZhNGUwYzA0NGJjNDQ1YmI2OGVjYzk4ODQ3NzQ5MWYzNzA1
MmIxLi4xYzFlYTk0ZmUyOGE3M2FhY2NiNjI0NzFlYWU3OWJjMGQ1NDM3YjY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVj
dGlvbmZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuaApAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJh
bnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5o
IgogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1l
ZGlhL3NjdHAvc2N0cHRyYW5zcG9ydGludGVybmFsLmgiCkBAIC05Niw2ICs5NywxMCBAQCBjbGFz
cyBQZWVyQ29ubmVjdGlvbkZhY3RvcnkgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50
ZXJmYWNlIHsKICAgdmlydHVhbCBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQoKTsKICAgY29u
c3QgT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG9wdGlvbnNfOyB9CiAKKyAgTWVk
aWFUcmFuc3BvcnRGYWN0b3J5KiBtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSgpIHsKKyAgICByZXR1
cm4gbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnlfLmdldCgpOworICB9CisKICBwcm90ZWN0ZWQ6CiAg
IFBlZXJDb25uZWN0aW9uRmFjdG9yeSgKICAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVh
ZCwKQEAgLTE0OCw2ICsxNTMsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkZhY3RvcnkgOiBwdWJs
aWMgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHsKICAgICAgIGluamVjdGVkX25ldHdv
cmtfY29udHJvbGxlcl9mYWN0b3J5XzsKICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250cm9s
bGVyRmFjdG9yeUludGVyZmFjZT4KICAgICAgIGJicl9uZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9y
eV87CisgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IG1lZGlhX3RyYW5z
cG9ydF9mYWN0b3J5XzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0
aW9uZmFjdG9yeV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeV91bml0dGVzdC5jYwppbmRleCA4NGM4
MjhmMDk2MTA0MmE1ZDUxY2JjZjEyZjYwODFiNzY0NjJlOTNhLi4yNDQ0MTQzMmQ3YTM4Yjg4NDA5
NzEzNDA2YWEzOWZhMTNhNTUyMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnlfdW5pdHRlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNv
bm5lY3Rpb25mYWN0b3J5X3VuaXR0ZXN0LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgor
I2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIgogI2luY2x1ZGUg
ImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
YnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29k
ZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmludGVy
ZmFjZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlX3VuaXR0ZXN0LmNjCmluZGV4IDcxOWZkYmRk
N2Y0MWNjODBkOGJiM2I4MDgyMTlkNjlkM2EwYTU1MzYuLmRkNWQwZDE2YTkxOTg2YjBlYzQ1ZjI0
YjdkZjAzMGUxMWVhNDBiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25u
ZWN0aW9uaW50ZXJmYWNlX3VuaXR0ZXN0LmNjCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGlu
X2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVp
bHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvY3JlYXRlX3BlZXJj
b25uZWN0aW9uX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvanNlcHNlc3Npb25kZXNjcmlwdGlv
bi5oIgogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oIgogI2luY2x1ZGUgImFw
aS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgpAQCAtMTM5Nyw2ICsxMzk4LDggQEAgVEVTVF9Q
KFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlVGVzdCwKICAgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlPiBwYygKICAgICAgIHBjX2ZhY3RvcnktPkNyZWF0ZVBlZXJDb25u
ZWN0aW9uKGNvbmZpZywgc3RkOjptb3ZlKHBvcnRfYWxsb2NhdG9yKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsICZvYnNlcnZlcl8pKTsKKyAgRVhQRUNU
X1RSVUUocGMuZ2V0KCkpOworICBvYnNlcnZlcl8uU2V0UGVlckNvbm5lY3Rpb25JbnRlcmZhY2Uo
cGMuZ2V0KCkpOwogCiAgIC8vIE5vdyB2YWxpZGF0ZSB0aGF0IHRoZSBjb25maWcgZmllbGRzIHNl
dCBhYm92ZSB3ZXJlIGFwcGxpZWQgdG8gdGhlCiAgIC8vIFBvcnRBbGxvY2F0b3IsIGFzIGZsYWdz
IG9yIG90aGVyd2lzZS4KQEAgLTE0MjQsMTUgKzE0MjcsMjIgQEAgVEVTVF9QKFBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlVGVzdCwgR2V0Q29uZmlndXJhdGlvbkFmdGVyQ3JlYXRlUGVlckNvbm5lY3Rp
b24pIHsKIC8vIENoZWNrIHRoYXQgR2V0Q29uZmlndXJhdGlvbiByZXR1cm5zIHRoZSBsYXN0IGNv
bmZpZ3VyYXRpb24gcGFzc2VkIGludG8KIC8vIFNldENvbmZpZ3VyYXRpb24uCiBURVNUX1AoUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2VUZXN0LCBHZXRDb25maWd1cmF0aW9uQWZ0ZXJTZXRDb25maWd1
cmF0aW9uKSB7Ci0gIENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CisgIFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uIHN0YXJ0aW5nX2NvbmZpZzsKKyAgc3RhcnRpbmdfY29u
ZmlnLmJ1bmRsZV9wb2xpY3kgPQorICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbjo6a0J1bmRs
ZVBvbGljeU1heEJ1bmRsZTsKKyAgQ3JlYXRlUGVlckNvbm5lY3Rpb24oc3RhcnRpbmdfY29uZmln
KTsKIAogICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBjb25maWcg
PSBwY18tPkdldENvbmZpZ3VyYXRpb24oKTsKICAgY29uZmlnLnR5cGUgPSBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6a1JlbGF5OworICBjb25maWcudXNlX21lZGlhX3RyYW5zcG9ydCA9IHRydWU7
CisgIGNvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1ZTsK
ICAgRVhQRUNUX1RSVUUocGNfLT5TZXRDb25maWd1cmF0aW9uKGNvbmZpZykpOwogCiAgIFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uIHJldHVybmVkX2NvbmZpZyA9CiAg
ICAgICBwY18tPkdldENvbmZpZ3VyYXRpb24oKTsKICAgRVhQRUNUX0VRKFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjprUmVsYXksIHJldHVybmVkX2NvbmZpZy50eXBlKTsKKyAgRVhQRUNUX1RSVUUo
cmV0dXJuZWRfY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnQpOworICBFWFBFQ1RfVFJVRShyZXR1
cm5lZF9jb25maWcudXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyk7CiB9CiAK
IFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVyZmFjZVRlc3QsIFNldENvbmZpZ3VyYXRpb25GYWls
c0FmdGVyQ2xvc2UpIHsKQEAgLTM5MzgsNiArMzk0OCwyMSBAQCBURVNUX1AoUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2VUZXN0LAogICBFWFBFQ1RfRkFMU0UoRG9TZXRMb2NhbERlc2NyaXB0aW9uKHN0
ZDo6bW92ZShvZmZlcikpKTsKIH0KIAorVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlVGVz
dCwgRXh0bWFwQWxsb3dNaXhlZElzQ29uZmlndXJhYmxlKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24g
Y29uZmlnOworICAvLyBEZWZhdWx0IGJlaGF2aW9yIGlzIGZhbHNlLgorICBDcmVhdGVQZWVyQ29u
bmVjdGlvbihjb25maWcpOworICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uSW50
ZXJmYWNlPiBvZmZlcjsKKyAgQVNTRVJUX1RSVUUoRG9DcmVhdGVPZmZlcigmb2ZmZXIsIG51bGxw
dHIpKTsKKyAgRVhQRUNUX0ZBTFNFKG9mZmVyLT5kZXNjcmlwdGlvbigpLT5leHRtYXBfYWxsb3df
bWl4ZWQoKSk7CisgIC8vIFBvc3NpYmxlIHRvIHNldCB0byB0cnVlLgorICBjb25maWcub2ZmZXJf
ZXh0bWFwX2FsbG93X21peGVkID0gdHJ1ZTsKKyAgQ3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmln
KTsKKyAgb2ZmZXIucmVsZWFzZSgpOworICBBU1NFUlRfVFJVRShEb0NyZWF0ZU9mZmVyKCZvZmZl
ciwgbnVsbHB0cikpOworICBFWFBFQ1RfVFJVRShvZmZlci0+ZGVzY3JpcHRpb24oKS0+ZXh0bWFw
X2FsbG93X21peGVkKCkpOworfQorCiBJTlNUQU5USUFURV9URVNUX0NBU0VfUChQZWVyQ29ubmVj
dGlvbkludGVyZmFjZVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoU2RwU2VtYW50
aWNzOjprUGxhbkIsCkBAIC0zOTU0LDYgKzM5NzksNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbk1l
ZGlhQ29uZmlnVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IHBjKAogICAgICAgICBwY2ZfLT5DcmVhdGVQ
ZWVyQ29ubmVjdGlvbihjb25maWcsIG51bGxwdHIsIG51bGxwdHIsICZvYnNlcnZlcl8pKTsKICAg
ICBFWFBFQ1RfVFJVRShwYy5nZXQoKSk7CisgICAgb2JzZXJ2ZXJfLlNldFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlKHBjLmdldCgpKTsKICAgICByZXR1cm4gcGMtPkdldENvbmZpZ3VyYXRpb24oKS5t
ZWRpYV9jb25maWc7CiAgIH0KIApAQCAtMzk2MSw2ICszOTg3LDE3IEBAIGNsYXNzIFBlZXJDb25u
ZWN0aW9uTWVkaWFDb25maWdUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICBNb2NrUGVl
ckNvbm5lY3Rpb25PYnNlcnZlciBvYnNlcnZlcl87CiB9OwogCisvLyBUaGlzIHNhbml0eSBjaGVj
ayB2YWxpZGF0ZXMgdGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgaXRzZWxmLgorVEVTVF9GKFBlZXJD
b25uZWN0aW9uTWVkaWFDb25maWdUZXN0LCBUZXN0Q3JlYXRlQW5kQ2xvc2UpIHsKKyAgUGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOworICBydGM6OnNjb3Bl
ZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IHBjKAorICAgICAgcGNmXy0+Q3JlYXRl
UGVlckNvbm5lY3Rpb24oY29uZmlnLCBudWxscHRyLCBudWxscHRyLCAmb2JzZXJ2ZXJfKSk7Cisg
IEVYUEVDVF9UUlVFKHBjLmdldCgpKTsKKyAgb2JzZXJ2ZXJfLlNldFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlKHBjLmdldCgpKTsgIC8vIFJlcXVpcmVkLgorICBwYy0+Q2xvc2UoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gYWJvcnQgLT4gb2suCisgIFNVQ0NFRUQo
KTsKK30KKwogLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBkZWZhdWx0IGJlaGF2aW91ciB3aXRo
IG5vIGNvbnN0cmFpbnRzIGFuZCBhCiAvLyBkZWZhdWx0IFJUQ0NvbmZpZ3VyYXRpb24uCiBURVNU
X0YoUGVlckNvbm5lY3Rpb25NZWRpYUNvbmZpZ1Rlc3QsIFRlc3REZWZhdWx0cykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjcG11
eGZpbHRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3J0Y3BtdXhmaWx0ZXJfdW5pdHRlc3QuY2MKaW5kZXggNTU1YWI1YzQ2ODEwNTRj
NDBhNzFlMWRjZTZjMzRhYTk3MGNlMTI0YS4uYTZhYzQ0NzhmY2Q1YWU3NWJhNTcxNmMwMzZmOTAw
MDNmZTA4YWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcnRjcG11eGZpbHRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNwbXV4ZmlsdGVyX3VuaXR0ZXN0LmNj
CkBAIC05LDcgKzksNiBAQAogICovCiAKICNpbmNsdWRlICJwYy9ydGNwbXV4ZmlsdGVyLmgiCi0j
aW5jbHVkZSAibWVkaWEvYmFzZS90ZXN0dXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5p
dC5oIgogCiBURVNUKFJ0Y3BNdXhGaWx0ZXJUZXN0LCBJc0FjdGl2ZVNlbmRlcikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjc3Rh
dHNfaW50ZWdyYXRpb250ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcnRjc3RhdHNfaW50ZWdyYXRpb250ZXN0LmNjCmluZGV4IDNjMDdlMzhiNWE0
OTVhYTkzZTdkYjlmZmQxZWYyZjU1OTQwODNiYTguLjQ5MDg0ZGU0ZDIwNzE3YzIyZGRjODkxYjdl
YTQ2MzIwNGNiNjNiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3J0Y3N0YXRzX2ludGVncmF0aW9udGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNzdGF0c19pbnRlZ3JhdGlv
bnRlc3QuY2MKQEAgLTYwNCwxMSArNjA0LDE4IEBAIGNsYXNzIFJUQ1N0YXRzUmVwb3J0VmVyaWZp
ZXIgewogICAgICAgICAgIG1lZGlhX3N0cmVhbV90cmFjay5jb25jZWFsZWRfc2FtcGxlcyk7CiAg
ICAgICB2ZXJpZmllci5UZXN0TWVtYmVySXNOb25OZWdhdGl2ZTx1aW50NjRfdD4oCiAgICAgICAg
ICAgbWVkaWFfc3RyZWFtX3RyYWNrLmNvbmNlYWxtZW50X2V2ZW50cyk7CisgICAgICB2ZXJpZmll
ci5UZXN0TWVtYmVySXNOb25OZWdhdGl2ZTx1aW50NjRfdD4oCisgICAgICAgICAgbWVkaWFfc3Ry
ZWFtX3RyYWNrLmppdHRlcl9idWZmZXJfZmx1c2hlcyk7CisgICAgICB2ZXJpZmllci5UZXN0TWVt
YmVySXNOb25OZWdhdGl2ZTx1aW50NjRfdD4oCisgICAgICAgICAgbWVkaWFfc3RyZWFtX3RyYWNr
LmRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzKTsKICAgICB9IGVsc2UgewogICAgICAgdmVy
aWZpZXIuVGVzdE1lbWJlcklzVW5kZWZpbmVkKG1lZGlhX3N0cmVhbV90cmFjay5qaXR0ZXJfYnVm
ZmVyX2RlbGF5KTsKICAgICAgIHZlcmlmaWVyLlRlc3RNZW1iZXJJc1VuZGVmaW5lZChtZWRpYV9z
dHJlYW1fdHJhY2sudG90YWxfc2FtcGxlc19yZWNlaXZlZCk7CiAgICAgICB2ZXJpZmllci5UZXN0
TWVtYmVySXNVbmRlZmluZWQobWVkaWFfc3RyZWFtX3RyYWNrLmNvbmNlYWxlZF9zYW1wbGVzKTsK
ICAgICAgIHZlcmlmaWVyLlRlc3RNZW1iZXJJc1VuZGVmaW5lZChtZWRpYV9zdHJlYW1fdHJhY2su
Y29uY2VhbG1lbnRfZXZlbnRzKTsKKyAgICAgIHZlcmlmaWVyLlRlc3RNZW1iZXJJc1VuZGVmaW5l
ZChtZWRpYV9zdHJlYW1fdHJhY2suaml0dGVyX2J1ZmZlcl9mbHVzaGVzKTsKKyAgICAgIHZlcmlm
aWVyLlRlc3RNZW1iZXJJc1VuZGVmaW5lZCgKKyAgICAgICAgICBtZWRpYV9zdHJlYW1fdHJhY2su
ZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMpOwogICAgIH0KICAgICByZXR1cm4gdmVyaWZp
ZXIuRXhwZWN0QWxsTWVtYmVyc1N1Y2Nlc3NmdWxseVRlc3RlZCgpOwogICB9CkBAIC04MDYsNyAr
ODEzLDExIEBAIFRFU1RfRihSVENTdGF0c0ludGVncmF0aW9uVGVzdCwgR2V0U3RhdHNXaXRoSW52
YWxpZFJlY2VpdmVyU2VsZWN0b3IpIHsKICAgRVhQRUNUX0ZBTFNFKHJlcG9ydC0+c2l6ZSgpKTsK
IH0KIAotVEVTVF9GKFJUQ1N0YXRzSW50ZWdyYXRpb25UZXN0LCBHZXRzU3RhdHNXaGlsZURlc3Ry
b3lpbmdQZWVyQ29ubmVjdGlvbnMpIHsKKy8vIFRPRE8oYnVncy53ZWJydGMub3JnLzEwMDQxKSBG
b3Igbm93IHRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nCisvLyB0ZXN0IEdldHNT
dGF0c1doaWxlQ2xvc2luZ1BlZXJDb25uZWN0aW9uLCBiZWNhdXNlIHBjKCkgaXMgY2xvc2VkIGJ5
CisvLyBQZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyLiBTZWU6IGJ1Z3Mud2VicnRjLm9yZy85ODQ3
CitURVNUX0YoUlRDU3RhdHNJbnRlZ3JhdGlvblRlc3QsCisgICAgICAgRElTQUJMRURfR2V0U3Rh
dHNXaGlsZURlc3Ryb3lpbmdQZWVyQ29ubmVjdGlvbikgewogICBTdGFydENhbGwoKTsKIAogICBy
dGM6OnNjb3BlZF9yZWZwdHI8UlRDU3RhdHNPYnRhaW5lcj4gc3RhdHNfb2J0YWluZXIgPQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRj
c3RhdHNjb2xsZWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9ydGNzdGF0c2NvbGxlY3Rvci5jYwppbmRleCBkODgzOTQzMGViZWY4NDIzZTJmOThm
NTgzNDQzYzFlNDViY2Y5MmQ3Li5kNDhlY2MwMWYzNTllNTFiOTAwMjU5ODI4YzA4NWM4YjVlMTYx
N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9ydGNzdGF0c2NvbGxlY3Rvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNzdGF0c2NvbGxlY3Rvci5jYwpAQCAtNDU0LDYgKzQ1NCwx
MCBAQCBQcm9kdWNlTWVkaWFTdHJlYW1UcmFja1N0YXRzRnJvbVZvaWNlUmVjZWl2ZXJJbmZvKAog
ICBhdWRpb190cmFja19zdGF0cy0+Y29uY2VhbGVkX3NhbXBsZXMgPSB2b2ljZV9yZWNlaXZlcl9p
bmZvLmNvbmNlYWxlZF9zYW1wbGVzOwogICBhdWRpb190cmFja19zdGF0cy0+Y29uY2VhbG1lbnRf
ZXZlbnRzID0KICAgICAgIHZvaWNlX3JlY2VpdmVyX2luZm8uY29uY2VhbG1lbnRfZXZlbnRzOwor
ICBhdWRpb190cmFja19zdGF0cy0+aml0dGVyX2J1ZmZlcl9mbHVzaGVzID0KKyAgICAgIHZvaWNl
X3JlY2VpdmVyX2luZm8uaml0dGVyX2J1ZmZlcl9mbHVzaGVzOworICBhdWRpb190cmFja19zdGF0
cy0+ZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMgPQorICAgICAgdm9pY2VfcmVjZWl2ZXJf
aW5mby5kZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlczsKICAgcmV0dXJuIGF1ZGlvX3RyYWNr
X3N0YXRzOwogfQogCkBAIC0xMzg4LDcgKzEzOTIsNyBAQCBSVENTdGF0c0NvbGxlY3Rvcjo6UHJl
cGFyZVRyYW5zcG9ydENlcnRpZmljYXRlU3RhdHNfbigKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8
cnRjOjpSVENDZXJ0aWZpY2F0ZT4gbG9jYWxfY2VydGlmaWNhdGU7CiAgICAgaWYgKHBjXy0+R2V0
TG9jYWxDZXJ0aWZpY2F0ZSh0cmFuc3BvcnRfbmFtZSwgJmxvY2FsX2NlcnRpZmljYXRlKSkgewog
ICAgICAgY2VydGlmaWNhdGVfc3RhdHNfcGFpci5sb2NhbCA9Ci0gICAgICAgICAgbG9jYWxfY2Vy
dGlmaWNhdGUtPnNzbF9jZXJ0X2NoYWluKCkuR2V0U3RhdHMoKTsKKyAgICAgICAgICBsb2NhbF9j
ZXJ0aWZpY2F0ZS0+R2V0U1NMQ2VydGlmaWNhdGVDaGFpbigpLkdldFN0YXRzKCk7CiAgICAgfQog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMQ2VydENoYWluPiByZW1vdGVfY2VydF9jaGFp
biA9CkBAIC0xNDI2LDcgKzE0MzAsNyBAQCBSVENTdGF0c0NvbGxlY3Rvcjo6UHJlcGFyZVRyYW5z
Y2VpdmVyU3RhdHNJbmZvc19zKCkgY29uc3QgewogICAgIHN0YXRzLnRyYW5zY2VpdmVyID0gdHJh
bnNjZWl2ZXItPmludGVybmFsKCk7CiAgICAgc3RhdHMubWVkaWFfdHlwZSA9IG1lZGlhX3R5cGU7
CiAKLSAgICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IHRyYW5zY2VpdmVyLT5pbnRl
cm5hbCgpLT5jaGFubmVsKCk7CisgICAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5l
bCA9IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCk7CiAgICAgaWYgKCFjaGFubmVs
KSB7CiAgICAgICAvLyBUaGUgcmVtYWluaW5nIGZpZWxkcyByZXF1aXJlIGEgQmFzZUNoYW5uZWwu
CiAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3N0YXRzY29sbGVjdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjc3RhdHNjb2xsZWN0b3Jf
dW5pdHRlc3QuY2MKaW5kZXggNzQwNGQ0OTJlZjM3ZGQxYWFkY2I3ZjQyM2JkN2I4ODZkNjVhZGNi
My4uYWRjYTllZjZjNDY1N2VjZGRjZjRmNThkNzFlMzVkMDYwYzYzOTUwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjc3RhdHNjb2xs
ZWN0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcnRjc3RhdHNjb2xsZWN0b3JfdW5pdHRlc3QuY2MKQEAgLTE0MywxMCArMTQz
LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxDZXJ0aWZpY2F0ZUluZm8+IENyZWF0ZUZha2VDZXJ0aWZp
Y2F0ZUFuZEluZm9Gcm9tRGVycygKICAgfQogICAvLyBGaW5nZXJwcmludHMgZm9yIHRoZSB3aG9s
ZSBjZXJ0aWZpY2F0ZSBjaGFpbiwgc3RhcnRpbmcgd2l0aCBsZWFmCiAgIC8vIGNlcnRpZmljYXRl
LgotICBjb25zdCBydGM6OlNTTENlcnRDaGFpbiYgY2hhaW4gPSBpbmZvLT5jZXJ0aWZpY2F0ZS0+
c3NsX2NlcnRfY2hhaW4oKTsKKyAgY29uc3QgcnRjOjpTU0xDZXJ0Q2hhaW4mIGNoYWluID0gaW5m
by0+Y2VydGlmaWNhdGUtPkdldFNTTENlcnRpZmljYXRlQ2hhaW4oKTsKICAgc3RkOjp1bmlxdWVf
cHRyPHJ0Yzo6U1NMRmluZ2VycHJpbnQ+IGZwOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNo
YWluLkdldFNpemUoKTsgaSsrKSB7Ci0gICAgZnAucmVzZXQocnRjOjpTU0xGaW5nZXJwcmludDo6
Q3JlYXRlKCJzaGEtMSIsICZjaGFpbi5HZXQoaSkpKTsKKyAgICBmcCA9IHJ0Yzo6U1NMRmluZ2Vy
cHJpbnQ6OkNyZWF0ZSgic2hhLTEiLCBjaGFpbi5HZXQoaSkpOwogICAgIEVYUEVDVF9UUlVFKGZw
KTsKICAgICBpbmZvLT5maW5nZXJwcmludHMucHVzaF9iYWNrKGZwLT5HZXRSZmM0NTcyRmluZ2Vy
cHJpbnQoKSk7CiAgIH0KQEAgLTcwNCw3ICs3MDQsNyBAQCBURVNUX0YoUlRDU3RhdHNDb2xsZWN0
b3JUZXN0LCBDb2xsZWN0UlRDQ2VydGlmaWNhdGVTdGF0c1NpbmdsZSkgewogICAgICAgICAgIHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPih7IihyZW1vdGUpIHNpbmdsZSBjZXJ0aWZpY2F0ZSJ9KSk7
CiAgIHBjXy0+U2V0UmVtb3RlQ2VydENoYWluKAogICAgICAga1RyYW5zcG9ydE5hbWUsCi0gICAg
ICByZW1vdGVfY2VydGluZm8tPmNlcnRpZmljYXRlLT5zc2xfY2VydF9jaGFpbigpLlVuaXF1ZUNv
cHkoKSk7CisgICAgICByZW1vdGVfY2VydGluZm8tPmNlcnRpZmljYXRlLT5HZXRTU0xDZXJ0aWZp
Y2F0ZUNoYWluKCkuQ2xvbmUoKSk7CiAKICAgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0IFJUQ1N0
YXRzUmVwb3J0PiByZXBvcnQgPSBzdGF0c18tPkdldFN0YXRzUmVwb3J0KCk7CiAKQEAgLTgxOCw3
ICs4MTgsNyBAQCBURVNUX0YoUlRDU3RhdHNDb2xsZWN0b3JUZXN0LCBDb2xsZWN0UlRDQ2VydGlm
aWNhdGVTdGF0c011bHRpcGxlKSB7CiAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
KHsiKHJlbW90ZSkgYXVkaW8ifSkpOwogICBwY18tPlNldFJlbW90ZUNlcnRDaGFpbigKICAgICAg
IGtBdWRpb1RyYW5zcG9ydCwKLSAgICAgIGF1ZGlvX3JlbW90ZV9jZXJ0aW5mby0+Y2VydGlmaWNh
dGUtPnNzbF9jZXJ0X2NoYWluKCkuVW5pcXVlQ29weSgpKTsKKyAgICAgIGF1ZGlvX3JlbW90ZV9j
ZXJ0aW5mby0+Y2VydGlmaWNhdGUtPkdldFNTTENlcnRpZmljYXRlQ2hhaW4oKS5DbG9uZSgpKTsK
IAogICBwY18tPkFkZFZpZGVvQ2hhbm5lbCgidmlkZW8iLCBrVmlkZW9UcmFuc3BvcnQpOwogICBz
dGQ6OnVuaXF1ZV9wdHI8Q2VydGlmaWNhdGVJbmZvPiB2aWRlb19sb2NhbF9jZXJ0aW5mbyA9CkBA
IC04MzAsNyArODMwLDcgQEAgVEVTVF9GKFJUQ1N0YXRzQ29sbGVjdG9yVGVzdCwgQ29sbGVjdFJU
Q0NlcnRpZmljYXRlU3RhdHNNdWx0aXBsZSkgewogICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPih7IihyZW1vdGUpIHZpZGVvIn0pKTsKICAgcGNfLT5TZXRSZW1vdGVDZXJ0Q2hhaW4o
CiAgICAgICBrVmlkZW9UcmFuc3BvcnQsCi0gICAgICB2aWRlb19yZW1vdGVfY2VydGluZm8tPmNl
cnRpZmljYXRlLT5zc2xfY2VydF9jaGFpbigpLlVuaXF1ZUNvcHkoKSk7CisgICAgICB2aWRlb19y
ZW1vdGVfY2VydGluZm8tPmNlcnRpZmljYXRlLT5HZXRTU0xDZXJ0aWZpY2F0ZUNoYWluKCkuQ2xv
bmUoKSk7CiAKICAgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0IFJUQ1N0YXRzUmVwb3J0PiByZXBv
cnQgPSBzdGF0c18tPkdldFN0YXRzUmVwb3J0KCk7CiAgIEV4cGVjdFJlcG9ydENvbnRhaW5zQ2Vy
dGlmaWNhdGVJbmZvKHJlcG9ydCwgKmF1ZGlvX2xvY2FsX2NlcnRpbmZvKTsKQEAgLTg1NSw3ICs4
NTUsNyBAQCBURVNUX0YoUlRDU3RhdHNDb2xsZWN0b3JUZXN0LCBDb2xsZWN0UlRDQ2VydGlmaWNh
dGVTdGF0c0NoYWluKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIocmVtb3RlKSBjaGFpbiJ9KTsKICAgcGNfLT5TZXRSZW1vdGVDZXJ0Q2hhaW4oCiAgICAg
ICBrVHJhbnNwb3J0TmFtZSwKLSAgICAgIHJlbW90ZV9jZXJ0aW5mby0+Y2VydGlmaWNhdGUtPnNz
bF9jZXJ0X2NoYWluKCkuVW5pcXVlQ29weSgpKTsKKyAgICAgIHJlbW90ZV9jZXJ0aW5mby0+Y2Vy
dGlmaWNhdGUtPkdldFNTTENlcnRpZmljYXRlQ2hhaW4oKS5DbG9uZSgpKTsKIAogICBydGM6OnNj
b3BlZF9yZWZwdHI8Y29uc3QgUlRDU3RhdHNSZXBvcnQ+IHJlcG9ydCA9IHN0YXRzXy0+R2V0U3Rh
dHNSZXBvcnQoKTsKICAgRXhwZWN0UmVwb3J0Q29udGFpbnNDZXJ0aWZpY2F0ZUluZm8ocmVwb3J0
LCAqbG9jYWxfY2VydGluZm8pOwpAQCAtMTQyNiw2ICsxNDI2LDggQEAgVEVTVF9GKFJUQ1N0YXRz
Q29sbGVjdG9yVGVzdCwKICAgdm9pY2VfcmVjZWl2ZXJfaW5mby5jb25jZWFsZWRfc2FtcGxlcyA9
IDEyMzsKICAgdm9pY2VfcmVjZWl2ZXJfaW5mby5jb25jZWFsbWVudF9ldmVudHMgPSAxMjsKICAg
dm9pY2VfcmVjZWl2ZXJfaW5mby5qaXR0ZXJfYnVmZmVyX2RlbGF5X3NlY29uZHMgPSAzNDU2Owor
ICB2b2ljZV9yZWNlaXZlcl9pbmZvLmppdHRlcl9idWZmZXJfZmx1c2hlcyA9IDc7CisgIHZvaWNl
X3JlY2VpdmVyX2luZm8uZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMgPSAxNTsKIAogICBz
dGF0c18tPkNyZWF0ZU1vY2tSdHBTZW5kZXJzUmVjZWl2ZXJzQW5kQ2hhbm5lbHMoCiAgICAgICB7
fSwge3N0ZDo6bWFrZV9wYWlyKHJlbW90ZV9hdWRpb190cmFjay5nZXQoKSwgdm9pY2VfcmVjZWl2
ZXJfaW5mbyl9LCB7fSwKQEAgLTE0NTksNiArMTQ2MSw4IEBAIFRFU1RfRihSVENTdGF0c0NvbGxl
Y3RvclRlc3QsCiAgIGV4cGVjdGVkX3JlbW90ZV9hdWRpb190cmFjay5jb25jZWFsZWRfc2FtcGxl
cyA9IDEyMzsKICAgZXhwZWN0ZWRfcmVtb3RlX2F1ZGlvX3RyYWNrLmNvbmNlYWxtZW50X2V2ZW50
cyA9IDEyOwogICBleHBlY3RlZF9yZW1vdGVfYXVkaW9fdHJhY2suaml0dGVyX2J1ZmZlcl9kZWxh
eSA9IDM0NTY7CisgIGV4cGVjdGVkX3JlbW90ZV9hdWRpb190cmFjay5qaXR0ZXJfYnVmZmVyX2Zs
dXNoZXMgPSA3OworICBleHBlY3RlZF9yZW1vdGVfYXVkaW9fdHJhY2suZGVsYXllZF9wYWNrZXRf
b3V0YWdlX3NhbXBsZXMgPSAxNTsKICAgQVNTRVJUX1RSVUUocmVwb3J0LT5HZXQoZXhwZWN0ZWRf
cmVtb3RlX2F1ZGlvX3RyYWNrLmlkKCkpKTsKICAgRVhQRUNUX0VRKGV4cGVjdGVkX3JlbW90ZV9h
dWRpb190cmFjaywKICAgICAgICAgICAgIHJlcG9ydC0+R2V0KGV4cGVjdGVkX3JlbW90ZV9hdWRp
b190cmFjay5pZCgpKQpAQCAtMTk1Nyw3ICsxOTYxLDcgQEAgVEVTVF9GKFJUQ1N0YXRzQ29sbGVj
dG9yVGVzdCwgQ29sbGVjdFJUQ1RyYW5zcG9ydFN0YXRzKSB7CiAgICAgICAgICAgeyIocmVtb3Rl
KSBsb2NhbCIsICIocmVtb3RlKSBjaGFpbiJ9KTsKICAgcGNfLT5TZXRSZW1vdGVDZXJ0Q2hhaW4o
CiAgICAgICBrVHJhbnNwb3J0TmFtZSwKLSAgICAgIHJlbW90ZV9jZXJ0aW5mby0+Y2VydGlmaWNh
dGUtPnNzbF9jZXJ0X2NoYWluKCkuVW5pcXVlQ29weSgpKTsKKyAgICAgIHJlbW90ZV9jZXJ0aW5m
by0+Y2VydGlmaWNhdGUtPkdldFNTTENlcnRpZmljYXRlQ2hhaW4oKS5DbG9uZSgpKTsKIAogICBy
ZXBvcnQgPSBzdGF0c18tPkdldEZyZXNoU3RhdHNSZXBvcnQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2Nv
bnZlcnNpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYwppbmRleCBlNTE5YjliMDZkZTZjMzNhMDI2ZDQ5
NTllOWI3M2NlNmQ0ZTJkNzkwLi44NjU2ODVkNzNjNDMyNGZiOGYyZjYxZmVhMDY4NDdkYjljNjU2
MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYwpAQCAt
Mzk2LDYgKzM5Niw3IEBAIFJ0cENhcGFiaWxpdGllcyBUb1J0cENhcGFiaWxpdGllcygKICAgYm9v
bCBoYXZlX3JlZCA9IGZhbHNlOwogICBib29sIGhhdmVfdWxwZmVjID0gZmFsc2U7CiAgIGJvb2wg
aGF2ZV9mbGV4ZmVjID0gZmFsc2U7CisgIGJvb2wgaGF2ZV9ydHggPSBmYWxzZTsKICAgZm9yIChj
b25zdCBDJiBjcmlja2V0X2NvZGVjIDogY3JpY2tldF9jb2RlY3MpIHsKICAgICBpZiAoY3JpY2tl
dF9jb2RlYy5uYW1lID09IGNyaWNrZXQ6OmtSZWRDb2RlY05hbWUpIHsKICAgICAgIGhhdmVfcmVk
ID0gdHJ1ZTsKQEAgLTQwMyw4ICs0MDQsMTkgQEAgUnRwQ2FwYWJpbGl0aWVzIFRvUnRwQ2FwYWJp
bGl0aWVzKAogICAgICAgaGF2ZV91bHBmZWMgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAoY3JpY2tl
dF9jb2RlYy5uYW1lID09IGNyaWNrZXQ6OmtGbGV4ZmVjQ29kZWNOYW1lKSB7CiAgICAgICBoYXZl
X2ZsZXhmZWMgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoY3JpY2tldF9jb2RlYy5uYW1lID09IGNy
aWNrZXQ6OmtSdHhDb2RlY05hbWUpIHsKKyAgICAgIGlmIChoYXZlX3J0eCkgeworICAgICAgICAv
LyBUaGVyZSBzaG91bGQgb25seSBiZSBvbmUgUlRYIGNvZGVjIGVudHJ5CisgICAgICAgIGNvbnRp
bnVlOworICAgICAgfQorICAgICAgaGF2ZV9ydHggPSB0cnVlOworICAgIH0KKyAgICBhdXRvIGNv
ZGVjX2NhcGFiaWxpdHkgPSBUb1J0cENvZGVjQ2FwYWJpbGl0eShjcmlja2V0X2NvZGVjKTsKKyAg
ICBpZiAoY3JpY2tldF9jb2RlYy5uYW1lID09IGNyaWNrZXQ6OmtSdHhDb2RlY05hbWUpIHsKKyAg
ICAgIC8vIFJUWCBjb2RlYyBzaG91bGQgbm90IGhhdmUgYW55IHBhcmFtZXRlcgorICAgICAgY29k
ZWNfY2FwYWJpbGl0eS5wYXJhbWV0ZXJzLmNsZWFyKCk7CiAgICAgfQotICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MucHVzaF9iYWNrKFRvUnRwQ29kZWNDYXBhYmlsaXR5KGNyaWNrZXRfY29kZWMpKTsK
KyAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnB1c2hfYmFjayhjb2RlY19jYXBhYmlsaXR5KTsKICAg
fQogICBmb3IgKGNvbnN0IFJ0cEV4dGVuc2lvbiYgY3JpY2tldF9leHRlbnNpb24gOiBjcmlja2V0
X2V4dGVuc2lvbnMpIHsKICAgICBjYXBhYmlsaXRpZXMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFj
ZV9iYWNrKGNyaWNrZXRfZXh0ZW5zaW9uLnVyaSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cnRwcGFyYW1ldGVyc2NvbnZlcnNpb25fdW5pdHRlc3QuY2MKaW5kZXggMjU3ZDI2ZWJiNTBjM2I4
ZTZmMjVjOTk3MDhhNjYxMzdiZjVjMzBjMS4uZjRmMWI5MjcwYzZjOTZhZmVkOTk5NDc4MGU5ODky
YjFlN2Q5MmQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb25fdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2Nv
bnZlcnNpb25fdW5pdHRlc3QuY2MKQEAgLTU3NCwxMSArNTc0LDIzIEBAIFRFU1QoUnRwUGFyYW1l
dGVyc0NvbnZlcnNpb25UZXN0LCBUb1J0cENhcGFiaWxpdGllcykgewogICBmbGV4ZmVjLmlkID0g
MTAyOwogICBmbGV4ZmVjLmNsb2NrcmF0ZSA9IDkwMDAwOwogCisgIGNyaWNrZXQ6OlZpZGVvQ29k
ZWMgcnR4OworICBydHgubmFtZSA9ICJydHgiOworICBydHguaWQgPSAxMDQ7CisgIHJ0eC5wYXJh
bXMuaW5zZXJ0KHsiYXB0IiwgIjEwMSJ9KTsKKworICBjcmlja2V0OjpWaWRlb0NvZGVjIHJ0eDI7
CisgIHJ0eDIubmFtZSA9ICJydHgiOworICBydHgyLmlkID0gMTA1OworICBydHgyLnBhcmFtcy5p
bnNlcnQoeyJhcHQiLCAiMTA5In0pOworCiAgIFJ0cENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMg
PSBUb1J0cENhcGFiaWxpdGllczxjcmlja2V0OjpWaWRlb0NvZGVjPigKLSAgICAgIHt2cDgsIHVs
cGZlY30sIHt7InVyaSIsIDF9LCB7InVyaTIiLCAzfX0pOwotICBBU1NFUlRfRVEoMnUsIGNhcGFi
aWxpdGllcy5jb2RlY3Muc2l6ZSgpKTsKKyAgICAgIHt2cDgsIHVscGZlYywgcnR4LCBydHgyfSwg
e3sidXJpIiwgMX0sIHsidXJpMiIsIDN9fSk7CisgIEFTU0VSVF9FUSgzdSwgY2FwYWJpbGl0aWVz
LmNvZGVjcy5zaXplKCkpOwogICBFWFBFQ1RfRVEoIlZQOCIsIGNhcGFiaWxpdGllcy5jb2RlY3Nb
MF0ubmFtZSk7CiAgIEVYUEVDVF9FUSgidWxwZmVjIiwgY2FwYWJpbGl0aWVzLmNvZGVjc1sxXS5u
YW1lKTsKKyAgRVhQRUNUX0VRKCJydHgiLCBjYXBhYmlsaXRpZXMuY29kZWNzWzJdLm5hbWUpOwor
ICBFWFBFQ1RfRVEoMHUsIGNhcGFiaWxpdGllcy5jb2RlY3NbMl0ucGFyYW1ldGVycy5zaXplKCkp
OwogICBBU1NFUlRfRVEoMnUsIGNhcGFiaWxpdGllcy5oZWFkZXJfZXh0ZW5zaW9ucy5zaXplKCkp
OwogICBFWFBFQ1RfRVEoInVyaSIsIGNhcGFiaWxpdGllcy5oZWFkZXJfZXh0ZW5zaW9uc1swXS51
cmkpOwogICBFWFBFQ1RfRVEoMSwgY2FwYWJpbGl0aWVzLmhlYWRlcl9leHRlbnNpb25zWzBdLnBy
ZWZlcnJlZF9pZCk7CkBAIC01ODcsOCArNTk5LDggQEAgVEVTVChSdHBQYXJhbWV0ZXJzQ29udmVy
c2lvblRlc3QsIFRvUnRwQ2FwYWJpbGl0aWVzKSB7CiAgIEVYUEVDVF9FUSgwdSwgY2FwYWJpbGl0
aWVzLmZlYy5zaXplKCkpOwogCiAgIGNhcGFiaWxpdGllcyA9IFRvUnRwQ2FwYWJpbGl0aWVzPGNy
aWNrZXQ6OlZpZGVvQ29kZWM+KAotICAgICAge3ZwOCwgcmVkLCB1bHBmZWN9LCBjcmlja2V0OjpS
dHBIZWFkZXJFeHRlbnNpb25zKCkpOwotICBFWFBFQ1RfRVEoM3UsIGNhcGFiaWxpdGllcy5jb2Rl
Y3Muc2l6ZSgpKTsKKyAgICAgIHt2cDgsIHJlZCwgdWxwZmVjLCBydHh9LCBjcmlja2V0OjpSdHBI
ZWFkZXJFeHRlbnNpb25zKCkpOworICBFWFBFQ1RfRVEoNHUsIGNhcGFiaWxpdGllcy5jb2RlY3Mu
c2l6ZSgpKTsKICAgRVhQRUNUX0VRKDJ1LCBjYXBhYmlsaXRpZXMuZmVjLnNpemUoKSk7CiAgIEVY
UEVDVF9ORShjYXBhYmlsaXRpZXMuZmVjLmVuZCgpLAogICAgICAgICAgICAgc3RkOjpmaW5kKGNh
cGFiaWxpdGllcy5mZWMuYmVnaW4oKSwgY2FwYWJpbGl0aWVzLmZlYy5lbmQoKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHJlY2Vp
dmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRw
cmVjZWl2ZXIuY2MKaW5kZXggZDRhMWY2MmY4M2I4NGNjYTY3MGZhYTBiZTU4MjkxZTBjMmEzYmM0
Zi4uMTkxNmE3MzY3MDMyYzRiYjFmODFhNjUxMGQyZWVmMTFjNDVhOTI3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcmVjZWl2ZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRw
cmVjZWl2ZXIuY2MKQEAgLTUwLDkgKzUwLDEwIEBAIHZvaWQgTWF5YmVBdHRhY2hGcmFtZURlY3J5
cHRvclRvTWVkaWFDaGFubmVsKAogICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiYg
c3NyYywKICAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKICAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yLAot
ICAgIGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgewotICBpZiAobWVkaWFf
Y2hhbm5lbCAmJiBzc3JjLmhhc192YWx1ZSgpKSB7Ci0gICAgcmV0dXJuIHdvcmtlcl90aHJlYWQt
Pkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0geworICAgIGNyaWNrZXQ6Ok1lZGlhQ2hh
bm5lbCogbWVkaWFfY2hhbm5lbCwKKyAgICBib29sIHN0b3BwZWQpIHsKKyAgaWYgKG1lZGlhX2No
YW5uZWwgJiYgZnJhbWVfZGVjcnlwdG9yICYmIHNzcmMuaGFzX3ZhbHVlKCkgJiYgIXN0b3BwZWQp
IHsKKyAgICB3b3JrZXJfdGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdIHsK
ICAgICAgIG1lZGlhX2NoYW5uZWwtPlNldEZyYW1lRGVjcnlwdG9yKCpzc3JjLCBmcmFtZV9kZWNy
eXB0b3IpOwogICAgIH0pOwogICB9CkBAIC0xNTYsOSArMTU3LDEyIEBAIGJvb2wgQXVkaW9SdHBS
ZWNlaXZlcjo6U2V0UGFyYW1ldGVycyhjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSB7
CiB2b2lkIEF1ZGlvUnRwUmVjZWl2ZXI6OlNldEZyYW1lRGVjcnlwdG9yKAogICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yKSB7CiAg
IGZyYW1lX2RlY3J5cHRvcl8gPSBzdGQ6Om1vdmUoZnJhbWVfZGVjcnlwdG9yKTsKLSAgLy8gQXR0
YWNoIHRoZSBmcmFtZSBkZWNyeXB0b3IgdG8gdGhlIG1lZGlhIGNoYW5uZWwgaWYgaXQgZXhpc3Rz
LgotICBNYXliZUF0dGFjaEZyYW1lRGVjcnlwdG9yVG9NZWRpYUNoYW5uZWwoc3NyY18sIHdvcmtl
cl90aHJlYWRfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWVfZGVjcnlwdG9yXywgbWVkaWFfY2hhbm5lbF8pOworICAvLyBTcGVjaWFsIENhc2U6IFNldCB0
aGUgZnJhbWUgZGVjcnlwdG9yIHRvIGFueSB2YWx1ZSBvbiBhbnkgZXhpc3RpbmcgY2hhbm5lbC4K
KyAgaWYgKG1lZGlhX2NoYW5uZWxfICYmIHNzcmNfLmhhc192YWx1ZSgpICYmICFzdG9wcGVkXykg
eworICAgIHdvcmtlcl90aHJlYWRfLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdIHsK
KyAgICAgIG1lZGlhX2NoYW5uZWxfLT5TZXRGcmFtZURlY3J5cHRvcigqc3NyY18sIGZyYW1lX2Rl
Y3J5cHRvcl8pOworICAgIH0pOworICB9CiB9CiAKIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURl
Y3J5cHRvckludGVyZmFjZT4KQEAgLTI1Miw4ICsyNTYsOCBAQCB2b2lkIEF1ZGlvUnRwUmVjZWl2
ZXI6OlJlY29uZmlndXJlKCkgewogICAgIFJUQ19OT1RSRUFDSEVEKCk7CiAgIH0KICAgLy8gUmVh
dHRhY2ggdGhlIGZyYW1lIGRlY3J5cHRvciBpZiB3ZSB3ZXJlIHJlY29uZmlndXJlZC4KLSAgTWF5
YmVBdHRhY2hGcmFtZURlY3J5cHRvclRvTWVkaWFDaGFubmVsKHNzcmNfLCB3b3JrZXJfdGhyZWFk
XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2RlY3J5
cHRvcl8sIG1lZGlhX2NoYW5uZWxfKTsKKyAgTWF5YmVBdHRhY2hGcmFtZURlY3J5cHRvclRvTWVk
aWFDaGFubmVsKAorICAgICAgc3NyY18sIHdvcmtlcl90aHJlYWRfLCBmcmFtZV9kZWNyeXB0b3Jf
LCBtZWRpYV9jaGFubmVsXywgc3RvcHBlZF8pOwogfQogCiB2b2lkIEF1ZGlvUnRwUmVjZWl2ZXI6
OlNldE9ic2VydmVyKFJ0cFJlY2VpdmVyT2JzZXJ2ZXJJbnRlcmZhY2UqIG9ic2VydmVyKSB7CkBA
IC0yNjQsOSArMjY4LDEwIEBAIHZvaWQgQXVkaW9SdHBSZWNlaXZlcjo6U2V0T2JzZXJ2ZXIoUnRw
UmVjZWl2ZXJPYnNlcnZlckludGVyZmFjZSogb2JzZXJ2ZXIpIHsKICAgfQogfQogCi12b2lkIEF1
ZGlvUnRwUmVjZWl2ZXI6OlNldFZvaWNlTWVkaWFDaGFubmVsKAotICAgIGNyaWNrZXQ6OlZvaWNl
TWVkaWFDaGFubmVsKiB2b2ljZV9tZWRpYV9jaGFubmVsKSB7Ci0gIG1lZGlhX2NoYW5uZWxfID0g
dm9pY2VfbWVkaWFfY2hhbm5lbDsKK3ZvaWQgQXVkaW9SdHBSZWNlaXZlcjo6U2V0TWVkaWFDaGFu
bmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgeworICBSVENfRENIRUNL
KG1lZGlhX2NoYW5uZWwgPT0gbnVsbHB0ciB8fAorICAgICAgICAgICAgIG1lZGlhX2NoYW5uZWwt
Pm1lZGlhX3R5cGUoKSA9PSBtZWRpYV90eXBlKCkpOworICBtZWRpYV9jaGFubmVsXyA9IHN0YXRp
Y19jYXN0PGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKj4obWVkaWFfY2hhbm5lbCk7CiB9CiAK
IHZvaWQgQXVkaW9SdHBSZWNlaXZlcjo6Tm90aWZ5Rmlyc3RQYWNrZXRSZWNlaXZlZCgpIHsKQEAg
LTM0Nyw5ICszNTIsMTIgQEAgYm9vbCBWaWRlb1J0cFJlY2VpdmVyOjpTZXRQYXJhbWV0ZXJzKGNv
bnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIHsKIHZvaWQgVmlkZW9SdHBSZWNlaXZlcjo6
U2V0RnJhbWVEZWNyeXB0b3IoCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9y
SW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IpIHsKICAgZnJhbWVfZGVjcnlwdG9yXyA9IHN0ZDo6
bW92ZShmcmFtZV9kZWNyeXB0b3IpOwotICAvLyBBdHRhY2ggdGhlIG5ldyBmcmFtZSBkZWNyeXB0
b3IgdGhlIG1lZGlhIGNoYW5uZWwgaWYgaXQgZXhpc3RzIHlldC4KLSAgTWF5YmVBdHRhY2hGcmFt
ZURlY3J5cHRvclRvTWVkaWFDaGFubmVsKHNzcmNfLCB3b3JrZXJfdGhyZWFkXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2RlY3J5cHRvcl8sIG1lZGlh
X2NoYW5uZWxfKTsKKyAgLy8gU3BlY2lhbCBDYXNlOiBTZXQgdGhlIGZyYW1lIGRlY3J5cHRvciB0
byBhbnkgdmFsdWUgb24gYW55IGV4aXN0aW5nIGNoYW5uZWwuCisgIGlmIChtZWRpYV9jaGFubmVs
XyAmJiBzc3JjXy5oYXNfdmFsdWUoKSAmJiAhc3RvcHBlZF8pIHsKKyAgICB3b3JrZXJfdGhyZWFk
Xy0+SW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIFsmXSB7CisgICAgICBtZWRpYV9jaGFubmVs
Xy0+U2V0RnJhbWVEZWNyeXB0b3IoKnNzcmNfLCBmcmFtZV9kZWNyeXB0b3JfKTsKKyAgICB9KTsK
KyAgfQogfQogCiBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+CkBA
IC0zODcsOCArMzk1LDggQEAgdm9pZCBWaWRlb1J0cFJlY2VpdmVyOjpTZXR1cE1lZGlhQ2hhbm5l
bCh1aW50MzJfdCBzc3JjKSB7CiAgIHNzcmNfID0gc3NyYzsKICAgU2V0U2luayhzb3VyY2VfLT5z
aW5rKCkpOwogICAvLyBBdHRhY2ggYW55IGV4aXN0aW5nIGZyYW1lIGRlY3J5cHRvciB0byB0aGUg
bWVkaWEgY2hhbm5lbC4KLSAgTWF5YmVBdHRhY2hGcmFtZURlY3J5cHRvclRvTWVkaWFDaGFubmVs
KHNzcmNfLCB3b3JrZXJfdGhyZWFkXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1lX2RlY3J5cHRvcl8sIG1lZGlhX2NoYW5uZWxfKTsKKyAgTWF5YmVBdHRh
Y2hGcmFtZURlY3J5cHRvclRvTWVkaWFDaGFubmVsKAorICAgICAgc3NyY18sIHdvcmtlcl90aHJl
YWRfLCBmcmFtZV9kZWNyeXB0b3JfLCBtZWRpYV9jaGFubmVsXywgc3RvcHBlZF8pOwogfQogCiB2
b2lkIFZpZGVvUnRwUmVjZWl2ZXI6OnNldF9zdHJlYW1faWRzKHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiBzdHJlYW1faWRzKSB7CkBAIC00MzYsOSArNDQ0LDEwIEBAIHZvaWQgVmlkZW9SdHBSZWNl
aXZlcjo6U2V0T2JzZXJ2ZXIoUnRwUmVjZWl2ZXJPYnNlcnZlckludGVyZmFjZSogb2JzZXJ2ZXIp
IHsKICAgfQogfQogCi12b2lkIFZpZGVvUnRwUmVjZWl2ZXI6OlNldFZpZGVvTWVkaWFDaGFubmVs
KAotICAgIGNyaWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVsKiB2aWRlb19tZWRpYV9jaGFubmVsKSB7
Ci0gIG1lZGlhX2NoYW5uZWxfID0gdmlkZW9fbWVkaWFfY2hhbm5lbDsKK3ZvaWQgVmlkZW9SdHBS
ZWNlaXZlcjo6U2V0TWVkaWFDaGFubmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hh
bm5lbCkgeworICBSVENfRENIRUNLKG1lZGlhX2NoYW5uZWwgPT0gbnVsbHB0ciB8fAorICAgICAg
ICAgICAgIG1lZGlhX2NoYW5uZWwtPm1lZGlhX3R5cGUoKSA9PSBtZWRpYV90eXBlKCkpOworICBt
ZWRpYV9jaGFubmVsXyA9IHN0YXRpY19jYXN0PGNyaWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVsKj4o
bWVkaWFfY2hhbm5lbCk7CiB9CiAKIHZvaWQgVmlkZW9SdHBSZWNlaXZlcjo6Tm90aWZ5Rmlyc3RQ
YWNrZXRSZWNlaXZlZCgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHJlY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHByZWNlaXZlci5oCmluZGV4IDg1YmU4YzI1OGJmYmEy
ZjViMDkyZWZmMWJmY2Q1MmM0MTIyYzNmNjkuLjA2MzMxYTY2YzRkZDk1Y2EyZTVlMTU4ODQ2MmJi
MWVmZWZkODcyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3J0cHJlY2VpdmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcmVjZWl2ZXIuaApAQCAtMzQsMTQgKzM0LDEwIEBAIGNs
YXNzIFJ0cFJlY2VpdmVySW50ZXJuYWwgOiBwdWJsaWMgUnRwUmVjZWl2ZXJJbnRlcmZhY2Ugewog
ICB2aXJ0dWFsIHZvaWQgU3RvcCgpID0gMDsKIAogICAvLyBTZXRzIHRoZSB1bmRlcmx5aW5nIE1l
ZGlhRW5naW5lIGNoYW5uZWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUnRwU2VuZGVyLgotICAvLyBT
ZXRWb2ljZU1lZGlhQ2hhbm5lbCBzaG91bGQgYmUgdXNlZCBmb3IgYXVkaW8gUnRwU2VuZGVycyBh
bmQKLSAgLy8gU2V0VmlkZW9NZWRpYUNoYW5uZWwgc2hvdWxkIGJlIHVzZWQgZm9yIHZpZGVvIFJ0
cFNlbmRlcnMuIE11c3QgY2FsbCB0aGUKLSAgLy8gYXBwcm9wcmlhdGUgU2V0WHh4TWVkaWFDaGFu
bmVsKG51bGxwdHIpIGJlZm9yZSB0aGUgbWVkaWEgY2hhbm5lbCBpcwotICAvLyBkZXN0cm95ZWQu
Ci0gIHZpcnR1YWwgdm9pZCBTZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZv
aWNlTWVkaWFDaGFubmVsKiB2b2ljZV9tZWRpYV9jaGFubmVsKSA9IDA7Ci0gIHZpcnR1YWwgdm9p
ZCBTZXRWaWRlb01lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVs
KiB2aWRlb19tZWRpYV9jaGFubmVsKSA9IDA7CisgIC8vIEEgVm9pY2VNZWRpYUNoYW5uZWwgc2hv
dWxkIGJlIHVzZWQgZm9yIGF1ZGlvIFJ0cFNlbmRlcnMgYW5kCisgIC8vIGEgVmlkZW9NZWRpYUNo
YW5uZWwgc2hvdWxkIGJlIHVzZWQgZm9yIHZpZGVvIFJ0cFNlbmRlcnMuCisgIC8vIE11c3QgY2Fs
bCBTZXRNZWRpYUNoYW5uZWwobnVsbHB0cikgYmVmb3JlIHRoZSBtZWRpYSBjaGFubmVsIGlzIGRl
c3Ryb3llZC4KKyAgdmlydHVhbCB2b2lkIFNldE1lZGlhQ2hhbm5lbChjcmlja2V0OjpNZWRpYUNo
YW5uZWwqIG1lZGlhX2NoYW5uZWwpID0gMDsKIAogICAvLyBDb25maWd1cmVzIHRoZSBSdHBSZWNl
aXZlciB3aXRoIHRoZSB1bmRlcmx5aW5nIG1lZGlhIGNoYW5uZWwsIHdpdGggdGhlCiAgIC8vIGdp
dmVuIFNTUkMgYXMgdGhlIHN0cmVhbSBpZGVudGlmaWVyLiBJZiB8c3NyY3wgaXMgMCwgdGhlIHJl
Y2VpdmVyIHdpbGwKQEAgLTEzMCwxMyArMTI2LDggQEAgY2xhc3MgQXVkaW9SdHBSZWNlaXZlciA6
IHB1YmxpYyBPYnNlcnZlckludGVyZmFjZSwKICAgdm9pZCBTZXRTdHJlYW1zKGNvbnN0IHN0ZDo6
dmVjdG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+JgogICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbXMpIG92ZXJyaWRlOwogICB2b2lkIFNldE9ic2VydmVyKFJ0
cFJlY2VpdmVyT2JzZXJ2ZXJJbnRlcmZhY2UqIG9ic2VydmVyKSBvdmVycmlkZTsKLSAgdm9pZCBT
ZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiB2
b2ljZV9tZWRpYV9jaGFubmVsKSBvdmVycmlkZTsKIAotICB2b2lkIFNldFZpZGVvTWVkaWFDaGFu
bmVsKAotICAgICAgY3JpY2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqIHZpZGVvX21lZGlhX2NoYW5u
ZWwpIG92ZXJyaWRlIHsKLSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICB9CisgIHZvaWQgU2V0TWVk
aWFDaGFubmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgb3ZlcnJpZGU7
CiAKICAgc3RkOjp2ZWN0b3I8UnRwU291cmNlPiBHZXRTb3VyY2VzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgIGludCBBdHRhY2htZW50SWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBhdHRhY2htZW50
X2lkXzsgfQpAQCAtMjE3LDEzICsyMDgsNyBAQCBjbGFzcyBWaWRlb1J0cFJlY2VpdmVyIDogcHVi
bGljIHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxSdHBSZWNlaXZlckludGVybmFsPiB7CiAKICAgdm9p
ZCBTZXRPYnNlcnZlcihSdHBSZWNlaXZlck9ic2VydmVySW50ZXJmYWNlKiBvYnNlcnZlcikgb3Zl
cnJpZGU7CiAKLSAgdm9pZCBTZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZv
aWNlTWVkaWFDaGFubmVsKiB2b2ljZV9tZWRpYV9jaGFubmVsKSBvdmVycmlkZSB7Ci0gICAgUlRD
X05PVFJFQUNIRUQoKTsKLSAgfQotCi0gIHZvaWQgU2V0VmlkZW9NZWRpYUNoYW5uZWwoCi0gICAg
ICBjcmlja2V0OjpWaWRlb01lZGlhQ2hhbm5lbCogdmlkZW9fbWVkaWFfY2hhbm5lbCkgb3ZlcnJp
ZGU7CisgIHZvaWQgU2V0TWVkaWFDaGFubmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFf
Y2hhbm5lbCkgb3ZlcnJpZGU7CiAKICAgaW50IEF0dGFjaG1lbnRJZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGF0dGFjaG1lbnRfaWRfOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHNlbmRlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHNlbmRlci5jYwppbmRleCAzYmI5
MGYyNGRhMTRiOTE0ZDMwM2Y1YmE4ZWMzYzYzN2NkNGI1MmJkLi43NmZkY2E2ZTk0MjA5NDgzZWE3
NjczMjUxZGRhNDJkNWU5YzZmODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVyLmNjCkBAIC01OCw3ICs1OCw4
IEBAIGJvb2wgVW5pbXBsZW1lbnRlZFJ0cEVuY29kaW5nUGFyYW1ldGVySGFzVmFsdWUoCiAvLyBs
YXllci4KIGJvb2wgUGVyU2VuZGVyUnRwRW5jb2RpbmdQYXJhbWV0ZXJIYXNWYWx1ZSgKICAgICBj
b25zdCBSdHBFbmNvZGluZ1BhcmFtZXRlcnMmIGVuY29kaW5nX3BhcmFtcykgewotICBpZiAoZW5j
b2RpbmdfcGFyYW1zLmJpdHJhdGVfcHJpb3JpdHkgIT0ga0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkp
IHsKKyAgaWYgKGVuY29kaW5nX3BhcmFtcy5iaXRyYXRlX3ByaW9yaXR5ICE9IGtEZWZhdWx0Qml0
cmF0ZVByaW9yaXR5IHx8CisgICAgICBlbmNvZGluZ19wYXJhbXMubmV0d29ya19wcmlvcml0eSAh
PSBrRGVmYXVsdEJpdHJhdGVQcmlvcml0eSkgewogICAgIHJldHVybiB0cnVlOwogICB9CiAgIHJl
dHVybiBmYWxzZTsKQEAgLTY4LDEzICs2OSwxNCBAQCBib29sIFBlclNlbmRlclJ0cEVuY29kaW5n
UGFyYW1ldGVySGFzVmFsdWUoCiAvLyBjb3JyZWN0IHdvcmtlciB0aHJlYWQgb25seSBpZiBib3Ro
IHRoZSBtZWRpYSBjaGFubmVsIGV4aXN0cyBhbmQgYSBzc3JjIGhhcwogLy8gYmVlbiBhbGxvY2F0
ZWQgdG8gdGhlIHN0cmVhbS4KIHZvaWQgTWF5YmVBdHRhY2hGcmFtZUVuY3J5cHRvclRvTWVkaWFD
aGFubmVsKAotICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBzc3JjLAorICAgIGNv
bnN0IHVpbnQzMl90IHNzcmMsCiAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCiAgICAg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IGZyYW1l
X2VuY3J5cHRvciwKLSAgICBjcmlja2V0OjpNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwpIHsK
LSAgaWYgKG1lZGlhX2NoYW5uZWwgJiYgc3NyYy5oYXNfdmFsdWUoKSkgewotICAgIHJldHVybiB3
b3JrZXJfdGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdIHsKLSAgICAgIG1l
ZGlhX2NoYW5uZWwtPlNldEZyYW1lRW5jcnlwdG9yKCpzc3JjLCBmcmFtZV9lbmNyeXB0b3IpOwor
ICAgIGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCwKKyAgICBib29sIHN0b3Bw
ZWQpIHsKKyAgaWYgKG1lZGlhX2NoYW5uZWwgJiYgZnJhbWVfZW5jcnlwdG9yICYmIHNzcmMgJiYg
IXN0b3BwZWQpIHsKKyAgICB3b3JrZXJfdGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVS
RSwgWyZdIHsKKyAgICAgIG1lZGlhX2NoYW5uZWwtPlNldEZyYW1lRW5jcnlwdG9yKHNzcmMsIGZy
YW1lX2VuY3J5cHRvcik7CiAgICAgfSk7CiAgIH0KIH0KQEAgLTMwNSw4ICszMDcsMTIgQEAgcnRj
OjpzY29wZWRfcmVmcHRyPER0bWZTZW5kZXJJbnRlcmZhY2U+IEF1ZGlvUnRwU2VuZGVyOjpHZXRE
dG1mU2VuZGVyKCkgY29uc3Qgewogdm9pZCBBdWRpb1J0cFNlbmRlcjo6U2V0RnJhbWVFbmNyeXB0
b3IoCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBmcmFt
ZV9lbmNyeXB0b3IpIHsKICAgZnJhbWVfZW5jcnlwdG9yXyA9IHN0ZDo6bW92ZShmcmFtZV9lbmNy
eXB0b3IpOwotICBNYXliZUF0dGFjaEZyYW1lRW5jcnlwdG9yVG9NZWRpYUNoYW5uZWwoc3NyY18s
IHdvcmtlcl90aHJlYWRfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhbWVfZW5jcnlwdG9yXywgbWVkaWFfY2hhbm5lbF8pOworICAvLyBTcGVjaWFsIENhc2U6
IFNldCB0aGUgZnJhbWUgZW5jcnlwdG9yIHRvIGFueSB2YWx1ZSBvbiBhbnkgZXhpc3RpbmcgY2hh
bm5lbC4KKyAgaWYgKG1lZGlhX2NoYW5uZWxfICYmIHNzcmNfICYmICFzdG9wcGVkXykgeworICAg
IHdvcmtlcl90aHJlYWRfLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdIHsKKyAgICAg
IG1lZGlhX2NoYW5uZWxfLT5TZXRGcmFtZUVuY3J5cHRvcihzc3JjXywgZnJhbWVfZW5jcnlwdG9y
Xyk7CisgICAgfSk7CisgIH0KIH0KIAogcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9y
SW50ZXJmYWNlPiBBdWRpb1J0cFNlbmRlcjo6R2V0RnJhbWVFbmNyeXB0b3IoKQpAQCAtMzU2LDgg
KzM2Miw4IEBAIHZvaWQgQXVkaW9SdHBTZW5kZXI6OlNldFNzcmModWludDMyX3Qgc3NyYykgewog
ICAgIH0pOwogICB9CiAgIC8vIEVhY2ggdGltZSB0aGVyZSBpcyBhbiBzc3JjIHVwZGF0ZS4KLSAg
TWF5YmVBdHRhY2hGcmFtZUVuY3J5cHRvclRvTWVkaWFDaGFubmVsKHNzcmNfLCB3b3JrZXJfdGhy
ZWFkXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2Vu
Y3J5cHRvcl8sIG1lZGlhX2NoYW5uZWxfKTsKKyAgTWF5YmVBdHRhY2hGcmFtZUVuY3J5cHRvclRv
TWVkaWFDaGFubmVsKAorICAgICAgc3NyY18sIHdvcmtlcl90aHJlYWRfLCBmcmFtZV9lbmNyeXB0
b3JfLCBtZWRpYV9jaGFubmVsXywgc3RvcHBlZF8pOwogfQogCiB2b2lkIEF1ZGlvUnRwU2VuZGVy
OjpTdG9wKCkgewpAQCAtMzgwLDkgKzM4NiwxMCBAQCB2b2lkIEF1ZGlvUnRwU2VuZGVyOjpTdG9w
KCkgewogICBzdG9wcGVkXyA9IHRydWU7CiB9CiAKLXZvaWQgQXVkaW9SdHBTZW5kZXI6OlNldFZv
aWNlTWVkaWFDaGFubmVsKAotICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiB2b2ljZV9t
ZWRpYV9jaGFubmVsKSB7Ci0gIG1lZGlhX2NoYW5uZWxfID0gdm9pY2VfbWVkaWFfY2hhbm5lbDsK
K3ZvaWQgQXVkaW9SdHBTZW5kZXI6OlNldE1lZGlhQ2hhbm5lbChjcmlja2V0OjpNZWRpYUNoYW5u
ZWwqIG1lZGlhX2NoYW5uZWwpIHsKKyAgUlRDX0RDSEVDSyhtZWRpYV9jaGFubmVsID09IG51bGxw
dHIgfHwKKyAgICAgICAgICAgICBtZWRpYV9jaGFubmVsLT5tZWRpYV90eXBlKCkgPT0gbWVkaWFf
dHlwZSgpKTsKKyAgbWVkaWFfY2hhbm5lbF8gPSBzdGF0aWNfY2FzdDxjcmlja2V0OjpWb2ljZU1l
ZGlhQ2hhbm5lbCo+KG1lZGlhX2NoYW5uZWwpOwogfQogCiB2b2lkIEF1ZGlvUnRwU2VuZGVyOjpT
ZXRBdWRpb1NlbmQoKSB7CkBAIC0zOTksOSArNDA2LDcgQEAgdm9pZCBBdWRpb1J0cFNlbmRlcjo6
U2V0QXVkaW9TZW5kKCkgewogICAvLyBvcHRpb25zIHNpbmNlIGl0IGlzIGFsc28gYXBwbGllZCB0
byBhbGwgc3RyZWFtcy9jaGFubmVscywgbG9jYWwgb3IgcmVtb3RlLgogICBpZiAodHJhY2tfLT5l
bmFibGVkKCkgJiYgdHJhY2tfLT5HZXRTb3VyY2UoKSAmJgogICAgICAgIXRyYWNrXy0+R2V0U291
cmNlKCktPnJlbW90ZSgpKSB7Ci0gICAgLy8gVE9ETyh4aWFucyk6IFJlbW92ZSB0aGlzIHN0YXRp
Y19jYXN0IHNpbmNlIHdlIHNob3VsZCBiZSBhYmxlIHRvIGNvbm5lY3QKLSAgICAvLyBhIHJlbW90
ZSBhdWRpbyB0cmFjayB0byBhIHBlZXIgY29ubmVjdGlvbi4KLSAgICBvcHRpb25zID0gc3RhdGlj
X2Nhc3Q8TG9jYWxBdWRpb1NvdXJjZSo+KHRyYWNrXy0+R2V0U291cmNlKCkpLT5vcHRpb25zKCk7
CisgICAgb3B0aW9ucyA9IHRyYWNrXy0+R2V0U291cmNlKCktPm9wdGlvbnMoKTsKICAgfQogI2Vu
ZGlmCiAKQEAgLTU1Nyw4ICs1NjIsMTIgQEAgcnRjOjpzY29wZWRfcmVmcHRyPER0bWZTZW5kZXJJ
bnRlcmZhY2U+IFZpZGVvUnRwU2VuZGVyOjpHZXREdG1mU2VuZGVyKCkgY29uc3Qgewogdm9pZCBW
aWRlb1J0cFNlbmRlcjo6U2V0RnJhbWVFbmNyeXB0b3IoCiAgICAgcnRjOjpzY29wZWRfcmVmcHRy
PEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9lbmNyeXB0b3IpIHsKICAgZnJhbWVfZW5j
cnlwdG9yXyA9IHN0ZDo6bW92ZShmcmFtZV9lbmNyeXB0b3IpOwotICBNYXliZUF0dGFjaEZyYW1l
RW5jcnlwdG9yVG9NZWRpYUNoYW5uZWwoc3NyY18sIHdvcmtlcl90aHJlYWRfLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZW5jcnlwdG9yXywgbWVkaWFf
Y2hhbm5lbF8pOworICAvLyBTcGVjaWFsIENhc2U6IFNldCB0aGUgZnJhbWUgZW5jcnlwdG9yIHRv
IGFueSB2YWx1ZSBvbiBhbnkgZXhpc3RpbmcgY2hhbm5lbC4KKyAgaWYgKG1lZGlhX2NoYW5uZWxf
ICYmIHNzcmNfICYmICFzdG9wcGVkXykgeworICAgIHdvcmtlcl90aHJlYWRfLT5JbnZva2U8dm9p
ZD4oUlRDX0ZST01fSEVSRSwgWyZdIHsKKyAgICAgIG1lZGlhX2NoYW5uZWxfLT5TZXRGcmFtZUVu
Y3J5cHRvcihzc3JjXywgZnJhbWVfZW5jcnlwdG9yXyk7CisgICAgfSk7CisgIH0KIH0KIAogcnRj
OjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBWaWRlb1J0cFNlbmRlcjo6
R2V0RnJhbWVFbmNyeXB0b3IoKQpAQCAtNjAxLDggKzYxMCw4IEBAIHZvaWQgVmlkZW9SdHBTZW5k
ZXI6OlNldFNzcmModWludDMyX3Qgc3NyYykgewogICAgICAgaW5pdF9wYXJhbWV0ZXJzXy5lbmNv
ZGluZ3MuY2xlYXIoKTsKICAgICB9KTsKICAgfQotICBNYXliZUF0dGFjaEZyYW1lRW5jcnlwdG9y
VG9NZWRpYUNoYW5uZWwoc3NyY18sIHdvcmtlcl90aHJlYWRfLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZW5jcnlwdG9yXywgbWVkaWFfY2hhbm5lbF8p
OworICBNYXliZUF0dGFjaEZyYW1lRW5jcnlwdG9yVG9NZWRpYUNoYW5uZWwoCisgICAgICBzc3Jj
Xywgd29ya2VyX3RocmVhZF8sIGZyYW1lX2VuY3J5cHRvcl8sIG1lZGlhX2NoYW5uZWxfLCBzdG9w
cGVkXyk7CiB9CiAKIHZvaWQgVmlkZW9SdHBTZW5kZXI6OlN0b3AoKSB7CkBAIC02MjEsOSArNjMw
LDEwIEBAIHZvaWQgVmlkZW9SdHBTZW5kZXI6OlN0b3AoKSB7CiAgIHN0b3BwZWRfID0gdHJ1ZTsK
IH0KIAotdm9pZCBWaWRlb1J0cFNlbmRlcjo6U2V0VmlkZW9NZWRpYUNoYW5uZWwoCi0gICAgY3Jp
Y2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqIHZpZGVvX21lZGlhX2NoYW5uZWwpIHsKLSAgbWVkaWFf
Y2hhbm5lbF8gPSB2aWRlb19tZWRpYV9jaGFubmVsOwordm9pZCBWaWRlb1J0cFNlbmRlcjo6U2V0
TWVkaWFDaGFubmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgeworICBS
VENfRENIRUNLKG1lZGlhX2NoYW5uZWwgPT0gbnVsbHB0ciB8fAorICAgICAgICAgICAgIG1lZGlh
X2NoYW5uZWwtPm1lZGlhX3R5cGUoKSA9PSBtZWRpYV90eXBlKCkpOworICBtZWRpYV9jaGFubmVs
XyA9IHN0YXRpY19jYXN0PGNyaWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVsKj4obWVkaWFfY2hhbm5l
bCk7CiB9CiAKIHZvaWQgVmlkZW9SdHBTZW5kZXI6OlNldFZpZGVvU2VuZCgpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHNlbmRl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2Vu
ZGVyLmgKaW5kZXggMmE4Mjg5ZjQxN2VhYzk0ZTI0ODNhOThiZTdmNzhiNmJiZDdmODI3Yy4uMDdm
YWU2Yjk1NDdjNDk0YTIzZmYzZDc1OGUyZTNhNjJhZWZmYzhkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVyLmgK
QEAgLTM2LDE0ICszNiwxMCBAQCBib29sIFVuaW1wbGVtZW50ZWRSdHBQYXJhbWV0ZXJIYXNWYWx1
ZShjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKIGNsYXNzIFJ0cFNlbmRlckludGVy
bmFsIDogcHVibGljIFJ0cFNlbmRlckludGVyZmFjZSB7CiAgcHVibGljOgogICAvLyBTZXRzIHRo
ZSB1bmRlcmx5aW5nIE1lZGlhRW5naW5lIGNoYW5uZWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUnRw
U2VuZGVyLgotICAvLyBTZXRWb2ljZU1lZGlhQ2hhbm5lbCBzaG91bGQgYmUgdXNlZCBmb3IgYXVk
aW8gUnRwU2VuZGVycyBhbmQKLSAgLy8gU2V0VmlkZW9NZWRpYUNoYW5uZWwgc2hvdWxkIGJlIHVz
ZWQgZm9yIHZpZGVvIFJ0cFNlbmRlcnMuIE11c3QgY2FsbCB0aGUKLSAgLy8gYXBwcm9wcmlhdGUg
U2V0WHh4TWVkaWFDaGFubmVsKG51bGxwdHIpIGJlZm9yZSB0aGUgbWVkaWEgY2hhbm5lbCBpcwot
ICAvLyBkZXN0cm95ZWQuCi0gIHZpcnR1YWwgdm9pZCBTZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAg
ICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiB2b2ljZV9tZWRpYV9jaGFubmVsKSA9IDA7
Ci0gIHZpcnR1YWwgdm9pZCBTZXRWaWRlb01lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZp
ZGVvTWVkaWFDaGFubmVsKiB2aWRlb19tZWRpYV9jaGFubmVsKSA9IDA7CisgIC8vIEEgVm9pY2VN
ZWRpYUNoYW5uZWwgc2hvdWxkIGJlIHVzZWQgZm9yIGF1ZGlvIFJ0cFNlbmRlcnMgYW5kCisgIC8v
IGEgVmlkZW9NZWRpYUNoYW5uZWwgc2hvdWxkIGJlIHVzZWQgZm9yIHZpZGVvIFJ0cFNlbmRlcnMu
CisgIC8vIE11c3QgY2FsbCBTZXRNZWRpYUNoYW5uZWwobnVsbHB0cikgYmVmb3JlIHRoZSBtZWRp
YSBjaGFubmVsIGlzIGRlc3Ryb3llZC4KKyAgdmlydHVhbCB2b2lkIFNldE1lZGlhQ2hhbm5lbChj
cmlja2V0OjpNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwpID0gMDsKIAogICAvLyBVc2VkIHRv
IHNldCB0aGUgU1NSQyBvZiB0aGUgc2VuZGVyLCBvbmNlIGEgbG9jYWwgZGVzY3JpcHRpb24gaGFz
IGJlZW4gc2V0LgogICAvLyBJZiB8c3NyY3wgaXMgMCwgdGhpcyBpbmRpYXRlcyB0aGF0IHRoZSBz
ZW5kZXIgc2hvdWxkIGRpc2Nvbm5lY3QgZnJvbSB0aGUKQEAgLTE1NiwxMyArMTUyLDcgQEAgY2xh
c3MgQXVkaW9SdHBTZW5kZXIgOiBwdWJsaWMgRHRtZlByb3ZpZGVySW50ZXJmYWNlLAogCiAgIGlu
dCBBdHRhY2htZW50SWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBhdHRhY2htZW50X2lkXzsg
fQogCi0gIHZvaWQgU2V0Vm9pY2VNZWRpYUNoYW5uZWwoCi0gICAgICBjcmlja2V0OjpWb2ljZU1l
ZGlhQ2hhbm5lbCogdm9pY2VfbWVkaWFfY2hhbm5lbCkgb3ZlcnJpZGU7Ci0KLSAgdm9pZCBTZXRW
aWRlb01lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVsKiB2aWRl
b19tZWRpYV9jaGFubmVsKSBvdmVycmlkZSB7Ci0gICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgfQor
ICB2b2lkIFNldE1lZGlhQ2hhbm5lbChjcmlja2V0OjpNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5u
ZWwpIG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAgLy8gVE9ETyhuaXNzZSk6IFNpbmNlIFNTUkMg
PT0gMCBpcyB0ZWNobmljYWxseSB2YWxpZCwgZmlndXJlIG91dApAQCAtMjUzLDEzICsyNDMsNyBA
QCBjbGFzcyBWaWRlb1J0cFNlbmRlciA6IHB1YmxpYyBPYnNlcnZlckludGVyZmFjZSwKICAgdm9p
ZCBTdG9wKCkgb3ZlcnJpZGU7CiAgIGludCBBdHRhY2htZW50SWQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBhdHRhY2htZW50X2lkXzsgfQogCi0gIHZvaWQgU2V0Vm9pY2VNZWRpYUNoYW5uZWwo
Ci0gICAgICBjcmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCogdm9pY2VfbWVkaWFfY2hhbm5lbCkg
b3ZlcnJpZGUgewotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIH0KLQotICB2b2lkIFNldFZpZGVv
TWVkaWFDaGFubmVsKAotICAgICAgY3JpY2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqIHZpZGVvX21l
ZGlhX2NoYW5uZWwpIG92ZXJyaWRlOworICB2b2lkIFNldE1lZGlhQ2hhbm5lbChjcmlja2V0OjpN
ZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwpIG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAgYm9v
bCBjYW5fc2VuZF90cmFjaygpIGNvbnN0IHsgcmV0dXJuIHRyYWNrXyAmJiBzc3JjXzsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRw
c2VuZGVycmVjZWl2ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXJyZWNlaXZlcl91bml0dGVzdC5jYwppbmRleCAwN2Zm
NmEzODY1NDQ2NDc0YTIxODZlMmI2OTFlOGZmYzljYTkwMzQ0Li4zYmU2OWJhZmM5YzAxZjVkNmVm
NGQ0MmYwNzE4ODJhMjNlMjNhNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXJyZWNlaXZlcl91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXJy
ZWNlaXZlcl91bml0dGVzdC5jYwpAQCAtODAsMTIgKzgwLDEyIEBAIGNsYXNzIFJ0cFNlbmRlclJl
Y2VpdmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogCiAgICAgdm9pY2VfY2hhbm5lbF8g
PSBjaGFubmVsX21hbmFnZXJfLkNyZWF0ZVZvaWNlQ2hhbm5lbCgKICAgICAgICAgJmZha2VfY2Fs
bF8sIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIHJ0cF90cmFuc3BvcnRfLmdldCgpLAotICAgICAg
ICBydGM6OlRocmVhZDo6Q3VycmVudCgpLCBjcmlja2V0OjpDTl9BVURJTywgc3J0cF9yZXF1aXJl
ZCwKLSAgICAgICAgcnRjOjpDcnlwdG9PcHRpb25zKCksIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygp
KTsKKyAgICAgICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyLCBydGM6OlRocmVhZDo6Q3Vy
cmVudCgpLCBjcmlja2V0OjpDTl9BVURJTywKKyAgICAgICAgc3J0cF9yZXF1aXJlZCwgd2VicnRj
OjpDcnlwdG9PcHRpb25zKCksIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKTsKICAgICB2aWRlb19j
aGFubmVsXyA9IGNoYW5uZWxfbWFuYWdlcl8uQ3JlYXRlVmlkZW9DaGFubmVsKAogICAgICAgICAm
ZmFrZV9jYWxsXywgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgcnRwX3RyYW5zcG9ydF8uZ2V0KCks
CiAgICAgICAgIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksIGNyaWNrZXQ6OkNOX1ZJREVPLCBzcnRw
X3JlcXVpcmVkLAotICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMoKSwgY3JpY2tldDo6VmlkZW9P
cHRpb25zKCkpOworICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSwgY3JpY2tldDo6Vmlk
ZW9PcHRpb25zKCkpOwogICAgIHZvaWNlX2NoYW5uZWxfLT5FbmFibGUodHJ1ZSk7CiAgICAgdmlk
ZW9fY2hhbm5lbF8tPkVuYWJsZSh0cnVlKTsKICAgICB2b2ljZV9tZWRpYV9jaGFubmVsXyA9IG1l
ZGlhX2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBjbGFz
cyBSdHBTZW5kZXJSZWNlaXZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgICAgICAg
bmV3IEF1ZGlvUnRwU2VuZGVyKHdvcmtlcl90aHJlYWRfLCBhdWRpb190cmFja18tPmlkKCksIG51
bGxwdHIpOwogICAgIEFTU0VSVF9UUlVFKGF1ZGlvX3J0cF9zZW5kZXJfLT5TZXRUcmFjayhhdWRp
b190cmFja18pKTsKICAgICBhdWRpb19ydHBfc2VuZGVyXy0+c2V0X3N0cmVhbV9pZHMoe2xvY2Fs
X3N0cmVhbV8tPmlkKCl9KTsKLSAgICBhdWRpb19ydHBfc2VuZGVyXy0+U2V0Vm9pY2VNZWRpYUNo
YW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbF8pOworICAgIGF1ZGlvX3J0cF9zZW5kZXJfLT5TZXRN
ZWRpYUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbF8pOwogICAgIGF1ZGlvX3J0cF9zZW5kZXJf
LT5TZXRTc3JjKGtBdWRpb1NzcmMpOwogICAgIGF1ZGlvX3J0cF9zZW5kZXJfLT5HZXRPbkRlc3Ry
b3llZFNpZ25hbCgpLT5jb25uZWN0KAogICAgICAgICB0aGlzLCAmUnRwU2VuZGVyUmVjZWl2ZXJU
ZXN0OjpPbkF1ZGlvU2VuZGVyRGVzdHJveWVkKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBS
dHBTZW5kZXJSZWNlaXZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKIAogICB2b2lkIENy
ZWF0ZUF1ZGlvUnRwU2VuZGVyV2l0aE5vVHJhY2soKSB7CiAgICAgYXVkaW9fcnRwX3NlbmRlcl8g
PSBuZXcgQXVkaW9SdHBTZW5kZXIod29ya2VyX3RocmVhZF8sIC8qaWQ9Ki8iIiwgbnVsbHB0cik7
Ci0gICAgYXVkaW9fcnRwX3NlbmRlcl8tPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNlX21lZGlh
X2NoYW5uZWxfKTsKKyAgICBhdWRpb19ydHBfc2VuZGVyXy0+U2V0TWVkaWFDaGFubmVsKHZvaWNl
X21lZGlhX2NoYW5uZWxfKTsKICAgfQogCiAgIHZvaWQgT25BdWRpb1NlbmRlckRlc3Ryb3llZCgp
IHsgYXVkaW9fc2VuZGVyX2Rlc3Ryb3llZF9zaWduYWxfZmlyZWRfID0gdHJ1ZTsgfQpAQCAtMTkx
LDEzICsxOTEsMTMgQEAgY2xhc3MgUnRwU2VuZGVyUmVjZWl2ZXJUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QsCiAgICAgdmlkZW9fcnRwX3NlbmRlcl8gPSBuZXcgVmlkZW9SdHBTZW5kZXIod29y
a2VyX3RocmVhZF8sIHZpZGVvX3RyYWNrXy0+aWQoKSk7CiAgICAgQVNTRVJUX1RSVUUodmlkZW9f
cnRwX3NlbmRlcl8tPlNldFRyYWNrKHZpZGVvX3RyYWNrXykpOwogICAgIHZpZGVvX3J0cF9zZW5k
ZXJfLT5zZXRfc3RyZWFtX2lkcyh7bG9jYWxfc3RyZWFtXy0+aWQoKX0pOwotICAgIHZpZGVvX3J0
cF9zZW5kZXJfLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7Cisg
ICAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldE1lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVs
Xyk7CiAgICAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldFNzcmMoc3NyYyk7CiAgICAgVmVyaWZ5Vmlk
ZW9DaGFubmVsSW5wdXQoc3NyYyk7CiAgIH0KICAgdm9pZCBDcmVhdGVWaWRlb1J0cFNlbmRlcldp
dGhOb1RyYWNrKCkgewogICAgIHZpZGVvX3J0cF9zZW5kZXJfID0gbmV3IFZpZGVvUnRwU2VuZGVy
KHdvcmtlcl90aHJlYWRfLCAvKmlkPSovIiIpOwotICAgIHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRW
aWRlb01lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CisgICAgdmlkZW9fcnRwX3Nl
bmRlcl8tPlNldE1lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CiAgIH0KIAogICB2
b2lkIERlc3Ryb3lBdWRpb1J0cFNlbmRlcigpIHsKQEAgLTIxNCw3ICsyMTQsNyBAQCBjbGFzcyBS
dHBTZW5kZXJSZWNlaXZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgICAgIHN0ZDo6
dmVjdG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+IHN0cmVhbXMg
PSB7fSkgewogICAgIGF1ZGlvX3J0cF9yZWNlaXZlcl8gPSBuZXcgQXVkaW9SdHBSZWNlaXZlcigK
ICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwga0F1ZGlvVHJhY2tJZCwgc3RkOjptb3Zl
KHN0cmVhbXMpKTsKLSAgICBhdWRpb19ydHBfcmVjZWl2ZXJfLT5TZXRWb2ljZU1lZGlhQ2hhbm5l
bCh2b2ljZV9tZWRpYV9jaGFubmVsXyk7CisgICAgYXVkaW9fcnRwX3JlY2VpdmVyXy0+U2V0TWVk
aWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWxfKTsKICAgICBhdWRpb19ydHBfcmVjZWl2ZXJf
LT5TZXR1cE1lZGlhQ2hhbm5lbChrQXVkaW9Tc3JjKTsKICAgICBhdWRpb190cmFja18gPSBhdWRp
b19ydHBfcmVjZWl2ZXJfLT5hdWRpb190cmFjaygpOwogICAgIFZlcmlmeVZvaWNlQ2hhbm5lbE91
dHB1dCgpOwpAQCAtMjI0LDEyICsyMjQsMzAgQEAgY2xhc3MgUnRwU2VuZGVyUmVjZWl2ZXJUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsCiAgICAgICBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9y
ZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiBzdHJlYW1zID0ge30pIHsKICAgICB2aWRlb19y
dHBfcmVjZWl2ZXJfID0gbmV3IFZpZGVvUnRwUmVjZWl2ZXIoCiAgICAgICAgIHJ0Yzo6VGhyZWFk
OjpDdXJyZW50KCksIGtWaWRlb1RyYWNrSWQsIHN0ZDo6bW92ZShzdHJlYW1zKSk7Ci0gICAgdmlk
ZW9fcnRwX3JlY2VpdmVyXy0+U2V0VmlkZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5l
bF8pOworICAgIHZpZGVvX3J0cF9yZWNlaXZlcl8tPlNldE1lZGlhQ2hhbm5lbCh2aWRlb19tZWRp
YV9jaGFubmVsXyk7CiAgICAgdmlkZW9fcnRwX3JlY2VpdmVyXy0+U2V0dXBNZWRpYUNoYW5uZWwo
a1ZpZGVvU3NyYyk7CiAgICAgdmlkZW9fdHJhY2tfID0gdmlkZW9fcnRwX3JlY2VpdmVyXy0+dmlk
ZW9fdHJhY2soKTsKICAgICBWZXJpZnlWaWRlb0NoYW5uZWxPdXRwdXQoKTsKICAgfQogCisgIHZv
aWQgQ3JlYXRlVmlkZW9SdHBSZWNlaXZlcldpdGhTaW11bGNhc3QoCisgICAgICBzdGQ6OnZlY3Rv
cjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiBzdHJlYW1zID0ge30s
CisgICAgICBpbnQgbnVtX2xheWVycyA9IGtWaWRlb1NpbXVsY2FzdExheWVyQ291bnQpIHsKKyAg
ICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gc3NyY3M7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1fbGF5ZXJzOyArK2kpCisgICAgICBzc3Jjcy5wdXNoX2JhY2soa1ZpZGVvU3NyY1NpbXVsY2Fz
dCArIGkpOworICAgIGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyBzdHJlYW1fcGFyYW1zID0KKyAgICAg
ICAgY3JpY2tldDo6Q3JlYXRlU2ltU3RyZWFtUGFyYW1zKCJjbmFtZSIsIHNzcmNzKTsKKyAgICB2
aWRlb19tZWRpYV9jaGFubmVsXy0+QWRkUmVjdlN0cmVhbShzdHJlYW1fcGFyYW1zKTsKKyAgICB1
aW50MzJfdCBwcmltYXJ5X3NzcmMgPSBzdHJlYW1fcGFyYW1zLmZpcnN0X3NzcmMoKTsKKworICAg
IHZpZGVvX3J0cF9yZWNlaXZlcl8gPSBuZXcgVmlkZW9SdHBSZWNlaXZlcigKKyAgICAgICAgcnRj
OjpUaHJlYWQ6OkN1cnJlbnQoKSwga1ZpZGVvVHJhY2tJZCwgc3RkOjptb3ZlKHN0cmVhbXMpKTsK
KyAgICB2aWRlb19ydHBfcmVjZWl2ZXJfLT5TZXRNZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hh
bm5lbF8pOworICAgIHZpZGVvX3J0cF9yZWNlaXZlcl8tPlNldHVwTWVkaWFDaGFubmVsKHByaW1h
cnlfc3NyYyk7CisgICAgdmlkZW9fdHJhY2tfID0gdmlkZW9fcnRwX3JlY2VpdmVyXy0+dmlkZW9f
dHJhY2soKTsKKyAgfQorCiAgIHZvaWQgRGVzdHJveUF1ZGlvUnRwUmVjZWl2ZXIoKSB7CiAgICAg
YXVkaW9fcnRwX3JlY2VpdmVyXyA9IG51bGxwdHI7CiAgICAgVmVyaWZ5Vm9pY2VDaGFubmVsTm9P
dXRwdXQoKTsKQEAgLTY2NCw3ICs2ODIsNyBAQCBURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0
LCBBdWRpb1NlbmRlckluaXRQYXJhbWV0ZXJzTW92ZWRBZnRlck5lZ290aWF0aW9uKSB7CiAgIGNy
aWNrZXQ6OlN0cmVhbVBhcmFtcyBzdHJlYW1fcGFyYW1zID0KICAgICAgIGNyaWNrZXQ6OkNyZWF0
ZVNpbVN0cmVhbVBhcmFtcygiY25hbWUiLCBzc3Jjcyk7CiAgIHZvaWNlX21lZGlhX2NoYW5uZWxf
LT5BZGRTZW5kU3RyZWFtKHN0cmVhbV9wYXJhbXMpOwotICBhdWRpb19ydHBfc2VuZGVyXy0+U2V0
Vm9pY2VNZWRpYUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbF8pOworICBhdWRpb19ydHBfc2Vu
ZGVyXy0+U2V0TWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWxfKTsKICAgYXVkaW9fcnRw
X3NlbmRlcl8tPlNldFNzcmMoMSk7CiAKICAgcGFyYW1zID0gYXVkaW9fcnRwX3NlbmRlcl8tPkdl
dFBhcmFtZXRlcnMoKTsKQEAgLTkwMyw3ICs5MjEsNyBAQCBURVNUX0YoUnRwU2VuZGVyUmVjZWl2
ZXJUZXN0LCBWaWRlb1NlbmRlckluaXRQYXJhbWV0ZXJzTW92ZWRBZnRlck5lZ290aWF0aW9uKSB7
CiAgIGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyBzdHJlYW1fcGFyYW1zID0KICAgICAgIGNyaWNrZXQ6
OkNyZWF0ZVNpbVN0cmVhbVBhcmFtcygiY25hbWUiLCBzc3Jjcyk7CiAgIHZpZGVvX21lZGlhX2No
YW5uZWxfLT5BZGRTZW5kU3RyZWFtKHN0cmVhbV9wYXJhbXMpOwotICB2aWRlb19ydHBfc2VuZGVy
Xy0+U2V0VmlkZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbF8pOworICB2aWRlb19y
dHBfc2VuZGVyXy0+U2V0TWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWxfKTsKICAgdmlk
ZW9fcnRwX3NlbmRlcl8tPlNldFNzcmMoa1ZpZGVvU3NyY1NpbXVsY2FzdCk7CiAKICAgcGFyYW1z
ID0gdmlkZW9fcnRwX3NlbmRlcl8tPkdldFBhcmFtZXRlcnMoKTsKQEAgLTkzOCw3ICs5NTYsNyBA
QCBURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LAogICBjcmlja2V0OjpTdHJlYW1QYXJhbXMg
c3RyZWFtX3BhcmFtcyA9CiAgICAgICBjcmlja2V0OjpDcmVhdGVTaW1TdHJlYW1QYXJhbXMoImNu
YW1lIiwgc3NyY3MpOwogICB2aWRlb19tZWRpYV9jaGFubmVsXy0+QWRkU2VuZFN0cmVhbShzdHJl
YW1fcGFyYW1zKTsKLSAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldFZpZGVvTWVkaWFDaGFubmVsKHZp
ZGVvX21lZGlhX2NoYW5uZWxfKTsKKyAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldE1lZGlhQ2hhbm5l
bCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CiAgIHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRTc3JjKGtW
aWRlb1NzcmNTaW11bGNhc3QpOwogCiAgIHBhcmFtcyA9IHZpZGVvX3J0cF9zZW5kZXJfLT5HZXRQ
YXJhbWV0ZXJzKCk7CkBAIC0xMjYzLDYgKzEyODEsMTUgQEAgVEVTVF9GKFJ0cFNlbmRlclJlY2Vp
dmVyVGVzdCwgVmlkZW9SZWNlaXZlckNhblNldFBhcmFtZXRlcnMpIHsKICAgRGVzdHJveVZpZGVv
UnRwUmVjZWl2ZXIoKTsKIH0KIAorVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgVmlkZW9S
ZWNlaXZlckNhbkdldFBhcmFtZXRlcnNXaXRoU2ltdWxjYXN0KSB7CisgIENyZWF0ZVZpZGVvUnRw
UmVjZWl2ZXJXaXRoU2ltdWxjYXN0KHt9LCAyKTsKKworICBSdHBQYXJhbWV0ZXJzIHBhcmFtcyA9
IHZpZGVvX3J0cF9yZWNlaXZlcl8tPkdldFBhcmFtZXRlcnMoKTsKKyAgRVhQRUNUX0VRKDJ1LCBw
YXJhbXMuZW5jb2RpbmdzLnNpemUoKSk7CisKKyAgRGVzdHJveVZpZGVvUnRwUmVjZWl2ZXIoKTsK
K30KKwogLy8gVGVzdCB0aGF0IG1ha2VzIHN1cmUgdGhhdCBhIHZpZGVvIHRyYWNrIGNvbnRlbnQg
aGludCB0cmFuc2xhdGVzIHRvIHRoZSBwcm9wZXIKIC8vIHZhbHVlIGZvciBzb3VyY2VzIHRoYXQg
YXJlIG5vdCBzY3JlZW5jYXN0LgogVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgUHJvcGFn
YXRlc1ZpZGVvVHJhY2tDb250ZW50SGludCkgewpAQCAtMTMzMiw3ICsxMzU5LDcgQEAgVEVTVF9G
KFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwKICAgdmlkZW9fcnRwX3NlbmRlcl8gPSBuZXcgVmlkZW9S
dHBTZW5kZXIod29ya2VyX3RocmVhZF8sIHZpZGVvX3RyYWNrXy0+aWQoKSk7CiAgIEFTU0VSVF9U
UlVFKHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRUcmFjayh2aWRlb190cmFja18pKTsKICAgdmlkZW9f
cnRwX3NlbmRlcl8tPnNldF9zdHJlYW1faWRzKHtsb2NhbF9zdHJlYW1fLT5pZCgpfSk7Ci0gIHZp
ZGVvX3J0cF9zZW5kZXJfLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVs
Xyk7CisgIHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRNZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hh
bm5lbF8pOwogICB2aWRlb190cmFja18tPnNldF9lbmFibGVkKHRydWUpOwogCiAgIC8vIFNlbmRl
ciBpcyBub3QgcmVhZHkgdG8gc2VuZCAobm8gU1NSQykgc28gbm8gb3B0aW9uIHNob3VsZCBoYXZl
IGJlZW4gc2V0LgpAQCAtMTQyNCw2ICsxNDUxLDE4IEBAIFRFU1RfRihSdHBTZW5kZXJSZWNlaXZl
clRlc3QsIEF1ZGlvU2VuZGVyQ2FuU2V0RnJhbWVFbmNyeXB0b3IpIHsKICAgICAgICAgICAgIGF1
ZGlvX3J0cF9zZW5kZXJfLT5HZXRGcmFtZUVuY3J5cHRvcigpLmdldCgpKTsKIH0KIAorLy8gVmFs
aWRhdGUgdGhhdCBzZXR0aW5nIGEgRnJhbWVFbmNyeXB0b3IgYWZ0ZXIgdGhlIHNlbmQgc3RyZWFt
IGlzIHN0b3BwZWQgZG9lcworLy8gbm90aGluZy4KK1RFU1RfRihSdHBTZW5kZXJSZWNlaXZlclRl
c3QsIEF1ZGlvU2VuZGVyQ2Fubm90U2V0RnJhbWVFbmNyeXB0b3JBZnRlclN0b3ApIHsKKyAgQ3Jl
YXRlQXVkaW9SdHBTZW5kZXIoKTsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9y
SW50ZXJmYWNlPiBmYWtlX2ZyYW1lX2VuY3J5cHRvcigKKyAgICAgIG5ldyBGYWtlRnJhbWVFbmNy
eXB0b3IoKSk7CisgIEVYUEVDVF9FUShudWxscHRyLCBhdWRpb19ydHBfc2VuZGVyXy0+R2V0RnJh
bWVFbmNyeXB0b3IoKSk7CisgIGF1ZGlvX3J0cF9zZW5kZXJfLT5TdG9wKCk7CisgIGF1ZGlvX3J0
cF9zZW5kZXJfLT5TZXRGcmFtZUVuY3J5cHRvcihmYWtlX2ZyYW1lX2VuY3J5cHRvcik7CisgIC8v
IFRPRE8od2VicnRjOjk5MjYpIC0gVmFsaWRhdGUgbWVkaWEgY2hhbm5lbCBub3Qgc2V0IG9uY2Ug
ZmFrZXMgdXBkYXRlZC4KK30KKwogLy8gVmFsaWRhdGUgdGhhdCB0aGUgZGVmYXVsdCBGcmFtZUVu
Y3J5cHRvciBzZXR0aW5nIGlzIG51bGxwdHIuCiBURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0
LCBBdWRpb1JlY2VpdmVyQ2FuU2V0RnJhbWVEZWNyeXB0b3IpIHsKICAgQ3JlYXRlQXVkaW9SdHBS
ZWNlaXZlcigpOwpAQCAtMTQzNSw0ICsxNDc0LDYwIEBAIFRFU1RfRihSdHBTZW5kZXJSZWNlaXZl
clRlc3QsIEF1ZGlvUmVjZWl2ZXJDYW5TZXRGcmFtZURlY3J5cHRvcikgewogICAgICAgICAgICAg
YXVkaW9fcnRwX3JlY2VpdmVyXy0+R2V0RnJhbWVEZWNyeXB0b3IoKS5nZXQoKSk7CiB9CiAKKy8v
IFZhbGlkYXRlIHRoYXQgdGhlIGRlZmF1bHQgRnJhbWVFbmNyeXB0b3Igc2V0dGluZyBpcyBudWxs
cHRyLgorVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgQXVkaW9SZWNlaXZlckNhbm5vdFNl
dEZyYW1lRGVjcnlwdG9yQWZ0ZXJTdG9wKSB7CisgIENyZWF0ZUF1ZGlvUnRwUmVjZWl2ZXIoKTsK
KyAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmYWtlX2ZyYW1l
X2RlY3J5cHRvcigKKyAgICAgIG5ldyBGYWtlRnJhbWVEZWNyeXB0b3IoKSk7CisgIEVYUEVDVF9F
UShudWxscHRyLCBhdWRpb19ydHBfcmVjZWl2ZXJfLT5HZXRGcmFtZURlY3J5cHRvcigpKTsKKyAg
YXVkaW9fcnRwX3JlY2VpdmVyXy0+U3RvcCgpOworICBhdWRpb19ydHBfcmVjZWl2ZXJfLT5TZXRG
cmFtZURlY3J5cHRvcihmYWtlX2ZyYW1lX2RlY3J5cHRvcik7CisgIC8vIFRPRE8od2VicnRjOjk5
MjYpIC0gVmFsaWRhdGUgbWVkaWEgY2hhbm5lbCBub3Qgc2V0IG9uY2UgZmFrZXMgdXBkYXRlZC4K
K30KKworLy8gVmFsaWRhdGUgdGhhdCB0aGUgZGVmYXVsdCBGcmFtZUVuY3J5cHRvciBzZXR0aW5n
IGlzIG51bGxwdHIuCitURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBWaWRlb1NlbmRlckNh
blNldEZyYW1lRW5jcnlwdG9yKSB7CisgIENyZWF0ZVZpZGVvUnRwU2VuZGVyKCk7CisgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZmFrZV9mcmFtZV9lbmNyeXB0
b3IoCisgICAgICBuZXcgRmFrZUZyYW1lRW5jcnlwdG9yKCkpOworICBFWFBFQ1RfRVEobnVsbHB0
ciwgdmlkZW9fcnRwX3NlbmRlcl8tPkdldEZyYW1lRW5jcnlwdG9yKCkpOworICB2aWRlb19ydHBf
c2VuZGVyXy0+U2V0RnJhbWVFbmNyeXB0b3IoZmFrZV9mcmFtZV9lbmNyeXB0b3IpOworICBFWFBF
Q1RfRVEoZmFrZV9mcmFtZV9lbmNyeXB0b3IuZ2V0KCksCisgICAgICAgICAgICB2aWRlb19ydHBf
c2VuZGVyXy0+R2V0RnJhbWVFbmNyeXB0b3IoKS5nZXQoKSk7Cit9CisKKy8vIFZhbGlkYXRlIHRo
YXQgc2V0dGluZyBhIEZyYW1lRW5jcnlwdG9yIGFmdGVyIHRoZSBzZW5kIHN0cmVhbSBpcyBzdG9w
cGVkIGRvZXMKKy8vIG5vdGhpbmcuCitURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBWaWRl
b1NlbmRlckNhbm5vdFNldEZyYW1lRW5jcnlwdG9yQWZ0ZXJTdG9wKSB7CisgIENyZWF0ZVZpZGVv
UnRwU2VuZGVyKCk7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFj
ZT4gZmFrZV9mcmFtZV9lbmNyeXB0b3IoCisgICAgICBuZXcgRmFrZUZyYW1lRW5jcnlwdG9yKCkp
OworICBFWFBFQ1RfRVEobnVsbHB0ciwgdmlkZW9fcnRwX3NlbmRlcl8tPkdldEZyYW1lRW5jcnlw
dG9yKCkpOworICB2aWRlb19ydHBfc2VuZGVyXy0+U3RvcCgpOworICB2aWRlb19ydHBfc2VuZGVy
Xy0+U2V0RnJhbWVFbmNyeXB0b3IoZmFrZV9mcmFtZV9lbmNyeXB0b3IpOworICAvLyBUT0RPKHdl
YnJ0Yzo5OTI2KSAtIFZhbGlkYXRlIG1lZGlhIGNoYW5uZWwgbm90IHNldCBvbmNlIGZha2VzIHVw
ZGF0ZWQuCit9CisKKy8vIFZhbGlkYXRlIHRoYXQgdGhlIGRlZmF1bHQgRnJhbWVFbmNyeXB0b3Ig
c2V0dGluZyBpcyBudWxscHRyLgorVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgVmlkZW9S
ZWNlaXZlckNhblNldEZyYW1lRGVjcnlwdG9yKSB7CisgIENyZWF0ZVZpZGVvUnRwUmVjZWl2ZXIo
KTsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmYWtlX2Zy
YW1lX2RlY3J5cHRvcigKKyAgICAgIG5ldyBGYWtlRnJhbWVEZWNyeXB0b3IoKSk7CisgIEVYUEVD
VF9FUShudWxscHRyLCB2aWRlb19ydHBfcmVjZWl2ZXJfLT5HZXRGcmFtZURlY3J5cHRvcigpKTsK
KyAgdmlkZW9fcnRwX3JlY2VpdmVyXy0+U2V0RnJhbWVEZWNyeXB0b3IoZmFrZV9mcmFtZV9kZWNy
eXB0b3IpOworICBFWFBFQ1RfRVEoZmFrZV9mcmFtZV9kZWNyeXB0b3IuZ2V0KCksCisgICAgICAg
ICAgICB2aWRlb19ydHBfcmVjZWl2ZXJfLT5HZXRGcmFtZURlY3J5cHRvcigpLmdldCgpKTsKK30K
KworLy8gVmFsaWRhdGUgdGhhdCB0aGUgZGVmYXVsdCBGcmFtZUVuY3J5cHRvciBzZXR0aW5nIGlz
IG51bGxwdHIuCitURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBWaWRlb1JlY2VpdmVyQ2Fu
bm90U2V0RnJhbWVEZWNyeXB0b3JBZnRlclN0b3ApIHsKKyAgQ3JlYXRlVmlkZW9SdHBSZWNlaXZl
cigpOworICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZha2Vf
ZnJhbWVfZGVjcnlwdG9yKAorICAgICAgbmV3IEZha2VGcmFtZURlY3J5cHRvcigpKTsKKyAgRVhQ
RUNUX0VRKG51bGxwdHIsIHZpZGVvX3J0cF9yZWNlaXZlcl8tPkdldEZyYW1lRGVjcnlwdG9yKCkp
OworICB2aWRlb19ydHBfcmVjZWl2ZXJfLT5TdG9wKCk7CisgIHZpZGVvX3J0cF9yZWNlaXZlcl8t
PlNldEZyYW1lRGVjcnlwdG9yKGZha2VfZnJhbWVfZGVjcnlwdG9yKTsKKyAgLy8gVE9ETyh3ZWJy
dGM6OTkyNikgLSBWYWxpZGF0ZSBtZWRpYSBjaGFubmVsIG5vdCBzZXQgb25jZSBmYWtlcyB1cGRh
dGVkLgorfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZlci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2VpdmVy
LmNjCmluZGV4IDBmZThlYTZmNTBhOTkzMGYzZThjOGFiMzE1MTY5NmQzYmVmZDI0MDIuLjhiNTZi
OGI0ZjEwYTUyOWY5YjlhM2IzZTA4MTQyMTRkMTY2NGI3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2VpdmVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5z
Y2VpdmVyLmNjCkBAIC0zOCw1MiArMzgsNDUgQEAgUnRwVHJhbnNjZWl2ZXI6On5SdHBUcmFuc2Nl
aXZlcigpIHsKICAgU3RvcCgpOwogfQogCi12b2lkIFJ0cFRyYW5zY2VpdmVyOjpTZXRDaGFubmVs
KGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsKSB7Cit2b2lkIFJ0cFRyYW5zY2VpdmVyOjpT
ZXRDaGFubmVsKGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwpIHsKKyAgLy8gQ2Fu
bm90IHNldCBhIG5vbi1udWxsIGNoYW5uZWwgb24gYSBzdG9wcGVkIHRyYW5zY2VpdmVyLgorICBp
ZiAoc3RvcHBlZF8gJiYgY2hhbm5lbCkgeworICAgIHJldHVybjsKKyAgfQorCiAgIGlmIChjaGFu
bmVsKSB7CiAgICAgUlRDX0RDSEVDS19FUShtZWRpYV90eXBlKCksIGNoYW5uZWwtPm1lZGlhX3R5
cGUoKSk7CiAgIH0KIAogICBpZiAoY2hhbm5lbF8pIHsKLSAgICBjaGFubmVsXy0+U2lnbmFsRmly
c3RQYWNrZXRSZWNlaXZlZC5kaXNjb25uZWN0KHRoaXMpOworICAgIGNoYW5uZWxfLT5TaWduYWxG
aXJzdFBhY2tldFJlY2VpdmVkKCkuZGlzY29ubmVjdCh0aGlzKTsKICAgfQogCiAgIGNoYW5uZWxf
ID0gY2hhbm5lbDsKIAogICBpZiAoY2hhbm5lbF8pIHsKLSAgICBjaGFubmVsXy0+U2lnbmFsRmly
c3RQYWNrZXRSZWNlaXZlZC5jb25uZWN0KAorICAgIGNoYW5uZWxfLT5TaWduYWxGaXJzdFBhY2tl
dFJlY2VpdmVkKCkuY29ubmVjdCgKICAgICAgICAgdGhpcywgJlJ0cFRyYW5zY2VpdmVyOjpPbkZp
cnN0UGFja2V0UmVjZWl2ZWQpOwogICB9CiAKICAgZm9yIChhdXRvIHNlbmRlciA6IHNlbmRlcnNf
KSB7Ci0gICAgaWYgKG1lZGlhX3R5cGUoKSA9PSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPKSB7
Ci0gICAgICBhdXRvKiB2b2ljZV9jaGFubmVsID0gc3RhdGljX2Nhc3Q8Y3JpY2tldDo6Vm9pY2VD
aGFubmVsKj4oY2hhbm5lbCk7Ci0gICAgICBzZW5kZXItPmludGVybmFsKCktPlNldFZvaWNlTWVk
aWFDaGFubmVsKAotICAgICAgICAgIHZvaWNlX2NoYW5uZWwgPyB2b2ljZV9jaGFubmVsLT5tZWRp
YV9jaGFubmVsKCkgOiBudWxscHRyKTsKLSAgICB9IGVsc2UgewotICAgICAgYXV0byogdmlkZW9f
Y2hhbm5lbCA9IHN0YXRpY19jYXN0PGNyaWNrZXQ6OlZpZGVvQ2hhbm5lbCo+KGNoYW5uZWwpOwot
ICAgICAgc2VuZGVyLT5pbnRlcm5hbCgpLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCgKLSAgICAgICAg
ICB2aWRlb19jaGFubmVsID8gdmlkZW9fY2hhbm5lbC0+bWVkaWFfY2hhbm5lbCgpIDogbnVsbHB0
cik7Ci0gICAgfQorICAgIHNlbmRlci0+aW50ZXJuYWwoKS0+U2V0TWVkaWFDaGFubmVsKGNoYW5u
ZWxfID8gY2hhbm5lbF8tPm1lZGlhX2NoYW5uZWwoKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbHB0cik7CiAgIH0KIAogICBmb3IgKGF1dG8g
cmVjZWl2ZXIgOiByZWNlaXZlcnNfKSB7Ci0gICAgaWYgKCFjaGFubmVsKSB7CisgICAgaWYgKCFj
aGFubmVsXykgewogICAgICAgcmVjZWl2ZXItPmludGVybmFsKCktPlN0b3AoKTsKICAgICB9Ci0g
ICAgaWYgKG1lZGlhX3R5cGUoKSA9PSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPKSB7Ci0gICAg
ICBhdXRvKiB2b2ljZV9jaGFubmVsID0gc3RhdGljX2Nhc3Q8Y3JpY2tldDo6Vm9pY2VDaGFubmVs
Kj4oY2hhbm5lbCk7Ci0gICAgICByZWNlaXZlci0+aW50ZXJuYWwoKS0+U2V0Vm9pY2VNZWRpYUNo
YW5uZWwoCi0gICAgICAgICAgdm9pY2VfY2hhbm5lbCA/IHZvaWNlX2NoYW5uZWwtPm1lZGlhX2No
YW5uZWwoKSA6IG51bGxwdHIpOwotICAgIH0gZWxzZSB7Ci0gICAgICBhdXRvKiB2aWRlb19jaGFu
bmVsID0gc3RhdGljX2Nhc3Q8Y3JpY2tldDo6VmlkZW9DaGFubmVsKj4oY2hhbm5lbCk7Ci0gICAg
ICByZWNlaXZlci0+aW50ZXJuYWwoKS0+U2V0VmlkZW9NZWRpYUNoYW5uZWwoCi0gICAgICAgICAg
dmlkZW9fY2hhbm5lbCA/IHZpZGVvX2NoYW5uZWwtPm1lZGlhX2NoYW5uZWwoKSA6IG51bGxwdHIp
OwotICAgIH0KKworICAgIHJlY2VpdmVyLT5pbnRlcm5hbCgpLT5TZXRNZWRpYUNoYW5uZWwoY2hh
bm5lbF8gPyBjaGFubmVsXy0+bWVkaWFfY2hhbm5lbCgpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxwdHIpOwogICB9CiB9CiAKIHZvaWQg
UnRwVHJhbnNjZWl2ZXI6OkFkZFNlbmRlcigKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8UnRwU2Vu
ZGVyUHJveHlXaXRoSW50ZXJuYWw8UnRwU2VuZGVySW50ZXJuYWw+PiBzZW5kZXIpIHsKKyAgUlRD
X0RDSEVDSyghc3RvcHBlZF8pOwogICBSVENfRENIRUNLKCF1bmlmaWVkX3BsYW5fKTsKICAgUlRD
X0RDSEVDSyhzZW5kZXIpOwogICBSVENfRENIRUNLX0VRKG1lZGlhX3R5cGUoKSwgc2VuZGVyLT5t
ZWRpYV90eXBlKCkpOwpAQCAtMTA5LDYgKzEwMiw3IEBAIGJvb2wgUnRwVHJhbnNjZWl2ZXI6OlJl
bW92ZVNlbmRlcihSdHBTZW5kZXJJbnRlcmZhY2UqIHNlbmRlcikgewogdm9pZCBSdHBUcmFuc2Nl
aXZlcjo6QWRkUmVjZWl2ZXIoCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPFJ0cFJlY2VpdmVyUHJv
eHlXaXRoSW50ZXJuYWw8UnRwUmVjZWl2ZXJJbnRlcm5hbD4+CiAgICAgICAgIHJlY2VpdmVyKSB7
CisgIFJUQ19EQ0hFQ0soIXN0b3BwZWRfKTsKICAgUlRDX0RDSEVDSyghdW5pZmllZF9wbGFuXyk7
CiAgIFJUQ19EQ0hFQ0socmVjZWl2ZXIpOwogICBSVENfRENIRUNLX0VRKG1lZGlhX3R5cGUoKSwg
cmVjZWl2ZXItPm1lZGlhX3R5cGUoKSk7CkBAIC0xNTIsNyArMTQ2LDcgQEAgYWJzbDo6b3B0aW9u
YWw8c3RkOjpzdHJpbmc+IFJ0cFRyYW5zY2VpdmVyOjptaWQoKSBjb25zdCB7CiAgIHJldHVybiBt
aWRfOwogfQogCi12b2lkIFJ0cFRyYW5zY2VpdmVyOjpPbkZpcnN0UGFja2V0UmVjZWl2ZWQoY3Jp
Y2tldDo6QmFzZUNoYW5uZWwqIGNoYW5uZWwpIHsKK3ZvaWQgUnRwVHJhbnNjZWl2ZXI6Ok9uRmly
c3RQYWNrZXRSZWNlaXZlZChjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKikgewogICBmb3IgKGF1
dG8gcmVjZWl2ZXIgOiByZWNlaXZlcnNfKSB7CiAgICAgcmVjZWl2ZXItPmludGVybmFsKCktPk5v
dGlmeUZpcnN0UGFja2V0UmVjZWl2ZWQoKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2VpdmVyLmgK
aW5kZXggM2UwZDQzMzc4MjYxMTU3NmNhOTJlNTE2ZTRlNmI0OTU0M2FlMjk1MC4uMDdkYjE5NmVk
ZDlhYmRjYTUzY2M4ZWVlMzNjNjJhMmJiNGVhNjRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZl
ci5oCkBAIC03MCwxMSArNzAsMTEgQEAgY2xhc3MgUnRwVHJhbnNjZWl2ZXIgZmluYWwKIAogICAv
LyBSZXR1cm5zIHRoZSBWb2ljZS9WaWRlb0NoYW5uZWwgc2V0IGZvciB0aGlzIHRyYW5zY2VpdmVy
LiBNYXkgYmUgbnVsbCBpZgogICAvLyB0aGUgdHJhbnNjZWl2ZXIgaXMgbm90IGluIHRoZSBjdXJy
ZW50bHkgc2V0IGxvY2FsL3JlbW90ZSBkZXNjcmlwdGlvbi4KLSAgY3JpY2tldDo6QmFzZUNoYW5u
ZWwqIGNoYW5uZWwoKSBjb25zdCB7IHJldHVybiBjaGFubmVsXzsgfQorICBjcmlja2V0OjpDaGFu
bmVsSW50ZXJmYWNlKiBjaGFubmVsKCkgY29uc3QgeyByZXR1cm4gY2hhbm5lbF87IH0KIAogICAv
LyBTZXRzIHRoZSBWb2ljZS9WaWRlb0NoYW5uZWwuIFRoZSBjYWxsZXIgbXVzdCBwYXNzIGluIHRo
ZSBjb3JyZWN0IGNoYW5uZWwKICAgLy8gaW1wbGVtZW50YXRpb24gYmFzZWQgb24gdGhlIHR5cGUg
b2YgdGhlIHRyYW5zY2VpdmVyLgotICB2b2lkIFNldENoYW5uZWwoY3JpY2tldDo6QmFzZUNoYW5u
ZWwqIGNoYW5uZWwpOworICB2b2lkIFNldENoYW5uZWwoY3JpY2tldDo6Q2hhbm5lbEludGVyZmFj
ZSogY2hhbm5lbCk7CiAKICAgLy8gQWRkcyBhbiBSdHBTZW5kZXIgb2YgdGhlIGFwcHJvcHJpYXRl
IHR5cGUgdG8gYmUgb3duZWQgYnkgdGhpcyB0cmFuc2NlaXZlci4KICAgLy8gTXVzdCBub3QgYmUg
bnVsbC4KQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBSdHBUcmFuc2NlaXZlciBmaW5hbAogICB2
b2lkIFNldENvZGVjUHJlZmVyZW5jZXMocnRjOjpBcnJheVZpZXc8UnRwQ29kZWNDYXBhYmlsaXR5
PiBjb2RlY3MpIG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKLSAgdm9pZCBPbkZpcnN0UGFja2V0UmVj
ZWl2ZWQoY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5uZWwpOworICB2b2lkIE9uRmlyc3RQYWNr
ZXRSZWNlaXZlZChjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBjaGFubmVsKTsKIAogICBjb25z
dCBib29sIHVuaWZpZWRfcGxhbl87CiAgIGNvbnN0IGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90
eXBlXzsKQEAgLTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBSdHBUcmFuc2NlaXZlciBmaW5hbAogICBi
b29sIGNyZWF0ZWRfYnlfYWRkdHJhY2tfID0gZmFsc2U7CiAgIGJvb2wgaGFzX2V2ZXJfYmVlbl91
c2VkX3RvX3NlbmRfID0gZmFsc2U7CiAKLSAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5uZWxf
ID0gbnVsbHB0cjsKKyAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbF8gPSBudWxs
cHRyOwogfTsKIAogQkVHSU5fU0lHTkFMSU5HX1BST1hZX01BUChSdHBUcmFuc2NlaXZlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0
cHRyYW5zY2VpdmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXJfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU3
ZDIxMjNkMTUyZmIyYmYzMzVhODk2OTY1ZTdmZTYxMDUyZjU4NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2Vp
dmVyX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKy8v
IFRoaXMgZmlsZSBjb250YWlucyB0ZXN0cyBmb3IgfFJ0cFRyYW5zY2VpdmVyfC4KKworI2luY2x1
ZGUgInBjL3J0cHRyYW5zY2VpdmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKKyNp
bmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisjaW5jbHVkZSAidGVzdC9tb2NrX2NoYW5uZWxpbnRlcmZh
Y2UuaCIKKwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Cit1c2luZyA6OnRlc3Rpbmc6OlJldHVy
blJlZjsKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIENoZWNrcyB0aGF0IGEgY2hhbm5lbCBj
YW5ub3QgYmUgc2V0IG9uIGEgc3RvcHBlZCB8UnRwVHJhbnNjZWl2ZXJ8LgorVEVTVChSdHBUcmFu
c2NlaXZlclRlc3QsIENhbm5vdFNldENoYW5uZWxPblN0b3BwZWRUcmFuc2NlaXZlcikgeworICBS
dHBUcmFuc2NlaXZlciB0cmFuc2NlaXZlcihjcmlja2V0OjpNZWRpYVR5cGU6Ok1FRElBX1RZUEVf
QVVESU8pOworICBjcmlja2V0OjpNb2NrQ2hhbm5lbEludGVyZmFjZSBjaGFubmVsMTsKKyAgc2ln
c2xvdDo6c2lnbmFsMTxjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKj4gc2lnbmFsOworICBFWFBF
Q1RfQ0FMTChjaGFubmVsMSwgbWVkaWFfdHlwZSgpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJl
dHVybihjcmlja2V0OjpNZWRpYVR5cGU6Ok1FRElBX1RZUEVfQVVESU8pKTsKKyAgRVhQRUNUX0NB
TEwoY2hhbm5lbDEsIFNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWQoKSkKKyAgICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm5SZWYoc2lnbmFsKSk7CisKKyAgdHJhbnNjZWl2ZXIuU2V0Q2hhbm5lbCgm
Y2hhbm5lbDEpOworICBFWFBFQ1RfRVEoJmNoYW5uZWwxLCB0cmFuc2NlaXZlci5jaGFubmVsKCkp
OworCisgIC8vIFN0b3AgdGhlIHRyYW5zY2VpdmVyLgorICB0cmFuc2NlaXZlci5TdG9wKCk7Cisg
IEVYUEVDVF9FUSgmY2hhbm5lbDEsIHRyYW5zY2VpdmVyLmNoYW5uZWwoKSk7CisKKyAgY3JpY2tl
dDo6TW9ja0NoYW5uZWxJbnRlcmZhY2UgY2hhbm5lbDI7CisgIEVYUEVDVF9DQUxMKGNoYW5uZWwy
LCBtZWRpYV90eXBlKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGNyaWNrZXQ6Ok1l
ZGlhVHlwZTo6TUVESUFfVFlQRV9BVURJTykpOworCisgIC8vIENoYW5uZWwgY2FuIG5vIGxvbmdl
ciBiZSBzZXQsIHNvIHRoaXMgY2FsbCBzaG91bGQgYmUgYSBuby1vcC4KKyAgdHJhbnNjZWl2ZXIu
U2V0Q2hhbm5lbCgmY2hhbm5lbDIpOworICBFWFBFQ1RfRVEoJmNoYW5uZWwxLCB0cmFuc2NlaXZl
ci5jaGFubmVsKCkpOworfQorCisvLyBDaGVja3MgdGhhdCBhIGNoYW5uZWwgY2FuIGJlIHVuc2V0
IG9uIGEgc3RvcHBlZCB8UnRwVHJhbnNjZWl2ZXJ8CitURVNUKFJ0cFRyYW5zY2VpdmVyVGVzdCwg
Q2FuVW5zZXRDaGFubmVsT25TdG9wcGVkVHJhbnNjZWl2ZXIpIHsKKyAgUnRwVHJhbnNjZWl2ZXIg
dHJhbnNjZWl2ZXIoY3JpY2tldDo6TWVkaWFUeXBlOjpNRURJQV9UWVBFX1ZJREVPKTsKKyAgY3Jp
Y2tldDo6TW9ja0NoYW5uZWxJbnRlcmZhY2UgY2hhbm5lbDsKKyAgc2lnc2xvdDo6c2lnbmFsMTxj
cmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKj4gc2lnbmFsOworICBFWFBFQ1RfQ0FMTChjaGFubmVs
LCBtZWRpYV90eXBlKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGNyaWNrZXQ6Ok1l
ZGlhVHlwZTo6TUVESUFfVFlQRV9WSURFTykpOworICBFWFBFQ1RfQ0FMTChjaGFubmVsLCBTaWdu
YWxGaXJzdFBhY2tldFJlY2VpdmVkKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuUmVm
KHNpZ25hbCkpOworCisgIHRyYW5zY2VpdmVyLlNldENoYW5uZWwoJmNoYW5uZWwpOworICBFWFBF
Q1RfRVEoJmNoYW5uZWwsIHRyYW5zY2VpdmVyLmNoYW5uZWwoKSk7CisKKyAgLy8gU3RvcCB0aGUg
dHJhbnNjZWl2ZXIuCisgIHRyYW5zY2VpdmVyLlN0b3AoKTsKKyAgRVhQRUNUX0VRKCZjaGFubmVs
LCB0cmFuc2NlaXZlci5jaGFubmVsKCkpOworCisgIC8vIFNldCB0aGUgY2hhbm5lbCB0byB8bnVs
bHB0cnwuCisgIHRyYW5zY2VpdmVyLlNldENoYW5uZWwobnVsbHB0cik7CisgIEVYUEVDVF9FUShu
dWxscHRyLCB0cmFuc2NlaXZlci5jaGFubmVsKCkpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9ydHB0cmFuc3BvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9ydHB0cmFuc3BvcnQuY2MKaW5kZXggOWU5OTRlOWI5ODA0YTUxYWM1NmI2Nzk3
YTU2N2QwYWY3MTM2ZWNkMC4uNGE1NzMwMTZmMjFlODdiY2M4YjIxZTBmYTcxZWViODQ2NDgxZDc3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcnRwdHJhbnNwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3J0cHRyYW5zcG9ydC5jYwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFJ0cFRyYW5z
cG9ydFBhcmFtZXRlcnMgUnRwVHJhbnNwb3J0OjpHZXRQYXJhbWV0ZXJzKCkgY29uc3QgewogfQog
CiB2b2lkIFJ0cFRyYW5zcG9ydDo6RGVtdXhQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciog
cGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0
VGltZSYgdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFj
a2V0X3RpbWVfdXMpIHsKICAgd2VicnRjOjpSdHBQYWNrZXRSZWNlaXZlZCBwYXJzZWRfcGFja2V0
KCZoZWFkZXJfZXh0ZW5zaW9uX21hcF8pOwogICBpZiAoIXBhcnNlZF9wYWNrZXQuUGFyc2Uoc3Rk
Ojptb3ZlKCpwYWNrZXQpKSkgewogICAgIFJUQ19MT0coTFNfRVJST1IpCkBAIC0xOTUsOCArMTk1
LDggQEAgdm9pZCBSdHBUcmFuc3BvcnQ6OkRlbXV4UGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZm
ZXIqIHBhY2tldCwKICAgICByZXR1cm47CiAgIH0KIAotICBpZiAodGltZS50aW1lc3RhbXAgIT0g
LTEpIHsKLSAgICBwYXJzZWRfcGFja2V0LnNldF9hcnJpdmFsX3RpbWVfbXMoKHRpbWUudGltZXN0
YW1wICsgNTAwKSAvIDEwMDApOworICBpZiAocGFja2V0X3RpbWVfdXMgIT0gLTEpIHsKKyAgICBw
YXJzZWRfcGFja2V0LnNldF9hcnJpdmFsX3RpbWVfbXMoKHBhY2tldF90aW1lX3VzICsgNTAwKSAv
IDEwMDApOwogICB9CiAgIHJ0cF9kZW11eGVyXy5PblJ0cFBhY2tldChwYXJzZWRfcGFja2V0KTsK
IH0KQEAgLTIzNiwxOSArMjM2LDE5IEBAIHZvaWQgUnRwVHJhbnNwb3J0OjpPblNlbnRQYWNrZXQo
cnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9ydCwKIH0KIAogdm9p
ZCBSdHBUcmFuc3BvcnQ6Ok9uUnRwUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZl
ciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewotICBEZW11eFBhY2tldChwYWNrZXQsIHBh
Y2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgcGFja2V0X3RpbWVfdXMpIHsKKyAgRGVtdXhQYWNrZXQocGFja2V0LCBwYWNrZXRfdGltZV91
cyk7CiB9CiAKIHZvaWQgUnRwVHJhbnNwb3J0OjpPblJ0Y3BQYWNrZXRSZWNlaXZlZChydGM6OkNv
cHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewotICBTaWduYWxS
dGNwUGFja2V0UmVjZWl2ZWQocGFja2V0LCBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgeworICBTaWdu
YWxSdGNwUGFja2V0UmVjZWl2ZWQocGFja2V0LCBwYWNrZXRfdGltZV91cyk7CiB9CiAKIHZvaWQg
UnRwVHJhbnNwb3J0OjpPblJlYWRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCog
dHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBk
YXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90
aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNr
ZXRfdGltZV91cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7
CiAgIFRSQUNFX0VWRU5UMCgid2VicnRjIiwgIlJ0cFRyYW5zcG9ydDo6T25SZWFkUGFja2V0Iik7
CiAKQEAgLTI3Miw5ICsyNzIsOSBAQCB2b2lkIFJ0cFRyYW5zcG9ydDo6T25SZWFkUGFja2V0KHJ0
Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgfQogCiAgIGlmIChydGNw
KSB7Ci0gICAgT25SdGNwUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcGFja2V0X3RpbWUpOworICAg
IE9uUnRjcFBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lX3VzKTsKICAgfSBlbHNl
IHsKLSAgICBPblJ0cFBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgICBP
blJ0cFBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lX3VzKTsKICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9y
dHB0cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3J0cHRyYW5zcG9ydC5oCmluZGV4IDc5M2FjOTAxYWE1YzhjYjQ4Y2YyY2YzM2U1YWViOWJk
NDZiOWQwOTguLmRhYjU5MDMxNzE1NThlZjc3OTNjZjljZmU4ZjliNDRkNDI3OTNjZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRy
YW5zcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3J0cHRyYW5zcG9ydC5oCkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNzIFJ0cFRyYW5zcG9ydCA6
IHB1YmxpYyBSdHBUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIFJ0cFRyYW5zcG9ydEFkYXB0ZXIqIEdl
dEludGVybmFsKCkgb3ZlcnJpZGU7CiAKICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIGJlIHVzZWQg
aW4gdGhlIHN1YmNsYXNzZXMuCi0gIHZvaWQgRGVtdXhQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1
ZmZlciogcGFja2V0LCBjb25zdCBydGM6OlBhY2tldFRpbWUmIHRpbWUpOworICB2b2lkIERlbXV4
UGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwgaW50NjRfdCBwYWNrZXRfdGlt
ZV91cyk7CiAKICAgYm9vbCBTZW5kUGFja2V0KGJvb2wgcnRjcCwKICAgICAgICAgICAgICAgICAg
IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKQEAgLTk4LDkgKzk4LDkgQEAgY2xhc3Mg
UnRwVHJhbnNwb3J0IDogcHVibGljIFJ0cFRyYW5zcG9ydEludGVybmFsIHsKICAgdmlydHVhbCB2
b2lkIE9uTmV0d29ya1JvdXRlQ2hhbmdlZCgKICAgICAgIGFic2w6Om9wdGlvbmFsPHJ0Yzo6TmV0
d29ya1JvdXRlPiBuZXR3b3JrX3JvdXRlKTsKICAgdmlydHVhbCB2b2lkIE9uUnRwUGFja2V0UmVj
ZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7
CiAgIHZpcnR1YWwgdm9pZCBPblJ0Y3BQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVm
ZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBy
dGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpOwogICAvLyBPdmVycmlkZGVuIGJ5IFNy
dHBUcmFuc3BvcnQgYW5kIER0bHNTcnRwVHJhbnNwb3J0LgogICB2aXJ0dWFsIHZvaWQgT25Xcml0
YWJsZVN0YXRlKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHBhY2tldF90cmFuc3BvcnQp
OwogCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgUnRwVHJhbnNwb3J0IDogcHVibGljIFJ0cFRy
YW5zcG9ydEludGVybmFsIHsKICAgdm9pZCBPblJlYWRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3Bv
cnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBk
YXRhLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAgICAgICAgICAgICAg
ICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lLAorICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cywKICAgICAgICAgICAgICAgICAgICAgaW50
IGZsYWdzKTsKIAogICAvLyBVcGRhdGVzICJyZWFkeSB0byBzZW5kIiBmb3IgYW4gaW5kaXZpZHVh
bCBjaGFubmVsIGFuZCBmaXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0aW50ZXJuYWwuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zcG9ydGludGVybmFsLmgK
aW5kZXggY2EwNTY4MDcxMDg2Y2U1MWFkMTY4MGI2MmNmMjllN2VjMGU1OWVkZC4uZTYzMzgzNjZj
MDYzN2VjZjA2ZDNiMjhmZTMxZTE5ZTY1Nzc0NWQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0aW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFu
c3BvcnRpbnRlcm5hbC5oCkBAIC0yNCw3ICsyNCw2IEBACiBuYW1lc3BhY2UgcnRjIHsKIGNsYXNz
IENvcHlPbldyaXRlQnVmZmVyOwogc3RydWN0IFBhY2tldE9wdGlvbnM7Ci1zdHJ1Y3QgUGFja2V0
VGltZTsKIH0gIC8vIG5hbWVzcGFjZSBydGMKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC01OSw4
ICs1OCw3IEBAIGNsYXNzIFJ0cFRyYW5zcG9ydEludGVybmFsIDogcHVibGljIFNydHBUcmFuc3Bv
cnRJbnRlcmZhY2UsCiAgIC8vIENhbGxlZCB3aGVuZXZlciBhbiBSVENQIHBhY2tldCBpcyByZWNl
aXZlZC4gVGhlcmUgaXMgbm8gZXF1aXZhbGVudCBzaWduYWwKICAgLy8gZm9yIFJUUCBwYWNrZXRz
IGJlY2F1c2UgdGhleSB3b3VsZCBiZSBmb3J3YXJkZWQgdG8gdGhlIEJhc2VDaGFubmVsIHRocm91
Z2gKICAgLy8gdGhlIFJ0cERlbXV4ZXIgY2FsbGJhY2suCi0gIHNpZ3Nsb3Q6OnNpZ25hbDI8cnRj
OjpDb3B5T25Xcml0ZUJ1ZmZlciosIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSY+Ci0gICAgICBTaWdu
YWxSdGNwUGFja2V0UmVjZWl2ZWQ7CisgIHNpZ3Nsb3Q6OnNpZ25hbDI8cnRjOjpDb3B5T25Xcml0
ZUJ1ZmZlciosIGludDY0X3Q+IFNpZ25hbFJ0Y3BQYWNrZXRSZWNlaXZlZDsKIAogICAvLyBDYWxs
ZWQgd2hlbmV2ZXIgdGhlIG5ldHdvcmsgcm91dGUgb2YgdGhlIFAyUCBsYXllciB0cmFuc3BvcnQg
Y2hhbmdlcy4KICAgLy8gVGhlIGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIG5ldHdvcmsgcm91dGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9ydHB0cmFuc3BvcnR0ZXN0dXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0dGVzdHV0aWwuaAppbmRleCBlYjMzNzczMGQxMDdm
OGM4ZDgxYThkMjhhMmFhMDRmMzJlNjAyMjU0Li5mMmMzNTEyMmFhZjQ0YTM0NzI2N2ZhZDM3Zjlm
MjI1YzI0NDc2MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc3BvcnR0ZXN0dXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zcG9ydHRlc3R1dGlsLmgKQEAg
LTM5LDcgKzM5LDcgQEAgY2xhc3MgVHJhbnNwb3J0T2JzZXJ2ZXIgOiBwdWJsaWMgUnRwUGFja2V0
U2lua0ludGVyZmFjZSwKICAgfQogCiAgIHZvaWQgT25SdGNwUGFja2V0UmVjZWl2ZWQocnRjOjpD
b3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgICAgcnRjcF9jb3VudF8rKzsKICAg
ICBsYXN0X3JlY3ZfcnRjcF9wYWNrZXRfID0gKnBhY2tldDsKICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0
aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vz
c2lvbmRlc2NyaXB0aW9uLmNjCmluZGV4IGYzZTg5YjQ3ZmFkYjY2YzAwMDAxMWRjODg4ZjJjYzM2
MzRiOTk1N2QuLjNhOWIxOGVlNjkxOWIzN2ZmNTk0MGVlNjA2NGVjY2I3YjQ2YThkNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Np
b25kZXNjcmlwdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb24uY2MKQEAgLTg0LDIxICs4NCw2IEBAIGJvb2wg
Q29udGVudEdyb3VwOjpSZW1vdmVDb250ZW50TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgY29udGVu
dF9uYW1lKSB7CiB9CiAKIFNlc3Npb25EZXNjcmlwdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uKCkg
PSBkZWZhdWx0OwotCi1TZXNzaW9uRGVzY3JpcHRpb246OlNlc3Npb25EZXNjcmlwdGlvbihjb25z
dCBDb250ZW50SW5mb3MmIGNvbnRlbnRzKQotICAgIDogY29udGVudHNfKGNvbnRlbnRzKSB7fQot
Ci1TZXNzaW9uRGVzY3JpcHRpb246OlNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBDb250ZW50SW5m
b3MmIGNvbnRlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQ29udGVudEdyb3VwcyYgZ3JvdXBzKQotICAgIDogY29udGVudHNfKGNvbnRlbnRzKSwgY29u
dGVudF9ncm91cHNfKGdyb3Vwcykge30KLQotU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZXNzaW9uRGVz
Y3JpcHRpb24oY29uc3QgQ29udGVudEluZm9zJiBjb250ZW50cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zcG9ydEluZm9zJiB0cmFuc3BvcnRzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udGVudEdyb3Vw
cyYgZ3JvdXBzKQotICAgIDogY29udGVudHNfKGNvbnRlbnRzKSwKLSAgICAgIHRyYW5zcG9ydF9p
bmZvc18odHJhbnNwb3J0cyksCi0gICAgICBjb250ZW50X2dyb3Vwc18oZ3JvdXBzKSB7fQotCiBT
ZXNzaW9uRGVzY3JpcHRpb246OlNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBTZXNzaW9uRGVzY3Jp
cHRpb24mKSA9IGRlZmF1bHQ7CiAKIFNlc3Npb25EZXNjcmlwdGlvbjo6flNlc3Npb25EZXNjcmlw
dGlvbigpIHsKQEAgLTE2Miw3ICsxNDcsNyBAQCB2b2lkIFNlc3Npb25EZXNjcmlwdGlvbjo6QWRk
Q29udGVudChjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKICAgQ29udGVudEluZm8gY29udGVudCh0
eXBlKTsKICAgY29udGVudC5uYW1lID0gbmFtZTsKICAgY29udGVudC5kZXNjcmlwdGlvbiA9IGRl
c2NyaXB0aW9uOwotICBjb250ZW50c18ucHVzaF9iYWNrKHN0ZDo6bW92ZShjb250ZW50KSk7Cisg
IEFkZENvbnRlbnQoJmNvbnRlbnQpOwogfQogCiB2b2lkIFNlc3Npb25EZXNjcmlwdGlvbjo6QWRk
Q29udGVudChjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKQEAgLTE3Myw3ICsxNTgsNyBAQCB2b2lk
IFNlc3Npb25EZXNjcmlwdGlvbjo6QWRkQ29udGVudChjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwK
ICAgY29udGVudC5uYW1lID0gbmFtZTsKICAgY29udGVudC5yZWplY3RlZCA9IHJlamVjdGVkOwog
ICBjb250ZW50LmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247Ci0gIGNvbnRlbnRzXy5wdXNoX2Jh
Y2soc3RkOjptb3ZlKGNvbnRlbnQpKTsKKyAgQWRkQ29udGVudCgmY29udGVudCk7CiB9CiAKIHZv
aWQgU2Vzc2lvbkRlc2NyaXB0aW9uOjpBZGRDb250ZW50KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
LApAQCAtMTg2LDcgKzE3MSwxNiBAQCB2b2lkIFNlc3Npb25EZXNjcmlwdGlvbjo6QWRkQ29udGVu
dChjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKICAgY29udGVudC5yZWplY3RlZCA9IHJlamVjdGVk
OwogICBjb250ZW50LmJ1bmRsZV9vbmx5ID0gYnVuZGxlX29ubHk7CiAgIGNvbnRlbnQuZGVzY3Jp
cHRpb24gPSBkZXNjcmlwdGlvbjsKLSAgY29udGVudHNfLnB1c2hfYmFjayhzdGQ6Om1vdmUoY29u
dGVudCkpOworICBBZGRDb250ZW50KCZjb250ZW50KTsKK30KKwordm9pZCBTZXNzaW9uRGVzY3Jp
cHRpb246OkFkZENvbnRlbnQoQ29udGVudEluZm8qIGNvbnRlbnQpIHsKKyAgaWYgKGV4dG1hcF9h
bGxvd19taXhlZCgpKSB7CisgICAgLy8gTWl4ZWQgc3VwcG9ydCBvbiBzZXNzaW9uIGxldmVsIG92
ZXJyaWRlcyBzZXR0aW5nIG9uIG1lZGlhIGxldmVsLgorICAgIGNvbnRlbnQtPmRlc2NyaXB0aW9u
LT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oCisgICAgICAgIE1lZGlhQ29udGVudERlc2Ny
aXB0aW9uOjprU2Vzc2lvbik7CisgIH0KKyAgY29udGVudHNfLnB1c2hfYmFjayhzdGQ6Om1vdmUo
KmNvbnRlbnQpKTsKIH0KIAogYm9vbCBTZXNzaW9uRGVzY3JpcHRpb246OlJlbW92ZUNvbnRlbnRC
eU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlvbi5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2Ny
aXB0aW9uLmgKaW5kZXggNjQ1ZWJjNTRmODZlNTc5NzQ2NDBhZjdiZDU5Yzg2Y2VhMDc3NjI3Mi4u
MzgyOTE0ODRjZDhjYjRlODg4ODczN2E3OGQ2YjBmODIxNTRlODBmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0
aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
c2Vzc2lvbmRlc2NyaXB0aW9uLmgKQEAgLTE4Myw2ICsxODMsMjIgQEAgY2xhc3MgTWVkaWFDb250
ZW50RGVzY3JpcHRpb24gewogICAgIHJldHVybiBjb25uZWN0aW9uX2FkZHJlc3NfOwogICB9CiAK
KyAgLy8gRGV0ZXJtaW5lcyBpZiBpdCdzIGFsbG93ZWQgdG8gbWl4IG9uZS0gYW5kIHR3by1ieXRl
IHJ0cCBoZWFkZXIgZXh0ZW5zaW9ucworICAvLyB3aXRoaW4gdGhlIHNhbWUgcnRwIHN0cmVhbS4K
KyAgZW51bSBFeHRtYXBBbGxvd01peGVkIHsga05vLCBrU2Vzc2lvbiwga01lZGlhIH07CisgIHZv
aWQgc2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKEV4dG1hcEFsbG93TWl4ZWQgbmV3X2V4dG1h
cF9hbGxvd19taXhlZCkgeworICAgIGlmIChuZXdfZXh0bWFwX2FsbG93X21peGVkID09IGtNZWRp
YSAmJgorICAgICAgICBleHRtYXBfYWxsb3dfbWl4ZWRfZW51bV8gPT0ga1Nlc3Npb24pIHsKKyAg
ICAgIC8vIERvIG5vdCBkb3duZ3JhZGUgZnJvbSBzZXNzaW9uIGxldmVsIHRvIG1lZGlhIGxldmVs
LgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBleHRtYXBfYWxsb3dfbWl4ZWRfZW51bV8gPSBu
ZXdfZXh0bWFwX2FsbG93X21peGVkOworICB9CisgIEV4dG1hcEFsbG93TWl4ZWQgZXh0bWFwX2Fs
bG93X21peGVkX2VudW0oKSBjb25zdCB7CisgICAgcmV0dXJuIGV4dG1hcF9hbGxvd19taXhlZF9l
bnVtXzsKKyAgfQorICBib29sIGV4dG1hcF9hbGxvd19taXhlZCgpIGNvbnN0IHsgcmV0dXJuIGV4
dG1hcF9hbGxvd19taXhlZF9lbnVtXyAhPSBrTm87IH0KKwogIHByb3RlY3RlZDoKICAgYm9vbCBy
dGNwX211eF8gPSBmYWxzZTsKICAgYm9vbCBydGNwX3JlZHVjZWRfc2l6ZV8gPSBmYWxzZTsKQEAg
LTE5Niw2ICsyMTIsMTAgQEAgY2xhc3MgTWVkaWFDb250ZW50RGVzY3JpcHRpb24gewogICB3ZWJy
dGM6OlJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbl8gPQogICAgICAgd2VicnRjOjpS
dHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a1NlbmRSZWN2OwogICBydGM6OlNvY2tldEFkZHJlc3Mg
Y29ubmVjdGlvbl9hZGRyZXNzXzsKKyAgLy8gTWl4ZWQgb25lLSBhbmQgdHdvLWJ5dGUgaGVhZGVy
IG5vdCBpbmNsdWRlZCBpbiBvZmZlciBvbiBtZWRpYSBsZXZlbCBvcgorICAvLyBzZXNzaW9uIGxl
dmVsLCBidXQgd2Ugd2lsbCByZXNwb25kIHRoYXQgd2Ugc3VwcG9ydCBpdC4gVGhlIHBsYW4gaXMg
dG8gYWRkCisgIC8vIGl0IHRvIG91ciBvZmZlciBvbiBzZXNzaW9uIGxldmVsLiBTZWUgdG9kbyBp
biBTZXNzaW9uRGVzY3JpcHRpb24uCisgIEV4dG1hcEFsbG93TWl4ZWQgZXh0bWFwX2FsbG93X21p
eGVkX2VudW1fID0ga05vOwogfTsKIAogLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODYyMCk6IFJl
bW92ZSB0aGlzIGFsaWFzIG9uY2UgZG93bnN0cmVhbSBwcm9qZWN0cyBoYXZlCkBAIC0zNzgsMTEg
KzM5OCw2IEBAIGVudW0gTXNpZFNpZ25hbGluZyB7CiBjbGFzcyBTZXNzaW9uRGVzY3JpcHRpb24g
ewogIHB1YmxpYzoKICAgU2Vzc2lvbkRlc2NyaXB0aW9uKCk7Ci0gIGV4cGxpY2l0IFNlc3Npb25E
ZXNjcmlwdGlvbihjb25zdCBDb250ZW50SW5mb3MmIGNvbnRlbnRzKTsKLSAgU2Vzc2lvbkRlc2Ny
aXB0aW9uKGNvbnN0IENvbnRlbnRJbmZvcyYgY29udGVudHMsIGNvbnN0IENvbnRlbnRHcm91cHMm
IGdyb3Vwcyk7Ci0gIFNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBDb250ZW50SW5mb3MmIGNvbnRl
bnRzLAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNwb3J0SW5mb3MmIHRyYW5zcG9y
dHMsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBDb250ZW50R3JvdXBzJiBncm91cHMpOwog
ICB+U2Vzc2lvbkRlc2NyaXB0aW9uKCk7CiAKICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBDb3B5KCkg
Y29uc3Q7CkBAIC00MTIsNiArNDI3LDggQEAgY2xhc3MgU2Vzc2lvbkRlc2NyaXB0aW9uIHsKICAg
ICAgICAgICAgICAgICAgIGJvb2wgcmVqZWN0ZWQsCiAgICAgICAgICAgICAgICAgICBib29sIGJ1
bmRsZV9vbmx5LAogICAgICAgICAgICAgICAgICAgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIGRl
c2NyaXB0aW9uKTsKKyAgdm9pZCBBZGRDb250ZW50KENvbnRlbnRJbmZvKiBjb250ZW50KTsKKwog
ICBib29sIFJlbW92ZUNvbnRlbnRCeU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwogCiAg
IC8vIFRyYW5zcG9ydCBhY2Nlc3NvcnMuCkBAIC00NTUsNiArNDcyLDI0IEBAIGNsYXNzIFNlc3Np
b25EZXNjcmlwdGlvbiB7CiAgIH0KICAgaW50IG1zaWRfc2lnbmFsaW5nKCkgY29uc3QgeyByZXR1
cm4gbXNpZF9zaWduYWxpbmdfOyB9CiAKKyAgLy8gRGV0ZXJtaW5lcyBpZiBpdCdzIGFsbG93ZWQg
dG8gbWl4IG9uZS0gYW5kIHR3by1ieXRlIHJ0cCBoZWFkZXIgZXh0ZW5zaW9ucworICAvLyB3aXRo
aW4gdGhlIHNhbWUgcnRwIHN0cmVhbS4KKyAgdm9pZCBzZXRfZXh0bWFwX2FsbG93X21peGVkKGJv
b2wgc3VwcG9ydGVkKSB7CisgICAgZXh0bWFwX2FsbG93X21peGVkXyA9IHN1cHBvcnRlZDsKKyAg
ICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6RXh0bWFwQWxsb3dNaXhlZCBtZWRpYV9sZXZlbF9z
ZXR0aW5nID0KKyAgICAgICAgc3VwcG9ydGVkID8gTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtT
ZXNzaW9uCisgICAgICAgICAgICAgICAgICA6IE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm87
CisgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHNfKSB7CisgICAgICAvLyBEbyBub3Qg
c2V0IHRvIGtObyBpZiB0aGUgY3VycmVudCBzZXR0aW5nIGlzIGtNZWRpYS4KKyAgICAgIGlmIChz
dXBwb3J0ZWQgfHwgY29udGVudC5tZWRpYV9kZXNjcmlwdGlvbigpLT5leHRtYXBfYWxsb3dfbWl4
ZWRfZW51bSgpICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYUNvbnRlbnREZXNj
cmlwdGlvbjo6a01lZGlhKSB7CisgICAgICAgIGNvbnRlbnQubWVkaWFfZGVzY3JpcHRpb24oKS0+
c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKAorICAgICAgICAgICAgbWVkaWFfbGV2ZWxfc2V0
dGluZyk7CisgICAgICB9CisgICAgfQorICB9CisgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkKCkg
Y29uc3QgeyByZXR1cm4gZXh0bWFwX2FsbG93X21peGVkXzsgfQorCiAgcHJpdmF0ZToKICAgU2Vz
c2lvbkRlc2NyaXB0aW9uKGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiYpOwogCkBAIC00NjUsNiAr
NTAwLDEyIEBAIGNsYXNzIFNlc3Npb25EZXNjcmlwdGlvbiB7CiAgIC8vIERlZmF1bHQgdG8gd2hh
dCBQbGFuIEIgd291bGQgZG8uCiAgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzg1MzApOiBDaGFu
Z2UgZGVmYXVsdCB0byBrTXNpZFNpZ25hbGluZ01lZGlhU2VjdGlvbi4KICAgaW50IG1zaWRfc2ln
bmFsaW5nXyA9IGtNc2lkU2lnbmFsaW5nU3NyY0F0dHJpYnV0ZTsKKyAgLy8gVE9ETyh3ZWJydGM6
OTk4NSk6IEFjdGl2YXRlIG1peGVkIG9uZS0gYW5kIHR3by1ieXRlIGhlYWRlciBleHRlbnNpb24g
aW4KKyAgLy8gb2ZmZXIgYXQgc2Vzc2lvbiBsZXZlbC4gSXQncyBjdXJyZW50bHkgbm90IGluY2x1
ZGVkIGluIG9mZmVyIGJ5IGRlZmF1bHQKKyAgLy8gYmVjYXVzZSBjbGllbnRzIHByaW9yIHRvIGh0
dHBzOi8vYnVncy53ZWJydGMub3JnLzk3MTIgY2Fubm90IHBhcnNlIHRoaXMKKyAgLy8gY29ycmVj
dGx5LiBJZiBpdCdzIGluY2x1ZGVkIGluIG9mZmVyIHRvIHVzIHdlIHdpbGwgcmVzcG9uZCB0aGF0
IHdlIHN1cHBvcnQKKyAgLy8gaXQuCisgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkXyA9IGZhbHNl
OwogfTsKIAogLy8gSW5kaWNhdGVzIHdoZXRoZXIgYSBzZXNzaW9uIGRlc2NyaXB0aW9uIHdhcyBz
ZW50IGJ5IHRoZSBsb2NhbCBjbGllbnQgb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlvbl91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25k
ZXNjcmlwdGlvbl91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2FjZjU4N2Y1NjJiNGY5YTUyNjdi
NGFjMjc1YWRkNzg4ZTI3MzFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uX3VuaXR0ZXN0LmNj
CkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworI2luY2x1ZGUgInBjL3Nlc3Np
b25kZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCisKK25hbWVzcGFj
ZSBjcmlja2V0IHsKKworVEVTVChNZWRpYUNvbnRlbnREZXNjcmlwdGlvblRlc3QsIEV4dG1hcEFs
bG93TWl4ZWREZWZhdWx0VmFsdWUpIHsKKyAgVmlkZW9Db250ZW50RGVzY3JpcHRpb24gdmlkZW9f
ZGVzYzsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8sIHZpZGVvX2Rl
c2MuZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7Cit9CisKK1RFU1QoTWVkaWFDb250ZW50RGVz
Y3JpcHRpb25UZXN0LCBTZXRFeHRtYXBBbGxvd01peGVkKSB7CisgIFZpZGVvQ29udGVudERlc2Ny
aXB0aW9uIHZpZGVvX2Rlc2M7CisgIHZpZGVvX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZF9l
bnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8pOworICBFWFBFQ1RfRVEoTWVkaWFDb250
ZW50RGVzY3JpcHRpb246OmtObywgdmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgp
KTsKKyAgdmlkZW9fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50
RGVzY3JpcHRpb246OmtNZWRpYSk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlv
bjo6a01lZGlhLAorICAgICAgICAgICAgdmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWRfZW51
bSgpKTsKKyAgdmlkZW9fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250
ZW50RGVzY3JpcHRpb246OmtTZXNzaW9uKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2Ny
aXB0aW9uOjprU2Vzc2lvbiwKKyAgICAgICAgICAgIHZpZGVvX2Rlc2MuZXh0bWFwX2FsbG93X21p
eGVkX2VudW0oKSk7CisKKyAgLy8gTm90IGFsbG93ZWQgdG8gZG93bmdyYWRlIGZyb20ga1Nlc3Np
b24gdG8ga01lZGlhLgorICB2aWRlb19kZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShN
ZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVu
dERlc2NyaXB0aW9uOjprU2Vzc2lvbiwKKyAgICAgICAgICAgIHZpZGVvX2Rlc2MuZXh0bWFwX2Fs
bG93X21peGVkX2VudW0oKSk7CisKKyAgLy8gQWx3YXlzIG9rYXkgdG8gc2V0IG5vdCBzdXBwb3J0
ZWQuCisgIHZpZGVvX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVu
dERlc2NyaXB0aW9uOjprTm8pOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246
OmtObywgdmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKyAgdmlkZW9fZGVz
Yy5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtN
ZWRpYSk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhLAorICAg
ICAgICAgICAgdmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKyAgdmlkZW9f
ZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246
OmtObyk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a05vLCB2aWRlb19k
ZXNjLmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworfQorCitURVNUKE1lZGlhQ29udGVudERl
c2NyaXB0aW9uVGVzdCwgTWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKSB7CisgIFZpZGVv
Q29udGVudERlc2NyaXB0aW9uIHZpZGVvX2Rlc2M7CisgIHZpZGVvX2Rlc2Muc2V0X2V4dG1hcF9h
bGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8pOworICBFWFBFQ1Rf
RkFMU0UodmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7CisgIHZpZGVvX2Rlc2Muc2V0
X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEp
OworICBFWFBFQ1RfVFJVRSh2aWRlb19kZXNjLmV4dG1hcF9hbGxvd19taXhlZCgpKTsKKyAgdmlk
ZW9fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRp
b246OmtTZXNzaW9uKTsKKyAgRVhQRUNUX1RSVUUodmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4
ZWQoKSk7Cit9CisKK1RFU1QoU2Vzc2lvbkRlc2NyaXB0aW9uVGVzdCwgU2V0RXh0bWFwQWxsb3dN
aXhlZCkgeworICBTZXNzaW9uRGVzY3JpcHRpb24gc2Vzc2lvbl9kZXNjOworICBzZXNzaW9uX2Rl
c2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZCh0cnVlKTsKKyAgRVhQRUNUX1RSVUUoc2Vzc2lvbl9k
ZXNjLmV4dG1hcF9hbGxvd19taXhlZCgpKTsKKyAgc2Vzc2lvbl9kZXNjLnNldF9leHRtYXBfYWxs
b3dfbWl4ZWQoZmFsc2UpOworICBFWFBFQ1RfRkFMU0Uoc2Vzc2lvbl9kZXNjLmV4dG1hcF9hbGxv
d19taXhlZCgpKTsKK30KKworVEVTVChTZXNzaW9uRGVzY3JpcHRpb25UZXN0LCBTZXRFeHRtYXBB
bGxvd01peGVkUHJvcGFnYXRlc1RvTWVkaWFMZXZlbCkgeworICBTZXNzaW9uRGVzY3JpcHRpb24g
c2Vzc2lvbl9kZXNjOworICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogdmlkZW9fZGVzYyA9IG5l
dyBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbigpOworICBzZXNzaW9uX2Rlc2MuQWRkQ29udGVudCgi
dmlkZW8iLCBNZWRpYVByb3RvY29sVHlwZTo6a1J0cCwgdmlkZW9fZGVzYyk7CisKKyAgLy8gU2V0
dGluZyB0cnVlIG9uIHNlc3Npb24gbGV2ZWwgcHJvcGFnYXRlcyB0byBtZWRpYSBsZXZlbC4KKyAg
c2Vzc2lvbl9kZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWQodHJ1ZSk7CisgIEVYUEVDVF9FUShN
ZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a1Nlc3Npb24sCisgICAgICAgICAgICB2aWRlb19kZXNj
LT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKworICAvLyBEb24ndCBkb3duZ3JhZGUgZnJv
bSBzZXNzaW9uIGxldmVsIHRvIG1lZGlhIGxldmVsCisgIHZpZGVvX2Rlc2MtPnNldF9leHRtYXBf
YWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgRVhQ
RUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprU2Vzc2lvbiwKKyAgICAgICAgICAgIHZp
ZGVvX2Rlc2MtPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworCisgIC8vIFNldHRpbmcgZmFs
c2Ugb24gc2Vzc2lvbiBsZXZlbCBwcm9wYWdhdGVzIHRvIG1lZGlhIGxldmVsIGlmIHRoZSBjdXJy
ZW50CisgIC8vIHN0YXRlIGlzIGtTZXNzaW9uLgorICBzZXNzaW9uX2Rlc2Muc2V0X2V4dG1hcF9h
bGxvd19taXhlZChmYWxzZSk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6
a05vLAorICAgICAgICAgICAgdmlkZW9fZGVzYy0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7
CisKKyAgLy8gTm93IHBvc3NpYmxlIHRvIHNldCBhdCBtZWRpYSBsZXZlbC4KKyAgdmlkZW9fZGVz
Yy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjpr
TWVkaWEpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSwKKyAg
ICAgICAgICAgIHZpZGVvX2Rlc2MtPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworCisgIC8v
IFNldHRpbmcgZmFsc2Ugb24gc2Vzc2lvbiBsZXZlbCBkb2VzIG5vdCBvdmVycmlkZSBvbiBtZWRp
YSBsZXZlbCBpZiBjdXJyZW50CisgIC8vIHN0YXRlIGlzIGtNZWRpYS4KKyAgc2Vzc2lvbl9kZXNj
LnNldF9leHRtYXBfYWxsb3dfbWl4ZWQoZmFsc2UpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50
RGVzY3JpcHRpb246OmtNZWRpYSwKKyAgICAgICAgICAgIHZpZGVvX2Rlc2MtPmV4dG1hcF9hbGxv
d19taXhlZF9lbnVtKCkpOworCisgIC8vIFNldHRpbmcgdHJ1ZSBvbiBzZXNzaW9uIGxldmVsIG92
ZXJyaWRlcyBzZXR0aW5nIG9uIG1lZGlhIGxldmVsLgorICBzZXNzaW9uX2Rlc2Muc2V0X2V4dG1h
cF9hbGxvd19taXhlZCh0cnVlKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9u
OjprU2Vzc2lvbiwKKyAgICAgICAgICAgIHZpZGVvX2Rlc2MtPmV4dG1hcF9hbGxvd19taXhlZF9l
bnVtKCkpOworfQorCitURVNUKFNlc3Npb25EZXNjcmlwdGlvblRlc3QsIEFkZENvbnRlbnRUcmFu
c2ZlcnNFeHRtYXBBbGxvd01peGVkU2V0dGluZykgeworICBTZXNzaW9uRGVzY3JpcHRpb24gc2Vz
c2lvbl9kZXNjOworICBzZXNzaW9uX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZChmYWxzZSk7
CisgIE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBhdWRpb19kZXNjID0gbmV3IEF1ZGlvQ29udGVu
dERlc2NyaXB0aW9uKCk7CisgIGF1ZGlvX2Rlc2MtPnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51
bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKworICAvLyBJZiBzZXNzaW9uIHNl
dHRpbmcgaXMgZmFsc2UsIG1lZGlhIGxldmVsIHNldHRpbmcgaXMgcHJlc2VydmVkIHdoZW4gbmV3
CisgIC8vIGNvbnRlbnQgaXMgYWRkZWQuCisgIHNlc3Npb25fZGVzYy5BZGRDb250ZW50KCJhdWRp
byIsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCBhdWRpb19kZXNjKTsKKyAgRVhQRUNUX0VRKE1l
ZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEsCisgICAgICAgICAgICBhdWRpb19kZXNjLT5l
eHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKworICAvLyBJZiBzZXNzaW9uIHNldHRpbmcgaXMg
dHJ1ZSwgaXQncyB0cmFuc2ZlcnJlZCB0byBtZWRpYSBsZXZlbCB3aGVuIG5ldworICAvLyBjb250
ZW50IGlzIGFkZGVkLgorICBzZXNzaW9uX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZCh0cnVl
KTsKKyAgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIHZpZGVvX2Rlc2MgPSBuZXcgVmlkZW9Db250
ZW50RGVzY3JpcHRpb24oKTsKKyAgc2Vzc2lvbl9kZXNjLkFkZENvbnRlbnQoInZpZGVvIiwgTWVk
aWFQcm90b2NvbFR5cGU6OmtSdHAsIHZpZGVvX2Rlc2MpOworICBFWFBFQ1RfRVEoTWVkaWFDb250
ZW50RGVzY3JpcHRpb246OmtTZXNzaW9uLAorICAgICAgICAgICAgdmlkZW9fZGVzYy0+ZXh0bWFw
X2FsbG93X21peGVkX2VudW0oKSk7CisKKyAgLy8gU2Vzc2lvbiBsZXZlbCBzZXR0aW5nIG92ZXJy
aWRlcyBtZWRpYSBsZXZlbCB3aGVuIG5ldyBjb250ZW50IGlzIGFkZGVkLgorICBNZWRpYUNvbnRl
bnREZXNjcmlwdGlvbiogZGF0YV9kZXNjID0gbmV3IERhdGFDb250ZW50RGVzY3JpcHRpb247Cisg
IGRhdGFfZGVzYy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2Ny
aXB0aW9uOjprTWVkaWEpOworICBzZXNzaW9uX2Rlc2MuQWRkQ29udGVudCgiZGF0YSIsIE1lZGlh
UHJvdG9jb2xUeXBlOjprUnRwLCBkYXRhX2Rlc2MpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50
RGVzY3JpcHRpb246OmtTZXNzaW9uLAorICAgICAgICAgICAgZGF0YV9kZXNjLT5leHRtYXBfYWxs
b3dfbWl4ZWRfZW51bSgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRw
ZmlsdGVyLmNjCmluZGV4IDVmZmUzNDIxMmU1MDhiYTczYTAwZTNmODY5NDhhZTUwN2ZmNjJlMTAu
LmNkMDM5M2EwM2UzMzFiMWQ3M2NmZjRhMjI1OWUyM2FlN2E1MmY0NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0ZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cGZp
bHRlci5jYwpAQCAtMTksNyArMTksNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2J5dGVvcmRlci5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dp
bmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNf
YmFzZS90aGlyZF9wYXJ0eS9iYXNlNjQvYmFzZTY0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGlt
ZXV0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvemVyb19tZW1vcnkuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0ZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0
ZXIuaAppbmRleCBhNGRkNTRmYThiZGViY2E2OGUxOWMwZmRkZDA4MzliNjkxMGU2OWQ1Li40YWIw
ZGQ3MmMxYTQxMmMxNDIzYzhjMDI0NWFkZTc5NGVhOGVmODk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwZmlsdGVyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cGZpbHRlci5o
CkBAIC03OCw2ICs3OCwxMCBAQCBjbGFzcyBTcnRwRmlsdGVyIHsKIAogICBib29sIFJlc2V0UGFy
YW1zKCk7CiAKKyAgc3RhdGljIGJvb2wgUGFyc2VLZXlQYXJhbXMoY29uc3Qgc3RkOjpzdHJpbmcm
IHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCoga2V5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKTsKKwogICBhYnNsOjpvcHRpb25h
bDxpbnQ+IHNlbmRfY2lwaGVyX3N1aXRlKCkgeyByZXR1cm4gc2VuZF9jaXBoZXJfc3VpdGVfOyB9
CiAgIGFic2w6Om9wdGlvbmFsPGludD4gcmVjdl9jaXBoZXJfc3VpdGUoKSB7IHJldHVybiByZWN2
X2NpcGhlcl9zdWl0ZV87IH0KIApAQCAtMTA0LDEwICsxMDgsNiBAQCBjbGFzcyBTcnRwRmlsdGVy
IHsKIAogICBib29sIEFwcGx5UmVjdlBhcmFtcyhjb25zdCBDcnlwdG9QYXJhbXMmIHJlY3ZfcGFy
YW1zKTsKIAotICBzdGF0aWMgYm9vbCBQYXJzZUtleVBhcmFtcyhjb25zdCBzdGQ6OnN0cmluZyYg
cGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBrZXksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOwotCiAgIGVudW0gU3RhdGUgewog
ICAgIFNUX0lOSVQsICAgICAgICAgICAgICAgICAgICAvLyBTUlRQIGZpbHRlciB1bnVzZWQuCiAg
ICAgU1RfU0VOVE9GRkVSLCAgICAgICAgICAgICAgIC8vIE9mZmVyIHdpdGggU1JUUCBwYXJhbWV0
ZXJzIHNlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9zcnRwc2Vzc2lvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3NydHBzZXNzaW9uLmNjCmluZGV4IGE1ZmRhODg5N2ZlYjlkNzI2Mjk1
ZDVlNTM3OGRlNDU2ZmNmMGI1MzcuLmFhZGQ0NzExYTUwM2UxZTc0NzMzZjNmODQ2MjVlMGE4MTFk
ODJmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3NydHBzZXNzaW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3NydHBzZXNzaW9uLmNjCkBAIC0xMzgsNyArMTM4LDE1IEBAIGJvb2wg
U3J0cFNlc3Npb246OlVucHJvdGVjdFJ0cCh2b2lkKiBwLCBpbnQgaW5fbGVuLCBpbnQqIG91dF9s
ZW4pIHsKICAgKm91dF9sZW4gPSBpbl9sZW47CiAgIGludCBlcnIgPSBzcnRwX3VucHJvdGVjdChz
ZXNzaW9uXywgcCwgb3V0X2xlbik7CiAgIGlmIChlcnIgIT0gc3J0cF9lcnJfc3RhdHVzX29rKSB7
Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHVucHJvdGVjdCBTUlRQIHBh
Y2tldCwgZXJyPSIgPDwgZXJyOworICAgIC8vIExpbWl0IHRoZSBlcnJvciBsb2dnaW5nIHRvIGF2
b2lkIGV4Y2Vzc2l2ZSBsb2dzIHdoZW4gdGhlcmUgYXJlIGxvdHMgb2YKKyAgICAvLyBiYWQgcGFj
a2V0cy4KKyAgICBjb25zdCBpbnQga0ZhaWx1cmVMb2dUaHJvdHRsZUNvdW50ID0gMTAwOworICAg
IGlmIChkZWNyeXB0aW9uX2ZhaWx1cmVfY291bnRfICUga0ZhaWx1cmVMb2dUaHJvdHRsZUNvdW50
ID09IDApIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byB1bnByb3Rl
Y3QgU1JUUCBwYWNrZXQsIGVycj0iIDw8IGVycgorICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAiLCBwcmV2aW91cyBmYWlsdXJlIGNvdW50OiAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8IGRlY3J5cHRpb25fZmFpbHVyZV9jb3VudF87CisgICAgfQorICAgICsrZGVjcnlwdGlvbl9m
YWlsdXJlX2NvdW50XzsKICAgICBSVENfSElTVE9HUkFNX0VOVU1FUkFUSU9OKCJXZWJSVEMuUGVl
ckNvbm5lY3Rpb24uU3J0cFVucHJvdGVjdEVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGludD4oZXJyKSwga1NydHBFcnJvckNvZGVCb3VuZGFyeSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvc3J0cHNlc3Npb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBzZXNzaW9uLmgKaW5kZXggYzNhMDFiZDEzOWJiMGE1
MzZjYmY4ZDk3NzRjNGUyYmZhN2U3NjE5My4uY2UwNWNlNmQ3MjU4NjIyYzg0OTczYjJmNzcxZGRj
NmJiMGYzZDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvc3J0cHNlc3Npb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwc2Vzc2lvbi5oCkBAIC0xMjIsNiArMTIyLDcgQEAgY2xh
c3MgU3J0cFNlc3Npb24gewogICBpbnQgbGFzdF9zZW5kX3NlcV9udW1fID0gLTE7CiAgIGJvb2wg
ZXh0ZXJuYWxfYXV0aF9hY3RpdmVfID0gZmFsc2U7CiAgIGJvb2wgZXh0ZXJuYWxfYXV0aF9lbmFi
bGVkXyA9IGZhbHNlOworICBpbnQgZGVjcnlwdGlvbl9mYWlsdXJlX2NvdW50XyA9IDA7CiAgIFJU
Q19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oU3J0cFNlc3Npb24pOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHRyYW5z
cG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Ny
dHB0cmFuc3BvcnQuY2MKaW5kZXggNmZkOGJlMzdjMjQyNDgxYjljOTc4OTkzMGJlNDNjZGRhMTQ3
MGYzYi4uMGNmNDEwNjIwM2U2MzUxNTBkZTdmZTg5OGZjNGE5MTc1NjhkM2UzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHRyYW5z
cG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9zcnRwdHJhbnNwb3J0LmNjCkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBTcnRwVHJhbnNwb3J0
OjpTZW5kUnRjcFBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCiB9CiAKIHZv
aWQgU3J0cFRyYW5zcG9ydDo6T25SdHBQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVm
ZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgaWYgKCFJc1Ny
dHBBY3RpdmUoKSkgewogICAgIFJUQ19MT0coTFNfV0FSTklORykKICAgICAgICAgPDwgIkluYWN0
aXZlIFNSVFAgdHJhbnNwb3J0IHJlY2VpdmVkIGFuIFJUUCBwYWNrZXQuIERyb3AgaXQuIjsKQEAg
LTIwNywxNiArMjA3LDI1IEBAIHZvaWQgU3J0cFRyYW5zcG9ydDo6T25SdHBQYWNrZXRSZWNlaXZl
ZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCiAgICAgdWludDMyX3Qgc3NyYyA9IDA7
CiAgICAgY3JpY2tldDo6R2V0UnRwU2VxTnVtKGRhdGEsIGxlbiwgJnNlcV9udW0pOwogICAgIGNy
aWNrZXQ6OkdldFJ0cFNzcmMoZGF0YSwgbGVuLCAmc3NyYyk7Ci0gICAgUlRDX0xPRyhMU19FUlJP
UikgPDwgIkZhaWxlZCB0byB1bnByb3RlY3QgUlRQIHBhY2tldDogc2l6ZT0iIDw8IGxlbgotICAg
ICAgICAgICAgICAgICAgICAgIDw8ICIsIHNlcW51bT0iIDw8IHNlcV9udW0gPDwgIiwgU1NSQz0i
IDw8IHNzcmM7CisKKyAgICAvLyBMaW1pdCB0aGUgZXJyb3IgbG9nZ2luZyB0byBhdm9pZCBleGNl
c3NpdmUgbG9ncyB3aGVuIHRoZXJlIGFyZSBsb3RzIG9mCisgICAgLy8gYmFkIHBhY2tldHMuCisg
ICAgY29uc3QgaW50IGtGYWlsdXJlTG9nVGhyb3R0bGVDb3VudCA9IDEwMDsKKyAgICBpZiAoZGVj
cnlwdGlvbl9mYWlsdXJlX2NvdW50XyAlIGtGYWlsdXJlTG9nVGhyb3R0bGVDb3VudCA9PSAwKSB7
CisgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHVucHJvdGVjdCBSVFAgcGFj
a2V0OiBzaXplPSIgPDwgbGVuCisgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBzZXFudW09
IiA8PCBzZXFfbnVtIDw8ICIsIFNTUkM9IiA8PCBzc3JjCisgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiLCBwcmV2aW91cyBmYWlsdXJlIGNvdW50OiAiCisgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBkZWNyeXB0aW9uX2ZhaWx1cmVfY291bnRfOworICAgIH0KKyAgICArK2RlY3J5cHRpb25f
ZmFpbHVyZV9jb3VudF87CiAgICAgcmV0dXJuOwogICB9CiAgIHBhY2tldC0+U2V0U2l6ZShsZW4p
OwotICBEZW11eFBhY2tldChwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgRGVtdXhQYWNrZXQocGFj
a2V0LCBwYWNrZXRfdGltZV91cyk7CiB9CiAKIHZvaWQgU3J0cFRyYW5zcG9ydDo6T25SdGNwUGFj
a2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgaWYgKCFJc1NydHBBY3RpdmUoKSkgewogICAgIFJUQ19M
T0coTFNfV0FSTklORykKICAgICAgICAgPDwgIkluYWN0aXZlIFNSVFAgdHJhbnNwb3J0IHJlY2Vp
dmVkIGFuIFJUQ1AgcGFja2V0LiBEcm9wIGl0LiI7CkBAIC0yMzMsNyArMjQyLDcgQEAgdm9pZCBT
cnRwVHJhbnNwb3J0OjpPblJ0Y3BQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVy
KiBwYWNrZXQsCiAgICAgcmV0dXJuOwogICB9CiAgIHBhY2tldC0+U2V0U2l6ZShsZW4pOwotICBT
aWduYWxSdGNwUGFja2V0UmVjZWl2ZWQocGFja2V0LCBwYWNrZXRfdGltZSk7CisgIFNpZ25hbFJ0
Y3BQYWNrZXRSZWNlaXZlZChwYWNrZXQsIHBhY2tldF90aW1lX3VzKTsKIH0KIAogdm9pZCBTcnRw
VHJhbnNwb3J0OjpPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwdHJhbnNwb3J0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwdHJhbnNwb3J0LmgK
aW5kZXggMTk4MDI0ZjVhNTRjYTRkOTQxNDU3NTA4ODM4NGI0NmU5OGFkOTk1ZC4uYzYyMzU5Yjk0
NGQ0ODcyMzk5MGZhMDA1MDM5ZjFhM2RjMzQyMWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHRyYW5zcG9ydC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHB0cmFuc3BvcnQu
aApAQCAtMTEzLDkgKzExMyw5IEBAIGNsYXNzIFNydHBUcmFuc3BvcnQgOiBwdWJsaWMgUnRwVHJh
bnNwb3J0IHsKICAgdm9pZCBDcmVhdGVTcnRwU2Vzc2lvbnMoKTsKIAogICB2b2lkIE9uUnRwUGFj
a2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgb3ZlcnJp
ZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSBv
dmVycmlkZTsKICAgdm9pZCBPblJ0Y3BQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVm
ZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNr
ZXRUaW1lJiBwYWNrZXRfdGltZSkgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgb3ZlcnJpZGU7CiAgIHZvaWQgT25OZXR3b3JrUm91
dGVDaGFuZ2VkKAogICAgICAgYWJzbDo6b3B0aW9uYWw8cnRjOjpOZXR3b3JrUm91dGU+IG5ldHdv
cmtfcm91dGUpIG92ZXJyaWRlOwogCkBAIC0xNjAsNiArMTYwLDggQEAgY2xhc3MgU3J0cFRyYW5z
cG9ydCA6IHB1YmxpYyBSdHBUcmFuc3BvcnQgewogICBib29sIGV4dGVybmFsX2F1dGhfZW5hYmxl
ZF8gPSBmYWxzZTsKIAogICBpbnQgcnRwX2Fic19zZW5kdGltZV9leHRuX2lkXyA9IC0xOworCisg
IGludCBkZWNyeXB0aW9uX2ZhaWx1cmVfY291bnRfID0gMDsKIH07CiAKIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3N0YXRzY29sbGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvc3RhdHNjb2xsZWN0b3IuY2MKaW5kZXggMjNhNDQ5MzA4YzMxN2U5
MTExMGNhZDg0MDQwMGYyZGIzNWQ3ODEyMC4uYTFkNTJkYjA0ZTkyZGU4ZDQ1N2M5M2EwNjg5YTg1
MjIxYWNkNzE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvc3RhdHNjb2xsZWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3RhdHNjb2xsZWN0b3IuY2MKQEAgLTc4Myw4ICs3ODMs
OCBAQCB2b2lkIFN0YXRzQ29sbGVjdG9yOjpFeHRyYWN0U2Vzc2lvbkluZm8oKSB7CiAgICAgU3Rh
dHNSZXBvcnQ6OklkIGxvY2FsX2NlcnRfcmVwb3J0X2lkLCByZW1vdGVfY2VydF9yZXBvcnRfaWQ7
CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRl
OwogICAgIGlmIChwY18tPkdldExvY2FsQ2VydGlmaWNhdGUodHJhbnNwb3J0X25hbWUsICZjZXJ0
aWZpY2F0ZSkpIHsKLSAgICAgIFN0YXRzUmVwb3J0KiByID0KLSAgICAgICAgICBBZGRDZXJ0aWZp
Y2F0ZVJlcG9ydHMoY2VydGlmaWNhdGUtPnNzbF9jZXJ0X2NoYWluKCkuR2V0U3RhdHMoKSk7Cisg
ICAgICBTdGF0c1JlcG9ydCogciA9IEFkZENlcnRpZmljYXRlUmVwb3J0cygKKyAgICAgICAgICBj
ZXJ0aWZpY2F0ZS0+R2V0U1NMQ2VydGlmaWNhdGVDaGFpbigpLkdldFN0YXRzKCkpOwogICAgICAg
aWYgKHIpCiAgICAgICAgIGxvY2FsX2NlcnRfcmVwb3J0X2lkID0gci0+aWQoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9z
dGF0c2NvbGxlY3Rvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3N0YXRzY29sbGVjdG9yX3VuaXR0ZXN0LmNjCmluZGV4IGZhNGQzZGI4
MWJkN2M1NzZmNzVjZDE5NzcyOTRlMzZkZGYyNTFmODkuLjUzZWIyZWFhNWVhYmE0Njc3MjA1YmQz
YTk0MTZhMzQyMGE2NzY3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3N0YXRzY29sbGVjdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3N0YXRzY29sbGVjdG9yX3Vu
aXR0ZXN0LmNjCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAicGMvdGVzdC9mYWtldmlkZW90
cmFja3NvdXJjZS5oIgogI2luY2x1ZGUgInBjL3ZpZGVvdHJhY2suaCIKICNpbmNsdWRlICJydGNf
YmFzZS9mYWtlc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0L2Jhc2U2NC5oIgogI2lu
Y2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIApAQCAtNTYsMTQgKzU3LDYgQEAgY2xhc3MgRmFrZUF1ZGlv
UHJvY2Vzc29yIDogcHVibGljIEF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNlIHsKICAgfkZha2VBdWRp
b1Byb2Nlc3NvcigpIHt9CiAKICBwcml2YXRlOgotICB2b2lkIEdldFN0YXRzKEF1ZGlvUHJvY2Vz
c29ySW50ZXJmYWNlOjpBdWRpb1Byb2Nlc3NvclN0YXRzKiBzdGF0cykgb3ZlcnJpZGUgewotICAg
IHN0YXRzLT50eXBpbmdfbm9pc2VfZGV0ZWN0ZWQgPSB0cnVlOwotICAgIHN0YXRzLT5lY2hvX3Jl
dHVybl9sb3NzID0gMjsKLSAgICBzdGF0cy0+ZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudCA9
IDM7Ci0gICAgc3RhdHMtPmVjaG9fZGVsYXlfbWVkaWFuX21zID0gNDsKLSAgICBzdGF0cy0+ZWNo
b19kZWxheV9zdGRfbXMgPSA2OwotICB9Ci0KICAgQXVkaW9Qcm9jZXNzb3JJbnRlcmZhY2U6OkF1
ZGlvUHJvY2Vzc29yU3RhdGlzdGljcyBHZXRTdGF0cygKICAgICAgIGJvb2wgaGFzX3JlY3Zfc3Ry
ZWFtcykgb3ZlcnJpZGUgewogICAgIEF1ZGlvUHJvY2Vzc29yU3RhdGlzdGljcyBzdGF0czsKQEAg
LTEwNywxNCArMTAwLDYgQEAgY2xhc3MgRmFrZUF1ZGlvUHJvY2Vzc29yV2l0aEluaXRWYWx1ZSA6
IHB1YmxpYyBBdWRpb1Byb2Nlc3NvckludGVyZmFjZSB7CiAgIH5GYWtlQXVkaW9Qcm9jZXNzb3JX
aXRoSW5pdFZhbHVlKCkge30KIAogIHByaXZhdGU6Ci0gIHZvaWQgR2V0U3RhdHMoQXVkaW9Qcm9j
ZXNzb3JJbnRlcmZhY2U6OkF1ZGlvUHJvY2Vzc29yU3RhdHMqIHN0YXRzKSBvdmVycmlkZSB7Ci0g
ICAgc3RhdHMtPnR5cGluZ19ub2lzZV9kZXRlY3RlZCA9IGZhbHNlOwotICAgIHN0YXRzLT5lY2hv
X3JldHVybl9sb3NzID0gLTEwMDsKLSAgICBzdGF0cy0+ZWNob19yZXR1cm5fbG9zc19lbmhhbmNl
bWVudCA9IC0xMDA7Ci0gICAgc3RhdHMtPmVjaG9fZGVsYXlfbWVkaWFuX21zID0gLTE7Ci0gICAg
c3RhdHMtPmVjaG9fZGVsYXlfc3RkX21zID0gLTE7Ci0gIH0KLQogICBBdWRpb1Byb2Nlc3Nvcklu
dGVyZmFjZTo6QXVkaW9Qcm9jZXNzb3JTdGF0aXN0aWNzIEdldFN0YXRzKAogICAgICAgYm9vbCAv
Kmhhc19yZWN2X3N0cmVhbXMqLykgb3ZlcnJpZGUgewogICAgIEF1ZGlvUHJvY2Vzc29yU3RhdGlz
dGljcyBzdGF0czsKQEAgLTQ5NCwxMCArNDc5LDEwIEBAIHZvaWQgSW5pdFZvaWNlU2VuZGVySW5m
byhjcmlja2V0OjpWb2ljZVNlbmRlckluZm8qIHZvaWNlX3NlbmRlcl9pbmZvKSB7CiAgIHZvaWNl
X3NlbmRlcl9pbmZvLT5wYWNrZXRzX2xvc3QgPSAxMDU7CiAgIHZvaWNlX3NlbmRlcl9pbmZvLT5l
eHRfc2VxbnVtID0gMTA2OwogICB2b2ljZV9zZW5kZXJfaW5mby0+YXVkaW9fbGV2ZWwgPSAxMDc7
Ci0gIHZvaWNlX3NlbmRlcl9pbmZvLT5lY2hvX3JldHVybl9sb3NzID0gMTA4OwotICB2b2ljZV9z
ZW5kZXJfaW5mby0+ZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudCA9IDEwOTsKLSAgdm9pY2Vf
c2VuZGVyX2luZm8tPmVjaG9fZGVsYXlfbWVkaWFuX21zID0gMTEwOwotICB2b2ljZV9zZW5kZXJf
aW5mby0+ZWNob19kZWxheV9zdGRfbXMgPSAxMTE7CisgIHZvaWNlX3NlbmRlcl9pbmZvLT5hcG1f
c3RhdGlzdGljcy5lY2hvX3JldHVybl9sb3NzID0gMTA4OworICB2b2ljZV9zZW5kZXJfaW5mby0+
YXBtX3N0YXRpc3RpY3MuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudCA9IDEwOTsKKyAgdm9p
Y2Vfc2VuZGVyX2luZm8tPmFwbV9zdGF0aXN0aWNzLmRlbGF5X21lZGlhbl9tcyA9IDExMDsKKyAg
dm9pY2Vfc2VuZGVyX2luZm8tPmFwbV9zdGF0aXN0aWNzLmRlbGF5X3N0YW5kYXJkX2RldmlhdGlv
bl9tcyA9IDExMTsKICAgdm9pY2Vfc2VuZGVyX2luZm8tPnR5cGluZ19ub2lzZV9kZXRlY3RlZCA9
IGZhbHNlOwogICB2b2ljZV9zZW5kZXJfaW5mby0+YW5hX3N0YXRpc3RpY3MuYml0cmF0ZV9hY3Rp
b25fY291bnRlciA9IDExMjsKICAgdm9pY2Vfc2VuZGVyX2luZm8tPmFuYV9zdGF0aXN0aWNzLmNo
YW5uZWxfYWN0aW9uX2NvdW50ZXIgPSAxMTM7CkBAIC02NDEsNyArNjI2LDcgQEAgY2xhc3MgU3Rh
dHNDb2xsZWN0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHJ0Yzo6U1NMSWRlbnRpdHk+KGxvY2FsX2lkZW50aXR5LkdldFJlZmVyZW5j
ZSgpKSkpOwogICAgIHBjLT5TZXRMb2NhbENlcnRpZmljYXRlKGtUcmFuc3BvcnROYW1lLCBsb2Nh
bF9jZXJ0aWZpY2F0ZSk7CiAgICAgcGMtPlNldFJlbW90ZUNlcnRDaGFpbihrVHJhbnNwb3J0TmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9pZGVudGl0eS5jZXJ0X2NoYWlu
KCkuVW5pcXVlQ29weSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9pZGVu
dGl0eS5jZXJ0X2NoYWluKCkuQ2xvbmUoKSk7CiAKICAgICBzdGF0cy0+VXBkYXRlU3RhdHMoUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtTdGF0c091dHB1dExldmVsU3RhbmRhcmQpOwogCkBAIC0x
NTY3LDcgKzE1NTIsNyBAQCBURVNUX1AoU3RhdHNDb2xsZWN0b3JUcmFja1Rlc3QsIEdldFN0YXRz
QWZ0ZXJSZW1vdmVBdWRpb1N0cmVhbSkgewogCiAgIC8vIFZlcmlmaWVzIHRoZSB2YWx1ZXMgaW4g
dGhlIHRyYWNrIHJlcG9ydCwgbm8gdmFsdWUgd2lsbCBiZSBjaGFuZ2VkIGJ5IHRoZQogICAvLyBB
dWRpb1RyYWNrSW50ZXJmYWNlOjpHZXRTaWduYWxWYWx1ZSgpIGFuZAotICAvLyBBdWRpb1Byb2Nl
c3NvckludGVyZmFjZTo6QXVkaW9Qcm9jZXNzb3JTdGF0czo6R2V0U3RhdHMoKTsKKyAgLy8gQXVk
aW9Qcm9jZXNzb3JJbnRlcmZhY2U6OkdldFN0YXRzKCk7CiAgIFZlcmlmeVZvaWNlU2VuZGVySW5m
b1JlcG9ydChyZXBvcnQsIHZvaWNlX3NlbmRlcl9pbmZvKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9mYWtlcGVlcmNv
bm5lY3Rpb25mb3JzdGF0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvdGVzdC9mYWtlcGVlcmNvbm5lY3Rpb25mb3JzdGF0cy5oCmluZGV4IDY0MmZhMDEx
ZWI0ZTg4MDk2YzgyNDllMjZjMjBhNTcyZmU5ZTc3ZDIuLmFmODY2MzllY2E0ZDU5ODQ5ZjZkNWVl
ODlhNDUxZTRiNjQwMGIyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvZmFrZXBlZXJjb25uZWN0aW9uZm9yc3RhdHMuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L2Zha2Vw
ZWVyY29ubmVjdGlvbmZvcnN0YXRzLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFzcyBGYWtlUGVl
ckNvbm5lY3Rpb25Gb3JTdGF0cyA6IHB1YmxpYyBGYWtlUGVlckNvbm5lY3Rpb25CYXNlIHsKICAg
ICB2b2ljZV9jaGFubmVsXyA9IGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OlZvaWNlQ2hhbm5l
bD4oCiAgICAgICAgIHdvcmtlcl90aHJlYWRfLCBuZXR3b3JrX3RocmVhZF8sIHNpZ25hbGluZ190
aHJlYWRfLCBudWxscHRyLAogICAgICAgICBzdGQ6Om1vdmUodm9pY2VfbWVkaWFfY2hhbm5lbCks
IG1pZCwga0RlZmF1bHRTcnRwUmVxdWlyZWQsCi0gICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucygp
KTsKKyAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpOwogICAgIHZvaWNlX2NoYW5uZWxf
LT5zZXRfdHJhbnNwb3J0X25hbWVfZm9yX3Rlc3RpbmcodHJhbnNwb3J0X25hbWUpOwogICAgIEdl
dE9yQ3JlYXRlRmlyc3RUcmFuc2NlaXZlck9mVHlwZShjcmlja2V0OjpNRURJQV9UWVBFX0FVRElP
KQogICAgICAgICAtPmludGVybmFsKCkKQEAgLTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBGYWtlUGVl
ckNvbm5lY3Rpb25Gb3JTdGF0cyA6IHB1YmxpYyBGYWtlUGVlckNvbm5lY3Rpb25CYXNlIHsKICAg
ICB2aWRlb19jaGFubmVsXyA9IGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OlZpZGVvQ2hhbm5l
bD4oCiAgICAgICAgIHdvcmtlcl90aHJlYWRfLCBuZXR3b3JrX3RocmVhZF8sIHNpZ25hbGluZ190
aHJlYWRfLAogICAgICAgICBzdGQ6Om1vdmUodmlkZW9fbWVkaWFfY2hhbm5lbCksIG1pZCwga0Rl
ZmF1bHRTcnRwUmVxdWlyZWQsCi0gICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKKyAgICAg
ICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpOwogICAgIHZpZGVvX2NoYW5uZWxfLT5zZXRfdHJh
bnNwb3J0X25hbWVfZm9yX3Rlc3RpbmcodHJhbnNwb3J0X25hbWUpOwogICAgIEdldE9yQ3JlYXRl
Rmlyc3RUcmFuc2NlaXZlck9mVHlwZShjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPKQogICAgICAg
ICAtPmludGVybmFsKCkKQEAgLTMxOSw3ICszMTksNyBAQCBjbGFzcyBGYWtlUGVlckNvbm5lY3Rp
b25Gb3JTdGF0cyA6IHB1YmxpYyBGYWtlUGVlckNvbm5lY3Rpb25CYXNlIHsKICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSkgb3ZlcnJpZGUgewogICAgIGF1dG8gaXQgPSBy
ZW1vdGVfY2VydF9jaGFpbnNfYnlfdHJhbnNwb3J0Xy5maW5kKHRyYW5zcG9ydF9uYW1lKTsKICAg
ICBpZiAoaXQgIT0gcmVtb3RlX2NlcnRfY2hhaW5zX2J5X3RyYW5zcG9ydF8uZW5kKCkpIHsKLSAg
ICAgIHJldHVybiBpdC0+c2Vjb25kLT5VbmlxdWVDb3B5KCk7CisgICAgICByZXR1cm4gaXQtPnNl
Y29uZC0+Q2xvbmUoKTsKICAgICB9IGVsc2UgewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvdGVzdC9tb2NrX2NoYW5uZWxpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja19jaGFubmVsaW50ZXJmYWNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGMzMmE4ZmI4ZDk3OWMwNWQ5OTAwNGNkMWQ0NGM0MmJiZjRlZGQ2MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rl
c3QvbW9ja19jaGFubmVsaW50ZXJmYWNlLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2lmbmRlZiBQQ19URVNUX01PQ0tfQ0hBTk5FTElOVEVSRkFDRV9IXworI2RlZmlu
ZSBQQ19URVNUX01PQ0tfQ0hBTk5FTElOVEVSRkFDRV9IXworCisjaW5jbHVkZSA8c3RyaW5nPgor
CisjaW5jbHVkZSAicGMvY2hhbm5lbGludGVyZmFjZS5oIgorI2luY2x1ZGUgInRlc3QvZ21vY2su
aCIKKworbmFtZXNwYWNlIGNyaWNrZXQgeworCisvLyBNb2NrIGNsYXNzIGZvciBCYXNlQ2hhbm5l
bC4KKy8vIFVzZSB0aGlzIGNsYXNzIGluIHVuaXQgdGVzdHMgdG8gYXZvaWQgZGVwZW5kZWN5IG9u
IGEgc3BlY2lmaWMKKy8vIGltcGxlbWVudGF0aW9uIG9mIEJhc2VDaGFubmVsLgorY2xhc3MgTW9j
a0NoYW5uZWxJbnRlcmZhY2UgOiBwdWJsaWMgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSB7Cisg
cHVibGljOgorICBNT0NLX0NPTlNUX01FVEhPRDAobWVkaWFfdHlwZSwgY3JpY2tldDo6TWVkaWFU
eXBlKCkpOworICBNT0NLX0NPTlNUX01FVEhPRDAobWVkaWFfY2hhbm5lbCwgTWVkaWFDaGFubmVs
KigpKTsKKyAgTU9DS19DT05TVF9NRVRIT0QwKHRyYW5zcG9ydF9uYW1lLCBjb25zdCBzdGQ6OnN0
cmluZyYoKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChjb250ZW50X25hbWUsIGNvbnN0IHN0ZDo6
c3RyaW5nJigpKTsKKyAgTU9DS19DT05TVF9NRVRIT0QwKGVuYWJsZWQsIGJvb2woKSk7CisgIE1P
Q0tfTUVUSE9EMShFbmFibGUsIGJvb2woYm9vbCkpOworICBNT0NLX01FVEhPRDAoU2lnbmFsRmly
c3RQYWNrZXRSZWNlaXZlZCwKKyAgICAgICAgICAgICAgIHNpZ3Nsb3Q6OnNpZ25hbDE8Q2hhbm5l
bEludGVyZmFjZSo+JigpKTsKKyAgTU9DS19NRVRIT0QzKFNldExvY2FsQ29udGVudCwKKyAgICAg
ICAgICAgICAgIGJvb2woY29uc3QgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qLAor
ICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlNkcFR5cGUsCisgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKikpOworICBNT0NLX01FVEhPRDMoU2V0UmVtb3RlQ29udGVudCwKKyAgICAg
ICAgICAgICAgIGJvb2woY29uc3QgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qLAor
ICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlNkcFR5cGUsCisgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKikpOworICBNT0NLX01FVEhPRDEoU2V0UnRwVHJhbnNwb3J0LCBib29sKHdl
YnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqKSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY3Jp
Y2tldAorCisjZW5kaWYgIC8vIFBDX1RFU1RfTU9DS19DSEFOTkVMSU5URVJGQUNFX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0
L21vY2tfcnRwcmVjZWl2ZXJpbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrX3J0cHJlY2VpdmVyaW50ZXJuYWwuaAppbmRleCA4
NTBkNWE5ZjhlNTk5MGQwMTBmZDEzNWM5OGUwNTUxMDFiY2NjYTFhLi44NGIwZDcxNzY2Yjk3MDVl
NTViNWViNDA4ZGJiODFjODI0NTU2NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2tfcnRwcmVjZWl2ZXJpbnRlcm5hbC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3Qv
bW9ja19ydHByZWNlaXZlcmludGVybmFsLmgKQEAgLTQxLDggKzQxLDcgQEAgY2xhc3MgTW9ja1J0
cFJlY2VpdmVySW50ZXJuYWwgOiBwdWJsaWMgUnRwUmVjZWl2ZXJJbnRlcm5hbCB7CiAKICAgLy8g
UnRwUmVjZWl2ZXJJbnRlcm5hbCBtZXRob2RzLgogICBNT0NLX01FVEhPRDAoU3RvcCwgdm9pZCgp
KTsKLSAgTU9DS19NRVRIT0QxKFNldFZvaWNlTWVkaWFDaGFubmVsLCB2b2lkKGNyaWNrZXQ6OlZv
aWNlTWVkaWFDaGFubmVsKikpOwotICBNT0NLX01FVEhPRDEoU2V0VmlkZW9NZWRpYUNoYW5uZWws
IHZvaWQoY3JpY2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqKSk7CisgIE1PQ0tfTUVUSE9EMShTZXRN
ZWRpYUNoYW5uZWwsIHZvaWQoY3JpY2tldDo6TWVkaWFDaGFubmVsKikpOwogICBNT0NLX01FVEhP
RDEoU2V0dXBNZWRpYUNoYW5uZWwsIHZvaWQodWludDMyX3QpKTsKICAgTU9DS19DT05TVF9NRVRI
T0QwKHNzcmMsIHVpbnQzMl90KCkpOwogICBNT0NLX01FVEhPRDAoTm90aWZ5Rmlyc3RQYWNrZXRS
ZWNlaXZlZCwgdm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja19ydHBzZW5kZXJpbnRlcm5hbC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrX3J0cHNlbmRl
cmludGVybmFsLmgKaW5kZXggNWUxNGY3YWQ3ZGU2MjVjNDhiMmE4ZGUyNTgyNjYyZjQ2NWIwODI2
OS4uZGQ0ZjY5NDk3ZGY0MTI5MTYxMGMxNTdhYzM3MGRkOWQzYzBhNzVhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrX3J0
cHNlbmRlcmludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvdGVzdC9tb2NrX3J0cHNlbmRlcmludGVybmFsLmgKQEAgLTM5LDggKzM5LDcg
QEAgY2xhc3MgTW9ja1J0cFNlbmRlckludGVybmFsIDogcHVibGljIFJ0cFNlbmRlckludGVybmFs
IHsKICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRv
ckludGVyZmFjZT4oKSk7CiAKICAgLy8gUnRwU2VuZGVySW50ZXJuYWwgbWV0aG9kcy4KLSAgTU9D
S19NRVRIT0QxKFNldFZvaWNlTWVkaWFDaGFubmVsLCB2b2lkKGNyaWNrZXQ6OlZvaWNlTWVkaWFD
aGFubmVsKikpOwotICBNT0NLX01FVEhPRDEoU2V0VmlkZW9NZWRpYUNoYW5uZWwsIHZvaWQoY3Jp
Y2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqKSk7CisgIE1PQ0tfTUVUSE9EMShTZXRNZWRpYUNoYW5u
ZWwsIHZvaWQoY3JpY2tldDo6TWVkaWFDaGFubmVsKikpOwogICBNT0NLX01FVEhPRDEoU2V0U3Ny
Yywgdm9pZCh1aW50MzJfdCkpOwogICBNT0NLX01FVEhPRDEoc2V0X3N0cmVhbV9pZHMsIHZvaWQo
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JikpOwogICBNT0NLX01FVEhPRDEoc2V0X2lu
aXRfc2VuZF9lbmNvZGluZ3MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2twZWVyY29ubmVjdGlvbm9ic2VydmVycy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrcGVl
cmNvbm5lY3Rpb25vYnNlcnZlcnMuaAppbmRleCA2ZjVlOWJjNjY1MjU5ZTcxMGIzNjhjZGI0ZDZl
NTk5MDhjMDYyMGY4Li42MmMwYzk0MTVmNmM0MTgzYmVjZTEyNzg4NzBlMmIwNjdhZDQzOTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90
ZXN0L21vY2twZWVyY29ubmVjdGlvbm9ic2VydmVycy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja3BlZXJjb25uZWN0aW9ub2JzZXJ2
ZXJzLmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgTW9ja1BlZXJDb25uZWN0aW9uT2JzZXJ2ZXIg
OiBwdWJsaWMgUGVlckNvbm5lY3Rpb25PYnNlcnZlciB7CiAgIH0KICAgdm9pZCBPblNpZ25hbGlu
Z0NoYW5nZSgKICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpTaWduYWxpbmdTdGF0ZSBu
ZXdfc3RhdGUpIG92ZXJyaWRlIHsKKyAgICBSVENfRENIRUNLKHBjXyk7CiAgICAgUlRDX0RDSEVD
SyhwY18tPnNpZ25hbGluZ19zdGF0ZSgpID09IG5ld19zdGF0ZSk7CiAgICAgc3RhdGVfID0gbmV3
X3N0YXRlOwogICB9CkBAIC05Miw2ICs5Myw3IEBAIGNsYXNzIE1vY2tQZWVyQ29ubmVjdGlvbk9i
c2VydmVyIDogcHVibGljIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgewogCiAgIHZvaWQgT25JY2VD
b25uZWN0aW9uQ2hhbmdlKAogICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5l
Y3Rpb25TdGF0ZSBuZXdfc3RhdGUpIG92ZXJyaWRlIHsKKyAgICBSVENfRENIRUNLKHBjXyk7CiAg
ICAgUlRDX0RDSEVDSyhwY18tPmljZV9jb25uZWN0aW9uX3N0YXRlKCkgPT0gbmV3X3N0YXRlKTsK
ICAgICAvLyBXaGVuIElDRSBpcyBmaW5pc2hlZCwgdGhlIGNhbGxlciB3aWxsIGdldCB0byBhIGtJ
Y2VDb25uZWN0aW9uQ29tcGxldGVkCiAgICAgLy8gc3RhdGUsIGJlY2F1c2UgaXQgaGFzIHRoZSBJ
Q0UgY29udHJvbGxpbmcgcm9sZSwgd2hpbGUgdGhlIGNhbGxlZQpAQCAtMTA0LDEyICsxMDYsMTQg
QEAgY2xhc3MgTW9ja1BlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgOiBwdWJsaWMgUGVlckNvbm5lY3Rp
b25PYnNlcnZlciB7CiAgIH0KICAgdm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZSgKICAgICAgIFBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0ZSBuZXdfc3RhdGUpIG92ZXJy
aWRlIHsKKyAgICBSVENfRENIRUNLKHBjXyk7CiAgICAgUlRDX0RDSEVDSyhwY18tPmljZV9nYXRo
ZXJpbmdfc3RhdGUoKSA9PSBuZXdfc3RhdGUpOwogICAgIGljZV9nYXRoZXJpbmdfY29tcGxldGVf
ID0KICAgICAgICAgbmV3X3N0YXRlID09IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlR2F0
aGVyaW5nQ29tcGxldGU7CiAgICAgY2FsbGJhY2tfdHJpZ2dlcmVkXyA9IHRydWU7CiAgIH0KICAg
dm9pZCBPbkljZUNhbmRpZGF0ZShjb25zdCBJY2VDYW5kaWRhdGVJbnRlcmZhY2UqIGNhbmRpZGF0
ZSkgb3ZlcnJpZGUgeworICAgIFJUQ19EQ0hFQ0socGNfKTsKICAgICBSVENfRENIRUNLKFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjprSWNlR2F0aGVyaW5nTmV3ICE9CiAgICAgICAgICAgICAgICBw
Y18tPmljZV9nYXRoZXJpbmdfc3RhdGUoKSk7CiAgICAgY2FuZGlkYXRlc18ucHVzaF9iYWNrKGFi
c2w6Om1ha2VfdW5pcXVlPEpzZXBJY2VDYW5kaWRhdGU+KApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9wZWVyY29ubmVjdGlvbnRl
c3R3cmFwcGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvdGVzdC9wZWVyY29ubmVjdGlvbnRlc3R3cmFwcGVyLmNjCmluZGV4IDliZTE1OTYzNzNjNjgx
YWQ0MjBjNTY4OGQ4MGM1NjAwMzM3M2E3ZjQuLmExZGI5ZWQ5ZTZmMzBjM2UwNzI2OTU0OTRlMDhj
NWE2OGY5ZWIwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3Rlc3QvcGVlcmNvbm5lY3Rpb250ZXN0d3JhcHBlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L3BlZXJjb25uZWN0
aW9udGVzdHdyYXBwZXIuY2MKQEAgLTEyLDYgKzEyLDcgQEAKICNpbmNsdWRlIDx1dGlsaXR5Pgog
I2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25f
ZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNv
ZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9f
ZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2lu
Y2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgpAQCAtMjIsNiArMjMsNyBAQAogI2luY2x1ZGUgInBj
L3Rlc3QvbW9ja3BlZXJjb25uZWN0aW9ub2JzZXJ2ZXJzLmgiCiAjaW5jbHVkZSAicGMvdGVzdC9w
ZWVyY29ubmVjdGlvbnRlc3R3cmFwcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3RpbWV1dGlscy5oIgogCiB1c2luZyB3ZWJydGM6OkZha2VDb25zdHJhaW50czsKQEAgLTY0LDkg
KzY2LDIwIEBAIFBlZXJDb25uZWN0aW9uVGVzdFdyYXBwZXI6OlBlZXJDb25uZWN0aW9uVGVzdFdy
YXBwZXIoCiAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQpCiAgICAgOiBuYW1lXyhuYW1l
KSwKICAgICAgIG5ldHdvcmtfdGhyZWFkXyhuZXR3b3JrX3RocmVhZCksCi0gICAgICB3b3JrZXJf
dGhyZWFkXyh3b3JrZXJfdGhyZWFkKSB7fQorICAgICAgd29ya2VyX3RocmVhZF8od29ya2VyX3Ro
cmVhZCkgeworICBwY190aHJlYWRfY2hlY2tlcl8uRGV0YWNoRnJvbVRocmVhZCgpOworfQogCi1Q
ZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyOjp+UGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcigpIHt9
CitQZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyOjp+UGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcigp
IHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJnBjX3RocmVhZF9jaGVja2VyXyk7CisgIC8vIEVpdGhl
ciBuZXR3b3JrX3RocmVhZCBvciB3b3JrZXJfdGhyZWFkIG1pZ2h0IGJlIGFjdGl2ZSBhdCB0aGlz
IHBvaW50LgorICAvLyBSZWx5aW5nIG9uIH5QZWVyQ29ubmVjdGlvbiB0byBwcm9wZXJseSB3YWl0
IGZvciB0aGVtIGRvZXNuJ3Qgd29yaywKKyAgLy8gYXMgYSB2cHRyIHJhY2UgbWlnaHQgb2NjdXIg
KGJlZm9yZSB3ZSBlbnRlciB0aGUgZGVzdHJ1Y3Rpb24gYm9keSkuCisgIC8vIFNlZTogYnVncy53
ZWJydGMub3JnLzk4NDcKKyAgaWYgKHBjKCkpIHsKKyAgICBwYygpLT5DbG9zZSgpOworICB9Cit9
CiAKIGJvb2wgUGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcjo6Q3JlYXRlUGMoCiAgICAgY29uc3Qg
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYgY29uZmln
LApAQCAtNzUsNiArODgsOCBAQCBib29sIFBlZXJDb25uZWN0aW9uVGVzdFdyYXBwZXI6OkNyZWF0
ZVBjKAogICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6UG9ydEFsbG9jYXRvcj4gcG9ydF9hbGxv
Y2F0b3IoCiAgICAgICBuZXcgY3JpY2tldDo6RmFrZVBvcnRBbGxvY2F0b3IobmV0d29ya190aHJl
YWRfLCBudWxscHRyKSk7CiAKKyAgUlRDX0RDSEVDS19SVU5fT04oJnBjX3RocmVhZF9jaGVja2Vy
Xyk7CisKICAgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZV8gPSBGYWtlQXVkaW9DYXB0dXJlTW9k
dWxlOjpDcmVhdGUoKTsKICAgaWYgKGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGVfID09IE5VTEwp
IHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L3BlZXJjb25uZWN0aW9udGVzdHdyYXBwZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvcGVlcmNv
bm5lY3Rpb250ZXN0d3JhcHBlci5oCmluZGV4IDIxYmE4OWFjYmYwNzMwNTgzOWE1MWQ1MTk4ZmFk
NGRkODkxMTFmNTIuLmI2YTU3ZjM1ZDM4MjMzMTFiYTVmM2QzZDdmNjY0NmZmMDdkMjA4ODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rl
c3QvcGVlcmNvbm5lY3Rpb250ZXN0d3JhcHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvcGVlcmNvbm5lY3Rpb250ZXN0d3JhcHBlci5o
CkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAicGMvdGVzdC9mYWtlYXVkaW9jYXB0dXJlbW9k
dWxlLmgiCiAjaW5jbHVkZSAicGMvdGVzdC9mYWtldmlkZW90cmFja3JlbmRlcmVyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKIAogY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0V3Jh
cHBlcgogICAgIDogcHVibGljIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciwKQEAgLTEw
Niw2ICsxMDcsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyCiAgIHN0ZDo6c3Ry
aW5nIG5hbWVfOwogICBydGM6OlRocmVhZCogY29uc3QgbmV0d29ya190aHJlYWRfOwogICBydGM6
OlRocmVhZCogY29uc3Qgd29ya2VyX3RocmVhZF87CisgIHJ0Yzo6VGhyZWFkQ2hlY2tlciBwY190
aHJlYWRfY2hlY2tlcl87CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlPiBwZWVyX2Nvbm5lY3Rpb25fOwogICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+CiAgICAgICBwZWVyX2Nvbm5lY3Rp
b25fZmFjdG9yeV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy92aWRlb2NhcHR1cmVydHJhY2tzb3VyY2VfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy92aWRlb2NhcHR1cmVydHJh
Y2tzb3VyY2VfdW5pdHRlc3QuY2MKaW5kZXggZDJiOGUxNTc0Y2ViZDA4M2Q2MjM3MmRjMjQ4Y2U3
ZWM2NDhjZTg4Yy4uNjdiZWMzNDViNjk3YTRhNzI1YTMzMjQ0M2ZhNTBjM2M5NjFlMWVjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdmlk
ZW9jYXB0dXJlcnRyYWNrc291cmNlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3ZpZGVvY2FwdHVyZXJ0cmFja3NvdXJjZV91bml0
dGVzdC5jYwpAQCAtMTI2LDcgKzEyNiw3IEBAIGNsYXNzIFZpZGVvQ2FwdHVyZXJUcmFja1NvdXJj
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgIH0KIAogICB2b2lkIENhcHR1cmVTaW5n
bGVGcmFtZSgpIHsKLSAgICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgICAgcnRj
OjpFdmVudCBldmVudDsKICAgICB0YXNrX3F1ZXVlXy5Qb3N0VGFzayhbdGhpcywgJmV2ZW50XSgp
IHsKICAgICAgIEFTU0VSVF9UUlVFKGNhcHR1cmVyXy0+Q2FwdHVyZUZyYW1lKCkpOwogICAgICAg
ZXZlbnQuU2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy92aWRlb3RyYWNrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy92aWRlb3RyYWNrLmgKaW5kZXggZTY2OWUwODE0YzcyNTNlMGE4NzM3
NzRmODkzM2EzNDIxNmJiNTUwZC4uZjExOWRkODZkODNkZTY4MDZkNjNkMDcyYTdlYTNlMjk4ODI2
NDdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvdmlkZW90cmFjay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3ZpZGVvdHJhY2suaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgIm1l
ZGlhL2Jhc2UvdmlkZW9zb3VyY2ViYXNlLmgiCiAjaW5jbHVkZSAicGMvbWVkaWFzdHJlYW10cmFj
ay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy92aWRlb3RyYWNrc291cmNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy92aWRlb3RyYWNrc291cmNlLmgKaW5kZXggNTA0
ODhkZDJjNjAxMWQzMzZhYmU5YmJhMjc3ZTEwZjY0NjQ2N2U1My4uY2VkYjc1YjNjODhkZDczMGY2
Mzg3NTk1ZTFiMTZhMGE2MmFkYTk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdmlkZW90cmFja3NvdXJjZS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3ZpZGVvdHJhY2tzb3VyY2UuaApA
QCAtMTUsMTMgKzE1LDE0IEBACiAjaW5jbHVkZSAiYXBpL25vdGlmaWVyLmgiCiAjaW5jbHVkZSAi
YXBpL3ZpZGVvL3ZpZGVvX3NpbmtfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9t
ZWRpYWNoYW5uZWwuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCiAvLyBWaWRlb1RyYWNrU291cmNlIGlzIGEgY29udmVuaWVuY2UgYmFzZSBjbGFzcyBmb3Ig
aW1wbGVtZW50YXRpb25zIG9mCiAvLyBWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlLgotY2xhc3Mg
VmlkZW9UcmFja1NvdXJjZSA6IHB1YmxpYyBOb3RpZmllcjxWaWRlb1RyYWNrU291cmNlSW50ZXJm
YWNlPiB7CitjbGFzcyBSVENfRVhQT1JUIFZpZGVvVHJhY2tTb3VyY2UgOiBwdWJsaWMgTm90aWZp
ZXI8VmlkZW9UcmFja1NvdXJjZUludGVyZmFjZT4gewogIHB1YmxpYzoKICAgZXhwbGljaXQgVmlk
ZW9UcmFja1NvdXJjZShib29sIHJlbW90ZSk7CiAgIHZvaWQgU2V0U3RhdGUoU291cmNlU3RhdGUg
bmV3X3N0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcC5jYwppbmRleCA2NjViNGQ0MTFhMDUwYTk4NDMwZjI2
ZDRmNGZhYjM0N2YwYmE0N2E4Li4wY2Q2YmVjZWVmYTM3N2RmZmU3ZjkzNGI5ZTViOTY2MzUwNDZj
NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy93ZWJydGNzZHAuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvd2VicnRjc2RwLmNjCkBAIC0yMCwxMyArMjAsMTUgQEAKICNpbmNsdWRlIDxz
ZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CisjaW5jbHVk
ZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJhcGkvbWVkaWF0eXBl
cy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS9jYW5k
aWRhdGUuaCIKICNpbmNsdWRlICJhcGkvY3J5cHRvcGFyYW1zLmgiCiAjaW5jbHVkZSAiYXBpL2pz
ZXBpY2VjYW5kaWRhdGUuaCIKICNpbmNsdWRlICJhcGkvanNlcHNlc3Npb25kZXNjcmlwdGlvbi5o
IgorI2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgiCiAvLyBmb3IgUnRwRXh0ZW5zaW9uCiAjaW5j
bHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2NvZGVjLmgi
CkBAIC0xMTksNiArMTIxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIga0F0dHJpYnV0ZVJ0Y3BNdXhb
XSA9ICJydGNwLW11eCI7CiBzdGF0aWMgY29uc3QgY2hhciBrQXR0cmlidXRlUnRjcFJlZHVjZWRT
aXplW10gPSAicnRjcC1yc2l6ZSI7CiBzdGF0aWMgY29uc3QgY2hhciBrQXR0cmlidXRlU3NyY1td
ID0gInNzcmMiOwogc3RhdGljIGNvbnN0IGNoYXIga1NzcmNBdHRyaWJ1dGVDbmFtZVtdID0gImNu
YW1lIjsKK3N0YXRpYyBjb25zdCBjaGFyIGtBdHRyaWJ1dGVFeHRtYXBBbGxvd01peGVkW10gPSAi
ZXh0bWFwLWFsbG93LW1peGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIGtBdHRyaWJ1dGVFeHRtYXBb
XSA9ICJleHRtYXAiOwogLy8gZHJhZnQtYWx2ZXN0cmFuZC1tbXVzaWMtbXNpZC0wMQogLy8gYT1t
c2lkLXNlbWFudGljOiBXTVMKQEAgLTMzNCw5ICszMzcsMTAgQEAgc3RhdGljIGJvb2wgUGFyc2VJ
Y2VPcHRpb25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBsaW5lLAogc3RhdGljIGJvb2wgUGFyc2VFeHRt
YXAoY29uc3Qgc3RkOjpzdHJpbmcmIGxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICBSdHBF
eHRlbnNpb24qIGV4dG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFBhcnNlRXJyb3Iq
IGVycm9yKTsKLXN0YXRpYyBib29sIFBhcnNlRmluZ2VycHJpbnRBdHRyaWJ1dGUoY29uc3Qgc3Rk
OjpzdHJpbmcmIGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6U1NMRmluZ2VycHJpbnQqKiBmaW5nZXJwcmludCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2RwUGFyc2VFcnJvciogZXJyb3IpOworc3RhdGljIGJvb2wgUGFyc2VG
aW5nZXJwcmludEF0dHJpYnV0ZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbGluZSwKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4qIGZpbmdlcnByaW50LAorICAgIFNk
cFBhcnNlRXJyb3IqIGVycm9yKTsKIHN0YXRpYyBib29sIFBhcnNlRHRsc1NldHVwKGNvbnN0IHN0
ZDo6c3RyaW5nJiBsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6Q29u
bmVjdGlvblJvbGUqIHJvbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBQYXJzZUVy
cm9yKiBlcnJvcik7CkBAIC04NTIsNiArODU2LDEyIEBAIHN0ZDo6c3RyaW5nIFNkcFNlcmlhbGl6
ZShjb25zdCBKc2VwU2Vzc2lvbkRlc2NyaXB0aW9uJiBqZGVzYykgewogICAgIEFkZExpbmUoZ3Jv
dXBfbGluZSwgJm1lc3NhZ2UpOwogICB9CiAKKyAgLy8gTWl4ZWQgb25lLSBhbmQgdHdvLWJ5dGUg
aGVhZGVyIGV4dGVuc2lvbi4KKyAgaWYgKGRlc2MtPmV4dG1hcF9hbGxvd19taXhlZCgpKSB7Cisg
ICAgSW5pdEF0dHJMaW5lKGtBdHRyaWJ1dGVFeHRtYXBBbGxvd01peGVkLCAmb3MpOworICAgIEFk
ZExpbmUob3Muc3RyKCksICZtZXNzYWdlKTsKKyAgfQorCiAgIC8vIE1lZGlhU3RyZWFtIHNlbWFu
dGljcwogICBJbml0QXR0ckxpbmUoa0F0dHJpYnV0ZU1zaWRTZW1hbnRpY3MsICZvcyk7CiAgIG9z
IDw8IGtTZHBEZWxpbWl0ZXJDb2xvbiA8PCAiICIgPDwga01lZGlhU3RyZWFtU2VtYW50aWM7CkBA
IC0xMzAzLDggKzEzMTMsOCBAQCB2b2lkIEJ1aWxkTWVkaWFEZXNjcmlwdGlvbihjb25zdCBDb250
ZW50SW5mbyogY29udGVudF9pbmZvLAogCiAgICAgICBpZiAoZGF0YV9kZXNjLT51c2Vfc2N0cG1h
cCgpKSB7CiAgICAgICAgIGZvciAoY29uc3QgY3JpY2tldDo6RGF0YUNvZGVjJiBjb2RlYyA6IGRh
dGFfZGVzYy0+Y29kZWNzKCkpIHsKLSAgICAgICAgICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0Vx
KGNvZGVjLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0
OjprR29vZ2xlU2N0cERhdGFDb2RlY05hbWUpICYmCisgICAgICAgICAgaWYgKGFic2w6OkVxdWFs
c0lnbm9yZUNhc2UoY29kZWMubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmlja2V0OjprR29vZ2xlU2N0cERhdGFDb2RlY05hbWUpICYmCiAgICAgICAgICAgICAg
IGNvZGVjLkdldFBhcmFtKGNyaWNrZXQ6OmtDb2RlY1BhcmFtUG9ydCwgJnNjdHBfcG9ydCkpIHsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIH0KQEAgLTE0ODIsNyArMTQ5MiwxNyBAQCB2
b2lkIEJ1aWxkUnRwQ29udGVudEF0dHJpYnV0ZXMoY29uc3QgTWVkaWFDb250ZW50RGVzY3JpcHRp
b24qIG1lZGlhX2Rlc2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1zaWRf
c2lnbmFsaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBt
ZXNzYWdlKSB7CiAgIHJ0Yzo6U3RyaW5nQnVpbGRlciBvczsKLSAgLy8gUkZDIDUyODUKKyAgLy8g
UkZDIDgyODUKKyAgLy8gYT1leHRtYXAtYWxsb3ctbWl4ZWQKKyAgLy8gVGhlIGF0dHJpYnV0ZSBN
VVNUIGJlIGVpdGhlciBvbiBzZXNzaW9uIGxldmVsIG9yIG1lZGlhIGxldmVsLiBXZSBzdXBwb3J0
CisgIC8vIHJlc3BvbmRpbmcgb24gYm90aCBsZXZlbHMsIGhvd2V2ZXIsIHdlIGRvbid0IHJlc3Bv
bmQgb24gbWVkaWEgbGV2ZWwgaWYgaXQncworICAvLyBzZXQgb24gc2Vzc2lvbiBsZXZlbC4KKyAg
aWYgKG1lZGlhX2Rlc2MtPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkgPT0KKyAgICAgIE1lZGlh
Q29udGVudERlc2NyaXB0aW9uOjprTWVkaWEpIHsKKyAgICBJbml0QXR0ckxpbmUoa0F0dHJpYnV0
ZUV4dG1hcEFsbG93TWl4ZWQsICZvcyk7CisgICAgQWRkTGluZShvcy5zdHIoKSwgbWVzc2FnZSk7
CisgIH0KKyAgLy8gUkZDIDgyODUKICAgLy8gYT1leHRtYXA6PHZhbHVlPlsiLyI8ZGlyZWN0aW9u
Pl0gPFVSST4gPGV4dGVuc2lvbmF0dHJpYnV0ZXM+CiAgIC8vIFRoZSBkZWZpbml0aW9ucyBNVVNU
IGJlIGVpdGhlciBhbGwgc2Vzc2lvbiBsZXZlbCBvciBhbGwgbWVkaWEgbGV2ZWwuIFRoaXMKICAg
Ly8gaW1wbGVtZW50YXRpb24gdXNlcyBhbGwgbWVkaWEgbGV2ZWwuCkBAIC0xNjA5LDcgKzE2Mjks
MTIgQEAgdm9pZCBCdWlsZFJ0cENvbnRlbnRBdHRyaWJ1dGVzKGNvbnN0IE1lZGlhQ29udGVudERl
c2NyaXB0aW9uKiBtZWRpYV9kZXNjLAogICAgICAgICAvLyBTaW5jZSBhPXNzcmMgbXNpZCBzaWdu
YWxpbmcgaXMgdXNlZCBpbiBQbGFuIEIgU0RQIHNlbWFudGljcywgYW5kCiAgICAgICAgIC8vIG11
bHRpcGxlIHN0cmVhbSBpZHMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIFBsYW4gQiwgd2UgYXJlIG9u
bHkgYWRkaW5nCiAgICAgICAgIC8vIGEgbGluZSBmb3IgdGhlIGZpcnN0IG1lZGlhIHN0cmVhbSBp
ZCBoZXJlLgotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3RyZWFtX2lkID0gdHJhY2suZmly
c3Rfc3RyZWFtX2lkKCk7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFja19zdHJlYW1f
aWQgPSB0cmFjay5maXJzdF9zdHJlYW1faWQoKTsKKyAgICAgICAgLy8gV2UgdXNlIGEgc3BlY2lh
bCBtc2lkLWlkIHZhbHVlIG9mICItIiB0byByZXByZXNlbnQgbm8gc3RyZWFtcywKKyAgICAgICAg
Ly8gZm9yIFVuaWZpZWQgUGxhbiBjb21wYXRpYmlsaXR5LiBQbGFuIEIgd2lsbCBhbHdheXMgaGF2
ZSBhCisgICAgICAgIC8vIHRyYWNrX3N0cmVhbV9pZC4KKyAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHN0cmVhbV9pZCA9CisgICAgICAgICAgICB0cmFja19zdHJlYW1faWQuZW1wdHkoKSA/IGtO
b1N0cmVhbU1zaWQgOiB0cmFja19zdHJlYW1faWQ7CiAgICAgICAgIEluaXRBdHRyTGluZShrQXR0
cmlidXRlU3NyYywgJm9zKTsKICAgICAgICAgb3MgPDwga1NkcERlbGltaXRlckNvbG9uIDw8IHNz
cmMgPDwga1NkcERlbGltaXRlclNwYWNlCiAgICAgICAgICAgIDw8IGtTc3JjQXR0cmlidXRlTXNp
ZCA8PCBrU2RwRGVsaW1pdGVyQ29sb24gPDwgc3RyZWFtX2lkCkBAIC0xNzI3LDcgKzE3NTIsNyBA
QCB2b2lkIEFkZFJ0Y3BGYkxpbmVzKGNvbnN0IFQmIGNvZGVjLCBzdGQ6OnN0cmluZyogbWVzc2Fn
ZSkgewogCiBib29sIEFkZFNjdHBEYXRhQ29kZWMoRGF0YUNvbnRlbnREZXNjcmlwdGlvbiogbWVk
aWFfZGVzYywgaW50IHNjdHBfcG9ydCkgewogICBmb3IgKGNvbnN0IGF1dG8mIGNvZGVjIDogbWVk
aWFfZGVzYy0+Y29kZWNzKCkpIHsKLSAgICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGNvZGVj
Lm5hbWUsIGNyaWNrZXQ6OmtHb29nbGVTY3RwRGF0YUNvZGVjTmFtZSkpIHsKKyAgICBpZiAoYWJz
bDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBjcmlja2V0OjprR29vZ2xlU2N0cERhdGFD
b2RlY05hbWUpKSB7CiAgICAgICByZXR1cm4gUGFyc2VGYWlsZWQoIiIsICJDYW4ndCBoYXZlIG11
bHRpcGxlIHNjdHAgcG9ydCBhdHRyaWJ1dGVzLiIsIE5VTEwpOwogICAgIH0KICAgfQpAQCAtMTk5
Niw3ICsyMDIxLDcgQEAgYm9vbCBQYXJzZVNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBzdGQ6OnN0
cmluZyYgbWVzc2FnZSwKICAgc3RkOjpzdHJpbmcgbGluZTsKIAogICBkZXNjLT5zZXRfbXNpZF9z
dXBwb3J0ZWQoZmFsc2UpOwotCisgIGRlc2MtPnNldF9leHRtYXBfYWxsb3dfbWl4ZWQoZmFsc2Up
OwogICAvLyBSRkMgNDU2NgogICAvLyB2PSAgKHByb3RvY29sIHZlcnNpb24pCiAgIGlmICghR2V0
TGluZVdpdGhUeXBlKG1lc3NhZ2UsIHBvcywgJmxpbmUsIGtMaW5lVHlwZVZlcnNpb24pKSB7CkBA
IC0yMTE3LDExICsyMTQyLDExIEBAIGJvb2wgUGFyc2VTZXNzaW9uRGVzY3JpcHRpb24oY29uc3Qg
c3RkOjpzdHJpbmcmIG1lc3NhZ2UsCiAgICAgICAgICAgICAiQ2FuJ3QgaGF2ZSBtdWx0aXBsZSBm
aW5nZXJwcmludCBhdHRyaWJ1dGVzIGF0IHRoZSBzYW1lIGxldmVsLiIsCiAgICAgICAgICAgICBl
cnJvcik7CiAgICAgICB9Ci0gICAgICBydGM6OlNTTEZpbmdlcnByaW50KiBmaW5nZXJwcmludCA9
IE5VTEw7CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4gZmluZ2Vy
cHJpbnQ7CiAgICAgICBpZiAoIVBhcnNlRmluZ2VycHJpbnRBdHRyaWJ1dGUobGluZSwgJmZpbmdl
cnByaW50LCBlcnJvcikpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgfQotICAgICAg
c2Vzc2lvbl90ZC0+aWRlbnRpdHlfZmluZ2VycHJpbnQucmVzZXQoZmluZ2VycHJpbnQpOworICAg
ICAgc2Vzc2lvbl90ZC0+aWRlbnRpdHlfZmluZ2VycHJpbnQgPSBzdGQ6Om1vdmUoZmluZ2VycHJp
bnQpOwogICAgIH0gZWxzZSBpZiAoSGFzQXR0cmlidXRlKGxpbmUsIGtBdHRyaWJ1dGVTZXR1cCkp
IHsKICAgICAgIGlmICghUGFyc2VEdGxzU2V0dXAobGluZSwgJihzZXNzaW9uX3RkLT5jb25uZWN0
aW9uX3JvbGUpLCBlcnJvcikpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjEzMyw2ICsy
MTU4LDggQEAgYm9vbCBQYXJzZVNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBzdGQ6OnN0cmluZyYg
bWVzc2FnZSwKICAgICAgIH0KICAgICAgIGRlc2MtPnNldF9tc2lkX3N1cHBvcnRlZCgKICAgICAg
ICAgICBDYXNlSW5zZW5zaXRpdmVGaW5kKHNlbWFudGljcywga01lZGlhU3RyZWFtU2VtYW50aWMp
KTsKKyAgICB9IGVsc2UgaWYgKEhhc0F0dHJpYnV0ZShsaW5lLCBrQXR0cmlidXRlRXh0bWFwQWxs
b3dNaXhlZCkpIHsKKyAgICAgIGRlc2MtPnNldF9leHRtYXBfYWxsb3dfbWl4ZWQodHJ1ZSk7CiAg
ICAgfSBlbHNlIGlmIChIYXNBdHRyaWJ1dGUobGluZSwga0F0dHJpYnV0ZUV4dG1hcCkpIHsKICAg
ICAgIFJ0cEV4dGVuc2lvbiBleHRtYXA7CiAgICAgICBpZiAoIVBhcnNlRXh0bWFwKGxpbmUsICZl
eHRtYXAsIGVycm9yKSkgewpAQCAtMjE2Niw5ICsyMTkzLDEwIEBAIGJvb2wgUGFyc2VHcm91cEF0
dHJpYnV0ZShjb25zdCBzdGQ6OnN0cmluZyYgbGluZSwKICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0
YXRpYyBib29sIFBhcnNlRmluZ2VycHJpbnRBdHRyaWJ1dGUoY29uc3Qgc3RkOjpzdHJpbmcmIGxp
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6U1NMRmluZ2Vy
cHJpbnQqKiBmaW5nZXJwcmludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2RwUGFyc2VFcnJvciogZXJyb3IpIHsKK3N0YXRpYyBib29sIFBhcnNlRmluZ2VycHJpbnRB
dHRyaWJ1dGUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxpbmUsCisgICAgc3RkOjp1bmlxdWVf
cHRyPHJ0Yzo6U1NMRmluZ2VycHJpbnQ+KiBmaW5nZXJwcmludCwKKyAgICBTZHBQYXJzZUVycm9y
KiBlcnJvcikgewogICBpZiAoIUlzTGluZVR5cGUobGluZSwga0xpbmVUeXBlQXR0cmlidXRlcykg
fHwKICAgICAgICFIYXNBdHRyaWJ1dGUobGluZSwga0F0dHJpYnV0ZUZpbmdlcnByaW50KSkgewog
ICAgIHJldHVybiBQYXJzZUZhaWxlZEV4cGVjdExpbmUobGluZSwgMCwga0xpbmVUeXBlQXR0cmli
dXRlcywKQEAgLTIxOTQsNyArMjIyMiw4IEBAIHN0YXRpYyBib29sIFBhcnNlRmluZ2VycHJpbnRB
dHRyaWJ1dGUoY29uc3Qgc3RkOjpzdHJpbmcmIGxpbmUsCiAgICAgICAgICAgICAgICAgIDo6dG9s
b3dlcik7CiAKICAgLy8gVGhlIHNlY29uZCBmaWVsZCBpcyB0aGUgZGlnZXN0IHZhbHVlLiBEZS1o
ZXhpZnkgaXQuCi0gICpmaW5nZXJwcmludCA9IHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZy
b21SZmM0NTcyKGFsZ29yaXRobSwgZmllbGRzWzFdKTsKKyAgKmZpbmdlcnByaW50ID0KKyAgICAg
IHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZVVuaXF1ZUZyb21SZmM0NTcyKGFsZ29yaXRobSwg
ZmllbGRzWzFdKTsKICAgaWYgKCEqZmluZ2VycHJpbnQpIHsKICAgICByZXR1cm4gUGFyc2VGYWls
ZWQobGluZSwgIkZhaWxlZCB0byBjcmVhdGUgZmluZ2VycHJpbnQgZnJvbSB0aGUgZGlnZXN0LiIs
CiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKTsKQEAgLTI4MzQsMTIgKzI4NjMsMTEgQEAg
Ym9vbCBQYXJzZUNvbnRlbnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgIH0KICAgICB9IGVsc2UgaWYgKEhhc0F0dHJpYnV0ZShsaW5lLCBr
QXR0cmlidXRlRmluZ2VycHJpbnQpKSB7Ci0gICAgICBydGM6OlNTTEZpbmdlcnByaW50KiBmaW5n
ZXJwcmludCA9IE5VTEw7Ci0KKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTEZpbmdlcnBy
aW50PiBmaW5nZXJwcmludDsKICAgICAgIGlmICghUGFyc2VGaW5nZXJwcmludEF0dHJpYnV0ZShs
aW5lLCAmZmluZ2VycHJpbnQsIGVycm9yKSkgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICB9Ci0gICAgICB0cmFuc3BvcnQtPmlkZW50aXR5X2ZpbmdlcnByaW50LnJlc2V0KGZpbmdlcnBy
aW50KTsKKyAgICAgIHRyYW5zcG9ydC0+aWRlbnRpdHlfZmluZ2VycHJpbnQgPSBzdGQ6Om1vdmUo
ZmluZ2VycHJpbnQpOwogICAgIH0gZWxzZSBpZiAoSGFzQXR0cmlidXRlKGxpbmUsIGtBdHRyaWJ1
dGVTZXR1cCkpIHsKICAgICAgIGlmICghUGFyc2VEdGxzU2V0dXAobGluZSwgJih0cmFuc3BvcnQt
PmNvbm5lY3Rpb25fcm9sZSksIGVycm9yKSkgewogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
OTAyLDYgKzI5MzAsOSBAQCBib29sIFBhcnNlQ29udGVudChjb25zdCBzdGQ6OnN0cmluZyYgbWVz
c2FnZSwKICAgICAgICAgbWVkaWFfZGVzYy0+c2V0X2RpcmVjdGlvbihSdHBUcmFuc2NlaXZlckRp
cmVjdGlvbjo6a0luYWN0aXZlKTsKICAgICAgIH0gZWxzZSBpZiAoSGFzQXR0cmlidXRlKGxpbmUs
IGtBdHRyaWJ1dGVTZW5kUmVjdikpIHsKICAgICAgICAgbWVkaWFfZGVzYy0+c2V0X2RpcmVjdGlv
bihSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a1NlbmRSZWN2KTsKKyAgICAgIH0gZWxzZSBpZiAo
SGFzQXR0cmlidXRlKGxpbmUsIGtBdHRyaWJ1dGVFeHRtYXBBbGxvd01peGVkKSkgeworICAgICAg
ICBtZWRpYV9kZXNjLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oCisgICAgICAgICAgICBN
ZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKICAgICAgIH0gZWxzZSBpZiAoSGFzQXR0
cmlidXRlKGxpbmUsIGtBdHRyaWJ1dGVFeHRtYXApKSB7CiAgICAgICAgIFJ0cEV4dGVuc2lvbiBl
eHRtYXA7CiAgICAgICAgIGlmICghUGFyc2VFeHRtYXAobGluZSwgJmV4dG1hcCwgZXJyb3IpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy93ZWJydGNzZHAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3dlYnJ0Y3NkcC5oCmluZGV4IDJkODQyYTFkNWQ0YjgwOTFiYjc0YTk0Zjk2ZWZhYjYwOWQw
NzdkMjkuLmYxODVjMDg5MzIwMDg5OGJkMTcwNjUxOWYxYjY1OWQ1ZjQ5NmIyYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3Nk
cC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dl
YnJ0Y3NkcC5oCkBAIC0yMiw2ICsyMiw4IEBACiAKICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNs
dWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgorCiBuYW1lc3BhY2UgY3JpY2tldCB7
CiBjbGFzcyBDYW5kaWRhdGU7CiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApAQCAtNDYsNyArNDgs
OCBAQCBzdGQ6OnN0cmluZyBTZHBTZXJpYWxpemVDYW5kaWRhdGUoY29uc3QgSWNlQ2FuZGlkYXRl
SW50ZXJmYWNlJiBjYW5kaWRhdGUpOwogCiAvLyBTZXJpYWxpemVzIGEgY3JpY2tldCBDYW5kaWRh
dGUuCiAvLyBjYW5kaWRhdGUgLSBUaGUgY2FuZGlkYXRlIHRvIGJlIHNlcmlhbGl6ZWQuCi1zdGQ6
OnN0cmluZyBTZHBTZXJpYWxpemVDYW5kaWRhdGUoY29uc3QgY3JpY2tldDo6Q2FuZGlkYXRlJiBj
YW5kaWRhdGUpOworUlRDX0VYUE9SVCBzdGQ6OnN0cmluZyBTZHBTZXJpYWxpemVDYW5kaWRhdGUo
CisgICAgY29uc3QgY3JpY2tldDo6Q2FuZGlkYXRlJiBjYW5kaWRhdGUpOwogCiAvLyBEZXNlcmlh
bGl6ZXMgdGhlIHBhc3NlZCBpbiBTRFAgc3RyaW5nIHRvIGEgSnNlcFNlc3Npb25EZXNjcmlwdGlv
bi4KIC8vIG1lc3NhZ2UgLSBTRFAgc3RyaW5nIHRvIGJlIERlc2VyaWFsaXplZC4KQEAgLTc2LDEw
ICs3OSwxMCBAQCBib29sIFNkcERlc2VyaWFsaXplQ2FuZGlkYXRlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBtZXNzYWdlLAogLy8gY2FuZGlkYXRlIC0gVGhlIGNyaWNrZXQgQ2FuZGlkYXRlIGZyb20gdGhl
IFNEUCBzdHJpbmcuCiAvLyBlcnJvciAtIFRoZSBkZXRhaWwgZXJyb3IgaW5mb3JtYXRpb24gd2hl
biBwYXJzaW5nIGZhaWxzLgogLy8gcmV0dXJuIC0gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBm
YWlsdXJlLgotYm9vbCBTZHBEZXNlcmlhbGl6ZUNhbmRpZGF0ZShjb25zdCBzdGQ6OnN0cmluZyYg
dHJhbnNwb3J0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpD
YW5kaWRhdGUqIGNhbmRpZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwUGFy
c2VFcnJvciogZXJyb3IpOworUlRDX0VYUE9SVCBib29sIFNkcERlc2VyaWFsaXplQ2FuZGlkYXRl
KGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpDYW5kaWRhdGUqIGNhbmRp
ZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBQYXJzZUVy
cm9yKiBlcnJvcik7CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2Vi
cnRjc2RwX3VuaXR0ZXN0LmNjCmluZGV4IDljMTA1NTQ2MzE1M2JlNzEyMjU0YTAzNDIxMjdhODAw
NDZlZjY2ZWUuLmU3YzVjNzdiYjYxYWRlMmI1Zjk0ODkyNjYxMDI1N2IxMDk2NWQwN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0
Y3NkcF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy93ZWJydGNzZHBfdW5pdHRlc3QuY2MKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGln
ZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIApAQCAtODksNiArOTAsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciBrQXR0cmlidXRlQ3J5cHRvVmlkZW9bXSA9CiBzdGF0aWMgY29uc3QgY2hhciBrRmluZ2VycHJp
bnRbXSA9CiAgICAgImE9ZmluZ2VycHJpbnQ6c2hhLTEgIgogICAgICI0QTpBRDpCOTpCMTozRjo4
MjoxODozQjo1NDowMjoxMjpERjozRTo1RDo0OTo2QjoxOTpFNTo3QzpBQlxyXG4iOworc3RhdGlj
IGNvbnN0IGNoYXIga0V4dG1hcEFsbG93TWl4ZWRbXSA9ICJhPWV4dG1hcC1hbGxvdy1taXhlZFxy
XG4iOwogc3RhdGljIGNvbnN0IGludCBrRXh0bWFwSWQgPSAxOwogc3RhdGljIGNvbnN0IGNoYXIg
a0V4dG1hcFVyaVtdID0gImh0dHA6Ly9leGFtcGxlLmNvbS8wODIwMDUvZXh0Lmh0bSN0dGltZSI7
CiBzdGF0aWMgY29uc3QgY2hhciBrRXh0bWFwW10gPQpAQCAtNjIxLDggKzYyMyw4IEBAIHN0YXRp
YyBjb25zdCBjaGFyIGtVbmlmaWVkUGxhblNkcEZ1bGxTdHJpbmdXaXRoU3BlY2lhbE1zaWRbXSA9
CiAgICAgImdlbmVyYXRpb24gMlxyXG4iCiAgICAgImE9aWNlLXVmcmFnOnVmcmFnX3ZvaWNlXHJc
bmE9aWNlLXB3ZDpwd2Rfdm9pY2VcclxuIgogICAgICJhPW1pZDphdWRpb19jb250ZW50X25hbWVc
clxuIgotICAgICJhPW1zaWQ6bG9jYWxfc3RyZWFtXzEgYXVkaW9fdHJhY2tfaWRfMVxyXG4iCiAg
ICAgImE9c2VuZHJlY3ZcclxuIgorICAgICJhPW1zaWQ6bG9jYWxfc3RyZWFtXzEgYXVkaW9fdHJh
Y2tfaWRfMVxyXG4iCiAgICAgImE9cnRjcC1tdXhcclxuIgogICAgICJhPXJ0Y3AtcnNpemVcclxu
IgogICAgICJhPWNyeXB0bzoxIEFFU19DTV8xMjhfSE1BQ19TSEExXzMyICIKQEAgLTY0MSw5ICs2
NDMsOSBAQCBzdGF0aWMgY29uc3QgY2hhciBrVW5pZmllZFBsYW5TZHBGdWxsU3RyaW5nV2l0aFNw
ZWNpYWxNc2lkW10gPQogICAgICJhPXJ0Y3A6OSBJTiBJUDQgMC4wLjAuMFxyXG4iCiAgICAgImE9
aWNlLXVmcmFnOnVmcmFnX3ZvaWNlXzJcclxuYT1pY2UtcHdkOnB3ZF92b2ljZV8yXHJcbiIKICAg
ICAiYT1taWQ6YXVkaW9fY29udGVudF9uYW1lXzJcclxuIgorICAgICJhPXNlbmRyZWN2XHJcbiIK
ICAgICAiYT1tc2lkOmxvY2FsX3N0cmVhbV8xIGF1ZGlvX3RyYWNrX2lkXzJcclxuIgogICAgICJh
PW1zaWQ6bG9jYWxfc3RyZWFtXzIgYXVkaW9fdHJhY2tfaWRfMlxyXG4iCi0gICAgImE9c2VuZHJl
Y3ZcclxuIgogICAgICJhPXJ0Y3AtbXV4XHJcbiIKICAgICAiYT1ydGNwLXJzaXplXHJcbiIKICAg
ICAiYT1jcnlwdG86MSBBRVNfQ01fMTI4X0hNQUNfU0hBMV8zMiAiCkBAIC02NjQsOCArNjY2LDgg
QEAgc3RhdGljIGNvbnN0IGNoYXIga1VuaWZpZWRQbGFuU2RwRnVsbFN0cmluZ1dpdGhTcGVjaWFs
TXNpZFtdID0KICAgICAiYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuIgogICAgICJhPWljZS11
ZnJhZzp1ZnJhZ192b2ljZV8zXHJcbmE9aWNlLXB3ZDpwd2Rfdm9pY2VfM1xyXG4iCiAgICAgImE9
bWlkOmF1ZGlvX2NvbnRlbnRfbmFtZV8zXHJcbiIKLSAgICAiYT1tc2lkOi0gYXVkaW9fdHJhY2tf
aWRfM1xyXG4iCiAgICAgImE9c2VuZHJlY3ZcclxuIgorICAgICJhPW1zaWQ6LSBhdWRpb190cmFj
a19pZF8zXHJcbiIKICAgICAiYT1ydGNwLW11eFxyXG4iCiAgICAgImE9cnRjcC1yc2l6ZVxyXG4i
CiAgICAgImE9Y3J5cHRvOjEgQUVTX0NNXzEyOF9ITUFDX1NIQTFfMzIgIgpAQCAtNjc0LDcgKzY3
NiwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciBrVW5pZmllZFBsYW5TZHBGdWxsU3RyaW5nV2l0aFNw
ZWNpYWxNc2lkW10gPQogICAgICJhPXJ0cG1hcDoxMTEgb3B1cy80ODAwMC8yXHJcbiIKICAgICAi
YT1ydHBtYXA6MTAzIElTQUMvMTYwMDBcclxuIgogICAgICJhPXJ0cG1hcDoxMDQgSVNBQy8zMjAw
MFxyXG4iCi0gICAgImE9c3NyYzo3IGNuYW1lOnN0cmVhbV8yX2NuYW1lXHJcbiI7CisgICAgImE9
c3NyYzo3IGNuYW1lOnN0cmVhbV8yX2NuYW1lXHJcbiIKKyAgICAiYT1zc3JjOjcgbXNpZDotIGF1
ZGlvX3RyYWNrX2lkXzNcclxuIgorICAgICJhPXNzcmM6NyBtc2xhYmVsOi1cclxuIgorICAgICJh
PXNzcmM6NyBsYWJlbDphdWRpb190cmFja19pZF8zXHJcbiI7CiAKIC8vIE9uZSBjYW5kaWRhdGUg
cmVmZXJlbmNlIHN0cmluZyBhcyBwZXIgVzNjIHNwZWMuCiAvLyBjYW5kaWRhdGU6PGJsYWg+IG5v
dCBhPWNhbmRpZGF0ZTo8YmxhaD5DUkxGCkBAIC0xMTYwLDcgKzExNjUsNyBAQCBjbGFzcyBXZWJS
dGNTZHBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAvLyB3aXRoIDMgYXVkaW8gTWVk
aWFDb250ZW50RGVzY3JpcHRpb25zIHdpdGggc3BlY2lhbCBTdHJlYW1QYXJhbXMgdGhhdAogICAv
LyBjb250YWluIDAgb3IgbXVsdGlwbGUgc3RyZWFtIGlkczogLSBhdWRpbyB0cmFjayAxIGhhcyAx
IG1lZGlhIHN0cmVhbSBpZCAtCiAgIC8vIGF1ZGlvIHRyYWNrIDIgaGFzIDIgbWVkaWEgc3RyZWFt
IGlkcyAtIGF1ZGlvIHRyYWNrIDMgaGFzIDAgbWVkaWEgc3RyZWFtIGlkcwotICB2b2lkIE1ha2VV
bmlmaWVkUGxhbkRlc2NyaXB0aW9uTXVsdGlwbGVTdHJlYW1JZHMoKSB7CisgIHZvaWQgTWFrZVVu
aWZpZWRQbGFuRGVzY3JpcHRpb25NdWx0aXBsZVN0cmVhbUlkcyhjb25zdCBpbnQgbXNpZF9zaWdu
YWxpbmcpIHsKICAgICBkZXNjXy5SZW1vdmVDb250ZW50QnlOYW1lKGtWaWRlb0NvbnRlbnROYW1l
KTsKICAgICBkZXNjXy5SZW1vdmVUcmFuc3BvcnRJbmZvQnlOYW1lKGtWaWRlb0NvbnRlbnROYW1l
KTsKICAgICBSZW1vdmVWaWRlb0NhbmRpZGF0ZXMoKTsKQEAgLTExODgsOSArMTE5Myw3IEBAIGNs
YXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgZGVzY18uQWRk
Q29udGVudChrQXVkaW9Db250ZW50TmFtZTMsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCBhdWRp
b19kZXNjXzMpOwogICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNw
b3J0SW5mbygKICAgICAgICAga0F1ZGlvQ29udGVudE5hbWUzLCBUcmFuc3BvcnREZXNjcmlwdGlv
bihrVWZyYWdWb2ljZTMsIGtQd2RWb2ljZTMpKSkpOwotICAgIC8vIE1ha2Ugc3VyZSB0byBjcmVh
dGUgYm90aCBhPW1zaWQgbGluZXMuCi0gICAgZGVzY18uc2V0X21zaWRfc2lnbmFsaW5nKGNyaWNr
ZXQ6OmtNc2lkU2lnbmFsaW5nTWVkaWFTZWN0aW9uIHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JpY2tldDo6a01zaWRTaWduYWxpbmdTc3JjQXR0cmlidXRlKTsKKyAgICBkZXNjXy5z
ZXRfbXNpZF9zaWduYWxpbmcobXNpZF9zaWduYWxpbmcpOwogICAgIEFTU0VSVF9UUlVFKGpkZXNj
Xy5Jbml0aWFsaXplKGRlc2NfLkNvcHkoKSwgamRlc2NfLnNlc3Npb25faWQoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqZGVzY18uc2Vzc2lvbl92ZXJzaW9uKCkpKTsKICAg
fQpAQCAtMTI4Miw2ICsxMjg1LDkgQEAgY2xhc3MgV2ViUnRjU2RwVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKICAgICAvLyBzdHJlYW1zCiAgICAgRVhQRUNUX0VRKGNkMS0+c3RyZWFtcygp
LCBjZDItPnN0cmVhbXMoKSk7CiAKKyAgICAvLyBleHRtYXAtYWxsb3ctbWl4ZWQKKyAgICBFWFBF
Q1RfRVEoY2QxLT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpLCBjZDItPmV4dG1hcF9hbGxvd19t
aXhlZF9lbnVtKCkpOworCiAgICAgLy8gZXh0bWFwCiAgICAgQVNTRVJUX0VRKGNkMS0+cnRwX2hl
YWRlcl9leHRlbnNpb25zKCkuc2l6ZSgpLAogICAgICAgICAgICAgICBjZDItPnJ0cF9oZWFkZXJf
ZXh0ZW5zaW9ucygpLnNpemUoKSk7CkBAIC0xMzk4LDYgKzE0MDQsNyBAQCBjbGFzcyBXZWJSdGNT
ZHBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogCiAgICAgLy8gZ2xvYmFsIGF0dHJpYnV0
ZXMKICAgICBFWFBFQ1RfRVEoZGVzYzEubXNpZF9zdXBwb3J0ZWQoKSwgZGVzYzIubXNpZF9zdXBw
b3J0ZWQoKSk7CisgICAgRVhQRUNUX0VRKGRlc2MxLmV4dG1hcF9hbGxvd19taXhlZCgpLCBkZXNj
Mi5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7CiAgIH0KIAogICBib29sIENvbXBhcmVTZXNzaW9uRGVz
Y3JpcHRpb24oY29uc3QgSnNlcFNlc3Npb25EZXNjcmlwdGlvbiYgZGVzYzEsCkBAIC0xNDk1LDgg
KzE1MDIsNyBAQCBjbGFzcyBXZWJSdGNTZHBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewog
ICB2b2lkIEFkZEZpbmdlcnByaW50KCkgewogICAgIGRlc2NfLlJlbW92ZVRyYW5zcG9ydEluZm9C
eU5hbWUoa0F1ZGlvQ29udGVudE5hbWUpOwogICAgIGRlc2NfLlJlbW92ZVRyYW5zcG9ydEluZm9C
eU5hbWUoa1ZpZGVvQ29udGVudE5hbWUpOwotICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQgZmluZ2Vy
cHJpbnQocnRjOjpESUdFU1RfU0hBXzEsIGtJZGVudGl0eURpZ2VzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrSWRlbnRpdHlEaWdlc3QpKTsKKyAgICBydGM6
OlNTTEZpbmdlcnByaW50IGZpbmdlcnByaW50KHJ0Yzo6RElHRVNUX1NIQV8xLCBrSWRlbnRpdHlE
aWdlc3QpOwogICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0
SW5mbygKICAgICAgICAga0F1ZGlvQ29udGVudE5hbWUsCiAgICAgICAgIFRyYW5zcG9ydERlc2Ny
aXB0aW9uKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpLCBrVWZyYWdWb2ljZSwga1B3ZFZvaWNl
LApAQCAtMTU0MCw2ICsxNTQ2LDI3IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiAgICAgfQogICB9CiAKKyAgLy8gUmVtb3ZlcyBhbGwgYT1zc3JjIGxpbmVz
IGZyb20gdGhlIFNEUCBzdHJpbmcsIGV4Y2VwdCBmb3IgdGhlCisgIC8vICJhPXNzcmM6Li4uIGNu
YW1lOi4uLiIgbGluZXMuCisgIHZvaWQgUmVtb3ZlU3NyY01zaWRMaW5lc0Zyb21TZHBTdHJpbmco
c3RkOjpzdHJpbmcqIHNkcF9zdHJpbmcpIHsKKyAgICBjb25zdCBjaGFyIGtBdHRyaWJ1dGVTc3Jj
W10gPSAiYT1zc3JjIjsKKyAgICBjb25zdCBjaGFyIGtBdHRyaWJ1dGVDbmFtZVtdID0gImNuYW1l
IjsKKyAgICBzaXplX3Qgc3NyY19saW5lX3BvcyA9IHNkcF9zdHJpbmctPmZpbmQoa0F0dHJpYnV0
ZVNzcmMpOworICAgIHdoaWxlIChzc3JjX2xpbmVfcG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7
CisgICAgICBzaXplX3QgYmVnX2xpbmVfcG9zID0gc2RwX3N0cmluZy0+cmZpbmQoJ1xuJywgc3Ny
Y19saW5lX3Bvcyk7CisgICAgICBzaXplX3QgZW5kX2xpbmVfcG9zID0gc2RwX3N0cmluZy0+Zmlu
ZCgnXG4nLCBzc3JjX2xpbmVfcG9zKTsKKyAgICAgIHNpemVfdCBjbmFtZV9wb3MgPSBzZHBfc3Ry
aW5nLT5maW5kKGtBdHRyaWJ1dGVDbmFtZSwgc3NyY19saW5lX3Bvcyk7CisgICAgICBpZiAoY25h
bWVfcG9zID09IHN0ZDo6c3RyaW5nOjpucG9zIHx8IGNuYW1lX3BvcyA+IGVuZF9saW5lX3Bvcykg
eworICAgICAgICAvLyBPbmx5IGVyYXNlIGE9c3NyYyBsaW5lcyB0aGF0IGRvbid0IGNvbnRhaW4g
ImNuYW1lIi4KKyAgICAgICAgc2RwX3N0cmluZy0+ZXJhc2UoYmVnX2xpbmVfcG9zLCBlbmRfbGlu
ZV9wb3MgLSBiZWdfbGluZV9wb3MpOworICAgICAgICBzc3JjX2xpbmVfcG9zID0gc2RwX3N0cmlu
Zy0+ZmluZChrQXR0cmlidXRlU3NyYywgYmVnX2xpbmVfcG9zKTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIFNraXAgdGhlICJhPXNzcmM6Li4uIGNuYW1lIiBsaW5lIGFuZCBmaW5kIHRoZSBu
ZXh0ICJhPXNzcmMiIGxpbmUuCisgICAgICAgIHNzcmNfbGluZV9wb3MgPSBzZHBfc3RyaW5nLT5m
aW5kKGtBdHRyaWJ1dGVTc3JjLCBlbmRfbGluZV9wb3MpOworICAgICAgfQorICAgIH0KKyAgfQor
CiAgIC8vIFJlbW92ZXMgYWxsIGE9c3NyYyBsaW5lcyBmcm9tIHRoZSBTRFAgc3RyaW5nLgogICB2
b2lkIFJlbW92ZVNzcmNMaW5lc0Zyb21TZHBTdHJpbmcoc3RkOjpzdHJpbmcqIHNkcF9zdHJpbmcp
IHsKICAgICBjb25zdCBjaGFyIGtBdHRyaWJ1dGVTc3JjW10gPSAiYT1zc3JjIjsKQEAgLTIwNzAs
OSArMjA5Nyw4IEBAIFRFU1RfRihXZWJSdGNTZHBUZXN0LCBTZXJpYWxpemVXaXRoU2N0cERhdGFD
aGFubmVsQW5kTmV3UG9ydCkgewogCiAgIGNoYXIgZGVmYXVsdF9wb3J0c3RyWzE2XTsKICAgY2hh
ciBuZXdfcG9ydHN0clsxNl07Ci0gIHJ0Yzo6c3ByaW50Zm4oZGVmYXVsdF9wb3J0c3RyLCBzaXpl
b2YoZGVmYXVsdF9wb3J0c3RyKSwgIiVkIiwKLSAgICAgICAgICAgICAgICBrRGVmYXVsdFNjdHBQ
b3J0KTsKLSAgcnRjOjpzcHJpbnRmbihuZXdfcG9ydHN0ciwgc2l6ZW9mKG5ld19wb3J0c3RyKSwg
IiVkIiwga05ld1BvcnQpOworICBzbnByaW50ZihkZWZhdWx0X3BvcnRzdHIsIHNpemVvZihkZWZh
dWx0X3BvcnRzdHIpLCAiJWQiLCBrRGVmYXVsdFNjdHBQb3J0KTsKKyAgc25wcmludGYobmV3X3Bv
cnRzdHIsIHNpemVvZihuZXdfcG9ydHN0ciksICIlZCIsIGtOZXdQb3J0KTsKICAgcnRjOjpyZXBs
YWNlX3N1YnN0cnMoZGVmYXVsdF9wb3J0c3RyLCBzdHJsZW4oZGVmYXVsdF9wb3J0c3RyKSwgbmV3
X3BvcnRzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihuZXdfcG9ydHN0ciksICZl
eHBlY3RlZF9zZHApOwogCkBAIC0yMDk0LDYgKzIxMjAsMjUgQEAgVEVTVF9GKFdlYlJ0Y1NkcFRl
c3QsIFNlcmlhbGl6ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhEYXRhQ2hhbm5lbEFuZEJhbmR3aWR0
aCkgewogICBFWFBFQ1RfRVEoZXhwZWN0ZWRfc2RwLCBtZXNzYWdlKTsKIH0KIAorVEVTVF9GKFdl
YlJ0Y1NkcFRlc3QsIFNlcmlhbGl6ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhFeHRtYXBBbGxvd01p
eGVkKSB7CisgIGpkZXNjXy5kZXNjcmlwdGlvbigpLT5zZXRfZXh0bWFwX2FsbG93X21peGVkKHRy
dWUpOworICBUZXN0U2VyaWFsaXplKGpkZXNjXyk7Cit9CisKK1RFU1RfRihXZWJSdGNTZHBUZXN0
LCBTZXJpYWxpemVNZWRpYUNvbnRlbnREZXNjcmlwdGlvbldpdGhFeHRtYXBBbGxvd01peGVkKSB7
CisgIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uKiB2aWRlb19kZXNjID0KKyAgICAg
IGpkZXNjXy5kZXNjcmlwdGlvbigpLT5HZXRDb250ZW50RGVzY3JpcHRpb25CeU5hbWUoa1ZpZGVv
Q29udGVudE5hbWUpOworICBBU1NFUlRfVFJVRSh2aWRlb19kZXNjKTsKKyAgY3JpY2tldDo6TWVk
aWFDb250ZW50RGVzY3JpcHRpb24qIGF1ZGlvX2Rlc2MgPQorICAgICAgamRlc2NfLmRlc2NyaXB0
aW9uKCktPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZShrQXVkaW9Db250ZW50TmFtZSk7Cisg
IEFTU0VSVF9UUlVFKGF1ZGlvX2Rlc2MpOworICB2aWRlb19kZXNjLT5zZXRfZXh0bWFwX2FsbG93
X21peGVkX2VudW0oCisgICAgICBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01l
ZGlhKTsKKyAgYXVkaW9fZGVzYy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKAorICAgICAg
Y3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7CisgIFRlc3RTZXJpYWxp
emUoamRlc2NfKTsKK30KKwogVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIFNlcmlhbGl6ZVNlc3Npb25E
ZXNjcmlwdGlvbldpdGhFeHRtYXApIHsKICAgYm9vbCBlbmNyeXB0ZWQgPSBmYWxzZTsKICAgQWRk
RXh0bWFwKGVuY3J5cHRlZCk7CkBAIC0yNDMxLDYgKzI0NzYsNTMgQEAgVEVTVF9GKFdlYlJ0Y1Nk
cFRlc3QsIERlc2VyaWFsaXplU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aG91dE1zaWQpIHsKICAgRVhQ
RUNUX1RSVUUoQ29tcGFyZVNlc3Npb25EZXNjcmlwdGlvbihqZGVzY18sIGpkZXNjKSk7CiB9CiAK
K1RFU1RfRihXZWJSdGNTZHBUZXN0LCBEZXNlcmlhbGl6ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhF
eHRtYXBBbGxvd01peGVkKSB7CisgIGpkZXNjXy5kZXNjcmlwdGlvbigpLT5zZXRfZXh0bWFwX2Fs
bG93X21peGVkKHRydWUpOworICBzdGQ6OnN0cmluZyBzZHBfd2l0aF9leHRtYXBfYWxsb3dfbWl4
ZWQgPSBrU2RwRnVsbFN0cmluZzsKKyAgSW5qZWN0QWZ0ZXIoInQ9MCAwXHJcbiIsIGtFeHRtYXBB
bGxvd01peGVkLCAmc2RwX3dpdGhfZXh0bWFwX2FsbG93X21peGVkKTsKKyAgLy8gRGVzZXJpYWxp
emUKKyAgSnNlcFNlc3Npb25EZXNjcmlwdGlvbiBqZGVzY19kZXNlcmlhbGl6ZWQoa0R1bW15VHlw
ZSk7CisgIEVYUEVDVF9UUlVFKFNkcERlc2VyaWFsaXplKHNkcF93aXRoX2V4dG1hcF9hbGxvd19t
aXhlZCwgJmpkZXNjX2Rlc2VyaWFsaXplZCkpOworICAvLyBWZXJpZnkKKyAgRVhQRUNUX1RSVUUo
Q29tcGFyZVNlc3Npb25EZXNjcmlwdGlvbihqZGVzY18sIGpkZXNjX2Rlc2VyaWFsaXplZCkpOwor
fQorCitURVNUX0YoV2ViUnRjU2RwVGVzdCwgRGVzZXJpYWxpemVTZXNzaW9uRGVzY3JpcHRpb25X
aXRob3V0RXh0bWFwQWxsb3dNaXhlZCkgeworICBqZGVzY18uZGVzY3JpcHRpb24oKS0+c2V0X2V4
dG1hcF9hbGxvd19taXhlZChmYWxzZSk7CisgIHN0ZDo6c3RyaW5nIHNkcF93aXRob3V0X2V4dG1h
cF9hbGxvd19taXhlZCA9IGtTZHBGdWxsU3RyaW5nOworICAvLyBEZXNlcmlhbGl6ZQorICBKc2Vw
U2Vzc2lvbkRlc2NyaXB0aW9uIGpkZXNjX2Rlc2VyaWFsaXplZChrRHVtbXlUeXBlKTsKKyAgRVhQ
RUNUX1RSVUUoCisgICAgICBTZHBEZXNlcmlhbGl6ZShzZHBfd2l0aG91dF9leHRtYXBfYWxsb3df
bWl4ZWQsICZqZGVzY19kZXNlcmlhbGl6ZWQpKTsKKyAgLy8gVmVyaWZ5CisgIEVYUEVDVF9UUlVF
KENvbXBhcmVTZXNzaW9uRGVzY3JpcHRpb24oamRlc2NfLCBqZGVzY19kZXNlcmlhbGl6ZWQpKTsK
K30KKworVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIERlc2VyaWFsaXplTWVkaWFDb250ZW50RGVzY3Jp
cHRpb25XaXRoRXh0bWFwQWxsb3dNaXhlZCkgeworICBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNj
cmlwdGlvbiogdmlkZW9fZGVzYyA9CisgICAgICBqZGVzY18uZGVzY3JpcHRpb24oKS0+R2V0Q29u
dGVudERlc2NyaXB0aW9uQnlOYW1lKGtWaWRlb0NvbnRlbnROYW1lKTsKKyAgQVNTRVJUX1RSVUUo
dmlkZW9fZGVzYyk7CisgIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBhdWRpb19k
ZXNjID0KKyAgICAgIGpkZXNjXy5kZXNjcmlwdGlvbigpLT5HZXRDb250ZW50RGVzY3JpcHRpb25C
eU5hbWUoa0F1ZGlvQ29udGVudE5hbWUpOworICBBU1NFUlRfVFJVRShhdWRpb19kZXNjKTsKKyAg
dmlkZW9fZGVzYy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKAorICAgICAgY3JpY2tldDo6
TWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7CisgIGF1ZGlvX2Rlc2MtPnNldF9leHRt
YXBfYWxsb3dfbWl4ZWRfZW51bSgKKyAgICAgIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0
aW9uOjprTWVkaWEpOworCisgIHN0ZDo6c3RyaW5nIHNkcF93aXRoX2V4dG1hcF9hbGxvd19taXhl
ZCA9IGtTZHBGdWxsU3RyaW5nOworICBJbmplY3RBZnRlcigiYT1taWQ6YXVkaW9fY29udGVudF9u
YW1lXHJcbiIsIGtFeHRtYXBBbGxvd01peGVkLAorICAgICAgICAgICAgICAmc2RwX3dpdGhfZXh0
bWFwX2FsbG93X21peGVkKTsKKyAgSW5qZWN0QWZ0ZXIoImE9bWlkOnZpZGVvX2NvbnRlbnRfbmFt
ZVxyXG4iLCBrRXh0bWFwQWxsb3dNaXhlZCwKKyAgICAgICAgICAgICAgJnNkcF93aXRoX2V4dG1h
cF9hbGxvd19taXhlZCk7CisKKyAgLy8gRGVzZXJpYWxpemUKKyAgSnNlcFNlc3Npb25EZXNjcmlw
dGlvbiBqZGVzY19kZXNlcmlhbGl6ZWQoa0R1bW15VHlwZSk7CisgIEVYUEVDVF9UUlVFKFNkcERl
c2VyaWFsaXplKHNkcF93aXRoX2V4dG1hcF9hbGxvd19taXhlZCwgJmpkZXNjX2Rlc2VyaWFsaXpl
ZCkpOworICAvLyBWZXJpZnkKKyAgRVhQRUNUX1RSVUUoQ29tcGFyZVNlc3Npb25EZXNjcmlwdGlv
bihqZGVzY18sIGpkZXNjX2Rlc2VyaWFsaXplZCkpOworfQorCiBURVNUX0YoV2ViUnRjU2RwVGVz
dCwgRGVzZXJpYWxpemVDYW5kaWRhdGUpIHsKICAgSnNlcEljZUNhbmRpZGF0ZSBqY2FuZGlkYXRl
KGtEdW1teU1pZCwga0R1bW15SW5kZXgpOwogCkBAIC0zMzYyLDEyICszNDU0LDE2IEBAIFRFU1Rf
RihXZWJSdGNTZHBUZXN0LCBTZXJpYWxpemVVbmlmaWVkUGxhblNlc3Npb25EZXNjcmlwdGlvbikg
ewogfQogCiAvLyBUaGlzIHRlc3RzIGRlc2VyaWFsaXppbmcgYSBVbmlmaWVkIFBsYW4gU0RQIHRo
YXQgaXMgY29tcGF0aWJsZSB3aXRoIGJvdGgKLS8vIFVuaWZpZWQgUGxhbiBhbmQgUGxhbiBCIHN0
eWxlIFNEUC4gSXQgdGVzdHMgdGhlIGNhc2UgZm9yIGF1ZGlvL3ZpZGVvIHRyYWNrcworLy8gVW5p
ZmllZCBQbGFuIGFuZCBQbGFuIEIgc3R5bGUgU0RQLCBtZWFuaW5nIHRoYXQgaXQgY29udGFpbnMg
Ym90aCAiYT1zc3JjCisvLyBtc2lkIiBsaW5lcyBhbmQgImE9bXNpZCAiIGxpbmVzLiBJdCB0ZXN0
cyB0aGUgY2FzZSBmb3IgYXVkaW8vdmlkZW8gdHJhY2tzCiAvLyB3aXRoIG5vIHN0cmVhbSBpZHMg
YW5kIG11bHRpcGxlIHN0cmVhbSBpZHMuIEZvciBwYXJzaW5nIHRoaXMsIHRoZSBVbmlmaWVkCiAv
LyBQbGFuIGE9bXNpZCBsaW5lcyBzaG91bGQgdGFrZSBwcmlvcml0eSwgYmVjYXVzZSB0aGUgUGxh
biBCIHN0eWxlIGE9c3NyYyBtc2lkCiAvLyBsaW5lcyBkbyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBz
dHJlYW0gaWRzIGFuZCBubyBzdHJlYW0gaWRzLgotVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIERlc2Vy
aWFsaXplVW5pZmllZFBsYW5TZXNzaW9uRGVzY3JpcHRpb25TcGVjaWFsTXNpZCkgewotICBNYWtl
VW5pZmllZFBsYW5EZXNjcmlwdGlvbk11bHRpcGxlU3RyZWFtSWRzKCk7CitURVNUX0YoV2ViUnRj
U2RwVGVzdCwgRGVzZXJpYWxpemVTZXNzaW9uRGVzY3JpcHRpb25TcGVjaWFsTXNpZCkgeworICAv
LyBDcmVhdGUgYm90aCBtc2lkIGxpbmVzIGZvciBQbGFuIEIgYW5kIFVuaWZpZWQgUGxhbiBzdXBw
b3J0LgorICBNYWtlVW5pZmllZFBsYW5EZXNjcmlwdGlvbk11bHRpcGxlU3RyZWFtSWRzKAorICAg
ICAgY3JpY2tldDo6a01zaWRTaWduYWxpbmdNZWRpYVNlY3Rpb24gfAorICAgICAgY3JpY2tldDo6
a01zaWRTaWduYWxpbmdTc3JjQXR0cmlidXRlKTsKIAogICBKc2VwU2Vzc2lvbkRlc2NyaXB0aW9u
IGRlc2VyaWFsaXplZF9kZXNjcmlwdGlvbihrRHVtbXlUeXBlKTsKICAgRVhQRUNUX1RSVUUoU2Rw
RGVzZXJpYWxpemUoa1VuaWZpZWRQbGFuU2RwRnVsbFN0cmluZ1dpdGhTcGVjaWFsTXNpZCwKQEAg
LTMzNzYsOCArMzQ3Miw1MCBAQCBURVNUX0YoV2ViUnRjU2RwVGVzdCwgRGVzZXJpYWxpemVVbmlm
aWVkUGxhblNlc3Npb25EZXNjcmlwdGlvblNwZWNpYWxNc2lkKSB7CiAgIEVYUEVDVF9UUlVFKENv
bXBhcmVTZXNzaW9uRGVzY3JpcHRpb24oamRlc2NfLCBkZXNlcmlhbGl6ZWRfZGVzY3JpcHRpb24p
KTsKIH0KIAotVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIFNlcmlhbGl6ZVVuaWZpZWRQbGFuU2Vzc2lv
bkRlc2NyaXB0aW9uU3BlY2lhbE1zaWQpIHsKLSAgTWFrZVVuaWZpZWRQbGFuRGVzY3JpcHRpb25N
dWx0aXBsZVN0cmVhbUlkcygpOworLy8gVGVzdHMgdGhlIHNlcmlhbGl6YXRpb24gb2YgYSBVbmlm
aWVkIFBsYW4gU0RQIHRoYXQgaXMgY29tcGF0aWJsZSBmb3IgYm90aAorLy8gVW5pZmllZCBQbGFu
IGFuZCBQbGFuIEIgc3R5bGUgU0RQcywgbWVhbmluZyB0aGF0IGl0IGNvbnRhaW5zIGJvdGggImE9
c3NyYworLy8gbXNpZCIgbGluZXMgYW5kICJhPW1zaWQgIiBsaW5lcy4gSXQgdGVzdHMgdGhlIGNh
c2UgZm9yIG5vIHN0cmVhbSBpZHMgYW5kCisvLyBtdWx0aXBsZSBzdHJlYW0gaWRzLgorVEVTVF9G
KFdlYlJ0Y1NkcFRlc3QsIFNlcmlhbGl6ZVNlc3Npb25EZXNjcmlwdGlvblNwZWNpYWxNc2lkKSB7
CisgIC8vIENyZWF0ZSBib3RoIG1zaWQgbGluZXMgZm9yIFBsYW4gQiBhbmQgVW5pZmllZCBQbGFu
IHN1cHBvcnQuCisgIE1ha2VVbmlmaWVkUGxhbkRlc2NyaXB0aW9uTXVsdGlwbGVTdHJlYW1JZHMo
CisgICAgICBjcmlja2V0OjprTXNpZFNpZ25hbGluZ01lZGlhU2VjdGlvbiB8CisgICAgICBjcmlj
a2V0OjprTXNpZFNpZ25hbGluZ1NzcmNBdHRyaWJ1dGUpOworICBzdGQ6OnN0cmluZyBzZXJpYWxp
emVkX3NkcCA9IHdlYnJ0Yzo6U2RwU2VyaWFsaXplKGpkZXNjXyk7CisgIC8vIFdlIGV4cGxpY2l0
bHkgdGVzdCB0aGF0IHRoZSBzZXJpYWxpemVkIFNEUCBzdHJpbmcgaXMgZXF1YWwgdG8gdGhlIGhh
cmQKKyAgLy8gY29kZWQgU0RQIHN0cmluZy4gVGhpcyBpcyBuZWNlc3NhcnksIGJlY2F1c2UgaW4g
dGhlIHBhcnNlciAiYT1tc2lkIiBsaW5lcworICAvLyB0YWtlIHByaW9yaXR5IG92ZXIgImE9c3Ny
YyBtc2lkIiBsaW5lcy4gVGhpcyBtZWFucyBpZiB3ZSBqdXN0IHVzZWQKKyAgLy8gVGVzdFNlcmlh
bGl6ZSgpLCBpdCBjb3VsZCBzZXJpYWxpemUgYW4gU0RQIHRoYXQgb21pdHMgImE9c3NyYyBtc2lk
IiBsaW5lcywKKyAgLy8gYW5kIHN0aWxsIHBhc3MsIGJlY2F1c2UgdGhlIGRlc2VyaWFsaXplZCB2
ZXJzaW9uIHdvdWxkIGJlIHRoZSBzYW1lLgorICBFWFBFQ1RfRVEoa1VuaWZpZWRQbGFuU2RwRnVs
bFN0cmluZ1dpdGhTcGVjaWFsTXNpZCwgc2VyaWFsaXplZF9zZHApOworfQorCisvLyBUZXN0cyB0
aGF0IGEgVW5pZmllZCBQbGFuIHN0eWxlIFNEUCAoZG9lcyBub3QgY29udGFpbiAiYT1zc3JjIG1z
aWQiIGxpbmVzCisvLyB0aGF0IHNpZ25hbCBzdHJlYW0gSURzKSBpcyBkZXNlcmlhbGl6ZWQgYXBw
cm9wcmlhdGVseS4gSXQgdGVzdHMgdGhlIGNhc2UgZm9yCisvLyBubyBzdHJlYW0gaWRzIGFuZCBt
dWx0aXBsZSBzdHJlYW0gaWRzLgorVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIFVuaWZpZWRQbGFuRGVz
ZXJpYWxpemVTZXNzaW9uRGVzY3JpcHRpb25TcGVjaWFsTXNpZCkgeworICAvLyBPbmx5IGNyZWF0
ZSBhPW1zaWQgbGluZXMgZm9yIHN0cmljdGx5IFVuaWZpZWQgUGxhbiBzdHJlYW0gSUQgc3VwcG9y
dC4KKyAgTWFrZVVuaWZpZWRQbGFuRGVzY3JpcHRpb25NdWx0aXBsZVN0cmVhbUlkcygKKyAgICAg
IGNyaWNrZXQ6OmtNc2lkU2lnbmFsaW5nTWVkaWFTZWN0aW9uKTsKKworICBKc2VwU2Vzc2lvbkRl
c2NyaXB0aW9uIGRlc2VyaWFsaXplZF9kZXNjcmlwdGlvbihrRHVtbXlUeXBlKTsKKyAgc3RkOjpz
dHJpbmcgdW5pZmllZF9wbGFuX3NkcF9zdHJpbmcgPQorICAgICAga1VuaWZpZWRQbGFuU2RwRnVs
bFN0cmluZ1dpdGhTcGVjaWFsTXNpZDsKKyAgUmVtb3ZlU3NyY01zaWRMaW5lc0Zyb21TZHBTdHJp
bmcoJnVuaWZpZWRfcGxhbl9zZHBfc3RyaW5nKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBTZHBE
ZXNlcmlhbGl6ZSh1bmlmaWVkX3BsYW5fc2RwX3N0cmluZywgJmRlc2VyaWFsaXplZF9kZXNjcmlw
dGlvbikpOworCisgIEVYUEVDVF9UUlVFKENvbXBhcmVTZXNzaW9uRGVzY3JpcHRpb24oamRlc2Nf
LCBkZXNlcmlhbGl6ZWRfZGVzY3JpcHRpb24pKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIFVuaWZp
ZWQgUGxhbiBzdHlsZSBTRFAgKGRvZXMgbm90IGNvbnRhaW4gImE9c3NyYyBtc2lkIiBsaW5lcwor
Ly8gdGhhdCBzaWduYWwgc3RyZWFtIElEcykgaXMgc2VyaWFsaXplZCBhcHByb3ByaWF0ZWx5LiBJ
dCB0ZXN0cyB0aGUgY2FzZSBmb3Igbm8KKy8vIHN0cmVhbSBpZHMgYW5kIG11bHRpcGxlIHN0cmVh
bSBpZHMuCitURVNUX0YoV2ViUnRjU2RwVGVzdCwgVW5pZmllZFBsYW5TZXJpYWxpemVTZXNzaW9u
RGVzY3JpcHRpb25TcGVjaWFsTXNpZCkgeworICAvLyBPbmx5IGNyZWF0ZSBhPW1zaWQgbGluZXMg
Zm9yIHN0cmljdGx5IFVuaWZpZWQgUGxhbiBzdHJlYW0gSUQgc3VwcG9ydC4KKyAgTWFrZVVuaWZp
ZWRQbGFuRGVzY3JpcHRpb25NdWx0aXBsZVN0cmVhbUlkcygKKyAgICAgIGNyaWNrZXQ6OmtNc2lk
U2lnbmFsaW5nTWVkaWFTZWN0aW9uKTsKKwogICBUZXN0U2VyaWFsaXplKGpkZXNjXyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3dlYnJ0Y3Nlc3Npb25kZXNjcmlwdGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZXNzaW9uZGVzY3JpcHRpb25mYWN0b3J5
LmNjCmluZGV4IDgwOGU0MTFhMzk5ODU4NTJiOTYzMzE3NjY2YmM4ODFiNDhkN2E4YzUuLjA3Yjhl
MTQ3Y2M4Mjc3NDA3ZTI2MTQ2NTg1ZWE2MGE3MGM0MGEyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3Nlc3Npb25kZXNjcmlw
dGlvbmZhY3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvd2VicnRjc2Vzc2lvbmRlc2NyaXB0aW9uZmFjdG9yeS5jYwpAQCAtMTE2LDcgKzEx
Niw2IEBAIHZvaWQgV2ViUnRjU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q29weUNhbmRpZGF0
ZXNGcm9tU2Vzc2lvbkRlc2NyaXB0aW9uKAogICB9CiB9CiAKLS8vIFByaXZhdGUgY29uc3RydWN0
b3IgY2FsbGVkIGJ5IG90aGVyIGNvbnN0cnVjdG9ycy4KIFdlYlJ0Y1Nlc3Npb25EZXNjcmlwdGlv
bkZhY3Rvcnk6OldlYlJ0Y1Nlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnkoCiAgICAgcnRjOjpUaHJl
YWQqIHNpZ25hbGluZ190aHJlYWQsCiAgICAgY3JpY2tldDo6Q2hhbm5lbE1hbmFnZXIqIGNoYW5u
ZWxfbWFuYWdlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAwX3RsbTEwLk9VVDIwLnNoYTEgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9f
Y29kaW5nL0YwMF90bG0xMC5PVVQyMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1Y2I4ZTUyY2IyNWRmMzE0YWY5NjBiMTA0Mjk4MDE0NDUyNTYwOWQyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAwX3RsbTEwLk9VVDIw
LnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi05NmZiNTMyN2ZmN2ExZmU4N2JkNDUx
Mjc3M2NlNzM0N2I0ZDcyODg4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1
ZGlvX2NvZGluZy9GMDBfdGxtMTAuT1VUMzAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAwX3RsbTEwLk9VVDMw
LnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0NzAwMTNiNzJhZjBkZWZmNTg3
NDJmMmNiOWY3ZTU5M2U4ZDBlYWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVz
b3VyY2VzL2F1ZGlvX2NvZGluZy9GMDBfdGxtMTAuT1VUMzAuc2hhMQorKysgL2Rldi9udWxsCkBA
IC0xICswLDAgQEAKLWVhNTI3ZThlNjEyNDFlYTczMjY1YWJiYTU3NjU3OTM1MTFjNDIyOTEKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwMV90bG0xMC5P
VVQyMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVz
b3VyY2VzL2F1ZGlvX2NvZGluZy9GMDFfdGxtMTAuT1VUMjAuc2hhMQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDMzZWI3ZTFjNzQ3NWI4NTRkODMxY2I0Y2JiODJkYmJjMGUyM2ExNS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0Yw
MV90bG0xMC5PVVQyMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotYTVlOGMyNjg5
MzZkN2M4ZDAzZWRkNzA4YzY3NTI1NDQ3NGFlZDk0NApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAxX3RsbTEwLk9VVDMwLnNoYTEgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0Yw
MV90bG0xMC5PVVQzMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTM2NTZm
ZTAxYzBiMzM4M2RhMzY4ZjA1NGZhZjNkMzI5MGVmMDUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAxX3RsbTEwLk9VVDMwLnNoYTEKKysr
IC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi05ODkzNTA0YmRhYTU2MGE0ZGRiNjdhOTllNjcwMWU4
ZDQyNDQ4OTZhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGlu
Zy9GMDJfdGxtMTAuT1VUMjAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAyX3RsbTEwLk9VVDIwLnNoYTEKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YTUyNTM0YjNhZTgxNjBjM2MwNzI0Mjg5Mzg1
NmQ5ZWRjMTlhMjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1
ZGlvX2NvZGluZy9GMDJfdGxtMTAuT1VUMjAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLTVlMDA1M2EwZGU3YjQ3MDg0MDJmY2MwYTFiNWFlMDI0ODE1OTM4YTMKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwMl90bG0xMC5PVVQzMC5zaGEx
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1
ZGlvX2NvZGluZy9GMDJfdGxtMTAuT1VUMzAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDNiYmM5ODY2ZDE1Njg3YzcyNjhkNzU0Y2ZlYTgxYmNlNjZlYTc5OC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwMl90bG0xMC5P
VVQzMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotZDU3OTg2ZDNkYzY1YzFjYWRj
NDE0MTlhNzdlZDE0NzJiNzMwNTBiNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNl
cy9hdWRpb19jb2RpbmcvRjA0LkJJVDIwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNC5CSVQyMC5zaGExCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzA0ZmE0MTgxMWE4OWRlMDhjMTVlMWFmMTgy
MzdjMTUyZGQ2NTUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9h
dWRpb19jb2RpbmcvRjA0LkJJVDIwLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi04
Y2MxZjgyZWUwZDFiN2RmMzk4NDA4OTVkM2U5OTc1NjkyMGI4NWFkClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDQuQklUMzAuc2hhMSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2Rpbmcv
RjA0LkJJVDMwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2Y2JlMTNhZmI0
Yjg3YTExZmY5NjdhMWE1MDE0NjViNDhjN2E5YzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDQuQklUMzAuc2hhMQorKysgL2Rldi9udWxs
CkBAIC0xICswLDAgQEAKLTg1Y2EzZDlhNWNhNjFjMWJiOWQ3OThiYTZkMzU1MTk0NWFiNzY2N2QK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNC5JTlAu
c2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNl
cy9hdWRpb19jb2RpbmcvRjA0LklOUC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1MzExOGZjYjM1YzFkNjJmMWU2NDIyYTAwNGRlZThmMTc4NjAzN2Y2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA0LklOUC5zaGExCisr
KyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotNzMwNTgxMDM1ZDVhZjgzMmQxYjA1YzhmM2E2MjNl
YzkzODYzYjNlMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2Rp
bmcvRjA0Lk9VVDIwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNC5PVVQyMC5zaGExCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmZDI3ZjA0MWUwOWVhYTMxYTk0YTQwYzU4OWM4M2VkNWNlZjJjMzkw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2Rpbmcv
RjA0Lk9VVDIwLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi05ODVlNWZmYTBiOTg3
MThhZmFkZmIxZjAyYjU1OTVmYjI0YTk0NzZjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVz
b3VyY2VzL2F1ZGlvX2NvZGluZy9GMDQuT1VUMzAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA0Lk9VVDMwLnNo
YTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjY2VjNGVmZmVmYjdmZWVmMDQzOWRl
MmE3NmMwOWZkMGNjMmI2ODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3Vy
Y2VzL2F1ZGlvX2NvZGluZy9GMDQuT1VUMzAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLThiMDM1ZmIwZjljZTNiZGMyYWU2Yzk4M2UyMzJjMjU3YTUxNWE3ODEKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5CSVQyMC5zaGExIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2Nv
ZGluZy9GMDUuQklUMjAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlkODJl
NmY1MjFhNzJlMGI5MzM0NWMyOTAzM2VmZGI2ZWM0MTliZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5CSVQyMC5zaGExCisrKyAvZGV2
L251bGwKQEAgLTEgKzAsMCBAQAotOTA2OWZlY2MzY2QxM2JmOTAxNzgxYWY0ZWNlOGIzNzRiNTI4
NTk4NApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1
LkJJVDMwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
ZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5CSVQzMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1MTNjOTM2MmE4OTExOWRiMmM2MmZmMjFlNGY4ZWVmYzE5MzQ3N2E0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1LkJJ
VDMwLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi00NGEwNGUxMzNjMTVlMDEzZjZi
NDQyNDg3NzUyOGE0NDQ1ZTI4YmVmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2Vz
L2F1ZGlvX2NvZGluZy9GMDUuSU5QLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5JTlAuc2hhMQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVlMGEzOWYzY2E0MTJkMGYwNjgzNjgxMjg1OWE4ZjY1
NzU5YjdhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9f
Y29kaW5nL0YwNS5JTlAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWMzZGRlMTBj
MzJmMTJkYTU4MTgxZWNhY2NiN2FlYWE1MTUyMzkyMzMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5PVVQyMC5zaGExIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDUuT1VU
MjAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY1MTQ1MjY1MjFhMDU4OWE0
YTRjYjY4Njc0ZmVlZWQ4Y2JjMjY4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
ZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5PVVQyMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEg
KzAsMCBAQAotMjYwZjUxZjgzMjBkOTJkM2M4YjgzNGMxZjM4ODc5YmFhMTJhN2E1YQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1Lk9VVDMwLnNoYTEg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVk
aW9fY29kaW5nL0YwNS5PVVQzMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
Y2MzMThjOTZmNDk4YjIzNTgxYTdmYjMzNDliYzVmMGQ5ZDUxZDU2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1Lk9VVDMwLnNoYTEKKysr
IC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi03MmFiYjRjMWQ4NGE0Y2ZmMWVmZWQ0ZDNlMDEyODBk
ODM5YTlmNjkxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGlu
Zy9GMDYuQklUMjAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA2LkJJVDIwLnNoYTEKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZiNmUzZGZiNjg0NWI1MTAxNDM0Nzg3ODUxM2FkMGFjMzQ4MGViNDIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9G
MDYuQklUMjAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWI2NTMwMjQ3YWNkZmQ3
YWU3YjNmZDgwYzY3N2Q3MTA0NTM1MWFkMDcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNv
dXJjZXMvYXVkaW9fY29kaW5nL0YwNi5CSVQzMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuQklUMzAuc2hh
MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjlmNzk3NTczMGU1YzFkODQ5NWNmODk4
NzE4YjQyZDgyNmRmMGI1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJj
ZXMvYXVkaW9fY29kaW5nL0YwNi5CSVQzMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBA
QAotMDMxOGRlNGRjNDg0MjJiZmUxMjVmZDZmODI3ZTZlNzExNGRjNjFiYwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA2LklOUC5zaGExIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGlu
Zy9GMDYuSU5QLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMTAyMDk2NTJj
NzZkN2Q0YjdlNWEyOTAzOWU3NTdmN2QxNmU1YzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuSU5QLnNoYTEKKysrIC9kZXYvbnVsbApA
QCAtMSArMCwwIEBACi04MDM1OWNmZjcyY2JkYzA0YTMzN2E1MWMyZmNjMGM3NDg5MDcxMGI0Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuT1VUMjAu
c2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNl
cy9hdWRpb19jb2RpbmcvRjA2Lk9VVDIwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdkNTBkZjgyNThkMzM0ZDBmMmU0OTQ0N2ZkZDBjY2UyZTNiMjYyNTUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuT1VUMjAuc2hh
MQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWM3YmM3MWFiYzk3MzQ0MDEyM2E1MTdmNjFl
M2RiY2I5NjA4OWVlM2YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9f
Y29kaW5nL0YwNi5PVVQzMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuT1VUMzAuc2hhMQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ5MjE5ZGQwYWQwN2Y3YjIyNDA1NzYyNjUzOGNmOGM4YmEy
MjZkNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29k
aW5nL0YwNi5PVVQzMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotNWZkZTJkZWZk
MjM1MGI1Y2E3ZDNiOGY4Y2VlZjc1ZDJiN2ZkN2YwMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Jlc291cmNlcy9hdWRpb19jb2RpbmcvdGxtMTAuY2huLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL3RsbTEwLmNo
bi5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDFmNDQ4N2JjNjM2NTc4Yjk0
ZDlmZTY1ZWU3NDc5NGRhNTU3ZjAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jl
c291cmNlcy9hdWRpb19jb2RpbmcvdGxtMTAuY2huLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSAr
MCwwIEBACi0yMWM3ODUxNmMyNDcwNjY3YTc1YzdlZDg1ZmUzN2M1M2EzNTE0NDU2ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9CVUlMRC5nbgppbmRleCBlOWVmYmQxMzYw
ZjEyNGIyOTcxMTA0ZDM2ODA5MGZmMTIxMzRkNDNhLi43NWM0Mzk3YWI3ZDQ4YWZjMTc3NWFkYWVi
MzYyZjQ4MjcyMjQwNGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9CVUlMRC5nbgpAQCAtNjcsOSArNjcsMTAy
IEBAIHJ0Y19zb3VyY2Vfc2V0KCJjb21waWxlX2Fzc2VydF9jIikgewogICBdCiB9CiAKKyMgVGhl
IHN1YnNldCBvZiBydGNfYmFzZSBhcHByb3ZlZCBmb3IgdXNlIG91dHNpZGUgb2YgbGliamluZ2xl
LgorIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85ODM4KTogQ3JlYXRlIHNtYWxsIGFuZCBmb2N1c2Vk
IGJ1aWxkIHRhcmdldHMgYW5kIHJlbW92ZQorIyB0aGUgb2xkIGNvbmNlcHQgb2YgcnRjX2Jhc2Ug
YW5kIHJ0Y19iYXNlX2FwcHJvdmVkLgogcnRjX3NvdXJjZV9zZXQoInJ0Y19iYXNlX2FwcHJvdmVk
IikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQotICBwdWJsaWNfZGVwcyA9IFsKKyAgZGVwcyA9
IFsKKyAgICAiOmNoZWNrcyIsCisgICAgIjpydGNfdGFza19xdWV1ZSIsCisgICAgIjpzYWZlX2Nv
bXBhcmUiLAorICAgICI6c2FmZV9taW5tYXgiLAorICAgICI6dHlwZV90cmFpdHMiLAorICAgICIu
Li9hcGk6YXJyYXlfdmlldyIsCisgICAgIi4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIs
CisgICAgImV4cGVyaW1lbnRzOmZpZWxkX3RyaWFsX3BhcnNlciIsCisgICAgInN5c3RlbTphcmNo
IiwKKyAgICAic3lzdGVtOnVudXNlZCIsCisgICAgInRoaXJkX3BhcnR5L2Jhc2U2NCIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeTptZW1vcnkiLAorICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KKworICBzb3Vy
Y2VzID0gWworICAgICJiaW5kLmgiLAorICAgICJiaXRidWZmZXIuY2MiLAorICAgICJiaXRidWZm
ZXIuaCIsCisgICAgImJpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuY2MiLAorICAgICJiaXRyYXRl
YWxsb2NhdGlvbnN0cmF0ZWd5LmgiLAorICAgICJidWZmZXIuaCIsCisgICAgImJ1ZmZlcnF1ZXVl
LmNjIiwKKyAgICAiYnVmZmVycXVldWUuaCIsCisgICAgImJ5dGVidWZmZXIuY2MiLAorICAgICJi
eXRlYnVmZmVyLmgiLAorICAgICJieXRlb3JkZXIuaCIsCisgICAgImNvcHlvbndyaXRlYnVmZmVy
LmNjIiwKKyAgICAiY29weW9ud3JpdGVidWZmZXIuaCIsCisgICAgImV2ZW50X3RyYWNlci5jYyIs
CisgICAgImV2ZW50X3RyYWNlci5oIiwKKyAgICAiZmlsZS5jYyIsCisgICAgImZpbGUuaCIsCisg
ICAgImZsYWdzLmNjIiwKKyAgICAiZmxhZ3MuaCIsCisgICAgImZ1bmN0aW9uX3ZpZXcuaCIsCisg
ICAgImlnbm9yZV93dW5kZWYuaCIsCisgICAgImxvY2F0aW9uLmNjIiwKKyAgICAibG9jYXRpb24u
aCIsCisgICAgIm1lc3NhZ2VfYnVmZmVyX3JlYWRlci5oIiwKKyAgICAibnVtZXJpY3MvaGlzdG9n
cmFtX3BlcmNlbnRpbGVfY291bnRlci5jYyIsCisgICAgIm51bWVyaWNzL2hpc3RvZ3JhbV9wZXJj
ZW50aWxlX2NvdW50ZXIuaCIsCisgICAgIm51bWVyaWNzL21vZF9vcHMuaCIsCisgICAgIm51bWVy
aWNzL21vdmluZ19tYXhfY291bnRlci5oIiwKKyAgICAibnVtZXJpY3Mvc2FtcGxlX2NvdW50ZXIu
Y2MiLAorICAgICJudW1lcmljcy9zYW1wbGVfY291bnRlci5oIiwKKyAgICAib25ldGltZWV2ZW50
LmgiLAorICAgICJwbGF0Zm9ybV9maWxlLmNjIiwKKyAgICAicGxhdGZvcm1fZmlsZS5oIiwKKyAg
ICAicmFjZV9jaGVja2VyLmNjIiwKKyAgICAicmFjZV9jaGVja2VyLmgiLAorICAgICJyYW5kb20u
Y2MiLAorICAgICJyYW5kb20uaCIsCisgICAgInJhdGVfc3RhdGlzdGljcy5jYyIsCisgICAgInJh
dGVfc3RhdGlzdGljcy5oIiwKKyAgICAicmF0ZXRyYWNrZXIuY2MiLAorICAgICJyYXRldHJhY2tl
ci5oIiwKKyAgICAic3dhcF9xdWV1ZS5oIiwKKyAgICAidGVtcGxhdGVfdXRpbC5oIiwKKyAgICAi
dGltZXN0YW1wYWxpZ25lci5jYyIsCisgICAgInRpbWVzdGFtcGFsaWduZXIuaCIsCisgICAgInRy
YWNlX2V2ZW50LmgiLAorICAgICJ6ZXJvX21lbW9yeS5jYyIsCisgICAgInplcm9fbWVtb3J5Lmgi
LAorICBdCisKKyAgaWYgKGlzX3Bvc2l4IHx8IGlzX2Z1Y2hzaWEpIHsKKyAgICBzb3VyY2VzICs9
IFsgImZpbGVfcG9zaXguY2MiIF0KKyAgfQorCisgIGlmIChpc193aW4pIHsKKyAgICBzb3VyY2Vz
ICs9IFsKKyAgICAgICJmaWxlX3dpbi5jYyIsCisgICAgICAid2luL3dpbmRvd3NfdmVyc2lvbi5j
YyIsCisgICAgICAid2luL3dpbmRvd3NfdmVyc2lvbi5oIiwKKyAgICBdCisgICAgZGF0YV9kZXBz
ID0gWworICAgICAgIi8vYnVpbGQvd2luOnJ1bnRpbWVfbGlicyIsCisgICAgXQorICB9CisKKyAg
aWYgKGlzX25hY2wpIHsKKyAgICBkZXBzICs9IFsgIi8vbmF0aXZlX2NsaWVudF9zZGsvc3JjL2xp
YnJhcmllcy9uYWNsX2lvIiBdCisgIH0KKworICBpZiAoaXNfYW5kcm9pZCkgeworICAgIGxpYnMg
PSBbICJsb2ciIF0KKyAgfQorCisgIHB1YmxpY19kZXBzID0gWyAgIyBuby1wcmVzdWJtaXQtY2hl
Y2sgVE9ETyh3ZWJydGM6ODYwMykKICAgICAiOmF0b21pY29wcyIsCiAgICAgIjpjcml0aWNhbHNl
Y3Rpb24iLAogICAgICI6bG9nZ2luZyIsCkBAIC03OCwxNiArMTcxLDEyIEBAIHJ0Y19zb3VyY2Vf
c2V0KCJydGNfYmFzZV9hcHByb3ZlZCIpIHsKICAgICAiOnBsYXRmb3JtX3RocmVhZF90eXBlcyIs
CiAgICAgIjpwdHJfdXRpbCIsCiAgICAgIjpyZWZjb3VudCIsCi0gICAgIjpydGNfYmFzZV9hcHBy
b3ZlZF9nZW5lcmljIiwKICAgICAiOnJ0Y19ldmVudCIsCiAgICAgIjpzYWZlX2NvbnZlcnNpb25z
IiwKICAgICAiOnN0cmluZ3V0aWxzIiwKICAgICAiOnRocmVhZF9jaGVja2VyIiwKICAgICAiOnRp
bWV1dGlscyIsCiAgIF0KLSAgaWYgKGlzX21hYyAmJiAhYnVpbGRfd2l0aF9jaHJvbWl1bSkgewot
ICAgIHB1YmxpY19kZXBzICs9IFsgIjpydGNfYmFzZV9hcHByb3ZlZF9vYmpjIiBdCi0gIH0KIH0K
IAogcnRjX3NvdXJjZV9zZXQoIm1hY3JvbWFnaWMiKSB7CkBAIC0xMTcsNiArMjA2LDkgQEAgcnRj
X3NvdXJjZV9zZXQoInB0cl91dGlsIikgewogICBzb3VyY2VzID0gWwogICAgICJzY29wZWRfcmVm
X3B0ci5oIiwKICAgXQorICBkZXBzID0gWworICAgICIuLi9hcGk6c2NvcGVkX3JlZnB0ciIsCisg
IF0KIH0KIAogcnRjX3NvdXJjZV9zZXQoInJlZmNvdW50IikgewpAQCAtMTQ5LDkgKzI0MSw5IEBA
IHJ0Y19zb3VyY2Vfc2V0KCJjcml0aWNhbHNlY3Rpb24iKSB7CiBydGNfc291cmNlX3NldCgicGxh
dGZvcm1fdGhyZWFkIikgewogICB2aXNpYmlsaXR5ID0gWwogICAgICI6cnRjX2Jhc2VfYXBwcm92
ZWQiLAotICAgICI6cnRjX2Jhc2VfYXBwcm92ZWRfZ2VuZXJpYyIsCiAgICAgIjpydGNfdGFza19x
dWV1ZV9saWJldmVudCIsCiAgICAgIjpydGNfdGFza19xdWV1ZV93aW4iLAorICAgICI6cnRjX3Rh
c2tfcXVldWVfc3RkbGliIiwKICAgICAiOnNlcXVlbmNlZF90YXNrX2NoZWNrZXIiLAogICBdCiAg
IHNvdXJjZXMgPSBbCkBAIC0xNzIsNyArMjY0LDYgQEAgcnRjX3NvdXJjZV9zZXQoInBsYXRmb3Jt
X3RocmVhZCIpIHsKIHJ0Y19zb3VyY2Vfc2V0KCJydGNfZXZlbnQiKSB7CiAgIGRlcHMgPSBbCiAg
ICAgIjpjaGVja3MiLAotICAgICI6bWFjcm9tYWdpYyIsCiAgIF0KIAogICBpZiAoYnVpbGRfd2l0
aF9jaHJvbWl1bSkgewpAQCAtMTkyLDcgKzI4Myw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfZXZl
bnQiKSB7CiAKIHJ0Y19zb3VyY2Vfc2V0KCJsb2dnaW5nIikgewogICB2aXNpYmlsaXR5ID0gWyAi
KiIgXQorICBsaWJzID0gW10KICAgZGVwcyA9IFsKKyAgICAiOmNoZWNrcyIsCiAgICAgIjpjcml0
aWNhbHNlY3Rpb24iLAogICAgICI6bWFjcm9tYWdpYyIsCiAgICAgIjpwbGF0Zm9ybV90aHJlYWRf
dHlwZXMiLApAQCAtMjE5LDkgKzMxMiwxNyBAQCBydGNfc291cmNlX3NldCgibG9nZ2luZyIpIHsK
ICAgICBdCiAgICAgZGVwcyArPSBbICJzeXN0ZW06aW5saW5lIiBdCiAKKyAgICBpZiAoaXNfbWFj
KSB7CisgICAgICBkZXBzICs9IFsgIjpsb2dnaW5nX21hYyIgXQorICAgIH0KKwogICAgICMgbG9n
Z2luZy5oIG5lZWRzIHRoZSBkZXByZWNhdGlvbiBoZWFkZXIgd2hpbGUgZG93bnN0cmVhbSBwcm9q
ZWN0cyBhcmUKICAgICAjIHJlbW92aW5nIGNvZGUgdGhhdCBkZXBlbmRzIG9uIGxvZ2dpbmcgaW1w
bGVtZW50YXRpb24gZGV0YWlscy4KICAgICBkZXBzICs9IFsgIjpkZXByZWNhdGlvbiIgXQorCisg
ICAgaWYgKGlzX2FuZHJvaWQpIHsKKyAgICAgIGxpYnMgKz0gWyAibG9nIiBdCisgICAgfQogICB9
CiB9CiAKQEAgLTI0OCw2ICszNDksNyBAQCBydGNfc291cmNlX3NldCgiYXRvbWljb3BzIikgewog
cnRjX3NvdXJjZV9zZXQoImNoZWNrcyIpIHsKICAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NjA3
KTogVGhpcyBzaG91bGQgbm90IGJlIHB1YmxpYy4KICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAg
bGlicyA9IFtdCiAgIHNvdXJjZXMgPSBbCiAgICAgImNoZWNrcy5jYyIsCiAgICAgImNoZWNrcy5o
IiwKQEAgLTI1Niw2ICszNTgsOSBAQCBydGNfc291cmNlX3NldCgiY2hlY2tzIikgewogICAgICI6
c2FmZV9jb21wYXJlIiwKICAgICAic3lzdGVtOmlubGluZSIsCiAgIF0KKyAgaWYgKGlzX2FuZHJv
aWQpIHsKKyAgICBsaWJzICs9IFsgImxvZyIgXQorICB9CiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJy
YXRlX2xpbWl0ZXIiKSB7CkBAIC0yNjYsNiArMzcxLDcgQEAgcnRjX3NvdXJjZV9zZXQoInJhdGVf
bGltaXRlciIpIHsKICAgZGVwcyA9IFsKICAgICAiOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAi
Li4vc3lzdGVtX3dyYXBwZXJzIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CiAKQEAgLTI3Myw2ICszNzksOSBAQCBydGNfc291cmNl
X3NldCgic2FuaXRpemVyIikgewogICBzb3VyY2VzID0gWwogICAgICJzYW5pdGl6ZXIuaCIsCiAg
IF0KKyAgZGVwcyA9IFsKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YTp0
eXBlX3RyYWl0cyIsCisgIF0KIH0KIAogcnRjX3NvdXJjZV9zZXQoInNhZmVfY29tcGFyZSIpIHsK
QEAgLTM2MiwxMzcgKzQ3MSwxNCBAQCBydGNfc291cmNlX3NldCgiZGVwcmVjYXRpb24iKSB7CiAg
IF0KIH0KIAotIyBUaGUgc3Vic2V0IG9mIHJ0Y19iYXNlIGFwcHJvdmVkIGZvciB1c2Ugb3V0c2lk
ZSBvZiBsaWJqaW5nbGUuCi1ydGNfc291cmNlX3NldCgicnRjX2Jhc2VfYXBwcm92ZWRfZ2VuZXJp
YyIpIHsKLSAgdmlzaWJpbGl0eSA9IFsKLSAgICAiOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAi
OndlYWtfcHRyX3VuaXR0ZXN0cyIsCi0gIF0KLQotICBjZmxhZ3MgPSBbXQotICBkZWZpbmVzID0g
W10KLSAgbGlicyA9IFtdCi0gIGRhdGFfZGVwcyA9IFtdCi0gIGRlcHMgPSBbCi0gICAgIjphdG9t
aWNvcHMiLAotICAgICI6Y2hlY2tzIiwKLSAgICAiOmNyaXRpY2Fsc2VjdGlvbiIsCi0gICAgIjps
b2dnaW5nIiwKLSAgICAiOm1hY3JvbWFnaWMiLAotICAgICI6cGxhdGZvcm1fdGhyZWFkIiwKLSAg
ICAiOnBsYXRmb3JtX3RocmVhZF90eXBlcyIsCi0gICAgIjpwdHJfdXRpbCIsCi0gICAgIjpyZWZj
b3VudCIsCi0gICAgIjpydGNfZXZlbnQiLAotICAgICI6cnRjX3Rhc2tfcXVldWUiLAotICAgICI6
c2FmZV9jb21wYXJlIiwKLSAgICAiOnNhZmVfY29udmVyc2lvbnMiLAotICAgICI6c3RyaW5ndXRp
bHMiLAotICAgICI6dGhyZWFkX2NoZWNrZXIiLAotICAgICI6dGltZXV0aWxzIiwKLSAgICAiOnR5
cGVfdHJhaXRzIiwKLSAgICAic3lzdGVtOmFyY2giLAotICAgICJzeXN0ZW06dW51c2VkIiwKLSAg
ICAidGhpcmRfcGFydHkvYmFzZTY0IiwKLSAgXQotCi0gIHNvdXJjZXMgPSBbCi0gICAgImJpbmQu
aCIsCi0gICAgImJpdGJ1ZmZlci5jYyIsCi0gICAgImJpdGJ1ZmZlci5oIiwKLSAgICAiYml0cmF0
ZWFsbG9jYXRpb25zdHJhdGVneS5jYyIsCi0gICAgImJpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3ku
aCIsCi0gICAgImJ1ZmZlci5oIiwKLSAgICAiYnVmZmVycXVldWUuY2MiLAotICAgICJidWZmZXJx
dWV1ZS5oIiwKLSAgICAiYnl0ZWJ1ZmZlci5jYyIsCi0gICAgImJ5dGVidWZmZXIuaCIsCi0gICAg
ImJ5dGVvcmRlci5oIiwKLSAgICAiY29weW9ud3JpdGVidWZmZXIuY2MiLAotICAgICJjb3B5b253
cml0ZWJ1ZmZlci5oIiwKLSAgICAiZXZlbnRfdHJhY2VyLmNjIiwKLSAgICAiZXZlbnRfdHJhY2Vy
LmgiLAotICAgICJmaWxlLmNjIiwKLSAgICAiZmlsZS5oIiwKLSAgICAiZmxhZ3MuY2MiLAotICAg
ICJmbGFncy5oIiwKLSAgICAiZnVuY3Rpb25fdmlldy5oIiwKLSAgICAiaWdub3JlX3d1bmRlZi5o
IiwKLSAgICAibG9jYXRpb24uY2MiLAotICAgICJsb2NhdGlvbi5oIiwKLSAgICAibWVzc2FnZV9i
dWZmZXJfcmVhZGVyLmgiLAotICAgICJudW1lcmljcy9oaXN0b2dyYW1fcGVyY2VudGlsZV9jb3Vu
dGVyLmNjIiwKLSAgICAibnVtZXJpY3MvaGlzdG9ncmFtX3BlcmNlbnRpbGVfY291bnRlci5oIiwK
LSAgICAibnVtZXJpY3MvbW9kX29wcy5oIiwKLSAgICAibnVtZXJpY3MvbW92aW5nX21heF9jb3Vu
dGVyLmgiLAotICAgICJudW1lcmljcy9zYW1wbGVfY291bnRlci5jYyIsCi0gICAgIm51bWVyaWNz
L3NhbXBsZV9jb3VudGVyLmgiLAotICAgICJvbmV0aW1lZXZlbnQuaCIsCi0gICAgInBhdGh1dGls
cy5jYyIsCi0gICAgInBhdGh1dGlscy5oIiwKLSAgICAicGxhdGZvcm1fZmlsZS5jYyIsCi0gICAg
InBsYXRmb3JtX2ZpbGUuaCIsCi0gICAgInJhY2VfY2hlY2tlci5jYyIsCi0gICAgInJhY2VfY2hl
Y2tlci5oIiwKLSAgICAicmFuZG9tLmNjIiwKLSAgICAicmFuZG9tLmgiLAotICAgICJyYXRlX3N0
YXRpc3RpY3MuY2MiLAotICAgICJyYXRlX3N0YXRpc3RpY3MuaCIsCi0gICAgInJhdGV0cmFja2Vy
LmNjIiwKLSAgICAicmF0ZXRyYWNrZXIuaCIsCi0gICAgInN3YXBfcXVldWUuaCIsCi0gICAgInRl
bXBsYXRlX3V0aWwuaCIsCi0gICAgInRpbWVzdGFtcGFsaWduZXIuY2MiLAotICAgICJ0aW1lc3Rh
bXBhbGlnbmVyLmgiLAotICAgICJ0cmFjZV9ldmVudC5oIiwKLSAgICAiemVyb19tZW1vcnkuY2Mi
LAotICAgICJ6ZXJvX21lbW9yeS5oIiwKLSAgXQotCi0gIGRlcHMgKz0gWwotICAgICIuLjp3ZWJy
dGNfY29tbW9uIiwKLSAgICAiLi4vYXBpOmFycmF5X3ZpZXciLAotICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnk6bWVtb3J5IiwKLSAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAotICBdCi0KLSAgaWYgKGlzX2FuZHJvaWQpIHsK
LSAgICBsaWJzICs9IFsgImxvZyIgXQotICB9Ci0KLSAgaWYgKGlzX3Bvc2l4IHx8IGlzX2Z1Y2hz
aWEpIHsKLSAgICBzb3VyY2VzICs9IFsgImZpbGVfcG9zaXguY2MiIF0KLSAgfQotCi0gIGlmIChp
c193aW4pIHsKLSAgICBzb3VyY2VzICs9IFsKLSAgICAgICJmaWxlX3dpbi5jYyIsCi0gICAgICAi
d2luL3dpbmRvd3NfdmVyc2lvbi5jYyIsCi0gICAgICAid2luL3dpbmRvd3NfdmVyc2lvbi5oIiwK
LSAgICBdCi0gICAgZGF0YV9kZXBzICs9IFsgIi8vYnVpbGQvd2luOnJ1bnRpbWVfbGlicyIgXQot
ICB9Ci0KLSAgaWYgKGlzX25hY2wpIHsKLSAgICBkZXBzICs9IFsgIi8vbmF0aXZlX2NsaWVudF9z
ZGsvc3JjL2xpYnJhcmllcy9uYWNsX2lvIiBdCi0gIH0KLX0KLQogaWYgKGlzX21hYyAmJiAhYnVp
bGRfd2l0aF9jaHJvbWl1bSkgewotICBjb25maWcoInJ0Y19iYXNlX2FwcHJvdmVkX29iamNfYWxs
X2RlcGVuZGVudF9jb25maWciKSB7Ci0gICAgdmlzaWJpbGl0eSA9IFsgIjpydGNfYmFzZV9hcHBy
b3ZlZF9vYmpjIiBdCi0gICAgbGlicyA9IFsgIkZvdW5kYXRpb24uZnJhbWV3b3JrIiBdICAjIG5l
ZWRlZCBmb3IgbG9nZ2luZ19tYWMubW0KLSAgfQotCi0gIHJ0Y19zb3VyY2Vfc2V0KCJydGNfYmFz
ZV9hcHByb3ZlZF9vYmpjIikgewotICAgIHZpc2liaWxpdHkgPSBbICI6cnRjX2Jhc2VfYXBwcm92
ZWQiIF0KLSAgICBhbGxfZGVwZW5kZW50X2NvbmZpZ3MgPSBbICI6cnRjX2Jhc2VfYXBwcm92ZWRf
b2JqY19hbGxfZGVwZW5kZW50X2NvbmZpZyIgXQorICBydGNfc291cmNlX3NldCgibG9nZ2luZ19t
YWMiKSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIjpsb2dnaW5nIiBdCisgICAgbGlicyA9IFsgIkZv
dW5kYXRpb24uZnJhbWV3b3JrIiBdCiAgICAgc291cmNlcyA9IFsKKyAgICAgICJsb2dnaW5nX21h
Yy5oIiwKICAgICAgICJsb2dnaW5nX21hYy5tbSIsCiAgICAgXQotICAgIGRlcHMgPSBbCi0gICAg
ICAiOmxvZ2dpbmciLAotICAgIF0KICAgfQogfQogCkBAIC01MjksNiArNTE1LDcgQEAgcnRjX3Nv
dXJjZV9zZXQoInJ0Y190YXNrX3F1ZXVlX2FwaSIpIHsKICAgZGVwcyA9IFsKICAgICAiOm1hY3Jv
bWFnaWMiLAogICAgICI6cHRyX3V0aWwiLAorICAgICJzeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIH0KQEAgLTU2NSw3
ICs1NTIsOSBAQCBpZiAocnRjX2VuYWJsZV9saWJldmVudCkgewogICAgICAgIjpjaGVja3MiLAog
ICAgICAgIjpjcml0aWNhbHNlY3Rpb24iLAogICAgICAgIjpsb2dnaW5nIiwKKyAgICAgICI6bWFj
cm9tYWdpYyIsCiAgICAgICAiOnBsYXRmb3JtX3RocmVhZCIsCisgICAgICAiOnBsYXRmb3JtX3Ro
cmVhZF90eXBlcyIsCiAgICAgICAiOnB0cl91dGlsIiwKICAgICAgICI6cmVmY291bnQiLAogICAg
ICAgIjpydGNfdGFza19xdWV1ZV9hcGkiLApAQCAtNjE5LDYgKzYwOCwyNiBAQCBpZiAoaXNfd2lu
KSB7CiAgIH0KIH0KIAorcnRjX3NvdXJjZV9zZXQoInJ0Y190YXNrX3F1ZXVlX3N0ZGxpYiIpIHsK
KyAgdmlzaWJpbGl0eSA9IFsgIjpydGNfdGFza19xdWV1ZV9pbXBsIiBdCisgIHNvdXJjZXMgPSBb
CisgICAgInRhc2tfcXVldWVfc3RkbGliLmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y2hl
Y2tzIiwKKyAgICAiOmNyaXRpY2Fsc2VjdGlvbiIsCisgICAgIjpsb2dnaW5nIiwKKyAgICAiOm1h
Y3JvbWFnaWMiLAorICAgICI6cGxhdGZvcm1fdGhyZWFkIiwKKyAgICAiOnB0cl91dGlsIiwKKyAg
ICAiOnJlZmNvdW50IiwKKyAgICAiOnJ0Y19ldmVudCIsCisgICAgIjpydGNfdGFza19xdWV1ZV9h
cGkiLAorICAgICI6c2FmZV9jb252ZXJzaW9ucyIsCisgICAgIjp0aW1ldXRpbHMiLAorICBdCit9
CisKIHJ0Y19zb3VyY2Vfc2V0KCJydGNfdGFza19xdWV1ZV9pbXBsIikgewogICB2aXNpYmlsaXR5
ID0gWyAiKiIgXQogICBpZiAocnRjX2VuYWJsZV9saWJldmVudCkgewpAQCAtNjMyLDkgKzY0MSwx
NSBAQCBydGNfc291cmNlX3NldCgicnRjX3Rhc2tfcXVldWVfaW1wbCIpIHsKICAgICAgIF0KICAg
ICB9CiAgICAgaWYgKGlzX3dpbikgewotICAgICAgZGVwcyA9IFsKLSAgICAgICAgIjpydGNfdGFz
a19xdWV1ZV93aW4iLAotICAgICAgXQorICAgICAgaWYgKGN1cnJlbnRfb3MgPT0gIndpbnV3cCIp
IHsKKyAgICAgICAgZGVwcyA9IFsKKyAgICAgICAgICAiOnJ0Y190YXNrX3F1ZXVlX3N0ZGxpYiIs
CisgICAgICAgIF0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGRlcHMgPSBbCisgICAgICAgICAg
IjpydGNfdGFza19xdWV1ZV93aW4iLAorICAgICAgICBdCisgICAgICB9CiAgICAgfQogICB9CiB9
CkBAIC02NzAsNiArNjg1LDggQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfbnVtZXJpY3MiKSB7
CiAgIHNvdXJjZXMgPSBbCiAgICAgIm51bWVyaWNzL2V4cF9maWx0ZXIuY2MiLAogICAgICJudW1l
cmljcy9leHBfZmlsdGVyLmgiLAorICAgICJudW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5jYyIsCisg
ICAgIm51bWVyaWNzL21vdmluZ19hdmVyYWdlLmgiLAogICAgICJudW1lcmljcy9tb3ZpbmdfbWVk
aWFuX2ZpbHRlci5oIiwKICAgICAibnVtZXJpY3MvcGVyY2VudGlsZV9maWx0ZXIuaCIsCiAgICAg
Im51bWVyaWNzL3NlcXVlbmNlX251bWJlcl91dGlsLmgiLApAQCAtNzA3LDQ4ICs3MjQsMjMgQEAg
cnRjX3NvdXJjZV9zZXQoInJ0Y19qc29uIikgewogCiBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19i
YXNlIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQotICBwdWJsaWNfZGVwcyA9IFtdCi0gIGlm
ICghYnVpbGRfd2l0aF9tb3ppbGxhKSB7Ci0gICAgcHVibGljX2RlcHMgKz0gWyAiOnJ0Y19iYXNl
X2dlbmVyaWMiIF0KLSAgfQotICBpZiAoaXNfd2luKSB7Ci0gICAgc291cmNlcyA9IFsKLSAgICAg
ICJub29wLmNjIiwKLSAgICBdCi0gIH0KLSAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKLSAgICBz
b3VyY2VzID0gWwotICAgICAgIm5vb3AubW0iLAotICAgIF0KLSAgICBwdWJsaWNfZGVwcyArPSBb
ICI6cnRjX2Jhc2Vfb2JqYyIgXQotICB9Ci19Ci0KLWlmIChpc19pb3MgfHwgaXNfbWFjKSB7Ci0g
IHJ0Y19zb3VyY2Vfc2V0KCJydGNfYmFzZV9vYmpjIikgewotICAgIHNvdXJjZXMgPSBbCi0gICAg
ICAidGhyZWFkX2Rhcndpbi5tbSIsCi0gICAgXQotICAgIGRlcHMgPSBbCi0gICAgICAiOnJ0Y19i
YXNlX2dlbmVyaWMiLAotICAgIF0KLSAgICB2aXNpYmlsaXR5ID0gWyAiOnJ0Y19iYXNlIiBdCi0g
IH0KLX0KLQotcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewogICBjZmxh
Z3MgPSBbXQogICBjZmxhZ3NfY2MgPSBbXQogICBsaWJzID0gW10KICAgZGVmaW5lcyA9IFtdCiAg
IGRlcHMgPSBbCiAgICAgIjpjaGVja3MiLAorCisgICAgIyBGb3IgZGVwcmVjYXRpb24gb2YgcnRj
OjpQYWNrZXRUaW1lLCBpbiBhc3luY3BhY2tldHNvY2tldC5oLgorICAgICI6ZGVwcmVjYXRpb24i
LAogICAgICI6c3RyaW5ndXRpbHMiLAogICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4v
YXBpOmFycmF5X3ZpZXciLAorICAgICJuZXR3b3JrOnNlbnRfcGFja2V0IiwKICAgICAidGhpcmRf
cGFydHkvYmFzZTY0IiwKICAgICAidGhpcmRfcGFydHkvc2lnc2xvdCIsCiAgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
eXBlczpvcHRpb25hbCIsCiAgIF0KICAgcHVibGljX2RlcHMgPSBbCkBAIC03ODEsOCArNzczLDYg
QEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewogICAgICJkc2NwLmgi
LAogICAgICJmaWxlcm90YXRpbmdzdHJlYW0uY2MiLAogICAgICJmaWxlcm90YXRpbmdzdHJlYW0u
aCIsCi0gICAgImZpbGV1dGlscy5jYyIsCi0gICAgImZpbGV1dGlscy5oIiwKICAgICAiZ3VuaXRf
cHJvZC5oIiwKICAgICAiaGVscGVycy5jYyIsCiAgICAgImhlbHBlcnMuaCIsCkBAIC03OTEsNiAr
NzgxLDggQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewogICAgICJp
cGFkZHJlc3MuY2MiLAogICAgICJpcGFkZHJlc3MuaCIsCiAgICAgImtlZXBfcmVmX3VudGlsX2Rv
bmUuaCIsCisgICAgImtleV9kZXJpdmF0aW9uLmNjIiwKKyAgICAia2V5X2Rlcml2YXRpb24uaCIs
CiAgICAgIm1kbnNfcmVzcG9uZGVyX2ludGVyZmFjZS5oIiwKICAgICAibWVzc2FnZWRpZ2VzdC5j
YyIsCiAgICAgIm1lc3NhZ2VkaWdlc3QuaCIsCkBAIC04MTEsNiArODAzLDggQEAgcnRjX3N0YXRp
Y19saWJyYXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewogICAgICJudWxsc29ja2V0c2VydmVyLmNj
IiwKICAgICAibnVsbHNvY2tldHNlcnZlci5oIiwKICAgICAib3BlbnNzbC5oIiwKKyAgICAib3Bl
bnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmNjIiwKKyAgICAib3BlbnNzbF9rZXlfZGVyaXZhdGlv
bl9oa2RmLmgiLAogICAgICJvcGVuc3NsYWRhcHRlci5jYyIsCiAgICAgIm9wZW5zc2xhZGFwdGVy
LmgiLAogICAgICJvcGVuc3NsY2VydGlmaWNhdGUuY2MiLApAQCAtODQ2LDggKzg0MCw2IEBAIHJ0
Y19zdGF0aWNfbGlicmFyeSgicnRjX2Jhc2VfZ2VuZXJpYyIpIHsKICAgICAic29ja2V0YWRkcmVz
c3BhaXIuaCIsCiAgICAgInNvY2tldGZhY3RvcnkuaCIsCiAgICAgInNvY2tldHNlcnZlci5oIiwK
LSAgICAic29ja2V0c3RyZWFtLmNjIiwKLSAgICAic29ja2V0c3RyZWFtLmgiLAogICAgICJzc2xh
ZGFwdGVyLmNjIiwKICAgICAic3NsYWRhcHRlci5oIiwKICAgICAic3NsY2VydGlmaWNhdGUuY2Mi
LApAQCAtODY0LDExICs4NTYsNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19iYXNlX2dlbmVy
aWMiKSB7CiAgICAgInRocmVhZC5oIiwKICAgXQogCi0gIHZpc2liaWxpdHkgPSBbCi0gICAgIjpy
dGNfYmFzZSIsCi0gICAgIjpydGNfYmFzZV9vYmpjIiwKLSAgXQotCiAgIGlmIChidWlsZF93aXRo
X2Nocm9taXVtKSB7CiAgICAgaW5jbHVkZV9kaXJzID0gWyAiLi4vLi4vYm9yaW5nc3NsL3NyYy9p
bmNsdWRlIiBdCiAgICAgcHVibGljX2NvbmZpZ3MgKz0gWyAiOnJ0Y19iYXNlX2Nocm9taXVtX2Nv
bmZpZyIgXQpAQCAtODc4LDggKzg2NSw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2Jhc2Vf
Z2VuZXJpYyIpIHsKICAgICAgICJsb2dzaW5rcy5jYyIsCiAgICAgICAibG9nc2lua3MuaCIsCiAg
ICAgICAibnVtZXJpY3MvbWF0aHV0aWxzLmgiLAotICAgICAgIm9wdGlvbnNmaWxlLmNjIiwKLSAg
ICAgICJvcHRpb25zZmlsZS5oIiwKICAgICAgICJyb2xsaW5nYWNjdW11bGF0b3IuaCIsCiAgICAg
ICAic3Nscm9vdHMuaCIsCiAgICAgXQpAQCAtOTEzLDYgKzg5OCw3IEBAIHJ0Y19zdGF0aWNfbGli
cmFyeSgicnRjX2Jhc2VfZ2VuZXJpYyIpIHsKIAogICBpZiAoaXNfaW9zIHx8IGlzX21hYykgewog
ICAgIHNvdXJjZXMgKz0gWyAibWFjaWZhZGRyc19jb252ZXJ0ZXIuY2MiIF0KKyAgICBkZXBzICs9
IFsgInN5c3RlbTpjb2NvYV90aHJlYWRpbmciIF0KICAgfQogCiAgIGlmIChydGNfdXNlX3gxMSkg
ewpAQCAtOTM4LDE4ICs5MjQsMTIgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYmFzZV9nZW5l
cmljIikgewogICAgICAgIm1hY3V0aWxzLmNjIiwKICAgICAgICJtYWN1dGlscy5oIiwKICAgICBd
Ci0gICAgbGlicyArPSBbCi0gICAgICAjIEZvciBQcm9jZXNzSW5mb3JtYXRpb25Db3B5RGljdGlv
bmFyeSBpbiB1bml4ZmlsZXN5c3RlbS5jYy4KLSAgICAgICJBcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yayIsCi0gICAgXQogICB9CiAKICAgaWYgKGlzX3dpbikgewogICAgIHNvdXJjZXMgKz0g
WwogICAgICAgIndpbjMyLmNjIiwKICAgICAgICJ3aW4zMi5oIiwKLSAgICAgICJ3aW4zMmZpbGVz
eXN0ZW0uY2MiLAotICAgICAgIndpbjMyZmlsZXN5c3RlbS5oIiwKICAgICAgICJ3aW4zMndpbmRv
dy5jYyIsCiAgICAgICAid2luMzJ3aW5kb3cuaCIsCiAgICAgXQpAQCAtOTY3LDggKzk0Nyw2IEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2Jhc2VfZ2VuZXJpYyIpIHsKICAgICBzb3VyY2VzICs9
IFsKICAgICAgICJpZmFkZHJzX2NvbnZlcnRlci5jYyIsCiAgICAgICAiaWZhZGRyc19jb252ZXJ0
ZXIuaCIsCi0gICAgICAidW5peGZpbGVzeXN0ZW0uY2MiLAotICAgICAgInVuaXhmaWxlc3lzdGVt
LmgiLAogICAgIF0KICAgfQogCkBAIC05ODYsMTEgKzk2NCw0MSBAQCBydGNfc291cmNlX3NldCgi
Z3Rlc3RfcHJvZCIpIHsKICAgXQogfQogCitydGNfc291cmNlX3NldCgiZ3VuaXRfaGVscGVycyIp
IHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIHNvdXJjZXMgPSBbCisgICAgImd1bml0LmNjIiwKKyAg
ICAiZ3VuaXQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmxvZ2dpbmciLAorICAgICI6cnRj
X2Jhc2UiLAorICAgICI6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAorICAgICI6c3RyaW5ndXRpbHMi
LAorICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgIF0KK30KKworcnRjX3NvdXJjZV9zZXQo
InRlc3RjbGllbnQiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBzb3VyY2VzID0gWworICAgICJ0
ZXN0Y2xpZW50LmNjIiwKKyAgICAidGVzdGNsaWVudC5oIiwKKyAgXQorICBkZXBzID0gWworICAg
ICI6Y3JpdGljYWxzZWN0aW9uIiwKKyAgICAiOmd1bml0X2hlbHBlcnMiLAorICAgICI6bWFjcm9t
YWdpYyIsCisgICAgIjpydGNfYmFzZSIsCisgICAgIjpydGNfYmFzZV90ZXN0c191dGlscyIsCisg
ICAgIjp0aW1ldXRpbHMiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1v
cnk6bWVtb3J5IiwKKyAgXQorfQorCiBydGNfc291cmNlX3NldCgicnRjX2Jhc2VfdGVzdHNfdXRp
bHMiKSB7CiAgIHRlc3Rvbmx5ID0gdHJ1ZQogICBzb3VyY2VzID0gWwotICAgICMgQWxzbyB1c2Ug
dGhpcyBhcyBhIGNvbnZlbmllbnQgZHVtcGluZyBncm91bmQgZm9yIG1pc2MgZmlsZXMgdGhhdCBh
cmUKLSAgICAjIGluY2x1ZGVkIGJ5IG11bHRpcGxlIHRhcmdldHMgYmVsb3cuCiAgICAgImNwdV90
aW1lLmNjIiwKICAgICAiY3B1X3RpbWUuaCIsCiAgICAgImZha2VfbWRuc19yZXNwb25kZXIuaCIs
CkBAIC0xMDAxLDggKzEwMDksOCBAQCBydGNfc291cmNlX3NldCgicnRjX2Jhc2VfdGVzdHNfdXRp
bHMiKSB7CiAgICAgImZha2Vzc2xpZGVudGl0eS5oIiwKICAgICAiZmlyZXdhbGxzb2NrZXRzZXJ2
ZXIuY2MiLAogICAgICJmaXJld2FsbHNvY2tldHNlcnZlci5oIiwKLSAgICAiZ3VuaXQuY2MiLAot
ICAgICJndW5pdC5oIiwKKyAgICAibWVtb3J5X3N0cmVhbS5jYyIsCisgICAgIm1lbW9yeV9zdHJl
YW0uaCIsCiAgICAgIm1lbW9yeV91c2FnZS5jYyIsCiAgICAgIm1lbW9yeV91c2FnZS5oIiwKICAg
ICAibmF0c2VydmVyLmNjIiwKQEAgLTEwMTUsMTAgKzEwMjMsMTAgQEAgcnRjX3NvdXJjZV9zZXQo
InJ0Y19iYXNlX3Rlc3RzX3V0aWxzIikgewogICAgICJwcm94eXNlcnZlci5oIiwKICAgICAic2ln
c2xvdHRlc3Rlci5oIiwKICAgICAic2lnc2xvdHRlc3Rlci5oLnB1bXAiLAorICAgICJzb2NrZXRz
dHJlYW0uY2MiLAorICAgICJzb2NrZXRzdHJlYW0uaCIsCiAgICAgInRlc3RiYXNlNjQuaCIsCiAg
ICAgInRlc3RjZXJ0aWZpY2F0ZXZlcmlmaWVyLmgiLAotICAgICJ0ZXN0Y2xpZW50LmNjIiwKLSAg
ICAidGVzdGNsaWVudC5oIiwKICAgICAidGVzdGVjaG9zZXJ2ZXIuY2MiLAogICAgICJ0ZXN0ZWNo
b3NlcnZlci5oIiwKICAgICAidGVzdHV0aWxzLmNjIiwKQEAgLTEwMjksMTYgKzEwMzcsMTAgQEAg
cnRjX3NvdXJjZV9zZXQoInJ0Y19iYXNlX3Rlc3RzX3V0aWxzIikgewogICBkZXBzID0gWwogICAg
ICI6Y2hlY2tzIiwKICAgICAiOnJ0Y19iYXNlIiwKLSAgICAiOnN0cmluZ3V0aWxzIiwKICAgICAi
Li4vYXBpL3VuaXRzOnRpbWVfZGVsdGEiLAotICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCi0g
ICAgInN5c3RlbTpmYWxsdGhyb3VnaCIsCiAgICAgInRoaXJkX3BhcnR5L3NpZ3Nsb3QiLAogICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCi0gIHB1YmxpY19k
ZXBzID0gWwotICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAotICBdCiB9CiAKIHJ0Y19zb3VyY2Vfc2V0
KCJydGNfdGFza19xdWV1ZV9mb3JfdGVzdCIpIHsKQEAgLTEwNjMsNiArMTA2NSw3IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgInNpZ3Nsb3RfdW5pdHRlc3QuY2MiLAogICAgIF0K
ICAgICBkZXBzID0gWworICAgICAgIjpndW5pdF9oZWxwZXJzIiwKICAgICAgICI6cnRjX2Jhc2Ui
LAogICAgICAgIjpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAidGhpcmRfcGFydHkvc2ln
c2xvdCIsCkBAIC0xMDc1LDEzICsxMDc4LDEzIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewog
ICAgICAgInVuaXR0ZXN0X21haW4uY2MiLAogICAgIF0KICAgICBkZXBzID0gWworICAgICAgIjpn
dW5pdF9oZWxwZXJzIiwKICAgICAgICI6cnRjX2Jhc2UiLAogICAgICAgIjpydGNfYmFzZV9hcHBy
b3ZlZCIsCiAgICAgICAiOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi9zeXN0ZW1f
d3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICAgIi4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNz
IiwKICAgICAgICIuLi90ZXN0OmZpZWxkX3RyaWFsIiwKLSAgICAgICIuLi90ZXN0OmZpbGV1dGls
cyIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgIF0KIApAQCAtMTEwNCw5ICsx
MTA3LDExIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIF0KICAgICBkZXBzID0gWwog
ICAgICAgIjpjaGVja3MiLAorICAgICAgIjpndW5pdF9oZWxwZXJzIiwKICAgICAgICI6cnRjX2Jh
c2UiLAogICAgICAgIjpydGNfYmFzZV90ZXN0c19tYWluIiwKICAgICAgICI6cnRjX2Jhc2VfdGVz
dHNfdXRpbHMiLAorICAgICAgIjp0ZXN0Y2xpZW50IiwKICAgICAgICIuLi9zeXN0ZW1fd3JhcHBl
cnM6c3lzdGVtX3dyYXBwZXJzIiwKICAgICAgICIuLi90ZXN0OmZpbGV1dGlscyIsCiAgICAgICAi
Li4vdGVzdDp0ZXN0X3N1cHBvcnQiLApAQCAtMTE0Nyw3ICsxMTUyLDYgQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgICAibnVtZXJpY3Mvc2FmZV9taW5tYXhfdW5pdHRlc3QuY2MiLAog
ICAgICAgIm51bWVyaWNzL3NhbXBsZV9jb3VudGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJvbmV0
aW1lZXZlbnRfdW5pdHRlc3QuY2MiLAotICAgICAgInBhdGh1dGlsc191bml0dGVzdC5jYyIsCiAg
ICAgICAicGxhdGZvcm1fZmlsZV91bml0dGVzdC5jYyIsCiAgICAgICAicGxhdGZvcm1fdGhyZWFk
X3VuaXR0ZXN0LmNjIiwKICAgICAgICJyYW5kb21fdW5pdHRlc3QuY2MiLApAQCAtMTE3NCw2ICsx
MTc4LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgfQogICAgIGRlcHMgPSBbCiAg
ICAgICAiOmNoZWNrcyIsCisgICAgICAiOmd1bml0X2hlbHBlcnMiLAogICAgICAgIjpyYXRlX2xp
bWl0ZXIiLAogICAgICAgIjpydGNfYmFzZSIsCiAgICAgICAiOnJ0Y19iYXNlX2FwcHJvdmVkIiwK
QEAgLTExODQsNiArMTE4OSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpz
YWZlX21pbm1heCIsCiAgICAgICAiOnNhbml0aXplciIsCiAgICAgICAiOnN0cmluZ3V0aWxzIiwK
KyAgICAgICI6dGVzdGNsaWVudCIsCiAgICAgICAiLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICAg
Ii4uL3N5c3RlbV93cmFwcGVyczpzeXN0ZW1fd3JhcHBlcnMiLAogICAgICAgIi4uL3Rlc3Q6Zmls
ZXV0aWxzIiwKQEAgLTEyMDMsNiArMTIwOSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewog
ICAgICAgInRhc2tfcXVldWVfdW5pdHRlc3QuY2MiLAogICAgIF0KICAgICBkZXBzID0gWworICAg
ICAgIjpndW5pdF9oZWxwZXJzIiwKICAgICAgICI6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAg
IjpydGNfYmFzZV90ZXN0c19tYWluIiwKICAgICAgICI6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLApA
QCAtMTIzNiw3ICsxMjQzLDggQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAid2Vh
a19wdHJfdW5pdHRlc3QuY2MiLAogICAgIF0KICAgICBkZXBzID0gWwotICAgICAgIjpydGNfYmFz
ZV9hcHByb3ZlZF9nZW5lcmljIiwKKyAgICAgICI6Z3VuaXRfaGVscGVycyIsCisgICAgICAiOnJ0
Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICI6cnRjX2Jhc2VfdGVzdHNfbWFpbiIsCiAgICAgICAi
OnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICI6cnRjX2V2ZW50IiwKQEAgLTEyNTEsNiAr
MTI1OSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogCiAgICAgc291cmNlcyA9IFsKICAg
ICAgICJudW1lcmljcy9leHBfZmlsdGVyX3VuaXR0ZXN0LmNjIiwKKyAgICAgICJudW1lcmljcy9t
b3ZpbmdfYXZlcmFnZV91bml0dGVzdC5jYyIsCiAgICAgICAibnVtZXJpY3MvbW92aW5nX21lZGlh
bl9maWx0ZXJfdW5pdHRlc3QuY2MiLAogICAgICAgIm51bWVyaWNzL3BlcmNlbnRpbGVfZmlsdGVy
X3VuaXR0ZXN0LmNjIiwKICAgICAgICJudW1lcmljcy9zZXF1ZW5jZV9udW1iZXJfdXRpbF91bml0
dGVzdC5jYyIsCkBAIC0xMjcwLDYgKzEyNzksNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsK
ICAgICAgICJzdHJpbmdzL2pzb25fdW5pdHRlc3QuY2MiLAogICAgIF0KICAgICBkZXBzID0gWwor
ICAgICAgIjpndW5pdF9oZWxwZXJzIiwKICAgICAgICI6cnRjX2Jhc2VfdGVzdHNfbWFpbiIsCiAg
ICAgICAiOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICI6cnRjX2pzb24iLApAQCAtMTI5
Miw3ICsxMzAyLDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAibWVzc2FnZXF1
ZXVlX3VuaXR0ZXN0LmNjIiwKICAgICAgICJuYXRfdW5pdHRlc3QuY2MiLAogICAgICAgIm5ldHdv
cmtfdW5pdHRlc3QuY2MiLAotICAgICAgIm9wdGlvbnNmaWxlX3VuaXR0ZXN0LmNjIiwKICAgICAg
ICJwcm94eV91bml0dGVzdC5jYyIsCiAgICAgICAicm9sbGluZ2FjY3VtdWxhdG9yX3VuaXR0ZXN0
LmNjIiwKICAgICAgICJydGNjZXJ0aWZpY2F0ZV91bml0dGVzdC5jYyIsCkBAIC0xMzExLDYgKzEz
MjAsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICB9CiAgICAgaWYgKGlzX3Bvc2l4
IHx8IGlzX2Z1Y2hzaWEpIHsKICAgICAgIHNvdXJjZXMgKz0gWworICAgICAgICAib3BlbnNzbF9r
ZXlfZGVyaXZhdGlvbl9oa2RmX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgIm9wZW5zc2xhZGFwdGVy
X3VuaXR0ZXN0LmNjIiwKICAgICAgICAgIm9wZW5zc2xzZXNzaW9uY2FjaGVfdW5pdHRlc3QuY2Mi
LAogICAgICAgICAib3BlbnNzbHV0aWxpdHlfdW5pdHRlc3QuY2MiLApAQCAtMTMyMSw5ICsxMzMx
LDExIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIH0KICAgICBkZXBzID0gWwogICAg
ICAgIjpjaGVja3MiLAorICAgICAgIjpndW5pdF9oZWxwZXJzIiwKICAgICAgICI6cnRjX2Jhc2Vf
dGVzdHNfbWFpbiIsCiAgICAgICAiOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICI6c3Ry
aW5ndXRpbHMiLAorICAgICAgIjp0ZXN0Y2xpZW50IiwKICAgICAgICIuLi9hcGk6YXJyYXlfdmll
dyIsCiAgICAgICAiLi4vdGVzdDpmaWxldXRpbHMiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBw
b3J0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL0R1bW15LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9EdW1teS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkOGYwMmM5MGRiZjY2MGRkMDU4ZWU1ZDEzNmU5MWEyNGVlZmEyZTIxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL0R1bW15LmphdmEKKysrIC9kZXYvbnVsbApA
QCAtMSwxOSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0vKioKLSAqIFRoaXMgY2xhc3Mg
b25seSBleGlzdHMgYXMgZ2x1ZSBpbiBhIHRyYW5zaXRpb24uCi0gKiBUT0RPKGtqZWxsYW5kZXIp
OiBSZW1vdmUuCi0gKiBTZWUgaHR0cHM6Ly9idWdzLndlYnJ0Yy5vcmcvNzYzNCBmb3IgbW9yZSBk
ZXRhaWxzLgotICovCi1jbGFzcyBEdW1teSB7Ci0gIER1bW15KCkgewotICB9Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9P
V05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9PV05FUlMKaW5kZXggNjljZTI1MzA4N2Y1OWIxN2I3NmYyYTVjZTgwNzI5MGJjYmYyYmIxNC4u
ZTY3ZTgzNDBmN2M3ODkwZjcwZTUxYjIzNjg5NTVhMTdlOTYxNWU4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvT1dORVJTCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL09X
TkVSUwpAQCAtMiw3ICsyLDYgQEAgaHRhQHdlYnJ0Yy5vcmcKIGp1YmVydGlAd2VicnRjLm9yZwog
a3dpYmVyZ0B3ZWJydGMub3JnCiBtZmxvZG1hbkB3ZWJydGMub3JnCi1wZXJrakB3ZWJydGMub3Jn
CiBwdGhhdGNoZXJAd2VicnRjLm9yZwogcWluZ3NpQHdlYnJ0Yy5vcmcKIHNlcmdleXVAY2hyb21p
dW0ub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9hc3luY2ludm9rZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY2ludm9rZXIuY2MKaW5kZXggZTI1NWZiOThm
Y2NiNzI3NmI0OWYzMjZlODE3NzdlNzA5ODA0NWEwMC4uZjBkZDE4ODFlZjM0NzJiODVjMjYwZDQ3
NmQ2NjFmZGU4MzIzMDcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNpbnZva2VyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jaW52b2tlci5jYwpA
QCAtMTcsNyArMTcsNyBAQCBuYW1lc3BhY2UgcnRjIHsKIAogQXN5bmNJbnZva2VyOjpBc3luY0lu
dm9rZXIoKQogICAgIDogcGVuZGluZ19pbnZvY2F0aW9uc18oMCksCi0gICAgICBpbnZvY2F0aW9u
X2NvbXBsZXRlXyhuZXcgUmVmQ291bnRlZE9iamVjdDxFdmVudD4oZmFsc2UsIGZhbHNlKSksCisg
ICAgICBpbnZvY2F0aW9uX2NvbXBsZXRlXyhuZXcgUmVmQ291bnRlZE9iamVjdDxFdmVudD4oKSks
CiAgICAgICBkZXN0cm95aW5nXyhmYWxzZSkge30KIAogQXN5bmNJbnZva2VyOjp+QXN5bmNJbnZv
a2VyKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5jYwppbmRl
eCBlMWIxZWFlNmEzMWQ3MzViNzAzYWYyNGI1OGNjODE4NGI4YzFkY2I5Li43ZTBjYzhmODEwMTFl
NTk2YzQzODA1YjIwYzllZDYyOWFhNGIxYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9h
c3luY3BhY2tldHNvY2tldC5jYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAicnRj
X2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXRoZWxwZXIu
aCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKQEAgLTMzLDkgKzM0LDExIEBAIHZvaWQgQ29weVNvY2tl
dEluZm9ybWF0aW9uVG9QYWNrZXRJbmZvKHNpemVfdCBwYWNrZXRfc2l6ZV9ieXRlcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfY29ubmVjdGlvbmxlc3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldEluZm8q
IGluZm8pIHsKICAgaW5mby0+cGFja2V0X3NpemVfYnl0ZXMgPSBwYWNrZXRfc2l6ZV9ieXRlczsK
LSAgaW5mby0+bG9jYWxfc29ja2V0X2FkZHJlc3MgPSBzb2NrZXRfZnJvbS5HZXRMb2NhbEFkZHJl
c3MoKTsKLSAgaWYgKCFpc19jb25uZWN0aW9ubGVzcykgewotICAgIGluZm8tPnJlbW90ZV9zb2Nr
ZXRfYWRkcmVzcyA9IHNvY2tldF9mcm9tLkdldFJlbW90ZUFkZHJlc3MoKTsKKyAgLy8gVE9ETyhz
cnRlKTogTWFrZSBzdXJlIHRoYXQgdGhlIGZhbWlseSBvZiB0aGUgbG9jYWwgc29ja2V0IGlzIGFs
d2F5cyBzZXQKKyAgLy8gaW4gdGhlIFZpcnR1YWxTb2NrZXQgaW1wbGVtZW50YXRpb24gYW5kIHJl
bW92ZSB0aGlzIGNoZWNrLgorICBpbnQgZmFtaWx5ID0gc29ja2V0X2Zyb20uR2V0TG9jYWxBZGRy
ZXNzKCkuZmFtaWx5KCk7CisgIGlmIChmYW1pbHkgIT0gMCkgeworICAgIGluZm8tPmlwX292ZXJo
ZWFkX2J5dGVzID0gY3JpY2tldDo6R2V0SXBPdmVyaGVhZChmYW1pbHkpOwogICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2FzeW5jcGFja2V0c29ja2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oCmluZGV4IGJiMGIzYmNjMDQ4
ZTc1ZmU0ODZlZmRmNjU1N2YzY2E3MTcxY2JiMDIuLjQ0ZDZjNjc0MjY3YTYxNjVmMmIxOTVmODFm
MmQ4ODJmMzM2NDEzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jcGFja2V0c29ja2V0LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2Nr
ZXQuaApAQCAtMTIsNiArMTIsNyBAQAogI2RlZmluZSBSVENfQkFTRV9BU1lOQ1BBQ0tFVFNPQ0tF
VF9IXwogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZHNjcC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3NvY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5
L3NpZ3Nsb3Qvc2lnc2xvdC5oIgpAQCAtNTAsMjUgKzUxLDkgQEAgc3RydWN0IFBhY2tldE9wdGlv
bnMgewogICBQYWNrZXRJbmZvIGluZm9fc2lnbmFsZWRfYWZ0ZXJfc2VudDsKIH07CiAKLS8vIFRo
aXMgc3RydWN0dXJlIHdpbGwgaGF2ZSB0aGUgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBwYWNrZXQg
aXMgYWN0dWFsbHkKLS8vIHJlY2VpdmVkIGJ5IHNvY2tldC4KLXN0cnVjdCBQYWNrZXRUaW1lIHsK
LSAgUGFja2V0VGltZSgpIDogdGltZXN0YW1wKC0xKSwgbm90X2JlZm9yZSgtMSkge30KLSAgUGFj
a2V0VGltZShpbnQ2NF90IHRpbWVzdGFtcCwgaW50NjRfdCBub3RfYmVmb3JlKQotICAgICAgOiB0
aW1lc3RhbXAodGltZXN0YW1wKSwgbm90X2JlZm9yZShub3RfYmVmb3JlKSB7fQotCi0gIGludDY0
X3QgdGltZXN0YW1wOyAgLy8gUmVjZWl2ZSB0aW1lIGFmdGVyIHNvY2tldCBkZWxpdmVycyB0aGUg
ZGF0YS4KLQotICAvLyBFYXJsaWVzdCBwb3NzaWJsZSB0aW1lIHRoZSBkYXRhIGNvdWxkIGhhdmUg
YXJyaXZlZCwgaW5kaWNhdGluZyB0aGUKLSAgLy8gcG90ZW50aWFsIGVycm9yIGluIHRoZSB8dGlt
ZXN0YW1wfCB2YWx1ZSwgaW4gY2FzZSB0aGUgc3lzdGVtLCBpcyBidXN5LiBGb3IKLSAgLy8gZXhh
bXBsZSwgdGhlIHRpbWUgb2YgdGhlIGxhc3Qgc2VsZWN0KCkgY2FsbC4KLSAgLy8gSWYgdW5rbm93
biwgdGhpcyB2YWx1ZSB3aWxsIGJlIHNldCB0byB6ZXJvLgotICBpbnQ2NF90IG5vdF9iZWZvcmU7
Ci19OwotCi1pbmxpbmUgUGFja2V0VGltZSBDcmVhdGVQYWNrZXRUaW1lKGludDY0X3Qgbm90X2Jl
Zm9yZSkgewotICByZXR1cm4gUGFja2V0VGltZShUaW1lTWljcm9zKCksIG5vdF9iZWZvcmUpOwot
fQorLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTU4NCk6IENvbXBhdGliaWxpdHkgYWxpYXMsIGRl
bGV0ZSBhcyBzb29uIGFzIGRvd25zdHJlYW0KKy8vIGNvZGUgaXMgdXBkYXRlZC4KK3R5cGVkZWYg
aW50NjRfdCBQYWNrZXRUaW1lOwogCiAvLyBQcm92aWRlcyB0aGUgYWJpbGl0eSB0byByZWNlaXZl
IHBhY2tldHMgYXN5bmNocm9ub3VzbHkuIFNlbmRzIGFyZSBub3QKIC8vIGJ1ZmZlcmVkIHNpbmNl
IGl0IGlzIGFjY2VwdGFibGUgdG8gZHJvcCBwYWNrZXRzIHVuZGVyIGhpZ2ggbG9hZC4KQEAgLTEy
MCw3ICsxMDUsOSBAQCBjbGFzcyBBc3luY1BhY2tldFNvY2tldCA6IHB1YmxpYyBzaWdzbG90Ojpo
YXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciosCiAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3Mm
LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmPgorICAgICAgICAgICAgICAg
ICAgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk1ODQpOiBDaGFuZ2UgdG8gcGFzc2luZyB0aGUg
aW50NjRfdAorICAgICAgICAgICAgICAgICAgIC8vIHRpbWVzdGFtcCBieSB2YWx1ZS4KKyAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90Jj4KICAgICAgIFNpZ25hbFJlYWRQYWNrZXQ7CiAK
ICAgLy8gRW1pdHRlZCBlYWNoIHRpbWUgYSBwYWNrZXQgaXMgc2VudC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jcmVz
b2x2ZXJpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2FzeW5jcmVzb2x2ZXJpbnRlcmZhY2UuaAppbmRleCA1YjIzMDNmNGQ4MDI4
NjA4MWI3OWE5YjEyOWY4ZDdmMjA1ZTAwNTFlLi5mM2RmODg0MjQ5M2ZkZTNjNzZjNGFkNWU5OWRj
OWUwNjkxZTRmN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3Jlc29sdmVyaW50ZXJmYWNlLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNyZXNvbHZl
cmludGVyZmFjZS5oCkBAIC0yMiw5ICsyMiwxMiBAQCBjbGFzcyBBc3luY1Jlc29sdmVySW50ZXJm
YWNlIHsKICAgQXN5bmNSZXNvbHZlckludGVyZmFjZSgpOwogICB2aXJ0dWFsIH5Bc3luY1Jlc29s
dmVySW50ZXJmYWNlKCk7CiAKLSAgLy8gU3RhcnQgYWRkcmVzcyByZXNvbHZlIHByb2Nlc3MuCisg
IC8vIFN0YXJ0IGFkZHJlc3MgcmVzb2x1dGlvbiBvZiB0aGUgaG9zdG5hbWUgaW4gfGFkZHJ8Lgog
ICB2aXJ0dWFsIHZvaWQgU3RhcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkcikgPSAwOwotICAv
LyBSZXR1cm5zIHRvcCBtb3N0IHJlc29sdmVkIGFkZHJlc3Mgb2YgfGZhbWlseXwKKyAgLy8gUmV0
dXJucyB0cnVlIGlmZiB0aGUgYWRkcmVzcyBmcm9tIHxTdGFydHwgd2FzIHN1Y2Nlc3NmdWxseSBy
ZXNvbHZlZC4KKyAgLy8gSWYgdGhlIGFkZHJlc3Mgd2FzIHN1Y2Nlc3NmdWxseSByZXNvbHZlZCwg
c2V0cyB8YWRkcnwgdG8gYSBjb3B5IG9mIHRoZQorICAvLyBhZGRyZXNzIGZyb20gfFN0YXJ0fCB3
aXRoIHRoZSBJUCBhZGRyZXNzIHNldCB0byB0aGUgdG9wIG1vc3QgcmVzb2x2ZWQKKyAgLy8gYWRk
cmVzcyBvZiB8ZmFtaWx5fCAofGFkZHJ8IHdpbGwgaGF2ZSBib3RoIGhvc3RuYW1lIGFuZCB0aGUg
cmVzb2x2ZWQgaXApLgogICB2aXJ0dWFsIGJvb2wgR2V0UmVzb2x2ZWRBZGRyZXNzKGludCBmYW1p
bHksIFNvY2tldEFkZHJlc3MqIGFkZHIpIGNvbnN0ID0gMDsKICAgLy8gUmV0dXJucyBlcnJvciBm
cm9tIHJlc29sdmVyLgogICB2aXJ0dWFsIGludCBHZXRFcnJvcigpIGNvbnN0ID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2FzeW5jdGNwc29ja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuY2MKaW5kZXggM2Q2OGEyYTQ2YTZjNjM3YThl
ZDJmYTdhMmZiZDljYjNlNWNjZjdkZC4uNjY2YjMzNTdhYWFmNTUzZmEzMDc0MWVjYjY1MDc3NDI4
NjZkYTJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuY2MKQEAgLTE4
LDYgKzE4LDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9ieXRlb3JkZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiICAvLyBmb3IgVGltZU1pbGxpcwogCiAjaWYgZGVmaW5l
ZChXRUJSVENfUE9TSVgpCiAjaW5jbHVkZSA8ZXJybm8uaD4KQEAgLTMyMCw3ICszMjEsNyBAQCB2
b2lkIEFzeW5jVENQU29ja2V0OjpQcm9jZXNzSW5wdXQoY2hhciogZGF0YSwgc2l6ZV90KiBsZW4p
IHsKICAgICAgIHJldHVybjsKIAogICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSArIGtQ
YWNrZXRMZW5TaXplLCBwa3RfbGVuLCByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAg
IENyZWF0ZVBhY2tldFRpbWUoMCkpOworICAgICAgICAgICAgICAgICAgICAgVGltZU1pY3Jvcygp
KTsKIAogICAgICpsZW4gLT0ga1BhY2tldExlblNpemUgKyBwa3RfbGVuOwogICAgIGlmICgqbGVu
ID4gMCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdGNwc29ja2V0LmgKaW5kZXggOTQzZTAx
MGY0ZGFjMDE5YzFjODEyZDhmNDA2NDg3Y2QyYzFmNWJkYS4uOTU2N2RkOTE0MzJiNzRjMDAzZThk
N2IyZDI4Mjc4YzNiMjk3MmQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3RjcHNvY2tl
dC5oCkBAIC0xMSwxMiArMTEsMTUgQEAKICNpZm5kZWYgUlRDX0JBU0VfQVNZTkNUQ1BTT0NLRVRf
SF8KICNkZWZpbmUgUlRDX0JBU0VfQVNZTkNUQ1BTT0NLRVRfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcGFja2V0
c29ja2V0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNzb2NrZXQuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0ZmFjdG9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3NvY2tldC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKIAogbmFtZXNw
YWNlIHJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdWRwc29ja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN1ZHBzb2NrZXQuY2MKaW5kZXgg
YmE1ZmE4OGFhZGIzZTJmNGQ2ZjQxMjRhOTM0ZjE0NGQ1MDIzNjhlYi4uMmY5MDExY2FiMTQzYWFi
ZDQwYWNmZjBkZTljNTUxMzMzYWIzODI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN1ZHBzb2NrZXQuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN1
ZHBzb2NrZXQuY2MKQEAgLTc0LDcgKzc0LDYgQEAgaW50IEFzeW5jVURQU29ja2V0OjpTZW5kVG8o
Y29uc3Qgdm9pZCogcHYsCiAgIHJ0Yzo6U2VudFBhY2tldCBzZW50X3BhY2tldChvcHRpb25zLnBh
Y2tldF9pZCwgcnRjOjpUaW1lTWlsbGlzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcHRpb25zLmluZm9fc2lnbmFsZWRfYWZ0ZXJfc2VudCk7CiAgIENvcHlTb2NrZXRJbmZvcm1h
dGlvblRvUGFja2V0SW5mbyhjYiwgKnRoaXMsIHRydWUsICZzZW50X3BhY2tldC5pbmZvKTsKLSAg
c2VudF9wYWNrZXQuaW5mby5yZW1vdGVfc29ja2V0X2FkZHJlc3MgPSBhZGRyOwogICBpbnQgcmV0
ID0gc29ja2V0Xy0+U2VuZFRvKHB2LCBjYiwgYWRkcik7CiAgIFNpZ25hbFNlbnRQYWNrZXQodGhp
cywgc2VudF9wYWNrZXQpOwogICByZXR1cm4gcmV0OwpAQCAtMTIzLDkgKzEyMiw4IEBAIHZvaWQg
QXN5bmNVRFBTb2NrZXQ6Ok9uUmVhZEV2ZW50KEFzeW5jU29ja2V0KiBzb2NrZXQpIHsKIAogICAv
LyBUT0RPOiBNYWtlIHN1cmUgdGhhdCB3ZSBnb3QgYWxsIG9mIHRoZSBwYWNrZXQuCiAgIC8vIElm
IHdlIGRpZCBub3QsIHRoZW4gd2Ugc2hvdWxkIHJlc2l6ZSBvdXIgYnVmZmVyIHRvIGJlIGxhcmdl
IGVub3VnaC4KLSAgU2lnbmFsUmVhZFBhY2tldCgKLSAgICAgIHRoaXMsIGJ1Zl8sIHN0YXRpY19j
YXN0PHNpemVfdD4obGVuKSwgcmVtb3RlX2FkZHIsCi0gICAgICAodGltZXN0YW1wID4gLTEgPyBQ
YWNrZXRUaW1lKHRpbWVzdGFtcCwgMCkgOiBDcmVhdGVQYWNrZXRUaW1lKDApKSk7CisgIFNpZ25h
bFJlYWRQYWNrZXQodGhpcywgYnVmXywgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW4pLCByZW1vdGVf
YWRkciwKKyAgICAgICAgICAgICAgICAgICAodGltZXN0YW1wID4gLTEgPyB0aW1lc3RhbXAgOiBU
aW1lTWljcm9zKCkpKTsKIH0KIAogdm9pZCBBc3luY1VEUFNvY2tldDo6T25Xcml0ZUV2ZW50KEFz
eW5jU29ja2V0KiBzb2NrZXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdWRwc29ja2V0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3VkcHNvY2tldC5o
CmluZGV4IGQ4MTRiNGJmZDBjNWRiZTVkN2U0ZDRhYzQ4NmM3YjhmYjU2MDk4ZjQuLjAzMDk0NmQ4
YTAzYTVjNmNmODRiM2Y4N2I3NzZjMTc5YmNjMDkyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdWRwc29ja2V0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
YXN5bmN1ZHBzb2NrZXQuaApAQCAtMTEsOSArMTEsMTMgQEAKICNpZm5kZWYgUlRDX0JBU0VfQVNZ
TkNVRFBTT0NLRVRfSF8KICNkZWZpbmUgUlRDX0JBU0VfQVNZTkNVRFBTT0NLRVRfSF8KIAorI2lu
Y2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgInJ0Y19iYXNl
L2FzeW5jcGFja2V0c29ja2V0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNzb2NrZXQuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRh
ZGRyZXNzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0ZmFjdG9yeS5oIgogCiBuYW1lc3Bh
Y2UgcnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2Jhc2U2NF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Jhc2U2NF91bml0dGVzdC5jYwppbmRleCA0
Yjg1N2YxYWE5NDAwODQxOWVkODQ2ZmE1ZDMzYjg4NDA1Zjg0NDBkLi5iZGY4NTU5YzEyN2Y0N2I0
MWFmMjU4MmNkZDViNTM3Yzk4Yzk0MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9iYXNlNjRfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYmFzZTY0
X3VuaXR0ZXN0LmNjCkBAIC0xMSw3ICsxMSw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRf
cGFydHkvYmFzZTY0L2Jhc2U2NC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxz
LmgiCiAKICNpbmNsdWRlICJydGNfYmFzZS90ZXN0YmFzZTY0LmgiCiAKQEAgLTQzMCwxMCArNDI5
LDEwIEBAIFRFU1QoQmFzZTY0LCBFbmNvZGVEZWNvZGVCYXR0ZXJ5KSB7CiAKICAgICAgIC8vIHRy
eSBwdXR0aW5nIHNvbWUgZXh0cmEgc3R1ZmYgYWZ0ZXIgdGhlIGVxdWFscyBzaWducywgb3IgaW4g
YmV0d2VlbiB0aGVtCiAgICAgICBpZiAoZXF1YWxzID09IDIpIHsKLSAgICAgICAgc3ByaW50Zm4o
Zmlyc3RfZXF1YWxzLCA2LCAiID0gPSAiKTsKKyAgICAgICAgc25wcmludGYoZmlyc3RfZXF1YWxz
LCA2LCAiID0gPSAiKTsKICAgICAgICAgbGVuID0gZmlyc3RfZXF1YWxzIC0gZW5jb2RlX2J1ZmZl
ciArIDU7CiAgICAgICB9IGVsc2UgewotICAgICAgICBzcHJpbnRmbihmaXJzdF9lcXVhbHMsIDYs
ICIgPSAiKTsKKyAgICAgICAgc25wcmludGYoZmlyc3RfZXF1YWxzLCA2LCAiID0gIik7CiAgICAg
ICAgIGxlbiA9IGZpcnN0X2VxdWFscyAtIGVuY29kZV9idWZmZXIgKyAzOwogICAgICAgfQogICAg
ICAgZGVjb2RlZDIuYXNzaWduKCJ0aGlzIGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmNjCmlu
ZGV4IGQyYTA2Y2Q5ZWZlYzgxY2M3YTRlZWFiMTAzNjMxNWQ2NmRkZTdjZDEuLjQ2ZTY2NzQxZTBh
MDQxMTU1NTI3M2RjZWQ3NjE0MWExNGRmZDhhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9uc3Ry
YXRlZ3kuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5jYwpAQCAtOSw5ICs5LDMxIEBACiAg
Ki8KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuaCIKKwog
I2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRp
bnQ+CisjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJydGNf
YmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL2ZpZWxkX3RyaWFsLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworQXVkaW9Qcmlvcml0
eUNvbmZpZzo6QXVkaW9Qcmlvcml0eUNvbmZpZygpCisgICAgOiBtaW5fcmF0ZSgibWluIiksIG1h
eF9yYXRlKCJtYXgiKSwgdGFyZ2V0X3JhdGUoInRhcmdldCIpIHsKKyAgc3RkOjpzdHJpbmcgdHJp
YWxfc3RyaW5nOworLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTg4OSk6IFJlbW92ZSB0aGlzIHdo
ZW4gQ2hyb21pdW0gYnVpbGQgaGFzIGJlZW4gZml4ZWQuCisjaWYgIWRlZmluZWQoV0VCUlRDX0NI
Uk9NSVVNX0JVSUxEKQorICB0cmlhbF9zdHJpbmcgPSBmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1l
KCJXZWJSVEMtQndlLUF1ZGlvUHJpb3JpdHkiKTsKKyNlbmRpZgorICBQYXJzZUZpZWxkVHJpYWwo
eyZtaW5fcmF0ZSwgJm1heF9yYXRlLCAmdGFyZ2V0X3JhdGV9LCB0cmlhbF9zdHJpbmcpOworfQor
QXVkaW9Qcmlvcml0eUNvbmZpZzo6QXVkaW9Qcmlvcml0eUNvbmZpZyhjb25zdCBBdWRpb1ByaW9y
aXR5Q29uZmlnJikgPSBkZWZhdWx0OworQXVkaW9Qcmlvcml0eUNvbmZpZzo6fkF1ZGlvUHJpb3Jp
dHlDb25maWcoKSA9IGRlZmF1bHQ7CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKwogbmFtZXNw
YWNlIHJ0YyB7CiAKIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gYWxsb3cgdmlkZW8gc3Ry
ZWFtcyB0byB1c2UgZXh0cmEgYmFuZHdpZHRoIGZvciBGRUMuCkBAIC0yMSwzMSArNDMsMzEgQEAg
bmFtZXNwYWNlIHJ0YyB7CiBjb25zdCBpbnQga1RyYW5zbWlzc2lvbk1heEJpdHJhdGVNdWx0aXBs
aWVyID0gMjsKIAogc3RkOjp2ZWN0b3I8dWludDMyX3Q+IEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRl
Z3k6OlNldEFsbEJpdHJhdGVzVG9NaW5pbXVtKAotICAgIGNvbnN0IEFycmF5Vmlldzxjb25zdCBU
cmFja0NvbmZpZyo+IHRyYWNrX2NvbmZpZ3MpIHsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxCaXRy
YXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZz4mIHRyYWNrX2NvbmZpZ3MpIHsKICAg
c3RkOjp2ZWN0b3I8dWludDMyX3Q+IHRyYWNrX2FsbG9jYXRpb25zOwotICBmb3IgKGNvbnN0IGF1
dG8qIHRyYWNrX2NvbmZpZyA6IHRyYWNrX2NvbmZpZ3MpIHsKLSAgICB0cmFja19hbGxvY2F0aW9u
cy5wdXNoX2JhY2sodHJhY2tfY29uZmlnLT5taW5fYml0cmF0ZV9icHMpOworICBmb3IgKGNvbnN0
IGF1dG8mIHRyYWNrX2NvbmZpZyA6IHRyYWNrX2NvbmZpZ3MpIHsKKyAgICB0cmFja19hbGxvY2F0
aW9ucy5wdXNoX2JhY2sodHJhY2tfY29uZmlnLm1pbl9iaXRyYXRlX2Jwcyk7CiAgIH0KICAgcmV0
dXJuIHRyYWNrX2FsbG9jYXRpb25zOwogfQogCiBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gQml0cmF0
ZUFsbG9jYXRpb25TdHJhdGVneTo6RGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KAotICAgIGNvbnN0
IEFycmF5Vmlldzxjb25zdCBUcmFja0NvbmZpZyo+IHRyYWNrX2NvbmZpZ3MsCisgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWc+JiB0cmFj
a19jb25maWdzLAogICAgIHVpbnQzMl90IGF2YWlsYWJsZV9iaXRyYXRlKSB7CiAgIHN0ZDo6dmVj
dG9yPHVpbnQzMl90PiB0cmFja19hbGxvY2F0aW9ucyA9CiAgICAgICBTZXRBbGxCaXRyYXRlc1Rv
TWluaW11bSh0cmFja19jb25maWdzKTsKICAgdWludDMyX3Qgc3VtX21pbl9iaXRyYXRlcyA9IDA7
CiAgIHVpbnQzMl90IHN1bV9tYXhfYml0cmF0ZXMgPSAwOwotICBmb3IgKGNvbnN0IGF1dG8qIHRy
YWNrX2NvbmZpZyA6IHRyYWNrX2NvbmZpZ3MpIHsKLSAgICBzdW1fbWluX2JpdHJhdGVzICs9IHRy
YWNrX2NvbmZpZy0+bWluX2JpdHJhdGVfYnBzOwotICAgIHN1bV9tYXhfYml0cmF0ZXMgKz0gdHJh
Y2tfY29uZmlnLT5tYXhfYml0cmF0ZV9icHM7CisgIGZvciAoY29uc3QgYXV0byYgdHJhY2tfY29u
ZmlnIDogdHJhY2tfY29uZmlncykgeworICAgIHN1bV9taW5fYml0cmF0ZXMgKz0gdHJhY2tfY29u
ZmlnLm1pbl9iaXRyYXRlX2JwczsKKyAgICBzdW1fbWF4X2JpdHJhdGVzICs9IHRyYWNrX2NvbmZp
Zy5tYXhfYml0cmF0ZV9icHM7CiAgIH0KICAgaWYgKHN1bV9taW5fYml0cmF0ZXMgPj0gYXZhaWxh
YmxlX2JpdHJhdGUpIHsKICAgICByZXR1cm4gdHJhY2tfYWxsb2NhdGlvbnM7CiAgIH0gZWxzZSBp
ZiAoYXZhaWxhYmxlX2JpdHJhdGUgPj0gc3VtX21heF9iaXRyYXRlcykgewogICAgIGF1dG8gdHJh
Y2tfYWxsb2NhdGlvbnNfaXQgPSB0cmFja19hbGxvY2F0aW9ucy5iZWdpbigpOwotICAgIGZvciAo
Y29uc3QgYXV0byogdHJhY2tfY29uZmlnIDogdHJhY2tfY29uZmlncykgewotICAgICAgKnRyYWNr
X2FsbG9jYXRpb25zX2l0KysgPSB0cmFja19jb25maWctPm1heF9iaXRyYXRlX2JwczsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHRyYWNrX2NvbmZpZyA6IHRyYWNrX2NvbmZpZ3MpIHsKKyAgICAgICp0
cmFja19hbGxvY2F0aW9uc19pdCsrID0gdHJhY2tfY29uZmlnLm1heF9iaXRyYXRlX2JwczsKICAg
ICB9CiAgICAgcmV0dXJuIHRyYWNrX2FsbG9jYXRpb25zOwogICB9IGVsc2UgewpAQCAtNTQsMTEg
Kzc2LDEwIEBAIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5
OjpEaXN0cmlidXRlQml0cmF0ZXNFdmVubHkoCiAgICAgLy8gbG93ZXN0IG1heF9iaXRyYXRlX2Jw
cy4gUmVtYWluZGVyIG9mIGF2YWlsYWJsZSBiaXRyYXRlIHNwbGl0IGV2ZW5seSBhbW9uZwogICAg
IC8vIHJlbWFpbmluZyB0cmFja3MuCiAgICAgc3RkOjptdWx0aW1hcDx1aW50MzJfdCwgc2l6ZV90
PiBtYXhfYml0cmF0ZV9zb3J0ZWRfY29uZmlnczsKLSAgICBmb3IgKGNvbnN0IFRyYWNrQ29uZmln
KiogdHJhY2tfY29uZmlnc19pdCA9IHRyYWNrX2NvbmZpZ3MuYmVnaW4oKTsKLSAgICAgICAgIHRy
YWNrX2NvbmZpZ3NfaXQgIT0gdHJhY2tfY29uZmlncy5lbmQoKTsgKyt0cmFja19jb25maWdzX2l0
KSB7CisgICAgZm9yIChjb25zdCBhdXRvJiB0cmFja19jb25maWcgOiB0cmFja19jb25maWdzKSB7
CiAgICAgICBtYXhfYml0cmF0ZV9zb3J0ZWRfY29uZmlncy5pbnNlcnQoCi0gICAgICAgICAgc3Rk
OjptYWtlX3BhaXIoKCp0cmFja19jb25maWdzX2l0KS0+bWF4X2JpdHJhdGVfYnBzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHRyYWNrX2NvbmZpZ3NfaXQgLSB0cmFja19jb25maWdzLmJlZ2lu
KCkpKTsKKyAgICAgICAgICBzdGQ6Om1ha2VfcGFpcih0cmFja19jb25maWcubWF4X2JpdHJhdGVf
YnBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFja19jb25maWcgLSAmdHJhY2tfY29u
Zmlncy5mcm9udCgpKSk7CiAgICAgfQogICAgIHVpbnQzMl90IHRvdGFsX2F2YWlsYWJsZV9pbmNy
ZWFzZSA9IGF2YWlsYWJsZV9iaXRyYXRlIC0gc3VtX21pbl9iaXRyYXRlczsKICAgICBpbnQgcHJv
Y2Vzc2VkX2NvbmZpZ3MgPSAwOwpAQCAtNjcsOCArODgsOCBAQCBzdGQ6OnZlY3Rvcjx1aW50MzJf
dD4gQml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6RGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KAog
ICAgICAgICAgIHRvdGFsX2F2YWlsYWJsZV9pbmNyZWFzZSAvCiAgICAgICAgICAgKHN0YXRpY19j
YXN0PHVpbnQzMl90Pih0cmFja19jb25maWdzLnNpemUoKSAtIHByb2Nlc3NlZF9jb25maWdzKSk7
CiAgICAgICB1aW50MzJfdCBjb25zdW1lZF9pbmNyZWFzZSA9Ci0gICAgICAgICAgc3RkOjptaW4o
dHJhY2tfY29uZmlnc1t0cmFja19jb25maWdfcGFpci5zZWNvbmRdLT5tYXhfYml0cmF0ZV9icHMg
LQotICAgICAgICAgICAgICAgICAgICAgICB0cmFja19jb25maWdzW3RyYWNrX2NvbmZpZ19wYWly
LnNlY29uZF0tPm1pbl9iaXRyYXRlX2JwcywKKyAgICAgICAgICBzdGQ6Om1pbih0cmFja19jb25m
aWdzW3RyYWNrX2NvbmZpZ19wYWlyLnNlY29uZF0ubWF4X2JpdHJhdGVfYnBzIC0KKyAgICAgICAg
ICAgICAgICAgICAgICAgdHJhY2tfY29uZmlnc1t0cmFja19jb25maWdfcGFpci5zZWNvbmRdLm1p
bl9iaXRyYXRlX2JwcywKICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVfaW5jcmVhc2UpOwog
ICAgICAgdHJhY2tfYWxsb2NhdGlvbnNbdHJhY2tfY29uZmlnX3BhaXIuc2Vjb25kXSArPSBjb25z
dW1lZF9pbmNyZWFzZTsKICAgICAgIHRvdGFsX2F2YWlsYWJsZV9pbmNyZWFzZSAtPSBjb25zdW1l
ZF9pbmNyZWFzZTsKQEAgLTc3LDUzICs5OCw1MCBAQCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gQml0
cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6RGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KAogICAgIHJl
dHVybiB0cmFja19hbGxvY2F0aW9uczsKICAgfQogfQotCiBBdWRpb1ByaW9yaXR5Qml0cmF0ZUFs
bG9jYXRpb25TdHJhdGVneTo6QXVkaW9Qcmlvcml0eUJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3ko
CiAgICAgc3RkOjpzdHJpbmcgYXVkaW9fdHJhY2tfaWQsCiAgICAgdWludDMyX3Qgc3VmZmljaWVu
dF9hdWRpb19iaXRyYXRlKQogICAgIDogYXVkaW9fdHJhY2tfaWRfKGF1ZGlvX3RyYWNrX2lkKSwK
LSAgICAgIHN1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZV8oc3VmZmljaWVudF9hdWRpb19iaXRyYXRl
KSB7fQorICAgICAgc3VmZmljaWVudF9hdWRpb19iaXRyYXRlXyhzdWZmaWNpZW50X2F1ZGlvX2Jp
dHJhdGUpIHsKKyAgaWYgKGNvbmZpZ18udGFyZ2V0X3JhdGUpIHsKKyAgICBzdWZmaWNpZW50X2F1
ZGlvX2JpdHJhdGVfID0gY29uZmlnXy50YXJnZXRfcmF0ZS0+YnBzKCk7CisgIH0KK30KIAogc3Rk
Ojp2ZWN0b3I8dWludDMyX3Q+IEF1ZGlvUHJpb3JpdHlCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5
OjpBbGxvY2F0ZUJpdHJhdGVzKAogICAgIHVpbnQzMl90IGF2YWlsYWJsZV9iaXRyYXRlLAotICAg
IGNvbnN0IEFycmF5Vmlldzxjb25zdCBUcmFja0NvbmZpZyo+IHRyYWNrX2NvbmZpZ3MpIHsKLSAg
Y29uc3QgVHJhY2tDb25maWcqIGF1ZGlvX3RyYWNrX2NvbmZpZyA9IE5VTEw7CisgICAgc3RkOjp2
ZWN0b3I8Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWc+IHRyYWNrX2NvbmZp
Z3MpIHsKKyAgVHJhY2tDb25maWcqIGF1ZGlvX3RyYWNrX2NvbmZpZyA9IG51bGxwdHI7CiAgIHNp
emVfdCBhdWRpb19jb25maWdfaW5kZXggPSAwOwogICB1aW50MzJfdCBzdW1fbWluX2JpdHJhdGVz
ID0gMDsKICAgdWludDMyX3Qgc3VtX21heF9iaXRyYXRlcyA9IDA7CiAKLSAgZm9yIChjb25zdCBh
dXRvKiYgdHJhY2tfY29uZmlnIDogdHJhY2tfY29uZmlncykgewotICAgIHN1bV9taW5fYml0cmF0
ZXMgKz0gdHJhY2tfY29uZmlnLT5taW5fYml0cmF0ZV9icHM7Ci0gICAgc3VtX21heF9iaXRyYXRl
cyArPSB0cmFja19jb25maWctPm1heF9iaXRyYXRlX2JwczsKLSAgICBpZiAodHJhY2tfY29uZmln
LT50cmFja19pZCA9PSBhdWRpb190cmFja19pZF8pIHsKLSAgICAgIGF1ZGlvX3RyYWNrX2NvbmZp
ZyA9IHRyYWNrX2NvbmZpZzsKKyAgZm9yIChhdXRvJiB0cmFja19jb25maWcgOiB0cmFja19jb25m
aWdzKSB7CisgICAgaWYgKHRyYWNrX2NvbmZpZy50cmFja19pZCA9PSBhdWRpb190cmFja19pZF8p
IHsKICAgICAgIGF1ZGlvX2NvbmZpZ19pbmRleCA9ICZ0cmFja19jb25maWcgLSAmdHJhY2tfY29u
Zmlnc1swXTsKKyAgICAgIGF1ZGlvX3RyYWNrX2NvbmZpZyA9ICZ0cmFja19jb25maWc7CisgICAg
ICBpZiAoY29uZmlnXy5taW5fcmF0ZSkKKyAgICAgICAgYXVkaW9fdHJhY2tfY29uZmlnLT5taW5f
Yml0cmF0ZV9icHMgPSBjb25maWdfLm1pbl9yYXRlLT5icHMoKTsKKyAgICAgIGlmIChjb25maWdf
Lm1heF9yYXRlKQorICAgICAgICBhdWRpb190cmFja19jb25maWctPm1heF9iaXRyYXRlX2JwcyA9
IGNvbmZpZ18ubWF4X3JhdGUtPmJwcygpOwogICAgIH0KKyAgICBzdW1fbWluX2JpdHJhdGVzICs9
IHRyYWNrX2NvbmZpZy5taW5fYml0cmF0ZV9icHM7CisgICAgc3VtX21heF9iaXRyYXRlcyArPSB0
cmFja19jb25maWcubWF4X2JpdHJhdGVfYnBzOwogICB9CiAgIGlmIChzdW1fbWF4X2JpdHJhdGVz
IDwgYXZhaWxhYmxlX2JpdHJhdGUpIHsKICAgICAvLyBBbGxvdyBub24gYXVkaW8gc3RyZWFtcyB0
byBnbyBhYm92ZSBtYXggdXB0bwogICAgIC8vIGtUcmFuc21pc3Npb25NYXhCaXRyYXRlTXVsdGlw
bGllciAqIG1heF9iaXRyYXRlX2JwcwotICAgIHNpemVfdCB0cmFja19jb25maWdzX3NpemUgPSB0
cmFja19jb25maWdzLnNpemUoKTsKLSAgICBzdGQ6OnZlY3RvcjxUcmFja0NvbmZpZz4gaW5jcmVh
c2VkX3RyYWNrX2NvbmZpZ3ModHJhY2tfY29uZmlnc19zaXplKTsKLSAgICBzdGQ6OnZlY3Rvcjxj
b25zdCBUcmFja0NvbmZpZyo+IGluY3JlYXNlZF90cmFja19jb25maWdzX3B0cigKLSAgICAgICAg
dHJhY2tfY29uZmlnc19zaXplKTsKLSAgICBmb3IgKHVuc2lnbmVkIGxvbmcgaSA9IDA7IGkgPCB0
cmFja19jb25maWdzX3NpemU7IGkrKykgewotICAgICAgaW5jcmVhc2VkX3RyYWNrX2NvbmZpZ3Nb
aV0gPSAoKnRyYWNrX2NvbmZpZ3NbaV0pOwotICAgICAgaW5jcmVhc2VkX3RyYWNrX2NvbmZpZ3Nf
cHRyW2ldID0gJmluY3JlYXNlZF90cmFja19jb25maWdzW2ldOwotICAgICAgaWYgKHRyYWNrX2Nv
bmZpZ3NbaV0tPnRyYWNrX2lkICE9IGF1ZGlvX3RyYWNrX2lkXykgewotICAgICAgICBpbmNyZWFz
ZWRfdHJhY2tfY29uZmlnc1tpXS5tYXhfYml0cmF0ZV9icHMgPQotICAgICAgICAgICAgdHJhY2tf
Y29uZmlnc1tpXS0+bWF4X2JpdHJhdGVfYnBzICoKLSAgICAgICAgICAgIGtUcmFuc21pc3Npb25N
YXhCaXRyYXRlTXVsdGlwbGllcjsKLSAgICAgIH0KKyAgICBmb3IgKGF1dG8mIHRyYWNrX2NvbmZp
ZyA6IHRyYWNrX2NvbmZpZ3MpIHsKKyAgICAgIGlmICgmdHJhY2tfY29uZmlnICE9IGF1ZGlvX3Ry
YWNrX2NvbmZpZykKKyAgICAgICAgdHJhY2tfY29uZmlnLm1heF9iaXRyYXRlX2JwcyAqPSBrVHJh
bnNtaXNzaW9uTWF4Qml0cmF0ZU11bHRpcGxpZXI7CiAgICAgfQotICAgIHJldHVybiBEaXN0cmli
dXRlQml0cmF0ZXNFdmVubHkoaW5jcmVhc2VkX3RyYWNrX2NvbmZpZ3NfcHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX2JpdHJhdGUpOworICAgIHJldHVy
biBEaXN0cmlidXRlQml0cmF0ZXNFdmVubHkodHJhY2tfY29uZmlncywgYXZhaWxhYmxlX2JpdHJh
dGUpOwogICB9Ci0gIGlmIChhdWRpb190cmFja19jb25maWcgPT0gbnVsbHB0cikgeworICBpZiAo
IWF1ZGlvX3RyYWNrX2NvbmZpZykgewogICAgIHJldHVybiBEaXN0cmlidXRlQml0cmF0ZXNFdmVu
bHkodHJhY2tfY29uZmlncywgYXZhaWxhYmxlX2JpdHJhdGUpOwogICB9Ci0gIGF1dG8gc2FmZV9z
dWZmaWNpZW50X2F1ZGlvX2JpdHJhdGUgPSBzdGQ6Om1pbigKLSAgICAgIHN0ZDo6bWF4KGF1ZGlv
X3RyYWNrX2NvbmZpZy0+bWluX2JpdHJhdGVfYnBzLCBzdWZmaWNpZW50X2F1ZGlvX2JpdHJhdGVf
KSwKKyAgYXV0byBzYWZlX3N1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZSA9IHJ0Yzo6U2FmZUNsYW1w
KAorICAgICAgc3VmZmljaWVudF9hdWRpb19iaXRyYXRlXywgYXVkaW9fdHJhY2tfY29uZmlnLT5t
aW5fYml0cmF0ZV9icHMsCiAgICAgICBhdWRpb190cmFja19jb25maWctPm1heF9iaXRyYXRlX2Jw
cyk7CiAgIGlmIChhdmFpbGFibGVfYml0cmF0ZSA8PSBzdW1fbWluX2JpdHJhdGVzKSB7CiAgICAg
cmV0dXJuIFNldEFsbEJpdHJhdGVzVG9NaW5pbXVtKHRyYWNrX2NvbmZpZ3MpOwpAQCAtMTM5LDkg
KzE1Nyw3IEBAIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBBdWRpb1ByaW9yaXR5Qml0cmF0ZUFsbG9j
YXRpb25TdHJhdGVneTo6QWxsb2NhdGVCaXRyYXRlcygKICAgICAgIC8vIFNldHRpbmcgYXVkaW8g
dHJhY2sgbWluaW11bSB0byBzYWZlX3N1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZSB3aWxsCiAgICAg
ICAvLyBhbGxvdyB1c2luZyBEaXN0cmlidXRlQml0cmF0ZXNFdmVubHkgdG8gYWxsb2NhdGUgYXQg
bGVhc3Qgc3VmZmljaWVudAogICAgICAgLy8gYml0cmF0ZSBmb3IgYXVkaW8gYW5kIHRoZSByZXN0
IGV2ZW5seS4KLSAgICAgIFRyYWNrQ29uZmlnIHN1ZmZpY2llbnRfdHJhY2tfY29uZmlnKCp0cmFj
a19jb25maWdzW2F1ZGlvX2NvbmZpZ19pbmRleF0pOwotICAgICAgc3VmZmljaWVudF90cmFja19j
b25maWcubWluX2JpdHJhdGVfYnBzID0gc2FmZV9zdWZmaWNpZW50X2F1ZGlvX2JpdHJhdGU7Ci0g
ICAgICB0cmFja19jb25maWdzW2F1ZGlvX2NvbmZpZ19pbmRleF0gPSAmc3VmZmljaWVudF90cmFj
a19jb25maWc7CisgICAgICBhdWRpb190cmFja19jb25maWctPm1pbl9iaXRyYXRlX2JwcyA9IHNh
ZmVfc3VmZmljaWVudF9hdWRpb19iaXRyYXRlOwogICAgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+
IHRyYWNrX2FsbG9jYXRpb25zID0KICAgICAgICAgICBEaXN0cmlidXRlQml0cmF0ZXNFdmVubHko
dHJhY2tfY29uZmlncywgYXZhaWxhYmxlX2JpdHJhdGUpOwogICAgICAgcmV0dXJuIHRyYWNrX2Fs
bG9jYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRp
b25zdHJhdGVneS5oCmluZGV4IGY3MTFkMWYxOGZmZDgxNGVlYjE2YjhkMzQ5OTk0ZjlhY2ExMzQy
YzIuLjEzYTRlZWU1MjRlMmU5OGIxYzc2N2M5NWRkZmE3MjE3NGJlMGRiMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2JpdHJh
dGVhbGxvY2F0aW9uc3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmgKQEAgLTEx
LDEyICsxMSwxMyBAQAogI2lmbmRlZiBSVENfQkFTRV9CSVRSQVRFQUxMT0NBVElPTlNUUkFURUdZ
X0hfCiAjZGVmaW5lIFJUQ19CQVNFX0JJVFJBVEVBTExPQ0FUSU9OU1RSQVRFR1lfSF8KIAotI2lu
Y2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KKwogI2luY2x1ZGUgImFwaS9hcnJheV92
aWV3LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
ZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhw
ZXJpbWVudHMvZmllbGRfdHJpYWxfdW5pdHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKQEAgLTU2
LDEwICs1NywxMiBAQCBjbGFzcyBCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5IHsKICAgICBzdGQ6
OnN0cmluZyB0cmFja19pZDsKICAgfTsKIAorICAvLyBUaGVzZSBhcmUgb25seSB1c2VkIGJ5IEF1
ZGlvUHJpb3JpdHlCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5LiBUaGV5IGFyZQorICAvLyBleHBv
c2VkIGhlcmUgdG8gdGhleSBjYW4gYmUgdW5pdCB0ZXN0ZWQuCiAgIHN0YXRpYyBzdGQ6OnZlY3Rv
cjx1aW50MzJfdD4gU2V0QWxsQml0cmF0ZXNUb01pbmltdW0oCi0gICAgICBjb25zdCBBcnJheVZp
ZXc8Y29uc3QgVHJhY2tDb25maWcqPiB0cmFja19jb25maWdzKTsKKyAgICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRyYWNrQ29uZmlnPiYgdHJhY2tfY29u
Zmlncyk7CiAgIHN0YXRpYyBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gRGlzdHJpYnV0ZUJpdHJhdGVz
RXZlbmx5KAotICAgICAgY29uc3QgQXJyYXlWaWV3PGNvbnN0IFRyYWNrQ29uZmlnKj4gdHJhY2tf
Y29uZmlncywKKyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRl
Z3k6OlRyYWNrQ29uZmlnPiYgdHJhY2tfY29uZmlncywKICAgICAgIHVpbnQzMl90IGF2YWlsYWJs
ZV9iaXRyYXRlKTsKIAogICAvLyBTdHJhdGVneSBpcyBleHBlY3RlZCB0byBhbGxvY2F0ZSBhbGwg
YXZhaWxhYmxlX2JpdHJhdGUgdXAgdG8gdGhlIHN1bSBvZgpAQCAtNzQsMTEgKzc3LDI1IEBAIGNs
YXNzIEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3kgewogICAvLyBhdmFpbGFibGVfYml0cmF0ZSBk
ZWNyZWFzZS4KICAgdmlydHVhbCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gQWxsb2NhdGVCaXRyYXRl
cygKICAgICAgIHVpbnQzMl90IGF2YWlsYWJsZV9iaXRyYXRlLAotICAgICAgY29uc3QgQXJyYXlW
aWV3PGNvbnN0IFRyYWNrQ29uZmlnKj4gdHJhY2tfY29uZmlncykgPSAwOworICAgICAgc3RkOjp2
ZWN0b3I8Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWc+IHRyYWNrX2NvbmZp
Z3MpID0gMDsKIAogICB2aXJ0dWFsIH5CaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5KCkgPSBkZWZh
dWx0OwogfTsKK30gIC8vIG5hbWVzcGFjZSBydGMKIAorbmFtZXNwYWNlIHdlYnJ0YyB7CitzdHJ1
Y3QgQXVkaW9Qcmlvcml0eUNvbmZpZyB7CisgIEZpZWxkVHJpYWxPcHRpb25hbDxEYXRhUmF0ZT4g
bWluX3JhdGU7CisgIEZpZWxkVHJpYWxPcHRpb25hbDxEYXRhUmF0ZT4gbWF4X3JhdGU7CisgIEZp
ZWxkVHJpYWxPcHRpb25hbDxEYXRhUmF0ZT4gdGFyZ2V0X3JhdGU7CisgIEF1ZGlvUHJpb3JpdHlD
b25maWcoKTsKKyAgQXVkaW9Qcmlvcml0eUNvbmZpZyhjb25zdCBBdWRpb1ByaW9yaXR5Q29uZmln
Jik7CisgIEF1ZGlvUHJpb3JpdHlDb25maWcmIG9wZXJhdG9yPShjb25zdCBBdWRpb1ByaW9yaXR5
Q29uZmlnJikgPSBkZWZhdWx0OworICB+QXVkaW9Qcmlvcml0eUNvbmZpZygpOworfTsKK30gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKKworbmFtZXNwYWNlIHJ0YyB7CiAvLyBTaW1wbGUgYWxsb2NhdGlv
biBzdHJhdGVneSBnaXZpbmcgcHJpb3JpdHkgdG8gYXVkaW8gdW50aWwKIC8vIHN1ZmZpY2llbnRf
YXVkaW9fYml0cmF0ZSBpcyByZWFjaGVkLiBCaXRyYXRlIGlzIGRpc3RyaWJ1dGVkIGV2ZW5seSBi
ZXR3ZWVuCiAvLyB0aGUgdHJhY2tzIGFmdGVyIHN1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZSBpcyBy
ZWFjaGVkLiBUaGlzIGltcGxlbWVudGF0aW9uCkBAIC05MCw5ICsxMDcsMTEgQEAgY2xhc3MgQXVk
aW9Qcmlvcml0eUJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3kKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3VmZmljaWVudF9hdWRpb19iaXRyYXRlKTsK
ICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IEFsbG9jYXRlQml0cmF0ZXMoCiAgICAgICB1aW50MzJf
dCBhdmFpbGFibGVfYml0cmF0ZSwKLSAgICAgIGNvbnN0IEFycmF5Vmlldzxjb25zdCBUcmFja0Nv
bmZpZyo+IHRyYWNrX2NvbmZpZ3MpIG92ZXJyaWRlOworICAgICAgc3RkOjp2ZWN0b3I8Qml0cmF0
ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWc+IHRyYWNrX2NvbmZpZ3MpCisgICAgICBv
dmVycmlkZTsKIAogIHByaXZhdGU6CisgIHdlYnJ0Yzo6QXVkaW9Qcmlvcml0eUNvbmZpZyBjb25m
aWdfOwogICBzdGQ6OnN0cmluZyBhdWRpb190cmFja19pZF87CiAgIHVpbnQzMl90IHN1ZmZpY2ll
bnRfYXVkaW9fYml0cmF0ZV87CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneV91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3lfdW5pdHRlc3QuY2MKaW5kZXggYmZjNDFm
NTZlODAxMDJhZmQ4NzUwOTY4OTVkMGEwNmQzY2QyYmMzOS4uZjRjN2VlNzA0M2I0NjQ2YTY5ZjMx
Yjg0NmMxMmQ2NzNlZDc4NGY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneV91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5X3VuaXR0ZXN0LmNjCkBAIC00MywxMSAr
NDMsOCBAQCBURVNUKEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3lUZXN0LCBTZXRBbGxCaXRyYXRl
c1RvTWluaW11bSkgewogICAgICAgQml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25m
aWcobWluX290aGVyX2JpdHJhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXhfb3RoZXJfYml0cmF0ZSwgZmFsc2UsICIiKX07CiAKLSAgc3RkOjp2ZWN0
b3I8Y29uc3QgcnRjOjpCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZyo+Ci0g
ICAgICB0cmFja19jb25maWdfcHRycyA9IE1ha2VUcmFja0NvbmZpZ1B0cnNWZWN0b3IodHJhY2tf
Y29uZmlncyk7Ci0KICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IGFsbG9jYXRpb25zID0KLSAgICAg
IEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlNldEFsbEJpdHJhdGVzVG9NaW5pbXVtKHRyYWNr
X2NvbmZpZ19wdHJzKTsKKyAgICAgIEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlNldEFsbEJp
dHJhdGVzVG9NaW5pbXVtKHRyYWNrX2NvbmZpZ3MpOwogICBFWFBFQ1RfRVEobWluX2F1ZGlvX2Jp
dHJhdGUsIGFsbG9jYXRpb25zWzBdKTsKICAgRVhQRUNUX0VRKG1pbl92aWRlb19iaXRyYXRlLCBh
bGxvY2F0aW9uc1sxXSk7CiAgIEVYUEVDVF9FUShtaW5fb3RoZXJfYml0cmF0ZSwgYWxsb2NhdGlv
bnNbMl0pOwpAQCAtNzYsMTEgKzczLDggQEAgVEVTVChCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5
VGVzdCwgRGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KSB7CiAgICAgICBCaXRyYXRlQWxsb2NhdGlv
blN0cmF0ZWd5OjpUcmFja0NvbmZpZyhtaW5fb3RoZXJfYml0cmF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9vdGhlcl9iaXRyYXRlLCBmYWxzZSwg
IiIpfTsKIAotICBzdGQ6OnZlY3Rvcjxjb25zdCBydGM6OkJpdHJhdGVBbGxvY2F0aW9uU3RyYXRl
Z3k6OlRyYWNrQ29uZmlnKj4KLSAgICAgIHRyYWNrX2NvbmZpZ19wdHJzID0gTWFrZVRyYWNrQ29u
ZmlnUHRyc1ZlY3Rvcih0cmFja19jb25maWdzKTsKLQogICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4g
YWxsb2NhdGlvbnMgPQotICAgICAgQml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6RGlzdHJpYnV0
ZUJpdHJhdGVzRXZlbmx5KHRyYWNrX2NvbmZpZ19wdHJzLAorICAgICAgQml0cmF0ZUFsbG9jYXRp
b25TdHJhdGVneTo6RGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KHRyYWNrX2NvbmZpZ3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZh
aWxhYmxlX2JpdHJhdGUpOwogICBFWFBFQ1RfRVEobWluX2F1ZGlvX2JpdHJhdGUgKyBldmVuX2Jp
dHJhdGVfaW5jcmVhc2UsIGFsbG9jYXRpb25zWzBdKTsKICAgRVhQRUNUX0VRKG1pbl92aWRlb19i
aXRyYXRlICsgZXZlbl9iaXRyYXRlX2luY3JlYXNlLCBhbGxvY2F0aW9uc1sxXSk7CkBAIC0xMDgs
MTEgKzEwMiw3IEBAIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBSdW5BdWRpb1ByaW9yaXR5QWxsb2Nh
dGlvbigKICAgICAgIEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRyYWNrQ29uZmlnKG1pbl9v
dGhlcl9iaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF4X290aGVyX2JpdHJhdGUsIGZhbHNlLCAiIil9OwogCi0gIHN0ZDo6dmVjdG9yPGNvbnN0
IHJ0Yzo6Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWcqPgotICAgICAgdHJh
Y2tfY29uZmlnX3B0cnMgPSBNYWtlVHJhY2tDb25maWdQdHJzVmVjdG9yKHRyYWNrX2NvbmZpZ3Mp
OwotCi0gIHJldHVybiBhbGxvY2F0aW9uX3N0cmF0ZWd5LkFsbG9jYXRlQml0cmF0ZXMoYXZhaWxh
YmxlX2JpdHJhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhY2tfY29uZmlnX3B0cnMpOworICByZXR1cm4gYWxsb2NhdGlvbl9zdHJhdGVneS5BbGxv
Y2F0ZUJpdHJhdGVzKGF2YWlsYWJsZV9iaXRyYXRlLCB0cmFja19jb25maWdzKTsKIH0KIAogLy8g
VGVzdCB0aGF0IHdoZW4gdGhlIGF2YWlsYWJsZSBiaXRyYXRlIGlzIGxlc3MgdGhhbiB0aGUgc3Vt
IG9mIHRoZSBtaW5pbXVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlci5oCmluZGV4IDIyZjg5MzcyZGViYzE2
ZDU1ZDZjOGM0YzM3ZjhmMGRkYTM1NjkxMTQuLmY5MjkxYjk5ZTVhMTAzMjQ0YzdkNmM0NmNiYTgy
NjQxZTk2ZWIxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlci5oCkBAIC0xNDksMTEgKzE0OSwxMyBA
QCBjbGFzcyBCdWZmZXJUIHsKICAgfQogCiAgIEJ1ZmZlclQmIG9wZXJhdG9yPShCdWZmZXJUJiYg
YnVmKSB7Ci0gICAgUlRDX0RDSEVDSyhJc0NvbnNpc3RlbnQoKSk7CiAgICAgUlRDX0RDSEVDSyhi
dWYuSXNDb25zaXN0ZW50KCkpOworICAgIE1heWJlWmVyb0NvbXBsZXRlQnVmZmVyKCk7CiAgICAg
c2l6ZV8gPSBidWYuc2l6ZV87CiAgICAgY2FwYWNpdHlfID0gYnVmLmNhcGFjaXR5XzsKLSAgICBk
YXRhXyA9IHN0ZDo6bW92ZShidWYuZGF0YV8pOworICAgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgICBz
d2FwKGRhdGFfLCBidWYuZGF0YV8pOworICAgIGJ1Zi5kYXRhXy5yZXNldCgpOwogICAgIGJ1Zi5P
bk1vdmVkRnJvbSgpOwogICAgIHJldHVybiAqdGhpczsKICAgfQpAQCAtMzc0LDEwICszNzYsMTAg
QEAgY2xhc3MgQnVmZmVyVCB7CiAKICAgLy8gWmVybyB0aGUgY29tcGxldGUgYnVmZmVyIGlmIHRl
bXBsYXRlIGFyZ3VtZW50ICJaZXJvT25GcmVlIiBpcyB0cnVlLgogICB2b2lkIE1heWJlWmVyb0Nv
bXBsZXRlQnVmZmVyKCkgewotICAgIGlmIChaZXJvT25GcmVlICYmIGNhcGFjaXR5XykgeworICAg
IGlmIChaZXJvT25GcmVlICYmIGNhcGFjaXR5XyA+IDApIHsKICAgICAgIC8vIEl0IHdvdWxkIGJl
IHN1ZmZpY2llbnQgdG8gb25seSB6ZXJvICJzaXplXyIgZWxlbWVudHMsIGFzIGFsbCBvdGhlcgog
ICAgICAgLy8gbWV0aG9kcyBhbHJlYWR5IGVuc3VyZSB0aGF0IHRoZSB1bnVzZWQgY2FwYWNpdHkg
Y29udGFpbnMgbm8gc2Vuc2l0aXZlCi0gICAgICAvLyBkYXRhIC0gYnV0IGJldHRlciBzYWZlIHRo
YW4gc29ycnkuCisgICAgICAvLyBkYXRhLS0tYnV0IGJldHRlciBzYWZlIHRoYW4gc29ycnkuCiAg
ICAgICBFeHBsaWNpdFplcm9NZW1vcnkoZGF0YV8uZ2V0KCksIGNhcGFjaXR5XyAqIHNpemVvZihU
KSk7CiAgICAgfQogICB9CkBAIC0zODksNyArMzkxLDcgQEAgY2xhc3MgQnVmZmVyVCB7CiAgICAg
RXhwbGljaXRaZXJvTWVtb3J5KGRhdGFfLmdldCgpICsgc2l6ZV8sIGNvdW50ICogc2l6ZW9mKFQp
KTsKICAgfQogCi0gIC8vIFByZWNvbmRpdGlvbiBmb3IgYWxsIG1ldGhvZHMgZXhjZXB0IENsZWFy
IGFuZCB0aGUgZGVzdHJ1Y3Rvci4KKyAgLy8gUHJlY29uZGl0aW9uIGZvciBhbGwgbWV0aG9kcyBl
eGNlcHQgQ2xlYXIsIG9wZXJhdG9yPSBhbmQgdGhlIGRlc3RydWN0b3IuCiAgIC8vIFBvc3Rjb25k
aXRpb24gZm9yIGFsbCBtZXRob2RzIGV4Y2VwdCBtb3ZlIGNvbnN0cnVjdGlvbiBhbmQgbW92ZQog
ICAvLyBhc3NpZ25tZW50LCB3aGljaCBsZWF2ZSB0aGUgbW92ZWQtZnJvbSBvYmplY3QgaW4gYSBw
b3NzaWJseSBpbmNvbnNpc3RlbnQKICAgLy8gc3RhdGUuCkBAIC00MDAsMTUgKzQwMiwxNiBAQCBj
bGFzcyBCdWZmZXJUIHsKICAgLy8gQ2FsbGVkIHdoZW4gKnRoaXMgaGFzIGJlZW4gbW92ZWQgZnJv
bS4gQ29uY2VwdHVhbGx5IGl0J3MgYSBuby1vcCwgYnV0IHdlCiAgIC8vIGNhbiBtdXRhdGUgdGhl
IHN0YXRlIHNsaWdodGx5IHRvIGhlbHAgc3Vic2VxdWVudCBzYW5pdHkgY2hlY2tzIGNhdGNoIGJ1
Z3MuCiAgIHZvaWQgT25Nb3ZlZEZyb20oKSB7CisgICAgUlRDX0RDSEVDSyghZGF0YV8pOyAgLy8g
T3VyIGhlYXAgYmxvY2sgc2hvdWxkIGhhdmUgYmVlbiBzdG9sZW4uCiAjaWYgUlRDX0RDSEVDS19J
U19PTgorICAgIC8vIEVuc3VyZSB0aGF0ICp0aGlzIGlzIGFsd2F5cyBpbmNvbnNpc3RlbnQsIHRv
IHByb3Zva2UgYnVncy4KKyAgICBzaXplXyA9IDE7CisgICAgY2FwYWNpdHlfID0gMDsKKyNlbHNl
CiAgICAgLy8gTWFrZSAqdGhpcyBjb25zaXN0ZW50IGFuZCBlbXB0eS4gU2hvdWxkbid0IGJlIG5l
Y2Vzc2FyeSwgYnV0IGJldHRlciBzYWZlCiAgICAgLy8gdGhhbiBzb3JyeS4KICAgICBzaXplXyA9
IDA7CiAgICAgY2FwYWNpdHlfID0gMDsKLSNlbHNlCi0gICAgLy8gRW5zdXJlIHRoYXQgKnRoaXMg
aXMgYWx3YXlzIGluY29uc2lzdGVudCwgdG8gcHJvdm9rZSBidWdzLgotICAgIHNpemVfID0gMTsK
LSAgICBjYXBhY2l0eV8gPSAwOwogI2VuZGlmCiAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnVmZmVyX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
YnVmZmVyX3VuaXR0ZXN0LmNjCmluZGV4IGFlOTc2ZjEzOTQzMjJmMTFiMWE5NDk2NDY2ZDczODVl
MmJhYzk0YWEuLmIyZjQ3YzE2ZWNiZTNmM2RmOGQxZmM2ODNmNmRhODBjYTNmOGQwMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2J1ZmZlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJfdW5pdHRlc3QuY2MKQEAgLTE4NSw2ICsxODUsMTcg
QEAgVEVTVChCdWZmZXJUZXN0LCBUZXN0TW92ZUFzc2lnbikgewogICBFWFBFQ1RfVFJVRShidWYx
LmVtcHR5KCkpOwogfQogCitURVNUKEJ1ZmZlclRlc3QsIFRlc3RNb3ZlQXNzaWduU2VsZikgewor
ICAvLyBNb3ZlIHNlbGYtYXNzaWdubWVudCBpc24ndCByZXF1aXJlZCB0byBwcm9kdWNlIGEgbWVh
bmluZ2Z1bCBzdGF0ZSwgYnV0CisgIC8vIHNob3VsZCBub3QgbGVhdmUgdGhlIG9iamVjdCBpbiBh
biBpbmNvbnNpc3RlbnQgc3RhdGUuIChTdWNoIGluY29uc2lzdGVudAorICAvLyBzdGF0ZSBjb3Vs
ZCBiZSBjYXVnaHQgYnkgdGhlIERDSEVDS3MgYW5kL29yIGJ5IHRoZSBsZWFrIGNoZWNrZXIuKSBX
ZSBuZWVkCisgIC8vIHRvIGJlIHNuZWFreSB3aGVuIHRlc3RpbmcgdGhpczsgaWYgd2UncmUgZG9p
bmcgYSB0b28tb2J2aW91cworICAvLyBtb3ZlLWFzc2lnbi10by1zZWxmLCBjbGFuZydzIC1Xc2Vs
Zi1tb3ZlIHRyaWdnZXJzIGF0IGNvbXBpbGUgdGltZS4KKyAgQnVmZmVyIGJ1ZihrVGVzdERhdGEs
IDMsIDQwKTsKKyAgQnVmZmVyKiBidWZfcHRyID0gJmJ1ZjsKKyAgYnVmID0gc3RkOjptb3ZlKCpi
dWZfcHRyKTsKK30KKwogVEVTVChCdWZmZXJUZXN0LCBUZXN0U3dhcCkgewogICBCdWZmZXIgYnVm
MShrVGVzdERhdGEsIDMpOwogICBCdWZmZXIgYnVmMihrVGVzdERhdGEsIDYsIDQwKTsKQEAgLTQz
NCw2ICs0NDUsMTkgQEAgVEVTVChCdWZmZXJUZXN0LCBUZXN0U3RydWN0KSB7CiAgIEVYUEVDVF9F
UShrT2JzaWRpYW4sIGJ1ZlsyXS5zdG9uZSk7CiB9CiAKK1RFU1QoQnVmZmVyVGVzdCwgRGllT25V
c2VBZnRlck1vdmUpIHsKKyAgQnVmZmVyIGJ1ZigxNyk7CisgIEJ1ZmZlciBidWYyID0gc3RkOjpt
b3ZlKGJ1Zik7CisgIEVYUEVDVF9FUShidWYyLnNpemUoKSwgMTd1KTsKKyNpZiBSVENfRENIRUNL
X0lTX09OCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QgJiYgIWRlZmluZWQoV0VCUlRDX0FORFJP
SUQpCisgIEVYUEVDVF9ERUFUSChidWYuZW1wdHkoKSwgIiIpOworI2VuZGlmCisjZWxzZQorICBF
WFBFQ1RfVFJVRShidWYuZW1wdHkoKSk7CisjZW5kaWYKK30KKwogVEVTVChaZXJvT25GcmVlQnVm
ZmVyVGVzdCwgVGVzdFplcm9PblNldERhdGEpIHsKICAgWmVyb09uRnJlZUJ1ZmZlcjx1aW50OF90
PiBidWYoa1Rlc3REYXRhLCA3KTsKICAgY29uc3QgdWludDhfdCogb2xkX2RhdGEgPSBidWYuZGF0
YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvYnVmZmVycXVldWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5jYwppbmRleCA0OGZmMmU2ZDMxN2Q3
ODIwOGE2YjMzMGVmYjM5OGFkZDY0ZTNkZjdjLi43NGY3YTUwMmMwYjkxMGU2MWY1YWFhOGJjMTA5
ZTYzMzRiOGE5MThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5jYwpAQCAtMTAs
NiArMTAsOCBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVycXVldWUuaCIKIAorI2luY2x1
ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
IAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnVmZmVycXVldWUuaAppbmRleCA5
NGFiMGNhNGM5ZWIwY2YzYmIzZjk2NGY3ZTZjYzY4YTM5ZTFkNWQ3Li42M2Y1MTgyNTA5ZjYyMjA0
YmUwMTExNTc5OGI5MGYxZTBhOGUyNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlcnF1ZXVl
LmgKQEAgLTExLDEyICsxMSwxNCBAQAogI2lmbmRlZiBSVENfQkFTRV9CVUZGRVJRVUVVRV9IXwog
I2RlZmluZSBSVENfQkFTRV9CVUZGRVJRVUVVRV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAj
aW5jbHVkZSA8ZGVxdWU+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
YnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVh
ZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnl0ZWJ1ZmZlci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J5
dGVidWZmZXIuY2MKaW5kZXggOTRmYzZhY2YwODAyNzQxMmEyNWVkNzM2NzMyMGY3NmUyMWRkYWQx
MC4uZjhjZTFhMjllZmUxNjY4N2FjNjU0ZmU5YWZjYjI1ZWRmYWEzMDhmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnl0ZWJ1
ZmZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9ieXRlYnVmZmVyLmNjCkBAIC0xMiw4ICsxMiw2IEBACiAKICNpbmNsdWRlIDxzdHJp
bmcuaD4KIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQogbmFtZXNwYWNlIHJ0YyB7CiAKIEJ5dGVC
dWZmZXJXcml0ZXI6OkJ5dGVCdWZmZXJXcml0ZXIoKSA6IEJ5dGVCdWZmZXJXcml0ZXJUKCkge30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2J5dGVidWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2J5dGVidWZmZXIuaAppbmRleCA5ZTA4ZjAyNWE4NDIzN2U5NDRhMWZm
M2U1MzhiYWY4OTcyZGNlMjkzLi40ZDI1YzIxMDUwN2Q3MzEwNTlmODNiZDUzYWJkOTczN2JlNGQw
Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9ieXRlYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnl0ZWJ1ZmZlci5oCkBAIC0xMSw2ICsxMSw4IEBACiAj
aWZuZGVmIFJUQ19CQVNFX0JZVEVCVUZGRVJfSF8KICNkZWZpbmUgUlRDX0JBU0VfQllURUJVRkZF
Ul9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVk
ZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jYW5jZWxh
YmxlX3BlcmlvZGljX3Rhc2tfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jYW5jZWxhYmxlX3BlcmlvZGljX3Rhc2tfdW5pdHRl
c3QuY2MKaW5kZXggZmUyN2VhN2Q0OGI2NTZlYzVlOThiOWVmYWY1NmVmYzI2NjhiOTk0Ny4uYmFk
ZDYyMzQxNWFkNTUzMTlmNzJkZGZmZmZiZjFiM2JjMmU0Yjc2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2FuY2VsYWJsZV9w
ZXJpb2RpY190YXNrX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NhbmNlbGFibGVfcGVyaW9kaWNfdGFza191bml0dGVz
dC5jYwpAQCAtNjgsNyArNjgsNyBAQCBURVNUKENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBD
YW5DYWxsQ2FuY2VsT25FbXB0eUhhbmRsZSkgewogfQogCiBURVNUKENhbmNlbGFibGVQZXJpb2Rp
Y1Rhc2tUZXN0LCBDYW5jZWxUYXNrQmVmb3JlSXRSdW5zKSB7Ci0gIHJ0Yzo6RXZlbnQgZG9uZShm
YWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIE1vY2tDbG9zdXJlIG1vY2s7CiAg
IEVYUEVDVF9DQUxMKG1vY2ssIENhbGwpLlRpbWVzKDApOwogICBFWFBFQ1RfQ0FMTChtb2NrLCBE
ZWxldGUpLldpbGxPbmNlKEludm9rZShbJmRvbmVdIHsgZG9uZS5TZXQoKTsgfSkpOwpAQCAtODQs
NyArODQsNyBAQCBURVNUKENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBDYW5jZWxUYXNrQmVm
b3JlSXRSdW5zKSB7CiB9CiAKIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIENhbmNl
bERlbGF5ZWRUYXNrQmVmb3JlSXRSdW5zKSB7Ci0gIHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFs
c2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIE1vY2tDbG9zdXJlIG1vY2s7CiAgIEVYUEVDVF9D
QUxMKG1vY2ssIENhbGwpLlRpbWVzKDApOwogICBFWFBFQ1RfQ0FMTChtb2NrLCBEZWxldGUpLldp
bGxPbmNlKEludm9rZShbJmRvbmVdIHsgZG9uZS5TZXQoKTsgfSkpOwpAQCAtMTAwLDcgKzEwMCw3
IEBAIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIENhbmNlbERlbGF5ZWRUYXNrQmVm
b3JlSXRSdW5zKSB7CiB9CiAKIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIENhbmNl
bFRhc2tBZnRlckl0UnVucykgewotICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAg
cnRjOjpFdmVudCBkb25lOwogICBNb2NrQ2xvc3VyZSBtb2NrOwogICBFWFBFQ1RfQ0FMTChtb2Nr
LCBDYWxsKS5XaWxsT25jZShSZXR1cm4oMTAwKSk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIERlbGV0
ZSkuV2lsbE9uY2UoSW52b2tlKFsmZG9uZV0geyBkb25lLlNldCgpOyB9KSk7CkBAIC0xMTcsNyAr
MTE3LDcgQEAgVEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgQ2FuY2VsVGFza0FmdGVy
SXRSdW5zKSB7CiAKIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIFplcm9SZXR1cm5W
YWx1ZVJlcG9zdHNUaGVUYXNrKSB7CiAgIE5pY2VNb2NrPE1vY2tDbG9zdXJlPiBjbG9zdXJlOwot
ICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICBF
WFBFQ1RfQ0FMTChjbG9zdXJlLCBDYWxsKCkpLldpbGxPbmNlKFJldHVybigwKSkuV2lsbE9uY2Uo
SW52b2tlKFsmZG9uZV0gewogICAgIGRvbmUuU2V0KCk7CiAgICAgcmV0dXJuIGtUaW1lb3V0TXM7
CkBAIC0xMzAsNyArMTMwLDcgQEAgVEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgWmVy
b1JldHVyblZhbHVlUmVwb3N0c1RoZVRhc2spIHsKIAogVEVTVChDYW5jZWxhYmxlUGVyaW9kaWNU
YXNrVGVzdCwgU3RhcnRQZXJpb2RpY1Rhc2spIHsKICAgTW9ja0Z1bmN0aW9uPGludCgpPiBjbG9z
dXJlOwotICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25l
OwogICBFWFBFQ1RfQ0FMTChjbG9zdXJlLCBDYWxsKCkpCiAgICAgICAuV2lsbE9uY2UoUmV0dXJu
KDIwKSkKICAgICAgIC5XaWxsT25jZShSZXR1cm4oMjApKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIFRF
U1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIFN0YXJ0UGVyaW9kaWNUYXNrKSB7CiAKIC8v
IFZhbGlkYXRlcyBwZXJmZWN0IGZvcndhcmRpbmcgZG9lc24ndCBrZWVwIHJlZmVyZW5jZSB0byBk
ZWxldGVkIGNvcHkuCiBURVNUKENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBDcmVhdGVXaXRo
Q29weU9mQUNsb3N1cmUpIHsKLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0
Yzo6RXZlbnQgZG9uZTsKICAgTW9ja0Nsb3N1cmUgbW9jazsKICAgRVhQRUNUX0NBTEwobW9jaywg
Q2FsbCkuV2lsbE9uY2UoSW52b2tlKFsmZG9uZV0gewogICAgIGRvbmUuU2V0KCk7CkBAIC0xNjYs
NyArMTY2LDcgQEAgVEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgQ3JlYXRlV2l0aENv
cHlPZkFDbG9zdXJlKSB7CiB9CiAKIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIERl
bGV0aW5nSGFuZGxlRG9lc250U3RvcFRoZVRhc2spIHsKLSAgcnRjOjpFdmVudCBydW4oZmFsc2Us
IGZhbHNlKTsKKyAgcnRjOjpFdmVudCBydW47CiAgIHJ0Yzo6VGFza1F1ZXVlIHRhc2tfcXVldWUo
InF1ZXVlIik7CiAgIGF1dG8gdGFzayA9IHJ0Yzo6Q3JlYXRlQ2FuY2VsYWJsZVBlcmlvZGljVGFz
aygoWyZdIHsKICAgICBydW4uU2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NvcHlvbndy
aXRlYnVmZmVyLmNjCmluZGV4IDZjNDhkNTJmMTcxNzJlZThjNGNmYWVmYWQzZTkwNTFjY2I0MjA5
MzMuLjhmNTEyNmEyODI2OGNmMTk4YWNiNGNkYTlmZjRhYzc0OTgxZTc3YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NvcHlv
bndyaXRlYnVmZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAK
ICNpbmNsdWRlICJydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIgogCisjaW5jbHVkZSA8c3Rk
ZGVmLmg+CisKIG5hbWVzcGFjZSBydGMgewogCiBDb3B5T25Xcml0ZUJ1ZmZlcjo6Q29weU9uV3Jp
dGVCdWZmZXIoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIuaApp
bmRleCAwNTE0ZTJmZTY2MTFhMjU5NjZmZDYzM2U4ZjY5MmY0NjIzYTJmNWNmLi5jYzE3NGRmYzdj
OTY5ZTcyODk5NWRlM2QzNGRhYTRhYzhkMjgzM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2NvcHlvbndyaXRlYnVmZmVyLmgKQEAgLTExLDEyICsxMSwxNSBAQAogI2lmbmRlZiBSVENfQkFT
RV9DT1BZT05XUklURUJVRkZFUl9IXwogI2RlZmluZSBSVENfQkFTRV9DT1BZT05XUklURUJVRkZF
Ul9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1
ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9zY29wZWRfcmVmX3B0ci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jcHVfdGltZS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NwdV90aW1lLmNjCmluZGV4IGRl
NGE2YmQ2ODQ0YjFlYjQzMjJiNDE3ZDE3NWZhMGYxNjZjOGVlMjMuLmFkOTFlY2FjZTk3MzE5NWM0
OTViYjIyNzkxNDI1OTI5ZDMzMzYyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NwdV90aW1lLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NwdV90aW1lLmNjCkBA
IC02NSw2ICs2NSw5IEBAIGludDY0X3QgR2V0UHJvY2Vzc0NwdVRpbWVOYW5vcygpIHsKICAgfSBl
bHNlIHsKICAgICBSVENfTE9HX0VSUihMU19FUlJPUikgPDwgIkdldFByb2Nlc3NUaW1lcygpIGZh
aWxlZC4iOwogICB9CisjZWxpZiBkZWZpbmVkKFdFQlJUQ19GVUNIU0lBKQorICBSVENfTE9HX0VS
UihMU19FUlJPUikgPDwgIkdldFByb2Nlc3NDcHVUaW1lTmFub3MoKSBub3QgaW1wbGVtZW50ZWQi
OworICByZXR1cm4gMDsKICNlbHNlCiAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCiAgIHN0YXRp
Y19hc3NlcnQoCkBAIC0xMDcsMTAgKzExMCwxMyBAQCBpbnQ2NF90IEdldFRocmVhZENwdVRpbWVO
YW5vcygpIHsKICAgfSBlbHNlIHsKICAgICBSVENfTE9HX0VSUihMU19FUlJPUikgPDwgIkdldFRo
cmVhZFRpbWVzKCkgZmFpbGVkLiI7CiAgIH0KKyNlbGlmIGRlZmluZWQoV0VCUlRDX0ZVQ0hTSUEp
CisgIFJUQ19MT0dfRVJSKExTX0VSUk9SKSA8PCAiR2V0VGhyZWFkQ3B1VGltZU5hbm9zKCkgbm90
IGltcGxlbWVudGVkIjsKKyAgcmV0dXJuIDA7CiAjZWxzZQogICAvLyBOb3QgaW1wbGVtZW50ZWQg
eWV0LgogICBzdGF0aWNfYXNzZXJ0KAotICAgICAgZmFsc2UsICJHZXRQcm9jZXNzQ3B1VGltZU5h
bm9zKCkgcGxhdGZvcm0gc3VwcG9ydCBub3QgeWV0IGltcGxlbWVudGVkLiIpOworICAgICAgZmFs
c2UsICJHZXRUaHJlYWRDcHVUaW1lTmFub3MoKSBwbGF0Zm9ybSBzdXBwb3J0IG5vdCB5ZXQgaW1w
bGVtZW50ZWQuIik7CiAjZW5kaWYKICAgcmV0dXJuIC0xOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY3JpdGljYWxzZWN0
aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvY3JpdGljYWxzZWN0aW9uLmNjCmluZGV4IGQ4YTViNDhjMDUxMzkwMjU4N2JhMjE5NTRmNjA4
NDdjNTE2YTM5NWEuLjRlMDBiZTk2OGRlOTAyYWQyYWRmYTdlZTQxMDIwZGZlYmYyMTliYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2NyaXRpY2Fsc2VjdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uY2MKQEAgLTEwLDYgKzEwLDgg
QEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogCisjaW5jbHVkZSA8
dGltZS5oPgorCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkX3R5cGVz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9jcml0aWNhbHNlY3Rpb25fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jcml0aWNhbHNlY3Rpb25fdW5pdHRl
c3QuY2MKaW5kZXggZGI0ZjllNzQ1MmY1N2M2NjBjN2Q5NTMyNDFiMzhjOWQyMGYwOTgwNC4uNjAx
NmY4NWY4OThlNWU0OGVhNjUwNWRkYTU5Y2U4YTY1ODdiZjIzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY3JpdGljYWxzZWN0
aW9uX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbl91bml0dGVzdC5jYwpAQCAtMzg5LDcgKzM4
OSw3IEBAIGNsYXNzIFBlcmZUZXN0VGhyZWFkIHsKIC8vIFRoZSB0ZXN0IGlzIGRpc2FibGVkIGJ5
IGRlZmF1bHQgdG8gYXZvaWQgdW5lY2Vzc2FyaWx5IGxvYWRpbmcgdGhlIGJvdHMuCiBURVNUKENy
aXRpY2FsU2VjdGlvblRlc3QsIERJU0FCTEVEX1BlcmZvcm1hbmNlKSB7CiAgIFBlcmZUZXN0VGhy
ZWFkIHRocmVhZHNbOF07Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2
ZW50OwogCiAgIHN0YXRpYyBjb25zdCBpbnQga1RocmVhZFJlcGVhdHMgPSAxMDAwMDAwMDsKICAg
c3RhdGljIGNvbnN0IGludCBrRXhwZWN0ZWRDb3VudCA9IGtUaHJlYWRSZXBlYXRzICogYXJyYXlz
aXplKHRocmVhZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ldmVudC5jYwppbmRleCA2Yzk2MzliNGZlY2MxMTFh
ODA3ZWVhYTE4YWVmMDNiYTcxODE2YmFhLi40MmMyMmEyOWNjYjA5NjhhODM3ZGVlZTlkYjZiZGRl
YzFlNGUwYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9ldmVudC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ldmVudC5jYwpAQCAtMjQsNiArMjQsOCBAQAogCiBu
YW1lc3BhY2UgcnRjIHsKIAorRXZlbnQ6OkV2ZW50KCkgOiBFdmVudChmYWxzZSwgZmFsc2UpIHt9
CisKICNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCiAKIEV2ZW50OjpFdmVudChib29sIG1hbnVhbF9y
ZXNldCwgYm9vbCBpbml0aWFsbHlfc2lnbmFsZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ldmVudC5oCmluZGV4
IDdlNjFjNGM4YTY4NzhmZGVhMTNlYjcwMGEzOWMwMjVjZGYxY2FhNWIuLjJlMTEwMDIwNjZkYTkx
ZmM1OTE4NGFhOTBmMTU2ZTFmNTI1ZGFmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnQuaApAQCAtMTEs
NyArMTEsNiBAQAogI2lmbmRlZiBSVENfQkFTRV9FVkVOVF9IXwogI2RlZmluZSBSVENfQkFTRV9F
VkVOVF9IXwogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2lmIGRl
ZmluZWQoV0VCUlRDX1dJTikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZWxpZiBkZWZpbmVkKFdF
QlJUQ19QT1NJWCkKQEAgLTI2LDcgKzI1LDEwIEBAIGNsYXNzIEV2ZW50IHsKICBwdWJsaWM6CiAg
IHN0YXRpYyBjb25zdCBpbnQga0ZvcmV2ZXIgPSAtMTsKIAorICBFdmVudCgpOwogICBFdmVudChi
b29sIG1hbnVhbF9yZXNldCwgYm9vbCBpbml0aWFsbHlfc2lnbmFsZWQpOworICBFdmVudChjb25z
dCBFdmVudCYpID0gZGVsZXRlOworICBFdmVudCYgb3BlcmF0b3I9KGNvbnN0IEV2ZW50JikgPSBk
ZWxldGU7CiAgIH5FdmVudCgpOwogCiAgIHZvaWQgU2V0KCk7CkBAIC00NSw4ICs0Nyw2IEBAIGNs
YXNzIEV2ZW50IHsKICAgY29uc3QgYm9vbCBpc19tYW51YWxfcmVzZXRfOwogICBib29sIGV2ZW50
X3N0YXR1c187CiAjZW5kaWYKLQotICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JT
KEV2ZW50KTsKIH07CiAKIC8vIFRoaXMgY2xhc3MgaXMgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCBDaHJvbWl1bS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50X3RyYWNlci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50X3RyYWNlci5jYwppbmRl
eCAzMWY0MjcxZDMxZTJhMzlkYjdiODg0MTNkYzE4NjhlYTM3Y2I3ZjJiLi5hZjg4YzlkZGQ0YzEw
MWNkODlmMWRjYmY0ODZjMDNiZmI0OTgyZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ldmVudF90cmFjZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnRf
dHJhY2VyLmNjCkBAIC0xMCw3ICsxMCw5IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnRfdHJh
Y2VyLmgiCiAKICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotCisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzdHJpbmc+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCkBAIC0yMCw3ICsyMiw5IEBACiAjaW5jbHVkZSAicnRjX2Jh
c2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWRfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3RyYWNlX2V2ZW50LmgiCiAKQEAgLTg2LDggKzkwLDcgQEAgY2xhc3MgRXZlbnRM
b2dnZXIgZmluYWwgewogICAgICAgOiBsb2dnaW5nX3RocmVhZF8oRXZlbnRUcmFjaW5nVGhyZWFk
RnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAiRXZlbnRUcmFjaW5nVGhyZWFkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGtMb3dQ
cmlvcml0eSksCi0gICAgICAgIHNodXRkb3duX2V2ZW50XyhmYWxzZSwgZmFsc2UpIHt9CisgICAg
ICAgICAgICAgICAgICAgICAgICBrTG93UHJpb3JpdHkpIHt9CiAgIH5FdmVudExvZ2dlcigpIHsg
UlRDX0RDSEVDSyh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsgfQogCiAg
IHZvaWQgQWRkVHJhY2VFdmVudChjb25zdCBjaGFyKiBuYW1lLApAQCAtMjg2LDE5ICsyODksMTkg
QEAgY2xhc3MgRXZlbnRMb2dnZXIgZmluYWwgewogICAgICAgICAgIH0KICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBUUkFDRV9WQUxVRV9UWVBFX1VJTlQ6Ci0gICAgICAgICAgcHJpbnRf
bGVuZ3RoID0gc3ByaW50Zm4oJm91dHB1dFswXSwga1RyYWNlQXJnQnVmZmVyTGVuZ3RoLCAiJWxs
dSIsCisgICAgICAgICAgcHJpbnRfbGVuZ3RoID0gc25wcmludGYoJm91dHB1dFswXSwga1RyYWNl
QXJnQnVmZmVyTGVuZ3RoLCAiJWxsdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJnLnZhbHVlLmFzX3VpbnQpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRS
QUNFX1ZBTFVFX1RZUEVfSU5UOgotICAgICAgICAgIHByaW50X2xlbmd0aCA9IHNwcmludGZuKCZv
dXRwdXRbMF0sIGtUcmFjZUFyZ0J1ZmZlckxlbmd0aCwgIiVsbGQiLAorICAgICAgICAgIHByaW50
X2xlbmd0aCA9IHNucHJpbnRmKCZvdXRwdXRbMF0sIGtUcmFjZUFyZ0J1ZmZlckxlbmd0aCwgIiVs
bGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy52YWx1ZS5hc19pbnQp
OwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRSQUNFX1ZBTFVFX1RZUEVfRE9VQkxF
OgotICAgICAgICAgIHByaW50X2xlbmd0aCA9IHNwcmludGZuKCZvdXRwdXRbMF0sIGtUcmFjZUFy
Z0J1ZmZlckxlbmd0aCwgIiVmIiwKKyAgICAgICAgICBwcmludF9sZW5ndGggPSBzbnByaW50Zigm
b3V0cHV0WzBdLCBrVHJhY2VBcmdCdWZmZXJMZW5ndGgsICIlZiIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXJnLnZhbHVlLmFzX2RvdWJsZSk7CiAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVFJBQ0VfVkFMVUVfVFlQRV9QT0lOVEVSOgotICAgICAgICAgIHByaW50
X2xlbmd0aCA9IHNwcmludGZuKCZvdXRwdXRbMF0sIGtUcmFjZUFyZ0J1ZmZlckxlbmd0aCwgIlwi
JXBcIiIsCisgICAgICAgICAgcHJpbnRfbGVuZ3RoID0gc25wcmludGYoJm91dHB1dFswXSwga1Ry
YWNlQXJnQnVmZmVyTGVuZ3RoLCAiXCIlcFwiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmcudmFsdWUuYXNfcG9pbnRlcik7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9ldmVudF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50X3VuaXR0ZXN0LmNjCmluZGV4IDA1MDYxOWU4NDk1
NDFjYWMwN2QwOTBlZmQ3YmZjMGYzYjUwYjhkNDAuLmE2NTExMWJjOTBmN2YzODM3ZTM4ZDIzNzhh
ZGNjNDBhOGQ4OTZiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50X3VuaXR0ZXN0LmNj
CkBAIC0zMiw3ICszMiw3IEBAIFRFU1QoRXZlbnRUZXN0LCBNYW51YWxSZXNldCkgewogfQogCiBU
RVNUKEV2ZW50VGVzdCwgQXV0b1Jlc2V0KSB7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7
CisgIEV2ZW50IGV2ZW50OwogICBBU1NFUlRfRkFMU0UoZXZlbnQuV2FpdCgwKSk7CiAKICAgZXZl
bnQuU2V0KCk7CkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIFNpZ25hbGVyVGhyZWFkIHsKICAgICAg
IG1lLT5yZWFkZXJfLT5XYWl0KEV2ZW50OjprRm9yZXZlcik7CiAgICAgfQogICB9Ci0gIEV2ZW50
IHN0b3BfZXZlbnRfe2ZhbHNlLCBmYWxzZX07CisgIEV2ZW50IHN0b3BfZXZlbnRfOwogICBFdmVu
dCogd3JpdGVyXzsKICAgRXZlbnQqIHJlYWRlcl87CiAgIFBsYXRmb3JtVGhyZWFkIHRocmVhZF87
CkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFNpZ25hbGVyVGhyZWFkIHsKIC8vIFRoZXNlIHRlc3Rz
IGFyZSBkaXNhYmxlZCBieSBkZWZhdWx0IGFuZCBvbmx5IGludGVuZGVkIHRvIGJlIHJ1biBtYW51
YWxseS4KIFRFU1QoRXZlbnRUZXN0LCBESVNBQkxFRF9QZXJmb3JtYW5jZVNpbmdsZVRocmVhZCkg
ewogICBzdGF0aWMgY29uc3QgaW50IGtOdW1JdGVyYXRpb25zID0gMTAwMDAwMDA7Ci0gIEV2ZW50
IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBmb3IgKGludCBpID0gMDsg
aSA8IGtOdW1JdGVyYXRpb25zOyArK2kpIHsKICAgICBldmVudC5TZXQoKTsKICAgICBldmVudC5X
YWl0KDApOwpAQCAtNzcsOCArNzcsOCBAQCBURVNUKEV2ZW50VGVzdCwgRElTQUJMRURfUGVyZm9y
bWFuY2VTaW5nbGVUaHJlYWQpIHsKIAogVEVTVChFdmVudFRlc3QsIERJU0FCTEVEX1BlcmZvcm1h
bmNlTXVsdGlUaHJlYWQpIHsKICAgc3RhdGljIGNvbnN0IGludCBrTnVtSXRlcmF0aW9ucyA9IDEw
MDAwOwotICBFdmVudCByZWFkKGZhbHNlLCBmYWxzZSk7Ci0gIEV2ZW50IHdyaXRlKGZhbHNlLCBm
YWxzZSk7CisgIEV2ZW50IHJlYWQ7CisgIEV2ZW50IHdyaXRlOwogICBTaWduYWxlclRocmVhZCB0
aHJlYWQ7CiAgIHRocmVhZC5TdGFydCgmcmVhZCwgJndyaXRlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVu
dHMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9leHBlcmltZW50cy9CVUlMRC5nbgppbmRleCBiMTBkMGMxNTQ1OTIwNjI2NzFhOWYy
YWM5ZDhhOTJmNTAzNjgyNmRhLi5kMzZhNDNlOTQ2OTA1NWVkY2M0ZGY2OTVhM2FkMTU4ODRlYmY3
MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9leHBlcmltZW50cy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9CVUlMRC5nbgpAQCAt
MjgsMTEgKzI4LDExIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiZmllbGRfdHJpYWxfcGFyc2VyIikg
ewogICAgICJmaWVsZF90cmlhbF91bml0cy5oIiwKICAgXQogICBkZXBzID0gWwotICAgICIuLi86
cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi9hcGkvdW5pdHM6ZGF0YV9yYXRlIiwKICAg
ICAiLi4vLi4vYXBpL3VuaXRzOmRhdGFfc2l6ZSIsCiAgICAgIi4uLy4uL2FwaS91bml0czp0aW1l
X2RlbHRhIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vcnRjX2Jh
c2U6bG9nZ2luZyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9w
dGlvbmFsIiwKICAgXQogfQpAQCAtNTYsMTMgKzU2LDM2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgi
cXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnQiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiLi4v
OnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4u
Ly4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgIi4uLy4uL3N5c3Rl
bV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQogCitydGNfc3RhdGljX2xpYnJhcnkoIm5vcm1h
bGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50IikgeworICBzb3VyY2VzID0gWworICAgICJu
b3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5jYyIsCisgICAgIm5vcm1hbGl6ZV9z
aW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uLzpy
dGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlh
bCIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwK
KyAgXQorfQorCitydGNfc3RhdGljX2xpYnJhcnkoImNwdV9zcGVlZF9leHBlcmltZW50Iikgewor
ICBzb3VyY2VzID0gWworICAgICJjcHVfc3BlZWRfZXhwZXJpbWVudC5jYyIsCisgICAgImNwdV9z
cGVlZF9leHBlcmltZW50LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uLzpydGNfYmFzZV9h
cHByb3ZlZCIsCisgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgXQorfQor
CiBydGNfc3RhdGljX2xpYnJhcnkoInJ0dF9tdWx0X2V4cGVyaW1lbnQiKSB7CiAgIHNvdXJjZXMg
PSBbCiAgICAgInJ0dF9tdWx0X2V4cGVyaW1lbnQuY2MiLApAQCAtNzQsMjYgKzk3LDQ0IEBAIHJ0
Y19zdGF0aWNfbGlicmFyeSgicnR0X211bHRfZXhwZXJpbWVudCIpIHsKICAgXQogfQogCitydGNf
c3RhdGljX2xpYnJhcnkoImppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50IikgeworICBzb3Vy
Y2VzID0gWworICAgICJqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYyIsCisgICAgImpp
dHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4u
LzpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90
cmlhbCIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKKyAgXQorfQorCiBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgcnRjX3NvdXJjZV9zZXQo
ImV4cGVyaW1lbnRzX3VuaXR0ZXN0cyIpIHsKICAgICB0ZXN0b25seSA9IHRydWUKIAogICAgIHNv
dXJjZXMgPSBbCiAgICAgICAiY29uZ2VzdGlvbl9jb250cm9sbGVyX2V4cGVyaW1lbnRfdW5pdHRl
c3QuY2MiLAorICAgICAgImNwdV9zcGVlZF9leHBlcmltZW50X3VuaXR0ZXN0LmNjIiwKICAgICAg
ICJmaWVsZF90cmlhbF9wYXJzZXJfdW5pdHRlc3QuY2MiLAogICAgICAgImZpZWxkX3RyaWFsX3Vu
aXRzX3VuaXR0ZXN0LmNjIiwKKyAgICAgICJub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJp
bWVudF91bml0dGVzdC5jYyIsCiAgICAgICAicXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnRfdW5p
dHRlc3QuY2MiLAogICAgICAgInJ0dF9tdWx0X2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MiLAogICAg
IF0KICAgICBkZXBzID0gWwogICAgICAgIjpjb25nZXN0aW9uX2NvbnRyb2xsZXJfZXhwZXJpbWVu
dCIsCisgICAgICAiOmNwdV9zcGVlZF9leHBlcmltZW50IiwKICAgICAgICI6ZmllbGRfdHJpYWxf
cGFyc2VyIiwKKyAgICAgICI6bm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQiLAog
ICAgICAgIjpxdWFsaXR5X3NjYWxpbmdfZXhwZXJpbWVudCIsCiAgICAgICAiOnJ0dF9tdWx0X2V4
cGVyaW1lbnQiLAorICAgICAgIi4uOmd1bml0X2hlbHBlcnMiLAogICAgICAgIi4uLzpydGNfYmFz
ZV90ZXN0c19tYWluIiwKICAgICAgICIuLi86cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAg
Ii4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgICAiLi4vLi4vdGVzdDpm
aWVsZF90cmlhbCIsCisgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgIF0KICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvT1dORVJTCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjljNTU4NzIyNmY4ZGEyMjQ1NWUwMTRlZDk2MWExMTJjZTFmYThlMGMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9l
eHBlcmltZW50cy9PV05FUlMKQEAgLTAsMCArMSw4IEBACitwZXItZmlsZSBhbHJfZXhwZXJpbWVu
dCo9c3ByYW5nQHdlYnJ0Yy5vcmcKK3Blci1maWxlIGNvbmdlc3Rpb25fY29udHJvbGxlcl9leHBl
cmltZW50Kj1zcnRlQHdlYnJ0Yy5vcmcKK3Blci1maWxlIGNwdV9zcGVlZF9leHBlcmltZW50Kj1h
c2FwZXJzc29uQHdlYnJ0Yy5vcmcKK3Blci1maWxlIGZpZWxkX3RyaWFsKj1zcnRlQHdlYnJ0Yy5v
cmcKK3Blci1maWxlIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50Kj1zcHJhbmdAd2VicnRj
Lm9yZworcGVyLWZpbGUgbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQqPWFzYXBl
cnNzb25Ad2VicnRjLm9yZworcGVyLWZpbGUgcXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnQqPWFz
YXBlcnNzb25Ad2VicnRjLm9yZworcGVyLWZpbGUgcnR0X211bHRfZXhwZXJpbWVudCo9bWhvcm9A
d2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9h
bHJfZXhwZXJpbWVudC5jYwppbmRleCBkZmY1YWNlY2M4Yjc1NjZhMDhjMTU2OWVlNzBmZjE1MDhl
MjY3NDQ0Li4yNWU5NDhkOThhMGU3Njg0YmFjZDM5OWRiNjYyYTY5ODVkNTdkMzdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9l
eHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5j
YwpAQCAtMTAsOSArMTAsMTAgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2Fs
cl9leHBlcmltZW50LmgiCiAKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGlv
Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvZm9ybWF0X21hY3Jv
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhw
ZXJpbWVudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQuaAppbmRleCA0ZDlmZDAwMTMwNDk2NTU0
MmZkNTU4ZDE0NDEyN2VhMzM3Nzg0MmZlLi44NzZiZDAyNTE3MzBiNmEwNDBjY2EzYWU1ZjkxMDMx
MTM1Y2U5NDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRz
L2Fscl9leHBlcmltZW50LmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgUlRDX0JBU0VfRVhQ
RVJJTUVOVFNfQUxSX0VYUEVSSU1FTlRfSF8KICNkZWZpbmUgUlRDX0JBU0VfRVhQRVJJTUVOVFNf
QUxSX0VYUEVSSU1FTlRfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1l
bnRzL2NwdV9zcGVlZF9leHBlcmltZW50LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVkX2V4cGVyaW1lbnQu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjM5NTQwY2YwMzkwZjFiOTk4OTRhY2QxZTRmMDRmNDE3NmM0ZmQ0Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBlcmltZW50LmNjCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfYmFzZS9leHBlcmlt
ZW50cy9jcHVfc3BlZWRfZXhwZXJpbWVudC5oIgorCisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNs
dWRlL2ZpZWxkX3RyaWFsLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHsKK2Nv
bnN0ZXhwciBjaGFyIGtGaWVsZFRyaWFsW10gPSAiV2ViUlRDLVZQOC1DcHVTcGVlZC1Bcm0iOwor
Y29uc3RleHByIGludCBrTWluU2V0dGluZyA9IC0xNjsKK2NvbnN0ZXhwciBpbnQga01heFNldHRp
bmcgPSAtMTsKK30gIC8vIG5hbWVzcGFjZQorCithYnNsOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxD
cHVTcGVlZEV4cGVyaW1lbnQ6OkNvbmZpZz4+CitDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENvbmZp
Z3MoKSB7CisgIGlmICghd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtGaWVsZFRyaWFs
KSkKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKworICBjb25zdCBzdGQ6OnN0cmluZyBncm91
cCA9IHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZShrRmllbGRUcmlhbCk7CisgIGlm
IChncm91cC5lbXB0eSgpKQorICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworCisgIHN0ZDo6dmVj
dG9yPENvbmZpZz4gY29uZmlncygzKTsKKyAgaWYgKHNzY2FuZihncm91cC5jX3N0cigpLCAiRW5h
YmxlZC0lZCwlZCwlZCwlZCwlZCwlZCIsICYoY29uZmlnc1swXS5waXhlbHMpLAorICAgICAgICAg
ICAgICYoY29uZmlnc1swXS5jcHVfc3BlZWQpLCAmKGNvbmZpZ3NbMV0ucGl4ZWxzKSwKKyAgICAg
ICAgICAgICAmKGNvbmZpZ3NbMV0uY3B1X3NwZWVkKSwgJihjb25maWdzWzJdLnBpeGVscyksCisg
ICAgICAgICAgICAgJihjb25maWdzWzJdLmNwdV9zcGVlZCkpICE9IDYpIHsKKyAgICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJUb28gZmV3IHBhcmFtZXRlcnMgcHJvdmlkZWQuIjsKKyAgICByZXR1
cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorCisgIGZvciAoY29uc3QgYXV0byYgY29uZmlnIDogY29u
ZmlncykgeworICAgIGlmIChjb25maWcuY3B1X3NwZWVkIDwga01pblNldHRpbmcgfHwgY29uZmln
LmNwdV9zcGVlZCA+IGtNYXhTZXR0aW5nKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8
ICJVbnN1cHBvcnRlZCBjcHUgc3BlZWQgc2V0dGluZywgdmFsdWUgaWdub3JlZC4iOworICAgICAg
cmV0dXJuIGFic2w6Om51bGxvcHQ7CisgICAgfQorICB9CisKKyAgZm9yIChzaXplX3QgaSA9IDE7
IGkgPCBjb25maWdzLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGNvbmZpZ3NbaV0ucGl4ZWxzIDwg
Y29uZmlnc1tpIC0gMV0ucGl4ZWxzIHx8CisgICAgICAgIGNvbmZpZ3NbaV0uY3B1X3NwZWVkID4g
Y29uZmlnc1tpIC0gMV0uY3B1X3NwZWVkKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8
ICJJbnZhbGlkIHBhcmFtZXRlciB2YWx1ZSBwcm92aWRlZC4iOworICAgICAgcmV0dXJuIGFic2w6
Om51bGxvcHQ7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGFic2w6Om9wdGlvbmFsPHN0ZDo6dmVj
dG9yPENvbmZpZz4+KGNvbmZpZ3MpOworfQorCitpbnQgQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRW
YWx1ZShpbnQgcGl4ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8Q29uZmlnPiYgY29uZmlncykgeworICBmb3IgKGNvbnN0IGF1dG8mIGNvbmZp
ZyA6IGNvbmZpZ3MpIHsKKyAgICBpZiAocGl4ZWxzIDw9IGNvbmZpZy5waXhlbHMpCisgICAgICBy
ZXR1cm4gY29uZmlnLmNwdV9zcGVlZDsKKyAgfQorICByZXR1cm4ga01pblNldHRpbmc7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBl
cmltZW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9leHBlcmltZW50cy9jcHVfc3BlZWRfZXhwZXJpbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2Yzgz
NDA5NDMwMTQxZTU3MDFhZTIwYmExNDRjN2Q2NzJjZTlkOWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmlt
ZW50cy9jcHVfc3BlZWRfZXhwZXJpbWVudC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfRVhQRVJJTUVOVFNfQ1BVX1NQRUVEX0VYUEVSSU1F
TlRfSF8KKyNkZWZpbmUgUlRDX0JBU0VfRVhQRVJJTUVOVFNfQ1BVX1NQRUVEX0VYUEVSSU1FTlRf
SF8KKworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIENwdVNwZWVkRXhwZXJpbWVudCB7Cisg
cHVibGljOgorICBzdHJ1Y3QgQ29uZmlnIHsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29u
ZmlnJiBvKSBjb25zdCB7CisgICAgICByZXR1cm4gcGl4ZWxzID09IG8ucGl4ZWxzICYmIGNwdV9z
cGVlZCA9PSBvLmNwdV9zcGVlZDsKKyAgICB9CisKKyAgICBpbnQgcGl4ZWxzOyAgICAgLy8gVGhl
IHZpZGVvIGZyYW1lIHNpemUuCisgICAgaW50IGNwdV9zcGVlZDsgIC8vIFRoZSB8Y3B1X3NwZWVk
fCB0byBiZSB1c2VkIGlmIHRoZSBmcmFtZSBzaXplIGlzIGxlc3MKKyAgICAgICAgICAgICAgICAg
ICAgLy8gdGhhbiBvciBlcXVhbCB0byB8cGl4ZWxzfC4KKyAgfTsKKworICAvLyBSZXR1cm5zIHRo
ZSBjb25maWd1cmF0aW9ucyBmcm9tIGZpZWxkIHRyaWFsIG9uIHN1Y2Nlc3MuCisgIHN0YXRpYyBh
YnNsOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxDb25maWc+PiBHZXRDb25maWdzKCk7CisKKyAgLy8g
R2V0cyB0aGUgY3B1IHNwZWVkIGZyb20gdGhlIHxjb25maWdzfCBiYXNlZCBvbiB8cGl4ZWxzfC4K
KyAgc3RhdGljIGludCBHZXRWYWx1ZShpbnQgcGl4ZWxzLCBjb25zdCBzdGQ6OnZlY3RvcjxDb25m
aWc+JiBjb25maWdzKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAv
LyBSVENfQkFTRV9FWFBFUklNRU5UU19DUFVfU1BFRURfRVhQRVJJTUVOVF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhw
ZXJpbWVudHMvY3B1X3NwZWVkX2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9jcHVfc3Bl
ZWRfZXhwZXJpbWVudF91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGM3ODJjMGFkZGJkNjk0NDIx
ZTNiYmI1OWNiNDc4YmIzMmVlYzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVk
X2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqICBDb3B5cmln
aHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBlcmltZW50
LmgiCisKKyNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgorI2luY2x1ZGUgInRlc3QvZmllbGRf
dHJpYWwuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CitURVNUKENwdVNwZWVkRXhwZXJpbWVudFRlc3QsIEdldENvbmZpZ3NGYWlsc0lmTm90RW5hYmxl
ZCkgeworICBFWFBFQ1RfRkFMU0UoQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRDb25maWdzKCkpOwor
fQorCitURVNUKENwdVNwZWVkRXhwZXJpbWVudFRlc3QsIEdldENvbmZpZ3NGYWlsc0ZvclRvb0Zl
d1BhcmFtZXRlcnMpIHsKKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90
cmlhbHMoCisgICAgICAiV2ViUlRDLVZQOC1DcHVTcGVlZC1Bcm0vRW5hYmxlZC0xMDAwLC0xLDIw
MDAsLTEwLDMwMDAvIik7CisgIEVYUEVDVF9GQUxTRShDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENv
bmZpZ3MoKSk7Cit9CisKK1RFU1QoQ3B1U3BlZWRFeHBlcmltZW50VGVzdCwgR2V0Q29uZmlncykg
eworICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAg
ICJXZWJSVEMtVlA4LUNwdVNwZWVkLUFybS9FbmFibGVkLTEwMDAsLTEsMjAwMCwtMTAsMzAwMCwt
MTYvIik7CisKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8c3RkOjp2ZWN0b3I8Q3B1U3BlZWRFeHBl
cmltZW50OjpDb25maWc+PiBrQ29uZmlncyA9CisgICAgICBDcHVTcGVlZEV4cGVyaW1lbnQ6Okdl
dENvbmZpZ3MoKTsKKyAgQVNTRVJUX1RSVUUoa0NvbmZpZ3MpOworICBFWFBFQ1RfVEhBVCgqa0Nv
bmZpZ3MsCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6RWxlbWVudHNBcmUoQ3B1U3BlZWRFeHBl
cmltZW50OjpDb25maWd7MTAwMCwgLTF9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENwdVNwZWVkRXhwZXJpbWVudDo6Q29uZmlnezIwMDAsIC0xMH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3B1U3BlZWRFeHBlcmltZW50OjpDb25maWd7MzAw
MCwgLTE2fSkpOworfQorCitURVNUKENwdVNwZWVkRXhwZXJpbWVudFRlc3QsIEdldFZhbHVlKSB7
CisgIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAg
IldlYlJUQy1WUDgtQ3B1U3BlZWQtQXJtL0VuYWJsZWQtMTAwMCwtNSwyMDAwLC0xMCwzMDAwLC0x
Mi8iKTsKKworICBjb25zdCBhYnNsOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxDcHVTcGVlZEV4cGVy
aW1lbnQ6OkNvbmZpZz4+IGtDb25maWdzID0KKyAgICAgIENwdVNwZWVkRXhwZXJpbWVudDo6R2V0
Q29uZmlncygpOworICBBU1NFUlRfVFJVRShrQ29uZmlncyk7CisgIEFTU0VSVF9FUSgzdSwgKCpr
Q29uZmlncykuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKC01LCBDcHVTcGVlZEV4cGVyaW1lbnQ6Okdl
dFZhbHVlKDEsICprQ29uZmlncykpOworICBFWFBFQ1RfRVEoLTUsIENwdVNwZWVkRXhwZXJpbWVu
dDo6R2V0VmFsdWUoMTAwMCwgKmtDb25maWdzKSk7CisgIEVYUEVDVF9FUSgtMTAsIENwdVNwZWVk
RXhwZXJpbWVudDo6R2V0VmFsdWUoMTAwMCArIDEsICprQ29uZmlncykpOworICBFWFBFQ1RfRVEo
LTEwLCBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKDIwMDAsICprQ29uZmlncykpOworICBF
WFBFQ1RfRVEoLTEyLCBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKDIwMDAgKyAxLCAqa0Nv
bmZpZ3MpKTsKKyAgRVhQRUNUX0VRKC0xMiwgQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRWYWx1ZSgz
MDAwLCAqa0NvbmZpZ3MpKTsKKyAgRVhQRUNUX0VRKC0xNiwgQ3B1U3BlZWRFeHBlcmltZW50OjpH
ZXRWYWx1ZSgzMDAwICsgMSwgKmtDb25maWdzKSk7Cit9CisKK1RFU1QoQ3B1U3BlZWRFeHBlcmlt
ZW50VGVzdCwgR2V0Q29uZmlnc0ZhaWxzRm9yVG9vU21hbGxWYWx1ZSkgeworICAvLyBTdXBwb3J0
ZWQgcmFuZ2U6IFstMTYsIC0xXS4KKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBm
aWVsZF90cmlhbHMoCisgICAgICAiV2ViUlRDLVZQOC1DcHVTcGVlZC1Bcm0vRW5hYmxlZC0xMDAw
LC0xLDIwMDAsLTEwLDMwMDAsLTE3LyIpOworICBFWFBFQ1RfRkFMU0UoQ3B1U3BlZWRFeHBlcmlt
ZW50OjpHZXRDb25maWdzKCkpOworfQorCitURVNUKENwdVNwZWVkRXhwZXJpbWVudFRlc3QsIEdl
dENvbmZpZ3NGYWlsc0ZvclRvb0xhcmdlVmFsdWUpIHsKKyAgLy8gU3VwcG9ydGVkIHJhbmdlOiBb
LTE2LCAtMV0uCisgIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxz
KAorICAgICAgIldlYlJUQy1WUDgtQ3B1U3BlZWQtQXJtL0VuYWJsZWQtMTAwMCwwLDIwMDAsLTEw
LDMwMDAsLTE2LyIpOworICBFWFBFQ1RfRkFMU0UoQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRDb25m
aWdzKCkpOworfQorCitURVNUKENwdVNwZWVkRXhwZXJpbWVudFRlc3QsIEdldENvbmZpZ3NGYWls
c0lmUGl4ZWxzRGVjcmVhc2luZykgeworICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxz
IGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJSVEMtVlA4LUNwdVNwZWVkLUFybS9FbmFibGVkLTEw
MDAsLTUsOTk5LC0xMCwzMDAwLC0xNi8iKTsKKyAgRVhQRUNUX0ZBTFNFKENwdVNwZWVkRXhwZXJp
bWVudDo6R2V0Q29uZmlncygpKTsKK30KKworVEVTVChDcHVTcGVlZEV4cGVyaW1lbnRUZXN0LCBH
ZXRDb25maWdzRmFpbHNJZkNwdVNwZWVkSW5jcmVhc2luZykgeworICB3ZWJydGM6OnRlc3Q6OlNj
b3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJSVEMtVlA4LUNwdVNwZWVk
LUFybS9FbmFibGVkLTEwMDAsLTUsMjAwMCwtNCwzMDAwLC0xNi8iKTsKKyAgRVhQRUNUX0ZBTFNF
KENwdVNwZWVkRXhwZXJpbWVudDo6R2V0Q29uZmlncygpKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMv
ZmllbGRfdHJpYWxfcGFyc2VyLmNjCmluZGV4IGEyZDdmOTdiZGUxZjQ2NDNmN2U1ZWZkZDQxYTJh
MjRhZWYyOWZiOTguLjkzNjQ4N2NiMDE1ZTAyNjJlZjkwYTI4MDJhYzI2ZGFiZjM0NzM1MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90
cmlhbF9wYXJzZXIuY2MKQEAgLTE2OSw2ICsxNjksOSBAQCB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRy
aWFsUGFyYW1ldGVyPGRvdWJsZT47CiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVy
PGludD47CiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPHN0ZDo6c3RyaW5nPjsK
IAordGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbENvbnN0cmFpbmVkPGRvdWJsZT47Cit0ZW1wbGF0
ZSBjbGFzcyBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8aW50PjsKKwogdGVtcGxhdGUgY2xhc3MgRmll
bGRUcmlhbE9wdGlvbmFsPGRvdWJsZT47CiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9u
YWw8aW50PjsKIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxPcHRpb25hbDxib29sPjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFy
c2VyLmgKaW5kZXggMjJhODg4OTcxNzBiYzU1MDcyZmQ4ZDFlMzFhMGRkN2YwMzdkOGZkMS4uOGJk
ZDliNWQ4ZWJlODYwMWE0NGU2YTIyYzlhNzY4ZDliYWU2ZmY5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMv
ZmllbGRfdHJpYWxfcGFyc2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyLmgKQEAg
LTkyLDYgKzkyLDQzIEBAIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXIgOiBwdWJsaWMgRmllbGRU
cmlhbFBhcmFtZXRlckludGVyZmFjZSB7CiAgIFQgdmFsdWVfOwogfTsKIAorLy8gVGhpcyBjbGFz
cyB1c2VzIHRoZSBQYXJzZVR5cGVkUGFyYW1ldGVyIGZ1bmN0aW9uIHRvIGltcGxlbWVudCBhIHBh
cmFtZXRlcgorLy8gaW1wbGVtZW50YXRpb24gd2l0aCBhbiBlbmZvcmNlZCBkZWZhdWx0IHZhbHVl
IGFuZCBhIHJhbmdlIGNvbnN0cmFpbnQuIFZhbHVlcworLy8gb3V0c2lkZSB0aGUgY29uZmlndXJl
ZCByYW5nZSB3aWxsIGJlIGlnbm9yZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZp
ZWxkVHJpYWxDb25zdHJhaW5lZCA6IHB1YmxpYyBGaWVsZFRyaWFsUGFyYW1ldGVySW50ZXJmYWNl
IHsKKyBwdWJsaWM6CisgIEZpZWxkVHJpYWxDb25zdHJhaW5lZChzdGQ6OnN0cmluZyBrZXksCisg
ICAgICAgICAgICAgICAgICAgICAgICBUIGRlZmF1bHRfdmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBhYnNsOjpvcHRpb25hbDxUPiBsb3dlcl9saW1pdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFic2w6Om9wdGlvbmFsPFQ+IHVwcGVyX2xpbWl0KQorICAgICAgOiBGaWVsZFRyaWFs
UGFyYW1ldGVySW50ZXJmYWNlKGtleSksCisgICAgICAgIHZhbHVlXyhkZWZhdWx0X3ZhbHVlKSwK
KyAgICAgICAgbG93ZXJfbGltaXRfKGxvd2VyX2xpbWl0KSwKKyAgICAgICAgdXBwZXJfbGltaXRf
KHVwcGVyX2xpbWl0KSB7fQorICBUIEdldCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQorICBv
cGVyYXRvciBUKCkgY29uc3QgeyByZXR1cm4gR2V0KCk7IH0KKyAgY29uc3QgVCogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuICZ2YWx1ZV87IH0KKworIHByb3RlY3RlZDoKKyAgYm9vbCBQYXJz
ZShhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gc3RyX3ZhbHVlKSBvdmVycmlkZSB7CisgICAg
aWYgKHN0cl92YWx1ZSkgeworICAgICAgYWJzbDo6b3B0aW9uYWw8VD4gdmFsdWUgPSBQYXJzZVR5
cGVkUGFyYW1ldGVyPFQ+KCpzdHJfdmFsdWUpOworICAgICAgaWYgKHZhbHVlICYmICghbG93ZXJf
bGltaXRfIHx8ICp2YWx1ZSA+PSAqbG93ZXJfbGltaXRfKSAmJgorICAgICAgICAgICghdXBwZXJf
bGltaXRfIHx8ICp2YWx1ZSA8PSAqdXBwZXJfbGltaXRfKSkgeworICAgICAgICB2YWx1ZV8gPSAq
dmFsdWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7CisgIH0KKworIHByaXZhdGU6CisgIFQgdmFsdWVfOworICBhYnNsOjpvcHRpb25hbDxU
PiBsb3dlcl9saW1pdF87CisgIGFic2w6Om9wdGlvbmFsPFQ+IHVwcGVyX2xpbWl0XzsKK307CisK
IGNsYXNzIEFic3RyYWN0RmllbGRUcmlhbEVudW0gOiBwdWJsaWMgRmllbGRUcmlhbFBhcmFtZXRl
ckludGVyZmFjZSB7CiAgcHVibGljOgogICBBYnN0cmFjdEZpZWxkVHJpYWxFbnVtKHN0ZDo6c3Ry
aW5nIGtleSwKQEAgLTE5MSw2ICsyMjgsOSBAQCBleHRlcm4gdGVtcGxhdGUgY2xhc3MgRmllbGRU
cmlhbFBhcmFtZXRlcjxpbnQ+OwogLy8gVXNpbmcgdGhlIGdpdmVuIHZhbHVlIGFzIGlzLgogZXh0
ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8c3RkOjpzdHJpbmc+OwogCitl
eHRlcm4gdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbENvbnN0cmFpbmVkPGRvdWJsZT47CitleHRl
cm4gdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbENvbnN0cmFpbmVkPGludD47CisKIGV4dGVybiB0
ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9uYWw8ZG91YmxlPjsKIGV4dGVybiB0ZW1wbGF0
ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9uYWw8aW50PjsKIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBG
aWVsZFRyaWFsT3B0aW9uYWw8Ym9vbD47CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9w
YXJzZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXJfdW5pdHRlc3QuY2MK
aW5kZXggZGU5NzdlYzhiYTgwOTcyMjAzMDQwOGQ2NTk3ZjU3YmFjMTRlY2JkYy4uMGQwNjdmNWE0
OTEzOGE3NWNkOGNkZTE4NzI0ZTY1NzJiYzlhZDk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRf
dHJpYWxfcGFyc2VyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlcl91
bml0dGVzdC5jYwpAQCAtOTksNiArOTksMTkgQEAgVEVTVChGaWVsZFRyaWFsUGFyc2VyVGVzdCwg
SWdub3Jlc0ludmFsaWQpIHsKICAgRVhQRUNUX0VRKGV4cC5waW5nLkdldCgpLCBmYWxzZSk7CiAg
IEVYUEVDVF9FUShleHAuaGFzaC5HZXQoKSwgImE4MCIpOwogfQorVEVTVChGaWVsZFRyaWFsUGFy
c2VyVGVzdCwgSWdub3Jlc091dE9mUmFuZ2UpIHsKKyAgRmllbGRUcmlhbENvbnN0cmFpbmVkPGRv
dWJsZT4gbG93KCJsb3ciLCAxMCwgYWJzbDo6bnVsbG9wdCwgMTAwKTsKKyAgRmllbGRUcmlhbENv
bnN0cmFpbmVkPGRvdWJsZT4gaGlnaCgiaGlnaCIsIDEwLCA1LCBhYnNsOjpudWxsb3B0KTsKKyAg
UGFyc2VGaWVsZFRyaWFsKHsmbG93LCAmaGlnaH0sICJsb3c6MTAwMCxoaWdoOjAiKTsKKyAgRVhQ
RUNUX0VRKGxvdy5HZXQoKSwgMTApOworICBFWFBFQ1RfRVEoaGlnaC5HZXQoKSwgMTApOworICBQ
YXJzZUZpZWxkVHJpYWwoeyZsb3csICZoaWdofSwgImxvdzppbmYsaGlnaDpuYW4iKTsKKyAgRVhQ
RUNUX0VRKGxvdy5HZXQoKSwgMTApOworICBFWFBFQ1RfRVEoaGlnaC5HZXQoKSwgMTApOworICBQ
YXJzZUZpZWxkVHJpYWwoeyZsb3csICZoaWdofSwgImxvdzoyMCxoaWdoOjIwIik7CisgIEVYUEVD
VF9FUShsb3cuR2V0KCksIDIwKTsKKyAgRVhQRUNUX0VRKGhpZ2guR2V0KCksIDIwKTsKK30KIFRF
U1QoRmllbGRUcmlhbFBhcnNlclRlc3QsIFBhcnNlc09wdGlvbmFsUGFyYW1ldGVycykgewogICBG
aWVsZFRyaWFsT3B0aW9uYWw8aW50PiBtYXhfY291bnQoImMiLCBhYnNsOjpudWxsb3B0KTsKICAg
UGFyc2VGaWVsZFRyaWFsKHsmbWF4X2NvdW50fSwgIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmll
bGRfdHJpYWxfdW5pdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF91bml0cy5jYwppbmRleCBmNTM5
NzhiMjExNTNkNGZkNTAyNGUxYzk5NTY0ZDU3ZWJmOTFhZGY3Li41MzExYTNhOTQxYzc4MGI5ZTAz
NWMwZmIwYjM4NzgxYzQzN2JhMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF91bml0
cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF91bml0cy5jYwpAQCAtOSw2ICs5LDcgQEAKICAq
LwogI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzLmgiCiAK
KyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdHJpbmc+
CiAKQEAgLTg2LDYgKzg3LDEwIEBAIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8
RGF0YVJhdGU+OwogdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbFBhcmFtZXRlcjxEYXRhU2l6ZT47
CiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT47CiAKK3RlbXBs
YXRlIGNsYXNzIEZpZWxkVHJpYWxDb25zdHJhaW5lZDxEYXRhUmF0ZT47Cit0ZW1wbGF0ZSBjbGFz
cyBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8RGF0YVNpemU+OwordGVtcGxhdGUgY2xhc3MgRmllbGRU
cmlhbENvbnN0cmFpbmVkPFRpbWVEZWx0YT47CisKIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxP
cHRpb25hbDxEYXRhUmF0ZT47CiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9uYWw8RGF0
YVNpemU+OwogdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbE9wdGlvbmFsPFRpbWVEZWx0YT47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF91bml0cy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxf
dW5pdHMuaAppbmRleCA5MzJjNWNiNDUwMDFjZjA2ZTU4MmUxYjlkYzY2MGZiOTMxMjA4MGRmLi5h
Zjg4ZjRhNmMwMGRmMzUxMDZiOWM1Y2RhNDYzMzk3MDEyNTlhNmJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50
cy9maWVsZF90cmlhbF91bml0cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzLmgKQEAg
LTIxLDYgKzIxLDEwIEBAIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVy
PERhdGFSYXRlPjsKIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPERh
dGFTaXplPjsKIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVE
ZWx0YT47CiAKK2V4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8RGF0
YVJhdGU+OworZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxDb25zdHJhaW5lZDxEYXRh
U2l6ZT47CitleHRlcm4gdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbENvbnN0cmFpbmVkPFRpbWVE
ZWx0YT47CisKIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9uYWw8RGF0YVJh
dGU+OwogZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxPcHRpb25hbDxEYXRhU2l6ZT47
CiBleHRlcm4gdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbE9wdGlvbmFsPFRpbWVEZWx0YT47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF91bml0c191bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2Zp
ZWxkX3RyaWFsX3VuaXRzX3VuaXR0ZXN0LmNjCmluZGV4IDgwNzcxZDkyNmFiZDM3ZTdjODBmZGU5
MTgwNGVmZjM1NWQyNzQwZTguLjU3MDIyYzJmMjNmNDZlMzBiODIzMTMxNzJiODM5MmUzYmEzYTIy
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVy
aW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzX3VuaXR0ZXN0LmNjCkBAIC01OCw1ICs1OCwyNSBAQCBU
RVNUKEZpZWxkVHJpYWxQYXJzZXJVbml0c1Rlc3QsIFBhcnNlc090aGVyVW5pdFBhcmFtZXRlcnMp
IHsKICAgRVhQRUNUX0VRKCpleHAubWF4X2J1ZmZlci5HZXRPcHRpb25hbCgpLCBEYXRhU2l6ZTo6
Ynl0ZXMoOCkpOwogICBFWFBFQ1RfRVEoZXhwLnBlcmlvZC5HZXQoKSwgVGltZURlbHRhOjptcygz
MDApKTsKIH0KK1RFU1QoRmllbGRUcmlhbFBhcnNlclVuaXRzVGVzdCwgSWdub3Jlc091dE9mUmFu
Z2UpIHsKKyAgRmllbGRUcmlhbENvbnN0cmFpbmVkPERhdGFSYXRlPiByYXRlKCJyIiwgRGF0YVJh
dGU6OmticHMoMzApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0
YVJhdGU6OmticHMoMTApLCBEYXRhUmF0ZTo6a2JwcygxMDApKTsKKyAgRmllbGRUcmlhbENvbnN0
cmFpbmVkPFRpbWVEZWx0YT4gZGVsdGEoImQiLCBUaW1lRGVsdGE6Om1zKDMwKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZURlbHRhOjptcygxMCksIFRpbWVE
ZWx0YTo6bXMoMTAwKSk7CisgIEZpZWxkVHJpYWxDb25zdHJhaW5lZDxEYXRhU2l6ZT4gc2l6ZSgK
KyAgICAgICJzIiwgRGF0YVNpemU6OmJ5dGVzKDMwKSwgRGF0YVNpemU6OmJ5dGVzKDEwKSwgRGF0
YVNpemU6OmJ5dGVzKDEwMCkpOworICBQYXJzZUZpZWxkVHJpYWwoeyZyYXRlLCAmZGVsdGEsICZz
aXplfSwgInI6MCxkOjAsczowIik7CisgIEVYUEVDVF9FUShyYXRlLT5rYnBzKCksIDMwKTsKKyAg
RVhQRUNUX0VRKGRlbHRhLT5tcygpLCAzMCk7CisgIEVYUEVDVF9FUShzaXplLT5ieXRlcygpLCAz
MCk7CisgIFBhcnNlRmllbGRUcmlhbCh7JnJhdGUsICZkZWx0YSwgJnNpemV9LCAicjozMDAsZDoz
MDAsczozMDAiKTsKKyAgRVhQRUNUX0VRKHJhdGUtPmticHMoKSwgMzApOworICBFWFBFQ1RfRVEo
ZGVsdGEtPm1zKCksIDMwKTsKKyAgRVhQRUNUX0VRKHNpemUtPmJ5dGVzKCksIDMwKTsKKyAgUGFy
c2VGaWVsZFRyaWFsKHsmcmF0ZSwgJmRlbHRhLCAmc2l6ZX0sICJyOjUwLGQ6NTAsczo1MCIpOwor
ICBFWFBFQ1RfRVEocmF0ZS0+a2JwcygpLCA1MCk7CisgIEVYUEVDVF9FUShkZWx0YS0+bXMoKSwg
NTApOworICBFWFBFQ1RfRVEoc2l6ZS0+Ynl0ZXMoKSwgNTApOworfQogCiB9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVu
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2V4cGVyaW1lbnRzL2ppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmIzZTkyMzAxOWIzY2ZkODJkYzY0OGIzZmZhODkzNGRmNDA2ZmRiZjUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9l
eHBlcmltZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYwpAQCAtMCwwICsxLDQ2
IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1l
bnRzL2ppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmgiCisKKyNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgor
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCisKK25hbWVz
cGFjZSB3ZWJydGMgeworCitjb25zdCBjaGFyIEppdHRlclVwcGVyQm91bmRFeHBlcmltZW50Ojpr
Sml0dGVyVXBwZXJCb3VuZEV4cGVyaW1lbnROYW1lW10gPQorICAgICJXZWJSVEMtSml0dGVyVXBw
ZXJCb3VuZCI7CisKK2Fic2w6Om9wdGlvbmFsPGRvdWJsZT4gSml0dGVyVXBwZXJCb3VuZEV4cGVy
aW1lbnQ6OkdldFVwcGVyQm91bmRTaWdtYXMoKSB7CisgIGlmICghZmllbGRfdHJpYWw6OklzRW5h
YmxlZChrSml0dGVyVXBwZXJCb3VuZEV4cGVyaW1lbnROYW1lKSkgeworICAgIHJldHVybiBhYnNs
OjpudWxsb3B0OworICB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGdyb3VwID0KKyAgICAgIHdlYnJ0
Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZShrSml0dGVyVXBwZXJCb3VuZEV4cGVyaW1lbnRO
YW1lKTsKKworICBkb3VibGUgdXBwZXJfYm91bmRfc2lnbWFzOworICBpZiAoc3NjYW5mKGdyb3Vw
LmNfc3RyKCksICJFbmFibGVkLSVsZiIsICZ1cHBlcl9ib3VuZF9zaWdtYXMpICE9IDEpIHsKKyAg
ICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJJbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJzIHBy
b3ZpZGVkLiI7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKworICBpZiAodXBwZXJf
Ym91bmRfc2lnbWFzIDwgMCkgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkludmFsaWQg
aml0dGVyIHVwcGVyIGJvdW5kIHNpZ21hcywgbXVzdCBiZSA+PSAwLjA6ICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIDw8IHVwcGVyX2JvdW5kX3NpZ21hczsKKyAgICByZXR1cm4gYWJzbDo6bnVs
bG9wdDsKKyAgfQorCisgIHJldHVybiB1cHBlcl9ib3VuZF9zaWdtYXM7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ppdHRlcl91cHBlcl9ib3VuZF9leHBl
cmltZW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9leHBlcmltZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI2MmNkNzllZmE2Y2NjZmQ3YWMxYTkwNDRmZmQ5NzAwZTc4ZjIwYjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9leHBlcmltZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5oCkBAIC0wLDAgKzEs
MzEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19CQVNFX0VYUEVSSU1F
TlRTX0pJVFRFUl9VUFBFUl9CT1VORF9FWFBFUklNRU5UX0hfCisjZGVmaW5lIFJUQ19CQVNFX0VY
UEVSSU1FTlRTX0pJVFRFUl9VUFBFUl9CT1VORF9FWFBFUklNRU5UX0hfCisKKyNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBKaXR0
ZXJVcHBlckJvdW5kRXhwZXJpbWVudCB7CisgcHVibGljOgorICAvLyBSZXR1cm5zIG51bGxvcHQg
aWYgZXhwZXJpbWVudCBpcyBub3Qgb24sIG90aGVyd2lzZSByZXR1cm5zIHRoZSBjb25maWd1cmVk
CisgIC8vIHVwcGVyIGJvdW5kIGZvciBmcmFtZSBkZWxheSBkZWx0YSB1c2VkIGluIGppdHRlciBl
c3RpbWF0aW9uLCBleHByZXNzZWQgYXMKKyAgLy8gbnVtYmVyIG9mIHN0YW5kYXJkIGRldmlhdGlv
bnMgb2YgdGhlIGN1cnJlbnQgZGV2aWF0aW9uIGZyb20gdGhlIGV4cGVjdGVkCisgIC8vIGRlbGF5
LgorICBzdGF0aWMgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPiBHZXRVcHBlckJvdW5kU2lnbWFzKCk7
CisKKyAgc3RhdGljIGNvbnN0IGNoYXIga0ppdHRlclVwcGVyQm91bmRFeHBlcmltZW50TmFtZVtd
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFJUQ19CQVNFX0VY
UEVSSU1FTlRTX0pJVFRFUl9VUFBFUl9CT1VORF9FWFBFUklNRU5UX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmlt
ZW50cy9ub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1h
bGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljZTVmNTdmOGYw
NjUyZDI4M2YyZWU3ZjM3ZDMwMTI2NzBmZDBkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9u
b3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5jYwpAQCAtMCwwICsxLDQ3IEBACisv
KgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFs
aXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuaCIKKworI2luY2x1ZGUgPHN0cmluZz4KKwor
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9maWVsZF90cmlhbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7
Citjb25zdGV4cHIgY2hhciBrRmllbGRUcmlhbFtdID0gIldlYlJUQy1Ob3JtYWxpemVTaW11bGNh
c3RSZXNvbHV0aW9uIjsKK2NvbnN0ZXhwciBpbnQga01pblNldHRpbmcgPSAwOworY29uc3RleHBy
IGludCBrTWF4U2V0dGluZyA9IDU7Cit9ICAvLyBuYW1lc3BhY2UKKworYWJzbDo6b3B0aW9uYWw8
aW50PiBOb3JtYWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVudDo6R2V0QmFzZTJFeHBvbmVudCgp
IHsKKyAgaWYgKCF3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa0ZpZWxkVHJpYWwpKQor
ICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGdyb3VwID0g
d2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtGaWVsZFRyaWFsKTsKKyAgaWYgKGdy
b3VwLmVtcHR5KCkpCisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisKKyAgaW50IGV4cG9uZW50
OworICBpZiAoc3NjYW5mKGdyb3VwLmNfc3RyKCksICJFbmFibGVkLSVkIiwgJmV4cG9uZW50KSAh
PSAxKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiTm8gcGFyYW1ldGVyIHByb3ZpZGVk
LiI7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKworICBpZiAoZXhwb25lbnQgPCBr
TWluU2V0dGluZyB8fCBleHBvbmVudCA+IGtNYXhTZXR0aW5nKSB7CisgICAgUlRDX0xPRyhMU19X
QVJOSU5HKSA8PCAiVW5zdXBwb3J0ZWQgZXhwIHZhbHVlIHByb3ZpZGVkLCB2YWx1ZSBpZ25vcmVk
LiI7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKworICByZXR1cm4gYWJzbDo6b3B0
aW9uYWw8aW50PihleHBvbmVudCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50
cy9ub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMzU4
MjAyYjI3MmFkYTQxNGNjNjg3NGIzNjBhMjVjN2ZiNTY3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmlt
ZW50cy9ub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oCkBAIC0wLDAgKzEsMjUg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
CisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfRVhQRVJJTUVOVFNfTk9S
TUFMSVpFX1NJTVVMQ0FTVF9TSVpFX0VYUEVSSU1FTlRfSF8KKyNkZWZpbmUgUlRDX0JBU0VfRVhQ
RVJJTUVOVFNfTk9STUFMSVpFX1NJTVVMQ0FTVF9TSVpFX0VYUEVSSU1FTlRfSF8KKworI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBO
b3JtYWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVudCB7CisgcHVibGljOgorICAvLyBSZXR1cm5z
IHRoZSBiYXNlIHR3byBleHBvbmVudCBmcm9tIGZpZWxkIHRyaWFsLgorICBzdGF0aWMgYWJzbDo6
b3B0aW9uYWw8aW50PiBHZXRCYXNlMkV4cG9uZW50KCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfRVhQRVJJTUVOVFNfTk9STUFMSVpFX1NJTVVM
Q0FTVF9TSVpFX0VYUEVSSU1FTlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9zaW11
bGNhc3Rfc2l6ZV9leHBlcmltZW50X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVs
Y2FzdF9zaXplX2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM3YjgwOTE3ZmUz
YzYwZWIxZTY2OTg0NDhjNDRmM2U0MGU4ZGZjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL25v
cm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50X3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50
cy9ub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oIgorCisjaW5jbHVkZSAicnRj
X2Jhc2UvZ3VuaXQuaCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworCitURVNUKE5vcm1hbGl6ZVNpbXVsY2FzdFNpemVFeHBlcmltZW50VGVzdCwg
R2V0RXhwb25lbnQpIHsKKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90
cmlhbHMoCisgICAgICAiV2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2FzdFJlc29sdXRpb24vRW5hYmxl
ZC0yLyIpOworICBFWFBFQ1RfRVEoMiwgTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnQ6
OkdldEJhc2UyRXhwb25lbnQoKSk7Cit9CisKK1RFU1QoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4
cGVyaW1lbnRUZXN0LCBHZXRFeHBvbmVudFdpdGhUd29QYXJhbWV0ZXJzKSB7CisgIHdlYnJ0Yzo6
dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1Ob3Jt
YWxpemVTaW11bGNhc3RSZXNvbHV0aW9uL0VuYWJsZWQtMy00LyIpOworICBFWFBFQ1RfRVEoMywg
Tm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnQ6OkdldEJhc2UyRXhwb25lbnQoKSk7Cit9
CisKK1RFU1QoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnRUZXN0LCBHZXRFeHBvbmVu
dEZhaWxzSWZOb3RFbmFibGVkKSB7CisgIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMg
ZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1Ob3JtYWxpemVTaW11bGNhc3RSZXNvbHV0aW9u
L0Rpc2FibGVkLyIpOworICBFWFBFQ1RfRkFMU0UoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVy
aW1lbnQ6OkdldEJhc2UyRXhwb25lbnQoKSk7Cit9CisKK1RFU1QoTm9ybWFsaXplU2ltdWxjYXN0
U2l6ZUV4cGVyaW1lbnRUZXN0LAorICAgICBHZXRFeHBvbmVudEZhaWxzRm9ySW52YWxpZEZpZWxk
VHJpYWwpIHsKKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMo
CisgICAgICAiV2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2FzdFJlc29sdXRpb24vRW5hYmxlZC1pbnZh
bGlkLyIpOworICBFWFBFQ1RfRkFMU0UoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnQ6
OkdldEJhc2UyRXhwb25lbnQoKSk7Cit9CisKK1RFU1QoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4
cGVyaW1lbnRUZXN0LAorICAgICBHZXRFeHBvbmVudEZhaWxzRm9yTmVnYXRpdmVPdXRPZkJvdW5k
VmFsdWUpIHsKKyAgLy8gU3VwcG9ydGVkIHJhbmdlOiBbMCwgNV0uCisgIHdlYnJ0Yzo6dGVzdDo6
U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1Ob3JtYWxpemVT
aW11bGNhc3RSZXNvbHV0aW9uL0VuYWJsZWQtLTEvIik7CisgIEVYUEVDVF9GQUxTRShOb3JtYWxp
emVTaW11bGNhc3RTaXplRXhwZXJpbWVudDo6R2V0QmFzZTJFeHBvbmVudCgpKTsKK30KKworVEVT
VChOb3JtYWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVudFRlc3QsCisgICAgIEdldEV4cG9uZW50
RmFpbHNGb3JQb3NpdGl2ZU91dE9mQm91bmRWYWx1ZSkgeworICAvLyBTdXBwb3J0ZWQgcmFuZ2U6
IFswLCA1XS4KKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMo
CisgICAgICAiV2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2FzdFJlc29sdXRpb24vRW5hYmxlZC02LyIp
OworICBFWFBFQ1RfRkFMU0UoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnQ6OkdldEJh
c2UyRXhwb25lbnQoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVy
aW1lbnRzL3F1YWxpdHlfc2NhbGluZ19leHBlcmltZW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9xdWFsaXR5X3NjYWxp
bmdfZXhwZXJpbWVudC5oCmluZGV4IDgwYTI1ZWYxZWVlNThiMTkxYWRjMGYxYmI1YTAxNTU1OWIx
ZTIzNTEuLjE0ODMzYzAwYjEyNzk3OGNiNmI2NWU5MjRjOGMwNDQ5YTlkMzIzZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4
cGVyaW1lbnRzL3F1YWxpdHlfc2NhbGluZ19leHBlcmltZW50LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvcXVhbGl0
eV9zY2FsaW5nX2V4cGVyaW1lbnQuaApAQCAtMTIsNyArMTIsNiBAQAogCiAjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5j
b2Rlci5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1
ZGUpCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgUXVhbGl0eVNjYWxpbmdFeHBlcmltZW50
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2Zha2VfbWRuc19yZXNwb25kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zha2VfbWRuc19yZXNwb25kZXIuaAppbmRleCAz
MmQ2OWJhNjgzNmE3ZjlmYzM5ZTY5NzZmNmU2NmUyNmEzOTg3NGQxLi4xZTYwYTVkOWRlMmQxY2Nj
NGZkZjE1NGJmNmIzMDU5OGQ1YjY1YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlX21kbnNfcmVzcG9uZGVyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFr
ZV9tZG5zX3Jlc3BvbmRlci5oCkBAIC0yMSwxMCArMjEsMTAgQEAKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKLWNsYXNzIEZha2VNRG5zUmVzcG9uZGVyIDogcHVibGljIE1EbnNSZXNwb25kZXJJbnRl
cmZhY2UgeworY2xhc3MgRmFrZU1kbnNSZXNwb25kZXIgOiBwdWJsaWMgTWRuc1Jlc3BvbmRlcklu
dGVyZmFjZSB7CiAgcHVibGljOgotICBGYWtlTURuc1Jlc3BvbmRlcigpID0gZGVmYXVsdDsKLSAg
fkZha2VNRG5zUmVzcG9uZGVyKCkgPSBkZWZhdWx0OworICBleHBsaWNpdCBGYWtlTWRuc1Jlc3Bv
bmRlcihydGM6OlRocmVhZCogdGhyZWFkKSA6IHRocmVhZF8odGhyZWFkKSB7fQorICB+RmFrZU1k
bnNSZXNwb25kZXIoKSA9IGRlZmF1bHQ7CiAKICAgdm9pZCBDcmVhdGVOYW1lRm9yQWRkcmVzcyhj
b25zdCBydGM6OklQQWRkcmVzcyYgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
YW1lQ3JlYXRlZENhbGxiYWNrIGNhbGxiYWNrKSBvdmVycmlkZSB7CkBAIC0zNSw3ICszNSw5IEBA
IGNsYXNzIEZha2VNRG5zUmVzcG9uZGVyIDogcHVibGljIE1EbnNSZXNwb25kZXJJbnRlcmZhY2Ug
ewogICAgICAgbmFtZSA9IHN0ZDo6dG9fc3RyaW5nKG5leHRfYXZhaWxhYmxlX2lkXysrKSArICIu
bG9jYWwiOwogICAgICAgYWRkcl9uYW1lX21hcF9bYWRkcl0gPSBuYW1lOwogICAgIH0KLSAgICBj
YWxsYmFjayhhZGRyLCBuYW1lKTsKKyAgICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lkPigKKyAg
ICAgICAgUlRDX0ZST01fSEVSRSwgdGhyZWFkXywKKyAgICAgICAgW2NhbGxiYWNrLCBhZGRyLCBu
YW1lXSgpIHsgY2FsbGJhY2soYWRkciwgbmFtZSk7IH0pOwogICB9CiAgIHZvaWQgUmVtb3ZlTmFt
ZUZvckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmFtZVJlbW92ZWRDYWxsYmFjayBjYWxsYmFjaykgb3ZlcnJpZGUgewpAQCAt
NDMsMTIgKzQ1LDE2IEBAIGNsYXNzIEZha2VNRG5zUmVzcG9uZGVyIDogcHVibGljIE1EbnNSZXNw
b25kZXJJbnRlcmZhY2UgewogICAgIGlmIChpdCAhPSBhZGRyX25hbWVfbWFwXy5lbmQoKSkgewog
ICAgICAgYWRkcl9uYW1lX21hcF8uZXJhc2UoaXQpOwogICAgIH0KLSAgICBjYWxsYmFjayhpdCAh
PSBhZGRyX25hbWVfbWFwXy5lbmQoKSk7CisgICAgYm9vbCByZXN1bHQgPSBpdCAhPSBhZGRyX25h
bWVfbWFwXy5lbmQoKTsKKyAgICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lkPihSVENfRlJPTV9I
RVJFLCB0aHJlYWRfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjaywg
cmVzdWx0XSgpIHsgY2FsbGJhY2socmVzdWx0KTsgfSk7CiAgIH0KIAogIHByaXZhdGU6CiAgIHVp
bnQzMl90IG5leHRfYXZhaWxhYmxlX2lkXyA9IDA7CiAgIHN0ZDo6bWFwPHJ0Yzo6SVBBZGRyZXNz
LCBzdGQ6OnN0cmluZz4gYWRkcl9uYW1lX21hcF87CisgIHJ0Yzo6VGhyZWFkKiB0aHJlYWRfOwor
ICBydGM6OkFzeW5jSW52b2tlciBpbnZva2VyXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2Zha2VuZXR3b3JrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlbmV0d29yay5oCmluZGV4IGQ1NDI2YTNlMmM5MDk1NTQ1
NmRmMTdjMmQzZTY2YjI1YzE2ZWIwNzcuLmNiODkwZWM1ODNkYzg3NmJlNmY0ZDQ0ZDJlYmRmMDgw
M2MwNWFiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2Zha2VuZXR3b3JrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFrZW5ldHdvcmsuaApAQCAtODIsMTYgKzgy
LDE3IEBAIGNsYXNzIEZha2VOZXR3b3JrTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrTWFuYWdlckJh
c2UsIHB1YmxpYyBNZXNzYWdlSGFuZGxlciB7CiAgIC8vIE1lc3NhZ2VIYW5kbGVyIGludGVyZmFj
ZS4KICAgdmlydHVhbCB2b2lkIE9uTWVzc2FnZShNZXNzYWdlKiBtc2cpIHsgRG9VcGRhdGVOZXR3
b3JrcygpOyB9CiAKLSAgdm9pZCBDcmVhdGVNRG5zUmVzcG9uZGVyKCkgeworICB2b2lkIENyZWF0
ZU1kbnNSZXNwb25kZXIoKSB7CiAgICAgaWYgKG1kbnNfcmVzcG9uZGVyXyA9PSBudWxscHRyKSB7
Ci0gICAgICBtZG5zX3Jlc3BvbmRlcl8gPSBhYnNsOjptYWtlX3VuaXF1ZTx3ZWJydGM6OkZha2VN
RG5zUmVzcG9uZGVyPigpOworICAgICAgbWRuc19yZXNwb25kZXJfID0KKyAgICAgICAgICBhYnNs
OjptYWtlX3VuaXF1ZTx3ZWJydGM6OkZha2VNZG5zUmVzcG9uZGVyPihydGM6OlRocmVhZDo6Q3Vy
cmVudCgpKTsKICAgICB9CiAgIH0KIAogICB1c2luZyBOZXR3b3JrTWFuYWdlckJhc2U6OnNldF9l
bnVtZXJhdGlvbl9wZXJtaXNzaW9uOwogICB1c2luZyBOZXR3b3JrTWFuYWdlckJhc2U6OnNldF9k
ZWZhdWx0X2xvY2FsX2FkZHJlc3NlczsKIAotICB3ZWJydGM6Ok1EbnNSZXNwb25kZXJJbnRlcmZh
Y2UqIEdldE1EbnNSZXNwb25kZXIoKSBjb25zdCBvdmVycmlkZSB7CisgIHdlYnJ0Yzo6TWRuc1Jl
c3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IG92ZXJyaWRlIHsKICAg
ICByZXR1cm4gbWRuc19yZXNwb25kZXJfLmdldCgpOwogICB9CiAKQEAgLTEzMSw3ICsxMzIsNyBA
QCBjbGFzcyBGYWtlTmV0d29ya01hbmFnZXIgOiBwdWJsaWMgTmV0d29ya01hbmFnZXJCYXNlLCBw
dWJsaWMgTWVzc2FnZUhhbmRsZXIgewogICBJUEFkZHJlc3MgZGVmYXVsdF9sb2NhbF9pcHY0X2Fk
ZHJlc3NfOwogICBJUEFkZHJlc3MgZGVmYXVsdF9sb2NhbF9pcHY2X2FkZHJlc3NfOwogCi0gIHN0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkZha2VNRG5zUmVzcG9uZGVyPiBtZG5zX3Jlc3BvbmRlcl87
CisgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkZha2VNZG5zUmVzcG9uZGVyPiBtZG5zX3Jlc3Bv
bmRlcl87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlc3NsaWRlbnRpdHku
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9m
YWtlc3NsaWRlbnRpdHkuY2MKaW5kZXggODBhM2U3ODg4Nzg0NDFlZDFkY2E2ODk3ODYzYzNkYjli
MTIxMzYyYi4uNjJhYzlkZDAyMDdkODU2YTAxYjUwZTg3YTYyYWMxYTMwOWM5Y2Q4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
ZmFrZXNzbGlkZW50aXR5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2Zha2Vzc2xpZGVudGl0eS5jYwpAQCAtMjksOCArMjksOCBAQCBG
YWtlU1NMQ2VydGlmaWNhdGU6OkZha2VTU0xDZXJ0aWZpY2F0ZShjb25zdCBGYWtlU1NMQ2VydGlm
aWNhdGUmKSA9IGRlZmF1bHQ7CiAKIEZha2VTU0xDZXJ0aWZpY2F0ZTo6fkZha2VTU0xDZXJ0aWZp
Y2F0ZSgpID0gZGVmYXVsdDsKIAotRmFrZVNTTENlcnRpZmljYXRlKiBGYWtlU1NMQ2VydGlmaWNh
dGU6OkdldFJlZmVyZW5jZSgpIGNvbnN0IHsKLSAgcmV0dXJuIG5ldyBGYWtlU1NMQ2VydGlmaWNh
dGUoKnRoaXMpOworc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiBGYWtlU1NMQ2VydGlm
aWNhdGU6OkNsb25lKCkgY29uc3QgeworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8RmFrZVNT
TENlcnRpZmljYXRlPigqdGhpcyk7CiB9CiAKIHN0ZDo6c3RyaW5nIEZha2VTU0xDZXJ0aWZpY2F0
ZTo6VG9QRU1TdHJpbmcoKSBjb25zdCB7CkBAIC04MywxMCArODMsMTAgQEAgRmFrZVNTTElkZW50
aXR5OjpGYWtlU1NMSWRlbnRpdHkoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBwZW1f
c3RyaW5ncykgewogfQogCiBGYWtlU1NMSWRlbnRpdHk6OkZha2VTU0xJZGVudGl0eShjb25zdCBG
YWtlU1NMQ2VydGlmaWNhdGUmIGNlcnQpCi0gICAgOiBjZXJ0X2NoYWluXyhhYnNsOjptYWtlX3Vu
aXF1ZTxTU0xDZXJ0Q2hhaW4+KCZjZXJ0KSkge30KKyAgICA6IGNlcnRfY2hhaW5fKGFic2w6Om1h
a2VfdW5pcXVlPFNTTENlcnRDaGFpbj4oY2VydC5DbG9uZSgpKSkge30KIAogRmFrZVNTTElkZW50
aXR5OjpGYWtlU1NMSWRlbnRpdHkoY29uc3QgRmFrZVNTTElkZW50aXR5JiBvKQotICAgIDogY2Vy
dF9jaGFpbl8oby5jZXJ0X2NoYWluXy0+VW5pcXVlQ29weSgpKSB7fQorICAgIDogY2VydF9jaGFp
bl8oby5jZXJ0X2NoYWluXy0+Q2xvbmUoKSkge30KIAogRmFrZVNTTElkZW50aXR5Ojp+RmFrZVNT
TElkZW50aXR5KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlc3NsaWRlbnRpdHkuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zha2Vzc2xpZGVu
dGl0eS5oCmluZGV4IDQ0OTRhNTI0ZWZhYjkwNzkxNjQ2M2ZmZmIwYzcxNzg2MzY5NzRkMWQuLmIx
OWNiZmJiNDkyY2ExNmU2NmVjMTA3NWI2OWZhNWY5NTU4NGVhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zha2Vzc2xpZGVu
dGl0eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2Zha2Vzc2xpZGVudGl0eS5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmlj
YXRlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKIAogbmFtZXNwYWNlIHJ0
YyB7CkBAIC0yOCw3ICsyOSw3IEBAIGNsYXNzIEZha2VTU0xDZXJ0aWZpY2F0ZSA6IHB1YmxpYyBT
U0xDZXJ0aWZpY2F0ZSB7CiAgIH5GYWtlU1NMQ2VydGlmaWNhdGUoKSBvdmVycmlkZTsKIAogICAv
LyBTU0xDZXJ0aWZpY2F0ZSBpbXBsZW1lbnRhdGlvbi4KLSAgRmFrZVNTTENlcnRpZmljYXRlKiBH
ZXRSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRp
ZmljYXRlPiBDbG9uZSgpIGNvbnN0IG92ZXJyaWRlOwogICBzdGQ6OnN0cmluZyBUb1BFTVN0cmlu
ZygpIGNvbnN0IG92ZXJyaWRlOwogICB2b2lkIFRvREVSKEJ1ZmZlciogZGVyX2J1ZmZlcikgY29u
c3Qgb3ZlcnJpZGU7CiAgIGludDY0X3QgQ2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvZmlsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGUuY2MKaW5kZXggNjIwMjQxMTlmY2MxN2E0OWM1YTdk
MzMxZGE0MmVmN2VkMjJmNjUwNS4uYTc5MzUwMDY0NmFmNjIzZDYwMzg5NmIyMzRhMTBkMzE2MmE2
YjYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvZmlsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlLmNjCkBAIC0xMCw4ICsxMCw2IEBACiAKICNpbmNsdWRl
ICJydGNfYmFzZS9maWxlLmgiCiAKLSNpbmNsdWRlIDx1dGlsaXR5PgotCiBuYW1lc3BhY2UgcnRj
IHsKIAogRmlsZTo6RmlsZShQbGF0Zm9ybUZpbGUgZmlsZSkgOiBmaWxlXyhmaWxlKSB7fQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvZmlsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZmlsZS5oCmluZGV4IDc1ZmQ5M2QxMzEwMWUyNWZjYmRjNzIyMWRjZjliOWE1NjhkM2Fm
MzQuLmJjMDk3NGFlMmEwYmJmNWYxMDg0MGVkNTVhYTFjOWEyOWRkOTZkZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGUu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9maWxlLmgKQEAgLTExLDggKzExLDggQEAKICNpZm5kZWYgUlRDX0JBU0VfRklMRV9IXwogI2Rl
ZmluZSBSVENfQkFTRV9GSUxFX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxz
dGRpbnQuaD4KLQogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0
cnVjdG9ybWFnaWMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGVfcG9zaXguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlX3Bvc2l4LmNjCmluZGV4IGIwZmVj
OWY5ZmNlYTAwMTRjYzc2ZGQzMGYwNzcwNWY4YTQyYTE3OWYuLjQ5MjAxOTI4MGM1MzVhZjYxMzI3
YzY1MmU0OTE0ZTczZmE5NzFkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGVfcG9zaXguY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZV9wb3NpeC5jYwpA
QCAtOCwxNyArOCwxNiBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKLSNpbmNsdWRlICJydGNfYmFzZS9maWxl
LmgiCi0KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8
c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4K
KyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KLQogI2luY2x1ZGUgPGxp
bWl0cz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L2ZpbGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmgiCiAKIG5hbWVzcGFj
ZSBydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0uY2MK
aW5kZXggYzlhNjYzYWFmZmY4NjlmMzcwNmYxZmRkZGUzODUwMmI0ZDg0MDU1OS4uYjFkYzVmZjk5
ODE3ODUxYzFjOTUyMWI0ZTA4N2IwMmFiZTUwOTM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFt
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2ZpbGVyb3RhdGluZ3N0cmVhbS5jYwpAQCAtMTMsMTcgKzEzLDE1OSBAQAogI2luY2x1ZGUg
PGFsZ29yaXRobT4KICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8c3RyaW5nPgotCisjaW5j
bHVkZSA8dXRpbGl0eT4KKworI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKKyNpbmNsdWRlIDx3aW5k
b3dzLmg+CisjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKKyNlbHNlCisjaW5jbHVk
ZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4K
KyNlbmRpZiAgLy8gV0VCUlRDX1dJTgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZmlsZXV0
aWxzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcGF0aHV0aWxzLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKIAogLy8gTm90ZTogV2UgdXNlIGZwcmludGYgZm9yIGxvZ2dpbmcgaW4gdGhlIHdyaXRlIHBh
dGhzIG9mIHRoaXMgc3RyZWFtIHRvIGF2b2lkCiAvLyBpbmZpbml0ZSBsb29wcyB3aGVuIGxvZ2dp
bmcuCiAKIG5hbWVzcGFjZSBydGMgewogCituYW1lc3BhY2UgeworCitzdGQ6OnN0cmluZyBBZGRU
cmFpbGluZ1BhdGhEZWxpbWl0ZXJJZk5lZWRlZChzdGQ6OnN0cmluZyBkaXJlY3RvcnkpOworCisv
LyB8ZGlyfCBtdXN0IGhhdmUgYSB0cmFpbGluZyBkZWxpbWl0ZXIuIHxwcmVmaXh8IG11c3Qgbm90
IGluY2x1ZGUgd2lsZCBjYXJkCisvLyBjaGFyYWN0ZXJzLgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+IEdldEZpbGVzV2l0aFByZWZpeChjb25zdCBzdGQ6OnN0cmluZyYgZGlyZWN0b3J5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcHJlZml4KTsKK2Jvb2wgRGVsZXRlRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSk7Citi
b29sIE1vdmVGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvbGRfZmlsZSwgY29uc3Qgc3RkOjpzdHJp
bmcmIG5ld19maWxlKTsKK2Jvb2wgSXNGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKTsKK2Jv
b2wgSXNGb2xkZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpOworYWJzbDo6b3B0aW9uYWw8c2l6
ZV90PiBHZXRGaWxlU2l6ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSk7CisKKyNpZiBkZWZpbmVk
KFdFQlJUQ19XSU4pCisKK3N0ZDo6c3RyaW5nIEFkZFRyYWlsaW5nUGF0aERlbGltaXRlcklmTmVl
ZGVkKHN0ZDo6c3RyaW5nIGRpcmVjdG9yeSkgeworICBpZiAoYWJzbDo6RW5kc1dpdGgoZGlyZWN0
b3J5LCAiXFwiKSkgeworICAgIHJldHVybiBkaXJlY3Rvcnk7CisgIH0KKyAgcmV0dXJuIGRpcmVj
dG9yeSArICJcXCI7Cit9CisKK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRGaWxlc1dpdGhQ
cmVmaXgoY29uc3Qgc3RkOjpzdHJpbmcmIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHByZWZpeCkgeworICBS
VENfRENIRUNLKGFic2w6OkVuZHNXaXRoKGRpcmVjdG9yeSwgIlxcIikpOworICBXSU4zMl9GSU5E
X0RBVEEgZGF0YTsKKyAgSEFORExFIGhhbmRsZTsKKyAgaGFuZGxlID0gOjpGaW5kRmlyc3RGaWxl
KFRvVXRmMTYoZGlyZWN0b3J5ICsgcHJlZml4ICsgJyonKS5jX3N0cigpLCAmZGF0YSk7CisgIGlm
IChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgcmV0dXJuIHt9OworCisgIHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBmaWxlX2xpc3Q7CisgIGRvIHsKKyAgICBmaWxlX2xpc3Qu
ZW1wbGFjZV9iYWNrKGRpcmVjdG9yeSArIFRvVXRmOChkYXRhLmNGaWxlTmFtZSkpOworICB9IHdo
aWxlICg6OkZpbmROZXh0RmlsZShoYW5kbGUsICZkYXRhKSA9PSBUUlVFKTsKKworICA6OkZpbmRD
bG9zZShoYW5kbGUpOworICByZXR1cm4gZmlsZV9saXN0OworfQorCitib29sIERlbGV0ZUZpbGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpIHsKKyAgcmV0dXJuIDo6RGVsZXRlRmlsZShUb1V0ZjE2
KGZpbGUpLmNfc3RyKCkpICE9IDA7Cit9CisKK2Jvb2wgTW92ZUZpbGUoY29uc3Qgc3RkOjpzdHJp
bmcmIG9sZF9maWxlLCBjb25zdCBzdGQ6OnN0cmluZyYgbmV3X2ZpbGUpIHsKKyAgcmV0dXJuIDo6
TW92ZUZpbGUoVG9VdGYxNihvbGRfZmlsZSkuY19zdHIoKSwgVG9VdGYxNihuZXdfZmlsZSkuY19z
dHIoKSkgIT0gMDsKK30KKworYm9vbCBJc0ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpIHsK
KyAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBkYXRhID0gezB9OworICBpZiAoMCA9PSA6Okdl
dEZpbGVBdHRyaWJ1dGVzRXgoVG9VdGYxNihmaWxlKS5jX3N0cigpLCBHZXRGaWxlRXhJbmZvU3Rh
bmRhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YSkpCisgICAgcmV0
dXJuIGZhbHNlOworICByZXR1cm4gKGRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklC
VVRFX0RJUkVDVE9SWSkgPT0gMDsKK30KKworYm9vbCBJc0ZvbGRlcihjb25zdCBzdGQ6OnN0cmlu
ZyYgZmlsZSkgeworICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIGRhdGEgPSB7MH07CisgIGlm
ICgwID09IDo6R2V0RmlsZUF0dHJpYnV0ZXNFeChUb1V0ZjE2KGZpbGUpLmNfc3RyKCksIEdldEZp
bGVFeEluZm9TdGFuZGFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRh
KSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiAoZGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYg
RklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSA9PQorICAgICAgICAgRklMRV9BVFRSSUJVVEVfRElS
RUNUT1JZOworfQorCithYnNsOjpvcHRpb25hbDxzaXplX3Q+IEdldEZpbGVTaXplKGNvbnN0IHN0
ZDo6c3RyaW5nJiBmaWxlKSB7CisgIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgZGF0YSA9IHsw
fTsKKyAgaWYgKDo6R2V0RmlsZUF0dHJpYnV0ZXNFeChUb1V0ZjE2KGZpbGUpLmNfc3RyKCksIEdl
dEZpbGVFeEluZm9TdGFuZGFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YSkg
PT0gMCkKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgcmV0dXJuIGRhdGEubkZpbGVTaXpl
TG93OworfQorCisjZWxzZSAgLy8gZGVmaW5lZChXRUJSVENfV0lOKQorCitzdGQ6OnN0cmluZyBB
ZGRUcmFpbGluZ1BhdGhEZWxpbWl0ZXJJZk5lZWRlZChzdGQ6OnN0cmluZyBkaXJlY3RvcnkpIHsK
KyAgaWYgKGFic2w6OkVuZHNXaXRoKGRpcmVjdG9yeSwgIi8iKSkgeworICAgIHJldHVybiBkaXJl
Y3Rvcnk7CisgIH0KKyAgcmV0dXJuIGRpcmVjdG9yeSArICIvIjsKK30KKworc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IEdldEZpbGVzV2l0aFByZWZpeChjb25zdCBzdGQ6OnN0cmluZyYgZGlyZWN0
b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgcHJlZml4KSB7CisgIFJUQ19EQ0hFQ0soYWJzbDo6RW5kc1dpdGgoZGlyZWN0
b3J5LCAiLyIpKTsKKyAgRElSKiBkaXIgPSA6Om9wZW5kaXIoZGlyZWN0b3J5LmNfc3RyKCkpOwor
ICBpZiAoZGlyID09IG51bGxwdHIpCisgICAgcmV0dXJuIHt9OworICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gZmlsZV9saXN0OworICBmb3IgKHN0cnVjdCBkaXJlbnQqIGRpcmVudCA9IDo6cmVh
ZGRpcihkaXIpOyBkaXJlbnQ7CisgICAgICAgZGlyZW50ID0gOjpyZWFkZGlyKGRpcikpIHsKKyAg
ICBzdGQ6OnN0cmluZyBuYW1lID0gZGlyZW50LT5kX25hbWU7CisgICAgaWYgKG5hbWUuY29tcGFy
ZSgwLCBwcmVmaXguc2l6ZSgpLCBwcmVmaXgpID09IDApIHsKKyAgICAgIGZpbGVfbGlzdC5lbXBs
YWNlX2JhY2soZGlyZWN0b3J5ICsgbmFtZSk7CisgICAgfQorICB9CisgIDo6Y2xvc2VkaXIoZGly
KTsKKyAgcmV0dXJuIGZpbGVfbGlzdDsKK30KKworYm9vbCBEZWxldGVGaWxlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBmaWxlKSB7CisgIHJldHVybiA6OnVubGluayhmaWxlLmNfc3RyKCkpID09IDA7Cit9
CisKK2Jvb2wgTW92ZUZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIG9sZF9maWxlLCBjb25zdCBzdGQ6
OnN0cmluZyYgbmV3X2ZpbGUpIHsKKyAgcmV0dXJuIDo6cmVuYW1lKG9sZF9maWxlLmNfc3RyKCks
IG5ld19maWxlLmNfc3RyKCkpID09IDA7Cit9CisKK2Jvb2wgSXNGaWxlKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBmaWxlKSB7CisgIHN0cnVjdCBzdGF0IHN0OworICBpbnQgcmVzID0gOjpzdGF0KGZpbGUu
Y19zdHIoKSwgJnN0KTsKKyAgLy8gVHJlYXQgc3ltbGlua3MsIG5hbWVkIHBpcGVzLCBldGMuIGFs
bCBhcyBmaWxlcy4KKyAgcmV0dXJuIHJlcyA9PSAwICYmICFTX0lTRElSKHN0LnN0X21vZGUpOwor
fQorCitib29sIElzRm9sZGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKSB7CisgIHN0cnVjdCBz
dGF0IHN0OworICBpbnQgcmVzID0gOjpzdGF0KGZpbGUuY19zdHIoKSwgJnN0KTsKKyAgcmV0dXJu
IHJlcyA9PSAwICYmIFNfSVNESVIoc3Quc3RfbW9kZSk7Cit9CisKK2Fic2w6Om9wdGlvbmFsPHNp
emVfdD4gR2V0RmlsZVNpemUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpIHsKKyAgc3RydWN0IHN0
YXQgc3Q7CisgIGlmICg6OnN0YXQoZmlsZS5jX3N0cigpLCAmc3QpICE9IDApCisgICAgcmV0dXJu
IGFic2w6Om51bGxvcHQ7CisgIHJldHVybiBzdC5zdF9zaXplOworfQorCisjZW5kaWYKKworfSAg
Ly8gbmFtZXNwYWNlCisKIEZpbGVSb3RhdGluZ1N0cmVhbTo6RmlsZVJvdGF0aW5nU3RyZWFtKGNv
bnN0IHN0ZDo6c3RyaW5nJiBkaXJfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX3ByZWZpeCkKICAgICA6IEZpbGVSb3Rh
dGluZ1N0cmVhbShkaXJfcGF0aCwgZmlsZV9wcmVmaXgsIDAsIDAsIGtSZWFkKSB7fQpAQCAtNDYs
NyArMTg4LDcgQEAgRmlsZVJvdGF0aW5nU3RyZWFtOjpGaWxlUm90YXRpbmdTdHJlYW0oY29uc3Qg
c3RkOjpzdHJpbmcmIGRpcl9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG1heF9maWxlX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbnVtX2ZpbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTW9kZSBtb2RlKQotICAgIDogZGlyX3BhdGhfKGRpcl9wYXRoKSwKKyAgICA6
IGRpcl9wYXRoXyhBZGRUcmFpbGluZ1BhdGhEZWxpbWl0ZXJJZk5lZWRlZChkaXJfcGF0aCkpLAog
ICAgICAgZmlsZV9wcmVmaXhfKGZpbGVfcHJlZml4KSwKICAgICAgIG1vZGVfKG1vZGUpLAogICAg
ICAgZmlsZV9zdHJlYW1fKG51bGxwdHIpLApAQCAtNTUsNyArMTk3LDcgQEAgRmlsZVJvdGF0aW5n
U3RyZWFtOjpGaWxlUm90YXRpbmdTdHJlYW0oY29uc3Qgc3RkOjpzdHJpbmcmIGRpcl9wYXRoLAog
ICAgICAgcm90YXRpb25faW5kZXhfKDApLAogICAgICAgY3VycmVudF9ieXRlc193cml0dGVuXygw
KSwKICAgICAgIGRpc2FibGVfYnVmZmVyaW5nXyhmYWxzZSkgewotICBSVENfRENIRUNLKEZpbGVz
eXN0ZW06OklzRm9sZGVyKGRpcl9wYXRoKSk7CisgIFJUQ19EQ0hFQ0soSXNGb2xkZXIoZGlyX3Bh
dGgpKTsKICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBrV3JpdGU6IHsKICAgICAgIGZpbGVf
bmFtZXNfLmNsZWFyKCk7CkBAIC02Niw3ICsyMDgsNyBAQCBGaWxlUm90YXRpbmdTdHJlYW06OkZp
bGVSb3RhdGluZ1N0cmVhbShjb25zdCBzdGQ6OnN0cmluZyYgZGlyX3BhdGgsCiAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBrUmVhZDogewotICAgICAgZmlsZV9uYW1lc18gPSBHZXRGaWxl
c1dpdGhQcmVmaXgoKTsKKyAgICAgIGZpbGVfbmFtZXNfID0gR2V0RmlsZXNXaXRoUHJlZml4KGRp
cl9wYXRoXywgZmlsZV9wcmVmaXhfKTsKICAgICAgIHN0ZDo6c29ydChmaWxlX25hbWVzXy5iZWdp
bigpLCBmaWxlX25hbWVzXy5lbmQoKSk7CiAgICAgICBpZiAoZmlsZV9uYW1lc18uc2l6ZSgpID4g
MCkgewogICAgICAgICAvLyB8ZmlsZV9uYW1lc198IGlzIHNvcnRlZCBuZXdlc3QgZmlyc3QsIHNv
IHJlYWQgZnJvbSB0aGUgZW5kLgpAQCAtMTg3LDExICszMjksNyBAQCBib29sIEZpbGVSb3RhdGlu
Z1N0cmVhbTo6R2V0U2l6ZShzaXplX3QqIHNpemUpIGNvbnN0IHsKICAgKnNpemUgPSAwOwogICBz
aXplX3QgdG90YWxfc2l6ZSA9IDA7CiAgIGZvciAoYXV0byBmaWxlX25hbWUgOiBmaWxlX25hbWVz
XykgewotICAgIFBhdGhuYW1lIHBhdGhuYW1lKGZpbGVfbmFtZSk7Ci0gICAgc2l6ZV90IGZpbGVf
c2l6ZSA9IDA7Ci0gICAgaWYgKEZpbGVzeXN0ZW06OkdldEZpbGVTaXplKGZpbGVfbmFtZSwgJmZp
bGVfc2l6ZSkpIHsKLSAgICAgIHRvdGFsX3NpemUgKz0gZmlsZV9zaXplOwotICAgIH0KKyAgICB0
b3RhbF9zaXplICs9IEdldEZpbGVTaXplKGZpbGVfbmFtZSkudmFsdWVfb3IoMCk7CiAgIH0KICAg
KnNpemUgPSB0b3RhbF9zaXplOwogICByZXR1cm4gdHJ1ZTsKQEAgLTIwOSw5ICszNDcsMTAgQEAg
Ym9vbCBGaWxlUm90YXRpbmdTdHJlYW06Ok9wZW4oKSB7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBjYXNlIGtXcml0ZTogewogICAgICAgLy8gRGVsZXRlIGV4aXN0aW5nIGZpbGVzIHdoZW4gb3Bl
bmluZyBmb3Igd3JpdGUuCi0gICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbWF0Y2hpbmdf
ZmlsZXMgPSBHZXRGaWxlc1dpdGhQcmVmaXgoKTsKLSAgICAgIGZvciAoYXV0byBtYXRjaGluZ19m
aWxlIDogbWF0Y2hpbmdfZmlsZXMpIHsKLSAgICAgICAgaWYgKCFGaWxlc3lzdGVtOjpEZWxldGVG
aWxlKG1hdGNoaW5nX2ZpbGUpKSB7CisgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbWF0
Y2hpbmdfZmlsZXMgPQorICAgICAgICAgIEdldEZpbGVzV2l0aFByZWZpeChkaXJfcGF0aF8sIGZp
bGVfcHJlZml4Xyk7CisgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1hdGNoaW5nX2ZpbGUgOiBtYXRj
aGluZ19maWxlcykgeworICAgICAgICBpZiAoIURlbGV0ZUZpbGUobWF0Y2hpbmdfZmlsZSkpIHsK
ICAgICAgICAgICBzdGQ6OmZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGRlbGV0ZTogJXNcbiIs
IG1hdGNoaW5nX2ZpbGUuY19zdHIoKSk7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTI4MiwxNiAr
NDIxLDE2IEBAIHZvaWQgRmlsZVJvdGF0aW5nU3RyZWFtOjpSb3RhdGVGaWxlcygpIHsKICAgLy8g
U2VlIGhlYWRlciBmaWxlIGNvbW1lbnRzIGZvciBleGFtcGxlLgogICBSVENfRENIRUNLX0xUKHJv
dGF0aW9uX2luZGV4XywgZmlsZV9uYW1lc18uc2l6ZSgpKTsKICAgc3RkOjpzdHJpbmcgZmlsZV90
b19kZWxldGUgPSBmaWxlX25hbWVzX1tyb3RhdGlvbl9pbmRleF9dOwotICBpZiAoRmlsZXN5c3Rl
bTo6SXNGaWxlKGZpbGVfdG9fZGVsZXRlKSkgewotICAgIGlmICghRmlsZXN5c3RlbTo6RGVsZXRl
RmlsZShmaWxlX3RvX2RlbGV0ZSkpIHsKKyAgaWYgKElzRmlsZShmaWxlX3RvX2RlbGV0ZSkpIHsK
KyAgICBpZiAoIURlbGV0ZUZpbGUoZmlsZV90b19kZWxldGUpKSB7CiAgICAgICBzdGQ6OmZwcmlu
dGYoc3RkZXJyLCAiRmFpbGVkIHRvIGRlbGV0ZTogJXNcbiIsIGZpbGVfdG9fZGVsZXRlLmNfc3Ry
KCkpOwogICAgIH0KICAgfQogICBmb3IgKGF1dG8gaSA9IHJvdGF0aW9uX2luZGV4XzsgaSA+IDA7
IC0taSkgewogICAgIHN0ZDo6c3RyaW5nIHJvdGF0ZWRfbmFtZSA9IGZpbGVfbmFtZXNfW2ldOwog
ICAgIHN0ZDo6c3RyaW5nIHVucm90YXRlZF9uYW1lID0gZmlsZV9uYW1lc19baSAtIDFdOwotICAg
IGlmIChGaWxlc3lzdGVtOjpJc0ZpbGUodW5yb3RhdGVkX25hbWUpKSB7Ci0gICAgICBpZiAoIUZp
bGVzeXN0ZW06Ok1vdmVGaWxlKHVucm90YXRlZF9uYW1lLCByb3RhdGVkX25hbWUpKSB7CisgICAg
aWYgKElzRmlsZSh1bnJvdGF0ZWRfbmFtZSkpIHsKKyAgICAgIGlmICghTW92ZUZpbGUodW5yb3Rh
dGVkX25hbWUsIHJvdGF0ZWRfbmFtZSkpIHsKICAgICAgICAgc3RkOjpmcHJpbnRmKHN0ZGVyciwg
IkZhaWxlZCB0byBtb3ZlOiAlcyB0byAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgIHVucm90
YXRlZF9uYW1lLmNfc3RyKCksIHJvdGF0ZWRfbmFtZS5jX3N0cigpKTsKICAgICAgIH0KQEAgLTMw
MiwyNiArNDQxLDYgQEAgdm9pZCBGaWxlUm90YXRpbmdTdHJlYW06OlJvdGF0ZUZpbGVzKCkgewog
ICBPblJvdGF0aW9uKCk7CiB9CiAKLXN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBGaWxlUm90YXRp
bmdTdHJlYW06OkdldEZpbGVzV2l0aFByZWZpeCgpIGNvbnN0IHsKLSAgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IGZpbGVzOwotICAvLyBJdGVyYXRlIG92ZXIgdGhlIGZpbGVzIGluIHRoZSBkaXJl
Y3RvcnkuCi0gIERpcmVjdG9yeUl0ZXJhdG9yIGl0OwotICBQYXRobmFtZSBkaXJfcGF0aDsKLSAg
ZGlyX3BhdGguU2V0Rm9sZGVyKGRpcl9wYXRoXyk7Ci0gIGlmICghaXQuSXRlcmF0ZShkaXJfcGF0
aCkpIHsKLSAgICByZXR1cm4gZmlsZXM7Ci0gIH0KLSAgZG8gewotICAgIHN0ZDo6c3RyaW5nIGN1
cnJlbnRfbmFtZSA9IGl0Lk5hbWUoKTsKLSAgICBpZiAoY3VycmVudF9uYW1lLnNpemUoKSAmJiAh
aXQuSXNEaXJlY3RvcnkoKSAmJgotICAgICAgICBjdXJyZW50X25hbWUuY29tcGFyZSgwLCBmaWxl
X3ByZWZpeF8uc2l6ZSgpLCBmaWxlX3ByZWZpeF8pID09IDApIHsKLSAgICAgIFBhdGhuYW1lIHBh
dGgoZGlyX3BhdGhfLCBjdXJyZW50X25hbWUpOwotICAgICAgZmlsZXMucHVzaF9iYWNrKHBhdGgu
cGF0aG5hbWUoKSk7Ci0gICAgfQotICB9IHdoaWxlIChpdC5OZXh0KCkpOwotICByZXR1cm4gZmls
ZXM7Ci19Ci0KIHN0ZDo6c3RyaW5nIEZpbGVSb3RhdGluZ1N0cmVhbTo6R2V0RmlsZVBhdGgoc2l6
ZV90IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbnVtX2ZpbGVzKSBjb25zdCB7CiAgIFJUQ19EQ0hFQ0tfTFQoaW5kZXgsIG51bV9maWxl
cyk7CkBAIC0zMzMsOCArNDUyLDcgQEAgc3RkOjpzdHJpbmcgRmlsZVJvdGF0aW5nU3RyZWFtOjpH
ZXRGaWxlUGF0aChzaXplX3QgaW5kZXgsCiAgIFJUQ19EQ0hFQ0tfTFQoMSArIG1heF9kaWdpdHMs
IGJ1ZmZlcl9zaXplKTsKICAgc3RkOjpzbnByaW50ZihmaWxlX3Bvc3RmaXgsIGJ1ZmZlcl9zaXpl
LCAiXyUwKnp1IiwgbWF4X2RpZ2l0cywgaW5kZXgpOwogCi0gIFBhdGhuYW1lIGZpbGVfcGF0aChk
aXJfcGF0aF8sIGZpbGVfcHJlZml4XyArIGZpbGVfcG9zdGZpeCk7Ci0gIHJldHVybiBmaWxlX3Bh
dGgucGF0aG5hbWUoKTsKKyAgcmV0dXJuIGRpcl9wYXRoXyArIGZpbGVfcHJlZml4XyArIGZpbGVf
cG9zdGZpeDsKIH0KIAogQ2FsbFNlc3Npb25GaWxlUm90YXRpbmdTdHJlYW06OkNhbGxTZXNzaW9u
RmlsZVJvdGF0aW5nU3RyZWFtKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdz
dHJlYW0uaAppbmRleCA0ZGFiMzQ1NWRiMDE5M2IyMTMzMmFkNWUxM2EwMjg1MDQyNjMxZTA4Li5j
NzVlZTE1M2I2ZTRhNjBlNGMzNGY4NzU0ZTBmMTZhMjEzYTg3NWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRp
bmdzdHJlYW0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0uaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRl
ZiBSVENfQkFTRV9GSUxFUk9UQVRJTkdTVFJFQU1fSF8KICNkZWZpbmUgUlRDX0JBU0VfRklMRVJP
VEFUSU5HU1RSRUFNX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KQEAgLTEwMSw4ICsxMDIsNiBA
QCBjbGFzcyBGaWxlUm90YXRpbmdTdHJlYW0gOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKICAg
Ly8gY3JlYXRlIG5ldyBmaWxlXzAKICAgdm9pZCBSb3RhdGVGaWxlcygpOwogCi0gIC8vIFJldHVy
bnMgYSBsaXN0IG9mIGZpbGUgbmFtZXMgaW4gdGhlIGRpcmVjdG9yeSBiZWdpbm5pbmcgd2l0aCB0
aGUgcHJlZml4LgotICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0RmlsZXNXaXRoUHJlZml4
KCkgY29uc3Q7CiAgIC8vIFByaXZhdGUgdmVyc2lvbiBvZiBHZXRGaWxlUGF0aC4KICAgc3RkOjpz
dHJpbmcgR2V0RmlsZVBhdGgoc2l6ZV90IGluZGV4LCBzaXplX3QgbnVtX2ZpbGVzKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtX3Vu
aXR0ZXN0LmNjCmluZGV4IDE5MDU1MTYyZmQwMTk0NWQ1YmNhZGYyYzFmN2Q5YmEwOWY1MzZjODku
LjE3MmJlNTdlYWNjNjlkNDhjOWMyNWYwZTU4Nzg0MTg2YjljNzFjZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGVyb3Rh
dGluZ3N0cmVhbV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW1fdW5pdHRlc3QuY2MKQEAg
LTEzLDkgKzEzLDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9maWxlcm90YXRpbmdzdHJl
YW0uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9maWxldXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9ndW5pdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3BhdGh1dGlscy5oIgogI2luY2x1ZGUgInRl
c3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKIG5hbWVzcGFjZSBydGMgewpAQCAtNDYsMTIg
KzQ0LDE1IEBAIGNsYXNzIE1BWUJFX0ZpbGVSb3RhdGluZ1N0cmVhbVRlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsKICAgdm9pZCBJbml0KGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXJfbmFtZSwK
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX3ByZWZpeCwKICAgICAgICAgICAg
IHNpemVfdCBtYXhfZmlsZV9zaXplLAotICAgICAgICAgICAgc2l6ZV90IG51bV9sb2dfZmlsZXMp
IHsKKyAgICAgICAgICAgIHNpemVfdCBudW1fbG9nX2ZpbGVzLAorICAgICAgICAgICAgYm9vbCBl
bnN1cmVfdHJhaWxpbmdfZGVsaW1pdGVyID0gdHJ1ZSkgewogICAgIGRpcl9wYXRoXyA9IHdlYnJ0
Yzo6dGVzdDo6T3V0cHV0UGF0aCgpOwogCiAgICAgLy8gQXBwZW5kIHBlci10ZXN0IG91dHB1dCBw
YXRoIGluIG9yZGVyIHRvIHJ1biB3aXRoaW4gZ3Rlc3QgcGFyYWxsZWwuCiAgICAgZGlyX3BhdGhf
LmFwcGVuZChkaXJfbmFtZSk7Ci0gICAgZGlyX3BhdGhfLnB1c2hfYmFjayhQYXRobmFtZTo6RGVm
YXVsdEZvbGRlckRlbGltaXRlcigpKTsKKyAgICBpZiAoZW5zdXJlX3RyYWlsaW5nX2RlbGltaXRl
cikgeworICAgICAgZGlyX3BhdGhfLmFwcGVuZCh3ZWJydGM6OnRlc3Q6OmtQYXRoRGVsaW1pdGVy
KTsKKyAgICB9CiAgICAgQVNTRVJUX1RSVUUod2VicnRjOjp0ZXN0OjpDcmVhdGVEaXIoZGlyX3Bh
dGhfKSk7CiAgICAgc3RyZWFtXy5yZXNldChuZXcgRmlsZVJvdGF0aW5nU3RyZWFtKGRpcl9wYXRo
XywgZmlsZV9wcmVmaXgsIG1heF9maWxlX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bV9sb2dfZmlsZXMpKTsKQEAgLTE1OSwxMiArMTYwLDEyIEBAIFRF
U1RfRihNQVlCRV9GaWxlUm90YXRpbmdTdHJlYW1UZXN0LCBXcml0ZUFuZFJlYWQpIHsKICAgfQog
ICAvLyBDaGVjayB0aGF0IGV4YWN0bHkgdGhyZWUgZmlsZXMgZXhpc3QuCiAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXJyYXlzaXplKG1lc3NhZ2VzKTsgKytpKSB7Ci0gICAgRVhQRUNUX1RSVUUo
RmlsZXN5c3RlbTo6SXNGaWxlKHN0cmVhbV8tPkdldEZpbGVQYXRoKGkpKSk7CisgICAgRVhQRUNU
X1RSVUUod2VicnRjOjp0ZXN0OjpGaWxlRXhpc3RzKHN0cmVhbV8tPkdldEZpbGVQYXRoKGkpKSk7
CiAgIH0KICAgc3RkOjpzdHJpbmcgbWVzc2FnZSgiZCIpOwogICBXcml0ZUFuZEZsdXNoKG1lc3Nh
Z2UuY19zdHIoKSwgbWVzc2FnZS5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
cmF5c2l6ZShtZXNzYWdlcyk7ICsraSkgewotICAgIEVYUEVDVF9UUlVFKEZpbGVzeXN0ZW06Oklz
RmlsZShzdHJlYW1fLT5HZXRGaWxlUGF0aChpKSkpOworICAgIEVYUEVDVF9UUlVFKHdlYnJ0Yzo6
dGVzdDo6RmlsZUV4aXN0cyhzdHJlYW1fLT5HZXRGaWxlUGF0aChpKSkpOwogICB9CiAgIC8vIFRP
RE8odGtjaGluKTogTWF5YmUgY2hlY2sgYWxsIHRoZSBmaWxlcyBpbiB0aGUgZGlyLgogCkBAIC0x
NzQsNiArMTc1LDUzIEBAIFRFU1RfRihNQVlCRV9GaWxlUm90YXRpbmdTdHJlYW1UZXN0LCBXcml0
ZUFuZFJlYWQpIHsKICAgICAgICAgICAgICAgICAgICBkaXJfcGF0aF8sIGtGaWxlUHJlZml4KTsK
IH0KIAorLy8gVGVzdHMgdGhhdCBhIHdyaXRlIG9wZXJhdGlvbiAod2l0aCBkaXIgbmFtZSB3aXRo
b3V0IGRlbGltaXRlcikgZm9sbG93ZWQgYnkgYQorLy8gcmVhZCByZXR1cm5zIHRoZSBleHBlY3Rl
ZCBkYXRhIGFuZCB3cml0ZXMgdG8gdGhlIGV4cGVjdGVkIGZpbGVzLgorVEVTVF9GKE1BWUJFX0Zp
bGVSb3RhdGluZ1N0cmVhbVRlc3QsIFdyaXRlV2l0aG91dERlbGltaXRlckFuZFJlYWQpIHsKKyAg
SW5pdCgiRmlsZVJvdGF0aW5nU3RyZWFtVGVzdFdyaXRlV2l0aG91dERlbGltaXRlckFuZFJlYWQi
LCBrRmlsZVByZWZpeCwKKyAgICAgICBrTWF4RmlsZVNpemUsIDMsCisgICAgICAgLyogZW5zdXJl
X3RyYWlsaW5nX2RlbGltaXRlciovIGZhbHNlKTsKKworICBBU1NFUlRfVFJVRShzdHJlYW1fLT5P
cGVuKCkpOworICAvLyBUaGUgdGVzdCBpcyBzZXQgdXAgdG8gY3JlYXRlIHRocmVlIGxvZyBmaWxl
cyBvZiBsZW5ndGggMi4gV3JpdGUgYW5kIGNoZWNrCisgIC8vIGNvbnRlbnRzLgorICBzdGQ6OnN0
cmluZyBtZXNzYWdlc1szXSA9IHsiYWEiLCAiYmIiLCAiY2MifTsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcnJheXNpemUobWVzc2FnZXMpOyArK2kpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSA9IG1lc3NhZ2VzW2ldOworICAgIFdyaXRlQW5kRmx1c2gobWVzc2FnZS5jX3N0
cigpLCBtZXNzYWdlLnNpemUoKSk7CisgIH0KKyAgc3RkOjpzdHJpbmcgbWVzc2FnZSgiZCIpOwor
ICBXcml0ZUFuZEZsdXNoKG1lc3NhZ2UuY19zdHIoKSwgbWVzc2FnZS5zaXplKCkpOworCisgIC8v
IFJlb3BlbiBmb3IgcmVhZC4KKyAgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfY29udGVudHMoImJiY2Nk
Iik7CisgIFZlcmlmeVN0cmVhbVJlYWQoZXhwZWN0ZWRfY29udGVudHMuY19zdHIoKSwgZXhwZWN0
ZWRfY29udGVudHMuc2l6ZSgpLAorICAgICAgICAgICAgICAgICAgIGRpcl9wYXRoXyArIHdlYnJ0
Yzo6dGVzdDo6a1BhdGhEZWxpbWl0ZXIsIGtGaWxlUHJlZml4KTsKK30KKworLy8gVGVzdHMgdGhh
dCBhIHdyaXRlIG9wZXJhdGlvbiBmb2xsb3dlZCBieSBhIHJlYWQgKHdpdGhvdXQgdHJhaWxpbmcg
ZGVsaW1pdGVyKQorLy8gcmV0dXJucyB0aGUgZXhwZWN0ZWQgZGF0YSBhbmQgd3JpdGVzIHRvIHRo
ZSBleHBlY3RlZCBmaWxlcy4KK1RFU1RfRihNQVlCRV9GaWxlUm90YXRpbmdTdHJlYW1UZXN0LCBX
cml0ZUFuZFJlYWRXaXRob3V0RGVsaW1pdGVyKSB7CisgIEluaXQoIkZpbGVSb3RhdGluZ1N0cmVh
bVRlc3RXcml0ZUFuZFJlYWRXaXRob3V0RGVsaW1pdGVyIiwga0ZpbGVQcmVmaXgsCisgICAgICAg
a01heEZpbGVTaXplLCAzKTsKKworICBBU1NFUlRfVFJVRShzdHJlYW1fLT5PcGVuKCkpOworICAv
LyBUaGUgdGVzdCBpcyBzZXQgdXAgdG8gY3JlYXRlIHRocmVlIGxvZyBmaWxlcyBvZiBsZW5ndGgg
Mi4gV3JpdGUgYW5kIGNoZWNrCisgIC8vIGNvbnRlbnRzLgorICBzdGQ6OnN0cmluZyBtZXNzYWdl
c1szXSA9IHsiYWEiLCAiYmIiLCAiY2MifTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJh
eXNpemUobWVzc2FnZXMpOyArK2kpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSA9
IG1lc3NhZ2VzW2ldOworICAgIFdyaXRlQW5kRmx1c2gobWVzc2FnZS5jX3N0cigpLCBtZXNzYWdl
LnNpemUoKSk7CisgIH0KKyAgc3RkOjpzdHJpbmcgbWVzc2FnZSgiZCIpOworICBXcml0ZUFuZEZs
dXNoKG1lc3NhZ2UuY19zdHIoKSwgbWVzc2FnZS5zaXplKCkpOworCisgIC8vIFJlb3BlbiBmb3Ig
cmVhZC4KKyAgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfY29udGVudHMoImJiY2NkIik7CisgIFZlcmlm
eVN0cmVhbVJlYWQoZXhwZWN0ZWRfY29udGVudHMuY19zdHIoKSwgZXhwZWN0ZWRfY29udGVudHMu
c2l6ZSgpLAorICAgICAgICAgICAgICAgICAgIGRpcl9wYXRoXy5zdWJzdHIoMCwgZGlyX3BhdGhf
LnNpemUoKSAtIDEpLCBrRmlsZVByZWZpeCk7Cit9CisKIC8vIFRlc3RzIHRoYXQgd3JpdGluZyBk
YXRhIGdyZWF0ZXIgdGhhbiB0aGUgdG90YWwgY2FwYWNpdHkgb2YgdGhlIGZpbGVzCiAvLyBvdmVy
d3JpdGVzIHRoZSBmaWxlcyBjb3JyZWN0bHkgYW5kIGlzIHJlYWQgY29ycmVjdGx5IGFmdGVyLgog
VEVTVF9GKE1BWUJFX0ZpbGVSb3RhdGluZ1N0cmVhbVRlc3QsIFdyaXRlT3ZlcmZsb3dBbmRSZWFk
KSB7CkBAIC0yMTgsNyArMjY2LDcgQEAgY2xhc3MgTUFZQkVfQ2FsbFNlc3Npb25GaWxlUm90YXRp
bmdTdHJlYW1UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAKICAgICAvLyBBcHBlbmQg
cGVyLXRlc3Qgb3V0cHV0IHBhdGggaW4gb3JkZXIgdG8gcnVuIHdpdGhpbiBndGVzdCBwYXJhbGxl
bC4KICAgICBkaXJfcGF0aF8uYXBwZW5kKGRpcl9uYW1lKTsKLSAgICBkaXJfcGF0aF8ucHVzaF9i
YWNrKFBhdGhuYW1lOjpEZWZhdWx0Rm9sZGVyRGVsaW1pdGVyKCkpOworICAgIGRpcl9wYXRoXy5h
cHBlbmQod2VicnRjOjp0ZXN0OjprUGF0aERlbGltaXRlcik7CiAgICAgQVNTRVJUX1RSVUUod2Vi
cnRjOjp0ZXN0OjpDcmVhdGVEaXIoZGlyX3BhdGhfKSk7CiAgICAgc3RyZWFtXy5yZXNldCgKICAg
ICAgICAgbmV3IENhbGxTZXNzaW9uRmlsZVJvdGF0aW5nU3RyZWFtKGRpcl9wYXRoXywgbWF4X3Rv
dGFsX2xvZ19zaXplKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxldXRpbHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxldXRpbHMuY2MKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdkODNmOTdmYWU0YzFjYTA2OTE0NzQ1NTA5YmMwNDcxNzhhZTkz
ZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXV0aWxzLmNj
CisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQg
VGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNp
bmNsdWRlICJydGNfYmFzZS9maWxldXRpbHMuaCIKLQotI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5
c2l6ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L3BhdGh1dGlscy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCi0KLSNpZiBk
ZWZpbmVkKFdFQlJUQ19XSU4pCi0jaW5jbHVkZSAicnRjX2Jhc2Uvd2luMzJmaWxlc3lzdGVtLmgi
Ci0jZWxzZQotI2luY2x1ZGUgInJ0Y19iYXNlL3VuaXhmaWxlc3lzdGVtLmgiCi0jZW5kaWYKLQot
I2lmICFkZWZpbmVkKFdFQlJUQ19XSU4pCi0jZGVmaW5lIE1BWF9QQVRIIDI2MAotI2VuZGlmCi0K
LW5hbWVzcGFjZSBydGMgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gRGlyZWN0
b3J5IEl0ZXJhdG9yICAgLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIEEgRGly
ZWN0b3J5SXRlcmF0b3IgaXMgY3JlYXRlZCB3aXRoIGEgZ2l2ZW4gZGlyZWN0b3J5LiBJdCBvcmln
aW5hbGx5IHBvaW50cwotLy8gdG8gdGhlIGZpcnN0IGZpbGUgaW4gdGhlIGRpcmVjdG9yeSwgYW5k
IGNhbiBiZSBhZHZhbmVjZCB3aXRoIE5leHQoKS4gVGhpcwotLy8gYWxsb3dzIHlvdSB0byBnZXQg
aW5mb3JtYXRpb24gYWJvdXQgZWFjaCBmaWxlLgotCi0vLyBDb25zdHJ1Y3RvcgotRGlyZWN0b3J5
SXRlcmF0b3I6OkRpcmVjdG9yeUl0ZXJhdG9yKCkKLSNpZmRlZiBXRUJSVENfV0lOCi0gICAgOiBo
YW5kbGVfKElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0jZWxzZQotICAgIDogZGlyXyhudWxscHRy
KSwKLSAgICAgIGRpcmVudF8obnVsbHB0cil7Ci0jZW5kaWYKLX0KLQotLy8gRGVzdHJ1Y3Rvcgot
RGlyZWN0b3J5SXRlcmF0b3I6On5EaXJlY3RvcnlJdGVyYXRvcigpIHsKLSNpZiBkZWZpbmVkKFdF
QlJUQ19XSU4pCi0gIGlmIChoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgIDo6
RmluZENsb3NlKGhhbmRsZV8pOwotI2Vsc2UKLSAgaWYgKGRpcl8pCi0gICAgY2xvc2VkaXIoZGly
Xyk7Ci0jZW5kaWYKLX0KLQotLy8gU3RhcnRzIHRyYXZlcnNpbmcgYSBkaXJlY3RvcnkuCi0vLyBk
aXIgaXMgdGhlIGRpcmVjdG9yeSB0byB0cmF2ZXJzZQotLy8gcmV0dXJucyB0cnVlIGlmIHRoZSBk
aXJlY3RvcnkgZXhpc3RzIGFuZCBpcyB2YWxpZAotYm9vbCBEaXJlY3RvcnlJdGVyYXRvcjo6SXRl
cmF0ZShjb25zdCBQYXRobmFtZSYgZGlyKSB7Ci0gIGRpcmVjdG9yeV8gPSBkaXIucGF0aG5hbWUo
KTsKLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0gIGlmIChoYW5kbGVfICE9IElOVkFMSURfSEFO
RExFX1ZBTFVFKQotICAgIDo6RmluZENsb3NlKGhhbmRsZV8pOwotICBzdGQ6OnN0cmluZyBkID0g
ZGlyLnBhdGhuYW1lKCkgKyAnKic7Ci0gIGhhbmRsZV8gPSA6OkZpbmRGaXJzdEZpbGUoVG9VdGYx
NihkKS5jX3N0cigpLCAmZGF0YV8pOwotICBpZiAoaGFuZGxlXyA9PSBJTlZBTElEX0hBTkRMRV9W
QUxVRSkKLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICBpZiAoZGlyXyAhPSBudWxscHRyKQot
ICAgIGNsb3NlZGlyKGRpcl8pOwotICBkaXJfID0gOjpvcGVuZGlyKGRpcmVjdG9yeV8uY19zdHIo
KSk7Ci0gIGlmIChkaXJfID09IG51bGxwdHIpCi0gICAgcmV0dXJuIGZhbHNlOwotICBkaXJlbnRf
ID0gcmVhZGRpcihkaXJfKTsKLSAgaWYgKGRpcmVudF8gPT0gbnVsbHB0cikKLSAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgaWYgKDo6c3RhdChzdGQ6OnN0cmluZyhkaXJlY3RvcnlfICsgTmFtZSgpKS5j
X3N0cigpLCAmc3RhdF8pICE9IDApCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0gIHJldHVy
biB0cnVlOwotfQotCi0vLyBBZHZhbmNlcyB0byB0aGUgbmV4dCBmaWxlCi0vLyByZXR1cm5zIHRy
dWUgaWYgdGhlcmUgd2VyZSBtb3JlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuCi1ib29sIERpcmVj
dG9yeUl0ZXJhdG9yOjpOZXh0KCkgewotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLSAgcmV0dXJu
IDo6RmluZE5leHRGaWxlKGhhbmRsZV8sICZkYXRhXykgPT0gVFJVRTsKLSNlbHNlCi0gIGRpcmVu
dF8gPSA6OnJlYWRkaXIoZGlyXyk7Ci0gIGlmIChkaXJlbnRfID09IG51bGxwdHIpCi0gICAgcmV0
dXJuIGZhbHNlOwotCi0gIHJldHVybiA6OnN0YXQoc3RkOjpzdHJpbmcoZGlyZWN0b3J5XyArIE5h
bWUoKSkuY19zdHIoKSwgJnN0YXRfKSA9PSAwOwotI2VuZGlmCi19Ci0KLS8vIHJldHVybnMgdHJ1
ZSBpZiB0aGUgZmlsZSBjdXJyZW50bHkgcG9pbnRlZCB0byBpcyBhIGRpcmVjdG9yeQotYm9vbCBE
aXJlY3RvcnlJdGVyYXRvcjo6SXNEaXJlY3RvcnkoKSBjb25zdCB7Ci0jaWYgZGVmaW5lZChXRUJS
VENfV0lOKQotICByZXR1cm4gKGRhdGFfLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVU
RV9ESVJFQ1RPUlkpICE9IEZBTFNFOwotI2Vsc2UKLSAgcmV0dXJuIFNfSVNESVIoc3RhdF8uc3Rf
bW9kZSk7Ci0jZW5kaWYKLX0KLQotLy8gcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBjdXJy
ZW50bHkgcG9pbnRlZCB0bwotc3RkOjpzdHJpbmcgRGlyZWN0b3J5SXRlcmF0b3I6Ok5hbWUoKSBj
b25zdCB7Ci0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotICByZXR1cm4gVG9VdGY4KGRhdGFfLmNG
aWxlTmFtZSk7Ci0jZWxzZQotICBSVENfRENIRUNLKGRpcmVudF8pOwotICByZXR1cm4gZGlyZW50
Xy0+ZF9uYW1lOwotI2VuZGlmCi19Ci0KLUZpbGVzeXN0ZW1JbnRlcmZhY2UqIEZpbGVzeXN0ZW06
OkdldEZpbGVzeXN0ZW0oKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotICBzdGF0aWMgRmls
ZXN5c3RlbUludGVyZmFjZSogY29uc3QgZmlsZXN5c3RlbSA9IG5ldyBXaW4zMkZpbGVzeXN0ZW0o
KTsKLSNlbHNlCi0gIHN0YXRpYyBGaWxlc3lzdGVtSW50ZXJmYWNlKiBjb25zdCBmaWxlc3lzdGVt
ID0gbmV3IFVuaXhGaWxlc3lzdGVtKCk7Ci0jZW5kaWYKLQotICByZXR1cm4gZmlsZXN5c3RlbTsK
LX0KLQotfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXV0aWxzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxldXRpbHMuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMyZmQ4ODQ0MDFjZmY1ZmZiMDIzZWZlODVlOGYw
ODk1Njc1MWZmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxl
dXRpbHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogIENvcHlyaWdo
dCAyMDA0IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAq
LwotCi0jaWZuZGVmIFJUQ19CQVNFX0ZJTEVVVElMU19IXwotI2RlZmluZSBSVENfQkFTRV9GSUxF
VVRJTFNfSF8KLQotI2luY2x1ZGUgPHN0cmluZz4KLQotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikK
LSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZWxzZQotI2luY2x1ZGUgPGRpcmVudC5oPgotI2luY2x1
ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMu
aD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZiAgLy8gV0VCUlRDX1dJTgotCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdp
Yy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIKLQotbmFtZXNwYWNlIHJ0
YyB7Ci0KLWNsYXNzIEZpbGVTdHJlYW07Ci1jbGFzcyBQYXRobmFtZTsKLQotLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLS8vIERpcmVjdG9yeSBJdGVyYXRvciAgIC8vCi0vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotCi0vLyBBIERpcmVjdG9yeUl0ZXJhdG9yIGlzIGNyZWF0ZWQgd2l0aCBh
IGdpdmVuIGRpcmVjdG9yeS4gSXQgb3JpZ2luYWxseSBwb2ludHMKLS8vIHRvIHRoZSBmaXJzdCBm
aWxlIGluIHRoZSBkaXJlY3RvcnksIGFuZCBjYW4gYmUgYWR2YW5lY2Qgd2l0aCBOZXh0KCkuIFRo
aXMKLS8vIGFsbG93cyB5b3UgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IGVhY2ggZmlsZS4KLQot
Y2xhc3MgRGlyZWN0b3J5SXRlcmF0b3IgewotICBmcmllbmQgY2xhc3MgRmlsZXN5c3RlbTsKLQot
IHB1YmxpYzoKLSAgLy8gQ29uc3RydWN0b3IKLSAgRGlyZWN0b3J5SXRlcmF0b3IoKTsKLSAgLy8g
RGVzdHJ1Y3RvcgotICB2aXJ0dWFsIH5EaXJlY3RvcnlJdGVyYXRvcigpOwotCi0gIC8vIFN0YXJ0
cyB0cmF2ZXJzaW5nIGEgZGlyZWN0b3J5Ci0gIC8vIGRpciBpcyB0aGUgZGlyZWN0b3J5IHRvIHRy
YXZlcnNlCi0gIC8vIHJldHVybnMgdHJ1ZSBpZiB0aGUgZGlyZWN0b3J5IGV4aXN0cyBhbmQgaXMg
dmFsaWQKLSAgLy8gVGhlIGl0ZXJhdG9yIHdpbGwgcG9pbnQgdG8gdGhlIGZpcnN0IGVudHJ5IGlu
IHRoZSBkaXJlY3RvcnkKLSAgdmlydHVhbCBib29sIEl0ZXJhdGUoY29uc3QgUGF0aG5hbWUmIHBh
dGgpOwotCi0gIC8vIEFkdmFuY2VzIHRvIHRoZSBuZXh0IGZpbGUKLSAgLy8gcmV0dXJucyB0cnVl
IGlmIHRoZXJlIHdlcmUgbW9yZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LgotICB2aXJ0dWFsIGJv
b2wgTmV4dCgpOwotCi0gIC8vIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsZSBjdXJyZW50bHkgcG9p
bnRlZCB0byBpcyBhIGRpcmVjdG9yeQotICB2aXJ0dWFsIGJvb2wgSXNEaXJlY3RvcnkoKSBjb25z
dDsKLQotICAvLyByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGN1cnJlbnRseSBwb2ludGVk
IHRvCi0gIHZpcnR1YWwgc3RkOjpzdHJpbmcgTmFtZSgpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAg
c3RkOjpzdHJpbmcgZGlyZWN0b3J5XzsKLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0gIFdJTjMy
X0ZJTkRfREFUQSBkYXRhXzsKLSAgSEFORExFIGhhbmRsZV87Ci0jZWxzZQotICBESVIqIGRpcl87
Ci0gIHN0cnVjdCBkaXJlbnQqIGRpcmVudF87Ci0gIHN0cnVjdCBzdGF0IHN0YXRfOwotI2VuZGlm
Ci19OwotCi1jbGFzcyBGaWxlc3lzdGVtSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwg
fkZpbGVzeXN0ZW1JbnRlcmZhY2UoKSB7fQotCi0gIC8vIFRoaXMgd2lsbCBhdHRlbXB0IHRvIGRl
bGV0ZSB0aGUgcGF0aCBsb2NhdGVkIGF0IGZpbGVuYW1lLgotICAvLyBJdCBEQ0hFQ0tzIGFuZCBy
ZXR1cm5zIGZhbHNlIGlmIHRoZSBwYXRoIHBvaW50cyB0byBhIGZvbGRlciBvciBhCi0gIC8vIG5v
bi1leGlzdGVudCBmaWxlLgotICB2aXJ0dWFsIGJvb2wgRGVsZXRlRmlsZShjb25zdCBQYXRobmFt
ZSYgZmlsZW5hbWUpID0gMDsKLQotICAvLyBUaGlzIG1vdmVzIGEgZmlsZSBmcm9tIG9sZF9wYXRo
IHRvIG5ld19wYXRoLCB3aGVyZSAib2xkX3BhdGgiIGlzIGEKLSAgLy8gcGxhaW4gZmlsZS4gVGhp
cyBEQ0hFQ0tzIGFuZCByZXR1cm5zIGZhbHNlIGlmIG9sZF9wYXRoIHBvaW50cyB0byBhCi0gIC8v
IGRpcmVjdG9yeSwgYW5kIHJldHVybnMgdHJ1ZSBpZiB0aGUgZnVuY3Rpb24gc3VjY2VlZHMuCi0g
IHZpcnR1YWwgYm9vbCBNb3ZlRmlsZShjb25zdCBQYXRobmFtZSYgb2xkX3BhdGgsIGNvbnN0IFBh
dGhuYW1lJiBuZXdfcGF0aCkgPSAwOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBy
ZWZlcnMgdG8gYSBkaXJlY3RvcnkKLSAgdmlydHVhbCBib29sIElzRm9sZGVyKGNvbnN0IFBhdGhu
YW1lJiBwYXRobmFtZSkgPSAwOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSByZWZl
cnMgdG8gYSBmaWxlCi0gIHZpcnR1YWwgYm9vbCBJc0ZpbGUoY29uc3QgUGF0aG5hbWUmIHBhdGhu
YW1lKSA9IDA7Ci0KLSAgLy8gRGV0ZXJtaW5lcyB0aGUgc2l6ZSBvZiB0aGUgZmlsZSBpbmRpY2F0
ZWQgYnkgcGF0aC4KLSAgdmlydHVhbCBib29sIEdldEZpbGVTaXplKGNvbnN0IFBhdGhuYW1lJiBw
YXRoLCBzaXplX3QqIHNpemUpID0gMDsKLX07Ci0KLWNsYXNzIEZpbGVzeXN0ZW0gewotIHB1Ymxp
YzoKLSAgc3RhdGljIGJvb2wgRGVsZXRlRmlsZShjb25zdCBQYXRobmFtZSYgZmlsZW5hbWUpIHsK
LSAgICByZXR1cm4gR2V0RmlsZXN5c3RlbSgpLT5EZWxldGVGaWxlKGZpbGVuYW1lKTsKLSAgfQot
Ci0gIHN0YXRpYyBib29sIE1vdmVGaWxlKGNvbnN0IFBhdGhuYW1lJiBvbGRfcGF0aCwgY29uc3Qg
UGF0aG5hbWUmIG5ld19wYXRoKSB7Ci0gICAgcmV0dXJuIEdldEZpbGVzeXN0ZW0oKS0+TW92ZUZp
bGUob2xkX3BhdGgsIG5ld19wYXRoKTsKLSAgfQotCi0gIHN0YXRpYyBib29sIElzRm9sZGVyKGNv
bnN0IFBhdGhuYW1lJiBwYXRobmFtZSkgewotICAgIHJldHVybiBHZXRGaWxlc3lzdGVtKCktPklz
Rm9sZGVyKHBhdGhuYW1lKTsKLSAgfQotCi0gIHN0YXRpYyBib29sIElzRmlsZShjb25zdCBQYXRo
bmFtZSYgcGF0aG5hbWUpIHsKLSAgICByZXR1cm4gR2V0RmlsZXN5c3RlbSgpLT5Jc0ZpbGUocGF0
aG5hbWUpOwotICB9Ci0KLSAgc3RhdGljIGJvb2wgR2V0RmlsZVNpemUoY29uc3QgUGF0aG5hbWUm
IHBhdGgsIHNpemVfdCogc2l6ZSkgewotICAgIHJldHVybiBHZXRGaWxlc3lzdGVtKCktPkdldEZp
bGVTaXplKHBhdGgsIHNpemUpOwotICB9Ci0KLSBwcml2YXRlOgotICBzdGF0aWMgRmlsZXN5c3Rl
bUludGVyZmFjZSogR2V0RmlsZXN5c3RlbSgpOwotICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09O
U1RSVUNUT1JTKEZpbGVzeXN0ZW0pOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHJ0YwotCi0jZW5k
aWYgIC8vIFJUQ19CQVNFX0ZJTEVVVElMU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYwppbmRleCA0
ZjI5NDU5NGJkNGFmY2YyOWEzZjg5YWMyNzBlMjhhYmNiZjc1NTMxLi42YjQzYjkxZTAyNmFjZGM1
ODQyMTVkZDRlYjQyZGRiYTVlNWMwNGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYwpAQCAtMTUs
NyArMTUsNiBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogI2lmIGRlZmluZWQo
V0VCUlRDX1dJTikKIC8vIGNsYW5nLWZvcm1hdCBvZmYKQEAgLTIzLDYgKzIyLDggQEAKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8c2hlbGxhcGkuaD4gLy8gbXVzdCBjb21lIGFmdGVy
IHdpbmRvd3MuaAogLy8gY2xhbmctZm9ybWF0IG9uCisKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJp
bmd1dGlscy5oIiAgLy8gRm9yIFRvVXRmOAogI2VuZGlmCiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9m
bGFncy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvZmxhZ3MuaAppbmRleCAzM2Y2ZTViZGExZGJkYTU0YzZkZjhlNWYyNjhmZDg2MGZkNDc2OGFk
Li5hMDhiZmQyOWI4NWQ1ZmYyYjBkMWRhZjUxMTE2NWVjYjRmMjEwM2RkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2ZsYWdzLmgKQEAgLTIzLDcgKzIzLDEwIEBACiAjZGVmaW5lIFJUQ19CQVNFX0ZMQUdTX0hfCiAK
ICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKworI2lmIGRlZmluZWQoV0VCUlRDX1dJTikK
ICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjZW5kaWYKIAogbmFtZXNw
YWNlIHJ0YyB7CiAKQEAgLTMzLDcgKzM2LDcgQEAgdW5pb24gRmxhZ1ZhbHVlIHsKICAgLy8gYm9v
bCB2YWx1ZXMgKCdib29sIGIgPSAiZmFsc2UiOycgcmVzdWx0cyBpbiBiID09IHRydWUhKSwgd2Ug
cGFzcwogICAvLyBhbmQgaW50IGFyZ3VtZW50IHRvIE5ld19CT09MIGFzIHRoaXMgYXBwZWFycyB0
byBiZSBzYWZlciAtIHNpZ2guCiAgIC8vIEluIHBhcnRpY3VsYXIsIGl0IHByZXZlbnRzIHRoZSAo
bm90IHVuY29tbW9uISkgYnVnIHdoZXJlIGEgYm9vbAotICAvLyBmbGFnIGlzIGRlZmluZWQgdmlh
OiBERUZJTkVfYm9vbChmbGFnLCAiZmFsc2UiLCAic29tZSBjb21tZW50Iik7LgorICAvLyBmbGFn
IGlzIGRlZmluZWQgdmlhOiBXRUJSVENfREVGSU5FX2Jvb2woZmxhZywgImZhbHNlIiwgInNvbWUg
Y29tbWVudCIpOy4KICAgc3RhdGljIEZsYWdWYWx1ZSBOZXdfQk9PTChpbnQgYikgewogICAgIEZs
YWdWYWx1ZSB2OwogICAgIHYuYiA9IChiICE9IDApOwpAQCAtMTUyLDcgKzE1NSw3IEBAIGNsYXNz
IEZsYWcgewogfTsKIAogLy8gSW50ZXJuYWwgdXNlIG9ubHkuCi0jZGVmaW5lIERFRklORV9GTEFH
KHR5cGUsIGNfdHlwZSwgbmFtZSwgZGVmYXVsdCwgY29tbWVudCkgICAgICAgICAgICAgICAgICAg
XAorI2RlZmluZSBXRUJSVENfREVGSU5FX0ZMQUcodHlwZSwgY190eXBlLCBuYW1lLCBkZWZhdWx0
LCBjb21tZW50KSAgICAgICAgICAgIFwKICAgLyogZGVmaW5lIGFuZCBpbml0aWFsaXplIHRoZSBm
bGFnICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIGNfdHlwZSBG
TEFHXyMjbmFtZSA9IChkZWZhdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAvKiByZWdpc3RlciB0aGUgZmxhZyAqLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE2MSwyNSArMTY0LDI1IEBAIGNs
YXNzIEZsYWcgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6RmxhZ1ZhbHVl
OjpOZXdfIyN0eXBlKGRlZmF1bHQpKQogCiAvLyBJbnRlcm5hbCB1c2Ugb25seS4KLSNkZWZpbmUg
REVDTEFSRV9GTEFHKGNfdHlwZSwgbmFtZSkgXAotICAvKiBkZWNsYXJlIHRoZSBleHRlcm5hbCBm
bGFnICovICBcCisjZGVmaW5lIFdFQlJUQ19ERUNMQVJFX0ZMQUcoY190eXBlLCBuYW1lKSBcCisg
IC8qIGRlY2xhcmUgdGhlIGV4dGVybmFsIGZsYWcgKi8gICAgICAgICBcCiAgIGV4dGVybiBjX3R5
cGUgRkxBR18jI25hbWUKIAogLy8gVXNlIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHRvIGRlZmluZSBh
IG5ldyBmbGFnOgotI2RlZmluZSBERUZJTkVfYm9vbChuYW1lLCBkZWZhdWx0LCBjb21tZW50KSBc
Ci0gIERFRklORV9GTEFHKEJPT0wsIGJvb2wsIG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpCi0jZGVm
aW5lIERFRklORV9pbnQobmFtZSwgZGVmYXVsdCwgY29tbWVudCkgXAotICBERUZJTkVfRkxBRyhJ
TlQsIGludCwgbmFtZSwgZGVmYXVsdCwgY29tbWVudCkKLSNkZWZpbmUgREVGSU5FX2Zsb2F0KG5h
bWUsIGRlZmF1bHQsIGNvbW1lbnQpIFwKLSAgREVGSU5FX0ZMQUcoRkxPQVQsIGRvdWJsZSwgbmFt
ZSwgZGVmYXVsdCwgY29tbWVudCkKLSNkZWZpbmUgREVGSU5FX3N0cmluZyhuYW1lLCBkZWZhdWx0
LCBjb21tZW50KSBcCi0gIERFRklORV9GTEFHKFNUUklORywgY29uc3QgY2hhciosIG5hbWUsIGRl
ZmF1bHQsIGNvbW1lbnQpCisjZGVmaW5lIFdFQlJUQ19ERUZJTkVfYm9vbChuYW1lLCBkZWZhdWx0
LCBjb21tZW50KSBcCisgIFdFQlJUQ19ERUZJTkVfRkxBRyhCT09MLCBib29sLCBuYW1lLCBkZWZh
dWx0LCBjb21tZW50KQorI2RlZmluZSBXRUJSVENfREVGSU5FX2ludChuYW1lLCBkZWZhdWx0LCBj
b21tZW50KSBcCisgIFdFQlJUQ19ERUZJTkVfRkxBRyhJTlQsIGludCwgbmFtZSwgZGVmYXVsdCwg
Y29tbWVudCkKKyNkZWZpbmUgV0VCUlRDX0RFRklORV9mbG9hdChuYW1lLCBkZWZhdWx0LCBjb21t
ZW50KSBcCisgIFdFQlJUQ19ERUZJTkVfRkxBRyhGTE9BVCwgZG91YmxlLCBuYW1lLCBkZWZhdWx0
LCBjb21tZW50KQorI2RlZmluZSBXRUJSVENfREVGSU5FX3N0cmluZyhuYW1lLCBkZWZhdWx0LCBj
b21tZW50KSBcCisgIFdFQlJUQ19ERUZJTkVfRkxBRyhTVFJJTkcsIGNvbnN0IGNoYXIqLCBuYW1l
LCBkZWZhdWx0LCBjb21tZW50KQogCiAvLyBVc2UgdGhlIGZvbGxvd2luZyBtYWNyb3MgdG8gZGVj
bGFyZSBhIGZsYWcgZGVmaW5lZCBlbHNld2hlcmU6Ci0jZGVmaW5lIERFQ0xBUkVfYm9vbChuYW1l
KSBERUNMQVJFX0ZMQUcoYm9vbCwgbmFtZSkKLSNkZWZpbmUgREVDTEFSRV9pbnQobmFtZSkgREVD
TEFSRV9GTEFHKGludCwgbmFtZSkKLSNkZWZpbmUgREVDTEFSRV9mbG9hdChuYW1lKSBERUNMQVJF
X0ZMQUcoZG91YmxlLCBuYW1lKQotI2RlZmluZSBERUNMQVJFX3N0cmluZyhuYW1lKSBERUNMQVJF
X0ZMQUcoY29uc3QgY2hhciosIG5hbWUpCisjZGVmaW5lIFdFQlJUQ19ERUNMQVJFX2Jvb2wobmFt
ZSkgV0VCUlRDX0RFQ0xBUkVfRkxBRyhib29sLCBuYW1lKQorI2RlZmluZSBXRUJSVENfREVDTEFS
RV9pbnQobmFtZSkgV0VCUlRDX0RFQ0xBUkVfRkxBRyhpbnQsIG5hbWUpCisjZGVmaW5lIFdFQlJU
Q19ERUNMQVJFX2Zsb2F0KG5hbWUpIFdFQlJUQ19ERUNMQVJFX0ZMQUcoZG91YmxlLCBuYW1lKQor
I2RlZmluZSBXRUJSVENfREVDTEFSRV9zdHJpbmcobmFtZSkgV0VCUlRDX0RFQ0xBUkVfRkxBRyhj
b25zdCBjaGFyKiwgbmFtZSkKIAogLy8gVGhlIGdsb2JhbCBsaXN0IG9mIGFsbCBmbGFncy4KIGNs
YXNzIEZsYWdMaXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2hlbHBlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2hlbHBlcnMuaAppbmRleCBkM2IwOWNmZDQ4ZmI1
YmQzZTVhZmQ5M2JkNmY4NTRhMTFhY2UwZWY3Li5hOTNiMzIxZWFiOTI2NzNkZTkwM2I5ZTg3ZWMy
NjU2MzY2ZTMxZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9oZWxwZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaGVscGVycy5oCkBAIC0xMSw2ICsxMSw4IEBA
CiAjaWZuZGVmIFJUQ19CQVNFX0hFTFBFUlNfSF8KICNkZWZpbmUgUlRDX0JBU0VfSEVMUEVSU19I
XwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8
c3RyaW5nPgogCiBuYW1lc3BhY2UgcnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2h0dHBjb21tb24uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9odHRwY29tbW9uLmNj
CmluZGV4IDcxNmE0MWUxNmU5M2U3MmM2ZTkwYzE2MmJlNjI1ZWUyMjE0NThiMzUuLjc5MjZmODg0
ZjlkODgxYjM3NWY4YzBkNzdjMDQ2NWYwOGVhNjRkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2h0dHBjb21tb24uY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaHR0
cGNvbW1vbi5jYwpAQCAtMTgsMTcgKzE4LDIzIEBACiAjaW5jbHVkZSA8c2VjdXJpdHkuaD4KICNl
bmRpZgogCisjaW5jbHVkZSA8Y3R5cGUuaD4gIC8vIGZvciBpc3NwYWNlCisjaW5jbHVkZSA8c3Rk
aW8uaD4gIC8vIGZvciBzcHJpbnRmCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHV0
aWxpdHk+ICAvLyBmb3IgcGFpcgorI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wv
c3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NyeXB0c3RyaW5nLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvY3J5cHRzdHJpbmcuaCIgIC8vIGZvciBDcnlwdFN0cmluZwog
I2luY2x1ZGUgInJ0Y19iYXNlL2h0dHBjb21tb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmlu
Z19idWlsZGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0L2Jhc2U2
NC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3plcm9fbWVtb3J5LmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvdGhpcmRfcGFydHkvYmFzZTY0L2Jhc2U2NC5oIiAgLy8gZm9yIEJhc2U2NAorI2luY2x1ZGUg
InJ0Y19iYXNlL3plcm9fbWVtb3J5LmgiICAgICAgICAgICAgICAgIC8vIGZvciBFeHBsaWNpdFpl
cm9NZW1vcnkKIAogbmFtZXNwYWNlIHJ0YyB7CiBuYW1lc3BhY2UgewpAQCAtMjYwLDcgKzI2Niw3
IEBAIEh0dHBBdXRoUmVzdWx0IEh0dHBBdXRoZW50aWNhdGUoY29uc3QgY2hhciogY2hhbGxlbmdl
LAogICAgIHJldHVybiBIQVJfSUdOT1JFOwogCiAgIC8vIEJBU0lDCi0gIGlmIChfc3RyaWNtcChh
dXRoX21ldGhvZC5jX3N0cigpLCAiYmFzaWMiKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKGF1dGhfbWV0aG9kLCAiYmFzaWMiKSkgewogICAgIGlmIChjb250ZXh0KQogICAg
ICAgcmV0dXJuIEhBUl9DUkVERU5USUFMUzsgIC8vIEJhZCBjcmVkZW50aWFscwogICAgIGlmICh1
c2VybmFtZS5lbXB0eSgpKQpAQCAtMjg4LDcgKzI5NCw3IEBAIEh0dHBBdXRoUmVzdWx0IEh0dHBB
dXRoZW50aWNhdGUoY29uc3QgY2hhciogY2hhbGxlbmdlLAogICB9CiAKICAgLy8gRElHRVNUCi0g
IGlmIChfc3RyaWNtcChhdXRoX21ldGhvZC5jX3N0cigpLCAiZGlnZXN0IikgPT0gMCkgeworICBp
ZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShhdXRoX21ldGhvZCwgImRpZ2VzdCIpKSB7CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgICByZXR1cm4gSEFSX0NSRURFTlRJQUxTOyAgLy8gQmFkIGNyZWRl
bnRpYWxzCiAgICAgaWYgKHVzZXJuYW1lLmVtcHR5KCkpCkBAIC0zNTUsOCArMzYxLDggQEAgSHR0
cEF1dGhSZXN1bHQgSHR0cEF1dGhlbnRpY2F0ZShjb25zdCBjaGFyKiBjaGFsbGVuZ2UsCiAKICNp
ZiBkZWZpbmVkKFdFQlJUQ19XSU4pCiAjaWYgMQotICBib29sIHdhbnRfbmVnb3RpYXRlID0gKF9z
dHJpY21wKGF1dGhfbWV0aG9kLmNfc3RyKCksICJuZWdvdGlhdGUiKSA9PSAwKTsKLSAgYm9vbCB3
YW50X250bG0gPSAoX3N0cmljbXAoYXV0aF9tZXRob2QuY19zdHIoKSwgIm50bG0iKSA9PSAwKTsK
KyAgYm9vbCB3YW50X25lZ290aWF0ZSA9IGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoYXV0aF9tZXRo
b2QsICJuZWdvdGlhdGUiKTsKKyAgYm9vbCB3YW50X250bG0gPSBhYnNsOjpFcXVhbHNJZ25vcmVD
YXNlKGF1dGhfbWV0aG9kLCAibnRsbSIpOwogICAvLyBTUE5FR08gJiBOVExNCiAgIGlmICh3YW50
X25lZ290aWF0ZSB8fCB3YW50X250bG0pIHsKICAgICBjb25zdCBzaXplX3QgTUFYX01FU1NBR0Ug
PSAxMjAwMCwgTUFYX1NQTiA9IDI1NjsKQEAgLTM3MSw3ICszNzcsNyBAQCBIdHRwQXV0aFJlc3Vs
dCBIdHRwQXV0aGVudGljYXRlKGNvbnN0IGNoYXIqIGNoYWxsZW5nZSwKICAgICAgIHJldHVybiBI
QVJfSUdOT1JFOwogICAgIH0KICNlbHNlCi0gICAgc3ByaW50Zm4oc3BuLCBNQVhfU1BOLCAiSFRU
UC8lcyIsIHNlcnZlci5Ub1N0cmluZygpLmNfc3RyKCkpOworICAgIHNucHJpbnRmKHNwbiwgTUFY
X1NQTiwgIkhUVFAvJXMiLCBzZXJ2ZXIuVG9TdHJpbmcoKS5jX3N0cigpKTsKICNlbmRpZgogCiAg
ICAgU2VjQnVmZmVyIG91dF9zZWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9odHRwY29tbW9uLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9odHRwY29tbW9uLmgKaW5kZXgg
NTgxYmQxZWU4YTg2YzYxMmNiNjJmNmFiMjM0MTUzYWQ0ZDJjODA4ZC4uZmJhZDI4MGUwMjUwYTBi
N2FkNTM1ZDkzODM4MTcyN2RkN2FjZDFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaHR0cGNvbW1vbi5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2h0dHBjb21tb24u
aApAQCAtMTEsMTQgKzExLDcgQEAKICNpZm5kZWYgUlRDX0JBU0VfSFRUUENPTU1PTl9IXwogI2Rl
ZmluZSBSVENfQkFTRV9IVFRQQ09NTU9OX0hfCiAKLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
aXBhZGRyZXNzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvaXBhZGRyZXNzLmNjCmluZGV4IGM1MmM5YTRhZGRkYWMzMGRjNGVkMDA5ZGZmYWUw
YWVjNTVlZGI2YjYuLjAyN2E3YjIxOWUwMmE5ZTZjNTM3MGJjNTA1ZjU5M2FkOGI0MGE0N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2lwYWRkcmVzcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9pcGFkZHJlc3MuY2MKQEAgLTExLDI0ICsxMSwxNyBAQAogI2lmIGRl
ZmluZWQoV0VCUlRDX1BPU0lYKQogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNpbmNsdWRlIDxz
eXMvc29ja2V0Lmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWZkZWYgT1BFTkJTRAogI2lu
Y2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KICNlbmRpZgogI2lmbmRlZiBfX25hdGl2ZV9jbGll
bnRfXwogI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KICNlbmRpZgotI2luY2x1ZGUgPGFycGEvaW5l
dC5oPgogI2luY2x1ZGUgPG5ldGRiLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKIAot
I2luY2x1ZGUgPHN0ZGlvLmg+Ci0KICNpbmNsdWRlICJydGNfYmFzZS9ieXRlb3JkZXIuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9pcGFkZHJlc3Mu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0
aGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKQEAgLTE2Miwx
MSArMTU1LDEwIEBAIHN0ZDo6c3RyaW5nIElQQWRkcmVzczo6VG9TZW5zaXRpdmVTdHJpbmcoKSBj
b25zdCB7CiAgICAgICBzdGQ6OnN0cmluZyByZXN1bHQ7CiAgICAgICByZXN1bHQucmVzaXplKElO
RVQ2X0FERFJTVFJMRU4pOwogICAgICAgaW42X2FkZHIgYWRkciA9IGlwdjZfYWRkcmVzcygpOwot
ICAgICAgc2l6ZV90IGxlbiA9Ci0gICAgICAgICAgcnRjOjpzcHJpbnRmbigmKHJlc3VsdFswXSks
IHJlc3VsdC5zaXplKCksICIleDoleDoleDp4Ong6eDp4OngiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgKGFkZHIuczZfYWRkclswXSA8PCA4KSArIGFkZHIuczZfYWRkclsxXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIChhZGRyLnM2X2FkZHJbMl0gPDwgOCkgKyBhZGRyLnM2X2FkZHJbM10s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAoYWRkci5zNl9hZGRyWzRdIDw8IDgpICsgYWRkci5z
Nl9hZGRyWzVdKTsKKyAgICAgIHNpemVfdCBsZW4gPSBzbnByaW50ZigmKHJlc3VsdFswXSksIHJl
c3VsdC5zaXplKCksICIleDoleDoleDp4Ong6eDp4OngiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChhZGRyLnM2X2FkZHJbMF0gPDwgOCkgKyBhZGRyLnM2X2FkZHJbMV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGFkZHIuczZfYWRkclsyXSA8PCA4KSArIGFkZHIuczZfYWRk
clszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkci5zNl9hZGRyWzRdIDw8IDgp
ICsgYWRkci5zNl9hZGRyWzVdKTsKICAgICAgIHJlc3VsdC5yZXNpemUobGVuKTsKICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uva2V5X2Rlcml2YXRpb24uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9rZXlfZGVyaXZhdGlvbi5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yODhlNDA3ZWJjNWE5NzQzMTBkODQwYmE2OWNmNDA1NzUyOTc4YzJjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uva2V5X2Rlcml2YXRpb24uY2MKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqICBD
b3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworI2luY2x1ZGUgInJ0Y19iYXNlL2tleV9kZXJpdmF0aW9uLmgiCisKKyNpbmNs
dWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsX2tl
eV9kZXJpdmF0aW9uX2hrZGYuaCIKKworbmFtZXNwYWNlIHJ0YyB7CisKK0tleURlcml2YXRpb246
OktleURlcml2YXRpb24oKSA9IGRlZmF1bHQ7CitLZXlEZXJpdmF0aW9uOjp+S2V5RGVyaXZhdGlv
bigpID0gZGVmYXVsdDsKKworLy8gc3RhdGljCitzdGQ6OnVuaXF1ZV9wdHI8S2V5RGVyaXZhdGlv
bj4gS2V5RGVyaXZhdGlvbjo6Q3JlYXRlKAorICAgIEtleURlcml2YXRpb25BbGdvcml0aG0ga2V5
X2Rlcml2YXRpb25fYWxnb3JpdGhtKSB7CisgIHN3aXRjaCAoa2V5X2Rlcml2YXRpb25fYWxnb3Jp
dGhtKSB7CisgICAgY2FzZSBLZXlEZXJpdmF0aW9uQWxnb3JpdGhtOjpIS0RGX1NIQTI1NjoKKyAg
ICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREY+KCk7
CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uva2V5X2Rlcml2YXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2tleV9kZXJpdmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEzMjlhZWI0Y2U0
YzlkOThlYWJlMTAwNjE2NzhiYzkxYjdiNmYzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2tleV9kZXJpdmF0aW9u
LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBSVENfQkFT
RV9LRVlfREVSSVZBVElPTl9IXworI2RlZmluZSBSVENfQkFTRV9LRVlfREVSSVZBVElPTl9IXwor
CisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgor
I2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorCituYW1lc3BhY2UgcnRj
IHsKKworLy8gRGVmaW5lcyB0aGUgc2V0IG9mIGtleSBkZXJpdmF0aW9uIGFsZ29yaXRobXMgdGhh
dCBhcmUgc3VwcG9ydGVkLiBJdCBpcyBpZGVhbAorLy8gdG8ga2VlcCB0aGlzIGxpc3QgYXMgc21h
bGwgYXMgcG9zc2libGUuCitlbnVtIGNsYXNzIEtleURlcml2YXRpb25BbGdvcml0aG0geworICAv
LyBUaGlzIGFsZ29yaXRobSBpcyBub3Qgc3VpdGFibGUgdG8gZ2VuZXJhdGUgYSBrZXkgZnJvbSBh
IHBhc3N3b3JkLiBQbGVhc2UKKyAgLy8gb25seSB1c2Ugd2l0aCBhIGNyeXB0b2dyYXBoaWNhbGx5
IHJhbmRvbSBtYXN0ZXIgc2VjcmV0LgorICBIS0RGX1NIQTI1NgorfTsKKworLy8gS2V5RGVyaXZh
dGlvbiBwcm92aWRlcyBhIGdlbmVyaWMgaW50ZXJmYWNlIGZvciBkZXJpdmluZyBrZXlzIGluIFdl
YlJUQy4gVGhpcworLy8gY2xhc3Mgc2hvdWxkIGJlIHVzZWQgb3ZlciBkaXJlY3RseSBhY2Nlc3Np
bmcgb3BlbnNzbCBvciBib3Jpbmdzc2wgcHJpbWl0aXZlcworLy8gc28gdGhhdCB3ZSBjYW4gbWFp
bnRhaW4gc2VwZXJhdGUgaW1wbGVtZW50YXRpb25zLgorLy8gRXhhbXBsZToKKy8vICAgYXV0byBr
ZCA9IEtleURlcml2YXRpb246OkNyZWF0ZShLZXlEZXJpdmF0aW9uQWxnb3JpdGhtOjpIREtGX1NI
QTUyNik7CisvLyAgIGlmIChrZCA9PSBudWxscHRyKSByZXR1cm47CisvLyAgIGF1dG8gZGVyaXZl
ZF9rZXlfb3IgPSBrZC0+RGVyaXZlS2V5KHNlY3JldCwgc2FsdCwgbGFiZWwpOworLy8gICBpZiAo
IWRlcml2ZWRfa2V5X29yLm9rKCkpIHJldHVybjsKKy8vICAgRG9Tb21ldGhpbmdXaXRoS2V5KGRl
cml2ZWRfa2V5X29yLnZhbHVlKCkpOworY2xhc3MgS2V5RGVyaXZhdGlvbiB7CisgcHVibGljOgor
ICBLZXlEZXJpdmF0aW9uKCk7CisgIHZpcnR1YWwgfktleURlcml2YXRpb24oKTsKKworICAvLyBE
ZXJpdmVzIGEgbmV3IGtleSBmcm9tIGV4aXN0aW5nIGtleSBtYXRlcmlhbC4KKyAgLy8gc2VjcmV0
IC0gVGhlIHJhbmRvbSBzZWNyZXQgdmFsdWUgeW91IHdpc2ggdG8gZGVyaXZlIGEga2V5IGZyb20u
CisgIC8vIHNhbHQgLSBPcHRpb25hbCBidXQgcmVjb21tZW5kZWQgKG5vbiBzZWNyZXQpIGNyeXB0
b2dyYXBoaWNhbGx5IHJhbmRvbS4KKyAgLy8gbGFiZWwgLSBBIG5vbiBzZWNyZXQgYnV0IHVuaXF1
ZSBsYWJlbCB2YWx1ZSB0byBkZXRlcm1pbmUgdGhlIGRlcml2YXRpb24uCisgIC8vIGRlcml2ZWRf
a2V5X2J5dGVfc2l6ZSAtIFRoaXMgbXVzdCBiZSBhdCBsZWFzdCAxMjggYml0cy4KKyAgLy8gcmV0
dXJuIC0gQW4gb3B0aW9uYWwgWmVyb09uRnJlZUJ1ZmZlciBjb250YWluaW5nIHRoZSBkZXJpdmVk
IGtleSBvcgorICAvLyBhYnNsOjpudWxsb3B0LiBOdWxsb3B0IGluZGljYXRlcyBhIGZhaWx1cmUg
aW4gZGVyaXZhdGlvbi4KKyAgdmlydHVhbCBhYnNsOjpvcHRpb25hbDxaZXJvT25GcmVlQnVmZmVy
PHVpbnQ4X3Q+PiBEZXJpdmVLZXkoCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90
PiBzZWNyZXQsCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBzYWx0LAorICAg
ICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gbGFiZWwsCisgICAgICBzaXplX3QgZGVy
aXZlZF9rZXlfYnl0ZV9zaXplKSA9IDA7CisKKyAgLy8gU3RhdGljIGZhY3RvcnkgdGhhdCB3aWxs
IHJldHVybiBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIGNhcGFibGUgb2YKKyAgLy8gaGFuZGxp
bmcgdGhlIGtleSBkZXJpdmF0aW9uIHdpdGggdGhlIHJlcXVlc3RlZCBhbGdvcml0aG0uIElmIG5v
CisgIC8vIGltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSBudWxscHRyIHdpbGwgYmUgcmV0dXJu
ZWQuCisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8S2V5RGVyaXZhdGlvbj4gQ3JlYXRlKAorICAg
ICAgS2V5RGVyaXZhdGlvbkFsZ29yaXRobSBrZXlfZGVyaXZhdGlvbl9hbGdvcml0aG0pOworCisg
cHJpdmF0ZToKKyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihLZXlEZXJpdmF0aW9uKTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAvLyBSVENfQkFTRV9LRVlfREVS
SVZBVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5jYwppbmRleCA5YzkwZDllYzE3OTc3
NDViOTFjNzM5Njk4NGVmYmNhOTA2NDczYjVhLi5jOTVhZDljNDg4YTA3ZDQxNWIwZTk4ZTVlZDVh
N2UyNWUxOTAwMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5jYwpAQCAtMTAsOCArMTAs
NiBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIKIAotI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ3V0aWxzLmgiCi0KIG5hbWVzcGFjZSBydGMgewogCiBMb2NhdGlvbjo6TG9jYXRp
b24oY29uc3QgY2hhciogZnVuY3Rpb25fbmFtZSwgY29uc3QgY2hhciogZmlsZV9hbmRfbGluZSkK
QEAgLTMxLDcgKzI5LDcgQEAgTG9jYXRpb24mIExvY2F0aW9uOjpvcGVyYXRvcj0oY29uc3QgTG9j
YXRpb24mIG90aGVyKSB7CiAKIHN0ZDo6c3RyaW5nIExvY2F0aW9uOjpUb1N0cmluZygpIGNvbnN0
IHsKICAgY2hhciBidWZbMjU2XTsKLSAgc3ByaW50Zm4oYnVmLCBzaXplb2YoYnVmKSwgIiVzQCVz
IiwgZnVuY3Rpb25fbmFtZV8sIGZpbGVfYW5kX2xpbmVfKTsKKyAgc25wcmludGYoYnVmLCBzaXpl
b2YoYnVmKSwgIiVzQCVzIiwgZnVuY3Rpb25fbmFtZV8sIGZpbGVfYW5kX2xpbmVfKTsKICAgcmV0
dXJuIGJ1ZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZy5oCmluZGV4IDFiZDBjNzIwNWU2OTI2
N2ExZDExNzM4MTdmZjM0MTllZTQ1MzA1YWMuLmM3ZDA4M2U0MmQzN2EzMTkxMjZhMmFkZjdlNjAz
N2I3YjBiNmQ4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmgKQEAgLTUxLDE2ICs1MSwxNSBA
QAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaWYgZGVmaW5lZChX
RUJSVENfTUFDKSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQotI2luY2x1ZGUgPENvcmVTZXJ2aWNl
cy9Db3JlU2VydmljZXMuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmlu
Z192aWV3LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9z
dHJpbmdfYnVpbGRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9pbmxpbmUuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKKworI2lmIGRlZmluZWQoV0VC
UlRDX01BQykgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nX21hYy5oIgorI2VuZGlmICAvLyBXRUJSVENfTUFDCiAKICNpZiAhZGVmaW5lZChOREVCVUcp
IHx8IGRlZmluZWQoRExPR19BTFdBWVNfT04pCiAjZGVmaW5lIFJUQ19ETE9HX0lTX09OIDEKQEAg
LTcwLDExICs2OSw2IEBACiAKIG5hbWVzcGFjZSBydGMgewogCi0jaWYgZGVmaW5lZChXRUJSVENf
TUFDKSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQotLy8gUmV0dXJucyBhIFVURjggZGVzY3JpcHRp
b24gZnJvbSBhbiBPUyBYIFN0YXR1cyBlcnJvci4KLXN0ZDo6c3RyaW5nIERlc2NyaXB0aW9uRnJv
bU9TU3RhdHVzKE9TU3RhdHVzIGVycik7Ci0jZW5kaWYKLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiAvLyBO
b3RlIHRoYXQgdGhlIG5vbi1zdGFuZGFyZCBMb2dnaW5nU2V2ZXJpdHkgYWxpYXNlcyBleGlzdCBi
ZWNhdXNlIHRoZXkgYXJlCkBAIC0xMjEsNiArMTE1LDggQEAgY2xhc3MgTG9nU2luayB7CiAgIHZp
cnR1YWwgdm9pZCBPbkxvZ01lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1zZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFnKTsKKyAgdmlydHVhbCB2b2lkIE9uTG9n
TWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkpOwogICB2aXJ0dWFsIHZvaWQgT25Mb2dN
ZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSA9IDA7CiB9OwogCkBAIC01MjMsMTAg
KzUxOSwxMCBAQCBjbGFzcyBMb2dNZXNzYWdlIHsKICAgICAgID8gc3RhdGljX2Nhc3Q8dm9pZD4o
MCkgICAgICAgICAgICAgICBcCiAgICAgICA6IHJ0Yzo6d2VicnRjX2xvZ2dpbmdfaW1wbDo6TG9n
TWVzc2FnZVZvaWRpZnkoKSYKIAotI2RlZmluZSBSVENfTE9HX0ZJTEVfTElORShzZXYsIGZpbGUs
IGxpbmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgcnRjOjp3ZWJy
dGNfbG9nZ2luZ19pbXBsOjpMb2dDYWxsKCkgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICBydGM6OndlYnJ0Y19sb2dnaW5nX2ltcGw6OkxvZ1N0cmVhbWVy
PD4oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIDw8IHJ0Yzo6
d2VicnRjX2xvZ2dpbmdfaW1wbDo6TG9nTWV0YWRhdGEoX19GSUxFX18sIF9fTElORV9fLCBzZXYp
CisjZGVmaW5lIFJUQ19MT0dfRklMRV9MSU5FKHNldiwgZmlsZSwgbGluZSkgICAgICBcCisgIHJ0
Yzo6d2VicnRjX2xvZ2dpbmdfaW1wbDo6TG9nQ2FsbCgpICYgICAgICAgICBcCisgICAgICBydGM6
OndlYnJ0Y19sb2dnaW5nX2ltcGw6OkxvZ1N0cmVhbWVyPD4oKSBcCisgICAgICAgICAgPDwgcnRj
Ojp3ZWJydGNfbG9nZ2luZ19pbXBsOjpMb2dNZXRhZGF0YShmaWxlLCBsaW5lLCBzZXYpCiAKICNk
ZWZpbmUgUlRDX0xPRyhzZXYpIFJUQ19MT0dfRklMRV9MSU5FKHJ0Yzo6c2V2LCBfX0ZJTEVfXywg
X19MSU5FX18pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfbWFjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX21hYy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2
NWRiNTYwYzE4NzlmMmI4ODAzNzczMzk0MTk4ODBjZjYxODdjNTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dn
aW5nX21hYy5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdl
YlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisjaWZuZGVmIFJU
Q19CQVNFX0xPR0dJTkdfTUFDX0hfCisjZGVmaW5lIFJUQ19CQVNFX0xPR0dJTkdfTUFDX0hfCisK
KyNpZiAhZGVmaW5lZChXRUJSVENfTUFDKSB8fCBkZWZpbmVkKFdFQlJUQ19JT1MpCisjZXJyb3Ig
Ik9ubHkgaW5jbHVkZSB0aGlzIGhlYWRlciBpbiBtYWNPUyBidWlsZHMiCisjZW5kaWYKKworI2lu
Y2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KKworI2luY2x1ZGUgPHN0cmluZz4K
KworbmFtZXNwYWNlIHJ0YyB7CisKKy8vIFJldHVybnMgYSBVVEY4IGRlc2NyaXB0aW9uIGZyb20g
YW4gT1MgWCBTdGF0dXMgZXJyb3IuCitzdGQ6OnN0cmluZyBEZXNjcmlwdGlvbkZyb21PU1N0YXR1
cyhPU1N0YXR1cyBlcnIpOworCit9ICAvLyBuYW1lc3BhY2UgcnRjCisKKyNlbmRpZiAgLy8gUlRD
X0JBU0VfTE9HR0lOR19NQUNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfbWFjLm1tIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ19tYWMubW0KaW5k
ZXggMzc4Y2ZiZmNiOWNkMTQ3NzAxMTgwYjMwYjA3Yjg1OTI5N2I1ZmI1Ny4uYmQ1ZjJiOWQzOGZi
ZjVlOGQ5MDA3NWJmYmM0OWE0MDAzNjQ0NGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ19tYWMubW0KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2lu
Z19tYWMubW0KQEAgLTgsMTUgKzgsMTUgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCi0jaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmdfbWFjLmgiCiAKICNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0KIG5hbWVzcGFjZSBydGMgewogc3Rk
OjpzdHJpbmcgRGVzY3JpcHRpb25Gcm9tT1NTdGF0dXMoT1NTdGF0dXMgZXJyKSB7CiAgIE5TRXJy
b3IqIGVycm9yID0KICAgICAgIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU09TU3RhdHVzRXJy
b3JEb21haW4gY29kZTplcnIgdXNlckluZm86bmlsXTsKICAgcmV0dXJuIGVycm9yLmRlc2NyaXB0
aW9uLlVURjhTdHJpbmc7CiB9CisKIH0gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9sb2dnaW5nX3VuaXR0ZXN0LmNjCmluZGV4IDZiMjI2MzkyM2ZhODUwMWI2N2IzYmRl
YWNjMDQ2NzdlMDRjNmRmMzYuLjRkZTFjZjJmZTRjYWFiM2U3ZWRkNDRlYjliZmQ0NDdhMDZkZmIw
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2xvZ2dpbmdfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ191bml0dGVzdC5jYwpAQCAtMjIx
LDcgKzIyMSw3IEBAIFRFU1QoTG9nVGVzdCwgU2luZ2xlU3RyZWFtKSB7CiAKICNpZiBHVEVTVF9I
QVNfREVBVEhfVEVTVCAmJiAhZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKIFRFU1QoTG9nVGVzdCwg
Q2hlY2tzKSB7Ci0gIEVYUEVDVF9ERUFUSChSVENfRkFUQUwoKSA8PCAibWVzc2FnZSIsCisgIEVY
UEVDVF9ERUFUSChGQVRBTCgpIDw8ICJtZXNzYWdlIiwKICAgICAgICAgICAgICAgICJcblxuI1xu
IgogICAgICAgICAgICAgICAgIiMgRmF0YWwgZXJyb3IgaW46IFxcUyssIGxpbmUgXFx3K1xuIgog
ICAgICAgICAgICAgICAgIiMgbGFzdCBzeXN0ZW0gZXJyb3I6IFxcdytcbiIKQEAgLTI5Miw3ICsy
OTIsNyBAQCBjbGFzcyBMb2dUaHJlYWQgewogICBzdGF0aWMgdm9pZCBUaHJlYWRFbnRyeSh2b2lk
KiBwKSB7IHN0YXRpY19jYXN0PExvZ1RocmVhZCo+KHApLT5SdW4oKTsgfQogCiAgIFBsYXRmb3Jt
VGhyZWFkIHRocmVhZF87Ci0gIEV2ZW50IGV2ZW50X3tmYWxzZSwgZmFsc2V9OworICBFdmVudCBl
dmVudF87CiB9OwogCiAvLyBFbnN1cmUgd2UgZG9uJ3QgY3Jhc2ggd2hlbiBhZGRpbmcvcmVtb3Zp
bmcgc3RyZWFtcyB3aGlsZSB0aHJlYWRzIGFyZSBnb2luZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ3NpbmtzLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nc2lu
a3MuY2MKaW5kZXggNjYyYjFmMjBkZTk3ODVjNzUzNjA4NDBhYTVlZThiMDljN2Q5ZTcxNy4uYzAx
YmFmYmRkMjI4MGY0NTk4OGIyOTI3Y2M3NWJjYjA0ZGE0Zjg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nc2lua3MuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
bG9nc2lua3MuY2MKQEAgLTEwLDEwICsxMCwxMiBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
c2lua3MuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNs
dWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9zdHJlYW0uaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ3NpbmtzLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dz
aW5rcy5oCmluZGV4IGNhZjRhNWY3MjhhMzc5NDUyNTBkMGY4OTI1NzI5MGI1Y2JjNTQ3OTcuLmQw
ODY3YTIyMDI0YmJkMTVlN2VkZGY4NDU1YzNjOTdkZDBmOTYxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ3NpbmtzLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
bG9nc2lua3MuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBSVENfQkFTRV9MT0dTSU5LU19I
XwogI2RlZmluZSBSVENfQkFTRV9MT0dTSU5LU19IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWRuc19yZXNwb25k
ZXJfaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9tZG5zX3Jlc3BvbmRlcl9pbnRlcmZhY2UuaAppbmRleCA5ZGJhZjU2YWQ4OGYx
MDU5YmYzZjNmMDA0OGFhMWMwYTYxNTZhODdiLi43MTkzOGIyNTc2ZDc5ZGQ4YTZjNzE3ZTZhMjA1
ZDQzNjVhYzIxN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZG5zX3Jlc3BvbmRlcl9pbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZG5zX3Jlc3Bv
bmRlcl9pbnRlcmZhY2UuaApAQCAtMTIsMzYgKzEyLDM1IEBACiAjZGVmaW5lIFJUQ19CQVNFX01E
TlNfUkVTUE9OREVSX0lOVEVSRkFDRV9IXwogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNs
dWRlIDxtYXA+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxz
dHJpbmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9pcGFkZHJlc3MuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zb2NrZXRhZGRyZXNzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBEZWZpbmVz
IGFuIG1ETlMgcmVzcG9uZGVyIHRoYXQgY2FuIGJlIHVzZWQgaW4gSUNFIGNhbmRpZGF0ZSBnYXRo
ZXJpbmcsIHdoZXJlCi0vLyB0aGUgbG9jYWwgSVAgYWRkcmVzc2VzIG9mIGhvc3QgY2FuZGlkYXRl
cyBhcmUgb2JmdXNjYXRlZCBieSBtRE5TIGhvc3RuYW1lcy4KLWNsYXNzIE1EbnNSZXNwb25kZXJJ
bnRlcmZhY2UgeworLy8gdGhlIGxvY2FsIElQIGFkZHJlc3NlcyBvZiBob3N0IGNhbmRpZGF0ZXMg
YXJlIHJlcGxhY2VkIGJ5IG1ETlMgaG9zdG5hbWVzLgorY2xhc3MgTWRuc1Jlc3BvbmRlckludGVy
ZmFjZSB7CiAgcHVibGljOgogICB1c2luZyBOYW1lQ3JlYXRlZENhbGxiYWNrID0KICAgICAgIHN0
ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBydGM6OklQQWRkcmVzcyYsIGNvbnN0IHN0ZDo6c3RyaW5n
Jik+OwogICB1c2luZyBOYW1lUmVtb3ZlZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKGJv
b2wpPjsKIAotICBNRG5zUmVzcG9uZGVySW50ZXJmYWNlKCkgPSBkZWZhdWx0OwotICB2aXJ0dWFs
IH5NRG5zUmVzcG9uZGVySW50ZXJmYWNlKCkgPSBkZWZhdWx0OworICBNZG5zUmVzcG9uZGVySW50
ZXJmYWNlKCkgPSBkZWZhdWx0OworICB2aXJ0dWFsIH5NZG5zUmVzcG9uZGVySW50ZXJmYWNlKCkg
PSBkZWZhdWx0OwogCi0gIC8vIEFzeW5jaHJvbm91c2x5IGNyZWF0ZXMgYSB0eXBlLTQgVVVJRCBo
b3N0bmFtZSBmb3IgYW4gSVAgYWRkcmVzcy4gVGhlCi0gIC8vIGNyZWF0ZWQgbmFtZSBzaG91bGQg
YmUgZ2l2ZW4gdG8gfGNhbGxiYWNrfCB3aXRoIHRoZSBhZGRyZXNzIHRoYXQgaXQKLSAgLy8gcmVw
cmVzZW50cy4KKyAgLy8gQXN5bmNocm9ub3VzbHkgY3JlYXRlcyBhbmQgcmV0dXJucyBhIG5ldyBu
YW1lIHZpYSB8Y2FsbGJhY2t8IGZvciB8YWRkcnwgaWYKKyAgLy8gdGhlcmUgaXMgbm8gbmFtZSBt
YXBwZWQgdG8gaXQgYnkgdGhpcyByZXNwb25kZXIsIGFuZCBpbml0aWFsaXplcyB0aGUKKyAgLy8g
cmVmZXJlbmNlIGNvdW50IG9mIHRoaXMgbmFtZSB0byBvbmUuIE90aGVyd2lzZSB0aGUgZXhpc3Rp
bmcgbmFtZSBtYXBwZWQgdG8KKyAgLy8gfGFkZHJ8IGlzIHJldHVybmVkIGFuZCBpdHMgcmVmZXJl
bmNlIGNvdW50IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4KICAgdmlydHVhbCB2b2lkIENyZWF0ZU5h
bWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiBhZGRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxsYmFjaykgPSAwOwot
ICAvLyBSZW1vdmVzIHRoZSBuYW1lIG1hcHBlZCB0byB0aGUgZ2l2ZW4gYWRkcmVzcyBpZiB0aGVy
ZSBpcyBzdWNoIGFuCi0gIC8vIG5hbWUtYWRkcmVzcyBtYXBwaW5nIHByZXZpb3VzbHkgY3JlYXRl
ZCB2aWEgQ3JlYXRlTmFtZUZvckFkZHJlc3MuIFRoZQotICAvLyByZXN1bHQgb2Ygd2hldGhlciBh
biBhc3NvY2lhdGVkIG5hbWUtYWRkcmVzcyBtYXBwaW5nIGlzIHJlbW92ZWQgc2hvdWxkIGJlCi0g
IC8vIGdpdmVuIHRvIHxjYWxsYmFja3wuCisgIC8vIERlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBj
b3VudCBvZiB0aGUgbWFwcGVkIG5hbWUgb2YgfGFkZHJ8LCBpZgorICAvLyB0aGVyZSBpcyBhIG1h
cCBjcmVhdGVkIHByZXZpb3VzbHkgdmlhIENyZWF0ZU5hbWVGb3JBZGRyZXNzOyBhc3luY2hyb25v
dXNseQorICAvLyByZW1vdmVzIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIHxhZGRyfCBhbmQgaXRz
IG1hcHBlZCBuYW1lLCBhbmQgcmV0dXJucworICAvLyB0cnVlIHZpYSB8Y2FsbGJhY2t8IGlmIHRo
ZSBkZWNyZW1lbnRlZCByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLgorICAvLyBPdGhlcndp
c2Ugbm8gb3BlcmF0aW9uIGlzIGRvbmUgYW5kIGZhbHNlIGlzIHJldHVybmVkIHZpYSB8Y2FsbGJh
Y2t8CisgIC8vIGFzeW5jaHJvbm91c2x5LgogICB2aXJ0dWFsIHZvaWQgUmVtb3ZlTmFtZUZvckFk
ZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOYW1lUmVtb3ZlZENhbGxiYWNrIGNhbGxiYWNrKSA9IDA7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbWVtb3J5L2FsaWduZWRfbWFsbG9jLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5L2FsaWduZWRfbWFsbG9jLmNjCmluZGV4IGEx
ZDU0YmRiNzg1YThkZmRhNWUzNDkzZDAyNmI5YWM0ZWQzOTIxMTkuLmM4OTNjOTZlZjJhZjA4ODNj
MDNmYTEyMGVmZjM4NWE1OGUzYWNiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeS9hbGlnbmVkX21hbGxvYy5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9t
ZW1vcnkvYWxpZ25lZF9tYWxsb2MuY2MKQEAgLTEwLDggKzEwLDggQEAKIAogI2luY2x1ZGUgInJ0
Y19iYXNlL21lbW9yeS9hbGlnbmVkX21hbGxvYy5oIgogCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0j
aW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIGZvciBmcmVlLCBtYWxs
b2MKKyNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIGZvciBtZW1jcHkKIAogI2lmZGVmIF9XSU4zMgog
I2luY2x1ZGUgPHdpbmRvd3MuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeV9zdHJlYW0uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZW1vcnlfc3RyZWFtLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU0MWRlMDcwYzcyODFjYjhmN2Y0OTk1NzZlNmM2ZGMxMDg3MTk2ZGUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9tZW1vcnlfc3RyZWFtLmNjCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogIENv
cHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KKyAqLworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVt
b3J5X3N0cmVhbS5oIgorCituYW1lc3BhY2UgcnRjIHsKKworU3RyZWFtU3RhdGUgTWVtb3J5U3Ry
ZWFtOjpHZXRTdGF0ZSgpIGNvbnN0IHsKKyAgcmV0dXJuIFNTX09QRU47Cit9CisKK1N0cmVhbVJl
c3VsdCBNZW1vcnlTdHJlYW06OlJlYWQodm9pZCogYnVmZmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCogYnl0ZXNfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50KiBlcnJvcikgeworICBpZiAoc2Vla19wb3NpdGlvbl8gPj0gZGF0YV9sZW5ndGhfKSB7Cisg
ICAgcmV0dXJuIFNSX0VPUzsKKyAgfQorICBzaXplX3QgYXZhaWxhYmxlID0gZGF0YV9sZW5ndGhf
IC0gc2Vla19wb3NpdGlvbl87CisgIGlmIChieXRlcyA+IGF2YWlsYWJsZSkgeworICAgIC8vIFJl
YWQgcGFydGlhbCBidWZmZXIKKyAgICBieXRlcyA9IGF2YWlsYWJsZTsKKyAgfQorICBtZW1jcHko
YnVmZmVyLCAmYnVmZmVyX1tzZWVrX3Bvc2l0aW9uX10sIGJ5dGVzKTsKKyAgc2Vla19wb3NpdGlv
bl8gKz0gYnl0ZXM7CisgIGlmIChieXRlc19yZWFkKSB7CisgICAgKmJ5dGVzX3JlYWQgPSBieXRl
czsKKyAgfQorICByZXR1cm4gU1JfU1VDQ0VTUzsKK30KKworU3RyZWFtUmVzdWx0IE1lbW9yeVN0
cmVhbTo6V3JpdGUoY29uc3Qgdm9pZCogYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90KiBieXRlc193cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50KiBlcnJvcikgeworICBzaXplX3QgYXZhaWxhYmxlID0gYnVmZmVyX2xlbmd0aF8gLSBzZWVr
X3Bvc2l0aW9uXzsKKyAgaWYgKDAgPT0gYXZhaWxhYmxlKSB7CisgICAgLy8gSW5jcmVhc2UgYnVm
ZmVyIHNpemUgdG8gdGhlIGxhcmdlciBvZjoKKyAgICAvLyBhKSBuZXcgcG9zaXRpb24gcm91bmRl
ZCB1cCB0byBuZXh0IDI1NiBieXRlcworICAgIC8vIGIpIGRvdWJsZSB0aGUgcHJldmlvdXMgbGVu
Z3RoCisgICAgc2l6ZV90IG5ld19idWZmZXJfbGVuZ3RoID0KKyAgICAgICAgc3RkOjptYXgoKChz
ZWVrX3Bvc2l0aW9uXyArIGJ5dGVzKSB8IDB4RkYpICsgMSwgYnVmZmVyX2xlbmd0aF8gKiAyKTsK
KyAgICBTdHJlYW1SZXN1bHQgcmVzdWx0ID0gRG9SZXNlcnZlKG5ld19idWZmZXJfbGVuZ3RoLCBl
cnJvcik7CisgICAgaWYgKFNSX1NVQ0NFU1MgIT0gcmVzdWx0KSB7CisgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICBSVENfRENIRUNLKGJ1ZmZlcl9sZW5ndGhfID49IG5ld19idWZmZXJf
bGVuZ3RoKTsKKyAgICBhdmFpbGFibGUgPSBidWZmZXJfbGVuZ3RoXyAtIHNlZWtfcG9zaXRpb25f
OworICB9CisKKyAgaWYgKGJ5dGVzID4gYXZhaWxhYmxlKSB7CisgICAgYnl0ZXMgPSBhdmFpbGFi
bGU7CisgIH0KKyAgbWVtY3B5KCZidWZmZXJfW3NlZWtfcG9zaXRpb25fXSwgYnVmZmVyLCBieXRl
cyk7CisgIHNlZWtfcG9zaXRpb25fICs9IGJ5dGVzOworICBpZiAoZGF0YV9sZW5ndGhfIDwgc2Vl
a19wb3NpdGlvbl8pIHsKKyAgICBkYXRhX2xlbmd0aF8gPSBzZWVrX3Bvc2l0aW9uXzsKKyAgfQor
ICBpZiAoYnl0ZXNfd3JpdHRlbikgeworICAgICpieXRlc193cml0dGVuID0gYnl0ZXM7CisgIH0K
KyAgcmV0dXJuIFNSX1NVQ0NFU1M7Cit9CisKK3ZvaWQgTWVtb3J5U3RyZWFtOjpDbG9zZSgpIHsK
KyAgLy8gbm90aGluZyB0byBkbworfQorCitib29sIE1lbW9yeVN0cmVhbTo6U2V0UG9zaXRpb24o
c2l6ZV90IHBvc2l0aW9uKSB7CisgIGlmIChwb3NpdGlvbiA+IGRhdGFfbGVuZ3RoXykKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIHNlZWtfcG9zaXRpb25fID0gcG9zaXRpb247CisgIHJldHVybiB0cnVl
OworfQorCitib29sIE1lbW9yeVN0cmVhbTo6R2V0UG9zaXRpb24oc2l6ZV90KiBwb3NpdGlvbikg
Y29uc3QgeworICBpZiAocG9zaXRpb24pCisgICAgKnBvc2l0aW9uID0gc2Vla19wb3NpdGlvbl87
CisgIHJldHVybiB0cnVlOworfQorCitib29sIE1lbW9yeVN0cmVhbTo6R2V0U2l6ZShzaXplX3Qq
IHNpemUpIGNvbnN0IHsKKyAgaWYgKHNpemUpCisgICAgKnNpemUgPSBkYXRhX2xlbmd0aF87Cisg
IHJldHVybiB0cnVlOworfQorCitib29sIE1lbW9yeVN0cmVhbTo6UmVzZXJ2ZVNpemUoc2l6ZV90
IHNpemUpIHsKKyAgcmV0dXJuIChTUl9TVUNDRVNTID09IERvUmVzZXJ2ZShzaXplLCBudWxscHRy
KSk7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworTWVtb3J5U3RyZWFtOjpNZW1vcnlT
dHJlYW0oKSB7fQorCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShjb25zdCBjaGFyKiBkYXRh
KSB7CisgIFNldERhdGEoZGF0YSwgc3RybGVuKGRhdGEpKTsKK30KKworTWVtb3J5U3RyZWFtOjpN
ZW1vcnlTdHJlYW0oY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeworICBTZXREYXRh
KGRhdGEsIGxlbmd0aCk7Cit9CisKK01lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpIHsKKyAg
ZGVsZXRlW10gYnVmZmVyXzsKK30KKwordm9pZCBNZW1vcnlTdHJlYW06OlNldERhdGEoY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeworICBkYXRhX2xlbmd0aF8gPSBidWZmZXJfbGVu
Z3RoXyA9IGxlbmd0aDsKKyAgZGVsZXRlW10gYnVmZmVyXzsKKyAgYnVmZmVyXyA9IG5ldyBjaGFy
W2J1ZmZlcl9sZW5ndGhfXTsKKyAgbWVtY3B5KGJ1ZmZlcl8sIGRhdGEsIGRhdGFfbGVuZ3RoXyk7
CisgIHNlZWtfcG9zaXRpb25fID0gMDsKK30KKworU3RyZWFtUmVzdWx0IE1lbW9yeVN0cmVhbTo6
RG9SZXNlcnZlKHNpemVfdCBzaXplLCBpbnQqIGVycm9yKSB7CisgIGlmIChidWZmZXJfbGVuZ3Ro
XyA+PSBzaXplKQorICAgIHJldHVybiBTUl9TVUNDRVNTOworCisgIGlmIChjaGFyKiBuZXdfYnVm
ZmVyID0gbmV3IGNoYXJbc2l6ZV0pIHsKKyAgICBtZW1jcHkobmV3X2J1ZmZlciwgYnVmZmVyXywg
ZGF0YV9sZW5ndGhfKTsKKyAgICBkZWxldGVbXSBidWZmZXJfOworICAgIGJ1ZmZlcl8gPSBuZXdf
YnVmZmVyOworICAgIGJ1ZmZlcl9sZW5ndGhfID0gc2l6ZTsKKyAgICByZXR1cm4gU1JfU1VDQ0VT
UzsKKyAgfQorCisgIGlmIChlcnJvcikgeworICAgICplcnJvciA9IEVOT01FTTsKKyAgfQorICBy
ZXR1cm4gU1JfRVJST1I7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeV9z
dHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL21lbW9yeV9zdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzZmNzFiMzRjMDEwYjIyNjNlNDc4MDI5
MzI5YjFlY2ZkMjcwZDcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5X3N0cmVhbS5oCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfTUVNT1JZX1NUUkVB
TV9IXworI2RlZmluZSBSVENfQkFTRV9NRU1PUllfU1RSRUFNX0hfCisKKyNpbmNsdWRlICJydGNf
YmFzZS9zdHJlYW0uaCIKKworbmFtZXNwYWNlIHJ0YyB7CisKKy8vIE1lbW9yeVN0cmVhbSBkeW5h
bWljYWxseSByZXNpemVzIHRvIGFjY29tb2RhdGUgd3JpdHRlbiBkYXRhLgorCitjbGFzcyBNZW1v
cnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIE1l
bW9yeVN0cmVhbSgpOworICBleHBsaWNpdCBNZW1vcnlTdHJlYW0oY29uc3QgY2hhciogZGF0YSk7
ICAvLyBDYWxscyBTZXREYXRhKGRhdGEsIHN0cmxlbihkYXRhKSkKKyAgTWVtb3J5U3RyZWFtKGNv
bnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpOyAgLy8gQ2FsbHMgU2V0RGF0YShkYXRhLCBs
ZW5ndGgpCisgIH5NZW1vcnlTdHJlYW0oKSBvdmVycmlkZTsKKworICBTdHJlYW1TdGF0ZSBHZXRT
dGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICBTdHJlYW1SZXN1bHQgUmVhZCh2b2lkKiBidWZmZXIs
CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlcywKKyAgICAgICAgICAgICAgICAgICAg
c2l6ZV90KiBieXRlc19yZWFkLAorICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVy
cmlkZTsKKyAgU3RyZWFtUmVzdWx0IFdyaXRlKGNvbnN0IHZvaWQqIGJ1ZmZlciwKKyAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCog
Ynl0ZXNfd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgIGludCogZXJyb3IpIG92ZXJyaWRl
OworICB2b2lkIENsb3NlKCkgb3ZlcnJpZGU7CisgIGJvb2wgU2V0UG9zaXRpb24oc2l6ZV90IHBv
c2l0aW9uKSBvdmVycmlkZTsKKyAgYm9vbCBHZXRQb3NpdGlvbihzaXplX3QqIHBvc2l0aW9uKSBj
b25zdCBvdmVycmlkZTsKKyAgYm9vbCBHZXRTaXplKHNpemVfdCogc2l6ZSkgY29uc3Qgb3ZlcnJp
ZGU7CisgIGJvb2wgUmVzZXJ2ZVNpemUoc2l6ZV90IHNpemUpIG92ZXJyaWRlOworCisgIGNoYXIq
IEdldEJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlcl87IH0KKyAgY29uc3QgY2hhciogR2V0QnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gYnVmZmVyXzsgfQorCisgIHZvaWQgU2V0RGF0YShjb25zdCB2b2lk
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKworIHByaXZhdGU6CisgIFN0cmVhbVJlc3VsdCBEb1Jl
c2VydmUoc2l6ZV90IHNpemUsIGludCogZXJyb3IpOworCisgIC8vIEludmFyaWFudDogMCA8PSBz
ZWVrX3Bvc2l0aW9uIDw9IGRhdGFfbGVuZ3RoXyA8PSBidWZmZXJfbGVuZ3RoXworICBjaGFyKiBi
dWZmZXJfID0gbnVsbHB0cjsKKyAgc2l6ZV90IGJ1ZmZlcl9sZW5ndGhfID0gMDsKKyAgc2l6ZV90
IGRhdGFfbGVuZ3RoXyA9IDA7CisgIHNpemVfdCBzZWVrX3Bvc2l0aW9uXyA9IDA7Cit9OworCit9
ICAvLyBuYW1lc3BhY2UgcnRjCisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfTUVNT1JZX1NUUkVBTV9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvbWVtb3J5X3VzYWdlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5X3VzYWdlLmNjCmluZGV4IGE3MGM1NDc1M2ZjNGFm
N2M4NTc0MzVjNDhkMmE3NGViMWEyNDRiZjUuLjljZDM2ZDM3MjA5OWFhNDk3YjBiNDNhYmM4NjZl
YmJlMjNjYTY0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeV91c2FnZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZW1vcnlfdXNhZ2UuY2MKQEAgLTYx
LDYgKzYxLDkgQEAgaW50NjRfdCBHZXRQcm9jZXNzUmVzaWRlbnRTaXplQnl0ZXMoKSB7CiAgICAg
cmV0dXJuIC0xOwogICB9CiAgIHJldHVybiBwbWMuV29ya2luZ1NldFNpemU7CisjZWxpZiBkZWZp
bmVkKFdFQlJUQ19GVUNIU0lBKQorICBSVENfTE9HX0VSUihMU19FUlJPUikgPDwgIkdldFByb2Nl
c3NSZXNpZGVudFNpemVCeXRlcygpIG5vdCBpbXBsZW1lbnRlZCI7CisgIHJldHVybiAwOwogI2Vs
c2UKICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KICAgc3RhdGljX2Fzc2VydChmYWxzZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL21lc3NhZ2VkaWdlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmNjCmluZGV4IDljMTBiY2Q0ODZhNzYxYmJl
ZDZkZmEzYTM5YjZkYmE4MGRhNDRmODkuLjVhMGQxNmE5YTA0YjY3MmVjNjljZmY3N2ZjOTgyODc0
NTA2NzdhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL21lc3NhZ2VkaWdlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5jYwpAQCAtMTAs
OSArMTAsOSBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogCi0jaW5j
bHVkZSA8bWVtb3J5PgotCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4K
KyNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsZGlnZXN0Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlZGlnZXN0
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9t
ZXNzYWdlZGlnZXN0LmgKaW5kZXggZmM4MjA4ODU0MzZmOGNlNzFkNDVmNmNiMjE1M2E3ZWY2MTcz
YjM5OC4uNzU3ZjkxNDg3NmIwN2U0MTMwNzgxZThlNGJjMTdmYTVmYWE5N2Y5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVz
c2FnZWRpZ2VzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBS
VENfQkFTRV9NRVNTQUdFRElHRVNUX0hfCiAjZGVmaW5lIFJUQ19CQVNFX01FU1NBR0VESUdFU1Rf
SF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAogbmFtZXNwYWNl
IHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZWhhbmRsZXIuaAppbmRleCBkZjJkMWFk
YThkZGNlY2M0NDkzZTViYTI0NWE4NzQyNzBlYjAzYWY5Li4wYzQwODUzZTIxNDg1NWM0NjQ3OGM1
ZjdhOTBlZmYxNDIyNjRjNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VoYW5kbGVy
LmgKQEAgLTExLDcgKzExLDYgQEAKICNpZm5kZWYgUlRDX0JBU0VfTUVTU0FHRUhBTkRMRVJfSF8K
ICNkZWZpbmUgUlRDX0JBU0VfTUVTU0FHRUhBTkRMRVJfSF8KIAotI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdp
Yy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmNjCmluZGV4IGE1NjFhZjQyZWI4
MDg0YTc0YTM5YmViYzlhNDQ4ODc3YjYyMzNkOGYuLjIwNDk1MmE3ZTJhYmZiNDIzMzg4MzRlMGVj
OTM0YzRlYmNmZTVkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlcXVldWUuY2MKQEAg
LTgsMTMgKzgsMTUgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNs
dWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2F0
b21pY29wcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90
cmFjZV9ldmVudC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKQEAgLTM0OCw4ICszNTAsMTAgQEAgdm9p
ZCBNZXNzYWdlUXVldWU6OlBvc3QoY29uc3QgTG9jYXRpb24mIHBvc3RlZF9mcm9tLAogICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBN
ZXNzYWdlRGF0YSogcGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRpbWVfc2Vu
c2l0aXZlKSB7Ci0gIGlmIChJc1F1aXR0aW5nKCkpCisgIGlmIChJc1F1aXR0aW5nKCkpIHsKKyAg
ICBkZWxldGUgcGRhdGE7CiAgICAgcmV0dXJuOworICB9CiAKICAgLy8gS2VlcCB0aHJlYWQgc2Fm
ZQogICAvLyBBZGQgdGhlIG1lc3NhZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUKQEAgLTQwNSw2
ICs0MDksNyBAQCB2b2lkIE1lc3NhZ2VRdWV1ZTo6RG9EZWxheVBvc3QoY29uc3QgTG9jYXRpb24m
IHBvc3RlZF9mcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VEYXRhKiBwZGF0YSkgewog
ICBpZiAoSXNRdWl0dGluZygpKSB7CisgICAgZGVsZXRlIHBkYXRhOwogICAgIHJldHVybjsKICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9tZXNzYWdlcXVldWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oCmluZGV4IGU3ZTQ3OTI4NWQyMGM4
MzM5YTYyZWU2M2VhZjNhYTUwZDA5OWUwMmUuLmMxYjliNWE5MTZhODk1YWMwNmYyYmRlYjdiNTk5
Y2FjNjNkZTc4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oCkBAIC0xNyw3
ICsxNyw2IEBACiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
cXVldWU+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCkBAIC0yOCw3ICsyNyw2IEBACiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc29ja2V0c2VydmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFy
dHkvc2lnc2xvdC9zaWdzbG90LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRp
b25zLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKIG5hbWVzcGFjZSBydGMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuY2MKaW5kZXggODExOTM3NjFhNjNjMDU1Yzcy
NjkxYTkxZGZjNjNjMDMzMzg5ZTEwZi4uYjAwNWVjYWU3YTBkMWE1YmY2YTBhNmE0NTgyZDEwYTFj
NzhkOWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbmF0c2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25hdHNlcnZlci5jYwpAQCAtMTU4LDcgKzE1OCw3
IEBAIHZvaWQgTkFUU2VydmVyOjpPbkludGVybmFsVURQUGFja2V0KEFzeW5jUGFja2V0U29ja2V0
KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3Mm
IGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRU
aW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAgLy8gUmVhZCB0aGUgaW50
ZW5kZWQgZGVzdGluYXRpb24gZnJvbSB0aGUgd2lyZS4KICAgU29ja2V0QWRkcmVzcyBkZXN0X2Fk
ZHI7CiAgIHNpemVfdCBsZW5ndGggPSBVbnBhY2tBZGRyZXNzRnJvbU5BVChidWYsIHNpemUsICZk
ZXN0X2FkZHIpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgTkFUU2VydmVyOjpPbkV4dGVybmFs
VURQUGFja2V0KEFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tl
dF90aW1lX3VzICovKSB7CiAgIFNvY2tldEFkZHJlc3MgbG9jYWxfYWRkciA9IHNvY2tldC0+R2V0
TG9jYWxBZGRyZXNzKCk7CiAKICAgLy8gRmluZCB0aGUgdHJhbnNsYXRpb24gZm9yIHRoaXMgYWRk
cmVzc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbmF0c2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuaAppbmRleCBmNGNhYmNmMGQ5YjdlMTMw
YjVjOGQyOTlhOTVjNDhiODkxMTBkZTY0Li5kMTZiNTM3MGYwNTA3YzZjODRlZTg4ODEzNTM5Y2Rl
OWJlZmM2YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuaApAQCAtODEsMTIgKzgxLDEy
IEBAIGNsYXNzIE5BVFNlcnZlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFNvY2tldEFkZHJlc3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQ
YWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQgT25FeHRlcm5hbFVEUFBhY2tldChB
c3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRk
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90
aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90
aW1lX3VzKTsKIAogIHByaXZhdGU6CiAgIHR5cGVkZWYgc3RkOjpzZXQ8U29ja2V0QWRkcmVzcywg
QWRkckNtcD4gQWRkcmVzc1NldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldGhlbHBlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVyLmgKaW5kZXggZTg2
ZDEyNmNiZjQ1YzZmNzllYTIwMTUxNTUwMTU4OGQxYTU4M2RlYi4uZjk1NjEzODBmYjdkMjMwMzJh
YWU5ZjZiMDZjZTkyMTkzM2MwZWUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVyLmgKQEAg
LTEwLDcgKzEwLDYgQEAKICNpZm5kZWYgUlRDX0JBU0VfTkVUSEVMUEVSX0hfCiAjZGVmaW5lIFJU
Q19CQVNFX05FVEhFTFBFUl9IXwogCi0jaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxzdHJp
bmc+CiAKIC8vIFRoaXMgaGVhZGVyIGNvbnRhaW5zIGhlbHBlciBmdW5jdGlvbnMgYW5kIGNvbnN0
YW50cyB1c2VkIGJ5IGRpZmZlcmVudCB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVycy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldGhlbHBlcnMu
Y2MKaW5kZXggYjEyMjFjM2QwMDE0ZGI2MzQ0MThiYmRiZmIxZDdlNjU4NzhjZTg1Yi4uODFjZDFh
ZmNlZjRhMDY5ZTZhNzZhMDc2ZGEyMGQxY2UxMDcxYjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVycy5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9u
ZXRoZWxwZXJzLmNjCkBAIC0yNSwxMCArMjUsOSBAQAogI2VuZGlmCiAjZW5kaWYgIC8vIGRlZmlu
ZWQoV0VCUlRDX1BPU0lYKSAmJiAhZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykKIAotI2luY2x1
ZGUgInJ0Y19iYXNlL2J5dGVvcmRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zaWduYWx0
aHJlYWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3Qu
aCIgIC8vIGZvciBzaWduYWxfd2l0aF90aHJlYWQuLi4KIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL25ldGhlbHBlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL25ldGhlbHBlcnMuaAppbmRleCBmOWQxODhmNjFkMDlhNzc4MjUxMzczYzcz
OGRhZTdlODY5MzI0YTFlLi4xMzhmOTU4M2NjY2ExYWNhOGE4MDhmZGFkYzQxMmM4ZmI0YTgwZmMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9uZXRoZWxwZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVycy5oCkBAIC0xMiwxOCArMTIsMTcgQEAKICNk
ZWZpbmUgUlRDX0JBU0VfTkVUSEVMUEVSU19IXwogCiAjaWYgZGVmaW5lZChXRUJSVENfUE9TSVgp
Ci0jaW5jbHVkZSA8bmV0ZGIuaD4KLSNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzeXMv
c29ja2V0Lmg+CiAjZWxpZiBXRUJSVENfV0lOCiAjaW5jbHVkZSA8d2luc29jazIuaD4gIC8vIE5P
TElOVAogI2VuZGlmCiAKLSNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2FzeW5jcmVzb2x2ZXJpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9pcGFkZHJlc3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zaWduYWx0aHJlYWQuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhp
cmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9u
ZXR3b3JrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbmV0d29yay5jYwppbmRleCA2Nzg4OGVkZTgzNDIzMTBhMDcwNmNmMTNhZjgyNGFlOWI1
ZjMyOTkyLi41YzdiMDE5ZDY2YzJmZGQzMjU1ZDUyMGNlMzIwM2Y3Yzk2YjkxYmM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9u
ZXR3b3JrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL25ldHdvcmsuY2MKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29ya21vbml0b3IuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9zb2NrZXQuaCIgIC8vIGluY2x1ZGVzIHNvbWV0aGluZyB0aGF0IG1ha2Vz
IHdpbmRvd3MgaGFwcHkKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmlu
Z19idWlsZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKQEAgLTI2MCw3
ICsyNTksNyBAQCBib29sIE5ldHdvcmtNYW5hZ2VyOjpHZXREZWZhdWx0TG9jYWxBZGRyZXNzKGlu
dCBmYW1pbHksIElQQWRkcmVzcyogYWRkcikgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAK
LXdlYnJ0Yzo6TURuc1Jlc3BvbmRlckludGVyZmFjZSogTmV0d29ya01hbmFnZXI6OkdldE1EbnNS
ZXNwb25kZXIoKSBjb25zdCB7Cit3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UqIE5ldHdv
cmtNYW5hZ2VyOjpHZXRNZG5zUmVzcG9uZGVyKCkgY29uc3QgewogICByZXR1cm4gbnVsbHB0cjsK
IH0KIApAQCAtMjg2LDcgKzI4NSw3IEBAIHZvaWQgTmV0d29ya01hbmFnZXJCYXNlOjpHZXRBbnlB
ZGRyZXNzTmV0d29ya3MoTmV0d29ya0xpc3QqIG5ldHdvcmtzKSB7CiAgICAgICAgIG5ldyBydGM6
Ok5ldHdvcmsoImFueSIsICJhbnkiLCBpcHY0X2FueV9hZGRyZXNzLCAwLCBBREFQVEVSX1RZUEVf
QU5ZKSk7CiAgICAgaXB2NF9hbnlfYWRkcmVzc19uZXR3b3JrXy0+c2V0X2RlZmF1bHRfbG9jYWxf
YWRkcmVzc19wcm92aWRlcih0aGlzKTsKICAgICBpcHY0X2FueV9hZGRyZXNzX25ldHdvcmtfLT5B
ZGRJUChpcHY0X2FueV9hZGRyZXNzKTsKLSAgICBpcHY0X2FueV9hZGRyZXNzX25ldHdvcmtfLT5T
ZXRNRG5zUmVzcG9uZGVyKEdldE1EbnNSZXNwb25kZXIoKSk7CisgICAgaXB2NF9hbnlfYWRkcmVz
c19uZXR3b3JrXy0+U2V0TWRuc1Jlc3BvbmRlcihHZXRNZG5zUmVzcG9uZGVyKCkpOwogICB9CiAg
IG5ldHdvcmtzLT5wdXNoX2JhY2soaXB2NF9hbnlfYWRkcmVzc19uZXR3b3JrXy5nZXQoKSk7CiAK
QEAgLTI5Nyw3ICsyOTYsNyBAQCB2b2lkIE5ldHdvcmtNYW5hZ2VyQmFzZTo6R2V0QW55QWRkcmVz
c05ldHdvcmtzKE5ldHdvcmtMaXN0KiBuZXR3b3JrcykgewogICAgICAgICAgICJhbnkiLCAiYW55
IiwgaXB2Nl9hbnlfYWRkcmVzcywgMCwgQURBUFRFUl9UWVBFX0FOWSkpOwogICAgICAgaXB2Nl9h
bnlfYWRkcmVzc19uZXR3b3JrXy0+c2V0X2RlZmF1bHRfbG9jYWxfYWRkcmVzc19wcm92aWRlcih0
aGlzKTsKICAgICAgIGlwdjZfYW55X2FkZHJlc3NfbmV0d29ya18tPkFkZElQKGlwdjZfYW55X2Fk
ZHJlc3MpOwotICAgICAgaXB2Nl9hbnlfYWRkcmVzc19uZXR3b3JrXy0+U2V0TURuc1Jlc3BvbmRl
cihHZXRNRG5zUmVzcG9uZGVyKCkpOworICAgICAgaXB2Nl9hbnlfYWRkcmVzc19uZXR3b3JrXy0+
U2V0TWRuc1Jlc3BvbmRlcihHZXRNZG5zUmVzcG9uZGVyKCkpOwogICAgIH0KICAgICBuZXR3b3Jr
cy0+cHVzaF9iYWNrKGlwdjZfYW55X2FkZHJlc3NfbmV0d29ya18uZ2V0KCkpOwogICB9CkBAIC0z
ODcsNyArMzg2LDcgQEAgdm9pZCBOZXR3b3JrTWFuYWdlckJhc2U6Ok1lcmdlTmV0d29ya0xpc3Qo
Y29uc3QgTmV0d29ya0xpc3QmIG5ld19uZXR3b3JrcywKICAgICAgICAgZGVsZXRlIG5ldDsKICAg
ICAgIH0KICAgICB9Ci0gICAgbmV0d29ya3NfbWFwX1trZXldLT5TZXRNRG5zUmVzcG9uZGVyKEdl
dE1EbnNSZXNwb25kZXIoKSk7CisgICAgbmV0d29ya3NfbWFwX1trZXldLT5TZXRNZG5zUmVzcG9u
ZGVyKEdldE1kbnNSZXNwb25kZXIoKSk7CiAgIH0KICAgLy8gSXQgbWF5IHN0aWxsIGhhcHBlbiB0
aGF0IHRoZSBtZXJnZWQgbGlzdCBpcyBhIHN1YnNldCBvZiB8bmV0d29ya3NffC4KICAgLy8gVG8g
ZGV0ZWN0IHRoaXMgY2hhbmdlLCB3ZSBjb21wYXJlIHRoZWlyIHNpemVzLgpAQCAtNzc1LDI2ICs3
NzQsMjggQEAgYm9vbCBCYXNpY05ldHdvcmtNYW5hZ2VyOjpDcmVhdGVOZXR3b3Jrcyhib29sIGlu
Y2x1ZGVfaWdub3JlZCwKIAogI2lmIGRlZmluZWQoV0VCUlRDX0xJTlVYKQogYm9vbCBJc0RlZmF1
bHRSb3V0ZShjb25zdCBzdGQ6OnN0cmluZyYgbmV0d29ya19uYW1lKSB7Ci0gIEZpbGVTdHJlYW0g
ZnM7Ci0gIGlmICghZnMuT3BlbigiL3Byb2MvbmV0L3JvdXRlIiwgInIiLCBudWxscHRyKSkgewor
ICBGSUxFKiBmID0gZm9wZW4oIi9wcm9jL25ldC9yb3V0ZSIsICJyIik7CisgIGlmICghZikgewog
ICAgIFJUQ19MT0coTFNfV0FSTklORykKICAgICAgICAgPDwgIkNvdWxkbid0IHJlYWQgL3Byb2Mv
bmV0L3JvdXRlLCBza2lwcGluZyBkZWZhdWx0ICIKICAgICAgICAgPDwgInJvdXRlIGNoZWNrIChh
c3N1bWluZyBldmVyeXRoaW5nIGlzIGEgZGVmYXVsdCByb3V0ZSkuIjsKICAgICByZXR1cm4gdHJ1
ZTsKLSAgfSBlbHNlIHsKLSAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgIHdoaWxlIChmcy5SZWFk
TGluZSgmbGluZSkgPT0gU1JfU1VDQ0VTUykgewotICAgICAgY2hhciBpZmFjZV9uYW1lWzI1Nl07
Ci0gICAgICB1bnNpZ25lZCBpbnQgaWZhY2VfaXAsIGlmYWNlX2d3LCBpZmFjZV9tYXNrLCBpZmFj
ZV9mbGFnczsKLSAgICAgIGlmIChzc2NhbmYobGluZS5jX3N0cigpLCAiJTI1NXMgJThYICU4WCAl
NFggJSpkICUqdSAlKmQgJThYIiwgaWZhY2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgJmlmYWNl
X2lwLCAmaWZhY2VfZ3csICZpZmFjZV9mbGFncywgJmlmYWNlX21hc2spID09IDUgJiYKLSAgICAg
ICAgICBuZXR3b3JrX25hbWUgPT0gaWZhY2VfbmFtZSAmJiBpZmFjZV9tYXNrID09IDAgJiYKLSAg
ICAgICAgICAoaWZhY2VfZmxhZ3MgJiAoUlRGX1VQIHwgUlRGX0hPU1QpKSA9PSBSVEZfVVApIHsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9CisgIH0KKyAgYm9vbCBpc19kZWZhdWx0X3Jv
dXRlID0gZmFsc2U7CisgIGNoYXIgbGluZVs1MDBdOworICB3aGlsZSAoZmdldHMobGluZSwgc2l6
ZW9mKGxpbmUpLCBmKSkgeworICAgIGNoYXIgaWZhY2VfbmFtZVsyNTZdOworICAgIHVuc2lnbmVk
IGludCBpZmFjZV9pcCwgaWZhY2VfZ3csIGlmYWNlX21hc2ssIGlmYWNlX2ZsYWdzOworICAgIGlm
IChzc2NhbmYobGluZSwgIiUyNTVzICU4WCAlOFggJTRYICUqZCAlKnUgJSpkICU4WCIsIGlmYWNl
X25hbWUsICZpZmFjZV9pcCwKKyAgICAgICAgICAgICAgICZpZmFjZV9ndywgJmlmYWNlX2ZsYWdz
LCAmaWZhY2VfbWFzaykgPT0gNSAmJgorICAgICAgICBuZXR3b3JrX25hbWUgPT0gaWZhY2VfbmFt
ZSAmJiBpZmFjZV9tYXNrID09IDAgJiYKKyAgICAgICAgKGlmYWNlX2ZsYWdzICYgKFJURl9VUCB8
IFJURl9IT1NUKSkgPT0gUlRGX1VQKSB7CisgICAgICBpc19kZWZhdWx0X3JvdXRlID0gdHJ1ZTsK
KyAgICAgIGJyZWFrOwogICAgIH0KICAgfQotICByZXR1cm4gZmFsc2U7CisgIGZjbG9zZShmKTsK
KyAgcmV0dXJuIGlzX2RlZmF1bHRfcm91dGU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29yay5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0
d29yay5oCmluZGV4IDYwMWUzOWYwMjc3MWQwMzI5M2U4ZDczMDA4YWM4M2Q0YjI3N2I3ODYuLjhi
MWE1ZmNjNWMzZGVkMTE4M2JhODZiODAzN2RkOGQ4NmE5MGQ0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9u
ZXR3b3JrLmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBjbGFzcyBOZXR3b3JrTWFuYWdlciA6IHB1Ymxp
YyBEZWZhdWx0TG9jYWxBZGRyZXNzUHJvdmlkZXIgewogCiAgIC8vIFJldHVybnMgdGhlIG1ETlMg
cmVzcG9uZGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gb2JmdXNjYXRlIHRoZSBsb2NhbCBJUAogICAv
LyBhZGRyZXNzZXMgb2YgSUNFIGhvc3QgY2FuZGlkYXRlcyBieSBtRE5TIGhvc3RuYW1lcy4KLSAg
dmlydHVhbCB3ZWJydGM6Ok1EbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1EbnNSZXNwb25kZXIo
KSBjb25zdDsKKyAgdmlydHVhbCB3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1k
bnNSZXNwb25kZXIoKSBjb25zdDsKIH07CiAKIC8vIEJhc2UgY2xhc3MgZm9yIE5ldHdvcmtNYW5h
Z2VyIGltcGxlbWVudGF0aW9ucy4KQEAgLTM2NywxMSArMzY3LDExIEBAIGNsYXNzIE5ldHdvcmsg
ewogICAvLyBjcmVhdGVkIG5hbWUgd2lsbCBiZSByZXNvbHZlZCBieSB0aGUgcmVzcG9uZGVyLgog
ICAvLwogICAvLyBUaGUgbUROUyByZXNwb25kZXIsIGlmIG5vdCBudWxsLCBzaG91bGQgb3V0bGl2
ZSB0aGlzIHJ0Yzo6TmV0d29yay4KLSAgdm9pZCBTZXRNRG5zUmVzcG9uZGVyKHdlYnJ0Yzo6TURu
c1Jlc3BvbmRlckludGVyZmFjZSogbWRuc19yZXNwb25kZXIpIHsKKyAgdm9pZCBTZXRNZG5zUmVz
cG9uZGVyKHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogbWRuc19yZXNwb25kZXIpIHsK
ICAgICBtZG5zX3Jlc3BvbmRlcl8gPSBtZG5zX3Jlc3BvbmRlcjsKICAgfQogICAvLyBSZXR1cm5z
IHRoZSBtRE5TIHJlc3BvbmRlciwgd2hpY2ggaXMgbnVsbCBieSBkZWZhdWx0LgotICB3ZWJydGM6
Ok1EbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1EbnNSZXNwb25kZXIoKSBjb25zdCB7CisgIHdl
YnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IHsK
ICAgICByZXR1cm4gbWRuc19yZXNwb25kZXJfOwogICB9CiAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBj
bGFzcyBOZXR3b3JrIHsKICAgaW50IHByZWZpeF9sZW5ndGhfOwogICBzdGQ6OnN0cmluZyBrZXlf
OwogICBzdGQ6OnZlY3RvcjxJbnRlcmZhY2VBZGRyZXNzPiBpcHNfOwotICB3ZWJydGM6Ok1EbnNS
ZXNwb25kZXJJbnRlcmZhY2UqIG1kbnNfcmVzcG9uZGVyXyA9IG51bGxwdHI7CisgIHdlYnJ0Yzo6
TWRuc1Jlc3BvbmRlckludGVyZmFjZSogbWRuc19yZXNwb25kZXJfID0gbnVsbHB0cjsKICAgaW50
IHNjb3BlX2lkXzsKICAgYm9vbCBpZ25vcmVkXzsKICAgQWRhcHRlclR5cGUgdHlwZV87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9uZXR3b3JrL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbmV0d29yay9CVUlMRC5nbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZmJkYmIxZWRiYjBh
ZmMyNGUxZjRiYjdjMTM1NDM2YTQ4ZWU4NDJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29yay9CVUlMRC5n
bgpAQCAtMCwwICsxLDE5IEBACisjIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorIyB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyMgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisjIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorCitpbXBvcnQoIi4uLy4uL3dlYnJ0Yy5nbmkiKQorCitydGNf
c291cmNlX3NldCgic2VudF9wYWNrZXQiKSB7CisgIHNvdXJjZXMgPSBbCisgICAgInNlbnRfcGFj
a2V0LmNjIiwKKyAgICAic2VudF9wYWNrZXQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICBdCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9uZXR3b3JrL3NlbnRfcGFja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
Y2M0OTczN2VmZGVjYTcwODFlMTU1Y2RjNzU0MWU4MzVjMWMwYmVlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0
d29yay9zZW50X3BhY2tldC5jYwpAQCAtMCwwICsxLDI3IEBACisvKgorICogIENvcHlyaWdodCAy
MDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5oIgorCituYW1lc3BhY2Ug
cnRjIHsKKworUGFja2V0SW5mbzo6UGFja2V0SW5mbygpID0gZGVmYXVsdDsKK1BhY2tldEluZm86
OlBhY2tldEluZm8oY29uc3QgUGFja2V0SW5mbyYgaW5mbykgPSBkZWZhdWx0OworUGFja2V0SW5m
bzo6flBhY2tldEluZm8oKSA9IGRlZmF1bHQ7CisKK1NlbnRQYWNrZXQ6OlNlbnRQYWNrZXQoKSA9
IGRlZmF1bHQ7CitTZW50UGFja2V0OjpTZW50UGFja2V0KGludDY0X3QgcGFja2V0X2lkLCBpbnQ2
NF90IHNlbmRfdGltZV9tcykKKyAgICA6IHBhY2tldF9pZChwYWNrZXRfaWQpLCBzZW5kX3RpbWVf
bXMoc2VuZF90aW1lX21zKSB7fQorU2VudFBhY2tldDo6U2VudFBhY2tldChpbnQ2NF90IHBhY2tl
dF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBzZW5kX3RpbWVfbXMsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0SW5mbyYgaW5mbykKKyAgICA6IHBh
Y2tldF9pZChwYWNrZXRfaWQpLCBzZW5kX3RpbWVfbXMoc2VuZF90aW1lX21zKSwgaW5mbyhpbmZv
KSB7fQorCit9ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3
b3JrL3NlbnRfcGFja2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNhZDMxY2E5MWMwZjg5MDJiYjRhZTRhOGRk
ZjQ3ODAxNGMxYTQzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsvc2VudF9wYWNrZXQuaApAQCAtMCww
ICsxLDY4IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19CQVNFX05FVFdPUktf
U0VOVF9QQUNLRVRfSF8KKyNkZWZpbmUgUlRDX0JBU0VfTkVUV09SS19TRU5UX1BBQ0tFVF9IXwor
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCisKK25hbWVzcGFjZSBydGMgeworCitlbnVtIGNsYXNzIFBh
Y2tldFR5cGUgeworICBrVW5rbm93biwKKyAga0RhdGEsCisgIGtJY2VDb25uZWN0aXZpdHlDaGVj
aywKKyAga0ljZUNvbm5lY3Rpdml0eUNoZWNrUmVzcG9uc2UsCisgIGtTdHVuTWVzc2FnZSwKKyAg
a1R1cm5NZXNzYWdlLAorfTsKKworZW51bSBjbGFzcyBQYWNrZXRJbmZvUHJvdG9jb2xUeXBlIHsK
KyAga1Vua25vd24sCisgIGtVZHAsCisgIGtUY3AsCisgIGtTc2x0Y3AsCisgIGtUbHMsCit9Owor
CitzdHJ1Y3QgUGFja2V0SW5mbyB7CisgIFBhY2tldEluZm8oKTsKKyAgUGFja2V0SW5mbyhjb25z
dCBQYWNrZXRJbmZvJiBpbmZvKTsKKyAgflBhY2tldEluZm8oKTsKKworICBib29sIGluY2x1ZGVk
X2luX2ZlZWRiYWNrID0gZmFsc2U7CisgIGJvb2wgaW5jbHVkZWRfaW5fYWxsb2NhdGlvbiA9IGZh
bHNlOworICBQYWNrZXRUeXBlIHBhY2tldF90eXBlID0gUGFja2V0VHlwZTo6a1Vua25vd247Cisg
IFBhY2tldEluZm9Qcm90b2NvbFR5cGUgcHJvdG9jb2wgPSBQYWNrZXRJbmZvUHJvdG9jb2xUeXBl
OjprVW5rbm93bjsKKyAgLy8gQSB1bmlxdWUgaWQgYXNzaWduZWQgYnkgdGhlIG5ldHdvcmsgbWFu
YWdlciwgYW5kIGFic2w6Om51bGxvcHQgaWYgbm90IHNldC4KKyAgYWJzbDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IG5ldHdvcmtfaWQ7CisgIHNpemVfdCBwYWNrZXRfc2l6ZV9ieXRlcyA9IDA7CisgIHNp
emVfdCB0dXJuX292ZXJoZWFkX2J5dGVzID0gMDsKKyAgc2l6ZV90IGlwX292ZXJoZWFkX2J5dGVz
ID0gMDsKK307CisKK3N0cnVjdCBTZW50UGFja2V0IHsKKyAgU2VudFBhY2tldCgpOworICBTZW50
UGFja2V0KGludDY0X3QgcGFja2V0X2lkLCBpbnQ2NF90IHNlbmRfdGltZV9tcyk7CisgIFNlbnRQ
YWNrZXQoaW50NjRfdCBwYWNrZXRfaWQsCisgICAgICAgICAgICAgaW50NjRfdCBzZW5kX3RpbWVf
bXMsCisgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRJbmZvJiBpbmZvKTsKKworICBpbnQ2
NF90IHBhY2tldF9pZCA9IC0xOworICBpbnQ2NF90IHNlbmRfdGltZV9tcyA9IC0xOworICBydGM6
OlBhY2tldEluZm8gaW5mbzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAv
LyBSVENfQkFTRV9ORVRXT1JLX1NFTlRfUEFDS0VUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrbW9uaXRvci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25l
dHdvcmttb25pdG9yLmNjCmluZGV4IGFkNjgwNWFjZWM3ZTc5OGZmOGE5YzZlYTMzZGM5Nzc1NTgw
Y2JiYjAuLjAxODVlYWI4NTYxM2EzYjE5NTYxYTYxZmU0YWFjYTE2NWYzZmVjZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25l
dHdvcmttb25pdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL25ldHdvcmttb25pdG9yLmNjCkBAIC0xMCw3ICsxMCwxMSBAQAogCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbmV0d29ya21vbml0b3IuaCIKIAorI2luY2x1ZGUgPHN0ZGludC5o
PgorCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9j
YXRpb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB7CiBj
b25zdCB1aW50MzJfdCBVUERBVEVfTkVUV09SS1NfTUVTU0FHRSA9IDE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3Jr
bW9uaXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbmV0d29ya21vbml0b3IuaAppbmRleCBhODRhMzBhZWQyYmMzMzY4NjY1YjdkNDMxNDc3
NWU2M2JmMDU1NjFmLi4xYWQ3NjYzNjY5NmNjOGU2NmZlZGJiZWIwMWZiMjVlNjZjYzc3Y2FjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9uZXR3b3JrbW9uaXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmttb25pdG9yLmgKQEAgLTExLDcgKzExLDYgQEAK
ICNpZm5kZWYgUlRDX0JBU0VfTkVUV09SS01PTklUT1JfSF8KICNkZWZpbmUgUlRDX0JBU0VfTkVU
V09SS01PTklUT1JfSF8KIAotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9uZXR3b3JrX2NvbnN0YW50cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJk
X3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvbm9vcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL25vb3AuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YThlNmQ1
YzEwYjk3MTM0ZTY4YjA4ZTJjNjVlZjJmZmYxNmJkNTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvbm9vcC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAK
LS8qCi0gKiAgQ29weXJpZ2h0IDIwMTUgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0g
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgotICovCi0KLS8vIFRoaXMgZmlsZSBpcyBvbmx5IG5lZWRlZCB0byBtYWtl
IG5pbmphIGhhcHB5IG9uIHNvbWUgcGxhdGZvcm1zLgotLy8gT24gc29tZSBwbGF0Zm9ybXMgaXQg
aXMgbm90IHBvc3NpYmxlIHRvIGxpbmsgYW4gcnRjX3N0YXRpY19saWJyYXJ5Ci0vLyB3aXRob3V0
IGFueSBzb3VyY2UgZmlsZSBsaXN0ZWQgaW4gdGhlIEdOIHRhcmdldC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25vb3AubW0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ub29w
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmE4ZTZkNWMxMGI5NzEzNGU2OGIw
OGUyYzY1ZWYyZmZmMTZiZDUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL25vb3AubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0vKgotICogIENvcHly
aWdodCAyMDE1IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
LSAqLwotCi0vLyBUaGlzIGZpbGUgaXMgb25seSBuZWVkZWQgdG8gbWFrZSBuaW5qYSBoYXBweSBv
biBzb21lIHBsYXRmb3Jtcy4KLS8vIE9uIHNvbWUgcGxhdGZvcm1zIGl0IGlzIG5vdCBwb3NzaWJs
ZSB0byBsaW5rIGFuIHJ0Y19zdGF0aWNfbGlicmFyeQotLy8gd2l0aG91dCBhbnkgc291cmNlIGZp
bGUgbGlzdGVkIGluIHRoZSBHTiB0YXJnZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVsbHNv
Y2tldHNlcnZlci5jYwppbmRleCBjODkwYzZmM2RjZjY1M2Y5Njk0ZWZhNmJiYzVmYzgyOTkxY2Fj
OTFkLi5lYzA0MmRkMDk1MTdkYzE4ZTdlMWUwNGI4NDlhZTUxNzg1MGEzMGQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udWxs
c29ja2V0c2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIuY2MKQEAgLTEzLDcgKzEzLDcgQEAKIAog
bmFtZXNwYWNlIHJ0YyB7CiAKLU51bGxTb2NrZXRTZXJ2ZXI6Ok51bGxTb2NrZXRTZXJ2ZXIoKSA6
IGV2ZW50XyhmYWxzZSwgZmFsc2UpIHt9CitOdWxsU29ja2V0U2VydmVyOjpOdWxsU29ja2V0U2Vy
dmVyKCkgPSBkZWZhdWx0OwogTnVsbFNvY2tldFNlcnZlcjo6fk51bGxTb2NrZXRTZXJ2ZXIoKSB7
fQogCiBib29sIE51bGxTb2NrZXRTZXJ2ZXI6OldhaXQoaW50IGNtcywgYm9vbCBwcm9jZXNzX2lv
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmgKaW5kZXggNDA4YmNk
MWIyZjUxNjM2MjFmMTMxMDE1YjZjNWY2ZGVmYWIzOWMxYS4uNDdhN2ZhNjExODcxYzQ0MjNkMjUx
NmUzOThjOTQ4MGM0ODVmODNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVsbHNvY2tldHNlcnZlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bGxzb2NrZXRz
ZXJ2ZXIuaApAQCAtMTEsNyArMTEsOSBAQAogI2lmbmRlZiBSVENfQkFTRV9OVUxMU09DS0VUU0VS
VkVSX0hfCiAjZGVmaW5lIFJUQ19CQVNFX05VTExTT0NLRVRTRVJWRVJfSF8KIAorI2luY2x1ZGUg
InJ0Y19iYXNlL2FzeW5jc29ja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRzZXJ2
ZXIuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251
bWVyaWNzL21vdmluZ19hdmVyYWdlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MjU4MzkyMjdlYmI4YTRhYWM3
YzU5MTEzOGY2MDk0MDUwOGQyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFn
ZS5jYwpAQCAtMCwwICsxLDYwIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUg
InJ0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0
aG0+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKworbmFtZXNwYWNlIHJ0YyB7CisK
K01vdmluZ0F2ZXJhZ2U6Ok1vdmluZ0F2ZXJhZ2Uoc2l6ZV90IHdpbmRvd19zaXplKSA6IGhpc3Rv
cnlfKHdpbmRvd19zaXplLCAwKSB7CisgIC8vIExpbWl0IHdpbmRvdyBzaXplIHRvIGF2b2lkIG92
ZXJmbG93LgorICBSVENfRENIRUNLX0xFKHdpbmRvd19zaXplLCAoaW50NjRfdHsxfSA8PCAzMikg
LSAxKTsKK30KK01vdmluZ0F2ZXJhZ2U6On5Nb3ZpbmdBdmVyYWdlKCkgPSBkZWZhdWx0OworCit2
b2lkIE1vdmluZ0F2ZXJhZ2U6OkFkZFNhbXBsZShpbnQgc2FtcGxlKSB7CisgIGNvdW50XysrOwor
ICBzaXplX3QgaW5kZXggPSBjb3VudF8gJSBoaXN0b3J5Xy5zaXplKCk7CisgIGlmIChjb3VudF8g
PiBoaXN0b3J5Xy5zaXplKCkpCisgICAgc3VtXyAtPSBoaXN0b3J5X1tpbmRleF07CisgIHN1bV8g
Kz0gc2FtcGxlOworICBoaXN0b3J5X1tpbmRleF0gPSBzYW1wbGU7Cit9CisKK2Fic2w6Om9wdGlv
bmFsPGludD4gTW92aW5nQXZlcmFnZTo6R2V0QXZlcmFnZVJvdW5kZWREb3duKCkgY29uc3Qgewor
ICBpZiAoY291bnRfID09IDApCisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIHJldHVybiBz
dW1fIC8gU2l6ZSgpOworfQorCithYnNsOjpvcHRpb25hbDxpbnQ+IE1vdmluZ0F2ZXJhZ2U6Okdl
dEF2ZXJhZ2VSb3VuZGVkVG9DbG9zZXN0KCkgY29uc3QgeworICBpZiAoY291bnRfID09IDApCisg
ICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIHJldHVybiAoc3VtXyArIFNpemUoKSAvIDIpIC8g
U2l6ZSgpOworfQorCithYnNsOjpvcHRpb25hbDxkb3VibGU+IE1vdmluZ0F2ZXJhZ2U6OkdldFVu
cm91bmRlZEF2ZXJhZ2UoKSBjb25zdCB7CisgIGlmIChjb3VudF8gPT0gMCkKKyAgICByZXR1cm4g
YWJzbDo6bnVsbG9wdDsKKyAgcmV0dXJuIHN1bV8gLyBzdGF0aWNfY2FzdDxkb3VibGU+KFNpemUo
KSk7Cit9CisKK3ZvaWQgTW92aW5nQXZlcmFnZTo6UmVzZXQoKSB7CisgIGNvdW50XyA9IDA7Cisg
IHN1bV8gPSAwOworfQorCitzaXplX3QgTW92aW5nQXZlcmFnZTo6U2l6ZSgpIGNvbnN0IHsKKyAg
cmV0dXJuIHN0ZDo6bWluKGNvdW50XywgaGlzdG9yeV8uc2l6ZSgpKTsKK30KK30gIC8vIG5hbWVz
cGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZl
cmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc3MGU0N2Q4NmY4MTI4ZmNmNzc3NGQ0YmM0NTA5Njc2OTc1YzYy
YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5oCkBAIC0wLDAgKzEsNjMg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19CQVNFX05VTUVSSUNTX01P
VklOR19BVkVSQUdFX0hfCisjZGVmaW5lIFJUQ19CQVNFX05VTUVSSUNTX01PVklOR19BVkVSQUdF
X0hfCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFs
LmgiCisKK25hbWVzcGFjZSBydGMgeworCisvLyBDYWxjdWxhdGVzIGF2ZXJhZ2Ugb3ZlciBmaXhl
ZCBzaXplIHdpbmRvdy4gSWYgdGhlcmUgYXJlIGxlc3MgdGhhbiB3aW5kb3cKKy8vIHNpemUgZWxl
bWVudHMsIGNhbGN1bGF0ZXMgYXZlcmFnZSBvZiBhbGwgaW5zZXJ0ZWQgc28gZmFyIGVsZW1lbnRz
LgorLy8KK2NsYXNzIE1vdmluZ0F2ZXJhZ2UgeworIHB1YmxpYzoKKyAgLy8gTWF4aW11bSBzdXBw
b3J0ZWQgd2luZG93IHNpemUgaXMgMl4zMiAtIDEuCisgIGV4cGxpY2l0IE1vdmluZ0F2ZXJhZ2Uo
c2l6ZV90IHdpbmRvd19zaXplKTsKKyAgfk1vdmluZ0F2ZXJhZ2UoKTsKKyAgLy8gTW92aW5nQXZl
cmFnZSBpcyBuZWl0aGVyIGNvcHlhYmxlIG5vciBtb3ZhYmxlLgorICBNb3ZpbmdBdmVyYWdlKGNv
bnN0IE1vdmluZ0F2ZXJhZ2UmKSA9IGRlbGV0ZTsKKyAgTW92aW5nQXZlcmFnZSYgb3BlcmF0b3I9
KGNvbnN0IE1vdmluZ0F2ZXJhZ2UmKSA9IGRlbGV0ZTsKKworICAvLyBBZGRzIG5ldyBzYW1wbGUu
IElmIHRoZSB3aW5kb3cgaXMgZnVsbCwgdGhlIG9sZGVzdCBlbGVtZW50IGlzIHB1c2hlZCBvdXQu
CisgIHZvaWQgQWRkU2FtcGxlKGludCBzYW1wbGUpOworCisgIC8vIFJldHVybnMgcm91bmRlZCBk
b3duIGF2ZXJhZ2Ugb2YgbGFzdCB8d2luZG93X3NpemV8IGVsZW1lbnRzIG9yIGFsbAorICAvLyBl
bGVtZW50cyBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCBvZiB0aGVtLiBSZXR1cm5zIG51bGxvcHQg
aWYgdGhlcmUgd2VyZQorICAvLyBubyBlbGVtZW50cyBhZGRlZC4KKyAgYWJzbDo6b3B0aW9uYWw8
aW50PiBHZXRBdmVyYWdlUm91bmRlZERvd24oKSBjb25zdDsKKworICAvLyBTYW1lIGFzIGFib3Zl
IGJ1dCByb3VuZGVkIHRvIHRoZSBjbG9zZXN0IGludGVnZXIuCisgIGFic2w6Om9wdGlvbmFsPGlu
dD4gR2V0QXZlcmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSBjb25zdDsKKworICAvLyBSZXR1cm5zIHVu
cm91bmRlZCBhdmVyYWdlIG92ZXIgdGhlIHdpbmRvdy4KKyAgYWJzbDo6b3B0aW9uYWw8ZG91Ymxl
PiBHZXRVbnJvdW5kZWRBdmVyYWdlKCkgY29uc3Q7CisKKyAgLy8gUmVzZXRzIHRvIHRoZSBpbml0
aWFsIHN0YXRlIGJlZm9yZSBhbnkgZWxlbWVudHMgd2VyZSBhZGRlZC4KKyAgdm9pZCBSZXNldCgp
OworCisgIC8vIFJldHVybnMgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB3aW5kb3cuCisgIHNp
emVfdCBTaXplKCkgY29uc3Q7CisKKyBwcml2YXRlOgorICAvLyBUb3RhbCBudW1iZXIgb2Ygc2Ft
cGxlcyBhZGRlZCB0byB0aGUgY2xhc3Mgc2luY2UgbGFzdCByZXNldC4KKyAgc2l6ZV90IGNvdW50
XyA9IDA7CisgIC8vIFN1bSBvZiB0aGUgc2FtcGxlcyBpbiB0aGUgbW92aW5nIHdpbmRvdy4KKyAg
aW50NjRfdCBzdW1fID0gMDsKKyAgLy8gQ2lyY3VsYXIgYnVmZmVyIGZvciBhbGwgdGhlIHNhbXBs
ZXMgaW4gdGhlIG1vdmluZyB3aW5kb3cuCisgIC8vIFNpemUgaXMgYWx3YXlzIHx3aW5kb3dfc2l6
ZXwKKyAgc3RkOjp2ZWN0b3I8aW50PiBoaXN0b3J5XzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBy
dGMKKyNlbmRpZiAgLy8gUlRDX0JBU0VfTlVNRVJJQ1NfTU9WSU5HX0FWRVJBR0VfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L251bWVyaWNzL21vdmluZ19hdmVyYWdlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2Vf
dW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJjOWExYWVmODlhMTRiYTkzNjZiZTg4OGZkMjJiMmQx
Mzk2MDk1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlX3VuaXR0ZXN0LmNj
CkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRj
X2Jhc2UvbnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2UuaCIKKworI2luY2x1ZGUgInRlc3QvZ3Rlc3Qu
aCIKKworbmFtZXNwYWNlIHRlc3QgeworCitURVNUKE1vdmluZ0F2ZXJhZ2VUZXN0LCBFbXB0eUF2
ZXJhZ2UpIHsKKyAgcnRjOjpNb3ZpbmdBdmVyYWdlIG1vdmluZ19hdmVyYWdlKDEpOworICBFWFBF
Q1RfRVEoMHUsIG1vdmluZ19hdmVyYWdlLlNpemUoKSk7CisgIEVYUEVDVF9FUShhYnNsOjpudWxs
b3B0LCBtb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSk7Cit9CisKKy8vIFRl
c3Qgc2luZ2xlIHZhbHVlLgorVEVTVChNb3ZpbmdBdmVyYWdlVGVzdCwgT25lRWxlbWVudCkgewor
ICBydGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMSk7CisgIG1vdmluZ19hdmVyYWdl
LkFkZFNhbXBsZSgzKTsKKyAgRVhQRUNUX0VRKDF1LCBtb3ZpbmdfYXZlcmFnZS5TaXplKCkpOwor
ICBFWFBFQ1RfRVEoMywgKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVkRG93bigpKTsK
K30KKworVEVTVChNb3ZpbmdBdmVyYWdlVGVzdCwgR2V0QXZlcmFnZSkgeworICBydGM6Ok1vdmlu
Z0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMTAyNCk7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBs
ZSgxKTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDEpOworICBtb3ZpbmdfYXZlcmFnZS5B
ZGRTYW1wbGUoMyk7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgzKTsKKyAgRVhQRUNUX0VR
KCptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSwgMik7CisgIEVYUEVDVF9F
USgqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSwgMik7Cit9CisK
K1RFU1QoTW92aW5nQXZlcmFnZVRlc3QsIEdldEF2ZXJhZ2VSb3VuZGVkRG93blJvdW5kcykgewor
ICBydGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMTAyNCk7CisgIG1vdmluZ19hdmVy
YWdlLkFkZFNhbXBsZSgxKTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDIpOworICBtb3Zp
bmdfYXZlcmFnZS5BZGRTYW1wbGUoMik7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgyKTsK
KyAgRVhQRUNUX0VRKCptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSwgMSk7
Cit9CisKK1RFU1QoTW92aW5nQXZlcmFnZVRlc3QsIEdldEF2ZXJhZ2VSb3VuZGVkVG9DbG9zZXN0
Um91bmRzKSB7CisgIHJ0Yzo6TW92aW5nQXZlcmFnZSBtb3ZpbmdfYXZlcmFnZSgxMDI0KTsKKyAg
bW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDEpOworICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUo
Mik7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgyKTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRk
U2FtcGxlKDIpOworICBFWFBFQ1RfRVEoKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVk
VG9DbG9zZXN0KCksIDIpOworfQorCitURVNUKE1vdmluZ0F2ZXJhZ2VUZXN0LCBSZXNldCkgewor
ICBydGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoNSk7CisgIG1vdmluZ19hdmVyYWdl
LkFkZFNhbXBsZSgxKTsKKyAgRVhQRUNUX0VRKDEsICptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdl
Um91bmRlZERvd24oKSk7CisgIEVYUEVDVF9FUSgxLCAqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFn
ZVJvdW5kZWRUb0Nsb3Nlc3QoKSk7CisKKyAgbW92aW5nX2F2ZXJhZ2UuUmVzZXQoKTsKKworICBF
WFBFQ1RfRkFMU0UobW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWREb3duKCkpOworICBt
b3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoMTApOworICBFWFBFQ1RfRVEoMTAsICptb3ZpbmdfYXZl
cmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSk7CisgIEVYUEVDVF9FUSgxMCwgKm1vdmluZ19h
dmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVkVG9DbG9zZXN0KCkpOworfQorCitURVNUKE1vdmluZ0F2
ZXJhZ2VUZXN0LCBNYW55U2FtcGxlcykgeworICBydGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2
ZXJhZ2UoMTApOworICBmb3IgKGludCBpID0gMTsgaSA8IDExOyBpKyspIHsKKyAgICBtb3Zpbmdf
YXZlcmFnZS5BZGRTYW1wbGUoaSk7CisgIH0KKyAgRVhQRUNUX0VRKCptb3ZpbmdfYXZlcmFnZS5H
ZXRBdmVyYWdlUm91bmRlZERvd24oKSwgNSk7CisgIEVYUEVDVF9FUSgqbW92aW5nX2F2ZXJhZ2Uu
R2V0QXZlcmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSwgNik7CisgIGZvciAoaW50IGkgPSAxOyBpIDwg
MjAwMTsgaSsrKSB7CisgICAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKGkpOworICB9CisgIEVY
UEVDVF9FUSgqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWREb3duKCksIDE5OTUpOwor
ICBFWFBFQ1RfRVEoKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVkVG9DbG9zZXN0KCks
IDE5OTYpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3Mvc2FtcGxl
X2NvdW50ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL251bWVyaWNzL3NhbXBsZV9jb3VudGVyLmgKaW5kZXggNGZlNzFkMTk0MjdhMjNlZTIy
OWVjZjRkMjFiNjE3MTBkODUwODBlZS4uMThiZDM2YjhmMzA1MmE2NTJhMWFhN2JlOTg2ZDZkYjNj
OTcxNzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3Mvc2FtcGxlX2NvdW50ZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9zYW1wbGVf
Y291bnRlci5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIFJUQ19CQVNFX05VTUVSSUNTX1NB
TVBMRV9DT1VOVEVSX0hfCiAjZGVmaW5lIFJUQ19CQVNFX05VTUVSSUNTX1NBTVBMRV9DT1VOVEVS
X0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9u
YWwuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hr
ZGYuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9vcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJhZjY2NzY0NWIz
OWVlNzcwM2NlN2I3NGZmMjA0NTViOWU4YWNhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xfa2V5X2Rl
cml2YXRpb25faGtkZi5jYwpAQCAtMCwwICsxLDcwIEBACisvKgorICogIENvcHlyaWdodCAyMDE4
IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmgiCisKKyNpbmNs
dWRlIDxvcGVuc3NsL2RpZ2VzdC5oPgorI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisjaW5jbHVk
ZSA8b3BlbnNzbC9oa2RmLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KKworI2luY2x1ZGUg
PGFsZ29yaXRobT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVm
ZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbC5oIgorCituYW1lc3BhY2UgcnRjIHsK
KworT3BlblNTTEtleURlcml2YXRpb25IS0RGOjpPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYoKSA9
IGRlZmF1bHQ7CitPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREY6On5PcGVuU1NMS2V5RGVyaXZhdGlv
bkhLREYoKSA9IGRlZmF1bHQ7CisKK2NvbnN0IHNpemVfdCBPcGVuU1NMS2V5RGVyaXZhdGlvbkhL
REY6OmtNaW5LZXlCeXRlU2l6ZSA9IDE2OworY29uc3Qgc2l6ZV90IE9wZW5TU0xLZXlEZXJpdmF0
aW9uSEtERjo6a01heEtleUJ5dGVTaXplID0KKyAgICAyNTUgKiBTSEEyNTZfRElHRVNUX0xFTkdU
SDsKK2NvbnN0IHNpemVfdCBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREY6OmtNaW5TZWNyZXRCeXRl
U2l6ZSA9IDE2OworCithYnNsOjpvcHRpb25hbDxaZXJvT25GcmVlQnVmZmVyPHVpbnQ4X3Q+PiBP
cGVuU1NMS2V5RGVyaXZhdGlvbkhLREY6OkRlcml2ZUtleSgKKyAgICBydGM6OkFycmF5Vmlldzxj
b25zdCB1aW50OF90PiBzZWNyZXQsCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4g
c2FsdCwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBsYWJlbCwKKyAgICBzaXpl
X3QgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKSB7CisgIC8vIFByZXZlbnQgZGVyaXZpbmcgbGVzcyB0
aGFuIDEyOCBiaXRzIG9mIGtleSBtYXRlcmlhbCBvciBtb3JlIHRoYW4gdGhlIG1heC4KKyAgaWYg
KGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSA8IGtNaW5LZXlCeXRlU2l6ZSB8fAorICAgICAgZGVyaXZl
ZF9rZXlfYnl0ZV9zaXplID4ga01heEtleUJ5dGVTaXplKSB7CisgICAgcmV0dXJuIGFic2w6Om51
bGxvcHQ7CisgIH0KKyAgLy8gVGhlIHNlY3JldCBtdXN0IHJlYWNoIHRoZSBtaW5pbXVtIG51bWJl
ciBvZiBiaXRzIHRvIGJlIHNlY3VyZS4KKyAgaWYgKHNlY3JldC5kYXRhKCkgPT0gbnVsbHB0ciB8
fCBzZWNyZXQuc2l6ZSgpIDwga01pblNlY3JldEJ5dGVTaXplKSB7CisgICAgcmV0dXJuIGFic2w6
Om51bGxvcHQ7CisgIH0KKyAgLy8gRW1wdHkgbGFiZWxzIGFyZSBhbHdheXMgaW52YWxpZCBpbiBk
ZXJpdmF0aW9uLgorICBpZiAobGFiZWwuZGF0YSgpID09IG51bGxwdHIgfHwgbGFiZWwuc2l6ZSgp
ID09IDApIHsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorICAvLyBJZiBhIHJhbmRv
bSBzYWx0IGlzIG5vdCBwcm92aWRlZCB1c2UgYWxsIHplcm9zLgorICBydGM6OkJ1ZmZlciBzYWx0
X2J1ZmZlcjsKKyAgaWYgKHNhbHQuZGF0YSgpID09IG51bGxwdHIgfHwgc2FsdC5zaXplKCkgPT0g
MCkgeworICAgIHNhbHRfYnVmZmVyLlNldFNpemUoU0hBMjU2X0RJR0VTVF9MRU5HVEgpOworICAg
IHN0ZDo6ZmlsbChzYWx0X2J1ZmZlci5iZWdpbigpLCBzYWx0X2J1ZmZlci5lbmQoKSwgMCk7Cisg
ICAgc2FsdCA9IHNhbHRfYnVmZmVyOworICB9CisgIC8vIFRoaXMgYnVmZmVyIHdpbGwgZXJhc2Ug
aXRzZWxmIG9uIHJlbGVhc2UuCisgIFplcm9PbkZyZWVCdWZmZXI8dWludDhfdD4gZGVyaXZlZF9r
ZXlfYnVmZmVyKGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSwgMCk7CisgIGlmICghSEtERihkZXJpdmVk
X2tleV9idWZmZXIuZGF0YSgpLCBkZXJpdmVkX2tleV9idWZmZXIuc2l6ZSgpLCBFVlBfc2hhMjU2
KCksCisgICAgICAgICAgICBzZWNyZXQuZGF0YSgpLCBzZWNyZXQuc2l6ZSgpLCBzYWx0LmRhdGEo
KSwgc2FsdC5zaXplKCksCisgICAgICAgICAgICBsYWJlbC5kYXRhKCksIGxhYmVsLnNpemUoKSkp
IHsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorICByZXR1cm4gYWJzbDo6b3B0aW9u
YWw8WmVyb09uRnJlZUJ1ZmZlcjx1aW50OF90Pj4oCisgICAgICBzdGQ6Om1vdmUoZGVyaXZlZF9r
ZXlfYnVmZmVyKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xfa2V5
X2Rlcml2YXRpb25faGtkZi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWJmNDNjZmFhN2FiYWQ3YTlhMTFhYTVkNTA5NmU4MWVmYTFlZTU5ZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29w
ZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfT1BFTlNTTF9LRVlfREVSSVZBVElPTl9IS0RGX0hf
CisjZGVmaW5lIFJUQ19CQVNFX09QRU5TU0xfS0VZX0RFUklWQVRJT05fSEtERl9IXworCisjaW5j
bHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2tl
eV9kZXJpdmF0aW9uLmgiCisKK25hbWVzcGFjZSBydGMgeworCisvLyBPcGVuU1NMS2V5RGVyaXZh
dGlvbkhLREYgcHJvdmlkZXMgYSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKKy8vIEtl
eURlcml2YXRpb24gaW50ZXJmYWNlIHRvIHN1cHBvcnQgdGhlIEhLREYgYWxnb3JpdGhtIHVzaW5n
IHRoZQorLy8gT3BlblNTTC9Cb3JpbmdTU0wgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uCitjbGFz
cyBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYgZmluYWwgOiBwdWJsaWMgS2V5RGVyaXZhdGlvbiB7
CisgcHVibGljOgorICBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYoKTsKKyAgfk9wZW5TU0xLZXlE
ZXJpdmF0aW9uSEtERigpIG92ZXJyaWRlOworCisgIC8vIEdlbmVyYWwgdXNlcnMgc2hvdWxkbid0
IGJlIGdlbmVyYXRpbmcga2V5cyBzbWFsbGVyIHRoYW4gMTI4IGJpdHMuCisgIHN0YXRpYyBjb25z
dCBzaXplX3Qga01pbktleUJ5dGVTaXplOworICAvLyBUaGUgbWF4aW11bSBhdmFpbGFibGUgZGVy
aXZhdGlvbiBzaXplIDI1NSpESUdFU1RfTEVOR1RICisgIHN0YXRpYyBjb25zdCBzaXplX3Qga01h
eEtleUJ5dGVTaXplOworICAvLyBUaGUgbWluaW11bSBhY2NlcHRhYmxlIHNlY3JldCBzaXplLgor
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNaW5TZWNyZXRCeXRlU2l6ZTsKKworICAvLyBEZXJpdmVz
IGEgbmV3IGtleSBmcm9tIGV4aXN0aW5nIGtleSBtYXRlcmlhbCB1c2luZyBIS0RGLgorICAvLyBz
ZWNyZXQgLSBUaGUgcmFuZG9tIHNlY3JldCB2YWx1ZSB5b3Ugd2lzaCB0byBkZXJpdmUgYSBrZXkg
ZnJvbS4KKyAgLy8gc2FsdCAtIE9wdGlvbmFsIChub24gc2VjcmV0KSBjcnlwdG9ncmFwaGljYWxs
eSByYW5kb20gdmFsdWUuCisgIC8vIGxhYmVsIC0gQSBub24gc2VjcmV0IGJ1dCB1bmlxdWUgbGFi
ZWwgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBkZXJpdmF0aW9uLgorICAvLyBkZXJpdmVkX2tleV9i
eXRlX3NpemUgLSBUaGUgc2l6ZSBvZiB0aGUgZGVyaXZlZCBrZXkuCisgIC8vIHJldHVybiAtIEEg
WmVyb09uRnJlZUJ1ZmZlciBjb250YWluaW5nIHRoZSBkZXJpdmVkIGtleSBvciBhbiBlcnJvcgor
ICAvLyBjb25kaXRpb24uIENoZWNraW5nIGVycm9yIGNvZGVzIGlzIGV4cGxpY2l0IGluIHRoZSBB
UEkgYW5kIGVycm9yIHNob3VsZAorICAvLyBuZXZlciBiZSBpZ25vcmVkLgorICBhYnNsOjpvcHRp
b25hbDxaZXJvT25GcmVlQnVmZmVyPHVpbnQ4X3Q+PiBEZXJpdmVLZXkoCisgICAgICBydGM6OkFy
cmF5Vmlldzxjb25zdCB1aW50OF90PiBzZWNyZXQsCisgICAgICBydGM6OkFycmF5Vmlldzxjb25z
dCB1aW50OF90PiBzYWx0LAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gbGFi
ZWwsCisgICAgICBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKSBvdmVycmlkZTsKKworIHBy
aXZhdGU6CisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oT3BlblNTTEtleURlcml2YXRp
b25IS0RGKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAvLyBSVENfQkFT
RV9PUEVOU1NMX0tFWV9ERVJJVkFUSU9OX0hLREZfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2
YXRpb25faGtkZl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZl91bml0dGVzdC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MmRmNDJmZmQzMGQ2YjRmZDM1OWMxNGIxM2QzODgzZGVhOWFmNGRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmX3VuaXR0ZXN0LmNjCkBAIC0w
LDAgKzEsMTA3IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX2Jhc2Uvb3Bl
bnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmgiCisKKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5j
bHVkZSAidGVzdC9nbW9jay5oIgorCituYW1lc3BhY2UgcnRjIHsKK25hbWVzcGFjZSB7CisKKy8v
IFZhbGlkYXRlcyB0aGF0IGEgYmFzaWMgdmFsaWQgY2FsbCB3b3JrcyBjb3JyZWN0bHkuCitURVNU
KE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERiwgRGVyaXZhdGlvbkJhc2ljVGVzdCkgeworICBydGM6
OkJ1ZmZlciBzZWNyZXQoMzIpOworICBydGM6OkJ1ZmZlciBzYWx0KDMyKTsKKyAgcnRjOjpCdWZm
ZXIgbGFiZWwoMzIpOworICBjb25zdCBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9zaXplID0gMTY7
CisKKyAgT3BlblNTTEtleURlcml2YXRpb25IS0RGIGhrZGY7CisgIGF1dG8ga2V5X29yID0gaGtk
Zi5EZXJpdmVLZXkoc2VjcmV0LCBzYWx0LCBsYWJlbCwgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKTsK
KyAgRVhQRUNUX1RSVUUoa2V5X29yLmhhc192YWx1ZSgpKTsKKyAgWmVyb09uRnJlZUJ1ZmZlcjx1
aW50OF90PiBrZXkgPSBzdGQ6Om1vdmUoa2V5X29yLnZhbHVlKCkpOworICBFWFBFQ1RfRVEoZGVy
aXZlZF9rZXlfYnl0ZV9zaXplLCBrZXkuc2l6ZSgpKTsKK30KKworLy8gRGVyaXZhdGlvbiBmYWls
cyBpZiBvdXRwdXQgaXMgdG9vIHNtYWxsLgorVEVTVChPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYs
IERlcml2YXRpb25GYWlsc0lmT3V0cHV0SXNUb29TbWFsbCkgeworICBydGM6OkJ1ZmZlciBzZWNy
ZXQoMzIpOworICBydGM6OkJ1ZmZlciBzYWx0KDMyKTsKKyAgcnRjOjpCdWZmZXIgbGFiZWwoMzIp
OworICBjb25zdCBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9zaXplID0gMTU7CisKKyAgT3BlblNT
TEtleURlcml2YXRpb25IS0RGIGhrZGY7CisgIGF1dG8ga2V5X29yID0gaGtkZi5EZXJpdmVLZXko
c2VjcmV0LCBzYWx0LCBsYWJlbCwgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKTsKKyAgRVhQRUNUX0ZB
TFNFKGtleV9vci5oYXNfdmFsdWUoKSk7Cit9CisKKy8vIERlcml2YXRpb24gZmFpbHMgaWYgb3V0
cHV0IGlzIHRvbyBsYXJnZS4KK1RFU1QoT3BlblNTTEtleURlcml2YXRpb25IS0RGLCBEZXJpdmF0
aW9uRmFpbHNJZk91dHB1dElzVG9vTGFyZ2UpIHsKKyAgcnRjOjpCdWZmZXIgc2VjcmV0KDMyKTsK
KyAgcnRjOjpCdWZmZXIgc2FsdCgzMik7CisgIHJ0Yzo6QnVmZmVyIGxhYmVsKDMyKTsKKyAgY29u
c3Qgc2l6ZV90IGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSA9IDI1NiAqIDMyOworCisgIE9wZW5TU0xL
ZXlEZXJpdmF0aW9uSEtERiBoa2RmOworICBhdXRvIGtleV9vciA9IGhrZGYuRGVyaXZlS2V5KHNl
Y3JldCwgc2FsdCwgbGFiZWwsIGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSk7CisgIEVYUEVDVF9GQUxT
RShrZXlfb3IuaGFzX3ZhbHVlKCkpOworfQorCisvLyBWYWxpZGF0ZXMgdGhhdCB0b28gbGl0dGxl
IGtleSBtYXRlcmlhbCBjYXVzZXMgYSBmYWlsdXJlLgorVEVTVChPcGVuU1NMS2V5RGVyaXZhdGlv
bkhLREYsIERlcml2YXRpb25GYWlsc1dpdGhJbnZhbGlkU2VjcmV0KSB7CisgIHJ0Yzo6QnVmZmVy
IHNlY3JldCgxNSk7CisgIHJ0Yzo6QnVmZmVyIHNhbHQoMzIpOworICBydGM6OkJ1ZmZlciBsYWJl
bCgzMik7CisgIGNvbnN0IHNpemVfdCBkZXJpdmVkX2tleV9ieXRlX3NpemUgPSAxNjsKKworICBP
cGVuU1NMS2V5RGVyaXZhdGlvbkhLREYgaGtkZjsKKyAgYXV0byBrZXlfb3JfMCA9IGhrZGYuRGVy
aXZlS2V5KHNlY3JldCwgc2FsdCwgbGFiZWwsIGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSk7CisgIEVY
UEVDVF9GQUxTRShrZXlfb3JfMC5oYXNfdmFsdWUoKSk7CisKKyAgYXV0byBrZXlfb3JfMSA9IGhr
ZGYuRGVyaXZlS2V5KG51bGxwdHIsIHNhbHQsIGxhYmVsLCBkZXJpdmVkX2tleV9ieXRlX3NpemUp
OworICBFWFBFQ1RfRkFMU0Uoa2V5X29yXzEuaGFzX3ZhbHVlKCkpOworCisgIHJ0Yzo6QnVmZmVy
IHNlY3JldF9lbXB0eTsKKyAgYXV0byBrZXlfb3JfMiA9CisgICAgICBoa2RmLkRlcml2ZUtleShz
ZWNyZXRfZW1wdHksIHNhbHQsIGxhYmVsLCBkZXJpdmVkX2tleV9ieXRlX3NpemUpOworICBFWFBF
Q1RfRkFMU0Uoa2V5X29yXzIuaGFzX3ZhbHVlKCkpOworfQorCisvLyBWYWxpZGF0ZXMgdGhhdCBI
S0RGIHdvcmtzIHdpdGhvdXQgYSBzYWx0IGJlaW5nIHNldC4KK1RFU1QoT3BlblNTTEtleURlcml2
YXRpb25IS0RGLCBEZXJpdmF0aW9uV29ya3NXaXRoTm9TYWx0KSB7CisgIHJ0Yzo6QnVmZmVyIHNl
Y3JldCgzMik7CisgIHJ0Yzo6QnVmZmVyIGxhYmVsKDMyKTsKKyAgY29uc3Qgc2l6ZV90IGRlcml2
ZWRfa2V5X2J5dGVfc2l6ZSA9IDE2OworCisgIE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERiBoa2Rm
OworICBhdXRvIGtleV9vciA9IGhrZGYuRGVyaXZlS2V5KHNlY3JldCwgbnVsbHB0ciwgbGFiZWws
IGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSk7CisgIEVYUEVDVF9UUlVFKGtleV9vci5oYXNfdmFsdWUo
KSk7Cit9CisKKy8vIFZhbGlkYXRlcyB0aGF0IGEgbGFiZWwgaXMgcmVxdWlyZWQgdG8gd29yayBj
b3JyZWN0bHkuCitURVNUKE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERiwgRGVyaXZhdGlvblJlcXVp
cmVzTGFiZWwpIHsKKyAgcnRjOjpCdWZmZXIgc2VjcmV0KDMyKTsKKyAgcnRjOjpCdWZmZXIgc2Fs
dCgzMik7CisgIHJ0Yzo6QnVmZmVyIGxhYmVsKDEpOworICBjb25zdCBzaXplX3QgZGVyaXZlZF9r
ZXlfYnl0ZV9zaXplID0gMTY7CisKKyAgT3BlblNTTEtleURlcml2YXRpb25IS0RGIGhrZGY7Cisg
IGF1dG8ga2V5X29yXzAgPSBoa2RmLkRlcml2ZUtleShzZWNyZXQsIHNhbHQsIGxhYmVsLCBkZXJp
dmVkX2tleV9ieXRlX3NpemUpOworICBFWFBFQ1RfVFJVRShrZXlfb3JfMC5oYXNfdmFsdWUoKSk7
CisgIFplcm9PbkZyZWVCdWZmZXI8dWludDhfdD4ga2V5ID0gc3RkOjptb3ZlKGtleV9vcl8wLnZh
bHVlKCkpOworICBFWFBFQ1RfRVEoa2V5LnNpemUoKSwgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKTsK
KworICBhdXRvIGtleV9vcl8xID0gaGtkZi5EZXJpdmVLZXkoc2VjcmV0LCBzYWx0LCBudWxscHRy
LCBkZXJpdmVkX2tleV9ieXRlX3NpemUpOworICBFWFBFQ1RfRkFMU0Uoa2V5X29yXzEuaGFzX3Zh
bHVlKCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L29wZW5zc2xhZGFwdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuY2MKaW5kZXggNTAyODRhNjcxOWZlNDUxNDZh
Y2U5MjY2ZTBmOWNiZGIzYmQ2MzNkOC4uZmNmYTUzYjdlZTcwZDg0ZWMxYmFhZDAwYjg2NzQ1NGU0
MzEzOTAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuY2MKQEAgLTEw
LDI1ICsxMCwyNSBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuaCIKIAot
I2lmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCisj
aW5jbHVkZSA8ZXJybm8uaD4KIAogI2luY2x1ZGUgPG9wZW5zc2wvYmlvLmg+Ci0jaW5jbHVkZSA8
b3BlbnNzbC9jcnlwdG8uaD4KICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotI2luY2x1ZGUgPG9w
ZW5zc2wvb3BlbnNzbHYuaD4KICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KICNpbmNsdWRlIDxv
cGVuc3NsL3g1MDkuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3g1MDl2My5oPgogI2luY2x1ZGUgInJ0
Y19iYXNlL29wZW5zc2wuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUu
aD4KKworI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVy
c2lvbnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmlu
Z2VuY29kZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvdGhyZWFkLmgiCiAKICNpZm5kZWYgT1BFTlNTTF9JU19CT1JJTkdTU0wKQEAgLTM5
MiwxNSArMzkyLDE3IEBAIGludCBPcGVuU1NMQWRhcHRlcjo6QmVnaW5TU0woKSB7CiAKICAgLy8g
RG8gdGhlIGNvbm5lY3QuCiAgIGVyciA9IENvbnRpbnVlU1NMKCk7Ci0gIGlmIChlcnIgIT0gMCkK
KyAgaWYgKGVyciAhPSAwKSB7CiAgICAgZ290byBzc2xfZXJyb3I7CisgIH0KIAogICByZXR1cm4g
ZXJyOwogCiBzc2xfZXJyb3I6CiAgIENsZWFudXAoKTsKLSAgaWYgKGJpbykKKyAgaWYgKGJpbykg
ewogICAgIEJJT19mcmVlKGJpbyk7CisgIH0KIAogICByZXR1cm4gZXJyOwogfQpAQCAtNDI0LDE0
ICs0MjYsMTMgQEAgaW50IE9wZW5TU0xBZGFwdGVyOjpDb250aW51ZVNTTCgpIHsKIAogICAgICAg
c3RhdGVfID0gU1NMX0NPTk5FQ1RFRDsKICAgICAgIEFzeW5jU29ja2V0QWRhcHRlcjo6T25Db25u
ZWN0RXZlbnQodGhpcyk7Ci0jaWYgMCAgLy8gVE9ETyhiZW53cmlnaHQpOiB3b3JyeSBhYm91dCB0
aGlzCi0gICAgLy8gRG9uJ3QgbGV0IG91cnNlbHZlcyBnbyBhd2F5IGR1cmluZyB0aGUgY2FsbGJh
Y2tzCi0gICAgUFJlZlB0cjxPcGVuU1NMQWRhcHRlcj4gbG9jayh0aGlzKTsKLSAgICBSVENfTE9H
KExTX0lORk8pIDw8ICIgLS0gb25TdHJlYW1SZWFkYWJsZSI7Ci0gICAgQXN5bmNTb2NrZXRBZGFw
dGVyOjpPblJlYWRFdmVudCh0aGlzKTsKLSAgICBSVENfTE9HKExTX0lORk8pIDw8ICIgLS0gb25T
dHJlYW1Xcml0ZWFibGUiOwotICAgIEFzeW5jU29ja2V0QWRhcHRlcjo6T25Xcml0ZUV2ZW50KHRo
aXMpOwotI2VuZGlmCisgICAgICAvLyBUT0RPKGJlbndyaWdodCk6IFJlZmFjdG9yIHRoaXMgY29k
ZSBwYXRoLgorICAgICAgLy8gRG9uJ3QgbGV0IG91cnNlbHZlcyBnbyBhd2F5IGR1cmluZyB0aGUg
Y2FsbGJhY2tzCisgICAgICAvLyBQUmVmUHRyPE9wZW5TU0xBZGFwdGVyPiBsb2NrKHRoaXMpOwor
ICAgICAgLy8gUlRDX0xPRyhMU19JTkZPKSA8PCAiIC0tIG9uU3RyZWFtUmVhZGFibGUiOworICAg
ICAgLy8gQXN5bmNTb2NrZXRBZGFwdGVyOjpPblJlYWRFdmVudCh0aGlzKTsKKyAgICAgIC8vIFJU
Q19MT0coTFNfSU5GTykgPDwgIiAtLSBvblN0cmVhbVdyaXRlYWJsZSI7CisgICAgICAvLyBBc3lu
Y1NvY2tldEFkYXB0ZXI6Ok9uV3JpdGVFdmVudCh0aGlzKTsKICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBTU0xfRVJST1JfV0FOVF9SRUFEOgpAQCAtNDYyLDggKzQ2Myw5IEBAIHZvaWQgT3BlblNT
TEFkYXB0ZXI6OkVycm9yKGNvbnN0IGNoYXIqIGNvbnRleHQsIGludCBlcnIsIGJvb2wgc2lnbmFs
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgPDwgIikiOwogICBzdGF0ZV8gPSBTU0xfRVJST1I7
CiAgIFNldEVycm9yKGVycik7Ci0gIGlmIChzaWduYWwpCisgIGlmIChzaWduYWwpIHsKICAgICBB
c3luY1NvY2tldEFkYXB0ZXI6Ok9uQ2xvc2VFdmVudCh0aGlzLCBlcnIpOworICB9CiB9CiAKIHZv
aWQgT3BlblNTTEFkYXB0ZXI6OkNsZWFudXAoKSB7CkBAIC01MjgsMjMgKzUzMCwyMCBAQCBpbnQg
T3BlblNTTEFkYXB0ZXI6OkRvU3NsV3JpdGUoY29uc3Qgdm9pZCogcHYsIHNpemVfdCBjYiwgaW50
KiBlcnJvcikgewogICByZXR1cm4gU09DS0VUX0VSUk9SOwogfQogCi0vLworLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwogLy8gQXN5bmNTb2NrZXQgSW1wbGVtZW50YXRpb24KLS8vCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCiAKIGludCBPcGVuU1NMQWRhcHRlcjo6U2VuZChjb25zdCB2b2lkKiBwdiwg
c2l6ZV90IGNiKSB7CiAgIHN3aXRjaCAoc3RhdGVfKSB7CiAgICAgY2FzZSBTU0xfTk9ORToKICAg
ICAgIHJldHVybiBBc3luY1NvY2tldEFkYXB0ZXI6OlNlbmQocHYsIGNiKTsKLQogICAgIGNhc2Ug
U1NMX1dBSVQ6CiAgICAgY2FzZSBTU0xfQ09OTkVDVElORzoKICAgICAgIFNldEVycm9yKEVOT1RD
T05OKTsKICAgICAgIHJldHVybiBTT0NLRVRfRVJST1I7Ci0KICAgICBjYXNlIFNTTF9DT05ORUNU
RUQ6CiAgICAgICBicmVhazsKLQogICAgIGNhc2UgU1NMX0VSUk9SOgogICAgIGRlZmF1bHQ6CiAg
ICAgICByZXR1cm4gU09DS0VUX0VSUk9SOwpAQCAtNTY3LDggKzU2Niw5IEBAIGludCBPcGVuU1NM
QWRhcHRlcjo6U2VuZChjb25zdCB2b2lkKiBwdiwgc2l6ZV90IGNiKSB7CiAgIH0KIAogICAvLyBP
cGVuU1NMIHdpbGwgcmV0dXJuIGFuIGVycm9yIGlmIHdlIHRyeSB0byB3cml0ZSB6ZXJvIGJ5dGVz
Ci0gIGlmIChjYiA9PSAwKQorICBpZiAoY2IgPT0gMCkgewogICAgIHJldHVybiAwOworICB9CiAK
ICAgcmV0ID0gRG9Tc2xXcml0ZShwdiwgY2IsICZlcnJvcik7CiAKQEAgLTU5NSw3ICs1OTUsNiBA
QCBpbnQgT3BlblNTTEFkYXB0ZXI6OlNlbmQoY29uc3Qgdm9pZCogcHYsIHNpemVfdCBjYikgewog
ICAgIC8vIHNpemUuIFRoZSB1c2VyIG9mIHRoaXMgY2xhc3MgY2FuIGNvbnNpZGVyIGl0IHNlbnQu
CiAgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ+KGNiKTsKICAgfQotCiAgIHJldHVy
biByZXQ7CiB9CiAKQEAgLTYwOCw3ICs2MDcsNiBAQCBpbnQgT3BlblNTTEFkYXB0ZXI6OlNlbmRU
byhjb25zdCB2b2lkKiBwdiwKICAgfQogCiAgIFNldEVycm9yKEVOT1RDT05OKTsKLQogICByZXR1
cm4gU09DS0VUX0VSUk9SOwogfQogCkBAIC02MTYsMjggKzYxNCwyNiBAQCBpbnQgT3BlblNTTEFk
YXB0ZXI6OlJlY3Yodm9pZCogcHYsIHNpemVfdCBjYiwgaW50NjRfdCogdGltZXN0YW1wKSB7CiAg
IHN3aXRjaCAoc3RhdGVfKSB7CiAgICAgY2FzZSBTU0xfTk9ORToKICAgICAgIHJldHVybiBBc3lu
Y1NvY2tldEFkYXB0ZXI6OlJlY3YocHYsIGNiLCB0aW1lc3RhbXApOwotCiAgICAgY2FzZSBTU0xf
V0FJVDoKICAgICBjYXNlIFNTTF9DT05ORUNUSU5HOgogICAgICAgU2V0RXJyb3IoRU5PVENPTk4p
OwogICAgICAgcmV0dXJuIFNPQ0tFVF9FUlJPUjsKLQogICAgIGNhc2UgU1NMX0NPTk5FQ1RFRDoK
ICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBTU0xfRVJST1I6CiAgICAgZGVmYXVsdDoKICAgICAg
IHJldHVybiBTT0NLRVRfRVJST1I7CiAgIH0KIAogICAvLyBEb24ndCB0cnVzdCBPcGVuU1NMIHdp
dGggemVybyBieXRlIHJlYWRzCi0gIGlmIChjYiA9PSAwKQorICBpZiAoY2IgPT0gMCkgewogICAg
IHJldHVybiAwOworICB9CiAKICAgc3NsX3JlYWRfbmVlZHNfd3JpdGVfID0gZmFsc2U7Ci0KICAg
aW50IGNvZGUgPSBTU0xfcmVhZChzc2xfLCBwdiwgY2hlY2tlZF9jYXN0PGludD4oY2IpKTsKICAg
aW50IGVycm9yID0gU1NMX2dldF9lcnJvcihzc2xfLCBjb2RlKTsKKwogICBzd2l0Y2ggKGVycm9y
KSB7CiAgICAgY2FzZSBTU0xfRVJST1JfTk9ORToKICAgICAgIHJldHVybiBjb2RlOwpAQCAtNjYw
LDcgKzY1Niw2IEBAIGludCBPcGVuU1NMQWRhcHRlcjo6UmVjdih2b2lkKiBwdiwgc2l6ZV90IGNi
LCBpbnQ2NF90KiB0aW1lc3RhbXApIHsKICAgICAgIEVycm9yKCJTU0xfcmVhZCIsIChjb2RlID8g
Y29kZSA6IC0xKSwgZmFsc2UpOwogICAgICAgYnJlYWs7CiAgIH0KLQogICByZXR1cm4gU09DS0VU
X0VSUk9SOwogfQogCkBAIC02NzAsMTQgKzY2NSwxMSBAQCBpbnQgT3BlblNTTEFkYXB0ZXI6OlJl
Y3ZGcm9tKHZvaWQqIHB2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90KiB0
aW1lc3RhbXApIHsKICAgaWYgKHNvY2tldF8tPkdldFN0YXRlKCkgPT0gU29ja2V0OjpDU19DT05O
RUNURUQpIHsKICAgICBpbnQgcmV0ID0gUmVjdihwdiwgY2IsIHRpbWVzdGFtcCk7Ci0KICAgICAq
cGFkZHIgPSBHZXRSZW1vdGVBZGRyZXNzKCk7Ci0KICAgICByZXR1cm4gcmV0OwogICB9CiAKICAg
U2V0RXJyb3IoRU5PVENPTk4pOwotCiAgIHJldHVybiBTT0NLRVRfRVJST1I7CiB9CiAKQEAgLTY4
OCwxMiArNjgwLDExIEBAIGludCBPcGVuU1NMQWRhcHRlcjo6Q2xvc2UoKSB7CiB9CiAKIFNvY2tl
dDo6Q29ublN0YXRlIE9wZW5TU0xBZGFwdGVyOjpHZXRTdGF0ZSgpIGNvbnN0IHsKLSAgLy8gaWYg
KHNpZ25hbF9jbG9zZV8pCi0gIC8vICByZXR1cm4gQ1NfQ09OTkVDVEVEOwogICBDb25uU3RhdGUg
c3RhdGUgPSBzb2NrZXRfLT5HZXRTdGF0ZSgpOwogICBpZiAoKHN0YXRlID09IENTX0NPTk5FQ1RF
RCkgJiYKLSAgICAgICgoc3RhdGVfID09IFNTTF9XQUlUKSB8fCAoc3RhdGVfID09IFNTTF9DT05O
RUNUSU5HKSkpCisgICAgICAoKHN0YXRlXyA9PSBTU0xfV0FJVCkgfHwgKHN0YXRlXyA9PSBTU0xf
Q09OTkVDVElORykpKSB7CiAgICAgc3RhdGUgPSBDU19DT05ORUNUSU5HOworICB9CiAgIHJldHVy
biBzdGF0ZTsKIH0KIApAQCAtNzM2LDggKzcyNyw5IEBAIHZvaWQgT3BlblNTTEFkYXB0ZXI6Ok9u
UmVhZEV2ZW50KEFzeW5jU29ja2V0KiBzb2NrZXQpIHsKICAgICByZXR1cm47CiAgIH0KIAotICBp
ZiAoc3RhdGVfICE9IFNTTF9DT05ORUNURUQpCisgIGlmIChzdGF0ZV8gIT0gU1NMX0NPTk5FQ1RF
RCkgewogICAgIHJldHVybjsKKyAgfQogCiAgIC8vIERvbid0IGxldCBvdXJzZWx2ZXMgZ28gYXdh
eSBkdXJpbmcgdGhlIGNhbGxiYWNrcwogICAvLyBQUmVmUHRyPE9wZW5TU0xBZGFwdGVyPiBsb2Nr
KHRoaXMpOyAvLyBUT0RPKGJlbndyaWdodCk6IGZpeCB0aGlzCkBAIC03NjEsOCArNzUzLDkgQEAg
dm9pZCBPcGVuU1NMQWRhcHRlcjo6T25Xcml0ZUV2ZW50KEFzeW5jU29ja2V0KiBzb2NrZXQpIHsK
ICAgICByZXR1cm47CiAgIH0KIAotICBpZiAoc3RhdGVfICE9IFNTTF9DT05ORUNURUQpCisgIGlm
IChzdGF0ZV8gIT0gU1NMX0NPTk5FQ1RFRCkgewogICAgIHJldHVybjsKKyAgfQogCiAgIC8vIERv
bid0IGxldCBvdXJzZWx2ZXMgZ28gYXdheSBkdXJpbmcgdGhlIGNhbGxiYWNrcwogICAvLyBQUmVm
UHRyPE9wZW5TU0xBZGFwdGVyPiBsb2NrKHRoaXMpOyAvLyBUT0RPKGJlbndyaWdodCk6IGZpeCB0
aGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9vcGVuc3NsYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuaAppbmRleCA1MGE3YzA4NDVj
YTQ1OWRlZGQyODIxMDVjNzczYWM5N2VhOGEyZDZhLi4yZTNhMzU1ZjQzOWU3NTBlNWMyMmM4YWE5
YmM2YWI2OTZiODVjOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsYWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xhZGFwdGVyLmgK
QEAgLTExLDI1ICsxMSwyOCBAQAogI2lmbmRlZiBSVENfQkFTRV9PUEVOU1NMQURBUFRFUl9IXwog
I2RlZmluZSBSVENfQkFTRV9PUEVOU1NMQURBUFRFUl9IXwogCi0jaW5jbHVkZSA8b3BlbnNzbC9v
c3NsX3R5cC5oPgotCi0jaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1
ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5j
bHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvYXN5bmNzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L21lc3NhZ2VxdWV1ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xpZGVudGl0eS5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL29wZW5zc2xzZXNzaW9uY2FjaGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
c3NsYWRhcHRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zc2xzdHJl
YW1hZGFwdGVyLmgiCiAKIG5hbWVzcGFjZSBydGMgewogCi1jbGFzcyBPcGVuU1NMQWRhcHRlciA6
IHB1YmxpYyBTU0xBZGFwdGVyLCBwdWJsaWMgTWVzc2FnZUhhbmRsZXIgeworY2xhc3MgT3BlblNT
TEFkYXB0ZXIgZmluYWwgOiBwdWJsaWMgU1NMQWRhcHRlciwgcHVibGljIE1lc3NhZ2VIYW5kbGVy
IHsKICBwdWJsaWM6CiAgIHN0YXRpYyBib29sIEluaXRpYWxpemVTU0woKTsKICAgc3RhdGljIGJv
b2wgQ2xlYW51cFNTTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmlj
YXRlLmNjCmluZGV4IDIzNmJlZjU1YzhhYWM5NWE2YzcxNDM3NGI4YTJjMGNlYTc3YjEyZGMuLjRl
MzI1ZGNlYzAxOGZjOTI1MzZhMGNlNWM4MjhjMzJhOTgyOTM4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0
aWZpY2F0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MKQEAgLTEwLDEwICsxMCw2IEBACiAKICNp
bmNsdWRlICJydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKIAotI2luY2x1ZGUgPG1lbW9y
eT4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQogI2lmIGRlZmluZWQo
V0VCUlRDX1dJTikKIC8vIE11c3QgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIG9wZW5zc2wgaGVh
ZGVycy4KICNpbmNsdWRlICJydGNfYmFzZS93aW4zMi5oIiAgLy8gTk9MSU5UCkBAIC0yMSw2MyAr
MTcsNjkgQEAKIAogI2luY2x1ZGUgPG9wZW5zc2wvYmlvLmg+CiAjaW5jbHVkZSA8b3BlbnNzbC9i
bi5oPgotI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9lcnIu
aD4KICNpbmNsdWRlIDxvcGVuc3NsL3BlbS5oPgotI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+Cisj
aW5jbHVkZSA8dGltZS5oPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dp
bmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2Vk
aWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsZGlnZXN0LmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbHV0
aWxpdHkuaCIKLSNpZm5kZWYgV0VCUlRDX0VYQ0xVREVfQlVJTFRfSU5fU1NMX1JPT1RfQ0VSVFMK
LSNpbmNsdWRlICJydGNfYmFzZS9zc2xyb290cy5oIgotI2VuZGlmICAvLyBXRUJSVENfRVhDTFVE
RV9CVUlMVF9JTl9TU0xfUk9PVF9DRVJUUwogCiBuYW1lc3BhY2UgcnRjIHsKLQotLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotLy8gT3BlblNTTENlcnRpZmljYXRlCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIFdlIGNvdWxk
IGhhdmUgZXhwb3NlZCBhIG15cmlhZCBvZiBwYXJhbWV0ZXJzIGZvciB0aGUgY3J5cHRvIHN0dWZm
LAotLy8gYnV0IGtlZXBpbmcgaXQgc2ltcGxlIHNlZW1zIGJlc3QuCituYW1lc3BhY2UgewogCiAv
LyBSYW5kb20gYml0cyBmb3IgY2VydGlmaWNhdGUgc2VyaWFsIG51bWJlcgogc3RhdGljIGNvbnN0
IGludCBTRVJJQUxfUkFORF9CSVRTID0gNjQ7CiAKKyNpZiAhZGVmaW5lZChOREVCVUcpCisvLyBQ
cmludCBhIGNlcnRpZmljYXRlIHRvIHRoZSBsb2csIGZvciBkZWJ1Z2dpbmcuCitzdGF0aWMgdm9p
ZCBQcmludENlcnQoWDUwOSogeDUwOSkgeworICBCSU8qIHRlbXBfbWVtb3J5X2JpbyA9IEJJT19u
ZXcoQklPX3NfbWVtKCkpOworICBpZiAoIXRlbXBfbWVtb3J5X2JpbykgeworICAgIFJUQ19ETE9H
X0YoTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gYWxsb2NhdGUgdGVtcG9yYXJ5IG1lbW9yeSBiaW8i
OworICAgIHJldHVybjsKKyAgfQorICBYNTA5X3ByaW50X2V4KHRlbXBfbWVtb3J5X2JpbywgeDUw
OSwgWE5fRkxBR19TRVBfQ1BMVVNfU1BDLCAwKTsKKyAgQklPX3dyaXRlKHRlbXBfbWVtb3J5X2Jp
bywgIlwwIiwgMSk7CisgIGNoYXIqIGJ1ZmZlcjsKKyAgQklPX2dldF9tZW1fZGF0YSh0ZW1wX21l
bW9yeV9iaW8sICZidWZmZXIpOworICBSVENfRExPRyhMU19WRVJCT1NFKSA8PCBidWZmZXI7Cisg
IEJJT19mcmVlKHRlbXBfbWVtb3J5X2Jpbyk7Cit9CisjZW5kaWYKKwogLy8gR2VuZXJhdGUgYSBz
ZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSwgd2l0aCB0aGUgcHVibGljIGtleSBmcm9tIHRoZQogLy8g
Z2l2ZW4ga2V5IHBhaXIuIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGUgcmV0
dXJuZWQgb2JqZWN0Lgogc3RhdGljIFg1MDkqIE1ha2VDZXJ0aWZpY2F0ZShFVlBfUEtFWSogcGtl
eSwgY29uc3QgU1NMSWRlbnRpdHlQYXJhbXMmIHBhcmFtcykgewogICBSVENfTE9HKExTX0lORk8p
IDw8ICJNYWtpbmcgY2VydGlmaWNhdGUgZm9yICIgPDwgcGFyYW1zLmNvbW1vbl9uYW1lOwotICBY
NTA5KiB4NTA5ID0gbnVsbHB0cjsKKworICBBU04xX0lOVEVHRVIqIGFzbjFfc2VyaWFsX251bWJl
ciA9IG51bGxwdHI7CiAgIEJJR05VTSogc2VyaWFsX251bWJlciA9IG51bGxwdHI7CisgIFg1MDkq
IHg1MDkgPSBudWxscHRyOwogICBYNTA5X05BTUUqIG5hbWUgPSBudWxscHRyOwogICB0aW1lX3Qg
ZXBvY2hfb2ZmID0gMDsgIC8vIFRpbWUgb2Zmc2V0IHNpbmNlIGVwb2NoLgogCi0gIGlmICgoeDUw
OSA9IFg1MDlfbmV3KCkpID09IG51bGxwdHIpCisgIGlmICgoeDUwOSA9IFg1MDlfbmV3KCkpID09
IG51bGxwdHIpIHsKICAgICBnb3RvIGVycm9yOwotCi0gIGlmICghWDUwOV9zZXRfcHVia2V5KHg1
MDksIHBrZXkpKQorICB9CisgIGlmICghWDUwOV9zZXRfcHVia2V5KHg1MDksIHBrZXkpKSB7CiAg
ICAgZ290byBlcnJvcjsKLQotICAvLyBzZXJpYWwgbnVtYmVyCi0gIC8vIHRlbXBvcmFyeSByZWZl
cmVuY2UgdG8gc2VyaWFsIG51bWJlciBpbnNpZGUgeDUwOSBzdHJ1Y3QKLSAgQVNOMV9JTlRFR0VS
KiBhc24xX3NlcmlhbF9udW1iZXI7CisgIH0KKyAgLy8gc2VyaWFsIG51bWJlciAtIHRlbXBvcmFy
eSByZWZlcmVuY2UgdG8gc2VyaWFsIG51bWJlciBpbnNpZGUgeDUwOSBzdHJ1Y3QKICAgaWYgKChz
ZXJpYWxfbnVtYmVyID0gQk5fbmV3KCkpID09IG51bGxwdHIgfHwKICAgICAgICFCTl9wc2V1ZG9f
cmFuZChzZXJpYWxfbnVtYmVyLCBTRVJJQUxfUkFORF9CSVRTLCAwLCAwKSB8fAogICAgICAgKGFz
bjFfc2VyaWFsX251bWJlciA9IFg1MDlfZ2V0X3NlcmlhbE51bWJlcih4NTA5KSkgPT0gbnVsbHB0
ciB8fAotICAgICAgIUJOX3RvX0FTTjFfSU5URUdFUihzZXJpYWxfbnVtYmVyLCBhc24xX3Nlcmlh
bF9udW1iZXIpKQorICAgICAgIUJOX3RvX0FTTjFfSU5URUdFUihzZXJpYWxfbnVtYmVyLCBhc24x
X3NlcmlhbF9udW1iZXIpKSB7CiAgICAgZ290byBlcnJvcjsKLQotICBpZiAoIVg1MDlfc2V0X3Zl
cnNpb24oeDUwOSwgMkwpKSAgLy8gdmVyc2lvbiAzCisgIH0KKyAgLy8gU2V0IHZlcnNpb24gdG8g
WDUwOS5WMworICBpZiAoIVg1MDlfc2V0X3ZlcnNpb24oeDUwOSwgMkwpKSB7CiAgICAgZ290byBl
cnJvcjsKKyAgfQogCiAgIC8vIFRoZXJlIGFyZSBhIGxvdCBvZiBwb3NzaWJsZSBjb21wb25lbnRz
IGZvciB0aGUgbmFtZSBlbnRyaWVzLiBJbgogICAvLyBvdXIgUDJQIFNTTCBtb2RlIGhvd2V2ZXIs
IHRoZSBjZXJ0aWZpY2F0ZXMgYXJlIHByZS1leGNoYW5nZWQKQEAgLTkwLDE1ICs5MiwxNiBAQCBz
dGF0aWMgWDUwOSogTWFrZUNlcnRpZmljYXRlKEVWUF9QS0VZKiBwa2V5LCBjb25zdCBTU0xJZGVu
dGl0eVBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAhWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9OSUQo
bmFtZSwgTklEX2NvbW1vbk5hbWUsIE1CU1RSSU5HX1VURjgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIqKXBhcmFtcy5jb21tb25fbmFtZS5jX3N0cigp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgMCkgfHwKLSAgICAg
ICFYNTA5X3NldF9zdWJqZWN0X25hbWUoeDUwOSwgbmFtZSkgfHwgIVg1MDlfc2V0X2lzc3Vlcl9u
YW1lKHg1MDksIG5hbWUpKQorICAgICAgIVg1MDlfc2V0X3N1YmplY3RfbmFtZSh4NTA5LCBuYW1l
KSB8fCAhWDUwOV9zZXRfaXNzdWVyX25hbWUoeDUwOSwgbmFtZSkpIHsKICAgICBnb3RvIGVycm9y
OwotCisgIH0KICAgaWYgKCFYNTA5X3RpbWVfYWRqKFg1MDlfZ2V0X25vdEJlZm9yZSh4NTA5KSwg
cGFyYW1zLm5vdF9iZWZvcmUsICZlcG9jaF9vZmYpIHx8Ci0gICAgICAhWDUwOV90aW1lX2FkaihY
NTA5X2dldF9ub3RBZnRlcih4NTA5KSwgcGFyYW1zLm5vdF9hZnRlciwgJmVwb2NoX29mZikpCisg
ICAgICAhWDUwOV90aW1lX2FkaihYNTA5X2dldF9ub3RBZnRlcih4NTA5KSwgcGFyYW1zLm5vdF9h
ZnRlciwgJmVwb2NoX29mZikpIHsKICAgICBnb3RvIGVycm9yOwotCi0gIGlmICghWDUwOV9zaWdu
KHg1MDksIHBrZXksIEVWUF9zaGEyNTYoKSkpCisgIH0KKyAgaWYgKCFYNTA5X3NpZ24oeDUwOSwg
cGtleSwgRVZQX3NoYTI1NigpKSkgewogICAgIGdvdG8gZXJyb3I7CisgIH0KIAogICBCTl9mcmVl
KHNlcmlhbF9udW1iZXIpOwogICBYNTA5X05BTUVfZnJlZShuYW1lKTsKQEAgLTExMiwyOCArMTE1
LDE0IEBAIGVycm9yOgogICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmICFkZWZpbmVkKE5ERUJV
RykKLS8vIFByaW50IGEgY2VydGlmaWNhdGUgdG8gdGhlIGxvZywgZm9yIGRlYnVnZ2luZy4KLXN0
YXRpYyB2b2lkIFByaW50Q2VydChYNTA5KiB4NTA5KSB7Ci0gIEJJTyogdGVtcF9tZW1vcnlfYmlv
ID0gQklPX25ldyhCSU9fc19tZW0oKSk7Ci0gIGlmICghdGVtcF9tZW1vcnlfYmlvKSB7Ci0gICAg
UlRDX0RMT0dfRihMU19FUlJPUikgPDwgIkZhaWxlZCB0byBhbGxvY2F0ZSB0ZW1wb3JhcnkgbWVt
b3J5IGJpbyI7Ci0gICAgcmV0dXJuOwotICB9Ci0gIFg1MDlfcHJpbnRfZXgodGVtcF9tZW1vcnlf
YmlvLCB4NTA5LCBYTl9GTEFHX1NFUF9DUExVU19TUEMsIDApOwotICBCSU9fd3JpdGUodGVtcF9t
ZW1vcnlfYmlvLCAiXDAiLCAxKTsKLSAgY2hhciogYnVmZmVyOwotICBCSU9fZ2V0X21lbV9kYXRh
KHRlbXBfbWVtb3J5X2JpbywgJmJ1ZmZlcik7Ci0gIFJUQ19ETE9HKExTX1ZFUkJPU0UpIDw8IGJ1
ZmZlcjsKLSAgQklPX2ZyZWUodGVtcF9tZW1vcnlfYmlvKTsKLX0KLSNlbmRpZgorfSAgLy8gbmFt
ZXNwYWNlCiAKIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6T3BlblNTTENlcnRpZmljYXRlKFg1MDkqIHg1
MDkpIDogeDUwOV8oeDUwOSkgewotICBBZGRSZWZlcmVuY2UoKTsKKyAgUlRDX0RDSEVDSyh4NTA5
XyAhPSBudWxscHRyKTsKKyAgWDUwOV91cF9yZWYoeDUwOV8pOwogfQogCi1PcGVuU1NMQ2VydGlm
aWNhdGUqIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6R2VuZXJhdGUoCitzdGQ6OnVuaXF1ZV9wdHI8T3Bl
blNTTENlcnRpZmljYXRlPiBPcGVuU1NMQ2VydGlmaWNhdGU6OkdlbmVyYXRlKAogICAgIE9wZW5T
U0xLZXlQYWlyKiBrZXlfcGFpciwKICAgICBjb25zdCBTU0xJZGVudGl0eVBhcmFtcyYgcGFyYW1z
KSB7CiAgIFNTTElkZW50aXR5UGFyYW1zIGFjdHVhbF9wYXJhbXMocGFyYW1zKTsKQEAgLTE0OSwy
NSArMTM4LDI3IEBAIE9wZW5TU0xDZXJ0aWZpY2F0ZSogT3BlblNTTENlcnRpZmljYXRlOjpHZW5l
cmF0ZSgKICNpZiAhZGVmaW5lZChOREVCVUcpCiAgIFByaW50Q2VydCh4NTA5KTsKICNlbmRpZgot
ICBPcGVuU1NMQ2VydGlmaWNhdGUqIHJldCA9IG5ldyBPcGVuU1NMQ2VydGlmaWNhdGUoeDUwOSk7
CisgIGF1dG8gcmV0ID0gYWJzbDo6bWFrZV91bmlxdWU8T3BlblNTTENlcnRpZmljYXRlPih4NTA5
KTsKICAgWDUwOV9mcmVlKHg1MDkpOwogICByZXR1cm4gcmV0OwogfQogCi1PcGVuU1NMQ2VydGlm
aWNhdGUqIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6RnJvbVBFTVN0cmluZygKK3N0ZDo6dW5pcXVlX3B0
cjxPcGVuU1NMQ2VydGlmaWNhdGU+IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6RnJvbVBFTVN0cmluZygK
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGVtX3N0cmluZykgewogICBCSU8qIGJpbyA9IEJJT19u
ZXdfbWVtX2J1Zihjb25zdF9jYXN0PGNoYXIqPihwZW1fc3RyaW5nLmNfc3RyKCkpLCAtMSk7Ci0g
IGlmICghYmlvKQorICBpZiAoIWJpbykgewogICAgIHJldHVybiBudWxscHRyOworICB9CisKICAg
QklPX3NldF9tZW1fZW9mX3JldHVybihiaW8sIDApOwogICBYNTA5KiB4NTA5ID0KICAgICAgIFBF
TV9yZWFkX2Jpb19YNTA5KGJpbywgbnVsbHB0ciwgbnVsbHB0ciwgY29uc3RfY2FzdDxjaGFyKj4o
IlwwIikpOwogICBCSU9fZnJlZShiaW8pOyAgLy8gRnJlZXMgdGhlIEJJTywgYnV0IG5vdCB0aGUg
cG9pbnRlZC10byBzdHJpbmcuCiAKLSAgaWYgKCF4NTA5KQorICBpZiAoIXg1MDkpIHsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICBPcGVuU1NMQ2VydGlmaWNhdGUqIHJldCA9IG5ldyBPcGVuU1NM
Q2VydGlmaWNhdGUoeDUwOSk7CisgIH0KKyAgYXV0byByZXQgPSBhYnNsOjptYWtlX3VuaXF1ZTxP
cGVuU1NMQ2VydGlmaWNhdGU+KHg1MDkpOwogICBYNTA5X2ZyZWUoeDUwOSk7CiAgIHJldHVybiBy
ZXQ7CiB9CkBAIC0yMjksMTkgKzIyMCwxNiBAQCBib29sIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6Q29t
cHV0ZURpZ2VzdChjb25zdCBYNTA5KiB4NTA5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZGlnZXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QqIGxlbmd0aCkgewotICBjb25zdCBFVlBfTUQqIG1kOwotICB1
bnNpZ25lZCBpbnQgbjsKLQotICBpZiAoIU9wZW5TU0xEaWdlc3Q6OkdldERpZ2VzdEVWUChhbGdv
cml0aG0sICZtZCkpCisgIGNvbnN0IEVWUF9NRCogbWQgPSBudWxscHRyOworICB1bnNpZ25lZCBp
bnQgbiA9IDA7CisgIGlmICghT3BlblNTTERpZ2VzdDo6R2V0RGlnZXN0RVZQKGFsZ29yaXRobSwg
Jm1kKSkgewogICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAoc2l6ZSA8IHN0YXRpY19jYXN0PHNp
emVfdD4oRVZQX01EX3NpemUobWQpKSkKKyAgfQorICBpZiAoc2l6ZSA8IHN0YXRpY19jYXN0PHNp
emVfdD4oRVZQX01EX3NpemUobWQpKSkgewogICAgIHJldHVybiBmYWxzZTsKLQorICB9CiAgIFg1
MDlfZGlnZXN0KHg1MDksIG1kLCBkaWdlc3QsICZuKTsKLQogICAqbGVuZ3RoID0gbjsKLQogICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjQ5LDE4ICsyMzcsMTggQEAgT3BlblNTTENlcnRpZmljYXRl
Ojp+T3BlblNTTENlcnRpZmljYXRlKCkgewogICBYNTA5X2ZyZWUoeDUwOV8pOwogfQogCi1PcGVu
U1NMQ2VydGlmaWNhdGUqIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6R2V0UmVmZXJlbmNlKCkgY29uc3Qg
ewotICByZXR1cm4gbmV3IE9wZW5TU0xDZXJ0aWZpY2F0ZSh4NTA5Xyk7CitzdGQ6OnVuaXF1ZV9w
dHI8U1NMQ2VydGlmaWNhdGU+IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6Q2xvbmUoKSBjb25zdCB7Cisg
IHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxPcGVuU1NMQ2VydGlmaWNhdGU+KHg1MDlfKTsKIH0K
IAogc3RkOjpzdHJpbmcgT3BlblNTTENlcnRpZmljYXRlOjpUb1BFTVN0cmluZygpIGNvbnN0IHsK
ICAgQklPKiBiaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKICAgaWYgKCFiaW8pIHsKLSAgICBS
VENfRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7CisgICAgUlRDX0ZBVEFMKCkgPDwgIlVu
cmVhY2hhYmxlIGNvZGUuIjsKICAgfQogICBpZiAoIVBFTV93cml0ZV9iaW9fWDUwOShiaW8sIHg1
MDlfKSkgewogICAgIEJJT19mcmVlKGJpbyk7Ci0gICAgUlRDX0ZBVEFMKCkgPDwgInVucmVhY2hh
YmxlIGNvZGUiOworICAgIFJUQ19GQVRBTCgpIDw8ICJVbnJlYWNoYWJsZSBjb2RlLiI7CiAgIH0K
ICAgQklPX3dyaXRlKGJpbywgIlwwIiwgMSk7CiAgIGNoYXIqIGJ1ZmZlcjsKQEAgLTI3MywyNyAr
MjYxLDIxIEBAIHN0ZDo6c3RyaW5nIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9QRU1TdHJpbmcoKSBj
b25zdCB7CiB2b2lkIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9ERVIoQnVmZmVyKiBkZXJfYnVmZmVy
KSBjb25zdCB7CiAgIC8vIEluIGNhc2Ugb2YgZmFpbHVyZSwgbWFrZSBzdXJlIHRvIGxlYXZlIHRo
ZSBidWZmZXIgZW1wdHkuCiAgIGRlcl9idWZmZXItPlNldFNpemUoMCk7Ci0KICAgLy8gQ2FsY3Vs
YXRlcyB0aGUgREVSIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZSwgZnJvbSBzY3Jh
dGNoLgogICBCSU8qIGJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOwogICBpZiAoIWJpbykgewot
ICAgIFJUQ19GQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKyAgICBSVENfRkFUQUwoKSA8
PCAiVW5yZWFjaGFibGUgY29kZS4iOwogICB9CiAgIGlmICghaTJkX1g1MDlfYmlvKGJpbywgeDUw
OV8pKSB7CiAgICAgQklPX2ZyZWUoYmlvKTsKLSAgICBSVENfRkFUQUwoKSA8PCAidW5yZWFjaGFi
bGUgY29kZSI7CisgICAgUlRDX0ZBVEFMKCkgPDwgIlVucmVhY2hhYmxlIGNvZGUuIjsKICAgfQot
ICBjaGFyKiBkYXRhOworICBjaGFyKiBkYXRhID0gbnVsbHB0cjsKICAgc2l6ZV90IGxlbmd0aCA9
IEJJT19nZXRfbWVtX2RhdGEoYmlvLCAmZGF0YSk7CiAgIGRlcl9idWZmZXItPlNldERhdGEoZGF0
YSwgbGVuZ3RoKTsKICAgQklPX2ZyZWUoYmlvKTsKIH0KIAotdm9pZCBPcGVuU1NMQ2VydGlmaWNh
dGU6OkFkZFJlZmVyZW5jZSgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyh4NTA5XyAhPSBudWxscHRy
KTsKLSAgWDUwOV91cF9yZWYoeDUwOV8pOwotfQotCiBib29sIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6
b3BlcmF0b3I9PShjb25zdCBPcGVuU1NMQ2VydGlmaWNhdGUmIG90aGVyKSBjb25zdCB7CiAgIHJl
dHVybiBYNTA5X2NtcCh4NTA5Xywgb3RoZXIueDUwOV8pID09IDA7CiB9CkBAIC0zMDIsMTEgKzI4
NCw5IEBAIGJvb2wgT3BlblNTTENlcnRpZmljYXRlOjpvcGVyYXRvciE9KGNvbnN0IE9wZW5TU0xD
ZXJ0aWZpY2F0ZSYgb3RoZXIpIGNvbnN0IHsKICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwog
fQogCi0vLyBEb2N1bWVudGVkIGluIHNzbGlkZW50aXR5LmguCiBpbnQ2NF90IE9wZW5TU0xDZXJ0
aWZpY2F0ZTo6Q2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpIGNvbnN0IHsKICAgQVNOMV9USU1F
KiBleHBpcmVfdGltZSA9IFg1MDlfZ2V0X25vdEFmdGVyKHg1MDlfKTsKICAgYm9vbCBsb25nX2Zv
cm1hdDsKLQogICBpZiAoZXhwaXJlX3RpbWUtPnR5cGUgPT0gVl9BU04xX1VUQ1RJTUUpIHsKICAg
ICBsb25nX2Zvcm1hdCA9IGZhbHNlOwogICB9IGVsc2UgaWYgKGV4cGlyZV90aW1lLT50eXBlID09
IFZfQVNOMV9HRU5FUkFMSVpFRFRJTUUpIHsKQEAgLTMxNCw3ICsyOTQsNiBAQCBpbnQ2NF90IE9w
ZW5TU0xDZXJ0aWZpY2F0ZTo6Q2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpIGNvbnN0IHsKICAg
fSBlbHNlIHsKICAgICByZXR1cm4gLTE7CiAgIH0KLQogICByZXR1cm4gQVNOMVRpbWVUb1NlYyhl
eHBpcmVfdGltZS0+ZGF0YSwgZXhwaXJlX3RpbWUtPmxlbmd0aCwgbG9uZ19mb3JtYXQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5oCmluZGV4IGM3MzBm
ZmQwZGM5ZTc2OWM2YmQwZjk3ZDRlZTFlN2JkYzU0MjlmZjIuLjA4ODcyNWMwZDc1NTY1M2QzYjIz
MDM2NWM1NjMzMWNkMDQyYzA2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xj
ZXJ0aWZpY2F0ZS5oCkBAIC0xMSwzOCArMTEsMzggQEAKICNpZm5kZWYgUlRDX0JBU0VfT1BFTlNT
TENFUlRJRklDQVRFX0hfCiAjZGVmaW5lIFJUQ19CQVNFX09QRU5TU0xDRVJUSUZJQ0FURV9IXwog
Ci0jaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KKyNp
bmNsdWRlIDxvcGVuc3NsL29zc2xfdHlwLmg+CiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0j
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3NzbGNlcnRpZmljYXRlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIK
IAotdHlwZWRlZiBzdHJ1Y3Qgc3NsX2N0eF9zdCBTU0xfQ1RYOwotCiBuYW1lc3BhY2UgcnRjIHsK
IAogY2xhc3MgT3BlblNTTEtleVBhaXI7CiAKIC8vIE9wZW5TU0xDZXJ0aWZpY2F0ZSBlbmNhcHN1
bGF0ZXMgYW4gT3BlblNTTCBYNTA5KiBjZXJ0aWZpY2F0ZSBvYmplY3QsCiAvLyB3aGljaCBpcyBh
bHNvIHJlZmVyZW5jZSBjb3VudGVkIGluc2lkZSB0aGUgT3BlblNTTCBsaWJyYXJ5LgotY2xhc3Mg
T3BlblNTTENlcnRpZmljYXRlIDogcHVibGljIFNTTENlcnRpZmljYXRlIHsKK2NsYXNzIE9wZW5T
U0xDZXJ0aWZpY2F0ZSBmaW5hbCA6IHB1YmxpYyBTU0xDZXJ0aWZpY2F0ZSB7CiAgcHVibGljOgog
ICAvLyBYNTA5IG9iamVjdCBoYXMgaXRzIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnRlZC4gU28g
dGhlIGNhbGxlciBhbmQKICAgLy8gT3BlblNTTENlcnRpZmljYXRlIHNoYXJlIG93bmVyc2hpcC4K
ICAgZXhwbGljaXQgT3BlblNTTENlcnRpZmljYXRlKFg1MDkqIHg1MDkpOwogCi0gIHN0YXRpYyBP
cGVuU1NMQ2VydGlmaWNhdGUqIEdlbmVyYXRlKE9wZW5TU0xLZXlQYWlyKiBrZXlfcGFpciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1NMSWRlbnRpdHlQYXJh
bXMmIHBhcmFtcyk7Ci0gIHN0YXRpYyBPcGVuU1NMQ2VydGlmaWNhdGUqIEZyb21QRU1TdHJpbmco
Y29uc3Qgc3RkOjpzdHJpbmcmIHBlbV9zdHJpbmcpOworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PE9wZW5TU0xDZXJ0aWZpY2F0ZT4gR2VuZXJhdGUoCisgICAgICBPcGVuU1NMS2V5UGFpcioga2V5
X3BhaXIsCisgICAgICBjb25zdCBTU0xJZGVudGl0eVBhcmFtcyYgcGFyYW1zKTsKKyAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxPcGVuU1NMQ2VydGlmaWNhdGU+IEZyb21QRU1TdHJpbmcoCisgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgcGVtX3N0cmluZyk7CiAKICAgfk9wZW5TU0xDZXJ0aWZpY2F0
ZSgpIG92ZXJyaWRlOwogCi0gIE9wZW5TU0xDZXJ0aWZpY2F0ZSogR2V0UmVmZXJlbmNlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4gQ2xvbmUoKSBj
b25zdCBvdmVycmlkZTsKIAogICBYNTA5KiB4NTA5KCkgY29uc3QgeyByZXR1cm4geDUwOV87IH0K
IApAQCAtNjksOCArNjksNiBAQCBjbGFzcyBPcGVuU1NMQ2VydGlmaWNhdGUgOiBwdWJsaWMgU1NM
Q2VydGlmaWNhdGUgewogICBpbnQ2NF90IENlcnRpZmljYXRlRXhwaXJhdGlvblRpbWUoKSBjb25z
dCBvdmVycmlkZTsKIAogIHByaXZhdGU6Ci0gIHZvaWQgQWRkUmVmZXJlbmNlKCkgY29uc3Q7Ci0K
ICAgWDUwOSogeDUwOV87ICAvLyBOT1QgT1dORUQKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTihPcGVuU1NMQ2VydGlmaWNhdGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xkaWdlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Ns
ZGlnZXN0LmNjCmluZGV4IDliNjQ0YzQ2MGI1YTU4MzRiODM5ZmU2OGYxZjc0YmU5MGM3YzVjOTMu
LmRhOTBiNjVmODIyMWNhOTZjNmEwMzMzOWYyODg3ZDcwYjgyYjVhNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xk
aWdlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvb3BlbnNzbGRpZ2VzdC5jYwpAQCAtMTAsNyArMTAsNyBAQAogCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvb3BlbnNzbGRpZ2VzdC5oIgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiICAvLyBSVENfRENIRUNLLCBSVENfQ0hFQ0sK
ICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsLmgiCiAKIG5hbWVzcGFjZSBydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
b3BlbnNzbGRpZ2VzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvb3BlbnNzbGRpZ2VzdC5oCmluZGV4IGM0Y2QxZTAzMTRlZDRlMGFiZWRjZGJj
MDY3NmM4OTAwNmExYjZlYjAuLjgyZGM5YTk2Y2Q4NGJiYWYwYzdjZGFmMjcxYWMyMjQ3MGFjNTgy
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL29wZW5zc2xkaWdlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsZGlnZXN0LmgKQEAgLTExLDE0ICsxMSwx
NiBAQAogI2lmbmRlZiBSVENfQkFTRV9PUEVOU1NMRElHRVNUX0hfCiAjZGVmaW5lIFJUQ19CQVNF
X09QRU5TU0xESUdFU1RfSF8KIAotI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisjaW5jbHVkZSA8
b3BlbnNzbC9iYXNlLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RyaW5nPgog
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogCiBuYW1lc3BhY2UgcnRjIHsK
IAogLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGRpZ2VzdCBjbGFzcyB0aGF0IHVzZXMgT3Bl
blNTTC4KLWNsYXNzIE9wZW5TU0xEaWdlc3QgOiBwdWJsaWMgTWVzc2FnZURpZ2VzdCB7CitjbGFz
cyBPcGVuU1NMRGlnZXN0IGZpbmFsIDogcHVibGljIE1lc3NhZ2VEaWdlc3QgewogIHB1YmxpYzoK
ICAgLy8gQ3JlYXRlcyBhbiBPcGVuU1NMRGlnZXN0IHdpdGggfGFsZ29yaXRobXwgYXMgdGhlIGhh
c2ggYWxnb3JpdGhtLgogICBleHBsaWNpdCBPcGVuU1NMRGlnZXN0KGNvbnN0IHN0ZDo6c3RyaW5n
JiBhbGdvcml0aG0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmNjCmlu
ZGV4IGE4YzY5MTk3NzliZWRlNDc5MGY5ZmRmMGYxMTViNTcyY2VkNmU2ODUuLjk4NTBjODU1ZWEx
Njc5YTQxMzc5MjY5MGU2NWY5OTg2MmM0ZDQ0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xpZGVudGl0eS5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9v
cGVuc3NsaWRlbnRpdHkuY2MKQEAgLTIxLDE4ICsyMSwxNyBAQAogCiAjaW5jbHVkZSA8b3BlbnNz
bC9iaW8uaD4KICNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9jcnlw
dG8uaD4KICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgogI2luY2x1ZGUgPG9wZW5zc2wvcGVtLmg+
CiAjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KIAorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5j
bHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dp
bmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xk
aWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5oIgogCiBuYW1lc3Bh
Y2UgcnRjIHsKQEAgLTMxNiw3ICszMTUsNyBAQCBjb25zdCBTU0xDZXJ0Q2hhaW4mIE9wZW5TU0xJ
ZGVudGl0eTo6Y2VydF9jaGFpbigpIGNvbnN0IHsKIAogT3BlblNTTElkZW50aXR5KiBPcGVuU1NM
SWRlbnRpdHk6OkdldFJlZmVyZW5jZSgpIGNvbnN0IHsKICAgcmV0dXJuIG5ldyBPcGVuU1NMSWRl
bnRpdHkoYWJzbDo6V3JhcFVuaXF1ZShrZXlfcGFpcl8tPkdldFJlZmVyZW5jZSgpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6V3JhcFVuaXF1ZShjZXJ0X2NoYWluXy0+Q29w
eSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfY2hhaW5fLT5DbG9uZSgp
KTsKIH0KIAogYm9vbCBPcGVuU1NMSWRlbnRpdHk6OkNvbmZpZ3VyZUlkZW50aXR5KFNTTF9DVFgq
IGN0eCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuaAppbmRleCAzNDA0
NDI3NmNhNzY1OWJkZDc4NTU0NWJkOWJlZjExYjhjYWY5YzkyLi5mY2Y3ZGViZjkwNzJmZWIxMzVm
NzQ3MmYyNGNkNmIwYzBjYWNlYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsaWRl
bnRpdHkuaApAQCAtMTEsMjQgKzExLDIzIEBACiAjaWZuZGVmIFJUQ19CQVNFX09QRU5TU0xJREVO
VElUWV9IXwogI2RlZmluZSBSVENfQkFTRV9PUEVOU1NMSURFTlRJVFlfSF8KIAotI2luY2x1ZGUg
PG9wZW5zc2wvZXZwLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC94NTA5Lmg+CisjaW5jbHVkZSA8b3Bl
bnNzbC9vc3NsX3R5cC5oPgogCisjaW5jbHVkZSA8Y3RpbWU+CiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVu
c3NsY2VydGlmaWNhdGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5LmgiCiAKLXR5cGVkZWYgc3RydWN0IHNzbF9j
dHhfc3QgU1NMX0NUWDsKLQogbmFtZXNwYWNlIHJ0YyB7CiAKIC8vIE9wZW5TU0xLZXlQYWlyIGVu
Y2Fwc3VsYXRlcyBhbiBPcGVuU1NMIEVWUF9QS0VZKiBrZXlwYWlyIG9iamVjdCwKIC8vIHdoaWNo
IGlzIHJlZmVyZW5jZSBjb3VudGVkIGluc2lkZSB0aGUgT3BlblNTTCBsaWJyYXJ5LgotY2xhc3Mg
T3BlblNTTEtleVBhaXIgeworY2xhc3MgT3BlblNTTEtleVBhaXIgZmluYWwgewogIHB1YmxpYzoK
ICAgZXhwbGljaXQgT3BlblNTTEtleVBhaXIoRVZQX1BLRVkqIHBrZXkpIDogcGtleV8ocGtleSkg
ewogICAgIFJUQ19EQ0hFQ0socGtleV8gIT0gbnVsbHB0cik7CkBAIC01OSw3ICs1OCw3IEBAIGNs
YXNzIE9wZW5TU0xLZXlQYWlyIHsKIAogLy8gSG9sZHMgYSBrZXlwYWlyIGFuZCBjZXJ0aWZpY2F0
ZSB0b2dldGhlciwgYW5kIGEgbWV0aG9kIHRvIGdlbmVyYXRlCiAvLyB0aGVtIGNvbnNpc3RlbnRs
eS4KLWNsYXNzIE9wZW5TU0xJZGVudGl0eSA6IHB1YmxpYyBTU0xJZGVudGl0eSB7CitjbGFzcyBP
cGVuU1NMSWRlbnRpdHkgZmluYWwgOiBwdWJsaWMgU1NMSWRlbnRpdHkgewogIHB1YmxpYzoKICAg
c3RhdGljIE9wZW5TU0xJZGVudGl0eSogR2VuZXJhdGVXaXRoRXhwaXJhdGlvbihjb25zdCBzdGQ6
OnN0cmluZyYgY29tbW9uX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgS2V5UGFyYW1zJiBrZXlfcGFyYW1zLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNz
bHN0cmVhbWFkYXB0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9vcGVuc3Nsc3RyZWFtYWRhcHRlci5jYwppbmRleCBmZDU0YTA4MmE3ZDcz
ODU4M2U4ODRjODg4ZWVlNTA4MmY5NDM0ZjhlLi43MjdjYjg0YWFlOTVkYTM3NWMyNDc0YTkyZmJj
YzhlYjhkOTFkOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Nsc3RyZWFtYWRhcHRlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Nsc3RyZWFt
YWRhcHRlci5jYwpAQCAtMjIsNiArMjIsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxtZW1vcnk+
CisjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKQEAgLTMxLDYgKzMyLDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9vcGVu
c3NsYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xkaWdlc3QuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zc2xj
ZXJ0aWZpY2F0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCkBAIC0x
ODAsOCArMTgyLDkgQEAgc3RhdGljIEJJT19NRVRIT0QqIEJJT19zdHJlYW1fbWV0aG9kKCkgewog
CiBzdGF0aWMgQklPKiBCSU9fbmV3X3N0cmVhbShTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSkgewog
ICBCSU8qIHJldCA9IEJJT19uZXcoQklPX3N0cmVhbV9tZXRob2QoKSk7Ci0gIGlmIChyZXQgPT0g
bnVsbHB0cikKKyAgaWYgKHJldCA9PSBudWxscHRyKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7Cisg
IH0KICAgQklPX3NldF9kYXRhKHJldCwgc3RyZWFtKTsKICAgcmV0dXJuIHJldDsKIH0KQEAgLTE5
NiwxNCArMTk5LDE2IEBAIHN0YXRpYyBpbnQgc3RyZWFtX25ldyhCSU8qIGIpIHsKIH0KIAogc3Rh
dGljIGludCBzdHJlYW1fZnJlZShCSU8qIGIpIHsKLSAgaWYgKGIgPT0gbnVsbHB0cikKKyAgaWYg
KGIgPT0gbnVsbHB0cikgewogICAgIHJldHVybiAwOworICB9CiAgIHJldHVybiAxOwogfQogCiBz
dGF0aWMgaW50IHN0cmVhbV9yZWFkKEJJTyogYiwgY2hhciogb3V0LCBpbnQgb3V0bCkgewotICBp
ZiAoIW91dCkKKyAgaWYgKCFvdXQpIHsKICAgICByZXR1cm4gLTE7CisgIH0KICAgU3RyZWFtSW50
ZXJmYWNlKiBzdHJlYW0gPSBzdGF0aWNfY2FzdDxTdHJlYW1JbnRlcmZhY2UqPihCSU9fZ2V0X2Rh
dGEoYikpOwogICBCSU9fY2xlYXJfcmV0cnlfZmxhZ3MoYik7CiAgIHNpemVfdCByZWFkOwpAQCAt
MjE4LDggKzIyMyw5IEBAIHN0YXRpYyBpbnQgc3RyZWFtX3JlYWQoQklPKiBiLCBjaGFyKiBvdXQs
IGludCBvdXRsKSB7CiB9CiAKIHN0YXRpYyBpbnQgc3RyZWFtX3dyaXRlKEJJTyogYiwgY29uc3Qg
Y2hhciogaW4sIGludCBpbmwpIHsKLSAgaWYgKCFpbikKKyAgaWYgKCFpbikgewogICAgIHJldHVy
biAtMTsKKyAgfQogICBTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSA9IHN0YXRpY19jYXN0PFN0cmVh
bUludGVyZmFjZSo+KEJJT19nZXRfZGF0YShiKSk7CiAgIEJJT19jbGVhcl9yZXRyeV9mbGFncyhi
KTsKICAgc2l6ZV90IHdyaXR0ZW47CkBAIC0yOTYsNyArMzAyLDcgQEAgYm9vbCBPcGVuU1NMU3Ry
ZWFtQWRhcHRlcjo6U2V0UGVlckNlcnRpZmljYXRlRGlnZXN0KAogICAgIHNpemVfdCBkaWdlc3Rf
bGVuLAogICAgIFNTTFBlZXJDZXJ0aWZpY2F0ZURpZ2VzdEVycm9yKiBlcnJvcikgewogICBSVENf
RENIRUNLKCFwZWVyX2NlcnRpZmljYXRlX3ZlcmlmaWVkXyk7Ci0gIFJUQ19EQ0hFQ0soIWhhc19w
ZWVyX2NlcnRpZmljYXRlX2RpZ2VzdCgpKTsKKyAgUlRDX0RDSEVDSyghSGFzUGVlckNlcnRpZmlj
YXRlRGlnZXN0KCkpOwogICBzaXplX3QgZXhwZWN0ZWRfbGVuOwogICBpZiAoZXJyb3IpIHsKICAg
ICAqZXJyb3IgPSBTU0xQZWVyQ2VydGlmaWNhdGVEaWdlc3RFcnJvcjo6Tk9ORTsKQEAgLTM2Miw4
ICszNjgsOSBAQCBzdGQ6OnN0cmluZyBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6U3NsQ2lwaGVyU3Vp
dGVUb05hbWUoaW50IGNpcGhlcl9zdWl0ZSkgewogfQogCiBib29sIE9wZW5TU0xTdHJlYW1BZGFw
dGVyOjpHZXRTc2xDaXBoZXJTdWl0ZShpbnQqIGNpcGhlcl9zdWl0ZSkgewotICBpZiAoc3RhdGVf
ICE9IFNTTF9DT05ORUNURUQpCisgIGlmIChzdGF0ZV8gIT0gU1NMX0NPTk5FQ1RFRCkgewogICAg
IHJldHVybiBmYWxzZTsKKyAgfQogCiAgIGNvbnN0IFNTTF9DSVBIRVIqIGN1cnJlbnRfY2lwaGVy
ID0gU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2xfKTsKICAgaWYgKGN1cnJlbnRfY2lwaGVyID09
IG51bGxwdHIpIHsKQEAgLTM4MCwxNyArMzg3LDE5IEBAIGludCBPcGVuU1NMU3RyZWFtQWRhcHRl
cjo6R2V0U3NsVmVyc2lvbigpIGNvbnN0IHsKIAogICBpbnQgc3NsX3ZlcnNpb24gPSBTU0xfdmVy
c2lvbihzc2xfKTsKICAgaWYgKHNzbF9tb2RlXyA9PSBTU0xfTU9ERV9EVExTKSB7Ci0gICAgaWYg
KHNzbF92ZXJzaW9uID09IERUTFMxX1ZFUlNJT04pCisgICAgaWYgKHNzbF92ZXJzaW9uID09IERU
TFMxX1ZFUlNJT04pIHsKICAgICAgIHJldHVybiBTU0xfUFJPVE9DT0xfRFRMU18xMDsKLSAgICBl
bHNlIGlmIChzc2xfdmVyc2lvbiA9PSBEVExTMV8yX1ZFUlNJT04pCisgICAgfSBlbHNlIGlmIChz
c2xfdmVyc2lvbiA9PSBEVExTMV8yX1ZFUlNJT04pIHsKICAgICAgIHJldHVybiBTU0xfUFJPVE9D
T0xfRFRMU18xMjsKKyAgICB9CiAgIH0gZWxzZSB7Ci0gICAgaWYgKHNzbF92ZXJzaW9uID09IFRM
UzFfVkVSU0lPTikKKyAgICBpZiAoc3NsX3ZlcnNpb24gPT0gVExTMV9WRVJTSU9OKSB7CiAgICAg
ICByZXR1cm4gU1NMX1BST1RPQ09MX1RMU18xMDsKLSAgICBlbHNlIGlmIChzc2xfdmVyc2lvbiA9
PSBUTFMxXzFfVkVSU0lPTikKKyAgICB9IGVsc2UgaWYgKHNzbF92ZXJzaW9uID09IFRMUzFfMV9W
RVJTSU9OKSB7CiAgICAgICByZXR1cm4gU1NMX1BST1RPQ09MX1RMU18xMTsKLSAgICBlbHNlIGlm
IChzc2xfdmVyc2lvbiA9PSBUTFMxXzJfVkVSU0lPTikKKyAgICB9IGVsc2UgaWYgKHNzbF92ZXJz
aW9uID09IFRMUzFfMl9WRVJTSU9OKSB7CiAgICAgICByZXR1cm4gU1NMX1BST1RPQ09MX1RMU18x
MjsKKyAgICB9CiAgIH0KIAogICByZXR1cm4gLTE7CkBAIC00MDMsMTUgKzQxMiwxMSBAQCBib29s
IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpFeHBvcnRLZXlpbmdNYXRlcmlhbChjb25zdCBzdGQ6OnN0
cmluZyYgbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHVzZV9jb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCogcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlc3VsdF9sZW4pIHsKLSAgaW50IGk7Ci0K
LSAgaSA9IFNTTF9leHBvcnRfa2V5aW5nX21hdGVyaWFsKHNzbF8sIHJlc3VsdCwgcmVzdWx0X2xl
biwgbGFiZWwuY19zdHIoKSwKKyAgaWYgKFNTTF9leHBvcnRfa2V5aW5nX21hdGVyaWFsKHNzbF8s
IHJlc3VsdCwgcmVzdWx0X2xlbiwgbGFiZWwuY19zdHIoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxhYmVsLmxlbmd0aCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjb250ZXh0
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfbGVuLCB1c2VfY29u
dGV4dCk7Ci0KLSAgaWYgKGkgIT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHRfbGVuLCB1c2VfY29udGV4dCkgIT0gMSkgewogICAgIHJldHVybiBmYWxzZTsKLQor
ICB9CiAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MTksOCArNDI0LDkgQEAgYm9vbCBPcGVuU1NM
U3RyZWFtQWRhcHRlcjo6U2V0RHRsc1NydHBDcnlwdG9TdWl0ZXMoCiAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8aW50PiYgY2lwaGVycykgewogICBzdGQ6OnN0cmluZyBpbnRlcm5hbF9jaXBoZXJzOwog
Ci0gIGlmIChzdGF0ZV8gIT0gU1NMX05PTkUpCisgIGlmIChzdGF0ZV8gIT0gU1NMX05PTkUpIHsK
ICAgICByZXR1cm4gZmFsc2U7CisgIH0KIAogICBmb3IgKHN0ZDo6dmVjdG9yPGludD46OmNvbnN0
X2l0ZXJhdG9yIGNpcGhlciA9IGNpcGhlcnMuYmVnaW4oKTsKICAgICAgICBjaXBoZXIgIT0gY2lw
aGVycy5lbmQoKTsgKytjaXBoZXIpIHsKQEAgLTQyOSw4ICs0MzUsOSBAQCBib29sIE9wZW5TU0xT
dHJlYW1BZGFwdGVyOjpTZXREdGxzU3J0cENyeXB0b1N1aXRlcygKICAgICAgICAgICsrZW50cnkp
IHsKICAgICAgIGlmICgqY2lwaGVyID09IGVudHJ5LT5pZCkgewogICAgICAgICBmb3VuZCA9IHRy
dWU7Ci0gICAgICAgIGlmICghaW50ZXJuYWxfY2lwaGVycy5lbXB0eSgpKQorICAgICAgICBpZiAo
IWludGVybmFsX2NpcGhlcnMuZW1wdHkoKSkgewogICAgICAgICAgIGludGVybmFsX2NpcGhlcnMg
Kz0gIjoiOworICAgICAgICB9CiAgICAgICAgIGludGVybmFsX2NpcGhlcnMgKz0gZW50cnktPmlu
dGVybmFsX25hbWU7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtNDQyLDggKzQ0OSw5IEBA
IGJvb2wgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OlNldER0bHNTcnRwQ3J5cHRvU3VpdGVzKAogICAg
IH0KICAgfQogCi0gIGlmIChpbnRlcm5hbF9jaXBoZXJzLmVtcHR5KCkpCisgIGlmIChpbnRlcm5h
bF9jaXBoZXJzLmVtcHR5KCkpIHsKICAgICByZXR1cm4gZmFsc2U7CisgIH0KIAogICBzcnRwX2Np
cGhlcnNfID0gaW50ZXJuYWxfY2lwaGVyczsKICAgcmV0dXJuIHRydWU7CkBAIC00NTEsMTQgKzQ1
OSwxNiBAQCBib29sIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpTZXREdGxzU3J0cENyeXB0b1N1aXRl
cygKIAogYm9vbCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6R2V0RHRsc1NydHBDcnlwdG9TdWl0ZShp
bnQqIGNyeXB0b19zdWl0ZSkgewogICBSVENfRENIRUNLKHN0YXRlXyA9PSBTU0xfQ09OTkVDVEVE
KTsKLSAgaWYgKHN0YXRlXyAhPSBTU0xfQ09OTkVDVEVEKQorICBpZiAoc3RhdGVfICE9IFNTTF9D
T05ORUNURUQpIHsKICAgICByZXR1cm4gZmFsc2U7CisgIH0KIAogICBjb25zdCBTUlRQX1BST1RF
Q1RJT05fUFJPRklMRSogc3J0cF9wcm9maWxlID0KICAgICAgIFNTTF9nZXRfc2VsZWN0ZWRfc3J0
cF9wcm9maWxlKHNzbF8pOwogCi0gIGlmICghc3J0cF9wcm9maWxlKQorICBpZiAoIXNydHBfcHJv
ZmlsZSkgewogICAgIHJldHVybiBmYWxzZTsKKyAgfQogCiAgICpjcnlwdG9fc3VpdGUgPSBzcnRw
X3Byb2ZpbGUtPmlkOwogICBSVENfRENIRUNLKCFTcnRwQ3J5cHRvU3VpdGVUb05hbWUoKmNyeXB0
b19zdWl0ZSkuZW1wdHkoKSk7CkBAIC00NzAsOCArNDgwLDggQEAgYm9vbCBPcGVuU1NMU3RyZWFt
QWRhcHRlcjo6SXNUbHNDb25uZWN0ZWQoKSB7CiB9CiAKIGludCBPcGVuU1NMU3RyZWFtQWRhcHRl
cjo6U3RhcnRTU0woKSB7CisgIC8vIERvbid0IGFsbG93IFN0YXJ0U1NMIHRvIGJlIGNhbGxlZCB0
d2ljZS4KICAgaWYgKHN0YXRlXyAhPSBTU0xfTk9ORSkgewotICAgIC8vIERvbid0IGFsbG93IFN0
YXJ0U1NMIHRvIGJlIGNhbGxlZCB0d2ljZS4KICAgICByZXR1cm4gLTE7CiAgIH0KIApAQCAtNTI0
LDcgKzUzNCw3IEBAIFN0cmVhbVJlc3VsdCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6V3JpdGUoY29u
c3Qgdm9pZCogZGF0YSwKICAgICAgIHJldHVybiBTUl9CTE9DSzsKIAogICAgIGNhc2UgU1NMX0NP
Tk5FQ1RFRDoKLSAgICAgIGlmICh3YWl0aW5nX3RvX3ZlcmlmeV9wZWVyX2NlcnRpZmljYXRlKCkp
IHsKKyAgICAgIGlmIChXYWl0aW5nVG9WZXJpZnlQZWVyQ2VydGlmaWNhdGUoKSkgewogICAgICAg
ICByZXR1cm4gU1JfQkxPQ0s7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTUzMiwxNSArNTQy
LDE3IEBAIFN0cmVhbVJlc3VsdCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6V3JpdGUoY29uc3Qgdm9p
ZCogZGF0YSwKICAgICBjYXNlIFNTTF9FUlJPUjoKICAgICBjYXNlIFNTTF9DTE9TRUQ6CiAgICAg
ZGVmYXVsdDoKLSAgICAgIGlmIChlcnJvcikKKyAgICAgIGlmIChlcnJvcikgewogICAgICAgICAq
ZXJyb3IgPSBzc2xfZXJyb3JfY29kZV87CisgICAgICB9CiAgICAgICByZXR1cm4gU1JfRVJST1I7
CiAgIH0KIAogICAvLyBPcGVuU1NMIHdpbGwgcmV0dXJuIGFuIGVycm9yIGlmIHdlIHRyeSB0byB3
cml0ZSB6ZXJvIGJ5dGVzCiAgIGlmIChkYXRhX2xlbiA9PSAwKSB7Ci0gICAgaWYgKHdyaXR0ZW4p
CisgICAgaWYgKHdyaXR0ZW4pIHsKICAgICAgICp3cml0dGVuID0gMDsKKyAgICB9CiAgICAgcmV0
dXJuIFNSX1NVQ0NFU1M7CiAgIH0KIApAQCAtNTY3LDggKzU3OSw5IEBAIFN0cmVhbVJlc3VsdCBP
cGVuU1NMU3RyZWFtQWRhcHRlcjo6V3JpdGUoY29uc3Qgdm9pZCogZGF0YSwKICAgICBjYXNlIFNT
TF9FUlJPUl9aRVJPX1JFVFVSTjoKICAgICBkZWZhdWx0OgogICAgICAgRXJyb3IoIlNTTF93cml0
ZSIsIChzc2xfZXJyb3IgPyBzc2xfZXJyb3IgOiAtMSksIDAsIGZhbHNlKTsKLSAgICAgIGlmIChl
cnJvcikKKyAgICAgIGlmIChlcnJvcikgewogICAgICAgICAqZXJyb3IgPSBzc2xfZXJyb3JfY29k
ZV87CisgICAgICB9CiAgICAgICByZXR1cm4gU1JfRVJST1I7CiAgIH0KICAgLy8gbm90IHJlYWNo
ZWQKQEAgLTU4MywzMSArNTk2LDI5IEBAIFN0cmVhbVJlc3VsdCBPcGVuU1NMU3RyZWFtQWRhcHRl
cjo6UmVhZCh2b2lkKiBkYXRhLAogICAgIGNhc2UgU1NMX05PTkU6CiAgICAgICAvLyBwYXNzLXRo
cm91Z2ggaW4gY2xlYXIgdGV4dAogICAgICAgcmV0dXJuIFN0cmVhbUFkYXB0ZXJJbnRlcmZhY2U6
OlJlYWQoZGF0YSwgZGF0YV9sZW4sIHJlYWQsIGVycm9yKTsKLQogICAgIGNhc2UgU1NMX1dBSVQ6
CiAgICAgY2FzZSBTU0xfQ09OTkVDVElORzoKICAgICAgIHJldHVybiBTUl9CTE9DSzsKLQogICAg
IGNhc2UgU1NMX0NPTk5FQ1RFRDoKLSAgICAgIGlmICh3YWl0aW5nX3RvX3ZlcmlmeV9wZWVyX2Nl
cnRpZmljYXRlKCkpIHsKKyAgICAgIGlmIChXYWl0aW5nVG9WZXJpZnlQZWVyQ2VydGlmaWNhdGUo
KSkgewogICAgICAgICByZXR1cm4gU1JfQkxPQ0s7CiAgICAgICB9CiAgICAgICBicmVhazsKLQog
ICAgIGNhc2UgU1NMX0NMT1NFRDoKICAgICAgIHJldHVybiBTUl9FT1M7Ci0KICAgICBjYXNlIFNT
TF9FUlJPUjoKICAgICBkZWZhdWx0OgotICAgICAgaWYgKGVycm9yKQorICAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgICplcnJvciA9IHNzbF9lcnJvcl9jb2RlXzsKKyAgICAgIH0KICAgICAgIHJl
dHVybiBTUl9FUlJPUjsKICAgfQogCiAgIC8vIERvbid0IHRydXN0IE9wZW5TU0wgd2l0aCB6ZXJv
IGJ5dGUgcmVhZHMKICAgaWYgKGRhdGFfbGVuID09IDApIHsKLSAgICBpZiAocmVhZCkKKyAgICBp
ZiAocmVhZCkgewogICAgICAgKnJlYWQgPSAwOworICAgIH0KICAgICByZXR1cm4gU1JfU1VDQ0VT
UzsKICAgfQogCkBAIC02MjAsOCArNjMxLDkgQEAgU3RyZWFtUmVzdWx0IE9wZW5TU0xTdHJlYW1B
ZGFwdGVyOjpSZWFkKHZvaWQqIGRhdGEsCiAgICAgICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICIg
LS0gc3VjY2VzcyI7CiAgICAgICBSVENfRENIRUNLX0dUKGNvZGUsIDApOwogICAgICAgUlRDX0RD
SEVDS19MRShjb2RlLCBkYXRhX2xlbik7Ci0gICAgICBpZiAocmVhZCkKKyAgICAgIGlmIChyZWFk
KSB7CiAgICAgICAgICpyZWFkID0gY29kZTsKKyAgICAgIH0KIAogICAgICAgaWYgKHNzbF9tb2Rl
XyA9PSBTU0xfTU9ERV9EVExTKSB7CiAgICAgICAgIC8vIEVuZm9yY2UgYXRvbWljIHJlYWRzIC0t
IHRoaXMgaXMgYSBzaG9ydCByZWFkCkBAIC02MzAsOCArNjQyLDkgQEAgU3RyZWFtUmVzdWx0IE9w
ZW5TU0xTdHJlYW1BZGFwdGVyOjpSZWFkKHZvaWQqIGRhdGEsCiAgICAgICAgIGlmIChwZW5kaW5n
KSB7CiAgICAgICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiIC0tIHNob3J0IERUTFMgcmVhZC4g
Zmx1c2hpbmciOwogICAgICAgICAgIEZsdXNoSW5wdXQocGVuZGluZyk7Ci0gICAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgKmVycm9yID0gU1NF
X01TR19UUlVOQzsKKyAgICAgICAgICB9CiAgICAgICAgICAgcmV0dXJuIFNSX0VSUk9SOwogICAg
ICAgICB9CiAgICAgICB9CkBAIC02NTAsOCArNjYzLDkgQEAgU3RyZWFtUmVzdWx0IE9wZW5TU0xT
dHJlYW1BZGFwdGVyOjpSZWFkKHZvaWQqIGRhdGEsCiAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgRXJyb3IoIlNTTF9yZWFkIiwgKHNzbF9lcnJvciA/IHNzbF9lcnJvciA6IC0xKSwg
MCwgZmFsc2UpOwotICAgICAgaWYgKGVycm9yKQorICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAg
ICplcnJvciA9IHNzbF9lcnJvcl9jb2RlXzsKKyAgICAgIH0KICAgICAgIHJldHVybiBTUl9FUlJP
UjsKICAgfQogICAvLyBub3QgcmVhY2hlZApAQCAtNjk0LDEzICs3MDgsMTMgQEAgU3RyZWFtU3Rh
dGUgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OkdldFN0YXRlKCkgY29uc3QgewogICAgIGNhc2UgU1NM
X0NPTk5FQ1RJTkc6CiAgICAgICByZXR1cm4gU1NfT1BFTklORzsKICAgICBjYXNlIFNTTF9DT05O
RUNURUQ6Ci0gICAgICBpZiAod2FpdGluZ190b192ZXJpZnlfcGVlcl9jZXJ0aWZpY2F0ZSgpKSB7
CisgICAgICBpZiAoV2FpdGluZ1RvVmVyaWZ5UGVlckNlcnRpZmljYXRlKCkpIHsKICAgICAgICAg
cmV0dXJuIFNTX09QRU5JTkc7CiAgICAgICB9CiAgICAgICByZXR1cm4gU1NfT1BFTjsKICAgICBk
ZWZhdWx0OgogICAgICAgcmV0dXJuIFNTX0NMT1NFRDsKLSAgfTsKKyAgfQogICAvLyBub3QgcmVh
Y2hlZAogfQogCkBAIC03MTAsNiArNzI0LDcgQEAgdm9pZCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6
T25FdmVudChTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSwKICAgaW50IGV2ZW50c190b19zaWduYWwg
PSAwOwogICBpbnQgc2lnbmFsX2Vycm9yID0gMDsKICAgUlRDX0RDSEVDSyhzdHJlYW0gPT0gdGhp
cy0+c3RyZWFtKCkpOworCiAgIGlmICgoZXZlbnRzICYgU0VfT1BFTikpIHsKICAgICBSVENfTE9H
KExTX1ZFUkJPU0UpIDw8ICJPcGVuU1NMU3RyZWFtQWRhcHRlcjo6T25FdmVudCBTRV9PUEVOIjsK
ICAgICBpZiAoc3RhdGVfICE9IFNTTF9XQUlUKSB7CkBAIC03MjMsNiArNzM4LDcgQEAgdm9pZCBP
cGVuU1NMU3RyZWFtQWRhcHRlcjo6T25FdmVudChTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSwKICAg
ICAgIH0KICAgICB9CiAgIH0KKwogICBpZiAoKGV2ZW50cyAmIChTRV9SRUFEIHwgU0VfV1JJVEUp
KSkgewogICAgIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIk9wZW5TU0xTdHJlYW1BZGFwdGVyOjpP
bkV2ZW50IgogICAgICAgICAgICAgICAgICAgICAgICAgPDwgKChldmVudHMgJiBTRV9SRUFEKSA/
ICIgU0VfUkVBRCIgOiAiIikKQEAgLTc0Nyw2ICs3NjMsNyBAQCB2b2lkIE9wZW5TU0xTdHJlYW1B
ZGFwdGVyOjpPbkV2ZW50KFN0cmVhbUludGVyZmFjZSogc3RyZWFtLAogICAgICAgfQogICAgIH0K
ICAgfQorCiAgIGlmICgoZXZlbnRzICYgU0VfQ0xPU0UpKSB7CiAgICAgUlRDX0xPRyhMU19WRVJC
T1NFKSA8PCAiT3BlblNTTFN0cmVhbUFkYXB0ZXI6Ok9uRXZlbnQoU0VfQ0xPU0UsICIgPDwgZXJy
CiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiKSI7CkBAIC03NTYsOCArNzczLDEwIEBAIHZv
aWQgT3BlblNTTFN0cmVhbUFkYXB0ZXI6Ok9uRXZlbnQoU3RyZWFtSW50ZXJmYWNlKiBzdHJlYW0s
CiAgICAgUlRDX0RDSEVDSyhzaWduYWxfZXJyb3IgPT0gMCk7CiAgICAgc2lnbmFsX2Vycm9yID0g
ZXJyOwogICB9Ci0gIGlmIChldmVudHNfdG9fc2lnbmFsKQorCisgIGlmIChldmVudHNfdG9fc2ln
bmFsKSB7CiAgICAgU3RyZWFtQWRhcHRlckludGVyZmFjZTo6T25FdmVudChzdHJlYW0sIGV2ZW50
c190b19zaWduYWwsIHNpZ25hbF9lcnJvcik7CisgIH0KIH0KIAogaW50IE9wZW5TU0xTdHJlYW1B
ZGFwdGVyOjpCZWdpblNTTCgpIHsKQEAgLTc3MCwxMiArNzg5LDE0IEBAIGludCBPcGVuU1NMU3Ry
ZWFtQWRhcHRlcjo6QmVnaW5TU0woKSB7CiAgIC8vIEZpcnN0IHNldCB1cCB0aGUgY29udGV4dC4K
ICAgUlRDX0RDSEVDSyhzc2xfY3R4XyA9PSBudWxscHRyKTsKICAgc3NsX2N0eF8gPSBTZXR1cFNT
TENvbnRleHQoKTsKLSAgaWYgKCFzc2xfY3R4XykKKyAgaWYgKCFzc2xfY3R4XykgewogICAgIHJl
dHVybiAtMTsKKyAgfQogCiAgIGJpbyA9IEJJT19uZXdfc3RyZWFtKHN0YXRpY19jYXN0PFN0cmVh
bUludGVyZmFjZSo+KHN0cmVhbSgpKSk7Ci0gIGlmICghYmlvKQorICBpZiAoIWJpbykgewogICAg
IHJldHVybiAtMTsKKyAgfQogCiAgIHNzbF8gPSBTU0xfbmV3KHNzbF9jdHhfKTsKICAgaWYgKCFz
c2xfKSB7CkBAIC04MDUsOCArODI2LDkgQEAgaW50IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpCZWdp
blNTTCgpIHsKICAgLy8gY29tbW9ubHkgc3VwcG9ydGVkLiBCb3JpbmdTU0wgZG9lc24ndCBuZWVk
IGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24gYW5kIGhhcwogICAvLyBhIHJlYXNvbmFibGUgZGVmYXVs
dCBzZXQuCiAgIEVDX0tFWSogZWNkaCA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShOSURfWDlf
NjJfcHJpbWUyNTZ2MSk7Ci0gIGlmIChlY2RoID09IG51bGxwdHIpCisgIGlmIChlY2RoID09IG51
bGxwdHIpIHsKICAgICByZXR1cm4gLTE7CisgIH0KICAgU1NMX3NldF9vcHRpb25zKHNzbF8sIFNT
TF9PUF9TSU5HTEVfRUNESF9VU0UpOwogICBTU0xfc2V0X3RtcF9lY2RoKHNzbF8sIGVjZGgpOwog
ICBFQ19LRVlfZnJlZShlY2RoKTsKQEAgLTgzMCwxMCArODUyLDEwIEBAIGludCBPcGVuU1NMU3Ry
ZWFtQWRhcHRlcjo6Q29udGludWVTU0woKSB7CiAgICAgICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8
ICIgLS0gc3VjY2VzcyI7CiAgICAgICAvLyBCeSB0aGlzIHBvaW50LCBPcGVuU1NMIHNob3VsZCBo
YXZlIGdpdmVuIHVzIGEgY2VydGlmaWNhdGUsIG9yIGVycm9yZWQKICAgICAgIC8vIG91dCBpZiBv
bmUgd2FzIG1pc3NpbmcuCi0gICAgICBSVENfRENIRUNLKHBlZXJfY2VydF9jaGFpbl8gfHwgIWNs
aWVudF9hdXRoX2VuYWJsZWQoKSk7CisgICAgICBSVENfRENIRUNLKHBlZXJfY2VydF9jaGFpbl8g
fHwgIUdldENsaWVudEF1dGhFbmFibGVkKCkpOwogCiAgICAgICBzdGF0ZV8gPSBTU0xfQ09OTkVD
VEVEOwotICAgICAgaWYgKCF3YWl0aW5nX3RvX3ZlcmlmeV9wZWVyX2NlcnRpZmljYXRlKCkpIHsK
KyAgICAgIGlmICghV2FpdGluZ1RvVmVyaWZ5UGVlckNlcnRpZmljYXRlKCkpIHsKICAgICAgICAg
Ly8gV2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gc3RhcnQgdGhlIGNvbm5lY3Rpb24sIHNv
IHNpZ25hbAogICAgICAgICAvLyBTRV9PUEVOLiBJZiB3ZSBuZWVkIGEgY2xpZW50IGNlcnRpZmlj
YXRlIGZpbmdlcnByaW50IGFuZCBkb24ndCBoYXZlCiAgICAgICAgIC8vIGl0IHlldCwgd2UnbGwg
aW5zdGVhZCBzaWduYWwgU0VfT1BFTiBpbiBTZXRQZWVyQ2VydGlmaWNhdGVEaWdlc3QuCkBAIC04
ODYsOCArOTA4LDkgQEAgdm9pZCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6RXJyb3IoY29uc3QgY2hh
ciogY29udGV4dCwKICAgc3RhdGVfID0gU1NMX0VSUk9SOwogICBzc2xfZXJyb3JfY29kZV8gPSBl
cnI7CiAgIENsZWFudXAoYWxlcnQpOwotICBpZiAoc2lnbmFsKQorICBpZiAoc2lnbmFsKSB7CiAg
ICAgU3RyZWFtQWRhcHRlckludGVyZmFjZTo6T25FdmVudChzdHJlYW0oKSwgU0VfQ0xPU0UsIGVy
cik7CisgIH0KIH0KIAogdm9pZCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6Q2xlYW51cCh1aW50OF90
IGFsZXJ0KSB7CkBAIC05OTAsOCArMTAxMyw5IEBAIFNTTF9DVFgqIE9wZW5TU0xTdHJlYW1BZGFw
dGVyOjpTZXR1cFNTTENvbnRleHQoKSB7CiAgIGN0eCA9IFNTTF9DVFhfbmV3KG1ldGhvZCk7CiAj
ZW5kaWYgIC8vIE9QRU5TU0xfSVNfQk9SSU5HU1NMCiAKLSAgaWYgKGN0eCA9PSBudWxscHRyKQor
ICBpZiAoY3R4ID09IG51bGxwdHIpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQogCiAjaWZk
ZWYgT1BFTlNTTF9JU19CT1JJTkdTU0wKICAgU1NMX0NUWF9zZXRfbWluX3Byb3RvX3ZlcnNpb24o
CkBAIC0xMDI2LDcgKzEwNTAsNyBAQCBTU0xfQ1RYKiBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6U2V0
dXBTU0xDb250ZXh0KCkgewogI2VuZGlmCiAKICAgaW50IG1vZGUgPSBTU0xfVkVSSUZZX1BFRVI7
Ci0gIGlmIChjbGllbnRfYXV0aF9lbmFibGVkKCkpIHsKKyAgaWYgKEdldENsaWVudEF1dGhFbmFi
bGVkKCkpIHsKICAgICAvLyBSZXF1aXJlIGEgY2VydGlmaWNhdGUgZnJvbSB0aGUgY2xpZW50Lgog
ICAgIC8vIE5vdGU6IE5vcm1hbGx5IHRoaXMgaXMgYWx3YXlzIHRydWUgaW4gcHJvZHVjdGlvbiwg
YnV0IGl0IG1heSBiZSBkaXNhYmxlZAogICAgIC8vIGZvciB0ZXN0aW5nIHB1cnBvc2VzIChlLmcu
IFNTTEFkYXB0ZXIgdW5pdCB0ZXN0cykuCkBAIC0xMDU4LDcgKzEwODIsNyBAQCBTU0xfQ1RYKiBP
cGVuU1NMU3RyZWFtQWRhcHRlcjo6U2V0dXBTU0xDb250ZXh0KCkgewogfQogCiBib29sIE9wZW5T
U0xTdHJlYW1BZGFwdGVyOjpWZXJpZnlQZWVyQ2VydGlmaWNhdGUoKSB7Ci0gIGlmICghaGFzX3Bl
ZXJfY2VydGlmaWNhdGVfZGlnZXN0KCkgfHwgIXBlZXJfY2VydF9jaGFpbl8gfHwKKyAgaWYgKCFI
YXNQZWVyQ2VydGlmaWNhdGVEaWdlc3QoKSB8fCAhcGVlcl9jZXJ0X2NoYWluXyB8fAogICAgICAg
IXBlZXJfY2VydF9jaGFpbl8tPkdldFNpemUoKSkgewogICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIk1pc3NpbmcgZGlnZXN0IG9yIHBlZXIgY2VydGlmaWNhdGUuIjsKICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMDkxLDcgKzExMTUsNyBAQCBib29sIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpWZXJp
ZnlQZWVyQ2VydGlmaWNhdGUoKSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0Q2hhaW4+IE9w
ZW5TU0xTdHJlYW1BZGFwdGVyOjpHZXRQZWVyU1NMQ2VydENoYWluKCkKICAgICBjb25zdCB7Ci0g
IHJldHVybiBwZWVyX2NlcnRfY2hhaW5fID8gcGVlcl9jZXJ0X2NoYWluXy0+VW5pcXVlQ29weSgp
IDogbnVsbHB0cjsKKyAgcmV0dXJuIHBlZXJfY2VydF9jaGFpbl8gPyBwZWVyX2NlcnRfY2hhaW5f
LT5DbG9uZSgpIDogbnVsbHB0cjsKIH0KIAogaW50IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpTU0xW
ZXJpZnlDYWxsYmFjayhYNTA5X1NUT1JFX0NUWCogc3RvcmUsIHZvaWQqIGFyZykgewpAQCAtMTE3
NiwxNSArMTIwMCwxNyBAQCBzdGF0aWMgY29uc3QgY2lwaGVyX2xpc3QgT0tfRUNEU0FfY2lwaGVy
c1tdID0gewogYm9vbCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6SXNBY2NlcHRhYmxlQ2lwaGVyKGlu
dCBjaXBoZXIsIEtleVR5cGUga2V5X3R5cGUpIHsKICAgaWYgKGtleV90eXBlID09IEtUX1JTQSkg
ewogICAgIGZvciAoY29uc3QgY2lwaGVyX2xpc3QmIGMgOiBPS19SU0FfY2lwaGVycykgewotICAg
ICAgaWYgKGNpcGhlciA9PSBjLmNpcGhlcikKKyAgICAgIGlmIChjaXBoZXIgPT0gYy5jaXBoZXIp
IHsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CiAgICAgfQogICB9CiAKICAgaWYgKGtl
eV90eXBlID09IEtUX0VDRFNBKSB7CiAgICAgZm9yIChjb25zdCBjaXBoZXJfbGlzdCYgYyA6IE9L
X0VDRFNBX2NpcGhlcnMpIHsKLSAgICAgIGlmIChjaXBoZXIgPT0gYy5jaXBoZXIpCisgICAgICBp
ZiAoY2lwaGVyID09IGMuY2lwaGVyKSB7CiAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQog
ICAgIH0KICAgfQogCkBAIC0xMTk1LDIyICsxMjIxLDI0IEBAIGJvb2wgT3BlblNTTFN0cmVhbUFk
YXB0ZXI6OklzQWNjZXB0YWJsZUNpcGhlcihjb25zdCBzdGQ6OnN0cmluZyYgY2lwaGVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleVR5cGUga2V5X3R5
cGUpIHsKICAgaWYgKGtleV90eXBlID09IEtUX1JTQSkgewogICAgIGZvciAoY29uc3QgY2lwaGVy
X2xpc3QmIGMgOiBPS19SU0FfY2lwaGVycykgewotICAgICAgaWYgKGNpcGhlciA9PSBjLmNpcGhl
cl9zdHIpCisgICAgICBpZiAoY2lwaGVyID09IGMuY2lwaGVyX3N0cikgewogICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgIH0KICAgICB9CiAgIH0KIAogICBpZiAoa2V5X3R5cGUgPT0gS1RfRUNE
U0EpIHsKICAgICBmb3IgKGNvbnN0IGNpcGhlcl9saXN0JiBjIDogT0tfRUNEU0FfY2lwaGVycykg
ewotICAgICAgaWYgKGNpcGhlciA9PSBjLmNpcGhlcl9zdHIpCisgICAgICBpZiAoY2lwaGVyID09
IGMuY2lwaGVyX3N0cikgewogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KICAgICB9CiAg
IH0KIAogICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OmVu
YWJsZV90aW1lX2NhbGxiYWNrX2Zvcl90ZXN0aW5nKCkgewordm9pZCBPcGVuU1NMU3RyZWFtQWRh
cHRlcjo6RW5hYmxlVGltZUNhbGxiYWNrRm9yVGVzdGluZygpIHsKICAgZ191c2VfdGltZV9jYWxs
YmFja19mb3JfdGVzdGluZyA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xzdHJlYW1hZGFwdGVy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9v
cGVuc3Nsc3RyZWFtYWRhcHRlci5oCmluZGV4IDYxZmZjM2RiZmUyZDY1MzhiZDMwMzFmYzk3MGU3
NTJjZWE0ZjQzZmYuLmUwMTJkMTcyYTYyYTBiNDU5NWM5MDVjYzYxMjgxYzQ5ODk3NTZlZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL29wZW5zc2xzdHJlYW1hZGFwdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHN0cmVhbWFkYXB0ZXIuaApAQCAtMTMs
MTMgKzEzLDE4IEBACiAKICNpbmNsdWRlIDxvcGVuc3NsL29zc2xfdHlwLmg+CiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2J1
ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL29wZW5zc2xpZGVudGl0eS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3N0cmVhbS5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApAQCAtNDcsMTEgKzUyLDExIEBA
IG5hbWVzcGFjZSBydGMgewogCiAvLyBMb29rIGluIHNzbHN0cmVhbWFkYXB0ZXIuaCBmb3IgZG9j
dW1lbnRhdGlvbiBvZiB0aGUgbWV0aG9kcy4KIAotY2xhc3MgT3BlblNTTElkZW50aXR5OworY2xh
c3MgU1NMQ2VydENoYWluOwogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLWNsYXNzIE9wZW5T
U0xTdHJlYW1BZGFwdGVyIDogcHVibGljIFNTTFN0cmVhbUFkYXB0ZXIgeworY2xhc3MgT3BlblNT
TFN0cmVhbUFkYXB0ZXIgZmluYWwgOiBwdWJsaWMgU1NMU3RyZWFtQWRhcHRlciB7CiAgcHVibGlj
OgogICBleHBsaWNpdCBPcGVuU1NMU3RyZWFtQWRhcHRlcihTdHJlYW1JbnRlcmZhY2UqIHN0cmVh
bSk7CiAgIH5PcGVuU1NMU3RyZWFtQWRhcHRlcigpIG92ZXJyaWRlOwpAQCAtMTE1LDcgKzEyMCw3
IEBAIGNsYXNzIE9wZW5TU0xTdHJlYW1BZGFwdGVyIDogcHVibGljIFNTTFN0cmVhbUFkYXB0ZXIg
ewogCiAgIC8vIFVzZSBvdXIgdGltZXV0aWxzLmggc291cmNlIG9mIHRpbWluZyBpbiBCb3JpbmdT
U0wsIGFsbG93aW5nIHVzIHRvIHRlc3QKICAgLy8gdXNpbmcgYSBmYWtlIGNsb2NrLgotICBzdGF0
aWMgdm9pZCBlbmFibGVfdGltZV9jYWxsYmFja19mb3JfdGVzdGluZygpOworICBzdGF0aWMgdm9p
ZCBFbmFibGVUaW1lQ2FsbGJhY2tGb3JUZXN0aW5nKCk7CiAKICBwcm90ZWN0ZWQ6CiAgIHZvaWQg
T25FdmVudChTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSwgaW50IGV2ZW50cywgaW50IGVycikgb3Zl
cnJpZGU7CkBAIC0xNzAsMTEgKzE3NSwxMSBAQCBjbGFzcyBPcGVuU1NMU3RyZWFtQWRhcHRlciA6
IHB1YmxpYyBTU0xTdHJlYW1BZGFwdGVyIHsKICAgLy8gU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlf
Y2FsbGJhY2suCiAgIHN0YXRpYyBpbnQgU1NMVmVyaWZ5Q2FsbGJhY2soWDUwOV9TVE9SRV9DVFgq
IHN0b3JlLCB2b2lkKiBhcmcpOwogCi0gIGJvb2wgd2FpdGluZ190b192ZXJpZnlfcGVlcl9jZXJ0
aWZpY2F0ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gY2xpZW50X2F1dGhfZW5hYmxlZCgpICYmICFw
ZWVyX2NlcnRpZmljYXRlX3ZlcmlmaWVkXzsKKyAgYm9vbCBXYWl0aW5nVG9WZXJpZnlQZWVyQ2Vy
dGlmaWNhdGUoKSBjb25zdCB7CisgICAgcmV0dXJuIEdldENsaWVudEF1dGhFbmFibGVkKCkgJiYg
IXBlZXJfY2VydGlmaWNhdGVfdmVyaWZpZWRfOwogICB9CiAKLSAgYm9vbCBoYXNfcGVlcl9jZXJ0
aWZpY2F0ZV9kaWdlc3QoKSBjb25zdCB7CisgIGJvb2wgSGFzUGVlckNlcnRpZmljYXRlRGlnZXN0
KCkgY29uc3QgewogICAgIHJldHVybiAhcGVlcl9jZXJ0aWZpY2F0ZV9kaWdlc3RfYWxnb3JpdGht
Xy5lbXB0eSgpICYmCiAgICAgICAgICAgICFwZWVyX2NlcnRpZmljYXRlX2RpZ2VzdF92YWx1ZV8u
ZW1wdHkoKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5jYwppbmRl
eCA0NmY0NTQ3NDM2ZTExNThhN2I4MDMwODA0M2Y4ZjY3N2QyNWUxOWU4Li5hM2YzMzQ3OGViYzdi
MDUxMDBiNzNjYjMwNDI4MWEwMjQ2YjkyNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVu
c3NsdXRpbGl0eS5jYwpAQCAtOSwyOSArOSwyMSBAQAogICovCiAKICNpbmNsdWRlICJydGNfYmFz
ZS9vcGVuc3NsdXRpbGl0eS5oIgotCi0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaWYgZGVmaW5lZChX
RUJSVENfUE9TSVgpCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQogI2lmIGRlZmluZWQo
V0VCUlRDX1dJTikKIC8vIE11c3QgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIG9wZW5zc2wgaGVh
ZGVycy4KICNpbmNsdWRlICJydGNfYmFzZS93aW4zMi5oIiAgLy8gTk9MSU5UCiAjZW5kaWYgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFdFQlJUQ19XSU4KIAotI2luY2x1ZGUgPG9wZW5zc2wvYmlv
Lmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5o
PgogI2luY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgogI2luY2x1ZGUgPG9wZW5zc2wveDUwOXYzLmg+
CisjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbC5oIgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAK
ICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
bnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2wu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKICNpZm5kZWYgV0VC
UlRDX0VYQ0xVREVfQlVJTFRfSU5fU1NMX1JPT1RfQ0VSVFMKICNpbmNsdWRlICJydGNfYmFzZS9z
c2xyb290cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2x1dGlsaXR5LmgKaW5kZXggN2Ni
MzhiNWI1Mjc2M2E1MWRkYjQwMjU4OTM2YTY1NmJkNjcyMWY5YS4uNzdlZDBiMWU3Y2NhMWNiNzk2
OGE2ODFhY2JmMDY1YTlmYTNjMzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsdXRp
bGl0eS5oCkBAIC0xMyw3ICsxMyw2IEBACiAKICNpbmNsdWRlIDxvcGVuc3NsL29zc2xfdHlwLmg+
CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgi
CiAKIG5hbWVzcGFjZSBydGMgewogLy8gVGhlIG9wZW5zc2wgbmFtZXNwYWNlIGhvbGRzIHN0YXRp
YyBoZWxwZXIgbWV0aG9kcy4gQWxsIG1ldGhvZHMgcmVsYXRlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3B0aW9uc2ZpbGUu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9v
cHRpb25zZmlsZS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM1ODU5YjRjYzA3
NTM2NGI0YmM2MmQxZjg1ZWMzM2RlNTFjMGMxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9vcHRpb25zZmlsZS5jYworKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCww
IEBACi0vKgotICogIENvcHlyaWdodCAyMDA4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAicnRjX2Jhc2Uvb3B0aW9uc2ZpbGUu
aCIKLQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyZWFtLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
ZW5jb2RlLmgiCi0KLW5hbWVzcGFjZSBydGMgewotCi1PcHRpb25zRmlsZTo6T3B0aW9uc0ZpbGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpIDogcGF0aF8ocGF0aCkge30KLQotT3B0aW9uc0ZpbGU6
On5PcHRpb25zRmlsZSgpID0gZGVmYXVsdDsKLQotYm9vbCBPcHRpb25zRmlsZTo6TG9hZCgpIHsK
LSAgb3B0aW9uc18uY2xlYXIoKTsKLSAgLy8gT3BlbiBmaWxlLgotICBGaWxlU3RyZWFtIHN0cmVh
bTsKLSAgaW50IGVycjsKLSAgaWYgKCFzdHJlYW0uT3BlbihwYXRoXywgInIiLCAmZXJyKSkgewot
ICAgIFJUQ19MT0dfRihMU19XQVJOSU5HKSA8PCAiQ291bGQgbm90IG9wZW4gZmlsZSwgZXJyPSIg
PDwgZXJyOwotICAgIC8vIFdlIGRvIG5vdCBjb25zaWRlciB0aGlzIGFuIGVycm9yIGJlY2F1c2Ug
d2UgZXhwZWN0IHRoZXJlIHRvIGJlIG5vIGZpbGUKLSAgICAvLyB1bnRpbCB0aGUgdXNlciBzYXZl
cyBhIHNldHRpbmcuCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgLy8gUmVhZCBpbiBhbGwgaXRz
IGRhdGEuCi0gIHN0ZDo6c3RyaW5nIGxpbmU7Ci0gIFN0cmVhbVJlc3VsdCByZXM7Ci0gIGZvciAo
OzspIHsKLSAgICByZXMgPSBzdHJlYW0uUmVhZExpbmUoJmxpbmUpOwotICAgIGlmIChyZXMgIT0g
U1JfU1VDQ0VTUykgewotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHNpemVfdCBlcXVhbHNfcG9z
ID0gbGluZS5maW5kKCc9Jyk7Ci0gICAgaWYgKGVxdWFsc19wb3MgPT0gc3RkOjpzdHJpbmc6Om5w
b3MpIHsKLSAgICAgIC8vIFdlIGRvIG5vdCBjb25zaWRlciB0aGlzIGFuIGVycm9yLiBJbnN0ZWFk
IHdlIGlnbm9yZSB0aGUgbGluZSBhbmQKLSAgICAgIC8vIGtlZXAgZ29pbmcuCi0gICAgICBSVENf
TE9HX0YoTFNfV0FSTklORykgPDwgIklnbm9yaW5nIG1hbGZvcm1lZCBsaW5lIGluICIgPDwgcGF0
aF87Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0gICAgc3RkOjpzdHJpbmcga2V5KGxpbmUsIDAs
IGVxdWFsc19wb3MpOwotICAgIHN0ZDo6c3RyaW5nIHZhbHVlKGxpbmUsIGVxdWFsc19wb3MgKyAx
LCBsaW5lLmxlbmd0aCgpIC0gKGVxdWFsc19wb3MgKyAxKSk7Ci0gICAgb3B0aW9uc19ba2V5XSA9
IHZhbHVlOwotICB9Ci0gIGlmIChyZXMgIT0gU1JfRU9TKSB7Ci0gICAgUlRDX0xPR19GKExTX0VS
Uk9SKSA8PCAiRXJyb3Igd2hlbiByZWFkaW5nIGZyb20gZmlsZSI7Ci0gICAgcmV0dXJuIGZhbHNl
OwotICB9IGVsc2UgewotICAgIHJldHVybiB0cnVlOwotICB9Ci19Ci0KLWJvb2wgT3B0aW9uc0Zp
bGU6OlNhdmUoKSB7Ci0gIC8vIE9wZW4gZmlsZS4KLSAgRmlsZVN0cmVhbSBzdHJlYW07Ci0gIGlu
dCBlcnI7Ci0gIGlmICghc3RyZWFtLk9wZW4ocGF0aF8sICJ3IiwgJmVycikpIHsKLSAgICBSVENf
TE9HX0YoTFNfRVJST1IpIDw8ICJDb3VsZCBub3Qgb3BlbiBmaWxlLCBlcnI9IiA8PCBlcnI7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIC8vIFdyaXRlIG91dCBhbGwgdGhlIGRhdGEuCi0gIFN0
cmVhbVJlc3VsdCByZXMgPSBTUl9TVUNDRVNTOwotICBzaXplX3Qgd3JpdHRlbjsKLSAgaW50IGVy
cm9yOwotICBmb3IgKE9wdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBvcHRpb25zXy5iZWdp
bigpOyBpICE9IG9wdGlvbnNfLmVuZCgpOwotICAgICAgICsraSkgewotICAgIHJlcyA9Ci0gICAg
ICAgIHN0cmVhbS5Xcml0ZUFsbChpLT5maXJzdC5jX3N0cigpLCBpLT5maXJzdC5sZW5ndGgoKSwg
JndyaXR0ZW4sICZlcnJvcik7Ci0gICAgaWYgKHJlcyAhPSBTUl9TVUNDRVNTKSB7Ci0gICAgICBi
cmVhazsKLSAgICB9Ci0gICAgcmVzID0gc3RyZWFtLldyaXRlQWxsKCI9IiwgMSwgJndyaXR0ZW4s
ICZlcnJvcik7Ci0gICAgaWYgKHJlcyAhPSBTUl9TVUNDRVNTKSB7Ci0gICAgICBicmVhazsKLSAg
ICB9Ci0gICAgcmVzID0gc3RyZWFtLldyaXRlQWxsKGktPnNlY29uZC5jX3N0cigpLCBpLT5zZWNv
bmQubGVuZ3RoKCksICZ3cml0dGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3Ip
OwotICAgIGlmIChyZXMgIT0gU1JfU1VDQ0VTUykgewotICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IHJlcyA9IHN0cmVhbS5Xcml0ZUFsbCgiXG4iLCAxLCAmd3JpdHRlbiwgJmVycm9yKTsKLSAgICBp
ZiAocmVzICE9IFNSX1NVQ0NFU1MpIHsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotICBpZiAo
cmVzICE9IFNSX1NVQ0NFU1MpIHsKLSAgICBSVENfTE9HX0YoTFNfRVJST1IpIDw8ICJVbmFibGUg
dG8gd3JpdGUgdG8gZmlsZSI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9IGVsc2UgewotICAgIHJl
dHVybiB0cnVlOwotICB9Ci19Ci0KLWJvb2wgT3B0aW9uc0ZpbGU6OklzTGVnYWxOYW1lKGNvbnN0
IHN0ZDo6c3RyaW5nJiBuYW1lKSB7Ci0gIGZvciAoc2l6ZV90IHBvcyA9IDA7IHBvcyA8IG5hbWUu
bGVuZ3RoKCk7ICsrcG9zKSB7Ci0gICAgaWYgKG5hbWVbcG9zXSA9PSAnXG4nIHx8IG5hbWVbcG9z
XSA9PSAnXFwnIHx8IG5hbWVbcG9zXSA9PSAnPScpIHsKLSAgICAgIC8vIElsbGVnYWwgY2hhcmFj
dGVyLgotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiSWdub3Jpbmcgb3BlcmF0aW9uIGZv
ciBpbGxlZ2FsIG9wdGlvbiAiIDw8IG5hbWU7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIE9wdGlvbnNGaWxlOjpJc0xlZ2FsVmFsdWUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7Ci0gIGZvciAoc2l6ZV90IHBvcyA9IDA7IHBvcyA8
IHZhbHVlLmxlbmd0aCgpOyArK3BvcykgewotICAgIGlmICh2YWx1ZVtwb3NdID09ICdcbicgfHwg
dmFsdWVbcG9zXSA9PSAnXFwnKSB7Ci0gICAgICAvLyBJbGxlZ2FsIGNoYXJhY3Rlci4KLSAgICAg
IFJUQ19MT0coTFNfV0FSTklORykgPDwgIklnbm9yaW5nIG9wZXJhdGlvbiBmb3IgaWxsZWdhbCB2
YWx1ZSAiIDw8IHZhbHVlOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBPcHRpb25zRmlsZTo6R2V0U3RyaW5nVmFsdWUoY29uc3Qgc3Rk
OjpzdHJpbmcmIG9wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nKiBvdXRfdmFsKSBjb25zdCB7Ci0gIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIk9wdGlv
bnNGaWxlOjpHZXRTdHJpbmdWYWx1ZSAiIDw8IG9wdGlvbjsKLSAgaWYgKCFJc0xlZ2FsTmFtZShv
cHRpb24pKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIE9wdGlvbnNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGkgPSBvcHRpb25zXy5maW5kKG9wdGlvbik7Ci0gIGlmIChpID09IG9wdGlvbnNfLmVu
ZCgpKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gICpvdXRfdmFsID0gaS0+c2Vjb25kOwot
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPcHRpb25zRmlsZTo6R2V0SW50VmFsdWUoY29uc3Qg
c3RkOjpzdHJpbmcmIG9wdGlvbiwgaW50KiBvdXRfdmFsKSBjb25zdCB7Ci0gIFJUQ19MT0coTFNf
VkVSQk9TRSkgPDwgIk9wdGlvbnNGaWxlOjpHZXRJbnRWYWx1ZSAiIDw8IG9wdGlvbjsKLSAgaWYg
KCFJc0xlZ2FsTmFtZShvcHRpb24pKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIE9wdGlv
bnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBvcHRpb25zXy5maW5kKG9wdGlvbik7Ci0gIGlmIChp
ID09IG9wdGlvbnNfLmVuZCgpKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHJldHVybiBG
cm9tU3RyaW5nKGktPnNlY29uZCwgb3V0X3ZhbCk7Ci19Ci0KLWJvb2wgT3B0aW9uc0ZpbGU6OlNl
dFN0cmluZ1ZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKLSAgUlRDX0xPRyhM
U19WRVJCT1NFKSA8PCAiT3B0aW9uc0ZpbGU6OlNldFN0cmluZ1ZhbHVlICIgPDwgb3B0aW9uIDw8
ICI6IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHZhbHVlOwotICBpZiAoIUlzTGVnYWxOYW1l
KG9wdGlvbikgfHwgIUlzTGVnYWxWYWx1ZSh2YWx1ZSkpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0g
IH0KLSAgb3B0aW9uc19bb3B0aW9uXSA9IHZhbHVlOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBPcHRpb25zRmlsZTo6U2V0SW50VmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIG9wdGlvbiwgaW50
IHZhbHVlKSB7Ci0gIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIk9wdGlvbnNGaWxlOjpTZXRJbnRW
YWx1ZSAiIDw8IG9wdGlvbiA8PCAiOiIgPDwgdmFsdWU7Ci0gIGlmICghSXNMZWdhbE5hbWUob3B0
aW9uKSkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBvcHRpb25zX1tvcHRpb25dID0gVG9T
dHJpbmcodmFsdWUpOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPcHRpb25zRmlsZTo6UmVt
b3ZlVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIG9wdGlvbikgewotICBSVENfTE9HKExTX1ZFUkJP
U0UpIDw8ICJPcHRpb25zRmlsZTo6UmVtb3ZlVmFsdWUgIiA8PCBvcHRpb247Ci0gIGlmICghSXNM
ZWdhbE5hbWUob3B0aW9uKSkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBvcHRpb25zXy5l
cmFzZShvcHRpb24pOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvb3B0aW9uc2ZpbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL29wdGlvbnNmaWxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDU1NjYwZmYyNTk4YmUzZGVjYjJlNTY5NjJlNTVlODUzYmUxNWUyYjIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3B0aW9uc2ZpbGUuaAorKysgL2Rldi9udWxs
CkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDggVGhlIFdlYlJUQyBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
LSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgUlRDX0JBU0Vf
T1BUSU9OU0ZJTEVfSF8KLSNkZWZpbmUgUlRDX0JBU0VfT1BUSU9OU0ZJTEVfSF8KLQotI2luY2x1
ZGUgPG1hcD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLW5hbWVzcGFjZSBydGMgewotCi0vLyBJbXBs
ZW1lbnRzIHN0b3JhZ2Ugb2Ygc2ltcGxlIG9wdGlvbnMgaW4gYSB0ZXh0IGZpbGUgb24gZGlzay4g
VGhpcyBpcwotLy8gY3Jvc3MtcGxhdGZvcm0sIGJ1dCBpdCBpcyBpbnRlbmRlZCBtb3N0bHkgZm9y
IExpbnV4IHdoZXJlIHRoZXJlIGlzIG5vCi0vLyBmaXJzdC1jbGFzcyBvcHRpb25zIHN0b3JhZ2Ug
c3lzdGVtLgotY2xhc3MgT3B0aW9uc0ZpbGUgewotIHB1YmxpYzoKLSAgT3B0aW9uc0ZpbGUoY29u
c3Qgc3RkOjpzdHJpbmcmIHBhdGgpOwotICB+T3B0aW9uc0ZpbGUoKTsKLQotICAvLyBMb2FkcyB0
aGUgZmlsZSBmcm9tIGRpc2ssIG92ZXJ3cml0aW5nIHRoZSBpbi1tZW1vcnkgdmFsdWVzLgotICBi
b29sIExvYWQoKTsKLSAgLy8gU2F2ZXMgdGhlIGNvbnRlbnRzIGluIG1lbW9yeSwgb3ZlcndyaXRp
bmcgdGhlIG9uLWRpc2sgdmFsdWVzLgotICBib29sIFNhdmUoKTsKLQotICBib29sIEdldFN0cmlu
Z1ZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24sIHN0ZDo6c3RyaW5nKiBvdXRfdmFsKSBj
b25zdDsKLSAgYm9vbCBHZXRJbnRWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgb3B0aW9uLCBpbnQq
IG91dF92YWwpIGNvbnN0OwotICBib29sIFNldFN0cmluZ1ZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBvcHRpb24sIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWwpOwotICBib29sIFNldEludFZhbHVlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24sIGludCB2YWwpOwotICBib29sIFJlbW92ZVZhbHVlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24pOwotCi0gcHJpdmF0ZToKLSAgdHlwZWRlZiBzdGQ6Om1h
cDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IE9wdGlvbnNNYXA7Ci0KLSAgc3RhdGljIGJvb2wg
SXNMZWdhbE5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotICBzdGF0aWMgYm9vbCBJc0xl
Z2FsVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKLQotICBzdGQ6OnN0cmluZyBwYXRo
XzsKLSAgT3B0aW9uc01hcCBvcHRpb25zXzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBydGMKLQot
I2VuZGlmICAvLyBSVENfQkFTRV9PUFRJT05TRklMRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3B0aW9uc2ZpbGVfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9vcHRpb25zZmlsZV91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmM1YmM4MjNmZjQxNThmNzJkYjJjNTA2ZTI2ZjdiODlkMDFkNDU3YS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcHRpb25zZmlsZV91bml0dGVzdC5jYworKysg
L2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDA4IFRoZSBX
ZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0g
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVk
ZSA8bWVtb3J5PgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvZ3VuaXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9vcHRpb25zZmlsZS5oIgotI2luY2x1
ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCi0KLW5hbWVzcGFjZSBydGMgewotCi1z
dGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RPcHRpb25BID0gInRlc3Qtb3B0aW9uLWEiOwot
c3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0T3B0aW9uQiA9ICJ0ZXN0LW9wdGlvbi1iIjsK
LXN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdFN0cmluZzEgPSAiYSBzdHJpbmciOwotc3Rh
dGljIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0U3RyaW5nMiA9ICJkaWZmZXJlbnQgc3RyaW5nIjsK
LXN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBrT3B0aW9uV2l0aEVxdWFscyA9ICJmb289YmFyIjsK
LXN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBrT3B0aW9uV2l0aE5ld2xpbmUgPSAiZm9vXG5iYXIi
Owotc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIGtWYWx1ZVdpdGhFcXVhbHMgPSAiYmF6PXF1dXgi
Owotc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIGtWYWx1ZVdpdGhOZXdsaW5lID0gImJhelxucXV1
eCI7Ci1zdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcga0VtcHR5U3RyaW5nID0gIiI7Ci1zdGF0aWMg
Y29uc3QgY2hhciBrT3B0aW9uV2l0aFV0ZjhbXSA9IHsnTycsICAgICdwJywgJ3QnLCAnXDMwMics
ICdcMjU2JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpJywgICAg
J28nLCAnbicsICdcMzQyJywgJ1wyMDQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1wyNDInLCAnXDAnfTsgIC8vIE9wdChSKWlvKFRNKS4KLXN0YXRpYyBjb25zdCBj
aGFyIGtWYWx1ZVdpdGhVdGY4W10gPSB7Ci0gICAgJ1YnLCAnYScsICAgICdsJywgICAgJ1wzMDIn
LCAnXDI1NicsICd2JywKLSAgICAnZScsICdcMzQyJywgJ1wyMDQnLCAnXDI0MicsICdcMCd9OyAg
Ly8gVmFsKFIpdWUoVE0pLgotc3RhdGljIGludCBrVGVzdEludDEgPSAxMjM0NTsKLXN0YXRpYyBp
bnQga1Rlc3RJbnQyID0gNjc4OTA7Ci1zdGF0aWMgaW50IGtOZWdJbnQgPSAtNjM0Owotc3RhdGlj
IGludCBrWmVybyA9IDA7Ci0KLSNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQotLy8gRmFpbHMg
b24gQW5kcm9pZDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3dlYnJ0Yy9pc3N1ZXMvZGV0
YWlsP2lkPTQzNjQuCi0jZGVmaW5lIE1BWUJFX09wdGlvbnNGaWxlVGVzdCBESVNBQkxFRF9PcHRp
b25zRmlsZVRlc3QKLSNlbHNlCi0jZGVmaW5lIE1BWUJFX09wdGlvbnNGaWxlVGVzdCBPcHRpb25z
RmlsZVRlc3QKLSNlbmRpZgotCi1jbGFzcyBNQVlCRV9PcHRpb25zRmlsZVRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOgotICBNQVlCRV9PcHRpb25zRmlsZVRlc3QoKSB7Ci0g
ICAgdGVzdF9maWxlXyA9Ci0gICAgICAgIHdlYnJ0Yzo6dGVzdDo6VGVtcEZpbGVuYW1lKHdlYnJ0
Yzo6dGVzdDo6T3V0cHV0UGF0aCgpLCAiLnRlc3RmaWxlIik7Ci0gICAgT3BlblN0b3JlKCk7Ci0g
IH0KLQotICB+TUFZQkVfT3B0aW9uc0ZpbGVUZXN0KCkgb3ZlcnJpZGUgeyB3ZWJydGM6OnRlc3Q6
OlJlbW92ZUZpbGUodGVzdF9maWxlXyk7IH0KLQotIHByb3RlY3RlZDoKLSAgdm9pZCBPcGVuU3Rv
cmUoKSB7IHN0b3JlXy5yZXNldChuZXcgT3B0aW9uc0ZpbGUodGVzdF9maWxlXykpOyB9Ci0KLSAg
c3RkOjp1bmlxdWVfcHRyPE9wdGlvbnNGaWxlPiBzdG9yZV87Ci0KLSBwcml2YXRlOgotICBzdGQ6
OnN0cmluZyB0ZXN0X2ZpbGVfOwotfTsKLQotVEVTVF9GKE1BWUJFX09wdGlvbnNGaWxlVGVzdCwg
R2V0U2V0U3RyaW5nKSB7Ci0gIC8vIENsZWFyIGNvbnRlbnRzIG9mIHRoZSBmaWxlIG9uIGRpc2su
Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2F2ZSgpKTsKLSAgc3RkOjpzdHJpbmcgb3V0MSwgb3V0
MjsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCAm
b3V0MSkpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlv
bkIsICZvdXQyKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0U3RyaW5nVmFsdWUoa1Rlc3RP
cHRpb25BLCBrVGVzdFN0cmluZzEpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwot
ICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0
U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25CLCBrVGVzdFN0cmluZzIpKTsKLSAgRVhQRUNUX1RSVUUo
c3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVD
VF9UUlVFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCAmb3V0MSkpOwotICBF
WFBFQ1RfVFJVRShzdG9yZV8tPkdldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQiwgJm91dDIpKTsK
LSAgRVhQRUNUX0VRKGtUZXN0U3RyaW5nMSwgb3V0MSk7Ci0gIEVYUEVDVF9FUShrVGVzdFN0cmlu
ZzIsIG91dDIpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlJlbW92ZVZhbHVlKGtUZXN0T3B0aW9u
QSkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3Jl
Xy0+TG9hZCgpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5SZW1vdmVWYWx1ZShrVGVzdE9wdGlv
bkIpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9y
ZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShzdG9yZV8tPkdldFN0cmluZ1ZhbHVlKGtUZXN0
T3B0aW9uQSwgJm91dDEpKTsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUo
a1Rlc3RPcHRpb25CLCAmb3V0MikpOwotfQotCi1URVNUX0YoTUFZQkVfT3B0aW9uc0ZpbGVUZXN0
LCBHZXRTZXRJbnQpIHsKLSAgLy8gQ2xlYXIgY29udGVudHMgb2YgdGhlIGZpbGUgb24gZGlzay4K
LSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBpbnQgb3V0MSwgb3V0MjsKLSAgRVhQ
RUNUX0ZBTFNFKHN0b3JlXy0+R2V0SW50VmFsdWUoa1Rlc3RPcHRpb25BLCAmb3V0MSkpOwotICBF
WFBFQ1RfRkFMU0Uoc3RvcmVfLT5HZXRJbnRWYWx1ZShrVGVzdE9wdGlvbkIsICZvdXQyKSk7Ci0g
IEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0SW50VmFsdWUoa1Rlc3RPcHRpb25BLCBrVGVzdEludDEp
KTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8t
PkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0SW50VmFsdWUoa1Rlc3RPcHRpb25C
LCBrVGVzdEludDIpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1Rf
VFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0SW50VmFsdWUo
a1Rlc3RPcHRpb25BLCAmb3V0MSkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkdldEludFZhbHVl
KGtUZXN0T3B0aW9uQiwgJm91dDIpKTsKLSAgRVhQRUNUX0VRKGtUZXN0SW50MSwgb3V0MSk7Ci0g
IEVYUEVDVF9FUShrVGVzdEludDIsIG91dDIpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlJlbW92
ZVZhbHVlKGtUZXN0T3B0aW9uQSkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0g
IEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5SZW1v
dmVWYWx1ZShrVGVzdE9wdGlvbkIpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwot
ICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShzdG9yZV8tPkdl
dEludFZhbHVlKGtUZXN0T3B0aW9uQSwgJm91dDEpKTsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+
R2V0SW50VmFsdWUoa1Rlc3RPcHRpb25CLCAmb3V0MikpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8t
PlNldEludFZhbHVlKGtUZXN0T3B0aW9uQSwga05lZ0ludCkpOwotICBFWFBFQ1RfVFJVRShzdG9y
ZV8tPkdldEludFZhbHVlKGtUZXN0T3B0aW9uQSwgJm91dDEpKTsKLSAgRVhQRUNUX0VRKGtOZWdJ
bnQsIG91dDEpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNldEludFZhbHVlKGtUZXN0T3B0aW9u
QSwga1plcm8pKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5HZXRJbnRWYWx1ZShrVGVzdE9wdGlv
bkEsICZvdXQxKSk7Ci0gIEVYUEVDVF9FUShrWmVybywgb3V0MSk7Ci19Ci0KLVRFU1RfRihNQVlC
RV9PcHRpb25zRmlsZVRlc3QsIFBlcnNpc3QpIHsKLSAgLy8gQ2xlYXIgY29udGVudHMgb2YgdGhl
IGZpbGUgb24gZGlzay4KLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1Rf
VFJVRShzdG9yZV8tPlNldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQSwga1Rlc3RTdHJpbmcxKSk7
Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0SW50VmFsdWUoa1Rlc3RPcHRpb25CLCBrTmVnSW50
KSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2F2ZSgpKTsKLQotICAvLyBMb2FkIHRoZSBzYXZl
ZCBjb250ZW50cyBmcm9tIGFib3ZlLgotICBPcGVuU3RvcmUoKTsKLSAgRVhQRUNUX1RSVUUoc3Rv
cmVfLT5Mb2FkKCkpOwotICBzdGQ6OnN0cmluZyBvdXQxOwotICBpbnQgb3V0MjsKLSAgRVhQRUNU
X1RSVUUoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkEsICZvdXQxKSk7Ci0gIEVY
UEVDVF9UUlVFKHN0b3JlXy0+R2V0SW50VmFsdWUoa1Rlc3RPcHRpb25CLCAmb3V0MikpOwotICBF
WFBFQ1RfRVEoa1Rlc3RTdHJpbmcxLCBvdXQxKTsKLSAgRVhQRUNUX0VRKGtOZWdJbnQsIG91dDIp
OwotfQotCi1URVNUX0YoTUFZQkVfT3B0aW9uc0ZpbGVUZXN0LCBTcGVjaWFsQ2hhcmFjdGVycykg
ewotICAvLyBDbGVhciBjb250ZW50cyBvZiB0aGUgZmlsZSBvbiBkaXNrLgotICBFWFBFQ1RfVFJV
RShzdG9yZV8tPlNhdmUoKSk7Ci0gIHN0ZDo6c3RyaW5nIG91dDsKLSAgRVhQRUNUX0ZBTFNFKHN0
b3JlXy0+U2V0U3RyaW5nVmFsdWUoa09wdGlvbldpdGhFcXVhbHMsIGtUZXN0U3RyaW5nMSkpOwot
ICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrT3B0aW9uV2l0aEVxdWFscywg
Jm91dCkpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5TZXRTdHJpbmdWYWx1ZShrT3B0aW9uV2l0
aE5ld2xpbmUsIGtUZXN0U3RyaW5nMSkpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5HZXRTdHJp
bmdWYWx1ZShrT3B0aW9uV2l0aE5ld2xpbmUsICZvdXQpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVf
LT5TZXRTdHJpbmdWYWx1ZShrT3B0aW9uV2l0aFV0ZjgsIGtWYWx1ZVdpdGhVdGY4KSk7Ci0gIEVY
UEVDVF9UUlVFKHN0b3JlXy0+U2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCBrVGVzdFN0cmlu
ZzEpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9y
ZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RP
cHRpb25BLCAmb3V0KSk7Ci0gIEVYUEVDVF9FUShrVGVzdFN0cmluZzEsIG91dCk7Ci0gIEVYUEVD
VF9UUlVFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa09wdGlvbldpdGhVdGY4LCAmb3V0KSk7Ci0g
IEVYUEVDVF9FUShrVmFsdWVXaXRoVXRmOCwgb3V0KTsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+
U2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCBrVmFsdWVXaXRoTmV3bGluZSkpOwotICBFWFBF
Q1RfVFJVRShzdG9yZV8tPkdldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQSwgJm91dCkpOwotICBF
WFBFQ1RfRVEoa1Rlc3RTdHJpbmcxLCBvdXQpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNldFN0
cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQSwga1ZhbHVlV2l0aEVxdWFscykpOwotICBFWFBFQ1RfVFJV
RShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgpKTsKLSAgRVhQ
RUNUX1RSVUUoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkEsICZvdXQpKTsKLSAg
RVhQRUNUX0VRKGtWYWx1ZVdpdGhFcXVhbHMsIG91dCk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+
U2V0U3RyaW5nVmFsdWUoa0VtcHR5U3RyaW5nLCBrVGVzdFN0cmluZzIpKTsKLSAgRVhQRUNUX1RS
VUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVY
UEVDVF9UUlVFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa0VtcHR5U3RyaW5nLCAmb3V0KSk7Ci0g
IEVYUEVDVF9FUShrVGVzdFN0cmluZzIsIG91dCk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0
U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25CLCBrRW1wdHlTdHJpbmcpKTsKLSAgRVhQRUNUX1RSVUUo
c3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVD
VF9UUlVFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25CLCAmb3V0KSk7Ci0gIEVY
UEVDVF9FUShrRW1wdHlTdHJpbmcsIG91dCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3BhdGh1dGlscy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3BhdGh1dGlscy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTk0ZGViN2YwZmMxMzJmYTdjNDM2ZWMxNzQyZTY4Mjk4OTJhMWExMS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHMuY2MKKysrIC9kZXYvbnVsbApAQCAt
MSwxNTUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmIGRlZmluZWQoV0VCUlRDX1dJ
TikKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8c2hlbGxhcGkuaD4KLSNpbmNsdWRl
IDxzaGxvYmouaD4KLSNpbmNsdWRlIDx0Y2hhci5oPgotI2VuZGlmICAvLyBXRUJSVENfV0lOCi0K
LSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcGF0aHV0aWxzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
c3RyaW5ndXRpbHMuaCIKLQotbmFtZXNwYWNlIHJ0YyB7Ci0KLXN0YXRpYyBjb25zdCBjaGFyIEVN
UFRZX1NUUltdID0gIiI7Ci0KLS8vIEVYVF9ERUxJTSBzZXBhcmF0ZXMgYSBmaWxlIGJhc2VuYW1l
IGZyb20gZXh0ZW5zaW9uCi1jb25zdCBjaGFyIEVYVF9ERUxJTSA9ICcuJzsKLQotLy8gRk9MREVS
X0RFTElNUyBzZXBhcmF0ZSBmb2xkZXIgc2VnbWVudHMgYW5kIHRoZSBmaWxlbmFtZQotY29uc3Qg
Y2hhciogY29uc3QgRk9MREVSX0RFTElNUyA9ICIvXFwiOwotCi0vLyBERUZBVUxUX0ZPTERFUl9E
RUxJTSBpcyB0aGUgcHJlZmVycmVkIGRlbGltaXRlciBmb3IgdGhpcyBwbGF0Zm9ybQotI2lmZGVm
IFdFQlJUQ19XSU4KLWNvbnN0IGNoYXIgREVGQVVMVF9GT0xERVJfREVMSU0gPSAnXFwnOwotI2Vs
c2UgIC8vICFXRUJSVENfV0lOCi1jb25zdCBjaGFyIERFRkFVTFRfRk9MREVSX0RFTElNID0gJy8n
OwotI2VuZGlmICAvLyAhV0VCUlRDX1dJTgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBQ
YXRobmFtZSAtIHBhcnNpbmcgb2YgcGF0aG5hbWVzIGludG8gY29tcG9uZW50cywgYW5kIHZpY2Ug
dmVyc2EKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotYm9vbCBQYXRobmFtZTo6SXNGb2xkZXJE
ZWxpbWl0ZXIoY2hhciBjaCkgewotICByZXR1cm4gKG51bGxwdHIgIT0gOjpzdHJjaHIoRk9MREVS
X0RFTElNUywgY2gpKTsKLX0KLQotY2hhciBQYXRobmFtZTo6RGVmYXVsdEZvbGRlckRlbGltaXRl
cigpIHsKLSAgcmV0dXJuIERFRkFVTFRfRk9MREVSX0RFTElNOwotfQotCi1QYXRobmFtZTo6UGF0
aG5hbWUoKQotICAgIDogZm9sZGVyX2RlbGltaXRlcl8oREVGQVVMVF9GT0xERVJfREVMSU0pIHsK
LX0KLQotUGF0aG5hbWU6OlBhdGhuYW1lKGNvbnN0IFBhdGhuYW1lJikgPSBkZWZhdWx0OwotUGF0
aG5hbWU6OlBhdGhuYW1lKFBhdGhuYW1lJiYpID0gZGVmYXVsdDsKLQotUGF0aG5hbWU6OlBhdGhu
YW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRobmFtZSkKLSAgICA6IGZvbGRlcl9kZWxpbWl0ZXJf
KERFRkFVTFRfRk9MREVSX0RFTElNKSB7Ci0gIFNldFBhdGhuYW1lKHBhdGhuYW1lKTsKLX0KLQot
UGF0aG5hbWU6OlBhdGhuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb2xkZXIsIGNvbnN0IHN0ZDo6
c3RyaW5nJiBmaWxlbmFtZSkKLSAgICA6IGZvbGRlcl9kZWxpbWl0ZXJfKERFRkFVTFRfRk9MREVS
X0RFTElNKSB7Ci0gIFNldFBhdGhuYW1lKGZvbGRlciwgZmlsZW5hbWUpOwotfQotCi1QYXRobmFt
ZSYgUGF0aG5hbWU6Om9wZXJhdG9yPShjb25zdCBQYXRobmFtZSYpID0gZGVmYXVsdDsKLVBhdGhu
YW1lJiBQYXRobmFtZTo6b3BlcmF0b3I9KFBhdGhuYW1lJiYpID0gZGVmYXVsdDsKLQotc3RkOjpz
dHJpbmcgUGF0aG5hbWU6OnBhdGhuYW1lKCkgY29uc3QgewotICBzdGQ6OnN0cmluZyBwYXRobmFt
ZShmb2xkZXJfKTsKLSAgcGF0aG5hbWUuYXBwZW5kKGJhc2VuYW1lXyk7Ci0gIHBhdGhuYW1lLmFw
cGVuZChleHRlbnNpb25fKTsKLSAgaWYgKHBhdGhuYW1lLmVtcHR5KCkpIHsKLSAgICAvLyBJbnN0
ZWFkIG9mIHRoZSBlbXB0eSBwYXRobmFtZSwgcmV0dXJuIHRoZSBjdXJyZW50IHdvcmtpbmcgZGly
ZWN0b3J5LgotICAgIHBhdGhuYW1lLnB1c2hfYmFjaygnLicpOwotICAgIHBhdGhuYW1lLnB1c2hf
YmFjayhmb2xkZXJfZGVsaW1pdGVyXyk7Ci0gIH0KLSAgcmV0dXJuIHBhdGhuYW1lOwotfQotCi12
b2lkIFBhdGhuYW1lOjpTZXRQYXRobmFtZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aG5hbWUpIHsK
LSAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBwb3MgPSBwYXRobmFtZS5maW5kX2xhc3Rfb2YoRk9M
REVSX0RFTElNUyk7Ci0gIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICBTZXRG
b2xkZXIocGF0aG5hbWUuc3Vic3RyKDAsIHBvcyArIDEpKTsKLSAgICBTZXRGaWxlbmFtZShwYXRo
bmFtZS5zdWJzdHIocG9zICsgMSkpOwotICB9IGVsc2UgewotICAgIFNldEZvbGRlcihFTVBUWV9T
VFIpOwotICAgIFNldEZpbGVuYW1lKHBhdGhuYW1lKTsKLSAgfQotfQotCi12b2lkIFBhdGhuYW1l
OjpTZXRQYXRobmFtZShjb25zdCBzdGQ6OnN0cmluZyYgZm9sZGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKSB7Ci0gIFNldEZvbGRlcihm
b2xkZXIpOwotICBTZXRGaWxlbmFtZShmaWxlbmFtZSk7Ci19Ci0KLXZvaWQgUGF0aG5hbWU6OlNl
dEZvbGRlcihjb25zdCBzdGQ6OnN0cmluZyYgZm9sZGVyKSB7Ci0gIGZvbGRlcl8uYXNzaWduKGZv
bGRlcik7Ci0gIC8vIEVuc3VyZSBmb2xkZXIgZW5kcyBpbiBhIHBhdGggZGVsaW1pdGVyCi0gIGlm
ICghZm9sZGVyXy5lbXB0eSgpICYmICFJc0ZvbGRlckRlbGltaXRlcihmb2xkZXJfW2ZvbGRlcl8u
bGVuZ3RoKCktMV0pKSB7Ci0gICAgZm9sZGVyXy5wdXNoX2JhY2soZm9sZGVyX2RlbGltaXRlcl8p
OwotICB9Ci19Ci0KLXZvaWQgUGF0aG5hbWU6OkFwcGVuZEZvbGRlcihjb25zdCBzdGQ6OnN0cmlu
ZyYgZm9sZGVyKSB7Ci0gIGZvbGRlcl8uYXBwZW5kKGZvbGRlcik7Ci0gIC8vIEVuc3VyZSBmb2xk
ZXIgZW5kcyBpbiBhIHBhdGggZGVsaW1pdGVyCi0gIGlmICghZm9sZGVyXy5lbXB0eSgpICYmICFJ
c0ZvbGRlckRlbGltaXRlcihmb2xkZXJfW2ZvbGRlcl8ubGVuZ3RoKCktMV0pKSB7Ci0gICAgZm9s
ZGVyXy5wdXNoX2JhY2soZm9sZGVyX2RlbGltaXRlcl8pOwotICB9Ci19Ci0KLWJvb2wgUGF0aG5h
bWU6OlNldEJhc2VuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBiYXNlbmFtZSkgewotICBpZihiYXNl
bmFtZS5maW5kX2ZpcnN0X29mKEZPTERFUl9ERUxJTVMpICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7
Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGJhc2VuYW1lXy5hc3NpZ24oYmFzZW5hbWUpOwot
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBQYXRobmFtZTo6U2V0RXh0ZW5zaW9uKGNvbnN0IHN0
ZDo6c3RyaW5nJiBleHRlbnNpb24pIHsKLSAgaWYgKGV4dGVuc2lvbi5maW5kX2ZpcnN0X29mKEZP
TERFUl9ERUxJTVMpICE9IHN0ZDo6c3RyaW5nOjpucG9zIHx8Ci0gICAgZXh0ZW5zaW9uLmZpbmRf
Zmlyc3Rfb2YoRVhUX0RFTElNLCAxKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAgcmV0
dXJuIGZhbHNlOwotICB9Ci0gIGV4dGVuc2lvbl8uYXNzaWduKGV4dGVuc2lvbik7Ci0gIC8vIEVu
c3VyZSBleHRlbnNpb24gYmVnaW5zIHdpdGggdGhlIGV4dGVuc2lvbiBkZWxpbWl0ZXIKLSAgaWYg
KCFleHRlbnNpb25fLmVtcHR5KCkgJiYgKGV4dGVuc2lvbl9bMF0gIT0gRVhUX0RFTElNKSkgewot
ICAgIGV4dGVuc2lvbl8uaW5zZXJ0KGV4dGVuc2lvbl8uYmVnaW4oKSwgRVhUX0RFTElNKTsKLSAg
fQotICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RkOjpzdHJpbmcgUGF0aG5hbWU6OmZpbGVuYW1lKCkg
Y29uc3QgewotICBzdGQ6OnN0cmluZyBmaWxlbmFtZShiYXNlbmFtZV8pOwotICBmaWxlbmFtZS5h
cHBlbmQoZXh0ZW5zaW9uXyk7Ci0gIHJldHVybiBmaWxlbmFtZTsKLX0KLQotYm9vbCBQYXRobmFt
ZTo6U2V0RmlsZW5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKSB7Ci0gIHN0ZDo6c3Ry
aW5nOjpzaXplX3R5cGUgcG9zID0gZmlsZW5hbWUucmZpbmQoRVhUX0RFTElNKTsKLSAgaWYgKChw
b3MgPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHx8IChwb3MgPT0gMCkpIHsKLSAgICByZXR1cm4gU2V0
RXh0ZW5zaW9uKEVNUFRZX1NUUikgJiYgU2V0QmFzZW5hbWUoZmlsZW5hbWUpOwotICB9IGVsc2Ug
ewotICAgIHJldHVybiBTZXRFeHRlbnNpb24oZmlsZW5hbWUuc3Vic3RyKHBvcykpICYmIFNldEJh
c2VuYW1lKGZpbGVuYW1lLnN1YnN0cigwLCBwb3MpKTsKLSAgfQotfQotCi0vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0KLX0gLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGF0aHV0aWxzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHMu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU0M2JlMDczZjI0NWQzNDA5ZmQ2OTBi
NWNmOWNjOTdkYjZlNWE3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9wYXRodXRpbHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IDIwMDQgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgotICovCi0KLSNpZm5kZWYgUlRDX0JBU0VfUEFUSFVUSUxTX0hfCi0jZGVmaW5lIFJUQ19CQVNF
X1BBVEhVVElMU19IXwotCi0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCi0KLW5hbWVzcGFjZSBydGMgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0v
LyBQYXRobmFtZSAtIHBhcnNpbmcgb2YgcGF0aG5hbWVzIGludG8gY29tcG9uZW50cywgYW5kIHZp
Y2UgdmVyc2EuCi0vLwotLy8gVG8gZXN0YWJsaXNoIGNvbnNpc3RlbnQgdGVybWlub2xvZ3ksIGEg
ZmlsZW5hbWUgbmV2ZXIgY29udGFpbnMgYSBmb2xkZXIKLS8vIGNvbXBvbmVudC4gIEEgZm9sZGVy
IG5ldmVyIGNvbnRhaW5zIGEgZmlsZW5hbWUuICBBIHBhdGhuYW1lIG1heSBpbmNsdWRlCi0vLyBh
IGZvbGRlciBhbmQvb3IgZmlsZW5hbWUgY29tcG9uZW50LiAgSGVyZSBhcmUgc29tZSBleGFtcGxl
czoKLS8vCi0vLyAgIHBhdGhuYW1lKCkgICAgICAvaG9tZS9qb2huL2V4YW1wbGUudHh0Ci0vLyAg
IGZvbGRlcigpICAgICAgICAvaG9tZS9qb2huLwotLy8gICBmaWxlbmFtZSgpICAgICAgICAgICAg
ICAgICBleGFtcGxlLnR4dAotLy8gICBwYXJlbnRfZm9sZGVyKCkgL2hvbWUvCi0vLyAgIGZvbGRl
cl9uYW1lKCkgICAgICAgICBqb2huLwotLy8gICBiYXNlbmFtZSgpICAgICAgICAgICAgICAgICBl
eGFtcGxlCi0vLyAgIGV4dGVuc2lvbigpICAgICAgICAgICAgICAgICAgICAgICAudHh0Ci0vLwot
Ly8gQmFzZW5hbWUgbWF5IGJlZ2luLCBlbmQsIGFuZC9vciBpbmNsdWRlIHBlcmlvZHMsIGJ1dCBu
byBmb2xkZXIgZGVsaW1pdGVycy4KLS8vIElmIGV4dGVuc2lvbiBleGlzdHMsIGl0IGNvbnNpc3Rz
IG9mIGEgcGVyaW9kIGZvbGxvd2VkIGJ5IHplcm8gb3IgbW9yZQotLy8gbm9uLXBlcmlvZC9ub24t
ZGVsaW1pdGVyIGNoYXJhY3RlcnMsIGFuZCBiYXNlbmFtZSBpcyBub24tZW1wdHkuCi0vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0KLWNsYXNzIFBhdGhuYW1lIHsKLSBwdWJsaWM6Ci0gIC8vIEZvbGRl
ciBkZWxpbWl0ZXJzIGFyZSBzbGFzaCBhbmQgYmFja3NsYXNoCi0gIHN0YXRpYyBib29sIElzRm9s
ZGVyRGVsaW1pdGVyKGNoYXIgY2gpOwotICBzdGF0aWMgY2hhciBEZWZhdWx0Rm9sZGVyRGVsaW1p
dGVyKCk7Ci0KLSAgUGF0aG5hbWUoKTsKLSAgUGF0aG5hbWUoY29uc3QgUGF0aG5hbWUmKTsKLSAg
UGF0aG5hbWUoUGF0aG5hbWUmJik7Ci0gIFBhdGhuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRo
bmFtZSk7Ci0gIFBhdGhuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb2xkZXIsIGNvbnN0IHN0ZDo6
c3RyaW5nJiBmaWxlbmFtZSk7Ci0KLSAgUGF0aG5hbWUmIG9wZXJhdG9yPShjb25zdCBQYXRobmFt
ZSYpOwotICBQYXRobmFtZSYgb3BlcmF0b3I9KFBhdGhuYW1lJiYpOwotCi0gIC8vIFJldHVybnMg
dGhlIGZvbGRlciBhbmQgZmlsZW5hbWUgY29tcG9uZW50cy4gIElmIHRoZSBwYXRobmFtZSBpcyBl
bXB0eSwKLSAgLy8gcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgZGly
ZWN0b3J5IChhcyBhIHJlbGF0aXZlIHBhdGgsCi0gIC8vIGkuZS4sICIuIikuCi0gIHN0ZDo6c3Ry
aW5nIHBhdGhuYW1lKCkgY29uc3Q7Ci0gIHZvaWQgU2V0UGF0aG5hbWUoY29uc3Qgc3RkOjpzdHJp
bmcmIHBhdGhuYW1lKTsKLSAgdm9pZCBTZXRQYXRobmFtZShjb25zdCBzdGQ6OnN0cmluZyYgZm9s
ZGVyLCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpOwotCi0gIC8vIFNldEZvbGRlciBhbmQg
QXBwZW5kRm9sZGVyIHdpbGwgYXBwZW5kIGEgZm9sZGVyIGRlbGltaXRlciwgaWYgbmVlZGVkLgot
ICB2b2lkIFNldEZvbGRlcihjb25zdCBzdGQ6OnN0cmluZyYgZm9sZGVyKTsKLSAgdm9pZCBBcHBl
bmRGb2xkZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGZvbGRlcik7Ci0KLSAgYm9vbCBTZXRCYXNlbmFt
ZShjb25zdCBzdGQ6OnN0cmluZyYgYmFzZW5hbWUpOwotCi0gIC8vIFNldEV4dGVuc2lvbiB3aWxs
IHByZWZpeCBhIHBlcmlvZCwgaWYgbmVlZGVkLgotICBib29sIFNldEV4dGVuc2lvbihjb25zdCBz
dGQ6OnN0cmluZyYgZXh0ZW5zaW9uKTsKLQotICBzdGQ6OnN0cmluZyBmaWxlbmFtZSgpIGNvbnN0
OwotICBib29sIFNldEZpbGVuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSk7Ci0KLSBw
cml2YXRlOgotICBzdGQ6OnN0cmluZyBmb2xkZXJfLCBiYXNlbmFtZV8sIGV4dGVuc2lvbl87Ci0g
IGNoYXIgZm9sZGVyX2RlbGltaXRlcl87Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgcnRjCi0KLSNl
bmRpZiAgLy8gUlRDX0JBU0VfUEFUSFVUSUxTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHNfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9w
YXRodXRpbHNfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZTRm
MGFiYTU5YmY1ZTRmOGU4OWJmOWQ5NTA4ZDBmNTc5ZGJlZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvcGF0aHV0aWxzX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwK
QEAgLTEsMzcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNyBUaGUgV2ViUlRDIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQot
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgInJ0Y19iYXNl
L3BhdGh1dGlscy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0KLVRFU1QoUGF0aG5h
bWUsIFJldHVybnNEb3RGb3JFbXB0eVBhdGhuYW1lKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGtD
V0QgPQotICAgICAgc3RkOjpzdHJpbmcoIi4iKSArIHJ0Yzo6UGF0aG5hbWU6OkRlZmF1bHRGb2xk
ZXJEZWxpbWl0ZXIoKTsKLQotICBydGM6OlBhdGhuYW1lIHBhdGgoIi8iLCAiIik7Ci0gIEVYUEVD
VF9UUlVFIChwYXRoLmZpbGVuYW1lKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShwYXRoLnBh
dGhuYW1lKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZygiLyIpLCBwYXRoLnBh
dGhuYW1lKCkpOwotCi0gIHBhdGguU2V0UGF0aG5hbWUoIiIsICJmb28iKTsKLSAgRVhQRUNUX0ZB
TFNFKHBhdGguZmlsZW5hbWUoKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKHBhdGgucGF0aG5h
bWUoKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKCJmb28iKSwgcGF0aC5wYXRo
bmFtZSgpKTsKLQotICBwYXRoLlNldFBhdGhuYW1lKCIiLCAiIik7Ci0gIEVYUEVDVF9UUlVFIChw
YXRoLmZpbGVuYW1lKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShwYXRoLnBhdGhuYW1lKCku
ZW1wdHkoKSk7Ci0gIEVYUEVDVF9FUShrQ1dELCBwYXRoLnBhdGhuYW1lKCkpOwotCi0gIHBhdGgu
U2V0UGF0aG5hbWUoa0NXRCwgIiIpOwotICBFWFBFQ1RfVFJVRSAocGF0aC5maWxlbmFtZSgpLmVt
cHR5KCkpOwotICBFWFBFQ1RfRkFMU0UocGF0aC5wYXRobmFtZSgpLmVtcHR5KCkpOwotICBFWFBF
Q1RfRVEoa0NXRCwgcGF0aC5wYXRobmFtZSgpKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2Fsc29ja2V0c2Vy
dmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3QuY2MKaW5kZXggMWUwNDZj
MDU3ZTVkODIxMWMyMzVkODU0ZjVkNmNlNzEyZTZiYmFhMy4uNGIzNmNkNWY2MDhlOGY4N2ZlOWU2
ZDViOWQ5MGQ5ZTkxMGU0ZWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3QuY2MKQEAgLTU0Nyw3ICs1NDcsMTMgQEAg
VGhyZWFkKiBQb3NpeFNpZ25hbERlbGl2ZXJ5VGVzdDo6c2lnbmFsZWRfdGhyZWFkXyA9IG51bGxw
dHI7CiAKIC8vIFRlc3QgcmVjZWl2aW5nIGEgc3luY2hyb25vdXMgc2lnbmFsIHdoaWxlIG5vdCBp
biBXYWl0KCkgYW5kIHRoZW4gZW50ZXJpbmcKIC8vIFdhaXQoKSBhZnRlcndhcmRzLgotVEVTVF9G
KFBvc2l4U2lnbmFsRGVsaXZlcnlUZXN0LCBSYWlzZVRoZW5XYWl0KSB7CisvLyBUT0RPKHdlYnJ0
Yzo3ODY0KTogRmFpbHMgb24gcmVhbCBpT1MgZGV2aWNlcworI2lmIGRlZmluZWQoV0VCUlRDX0lP
UykgJiYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk1fRkFNSUxZKQorI2RlZmluZSBNQVlCRV9SYWlz
ZVRoZW5XYWl0IERJU0FCTEVEX1JhaXNlVGhlbldhaXQKKyNlbHNlCisjZGVmaW5lIE1BWUJFX1Jh
aXNlVGhlbldhaXQgUmFpc2VUaGVuV2FpdAorI2VuZGlmCitURVNUX0YoUG9zaXhTaWduYWxEZWxp
dmVyeVRlc3QsIE1BWUJFX1JhaXNlVGhlbldhaXQpIHsKICAgQVNTRVJUX1RSVUUoc3NfLT5TZXRQ
b3NpeFNpZ25hbEhhbmRsZXIoU0lHVEVSTSwgJlJlY29yZFNpZ25hbCkpOwogICByYWlzZShTSUdU
RVJNKTsKICAgRVhQRUNUX1RSVUUoc3NfLT5XYWl0KDAsIHRydWUpKTsKQEAgLTU1Nyw3ICs1NjMs
MTMgQEAgVEVTVF9GKFBvc2l4U2lnbmFsRGVsaXZlcnlUZXN0LCBSYWlzZVRoZW5XYWl0KSB7CiAK
IC8vIFRlc3QgdGhhdCB3ZSBjYW4gaGFuZGxlIGdldHRpbmcgdG9ucyBvZiByZXBlYXRlZCBzaWdu
YWxzIGFuZCB0aGF0IHdlIHNlZSBhbGwKIC8vIHRoZSBkaWZmZXJlbnQgb25lcy4KLVRFU1RfRihQ
b3NpeFNpZ25hbERlbGl2ZXJ5VGVzdCwgSW5zYW5lbHlNYW55U2lnbmFscykgeworLy8gVE9ETyh3
ZWJydGM6Nzg2NCk6IEZhaWxzIG9uIHJlYWwgaU9TIGRldmljZXMKKyNpZiBkZWZpbmVkKFdFQlJU
Q19JT1MpICYmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNX0ZBTUlMWSkKKyNkZWZpbmUgTUFZQkVf
SW5zYW5lbHlNYW55U2lnbmFscyBESVNBQkxFRF9JbnNhbmVseU1hbnlTaWduYWxzCisjZWxzZQor
I2RlZmluZSBNQVlCRV9JbnNhbmVseU1hbnlTaWduYWxzIEluc2FuZWx5TWFueVNpZ25hbHMKKyNl
bmRpZgorVEVTVF9GKFBvc2l4U2lnbmFsRGVsaXZlcnlUZXN0LCBNQVlCRV9JbnNhbmVseU1hbnlT
aWduYWxzKSB7CiAgIHNzXy0+U2V0UG9zaXhTaWduYWxIYW5kbGVyKFNJR1RFUk0sICZSZWNvcmRT
aWduYWwpOwogICBzc18tPlNldFBvc2l4U2lnbmFsSGFuZGxlcihTSUdJTlQsICZSZWNvcmRTaWdu
YWwpOwogICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKQEAgLTU5Nyw3ICs2MDks
MTMgQEAgY2xhc3MgUmFpc2VTaWdUZXJtUnVubmFibGUgOiBwdWJsaWMgUnVubmFibGUgewogCiAv
LyBUZXN0IHRoYXQgaXQgd29ya3Mgbm8gbWF0dGVyIHdoYXQgdGhyZWFkIHRoZSBrZXJuZWwgY2hv
b3NlcyB0byBnaXZlIHRoZQogLy8gc2lnbmFsIHRvIChzaW5jZSBpdCdzIG5vdCBndWFyYW50ZWVk
IHRvIGJlIHRoZSBvbmUgdGhhdCBXYWl0KCkgcnVucyBvbikuCi1URVNUX0YoUG9zaXhTaWduYWxE
ZWxpdmVyeVRlc3QsIFNpZ25hbE9uRGlmZmVyZW50VGhyZWFkKSB7CisvLyBUT0RPKHdlYnJ0Yzo3
ODY0KTogRmFpbHMgb24gcmVhbCBpT1MgZGV2aWNlcworI2lmIGRlZmluZWQoV0VCUlRDX0lPUykg
JiYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk1fRkFNSUxZKQorI2RlZmluZSBNQVlCRV9TaWduYWxP
bkRpZmZlcmVudFRocmVhZCBESVNBQkxFRF9TaWduYWxPbkRpZmZlcmVudFRocmVhZAorI2Vsc2UK
KyNkZWZpbmUgTUFZQkVfU2lnbmFsT25EaWZmZXJlbnRUaHJlYWQgU2lnbmFsT25EaWZmZXJlbnRU
aHJlYWQKKyNlbmRpZgorVEVTVF9GKFBvc2l4U2lnbmFsRGVsaXZlcnlUZXN0LCBESVNBQkxFRF9T
aWduYWxPbkRpZmZlcmVudFRocmVhZCkgewogICBzc18tPlNldFBvc2l4U2lnbmFsSGFuZGxlcihT
SUdURVJNLCAmUmVjb3JkU2lnbmFsKTsKICAgLy8gTWFzayBvdXQgU0lHVEVSTSBzbyB0aGF0IGl0
IGNhbid0IGJlIGRlbGl2ZXJlZCB0byB0aGlzIHRocmVhZC4KICAgc2lnc2V0X3QgbWFzazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3BsYXRmb3JtX2ZpbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmNjCmluZGV4IGE0YzkwNmExZWQwMjhhZGY2
ZGIwYmZmMjUyODQwN2I5MGI5YmNjYzkuLmJhZWZiMjI5MzEzYmQyYTczYTM0ZGQxMzI0ODA4YTU5
MjlkOGQwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGxhdGZvcm1fZmlsZS5jYwpAQCAtMTAs
MTQgKzEwLDEzIEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmgiCiAKLSNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgotCiAjaWYgZGVmaW5lZChXRUJSVENfV0lO
KQogI2luY2x1ZGUgPGlvLmg+CisKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIiAg
Ly8gRm9yIFRvVXRmMTYKICNlbHNlCiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMv
c3RhdC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5jYwppbmRleCA3OWQ5
ZDUzYWVlZTAyZTBkOGJlMDQxMWIwZTAxOWI2MDc1ZDA3ZTFlLi5iYTg0YjZhZThlMDQ5NTQ4Nzcz
YzdmZWQ0NzMxNTVkZTVjNmEzNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGxhdGZvcm1f
dGhyZWFkLmNjCkBAIC0xMCwxNSArMTAsMTcgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRm
b3JtX3RocmVhZC5oIgogCisjaWYgIWRlZmluZWQoV0VCUlRDX1dJTikKKyNpbmNsdWRlIDxzY2hl
ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KKwogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5o
IgogCi0jaWYgZGVmaW5lZChXRUJSVENfTElOVVgpCi0jaW5jbHVkZSA8c3lzL3ByY3RsLmg+Ci0j
aW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgcnRjIHsKIG5hbWVz
cGFjZSB7CiAjaWYgZGVmaW5lZChXRUJSVENfV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0
Zm9ybV90aHJlYWQuaAppbmRleCAzMzkyMWMyMDlkYTAyODliMDc0N2RhYTQ3YjE1NDViY2E1NDQ2
ZDU0Li40N2MyM2RjMWI1YjQ3ZjRiMjk4ODUyMjhmMzhiMzA2ZTIzYWQyYjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0
Zm9ybV90aHJlYWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaApAQCAtMTEsMTAgKzExLDEyIEBACiAjaWZu
ZGVmIFJUQ19CQVNFX1BMQVRGT1JNX1RIUkVBRF9IXwogI2RlZmluZSBSVENfQkFTRV9QTEFURk9S
TV9USFJFQURfSF8KIAorI2lmbmRlZiBXRUJSVENfV0lOCisjaW5jbHVkZSA8cHRocmVhZC5oPgor
I2VuZGlmCiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0
b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2No
ZWNrZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvcHJveHlfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wcm94eV91bml0dGVzdC5jYwppbmRleCBm
NDIwMzlmNTBiYTIxMThkZGNjYWFiODQ1YzFkYzk0MGUyYTg0YzAyLi4wMTAxODkzODRmOGI3NTcw
OTlhZTY4YmM4YTM2ZDBlOThhZTJiZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wcm94eV91bml0dGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wcm94eV91
bml0dGVzdC5jYwpAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3ZpcnR1YWxz
b2NrZXRzZXJ2ZXIuaCIKIAogdXNpbmcgcnRjOjpTb2NrZXQ7Ci11c2luZyBydGM6OlRocmVhZDsK
IHVzaW5nIHJ0Yzo6U29ja2V0QWRkcmVzczsKIAogc3RhdGljIGNvbnN0IFNvY2tldEFkZHJlc3Mg
a1NvY2tzUHJveHlJbnRBZGRyKCIxLjIuMy40IiwgMTA4MCk7CkBAIC00OSw3ICs0OCw4IEBAIFRF
U1RfRihQcm94eVRlc3QsIFRlc3RTb2NrczVDb25uZWN0KSB7CiAgICAgICBzb2NrZXQsIGtTb2Nr
c1Byb3h5SW50QWRkciwgIiIsIHJ0Yzo6Q3J5cHRTdHJpbmcoKSk7CiAgIC8vIFRPRE86IElQdjYt
aXplIHRoZXNlIHRlc3RzIHdoZW4gcHJveHkgc3VwcG9ydHMgSVB2Ni4KIAotICBydGM6OlRlc3RF
Y2hvU2VydmVyIHNlcnZlcihUaHJlYWQ6OkN1cnJlbnQoKSwgU29ja2V0QWRkcmVzcyhJTkFERFJf
QU5ZLCAwKSk7CisgIHJ0Yzo6VGVzdEVjaG9TZXJ2ZXIgc2VydmVyKHJ0Yzo6VGhyZWFkOjpDdXJy
ZW50KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvY2tldEFkZHJlc3MoSU5BRERS
X0FOWSwgMCkpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jVENQU29ja2V0PiBwYWNr
ZXRfc29ja2V0KAogICAgICAgcnRjOjpBc3luY1RDUFNvY2tldDo6Q3JlYXRlKHByb3h5X3NvY2tl
dCwgU29ja2V0QWRkcmVzcyhJTkFERFJfQU5ZLCAwKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Byb3h5c2VydmVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcHJveHlz
ZXJ2ZXIuY2MKaW5kZXggNTVjYWI4MDk3NWMzNmZkMTU0M2U4NGVkYTUxMmFmZjM4MmJkZTc0Yy4u
NzFjNDg3OTA5OWYwNTY0OGM0ODUwNjA5NjM3NGJjYmE5ZDJmNTMwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcHJveHlzZXJ2
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvcHJveHlzZXJ2ZXIuY2MKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0ZmFjdG9yeS5oIgogCiBuYW1lc3Bh
Y2UgcnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3JhY2VfY2hlY2tlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgKaW5kZXggNzM1NjdlOThk
OGFjMDdkYjc2NmU4MWM4OTdkYjM0YzBkM2FkOGRlYy4uNGQ1NzQ2MDFlYjBiNGJhNjJhY2U1Y2Ri
NDZkNjkwYTM0MTNmYTNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgKQEAg
LTEyLDcgKzEyLDcgQEAKICNkZWZpbmUgUlRDX0JBU0VfUkFDRV9DSEVDS0VSX0hfCiAKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJl
YWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMuaCIKICNpbmNs
dWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9yYW5kb20uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3JhbmRvbS5oCmluZGV4IDJmYWE5ODU2ZGM2YWVlMTEwNWNmZWJiOWZmNmM4YTVk
NjA5YjZlMDkuLmUxYzNiYjcwNThlODI2OTc0OTQ5OTQ0OTAwODZmMDI3MTJkYmEwNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3JhbmRvbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3JhbmRvbS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFJUQ19CQVNFX1JB
TkRPTV9IXwogI2RlZmluZSBSVENfQkFTRV9SQU5ET01fSF8KIAorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPGxpbWl0cz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvcmF0ZV9saW1pdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmNjCmluZGV4IDAzNDNmMjU2YjI5M2YwYTExNDQ4
ZjE2N2RjYTMxOTBjZjc1MDVkNTYuLjVjN2JkZWZiMGM4Yjk3YTA2OGNhZGQ5MzQ3N2Y1YTA1ZGI3
MjZjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3JhdGVfbGltaXRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRlX2xpbWl0ZXIuY2MKQEAgLTksNiArOSwx
MCBAQAogICovCiAKICNpbmNsdWRlICJydGNfYmFzZS9yYXRlX2xpbWl0ZXIuaCIKKworI2luY2x1
ZGUgPGxpbWl0cz4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRl
ICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3JhdGVfbGltaXRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmgKaW5kZXggMGJmZGUwZGEyNTliYjdhNGEy
ZTVkYTAxMDY3NTNmMDM5M2U5NmYxZS4uNDNlZjg4ZDhmYzM1NmViMGU5MWM5NzgyYzE2MjljYjhk
YTYzODljMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmgKQEAgLTExLDExICsx
MSwxMyBAQAogI2lmbmRlZiBSVENfQkFTRV9SQVRFX0xJTUlURVJfSF8KICNkZWZpbmUgUlRDX0JB
U0VfUkFURV9MSU1JVEVSX0hfCiAKLSNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8c3RkZGVm
Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rv
cm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvcmF0ZV9zdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFk
X2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRlX2xpbWl0
ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9yYXRlX2xpbWl0ZXJfdW5pdHRlc3QuY2MKaW5kZXggNmVmZWE1NDU4ZTFiMDg3
Y2ZhMjA1Y2UxZTVlMWI0ZjM3MTY1MDg2Zi4uYWMwNjI1ZmExODZmNzljZWIxN2NkYzI0MjY0OGEw
N2ViZTkxOWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVfbGltaXRlcl91
bml0dGVzdC5jYwpAQCAtMTEyLDkgKzExMiw3IEBAIHN0YXRpYyBjb25zdCBpbnQ2NF90IGtNYXhU
aW1lb3V0TXMgPSAzMDAwMDsKIGNsYXNzIFRocmVhZFRhc2sgewogIHB1YmxpYzoKICAgZXhwbGlj
aXQgVGhyZWFkVGFzayhSYXRlTGltaXRlciogcmF0ZV9saW1pdGVyKQotICAgICAgOiByYXRlX2xp
bWl0ZXJfKHJhdGVfbGltaXRlciksCi0gICAgICAgIHN0YXJ0X3NpZ25hbF8oZmFsc2UsIGZhbHNl
KSwKLSAgICAgICAgZW5kX3NpZ25hbF8oZmFsc2UsIGZhbHNlKSB7fQorICAgICAgOiByYXRlX2xp
bWl0ZXJfKHJhdGVfbGltaXRlcikge30KICAgdmlydHVhbCB+VGhyZWFkVGFzaygpIHt9CiAKICAg
dm9pZCBSdW4oKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRlX3N0YXRpc3RpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVfc3RhdGlzdGljcy5oCmluZGV4
IDY4MDM1YzlhNjhlOThiYTAwMzJiNTdkZDNkYTAwMmQyNmNjMWU5NzYuLmQ0Y2NjNTliZjViZGZk
MWM4OTM4OGZkN2RmZWYxMmJmZDgwYmUwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVfc3RhdGlzdGljcy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVf
c3RhdGlzdGljcy5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIFJUQ19CQVNFX1JBVEVfU1RB
VElTVElDU19IXwogI2RlZmluZSBSVENfQkFTRV9SQVRFX1NUQVRJU1RJQ1NfSF8KIAorI2luY2x1
ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAog
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGV0cmFja2VyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZXRy
YWNrZXIuY2MKaW5kZXggZTMxZDI2NjI3YWIxOWVkYjI3YzFkYmUwMjBiODgzZTVkZjczZDBlOS4u
N2M5NmNhOWY2MDg1ODg5MmI5NTUwMWVmMmU2ODYxYjBiMjE3ODk2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZXRyYWNr
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvcmF0ZXRyYWNrZXIuY2MKQEAgLTEwLDggKzEwLDYgQEAKIAogI2luY2x1ZGUgInJ0Y19i
YXNlL3JhdGV0cmFja2VyLmgiCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4KLQogI2luY2x1ZGUgPGFs
Z29yaXRobT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlm
aWNhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9ydGNjZXJ0aWZpY2F0ZS5jYwppbmRleCA3ZjAyN2JhNWY4MGY0ODg4NmQ3M2U1MGJiMzk0
NTE2MGY1YTIzYmY5Li44NzUwNjhmNGZjOTg4OTcwZTAyNmY4NzFmMjk2ZjNkMjVmNWVhMmVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9ydGNjZXJ0aWZpY2F0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5jYwpAQCAtMTQsNiArMTQsOSBA
QAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVm
Y291bnRlZG9iamVjdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1l
dXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKQEAgLTI5LDcgKzMyLDcgQEAgUlRDQ2VydGlm
aWNhdGU6OlJUQ0NlcnRpZmljYXRlKFNTTElkZW50aXR5KiBpZGVudGl0eSkgOiBpZGVudGl0eV8o
aWRlbnRpdHkpIHsKIFJUQ0NlcnRpZmljYXRlOjp+UlRDQ2VydGlmaWNhdGUoKSB7fQogCiB1aW50
NjRfdCBSVENDZXJ0aWZpY2F0ZTo6RXhwaXJlcygpIGNvbnN0IHsKLSAgaW50NjRfdCBleHBpcmVz
ID0gc3NsX2NlcnRpZmljYXRlKCkuQ2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpOworICBpbnQ2
NF90IGV4cGlyZXMgPSBHZXRTU0xDZXJ0aWZpY2F0ZSgpLkNlcnRpZmljYXRlRXhwaXJhdGlvblRp
bWUoKTsKICAgaWYgKGV4cGlyZXMgIT0gLTEpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihleHBpcmVzKSAqIGtOdW1NaWxsaXNlY3NQZXJTZWM7CiAgIC8vIElmIHRoZSBleHBpcmF0
aW9uIHRpbWUgY291bGQgbm90IGJlIHJldHJpZXZlZCByZXR1cm4gYW4gZXhwaXJlZCB0aW1lc3Rh
bXAuCkBAIC00MCwxNyArNDMsMjIgQEAgYm9vbCBSVENDZXJ0aWZpY2F0ZTo6SGFzRXhwaXJlZCh1
aW50NjRfdCBub3cpIGNvbnN0IHsKICAgcmV0dXJuIEV4cGlyZXMoKSA8PSBub3c7CiB9CiAKK2Nv
bnN0IFNTTENlcnRpZmljYXRlJiBSVENDZXJ0aWZpY2F0ZTo6R2V0U1NMQ2VydGlmaWNhdGUoKSBj
b25zdCB7CisgIHJldHVybiBpZGVudGl0eV8tPmNlcnRpZmljYXRlKCk7Cit9CisKKy8vIERlcHJl
Y2F0ZWQ6IFRPRE8oYmVud3JpZ2h0KSAtIFJlbW92ZSBvbmNlIGNocm9taXVtIGlzIHVwZGF0ZWQu
CiBjb25zdCBTU0xDZXJ0aWZpY2F0ZSYgUlRDQ2VydGlmaWNhdGU6OnNzbF9jZXJ0aWZpY2F0ZSgp
IGNvbnN0IHsKICAgcmV0dXJuIGlkZW50aXR5Xy0+Y2VydGlmaWNhdGUoKTsKIH0KIAotY29uc3Qg
U1NMQ2VydENoYWluJiBSVENDZXJ0aWZpY2F0ZTo6c3NsX2NlcnRfY2hhaW4oKSBjb25zdCB7Citj
b25zdCBTU0xDZXJ0Q2hhaW4mIFJUQ0NlcnRpZmljYXRlOjpHZXRTU0xDZXJ0aWZpY2F0ZUNoYWlu
KCkgY29uc3QgewogICByZXR1cm4gaWRlbnRpdHlfLT5jZXJ0X2NoYWluKCk7CiB9CiAKIFJUQ0Nl
cnRpZmljYXRlUEVNIFJUQ0NlcnRpZmljYXRlOjpUb1BFTSgpIGNvbnN0IHsKICAgcmV0dXJuIFJU
Q0NlcnRpZmljYXRlUEVNKGlkZW50aXR5Xy0+UHJpdmF0ZUtleVRvUEVNU3RyaW5nKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBzc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFNTTENlcnRpZmljYXRlKCkuVG9QRU1TdHJp
bmcoKSk7CiB9CiAKIHNjb3BlZF9yZWZwdHI8UlRDQ2VydGlmaWNhdGU+IFJUQ0NlcnRpZmljYXRl
OjpGcm9tUEVNKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlLmgKaW5kZXggZDU0
MjJmOGI0YTQ3ZDJmZTE5MjhiNjEyM2M3YjVjMDcyZTA2MzY0ZC4uNTYxZWEwZjllN2U5MDZmNGM3
OGQwZmExMTk5OWE5YmE4NzJjNzAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZp
Y2F0ZS5oCkBAIC0xMiwxNSArMTIsMTggQEAKICNkZWZpbmUgUlRDX0JBU0VfUlRDQ0VSVElGSUNB
VEVfSF8KIAogI2luY2x1ZGUgPHN0ZGludC5oPgotCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1
ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zc2xpZGVudGl0
eS5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIAorY2xhc3MgU1NMQ2VydENoYWluOworY2xhc3MgU1NM
Q2VydGlmaWNhdGU7CitjbGFzcyBTU0xJZGVudGl0eTsKKwogLy8gVGhpcyBjbGFzcyBjb250YWlu
cyBQRU0gc3RyaW5ncyBvZiBhbiBSVENDZXJ0aWZpY2F0ZSdzIHByaXZhdGUga2V5IGFuZAogLy8g
Y2VydGlmaWNhdGUgYW5kIGFjdHMgYXMgYSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIFJUQ0NlcnRp
ZmljYXRlLiBDZXJ0aWZpY2F0ZXMKIC8vIGNhbiBiZSBzZXJpYWxpemVkIGFuZCBkZXNlcmlhbGl6
ZWQgdG8gYW5kIGZyb20gdGhpcyBmb3JtYXQsIHdoaWNoIGFsbG93cyBmb3IKQEAgLTU1LDExICs1
OCwxNSBAQCBjbGFzcyBSVENDZXJ0aWZpY2F0ZSA6IHB1YmxpYyBSZWZDb3VudEludGVyZmFjZSB7
CiAgIC8vIENoZWNrcyBpZiB0aGUgY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQsIHdoZXJlIHxub3d8
IGlzIGV4cHJlc3NlZCBpbiBtcwogICAvLyByZWxhdGl2ZSB0byBlcG9jaCwgMTk3MC0wMS0wMVQw
MDowMDowMFouCiAgIGJvb2wgSGFzRXhwaXJlZCh1aW50NjRfdCBub3cpIGNvbnN0OworCisgIGNv
bnN0IFNTTENlcnRpZmljYXRlJiBHZXRTU0xDZXJ0aWZpY2F0ZSgpIGNvbnN0OworICBjb25zdCBT
U0xDZXJ0Q2hhaW4mIEdldFNTTENlcnRpZmljYXRlQ2hhaW4oKSBjb25zdDsKKworICAvLyBEZXBy
ZWNhdGVkOiBUT0RPKGJlbndyaWdodCkgLSBSZW1vdmUgb25jZSBjaHJvbWl1bSBpcyB1cGRhdGVk
LgogICBjb25zdCBTU0xDZXJ0aWZpY2F0ZSYgc3NsX2NlcnRpZmljYXRlKCkgY29uc3Q7Ci0gIGNv
bnN0IFNTTENlcnRDaGFpbiYgc3NsX2NlcnRfY2hhaW4oKSBjb25zdDsKIAogICAvLyBUT0RPKGhi
b3MpOiBJZiBwb3NzaWJsZSwgcmVtb3ZlIG9uY2UgUlRDQ2VydGlmaWNhdGUgYW5kIGl0cwotICAv
LyBzc2xfY2VydGlmaWNhdGUoKSBpcyB1c2VkIGluIGFsbCByZWxldmFudCBwbGFjZXMuIFNob3Vs
ZCBub3QgcGFzcyBhcm91bmQKKyAgLy8gR2V0U1NMQ2VydGlmaWNhdGUoKSBpcyB1c2VkIGluIGFs
bCByZWxldmFudCBwbGFjZXMuIFNob3VsZCBub3QgcGFzcyBhcm91bmQKICAgLy8gcmF3IFNTTElk
ZW50aXR5KiBmb3IgdGhlIHNha2Ugb2YgYWNjZXNzaW5nIFNTTElkZW50aXR5OjpjZXJ0aWZpY2F0
ZSgpLgogICAvLyBIb3dldmVyLCBzb21lIHBsYWNlcyBtaWdodCBuZWVkIFNTTElkZW50aXR5KiBm
b3IgaXRzIHB1YmxpYy9wcml2YXRlIGtleS4uLgogICBTU0xJZGVudGl0eSogaWRlbnRpdHkoKSBj
b25zdCB7IHJldHVybiBpZGVudGl0eV8uZ2V0KCk7IH0KQEAgLTc3LDcgKzg0LDcgQEAgY2xhc3Mg
UlRDQ2VydGlmaWNhdGUgOiBwdWJsaWMgUmVmQ291bnRJbnRlcmZhY2UgewogCiAgcHJpdmF0ZToK
ICAgLy8gVGhlIFNTTElkZW50aXR5IGlzIHRoZSBvd25lciBvZiB0aGUgU1NMQ2VydGlmaWNhdGUu
IFRvIHByb3RlY3Qgb3VyCi0gIC8vIHNzbF9jZXJ0aWZpY2F0ZSgpIHdlIHRha2Ugb3duZXJzaGlw
IG9mIHxpZGVudGl0eV98LgorICAvLyBHZXRTU0xDZXJ0aWZpY2F0ZSgpIHdlIHRha2Ugb3duZXJz
aGlwIG9mIHxpZGVudGl0eV98LgogICBzdGQ6OnVuaXF1ZV9wdHI8U1NMSWRlbnRpdHk+IGlkZW50
aXR5XzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlZ2VuZXJhdG9yLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGVn
ZW5lcmF0b3IuY2MKaW5kZXggMGI1MWM2MTFiYWRmNTM3MDE0YmQyMDRiM2U1YmFiNjg1M2ZmYjJl
Mi4uMTE0YjM1YzY2NThmY2M5ZTU1NzI1ZTdhMzQ0NDU0OWJjMTJkZjg5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2Vy
dGlmaWNhdGVnZW5lcmF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGVnZW5lcmF0b3IuY2MKQEAgLTEwLDEw
ICsxMCwxNSBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2VydGlmaWNhdGVnZW5lcmF0b3Iu
aCIKIAorI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21l
c3NhZ2VoYW5kbGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Nz
bGlkZW50aXR5LmgiCiAKQEAgLTIzLDcgKzI4LDYgQEAgbmFtZXNwYWNlIHsKIAogLy8gQSBjZXJ0
aWZpY2F0ZXMnIHN1YmplY3QgYW5kIGlzc3VlciBuYW1lLgogY29uc3QgY2hhciBrSWRlbnRpdHlO
YW1lW10gPSAiV2ViUlRDIjsKLQogY29uc3QgdWludDY0X3Qga1llYXJJblNlY29uZHMgPSAzNjUg
KiAyNCAqIDYwICogNjA7CiAKIGVudW0gewpAQCAtNjAsMTEgKzY0LDkgQEAgY2xhc3MgUlRDQ2Vy
dGlmaWNhdGVHZW5lcmF0aW9uVGFzayA6IHB1YmxpYyBSZWZDb3VudEludGVyZmFjZSwKICAgICBz
d2l0Y2ggKG1zZy0+bWVzc2FnZV9pZCkgewogICAgICAgY2FzZSBNU0dfR0VORVJBVEU6CiAgICAg
ICAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF8tPklzQ3VycmVudCgpKTsKLQogICAgICAgICAv
LyBQZXJmb3JtIHRoZSBjZXJ0aWZpY2F0ZSBnZW5lcmF0aW9uIHdvcmsgaGVyZSBvbiB0aGUgd29y
a2VyIHRocmVhZC4KICAgICAgICAgY2VydGlmaWNhdGVfID0gUlRDQ2VydGlmaWNhdGVHZW5lcmF0
b3I6OkdlbmVyYXRlQ2VydGlmaWNhdGUoCiAgICAgICAgICAgICBrZXlfcGFyYW1zXywgZXhwaXJl
c19tc18pOwotCiAgICAgICAgIC8vIEhhbmRsZSBjYWxsYmFja3Mgb24gc2lnbmFsaW5nIHRocmVh
ZC4gUGFzcyBvbiB0aGUgfG1zZy0+cGRhdGF8CiAgICAgICAgIC8vICh3aGljaCByZWZlcmVuY2Vz
IHx0aGlzfCB3aXRoIHJlZiBjb3VudGluZykgdG8gdGhhdCB0aHJlYWQuCiAgICAgICAgIHNpZ25h
bGluZ190aHJlYWRfLT5Qb3N0KFJUQ19GUk9NX0hFUkUsIHRoaXMsIE1TR19HRU5FUkFURV9ET05F
LApAQCAtNzIsMTQgKzc0LDEyIEBAIGNsYXNzIFJUQ0NlcnRpZmljYXRlR2VuZXJhdGlvblRhc2sg
OiBwdWJsaWMgUmVmQ291bnRJbnRlcmZhY2UsCiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBN
U0dfR0VORVJBVEVfRE9ORToKICAgICAgICAgUlRDX0RDSEVDSyhzaWduYWxpbmdfdGhyZWFkXy0+
SXNDdXJyZW50KCkpOwotCiAgICAgICAgIC8vIFBlcmZvcm0gY2FsbGJhY2sgd2l0aCByZXN1bHQg
aGVyZSBvbiB0aGUgc2lnbmFsaW5nIHRocmVhZC4KICAgICAgICAgaWYgKGNlcnRpZmljYXRlXykg
ewogICAgICAgICAgIGNhbGxiYWNrXy0+T25TdWNjZXNzKGNlcnRpZmljYXRlXyk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgY2FsbGJhY2tfLT5PbkZhaWx1cmUoKTsKICAgICAgICAgfQot
CiAgICAgICAgIC8vIERlc3Ryb3kgfG1zZy0+cGRhdGF8IHdoaWNoIHJlZmVyZW5jZXMgfHRoaXN8
IHdpdGggcmVmIGNvdW50aW5nLiBUaGlzCiAgICAgICAgIC8vIG1heSByZXN1bHQgaW4gfHRoaXN8
IGJlaW5nIGRlbGV0ZWQgLSBkbyBub3QgdG91Y2ggbWVtYmVyIHZhcmlhYmxlcwogICAgICAgICAv
LyBhZnRlciB0aGlzIGxpbmUuCkBAIC0xMDUsOSArMTA1LDExIEBAIGNsYXNzIFJUQ0NlcnRpZmlj
YXRlR2VuZXJhdGlvblRhc2sgOiBwdWJsaWMgUmVmQ291bnRJbnRlcmZhY2UsCiBzY29wZWRfcmVm
cHRyPFJUQ0NlcnRpZmljYXRlPiBSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcjo6R2VuZXJhdGVDZXJ0
aWZpY2F0ZSgKICAgICBjb25zdCBLZXlQYXJhbXMmIGtleV9wYXJhbXMsCiAgICAgY29uc3QgYWJz
bDo6b3B0aW9uYWw8dWludDY0X3Q+JiBleHBpcmVzX21zKSB7Ci0gIGlmICgha2V5X3BhcmFtcy5J
c1ZhbGlkKCkpCisgIGlmICgha2V5X3BhcmFtcy5Jc1ZhbGlkKCkpIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgU1NMSWRlbnRpdHkqIGlkZW50aXR5OworICB9CisKKyAgU1NMSWRlbnRpdHkqIGlk
ZW50aXR5ID0gbnVsbHB0cjsKICAgaWYgKCFleHBpcmVzX21zKSB7CiAgICAgaWRlbnRpdHkgPSBT
U0xJZGVudGl0eTo6R2VuZXJhdGUoa0lkZW50aXR5TmFtZSwga2V5X3BhcmFtcyk7CiAgIH0gZWxz
ZSB7CkBAIC0xMjQsOCArMTI2LDkgQEAgc2NvcGVkX3JlZnB0cjxSVENDZXJ0aWZpY2F0ZT4gUlRD
Q2VydGlmaWNhdGVHZW5lcmF0b3I6OkdlbmVyYXRlQ2VydGlmaWNhdGUoCiAgICAgaWRlbnRpdHkg
PSBTU0xJZGVudGl0eTo6R2VuZXJhdGVXaXRoRXhwaXJhdGlvbihrSWRlbnRpdHlOYW1lLCBrZXlf
cGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydF9saWZldGltZV9zKTsKICAgfQotICBpZiAoIWlkZW50aXR5KQorICBpZiAoIWlkZW50
aXR5KSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KICAgc3RkOjp1bmlxdWVfcHRyPFNTTElk
ZW50aXR5PiBpZGVudGl0eV9zcHRyKGlkZW50aXR5KTsKICAgcmV0dXJuIFJUQ0NlcnRpZmljYXRl
OjpDcmVhdGUoc3RkOjptb3ZlKGlkZW50aXR5X3NwdHIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRpZmlj
YXRlZ2VuZXJhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZWdlbmVyYXRvci5oCmluZGV4IGE2YzUwM2E5ZjI5Y2Yw
NGQ2ZDI2YTA1NzJiZTVlOTc0NDJmZjQ1ZDIuLmZlZDA3NWU2ZGRmNGU2N2I0MzRiYWFlYWIxYzYz
MjlkYWFjM2JjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlZ2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNh
dGVnZW5lcmF0b3IuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBSVENfQkFTRV9SVENDRVJU
SUZJQ0FURUdFTkVSQVRPUl9IXwogI2RlZmluZSBSVENfQkFTRV9SVENDRVJUSUZJQ0FURUdFTkVS
QVRPUl9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9ydGNjZXJ0aWZpY2F0ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2FuaXRpemVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zYW5pdGl6ZXIuaAppbmRleCAy
M2E3NDhmODRmYzAyN2Q0Y2RmNWVmYmZiMjQzMGIyZjU2ZDgyZTkzLi44YWYwODI0YjY3Yzg1YmNk
ZWRiM2VmYmMzNWU0MTBlNmUwMWFlOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zYW5pdGl6ZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zYW5pdGl6ZXIuaApA
QCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gRm9yIHNpemVfdC4KIAog
I2lmZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSAiYWJz
bC9tZXRhL3R5cGVfdHJhaXRzLmgiCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX19oYXNfZmVhdHVy
ZSkKQEAgLTk4LDEwICs5OCwxMCBAQCBuYW1lc3BhY2Ugc2FuaXRpemVyX2ltcGwgewogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBib29sIElzVHJpdmlhbGx5Q29weWFibGUoKSB7
Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihzdGQ6OmlzX3RyaXZpYWxseV9jb3B5X2NvbnN0
cnVjdGlibGU8VD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RkOjpp
c190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSB8fAorICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4oYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZTxUPjo6dmFs
dWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChhYnNsOjppc190cml2aWFsbHlfY29w
eV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICFz
dGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxUPjo6dmFsdWUpICYmCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFic2w6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46
OnZhbHVlKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHNhbml0aXplcl9pbXBsCkBAIC0xMjMsOSAr
MTIzLDExIEBAIGlubGluZSB2b2lkIE1zYW5NYXJrVW5pbml0aWFsaXplZChjb25zdCBUJiBtZW0p
IHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVCBNc2FuVW5pbml0aWFsaXplZChU
IHQpIHsKKyNpZiBSVENfSEFTX01TQU4KICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODc2Mik6
IFN3aXRjaCB0byBzdGQ6OmlzX3RyaXZpYWxseV9jb3B5YWJsZSB3aGVuIGl0CiAgIC8vIGJlY29t
ZXMgYXZhaWxhYmxlIGluIGRvd25zdHJlYW0gcHJvamVjdHMuCiAgIHN0YXRpY19hc3NlcnQoc2Fu
aXRpemVyX2ltcGw6OklzVHJpdmlhbGx5Q29weWFibGU8VD4oKSwgIiIpOworI2VuZGlmCiAgIHJ0
Y19Nc2FuTWFya1VuaW5pdGlhbGl6ZWQoJnQsIHNpemVvZihUKSwgMSk7CiAgIHJldHVybiB0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgKaW5kZXggYTU4M2FhOTliNTMz
YmIyOWY2OTczYjJmZjI5N2FlMmZiYmEzZmExZS4uYjk2MWZmNTdlODY0YTczOTMyODA5MzRkM2Iy
YzgxMmM3MWI5ZWUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oCkBA
IC04LDE1NCArOCwxMiBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKLS8vIE9yaWdpbmFsbHkgdGhlc2UgY2xh
c3NlcyBhcmUgZnJvbSBDaHJvbWl1bS4KLS8vIGh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2
Yy9jaHJvbWUvdHJ1bmsvc3JjL2Jhc2UvbWVtb3J5L3JlZl9jb3VudGVkLmg/dmlldz1tYXJrdXAK
LQotLy8KLS8vIEEgc21hcnQgcG9pbnRlciBjbGFzcyBmb3IgcmVmZXJlbmNlIGNvdW50ZWQgb2Jq
ZWN0cy4gIFVzZSB0aGlzIGNsYXNzIGluc3RlYWQKLS8vIG9mIGNhbGxpbmcgQWRkUmVmIGFuZCBS
ZWxlYXNlIG1hbnVhbGx5IG9uIGEgcmVmZXJlbmNlIGNvdW50ZWQgb2JqZWN0IHRvCi0vLyBhdm9p
ZCBjb21tb24gbWVtb3J5IGxlYWtzIGNhdXNlZCBieSBmb3JnZXR0aW5nIHRvIFJlbGVhc2UgYW4g
b2JqZWN0Ci0vLyByZWZlcmVuY2UuICBTYW1wbGUgdXNhZ2U6Ci0vLwotLy8gICBjbGFzcyBNeUZv
byA6IHB1YmxpYyBSZWZDb3VudGVkPE15Rm9vPiB7Ci0vLyAgICAuLi4KLS8vICAgfTsKLS8vCi0v
LyAgIHZvaWQgc29tZV9mdW5jdGlvbigpIHsKLS8vICAgICBzY29wZWRfcmVmcHRyPE15Rm9vPiBm
b28gPSBuZXcgTXlGb28oKTsKLS8vICAgICBmb28tPk1ldGhvZChwYXJhbSk7Ci0vLyAgICAgLy8g
fGZvb3wgaXMgcmVsZWFzZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMKLS8vICAgfQotLy8K
LS8vICAgdm9pZCBzb21lX290aGVyX2Z1bmN0aW9uKCkgewotLy8gICAgIHNjb3BlZF9yZWZwdHI8
TXlGb28+IGZvbyA9IG5ldyBNeUZvbygpOwotLy8gICAgIC4uLgotLy8gICAgIGZvbyA9IG51bGxw
dHI7ICAvLyBleHBsaWNpdGx5IHJlbGVhc2VzIHxmb298Ci0vLyAgICAgLi4uCi0vLyAgICAgaWYg
KGZvbykKLS8vICAgICAgIGZvby0+TWV0aG9kKHBhcmFtKTsKLS8vICAgfQotLy8KLS8vIFRoZSBh
Ym92ZSBleGFtcGxlcyBzaG93IGhvdyBzY29wZWRfcmVmcHRyPFQ+IGFjdHMgbGlrZSBhIHBvaW50
ZXIgdG8gVC4KLS8vIEdpdmVuIHR3byBzY29wZWRfcmVmcHRyPFQ+IGNsYXNzZXMsIGl0IGlzIGFs
c28gcG9zc2libGUgdG8gZXhjaGFuZ2UKLS8vIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIG9i
amVjdHMsIGxpa2Ugc286Ci0vLwotLy8gICB7Ci0vLyAgICAgc2NvcGVkX3JlZnB0cjxNeUZvbz4g
YSA9IG5ldyBNeUZvbygpOwotLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+IGI7Ci0vLwotLy8g
ICAgIGIuc3dhcChhKTsKLS8vICAgICAvLyBub3csIHxifCByZWZlcmVuY2VzIHRoZSBNeUZvbyBv
YmplY3QsIGFuZCB8YXwgcmVmZXJlbmNlcyBudWxsLgotLy8gICB9Ci0vLwotLy8gVG8gbWFrZSBi
b3RoIHxhfCBhbmQgfGJ8IGluIHRoZSBhYm92ZSBleGFtcGxlIHJlZmVyZW5jZSB0aGUgc2FtZSBN
eUZvbwotLy8gb2JqZWN0LCBzaW1wbHkgdXNlIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yOgotLy8K
LS8vICAgewotLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+IGEgPSBuZXcgTXlGb28oKTsKLS8v
ICAgICBzY29wZWRfcmVmcHRyPE15Rm9vPiBiOwotLy8KLS8vICAgICBiID0gYTsKLS8vICAgICAv
LyBub3csIHxhfCBhbmQgfGJ8IGVhY2ggb3duIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIE15Rm9v
IG9iamVjdC4KLS8vICAgfQotLy8KLQogI2lmbmRlZiBSVENfQkFTRV9TQ09QRURfUkVGX1BUUl9I
XwogI2RlZmluZSBSVENfQkFTRV9TQ09QRURfUkVGX1BUUl9IXwogCi0jaW5jbHVkZSA8bWVtb3J5
PgotCi1uYW1lc3BhY2UgcnRjIHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1jbGFzcyBzY29wZWRf
cmVmcHRyIHsKLSBwdWJsaWM6Ci0gIHNjb3BlZF9yZWZwdHIoKSA6IHB0cl8obnVsbHB0cikge30K
LQotICBzY29wZWRfcmVmcHRyKFQqIHApIDogcHRyXyhwKSB7Ci0gICAgaWYgKHB0cl8pCi0gICAg
ICBwdHJfLT5BZGRSZWYoKTsKLSAgfQotCi0gIHNjb3BlZF9yZWZwdHIoY29uc3Qgc2NvcGVkX3Jl
ZnB0cjxUPiYgcikgOiBwdHJfKHIucHRyXykgewotICAgIGlmIChwdHJfKQotICAgICAgcHRyXy0+
QWRkUmVmKCk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgc2NvcGVkX3JlZnB0
cihjb25zdCBzY29wZWRfcmVmcHRyPFU+JiByKSA6IHB0cl8oci5nZXQoKSkgewotICAgIGlmIChw
dHJfKQotICAgICAgcHRyXy0+QWRkUmVmKCk7Ci0gIH0KLQotICAvLyBNb3ZlIGNvbnN0cnVjdG9y
cy4KLSAgc2NvcGVkX3JlZnB0cihzY29wZWRfcmVmcHRyPFQ+JiYgcikgOiBwdHJfKHIucmVsZWFz
ZSgpKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICBzY29wZWRfcmVmcHRyKHNjb3Bl
ZF9yZWZwdHI8VT4mJiByKSA6IHB0cl8oci5yZWxlYXNlKCkpIHt9Ci0KLSAgfnNjb3BlZF9yZWZw
dHIoKSB7Ci0gICAgaWYgKHB0cl8pCi0gICAgICBwdHJfLT5SZWxlYXNlKCk7Ci0gIH0KLQotICBU
KiBnZXQoKSBjb25zdCB7IHJldHVybiBwdHJfOyB9Ci0gIG9wZXJhdG9yIFQqKCkgY29uc3QgeyBy
ZXR1cm4gcHRyXzsgfQotICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gcHRyXzsgfQot
Ci0gIC8vIFJldHVybnMgdGhlIChwb3NzaWJseSBudWxsKSByYXcgcG9pbnRlciwgYW5kIG1ha2Vz
IHRoZSBzY29wZWRfcmVmcHRyIGhvbGQgYQotICAvLyBudWxsIHBvaW50ZXIsIGFsbCB3aXRob3V0
IHRvdWNoaW5nIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHVuZGVybHlpbmcKLSAgLy8gcG9p
bnRlZC10byBvYmplY3QuIFRoZSBvYmplY3QgaXMgc3RpbGwgcmVmZXJlbmNlIGNvdW50ZWQsIGFu
ZCB0aGUgY2FsbGVyIG9mCi0gIC8vIHJlbGVhc2UoKSBpcyBub3cgdGhlIHByb3VkIG93bmVyIG9m
IG9uZSByZWZlcmVuY2UsIHNvIGl0IGlzIHJlc3BvbnNpYmxlIGZvcgotICAvLyBjYWxsaW5nIFJl
bGVhc2UoKSBvbmNlIG9uIHRoZSBvYmplY3Qgd2hlbiBubyBsb25nZXIgdXNpbmcgaXQuCi0gIFQq
IHJlbGVhc2UoKSB7Ci0gICAgVCogcmV0VmFsID0gcHRyXzsKLSAgICBwdHJfID0gbnVsbHB0cjsK
LSAgICByZXR1cm4gcmV0VmFsOwotICB9Ci0KLSAgc2NvcGVkX3JlZnB0cjxUPiYgb3BlcmF0b3I9
KFQqIHApIHsKLSAgICAvLyBBZGRSZWYgZmlyc3Qgc28gdGhhdCBzZWxmIGFzc2lnbm1lbnQgc2hv
dWxkIHdvcmsKLSAgICBpZiAocCkKLSAgICAgIHAtPkFkZFJlZigpOwotICAgIGlmIChwdHJfKQot
ICAgICAgcHRyXy0+UmVsZWFzZSgpOwotICAgIHB0cl8gPSBwOwotICAgIHJldHVybiAqdGhpczsK
LSAgfQotCi0gIHNjb3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShjb25zdCBzY29wZWRfcmVmcHRy
PFQ+JiByKSB7Ci0gICAgcmV0dXJuICp0aGlzID0gci5wdHJfOwotICB9Ci0KLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIFU+Ci0gIHNjb3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShjb25zdCBzY29wZWRf
cmVmcHRyPFU+JiByKSB7Ci0gICAgcmV0dXJuICp0aGlzID0gci5nZXQoKTsKLSAgfQotCi0gIHNj
b3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShzY29wZWRfcmVmcHRyPFQ+JiYgcikgewotICAgIHNj
b3BlZF9yZWZwdHI8VD4oc3RkOjptb3ZlKHIpKS5zd2FwKCp0aGlzKTsKLSAgICByZXR1cm4gKnRo
aXM7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgc2NvcGVkX3JlZnB0cjxUPiYg
b3BlcmF0b3I9KHNjb3BlZF9yZWZwdHI8VT4mJiByKSB7Ci0gICAgc2NvcGVkX3JlZnB0cjxUPihz
dGQ6Om1vdmUocikpLnN3YXAoKnRoaXMpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIHZv
aWQgc3dhcChUKiogcHApIHsKLSAgICBUKiBwID0gcHRyXzsKLSAgICBwdHJfID0gKnBwOwotICAg
ICpwcCA9IHA7Ci0gIH0KLQotICB2b2lkIHN3YXAoc2NvcGVkX3JlZnB0cjxUPiYgcikgeyBzd2Fw
KCZyLnB0cl8pOyB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIFQqIHB0cl87Ci19OworLy8gVE9ETyhidWdz
LndlYnJ0Yy5vcmcvOTg4Nyk6IFRoaXMgaXMgYSBmb3J3YXJkIGhlYWRlciBmb3IgYmFja3dhcmRz
CisvLyBjb21wYXRpYmlsaXR5LiBSZW1vdmUgd2hlbiBkb3duc3RyZWFtIGNsaWVudHMgYXJlIHVw
ZGF0ZWQuCiAKLX0gIC8vIG5hbWVzcGFjZSBydGMKKyNpbmNsdWRlICJhcGkvc2NvcGVkX3JlZnB0
ci5oIgogCiAjZW5kaWYgIC8vIFJUQ19CQVNFX1NDT1BFRF9SRUZfUFRSX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zZXF1
ZW5jZWRfdGFza19jaGVja2VyX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyX2ltcGwuY2MKaW5k
ZXggMTYwNjljMjVmN2FiMDY0NjcyZDk2ZjNiYjA0MjZiMTQ3OTBkMmI0Ny4uNzE3Y2I5NTA0MDgz
NWE1N2IxNDgwNWJhYjIwMjVjZmFiOTgzODU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tl
cl9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2NoZWNrZXJfaW1wbC5jYwpAQCAtMTQsNiArMTQsNyBA
QAogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2NoZWNr
ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVlLmgiCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NlcXVlbmNl
ZF90YXNrX2NoZWNrZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyX3VuaXR0ZXN0LmNj
CmluZGV4IDk2ZTY1NWJhYWQ0ZjM3YzM3MDZiMjNiNzJkMTQxODNlYmZkZjM4MjYuLjdiNzI0N2M2
NGMwMTVmYWQzZjE2NzdmOGFjNzEyYWZlYzliODkwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2No
ZWNrZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl91bml0dGVzdC5jYwpAQCAt
MTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvdGFza19xdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCkBA
IC00Myw3ICs0NCw2IEBAIGNsYXNzIENhbGxDYWxsZWRTZXF1ZW50aWFsbHlPblRocmVhZCB7CiAg
IENhbGxDYWxsZWRTZXF1ZW50aWFsbHlPblRocmVhZChib29sIGV4cGVjdF90cnVlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2VkVGFza0NoZWNrZXIqIHNlcXVlbmNl
ZF90YXNrX2NoZWNrZXIpCiAgICAgICA6IGV4cGVjdF90cnVlXyhleHBlY3RfdHJ1ZSksCi0gICAg
ICAgIHRocmVhZF9oYXNfcnVuX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAogICAgICAgICB0aHJlYWRf
KCZSdW4sIHRoaXMsICJjYWxsX2RvX3N0dWZmX29uX3RocmVhZCIpLAogICAgICAgICBzZXF1ZW5j
ZWRfdGFza19jaGVja2VyXyhzZXF1ZW5jZWRfdGFza19jaGVja2VyKSB7CiAgICAgdGhyZWFkXy5T
dGFydCgpOwpAQCAtNzcsNyArNzcsNiBAQCBjbGFzcyBEZWxldGVTZXF1ZW5jZWRDaGVja2VyT25U
aHJlYWQgewogICBleHBsaWNpdCBEZWxldGVTZXF1ZW5jZWRDaGVja2VyT25UaHJlYWQoCiAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2VxdWVuY2VkVGFza0NoZWNrZXI+IHNlcXVlbmNlZF90YXNrX2No
ZWNrZXIpCiAgICAgICA6IHRocmVhZF8oJlJ1biwgdGhpcywgImRlbGV0ZV9zZXF1ZW5jZWRfdGFz
a19jaGVja2VyX29uX3RocmVhZCIpLAotICAgICAgICB0aHJlYWRfaGFzX3J1bl9ldmVudF8oZmFs
c2UsIGZhbHNlKSwKICAgICAgICAgc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl8oc3RkOjptb3ZlKHNl
cXVlbmNlZF90YXNrX2NoZWNrZXIpKSB7CiAgICAgdGhyZWFkXy5TdGFydCgpOwogICB9CkBAIC0x
MTgsNyArMTE3LDcgQEAgdm9pZCBSdW5NZXRob2RPbkRpZmZlcmVudFRhc2tRdWV1ZShib29sIGV4
cGVjdF90cnVlKSB7CiAKICAgc3RhdGljIGNvbnN0IGNoYXIga1F1ZXVlTmFtZVtdID0gIk1ldGhv
ZE5vdEFsbG93ZWRPbkRpZmZlcmVudFRxIjsKICAgVGFza1F1ZXVlIHF1ZXVlKGtRdWV1ZU5hbWUp
OwotICBFdmVudCBkb25lX2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGRvbmVfZXZlbnQ7
CiAgIHF1ZXVlLlBvc3RUYXNrKFsmc2VxdWVuY2VkX3Rhc2tfY2hlY2tlciwgJmRvbmVfZXZlbnQs
IGV4cGVjdF90cnVlXSB7CiAgICAgaWYgKGV4cGVjdF90cnVlKQogICAgICAgRVhQRUNUX1RSVUUo
c2VxdWVuY2VkX3Rhc2tfY2hlY2tlci0+Q2FsbGVkU2VxdWVudGlhbGx5KCkpOwpAQCAtMTM1LDcg
KzEzNCw3IEBAIHZvaWQgRGV0YWNoVGhlbkNhbGxGcm9tRGlmZmVyZW50VGFza1F1ZXVlKGJvb2wg
ZXhwZWN0X3RydWUpIHsKIAogICBzZXF1ZW5jZWRfdGFza19jaGVja2VyLT5EZXRhY2goKTsKIAot
ICBFdmVudCBkb25lX2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGRvbmVfZXZlbnQ7CiAg
IFRhc2tRdWV1ZSBxdWV1ZTEoIkRldGFjaFRoZW5DYWxsRnJvbURpZmZlcmVudFRhc2tRdWV1ZUlt
cGwxIik7CiAgIHF1ZXVlMS5Qb3N0VGFzayhbJnNlcXVlbmNlZF90YXNrX2NoZWNrZXIsICZkb25l
X2V2ZW50XSB7CiAgICAgRVhQRUNUX1RSVUUoc2VxdWVuY2VkX3Rhc2tfY2hlY2tlci0+Q2FsbGVk
U2VxdWVudGlhbGx5KCkpOwpAQCAtMTkzLDcgKzE5Miw3IEBAIFRFU1QoU2VxdWVuY2VkVGFza0No
ZWNrZXJUZXN0LCBEZXRhY2hGcm9tVGhyZWFkQW5kVXNlT25UYXNrUXVldWUpIHsKICAgc2VxdWVu
Y2VkX3Rhc2tfY2hlY2tlci0+RGV0YWNoKCk7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtRdWV1ZU5h
bWVbXSA9ICJEZXRhY2hGcm9tVGhyZWFkQW5kVXNlT25UYXNrUXVldWUiOwogICBUYXNrUXVldWUg
cXVldWUoa1F1ZXVlTmFtZSk7Ci0gIEV2ZW50IGRvbmVfZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAg
RXZlbnQgZG9uZV9ldmVudDsKICAgcXVldWUuUG9zdFRhc2soWyZzZXF1ZW5jZWRfdGFza19jaGVj
a2VyLCAmZG9uZV9ldmVudF0gewogICAgIEVYUEVDVF9UUlVFKHNlcXVlbmNlZF90YXNrX2NoZWNr
ZXItPkNhbGxlZFNlcXVlbnRpYWxseSgpKTsKICAgICBkb25lX2V2ZW50LlNldCgpOwpAQCAtMjAz
LDcgKzIwMiw3IEBAIFRFU1QoU2VxdWVuY2VkVGFza0NoZWNrZXJUZXN0LCBEZXRhY2hGcm9tVGhy
ZWFkQW5kVXNlT25UYXNrUXVldWUpIHsKIAogVEVTVChTZXF1ZW5jZWRUYXNrQ2hlY2tlclRlc3Qs
IERldGFjaEZyb21UYXNrUXVldWVBbmRVc2VPblRocmVhZCkgewogICBUYXNrUXVldWUgcXVldWUo
IkRldGFjaEZyb21UYXNrUXVldWVBbmRVc2VPblRocmVhZCIpOwotICBFdmVudCBkb25lX2V2ZW50
KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGRvbmVfZXZlbnQ7CiAgIHF1ZXVlLlBvc3RUYXNrKFsm
ZG9uZV9ldmVudF0gewogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXF1ZW5jZWRUYXNrQ2hlY2tlcj4g
c2VxdWVuY2VkX3Rhc2tfY2hlY2tlcigKICAgICAgICAgbmV3IFNlcXVlbmNlZFRhc2tDaGVja2Vy
KCkpOwpAQCAtMjcxLDcgKzI3MCw3IEBAIHZvaWQgVGVzdEFubm90YXRpb25zT25Xcm9uZ1F1ZXVl
KCkgewogICBUZXN0QW5ub3RhdGlvbnMgYW5ub3RhdGlvbnM7CiAgIHN0YXRpYyBjb25zdCBjaGFy
IGtRdWV1ZU5hbWVbXSA9ICJUZXN0QW5ub3RhdGlvbnNPbldyb25nUXVldWVEZWJ1ZyI7CiAgIFRh
c2tRdWV1ZSBxdWV1ZShrUXVldWVOYW1lKTsKLSAgRXZlbnQgZG9uZV9ldmVudChmYWxzZSwgZmFs
c2UpOworICBFdmVudCBkb25lX2V2ZW50OwogICBxdWV1ZS5Qb3N0VGFzayhbJmFubm90YXRpb25z
LCAmZG9uZV9ldmVudF0gewogICAgIGFubm90YXRpb25zLk1vZGlmeVRlc3RWYXIoKTsKICAgICBk
b25lX2V2ZW50LlNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2lnbmFsdGhyZWFkLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2lnbmFsdGhyZWFkLmNjCmluZGV4
IGViNzlkYzg0ZmU4ZTU0NjVkYWMxZWU2ZTg5NDRkMGJlNzFiNGVmYjYuLjVkZDkzODc5MzE1YzM5
ZWFkMGVmMDY1ZmYzYzRmOTIxYjk3MWY4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NpZ25hbHRocmVhZC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zaWduYWx0
aHJlYWQuY2MKQEAgLTEwLDggKzEwLDEzIEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9zaWduYWx0
aHJlYWQuaCIKIAorI2luY2x1ZGUgPG1lbW9yeT4KKwogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L2xvY2F0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVsbHNvY2tldHNlcnZlci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3NvY2tldHNlcnZlci5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc2lnbmFsdGhyZWFkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9zaWduYWx0aHJlYWQuaAppbmRleCAwMjFjZjRkNzhkZjhlNGEzNWRiOGQ2
YjM3Mjc4N2JmYzEwNzgzMGQzLi45MjA4ZTJjMjQ2Nzc4NzUzN2UwODNiNWFkOWY3M2I1ZjgyNDVk
MzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zaWduYWx0aHJlYWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zaWduYWx0aHJlYWQuaApAQCAtMTUsOSArMTUsMTIg
QEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Nv
bnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvbWVzc2FnZWhhbmRsZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKICNpbmNs
dWRlICJydGNfYmFzZS90aHJlYWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3Rh
dGlvbnMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldC5jYwppbmRl
eCBhOTc0OWE0NzNlZTExODFmZTVjOTgwNGU4MzE0MTk3YmM0Y2IxYjFmLi5mMTliMzQ0MTJmNGE1
OGY5NmRjMWEwMTU1ZWUyMTAyMjYwZmI1YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXQuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0LmNjCkBA
IC0xMiwxNiArMTIsNCBAQAogCiBuYW1lc3BhY2UgcnRjIHsKIAotUGFja2V0SW5mbzo6UGFja2V0
SW5mbygpID0gZGVmYXVsdDsKLVBhY2tldEluZm86OlBhY2tldEluZm8oY29uc3QgUGFja2V0SW5m
byYgaW5mbykgPSBkZWZhdWx0OwotUGFja2V0SW5mbzo6flBhY2tldEluZm8oKSA9IGRlZmF1bHQ7
Ci0KLVNlbnRQYWNrZXQ6OlNlbnRQYWNrZXQoKSA9IGRlZmF1bHQ7Ci1TZW50UGFja2V0OjpTZW50
UGFja2V0KGludDY0X3QgcGFja2V0X2lkLCBpbnQ2NF90IHNlbmRfdGltZV9tcykKLSAgICA6IHBh
Y2tldF9pZChwYWNrZXRfaWQpLCBzZW5kX3RpbWVfbXMoc2VuZF90aW1lX21zKSB7fQotU2VudFBh
Y2tldDo6U2VudFBhY2tldChpbnQ2NF90IHBhY2tldF9pZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBzZW5kX3RpbWVfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6UGFja2V0SW5mbyYgaW5mbykKLSAgICA6IHBhY2tldF9pZChwYWNrZXRfaWQpLCBzZW5kX3Rp
bWVfbXMoc2VuZF90aW1lX21zKSwgaW5mbyhpbmZvKSB7fQotCiB9ICAvLyBuYW1lc3BhY2UgcnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zb2NrZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NvY2tldC5oCmluZGV4IGI4MjkwYmIxMzliMmU2OWE1N2IyMDc0ZWE1NzYz
NTg5ZDQwNjY5Y2YuLmU3ZTgyMTA4Y2QyOWQyYWJkYjMxOWJkMjM2ZDliNjQ3NjExYWM1MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3NvY2tldC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NvY2tldC5oCkBAIC0yNSw4ICsyNSw4IEBACiAjaW5jbHVkZSAicnRjX2Jh
c2Uvd2luMzIuaCIKICNlbmRpZgogCi0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9uZXR3b3JrL3NlbnRfcGFja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRkcmVz
cy5oIgogCiAvLyBSYXRoZXIgdGhhbiBjb252ZXJ0aW5nIGVycm9ycyBpbnRvIGEgcHJpdmF0ZSBu
YW1lc3BhY2UsCkBAIC0xMjMsNTAgKzEyMyw2IEBAIGlubGluZSBib29sIElzQmxvY2tpbmdFcnJv
cihpbnQgZSkgewogICByZXR1cm4gKGUgPT0gRVdPVUxEQkxPQ0spIHx8IChlID09IEVBR0FJTikg
fHwgKGUgPT0gRUlOUFJPR1JFU1MpOwogfQogCi1lbnVtIGNsYXNzIFBhY2tldFR5cGUgewotICBr
VW5rbm93biwKLSAga0RhdGEsCi0gIGtJY2VDb25uZWN0aXZpdHlDaGVjaywKLSAga0ljZUNvbm5l
Y3Rpdml0eUNoZWNrUmVzcG9uc2UsCi0gIGtTdHVuTWVzc2FnZSwKLSAga1R1cm5NZXNzYWdlLAot
fTsKLQotZW51bSBjbGFzcyBQYWNrZXRJbmZvUHJvdG9jb2xUeXBlIHsKLSAga1Vua25vd24sCi0g
IGtVZHAsCi0gIGtUY3AsCi0gIGtTc2x0Y3AsCi0gIGtUbHMsCi19OwotCi1zdHJ1Y3QgUGFja2V0
SW5mbyB7Ci0gIFBhY2tldEluZm8oKTsKLSAgUGFja2V0SW5mbyhjb25zdCBQYWNrZXRJbmZvJiBp
bmZvKTsKLSAgflBhY2tldEluZm8oKTsKLQotICBQYWNrZXRUeXBlIHBhY2tldF90eXBlID0gUGFj
a2V0VHlwZTo6a1Vua25vd247Ci0gIFBhY2tldEluZm9Qcm90b2NvbFR5cGUgcHJvdG9jb2wgPSBQ
YWNrZXRJbmZvUHJvdG9jb2xUeXBlOjprVW5rbm93bjsKLSAgLy8gQSB1bmlxdWUgaWQgYXNzaWdu
ZWQgYnkgdGhlIG5ldHdvcmsgbWFuYWdlciwgYW5kIGFic2w6Om51bGxvcHQgaWYgbm90IHNldC4K
LSAgYWJzbDo6b3B0aW9uYWw8dWludDE2X3Q+IG5ldHdvcmtfaWQ7Ci0gIHNpemVfdCBwYWNrZXRf
c2l6ZV9ieXRlcyA9IDA7Ci0gIHNpemVfdCB0dXJuX292ZXJoZWFkX2J5dGVzID0gMDsKLSAgU29j
a2V0QWRkcmVzcyBsb2NhbF9zb2NrZXRfYWRkcmVzczsKLSAgU29ja2V0QWRkcmVzcyByZW1vdGVf
c29ja2V0X2FkZHJlc3M7Ci19OwotCi1zdHJ1Y3QgU2VudFBhY2tldCB7Ci0gIFNlbnRQYWNrZXQo
KTsKLSAgU2VudFBhY2tldChpbnQ2NF90IHBhY2tldF9pZCwgaW50NjRfdCBzZW5kX3RpbWVfbXMp
OwotICBTZW50UGFja2V0KGludDY0X3QgcGFja2V0X2lkLAotICAgICAgICAgICAgIGludDY0X3Qg
c2VuZF90aW1lX21zLAotICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0SW5mbyYgaW5mbyk7
Ci0KLSAgaW50NjRfdCBwYWNrZXRfaWQgPSAtMTsKLSAgaW50NjRfdCBzZW5kX3RpbWVfbXMgPSAt
MTsKLSAgcnRjOjpQYWNrZXRJbmZvIGluZm87Ci19OwotCiAvLyBHZW5lcmFsIGludGVyZmFjZSBm
b3IgdGhlIHNvY2tldCBpbXBsZW1lbnRhdGlvbnMgb2YgdmFyaW91cyBuZXR3b3Jrcy4gIFRoZQog
Ly8gbWV0aG9kcyBtYXRjaCB0aG9zZSBvZiBub3JtYWwgVU5JWCBzb2NrZXRzIHZlcnkgY2xvc2Vs
eS4KIGNsYXNzIFNvY2tldCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGFwdGVycy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmNj
CmluZGV4IGFjZDliNjMzODU4Yzg4MTRmNmQ0YjhmODZjYTFkOWQzZDUxODRlODEuLjk0NTE5Mjg4
OTE0MmE4ZTA0ZWQzZjlkM2Q3OGNhYjJkZWY4NTJiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3NvY2tldGFkYXB0ZXJzLmNjCkBAIC0xMywyNCArMTMsMjkgQEAKICNlbmRpZgogCiAjaW5jbHVk
ZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHRpbWUuaD4KIAogI2lmIGRlZmluZWQoV0VCUlRD
X1dJTikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNpbmNs
dWRlIDx3czJ0Y3BpcC5oPgorCiAjZGVmaW5lIFNFQ1VSSVRZX1dJTjMyCiAjaW5jbHVkZSA8c2Vj
dXJpdHkuaD4KICNlbmRpZgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCisjaW5jbHVkZSAiYWJz
bC9zdHJpbmdzL21hdGNoLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvYnl0ZWJ1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2h0dHBjb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRhcHRlcnMuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmlu
Z19idWlsZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS96ZXJvX21lbW9yeS5oIgpAQCAtNDU3LDcgKzQ2Miw3IEBAIHZvaWQgQXN5bmNI
dHRwc1Byb3h5U29ja2V0OjpQcm9jZXNzTGluZShjaGFyKiBkYXRhLCBzaXplX3QgbGVuKSB7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgIH0gZWxzZSBpZiAoKHN0YXRlXyA9PSBQU19BVVRIRU5U
SUNBVEUpICYmCi0gICAgICAgICAgICAgKF9zdHJuaWNtcChkYXRhLCAiUHJveHktQXV0aGVudGlj
YXRlOiIsIDE5KSA9PSAwKSkgeworICAgICAgICAgICAgIGFic2w6OlN0YXJ0c1dpdGhJZ25vcmVD
YXNlKGRhdGEsICJQcm94eS1BdXRoZW50aWNhdGU6IikpIHsKICAgICBzdGQ6OnN0cmluZyByZXNw
b25zZSwgYXV0aF9tZXRob2Q7CiAgICAgc3dpdGNoIChIdHRwQXV0aGVudGljYXRlKGRhdGEgKyAx
OSwgbGVuIC0gMTksIHByb3h5XywgIkNPTk5FQ1QiLCAiLyIsIHVzZXJfLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXNzXywgY29udGV4dF8sIHJlc3BvbnNlLCBhdXRoX21ldGhvZCkp
IHsKQEAgLTQ4NSwxMiArNDkwLDEyIEBAIHZvaWQgQXN5bmNIdHRwc1Byb3h5U29ja2V0OjpQcm9j
ZXNzTGluZShjaGFyKiBkYXRhLCBzaXplX3QgbGVuKSB7CiAgICAgICAgIHVua25vd25fbWVjaGFu
aXNtc18uY2xlYXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICB9IGVsc2UgaWYgKF9zdHJu
aWNtcChkYXRhLCAiQ29udGVudC1MZW5ndGg6IiwgMTUpID09IDApIHsKKyAgfSBlbHNlIGlmIChh
YnNsOjpTdGFydHNXaXRoSWdub3JlQ2FzZShkYXRhLCAiQ29udGVudC1MZW5ndGg6IikpIHsKICAg
ICBjb250ZW50X2xlbmd0aF8gPSBzdHJ0b3VsKGRhdGEgKyAxNSwgMCwgMCk7Ci0gIH0gZWxzZSBp
ZiAoX3N0cm5pY21wKGRhdGEsICJQcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlIiwgMjgpID09
IDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpTdGFydHNXaXRoSWdub3JlQ2FzZShkYXRhLCAiUHJv
eHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZSIpKSB7CiAgICAgZXhwZWN0X2Nsb3NlXyA9IGZhbHNl
OwogICAgIC8qCi0gIH0gZWxzZSBpZiAoX3N0cm5pY21wKGRhdGEsICJDb25uZWN0aW9uOiBjbG9z
ZSIsIDE3KSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6U3RhcnRzV2l0aElnbm9yZUNhc2Uo
ZGF0YSwgIkNvbm5lY3Rpb246IGNsb3NlIikgewogICAgIGV4cGVjdF9jbG9zZV8gPSB0cnVlOwog
ICAgICovCiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGFwdGVycy5oCmluZGV4IGFk
ODhmZTZiNmZiOGNmMjAwM2JlZWY4MTUzOWMzZTIyMjM4MmQxMGYuLjA2MmY3NWMzZmViMWZmZmMz
MDA5NDQxNDQ3MTllZWU1MjM4YTc5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRh
cHRlcnMuaApAQCAtMTEsMTMgKzExLDExIEBACiAjaWZuZGVmIFJUQ19CQVNFX1NPQ0tFVEFEQVBU
RVJTX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1NPQ0tFVEFEQVBURVJTX0hfCiAKLSNpbmNsdWRlIDxt
YXA+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNzb2NrZXQu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY3J5cHRzdHJpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5h
bWVzcGFjZSBydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgKaW5kZXgg
YmZmOGU3NjQ5NWViNzRiY2E1ODk4MjRiOGVkOTMwMjFjY2YyMGIyMS4uYjFhNTJiOTM3MTZhOGUy
NGNhMjhiN2U1ZGVkMTVlZDk5NWVmZDkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFk
ZHJlc3MuaApAQCAtMTUsNyArMTUsNiBAQAogI2lmZGVmIFVOSVRfVEVTVAogI2luY2x1ZGUgPG9z
dHJlYW0+ICAvLyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKICNlbmRpZiAg
ICAgICAgICAgICAgLy8gVU5JVF9URVNUCi0jaW5jbHVkZSA8dmVjdG9yPgogI2luY2x1ZGUgInJ0
Y19iYXNlL2lwYWRkcmVzcy5oIgogCiAjdW5kZWYgU2V0UG9ydApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRkcmVz
c3BhaXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3NvY2tldGFkZHJlc3NwYWlyLmgKaW5kZXggNWZmMTQ4YTc1ZDg3NjA0ZTFkYjFmYzYxZDg0
OTBjMWQyZGY3MjJlOS4uNjY5MTM4NmQzYWJmZjhiOWU4ZTQzMGMzYjczNTVkMjk0NzlmOWVkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvc29ja2V0YWRkcmVzc3BhaXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGRyZXNzcGFpci5oCkBAIC0xMSw2ICsx
MSw4IEBACiAjaWZuZGVmIFJUQ19CQVNFX1NPQ0tFVEFERFJFU1NQQUlSX0hfCiAjZGVmaW5lIFJU
Q19CQVNFX1NPQ0tFVEFERFJFU1NQQUlSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zb2NrZXRzdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9zb2NrZXRzdHJlYW0uY2MKaW5kZXggMmVhMWNlYzBhYzczNmQzNTUwMTEw
M2VkYTJlZDA2ZTgxODE1NzRlYy4uODk3ODQwNGNmNDVmMDJkOWQwOTAxNmE2ZjdjMTU0OTlkMmFi
ZjQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc29ja2V0c3RyZWFtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldHN0cmVhbS5jYwpAQCAtMTEsNiArMTEs
NyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldHN0cmVhbS5oIgogCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0LmgiCiAKIG5hbWVzcGFj
ZSBydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zc2xhZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xhZGFwdGVyLmgKaW5kZXggNDg0M2QyNjRmY2Nj
ZDM2NmQ0ODBmNjQzODYxNDEwM2I5ZWE5Nzg1Yi4uN2ViZWRjYWRmMDI2ZmVmOWFiOWIxYzEzM2Fk
MzU5OGEzNzU0Y2UwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsYWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGFkYXB0ZXIuaApAQCAtMTYsNiAr
MTYsNyBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNzb2NrZXQuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgogCiBuYW1lc3BhY2Ug
cnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NzbGFkYXB0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xhZGFwdGVyX3VuaXR0ZXN0LmNjCmlu
ZGV4IGVjNTMyYjFjNDQyNjE4ZmYyZDc0ZjU1OGQ1NmM2MDJmNmZkZTI4MDkuLmM4NGM2NjhjN2Ux
YTgxMjgxYWY4OTRmMjZlMDVmYjQ1YWZiODVmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGFkYXB0ZXJfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3NsYWRhcHRlcl91bml0dGVzdC5jYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImFi
c2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvaXBhZGRyZXNzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2Vz
dC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldHN0cmVhbS5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3NzbGFkYXB0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xpZGVudGl0eS5oIgpAQCAt
MjY2LDcgKzI2Nyw3IEBAIGNsYXNzIFNTTEFkYXB0ZXJUZXN0RHVtbXlTZXJ2ZXIgOiBwdWJsaWMg
c2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIC8vIChlLmcuIGEgV2ViUlRDLWJhc2VkIGFwcGxp
Y2F0aW9uIGFuZCBhbiBSRkMgNTc2NiBUVVJOIHNlcnZlciksIHdoZXJlCiAgICAgLy8gY2xpZW50
cyBhcmUgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgYSBjZXJ0aWZpY2F0ZSBkdXJpbmcgaGFuZHNo
YWtlLgogICAgIC8vIEFjY29yZGluZ2x5LCB3ZSBtdXN0IGRpc2FibGUgY2xpZW50IGF1dGhlbnRp
Y2F0aW9uIGhlcmUuCi0gICAgc3NsX3N0cmVhbV9hZGFwdGVyXy0+c2V0X2NsaWVudF9hdXRoX2Vu
YWJsZWQoZmFsc2UpOworICAgIHNzbF9zdHJlYW1fYWRhcHRlcl8tPlNldENsaWVudEF1dGhFbmFi
bGVkRm9yVGVzdGluZyhmYWxzZSk7CiAKICAgICBzc2xfc3RyZWFtX2FkYXB0ZXJfLT5TZXRJZGVu
dGl0eShzc2xfaWRlbnRpdHlfLT5HZXRSZWZlcmVuY2UoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGNlcnRpZmlj
YXRlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3NsY2VydGlmaWNhdGUuY2MKaW5kZXggOWEzOGZjMDM4NGI3MDQ5NDJhMGYyOGU4N2ExMzcw
Mjk3YmMyOWNkNS4uOTM0ODQ4ZmI3MzA0NTdiMzk3OGY5MWExNzJjZGVkNjc3NTFlZWIyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3NsY2VydGlmaWNhdGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuY2MKQEAgLTEwLDEzICsxMCwxMiBA
QAogCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaCIKIAotI2luY2x1ZGUgPGN0
aW1lPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8
dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xm
aW5nZXJwcmludC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2NC9iYXNl
NjQuaCIKQEAgLTMxLDcgKzMwLDcgQEAgU1NMQ2VydGlmaWNhdGVTdGF0czo6U1NMQ2VydGlmaWNh
dGVTdGF0cygKICAgICBzdGQ6OnN0cmluZyYmIGZpbmdlcnByaW50LAogICAgIHN0ZDo6c3RyaW5n
JiYgZmluZ2VycHJpbnRfYWxnb3JpdGhtLAogICAgIHN0ZDo6c3RyaW5nJiYgYmFzZTY0X2NlcnRp
ZmljYXRlLAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZVN0YXRzPiYmIGlzc3Vl
cikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGVTdGF0cz4gaXNzdWVyKQogICAg
IDogZmluZ2VycHJpbnQoc3RkOjptb3ZlKGZpbmdlcnByaW50KSksCiAgICAgICBmaW5nZXJwcmlu
dF9hbGdvcml0aG0oc3RkOjptb3ZlKGZpbmdlcnByaW50X2FsZ29yaXRobSkpLAogICAgICAgYmFz
ZTY0X2NlcnRpZmljYXRlKHN0ZDo6bW92ZShiYXNlNjRfY2VydGlmaWNhdGUpKSwKQEAgLTU1LDgg
KzU0LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlU3RhdHM+IFNTTENlcnRpZmlj
YXRlOjpHZXRTdGF0cygpIGNvbnN0IHsKICAgLy8gfFNTTENlcnRpZmljYXRlOjpHZXRTaWduYXR1
cmVEaWdlc3RBbGdvcml0aG18IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCiAgIC8vIGltcGxlbWVu
dGF0aW9uIG9mIHxTU0xDZXJ0aWZpY2F0ZTo6Q29tcHV0ZURpZ2VzdHwuIFRoaXMgY3VycmVudGx5
IGhhcHBlbnMKICAgLy8gd2l0aCBNRDUtIGFuZCBTSEEtMjI0LXNpZ25lZCBjZXJ0aWZpY2F0ZXMg
d2hlbiBsaW5rZWQgdG8gbGliTlNTLgotICBzdGQ6OnVuaXF1ZV9wdHI8U1NMRmluZ2VycHJpbnQ+
IHNzbF9maW5nZXJwcmludCgKLSAgICAgIFNTTEZpbmdlcnByaW50OjpDcmVhdGUoZGlnZXN0X2Fs
Z29yaXRobSwgdGhpcykpOworICBzdGQ6OnVuaXF1ZV9wdHI8U1NMRmluZ2VycHJpbnQ+IHNzbF9m
aW5nZXJwcmludCA9CisgICAgICBTU0xGaW5nZXJwcmludDo6Q3JlYXRlKGRpZ2VzdF9hbGdvcml0
aG0sICp0aGlzKTsKICAgaWYgKCFzc2xfZmluZ2VycHJpbnQpCiAgICAgcmV0dXJuIG51bGxwdHI7
CiAgIHN0ZDo6c3RyaW5nIGZpbmdlcnByaW50ID0gc3NsX2ZpbmdlcnByaW50LT5HZXRSZmM0NTcy
RmluZ2VycHJpbnQoKTsKQEAgLTcxLDQ5ICs3MCwzMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2Vy
dGlmaWNhdGVTdGF0cz4gU1NMQ2VydGlmaWNhdGU6OkdldFN0YXRzKCkgY29uc3QgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGRlcl9i
YXNlNjQpLCBudWxscHRyKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiBT
U0xDZXJ0aWZpY2F0ZTo6R2V0VW5pcXVlUmVmZXJlbmNlKCkgY29uc3QgewotICByZXR1cm4gYWJz
bDo6V3JhcFVuaXF1ZShHZXRSZWZlcmVuY2UoKSk7Ci19Ci0KIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIFNT
TENlcnRDaGFpbgogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi1TU0xDZXJ0Q2hhaW46OlNTTENlcnRDaGFpbihz
dGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+PiBjZXJ0cykKLSAgICA6
IGNlcnRzXyhzdGQ6Om1vdmUoY2VydHMpKSB7fQotCi1TU0xDZXJ0Q2hhaW46OlNTTENlcnRDaGFp
bihjb25zdCBzdGQ6OnZlY3RvcjxTU0xDZXJ0aWZpY2F0ZSo+JiBjZXJ0cykgewotICBSVENfRENI
RUNLKCFjZXJ0cy5lbXB0eSgpKTsKLSAgY2VydHNfLnJlc2l6ZShjZXJ0cy5zaXplKCkpOwotICBz
dGQ6OnRyYW5zZm9ybSgKLSAgICAgIGNlcnRzLmJlZ2luKCksIGNlcnRzLmVuZCgpLCBjZXJ0c18u
YmVnaW4oKSwKLSAgICAgIFtdKGNvbnN0IFNTTENlcnRpZmljYXRlKiBjZXJ0KSAtPiBzdGQ6OnVu
aXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IHsKLSAgICAgICAgcmV0dXJuIGNlcnQtPkdldFVuaXF1
ZVJlZmVyZW5jZSgpOwotICAgICAgfSk7CitTU0xDZXJ0Q2hhaW46OlNTTENlcnRDaGFpbihzdGQ6
OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IHNpbmdsZV9jZXJ0KSB7CisgIGNlcnRzXy5wdXNo
X2JhY2soc3RkOjptb3ZlKHNpbmdsZV9jZXJ0KSk7CiB9CiAKLVNTTENlcnRDaGFpbjo6U1NMQ2Vy
dENoYWluKGNvbnN0IFNTTENlcnRpZmljYXRlKiBjZXJ0KSB7Ci0gIGNlcnRzXy5wdXNoX2JhY2so
Y2VydC0+R2V0VW5pcXVlUmVmZXJlbmNlKCkpOwotfQorU1NMQ2VydENoYWluOjpTU0xDZXJ0Q2hh
aW4oc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPj4gY2VydHMpCisg
ICAgOiBjZXJ0c18oc3RkOjptb3ZlKGNlcnRzKSkge30KIAogU1NMQ2VydENoYWluOjpTU0xDZXJ0
Q2hhaW4oU1NMQ2VydENoYWluJiYgcmhzKSA9IGRlZmF1bHQ7CiAKIFNTTENlcnRDaGFpbiYgU1NM
Q2VydENoYWluOjpvcGVyYXRvcj0oU1NMQ2VydENoYWluJiYpID0gZGVmYXVsdDsKIAotU1NMQ2Vy
dENoYWluOjp+U1NMQ2VydENoYWluKCkge30KK1NTTENlcnRDaGFpbjo6flNTTENlcnRDaGFpbigp
ID0gZGVmYXVsdDsKIAotU1NMQ2VydENoYWluKiBTU0xDZXJ0Q2hhaW46OkNvcHkoKSBjb25zdCB7
CitzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydENoYWluPiBTU0xDZXJ0Q2hhaW46OkNsb25lKCkgY29u
c3QgewogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+PiBuZXdf
Y2VydHMoY2VydHNfLnNpemUoKSk7Ci0gIHN0ZDo6dHJhbnNmb3JtKGNlcnRzXy5iZWdpbigpLCBj
ZXJ0c18uZW5kKCksIG5ld19jZXJ0cy5iZWdpbigpLAotICAgICAgICAgICAgICAgICBbXShjb25z
dCBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+JiBjZXJ0KQotICAgICAgICAgICAgICAg
ICAgICAgLT4gc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiB7Ci0gICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNlcnQtPkdldFVuaXF1ZVJlZmVyZW5jZSgpOwotICAgICAgICAgICAgICAg
ICB9KTsKLSAgcmV0dXJuIG5ldyBTU0xDZXJ0Q2hhaW4oc3RkOjptb3ZlKG5ld19jZXJ0cykpOwot
fQotCi1zdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydENoYWluPiBTU0xDZXJ0Q2hhaW46OlVuaXF1ZUNv
cHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlKENvcHkoKSk7CisgIHN0ZDo6
dHJhbnNmb3JtKAorICAgICAgY2VydHNfLmJlZ2luKCksIGNlcnRzXy5lbmQoKSwgbmV3X2NlcnRz
LmJlZ2luKCksCisgICAgICBbXShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+
JiBjZXJ0KQorICAgICAgICAgIC0+IHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4geyBy
ZXR1cm4gY2VydC0+Q2xvbmUoKTsgfSk7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxTU0xD
ZXJ0Q2hhaW4+KHN0ZDo6bW92ZShuZXdfY2VydHMpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFNT
TENlcnRpZmljYXRlU3RhdHM+IFNTTENlcnRDaGFpbjo6R2V0U3RhdHMoKSBjb25zdCB7CkBAIC0x
MzUsNyArMTE1LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlU3RhdHM+IFNTTENl
cnRDaGFpbjo6R2V0U3RhdHMoKSBjb25zdCB7CiB9CiAKIC8vIHN0YXRpYwotU1NMQ2VydGlmaWNh
dGUqIFNTTENlcnRpZmljYXRlOjpGcm9tUEVNU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBwZW1f
c3RyaW5nKSB7CitzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IFNTTENlcnRpZmljYXRl
OjpGcm9tUEVNU3RyaW5nKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwZW1fc3RyaW5nKSB7CiAg
IHJldHVybiBPcGVuU1NMQ2VydGlmaWNhdGU6OkZyb21QRU1TdHJpbmcocGVtX3N0cmluZyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oCmluZGV4IDI5YzRkYjU4ZWY1
NmM4MDAzNWU4MzJjZDI0MmNhZDcyZTlkYzhkZDQuLmViODFjMjA5ZTRmMGMzMjY1NjY0ZTAxNWQ3
YTczM2M0NDgwNjAwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaApA
QCAtMTUsMTUgKzE1LDE0IEBACiAjaWZuZGVmIFJUQ19CQVNFX1NTTENFUlRJRklDQVRFX0hfCiAj
ZGVmaW5lIFJUQ19CQVNFX1NTTENFUlRJRklDQVRFX0hfCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJy
dGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L3RpbWV1dGlscy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApAQCAtMzEsNyArMzAsNyBAQCBzdHJ1
Y3QgU1NMQ2VydGlmaWNhdGVTdGF0cyB7CiAgIFNTTENlcnRpZmljYXRlU3RhdHMoc3RkOjpzdHJp
bmcmJiBmaW5nZXJwcmludCwKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyYmIGZp
bmdlcnByaW50X2FsZ29yaXRobSwKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyYm
IGJhc2U2NF9jZXJ0aWZpY2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U1NMQ2VydGlmaWNhdGVTdGF0cz4mJiBpc3N1ZXIpOworICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZVN0YXRzPiBpc3N1ZXIpOwogICB+U1NMQ2Vy
dGlmaWNhdGVTdGF0cygpOwogICBzdGQ6OnN0cmluZyBmaW5nZXJwcmludDsKICAgc3RkOjpzdHJp
bmcgZmluZ2VycHJpbnRfYWxnb3JpdGhtOwpAQCAtNTQsMTcgKzUzLDEzIEBAIGNsYXNzIFNTTENl
cnRpZmljYXRlIHsKICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9u
IG9mIHRoZSBjZXJ0aWZpY2F0ZSBpcwogICAvLyBzdG9yZWQgaW4gKnBlbV9sZW5ndGggaWYgaXQg
aXMgbm9uLW51bGwsIGFuZCBvbmx5IGlmCiAgIC8vIHBhcnNpbmcgd2FzIHN1Y2Nlc3NmdWwuCi0g
IC8vIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGUgcmV0dXJuZWQgb2JqZWN0
LgotICBzdGF0aWMgU1NMQ2VydGlmaWNhdGUqIEZyb21QRU1TdHJpbmcoY29uc3Qgc3RkOjpzdHJp
bmcmIHBlbV9zdHJpbmcpOwotICB2aXJ0dWFsIH5TU0xDZXJ0aWZpY2F0ZSgpIHt9CisgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IEZyb21QRU1TdHJpbmcoCisgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgcGVtX3N0cmluZyk7CisgIHZpcnR1YWwgflNTTENlcnRpZmljYXRl
KCkgPSBkZWZhdWx0OwogCiAgIC8vIFJldHVybnMgYSBuZXcgU1NMQ2VydGlmaWNhdGUgb2JqZWN0
IGluc3RhbmNlIHdyYXBwaW5nIHRoZSBzYW1lCi0gIC8vIHVuZGVybHlpbmcgY2VydGlmaWNhdGUs
IGluY2x1ZGluZyBpdHMgY2hhaW4gaWYgcHJlc2VudC4gIENhbGxlciBpcwotICAvLyByZXNwb25z
aWJsZSBmb3IgZnJlZWluZyB0aGUgcmV0dXJuZWQgb2JqZWN0LiBVc2UgR2V0VW5pcXVlUmVmZXJl
bmNlCi0gIC8vIGluc3RlYWQuCi0gIHZpcnR1YWwgU1NMQ2VydGlmaWNhdGUqIEdldFJlZmVyZW5j
ZSgpIGNvbnN0ID0gMDsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IEdldFVu
aXF1ZVJlZmVyZW5jZSgpIGNvbnN0OworICAvLyB1bmRlcmx5aW5nIGNlcnRpZmljYXRlLCBpbmNs
dWRpbmcgaXRzIGNoYWluIGlmIHByZXNlbnQuCisgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNT
TENlcnRpZmljYXRlPiBDbG9uZSgpIGNvbnN0ID0gMDsKIAogICAvLyBSZXR1cm5zIGEgUEVNIGVu
Y29kZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZS4KICAgdmlydHVh
bCBzdGQ6OnN0cmluZyBUb1BFTVN0cmluZygpIGNvbnN0ID0gMDsKQEAgLTk1LDEzICs5MCwxMCBA
QCBjbGFzcyBTU0xDZXJ0aWZpY2F0ZSB7CiAvLyBTU0xDZXJ0Q2hhaW4gaXMgYSBzaW1wbGUgd3Jh
cHBlciBmb3IgYSB2ZWN0b3Igb2YgU1NMQ2VydGlmaWNhdGVzLiBJdCBzZXJ2ZXMKIC8vIHByaW1h
cmlseSB0byBlbnN1cmUgcHJvcGVyIG1lbW9yeSBtYW5hZ2VtZW50IChlc3BlY2lhbGx5IGRlbGV0
aW9uKSBvZiB0aGUKIC8vIFNTTENlcnRpZmljYXRlIHBvaW50ZXJzLgotY2xhc3MgU1NMQ2VydENo
YWluIHsKK2NsYXNzIFNTTENlcnRDaGFpbiBmaW5hbCB7CiAgcHVibGljOgorICBleHBsaWNpdCBT
U0xDZXJ0Q2hhaW4oc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiBzaW5nbGVfY2VydCk7
CiAgIGV4cGxpY2l0IFNTTENlcnRDaGFpbihzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U1NM
Q2VydGlmaWNhdGU+PiBjZXJ0cyk7Ci0gIC8vIFRoZXNlIGNvbnN0cnVjdG9ycyBjb3B5IHRoZSBw
cm92aWRlZCBTU0xDZXJ0aWZpY2F0ZShzKSwgc28gdGhlIGNhbGxlcgotICAvLyByZXRhaW5zIG93
bmVyc2hpcC4KLSAgZXhwbGljaXQgU1NMQ2VydENoYWluKGNvbnN0IHN0ZDo6dmVjdG9yPFNTTENl
cnRpZmljYXRlKj4mIGNlcnRzKTsKLSAgZXhwbGljaXQgU1NMQ2VydENoYWluKGNvbnN0IFNTTENl
cnRpZmljYXRlKiBjZXJ0KTsKICAgLy8gQWxsb3cgbW92ZSBzZW1hbnRpY3MgZm9yIHRoZSBvYmpl
Y3QuCiAgIFNTTENlcnRDaGFpbihTU0xDZXJ0Q2hhaW4mJik7CiAgIFNTTENlcnRDaGFpbiYgb3Bl
cmF0b3I9KFNTTENlcnRDaGFpbiYmKTsKQEAgLTExNSwxMCArMTA3LDggQEAgY2xhc3MgU1NMQ2Vy
dENoYWluIHsKICAgY29uc3QgU1NMQ2VydGlmaWNhdGUmIEdldChzaXplX3QgcG9zKSBjb25zdCB7
IHJldHVybiAqKGNlcnRzX1twb3NdKTsgfQogCiAgIC8vIFJldHVybnMgYSBuZXcgU1NMQ2VydENo
YWluIG9iamVjdCBpbnN0YW5jZSB3cmFwcGluZyB0aGUgc2FtZSB1bmRlcmx5aW5nCi0gIC8vIGNl
cnRpZmljYXRlIGNoYWluLiAgQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBy
ZXR1cm5lZCBvYmplY3QuCi0gIFNTTENlcnRDaGFpbiogQ29weSgpIGNvbnN0OwotICAvLyBTYW1l
IGFzIGFib3ZlLCBidXQgcmV0dXJuaW5nIGEgdW5pcXVlX3B0ciBmb3IgY29udmVuaWVuY2UuCi0g
IHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0Q2hhaW4+IFVuaXF1ZUNvcHkoKSBjb25zdDsKKyAgLy8g
Y2VydGlmaWNhdGUgY2hhaW4uCisgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0Q2hhaW4+IENsb25l
KCkgY29uc3Q7CiAKICAgLy8gR2V0cyBpbmZvcm1hdGlvbiAoZmluZ2VycHJpbnQsIGV0Yy4pIGFi
b3V0IHRoaXMgY2VydGlmaWNhdGUgY2hhaW4uIFRoaXMgaXMKICAgLy8gdXNlZCBmb3IgY2VydGlm
aWNhdGUgc3RhdHMsIHNlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsZmluZ2VycHJpbnQuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xmaW5nZXJwcmludC5jYwpp
bmRleCBiNjUxYTNkNjI4NTIwNWI1NWEyZmIwMzY3NzEwNGIxNWE5N2I3NjYyLi5iMjk2ZDMzZGRk
OWM0MzEyM2E0MTU0Yjk0YjVmMGYzYTg2NGE4MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xmaW5nZXJwcmludC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9z
c2xmaW5nZXJwcmludC5jYwpAQCAtMTEsNjcgKzExLDgyIEBACiAjaW5jbHVkZSAicnRjX2Jhc2Uv
c3NsZmluZ2VycHJpbnQuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvaGVscGVycy5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGln
ZXN0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAKIG5hbWVzcGFjZSBydGMg
ewogCiBTU0xGaW5nZXJwcmludCogU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZShjb25zdCBzdGQ6OnN0
cmluZyYgYWxnb3JpdGhtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpTU0xJZGVudGl0eSogaWRlbnRpdHkpIHsKLSAgaWYgKCFpZGVudGl0eSkgewot
ICAgIHJldHVybiBudWxscHRyOwotICB9CisgIHJldHVybiBDcmVhdGVVbmlxdWUoYWxnb3JpdGht
LCAqaWRlbnRpdHkpLnJlbGVhc2UoKTsKK30KIAotICByZXR1cm4gQ3JlYXRlKGFsZ29yaXRobSwg
JihpZGVudGl0eS0+Y2VydGlmaWNhdGUoKSkpOworc3RkOjp1bmlxdWVfcHRyPFNTTEZpbmdlcnBy
aW50PiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlVW5pcXVlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBhbGdvcml0aG0sCisgICAgY29uc3QgcnRjOjpTU0xJZGVudGl0eSYgaWRlbnRpdHkpIHsKKyAg
cmV0dXJuIENyZWF0ZShhbGdvcml0aG0sIGlkZW50aXR5LmNlcnRpZmljYXRlKCkpOwogfQogCi1T
U0xGaW5nZXJwcmludCogU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYg
YWxnb3JpdGhtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpTU0xDZXJ0aWZpY2F0ZSogY2VydCkgeworc3RkOjp1bmlxdWVfcHRyPFNTTEZpbmdlcnBy
aW50PiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdv
cml0aG0sCisgICAgY29uc3QgcnRjOjpTU0xDZXJ0aWZpY2F0ZSYgY2VydCkgewogICB1aW50OF90
IGRpZ2VzdF92YWxbNjRdOwogICBzaXplX3QgZGlnZXN0X2xlbjsKLSAgYm9vbCByZXQgPSBjZXJ0
LT5Db21wdXRlRGlnZXN0KGFsZ29yaXRobSwgZGlnZXN0X3ZhbCwgc2l6ZW9mKGRpZ2VzdF92YWwp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRpZ2VzdF9sZW4pOworICBib29s
IHJldCA9IGNlcnQuQ29tcHV0ZURpZ2VzdChhbGdvcml0aG0sIGRpZ2VzdF92YWwsIHNpemVvZihk
aWdlc3RfdmFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRpZ2VzdF9sZW4p
OwogICBpZiAoIXJldCkgewogICAgIHJldHVybiBudWxscHRyOwogICB9Ci0KLSAgcmV0dXJuIG5l
dyBTU0xGaW5nZXJwcmludChhbGdvcml0aG0sIGRpZ2VzdF92YWwsIGRpZ2VzdF9sZW4pOworICBy
ZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8U1NMRmluZ2VycHJpbnQ+KAorICAgICAgYWxnb3JpdGht
LCBBcnJheVZpZXc8Y29uc3QgdWludDhfdD4oZGlnZXN0X3ZhbCwgZGlnZXN0X2xlbikpOwogfQog
CiBTU0xGaW5nZXJwcmludCogU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21SZmM0NTcyKAogICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0aG0sCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZp
bmdlcnByaW50KSB7CisgIHJldHVybiBDcmVhdGVVbmlxdWVGcm9tUmZjNDU3MihhbGdvcml0aG0s
IGZpbmdlcnByaW50KS5yZWxlYXNlKCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTU0xGaW5nZXJw
cmludD4gU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZVVuaXF1ZUZyb21SZmM0NTcyKAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBhbGdvcml0aG0sCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbmdlcnBy
aW50KSB7CiAgIGlmIChhbGdvcml0aG0uZW1wdHkoKSB8fCAhcnRjOjpJc0ZpcHMxODBEaWdlc3RB
bGdvcml0aG0oYWxnb3JpdGhtKSkKICAgICByZXR1cm4gbnVsbHB0cjsKIAogICBpZiAoZmluZ2Vy
cHJpbnQuZW1wdHkoKSkKICAgICByZXR1cm4gbnVsbHB0cjsKIAotICBzaXplX3QgdmFsdWVfbGVu
OwogICBjaGFyIHZhbHVlW3J0Yzo6TWVzc2FnZURpZ2VzdDo6a01heFNpemVdOwotICB2YWx1ZV9s
ZW4gPSBydGM6OmhleF9kZWNvZGVfd2l0aF9kZWxpbWl0ZXIoCisgIHNpemVfdCB2YWx1ZV9sZW4g
PSBydGM6OmhleF9kZWNvZGVfd2l0aF9kZWxpbWl0ZXIoCiAgICAgICB2YWx1ZSwgc2l6ZW9mKHZh
bHVlKSwgZmluZ2VycHJpbnQuY19zdHIoKSwgZmluZ2VycHJpbnQubGVuZ3RoKCksICc6Jyk7CiAg
IGlmICghdmFsdWVfbGVuKQogICAgIHJldHVybiBudWxscHRyOwogCi0gIHJldHVybiBuZXcgU1NM
RmluZ2VycHJpbnQoYWxnb3JpdGhtLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih2YWx1ZSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfbGVuKTsKKyAgcmV0dXJuIGFic2w6
Om1ha2VfdW5pcXVlPFNTTEZpbmdlcnByaW50PigKKyAgICAgIGFsZ29yaXRobSwKKyAgICAgIEFy
cmF5Vmlldzxjb25zdCB1aW50OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih2YWx1ZSks
IHZhbHVlX2xlbikpOwogfQogCi1TU0xGaW5nZXJwcmludCogU1NMRmluZ2VycHJpbnQ6OkNyZWF0
ZUZyb21DZXJ0aWZpY2F0ZSgKLSAgICBjb25zdCBSVENDZXJ0aWZpY2F0ZSogY2VydCkgeworc3Rk
Ojp1bmlxdWVfcHRyPFNTTEZpbmdlcnByaW50PiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNl
cnRpZmljYXRlKAorICAgIGNvbnN0IFJUQ0NlcnRpZmljYXRlJiBjZXJ0KSB7CiAgIHN0ZDo6c3Ry
aW5nIGRpZ2VzdF9hbGc7Ci0gIGlmICghY2VydC0+c3NsX2NlcnRpZmljYXRlKCkuR2V0U2lnbmF0
dXJlRGlnZXN0QWxnb3JpdGhtKCZkaWdlc3RfYWxnKSkgeworICBpZiAoIWNlcnQuR2V0U1NMQ2Vy
dGlmaWNhdGUoKS5HZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG0oJmRpZ2VzdF9hbGcpKSB7CiAg
ICAgUlRDX0xPRyhMU19FUlJPUikKICAgICAgICAgPDwgIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUg
Y2VydGlmaWNhdGUncyBkaWdlc3QgYWxnb3JpdGhtIjsKICAgICByZXR1cm4gbnVsbHB0cjsKICAg
fQogCi0gIFNTTEZpbmdlcnByaW50KiBmaW5nZXJwcmludCA9IENyZWF0ZShkaWdlc3RfYWxnLCBj
ZXJ0LT5pZGVudGl0eSgpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFNTTEZpbmdlcnByaW50PiBmaW5n
ZXJwcmludCA9CisgICAgICBDcmVhdGVVbmlxdWUoZGlnZXN0X2FsZywgKmNlcnQuaWRlbnRpdHko
KSk7CiAgIGlmICghZmluZ2VycHJpbnQpIHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFp
bGVkIHRvIGNyZWF0ZSBpZGVudGl0eSBmaW5nZXJwcmludCwgYWxnPSIKICAgICAgICAgICAgICAg
ICAgICAgICA8PCBkaWdlc3RfYWxnOwpAQCAtNzksMTIgKzk0LDE0IEBAIFNTTEZpbmdlcnByaW50
KiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKAogICByZXR1cm4gZmluZ2Vy
cHJpbnQ7CiB9CiAKK1NTTEZpbmdlcnByaW50OjpTU0xGaW5nZXJwcmludChjb25zdCBzdGQ6OnN0
cmluZyYgYWxnb3JpdGhtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5Vmll
dzxjb25zdCB1aW50OF90PiBkaWdlc3RfdmlldykKKyAgICA6IGFsZ29yaXRobShhbGdvcml0aG0p
LCBkaWdlc3QoZGlnZXN0X3ZpZXcuZGF0YSgpLCBkaWdlc3Rfdmlldy5zaXplKCkpIHt9CisKIFNT
TEZpbmdlcnByaW50OjpTU0xGaW5nZXJwcmludChjb25zdCBzdGQ6OnN0cmluZyYgYWxnb3JpdGht
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRpZ2VzdF9p
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGlnZXN0X2xlbikKLSAg
ICA6IGFsZ29yaXRobShhbGdvcml0aG0pIHsKLSAgZGlnZXN0LlNldERhdGEoZGlnZXN0X2luLCBk
aWdlc3RfbGVuKTsKLX0KKyAgICA6IFNTTEZpbmdlcnByaW50KGFsZ29yaXRobSwgTWFrZUFycmF5
VmlldyhkaWdlc3RfaW4sIGRpZ2VzdF9sZW4pKSB7fQogCiBTU0xGaW5nZXJwcmludDo6U1NMRmlu
Z2VycHJpbnQoY29uc3QgU1NMRmluZ2VycHJpbnQmIGZyb20pCiAgICAgOiBhbGdvcml0aG0oZnJv
bS5hbGdvcml0aG0pLCBkaWdlc3QoZnJvbS5kaWdlc3QpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xmaW5nZXJwcmlu
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c3NsZmluZ2VycHJpbnQuaAppbmRleCBiMjA0YmM3N2YzMDAyMTFjNzNmNGM0N2MyMTZmMzhiM2I5
MWVlZWQ5Li5lYTEwZWRlNzIwNmJhNmYzNjkxZjk3ZjM5MDdiYjAyZmFlMjk1OTk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9z
c2xmaW5nZXJwcmludC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3NzbGZpbmdlcnByaW50LmgKQEAgLTExLDMwICsxMSw0NyBAQAogI2lm
bmRlZiBSVENfQkFTRV9TU0xGSU5HRVJQUklOVF9IXwogI2RlZmluZSBSVENfQkFTRV9TU0xGSU5H
RVJQUklOVF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAj
aW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3NzbGlkZW50aXR5LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCitjbGFzcyBSVENDZXJ0aWZp
Y2F0ZTsKIGNsYXNzIFNTTENlcnRpZmljYXRlOworY2xhc3MgU1NMSWRlbnRpdHk7CiAKIHN0cnVj
dCBTU0xGaW5nZXJwcmludCB7CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92ZSBvbmNlIGRv
d25zdHJlYW0gcHJvamVjdHMgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhpcy4KICAgc3RhdGljIFNTTEZp
bmdlcnByaW50KiBDcmVhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTU0xJZGVudGl0eSogaWRlbnRpdHkp
OworICAvLyBUT0RPKHN0ZXZlYW50b24pOiBSZW5hbWUgdG8gQ3JlYXRlIG9uY2UgcHJvamVjdHMg
aGF2ZSBtaWdyYXRlZC4KKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTU0xGaW5nZXJwcmludD4g
Q3JlYXRlVW5pcXVlKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKKyAgICAg
IGNvbnN0IHJ0Yzo6U1NMSWRlbnRpdHkmIGlkZW50aXR5KTsKIAotICBzdGF0aWMgU1NMRmluZ2Vy
cHJpbnQqIENyZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYgYWxnb3JpdGhtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNTTENlcnRpZmljYXRlKiBjZXJ0KTsKKyAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTU0xGaW5nZXJwcmludD4gQ3JlYXRlKAorICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKKyAgICAgIGNvbnN0IHJ0Yzo6U1NMQ2VydGlmaWNh
dGUmIGNlcnQpOwogCisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92ZSBvbmNlIGRvd25zdHJl
YW0gcHJvamVjdHMgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhpcy4KICAgc3RhdGljIFNTTEZpbmdlcnBy
aW50KiBDcmVhdGVGcm9tUmZjNDU3Mihjb25zdCBzdGQ6OnN0cmluZyYgYWxnb3JpdGhtLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBmaW5nZXJwcmludCk7CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbmFtZSB0byBDcmVhdGVG
cm9tUmZjNDU3MiBvbmNlIHByb2plY3RzIGhhdmUgbWlncmF0ZWQuCisgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U1NMRmluZ2VycHJpbnQ+IENyZWF0ZVVuaXF1ZUZyb21SZmM0NTcyKAorICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBm
aW5nZXJwcmludCk7CiAKICAgLy8gQ3JlYXRlcyBhIGZpbmdlcnByaW50IGZyb20gYSBjZXJ0aWZp
Y2F0ZSwgdXNpbmcgdGhlIHNhbWUgZGlnZXN0IGFsZ29yaXRobQogICAvLyBhcyB0aGUgY2VydGlm
aWNhdGUncyBzaWduYXR1cmUuCi0gIHN0YXRpYyBTU0xGaW5nZXJwcmludCogQ3JlYXRlRnJvbUNl
cnRpZmljYXRlKGNvbnN0IFJUQ0NlcnRpZmljYXRlKiBjZXJ0KTsKKyAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxTU0xGaW5nZXJwcmludD4gQ3JlYXRlRnJvbUNlcnRpZmljYXRlKAorICAgICAgY29u
c3QgUlRDQ2VydGlmaWNhdGUmIGNlcnQpOwogCisgIFNTTEZpbmdlcnByaW50KGNvbnN0IHN0ZDo6
c3RyaW5nJiBhbGdvcml0aG0sCisgICAgICAgICAgICAgICAgIEFycmF5Vmlldzxjb25zdCB1aW50
OF90PiBkaWdlc3Rfdmlldyk7CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92ZSBvbmNlIGRv
d25zdHJlYW0gcHJvamVjdHMgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhpcy4KICAgU1NMRmluZ2VycHJp
bnQoY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCogZGlnZXN0X2luLAogICAgICAgICAgICAgICAgICBzaXplX3QgZGlnZXN0X2xlbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zc2xpZGVudGl0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5LmNjCmluZGV4IDgyM2ZjMzg4YTNjZWYxYjgx
NTBmNjBjZjY5OGI4NzM2YTE2NDJiMzcuLjQxZWIzNWQ1ZjUyYjY3MzdlNzFiOTMzNjE0MGViNzNj
Yzk3NzFhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5LmNjCkBAIC0xMSwyMCAr
MTEsOTUgQEAKIC8vIEhhbmRsaW5nIG9mIGNlcnRpZmljYXRlcyBhbmQga2V5cGFpcnMgZm9yIFNT
TFN0cmVhbUFkYXB0ZXIncyBwZWVyIG1vZGUuCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRp
dHkuaCIKIAotI2luY2x1ZGUgPGN0aW1lPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUg
PHRpbWUuaD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KIAotI2luY2x1
ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3Ns
aWRlbnRpdHkuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zc2xmaW5nZXJwcmludC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
cy9zdHJpbmdfYnVpbGRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2
NC9iYXNlNjQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNl
IHJ0YyB7CiAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEhlbHBlciBGdW5jdGlvbnMKKy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KKworbmFtZXNwYWNlIHsKKy8vIFJlYWQgfG58IGJ5dGVzIGZyb20gQVNOMSBudW1iZXIgc3Ry
aW5nIGF0ICp8cHB8IGFuZCByZXR1cm4gdGhlIG51bWVyaWMgdmFsdWUuCisvLyBVcGRhdGUgKnxw
cHwgYW5kICp8bnB8IHRvIHJlZmxlY3QgbnVtYmVyIG9mIHJlYWQgYnl0ZXMuCisvLyBUT0RPKGJ1
Z3Mud2VicnRjLm9yZy85ODYwKSAtIFJlbW92ZSB0aGlzIGNvZGUuCitpbmxpbmUgaW50IEFTTjFS
ZWFkSW50KGNvbnN0IHVuc2lnbmVkIGNoYXIqKiBwcCwgc2l6ZV90KiBucCwgc2l6ZV90IG4pIHsK
KyAgY29uc3QgdW5zaWduZWQgY2hhciogcCA9ICpwcDsKKyAgaW50IHggPSAwOworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHggPSAxMCAqIHggKyBwW2ldIC0gJzAnOwor
ICB9CisgICpwcCA9IHAgKyBuOworICAqbnAgPSAqbnAgLSBuOworICByZXR1cm4geDsKK30KKwor
fSAgLy8gbmFtZXNwYWNlCisKKy8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk4NjApIC0gUmVtb3Zl
IHRoaXMgY29kZS4KK2ludDY0X3QgQVNOMVRpbWVUb1NlYyhjb25zdCB1bnNpZ25lZCBjaGFyKiBz
LCBzaXplX3QgbGVuZ3RoLCBib29sIGxvbmdfZm9ybWF0KSB7CisgIHNpemVfdCBieXRlc19sZWZ0
ID0gbGVuZ3RoOworICAvLyBNYWtlIHN1cmUgdGhlIHN0cmluZyBlbmRzIHdpdGggWi4gIERvaW5n
IGl0IGhlcmUgcHJvdGVjdHMgdGhlIHN0cnNwbiBjYWxsCisgIC8vIGZyb20gcnVubmluZyBvZmYg
dGhlIGVuZCBvZiB0aGUgc3RyaW5nIGluIFoncyBhYnNlbnNlLgorICBpZiAobGVuZ3RoID09IDAg
fHwgc1tsZW5ndGggLSAxXSAhPSAnWicpIHsKKyAgICByZXR1cm4gLTE7CisgIH0KKyAgLy8gTWFr
ZSBzdXJlIHdlIG9ubHkgaGF2ZSBBU0NJSSBkaWdpdHMgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRv
IGNsdXR0ZXIgdGhlCisgIC8vIGNvZGUgYmVsb3cgYW5kIEFTTjFSZWFkSW50IHdpdGggZXJyb3Ig
Y2hlY2tpbmcuCisgIHNpemVfdCBuID0gc3Ryc3BuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KHMpLCAiMDEyMzQ1Njc4OSIpOworICBpZiAobiArIDEgIT0gbGVuZ3RoKSB7CisgICAgcmV0
dXJuIC0xOworICB9CisgIC8vIFJlYWQgb3V0IEFTTjEgeWVhciwgaW4gZWl0aGVyIDItY2hhciAi
VVRDVElNRSIgb3IgNC1jaGFyICJHRU5FUkFMSVpFRFRJTUUiCisgIC8vIGZvcm1hdC4gIEJvdGgg
Zm9ybWF0IHVzZSBVVEMgaW4gdGhpcyBjb250ZXh0LgorICBpbnQgeWVhciA9IDA7CisgIGlmIChs
b25nX2Zvcm1hdCkgeworICAgIC8vIEFTTjEgZm9ybWF0OiB5eXl5bW1kZGhoW21tW3NzWy5mZmZd
XV1aIHdoZXJlIHRoZSBaIGlzIGxpdGVyYWwsIGJ1dAorICAgIC8vIFJGQyA1MjgwIHJlcXVpcmVz
IHVzIHRvIG9ubHkgc3VwcG9ydCBleGFjdGx5IHl5eXltbWRkaGhtbXNzWi4KKyAgICBpZiAoYnl0
ZXNfbGVmdCA8IDExKSB7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHllYXIgPSBBU04x
UmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDQpOworICAgIHllYXIgLT0gMTkwMDsKKyAgfSBlbHNl
IHsKKyAgICAvLyBBU04xIGZvcm1hdDogeXltbWRkaGhtbVtzc11aIHdoZXJlIHRoZSBaIGlzIGxp
dGVyYWwsIGJ1dCBSRkMgNTI4MAorICAgIC8vIHJlcXVpcmVzIHVzIHRvIG9ubHkgc3VwcG9ydCBl
eGFjdGx5IHl5bW1kZGhobW1zc1ouCisgICAgaWYgKGJ5dGVzX2xlZnQgPCA5KSB7CisgICAgICBy
ZXR1cm4gLTE7CisgICAgfQorICAgIHllYXIgPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQs
IDIpOworICAgIC8vIFBlciBSRkMgNTI4MCA0LjEuMi41LjEKKyAgICBpZiAoeWVhciA8IDUwKSB7
CisgICAgICB5ZWFyICs9IDEwMDsKKyAgICB9CisgIH0KKworICAvLyBSZWFkIG91dCByZW1haW5p
bmcgQVNOMSB0aW1lIGRhdGEgYW5kIHN0b3JlIGl0IGluIHx0bXwgaW4gZG9jdW1lbnRlZAorICAv
LyBzdGQ6OnRtIGZvcm1hdC4KKyAgdG0gdG07CisgIHRtLnRtX3llYXIgPSB5ZWFyOworICB0bS50
bV9tb24gPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpIC0gMTsKKyAgdG0udG1fbWRh
eSA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgMik7CisgIHRtLnRtX2hvdXIgPSBBU04x
UmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpOworICB0bS50bV9taW4gPSBBU04xUmVhZEludCgm
cywgJmJ5dGVzX2xlZnQsIDIpOworICB0bS50bV9zZWMgPSBBU04xUmVhZEludCgmcywgJmJ5dGVz
X2xlZnQsIDIpOworCisgIC8vIE5vdyBqdXN0IFogc2hvdWxkIHJlbWFpbi4gIEl0cyBleGlzdGVu
Y2Ugd2FzIGFzc2VydGVkIGFib3ZlLgorICBpZiAoYnl0ZXNfbGVmdCAhPSAxKSB7CisgICAgcmV0
dXJuIC0xOworICB9CisgIHJldHVybiBUbVRvU2Vjb25kcyh0bSk7Cit9CisKIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KIC8vIEtleVBhcmFtcwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtOTMsMjIgKzE2OCwyMSBAQCBLZXlU
eXBlIEludEtleVR5cGVGYW1pbHlUb0tleVR5cGUoaW50IGtleV90eXBlX2ZhbWlseSkgewogYm9v
bCBTU0xJZGVudGl0eTo6UGVtVG9EZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV90eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV9zdHJpbmcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZGVyKSB7Ci0gIC8vIEZpbmQg
dGhlIGlubmVyIGJvZHkuIFdlIG5lZWQgdGhpcyB0byBmdWxmaWxsIHRoZSBjb250cmFjdCBvZgot
ICAvLyByZXR1cm5pbmcgcGVtX2xlbmd0aC4KKyAgLy8gRmluZCB0aGUgaW5uZXIgYm9keS4gV2Ug
bmVlZCB0aGlzIHRvIGZ1bGZpbGwgdGhlIGNvbnRyYWN0IG9mIHJldHVybmluZworICAvLyBwZW1f
bGVuZ3RoLgogICBzaXplX3QgaGVhZGVyID0gcGVtX3N0cmluZy5maW5kKCItLS0tLUJFR0lOICIg
KyBwZW1fdHlwZSArICItLS0tLSIpOwotICBpZiAoaGVhZGVyID09IHN0ZDo6c3RyaW5nOjpucG9z
KQorICBpZiAoaGVhZGVyID09IHN0ZDo6c3RyaW5nOjpucG9zKSB7CiAgICAgcmV0dXJuIGZhbHNl
OwotCisgIH0KICAgc2l6ZV90IGJvZHkgPSBwZW1fc3RyaW5nLmZpbmQoIlxuIiwgaGVhZGVyKTsK
LSAgaWYgKGJvZHkgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgIGlmIChib2R5ID09IHN0ZDo6c3Ry
aW5nOjpucG9zKSB7CiAgICAgcmV0dXJuIGZhbHNlOwotCisgIH0KICAgc2l6ZV90IHRyYWlsZXIg
PSBwZW1fc3RyaW5nLmZpbmQoIi0tLS0tRU5EICIgKyBwZW1fdHlwZSArICItLS0tLSIpOwotICBp
ZiAodHJhaWxlciA9PSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgaWYgKHRyYWlsZXIgPT0gc3RkOjpz
dHJpbmc6Om5wb3MpIHsKICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgfQogICBzdGQ6OnN0cmluZyBp
bm5lciA9IHBlbV9zdHJpbmcuc3Vic3RyKGJvZHkgKyAxLCB0cmFpbGVyIC0gKGJvZHkgKyAxKSk7
Ci0KICAgKmRlciA9IEJhc2U2NDo6RGVjb2RlKGlubmVyLCBCYXNlNjQ6OkRPX1BBUlNFX1dISVRF
IHwgQmFzZTY0OjpET19QQURfQU5ZIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQmFzZTY0OjpET19URVJNX0JVRkZFUik7CiAgIHJldHVybiB0cnVlOwpAQCAtMTE4LDE0ICsx
OTIsMTIgQEAgc3RkOjpzdHJpbmcgU1NMSWRlbnRpdHk6OkRlclRvUGVtKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwZW1fdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBsZW5ndGgpIHsKICAgcnRjOjpTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLQogICByZXN1bHQg
PDwgIi0tLS0tQkVHSU4gIiA8PCBwZW1fdHlwZSA8PCAiLS0tLS1cbiI7CiAKICAgc3RkOjpzdHJp
bmcgYjY0X2VuY29kZWQ7CiAgIEJhc2U2NDo6RW5jb2RlRnJvbUFycmF5KGRhdGEsIGxlbmd0aCwg
JmI2NF9lbmNvZGVkKTsKLQotICAvLyBEaXZpZGUgdGhlIEJhc2UtNjQgZW5jb2RlZCBkYXRhIGlu
dG8gNjQtY2hhcmFjdGVyIGNodW5rcywgYXMgcGVyCi0gIC8vIDQuMy4yLjQgb2YgUkZDIDE0MjEu
CisgIC8vIERpdmlkZSB0aGUgQmFzZS02NCBlbmNvZGVkIGRhdGEgaW50byA2NC1jaGFyYWN0ZXIg
Y2h1bmtzLCBhcyBwZXIgNC4zLjIuNAorICAvLyBvZiBSRkMgMTQyMS4KICAgc3RhdGljIGNvbnN0
IHNpemVfdCBrQ2h1bmtTaXplID0gNjQ7CiAgIHNpemVfdCBjaHVua3MgPSAoYjY0X2VuY29kZWQu
c2l6ZSgpICsgKGtDaHVua1NpemUgLSAxKSkgLyBrQ2h1bmtTaXplOwogICBmb3IgKHNpemVfdCBp
ID0gMCwgY2h1bmtfb2Zmc2V0ID0gMDsgaSA8IGNodW5rczsKQEAgLTEzMyw5ICsyMDUsNyBAQCBz
dGQ6OnN0cmluZyBTU0xJZGVudGl0eTo6RGVyVG9QZW0oY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV90
eXBlLAogICAgIHJlc3VsdCA8PCBiNjRfZW5jb2RlZC5zdWJzdHIoY2h1bmtfb2Zmc2V0LCBrQ2h1
bmtTaXplKTsKICAgICByZXN1bHQgPDwgIlxuIjsKICAgfQotCiAgIHJlc3VsdCA8PCAiLS0tLS1F
TkQgIiA8PCBwZW1fdHlwZSA8PCAiLS0tLS1cbiI7Ci0KICAgcmV0dXJuIHJlc3VsdC5SZWxlYXNl
KCk7CiB9CiAKQEAgLTE4Niw3OCArMjU2LDQgQEAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNTTElk
ZW50aXR5JiBhLCBjb25zdCBTU0xJZGVudGl0eSYgYikgewogICByZXR1cm4gIShhID09IGIpOwog
fQogCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyBIZWxwZXIgRnVuY3Rpb25zCi0vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0K
LS8vIFJlYWQgfG58IGJ5dGVzIGZyb20gQVNOMSBudW1iZXIgc3RyaW5nIGF0ICp8cHB8IGFuZCBy
ZXR1cm4gdGhlIG51bWVyaWMgdmFsdWUuCi0vLyBVcGRhdGUgKnxwcHwgYW5kICp8bnB8IHRvIHJl
ZmxlY3QgbnVtYmVyIG9mIHJlYWQgYnl0ZXMuCi1zdGF0aWMgaW5saW5lIGludCBBU04xUmVhZElu
dChjb25zdCB1bnNpZ25lZCBjaGFyKiogcHAsIHNpemVfdCogbnAsIHNpemVfdCBuKSB7Ci0gIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIHAgPSAqcHA7Ci0gIGludCB4ID0gMDsKLSAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBuOyBpKyspCi0gICAgeCA9IDEwICogeCArIHBbaV0gLSAnMCc7Ci0gICpwcCA9
IHAgKyBuOwotICAqbnAgPSAqbnAgLSBuOwotICByZXR1cm4geDsKLX0KLQotaW50NjRfdCBBU04x
VGltZVRvU2VjKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHMsIHNpemVfdCBsZW5ndGgsIGJvb2wgbG9u
Z19mb3JtYXQpIHsKLSAgc2l6ZV90IGJ5dGVzX2xlZnQgPSBsZW5ndGg7Ci0KLSAgLy8gTWFrZSBz
dXJlIHRoZSBzdHJpbmcgZW5kcyB3aXRoIFouICBEb2luZyBpdCBoZXJlIHByb3RlY3RzIHRoZSBz
dHJzcG4gY2FsbAotICAvLyBmcm9tIHJ1bm5pbmcgb2ZmIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBp
biBaJ3MgYWJzZW5zZS4KLSAgaWYgKGxlbmd0aCA9PSAwIHx8IHNbbGVuZ3RoIC0gMV0gIT0gJ1on
KQotICAgIHJldHVybiAtMTsKLQotICAvLyBNYWtlIHN1cmUgd2Ugb25seSBoYXZlIEFTQ0lJIGRp
Z2l0cyBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gY2x1dHRlciB0aGUKLSAgLy8gY29kZSBiZWxv
dyBhbmQgQVNOMVJlYWRJbnQgd2l0aCBlcnJvciBjaGVja2luZy4KLSAgc2l6ZV90IG4gPSBzdHJz
cG4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocyksICIwMTIzNDU2Nzg5Iik7Ci0gIGlm
IChuICsgMSAhPSBsZW5ndGgpCi0gICAgcmV0dXJuIC0xOwotCi0gIGludCB5ZWFyOwotCi0gIC8v
IFJlYWQgb3V0IEFTTjEgeWVhciwgaW4gZWl0aGVyIDItY2hhciAiVVRDVElNRSIgb3IgNC1jaGFy
ICJHRU5FUkFMSVpFRFRJTUUiCi0gIC8vIGZvcm1hdC4gIEJvdGggZm9ybWF0IHVzZSBVVEMgaW4g
dGhpcyBjb250ZXh0LgotICBpZiAobG9uZ19mb3JtYXQpIHsKLSAgICAvLyBBU04xIGZvcm1hdDog
eXl5eW1tZGRoaFttbVtzc1suZmZmXV1dWiB3aGVyZSB0aGUgWiBpcyBsaXRlcmFsLCBidXQKLSAg
ICAvLyBSRkMgNTI4MCByZXF1aXJlcyB1cyB0byBvbmx5IHN1cHBvcnQgZXhhY3RseSB5eXl5bW1k
ZGhobW1zc1ouCi0KLSAgICBpZiAoYnl0ZXNfbGVmdCA8IDExKQotICAgICAgcmV0dXJuIC0xOwot
Ci0gICAgeWVhciA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgNCk7Ci0gICAgeWVhciAt
PSAxOTAwOwotICB9IGVsc2UgewotICAgIC8vIEFTTjEgZm9ybWF0OiB5eW1tZGRoaG1tW3NzXVog
d2hlcmUgdGhlIFogaXMgbGl0ZXJhbCwgYnV0IFJGQyA1MjgwCi0gICAgLy8gcmVxdWlyZXMgdXMg
dG8gb25seSBzdXBwb3J0IGV4YWN0bHkgeXltbWRkaGhtbXNzWi4KLQotICAgIGlmIChieXRlc19s
ZWZ0IDwgOSkKLSAgICAgIHJldHVybiAtMTsKLQotICAgIHllYXIgPSBBU04xUmVhZEludCgmcywg
JmJ5dGVzX2xlZnQsIDIpOwotICAgIGlmICh5ZWFyIDwgNTApICAvLyBQZXIgUkZDIDUyODAgNC4x
LjIuNS4xCi0gICAgICB5ZWFyICs9IDEwMDsKLSAgfQotCi0gIHN0ZDo6dG0gdG07Ci0gIHRtLnRt
X3llYXIgPSB5ZWFyOwotCi0gIC8vIFJlYWQgb3V0IHJlbWFpbmluZyBBU04xIHRpbWUgZGF0YSBh
bmQgc3RvcmUgaXQgaW4gfHRtfCBpbiBkb2N1bWVudGVkCi0gIC8vIHN0ZDo6dG0gZm9ybWF0Lgot
ICB0bS50bV9tb24gPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpIC0gMTsKLSAgdG0u
dG1fbWRheSA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgMik7Ci0gIHRtLnRtX2hvdXIg
PSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpOwotICB0bS50bV9taW4gPSBBU04xUmVh
ZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpOwotICB0bS50bV9zZWMgPSBBU04xUmVhZEludCgmcywg
JmJ5dGVzX2xlZnQsIDIpOwotCi0gIGlmIChieXRlc19sZWZ0ICE9IDEpIHsKLSAgICAvLyBOb3cg
anVzdCBaIHNob3VsZCByZW1haW4uICBJdHMgZXhpc3RlbmNlIHdhcyBhc3NlcnRlZCBhYm92ZS4K
LSAgICByZXR1cm4gLTE7Ci0gIH0KLQotICByZXR1cm4gVG1Ub1NlY29uZHModG0pOwotfQotCiB9
ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xpZGVudGl0eS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaAppbmRleCAx
Mzc5ZDczM2JlNWY0ZjFhMmY4NzdjNjRmNWQzZmJhNWZlNzlmZmI1Li4zOWZlZWFiYWIzMTJjMTQw
NTRkMjY1M2E1M2FjMjQzZjU3ZWUwMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xpZGVudGl0eS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5
LmgKQEAgLTEzLDE5ICsxMywxNSBAQAogI2lmbmRlZiBSVENfQkFTRV9TU0xJREVOVElUWV9IXwog
I2RlZmluZSBSVENfQkFTRV9TU0xJREVOVElUWV9IXwogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgot
I2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxjdGltZT4K
ICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAicnRjX2Jh
c2UvYnVmZmVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zc2xj
ZXJ0aWZpY2F0ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiBuYW1lc3Bh
Y2UgcnRjIHsKIAorY2xhc3MgU1NMQ2VydENoYWluOworY2xhc3MgU1NMQ2VydGlmaWNhdGU7CisK
IC8vIEtUX0xBU1QgaXMgaW50ZW5kZWQgZm9yIHZlY3RvciBkZWNsYXJhdGlvbnMgYW5kIGxvb3Bz
IG92ZXIgYWxsIGtleSB0eXBlczsKIC8vIGl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnkga2V5IHR5
cGUgaW4gaXRzZWxmLgogLy8gS1RfREVGQVVMVCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IEtleVR5
cGUgZm9yIEtleVBhcmFtcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5X3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsaWRlbnRpdHlf
dW5pdHRlc3QuY2MKaW5kZXggMTMyZTI0MGMyZjVhNWMwZGM0OGM3N2FjODhlNzVlODZhM2FjMjhj
MC4uYmE1M2QxN2RhNDMxYTJhY2YyYWI2YjE4ZjQxYzhlZDYxNjUxNGRkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsaWRl
bnRpdHlfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvc3NsaWRlbnRpdHlfdW5pdHRlc3QuY2MKQEAgLTE0LDYgKzE0LDcg
QEAKICNpbmNsdWRlICJydGNfYmFzZS9mYWtlc3NsaWRlbnRpdHkuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9ndW5pdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsYWRhcHRlci5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGZpbmdlcnByaW50LmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2Uvc3NsaWRlbnRpdHkuaCIKQEAgLTE3OSw3ICsxODAsNyBAQCBJZGVudGl0eUFuZEluZm8gQ3Jl
YXRlRmFrZUlkZW50aXR5QW5kSW5mb0Zyb21EZXJzKAogICBjb25zdCBydGM6OlNTTENlcnRDaGFp
biYgY2hhaW4gPSBpbmZvLmlkZW50aXR5LT5jZXJ0X2NoYWluKCk7CiAgIHN0ZDo6dW5pcXVlX3B0
cjxydGM6OlNTTEZpbmdlcnByaW50PiBmcDsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGFp
bi5HZXRTaXplKCk7IGkrKykgewotICAgIGZwLnJlc2V0KHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNy
ZWF0ZSgic2hhLTEiLCAmY2hhaW4uR2V0KGkpKSk7CisgICAgZnAgPSBydGM6OlNTTEZpbmdlcnBy
aW50OjpDcmVhdGUoInNoYS0xIiwgY2hhaW4uR2V0KGkpKTsKICAgICBFWFBFQ1RfVFJVRShmcCk7
CiAgICAgaW5mby5maW5nZXJwcmludHMucHVzaF9iYWNrKGZwLT5HZXRSZmM0NTcyRmluZ2VycHJp
bnQoKSk7CiAgIH0KQEAgLTIwMCw3ICsyMDEsNyBAQCBjbGFzcyBTU0xJZGVudGl0eVRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgQVNTRVJUX1RSVUUoaWRlbnRpdHlfZWNkc2ExXyk7
CiAgICAgQVNTRVJUX1RSVUUoaWRlbnRpdHlfZWNkc2EyXyk7CiAKLSAgICB0ZXN0X2NlcnRfLnJl
c2V0KHJ0Yzo6U1NMQ2VydGlmaWNhdGU6OkZyb21QRU1TdHJpbmcoa1Rlc3RDZXJ0aWZpY2F0ZSkp
OworICAgIHRlc3RfY2VydF8gPSBydGM6OlNTTENlcnRpZmljYXRlOjpGcm9tUEVNU3RyaW5nKGtU
ZXN0Q2VydGlmaWNhdGUpOwogICAgIEFTU0VSVF9UUlVFKHRlc3RfY2VydF8pOwogICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3NzbHN0cmVhbWFkYXB0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyLmNjCmluZGV4IDc0NmViZDUwMDYz
ZGNhOGJmYWU2ODk4NWRiZGI2ZWVkN2Y1MzJlMGUuLjljMzNhOWM5MzNjOThhOTA0MDQ5ZmM4NmJj
ZjAxMTBhNzdkZmI3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRl
ci5jYwpAQCAtODksNDAgKzg5LDEyIEBAIGJvb2wgSXNHY21DcnlwdG9TdWl0ZU5hbWUoY29uc3Qg
c3RkOjpzdHJpbmcmIGNyeXB0b19zdWl0ZSkgewogICAgICAgICAgIGNyeXB0b19zdWl0ZSA9PSBD
U19BRUFEX0FFU18xMjhfR0NNKTsKIH0KIAotLy8gc3RhdGljCi1DcnlwdG9PcHRpb25zIENyeXB0
b09wdGlvbnM6Ok5vR2NtKCkgewotICBDcnlwdG9PcHRpb25zIG9wdGlvbnM7Ci0gIG9wdGlvbnMu
ZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gZmFsc2U7Ci0gIHJldHVybiBvcHRpb25zOwotfQot
Ci1zdGQ6OnZlY3RvcjxpbnQ+IEdldFN1cHBvcnRlZER0bHNTcnRwQ3J5cHRvU3VpdGVzKAotICAg
IGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIHsKLSAgc3RkOjp2ZWN0
b3I8aW50PiBjcnlwdG9fc3VpdGVzOwotICBpZiAoY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9j
cnlwdG9fc3VpdGVzKSB7Ci0gICAgY3J5cHRvX3N1aXRlcy5wdXNoX2JhY2socnRjOjpTUlRQX0FF
QURfQUVTXzI1Nl9HQ00pOwotICAgIGNyeXB0b19zdWl0ZXMucHVzaF9iYWNrKHJ0Yzo6U1JUUF9B
RUFEX0FFU18xMjhfR0NNKTsKLSAgfQotICAvLyBOb3RlOiBTUlRQX0FFUzEyOF9DTV9TSEExXzgw
IGlzIHdoYXQgaXMgcmVxdWlyZWQgdG8gYmUgc3VwcG9ydGVkIChieQotICAvLyBkcmFmdC1pZXRm
LXJ0Y3dlYi1zZWN1cml0eS1hcmNoKSwgYnV0IFNSVFBfQUVTMTI4X0NNX1NIQTFfMzIgaXMgYWxs
b3dlZCBhcwotICAvLyB3ZWxsLCBhbmQgc2F2ZXMgYSBmZXcgYnl0ZXMgcGVyIHBhY2tldCBpZiBp
dCBlbmRzIHVwIHNlbGVjdGVkLgotICAvLyBBcyB0aGUgY2lwaGVyIHN1aXRlIGlzIHBvdGVudGlh
bGx5IGluc2VjdXJlLCBpdCB3aWxsIG9ubHkgYmUgdXNlZCBpZgotICAvLyBlbmFibGVkIGJ5IGJv
dGggcGVlcnMuCi0gIGlmIChjcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5
cHRvX2NpcGhlcikgewotICAgIGNyeXB0b19zdWl0ZXMucHVzaF9iYWNrKHJ0Yzo6U1JUUF9BRVMx
MjhfQ01fU0hBMV8zMik7Ci0gIH0KLSAgY3J5cHRvX3N1aXRlcy5wdXNoX2JhY2socnRjOjpTUlRQ
X0FFUzEyOF9DTV9TSEExXzgwKTsKLSAgcmV0dXJuIGNyeXB0b19zdWl0ZXM7Ci19Ci0KIFNTTFN0
cmVhbUFkYXB0ZXIqIFNTTFN0cmVhbUFkYXB0ZXI6OkNyZWF0ZShTdHJlYW1JbnRlcmZhY2UqIHN0
cmVhbSkgewogICByZXR1cm4gbmV3IE9wZW5TU0xTdHJlYW1BZGFwdGVyKHN0cmVhbSk7CiB9CiAK
IFNTTFN0cmVhbUFkYXB0ZXI6OlNTTFN0cmVhbUFkYXB0ZXIoU3RyZWFtSW50ZXJmYWNlKiBzdHJl
YW0pCi0gICAgOiBTdHJlYW1BZGFwdGVySW50ZXJmYWNlKHN0cmVhbSksCi0gICAgICBpZ25vcmVf
YmFkX2NlcnRfKGZhbHNlKSwKLSAgICAgIGNsaWVudF9hdXRoX2VuYWJsZWRfKHRydWUpIHt9Cisg
ICAgOiBTdHJlYW1BZGFwdGVySW50ZXJmYWNlKHN0cmVhbSkge30KIAogU1NMU3RyZWFtQWRhcHRl
cjo6flNTTFN0cmVhbUFkYXB0ZXIoKSB7fQogCkBAIC0xNjEsOCArMTMzLDEzIEBAIGJvb2wgU1NM
U3RyZWFtQWRhcHRlcjo6SXNBY2NlcHRhYmxlQ2lwaGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBjaXBo
ZXIsCiBzdGQ6OnN0cmluZyBTU0xTdHJlYW1BZGFwdGVyOjpTc2xDaXBoZXJTdWl0ZVRvTmFtZShp
bnQgY2lwaGVyX3N1aXRlKSB7CiAgIHJldHVybiBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6U3NsQ2lw
aGVyU3VpdGVUb05hbWUoY2lwaGVyX3N1aXRlKTsKIH0KLXZvaWQgU1NMU3RyZWFtQWRhcHRlcjo6
ZW5hYmxlX3RpbWVfY2FsbGJhY2tfZm9yX3Rlc3RpbmcoKSB7Ci0gIE9wZW5TU0xTdHJlYW1BZGFw
dGVyOjplbmFibGVfdGltZV9jYWxsYmFja19mb3JfdGVzdGluZygpOworCisvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCisvLyBUZXN0IG9ubHkgc2V0dGluZ3MKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
Kwordm9pZCBTU0xTdHJlYW1BZGFwdGVyOjpFbmFibGVUaW1lQ2FsbGJhY2tGb3JUZXN0aW5nKCkg
eworICBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6RW5hYmxlVGltZUNhbGxiYWNrRm9yVGVzdGluZygp
OwogfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xz
dHJlYW1hZGFwdGVyLmgKaW5kZXggMmQ0ZTE5ZjliNTBmZWYzMGMwOGNmMDYzYWRmNjU0NjQxMzNm
ZmM4NS4uMjVmNGYzMzQ4NmRhZGQ5ODRjOGE0MmJlMWIzMWQzZjJhYTlhYjU4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Ns
c3RyZWFtYWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuaApAQCAtNzAsMzQgKzcwLDYgQEAgYm9v
bCBJc0djbUNyeXB0b1N1aXRlKGludCBjcnlwdG9fc3VpdGUpOwogLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBnaXZlbiBjcnlwdG8gc3VpdGUgbmFtZSB1c2VzIGEgR0NNIGNpcGhlci4KIGJvb2wgSXNH
Y21DcnlwdG9TdWl0ZU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGNyeXB0b19zdWl0ZSk7CiAKLXN0
cnVjdCBDcnlwdG9PcHRpb25zIHsKLSAgQ3J5cHRvT3B0aW9ucygpIHt9Ci0KLSAgLy8gSGVscGVy
IG1ldGhvZCB0byByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlIENyeXB0b09wdGlvbnMgd2l0aCBH
Q00gY3J5cHRvCi0gIC8vIHN1aXRlcyBkaXNhYmxlZC4gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHVz
ZWQgaW5zdGVhZCBvZiBkZXBlbmRpbmcgb24gY3VycmVudAotICAvLyBkZWZhdWx0IHZhbHVlcyBz
ZXQgYnkgdGhlIGNvbnN0cnVjdG9yLgotICBzdGF0aWMgQ3J5cHRvT3B0aW9ucyBOb0djbSgpOwot
Ci0gIC8vIEVuYWJsZSBHQ00gY3J5cHRvIHN1aXRlcyBmcm9tIFJGQyA3NzE0IGZvciBTUlRQLiBH
Q00gd2lsbCBvbmx5IGJlIHVzZWQKLSAgLy8gaWYgYm90aCBzaWRlcyBlbmFibGUgaXQuCi0gIGJv
b2wgZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gZmFsc2U7Ci0KLSAgLy8gSWYgc2V0IHRvIHRy
dWUsIHRoZSAocG90ZW50aWFsbHkgaW5zZWN1cmUpIGNyeXB0byBjaXBoZXIKLSAgLy8gU1JUUF9B
RVMxMjhfQ01fU0hBMV8zMiB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHN1cHBvcnRl
ZCBjaXBoZXJzCi0gIC8vIGR1cmluZyBuZWdvdGlhdGlvbi4gSXQgd2lsbCBvbmx5IGJlIHVzZWQg
aWYgYm90aCBwZWVycyBzdXBwb3J0IGl0IGFuZCBubwotICAvLyBvdGhlciBjaXBoZXJzIGdldCBw
cmVmZXJyZWQuCi0gIGJvb2wgZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPSBm
YWxzZTsKLQotICAvLyBJZiBzZXQgdG8gdHJ1ZSwgZW5jcnlwdGVkIFJUUCBoZWFkZXIgZXh0ZW5z
aW9ucyBhcyBkZWZpbmVkIGluIFJGQyA2OTA0Ci0gIC8vIHdpbGwgYmUgbmVnb3RpYXRlZC4gVGhl
eSB3aWxsIG9ubHkgYmUgdXNlZCBpZiBib3RoIHBlZXJzIHN1cHBvcnQgdGhlbS4KLSAgYm9vbCBl
bmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9IGZhbHNlOwotfTsKLQotLy8g
UmV0dXJucyBzdXBwb3J0ZWQgY3J5cHRvIHN1aXRlcywgZ2l2ZW4gfGNyeXB0b19vcHRpb25zfC4K
LS8vIENTX0FFU19DTV8xMjhfSE1BQ19TSEExXzMyIHdpbGwgYmUgcHJlZmVycmVkIGJ5IGRlZmF1
bHQuCi1zdGQ6OnZlY3RvcjxpbnQ+IEdldFN1cHBvcnRlZER0bHNTcnRwQ3J5cHRvU3VpdGVzKAot
ICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpOwotCiAvLyBTU0xT
dHJlYW1BZGFwdGVyIDogQSBTdHJlYW1JbnRlcmZhY2VBZGFwdGVyIHRoYXQgZG9lcyBTU0wvVExT
LgogLy8gQWZ0ZXIgU1NMIGhhcyBiZWVuIHN0YXJ0ZWQsIHRoZSBzdHJlYW0gd2lsbCBvbmx5IG9w
ZW4gb24gc3VjY2Vzc2Z1bAogLy8gU1NMIHZlcmlmaWNhdGlvbiBvZiBjZXJ0aWZpY2F0ZXMsIGFu
ZCB0aGUgY29tbXVuaWNhdGlvbiBpcwpAQCAtMTQ0LDEyICsxMTYsNiBAQCBjbGFzcyBTU0xTdHJl
YW1BZGFwdGVyIDogcHVibGljIFN0cmVhbUFkYXB0ZXJJbnRlcmZhY2UgewogICBleHBsaWNpdCBT
U0xTdHJlYW1BZGFwdGVyKFN0cmVhbUludGVyZmFjZSogc3RyZWFtKTsKICAgflNTTFN0cmVhbUFk
YXB0ZXIoKSBvdmVycmlkZTsKIAotICB2b2lkIHNldF9pZ25vcmVfYmFkX2NlcnQoYm9vbCBpZ25v
cmUpIHsgaWdub3JlX2JhZF9jZXJ0XyA9IGlnbm9yZTsgfQotICBib29sIGlnbm9yZV9iYWRfY2Vy
dCgpIGNvbnN0IHsgcmV0dXJuIGlnbm9yZV9iYWRfY2VydF87IH0KLQotICB2b2lkIHNldF9jbGll
bnRfYXV0aF9lbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBjbGllbnRfYXV0aF9lbmFibGVkXyA9IGVu
YWJsZWQ7IH0KLSAgYm9vbCBjbGllbnRfYXV0aF9lbmFibGVkKCkgY29uc3QgeyByZXR1cm4gY2xp
ZW50X2F1dGhfZW5hYmxlZF87IH0KLQogICAvLyBTcGVjaWZ5IG91ciBTU0wgaWRlbnRpdHk6IGtl
eSBhbmQgY2VydGlmaWNhdGUuIFNTTFN0cmVhbSB0YWtlcyBvd25lcnNoaXAKICAgLy8gb2YgdGhl
IFNTTElkZW50aXR5IG9iamVjdCBhbmQgd2lsbCBmcmVlIGl0IHdoZW4gYXBwcm9wcmlhdGUuIFNo
b3VsZCBiZQogICAvLyBjYWxsZWQgbm8gbW9yZSB0aGFuIG9uY2Ugb24gYSBnaXZlbiBTU0xTdHJl
YW0gaW5zdGFuY2UuCkBAIC0yNjMsMjIgKzIyOSwzMiBAQCBjbGFzcyBTU0xTdHJlYW1BZGFwdGVy
IDogcHVibGljIFN0cmVhbUFkYXB0ZXJJbnRlcmZhY2UgewogICAvLyBkZXBlbmRpbmcgb24gc3Bl
Y2lmaWMgU1NMIGltcGxlbWVudGF0aW9uLgogICBzdGF0aWMgc3RkOjpzdHJpbmcgU3NsQ2lwaGVy
U3VpdGVUb05hbWUoaW50IGNpcGhlcl9zdWl0ZSk7CiAKKyAgLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor
ICAvLyBUZXN0aW5nIG9ubHkgbWVtYmVyIGZ1bmN0aW9ucworICAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisKICAgLy8gVXNlIG91ciB0aW1ldXRpbHMuaCBzb3VyY2Ugb2YgdGltaW5nIGluIEJvcmluZ1NT
TCwgYWxsb3dpbmcgdXMgdG8gdGVzdAogICAvLyB1c2luZyBhIGZha2UgY2xvY2suCi0gIHN0YXRp
YyB2b2lkIGVuYWJsZV90aW1lX2NhbGxiYWNrX2Zvcl90ZXN0aW5nKCk7CisgIHN0YXRpYyB2b2lk
IEVuYWJsZVRpbWVDYWxsYmFja0ZvclRlc3RpbmcoKTsKKworICAvLyBEZXByZWNhdGVkLiBEbyBu
b3QgdXNlIHRoaXMgQVBJIG91dHNpZGUgb2YgdGVzdGluZy4KKyAgLy8gRG8gbm90IHNldCB0aGlz
IHRvIGZhbHNlIG91dHNpZGUgb2YgdGVzdGluZy4KKyAgdm9pZCBTZXRDbGllbnRBdXRoRW5hYmxl
ZEZvclRlc3RpbmcoYm9vbCBlbmFibGVkKSB7CisgICAgY2xpZW50X2F1dGhfZW5hYmxlZF8gPSBl
bmFibGVkOworICB9CisKKyAgLy8gRGVwcmVjYXRlZC4gRG8gbm90IHVzZSB0aGlzIEFQSSBvdXRz
aWRlIG9mIHRlc3RpbmcuCisgIC8vIFJldHVybnMgdHJ1ZSBieSBkZWZhdWx0LCBlbHNlIGZhbHNl
IGlmIGV4cGxpY2l0bHkgc2V0IHRvIGRpc2FibGUgY2xpZW50CisgIC8vIGF1dGhlbnRpY2F0aW9u
LgorICBib29sIEdldENsaWVudEF1dGhFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gY2xpZW50X2F1
dGhfZW5hYmxlZF87IH0KIAogICBzaWdzbG90OjpzaWduYWwxPFNTTEhhbmRzaGFrZUVycm9yPiBT
aWduYWxTU0xIYW5kc2hha2VFcnJvcjsKIAogIHByaXZhdGU6Ci0gIC8vIElmIHRydWUsIHRoZSBz
ZXJ2ZXIgY2VydGlmaWNhdGUgbmVlZCBub3QgbWF0Y2ggdGhlIGNvbmZpZ3VyZWQKLSAgLy8gc2Vy
dmVyX25hbWUsIGFuZCBpbiBmYWN0IG1pc3NpbmcgY2VydGlmaWNhdGUgYXV0aG9yaXR5IGFuZCBv
dGhlcgotICAvLyB2ZXJpZmljYXRpb24gZXJyb3JzIGFyZSBpZ25vcmVkLgotICBib29sIGlnbm9y
ZV9iYWRfY2VydF87Ci0KICAgLy8gSWYgdHJ1ZSAoZGVmYXVsdCksIHRoZSBjbGllbnQgaXMgcmVx
dWlyZWQgdG8gcHJvdmlkZSBhIGNlcnRpZmljYXRlIGR1cmluZwogICAvLyBoYW5kc2hha2UuIElm
IG5vIGNlcnRpZmljYXRlIGlzIGdpdmVuLCBoYW5kc2hha2UgZmFpbHMuIFRoaXMgYXBwbGllcyB0
bwogICAvLyBzZXJ2ZXIgbW9kZSBvbmx5LgotICBib29sIGNsaWVudF9hdXRoX2VuYWJsZWRfOwor
ICBib29sIGNsaWVudF9hdXRoX2VuYWJsZWRfID0gdHJ1ZTsKIH07CiAKIH0gIC8vIG5hbWVzcGFj
ZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyX3Vu
aXR0ZXN0LmNjCmluZGV4IDM0MDNiZGJlNzI3ZWUzM2YwODYyODYwYzlmNzFhYWQxZGI2ZDlmZTcu
LjZmYmIxZDdjMmNjMDk4MjJkMjZiYTY3ZTlhNzBlYTUyYzMxNWE3MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbHN0cmVh
bWFkYXB0ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlcl91bml0dGVzdC5jYwpAQCAtMTcs
NiArMTcsOCBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2d1bml0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL21lbW9yeV9zdHJlYW0uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3NzbGlkZW50aXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgpA
QCAtNTg3LDggKzU4OSw3IEBAIGNsYXNzIFNTTFN0cmVhbUFkYXB0ZXJUZXN0QmFzZSA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0LAogICAgICAgY2hhaW4gPSBjbGllbnRfc3NsXy0+R2V0UGVlclNTTENl
cnRDaGFpbigpOwogICAgIGVsc2UKICAgICAgIGNoYWluID0gc2VydmVyX3NzbF8tPkdldFBlZXJT
U0xDZXJ0Q2hhaW4oKTsKLSAgICByZXR1cm4gKGNoYWluICYmIGNoYWluLT5HZXRTaXplKCkpID8g
Y2hhaW4tPkdldCgwKS5HZXRVbmlxdWVSZWZlcmVuY2UoKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiBudWxscHRyOworICAgIHJldHVybiAoY2hhaW4gJiYgY2hhaW4t
PkdldFNpemUoKSkgPyBjaGFpbi0+R2V0KDApLkNsb25lKCkgOiBudWxscHRyOwogICB9CiAKICAg
Ym9vbCBHZXRTc2xDaXBoZXJTdWl0ZShib29sIGNsaWVudCwgaW50KiByZXR2YWwpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3N0cmVhbS5jYwppbmRleCBkMWVjMTQwMGRlNjBiMWRlM2ZlZWRhOWY3NzlhMDA5Njcy
ZjIxOTBkLi43ODM2MjVjNjdhOTQ2MDI1MTE5MzdhZTQwZDY2MzQzYWE4NTZlM2IyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9z
dHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3RyZWFtLmNjCkBAIC03LDI5ICs3LDIzIEBACiAgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQogICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICov
Ci0KLSNpZiBkZWZpbmVkKFdFQlJUQ19QT1NJWCkKLSNpbmNsdWRlIDxzeXMvZmlsZS5oPgotI2Vu
ZGlmICAvLyBXRUJSVENfUE9TSVgKICNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0cmlu
Zy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0KICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyZWFtLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5j
b2RlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS90aHJlYWQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogI2lmIGRl
ZmluZWQoV0VCUlRDX1dJTikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisKICNkZWZpbmUgZmlsZW5v
IF9maWxlbm8KKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2VuZGlmCiAKIG5h
bWVzcGFjZSBydGMgewpAQCAtNzUsMjYgKzY5LDYgQEAgU3RyZWFtUmVzdWx0IFN0cmVhbUludGVy
ZmFjZTo6UmVhZEFsbCh2b2lkKiBidWZmZXIsCiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmVh
bVJlc3VsdCBTdHJlYW1JbnRlcmZhY2U6OlJlYWRMaW5lKHN0ZDo6c3RyaW5nKiBsaW5lKSB7Ci0g
IGxpbmUtPmNsZWFyKCk7Ci0gIFN0cmVhbVJlc3VsdCByZXN1bHQgPSBTUl9TVUNDRVNTOwotICB3
aGlsZSAodHJ1ZSkgewotICAgIGNoYXIgY2g7Ci0gICAgcmVzdWx0ID0gUmVhZCgmY2gsIHNpemVv
ZihjaCksIG51bGxwdHIsIG51bGxwdHIpOwotICAgIGlmIChyZXN1bHQgIT0gU1JfU1VDQ0VTUykg
ewotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChjaCA9PSAnXG4nKSB7Ci0gICAgICBicmVh
azsKLSAgICB9Ci0gICAgbGluZS0+cHVzaF9iYWNrKGNoKTsKLSAgfQotICBpZiAoIWxpbmUtPmVt
cHR5KCkpIHsgICAvLyBnaXZlIGJhY2sgdGhlIGxpbmUgd2UndmUgY29sbGVjdGVkIHNvIGZhciB3
aXRoCi0gICAgcmVzdWx0ID0gU1JfU1VDQ0VTUzsgIC8vIGEgc3VjY2VzcyBjb2RlLiAgT3RoZXJ3
aXNlIHJldHVybiB0aGUgbGFzdCBjb2RlCi0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQogdm9p
ZCBTdHJlYW1JbnRlcmZhY2U6OlBvc3RFdmVudChUaHJlYWQqIHQsIGludCBldmVudHMsIGludCBl
cnIpIHsKICAgdC0+UG9zdChSVENfRlJPTV9IRVJFLCB0aGlzLCBNU0dfUE9TVF9FVkVOVCwKICAg
ICAgICAgICBuZXcgU3RyZWFtRXZlbnREYXRhKGV2ZW50cywgZXJyKSk7CkBAIC0xMDQsMTQgKzc4
LDYgQEAgdm9pZCBTdHJlYW1JbnRlcmZhY2U6OlBvc3RFdmVudChpbnQgZXZlbnRzLCBpbnQgZXJy
KSB7CiAgIFBvc3RFdmVudChUaHJlYWQ6OkN1cnJlbnQoKSwgZXZlbnRzLCBlcnIpOwogfQogCi1j
b25zdCB2b2lkKiBTdHJlYW1JbnRlcmZhY2U6OkdldFJlYWREYXRhKHNpemVfdCogZGF0YV9sZW4p
IHsKLSAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQqIFN0cmVhbUludGVyZmFjZTo6R2V0V3Jp
dGVCdWZmZXIoc2l6ZV90KiBidWZfbGVuKSB7Ci0gIHJldHVybiBudWxscHRyOwotfQotCiBib29s
IFN0cmVhbUludGVyZmFjZTo6U2V0UG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSB7CiAgIHJldHVy
biBmYWxzZTsKIH0KQEAgLTEyNCwxMCArOTAsNiBAQCBib29sIFN0cmVhbUludGVyZmFjZTo6R2V0
U2l6ZShzaXplX3QqIHNpemUpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFN0
cmVhbUludGVyZmFjZTo6R2V0V3JpdGVSZW1haW5pbmcoc2l6ZV90KiBzaXplKSBjb25zdCB7Ci0g
IHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBTdHJlYW1JbnRlcmZhY2U6OkZsdXNoKCkgewogICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC0xODgsMTAgKzE1MCw2IEBAIGJvb2wgU3RyZWFtQWRhcHRlcklu
dGVyZmFjZTo6R2V0U2l6ZShzaXplX3QqIHNpemUpIGNvbnN0IHsKICAgcmV0dXJuIHN0cmVhbV8t
PkdldFNpemUoc2l6ZSk7CiB9CiAKLWJvb2wgU3RyZWFtQWRhcHRlckludGVyZmFjZTo6R2V0V3Jp
dGVSZW1haW5pbmcoc2l6ZV90KiBzaXplKSBjb25zdCB7Ci0gIHJldHVybiBzdHJlYW1fLT5HZXRX
cml0ZVJlbWFpbmluZyhzaXplKTsKLX0KLQogYm9vbCBTdHJlYW1BZGFwdGVySW50ZXJmYWNlOjpS
ZXNlcnZlU2l6ZShzaXplX3Qgc2l6ZSkgewogICByZXR1cm4gc3RyZWFtXy0+UmVzZXJ2ZVNpemUo
c2l6ZSk7CiB9CkBAIC0zODksMTQzICszNDcsNiBAQCB2b2lkIEZpbGVTdHJlYW06OkRvQ2xvc2Uo
KSB7CiAgIGZjbG9zZShmaWxlXyk7CiB9CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIE1l
bW9yeVN0cmVhbQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1NZW1vcnlTdHJlYW1CYXNlOjpN
ZW1vcnlTdHJlYW1CYXNlKCkKLSAgICA6IGJ1ZmZlcl8obnVsbHB0ciksIGJ1ZmZlcl9sZW5ndGhf
KDApLCBkYXRhX2xlbmd0aF8oMCksIHNlZWtfcG9zaXRpb25fKDApIHt9Ci0KLVN0cmVhbVN0YXRl
IE1lbW9yeVN0cmVhbUJhc2U6OkdldFN0YXRlKCkgY29uc3QgewotICByZXR1cm4gU1NfT1BFTjsK
LX0KLQotU3RyZWFtUmVzdWx0IE1lbW9yeVN0cmVhbUJhc2U6OlJlYWQodm9pZCogYnVmZmVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ5dGVzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc19yZWFkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBlcnJvcikgewotICBpZiAoc2Vla19w
b3NpdGlvbl8gPj0gZGF0YV9sZW5ndGhfKSB7Ci0gICAgcmV0dXJuIFNSX0VPUzsKLSAgfQotICBz
aXplX3QgYXZhaWxhYmxlID0gZGF0YV9sZW5ndGhfIC0gc2Vla19wb3NpdGlvbl87Ci0gIGlmIChi
eXRlcyA+IGF2YWlsYWJsZSkgewotICAgIC8vIFJlYWQgcGFydGlhbCBidWZmZXIKLSAgICBieXRl
cyA9IGF2YWlsYWJsZTsKLSAgfQotICBtZW1jcHkoYnVmZmVyLCAmYnVmZmVyX1tzZWVrX3Bvc2l0
aW9uX10sIGJ5dGVzKTsKLSAgc2Vla19wb3NpdGlvbl8gKz0gYnl0ZXM7Ci0gIGlmIChieXRlc19y
ZWFkKSB7Ci0gICAgKmJ5dGVzX3JlYWQgPSBieXRlczsKLSAgfQotICByZXR1cm4gU1JfU1VDQ0VT
UzsKLX0KLQotU3RyZWFtUmVzdWx0IE1lbW9yeVN0cmVhbUJhc2U6OldyaXRlKGNvbnN0IHZvaWQq
IGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnl0
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc193
cml0dGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogZXJyb3Ip
IHsKLSAgc2l6ZV90IGF2YWlsYWJsZSA9IGJ1ZmZlcl9sZW5ndGhfIC0gc2Vla19wb3NpdGlvbl87
Ci0gIGlmICgwID09IGF2YWlsYWJsZSkgewotICAgIC8vIEluY3JlYXNlIGJ1ZmZlciBzaXplIHRv
IHRoZSBsYXJnZXIgb2Y6Ci0gICAgLy8gYSkgbmV3IHBvc2l0aW9uIHJvdW5kZWQgdXAgdG8gbmV4
dCAyNTYgYnl0ZXMKLSAgICAvLyBiKSBkb3VibGUgdGhlIHByZXZpb3VzIGxlbmd0aAotICAgIHNp
emVfdCBuZXdfYnVmZmVyX2xlbmd0aCA9Ci0gICAgICAgIHN0ZDo6bWF4KCgoc2Vla19wb3NpdGlv
bl8gKyBieXRlcykgfCAweEZGKSArIDEsIGJ1ZmZlcl9sZW5ndGhfICogMik7Ci0gICAgU3RyZWFt
UmVzdWx0IHJlc3VsdCA9IERvUmVzZXJ2ZShuZXdfYnVmZmVyX2xlbmd0aCwgZXJyb3IpOwotICAg
IGlmIChTUl9TVUNDRVNTICE9IHJlc3VsdCkgewotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
Ci0gICAgUlRDX0RDSEVDSyhidWZmZXJfbGVuZ3RoXyA+PSBuZXdfYnVmZmVyX2xlbmd0aCk7Ci0g
ICAgYXZhaWxhYmxlID0gYnVmZmVyX2xlbmd0aF8gLSBzZWVrX3Bvc2l0aW9uXzsKLSAgfQotCi0g
IGlmIChieXRlcyA+IGF2YWlsYWJsZSkgewotICAgIGJ5dGVzID0gYXZhaWxhYmxlOwotICB9Ci0g
IG1lbWNweSgmYnVmZmVyX1tzZWVrX3Bvc2l0aW9uX10sIGJ1ZmZlciwgYnl0ZXMpOwotICBzZWVr
X3Bvc2l0aW9uXyArPSBieXRlczsKLSAgaWYgKGRhdGFfbGVuZ3RoXyA8IHNlZWtfcG9zaXRpb25f
KSB7Ci0gICAgZGF0YV9sZW5ndGhfID0gc2Vla19wb3NpdGlvbl87Ci0gIH0KLSAgaWYgKGJ5dGVz
X3dyaXR0ZW4pIHsKLSAgICAqYnl0ZXNfd3JpdHRlbiA9IGJ5dGVzOwotICB9Ci0gIHJldHVybiBT
Ul9TVUNDRVNTOwotfQotCi12b2lkIE1lbW9yeVN0cmVhbUJhc2U6OkNsb3NlKCkgewotICAvLyBu
b3RoaW5nIHRvIGRvCi19Ci0KLWJvb2wgTWVtb3J5U3RyZWFtQmFzZTo6U2V0UG9zaXRpb24oc2l6
ZV90IHBvc2l0aW9uKSB7Ci0gIGlmIChwb3NpdGlvbiA+IGRhdGFfbGVuZ3RoXykKLSAgICByZXR1
cm4gZmFsc2U7Ci0gIHNlZWtfcG9zaXRpb25fID0gcG9zaXRpb247Ci0gIHJldHVybiB0cnVlOwot
fQotCi1ib29sIE1lbW9yeVN0cmVhbUJhc2U6OkdldFBvc2l0aW9uKHNpemVfdCogcG9zaXRpb24p
IGNvbnN0IHsKLSAgaWYgKHBvc2l0aW9uKQotICAgICpwb3NpdGlvbiA9IHNlZWtfcG9zaXRpb25f
OwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNZW1vcnlTdHJlYW1CYXNlOjpHZXRTaXplKHNp
emVfdCogc2l6ZSkgY29uc3QgewotICBpZiAoc2l6ZSkKLSAgICAqc2l6ZSA9IGRhdGFfbGVuZ3Ro
XzsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTWVtb3J5U3RyZWFtQmFzZTo6UmVzZXJ2ZVNp
emUoc2l6ZV90IHNpemUpIHsKLSAgcmV0dXJuIChTUl9TVUNDRVNTID09IERvUmVzZXJ2ZShzaXpl
LCBudWxscHRyKSk7Ci19Ci0KLVN0cmVhbVJlc3VsdCBNZW1vcnlTdHJlYW1CYXNlOjpEb1Jlc2Vy
dmUoc2l6ZV90IHNpemUsIGludCogZXJyb3IpIHsKLSAgcmV0dXJuIChidWZmZXJfbGVuZ3RoXyA+
PSBzaXplKSA/IFNSX1NVQ0NFU1MgOiBTUl9FT1M7Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLQotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oKSB7fQotCi1NZW1vcnlTdHJlYW06Ok1l
bW9yeVN0cmVhbShjb25zdCBjaGFyKiBkYXRhKSB7Ci0gIFNldERhdGEoZGF0YSwgc3RybGVuKGRh
dGEpKTsKLX0KLQotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90IGxlbmd0aCkgewotICBTZXREYXRhKGRhdGEsIGxlbmd0aCk7Ci19Ci0KLU1lbW9yeVN0
cmVhbTo6fk1lbW9yeVN0cmVhbSgpIHsKLSAgZGVsZXRlW10gYnVmZmVyXzsKLX0KLQotdm9pZCBN
ZW1vcnlTdHJlYW06OlNldERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgewot
ICBkYXRhX2xlbmd0aF8gPSBidWZmZXJfbGVuZ3RoXyA9IGxlbmd0aDsKLSAgZGVsZXRlW10gYnVm
ZmVyXzsKLSAgYnVmZmVyXyA9IG5ldyBjaGFyW2J1ZmZlcl9sZW5ndGhfXTsKLSAgbWVtY3B5KGJ1
ZmZlcl8sIGRhdGEsIGRhdGFfbGVuZ3RoXyk7Ci0gIHNlZWtfcG9zaXRpb25fID0gMDsKLX0KLQot
U3RyZWFtUmVzdWx0IE1lbW9yeVN0cmVhbTo6RG9SZXNlcnZlKHNpemVfdCBzaXplLCBpbnQqIGVy
cm9yKSB7Ci0gIGlmIChidWZmZXJfbGVuZ3RoXyA+PSBzaXplKQotICAgIHJldHVybiBTUl9TVUND
RVNTOwotCi0gIGlmIChjaGFyKiBuZXdfYnVmZmVyID0gbmV3IGNoYXJbc2l6ZV0pIHsKLSAgICBt
ZW1jcHkobmV3X2J1ZmZlciwgYnVmZmVyXywgZGF0YV9sZW5ndGhfKTsKLSAgICBkZWxldGVbXSBi
dWZmZXJfOwotICAgIGJ1ZmZlcl8gPSBuZXdfYnVmZmVyOwotICAgIGJ1ZmZlcl9sZW5ndGhfID0g
c2l6ZTsKLSAgICByZXR1cm4gU1JfU1VDQ0VTUzsKLSAgfQotCi0gIGlmIChlcnJvcikgewotICAg
ICplcnJvciA9IEVOT01FTTsKLSAgfQotICByZXR1cm4gU1JfRVJST1I7Ci19Ci0KIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KIC8vIEZpZm9CdWZmZXIKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAg
LTc1OCw2OCArNTc5LDQgQEAgU3RyZWFtUmVzdWx0IEZpZm9CdWZmZXI6OldyaXRlT2Zmc2V0TG9j
a2VkKGNvbnN0IHZvaWQqIGJ1ZmZlciwKICAgcmV0dXJuIFNSX1NVQ0NFU1M7CiB9CiAKLQotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotCi1TdHJlYW1SZXN1bHQgRmxvdyhTdHJlYW1JbnRlcmZhY2Uq
IHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgIGNoYXIqIGJ1ZmZlciwKLSAgICAgICAgICAgICAg
ICAgIHNpemVfdCBidWZmZXJfbGVuLAotICAgICAgICAgICAgICAgICAgU3RyZWFtSW50ZXJmYWNl
KiBzaW5rLAotICAgICAgICAgICAgICAgICAgc2l6ZV90KiBkYXRhX2xlbiAvKiA9IG51bGxwdHIg
Ki8pIHsKLSAgUlRDX0RDSEVDSyhidWZmZXJfbGVuID4gMCk7Ci0KLSAgU3RyZWFtUmVzdWx0IHJl
c3VsdDsKLSAgc2l6ZV90IGNvdW50LCByZWFkX3Bvcywgd3JpdGVfcG9zOwotICBpZiAoZGF0YV9s
ZW4pIHsKLSAgICByZWFkX3BvcyA9ICpkYXRhX2xlbjsKLSAgfSBlbHNlIHsKLSAgICByZWFkX3Bv
cyA9IDA7Ci0gIH0KLQotICBib29sIGVuZF9vZl9zdHJlYW0gPSBmYWxzZTsKLSAgZG8gewotICAg
IC8vIFJlYWQgdW50aWwgYnVmZmVyIGlzIGZ1bGwsIGVuZCBvZiBzdHJlYW0sIG9yIGVycm9yCi0g
ICAgd2hpbGUgKCFlbmRfb2Zfc3RyZWFtICYmIChyZWFkX3BvcyA8IGJ1ZmZlcl9sZW4pKSB7Ci0g
ICAgICByZXN1bHQgPSBzb3VyY2UtPlJlYWQoYnVmZmVyICsgcmVhZF9wb3MsIGJ1ZmZlcl9sZW4g
LSByZWFkX3BvcywgJmNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OwotICAgICAgaWYgKHJlc3VsdCA9PSBTUl9FT1MpIHsKLSAgICAgICAgZW5kX29mX3N0cmVhbSA9
IHRydWU7Ci0gICAgICB9IGVsc2UgaWYgKHJlc3VsdCAhPSBTUl9TVUNDRVNTKSB7Ci0gICAgICAg
IGlmIChkYXRhX2xlbikgewotICAgICAgICAgICpkYXRhX2xlbiA9IHJlYWRfcG9zOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZWFk
X3BvcyArPSBjb3VudDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBXcml0ZSB1bnRpbCBidWZm
ZXIgaXMgZW1wdHksIG9yIGVycm9yIChpbmNsdWRpbmcgZW5kIG9mIHN0cmVhbSkKLSAgICB3cml0
ZV9wb3MgPSAwOwotICAgIHdoaWxlICh3cml0ZV9wb3MgPCByZWFkX3BvcykgewotICAgICAgcmVz
dWx0ID0gc2luay0+V3JpdGUoYnVmZmVyICsgd3JpdGVfcG9zLCByZWFkX3BvcyAtIHdyaXRlX3Bv
cywgJmNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICBp
ZiAocmVzdWx0ICE9IFNSX1NVQ0NFU1MpIHsKLSAgICAgICAgaWYgKGRhdGFfbGVuKSB7Ci0gICAg
ICAgICAgKmRhdGFfbGVuID0gcmVhZF9wb3MgLSB3cml0ZV9wb3M7Ci0gICAgICAgICAgaWYgKHdy
aXRlX3BvcyA+IDApIHsKLSAgICAgICAgICAgIG1lbW1vdmUoYnVmZmVyLCBidWZmZXIgKyB3cml0
ZV9wb3MsICpkYXRhX2xlbik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICB3cml0ZV9wb3MgKz0gY291bnQ7Ci0gICAgfQotCi0g
ICAgcmVhZF9wb3MgPSAwOwotICB9IHdoaWxlICghZW5kX29mX3N0cmVhbSk7Ci0KLSAgaWYgKGRh
dGFfbGVuKSB7Ci0gICAgKmRhdGFfbGVuID0gMDsKLSAgfQotICByZXR1cm4gU1JfU1VDQ0VTUzsK
LX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCiB9ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3N0cmVhbS5oCmluZGV4IDgxYzVlNDE4MDFhNWJhYWQ2NTFiNDJiNWRhZGQ4NDUzYjUx
MjMzNzguLjQzZTdmNThiYzdjMDk2MTM3MWNhOWNlMWVkODY1YzAwYmFjMGJlNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0
cmVhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3N0cmVhbS5oCkBAIC0xOCw3ICsxOCw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVm
ZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL21lc3NhZ2VxdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Ns
b3Qvc2lnc2xvdC5oIgpAQCAtMTA4LDU5ICsxMDcsNiBAQCBjbGFzcyBTdHJlYW1JbnRlcmZhY2Ug
OiBwdWJsaWMgTWVzc2FnZUhhbmRsZXIgewogICAvLyBMaWtlIHRoZSBhZm9yZW1lbnRpb25lZCBt
ZXRob2QsIGJ1dCBwb3N0cyB0byB0aGUgY3VycmVudCB0aHJlYWQuCiAgIHZvaWQgUG9zdEV2ZW50
KGludCBldmVudHMsIGludCBlcnIpOwogCi0gIC8vCi0gIC8vIE9QVElPTkFMIE9QRVJBVElPTlMK
LSAgLy8KLSAgLy8gTm90IGFsbCBpbXBsZW1lbnRhdGlvbnMgd2lsbCBzdXBwb3J0IHRoZSBmb2xs
b3dpbmcgb3BlcmF0aW9ucy4gIEluIGdlbmVyYWwsCi0gIC8vIGEgc3RyZWFtIHdpbGwgb25seSBz
dXBwb3J0IGFuIG9wZXJhdGlvbiBpZiBpdCByZWFzb25hYmx5IGVmZmljaWVudCB0byBkbwotICAv
LyBzby4gIEZvciBleGFtcGxlLCB3aGlsZSBhIHNvY2tldCBjb3VsZCBidWZmZXIgaW5jb21pbmcg
ZGF0YSB0byBzdXBwb3J0Ci0gIC8vIHNlZWtpbmcsIGl0IHdpbGwgbm90IGRvIHNvLiAgSW5zdGVh
ZCwgYSBidWZmZXJpbmcgc3RyZWFtIGFkYXB0ZXIgc2hvdWxkCi0gIC8vIGJlIHVzZWQuCi0gIC8v
Ci0gIC8vIEV2ZW4gdGhvdWdoIHNldmVyYWwgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgcmVsYXRl
ZCwgeW91IHNob3VsZAotICAvLyBhbHdheXMgdXNlIHdoaWNoZXZlciBvcGVyYXRpb24gaXMgbW9z
dCByZWxldmFudC4KLSAgLy8KLSAgLy8gVGhlIGZvbGxvd2luZyBmb3VyIG1ldGhvZHMgYXJlIHVz
ZWQgdG8gYXZvaWQgY29weWluZyBkYXRhIG11bHRpcGxlIHRpbWVzLgotCi0gIC8vIEdldFJlYWRE
YXRhIHJldHVybnMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIHdoaWNoIGlzIG93bmVkIGJ5IHRoZSBz
dHJlYW0uCi0gIC8vIFRoZSBidWZmZXIgY29udGFpbnMgZGF0YV9sZW4gYnl0ZXMuICBudWxsIGlz
IHJldHVybmVkIGlmIG5vIGRhdGEgaXMKLSAgLy8gYXZhaWxhYmxlLCBvciBpZiB0aGUgbWV0aG9k
IGZhaWxzLiAgSWYgdGhlIGNhbGxlciBwcm9jZXNzZXMgdGhlIGRhdGEsIGl0Ci0gIC8vIG11c3Qg
Y2FsbCBDb25zdW1lUmVhZERhdGEgd2l0aCB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlZCBieXRlcy4g
IEdldFJlYWREYXRhCi0gIC8vIGRvZXMgbm90IHJlcXVpcmUgYSBtYXRjaGluZyBjYWxsIHRvIENv
bnN1bWVSZWFkRGF0YSBpZiB0aGUgZGF0YSBpcyBub3QKLSAgLy8gcHJvY2Vzc2VkLiAgUmVhZCBh
bmQgQ29uc3VtZVJlYWREYXRhIGludmFsaWRhdGUgdGhlIGJ1ZmZlciByZXR1cm5lZCBieQotICAv
LyBHZXRSZWFkRGF0YS4KLSAgdmlydHVhbCBjb25zdCB2b2lkKiBHZXRSZWFkRGF0YShzaXplX3Qq
IGRhdGFfbGVuKTsKLSAgdmlydHVhbCB2b2lkIENvbnN1bWVSZWFkRGF0YShzaXplX3QgdXNlZCkg
e30KLQotICAvLyBHZXRXcml0ZUJ1ZmZlciByZXR1cm5zIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB3
aGljaCBpcyBvd25lZCBieSB0aGUgc3RyZWFtLgotICAvLyBUaGUgYnVmZmVyIGhhcyBhIGNhcGFj
aXR5IG9mIGJ1Zl9sZW4gYnl0ZXMuICBudWxsIGlzIHJldHVybmVkIGlmIHRoZXJlIGlzCi0gIC8v
IG5vIGJ1ZmZlciBhdmFpbGFibGUsIG9yIGlmIHRoZSBtZXRob2QgZmFpbHMuICBUaGUgY2FsbCBt
YXkgd3JpdGUgZGF0YSB0bwotICAvLyB0aGUgYnVmZmVyLCBhbmQgdGhlbiBjYWxsIENvbnN1bWVX
cml0ZUJ1ZmZlciB3aXRoIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgLy8gd3JpdHRlbi4gIEdldFdy
aXRlQnVmZmVyIGRvZXMgbm90IHJlcXVpcmUgYSBtYXRjaGluZyBjYWxsIHRvCi0gIC8vIENvbnN1
bWVXcml0ZURhdGEgaWYgbm8gZGF0YSBpcyB3cml0dGVuLiAgV3JpdGUsIEZvcmNlV3JpdGUsIGFu
ZAotICAvLyBDb25zdW1lV3JpdGVEYXRhIGludmFsaWRhdGUgdGhlIGJ1ZmZlciByZXR1cm5lZCBi
eSBHZXRXcml0ZUJ1ZmZlci4KLSAgLy8gVE9ETzogQWxsb3cgdGhlIGNhbGxlciB0byBzcGVjaWZ5
IGEgbWluaW11bSBidWZmZXIgc2l6ZS4gIElmIHRoZSBzcGVjaWZpZWQKLSAgLy8gYW1vdW50IG9m
IGJ1ZmZlciBpcyBub3QgeWV0IGF2YWlsYWJsZSwgcmV0dXJuIG51bGwgYW5kIFNpZ25hbCBTRV9X
UklURQotICAvLyB3aGVuIGl0IGlzIGF2YWlsYWJsZS4gIElmIHRoZSByZXF1ZXN0ZWQgYW1vdW50
IGlzIHRvbyBsYXJnZSwgcmV0dXJuIGFuCi0gIC8vIGVycm9yLgotICB2aXJ0dWFsIHZvaWQqIEdl
dFdyaXRlQnVmZmVyKHNpemVfdCogYnVmX2xlbik7Ci0gIHZpcnR1YWwgdm9pZCBDb25zdW1lV3Jp
dGVCdWZmZXIoc2l6ZV90IHVzZWQpIHt9Ci0KLSAgLy8gV3JpdGUgZGF0YV9sZW4gYnl0ZXMgZm91
bmQgaW4gZGF0YSwgY2lyY3VtdmVudGluZyBhbnkgdGhyb3R0bGluZyB3aGljaAotICAvLyB3b3Vs
ZCBjb3VsZCBjYXVzZSBTUl9CTE9DSyB0byBiZSByZXR1cm5lZC4gIFJldHVybnMgdHJ1ZSBpZiBh
bGwgdGhlIGRhdGEKLSAgLy8gd2FzIHdyaXR0ZW4uICBPdGhlcndpc2UsIHRoZSBtZXRob2QgaXMg
dW5zdXBwb3J0ZWQsIG9yIGFuIHVucmVjb3ZlcmFibGUKLSAgLy8gZXJyb3Igb2NjdXJyZWQsIGFu
ZCB0aGUgZXJyb3IgdmFsdWUgaXMgc2V0LiAgVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHVzZWQKLSAg
Ly8gc3BhcmluZ2x5IHRvIHdyaXRlIGNyaXRpY2FsIGRhdGEgd2hpY2ggc2hvdWxkIG5vdCBiZSB0
aHJvdHRsZWQuICBBIHN0cmVhbQotICAvLyB3aGljaCBjYW5ub3QgY2lyY3VtdmVudCBpdHMgYmxv
Y2tpbmcgY29uc3RyYWludHMgc2hvdWxkIG5vdCBpbXBsZW1lbnQgdGhpcwotICAvLyBtZXRob2Qu
Ci0gIC8vIE5PVEU6IFRoaXMgaW50ZXJmYWNlIGlzIGJlaW5nIGNvbnNpZGVyZWQgZXhwZXJpbWVu
dGFsbHkgYXQgdGhlIG1vbWVudC4gIEl0Ci0gIC8vIHdvdWxkIGJlIHVzZWQgYnkgSlVEUCBhbmQg
QmFuZHdpZHRoU3RyZWFtIGFzIGEgd2F5IHRvIGNpcmN1bXZlbnQgY2VydGFpbgotICAvLyBzb2Z0
IGxpbWl0cyBpbiB3cml0aW5nLgotICAvLyB2aXJ0dWFsIGJvb2wgRm9yY2VXcml0ZShjb25zdCB2
b2lkKiBkYXRhLCBzaXplX3QgZGF0YV9sZW4sIGludCogZXJyb3IpIHsKLSAgLy8gIGlmIChlcnJv
cikgKmVycm9yID0gLTE7Ci0gIC8vICByZXR1cm4gZmFsc2U7Ci0gIC8vfQotCiAgIC8vIFNlZWsg
dG8gYSBieXRlIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVhbS4gIFJldHVy
bnMgZmFsc2UgaWYKICAgLy8gdGhlIHN0cmVhbSBkb2VzIG5vdCBzdXBwb3J0IHNlZWtpbmcsIG9y
IGNhbm5vdCBzZWVrIHRvIHRoZSBzcGVjaWZpZWQKICAgLy8gcG9zaXRpb24uCkBAIC0xNzQsMTAg
KzEyMCw2IEBAIGNsYXNzIFN0cmVhbUludGVyZmFjZSA6IHB1YmxpYyBNZXNzYWdlSGFuZGxlciB7
CiAgIC8vIGlzIG5vdCBrbm93bi4KICAgdmlydHVhbCBib29sIEdldFNpemUoc2l6ZV90KiBzaXpl
KSBjb25zdDsKIAotICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBXcml0ZSgpLWFibGUgYnl0ZXMg
cmVtYWluaW5nIGJlZm9yZSBlbmQtb2Ytc3RyZWFtLgotICAvLyBSZXR1cm5zIGZhbHNlIGlmIG5v
dCBrbm93bi4KLSAgdmlydHVhbCBib29sIEdldFdyaXRlUmVtYWluaW5nKHNpemVfdCogc2l6ZSkg
Y29uc3Q7Ci0KICAgLy8gUmV0dXJuIHRydWUgaWYgZmx1c2ggaXMgc3VjY2Vzc2Z1bC4KICAgdmly
dHVhbCBib29sIEZsdXNoKCk7CiAKQEAgLTIxNCwxMiArMTU2LDYgQEAgY2xhc3MgU3RyZWFtSW50
ZXJmYWNlIDogcHVibGljIE1lc3NhZ2VIYW5kbGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90KiByZWFkLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKTsKIAotICAv
LyBSZWFkTGluZSBpcyBhIGhlbHBlciBmdW5jdGlvbiB3aGljaCByZXBlYXRlZGx5IGNhbGxzIFJl
YWQgdW50aWwgaXQgaGl0cwotICAvLyB0aGUgZW5kLW9mLWxpbmUgY2hhcmFjdGVyLCBvciBzb21l
dGhpbmcgb3RoZXIgdGhhbiBTUl9TVUNDRVNTLgotICAvLyBUT0RPOiB0aGlzIGlzIHRvbyBpbmVm
ZmljaWVudCB0byBrZWVwIGhlcmUuICBCcmVhayB0aGlzIG91dCBpbnRvIGEgYnVmZmVyZWQKLSAg
Ly8gcmVhZGxpbmUgb2JqZWN0IG9yIGFkYXB0ZXIKLSAgU3RyZWFtUmVzdWx0IFJlYWRMaW5lKHN0
ZDo6c3RyaW5nKiBsaW5lKTsKLQogIHByb3RlY3RlZDoKICAgU3RyZWFtSW50ZXJmYWNlKCk7CiAK
QEAgLTI1NSwzNyArMTkxLDkgQEAgY2xhc3MgU3RyZWFtQWRhcHRlckludGVyZmFjZSA6IHB1Ymxp
YyBTdHJlYW1JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVy
cmlkZTsKICAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlOwogCi0gIC8vIE9wdGlvbmFsIFN0cmVhbSBJ
bnRlcmZhY2UKLSAgLyogIE5vdGU6IE1hbnkgc3RyZWFtIGFkYXB0ZXJzIHdlcmUgaW1wbGVtZW50
ZWQgcHJpb3IgdG8gdGhpcyBSZWFkL1dyaXRlCi0gICAgICBpbnRlcmZhY2UuICBUaGVyZWZvcmUs
IGEgc2ltcGxlIHBhc3MgdGhyb3VnaCBvZiBkYXRhIGluIHRob3NlIGNhc2VzIG1heQotICAgICAg
YmUgYnJva2VuLiAgQXQgYSBsYXRlciB0aW1lLCB3ZSBzaG91bGQgZG8gYSBvbmNlLW92ZXIgcGFz
cyBvZiBhbGwKLSAgICAgIGFkYXB0ZXJzLCBhbmQgbWFrZSB0aGVtIGNvbXBsaWFudCB3aXRoIHRo
ZXNlIGludGVyZmFjZXMsIGFmdGVyIHdoaWNoIHRoaXMKLSAgICAgIGNvZGUgY2FuIGJlIHVuY29t
bWVudGVkLgotICB2aXJ0dWFsIGNvbnN0IHZvaWQqIEdldFJlYWREYXRhKHNpemVfdCogZGF0YV9s
ZW4pIHsKLSAgICByZXR1cm4gc3RyZWFtXy0+R2V0UmVhZERhdGEoZGF0YV9sZW4pOwotICB9Ci0g
IHZpcnR1YWwgdm9pZCBDb25zdW1lUmVhZERhdGEoc2l6ZV90IHVzZWQpIHsKLSAgICBzdHJlYW1f
LT5Db25zdW1lUmVhZERhdGEodXNlZCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQqIEdldFdyaXRl
QnVmZmVyKHNpemVfdCogYnVmX2xlbikgewotICAgIHJldHVybiBzdHJlYW1fLT5HZXRXcml0ZUJ1
ZmZlcihidWZfbGVuKTsKLSAgfQotICB2aXJ0dWFsIHZvaWQgQ29uc3VtZVdyaXRlQnVmZmVyKHNp
emVfdCB1c2VkKSB7Ci0gICAgc3RyZWFtXy0+Q29uc3VtZVdyaXRlQnVmZmVyKHVzZWQpOwotICB9
Ci0gICovCi0KLSAgLyogIE5vdGU6IFRoaXMgaW50ZXJmYWNlIGlzIGN1cnJlbnRseSB1bmRlcmdv
aW5nIGV2YWx1YXRpb24uCi0gIHZpcnR1YWwgYm9vbCBGb3JjZVdyaXRlKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBkYXRhX2xlbiwgaW50KiBlcnJvcikgewotICAgIHJldHVybiBzdHJlYW1fLT5G
b3JjZVdyaXRlKGRhdGEsIGRhdGFfbGVuLCBlcnJvcik7Ci0gIH0KLSAgKi8KLQogICBib29sIFNl
dFBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgb3ZlcnJpZGU7CiAgIGJvb2wgR2V0UG9zaXRpb24o
c2l6ZV90KiBwb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgIGJvb2wgR2V0U2l6ZShzaXplX3Qq
IHNpemUpIGNvbnN0IG92ZXJyaWRlOwotICBib29sIEdldFdyaXRlUmVtYWluaW5nKHNpemVfdCog
c2l6ZSkgY29uc3Qgb3ZlcnJpZGU7CiAgIGJvb2wgUmVzZXJ2ZVNpemUoc2l6ZV90IHNpemUpIG92
ZXJyaWRlOwogICBib29sIEZsdXNoKCkgb3ZlcnJpZGU7CiAKQEAgLTM1Myw2OCArMjYxLDExIEBA
IGNsYXNzIEZpbGVTdHJlYW0gOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKICAgUlRDX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihGaWxlU3RyZWFtKTsKIH07CiAKLS8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLS8vIE1lbW9yeVN0cmVhbSBpcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFN0
cmVhbUludGVyZmFjZSBvdmVyIGluLW1lbW9yeQotLy8gZGF0YS4gIERhdGEgaXMgcmVhZCBhbmQg
d3JpdHRlbiBhdCB0aGUgY3VycmVudCBzZWVrIHBvc2l0aW9uLiAgUmVhZHMgcmV0dXJuCi0vLyBl
bmQtb2Ytc3RyZWFtIHdoZW4gdGhleSByZWFjaCB0aGUgZW5kIG9mIGRhdGEuICBXcml0ZXMgYWN0
dWFsbHkgZXh0ZW5kIHRoZQotLy8gZW5kIG9mIGRhdGEgbWFyay4KLS8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLQotY2xhc3MgTWVtb3J5U3RyZWFtQmFzZSA6IHB1YmxpYyBTdHJlYW1JbnRlcmZhY2Ug
ewotIHB1YmxpYzoKLSAgU3RyZWFtU3RhdGUgR2V0U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
U3RyZWFtUmVzdWx0IFJlYWQodm9pZCogYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfcmVhZCwKLSAgICAg
ICAgICAgICAgICAgICAgaW50KiBlcnJvcikgb3ZlcnJpZGU7Ci0gIFN0cmVhbVJlc3VsdCBXcml0
ZShjb25zdCB2b2lkKiBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnl0ZXMs
Ci0gICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVzX3dyaXR0ZW4sCi0gICAgICAgICAg
ICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVycmlkZTsKLSAgdm9pZCBDbG9zZSgpIG92ZXJyaWRl
OwotICBib29sIFNldFBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgb3ZlcnJpZGU7Ci0gIGJvb2wg
R2V0UG9zaXRpb24oc2l6ZV90KiBwb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gIGJvb2wgR2V0
U2l6ZShzaXplX3QqIHNpemUpIGNvbnN0IG92ZXJyaWRlOwotICBib29sIFJlc2VydmVTaXplKHNp
emVfdCBzaXplKSBvdmVycmlkZTsKLQotICBjaGFyKiBHZXRCdWZmZXIoKSB7IHJldHVybiBidWZm
ZXJfOyB9Ci0gIGNvbnN0IGNoYXIqIEdldEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZlcl87
IH0KLQotIHByb3RlY3RlZDoKLSAgTWVtb3J5U3RyZWFtQmFzZSgpOwotCi0gIHZpcnR1YWwgU3Ry
ZWFtUmVzdWx0IERvUmVzZXJ2ZShzaXplX3Qgc2l6ZSwgaW50KiBlcnJvcik7Ci0KLSAgLy8gSW52
YXJpYW50OiAwIDw9IHNlZWtfcG9zaXRpb24gPD0gZGF0YV9sZW5ndGhfIDw9IGJ1ZmZlcl9sZW5n
dGhfCi0gIGNoYXIqIGJ1ZmZlcl87Ci0gIHNpemVfdCBidWZmZXJfbGVuZ3RoXzsKLSAgc2l6ZV90
IGRhdGFfbGVuZ3RoXzsKLSAgc2l6ZV90IHNlZWtfcG9zaXRpb25fOwotCi0gcHJpdmF0ZToKLSAg
UlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihNZW1vcnlTdHJlYW1CYXNlKTsKLX07Ci0KLS8v
IE1lbW9yeVN0cmVhbSBkeW5hbWljYWxseSByZXNpemVzIHRvIGFjY29tb2RhdGUgd3JpdHRlbiBk
YXRhLgotCi1jbGFzcyBNZW1vcnlTdHJlYW0gOiBwdWJsaWMgTWVtb3J5U3RyZWFtQmFzZSB7Ci0g
cHVibGljOgotICBNZW1vcnlTdHJlYW0oKTsKLSAgZXhwbGljaXQgTWVtb3J5U3RyZWFtKGNvbnN0
IGNoYXIqIGRhdGEpOyAgLy8gQ2FsbHMgU2V0RGF0YShkYXRhLCBzdHJsZW4oZGF0YSkpCi0gIE1l
bW9yeVN0cmVhbShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsgIC8vIENhbGxzIFNl
dERhdGEoZGF0YSwgbGVuZ3RoKQotICB+TWVtb3J5U3RyZWFtKCkgb3ZlcnJpZGU7Ci0KLSAgdm9p
ZCBTZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwotCi0gcHJvdGVjdGVk
OgotICBTdHJlYW1SZXN1bHQgRG9SZXNlcnZlKHNpemVfdCBzaXplLCBpbnQqIGVycm9yKSBvdmVy
cmlkZTsKLX07Ci0KIC8vIEZpZm9CdWZmZXIgYWxsb3dzIGZvciBlZmZpY2llbnQsIHRocmVhZC1z
YWZlIGJ1ZmZlcmluZyBvZiBkYXRhIGJldHdlZW4KIC8vIHdyaXRlciBhbmQgcmVhZGVyLiBBcyB0
aGUgZGF0YSBjYW4gd3JhcCBhcm91bmQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLAogLy8gTWVtb3J5
U3RyZWFtQmFzZSBjYW4ndCBoZWxwIHVzIGhlcmUuCiAKLWNsYXNzIEZpZm9CdWZmZXIgOiBwdWJs
aWMgU3RyZWFtSW50ZXJmYWNlIHsKK2NsYXNzIEZpZm9CdWZmZXIgZmluYWwgOiBwdWJsaWMgU3Ry
ZWFtSW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIC8vIENyZWF0ZXMgYSBGSUZPIGJ1ZmZlciB3aXRo
IHRoZSBzcGVjaWZpZWQgY2FwYWNpdHkuCiAgIGV4cGxpY2l0IEZpZm9CdWZmZXIoc2l6ZV90IGxl
bmd0aCk7CkBAIC00NTUsMTEgKzMwNiwyOCBAQCBjbGFzcyBGaWZvQnVmZmVyIDogcHVibGljIFN0
cmVhbUludGVyZmFjZSB7CiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVzX3dyaXR0
ZW4sCiAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVycmlkZTsKICAgdm9pZCBD
bG9zZSgpIG92ZXJyaWRlOwotICBjb25zdCB2b2lkKiBHZXRSZWFkRGF0YShzaXplX3QqIGRhdGFf
bGVuKSBvdmVycmlkZTsKLSAgdm9pZCBDb25zdW1lUmVhZERhdGEoc2l6ZV90IHVzZWQpIG92ZXJy
aWRlOwotICB2b2lkKiBHZXRXcml0ZUJ1ZmZlcihzaXplX3QqIGJ1Zl9sZW4pIG92ZXJyaWRlOwot
ICB2b2lkIENvbnN1bWVXcml0ZUJ1ZmZlcihzaXplX3QgdXNlZCkgb3ZlcnJpZGU7Ci0gIGJvb2wg
R2V0V3JpdGVSZW1haW5pbmcoc2l6ZV90KiBzaXplKSBjb25zdCBvdmVycmlkZTsKKyAgLy8gR2V0
UmVhZERhdGEgcmV0dXJucyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgd2hpY2ggaXMgb3duZWQgYnkg
dGhlIHN0cmVhbS4KKyAgLy8gVGhlIGJ1ZmZlciBjb250YWlucyBkYXRhX2xlbiBieXRlcy4gIG51
bGwgaXMgcmV0dXJuZWQgaWYgbm8gZGF0YSBpcworICAvLyBhdmFpbGFibGUsIG9yIGlmIHRoZSBt
ZXRob2QgZmFpbHMuICBJZiB0aGUgY2FsbGVyIHByb2Nlc3NlcyB0aGUgZGF0YSwgaXQKKyAgLy8g
bXVzdCBjYWxsIENvbnN1bWVSZWFkRGF0YSB3aXRoIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VkIGJ5
dGVzLiAgR2V0UmVhZERhdGEKKyAgLy8gZG9lcyBub3QgcmVxdWlyZSBhIG1hdGNoaW5nIGNhbGwg
dG8gQ29uc3VtZVJlYWREYXRhIGlmIHRoZSBkYXRhIGlzIG5vdAorICAvLyBwcm9jZXNzZWQuICBS
ZWFkIGFuZCBDb25zdW1lUmVhZERhdGEgaW52YWxpZGF0ZSB0aGUgYnVmZmVyIHJldHVybmVkIGJ5
CisgIC8vIEdldFJlYWREYXRhLgorICBjb25zdCB2b2lkKiBHZXRSZWFkRGF0YShzaXplX3QqIGRh
dGFfbGVuKTsKKyAgdm9pZCBDb25zdW1lUmVhZERhdGEoc2l6ZV90IHVzZWQpOworICAvLyBHZXRX
cml0ZUJ1ZmZlciByZXR1cm5zIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB3aGljaCBpcyBvd25lZCBi
eSB0aGUgc3RyZWFtLgorICAvLyBUaGUgYnVmZmVyIGhhcyBhIGNhcGFjaXR5IG9mIGJ1Zl9sZW4g
Ynl0ZXMuICBudWxsIGlzIHJldHVybmVkIGlmIHRoZXJlIGlzCisgIC8vIG5vIGJ1ZmZlciBhdmFp
bGFibGUsIG9yIGlmIHRoZSBtZXRob2QgZmFpbHMuICBUaGUgY2FsbCBtYXkgd3JpdGUgZGF0YSB0
bworICAvLyB0aGUgYnVmZmVyLCBhbmQgdGhlbiBjYWxsIENvbnN1bWVXcml0ZUJ1ZmZlciB3aXRo
IHRoZSBudW1iZXIgb2YgYnl0ZXMKKyAgLy8gd3JpdHRlbi4gIEdldFdyaXRlQnVmZmVyIGRvZXMg
bm90IHJlcXVpcmUgYSBtYXRjaGluZyBjYWxsIHRvCisgIC8vIENvbnN1bWVXcml0ZURhdGEgaWYg
bm8gZGF0YSBpcyB3cml0dGVuLiAgV3JpdGUgYW5kCisgIC8vIENvbnN1bWVXcml0ZURhdGEgaW52
YWxpZGF0ZSB0aGUgYnVmZmVyIHJldHVybmVkIGJ5IEdldFdyaXRlQnVmZmVyLgorICB2b2lkKiBH
ZXRXcml0ZUJ1ZmZlcihzaXplX3QqIGJ1Zl9sZW4pOworICB2b2lkIENvbnN1bWVXcml0ZUJ1ZmZl
cihzaXplX3QgdXNlZCk7CisKKyAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgV3JpdGUoKS1hYmxl
IGJ5dGVzIHJlbWFpbmluZyBiZWZvcmUgZW5kLW9mLXN0cmVhbS4KKyAgLy8gUmV0dXJucyBmYWxz
ZSBpZiBub3Qga25vd24uCisgIGJvb2wgR2V0V3JpdGVSZW1haW5pbmcoc2l6ZV90KiBzaXplKSBj
b25zdDsKIAogIHByaXZhdGU6CiAgIC8vIEhlbHBlciBtZXRob2QgdGhhdCBpbXBsZW1lbnRzIFJl
YWRPZmZzZXQuIENhbGxlciBtdXN0IGFjcXVpcmUgYSBsb2NrCkBAIC00OTUsMjUgKzM2Myw2IEBA
IGNsYXNzIEZpZm9CdWZmZXIgOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKICAgUlRDX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihGaWZvQnVmZmVyKTsKIH07CiAKLS8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLQotLy8gRmxvdyBhdHRlbXB0cyB0byBtb3ZlIGJ5dGVzIGZyb20gc291cmNlIHRvIHNp
bmsgdmlhIGJ1ZmZlciBvZiBzaXplCi0vLyBidWZmZXJfbGVuLiAgVGhlIGZ1bmN0aW9uIHJldHVy
bnMgU1JfU1VDQ0VTUyB3aGVuIHNvdXJjZSByZWFjaGVzCi0vLyBlbmQtb2Ytc3RyZWFtIChyZXR1
cm5zIFNSX0VPUyksIGFuZCBhbGwgdGhlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiBzdWNjZXNzZnVs
Ci0vLyB0byBzaW5rLiAgQWx0ZXJuYXRlbHksIGlmIHNvdXJjZSByZXR1cm5zIFNSX0JMT0NLIG9y
IFNSX0VSUk9SLCBvciBpZiBzaW5rCi0vLyByZXR1cm5zIFNSX0JMT0NLLCBTUl9FUlJPUiwgb3Ig
U1JfRU9TLCB0aGVuIHRoZSBmdW5jdGlvbiBpbW1lZGlhdGVseSByZXR1cm5zCi0vLyB3aXRoIHRo
ZSB1bmV4cGVjdGVkIFN0cmVhbVJlc3VsdCB2YWx1ZS4KLS8vIGRhdGFfbGVuIGlzIHRoZSBsZW5n
dGggb2YgdGhlIHZhbGlkIGRhdGEgaW4gYnVmZmVyLiBpbiBjYXNlIG9mIGVycm9yCi0vLyB0aGlz
IGlzIHRoZSBkYXRhIHRoYXQgcmVhZCBmcm9tIHNvdXJjZSBidXQgY2FuJ3QgbW92ZSB0byBkZXN0
aW5hdGlvbi4KLS8vIGFzIGEgcGFzcyBpbiBwYXJhbWV0ZXIsIGl0IGluZGljYXRlcyBkYXRhIGlu
IGJ1ZmZlciB0aGF0IHNob3VsZCBtb3ZlIHRvIHNpbmsKLVN0cmVhbVJlc3VsdCBGbG93KFN0cmVh
bUludGVyZmFjZSogc291cmNlLAotICAgICAgICAgICAgICAgICAgY2hhciogYnVmZmVyLAotICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZW4sCi0gICAgICAgICAgICAgICAgICBTdHJl
YW1JbnRlcmZhY2UqIHNpbmssCi0gICAgICAgICAgICAgICAgICBzaXplX3QqIGRhdGFfbGVuID0g
bnVsbHB0cik7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQogfSAgLy8gbmFtZXNwYWNlIHJ0
YwogCiAjZW5kaWYgIC8vIFJUQ19CQVNFX1NUUkVBTV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyZWFtX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c3RyZWFtX3VuaXR0ZXN0LmNjCmluZGV4IDYxNjc4M2NiNGRjNzYwMTFmNjA3OTNhMDZhMjhiMDhm
Zjc5ODMyMGUuLjJjYTI1MjZjM2NhYWVhNzBmNDU0M2MwOTg2MmI0YmJjZmFmNGNkYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3N0cmVhbV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJlYW1fdW5pdHRlc3QuY2MKQEAgLTEwNSw1NiArMTA1LDUy
IEBAIFRFU1QoRmlmb0J1ZmZlclRlc3QsIFRlc3RBbGwpIHsKICAgY29uc3Qgdm9pZCogcTsKICAg
c2l6ZV90IGJ5dGVzOwogICBGaWZvQnVmZmVyIGJ1ZihrU2l6ZSk7Ci0gIFN0cmVhbUludGVyZmFj
ZSogc3RyZWFtID0gJmJ1ZjsKIAogICAvLyBUZXN0IGFzc3VtcHRpb25zIGFib3V0IGJhc2Ugc3Rh
dGUKLSAgRVhQRUNUX0VRKFNTX09QRU4sIHN0cmVhbS0+R2V0U3RhdGUoKSk7Ci0gIEVYUEVDVF9F
UShTUl9CTE9DSywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwot
ICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHN0cmVhbS0+R2V0UmVhZERhdGEoJmJ5dGVzKSk7Ci0g
IEVYUEVDVF9FUSgoc2l6ZV90KTAsIGJ5dGVzKTsKLSAgc3RyZWFtLT5Db25zdW1lUmVhZERhdGEo
MCk7Ci0gIEVYUEVDVF9UUlVFKG51bGxwdHIgIT0gc3RyZWFtLT5HZXRXcml0ZUJ1ZmZlcigmYnl0
ZXMpKTsKKyAgRVhQRUNUX0VRKFNTX09QRU4sIGJ1Zi5HZXRTdGF0ZSgpKTsKKyAgRVhQRUNUX0VR
KFNSX0JMT0NLLCBidWYuUmVhZChvdXQsIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQ
RUNUX1RSVUUobnVsbHB0ciAhPSBidWYuR2V0V3JpdGVCdWZmZXIoJmJ5dGVzKSk7CiAgIEVYUEVD
VF9FUShrU2l6ZSwgYnl0ZXMpOwotICBzdHJlYW0tPkNvbnN1bWVXcml0ZUJ1ZmZlcigwKTsKKyAg
YnVmLkNvbnN1bWVXcml0ZUJ1ZmZlcigwKTsKIAogICAvLyBUcnkgYSBmdWxsIHdyaXRlCi0gIEVY
UEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxs
cHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplLCAmYnl0
ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAKICAgLy8gVHJ5IGEg
d3JpdGUgdGhhdCBzaG91bGQgYmxvY2sKLSAgRVhQRUNUX0VRKFNSX0JMT0NLLCBzdHJlYW0tPldy
aXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9CTE9DSywg
YnVmLldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAKICAgLy8gVHJ5IGEgZnVs
bCByZWFkCi0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSwg
JmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQs
IGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAg
IEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUpKTsKIAogICAvLyBUcnkgYSByZWFk
IHRoYXQgc2hvdWxkIGJsb2NrCi0gIEVYUEVDVF9FUShTUl9CTE9DSywgc3RyZWFtLT5SZWFkKG91
dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIGJ1Zi5S
ZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogCiAgIC8vIFRyeSBhIHRvby1iaWcg
d3JpdGUKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplICog
MiwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUo
aW4sIGtTaXplICogMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShieXRlcywga1Np
emUpOwogCiAgIC8vIFRyeSBhIHRvby1iaWcgcmVhZAotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywg
c3RyZWFtLT5SZWFkKG91dCwga1NpemUgKiAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNU
X0VRKFNSX1NVQ0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUgKiAyLCAmYnl0ZXMsIG51bGxwdHIp
KTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4s
IG91dCwga1NpemUpKTsKIAogICAvLyBUcnkgc29tZSBzbWFsbCB3cml0ZXMgYW5kIHJlYWRzCi0g
IEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRl
cywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6
ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7
Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAvIDIsICZi
eXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBr
U2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRl
cyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUgLyAyKSk7Ci0gIEVYUEVD
VF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywgbnVs
bHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSAvIDIs
ICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7Ci0gIEVY
UEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywg
bnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSAv
IDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7Ci0g
IEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAvIDIsICZieXRl
cywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6
ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7
CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUgLyAyKSk7Ci0gIEVYUEVDVF9F
UShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0
cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6ZSAvIDIsICZi
eXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7CiAgIEVYUEVD
VF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUgLyAyKSk7CiAKQEAgLTE2Niw1MSArMTYyLDUx
IEBAIFRFU1QoRmlmb0J1ZmZlclRlc3QsIFRlc3RBbGwpIHsKICAgLy8gWFhYWFdXV1dXV1dXWFhY
WCA0NTY3MDEyMzQ1NjcwMTIzCiAgIC8vIFJSUlJYWFhYWFhYWFJSUlIgLi4uLjAxMjM0NTY3Li4u
LgogICAvLyAuLi4uUlJSUlJSUlIuLi4uIC4uLi4uLi4uLi4uLi4uLi4KLSAgRVhQRUNUX0VRKFNS
X1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplICogMyAvIDQsICZieXRlcywgbnVsbHB0
cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSAqIDMgLyA0
LCAmYnl0ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplICogMyAvIDQsIGJ5dGVzKTsK
LSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5
dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtT
aXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVz
KTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsKLSAgRVhQRUNU
X0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxs
cHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplIC8gMiwg
JmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKLSAgRVhQ
RUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gNCwgJmJ5dGVzLCBu
dWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplIC8g
NCwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDQsIGJ5dGVzKTsKICAg
RVhQRUNUX0VRKDAsIG1lbWNtcChpbiArIGtTaXplIC8gMiwgb3V0LCBrU2l6ZSAvIDQpKTsKLSAg
RVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVz
LCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXpl
IC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsK
LSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5
dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtT
aXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVz
KTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsKLSAgRVhQRUNU
X0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxs
cHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplIC8gMiwg
JmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKICAgRVhQ
RUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsKIAogICAvLyBVc2UgR2V0V3Jp
dGVCdWZmZXIgdG8gcmVzZXQgdGhlIHJlYWRfcG9zaXRpb24gZm9yIHRoZSBuZXh0IHRlc3RzCi0g
IHN0cmVhbS0+R2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKLSAgc3RyZWFtLT5Db25zdW1lV3JpdGVC
dWZmZXIoMCk7CisgIGJ1Zi5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOworICBidWYuQ29uc3VtZVdy
aXRlQnVmZmVyKDApOwogCiAgIC8vIFRyeSB1c2luZyBHZXRSZWFkRGF0YSB0byBkbyBhIGZ1bGwg
cmVhZAotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiwga1NpemUsICZi
eXRlcywgbnVsbHB0cikpOwotICBxID0gc3RyZWFtLT5HZXRSZWFkRGF0YSgmYnl0ZXMpOworICBF
WFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRy
KSk7CisgIHEgPSBidWYuR2V0UmVhZERhdGEoJmJ5dGVzKTsKICAgRVhQRUNUX1RSVUUobnVsbHB0
ciAhPSBxKTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1j
bXAocSwgaW4sIGtTaXplKSk7Ci0gIHN0cmVhbS0+Q29uc3VtZVJlYWREYXRhKGtTaXplKTsKLSAg
RVhQRUNUX0VRKFNSX0JMT0NLLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxs
cHRyKSk7CisgIGJ1Zi5Db25zdW1lUmVhZERhdGEoa1NpemUpOworICBFWFBFQ1RfRVEoU1JfQkxP
Q0ssIGJ1Zi5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogCiAgIC8vIFRyeSB1
c2luZyBHZXRSZWFkRGF0YSB0byBkbyBzb21lIHNtYWxsIHJlYWRzCi0gIEVYUEVDVF9FUShTUl9T
VUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7Ci0gIHEg
PSBzdHJlYW0tPkdldFJlYWREYXRhKCZieXRlcyk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBi
dWYuV3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgcSA9IGJ1Zi5HZXRSZWFk
RGF0YSgmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHEpOwogICBFWFBFQ1RfRVEo
a1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChxLCBpbiwga1NpemUgLyAyKSk7
Ci0gIHN0cmVhbS0+Q29uc3VtZVJlYWREYXRhKGtTaXplIC8gMik7Ci0gIHEgPSBzdHJlYW0tPkdl
dFJlYWREYXRhKCZieXRlcyk7CisgIGJ1Zi5Db25zdW1lUmVhZERhdGEoa1NpemUgLyAyKTsKKyAg
cSA9IGJ1Zi5HZXRSZWFkRGF0YSgmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHEp
OwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAo
cSwgaW4gKyBrU2l6ZSAvIDIsIGtTaXplIC8gMikpOwotICBzdHJlYW0tPkNvbnN1bWVSZWFkRGF0
YShrU2l6ZSAvIDIpOwotICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIHN0cmVhbS0+UmVhZChvdXQsIGtT
aXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgYnVmLkNvbnN1bWVSZWFkRGF0YShrU2l6ZSAvIDIp
OworICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIGJ1Zi5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVs
bHB0cikpOwogCiAgIC8vIFRyeSB1c2luZyBHZXRSZWFkRGF0YSBpbiBhIHdyYXBhcm91bmQgY2Fz
ZQogICAvLyBXV1dXV1dXV1dXV1dXV1dXIDAxMjM0NTY3ODlBQkNERUYKQEAgLTIxOCw0NiArMjE0
LDQ2IEBAIFRFU1QoRmlmb0J1ZmZlclRlc3QsIFRlc3RBbGwpIHsKICAgLy8gV1dXV1dXV1cuLi4u
WFhYWCAwMTIzNDU2Ny4uLi5DREVGCiAgIC8vIC4uLi4uLi4uLi4uLlJSUlIgMDEyMzQ1NjcuLi4u
Li4uLgogICAvLyBSUlJSUlJSUi4uLi4uLi4uIC4uLi4uLi4uLi4uLi4uLi4KLSAgRVhQRUNUX0VR
KFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsK
LSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplICogMyAvIDQs
ICZieXRlcywgbnVsbHB0cikpOwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0
ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKLSAgcSA9IHN0cmVhbS0+R2V0UmVh
ZERhdGEoJmJ5dGVzKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1Np
emUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQo
b3V0LCBrU2l6ZSAqIDMgLyA0LCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNUX0VRKFNSX1NV
Q0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgcSA9
IGJ1Zi5HZXRSZWFkRGF0YSgmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHEpOwog
ICBFWFBFQ1RfRVEoa1NpemUgLyA0LCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAocSwg
aW4gKyBrU2l6ZSAqIDMgLyA0LCBrU2l6ZSAvIDQpKTsKLSAgc3RyZWFtLT5Db25zdW1lUmVhZERh
dGEoa1NpemUgLyA0KTsKLSAgcSA9IHN0cmVhbS0+R2V0UmVhZERhdGEoJmJ5dGVzKTsKKyAgYnVm
LkNvbnN1bWVSZWFkRGF0YShrU2l6ZSAvIDQpOworICBxID0gYnVmLkdldFJlYWREYXRhKCZieXRl
cyk7CiAgIEVYUEVDVF9UUlVFKG51bGxwdHIgIT0gcSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIs
IGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChxLCBpbiwga1NpemUgLyAyKSk7Ci0gIHN0
cmVhbS0+Q29uc3VtZVJlYWREYXRhKGtTaXplIC8gMik7CisgIGJ1Zi5Db25zdW1lUmVhZERhdGEo
a1NpemUgLyAyKTsKIAogICAvLyBVc2UgR2V0V3JpdGVCdWZmZXIgdG8gcmVzZXQgdGhlIHJlYWRf
cG9zaXRpb24gZm9yIHRoZSBuZXh0IHRlc3RzCi0gIHN0cmVhbS0+R2V0V3JpdGVCdWZmZXIoJmJ5
dGVzKTsKLSAgc3RyZWFtLT5Db25zdW1lV3JpdGVCdWZmZXIoMCk7CisgIGJ1Zi5HZXRXcml0ZUJ1
ZmZlcigmYnl0ZXMpOworICBidWYuQ29uc3VtZVdyaXRlQnVmZmVyKDApOwogCiAgIC8vIFRyeSB1
c2luZyBHZXRXcml0ZUJ1ZmZlciB0byBkbyBhIGZ1bGwgd3JpdGUKLSAgcCA9IHN0cmVhbS0+R2V0
V3JpdGVCdWZmZXIoJmJ5dGVzKTsKKyAgcCA9IGJ1Zi5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOwog
ICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHApOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsK
ICAgbWVtY3B5KHAsIGluLCBrU2l6ZSk7Ci0gIHN0cmVhbS0+Q29uc3VtZVdyaXRlQnVmZmVyKGtT
aXplKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplLCAm
Ynl0ZXMsIG51bGxwdHIpKTsKKyAgYnVmLkNvbnN1bWVXcml0ZUJ1ZmZlcihrU2l6ZSk7CisgIEVY
UEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIp
KTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4s
IG91dCwga1NpemUpKTsKIAogICAvLyBUcnkgdXNpbmcgR2V0V3JpdGVCdWZmZXIgdG8gZG8gc29t
ZSBzbWFsbCB3cml0ZXMKLSAgcCA9IHN0cmVhbS0+R2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKKyAg
cCA9IGJ1Zi5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9
IHApOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgbWVtY3B5KHAsIGluLCBrU2l6ZSAv
IDIpOwotICBzdHJlYW0tPkNvbnN1bWVXcml0ZUJ1ZmZlcihrU2l6ZSAvIDIpOwotICBwID0gc3Ry
ZWFtLT5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOworICBidWYuQ29uc3VtZVdyaXRlQnVmZmVyKGtT
aXplIC8gMik7CisgIHAgPSBidWYuR2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKICAgRVhQRUNUX1RS
VUUobnVsbHB0ciAhPSBwKTsKICAgRVhQRUNUX0VRKGtTaXplIC8gMiwgYnl0ZXMpOwogICBtZW1j
cHkocCwgaW4gKyBrU2l6ZSAvIDIsIGtTaXplIC8gMik7Ci0gIHN0cmVhbS0+Q29uc3VtZVdyaXRl
QnVmZmVyKGtTaXplIC8gMik7Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQo
b3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIGJ1Zi5Db25zdW1lV3JpdGVCdWZmZXIo
a1NpemUgLyAyKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUs
ICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgRVhQRUNU
X0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSkpOwogCkBAIC0yNjcsNTMgKzI2Myw1MyBAQCBU
RVNUKEZpZm9CdWZmZXJUZXN0LCBUZXN0QWxsKSB7CiAgIC8vIC4uLi4uLi4uWFhYWFdXV1cgLi4u
Li4uLi44OUFCMDEyMwogICAvLyBXV1dXLi4uLlhYWFhYWFhYIDQ1NjcuLi4uODlBQjAxMjMKICAg
Ly8gUlJSUi4uLi5SUlJSUlJSUiAuLi4uLi4uLi4uLi4uLi4uCi0gIEVYUEVDVF9FUShTUl9TVUND
RVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAqIDMgLyA0LCAmYnl0ZXMsIG51bGxwdHIpKTsK
LSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5
dGVzLCBudWxscHRyKSk7Ci0gIHAgPSBzdHJlYW0tPkdldFdyaXRlQnVmZmVyKCZieXRlcyk7Cisg
IEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplICogMyAvIDQsICZieXRl
cywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6
ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOworICBwID0gYnVmLkdldFdyaXRlQnVmZmVyKCZieXRl
cyk7CiAgIEVYUEVDVF9UUlVFKG51bGxwdHIgIT0gcCk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDQs
IGJ5dGVzKTsKICAgbWVtY3B5KHAsIGluLCBrU2l6ZSAvIDQpOwotICBzdHJlYW0tPkNvbnN1bWVX
cml0ZUJ1ZmZlcihrU2l6ZSAvIDQpOwotICBwID0gc3RyZWFtLT5HZXRXcml0ZUJ1ZmZlcigmYnl0
ZXMpOworICBidWYuQ29uc3VtZVdyaXRlQnVmZmVyKGtTaXplIC8gNCk7CisgIHAgPSBidWYuR2V0
V3JpdGVCdWZmZXIoJmJ5dGVzKTsKICAgRVhQRUNUX1RSVUUobnVsbHB0ciAhPSBwKTsKICAgRVhQ
RUNUX0VRKGtTaXplIC8gMiwgYnl0ZXMpOwogICBtZW1jcHkocCwgaW4gKyBrU2l6ZSAvIDQsIGtT
aXplIC8gNCk7Ci0gIHN0cmVhbS0+Q29uc3VtZVdyaXRlQnVmZmVyKGtTaXplIC8gNCk7Ci0gIEVY
UEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAqIDMgLyA0LCAmYnl0
ZXMsIG51bGxwdHIpKTsKKyAgYnVmLkNvbnN1bWVXcml0ZUJ1ZmZlcihrU2l6ZSAvIDQpOworICBF
WFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6ZSAqIDMgLyA0LCAmYnl0ZXMs
IG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplICogMyAvIDQsIGJ5dGVzKTsKICAgRVhQRUNU
X0VRKDAsIG1lbWNtcChpbiArIGtTaXplIC8gMiwgb3V0LCBrU2l6ZSAvIDQpKTsKICAgRVhQRUNU
X0VRKDAsIG1lbWNtcChpbiwgb3V0ICsga1NpemUgLyA0LCBrU2l6ZSAvIDQpKTsKIAogICAvLyBD
aGVjayB0aGF0IHRoZSBzdHJlYW0gaXMgbm93IGVtcHR5Ci0gIEVYUEVDVF9FUShTUl9CTE9DSywg
c3RyZWFtLT5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEo
U1JfQkxPQ0ssIGJ1Zi5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogCiAgIC8v
IFRyeSBncm93aW5nIHRoZSBidWZmZXIKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+
V3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NF
U1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEo
a1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX1RSVUUoYnVmLlNldENhcGFjaXR5KGtTaXplICogMikp
OwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiArIGtTaXplLCBrU2l6
ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUo
aW4gKyBrU2l6ZSwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUs
IGJ5dGVzKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXpl
ICogMiwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVh
ZChvdXQsIGtTaXplICogMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAq
IDIsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAqIDIpKTsK
IAogICAvLyBUcnkgc2hyaW5raW5nIHRoZSBidWZmZXIKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1Ms
IHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNUX0VR
KFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogICBF
WFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX1RSVUUoYnVmLlNldENhcGFjaXR5KGtT
aXplKSk7Ci0gIEVYUEVDVF9FUShTUl9CTE9DSywgc3RyZWFtLT5Xcml0ZShpbiwga1NpemUsICZi
eXRlcywgbnVsbHB0cikpOwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5SZWFkKG91
dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIGJ1Zi5X
cml0ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VT
UywgYnVmLlJlYWQob3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShr
U2l6ZSwgYnl0ZXMpOwogICBFWFBFQ1RfRVEoMCwgbWVtY21wKGluLCBvdXQsIGtTaXplKSk7CiAK
ICAgLy8gV3JpdGUgdG8gdGhlIHN0cmVhbSwgY2xvc2UgaXQsIHJlYWQgdGhlIHJlbWFpbmluZyBi
eXRlcwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiwga1NpemUgLyAy
LCAmYnl0ZXMsIG51bGxwdHIpKTsKLSAgc3RyZWFtLT5DbG9zZSgpOwotICBFWFBFQ1RfRVEoU1Nf
Q0xPU0VELCBzdHJlYW0tPkdldFN0YXRlKCkpOwotICBFWFBFQ1RfRVEoU1JfRU9TLCBzdHJlYW0t
PldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwotICBFWFBFQ1RfRVEoU1Jf
U1VDQ0VTUywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsK
KyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMs
IG51bGxwdHIpKTsKKyAgYnVmLkNsb3NlKCk7CisgIEVYUEVDVF9FUShTU19DTE9TRUQsIGJ1Zi5H
ZXRTdGF0ZSgpKTsKKyAgRVhQRUNUX0VRKFNSX0VPUywgYnVmLldyaXRlKGluLCBrU2l6ZSAvIDIs
ICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0
LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlu
LCBvdXQsIGtTaXplIC8gMikpOwotICBFWFBFQ1RfRVEoU1JfRU9TLCBzdHJlYW0tPlJlYWQob3V0
LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfRU9TLCBidWYu
UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CiB9CiAKIFRFU1QoRmlmb0J1
ZmZlclRlc3QsIEZ1bGxCdWZmZXJDaGVjaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nX3RvX251bWJlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmlu
Z190b19udW1iZXIuY2MKaW5kZXggOTIwMTI0MmQ1ZjU3OGQ3ZjU1OGVmMWYwNzNhYzM1YjU1ODQ2
N2Q2OS4uNjM0NjUyYjgzZjZiZTJiZWEzNjdmYjkxMjhjMWRhNGRmZmQ5MTMwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Ry
aW5nX3RvX251bWJlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAK
ICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmgiCiAKKyNpbmNsdWRlIDxjdHlw
ZS5oPgogI2luY2x1ZGUgPGNlcnJubz4KICNpbmNsdWRlIDxjc3RkbGliPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJp
bmdfdG9fbnVtYmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmgKaW5kZXggN2VhOWYyNTFlZDQ2OGJiYjZhOGEw
Y2Y3NmM2ODg4ZDQ5MWMwMzA5ZS4uNGNiNTIxNTk1ZGVmYWRkMmYxMGJmZDZkYWI0YTM4ZDE1NTM2
MTdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3RyaW5nX3RvX251bWJlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ190b19udW1iZXIuaApAQCAtMTMs
NiArMTMsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvc3RyaW5nZW5jb2RlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmNjCmluZGV4IGE1Nzg0NWZmZGFkNWE4MGIw
YmZjMjRmOWI1NDU5MjJiMDY0ZWYyNmIuLmZjNGUzYmM4ZTczMTVjYzcyMzVjMWYzMjc2OWE1YTYx
MzUyNTg1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3N0cmluZ2VuY29kZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdlbmNvZGUuY2MKQEAgLTEwLDgg
KzEwLDcgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogCi0jaW5jbHVk
ZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjc3RkaW8+CiAKICNp
bmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKQEAgLTUxLDY3ICs1MCw2IEBAIHNpemVfdCB1cmxfZGVjb2RlKGNoYXIqIGJ1ZmZlciwKICAg
cmV0dXJuIGJ1ZnBvczsKIH0KIAotc2l6ZV90IHV0ZjhfZGVjb2RlKGNvbnN0IGNoYXIqIHNvdXJj
ZSwgc2l6ZV90IHNyY2xlbiwgdW5zaWduZWQgbG9uZyogdmFsdWUpIHsKLSAgY29uc3QgdW5zaWdu
ZWQgY2hhciogcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHNvdXJj
ZSk7Ci0gIGlmICgoc1swXSAmIDB4ODApID09IDB4MDApIHsgIC8vIENoZWNrIHNbMF0gPT0gMHh4
eHh4eHgKLSAgICAqdmFsdWUgPSBzWzBdOwotICAgIHJldHVybiAxOwotICB9Ci0gIGlmICgoc3Jj
bGVuIDwgMikgfHwgKChzWzFdICYgMHhDMCkgIT0gMHg4MCkpIHsgIC8vIENoZWNrIHNbMV0gIT0g
MTB4eHh4eHgKLSAgICByZXR1cm4gMDsKLSAgfQotICAvLyBBY2N1bXVsYXRlIHRoZSB0cmFpbGVy
IGJ5dGUgdmFsdWVzIGluIHZhbHVlMTYsIGFuZCBjb21iaW5lIGl0IHdpdGggdGhlCi0gIC8vIHJl
bGV2YW50IGJpdHMgZnJvbSBzWzBdLCBvbmNlIHdlJ3ZlIGRldGVybWluZWQgdGhlIHNlcXVlbmNl
IGxlbmd0aC4KLSAgdW5zaWduZWQgbG9uZyB2YWx1ZTE2ID0gKHNbMV0gJiAweDNGKTsKLSAgaWYg
KChzWzBdICYgMHhFMCkgPT0gMHhDMCkgeyAgLy8gQ2hlY2sgc1swXSA9PSAxMTB4eHh4eAotICAg
ICp2YWx1ZSA9ICgoc1swXSAmIDB4MUYpIDw8IDYpIHwgdmFsdWUxNjsKLSAgICByZXR1cm4gMjsK
LSAgfQotICBpZiAoKHNyY2xlbiA8IDMpIHx8ICgoc1syXSAmIDB4QzApICE9IDB4ODApKSB7ICAv
LyBDaGVjayBzWzJdICE9IDEweHh4eHh4Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgdmFsdWUxNiA9
ICh2YWx1ZTE2IDw8IDYpIHwgKHNbMl0gJiAweDNGKTsKLSAgaWYgKChzWzBdICYgMHhGMCkgPT0g
MHhFMCkgeyAgLy8gQ2hlY2sgc1swXSA9PSAxMTEweHh4eAotICAgICp2YWx1ZSA9ICgoc1swXSAm
IDB4MEYpIDw8IDEyKSB8IHZhbHVlMTY7Ci0gICAgcmV0dXJuIDM7Ci0gIH0KLSAgaWYgKChzcmNs
ZW4gPCA0KSB8fCAoKHNbM10gJiAweEMwKSAhPSAweDgwKSkgeyAgLy8gQ2hlY2sgc1szXSAhPSAx
MHh4eHh4eAotICAgIHJldHVybiAwOwotICB9Ci0gIHZhbHVlMTYgPSAodmFsdWUxNiA8PCA2KSB8
IChzWzNdICYgMHgzRik7Ci0gIGlmICgoc1swXSAmIDB4RjgpID09IDB4RjApIHsgIC8vIENoZWNr
IHNbMF0gPT0gMTExMTB4eHgKLSAgICAqdmFsdWUgPSAoKHNbMF0gJiAweDA3KSA8PCAxOCkgfCB2
YWx1ZTE2OwotICAgIHJldHVybiA0OwotICB9Ci0gIHJldHVybiAwOwotfQotCi1zaXplX3QgdXRm
OF9lbmNvZGUoY2hhciogYnVmZmVyLCBzaXplX3QgYnVmbGVuLCB1bnNpZ25lZCBsb25nIHZhbHVl
KSB7Ci0gIGlmICgodmFsdWUgPD0gMHg3RikgJiYgKGJ1ZmxlbiA+PSAxKSkgewotICAgIGJ1ZmZl
clswXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlKTsKLSAgICByZXR1cm4gMTsK
LSAgfQotICBpZiAoKHZhbHVlIDw9IDB4N0ZGKSAmJiAoYnVmbGVuID49IDIpKSB7Ci0gICAgYnVm
ZmVyWzBdID0gMHhDMCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlID4+IDYpOwot
ICAgIGJ1ZmZlclsxXSA9IDB4ODAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZSAm
IDB4M0YpOwotICAgIHJldHVybiAyOwotICB9Ci0gIGlmICgodmFsdWUgPD0gMHhGRkZGKSAmJiAo
YnVmbGVuID49IDMpKSB7Ci0gICAgYnVmZmVyWzBdID0gMHhFMCB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KHZhbHVlID4+IDEyKTsKLSAgICBidWZmZXJbMV0gPSAweDgwIHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oKHZhbHVlID4+IDYpICYgMHgzRik7Ci0gICAgYnVmZmVyWzJdID0g
MHg4MCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlICYgMHgzRik7Ci0gICAgcmV0
dXJuIDM7Ci0gIH0KLSAgaWYgKCh2YWx1ZSA8PSAweDFGRkZGRikgJiYgKGJ1ZmxlbiA+PSA0KSkg
ewotICAgIGJ1ZmZlclswXSA9IDB4RjAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1
ZSA+PiAxOCk7Ci0gICAgYnVmZmVyWzFdID0gMHg4MCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KCh2YWx1ZSA+PiAxMikgJiAweDNGKTsKLSAgICBidWZmZXJbMl0gPSAweDgwIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oKHZhbHVlID4+IDYpICYgMHgzRik7Ci0gICAgYnVmZmVyWzNd
ID0gMHg4MCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlICYgMHgzRik7Ci0gICAg
cmV0dXJuIDQ7Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBjb25zdCBjaGFyIEhFWFtd
ID0gIjAxMjM0NTY3ODlhYmNkZWYiOwogCiBjaGFyIGhleF9lbmNvZGUodW5zaWduZWQgY2hhciB2
YWwpIHsKQEAgLTEyMiw5ICs2MCw5IEBAIGNoYXIgaGV4X2VuY29kZSh1bnNpZ25lZCBjaGFyIHZh
bCkgewogYm9vbCBoZXhfZGVjb2RlKGNoYXIgY2gsIHVuc2lnbmVkIGNoYXIqIHZhbCkgewogICBp
ZiAoKGNoID49ICcwJykgJiYgKGNoIDw9ICc5JykpIHsKICAgICAqdmFsID0gY2ggLSAnMCc7Ci0g
IH0gZWxzZSBpZiAoKGNoID49ICdBJykgJiYgKGNoIDw9ICdaJykpIHsKKyAgfSBlbHNlIGlmICgo
Y2ggPj0gJ0EnKSAmJiAoY2ggPD0gJ0YnKSkgewogICAgICp2YWwgPSAoY2ggLSAnQScpICsgMTA7
Ci0gIH0gZWxzZSBpZiAoKGNoID49ICdhJykgJiYgKGNoIDw9ICd6JykpIHsKKyAgfSBlbHNlIGlm
ICgoY2ggPj0gJ2EnKSAmJiAoY2ggPD0gJ2YnKSkgewogICAgICp2YWwgPSAoY2ggLSAnYScpICsg
MTA7CiAgIH0gZWxzZSB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJp
bmdlbmNvZGUuaAppbmRleCA1ZDQzNmRmZDU3YmEwOGE1NzMwN2Y1YWMzZDMxMDNlM2ZjZTZlMDgx
Li4wOWJmNzdmNDQ2MTUyNWEzYmFmYzFmYTFmYWNhNjljMjk2ZTJkMmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdl
bmNvZGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zdHJpbmdlbmNvZGUuaApAQCAtMTEsOSArMTEsMTIgQEAKICNpZm5kZWYgUlRDX0JB
U0VfU1RSSU5HRU5DT0RFX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1NUUklOR0VOQ09ERV9IXwogCisj
aW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJp
bmdfdG9fbnVtYmVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2VuY29kZV91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2VuY29k
ZV91bml0dGVzdC5jYwppbmRleCA5YmRjNTkyYzI5YWEwNjYzNzc4YWUyYzdkODZkY2E2MDE4MTli
MWY0Li5mMjFjNGNiNzhjNmY4NDg0Zjc4NTM1NzI4NDBiZWEyOTMyOTJiOWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJp
bmdlbmNvZGVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlX3VuaXR0ZXN0LmNjCkBAIC0xNDEsNyAr
MTQxLDggQEAgVEVTVF9GKEhleEVuY29kZVRlc3QsIFRlc3REZWNvZGVUb29TaG9ydCkgewogCiAv
LyBUZXN0IHRoYXQgZGVjb2Rpbmcgbm9uLWhleCBkYXRhIGZhaWxzLgogVEVTVF9GKEhleEVuY29k
ZVRlc3QsIFRlc3REZWNvZGVCb2d1c0RhdGEpIHsKLSAgZGVjX3Jlc18gPSBoZXhfZGVjb2RlX3dp
dGhfZGVsaW1pdGVyKGRlY29kZWRfLCBzaXplb2YoZGVjb2RlZF8pLCAieHl6IiwgMywgMCk7Cisg
IGRlY19yZXNfID0KKyAgICAgIGhleF9kZWNvZGVfd2l0aF9kZWxpbWl0ZXIoZGVjb2RlZF8sIHNp
emVvZihkZWNvZGVkXyksICJheHl6IiwgNCwgMCk7CiAgIEFTU0VSVF9FUSgwVSwgZGVjX3Jlc18p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9zdHJpbmdzL2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdzL2F1ZGlv
X2Zvcm1hdF90b19zdHJpbmcuY2MKaW5kZXggYTE0OTM0NDE5ODVmZGM5ZDcyZWUyNTQxMjE0NjBh
MjU4Y2Y2OTdmMy4uN2U5MWMzYjQ5ZGQ0MTU1ODVjMThkY2Y2NTdlMzM5M2I5MjFkZWYxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3RyaW5ncy9hdWRpb19mb3JtYXRfdG9fc3RyaW5nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3MvYXVkaW9fZm9ybWF0
X3RvX3N0cmluZy5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Ry
aW5ncy9hdWRpb19mb3JtYXRfdG9fc3RyaW5nLmgiCiAKKyNpbmNsdWRlIDx1dGlsaXR5PgorCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogCiBuYW1lc3BhY2Ug
cnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVy
LmNjCmluZGV4IDJmZDRhYmExOWNkY2RiZDMyZGZlOWU5OTlhMDliOGZmOTJlMzYzOGQuLmFkZjRm
YTllODE5YTM4OWRkNWIxYzJmZTllZGZmOTM2MGRkYzFiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3Mvc3RyaW5n
X2J1aWxkZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5jYwpAQCAtMTAsNiArMTAsMTIgQEAK
IAogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAorI2luY2x1
ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPGNzdHJpbmc+CisKKyNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgorCiBu
YW1lc3BhY2UgcnRjIHsKIAogU2ltcGxlU3RyaW5nQnVpbGRlcjo6U2ltcGxlU3RyaW5nQnVpbGRl
cihydGM6OkFycmF5VmlldzxjaGFyPiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWls
ZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgKaW5kZXggMTg2YzJmN2I5ZDc5ODE2ZTMxYWNjMDJl
YzUwZGFlYTZmZjZkOGZmMi4uMjcwMDFkMWJlNWEzYzEyNTg4ODMwYWIzZGM2MGZjYTQ2YTczMzU4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIu
aApAQCAtMTIsMTMgKzEyLDExIEBACiAjZGVmaW5lIFJUQ19CQVNFX1NUUklOR1NfU1RSSU5HX0JV
SUxERVJfSF8KIAogI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1
ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L3N0cmluZ192aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1h
eC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ3V0aWxzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3V0aWxzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHMuY2MKaW5k
ZXggNmJhZGRkMTFiZGQzNmQxOTZkYjlmZTMxY2MyOTRhOGZlYTRjYTUzZS4uYzgwOGViMmNjNDFl
ZTYwN2MzYjllNzNhOWVjNjBkYjc2MmVlZjFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHMuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5n
dXRpbHMuY2MKQEAgLTcsOTcgKzcsMjkgQEAKICAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CiAgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KLSNpbmNsdWRl
IDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0
YyB7CiAKLWJvb2wgbWVtb3J5X2NoZWNrKGNvbnN0IHZvaWQqIG1lbW9yeSwgaW50IGMsIHNpemVf
dCBjb3VudCkgewotICBjb25zdCBjaGFyKiBjaGFyX21lbW9yeSA9IHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihtZW1vcnkpOwotICBjaGFyIGNoYXJfYyA9IHN0YXRpY19jYXN0PGNoYXI+KGMpOwot
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICBpZiAoY2hhcl9tZW1v
cnlbaV0gIT0gY2hhcl9jKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0gIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIHN0cmluZ19tYXRjaChjb25zdCBjaGFyKiB0YXJnZXQsIGNv
bnN0IGNoYXIqIHBhdHRlcm4pIHsKLSAgd2hpbGUgKCpwYXR0ZXJuKSB7Ci0gICAgaWYgKCpwYXR0
ZXJuID09ICcqJykgewotICAgICAgaWYgKCEqKytwYXR0ZXJuKSB7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgfQotICAgICAgd2hpbGUgKCp0YXJnZXQpIHsKLSAgICAgICAgaWYgKCh0b3Vw
cGVyKCpwYXR0ZXJuKSA9PSB0b3VwcGVyKCp0YXJnZXQpKSAmJgotICAgICAgICAgICAgc3RyaW5n
X21hdGNoKHRhcmdldCArIDEsIHBhdHRlcm4gKyAxKSkgewotICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0gICAgICAgICsrdGFyZ2V0OwotICAgICAgfQotICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICBpZiAodG91cHBlcigqcGF0dGVybikgIT0gdG91cHBl
cigqdGFyZ2V0KSkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICArK3Rh
cmdldDsKLSAgICAgICsrcGF0dGVybjsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuICEqdGFyZ2V0Owot
fQotCi0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotaW50IGFzY2lpX3N0cmluZ19jb21wYXJlKGNv
bnN0IHdjaGFyX3QqIHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMy
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIENoYXJhY3RlclRyYW5zZm9ybWF0aW9uIHRyYW5zZm9ybWF0aW9uKSB7Ci0gIHdjaGFy
X3QgYzEsIGMyOwotICB3aGlsZSAodHJ1ZSkgewotICAgIGlmIChuLS0gPT0gMCkKLSAgICAgIHJl
dHVybiAwOwotICAgIGMxID0gdHJhbnNmb3JtYXRpb24oKnMxKTsKLSAgICAvLyBEb3VibGUgY2hl
Y2sgdGhhdCBjaGFyYWN0ZXJzIGFyZSBub3QgVVRGLTgKLSAgICBSVENfRENIRUNLX0xUKCpzMiwg
MTI4KTsKLSAgICAvLyBOb3RlOiAqczIgZ2V0cyBpbXBsaWNpdGx5IHByb21vdGVkIHRvIHdjaGFy
X3QKLSAgICBjMiA9IHRyYW5zZm9ybWF0aW9uKCpzMik7Ci0gICAgaWYgKGMxICE9IGMyKQotICAg
ICAgcmV0dXJuIChjMSA8IGMyKSA/IC0xIDogMTsKLSAgICBpZiAoIWMxKQotICAgICAgcmV0dXJu
IDA7Ci0gICAgKytzMTsKLSAgICArK3MyOwotICB9Ci19Ci0KLXNpemVfdCBhc2NjcHluKHdjaGFy
X3QqIGJ1ZmZlciwKK3NpemVfdCBzdHJjcHluKGNoYXIqIGJ1ZmZlciwKICAgICAgICAgICAgICAg
IHNpemVfdCBidWZsZW4sCiAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzb3VyY2UsCi0gICAg
ICAgICAgICAgICBzaXplX3Qgc3JjbGVuKSB7CisgICAgICAgICAgICAgICBzaXplX3Qgc3JjbGVu
IC8qID0gU0laRV9VTktOT1dOICovKSB7CiAgIGlmIChidWZsZW4gPD0gMCkKICAgICByZXR1cm4g
MDsKIAogICBpZiAoc3JjbGVuID09IFNJWkVfVU5LTk9XTikgewotICAgIHNyY2xlbiA9IHN0cmxl
bm4oc291cmNlLCBidWZsZW4gLSAxKTsKLSAgfSBlbHNlIGlmIChzcmNsZW4gPj0gYnVmbGVuKSB7
CisgICAgc3JjbGVuID0gc3RybGVuKHNvdXJjZSk7CisgIH0KKyAgaWYgKHNyY2xlbiA+PSBidWZs
ZW4pIHsKICAgICBzcmNsZW4gPSBidWZsZW4gLSAxOwogICB9Ci0jaWYgUlRDX0RDSEVDS19JU19P
TgotICAvLyBEb3VibGUgY2hlY2sgdGhhdCBjaGFyYWN0ZXJzIGFyZSBub3QgVVRGLTgKLSAgZm9y
IChzaXplX3QgcG9zID0gMDsgcG9zIDwgc3JjbGVuOyArK3BvcykKLSAgICBSVENfRENIRUNLX0xU
KHNvdXJjZVtwb3NdLCAxMjgpOwotI2VuZGlmCi0gIHN0ZDo6Y29weShzb3VyY2UsIHNvdXJjZSAr
IHNyY2xlbiwgYnVmZmVyKTsKKyAgbWVtY3B5KGJ1ZmZlciwgc291cmNlLCBzcmNsZW4pOwogICBi
dWZmZXJbc3JjbGVuXSA9IDA7CiAgIHJldHVybiBzcmNsZW47CiB9CiAKLSNlbmRpZiAgLy8gV0VC
UlRDX1dJTgotCiB2b2lkIHJlcGxhY2Vfc3Vic3Rycyhjb25zdCBjaGFyKiBzZWFyY2gsCiAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc2VhcmNoX2xlbiwKICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHJlcGxhY2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlscy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaAppbmRl
eCAyNmM0NjI3ZDVjYTU5ODAzYTRlM2ZiNWRhMjk3Nzg2M2JjYTk3OTcyLi5jOWRhYmZiOGFhYWZi
ODViNWViYjI4ZjJmMmI5NjM3ZTc3N2Q0MzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlscy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3V0
aWxzLmgKQEAgLTEzLDggKzEzLDcgQEAKIAogI2lmICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJ
TEQpCiAjaW5jbHVkZSA8Y3R5cGUuaD4KLSNlbmRpZgotCisjZW5kaWYgLy8gIWRlZmluZWQoV0VC
UlRDX1dFQktJVF9CVUlMRCkKICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpby5o
PgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMjMsNiArMjIsNyBAQAogI2luY2x1ZGUgPG1hbGxv
Yy5oPgogI2luY2x1ZGUgPHdjaGFyLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgorCiAjZGVmaW5l
IGFsbG9jYSBfYWxsb2NhCiAjZW5kaWYgIC8vIFdFQlJUQ19XSU4KIApAQCAtMzIsNiArMzIsNyBA
QAogI2Vsc2UgIC8vIEJTRAogI2luY2x1ZGUgPGFsbG9jYS5oPgogI2VuZGlmICAvLyAhQlNECisj
aW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmICAvLyBXRUJSVENfUE9TSVgKIAogI2luY2x1ZGUg
PHN0cmluZz4KQEAgLTQzLDQ5ICs0NCw2IEBACiAjZGVmaW5lIFNUQUNLX0FSUkFZKFRZUEUsIExF
TikgXAogICBzdGF0aWNfY2FzdDxUWVBFKj4oOjphbGxvY2EoKExFTikgKiBzaXplb2YoVFlQRSkp
KQogCi1uYW1lc3BhY2UgcnRjIHsKLQotLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzaW1wbGUg
d2lsZGNhcmQgcGF0dGVybiBtYXRjaGVzIHRhcmdldC4KLS8vIEFscGhhIGNoYXJhY3RlcnMgaW4g
cGF0dGVybiBtYXRjaCBjYXNlLWluc2Vuc2l0aXZlbHkuCi0vLyBBc3Rlcmlza3MgaW4gcGF0dGVy
biBtYXRjaCAwIG9yIG1vcmUgY2hhcmFjdGVycy4KLS8vIEV4OiBzdHJpbmdfbWF0Y2goInd3dy5U
RVNULkdPT0dMRS5DT00iLCAid3d3LiouY29tIikgLT4gdHJ1ZQotYm9vbCBzdHJpbmdfbWF0Y2go
Y29uc3QgY2hhciogdGFyZ2V0LCBjb25zdCBjaGFyKiBwYXR0ZXJuKTsKLQotfSAgLy8gbmFtZXNw
YWNlIHJ0YwotCi0jaWYgIWRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKLS8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KLS8vIFJlbmFtZSBhIGZldyBjb21tb24gc3RyaW5nIGZ1bmN0aW9ucyBzbyB0
aGV5IGFyZSBjb25zaXN0ZW50IGFjcm9zcyBwbGF0Zm9ybXMuCi0vLyB0b2xvd2VyY2FzZSBpcyBs
aWtlIHRvbG93ZXIsIGJ1dCBub3QgY29tcGF0aWJsZSB3aXRoIGVuZC1vZi1maWxlIHZhbHVlCi0v
LwotLy8gSXQncyBub3QgY2xlYXIgaWYgd2Ugd2lsbCBldmVyIHVzZSB3Y2hhcl90IHN0cmluZ3Mg
b24gdW5peC4gIEluIHRoZW9yeSwKLS8vIGFsbCBzdHJpbmdzIHNob3VsZCBiZSBVdGY4IGFsbCB0
aGUgdGltZSwgZXhjZXB0IHdoZW4gaW50ZXJmYWNpbmcgd2l0aCBXaW4zMgotLy8gQVBJcyB0aGF0
IHJlcXVpcmUgVXRmMTYuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1pbmxpbmUgY2hhciB0b2xv
d2VyY2FzZShjaGFyIGMpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KHRvbG93ZXIoYykp
OwotfQotI2VuZGlmIC8vICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCi0KLSNpZiBkZWZp
bmVkKFdFQlJUQ19XSU4pCi0KLWlubGluZSB3Y2hhcl90IHRvbG93ZXJjYXNlKHdjaGFyX3QgYykg
ewotICByZXR1cm4gc3RhdGljX2Nhc3Q8d2NoYXJfdD4odG93bG93ZXIoYykpOwotfQotCi0jZW5k
aWYgIC8vIFdFQlJUQ19XSU4KLQotI2lmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQotCi1pbmxpbmUg
aW50IF9zdHJpY21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4g
c3RyY2FzZWNtcChzMSwgczIpOwotfQotaW5saW5lIGludCBfc3RybmljbXAoY29uc3QgY2hhciog
czEsIGNvbnN0IGNoYXIqIHMyLCBzaXplX3QgbikgewotICByZXR1cm4gc3RybmNhc2VjbXAoczEs
IHMyLCBuKTsKLX0KLQotI2VuZGlmICAvLyBXRUJSVENfUE9TSVgKLQogLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwogLy8gVHJhaXRzIHNpbXBsaWZpZXMgcG9ydGluZyBzdHJpbmcgZnVuY3Rpb25zIHRv
IGJlIENUWVBFLWFnbm9zdGljCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC05NCwxOTEgKzUy
LDEyIEBAIG5hbWVzcGFjZSBydGMgewogCiBjb25zdCBzaXplX3QgU0laRV9VTktOT1dOID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PigtMSk7CiAKLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4KLXN0cnVjdCBU
cmFpdHMgewotICAvLyBTVEwgc3RyaW5nIHR5cGUKLSAgLy8gdHlwZWRlZiBYWFggc3RyaW5nOwot
ICAvLyBOdWxsLXRlcm1pbmF0ZWQgc3RyaW5nCi0gIC8vIGlubGluZSBzdGF0aWMgY29uc3QgQ1RZ
UEUqIGVtcHR5X3N0cigpOwotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gU3RyaW5n
IHV0aWxpdGllcyB3aGljaCB3b3JrIHdpdGggY2hhciBvciB3Y2hhcl90Ci0vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0KLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4KLWlubGluZSBjb25zdCBDVFlQRSog
bm9ubnVsbChjb25zdCBDVFlQRSogc3RyLCBjb25zdCBDVFlQRSogZGVmX3N0ciA9IG51bGxwdHIp
IHsKLSAgcmV0dXJuIHN0ciA/IHN0ciA6IChkZWZfc3RyID8gZGVmX3N0ciA6IFRyYWl0czxDVFlQ
RT46OmVtcHR5X3N0cigpKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIENUWVBFPgotY29uc3QgQ1RZ
UEUqIHN0cmNocihjb25zdCBDVFlQRSogc3RyLCBjb25zdCBDVFlQRSogY2hzKSB7Ci0gIGZvciAo
c2l6ZV90IGkgPSAwOyBzdHJbaV07ICsraSkgewotICAgIGZvciAoc2l6ZV90IGogPSAwOyBjaHNb
al07ICsraikgewotICAgICAgaWYgKHN0cltpXSA9PSBjaHNbal0pIHsKLSAgICAgICAgcmV0dXJu
IHN0ciArIGk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJldHVybiAwOwotfQotCi10ZW1wbGF0
ZSA8Y2xhc3MgQ1RZUEU+Ci1jb25zdCBDVFlQRSogc3RyY2hybihjb25zdCBDVFlQRSogc3RyLCBz
aXplX3Qgc2xlbiwgQ1RZUEUgY2gpIHsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzbGVuICYm
IHN0cltpXTsgKytpKSB7Ci0gICAgaWYgKHN0cltpXSA9PSBjaCkgewotICAgICAgcmV0dXJuIHN0
ciArIGk7Ci0gICAgfQotICB9Ci0gIHJldHVybiAwOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQ1RZ
UEU+Ci1zaXplX3Qgc3RybGVubihjb25zdCBDVFlQRSogYnVmZmVyLCBzaXplX3QgYnVmbGVuKSB7
Ci0gIHNpemVfdCBidWZwb3MgPSAwOwotICB3aGlsZSAoYnVmZmVyW2J1ZnBvc10gJiYgKGJ1ZnBv
cyA8IGJ1ZmxlbikpIHsKLSAgICArK2J1ZnBvczsKLSAgfQotICByZXR1cm4gYnVmcG9zOwotfQot
Ci0vLyBTYWZlIHZlcnNpb25zIG9mIHN0cm5jcHksIHN0cm5jYXQsIHNucHJpbnRmIGFuZCB2c25w
cmludGYgdGhhdCBhbHdheXMKLS8vIG51bGwtdGVybWluYXRlLgotCi10ZW1wbGF0ZSA8Y2xhc3Mg
Q1RZUEU+Ci1zaXplX3Qgc3RyY3B5bihDVFlQRSogYnVmZmVyLAotICAgICAgICAgICAgICAgc2l6
ZV90IGJ1ZmxlbiwKLSAgICAgICAgICAgICAgIGNvbnN0IENUWVBFKiBzb3VyY2UsCi0gICAgICAg
ICAgICAgICBzaXplX3Qgc3JjbGVuID0gU0laRV9VTktOT1dOKSB7Ci0gIGlmIChidWZsZW4gPD0g
MCkKLSAgICByZXR1cm4gMDsKLQotICBpZiAoc3JjbGVuID09IFNJWkVfVU5LTk9XTikgewotICAg
IHNyY2xlbiA9IHN0cmxlbm4oc291cmNlLCBidWZsZW4gLSAxKTsKLSAgfSBlbHNlIGlmIChzcmNs
ZW4gPj0gYnVmbGVuKSB7Ci0gICAgc3JjbGVuID0gYnVmbGVuIC0gMTsKLSAgfQotICBtZW1jcHko
YnVmZmVyLCBzb3VyY2UsIHNyY2xlbiAqIHNpemVvZihDVFlQRSkpOwotICBidWZmZXJbc3JjbGVu
XSA9IDA7Ci0gIHJldHVybiBzcmNsZW47Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4KLXNp
emVfdCBzdHJjYXRuKENUWVBFKiBidWZmZXIsCi0gICAgICAgICAgICAgICBzaXplX3QgYnVmbGVu
LAotICAgICAgICAgICAgICAgY29uc3QgQ1RZUEUqIHNvdXJjZSwKLSAgICAgICAgICAgICAgIHNp
emVfdCBzcmNsZW4gPSBTSVpFX1VOS05PV04pIHsKLSAgaWYgKGJ1ZmxlbiA8PSAwKQotICAgIHJl
dHVybiAwOwotCi0gIHNpemVfdCBidWZwb3MgPSBzdHJsZW5uKGJ1ZmZlciwgYnVmbGVuIC0gMSk7
Ci0gIHJldHVybiBidWZwb3MgKyBzdHJjcHluKGJ1ZmZlciArIGJ1ZnBvcywgYnVmbGVuIC0gYnVm
cG9zLCBzb3VyY2UsIHNyY2xlbik7Ci19Ci0KLS8vIFNvbWUgY29tcGlsZXJzIChjbGFuZyBzcGVj
aWZpY2FsbHkpIHJlcXVpcmUgdnNwcmludGZuIGJlIGRlZmluZWQgYmVmb3JlCi0vLyBzcHJpbnRm
bi4KLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4KLXNpemVfdCB2c3ByaW50Zm4oQ1RZUEUqIGJ1ZmZl
ciwKLSAgICAgICAgICAgICAgICAgc2l6ZV90IGJ1ZmxlbiwKLSAgICAgICAgICAgICAgICAgY29u
c3QgQ1RZUEUqIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7Ci0gIGlu
dCBsZW4gPSB2c25wcmludGYoYnVmZmVyLCBidWZsZW4sIGZvcm1hdCwgYXJncyk7Ci0gIGlmICgo
bGVuIDwgMCkgfHwgKHN0YXRpY19jYXN0PHNpemVfdD4obGVuKSA+PSBidWZsZW4pKSB7Ci0gICAg
bGVuID0gc3RhdGljX2Nhc3Q8aW50PihidWZsZW4gLSAxKTsKLSAgICBidWZmZXJbbGVuXSA9IDA7
Ci0gIH0KLSAgcmV0dXJuIGxlbjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIENUWVBFPgotc2l6ZV90
IHNwcmludGZuKENUWVBFKiBidWZmZXIsIHNpemVfdCBidWZsZW4sIGNvbnN0IENUWVBFKiBmb3Jt
YXQsIC4uLik7Ci10ZW1wbGF0ZSA8Y2xhc3MgQ1RZUEU+Ci1zaXplX3Qgc3ByaW50Zm4oQ1RZUEUq
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmxlbiwgY29uc3QgQ1RZUEUqIGZvcm1hdCwgLi4uKSB7Ci0gIHZh
X2xpc3QgYXJnczsKLSAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKLSAgc2l6ZV90IGxlbiA9IHZz
cHJpbnRmbihidWZmZXIsIGJ1ZmxlbiwgZm9ybWF0LCBhcmdzKTsKLSAgdmFfZW5kKGFyZ3MpOwot
ICByZXR1cm4gbGVuOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBBbGxvdyBzYWZl
IGNvbXBhcmluZyBhbmQgY29weWluZyBhc2NpaSAobm90IFVURi04KSB3aXRoIGJvdGggd2lkZSBh
bmQKLS8vIG5vbi13aWRlIGNoYXJhY3RlciBzdHJpbmdzLgotLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotCi1pbmxpbmUgaW50IGFzY2NtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIpIHsK
LSAgcmV0dXJuIHN0cmNtcChzMSwgczIpOwotfQotaW5saW5lIGludCBhc2NpY21wKGNvbnN0IGNo
YXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4gX3N0cmljbXAoczEsIHMyKTsKLX0K
LWlubGluZSBpbnQgYXNjbmNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIHNpemVf
dCBuKSB7Ci0gIHJldHVybiBzdHJuY21wKHMxLCBzMiwgbik7Ci19Ci1pbmxpbmUgaW50IGFzY25p
Y21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgc2l6ZV90IG4pIHsKLSAgcmV0dXJu
IF9zdHJuaWNtcChzMSwgczIsIG4pOwotfQotaW5saW5lIHNpemVfdCBhc2NjcHluKGNoYXIqIGJ1
ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmbGVuLAotICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc3JjbGVuID0gU0laRV9VTktOT1dOKSB7Ci0gIHJldHVybiBzdHJjcHluKGJ1ZmZlciwgYnVm
bGVuLCBzb3VyY2UsIHNyY2xlbik7Ci19Ci0KLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0KLXR5
cGVkZWYgd2NoYXJfdCAoKkNoYXJhY3RlclRyYW5zZm9ybWF0aW9uKSh3Y2hhcl90KTsKLWlubGlu
ZSB3Y2hhcl90IGlkZW50aXR5KHdjaGFyX3QgYykgewotICByZXR1cm4gYzsKLX0KLWludCBhc2Np
aV9zdHJpbmdfY29tcGFyZShjb25zdCB3Y2hhcl90KiBzMSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJUcmFuc2Zvcm1hdGlvbiB0cmFuc2Zv
cm1hdGlvbik7Ci0KLWlubGluZSBpbnQgYXNjY21wKGNvbnN0IHdjaGFyX3QqIHMxLCBjb25zdCBj
aGFyKiBzMikgewotICByZXR1cm4gYXNjaWlfc3RyaW5nX2NvbXBhcmUoczEsIHMyLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KC0xKSwgaWRlbnRpdHkpOwotfQotaW5saW5lIGludCBhc2NpY21wKGNvbnN0
IHdjaGFyX3QqIHMxLCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4gYXNjaWlfc3RyaW5nX2Nv
bXBhcmUoczEsIHMyLCBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSwgdG9sb3dlcmNhc2UpOwotfQot
aW5saW5lIGludCBhc2NuY21wKGNvbnN0IHdjaGFyX3QqIHMxLCBjb25zdCBjaGFyKiBzMiwgc2l6
ZV90IG4pIHsKLSAgcmV0dXJuIGFzY2lpX3N0cmluZ19jb21wYXJlKHMxLCBzMiwgbiwgaWRlbnRp
dHkpOwotfQotaW5saW5lIGludCBhc2NuaWNtcChjb25zdCB3Y2hhcl90KiBzMSwgY29uc3QgY2hh
ciogczIsIHNpemVfdCBuKSB7Ci0gIHJldHVybiBhc2NpaV9zdHJpbmdfY29tcGFyZShzMSwgczIs
IG4sIHRvbG93ZXJjYXNlKTsKLX0KLXNpemVfdCBhc2NjcHluKHdjaGFyX3QqIGJ1ZmZlciwKKy8v
IFNhZmUgdmVyc2lvbiBvZiBzdHJuY3B5IHRoYXQgYWx3YXlzIG51bC10ZXJtaW5hdGUuCitzaXpl
X3Qgc3RyY3B5bihjaGFyKiBidWZmZXIsCiAgICAgICAgICAgICAgICBzaXplX3QgYnVmbGVuLAog
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogc291cmNlLAogICAgICAgICAgICAgICAgc2l6ZV90
IHNyY2xlbiA9IFNJWkVfVU5LTk9XTik7CiAKLSNlbmRpZiAgLy8gV0VCUlRDX1dJTgotCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyBUcmFpdHM8Y2hhcj4gc3BlY2lhbGl6YXRpb25zCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgVHJhaXRzPGNoYXI+IHsK
LSAgdHlwZWRlZiBzdGQ6OnN0cmluZyBzdHJpbmc7Ci0gIGlubGluZSBzdGF0aWMgY29uc3QgY2hh
ciogZW1wdHlfc3RyKCkgeyByZXR1cm4gIiI7IH0KLX07Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLS8vIFRyYWl0czx3Y2hhcl90PiBzcGVjaWFsaXphdGlvbnMgKFdpbmRvd3Mgb25seSwgY3Vy
cmVudGx5KQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0jaWYgZGVmaW5lZChXRUJSVENfV0lO
KQotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IFRyYWl0czx3Y2hhcl90PiB7Ci0gIHR5cGVkZWYgc3Rk
Ojp3c3RyaW5nIHN0cmluZzsKLSAgaW5saW5lIHN0YXRpYyBjb25zdCB3Y2hhcl90KiBlbXB0eV9z
dHIoKSB7IHJldHVybiBMIiI7IH0KLX07Ci0KLSNlbmRpZiAgLy8gV0VCUlRDX1dJTgotCiAvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCiAvLyBVVEYgaGVscGVycyAoV2luZG93cyBvbmx5KQogLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHNfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlsc191
bml0dGVzdC5jYwppbmRleCBhNmU2NDY4MGJiNzM1OWQ4MWVkMWFlNGVmZmNiNjM5NjUwOGI2Y2M2
Li42NjNlOTc2OGY2MDhhMzQ2Yzg0MjA0NWExMWNlZDU3MDRlNzZjZjk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1
dGlsc191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlsc191bml0dGVzdC5jYwpAQCAtMTMsNzAgKzEzLDYg
QEAKIAogbmFtZXNwYWNlIHJ0YyB7CiAKLS8vIFRlc3RzIGZvciBzdHJpbmdfbWF0Y2goKS4KLQot
VEVTVChzdHJpbmdfbWF0Y2hUZXN0LCBNYXRjaGVzKSB7Ci0gIEVYUEVDVF9UUlVFKHN0cmluZ19t
YXRjaCgiQS5CLkMuRCIsICJhLmIuYy5kIikpOwotICBFWFBFQ1RfVFJVRShzdHJpbmdfbWF0Y2go
Ind3dy5URVNULkdPT0dMRS5DT00iLCAid3d3LiouY29tIikpOwotICBFWFBFQ1RfVFJVRShzdHJp
bmdfbWF0Y2goIjEyNy4wLjAuMSIsICIxMiouMC4qMSIpKTsKLSAgRVhQRUNUX1RSVUUoc3RyaW5n
X21hdGNoKCIxMjcuMS4wLjIxIiwgIjEyKi4wLioxIikpOwotICBFWFBFQ1RfRkFMU0Uoc3RyaW5n
X21hdGNoKCIxMjcuMC4wLjAiLCAiMTIqLjAuKjEiKSk7Ci0gIEVYUEVDVF9GQUxTRShzdHJpbmdf
bWF0Y2goIjEyNy4wLjAuMCIsICIxMiouMC4qMSIpKTsKLSAgRVhQRUNUX0ZBTFNFKHN0cmluZ19t
YXRjaCgiMTI3LjEuMS4yMSIsICIxMiouMC4qMSIpKTsKLX0KLQotLy8gSXQncyBub3QgY2xlYXIg
aWYgd2Ugd2lsbCBldmVyIHVzZSB3Y2hhcl90IHN0cmluZ3Mgb24gdW5peC4gIEluIHRoZW9yeSwK
LS8vIGFsbCBzdHJpbmdzIHNob3VsZCBiZSBVdGY4IGFsbCB0aGUgdGltZSwgZXhjZXB0IHdoZW4g
aW50ZXJmYWNpbmcgd2l0aCBXaW4zMgotLy8gQVBJcyB0aGF0IHJlcXVpcmUgVXRmMTYuCi0KLSNp
ZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0KLS8vIFRlc3RzIGZvciBhc2NpaV9zdHJpbmdfY29tcGFy
ZSgpLgotCi0vLyBUZXN0cyBudWxsIGlucHV0LgotVEVTVChhc2NpaV9zdHJpbmdfY29tcGFyZVRl
c3QsIE51bGxJbnB1dCkgewotICAvLyBUaGUgZm9sbG93aW5nIHJlc3VsdHMgaW4gYW4gYWNjZXNz
IHZpb2xhdGlvbiBpbgotICAvLyBhc2NpaV9zdHJpbmdfY29tcGFyZS4gIElzIHRoaXMgYSBidWcg
b3IgYnkgZGVzaWduPyAgc3RyaW5ndXRpbHMuaAotICAvLyBzaG91bGQgZG9jdW1lbnQgdGhlIGV4
cGVjdGVkIGJlaGF2aW9yIGluIHRoaXMgY2FzZS4KLQotICAvLyBFWFBFQ1RfRVEoMCwgYXNjaWlf
c3RyaW5nX2NvbXBhcmUobnVsbHB0ciwgbnVsbHB0ciwgMSwgaWRlbnRpdHkpKTsKLX0KLQotLy8g
VGVzdHMgY29tcGFyaW5nIHR3byBzdHJpbmdzIG9mIGRpZmZlcmVudCBsZW5ndGhzLgotVEVTVChh
c2NpaV9zdHJpbmdfY29tcGFyZVRlc3QsIERpZmZlcmVudExlbmd0aHMpIHsKLSAgRVhQRUNUX0VR
KC0xLCBhc2NpaV9zdHJpbmdfY29tcGFyZShMIlRlc3QiLCAiVGVzdDEiLCA1LCBpZGVudGl0eSkp
OwotfQotCi0vLyBUZXN0cyB0aGUgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIHNpemUgaXMgc21hbGxl
ciB0aGFuIHRoZSBzdHJpbmcKLS8vIGxlbmd0aHMuCi1URVNUKGFzY2lpX3N0cmluZ19jb21wYXJl
VGVzdCwgU21hbGxCdWZmZXIpIHsKLSAgRVhQRUNUX0VRKDAsIGFzY2lpX3N0cmluZ19jb21wYXJl
KEwiVGVzdCIsICJUZXN0MSIsIDMsIGlkZW50aXR5KSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBjYXNl
IHdoZXJlIHRoZSBidWZmZXIgaXMgbm90IGZ1bGwuCi1URVNUKGFzY2lpX3N0cmluZ19jb21wYXJl
VGVzdCwgTGFyZ2VCdWZmZXIpIHsKLSAgRVhQRUNUX0VRKDAsIGFzY2lpX3N0cmluZ19jb21wYXJl
KEwiVGVzdCIsICJUZXN0IiwgMTAsIGlkZW50aXR5KSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmlu
ZyB0d28gZXFhdWwgc3RyaW5ncy4KLVRFU1QoYXNjaWlfc3RyaW5nX2NvbXBhcmVUZXN0LCBFcXVh
bCkgewotICBFWFBFQ1RfRVEoMCwgYXNjaWlfc3RyaW5nX2NvbXBhcmUoTCJUZXN0IiwgIlRlc3Qi
LCA1LCBpZGVudGl0eSkpOwotICBFWFBFQ1RfRVEoMCwgYXNjaWlfc3RyaW5nX2NvbXBhcmUoTCJU
ZVN0IiwgInRFc1QiLCA1LCB0b2xvd2VyY2FzZSkpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcg
YSBzbWxsZXIgc3RyaW5nIHRvIGEgbGFyZ2VyIG9uZS4KLVRFU1QoYXNjaWlfc3RyaW5nX2NvbXBh
cmVUZXN0LCBMZXNzVGhhbikgewotICBFWFBFQ1RfRVEoLTEsIGFzY2lpX3N0cmluZ19jb21wYXJl
KEwiYWJjIiwgImFiZCIsIDQsIGlkZW50aXR5KSk7Ci0gIEVYUEVDVF9FUSgtMSwgYXNjaWlfc3Ry
aW5nX2NvbXBhcmUoTCJBQkMiLCAiYWJEIiwgNSwgdG9sb3dlcmNhc2UpKTsKLX0KLQotLy8gVGVz
dHMgY29tcGFyaW5nIGEgbGFyZ2VyIHN0cmluZyB0byBhIHNtYWxsZXIgb25lLgotVEVTVChhc2Np
aV9zdHJpbmdfY29tcGFyZVRlc3QsIEdyZWF0ZXJUaGFuKSB7Ci0gIEVYUEVDVF9FUSgxLCBhc2Np
aV9zdHJpbmdfY29tcGFyZShMInh5eiIsICJ4eSIsIDUsIGlkZW50aXR5KSk7Ci0gIEVYUEVDVF9F
USgxLCBhc2NpaV9zdHJpbmdfY29tcGFyZShMImFiYyIsICJBQkIiLCA1LCB0b2xvd2VyY2FzZSkp
OwotfQotI2VuZGlmICAvLyBXRUJSVENfV0lOCi0KIFRFU1Qoc3RyaW5nX3RyaW1fVGVzdCwgVHJp
bW1pbmcpIHsKICAgRVhQRUNUX0VRKCJ0ZW1wIiwgc3RyaW5nX3RyaW0oIlxuXHJcdCB0ZW1wIFxu
XHJcdCIpKTsKICAgRVhQRUNUX0VRKCJ0ZW1wXG5cclx0IHRlbXAiLCBzdHJpbmdfdHJpbSgiIHRl
bXBcblxyXHQgdGVtcCAiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeW5jaHJvbml6YXRpb24vcndfbG9ja19wb3NpeC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5
bmNocm9uaXphdGlvbi9yd19sb2NrX3Bvc2l4LmNjCmluZGV4IDdlMzdkYzkyNGZkZjgxY2I3MDkx
NmUzMWFhNzUwN2I2MmNlNjIwMDMuLjE1ZWYzZDcwNmU4YWVjYWRkZGJjY2ZlZDYxMThlZWEzMGJk
ZjRjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3N5bmNocm9uaXphdGlvbi9yd19sb2NrX3Bvc2l4LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5bmNocm9uaXph
dGlvbi9yd19sb2NrX3Bvc2l4LmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJydGNf
YmFzZS9zeW5jaHJvbml6YXRpb24vcndfbG9ja19wb3NpeC5oIgogCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBSV0xvY2tQb3NpeDo6UldMb2NrUG9zaXgoKSA6
IGxvY2tfKCkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9CVUlMRC5nbgppbmRleCBmMjJl
ZmUxNGEwNDg4ZTMzYjE3OGQ2Y2I2ZWIzNTIyYzQzZjZhY2NjLi5lNWFhMzJiNGVmMWQ4YzUyMmE4
MjQzYTE2YjQ0MDQzYmU3YmMyMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vQlVJTEQuZ24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL0JVSUxE
LmduCkBAIC02NSwzICs2NSwxNSBAQCBydGNfc291cmNlX3NldCgicnRjX2V4cG9ydCIpIHsKICAg
ICAicnRjX2V4cG9ydC5oIiwKICAgXQogfQorCitpZiAoaXNfbWFjIHx8IGlzX2lvcykgeworICBy
dGNfc291cmNlX3NldCgiY29jb2FfdGhyZWFkaW5nIikgeworICAgIHNvdXJjZXMgPSBbCisgICAg
ICAiY29jb2FfdGhyZWFkaW5nLmgiLAorICAgICAgImNvY29hX3RocmVhZGluZy5tbSIsCisgICAg
XQorICAgIGRlcHMgPSBbCisgICAgICAiLi46Y2hlY2tzIiwKKyAgICBdCisgIH0KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3N5c3RlbS9jb2NvYV90aHJlYWRpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9jb2NvYV90aHJlYWRpbmcuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MThjYjcxNzg2YmFmMzRhYzBlM2QyODMwZGE4NTE4Mzk4YzJmNzI5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c3lzdGVtL2NvY29hX3RocmVhZGluZy5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpZm5kZWYgUlRDX0JBU0VfU1lTVEVNX0NPQ09BX1RIUkVBRElOR19IXworI2RlZmlu
ZSBSVENfQkFTRV9TWVNURU1fQ09DT0FfVEhSRUFESU5HX0hfCisKKy8vIElmIENvY29hIGlzIHRv
IGJlIHVzZWQgb24gbW9yZSB0aGFuIG9uZSB0aHJlYWQsIGl0IG11c3Qga25vdyB0aGF0IHRoZQor
Ly8gYXBwbGljYXRpb24gaXMgbXVsdGl0aHJlYWRlZC4gIFNpbmNlIGl0J3MgcG9zc2libGUgdG8g
ZW50ZXIgQ29jb2EgY29kZQorLy8gZnJvbSB0aHJlYWRzIGNyZWF0ZWQgYnkgcHRocmVhZF90aHJl
YWRfY3JlYXRlLCBDb2NvYSB3b24ndCBuZWNlc3NhcmlseQorLy8gYmUgYXdhcmUgdGhhdCB0aGUg
YXBwbGljYXRpb24gaXMgbXVsdGl0aHJlYWRlZC4gIFNwYXduaW5nIGFuIE5TVGhyZWFkIGlzCisv
LyBlbm91Z2ggdG8gZ2V0IENvY29hIHRvIHNldCB1cCBmb3IgbXVsdGl0aHJlYWRlZCBvcGVyYXRp
b24sIHNvIHRoaXMgaXMgZG9uZQorLy8gaWYgbmVjZXNzYXJ5IGJlZm9yZSBwdGhyZWFkX3RocmVh
ZF9jcmVhdGUgc3Bhd25zIGFueSB0aHJlYWRzLgorLy8KKy8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBw
bGUuY29tL2RvY3VtZW50YXRpb24vQ29jb2EvQ29uY2VwdHVhbC9NdWx0aXRocmVhZGluZy9DcmVh
dGluZ1RocmVhZHMvY2hhcHRlcl80X3NlY3Rpb25fNC5odG1sCit2b2lkIEluaXRDb2NvYU11bHRp
VGhyZWFkaW5nKCk7CisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfU1lTVEVNX0NPQ09BX1RIUkVBRElO
R19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3lzdGVtL2NvY29hX3RocmVhZGluZy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9jb2NvYV90aHJlYWRpbmcu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzA5ODYyZTdlNWY3NTBkYjA1YWI4ODRlMDViZTI0YjAxNWNkM2RiYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3N5c3RlbS9jb2NvYV90aHJlYWRpbmcubW0KQEAgLTAsMCArMSwyNCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vY29jb2FfdGhyZWFk
aW5nLmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCisKK3ZvaWQgSW5pdENvY29hTXVsdGlUaHJlYWRpbmcoKSB7Cisg
IHN0YXRpYyBCT09MIGlzX2NvY29hX211bHRpdGhyZWFkZWQgPSBbTlNUaHJlYWQgaXNNdWx0aVRo
cmVhZGVkXTsKKyAgaWYgKCFpc19jb2NvYV9tdWx0aXRocmVhZGVkKSB7CisgICAgLy8gK1tOU09i
amVjdCBjbGFzc10gaXMgaWRlbXBvdGVudC4KKyAgICBbTlNUaHJlYWQgZGV0YWNoTmV3VGhyZWFk
U2VsZWN0b3I6QHNlbGVjdG9yKGNsYXNzKSB0b1RhcmdldDpbTlNPYmplY3QgY2xhc3NdIHdpdGhP
YmplY3Q6bmlsXTsKKyAgICBpc19jb2NvYV9tdWx0aXRocmVhZGVkID0gWUVTOworICAgIFJUQ19E
Q0hFQ0soW05TVGhyZWFkIGlzTXVsdGlUaHJlYWRlZF0pOworICB9Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0v
ZmlsZV93cmFwcGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3lzdGVtL2ZpbGVfd3JhcHBlci5jYwppbmRleCA3MmY1ZjI1OWRiZGY2ODlh
MDM1ODRiYmNkNzUxNWIxMWI5YWI1MDM4Li5jMDMzYTc5MmE1MGMzZTkyMzg4OTYyNTVhYjZjNjU3
ZTM4ODA5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vZmlsZV93cmFwcGVyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9maWxlX3dyYXBw
ZXIuY2MKQEAgLTEzLDE0ICsxMywxMSBAQAogI2lmZGVmIF9XSU4zMgogI2luY2x1ZGUgPFdpbmRv
d3MuaD4KICNlbHNlCi0jaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAj
ZW5kaWYKIAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogRklMRSogRmlsZU9wZW4oY29u
c3QgY2hhciogZmlsZV9uYW1lX3V0ZjgsIGJvb2wgcmVhZF9vbmx5KSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0v
ZmlsZV93cmFwcGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zeXN0ZW0vZmlsZV93cmFwcGVyLmgKaW5kZXggNTQxMWIwNGY2OTkyZDc1ZDNl
YWI5MjEyNjkwOTQ5YjAzNmNkYzAwMC4uMGJiODZhMzk3ZjkwNjBiZmU0MzNkOWUzNTZmNGY5ODlm
NjU1NWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2ZpbGVfd3JhcHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9maWxlX3dyYXBwZXIu
aApAQCAtMTQsNyArMTQsNiBAQAogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRl
KQogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogCiAvLyBJbXBsZW1lbnRh
dGlvbiB0aGF0IGNhbiByZWFkIChleGNsdXNpdmUpIG9yIHdyaXRlIGZyb20vdG8gYSBmaWxlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgKaW5kZXggYjdhMGZlNDE2
ODI2MDgyMTk3Yjk4NDYyNzk4ZjVjYWFiZGJkZGM1OC4uZDFlYjYwYWQ3ODNhNWYxYzhhN2E4MDc0
MmViZmRlZDMxYWI3MzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vcnRjX2V4
cG9ydC5oCkBAIC0xNiw3ICsxNiw3IEBACiAvLyBXaGVuIFdlYlJUQyBpcyBidWlsdCBhcyBhIHN0
YXRpYyBsaWJyYXJ5IHRoZSBSVENfRVhQT1JUIG1hY3JvIGV4cGFuZHMgdG8KIC8vIG5vdGhpbmcu
CiAKLSNpZmRlZiBDT01QT05FTlRfQlVJTEQKKyNpZmRlZiBXRUJSVENfRU5BQkxFX1NZTUJPTF9F
WFBPUlQKIAogI2lmZGVmIFdFQlJUQ19XSU4KIApAQCAtMzQsNyArMzQsNyBAQAogCiAjZW5kaWYg
IC8vIFdFQlJUQ19XSU4KIAotI2VuZGlmICAvLyBDT01QT05FTlRfQlVJTEQKKyNlbmRpZiAgLy8g
V0VCUlRDX0VOQUJMRV9TWU1CT0xfRVhQT1JUCiAKICNpZm5kZWYgUlRDX0VYUE9SVAogI2RlZmlu
ZSBSVENfRVhQT1JUCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlLmgKaW5kZXggYjhiMzA3Y2E2
YTQwNTgzNTRlNGIxYjg4ODY5ODg0OGI1Mzk0ZTc5My4uODg4ZTIwMzk2N2NkMzY1YWQwODJiMzNl
ODA5ZGMxYTc0OWMxNmQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWUuaApAQCAtMTgs
NiArMTgsNyBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVm
X3B0ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSBydGMgewpAQCAt
MTUwLDcgKzE1MSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gTmV3Q2xv
c3VyZShDbG9zdXJlJiYgY2xvc3VyZSwKIC8vIFRhc2tRdWV1ZSBpdHNlbGYgaGFzIGJlZW4gZGVs
ZXRlZCBvciBpdCBtYXkgaGFwcGVuIHN5bmNocm9ub3VzbHkgd2hpbGUgdGhlCiAvLyBUYXNrUXVl
dWUgaW5zdGFuY2UgaXMgYmVpbmcgZGVsZXRlZC4gIFRoaXMgbWF5IHZhcnkgZnJvbSBvbmUgT1Mg
dG8gdGhlIG5leHQKIC8vIHNvIGFzc3VtcHRpb25zIGFib3V0IGxpZmV0aW1lcyBvZiBwZW5kaW5n
IHRhc2tzIHNob3VsZCBub3QgYmUgbWFkZS4KLWNsYXNzIFJUQ19MT0NLQUJMRSBUYXNrUXVldWUg
eworY2xhc3MgUlRDX0xPQ0tBQkxFIFJUQ19FWFBPUlQgVGFza1F1ZXVlIHsKICBwdWJsaWM6CiAg
IC8vIFRhc2tRdWV1ZSBwcmlvcml0eSBsZXZlbHMuIE9uIHNvbWUgcGxhdGZvcm1zIHRoZXNlIHdp
bGwgbWFwIHRvIHRocmVhZAogICAvLyBwcmlvcml0aWVzLCBvbiBvdGhlcnMgc3VjaCBhcyBNYWMg
YW5kIGlPUywgR0NEIHF1ZXVlIHByaW9yaXRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlX2Zvcl90ZXN0
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90
YXNrX3F1ZXVlX2Zvcl90ZXN0LmgKaW5kZXggNzBjNThmYjUxNmMxYWE2YWQ0M2VkZmVhYTkzYmQz
Y2FiMmRhY2ExYS4uOTE2MmU4MWI4OGFjZTk1ODJiMDhkOGYyMGQzOTNjYzFlMGEyNGNhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvdGFza19xdWV1ZV9mb3JfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfZm9yX3Rlc3QuaApAQCAtMzMsNyAr
MzMsNyBAQCBjbGFzcyBSVENfTE9DS0FCTEUgVGFza1F1ZXVlRm9yVGVzdCA6IHB1YmxpYyBUYXNr
UXVldWUgewogICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xvc3VyZT4KICAgdm9pZCBTZW5kVGFzayhDbG9z
dXJlKiB0YXNrKSB7CiAgICAgUlRDX0RDSEVDSyghSXNDdXJyZW50KCkpOwotICAgIHJ0Yzo6RXZl
bnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgICBydGM6OkV2ZW50IGV2ZW50OwogICAgIFBvc3RU
YXNrKHJ0Yzo6TmV3Q2xvc3VyZSgKICAgICAgICAgWyZ0YXNrXSgpIHsKICAgICAgICAgICBSVENf
Q0hFQ0tfRVEoZmFsc2UsIHN0YXRpY19jYXN0PFF1ZXVlZFRhc2sqPih0YXNrKS0+UnVuKCkpOwpA
QCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSVENfTE9DS0FCTEUgVGFza1F1ZXVlRm9yVGVzdCA6IHB1
YmxpYyBUYXNrUXVldWUgewogICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xvc3VyZT4KICAgdm9pZCBTZW5k
VGFzayhDbG9zdXJlJiYgdGFzaykgewogICAgIFJUQ19EQ0hFQ0soIUlzQ3VycmVudCgpKTsKLSAg
ICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgICAgcnRjOjpFdmVudCBldmVudDsK
ICAgICBQb3N0VGFzayhydGM6Ok5ld0Nsb3N1cmUoc3RkOjptb3ZlKHRhc2spLCBbJmV2ZW50XSgp
IHsgZXZlbnQuU2V0KCk7IH0pKTsKICAgICBldmVudC5XYWl0KHJ0Yzo6RXZlbnQ6OmtGb3JldmVy
KTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZV9saWJldmVudC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfbGliZXZlbnQuY2MK
aW5kZXggY2JlZDMzMzRkNzdmZDdhYTg2NTdhYjg5NWE4ZjEzY2VhZWI1NjU4NC4uOTA1YmJkYWMw
ZTJlNWExYmVkZDFlNjRhZmZlZWY5ZDA4MzFkOGZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZV9saWJldmVu
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS90YXNrX3F1ZXVlX2xpYmV2ZW50LmNjCkBAIC0xMCwzMCArMTAsMzEgQEAKIAogI2luY2x1
ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKIAorI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVk
ZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0j
aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8dGltZS5o
PgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8bWVtb3J5
PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNpZiBkZWZp
bmVkKFdFQlJUQ19MSU5VWCkKLSNpbmNsdWRlIDxldmVudDIvZXZlbnQuaD4KLSNpbmNsdWRlIDxl
dmVudDIvZXZlbnRfY29tcGF0Lmg+Ci0jaW5jbHVkZSA8ZXZlbnQyL2V2ZW50X3N0cnVjdC5oPgot
I2Vsc2UKICNpbmNsdWRlICJiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L2V2ZW50LmgiCi0jZW5k
aWYKLQogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Ny
aXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvcGxhdGZvcm1fdGhyZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFk
X3R5cGVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9w
dHIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vdW51c2VkLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvdGFza19xdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWVfcG9zaXgu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVl
X3N0ZGxpYi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3Rhc2tfcXVldWVfc3RkbGliLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYjBlZDI4Yjk1MWViYzkx
MGUxMDM4NzhiMTg5M2FjN2I4MDg4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlX3N0ZGxpYi5j
YwpAQCAtMCwwICsxLDM5OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInJ0Y19i
YXNlL3Rhc2tfcXVldWUuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8Y29uZGl0aW9uX3ZhcmlhYmxlPgor
I2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxxdWV1ZT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxz
ZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVk
b2JqZWN0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCisKK25hbWVzcGFjZSBydGMgeworbmFtZXNwYWNl
IHsKKwordXNpbmcgUHJpb3JpdHkgPSBUYXNrUXVldWU6OlByaW9yaXR5OworCitUaHJlYWRQcmlv
cml0eSBUYXNrUXVldWVQcmlvcml0eVRvVGhyZWFkUHJpb3JpdHkoUHJpb3JpdHkgcHJpb3JpdHkp
IHsKKyAgc3dpdGNoIChwcmlvcml0eSkgeworICAgIGNhc2UgUHJpb3JpdHk6OkhJR0g6CisgICAg
ICByZXR1cm4ga1JlYWx0aW1lUHJpb3JpdHk7CisgICAgY2FzZSBQcmlvcml0eTo6TE9XOgorICAg
ICAgcmV0dXJuIGtMb3dQcmlvcml0eTsKKyAgICBjYXNlIFByaW9yaXR5OjpOT1JNQUw6CisgICAg
ICByZXR1cm4ga05vcm1hbFByaW9yaXR5OworICAgIGRlZmF1bHQ6CisgICAgICBSVENfTk9UUkVB
Q0hFRCgpOworICAgICAgcmV0dXJuIGtOb3JtYWxQcmlvcml0eTsKKyAgfQorICByZXR1cm4ga05v
cm1hbFByaW9yaXR5OworfQorCit9ICAvLyBuYW1lc3BhY2UKKworY2xhc3MgVGFza1F1ZXVlOjpJ
bXBsIDogcHVibGljIFJlZkNvdW50SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIEltcGwoY29uc3Qg
Y2hhciogcXVldWVfbmFtZSwgVGFza1F1ZXVlKiBxdWV1ZSwgUHJpb3JpdHkgcHJpb3JpdHkpOwor
ICB+SW1wbCgpIG92ZXJyaWRlOworCisgIHN0YXRpYyBUYXNrUXVldWU6OkltcGwqIEN1cnJlbnQo
KTsKKyAgc3RhdGljIFRhc2tRdWV1ZSogQ3VycmVudFF1ZXVlKCk7CisKKyAgLy8gVXNlZCBmb3Ig
RENIRUNLaW5nIHRoZSBjdXJyZW50IHF1ZXVlLgorICBib29sIElzQ3VycmVudCgpIGNvbnN0Owor
CisgIHRlbXBsYXRlIDxjbGFzcyBDbG9zdXJlLAorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8IXN0ZDo6aXNfY29udmVydGlibGU8CisgICAgICAgICAgICAgICAgQ2xvc3VyZSwK
KyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4+Ojp2YWx1ZT46OnR5
cGUqID0gbnVsbHB0cj4KKyAgdm9pZCBQb3N0VGFzayhDbG9zdXJlJiYgY2xvc3VyZSkgeworICAg
IFBvc3RUYXNrKE5ld0Nsb3N1cmUoc3RkOjpmb3J3YXJkPENsb3N1cmU+KGNsb3N1cmUpKSk7Cisg
IH0KKworICB2b2lkIFBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiB0YXNrKTsK
KyAgdm9pZCBQb3N0VGFza0FuZFJlcGx5KHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiB0YXNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHJl
cGx5LAorICAgICAgICAgICAgICAgICAgICAgICAgVGFza1F1ZXVlOjpJbXBsKiByZXBseV9xdWV1
ZSk7CisKKyAgdm9pZCBQb3N0RGVsYXllZFRhc2soc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+
IHRhc2ssIHVpbnQzMl90IG1pbGxpc2Vjb25kcyk7CisKKyAgY2xhc3MgV29ya2VyVGhyZWFkIDog
cHVibGljIFBsYXRmb3JtVGhyZWFkIHsKKyAgIHB1YmxpYzoKKyAgICBXb3JrZXJUaHJlYWQoVGhy
ZWFkUnVuRnVuY3Rpb24gZnVuYywKKyAgICAgICAgICAgICAgICAgdm9pZCogb2JqLAorICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiB0aHJlYWRfbmFtZSwKKyAgICAgICAgICAgICAgICAgVGhy
ZWFkUHJpb3JpdHkgcHJpb3JpdHkpCisgICAgICAgIDogUGxhdGZvcm1UaHJlYWQoZnVuYywgb2Jq
LCB0aHJlYWRfbmFtZSwgcHJpb3JpdHkpIHt9CisgIH07CisKKyAgdXNpbmcgT3JkZXJJZCA9IHVp
bnQ2NF90OworCisgIHN0cnVjdCBEZWxheWVkRW50cnlUaW1lb3V0IHsKKyAgICBpbnQ2NF90IG5l
eHRfZmlyZV9hdF9tc197fTsKKyAgICBPcmRlcklkIG9yZGVyX3t9OworCisgICAgYm9vbCBvcGVy
YXRvcjwoY29uc3QgRGVsYXllZEVudHJ5VGltZW91dCYgbykgY29uc3QgeworICAgICAgcmV0dXJu
IHN0ZDo6dGllKG5leHRfZmlyZV9hdF9tc18sIG9yZGVyXykgPAorICAgICAgICAgICAgIHN0ZDo6
dGllKG8ubmV4dF9maXJlX2F0X21zXywgby5vcmRlcl8pOworICAgIH0KKyAgfTsKKworICBzdHJ1
Y3QgTmV4dFRhc2sgeworICAgIGJvb2wgZmluYWxfdGFza197ZmFsc2V9OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxRdWV1ZWRUYXNrPiBydW5fdGFza187CisgICAgaW50NjRfdCBzbGVlcF90aW1lX21z
X3t9OworICB9OworCisgcHJvdGVjdGVkOgorICBOZXh0VGFzayBHZXROZXh0VGFzaygpOworCisg
cHJpdmF0ZToKKyAgLy8gVGhlIFRocmVhZFF1ZXVlOjpDdXJyZW50KCkgbWV0aG9kIHJlcXVpcmVz
IHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkCisgIC8vIHJldHVybnMgdGhlIHRhc2sgcXVldWUgaWYg
dGhlIGN1cnJlbnQgdGhyZWFkIGlzIHRoZSBhY3RpdmUgdGFzaworICAvLyBxdWV1ZSBhbmQgdGhp
cyB2YXJpYWJsZSBob2xkcyB0aGUgdmFsdWUgbmVlZGVkIGluIHRocmVhZF9sb2NhbCB0bworICAv
LyBvbiB0aGUgaW5pdGlhbGl6ZWQgd29ya2VyIHRocmVhZCBob2xkaW5nIHRoZSBxdWV1ZS4KKyAg
c3RhdGljIHRocmVhZF9sb2NhbCBUYXNrUXVldWU6OkltcGwqIHRocmVhZF9jb250ZXh0XzsKKwor
ICBzdGF0aWMgdm9pZCBUaHJlYWRNYWluKHZvaWQqIGNvbnRleHQpOworCisgIHZvaWQgUHJvY2Vz
c1Rhc2tzKCk7CisKKyAgdm9pZCBOb3RpZnlXYWtlKCk7CisKKyAgLy8gVGhlIGJhY2sgcG9pbnRl
ciBmcm9tIHRoZSBvd25lciB0YXNrIHF1ZXVlIG9iamVjdAorICAvLyBmcm9tIHRoaXMgaW1wbGVt
ZW50YXRpb24gZGV0YWlsLgorICBUYXNrUXVldWUqIGNvbnN0IHF1ZXVlXzsKKworICAvLyBJbmRp
Y2F0ZXMgaWYgdGhlIHRocmVhZCBoYXMgc3RhcnRlZC4KKyAgRXZlbnQgc3RhcnRlZF87CisKKyAg
Ly8gSW5kaWNhdGVzIGlmIHRoZSB0aHJlYWQgaGFzIHN0b3BwZWQuCisgIEV2ZW50IHN0b3BwZWRf
OworCisgIC8vIFNpZ25hbGVkIHdoZW5ldmVyIGEgbmV3IHRhc2sgaXMgcGVuZGluZy4KKyAgRXZl
bnQgZmxhZ19ub3RpZnlfOworCisgIC8vIENvbnRhaW5zIHRoZSBhY3RpdmUgd29ya2VyIHRocmVh
ZCBhc3NpZ25lZCB0byBwcm9jZXNzaW5nCisgIC8vIHRhc2tzIChpbmNsdWRpbmcgZGVsYXllZCB0
YXNrcykuCisgIFdvcmtlclRocmVhZCB0aHJlYWRfOworCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9u
IHBlbmRpbmdfbG9ja187CisKKyAgLy8gSW5kaWNhdGVzIGlmIHRoZSB3b3JrZXIgdGhyZWFkIG5l
ZWRzIHRvIHNodXRkb3duIG5vdy4KKyAgYm9vbCB0aHJlYWRfc2hvdWxkX3F1aXRfIFJUQ19HVUFS
REVEX0JZKHBlbmRpbmdfbG9ja18pe2ZhbHNlfTsKKworICAvLyBIb2xkcyB0aGUgbmV4dCBvcmRl
ciB0byB1c2UgZm9yIHRoZSBuZXh0IHRhc2sgdG8gYmUKKyAgLy8gcHV0IGludG8gb25lIG9mIHRo
ZSBwZW5kaW5nIHF1ZXVlcy4KKyAgT3JkZXJJZCB0aHJlYWRfcG9zdGluZ19vcmRlcl8gUlRDX0dV
QVJERURfQlkocGVuZGluZ19sb2NrXyl7fTsKKworICAvLyBUaGUgbGlzdCBvZiBhbGwgcGVuZGlu
ZyB0YXNrcyB0aGF0IG5lZWQgdG8gYmUgcHJvY2Vzc2VkIGluIHRoZQorICAvLyBGSUZPIHF1ZXVl
IG9yZGVyaW5nIG9uIHRoZSB3b3JrZXIgdGhyZWFkLgorICBzdGQ6OnF1ZXVlPHN0ZDo6cGFpcjxP
cmRlcklkLCBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4+PiBwZW5kaW5nX3F1ZXVlXworICAg
ICAgUlRDX0dVQVJERURfQlkocGVuZGluZ19sb2NrXyk7CisKKyAgLy8gVGhlIGxpc3Qgb2YgYWxs
IHBlbmRpbmcgdGFza3MgdGhhdCBuZWVkIHRvIGJlIHByb2Nlc3NlZCBhdCBhIGZ1dHVyZQorICAv
LyB0aW1lIGJhc2VkIHVwb24gYSBkZWxheS4gT24gdGhlIG9mZiBjaGFuZ2UgdGhlIGRlbGF5ZWQg
dGFzayBzaG91bGQKKyAgLy8gaGFwcGVuIGF0IGV4YWN0bHkgdGhlIHNhbWUgdGltZSBpbnRlcnZh
bCBhcyBhbm90aGVyIHRhc2sgdGhlbiB0aGUKKyAgLy8gdGFzayBpcyBwcm9jZXNzZWQgYmFzZWQg
b24gRklGTyBvcmRlcmluZy4gc3RkOjpwcmlvcml0eV9xdWV1ZSB3YXMKKyAgLy8gY29uc2lkZXJl
ZCBidXQgcmVqZWN0ZWQgZHVlIHRvIGl0cyBpbmFiaWxpdHkgdG8gZXh0cmFjdCB0aGUKKyAgLy8g
c3RkOjp1bmlxdWVfcHRyIG91dCBvZiB0aGUgcXVldWUgd2l0aG91dCB0aGUgcHJlc2VuY2Ugb2Yg
YSBoYWNrLgorICBzdGQ6Om1hcDxEZWxheWVkRW50cnlUaW1lb3V0LCBzdGQ6OnVuaXF1ZV9wdHI8
UXVldWVkVGFzaz4+IGRlbGF5ZWRfcXVldWVfCisgICAgICBSVENfR1VBUkRFRF9CWShwZW5kaW5n
X2xvY2tfKTsKK307CisKKy8vIHN0YXRpYwordGhyZWFkX2xvY2FsIFRhc2tRdWV1ZTo6SW1wbCog
VGFza1F1ZXVlOjpJbXBsOjp0aHJlYWRfY29udGV4dF8gPSBudWxscHRyOworCitUYXNrUXVldWU6
OkltcGw6OkltcGwoY29uc3QgY2hhciogcXVldWVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBUYXNrUXVldWUqIHF1ZXVlLAorICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5IHByaW9y
aXR5KQorICAgIDogcXVldWVfKHF1ZXVlKSwKKyAgICAgIHN0YXJ0ZWRfKC8qbWFudWFsX3Jlc2V0
PSovZmFsc2UsIC8qaW5pdGlhbGx5X3NpZ25hbGVkPSovZmFsc2UpLAorICAgICAgc3RvcHBlZF8o
LyptYW51YWxfcmVzZXQ9Ki9mYWxzZSwgLyppbml0aWFsbHlfc2lnbmFsZWQ9Ki9mYWxzZSksCisg
ICAgICBmbGFnX25vdGlmeV8oLyptYW51YWxfcmVzZXQ9Ki9mYWxzZSwgLyppbml0aWFsbHlfc2ln
bmFsZWQ9Ki9mYWxzZSksCisgICAgICB0aHJlYWRfKCZUYXNrUXVldWU6OkltcGw6OlRocmVhZE1h
aW4sCisgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgIHF1ZXVlX25hbWUsCisgICAg
ICAgICAgICAgIFRhc2tRdWV1ZVByaW9yaXR5VG9UaHJlYWRQcmlvcml0eShwcmlvcml0eSkpIHsK
KyAgUlRDX0RDSEVDSyhxdWV1ZV9uYW1lKTsKKyAgdGhyZWFkXy5TdGFydCgpOworICBzdGFydGVk
Xy5XYWl0KEV2ZW50OjprRm9yZXZlcik7Cit9CisKK1Rhc2tRdWV1ZTo6SW1wbDo6fkltcGwoKSB7
CisgIFJUQ19EQ0hFQ0soIUlzQ3VycmVudCgpKTsKKworICB7CisgICAgQ3JpdFNjb3BlIGxvY2so
JnBlbmRpbmdfbG9ja18pOworICAgIHRocmVhZF9zaG91bGRfcXVpdF8gPSB0cnVlOworICB9CisK
KyAgTm90aWZ5V2FrZSgpOworCisgIHN0b3BwZWRfLldhaXQoRXZlbnQ6OmtGb3JldmVyKTsKKyAg
dGhyZWFkXy5TdG9wKCk7Cit9CisKKy8vIHN0YXRpYworVGFza1F1ZXVlOjpJbXBsKiBUYXNrUXVl
dWU6OkltcGw6OkN1cnJlbnQoKSB7CisgIHJldHVybiB0aHJlYWRfY29udGV4dF87Cit9CisKKy8v
IHN0YXRpYworVGFza1F1ZXVlKiBUYXNrUXVldWU6OkltcGw6OkN1cnJlbnRRdWV1ZSgpIHsKKyAg
VGFza1F1ZXVlOjpJbXBsKiBjdXJyZW50ID0gQ3VycmVudCgpOworICByZXR1cm4gY3VycmVudCA/
IGN1cnJlbnQtPnF1ZXVlXyA6IG51bGxwdHI7Cit9CisKK2Jvb2wgVGFza1F1ZXVlOjpJbXBsOjpJ
c0N1cnJlbnQoKSBjb25zdCB7CisgIHJldHVybiBJc1RocmVhZFJlZkVxdWFsKHRocmVhZF8uR2V0
VGhyZWFkUmVmKCksIEN1cnJlbnRUaHJlYWRSZWYoKSk7Cit9CisKK3ZvaWQgVGFza1F1ZXVlOjpJ
bXBsOjpQb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaykgeworICB7Cisg
ICAgQ3JpdFNjb3BlIGxvY2soJnBlbmRpbmdfbG9ja18pOworICAgIE9yZGVySWQgb3JkZXIgPSB0
aHJlYWRfcG9zdGluZ19vcmRlcl8rKzsKKworICAgIHBlbmRpbmdfcXVldWVfLnB1c2goc3RkOjpw
YWlyPE9yZGVySWQsIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPj4oCisgICAgICAgIG9yZGVy
LCBzdGQ6Om1vdmUodGFzaykpKTsKKyAgfQorCisgIE5vdGlmeVdha2UoKTsKK30KKwordm9pZCBU
YXNrUXVldWU6OkltcGw6OlBvc3REZWxheWVkVGFzayhzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFz
az4gdGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
bWlsbGlzZWNvbmRzKSB7CisgIGF1dG8gZmlyZV9hdCA9IHJ0Yzo6VGltZU1pbGxpcygpICsgbWls
bGlzZWNvbmRzOworCisgIERlbGF5ZWRFbnRyeVRpbWVvdXQgZGVsYXk7CisgIGRlbGF5Lm5leHRf
ZmlyZV9hdF9tc18gPSBmaXJlX2F0OworCisgIHsKKyAgICBDcml0U2NvcGUgbG9jaygmcGVuZGlu
Z19sb2NrXyk7CisgICAgZGVsYXkub3JkZXJfID0gKyt0aHJlYWRfcG9zdGluZ19vcmRlcl87Cisg
ICAgZGVsYXllZF9xdWV1ZV9bZGVsYXldID0gc3RkOjptb3ZlKHRhc2spOworICB9CisKKyAgTm90
aWZ5V2FrZSgpOworfQorCit2b2lkIFRhc2tRdWV1ZTo6SW1wbDo6UG9zdFRhc2tBbmRSZXBseShz
dGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiByZXBseSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tRdWV1ZTo6SW1wbCogcmVwbHlf
cXVldWUpIHsKKyAgUXVldWVkVGFzayogdGFza19wdHIgPSB0YXNrLnJlbGVhc2UoKTsKKyAgUXVl
dWVkVGFzayogcmVwbHlfdGFza19wdHIgPSByZXBseS5yZWxlYXNlKCk7CisgIFBvc3RUYXNrKFt0
YXNrX3B0ciwgcmVwbHlfdGFza19wdHIsIHJlcGx5X3F1ZXVlXSgpIHsKKyAgICBpZiAodGFza19w
dHItPlJ1bigpKQorICAgICAgZGVsZXRlIHRhc2tfcHRyOworCisgICAgcmVwbHlfcXVldWUtPlBv
c3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPihyZXBseV90YXNrX3B0cikpOworICB9
KTsKK30KKworVGFza1F1ZXVlOjpJbXBsOjpOZXh0VGFzayBUYXNrUXVldWU6OkltcGw6OkdldE5l
eHRUYXNrKCkgeworICBOZXh0VGFzayByZXN1bHR7fTsKKworICBhdXRvIHRpY2sgPSBydGM6OlRp
bWVNaWxsaXMoKTsKKworICBDcml0U2NvcGUgbG9jaygmcGVuZGluZ19sb2NrXyk7CisKKyAgaWYg
KHRocmVhZF9zaG91bGRfcXVpdF8pIHsKKyAgICByZXN1bHQuZmluYWxfdGFza18gPSB0cnVlOwor
ICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBpZiAoZGVsYXllZF9xdWV1ZV8uc2l6ZSgpID4g
MCkgeworICAgIGF1dG8gZGVsYXllZF9lbnRyeSA9IGRlbGF5ZWRfcXVldWVfLmJlZ2luKCk7Cisg
ICAgY29uc3QgYXV0byYgZGVsYXlfaW5mbyA9IGRlbGF5ZWRfZW50cnktPmZpcnN0OworICAgIGF1
dG8mIGRlbGF5X3J1biA9IGRlbGF5ZWRfZW50cnktPnNlY29uZDsKKyAgICBpZiAodGljayA+PSBk
ZWxheV9pbmZvLm5leHRfZmlyZV9hdF9tc18pIHsKKyAgICAgIGlmIChwZW5kaW5nX3F1ZXVlXy5z
aXplKCkgPiAwKSB7CisgICAgICAgIGF1dG8mIGVudHJ5ID0gcGVuZGluZ19xdWV1ZV8uZnJvbnQo
KTsKKyAgICAgICAgYXV0byYgZW50cnlfb3JkZXIgPSBlbnRyeS5maXJzdDsKKyAgICAgICAgYXV0
byYgZW50cnlfcnVuID0gZW50cnkuc2Vjb25kOworICAgICAgICBpZiAoZW50cnlfb3JkZXIgPCBk
ZWxheV9pbmZvLm9yZGVyXykgeworICAgICAgICAgIHJlc3VsdC5ydW5fdGFza18gPSBzdGQ6Om1v
dmUoZW50cnlfcnVuKTsKKyAgICAgICAgICBwZW5kaW5nX3F1ZXVlXy5wb3AoKTsKKyAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJlc3VsdC5ydW5f
dGFza18gPSBzdGQ6Om1vdmUoZGVsYXlfcnVuKTsKKyAgICAgIGRlbGF5ZWRfcXVldWVfLmVyYXNl
KGRlbGF5ZWRfZW50cnkpOworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICByZXN1
bHQuc2xlZXBfdGltZV9tc18gPSBkZWxheV9pbmZvLm5leHRfZmlyZV9hdF9tc18gLSB0aWNrOwor
ICB9CisKKyAgaWYgKHBlbmRpbmdfcXVldWVfLnNpemUoKSA+IDApIHsKKyAgICBhdXRvJiBlbnRy
eSA9IHBlbmRpbmdfcXVldWVfLmZyb250KCk7CisgICAgcmVzdWx0LnJ1bl90YXNrXyA9IHN0ZDo6
bW92ZShlbnRyeS5zZWNvbmQpOworICAgIHBlbmRpbmdfcXVldWVfLnBvcCgpOworICB9CisKKyAg
cmV0dXJuIHJlc3VsdDsKK30KKworLy8gc3RhdGljCit2b2lkIFRhc2tRdWV1ZTo6SW1wbDo6VGhy
ZWFkTWFpbih2b2lkKiBjb250ZXh0KSB7CisgIFRhc2tRdWV1ZTo6SW1wbCogbWUgPSBzdGF0aWNf
Y2FzdDxUYXNrUXVldWU6OkltcGwqPihjb250ZXh0KTsKKyAgbWUtPlByb2Nlc3NUYXNrcygpOwor
fQorCit2b2lkIFRhc2tRdWV1ZTo6SW1wbDo6UHJvY2Vzc1Rhc2tzKCkgeworICB0aHJlYWRfY29u
dGV4dF8gPSB0aGlzOworICBzdGFydGVkXy5TZXQoKTsKKworICB3aGlsZSAodHJ1ZSkgeworICAg
IGF1dG8gdGFzayA9IEdldE5leHRUYXNrKCk7CisKKyAgICBpZiAodGFzay5maW5hbF90YXNrXykK
KyAgICAgIGJyZWFrOworCisgICAgaWYgKHRhc2sucnVuX3Rhc2tfKSB7CisgICAgICAvLyBwcm9j
ZXNzIGVudHJ5IGltbWVkaWF0ZWx5IHRoZW4gdHJ5IGFnYWluCisgICAgICBRdWV1ZWRUYXNrKiBy
ZWxlYXNlX3B0ciA9IHRhc2sucnVuX3Rhc2tfLnJlbGVhc2UoKTsKKyAgICAgIGlmIChyZWxlYXNl
X3B0ci0+UnVuKCkpCisgICAgICAgIGRlbGV0ZSByZWxlYXNlX3B0cjsKKworICAgICAgLy8gYXR0
ZW1wdCB0byBzbGVlcCBhZ2FpbgorICAgICAgY29udGludWU7CisgICAgfQorCisgICAgaWYgKDAg
PT0gdGFzay5zbGVlcF90aW1lX21zXykKKyAgICAgIGZsYWdfbm90aWZ5Xy5XYWl0KEV2ZW50Ojpr
Rm9yZXZlcik7CisgICAgZWxzZQorICAgICAgZmxhZ19ub3RpZnlfLldhaXQodGFzay5zbGVlcF90
aW1lX21zXyk7CisgIH0KKworICBzdG9wcGVkXy5TZXQoKTsKK30KKwordm9pZCBUYXNrUXVldWU6
OkltcGw6Ok5vdGlmeVdha2UoKSB7CisgIC8vIFRoZSBxdWV1ZSBob2xkcyBwZW5kaW5nIHRhc2tz
IHRvIGNvbXBsZXRlLiBFaXRoZXIgdGFza3MgYXJlIHRvIGJlCisgIC8vIGV4ZWN1dGVkIGltbWVk
aWF0ZWx5IG9yIHRhc2tzIGFyZSB0byBiZSBydW4gYXQgc29tZSBmdXR1cmUgZGVsYXllZCB0aW1l
LgorICAvLyBGb3IgaW1tZWRpYXRlIHRhc2tzIHRoZSB0YXNrIHF1ZXVlJ3MgdGhyZWFkIGlzIGJ1
c3kgcnVubmluZyB0aGUgdGFzayBhbmQKKyAgLy8gdGhlIHRocmVhZCB3aWxsIG5vdCBiZSB3YWl0
aW5nIG9uIHRoZSBmbGFnX25vdGlmeV8gZXZlbnQuIElmIG5vIGltbWVkaWF0ZQorICAvLyB0YXNr
cyBhcmUgYXZhaWxhYmxlIGJ1dCBhIGRlbGF5ZWQgdGFzayBpcyBwZW5kaW5nIHRoZW4gdGhlIHRo
cmVhZCB3aWxsIGJlCisgIC8vIHdhaXRpbmcgb24gZmxhZ19ub3RpZnlfIHdpdGggYSBkZWxheWVk
IHRpbWUtb3V0IG9mIHRoZSBuZWFyZXN0IHRpbWVkIHRhc2sKKyAgLy8gdG8gcnVuLiBJZiBubyBp
bW1lZGlhdGUgb3IgcGVuZGluZyB0YXNrcyBhcmUgYXZhaWxhYmxlLCB0aGUgdGhyZWFkIHdpbGwK
KyAgLy8gd2FpdCBvbiBmbGFnX25vdGlmeV8gdW50aWwgc2lnbmFsZWQgdGhhdCBhIHRhc2sgaGFz
IGJlZW4gYWRkZWQgKG9yIHRoZQorICAvLyB0aHJlYWQgdG8gYmUgdG9sZCB0byBzaHV0ZG93biku
CisKKyAgLy8gSW4gYWxsIGNhc2VzLCB3aGVuIGEgbmV3IGltbWVkaWF0ZSB0YXNrLCBkZWxheWVk
IHRhc2ssIG9yIHJlcXVlc3QgdG8KKyAgLy8gc2h1dGRvd24gdGhlIHRocmVhZCBpcyBhZGRlZCB0
aGUgZmxhZ19ub3RpZnlfIGlzIHNpZ25hbGVkIGFmdGVyLiBJZiB0aGUKKyAgLy8gdGhyZWFkIHdh
cyB3YWl0aW5nIHRoZW4gdGhlIHRocmVhZCB3aWxsIHdha2UgdXAgaW1tZWRpYXRlbHkgYW5kIHJl
LWFzc2VzcworICAvLyB3aGF0IHRhc2sgbmVlZHMgdG8gYmUgcnVuIG5leHQgKGkuZS4gcnVuIGEg
dGFzayBub3csIHdhaXQgZm9yIHRoZSBuZWFyZXN0CisgIC8vIHRpbWVkIGRlbGF5ZWQgdGFzaywg
b3Igc2h1dGRvd24gdGhlIHRocmVhZCkuIElmIHRoZSB0aHJlYWQgd2FzIG5vdCB3YWl0aW5nCisg
IC8vIHRoZW4gdGhlIHRocmVhZCB3aWxsIHJlbWFpbmVkIHNpZ25hbGVkIHRvIHdha2UgdXAgdGhl
IG5leHQgdGltZSBhbnkKKyAgLy8gYXR0ZW1wdCB0byB3YWl0IG9uIHRoZSBmbGFnX25vdGlmeV8g
ZXZlbnQgb2NjdXJzLgorCisgIC8vIEFueSBpbW1lZGlhdGUgb3IgZGVsYXllZCBwZW5kaW5nIHRh
c2sgKG9yIHJlcXVlc3QgdG8gc2h1dGRvd24gdGhlIHRocmVhZCkKKyAgLy8gbXVzdCBhbHdheXMg
YmUgYWRkZWQgdG8gdGhlIHF1ZXVlIHByaW9yIHRvIHNpZ25hbGluZyBmbGFnX25vdGlmeV8gdG8g
d2FrZQorICAvLyB1cCB0aGUgcG9zc2libHkgc2xlZXBpbmcgdGhyZWFkLiBUaGlzIHByZXZlbnRz
IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlCisgIC8vIHRocmVhZCBpcyBub3RpZmllZCB0byB3
YWtlIHVwIGJ1dCB0aGUgdGFzayBxdWV1ZSdzIHRocmVhZCBmaW5kcyBub3RoaW5nIHRvCisgIC8v
IGRvIHNvIGl0IHdhaXRzIG9uY2UgYWdhaW4gdG8gYmUgc2lnbmFsZWQgd2hlcmUgc3VjaCBhIHNp
Z25hbCBtYXkgbmV2ZXIKKyAgLy8gaGFwcGVuLgorICBmbGFnX25vdGlmeV8uU2V0KCk7Cit9CisK
Ky8vIEJvaWxlcnBsYXRlIGZvciB0aGUgUElNUEwgcGF0dGVybi4KK1Rhc2tRdWV1ZTo6VGFza1F1
ZXVlKGNvbnN0IGNoYXIqIHF1ZXVlX25hbWUsIFByaW9yaXR5IHByaW9yaXR5KQorICAgIDogaW1w
bF8obmV3IFJlZkNvdW50ZWRPYmplY3Q8VGFza1F1ZXVlOjpJbXBsPihxdWV1ZV9uYW1lLCB0aGlz
LCBwcmlvcml0eSkpIHsKK30KKworVGFza1F1ZXVlOjp+VGFza1F1ZXVlKCkge30KKworLy8gc3Rh
dGljCitUYXNrUXVldWUqIFRhc2tRdWV1ZTo6Q3VycmVudCgpIHsKKyAgcmV0dXJuIFRhc2tRdWV1
ZTo6SW1wbDo6Q3VycmVudFF1ZXVlKCk7Cit9CisKKy8vIFVzZWQgZm9yIERDSEVDS2luZyB0aGUg
Y3VycmVudCBxdWV1ZS4KK2Jvb2wgVGFza1F1ZXVlOjpJc0N1cnJlbnQoKSBjb25zdCB7CisgIHJl
dHVybiBpbXBsXy0+SXNDdXJyZW50KCk7Cit9CisKK3ZvaWQgVGFza1F1ZXVlOjpQb3N0VGFzayhz
dGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaykgeworICByZXR1cm4gVGFza1F1ZXVlOjpp
bXBsXy0+UG9zdFRhc2soc3RkOjptb3ZlKHRhc2spKTsKK30KKwordm9pZCBUYXNrUXVldWU6OlBv
c3RUYXNrQW5kUmVwbHkoc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHRhc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gcmVw
bHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrUXVldWUqIHJlcGx5X3F1
ZXVlKSB7CisgIHJldHVybiBUYXNrUXVldWU6OmltcGxfLT5Qb3N0VGFza0FuZFJlcGx5KHN0ZDo6
bW92ZSh0YXNrKSwgc3RkOjptb3ZlKHJlcGx5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbHlfcXVldWUtPmltcGxfLmdldCgpKTsKK30KKwordm9pZCBU
YXNrUXVldWU6OlBvc3RUYXNrQW5kUmVwbHkoc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHRh
c2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVl
dWVkVGFzaz4gcmVwbHkpIHsKKyAgcmV0dXJuIFRhc2tRdWV1ZTo6aW1wbF8tPlBvc3RUYXNrQW5k
UmVwbHkoc3RkOjptb3ZlKHRhc2spLCBzdGQ6Om1vdmUocmVwbHkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsXy5nZXQoKSk7Cit9CisKK3ZvaWQgVGFz
a1F1ZXVlOjpQb3N0RGVsYXllZFRhc2soc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHRhc2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1pbGxpc2Vjb25kcykg
eworICByZXR1cm4gVGFza1F1ZXVlOjppbXBsXy0+UG9zdERlbGF5ZWRUYXNrKHN0ZDo6bW92ZSh0
YXNrKSwgbWlsbGlzZWNvbmRzKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFz
a19xdWV1ZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfdW5pdHRlc3QuY2MKaW5kZXggY2VkZjY4ZTJlODUx
MzU5YzUwNWU0YzM0YjE0YjljZDg5YmRhZWU2My4uMGFmMzlhNWU3MTVmYjE1NzhjMzU5YmU2YzI4
Y2M0MWFkM2RkODI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlX3Vu
aXR0ZXN0LmNjCkBAIC02NCw3ICs2NCw3IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgQ29uc3RydWN0
KSB7CiAKIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdEFuZENoZWNrQ3VycmVudCkgewogICBzdGF0
aWMgY29uc3QgY2hhciBrUXVldWVOYW1lW10gPSAiUG9zdEFuZENoZWNrQ3VycmVudCI7Ci0gIEV2
ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBUYXNrUXVldWUgcXVl
dWUoa1F1ZXVlTmFtZSk7CiAKICAgLy8gV2UncmUgbm90IHJ1bm5pbmcgYSB0YXNrLCBzbyB0aGVy
ZSBzaG91bGRuJ3QgYmUgYSBjdXJyZW50IHF1ZXVlLgpAQCAtMTA2LDcgKzEwNiw3IEBAIFRFU1Qo
VGFza1F1ZXVlVGVzdCwgUG9zdExhbWJkYSkgewogCiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RE
ZWxheWVkWmVybykgewogICBzdGF0aWMgY29uc3QgY2hhciBrUXVldWVOYW1lW10gPSAiUG9zdERl
bGF5ZWRaZXJvIjsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7
CiAgIFRhc2tRdWV1ZSBxdWV1ZShrUXVldWVOYW1lKTsKIAogICBxdWV1ZS5Qb3N0RGVsYXllZFRh
c2soWyZldmVudF0oKSB7IGV2ZW50LlNldCgpOyB9LCAwKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBU
RVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3REZWxheWVkWmVybykgewogCiBURVNUKFRhc2tRdWV1ZVRl
c3QsIFBvc3RGcm9tUXVldWUpIHsKICAgc3RhdGljIGNvbnN0IGNoYXIga1F1ZXVlTmFtZVtdID0g
IlBvc3RGcm9tUXVldWUiOwotICBFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBFdmVudCBl
dmVudDsKICAgVGFza1F1ZXVlIHF1ZXVlKGtRdWV1ZU5hbWUpOwogCiAgIHF1ZXVlLlBvc3RUYXNr
KApAQCAtMTI1LDcgKzEyNSw3IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdEZyb21RdWV1ZSkg
ewogCiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3REZWxheWVkKSB7CiAgIHN0YXRpYyBjb25zdCBj
aGFyIGtRdWV1ZU5hbWVbXSA9ICJQb3N0RGVsYXllZCI7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBm
YWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBUYXNrUXVldWUgcXVldWUoa1F1ZXVlTmFtZSwgVGFz
a1F1ZXVlOjpQcmlvcml0eTo6SElHSCk7CiAKICAgdWludDMyX3Qgc3RhcnQgPSBUaW1lKCk7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBESVNBQkxFRF9Qb3N0RGVsYXll
ZEhpZ2hSZXMpIHsKICAgRW5hYmxlSGlnaFJlc1RpbWVycyBoaWdoX3Jlc19zY29wZTsKIAogICBz
dGF0aWMgY29uc3QgY2hhciBrUXVldWVOYW1lW10gPSAiUG9zdERlbGF5ZWRIaWdoUmVzIjsKLSAg
RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7CiAgIFRhc2tRdWV1ZSBx
dWV1ZShrUXVldWVOYW1lLCBUYXNrUXVldWU6OlByaW9yaXR5OjpISUdIKTsKIAogICB1aW50MzJf
dCBzdGFydCA9IFRpbWUoKTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBURVNUKFRhc2tRdWV1ZVRlc3Qs
IFBvc3RNdWx0aXBsZURlbGF5ZWQpIHsKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RXZlbnQ+PiBldmVudHM7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKLSAgICBl
dmVudHMucHVzaF9iYWNrKHN0ZDo6dW5pcXVlX3B0cjxFdmVudD4obmV3IEV2ZW50KGZhbHNlLCBm
YWxzZSkpKTsKKyAgICBldmVudHMucHVzaF9iYWNrKGFic2w6Om1ha2VfdW5pcXVlPEV2ZW50Pigp
KTsKICAgICBxdWV1ZS5Qb3N0RGVsYXllZFRhc2soQmluZCgmQ2hlY2tDdXJyZW50LCBldmVudHMu
YmFjaygpLmdldCgpLCAmcXVldWUpLCBpKTsKICAgfQogCkBAIC0xNzUsOCArMTc1LDggQEAgVEVT
VChUYXNrUXVldWVUZXN0LCBQb3N0TXVsdGlwbGVEZWxheWVkKSB7CiAKIFRFU1QoVGFza1F1ZXVl
VGVzdCwgUG9zdERlbGF5ZWRBZnRlckRlc3RydWN0KSB7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtR
dWV1ZU5hbWVbXSA9ICJQb3N0RGVsYXllZEFmdGVyRGVzdHJ1Y3QiOwotICBFdmVudCBydW4oZmFs
c2UsIGZhbHNlKTsKLSAgRXZlbnQgZGVsZXRlZChmYWxzZSwgZmFsc2UpOworICBFdmVudCBydW47
CisgIEV2ZW50IGRlbGV0ZWQ7CiAgIHsKICAgICBUYXNrUXVldWUgcXVldWUoa1F1ZXVlTmFtZSk7
CiAgICAgcXVldWUuUG9zdERlbGF5ZWRUYXNrKApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1QoVGFz
a1F1ZXVlVGVzdCwgUG9zdERlbGF5ZWRBZnRlckRlc3RydWN0KSB7CiBURVNUKFRhc2tRdWV1ZVRl
c3QsIFBvc3RBbmRSZXBseSkgewogICBzdGF0aWMgY29uc3QgY2hhciBrUG9zdFF1ZXVlW10gPSAi
UG9zdFF1ZXVlIjsKICAgc3RhdGljIGNvbnN0IGNoYXIga1JlcGx5UXVldWVbXSA9ICJSZXBseVF1
ZXVlIjsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7CiAgIFRh
c2tRdWV1ZSBwb3N0X3F1ZXVlKGtQb3N0UXVldWUpOwogICBUYXNrUXVldWUgcmVwbHlfcXVldWUo
a1JlcGx5UXVldWUpOwogCkBAIC0yMDQsNyArMjA0LDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBQ
b3N0QW5kUmVwbHkpIHsKIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdEFuZFJldXNlKSB7CiAgIHN0
YXRpYyBjb25zdCBjaGFyIGtQb3N0UXVldWVbXSA9ICJQb3N0UXVldWUiOwogICBzdGF0aWMgY29u
c3QgY2hhciBrUmVwbHlRdWV1ZVtdID0gIlJlcGx5UXVldWUiOwotICBFdmVudCBldmVudChmYWxz
ZSwgZmFsc2UpOworICBFdmVudCBldmVudDsKICAgVGFza1F1ZXVlIHBvc3RfcXVldWUoa1Bvc3RR
dWV1ZSk7CiAgIFRhc2tRdWV1ZSByZXBseV9xdWV1ZShrUmVwbHlRdWV1ZSk7CiAKQEAgLTI1MSw3
ICsyNTEsNyBAQCBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RBbmRSZXVzZSkgewogVEVTVChUYXNr
UXVldWVUZXN0LCBQb3N0QW5kUmVwbHlMYW1iZGEpIHsKICAgc3RhdGljIGNvbnN0IGNoYXIga1Bv
c3RRdWV1ZVtdID0gIlBvc3RRdWV1ZSI7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtSZXBseVF1ZXVl
W10gPSAiUmVwbHlRdWV1ZSI7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50
IGV2ZW50OwogICBUYXNrUXVldWUgcG9zdF9xdWV1ZShrUG9zdFF1ZXVlKTsKICAgVGFza1F1ZXVl
IHJlcGx5X3F1ZXVlKGtSZXBseVF1ZXVlKTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIFRFU1QoVGFz
a1F1ZXVlVGVzdCwgUG9zdENvcHlhYmxlQ2xvc3VyZSkgewogCiAgIGludCBudW1fY29waWVzID0g
MDsKICAgaW50IG51bV9tb3ZlcyA9IDA7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7Cisg
IEV2ZW50IGV2ZW50OwogCiAgIHN0YXRpYyBjb25zdCBjaGFyIGtQb3N0UXVldWVbXSA9ICJQb3N0
Q29weWFibGVDbG9zdXJlIjsKICAgVGFza1F1ZXVlIHBvc3RfcXVldWUoa1Bvc3RRdWV1ZSk7CkBA
IC0zMjMsNyArMzIzLDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0TW92ZU9ubHlDbG9zdXJl
KSB7CiAgIH07CiAKICAgaW50IG51bV9tb3ZlcyA9IDA7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBm
YWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBzdGQ6OnVuaXF1ZV9wdHI8U29tZVN0YXRlPiBzdGF0
ZShuZXcgU29tZVN0YXRlKCZldmVudCkpOwogCiAgIHN0YXRpYyBjb25zdCBjaGFyIGtQb3N0UXVl
dWVbXSA9ICJQb3N0TW92ZU9ubHlDbG9zdXJlIjsKQEAgLTM0Niw4ICszNDYsOCBAQCBURVNUKFRh
c2tRdWV1ZVRlc3QsIFBvc3RNb3ZlT25seUNsZWFudXApIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U29tZVN0YXRlPiBzdGF0ZTsKICAgfTsKIAotICBFdmVudCBldmVudF9ydW4oZmFsc2UsIGZhbHNl
KTsKLSAgRXZlbnQgZXZlbnRfY2xlYW51cChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudF9y
dW47CisgIEV2ZW50IGV2ZW50X2NsZWFudXA7CiAgIHN0ZDo6dW5pcXVlX3B0cjxTb21lU3RhdGU+
IHN0YXRlX3J1bihuZXcgU29tZVN0YXRlKCZldmVudF9ydW4pKTsKICAgc3RkOjp1bmlxdWVfcHRy
PFNvbWVTdGF0ZT4gc3RhdGVfY2xlYW51cChuZXcgU29tZVN0YXRlKCZldmVudF9jbGVhbnVwKSk7
CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RNb3ZlT25seUNs
ZWFudXApIHsKIC8vIHdyaXR0ZW4gaW4gYSB3YXkgdGhhdCBtYWtlcyBpdCBsaWtlbHkgYW5kIGJ5
IHJ1bm5pbmcgd2l0aCAtLWd0ZXN0X3JlcGVhdD0xMDAwCiAvLyB0aGUgYnVnIHdvdWxkIG9jY3Vy
LiBBbGFzLCBub3cgaXQgc2hvdWxkIGJlIGZpeGVkLgogVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0
QW5kUmVwbHlEZWFkbG9jaykgewotICBFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBFdmVu
dCBldmVudDsKICAgVGFza1F1ZXVlIHBvc3RfcXVldWUoIlBvc3RRdWV1ZSIpOwogICBUYXNrUXVl
dWUgcmVwbHlfcXVldWUoIlJlcGx5UXVldWUiKTsKIApAQCAtMzg0LDggKzM4NCw4IEBAIFRFU1Qo
VGFza1F1ZXVlVGVzdCwgUG9zdEFuZFJlcGx5RGVhZGxvY2spIHsKICNkZWZpbmUgTUFZQkVfRGVs
ZXRlVGFza1F1ZXVlQWZ0ZXJQb3N0QW5kUmVwbHkgRGVsZXRlVGFza1F1ZXVlQWZ0ZXJQb3N0QW5k
UmVwbHkKICNlbmRpZgogVEVTVChUYXNrUXVldWVUZXN0LCBNQVlCRV9EZWxldGVUYXNrUXVldWVB
ZnRlclBvc3RBbmRSZXBseSkgewotICBFdmVudCB0YXNrX2RlbGV0ZWQoZmFsc2UsIGZhbHNlKTsK
LSAgRXZlbnQgcmVwbHlfZGVsZXRlZChmYWxzZSwgZmFsc2UpOworICBFdmVudCB0YXNrX2RlbGV0
ZWQ7CisgIEV2ZW50IHJlcGx5X2RlbGV0ZWQ7CiAgIGF1dG8qIHRhc2tfcXVldWUgPSBuZXcgVGFz
a1F1ZXVlKCJRdWV1ZSIpOwogCiAgIHRhc2tfcXVldWUtPlBvc3RUYXNrQW5kUmVwbHkoCkBAIC00
MTMsNyArNDEzLDcgQEAgdm9pZCBUZXN0UG9zdFRhc2tBbmRSZXBseShUYXNrUXVldWUqIHdvcmtf
cXVldWUsIEV2ZW50KiBldmVudCkgewogVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0QW5kUmVwbHky
KSB7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtRdWV1ZU5hbWVbXSA9ICJQb3N0QW5kUmVwbHkyIjsK
ICAgc3RhdGljIGNvbnN0IGNoYXIga1dvcmtRdWV1ZU5hbWVbXSA9ICJQb3N0QW5kUmVwbHkyX1dv
cmtlciI7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBU
YXNrUXVldWUgcXVldWUoa1F1ZXVlTmFtZSk7CiAgIFRhc2tRdWV1ZSB3b3JrX3F1ZXVlKGtXb3Jr
UXVldWVOYW1lKTsKIApAQCAtNDI1LDcgKzQyNSw3IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9z
dEFuZFJlcGx5MikgewogLy8gSW4gc2l0dWF0aW9ucyBsaWtlIHRoYXQsIHRhc2tzIHdpbGwgZ2V0
IGRyb3BwZWQuCiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RBTG90KSB7CiAgIC8vIFRvIGRlc3Ry
dWN0IHRoZSBldmVudCBhZnRlciB0aGUgcXVldWUgaGFzIGdvbmUgb3V0IG9mIHNjb3BlLgotICBF
dmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudDsKIAogICBpbnQgdGFza3Nf
ZXhlY3V0ZWQgPSAwOwogICBpbnQgdGFza3NfY2xlYW5lZF91cCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0Y2xp
ZW50LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvdGVzdGNsaWVudC5jYwppbmRleCA3YzE1MWM3NTEwMWU3YjA1ODdmYWFjODAyZDU2MDMxZGE0
ZDQyNTRmLi5hNWI5MGRkZDIwMTdkZDZmMjgwYmZhYzdkN2E1YTYyYTc5NmVhYTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90
ZXN0Y2xpZW50LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3Rlc3RjbGllbnQuY2MKQEAgLTk3LDcgKzk3LDcgQEAgYm9vbCBUZXN0Q2xp
ZW50OjpDaGVja05leHRQYWNrZXQoY29uc3QgY2hhciogYnVmLAogICBzdGQ6OnVuaXF1ZV9wdHI8
UGFja2V0PiBwYWNrZXQgPSBOZXh0UGFja2V0KGtUaW1lb3V0TXMpOwogICBpZiAocGFja2V0KSB7
CiAgICAgcmVzID0gKHBhY2tldC0+c2l6ZSA9PSBzaXplICYmIG1lbWNtcChwYWNrZXQtPmJ1Ziwg
YnVmLCBzaXplKSA9PSAwICYmCi0gICAgICAgICAgIENoZWNrVGltZXN0YW1wKHBhY2tldC0+cGFj
a2V0X3RpbWUudGltZXN0YW1wKSk7CisgICAgICAgICAgIENoZWNrVGltZXN0YW1wKHBhY2tldC0+
cGFja2V0X3RpbWVfdXMpKTsKICAgICBpZiAoYWRkcikKICAgICAgICphZGRyID0gcGFja2V0LT5h
ZGRyOwogICB9CkBAIC0xNDQsMTAgKzE0NCwxMCBAQCB2b2lkIFRlc3RDbGllbnQ6Ok9uUGFja2V0
KEFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRUaW1lJiBwYWNrZXRfdGlt
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGlt
ZV91cykgewogICBDcml0U2NvcGUgY3MoJmNyaXRfKTsKICAgcGFja2V0c18ucHVzaF9iYWNrKAot
ICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UGFja2V0PihyZW1vdGVfYWRkciwgYnVmLCBzaXplLCBw
YWNrZXRfdGltZSkpOworICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UGFja2V0PihyZW1vdGVfYWRk
ciwgYnVmLCBzaXplLCBwYWNrZXRfdGltZV91cykpOwogfQogCiB2b2lkIFRlc3RDbGllbnQ6Ok9u
UmVhZHlUb1NlbmQoQXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCkgewpAQCAtMTU3LDE0ICsxNTcs
MTQgQEAgdm9pZCBUZXN0Q2xpZW50OjpPblJlYWR5VG9TZW5kKEFzeW5jUGFja2V0U29ja2V0KiBz
b2NrZXQpIHsKIFRlc3RDbGllbnQ6OlBhY2tldDo6UGFja2V0KGNvbnN0IFNvY2tldEFkZHJlc3Mm
IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkKLSAgICA6IGFkZHIoYSksIGJ1ZigwKSwgc2l6
ZShzKSwgcGFja2V0X3RpbWUocGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpCisgICAgOiBhZGRyKGEpLCBidWYoMCksIHNpemUo
cyksIHBhY2tldF90aW1lX3VzKHBhY2tldF90aW1lX3VzKSB7CiAgIGJ1ZiA9IG5ldyBjaGFyW3Np
emVdOwogICBtZW1jcHkoYnVmLCBiLCBzaXplKTsKIH0KIAogVGVzdENsaWVudDo6UGFja2V0OjpQ
YWNrZXQoY29uc3QgUGFja2V0JiBwKQotICAgIDogYWRkcihwLmFkZHIpLCBidWYoMCksIHNpemUo
cC5zaXplKSwgcGFja2V0X3RpbWUocC5wYWNrZXRfdGltZSkgeworICAgIDogYWRkcihwLmFkZHIp
LCBidWYoMCksIHNpemUocC5zaXplKSwgcGFja2V0X3RpbWVfdXMocC5wYWNrZXRfdGltZV91cykg
ewogICBidWYgPSBuZXcgY2hhcltzaXplXTsKICAgbWVtY3B5KGJ1ZiwgcC5idWYsIHNpemUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvdGVzdGNsaWVudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvdGVzdGNsaWVudC5oCmluZGV4IGEwZDk4YjMwZDE2NTRiYzYwZDJh
M2Q5NzQxYzg5ZGExNDFkYjUyYWQuLjE2ZmI2YmE2NzdjMjIyNmRmODk4YjA5ZWIzZGI5YjRhN2M5
NTI2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3Rlc3RjbGllbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0Y2xpZW50LmgKQEAgLTI5LDE0ICsyOSwxNCBA
QCBjbGFzcyBUZXN0Q2xpZW50IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICBQ
YWNrZXQoY29uc3QgU29ja2V0QWRkcmVzcyYgYSwKICAgICAgICAgICAgY29uc3QgY2hhciogYiwK
ICAgICAgICAgICAgc2l6ZV90IHMsCi0gICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKTsKKyAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAgICAgUGFja2V0
KGNvbnN0IFBhY2tldCYgcCk7CiAgICAgdmlydHVhbCB+UGFja2V0KCk7CiAKICAgICBTb2NrZXRB
ZGRyZXNzIGFkZHI7CiAgICAgY2hhciogYnVmOwogICAgIHNpemVfdCBzaXplOwotICAgIFBhY2tl
dFRpbWUgcGFja2V0X3RpbWU7CisgICAgaW50NjRfdCBwYWNrZXRfdGltZV91czsKICAgfTsKIAog
ICAvLyBEZWZhdWx0IHRpbWVvdXQgZm9yIE5leHRQYWNrZXQgcmVhZHMuCkBAIC05Nyw3ICs5Nyw3
IEBAIGNsYXNzIFRlc3RDbGllbnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICBzaXplX3QgbGVu
LAogICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAg
ICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQgT25SZWFkeVRvU2Vu
ZChBc3luY1BhY2tldFNvY2tldCogc29ja2V0KTsKICAgYm9vbCBDaGVja1RpbWVzdGFtcChpbnQ2
NF90IHBhY2tldF90aW1lc3RhbXApOwogICB2b2lkIEFkdmFuY2VUaW1lKGludCBtcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS90ZXN0ZWNob3NlcnZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvdGVzdGVjaG9zZXJ2ZXIuaAppbmRleCA1ZTcxNGViNjNkZDMwZTBlNjk2
NzViMWUwZGY5ZmU0NzlmMmFmZjRhLi45ZmZkNzg2MjJhNDVmNzIwMmM4OTc1MmIxZTMyOTI3MjRk
YTBiOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS90ZXN0ZWNob3NlcnZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3RlY2hvc2VydmVyLmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgY2xhc3MgVGVzdEVjaG9TZXJ2ZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3Rz
PD4gewogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICBz
aXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICBjb25zdCBTb2NrZXRBZGRyZXNzJiByZW1vdGVf
YWRkciwKLSAgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewor
ICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovKSB7CiAg
ICAgcnRjOjpQYWNrZXRPcHRpb25zIG9wdGlvbnM7CiAgICAgc29ja2V0LT5TZW5kKGJ1Ziwgc2l6
ZSwgb3B0aW9ucyk7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5jYwppbmRleCBiNGE3
NDMzZmJkN2YxODMwNTBiNDYyNmY1NThkN2IzMjA1NGM4NzdmLi5mMzI5MmZkNTlmN2NlZTBiMjBl
N2Y4MTk5MmVjMjFlMzI1N2UyNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0dXRpbHMuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGVzdHV0aWxzLmNjCkBA
IC0xNCw3NSArMTQsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0aW5nIHsK
IAogU3RyZWFtU2luazo6U3RyZWFtU2luaygpID0gZGVmYXVsdDsKLQogU3RyZWFtU2luazo6flN0
cmVhbVNpbmsoKSA9IGRlZmF1bHQ7CiAKLVN0cmVhbVNvdXJjZTo6U3RyZWFtU291cmNlKCkgewot
ICBDbGVhcigpOwotfQotCi1TdHJlYW1Tb3VyY2U6On5TdHJlYW1Tb3VyY2UoKSA9IGRlZmF1bHQ7
Ci0KLVN0cmVhbVN0YXRlIFN0cmVhbVNvdXJjZTo6R2V0U3RhdGUoKSBjb25zdCB7Ci0gIHJldHVy
biBzdGF0ZV87Ci19Ci0KLVN0cmVhbVJlc3VsdCBTdHJlYW1Tb3VyY2U6OlJlYWQodm9pZCogYnVm
ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiByZWFkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSB7Ci0gIGlmIChTU19DTE9TRUQgPT0g
c3RhdGVfKSB7Ci0gICAgaWYgKGVycm9yKQotICAgICAgKmVycm9yID0gLTE7Ci0gICAgcmV0dXJu
IFNSX0VSUk9SOwotICB9Ci0gIGlmICgoU1NfT1BFTklORyA9PSBzdGF0ZV8pIHx8IChyZWFkYWJs
ZV9kYXRhXy5zaXplKCkgPD0gcmVhZF9ibG9ja18pKSB7Ci0gICAgcmV0dXJuIFNSX0JMT0NLOwot
ICB9Ci0gIHNpemVfdCBjb3VudCA9IHN0ZDo6bWluKGJ1ZmZlcl9sZW4sIHJlYWRhYmxlX2RhdGFf
LnNpemUoKSAtIHJlYWRfYmxvY2tfKTsKLSAgbWVtY3B5KGJ1ZmZlciwgJnJlYWRhYmxlX2RhdGFf
WzBdLCBjb3VudCk7Ci0gIHNpemVfdCBuZXdfc2l6ZSA9IHJlYWRhYmxlX2RhdGFfLnNpemUoKSAt
IGNvdW50OwotICAvLyBBdm9pZCB1bmRlZmluZWQgYWNjZXNzIGJleW9uZCB0aGUgbGFzdCBlbGVt
ZW50IG9mIHRoZSB2ZWN0b3IuCi0gIC8vIFRoaXMgb25seSBoYXBwZW5zIHdoZW4gbmV3X3NpemUg
aXMgMC4KLSAgaWYgKGNvdW50IDwgcmVhZGFibGVfZGF0YV8uc2l6ZSgpKSB7Ci0gICAgbWVtbW92
ZSgmcmVhZGFibGVfZGF0YV9bMF0sICZyZWFkYWJsZV9kYXRhX1tjb3VudF0sIG5ld19zaXplKTsK
LSAgfQotICByZWFkYWJsZV9kYXRhXy5yZXNpemUobmV3X3NpemUpOwotICBpZiAocmVhZCkKLSAg
ICAqcmVhZCA9IGNvdW50OwotICByZXR1cm4gU1JfU1VDQ0VTUzsKLX0KLQotU3RyZWFtUmVzdWx0
IFN0cmVhbVNvdXJjZTo6V3JpdGUoY29uc3Qgdm9pZCogZGF0YSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBkYXRhX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCogd3JpdHRlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCogZXJyb3IpIHsKLSAgaWYgKFNTX0NMT1NFRCA9PSBzdGF0ZV8pIHsKLSAgICBpZiAo
ZXJyb3IpCi0gICAgICAqZXJyb3IgPSAtMTsKLSAgICByZXR1cm4gU1JfRVJST1I7Ci0gIH0KLSAg
aWYgKFNTX09QRU5JTkcgPT0gc3RhdGVfKSB7Ci0gICAgcmV0dXJuIFNSX0JMT0NLOwotICB9Ci0g
IGlmIChTSVpFX1VOS05PV04gIT0gd3JpdGVfYmxvY2tfKSB7Ci0gICAgaWYgKHdyaXR0ZW5fZGF0
YV8uc2l6ZSgpID49IHdyaXRlX2Jsb2NrXykgewotICAgICAgcmV0dXJuIFNSX0JMT0NLOwotICAg
IH0KLSAgICBpZiAoZGF0YV9sZW4gPiAod3JpdGVfYmxvY2tfIC0gd3JpdHRlbl9kYXRhXy5zaXpl
KCkpKSB7Ci0gICAgICBkYXRhX2xlbiA9IHdyaXRlX2Jsb2NrXyAtIHdyaXR0ZW5fZGF0YV8uc2l6
ZSgpOwotICAgIH0KLSAgfQotICBpZiAod3JpdHRlbikKLSAgICAqd3JpdHRlbiA9IGRhdGFfbGVu
OwotICBjb25zdCBjaGFyKiBjZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKTsK
LSAgd3JpdHRlbl9kYXRhXy5pbnNlcnQod3JpdHRlbl9kYXRhXy5lbmQoKSwgY2RhdGEsIGNkYXRh
ICsgZGF0YV9sZW4pOwotICByZXR1cm4gU1JfU1VDQ0VTUzsKLX0KLQotdm9pZCBTdHJlYW1Tb3Vy
Y2U6OkNsb3NlKCkgewotICBzdGF0ZV8gPSBTU19DTE9TRUQ7Ci19Ci0KIH0gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0dXRpbHMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3R1dGls
cy5oCmluZGV4IDJhYjRhMzU5NTZhMDU5ZWFjYjc0MzkxNWI1YWUyOGE3MjU0Y2I1YjguLmFjNzQy
MDNjZjlmOTNjZjdiYWEyYTAyZTJkNjljYTY5ODJkZDBiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rl
c3R1dGlscy5oCkBAIC0xOSw5ICsxOSw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogI2luY2x1ZGUg
InJ0Y19iYXNlL2FzeW5jc29ja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IG5hbWVzcGFjZSB0ZXN0aW5nIHsKQEAgLTEzNyw5MSArMTM1LDYgQEAgY2xhc3MgU3RyZWFtU2lu
ayA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIEV2ZW50TWFwIGV2ZW50c187CiB9
OwogCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBTdHJlYW1Tb3VyY2UgLSBJbXBsZW1lbnRz
IHN0cmVhbSBpbnRlcmZhY2UgYW5kIHNpbXVsYXRlcyBhc3luY2hyb25vdXMKLS8vIGV2ZW50cyBv
biB0aGUgc3RyZWFtLCB3aXRob3V0IGEgbmV0d29yay4gIEFsc28gYnVmZmVycyB3cml0dGVuIGRh
dGEuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLWNsYXNzIFN0cmVhbVNvdXJjZSA6IHB1Ymxp
YyBTdHJlYW1JbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgU3RyZWFtU291cmNlKCk7Ci0gIH5TdHJl
YW1Tb3VyY2UoKSBvdmVycmlkZTsKLQotICB2b2lkIENsZWFyKCkgewotICAgIHJlYWRhYmxlX2Rh
dGFfLmNsZWFyKCk7Ci0gICAgd3JpdHRlbl9kYXRhXy5jbGVhcigpOwotICAgIHN0YXRlXyA9IFNT
X0NMT1NFRDsKLSAgICByZWFkX2Jsb2NrXyA9IDA7Ci0gICAgd3JpdGVfYmxvY2tfID0gU0laRV9V
TktOT1dOOwotICB9Ci0gIHZvaWQgUXVldWVTdHJpbmcoY29uc3QgY2hhciogZGF0YSkgeyBRdWV1
ZURhdGEoZGF0YSwgc3RybGVuKGRhdGEpKTsgfQotI2lmIGRlZmluZWQoX19HTlVDX18pCi0gIC8v
IE5vdGU6IEltcGxpY2l0IHx0aGlzfCBhcmd1bWVudCBjb3VudHMgYXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50LgotICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDIsIDMpKSkKLSNl
bmRpZgotICB2b2lkCi0gIFF1ZXVlU3RyaW5nRihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgewot
ICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOwotICAgIGNoYXIg
YnVmZmVyWzEwMjRdOwotICAgIHNpemVfdCBsZW4gPSB2c3ByaW50Zm4oYnVmZmVyLCBzaXplb2Yo
YnVmZmVyKSwgZm9ybWF0LCBhcmdzKTsKLSAgICBSVENfQ0hFQ0sobGVuIDwgc2l6ZW9mKGJ1ZmZl
cikgLSAxKTsKLSAgICB2YV9lbmQoYXJncyk7Ci0gICAgUXVldWVEYXRhKGJ1ZmZlciwgbGVuKTsK
LSAgfQotICB2b2lkIFF1ZXVlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKSB7Ci0g
ICAgcmVhZGFibGVfZGF0YV8uaW5zZXJ0KHJlYWRhYmxlX2RhdGFfLmVuZCgpLCBkYXRhLCBkYXRh
ICsgbGVuKTsKLSAgICBpZiAoKFNTX09QRU4gPT0gc3RhdGVfKSAmJiAocmVhZGFibGVfZGF0YV8u
c2l6ZSgpID09IGxlbikpIHsKLSAgICAgIFNpZ25hbEV2ZW50KHRoaXMsIFNFX1JFQUQsIDApOwot
ICAgIH0KLSAgfQotICBzdGQ6OnN0cmluZyBSZWFkRGF0YSgpIHsKLSAgICBzdGQ6OnN0cmluZyBk
YXRhOwotICAgIC8vIGF2b2lkIGFjY2Vzc2luZyB3cml0dGVuX2RhdGFfWzBdIGlmIGl0IGlzIHVu
ZGVmaW5lZAotICAgIGlmICh3cml0dGVuX2RhdGFfLnNpemUoKSA+IDApIHsKLSAgICAgIGRhdGEu
aW5zZXJ0KDAsICZ3cml0dGVuX2RhdGFfWzBdLCB3cml0dGVuX2RhdGFfLnNpemUoKSk7Ci0gICAg
fQotICAgIHdyaXR0ZW5fZGF0YV8uY2xlYXIoKTsKLSAgICByZXR1cm4gZGF0YTsKLSAgfQotICB2
b2lkIFNldFN0YXRlKFN0cmVhbVN0YXRlIHN0YXRlKSB7Ci0gICAgaW50IGV2ZW50cyA9IDA7Ci0g
ICAgaWYgKChTU19PUEVOSU5HID09IHN0YXRlXykgJiYgKFNTX09QRU4gPT0gc3RhdGUpKSB7Ci0g
ICAgICBldmVudHMgfD0gU0VfT1BFTjsKLSAgICAgIGlmICghcmVhZGFibGVfZGF0YV8uZW1wdHko
KSkgewotICAgICAgICBldmVudHMgfD0gU0VfUkVBRDsKLSAgICAgIH0KLSAgICB9IGVsc2UgaWYg
KChTU19DTE9TRUQgIT0gc3RhdGVfKSAmJiAoU1NfQ0xPU0VEID09IHN0YXRlKSkgewotICAgICAg
ZXZlbnRzIHw9IFNFX0NMT1NFOwotICAgIH0KLSAgICBzdGF0ZV8gPSBzdGF0ZTsKLSAgICBpZiAo
ZXZlbnRzKSB7Ci0gICAgICBTaWduYWxFdmVudCh0aGlzLCBldmVudHMsIDApOwotICAgIH0KLSAg
fQotICAvLyBXaWxsIGNhdXNlIFJlYWQgdG8gYmxvY2sgd2hlbiB0aGVyZSBhcmUgcG9zIGJ5dGVz
IGluIHRoZSByZWFkIHF1ZXVlLgotICB2b2lkIFNldFJlYWRCbG9jayhzaXplX3QgcG9zKSB7IHJl
YWRfYmxvY2tfID0gcG9zOyB9Ci0gIC8vIFdpbGwgY2F1c2UgV3JpdGUgdG8gYmxvY2sgd2hlbiB0
aGVyZSBhcmUgcG9zIGJ5dGVzIGluIHRoZSB3cml0ZSBxdWV1ZS4KLSAgdm9pZCBTZXRXcml0ZUJs
b2NrKHNpemVfdCBwb3MpIHsgd3JpdGVfYmxvY2tfID0gcG9zOyB9Ci0KLSAgU3RyZWFtU3RhdGUg
R2V0U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgU3RyZWFtUmVzdWx0IFJlYWQodm9pZCogYnVm
ZmVyLAotICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlbiwKLSAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90KiByZWFkLAotICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBv
dmVycmlkZTsKLSAgU3RyZWFtUmVzdWx0IFdyaXRlKGNvbnN0IHZvaWQqIGRhdGEsCi0gICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgZGF0YV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICBzaXpl
X3QqIHdyaXR0ZW4sCi0gICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVycmlkZTsK
LSAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlOwotCi0gcHJpdmF0ZToKLSAgdHlwZWRlZiBzdGQ6OnZl
Y3RvcjxjaGFyPiBCdWZmZXI7Ci0gIEJ1ZmZlciByZWFkYWJsZV9kYXRhXywgd3JpdHRlbl9kYXRh
XzsKLSAgU3RyZWFtU3RhdGUgc3RhdGVfOwotICBzaXplX3QgcmVhZF9ibG9ja18sIHdyaXRlX2Js
b2NrXzsKLX07Ci0KIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xv
dC9zaWdzbG90LmgKaW5kZXggYzc3ZTRlNjc1ZGY1MDRhMDg0MjIzOTMyMjI3ZWFjOGI1NGZiYjQz
NS4uOGJkMWM3MDY0YTM4NDFlM2FhYmI3Y2M1ZmQ3MWVkNGQ3ODA2NTQ4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhpcmRf
cGFydHkvc2lnc2xvdC9zaWdzbG90LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgKQEAg
LTk2LDcgKzk2LDYgQEAKICNpZm5kZWYgUlRDX0JBU0VfVEhJUkRfUEFSVFlfU0lHU0xPVF9TSUdT
TE9UX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1RISVJEX1BBUlRZX1NJR1NMT1RfU0lHU0xPVF9IXwog
Ci0jaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxsaXN0
PgogI2luY2x1ZGUgPHNldD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZC5jYwppbmRleCAyZDU3MDRlMGJl
NzgwYTQ3NDhlZTI1NGY3MjM0MjNiNDJmMTY2OWY3Li40ZGQ1ZmQyMjI0ZjEyYTZhYWViNTJhZTgx
Y2ZiODQ1YjJiZGI0ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aHJlYWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkLmNjCkBAIC0yNCwxNCArMjQs
NDMgQEAKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDcyMikKICNlbmRpZgogCisjaW5jbHVk
ZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmd1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50LmgiCiAKKyNpZiBkZWZpbmVkKFdFQlJUQ19NQUMp
CisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2NvY29hX3RocmVhZGluZy5oIgorCisvKgorICog
VGhlc2UgYXJlIGZvcndhcmQtZGVjbGFyYXRpb25zIGZvciBtZXRob2RzIHRoYXQgYXJlIHBhcnQg
b2YgdGhlCisgKiBPYmpDIHJ1bnRpbWUuIFRoZXkgYXJlIGRlY2xhcmVkIGluIHRoZSBwcml2YXRl
IGhlYWRlciBvYmpjLWludGVybmFsLmguCisgKiBUaGVzZSBjYWxscyBhcmUgd2hhdCBjbGFuZyBp
bnNlcnRzIHdoZW4gdXNpbmcgQGF1dG9yZWxlYXNlcG9vbCBpbiBPYmpDLAorICogYnV0IGhlcmUg
dGhleSBhcmUgdXNlZCBkaXJlY3RseSBpbiBvcmRlciB0byBrZWVwIHRoaXMgZmlsZSBDKysuCisg
KiBodHRwczovL2NsYW5nLmxsdm0ub3JnL2RvY3MvQXV0b21hdGljUmVmZXJlbmNlQ291bnRpbmcu
aHRtbCNydW50aW1lLXN1cHBvcnQKKyAqLworZXh0ZXJuICJDIiB7Cit2b2lkKiBvYmpjX2F1dG9y
ZWxlYXNlUG9vbFB1c2godm9pZCk7Cit2b2lkIG9iamNfYXV0b3JlbGVhc2VQb29sUG9wKHZvaWQq
IHBvb2wpOworfQorCituYW1lc3BhY2UgeworY2xhc3MgU2NvcGVkQXV0b1JlbGVhc2VQb29sIHsK
KyBwdWJsaWM6CisgIFNjb3BlZEF1dG9SZWxlYXNlUG9vbCgpIDogcG9vbF8ob2JqY19hdXRvcmVs
ZWFzZVBvb2xQdXNoKCkpIHt9CisgIH5TY29wZWRBdXRvUmVsZWFzZVBvb2woKSB7IG9iamNfYXV0
b3JlbGVhc2VQb29sUG9wKHBvb2xfKTsgfQorCisgcHJpdmF0ZToKKyAgdm9pZCogY29uc3QgcG9v
bF87Cit9OworfSAgLy8gbmFtZXNwYWNlCisjZW5kaWYKKwogbmFtZXNwYWNlIHJ0YyB7CiAKIFRo
cmVhZE1hbmFnZXIqIFRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCkgewpAQCAtNjEsMTEgKzkwLDEy
IEBAIFRocmVhZCogVGhyZWFkOjpDdXJyZW50KCkgewogfQogCiAjaWYgZGVmaW5lZChXRUJSVENf
UE9TSVgpCi0jaWYgIWRlZmluZWQoV0VCUlRDX01BQykKIFRocmVhZE1hbmFnZXI6OlRocmVhZE1h
bmFnZXIoKSA6IG1haW5fdGhyZWFkX3JlZl8oQ3VycmVudFRocmVhZFJlZigpKSB7CisjaWYgZGVm
aW5lZChXRUJSVENfTUFDKQorICBJbml0Q29jb2FNdWx0aVRocmVhZGluZygpOworI2VuZGlmCiAg
IHB0aHJlYWRfa2V5X2NyZWF0ZSgma2V5XywgbnVsbHB0cik7CiB9Ci0jZW5kaWYKIAogVGhyZWFk
KiBUaHJlYWRNYW5hZ2VyOjpDdXJyZW50VGhyZWFkKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGhyZWFkKj4ocHRocmVhZF9nZXRzcGVjaWZpYyhrZXlfKSk7CkBAIC0xOTMsOCArMjIzLDEwIEBA
IGJvb2wgVGhyZWFkOjpTZXROYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCB2b2lk
KiBvYmopIHsKIAogICBuYW1lXyA9IG5hbWU7CiAgIGlmIChvYmopIHsKLSAgICBjaGFyIGJ1Zlsx
Nl07Ci0gICAgc3ByaW50Zm4oYnVmLCBzaXplb2YoYnVmKSwgIiAweCVwIiwgb2JqKTsKKyAgICAv
LyBUaGUgJXAgc3BlY2lmaWVyIHR5cGljYWxseSBwcm9kdWNlIGF0IG1vc3QgMTYgaGV4IGRpZ2l0
cywgcG9zc2libHkgd2l0aCBhCisgICAgLy8gMHggcHJlZml4LiBCdXQgZm9ybWF0IGlzIGltcGxl
bWVudGF0aW9uIGRlZmluZWQsIHNvIGFkZCBzb21lIG1hcmdpbi4KKyAgICBjaGFyIGJ1ZlszMF07
CisgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiAweCVwIiwgb2JqKTsKICAgICBuYW1l
XyArPSBidWY7CiAgIH0KICAgcmV0dXJuIHRydWU7CkBAIC0zMDAsNyArMzMyLDYgQEAgdm9pZCBU
aHJlYWQ6OkFzc2VydEJsb2NraW5nSXNBbGxvd2VkT25DdXJyZW50VGhyZWFkKCkgewogfQogCiAv
LyBzdGF0aWMKLSNpZiAhZGVmaW5lZChXRUJSVENfTUFDKQogI2lmIGRlZmluZWQoV0VCUlRDX1dJ
TikKIERXT1JEIFdJTkFQSSBUaHJlYWQ6OlByZVJ1bihMUFZPSUQgcHYpIHsKICNlbHNlCkBAIC0z
MDksNiArMzQwLDkgQEAgdm9pZCogVGhyZWFkOjpQcmVSdW4odm9pZCogcHYpIHsKICAgVGhyZWFk
SW5pdCogaW5pdCA9IHN0YXRpY19jYXN0PFRocmVhZEluaXQqPihwdik7CiAgIFRocmVhZE1hbmFn
ZXI6Okluc3RhbmNlKCktPlNldEN1cnJlbnRUaHJlYWQoaW5pdC0+dGhyZWFkKTsKICAgcnRjOjpT
ZXRDdXJyZW50VGhyZWFkTmFtZShpbml0LT50aHJlYWQtPm5hbWVfLmNfc3RyKCkpOworI2lmIGRl
ZmluZWQoV0VCUlRDX01BQykKKyAgU2NvcGVkQXV0b1JlbGVhc2VQb29sIHBvb2w7CisjZW5kaWYK
ICAgaWYgKGluaXQtPnJ1bm5hYmxlKSB7CiAgICAgaW5pdC0+cnVubmFibGUtPlJ1bihpbml0LT50
aHJlYWQpOwogICB9IGVsc2UgewpAQCAtMzIyLDcgKzM1Niw2IEBAIHZvaWQqIFRocmVhZDo6UHJl
UnVuKHZvaWQqIHB2KSB7CiAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9Ci0jZW5kaWYKIAog
dm9pZCBUaHJlYWQ6OlJ1bigpIHsKICAgUHJvY2Vzc01lc3NhZ2VzKGtGb3JldmVyKTsKQEAgLTQ4
NSw5ICs1MTgsNiBAQCB2b2lkIFRocmVhZDo6Q2xlYXIoTWVzc2FnZUhhbmRsZXIqIHBoYW5kbGVy
LAogICBDbGVhckludGVybmFsKHBoYW5kbGVyLCBpZCwgcmVtb3ZlZCk7CiB9CiAKLSNpZiAhZGVm
aW5lZChXRUJSVENfTUFDKQotLy8gTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgaGF2ZSBhIHNlcGFy
YXRlIGltcGxlbWVudGF0aW9uIGZvciBtYWMgYW5kIGlvcwotLy8gZGVmaW5lZCBpbiB3ZWJydGMv
cnRjX2Jhc2UvdGhyZWFkX2Rhcndpbi5tbS4KIGJvb2wgVGhyZWFkOjpQcm9jZXNzTWVzc2FnZXMo
aW50IGNtc0xvb3ApIHsKICAgLy8gVXNpbmcgUHJvY2Vzc01lc3NhZ2VzIHdpdGggYSBjdXN0b20g
Y2xvY2sgZm9yIHRlc3RpbmcgYW5kIGEgdGltZSBncmVhdGVyCiAgIC8vIHRoYW4gMCBkb2Vzbid0
IHdvcmssIHNpbmNlIGl0J3Mgbm90IGd1YXJhbnRlZWQgdG8gYWR2YW5jZSB0aGUgY3VzdG9tCkBA
IC00OTgsNiArNTI4LDkgQEAgYm9vbCBUaHJlYWQ6OlByb2Nlc3NNZXNzYWdlcyhpbnQgY21zTG9v
cCkgewogICBpbnQgY21zTmV4dCA9IGNtc0xvb3A7CiAKICAgd2hpbGUgKHRydWUpIHsKKyNpZiBk
ZWZpbmVkKFdFQlJUQ19NQUMpCisgICAgU2NvcGVkQXV0b1JlbGVhc2VQb29sIHBvb2w7CisjZW5k
aWYKICAgICBNZXNzYWdlIG1zZzsKICAgICBpZiAoIUdldCgmbXNnLCBjbXNOZXh0KSkKICAgICAg
IHJldHVybiAhSXNRdWl0dGluZygpOwpAQCAtNTEwLDcgKzU0Myw2IEBAIGJvb2wgVGhyZWFkOjpQ
cm9jZXNzTWVzc2FnZXMoaW50IGNtc0xvb3ApIHsKICAgICB9CiAgIH0KIH0KLSNlbmRpZgogCiBi
b29sIFRocmVhZDo6V3JhcEN1cnJlbnRXaXRoVGhyZWFkTWFuYWdlcihUaHJlYWRNYW5hZ2VyKiB0
aHJlYWRfbWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgbmVlZF9zeW5jaHJvbml6ZV9hY2Nlc3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkLmgKaW5k
ZXggNWE0NjYxMDRhYTI3M2U3NzRhZGM3NTI1Y2FjNTk2MjhlOTRlNjIzNi4uMDM5MTkyY2U3ZjY3
NDY5NWFiMmYxYzc1OGVjMGM4NTQ5N2YyYWE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkLmgKQEAg
LTExLDE5ICsxMSwyMiBAQAogI2lmbmRlZiBSVENfQkFTRV9USFJFQURfSF8KICNkZWZpbmUgUlRD
X0JBU0VfVEhSRUFEX0hfCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8c3RkaW50
Lmg+CiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5n
PgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPHR5cGVf
dHJhaXRzPgogCiAjaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCiAjaW5jbHVkZSA8cHRocmVhZC5o
PgogI2VuZGlmCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWhhbmRs
ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRz
ZXJ2ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogI2lm
IGRlZmluZWQoV0VCUlRDX1dJTikKICNpbmNsdWRlICJydGNfYmFzZS93aW4zMi5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
dGhyZWFkX2Rhcndpbi5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3RocmVhZF9kYXJ3aW4ubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGE0MDQ4NDljNzJiNGNlZmQ1NmYxZjU0NTcwOTJjZmYwYTIzZDdhYTguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkX2Rhcndpbi5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJydGNf
YmFzZS90aHJlYWQuaCIKLQotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0KLSNp
bmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCIKLQotLyoKLSAqIFRoaXMgZmlsZSBj
b250YWlucyBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgZm9yIHNldmVyYWwKLSAq
IG1ldGhvZHMgaW4gcnRjOjpUaHJlYWQuCi0gKi8KLQotbmFtZXNwYWNlIHsKLXZvaWQgSW5pdENv
Y29hTXVsdGlUaHJlYWRpbmcoKSB7Ci0gIGlmIChbTlNUaHJlYWQgaXNNdWx0aVRocmVhZGVkXSA9
PSBOTykgewotICAgIC8vIFRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBhdXRvcmVsZWFzZSBwb29s
IGlzIHRvIGF2b2lkIGEgY29uc29sZQotICAgIC8vIG1lc3NhZ2Ugb24gTGVvcGFyZCB0aGF0IHRl
bGxzIHVzIHdlJ3JlIGF1dG9yZWxlYXNpbmcgdGhlIHRocmVhZAotICAgIC8vIHdpdGggbm8gYXV0
b3JlbGVhc2UgcG9vbCBpbiBwbGFjZS4KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgIFtO
U1RocmVhZCBkZXRhY2hOZXdUaHJlYWRTZWxlY3RvcjpAc2VsZWN0b3IoY2xhc3MpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG9UYXJnZXQ6W05TT2JqZWN0IGNsYXNzXQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aXRoT2JqZWN0Om5pbF07Ci0gICAgfQotICB9Ci0KLSAg
UlRDX0RDSEVDSyhbTlNUaHJlYWQgaXNNdWx0aVRocmVhZGVkXSk7Ci19Ci19Ci0KLW5hbWVzcGFj
ZSBydGMgewotCi1UaHJlYWRNYW5hZ2VyOjpUaHJlYWRNYW5hZ2VyKCkgOiBtYWluX3RocmVhZF9y
ZWZfKEN1cnJlbnRUaHJlYWRSZWYoKSkgewotICBwdGhyZWFkX2tleV9jcmVhdGUoJmtleV8sIG51
bGxwdHIpOwotICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhbGVydCB0aGUgY29jb2EgcnVudGlt
ZSBvZiB0aGUgZmFjdCB0aGF0Ci0gIC8vIHdlIGFyZSBydW5uaW5nIGluIGEgbXVsdGl0aHJlYWRl
ZCBlbnZpcm9ubWVudC4KLSAgSW5pdENvY29hTXVsdGlUaHJlYWRpbmcoKTsKLX0KLQotLy8gc3Rh
dGljCi12b2lkKiBUaHJlYWQ6OlByZVJ1bih2b2lkKiBwdikgewotICBUaHJlYWRJbml0KiBpbml0
ID0gc3RhdGljX2Nhc3Q8VGhyZWFkSW5pdCo+KHB2KTsKLSAgVGhyZWFkTWFuYWdlcjo6SW5zdGFu
Y2UoKS0+U2V0Q3VycmVudFRocmVhZChpbml0LT50aHJlYWQpOwotICBydGM6OlNldEN1cnJlbnRU
aHJlYWROYW1lKGluaXQtPnRocmVhZC0+bmFtZV8uY19zdHIoKSk7Ci0gIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgIGlmIChpbml0LT5ydW5uYWJsZSkgewotICAgICAgaW5pdC0+cnVubmFibGUtPlJ1
bihpbml0LT50aHJlYWQpOwotICAgIH0gZWxzZSB7Ci0gICAgICBpbml0LT50aHJlYWQtPlJ1bigp
OwotICAgIH0KLSAgfQotICBUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5TZXRDdXJyZW50VGhy
ZWFkKG51bGxwdHIpOwotICBkZWxldGUgaW5pdDsKLSAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWJv
b2wgVGhyZWFkOjpQcm9jZXNzTWVzc2FnZXMoaW50IGNtc0xvb3ApIHsKLSAgaW50NjRfdCBtc0Vu
ZCA9IChrRm9yZXZlciA9PSBjbXNMb29wKSA/IDAgOiBUaW1lQWZ0ZXIoY21zTG9vcCk7Ci0gIGlu
dCBjbXNOZXh0ID0gY21zTG9vcDsKLQotICB3aGlsZSAodHJ1ZSkgewotICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgTWVzc2FnZSBtc2c7Ci0gICAgICBpZiAoIUdldCgmbXNnLCBjbXNOZXh0
KSkKLSAgICAgICAgcmV0dXJuICFJc1F1aXR0aW5nKCk7Ci0gICAgICBEaXNwYXRjaCgmbXNnKTsK
LQotICAgICAgaWYgKGNtc0xvb3AgIT0ga0ZvcmV2ZXIpIHsKLSAgICAgICAgY21zTmV4dCA9IHN0
YXRpY19jYXN0PGludD4oVGltZVVudGlsKG1zRW5kKSk7Ci0gICAgICAgIGlmIChjbXNOZXh0IDwg
MCkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLX0KLX0gIC8v
IG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZF91bml0dGVzdC5jYwpp
bmRleCBkNWM1M2Y4YTdjYzBhMjdmYzRmYTY0N2JmOTdkMWNmNmYyOWNjMmVjLi43ZTM5MmFmZmQ5
NGE1YjBhN2JkYmUzODA5ZTNiNmE2OGQ3MWQzZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aHJlYWRfdW5pdHRlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
dGhyZWFkX3VuaXR0ZXN0LmNjCkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIFNvY2tldENsaWVudCA6
IHB1YmxpYyBUZXN0R2VuZXJhdG9yLCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSwKICAgICAgICAgICAgICAgICBjb25zdCBTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAg
ICAgICAgICAgICAgICBjb25zdCBQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAg
ICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKSB7CiAgICAgRVhQRUNUX0VRKHNp
emUsIHNpemVvZih1aW50MzJfdCkpOwogICAgIHVpbnQzMl90IHByZXYgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmKVswXTsKICAgICB1aW50MzJfdCByZXN1bHQgPSBOZXh0
KHByZXYpOwpAQCAtNDcwLDkgKzQ3MCw5IEBAIFRFU1RfRihBc3luY0ludm9rZVRlc3QsIEtpbGxJ
bnZva2VyRHVyaW5nRXhlY3V0ZSkgewogICAvLyBVc2UgdGhlc2UgZXZlbnRzIHRvIGdldCBpbiBh
IHN0YXRlIHdoZXJlIHRoZSBmdW5jdG9yIGlzIGluIHRoZSBtaWRkbGUgb2YKICAgLy8gZXhlY3V0
aW5nLCBhbmQgdGhlbiB0byB3YWl0IGZvciBpdCB0byBmaW5pc2gsIGVuc3VyaW5nIHRoZSAiRVhQ
RUNUX0ZBTFNFIgogICAvLyBpcyBydW4uCi0gIEV2ZW50IGZ1bmN0b3Jfc3RhcnRlZChmYWxzZSwg
ZmFsc2UpOwotICBFdmVudCBmdW5jdG9yX2NvbnRpbnVlKGZhbHNlLCBmYWxzZSk7Ci0gIEV2ZW50
IGZ1bmN0b3JfZmluaXNoZWQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZnVuY3Rvcl9zdGFydGVk
OworICBFdmVudCBmdW5jdG9yX2NvbnRpbnVlOworICBFdmVudCBmdW5jdG9yX2ZpbmlzaGVkOwog
CiAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2VydmVyKCk7CiAgIHRo
cmVhZC0+U3RhcnQoKTsKQEAgLTUwNyw3ICs1MDcsNyBAQCBURVNUX0YoQXN5bmNJbnZva2VUZXN0
LCBLaWxsSW52b2tlckR1cmluZ0V4ZWN1dGUpIHsKIC8vIGRlc3Ryb3llZC4gVGhpcyBzaG91bGRu
J3QgZGVhZGxvY2sgb3IgY3Jhc2g7IHRoaXMgc2Vjb25kIGludm9jYXRpb24gc2hvdWxkCiAvLyBq
dXN0IGJlIGlnbm9yZWQuCiBURVNUX0YoQXN5bmNJbnZva2VUZXN0LCBLaWxsSW52b2tlckR1cmlu
Z0V4ZWN1dGVXaXRoUmVlbnRyYW50SW52b2tlKSB7Ci0gIEV2ZW50IGZ1bmN0b3Jfc3RhcnRlZChm
YWxzZSwgZmFsc2UpOworICBFdmVudCBmdW5jdG9yX3N0YXJ0ZWQ7CiAgIC8vIEZsYWcgdXNlZCB0
byB2ZXJpZnkgdGhhdCB0aGUgcmVjdXJzaXZlbHkgaW52b2tlZCB0YXNrIG5ldmVyIGFjdHVhbGx5
IHJ1bnMuCiAgIGJvb2wgcmVlbnRyYW50X2Z1bmN0b3JfcnVuID0gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rp
bWVzdGFtcGFsaWduZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS90aW1lc3RhbXBhbGlnbmVyLmNjCmluZGV4IGE5YmNhZmJkYzVmNWFkY2Jk
MmY2ZTY1ZTZlODVhMzllYzhhODY4ZTguLmYyZGExMDE3MjcxMTBkNDdhZWI5OWMwZGUyY2M0M2I0
MzRjZTYxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3RpbWVzdGFtcGFsaWduZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGltZXN0YW1wYWxpZ25lci5jYwpA
QCAtOCw2ICs4LDcgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCisjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNs
dWRlIDxsaW1pdHM+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1
dGlscy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3RpbWV1dGlscy5jYwppbmRleCBkZThmYzMyNTljMjhlYzRlN2MwN2RmNWE1NmY4ZTQ5NzMz
NjA5NzM3Li5kYzViNjExZjY0N2JlYzk0NTIyMDZkZTA1MmQ3ZTVmYjY5ZjQ1OTNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90
aW1ldXRpbHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdGltZXV0aWxzLmNjCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8c3lz
L3RpbWUuaD4KICNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpCiAjaW5jbHVkZSA8bWFjaC9tYWNoX3Rp
bWUuaD4KKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAj
ZW5kaWYKICNlbmRpZgogCkBAIC0yOCw3ICsyOSw2IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVy
c2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0
YyB7CkBAIC0xNTQsNyArMTU0LDcgQEAgaW50NjRfdCBUaW1lc3RhbXBXcmFwQXJvdW5kSGFuZGxl
cjo6VW53cmFwKHVpbnQzMl90IHRzKSB7CiAgIHJldHVybiB0cyArIChudW1fd3JhcF8gPDwgMzIp
OwogfQogCi1pbnQ2NF90IFRtVG9TZWNvbmRzKGNvbnN0IHN0ZDo6dG0mIHRtKSB7CitpbnQ2NF90
IFRtVG9TZWNvbmRzKGNvbnN0IHRtJiB0bSkgewogICBzdGF0aWMgc2hvcnQgaW50IG1kYXlzWzEy
XSA9IHszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxfTsKICAg
c3RhdGljIHNob3J0IGludCBjdW11bF9tZGF5c1sxMl0gPSB7MCwgICAzMSwgIDU5LCAgOTAsICAx
MjAsIDE1MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgxLCAyMTIs
IDI0MywgMjczLCAzMDQsIDMzNH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aW1ldXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlscy5oCmluZGV4IDNh
NDEyYTQ3Y2Y4NDI1YmM5ZjFhNGUzMzAwZDU2ZDQ1MDFjY2E1YWMuLjRlMzhhMDMxNDA5ZjBmMDVh
YjU4Mzg3NzRiYzdlZWYxMGE2OTA3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlscy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlscy5oCkBA
IC0xMyw4ICsxMyw2IEBACiAKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx0aW1lLmg+
Ci0KLSNpbmNsdWRlIDxjdGltZT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKQEAgLTExMCwxMCArMTA4LDEwIEBAIGNsYXNzIFRpbWVzdGFtcFdyYXBB
cm91bmRIYW5kbGVyIHsKICAgaW50NjRfdCBudW1fd3JhcF87CiB9OwogCi0vLyBDb252ZXJ0IGZy
b20gc3RkOjp0bSwgd2hpY2ggaXMgcmVsYXRpdmUgdG8gMTkwMC0wMS0wMSAwMDowMCB0byBudW1i
ZXIgb2YKLS8vIHNlY29uZHMgZnJvbSAxOTcwLTAxLTAxIDAwOjAwICgiZXBvY2giKS4gIERvbid0
IHJldHVybiB0aW1lX3Qgc2luY2UgdGhhdAorLy8gQ29udmVydCBmcm9tIHRtLCB3aGljaCBpcyBy
ZWxhdGl2ZSB0byAxOTAwLTAxLTAxIDAwOjAwIHRvIG51bWJlciBvZgorLy8gc2Vjb25kcyBmcm9t
IDE5NzAtMDEtMDEgMDA6MDAgKCJlcG9jaCIpLiBEb24ndCByZXR1cm4gdGltZV90IHNpbmNlIHRo
YXQKIC8vIGlzIHN0aWxsIDMyIGJpdHMgb24gbWFueSBzeXN0ZW1zLgotaW50NjRfdCBUbVRvU2Vj
b25kcyhjb25zdCBzdGQ6OnRtJiB0bSk7CitpbnQ2NF90IFRtVG9TZWNvbmRzKGNvbnN0IHRtJiB0
bSk7CiAKIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBzaW5jZSBKYW51YXJ5
IDEsIDE5NzAsIFVUQy4KIC8vIFVzZWZ1bCBtYWlubHkgd2hlbiBwcm9kdWNpbmcgbG9ncyB0byBi
ZSBjb3JyZWxhdGVkIHdpdGggb3RoZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlsc191bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGls
c191bml0dGVzdC5jYwppbmRleCAwZTE5NDlhZWUzMTEyNWJkMzZhNzIxMjAwMzM4NDE2ZTAyYjA3
Yzk2Li41NzdlZmRhMDI1NWIwM2NiNjc5ZjQ1OTViZGViYzU1NTljZjQ4MmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aW1l
dXRpbHNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvdGltZXV0aWxzX3VuaXR0ZXN0LmNjCkBAIC0yNjIsNyArMjYyLDcg
QEAgVEVTVChGYWtlQ2xvY2ssIFNldHRpbmdUaW1lV2FrZXNUaHJlYWRzKSB7CiAgIHdvcmtlci0+
U3RhcnQoKTsKIAogICAvLyBQb3N0IGFuIGV2ZW50IHRoYXQgd29uJ3QgYmUgZXhlY3V0ZWQgZm9y
IDEwIHNlY29uZHMuCi0gIEV2ZW50IG1lc3NhZ2VfaGFuZGxlcl9kaXNwYXRjaGVkKGZhbHNlLCBm
YWxzZSk7CisgIEV2ZW50IG1lc3NhZ2VfaGFuZGxlcl9kaXNwYXRjaGVkOwogICBhdXRvIGZ1bmN0
b3IgPSBbJm1lc3NhZ2VfaGFuZGxlcl9kaXNwYXRjaGVkXSB7CiAgICAgbWVzc2FnZV9oYW5kbGVy
X2Rpc3BhdGNoZWQuU2V0KCk7CiAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy9CVUlMRC5nbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3VuaXRzL0JVSUxELmdu
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhjNzIyYmJjN2I4ZTcwZmIyMDZmODA2YzExMmI2MWRkYmZlOTg1YjMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS91bml0cy9CVUlMRC5nbgpAQCAtMCwwICsxLDM3IEBACisjIENvcHlyaWdodCAo
YykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyMKKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQorIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyMgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisjIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorCitpbXBvcnQoIi4u
Ly4uL3dlYnJ0Yy5nbmkiKQorCitydGNfc291cmNlX3NldCgidW5pdF9iYXNlIikgeworICB2aXNp
YmlsaXR5ID0gWworICAgICIuLi8uLi9hcGkvdW5pdHM6KiIsCisgICAgIjoqIiwKKyAgXQorICBz
b3VyY2VzID0gWworICAgICJ1bml0X2Jhc2UuaCIsCisgIF0KKworICBkZXBzID0gWworICAgICIu
Li8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi8uLi9ydGNfYmFzZTpzYWZlX2NvbnZlcnNp
b25zIiwKKyAgXQorfQorCitpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKKyAgcnRjX3NvdXJjZV9z
ZXQoInVuaXRzX3VuaXR0ZXN0cyIpIHsKKyAgICB0ZXN0b25seSA9IHRydWUKKyAgICBzb3VyY2Vz
ID0gWworICAgICAgInVuaXRfYmFzZV91bml0dGVzdC5jYyIsCisgICAgXQorICAgIGRlcHMgPSBb
CisgICAgICAiOnVuaXRfYmFzZSIsCisgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAor
ICAgIF0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy91bml0X2Jhc2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NTAzYTMyOTkzNzY2NzY0MmNmYTcwZjdhMTdkMjllMzMzYjRmMDY0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmgKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisjaWZuZGVmIFJUQ19CQVNFX1VOSVRTX1VOSVRfQkFTRV9IXworI2RlZmluZSBSVENfQkFT
RV9VTklUU19VTklUX0JBU0VfSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGFs
Z29yaXRobT4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworbmFtZXNwYWNlIHJ0Y191bml0c19pbXBsIHsKKworLy8gVW5pdEJhc2UgaXMgYSBiYXNlIGNs
YXNzIGZvciBpbXBsZW1lbnRpbmcgY3VzdG9tIHZhbHVlIHR5cGVzIHdpdGggYSBzcGVjaWZpYwor
Ly8gdW5pdC4gSXQgcHJvdmlkZXMgdHlwZSBzYWZldHkgYW5kIHNvbW1vbmx5IHVzZWZ1bCBvcGVy
YXRpb25zLiBUaGUgdW5kZWx5aW5nCisvLyBzdG9yYWdlIGlzIGFsd2F5cyBhbiBpbnQ2NF90LCBp
dCdzIHVwIHRvIHRoZSB1bml0IGltcGxlbWVudGF0aW9uIHRvIGNob29zZQorLy8gd2hhdCBzY2Fs
ZSBpdCByZXByZXNlbnRzLgorLy8KKy8vIEl0J3MgdXNlZCBsaWtlOgorLy8gY2xhc3MgTXlVbml0
OiBwdWJsaWMgVW5pdEJhc2U8TXlVbml0PiB7Li4ufTsKKy8vCisvLyBVbml0X1QgaXMgdGhlIHN1
YmNsYXNzIHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWMgdW5pdC4KK3RlbXBsYXRlIDxjbGFzcyBV
bml0X1Q+CitjbGFzcyBVbml0QmFzZSB7CisgcHVibGljOgorICBVbml0QmFzZSgpID0gZGVsZXRl
OworICBzdGF0aWMgY29uc3RleHByIFVuaXRfVCBaZXJvKCkgeyByZXR1cm4gVW5pdF9UKDApOyB9
CisgIHN0YXRpYyBjb25zdGV4cHIgVW5pdF9UIFBsdXNJbmZpbml0eSgpIHsgcmV0dXJuIFVuaXRf
VChQbHVzSW5maW5pdHlWYWwoKSk7IH0KKyAgc3RhdGljIGNvbnN0ZXhwciBVbml0X1QgTWludXNJ
bmZpbml0eSgpIHsgcmV0dXJuIFVuaXRfVChNaW51c0luZmluaXR5VmFsKCkpOyB9CisKKyAgY29u
c3RleHByIGJvb2wgSXNaZXJvKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfID09IDA7IH0KKyAgY29u
c3RleHByIGJvb2wgSXNGaW5pdGUoKSBjb25zdCB7IHJldHVybiAhSXNJbmZpbml0ZSgpOyB9Cisg
IGNvbnN0ZXhwciBib29sIElzSW5maW5pdGUoKSBjb25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyA9
PSBQbHVzSW5maW5pdHlWYWwoKSB8fCB2YWx1ZV8gPT0gTWludXNJbmZpbml0eVZhbCgpOworICB9
CisgIGNvbnN0ZXhwciBib29sIElzUGx1c0luZmluaXR5KCkgY29uc3QgeyByZXR1cm4gdmFsdWVf
ID09IFBsdXNJbmZpbml0eVZhbCgpOyB9CisgIGNvbnN0ZXhwciBib29sIElzTWludXNJbmZpbml0
eSgpIGNvbnN0IHsKKyAgICByZXR1cm4gdmFsdWVfID09IE1pbnVzSW5maW5pdHlWYWwoKTsKKyAg
fQorCisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5pdF9UJiBvdGhlcikgY29u
c3QgeworICAgIHJldHVybiB2YWx1ZV8gPT0gb3RoZXIudmFsdWVfOworICB9CisgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICAgIHJldHVy
biB2YWx1ZV8gIT0gb3RoZXIudmFsdWVfOworICB9CisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PD0oY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB2YWx1ZV8gPD0gb3Ro
ZXIudmFsdWVfOworICB9CisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVW5pdF9U
JiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB2YWx1ZV8gPj0gb3RoZXIudmFsdWVfOworICB9
CisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBVbml0X1QmIG90aGVyKSBjb25zdCB7
CisgICAgcmV0dXJuIHZhbHVlXyA+IG90aGVyLnZhbHVlXzsKKyAgfQorICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcjwoY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB2YWx1
ZV8gPCBvdGhlci52YWx1ZV87CisgIH0KKworIHByb3RlY3RlZDoKKyAgdGVtcGxhdGUgPGludDY0
X3QgdmFsdWU+CisgIHN0YXRpYyBjb25zdGV4cHIgVW5pdF9UIEZyb21TdGF0aWNWYWx1ZSgpIHsK
KyAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlID49IDAgfHwgIVVuaXRfVDo6b25lX3NpZGVkLCAiIik7
CisgICAgc3RhdGljX2Fzc2VydCh2YWx1ZSA+IE1pbnVzSW5maW5pdHlWYWwoKSwgIiIpOworICAg
IHN0YXRpY19hc3NlcnQodmFsdWUgPCBQbHVzSW5maW5pdHlWYWwoKSwgIiIpOworICAgIHJldHVy
biBVbml0X1QodmFsdWUpOworICB9CisKKyAgdGVtcGxhdGUgPGludDY0X3QgZnJhY3Rpb25fdmFs
dWUsIGludDY0X3QgRGVub21pbmF0b3I+CisgIHN0YXRpYyBjb25zdGV4cHIgVW5pdF9UIEZyb21T
dGF0aWNGcmFjdGlvbigpIHsKKyAgICBzdGF0aWNfYXNzZXJ0KGZyYWN0aW9uX3ZhbHVlID49IDAg
fHwgIVVuaXRfVDo6b25lX3NpZGVkLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChmcmFjdGlvbl92
YWx1ZSA+IE1pbnVzSW5maW5pdHlWYWwoKSAvIERlbm9taW5hdG9yLCAiIik7CisgICAgc3RhdGlj
X2Fzc2VydChmcmFjdGlvbl92YWx1ZSA8IFBsdXNJbmZpbml0eVZhbCgpIC8gRGVub21pbmF0b3Is
ICIiKTsKKyAgICByZXR1cm4gVW5pdF9UKGZyYWN0aW9uX3ZhbHVlICogRGVub21pbmF0b3IpOwor
ICB9CisKKyAgdGVtcGxhdGUgPAorICAgICAgdHlwZW5hbWUgVCwKKyAgICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRy
PgorICBzdGF0aWMgVW5pdF9UIEZyb21WYWx1ZShUIHZhbHVlKSB7CisgICAgaWYgKFVuaXRfVDo6
b25lX3NpZGVkKQorICAgICAgUlRDX0RDSEVDS19HRSh2YWx1ZSwgMCk7CisgICAgUlRDX0RDSEVD
S19HVCh2YWx1ZSwgTWludXNJbmZpbml0eVZhbCgpKTsKKyAgICBSVENfRENIRUNLX0xUKHZhbHVl
LCBQbHVzSW5maW5pdHlWYWwoKSk7CisgICAgcmV0dXJuIFVuaXRfVChydGM6OmRjaGVja2VkX2Nh
c3Q8aW50NjRfdD4odmFsdWUpKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKKyAgICAg
ICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46
OnZhbHVlPjo6dHlwZSogPQorICAgICAgICAgICAgICAgIG51bGxwdHI+CisgIHN0YXRpYyBVbml0
X1QgRnJvbVZhbHVlKFQgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gc3RkOjpudW1lcmljX2xp
bWl0czxUPjo6aW5maW5pdHkoKSkgeworICAgICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOworICAg
IH0gZWxzZSBpZiAodmFsdWUgPT0gLXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkp
IHsKKyAgICAgIHJldHVybiBNaW51c0luZmluaXR5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIFJU
Q19EQ0hFQ0soIXN0ZDo6aXNuYW4odmFsdWUpKTsKKyAgICAgIHJldHVybiBGcm9tVmFsdWUocnRj
OjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KHZhbHVlKSk7CisgICAgfQorICB9CisKKyAgdGVtcGxh
dGUgPAorICAgICAgaW50NjRfdCBEZW5vbWluYXRvciwKKyAgICAgIHR5cGVuYW1lIFQsCisgICAg
ICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5
cGUqID0gbnVsbHB0cj4KKyAgc3RhdGljIFVuaXRfVCBGcm9tRnJhY3Rpb24oVCB2YWx1ZSkgewor
ICAgIGlmIChVbml0X1Q6Om9uZV9zaWRlZCkKKyAgICAgIFJUQ19EQ0hFQ0tfR0UodmFsdWUsIDAp
OworICAgIFJUQ19EQ0hFQ0tfR1QodmFsdWUsIE1pbnVzSW5maW5pdHlWYWwoKSAvIERlbm9taW5h
dG9yKTsKKyAgICBSVENfRENIRUNLX0xUKHZhbHVlLCBQbHVzSW5maW5pdHlWYWwoKSAvIERlbm9t
aW5hdG9yKTsKKyAgICByZXR1cm4gVW5pdF9UKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90Pih2
YWx1ZSAqIERlbm9taW5hdG9yKSk7CisgIH0KKyAgdGVtcGxhdGUgPGludDY0X3QgRGVub21pbmF0
b3IsCisgICAgICAgICAgICB0eXBlbmFtZSBULAorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlKiA9CisgICAg
ICAgICAgICAgICAgbnVsbHB0cj4KKyAgc3RhdGljIFVuaXRfVCBGcm9tRnJhY3Rpb24oVCB2YWx1
ZSkgeworICAgIHJldHVybiBGcm9tVmFsdWUodmFsdWUgKiBEZW5vbWluYXRvcik7CisgIH0KKwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+CisgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlwZSBUb1ZhbHVlKCkgY29uc3Qg
eworICAgIFJUQ19EQ0hFQ0soSXNGaW5pdGUoKSk7CisgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRf
Y2FzdDxUPih2YWx1ZV8pOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBjb25zdGV4
cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFs
dWUsIFQ+Ojp0eXBlCisgIFRvVmFsdWUoKSBjb25zdCB7CisgICAgcmV0dXJuIElzUGx1c0luZmlu
aXR5KCkKKyAgICAgICAgICAgICAgID8gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHko
KQorICAgICAgICAgICAgICAgOiBJc01pbnVzSW5maW5pdHkoKSA/IC1zdGQ6Om51bWVyaWNfbGlt
aXRzPFQ+OjppbmZpbml0eSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
dmFsdWVfOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBjb25zdGV4cHIgVCBUb1Zh
bHVlT3IoVCBmYWxsYmFja192YWx1ZSkgY29uc3QgeworICAgIHJldHVybiBJc0Zpbml0ZSgpID8g
dmFsdWVfIDogZmFsbGJhY2tfdmFsdWU7CisgIH0KKworICB0ZW1wbGF0ZSA8aW50NjRfdCBEZW5v
bWluYXRvciwgdHlwZW5hbWUgVCA9IGludDY0X3Q+CisgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlwZSBUb0ZyYWN0aW9uKCkKKyAgICAg
IGNvbnN0IHsKKyAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOworICAgIGlmIChVbml0X1Q6Om9u
ZV9zaWRlZCkgeworICAgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPigKKyAgICAgICAg
ICBEaXZSb3VuZFBvc2l0aXZlVG9OZWFyZXN0KHZhbHVlXywgRGVub21pbmF0b3IpKTsKKyAgICB9
IGVsc2UgeworICAgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihEaXZSb3VuZFRvTmVh
cmVzdCh2YWx1ZV8sIERlbm9taW5hdG9yKSk7CisgICAgfQorICB9CisgIHRlbXBsYXRlIDxpbnQ2
NF90IERlbm9taW5hdG9yLCB0eXBlbmFtZSBUPgorICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCisgIFRv
RnJhY3Rpb24oKSBjb25zdCB7CisgICAgcmV0dXJuIFRvVmFsdWU8VD4oKSAqICgxIC8gc3RhdGlj
X2Nhc3Q8VD4oRGVub21pbmF0b3IpKTsKKyAgfQorCisgIHRlbXBsYXRlIDxpbnQ2NF90IERlbm9t
aW5hdG9yPgorICBjb25zdGV4cHIgaW50NjRfdCBUb0ZyYWN0aW9uT3IoaW50NjRfdCBmYWxsYmFj
a192YWx1ZSkgY29uc3QgeworICAgIHJldHVybiBJc0Zpbml0ZSgpID8gVW5pdF9UOjpvbmVfc2lk
ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERpdlJvdW5kUG9zaXRpdmVUb05lYXJl
c3QodmFsdWVfLCBEZW5vbWluYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IERp
dlJvdW5kVG9OZWFyZXN0KHZhbHVlXywgRGVub21pbmF0b3IpCisgICAgICAgICAgICAgICAgICAg
ICAgOiBmYWxsYmFja192YWx1ZTsKKyAgfQorCisgIHRlbXBsYXRlIDxpbnQ2NF90IEZhY3Rvciwg
dHlwZW5hbWUgVCA9IGludDY0X3Q+CisgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
aW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlwZSBUb011bHRpcGxlKCkKKyAgICAgIGNvbnN0IHsK
KyAgICBSVENfRENIRUNLX0dFKFRvVmFsdWUoKSwgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWlu
KCkgLyBGYWN0b3IpOworICAgIFJUQ19EQ0hFQ0tfTEUoVG9WYWx1ZSgpLCBzdGQ6Om51bWVyaWNf
bGltaXRzPFQ+OjptYXgoKSAvIEZhY3Rvcik7CisgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2Fz
dDxUPihUb1ZhbHVlKCkgKiBGYWN0b3IpOworICB9CisgIHRlbXBsYXRlIDxpbnQ2NF90IEZhY3Rv
ciwgdHlwZW5hbWUgVD4KKyAgY29uc3RleHByIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZQorICBUb011bHRpcGxlKCkgY29u
c3QgeworICAgIHJldHVybiBUb1ZhbHVlPFQ+KCkgKiBGYWN0b3I7CisgIH0KKworICBleHBsaWNp
dCBjb25zdGV4cHIgVW5pdEJhc2UoaW50NjRfdCB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisK
KyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8Y2xhc3MgUmVsYXRpdmVVbml0X1Q+CisgIGZyaWVuZCBj
bGFzcyBSZWxhdGl2ZVVuaXQ7CisKKyAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgaW50NjRfdCBQ
bHVzSW5maW5pdHlWYWwoKSB7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRf
dD46Om1heCgpOworICB9CisgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGludDY0X3QgTWludXNJ
bmZpbml0eVZhbCgpIHsKKyAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6
bWluKCk7CisgIH0KKworICBVbml0X1QmIEFzU3ViQ2xhc3NSZWYoKSB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PFVuaXRfVCY+KCp0aGlzKTsgfQorICBjb25zdGV4cHIgY29uc3QgVW5pdF9UJiBB
c1N1YkNsYXNzUmVmKCkgY29uc3QgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IFVuaXRfVCY+KCp0aGlzKTsKKyAgfQorICAvLyBBc3N1bWVzIHRoYXQgbiA+PSAwIGFuZCBkID4g
MC4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IERpdlJvdW5kUG9zaXRpdmVUb05lYXJlc3Qo
aW50NjRfdCBuLCBpbnQ2NF90IGQpIHsKKyAgICByZXR1cm4gKG4gKyBkIC8gMikgLyBkOworICB9
CisgIC8vIEFzc3VtZXMgdGhhdCBkID4gMC4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IERp
dlJvdW5kVG9OZWFyZXN0KGludDY0X3QgbiwgaW50NjRfdCBkKSB7CisgICAgcmV0dXJuIChuICsg
KG4gPj0gMCA/IGQgLyAyIDogLWQgLyAyKSkgLyBkOworICB9CisKKyAgaW50NjRfdCB2YWx1ZV87
Cit9OworCisvLyBFeHRlbmRzIFVuaXRCYXNlIHRvIHByb3ZpZGUgb3BlcmF0aW9ucyBmb3IgcmVs
YXRpdmUgdW5pdHMsIHRoYXQgaXMsIHVuaXRzCisvLyB0aGF0IGhhdmUgYSBtZWFuaW5nZnVsIHJl
bGF0aW9uIGJldHdlZW4gdmFsdWVzIHN1Y2ggdGhhdCBhICs9IGIgaXMgYQorLy8gc2Vuc2libGUg
dGhpbmcgdG8gZG8uIEZvciBhLGIgPC0gc2FtZSB1bml0LgordGVtcGxhdGUgPGNsYXNzIFVuaXRf
VD4KK2NsYXNzIFJlbGF0aXZlVW5pdCA6IHB1YmxpYyBVbml0QmFzZTxVbml0X1Q+IHsKKyBwdWJs
aWM6CisgIFVuaXRfVCBDbGFtcGVkKFVuaXRfVCBtaW5fdmFsdWUsIFVuaXRfVCBtYXhfdmFsdWUp
IGNvbnN0IHsKKyAgICByZXR1cm4gc3RkOjptYXgobWluX3ZhbHVlLAorICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1pbihVbml0QmFzZTxVbml0X1Q+OjpBc1N1YkNsYXNzUmVmKCksIG1heF92YWx1
ZSkpOworICB9CisgIHZvaWQgQ2xhbXAoVW5pdF9UIG1pbl92YWx1ZSwgVW5pdF9UIG1heF92YWx1
ZSkgeworICAgICp0aGlzID0gQ2xhbXBlZChtaW5fdmFsdWUsIG1heF92YWx1ZSk7CisgIH0KKyAg
VW5pdF9UIG9wZXJhdG9yKyhjb25zdCBVbml0X1Qgb3RoZXIpIGNvbnN0IHsKKyAgICBpZiAodGhp
cy0+SXNQbHVzSW5maW5pdHkoKSB8fCBvdGhlci5Jc1BsdXNJbmZpbml0eSgpKSB7CisgICAgICBS
VENfRENIRUNLKCF0aGlzLT5Jc01pbnVzSW5maW5pdHkoKSk7CisgICAgICBSVENfRENIRUNLKCFv
dGhlci5Jc01pbnVzSW5maW5pdHkoKSk7CisgICAgICByZXR1cm4gdGhpcy0+UGx1c0luZmluaXR5
KCk7CisgICAgfSBlbHNlIGlmICh0aGlzLT5Jc01pbnVzSW5maW5pdHkoKSB8fCBvdGhlci5Jc01p
bnVzSW5maW5pdHkoKSkgeworICAgICAgUlRDX0RDSEVDSyghdGhpcy0+SXNQbHVzSW5maW5pdHko
KSk7CisgICAgICBSVENfRENIRUNLKCFvdGhlci5Jc1BsdXNJbmZpbml0eSgpKTsKKyAgICAgIHJl
dHVybiB0aGlzLT5NaW51c0luZmluaXR5KCk7CisgICAgfQorICAgIHJldHVybiBVbml0QmFzZTxV
bml0X1Q+OjpGcm9tVmFsdWUodGhpcy0+VG9WYWx1ZSgpICsgb3RoZXIuVG9WYWx1ZSgpKTsKKyAg
fQorICBVbml0X1Qgb3BlcmF0b3ItKGNvbnN0IFVuaXRfVCBvdGhlcikgY29uc3QgeworICAgIGlm
ICh0aGlzLT5Jc1BsdXNJbmZpbml0eSgpIHx8IG90aGVyLklzTWludXNJbmZpbml0eSgpKSB7Cisg
ICAgICBSVENfRENIRUNLKCF0aGlzLT5Jc01pbnVzSW5maW5pdHkoKSk7CisgICAgICBSVENfRENI
RUNLKCFvdGhlci5Jc1BsdXNJbmZpbml0eSgpKTsKKyAgICAgIHJldHVybiB0aGlzLT5QbHVzSW5m
aW5pdHkoKTsKKyAgICB9IGVsc2UgaWYgKHRoaXMtPklzTWludXNJbmZpbml0eSgpIHx8IG90aGVy
LklzUGx1c0luZmluaXR5KCkpIHsKKyAgICAgIFJUQ19EQ0hFQ0soIXRoaXMtPklzUGx1c0luZmlu
aXR5KCkpOworICAgICAgUlRDX0RDSEVDSyghb3RoZXIuSXNNaW51c0luZmluaXR5KCkpOworICAg
ICAgcmV0dXJuIHRoaXMtPk1pbnVzSW5maW5pdHkoKTsKKyAgICB9CisgICAgcmV0dXJuIFVuaXRC
YXNlPFVuaXRfVD46OkZyb21WYWx1ZSh0aGlzLT5Ub1ZhbHVlKCkgLSBvdGhlci5Ub1ZhbHVlKCkp
OworICB9CisgIFVuaXRfVCYgb3BlcmF0b3IrPShjb25zdCBVbml0X1Qgb3RoZXIpIHsKKyAgICAq
dGhpcyA9ICp0aGlzICsgb3RoZXI7CisgICAgcmV0dXJuIHRoaXMtPkFzU3ViQ2xhc3NSZWYoKTsK
KyAgfQorICBVbml0X1QmIG9wZXJhdG9yLT0oY29uc3QgVW5pdF9UIG90aGVyKSB7CisgICAgKnRo
aXMgPSAqdGhpcyAtIG90aGVyOworICAgIHJldHVybiB0aGlzLT5Bc1N1YkNsYXNzUmVmKCk7Cisg
IH0KKyAgY29uc3RleHByIGRvdWJsZSBvcGVyYXRvci8oY29uc3QgVW5pdF9UIG90aGVyKSBjb25z
dCB7CisgICAgcmV0dXJuIFVuaXRCYXNlPFVuaXRfVD46OnRlbXBsYXRlIFRvVmFsdWU8ZG91Ymxl
PigpIC8KKyAgICAgICAgICAgb3RoZXIudGVtcGxhdGUgVG9WYWx1ZTxkb3VibGU+KCk7CisgIH0K
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUsIFVuaXRfVD46OnR5cGUgb3BlcmF0b3IvKAorICAgICAg
Y29uc3QgVCYgc2NhbGFyKSBjb25zdCB7CisgICAgcmV0dXJuIFVuaXRCYXNlPFVuaXRfVD46OkZy
b21WYWx1ZSgKKyAgICAgICAgc3RkOjpyb3VuZChVbml0QmFzZTxVbml0X1Q+Ojp0ZW1wbGF0ZSBU
b1ZhbHVlPGludDY0X3Q+KCkgLyBzY2FsYXIpKTsKKyAgfQorICBVbml0X1Qgb3BlcmF0b3IqKGNv
bnN0IGRvdWJsZSBzY2FsYXIpIGNvbnN0IHsKKyAgICByZXR1cm4gVW5pdEJhc2U8VW5pdF9UPjo6
RnJvbVZhbHVlKHN0ZDo6cm91bmQodGhpcy0+VG9WYWx1ZSgpICogc2NhbGFyKSk7CisgIH0KKyAg
VW5pdF9UIG9wZXJhdG9yKihjb25zdCBpbnQ2NF90IHNjYWxhcikgY29uc3QgeworICAgIHJldHVy
biBVbml0QmFzZTxVbml0X1Q+OjpGcm9tVmFsdWUodGhpcy0+VG9WYWx1ZSgpICogc2NhbGFyKTsK
KyAgfQorICBVbml0X1Qgb3BlcmF0b3IqKGNvbnN0IGludDMyX3Qgc2NhbGFyKSBjb25zdCB7Cisg
ICAgcmV0dXJuIFVuaXRCYXNlPFVuaXRfVD46OkZyb21WYWx1ZSh0aGlzLT5Ub1ZhbHVlKCkgKiBz
Y2FsYXIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIHVzaW5nIFVuaXRCYXNlPFVuaXRfVD46OlVu
aXRCYXNlOworfTsKKwordGVtcGxhdGUgPGNsYXNzIFVuaXRfVD4KK2lubGluZSBVbml0X1Qgb3Bl
cmF0b3IqKGNvbnN0IGRvdWJsZSBzY2FsYXIsIGNvbnN0IFJlbGF0aXZlVW5pdDxVbml0X1Q+IG90
aGVyKSB7CisgIHJldHVybiBvdGhlciAqIHNjYWxhcjsKK30KK3RlbXBsYXRlIDxjbGFzcyBVbml0
X1Q+CitpbmxpbmUgVW5pdF9UIG9wZXJhdG9yKihjb25zdCBpbnQ2NF90IHNjYWxhciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbGF0aXZlVW5pdDxVbml0X1Q+IG90aGVyKSB7Cisg
IHJldHVybiBvdGhlciAqIHNjYWxhcjsKK30KK3RlbXBsYXRlIDxjbGFzcyBVbml0X1Q+Citpbmxp
bmUgVW5pdF9UIG9wZXJhdG9yKihjb25zdCBpbnQzMl90JiBzY2FsYXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSZWxhdGl2ZVVuaXQ8VW5pdF9UPiBvdGhlcikgeworICByZXR1cm4g
b3RoZXIgKiBzY2FsYXI7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBydGNfdW5pdHNfaW1wbAorCit9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfVU5JVFNfVU5JVF9C
QVNFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS91bml0cy91bml0X2Jhc2VfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy91bml0X2Jhc2VfdW5p
dHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhjODUwM2RlY2I0NzgzM2U0OWQwZGYxNmQyMDM5Y2IwYWMw
NGNmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3VuaXRzL3VuaXRfYmFzZV91bml0dGVzdC5jYwpAQCAtMCwwICsx
LDIzNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfYmFzZS91bml0
cy91bml0X2Jhc2UuaCIKKworI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CituYW1lc3BhY2UgeworY2xhc3MgVGVzdFVuaXQgZmluYWwgOiBwdWJsaWMgcnRjX3Vu
aXRzX2ltcGw6OlJlbGF0aXZlVW5pdDxUZXN0VW5pdD4geworIHB1YmxpYzoKKyAgVGVzdFVuaXQo
KSA9IGRlbGV0ZTsKKworICB1c2luZyBVbml0QmFzZTo6RnJvbVN0YXRpY1ZhbHVlOworICB1c2lu
ZyBVbml0QmFzZTo6RnJvbVZhbHVlOworICB1c2luZyBVbml0QmFzZTo6VG9WYWx1ZTsKKyAgdXNp
bmcgVW5pdEJhc2U6OlRvVmFsdWVPcjsKKworICB0ZW1wbGF0ZSA8aW50NjRfdCBraWxvPgorICBz
dGF0aWMgY29uc3RleHByIFRlc3RVbml0IEZyb21TdGF0aWNLaWxvKCkgeworICAgIHJldHVybiBG
cm9tU3RhdGljRnJhY3Rpb248a2lsbywgMTAwMD4oKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgc3RhdGljIFRlc3RVbml0IEZyb21LaWxvKFQga2lsbykgeworICAgIHJldHVybiBG
cm9tRnJhY3Rpb248MTAwMD4oa2lsbyk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBp
bnQ2NF90PgorICBUIFRvS2lsbygpIGNvbnN0IHsKKyAgICByZXR1cm4gVW5pdEJhc2U6OlRvRnJh
Y3Rpb248MTAwMCwgVD4oKTsKKyAgfQorICBjb25zdGV4cHIgaW50NjRfdCBUb0tpbG9PcihpbnQ2
NF90IGZhbGxiYWNrKSBjb25zdCB7CisgICAgcmV0dXJuIFVuaXRCYXNlOjpUb0ZyYWN0aW9uT3I8
MTAwMD4oZmFsbGJhY2spOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBjb25zdGV4
cHIgVCBUb01pbGxpKCkgY29uc3QgeworICAgIHJldHVybiBVbml0QmFzZTo6VG9NdWx0aXBsZTwx
MDAwLCBUPigpOworICB9CisKKyBwcml2YXRlOgorICBmcmllbmQgY2xhc3MgVW5pdEJhc2U8VGVz
dFVuaXQ+OworICBzdGF0aWMgY29uc3RleHByIGJvb2wgb25lX3NpZGVkID0gZmFsc2U7CisgIHVz
aW5nIFJlbGF0aXZlVW5pdDxUZXN0VW5pdD46OlJlbGF0aXZlVW5pdDsKK307Cit9ICAvLyBuYW1l
c3BhY2UKK25hbWVzcGFjZSB0ZXN0IHsKK1RFU1QoVW5pdEJhc2VUZXN0LCBDb25zdEV4cHIpIHsK
KyAgY29uc3RleHByIGludDY0X3Qga1ZhbHVlID0gLTEyMzQ1OworICBjb25zdGV4cHIgVGVzdFVu
aXQga1Rlc3RVbml0WmVybyA9IFRlc3RVbml0OjpaZXJvKCk7CisgIGNvbnN0ZXhwciBUZXN0VW5p
dCBrVGVzdFVuaXRQbHVzSW5mID0gVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpOworICBjb25zdGV4
cHIgVGVzdFVuaXQga1Rlc3RVbml0TWludXNJbmYgPSBUZXN0VW5pdDo6TWludXNJbmZpbml0eSgp
OworICBzdGF0aWNfYXNzZXJ0KGtUZXN0VW5pdFplcm8uSXNaZXJvKCksICIiKTsKKyAgc3RhdGlj
X2Fzc2VydChrVGVzdFVuaXRQbHVzSW5mLklzUGx1c0luZmluaXR5KCksICIiKTsKKyAgc3RhdGlj
X2Fzc2VydChrVGVzdFVuaXRNaW51c0luZi5Jc01pbnVzSW5maW5pdHkoKSwgIiIpOworICBzdGF0
aWNfYXNzZXJ0KGtUZXN0VW5pdFBsdXNJbmYuVG9LaWxvT3IoLTEpID09IC0xLCAiIik7CisKKyAg
c3RhdGljX2Fzc2VydChrVGVzdFVuaXRQbHVzSW5mID4ga1Rlc3RVbml0WmVybywgIiIpOworCisg
IGNvbnN0ZXhwciBUZXN0VW5pdCBrVGVzdFVuaXRLaWxvID0gVGVzdFVuaXQ6OkZyb21TdGF0aWNL
aWxvPGtWYWx1ZT4oKTsKKyAgY29uc3RleHByIFRlc3RVbml0IGtUZXN0VW5pdFZhbHVlID0gVGVz
dFVuaXQ6OkZyb21TdGF0aWNWYWx1ZTxrVmFsdWU+KCk7CisKKyAgc3RhdGljX2Fzc2VydChrVGVz
dFVuaXRLaWxvLlRvS2lsb09yKDApID09IGtWYWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KGtU
ZXN0VW5pdFZhbHVlLlRvVmFsdWVPcigwKSA9PSBrVmFsdWUsICIiKTsKK30KKworVEVTVChVbml0
QmFzZVRlc3QsIEdldEJhY2tTYW1lVmFsdWVzKSB7CisgIGNvbnN0IGludDY0X3Qga1ZhbHVlID0g
NDk5OworICBmb3IgKGludCBzaWduID0gLTE7IHNpZ24gPD0gMTsgKytzaWduKSB7CisgICAgaW50
NjRfdCB2YWx1ZSA9IGtWYWx1ZSAqIHNpZ247CisgICAgRVhQRUNUX0VRKFRlc3RVbml0OjpGcm9t
S2lsbyh2YWx1ZSkuVG9LaWxvKCksIHZhbHVlKTsKKyAgICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OkZy
b21WYWx1ZSh2YWx1ZSkuVG9WYWx1ZTxpbnQ2NF90PigpLCB2YWx1ZSk7CisgIH0KKyAgRVhQRUNU
X0VRKFRlc3RVbml0OjpaZXJvKCkuVG9WYWx1ZTxpbnQ2NF90PigpLCAwKTsKK30KKworVEVTVChV
bml0QmFzZVRlc3QsIEdldERpZmZlcmVudFByZWZpeCkgeworICBjb25zdCBpbnQ2NF90IGtWYWx1
ZSA9IDMwMDAwMDA7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6RnJvbVZhbHVlKGtWYWx1ZSkuVG9L
aWxvKCksIGtWYWx1ZSAvIDEwMDApOworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OkZyb21LaWxvKGtW
YWx1ZSkuVG9WYWx1ZTxpbnQ2NF90PigpLCBrVmFsdWUgKiAxMDAwKTsKK30KKworVEVTVChVbml0
QmFzZVRlc3QsIElkZW50aXR5Q2hlY2tzKSB7CisgIGNvbnN0IGludDY0X3Qga1ZhbHVlID0gMzAw
MDsKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6Olplcm8oKS5Jc1plcm8oKSk7CisgIEVYUEVDVF9G
QUxTRShUZXN0VW5pdDo6RnJvbUtpbG8oa1ZhbHVlKS5Jc1plcm8oKSk7CisKKyAgRVhQRUNUX1RS
VUUoVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpLklzSW5maW5pdGUoKSk7CisgIEVYUEVDVF9UUlVF
KFRlc3RVbml0OjpNaW51c0luZmluaXR5KCkuSXNJbmZpbml0ZSgpKTsKKyAgRVhQRUNUX0ZBTFNF
KFRlc3RVbml0OjpaZXJvKCkuSXNJbmZpbml0ZSgpKTsKKyAgRVhQRUNUX0ZBTFNFKFRlc3RVbml0
OjpGcm9tS2lsbygta1ZhbHVlKS5Jc0luZmluaXRlKCkpOworICBFWFBFQ1RfRkFMU0UoVGVzdFVu
aXQ6OkZyb21LaWxvKGtWYWx1ZSkuSXNJbmZpbml0ZSgpKTsKKworICBFWFBFQ1RfRkFMU0UoVGVz
dFVuaXQ6OlBsdXNJbmZpbml0eSgpLklzRmluaXRlKCkpOworICBFWFBFQ1RfRkFMU0UoVGVzdFVu
aXQ6Ok1pbnVzSW5maW5pdHkoKS5Jc0Zpbml0ZSgpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6
OkZyb21LaWxvKC1rVmFsdWUpLklzRmluaXRlKCkpOworICBFWFBFQ1RfVFJVRShUZXN0VW5pdDo6
RnJvbUtpbG8oa1ZhbHVlKS5Jc0Zpbml0ZSgpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6Olpl
cm8oKS5Jc0Zpbml0ZSgpKTsKKworICBFWFBFQ1RfVFJVRShUZXN0VW5pdDo6UGx1c0luZmluaXR5
KCkuSXNQbHVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9GQUxTRShUZXN0VW5pdDo6TWludXNJbmZp
bml0eSgpLklzUGx1c0luZmluaXR5KCkpOworCisgIEVYUEVDVF9UUlVFKFRlc3RVbml0OjpNaW51
c0luZmluaXR5KCkuSXNNaW51c0luZmluaXR5KCkpOworICBFWFBFQ1RfRkFMU0UoVGVzdFVuaXQ6
OlBsdXNJbmZpbml0eSgpLklzTWludXNJbmZpbml0eSgpKTsKK30KKworVEVTVChVbml0QmFzZVRl
c3QsIENvbXBhcmlzb25PcGVyYXRvcnMpIHsKKyAgY29uc3QgaW50NjRfdCBrU21hbGwgPSA0NTA7
CisgIGNvbnN0IGludDY0X3Qga0xhcmdlID0gNDUxOworICBjb25zdCBUZXN0VW5pdCBzbWFsbCA9
IFRlc3RVbml0OjpGcm9tS2lsbyhrU21hbGwpOworICBjb25zdCBUZXN0VW5pdCBsYXJnZSA9IFRl
c3RVbml0OjpGcm9tS2lsbyhrTGFyZ2UpOworCisgIEVYUEVDVF9FUShUZXN0VW5pdDo6WmVybygp
LCBUZXN0VW5pdDo6RnJvbUtpbG8oMCkpOworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OlBsdXNJbmZp
bml0eSgpLCBUZXN0VW5pdDo6UGx1c0luZmluaXR5KCkpOworICBFWFBFQ1RfRVEoc21hbGwsIFRl
c3RVbml0OjpGcm9tS2lsbyhrU21hbGwpKTsKKyAgRVhQRUNUX0xFKHNtYWxsLCBUZXN0VW5pdDo6
RnJvbUtpbG8oa1NtYWxsKSk7CisgIEVYUEVDVF9HRShzbWFsbCwgVGVzdFVuaXQ6OkZyb21LaWxv
KGtTbWFsbCkpOworICBFWFBFQ1RfTkUoc21hbGwsIFRlc3RVbml0OjpGcm9tS2lsbyhrTGFyZ2Up
KTsKKyAgRVhQRUNUX0xFKHNtYWxsLCBUZXN0VW5pdDo6RnJvbUtpbG8oa0xhcmdlKSk7CisgIEVY
UEVDVF9MVChzbWFsbCwgVGVzdFVuaXQ6OkZyb21LaWxvKGtMYXJnZSkpOworICBFWFBFQ1RfR0Uo
bGFyZ2UsIFRlc3RVbml0OjpGcm9tS2lsbyhrU21hbGwpKTsKKyAgRVhQRUNUX0dUKGxhcmdlLCBU
ZXN0VW5pdDo6RnJvbUtpbG8oa1NtYWxsKSk7CisgIEVYUEVDVF9MVChUZXN0VW5pdDo6WmVybygp
LCBzbWFsbCk7CisgIEVYUEVDVF9HVChUZXN0VW5pdDo6WmVybygpLCBUZXN0VW5pdDo6RnJvbUtp
bG8oLWtTbWFsbCkpOworICBFWFBFQ1RfR1QoVGVzdFVuaXQ6Olplcm8oKSwgVGVzdFVuaXQ6OkZy
b21LaWxvKC1rU21hbGwpKTsKKworICBFWFBFQ1RfR1QoVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgp
LCBsYXJnZSk7CisgIEVYUEVDVF9MVChUZXN0VW5pdDo6TWludXNJbmZpbml0eSgpLCBUZXN0VW5p
dDo6WmVybygpKTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIENsYW1waW5nKSB7CisgIGNvbnN0
IFRlc3RVbml0IHVwcGVyID0gVGVzdFVuaXQ6OkZyb21LaWxvKDgwMCk7CisgIGNvbnN0IFRlc3RV
bml0IGxvd2VyID0gVGVzdFVuaXQ6OkZyb21LaWxvKDEwMCk7CisgIGNvbnN0IFRlc3RVbml0IHVu
ZGVyID0gVGVzdFVuaXQ6OkZyb21LaWxvKDEwMCk7CisgIGNvbnN0IFRlc3RVbml0IGluc2lkZSA9
IFRlc3RVbml0OjpGcm9tS2lsbyg1MDApOworICBjb25zdCBUZXN0VW5pdCBvdmVyID0gVGVzdFVu
aXQ6OkZyb21LaWxvKDEwMDApOworICBFWFBFQ1RfRVEodW5kZXIuQ2xhbXBlZChsb3dlciwgdXBw
ZXIpLCBsb3dlcik7CisgIEVYUEVDVF9FUShpbnNpZGUuQ2xhbXBlZChsb3dlciwgdXBwZXIpLCBp
bnNpZGUpOworICBFWFBFQ1RfRVEob3Zlci5DbGFtcGVkKGxvd2VyLCB1cHBlciksIHVwcGVyKTsK
KworICBUZXN0VW5pdCBtdXRhYmxlX2RlbHRhID0gbG93ZXI7CisgIG11dGFibGVfZGVsdGEuQ2xh
bXAobG93ZXIsIHVwcGVyKTsKKyAgRVhQRUNUX0VRKG11dGFibGVfZGVsdGEsIGxvd2VyKTsKKyAg
bXV0YWJsZV9kZWx0YSA9IGluc2lkZTsKKyAgbXV0YWJsZV9kZWx0YS5DbGFtcChsb3dlciwgdXBw
ZXIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9kZWx0YSwgaW5zaWRlKTsKKyAgbXV0YWJsZV9kZWx0
YSA9IG92ZXI7CisgIG11dGFibGVfZGVsdGEuQ2xhbXAobG93ZXIsIHVwcGVyKTsKKyAgRVhQRUNU
X0VRKG11dGFibGVfZGVsdGEsIHVwcGVyKTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIENhbkJl
SW5pdGl0aWFsaXplZEZyb21MYXJnZUludCkgeworICBjb25zdCBpbnQga01heEludCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6RnJvbUtp
bG8oa01heEludCkuVG9WYWx1ZTxpbnQ2NF90PigpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
aW50NjRfdD4oa01heEludCkgKiAxMDAwKTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIENvbnZl
cnRzVG9BbmRGcm9tRG91YmxlKSB7CisgIGNvbnN0IGludDY0X3Qga1ZhbHVlID0gMTcwMTc7Cisg
IGNvbnN0IGRvdWJsZSBrTWlsbGlEb3VibGUgPSBrVmFsdWUgKiAxZTM7CisgIGNvbnN0IGRvdWJs
ZSBrVmFsdWVEb3VibGUgPSBrVmFsdWU7CisgIGNvbnN0IGRvdWJsZSBrS2lsb0RvdWJsZSA9IGtW
YWx1ZSAqIDFlLTM7CisKKyAgRVhQRUNUX0VRKFRlc3RVbml0OjpGcm9tVmFsdWUoa1ZhbHVlKS5U
b0tpbG88ZG91YmxlPigpLCBrS2lsb0RvdWJsZSk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6RnJv
bUtpbG8oa0tpbG9Eb3VibGUpLlRvVmFsdWU8aW50NjRfdD4oKSwga1ZhbHVlKTsKKworICBFWFBF
Q1RfRVEoVGVzdFVuaXQ6OkZyb21WYWx1ZShrVmFsdWUpLlRvVmFsdWU8ZG91YmxlPigpLCBrVmFs
dWVEb3VibGUpOworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OkZyb21WYWx1ZShrVmFsdWVEb3VibGUp
LlRvVmFsdWU8aW50NjRfdD4oKSwga1ZhbHVlKTsKKworICBFWFBFQ1RfTkVBUihUZXN0VW5pdDo6
RnJvbVZhbHVlKGtWYWx1ZSkuVG9NaWxsaTxkb3VibGU+KCksIGtNaWxsaURvdWJsZSwgMSk7CisK
KyAgY29uc3QgZG91YmxlIGtQbHVzSW5maW5pdHkgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmluZmluaXR5KCk7CisgIGNvbnN0IGRvdWJsZSBrTWludXNJbmZpbml0eSA9IC1rUGx1c0lu
ZmluaXR5OworCisgIEVYUEVDVF9FUShUZXN0VW5pdDo6UGx1c0luZmluaXR5KCkuVG9LaWxvPGRv
dWJsZT4oKSwga1BsdXNJbmZpbml0eSk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6TWludXNJbmZp
bml0eSgpLlRvS2lsbzxkb3VibGU+KCksIGtNaW51c0luZmluaXR5KTsKKyAgRVhQRUNUX0VRKFRl
c3RVbml0OjpQbHVzSW5maW5pdHkoKS5Ub1ZhbHVlPGRvdWJsZT4oKSwga1BsdXNJbmZpbml0eSk7
CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6TWludXNJbmZpbml0eSgpLlRvVmFsdWU8ZG91YmxlPigp
LCBrTWludXNJbmZpbml0eSk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6UGx1c0luZmluaXR5KCku
VG9NaWxsaTxkb3VibGU+KCksIGtQbHVzSW5maW5pdHkpOworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6
Ok1pbnVzSW5maW5pdHkoKS5Ub01pbGxpPGRvdWJsZT4oKSwga01pbnVzSW5maW5pdHkpOworCisg
IEVYUEVDVF9UUlVFKFRlc3RVbml0OjpGcm9tS2lsbyhrUGx1c0luZmluaXR5KS5Jc1BsdXNJbmZp
bml0eSgpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6OkZyb21LaWxvKGtNaW51c0luZmluaXR5
KS5Jc01pbnVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RVbml0OjpGcm9tVmFsdWUo
a1BsdXNJbmZpbml0eSkuSXNQbHVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RVbml0
OjpGcm9tVmFsdWUoa01pbnVzSW5maW5pdHkpLklzTWludXNJbmZpbml0eSgpKTsKK30KKworVEVT
VChVbml0QmFzZVRlc3QsIE1hdGhPcGVyYXRpb25zKSB7CisgIGNvbnN0IGludDY0X3Qga1ZhbHVl
QSA9IDI2NzsKKyAgY29uc3QgaW50NjRfdCBrVmFsdWVCID0gNDUwOworICBjb25zdCBUZXN0VW5p
dCBkZWx0YV9hID0gVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZUEpOworICBjb25zdCBUZXN0VW5p
dCBkZWx0YV9iID0gVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZUIpOworICBFWFBFQ1RfRVEoKGRl
bHRhX2EgKyBkZWx0YV9iKS5Ub0tpbG8oKSwga1ZhbHVlQSArIGtWYWx1ZUIpOworICBFWFBFQ1Rf
RVEoKGRlbHRhX2EgLSBkZWx0YV9iKS5Ub0tpbG8oKSwga1ZhbHVlQSAtIGtWYWx1ZUIpOworCisg
IGNvbnN0IGludDMyX3Qga0ludDMyVmFsdWUgPSAxMjM7CisgIGNvbnN0IGRvdWJsZSBrRmxvYXRW
YWx1ZSA9IDEyMy4wOworICBFWFBFQ1RfRVEoKFRlc3RVbml0OjpGcm9tVmFsdWUoa1ZhbHVlQSkg
KiBrVmFsdWVCKS5Ub1ZhbHVlPGludDY0X3Q+KCksCisgICAgICAgICAgICBrVmFsdWVBICoga1Zh
bHVlQik7CisgIEVYUEVDVF9FUSgoVGVzdFVuaXQ6OkZyb21WYWx1ZShrVmFsdWVBKSAqIGtJbnQz
MlZhbHVlKS5Ub1ZhbHVlPGludDY0X3Q+KCksCisgICAgICAgICAgICBrVmFsdWVBICoga0ludDMy
VmFsdWUpOworICBFWFBFQ1RfRVEoKFRlc3RVbml0OjpGcm9tVmFsdWUoa1ZhbHVlQSkgKiBrRmxv
YXRWYWx1ZSkuVG9WYWx1ZTxpbnQ2NF90PigpLAorICAgICAgICAgICAga1ZhbHVlQSAqIGtGbG9h
dFZhbHVlKTsKKworICBFWFBFQ1RfRVEoKGRlbHRhX2IgLyAxMCkuVG9LaWxvKCksIGtWYWx1ZUIg
LyAxMCk7CisgIEVYUEVDVF9FUShkZWx0YV9iIC8gZGVsdGFfYSwgc3RhdGljX2Nhc3Q8ZG91Ymxl
PihrVmFsdWVCKSAvIGtWYWx1ZUEpOworCisgIFRlc3RVbml0IG11dGFibGVfZGVsdGEgPSBUZXN0
VW5pdDo6RnJvbUtpbG8oa1ZhbHVlQSk7CisgIG11dGFibGVfZGVsdGEgKz0gVGVzdFVuaXQ6OkZy
b21LaWxvKGtWYWx1ZUIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9kZWx0YSwgVGVzdFVuaXQ6OkZy
b21LaWxvKGtWYWx1ZUEgKyBrVmFsdWVCKSk7CisgIG11dGFibGVfZGVsdGEgLT0gVGVzdFVuaXQ6
OkZyb21LaWxvKGtWYWx1ZUIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9kZWx0YSwgVGVzdFVuaXQ6
OkZyb21LaWxvKGtWYWx1ZUEpKTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIEluZmluaXR5T3Bl
cmF0aW9ucykgeworICBjb25zdCBpbnQ2NF90IGtWYWx1ZSA9IDI2NzsKKyAgY29uc3QgVGVzdFVu
aXQgZmluaXRlID0gVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZSk7CisgIEVYUEVDVF9UUlVFKChU
ZXN0VW5pdDo6UGx1c0luZmluaXR5KCkgKyBmaW5pdGUpLklzUGx1c0luZmluaXR5KCkpOworICBF
WFBFQ1RfVFJVRSgoVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpIC0gZmluaXRlKS5Jc1BsdXNJbmZp
bml0eSgpKTsKKyAgRVhQRUNUX1RSVUUoKGZpbml0ZSArIFRlc3RVbml0OjpQbHVzSW5maW5pdHko
KSkuSXNQbHVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9UUlVFKChmaW5pdGUgLSBUZXN0VW5pdDo6
TWludXNJbmZpbml0eSgpKS5Jc1BsdXNJbmZpbml0eSgpKTsKKworICBFWFBFQ1RfVFJVRSgoVGVz
dFVuaXQ6Ok1pbnVzSW5maW5pdHkoKSArIGZpbml0ZSkuSXNNaW51c0luZmluaXR5KCkpOworICBF
WFBFQ1RfVFJVRSgoVGVzdFVuaXQ6Ok1pbnVzSW5maW5pdHkoKSAtIGZpbml0ZSkuSXNNaW51c0lu
ZmluaXR5KCkpOworICBFWFBFQ1RfVFJVRSgoZmluaXRlICsgVGVzdFVuaXQ6Ok1pbnVzSW5maW5p
dHkoKSkuSXNNaW51c0luZmluaXR5KCkpOworICBFWFBFQ1RfVFJVRSgoZmluaXRlIC0gVGVzdFVu
aXQ6OlBsdXNJbmZpbml0eSgpKS5Jc01pbnVzSW5maW5pdHkoKSk7Cit9Cit9ICAvLyBuYW1lc3Bh
Y2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHRlc3RfbWFpbi5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3VuaXR0
ZXN0X21haW4uY2MKaW5kZXggOGQ0ZmYyZGYyZDM5MzBjZjdlZDRjODU5ZTE5N2Y5MWY0M2NlMDgz
Yy4uNWZkM2E5OTY4NzZmOGRjYTM1NDRkMDg4NDQxMjU0Nzc0NzAwOTk5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHRl
c3RfbWFpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS91bml0dGVzdF9tYWluLmNjCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAi
c3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJzeXN0ZW1f
d3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5o
IgotI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKICNpZiBkZWZpbmVk
KFdFQlJUQ19XSU4pCiAjaW5jbHVkZSAicnRjX2Jhc2Uvd2luMzJzb2NrZXRpbml0LmgiCkBAIC0z
MiwxOSArMzEsMjAgQEAKICNpbmNsdWRlICJ0ZXN0L2lvcy90ZXN0X3N1cHBvcnQuaCIKICNlbmRp
ZgogCi1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKTsKLURF
RklORV9zdHJpbmcobG9nLCAiIiwgImxvZ2dpbmcgb3B0aW9ucyB0byB1c2UiKTsKLURFRklORV9z
dHJpbmcoCitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNz
YWdlIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhsb2csICIiLCAibG9nZ2luZyBvcHRpb25zIHRv
IHVzZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgZm9yY2VfZmllbGR0cmlhbHMsCiAg
ICAgIiIsCiAgICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGNv
ZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgogICAgICJFLmcuIHJ1bm5pbmcgd2l0aCAtLWZvcmNl
X2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZS8iCiAgICAgIiB3aWxsIGFzc2ln
biB0aGUgZ3JvdXAgRW5hYmxlIHRvIGZpZWxkIHRyaWFsIFdlYlJUQy1Gb29GZWF0dXJlLiIpOwog
I2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLURFRklORV9pbnQoY3J0X2JyZWFrX2FsbG9jLCAtMSwg
Im1lbW9yeSBhbGxvY2F0aW9uIHRvIGJyZWFrIG9uIik7Ci1ERUZJTkVfYm9vbChkZWZhdWx0X2Vy
cm9yX2hhbmRsZXJzLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAibGVhdmUgdGhl
IGRlZmF1bHQgZXhjZXB0aW9uL2RiZyBoYW5kbGVyIGZ1bmN0aW9ucyBpbiBwbGFjZSIpOworV0VC
UlRDX0RFRklORV9pbnQoY3J0X2JyZWFrX2FsbG9jLCAtMSwgIm1lbW9yeSBhbGxvY2F0aW9uIHRv
IGJyZWFrIG9uIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgZGVmYXVsdF9lcnJvcl9oYW5k
bGVycywKKyAgICBmYWxzZSwKKyAgICAibGVhdmUgdGhlIGRlZmF1bHQgZXhjZXB0aW9uL2RiZyBo
YW5kbGVyIGZ1bmN0aW9ucyBpbiBwbGFjZSIpOwogCiB2b2lkIFRlc3RJbnZhbGlkUGFyYW1ldGVy
SGFuZGxlcihjb25zdCB3Y2hhcl90KiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogZnVuY3Rpb24sCkBAIC04MSw3ICs4MSw2IEBAIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICByZXR1cm4gMDsKICAgfQogCi0g
IHdlYnJ0Yzo6dGVzdDo6U2V0RXhlY3V0YWJsZVBhdGgoYXJndlswXSk7CiAgIHdlYnJ0Yzo6dGVz
dDo6VmFsaWRhdGVGaWVsZFRyaWFsc1N0cmluZ09yRGllKEZMQUdfZm9yY2VfZmllbGR0cmlhbHMp
OwogICAvLyBJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5nIHN0b3JlcyB0aGUgY2hhciosIHNvIHRo
ZSBjaGFyIGFycmF5IG11c3Qgb3V0bGl2ZQogICAvLyB0aGUgYXBwbGljYXRpb24uCkBAIC0xMTgs
NyArMTE3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogCiAgIC8vIElu
aXRpYWxpemUgU1NMIHdoaWNoIGFyZSB1c2VkIGJ5IHNldmVyYWwgdGVzdHMuCiAgIHJ0Yzo6SW5p
dGlhbGl6ZVNTTCgpOwotICBydGM6OlNTTFN0cmVhbUFkYXB0ZXI6OmVuYWJsZV90aW1lX2NhbGxi
YWNrX2Zvcl90ZXN0aW5nKCk7CisgIHJ0Yzo6U1NMU3RyZWFtQWRhcHRlcjo6RW5hYmxlVGltZUNh
bGxiYWNrRm9yVGVzdGluZygpOwogCiAjaWYgZGVmaW5lZChXRUJSVENfSU9TKQogICBydGM6OnRl
c3Q6OkluaXRUZXN0U3VpdGUoUlVOX0FMTF9URVNUUywgYXJnYywgYXJndiwgZmFsc2UpOwpAQCAt
MTM4LDUgKzEzNywxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAg
X0NydFNldFJlcG9ydEhvb2syKF9DUlRfUlBUSE9PS19SRU1PVkUsIFRlc3RDcnRSZXBvcnRIYW5k
bGVyKTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgfHwgZGVmaW5l
ZChMRUFLX1NBTklUSVpFUikgfHwgIFwKKyAgICBkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpIHx8
IGRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikgfHwgXAorICAgIGRlZmluZWQoVU5ERUZJTkVEX1NB
TklUSVpFUikKKyAgLy8gV2Ugd2FudCB0aGUgdGVzdCBmbGFnZ2VkIGFzIGZhaWxlZCBvbmx5IGZv
ciBzYW5pdGl6ZXIgZGVmZWN0cywKKyAgLy8gaW4gd2hpY2ggY2FzZSB0aGUgc2FuaXRpemVyIHdp
bGwgb3ZlcnJpZGUgZXhpdCBjb2RlIHdpdGggNjYuCisgIHJldHVybiAwOworI2VuZGlmCisKICAg
cmV0dXJuIHJlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3VuaXhmaWxlc3lzdGVtLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uY2MKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyM2MzNGM4Yzk0M2Y4NzNkOGNiZmFmMTI1ZjVk
NzFiODljODUzMGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5p
eGZpbGVzeXN0ZW0uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLQotI2luY2x1ZGUgInJ0Y19iYXNlL3VuaXhmaWxlc3lzdGVtLmgiCi0KLSNpbmNs
dWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0j
aW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2lmIGRlZmluZWQo
V0VCUlRDX01BQykgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKLSNpbmNsdWRlIDxDb3JlU2Vydmlj
ZXMvQ29yZVNlcnZpY2VzLmg+Ci0jaW5jbHVkZSA8SU9LaXQvSU9DRkJ1bmRsZS5oPgotI2luY2x1
ZGUgPHN5cy9zdGF0dmZzLmg+Ci0jaW5jbHVkZSAicnRjX2Jhc2UvbWFjdXRpbHMuaCIKLSNlbmRp
ZiAgLy8gV0VCUlRDX01BQyAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQotCi0jaWYgZGVmaW5lZChX
RUJSVENfUE9TSVgpICYmICFkZWZpbmVkKFdFQlJUQ19NQUMpIHx8IGRlZmluZWQoV0VCUlRDX0lP
UykKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQot
I2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KLSNlbGlmICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9f
KQotI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+Ci0jZW5kaWYgIC8vICAhZGVmaW5lZChfX25hdGl2
ZV9jbGllbnRfXykKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxwd2QuaD4KLSNpbmNs
dWRlIDxzdGRpby5oPgotI2VuZGlmICAvLyBXRUJSVENfUE9TSVggJiYgIVdFQlJUQ19NQUMgfHwg
V0VCUlRDX0lPUwotCi0jaWYgZGVmaW5lZChXRUJSVENfTElOVVgpICYmICFkZWZpbmVkKFdFQlJU
Q19BTkRST0lEKQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2Vu
ZGlmCi0KLSNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSAmJiAhZGVmaW5lZChfX0dMSUJD
X18pCi0jaW5jbHVkZSA8c3lzL3N5c2xpbWl0cy5oPgotI2VuZGlmCi0KLSNpbmNsdWRlICJydGNf
YmFzZS9hcnJheXNpemUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9maWxldXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9wYXRodXRpbHMuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1
dGlscy5oIgotCi1uYW1lc3BhY2UgcnRjIHsKLQotVW5peEZpbGVzeXN0ZW06OlVuaXhGaWxlc3lz
dGVtKCkge30KLQotVW5peEZpbGVzeXN0ZW06On5Vbml4RmlsZXN5c3RlbSgpIHt9Ci0KLWJvb2wg
VW5peEZpbGVzeXN0ZW06OkRlbGV0ZUZpbGUoY29uc3QgUGF0aG5hbWUmIGZpbGVuYW1lKSB7Ci0g
IFJUQ19MT0coTFNfSU5GTykgPDwgIkRlbGV0aW5nIGZpbGU6IiA8PCBmaWxlbmFtZS5wYXRobmFt
ZSgpOwotCi0gIGlmICghSXNGaWxlKGZpbGVuYW1lKSkgewotICAgIFJUQ19EQ0hFQ0soSXNGaWxl
KGZpbGVuYW1lKSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHJldHVybiA6OnVubGluayhm
aWxlbmFtZS5wYXRobmFtZSgpLmNfc3RyKCkpID09IDA7Ci19Ci0KLWJvb2wgVW5peEZpbGVzeXN0
ZW06Ok1vdmVGaWxlKGNvbnN0IFBhdGhuYW1lJiBvbGRfcGF0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFBhdGhuYW1lJiBuZXdfcGF0aCkgewotICBpZiAoIUlzRmlsZShv
bGRfcGF0aCkpIHsKLSAgICBSVENfRENIRUNLKElzRmlsZShvbGRfcGF0aCkpOwotICAgIHJldHVy
biBmYWxzZTsKLSAgfQotICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICJNb3ZpbmcgIiA8PCBvbGRf
cGF0aC5wYXRobmFtZSgpIDw8ICIgdG8gIgotICAgICAgICAgICAgICAgICAgICAgIDw8IG5ld19w
YXRoLnBhdGhuYW1lKCk7Ci0gIGlmIChyZW5hbWUob2xkX3BhdGgucGF0aG5hbWUoKS5jX3N0cigp
LCBuZXdfcGF0aC5wYXRobmFtZSgpLmNfc3RyKCkpICE9IDApIHsKLSAgICByZXR1cm4gZmFsc2U7
Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVW5peEZpbGVzeXN0ZW06OklzRm9sZGVy
KGNvbnN0IFBhdGhuYW1lJiBwYXRoKSB7Ci0gIHN0cnVjdCBzdGF0IHN0OwotICBpZiAoc3RhdChw
YXRoLnBhdGhuYW1lKCkuY19zdHIoKSwgJnN0KSA8IDApCi0gICAgcmV0dXJuIGZhbHNlOwotICBy
ZXR1cm4gU19JU0RJUihzdC5zdF9tb2RlKTsKLX0KLQotYm9vbCBVbml4RmlsZXN5c3RlbTo6SXNG
aWxlKGNvbnN0IFBhdGhuYW1lJiBwYXRobmFtZSkgewotICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgaW50
IHJlcyA9IDo6c3RhdChwYXRobmFtZS5wYXRobmFtZSgpLmNfc3RyKCksICZzdCk7Ci0gIC8vIFRy
ZWF0IHN5bWxpbmtzLCBuYW1lZCBwaXBlcywgZXRjLiBhbGwgYXMgZmlsZXMuCi0gIHJldHVybiBy
ZXMgPT0gMCAmJiAhU19JU0RJUihzdC5zdF9tb2RlKTsKLX0KLQotYm9vbCBVbml4RmlsZXN5c3Rl
bTo6R2V0RmlsZVNpemUoY29uc3QgUGF0aG5hbWUmIHBhdGhuYW1lLCBzaXplX3QqIHNpemUpIHsK
LSAgc3RydWN0IHN0YXQgc3Q7Ci0gIGlmICg6OnN0YXQocGF0aG5hbWUucGF0aG5hbWUoKS5jX3N0
cigpLCAmc3QpICE9IDApCi0gICAgcmV0dXJuIGZhbHNlOwotICAqc2l6ZSA9IHN0LnN0X3NpemU7
Ci0gIHJldHVybiB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2UgcnRjCi0KLSNpZiBkZWZpbmVk
KF9fbmF0aXZlX2NsaWVudF9fKQotZXh0ZXJuICJDIiBpbnQgX19hdHRyaWJ1dGVfXygod2Vhaykp
Ci1saW5rKGNvbnN0IGNoYXIqIG9sZHBhdGgsIGNvbnN0IGNoYXIqIG5ld3BhdGgpIHsKLSAgZXJy
bm8gPSBFQUNDRVM7Ci0gIHJldHVybiAtMTsKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5peGZpbGVzeXN0
ZW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3VuaXhmaWxlc3lzdGVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMWQ3YjNl
YTE5MmUxNDljOTExMWEwZDk0YjllOGZkY2VlZGEyNzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1
ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgUlRDX0JBU0VfVU5JWEZJTEVT
WVNURU1fSF8KLSNkZWZpbmUgUlRDX0JBU0VfVU5JWEZJTEVTWVNURU1fSF8KLQotI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvZmlsZXV0aWxzLmgiCi0KLW5hbWVz
cGFjZSBydGMgewotCi1jbGFzcyBVbml4RmlsZXN5c3RlbSA6IHB1YmxpYyBGaWxlc3lzdGVtSW50
ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIFVuaXhGaWxlc3lzdGVtKCk7Ci0gIH5Vbml4RmlsZXN5c3Rl
bSgpIG92ZXJyaWRlOwotCi0gIC8vIFRoaXMgd2lsbCBhdHRlbXB0IHRvIGRlbGV0ZSB0aGUgZmls
ZSBsb2NhdGVkIGF0IGZpbGVuYW1lLgotICAvLyBJdCB3aWxsIGZhaWwgd2l0aCBWRVJJWSBpZiB5
b3UgcGFzcyBpdCBhIG5vbi1leGlzdGFudCBmaWxlLCBvciBhIGRpcmVjdG9yeS4KLSAgYm9vbCBE
ZWxldGVGaWxlKGNvbnN0IFBhdGhuYW1lJiBmaWxlbmFtZSkgb3ZlcnJpZGU7Ci0KLSAgLy8gVGhp
cyBtb3ZlcyBhIGZpbGUgZnJvbSBvbGRfcGF0aCB0byBuZXdfcGF0aCwgd2hlcmUgImZpbGUiIGNh
biBiZSBhIHBsYWluCi0gIC8vIGZpbGUgb3IgZGlyZWN0b3J5LCB3aGljaCB3aWxsIGJlIG1vdmVk
IHJlY3Vyc2l2ZWx5LgotICAvLyBSZXR1cm5zIHRydWUgaWYgZnVuY3Rpb24gc3VjY2VlZHMuCi0g
IGJvb2wgTW92ZUZpbGUoY29uc3QgUGF0aG5hbWUmIG9sZF9wYXRoLCBjb25zdCBQYXRobmFtZSYg
bmV3X3BhdGgpIG92ZXJyaWRlOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiBhIHBhdGhuYW1lIGlz
IGEgZGlyZWN0b3J5Ci0gIGJvb2wgSXNGb2xkZXIoY29uc3QgUGF0aG5hbWUmIHBhdGhuYW1lKSBv
dmVycmlkZTsKLQotICAvLyBSZXR1cm5zIHRydWUgb2YgcGF0aG5hbWUgcmVwcmVzZW50cyBhbiBl
eGlzdGluZyBmaWxlCi0gIGJvb2wgSXNGaWxlKGNvbnN0IFBhdGhuYW1lJiBwYXRobmFtZSkgb3Zl
cnJpZGU7Ci0KLSAgYm9vbCBHZXRGaWxlU2l6ZShjb25zdCBQYXRobmFtZSYgcGF0aCwgc2l6ZV90
KiBzaXplKSBvdmVycmlkZTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBydGMKLQotI2VuZGlmICAv
LyBSVENfQkFTRV9VTklYRklMRVNZU1RFTV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldF91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3ZpcnR1YWxzb2NrZXRfdW5pdHRlc3QuY2MKaW5kZXggZDJiZmY1NDY4ODM3YmQxNmQ5MzAzODMx
YjU4NDM2ZmMzN2FkNzU3Yi4uZDQ0ZjQ2YTY1ZTVjMTQ4M2Q1NWNjZGMxMDgyYzNmNTM1ZGZiOWZj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvdmlydHVhbHNvY2tldF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0X3VuaXR0ZXN0
LmNjCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RydWN0IFJlY2VpdmVyIDogcHVibGljIE1lc3NhZ2VI
YW5kbGVyLCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovKSB7CiAgICAg
QVNTRVJUX0VRKHNvY2tldC5nZXQoKSwgcyk7CiAgICAgQVNTRVJUX0dFKHNpemUsIDRVKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuY2MKaW5kZXggYWU0
MGQ3ODg4ZjU1MWJmN2M1YWJjYjg4YmE0YTc3ZjY2YzQwYjc2YS4uYmZjZTBmNTQ1NDFlOWQxODE2
YzZkMTMyYjY2ZTM3Mjk2NDE3MDJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0
dWFsc29ja2V0c2VydmVyLmNjCkBAIC01MjUsNyArNTI1LDYgQEAgVmlydHVhbFNvY2tldFNlcnZl
cjo6VmlydHVhbFNvY2tldFNlcnZlcigpIDogVmlydHVhbFNvY2tldFNlcnZlcihudWxscHRyKSB7
fQogCiBWaXJ0dWFsU29ja2V0U2VydmVyOjpWaXJ0dWFsU29ja2V0U2VydmVyKEZha2VDbG9jayog
ZmFrZV9jbG9jaykKICAgICA6IGZha2VfY2xvY2tfKGZha2VfY2xvY2spLAotICAgICAgd2FrZXVw
XygvKm1hbnVhbF9yZXNldD0qL2ZhbHNlLCAvKmluaXRpYWxseV9zaWduYWxlZD0qL2ZhbHNlKSwK
ICAgICAgIG1zZ19xdWV1ZV8obnVsbHB0ciksCiAgICAgICBzdG9wX29uX2lkbGVfKGZhbHNlKSwK
ICAgICAgIG5leHRfaXB2NF8oa0luaXRpYWxOZXh0SVB2NCksCkBAIC0xMDI3LDggKzEwMjYsOSBA
QCB2b2lkIFZpcnR1YWxTb2NrZXRTZXJ2ZXI6OlVwZGF0ZURlbGF5RGlzdHJpYnV0aW9uKCkgewog
ICB9CiB9CiAKKwogc3RhdGljIGRvdWJsZSBOb3JtYWwoZG91YmxlIHgsIGRvdWJsZSBtZWFuLCBk
b3VibGUgc3RkZGV2KSB7Ci0gIHN0YXRpYyBjb25zdCBkb3VibGUgUEkgPSA0ICogYXRhbigxLjAp
OworICBzdGF0aWMgZG91YmxlIFBJID0gNCAqIGF0YW4oMS4wKTsKICAgZG91YmxlIGEgPSAoeCAt
IG1lYW4pICogKHggLSBtZWFuKSAvICgyICogc3RkZGV2ICogc3RkZGV2KTsKICAgcmV0dXJuIGV4
cCgtYSkgLyAoc3RkZGV2ICogc3FydCgyICogUEkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dlYWtfcHRyX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvd2Vha19wdHJfdW5pdHRlc3QuY2MKaW5kZXggOTU0MTcxODM0ZTY3YjI5MDQ0ZTY3NDQ4YmI4
OGVmNTI0OWIwNzRmMi4uNjZmMmI0ZGY1YjE4ZmQ4ZjYyOTliNTgzMzRkNjE5NGMyNWM1NGI3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvd2Vha19wdHJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2Vha19wdHJfdW5pdHRlc3QuY2MKQEAgLTIwMiw3
ICsyMDIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4KIHN0ZDo6dW5pcXVlX3B0cjxUPiBOZXdPYmpl
Y3RDcmVhdGVkT25UYXNrUXVldWUoKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUPiBvYmo7CiAgIFRh
c2tRdWV1ZSBxdWV1ZSgiTmV3T2JqZWN0Q3JlYXRlZE9uVGFza1F1ZXVlIik7Ci0gIEV2ZW50IGV2
ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBxdWV1ZS5Qb3N0VGFzayhbJmV2
ZW50LCAmb2JqXSB7CiAgICAgb2JqLnJlc2V0KG5ldyBUKCkpOwogICAgIGV2ZW50LlNldCgpOwpA
QCAtMjI5LDcgKzIyOSw3IEBAIFRFU1QoV2Vha1B0clRlc3QsIFdlYWtQdHJJbml0aWF0ZUFuZFVz
ZU9uRGlmZmVyZW50VGhyZWFkcykgewogICAvLyBDcmVhdGUgd2VhayBwdHIgb24gbWFpbiB0aHJl
YWQKICAgV2Vha1B0cjxUYXJnZXQ+IHdlYWtfcHRyID0gdGFyZ2V0LT5mYWN0b3J5LkdldFdlYWtQ
dHIoKTsKICAgcnRjOjpUYXNrUXVldWUgcXVldWUoInF1ZXVlIik7Ci0gIHJ0Yzo6RXZlbnQgZG9u
ZShmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIHF1ZXVlLlBvc3RUYXNrKFsm
XSB7CiAgICAgLy8gRGVyZWZlcmVuY2UgYW5kIGludmFsaWRlIHdlYWtfcHRyIG9uIGFub3RoZXIg
dGhyZWFkLgogICAgIEVYUEVDVF9FUSh3ZWFrX3B0ci5nZXQoKSwgdGFyZ2V0LmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3dpbjMyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvd2luMzIuY2MKaW5kZXggZDgxZDY4NWYxNmMwZjI4YzBkY2QzZThhNzVlYzdjOWVi
ZGE4ZTAxMC4uZTM0ODJlMzIzODQ0OGY2ZTVmMjYxNGU0NjU5OTU2YzhiMmE1ZDJjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
d2luMzIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvd2luMzIuY2MKQEAgLTcyLDkgKzcyLDkgQEAgY29uc3QgY2hhciogaW5ldF9udG9w
X3Y0KGNvbnN0IHZvaWQqIHNyYywgY2hhciogZHN0LCBzb2NrbGVuX3Qgc2l6ZSkgewogICB9CiAg
IGNvbnN0IHN0cnVjdCBpbl9hZGRyKiBhc19pbl9hZGRyID0KICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc3RydWN0IGluX2FkZHIqPihzcmMpOwotICBydGM6OnNwcmludGZuKGRzdCwgc2l6
ZSwgIiVkLiVkLiVkLiVkIiwgYXNfaW5fYWRkci0+U191bi5TX3VuX2Iuc19iMSwKLSAgICAgICAg
ICAgICAgICBhc19pbl9hZGRyLT5TX3VuLlNfdW5fYi5zX2IyLCBhc19pbl9hZGRyLT5TX3VuLlNf
dW5fYi5zX2IzLAotICAgICAgICAgICAgICAgIGFzX2luX2FkZHItPlNfdW4uU191bl9iLnNfYjQp
OworICBzbnByaW50Zihkc3QsIHNpemUsICIlZC4lZC4lZC4lZCIsIGFzX2luX2FkZHItPlNfdW4u
U191bl9iLnNfYjEsCisgICAgICAgICAgIGFzX2luX2FkZHItPlNfdW4uU191bl9iLnNfYjIsIGFz
X2luX2FkZHItPlNfdW4uU191bl9iLnNfYjMsCisgICAgICAgICAgIGFzX2luX2FkZHItPlNfdW4u
U191bl9iLnNfYjQpOwogICByZXR1cm4gZHN0OwogfQogCkBAIC0xMjcsNyArMTI3LDcgQEAgY29u
c3QgY2hhciogaW5ldF9udG9wX3Y2KGNvbnN0IHZvaWQqIHNyYywgY2hhciogZHN0LCBzb2NrbGVu
X3Qgc2l6ZSkgewogICAgICpjdXJzb3IrKyA9ICc6JzsKICAgICAqY3Vyc29yKysgPSAnOic7CiAg
ICAgaWYgKG1heHBvcyA9PSA0KSB7Ci0gICAgICBjdXJzb3IgKz0gcnRjOjpzcHJpbnRmbihjdXJz
b3IsIElORVQ2X0FERFJTVFJMRU4gLSAyLCAiZmZmZjoiKTsKKyAgICAgIGN1cnNvciArPSBzbnBy
aW50ZihjdXJzb3IsIElORVQ2X0FERFJTVFJMRU4gLSAyLCAiZmZmZjoiKTsKICAgICB9CiAgICAg
Y29uc3Qgc3RydWN0IGluX2FkZHIqIGFzX3Y0ID0KICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBzdHJ1Y3QgaW5fYWRkcio+KCYoYXNfc2hvcnRzWzZdKSk7CkBAIC0xMzYsOCArMTM2LDgg
QEAgY29uc3QgY2hhciogaW5ldF9udG9wX3Y2KGNvbnN0IHZvaWQqIHNyYywgY2hhciogZHN0LCBz
b2NrbGVuX3Qgc2l6ZSkgewogICB9IGVsc2UgewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVu
X2FycmF5X3NpemU7ICsraSkgewogICAgICAgaWYgKHJ1bnBvc1tpXSA9PSAtMSkgewotICAgICAg
ICBjdXJzb3IgKz0gcnRjOjpzcHJpbnRmbihjdXJzb3IsIElORVQ2X0FERFJTVFJMRU4gLSAoY3Vy
c29yIC0gZHN0KSwgIiV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0d29y
a1RvSG9zdDE2KGFzX3Nob3J0c1tpXSkpOworICAgICAgICBjdXJzb3IgKz0gc25wcmludGYoY3Vy
c29yLCBJTkVUNl9BRERSU1RSTEVOIC0gKGN1cnNvciAtIGRzdCksICIleCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXR3b3JrVG9Ib3N0MTYoYXNfc2hvcnRzW2ldKSk7CiAgICAgICAg
IGlmIChpICE9IDcgJiYgcnVucG9zW2kgKyAxXSAhPSAxKSB7CiAgICAgICAgICAgKmN1cnNvcisr
ID0gJzonOwogICAgICAgICB9CkBAIC0yMjQsOCArMjI0LDggQEAgaW50IGluZXRfcHRvbl92Nihj
b25zdCBjaGFyKiBzcmMsIHZvaWQqIGRzdCkgewogICAgICAgKihyZWFkY3Vyc29yICsgMikgIT0g
MCkgewogICAgIC8vIENoZWNrIGZvciBwZXJpb2RzLCB3aGljaCB3ZSdsbCB0YWtlIGFzIGEgc2ln
biBvZiB2NCBhZGRyZXNzZXMuCiAgICAgY29uc3QgY2hhciogYWRkcnN0YXJ0ID0gcmVhZGN1cnNv
ciArIDI7Ci0gICAgaWYgKHJ0Yzo6c3RyY2hyKGFkZHJzdGFydCwgIi4iKSkgewotICAgICAgY29u
c3QgY2hhciogY29sb24gPSBydGM6OnN0cmNocihhZGRyc3RhcnQsICI6OiIpOworICAgIGlmIChz
dHJjaHIoYWRkcnN0YXJ0LCAnLicpKSB7CisgICAgICBjb25zdCBjaGFyKiBjb2xvbiA9IHN0cmNo
cihhZGRyc3RhcnQsICc6Jyk7CiAgICAgICBpZiAoY29sb24pIHsKICAgICAgICAgdWludDE2X3Qg
YV9zaG9ydDsKICAgICAgICAgaW50IGJ5dGVzcmVhZCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMmZpbGVzeXN0
ZW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS93aW4zMmZpbGVzeXN0ZW0uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MDBl
NWU2MjliOGE2ZmM1MDdhNjIyZmZhN2VkNWQ5MmM2Y2Q5MzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2luMzJmaWxlc3lzdGVtLmNjCisrKyAvZGV2L251bGwKQEAg
LTEsODMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgInJ0Y19iYXNlL3dp
bjMyZmlsZXN5c3RlbS5oIgotCi0jaW5jbHVkZSA8c2hlbGxhcGkuaD4KLSNpbmNsdWRlIDxzaGxv
YmouaD4KLSNpbmNsdWRlIDx0Y2hhci5oPgotI2luY2x1ZGUgInJ0Y19iYXNlL3dpbjMyLmgiCi0K
LSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9maWxldXRpbHMu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9wYXRodXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9z
dHJlYW0uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgotCi0vLyBJbiBzZXZl
cmFsIHBsYWNlcyBpbiB0aGlzIGZpbGUsIHdlIHRlc3QgdGhlIGludGVncml0eSBsZXZlbCBvZiB0
aGUgcHJvY2VzcwotLy8gYmVmb3JlIGNhbGxpbmcgR2V0TG9uZ1BhdGhOYW1lLiBXZSBkbyB0aGlz
IGJlY2F1c2UgY2FsbGluZyBHZXRMb25nUGF0aE5hbWUKLS8vIHdoZW4gcnVubmluZyB1bmRlciBw
cm90ZWN0ZWQgbW9kZSBJRSAoYSBsb3cgaW50ZWdyaXR5IHByb2Nlc3MpIGNhbiByZXN1bHQgaW4K
LS8vIGEgdmlydHVhbGl6ZWQgcGF0aCBiZWluZyByZXR1cm5lZCwgd2hpY2ggaXMgd3JvbmcgaWYg
eW91IG9ubHkgcGxhbiB0byByZWFkLgotLy8gVE9ETzogV2FpdGluZyB0byBoZWFyIGJhY2sgZnJv
bSBJRSB0ZWFtIG9uIHdoZXRoZXIgdGhpcyBpcyB0aGUKLS8vIGJlc3QgYXBwcm9hY2g7IElFSXNQ
cm90ZWN0ZWRNb2RlUHJvY2VzcyBpcyBhbm90aGVyIHBvc3NpYmxlIHNvbHV0aW9uLgotCi1uYW1l
c3BhY2UgcnRjIHsKLQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06OkRlbGV0ZUZpbGUoY29uc3QgUGF0
aG5hbWUmIGZpbGVuYW1lKSB7Ci0gIFJUQ19MT0coTFNfSU5GTykgPDwgIkRlbGV0aW5nIGZpbGUg
IiA8PCBmaWxlbmFtZS5wYXRobmFtZSgpOwotICBpZiAoIUlzRmlsZShmaWxlbmFtZSkpIHsKLSAg
ICBSVENfRENIRUNLKElzRmlsZShmaWxlbmFtZSkpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQot
ICByZXR1cm4gOjpEZWxldGVGaWxlKFRvVXRmMTYoZmlsZW5hbWUucGF0aG5hbWUoKSkuY19zdHIo
KSkgIT0gMDsKLX0KLQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06Ok1vdmVGaWxlKGNvbnN0IFBhdGhu
YW1lJiBvbGRfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXRo
bmFtZSYgbmV3X3BhdGgpIHsKLSAgaWYgKCFJc0ZpbGUob2xkX3BhdGgpKSB7Ci0gICAgUlRDX0RD
SEVDSyhJc0ZpbGUob2xkX3BhdGgpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgUlRDX0xP
RyhMU19JTkZPKSA8PCAiTW92aW5nICIgPDwgb2xkX3BhdGgucGF0aG5hbWUoKSA8PCAiIHRvICIK
LSAgICAgICAgICAgICAgICAgICA8PCBuZXdfcGF0aC5wYXRobmFtZSgpOwotICByZXR1cm4gOjpN
b3ZlRmlsZShUb1V0ZjE2KG9sZF9wYXRoLnBhdGhuYW1lKCkpLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICAgICAgIFRvVXRmMTYobmV3X3BhdGgucGF0aG5hbWUoKSkuY19zdHIoKSkgIT0gMDsKLX0K
LQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06OklzRm9sZGVyKGNvbnN0IFBhdGhuYW1lJiBwYXRoKSB7
Ci0gIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgZGF0YSA9IHswfTsKLSAgaWYgKDAgPT0gOjpH
ZXRGaWxlQXR0cmlidXRlc0V4KFRvVXRmMTYocGF0aC5wYXRobmFtZSgpKS5jX3N0cigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmZGF0
YSkpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gKGRhdGEuZHdGaWxlQXR0cmlidXRlcyAm
IEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgPT0KLSAgICAgICAgIEZJTEVfQVRUUklCVVRFX0RJ
UkVDVE9SWTsKLX0KLQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06OklzRmlsZShjb25zdCBQYXRobmFt
ZSYgcGF0aCkgewotICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIGRhdGEgPSB7MH07Ci0gIGlm
ICgwID09IDo6R2V0RmlsZUF0dHJpYnV0ZXNFeChUb1V0ZjE2KHBhdGgucGF0aG5hbWUoKSkuY19z
dHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEZpbGVFeEluZm9TdGFu
ZGFyZCwgJmRhdGEpKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIChkYXRhLmR3RmlsZUF0
dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpID09IDA7Ci19Ci0KLWJvb2wgV2lu
MzJGaWxlc3lzdGVtOjpHZXRGaWxlU2l6ZShjb25zdCBQYXRobmFtZSYgcGF0aG5hbWUsIHNpemVf
dCogc2l6ZSkgewotICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIGRhdGEgPSB7MH07Ci0gIGlm
ICg6OkdldEZpbGVBdHRyaWJ1dGVzRXgoVG9VdGYxNihwYXRobmFtZS5wYXRobmFtZSgpKS5jX3N0
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEZpbGVFeEluZm9TdGFuZGFyZCwg
JmRhdGEpID09IDApCi0gICAgcmV0dXJuIGZhbHNlOwotICAqc2l6ZSA9IGRhdGEubkZpbGVTaXpl
TG93OwotICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2lu
MzJmaWxlc3lzdGVtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS93aW4zMmZpbGVzeXN0ZW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZDI2NzQxZTY3Yjg3MDQ4ZTE4MWZjZjAxMTMyMDhhZjVmYWQ4NzNkYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMmZpbGVzeXN0ZW0uaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdlYlJUQyBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgUlRDX0JB
U0VfV0lOMzJGSUxFU1lTVEVNX0hfCi0jZGVmaW5lIFJUQ19CQVNFX1dJTjMyRklMRVNZU1RFTV9I
XwotCi0jaW5jbHVkZSAiZmlsZXV0aWxzLmgiCi0KLW5hbWVzcGFjZSBydGMgewotCi1jbGFzcyBX
aW4zMkZpbGVzeXN0ZW0gOiBwdWJsaWMgRmlsZXN5c3RlbUludGVyZmFjZSB7Ci0gcHVibGljOgot
ICAvLyBUaGlzIHdpbGwgYXR0ZW1wdCB0byBkZWxldGUgdGhlIHBhdGggbG9jYXRlZCBhdCBmaWxl
bmFtZS4KLSAgLy8gSWYgdGhlIHBhdGggcG9pbnRzIHRvIGEgZm9sZGVyLCBpdCB3aWxsIGZhaWwg
d2l0aCBWRVJJRlkKLSAgYm9vbCBEZWxldGVGaWxlKGNvbnN0IFBhdGhuYW1lJiBmaWxlbmFtZSkg
b3ZlcnJpZGU7Ci0KLSAgLy8gVGhpcyBtb3ZlcyBhIGZpbGUgZnJvbSBvbGRfcGF0aCB0byBuZXdf
cGF0aC4gSWYgdGhlIG5ldyBwYXRoIGlzIG9uIGEKLSAgLy8gZGlmZmVyZW50IHZvbHVtZSB0aGFu
IHRoZSBvbGQsIGl0IHdpbGwgYXR0ZW1wdCB0byBjb3B5IGFuZCB0aGVuIGRlbGV0ZQotICAvLyB0
aGUgZm9sZGVyCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsZSBpcyBzdWNjZXNzZnVsbHkg
bW92ZWQKLSAgYm9vbCBNb3ZlRmlsZShjb25zdCBQYXRobmFtZSYgb2xkX3BhdGgsIGNvbnN0IFBh
dGhuYW1lJiBuZXdfcGF0aCkgb3ZlcnJpZGU7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIGEgcGF0
aG5hbWUgaXMgYSBkaXJlY3RvcnkKLSAgYm9vbCBJc0ZvbGRlcihjb25zdCBQYXRobmFtZSYgcGF0
aG5hbWUpIG92ZXJyaWRlOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiBhIGZpbGUgZXhpc3RzIGF0
IHBhdGgKLSAgYm9vbCBJc0ZpbGUoY29uc3QgUGF0aG5hbWUmIHBhdGgpIG92ZXJyaWRlOwotCi0g
IGJvb2wgR2V0RmlsZVNpemUoY29uc3QgUGF0aG5hbWUmIHBhdGgsIHNpemVfdCogc2l6ZSkgb3Zl
cnJpZGU7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgcnRjCi0KLSNlbmRpZiAgLy8gUlRDX0JBU0Vf
V0lOMzJGSUxFU1lTVEVNX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMnNvY2tldHNlcnZlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dpbjMyc29ja2V0c2Vy
dmVyLmNjCmluZGV4IGNhYjc1MWE2MzE3M2FiZmRjOTc5ZmVjYTJhMzgwNmNkNzYxZmY3MjMuLjIz
MGYzZWQ0NmY5MDU3ZThlZDY3ODhlZTYyODlmZjZlYWNhZTE4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dpbjMyc29ja2V0
c2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3dpbjMyc29ja2V0c2VydmVyLmNjCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVk
ZSAicnRjX2Jhc2UvYnl0ZW9yZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGls
cy5oIiAgLy8gRm9yIFRpbWUsIFRpbWVTaW5jZQogI2luY2x1ZGUgInJ0Y19iYXNlL3dpbjMyd2lu
ZG93LmgiCiAKIG5hbWVzcGFjZSBydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvemVyb19tZW1vcnkuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3plcm9fbWVtb3J5LmgK
aW5kZXggY2I0NjQ2YzFmZTRiMzU5ZjcxYWNiYTdjZDA4MDhmNDk0ZTQ2MzRjOS4uZjY5N2JjYmQ2
YjgxYzc2MmIxNTY3YmJjZTZjNTYxNWYyNWUzMmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvemVyb19tZW1vcnkuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS96ZXJv
X21lbW9yeS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFJUQ19CQVNFX1pFUk9fTUVNT1JZ
X0hfCiAjZGVmaW5lIFJUQ19CQVNFX1pFUk9fTUVNT1JZX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfdG9vbHMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfdG9vbHMvQlVJTEQuZ24KaW5kZXggMjUyYWVjNDU0N2Y0M2ExMmNkMWFlNTkwOTA4
NDA0YzYxZDg2ZjczMi4uNTIxNGJjM2JkMGYyNGZiZjk0MmRjYmQwYjRhOTJhZjdlMzA4MTY4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X3Rvb2xzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y190b29scy9CVUlMRC5nbgpAQCAtMjUsOSArMjUsNiBAQCBncm91cCgicnRjX3Rv
b2xzIikgewogICAgICAgIjpwc25yX3NzaW1fYW5hbHl6ZXIiLAogICAgICAgIjpyZ2JhX3RvX2k0
MjBfY29udmVydGVyIiwKICAgICBdCi0gICAgaWYgKHJ0Y19pbmNsdWRlX2ludGVybmFsX2F1ZGlv
X2RldmljZSkgewotICAgICAgZGVwcyArPSBbICI6Zm9yY2VfbWljX3ZvbHVtZV9tYXgiIF0KLSAg
ICB9CiAgICAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAgICAgIGRlcHMgKz0gWyAiOmNo
YXJ0X3Byb3RvIiBdCiAgICAgfQpAQCAtMzksOCArMzYsMTAgQEAgZ3JvdXAoInJ0Y190b29scyIp
IHsKICAgICAgICI6dG9vbHNfdW5pdHRlc3RzIiwKICAgICBdCiAgICAgaWYgKHJ0Y19lbmFibGVf
cHJvdG9idWYpIHsKKyAgICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgeworICAgICAgICBk
ZXBzICs9IFsgIjpldmVudF9sb2dfdmlzdWFsaXplciIgXQorICAgICAgfQogICAgICAgZGVwcyAr
PSBbCi0gICAgICAgICI6ZXZlbnRfbG9nX3Zpc3VhbGl6ZXIiLAogICAgICAgICAiOnJ0cF9hbmFs
eXplciIsCiAgICAgICAgICI6dW5wYWNrX2FlY2R1bXAiLAogICAgICAgICAibmV0d29ya190ZXN0
ZXIiLApAQCAtODksNiArODgsMTIgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlb19maWxlX3dy
aXRlciIpIHsKIAogcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlb19xdWFsaXR5X2FuYWx5c2lzIikg
ewogICBzb3VyY2VzID0gWworICAgICJmcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJl
cy5jYyIsCisgICAgImZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzLmgiLAorICAg
ICJmcmFtZV9hbmFseXplci92aWRlb19jb2xvcl9hbGlnbmVyLmNjIiwKKyAgICAiZnJhbWVfYW5h
bHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5oIiwKKyAgICAiZnJhbWVfYW5hbHl6ZXIvdmlkZW9f
Z2VvbWV0cnlfYWxpZ25lci5jYyIsCisgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5
X2FsaWduZXIuaCIsCiAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMu
Y2MiLAogICAgICJmcmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lzLmgiLAogICAg
ICJmcmFtZV9hbmFseXplci92aWRlb190ZW1wb3JhbF9hbGlnbmVyLmNjIiwKQEAgLTk2LDYgKzEw
MSw4IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgidmlkZW9fcXVhbGl0eV9hbmFseXNpcyIpIHsKICAg
XQogICBkZXBzID0gWwogICAgICI6dmlkZW9fZmlsZV9yZWFkZXIiLAorICAgICIuLi9hcGk6YXJy
YXlfdmlldyIsCisgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgIi4uL2FwaS92
aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKICAgICAiLi4vY29tbW9uX3ZpZGVvIiwKICAgICAiLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKQEAgLTIxMSwyMCArMjE4LDYgQEAgaWYgKCFidWlsZF93aXRoX2No
cm9taXVtKSB7CiAgICAgXQogICB9CiAKLSAgIyBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gYnVp
bGQgdGhpcyB0b29sIHdpdGhvdXQgdGhlIEFETSBlbmFibGVkLgotICBpZiAocnRjX2luY2x1ZGVf
aW50ZXJuYWxfYXVkaW9fZGV2aWNlKSB7Ci0gICAgcnRjX2V4ZWN1dGFibGUoImZvcmNlX21pY192
b2x1bWVfbWF4IikgewotICAgICAgc291cmNlcyA9IFsKLSAgICAgICAgImZvcmNlX21pY192b2x1
bWVfbWF4L2ZvcmNlX21pY192b2x1bWVfbWF4LmNjIiwKLSAgICAgIF0KLQotICAgICAgZGVwcyA9
IFsKLSAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlIiwKLSAgICAgICAgIi4uL21vZHVs
ZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZV9pbXBsIiwKLSAgICAgIF0KLSAgICB9Ci0gIH0K
LQogICBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgIHByb3RvX2xpYnJhcnkoImNoYXJ0
X3Byb3RvIikgewogICAgICAgc291cmNlcyA9IFsKQEAgLTI3MiwxMCArMjY1LDEzIEBAIGlmICgh
YnVpbGRfd2l0aF9jaHJvbWl1bSkgewogCiAgICAgICAgICMgVE9ETyhrd2liZXJnKTogUmVtb3Zl
IHRoaXMgZGVwZW5kZW5jeS4KICAgICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29k
ZWNzX2FwaSIsCisgICAgICAgICIuLi9hcGkvdHJhbnNwb3J0Omdvb2dfY2MiLAogICAgICAgICAi
Li4vbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIiLAogICAgICAgICAiLi4vbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYzpkZWxheV9iYXNlZF9id2UiLAogICAgICAgICAi
Li4vbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYzplc3RpbWF0b3JzIiwKKyAg
ICAgICAgIi4uL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cDp0cmFuc3BvcnRfZmVl
ZGJhY2siLAogICAgICAgICAiLi4vbW9kdWxlcy9wYWNpbmciLAorICAgICAgICAiLi4vbW9kdWxl
cy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IiLAogICAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRj
cCIsCiAgICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICAg
ICAgXQpAQCAtMjg0LDcgKzI4MCw3IEBAIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogfQog
CiBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKLSAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsK
KyAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYgJiYgIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAg
ICBydGNfZXhlY3V0YWJsZSgiZXZlbnRfbG9nX3Zpc3VhbGl6ZXIiKSB7CiAgICAgICB0ZXN0b25s
eSA9IHRydWUKICAgICAgIHNvdXJjZXMgPSBbCkBAIC0zNDcsNyArMzQzLDEwIEBAIGlmIChydGNf
aW5jbHVkZV90ZXN0cykgewogICAgIHRlc3Rvbmx5ID0gdHJ1ZQogCiAgICAgc291cmNlcyA9IFsK
KyAgICAgICJmcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJlc191bml0dGVzdC5jYyIs
CiAgICAgICAiZnJhbWVfYW5hbHl6ZXIvcmVmZXJlbmNlX2xlc3NfdmlkZW9fYW5hbHlzaXNfdW5p
dHRlc3QuY2MiLAorICAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXJfdW5p
dHRlc3QuY2MiLAorICAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5X2FsaWduZXJf
dW5pdHRlc3QuY2MiLAogICAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlz
aXNfdW5pdHRlc3QuY2MiLAogICAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX3RlbXBvcmFsX2Fs
aWduZXJfdW5pdHRlc3QuY2MiLAogICAgICAgImZyYW1lX2VkaXRpbmcvZnJhbWVfZWRpdGluZ191
bml0dGVzdC5jYyIsCkBAIC0zNjQsOCArMzYzLDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7
CiAKICAgICBkZXBzID0gWwogICAgICAgIjpjb21tYW5kX2xpbmVfcGFyc2VyIiwKLSAgICAgICI6
ZnJhbWVfZWRpdGluZ19saWIiLAotICAgICAgIjpyZWZlcmVuY2VfbGVzc192aWRlb19hbmFseXNp
c19saWIiLAogICAgICAgIjp2aWRlb19maWxlX3JlYWRlciIsCiAgICAgICAiOnZpZGVvX2ZpbGVf
d3JpdGVyIiwKICAgICAgICI6dmlkZW9fcXVhbGl0eV9hbmFseXNpcyIsCkBAIC0zNzQsMTAgKzM3
MSwxOSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9ydGNfYmFzZTpjaGVj
a3MiLAogICAgICAgIi4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi90ZXN0OnRlc3RfbWFp
biIsCisgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGluZy9ndGVz
dCIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAg
ICIvL3RoaXJkX3BhcnR5L2xpYnl1diIsCiAgICAgXQogCisgICAgaWYgKCFidWlsZF93aXRoX2No
cm9taXVtKSB7CisgICAgICBkZXBzICs9IFsKKyAgICAgICAgIjpmcmFtZV9lZGl0aW5nX2xpYiIs
CisgICAgICAgICI6cmVmZXJlbmNlX2xlc3NfdmlkZW9fYW5hbHlzaXNfbGliIiwKKyAgICAgIF0K
KyAgICB9CisKICAgICBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgICAgZGVwcyArPSBb
ICJuZXR3b3JrX3Rlc3RlcjpuZXR3b3JrX3Rlc3Rlcl91bml0dGVzdHMiIF0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9v
bHMvREVQUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190
b29scy9ERVBTCmluZGV4IGQ5YjE2MmNkMTVmYjJjNzA0NTk3YmFhZDFhYTIwZjRmZDNiODkyY2Uu
LjQwMTVhZTI2NWFjOGU0OTIwODc3NGU3Yjk2YmIxZmFiYWI4NGQ1OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ERVBTCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9E
RVBTCkBAIC03LDYgKzcsNyBAQCBpbmNsdWRlX3J1bGVzID0gWwogICAiK21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL3Rvb2xzIiwKICAgIittb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmciLAogICAi
K21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyIiwKKyAgIittb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvciIsCiAgICIrbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIiLAogICAiK21v
ZHVsZXMvcGFjaW5nIiwKICAgIittb2R1bGVzL3J0cF9ydGNwIiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9PV05FUlMgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvT1dORVJT
CmluZGV4IGMxYjg3YzliZGNhMzdlMDg4MWQwM2JjNjgxYjMwZTdiZTc4NjcwYjguLjc3Mzg1ZmNk
MzE2MTc3YTdjMWM1NjU4NGUxYjE0OTIzMDVhZGFlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9PV05FUlMKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL09XTkVSUwpA
QCAtMywzICszLDYgQEAgcGVyLWZpbGUgQlVJTEQuZ249KgogcGhvZ2x1bmRAd2VicnRjLm9yZwog
b3ByeXBpbkB3ZWJydGMub3JnCiBtYm9uYWRlaUB3ZWJydGMub3JnCisKKyMgRm9yIHZpZGVvIGFu
YWx5c2lzIHRvb2xzCittYWdqZWRAd2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2FnYy9hY3Rpdml0eV9tZXRy
aWMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9v
bHMvYWdjL2FjdGl2aXR5X21ldHJpYy5jYwppbmRleCBiNGVkM2ZhY2IzNTliNWE4MWJhODNiM2Q0
ZTUyZmNhNzUzNGNkM2ZhLi45YjIyNzZmMTZmMWY1ZTI3NTM2Zjk1OGQ5ZDllOTcyZjg1OTllZTRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfdG9vbHMvYWdjL2FjdGl2aXR5X21ldHJpYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYWdjL2FjdGl2aXR5X21ldHJpYy5jYwpA
QCAtMzAsMzIgKzMwLDM0IEBACiBzdGF0aWMgY29uc3QgaW50IGtBZ2NBbmFsV2luZG93U2FtcGxl
cyA9IDEwMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBrRGVmYXVsdEFjdGl2aXR5VGhyZXNob2xkID0g
MC4zZjsKIAotREVGSU5FX2Jvb2woc3RhbmRhbG9uZV92YWQsIHRydWUsICJlbmFibGUgc3RhbmQt
YWxvbmUgVkFEIik7Ci1ERUZJTkVfc3RyaW5nKHRydWVfdmFkLAotICAgICAgICAgICAgICAiIiwK
LSAgICAgICAgICAgICAgIm5hbWUgb2YgYSBmaWxlIGNvbnRhaW5pbmcgdHJ1ZSBWQUQgaW4gJ2lu
dCciCi0gICAgICAgICAgICAgICIgZm9ybWF0Iik7Ci1ERUZJTkVfc3RyaW5nKHZpZGVvX3ZhZCwK
LSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJuYW1lIG9mIGEgZmlsZSBjb250YWlu
aW5nIHZpZGVvIFZBRCAoYWN0aXZpdHkiCi0gICAgICAgICAgICAgICIgcHJvYmFiaWxpdGllcykg
aW4gZG91YmxlIGZvcm1hdC4gT25lIGFjdGl2aXR5IHBlciAxMG1zIGlzIgotICAgICAgICAgICAg
ICAiIHJlcXVpcmVkLiBJZiBubyBmaWxlIGlzIGdpdmVuIHRoZSB2aWRlbyBpbmZvcm1hdGlvbiBp
cyBub3QiCi0gICAgICAgICAgICAgICIgaW5jb3Jwb3JhdGVkLiBOZWdhdGl2ZSBhY3Rpdml0eSBp
cyBpbnRlcnByZXRlZCBhcyB2aWRlbyBpcyIKLSAgICAgICAgICAgICAgIiBub3QgYWRhcHRlZCBh
bmQgdGhlIHN0YXRpc3RpY3MgYXJlIG5vdCBjb21wdXRlZCBkdXJpbmciCi0gICAgICAgICAgICAg
ICIgdGhlIGxlYXJuaW5nIHBoYXNlLiBOb3RlIHRoYXQgdGhlIG5lZ2F0aXZlIHZpZGVvIGFjdGl2
aXRpZXMiCi0gICAgICAgICAgICAgICIgYXJlIE9OTFkgYWxsb3dlZCBhdCB0aGUgYmVnaW5uaW5n
LiIpOwotREVGSU5FX3N0cmluZyhyZXN1bHQsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAg
ICAgICAibmFtZSBvZiBhIGZpbGUgdG8gd3JpdGUgdGhlIHJlc3VsdHMuIFRoZSByZXN1bHRzIgot
ICAgICAgICAgICAgICAiIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4g
VGhpcyBpcyBvcHRpb25hbC4iKTsKLURFRklORV9zdHJpbmcoYXVkaW9fY29udGVudCwKLSAgICAg
ICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJuYW1lIG9mIGEgZmlsZSB3aGVyZSBhdWRpbyBj
b250ZW50IGlzIHdyaXR0ZW4iCi0gICAgICAgICAgICAgICIgdG8sIGluIGRvdWJsZSBmb3JtYXQu
Iik7Ci1ERUZJTkVfZmxvYXQoYWN0aXZpdHlfdGhyZXNob2xkLAotICAgICAgICAgICAgIGtEZWZh
dWx0QWN0aXZpdHlUaHJlc2hvbGQsCi0gICAgICAgICAgICAgIkFjdGl2aXR5IHRocmVzaG9sZCIp
OwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CitXRUJS
VENfREVGSU5FX2Jvb2woc3RhbmRhbG9uZV92YWQsIHRydWUsICJlbmFibGUgc3RhbmQtYWxvbmUg
VkFEIik7CitXRUJSVENfREVGSU5FX3N0cmluZyh0cnVlX3ZhZCwKKyAgICAgICAgICAgICAgICAg
ICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIm5hbWUgb2YgYSBmaWxlIGNvbnRhaW5pbmcg
dHJ1ZSBWQUQgaW4gJ2ludCciCisgICAgICAgICAgICAgICAgICAgICAiIGZvcm1hdCIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcoCisgICAgdmlkZW9fdmFkLAorICAgICIiLAorICAgICJuYW1lIG9m
IGEgZmlsZSBjb250YWluaW5nIHZpZGVvIFZBRCAoYWN0aXZpdHkiCisgICAgIiBwcm9iYWJpbGl0
aWVzKSBpbiBkb3VibGUgZm9ybWF0LiBPbmUgYWN0aXZpdHkgcGVyIDEwbXMgaXMiCisgICAgIiBy
ZXF1aXJlZC4gSWYgbm8gZmlsZSBpcyBnaXZlbiB0aGUgdmlkZW8gaW5mb3JtYXRpb24gaXMgbm90
IgorICAgICIgaW5jb3Jwb3JhdGVkLiBOZWdhdGl2ZSBhY3Rpdml0eSBpcyBpbnRlcnByZXRlZCBh
cyB2aWRlbyBpcyIKKyAgICAiIG5vdCBhZGFwdGVkIGFuZCB0aGUgc3RhdGlzdGljcyBhcmUgbm90
IGNvbXB1dGVkIGR1cmluZyIKKyAgICAiIHRoZSBsZWFybmluZyBwaGFzZS4gTm90ZSB0aGF0IHRo
ZSBuZWdhdGl2ZSB2aWRlbyBhY3Rpdml0aWVzIgorICAgICIgYXJlIE9OTFkgYWxsb3dlZCBhdCB0
aGUgYmVnaW5uaW5nLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgcmVzdWx0LAorICAg
ICIiLAorICAgICJuYW1lIG9mIGEgZmlsZSB0byB3cml0ZSB0aGUgcmVzdWx0cy4gVGhlIHJlc3Vs
dHMiCisgICAgIiB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuIFRoaXMg
aXMgb3B0aW9uYWwuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhhdWRpb19jb250ZW50LAorICAg
ICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAibmFtZSBvZiBhIGZp
bGUgd2hlcmUgYXVkaW8gY29udGVudCBpcyB3cml0dGVuIgorICAgICAgICAgICAgICAgICAgICAg
IiB0bywgaW4gZG91YmxlIGZvcm1hdC4iKTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoYWN0aXZpdHlf
dGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdEFjdGl2aXR5VGhyZXNob2xk
LAorICAgICAgICAgICAgICAgICAgICAiQWN0aXZpdHkgdGhyZXNob2xkIik7CitXRUJSVENfREVG
SU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9ERVBTIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvREVQUwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAzMjVhNjVhYTFlMzQ0OTkwMTIwY2YyMmYy
ZDM0YTIzODA4ZTIwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMv
YmFyY29kZV90b29scy9ERVBTCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotIyBUaGlz
IGlzIHRyaW1tZWQgZG93biB2ZXJzaW9uIG9mIHRoZSBtYWluIHRvb2xzIERFUFMgZmlsZSB3aGlj
aCBpcyB0byBiZSB1c2VkCi0jIGluIENocm9taXVtcyBQeUF1dG8gV2ViUlRDIHZpZGVvIHF1YWxp
dHkgbWVhc3VyZW1lbnQgdGVzdC4gV2Ugd2lsbCBvbmx5Ci0jIG5lZWQgdGhlIFp4aW5nIGRlcGVu
ZGVuY2llcyBhcyB3ZSBvbmx5IHVzZSB0aGUgYmFyY29kZSB0b29scyBpbiB0aGlzIHRlc3QuCi0K
LWRlcHMgPSB7Ci0gICMgVXNlZCBieSBiYXJjb2RlX3Rvb2xzCi0gICJiYXJjb2RlX3Rvb2xzL3Ro
aXJkX3BhcnR5L3p4aW5nL2NvcmUiOgotICAgICJodHRwOi8venhpbmcuZ29vZ2xlY29kZS5jb20v
c3ZuL3RydW5rL2NvcmVAMjM0OSIsCi0KLSAgIyBVc2VkIGJ5IGJhcmNvZGVfdG9vbHMKLSAgImJh
cmNvZGVfdG9vbHMvdGhpcmRfcGFydHkvenhpbmcvamF2YXNlIjoKLSAgICAiaHR0cDovL3p4aW5n
Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9qYXZhc2VAMjM0OSIsCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29k
ZV90b29scy9SRUFETUUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGEyM2U3OTgwNjRkZWYyMmM5OWQ2NjgzODNmYmQ4ZGRjY2M0MzU3NjguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvUkVBRE1FCisr
KyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotVGhpcyBmaWxlIGV4cGxhaW5zIGhvdyB0byBn
ZXQgdGhlIGRlcGVuZGVuY2llcyBuZWVkZWQgZm9yIHRoZSBiYXJjb2RlIHRvb2xzLgotCi1iYXJj
b2RlX2VuY29kZXIucHkKLT09PT09PT09PT09PT09PT09PQotVGhpcyBzY3JpcHQgZGVwZW5kcyBv
bjoKLSogWnhpbmcgKEphdmEgdmVyc2lvbikKLSogQW50IChtdXN0IGJlIGluc3RhbGxlZCBtYW51
YWxseSkKLSogSmF2YQotCi1UbyBhdXRvbWF0aWNhbGx5IGRvd25sb2FkIFp4aW5nIGZvciB0aGUg
ZW5jb2RlciBzY3JpcHQsIGNoZWNrb3V0IHRoaXMgZGlyZWN0b3J5Ci1hcyBhIHNlcGFyYXRlIGdj
bGllbnQgc29sdXRpb24sIGxpa2UgdGhpczoKLWdjbGllbnQgY29uZmlnIGh0dHA6Ly93ZWJydGMu
Z29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scwot
Z2NsaWVudCBzeW5jCi1UaGVuIHRoZSBaeGluZyBKYXZhIHNvdXJjZSBjb2RlIHdpbGwgYmUgcHV0
IGluIHRoaXJkX3BhcnR5L3p4aW5nLgotCi1JbiBvcmRlciB0byBydW4gYmFyY29kZV9lbmNvZGVy
LnB5IHlvdSB0aGVuIG5lZWQgdG8gYnVpbGQ6Ci0qIHp4aW5nL2NvcmUvY29yZS5qYXIKLSogenhp
bmcvamF2YXNlL2phdmFzZS5qYXIKLVRoZXNlIGFyZSBjb21waWxlZCB1c2luZyBBbnQgYnkgcnVu
bmluZyBidWlsZF96eGluZy5weToKLXB5dGhvbiBidWlsZF96eGluZy5weQotCi1Gb3IgbW9yZSBp
bmZvIGFib3V0IFp4aW5nLCBzZWUgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC96eGluZy8KLQot
Ci1iYXJjb2RlX2RlY29kZXIucHkKLT09PT09PT09PT09PT09PT09PQotVGhpcyBzY3JpcHQgZGVw
ZW5kcyBvbjoKLSogWnhpbmcgKEMrKyB2ZXJzaW9uKS4gWW91IG5lZWQgdG8gY2hlY2tvdXQgZnJv
bSBTdWJ2ZXJzaW9uIGFuZCBidWlsZCB0aGUgbGlicwotICBhbmQgenhpbmcgU0NvbnMgdGFyZ2V0
cy4gU1ZOIFVSTDogaHR0cDovL3p4aW5nLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHAKLSog
RkZNUEVHIGZtcGVnIDAuMTEuMQotCi1UaGVzZSBkZXBlbmRlbmNpZXMgbXVzdCBiZSBwcmVjb21w
aWxlZCBzZXBhcmF0ZWx5IGJlZm9yZSBydW5uaW5nIHRoZSBzY3JpcHQuCi1NYWtlIHN1cmUgdG8g
YWRkIEZGTVBFRyB0byB0aGUgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgcHJvdmlkZSB0
aGUgcGF0aAotdG8gdGhlIHp4aW5nIGV4ZWN1dGFibGUgdXNpbmcgdGhlIG1hbmRhdG9yeSBjb21t
YW5kIGxpbmUgZmxhZyB0byB0aGUgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvYmFyY29k
ZV9kZWNvZGVyLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvYmFyY29kZV9kZWNvZGVyLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwNzhlNDdmMWJhYzcyNDMwNzkzOWUzOGVmODQ2ODc4ZTBlYjE0YmNl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xz
L2JhcmNvZGVfZGVjb2Rlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0jIS91
c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0jIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotIyB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0jIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQg
c3lzCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICMgTWFrZSBzdXJlIHdlIGFsd2F5
cyBjYW4gaW1wb3J0IGhlbHBlcl9mdW5jdGlvbnMuCi0gIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pKQotCi1pbXBvcnQgaGVscGVyX2Z1bmN0aW9ucwotCi0jIENocm9t
ZSBicm93c2VydGVzdHMgd2lsbCB0aHJvdyBhd2F5IHN0ZGVycjsgYXZvaWQgdGhhdCBvdXRwdXQg
Z2V0cyBsb3N0Lgotc3lzLnN0ZGVyciA9IHN5cy5zdGRvdXQKLQotCi1kZWYgQ29udmVydFl1dlRv
UG5nRmlsZXMoeXV2X2ZpbGVfbmFtZSwgeXV2X2ZyYW1lX3dpZHRoLCB5dXZfZnJhbWVfaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9kaXJlY3RvcnksIGZmbXBlZ19wYXRo
KToKLSAgIiIiQ29udmVydHMgYSBZVVYgdmlkZW8gZmlsZSBpbnRvIFBORyBmcmFtZXMuCi0KLSAg
VGhlIGZ1bmN0aW9uIHVzZXMgZmZtcGVnIHRvIGNvbnZlcnQgdGhlIFlVViBmaWxlLiBUaGUgb3V0
cHV0IG9mIGZmbXBlZyBpcyBpbgotICB0aGUgZm9ybSBmcmFtZV94eHh4LnBuZywgd2hlcmUgeHh4
eCBpcyB0aGUgZnJhbWUgbnVtYmVyLCBzdGFydGluZyBmcm9tIDAwMDEuCi0KLSAgQXJnczoKLSAg
ICB5dXZfZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9mIHRoZSBZVVYgZmlsZS4KLSAgICB5
dXZfZnJhbWVfd2lkdGgoaW50KTogVGhlIHdpZHRoIG9mIG9uZSBZVVYgZnJhbWUuCi0gICAgeXV2
X2ZyYW1lX2hlaWdodChpbnQpOiBUaGUgaGVpZ2h0IG9mIG9uZSBZVVYgZnJhbWUuCi0gICAgb3V0
cHV0X2RpcmVjdG9yeShzdHJpbmcpOiBUaGUgb3V0cHV0IGRpcmVjdG9yeSB3aGVyZSB0aGUgUE5H
IGZyYW1lcyB3aWxsIGJlCi0gICAgICBzdG9yZWQuCi0gICAgZmZtcGVnX3BhdGgoc3RyaW5nKTog
VGhlIHBhdGggdG8gdGhlIGZmbXBlZyBleGVjdXRhYmxlLiBJZiBOb25lLCB0aGUgUEFUSAotICAg
ICAgd2lsbCBiZSBzZWFyY2hlZCBmb3IgaXQuCi0KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1
ZSBpZiB0aGUgY29udmVyc2lvbiB3YXMgT0suCi0gICIiIgotICBzaXplX3N0cmluZyA9IHN0cih5
dXZfZnJhbWVfd2lkdGgpICsgJ3gnICsgc3RyKHl1dl9mcmFtZV9oZWlnaHQpCi0gIG91dHB1dF9m
aWxlc19wYXR0ZXJuID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXJlY3RvcnksICdmcmFtZV8lMDRk
LnBuZycpCi0gIGlmIG5vdCBmZm1wZWdfcGF0aDoKLSAgICBmZm1wZWdfcGF0aCA9ICdmZm1wZWcu
ZXhlJyBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBlbHNlICdmZm1wZWcnCi0gIGlmIHl1dl9m
aWxlX25hbWUuZW5kc3dpdGgoJy55dXYnKToKLSAgICBjb21tYW5kID0gW2ZmbXBlZ19wYXRoLCAn
LXMnLCAnJXMnICUgc2l6ZV9zdHJpbmcsICctaScsICclcycKLSAgICAgICAgICAgICAgICUgeXV2
X2ZpbGVfbmFtZSwgJy1mJywgJ2ltYWdlMicsICctdmNvZGVjJywgJ3BuZycsCi0gICAgICAgICAg
ICAgICAnJXMnICUgb3V0cHV0X2ZpbGVzX3BhdHRlcm5dCi0gIGVsc2U6Ci0gICAgY29tbWFuZCA9
IFtmZm1wZWdfcGF0aCwgJy1pJywgJyVzJyAlIHl1dl9maWxlX25hbWUsICctZicsICdpbWFnZTIn
LAotICAgICAgICAgICAgICAgJy12Y29kZWMnLCAncG5nJywgJyVzJyAlIG91dHB1dF9maWxlc19w
YXR0ZXJuXQotICB0cnk6Ci0gICAgcHJpbnQgJ0NvbnZlcnRpbmcgWVVWIGZpbGUgdG8gUE5HIGlt
YWdlcyAobWF5IHRha2UgYSB3aGlsZSkuLi4nCi0gICAgcHJpbnQgJyAnLmpvaW4oY29tbWFuZCkK
LSAgICBoZWxwZXJfZnVuY3Rpb25zLlJ1blNoZWxsQ29tbWFuZCgKLSAgICAgICAgY29tbWFuZCwg
ZmFpbF9tc2c9J0Vycm9yIGR1cmluZyBZVVYgdG8gUE5HIGNvbnZlcnNpb24nKQotICBleGNlcHQg
aGVscGVyX2Z1bmN0aW9ucy5IZWxwZXJFcnJvciwgZXJyOgotICAgIHByaW50ICdFcnJvciBleGVj
dXRpbmcgY29tbWFuZDogJXMuIEVycm9yOiAlcycgJSAoY29tbWFuZCwgZXJyKQotICAgIHJldHVy
biBGYWxzZQotICBleGNlcHQgT1NFcnJvcjoKLSAgICBwcmludCAnRGlkIG5vdCBmaW5kICVzLiBI
YXZlIHlvdSBpbnN0YWxsZWQgaXQ/JyAlIGZmbXBlZ19wYXRoCi0gICAgcmV0dXJuIEZhbHNlCi0g
IHJldHVybiBUcnVlCi0KLQotZGVmIERlY29kZUZyYW1lcyhpbnB1dF9kaXJlY3RvcnksIHp4aW5n
X3BhdGgpOgotICAiIiJEZWNvZGVzIHRoZSBiYXJjb2RlcyBvdmVybGFpZCBpbiBlYWNoIGZyYW1l
LgotCi0gIFRoZSBmdW5jdGlvbiB1c2VzIHRoZSBaeGluZyBjb21tYW5kLWxpbmUgdG9vbCBmcm9t
IHRoZSBaeGluZyBDKysgZGlzdHJpYnV0aW9uCi0gIHRvIGRlY29kZSB0aGUgYmFyY29kZSBpbiBl
dmVyeSBQTkcgZnJhbWUgZnJvbSB0aGUgaW5wdXQgZGlyZWN0b3J5LiBUaGUgZnJhbWVzCi0gIHNo
b3VsZCBiZSBuYW1lZCBmcmFtZV94eHh4LnBuZywgd2hlcmUgeHh4eCBpcyB0aGUgZnJhbWUgbnVt
YmVyLiBUaGUgZnJhbWUKLSAgbnVtYmVycyBzaG91bGQgYmUgY29uc2VjdXRpdmUgYW5kIHNob3Vs
ZCBzdGFydCBmcm9tIDAwMDEuCi0gIFRoZSBkZWNvZGluZyByZXN1bHRzIGluIGEgZnJhbWVfeHh4
eC50eHQgZmlsZSBmb3IgZXZlcnkgc3VjY2Vzc2Z1bGx5IGRlY29kZWQKLSAgYmFyY29kZS4gVGhp
cyBmaWxlIGNvbnRhaW5zIHRoZSBkZWNvZGVkIGJhcmNvZGUgYXMgMTItZGlnaXQgc3RyaW5nIChV
UEMtQQotICBmb3JtYXQ6IDExIGRpZ2l0cyBjb250ZW50ICsgb25lIGNoZWNrIGRpZ2l0KS4KLQot
ICBBcmdzOgotICAgIGlucHV0X2RpcmVjdG9yeShzdHJpbmcpOiBUaGUgaW5wdXQgZGlyZWN0b3J5
IGZyb20gd2hlcmUgdGhlIFBORyBmcmFtZXMgYXJlCi0gICAgICByZWFkLgotICAgIHp4aW5nX3Bh
dGgoc3RyaW5nKTogVGhlIHBhdGggdG8gdGhlIHp4aW5nIGJpbmFyeS4gSWYgc3BlY2lmaWVkIGFz
IE5vbmUsCi0gICAgICB0aGUgUEFUSCB3aWxsIGJlIHNlYXJjaGVkIGZvciBpdC4KLSAgUmV0dXJu
OgotICAgIChib29sKTogVHJ1ZSBpZiB0aGUgZGVjb2Rpbmcgc3VjY2VlZGVkLgotICAiIiIKLSAg
aWYgbm90IHp4aW5nX3BhdGg6Ci0gICAgenhpbmdfcGF0aCA9ICd6eGluZy5leGUnIGlmIHN5cy5w
bGF0Zm9ybSA9PSAnd2luMzInIGVsc2UgJ3p4aW5nJwotICBwcmludCAnRGVjb2RpbmcgYmFyY29k
ZXMgZnJvbSBQTkcgZmlsZXMgd2l0aCAlcy4uLicgJSB6eGluZ19wYXRoCi0gIHJldHVybiBoZWxw
ZXJfZnVuY3Rpb25zLlBlcmZvcm1BY3Rpb25PbkFsbEZpbGVzKAotICAgICAgZGlyZWN0b3J5PWlu
cHV0X2RpcmVjdG9yeSwgZmlsZV9wYXR0ZXJuPSdmcmFtZV8nLAotICAgICAgZmlsZV9leHRlbnNp
b249J3BuZycsIHN0YXJ0X251bWJlcj0xLCBhY3Rpb249X0RlY29kZUJhcmNvZGVJbkZpbGUsCi0g
ICAgICBjb21tYW5kX2xpbmVfZGVjb2Rlcj16eGluZ19wYXRoKQotCi0KLWRlZiBfRGVjb2RlQmFy
Y29kZUluRmlsZShmaWxlX25hbWUsIGNvbW1hbmRfbGluZV9kZWNvZGVyKToKLSAgIiIiRGVjb2Rl
cyB0aGUgYmFyY29kZSBpbiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgYSBQTkcgZmlsZS4KLQot
ICBBcmdzOgotICAgIGZpbGVfbmFtZShzdHJpbmcpOiBGaWxlIG5hbWUgb2YgdGhlIFBORyBmaWxl
LgotICAgIGNvbW1hbmRfbGluZV9kZWNvZGVyKHN0cmluZyk6IFRoZSBaWGluZyBjb21tYW5kLWxp
bmUgZGVjb2RpbmcgdG9vbC4KLQotICBSZXR1cm46Ci0gICAgKGJvb2wpOiBUcnVlIHVwb24gc3Vj
Y2VzcywgRmFsc2Ugb3RoZXJ3aXNlLgotICAiIiIKLSAgY29tbWFuZCA9IFtjb21tYW5kX2xpbmVf
ZGVjb2RlciwgJy0tdHJ5LWhhcmRlcicsICctLWR1bXAtcmF3JywgZmlsZV9uYW1lXQotICB0cnk6
Ci0gICAgb3V0ID0gaGVscGVyX2Z1bmN0aW9ucy5SdW5TaGVsbENvbW1hbmQoCi0gICAgICAgIGNv
bW1hbmQsIGZhaWxfbXNnPSdFcnJvciBkdXJpbmcgZGVjb2Rpbmcgb2YgJXMnICUgZmlsZV9uYW1l
KQotICAgIHRleHRfZmlsZSA9IG9wZW4oJyVzLnR4dCcgJSBmaWxlX25hbWVbOi00XSwgJ3cnKQot
ICAgIHRleHRfZmlsZS53cml0ZShvdXQpCi0gICAgdGV4dF9maWxlLmNsb3NlKCkKLSAgZXhjZXB0
IGhlbHBlcl9mdW5jdGlvbnMuSGVscGVyRXJyb3IsIGVycjoKLSAgICBwcmludCAnQmFyY29kZSBp
biAlcyBjYW5ub3QgYmUgZGVjb2RlZC4nICUgZmlsZV9uYW1lCi0gICAgcHJpbnQgZXJyCi0gICAg
cmV0dXJuIEZhbHNlCi0gIGV4Y2VwdCBPU0Vycm9yOgotICAgIHByaW50ICdEaWQgbm90IGZpbmQg
JXMuIEhhdmUgeW91IGluc3RhbGxlZCBpdD8nICUgY29tbWFuZF9saW5lX2RlY29kZXIKLSAgICBy
ZXR1cm4gRmFsc2UKLSAgcmV0dXJuIFRydWUKLQotCi1kZWYgX0dlbmVyYXRlU3RhdHNGaWxlKHN0
YXRzX2ZpbGVfbmFtZSwgaW5wdXRfZGlyZWN0b3J5PScuJyk6Ci0gICIiIkdlbmVyYXRlIHN0YXRp
c3RpY3MgZmlsZS4KLQotICBUaGUgZnVuY3Rpb24gZ2VuZXJhdGVzIGEgc3RhdGlzdGljcyBmaWxl
LiBUaGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXJlIGluIHRoZQotICBmb3JtYXQgPGZyYW1lX25h
bWU+IDxiYXJjb2RlPiwgd2hlcmUgZnJhbWUgbmFtZSBpcyB0aGUgbmFtZSBvZiBldmVyeSBmcmFt
ZQotICAoZWZmZWN0aXZlbHkgdGhlIGZyYW1lIG51bWJlcikgYW5kIGJhcmNvZGUgaXMgdGhlIGRl
Y29kZWQgYmFyY29kZS4gVGhlIGZyYW1lcwotICBhbmQgdGhlIGhlbHBlciAudHh0IGZpbGVzIGFy
ZSByZW1vdmVkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIHVzZWQuCi0gICIiIgotICBmaWxlX3ByZWZp
eCA9IG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksICdmcmFtZV8nKQotICBzdGF0c19maWxl
ID0gb3BlbihzdGF0c19maWxlX25hbWUsICd3JykKLQotICBwcmludCAnR2VuZXJhdGluZyBzdGF0
cyBmaWxlOiAlcycgJSBzdGF0c19maWxlX25hbWUKLSAgZm9yIGkgaW4gcmFuZ2UoMSwgX0NvdW50
RnJhbWVzSW4oaW5wdXRfZGlyZWN0b3J5PWlucHV0X2RpcmVjdG9yeSkgKyAxKToKLSAgICBmcmFt
ZV9udW1iZXIgPSBoZWxwZXJfZnVuY3Rpb25zLlplcm9QYWQoaSkKLSAgICBiYXJjb2RlX2ZpbGVf
bmFtZSA9IGZpbGVfcHJlZml4ICsgZnJhbWVfbnVtYmVyICsgJy50eHQnCi0gICAgcG5nX2ZyYW1l
ID0gZmlsZV9wcmVmaXggKyBmcmFtZV9udW1iZXIgKyAnLnBuZycKLSAgICBlbnRyeV9mcmFtZV9u
dW1iZXIgPSBoZWxwZXJfZnVuY3Rpb25zLlplcm9QYWQoaS0xKQotICAgIGVudHJ5ID0gJ2ZyYW1l
XycgKyBlbnRyeV9mcmFtZV9udW1iZXIgKyAnICcKLQotICAgIGlmIG9zLnBhdGguaXNmaWxlKGJh
cmNvZGVfZmlsZV9uYW1lKToKLSAgICAgIGJhcmNvZGUgPSBfUmVhZEJhcmNvZGVGcm9tVGV4dEZp
bGUoYmFyY29kZV9maWxlX25hbWUpCi0gICAgICBvcy5yZW1vdmUoYmFyY29kZV9maWxlX25hbWUp
Ci0KLSAgICAgIGlmIF9DaGVja0JhcmNvZGUoYmFyY29kZSk6Ci0gICAgICAgIGVudHJ5ICs9ICho
ZWxwZXJfZnVuY3Rpb25zLlplcm9QYWQoaW50KGJhcmNvZGVbMDoxMV0pKSArICdcbicpCi0gICAg
ICBlbHNlOgotICAgICAgICBlbnRyeSArPSAnQmFyY29kZSBlcnJvclxuJyAgIyBCYXJjb2RlIGlz
IHdyb25nbHkgZGV0ZWN0ZWQuCi0gICAgZWxzZTogICMgQmFyY29kZSBmaWxlIGRvZXNuJ3QgZXhp
c3QuCi0gICAgICBlbnRyeSArPSAnQmFyY29kZSBlcnJvclxuJwotCi0gICAgc3RhdHNfZmlsZS53
cml0ZShlbnRyeSkKLSAgICBvcy5yZW1vdmUocG5nX2ZyYW1lKQotCi0gIHN0YXRzX2ZpbGUuY2xv
c2UoKQotCi0KLWRlZiBfUmVhZEJhcmNvZGVGcm9tVGV4dEZpbGUoYmFyY29kZV9maWxlX25hbWUp
OgotICAiIiJSZWFkcyB0aGUgZGVjb2RlZCBiYXJjb2RlIGZvciBhIC50eHQgZmlsZS4KLQotICBB
cmdzOgotICAgIGJhcmNvZGVfZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9mIHRoZSAudHh0
IGZpbGUuCi0gIFJldHVybjoKLSAgICAoc3RyaW5nKTogVGhlIGRlY29kZWQgYmFyY29kZS4KLSAg
IiIiCi0gIGJhcmNvZGVfZmlsZSA9IG9wZW4oYmFyY29kZV9maWxlX25hbWUsICdyJykKLSAgYmFy
Y29kZSA9IGJhcmNvZGVfZmlsZS5yZWFkKCkKLSAgYmFyY29kZV9maWxlLmNsb3NlKCkKLSAgcmV0
dXJuIGJhcmNvZGUKLQotCi1kZWYgX0NoZWNrQmFyY29kZShiYXJjb2RlKToKLSAgIiIiQ2hlY2sg
d2VhdGhlciB0aGUgVVBDLUEgYmFyY29kZSB3YXMgZGVjb2RlZCBjb3JyZWN0bHkuCi0KLSAgVGhp
cyBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSBjaGVjayBkaWdpdCBvZiB0aGUgcHJvdmlkZWQgYmFy
Y29kZSBhbmQgY29tcGFyZXMKLSAgaXQgdG8gdGhlIGNoZWNrIGRpZ2l0IHRoYXQgd2FzIGRlY29k
ZWQuCi0KLSAgQXJnczoKLSAgICBiYXJjb2RlKHN0cmluZyk6IFRoZSBiYXJjb2RlICgxMi1kaWdp
dCkuCi0gIFJldHVybjoKLSAgICAoYm9vbCk6IFRydWUgaWYgdGhlIGJhcmNvZGUgd2FzIGRlY29k
ZWQgY29ycmVjdGx5LgotICAiIiIKLSAgaWYgbGVuKGJhcmNvZGUpICE9IDEyOgotICAgIHJldHVy
biBGYWxzZQotCi0gIHIxID0gcmFuZ2UoMCwgMTEsIDIpICAjIE9kZCBkaWdpdHMKLSAgcjIgPSBy
YW5nZSgxLCAxMCwgMikgICMgRXZlbiBkaWdpdHMgZXhjZXB0IGxhc3QKLSAgZHN1bSA9IDAKLSAg
IyBTdW0gYWxsIHRoZSBldmVuIGRpZ2l0cwotICBmb3IgaSBpbiByMToKLSAgICBkc3VtICs9IGlu
dChiYXJjb2RlW2ldKQotICAjIE11bHRpcGx5IHRoZSBzdW0gYnkgMwotICBkc3VtICo9IDMKLSAg
IyBBZGQgYWxsIHRoZSBldmVuIGRpZ2l0cyBleGNlcHQgdGhlIGNoZWNrIGRpZ2l0ICgxMnRoIGRp
Z2l0KQotICBmb3IgaSBpbiByMjoKLSAgICBkc3VtICs9IGludChiYXJjb2RlW2ldKQotICAjIEdl
dCB0aGUgbW9kdWxvIDEwCi0gIGRzdW0gPSBkc3VtICUgMTAKLSAgIyBJZiBub3QgMCBzdWJzdHJh
Y3QgZnJvbSAxMAotICBpZiBkc3VtICE9IDA6Ci0gICAgZHN1bSA9IDEwIC0gZHN1bQotICAjIENv
bXBhcmUgcmVzdWx0IGFuZCBjaGVjayBkaWdpdAotICByZXR1cm4gZHN1bSA9PSBpbnQoYmFyY29k
ZVsxMV0pCi0KLQotZGVmIF9Db3VudEZyYW1lc0luKGlucHV0X2RpcmVjdG9yeT0nLicpOgotICAi
IiJDYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgZnJhbWVzIGluIHRoZSBpbnB1dCBkaXJlY3Rvcnku
Ci0KLSAgVGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiBmcmFtZXMgaW4gdGhl
IGlucHV0IGRpcmVjdG9yeS4gVGhlCi0gIGZyYW1lcyBzaG91bGQgYmUgbmFtZWQgZnJhbWVfeHh4
eC5wbmcsIHdoZXJlIHh4eHggaXMgdGhlIG51bWJlciBvZiB0aGUgZnJhbWUuCi0gIFRoZSBudW1i
ZXJzIHNob3VsZCBzdGFydCBmcm9tIDEgYW5kIHNob3VsZCBiZSBjb25zZWN1dGl2ZS4KLQotICBB
cmdzOgotICAgIGlucHV0X2RpcmVjdG9yeShzdHJpbmcpOiBUaGUgaW5wdXQgZGlyZWN0b3J5Lgot
ICBSZXR1cm46Ci0gICAgKGludCk6IFRoZSBudW1iZXIgb2YgZnJhbWVzLgotICAiIiIKLSAgZmls
ZV9wcmVmaXggPSBvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0b3J5LCAnZnJhbWVfJykKLSAgZmls
ZV9leGlzdHMgPSBUcnVlCi0gIG51bSA9IDEKLQotICB3aGlsZSBmaWxlX2V4aXN0czoKLSAgICBm
aWxlX25hbWUgPSAoZmlsZV9wcmVmaXggKyBoZWxwZXJfZnVuY3Rpb25zLlplcm9QYWQobnVtKSAr
ICcucG5nJykKLSAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX25hbWUpOgotICAgICAgbnVtICs9
IDEKLSAgICBlbHNlOgotICAgICAgZmlsZV9leGlzdHMgPSBGYWxzZQotICByZXR1cm4gbnVtIC0g
MQotCi0KLWRlZiBfUGFyc2VBcmdzKCk6Ci0gICIiIlJlZ2lzdGVycyB0aGUgY29tbWFuZC1saW5l
IG9wdGlvbnMuIiIiCi0gIHVzYWdlID0gInVzYWdlOiAlcHJvZyBbb3B0aW9uc10iCi0gIHBhcnNl
ciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT11c2FnZSkKLQotICBwYXJzZXIuYWRkX29w
dGlvbignLS16eGluZ19wYXRoJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAg
aGVscD0oJ1RoZSBwYXRoIHRvIHdoZXJlIHRoZSB6eGluZyBleGVjdXRhYmxlIGlzIGxvY2F0ZWQu
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lmIG9taXR0ZWQsIGl0IHdpbGwgYmUgYXNz
dW1lZCB0byBiZSBwcmVzZW50IGluIHRoZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdQ
QVRIIHdpdGggdGhlIG5hbWUgenhpbmdbLmV4ZV0uJykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCct
LWZmbXBlZ19wYXRoJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0o
J1RoZSBwYXRoIHRvIHdoZXJlIHRoZSBmZm1wZWcgZXhlY3V0YWJsZSBpcyBsb2NhdGVkLiAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICdJZiBvbWl0dGVkLCBpdCB3aWxsIGJlIGFzc3VtZWQg
dG8gYmUgcHJlc2VudCBpbiB0aGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnUEFUSCB3
aXRoIHRoZSBuYW1lIGZmbXBlZ1suZXhlXS4nKSkKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0teXV2
X2ZyYW1lX3dpZHRoJywgdHlwZT0naW50JywgZGVmYXVsdD02NDAsCi0gICAgICAgICAgICAgICAg
ICAgIGhlbHA9J1dpZHRoIG9mIHRoZSBZVVYgZmlsZVwncyBmcmFtZXMuIERlZmF1bHQ6ICVkZWZh
dWx0JykKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0teXV2X2ZyYW1lX2hlaWdodCcsIHR5cGU9J2lu
dCcsIGRlZmF1bHQ9NDgwLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSdIZWlnaHQgb2YgdGhl
IFlVViBmaWxlXCdzIGZyYW1lcy4gRGVmYXVsdDogJWRlZmF1bHQnKQotICBwYXJzZXIuYWRkX29w
dGlvbignLS15dXZfZmlsZScsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9J291dHB1dC55dXYnLAot
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdUaGUgWVVWIGZpbGUgdG8gYmUgZGVjb2RlZC4gRGVm
YXVsdDogJWRlZmF1bHQnKQotICBwYXJzZXIuYWRkX29wdGlvbignLS1zdGF0c19maWxlJywgdHlw
ZT0nc3RyaW5nJywgZGVmYXVsdD0nc3RhdHMudHh0JywKLSAgICAgICAgICAgICAgICAgICAgaGVs
cD0nVGhlIG91dHB1dCBzdGF0cyBmaWxlLiBEZWZhdWx0OiAlZGVmYXVsdCcpCi0gIHBhcnNlci5h
ZGRfb3B0aW9uKCctLXBuZ193b3JraW5nX2RpcicsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9Jy4n
LAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnVGhlIGRpcmVjdG9yeSBmb3IgdGVtcG9yYXJ5
IFBORyBpbWFnZXMgdG8gYmUgc3RvcmVkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lu
IHdoZW4gZGVjb2RpbmcgZnJvbSBZVVYgYmVmb3JlIHRoZXlcJ3JlIGJhcmNvZGUgJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZGVjb2RlZC4gSWYgdXNpbmcgV2luZG93cyBhbmQgYSBDeWd3
aW4tY29tcGlsZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnenhpbmcuZXhlLCB5b3Ug
c2hvdWxkIGtlZXAgdGhlIGRlZmF1bHQgdmFsdWUgdG8gJwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAnYXZvaWQgcHJvYmxlbXMuIERlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIG9wdGlvbnMsIF8g
PSBwYXJzZXIucGFyc2VfYXJncygpCi0gIHJldHVybiBvcHRpb25zCi0KLQotZGVmIG1haW4oKToK
LSAgIiIiVGhlIG1haW4gZnVuY3Rpb24uCi0KLSAgQSBzaW1wbGUgaW52b2NhdGlvbiBpczoKLSAg
Li93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvYmFyY29kZV9kZWNvZGVyLnB5Ci0gIC0t
eXV2X2ZpbGU9PHBhdGhfYW5kX25hbWVfb2Zfb3ZlcmxhaWRfeXV2X3ZpZGVvPgotICAtLXl1dl9m
cmFtZV93aWR0aD02NDAgLS15dXZfZnJhbWVfaGVpZ2h0PTQ4MAotICAtLXN0YXRzX2ZpbGU9PHBh
dGhfYW5kX25hbWVfdG9fc3RhdHNfZmlsZT4KLSAgIiIiCi0gIG9wdGlvbnMgPSBfUGFyc2VBcmdz
KCkKLQotICAjIENvbnZlcnQgdGhlIG92ZXJsYWlkIFlVViB2aWRlbyBpbnRvIGEgc2V0IG9mIFBO
RyBmcmFtZXMuCi0gIGlmIG5vdCBDb252ZXJ0WXV2VG9QbmdGaWxlcyhvcHRpb25zLnl1dl9maWxl
LCBvcHRpb25zLnl1dl9mcmFtZV93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbnMueXV2X2ZyYW1lX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dHB1dF9kaXJlY3Rvcnk9b3B0aW9ucy5wbmdfd29ya2luZ19kaXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmZm1wZWdfcGF0aD1vcHRpb25zLmZmbXBlZ19wYXRoKToKLSAgICBw
cmludCAnQW4gZXJyb3Igb2NjdXJyZWQgY29udmVydGluZyBmcm9tIFlVViB0byBQTkcgZnJhbWVz
LicKLSAgICByZXR1cm4gLTEKLQotICAjIERlY29kZSB0aGUgYmFyY29kZXMgZnJvbSB0aGUgUE5H
IGZyYW1lcy4KLSAgaWYgbm90IERlY29kZUZyYW1lcyhpbnB1dF9kaXJlY3Rvcnk9b3B0aW9ucy5w
bmdfd29ya2luZ19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgenhpbmdfcGF0aD1vcHRpb25z
Lnp4aW5nX3BhdGgpOgotICAgIHByaW50ICdBbiBlcnJvciBvY2N1cnJlZCBkZWNvZGluZyBiYXJj
b2RlcyBmcm9tIFBORyBmcmFtZXMuJwotICAgIHJldHVybiAtMgotCi0gICMgR2VuZXJhdGUgc3Rh
dGlzdGljcyBmaWxlLgotICBfR2VuZXJhdGVTdGF0c0ZpbGUob3B0aW9ucy5zdGF0c19maWxlLAot
ICAgICAgICAgICAgICAgICAgICAgaW5wdXRfZGlyZWN0b3J5PW9wdGlvbnMucG5nX3dvcmtpbmdf
ZGlyKQotICBwcmludCAnQ29tcGxldGVkIGJhcmNvZGUgZGVjb2RpbmcuJwotICByZXR1cm4gMAot
Ci1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMv
YmFyY29kZV90b29scy9iYXJjb2RlX2VuY29kZXIucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9iYXJjb2RlX2VuY29k
ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhYjhiNTA3NTQyMzk5MmY5MmI4
YzdmODczOTNjZTAyY2U5ZTZiOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X3Rvb2xzL2JhcmNvZGVfdG9vbHMvYmFyY29kZV9lbmNvZGVyLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsMzcyICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKGMpIDIw
MTIgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0j
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKLSMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCi0jIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSMgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotIyBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLQotaW1wb3J0IG9wdHBhcnNl
Ci1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotaW1wb3J0IGhlbHBlcl9mdW5jdGlvbnMKLQotX0RF
RkFVTFRfQkFSQ09ERV9XSURUSCA9IDM1MgotX0RFRkFVTFRfQkFSQ09ERVNfRklMRSA9ICdiYXJj
b2Rlcy55dXYnCi0KLQotZGVmIEdlbmVyYXRlVXBjYUJhcmNvZGVzKG51bWJlcl9vZl9iYXJjb2Rl
cywgYmFyY29kZV93aWR0aCwgYmFyY29kZV9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0X2RpcmVjdG9yeT0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF90
b196eGluZz0nenhpbmctcmVhZC1vbmx5Jyk6Ci0gICIiIkdlbmVyYXRlcyBVUEMtQSBiYXJjb2Rl
cy4KLQotICBUaGlzIGZ1bmN0aW9uIGdlbmVyYXRlcyBhIG51bWJlcl9vZl9iYXJjb2RlcyBVUEMt
QSBiYXJjb2Rlcy4gVGhlIGZ1bmN0aW9uCi0gIGNhbGxzIGFuIGV4YW1wbGUgSmF2YSBlbmNvZGVy
IGZyb20gdGhlIFp4aW5nIGxpYnJhcnkuIFRoZSBiYXJjb2RlcyBhcmUKLSAgZ2VuZXJhdGVkIGFz
IFBORyBpbWFnZXMuIFRoZSB3aWR0aCBvZiB0aGUgYmFyY29kZXMgc2hvdWxkbid0IGJlIGxlc3Mg
dGhhbiAxMDIKLSAgcGl4ZWxzIGJlY2F1c2Ugb3RoZXJ3aXNlIFp4aW5nIGNhbid0IHByb3Blcmx5
IGdlbmVyYXRlIHRoZSBiYXJjb2Rlcy4KLQotICBBcmdzOgotICAgIG51bWJlcl9vZl9iYXJjb2Rl
cyhpbnQpOiBUaGUgbnVtYmVyIG9mIGJhcmNvZGVzIHRvIGdlbmVyYXRlLgotICAgIGJhcmNvZGVf
d2lkdGgoaW50KTogV2lkdGggb2YgYmFyY29kZSBpbiBwaXhlbHMuCi0gICAgYmFyY29kZV9oZWln
aHQoaW50KTogSGVpZ2h0IG9mIGJhcmNvZGUgaW4gcGl4ZWxzLgotICAgIG91dHB1dF9kaXJlY3Rv
cnkoc3RyaW5nKTogT3V0cHV0IGRpcmVjdG9yeSB3aGVyZSB0byBzdG9yZSBnZW5lcmF0ZWQKLSAg
ICAgIGJhcmNvZGVzLgotICAgIHBhdGhfdG9fenhpbmcoc3RyaW5nKTogVGhlIHBhdGggdG8gWnhp
bmcuCi0KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1ZSBpZiB0aGUgY29udmVyc2lvbiBpcyBz
dWNjZXNzZnVsLgotICAiIiIKLSAgYmFzZV9maWxlX25hbWUgPSBvcy5wYXRoLmpvaW4ob3V0cHV0
X2RpcmVjdG9yeSwgImJhcmNvZGVfIikKLSAgamFycyA9IF9Gb3JtSmFyc1N0cmluZyhwYXRoX3Rv
X3p4aW5nKQotICBjb21tYW5kX2xpbmVfZW5jb2RlciA9ICdjb20uZ29vZ2xlLnp4aW5nLmNsaWVu
dC5qMnNlLkNvbW1hbmRMaW5lRW5jb2RlcicKLSAgYmFyY29kZV93aWR0aCA9IHN0cihiYXJjb2Rl
X3dpZHRoKQotICBiYXJjb2RlX2hlaWdodCA9IHN0cihiYXJjb2RlX2hlaWdodCkKLQotICBlcnJv
cnMgPSBGYWxzZQotICBmb3IgaSBpbiByYW5nZShudW1iZXJfb2ZfYmFyY29kZXMpOgotICAgIHN1
ZmZpeCA9IGhlbHBlcl9mdW5jdGlvbnMuWmVyb1BhZChpKQotICAgICMgQmFyY29kZXMgc3RhcnRp
bmcgZnJvbSAwCi0gICAgY29udGVudCA9IGhlbHBlcl9mdW5jdGlvbnMuWmVyb1BhZChpLCAxMSkK
LSAgICBvdXRwdXRfZmlsZV9uYW1lID0gYmFzZV9maWxlX25hbWUgKyBzdWZmaXggKyAiLnBuZyIK
LQotICAgIGNvbW1hbmQgPSBbImphdmEiLCAiLWNwIiwgamFycywgY29tbWFuZF9saW5lX2VuY29k
ZXIsCi0gICAgICAgICAgICAgICAiLS1iYXJjb2RlX2Zvcm1hdD1VUENfQSIsICItLWhlaWdodD0l
cyIgJSBiYXJjb2RlX2hlaWdodCwKLSAgICAgICAgICAgICAgICItLXdpZHRoPSVzIiAlIGJhcmNv
ZGVfd2lkdGgsCi0gICAgICAgICAgICAgICAiLS1vdXRwdXQ9JXMiICUgKG91dHB1dF9maWxlX25h
bWUpLCAiJXMiICUgKGNvbnRlbnQpXQotICAgIHRyeToKLSAgICAgIGhlbHBlcl9mdW5jdGlvbnMu
UnVuU2hlbGxDb21tYW5kKAotICAgICAgICAgIGNvbW1hbmQsIGZhaWxfbXNnPSgnRXJyb3IgZHVy
aW5nIGJhcmNvZGUgJXMgZ2VuZXJhdGlvbicgJSBjb250ZW50KSkKLSAgICBleGNlcHQgaGVscGVy
X2Z1bmN0aW9ucy5IZWxwZXJFcnJvciBhcyBlcnI6Ci0gICAgICBwcmludCA+PiBzeXMuc3RkZXJy
LCBlcnIKLSAgICAgIGVycm9ycyA9IFRydWUKLSAgcmV0dXJuIG5vdCBlcnJvcnMKLQotCi1kZWYg
Q29udmVydFBuZ1RvWXV2QmFyY29kZXMoaW5wdXRfZGlyZWN0b3J5PScuJywgb3V0cHV0X2RpcmVj
dG9yeT0nLicpOgotICAiIiJDb252ZXJ0cyBQTkcgYmFyY29kZXMgdG8gWVVWIGJhcmNvZGUgaW1h
Z2VzLgotCi0gIFRoaXMgZnVuY3Rpb24gcmVhZHMgYWxsIHRoZSBQTkcgZmlsZXMgZnJvbSB0aGUg
aW5wdXQgZGlyZWN0b3J5IHdoaWNoIGFyZSBpbgotICB0aGUgZm9ybWF0IGZyYW1lX3h4eHgucG5n
LCB3aGVyZSB4eHh4IGlzIHRoZSBudW1iZXIgb2YgdGhlIGZyYW1lLCBzdGFydGluZwotICBmcm9t
IDAwMDAuIFRoZSBmcmFtZXMgc2hvdWxkIGJlIGNvbnNlY3V0aXZlIG51bWJlcnMuIFRoZSBvdXRw
dXQgWVVWIGZpbGUgaXMKLSAgbmFtZWQgZnJhbWVfeHh4eC55dXYuIFRoZSBmdW5jdGlvbiB1c2Vz
IGZmbXBlZyB0byBkbyB0aGUgY29udmVyc2lvbi4KLQotICBBcmdzOgotICAgIGlucHV0X2RpcmVj
dG9yeShzdHJpbmcpOiBUaGUgaW5wdXQgZGlyZWNvdHJ5IHRvIHJlYWQgdGhlIFBORyBiYXJjb2Rl
cyBmcm9tLgotICAgIG91dHB1dF9kaXJlY3Rvcnkoc3RyaW5nKTogVGhlIHB1dHB1dCBkaXJlY3Rv
cnkgdG8gd3JpdGUgdGhlIFlVViBmaWxlcyB0by4KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1
ZSBpZiB0aGUgY29udmVyc2lvbiB3YXMgd2l0aG91dCBlcnJvcnMuCi0gICIiIgotICByZXR1cm4g
aGVscGVyX2Z1bmN0aW9ucy5QZXJmb3JtQWN0aW9uT25BbGxGaWxlcygKLSAgICAgIGlucHV0X2Rp
cmVjdG9yeSwgJ2JhcmNvZGVfJywgJ3BuZycsIDAsIF9Db252ZXJ0VG9ZdXZBbmREZWxldGUsCi0g
ICAgICBvdXRwdXRfZGlyZWN0b3J5PW91dHB1dF9kaXJlY3RvcnksIHBhdHRlcm49J2JhcmNvZGVf
JykKLQotCi1kZWYgX0NvbnZlcnRUb1l1dkFuZERlbGV0ZShvdXRwdXRfZGlyZWN0b3J5LCBmaWxl
X25hbWUsIHBhdHRlcm4pOgotICAiIiJDb252ZXJ0cyBhIFBORyBmaWxlIHRvIGEgWVVWIGZpbGUg
YW5kIGRlbGV0ZXMgdGhlIFBORyBmaWxlLgotCi0gIEFyZ3M6Ci0gICAgb3V0cHV0X2RpcmVjdG9y
eShzdHJpbmcpOiBUaGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIFlVViBmaWxlLgotICAgIGZp
bGVfbmFtZShzdHJpbmcpOiBUaGUgUE5HIGZpbGUgbmFtZS4KLSAgICBwYXR0ZXJuKHN0cmluZyk6
IFRoZSBmaWxlIHBhdHRlcm4gb2YgdGhlIFBORy9ZVVYgZmlsZS4gVGhlIFBORy9ZVVYgZmlsZXMg
YXJlCi0gICAgICBuYW1lZCBwYXR0ZXJueHguLngucG5nL3l1diwgd2hlcmUgeHguLnggYXJlIGRp
Z2l0cyBzdGFydGluZyBmcm9tIDAwLi4wLgotICBSZXR1cm46Ci0gICAgKGJvb2wpOiBUcnVlIHVw
b24gc3VjY2Vzc2Z1bCBjb252ZXJzaW9uLCBmYWxzZSBvdGhlcndpc2UuCi0gICIiIgotICAjIFBh
dHRlcm4gc2hvdWxkIGJlIGluIGZpbGUgbmFtZQotICBpZiBub3QgcGF0dGVybiBpbiBmaWxlX25h
bWU6Ci0gICAgcmV0dXJuIEZhbHNlCi0gIHBhdHRlcm5fcG9zaXRpb24gPSBmaWxlX25hbWUucmZp
bmQocGF0dGVybikKLQotICAjIFN0cmlwIHRoZSBwYXRoIHRvIHRoZSBQTkcgZmlsZSBhbmQgcmVw
bGFjZSB0aGUgcG5nIGV4dGVuc2lvbiB3aXRoIHl1dgotICB5dXZfZmlsZV9uYW1lID0gZmlsZV9u
YW1lW3BhdHRlcm5fcG9zaXRpb246LTNdICsgJ3l1dicKLSAgeXV2X2ZpbGVfbmFtZSA9IG9zLnBh
dGguam9pbihvdXRwdXRfZGlyZWN0b3J5LCB5dXZfZmlsZV9uYW1lKQotCi0gIGNvbW1hbmQgPSBb
J2ZmbXBlZycsICctaScsICclcycgJSAoZmlsZV9uYW1lKSwgJy1waXhfZm10JywgJ3l1djQyMHAn
LAotICAgICAgICAgICAgICclcycgJSAoeXV2X2ZpbGVfbmFtZSldCi0gIHRyeToKLSAgICBoZWxw
ZXJfZnVuY3Rpb25zLlJ1blNoZWxsQ29tbWFuZCgKLSAgICAgICAgY29tbWFuZCwgZmFpbF9tc2c9
KCdFcnJvciBkdXJpbmcgUE5HIHRvIFlVViBjb252ZXJzaW9uIG9mICVzJyAlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWxlX25hbWUpKQotICAgIG9zLnJlbW92ZShmaWxlX25hbWUpCi0g
IGV4Y2VwdCBoZWxwZXJfZnVuY3Rpb25zLkhlbHBlckVycm9yIGFzIGVycjoKLSAgICBwcmludCA+
PiBzeXMuc3RkZXJyLCBlcnIKLSAgICByZXR1cm4gRmFsc2UKLSAgcmV0dXJuIFRydWUKLQotCi1k
ZWYgQ29tYmluZVl1dkZyYW1lc0ludG9PbmVGaWxlKG91dHB1dF9maWxlX25hbWUsIGlucHV0X2Rp
cmVjdG9yeT0nLicpOgotICAiIiJDb21iaW5lcyBzZXZlcmFsIFlVViBmcmFtZXMgaW50byBvbmUg
WVVWIHZpZGVvIGZpbGUuCi0KLSAgVGhlIGZ1bmN0aW9uIGNvbWJpbmVzIHRoZSBZVVYgZnJhbWVz
IGZyb20gaW5wdXRfZGlyZWN0b3J5IGludG8gb25lIFlVViB2aWRlbwotICBmaWxlLiBUaGUgZnJh
bWVzIHNob3VsZCBiZSBuYW1lZCBpbiB0aGUgZm9ybWF0IGZyYW1lX3h4eHgueXV2IHdoZXJlIHh4
eHgKLSAgc3RhbmRzIGZvciB0aGUgZnJhbWUgbnVtYmVyLiBUaGUgbnVtYmVycyBoYXZlIHRvIGJl
IGNvbnNlY3V0aXZlIGFuZCBzdGFydCBmcm9tCi0gIDAwMDAuIFRoZSBZVVYgZnJhbWVzIGFyZSBy
ZW1vdmVkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSB2aWRlby4KLQotICBBcmdz
OgotICAgIG91dHB1dF9maWxlX25hbWUoc3RyaW5nKTogVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8g
cHJvZHVjZS4KLSAgICBpbnB1dF9kaXJlY3Rvcnkoc3RyaW5nKTogVGhlIGRpcmVjdG9yeSBmcm9t
IHdoaWNoIHRoZSBZVVYgZnJhbWVzIGFyZSByZWFkLgotICBSZXR1cm46Ci0gICAgKGJvb2wpOiBU
cnVlIGlmIHRoZSBmcmFtZSBzdGl0Y2hpbmcgd2VudCBPSy4KLSAgIiIiCi0gIG91dHB1dF9maWxl
ID0gb3BlbihvdXRwdXRfZmlsZV9uYW1lLCAid2IiKQotICBzdWNjZXNzID0gaGVscGVyX2Z1bmN0
aW9ucy5QZXJmb3JtQWN0aW9uT25BbGxGaWxlcygKLSAgICAgIGlucHV0X2RpcmVjdG9yeSwgJ2Jh
cmNvZGVfJywgJ3l1dicsIDAsIF9BZGRUb0ZpbGVBbmREZWxldGUsCi0gICAgICBvdXRwdXRfZmls
ZT1vdXRwdXRfZmlsZSkKLSAgb3V0cHV0X2ZpbGUuY2xvc2UoKQotICByZXR1cm4gc3VjY2Vzcwot
Ci1kZWYgX0FkZFRvRmlsZUFuZERlbGV0ZShvdXRwdXRfZmlsZSwgZmlsZV9uYW1lKToKLSAgIiIi
QWRkcyB0aGUgY29udGVudHMgb2YgYSBmaWxlIHRvIGEgcHJldmlvdXNseSBvcGVuZWQgZmlsZS4K
LQotICBBcmdzOgotICAgIG91dHB1dF9maWxlKGZpbGUpOiBUaGUgb3VwdXQgZmlsZSwgcHJldmlv
dXNseSBvcGVuZWQuCi0gICAgZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBmaWxlIG5hbWUgb2YgdGhl
IGZpbGUgdG8gYWRkIHRvIHRoZSBvdXRwdXQgZmlsZS4KLQotICBSZXR1cm46Ci0gICAgKGJvb2wp
OiBUcnVlIGlmIHN1Y2Nlc3NmdWwsIEZhbHNlIG90aGVyd2lzZS4KLSAgIiIiCi0gIGlucHV0X2Zp
bGUgPSBvcGVuKGZpbGVfbmFtZSwgInJiIikKLSAgaW5wdXRfZmlsZV9jb250ZW50cyA9IGlucHV0
X2ZpbGUucmVhZCgpCi0gIG91dHB1dF9maWxlLndyaXRlKGlucHV0X2ZpbGVfY29udGVudHMpCi0g
IGlucHV0X2ZpbGUuY2xvc2UoKQotICB0cnk6Ci0gICAgb3MucmVtb3ZlKGZpbGVfbmFtZSkKLSAg
ZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnRXJyb3IgZGVs
ZXRpbmcgZmlsZSAlcy5cbkVycm9yOiAlcycgJSAoZmlsZV9uYW1lLCBlKQotICAgIHJldHVybiBG
YWxzZQotICByZXR1cm4gVHJ1ZQotCi0KLWRlZiBfT3ZlcmxheUJhcmNvZGVBbmRCYXNlRnJhbWVz
KGJhcmNvZGVzX2ZpbGUsIGJhc2VfZmlsZSwgb3V0cHV0X2ZpbGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXJjb2Rlc19jb21wb25lbnRfc2l6ZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlX2NvbXBvbmVudF9zaXplcyk6Ci0gICIiIk92ZXJsYXlz
IHRoZSBuZXh0IFlVViBmcmFtZSBmcm9tIGEgZmlsZSB3aXRoIGEgYmFyY29kZS4KLQotICBBcmdz
OgotICAgIGJhcmNvZGVzX2ZpbGUoRmlsZU9iamVjdCk6IFRoZSBZVVYgZmlsZSBjb250YWluaW5n
IHRoZSBiYXJjb2RlcyAob3BlbmVkKS4KLSAgICBiYXNlX2ZpbGUoRmlsZU9iamVjdCk6IFRoZSBi
YXNlIFlVViBmaWxlIChvcGVuZWQpLgotICAgIG91dHB1dF9maWxlKEZpbGVPYmplY3QpOiBUaGUg
b3V0cHV0IG92ZXJsYWlkIGZpbGUgKG9wZW5lZCkuCi0gICAgYmFyY29kZXNfY29tcG9uZW50X3Np
emVzKGxpc3Qgb2YgdHVwbGVzKTogVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgZWFjaCBZLCBVCi0g
ICAgICBhbmQgViBwbGFuZSBvZiB0aGUgYmFyY29kZXMgWVVWIGZpbGUuCi0gICAgYmFzZV9jb21w
b25lbnRfc2l6ZXMobGlzdCBvZiB0dXBsZXMpOiBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiBlYWNo
IFksIFUgYW5kCi0gICAgICBWIHBsYW5lIG9mIHRoZSBiYXNlIFlVViBmaWxlLgotICBSZXR1cm46
Ci0gICAgKGJvb2wpOiBUcnVlIGlmIHRoZXJlIGFyZSBtb3JlIHBsYW5lcyAoaS5lLiBmcmFtZXMp
IGluIHRoZSBiYXNlIGZpbGUsIGZhbHNlCi0gICAgICBvdGhlcndpc2UuCi0gICIiIgotICAjIFdl
IHdpbGwgbG9vcCB0aHJlZSB0aW1lcyAtIG9uY2UgZm9yIHRoZSBZLCBVIGFuZCBWIHBsYW5lcwot
ICBmb3IgKChiYXJjb2RlX2NvbXBfd2lkdGgsIGJhcmNvZGVfY29tcF9oZWlnaHQpLAotICAgICAg
KGJhc2VfY29tcF93aWR0aCwgYmFzZV9jb21wX2hlaWdodCkpIGluIHppcChiYXJjb2Rlc19jb21w
b25lbnRfc2l6ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJhc2VfY29tcG9uZW50X3NpemVzKToKLSAgICBmb3IgYmFzZV9yb3cgaW4gcmFuZ2Uo
YmFzZV9jb21wX2hlaWdodCk6Ci0gICAgICBiYXJjb2RlX3BsYW5lX3RyYXZlcnNlZCA9IEZhbHNl
Ci0gICAgICBpZiAoYmFzZV9yb3cgPCBiYXJjb2RlX2NvbXBfaGVpZ2h0KSBhbmQgbm90IGJhcmNv
ZGVfcGxhbmVfdHJhdmVyc2VkOgotICAgICAgICBiYXJjb2RlX3BsYW5lID0gYmFyY29kZXNfZmls
ZS5yZWFkKGJhcmNvZGVfY29tcF93aWR0aCkKLSAgICAgICAgaWYgYmFyY29kZV9wbGFuZSA9PSAi
IjoKLSAgICAgICAgICBiYXJjb2RlX3BsYW5lX3RyYXZlcnNlZCA9IFRydWUKLSAgICAgIGVsc2U6
Ci0gICAgICAgIGJhcmNvZGVfcGxhbmVfdHJhdmVyc2VkID0gVHJ1ZQotICAgICAgYmFzZV9wbGFu
ZSA9IGJhc2VfZmlsZS5yZWFkKGJhc2VfY29tcF93aWR0aCkKLQotICAgICAgaWYgYmFzZV9wbGFu
ZSA9PSAiIjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgIGlmIG5vdCBiYXJjb2RlX3Bs
YW5lX3RyYXZlcnNlZDoKLSAgICAgICAgIyBTdWJzdGl0dXRlIHBhcnQgb2YgdGhlIGJhc2UgY29t
cG9uZW50IHdpdGggdGhlIHRvcCBjb21wb25lbnQKLSAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUo
YmFyY29kZV9wbGFuZSkKLSAgICAgICAgYmFzZV9wbGFuZSA9IGJhc2VfcGxhbmVbYmFyY29kZV9j
b21wX3dpZHRoOl0KLSAgICAgIG91dHB1dF9maWxlLndyaXRlKGJhc2VfcGxhbmUpCi0gIHJldHVy
biBUcnVlCi0KLQotZGVmIE92ZXJsYXlZdXZGaWxlcyhiYXJjb2RlX3dpZHRoLCBiYXJjb2RlX2hl
aWdodCwgYmFzZV93aWR0aCwgYmFzZV9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgIGJhcmNv
ZGVzX2ZpbGVfbmFtZSwgYmFzZV9maWxlX25hbWUsIG91dHB1dF9maWxlX25hbWUpOgotICAiIiJP
dmVybGF5cyB0d28gWVVWIGZpbGVzIHN0YXJ0aW5nIGZyb20gdGhlIHVwcGVyIGxlZnQgY29ybmVy
IG9mIGJvdGguCi0KLSAgQXJnczoKLSAgICBiYXJjb2RlX3dpZHRoKGludCk6IFRoZSB3aWR0aCBv
ZiB0aGUgYmFyY29kZSAodG8gYmUgb3ZlcmxhaWQpLgotICAgIGJhcmNvZGVfaGVpZ2h0KGludCk6
IFRoZSBoZWlnaHQgb2YgdGhlIGJhcmNvZGUgKHRvIGJlIG92ZXJsYWlkKS4KLSAgICBiYXNlX3dp
ZHRoKGludCk6IFRoZSB3aWR0aCBvZiBhIGZyYW1lIG9mIHRoZSBiYXNlIGZpbGUuCi0gICAgYmFz
ZV9oZWlnaHQoaW50KTogVGhlIGhlaWdodCBvZiBhIGZyYW1lIG9mIHRoZSBiYXNlIGZpbGUuCi0g
ICAgYmFyY29kZXNfZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9mIHRoZSBZVVYgZmlsZSBj
b250YWluaW5nIHRoZSBZVVYKLSAgICAgIGJhcmNvZGVzLgotICAgIGJhc2VfZmlsZV9uYW1lKHN0
cmluZyk6IFRoZSBuYW1lIG9mIHRoZSBiYXNlIFlVViBmaWxlLgotICAgIG91dHB1dF9maWxlX25h
bWUoc3RyaW5nKTogVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBmaWxlIHdoZXJlIHRoZSBvdmVybGFp
ZAotICAgICAgdmlkZW8gd2lsbCBiZSB3cml0dGVuLgotICAiIiIKLSAgIyBDb21wb25lbnQgc2l6
ZXMgPSBbWV9zaXplcywgVV9zaXplcywgVl9zaXplc10KLSAgYmFyY29kZXNfY29tcG9uZW50X3Np
emVzID0gWyhiYXJjb2RlX3dpZHRoLCBiYXJjb2RlX2hlaWdodCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoYmFyY29kZV93aWR0aC8yLCBiYXJjb2RlX2hlaWdodC8yKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChiYXJjb2RlX3dpZHRoLzIsIGJhcmNvZGVfaGVpZ2h0
LzIpXQotICBiYXNlX2NvbXBvbmVudF9zaXplcyA9IFsoYmFzZV93aWR0aCwgYmFzZV9oZWlnaHQp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZV93aWR0aC8yLCBiYXNlX2hlaWdodC8y
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhc2Vfd2lkdGgvMiwgYmFzZV9oZWlnaHQv
MildCi0KLSAgYmFyY29kZXNfZmlsZSA9IG9wZW4oYmFyY29kZXNfZmlsZV9uYW1lLCAncmInKQot
ICBiYXNlX2ZpbGUgPSBvcGVuKGJhc2VfZmlsZV9uYW1lLCAncmInKQotICBvdXRwdXRfZmlsZSA9
IG9wZW4ob3V0cHV0X2ZpbGVfbmFtZSwgJ3diJykKLQotICBkYXRhX2xlZnQgPSBUcnVlCi0gIHdo
aWxlIGRhdGFfbGVmdDoKLSAgICBkYXRhX2xlZnQgPSBfT3ZlcmxheUJhcmNvZGVBbmRCYXNlRnJh
bWVzKGJhcmNvZGVzX2ZpbGUsIGJhc2VfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFyY29kZXNfY29tcG9uZW50X3NpemVzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9jb21wb25lbnRfc2l6ZXMp
Ci0KLSAgYmFyY29kZXNfZmlsZS5jbG9zZSgpCi0gIGJhc2VfZmlsZS5jbG9zZSgpCi0gIG91dHB1
dF9maWxlLmNsb3NlKCkKLQotCi1kZWYgQ2FsY3VsYXRlRnJhbWVzTnVtYmVyRnJvbVl1dih5dXZf
d2lkdGgsIHl1dl9oZWlnaHQsIGZpbGVfbmFtZSk6Ci0gICIiIkNhbGN1bGF0ZXMgdGhlIG51bWJl
ciBvZiBmcmFtZXMgb2YgYSBZVVYgdmlkZW8uCi0KLSAgQXJnczoKLSAgICB5dXZfd2lkdGgoaW50
KTogV2lkdGggb2YgYSBmcmFtZSBvZiB0aGUgeXV2IGZpbGUuCi0gICAgeXV2X2hlaWdodChpbnQp
OiBIZWlnaHQgb2YgYSBmcmFtZSBvZiB0aGUgWVVWIGZpbGUuCi0gICAgZmlsZV9uYW1lKHN0cmlu
Zyk6IFRoZSBuYW1lIG9mIHRoZSBZVVYgZmlsZS4KLSAgUmV0dXJuOgotICAgIChpbnQpOiBUaGUg
bnVtYmVyIG9mIGZyYW1lcyBpbiB0aGUgWVVWIGZpbGUuCi0gICIiIgotICBmaWxlX3NpemUgPSBv
cy5wYXRoLmdldHNpemUoZmlsZV9uYW1lKQotCi0gIHlfcGxhbmVfc2l6ZSA9IHl1dl93aWR0aCAq
IHl1dl9oZWlnaHQKLSAgdV9wbGFuZV9zaXplID0gKHl1dl93aWR0aC8yKSAqICh5dXZfaGVpZ2h0
LzIpICAjIEVxdWFscyB0byBWIHBsYW5lIHNpemUgdG9vCi0gIGZyYW1lX3NpemUgPSB5X3BsYW5l
X3NpemUgKyAoMiAqIHVfcGxhbmVfc2l6ZSkKLSAgcmV0dXJuIGludChmaWxlX3NpemUvZnJhbWVf
c2l6ZSkgICMgU2hvdWxkIGJlIGludCBhbnl3YXkKLQotCi1kZWYgX0Zvcm1KYXJzU3RyaW5nKHBh
dGhfdG9fenhpbmcpOgotICAiIiJGb3JtcyB0aGUgdGhlIFp4aW5nIGNvcmUgYW5kIGphdmFzZSBq
YXJzIGFyZ3VtZW50LgotCi0gIEFyZ3M6Ci0gICAgcGF0aF90b196eGluZyhzdHJpbmcpOiBUaGUg
cGF0aCB0byB0aGUgWnhpbmcgY2hlY2tvdXQgZm9sZGVyLgotICBSZXR1cm46Ci0gICAgKHN0cmlu
Zyk6IFRoZSBuZXdseSBmb3JtZWQgamFycyBhcmd1bWVudC4KLSAgIiIiCi0gIGphdmFzZV9qYXIg
PSBvcy5wYXRoLmpvaW4ocGF0aF90b196eGluZywgImphdmFzZSIsICJqYXZhc2UuamFyIikKLSAg
Y29yZV9qYXIgPSBvcy5wYXRoLmpvaW4ocGF0aF90b196eGluZywgImNvcmUiLCAiY29yZS5qYXIi
KQotICBkZWxpbWl0ZXIgPSAnOicKLSAgaWYgb3MubmFtZSAhPSAncG9zaXgnOgotICAgIGRlbGlt
aXRlciA9ICc7JwotICByZXR1cm4gamF2YXNlX2phciArIGRlbGltaXRlciArIGNvcmVfamFyCi0K
LWRlZiBfUGFyc2VBcmdzKCk6Ci0gICIiIlJlZ2lzdGVycyB0aGUgY29tbWFuZC1saW5lIG9wdGlv
bnMuIiIiCi0gIHVzYWdlID0gInVzYWdlOiAlcHJvZyBbb3B0aW9uc10iCi0gIHBhcnNlciA9IG9w
dHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT11c2FnZSkKLQotICBwYXJzZXIuYWRkX29wdGlvbign
LS1iYXJjb2RlX3dpZHRoJywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD1fREVGQVVMVF9CQVJDT0RFX1dJRFRILAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnV2lk
dGggb2YgdGhlIGJhcmNvZGVzIHRvIGJlIG92ZXJsYWlkIG9uIHRvcCBvZiB0aGUnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICcgYmFzZSBmaWxlLiBEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBw
YXJzZXIuYWRkX29wdGlvbignLS1iYXJjb2RlX2hlaWdodCcsIHR5cGU9J2ludCcsIGRlZmF1bHQ9
MzIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdIZWlnaHQgb2YgdGhlIGJhcmNvZGVzIHRv
IGJlIG92ZXJsYWlkIG9uIHRvcCBvZiB0aGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcg
YmFzZSBmaWxlLiBEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBwYXJzZXIuYWRkX29wdGlvbignLS1i
YXNlX2ZyYW1lX3dpZHRoJywgdHlwZT0naW50JywgZGVmYXVsdD0zNTIsCi0gICAgICAgICAgICAg
ICAgICAgIGhlbHA9KCdXaWR0aCBvZiB0aGUgYmFzZSBZVVYgZmlsZVwncyBmcmFtZXMuICcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5h
ZGRfb3B0aW9uKCctLWJhc2VfZnJhbWVfaGVpZ2h0JywgdHlwZT0naW50JywgZGVmYXVsdD0yODgs
Ci0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdIZWlnaHQgb2YgdGhlIHRvcCBZVVYgZmlsZVwn
cyBmcmFtZXMuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0
JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLWJhcmNvZGVzX3l1dicsIHR5cGU9J3N0cmluZycs
Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfQkFSQ09ERVNfRklMRSwKLSAg
ICAgICAgICAgICAgICAgICAgaGVscD0oJ1RoZSBZVVYgZmlsZSB3aXRoIHRoZSBiYXJjb2RlcyBp
biBZVVYuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0Jykp
Ci0gIHBhcnNlci5hZGRfb3B0aW9uKCctLWJhc2VfeXV2JywgdHlwZT0nc3RyaW5nJywgZGVmYXVs
dD0nYmFzZS55dXYnLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnVGhlIGJhc2UgWVVWIGZp
bGUgdG8gYmUgb3ZlcmxhaWQuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6
ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLW91dHB1dF95dXYnLCB0eXBlPSdz
dHJpbmcnLCBkZWZhdWx0PSdvdXRwdXQueXV2JywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0o
J1RoZSBvdXRwdXQgWVVWIGZpbGUgY29udGFpbmluZyB0aGUgYmFzZSBvdmVybGFpZCcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyB3aXRoIHRoZSBiYXJjb2Rlcy4gRGVmYXVsdDogJWRlZmF1
bHQnKSkKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0tcG5nX2JhcmNvZGVzX291dHB1dF9kaXInLCB0
eXBlPSdzdHJpbmcnLCBkZWZhdWx0PScuJywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ091
dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIFBORyBiYXJjb2RlcyB3aWxsIGJlICcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC4gRGVmYXVsdDogJWRlZmF1bHQnKSkKLSAgcGFy
c2VyLmFkZF9vcHRpb24oJy0tcG5nX2JhcmNvZGVzX2lucHV0X2RpcicsIHR5cGU9J3N0cmluZycs
IGRlZmF1bHQ9Jy4nLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnSW5wdXQgZGlyZWN0b3J5
IGZyb20gd2hlcmUgdGhlIFBORyBiYXJjb2RlcyB3aWxsIGJlICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3JlYWQuIERlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9u
KCctLXl1dl9iYXJjb2Rlc19vdXRwdXRfZGlyJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nLics
Ci0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdPdXRwdXQgZGlyZWN0b3J5IHdoZXJlIHRoZSBZ
VVYgYmFyY29kZXMgd2lsbCBiZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0
ZWQuIERlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLXl1dl9mcmFt
ZXNfaW5wdXRfZGlyJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nLicsCi0gICAgICAgICAgICAg
ICAgICAgIGhlbHA9KCdJbnB1dCBkaXJlY3RvcnkgZnJvbSB3aGVyZSB0aGUgWVVWIHdpbGwgYmUg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAncmVhZCBiZWZvcmUgY29tYmluYXRpb24uIERl
ZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLXp4aW5nX2RpcicsIHR5
cGU9J3N0cmluZycsIGRlZmF1bHQ9J3p4aW5nJywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0o
J1BhdGggdG8gdGhlIFp4aW5nIGJhcmNvZGVzIGxpYnJhcnkuICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIG9wdGlvbnMgPSBwYXJzZXIucGFyc2Vf
YXJncygpWzBdCi0gIHJldHVybiBvcHRpb25zCi0KLQotZGVmIG1haW4oKToKLSAgIiIiVGhlIG1h
aW4gZnVuY3Rpb24uCi0KLSAgQSBzaW1wbGUgaW52b2NhdGlvbiB3aWxsIGJlOgotICAuL3dlYnJ0
Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9iYXJjb2RlX2VuY29kZXIucHkgLS1iYXJjb2RlX2hl
aWdodD0zMgotICAtLWJhc2VfZnJhbWVfd2lkdGg9MzUyIC0tYmFzZV9mcmFtZV9oZWlnaHQ9Mjg4
Ci0gIC0tYmFzZV95dXY9PHBhdGhfYW5kX25hbWVfb2ZfYmFzZV9maWxlPgotICAtLW91dHB1dF95
dXY9PHBhdGggYW5kIG5hbWVfb2Zfb3V0cHV0X2ZpbGU+Ci0gICIiIgotICBvcHRpb25zID0gX1Bh
cnNlQXJncygpCi0gICMgVGhlIGJhcmNvZGVzIHdpdGggd2lsbCBiZSBkaWZmZXJlbnQgdGhhbiB0
aGUgYmFzZSBmcmFtZSB3aWR0aCBvbmx5IGlmCi0gICMgZXhwbGljaXRseSBzcGVjaWZpZWQgYXQg
dGhlIGNvbW1hbmQgbGluZS4KLSAgaWYgb3B0aW9ucy5iYXJjb2RlX3dpZHRoID09IF9ERUZBVUxU
X0JBUkNPREVfV0lEVEg6Ci0gICAgb3B0aW9ucy5iYXJjb2RlX3dpZHRoID0gb3B0aW9ucy5iYXNl
X2ZyYW1lX3dpZHRoCi0gICMgSWYgdGhlIHVzZXIgcHJvdmlkZXMgYSB2YWx1ZSBmb3IgdGhlIGJh
cmNvZGVzIFlVViB2aWRlbyBmaWxlLCB3ZSB3aWxsIGtlZXAKLSAgIyBpdC4gT3RoZXJ3aXNlIHdl
IGNyZWF0ZSBhIHRlbXAgZmlsZSB3aGljaCBpcyByZW1vdmVkIGFmdGVyIGl0IGhhcyBiZWVuIHVz
ZWQuCi0gIGtlZXBfYmFyY29kZXNfeXV2X2ZpbGUgPSBGYWxzZQotICBpZiBvcHRpb25zLmJhcmNv
ZGVzX3l1diAhPSBfREVGQVVMVF9CQVJDT0RFU19GSUxFOgotICAgIGtlZXBfYmFyY29kZXNfeXV2
X2ZpbGUgPSBUcnVlCi0KLSAgIyBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBiYXJjb2RlcyAtIGl0
IGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZnJhbWVzIGluCi0gICMgdGhlIGJhc2UgZmlsZS4K
LSAgbnVtYmVyX29mX2JhcmNvZGVzID0gQ2FsY3VsYXRlRnJhbWVzTnVtYmVyRnJvbVl1digKLSAg
ICAgIG9wdGlvbnMuYmFzZV9mcmFtZV93aWR0aCwgb3B0aW9ucy5iYXNlX2ZyYW1lX2hlaWdodCwg
b3B0aW9ucy5iYXNlX3l1dikKLQotICBzY3JpcHRfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBh
dGguYWJzcGF0aChzeXMuYXJndlswXSkpCi0gIHp4aW5nX2RpciA9IG9zLnBhdGguam9pbihzY3Jp
cHRfZGlyLCAndGhpcmRfcGFydHknLCAnenhpbmcnKQotICAjIEdlbmVyYXRlIGJhcmNvZGVzIC0g
d2lsbCBnZW5lcmF0ZSB0aGVtIGluIFBORy4KLSAgR2VuZXJhdGVVcGNhQmFyY29kZXMobnVtYmVy
X29mX2JhcmNvZGVzLCBvcHRpb25zLmJhcmNvZGVfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMuYmFyY29kZV9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgIG91dHB1
dF9kaXJlY3Rvcnk9b3B0aW9ucy5wbmdfYmFyY29kZXNfb3V0cHV0X2RpciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgcGF0aF90b196eGluZz16eGluZ19kaXIpCi0gICMgQ29udmVydCB0aGUgUE5H
IGJhcmNvZGVzIHRvIHRvIFlVViBmb3JtYXQuCi0gIENvbnZlcnRQbmdUb1l1dkJhcmNvZGVzKG9w
dGlvbnMucG5nX2JhcmNvZGVzX2lucHV0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
b3B0aW9ucy55dXZfYmFyY29kZXNfb3V0cHV0X2RpcikKLSAgIyBDb21iaW5lIHRoZSBZVVYgYmFy
Y29kZXMgaW50byBvbmUgWVVWIGZpbGUuCi0gIENvbWJpbmVZdXZGcmFtZXNJbnRvT25lRmlsZShv
cHRpb25zLmJhcmNvZGVzX3l1diwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0
X2RpcmVjdG9yeT1vcHRpb25zLnl1dl9mcmFtZXNfaW5wdXRfZGlyKQotICAjIE92ZXJsYXkgdGhl
IGJhcmNvZGVzIG92ZXIgdGhlIGJhc2UgZmlsZS4KLSAgT3ZlcmxheVl1dkZpbGVzKG9wdGlvbnMu
YmFyY29kZV93aWR0aCwgb3B0aW9ucy5iYXJjb2RlX2hlaWdodCwKLSAgICAgICAgICAgICAgICAg
IG9wdGlvbnMuYmFzZV9mcmFtZV93aWR0aCwgb3B0aW9ucy5iYXNlX2ZyYW1lX2hlaWdodCwKLSAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMuYmFyY29kZXNfeXV2LCBvcHRpb25zLmJhc2VfeXV2LCBv
cHRpb25zLm91dHB1dF95dXYpCi0KLSAgaWYgbm90IGtlZXBfYmFyY29kZXNfeXV2X2ZpbGU6Ci0g
ICAgIyBSZW1vdmUgdGhlIHRlbXBvcmFyeSBiYXJjb2RlcyBZVVYgZmlsZQotICAgIG9zLnJlbW92
ZShvcHRpb25zLmJhcmNvZGVzX3l1dikKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgot
ICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9idWlsZF96eGluZy5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJj
b2RlX3Rvb2xzL2J1aWxkX3p4aW5nLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
MjY5NmE3OGMyYzM2ZmQxMjNhOWZjMTI1MzFkYzM0YzJlZDBlOWQ2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL2J1aWxkX3p4aW5nLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENv
cHlyaWdodCAoYykgMjAxMiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSMgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotIyBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0jIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotCi1p
bXBvcnQgb3MKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi0KLQotZGVmIFJ1bkFudEJ1
aWxkQ29tbWFuZChwYXRoX3RvX2FudF9idWlsZF9maWxlKToKLSAgIiIiVHJpZXMgdG8gYnVpbGQg
dGhlIHBhc3NlZCBidWlsZCBmaWxlIHdpdGggYW50LiIiIgotICBhbnRfZXhlY3V0YWJsZSA9ICdh
bnQnCi0gIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgIGlmIG9zLmdldGVudignQU5U
X0hPTUUnKToKLSAgICAgIGFudF9leGVjdXRhYmxlID0gb3MucGF0aC5qb2luKG9zLmdldGVudign
QU5UX0hPTUUnKSwgJ2JpbicsICdhbnQuYmF0JykKLSAgICBlbHNlOgotICAgICAgYW50X2V4ZWN1
dGFibGUgPSAnYW50LmJhdCcKLSAgY21kID0gW2FudF9leGVjdXRhYmxlLCAnLWJ1aWxkZmlsZScs
IHBhdGhfdG9fYW50X2J1aWxkX2ZpbGVdCi0gIHRyeToKLSAgICBwcm9jZXNzID0gc3VicHJvY2Vz
cy5Qb3BlbihjbWQsIHN0ZG91dD1zeXMuc3Rkb3V0LCBzdGRlcnI9c3lzLnN0ZGVycikKLSAgICBw
cm9jZXNzLndhaXQoKQotICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgotICAgICAgcHJp
bnQgPj4gc3lzLnN0ZGVyciwgJ0ZhaWxlZCB0byBleGVjdXRlOiAlcycgJSAnICcuam9pbihjbWQp
Ci0gICAgcmV0dXJuIHByb2Nlc3MucmV0dXJuY29kZQotICBleGNlcHQgc3VicHJvY2Vzcy5DYWxs
ZWRQcm9jZXNzRXJyb3IgYXMgZToKLSAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnRmFpbGVkIHRv
IGV4ZWN1dGU6ICVzLlxuQ2F1c2U6ICVzJyAlICgnICcuam9pbihjbWQpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUpCi0g
ICAgcmV0dXJuIC0xCi0KLWRlZiBtYWluKCk6Ci0gIGNvcmVfYnVpbGQgPSBvcy5wYXRoLmpvaW4o
J3RoaXJkX3BhcnR5JywgJ3p4aW5nJywgJ2NvcmUnLCAnYnVpbGQueG1sJykKLSAgUnVuQW50QnVp
bGRDb21tYW5kKGNvcmVfYnVpbGQpCi0KLSAgamF2YXNlX2J1aWxkID0gb3MucGF0aC5qb2luKCd0
aGlyZF9wYXJ0eScsICd6eGluZycsICdqYXZhc2UnLCAnYnVpbGQueG1sJykKLSAgcmV0dXJuIFJ1
bkFudEJ1aWxkQ29tbWFuZChqYXZhc2VfYnVpbGQpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKLSAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvaGVscGVyX2Z1
bmN0aW9ucy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y190b29scy9iYXJjb2RlX3Rvb2xzL2hlbHBlcl9mdW5jdGlvbnMucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGUyNzMyMmY0MWY5MjY3MGI3MTFhZTVmOGE4YTdiNjA3MWUxNDA3YzMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMv
aGVscGVyX2Z1bmN0aW9ucy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0jIS91
c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0jIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotIyB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0jIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0KLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKLWltcG9ydCBvcwot
aW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLQotX0RFRkFVTFRfUEFERElORyA9IDQKLQot
Ci1jbGFzcyBIZWxwZXJFcnJvcihFeGNlcHRpb24pOgotICAiIiJFeGNlcHRpb24gcmFpc2VkIGZv
ciBlcnJvcnMgaW4gdGhlIGhlbHBlci4iIiIKLSAgcGFzcwotCi0KLWRlZiBaZXJvUGFkKG51bWJl
ciwgcGFkZGluZz1fREVGQVVMVF9QQURESU5HKToKLSAgIiIiQ29udmVydHMgYW4gaW50IGludG8g
YSB6ZXJvIHBhZGRlZCBzdHJpbmcuCi0KLSAgQXJnczoKLSAgICBudW1iZXIoaW50KTogVGhlIG51
bWJlciB0byBjb252ZXJ0LgotICAgIHBhZGRpbmcoaW50KTogVGhlIG51bWJlciBvZiBjaGFycyBp
biB0aGUgb3V0cHV0LiBOb3RlIHRoYXQgaWYgeW91IHBhc3MgZm9yCi0gICAgICBleGFtcGxlIG51
bWJlcj0yMzQ1NiBhbmQgcGFkZGluZz00LCB0aGUgb3V0cHV0IHdpbGwgc3RpbGwgYmUgJzIzNDU2
JywKLSAgICAgIGkuZS4gaXQgd2lsbCBub3QgYmUgY3JvcHBlZC4gSWYgeW91IHBhc3MgbnVtYmVy
PTIgYW5kIHBhZGRpbmc9NCwgdGhlCi0gICAgICByZXR1cm4gdmFsdWUgd2lsbCBiZSAnMDAwMicu
Ci0gIFJldHVybjoKLSAgICAoc3RyaW5nKTogVGhlIHplcm8gcGFkZGVkIG51bWJlciBjb252ZXJ0
ZWQgdG8gc3RyaW5nLgotICAiIiIKLSAgcmV0dXJuIHN0cihudW1iZXIpLnpmaWxsKHBhZGRpbmcp
Ci0KLQotZGVmIFJ1blNoZWxsQ29tbWFuZChjbWRfbGlzdCwgZmFpbF9tc2c9Tm9uZSk6Ci0gICIi
IkV4ZWN1dGVzIGEgY29tbWFuZC4KLQotICBBcmdzOgotICAgIGNtZF9saXN0KGxpc3QpOiBDb21t
YW5kIGxpc3QgdG8gZXhlY3V0ZS4KLSAgICBmYWlsX21zZyhzdHJpbmcpOiBNZXNzYWdlIGRlc2Ny
aWJpbmcgdGhlIGVycm9yIGluIGNhc2UgdGhlIGNvbW1hbmQgZmFpbHMuCi0KLSAgUmV0dXJuOgot
ICAgIChzdHJpbmcpOiBUaGUgc3RhbmRhcmQgb3V0cHV0IGZyb20gcnVubmluZyB0aGUgY29tbWFu
ZC4KLQotICBSYWlzZToKLSAgICBIZWxwZXJFcnJvcjogSWYgY29tbWFuZCBmYWlscy4KLSAgIiIi
Ci0gIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZF9saXN0LCBzdGRvdXQ9c3VicHJvY2Vz
cy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5Q
SVBFKQotICBvdXRwdXQsIGVycm9yID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gIGlmIHByb2Nl
c3MucmV0dXJuY29kZSAhPSAwOgotICAgIGlmIGZhaWxfbXNnOgotICAgICAgcHJpbnQgPj4gc3lz
LnN0ZGVyciwgZmFpbF9tc2cKLSAgICByYWlzZSBIZWxwZXJFcnJvcignRmFpbGVkIHRvIHJ1biAl
czogY29tbWFuZCByZXR1cm5lZCAlZCBhbmQgcHJpbnRlZCAnCi0gICAgICAgICAgICAgICAgICAg
ICAgJyVzIGFuZCAlcycgJSAoJyAnLmpvaW4oY21kX2xpc3QpLCBwcm9jZXNzLnJldHVybmNvZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LCBlcnJvcikpCi0g
IHJldHVybiBvdXRwdXQuc3RyaXAoKQotCi0KLWRlZiBQZXJmb3JtQWN0aW9uT25BbGxGaWxlcyhk
aXJlY3RvcnksIGZpbGVfcGF0dGVybiwgZmlsZV9leHRlbnNpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhcnRfbnVtYmVyLCBhY3Rpb24sICoqa3dhcmdzKToKLSAgIiIiRnVuY3Rp
b24gdGhhdCBwZXJmb3JtcyBhIGdpdmVuIGFjdGlvbiBvbiBhbGwgZmlsZXMgbWF0Y2hpbmcgYSBw
YXR0ZXJuLgotCi0gIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgZmlsZXMgYXJlIG5hbWVkIGZpbGVf
cGF0dGVybnh4eHguZmlsZV9leHRlbnNpb24sIHdoZXJlCi0gIHh4eHggYXJlIGRpZ2l0cyBzdGFy
dGluZyBmcm9tIHN0YXJ0X251bWJlci4KLQotICBBcmdzOgotICAgIGRpcmVjdG9yeShzdHJpbmcp
OiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBmaWxlcyBsaXZlLgotICAgIGZpbGVfcGF0dGVybihz
dHJpbmcpOiBUaGUgbmFtZSBwYXR0ZXJuIG9mIHRoZSBmaWxlcy4KLSAgICBmaWxlX2V4dGVuc2lv
bihzdHJpbmcpOiBUaGUgZmlsZXMnIGV4dGVuc2lvbi4KLSAgICBzdGFydF9udW1iZXIoaW50KTog
RnJvbSB3aGVyZSB0byBzdGFydCB0byBjb3VudCBmcmFtZXMuCi0gICAgYWN0aW9uKGZ1bmN0aW9u
KTogVGhlIGFjdGlvbiB0byBiZSBwZXJmb3JtZWQgb3ZlciB0aGUgZmlsZXMuIE11c3QgcmV0dXJu
Ci0gICAgICAgIEZhbHNlIGlmIHRoZSBhY3Rpb24gZmFpbGVkLCBUcnVlIG90aGVyd2lzZS4gSXQg
c2hvdWxkIHRha2UgYSBmaWxlIG5hbWUKLSAgICAgICAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFu
ZCAqKmt3YXJncyBhcyBhcmd1bWVudHMuIFRoZSBmdW5jdGlvbiBtdXN0IGJlCi0gICAgICAgIHBv
c3NpYmxlIHRvIHBpY2tsZSwgc28gaXQgY2Fubm90IGJlIGEgYm91bmQgZnVuY3Rpb24gKGZvciBp
bnN0YW5jZSkuCi0KLSAgUmV0dXJuOgotICAgIChib29sKTogV2hldGhlciBwZXJmb3JtaW5nIHRo
ZSBhY3Rpb24gb3ZlciBhbGwgZmlsZXMgd2FzIHN1Y2Nlc3NmdWwgb3Igbm90LgotICAiIiIKLSAg
ZmlsZV9wcmVmaXggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBmaWxlX3BhdHRlcm4pCi0gIGZp
bGVfbnVtYmVyID0gc3RhcnRfbnVtYmVyCi0KLSAgcHJvY2Vzc19wb29sID0gbXVsdGlwcm9jZXNz
aW5nLlBvb2wocHJvY2Vzc2VzPW11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKSkKLSAgcmVzdWx0
cyA9IFtdCi0gIHdoaWxlIFRydWU6Ci0gICAgemVyb19wYWRkZWRfZmlsZV9udW1iZXIgPSBaZXJv
UGFkKGZpbGVfbnVtYmVyKQotICAgIGZpbGVfbmFtZSA9IGZpbGVfcHJlZml4ICsgemVyb19wYWRk
ZWRfZmlsZV9udW1iZXIgKyAnLicgKyBmaWxlX2V4dGVuc2lvbgotICAgIGlmIG5vdCBvcy5wYXRo
LmlzZmlsZShmaWxlX25hbWUpOgotICAgICAgYnJlYWsKLSAgICBmdXR1cmUgPSBwcm9jZXNzX3Bv
b2wuYXBwbHlfYXN5bmMoYWN0aW9uLCBhcmdzPShmaWxlX25hbWUsKSwga3dkcz1rd2FyZ3MpCi0g
ICAgcmVzdWx0cy5hcHBlbmQoZnV0dXJlKQotICAgIGZpbGVfbnVtYmVyICs9IDEKLQotICBzdWNj
ZXNzZnVsID0gVHJ1ZQotICBmb3IgcmVzdWx0IGluIHJlc3VsdHM6Ci0gICAgaWYgbm90IHJlc3Vs
dC5nZXQoKToKLSAgICAgIHByaW50ICJBdCBsZWFzdCBvbmUgYWN0aW9uICVzIGZhaWxlZCBmb3Ig
ZmlsZXMgJXN4eHh4LiVzLiIgJSAoCi0gICAgICAgICAgYWN0aW9uLCBmaWxlX3BhdHRlcm4sIGZp
bGVfZXh0ZW5zaW9uKQotICAgICAgc3VjY2Vzc2Z1bCA9IEZhbHNlCi0KLSAgcHJvY2Vzc19wb29s
LmNsb3NlKCkKLSAgcmV0dXJuIHN1Y2Nlc3NmdWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL3l1dl9j
cm9wcGVyLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X3Rvb2xzL2JhcmNvZGVfdG9vbHMveXV2X2Nyb3BwZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDYwOWYwN2RjOWNjN2FkOTBlYzJkNDI5MTY3ZjkyYjUzYTc4MmNmM2EuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMveXV2X2Ny
b3BwZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jIENvcHlyaWdodCAoYykgMjAxMiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSMgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotIyBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
Ci0jIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgotCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi0KLWRl
ZiBfQ3JvcE9uZUZyYW1lKHl1dl9maWxlLCBvdXRwdXRfZmlsZSwgY29tcG9uZW50X3NpemVzKToK
LSAgIiIiQ3JvcHMgb25lIGZyYW1lLgotCi0gIFRoaXMgZnVuY3Rpb24gY3JvcHMgb25lIGZyYW1l
IGdvaW5nIHRocm91Z2ggYWxsIHRoZSBZVVYgcGxhbmVzIGFuZCBjcm9wcGluZwotICByZXNwZWN0
aXZlIGFtb3VudCBvZiByb3dzLgotCi0gIEFyZ3M6Ci0gICAgeXV2X2ZpbGUoZmlsZSk6IFRoZSBv
cGVuZWQgKGZvciBiaW5hcnkgcmVhZGluZykgWVVWIGZpbGUuCi0gICAgb3V0cHV0X2ZpbGUoZmls
ZSk6IFRoZSBvcGVuZWQgKGZvciBiaW5hcnkgd3JpdGluZykgZmlsZS4KLSAgICBjb21wb25lbnRf
c2l6ZXMobGlzdCBvZiAzIDMtcGxlcyk6IFRoZSBsaXN0IGNvbnRhaW5zIHRoZSBzaXplcyBmb3Ig
YWxsIHRoZQotICAgICAgcGxhbmVzIChZLCBVLCBWKSBvZiB0aGUgWVVWIGZpbGUgcGx1cyB0aGUg
Y3JvcF9oZWlnaHQgc2NhbGVkIGZvciBldmVyeQotICAgICAgcGxhbmUuIFRoZSBzaXplcyBlcXVh
bCB3aWR0aCwgaGVpZ2h0IGFuZCBjcm9wX2hlaWdodCBmb3IgdGhlIFkgcGxhbmUsCi0gICAgICBh
bmQgYXJlIGVxdWFsIHRvIHdpZHRoLzIsIGhlaWdodC8yIGFuZCBjcm9wX2hlaWdodC8yIGZvciB0
aGUgVSBhbmQgVgotICAgICAgcGxhbmVzLgotICBSZXR1cm46Ci0gICAgKGJvb2wpOiBUcnVlIGlm
IHRoZXJlIGFyZSBtb3JlIGZyYW1lcyB0byBjcm9wLCBGYWxzZSBvdGhlcndpc2UuCi0gICIiIgot
ICBmb3IgY29tcF93aWR0aCwgY29tcF9oZWlnaHQsIGNvbXBfY3JvcF9oZWlnaHQgaW4gY29tcG9u
ZW50X3NpemVzOgotICAgIGZvciByb3cgaW4gcmFuZ2UoY29tcF9oZWlnaHQpOgotICAgICAgIyBS
ZWFkIHRoZSBwbGFuZSBkYXRhIGZvciB0aGlzIHJvdy4KLSAgICAgIHl1dl9wbGFuZSA9IHl1dl9m
aWxlLnJlYWQoY29tcF93aWR0aCkKLQotICAgICAgIyBJZiB0aGUgcGxhbmUgaXMgZW1wdHksIHdl
IGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBmaWxlLgotICAgICAgaWYgeXV2X3BsYW5lID09
ICIiOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgIyBPbmx5IHdyaXRlIHRoZSBwbGFu
ZSBkYXRhIGZvciB0aGUgcm93cyBiaWdnZXIgdGhhbiBjcm9wX2hlaWdodC4KLSAgICAgIGlmIHJv
dyA+PSBjb21wX2Nyb3BfaGVpZ2h0OgotICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSh5dXZfcGxh
bmUpCi0gIHJldHVybiBUcnVlCi0KLQotZGVmIENyb3BGcmFtZXMoeXV2X2ZpbGVfbmFtZSwgb3V0
cHV0X2ZpbGVfbmFtZSwgd2lkdGgsIGhlaWdodCwgY3JvcF9oZWlnaHQpOgotICAiIiJDcm9wcyBy
b3dzIG9mIHBpeGVscyBmcm9tIHRoZSB0b3Agb2YgdGhlIFlVViBmcmFtZXMuCi0KLSAgVGhpcyBm
dW5jdGlvbiBnb2VzIHRocm91Z2ggYWxsIHRoZSBmcmFtZXMgaW4gYSB2aWRlbyBhbmQgY3JvcHMg
dGhlIGNyb3BfaGVpZ2h0Ci0gIHRvcCBwaXhlbCByb3dzIG9mIGV2ZXJ5IGZyYW1lLgotCi0gIEFy
Z3M6Ci0gICAgeXV2X2ZpbGVfbmFtZShzdHJpbmcpOiBUaGUgbmFtZSBvZiB0aGUgWVVWIGZpbGUg
dG8gYmUgY3JvcHBlZC4KLSAgICBvdXRwdXRfZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9m
IHRoZSBvdXRwdXQgZmlsZSB3aGVyZSB0aGUgcmVzdWx0IHdpbGwKLSAgICAgIGJlIHdyaXR0ZW4u
Ci0gICAgd2lkdGgoaW50KTogVGhlIHdpZHRoIG9mIHRoZSBvcmlnaW5hbCBZVVYgZmlsZS4KLSAg
ICBoZWlnaHQoaW50KTogVGhlIGhlaWdodCBvZiB0aGUgb3JpZ2luYWwgWVVWIGZpbGUuCi0gICAg
Y3JvcF9oZWlnaHQoaW50KTogVGhlIGhlaWdodCAodGhlIG51bWJlciBvZiBwaXhlbCByb3dzKSB0
byBiZSBjcm9wcGVkIGZyb20KLSAgICAgIHRoZSBmcmFtZXMuCi0gICIiIgotICAjIENvbXBvbmVu
dCBzaXplcyA9IFtZX3NpemVzLCBVX3NpemVzLCBWX3NpemVzXS4KLSAgY29tcG9uZW50X3NpemVz
ID0gWyh3aWR0aCwgaGVpZ2h0LCBjcm9wX2hlaWdodCksCi0gICAgICAgICAgICAgICAgICAgICAo
d2lkdGgvMiwgaGVpZ2h0LzIsIGNyb3BfaGVpZ2h0LzIpLAotICAgICAgICAgICAgICAgICAgICAg
KHdpZHRoLzIsIGhlaWdodC8yLCBjcm9wX2hlaWdodC8yKV0KLQotICB5dXZfZmlsZSA9IG9wZW4o
eXV2X2ZpbGVfbmFtZSwgJ3JiJykKLSAgb3V0cHV0X2ZpbGUgPSBvcGVuKG91dHB1dF9maWxlX25h
bWUsICd3YicpCi0KLSAgZGF0YV9sZWZ0ID0gVHJ1ZQotICB3aGlsZSBkYXRhX2xlZnQ6Ci0gICAg
ZGF0YV9sZWZ0ID0gX0Nyb3BPbmVGcmFtZSh5dXZfZmlsZSwgb3V0cHV0X2ZpbGUsIGNvbXBvbmVu
dF9zaXplcykKLQotICB5dXZfZmlsZS5jbG9zZSgpCi0gIG91dHB1dF9maWxlLmNsb3NlKCkKLQot
Ci1kZWYgX1BhcnNlQXJncygpOgotICAiIiJSZWdpc3RlcnMgdGhlIGNvbW1hbmQtbGluZSBvcHRp
b25zLiIiIgotICB1c2FnZSA9ICJ1c2FnZTogJXByb2cgW29wdGlvbnNdIgotICBwYXJzZXIgPSBv
cHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9dXNhZ2UpCi0KLSAgcGFyc2VyLmFkZF9vcHRpb24o
Jy0td2lkdGgnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTM1MiwK
LSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1dpZHRoIG9mIHRoZSBZVVYgZmlsZVwncyBmcmFt
ZXMuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0g
IHBhcnNlci5hZGRfb3B0aW9uKCctLWhlaWdodCcsIHR5cGU9J2ludCcsIGRlZmF1bHQ9Mjg4LAot
ICAgICAgICAgICAgICAgICAgICBoZWxwPSgnSGVpZ2h0IG9mIHRoZSBZVVYgZmlsZVwncyBmcmFt
ZXMuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0g
IHBhcnNlci5hZGRfb3B0aW9uKCctLWNyb3BfaGVpZ2h0JywgdHlwZT0naW50JywgZGVmYXVsdD0z
MiwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0hvdyBtdWNoIG9mIHRoZSB0b3Agb2YgdGhl
IFlVViBmaWxlIHRvIGNyb3AuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0hhcyB0byBi
ZSBtb2R1bGUgb2YgMi4gRGVmYXVsdDogJWRlZmF1bHQnKSkKLSAgcGFyc2VyLmFkZF9vcHRpb24o
Jy0teXV2X2ZpbGUnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgn
VGhlIFlVViBmaWxlIHRvIGJlIGNyb3BwZWQuJykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLW91
dHB1dF9maWxlJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nb3V0cHV0Lnl1dicsCi0gICAgICAg
ICAgICAgICAgICAgIGhlbHA9KCdUaGUgb3V0cHV0IFlVViBmaWxlIGNvbnRhaW5pbmcgdGhlIGNy
b3BwZWQgWVVWLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVs
dCcpKQotICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKVswXQotICBpZiBub3Qgb3B0aW9u
cy55dXZfZmlsZToKLSAgICBwYXJzZXIuZXJyb3IoJ3l1dl9maWxlIGFyZ3VtZW50IG1pc3Npbmcu
IFBsZWFzZSBzcGVjaWZ5IGlucHV0IFlVViBmaWxlIScpCi0gIHJldHVybiBvcHRpb25zCi0KLQot
ZGVmIG1haW4oKToKLSAgIiIiQSB0b29sIHRvIGNyb3Agcm93cyBvZiBwaXhlbHMgZnJvbSB0aGUg
dG9wIHBhcnQgb2YgYSBZVVYgZmlsZS4KLQotICBBIHNpbXBsZSBpbnZvY2F0aW9uIHdpbGwgYmU6
Ci0gIC4veXV2X2Nyb3BwZXIucHkgLS13aWR0aD02NDAgLS1oZWlnaHQ9NDgwIC0tY3JvcF9oZWln
aHQ9MzIKLSAgLS15dXZfZmlsZT08cGF0aF9hbmRfbmFtZV9vZl95dXZfZmlsZT4KLSAgLS1vdXRw
dXRfeXV2PTxwYXRoIGFuZCBuYW1lX29mX291dHB1dF9maWxlPgotICAiIiIKLSAgb3B0aW9ucyA9
IF9QYXJzZUFyZ3MoKQotCi0gIGlmIG9zLnBhdGguZ2V0c2l6ZShvcHRpb25zLnl1dl9maWxlKSA9
PSAwOgotICAgIHN5cy5zdGRlcnIud3JpdGUoJ0Vycm9yOiBUaGUgWVVWIGZpbGUgeW91IGhhdmUg
cGFzc2VkIGhhcyBzaXplIDAuIFRoZSAnCi0gICAgICAgICAgICAgICAgICAgICAncHJvZHVjZWQg
b3V0cHV0IHdpbGwgYWxzbyBoYXZlIHNpemUgMC5cbicpCi0gICAgcmV0dXJuIC0xCi0KLSAgQ3Jv
cEZyYW1lcyhvcHRpb25zLnl1dl9maWxlLCBvcHRpb25zLm91dHB1dF9maWxlLCBvcHRpb25zLndp
ZHRoLAotICAgICAgICAgICAgIG9wdGlvbnMuaGVpZ2h0LCBvcHRpb25zLmNyb3BfaGVpZ2h0KQot
ICByZXR1cm4gMAotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIHN5cy5leGl0KG1h
aW4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y190b29scy9jb21wYXJlX3ZpZGVvcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9jb21wYXJlX3ZpZGVvcy5weQppbmRleCA3OTc5
MDQzOWIxNzZkYWFjMTkxNzI3Y2QwYzIxN2M5NDZkNTI1NzlkLi4wY2I0YTZkZGIxOTlmNTYwZjQ2
N2M0ZGRkOWIyNTUxY2Y0NDNjNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvY29tcGFyZV92aWRlb3MucHkKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2NvbXBhcmVf
dmlkZW9zLnB5CkBAIC03LDYgKzcsNyBAQAogIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CiAjIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogCitpbXBvcnQganNvbgogaW1w
b3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKQEAgLTQ1LDI1ICs0NiwxNSBA
QCBkZWYgX1BhcnNlQXJncygpOgogICBwYXJzZXIuYWRkX29wdGlvbignLS12bWFmX3Bob25lX21v
ZGVsJywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgaGVscD0nV2hl
dGhlciB0byB1c2UgcGhvbmUgbW9kZWwgaW4gVk1BRi4nKQogICBwYXJzZXIuYWRkX29wdGlvbign
LS1iYXJjb2RlX2RlY29kZXInLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICBo
ZWxwPSgnUGF0aCB0byB0aGUgYmFyY29kZSBkZWNvZGVyIHNjcmlwdC4gQnkgZGVmYXVsdCwgd2Ug
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lsbCBhc3N1bWUgd2UgY2FuIGZpbmQgaXQg
aW4gYmFyY29kZV90b29scy8nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxhdGl2ZSB0
byB0aGlzIGRpcmVjdG9yeS4nKSkKKyAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0RFUFJFQ0FU
RUQnKSkKICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZmZtcGVnX3BhdGgnLCB0eXBlPSdzdHJpbmcn
LAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnVGhlIHBhdGggdG8gd2hlcmUgdGhlIGZmbXBl
ZyBleGVjdXRhYmxlIGlzIGxvY2F0ZWQuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lm
IG9taXR0ZWQsIGl0IHdpbGwgYmUgYXNzdW1lZCB0byBiZSBwcmVzZW50IGluIHRoZSAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICdQQVRIIHdpdGggdGhlIG5hbWUgZmZtcGVnWy5leGVdLicp
KQorICAgICAgICAgICAgICAgICAgICBoZWxwPSgnREVQUkVDQVRFRCcpKQogICBwYXJzZXIuYWRk
X29wdGlvbignLS16eGluZ19wYXRoJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAg
ICAgaGVscD0oJ1RoZSBwYXRoIHRvIHdoZXJlIHRoZSB6eGluZyBleGVjdXRhYmxlIGlzIGxvY2F0
ZWQuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lmIG9taXR0ZWQsIGl0IHdpbGwgYmUg
YXNzdW1lZCB0byBiZSBwcmVzZW50IGluIHRoZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICdQQVRIIHdpdGggdGhlIG5hbWUgenhpbmdbLmV4ZV0uJykpCisgICAgICAgICAgICAgICAgICAg
IGhlbHA9KCdERVBSRUNBVEVEJykpCiAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXN0YXRzX2ZpbGVf
cmVmJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nc3RhdHNfcmVmLnR4dCcsCi0gICAgICAgICAg
ICAgICAgICAgIGhlbHA9KCdQYXRoIHRvIHRoZSB0ZW1wb3Jhcnkgc3RhdHMgZmlsZSB0byBiZSBj
cmVhdGVkIGFuZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd1c2VkIGZvciB0aGUgcmVm
ZXJlbmNlIHZpZGVvIGZpbGUuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6
ICVkZWZhdWx0JykpCisgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdERVBSRUNBVEVEJykpCiAg
IHBhcnNlci5hZGRfb3B0aW9uKCctLXN0YXRzX2ZpbGVfdGVzdCcsIHR5cGU9J3N0cmluZycsCi0g
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3N0YXRzX3Rlc3QudHh0JywKLSAgICAgICAgICAg
ICAgICAgICAgaGVscD0oJ1BhdGggdG8gdGhlIHRlbXBvcmFyeSBzdGF0cyBmaWxlIHRvIGJlIGNy
ZWF0ZWQgYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZWQgZm9yIHRoZSB0ZXN0
IHZpZGVvIGZpbGUuIERlZmF1bHQ6ICVkZWZhdWx0JykpCisgICAgICAgICAgICAgICAgICAgIGhl
bHA9KCdERVBSRUNBVEVEJykpCiAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXN0YXRzX2ZpbGUnLCB0
eXBlPSdzdHJpbmcnLAogICAgICAgICAgICAgICAgICAgICBoZWxwPSgnREVQUkVDQVRFRCcpKQog
ICBwYXJzZXIuYWRkX29wdGlvbignLS15dXZfZnJhbWVfd2lkdGgnLCB0eXBlPSdpbnQnLCBkZWZh
dWx0PTY0MCwKQEAgLTc0LDExICs2NSw2IEBAIGRlZiBfUGFyc2VBcmdzKCk6CiAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J1doZXJlIHRvIHN0b3JlIHBlcmYgcmVzdWx0cyBpbiBjaGFydGpzb24g
Zm9ybWF0LicpCiAgIG9wdGlvbnMsIF8gPSBwYXJzZXIucGFyc2VfYXJncygpCiAKLSAgaWYgb3B0
aW9ucy5zdGF0c19maWxlOgotICAgIG9wdGlvbnMuc3RhdHNfZmlsZV90ZXN0ID0gb3B0aW9ucy5z
dGF0c19maWxlCi0gICAgcHJpbnQgKCdXQVJOSU5HOiBVc2luZyBkZXByZWNhdGVkIHN3aXRjaCAt
LXN0YXRzX2ZpbGUuICcKLSAgICAgICAgICAgJ1RoZSBuZXcgZmxhZyBpcyAtLXN0YXRzX2ZpbGVf
dGVzdC4nKQotCiAgIGlmIG5vdCBvcHRpb25zLnJlZl92aWRlbzoKICAgICBwYXJzZXIuZXJyb3Io
J1lvdSBtdXN0IHByb3ZpZGUgYSBwYXRoIHRvIHRoZSByZWZlcmVuY2UgdmlkZW8hJykKICAgaWYg
bm90IG9zLnBhdGguZXhpc3RzKG9wdGlvbnMucmVmX3ZpZGVvKToKQEAgLTEwNywzNCArOTMsNiBA
QCBkZWYgX0Rldk51bGwoKToKICAgIiIiCiAgIHJldHVybiBvcGVuKG9zLmRldm51bGwsICdyJykK
IAotZGVmIERlY29kZUJhcmNvZGVzSW5WaWRlbyhvcHRpb25zLCBwYXRoX3RvX2RlY29kZXIsIHZp
ZGVvLCBzdGF0X2ZpbGUpOgotICAjIFJ1biBiYXJjb2RlIGRlY29kZXIgb24gdGhlIHRlc3Qgdmlk
ZW8gdG8gaWRlbnRpZnkgZnJhbWUgbnVtYmVycy4KLSAgcG5nX3dvcmtpbmdfZGlyZWN0b3J5ID0g
dGVtcGZpbGUubWtkdGVtcCgpCi0gIGNtZCA9IFsKLSAgICBzeXMuZXhlY3V0YWJsZSwKLSAgICBw
YXRoX3RvX2RlY29kZXIsCi0gICAgJy0teXV2X2ZpbGU9JXMnICUgdmlkZW8sCi0gICAgJy0teXV2
X2ZyYW1lX3dpZHRoPSVkJyAlIG9wdGlvbnMueXV2X2ZyYW1lX3dpZHRoLAotICAgICctLXl1dl9m
cmFtZV9oZWlnaHQ9JWQnICUgb3B0aW9ucy55dXZfZnJhbWVfaGVpZ2h0LAotICAgICctLXN0YXRz
X2ZpbGU9JXMnICUgc3RhdF9maWxlLAotICAgICctLXBuZ193b3JraW5nX2Rpcj0lcycgJSBwbmdf
d29ya2luZ19kaXJlY3RvcnksCi0gIF0KLSAgaWYgb3B0aW9ucy56eGluZ19wYXRoOgotICAgIGNt
ZC5hcHBlbmQoJy0tenhpbmdfcGF0aD0lcycgJSBvcHRpb25zLnp4aW5nX3BhdGgpCi0gIGlmIG9w
dGlvbnMuZmZtcGVnX3BhdGg6Ci0gICAgY21kLmFwcGVuZCgnLS1mZm1wZWdfcGF0aD0lcycgJSBv
cHRpb25zLmZmbXBlZ19wYXRoKQotCi0KLSAgYmFyY29kZV9kZWNvZGVyID0gc3VicHJvY2Vzcy5Q
b3BlbihjbWQsIHN0ZGluPV9EZXZOdWxsKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3Rkb3V0PXN5cy5zdGRvdXQsIHN0ZGVycj1zeXMuc3RkZXJyKQotICBiYXJjb2Rl
X2RlY29kZXIud2FpdCgpCi0KLSAgc2h1dGlsLnJtdHJlZShwbmdfd29ya2luZ19kaXJlY3Rvcnkp
Ci0gIGlmIGJhcmNvZGVfZGVjb2Rlci5yZXR1cm5jb2RlICE9IDA6Ci0gICAgcHJpbnQgJ0ZhaWxl
ZCB0byBydW4gYmFyY29kZSBkZWNvZGVyIHNjcmlwdC4nCi0gICAgcmV0dXJuIDEKLSAgcmV0dXJu
IDAKLQogCiBkZWYgX1J1bkZyYW1lQW5hbHl6ZXIob3B0aW9ucywgeXV2X2RpcmVjdG9yeT1Ob25l
KToKICAgIiIiUnVuIGZyYW1lIGFuYWx5emVyIHRvIGNvbXBhcmUgdGhlIHZpZGVvcyBhbmQgcHJp
bnQgb3V0cHV0LiIiIgpAQCAtMTYyLDEyICsxMjAsOSBAQCBkZWYgX1J1bkZyYW1lQW5hbHl6ZXIo
b3B0aW9ucywgeXV2X2RpcmVjdG9yeT1Ob25lKToKICAgcmV0dXJuIGZyYW1lX2FuYWx5emVyLnJl
dHVybmNvZGUKIAogCi1kZWYgX1J1blZtYWYob3B0aW9ucywgeXV2X2RpcmVjdG9yeSk6CitkZWYg
X1J1blZtYWYob3B0aW9ucywgeXV2X2RpcmVjdG9yeSwgbG9nZmlsZSk6CiAgICIiIiBSdW4gVk1B
RiB0byBjb21wYXJlIHZpZGVvcyBhbmQgcHJpbnQgb3V0cHV0LgogCi0gIFRoZSBwcm92aWRlZCB2
bWFmIGRpcmVjdG9yeSBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gYSBjKysgd3JhcHBlciBleGVjdXRh
YmxlCi0gIGFuZCBhIG1vZGVsLgotCiAgIFRoZSB5dXZfZGlyZWN0b3J5IGlzIGFzc3VtZWQgdG8g
aGF2ZSBiZWVuIHBvcHVsYXRlZCB3aXRoIGEgcmVmZXJlbmNlIGFuZCB0ZXN0CiAgIHZpZGVvIGlu
IC55dXYgZm9ybWF0LCB3aXRoIG5hbWVzIGFjY29yZGluZyB0byB0aGUgbGFiZWwuCiAgICIiIgpA
QCAtMTc5LDI2ICsxMzQsMjkgQEAgZGVmIF9SdW5WbWFmKG9wdGlvbnMsIHl1dl9kaXJlY3Rvcnkp
OgogICAgIG9zLnBhdGguam9pbih5dXZfZGlyZWN0b3J5LCAicmVmLnl1diIpLAogICAgIG9zLnBh
dGguam9pbih5dXZfZGlyZWN0b3J5LCAidGVzdC55dXYiKSwKICAgICBvcHRpb25zLnZtYWZfbW9k
ZWwsCisgICAgJy0tbG9nJywKKyAgICBsb2dmaWxlLAorICAgICctLWxvZy1mbXQnLAorICAgICdq
c29uJywKICAgXQogICBpZiBvcHRpb25zLnZtYWZfcGhvbmVfbW9kZWw6CiAgICAgY21kLmFwcGVu
ZCgnLS1waG9uZS1tb2RlbCcpCiAKICAgdm1hZiA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRp
bj1fRGV2TnVsbCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vz
cy5QSVBFLCBzdGRlcnI9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
b3V0PXN5cy5zdGRvdXQsIHN0ZGVycj1zeXMuc3RkZXJyKQogICB2bWFmLndhaXQoKQogICBpZiB2
bWFmLnJldHVybmNvZGUgIT0gMDoKICAgICBwcmludCAnRmFpbGVkIHRvIHJ1biBWTUFGLicKICAg
ICByZXR1cm4gMQotICBvdXRwdXQgPSB2bWFmLnN0ZG91dC5yZWFkKCkKLSAgIyBFeHRyYWN0IHNj
b3JlIGZyb20gVk1BRiBvdXRwdXQuCi0gIHRyeToKLSAgICBzY29yZSA9IGZsb2F0KG91dHB1dC5z
cGxpdCgnXG4nKVsyXS5zcGxpdCgpWzNdKQotICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJy
b3IpOgotICAgIHByaW50ICdFcnJvciBpbiBWTUFGIG91dHB1dCAoZXhwZWN0ZWQgIlZNQUYgc2Nv
cmUgPSBbZmxvYXRdIiBvbiBsaW5lIDMpOicKLSAgICBwcmludCBvdXRwdXQKLSAgICByZXR1cm4g
MQogCi0gIHByaW50ICdSRVNVTFQgVm1hZjogJXM9ICVmJyAlIChvcHRpb25zLmxhYmVsLCBzY29y
ZSkKKyAgIyBSZWFkIHBlci1mcmFtZSBzY29yZXMgZnJvbSBWTUFGIG91dHB1dCBhbmQgcHJpbnQu
CisgIHdpdGggb3Blbihsb2dmaWxlKSBhcyBmOgorICAgIHZtYWZfZGF0YSA9IGpzb24ubG9hZChm
KQorICAgIHZtYWZfc2NvcmVzID0gW10KKyAgICBmb3IgZnJhbWUgaW4gdm1hZl9kYXRhWydmcmFt
ZXMnXToKKyAgICAgIHZtYWZfc2NvcmVzLmFwcGVuZChmcmFtZVsnbWV0cmljcyddWyd2bWFmJ10p
CisgICAgcHJpbnQgJ1JFU1VMVCBWTUFGOiAlcz0nICUgb3B0aW9ucy5sYWJlbCwgdm1hZl9zY29y
ZXMKKwogICByZXR1cm4gMAogCiAKQEAgLTIxMyw0MCArMTcxLDI0IEBAIGRlZiBtYWluKCk6CiAK
ICAgUnVubmluZyB2bWFmIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOgogICAtLXZt
YWYsIC0tdm1hZl9tb2RlbCwgLS15dXZfZnJhbWVfd2lkdGgsIC0teXV2X2ZyYW1lX2hlaWdodAot
Ci0gIE5vdGljZSB0aGF0IHRoZSBwcmVyZXF1aXNpdGVzIGZvciBiYXJjb2RlX2RlY29kZXIucHkg
YWxzbyBhcHBsaWVzIHRvIHRoaXMKLSAgc2NyaXB0LiBUaGUgbWVhbnMgdGhlIGZvbGxvd2luZyBl
eGVjdXRhYmxlcyBoYXZlIHRvIGJlIGF2YWlsYWJsZSBpbiB0aGUgUEFUSDoKLSAgKiB6eGluZwot
ICAqIGZmbXBlZwogICAiIiIKICAgb3B0aW9ucyA9IF9QYXJzZUFyZ3MoKQogCi0gIGlmIG9wdGlv
bnMuYmFyY29kZV9kZWNvZGVyOgotICAgIHBhdGhfdG9fZGVjb2RlciA9IG9wdGlvbnMuYmFyY29k
ZV9kZWNvZGVyCi0gIGVsc2U6Ci0gICAgcGF0aF90b19kZWNvZGVyID0gb3MucGF0aC5qb2luKFND
UklQVF9ESVIsICdiYXJjb2RlX3Rvb2xzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2JhcmNvZGVfZGVjb2Rlci5weScpCi0KLSAgaWYgRGVjb2RlQmFyY29kZXNJblZpZGVv
KG9wdGlvbnMsIHBhdGhfdG9fZGVjb2RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbnMucmVmX3ZpZGVvLCBvcHRpb25zLnN0YXRzX2ZpbGVfcmVmKSAhPSAwOgotICAgIHJldHVy
biAxCi0gIGlmIERlY29kZUJhcmNvZGVzSW5WaWRlbyhvcHRpb25zLCBwYXRoX3RvX2RlY29kZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnRlc3RfdmlkZW8sIG9wdGlvbnMu
c3RhdHNfZmlsZV90ZXN0KSAhPSAwOgotICAgIHJldHVybiAxCi0KICAgaWYgb3B0aW9ucy52bWFm
OgogICAgIHRyeToKICAgICAgICMgRGlyZWN0b3J5IHRvIHNhdmUgdGVtcG9yYXJ5IFlVViBmaWxl
cyBmb3IgVk1BRiBpbiBmcmFtZV9hbmFseXplci4KICAgICAgIHl1dl9kaXJlY3RvcnkgPSB0ZW1w
ZmlsZS5ta2R0ZW1wKCkKKyAgICAgIF8sIHZtYWZfbG9nZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAo
KQogCiAgICAgICAjIFJ1biBmcmFtZSBhbmFseXplciB0byBjb21wYXJlIHRoZSB2aWRlb3MgYW5k
IHByaW50IG91dHB1dC4KICAgICAgIGlmIF9SdW5GcmFtZUFuYWx5emVyKG9wdGlvbnMsIHl1dl9k
aXJlY3Rvcnk9eXV2X2RpcmVjdG9yeSkgIT0gMDoKICAgICAgICAgcmV0dXJuIDEKIAogICAgICAg
IyBSdW4gVk1BRiBmb3IgZnVydGhlciB2aWRlbyBjb21wYXJpc29uIGFuZCBwcmludCBvdXRwdXQu
Ci0gICAgICByZXR1cm4gX1J1blZtYWYob3B0aW9ucywgeXV2X2RpcmVjdG9yeSkKKyAgICAgIHJl
dHVybiBfUnVuVm1hZihvcHRpb25zLCB5dXZfZGlyZWN0b3J5LCB2bWFmX2xvZ2ZpbGUpCiAgICAg
ZmluYWxseToKICAgICAgIHNodXRpbC5ybXRyZWUoeXV2X2RpcmVjdG9yeSkKKyAgICAgIG9zLnJl
bW92ZSh2bWFmX2xvZ2ZpbGUpCiAgIGVsc2U6CiAgICAgcmV0dXJuIF9SdW5GcmFtZUFuYWx5emVy
KG9wdGlvbnMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9hbmFseXplci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9s
b2dfdmlzdWFsaXplci9hbmFseXplci5jYwppbmRleCA0M2NiZDY5ZmM4ZTE4Yzk0NjE3MjlkMzUy
ZmRhZWIwYjBkMzE4NWU1Li4zYmRmYmYzMmEwZTFiNTE2YTU0OTc4NDUxMjQzMjUyYzA5MzRjMDE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfdG9vbHMvZXZlbnRfbG9nX3Zpc3VhbGl6ZXIvYW5hbHl6ZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2V2ZW50X2xvZ192aXN1
YWxpemVyL2FuYWx5emVyLmNjCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4K
IAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS90cmFuc3Bv
cnQvZ29vZ19jY19mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9hdWRpb19yZWNlaXZlX3N0cmVh
bS5oIgogI2luY2x1ZGUgImNhbGwvYXVkaW9fc2VuZF9zdHJlYW0uaCIKICNpbmNsdWRlICJjYWxs
L2NhbGwuaCIKQEAgLTM2LDggKzM3LDkgQEAKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2JpdHJhdGVfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2UuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9pbmNsdWRlL3JlY2VpdmVfc2lkZV9j
b25nZXN0aW9uX2NvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9pbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNr
X2FkYXB0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVm
aW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQuaCIKQEAgLTE3NSwx
MyArMTc3LDEzIEBAIGNvbnN0ZXhwciBmbG9hdCBrQm90dG9tTWFyZ2luID0gMC4wMmY7CiBjb25z
dGV4cHIgZmxvYXQga1RvcE1hcmdpbiA9IDAuMDVmOwogCiBhYnNsOjpvcHRpb25hbDxkb3VibGU+
IE5ldHdvcmtEZWxheURpZmZfQWJzU2VuZFRpbWUoCi0gICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0
JiBvbGRfcGFja2V0LAotICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldCYgbmV3X3BhY2tldCkgewot
ICBpZiAob2xkX3BhY2tldC5oZWFkZXIuZXh0ZW5zaW9uLmhhc0Fic29sdXRlU2VuZFRpbWUgJiYK
LSAgICAgIG5ld19wYWNrZXQuaGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0ZVNlbmRUaW1lKSB7
CisgICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIG9sZF9wYWNrZXQsCisgICAgY29u
c3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIG5ld19wYWNrZXQpIHsKKyAgaWYgKG9sZF9wYWNr
ZXQucnRwLmhlYWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5kVGltZSAmJgorICAgICAgbmV3
X3BhY2tldC5ydHAuaGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0ZVNlbmRUaW1lKSB7CiAgICAg
aW50NjRfdCBzZW5kX3RpbWVfZGlmZiA9IFdyYXBwaW5nRGlmZmVyZW5jZSgKLSAgICAgICAgbmV3
X3BhY2tldC5oZWFkZXIuZXh0ZW5zaW9uLmFic29sdXRlU2VuZFRpbWUsCi0gICAgICAgIG9sZF9w
YWNrZXQuaGVhZGVyLmV4dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1lLCAxdWwgPDwgMjQpOworICAg
ICAgICBuZXdfcGFja2V0LnJ0cC5oZWFkZXIuZXh0ZW5zaW9uLmFic29sdXRlU2VuZFRpbWUsCisg
ICAgICAgIG9sZF9wYWNrZXQucnRwLmhlYWRlci5leHRlbnNpb24uYWJzb2x1dGVTZW5kVGltZSwg
MXVsIDw8IDI0KTsKICAgICBpbnQ2NF90IHJlY3ZfdGltZV9kaWZmID0KICAgICAgICAgbmV3X3Bh
Y2tldC5sb2dfdGltZV91cygpIC0gb2xkX3BhY2tldC5sb2dfdGltZV91cygpOwogICAgIGRvdWJs
ZSBkZWxheV9jaGFuZ2VfdXMgPQpAQCAtMTkzLDM0ICsxOTUsMzEgQEAgYWJzbDo6b3B0aW9uYWw8
ZG91YmxlPiBOZXR3b3JrRGVsYXlEaWZmX0Fic1NlbmRUaW1lKAogfQogCiBhYnNsOjpvcHRpb25h
bDxkb3VibGU+IE5ldHdvcmtEZWxheURpZmZfQ2FwdHVyZVRpbWUoCi0gICAgY29uc3QgTG9nZ2Vk
UnRwUGFja2V0JiBvbGRfcGFja2V0LAotICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldCYgbmV3X3Bh
Y2tldCkgewotICBpbnQ2NF90IHNlbmRfdGltZV9kaWZmID0gV3JhcHBpbmdEaWZmZXJlbmNlKAot
ICAgICAgbmV3X3BhY2tldC5oZWFkZXIudGltZXN0YW1wLCBvbGRfcGFja2V0LmhlYWRlci50aW1l
c3RhbXAsIDF1bGwgPDwgMzIpOworICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBv
bGRfcGFja2V0LAorICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBuZXdfcGFja2V0
LAorICAgIGNvbnN0IGRvdWJsZSBzYW1wbGVfcmF0ZSkgeworICBpbnQ2NF90IHNlbmRfdGltZV9k
aWZmID0KKyAgICAgIFdyYXBwaW5nRGlmZmVyZW5jZShuZXdfcGFja2V0LnJ0cC5oZWFkZXIudGlt
ZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9wYWNrZXQucnRwLmhlYWRlci50
aW1lc3RhbXAsIDF1bGwgPDwgMzIpOwogICBpbnQ2NF90IHJlY3ZfdGltZV9kaWZmID0gbmV3X3Bh
Y2tldC5sb2dfdGltZV91cygpIC0gb2xkX3BhY2tldC5sb2dfdGltZV91cygpOwogCi0gIGNvbnN0
IGRvdWJsZSBrVmlkZW9TYW1wbGVSYXRlID0gOTAwMDA7Ci0gIC8vIFRPRE8odGVyZWxpdXMpOiBX
ZSB0cmVhdCBhbGwgc3RyZWFtcyBhcyB2aWRlbyBmb3Igbm93LCBldmVuIHRob3VnaAotICAvLyBh
dWRpbyBtaWdodCBiZSBzYW1wbGVkIGF0IGUuZy4gMTZrSHosIGJlY2F1c2UgaXQgaXMgcmVhbGx5
IGRpZmZpY3VsdCB0bwotICAvLyBmaWd1cmUgb3V0IHRoZSB0cnVlIHNhbXBsaW5nIHJhdGUgb2Yg
YSBzdHJlYW0uIFRoZSBlZmZlY3QgaXMgdGhhdCB0aGUKLSAgLy8gZGVsYXkgd2lsbCBiZSBzY2Fs
ZWQgaW5jb3JyZWN0bHkgZm9yIG5vbi12aWRlbyBzdHJlYW1zLgotCiAgIGRvdWJsZSBkZWxheV9j
aGFuZ2UgPQogICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihyZWN2X3RpbWVfZGlmZikgLyAxMDAw
IC0KLSAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oc2VuZF90aW1lX2RpZmYpIC8ga1ZpZGVvU2Ft
cGxlUmF0ZSAqIDEwMDA7CisgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHNlbmRfdGltZV9kaWZm
KSAvIHNhbXBsZV9yYXRlICogMTAwMDsKICAgaWYgKGRlbGF5X2NoYW5nZSA8IC0xMDAwMCB8fCAx
MDAwMCA8IGRlbGF5X2NoYW5nZSkgewogICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlZlcnkg
bGFyZ2UgZGVsYXkgY2hhbmdlLiBUaW1lc3RhbXBzIGNvcnJlY3Q/IjsKLSAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJPbGQgY2FwdHVyZSB0aW1lICIgPDwgb2xkX3BhY2tldC5oZWFkZXIudGlt
ZXN0YW1wCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCByZWNlaXZlZCB0aW1lICIgPDwg
b2xkX3BhY2tldC5sb2dfdGltZV91cygpOwotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIk5l
dyBjYXB0dXJlIHRpbWUgIiA8PCBuZXdfcGFja2V0LmhlYWRlci50aW1lc3RhbXAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICIsIHJlY2VpdmVkIHRpbWUgIiA8PCBuZXdfcGFja2V0LmxvZ190
aW1lX3VzKCk7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiT2xkIGNhcHR1cmUgdGltZSAi
CisgICAgICAgICAgICAgICAgICAgICAgICA8PCBvbGRfcGFja2V0LnJ0cC5oZWFkZXIudGltZXN0
YW1wIDw8ICIsIHJlY2VpdmVkIHRpbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgb2xk
X3BhY2tldC5sb2dfdGltZV91cygpOworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIk5ldyBj
YXB0dXJlIHRpbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgbmV3X3BhY2tldC5ydHAu
aGVhZGVyLnRpbWVzdGFtcCA8PCAiLCByZWNlaXZlZCB0aW1lICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IG5ld19wYWNrZXQubG9nX3RpbWVfdXMoKTsKICAgICBSVENfTE9HKExTX1dBUk5J
TkcpIDw8ICJSZWNlaXZlIHRpbWUgZGlmZmVyZW5jZSAiIDw8IHJlY3ZfdGltZV9kaWZmIDw8ICIg
PSAiCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxkb3VibGU+KHJlY3Zf
dGltZV9kaWZmKSAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga051bU1pY3Jvc2Vj
c1BlclNlYwogICAgICAgICAgICAgICAgICAgICAgICAgPDwgInMiOwogICAgIFJUQ19MT0coTFNf
V0FSTklORykgPDwgIlNlbmQgdGltZSBkaWZmZXJlbmNlICIgPDwgc2VuZF90aW1lX2RpZmYgPDwg
IiA9ICIKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGRvdWJsZT4oc2Vu
ZF90aW1lX2RpZmYpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVmlkZW9TYW1w
bGVSYXRlCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxkb3VibGU+KHNl
bmRfdGltZV9kaWZmKSAvIHNhbXBsZV9yYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
cyI7CiAgIH0KICAgcmV0dXJuIGRlbGF5X2NoYW5nZTsKQEAgLTI3NCw5ICsyNzMsMTAgQEAgdm9p
ZCBBY2N1bXVsYXRlUGFpcnMoCiAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgZGF0YS5zaXplKCk7
IGkrKykgewogICAgIGZsb2F0IHggPSBmeChkYXRhW2ldKTsKICAgICBhYnNsOjpvcHRpb25hbDxS
ZXN1bHRUeXBlPiB5ID0gZnkoZGF0YVtpIC0gMV0sIGRhdGFbaV0pOwotICAgIGlmICh5KQorICAg
IGlmICh5KSB7CiAgICAgICBzdW0gKz0gKnk7Ci0gICAgcmVzdWx0LT5wb2ludHMuZW1wbGFjZV9i
YWNrKHgsIHN0YXRpY19jYXN0PGZsb2F0PihzdW0pKTsKKyAgICAgIHJlc3VsdC0+cG9pbnRzLmVt
cGxhY2VfYmFjayh4LCBzdGF0aWNfY2FzdDxmbG9hdD4oc3VtKSk7CisgICAgfQogICB9CiB9CiAK
QEAgLTQ4NiwxNyArNDg2LDE1IEBAIEV2ZW50TG9nQW5hbHl6ZXI6OkV2ZW50TG9nQW5hbHl6ZXIo
Y29uc3QgUGFyc2VkUnRjRXZlbnRMb2dOZXcmIGxvZywKICAgICAgICAgICAgICAgICAgICA8PCAi
IChMT0dfU1RBUlQsIExPR19FTkQpIHNlZ21lbnRzIGluIGxvZy4iOwogfQogCi1jbGFzcyBCaXRy
YXRlT2JzZXJ2ZXIgOiBwdWJsaWMgTmV0d29ya0NoYW5nZWRPYnNlcnZlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBSZW1vdGVCaXRyYXRlT2JzZXJ2ZXIgeworY2xhc3MgQml0cmF0
ZU9ic2VydmVyIDogcHVibGljIFJlbW90ZUJpdHJhdGVPYnNlcnZlciB7CiAgcHVibGljOgogICBC
aXRyYXRlT2JzZXJ2ZXIoKSA6IGxhc3RfYml0cmF0ZV9icHNfKDApLCBiaXRyYXRlX3VwZGF0ZWRf
KGZhbHNlKSB7fQogCi0gIHZvaWQgT25OZXR3b3JrQ2hhbmdlZCh1aW50MzJfdCBiaXRyYXRlX2Jw
cywKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0X21zLAotICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBwcm9iaW5nX2ludGVydmFsX21zKSBvdmVycmlkZSB7Ci0gICAgbGFzdF9iaXRy
YXRlX2Jwc18gPSBiaXRyYXRlX2JwczsKLSAgICBiaXRyYXRlX3VwZGF0ZWRfID0gdHJ1ZTsKKyAg
dm9pZCBVcGRhdGUoTmV0d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRlKSB7CisgICAgaWYgKHVwZGF0
ZS50YXJnZXRfcmF0ZSkgeworICAgICAgbGFzdF9iaXRyYXRlX2Jwc18gPSB1cGRhdGUudGFyZ2V0
X3JhdGUtPnRhcmdldF9yYXRlLmJwcygpOworICAgICAgYml0cmF0ZV91cGRhdGVkXyA9IHRydWU7
CisgICAgfQogICB9CiAKICAgdm9pZCBPblJlY2VpdmVCaXRyYXRlQ2hhbmdlZChjb25zdCBzdGQ6
OnZlY3Rvcjx1aW50MzJfdD4mIHNzcmNzLApAQCAtNzM3LDcxICs3MzUsNTggQEAgdm9pZCBFdmVu
dExvZ0FuYWx5emVyOjpDcmVhdGVJbmNvbWluZ1BhY2tldExvc3NHcmFwaChQbG90KiBwbG90KSB7
CiAgIHBsb3QtPlNldFRpdGxlKCJFc3RpbWF0ZWQgaW5jb21pbmcgbG9zcyByYXRlIik7CiB9CiAK
LXZvaWQgRXZlbnRMb2dBbmFseXplcjo6Q3JlYXRlSW5jb21pbmdEZWxheURlbHRhR3JhcGgoUGxv
dCogcGxvdCkgewotICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHBhcnNlZF9sb2dfLnJ0cF9w
YWNrZXRzX2J5X3NzcmMoa0luY29taW5nUGFja2V0KSkgewordm9pZCBFdmVudExvZ0FuYWx5emVy
OjpDcmVhdGVJbmNvbWluZ0RlbGF5R3JhcGgoUGxvdCogcGxvdCkgeworICBmb3IgKGNvbnN0IGF1
dG8mIHN0cmVhbSA6IHBhcnNlZF9sb2dfLmluY29taW5nX3J0cF9wYWNrZXRzX2J5X3NzcmMoKSkg
ewogICAgIC8vIEZpbHRlciBvbiBTU1JDLgogICAgIGlmICghTWF0Y2hpbmdTc3JjKHN0cmVhbS5z
c3JjLCBkZXNpcmVkX3NzcmNfKSB8fAotICAgICAgICBJc0F1ZGlvU3NyYyhrSW5jb21pbmdQYWNr
ZXQsIHN0cmVhbS5zc3JjKSB8fAotICAgICAgICAhSXNWaWRlb1NzcmMoa0luY29taW5nUGFja2V0
LCBzdHJlYW0uc3NyYykgfHwKICAgICAgICAgSXNSdHhTc3JjKGtJbmNvbWluZ1BhY2tldCwgc3Ry
ZWFtLnNzcmMpKSB7CiAgICAgICBjb250aW51ZTsKICAgICB9CiAKLSAgICBUaW1lU2VyaWVzIGNh
cHR1cmVfdGltZV9kYXRhKAotICAgICAgICBHZXRTdHJlYW1OYW1lKGtJbmNvbWluZ1BhY2tldCwg
c3RyZWFtLnNzcmMpICsgIiBjYXB0dXJlLXRpbWUiLAotICAgICAgICBMaW5lU3R5bGU6OmtCYXIp
OwotICAgIGF1dG8gVG9DYWxsVGltZSA9IFt0aGlzXShjb25zdCBMb2dnZWRSdHBQYWNrZXQmIHBh
Y2tldCkgewotICAgICAgcmV0dXJuIHRoaXMtPlRvQ2FsbFRpbWVTZWMocGFja2V0LmxvZ190aW1l
X3VzKCkpOwotICAgIH07Ci0gICAgUHJvY2Vzc1BhaXJzPExvZ2dlZFJ0cFBhY2tldCwgZG91Ymxl
PigKLSAgICAgICAgVG9DYWxsVGltZSwgTmV0d29ya0RlbGF5RGlmZl9DYXB0dXJlVGltZSwgc3Ry
ZWFtLnBhY2tldF92aWV3LAotICAgICAgICAmY2FwdHVyZV90aW1lX2RhdGEpOwotICAgIHBsb3Qt
PkFwcGVuZFRpbWVTZXJpZXMoc3RkOjptb3ZlKGNhcHR1cmVfdGltZV9kYXRhKSk7Ci0KLSAgICBU
aW1lU2VyaWVzIHNlbmRfdGltZV9kYXRhKAotICAgICAgICBHZXRTdHJlYW1OYW1lKGtJbmNvbWlu
Z1BhY2tldCwgc3RyZWFtLnNzcmMpICsgIiBhYnMtc2VuZC10aW1lIiwKLSAgICAgICAgTGluZVN0
eWxlOjprQmFyKTsKLSAgICBQcm9jZXNzUGFpcnM8TG9nZ2VkUnRwUGFja2V0LCBkb3VibGU+KFRv
Q2FsbFRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXR3
b3JrRGVsYXlEaWZmX0Fic1NlbmRUaW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtLnBhY2tldF92aWV3LCAmc2VuZF90aW1lX2RhdGEpOwotICAgIHBs
b3QtPkFwcGVuZFRpbWVTZXJpZXMoc3RkOjptb3ZlKHNlbmRfdGltZV9kYXRhKSk7Ci0gIH0KLQot
ICBwbG90LT5TZXRYQXhpcyhUb0NhbGxUaW1lU2VjKGJlZ2luX3RpbWVfKSwgY2FsbF9kdXJhdGlv
bl9zXywgIlRpbWUgKHMpIiwKLSAgICAgICAgICAgICAgICAga0xlZnRNYXJnaW4sIGtSaWdodE1h
cmdpbik7Ci0gIHBsb3QtPlNldFN1Z2dlc3RlZFlBeGlzKDAsIDEsICJMYXRlbmN5IGNoYW5nZSAo
bXMpIiwga0JvdHRvbU1hcmdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAga1RvcE1hcmdp
bik7Ci0gIHBsb3QtPlNldFRpdGxlKCJOZXR3b3JrIGxhdGVuY3kgZGlmZmVyZW5jZSBiZXR3ZWVu
IGNvbnNlY3V0aXZlIHBhY2tldHMiKTsKLX0KLQotdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVh
dGVJbmNvbWluZ0RlbGF5R3JhcGgoUGxvdCogcGxvdCkgewotICBmb3IgKGNvbnN0IGF1dG8mIHN0
cmVhbSA6IHBhcnNlZF9sb2dfLnJ0cF9wYWNrZXRzX2J5X3NzcmMoa0luY29taW5nUGFja2V0KSkg
ewotICAgIC8vIEZpbHRlciBvbiBTU1JDLgotICAgIGlmICghTWF0Y2hpbmdTc3JjKHN0cmVhbS5z
c3JjLCBkZXNpcmVkX3NzcmNfKSB8fAotICAgICAgICBJc0F1ZGlvU3NyYyhrSW5jb21pbmdQYWNr
ZXQsIHN0cmVhbS5zc3JjKSB8fAotICAgICAgICAhSXNWaWRlb1NzcmMoa0luY29taW5nUGFja2V0
LCBzdHJlYW0uc3NyYykgfHwKLSAgICAgICAgSXNSdHhTc3JjKGtJbmNvbWluZ1BhY2tldCwgc3Ry
ZWFtLnNzcmMpKSB7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8TG9nZ2VkUnRwUGFja2V0SW5jb21p
bmc+JiBwYWNrZXRzID0KKyAgICAgICAgc3RyZWFtLmluY29taW5nX3BhY2tldHM7CisgICAgaWYg
KHBhY2tldHMuc2l6ZSgpIDwgMTAwKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJD
YW4ndCBlc3RpbWF0ZSB0aGUgUlRQIGNsb2NrIGZyZXF1ZW5jeSB3aXRoICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgcGFja2V0cy5zaXplKCkgPDwgIiBwYWNrZXRzIGluIHRoZSBzdHJl
YW0uIjsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBpbnQ2NF90IGVuZF90aW1lX3VzID0g
bG9nX3NlZ21lbnRzXy5lbXB0eSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IGxvZ19zZWdtZW50c18uZnJvbnQoKS5zZWNvbmQ7CisgICAgYWJzbDo6b3B0aW9u
YWw8dWludDMyX3Q+IGVzdGltYXRlZF9mcmVxdWVuY3kgPQorICAgICAgICBFc3RpbWF0ZVJ0cENs
b2NrRnJlcXVlbmN5KHBhY2tldHMsIGVuZF90aW1lX3VzKTsKKyAgICBpZiAoIWVzdGltYXRlZF9m
cmVxdWVuY3kpCisgICAgICBjb250aW51ZTsKKyAgICBjb25zdCBkb3VibGUgZnJlcXVlbmN5X2h6
ID0gKmVzdGltYXRlZF9mcmVxdWVuY3k7CisgICAgaWYgKElzVmlkZW9Tc3JjKGtJbmNvbWluZ1Bh
Y2tldCwgc3RyZWFtLnNzcmMpICYmIGZyZXF1ZW5jeV9oeiAhPSA5MDAwMCkgeworICAgICAgUlRD
X0xPRyhMU19XQVJOSU5HKQorICAgICAgICAgIDw8ICJWaWRlbyBzdHJlYW0gc2hvdWxkIHVzZSBh
IDkwIGtIeiBjbG9jayBidXQgYXBwZWFycyB0byB1c2UgIgorICAgICAgICAgIDw8IGZyZXF1ZW5j
eV9oeiAvIDEwMDAgPDwgIi4gRGlzY2FyZGluZy4iOwogICAgICAgY29udGludWU7CiAgICAgfQog
CisgICAgYXV0byBUb0NhbGxUaW1lID0gW3RoaXNdKGNvbnN0IExvZ2dlZFJ0cFBhY2tldEluY29t
aW5nJiBwYWNrZXQpIHsKKyAgICAgIHJldHVybiB0aGlzLT5Ub0NhbGxUaW1lU2VjKHBhY2tldC5s
b2dfdGltZV91cygpKTsKKyAgICB9OworICAgIGF1dG8gVG9OZXR3b3JrRGVsYXkgPSBbZnJlcXVl
bmN5X2h6XSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvZ2dlZFJ0cFBh
Y2tldEluY29taW5nJiBvbGRfcGFja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIG5ld19wYWNrZXQpIHsKKyAgICAgIHJldHVy
biBOZXR3b3JrRGVsYXlEaWZmX0NhcHR1cmVUaW1lKG9sZF9wYWNrZXQsIG5ld19wYWNrZXQsIGZy
ZXF1ZW5jeV9oeik7CisgICAgfTsKKwogICAgIFRpbWVTZXJpZXMgY2FwdHVyZV90aW1lX2RhdGEo
CiAgICAgICAgIEdldFN0cmVhbU5hbWUoa0luY29taW5nUGFja2V0LCBzdHJlYW0uc3NyYykgKyAi
IGNhcHR1cmUtdGltZSIsCiAgICAgICAgIExpbmVTdHlsZTo6a0xpbmUpOwotICAgIGF1dG8gVG9D
YWxsVGltZSA9IFt0aGlzXShjb25zdCBMb2dnZWRSdHBQYWNrZXQmIHBhY2tldCkgewotICAgICAg
cmV0dXJuIHRoaXMtPlRvQ2FsbFRpbWVTZWMocGFja2V0LmxvZ190aW1lX3VzKCkpOwotICAgIH07
Ci0gICAgQWNjdW11bGF0ZVBhaXJzPExvZ2dlZFJ0cFBhY2tldCwgZG91YmxlPigKLSAgICAgICAg
VG9DYWxsVGltZSwgTmV0d29ya0RlbGF5RGlmZl9DYXB0dXJlVGltZSwgc3RyZWFtLnBhY2tldF92
aWV3LAotICAgICAgICAmY2FwdHVyZV90aW1lX2RhdGEpOworICAgIEFjY3VtdWxhdGVQYWlyczxM
b2dnZWRSdHBQYWNrZXRJbmNvbWluZywgZG91YmxlPigKKyAgICAgICAgVG9DYWxsVGltZSwgVG9O
ZXR3b3JrRGVsYXksIHBhY2tldHMsICZjYXB0dXJlX3RpbWVfZGF0YSk7CiAgICAgcGxvdC0+QXBw
ZW5kVGltZVNlcmllcyhzdGQ6Om1vdmUoY2FwdHVyZV90aW1lX2RhdGEpKTsKIAogICAgIFRpbWVT
ZXJpZXMgc2VuZF90aW1lX2RhdGEoCiAgICAgICAgIEdldFN0cmVhbU5hbWUoa0luY29taW5nUGFj
a2V0LCBzdHJlYW0uc3NyYykgKyAiIGFicy1zZW5kLXRpbWUiLAogICAgICAgICBMaW5lU3R5bGU6
OmtMaW5lKTsKLSAgICBBY2N1bXVsYXRlUGFpcnM8TG9nZ2VkUnRwUGFja2V0LCBkb3VibGU+KAot
ICAgICAgICBUb0NhbGxUaW1lLCBOZXR3b3JrRGVsYXlEaWZmX0Fic1NlbmRUaW1lLCBzdHJlYW0u
cGFja2V0X3ZpZXcsCi0gICAgICAgICZzZW5kX3RpbWVfZGF0YSk7Ci0gICAgcGxvdC0+QXBwZW5k
VGltZVNlcmllcyhzdGQ6Om1vdmUoc2VuZF90aW1lX2RhdGEpKTsKKyAgICBBY2N1bXVsYXRlUGFp
cnM8TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcsIGRvdWJsZT4oCisgICAgICAgIFRvQ2FsbFRpbWUs
IE5ldHdvcmtEZWxheURpZmZfQWJzU2VuZFRpbWUsIHBhY2tldHMsICZzZW5kX3RpbWVfZGF0YSk7
CisgICAgcGxvdC0+QXBwZW5kVGltZVNlcmllc0lmTm90RW1wdHkoc3RkOjptb3ZlKHNlbmRfdGlt
ZV9kYXRhKSk7CiAgIH0KIAogICBwbG90LT5TZXRYQXhpcyhUb0NhbGxUaW1lU2VjKGJlZ2luX3Rp
bWVfKSwgY2FsbF9kdXJhdGlvbl9zXywgIlRpbWUgKHMpIiwKQEAgLTEwODEsMTAgKzEwNjYsMTUg
QEAgdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVTZW5kU2lkZUJ3ZVNpbXVsYXRpb25HcmFw
aChQbG90KiBwbG90KSB7CiAgIFJ0Y0V2ZW50TG9nTnVsbEltcGwgbnVsbF9ldmVudF9sb2c7CiAg
IFBhY2tldFJvdXRlciBwYWNrZXRfcm91dGVyOwogICBQYWNlZFNlbmRlciBwYWNlcigmY2xvY2ss
ICZwYWNrZXRfcm91dGVyLCAmbnVsbF9ldmVudF9sb2cpOwotICBTZW5kU2lkZUNvbmdlc3Rpb25D
b250cm9sbGVyIGNjKCZjbG9jaywgJm9ic2VydmVyLCAmbnVsbF9ldmVudF9sb2csICZwYWNlcik7
CisgIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlciB0cmFuc3BvcnRfZmVlZGJhY2soJmNsb2NrKTsK
KyAgYXV0byBmYWN0b3J5ID0gR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KCZudWxsX2V2
ZW50X2xvZyk7CisgIFRpbWVEZWx0YSBwcm9jZXNzX2ludGVydmFsID0gZmFjdG9yeS5HZXRQcm9j
ZXNzSW50ZXJ2YWwoKTsKICAgLy8gVE9ETyhob2xtZXIpOiBMb2cgdGhlIGNhbGwgY29uZmlnIGFu
ZCB1c2UgdGhhdCBoZXJlIGluc3RlYWQuCiAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrRGVmYXVs
dFN0YXJ0Qml0cmF0ZUJwcyA9IDMwMDAwMDsKLSAgY2MuU2V0QndlQml0cmF0ZXMoMCwga0RlZmF1
bHRTdGFydEJpdHJhdGVCcHMsIC0xKTsKKyAgTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY2NfY29u
ZmlnOworICBjY19jb25maWcuY29uc3RyYWludHMuYXRfdGltZSA9IFRpbWVzdGFtcDo6dXMoY2xv
Y2suVGltZUluTWljcm9zZWNvbmRzKCkpOworICBjY19jb25maWcuY29uc3RyYWludHMuc3RhcnRp
bmdfcmF0ZSA9IERhdGFSYXRlOjpicHMoa0RlZmF1bHRTdGFydEJpdHJhdGVCcHMpOworICBhdXRv
IGdvb2dfY2MgPSBmYWN0b3J5LkNyZWF0ZShjY19jb25maWcpOwogCiAgIFRpbWVTZXJpZXMgdGlt
ZV9zZXJpZXMoIkRlbGF5LWJhc2VkIGVzdGltYXRlIiwgTGluZVN0eWxlOjprU3RlcCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBQb2ludFN0eWxlOjprSGlnaGxpZ2h0KTsKQEAgLTExMDcsMTIg
KzEwOTcsMTIgQEAgdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVTZW5kU2lkZUJ3ZVNpbXVs
YXRpb25HcmFwaChQbG90KiBwbG90KSB7CiAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRf
dD4ocnRjcF9pdGVyYXRvci0+bG9nX3RpbWVfdXMoKSk7CiAgICAgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1heCgpOwogICB9OworICBpbnQ2NF90IG5leHRfcHJvY2Vzc190
aW1lX3VzXyA9IGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygpOwogCiAgIGF1dG8gTmV4dFByb2Nl
c3NUaW1lID0gWyZdKCkgewogICAgIGlmIChydGNwX2l0ZXJhdG9yICE9IGluY29taW5nX3J0Y3Au
ZW5kKCkgfHwKICAgICAgICAgcnRwX2l0ZXJhdG9yICE9IG91dGdvaW5nX3J0cC5lbmQoKSkgewot
ICAgICAgcmV0dXJuIGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygpICsKLSAgICAgICAgICAgICBz
dGQ6Om1heDxpbnQ2NF90PihjYy5UaW1lVW50aWxOZXh0UHJvY2VzcygpICogMTAwMCwgMCk7Cisg
ICAgICByZXR1cm4gbmV4dF9wcm9jZXNzX3RpbWVfdXNfOwogICAgIH0KICAgICByZXR1cm4gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7CiAgIH07CkBAIC0xMTI5LDI0ICsxMTE5
LDMyIEBAIHZvaWQgRXZlbnRMb2dBbmFseXplcjo6Q3JlYXRlU2VuZFNpZGVCd2VTaW11bGF0aW9u
R3JhcGgoUGxvdCogcGxvdCkgewogICBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yIGFja25v
d2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcigKICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEJpdHJh
dGVFc3RpbWF0b3I+KCkpOwogI2VuZGlmICAvLyAhKEJXRV9URVNUX0xPR0dJTkdfQ09NUElMRV9U
SU1FX0VOQUJMRSkKLSAgaW50NjRfdCB0aW1lX3VzID0gc3RkOjptaW4oTmV4dFJ0cFRpbWUoKSwg
TmV4dFJ0Y3BUaW1lKCkpOworICBpbnQ2NF90IHRpbWVfdXMgPQorICAgICAgc3RkOjptaW4oe05l
eHRSdHBUaW1lKCksIE5leHRSdGNwVGltZSgpLCBOZXh0UHJvY2Vzc1RpbWUoKX0pOwogICBpbnQ2
NF90IGxhc3RfdXBkYXRlX3VzID0gMDsKICAgd2hpbGUgKHRpbWVfdXMgIT0gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpIHsKICAgICBjbG9jay5BZHZhbmNlVGltZU1pY3Jvc2Vj
b25kcyh0aW1lX3VzIC0gY2xvY2suVGltZUluTWljcm9zZWNvbmRzKCkpOwogICAgIGlmIChjbG9j
ay5UaW1lSW5NaWNyb3NlY29uZHMoKSA+PSBOZXh0UnRjcFRpbWUoKSkgewogICAgICAgUlRDX0RD
SEVDS19FUShjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSwgTmV4dFJ0Y3BUaW1lKCkpOwotICAg
ICAgY2MuT25UcmFuc3BvcnRGZWVkYmFjayhydGNwX2l0ZXJhdG9yLT50cmFuc3BvcnRfZmVlZGJh
Y2spOwotICAgICAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IGZlZWRiYWNrID0gY2MuR2V0
VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKTsKLSAgICAgIFNvcnRQYWNrZXRGZWVkYmFja1ZlY3Rv
cigmZmVlZGJhY2spOworCisgICAgICBhdXRvIGZlZWRiYWNrX21zZyA9IHRyYW5zcG9ydF9mZWVk
YmFjay5Qcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2soCisgICAgICAgICAgcnRjcF9pdGVyYXRvci0+
dHJhbnNwb3J0X2ZlZWRiYWNrKTsKICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBiaXRy
YXRlX2JwczsKLSAgICAgIGlmICghZmVlZGJhY2suZW1wdHkoKSkgeworICAgICAgaWYgKGZlZWRi
YWNrX21zZykgeworICAgICAgICBvYnNlcnZlci5VcGRhdGUoZ29vZ19jYy0+T25UcmFuc3BvcnRQ
YWNrZXRzRmVlZGJhY2soKmZlZWRiYWNrX21zZykpOworICAgICAgICBzdGQ6OnZlY3RvcjxQYWNr
ZXRGZWVkYmFjaz4gZmVlZGJhY2sgPQorICAgICAgICAgICAgdHJhbnNwb3J0X2ZlZWRiYWNrLkdl
dFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCk7CisgICAgICAgIFNvcnRQYWNrZXRGZWVkYmFja1Zl
Y3RvcigmZmVlZGJhY2spOworICAgICAgICBpZiAoIWZlZWRiYWNrLmVtcHR5KCkpIHsKICNpZiAh
KEJXRV9URVNUX0xPR0dJTkdfQ09NUElMRV9USU1FX0VOQUJMRSkKLSAgICAgICAgYWNrbm93bGVk
Z2VkX2JpdHJhdGVfZXN0aW1hdG9yLkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoZmVlZGJh
Y2spOworICAgICAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5JbmNvbWluZ1Bh
Y2tldEZlZWRiYWNrVmVjdG9yKGZlZWRiYWNrKTsKICNlbmRpZiAgLy8gIShCV0VfVEVTVF9MT0dH
SU5HX0NPTVBJTEVfVElNRV9FTkFCTEUpCi0gICAgICAgIGZvciAoY29uc3QgUGFja2V0RmVlZGJh
Y2smIHBhY2tldCA6IGZlZWRiYWNrKQotICAgICAgICAgIGFja2VkX2JpdHJhdGUuVXBkYXRlKHBh
Y2tldC5wYXlsb2FkX3NpemUsIHBhY2tldC5hcnJpdmFsX3RpbWVfbXMpOwotICAgICAgICBiaXRy
YXRlX2JwcyA9IGFja2VkX2JpdHJhdGUuUmF0ZShmZWVkYmFjay5iYWNrKCkuYXJyaXZhbF90aW1l
X21zKTsKKyAgICAgICAgICBmb3IgKGNvbnN0IFBhY2tldEZlZWRiYWNrJiBwYWNrZXQgOiBmZWVk
YmFjaykKKyAgICAgICAgICAgIGFja2VkX2JpdHJhdGUuVXBkYXRlKHBhY2tldC5wYXlsb2FkX3Np
emUsIHBhY2tldC5hcnJpdmFsX3RpbWVfbXMpOworICAgICAgICAgIGJpdHJhdGVfYnBzID0gYWNr
ZWRfYml0cmF0ZS5SYXRlKGZlZWRiYWNrLmJhY2soKS5hcnJpdmFsX3RpbWVfbXMpOworICAgICAg
ICB9CiAgICAgICB9CisKICAgICAgIGZsb2F0IHggPSBUb0NhbGxUaW1lU2VjKGNsb2NrLlRpbWVJ
bk1pY3Jvc2Vjb25kcygpKTsKICAgICAgIGZsb2F0IHkgPSBiaXRyYXRlX2Jwcy52YWx1ZV9vcigw
KSAvIDEwMDA7CiAgICAgICBhY2tlZF90aW1lX3Nlcmllcy5wb2ludHMuZW1wbGFjZV9iYWNrKHgs
IHkpOwpAQCAtMTE2MSwxOSArMTE1OSwyNSBAQCB2b2lkIEV2ZW50TG9nQW5hbHl6ZXI6OkNyZWF0
ZVNlbmRTaWRlQndlU2ltdWxhdGlvbkdyYXBoKFBsb3QqIHBsb3QpIHsKICAgICAgIGNvbnN0IFJ0
cFBhY2tldFR5cGUmIHJ0cF9wYWNrZXQgPSAqcnRwX2l0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICBp
ZiAocnRwX3BhY2tldC5ydHAuaGVhZGVyLmV4dGVuc2lvbi5oYXNUcmFuc3BvcnRTZXF1ZW5jZU51
bWJlcikgewogICAgICAgICBSVENfRENIRUNLKHJ0cF9wYWNrZXQucnRwLmhlYWRlci5leHRlbnNp
b24uaGFzVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpOwotICAgICAgICBjYy5BZGRQYWNrZXQocnRw
X3BhY2tldC5ydHAuaGVhZGVyLnNzcmMsCi0gICAgICAgICAgICAgICAgICAgICBydHBfcGFja2V0
LnJ0cC5oZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyLAotICAgICAgICAg
ICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAudG90YWxfbGVuZ3RoLCBQYWNlZFBhY2tldEluZm8o
KSk7CisgICAgICAgIHRyYW5zcG9ydF9mZWVkYmFjay5BZGRQYWNrZXQoCisgICAgICAgICAgICBy
dHBfcGFja2V0LnJ0cC5oZWFkZXIuc3NyYywKKyAgICAgICAgICAgIHJ0cF9wYWNrZXQucnRwLmhl
YWRlci5leHRlbnNpb24udHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIsCisgICAgICAgICAgICBydHBf
cGFja2V0LnJ0cC50b3RhbF9sZW5ndGgsIFBhY2VkUGFja2V0SW5mbygpKTsKICAgICAgICAgcnRj
OjpTZW50UGFja2V0IHNlbnRfcGFja2V0KAogICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAuaGVh
ZGVyLmV4dGVuc2lvbi50cmFuc3BvcnRTZXF1ZW5jZU51bWJlciwKICAgICAgICAgICAgIHJ0cF9w
YWNrZXQucnRwLmxvZ190aW1lX3VzKCkgLyAxMDAwKTsKLSAgICAgICAgY2MuT25TZW50UGFja2V0
KHNlbnRfcGFja2V0KTsKKyAgICAgICAgYXV0byBzZW50X21zZyA9IHRyYW5zcG9ydF9mZWVkYmFj
ay5Qcm9jZXNzU2VudFBhY2tldChzZW50X3BhY2tldCk7CisgICAgICAgIGlmIChzZW50X21zZykK
KyAgICAgICAgICBvYnNlcnZlci5VcGRhdGUoZ29vZ19jYy0+T25TZW50UGFja2V0KCpzZW50X21z
ZykpOwogICAgICAgfQogICAgICAgKytydHBfaXRlcmF0b3I7CiAgICAgfQogICAgIGlmIChjbG9j
ay5UaW1lSW5NaWNyb3NlY29uZHMoKSA+PSBOZXh0UHJvY2Vzc1RpbWUoKSkgewogICAgICAgUlRD
X0RDSEVDS19FUShjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSwgTmV4dFByb2Nlc3NUaW1lKCkp
OwotICAgICAgY2MuUHJvY2VzcygpOworICAgICAgUHJvY2Vzc0ludGVydmFsIG1zZzsKKyAgICAg
IG1zZy5hdF90aW1lID0gVGltZXN0YW1wOjp1cyhjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSk7
CisgICAgICBvYnNlcnZlci5VcGRhdGUoZ29vZ19jYy0+T25Qcm9jZXNzSW50ZXJ2YWwobXNnKSk7
CisgICAgICBuZXh0X3Byb2Nlc3NfdGltZV91c18gKz0gcHJvY2Vzc19pbnRlcnZhbC51cygpOwog
ICAgIH0KICAgICBpZiAob2JzZXJ2ZXIuR2V0QW5kUmVzZXRCaXRyYXRlVXBkYXRlZCgpIHx8CiAg
ICAgICAgIHRpbWVfdXMgLSBsYXN0X3VwZGF0ZV91cyA+PSAxZTYpIHsKQEAgLTEyNzcsOSArMTI4
MSwxMCBAQCB2b2lkIEV2ZW50TG9nQW5hbHl6ZXI6OkNyZWF0ZVJlY2VpdmVTaWRlQndlU2ltdWxh
dGlvbkdyYXBoKFBsb3QqIHBsb3QpIHsKIHZvaWQgRXZlbnRMb2dBbmFseXplcjo6Q3JlYXRlTmV0
d29ya0RlbGF5RmVlZGJhY2tHcmFwaChQbG90KiBwbG90KSB7CiAgIFRpbWVTZXJpZXMgbGF0ZV9m
ZWVkYmFja19zZXJpZXMoIkxhdGUgZmVlZGJhY2sgcmVzdWx0cy4iLCBMaW5lU3R5bGU6OmtOb25l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50U3R5bGU6OmtIaWdobGln
aHQpOwotICBUaW1lU2VyaWVzIHRpbWVfc2VyaWVzKCJOZXR3b3JrIERlbGF5IENoYW5nZSIsIExp
bmVTdHlsZTo6a0xpbmUsCisgIFRpbWVTZXJpZXMgdGltZV9zZXJpZXMoIk5ldHdvcmsgZGVsYXki
LCBMaW5lU3R5bGU6OmtMaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50U3R5bGU6
OmtIaWdobGlnaHQpOwotICBpbnQ2NF90IGVzdGltYXRlZF9iYXNlX2RlbGF5X21zID0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7CisgIGludDY0X3QgbWluX3NlbmRfcmVjZWl2
ZV9kaWZmX21zID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7CisgIGludDY0
X3QgbWluX3J0dF9tcyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOwogCiAg
IGludDY0X3QgcHJldl95ID0gMDsKICAgZm9yIChhdXRvIHBhY2tldCA6IEdldE5ldHdvcmtUcmFj
ZShwYXJzZWRfbG9nXykpIHsKQEAgLTEyOTIsMTYgKzEyOTcsMjIgQEAgdm9pZCBFdmVudExvZ0Fu
YWx5emVyOjpDcmVhdGVOZXR3b3JrRGVsYXlGZWVkYmFja0dyYXBoKFBsb3QqIHBsb3QpIHsKICAg
ICB9CiAgICAgaW50NjRfdCB5ID0gcGFja2V0LmFycml2YWxfdGltZV9tcyAtIHBhY2tldC5zZW5k
X3RpbWVfbXM7CiAgICAgcHJldl95ID0geTsKLSAgICBlc3RpbWF0ZWRfYmFzZV9kZWxheV9tcyA9
IHN0ZDo6bWluKHksIGVzdGltYXRlZF9iYXNlX2RlbGF5X21zKTsKKyAgICBpbnQ2NF90IHJ0dF9t
cyA9IHBhY2tldC5mZWVkYmFja19hcnJpdmFsX3RpbWVfbXMgLSBwYWNrZXQuc2VuZF90aW1lX21z
OworICAgIG1pbl9ydHRfbXMgPSBzdGQ6Om1pbihydHRfbXMsIG1pbl9ydHRfbXMpOworICAgIG1p
bl9zZW5kX3JlY2VpdmVfZGlmZl9tcyA9IHN0ZDo6bWluKHksIG1pbl9zZW5kX3JlY2VpdmVfZGlm
Zl9tcyk7CiAgICAgdGltZV9zZXJpZXMucG9pbnRzLmVtcGxhY2VfYmFjayh4LCB5KTsKICAgfQog
Ci0gIC8vIFdlIGFzc3VtZSB0aGF0IHRoZSBiYXNlIG5ldHdvcmsgZGVsYXkgKHcvbyBxdWV1ZXMp
IGlzIHRoZSBtaW4gZGVsYXkKLSAgLy8gb2JzZXJ2ZWQgZHVyaW5nIHRoZSBjYWxsLgorICAvLyBX
ZSBhc3N1bWUgdGhhdCB0aGUgYmFzZSBuZXR3b3JrIGRlbGF5ICh3L28gcXVldWVzKSBpcyBlcXVh
bCB0byBoYWxmCisgIC8vIHRoZSBtaW5pbXVtIFJUVC4gVGhlcmVmb3JlIHJlc2NhbGUgdGhlIGRl
bGF5cyBieSBzdWJ0cmFjdGluZyB0aGUgbWluaW11bQorICAvLyBvYnNlcnZlZCAxLXdheXMgZGVs
YXkgYW5kIGFkZCBoYWxmIHRoZSBtaW51bXVtIFJUVC4KKyAgY29uc3QgaW50NjRfdCBlc3RpbWF0
ZWRfY2xvY2tfb2Zmc2V0X21zID0KKyAgICAgIG1pbl9zZW5kX3JlY2VpdmVfZGlmZl9tcyAtIG1p
bl9ydHRfbXMgLyAyOwogICBmb3IgKFRpbWVTZXJpZXNQb2ludCYgcG9pbnQgOiB0aW1lX3Nlcmll
cy5wb2ludHMpCi0gICAgcG9pbnQueSAtPSBlc3RpbWF0ZWRfYmFzZV9kZWxheV9tczsKKyAgICBw
b2ludC55IC09IGVzdGltYXRlZF9jbG9ja19vZmZzZXRfbXM7CiAgIGZvciAoVGltZVNlcmllc1Bv
aW50JiBwb2ludCA6IGxhdGVfZmVlZGJhY2tfc2VyaWVzLnBvaW50cykKLSAgICBwb2ludC55IC09
IGVzdGltYXRlZF9iYXNlX2RlbGF5X21zOworICAgIHBvaW50LnkgLT0gZXN0aW1hdGVkX2Nsb2Nr
X29mZnNldF9tczsKKwogICAvLyBBZGQgdGhlIGRhdGEgc2V0IHRvIHRoZSBwbG90LgogICBwbG90
LT5BcHBlbmRUaW1lU2VyaWVzSWZOb3RFbXB0eShzdGQ6Om1vdmUodGltZV9zZXJpZXMpKTsKICAg
cGxvdC0+QXBwZW5kVGltZVNlcmllc0lmTm90RW1wdHkoc3RkOjptb3ZlKGxhdGVfZmVlZGJhY2tf
c2VyaWVzKSk7CkBAIC0xMzA5LDcgKzEzMjAsNyBAQCB2b2lkIEV2ZW50TG9nQW5hbHl6ZXI6OkNy
ZWF0ZU5ldHdvcmtEZWxheUZlZWRiYWNrR3JhcGgoUGxvdCogcGxvdCkgewogICBwbG90LT5TZXRY
QXhpcyhUb0NhbGxUaW1lU2VjKGJlZ2luX3RpbWVfKSwgY2FsbF9kdXJhdGlvbl9zXywgIlRpbWUg
KHMpIiwKICAgICAgICAgICAgICAgICAga0xlZnRNYXJnaW4sIGtSaWdodE1hcmdpbik7CiAgIHBs
b3QtPlNldFN1Z2dlc3RlZFlBeGlzKDAsIDEwLCAiRGVsYXkgKG1zKSIsIGtCb3R0b21NYXJnaW4s
IGtUb3BNYXJnaW4pOwotICBwbG90LT5TZXRUaXRsZSgiTmV0d29yayBEZWxheSBDaGFuZ2UuIik7
CisgIHBsb3QtPlNldFRpdGxlKCJOZXR3b3JrIGRlbGF5IChiYXNlZCBvbiBwZXItcGFja2V0IGZl
ZWRiYWNrKSIpOwogfQogCiB2b2lkIEV2ZW50TG9nQW5hbHl6ZXI6OkNyZWF0ZVBhY2VyRGVsYXlH
cmFwaChQbG90KiBwbG90KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZXZlbnRfbG9nX3Zpc3VhbGl6ZXIvYW5hbHl6ZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9l
dmVudF9sb2dfdmlzdWFsaXplci9hbmFseXplci5oCmluZGV4IDRiOGMyN2M5NTE3ZDBjYmNjMDQw
MWQ0OGFiMTE4Y2MyM2Q5MDEyOGEuLmM2NjA2YzJiMWYxNmIxMjJkMzViMmUxZmQ2ZjNjZWQzZWJm
OWU2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9hbmFseXplci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9sb2df
dmlzdWFsaXplci9hbmFseXplci5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEV2ZW50TG9nQW5h
bHl6ZXIgewogCiAgIHZvaWQgQ3JlYXRlSW5jb21pbmdQYWNrZXRMb3NzR3JhcGgoUGxvdCogcGxv
dCk7CiAKLSAgdm9pZCBDcmVhdGVJbmNvbWluZ0RlbGF5RGVsdGFHcmFwaChQbG90KiBwbG90KTsK
ICAgdm9pZCBDcmVhdGVJbmNvbWluZ0RlbGF5R3JhcGgoUGxvdCogcGxvdCk7CiAKICAgdm9pZCBD
cmVhdGVGcmFjdGlvbkxvc3NHcmFwaChQbG90KiBwbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9sb2dfdmlz
dWFsaXplci9tYWluLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX3Rvb2xzL2V2ZW50X2xvZ192aXN1YWxpemVyL21haW4uY2MKaW5kZXggMGMzNjg5YzFi
Y2FlM2EwZmRkMDAzODYyYjFkOGRmZjQ0ZGFiMmVlMS4uMGI0ZTc2MTdlNjA2OGQ3NTZmMzkwZjRi
ZTJjNzRjYzkxZWJjYTYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2V2ZW50X2xvZ192aXN1YWxpemVyL21haW4uY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2V2
ZW50X2xvZ192aXN1YWxpemVyL21haW4uY2MKQEAgLTIwLDE1MSArMjAsMTY5IEBACiAjaW5jbHVk
ZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0
aWxzLmgiCiAKLURFRklORV9zdHJpbmcocGxvdF9wcm9maWxlLAotICAgICAgICAgICAgICAiZGVm
YXVsdCIsCi0gICAgICAgICAgICAgICJBIHByb2ZpbGUgdGhhdCBzZWxlY3RzIGEgY2VydGFpbiBz
dWJzZXQgb2YgdGhlIHBsb3RzLiBDdXJyZW50bHkgIgotICAgICAgICAgICAgICAiZGVmaW5lZCBw
cm9maWxlcyBhcmUgXCJhbGxcIiwgXCJub25lXCIsIFwic2VuZHNpZGVfYndlXCIsIgotICAgICAg
ICAgICAgICAiXCJyZWNlaXZlc2lkZV9id2VcIiBhbmQgXCJkZWZhdWx0XCIiKTsKK1dFQlJUQ19E
RUZJTkVfc3RyaW5nKAorICAgIHBsb3RfcHJvZmlsZSwKKyAgICAiZGVmYXVsdCIsCisgICAgIkEg
cHJvZmlsZSB0aGF0IHNlbGVjdHMgYSBjZXJ0YWluIHN1YnNldCBvZiB0aGUgcGxvdHMuIEN1cnJl
bnRseSAiCisgICAgImRlZmluZWQgcHJvZmlsZXMgYXJlIFwiYWxsXCIsIFwibm9uZVwiLCBcInNl
bmRzaWRlX2J3ZVwiLCIKKyAgICAiXCJyZWNlaXZlc2lkZV9id2VcIiBhbmQgXCJkZWZhdWx0XCIi
KTsKIAotREVGSU5FX2Jvb2wocGxvdF9pbmNvbWluZ19wYWNrZXRfc2l6ZXMsCi0gICAgICAgICAg
ICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IGJhciBncmFwaCBzaG93aW5nIHRoZSBzaXplIG9m
IGVhY2ggaW5jb21pbmcgcGFja2V0LiIpOwotREVGSU5FX2Jvb2wocGxvdF9vdXRnb2luZ19wYWNr
ZXRfc2l6ZXMsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IGJhciBncmFw
aCBzaG93aW5nIHRoZSBzaXplIG9mIGVhY2ggb3V0Z29pbmcgcGFja2V0LiIpOwotREVGSU5FX2Jv
b2wocGxvdF9pbmNvbWluZ19wYWNrZXRfY291bnQsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAg
ICAgICAgICJQbG90IHRoZSBhY2N1bXVsYXRlZCBudW1iZXIgb2YgcGFja2V0cyBmb3IgZWFjaCBp
bmNvbWluZyBzdHJlYW0uIik7Ci1ERUZJTkVfYm9vbChwbG90X291dGdvaW5nX3BhY2tldF9jb3Vu
dCwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBsb3QgdGhlIGFjY3VtdWxhdGVk
IG51bWJlciBvZiBwYWNrZXRzIGZvciBlYWNoIG91dGdvaW5nIHN0cmVhbS4iKTsKLURFRklORV9i
b29sKHBsb3RfYXVkaW9fcGxheW91dCwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAg
IlBsb3QgYmFyIGdyYXBoIHNob3dpbmcgdGhlIHRpbWUgYmV0d2VlbiBlYWNoIGF1ZGlvIHBsYXlv
dXQuIik7Ci1ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2xldmVsLAotICAgICAgICAgICAgZmFsc2Us
Ci0gICAgICAgICAgICAiUGxvdCBsaW5lIGdyYXBoIHNob3dpbmcgdGhlIGF1ZGlvIGxldmVsIG9m
IGluY29taW5nIGF1ZGlvLiIpOwotREVGSU5FX2Jvb2wocGxvdF9pbmNvbWluZ19zZXF1ZW5jZV9u
dW1iZXJfZGVsdGEsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IHRoZSBz
ZXF1ZW5jZSBudW1iZXIgZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbnNlY3V0aXZlIGluY29taW5nICIK
LSAgICAgICAgICAgICJwYWNrZXRzLiIpOwotREVGSU5FX2Jvb2woCi0gICAgcGxvdF9pbmNvbWlu
Z19kZWxheV9kZWx0YSwKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X2luY29taW5nX3BhY2tldF9z
aXplcywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUGxv
dCBiYXIgZ3JhcGggc2hvd2luZyB0aGUgc2l6ZSBvZiBlYWNoIGluY29taW5nIHBhY2tldC4iKTsK
K1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X291dGdvaW5nX3BhY2tldF9zaXplcywKKyAgICAgICAg
ICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUGxvdCBiYXIgZ3JhcGggc2hv
d2luZyB0aGUgc2l6ZSBvZiBlYWNoIG91dGdvaW5nIHBhY2tldC4iKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbCgKKyAgICBwbG90X2luY29taW5nX3BhY2tldF9jb3VudCwKICAgICBmYWxzZSwKLSAgICAi
UGxvdCB0aGUgZGlmZmVyZW5jZSBpbiAxLXdheSBwYXRoIGRlbGF5IGJldHdlZW4gY29uc2VjdXRp
dmUgcGFja2V0cy4iKTsKLURFRklORV9ib29sKHBsb3RfaW5jb21pbmdfZGVsYXksCi0gICAgICAg
ICAgICB0cnVlLAotICAgICAgICAgICAgIlBsb3QgdGhlIDEtd2F5IHBhdGggZGVsYXkgZm9yIGlu
Y29taW5nIHBhY2tldHMsIG5vcm1hbGl6ZWQgc28gIgotICAgICAgICAgICAgInRoYXQgdGhlIGZp
cnN0IHBhY2tldCBoYXMgZGVsYXkgMC4iKTsKLURFRklORV9ib29sKHBsb3RfaW5jb21pbmdfbG9z
c19yYXRlLAotICAgICAgICAgICAgdHJ1ZSwKLSAgICAgICAgICAgICJDb21wdXRlIHRoZSBsb3Nz
IHJhdGUgZm9yIGluY29taW5nIHBhY2tldHMgdXNpbmcgYSBtZXRob2QgdGhhdCdzICIKLSAgICAg
ICAgICAgICJzaW1pbGFyIHRvIHRoZSBvbmUgdXNlZCBmb3IgUlRDUCBTUiBhbmQgUlIgZnJhY3Rp
b24gbG9zdC4gTm90ZSAiCi0gICAgICAgICAgICAidGhhdCB0aGUgbG9zcyByYXRlIGNhbiBiZSBu
ZWdhdGl2ZSBpZiBwYWNrZXRzIGFyZSBkdXBsaWNhdGVkIG9yICIKLSAgICAgICAgICAgICJyZW9y
ZGVyZWQuIik7Ci1ERUZJTkVfYm9vbChwbG90X2luY29taW5nX2JpdHJhdGUsCi0gICAgICAgICAg
ICB0cnVlLAotICAgICAgICAgICAgIlBsb3QgdGhlIHRvdGFsIGJpdHJhdGUgdXNlZCBieSBhbGwg
aW5jb21pbmcgc3RyZWFtcy4iKTsKLURFRklORV9ib29sKHBsb3Rfb3V0Z29pbmdfYml0cmF0ZSwK
LSAgICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAiUGxvdCB0aGUgdG90YWwgYml0cmF0ZSB1
c2VkIGJ5IGFsbCBvdXRnb2luZyBzdHJlYW1zLiIpOwotREVGSU5FX2Jvb2wocGxvdF9pbmNvbWlu
Z19zdHJlYW1fYml0cmF0ZSwKLSAgICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAiUGxvdCB0
aGUgYml0cmF0ZSB1c2VkIGJ5IGVhY2ggaW5jb21pbmcgc3RyZWFtLiIpOwotREVGSU5FX2Jvb2wo
cGxvdF9vdXRnb2luZ19zdHJlYW1fYml0cmF0ZSwKLSAgICAgICAgICAgIHRydWUsCi0gICAgICAg
ICAgICAiUGxvdCB0aGUgYml0cmF0ZSB1c2VkIGJ5IGVhY2ggb3V0Z29pbmcgc3RyZWFtLiIpOwot
REVGSU5FX2Jvb2wocGxvdF9zaW11bGF0ZWRfcmVjZWl2ZXNpZGVfYndlLAotICAgICAgICAgICAg
ZmFsc2UsCi0gICAgICAgICAgICAiUnVuIHRoZSByZWNlaXZlLXNpZGUgYmFuZHdpZHRoIGVzdGlt
YXRvciB3aXRoIHRoZSBpbmNvbWluZyBydHAgIgotICAgICAgICAgICAgInBhY2tldHMgYW5kIHBs
b3QgdGhlIHJlc3VsdGluZyBlc3RpbWF0ZS4iKTsKLURFRklORV9ib29sKHBsb3Rfc2ltdWxhdGVk
X3NlbmRzaWRlX2J3ZSwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlJ1biB0aGUg
c2VuZC1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0b3Igd2l0aCB0aGUgb3V0Z29pbmcgcnRwIGFuZCAi
Ci0gICAgICAgICAgICAiaW5jb21pbmcgcnRjcCBhbmQgcGxvdCB0aGUgcmVzdWx0aW5nIGVzdGlt
YXRlLiIpOwotREVGSU5FX2Jvb2wocGxvdF9uZXR3b3JrX2RlbGF5X2ZlZWRiYWNrLAotICAgICAg
ICAgICAgdHJ1ZSwKLSAgICAgICAgICAgICJDb21wdXRlIG5ldHdvcmsgZGVsYXkgYmFzZWQgb24g
c2VudCBwYWNrZXRzIGFuZCB0aGUgcmVjZWl2ZWQgIgotICAgICAgICAgICAgInRyYW5zcG9ydCBm
ZWVkYmFjay4iKTsKLURFRklORV9ib29sKHBsb3RfZnJhY3Rpb25fbG9zc19mZWVkYmFjaywKLSAg
ICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAiUGxvdCBwYWNrZXQgbG9zcyBpbiBwZXJjZW50
IGZvciBvdXRnb2luZyBwYWNrZXRzIChhcyBwZXJjZWl2ZWQgYnkgIgotICAgICAgICAgICAgInRo
ZSBzZW5kLXNpZGUgYmFuZHdpZHRoIGVzdGltYXRvcikuIik7Ci1ERUZJTkVfYm9vbChwbG90X3Bh
Y2VyX2RlbGF5LAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUGxvdCB0aGUgdGlt
ZSBlYWNoIHNlbnQgcGFja2V0IGhhcyBzcGVudCBpbiB0aGUgcGFjZXIgKGJhc2VkIG9uICIKLSAg
ICAgICAgICAgICJ0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBSVFAgdGltZXN0YW1wIGFuZCB0
aGUgc2VuZCAiCi0gICAgICAgICAgICAidGltZXN0YW1wKS4iKTsKLURFRklORV9ib29sKHBsb3Rf
dGltZXN0YW1wcywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBsb3QgdGhlIHJ0
cCB0aW1lc3RhbXBzIG9mIGFsbCBydHAgYW5kIHJ0Y3AgcGFja2V0cyBvdmVyIHRpbWUuIik7Ci1E
RUZJTkVfYm9vbChwbG90X3J0Y3BfZGV0YWlscywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAg
ICAgICAgIlBsb3QgdGhlIGNvbnRlbnRzIG9mIGFsbCByZXBvcnQgYmxvY2tzIGluIGFsbCBzZW5k
ZXIgYW5kIHJlY2VpdmVyICIKLSAgICAgICAgICAgICJyZXBvcnRzLiBUaGlzIGluY2x1ZGVzIGZy
YWN0aW9uIGxvc3QsIGN1bXVsYXRpdmUgbnVtYmVyIG9mIGxvc3QgIgotICAgICAgICAgICAgInBh
Y2tldHMsIGV4dGVuZGVkIGhpZ2hlc3Qgc2VxdWVuY2UgbnVtYmVyIGFuZCB0aW1lIHNpbmNlIGxh
c3QgIgotICAgICAgICAgICAgInJlY2VpdmVkIFNSLiIpOwotREVGSU5FX2Jvb2wocGxvdF9hdWRp
b19lbmNvZGVyX2JpdHJhdGVfYnBzLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAi
UGxvdCB0aGUgYXVkaW8gZW5jb2RlciB0YXJnZXQgYml0cmF0ZS4iKTsKLURFRklORV9ib29sKHBs
b3RfYXVkaW9fZW5jb2Rlcl9mcmFtZV9sZW5ndGhfbXMsCi0gICAgICAgICAgICBmYWxzZSwKLSAg
ICAgICAgICAgICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIGZyYW1lIGxlbmd0aC4iKTsKLURFRklO
RV9ib29sKAorICAgICJQbG90IHRoZSBhY2N1bXVsYXRlZCBudW1iZXIgb2YgcGFja2V0cyBmb3Ig
ZWFjaCBpbmNvbWluZyBzdHJlYW0uIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF9v
dXRnb2luZ19wYWNrZXRfY291bnQsCisgICAgZmFsc2UsCisgICAgIlBsb3QgdGhlIGFjY3VtdWxh
dGVkIG51bWJlciBvZiBwYWNrZXRzIGZvciBlYWNoIG91dGdvaW5nIHN0cmVhbS4iKTsKK1dFQlJU
Q19ERUZJTkVfYm9vbCgKKyAgICBwbG90X2F1ZGlvX3BsYXlvdXQsCisgICAgZmFsc2UsCisgICAg
IlBsb3QgYmFyIGdyYXBoIHNob3dpbmcgdGhlIHRpbWUgYmV0d2VlbiBlYWNoIGF1ZGlvIHBsYXlv
dXQuIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF9hdWRpb19sZXZlbCwKKyAgICBm
YWxzZSwKKyAgICAiUGxvdCBsaW5lIGdyYXBoIHNob3dpbmcgdGhlIGF1ZGlvIGxldmVsIG9mIGlu
Y29taW5nIGF1ZGlvLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHBsb3RfaW5jb21pbmdf
c2VxdWVuY2VfbnVtYmVyX2RlbHRhLAorICAgIGZhbHNlLAorICAgICJQbG90IHRoZSBzZXF1ZW5j
ZSBudW1iZXIgZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbnNlY3V0aXZlIGluY29taW5nICIKKyAgICAi
cGFja2V0cy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBwbG90X2luY29taW5nX2RlbGF5
LAorICAgIHRydWUsCisgICAgIlBsb3QgdGhlIDEtd2F5IHBhdGggZGVsYXkgZm9yIGluY29taW5n
IHBhY2tldHMsIG5vcm1hbGl6ZWQgc28gIgorICAgICJ0aGF0IHRoZSBmaXJzdCBwYWNrZXQgaGFz
IGRlbGF5IDAuIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF9pbmNvbWluZ19sb3Nz
X3JhdGUsCisgICAgdHJ1ZSwKKyAgICAiQ29tcHV0ZSB0aGUgbG9zcyByYXRlIGZvciBpbmNvbWlu
ZyBwYWNrZXRzIHVzaW5nIGEgbWV0aG9kIHRoYXQncyAiCisgICAgInNpbWlsYXIgdG8gdGhlIG9u
ZSB1c2VkIGZvciBSVENQIFNSIGFuZCBSUiBmcmFjdGlvbiBsb3N0LiBOb3RlICIKKyAgICAidGhh
dCB0aGUgbG9zcyByYXRlIGNhbiBiZSBuZWdhdGl2ZSBpZiBwYWNrZXRzIGFyZSBkdXBsaWNhdGVk
IG9yICIKKyAgICAicmVvcmRlcmVkLiIpOworV0VCUlRDX0RFRklORV9ib29sKHBsb3RfaW5jb21p
bmdfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAg
ICJQbG90IHRoZSB0b3RhbCBiaXRyYXRlIHVzZWQgYnkgYWxsIGluY29taW5nIHN0cmVhbXMuIik7
CitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9vdXRnb2luZ19iaXRyYXRlLAorICAgICAgICAgICAg
ICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgIlBsb3QgdGhlIHRvdGFsIGJpdHJhdGUg
dXNlZCBieSBhbGwgb3V0Z29pbmcgc3RyZWFtcy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90
X2luY29taW5nX3N0cmVhbV9iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAg
ICAgICAgICAgICAgICAgIlBsb3QgdGhlIGJpdHJhdGUgdXNlZCBieSBlYWNoIGluY29taW5nIHN0
cmVhbS4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X291dGdvaW5nX3N0cmVhbV9iaXRyYXRl
LAorICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgIlBsb3QgdGhl
IGJpdHJhdGUgdXNlZCBieSBlYWNoIG91dGdvaW5nIHN0cmVhbS4iKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbCgKKyAgICBwbG90X3NpbXVsYXRlZF9yZWNlaXZlc2lkZV9id2UsCisgICAgZmFsc2UsCisg
ICAgIlJ1biB0aGUgcmVjZWl2ZS1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0b3Igd2l0aCB0aGUgaW5j
b21pbmcgcnRwICIKKyAgICAicGFja2V0cyBhbmQgcGxvdCB0aGUgcmVzdWx0aW5nIGVzdGltYXRl
LiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHBsb3Rfc2ltdWxhdGVkX3NlbmRzaWRlX2J3
ZSwKKyAgICBmYWxzZSwKKyAgICAiUnVuIHRoZSBzZW5kLXNpZGUgYmFuZHdpZHRoIGVzdGltYXRv
ciB3aXRoIHRoZSBvdXRnb2luZyBydHAgYW5kICIKKyAgICAiaW5jb21pbmcgcnRjcCBhbmQgcGxv
dCB0aGUgcmVzdWx0aW5nIGVzdGltYXRlLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHBs
b3RfbmV0d29ya19kZWxheV9mZWVkYmFjaywKKyAgICB0cnVlLAorICAgICJDb21wdXRlIG5ldHdv
cmsgZGVsYXkgYmFzZWQgb24gc2VudCBwYWNrZXRzIGFuZCB0aGUgcmVjZWl2ZWQgIgorICAgICJ0
cmFuc3BvcnQgZmVlZGJhY2suIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF9mcmFj
dGlvbl9sb3NzX2ZlZWRiYWNrLAorICAgIHRydWUsCisgICAgIlBsb3QgcGFja2V0IGxvc3MgaW4g
cGVyY2VudCBmb3Igb3V0Z29pbmcgcGFja2V0cyAoYXMgcGVyY2VpdmVkIGJ5ICIKKyAgICAidGhl
IHNlbmQtc2lkZSBiYW5kd2lkdGggZXN0aW1hdG9yKS4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgK
KyAgICBwbG90X3BhY2VyX2RlbGF5LAorICAgIGZhbHNlLAorICAgICJQbG90IHRoZSB0aW1lIGVh
Y2ggc2VudCBwYWNrZXQgaGFzIHNwZW50IGluIHRoZSBwYWNlciAoYmFzZWQgb24gIgorICAgICJ0
aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBSVFAgdGltZXN0YW1wIGFuZCB0aGUgc2VuZCAiCisg
ICAgInRpbWVzdGFtcCkuIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF90aW1lc3Rh
bXBzLAorICAgIGZhbHNlLAorICAgICJQbG90IHRoZSBydHAgdGltZXN0YW1wcyBvZiBhbGwgcnRw
IGFuZCBydGNwIHBhY2tldHMgb3ZlciB0aW1lLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAg
IHBsb3RfcnRjcF9kZXRhaWxzLAorICAgIGZhbHNlLAorICAgICJQbG90IHRoZSBjb250ZW50cyBv
ZiBhbGwgcmVwb3J0IGJsb2NrcyBpbiBhbGwgc2VuZGVyIGFuZCByZWNlaXZlciAiCisgICAgInJl
cG9ydHMuIFRoaXMgaW5jbHVkZXMgZnJhY3Rpb24gbG9zdCwgY3VtdWxhdGl2ZSBudW1iZXIgb2Yg
bG9zdCAiCisgICAgInBhY2tldHMsIGV4dGVuZGVkIGhpZ2hlc3Qgc2VxdWVuY2UgbnVtYmVyIGFu
ZCB0aW1lIHNpbmNlIGxhc3QgIgorICAgICJyZWNlaXZlZCBTUi4iKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbChwbG90X2F1ZGlvX2VuY29kZXJfYml0cmF0ZV9icHMsCisgICAgICAgICAgICAgICAgICAg
ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlBsb3QgdGhlIGF1ZGlvIGVuY29kZXIgdGFyZ2V0
IGJpdHJhdGUuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9hdWRpb19lbmNvZGVyX2ZyYW1l
X2xlbmd0aF9tcywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAiUGxvdCB0aGUgYXVkaW8gZW5jb2RlciBmcmFtZSBsZW5ndGguIik7CitXRUJSVENfREVGSU5F
X2Jvb2woCiAgICAgcGxvdF9hdWRpb19lbmNvZGVyX3BhY2tldF9sb3NzLAogICAgIGZhbHNlLAog
ICAgICJQbG90IHRoZSB1cGxpbmsgcGFja2V0IGxvc3MgZnJhY3Rpb24gd2hpY2ggaXMgc2VudCB0
byB0aGUgYXVkaW8gZW5jb2Rlci4iKTsKLURFRklORV9ib29sKHBsb3RfYXVkaW9fZW5jb2Rlcl9m
ZWMsIGZhbHNlLCAiUGxvdCB0aGUgYXVkaW8gZW5jb2RlciBGRUMuIik7Ci1ERUZJTkVfYm9vbChw
bG90X2F1ZGlvX2VuY29kZXJfZHR4LCBmYWxzZSwgIlBsb3QgdGhlIGF1ZGlvIGVuY29kZXIgRFRY
LiIpOwotREVGSU5FX2Jvb2wocGxvdF9hdWRpb19lbmNvZGVyX251bV9jaGFubmVscywKLSAgICAg
ICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBsb3QgdGhlIGF1ZGlvIGVuY29kZXIgbnVtYmVy
IG9mIGNoYW5uZWxzLiIpOwotREVGSU5FX2Jvb2wocGxvdF9uZXRlcV9zdGF0cywgZmFsc2UsICJQ
bG90IHRoZSBOZXRFcSBzdGF0aXN0aWNzLiIpOwotREVGSU5FX2Jvb2wocGxvdF9pY2VfY2FuZGlk
YXRlX3BhaXJfY29uZmlnLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUGxvdCB0
aGUgSUNFIGNhbmRpZGF0ZSBwYWlyIGNvbmZpZyBldmVudHMuIik7Ci1ERUZJTkVfYm9vbChwbG90
X2ljZV9jb25uZWN0aXZpdHlfY2hlY2ssCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAg
ICJQbG90IHRoZSBJQ0UgY2FuZGlkYXRlIHBhaXIgY29ubmVjdGl2aXR5IGNoZWNrcy4iKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2VuY29kZXJfZmVjLAorICAgICAgICAgICAgICAg
ICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIEZF
Qy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2VuY29kZXJfZHR4LAorICAgICAg
ICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJQbG90IHRoZSBhdWRpbyBl
bmNvZGVyIERUWC4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2VuY29kZXJfbnVt
X2NoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAg
ICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIG51bWJlciBvZiBjaGFubmVscy4iKTsKK1dFQlJUQ19E
RUZJTkVfYm9vbChwbG90X25ldGVxX3N0YXRzLCBmYWxzZSwgIlBsb3QgdGhlIE5ldEVxIHN0YXRp
c3RpY3MuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9pY2VfY2FuZGlkYXRlX3BhaXJfY29u
ZmlnLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJQbG90
IHRoZSBJQ0UgY2FuZGlkYXRlIHBhaXIgY29uZmlnIGV2ZW50cy4iKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbChwbG90X2ljZV9jb25uZWN0aXZpdHlfY2hlY2ssCisgICAgICAgICAgICAgICAgICAgZmFs
c2UsCisgICAgICAgICAgICAgICAgICAgIlBsb3QgdGhlIElDRSBjYW5kaWRhdGUgcGFpciBjb25u
ZWN0aXZpdHkgY2hlY2tzLiIpOwogCi1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9zdHJp
bmcoCiAgICAgZm9yY2VfZmllbGR0cmlhbHMsCiAgICAgIiIsCiAgICAgIkZpZWxkIHRyaWFscyBj
b250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgog
ICAgICJFLmcuIHJ1bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0
dXJlL0VuYWJsZWQvIgogICAgICIgd2lsbCBhc3NpZ24gdGhlIGdyb3VwIEVuYWJsZWQgdG8gZmll
bGQgdHJpYWwgV2ViUlRDLUZvb0ZlYXR1cmUuIE11bHRpcGxlICIKICAgICAidHJpYWxzIGFyZSBz
ZXBhcmF0ZWQgYnkgXCIvXCIiKTsKLURFRklORV9zdHJpbmcod2F2X2ZpbGVuYW1lLAotICAgICAg
ICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIlBhdGggdG8gd2F2IGZpbGUgdXNlZCBmb3Igc2lt
dWxhdGlvbiBvZiBqaXR0ZXIgYnVmZmVyIik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgInBy
aW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHdhdl9maWxlbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIlBhdGggdG8g
d2F2IGZpbGUgdXNlZCBmb3Igc2ltdWxhdGlvbiBvZiBqaXR0ZXIgYnVmZmVyIik7CitXRUJSVENf
REVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CiAKLURFRklO
RV9ib29sKHNob3dfZGV0ZWN0b3Jfc3RhdGUsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAg
ICAgICJTaG93IHRoZSBzdGF0ZSBvZiB0aGUgZGVsYXkgYmFzZWQgQldFIGRldGVjdG9yIG9uIHRo
ZSB0b3RhbCAiCi0gICAgICAgICAgICAiYml0cmF0ZSBncmFwaCIpOworV0VCUlRDX0RFRklORV9i
b29sKAorICAgIHNob3dfZGV0ZWN0b3Jfc3RhdGUsCisgICAgZmFsc2UsCisgICAgIlNob3cgdGhl
IHN0YXRlIG9mIHRoZSBkZWxheSBiYXNlZCBCV0UgZGV0ZWN0b3Igb24gdGhlIHRvdGFsICIKKyAg
ICAiYml0cmF0ZSBncmFwaCIpOwogCi1ERUZJTkVfYm9vbChzaG93X2Fscl9zdGF0ZSwKLSAgICAg
ICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlNob3cgdGhlIHN0YXRlIEFMUiBzdGF0ZSBvbiB0
aGUgdG90YWwgYml0cmF0ZSBncmFwaCIpOworV0VCUlRDX0RFRklORV9ib29sKHNob3dfYWxyX3N0
YXRlLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJTaG93
IHRoZSBzdGF0ZSBBTFIgc3RhdGUgb24gdGhlIHRvdGFsIGJpdHJhdGUgZ3JhcGgiKTsKIAotREVG
SU5FX2Jvb2wocGFyc2VfdW5jb25maWd1cmVkX2hlYWRlcl9leHRlbnNpb25zLAotICAgICAgICAg
ICAgdHJ1ZSwKLSAgICAgICAgICAgICJBdHRlbXB0IHRvIHBhcnNlIHVuY29uZmlndXJlZCBoZWFk
ZXIgZXh0ZW5zaW9ucyB1c2luZyB0aGUgZGVmYXVsdCAiCi0gICAgICAgICAgICAiV2ViUlRDIG1h
cHBpbmcuIFRoaXMgY2FuIGdpdmUgdmVyeSBtaXNsZWFkaW5nIHJlc3VsdHMgaWYgdGhlICIKLSAg
ICAgICAgICAgICJhcHBsaWNhdGlvbiBuZWdvdGlhdGVzIGEgZGlmZmVyZW50IG1hcHBpbmcuIik7
CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGFyc2VfdW5jb25maWd1cmVkX2hlYWRlcl9leHRl
bnNpb25zLAorICAgIHRydWUsCisgICAgIkF0dGVtcHQgdG8gcGFyc2UgdW5jb25maWd1cmVkIGhl
YWRlciBleHRlbnNpb25zIHVzaW5nIHRoZSBkZWZhdWx0ICIKKyAgICAiV2ViUlRDIG1hcHBpbmcu
IFRoaXMgY2FuIGdpdmUgdmVyeSBtaXNsZWFkaW5nIHJlc3VsdHMgaWYgdGhlICIKKyAgICAiYXBw
bGljYXRpb24gbmVnb3RpYXRlcyBhIGRpZmZlcmVudCBtYXBwaW5nLiIpOwogCi1ERUZJTkVfYm9v
bChwcmludF90cmlhZ2VfYWxlcnRzLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAi
UHJpbnQgdHJpYWdlIGFsZXJ0cywgaS5lLiBhIGxpc3Qgb2YgcG90ZW50aWFsIHByb2JsZW1zLiIp
OworV0VCUlRDX0RFRklORV9ib29sKHByaW50X3RyaWFnZV9hbGVydHMsCisgICAgICAgICAgICAg
ICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlByaW50IHRyaWFnZSBhbGVydHMsIGku
ZS4gYSBsaXN0IG9mIHBvdGVudGlhbCBwcm9ibGVtcy4iKTsKIAotREVGSU5FX2Jvb2wobm9ybWFs
aXplX3RpbWUsCi0gICAgICAgICAgICB0cnVlLAotICAgICAgICAgICAgIk5vcm1hbGl6ZSB0aGUg
bG9nIHRpbWVzdGFtcHMgc28gdGhhdCB0aGUgY2FsbCBzdGFydHMgYXQgdGltZSAwLiIpOworV0VC
UlRDX0RFRklORV9ib29sKAorICAgIG5vcm1hbGl6ZV90aW1lLAorICAgIHRydWUsCisgICAgIk5v
cm1hbGl6ZSB0aGUgbG9nIHRpbWVzdGFtcHMgc28gdGhhdCB0aGUgY2FsbCBzdGFydHMgYXQgdGlt
ZSAwLiIpOwogCi1ERUZJTkVfYm9vbChwcm90b2J1Zl9vdXRwdXQsCi0gICAgICAgICAgICBmYWxz
ZSwKLSAgICAgICAgICAgICJPdXRwdXQgY2hhcnRzIGFzIHByb3RvYnVmIGluc3RlYWQgb2YgcHl0
aG9uIGNvZGUuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocHJvdG9idWZfb3V0cHV0LAorICAgICAg
ICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJPdXRwdXQgY2hhcnRzIGFz
IHByb3RvYnVmIGluc3RlYWQgb2YgcHl0aG9uIGNvZGUuIik7CiAKIHZvaWQgU2V0QWxsUGxvdEZs
YWdzKGJvb2wgc2V0dGluZyk7CiAKQEAgLTE5NCw3ICsyMTIsNiBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhciogYXJndltdKSB7CiAgIH0gZWxzZSBpZiAoc3RyY21wKEZMQUdfcGxvdF9wcm9maWxl
LCAicmVjZWl2ZXNpZGVfYndlIikgPT0gMCkgewogICAgIFNldEFsbFBsb3RGbGFncyhmYWxzZSk7
CiAgICAgRkxBR19wbG90X2luY29taW5nX3BhY2tldF9zaXplcyA9IHRydWU7Ci0gICAgRkxBR19w
bG90X2luY29taW5nX2RlbGF5X2RlbHRhID0gdHJ1ZTsKICAgICBGTEFHX3Bsb3RfaW5jb21pbmdf
ZGVsYXkgPSB0cnVlOwogICAgIEZMQUdfcGxvdF9pbmNvbWluZ19sb3NzX3JhdGUgPSB0cnVlOwog
ICAgIEZMQUdfcGxvdF9pbmNvbWluZ19iaXRyYXRlID0gdHJ1ZTsKQEAgLTIxOCw3ICsyMzUsNiBA
QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgcmV0dXJuIDA7CiAgIH0K
IAotICB3ZWJydGM6OnRlc3Q6OlNldEV4ZWN1dGFibGVQYXRoKGFyZ3ZbMF0pOwogICB3ZWJydGM6
OnRlc3Q6OlZhbGlkYXRlRmllbGRUcmlhbHNTdHJpbmdPckRpZShGTEFHX2ZvcmNlX2ZpZWxkdHJp
YWxzKTsKICAgLy8gSW5pdEZpZWxkVHJpYWxzRnJvbVN0cmluZyBzdG9yZXMgdGhlIGNoYXIqLCBz
byB0aGUgY2hhciBhcnJheSBtdXN0IG91dGxpdmUKICAgLy8gdGhlIGFwcGxpY2F0aW9uLgpAQCAt
MjM2LDkgKzI1Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKIAogICBp
ZiAoIXBhcnNlZF9sb2cuUGFyc2VGaWxlKGZpbGVuYW1lKSkgewogICAgIHN0ZDo6Y2VyciA8PCAi
Q291bGQgbm90IHBhcnNlIHRoZSBlbnRpcmUgbG9nIGZpbGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAg
c3RkOjpjZXJyIDw8ICJQcm9jZWVkaW5nIHRvIGFuYWx5emUgdGhlIGZpcnN0ICIKLSAgICAgICAg
ICAgICAgPDwgcGFyc2VkX2xvZy5HZXROdW1iZXJPZkV2ZW50cygpIDw8ICIgZXZlbnRzIGluIHRo
ZSBmaWxlLiIKLSAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgIHN0ZDo6Y2VyciA8PCAi
T25seSB0aGUgcGFyc2FibGUgZXZlbnRzIHdpbGwgYmUgYW5hbHl6ZWQuIiA8PCBzdGQ6OmVuZGw7
CiAgIH0KIAogICB3ZWJydGM6OkV2ZW50TG9nQW5hbHl6ZXIgYW5hbHl6ZXIocGFyc2VkX2xvZywg
RkxBR19ub3JtYWxpemVfdGltZSk7CkBAIC0yNzcsOSArMjkxLDYgQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkgewogICBpZiAoRkxBR19wbG90X2luY29taW5nX3NlcXVlbmNlX251
bWJlcl9kZWx0YSkgewogICAgIGFuYWx5emVyLkNyZWF0ZVNlcXVlbmNlTnVtYmVyR3JhcGgoY29s
bGVjdGlvbi0+QXBwZW5kTmV3UGxvdCgpKTsKICAgfQotICBpZiAoRkxBR19wbG90X2luY29taW5n
X2RlbGF5X2RlbHRhKSB7Ci0gICAgYW5hbHl6ZXIuQ3JlYXRlSW5jb21pbmdEZWxheURlbHRhR3Jh
cGgoY29sbGVjdGlvbi0+QXBwZW5kTmV3UGxvdCgpKTsKLSAgfQogICBpZiAoRkxBR19wbG90X2lu
Y29taW5nX2RlbGF5KSB7CiAgICAgYW5hbHl6ZXIuQ3JlYXRlSW5jb21pbmdEZWxheUdyYXBoKGNv
bGxlY3Rpb24tPkFwcGVuZE5ld1Bsb3QoKSk7CiAgIH0KQEAgLTQ2Niw3ICs0NzcsNiBAQCB2b2lk
IFNldEFsbFBsb3RGbGFncyhib29sIHNldHRpbmcpIHsKICAgRkxBR19wbG90X2F1ZGlvX3BsYXlv
dXQgPSBzZXR0aW5nOwogICBGTEFHX3Bsb3RfYXVkaW9fbGV2ZWwgPSBzZXR0aW5nOwogICBGTEFH
X3Bsb3RfaW5jb21pbmdfc2VxdWVuY2VfbnVtYmVyX2RlbHRhID0gc2V0dGluZzsKLSAgRkxBR19w
bG90X2luY29taW5nX2RlbGF5X2RlbHRhID0gc2V0dGluZzsKICAgRkxBR19wbG90X2luY29taW5n
X2RlbGF5ID0gc2V0dGluZzsKICAgRkxBR19wbG90X2luY29taW5nX2xvc3NfcmF0ZSA9IHNldHRp
bmc7CiAgIEZMQUdfcGxvdF9pbmNvbWluZ19iaXRyYXRlID0gc2V0dGluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mb3Jj
ZV9taWNfdm9sdW1lX21heC9mb3JjZV9taWNfdm9sdW1lX21heC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mb3JjZV9taWNfdm9sdW1lX21h
eC9mb3JjZV9taWNfdm9sdW1lX21heC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MmNkMWIzNmQ5MDQ3Yjg5Y2U5NTlhNjhiZmM2NTliMWVmOTRmZGIwNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZm9yY2VfbWljX3ZvbHVtZV9tYXgvZm9yY2VfbWlj
X3ZvbHVtZV9tYXguY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogIENv
cHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0g
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCi0gKi8KLQotLy8gVGhpcyB1dGlsaXR5IHdpbGwgcG9ydGFibHkgZm9yY2UgdGhlIHZv
bHVtZSBvZiB0aGUgZGVmYXVsdCBtaWNyb3Bob25lIHRvIG1heC4KLQotI2luY2x1ZGUgPHN0ZGlv
Lmg+Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2Rldmlj
ZS5oIgotCi11c2luZyB3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlOwotCi0jaWYgZGVmaW5lZChf
V0lOMzIpCi0jZGVmaW5lIERFRkFVTFRfSU5QVVRfREVWSUNFIChBdWRpb0RldmljZU1vZHVsZTo6
a0RlZmF1bHRDb21tdW5pY2F0aW9uRGV2aWNlKQotI2Vsc2UKLSNkZWZpbmUgREVGQVVMVF9JTlBV
VF9ERVZJQ0UgKDApCi0jZW5kaWYKLQotaW50IG1haW4oaW50IC8qYXJnYyovLCBjaGFyKiAvKmFy
Z3YqLyBbXSkgewotICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIEFETS4KLSAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBhZG0oCi0gICAgICBBdWRpb0RldmljZU1v
ZHVsZTo6Q3JlYXRlKEF1ZGlvRGV2aWNlTW9kdWxlOjprUGxhdGZvcm1EZWZhdWx0QXVkaW8pKTsK
LSAgaWYgKCFhZG0uZ2V0KCkpIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjcmVh
dGUgQXVkaW8gRGV2aWNlIE1vZHVsZS5cbiIpOwotICAgIHJldHVybiAxOwotICB9Ci0gIGlmIChh
ZG0tPkluaXQoKSAhPSAwKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gaW5pdGlh
bGl6ZSBBdWRpbyBEZXZpY2UgTW9kdWxlLlxuIik7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLSAgaWYg
KGFkbS0+U2V0UmVjb3JkaW5nRGV2aWNlKERFRkFVTFRfSU5QVVRfREVWSUNFKSAhPSAwKSB7Ci0g
ICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gc2V0IHRoZSBkZWZhdWx0IGlucHV0IGRldmlj
ZS5cbiIpOwotICAgIHJldHVybiAxOwotICB9Ci0gIGlmIChhZG0tPkluaXRNaWNyb3Bob25lKCkg
IT0gMCkgewotICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHRvIGluaXRpYWxpemUgdGhl
IG1pY3JvcGhvbmUuXG4iKTsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0gIC8vIFNldCBtaWMgdm9s
dW1lIHRvIG1heC4KLSAgdWludDMyX3QgbWF4X3ZvbCA9IDA7Ci0gIGlmIChhZG0tPk1heE1pY3Jv
cGhvbmVWb2x1bWUoJm1heF92b2wpICE9IDApIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl
ZCB0byBnZXQgbWF4IHZvbHVtZS5cbiIpOwotICAgIHJldHVybiAxOwotICB9Ci0gIGlmIChhZG0t
PlNldE1pY3JvcGhvbmVWb2x1bWUobWF4X3ZvbCkgIT0gMCkgewotICAgIGZwcmludGYoc3RkZXJy
LCAiRmFpbGVkIHRvIHNldCBtaWMgdm9sdW1lLlxuIik7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQot
ICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci9mcmFtZV9hbmFseXplci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFt
ZV9hbmFseXplci9mcmFtZV9hbmFseXplci5jYwppbmRleCA4OTQ0MGVhOTg0NWEyNWVmMTU4OTg4
MTFkYjY3ZDMwMWFmZmJjYWYxLi5mYjVmOGRlMjI3YWZiYzIyOTQ5ZDA1ZGRlZjRlMGFlYWNhMDQ5
MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvZnJhbWVfYW5hbHl6ZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5
emVyL2ZyYW1lX2FuYWx5emVyLmNjCkBAIC0xNSw3ICsxNSwxMCBAQAogI2luY2x1ZGUgPHN0cmlu
Zz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmlu
Z19idWlsZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKKyNpbmNsdWRl
ICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5oIgorI2luY2x1
ZGUgInJ0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19nZW9tZXRyeV9hbGlnbmVyLmgiCiAj
aW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMu
aCIKICNpbmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fdGVtcG9yYWxfYWxp
Z25lci5oIgogI2luY2x1ZGUgInJ0Y190b29scy9zaW1wbGVfY29tbWFuZF9saW5lX3BhcnNlci5o
IgpAQCAtMTMzLDggKzEzNiwzNSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7
CiAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4gbWF0Y2hpbmdfaW5kaWNlcyA9CiAgICAgICB3
ZWJydGM6OnRlc3Q6OkZpbmRNYXRjaGluZ0ZyYW1lSW5kaWNlcyhyZWZlcmVuY2VfdmlkZW8sIHRl
c3RfdmlkZW8pOwogCi0gIHJlc3VsdHMuZnJhbWVzID0KLSAgICAgIHdlYnJ0Yzo6dGVzdDo6UnVu
QW5hbHlzaXMocmVmZXJlbmNlX3ZpZGVvLCB0ZXN0X3ZpZGVvLCBtYXRjaGluZ19pbmRpY2VzKTsK
KyAgLy8gQWxpZ24gdGhlIHJlZmVyZW5jZSB2aWRlbyBib3RoIHRlbXBvcmFsbHkgYW5kIGdlb21l
dHJpY2FsbHkuIEkuZS4gYWxpZ24gdGhlCisgIC8vIGZyYW1lcyB0byBtYXRjaCB1cCBpbiBvcmRl
ciB0byB0aGUgdGVzdCB2aWRlbywgYW5kIGFsaWduIGEgY3JvcCByZWdpb24gb2YKKyAgLy8gdGhl
IHJlZmVyZW5jZSB2aWRlbyB0byBtYXRjaCB1cCB0byB0aGUgdGVzdCB2aWRlby4KKyAgY29uc3Qg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6dGVzdDo6VmlkZW8+IGFsaWduZWRfcmVmZXJlbmNl
X3ZpZGVvID0KKyAgICAgIEFkanVzdENyb3BwaW5nKFJlb3JkZXJWaWRlbyhyZWZlcmVuY2Vfdmlk
ZW8sIG1hdGNoaW5nX2luZGljZXMpLAorICAgICAgICAgICAgICAgICAgICAgdGVzdF92aWRlbyk7
CisKKyAgLy8gQ2FsY3VsYXRlIGlmIHRoZXJlIGlzIGFueSBzeXN0ZW1hdGljIGNvbG9yIGRpZmZl
cmVuY2UgYmV0d2VlbiB0aGUgcmVmZXJlbmNlCisgIC8vIGFuZCB0ZXN0IHZpZGVvLgorICBjb25z
dCB3ZWJydGM6OnRlc3Q6OkNvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggY29sb3JfdHJhbnNmb3Jt
YXRpb24gPQorICAgICAgQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeChhbGlnbmVk
X3JlZmVyZW5jZV92aWRlbywgdGVzdF92aWRlbyk7CisKKyAgY2hhciBidWZbMjU2XTsKKyAgcnRj
OjpTaW1wbGVTdHJpbmdCdWlsZGVyIHN0cmluZ19idWlsZGVyKGJ1Zik7CisgIGZvciAoaW50IGkg
PSAwOyBpIDwgMzsgKytpKSB7CisgICAgc3RyaW5nX2J1aWxkZXIgPDwgIlxuIjsKKyAgICBmb3Ig
KGludCBqID0gMDsgaiA8IDQ7ICsraikKKyAgICAgIHN0cmluZ19idWlsZGVyLkFwcGVuZEZvcm1h
dCgiJTYuMmYgIiwgY29sb3JfdHJhbnNmb3JtYXRpb25baV1bal0pOworICB9CisgIHByaW50Zigi
QWRqdXN0aW5nIHRlc3QgdmlkZW8gd2l0aCBjb2xvciB0cmFuc2Zvcm1hdGlvbjogJXNcbiIsCisg
ICAgICAgICBzdHJpbmdfYnVpbGRlci5zdHIoKSk7CisKKyAgLy8gQWRqdXN0IGFsbCBmcmFtZXMg
aW4gdGhlIHRlc3QgdmlkZW8gd2l0aCB0aGUgY2FsY3VsYXRlZCBjb2xvcgorICAvLyB0cmFuc2Zv
cm1hdGlvbi4KKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6dGVzdDo6VmlkZW8+
IGNvbG9yX2FkanVzdGVkX3Rlc3RfdmlkZW8gPQorICAgICAgQWRqdXN0Q29sb3JzKGNvbG9yX3Ry
YW5zZm9ybWF0aW9uLCB0ZXN0X3ZpZGVvKTsKKworICByZXN1bHRzLmZyYW1lcyA9IHdlYnJ0Yzo6
dGVzdDo6UnVuQW5hbHlzaXMoCisgICAgICBhbGlnbmVkX3JlZmVyZW5jZV92aWRlbywgY29sb3Jf
YWRqdXN0ZWRfdGVzdF92aWRlbywgbWF0Y2hpbmdfaW5kaWNlcyk7CiAKICAgY29uc3Qgc3RkOjp2
ZWN0b3I8d2VicnRjOjp0ZXN0OjpDbHVzdGVyPiBjbHVzdGVycyA9CiAgICAgICB3ZWJydGM6OnRl
c3Q6OkNhbGN1bGF0ZUZyYW1lQ2x1c3RlcnMobWF0Y2hpbmdfaW5kaWNlcyk7CkBAIC0xNTEsMjAg
KzE4MSwxNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgIGlmICghY2hh
cnRqc29uX3Jlc3VsdF9maWxlLmVtcHR5KCkpIHsKICAgICB3ZWJydGM6OnRlc3Q6OldyaXRlUGVy
ZlJlc3VsdHMoY2hhcnRqc29uX3Jlc3VsdF9maWxlKTsKICAgfQotICBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjp0ZXN0OjpWaWRlbz4gcmVvcmRlcmVkX3ZpZGVvID0KLSAgICAgIHdlYnJ0Yzo6
dGVzdDo6R2VuZXJhdGVBbGlnbmVkUmVmZXJlbmNlVmlkZW8ocmVmZXJlbmNlX3ZpZGVvLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ19p
bmRpY2VzKTsKICAgc3RkOjpzdHJpbmcgYWxpZ25lZF9vdXRwdXRfZmlsZSA9IHBhcnNlci5HZXRG
bGFnKCJhbGlnbmVkX291dHB1dF9maWxlIik7CiAgIGlmICghYWxpZ25lZF9vdXRwdXRfZmlsZS5l
bXB0eSgpKSB7Ci0gICAgd2VicnRjOjp0ZXN0OjpXcml0ZVZpZGVvVG9GaWxlKHJlb3JkZXJlZF92
aWRlbywgYWxpZ25lZF9vdXRwdXRfZmlsZSwKKyAgICB3ZWJydGM6OnRlc3Q6OldyaXRlVmlkZW9U
b0ZpbGUoYWxpZ25lZF9yZWZlcmVuY2VfdmlkZW8sIGFsaWduZWRfb3V0cHV0X2ZpbGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZnBzPSovMzApOwogICB9CiAgIHN0ZDo6
c3RyaW5nIHl1dl9kaXJlY3RvcnkgPSBwYXJzZXIuR2V0RmxhZygieXV2X2RpcmVjdG9yeSIpOwog
ICBpZiAoIXl1dl9kaXJlY3RvcnkuZW1wdHkoKSkgewotICAgIHdlYnJ0Yzo6dGVzdDo6V3JpdGVW
aWRlb1RvRmlsZShyZW9yZGVyZWRfdmlkZW8sCisgICAgd2VicnRjOjp0ZXN0OjpXcml0ZVZpZGVv
VG9GaWxlKGFsaWduZWRfcmVmZXJlbmNlX3ZpZGVvLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBKb2luRmlsZW5hbWUoeXV2X2RpcmVjdG9yeSwgInJlZi55dXYiKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmcHM9Ki8zMCk7Ci0gICAgd2VicnRjOjp0
ZXN0OjpXcml0ZVZpZGVvVG9GaWxlKHRlc3RfdmlkZW8sCisgICAgd2VicnRjOjp0ZXN0OjpXcml0
ZVZpZGVvVG9GaWxlKGNvbG9yX2FkanVzdGVkX3Rlc3RfdmlkZW8sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEpvaW5GaWxlbmFtZSh5dXZfZGlyZWN0b3J5LCAidGVzdC55dXYi
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmcHM9Ki8zMCk7CiAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y190b29scy9mcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJlcy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXpl
ci9saW5lYXJfbGVhc3Rfc3F1YXJlcy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDZkMjEyZDE3NGFiZTlkNzZj
ZTIwMDM5YTBiYTgzZTNmZTg0MmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVh
cl9sZWFzdF9zcXVhcmVzLmNjCkBAIC0wLDAgKzEsMjAwIEBACisvKgorICogIENvcHlyaWdodCAo
YykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2luY2x1ZGUgInJ0Y190b29scy9mcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1
YXJlcy5oIgorCisjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgor
CituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKwordGVtcGxhdGUgPGNsYXNz
IFQ+Cit1c2luZyBNYXRyaXggPSBzdGQ6OnZhbGFycmF5PHN0ZDo6dmFsYXJyYXk8VD4+OworCitu
YW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVD4KK1IgRG90UHJv
ZHVjdChjb25zdCBzdGQ6OnZhbGFycmF5PFQ+JiBhLCBjb25zdCBzdGQ6OnZhbGFycmF5PFQ+JiBi
KSB7CisgIFJUQ19DSEVDS19FUShhLnNpemUoKSwgYi5zaXplKCkpOworICByZXR1cm4gc3RkOjpp
bm5lcl9wcm9kdWN0KHN0ZDo6YmVnaW4oYSksIHN0ZDo6ZW5kKGEpLCBzdGQ6OmJlZ2luKGIpLCBS
KDApKTsKK30KKworLy8gQ2FsY3VsYXRlcyBhXlQgKiBiLgordGVtcGxhdGUgPHR5cGVuYW1lIFIs
IHR5cGVuYW1lIFQ+CitNYXRyaXg8Uj4gTWF0cml4TXVsdGlwbHkoY29uc3QgTWF0cml4PFQ+JiBh
LCBjb25zdCBNYXRyaXg8VD4mIGIpIHsKKyAgTWF0cml4PFI+IHJlc3VsdChzdGQ6OnZhbGFycmF5
PFI+KGEuc2l6ZSgpKSwgYi5zaXplKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGEuc2l6
ZSgpOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGIuc2l6ZSgpOyArK2opCisg
ICAgICByZXN1bHRbal1baV0gPSBEb3RQcm9kdWN0PFI+KGFbaV0sIGJbal0pOworICB9CisKKyAg
cmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitNYXRyaXg8VD4gVHJh
bnNwb3NlKGNvbnN0IE1hdHJpeDxUPiYgbWF0cml4KSB7CisgIGlmIChtYXRyaXguc2l6ZSgpID09
IDApCisgICAgcmV0dXJuIE1hdHJpeDxUPigpOworICBjb25zdCBzaXplX3Qgcm93cyA9IG1hdHJp
eC5zaXplKCk7CisgIGNvbnN0IHNpemVfdCBjb2x1bW5zID0gbWF0cml4WzBdLnNpemUoKTsKKyAg
TWF0cml4PFQ+IHJlc3VsdChzdGQ6OnZhbGFycmF5PFQ+KHJvd3MpLCBjb2x1bW5zKTsKKworICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJvd3M7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgY29sdW1uczsgKytqKQorICAgICAgcmVzdWx0W2pdW2ldID0gbWF0cml4W2ldW2pdOwor
ICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gQ29udmVydCB2YWxhcnJheSBmcm9tIHR5
cGUgVCB0byB0eXBlIFIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVD4KK3N0ZDo6
dmFsYXJyYXk8Uj4gQ29udmVydFRvKGNvbnN0IHN0ZDo6dmFsYXJyYXk8VD4mIHYpIHsKKyAgc3Rk
Ojp2YWxhcnJheTxSPiByZXN1bHQodi5zaXplKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHYuc2l6ZSgpOyArK2kpCisgICAgcmVzdWx0W2ldID0gc3RhdGljX2Nhc3Q8Uj4odltpXSk7Cisg
IHJldHVybiByZXN1bHQ7Cit9CisKKy8vIENvbnZlcnQgdmFsYXJyYXkgTWF0cml4IGZyb20gdHlw
ZSBUIHRvIHR5cGUgUi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUPgorTWF0cml4
PFI+IENvbnZlcnRUbyhjb25zdCBNYXRyaXg8VD4mIG1hdCkgeworICBNYXRyaXg8Uj4gcmVzdWx0
KG1hdC5zaXplKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdC5zaXplKCk7ICsraSkK
KyAgICByZXN1bHRbaV0gPSBDb252ZXJ0VG88Uj4obWF0W2ldKTsKKyAgcmV0dXJuIHJlc3VsdDsK
K30KKworLy8gQ29udmVydCBmcm9tIHZhbGFycmF5IE1hdHJpeCBiYWNrIHRvIHRoZSBtb3JlIGNv
bnZlbnRpb25hbCBzdGQ6OnZlY3Rvci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RkOjp2ZWN0
b3I8c3RkOjp2ZWN0b3I8VD4+IFRvVmVjdG9yTWF0cml4KGNvbnN0IE1hdHJpeDxUPiYgbSkgewor
ICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxUPj4gcmVzdWx0OworICBmb3IgKGNvbnN0IHN0ZDo6
dmFsYXJyYXk8VD4mIHYgOiBtKQorICAgIHJlc3VsdC5lbXBsYWNlX2JhY2soc3RkOjpiZWdpbih2
KSwgc3RkOjplbmQodikpOworICByZXR1cm4gcmVzdWx0OworfQorCisvLyBDcmVhdGUgYSB2YWxh
cnJheSBNYXRyaXggZnJvbSBhIGNvbnZlbnRpb25hbCBzdGQ6OnZlY3Rvci4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorTWF0cml4PFQ+IEZyb21WZWN0b3JNYXRyaXgoY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjp2ZWN0b3I8VD4+JiBtYXQpIHsKKyAgTWF0cml4PFQ+IHJlc3VsdChtYXQuc2l6ZSgpKTsK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXQuc2l6ZSgpOyArK2kpCisgICAgcmVzdWx0W2ld
ID0gc3RkOjp2YWxhcnJheTxUPihtYXRbaV0uZGF0YSgpLCBtYXRbaV0uc2l6ZSgpKTsKKyAgcmV0
dXJuIHJlc3VsdDsKK30KKworLy8gUmV0dXJucyB8bWF0cml4X3RvX2ludmVydHxeLTEgKiB8cmln
aHRfaGFuZF9tYXRyaXh8LiB8bWF0cml4X3RvX2ludmVydHwgbXVzdAorLy8gaGF2ZSBzcXVhcmUg
c2l6ZS4KK01hdHJpeDxkb3VibGU+IEdhdXNzaWFuRWxpbWluYXRpb24oTWF0cml4PGRvdWJsZT4g
bWF0cml4X3RvX2ludmVydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0
cml4PGRvdWJsZT4gcmlnaHRfaGFuZF9tYXRyaXgpIHsKKyAgLy8gfG58IGlzIHRoZSB3aWR0aC9o
ZWlnaHQgb2YgfG1hdHJpeF90b19pbnZlcnR8LgorICBjb25zdCBzaXplX3QgbiA9IG1hdHJpeF90
b19pbnZlcnQuc2l6ZSgpOworICAvLyBNYWtlIHN1cmUgfG1hdHJpeF90b19pbnZlcnR8IGhhcyBz
cXVhcmUgc2l6ZS4KKyAgZm9yIChjb25zdCBzdGQ6OnZhbGFycmF5PGRvdWJsZT4mIGNvbHVtbiA6
IG1hdHJpeF90b19pbnZlcnQpCisgICAgUlRDX0NIRUNLX0VRKG4sIGNvbHVtbi5zaXplKCkpOwor
ICAvLyBNYWtlIHN1cmUgfHJpZ2h0X2hhbmRfbWF0cml4fCBoYXMgY29ycmVjdCBzaXplLgorICBm
b3IgKGNvbnN0IHN0ZDo6dmFsYXJyYXk8ZG91YmxlPiYgY29sdW1uIDogcmlnaHRfaGFuZF9tYXRy
aXgpCisgICAgUlRDX0NIRUNLX0VRKG4sIGNvbHVtbi5zaXplKCkpOworCisgIC8vIFRyYW5zcG9z
ZSB0aGUgbWF0cmljZXMgYmVmb3JlIGFuZCBhZnRlciBzbyB0aGF0IHdlIGNhbiBwZXJmb3JtIEdh
dXNzaWFuCisgIC8vIGVsaW1pbmF0aW9uIG9uIHRoZSBjb2x1bW5zIGluc3RlYWQgb2YgdGhlIHJv
d3MsIHNpbmNlIHRoYXQgaXMgZWFzaWVyIHdpdGgKKyAgLy8gb3VyIHJlcHJlc2VudGF0aW9uLgor
ICBtYXRyaXhfdG9faW52ZXJ0ID0gVHJhbnNwb3NlKG1hdHJpeF90b19pbnZlcnQpOworICByaWdo
dF9oYW5kX21hdHJpeCA9IFRyYW5zcG9zZShyaWdodF9oYW5kX21hdHJpeCk7CisKKyAgLy8gTG9v
cCBvdmVyIHRoZSBkaWFnb25hbCBvZiB8bWF0cml4X3RvX2ludmVydHwgYW5kIHBlcmZvcm0gY29s
dW1uIHJlZHVjdGlvbi4KKyAgLy8gQ29sdW1uIHJlZHVjdGlvbiBpcyBhIHNlcXVlbmNlIG9mIGVs
ZW1lbnRhcnkgY29sdW1uIG9wZXJhdGlvbnMgdGhhdCBpcworICAvLyBwZXJmb3JtZWQgb24gYm90
aCB8bWF0cml4X3RvX2ludmVydHwgYW5kIHxyaWdodF9oYW5kX21hdHJpeHwgdW50aWwKKyAgLy8g
fG1hdHJpeF90b19pbnZlcnR8IGhhcyBiZWVuIHRyYW5zZm9ybWVkIHRvIHRoZSBpZGVudGl0eSBt
YXRyaXguCisgIGZvciAoc2l6ZV90IGRpYWdvbmFsX2luZGV4ID0gMDsgZGlhZ29uYWxfaW5kZXgg
PCBuOyArK2RpYWdvbmFsX2luZGV4KSB7CisgICAgLy8gTWFrZSBzdXJlIHRoZSBkaWFnb25hbCBl
bGVtZW50IGhhcyB0aGUgaGlnaGVzdCBhYnNvbHV0ZSB2YWx1ZSBieQorICAgIC8vIHN3YXBwaW5n
IGNvbHVtbnMgaWYgbmVjZXNzYXJ5LgorICAgIGZvciAoc2l6ZV90IGNvbHVtbiA9IGRpYWdvbmFs
X2luZGV4ICsgMTsgY29sdW1uIDwgbjsgKytjb2x1bW4pIHsKKyAgICAgIGlmIChzdGQ6OmFicyht
YXRyaXhfdG9faW52ZXJ0W2NvbHVtbl1bZGlhZ29uYWxfaW5kZXhdKSA+CisgICAgICAgICAgc3Rk
OjphYnMobWF0cml4X3RvX2ludmVydFtkaWFnb25hbF9pbmRleF1bZGlhZ29uYWxfaW5kZXhdKSkg
eworICAgICAgICBzdGQ6OnN3YXAobWF0cml4X3RvX2ludmVydFtjb2x1bW5dLCBtYXRyaXhfdG9f
aW52ZXJ0W2RpYWdvbmFsX2luZGV4XSk7CisgICAgICAgIHN0ZDo6c3dhcChyaWdodF9oYW5kX21h
dHJpeFtjb2x1bW5dLCByaWdodF9oYW5kX21hdHJpeFtkaWFnb25hbF9pbmRleF0pOworICAgICAg
fQorICAgIH0KKworICAgIC8vIFJlZHVjZSB0aGUgZGlhZ29uYWwgZWxlbWVudCB0byBiZSAxLCBi
eSBkaXZpZGluZyB0aGUgY29sdW1uIHdpdGggdGhhdAorICAgIC8vIHZhbHVlLiBJZiB0aGUgZGlh
Z29uYWwgZWxlbWVudCBpcyAwLCBpdCBtZWFucyB0aGUgc3lzdGVtIG9mIGVxdWF0aW9ucyBoYXMK
KyAgICAvLyBtYW55IHNvbHV0aW9ucywgYW5kIGluIHRoYXQgY2FzZSB3ZSB3aWxsIHJldHVybiBh
biBhcmJpdHJhcnkgc29sdXRpb24uCisgICAgaWYgKG1hdHJpeF90b19pbnZlcnRbZGlhZ29uYWxf
aW5kZXhdW2RpYWdvbmFsX2luZGV4XSA9PSAwLjApIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklO
RykgPDwgIk1hdHJpeCBpcyBub3QgaW52ZXJ0aWJsZSwgaWdub3JpbmcuIjsKKyAgICAgIGNvbnRp
bnVlOworICAgIH0KKyAgICBjb25zdCBkb3VibGUgZGlhZ29uYWxfZWxlbWVudCA9CisgICAgICAg
IG1hdHJpeF90b19pbnZlcnRbZGlhZ29uYWxfaW5kZXhdW2RpYWdvbmFsX2luZGV4XTsKKyAgICBt
YXRyaXhfdG9faW52ZXJ0W2RpYWdvbmFsX2luZGV4XSAvPSBkaWFnb25hbF9lbGVtZW50OworICAg
IHJpZ2h0X2hhbmRfbWF0cml4W2RpYWdvbmFsX2luZGV4XSAvPSBkaWFnb25hbF9lbGVtZW50Owor
CisgICAgLy8gRWxpbWluYXRlIHRoZSBvdGhlciBlbnRyaWVzIGluIHJvdyB8ZGlhZ29uYWxfaW5k
ZXh8IGJ5IG1ha2luZyB0aGVtIHplcm8uCisgICAgZm9yIChzaXplX3QgY29sdW1uID0gMDsgY29s
dW1uIDwgbjsgKytjb2x1bW4pIHsKKyAgICAgIGlmIChjb2x1bW4gPT0gZGlhZ29uYWxfaW5kZXgp
CisgICAgICAgIGNvbnRpbnVlOworICAgICAgY29uc3QgZG91YmxlIHJvd19lbGVtZW50ID0gbWF0
cml4X3RvX2ludmVydFtjb2x1bW5dW2RpYWdvbmFsX2luZGV4XTsKKyAgICAgIG1hdHJpeF90b19p
bnZlcnRbY29sdW1uXSAtPQorICAgICAgICAgIHJvd19lbGVtZW50ICogbWF0cml4X3RvX2ludmVy
dFtkaWFnb25hbF9pbmRleF07CisgICAgICByaWdodF9oYW5kX21hdHJpeFtjb2x1bW5dIC09Cisg
ICAgICAgICAgcm93X2VsZW1lbnQgKiByaWdodF9oYW5kX21hdHJpeFtkaWFnb25hbF9pbmRleF07
CisgICAgfQorICB9CisKKyAgLy8gVHJhbnNwb3NlIHRoZSByZXN1bHQgYmVmb3JlIHJldHVybmlu
ZyBpdCwgZXhwbGFpbmVkIGluIGNvbW1lbnQgYWJvdmUuCisgIHJldHVybiBUcmFuc3Bvc2Uocmln
aHRfaGFuZF9tYXRyaXgpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworSW5jcmVtZW50YWxMaW5l
YXJMZWFzdFNxdWFyZXM6OkluY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVzKCkgPSBkZWZhdWx0
OworSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXM6On5JbmNyZW1lbnRhbExpbmVhckxlYXN0
U3F1YXJlcygpID0gZGVmYXVsdDsKKwordm9pZCBJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJl
czo6QWRkT2JzZXJ2YXRpb25zKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHVp
bnQ4X3Q+PiYgeCwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjx1aW50OF90Pj4m
IHkpIHsKKyAgaWYgKHguZW1wdHkoKSB8fCB5LmVtcHR5KCkpCisgICAgcmV0dXJuOworICAvLyBN
YWtlIHN1cmUgYWxsIGNvbHVtbnMgYXJlIHRoZSBzYW1lIHNpemUuCisgIGNvbnN0IHNpemVfdCBu
ID0geFswXS5zaXplKCk7CisgIGZvciAoY29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4mIGNvbHVt
biA6IHgpCisgICAgUlRDX0NIRUNLX0VRKG4sIGNvbHVtbi5zaXplKCkpOworICBmb3IgKGNvbnN0
IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBjb2x1bW4gOiB5KQorICAgIFJUQ19DSEVDS19FUShuLCBj
b2x1bW4uc2l6ZSgpKTsKKworICAvLyBXZSB3aWxsIG11bHRpcGx5IHRoZSB1aW50OF90IHZhbHVl
cyB0b2dldGhlciwgc28gd2UgbmVlZCB0byBleHBhbmQgdG8gYQorICAvLyB0eXBlIHRoYXQgY2Fu
IHNhZmVseSBzdG9yZSB0aG9zZSB2YWx1ZXMsIGkuZS4gdWludDE2X3QuCisgIGNvbnN0IE1hdHJp
eDx1aW50MTZfdD4gdW5wYWNrZWRfeCA9IENvbnZlcnRUbzx1aW50MTZfdD4oRnJvbVZlY3Rvck1h
dHJpeCh4KSk7CisgIGNvbnN0IE1hdHJpeDx1aW50MTZfdD4gdW5wYWNrZWRfeSA9IENvbnZlcnRU
bzx1aW50MTZfdD4oRnJvbVZlY3Rvck1hdHJpeCh5KSk7CisKKyAgY29uc3QgTWF0cml4PHVpbnQ2
NF90PiB4eCA9IE1hdHJpeE11bHRpcGx5PHVpbnQ2NF90Pih1bnBhY2tlZF94LCB1bnBhY2tlZF94
KTsKKyAgY29uc3QgTWF0cml4PHVpbnQ2NF90PiB4eSA9IE1hdHJpeE11bHRpcGx5PHVpbnQ2NF90
Pih1bnBhY2tlZF94LCB1bnBhY2tlZF95KTsKKyAgaWYgKHN1bV94eCAmJiBzdW1feHkpIHsKKyAg
ICAqc3VtX3h4ICs9IHh4OworICAgICpzdW1feHkgKz0geHk7CisgIH0gZWxzZSB7CisgICAgc3Vt
X3h4ID0geHg7CisgICAgc3VtX3h5ID0geHk7CisgIH0KK30KKworc3RkOjp2ZWN0b3I8c3RkOjp2
ZWN0b3I8ZG91YmxlPj4KK0luY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVzOjpHZXRCZXN0U29s
dXRpb24oKSBjb25zdCB7CisgIFJUQ19DSEVDSyhzdW1feHggJiYgc3VtX3h5KSA8PCAiTm8gb2Jz
ZXJ2YXRpb25zIGhhdmUgYmVlbiBhZGRlZCI7CisgIHJldHVybiBUb1ZlY3Rvck1hdHJpeChHYXVz
c2lhbkVsaW1pbmF0aW9uKENvbnZlcnRUbzxkb3VibGU+KCpzdW1feHgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0VG88ZG91YmxlPigqc3VtX3h5
KSkpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIv
bGluZWFyX2xlYXN0X3NxdWFyZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjA3ZGMxYmRlNjQwYWZiNzkyZjFk
Yzc2MjViM2U2M2Q4YjU4MmIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9s
ZWFzdF9zcXVhcmVzLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
KyNpZm5kZWYgUlRDX1RPT0xTX0ZSQU1FX0FOQUxZWkVSX0xJTkVBUl9MRUFTVF9TUVVBUkVTX0hf
CisjZGVmaW5lIFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9MSU5FQVJfTEVBU1RfU1FVQVJFU19I
XworCisjaW5jbHVkZSA8dmFsYXJyYXk+CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgImFi
c2wvdHlwZXMvb3B0aW9uYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVz
dCB7CisKKy8vIFRoaXMgY2xhc3MgaXMgdXNlZCBmb3IgZmluZGluZyBhIG1hdHJpeCBiIHRoYXQg
cm91Z2hseSBzb2x2ZXMgdGhlIGVxdWF0aW9uOgorLy8geSA9IHggKiBiLiBUaGlzIGlzIGdlbmVy
YWxseSBpbXBvc3NpYmxlIHRvIGRvIGV4YWN0bHksIHNvIHRoZSBwcm9ibGVtIGlzCisvLyByZXBo
cmFzZWQgYXMgZmluZGluZyB0aGUgbWF0cml4IGIgdGhhdCBtaW5pbWl6ZXMgdGhlIGRpZmZlcmVu
Y2U6CisvLyB8eSAtIHggKiBifF4yLiBDYWxsaW5nIG11bHRpcGxlIEFkZE9ic2VydmF0aW9ucygp
IGlzIGVxdWl2YWxlbnQgdG8KKy8vIGNvbmNhdGVuYXRpbmcgdGhlIG9ic2VydmF0aW9uIHZlY3Rv
cnMgYW5kIGNhbGxpbmcgQWRkT2JzZXJ2YXRpb25zKCkgb25jZS4gVGhlCisvLyByZWFzb24gZm9y
IGRvaW5nIGl0IGluY3JlbWVudGFsbHkgaXMgdGhhdCB3ZSBjYW4ndCBzdG9yZSB0aGUgcmF3IFlV
ViB2YWx1ZXMKKy8vIGZvciBhIHdob2xlIHZpZGVvIGZpbGUgaW4gbWVtb3J5IGF0IG9uY2UuIFRo
aXMgY2xhc3MgaGFzIGEgY29uc3RhbnQgbWVtb3J5CisvLyBmb290cHJpbnQsIHJlZ2FyZGxlc3Mg
aG93IG1heSB0aW1lcyBBZGRPYnNlcnZhdGlvbnMoKSBpcyBjYWxsZWQuCitjbGFzcyBJbmNyZW1l
bnRhbExpbmVhckxlYXN0U3F1YXJlcyB7CisgcHVibGljOgorICBJbmNyZW1lbnRhbExpbmVhckxl
YXN0U3F1YXJlcygpOworICB+SW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMoKTsKKworICAv
LyBBZGQgYSBudW1iZXIgb2Ygb2JzZXJ2YXRpb25zLiBUaGUgc3VidmVjdG9ycyBvZiB4IGFuZCB5
IG11c3QgaGF2ZSB0aGUgc2FtZQorICAvLyBsZW5ndGguCisgIHZvaWQgQWRkT2JzZXJ2YXRpb25z
KGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+PiYgeCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8dWludDhfdD4+JiB5KTsK
KworICAvLyBDYWxjdWxhdGUgYW5kIHJldHVybiB0aGUgYmVzdCBsaW5lYXIgc29sdXRpb24sIGdp
dmVuIHRoZSBvYnNlcnZhdGlvbnMgc28KKyAgLy8gZmFyLgorICBzdGQ6OnZlY3RvcjxzdGQ6OnZl
Y3Rvcjxkb3VibGU+PiBHZXRCZXN0U29sdXRpb24oKSBjb25zdDsKKworIHByaXZhdGU6CisgIC8v
IFJ1bm5pbmcgc3VtIG9mIHheVCAqIHguCisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6dmFsYXJyYXk8
c3RkOjp2YWxhcnJheTx1aW50NjRfdD4+PiBzdW1feHg7CisgIC8vIFJ1bm5pbmcgc3VtIG9mIHhe
VCAqIHkuCisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6dmFsYXJyYXk8c3RkOjp2YWxhcnJheTx1aW50
NjRfdD4+PiBzdW1feHk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9MSU5FQVJf
TEVBU1RfU1FVQVJFU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVh
cmVzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzX3VuaXR0ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIwNzRhYWNjZTg1NmE4ZmY2Mzk2OTZiODg2MDYyNGE5ZWQ5OWM3Y2YK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvbGluZWFyX2xlYXN0X3NxdWFyZXNfdW5pdHRl
c3QuY2MKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRl
ICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvbGluZWFyX2xlYXN0X3NxdWFyZXMuaCIKKworI2lu
Y2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVz
dCB7CisKK1RFU1QoTGluZWFyTGVhc3RTcXVhcmVzLCBTY2FsYXJJZGVudGl0eU9uZU9ic2VydmF0
aW9uKSB7CisgIEluY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVzIGxsczsKKyAgbGxzLkFkZE9i
c2VydmF0aW9ucyh7ezF9fSwge3sxfX0pOworICBFWFBFQ1RfRVEoc3RkOjp2ZWN0b3I8c3RkOjp2
ZWN0b3I8ZG91YmxlPj4oe3sxLjB9fSksIGxscy5HZXRCZXN0U29sdXRpb24oKSk7Cit9CisKK1RF
U1QoTGluZWFyTGVhc3RTcXVhcmVzLCBTY2FsYXJJZGVudGl0eVR3b09ic2VydmF0aW9uc09uZUNh
bGwpIHsKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMgbGxzOworICBsbHMuQWRkT2Jz
ZXJ2YXRpb25zKHt7MSwgMn19LCB7ezEsIDJ9fSk7CisgIEVYUEVDVF9FUShzdGQ6OnZlY3Rvcjxz
dGQ6OnZlY3Rvcjxkb3VibGU+Pih7ezEuMH19KSwgbGxzLkdldEJlc3RTb2x1dGlvbigpKTsKK30K
KworVEVTVChMaW5lYXJMZWFzdFNxdWFyZXMsIFNjYWxhcklkZW50aXR5VHdvT2JzZXJ2YXRpb25z
VHdvQ2FsbHMpIHsKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMgbGxzOworICBsbHMu
QWRkT2JzZXJ2YXRpb25zKHt7MX19LCB7ezF9fSk7CisgIGxscy5BZGRPYnNlcnZhdGlvbnMoe3sy
fX0sIHt7Mn19KTsKKyAgRVhQRUNUX0VRKHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4+
KHt7MS4wfX0pLCBsbHMuR2V0QmVzdFNvbHV0aW9uKCkpOworfQorCitURVNUKExpbmVhckxlYXN0
U3F1YXJlcywgTWF0cml4SWRlbnRpdHlPbmVPYnNlcnZhdGlvbikgeworICBJbmNyZW1lbnRhbExp
bmVhckxlYXN0U3F1YXJlcyBsbHM7CisgIGxscy5BZGRPYnNlcnZhdGlvbnMoe3sxLCAyfSwgezMs
IDR9fSwge3sxLCAyfSwgezMsIDR9fSk7CisgIEVYUEVDVF9FUShzdGQ6OnZlY3RvcjxzdGQ6OnZl
Y3Rvcjxkb3VibGU+Pih7ezEuMCwgMC4wfSwgezAuMCwgMS4wfX0pLAorICAgICAgICAgICAgbGxz
LkdldEJlc3RTb2x1dGlvbigpKTsKK30KKworVEVTVChMaW5lYXJMZWFzdFNxdWFyZXMsIE1hdHJp
eE1hbnlPYnNlcnZhdGlvbnMpIHsKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMgbGxz
OworICAvLyBUZXN0IHRoYXQgd2UgY2FuIGZpbmQgdGhlIHNvbHV0aW9uIG9mIHRoZSBvdmVyc3Bl
Y2lmaWVkIGVxdWF0aW9uIHN5c3RlbToKKyAgLy8gWzEsIDJdIFsxLCAzXSA9IFs1LCAgMTFdCisg
IC8vIFszLCA0XSBbMiwgNF0gICBbMTEsIDI1XQorICAvLyBbNSwgNl0gICAgICAgICAgWzE3LCAz
OV0KKyAgbGxzLkFkZE9ic2VydmF0aW9ucyh7ezF9LCB7Mn19LCB7ezV9LCB7MTF9fSk7CisgIGxs
cy5BZGRPYnNlcnZhdGlvbnMoe3szfSwgezR9fSwge3sxMX0sIHsyNX19KTsKKyAgbGxzLkFkZE9i
c2VydmF0aW9ucyh7ezV9LCB7Nn19LCB7ezE3fSwgezM5fX0pOworCisgIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4+IHJlc3VsdCA9IGxscy5HZXRCZXN0U29sdXRpb24oKTsK
KyAgLy8gV2UgYWxsb3cgc29tZSBudW1lcmljYWwgZmxleGliaWxpdHkgaGVyZS4KKyAgRVhQRUNU
X0RPVUJMRV9FUSgxLjAsIHJlc3VsdFswXVswXSk7CisgIEVYUEVDVF9ET1VCTEVfRVEoMi4wLCBy
ZXN1bHRbMF1bMV0pOworICBFWFBFQ1RfRE9VQkxFX0VRKDMuMCwgcmVzdWx0WzFdWzBdKTsKKyAg
RVhQRUNUX0RPVUJMRV9FUSg0LjAsIHJlc3VsdFsxXVsxXSk7Cit9CisKK1RFU1QoTGluZWFyTGVh
c3RTcXVhcmVzLCBNYXRyaXhWZWN0b3JPbmVPYnNlcnZhdGlvbikgeworICBJbmNyZW1lbnRhbExp
bmVhckxlYXN0U3F1YXJlcyBsbHM7CisgIC8vIFRlc3QgdGhhdCB3ZSBjYW4gZmluZCB0aGUgc29s
dXRpb24gb2YgdGhlIG92ZXJzcGVjaWZpZWQgZXF1YXRpb24gc3lzdGVtOgorICAvLyBbMSwgMl0g
WzFdID0gWzVdCisgIC8vIFszLCA0XSBbMl0gICBbMTFdCisgIC8vIFs1LCA2XSAgICAgICBbMTdd
CisgIGxscy5BZGRPYnNlcnZhdGlvbnMoe3sxLCAzLCA1fSwgezIsIDQsIDZ9fSwge3s1LCAxMSwg
MTd9fSk7CisKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZG91YmxlPj4gcmVzdWx0
ID0gbGxzLkdldEJlc3RTb2x1dGlvbigpOworICAvLyBXZSBhbGxvdyBzb21lIG51bWVyaWNhbCBm
bGV4aWJpbGl0eSBoZXJlLgorICBFWFBFQ1RfRE9VQkxFX0VRKDEuMCwgcmVzdWx0WzBdWzBdKTsK
KyAgRVhQRUNUX0RPVUJMRV9FUSgyLjAsIHJlc3VsdFswXVsxXSk7Cit9CisKK1RFU1QoTGluZWFy
TGVhc3RTcXVhcmVzLCBMaW5lYXJMZWFzdFNxdWFyZXNOb25QZXJmZWN0U29sdXRpb24pIHsKKyAg
SW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMgbGxzOworICAvLyBUZXN0IHRoYXQgd2UgY2Fu
IGZpbmQgdGhlIG5vbi1wZXJmZWN0IHNvbHV0aW9uIG9mIHRoZSBvdmVyc3BlY2lmaWVkCisgIC8v
IGVxdWF0aW9uIHN5c3RlbToKKyAgLy8gWzFdIFsyMF0gPSBbMjFdCisgIC8vIFsyXSAgICAgICAg
WzM5XQorICAvLyBbM10gICAgICAgIFs2MF0KKyAgLy8gWzJdICAgICAgICBbNDFdCisgIC8vIFsx
XSAgICAgICAgWzE5XQorICBsbHMuQWRkT2JzZXJ2YXRpb25zKHt7MSwgMiwgMywgMiwgMX19LCB7
ezIxLCAzOSwgNjAsIDQxLCAxOX19KTsKKworICBFWFBFQ1RfRE9VQkxFX0VRKDIwLjAsIGxscy5H
ZXRCZXN0U29sdXRpb24oKVswXVswXSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxp
Z25lci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190
b29scy9mcmFtZV9hbmFseXplci92aWRlb19jb2xvcl9hbGlnbmVyLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdh
ZmIxZTQ2OTUwZjk5MjFmOTAwYWFhNmExZDE4OWUwYTJhNWQyMmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJh
bWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5jYwpAQCAtMCwwICsxLDIzOSBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIv
dmlkZW9fY29sb3JfYWxpZ25lci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
PGNtYXRoPgorI2luY2x1ZGUgPGRlcXVlPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS92aWRl
by9pNDIwX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0
LmgiCisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVh
cmVzLmgiCisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlf
YW5hbHlzaXMuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYv
Y29tcGFyZS5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9w
bGFuYXJfZnVuY3Rpb25zLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUv
bGlieXV2L3NjYWxlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3Qgewor
CituYW1lc3BhY2UgeworCisvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIEFkanVzdENvbG9ycygpLiBU
aGlzIGZ1bmN0aW9ucyBjYWxjdWxhdGVzIGEgc2luZ2xlIG91dHB1dAorLy8gcm93IGZvciB5IHdp
dGggdGhlIGdpdmVuIGNvbG9yIGNvZWZmaWNpZW50cy4gVGhlIHUvdiBjaGFubmVscyBhcmUgYXNz
dW1lZCB0bworLy8gYmUgc3Vic2FtcGxlZCBieSBhIGZhY3RvciBvZiAyLCB3aGljaCBpcyB0aGUg
Y2FzZSBvZiBJNDIwLgordm9pZCBDYWxjdWxhdGVZQ2hhbm5lbChydGM6OkFycmF5Vmlldzxjb25z
dCB1aW50OF90PiB5X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IHVpbnQ4X3Q+IHVfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJh
eVZpZXc8Y29uc3QgdWludDhfdD4gdl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OmFycmF5PGZsb2F0LCA0PiYgY29lZmYsCisgICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6QXJyYXlWaWV3PHVpbnQ4X3Q+IG91dHB1dCkgeworICBSVENfQ0hFQ0tfRVEoeV9kYXRhLnNp
emUoKSwgb3V0cHV0LnNpemUoKSk7CisgIC8vIEVhY2ggdS92IGVsZW1lbnQgcmVwcmVzZW50cyB0
d28geSBlbGVtZW50cy4gTWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIHRvCisgIC8vIGNvdmVyIHRo
ZSBZIHZhbHVlcy4KKyAgUlRDX0NIRUNLX0dFKHVfZGF0YS5zaXplKCkgKiAyLCB5X2RhdGEuc2l6
ZSgpKTsKKyAgUlRDX0NIRUNLX0dFKHZfZGF0YS5zaXplKCkgKiAyLCB5X2RhdGEuc2l6ZSgpKTsK
KworICAvLyBEbyB0d28gcGl4ZWxzIGF0IGEgdGltZSBzaW5jZSB1L3YgYXJlIHN1YnNhbXBsZWQu
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICogMiA8IHlfZGF0YS5zaXplKCkgLSAxOyArK2kpIHsK
KyAgICBjb25zdCBmbG9hdCB1dl9jb250cmlidXRpb24gPQorICAgICAgICBjb2VmZlsxXSAqIHVf
ZGF0YVtpXSArIGNvZWZmWzJdICogdl9kYXRhW2ldICsgY29lZmZbM107CisKKyAgICBjb25zdCBm
bG9hdCB2YWwwID0gY29lZmZbMF0gKiB5X2RhdGFbaSAqIDIgKyAwXSArIHV2X2NvbnRyaWJ1dGlv
bjsKKyAgICBjb25zdCBmbG9hdCB2YWwxID0gY29lZmZbMF0gKiB5X2RhdGFbaSAqIDIgKyAxXSAr
IHV2X2NvbnRyaWJ1dGlvbjsKKworICAgIC8vIENsYW1wIHJlc3VsdCB0byBhIGJ5dGUuCisgICAg
b3V0cHV0W2kgKiAyICsgMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PigKKyAgICAgICAgc3RkOjpy
b3VuZChzdGQ6Om1heCgwLjBmLCBzdGQ6Om1pbih2YWwwLCAyNTUuMGYpKSkpOworICAgIG91dHB1
dFtpICogMiArIDFdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oCisgICAgICAgIHN0ZDo6cm91bmQo
c3RkOjptYXgoMC4wZiwgc3RkOjptaW4odmFsMSwgMjU1LjBmKSkpKTsKKyAgfQorCisgIC8vIEhh
bmRsZSB0aGUgbGFzdCBwaXhlbCBmb3Igb2RkIHdpZHRocy4KKyAgaWYgKHlfZGF0YS5zaXplKCkg
JSAyID09IDEpIHsKKyAgICBjb25zdCBmbG9hdCB2YWwgPSBjb2VmZlswXSAqIHlfZGF0YVt5X2Rh
dGEuc2l6ZSgpIC0gMV0gKworICAgICAgICAgICAgICAgICAgICAgIGNvZWZmWzFdICogdV9kYXRh
Wyh5X2RhdGEuc2l6ZSgpIC0gMSkgLyAyXSArCisgICAgICAgICAgICAgICAgICAgICAgY29lZmZb
Ml0gKiB2X2RhdGFbKHlfZGF0YS5zaXplKCkgLSAxKSAvIDJdICsgY29lZmZbM107CisgICAgb3V0
cHV0W3lfZGF0YS5zaXplKCkgLSAxXSA9CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0
ZDo6cm91bmQoc3RkOjptYXgoMC4wZiwgc3RkOjptaW4odmFsLCAyNTUuMGYpKSkpOworICB9Cit9
CisKKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgQWRqdXN0Q29sb3JzKCkuIFRoaXMgZnVuY3Rpb25z
IGNhbGN1bGF0ZXMgYSBzaW5nbGUgb3V0cHV0CisvLyByb3cgZm9yIGVpdGhlciB1IG9yIHYsIHdp
dGggdGhlIGdpdmVuIGNvbG9yIGNvZWZmaWNpZW50cy4gWSwgVSwgYW5kIFYgYXJlCisvLyBhc3N1
bWVkIHRvIGJlIHRoZSBzYW1lIHNpemUsIGkuZS4gbm8gc3Vic2FtcGxpbmcuCit2b2lkIENhbGN1
bGF0ZVVWQ2hhbm5lbChydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiB5X2RhdGEsCisgICAg
ICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiB1X2RhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiB2
X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCA0
PiYgY29lZmYsCisgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzx1aW50OF90
PiBvdXRwdXQpIHsKKyAgUlRDX0NIRUNLX0VRKHlfZGF0YS5zaXplKCksIHVfZGF0YS5zaXplKCkp
OworICBSVENfQ0hFQ0tfRVEoeV9kYXRhLnNpemUoKSwgdl9kYXRhLnNpemUoKSk7CisgIFJUQ19D
SEVDS19FUSh5X2RhdGEuc2l6ZSgpLCBvdXRwdXQuc2l6ZSgpKTsKKworICBmb3IgKHNpemVfdCB4
ID0gMDsgeCA8IHlfZGF0YS5zaXplKCk7ICsreCkgeworICAgIGNvbnN0IGZsb2F0IHZhbCA9IGNv
ZWZmWzBdICogeV9kYXRhW3hdICsgY29lZmZbMV0gKiB1X2RhdGFbeF0gKworICAgICAgICAgICAg
ICAgICAgICAgIGNvZWZmWzJdICogdl9kYXRhW3hdICsgY29lZmZbM107CisgICAgLy8gQ2xhbXAg
cmVzdWx0IHRvIGEgYnl0ZS4KKyAgICBvdXRwdXRbeF0gPQorICAgICAgICBzdGF0aWNfY2FzdDx1
aW50OF90PihzdGQ6OnJvdW5kKHN0ZDo6bWF4KDAuMGYsIHN0ZDo6bWluKHZhbCwgMjU1LjBmKSkp
KTsKKyAgfQorfQorCisvLyBDb252ZXJ0IGEgZnJhbWUgdG8gZm91ciB2ZWN0b3JzIGNvbnNpc3Rp
bmcgb2YgW3ksIHUsIHYsIDFdLgorc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8dWludDhfdD4+IEZs
YXR0ZW5ZdXZEYXRhKAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50
ZXJmYWNlPiYgZnJhbWUpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8dWludDhfdD4+IHJl
c3VsdCgKKyAgICAgIDQsIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGZyYW1lLT5DaHJvbWFXaWR0aCgp
ICogZnJhbWUtPkNocm9tYUhlaWdodCgpKSk7CisKKyAgLy8gRG93bnNjYWxlIHRoZSBZIHBsYW5l
IHNvIHRoYXQgYWxsIFlVViBwbGFuZXMgYXJlIHRoZSBzYW1lIHNpemUuCisgIGxpYnl1djo6U2Nh
bGVQbGFuZShmcmFtZS0+RGF0YVkoKSwgZnJhbWUtPlN0cmlkZVkoKSwgZnJhbWUtPndpZHRoKCks
CisgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+aGVpZ2h0KCksIHJlc3VsdFswXS5kYXRhKCks
IGZyYW1lLT5DaHJvbWFXaWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPkNocm9t
YVdpZHRoKCksIGZyYW1lLT5DaHJvbWFIZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgIGxp
Ynl1djo6a0ZpbHRlckJveCk7CisKKyAgbGlieXV2OjpDb3B5UGxhbmUoZnJhbWUtPkRhdGFVKCks
IGZyYW1lLT5TdHJpZGVVKCksIHJlc3VsdFsxXS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5DaHJvbWFXaWR0aCgpLCBmcmFtZS0+Q2hyb21hV2lkdGgoKSwKKyAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPkNocm9tYUhlaWdodCgpKTsKKworICBsaWJ5dXY6OkNvcHlQbGFuZShm
cmFtZS0+RGF0YVYoKSwgZnJhbWUtPlN0cmlkZVYoKSwgcmVzdWx0WzJdLmRhdGEoKSwKKyAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPkNocm9tYVdpZHRoKCksIGZyYW1lLT5DaHJvbWFXaWR0aCgp
LAorICAgICAgICAgICAgICAgICAgICBmcmFtZS0+Q2hyb21hSGVpZ2h0KCkpOworCisgIHN0ZDo6
ZmlsbChyZXN1bHRbM10uYmVnaW4oKSwgcmVzdWx0WzNdLmVuZCgpLCAxdSk7CisKKyAgcmV0dXJu
IHJlc3VsdDsKK30KKworQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCBWZWN0b3JUb0NvbG9yTWF0
cml4KAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4+JiB2KSB7Cisg
IENvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggY29sb3JfdHJhbnNmb3JtYXRpb247CisgIGZvciAo
aW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCA0OyArK2op
CisgICAgICBjb2xvcl90cmFuc2Zvcm1hdGlvbltpXVtqXSA9IHZbaV1bal07CisgIH0KKyAgcmV0
dXJuIGNvbG9yX3RyYW5zZm9ybWF0aW9uOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworQ29sb3JU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBDYWxjdWxhdGVDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4KAor
ICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgcmVmZXJl
bmNlX2ZyYW1lLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJm
YWNlPiYgdGVzdF9mcmFtZSkgeworICBJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlcyBpbmNy
ZW1lbnRhbF9sbHM7CisgIGluY3JlbWVudGFsX2xscy5BZGRPYnNlcnZhdGlvbnMoRmxhdHRlbll1
dkRhdGEodGVzdF9mcmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxh
dHRlbll1dkRhdGEocmVmZXJlbmNlX2ZyYW1lKSk7CisgIHJldHVybiBWZWN0b3JUb0NvbG9yTWF0
cml4KGluY3JlbWVudGFsX2xscy5HZXRCZXN0U29sdXRpb24oKSk7Cit9CisKK0NvbG9yVHJhbnNm
b3JtYXRpb25NYXRyaXggQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICBj
b25zdCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+JiByZWZlcmVuY2VfdmlkZW8sCisgICAgY29u
c3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgdGVzdF92aWRlbykgeworICBSVENfQ0hFQ0tf
R0UocmVmZXJlbmNlX3ZpZGVvLT5udW1iZXJfb2ZfZnJhbWVzKCksCisgICAgICAgICAgICAgICB0
ZXN0X3ZpZGVvLT5udW1iZXJfb2ZfZnJhbWVzKCkpOworCisgIEluY3JlbWVudGFsTGluZWFyTGVh
c3RTcXVhcmVzIGluY3JlbWVudGFsX2xsczsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0
X3ZpZGVvLT5udW1iZXJfb2ZfZnJhbWVzKCk7ICsraSkgeworICAgIGluY3JlbWVudGFsX2xscy5B
ZGRPYnNlcnZhdGlvbnMoCisgICAgICAgIEZsYXR0ZW5ZdXZEYXRhKHRlc3RfdmlkZW8tPkdldEZy
YW1lKGkpKSwKKyAgICAgICAgRmxhdHRlbll1dkRhdGEocmVmZXJlbmNlX3ZpZGVvLT5HZXRGcmFt
ZShpKSkpOworICB9CisKKyAgcmV0dXJuIFZlY3RvclRvQ29sb3JNYXRyaXgoaW5jcmVtZW50YWxf
bGxzLkdldEJlc3RTb2x1dGlvbigpKTsKK30KKworcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiBB
ZGp1c3RDb2xvcnMoCisgICAgY29uc3QgQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29sb3Jf
dHJhbnNmb3JtYXRpb24sCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgdmlk
ZW8pIHsKKyAgY2xhc3MgQ29sb3JBZGp1c3RlZFZpZGVvIDogcHVibGljIHJ0Yzo6UmVmQ291bnRl
ZE9iamVjdDxWaWRlbz4geworICAgcHVibGljOgorICAgIENvbG9yQWRqdXN0ZWRWaWRlbyhjb25z
dCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb2xvcl90cmFuc2Zvcm1hdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgdmlkZW8p
CisgICAgICAgIDogY29sb3JfdHJhbnNmb3JtYXRpb25fKGNvbG9yX3RyYW5zZm9ybWF0aW9uKSwg
dmlkZW9fKHZpZGVvKSB7fQorCisgICAgaW50IHdpZHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdmlkZW9fLT53aWR0aCgpOyB9CisgICAgaW50IGhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHZpZGVvXy0+aGVpZ2h0KCk7IH0KKyAgICBzaXplX3QgbnVtYmVyX29mX2ZyYW1lcygp
IGNvbnN0IG92ZXJyaWRlIHsKKyAgICAgIHJldHVybiB2aWRlb18tPm51bWJlcl9vZl9mcmFtZXMo
KTsKKyAgICB9CisKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4g
R2V0RnJhbWUoCisgICAgICAgIHNpemVfdCBpbmRleCkgY29uc3Qgb3ZlcnJpZGUgeworICAgICAg
cmV0dXJuIEFkanVzdENvbG9ycyhjb2xvcl90cmFuc2Zvcm1hdGlvbl8sIHZpZGVvXy0+R2V0RnJh
bWUoaW5kZXgpKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgY29uc3QgQ29sb3JUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBjb2xvcl90cmFuc2Zvcm1hdGlvbl87CisgICAgY29uc3QgcnRjOjpzY29w
ZWRfcmVmcHRyPFZpZGVvPiB2aWRlb187CisgIH07CisKKyAgcmV0dXJuIG5ldyBDb2xvckFkanVz
dGVkVmlkZW8oY29sb3JfdHJhbnNmb3JtYXRpb24sIHZpZGVvKTsKK30KKworcnRjOjpzY29wZWRf
cmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IEFkanVzdENvbG9ycygKKyAgICBjb25zdCBDb2xv
clRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb2xvcl9tYXRyaXgsCisgICAgY29uc3QgcnRjOjpzY29w
ZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+JiBmcmFtZSkgeworICAvLyBBbGxvY2F0ZSBJ
NDIwIGJ1ZmZlciB0aGF0IHdpbGwgaG9sZCB0aGUgY29sb3IgYWRqdXN0ZWQgZnJhbWUuCisgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVyPiBhZGp1c3RlZF9mcmFtZSA9CisgICAgICBJNDIw
QnVmZmVyOjpDcmVhdGUoZnJhbWUtPndpZHRoKCksIGZyYW1lLT5oZWlnaHQoKSk7CisKKyAgLy8g
Q3JlYXRlIGEgZG93bnNjYWxlZCBZIHBsYW5lIHdpdGggdGhlIHNhbWUgc2l6ZSBhcyB0aGUgVS9W
IHBsYW5lcyB0bworICAvLyBzaW1wbGlmeSBjb252ZXJ0aW5nIHRoZSBVL1YgcGxhbmVzLgorICBz
dGQ6OnZlY3Rvcjx1aW50OF90PiBkb3duc2NhbGVkX3lfcGxhbmUoZnJhbWUtPkNocm9tYVdpZHRo
KCkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPkNo
cm9tYUhlaWdodCgpKTsKKyAgbGlieXV2OjpTY2FsZVBsYW5lKGZyYW1lLT5EYXRhWSgpLCBmcmFt
ZS0+U3RyaWRlWSgpLCBmcmFtZS0+d2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5oZWlnaHQoKSwgZG93bnNjYWxlZF95X3BsYW5lLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5DaHJvbWFXaWR0aCgpLCBmcmFtZS0+Q2hyb21hV2lkdGgoKSwKKyAgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5DaHJvbWFIZWlnaHQoKSwgbGlieXV2OjprRmlsdGVyQm94KTsK
KworICAvLyBGaWxsIGluIHRoZSBhZGp1c3RlZCBkYXRhIHJvdyBieSByb3cuCisgIGZvciAoaW50
IHkgPSAwOyB5IDwgZnJhbWUtPmhlaWdodCgpOyArK3kpIHsKKyAgICBjb25zdCBpbnQgaGFsZl95
ID0geSAvIDI7CisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4geV9yb3coZnJhbWUt
PkRhdGFZKCkgKyBmcmFtZS0+U3RyaWRlWSgpICogeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmcmFtZS0+d2lkdGgoKSk7CisgICAgcnRjOjpBcnJheVZpZXc8Y29u
c3QgdWludDhfdD4gdV9yb3coCisgICAgICAgIGZyYW1lLT5EYXRhVSgpICsgZnJhbWUtPlN0cmlk
ZVUoKSAqIGhhbGZfeSwgZnJhbWUtPkNocm9tYVdpZHRoKCkpOworICAgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IHVpbnQ4X3Q+IHZfcm93KAorICAgICAgICBmcmFtZS0+RGF0YVYoKSArIGZyYW1lLT5T
dHJpZGVWKCkgKiBoYWxmX3ksIGZyYW1lLT5DaHJvbWFXaWR0aCgpKTsKKyAgICBydGM6OkFycmF5
Vmlldzx1aW50OF90PiBvdXRwdXRfeV9yb3coCisgICAgICAgIGFkanVzdGVkX2ZyYW1lLT5NdXRh
YmxlRGF0YVkoKSArIGFkanVzdGVkX2ZyYW1lLT5TdHJpZGVZKCkgKiB5LAorICAgICAgICBmcmFt
ZS0+d2lkdGgoKSk7CisKKyAgICBDYWxjdWxhdGVZQ2hhbm5lbCh5X3JvdywgdV9yb3csIHZfcm93
LCBjb2xvcl9tYXRyaXhbMF0sIG91dHB1dF95X3Jvdyk7CisKKyAgICAvLyBDaHJvbWEgY2hhbm5l
bHMgb25seSBleGlzdCBldmVyeSBzZWNvbmQgcm93IGZvciBJNDIwLgorICAgIGlmICh5ICUgMiA9
PSAwKSB7CisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBkb3duc2NhbGVkX3lf
cm93KAorICAgICAgICAgIGRvd25zY2FsZWRfeV9wbGFuZS5kYXRhKCkgKyBmcmFtZS0+Q2hyb21h
V2lkdGgoKSAqIGhhbGZfeSwKKyAgICAgICAgICBmcmFtZS0+Q2hyb21hV2lkdGgoKSk7CisgICAg
ICBydGM6OkFycmF5Vmlldzx1aW50OF90PiBvdXRwdXRfdV9yb3coCisgICAgICAgICAgYWRqdXN0
ZWRfZnJhbWUtPk11dGFibGVEYXRhVSgpICsgYWRqdXN0ZWRfZnJhbWUtPlN0cmlkZVUoKSAqIGhh
bGZfeSwKKyAgICAgICAgICBmcmFtZS0+Q2hyb21hV2lkdGgoKSk7CisgICAgICBydGM6OkFycmF5
Vmlldzx1aW50OF90PiBvdXRwdXRfdl9yb3coCisgICAgICAgICAgYWRqdXN0ZWRfZnJhbWUtPk11
dGFibGVEYXRhVigpICsgYWRqdXN0ZWRfZnJhbWUtPlN0cmlkZVYoKSAqIGhhbGZfeSwKKyAgICAg
ICAgICBmcmFtZS0+Q2hyb21hV2lkdGgoKSk7CisKKyAgICAgIENhbGN1bGF0ZVVWQ2hhbm5lbChk
b3duc2NhbGVkX3lfcm93LCB1X3Jvdywgdl9yb3csIGNvbG9yX21hdHJpeFsxXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRwdXRfdV9yb3cpOworICAgICAgQ2FsY3VsYXRlVVZDaGFubmVs
KGRvd25zY2FsZWRfeV9yb3csIHVfcm93LCB2X3JvdywgY29sb3JfbWF0cml4WzJdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dHB1dF92X3Jvdyk7CisgICAgfQorICB9CisKKyAgcmV0dXJu
IGFkanVzdGVkX2ZyYW1lOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFt
ZV9hbmFseXplci92aWRlb19jb2xvcl9hbGlnbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk3Y2JmNjU4Mjlm
NjgyNmY2ZTIxY2I4MjkxYzMzNmJmYjdhNGRhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXpl
ci92aWRlb19jb2xvcl9hbGlnbmVyLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqICBDb3B5cmln
aHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpZm5kZWYgUlRDX1RPT0xTX0ZSQU1FX0FOQUxZWkVSX1ZJREVPX0NPTE9SX0FM
SUdORVJfSF8KKyNkZWZpbmUgUlRDX1RPT0xTX0ZSQU1FX0FOQUxZWkVSX1ZJREVPX0NPTE9SX0FM
SUdORVJfSF8KKworI2luY2x1ZGUgPGFycmF5PgorCisjaW5jbHVkZSAicnRjX3Rvb2xzL3ZpZGVv
X2ZpbGVfcmVhZGVyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3Qgewor
CisvLyBSZXByZXNlbnRzIGEgbGluZWFyIGNvbG9yIHRyYW5zZm9ybWF0aW9uIGZyb20gW3ksIHUs
IHZdIHRvIFt5JywgdScsIHYnXQorLy8gdGhyb3VnaCB0aGUgZXF1YXRpb246IFt5JywgdScsIHYn
XSA9IFt5LCB1LCB2LCAxXSAqIG1hdHJpeC4KK3VzaW5nIENvbG9yVHJhbnNmb3JtYXRpb25NYXRy
aXggPSBzdGQ6OmFycmF5PHN0ZDo6YXJyYXk8ZmxvYXQsIDQ+LCAzPjsKKworLy8gQ2FsY3VsYXRl
IHRoZSBvcHRpbWFsIGNvbG9yIHRyYW5zZm9ybWF0aW9uIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQg
dG8gdGhlIHRlc3QKKy8vIHZpZGVvIHRvIG1hdGNoIGFzIGNsb3NlbHkgYXMgcG9zc2libGUgdG8g
dGhlIHJlZmVyZW5jZSB2aWRlby4KK0NvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggQ2FsY3VsYXRl
Q29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8
VmlkZW8+JiByZWZlcmVuY2VfdmlkZW8sCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZp
ZGVvPiYgdGVzdF92aWRlbyk7CisKKy8vIENhbGN1bGF0ZSBjb2xvciB0cmFuc2Zvcm1hdGlvbiBm
b3IgYSBzaW5nbGUgSTQyMCBmcmFtZS4KK0NvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggQ2FsY3Vs
YXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZw
dHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHJlZmVyZW5jZV9mcmFtZSwKKyAgICBjb25zdCBydGM6
OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHRlc3RfZnJhbWUpOworCisvLyBB
cHBseSBhIGNvbG9yIHRyYW5zZm9ybWF0aW9uIHRvIGEgdmlkZW8uCitydGM6OnNjb3BlZF9yZWZw
dHI8VmlkZW8+IEFkanVzdENvbG9ycygKKyAgICBjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0
cml4JiBjb2xvcl9tYXRyaXgsCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYg
dmlkZW8pOworCisvLyBBcHBseSBhIGNvbG9yIHRyYW5zZm9ybWF0aW9uIHRvIGEgc2luZ2xlIEk0
MjAgZnJhbWUuCitydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gQWRqdXN0
Q29sb3JzKAorICAgIGNvbnN0IENvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbG9yX21hdHJp
eCwKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIGZy
YW1lKTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKwor
I2VuZGlmICAvLyBSVENfVE9PTFNfRlJBTUVfQU5BTFlaRVJfVklERU9fQ09MT1JfQUxJR05FUl9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXJfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJh
bWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lcl91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MjBkNmY0NTllNzA1MmI1ZmFkYjBhNGFhYmY5ZGZhNDY1YWNjOTBlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2Zy
YW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXJfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSwx
NzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1l
X2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXIuaCIKKworI2luY2x1ZGUgInJ0Y190b29scy9m
cmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lzLmgiCisjaW5jbHVkZSAicnRjX3Rv
b2xzL3ZpZGVvX2ZpbGVfcmVhZGVyLmgiCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorI2luY2x1
ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkv
bGlieXV2L2luY2x1ZGUvbGlieXV2L3NjYWxlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFt
ZXNwYWNlIHRlc3QgeworCituYW1lc3BhY2UgeworCitjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9u
TWF0cml4IGtJZGVudGl0eUNvbG9yTWF0cml4ID0geworICAgIHt7MSwgMCwgMCwgMH0sIHswLCAx
LCAwLCAwfSwgezAsIDAsIDEsIDB9fX07CisKK3ZvaWQgRXhwZWN0TmVhcihjb25zdCBDb2xvclRy
YW5zZm9ybWF0aW9uTWF0cml4JiBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICBjb25zdCBDb2xv
clRyYW5zZm9ybWF0aW9uTWF0cml4JiBhY3R1YWwpIHsKKyAgLy8gVGhlIHNjYWxpbmcgZmFjdG9y
IG9uIHkvdS92IHNob3VsZCBiZSBwcmV0dHkgcHJlY2lzZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCAzOyArK2kpIHsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IDM7ICsraikKKyAgICAgIEVYUEVD
VF9ORUFSKGV4cGVjdGVkW2ldW2pdLCBhY3R1YWxbaV1bal0sIC8qIGFic19lcnJvcj0gKi8gMS4w
ZS0zKQorICAgICAgICAgIDw8ICJhdCBlbGVtZW50IGk6ICIgPDwgaSA8PCAiLCBqOiAiIDw8IGo7
CisgIH0KKyAgLy8gVGhlIG9mZnNldCBjYW4gYmUgbGVzcyBwcmVjaXNlIHNpbmNlIHRoZSByYW5n
ZSBpcyBbMCwgMjU1XS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgRVhQRUNU
X05FQVIoZXhwZWN0ZWRbaV1bM10sIGFjdHVhbFtpXVszXSwgLyogYWJzX2Vycm9yPSAqLyAwLjEp
CisgICAgICAgIDw8ICJhdCBlbGVtZW50IGk6ICIgPDwgaTsKK30KKworfSAgLy8gbmFtZXNwYWNl
CisKK2NsYXNzIFZpZGVvQ29sb3JBbGlnbmVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
eworIHByb3RlY3RlZDoKKyAgdm9pZCBTZXRVcCgpIHsKKyAgICByZWZlcmVuY2VfdmlkZW9fID0K
KyAgICAgICAgT3Blbll1dkZpbGUoUmVzb3VyY2VQYXRoKCJmb3JlbWFuXzEyOHg5NiIsICJ5dXYi
KSwgMTI4LCA5Nik7CisgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlX3ZpZGVvXyk7CisgIH0KKwor
ICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+IHJlZmVyZW5jZV92aWRlb187Cit9OworCitURVNU
X0YoVmlkZW9Db2xvckFsaWduZXJUZXN0LCBBZGp1c3RDb2xvcnNGcmFtZUlkZW50aXR5KSB7Cisg
IGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiB0ZXN0X2ZyYW1l
ID0KKyAgICAgIHJlZmVyZW5jZV92aWRlb18tPkdldEZyYW1lKDApOworCisgIC8vIEFzc3VtZSBw
ZXJmZWN0IG1hdGNoLCBpLmUuIHNzaW0gPT0gMS4KKyAgRVhQRUNUX0VRKDEuMCwKKyAgICAgICAg
ICAgIFNzaW0odGVzdF9mcmFtZSwgQWRqdXN0Q29sb3JzKGtJZGVudGl0eUNvbG9yTWF0cml4LCB0
ZXN0X2ZyYW1lKSkpOworfQorCitURVNUX0YoVmlkZW9Db2xvckFsaWduZXJUZXN0LCBBZGp1c3RD
b2xvcnNGcmFtZTF4MSkgeworICBjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbG9y
X21hdHJpeCA9IHsKKyAgICAgIHt7MSwgMiwgMywgNH0sIHs1LCA2LCA3LCA4fSwgezksIDEwLCAx
MSwgMTJ9fX07CisKKyAgY29uc3QgdWludDhfdCBkYXRhX3lbXSA9IHsyfTsKKyAgY29uc3QgdWlu
dDhfdCBkYXRhX3VbXSA9IHs2fTsKKyAgY29uc3QgdWludDhfdCBkYXRhX3ZbXSA9IHs3fTsKKyAg
Y29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGk0MjBfYnVmZmVy
ID0gSTQyMEJ1ZmZlcjo6Q29weSgKKyAgICAgIC8qIHdpZHRoPSAqLyAxLCAvKiBoZWlnaHQ9ICov
IDEsIGRhdGFfeSwgLyogc3RyaWRlX3k9ICovIDEsIGRhdGFfdSwKKyAgICAgIC8qIHN0cmlkZV91
PSAqLyAxLCBkYXRhX3YsIC8qIHN0cmlkZV92PSAqLyAxKTsKKworICBjb25zdCBydGM6OnNjb3Bl
ZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gYWRqdXN0ZWRfYnVmZmVyID0KKyAgICAgIEFk
anVzdENvbG9ycyhjb2xvcl9tYXRyaXgsIGk0MjBfYnVmZmVyKTsKKworICBFWFBFQ1RfRVEoMiAq
IDEgKyA2ICogMiArIDcgKiAzICsgNCwgYWRqdXN0ZWRfYnVmZmVyLT5EYXRhWSgpWzBdKTsKKyAg
RVhQRUNUX0VRKDIgKiA1ICsgNiAqIDYgKyA3ICogNyArIDgsIGFkanVzdGVkX2J1ZmZlci0+RGF0
YVUoKVswXSk7CisgIEVYUEVDVF9FUSgyICogOSArIDYgKiAxMCArIDcgKiAxMSArIDEyLCBhZGp1
c3RlZF9idWZmZXItPkRhdGFWKClbMF0pOworfQorCitURVNUX0YoVmlkZW9Db2xvckFsaWduZXJU
ZXN0LCBBZGp1c3RDb2xvcnNGcmFtZTF4MU5lZ2F0aXZlKSB7CisgIGNvbnN0IENvbG9yVHJhbnNm
b3JtYXRpb25NYXRyaXggY29sb3JfbWF0cml4ID0geworICAgICAge3stMSwgMCwgMCwgMjU1fSwg
ezAsIC0xLCAwLCAyNTV9LCB7MCwgMCwgLTEsIDI1NX19fTsKKworICBjb25zdCB1aW50OF90IGRh
dGFfeVtdID0gezJ9OworICBjb25zdCB1aW50OF90IGRhdGFfdVtdID0gezZ9OworICBjb25zdCB1
aW50OF90IGRhdGFfdltdID0gezd9OworICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1
ZmZlckludGVyZmFjZT4gaTQyMF9idWZmZXIgPSBJNDIwQnVmZmVyOjpDb3B5KAorICAgICAgLyog
d2lkdGg9ICovIDEsIC8qIGhlaWdodD0gKi8gMSwgZGF0YV95LCAvKiBzdHJpZGVfeT0gKi8gMSwg
ZGF0YV91LAorICAgICAgLyogc3RyaWRlX3U9ICovIDEsIGRhdGFfdiwgLyogc3RyaWRlX3Y9ICov
IDEpOworCisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBh
ZGp1c3RlZF9idWZmZXIgPQorICAgICAgQWRqdXN0Q29sb3JzKGNvbG9yX21hdHJpeCwgaTQyMF9i
dWZmZXIpOworCisgIEVYUEVDVF9FUSgyNTUgLSAyLCBhZGp1c3RlZF9idWZmZXItPkRhdGFZKClb
MF0pOworICBFWFBFQ1RfRVEoMjU1IC0gNiwgYWRqdXN0ZWRfYnVmZmVyLT5EYXRhVSgpWzBdKTsK
KyAgRVhQRUNUX0VRKDI1NSAtIDcsIGFkanVzdGVkX2J1ZmZlci0+RGF0YVYoKVswXSk7Cit9CisK
K1RFU1RfRihWaWRlb0NvbG9yQWxpZ25lclRlc3QsIEFkanVzdENvbG9yc0ZyYW1lMngyKSB7Cisg
IGNvbnN0IENvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggY29sb3JfbWF0cml4ID0geworICAgICAg
e3sxLCAyLCAzLCA0fSwgezUsIDYsIDcsIDh9LCB7OSwgMTAsIDExLCAxMn19fTsKKworICBjb25z
dCB1aW50OF90IGRhdGFfeVtdID0gezAsIDEsIDMsIDR9OworICBjb25zdCB1aW50OF90IGRhdGFf
dVtdID0gezZ9OworICBjb25zdCB1aW50OF90IGRhdGFfdltdID0gezd9OworICBjb25zdCBydGM6
OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gaTQyMF9idWZmZXIgPSBJNDIwQnVm
ZmVyOjpDb3B5KAorICAgICAgLyogd2lkdGg9ICovIDIsIC8qIGhlaWdodD0gKi8gMiwgZGF0YV95
LCAvKiBzdHJpZGVfeT0gKi8gMiwgZGF0YV91LAorICAgICAgLyogc3RyaWRlX3U9ICovIDEsIGRh
dGFfdiwgLyogc3RyaWRlX3Y9ICovIDEpOworCisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJ
NDIwQnVmZmVySW50ZXJmYWNlPiBhZGp1c3RlZF9idWZmZXIgPQorICAgICAgQWRqdXN0Q29sb3Jz
KGNvbG9yX21hdHJpeCwgaTQyMF9idWZmZXIpOworCisgIEVYUEVDVF9FUSgwICogMSArIDYgKiAy
ICsgNyAqIDMgKyA0LCBhZGp1c3RlZF9idWZmZXItPkRhdGFZKClbMF0pOworICBFWFBFQ1RfRVEo
MSAqIDEgKyA2ICogMiArIDcgKiAzICsgNCwgYWRqdXN0ZWRfYnVmZmVyLT5EYXRhWSgpWzFdKTsK
KyAgRVhQRUNUX0VRKDMgKiAxICsgNiAqIDIgKyA3ICogMyArIDQsIGFkanVzdGVkX2J1ZmZlci0+
RGF0YVkoKVsyXSk7CisgIEVYUEVDVF9FUSg0ICogMSArIDYgKiAyICsgNyAqIDMgKyA0LCBhZGp1
c3RlZF9idWZmZXItPkRhdGFZKClbM10pOworCisgIEVYUEVDVF9FUSgyICogNSArIDYgKiA2ICsg
NyAqIDcgKyA4LCBhZGp1c3RlZF9idWZmZXItPkRhdGFVKClbMF0pOworICBFWFBFQ1RfRVEoMiAq
IDkgKyA2ICogMTAgKyA3ICogMTEgKyAxMiwgYWRqdXN0ZWRfYnVmZmVyLT5EYXRhVigpWzBdKTsK
K30KKworVEVTVF9GKFZpZGVvQ29sb3JBbGlnbmVyVGVzdCwgQ2FsY3VsYXRlQ29sb3JUcmFuc2Zv
cm1hdGlvbk1hdHJpeElkZW50aXR5KSB7CisgIEVYUEVDVF9FUShrSWRlbnRpdHlDb2xvck1hdHJp
eCwgQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlX3ZpZGVvXywgcmVmZXJlbmNlX3ZpZGVvXykp
OworfQorCitURVNUX0YoVmlkZW9Db2xvckFsaWduZXJUZXN0LCBDYWxjdWxhdGVDb2xvclRyYW5z
Zm9ybWF0aW9uTWF0cml4T2Zmc2V0KSB7CisgIGNvbnN0IHVpbnQ4X3Qgc21hbGxfZGF0YV95W10g
PSB7MCwgMSwgMiwgIDMsICA0LCAgNSwgIDYsICA3LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTV9OworICBjb25zdCB1aW50OF90
IHNtYWxsX2RhdGFfdVtdID0gezE1LCAxMywgMTcsIDI5fTsKKyAgY29uc3QgdWludDhfdCBzbWFs
bF9kYXRhX3ZbXSA9IHszLCAyMDAsIDE3MCwgMjl9OworICBjb25zdCBydGM6OnNjb3BlZF9yZWZw
dHI8STQyMEJ1ZmZlckludGVyZmFjZT4gc21hbGxfaTQyMF9idWZmZXIgPQorICAgICAgSTQyMEJ1
ZmZlcjo6Q29weSgKKyAgICAgICAgICAvKiB3aWR0aD0gKi8gNCwgLyogaGVpZ2h0PSAqLyA0LCBz
bWFsbF9kYXRhX3ksIC8qIHN0cmlkZV95PSAqLyA0LAorICAgICAgICAgIHNtYWxsX2RhdGFfdSwg
Lyogc3RyaWRlX3U9ICovIDIsIHNtYWxsX2RhdGFfdiwgLyogc3RyaWRlX3Y9ICovIDIpOworCisg
IHVpbnQ4X3QgYmlnX2RhdGFfeVsxNl07CisgIHVpbnQ4X3QgYmlnX2RhdGFfdVs0XTsKKyAgdWlu
dDhfdCBiaWdfZGF0YV92WzRdOworICAvLyBDcmVhdGUgYW5vdGhlciBJNDIwIGZyYW1lIHdoZXJl
IGFsbCB2YWx1ZXMgYXJlIDEwIGJpZ2dlci4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytp
KQorICAgIGJpZ19kYXRhX3lbaV0gPSBzbWFsbF9kYXRhX3lbaV0gKyAxMDsKKyAgZm9yIChpbnQg
aSA9IDA7IGkgPCA0OyArK2kpCisgICAgYmlnX2RhdGFfdVtpXSA9IHNtYWxsX2RhdGFfdVtpXSAr
IDEwOworICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkKKyAgICBiaWdfZGF0YV92W2ldID0g
c21hbGxfZGF0YV92W2ldICsgMTA7CisKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBC
dWZmZXJJbnRlcmZhY2U+IGJpZ19pNDIwX2J1ZmZlciA9CisgICAgICBJNDIwQnVmZmVyOjpDb3B5
KAorICAgICAgICAgIC8qIHdpZHRoPSAqLyA0LCAvKiBoZWlnaHQ9ICovIDQsIGJpZ19kYXRhX3ks
IC8qIHN0cmlkZV95PSAqLyA0LAorICAgICAgICAgIGJpZ19kYXRhX3UsIC8qIHN0cmlkZV91PSAq
LyAyLCBiaWdfZGF0YV92LCAvKiBzdHJpZGVfdj0gKi8gMik7CisKKyAgY29uc3QgQ29sb3JUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBjb2xvcl9tYXRyaXggPQorICAgICAgQ2FsY3VsYXRlQ29sb3JUcmFu
c2Zvcm1hdGlvbk1hdHJpeChiaWdfaTQyMF9idWZmZXIsIHNtYWxsX2k0MjBfYnVmZmVyKTsKKwor
ICBFeHBlY3ROZWFyKHt7ezEsIDAsIDAsIDEwfSwgezAsIDEsIDAsIDEwfSwgezAsIDAsIDEsIDEw
fX19LCBjb2xvcl9tYXRyaXgpOworfQorCitURVNUX0YoVmlkZW9Db2xvckFsaWduZXJUZXN0LCBD
YWxjdWxhdGVDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4KSB7CisgIC8vIEFyYml0cmFyeSBjb2xv
ciB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisgIGNvbnN0IENvbG9yVHJhbnNmb3JtYXRpb25NYXRy
aXggb3JnX2NvbG9yX21hdHJpeCA9IHsKKyAgICAgIHt7MC44LCAwLjA1LCAwLjA0LCAtNH0sIHst
MC4yLCAwLjcsIDAuMSwgMTB9LCB7MC4xLCAwLjIsIDAuNCwgMjB9fX07CisKKyAgY29uc3QgQ29s
b3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXN1bHRfY29sb3JfbWF0cml4ID0KKyAgICAgIENhbGN1
bGF0ZUNvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXgoCisgICAgICAgICAgQWRqdXN0Q29sb3JzKG9y
Z19jb2xvcl9tYXRyaXgsIHJlZmVyZW5jZV92aWRlb18pLCByZWZlcmVuY2VfdmlkZW9fKTsKKwor
ICBFeHBlY3ROZWFyKG9yZ19jb2xvcl9tYXRyaXgsIHJlc3VsdF9jb2xvcl9tYXRyaXgpOworfQor
Cit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2Zy
YW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5X2FsaWduZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9f
Z2VvbWV0cnlfYWxpZ25lci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2NiYzA1MWM5YmYxMzNjMWZkZjFlOWNi
N2Y1MmY1MDZjMDZjYzVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21l
dHJ5X2FsaWduZXIuY2MKQEAgLTAsMCArMSwxNzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAy
MDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5X2FsaWdu
ZXIuaCIKKworI2luY2x1ZGUgPG1hcD4KKworI2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZl
ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Jl
ZmNvdW50ZWRvYmplY3QuaCIKKyNpbmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlk
ZW9fcXVhbGl0eV9hbmFseXNpcy5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNs
dWRlL2xpYnl1di9zY2FsZS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0
IHsKKworbmFtZXNwYWNlIHsKKworYm9vbCBJc1ZhbGlkUmVnaW9uKGNvbnN0IENyb3BSZWdpb24m
IHJlZ2lvbiwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQy
MEJ1ZmZlckludGVyZmFjZT4mIGZyYW1lKSB7CisgIHJldHVybiByZWdpb24ubGVmdCA+PSAwICYm
IHJlZ2lvbi5yaWdodCA+PSAwICYmIHJlZ2lvbi50b3AgPj0gMCAmJgorICAgICAgICAgcmVnaW9u
LmJvdHRvbSA+PSAwICYmIHJlZ2lvbi5sZWZ0ICsgcmVnaW9uLnJpZ2h0IDwgZnJhbWUtPndpZHRo
KCkgJiYKKyAgICAgICAgIHJlZ2lvbi50b3AgKyByZWdpb24uYm90dG9tIDwgZnJhbWUtPmhlaWdo
dCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZm
ZXJJbnRlcmZhY2U+IENyb3BBbmRab29tKAorICAgIGNvbnN0IENyb3BSZWdpb24mIGNyb3BfcmVn
aW9uLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYg
ZnJhbWUpIHsKKyAgUlRDX0NIRUNLKElzVmFsaWRSZWdpb24oY3JvcF9yZWdpb24sIGZyYW1lKSk7
CisKKyAgY29uc3QgaW50IHV2X2Nyb3BfbGVmdCA9IGNyb3BfcmVnaW9uLmxlZnQgLyAyOworICBj
b25zdCBpbnQgdXZfY3JvcF90b3AgPSBjcm9wX3JlZ2lvbi50b3AgLyAyOworCisgIGNvbnN0IGlu
dCBjcm9wcGVkX3dpZHRoID0KKyAgICAgIGZyYW1lLT53aWR0aCgpIC0gY3JvcF9yZWdpb24ubGVm
dCAtIGNyb3BfcmVnaW9uLnJpZ2h0OworICBjb25zdCBpbnQgY3JvcHBlZF9oZWlnaHQgPQorICAg
ICAgZnJhbWUtPmhlaWdodCgpIC0gY3JvcF9yZWdpb24udG9wIC0gY3JvcF9yZWdpb24uYm90dG9t
OworCisgIC8vIENyb3AgYnkgb25seSBhZGp1c3RpbmcgcG9pbnRlcnMuCisgIGNvbnN0IHVpbnQ4
X3QqIHlfcGxhbmUgPQorICAgICAgZnJhbWUtPkRhdGFZKCkgKyBmcmFtZS0+U3RyaWRlWSgpICog
Y3JvcF9yZWdpb24udG9wICsgY3JvcF9yZWdpb24ubGVmdDsKKyAgY29uc3QgdWludDhfdCogdV9w
bGFuZSA9CisgICAgICBmcmFtZS0+RGF0YVUoKSArIGZyYW1lLT5TdHJpZGVVKCkgKiB1dl9jcm9w
X3RvcCArIHV2X2Nyb3BfbGVmdDsKKyAgY29uc3QgdWludDhfdCogdl9wbGFuZSA9CisgICAgICBm
cmFtZS0+RGF0YVYoKSArIGZyYW1lLT5TdHJpZGVWKCkgKiB1dl9jcm9wX3RvcCArIHV2X2Nyb3Bf
bGVmdDsKKworICAvLyBTdHJldGNoIHRoZSBjcm9wcGVkIGZyYW1lIHRvIHRoZSBvcmlnaW5hbCBz
aXplIHVzaW5nIGxpYnl1di4KKyAgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXI+IGFkanVz
dGVkX2ZyYW1lID0KKyAgICAgIEk0MjBCdWZmZXI6OkNyZWF0ZShmcmFtZS0+d2lkdGgoKSwgZnJh
bWUtPmhlaWdodCgpKTsKKyAgbGlieXV2OjpJNDIwU2NhbGUoeV9wbGFuZSwgZnJhbWUtPlN0cmlk
ZVkoKSwgdV9wbGFuZSwgZnJhbWUtPlN0cmlkZVUoKSwKKyAgICAgICAgICAgICAgICAgICAgdl9w
bGFuZSwgZnJhbWUtPlN0cmlkZVYoKSwgY3JvcHBlZF93aWR0aCwgY3JvcHBlZF9oZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgIGFkanVzdGVkX2ZyYW1lLT5NdXRhYmxlRGF0YVkoKSwgYWRqdXN0
ZWRfZnJhbWUtPlN0cmlkZVkoKSwKKyAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRfZnJhbWUt
Pk11dGFibGVEYXRhVSgpLCBhZGp1c3RlZF9mcmFtZS0+U3RyaWRlVSgpLAorICAgICAgICAgICAg
ICAgICAgICBhZGp1c3RlZF9mcmFtZS0+TXV0YWJsZURhdGFWKCksIGFkanVzdGVkX2ZyYW1lLT5T
dHJpZGVWKCksCisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT53aWR0aCgpLCBmcmFtZS0+aGVp
Z2h0KCksIGxpYnl1djo6a0ZpbHRlckJpbGluZWFyKTsKKworICByZXR1cm4gYWRqdXN0ZWRfZnJh
bWU7Cit9CisKK0Nyb3BSZWdpb24gQ2FsY3VsYXRlQ3JvcFJlZ2lvbigKKyAgICBjb25zdCBydGM6
OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHJlZmVyZW5jZV9mcmFtZSwKKyAg
ICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHRlc3RfZnJh
bWUpIHsKKyAgUlRDX0NIRUNLX0VRKHJlZmVyZW5jZV9mcmFtZS0+d2lkdGgoKSwgdGVzdF9mcmFt
ZS0+d2lkdGgoKSk7CisgIFJUQ19DSEVDS19FUShyZWZlcmVuY2VfZnJhbWUtPmhlaWdodCgpLCB0
ZXN0X2ZyYW1lLT5oZWlnaHQoKSk7CisKKyAgQ3JvcFJlZ2lvbiBiZXN0X3JlZ2lvbjsKKyAgZG91
YmxlIGJlc3Rfc3NpbSA9IFNzaW0ocmVmZXJlbmNlX2ZyYW1lLCB0ZXN0X2ZyYW1lKTsKKworICB0
eXBlZGVmIGludCBDcm9wUmVnaW9uOjoqQ3JvcFBhcmFtZXRlcjsKKyAgQ3JvcFBhcmFtZXRlciBj
cm9wX3BhcmFtZXRlcnNbNF0gPSB7JkNyb3BSZWdpb246OmxlZnQsICZDcm9wUmVnaW9uOjp0b3As
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDcm9wUmVnaW9uOjpyaWdo
dCwgJkNyb3BSZWdpb246OmJvdHRvbX07CisKKyAgd2hpbGUgKHRydWUpIHsKKyAgICAvLyBGaW5k
IHRoZSBwYXJhbWV0ZXIgaW4gd2hpY2ggZGlyZWN0aW9uIFNTSU0gaW1wcm92ZXMgdGhlIG1vc3Qu
CisgICAgQ3JvcFBhcmFtZXRlciBiZXN0X3BhcmFtZXRlciA9IG51bGxwdHI7CisgICAgY29uc3Qg
Q3JvcFJlZ2lvbiBwcmV2X2Jlc3RfcmVnaW9uID0gYmVzdF9yZWdpb247CisKKyAgICBmb3IgKENy
b3BQYXJhbWV0ZXIgY3JvcF9wYXJhbWV0ZXIgOiBjcm9wX3BhcmFtZXRlcnMpIHsKKyAgICAgIENy
b3BSZWdpb24gdGVzdF9yZWdpb24gPSBwcmV2X2Jlc3RfcmVnaW9uOworICAgICAgKysodGVzdF9y
ZWdpb24uKmNyb3BfcGFyYW1ldGVyKTsKKworICAgICAgaWYgKCFJc1ZhbGlkUmVnaW9uKHRlc3Rf
cmVnaW9uLCByZWZlcmVuY2VfZnJhbWUpKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgY29u
c3QgZG91YmxlIHNzaW0gPQorICAgICAgICAgIFNzaW0oQ3JvcEFuZFpvb20odGVzdF9yZWdpb24s
IHJlZmVyZW5jZV9mcmFtZSksIHRlc3RfZnJhbWUpOworCisgICAgICBpZiAoc3NpbSA+IGJlc3Rf
c3NpbSkgeworICAgICAgICBiZXN0X3NzaW0gPSBzc2ltOworICAgICAgICBiZXN0X3BhcmFtZXRl
ciA9IGNyb3BfcGFyYW1ldGVyOworICAgICAgICBiZXN0X3JlZ2lvbiA9IHRlc3RfcmVnaW9uOwor
ICAgICAgfQorICAgIH0KKworICAgIC8vIE5vIGltcHJvdmVtZW50IGFtb25nIGFueSBkaXJlY3Rp
b24sIHN0b3AgaXRlcmF0aW9uLgorICAgIGlmIChiZXN0X3BhcmFtZXRlciA9PSBudWxscHRyKQor
ICAgICAgYnJlYWs7CisKKyAgICAvLyBJdGVyYXRlIGluIHRoZSBiZXN0IGRpcmVjdGlvbiBhcyBs
b25nIGFzIGl0IGltcHJvdmVzIFNTSU0uCisgICAgZm9yIChDcm9wUmVnaW9uIHRlc3RfcmVnaW9u
ID0gYmVzdF9yZWdpb247CisgICAgICAgICBJc1ZhbGlkUmVnaW9uKHRlc3RfcmVnaW9uLCByZWZl
cmVuY2VfZnJhbWUpOworICAgICAgICAgKysodGVzdF9yZWdpb24uKmJlc3RfcGFyYW1ldGVyKSkg
eworICAgICAgY29uc3QgZG91YmxlIHNzaW0gPQorICAgICAgICAgIFNzaW0oQ3JvcEFuZFpvb20o
dGVzdF9yZWdpb24sIHJlZmVyZW5jZV9mcmFtZSksIHRlc3RfZnJhbWUpOworICAgICAgaWYgKHNz
aW0gPD0gYmVzdF9zc2ltKQorICAgICAgICBicmVhazsKKworICAgICAgYmVzdF9zc2ltID0gc3Np
bTsKKyAgICAgIGJlc3RfcmVnaW9uID0gdGVzdF9yZWdpb247CisgICAgfQorICB9CisKKyAgcmV0
dXJuIGJlc3RfcmVnaW9uOworfQorCitydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVy
ZmFjZT4gQWRqdXN0Q3JvcHBpbmcoCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBC
dWZmZXJJbnRlcmZhY2U+JiByZWZlcmVuY2VfZnJhbWUsCisgICAgY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+JiB0ZXN0X2ZyYW1lKSB7CisgIHJldHVybiBDcm9w
QW5kWm9vbShDYWxjdWxhdGVDcm9wUmVnaW9uKHJlZmVyZW5jZV9mcmFtZSwgdGVzdF9mcmFtZSks
CisgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VfZnJhbWUpOworfQorCitydGM6OnNjb3Bl
ZF9yZWZwdHI8VmlkZW8+IEFkanVzdENyb3BwaW5nKAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxWaWRlbz4mIHJlZmVyZW5jZV92aWRlbywKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZw
dHI8VmlkZW8+JiB0ZXN0X3ZpZGVvKSB7CisgIGNsYXNzIENyb3BwZWRWaWRlbyA6IHB1YmxpYyBy
dGM6OlJlZkNvdW50ZWRPYmplY3Q8VmlkZW8+IHsKKyAgIHB1YmxpYzoKKyAgICBDcm9wcGVkVmlk
ZW8oY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgcmVmZXJlbmNlX3ZpZGVvLAorICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+JiB0ZXN0X3ZpZGVv
KQorICAgICAgICA6IHJlZmVyZW5jZV92aWRlb18ocmVmZXJlbmNlX3ZpZGVvKSwgdGVzdF92aWRl
b18odGVzdF92aWRlbykgeworICAgICAgUlRDX0NIRUNLX0VRKHJlZmVyZW5jZV92aWRlby0+bnVt
YmVyX29mX2ZyYW1lcygpLAorICAgICAgICAgICAgICAgICAgIHRlc3RfdmlkZW8tPm51bWJlcl9v
Zl9mcmFtZXMoKSk7CisgICAgICBSVENfQ0hFQ0tfRVEocmVmZXJlbmNlX3ZpZGVvLT53aWR0aCgp
LCB0ZXN0X3ZpZGVvLT53aWR0aCgpKTsKKyAgICAgIFJUQ19DSEVDS19FUShyZWZlcmVuY2Vfdmlk
ZW8tPmhlaWdodCgpLCB0ZXN0X3ZpZGVvLT5oZWlnaHQoKSk7CisgICAgfQorCisgICAgaW50IHdp
ZHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdGVzdF92aWRlb18tPndpZHRoKCk7IH0KKyAg
ICBpbnQgaGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdGVzdF92aWRlb18tPmhlaWdo
dCgpOyB9CisgICAgc2l6ZV90IG51bWJlcl9vZl9mcmFtZXMoKSBjb25zdCBvdmVycmlkZSB7Cisg
ICAgICByZXR1cm4gdGVzdF92aWRlb18tPm51bWJlcl9vZl9mcmFtZXMoKTsKKyAgICB9CisKKyAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gR2V0RnJhbWUoCisgICAg
ICAgIHNpemVfdCBpbmRleCkgY29uc3Qgb3ZlcnJpZGUgeworICAgICAgY29uc3QgcnRjOjpzY29w
ZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IHJlZmVyZW5jZV9mcmFtZSA9CisgICAgICAg
ICAgcmVmZXJlbmNlX3ZpZGVvXy0+R2V0RnJhbWUoaW5kZXgpOworCisgICAgICAvLyBPbmx5IGNh
bGN1bGF0ZSBjcm9wcGluZyByZWdpb24gb25jZSBwZXIgZnJhbWUgc2luY2UgaXQncyBleHBlbnNp
dmUuCisgICAgICBpZiAoIWNyb3BfcmVnaW9uc18uY291bnQoaW5kZXgpKSB7CisgICAgICAgIGNy
b3BfcmVnaW9uc19baW5kZXhdID0KKyAgICAgICAgICAgIENhbGN1bGF0ZUNyb3BSZWdpb24ocmVm
ZXJlbmNlX2ZyYW1lLCB0ZXN0X3ZpZGVvXy0+R2V0RnJhbWUoaW5kZXgpKTsKKyAgICAgIH0KKwor
ICAgICAgcmV0dXJuIENyb3BBbmRab29tKGNyb3BfcmVnaW9uc19baW5kZXhdLCByZWZlcmVuY2Vf
ZnJhbWUpOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZw
dHI8VmlkZW8+IHJlZmVyZW5jZV92aWRlb187CisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRy
PFZpZGVvPiB0ZXN0X3ZpZGVvXzsKKyAgICAvLyBNdXRhYmxlIHNpbmNlIHRoaXMgaXMgYSBjYWNo
ZSB0aGF0IGFmZmVjdHMgcGVyZm9ybWFuY2UgYW5kIG5vdCBsb2dpY2FsCisgICAgLy8gYmVoYXZp
b3IuCisgICAgbXV0YWJsZSBzdGQ6Om1hcDxzaXplX3QsIENyb3BSZWdpb24+IGNyb3BfcmVnaW9u
c187CisgIH07CisKKyAgcmV0dXJuIG5ldyBDcm9wcGVkVmlkZW8ocmVmZXJlbmNlX3ZpZGVvLCB0
ZXN0X3ZpZGVvKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19nZW9tZXRyeV9hbGlnbmVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVf
YW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3NjY3YjBkMTM1
ZGEyNjNlZTQwZDAwMDJmMGI0OTM3ZjFkYTZlNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6
ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9WSURFT19HRU9N
RVRSWV9BTElHTkVSX0hfCisjZGVmaW5lIFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9WSURFT19H
RU9NRVRSWV9BTElHTkVSX0hfCisKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVm
ZmVyLmgiCisjaW5jbHVkZSAicnRjX3Rvb2xzL3ZpZGVvX2ZpbGVfcmVhZGVyLmgiCisKK25hbWVz
cGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCitzdHJ1Y3QgQ3JvcFJlZ2lvbiB7Cisg
IC8vIEVhY2ggdmFsdWUgcmVwcmVzZW50cyBob3cgbXVjaCB0byBjcm9wIGZyb20gZWFjaCBzaWRl
LiBMZWZ0IGlzIHdoZXJlIHg9MCwKKyAgLy8gYW5kIHRvcCBpcyB3aGVyZSB5PTAuIEFsbCB2YWx1
ZXMgZXF1YWwgdG8gemVybyByZXByZXNlbnRzIG5vIGNyb3BwaW5nLgorICBpbnQgbGVmdCA9IDA7
CisgIGludCByaWdodCA9IDA7CisgIGludCB0b3AgPSAwOworICBpbnQgYm90dG9tID0gMDsKK307
CisKKy8vIENyb3BzIGFuZCB6b29tcyBpbiBvbiB0aGUgY3JvcHBlZCByZWdpb24gc28gdGhhdCB0
aGUgcmV0dXJuZWQgZnJhbWUgaGFzIHRoZQorLy8gc2FtZSByZXNvbHV0aW9uIGFzIHRoZSBpbnB1
dCBmcmFtZS4KK3J0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBDcm9wQW5k
Wm9vbSgKKyAgICBjb25zdCBDcm9wUmVnaW9uJiBjcm9wX3JlZ2lvbiwKKyAgICBjb25zdCBydGM6
OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIGZyYW1lKTsKKworLy8gQ2FsY3Vs
YXRlIHRoZSBvcHRpbWFsIGNyb3BwaW5nIHJlZ2lvbiBvbiB0aGUgcmVmZXJlbmNlIGZyYW1lIHRv
IG1heGltaXplIFNTSU0KKy8vIHRvIHRoZSB0ZXN0IGZyYW1lLgorQ3JvcFJlZ2lvbiBDYWxjdWxh
dGVDcm9wUmVnaW9uKAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50
ZXJmYWNlPiYgcmVmZXJlbmNlX2ZyYW1lLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJ
NDIwQnVmZmVySW50ZXJmYWNlPiYgdGVzdF9mcmFtZSk7CisKKy8vIFJldHVybnMgYSBjcm9wcGVk
IGFuZCB6b29tZWQgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNlIGZyYW1lIHRoYXQgbWF0Y2hlcyB1
cAorLy8gdG8gdGhlIHRlc3QgZnJhbWUuIFRoaXMgaXMgYSBzaW1wbGUgaGVscGVyIGZ1bmN0aW9u
IG9uIHRvcCBvZgorLy8gQ2FsY3VsYXRlQ3JvcFJlZ2lvbigpIGFuZCBDcm9wQW5kWm9vbSgpLgor
cnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IEFkanVzdENyb3BwaW5nKAor
ICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgcmVmZXJl
bmNlX2ZyYW1lLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJm
YWNlPiYgdGVzdF9mcmFtZSk7CisKKy8vIFJldHVybnMgYSBjcm9wcGVkIGFuZCB6b29tZWQgdmVy
c2lvbiBvZiB0aGUgcmVmZXJlbmNlIHZpZGVvIHRoYXQgbWF0Y2hlcyB1cAorLy8gdG8gdGhlIHRl
c3QgdmlkZW8uIEZyYW1lcyBhcmUgaW5kaXZpZHVhbGx5IGFkanVzdGVkIGZvciBjcm9wcGluZy4K
K3J0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4gQWRqdXN0Q3JvcHBpbmcoCisgICAgY29uc3QgcnRj
OjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgcmVmZXJlbmNlX3ZpZGVvLAorICAgIGNvbnN0IHJ0Yzo6
c2NvcGVkX3JlZnB0cjxWaWRlbz4mIHRlc3RfdmlkZW8pOworCit9ICAvLyBuYW1lc3BhY2UgdGVz
dAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFJUQ19UT09MU19GUkFNRV9B
TkFMWVpFUl9WSURFT19HRU9NRVRSWV9BTElHTkVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIv
dmlkZW9fZ2VvbWV0cnlfYWxpZ25lcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19nZW9t
ZXRyeV9hbGlnbmVyX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyNmY3NzcyZTFiOTIwNDZlOTAw
ZGZiNDBhM2FmYzZhNWY3YmQxNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9f
Z2VvbWV0cnlfYWxpZ25lcl91bml0dGVzdC5jYwpAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9f
Z2VvbWV0cnlfYWxpZ25lci5oIgorCisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAicnRj
X3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuaCIKKyNpbmNsdWRl
ICJydGNfdG9vbHMvdmlkZW9fZmlsZV9yZWFkZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0Lmgi
CisjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKK2NsYXNzIFZpZGVvR2VvbWV0cnlBbGlnbmVyVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdm9pZCBTZXRVcCgp
IHsKKyAgICByZWZlcmVuY2VfdmlkZW9fID0KKyAgICAgICAgT3Blbll1dkZpbGUoUmVzb3VyY2VQ
YXRoKCJmb3JlbWFuXzEyOHg5NiIsICJ5dXYiKSwgMTI4LCA5Nik7CisgICAgQVNTRVJUX1RSVUUo
cmVmZXJlbmNlX3ZpZGVvXyk7CisKKyAgICAvLyBWZXJ5IHNpbXBsZSA0eDQgZnJhbWUgdXNlZCBm
b3IgdmVyeWluZyBDcm9wQW5kWm9vbS4KKyAgICBjb25zdCB1aW50OF90IGRhdGFfeVtdID0gezAs
IDEsIDIsICAzLCAgNCwgIDUsICA2LCAgNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTV9OworICAgIGNvbnN0IHVpbnQ4X3QgZGF0YV91
W10gPSB7MCwgMSwgMiwgM307CisgICAgY29uc3QgdWludDhfdCBkYXRhX3ZbXSA9IHswLCAxLCAy
LCAzfTsKKyAgICB0ZXN0X2ZyYW1lXyA9IEk0MjBCdWZmZXI6OkNvcHkoCisgICAgICAgIC8qIHdp
ZHRoPSAqLyA0LCAvKiBoZWlnaHQ9ICovIDQsIGRhdGFfeSwgLyogc3RyaWRlX3k9ICovIDQsIGRh
dGFfdSwKKyAgICAgICAgLyogc3RyaWRlX3U9ICovIDIsIGRhdGFfdiwgLyogc3RyaWRlX3Y9ICov
IDIpOworICB9CisKKyAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiByZWZlcmVuY2VfdmlkZW9f
OworICBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gdGVzdF9mcmFtZV87
Cit9OworCisvLyBUZWFjaCBndGVzdCBob3cgdG8gY29tcGFyZSBDcm9wUmVnaW9ucy4KK2Jvb2wg
b3BlcmF0b3I9PShjb25zdCBDcm9wUmVnaW9uJiBhLCBjb25zdCBDcm9wUmVnaW9uJiBiKSB7Cisg
IHJldHVybiBhLmxlZnQgPT0gYi5sZWZ0ICYmIGEudG9wID09IGIudG9wICYmIGEucmlnaHQgPT0g
Yi5yaWdodCAmJgorICAgICAgICAgYS5ib3R0b20gPT0gYi5ib3R0b207Cit9CisKK1RFU1RfRihW
aWRlb0dlb21ldHJ5QWxpZ25lclRlc3QsIENyb3BBbmRab29tSWRlbnRpdHkpIHsKKyAgY29uc3Qg
cnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGZyYW1lID0KKyAgICAgIHJl
ZmVyZW5jZV92aWRlb18tPkdldEZyYW1lKDApOworCisgIC8vIEFzc3VtZSBwZXJmZWN0IG1hdGNo
LCBpLmUuIFNTSU0gPT0gMS4KKyAgQ3JvcFJlZ2lvbiBpZGVudGl0eV9yZWdpb247CisgIEVYUEVD
VF9FUSgxLjAsIFNzaW0oZnJhbWUsIENyb3BBbmRab29tKGlkZW50aXR5X3JlZ2lvbiwgZnJhbWUp
KSk7Cit9CisKK1RFU1RfRihWaWRlb0dlb21ldHJ5QWxpZ25lclRlc3QsIENyb3BBbmRab29tTGVm
dCkgeworICBDcm9wUmVnaW9uIHJlZ2lvbjsKKyAgcmVnaW9uLmxlZnQgPSAyOworICBjb25zdCBy
dGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gY3JvcHBlZF9mcmFtZSA9Cisg
ICAgICBDcm9wQW5kWm9vbShyZWdpb24sIHRlc3RfZnJhbWVfKTsKKyAgRVhQRUNUX0VRKHN0ZDo6
dmVjdG9yPHVpbnQ4X3Q+KAorICAgICAgICAgICAgICAgIHsyLCAyLCAzLCAzLCA2LCA2LCA3LCA3
LCAxMCwgMTAsIDExLCAxMSwgMTQsIDE0LCAxNSwgMTV9KSwKKyAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRhdGFZKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcm9wcGVkX2ZyYW1lLT5EYXRhWSgpICsgMTYpKTsKKyAgRVhQRUNUX0VR
KAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oezEsIDEsIDMsIDN9KSwKKyAgICAgIHN0ZDo6
dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRhdGFVKCksIGNyb3BwZWRfZnJhbWUtPkRh
dGFVKCkgKyA0KSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHsx
LCAxLCAzLCAzfSksCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pihjcm9wcGVkX2ZyYW1lLT5E
YXRhVigpLCBjcm9wcGVkX2ZyYW1lLT5EYXRhVigpICsgNCkpOworfQorCitURVNUX0YoVmlkZW9H
ZW9tZXRyeUFsaWduZXJUZXN0LCBDcm9wQW5kWm9vbVRvcCkgeworICBDcm9wUmVnaW9uIHJlZ2lv
bjsKKyAgcmVnaW9uLnRvcCA9IDI7CisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVm
ZmVySW50ZXJmYWNlPiBjcm9wcGVkX2ZyYW1lID0KKyAgICAgIENyb3BBbmRab29tKHJlZ2lvbiwg
dGVzdF9mcmFtZV8pOworICBFWFBFQ1RfRVEoc3RkOjp2ZWN0b3I8dWludDhfdD4oCisgICAgICAg
ICAgICAgICAgezgsIDksIDEwLCAxMSwgMTAsIDExLCAxMiwgMTMsIDEyLCAxMywgMTQsIDE1LCAx
MiwgMTMsIDE0LCAxNX0pLAorICAgICAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oY3JvcHBl
ZF9mcmFtZS0+RGF0YVkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3Bw
ZWRfZnJhbWUtPkRhdGFZKCkgKyAxNikpOworICBFWFBFQ1RfRVEoCisgICAgICBzdGQ6OnZlY3Rv
cjx1aW50OF90Pih7MiwgMywgMiwgM30pLAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oY3Jv
cHBlZF9mcmFtZS0+RGF0YVUoKSwgY3JvcHBlZF9mcmFtZS0+RGF0YVUoKSArIDQpKTsKKyAgRVhQ
RUNUX0VRKAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oezIsIDMsIDIsIDN9KSwKKyAgICAg
IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRhdGFWKCksIGNyb3BwZWRfZnJh
bWUtPkRhdGFWKCkgKyA0KSk7Cit9CisKK1RFU1RfRihWaWRlb0dlb21ldHJ5QWxpZ25lclRlc3Qs
IENyb3BBbmRab29tUmlnaHQpIHsKKyAgQ3JvcFJlZ2lvbiByZWdpb247CisgIHJlZ2lvbi5yaWdo
dCA9IDI7CisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBj
cm9wcGVkX2ZyYW1lID0KKyAgICAgIENyb3BBbmRab29tKHJlZ2lvbiwgdGVzdF9mcmFtZV8pOwor
ICBFWFBFQ1RfRVEoc3RkOjp2ZWN0b3I8dWludDhfdD4oCisgICAgICAgICAgICAgICAgezAsIDAs
IDEsIDEsIDQsIDQsIDUsIDUsIDgsIDgsIDksIDksIDEyLCAxMiwgMTMsIDEzfSksCisgICAgICAg
ICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhWSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JvcHBlZF9mcmFtZS0+RGF0YVkoKSArIDE2KSk7
CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHswLCAwLCAyLCAyfSks
CisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhVSgpLCBjcm9w
cGVkX2ZyYW1lLT5EYXRhVSgpICsgNCkpOworICBFWFBFQ1RfRVEoCisgICAgICBzdGQ6OnZlY3Rv
cjx1aW50OF90Pih7MCwgMCwgMiwgMn0pLAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oY3Jv
cHBlZF9mcmFtZS0+RGF0YVYoKSwgY3JvcHBlZF9mcmFtZS0+RGF0YVYoKSArIDQpKTsKK30KKwor
VEVTVF9GKFZpZGVvR2VvbWV0cnlBbGlnbmVyVGVzdCwgQ3JvcEFuZFpvb21Cb3R0b20pIHsKKyAg
Q3JvcFJlZ2lvbiByZWdpb247CisgIHJlZ2lvbi5ib3R0b20gPSAyOworICBjb25zdCBydGM6OnNj
b3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gY3JvcHBlZF9mcmFtZSA9CisgICAgICBD
cm9wQW5kWm9vbShyZWdpb24sIHRlc3RfZnJhbWVfKTsKKyAgRVhQRUNUX0VRKAorICAgICAgc3Rk
Ojp2ZWN0b3I8dWludDhfdD4oezAsIDEsIDIsIDMsIDIsIDMsIDQsIDUsIDQsIDUsIDYsIDcsIDQs
IDUsIDYsIDd9KSwKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRh
dGFZKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9wcGVkX2ZyYW1lLT5EYXRhWSgp
ICsgMTYpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oezAsIDEs
IDAsIDF9KSwKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRhdGFV
KCksIGNyb3BwZWRfZnJhbWUtPkRhdGFVKCkgKyA0KSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0
ZDo6dmVjdG9yPHVpbnQ4X3Q+KHswLCAxLCAwLCAxfSksCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50
OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhVigpLCBjcm9wcGVkX2ZyYW1lLT5EYXRhVigpICsgNCkp
OworfQorCitURVNUX0YoVmlkZW9HZW9tZXRyeUFsaWduZXJUZXN0LCBDYWxjdWxhdGVDcm9wUmVn
aW9uSWRlbnRpdHkpIHsKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRl
cmZhY2U+IGZyYW1lID0KKyAgICAgIHJlZmVyZW5jZV92aWRlb18tPkdldEZyYW1lKDApOworICBD
cm9wUmVnaW9uIGlkZW50aXR5X3JlZ2lvbjsKKyAgRVhQRUNUX0VRKGlkZW50aXR5X3JlZ2lvbiwg
Q2FsY3VsYXRlQ3JvcFJlZ2lvbihmcmFtZSwgZnJhbWUpKTsKK30KKworVEVTVF9GKFZpZGVvR2Vv
bWV0cnlBbGlnbmVyVGVzdCwgQ2FsY3VsYXRlQ3JvcFJlZ2lvbkFyYml0cmFyeSkgeworICAvLyBB
cmJpdHJhcnkgY3JvcCByZWdpb24uCisgIENyb3BSZWdpb24gY3JvcF9yZWdpb247CisgIGNyb3Bf
cmVnaW9uLmxlZnQgPSAyOworICBjcm9wX3JlZ2lvbi50b3AgPSA0OworICBjcm9wX3JlZ2lvbi5y
aWdodCA9IDU7CisgIGNyb3BfcmVnaW9uLmJvdHRvbSA9IDM7CisKKyAgY29uc3QgcnRjOjpzY29w
ZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGZyYW1lID0KKyAgICAgIHJlZmVyZW5jZV92
aWRlb18tPkdldEZyYW1lKDApOworCisgIEVYUEVDVF9FUShjcm9wX3JlZ2lvbiwKKyAgICAgICAg
ICAgIENhbGN1bGF0ZUNyb3BSZWdpb24oZnJhbWUsIENyb3BBbmRab29tKGNyb3BfcmVnaW9uLCBm
cmFtZSkpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lzLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2Fu
YWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuY2MKaW5kZXggMWMzMGQwOGM1NjU1MWJhMzk1
MWNkYzNjZmY0ZjBlZDM3NjE2YjMyOS4uNDAwMjY4MDJjNzc0M2RhODQxMjk0MjA5YmRhYWJmMWVl
ODIyMGFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xz
L2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuY2MKQEAgLTEzLDYgKzEzLDcg
QEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bnVtZXJpYz4KIAorI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L3BlcmZfdGVz
dC5oIgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9jb21wYXJl
LmgiCiAjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnQu
aCIKQEAgLTU2LDE2ICs1NywxMSBAQCBzdGQ6OnZlY3RvcjxBbmFseXNpc1Jlc3VsdD4gUnVuQW5h
bHlzaXMoCiAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6dGVzdDo6VmlkZW8+
JiB0ZXN0X3ZpZGVvLAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHRlc3RfZnJhbWVf
aW5kaWNlcykgewogICBzdGQ6OnZlY3RvcjxBbmFseXNpc1Jlc3VsdD4gcmVzdWx0czsKLSAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2ZyYW1lX2luZGljZXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAvLyBJZ25vcmUgZHVwbGljYXRlZCBmcmFtZXMgaW4gdGhlIHRlc3QgdmlkZW8uCi0gICAgaWYg
KGkgPiAwICYmIHRlc3RfZnJhbWVfaW5kaWNlc1tpXSA9PSB0ZXN0X2ZyYW1lX2luZGljZXNbaSAt
IDFdKQotICAgICAgY29udGludWU7Ci0KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X3Zp
ZGVvLT5udW1iZXJfb2ZfZnJhbWVzKCk7ICsraSkgewogICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgdGVzdF9mcmFtZSA9CiAgICAgICAgIHRlc3Rfdmlk
ZW8tPkdldEZyYW1lKGkpOwogICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVy
SW50ZXJmYWNlPiYgcmVmZXJlbmNlX2ZyYW1lID0KLSAgICAgICAgcmVmZXJlbmNlX3ZpZGVvLT5H
ZXRGcmFtZSh0ZXN0X2ZyYW1lX2luZGljZXNbaV0gJQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlZmVyZW5jZV92aWRlby0+bnVtYmVyX29mX2ZyYW1lcygpKTsKKyAgICAgICAg
cmVmZXJlbmNlX3ZpZGVvLT5HZXRGcmFtZShpKTsKIAogICAgIC8vIEZpbGwgaW4gdGhlIHJlc3Vs
dCBzdHJ1Y3QuCiAgICAgQW5hbHlzaXNSZXN1bHQgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5
emVyL3ZpZGVvX3RlbXBvcmFsX2FsaWduZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fdGVtcG9yYWxf
YWxpZ25lci5jYwppbmRleCAyZWJmZmJjNGU3NWIzYmU0MDBkOWVkOGQ0ZDY4NDQ4MWRhYjFjZTgw
Li5mYTI1ZjczZjhlMTQ0OGM4N2Q0MGQ3Nzk5ZTJkOTAxMWU4ZDA0M2Y4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVf
YW5hbHl6ZXIvdmlkZW9fdGVtcG9yYWxfYWxpZ25lci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9f
dGVtcG9yYWxfYWxpZ25lci5jYwpAQCAtMjE1LDcgKzIxNSw3IEBAIHN0ZDo6dmVjdG9yPHNpemVf
dD4gRmluZE1hdGNoaW5nRnJhbWVJbmRpY2VzKAogCiBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+
IFJlb3JkZXJWaWRlbyhjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+JiB2aWRlbywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNp
emVfdD4mIGluZGljZXMpIHsKLSAgcmV0dXJuIG5ldyBSZW9yZGVyZWRWaWRlbyh2aWRlbywgaW5k
aWNlcyk7CisgIHJldHVybiBuZXcgUmVvcmRlcmVkVmlkZW8obmV3IExvb3BpbmdWaWRlbyh2aWRl
byksIGluZGljZXMpOwogfQogCiBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+IEdlbmVyYXRlQWxp
Z25lZFJlZmVyZW5jZVZpZGVvKApAQCAtMjI4LDcgKzIyOCw3IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxWaWRlbz4gR2VuZXJhdGVBbGlnbmVkUmVmZXJlbmNlVmlkZW8oCiBydGM6OnNjb3BlZF9yZWZw
dHI8VmlkZW8+IEdlbmVyYXRlQWxpZ25lZFJlZmVyZW5jZVZpZGVvKAogICAgIGNvbnN0IHJ0Yzo6
c2NvcGVkX3JlZnB0cjxWaWRlbz4mIHJlZmVyZW5jZV92aWRlbywKICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzaXplX3Q+JiBpbmRpY2VzKSB7Ci0gIHJldHVybiBSZW9yZGVyVmlkZW8obmV3IExvb3Bp
bmdWaWRlbyhyZWZlcmVuY2VfdmlkZW8pLCBpbmRpY2VzKTsKKyAgcmV0dXJuIFJlb3JkZXJWaWRl
byhyZWZlcmVuY2VfdmlkZW8sIGluZGljZXMpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X3Rvb2xzL25ldHdvcmtfdGVzdGVyL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVyL0JVSUxELmduCmluZGV4
IGE1MDM2ZGNlYTljZDE4NjAwMWQ4ZDQ5M2Y0MTI1NzUwMDkyZTcyYjYuLjQ3YjgxNDMwNDcyYjE3
OTU3NGIwNTZhMzNmYWVkOGIwNjYyNGRiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci9CVUlMRC5n
bgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9v
bHMvbmV0d29ya190ZXN0ZXIvQlVJTEQuZ24KQEAgLTYsOCArNiw4IEBACiAjIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKICMgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAK
LWltcG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCiBpbXBvcnQoIi8vdGhpcmRfcGFydHkvcHJvdG9i
dWYvcHJvdG9fbGlicmFyeS5nbmkiKQoraW1wb3J0KCIuLi8uLi93ZWJydGMuZ25pIikKIAogaWYg
KHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAgcHJvdG9fbGlicmFyeSgibmV0d29ya190ZXN0ZXJf
Y29uZmlnX3Byb3RvIikgewpAQCAtNDQsNiArNDQsNyBAQCBpZiAocnRjX2VuYWJsZV9wcm90b2J1
ZikgewogICAgICAgIi4uLy4uL3AycCIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwK
ICAgICAgICIuLi8uLi9ydGNfYmFzZTpwcm90b2J1Zl91dGlscyIsCisgICAgICAiLi4vLi4vcnRj
X2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVk
IiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCiAgICAgICAiLi4vLi4v
cnRjX2Jhc2U6c2VxdWVuY2VkX3Rhc2tfY2hlY2tlciIsCkBAIC04MCw3ICs4MSw3IEBAIGlmIChy
dGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAKICAgICBkZXBzID0gWwogICAgICAgIjpuZXR3b3JrX3Rl
c3RlciIsCi0gICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAorICAg
ICAgIi4uLy4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICAgIi4uLy4uL3Rlc3Q6Zmls
ZXV0aWxzIiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLy90ZXN0
aW5nL2d0ZXN0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci90ZXN0X2NvbnRyb2xsZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvbmV0d29y
a190ZXN0ZXIvdGVzdF9jb250cm9sbGVyLmNjCmluZGV4IGU1YmQ5MmVmYTkzYzZkYjE1NTA1NDhh
YjYyODg3NWYyNTliNWIwODEuLjliZmRmYTc3MzJjODIwZTg2MDE5ZmQ5MTMxODA4MzRjMTg4NGMw
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci90ZXN0X2NvbnRyb2xsZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVz
dGVyL3Rlc3RfY29udHJvbGxlci5jYwpAQCAtMTAsNiArMTAsOSBAQAogCiAjaW5jbHVkZSAicnRj
X3Rvb2xzL25ldHdvcmtfdGVzdGVyL3Rlc3RfY29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgorCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIAogVGVzdENvbnRyb2xsZXI6OlRlc3RDb250cm9sbGVyKGludCBtaW5f
cG9ydCwKQEAgLTI0LDE3ICsyNywxNSBAQCBUZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIo
aW50IG1pbl9wb3J0LAogICBSVENfRENIRUNLX1JVTl9PTigmdGVzdF9jb250cm9sbGVyX3RocmVh
ZF9jaGVja2VyXyk7CiAgIHBhY2tldF9zZW5kZXJfY2hlY2tlcl8uRGV0YWNoKCk7CiAgIHNlbmRf
ZGF0YV8uZmlsbCg0Mik7Ci0gIGF1dG8gc29ja2V0ID0KKyAgdWRwX3NvY2tldF8gPQogICAgICAg
c3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+KHNvY2tldF9mYWN0b3J5Xy5D
cmVhdGVVZHBTb2NrZXQoCiAgICAgICAgICAgcnRjOjpTb2NrZXRBZGRyZXNzKHJ0Yzo6R2V0QW55
SVAoQUZfSU5FVCksIDApLCBtaW5fcG9ydCwgbWF4X3BvcnQpKTsKLSAgc29ja2V0LT5TaWduYWxS
ZWFkUGFja2V0LmNvbm5lY3QodGhpcywgJlRlc3RDb250cm9sbGVyOjpPblJlYWRQYWNrZXQpOwot
ICB1ZHBfdHJhbnNwb3J0Xy5yZXNldCgKLSAgICAgIG5ldyBjcmlja2V0OjpVZHBUcmFuc3BvcnQo
Im5ldHdvcmsgdGVzdGVyIHRyYW5zcG9ydCIsIHN0ZDo6bW92ZShzb2NrZXQpKSk7CisgIHVkcF9z
b2NrZXRfLT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3QodGhpcywgJlRlc3RDb250cm9sbGVyOjpP
blJlYWRQYWNrZXQpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpTZW5kQ29ubmVjdFRvKGNv
bnN0IHN0ZDo6c3RyaW5nJiBob3N0bmFtZSwgaW50IHBvcnQpIHsKICAgUlRDX0RDSEVDS19SVU5f
T04oJnRlc3RfY29udHJvbGxlcl90aHJlYWRfY2hlY2tlcl8pOwotICB1ZHBfdHJhbnNwb3J0Xy0+
U2V0UmVtb3RlQWRkcmVzcyhydGM6OlNvY2tldEFkZHJlc3MoaG9zdG5hbWUsIHBvcnQpKTsKKyAg
cmVtb3RlX2FkZHJlc3NfID0gcnRjOjpTb2NrZXRBZGRyZXNzKGhvc3RuYW1lLCBwb3J0KTsKICAg
TmV0d29ya1Rlc3RlclBhY2tldCBwYWNrZXQ7CiAgIHBhY2tldC5zZXRfdHlwZShOZXR3b3JrVGVz
dGVyUGFja2V0OjpIQU5EX1NIQUtJTkcpOwogICBTZW5kRGF0YShwYWNrZXQsIGFic2w6Om51bGxv
cHQpOwpAQCAtNTcsOCArNTgsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpTZW5kRGF0YShjb25z
dCBOZXR3b3JrVGVzdGVyUGFja2V0JiBwYWNrZXQsCiAgIHBhY2tldC5TZXJpYWxpemVUb0FycmF5
KCZzZW5kX2RhdGFfWzFdLCBzdGQ6Om51bWVyaWNfbGltaXRzPGNoYXI+OjptYXgoKSk7CiAgIGlm
IChkYXRhX3NpemUgJiYgKmRhdGFfc2l6ZSA+IHBhY2tldF9zaXplKQogICAgIHBhY2tldF9zaXpl
ID0gKmRhdGFfc2l6ZTsKLSAgdWRwX3RyYW5zcG9ydF8tPlNlbmRQYWNrZXQoc2VuZF9kYXRhXy5k
YXRhKCksIHBhY2tldF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBh
Y2tldE9wdGlvbnMoKSwgMCk7CisgIHVkcF9zb2NrZXRfLT5TZW5kVG8oKGNvbnN0IHZvaWQqKXNl
bmRfZGF0YV8uZGF0YSgpLCBwYWNrZXRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICByZW1v
dGVfYWRkcmVzc18sIHJ0Yzo6UGFja2V0T3B0aW9ucygpKTsKIH0KIAogdm9pZCBUZXN0Q29udHJv
bGxlcjo6T25UZXN0RG9uZSgpIHsKQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRf
dCYgcGFja2V0X3RpbWVfdXMpIHsKICAgUlRDX0RDSEVDS19SVU5fT04oJnRlc3RfY29udHJvbGxl
cl90aHJlYWRfY2hlY2tlcl8pOwogICBzaXplX3QgcGFja2V0X3NpemUgPSBkYXRhWzBdOwogICBz
dGQ6OnN0cmluZyByZWNlaXZlX2RhdGEoJmRhdGFbMV0sIHBhY2tldF9zaXplKTsKQEAgLTkxLDcg
KzkyLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNr
ZXRTb2NrZXQqIHNvY2tldCwKICAgICBjYXNlIE5ldHdvcmtUZXN0ZXJQYWNrZXQ6OkhBTkRfU0hB
S0lORzogewogICAgICAgTmV0d29ya1Rlc3RlclBhY2tldCBwYWNrZXQ7CiAgICAgICBwYWNrZXQu
c2V0X3R5cGUoTmV0d29ya1Rlc3RlclBhY2tldDo6VEVTVF9TVEFSVCk7Ci0gICAgICB1ZHBfdHJh
bnNwb3J0Xy0+U2V0UmVtb3RlQWRkcmVzcyhyZW1vdGVfYWRkcik7CisgICAgICByZW1vdGVfYWRk
cmVzc18gPSByZW1vdGVfYWRkcjsKICAgICAgIFNlbmREYXRhKHBhY2tldCwgYWJzbDo6bnVsbG9w
dCk7CiAgICAgICBwYWNrZXRfc2VuZGVyXy5yZXNldChuZXcgUGFja2V0U2VuZGVyKHRoaXMsIGNv
bmZpZ19maWxlX3BhdGhfKSk7CiAgICAgICBwYWNrZXRfc2VuZGVyXy0+U3RhcnRTZW5kaW5nKCk7
CkBAIC0xMDksNyArMTEwLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6T25SZWFkUGFja2V0KHJ0
Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIE5ldHdvcmtUZXN0ZXJQYWNrZXQ6OlRFU1RfREFUQTogewotICAgICAgcGFja2V0LnNldF9h
cnJpdmFsX3RpbWVzdGFtcChwYWNrZXRfdGltZS50aW1lc3RhbXApOworICAgICAgcGFja2V0LnNl
dF9hcnJpdmFsX3RpbWVzdGFtcChwYWNrZXRfdGltZV91cyk7CiAgICAgICBwYWNrZXQuc2V0X3Bh
Y2tldF9zaXplKGxlbik7CiAgICAgICBwYWNrZXRfbG9nZ2VyXy5Mb2dQYWNrZXQocGFja2V0KTsK
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVyL3Rlc3RfY29udHJvbGxlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdv
cmtfdGVzdGVyL3Rlc3RfY29udHJvbGxlci5oCmluZGV4IGNmNjVlMTc0NTk1NjE2OTk1ZjNmZDM4
NzMyMzRlMDkyYjA4ZmMzOGQuLmE2NTI3MmEwOWQxZWI0MGE1ZjBiOTBmNTM3ZWY3YjhiYjYyMjIy
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci90ZXN0X2NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvbmV0d29ya190ZXN0
ZXIvdGVzdF9jb250cm9sbGVyLmgKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNsdWRlIDx1dGlsaXR5
PgogCiAjaW5jbHVkZSAicDJwL2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0b3J5LmgiCi0jaW5j
bHVkZSAicDJwL2Jhc2UvdWRwdHJhbnNwb3J0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNw
YWNrZXRzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvaWdub3JlX3d1bmRlZi5oIgogI2luY2x1ZGUgInJ0Y190b29scy9u
ZXR3b3JrX3Rlc3Rlci9wYWNrZXRfbG9nZ2VyLmgiCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFRl
c3RDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxl
biwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVf
YWRkciwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRf
dGltZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3Vz
KTsKICAgcnRjOjpUaHJlYWRDaGVja2VyIHRlc3RfY29udHJvbGxlcl90aHJlYWRfY2hlY2tlcl87
CiAgIHJ0Yzo6U2VxdWVuY2VkVGFza0NoZWNrZXIgcGFja2V0X3NlbmRlcl9jaGVja2VyXzsKICAg
cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnkgc29ja2V0X2ZhY3RvcnlfOwpAQCAtNzAsNyAr
NzAsOCBAQCBjbGFzcyBUZXN0Q29udHJvbGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8
PiB7CiAgIGJvb2wgbG9jYWxfdGVzdF9kb25lXyBSVENfR1VBUkRFRF9CWShsb2NhbF90ZXN0X2Rv
bmVfbG9ja18pOwogICBib29sIHJlbW90ZV90ZXN0X2RvbmVfOwogICBzdGQ6OmFycmF5PGNoYXIs
IGtFdGhlcm5ldE10dT4gc2VuZF9kYXRhXzsKLSAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OlVk
cFRyYW5zcG9ydD4gdWRwX3RyYW5zcG9ydF87CisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5j
UGFja2V0U29ja2V0PiB1ZHBfc29ja2V0XzsKKyAgcnRjOjpTb2NrZXRBZGRyZXNzIHJlbW90ZV9h
ZGRyZXNzXzsKICAgc3RkOjp1bmlxdWVfcHRyPFBhY2tldFNlbmRlcj4gcGFja2V0X3NlbmRlcl87
CiAKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXN0Q29udHJvbGxlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9v
bHMvdW5wYWNrX2FlY2R1bXAvdW5wYWNrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL3VucGFja19hZWNkdW1wL3VucGFjay5jYwppbmRleCA0
Yzc1NjA4ZTc0ODhhNjA0MzVmYzExY2YxNDQ4OTY2NmEyOGM2M2NhLi4xNDJiNDk3MzBhMzYxNzBi
NjU3NjE3NGE1YjczMTIyOGZkNjU3YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvdW5wYWNrX2FlY2R1bXAvdW5wYWNrLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29s
cy91bnBhY2tfYWVjZHVtcC91bnBhY2suY2MKQEAgLTI5LDI3ICsyOSwzNCBAQCBSVENfUFVTSF9J
R05PUklOR19XVU5ERUYoKQogUlRDX1BPUF9JR05PUklOR19XVU5ERUYoKQogCiAvLyBUT0RPKGFu
ZHJldyk6IHVucGFjayBtb3JlIG9mIHRoZSBkYXRhLgotREVGSU5FX3N0cmluZyhpbnB1dF9maWxl
LCAiaW5wdXQiLCAiVGhlIG5hbWUgb2YgdGhlIGlucHV0IHN0cmVhbSBmaWxlLiIpOwotREVGSU5F
X3N0cmluZyhvdXRwdXRfZmlsZSwKLSAgICAgICAgICAgICAgInJlZl9vdXQiLAotICAgICAgICAg
ICAgICAiVGhlIG5hbWUgb2YgdGhlIHJlZmVyZW5jZSBvdXRwdXQgc3RyZWFtIGZpbGUuIik7Ci1E
RUZJTkVfc3RyaW5nKHJldmVyc2VfZmlsZSwKLSAgICAgICAgICAgICAgInJldmVyc2UiLAotICAg
ICAgICAgICAgICAiVGhlIG5hbWUgb2YgdGhlIHJldmVyc2UgaW5wdXQgc3RyZWFtIGZpbGUuIik7
Ci1ERUZJTkVfc3RyaW5nKGRlbGF5X2ZpbGUsICJkZWxheS5pbnQzMiIsICJUaGUgbmFtZSBvZiB0
aGUgZGVsYXkgZmlsZS4iKTsKLURFRklORV9zdHJpbmcoZHJpZnRfZmlsZSwgImRyaWZ0LmludDMy
IiwgIlRoZSBuYW1lIG9mIHRoZSBkcmlmdCBmaWxlLiIpOwotREVGSU5FX3N0cmluZyhsZXZlbF9m
aWxlLCAibGV2ZWwuaW50MzIiLCAiVGhlIG5hbWUgb2YgdGhlIGxldmVsIGZpbGUuIik7Ci1ERUZJ
TkVfc3RyaW5nKGtleXByZXNzX2ZpbGUsICJrZXlwcmVzcy5ib29sIiwgIlRoZSBuYW1lIG9mIHRo
ZSBrZXlwcmVzcyBmaWxlLiIpOwotREVGSU5FX3N0cmluZyhjYWxsb3JkZXJfZmlsZSwKLSAgICAg
ICAgICAgICAgImNhbGxvcmRlciIsCi0gICAgICAgICAgICAgICJUaGUgbmFtZSBvZiB0aGUgcmVu
ZGVyL2NhcHR1cmUgY2FsbCBvcmRlciBmaWxlLiIpOwotREVGSU5FX3N0cmluZyhzZXR0aW5nc19m
aWxlLCAic2V0dGluZ3MudHh0IiwgIlRoZSBuYW1lIG9mIHRoZSBzZXR0aW5ncyBmaWxlLiIpOwot
REVGSU5FX2Jvb2woZnVsbCwgZmFsc2UsICJVbnBhY2sgdGhlIGZ1bGwgc2V0IG9mIGZpbGVzIChu
b3JtYWxseSBub3QgbmVlZGVkKS4iKTsKLURFRklORV9ib29sKHJhdywgZmFsc2UsICJXcml0ZSBy
YXcgZGF0YSBpbnN0ZWFkIG9mIGEgV0FWIGZpbGUuIik7Ci1ERUZJTkVfYm9vbCh0ZXh0LAotICAg
ICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiV3JpdGUgbm9uLWF1ZGlvIGZpbGVzIGFzIHRl
eHQgZmlsZXMgaW5zdGVhZCBvZiBiaW5hcnkgZmlsZXMuIik7Ci1ERUZJTkVfYm9vbChoZWxwLCBm
YWxzZSwgIlByaW50IHRoaXMgbWVzc2FnZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGlucHV0
X2ZpbGUsICJpbnB1dCIsICJUaGUgbmFtZSBvZiB0aGUgaW5wdXQgc3RyZWFtIGZpbGUuIik7CitX
RUJSVENfREVGSU5FX3N0cmluZyhvdXRwdXRfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICJy
ZWZfb3V0IiwKKyAgICAgICAgICAgICAgICAgICAgICJUaGUgbmFtZSBvZiB0aGUgcmVmZXJlbmNl
IG91dHB1dCBzdHJlYW0gZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHJldmVyc2VfZmls
ZSwKKyAgICAgICAgICAgICAgICAgICAgICJyZXZlcnNlIiwKKyAgICAgICAgICAgICAgICAgICAg
ICJUaGUgbmFtZSBvZiB0aGUgcmV2ZXJzZSBpbnB1dCBzdHJlYW0gZmlsZS4iKTsKK1dFQlJUQ19E
RUZJTkVfc3RyaW5nKGRlbGF5X2ZpbGUsICJkZWxheS5pbnQzMiIsICJUaGUgbmFtZSBvZiB0aGUg
ZGVsYXkgZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGRyaWZ0X2ZpbGUsICJkcmlmdC5p
bnQzMiIsICJUaGUgbmFtZSBvZiB0aGUgZHJpZnQgZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKGxldmVsX2ZpbGUsICJsZXZlbC5pbnQzMiIsICJUaGUgbmFtZSBvZiB0aGUgbGV2ZWwgZmls
ZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGtleXByZXNzX2ZpbGUsCisgICAgICAgICAgICAg
ICAgICAgICAia2V5cHJlc3MuYm9vbCIsCisgICAgICAgICAgICAgICAgICAgICAiVGhlIG5hbWUg
b2YgdGhlIGtleXByZXNzIGZpbGUuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhjYWxsb3JkZXJf
ZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICJjYWxsb3JkZXIiLAorICAgICAgICAgICAgICAg
ICAgICAgIlRoZSBuYW1lIG9mIHRoZSByZW5kZXIvY2FwdHVyZSBjYWxsIG9yZGVyIGZpbGUuIik7
CitXRUJSVENfREVGSU5FX3N0cmluZyhzZXR0aW5nc19maWxlLAorICAgICAgICAgICAgICAgICAg
ICAgInNldHRpbmdzLnR4dCIsCisgICAgICAgICAgICAgICAgICAgICAiVGhlIG5hbWUgb2YgdGhl
IHNldHRpbmdzIGZpbGUuIik7CitXRUJSVENfREVGSU5FX2Jvb2woZnVsbCwKKyAgICAgICAgICAg
ICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiVW5wYWNrIHRoZSBmdWxsIHNldCBv
ZiBmaWxlcyAobm9ybWFsbHkgbm90IG5lZWRlZCkuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocmF3
LCBmYWxzZSwgIldyaXRlIHJhdyBkYXRhIGluc3RlYWQgb2YgYSBXQVYgZmlsZS4iKTsKK1dFQlJU
Q19ERUZJTkVfYm9vbCgKKyAgICB0ZXh0LAorICAgIGZhbHNlLAorICAgICJXcml0ZSBub24tYXVk
aW8gZmlsZXMgYXMgdGV4dCBmaWxlcyBpbnN0ZWFkIG9mIGJpbmFyeSBmaWxlcy4iKTsKK1dFQlJU
Q19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMgbWVzc2FnZS4iKTsKIAogI2Rl
ZmluZSBQUklOVF9DT05GSUcoZmllbGRfbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgaWYgKG1zZy5oYXNfIyNmaWVsZF9uYW1lKCkpIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC04Nyw2ICs5NCwxMCBAQCB2b2lk
IFdyaXRlQ2FsbE9yZGVyRGF0YShjb25zdCBib29sIHJlbmRlcl9jYWxsLAogICBXcml0ZURhdGEo
JmNhbGxfdHlwZSwgc2l6ZW9mKGNhbGxfdHlwZSksIGZpbGUsIGZpbGVuYW1lLmNfc3RyKCkpOwog
fQogCitib29sIFdyaXRpbmdDYWxsT3JkZXJGaWxlKCkgeworICByZXR1cm4gRkxBR19mdWxsOwor
fQorCiB9ICAvLyBuYW1lc3BhY2UKIAogaW50IGRvX21haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3Zb
XSkgewpAQCAtMTI1LDcgKzEzNiw5IEBAIGludCBkb19tYWluKGludCBhcmdjLCBjaGFyKiBhcmd2
W10pIHsKIAogICBydGM6OlN0cmluZ0J1aWxkZXIgY2FsbG9yZGVyX3Jhd19uYW1lOwogICBjYWxs
b3JkZXJfcmF3X25hbWUgPDwgRkxBR19jYWxsb3JkZXJfZmlsZSA8PCAiLmNoYXIiOwotICBGSUxF
KiBjYWxsb3JkZXJfY2hhcl9maWxlID0gT3BlbkZpbGUoY2FsbG9yZGVyX3Jhd19uYW1lLnN0cigp
LCAid2IiKTsKKyAgRklMRSogY2FsbG9yZGVyX2NoYXJfZmlsZSA9IFdyaXRpbmdDYWxsT3JkZXJG
aWxlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE9wZW5GaWxlKGNhbGxv
cmRlcl9yYXdfbmFtZS5zdHIoKSwgIndiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IG51bGxwdHI7CiAgIEZJTEUqIHNldHRpbmdzX2ZpbGUgPSBPcGVuRmlsZShGTEFHX3Nl
dHRpbmdzX2ZpbGUsICJ3YiIpOwogCiAgIHdoaWxlIChSZWFkTWVzc2FnZUZyb21GaWxlKGRlYnVn
X2ZpbGUsICZldmVudF9tc2cpKSB7CkBAIC0xNjMsOCArMTc2LDEwIEBAIGludCBkb19tYWluKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZV9y
YXdfZmlsZS5nZXQoKSk7CiAgICAgICB9CiAgICAgICBpZiAoRkxBR19mdWxsKSB7Ci0gICAgICAg
IFdyaXRlQ2FsbE9yZGVyRGF0YSh0cnVlIC8qIHJlbmRlcl9jYWxsICovLCBjYWxsb3JkZXJfY2hh
cl9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxBR19jYWxsb3JkZXJfZmlsZSk7
CisgICAgICAgIGlmIChXcml0aW5nQ2FsbE9yZGVyRmlsZSgpKSB7CisgICAgICAgICAgV3JpdGVD
YWxsT3JkZXJEYXRhKHRydWUgLyogcmVuZGVyX2NhbGwgKi8sIGNhbGxvcmRlcl9jaGFyX2ZpbGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQUdfY2FsbG9yZGVyX2ZpbGUpOworICAg
ICAgICB9CiAgICAgICB9CiAgICAgfSBlbHNlIGlmIChldmVudF9tc2cudHlwZSgpID09IEV2ZW50
OjpTVFJFQU0pIHsKICAgICAgIGZyYW1lX2NvdW50Kys7CkBAIC0yMjIsOCArMjM3LDEwIEBAIGlu
dCBkb19tYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICAgIH0KIAogICAgICAgaWYg
KEZMQUdfZnVsbCkgewotICAgICAgICBXcml0ZUNhbGxPcmRlckRhdGEoZmFsc2UgLyogcmVuZGVy
X2NhbGwgKi8sIGNhbGxvcmRlcl9jaGFyX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBGTEFHX2NhbGxvcmRlcl9maWxlKTsKKyAgICAgICAgaWYgKFdyaXRpbmdDYWxsT3JkZXJGaWxl
KCkpIHsKKyAgICAgICAgICBXcml0ZUNhbGxPcmRlckRhdGEoZmFsc2UgLyogcmVuZGVyX2NhbGwg
Ki8sIGNhbGxvcmRlcl9jaGFyX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZM
QUdfY2FsbG9yZGVyX2ZpbGUpOworICAgICAgICB9CiAgICAgICAgIGlmIChtc2cuaGFzX2RlbGF5
KCkpIHsKICAgICAgICAgICBzdGF0aWMgRklMRSogZGVsYXlfZmlsZSA9IE9wZW5GaWxlKEZMQUdf
ZGVsYXlfZmlsZSwgIndiIik7CiAgICAgICAgICAgaW50MzJfdCBkZWxheSA9IG1zZy5kZWxheSgp
OwpAQCAtMzU5LDkgKzM3NiwxMSBAQCBpbnQgZG9fbWFpbihpbnQgYXJnYywgY2hhciogYXJndltd
KSB7CiAgICAgICAgIG91dHB1dF93YXZfZmlsZS5yZXNldChuZXcgV2F2V3JpdGVyKAogICAgICAg
ICAgICAgb3V0cHV0X25hbWUuc3RyKCksIG91dHB1dF9zYW1wbGVfcmF0ZSwgbnVtX291dHB1dF9j
aGFubmVscykpOwogCi0gICAgICAgIHJ0Yzo6U3RyaW5nQnVpbGRlciBjYWxsb3JkZXJfbmFtZTsK
LSAgICAgICAgY2FsbG9yZGVyX25hbWUgPDwgRkxBR19jYWxsb3JkZXJfZmlsZSA8PCBmcmFtZV9j
b3VudCA8PCAiLmNoYXIiOwotICAgICAgICBjYWxsb3JkZXJfY2hhcl9maWxlID0gT3BlbkZpbGUo
Y2FsbG9yZGVyX25hbWUuc3RyKCksICJ3YiIpOworICAgICAgICBpZiAoV3JpdGluZ0NhbGxPcmRl
ckZpbGUoKSkgeworICAgICAgICAgIHJ0Yzo6U3RyaW5nQnVpbGRlciBjYWxsb3JkZXJfbmFtZTsK
KyAgICAgICAgICBjYWxsb3JkZXJfbmFtZSA8PCBGTEFHX2NhbGxvcmRlcl9maWxlIDw8IGZyYW1l
X2NvdW50IDw8ICIuY2hhciI7CisgICAgICAgICAgY2FsbG9yZGVyX2NoYXJfZmlsZSA9IE9wZW5G
aWxlKGNhbGxvcmRlcl9uYW1lLnN0cigpLCAid2IiKTsKKyAgICAgICAgfQogICAgICAgfQogICAg
IH0KICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX3Rvb2xzL3ZpZGVvX2FuYWx5c2lzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL3ZpZGVvX2FuYWx5c2lzLnB5CmluZGV4IGE1
ZDI2N2IwYjI5YTNhMzA2Y2U2OTZiNWRjZTdiZmE5NjQ4MDhlY2QuLjBjMjI2MTdlY2YyMTBiYTc4
N2FlOTk4MjVjYjU3NDcwNjMxMzQzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy92aWRlb19hbmFseXNpcy5weQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvdmlkZW9f
YW5hbHlzaXMucHkKQEAgLTc5LDcgKzc5LDcgQEAgZGVmIF9QYXJzZUFyZ3MoKToKICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nUGF0aCB0byB0aGUgZnJhbWUgYW5hbHl6ZXIgZXhlY3V0YWJsZS4n
CiAgICAgICAgICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVsdCcpCiAgIHBhcnNlci5hZGRf
b3B0aW9uKCctLXp4aW5nX3BhdGgnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdQYXRoIHRvIHRoZSB6ZWJyYSB4aW5nIGJhcmNvZGUgYW5hbHl6ZXIuJykKKyAgICAg
ICAgICAgICAgICAgICAgaGVscD0nREVQUkVDQVRFRC4nKQogICBwYXJzZXIuYWRkX29wdGlvbign
LS1yZWZfcmVjX2RpcicsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9J3JlZicsCiAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J1BhdGggdG8gd2hlcmUgcmVmZXJlbmNlIHJlY29yZGluZ3Mgd2lsbCBi
ZSBjcmVhdGVkLicKICAgICAgICAgICAgICAgICAgICAgJ0lkZWFsbHkga2VlcCB0aGUgcmVmIGFu
ZCB0ZXN0IGRpcmVjdG9yaWVzIG9uIHNlcGFyYXRlJwpAQCAtMTE4LDggKzExOCw2IEBAIGRlZiBf
UGFyc2VBcmdzKCk6CiAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZCEnKQogICBpZiBub3Qg
b3MucGF0aC5pc2ZpbGUob3B0aW9ucy5mcmFtZV9hbmFseXplcik6CiAgICAgcGFyc2VyLndhcm5p
bmcoJ0Nhbm5vdCBmaW5kIGZyYW1lX2FuYWx5emVyLCBubyBtZXRyaWNzIHdpbGwgYmUgZ2VuZXJh
dGVkIScpCi0gIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcHRpb25zLnp4aW5nX3BhdGgpOgotICAg
IHBhcnNlci53YXJuaW5nKCdDYW5ub3QgZmluZCBaZWJyYSBYaW5nLCBubyBtZXRyaWNzIHdpbGwg
YmUgZ2VuZXJhdGVkIScpCiAKICAgcmV0dXJuIG9wdGlvbnMKIApAQCAtNDQyLDEyICs0NDAsNiBA
QCBkZWYgQ29tcGFyZVZpZGVvcyhvcHRpb25zLCBjcm9wcGVkX3JlZl9maWxlLCBjcm9wcGVkX3Rl
c3RfZmlsZSk6CiAgICAgJy0tcmVmX3ZpZGVvPSVzJyAlIGNyb3BwZWRfcmVmX2ZpbGUsCiAgICAg
Jy0tdGVzdF92aWRlbz0lcycgJSBjcm9wcGVkX3Rlc3RfZmlsZSwKICAgICAnLS1mcmFtZV9hbmFs
eXplcj0lcycgJSBvcy5wYXRoLmFic3BhdGgob3B0aW9ucy5mcmFtZV9hbmFseXplciksCi0gICAg
Jy0tenhpbmdfcGF0aD0lcycgJSBvcHRpb25zLnp4aW5nX3BhdGgsCi0gICAgJy0tZmZtcGVnX3Bh
dGg9JXMnICUgb3B0aW9ucy5mZm1wZWcsCi0gICAgJy0tc3RhdHNfZmlsZV9yZWY9JXNfc3RhdHMu
dHh0JyAlCi0gICAgICAgIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoY3JvcHBlZF9yZWZf
ZmlsZSksIGNyb3BwZWRfcmVmX2ZpbGUpLAotICAgICctLXN0YXRzX2ZpbGVfdGVzdD0lc19zdGF0
cy50eHQnICUKLSAgICAgICAgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShjcm9wcGVkX3Rl
c3RfZmlsZSksIGNyb3BwZWRfdGVzdF9maWxlKSwKICAgICAnLS15dXZfZnJhbWVfaGVpZ2h0PSVk
JyAlIGNyb3BfaGVpZ2h0LAogICAgICctLXl1dl9mcmFtZV93aWR0aD0lZCcgJSBjcm9wX3dpZHRo
CiAgIF0KQEAgLTQ3Miw3ICs0NjQsNiBAQCBkZWYgbWFpbigpOgogICAgIC0tYXBwX25hbWUgQXBw
UlRDTW9iaWxlIFwKICAgICAtLWZmbXBlZyAuL2ZmbXBlZyAtLXJlZl92aWRlb19kZXZpY2U9L2Rl
di92aWRlbzAgXAogICAgIC0tdGVzdF92aWRlb19kZXZpY2U9L2Rldi92aWRlbzEgXAotICAgIC0t
enhpbmdfcGF0aCAuL3p4aW5nIFwKICAgICAtLXRlc3RfY3JvcF9wYXJhbWV0ZXJzICdjcm9wPTk1
MDo0MjA6MTMwOjU2JyBcCiAgICAgLS1yZWZfY3JvcF9wYXJhbWV0ZXJzICdoZmxpcCwgY3JvcD05
NTA6NDIwOjEzMDo1NicgXAogICAgIC0tcmVmX3JlY19kaXIgL3RtcC9yZWYgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL0JVSUxELmdu
CmluZGV4IGI0ZjE5M2QxZjMyNmE2YTU1MGIzMjExMWE1MGE5OWM0ZTkwMmI2ODUuLjYwZWE0NzM0
ZTk1MjBjMTgxZGI1MWFjZTRhN2UzN2EwMDYyMWUyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9CVUlMRC5nbgorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvQlVJTEQuZ24KQEAgLTgsOCAr
OCw4IEBACiAKIGltcG9ydCgiLi4vd2VicnRjLmduaSIpCiBpZiAoaXNfaW9zKSB7Ci0gIGltcG9y
dCgiLy9idWlsZC9jb25maWcvaW9zL3J1bGVzLmduaSIpCiAgIGltcG9ydCgiLy9idWlsZC9jb25m
aWcvaW9zL2lvc19zZGsuZ25pIikKKyAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9pb3MvcnVsZXMu
Z25pIikKIH0KIGlmIChpc19tYWMpIHsKICAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9tYWMvcnVs
ZXMuZ25pIikKQEAgLTQwLDYgKzQwLDcgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICAg
ICJvYmpjL0ZyYW1ld29yay9IZWFkZXJzIiwgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTYyNyk6
IFJlbW92ZSB0aGlzLgogICAgIF0KICAgICBjZmxhZ3MgPSBbCisgICAgICAiLVdpbXBsaWNpdC1y
ZXRhaW4tc2VsZiIsCiAgICAgICAiLVdzdHJpY3Qtb3ZlcmZsb3ciLAogICAgICAgIi1XbWlzc2lu
Zy1maWVsZC1pbml0aWFsaXplcnMiLAogICAgIF0KQEAgLTI2Miw2ICsyNjMsOCBAQCBpZiAoaXNf
aW9zIHx8IGlzX21hYykgewogICAgICAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIs
CiAgICAgICAgIF0KIAorICAgICAgICBsaWJzID0gWyAiQXVkaW9Ub29sYm94LmZyYW1ld29yayIg
XQorCiAgICAgICAgIGlmIChpc19jbGFuZykgewogICAgICAgICAgICMgU3VwcHJlc3Mgd2Fybmlu
Z3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2luCiAgICAgICAgICAgIyAoYnVncy53ZWJy
dGMub3JnLzE2MykuCkBAIC0yODcsNiArMjkwLDggQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsK
IAogICAgICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpjb21tb25fY29uZmlnX29iamMiIF0KIAor
ICAgICAgICBsaWJzID0gWyAiQVZGb3VuZGF0aW9uLmZyYW1ld29yayIgXQorCiAgICAgICAgIGRl
cHMgPSBbCiAgICAgICAgICAgIjphdWRpb19zZXNzaW9uX29ic2VydmVyIiwKICAgICAgICAgICAi
OmJhc2Vfb2JqYyIsCkBAIC03NTYsOCArNzYxLDggQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsK
ICAgICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZV9vYmpjIiwKICAgICAgICAgIjpoZWxwZXJz
X29iamMiLAorICAgICAgICAiLi4vYXBpL3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICAgICAi
Li4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKLSAgICAgICAgIi4uL2NvbW1v
bl92aWRlbyIsCiAgICAgICAgICIuLi9tb2R1bGVzOm1vZHVsZV9hcGkiLAogICAgICAgICAiLi4v
bW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKICAgICAgICAgIi4u
L3J0Y19iYXNlOnJ0Y19iYXNlIiwKQEAgLTc5Myw2ICs3OTgsOCBAQCBpZiAoaXNfaW9zIHx8IGlz
X21hYykgewogICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlv
bitQcml2YXRlLmgiLAogICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29uZmln
dXJhdGlvbi5oIiwKICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3Vy
YXRpb24ubW0iLAorICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ3J5cHRvT3B0
aW9ucy5oIiwKKyAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlv
bnMubW0iLAogICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRGF0YUNoYW5uZWwr
UHJpdmF0ZS5oIiwKICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0RhdGFDaGFu
bmVsLmgiLAogICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRGF0YUNoYW5uZWwu
bW0iLApAQCAtOTAzLDYgKzkxMCw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAg
ICI6dmlkZW9yZW5kZXJlcmFkYXB0ZXJfb2JqYyIsCiAgICAgICAgICI6dmlkZW9zb3VyY2Vfb2Jq
YyIsCiAgICAgICAgICI6dmlkZW90b29sYm94X29iamMiLAorICAgICAgICAiLi4vYXBpOmNyZWF0
ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5IiwKICAgICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVl
cmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29k
ZWNzX2FwaSIsCiAgICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5IiwKQEAgLTkxMyw5ICs5MjEsOSBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykg
ewogICAgICAgICAiLi4vbWVkaWE6cnRjX21lZGlhX2Jhc2UiLAogICAgICAgICAiLi4vbW9kdWxl
czptb2R1bGVfYXBpIiwKICAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2Rl
dmljZV9hcGkiLAorICAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAg
ICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZyIsCiAg
ICAgICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAot
ICAgICAgICAiLi4vcGM6Y3JlYXRlX3BjX2ZhY3RvcnkiLAogICAgICAgICAiLi4vcGM6cGVlcmNv
bm5lY3Rpb24iLAogICAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAgICAgIi4uL3J0
Y19iYXNlOnJ0Y19iYXNlIiwKQEAgLTEwMzEsNiArMTAzOSw3IEBAIGlmIChpc19pb3MgfHwgaXNf
bWFjKSB7CiAgICAgICAgICAgICAib2JqYy91bml0dGVzdHMvUlRDUGVlckNvbm5lY3Rpb25GYWN0
b3J5X3hjdGVzdC5tIiwKICAgICAgICAgICAgICJvYmpjL3VuaXR0ZXN0cy9mcmFtZV9idWZmZXJf
aGVscGVycy5oIiwKICAgICAgICAgICAgICJvYmpjL3VuaXR0ZXN0cy9mcmFtZV9idWZmZXJfaGVs
cGVycy5tbSIsCisgICAgICAgICAgICAib2JqYy91bml0dGVzdHMvbmFsdV9yZXdyaXRlcl94Y3Rl
c3QubW0iLAogICAgICAgICAgIF0KIAogICAgICAgICAgICMgVE9ETyhwZXRlcmhhbnNwZXJzKTog
UmVlbmFibGUgdGhlc2UgdGVzdHMgb24gc2ltdWxhdG9yLgpAQCAtMTA1Myw2ICsxMDYyLDcgQEAg
aWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICAgICAgICAgICI6bmF0aXZlX2FwaV9hdWRpb19k
ZXZpY2VfbW9kdWxlIiwKICAgICAgICAgICAgICI6bmF0aXZlX3ZpZGVvIiwKICAgICAgICAgICAg
ICI6cGVlcmNvbm5lY3Rpb25mYWN0b3J5X2Jhc2Vfb2JqYyIsCisgICAgICAgICAgICAiOnZpZGVv
X3Rvb2xib3hfY2MiLAogICAgICAgICAgICAgIjp2aWRlb2NhcHR1cmVfb2JqYyIsCiAgICAgICAg
ICAgICAiOnZpZGVvY29kZWNfb2JqYyIsCiAgICAgICAgICAgICAiOnZpZGVvZnJhbWVidWZmZXJf
b2JqYyIsCkBAIC0xMDYzLDggKzEwNzMsOCBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAg
ICAgICAgICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKICAgICAgICAgICAgICIuLi9tZWRp
YTpydGNfbWVkaWFfdGVzdHNfdXRpbHMiLAogICAgICAgICAgICAgIi4uL21vZHVsZXM6bW9kdWxl
X2FwaSIsCisgICAgICAgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAg
ICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAotICAgICAgICAgICAgIi4uL3J0Y19iYXNlOnJ0
Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6c3lz
dGVtX3dyYXBwZXJzIiwKICAgICAgICAgICAgICIvL3RoaXJkX3BhcnR5L2xpYnl1diIsCiAgICAg
ICAgICAgXQpAQCAtMTA5OCw3ICsxMTA4LDcgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAg
ICAgICAgcnRjX2lvc194Y3Rlc3RfdGVzdCgic2RrX3VuaXR0ZXN0cyIpIHsKICAgICAgICAgICBp
bmZvX3BsaXN0ID0gIi8vdGVzdC9pb3MvSW5mby5wbGlzdCIKICAgICAgICAgICBzb3VyY2VzID0g
WwotICAgICAgICAgICAgIm9iamMvdW5pdHRlc3RzL21haW4ubSIsCisgICAgICAgICAgICAib2Jq
Yy91bml0dGVzdHMvbWFpbi5tbSIsCiAgICAgICAgICAgXQogCiAgICAgICAgICAgX2J1bmRsZV9p
ZF9zdWZmaXggPSBpb3NfZ2VuZXJpY190ZXN0X2J1bmRsZV9pZF9zdWZmaXgKQEAgLTExMDcsNiAr
MTExNyw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAgICAgICAiOnBlZXJjb25u
ZWN0aW9uZmFjdG9yeV9iYXNlX29iamMiLAogICAgICAgICAgICAgIjpzZGtfdW5pdHRlc3RzX2J1
bmRsZV9kYXRhIiwKICAgICAgICAgICAgICI6c2RrX3VuaXR0ZXN0c19zb3VyY2VzIiwKKyAgICAg
ICAgICAgICIvL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICAgICBdCiAgICAgICAgICAgbGRm
bGFncyA9IFsgIi1hbGxfbG9hZCIgXQogICAgICAgICB9CkBAIC0xMTE2LDcgKzExMjcsNyBAQCBp
ZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgICAgICAgIGluZm9fcGxpc3QgPSAiLy90ZXN0L2lv
cy9JbmZvLnBsaXN0IgogICAgICAgICAgIHNvdXJjZXMgPSBbCiAgICAgICAgICAgICAib2JqYy91
bml0dGVzdHMvUlRDRG9Ob3RQdXRDUGx1c1BsdXNJbkZyYW1ld29ya0hlYWRlcnNfeGN0ZXN0Lm0i
LAotICAgICAgICAgICAgIm9iamMvdW5pdHRlc3RzL21haW4ubSIsCisgICAgICAgICAgICAib2Jq
Yy91bml0dGVzdHMvbWFpbi5tbSIsCiAgICAgICAgICAgXQogCiAgICAgICAgICAgX2J1bmRsZV9p
ZF9zdWZmaXggPSBpb3NfZ2VuZXJpY190ZXN0X2J1bmRsZV9pZF9zdWZmaXgKQEAgLTExMjQsNiAr
MTEzNSw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAgICAgZGVwcyA9IFsKICAg
ICAgICAgICAgICI6ZnJhbWV3b3JrX29iamMrbGluayIsCiAgICAgICAgICAgICAiOmlvc19mcmFt
ZXdvcmtfYnVuZGxlIiwKKyAgICAgICAgICAgICIvL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAg
ICAgICBdCiAgICAgICAgIH0KICAgICAgIH0KQEAgLTExNzAsNiArMTE4Miw3IEBAIGlmIChpc19p
b3MgfHwgaXNfbWFjKSB7CiAgICAgICAgICAgIjp2aWRlb2ZyYW1lYnVmZmVyX29iamMiLAogICAg
ICAgICAgICI6dmlkZW9zb3VyY2Vfb2JqYyIsCiAgICAgICAgICAgIjp2aWRlb3Rvb2xib3hfb2Jq
YyIsCisgICAgICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAg
ICAgICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKICAgICAgICAg
ICAiLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeSIsCiAg
ICAgICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3Rv
cnkiLApAQCAtMTE3NywxMSArMTE5MCwxMiBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAg
ICAgICAgICIuLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCiAgICAgICAgICAgIi4uL21vZHVsZXM6
bW9kdWxlX2FwaSIsCiAgICAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2Rl
dmljZV9hcGkiLAorICAgICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwK
ICAgICAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3Npbmci
LAogICAgICAgICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZh
Y2UiLAotICAgICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCisgICAg
ICAgICAgIi4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICAgICAgICIuLi9ydGNfYmFz
ZS9zeXN0ZW06dW51c2VkIiwKLSAgICAgICAgICAiLy90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAg
ICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICAgICAiLy90aGlyZF9wYXJ0eS9v
Y21vY2siLAogICAgICAgICBdCiAKQEAgLTEyNjksNiArMTI4Myw3IEBAIGlmIChpc19pb3MgfHwg
aXNfbWFjKSB7CiAgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1Nlc3Npb25E
ZXNjcmlwdGlvbi5oIiwKICAgICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVHJh
Y2luZy5oIiwKICAgICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ2VydGlmaWNh
dGUuaCIsCisgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlv
bnMuaCIsCiAgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvU291cmNl
LmgiLAogICAgICAgICAgICJvYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb1RyYWNrLmgi
LAogICAgICAgICAgICJvYmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0NvZGVjQ29uc3RhbnRz
LmgiLApAQCAtMTM1Nyw2ICsxMzcyLDcgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICAg
ICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQXVkaW9UcmFjay5oIiwKICAgICAgICAg
ICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ2VydGlmaWNhdGUuaCIsCiAgICAgICAgICAg
Im9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24uaCIsCisgICAgICAgICAg
Im9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlvbnMuaCIsCiAgICAgICAgICAg
Im9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0RhdGFDaGFubmVsLmgiLAogICAgICAgICAgICJv
YmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENEYXRhQ2hhbm5lbENvbmZpZ3VyYXRpb24uaCIsCiAg
ICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0R0bWZTZW5kZXIuaCIsCkBAIC0x
NTkwLDcgKzE2MDYsMTAgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICB9CiAKICAgICBy
dGNfc3RhdGljX2xpYnJhcnkoInZpZGVvX3Rvb2xib3hfY2MiKSB7Ci0gICAgICB2aXNpYmlsaXR5
ID0gWyAiOnZpZGVvdG9vbGJveF9vYmpjIiBdCisgICAgICB2aXNpYmlsaXR5ID0gWworICAgICAg
ICAiOnZpZGVvdG9vbGJveF9vYmpjIiwKKyAgICAgICAgIjpzZGtfdW5pdHRlc3RzX3NvdXJjZXMi
LAorICAgICAgXQogICAgICAgc291cmNlcyA9IFsKICAgICAgICAgIm9iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9oZWxwZXJzLmNjIiwKICAgICAgICAgIm9iamMvY29tcG9uZW50cy92aWRlb19j
b2RlYy9oZWxwZXJzLmgiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGll
cy5tbQppbmRleCAyZDk1OGI3NmRiZTc4MzE3Mjc5YjQ3MGY0ZWZiM2ZjYWQ4YjgzYmQ5Li42NWVl
ZmEzNmYyZGZiMjA2OWVjY2E3Y2FhNDkyMjRiMjYyOTU1YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxp
dGllcy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQpAQCAtMjksOCArMjksOSBAQAogI2ltcG9ydCAi
V2ViUlRDL1JUQ1ZpZGVvQ29kZWNIMjY0LmgiCiAKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9f
ZnJhbWUuaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvY29u
dmVydF9mcm9tLmgiCiAjaW5jbHVkZSAibmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oIgor
I2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9jb252ZXJ0X2Zyb20u
aCIKKyNpbmNsdWRlICJ3ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAiRnJhbWV3
b3JrL0hlYWRlcnMvV2ViUlRDL1JUQ1ZpZGVvQ29kZWNGYWN0b3J5LmgiCiAjaW5jbHVkZSAiRnJh
bWV3b3JrL0hlYWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZXdv
cmsvSGVhZGVycy9XZWJSVEMvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvQlVJTEQu
Z24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9CVUlMRC5nbgppbmRleCA2M2M1YmQyMGMxMDQzNmIwMDAwMzJiMTAyNWVmNjkzNTk3YmFiODZj
Li5lZGM1ZGEzMGI3OWRhNzYzZGJjNzQzMDRkZjM5YWNiNzk3Y2NmMDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9CVUlM
RC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9CVUlMRC5nbgpAQCAtNyw5ICs3LDkgQEAKICMgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAKIGlmIChpc19hbmRyb2lk
KSB7Ci0gIGltcG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCiAgIGltcG9ydCgiLy9idWlsZC9jb25m
aWcvYW5kcm9pZC9jb25maWcuZ25pIikKICAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9hbmRyb2lk
L3J1bGVzLmduaSIpCisgIGltcG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCiAKICAgZ3JvdXAoImFu
ZHJvaWQiKSB7CiAgICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2FuZHJvaWQpIHsK
QEAgLTM4LDYgKzM4LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBkZXBzID0gWwogICAgICAg
IjphdWRpb19hcGlfamF2YSIsCiAgICAgICAiOmJhc2VfamF2YSIsCisgICAgICAiOmJ1aWx0aW5f
YXVkaW9fY29kZWNzX2phdmEiLAogICAgICAgIjpjYW1lcmFfamF2YSIsCiAgICAgICAiOmRlZmF1
bHRfdmlkZW9fY29kZWNfZmFjdG9yeV9qYXZhIiwKICAgICAgICI6ZmlsZXZpZGVvX2phdmEiLApA
QCAtMTEwLDIzICsxMTEsMjIgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBwdWJsaWNfZGVwcyA9
IFsgICMgbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg2MDMpCiAgICAgICAiOmF1ZGlv
X2puaSIsCiAgICAgICAiOmJhc2Vfam5pIiwKKyAgICAgICI6YnVpbHRpbl9hdWRpb19jb2RlY3Nf
am5pIiwKKyAgICAgICI6ZGVmYXVsdF92aWRlb19jb2RlY19mYWN0b3J5X2puaSIsCiAgICAgICAi
OmphdmFfYXVkaW9fZGV2aWNlX21vZHVsZV9qbmkiLAorICAgICAgIjpsZWdhY3lfaHdjb2RlY3Nf
am5pIiwKICAgICAgICI6bWVkaWFfam5pIiwKICAgICAgICI6cGVlcmNvbm5lY3Rpb25fam5pIiwK
ICAgICAgICI6dmlkZW9fam5pIiwKLSAgICAgICIuLi8uLi9wYzpjcmVhdGVfcGNfZmFjdG9yeSIs
CisgICAgICAiLi4vLi4vYXBpOmNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5IiwKICAgICBd
CiAgIH0KIAogICBydGNfc3RhdGljX2xpYnJhcnkoImxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9t
ZXRyaWNzX2RlZmF1bHRfam5pIikgewogICAgIHZpc2liaWxpdHkgPSBbICIqIiBdCi0KLSAgICBh
bGxvd19wb2lzb24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0gICMgVE9ETyhidWdzLndl
YnJ0Yy5vcmcvNzkyNSk6IFJlbW92ZS4KLQogICAgIHNvdXJjZXMgPSBbCiAgICAgICAic3JjL2pu
aS9hbmRyb2lkbWV0cmljcy5jYyIsCiAgICAgXQotCiAgICAgZGVwcyA9IFsKICAgICAgICI6YmFz
ZV9qbmkiLAogICAgICAgIjpnZW5lcmF0ZWRfbWV0cmljc19qbmkiLApAQCAtMjA0LDcgKzIwNCwx
MSBAQCBpZiAoaXNfYW5kcm9pZCkgewogICB9CiAKICAgcnRjX2FuZHJvaWRfbGlicmFyeSgiYXVk
aW9fYXBpX2phdmEiKSB7Ci0gICAgamF2YV9maWxlcyA9IFsgImFwaS9vcmcvd2VicnRjL2F1ZGlv
L0F1ZGlvRGV2aWNlTW9kdWxlLmphdmEiIF0KKyAgICBqYXZhX2ZpbGVzID0gWworICAgICAgImFw
aS9vcmcvd2VicnRjL2F1ZGlvL0F1ZGlvRGV2aWNlTW9kdWxlLmphdmEiLAorICAgICAgImFwaS9v
cmcvd2VicnRjL0F1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5LmphdmEiLAorICAgICAgImFwaS9v
cmcvd2VicnRjL0F1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LmphdmEiLAorICAgIF0KIAogICAg
IGRlcHMgPSBbCiAgICAgICAiOmJhc2VfamF2YSIsCkBAIC0yNTAsNiArMjU0LDcgQEAgaWYgKGlz
X2FuZHJvaWQpIHsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9WaWRlb0ZyYW1lRHJhd2VyLmphdmEi
LAogICAgICAgImFwaS9vcmcvd2VicnRjL1l1dkNvbnZlcnRlci5qYXZhIiwKICAgICAgICJhcGkv
b3JnL3dlYnJ0Yy9ZdXZIZWxwZXIuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvVGltZXN0
YW1wQWxpZ25lci5qYXZhIiwKICAgICAgICJzcmMvamF2YS9vcmcvd2VicnRjL0VnbEJhc2UxMC5q
YXZhIiwKICAgICAgICJzcmMvamF2YS9vcmcvd2VicnRjL0VnbEJhc2UxNC5qYXZhIiwKICAgICAg
ICJzcmMvamF2YS9vcmcvd2VicnRjL0dsR2VuZXJpY0RyYXdlci5qYXZhIiwKQEAgLTI3Niw5ICsy
ODEsMTEgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9BdWRpb1Nv
dXJjZS5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9BdWRpb1RyYWNrLmphdmEiLAogICAg
ICAgImFwaS9vcmcvd2VicnRjL0NhbGxTZXNzaW9uRmlsZVJvdGF0aW5nTG9nU2luay5qYXZhIiwK
KyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9DcnlwdG9PcHRpb25zLmphdmEiLAogICAgICAgImFwaS9v
cmcvd2VicnRjL0RhdGFDaGFubmVsLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0R0bWZT
ZW5kZXIuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvRmVjQ29udHJvbGxlckZhY3RvcnlG
YWN0b3J5SW50ZXJmYWNlLmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL01lZGlhVHJhbnNw
b3J0RmFjdG9yeUZhY3RvcnkuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvRnJhbWVEZWNy
eXB0b3IuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvRnJhbWVFbmNyeXB0b3IuamF2YSIs
CiAgICAgICAiYXBpL29yZy93ZWJydGMvSWNlQ2FuZGlkYXRlLmphdmEiLApAQCAtMjk1LDYgKzMw
Miw3IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgICAiYXBpL29yZy93ZWJydGMvUGVlckNvbm5l
Y3Rpb24uamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25EZXBlbmRl
bmNpZXMuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25GYWN0b3J5
LmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL1J0Y0NlcnRpZmljYXRlUGVtLmphdmEiLAog
ICAgICAgImFwaS9vcmcvd2VicnRjL1JUQ1N0YXRzLmphdmEiLAogICAgICAgImFwaS9vcmcvd2Vi
cnRjL1JUQ1N0YXRzQ29sbGVjdG9yQ2FsbGJhY2suamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJy
dGMvUlRDU3RhdHNSZXBvcnQuamF2YSIsCkBAIC0zMTcsNiArMzI1LDcgQEAgaWYgKGlzX2FuZHJv
aWQpIHsKICAgICBkZXBzID0gWwogICAgICAgIjphdWRpb19hcGlfamF2YSIsCiAgICAgICAiOmJh
c2VfamF2YSIsCisgICAgICAiOmJ1aWx0aW5fYXVkaW9fY29kZWNzX2phdmEiLAogICAgICAgIjpk
ZWZhdWx0X3ZpZGVvX2NvZGVjX2ZhY3RvcnlfamF2YSIsCiAgICAgICAiOmxvZ2dpbmdfamF2YSIs
CiAgICAgICAiOnN3Y29kZWNzX2phdmEiLApAQCAtNDI2LDYgKzQzNSwxNyBAQCBpZiAoaXNfYW5k
cm9pZCkgewogICAgIF0KICAgfQogCisgIHJ0Y19hbmRyb2lkX2xpYnJhcnkoImJ1aWx0aW5fYXVk
aW9fY29kZWNzX2phdmEiKSB7CisgICAgamF2YV9maWxlcyA9IFsKKyAgICAgICJhcGkvb3JnL3dl
YnJ0Yy9CdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkuamF2YSIsCisgICAgICAiYXBp
L29yZy93ZWJydGMvQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LmphdmEiLAorICAg
IF0KKworICAgIGRlcHMgPSBbCisgICAgICAiOmF1ZGlvX2FwaV9qYXZhIiwKKyAgICBdCisgIH0K
KwogICBydGNfYW5kcm9pZF9saWJyYXJ5KCJzY3JlZW5jYXB0dXJlcl9qYXZhIikgewogICAgIGph
dmFfZmlsZXMgPSBbICJhcGkvb3JnL3dlYnJ0Yy9TY3JlZW5DYXB0dXJlckFuZHJvaWQuamF2YSIg
XQogCkBAIC00NDksMTggKzQ2OSw0NCBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgIF0KICAgfQog
CisgIHJ0Y19hbmRyb2lkX2xpYnJhcnkoImxpYnZweF92cDhfamF2YSIpIHsKKyAgICB2aXNpYmls
aXR5ID0gWyAiKiIgXQorICAgIGphdmFfZmlsZXMgPSBbCisgICAgICAiYXBpL29yZy93ZWJydGMv
TGlidnB4VnA4RGVjb2Rlci5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDhF
bmNvZGVyLmphdmEiLAorICAgIF0KKyAgICBkZXBzID0gWworICAgICAgIjpiYXNlX2phdmEiLAor
ICAgICAgIjp2aWRlb19hcGlfamF2YSIsCisgICAgICAiOnZpZGVvX2phdmEiLAorICAgICAgIi8v
cnRjX2Jhc2U6YmFzZV9qYXZhIiwKKyAgICBdCisgIH0KKworICBydGNfYW5kcm9pZF9saWJyYXJ5
KCJsaWJ2cHhfdnA5X2phdmEiKSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgICBqYXZh
X2ZpbGVzID0gWworICAgICAgImFwaS9vcmcvd2VicnRjL0xpYnZweFZwOURlY29kZXIuamF2YSIs
CisgICAgICAiYXBpL29yZy93ZWJydGMvTGlidnB4VnA5RW5jb2Rlci5qYXZhIiwKKyAgICBdCisg
ICAgZGVwcyA9IFsKKyAgICAgICI6YmFzZV9qYXZhIiwKKyAgICAgICI6dmlkZW9fYXBpX2phdmEi
LAorICAgICAgIjp2aWRlb19qYXZhIiwKKyAgICAgICIvL3J0Y19iYXNlOmJhc2VfamF2YSIsCisg
ICAgXQorICB9CisKICAgcnRjX2FuZHJvaWRfbGlicmFyeSgic3djb2RlY3NfamF2YSIpIHsKICAg
ICBqYXZhX2ZpbGVzID0gWwogICAgICAgImFwaS9vcmcvd2VicnRjL1NvZnR3YXJlVmlkZW9EZWNv
ZGVyRmFjdG9yeS5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9Tb2Z0d2FyZVZpZGVvRW5j
b2RlckZhY3RvcnkuamF2YSIsCi0gICAgICAic3JjL2phdmEvb3JnL3dlYnJ0Yy9WUDhFbmNvZGVy
LmphdmEiLAotICAgICAgInNyYy9qYXZhL29yZy93ZWJydGMvVlA4RGVjb2Rlci5qYXZhIiwKLSAg
ICAgICJzcmMvamF2YS9vcmcvd2VicnRjL1ZQOUVuY29kZXIuamF2YSIsCi0gICAgICAic3JjL2ph
dmEvb3JnL3dlYnJ0Yy9WUDlEZWNvZGVyLmphdmEiLAogICAgIF0KIAogICAgIGRlcHMgPSBbCiAg
ICAgICAiOmJhc2VfamF2YSIsCisgICAgICAiOmxpYnZweF92cDhfamF2YSIsCisgICAgICAiOmxp
YnZweF92cDlfamF2YSIsCiAgICAgICAiOnZpZGVvX2FwaV9qYXZhIiwKICAgICAgICI6dmlkZW9f
amF2YSIsCiAgICAgICAiLy9ydGNfYmFzZTpiYXNlX2phdmEiLApAQCAtNTExLDIzICs1NTcsNjYg
QEAgaWYgKGlzX2FuZHJvaWQpIHsKIAogICAgIGRlcHMgPSBbCiAgICAgICAiOmJhc2Vfam5pIiwK
KyAgICAgICI6YnVpbHRpbl9hdWRpb19jb2RlY3Nfam5pIiwKICAgICAgICIuLi8uLi9hcGkvYXVk
aW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKICAgICAgICIuLi8uLi9h
cGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAgICIu
Li8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICIuLi8uLi9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAiLi4vLi4vcnRjX2Jh
c2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgIF0KICAgfQogCi0gIHJ0Y19zdGF0aWNfbGlicmFy
eSgidmlkZW9fam5pIikgewotICAgIHNvdXJjZXMgPSBbXQorICBydGNfc3RhdGljX2xpYnJhcnko
ImJ1aWx0aW5fYXVkaW9fY29kZWNzX2puaSIpIHsKKyAgICBzb3VyY2VzID0gWworICAgICAgInNy
Yy9qbmkvYnVpbHRpbmF1ZGlvZGVjb2RlcmZhY3RvcnlmYWN0b3J5LmNjIiwKKyAgICAgICJzcmMv
am5pL2J1aWx0aW5hdWRpb2VuY29kZXJmYWN0b3J5ZmFjdG9yeS5jYyIsCisgICAgXQorCiAgICAg
ZGVwcyA9IFsKLSAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAg
ICAgIjpiYXNlX2puaSIsCisgICAgICAiOmdlbmVyYXRlZF9idWlsdGluX2F1ZGlvX2NvZGVjc19q
bmkiLAorICAgICAgIjpuYXRpdmVfYXBpX2puaSIsCisgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2Nv
ZGVjczpidWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeSIsCisgICAgICAiLi4vLi4vYXBpL2F1
ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeSIsCisgICAgICAiLi4vLi4v
cnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgIF0KKyAgfQogCi0gICAgc291cmNlcyAr
PSBbCisgICMgQ29ycmVzcG9uZHMgdG8gTWVkaWFDb2RlY1ZpZGVvRW5jb2Rlci9EZWNvZGVyIGlu
IEphdmEuCisgIHJ0Y19zdGF0aWNfbGlicmFyeSgibGVnYWN5X2h3Y29kZWNzX2puaSIpIHsKKyAg
ICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICAgIGFsbG93X3BvaXNvbiA9IFsgInNvZnR3YXJlX3Zp
ZGVvX2NvZGVjcyIgXQorICAgIHNvdXJjZXMgPSBbCiAgICAgICAic3JjL2puaS9hbmRyb2lkbWVk
aWFjb2RlY2NvbW1vbi5oIiwKICAgICAgICJzcmMvam5pL2FuZHJvaWRtZWRpYWRlY29kZXIuY2Mi
LAogICAgICAgInNyYy9qbmkvYW5kcm9pZG1lZGlhZW5jb2Rlci5jYyIsCisgICAgXQorICAgIGRl
cHMgPSBbCisgICAgICAiOmJhc2Vfam5pIiwKKyAgICAgICI6ZGVmYXVsdF92aWRlb19jb2RlY19m
YWN0b3J5X2puaSIsCisgICAgICAiOmdlbmVyYXRlZF92aWRlb19qbmkiLAorICAgICAgIjpuYXRp
dmVfYXBpX2puaSIsCisgICAgICAiOnZpZGVvX2puaSIsCisgICAgICAiOnZpZGVvZnJhbWVfam5p
IiwKKyAgICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKKyAgICAgICIuLi8uLi9hcGkvdmlkZW9f
Y29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAorICAgICAgIi4uLy4uL2NvbW1vbl92aWRlbzpjb21t
b25fdmlkZW8iLAorICAgICAgIi4uLy4uL21lZGlhOnJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3Mi
LAorICAgICAgIi4uLy4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKKyAgICAgICIuLi8uLi9tb2R1
bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAorICAgICAgIi4uLy4uL21v
ZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKKyAgICAgICIuLi8uLi9y
dGNfYmFzZTpjaGVja3MiLAorICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKKyAgICAg
ICIuLi8uLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZV9hcGkiLAorICAgICAgIi4uLy4uL3J0Y19i
YXNlOnNlcXVlbmNlZF90YXNrX2NoZWNrZXIiLAorICAgICAgIi4uLy4uL3J0Y19iYXNlOndlYWtf
cHRyIiwKKyAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICAg
Ii8vdGhpcmRfcGFydHkvbGlieXV2IiwKKyAgICBdCisgIH0KKworICBydGNfc3RhdGljX2xpYnJh
cnkoInZpZGVvX2puaSIpIHsKKyAgICBzb3VyY2VzID0gWwogICAgICAgInNyYy9qbmkvYW5kcm9p
ZHZpZGVvdHJhY2tzb3VyY2UuY2MiLAogICAgICAgInNyYy9qbmkvYW5kcm9pZHZpZGVvdHJhY2tz
b3VyY2UuaCIsCiAgICAgICAic3JjL2puaS9lbmNvZGVkaW1hZ2UuY2MiLApAQCAtNTQwLDYgKzYy
OSw3IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgICAic3JjL2puaS9udjEyYnVmZmVyLmNjIiwK
ICAgICAgICJzcmMvam5pL252MjFidWZmZXIuY2MiLAogICAgICAgInNyYy9qbmkvcGMvdmlkZW8u
Y2MiLAorICAgICAgInNyYy9qbmkvdGltZXN0YW1wYWxpZ25lci5jYyIsCiAgICAgICAic3JjL2pu
aS92aWRlb2NvZGVjaW5mby5jYyIsCiAgICAgICAic3JjL2puaS92aWRlb2NvZGVjaW5mby5oIiwK
ICAgICAgICJzcmMvam5pL3ZpZGVvY29kZWNzdGF0dXMuY2MiLApAQCAtNTYxLDM2ICs2NTEsMjUg
QEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICJzcmMvam5pL3l1dmhlbHBlci5jYyIsCiAgICAg
XQogCi0gICAgZGVwcyArPSBbCisgICAgZGVwcyA9IFsKICAgICAgICI6YmFzZV9qbmkiLAogICAg
ICAgIjpnZW5lcmF0ZWRfdmlkZW9fam5pIiwKICAgICAgICI6bmF0aXZlX2FwaV9qbmkiLAogICAg
ICAgIjp2aWRlb2ZyYW1lX2puaSIsCi0gICAgICAiOnZwOF9qbmkiLCAgIyBUT0RPKGJ1Z3Mud2Vi
cnRjLm9yZy83OTI1KTogUmVtb3ZlLgotICAgICAgIjp2cDlfam5pIiwgICMgVE9ETyhidWdzLndl
YnJ0Yy5vcmcvNzkyNSk6IFJlbW92ZS4KICAgICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAg
ICAgICIuLi8uLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCisgICAgICAiLi4v
Li4vYXBpL3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRl
b19mcmFtZSIsCi0gICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczpidWlsdGluX3ZpZGVvX2Rl
Y29kZXJfZmFjdG9yeSIsCi0gICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczpidWlsdGluX3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeSIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczpydGNf
c29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlcnMiLAogICAgICAgIi4uLy4uL2FwaS92aWRlb19jb2Rl
Y3M6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgICAiLi4vLi4vY29tbW9uX3ZpZGVvOmNvbW1vbl92
aWRlbyIsCi0gICAgICAiLi4vLi4vbWVkaWE6cnRjX2F1ZGlvX3ZpZGVvIiwKLSAgICAgICIuLi8u
Li9tZWRpYTpydGNfaDI2NF9wcm9maWxlX2lkIiwKLSAgICAgICIuLi8uLi9tZWRpYTpydGNfaW50
ZXJuYWxfdmlkZW9fY29kZWNzIiwKICAgICAgICIuLi8uLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIs
Ci0gICAgICAiLi4vLi4vbW9kdWxlcy91dGlsaXR5OnV0aWxpdHkiLAogICAgICAgIi4uLy4uL21v
ZHVsZXMvdmlkZW9fY29kaW5nOmNvZGVjX2dsb2JhbHNfaGVhZGVycyIsCiAgICAgICAiLi4vLi4v
bW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKICAgICAgICIuLi8u
Li9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAgICAgICAiLi4v
Li4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZSIsCi0g
ICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICAgIi4uLy4uL3J0
Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKLSAgICAgICIuLi8uLi9ydGNfYmFzZTpzZXF1ZW5jZWRf
dGFza19jaGVja2VyIiwKLSAgICAgICIuLi8uLi9ydGNfYmFzZTp3ZWFrX3B0ciIsCi0gICAgICAi
Li4vLi4vcnRjX2Jhc2UvbWVtb3J5OmFsaWduZWRfbWFsbG9jIiwKKyAgICAgICIuLi8uLi9ydGNf
YmFzZTpydGNfdGFza19xdWV1ZV9hcGkiLAogICAgICAgIi8vdGhpcmRfcGFydHkvbGlieXV2IiwK
ICAgICBdCiAgIH0KQEAgLTYwNiw2ICs2ODUsOCBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAg
InNyYy9qbmkvcGMvYW5kcm9pZG5ldHdvcmttb25pdG9yLmgiLAogICAgICAgInNyYy9qbmkvcGMv
YXVkaW90cmFjay5jYyIsCiAgICAgICAic3JjL2puaS9wYy9jYWxsc2Vzc2lvbmZpbGVyb3RhdGlu
Z2xvZ3NpbmsuY2MiLAorICAgICAgInNyYy9qbmkvcGMvY3J5cHRvb3B0aW9ucy5jYyIsCisgICAg
ICAic3JjL2puaS9wYy9jcnlwdG9vcHRpb25zLmgiLAogICAgICAgInNyYy9qbmkvcGMvZGF0YWNo
YW5uZWwuY2MiLAogICAgICAgInNyYy9qbmkvcGMvZGF0YWNoYW5uZWwuaCIsCiAgICAgICAic3Jj
L2puaS9wYy9kdG1mc2VuZGVyLmNjIiwKQEAgLTYyNCw2ICs3MDUsOCBAQCBpZiAoaXNfYW5kcm9p
ZCkgewogICAgICAgInNyYy9qbmkvcGMvcGVlcmNvbm5lY3Rpb24uaCIsCiAgICAgICAic3JjL2pu
aS9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MiLAogICAgICAgInNyYy9qbmkvcGMvcGVlcmNv
bm5lY3Rpb25mYWN0b3J5LmgiLAorICAgICAgInNyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuY2Mi
LAorICAgICAgInNyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuaCIsCiAgICAgICAic3JjL2puaS9w
Yy9ydGNzdGF0c2NvbGxlY3RvcmNhbGxiYWNrd3JhcHBlci5jYyIsCiAgICAgICAic3JjL2puaS9w
Yy9ydGNzdGF0c2NvbGxlY3RvcmNhbGxiYWNrd3JhcHBlci5oIiwKICAgICAgICJzcmMvam5pL3Bj
L3J0cHBhcmFtZXRlcnMuY2MiLApAQCAtNjY5LDYgKzc1Miw3IEBAIGlmIChpc19hbmRyb2lkKSB7
CiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAogICAgICAgIi4uLy4uL3N5c3Rl
bV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvbWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
czpvcHRpb25hbCIsCiAgICAgXQogICB9CiAKQEAgLTY4NSw2ICs3NjksNTAgQEAgaWYgKGlzX2Fu
ZHJvaWQpIHsKICAgICBdCiAgIH0KIAorICBydGNfc3RhdGljX2xpYnJhcnkoImRlZmF1bHRfdmlk
ZW9fY29kZWNfZmFjdG9yeV9qbmkiKSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgICBh
bGxvd19wb2lzb24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0KKyAgICBkZXBzID0gWwor
ICAgICAgIjpzd2NvZGVjc19qbmkiLAorICAgICAgIjp2aWRlb19qbmkiLAorICAgIF0KKyAgfQor
CisgIHJ0Y19zdGF0aWNfbGlicmFyeSgibGlidnB4X3ZwOF9qbmkiKSB7CisgICAgdmlzaWJpbGl0
eSA9IFsgIioiIF0KKyAgICBhbGxvd19wb2lzb24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3Mi
IF0KKyAgICBzb3VyY2VzID0gWworICAgICAgInNyYy9qbmkvdnA4Y29kZWMuY2MiLAorICAgIF0K
KyAgICBkZXBzID0gWworICAgICAgIjpiYXNlX2puaSIsCisgICAgICAiOmdlbmVyYXRlZF9saWJ2
cHhfdnA4X2puaSIsCisgICAgICAiOnZpZGVvX2puaSIsCisgICAgICAiLi4vLi4vbW9kdWxlcy92
aWRlb19jb2Rpbmc6d2VicnRjX3ZwOCIsCisgICAgXQorICB9CisKKyAgcnRjX3N0YXRpY19saWJy
YXJ5KCJsaWJ2cHhfdnA5X2puaSIpIHsKKyAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICAgIGFs
bG93X3BvaXNvbiA9IFsgInNvZnR3YXJlX3ZpZGVvX2NvZGVjcyIgXQorICAgIHNvdXJjZXMgPSBb
CisgICAgICAic3JjL2puaS92cDljb2RlYy5jYyIsCisgICAgXQorICAgIGRlcHMgPSBbCisgICAg
ICAiOmJhc2Vfam5pIiwKKyAgICAgICI6Z2VuZXJhdGVkX2xpYnZweF92cDlfam5pIiwKKyAgICAg
ICI6dmlkZW9fam5pIiwKKyAgICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp3ZWJydGNf
dnA5IiwKKyAgICBdCisgIH0KKworICBydGNfc3RhdGljX2xpYnJhcnkoInN3Y29kZWNzX2puaSIp
IHsKKyAgICBkZXBzID0gWworICAgICAgIjpsaWJ2cHhfdnA4X2puaSIsCisgICAgICAiOmxpYnZw
eF92cDlfam5pIiwKKyAgICBdCisgIH0KKwogICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICMg
TmF0aXZlIEFQSSB0YXJnZXRzICMKICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNzY5LDEw
ICs4OTcsNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAjIG9iamVjdHMuCiAgIHJ0Y19zdGF0aWNf
bGlicmFyeSgibmF0aXZlX2FwaV9jb2RlY3MiKSB7CiAgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0K
LSAgICBhbGxvd19wb2lzb24gPSBbCi0gICAgICAiYXVkaW9fY29kZWNzIiwgICMgVE9ETyhidWdz
LndlYnJ0Yy5vcmcvODM5Nik6IFJlbW92ZS4KLSAgICAgICJzb2Z0d2FyZV92aWRlb19jb2RlY3Mi
LCAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy83OTI1KTogUmVtb3ZlLgotICAgIF0KKyAgICBhbGxv
d19wb2lzb24gPSBbICJhdWRpb19jb2RlY3MiIF0gICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvODM5
Nik6IFJlbW92ZS4KICAgICBzb3VyY2VzID0gWwogICAgICAgIm5hdGl2ZV9hcGkvY29kZWNzL3dy
YXBwZXIuY2MiLAogICAgICAgIm5hdGl2ZV9hcGkvY29kZWNzL3dyYXBwZXIuaCIsCkBAIC03OTIs
MTQgKzkxNywxMCBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAjIEFQSSBmb3IgY3JlYXRpbmcgSmF2
YSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSBDKysgZXF1aXZhbGVudHMuCiAgIHJ0Y19zdGF0
aWNfbGlicmFyeSgibmF0aXZlX2FwaV9wZWVyY29ubmVjdGlvbiIpIHsKICAgICB2aXNpYmlsaXR5
ID0gWyAiKiIgXQotCi0gICAgYWxsb3dfcG9pc29uID0gWyAic29mdHdhcmVfdmlkZW9fY29kZWNz
IiBdICAjIFRPRE8oYnVncy53ZWJydGMub3JnLzc5MjUpOiBSZW1vdmUuCi0KICAgICBzb3VyY2Vz
ID0gWwogICAgICAgIm5hdGl2ZV9hcGkvcGVlcmNvbm5lY3Rpb24vcGVlcmNvbm5lY3Rpb25mYWN0
b3J5LmNjIiwKICAgICAgICJuYXRpdmVfYXBpL3BlZXJjb25uZWN0aW9uL3BlZXJjb25uZWN0aW9u
ZmFjdG9yeS5oIiwKICAgICBdCi0KICAgICBkZXBzID0gWwogICAgICAgIjpiYXNlX2puaSIsCiAg
ICAgICAiOnBlZXJjb25uZWN0aW9uX2puaSIsCkBAIC04MTMsMTAgKzkzNCw3IEBAIGlmIChpc19h
bmRyb2lkKSB7CiAgICMgdmlkZW8gaW50ZXJmYWNlcyBmcm9tIHRoZWlyIEphdmEgZXF1aXZhbGVu
dHMuCiAgIHJ0Y19zdGF0aWNfbGlicmFyeSgibmF0aXZlX2FwaV92aWRlbyIpIHsKICAgICB2aXNp
YmlsaXR5ID0gWyAiKiIgXQotICAgIGFsbG93X3BvaXNvbiA9IFsKLSAgICAgICJhdWRpb19jb2Rl
Y3MiLCAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84Mzk2KTogUmVtb3ZlLgotICAgICAgInNvZnR3
YXJlX3ZpZGVvX2NvZGVjcyIsICAjIFRPRE8oYnVncy53ZWJydGMub3JnLzc5MjUpOiBSZW1vdmUu
Ci0gICAgXQorICAgIGFsbG93X3BvaXNvbiA9IFsgImF1ZGlvX2NvZGVjcyIgXSAgIyBUT0RPKGJ1
Z3Mud2VicnRjLm9yZy84Mzk2KTogUmVtb3ZlLgogICAgIHNvdXJjZXMgPSBbCiAgICAgICAibmF0
aXZlX2FwaS92aWRlby92aWRlb3NvdXJjZS5jYyIsCiAgICAgICAibmF0aXZlX2FwaS92aWRlby92
aWRlb3NvdXJjZS5oIiwKQEAgLTgyOSw2ICs5NDcsNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAg
ICAgIjp2aWRlb2ZyYW1lX2puaSIsCiAgICAgICAiLy9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0
aW9uX2FwaSIsCiAgICAgICAiLy9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAorICAgICAgIi8vcnRj
X2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi8vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAog
ICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgICAgXQpAQCAt
ODkxLDYgKzEwMTAsNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgIi4uLy4uL2xvZ2dpbmc6
cnRjX2V2ZW50X2xvZ19hcGkiLAogICAgICAgIi4uLy4uL21lZGlhOnJ0Y19hdWRpb192aWRlbyIs
CiAgICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6YXVkaW9fZGV2aWNlIiwKKyAgICAg
ICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICIuLi8uLi9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgXQogICB9CkBAIC05
MjksMzAgKzEwNDksNiBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgIF0KICAgfQogCi0gIHJ0Y19z
dGF0aWNfbGlicmFyeSgidnA4X2puaSIpIHsKLSAgICBzb3VyY2VzID0gWwotICAgICAgInNyYy9q
bmkvdnA4Y29kZWMuY2MiLAotICAgIF0KLQotICAgIGRlcHMgPSBbCi0gICAgICAiOmJhc2Vfam5p
IiwKLSAgICAgICI6Z2VuZXJhdGVkX3ZwOF9qbmkiLAotICAgICAgIi4uLy4uL21vZHVsZXMvdmlk
ZW9fY29kaW5nOndlYnJ0Y192cDgiLAotICAgIF0KLSAgfQotCi0gIHJ0Y19zdGF0aWNfbGlicmFy
eSgidnA5X2puaSIpIHsKLSAgICBzb3VyY2VzID0gWwotICAgICAgInNyYy9qbmkvdnA5Y29kZWMu
Y2MiLAotICAgIF0KLQotICAgIGRlcHMgPSBbCi0gICAgICAiOmJhc2Vfam5pIiwKLSAgICAgICI6
Z2VuZXJhdGVkX3ZwOV9qbmkiLAotICAgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOndl
YnJ0Y192cDkiLAotICAgIF0KLSAgfQotCiAgIHJ0Y19zdGF0aWNfbGlicmFyeSgibG9nZ2luZ19q
bmkiKSB7CiAgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgICBzb3VyY2VzID0gWwpAQCAtOTgx
LDYgKzEwNzcsNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgIjpiYXNlX2puaSIsCiAgICAg
ICAiOmdlbmVyYXRlZF9hdWRpb19kZXZpY2VfbW9kdWxlX2Jhc2Vfam5pIiwKICAgICAgICI6bmF0
aXZlX2FwaV9qbmkiLAorICAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2Rl
dmljZV9hcGkiLAogICAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2Rldmlj
ZV9idWZmZXIiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgICAiLi4vLi4v
cnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLApAQCAtMTExNCw2ICsxMjExLDcgQEAgaWYgKGlz
X2FuZHJvaWQpIHsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9KYXZhSTQyMEJ1ZmZlci5qYXZhIiwK
ICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9NZWRpYUNvZGVjVmlkZW9EZWNvZGVyLmphdmEiLAogICAg
ICAgImFwaS9vcmcvd2VicnRjL01lZGlhQ29kZWNWaWRlb0VuY29kZXIuamF2YSIsCisgICAgICAi
YXBpL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25lci5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dl
YnJ0Yy9WaWRlb0NvZGVjSW5mby5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9WaWRlb0Nv
ZGVjU3RhdHVzLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL1ZpZGVvRGVjb2Rlci5qYXZh
IiwKQEAgLTExNDAsMTAgKzEyMzgsMTAgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBqbmlfZ2Vu
ZXJhdG9yX2luY2x1ZGUgPSAiLy9zZGsvYW5kcm9pZC9zcmMvam5pL2puaV9nZW5lcmF0b3JfaGVs
cGVyLmgiCiAgIH0KIAotICBnZW5lcmF0ZV9qbmkoImdlbmVyYXRlZF92cDhfam5pIikgeworICBn
ZW5lcmF0ZV9qbmkoImdlbmVyYXRlZF9saWJ2cHhfdnA4X2puaSIpIHsKICAgICBzb3VyY2VzID0g
WwotICAgICAgInNyYy9qYXZhL29yZy93ZWJydGMvVlA4RGVjb2Rlci5qYXZhIiwKLSAgICAgICJz
cmMvamF2YS9vcmcvd2VicnRjL1ZQOEVuY29kZXIuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJy
dGMvTGlidnB4VnA4RGVjb2Rlci5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhW
cDhFbmNvZGVyLmphdmEiLAogICAgIF0KIAogICAgIGpuaV9wYWNrYWdlID0gIiIKQEAgLTExNTEs
MTAgKzEyNDksMTAgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBqbmlfZ2VuZXJhdG9yX2luY2x1
ZGUgPSAiLy9zZGsvYW5kcm9pZC9zcmMvam5pL2puaV9nZW5lcmF0b3JfaGVscGVyLmgiCiAgIH0K
IAotICBnZW5lcmF0ZV9qbmkoImdlbmVyYXRlZF92cDlfam5pIikgeworICBnZW5lcmF0ZV9qbmko
ImdlbmVyYXRlZF9saWJ2cHhfdnA5X2puaSIpIHsKICAgICBzb3VyY2VzID0gWwotICAgICAgInNy
Yy9qYXZhL29yZy93ZWJydGMvVlA5RGVjb2Rlci5qYXZhIiwKLSAgICAgICJzcmMvamF2YS9vcmcv
d2VicnRjL1ZQOUVuY29kZXIuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvTGlidnB4VnA5
RGVjb2Rlci5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDlFbmNvZGVyLmph
dmEiLAogICAgIF0KIAogICAgIGpuaV9wYWNrYWdlID0gIiIKQEAgLTExNjYsNiArMTI2NCw3IEBA
IGlmIChpc19hbmRyb2lkKSB7CiAgICAgc291cmNlcyA9IFsKICAgICAgICJhcGkvb3JnL3dlYnJ0
Yy9BdWRpb1RyYWNrLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0NhbGxTZXNzaW9uRmls
ZVJvdGF0aW5nTG9nU2luay5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9DcnlwdG9PcHRp
b25zLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0RhdGFDaGFubmVsLmphdmEiLAogICAg
ICAgImFwaS9vcmcvd2VicnRjL0R0bWZTZW5kZXIuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJy
dGMvSWNlQ2FuZGlkYXRlLmphdmEiLApAQCAtMTE3OCw2ICsxMjc3LDcgQEAgaWYgKGlzX2FuZHJv
aWQpIHsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9SVENTdGF0cy5qYXZhIiwKICAgICAgICJhcGkv
b3JnL3dlYnJ0Yy9SVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrLmphdmEiLAogICAgICAgImFwaS9v
cmcvd2VicnRjL1JUQ1N0YXRzUmVwb3J0LmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL1J0
Y0NlcnRpZmljYXRlUGVtLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL1J0cFBhcmFtZXRl
cnMuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvUnRwUmVjZWl2ZXIuamF2YSIsCiAgICAg
ICAiYXBpL29yZy93ZWJydGMvUnRwU2VuZGVyLmphdmEiLApAQCAtMTIwMyw2ICsxMzAzLDE2IEBA
IGlmIChpc19hbmRyb2lkKSB7CiAgICAgam5pX2dlbmVyYXRvcl9pbmNsdWRlID0gIi8vc2RrL2Fu
ZHJvaWQvc3JjL2puaS9qbmlfZ2VuZXJhdG9yX2hlbHBlci5oIgogICB9CiAKKyAgZ2VuZXJhdGVf
am5pKCJnZW5lcmF0ZWRfYnVpbHRpbl9hdWRpb19jb2RlY3Nfam5pIikgeworICAgIHNvdXJjZXMg
PSBbCisgICAgICAiYXBpL29yZy93ZWJydGMvQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0
b3J5LmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL0J1aWx0aW5BdWRpb0VuY29kZXJGYWN0
b3J5RmFjdG9yeS5qYXZhIiwKKyAgICBdCisgICAgam5pX3BhY2thZ2UgPSAiIgorICAgIG5hbWVz
cGFjZSA9ICJ3ZWJydGM6OmpuaSIKKyAgICBqbmlfZ2VuZXJhdG9yX2luY2x1ZGUgPSAiLy9zZGsv
YW5kcm9pZC9zcmMvam5pL2puaV9nZW5lcmF0b3JfaGVscGVyLmgiCisgIH0KKwogICAjIEdlbmVy
YXRlZCBKTkkgZm9yIG5hdGl2ZSBBUEkgdGFyZ2V0cwogCiAgIGdlbmVyYXRlX2puaSgiZ2VuZXJh
dGVkX25hdGl2ZV9hcGlfam5pIikgewpAQCAtMTI1NSw2ICsxMzY1LDcgQEAgaWYgKGlzX2FuZHJv
aWQpIHsKIAogICAgICAgamF2YV9maWxlcyA9IFsKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRl
c3RzL3NyYy9vcmcvd2VicnRjL0FuZHJvaWRWaWRlb0RlY29kZXJJbnN0cnVtZW50YXRpb25UZXN0
LmphdmEiLAorICAgICAgICAiaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQnVp
bHRpbkF1ZGlvQ29kZWNzRmFjdG9yeUZhY3RvcnlUZXN0LmphdmEiLAogICAgICAgICAiaW5zdHJ1
bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMUNhcHR1cmVyVXNpbmdCeXRlQnVm
ZmVyVGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2Vi
cnRjL0NhbWVyYTFDYXB0dXJlclVzaW5nVGV4dHVyZVRlc3QuamF2YSIsCiAgICAgICAgICJpbnN0
cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmEyQ2FwdHVyZXJUZXN0LmphdmEi
LApAQCAtMTI3MCwxMSArMTM4MSwxMyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgICAiaW5z
dHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25GYWN0b3J5VGVz
dC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1Bl
ZXJDb25uZWN0aW9uVGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3Ny
Yy9vcmcvd2VicnRjL1JlbmRlcmVyQ29tbW9uVGVzdC5qYXZhIiwKKyAgICAgICAgImluc3RydW1l
bnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1J0Y0NlcnRpZmljYXRlUGVtVGVzdC5qYXZhIiwK
ICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1N1cmZhY2VUZXh0
dXJlSGVscGVyVGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9v
cmcvd2VicnRjL1N1cmZhY2VWaWV3UmVuZGVyZXJPbk1lYXN1cmVUZXN0LmphdmEiLAogICAgICAg
ICAiaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvVGVzdENvbnN0YW50cy5qYXZh
IiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1ZpZGVvRmls
ZVJlbmRlcmVyVGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9v
cmcvd2VicnRjL1ZpZGVvRnJhbWVCdWZmZXJUZXN0LmphdmEiLAorICAgICAgICAiaW5zdHJ1bWVu
dGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25lclRlc3QuamF2YSIsCiAg
ICAgICAgICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9XZWJSdGNKbmlCb290
VGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRj
L1l1dkhlbHBlclRlc3QuamF2YSIsCiAgICAgICBdCkBAIC0xMjk0LDYgKzE0MDcsNyBAQCBpZiAo
aXNfYW5kcm9pZCkgewogICAgICAgICAiLy9ydGNfYmFzZTpiYXNlX2phdmEiLAogICAgICAgICAi
Ly90aGlyZF9wYXJ0eS9hbmRyb2lkX3N1cHBvcnRfdGVzdF9ydW5uZXI6cnVsZXNfamF2YSIsCiAg
ICAgICAgICIvL3RoaXJkX3BhcnR5L2FuZHJvaWRfc3VwcG9ydF90ZXN0X3J1bm5lcjpydW5uZXJf
amF2YSIsCisgICAgICAgICIvL3RoaXJkX3BhcnR5L2dvb2dsZS10cnV0aDpnb29nbGVfdHJ1dGhf
amF2YSIsCiAgICAgICAgICIvL3RoaXJkX3BhcnR5L2p1bml0IiwKICAgICAgIF0KIApAQCAtMTM3
MSwyMyArMTQ4NSwyMyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgIjpuYXRpdmVfYXBpX3Zp
ZGVvIiwKICAgICAgICI6b3BlbnNsZXNfYXVkaW9fZGV2aWNlX21vZHVsZSIsCiAgICAgICAiOnZp
ZGVvX2puaSIsCi0gICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOnN5c3RlbV93cmFwcGVycyIs
Ci0gICAgICAiLy9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
IiwKLSAgICAgICIvL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3Rv
cnkiLAotICAgICAgIi8vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKLSAgICAgICIvL21lZGlhOnJ0
Y19hdWRpb192aWRlbyIsCi0gICAgICAiLy9tZWRpYTpydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNz
IiwKLSAgICAgICIvL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKLSAgICAgICIvL21vZHVsZXMvYXVk
aW9fZGV2aWNlOmF1ZGlvX2RldmljZSIsCi0gICAgICAiLy9tb2R1bGVzL2F1ZGlvX2RldmljZTpt
b2NrX2F1ZGlvX2RldmljZSIsCi0gICAgICAiLy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVk
aW9fcHJvY2Vzc2luZyIsCi0gICAgICAiLy9tb2R1bGVzL3V0aWxpdHk6dXRpbGl0eSIsCi0gICAg
ICAiLy9wYzpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24iLAotICAgICAgIi8vcnRjX2Jhc2U6Y2hl
Y2tzIiwKLSAgICAgICIvL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIvL3Rl
c3Q6ZmlsZXV0aWxzIiwKLSAgICAgICIvL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKLSAgICAgICIvL3Rl
c3RpbmcvZ3Rlc3QiLAorICAgICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRp
b19kZWNvZGVyX2ZhY3RvcnkiLAorICAgICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRp
bl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLAorICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19m
cmFtZSIsCisgICAgICAiLi4vLi4vbWVkaWE6cnRjX2F1ZGlvX3ZpZGVvIiwKKyAgICAgICIuLi8u
Li9tZWRpYTpydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIiwKKyAgICAgICIuLi8uLi9tZWRpYTpy
dGNfbWVkaWFfYmFzZSIsCisgICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6YXVkaW9f
ZGV2aWNlIiwKKyAgICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX2RldmljZTptb2NrX2F1ZGlvX2Rl
dmljZSIsCisgICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCisgICAg
ICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAorICAg
ICAgIi4uLy4uL21vZHVsZXMvdXRpbGl0eTp1dGlsaXR5IiwKKyAgICAgICIuLi8uLi9wYzpsaWJq
aW5nbGVfcGVlcmNvbm5lY3Rpb24iLAorICAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisg
ICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICAgIi4uLy4uL3Rl
c3Q6ZmlsZXV0aWxzIiwKKyAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgICAi
Li4vLi4vdGVzdGluZy9ndGVzdCIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWVtb3J5IiwKICAgICBdCiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0F1ZGlvRGVj
b2RlckZhY3RvcnlGYWN0b3J5LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9BdWRpb0RlY29kZXJGYWN0b3J5
RmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkM2UyNjI4OTZjYWI4NDQ0MWU0YTdkMmI3ZjgzOGZi
NTljM2FiODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9BdWRpb0RlY29kZXJGYWN0
b3J5RmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKK3Bh
Y2thZ2Ugb3JnLndlYnJ0YzsKKworLyoqCisgKiBJbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBpbnRl
cmZhY2UgY2FuIGNyZWF0ZSBhIG5hdGl2ZSB7QGNvZGUgd2VicnRjOjpBdWRpb0RlY29kZXJGYWN0
b3J5fS4KKyAqLworcHVibGljIGludGVyZmFjZSBBdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeSB7
CisgIC8qKgorICAgKiBSZXR1cm5zIGEgcG9pbnRlciB0byBhIHtAY29kZSB3ZWJydGM6OkF1ZGlv
RGVjb2RlckZhY3Rvcnl9LiBUaGUgY2FsbGVyIHRha2VzIG93bmVyc2hpcC4KKyAgICovCisgIGxv
bmcgY3JlYXRlTmF0aXZlQXVkaW9EZWNvZGVyRmFjdG9yeSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29y
Zy93ZWJydGMvQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkuamF2YSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0F1
ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE0YjcxYWJhMWYwNjBk
NjZlZTBjM2EzMDRmODRjNDNlYjM5ZTY1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRj
L0F1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwyMSBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKworcGFja2FnZSBvcmcud2VicnRjOworCisvKioKKyAqIEltcGxlbWVudGF0
aW9ucyBvZiB0aGlzIGludGVyZmFjZSBjYW4gY3JlYXRlIGEgbmF0aXZlIHtAY29kZSB3ZWJydGM6
OkF1ZGlvRW5jb2RlckZhY3Rvcnl9LgorICovCitwdWJsaWMgaW50ZXJmYWNlIEF1ZGlvRW5jb2Rl
ckZhY3RvcnlGYWN0b3J5IHsKKyAgLyoqCisgICAqIFJldHVybnMgYSBwb2ludGVyIHRvIGEge0Bj
b2RlIHdlYnJ0Yzo6QXVkaW9FbmNvZGVyRmFjdG9yeX0uIFRoZSBjYWxsZXIgdGFrZXMgb3duZXJz
aGlwLgorICAgKi8KKyAgbG9uZyBjcmVhdGVOYXRpdmVBdWRpb0VuY29kZXJGYWN0b3J5KCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3Rv
cnkuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL2FwaS9vcmcvd2VicnRjL0J1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeS5q
YXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVlYmMxOWYyNWRjZWVhM2JmYTRlZmE4ODExNTg1MDQ0NTllYmVmMmUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9y
eUZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDIzIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
CisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNr
YWdlIG9yZy53ZWJydGM7CisKKy8qKgorICogQ3JlYXRlcyBhIG5hdGl2ZSB7QGNvZGUgd2VicnRj
OjpBdWRpb0RlY29kZXJGYWN0b3J5fSB3aXRoIHRoZSBidWlsdGluIGF1ZGlvIGRlY29kZXJzLgor
ICovCitwdWJsaWMgY2xhc3MgQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5IGltcGxl
bWVudHMgQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkgeworICBAT3ZlcnJpZGUKKyAgcHVibGlj
IGxvbmcgY3JlYXRlTmF0aXZlQXVkaW9EZWNvZGVyRmFjdG9yeSgpIHsKKyAgICByZXR1cm4gbmF0
aXZlQ3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKTsKKyAgfQorCisgIHByaXZhdGUg
c3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5
KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9y
eUZhY3RvcnkuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0J1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5RmFj
dG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ODRkNGMzYjk4ZDZjZDdkM2MyYmI1ZDVhNGEwMWI5M2Iz
MGMyZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9FbmNvZGVy
RmFjdG9yeUZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDIzIEBACisvKgorICogIENvcHlyaWdodCAy
MDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CitwYWNrYWdlIG9yZy53ZWJydGM7CisKKy8qKgorICogVGhpcyBjbGFzcyBjcmVhdGVzIGEgbmF0
aXZlIHtAY29kZSB3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnl9IHdpdGggdGhlIGJ1aWx0aW4g
YXVkaW8gZW5jb2RlcnMuCisgKi8KK3B1YmxpYyBjbGFzcyBCdWlsdGluQXVkaW9FbmNvZGVyRmFj
dG9yeUZhY3RvcnkgaW1wbGVtZW50cyBBdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSB7CisgIEBP
dmVycmlkZQorICBwdWJsaWMgbG9uZyBjcmVhdGVOYXRpdmVBdWRpb0VuY29kZXJGYWN0b3J5KCkg
eworICAgIHJldHVybiBuYXRpdmVDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpOwor
ICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlQnVpbHRpbkF1
ZGlvRW5jb2RlckZhY3RvcnkoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0NyeXB0b09w
dGlvbnMuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0NyeXB0b09wdGlvbnMuamF2YQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
N2I5NTUyYWFkODdhNzE4ZDYyMTI4ODEwODYxOGRkZjg1NjMxZTkwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
YXBpL29yZy93ZWJydGMvQ3J5cHRvT3B0aW9ucy5qYXZhCkBAIC0wLDAgKzEsMTQ1IEBACisvKgor
ICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisKKy8qKgorICogQ3J5cHRvT3B0
aW9ucyBkZWZpbmVzIGFkdmFuY2VkIGNyeXB0b2dyYXBoaWMgc2V0dGluZ3MgZm9yIG5hdGl2ZSBX
ZWJSVEMuCisgKiBUaGVzZSBzZXR0aW5ncyBtdXN0IGJlIHBhc3NlZCBpbnRvIFJUQ0NvbmZpZ3Vy
YXRpb24uIFdlYlJUQyBpcyBzZWN1ciBieQorICogZGVmYXVsdCBhbmQgeW91IHNob3VsZCBub3Qg
bmVlZCB0byBzZXQgYW55IG9mIHRoZXNlIG9wdGlvbnMgdW5sZXNzIHlvdSBhcmUKKyAqIHNwZWNp
ZmljYWxseSBsb29raW5nIGZvciBhbiBhZGRpdGlvbmFsIGNyeXB0byBmZWF0dXJlIHN1Y2ggYXMg
QUVTX0dDTQorICogc3VwcG9ydC4gVGhpcyBjbGFzcyBpcyB0aGUgSmF2YSBiaW5kaW5nIG9mIG5h
dGl2ZSBhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaAorICovCitwdWJsaWMgZmluYWwgY2xhc3Mg
Q3J5cHRvT3B0aW9ucyB7CisgIC8qKgorICAgKiBTUlRQIFJlbGF0ZWQgUGVlciBDb25uZWN0aW9u
IE9wdGlvbnMuCisgICAqLworICBwdWJsaWMgZmluYWwgY2xhc3MgU3J0cCB7CisgICAgLyoqCisg
ICAgICogRW5hYmxlIEdDTSBjcnlwdG8gc3VpdGVzIGZyb20gUkZDIDc3MTQgZm9yIFNSVFAuIEdD
TSB3aWxsIG9ubHkgYmUgdXNlZAorICAgICAqIGlmIGJvdGggc2lkZXMgZW5hYmxlIGl0CisgICAg
ICovCisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGVuYWJsZUdjbUNyeXB0b1N1aXRlczsKKyAg
ICAvKioKKyAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIChwb3RlbnRpYWxseSBpbnNlY3VyZSkg
Y3J5cHRvIGNpcGhlcgorICAgICAqIFNSVFBfQUVTMTI4X0NNX1NIQTFfMzIgd2lsbCBiZSBpbmNs
dWRlZCBpbiB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2lwaGVycworICAgICAqIGR1cmluZyBuZWdv
dGlhdGlvbi4gSXQgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYm90aCBwZWVycyBzdXBwb3J0IGl0IGFu
ZCBubworICAgICAqIG90aGVyIGNpcGhlcnMgZ2V0IHByZWZlcnJlZC4KKyAgICAgKi8KKyAgICBw
cml2YXRlIGZpbmFsIGJvb2xlYW4gZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjsKKyAg
ICAvKioKKyAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgZW5jcnlwdGVkIFJUUCBoZWFkZXIgZXh0ZW5z
aW9ucyBhcyBkZWZpbmVkIGluIFJGQyA2OTA0CisgICAgICogd2lsbCBiZSBuZWdvdGlhdGVkLiBU
aGV5IHdpbGwgb25seSBiZSB1c2VkIGlmIGJvdGggcGVlcnMgc3VwcG9ydCB0aGVtLgorICAgICAq
LworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBlbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRl
bnNpb25zOworCisgICAgcHJpdmF0ZSBTcnRwKGJvb2xlYW4gZW5hYmxlR2NtQ3J5cHRvU3VpdGVz
LCBib29sZWFuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIsCisgICAgICAgIGJvb2xl
YW4gZW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucykgeworICAgICAgdGhpcy5lbmFi
bGVHY21DcnlwdG9TdWl0ZXMgPSBlbmFibGVHY21DcnlwdG9TdWl0ZXM7CisgICAgICB0aGlzLmVu
YWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIgPSBlbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRv
Q2lwaGVyOworICAgICAgdGhpcy5lbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zID0g
ZW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczsKKyAgICB9CisKKyAgICBAQ2FsbGVk
QnlOYXRpdmUoIlNydHAiKQorICAgIHB1YmxpYyBib29sZWFuIGdldEVuYWJsZUdjbUNyeXB0b1N1
aXRlcygpIHsKKyAgICAgIHJldHVybiBlbmFibGVHY21DcnlwdG9TdWl0ZXM7CisgICAgfQorCisg
ICAgQENhbGxlZEJ5TmF0aXZlKCJTcnRwIikKKyAgICBwdWJsaWMgYm9vbGVhbiBnZXRFbmFibGVB
ZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKCkgeworICAgICAgcmV0dXJuIGVuYWJsZUFlczEyOFNo
YTFfMzJDcnlwdG9DaXBoZXI7CisgICAgfQorCisgICAgQENhbGxlZEJ5TmF0aXZlKCJTcnRwIikK
KyAgICBwdWJsaWMgYm9vbGVhbiBnZXRFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25z
KCkgeworICAgICAgcmV0dXJuIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnM7Cisg
ICAgfQorICB9CisKKyAgLyoqCisgICAqIE9wdGlvbnMgdG8gYmUgdXNlZCB3aGVuIHRoZSBGcmFt
ZUVuY3J5cHRvciAvIEZyYW1lRGVjcnlwdG9yIEFQSXMgYXJlIHVzZWQuCisgICAqLworICBwdWJs
aWMgZmluYWwgY2xhc3MgU0ZyYW1lIHsKKyAgICAvKioKKyAgICAgKiBJZiBzZXQgYWxsIFJ0cFNl
bmRlcnMgbXVzdCBoYXZlIGFuIEZyYW1lRW5jcnlwdG9yIGF0dGFjaGVkIHRvIHRoZW0gYmVmb3Jl
CisgICAgICogdGhleSBhcmUgYWxsb3dlZCB0byBzZW5kIHBhY2tldHMuIEFsbCBSdHBSZWNlaXZl
cnMgbXVzdCBoYXZlIGEKKyAgICAgKiBGcmFtZURlY3J5cHRvciBhdHRhY2hlZCB0byB0aGVtIGJl
Zm9yZSB0aGV5IGFyZSBhYmxlIHRvIHJlY2VpdmUgcGFja2V0cy4KKyAgICAgKi8KKyAgICBwcml2
YXRlIGZpbmFsIGJvb2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbjsKKworICAgIHByaXZhdGUg
U0ZyYW1lKGJvb2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbikgeworICAgICAgdGhpcy5yZXF1
aXJlRnJhbWVFbmNyeXB0aW9uID0gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbjsKKyAgICB9CisKKyAg
ICBAQ2FsbGVkQnlOYXRpdmUoIlNGcmFtZSIpCisgICAgcHVibGljIGJvb2xlYW4gZ2V0UmVxdWly
ZUZyYW1lRW5jcnlwdGlvbigpIHsKKyAgICAgIHJldHVybiByZXF1aXJlRnJhbWVFbmNyeXB0aW9u
OworICAgIH0KKyAgfQorCisgIHByaXZhdGUgZmluYWwgU3J0cCBzcnRwOworICBwcml2YXRlIGZp
bmFsIFNGcmFtZSBzZnJhbWU7CisKKyAgcHJpdmF0ZSBDcnlwdG9PcHRpb25zKGJvb2xlYW4gZW5h
YmxlR2NtQ3J5cHRvU3VpdGVzLCBib29sZWFuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBo
ZXIsCisgICAgICBib29sZWFuIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMsIGJv
b2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbikgeworICAgIHRoaXMuc3J0cCA9IG5ldyBTcnRw
KAorICAgICAgICBlbmFibGVHY21DcnlwdG9TdWl0ZXMsIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlw
dG9DaXBoZXIsIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMpOworICAgIHRoaXMu
c2ZyYW1lID0gbmV3IFNGcmFtZShyZXF1aXJlRnJhbWVFbmNyeXB0aW9uKTsKKyAgfQorCisgIHB1
YmxpYyBzdGF0aWMgQnVpbGRlciBidWlsZGVyKCkgeworICAgIHJldHVybiBuZXcgQnVpbGRlcigp
OworICB9CisKKyAgQENhbGxlZEJ5TmF0aXZlCisgIHB1YmxpYyBTcnRwIGdldFNydHAoKSB7Cisg
ICAgcmV0dXJuIHNydHA7CisgIH0KKworICBAQ2FsbGVkQnlOYXRpdmUKKyAgcHVibGljIFNGcmFt
ZSBnZXRTRnJhbWUoKSB7CisgICAgcmV0dXJuIHNmcmFtZTsKKyAgfQorCisgIHB1YmxpYyBzdGF0
aWMgY2xhc3MgQnVpbGRlciB7CisgICAgcHJpdmF0ZSBib29sZWFuIGVuYWJsZUdjbUNyeXB0b1N1
aXRlczsKKyAgICBwcml2YXRlIGJvb2xlYW4gZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhl
cjsKKyAgICBwcml2YXRlIGJvb2xlYW4gZW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9u
czsKKyAgICBwcml2YXRlIGJvb2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbjsKKworICAgIHBy
aXZhdGUgQnVpbGRlcigpIHt9CisKKyAgICBwdWJsaWMgQnVpbGRlciBzZXRFbmFibGVHY21Dcnlw
dG9TdWl0ZXMoYm9vbGVhbiBlbmFibGVHY21DcnlwdG9TdWl0ZXMpIHsKKyAgICAgIHRoaXMuZW5h
YmxlR2NtQ3J5cHRvU3VpdGVzID0gZW5hYmxlR2NtQ3J5cHRvU3VpdGVzOworICAgICAgcmV0dXJu
IHRoaXM7CisgICAgfQorCisgICAgcHVibGljIEJ1aWxkZXIgc2V0RW5hYmxlQWVzMTI4U2hhMV8z
MkNyeXB0b0NpcGhlcihib29sZWFuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIpIHsK
KyAgICAgIHRoaXMuZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlciA9IGVuYWJsZUFlczEy
OFNoYTFfMzJDcnlwdG9DaXBoZXI7CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBw
dWJsaWMgQnVpbGRlciBzZXRFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zKAorICAg
ICAgICBib29sZWFuIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMpIHsKKyAgICAg
IHRoaXMuZW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucyA9IGVuYWJsZUVuY3J5cHRl
ZFJ0cEhlYWRlckV4dGVuc2lvbnM7CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBw
dWJsaWMgQnVpbGRlciBzZXRSZXF1aXJlRnJhbWVFbmNyeXB0aW9uKGJvb2xlYW4gcmVxdWlyZUZy
YW1lRW5jcnlwdGlvbikgeworICAgICAgdGhpcy5yZXF1aXJlRnJhbWVFbmNyeXB0aW9uID0gcmVx
dWlyZUZyYW1lRW5jcnlwdGlvbjsKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHB1
YmxpYyBDcnlwdG9PcHRpb25zIGNyZWF0ZUNyeXB0b09wdGlvbnMoKSB7CisgICAgICByZXR1cm4g
bmV3IENyeXB0b09wdGlvbnMoZW5hYmxlR2NtQ3J5cHRvU3VpdGVzLCBlbmFibGVBZXMxMjhTaGEx
XzMyQ3J5cHRvQ2lwaGVyLAorICAgICAgICAgIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVu
c2lvbnMsIHJlcXVpcmVGcmFtZUVuY3J5cHRpb24pOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
YXBpL29yZy93ZWJydGMvRWdsUmVuZGVyZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0VnbFJlbmRlcmVy
LmphdmEKaW5kZXggZDBhMWQ5OGIyYmRlZmNhOTU5ZGNjNGQ4NTRjMWY2OTQyNzA1N2MwYy4uZTgx
MDA1MzAwMzYxODNjZjMzYTc4MWRjYWMyZTJkMzcxZjlkMDI0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93
ZWJydGMvRWdsUmVuZGVyZXIuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9FZ2xSZW5kZXJlci5qYXZh
CkBAIC0xNyw2ICsxNyw3IEBAIGltcG9ydCBhbmRyb2lkLm9wZW5nbC5HTEVTMjA7CiBpbXBvcnQg
YW5kcm9pZC5vcy5IYW5kbGVyOwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlclRocmVhZDsKIGlt
cG9ydCBhbmRyb2lkLm9zLkxvb3BlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CiBpbXBv
cnQgYW5kcm9pZC52aWV3LlN1cmZhY2U7CiBpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKIGlt
cG9ydCBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdDsKQEAgLTc5LDYgKzgwLDI5IEBAIHB1YmxpYyBj
bGFzcyBFZ2xSZW5kZXJlciBpbXBsZW1lbnRzIFZpZGVvU2luayB7CiAgICAgfQogICB9CiAKKyAg
LyoqCisgICAqIEhhbmRsZXIgdGhhdCB0cmlnZ2VycyBhIGNhbGxiYWNrIHdoZW4gYW4gdW5jYXVn
aHQgZXhjZXB0aW9uIGhhcHBlbnMgd2hlbiBoYW5kbGluZyBhIG1lc3NhZ2UuCisgICAqLworICBw
cml2YXRlIHN0YXRpYyBjbGFzcyBIYW5kbGVyV2l0aEV4Y2VwdGlvbkNhbGxiYWNrIGV4dGVuZHMg
SGFuZGxlciB7CisgICAgcHJpdmF0ZSBmaW5hbCBSdW5uYWJsZSBleGNlcHRpb25DYWxsYmFjazsK
KworICAgIHB1YmxpYyBIYW5kbGVyV2l0aEV4Y2VwdGlvbkNhbGxiYWNrKExvb3BlciBsb29wZXIs
IFJ1bm5hYmxlIGV4Y2VwdGlvbkNhbGxiYWNrKSB7CisgICAgICBzdXBlcihsb29wZXIpOworICAg
ICAgdGhpcy5leGNlcHRpb25DYWxsYmFjayA9IGV4Y2VwdGlvbkNhbGxiYWNrOworICAgIH0KKwor
ICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoTWVzc2FnZShNZXNzYWdlIG1z
ZykgeworICAgICAgdHJ5IHsKKyAgICAgICAgc3VwZXIuZGlzcGF0Y2hNZXNzYWdlKG1zZyk7Cisg
ICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICBMb2dnaW5nLmUoVEFHLCAiRXhj
ZXB0aW9uIG9uIEVnbFJlbmRlcmVyIHRocmVhZCIsIGUpOworICAgICAgICBleGNlcHRpb25DYWxs
YmFjay5ydW4oKTsKKyAgICAgICAgdGhyb3cgZTsKKyAgICAgIH0KKyAgICB9CisgIH0KKwogICBw
cm90ZWN0ZWQgZmluYWwgU3RyaW5nIG5hbWU7CiAKICAgLy8gfHJlbmRlclRocmVhZEhhbmRsZXJ8
IGlzIGEgaGFuZGxlciBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHxyZW5kZXJUaHJlYWR8LCBhbmQg
aXMgc3luY2hyb25pemVkCkBAIC0xMDEsNiArMTI1LDcgQEAgcHVibGljIGNsYXNzIEVnbFJlbmRl
cmVyIGltcGxlbWVudHMgVmlkZW9TaW5rIHsKICAgQE51bGxhYmxlIHByaXZhdGUgRWdsQmFzZSBl
Z2xCYXNlOwogICBwcml2YXRlIGZpbmFsIFZpZGVvRnJhbWVEcmF3ZXIgZnJhbWVEcmF3ZXIgPSBu
ZXcgVmlkZW9GcmFtZURyYXdlcigpOwogICBATnVsbGFibGUgcHJpdmF0ZSBSZW5kZXJlckNvbW1v
bi5HbERyYXdlciBkcmF3ZXI7CisgIHByaXZhdGUgYm9vbGVhbiB1c2VQcmVzZW50YXRpb25UaW1l
U3RhbXA7CiAgIHByaXZhdGUgZmluYWwgTWF0cml4IGRyYXdNYXRyaXggPSBuZXcgTWF0cml4KCk7
CiAKICAgLy8gUGVuZGluZyBmcmFtZSB0byByZW5kZXIuIFNlcnZlcyBhcyBhIHF1ZXVlIHdpdGgg
c2l6ZSAxLiBTeW5jaHJvbml6ZWQgb24gfGZyYW1lTG9ja3wuCkBAIC0xNjEsMjAgKzE4NiwzMSBA
QCBwdWJsaWMgY2xhc3MgRWdsUmVuZGVyZXIgaW1wbGVtZW50cyBWaWRlb1NpbmsgewogICAgKiBJ
bml0aWFsaXplIHRoaXMgY2xhc3MsIHNoYXJpbmcgcmVzb3VyY2VzIHdpdGggfHNoYXJlZENvbnRl
eHR8LiBUaGUgY3VzdG9tIHxkcmF3ZXJ8IHdpbGwgYmUgdXNlZAogICAgKiBmb3IgZHJhd2luZyBm
cmFtZXMgb24gdGhlIEVHTFN1cmZhY2UuIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGNh
bGxpbmcgcmVsZWFzZSgpIG9uCiAgICAqIHxkcmF3ZXJ8LiBJdCBpcyBhbGxvd2VkIHRvIGNhbGwg
aW5pdCgpIHRvIHJlaW5pdGlhbGl6ZSB0aGUgcmVuZGVyZXIgYWZ0ZXIgYSBwcmV2aW91cwotICAg
KiBpbml0KCkvcmVsZWFzZSgpIGN5Y2xlLgorICAgKiBpbml0KCkvcmVsZWFzZSgpIGN5Y2xlLiBJ
ZiB1c2VQcmVzZW50YXRpb25UaW1lU3RhbXAgaXMgdHJ1ZSwgZWdsUHJlc2VudGF0aW9uVGltZUFO
RFJPSUQgd2lsbCBiZQorICAgKiBzZXQgd2l0aCB0aGUgZnJhbWUgdGltZXN0YW1wcywgd2hpY2gg
c3BlY2lmaWVzIGRlc2lyZWQgcHJlc2VudGF0aW9uIHRpbWUgYW5kIG1pZ2h0IGJlIHVzZWZ1bAor
ICAgKiBmb3IgZS5nLiBzeW5jaW5nIGF1ZGlvIGFuZCB2aWRlby4KICAgICovCiAgIHB1YmxpYyB2
b2lkIGluaXQoQE51bGxhYmxlIGZpbmFsIEVnbEJhc2UuQ29udGV4dCBzaGFyZWRDb250ZXh0LCBm
aW5hbCBpbnRbXSBjb25maWdBdHRyaWJ1dGVzLAotICAgICAgUmVuZGVyZXJDb21tb24uR2xEcmF3
ZXIgZHJhd2VyKSB7CisgICAgICBSZW5kZXJlckNvbW1vbi5HbERyYXdlciBkcmF3ZXIsIGJvb2xl
YW4gdXNlUHJlc2VudGF0aW9uVGltZVN0YW1wKSB7CiAgICAgc3luY2hyb25pemVkIChoYW5kbGVy
TG9jaykgewogICAgICAgaWYgKHJlbmRlclRocmVhZEhhbmRsZXIgIT0gbnVsbCkgewogICAgICAg
ICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKG5hbWUgKyAiQWxyZWFkeSBpbml0aWFs
aXplZCIpOwogICAgICAgfQogICAgICAgbG9nRCgiSW5pdGlhbGl6aW5nIEVnbFJlbmRlcmVyIik7
CiAgICAgICB0aGlzLmRyYXdlciA9IGRyYXdlcjsKKyAgICAgIHRoaXMudXNlUHJlc2VudGF0aW9u
VGltZVN0YW1wID0gdXNlUHJlc2VudGF0aW9uVGltZVN0YW1wOwogCiAgICAgICBmaW5hbCBIYW5k
bGVyVGhyZWFkIHJlbmRlclRocmVhZCA9IG5ldyBIYW5kbGVyVGhyZWFkKG5hbWUgKyAiRWdsUmVu
ZGVyZXIiKTsKICAgICAgIHJlbmRlclRocmVhZC5zdGFydCgpOwotICAgICAgcmVuZGVyVGhyZWFk
SGFuZGxlciA9IG5ldyBIYW5kbGVyKHJlbmRlclRocmVhZC5nZXRMb29wZXIoKSk7CisgICAgICBy
ZW5kZXJUaHJlYWRIYW5kbGVyID0KKyAgICAgICAgICBuZXcgSGFuZGxlcldpdGhFeGNlcHRpb25D
YWxsYmFjayhyZW5kZXJUaHJlYWQuZ2V0TG9vcGVyKCksIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAg
ICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAg
ICAgICAgICBzeW5jaHJvbml6ZWQgKGhhbmRsZXJMb2NrKSB7CisgICAgICAgICAgICAgICAgcmVu
ZGVyVGhyZWFkSGFuZGxlciA9IG51bGw7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9KTsKICAgICAgIC8vIENyZWF0ZSBFR0wgY29udGV4dCBvbiB0aGUgbmV3bHkg
Y3JlYXRlZCByZW5kZXIgdGhyZWFkLiBJdCBzaG91bGQgYmUgcG9zc2libHkgdG8gY3JlYXRlIHRo
ZQogICAgICAgLy8gY29udGV4dCBvbiB0aGlzIHRocmVhZCBhbmQgbWFrZSBpdCBjdXJyZW50IG9u
IHRoZSByZW5kZXIgdGhyZWFkLCBidXQgdGhpcyBjYXVzZXMgZmFpbHVyZSBvbgogICAgICAgLy8g
c29tZSBNYXJ2ZWwgYmFzZWQgSkIgZGV2aWNlcy4gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9w
L3dlYnJ0Yy9pc3N1ZXMvZGV0YWlsP2lkPTYzNTAuCkBAIC0xOTgsNiArMjM0LDE2IEBAIHB1Ymxp
YyBjbGFzcyBFZ2xSZW5kZXJlciBpbXBsZW1lbnRzIFZpZGVvU2luayB7CiAgICAgfQogICB9CiAK
KyAgLyoqCisgICAqIFNhbWUgYXMgYWJvdmUgd2l0aCB1c2VQcmVzZW50YXRpb25UaW1lU3RhbXAg
c2V0IHRvIGZhbHNlLgorICAgKgorICAgKiBAc2VlICNpbml0KEVnbEJhc2UuQ29udGV4dCwgaW50
W10sIFJlbmRlcmVyQ29tbW9uLkdsRHJhd2VyLCBib29sZWFuKQorICAgKi8KKyAgcHVibGljIHZv
aWQgaW5pdChATnVsbGFibGUgZmluYWwgRWdsQmFzZS5Db250ZXh0IHNoYXJlZENvbnRleHQsIGZp
bmFsIGludFtdIGNvbmZpZ0F0dHJpYnV0ZXMsCisgICAgICBSZW5kZXJlckNvbW1vbi5HbERyYXdl
ciBkcmF3ZXIpIHsKKyAgICBpbml0KHNoYXJlZENvbnRleHQsIGNvbmZpZ0F0dHJpYnV0ZXMsIGRy
YXdlciwgLyogdXNlUHJlc2VudGF0aW9uVGltZVN0YW1wPSAqLyBmYWxzZSk7CisgIH0KKwogICBw
dWJsaWMgdm9pZCBjcmVhdGVFZ2xTdXJmYWNlKFN1cmZhY2Ugc3VyZmFjZSkgewogICAgIGNyZWF0
ZUVnbFN1cmZhY2VJbnRlcm5hbChzdXJmYWNlKTsKICAgfQpAQCAtNTg1LDcgKzYzMSwxMSBAQCBw
dWJsaWMgY2xhc3MgRWdsUmVuZGVyZXIgaW1wbGVtZW50cyBWaWRlb1NpbmsgewogICAgICAgICAg
IGVnbEJhc2Uuc3VyZmFjZVdpZHRoKCksIGVnbEJhc2Uuc3VyZmFjZUhlaWdodCgpKTsKIAogICAg
ICAgZmluYWwgbG9uZyBzd2FwQnVmZmVyc1N0YXJ0VGltZU5zID0gU3lzdGVtLm5hbm9UaW1lKCk7
Ci0gICAgICBlZ2xCYXNlLnN3YXBCdWZmZXJzKCk7CisgICAgICBpZiAodXNlUHJlc2VudGF0aW9u
VGltZVN0YW1wKSB7CisgICAgICAgIGVnbEJhc2Uuc3dhcEJ1ZmZlcnMoZnJhbWUuZ2V0VGltZXN0
YW1wTnMoKSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBlZ2xCYXNlLnN3YXBCdWZmZXJzKCk7
CisgICAgICB9CiAKICAgICAgIGZpbmFsIGxvbmcgY3VycmVudFRpbWVOcyA9IFN5c3RlbS5uYW5v
VGltZSgpOwogICAgICAgc3luY2hyb25pemVkIChzdGF0aXN0aWNzTG9jaykgewpAQCAtNjUyLDcg
KzcwMiw3IEBAIHB1YmxpYyBjbGFzcyBFZ2xSZW5kZXJlciBpbXBsZW1lbnRzIFZpZGVvU2luayB7
CiAgIH0KIAogICBwcml2YXRlIFN0cmluZyBhdmVyYWdlVGltZUFzU3RyaW5nKGxvbmcgc3VtVGlt
ZU5zLCBpbnQgY291bnQpIHsKLSAgICByZXR1cm4gKGNvdW50IDw9IDApID8gIk5BIiA6IFRpbWVV
bml0Lk5BTk9TRUNPTkRTLnRvTWljcm9zKHN1bVRpbWVOcyAvIGNvdW50KSArICIgzrxzIjsKKyAg
ICByZXR1cm4gKGNvdW50IDw9IDApID8gIk5BIiA6IFRpbWVVbml0Lk5BTk9TRUNPTkRTLnRvTWlj
cm9zKHN1bVRpbWVOcyAvIGNvdW50KSArICIgdXMiOwogICB9CiAKICAgcHJpdmF0ZSB2b2lkIGxv
Z1N0YXRpc3RpY3MoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDhEZWNvZGVy
LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDhEZWNvZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRh
ZDBhYTEzN2M3NTIwZWJiNTkwOWUwZWUzNGFiMmRhNWNmNWRlZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2Fw
aS9vcmcvd2VicnRjL0xpYnZweFZwOERlY29kZXIuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgor
ICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworcGFja2FnZSBvcmcud2VicnRjOworCitwdWJsaWMgY2xhc3Mg
TGlidnB4VnA4RGVjb2RlciBleHRlbmRzIFdyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIgeworICBA
T3ZlcnJpZGUKKyAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZlVmlkZW9EZWNvZGVyKCkgeworICAg
IHJldHVybiBuYXRpdmVDcmVhdGVEZWNvZGVyKCk7CisgIH0KKworICBzdGF0aWMgbmF0aXZlIGxv
bmcgbmF0aXZlQ3JlYXRlRGVjb2RlcigpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTGli
dnB4VnA4RW5jb2Rlci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTGlidnB4VnA4RW5jb2Rlci5qYXZhCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRiZTllNTJjMTQyMWYyNDFjNGNjYzkxODk5YmUxNTkyMDNlM2E2ODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDhFbmNvZGVyLmphdmEKQEAgLTAsMCAr
MSwyNSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKK3BhY2thZ2Ugb3JnLndlYnJ0YzsKKwor
cHVibGljIGNsYXNzIExpYnZweFZwOEVuY29kZXIgZXh0ZW5kcyBXcmFwcGVkTmF0aXZlVmlkZW9F
bmNvZGVyIHsKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBsb25nIGNyZWF0ZU5hdGl2ZVZpZGVvRW5j
b2RlcigpIHsKKyAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRW5jb2RlcigpOworICB9CisKKyAgc3Rh
dGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsKKworICBAT3ZlcnJpZGUKKyAg
cHVibGljIGJvb2xlYW4gaXNIYXJkd2FyZUVuY29kZXIoKSB7CisgICAgcmV0dXJuIGZhbHNlOwor
ICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDlEZWNvZGVyLmphdmEgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkv
b3JnL3dlYnJ0Yy9MaWJ2cHhWcDlEZWNvZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBhMjQ0MzNhM2Vm
NzQxY2M5YjgxZDQ1ZTA3NmVjMjI4YmM0ZGI2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2Vi
cnRjL0xpYnZweFZwOURlY29kZXIuamF2YQpAQCAtMCwwICsxLDIyIEBACisvKgorICogIENvcHly
aWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworcGFja2FnZSBvcmcud2VicnRjOworCitwdWJsaWMgY2xhc3MgTGlidnB4VnA5
RGVjb2RlciBleHRlbmRzIFdyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIgeworICBAT3ZlcnJpZGUK
KyAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZlVmlkZW9EZWNvZGVyKCkgeworICAgIHJldHVybiBu
YXRpdmVDcmVhdGVEZWNvZGVyKCk7CisgIH0KKworICBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZl
Q3JlYXRlRGVjb2RlcigpOworCisgIHN0YXRpYyBuYXRpdmUgYm9vbGVhbiBuYXRpdmVJc1N1cHBv
cnRlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTGlidnB4VnA5RW5jb2Rlci5qYXZh
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
YXBpL29yZy93ZWJydGMvTGlidnB4VnA5RW5jb2Rlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyMTFhZTkz
ZmI4YWM1YTE3OWQzZjc3ZGFiZjdlM2M5ZjI2ODVmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3Jn
L3dlYnJ0Yy9MaWJ2cHhWcDlFbmNvZGVyLmphdmEKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKK3BhY2thZ2Ugb3JnLndlYnJ0YzsKKworcHVibGljIGNsYXNzIExpYnZw
eFZwOUVuY29kZXIgZXh0ZW5kcyBXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyIHsKKyAgQE92ZXJy
aWRlCisgIHB1YmxpYyBsb25nIGNyZWF0ZU5hdGl2ZVZpZGVvRW5jb2RlcigpIHsKKyAgICByZXR1
cm4gbmF0aXZlQ3JlYXRlRW5jb2RlcigpOworICB9CisKKyAgc3RhdGljIG5hdGl2ZSBsb25nIG5h
dGl2ZUNyZWF0ZUVuY29kZXIoKTsKKworICBAT3ZlcnJpZGUKKyAgcHVibGljIGJvb2xlYW4gaXNI
YXJkd2FyZUVuY29kZXIoKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgc3RhdGljIG5h
dGl2ZSBib29sZWFuIG5hdGl2ZUlzU3VwcG9ydGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dl
YnJ0Yy9NZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9NZWRp
YVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE2YTM3YTZkNzc3NTM5
YTQ2MGZjMjk0NmRmMWEyMjBhZmZhMjM2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRj
L01lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDIyIEBACisvKgor
ICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisKKy8qKgorICogRmFjdG9yeSBm
b3IgY3JlYXRpbmcgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEZhY3RvcnkgaW5zdGFuY2VzLgorICov
CitwdWJsaWMgaW50ZXJmYWNlIE1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkgeworICAvKioK
KyAgICogRHluYW1pY2FsbHkgYWxsb2NhdGVzIGEgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rv
cnkgaW5zdGFuY2UgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGl0LgorICAgKiBUaGUgY2FsbGVy
IHRha2VzIG93bmVyc2hpcCBvZiB0aGUgb2JqZWN0LgorICAgKi8KKyAgcHVibGljIGxvbmcgY3Jl
YXRlTmF0aXZlTWVkaWFUcmFuc3BvcnRGYWN0b3J5KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dl
YnJ0Yy9OZXR3b3JrTW9uaXRvci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTmV0d29ya01vbml0b3IuamF2
YQppbmRleCBiYTZiYWUwZWQ4MzQ5ODMyMTY1NmRlYjgyNTFmZDE2YjVkMjU4NzUxLi45NzY0YTBj
YjM1NGZmNzcyYWEzYTM1NTU0NzlkNDFhYjgwMmVmNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0
Yy9OZXR3b3JrTW9uaXRvci5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL05ldHdvcmtNb25pdG9yLmph
dmEKQEAgLTE0LDExICsxNCwxMCBAQCBpbXBvcnQgc3RhdGljIG9yZy53ZWJydGMuTmV0d29ya01v
bml0b3JBdXRvRGV0ZWN0LklOVkFMSURfTkVUX0lEOwogCiBpbXBvcnQgYW5kcm9pZC5jb250ZW50
LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5vcy5CdWlsZDsKLWltcG9ydCBqYXZheC5hbm5vdGF0
aW9uLk51bGxhYmxlOwogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CiBpbXBvcnQgamF2YS51
dGlsLkxpc3Q7Ci1pbXBvcnQgb3JnLndlYnJ0Yy5OZXR3b3JrTW9uaXRvckF1dG9EZXRlY3QuQ29u
bmVjdGlvblR5cGU7Ci1pbXBvcnQgb3JnLndlYnJ0Yy5OZXR3b3JrTW9uaXRvckF1dG9EZXRlY3Qu
TmV0d29ya0luZm9ybWF0aW9uOworaW1wb3J0IGphdmF4LmFubm90YXRpb24uTnVsbGFibGU7Citp
bXBvcnQgb3JnLndlYnJ0Yy5OZXR3b3JrTW9uaXRvckF1dG9EZXRlY3Q7CiAKIC8qKgogICogQm9y
cm93ZWQgZnJvbSBDaHJvbWl1bSdzCkBAIC0zMyw3ICszMiw3IEBAIHB1YmxpYyBjbGFzcyBOZXR3
b3JrTW9uaXRvciB7CiAgICAqIEFsZXJ0ZWQgd2hlbiB0aGUgY29ubmVjdGlvbiB0eXBlIG9mIHRo
ZSBuZXR3b3JrIGNoYW5nZXMuIFRoZSBhbGVydCBpcyBmaXJlZCBvbiB0aGUgVUkgdGhyZWFkLgog
ICAgKi8KICAgcHVibGljIGludGVyZmFjZSBOZXR3b3JrT2JzZXJ2ZXIgewotICAgIHB1YmxpYyB2
b2lkIG9uQ29ubmVjdGlvblR5cGVDaGFuZ2VkKENvbm5lY3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBl
KTsKKyAgICBwdWJsaWMgdm9pZCBvbkNvbm5lY3Rpb25UeXBlQ2hhbmdlZChOZXR3b3JrTW9uaXRv
ckF1dG9EZXRlY3QuQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUpOwogICB9CiAKICAgcHJp
dmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJOZXR3b3JrTW9uaXRvciI7CkBAIC01NSwx
MyArNTQsMTMgQEAgcHVibGljIGNsYXNzIE5ldHdvcmtNb25pdG9yIHsKICAgLy8gQWxzbyBndWFy
ZGVkIGJ5IGF1dG9EZXRlY3RMb2NrLgogICBwcml2YXRlIGludCBudW1PYnNlcnZlcnM7CiAKLSAg
cHJpdmF0ZSB2b2xhdGlsZSBDb25uZWN0aW9uVHlwZSBjdXJyZW50Q29ubmVjdGlvblR5cGU7Cisg
IHByaXZhdGUgdm9sYXRpbGUgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBl
IGN1cnJlbnRDb25uZWN0aW9uVHlwZTsKIAogICBwcml2YXRlIE5ldHdvcmtNb25pdG9yKCkgewog
ICAgIG5hdGl2ZU5ldHdvcmtPYnNlcnZlcnMgPSBuZXcgQXJyYXlMaXN0PExvbmc+KCk7CiAgICAg
bmV0d29ya09ic2VydmVycyA9IG5ldyBBcnJheUxpc3Q8TmV0d29ya09ic2VydmVyPigpOwogICAg
IG51bU9ic2VydmVycyA9IDA7Ci0gICAgY3VycmVudENvbm5lY3Rpb25UeXBlID0gQ29ubmVjdGlv
blR5cGUuQ09OTkVDVElPTl9VTktOT1dOOworICAgIGN1cnJlbnRDb25uZWN0aW9uVHlwZSA9IE5l
dHdvcmtNb25pdG9yQXV0b0RldGVjdC5Db25uZWN0aW9uVHlwZS5DT05ORUNUSU9OX1VOS05PV047
CiAgIH0KIAogICAvLyBUT0RPKHNha2FsKTogUmVtb3ZlIG9uY2UgZG93bnN0cmVhbSBkZXBlbmRl
bmNpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQuCkBAIC0xNTUsNyArMTU0LDcgQEAgcHVibGljIGNsYXNz
IE5ldHdvcmtNb25pdG9yIHsKICAgICByZXR1cm4gQnVpbGQuVkVSU0lPTi5TREtfSU5UOwogICB9
CiAKLSAgcHJpdmF0ZSBDb25uZWN0aW9uVHlwZSBnZXRDdXJyZW50Q29ubmVjdGlvblR5cGUoKSB7
CisgIHByaXZhdGUgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBlIGdldEN1
cnJlbnRDb25uZWN0aW9uVHlwZSgpIHsKICAgICByZXR1cm4gY3VycmVudENvbm5lY3Rpb25UeXBl
OwogICB9CiAKQEAgLTE2OSwxMiArMTY4LDEzIEBAIHB1YmxpYyBjbGFzcyBOZXR3b3JrTW9uaXRv
ciB7CiAgICAgcmV0dXJuIG5ldyBOZXR3b3JrTW9uaXRvckF1dG9EZXRlY3QobmV3IE5ldHdvcmtN
b25pdG9yQXV0b0RldGVjdC5PYnNlcnZlcigpIHsKIAogICAgICAgQE92ZXJyaWRlCi0gICAgICBw
dWJsaWMgdm9pZCBvbkNvbm5lY3Rpb25UeXBlQ2hhbmdlZChDb25uZWN0aW9uVHlwZSBuZXdDb25u
ZWN0aW9uVHlwZSkgeworICAgICAgcHVibGljIHZvaWQgb25Db25uZWN0aW9uVHlwZUNoYW5nZWQo
CisgICAgICAgICAgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBlIG5ld0Nv
bm5lY3Rpb25UeXBlKSB7CiAgICAgICAgIHVwZGF0ZUN1cnJlbnRDb25uZWN0aW9uVHlwZShuZXdD
b25uZWN0aW9uVHlwZSk7CiAgICAgICB9CiAKICAgICAgIEBPdmVycmlkZQotICAgICAgcHVibGlj
IHZvaWQgb25OZXR3b3JrQ29ubmVjdChOZXR3b3JrSW5mb3JtYXRpb24gbmV0d29ya0luZm8pIHsK
KyAgICAgIHB1YmxpYyB2b2lkIG9uTmV0d29ya0Nvbm5lY3QoTmV0d29ya01vbml0b3JBdXRvRGV0
ZWN0Lk5ldHdvcmtJbmZvcm1hdGlvbiBuZXR3b3JrSW5mbykgewogICAgICAgICBub3RpZnlPYnNl
cnZlcnNPZk5ldHdvcmtDb25uZWN0KG5ldHdvcmtJbmZvKTsKICAgICAgIH0KIApAQCAtMTg1LDEz
ICsxODUsMTUgQEAgcHVibGljIGNsYXNzIE5ldHdvcmtNb25pdG9yIHsKICAgICB9LCBhcHBDb250
ZXh0KTsKICAgfQogCi0gIHByaXZhdGUgdm9pZCB1cGRhdGVDdXJyZW50Q29ubmVjdGlvblR5cGUo
Q29ubmVjdGlvblR5cGUgbmV3Q29ubmVjdGlvblR5cGUpIHsKKyAgcHJpdmF0ZSB2b2lkIHVwZGF0
ZUN1cnJlbnRDb25uZWN0aW9uVHlwZSgKKyAgICAgIE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5D
b25uZWN0aW9uVHlwZSBuZXdDb25uZWN0aW9uVHlwZSkgewogICAgIGN1cnJlbnRDb25uZWN0aW9u
VHlwZSA9IG5ld0Nvbm5lY3Rpb25UeXBlOwogICAgIG5vdGlmeU9ic2VydmVyc09mQ29ubmVjdGlv
blR5cGVDaGFuZ2UobmV3Q29ubmVjdGlvblR5cGUpOwogICB9CiAKICAgLyoqIEFsZXJ0cyBhbGwg
b2JzZXJ2ZXJzIG9mIGEgY29ubmVjdGlvbiBjaGFuZ2UuICovCi0gIHByaXZhdGUgdm9pZCBub3Rp
ZnlPYnNlcnZlcnNPZkNvbm5lY3Rpb25UeXBlQ2hhbmdlKENvbm5lY3Rpb25UeXBlIG5ld0Nvbm5l
Y3Rpb25UeXBlKSB7CisgIHByaXZhdGUgdm9pZCBub3RpZnlPYnNlcnZlcnNPZkNvbm5lY3Rpb25U
eXBlQ2hhbmdlKAorICAgICAgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBl
IG5ld0Nvbm5lY3Rpb25UeXBlKSB7CiAgICAgTGlzdDxMb25nPiBuYXRpdmVPYnNlcnZlcnMgPSBn
ZXROYXRpdmVOZXR3b3JrT2JzZXJ2ZXJzU3luYygpOwogICAgIGZvciAoTG9uZyBuYXRpdmVPYnNl
cnZlciA6IG5hdGl2ZU9ic2VydmVycykgewogICAgICAgbmF0aXZlTm90aWZ5Q29ubmVjdGlvblR5
cGVDaGFuZ2VkKG5hdGl2ZU9ic2VydmVyKTsKQEAgLTIwNiw3ICsyMDgsOCBAQCBwdWJsaWMgY2xh
c3MgTmV0d29ya01vbml0b3IgewogICAgIH0KICAgfQogCi0gIHByaXZhdGUgdm9pZCBub3RpZnlP
YnNlcnZlcnNPZk5ldHdvcmtDb25uZWN0KE5ldHdvcmtJbmZvcm1hdGlvbiBuZXR3b3JrSW5mbykg
eworICBwcml2YXRlIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzT2ZOZXR3b3JrQ29ubmVjdCgKKyAgICAg
IE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5OZXR3b3JrSW5mb3JtYXRpb24gbmV0d29ya0luZm8p
IHsKICAgICBMaXN0PExvbmc+IG5hdGl2ZU9ic2VydmVycyA9IGdldE5hdGl2ZU5ldHdvcmtPYnNl
cnZlcnNTeW5jKCk7CiAgICAgZm9yIChMb25nIG5hdGl2ZU9ic2VydmVyIDogbmF0aXZlT2JzZXJ2
ZXJzKSB7CiAgICAgICBuYXRpdmVOb3RpZnlPZk5ldHdvcmtDb25uZWN0KG5hdGl2ZU9ic2VydmVy
LCBuZXR3b3JrSW5mbyk7CkBAIC0yMjEsNyArMjI0LDcgQEAgcHVibGljIGNsYXNzIE5ldHdvcmtN
b25pdG9yIHsKICAgfQogCiAgIHByaXZhdGUgdm9pZCB1cGRhdGVPYnNlcnZlckFjdGl2ZU5ldHdv
cmtMaXN0KGxvbmcgbmF0aXZlT2JzZXJ2ZXIpIHsKLSAgICBMaXN0PE5ldHdvcmtJbmZvcm1hdGlv
bj4gbmV0d29ya0luZm9MaXN0OworICAgIExpc3Q8TmV0d29ya01vbml0b3JBdXRvRGV0ZWN0Lk5l
dHdvcmtJbmZvcm1hdGlvbj4gbmV0d29ya0luZm9MaXN0OwogICAgIHN5bmNocm9uaXplZCAoYXV0
b0RldGVjdExvY2spIHsKICAgICAgIG5ldHdvcmtJbmZvTGlzdCA9IChhdXRvRGV0ZWN0ID09IG51
bGwpID8gbnVsbCA6IGF1dG9EZXRlY3QuZ2V0QWN0aXZlTmV0d29ya0xpc3QoKTsKICAgICB9CkBA
IC0yMjksNyArMjMyLDggQEAgcHVibGljIGNsYXNzIE5ldHdvcmtNb25pdG9yIHsKICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBOZXR3b3JrSW5mb3JtYXRpb25bXSBuZXR3b3JrSW5mb3MgPSBu
ZXcgTmV0d29ya0luZm9ybWF0aW9uW25ldHdvcmtJbmZvTGlzdC5zaXplKCldOworICAgIE5ldHdv
cmtNb25pdG9yQXV0b0RldGVjdC5OZXR3b3JrSW5mb3JtYXRpb25bXSBuZXR3b3JrSW5mb3MgPQor
ICAgICAgICBuZXcgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0Lk5ldHdvcmtJbmZvcm1hdGlvbltu
ZXR3b3JrSW5mb0xpc3Quc2l6ZSgpXTsKICAgICBuZXR3b3JrSW5mb3MgPSBuZXR3b3JrSW5mb0xp
c3QudG9BcnJheShuZXR3b3JrSW5mb3MpOwogICAgIG5hdGl2ZU5vdGlmeU9mQWN0aXZlTmV0d29y
a0xpc3QobmF0aXZlT2JzZXJ2ZXIsIG5ldHdvcmtJbmZvcyk7CiAgIH0KQEAgLTI3NCwxNyArMjc4
LDE4IEBAIHB1YmxpYyBjbGFzcyBOZXR3b3JrTW9uaXRvciB7CiAKICAgLyoqIENoZWNrcyBpZiB0
aGVyZSBjdXJyZW50bHkgaXMgY29ubmVjdGl2aXR5LiAqLwogICBwdWJsaWMgc3RhdGljIGJvb2xl
YW4gaXNPbmxpbmUoKSB7Ci0gICAgQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUgPSBnZXRJ
bnN0YW5jZSgpLmdldEN1cnJlbnRDb25uZWN0aW9uVHlwZSgpOwotICAgIHJldHVybiBjb25uZWN0
aW9uVHlwZSAhPSBDb25uZWN0aW9uVHlwZS5DT05ORUNUSU9OX05PTkU7CisgICAgTmV0d29ya01v
bml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBlID0KKyAgICAgICAg
Z2V0SW5zdGFuY2UoKS5nZXRDdXJyZW50Q29ubmVjdGlvblR5cGUoKTsKKyAgICByZXR1cm4gY29u
bmVjdGlvblR5cGUgIT0gTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBlLkNP
Tk5FQ1RJT05fTk9ORTsKICAgfQogCiAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlTm90aWZ5
Q29ubmVjdGlvblR5cGVDaGFuZ2VkKGxvbmcgbmF0aXZlQW5kcm9pZE5ldHdvcmtNb25pdG9yKTsK
ICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVOb3RpZnlPZk5ldHdvcmtDb25uZWN0KAotICAg
ICAgbG9uZyBuYXRpdmVBbmRyb2lkTmV0d29ya01vbml0b3IsIE5ldHdvcmtJbmZvcm1hdGlvbiBu
ZXR3b3JrSW5mbyk7CisgICAgICBsb25nIG5hdGl2ZUFuZHJvaWROZXR3b3JrTW9uaXRvciwgTmV0
d29ya01vbml0b3JBdXRvRGV0ZWN0Lk5ldHdvcmtJbmZvcm1hdGlvbiBuZXR3b3JrSW5mbyk7CiAg
IHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlTm90aWZ5T2ZOZXR3b3JrRGlzY29ubmVjdCgKICAg
ICAgIGxvbmcgbmF0aXZlQW5kcm9pZE5ldHdvcmtNb25pdG9yLCBsb25nIG5ldHdvcmtIYW5kbGUp
OwogICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZU5vdGlmeU9mQWN0aXZlTmV0d29ya0xpc3Qo
Ci0gICAgICBsb25nIG5hdGl2ZUFuZHJvaWROZXR3b3JrTW9uaXRvciwgTmV0d29ya0luZm9ybWF0
aW9uW10gbmV0d29ya0luZm9zKTsKKyAgICAgIGxvbmcgbmF0aXZlQW5kcm9pZE5ldHdvcmtNb25p
dG9yLCBOZXR3b3JrTW9uaXRvckF1dG9EZXRlY3QuTmV0d29ya0luZm9ybWF0aW9uW10gbmV0d29y
a0luZm9zKTsKIAogICAvLyBGb3IgdGVzdGluZyBvbmx5LgogICBATnVsbGFibGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L2FwaS9vcmcvd2VicnRjL05ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5qYXZhIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJy
dGMvTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LmphdmEKaW5kZXggM2Q3NGY1ZmQ3YzVkYTRkODJj
OTRjMmU5Y2RlY2RmNGEwMWI5YWNkMS4uMTc5ZjgzZDM3NjFiZTFiYzUwOGIyNmRkYzNkMWJlNmZj
NzdmZDNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0
LmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LmphdmEKQEAg
LTI5Nyw3ICsyOTcsOCBAQCBwdWJsaWMgY2xhc3MgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0IGV4
dGVuZHMgQnJvYWRjYXN0UmVjZWl2ZXIgewogICAgICAgICAgIC8vIGh0dHBzOi8vYW5kcm9pZC5n
b29nbGVzb3VyY2UuY29tL3BsYXRmb3JtL2ZyYW1ld29ya3MvYmFzZS8rL2Q2YTc5ODBkCiAgICAg
ICAgICAgTmV0d29ya0luZm8gdW5kZXJseWluZ0FjdGl2ZU5ldHdvcmtJbmZvID0gY29ubmVjdGl2
aXR5TWFuYWdlci5nZXRBY3RpdmVOZXR3b3JrSW5mbygpOwogICAgICAgICAgIC8vIFdlIHVzZSB0
aGUgTmV0d29ya0luZm8gb2YgdGhlIHVuZGVybHlpbmcgbmV0d29yayBpZiBpdCBpcyBub3Qgb2Yg
VFlQRV9WUE4gaXRzZWxmLgotICAgICAgICAgIGlmICh1bmRlcmx5aW5nQWN0aXZlTmV0d29ya0lu
Zm8uZ2V0VHlwZSgpICE9IENvbm5lY3Rpdml0eU1hbmFnZXIuVFlQRV9WUE4pIHsKKyAgICAgICAg
ICBpZiAodW5kZXJseWluZ0FjdGl2ZU5ldHdvcmtJbmZvICE9IG51bGwKKyAgICAgICAgICAgICAg
JiYgdW5kZXJseWluZ0FjdGl2ZU5ldHdvcmtJbmZvLmdldFR5cGUoKSAhPSBDb25uZWN0aXZpdHlN
YW5hZ2VyLlRZUEVfVlBOKSB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IE5ldHdvcmtTdGF0ZShu
ZXR3b3JrSW5mby5pc0Nvbm5lY3RlZCgpLCBDb25uZWN0aXZpdHlNYW5hZ2VyLlRZUEVfVlBOLCAt
MSwKICAgICAgICAgICAgICAgICB1bmRlcmx5aW5nQWN0aXZlTmV0d29ya0luZm8uZ2V0VHlwZSgp
LCB1bmRlcmx5aW5nQWN0aXZlTmV0d29ya0luZm8uZ2V0U3VidHlwZSgpKTsKICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvbi5qYXZhIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJy
dGMvUGVlckNvbm5lY3Rpb24uamF2YQppbmRleCA4NGQ0OWViYjhhN2RjZDQxMmQ0MDk2YjljMmNi
MGExNzJkMzliMmNhLi40N2M1NGVlNTQ5YzRmOThhODYwZTM0MDEzMDY3ZGZiZThkOTY4YjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvbi5qYXZhCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2Vi
cnRjL1BlZXJDb25uZWN0aW9uLmphdmEKQEAgLTE0LDYgKzE0LDkgQEAgaW1wb3J0IGphdmEudXRp
bC5BcnJheUxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEu
dXRpbC5MaXN0OwogaW1wb3J0IGphdmF4LmFubm90YXRpb24uTnVsbGFibGU7CitpbXBvcnQgb3Jn
LndlYnJ0Yy5EYXRhQ2hhbm5lbDsKK2ltcG9ydCBvcmcud2VicnRjLk1lZGlhU3RyZWFtVHJhY2s7
CitpbXBvcnQgb3JnLndlYnJ0Yy5SdHBUcmFuc2NlaXZlcjsKIAogLyoqCiAgKiBKYXZhLWxhbmQg
dmVyc2lvbiBvZiB0aGUgUGVlckNvbm5lY3Rpb24gQVBJczsgd3JhcHMgdGhlIEMrKyBBUEkKQEAg
LTUwLDYgKzUzLDIxIEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbiB7CiAgICAgfQogICB9
CiAKKyAgLyoqIFRyYWNrcyBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25T
dGF0ZSAqLworICBwdWJsaWMgZW51bSBQZWVyQ29ubmVjdGlvblN0YXRlIHsKKyAgICBORVcsCisg
ICAgQ09OTkVDVElORywKKyAgICBDT05ORUNURUQsCisgICAgRElTQ09OTkVDVEVELAorICAgIEZB
SUxFRCwKKyAgICBDTE9TRUQ7CisKKyAgICBAQ2FsbGVkQnlOYXRpdmUoIlBlZXJDb25uZWN0aW9u
U3RhdGUiKQorICAgIHN0YXRpYyBQZWVyQ29ubmVjdGlvblN0YXRlIGZyb21OYXRpdmVJbmRleChp
bnQgbmF0aXZlSW5kZXgpIHsKKyAgICAgIHJldHVybiB2YWx1ZXMoKVtuYXRpdmVJbmRleF07Cisg
ICAgfQorICB9CisKICAgLyoqIFRyYWNrcyBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6VGxzQ2Vy
dFBvbGljeSAqLwogICBwdWJsaWMgZW51bSBUbHNDZXJ0UG9saWN5IHsKICAgICBUTFNfQ0VSVF9Q
T0xJQ1lfU0VDVVJFLApAQCAtNzksNiArOTcsMTAgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0
aW9uIHsKICAgICAvKiogVHJpZ2dlcmVkIHdoZW4gdGhlIEljZUNvbm5lY3Rpb25TdGF0ZSBjaGFu
Z2VzLiAqLwogICAgIEBDYWxsZWRCeU5hdGl2ZSgiT2JzZXJ2ZXIiKSB2b2lkIG9uSWNlQ29ubmVj
dGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUgbmV3U3RhdGUpOwogCisgICAgLyoqIFRyaWdn
ZXJlZCB3aGVuIHRoZSBQZWVyQ29ubmVjdGlvblN0YXRlIGNoYW5nZXMuICovCisgICAgQENhbGxl
ZEJ5TmF0aXZlKCJPYnNlcnZlciIpCisgICAgZGVmYXVsdCB2b2lkIG9uQ29ubmVjdGlvbkNoYW5n
ZShQZWVyQ29ubmVjdGlvblN0YXRlIG5ld1N0YXRlKSB7fQorCiAgICAgLyoqIFRyaWdnZXJlZCB3
aGVuIHRoZSBJQ0UgY29ubmVjdGlvbiByZWNlaXZpbmcgc3RhdHVzIGNoYW5nZXMuICovCiAgICAg
QENhbGxlZEJ5TmF0aXZlKCJPYnNlcnZlciIpIHZvaWQgb25JY2VDb25uZWN0aW9uUmVjZWl2aW5n
Q2hhbmdlKGJvb2xlYW4gcmVjZWl2aW5nKTsKIApAQCAtMzg1LDYgKzQwNyw3IEBAIHB1YmxpYyBj
bGFzcyBQZWVyQ29ubmVjdGlvbiB7CiAgICAgcHVibGljIEljZVRyYW5zcG9ydHNUeXBlIGljZVRy
YW5zcG9ydHNUeXBlOwogICAgIHB1YmxpYyBMaXN0PEljZVNlcnZlcj4gaWNlU2VydmVyczsKICAg
ICBwdWJsaWMgQnVuZGxlUG9saWN5IGJ1bmRsZVBvbGljeTsKKyAgICBATnVsbGFibGUgcHVibGlj
IFJ0Y0NlcnRpZmljYXRlUGVtIGNlcnRpZmljYXRlOwogICAgIHB1YmxpYyBSdGNwTXV4UG9saWN5
IHJ0Y3BNdXhQb2xpY3k7CiAgICAgcHVibGljIFRjcENhbmRpZGF0ZVBvbGljeSB0Y3BDYW5kaWRh
dGVQb2xpY3k7CiAgICAgcHVibGljIENhbmRpZGF0ZU5ldHdvcmtQb2xpY3kgY2FuZGlkYXRlTmV0
d29ya1BvbGljeTsKQEAgLTQ2MSw2ICs0ODQsMjUgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0
aW9uIHsKICAgICAvLyBldmVyeSBvZmZlci9hbnN3ZXIgbmVnb3RpYXRpb24uVGhpcyBpcyBvbmx5
IGludGVuZGVkIHRvIGJlIGEgd29ya2Fyb3VuZCBmb3IgY3JidWcuY29tLzgzNTk1OAogICAgIHB1
YmxpYyBib29sZWFuIGFjdGl2ZVJlc2V0U3J0cFBhcmFtczsKIAorICAgIC8qCisgICAgICogRXhw
ZXJpbWVudGFsIGZsYWcgdGhhdCBlbmFibGVzIGEgdXNlIG9mIG1lZGlhIHRyYW5zcG9ydC4gSWYg
dGhpcyBpcyB0cnVlLCB0aGUgbWVkaWEgdHJhbnNwb3J0CisgICAgICogZmFjdG9yeSBNVVNUIGJl
IHByb3ZpZGVkIHRvIHRoZSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkuCisgICAgICovCisgICAgcHVi
bGljIGJvb2xlYW4gdXNlTWVkaWFUcmFuc3BvcnQ7CisKKyAgICAvKgorICAgICAqIEV4cGVyaW1l
bnRhbCBmbGFnIHRoYXQgZW5hYmxlcyBhIHVzZSBvZiBtZWRpYSB0cmFuc3BvcnQgZm9yIGRhdGEg
Y2hhbm5lbHMuIElmIHRoaXMgaXMgdHJ1ZSwKKyAgICAgKiB0aGUgbWVkaWEgdHJhbnNwb3J0IGZh
Y3RvcnkgTVVTVCBiZSBwcm92aWRlZCB0byB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5LgorICAg
ICAqLworICAgIHB1YmxpYyBib29sZWFuIHVzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxz
OworCisgICAgLyoqCisgICAgICogRGVmaW5lcyBhZHZhbmNlZCBvcHRpb25hbCBjcnlwdG9ncmFw
aGljIHNldHRpbmdzIHJlbGF0ZWQgdG8gU1JUUCBhbmQKKyAgICAgKiBmcmFtZSBlbmNyeXB0aW9u
IGZvciBuYXRpdmUgV2ViUlRDLiBTZXR0aW5nIHRoaXMgd2lsbCBvdmVyd3JpdGUgYW55CisgICAg
ICogb3B0aW9ucyBzZXQgdGhyb3VnaCB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5ICh3aGljaCBp
cyBkZXByZWNhdGVkKS4KKyAgICAgKi8KKyAgICBATnVsbGFibGUgcHVibGljIENyeXB0b09wdGlv
bnMgY3J5cHRvT3B0aW9uczsKKwogICAgIC8vIFRPRE8oZGVhZGJlZWYpOiBJbnN0ZWFkIG9mIGR1
cGxpY2F0aW5nIHRoZSBkZWZhdWx0cyBoZXJlLCB3ZSBzaG91bGQgZG8KICAgICAvLyBzb21ldGhp
bmcgdG8gcGljayB1cCB0aGUgZGVmYXVsdHMgZnJvbSBDKysuIFRoZSBPYmplY3RpdmUtQyBlcXVp
dmFsZW50CiAgICAgLy8gb2YgUlRDQ29uZmlndXJhdGlvbiBkb2VzIHRoYXQuCkBAIC01MDAsNiAr
NTQyLDkgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uIHsKICAgICAgIG5ldHdvcmtQcmVm
ZXJlbmNlID0gQWRhcHRlclR5cGUuVU5LTk9XTjsKICAgICAgIHNkcFNlbWFudGljcyA9IFNkcFNl
bWFudGljcy5QTEFOX0I7CiAgICAgICBhY3RpdmVSZXNldFNydHBQYXJhbXMgPSBmYWxzZTsKKyAg
ICAgIHVzZU1lZGlhVHJhbnNwb3J0ID0gZmFsc2U7CisgICAgICB1c2VNZWRpYVRyYW5zcG9ydEZv
ckRhdGFDaGFubmVscyA9IGZhbHNlOworICAgICAgY3J5cHRvT3B0aW9ucyA9IG51bGw7CiAgICAg
fQogCiAgICAgQENhbGxlZEJ5TmF0aXZlKCJSVENDb25maWd1cmF0aW9uIikKQEAgLTUxNyw2ICs1
NjIsMTIgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uIHsKICAgICAgIHJldHVybiBidW5k
bGVQb2xpY3k7CiAgICAgfQogCisgICAgQE51bGxhYmxlCisgICAgQENhbGxlZEJ5TmF0aXZlKCJS
VENDb25maWd1cmF0aW9uIikKKyAgICBSdGNDZXJ0aWZpY2F0ZVBlbSBnZXRDZXJ0aWZpY2F0ZSgp
IHsKKyAgICAgIHJldHVybiBjZXJ0aWZpY2F0ZTsKKyAgICB9CisKICAgICBAQ2FsbGVkQnlOYXRp
dmUoIlJUQ0NvbmZpZ3VyYXRpb24iKQogICAgIFJ0Y3BNdXhQb2xpY3kgZ2V0UnRjcE11eFBvbGlj
eSgpIHsKICAgICAgIHJldHVybiBydGNwTXV4UG9saWN5OwpAQCAtNjkyLDYgKzc0MywyMiBAQCBw
dWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb24gewogICAgIGJvb2xlYW4gZ2V0QWN0aXZlUmVzZXRT
cnRwUGFyYW1zKCkgewogICAgICAgcmV0dXJuIGFjdGl2ZVJlc2V0U3J0cFBhcmFtczsKICAgICB9
CisKKyAgICBAQ2FsbGVkQnlOYXRpdmUoIlJUQ0NvbmZpZ3VyYXRpb24iKQorICAgIGJvb2xlYW4g
Z2V0VXNlTWVkaWFUcmFuc3BvcnQoKSB7CisgICAgICByZXR1cm4gdXNlTWVkaWFUcmFuc3BvcnQ7
CisgICAgfQorCisgICAgQENhbGxlZEJ5TmF0aXZlKCJSVENDb25maWd1cmF0aW9uIikKKyAgICBi
b29sZWFuIGdldFVzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzKCkgeworICAgICAgcmV0
dXJuIHVzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzOworICAgIH0KKworICAgIEBOdWxs
YWJsZQorICAgIEBDYWxsZWRCeU5hdGl2ZSgiUlRDQ29uZmlndXJhdGlvbiIpCisgICAgQ3J5cHRv
T3B0aW9ucyBnZXRDcnlwdG9PcHRpb25zKCkgeworICAgICAgcmV0dXJuIGNyeXB0b09wdGlvbnM7
CisgICAgfQogICB9OwogCiAgIHByaXZhdGUgZmluYWwgTGlzdDxNZWRpYVN0cmVhbT4gbG9jYWxT
dHJlYW1zID0gbmV3IEFycmF5TGlzdDw+KCk7CkBAIC03MjEsNiArNzg4LDEwIEBAIHB1YmxpYyBj
bGFzcyBQZWVyQ29ubmVjdGlvbiB7CiAgICAgcmV0dXJuIG5hdGl2ZUdldFJlbW90ZURlc2NyaXB0
aW9uKCk7CiAgIH0KIAorICBwdWJsaWMgUnRjQ2VydGlmaWNhdGVQZW0gZ2V0Q2VydGlmaWNhdGUo
KSB7CisgICAgcmV0dXJuIG5hdGl2ZUdldENlcnRpZmljYXRlKCk7CisgIH0KKwogICBwdWJsaWMg
RGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5uZWwoU3RyaW5nIGxhYmVsLCBEYXRhQ2hhbm5lbC5J
bml0IGluaXQpIHsKICAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRGF0YUNoYW5uZWwobGFiZWwsIGlu
aXQpOwogICB9CkBAIC0xMDQ0LDYgKzExMTUsMTAgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0
aW9uIHsKICAgICByZXR1cm4gbmF0aXZlSWNlQ29ubmVjdGlvblN0YXRlKCk7CiAgIH0KIAorICBw
dWJsaWMgUGVlckNvbm5lY3Rpb25TdGF0ZSBjb25uZWN0aW9uU3RhdGUoKSB7CisgICAgcmV0dXJu
IG5hdGl2ZUNvbm5lY3Rpb25TdGF0ZSgpOworICB9CisKICAgcHVibGljIEljZUdhdGhlcmluZ1N0
YXRlIGljZUdhdGhlcmluZ1N0YXRlKCkgewogICAgIHJldHVybiBuYXRpdmVJY2VHYXRoZXJpbmdT
dGF0ZSgpOwogICB9CkBAIC0xMTA3LDYgKzExODIsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5l
Y3Rpb24gewogICBwcml2YXRlIG5hdGl2ZSBsb25nIG5hdGl2ZUdldE5hdGl2ZVBlZXJDb25uZWN0
aW9uKCk7CiAgIHByaXZhdGUgbmF0aXZlIFNlc3Npb25EZXNjcmlwdGlvbiBuYXRpdmVHZXRMb2Nh
bERlc2NyaXB0aW9uKCk7CiAgIHByaXZhdGUgbmF0aXZlIFNlc3Npb25EZXNjcmlwdGlvbiBuYXRp
dmVHZXRSZW1vdGVEZXNjcmlwdGlvbigpOworICBwcml2YXRlIG5hdGl2ZSBSdGNDZXJ0aWZpY2F0
ZVBlbSBuYXRpdmVHZXRDZXJ0aWZpY2F0ZSgpOwogICBwcml2YXRlIG5hdGl2ZSBEYXRhQ2hhbm5l
bCBuYXRpdmVDcmVhdGVEYXRhQ2hhbm5lbChTdHJpbmcgbGFiZWwsIERhdGFDaGFubmVsLkluaXQg
aW5pdCk7CiAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlQ3JlYXRlT2ZmZXIoU2RwT2JzZXJ2
ZXIgb2JzZXJ2ZXIsIE1lZGlhQ29uc3RyYWludHMgY29uc3RyYWludHMpOwogICBwcml2YXRlIG5h
dGl2ZSB2b2lkIG5hdGl2ZUNyZWF0ZUFuc3dlcihTZHBPYnNlcnZlciBvYnNlcnZlciwgTWVkaWFD
b25zdHJhaW50cyBjb25zdHJhaW50cyk7CkBAIC0xMTE3LDYgKzExOTMsNyBAQCBwdWJsaWMgY2xh
c3MgUGVlckNvbm5lY3Rpb24gewogICBwcml2YXRlIG5hdGl2ZSBib29sZWFuIG5hdGl2ZVNldEJp
dHJhdGUoSW50ZWdlciBtaW4sIEludGVnZXIgY3VycmVudCwgSW50ZWdlciBtYXgpOwogICBwcml2
YXRlIG5hdGl2ZSBTaWduYWxpbmdTdGF0ZSBuYXRpdmVTaWduYWxpbmdTdGF0ZSgpOwogICBwcml2
YXRlIG5hdGl2ZSBJY2VDb25uZWN0aW9uU3RhdGUgbmF0aXZlSWNlQ29ubmVjdGlvblN0YXRlKCk7
CisgIHByaXZhdGUgbmF0aXZlIFBlZXJDb25uZWN0aW9uU3RhdGUgbmF0aXZlQ29ubmVjdGlvblN0
YXRlKCk7CiAgIHByaXZhdGUgbmF0aXZlIEljZUdhdGhlcmluZ1N0YXRlIG5hdGl2ZUljZUdhdGhl
cmluZ1N0YXRlKCk7CiAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlQ2xvc2UoKTsKICAgcHJp
dmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlUGVlckNvbm5lY3Rpb25PYnNlcnZl
cihPYnNlcnZlciBvYnNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVj
dGlvbkZhY3RvcnkuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1BlZXJDb25uZWN0aW9uRmFjdG9yeS5qYXZh
CmluZGV4IGViOThlOTIzZjZjYzg1NmNmODA2MGU1ZGVjNjdlOTAzYjhlYzlkZTAuLjAxOGZiNzZl
ODU3MGM0Mzc5YzRmMzFhM2RhNjZlZjlmYjcyMzRiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRj
L1BlZXJDb25uZWN0aW9uRmFjdG9yeS5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1BlZXJDb25uZWN0
aW9uRmFjdG9yeS5qYXZhCkBAIC0xNCw2ICsxNCw3IEBAIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQu
Q29udGV4dDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZheC5hbm5vdGF0aW9u
Lk51bGxhYmxlOwogaW1wb3J0IG9yZy53ZWJydGMuTG9nZ2luZy5TZXZlcml0eTsKK2ltcG9ydCBv
cmcud2VicnRjLlBlZXJDb25uZWN0aW9uOwogaW1wb3J0IG9yZy53ZWJydGMuYXVkaW8uQXVkaW9E
ZXZpY2VNb2R1bGU7CiBpbXBvcnQgb3JnLndlYnJ0Yy5hdWRpby5MZWdhY3lBdWRpb0RldmljZU1v
ZHVsZTsKIApAQCAtMTIyLDggKzEyMyw2IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbkZh
Y3RvcnkgewogICAgIHB1YmxpYyBpbnQgbmV0d29ya0lnbm9yZU1hc2s7CiAgICAgcHVibGljIGJv
b2xlYW4gZGlzYWJsZUVuY3J5cHRpb247CiAgICAgcHVibGljIGJvb2xlYW4gZGlzYWJsZU5ldHdv
cmtNb25pdG9yOwotICAgIHB1YmxpYyBib29sZWFuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9D
aXBoZXI7Ci0gICAgcHVibGljIGJvb2xlYW4gZW5hYmxlR2NtQ3J5cHRvU3VpdGVzOwogCiAgICAg
QENhbGxlZEJ5TmF0aXZlKCJPcHRpb25zIikKICAgICBpbnQgZ2V0TmV0d29ya0lnbm9yZU1hc2so
KSB7CkBAIC0xMzksMjUgKzEzOCwyMCBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0
b3J5IHsKICAgICBib29sZWFuIGdldERpc2FibGVOZXR3b3JrTW9uaXRvcigpIHsKICAgICAgIHJl
dHVybiBkaXNhYmxlTmV0d29ya01vbml0b3I7CiAgICAgfQotCi0gICAgQENhbGxlZEJ5TmF0aXZl
KCJPcHRpb25zIikKLSAgICBib29sZWFuIGdldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBo
ZXIoKSB7Ci0gICAgICByZXR1cm4gZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjsKLSAg
ICB9Ci0KLSAgICBAQ2FsbGVkQnlOYXRpdmUoIk9wdGlvbnMiKQotICAgIGJvb2xlYW4gZ2V0RW5h
YmxlR2NtQ3J5cHRvU3VpdGVzKCkgewotICAgICAgcmV0dXJuIGVuYWJsZUdjbUNyeXB0b1N1aXRl
czsKLSAgICB9CiAgIH0KIAogICBwdWJsaWMgc3RhdGljIGNsYXNzIEJ1aWxkZXIgewotICAgIHBy
aXZhdGUgQE51bGxhYmxlIE9wdGlvbnMgb3B0aW9uczsKLSAgICBwcml2YXRlIEBOdWxsYWJsZSBB
dWRpb0RldmljZU1vZHVsZSBhdWRpb0RldmljZU1vZHVsZSA9IG5ldyBMZWdhY3lBdWRpb0Rldmlj
ZU1vZHVsZSgpOwotICAgIHByaXZhdGUgQE51bGxhYmxlIFZpZGVvRW5jb2RlckZhY3RvcnkgZW5j
b2RlckZhY3Rvcnk7Ci0gICAgcHJpdmF0ZSBATnVsbGFibGUgVmlkZW9EZWNvZGVyRmFjdG9yeSBk
ZWNvZGVyRmFjdG9yeTsKLSAgICBwcml2YXRlIEBOdWxsYWJsZSBBdWRpb1Byb2Nlc3NpbmdGYWN0
b3J5IGF1ZGlvUHJvY2Vzc2luZ0ZhY3Rvcnk7Ci0gICAgcHJpdmF0ZSBATnVsbGFibGUgRmVjQ29u
dHJvbGxlckZhY3RvcnlGYWN0b3J5SW50ZXJmYWNlIGZlY0NvbnRyb2xsZXJGYWN0b3J5RmFjdG9y
eTsKKyAgICBATnVsbGFibGUgcHJpdmF0ZSBPcHRpb25zIG9wdGlvbnM7CisgICAgQE51bGxhYmxl
IHByaXZhdGUgQXVkaW9EZXZpY2VNb2R1bGUgYXVkaW9EZXZpY2VNb2R1bGUgPSBuZXcgTGVnYWN5
QXVkaW9EZXZpY2VNb2R1bGUoKTsKKyAgICBwcml2YXRlIEF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0
b3J5IGF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5ID0KKyAgICAgICAgbmV3IEJ1aWx0aW5BdWRp
b0VuY29kZXJGYWN0b3J5RmFjdG9yeSgpOworICAgIHByaXZhdGUgQXVkaW9EZWNvZGVyRmFjdG9y
eUZhY3RvcnkgYXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkgPQorICAgICAgICBuZXcgQnVpbHRp
bkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5KCk7CisgICAgQE51bGxhYmxlIHByaXZhdGUgVmlk
ZW9FbmNvZGVyRmFjdG9yeSB2aWRlb0VuY29kZXJGYWN0b3J5OworICAgIEBOdWxsYWJsZSBwcml2
YXRlIFZpZGVvRGVjb2RlckZhY3RvcnkgdmlkZW9EZWNvZGVyRmFjdG9yeTsKKyAgICBATnVsbGFi
bGUgcHJpdmF0ZSBBdWRpb1Byb2Nlc3NpbmdGYWN0b3J5IGF1ZGlvUHJvY2Vzc2luZ0ZhY3Rvcnk7
CisgICAgQE51bGxhYmxlIHByaXZhdGUgRmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5SW50ZXJm
YWNlIGZlY0NvbnRyb2xsZXJGYWN0b3J5RmFjdG9yeTsKKyAgICBATnVsbGFibGUgcHJpdmF0ZSBN
ZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5IG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3Rvcnk7
CiAKICAgICBwcml2YXRlIEJ1aWxkZXIoKSB7fQogCkBAIC0xNzEsMTMgKzE2NSwzMyBAQCBwdWJs
aWMgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKICAgICAgIHJldHVybiB0aGlzOwogICAg
IH0KIAotICAgIHB1YmxpYyBCdWlsZGVyIHNldFZpZGVvRW5jb2RlckZhY3RvcnkoVmlkZW9FbmNv
ZGVyRmFjdG9yeSBlbmNvZGVyRmFjdG9yeSkgewotICAgICAgdGhpcy5lbmNvZGVyRmFjdG9yeSA9
IGVuY29kZXJGYWN0b3J5OworICAgIHB1YmxpYyBCdWlsZGVyIHNldEF1ZGlvRW5jb2RlckZhY3Rv
cnlGYWN0b3J5KAorICAgICAgICBBdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSBhdWRpb0VuY29k
ZXJGYWN0b3J5RmFjdG9yeSkgeworICAgICAgaWYgKGF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5
ID09IG51bGwpIHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigK
KyAgICAgICAgICAgICJQZWVyQ29ubmVjdGlvbkZhY3RvcnkuQnVpbGRlciBkb2VzIG5vdCBhY2Nl
cHQgYSBudWxsIEF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LiIpOworICAgICAgfQorICAgICAg
dGhpcy5hdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSA9IGF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0
b3J5OworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIEJ1aWxkZXIgc2V0
QXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkoCisgICAgICAgIEF1ZGlvRGVjb2RlckZhY3RvcnlG
YWN0b3J5IGF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5KSB7CisgICAgICBpZiAoYXVkaW9EZWNv
ZGVyRmFjdG9yeUZhY3RvcnkgPT0gbnVsbCkgeworICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFy
Z3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgIlBlZXJDb25uZWN0aW9uRmFjdG9yeS5CdWls
ZGVyIGRvZXMgbm90IGFjY2VwdCBhIG51bGwgQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkuIik7
CisgICAgICB9CisgICAgICB0aGlzLmF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5ID0gYXVkaW9E
ZWNvZGVyRmFjdG9yeUZhY3Rvcnk7CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBw
dWJsaWMgQnVpbGRlciBzZXRWaWRlb0VuY29kZXJGYWN0b3J5KFZpZGVvRW5jb2RlckZhY3Rvcnkg
dmlkZW9FbmNvZGVyRmFjdG9yeSkgeworICAgICAgdGhpcy52aWRlb0VuY29kZXJGYWN0b3J5ID0g
dmlkZW9FbmNvZGVyRmFjdG9yeTsKICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KIAotICAgIHB1
YmxpYyBCdWlsZGVyIHNldFZpZGVvRGVjb2RlckZhY3RvcnkoVmlkZW9EZWNvZGVyRmFjdG9yeSBk
ZWNvZGVyRmFjdG9yeSkgewotICAgICAgdGhpcy5kZWNvZGVyRmFjdG9yeSA9IGRlY29kZXJGYWN0
b3J5OworICAgIHB1YmxpYyBCdWlsZGVyIHNldFZpZGVvRGVjb2RlckZhY3RvcnkoVmlkZW9EZWNv
ZGVyRmFjdG9yeSB2aWRlb0RlY29kZXJGYWN0b3J5KSB7CisgICAgICB0aGlzLnZpZGVvRGVjb2Rl
ckZhY3RvcnkgPSB2aWRlb0RlY29kZXJGYWN0b3J5OwogICAgICAgcmV0dXJuIHRoaXM7CiAgICAg
fQogCkBAIC0xOTYsOSArMjEwLDE3IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbkZhY3Rv
cnkgewogICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfQogCisgICAgLyoqIFNldHMgYSBNZWRpYVRy
YW5zcG9ydEZhY3RvcnlGYWN0b3J5IGZvciBhIFBlZXJDb25uZWN0aW9uRmFjdG9yeS4gKi8KKyAg
ICBwdWJsaWMgQnVpbGRlciBzZXRNZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5KAorICAgICAg
ICBNZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5IG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3Rv
cnkpIHsKKyAgICAgIHRoaXMubWVkaWFUcmFuc3BvcnRGYWN0b3J5RmFjdG9yeSA9IG1lZGlhVHJh
bnNwb3J0RmFjdG9yeUZhY3Rvcnk7CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKICAgICBw
dWJsaWMgUGVlckNvbm5lY3Rpb25GYWN0b3J5IGNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgp
IHsKLSAgICAgIHJldHVybiBuZXcgUGVlckNvbm5lY3Rpb25GYWN0b3J5KG9wdGlvbnMsIGF1ZGlv
RGV2aWNlTW9kdWxlLCBlbmNvZGVyRmFjdG9yeSwgZGVjb2RlckZhY3RvcnksCi0gICAgICAgICAg
YXVkaW9Qcm9jZXNzaW5nRmFjdG9yeSwgZmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5KTsKKyAg
ICAgIHJldHVybiBuZXcgUGVlckNvbm5lY3Rpb25GYWN0b3J5KG9wdGlvbnMsIGF1ZGlvRGV2aWNl
TW9kdWxlLCBhdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSwKKyAgICAgICAgICBhdWRpb0RlY29k
ZXJGYWN0b3J5RmFjdG9yeSwgdmlkZW9FbmNvZGVyRmFjdG9yeSwgdmlkZW9EZWNvZGVyRmFjdG9y
eSwKKyAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdGYWN0b3J5LCBmZWNDb250cm9sbGVyRmFjdG9y
eUZhY3RvcnksIG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkpOwogICAgIH0KICAgfQogCkBA
IC0yNzcsMTUgKzI5OSwyNCBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsK
ICAgfQogCiAgIHByaXZhdGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5KE9wdGlvbnMgb3B0aW9ucywg
QE51bGxhYmxlIEF1ZGlvRGV2aWNlTW9kdWxlIGF1ZGlvRGV2aWNlTW9kdWxlLAotICAgICAgQE51
bGxhYmxlIFZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2RlckZhY3RvcnksIEBOdWxsYWJsZSBWaWRl
b0RlY29kZXJGYWN0b3J5IGRlY29kZXJGYWN0b3J5LAorICAgICAgQXVkaW9FbmNvZGVyRmFjdG9y
eUZhY3RvcnkgYXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnksCisgICAgICBBdWRpb0RlY29kZXJG
YWN0b3J5RmFjdG9yeSBhdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeSwKKyAgICAgIEBOdWxsYWJs
ZSBWaWRlb0VuY29kZXJGYWN0b3J5IHZpZGVvRW5jb2RlckZhY3RvcnksCisgICAgICBATnVsbGFi
bGUgVmlkZW9EZWNvZGVyRmFjdG9yeSB2aWRlb0RlY29kZXJGYWN0b3J5LAogICAgICAgQE51bGxh
YmxlIEF1ZGlvUHJvY2Vzc2luZ0ZhY3RvcnkgYXVkaW9Qcm9jZXNzaW5nRmFjdG9yeSwKLSAgICAg
IEBOdWxsYWJsZSBGZWNDb250cm9sbGVyRmFjdG9yeUZhY3RvcnlJbnRlcmZhY2UgZmVjQ29udHJv
bGxlckZhY3RvcnlGYWN0b3J5KSB7CisgICAgICBATnVsbGFibGUgRmVjQ29udHJvbGxlckZhY3Rv
cnlGYWN0b3J5SW50ZXJmYWNlIGZlY0NvbnRyb2xsZXJGYWN0b3J5RmFjdG9yeSwKKyAgICAgIEBO
dWxsYWJsZSBNZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5IG1lZGlhVHJhbnNwb3J0RmFjdG9y
eUZhY3RvcnkpIHsKICAgICBjaGVja0luaXRpYWxpemVIYXNCZWVuQ2FsbGVkKCk7CiAgICAgbmF0
aXZlRmFjdG9yeSA9IG5hdGl2ZUNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeShDb250ZXh0VXRp
bHMuZ2V0QXBwbGljYXRpb25Db250ZXh0KCksIG9wdGlvbnMsCiAgICAgICAgIGF1ZGlvRGV2aWNl
TW9kdWxlID09IG51bGwgPyAwIDogYXVkaW9EZXZpY2VNb2R1bGUuZ2V0TmF0aXZlQXVkaW9EZXZp
Y2VNb2R1bGVQb2ludGVyKCksCi0gICAgICAgIGVuY29kZXJGYWN0b3J5LCBkZWNvZGVyRmFjdG9y
eSwKKyAgICAgICAgYXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkuY3JlYXRlTmF0aXZlQXVkaW9F
bmNvZGVyRmFjdG9yeSgpLAorICAgICAgICBhdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeS5jcmVh
dGVOYXRpdmVBdWRpb0RlY29kZXJGYWN0b3J5KCksIHZpZGVvRW5jb2RlckZhY3RvcnksCisgICAg
ICAgIHZpZGVvRGVjb2RlckZhY3RvcnksCiAgICAgICAgIGF1ZGlvUHJvY2Vzc2luZ0ZhY3Rvcnkg
PT0gbnVsbCA/IDAgOiBhdWRpb1Byb2Nlc3NpbmdGYWN0b3J5LmNyZWF0ZU5hdGl2ZSgpLAotICAg
ICAgICBmZWNDb250cm9sbGVyRmFjdG9yeUZhY3RvcnkgPT0gbnVsbCA/IDAgOiBmZWNDb250cm9s
bGVyRmFjdG9yeUZhY3RvcnkuY3JlYXRlTmF0aXZlKCkpOworICAgICAgICBmZWNDb250cm9sbGVy
RmFjdG9yeUZhY3RvcnkgPT0gbnVsbCA/IDAgOiBmZWNDb250cm9sbGVyRmFjdG9yeUZhY3Rvcnku
Y3JlYXRlTmF0aXZlKCksCisgICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkgPT0g
bnVsbAorICAgICAgICAgICAgPyAwCisgICAgICAgICAgICA6IG1lZGlhVHJhbnNwb3J0RmFjdG9y
eUZhY3RvcnkuY3JlYXRlTmF0aXZlTWVkaWFUcmFuc3BvcnRGYWN0b3J5KCkpOwogICAgIGlmIChu
YXRpdmVGYWN0b3J5ID09IDApIHsKICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJG
YWlsZWQgdG8gaW5pdGlhbGl6ZSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkhIik7CiAgICAgfQpAQCAt
MzY5LDkgKzQwMCwyNSBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKICAg
ICByZXR1cm4gbmV3IE1lZGlhU3RyZWFtKG5hdGl2ZUNyZWF0ZUxvY2FsTWVkaWFTdHJlYW0obmF0
aXZlRmFjdG9yeSwgbGFiZWwpKTsKICAgfQogCi0gIHB1YmxpYyBWaWRlb1NvdXJjZSBjcmVhdGVW
aWRlb1NvdXJjZShib29sZWFuIGlzU2NyZWVuY2FzdCkgeworICAvKioKKyAgICogQ3JlYXRlIHZp
ZGVvIHNvdXJjZSB3aXRoIGdpdmVuIHBhcmFtZXRlcnMuIElmIGFsaWduVGltZXN0YW1wcyBpcyBm
YWxzZSwgdGhlIGNhbGxlciBpcworICAgKiByZXNwb25zaWJsZSBmb3IgYWxpZ25pbmcgdGhlIGZy
YW1lIHRpbWVzdGFtcHMgdG8gcnRjOjpUaW1lTmFub3MoKS4gVGhpcyBjYW4gYmUgdXNlZCB0byBh
Y2hpZXZlCisgICAqIGhpZ2hlciBhY2N1cmFjeSBpZiB0aGVyZSBpcyBhIGJpZyBkZWxheSBiZXR3
ZWVuIGZyYW1lIGNyZWF0aW9uIGFuZCBmcmFtZXMgYmVpbmcgZGVsaXZlcmVkIHRvCisgICAqIHRo
ZSByZXR1cm5lZCB2aWRlbyBzb3VyY2UuIElmIGFsaWduVGltZXN0YW1wcyBpcyB0cnVlLCB0aW1l
c3RhbXBzIHdpbGwgYmUgYWxpZ25lZCB0bworICAgKiBydGM6OlRpbWVOYW5vcygpIHdoZW4gdGhl
eSBhcnJpdmUgdG8gdGhlIHJldHVybmVkIHZpZGVvIHNvdXJjZS4KKyAgICovCisgIHB1YmxpYyBW
aWRlb1NvdXJjZSBjcmVhdGVWaWRlb1NvdXJjZShib29sZWFuIGlzU2NyZWVuY2FzdCwgYm9vbGVh
biBhbGlnblRpbWVzdGFtcHMpIHsKICAgICBjaGVja1BlZXJDb25uZWN0aW9uRmFjdG9yeUV4aXN0
cygpOwotICAgIHJldHVybiBuZXcgVmlkZW9Tb3VyY2UobmF0aXZlQ3JlYXRlVmlkZW9Tb3VyY2Uo
bmF0aXZlRmFjdG9yeSwgaXNTY3JlZW5jYXN0KSk7CisgICAgcmV0dXJuIG5ldyBWaWRlb1NvdXJj
ZShuYXRpdmVDcmVhdGVWaWRlb1NvdXJjZShuYXRpdmVGYWN0b3J5LCBpc1NjcmVlbmNhc3QsIGFs
aWduVGltZXN0YW1wcykpOworICB9CisKKyAgLyoqCisgICAqIFNhbWUgYXMgYWJvdmUgd2l0aCBh
bGlnblRpbWVzdGFtcHMgc2V0IHRvIHRydWUuCisgICAqCisgICAqIEBzZWUgI2NyZWF0ZVZpZGVv
U291cmNlKGJvb2xlYW4sIGJvb2xlYW4pCisgICAqLworICBwdWJsaWMgVmlkZW9Tb3VyY2UgY3Jl
YXRlVmlkZW9Tb3VyY2UoYm9vbGVhbiBpc1NjcmVlbmNhc3QpIHsKKyAgICByZXR1cm4gY3JlYXRl
VmlkZW9Tb3VyY2UoaXNTY3JlZW5jYXN0LCAvKiBhbGlnblRpbWVzdGFtcHM9ICovIHRydWUpOwog
ICB9CiAKICAgcHVibGljIFZpZGVvVHJhY2sgY3JlYXRlVmlkZW9UcmFjayhTdHJpbmcgaWQsIFZp
ZGVvU291cmNlIHNvdXJjZSkgewpAQCAtNDg2LDE1ICs1MzMsMTggQEAgcHVibGljIGNsYXNzIFBl
ZXJDb25uZWN0aW9uRmFjdG9yeSB7CiAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2
ZVNodXRkb3duSW50ZXJuYWxUcmFjZXIoKTsKICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGJvb2xl
YW4gbmF0aXZlU3RhcnRJbnRlcm5hbFRyYWNpbmdDYXB0dXJlKFN0cmluZyB0cmFjaW5nRmlsZW5h
bWUpOwogICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVTdG9wSW50ZXJuYWxUcmFj
aW5nQ2FwdHVyZSgpOworCiAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0
ZVBlZXJDb25uZWN0aW9uRmFjdG9yeShDb250ZXh0IGNvbnRleHQsIE9wdGlvbnMgb3B0aW9ucywK
LSAgICAgIGxvbmcgbmF0aXZlQXVkaW9EZXZpY2VNb2R1bGUsIFZpZGVvRW5jb2RlckZhY3Rvcnkg
ZW5jb2RlckZhY3RvcnksCi0gICAgICBWaWRlb0RlY29kZXJGYWN0b3J5IGRlY29kZXJGYWN0b3J5
LCBsb25nIG5hdGl2ZUF1ZGlvUHJvY2Vzc29yLAotICAgICAgbG9uZyBuYXRpdmVGZWNDb250cm9s
bGVyRmFjdG9yeSk7CisgICAgICBsb25nIG5hdGl2ZUF1ZGlvRGV2aWNlTW9kdWxlLCBsb25nIGF1
ZGlvRW5jb2RlckZhY3RvcnksIGxvbmcgYXVkaW9EZWNvZGVyRmFjdG9yeSwKKyAgICAgIFZpZGVv
RW5jb2RlckZhY3RvcnkgZW5jb2RlckZhY3RvcnksIFZpZGVvRGVjb2RlckZhY3RvcnkgZGVjb2Rl
ckZhY3RvcnksCisgICAgICBsb25nIG5hdGl2ZUF1ZGlvUHJvY2Vzc29yLCBsb25nIG5hdGl2ZUZl
Y0NvbnRyb2xsZXJGYWN0b3J5LCBsb25nIG1lZGlhVHJhbnNwb3J0RmFjdG9yeSk7CisKICAgcHJp
dmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlUGVlckNvbm5lY3Rpb24obG9uZyBm
YWN0b3J5LAogICAgICAgUGVlckNvbm5lY3Rpb24uUlRDQ29uZmlndXJhdGlvbiBydGNDb25maWcs
IE1lZGlhQ29uc3RyYWludHMgY29uc3RyYWludHMsIGxvbmcgbmF0aXZlT2JzZXJ2ZXIsCiAgICAg
ICBTU0xDZXJ0aWZpY2F0ZVZlcmlmaWVyIHNzbENlcnRpZmljYXRlVmVyaWZpZXIpOwogICBwcml2
YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVDcmVhdGVMb2NhbE1lZGlhU3RyZWFtKGxvbmcg
ZmFjdG9yeSwgU3RyaW5nIGxhYmVsKTsKLSAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0
aXZlQ3JlYXRlVmlkZW9Tb3VyY2UobG9uZyBmYWN0b3J5LCBib29sZWFuIGlzX3NjcmVlbmNhc3Qp
OworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVDcmVhdGVWaWRlb1NvdXJjZSgK
KyAgICAgIGxvbmcgZmFjdG9yeSwgYm9vbGVhbiBpc19zY3JlZW5jYXN0LCBib29sZWFuIGFsaWdu
VGltZXN0YW1wcyk7CiAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZVZp
ZGVvVHJhY2soCiAgICAgICBsb25nIGZhY3RvcnksIFN0cmluZyBpZCwgbG9uZyBuYXRpdmVWaWRl
b1NvdXJjZSk7CiAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUF1ZGlv
U291cmNlKGxvbmcgZmFjdG9yeSwgTWVkaWFDb25zdHJhaW50cyBjb25zdHJhaW50cyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9hcGkvb3JnL3dlYnJ0Yy9SdGNDZXJ0aWZpY2F0ZVBlbS5qYXZhIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMv
UnRjQ2VydGlmaWNhdGVQZW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDcwMTM1YjNlMTJmMjdlZjc1MzU5
NmI0NWY5Y2U5ZGRmOTQxNWYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvUnRjQ2Vy
dGlmaWNhdGVQZW0uamF2YQpAQCAtMCwwICsxLDc1IEBACisvKgorICogIENvcHlyaWdodCAyMDE4
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitw
YWNrYWdlIG9yZy53ZWJydGM7CisKK2ltcG9ydCBvcmcud2VicnRjLlBlZXJDb25uZWN0aW9uOwor
CisvKioKKyAqIEVhc2lseSBzdG9yYWJsZS9zZXJpYWxpemFibGUgdmVyc2lvbiBvZiBhIG5hdGl2
ZSBDKysgUlRDQ2VydGlmaWNhdGVQRU0uCisgKi8KK3B1YmxpYyBjbGFzcyBSdGNDZXJ0aWZpY2F0
ZVBlbSB7CisgIC8qKiBQRU0gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcml2YXRlIGtl
eS4gKi8KKyAgcHVibGljIGZpbmFsIFN0cmluZyBwcml2YXRlS2V5OworICAvKiogUEVNIHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2VydGlmaWNhdGUuICovCisgIHB1YmxpYyBmaW5hbCBT
dHJpbmcgY2VydGlmaWNhdGU7CisgIC8qKiBEZWZhdWx0IGV4cGlyYXRpb24gdGltZSBvZiAzMCBk
YXlzLiAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIERFRkFVTFRfRVhQSVJZID0gNjAg
KiA2MCAqIDI0ICogMzA7CisKKyAgLyoqIEluc3RhbnRpYXRlIGFuIFJ0Y0NlcnRpZmljYXRlUGVt
IG9iamVjdCBmcm9tIHN0b3JlZCBzdHJpbmdzLiAqLworICBAQ2FsbGVkQnlOYXRpdmUKKyAgcHVi
bGljIFJ0Y0NlcnRpZmljYXRlUGVtKFN0cmluZyBwcml2YXRlS2V5LCBTdHJpbmcgY2VydGlmaWNh
dGUpIHsKKyAgICB0aGlzLnByaXZhdGVLZXkgPSBwcml2YXRlS2V5OworICAgIHRoaXMuY2VydGlm
aWNhdGUgPSBjZXJ0aWZpY2F0ZTsKKyAgfQorCisgIEBDYWxsZWRCeU5hdGl2ZQorICBTdHJpbmcg
Z2V0UHJpdmF0ZUtleSgpIHsKKyAgICByZXR1cm4gcHJpdmF0ZUtleTsKKyAgfQorCisgIEBDYWxs
ZWRCeU5hdGl2ZQorICBTdHJpbmcgZ2V0Q2VydGlmaWNhdGUoKSB7CisgICAgcmV0dXJuIGNlcnRp
ZmljYXRlOworICB9CisKKyAgLyoqCisgICAqIEdlbmVyYXRlIGEgbmV3IFJ0Y0NlcnRpZmljYXRl
UGVtIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YgS2V5VHlwZSA9IEVDRFNBIGFuZAorICAg
KiBleHBpcmVzID0gMzAgZGF5cy4KKyAgICovCisgIHB1YmxpYyBzdGF0aWMgUnRjQ2VydGlmaWNh
dGVQZW0gZ2VuZXJhdGVDZXJ0aWZpY2F0ZSgpIHsKKyAgICByZXR1cm4gbmF0aXZlR2VuZXJhdGVD
ZXJ0aWZpY2F0ZShQZWVyQ29ubmVjdGlvbi5LZXlUeXBlLkVDRFNBLCBERUZBVUxUX0VYUElSWSk7
CisgIH0KKworICAvKioKKyAgICogR2VuZXJhdGUgYSBuZXcgUnRjQ2VydGlmaWNhdGVQZW0gd2l0
aCBhIGN1c3RvbSBLZXlUeXBlIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5nIG9mCisgICAqIGV4cGly
ZXMgPSAzMCBkYXlzLgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBSdGNDZXJ0aWZpY2F0ZVBlbSBn
ZW5lcmF0ZUNlcnRpZmljYXRlKFBlZXJDb25uZWN0aW9uLktleVR5cGUga2V5VHlwZSkgeworICAg
IHJldHVybiBuYXRpdmVHZW5lcmF0ZUNlcnRpZmljYXRlKGtleVR5cGUsIERFRkFVTFRfRVhQSVJZ
KTsKKyAgfQorCisgIC8qKgorICAgKiBHZW5lcmF0ZSBhIG5ldyBSdGNDZXJ0aWZpY2F0ZVBlbSB3
aXRoIGEgY3VzdG9tIGV4cGlyZXMgYW5kIHRoZSBkZWZhdWx0IHNldHRpbmcgb2YKKyAgICogS2V5
VHlwZSA9IEVDRFNBLgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBSdGNDZXJ0aWZpY2F0ZVBlbSBn
ZW5lcmF0ZUNlcnRpZmljYXRlKGxvbmcgZXhwaXJlcykgeworICAgIHJldHVybiBuYXRpdmVHZW5l
cmF0ZUNlcnRpZmljYXRlKFBlZXJDb25uZWN0aW9uLktleVR5cGUuRUNEU0EsIGV4cGlyZXMpOwor
ICB9CisKKyAgLyoqIEdlbmVyYXRlIGEgbmV3IFJ0Y0NlcnRpZmljYXRlUGVtIHdpdGggYSBjdXN0
b20gS2V5VHlwZSBhbmQgYSBjdXN0b20gZXhwaXJlcy4gKi8KKyAgcHVibGljIHN0YXRpYyBSdGND
ZXJ0aWZpY2F0ZVBlbSBnZW5lcmF0ZUNlcnRpZmljYXRlKAorICAgICAgUGVlckNvbm5lY3Rpb24u
S2V5VHlwZSBrZXlUeXBlLCBsb25nIGV4cGlyZXMpIHsKKyAgICByZXR1cm4gbmF0aXZlR2VuZXJh
dGVDZXJ0aWZpY2F0ZShrZXlUeXBlLCBleHBpcmVzKTsKKyAgfQorCisgIHByaXZhdGUgc3RhdGlj
IG5hdGl2ZSBSdGNDZXJ0aWZpY2F0ZVBlbSBuYXRpdmVHZW5lcmF0ZUNlcnRpZmljYXRlKAorICAg
ICAgUGVlckNvbm5lY3Rpb24uS2V5VHlwZSBrZXlUeXBlLCBsb25nIGV4cGlyZXMpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvYXBpL29yZy93ZWJydGMvUnRwVHJhbnNjZWl2ZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1J0
cFRyYW5zY2VpdmVyLmphdmEKaW5kZXggYTRhNWFhMDU0MDU4MWM2MTFiMDE3YWFlZGY2OWJhMDU0
MmNkMGZmZi4uN2Y4NzVlNmM4ZWFkNDZkMjgxYzMxMzFlOTZjNzJiYTU1NDkyNzhlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvYXBpL29yZy93ZWJydGMvUnRwVHJhbnNjZWl2ZXIuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9S
dHBUcmFuc2NlaXZlci5qYXZhCkBAIC0xMyw2ICsxMyw3IEBAIHBhY2thZ2Ugb3JnLndlYnJ0YzsK
IGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9u
czsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBvcmcud2VicnRjLk1lZGlhU3RyZWFt
VHJhY2s7CiAKIC8qKgogICogSmF2YSB3cmFwcGVyIGZvciBhIEMrKyBSdHBUcmFuc2NlaXZlcklu
dGVyZmFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1NvZnR3YXJlVmlkZW9EZWNvZGVyRmFj
dG9yeS5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0RlY29kZXJGYWN0b3J5LmphdmEK
aW5kZXggODZkZmI3YTJjNmYyMTFlY2E0MWZiYzNhOWM0MWE2M2VhMjAwNzMzMy4uZjQyMWYxNmIx
YTFmOGI5N2JmZjA3ZTNiOWM3MzgwYTZiOWNlOTFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMv
U29mdHdhcmVWaWRlb0RlY29kZXJGYWN0b3J5LmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU29mdHdh
cmVWaWRlb0RlY29kZXJGYWN0b3J5LmphdmEKQEAgLTI3LDEwICsyNywxMCBAQCBwdWJsaWMgY2xh
c3MgU29mdHdhcmVWaWRlb0RlY29kZXJGYWN0b3J5IGltcGxlbWVudHMgVmlkZW9EZWNvZGVyRmFj
dG9yeSB7CiAgIEBPdmVycmlkZQogICBwdWJsaWMgVmlkZW9EZWNvZGVyIGNyZWF0ZURlY29kZXIo
VmlkZW9Db2RlY0luZm8gY29kZWNUeXBlKSB7CiAgICAgaWYgKGNvZGVjVHlwZS5nZXROYW1lKCku
ZXF1YWxzSWdub3JlQ2FzZSgiVlA4IikpIHsKLSAgICAgIHJldHVybiBuZXcgVlA4RGVjb2Rlcigp
OworICAgICAgcmV0dXJuIG5ldyBMaWJ2cHhWcDhEZWNvZGVyKCk7CiAgICAgfQotICAgIGlmIChj
b2RlY1R5cGUuZ2V0TmFtZSgpLmVxdWFsc0lnbm9yZUNhc2UoIlZQOSIpICYmIFZQOURlY29kZXIu
bmF0aXZlSXNTdXBwb3J0ZWQoKSkgewotICAgICAgcmV0dXJuIG5ldyBWUDlEZWNvZGVyKCk7Cisg
ICAgaWYgKGNvZGVjVHlwZS5nZXROYW1lKCkuZXF1YWxzSWdub3JlQ2FzZSgiVlA5IikgJiYgTGli
dnB4VnA5RGVjb2Rlci5uYXRpdmVJc1N1cHBvcnRlZCgpKSB7CisgICAgICByZXR1cm4gbmV3IExp
YnZweFZwOURlY29kZXIoKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbDsKQEAgLTQ1LDcgKzQ1
LDcgQEAgcHVibGljIGNsYXNzIFNvZnR3YXJlVmlkZW9EZWNvZGVyRmFjdG9yeSBpbXBsZW1lbnRz
IFZpZGVvRGVjb2RlckZhY3RvcnkgewogICAgIExpc3Q8VmlkZW9Db2RlY0luZm8+IGNvZGVjcyA9
IG5ldyBBcnJheUxpc3Q8VmlkZW9Db2RlY0luZm8+KCk7CiAKICAgICBjb2RlY3MuYWRkKG5ldyBW
aWRlb0NvZGVjSW5mbygiVlA4IiwgbmV3IEhhc2hNYXA8PigpKSk7Ci0gICAgaWYgKFZQOURlY29k
ZXIubmF0aXZlSXNTdXBwb3J0ZWQoKSkgeworICAgIGlmIChMaWJ2cHhWcDlEZWNvZGVyLm5hdGl2
ZUlzU3VwcG9ydGVkKCkpIHsKICAgICAgIGNvZGVjcy5hZGQobmV3IFZpZGVvQ29kZWNJbmZvKCJW
UDkiLCBuZXcgSGFzaE1hcDw+KCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRj
L1NvZnR3YXJlVmlkZW9FbmNvZGVyRmFjdG9yeS5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU29mdHdhcmVW
aWRlb0VuY29kZXJGYWN0b3J5LmphdmEKaW5kZXggYTJkZGYzNmMzODlkN2MxNDI5MzlhY2JkNjM4
NjI3ZmNhYmY2Y2FlYi4uM2MzNmM0ZDU2YTI4MzMxMzE1MWZkOWZlZGFmODgzNzY3NDdhMjM1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0VuY29kZXJGYWN0b3J5LmphdmEK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvYXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0VuY29kZXJGYWN0b3J5LmphdmEKQEAgLTIw
LDEwICsyMCwxMCBAQCBwdWJsaWMgY2xhc3MgU29mdHdhcmVWaWRlb0VuY29kZXJGYWN0b3J5IGlt
cGxlbWVudHMgVmlkZW9FbmNvZGVyRmFjdG9yeSB7CiAgIEBPdmVycmlkZQogICBwdWJsaWMgVmlk
ZW9FbmNvZGVyIGNyZWF0ZUVuY29kZXIoVmlkZW9Db2RlY0luZm8gaW5mbykgewogICAgIGlmIChp
bmZvLm5hbWUuZXF1YWxzSWdub3JlQ2FzZSgiVlA4IikpIHsKLSAgICAgIHJldHVybiBuZXcgVlA4
RW5jb2RlcigpOworICAgICAgcmV0dXJuIG5ldyBMaWJ2cHhWcDhFbmNvZGVyKCk7CiAgICAgfQot
ICAgIGlmIChpbmZvLm5hbWUuZXF1YWxzSWdub3JlQ2FzZSgiVlA5IikgJiYgVlA5RW5jb2Rlci5u
YXRpdmVJc1N1cHBvcnRlZCgpKSB7Ci0gICAgICByZXR1cm4gbmV3IFZQOUVuY29kZXIoKTsKKyAg
ICBpZiAoaW5mby5uYW1lLmVxdWFsc0lnbm9yZUNhc2UoIlZQOSIpICYmIExpYnZweFZwOUVuY29k
ZXIubmF0aXZlSXNTdXBwb3J0ZWQoKSkgeworICAgICAgcmV0dXJuIG5ldyBMaWJ2cHhWcDlFbmNv
ZGVyKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGw7CkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YyBjbGFzcyBTb2Z0d2FyZVZpZGVvRW5jb2RlckZhY3RvcnkgaW1wbGVtZW50cyBWaWRlb0VuY29k
ZXJGYWN0b3J5IHsKICAgICBMaXN0PFZpZGVvQ29kZWNJbmZvPiBjb2RlY3MgPSBuZXcgQXJyYXlM
aXN0PFZpZGVvQ29kZWNJbmZvPigpOwogCiAgICAgY29kZWNzLmFkZChuZXcgVmlkZW9Db2RlY0lu
Zm8oIlZQOCIsIG5ldyBIYXNoTWFwPD4oKSkpOwotICAgIGlmIChWUDlFbmNvZGVyLm5hdGl2ZUlz
U3VwcG9ydGVkKCkpIHsKKyAgICBpZiAoTGlidnB4VnA5RW5jb2Rlci5uYXRpdmVJc1N1cHBvcnRl
ZCgpKSB7CiAgICAgICBjb2RlY3MuYWRkKG5ldyBWaWRlb0NvZGVjSW5mbygiVlA5IiwgbmV3IEhh
c2hNYXA8PigpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9TdXJmYWNlVGV4
dHVyZUhlbHBlci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU3VyZmFjZVRleHR1cmVIZWxwZXIuamF2YQpp
bmRleCBiYjY3ZDFmOWZlMGE2MmM3MDEwOWE5MjQ4MjI1MmM0YzQ0ZGUwZTBiLi4yOWRmNjg4OTAx
ZTE2MjZkMWYzZTA0NmE2ZDQxZjk5ZDc0ODZiZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9T
dXJmYWNlVGV4dHVyZUhlbHBlci5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1N1cmZhY2VUZXh0dXJl
SGVscGVyLmphdmEKQEAgLTM2LDEwICszNiwxNCBAQCBwdWJsaWMgY2xhc3MgU3VyZmFjZVRleHR1
cmVIZWxwZXIgewogICAvKioKICAgICogQ29uc3RydWN0IGEgbmV3IFN1cmZhY2VUZXh0dXJlSGVs
cGVyIHNoYXJpbmcgT3BlbkdMIHJlc291cmNlcyB3aXRoIHxzaGFyZWRDb250ZXh0fC4gQSBkZWRp
Y2F0ZWQKICAgICogdGhyZWFkIGFuZCBoYW5kbGVyIGlzIGNyZWF0ZWQgZm9yIGhhbmRsaW5nIHRo
ZSBTdXJmYWNlVGV4dHVyZS4gTWF5IHJldHVybiBudWxsIGlmIEVHTCBmYWlscyB0bwotICAgKiBp
bml0aWFsaXplIGEgcGl4ZWwgYnVmZmVyIHN1cmZhY2UgYW5kIG1ha2UgaXQgY3VycmVudC4KKyAg
ICogaW5pdGlhbGl6ZSBhIHBpeGVsIGJ1ZmZlciBzdXJmYWNlIGFuZCBtYWtlIGl0IGN1cnJlbnQu
IElmIGFsaWduVGltZXN0YW1wcyBpcyB0cnVlLCB0aGUgZnJhbWUKKyAgICogdGltZXN0YW1wcyB3
aWxsIGJlIGFsaWduZWQgdG8gcnRjOjpUaW1lTmFub3MoKS4gSWYgZnJhbWUgdGltZXN0YW1wcyBh
cmUgYWxpZ25lZCB0bworICAgKiBydGM6OlRpbWVOYW5vcygpIHRoZXJlIGlzIG5vIG5lZWQgZm9y
IGFsaWduaW5nIHRpbWVzdGFtcHMgYWdhaW4gaW4KKyAgICogUGVlckNvbm5lY3Rpb25GYWN0b3J5
LmNyZWF0ZVZpZGVvU291cmNlKCkuIFRoaXMgbWFrZXMgdGhlIHRpbWVzdGFtcHMgbW9yZSBhY2N1
cmF0ZSBhbmQKKyAgICogY2xvc2VyIHRvIGFjdHVhbCBjcmVhdGlvbiB0aW1lLgogICAgKi8KICAg
cHVibGljIHN0YXRpYyBTdXJmYWNlVGV4dHVyZUhlbHBlciBjcmVhdGUoCi0gICAgICBmaW5hbCBT
dHJpbmcgdGhyZWFkTmFtZSwgZmluYWwgRWdsQmFzZS5Db250ZXh0IHNoYXJlZENvbnRleHQpIHsK
KyAgICAgIGZpbmFsIFN0cmluZyB0aHJlYWROYW1lLCBmaW5hbCBFZ2xCYXNlLkNvbnRleHQgc2hh
cmVkQ29udGV4dCwgYm9vbGVhbiBhbGlnblRpbWVzdGFtcHMpIHsKICAgICBmaW5hbCBIYW5kbGVy
VGhyZWFkIHRocmVhZCA9IG5ldyBIYW5kbGVyVGhyZWFkKHRocmVhZE5hbWUpOwogICAgIHRocmVh
ZC5zdGFydCgpOwogICAgIGZpbmFsIEhhbmRsZXIgaGFuZGxlciA9IG5ldyBIYW5kbGVyKHRocmVh
ZC5nZXRMb29wZXIoKSk7CkBAIC01Myw3ICs1Nyw3IEBAIHB1YmxpYyBjbGFzcyBTdXJmYWNlVGV4
dHVyZUhlbHBlciB7CiAgICAgICBAT3ZlcnJpZGUKICAgICAgIHB1YmxpYyBTdXJmYWNlVGV4dHVy
ZUhlbHBlciBjYWxsKCkgewogICAgICAgICB0cnkgewotICAgICAgICAgIHJldHVybiBuZXcgU3Vy
ZmFjZVRleHR1cmVIZWxwZXIoc2hhcmVkQ29udGV4dCwgaGFuZGxlcik7CisgICAgICAgICAgcmV0
dXJuIG5ldyBTdXJmYWNlVGV4dHVyZUhlbHBlcihzaGFyZWRDb250ZXh0LCBoYW5kbGVyLCBhbGln
blRpbWVzdGFtcHMpOwogICAgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKICAg
ICAgICAgICBMb2dnaW5nLmUoVEFHLCB0aHJlYWROYW1lICsgIiBjcmVhdGUgZmFpbHVyZSIsIGUp
OwogICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtNjIsMTEgKzY2LDIyIEBAIHB1YmxpYyBjbGFz
cyBTdXJmYWNlVGV4dHVyZUhlbHBlciB7CiAgICAgfSk7CiAgIH0KIAorICAvKioKKyAgICogU2Ft
ZSBhcyBhYm92ZSB3aXRoIGFsaWduVGltZXN0YW1wcyBzZXQgdG8gZmFsc2UuCisgICAqCisgICAq
IEBzZWUgI2NyZWF0ZShTdHJpbmcsIEVnbEJhc2UuQ29udGV4dCwgYm9vbGVhbikKKyAgICovCisg
IHB1YmxpYyBzdGF0aWMgU3VyZmFjZVRleHR1cmVIZWxwZXIgY3JlYXRlKAorICAgICAgZmluYWwg
U3RyaW5nIHRocmVhZE5hbWUsIGZpbmFsIEVnbEJhc2UuQ29udGV4dCBzaGFyZWRDb250ZXh0KSB7
CisgICAgcmV0dXJuIGNyZWF0ZSh0aHJlYWROYW1lLCBzaGFyZWRDb250ZXh0LCAvKiBhbGlnblRp
bWVzdGFtcHM9ICovIGZhbHNlKTsKKyAgfQorCiAgIHByaXZhdGUgZmluYWwgSGFuZGxlciBoYW5k
bGVyOwogICBwcml2YXRlIGZpbmFsIEVnbEJhc2UgZWdsQmFzZTsKICAgcHJpdmF0ZSBmaW5hbCBT
dXJmYWNlVGV4dHVyZSBzdXJmYWNlVGV4dHVyZTsKICAgcHJpdmF0ZSBmaW5hbCBpbnQgb2VzVGV4
dHVyZUlkOwogICBwcml2YXRlIGZpbmFsIFl1dkNvbnZlcnRlciB5dXZDb252ZXJ0ZXIgPSBuZXcg
WXV2Q29udmVydGVyKCk7CisgIEBOdWxsYWJsZSBwcml2YXRlIGZpbmFsIFRpbWVzdGFtcEFsaWdu
ZXIgdGltZXN0YW1wQWxpZ25lcjsKIAogICAvLyBUaGVzZSB2YXJpYWJsZXMgYXJlIG9ubHkgYWNj
ZXNzZWQgZnJvbSB0aGUgfGhhbmRsZXJ8IHRocmVhZC4KICAgQE51bGxhYmxlIHByaXZhdGUgVmlk
ZW9TaW5rIGxpc3RlbmVyOwpAQCAtOTUsMTEgKzExMCwxMyBAQCBwdWJsaWMgY2xhc3MgU3VyZmFj
ZVRleHR1cmVIZWxwZXIgewogICAgIH0KICAgfTsKIAotICBwcml2YXRlIFN1cmZhY2VUZXh0dXJl
SGVscGVyKEVnbEJhc2UuQ29udGV4dCBzaGFyZWRDb250ZXh0LCBIYW5kbGVyIGhhbmRsZXIpIHsK
KyAgcHJpdmF0ZSBTdXJmYWNlVGV4dHVyZUhlbHBlcigKKyAgICAgIEVnbEJhc2UuQ29udGV4dCBz
aGFyZWRDb250ZXh0LCBIYW5kbGVyIGhhbmRsZXIsIGJvb2xlYW4gYWxpZ25UaW1lc3RhbXBzKSB7
CiAgICAgaWYgKGhhbmRsZXIuZ2V0TG9vcGVyKCkuZ2V0VGhyZWFkKCkgIT0gVGhyZWFkLmN1cnJl
bnRUaHJlYWQoKSkgewogICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiU3Vy
ZmFjZVRleHR1cmVIZWxwZXIgbXVzdCBiZSBjcmVhdGVkIG9uIHRoZSBoYW5kbGVyIHRocmVhZCIp
OwogICAgIH0KICAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyOworICAgIHRoaXMudGltZXN0YW1w
QWxpZ25lciA9IGFsaWduVGltZXN0YW1wcyA/IG5ldyBUaW1lc3RhbXBBbGlnbmVyKCkgOiBudWxs
OwogCiAgICAgZWdsQmFzZSA9IEVnbEJhc2UuY3JlYXRlKHNoYXJlZENvbnRleHQsIEVnbEJhc2Uu
Q09ORklHX1BJWEVMX0JVRkZFUik7CiAgICAgdHJ5IHsKQEAgLTI2NCw3ICsyODEsMTAgQEAgcHVi
bGljIGNsYXNzIFN1cmZhY2VUZXh0dXJlSGVscGVyIHsKIAogICAgIGZpbmFsIGZsb2F0W10gdHJh
bnNmb3JtTWF0cml4ID0gbmV3IGZsb2F0WzE2XTsKICAgICBzdXJmYWNlVGV4dHVyZS5nZXRUcmFu
c2Zvcm1NYXRyaXgodHJhbnNmb3JtTWF0cml4KTsKLSAgICBmaW5hbCBsb25nIHRpbWVzdGFtcE5z
ID0gc3VyZmFjZVRleHR1cmUuZ2V0VGltZXN0YW1wKCk7CisgICAgbG9uZyB0aW1lc3RhbXBOcyA9
IHN1cmZhY2VUZXh0dXJlLmdldFRpbWVzdGFtcCgpOworICAgIGlmICh0aW1lc3RhbXBBbGlnbmVy
ICE9IG51bGwpIHsKKyAgICAgIHRpbWVzdGFtcE5zID0gdGltZXN0YW1wQWxpZ25lci50cmFuc2xh
dGVUaW1lc3RhbXAodGltZXN0YW1wTnMpOworICAgIH0KICAgICBpZiAodGV4dHVyZVdpZHRoID09
IDAgfHwgdGV4dHVyZUhlaWdodCA9PSAwKSB7CiAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2Vw
dGlvbigiVGV4dHVyZSBzaXplIGhhcyBub3QgYmVlbiBzZXQuIik7CiAgICAgfQpAQCAtMjg5LDUg
KzMwOSw4IEBAIHB1YmxpYyBjbGFzcyBTdXJmYWNlVGV4dHVyZUhlbHBlciB7CiAgICAgc3VyZmFj
ZVRleHR1cmUucmVsZWFzZSgpOwogICAgIGVnbEJhc2UucmVsZWFzZSgpOwogICAgIGhhbmRsZXIu
Z2V0TG9vcGVyKCkucXVpdCgpOworICAgIGlmICh0aW1lc3RhbXBBbGlnbmVyICE9IG51bGwpIHsK
KyAgICAgIHRpbWVzdGFtcEFsaWduZXIuZGlzcG9zZSgpOworICAgIH0KICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvYXBpL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25lci5qYXZhIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvVGlt
ZXN0YW1wQWxpZ25lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNGJlZDRkOGZiYTQ0ODRkNWQxZWE1ZTg0
YTBhMWEyOGYyOTk1NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9UaW1lc3RhbXBB
bGlnbmVyLmphdmEKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworcGFja2Fn
ZSBvcmcud2VicnRjOworCisvKioKKyAqIFRoZSBUaW1lc3RhbXBBbGlnbmVyIGNsYXNzIGhlbHBz
IHRyYW5zbGF0aW5nIGNhbWVyYSB0aW1lc3RhbXBzIGludG8gdGhlIHNhbWUgdGltZXNjYWxlIGFz
IGlzCisgKiB1c2VkIGJ5IHJ0Yzo6VGltZU5hbm9zKCkuIFNvbWUgY2FtZXJhcyBoYXZlIGJ1aWx0
IGluIHRpbWVzdGFtcGluZyB3aGljaCBpcyBtb3JlIGFjY3VyYXRlIHRoYW4KKyAqIHJlYWRpbmcg
dGhlIHN5c3RlbSBjbG9jaywgYnV0IHVzaW5nIGEgZGlmZmVyZW50IGVwb2NoIGFuZCB1bmtub3du
IGNsb2NrIGRyaWZ0LiBGcmFtZSB0aW1lc3RhbXBzCisgKiBpbiB3ZWJydGMgc2hvdWxkIHVzZSBy
dGM6OlRpbWVOYW5vcyAoc3lzdGVtIG1vbm90b25pYyB0aW1lKSwgYW5kIHRoaXMgY2xhc3MgcHJv
dmlkZXMgYSBmaWx0ZXIKKyAqIHdoaWNoIGxldHMgdXMgdXNlIHRoZSBydGM6OlRpbWVOYW5vcyB0
aW1lc2NhbGUsIGFuZCBhdCB0aGUgc2FtZSB0aW1lIHRha2UgYWR2YW50YWdlIG9mIGhpZ2hlcgor
ICogYWNjdXJhY3kgb2YgdGhlIGNhbWVyYSBjbG9jay4gVGhpcyBjbGFzcyBpcyBhIHdyYXBwZXIg
b24gdG9wIG9mIHJ0Yzo6VGltZXN0YW1wQWxpZ25lci4KKyAqLworcHVibGljIGNsYXNzIFRpbWVz
dGFtcEFsaWduZXIgeworICAvKioKKyAgICogV3JhcHBlciBhcm91bmQgcnRjOjpUaW1lTmFub3Mo
KS4gVGhpcyBpcyBub3JtYWxseSBzYW1lIGFzIFN5c3RlbS5uYW5vVGltZSgpLCBidXQgY2FsbCB0
aGlzCisgICAqIGZ1bmN0aW9uIHRvIGJlIHNhZmUuCisgICAqLworICBwdWJsaWMgc3RhdGljIGxv
bmcgZ2V0UnRjVGltZU5hbm9zKCkgeworICAgIHJldHVybiBuYXRpdmVSdGNUaW1lTmFub3MoKTsK
KyAgfQorCisgIHByaXZhdGUgdm9sYXRpbGUgbG9uZyBuYXRpdmVUaW1lc3RhbXBBbGlnbmVyID0g
bmF0aXZlQ3JlYXRlVGltZXN0YW1wQWxpZ25lcigpOworCisgIC8qKgorICAgKiBUcmFuc2xhdGVz
IGNhbWVyYSB0aW1lc3RhbXBzIHRvIHRoZSBzYW1lIHRpbWVzY2FsZSBhcyBpcyB1c2VkIGJ5IHJ0
Yzo6VGltZU5hbm9zKCkuCisgICAqIHxjYW1lcmFUaW1lTnN8IGlzIGFzc3VtZWQgdG8gYmUgYWNj
dXJhdGUsIGJ1dCB3aXRoIGFuIHVua25vd24gZXBvY2ggYW5kIGNsb2NrIGRyaWZ0LiBSZXR1cm5z
CisgICAqIHRoZSB0cmFuc2xhdGVkIHRpbWVzdGFtcC4KKyAgICovCisgIHB1YmxpYyBsb25nIHRy
YW5zbGF0ZVRpbWVzdGFtcChsb25nIGNhbWVyYVRpbWVOcykgeworICAgIGNoZWNrTmF0aXZlQWxp
Z25lckV4aXN0cygpOworICAgIHJldHVybiBuYXRpdmVUcmFuc2xhdGVUaW1lc3RhbXAobmF0aXZl
VGltZXN0YW1wQWxpZ25lciwgY2FtZXJhVGltZU5zKTsKKyAgfQorCisgIC8qKiBEaXNwb3NlIG5h
dGl2ZSB0aW1lc3RhbXAgYWxpZ25lci4gKi8KKyAgcHVibGljIHZvaWQgZGlzcG9zZSgpIHsKKyAg
ICBjaGVja05hdGl2ZUFsaWduZXJFeGlzdHMoKTsKKyAgICBuYXRpdmVSZWxlYXNlVGltZXN0YW1w
QWxpZ25lcihuYXRpdmVUaW1lc3RhbXBBbGlnbmVyKTsKKyAgICBuYXRpdmVUaW1lc3RhbXBBbGln
bmVyID0gMDsKKyAgfQorCisgIHByaXZhdGUgdm9pZCBjaGVja05hdGl2ZUFsaWduZXJFeGlzdHMo
KSB7CisgICAgaWYgKG5hdGl2ZVRpbWVzdGFtcEFsaWduZXIgPT0gMCkgeworICAgICAgdGhyb3cg
bmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVGltZXN0YW1wQWxpZ25lciBoYXMgYmVlbiBkaXNw
b3NlZC4iKTsKKyAgICB9CisgIH0KKworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRp
dmVSdGNUaW1lTmFub3MoKTsKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3Jl
YXRlVGltZXN0YW1wQWxpZ25lcigpOworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRp
dmVSZWxlYXNlVGltZXN0YW1wQWxpZ25lcihsb25nIHRpbWVzdGFtcEFsaWduZXIpOworICBwcml2
YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVUcmFuc2xhdGVUaW1lc3RhbXAobG9uZyB0aW1l
c3RhbXBBbGlnbmVyLCBsb25nIGNhbWVyYVRpbWVOcyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dl
YnJ0Yy9WaWRlb0VuY29kZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1ZpZGVvRW5jb2Rlci5qYXZhCmlu
ZGV4IDhkYzc1ODI5MjZiMjQzYWI5ZDYwZDIyOGU2NmI1YzAzNmNmYWZlMmIuLmFmYzVjZDAyMzlk
MWE1YTJlMjA4MmNhOTFkZDdjOGEzNGY1OGUwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1Zp
ZGVvRW5jb2Rlci5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1ZpZGVvRW5jb2Rlci5qYXZhCkBAIC0y
MTAsMTQgKzIxMCw2IEBAIHB1YmxpYyBpbnRlcmZhY2UgVmlkZW9FbmNvZGVyIHsKICAgICovCiAg
IEBDYWxsZWRCeU5hdGl2ZSBWaWRlb0NvZGVjU3RhdHVzIGVuY29kZShWaWRlb0ZyYW1lIGZyYW1l
LCBFbmNvZGVJbmZvIGluZm8pOwogCi0gIC8qKgotICAgKiBJbmZvcm1zIHRoZSBlbmNvZGVyIG9m
IHRoZSBwYWNrZXQgbG9zcyBhbmQgdGhlIHJvdW5kLXRyaXAgdGltZSBvZiB0aGUgbmV0d29yay4K
LSAgICoKLSAgICogQHBhcmFtIHBhY2tldExvc3MgSG93IG1hbnkgcGFja2V0cyBhcmUgbG9zdCBv
biBhdmVyYWdlIHBlciAyNTUgcGFja2V0cy4KLSAgICogQHBhcmFtIHJvdW5kVHJpcFRpbWVNcyBS
b3VuZC10cmlwIHRpbWUgb2YgdGhlIG5ldHdvcmsgaW4gbWlsbGlzZWNvbmRzLgotICAgKi8KLSAg
QENhbGxlZEJ5TmF0aXZlIFZpZGVvQ29kZWNTdGF0dXMgc2V0Q2hhbm5lbFBhcmFtZXRlcnMoc2hv
cnQgcGFja2V0TG9zcywgbG9uZyByb3VuZFRyaXBUaW1lTXMpOwotCiAgIC8qKiBTZXRzIHRoZSBi
aXRyYXRlIGFsbG9jYXRpb24gYW5kIHRoZSB0YXJnZXQgZnJhbWVyYXRlIGZvciB0aGUgZW5jb2Rl
ci4gKi8KICAgQENhbGxlZEJ5TmF0aXZlIFZpZGVvQ29kZWNTdGF0dXMgc2V0UmF0ZUFsbG9jYXRp
b24oQml0cmF0ZUFsbG9jYXRpb24gYWxsb2NhdGlvbiwgaW50IGZyYW1lcmF0ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL2FwaS9vcmcvd2VicnRjL1ZpZGVvU291cmNlLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9WaWRlb1Nv
dXJjZS5qYXZhCmluZGV4IDdmOWYzZTUzMjNmZjUzMGY4M2YxNzFiNTdiOTdmZTQxZmEzM2NhYzcu
LmE4ZWY2NjIwYWNmY2I0YTQzYzliY2RlZjZhZmQyODRlZDlkOTA4NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9v
cmcvd2VicnRjL1ZpZGVvU291cmNlLmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvVmlkZW9Tb3VyY2Uu
amF2YQpAQCAtMzAsNyArMzAsMjAgQEAgcHVibGljIGNsYXNzIFZpZGVvU291cmNlIGV4dGVuZHMg
TWVkaWFTb3VyY2UgewogICAgKiBtYWludGFpbiB0aGUgaW5wdXQgb3JpZW50YXRpb24sIHNvIGl0
IGRvZXNuJ3QgbWF0dGVyIGlmIGUuZy4gMTI4MHg3MjAgb3IgNzIweDEyODAgaXMgcmVxdWVzdGVk
LgogICAgKi8KICAgcHVibGljIHZvaWQgYWRhcHRPdXRwdXRGb3JtYXQoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCBpbnQgZnBzKSB7Ci0gICAgbmF0aXZlQWRhcHRPdXRwdXRGb3JtYXQoZ2V0TmF0aXZl
VmlkZW9UcmFja1NvdXJjZSgpLCB3aWR0aCwgaGVpZ2h0LCBmcHMpOworICAgIGZpbmFsIGludCBt
YXhTaWRlID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7CisgICAgZmluYWwgaW50IG1pblNpZGUg
PSBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KTsKKyAgICBhZGFwdE91dHB1dEZvcm1hdChtYXhTaWRl
LCBtaW5TaWRlLCBtaW5TaWRlLCBtYXhTaWRlLCBmcHMpOworICB9CisKKyAgLyoqCisgICAqIFNh
bWUgYXMgYWJvdmUsIGJ1dCBhbGxvd3Mgc2V0dGluZyB0d28gZGlmZmVyZW50IHRhcmdldCByZXNv
bHV0aW9ucyBkZXBlbmRpbmcgb24gaW5jb21pbmcKKyAgICogZnJhbWUgb3JpZW50YXRpb24uIFRo
aXMgZ2l2ZXMgbW9yZSBmaW5lLWdyYWluZWQgY29udHJvbCBhbmQgY2FuIGUuZy4gYmUgdXNlZCB0
byBmb3JjZSBsYW5kc2NhcGUKKyAgICogdmlkZW8gdG8gYmUgY3JvcHBlZCB0byBwb3J0cmFpdCB2
aWRlby4KKyAgICovCisgIHB1YmxpYyB2b2lkIGFkYXB0T3V0cHV0Rm9ybWF0KAorICAgICAgaW50
IGxhbmRzY2FwZVdpZHRoLCBpbnQgbGFuZHNjYXBlSGVpZ2h0LCBpbnQgcG9ydHJhaXRXaWR0aCwg
aW50IHBvcnRyYWl0SGVpZ2h0LCBpbnQgZnBzKSB7CisgICAgbmF0aXZlQWRhcHRPdXRwdXRGb3Jt
YXQoZ2V0TmF0aXZlVmlkZW9UcmFja1NvdXJjZSgpLCBsYW5kc2NhcGVXaWR0aCwgbGFuZHNjYXBl
SGVpZ2h0LAorICAgICAgICBwb3J0cmFpdFdpZHRoLCBwb3J0cmFpdEhlaWdodCwgZnBzKTsKICAg
fQogCiAgIHB1YmxpYyBDYXB0dXJlck9ic2VydmVyIGdldENhcHR1cmVyT2JzZXJ2ZXIoKSB7CkBA
IC00NCw1ICs1Nyw2IEBAIHB1YmxpYyBjbGFzcyBWaWRlb1NvdXJjZSBleHRlbmRzIE1lZGlhU291
cmNlIHsKIAogICAvLyBSZXR1cm5zIHNvdXJjZS0+aW50ZXJuYWwoKSBmcm9tIHdlYnJ0Yzo6Vmlk
ZW9UcmFja1NvdXJjZVByb3h5LgogICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVH
ZXRJbnRlcm5hbFNvdXJjZShsb25nIHNvdXJjZSk7Ci0gIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2
b2lkIG5hdGl2ZUFkYXB0T3V0cHV0Rm9ybWF0KGxvbmcgc291cmNlLCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQsIGludCBmcHMpOworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVBZGFw
dE91dHB1dEZvcm1hdChsb25nIHNvdXJjZSwgaW50IGxhbmRzY2FwZVdpZHRoLAorICAgICAgaW50
IGxhbmRzY2FwZUhlaWdodCwgaW50IHBvcnRyYWl0V2lkdGgsIGludCBwb3J0cmFpdEhlaWdodCwg
aW50IGZwcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0
Yy9CdWlsdGluQXVkaW9Db2RlY3NGYWN0b3J5RmFjdG9yeVRlc3QuamF2YSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlv
bnRlc3RzL3NyYy9vcmcvd2VicnRjL0J1aWx0aW5BdWRpb0NvZGVjc0ZhY3RvcnlGYWN0b3J5VGVz
dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM2ZWUwZTkzMmUxY2MyMDJhZmRkZDFkOWJhN2ZlMzRlZTU3NzUx
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9C
dWlsdGluQXVkaW9Db2RlY3NGYWN0b3J5RmFjdG9yeVRlc3QuamF2YQpAQCAtMCwwICsxLDU4IEBA
CisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisKK2ltcG9ydCBzdGF0
aWMgY29tLmdvb2dsZS5jb21tb24udHJ1dGguVHJ1dGguYXNzZXJ0VGhhdDsKKworaW1wb3J0IGFu
ZHJvaWQuc3VwcG9ydC50ZXN0LmZpbHRlcnMuU21hbGxUZXN0OworCitpbXBvcnQgb3JnLmp1bml0
LkJlZm9yZTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVy
LlJ1bldpdGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuSlVuaXQ0OworCitAUnVuV2l0aChK
VW5pdDQuY2xhc3MpCitwdWJsaWMgZmluYWwgY2xhc3MgQnVpbHRpbkF1ZGlvQ29kZWNzRmFjdG9y
eUZhY3RvcnlUZXN0IHsKKyAgQEJlZm9yZQorICBwdWJsaWMgdm9pZCBzZXRVcCgpIHsKKyAgICBT
eXN0ZW0ubG9hZExpYnJhcnkoVGVzdENvbnN0YW50cy5OQVRJVkVfTElCUkFSWSk7CisgIH0KKwor
ICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RBdWRpb0VuY29kZXJGYWN0
b3J5RmFjdG9yeVRlc3QoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICBCdWlsdGluQXVkaW9FbmNv
ZGVyRmFjdG9yeUZhY3RvcnkgZmFjdG9yeSA9IG5ldyBCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9y
eUZhY3RvcnkoKTsKKyAgICBsb25nIGFlZiA9IDA7CisgICAgdHJ5IHsKKyAgICAgIGFlZiA9IGZh
Y3RvcnkuY3JlYXRlTmF0aXZlQXVkaW9FbmNvZGVyRmFjdG9yeSgpOworICAgICAgYXNzZXJ0VGhh
dChhZWYpLmlzTm90RXF1YWxUbygwKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgaWYgKGFlZiAh
PSAwKSB7CisgICAgICAgIEpuaUNvbW1vbi5uYXRpdmVSZWxlYXNlUmVmKGFlZik7CisgICAgICB9
CisgICAgfQorICB9CisKKyAgQFRlc3QKKyAgQFNtYWxsVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0
QXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnlUZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAg
QnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5IGZhY3RvcnkgPSBuZXcgQnVpbHRpbkF1
ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5KCk7CisgICAgbG9uZyBhZGYgPSAwOworICAgIHRyeSB7
CisgICAgICBhZGYgPSBmYWN0b3J5LmNyZWF0ZU5hdGl2ZUF1ZGlvRGVjb2RlckZhY3RvcnkoKTsK
KyAgICAgIGFzc2VydFRoYXQoYWRmKS5pc05vdEVxdWFsVG8oMCk7CisgICAgfSBmaW5hbGx5IHsK
KyAgICAgIGlmIChhZGYgIT0gMCkgeworICAgICAgICBKbmlDb21tb24ubmF0aXZlUmVsZWFzZVJl
ZihhZGYpOworICAgICAgfQorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9u
dGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMUNhcHR1cmVyVXNpbmdCeXRlQnVmZmVyVGVzdC5q
YXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMUNhcHR1cmVyVXNp
bmdCeXRlQnVmZmVyVGVzdC5qYXZhCmluZGV4IGVmNzY2OTEwMmY5YmI2NDhiNmRiMTU0MjExMDRj
OWIwNjZlOWIzNWQuLjE3YjA5NzdkNTk1ZmQyN2FmZjU4NjYxZWY5YWE3ZDFjYzdkODc1OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYTFDYXB0dXJl
clVzaW5nQnl0ZUJ1ZmZlclRlc3QuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3Jn
L3dlYnJ0Yy9DYW1lcmExQ2FwdHVyZXJVc2luZ0J5dGVCdWZmZXJUZXN0LmphdmEKQEAgLTE2OSw2
ICsxNjksMTQgQEAgcHVibGljIGNsYXNzIENhbWVyYTFDYXB0dXJlclVzaW5nQnl0ZUJ1ZmZlclRl
c3QgewogICAgIGZpeHR1cmVzLnNjYWxlQ2FtZXJhT3V0cHV0KCk7CiAgIH0KIAorICAvLyBUaGlz
IHRlc3QgdGhhdCBmcmFtZXMgZm9yd2FyZGVkIHRvIGEgcmVuZGVyZXIgaXMgY3JvcHBlZCB0byBh
IG5ldyBvcmllbnRhdGlvbiBpZgorICAvLyBhZGFwdE91dHB1dEZvcm1hdCBpcyBjYWxsZWQgaW4g
c3VjaCBhIHdheS4gVGhpcyB0ZXN0IGJvdGggSmF2YSBhbmQgQysrIHBhcnRzIG9mIG9mIHRoZSBz
dGFjay4KKyAgQFRlc3QKKyAgQE1lZGl1bVRlc3QKKyAgcHVibGljIHZvaWQgdGVzdENyb3BDYW1l
cmFPdXRwdXQoKSB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24geworICAgIGZpeHR1cmVzLmNy
b3BDYW1lcmFPdXRwdXQoKTsKKyAgfQorCiAgIC8vIFRoaXMgdGVzdCB0aGF0IGFuIGVycm9yIGlz
IHJlcG9ydGVkIGlmIHRoZSBjYW1lcmEgaXMgYWxyZWFkeSBvcGVuZWQKICAgLy8gd2hlbiBDYW1l
cmFWaWRlb0NhcHR1cmVyIGlzIHN0YXJ0ZWQuCiAgIEBUZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50
YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmExQ2FwdHVyZXJVc2luZ1RleHR1cmVUZXN0
LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmExQ2FwdHVyZXJV
c2luZ1RleHR1cmVUZXN0LmphdmEKaW5kZXggMjhmYTgyNWFkNzRlNjFjYzk0MDZiMzJkMjRiOWI2
ZGJlNjBjODg1NS4uNGRjMDAzNzI2YTcxOTZjNjI2YTQ3NTYwZjk0OTE4YzQxNTExNTVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMUNhcHR1cmVy
VXNpbmdUZXh0dXJlVGVzdC5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2Vi
cnRjL0NhbWVyYTFDYXB0dXJlclVzaW5nVGV4dHVyZVRlc3QuamF2YQpAQCAtMTcyLDYgKzE3Miwx
NCBAQCBwdWJsaWMgY2xhc3MgQ2FtZXJhMUNhcHR1cmVyVXNpbmdUZXh0dXJlVGVzdCB7CiAgICAg
Zml4dHVyZXMuc2NhbGVDYW1lcmFPdXRwdXQoKTsKICAgfQogCisgIC8vIFRoaXMgdGVzdCB0aGF0
IGZyYW1lcyBmb3J3YXJkZWQgdG8gYSByZW5kZXJlciBpcyBjcm9wcGVkIHRvIGEgbmV3IG9yaWVu
dGF0aW9uIGlmCisgIC8vIGFkYXB0T3V0cHV0Rm9ybWF0IGlzIGNhbGxlZCBpbiBzdWNoIGEgd2F5
LiBUaGlzIHRlc3QgYm90aCBKYXZhIGFuZCBDKysgcGFydHMgb2Ygb2YgdGhlIHN0YWNrLgorICBA
VGVzdAorICBATWVkaXVtVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0Q3JvcENhbWVyYU91dHB1dCgp
IHRocm93cyBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CisgICAgZml4dHVyZXMuY3JvcENhbWVyYU91
dHB1dCgpOworICB9CisKICAgLy8gVGhpcyB0ZXN0IHRoYXQgYW4gZXJyb3IgaXMgcmVwb3J0ZWQg
aWYgdGhlIGNhbWVyYSBpcyBhbHJlYWR5IG9wZW5lZAogICAvLyB3aGVuIENhbWVyYVZpZGVvQ2Fw
dHVyZXIgaXMgc3RhcnRlZC4KICAgQFRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3Rz
L3NyYy9vcmcvd2VicnRjL0NhbWVyYTJDYXB0dXJlclRlc3QuamF2YSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRl
c3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYTJDYXB0dXJlclRlc3QuamF2YQppbmRleCA3N2U4ZDc3
ZjBhZWYxZDY1NjhiMWM3YWRhNTM0ZGNiOGM2NDExYmMxLi5mYmE5NDMxNzZhODU4NmMyOGVjZjQ5
MTg3MTM5MjJiNGJmYTRmNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3Jn
L3dlYnJ0Yy9DYW1lcmEyQ2FwdHVyZXJUZXN0LmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMv
c3JjL29yZy93ZWJydGMvQ2FtZXJhMkNhcHR1cmVyVGVzdC5qYXZhCkBAIC0zMDIsNiArMzAyLDE0
IEBAIHB1YmxpYyBjbGFzcyBDYW1lcmEyQ2FwdHVyZXJUZXN0IHsKICAgICBmaXh0dXJlcy5zY2Fs
ZUNhbWVyYU91dHB1dCgpOwogICB9CiAKKyAgLy8gVGhpcyB0ZXN0IHRoYXQgZnJhbWVzIGZvcndh
cmRlZCB0byBhIHJlbmRlcmVyIGlzIGNyb3BwZWQgdG8gYSBuZXcgb3JpZW50YXRpb24gaWYKKyAg
Ly8gYWRhcHRPdXRwdXRGb3JtYXQgaXMgY2FsbGVkIGluIHN1Y2ggYSB3YXkuIFRoaXMgdGVzdCBi
b3RoIEphdmEgYW5kIEMrKyBwYXJ0cyBvZiBvZiB0aGUgc3RhY2suCisgIEBUZXN0CisgIEBNZWRp
dW1UZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDcm9wQ2FtZXJhT3V0cHV0KCkgdGhyb3dzIEludGVy
cnVwdGVkRXhjZXB0aW9uIHsKKyAgICBmaXh0dXJlcy5jcm9wQ2FtZXJhT3V0cHV0KCk7CisgIH0K
KwogICAvLyBUaGlzIHRlc3QgdGhhdCBhbiBlcnJvciBpcyByZXBvcnRlZCBpZiB0aGUgY2FtZXJh
IGlzIGFscmVhZHkgb3BlbmVkCiAgIC8vIHdoZW4gQ2FtZXJhVmlkZW9DYXB0dXJlciBpcyBzdGFy
dGVkLgogICBAVGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJy
dGMvQ2FtZXJhVmlkZW9DYXB0dXJlclRlc3RGaXh0dXJlcy5qYXZhIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVz
dHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhVmlkZW9DYXB0dXJlclRlc3RGaXh0dXJlcy5qYXZhCmlu
ZGV4IGRkMGQ3ODBkZjA4YzcxOTYyNjAyNjFlZDE4MmQ5YjgzY2M5ZTViNmQuLmI0N2ZlZTA4ZDE1
Nzk2ZjIzNDk4OTYxMjNkY2EwYWM0M2MzYmVlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRl
c3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYVZpZGVvQ2FwdHVyZXJUZXN0Rml4dHVyZXMuamF2YQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmFWaWRlb0NhcHR1cmVy
VGVzdEZpeHR1cmVzLmphdmEKQEAgLTY4OCw2ICs2ODgsNDkgQEAgY2xhc3MgQ2FtZXJhVmlkZW9D
YXB0dXJlclRlc3RGaXh0dXJlcyB7CiAgICAgYXNzZXJ0VHJ1ZShnb3RFeHBlY3RlZFJlc29sdXRp
b24pOwogICB9CiAKKyAgcHVibGljIHZvaWQgY3JvcENhbWVyYU91dHB1dCgpIHRocm93cyBJbnRl
cnJ1cHRlZEV4Y2VwdGlvbiB7CisgICAgZmluYWwgQ2FwdHVyZXJJbnN0YW5jZSBjYXB0dXJlcklu
c3RhbmNlID0gY3JlYXRlQ2FwdHVyZXIoZmFsc2UgLyogaW5pdGlhbGl6ZSAqLyk7CisgICAgZmlu
YWwgVmlkZW9UcmFja1dpdGhSZW5kZXJlciB2aWRlb1RyYWNrV2l0aFJlbmRlcmVyID0KKyAgICAg
ICAgY3JlYXRlVmlkZW9UcmFja1dpdGhSZW5kZXJlcihjYXB0dXJlckluc3RhbmNlLmNhcHR1cmVy
KTsKKyAgICBhc3NlcnRUcnVlKHZpZGVvVHJhY2tXaXRoUmVuZGVyZXIucmVuZGVyZXJDYWxsYmFj
a3Mud2FpdEZvck5leHRGcmFtZVRvUmVuZGVyKCkgPiAwKTsKKworICAgIGZpbmFsIGludCBzdGFy
dFdpZHRoID0gdmlkZW9UcmFja1dpdGhSZW5kZXJlci5yZW5kZXJlckNhbGxiYWNrcy5mcmFtZVdp
ZHRoKCk7CisgICAgZmluYWwgaW50IHN0YXJ0SGVpZ2h0ID0gdmlkZW9UcmFja1dpdGhSZW5kZXJl
ci5yZW5kZXJlckNhbGxiYWNrcy5mcmFtZUhlaWdodCgpOworICAgIGZpbmFsIGludCBmcmFtZVJh
dGUgPSAzMDsKKyAgICBmaW5hbCBpbnQgY3JvcFdpZHRoOworICAgIGZpbmFsIGludCBjcm9wSGVp
Z2h0OworICAgIGlmIChzdGFydFdpZHRoID4gc3RhcnRIZWlnaHQpIHsKKyAgICAgIC8vIExhbmRz
Y2FwZSBpbnB1dCwgcmVxdWVzdCBwb3J0cmFpdCBvdXRwdXQuCisgICAgICBjcm9wV2lkdGggPSAz
NjA7CisgICAgICBjcm9wSGVpZ2h0ID0gNjQwOworICAgIH0gZWxzZSB7CisgICAgICAvLyBQb3J0
cmFpdCBpbnB1dCwgcmVxdWVzdCBsYW5kc2NhcGUgb3V0cHV0LgorICAgICAgY3JvcFdpZHRoID0g
NjQwOworICAgICAgY3JvcEhlaWdodCA9IDYzMDsKKyAgICB9CisKKyAgICAvLyBSZXF1ZXN0IGRp
ZmZlcmVudCBvdXRwdXQgb3JpZW50YXRpb24gdGhhbiBpbnB1dC4KKyAgICB2aWRlb1RyYWNrV2l0
aFJlbmRlcmVyLnNvdXJjZS5hZGFwdE91dHB1dEZvcm1hdCgKKyAgICAgICAgY3JvcFdpZHRoLCBj
cm9wSGVpZ2h0LCBjcm9wV2lkdGgsIGNyb3BIZWlnaHQsIGZyYW1lUmF0ZSk7CisKKyAgICBib29s
ZWFuIGdvdEV4cGVjdGVkT3JpZW50YXRpb24gPSBmYWxzZTsKKyAgICBpbnQgbnVtYmVyT2ZJbnNw
ZWN0ZWRGcmFtZXMgPSAwOworCisgICAgZG8geworICAgICAgdmlkZW9UcmFja1dpdGhSZW5kZXJl
ci5yZW5kZXJlckNhbGxiYWNrcy53YWl0Rm9yTmV4dEZyYW1lVG9SZW5kZXIoKTsKKyAgICAgICsr
bnVtYmVyT2ZJbnNwZWN0ZWRGcmFtZXM7CisKKyAgICAgIGdvdEV4cGVjdGVkT3JpZW50YXRpb24g
PSAoY3JvcFdpZHRoID4gY3JvcEhlaWdodCkKKyAgICAgICAgICA9PSAodmlkZW9UcmFja1dpdGhS
ZW5kZXJlci5yZW5kZXJlckNhbGxiYWNrcy5mcmFtZVdpZHRoKCkKKyAgICAgICAgICAgICAgICAg
PiB2aWRlb1RyYWNrV2l0aFJlbmRlcmVyLnJlbmRlcmVyQ2FsbGJhY2tzLmZyYW1lSGVpZ2h0KCkp
OworICAgIH0gd2hpbGUgKCFnb3RFeHBlY3RlZE9yaWVudGF0aW9uICYmIG51bWJlck9mSW5zcGVj
dGVkRnJhbWVzIDwgMzApOworCisgICAgZGlzcG9zZUNhcHR1cmVyKGNhcHR1cmVySW5zdGFuY2Up
OworICAgIGRpc3Bvc2VWaWRlb1RyYWNrV2l0aFJlbmRlcmVyKHZpZGVvVHJhY2tXaXRoUmVuZGVy
ZXIpOworCisgICAgYXNzZXJ0VHJ1ZShnb3RFeHBlY3RlZE9yaWVudGF0aW9uKTsKKyAgfQorCiAg
IHB1YmxpYyB2b2lkIHN0YXJ0V2hpbGVDYW1lcmFJc0FscmVhZHlPcGVuKCkgdGhyb3dzIEludGVy
cnVwdGVkRXhjZXB0aW9uIHsKICAgICBmaW5hbCBTdHJpbmcgY2FtZXJhTmFtZSA9IHRlc3RPYmpl
Y3RGYWN0b3J5LmdldE5hbWVPZkJhY2tGYWNpbmdEZXZpY2UoKTsKICAgICAvLyBBdCB0aGlzIHBv
aW50IGNhbWVyYSBpcyBub3QgYWN0dWFsbHkgb3BlbmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0
aW9udGVzdHMvc3JjL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25UZXN0LmphdmEgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50
YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvblRlc3QuamF2YQppbmRleCA3
ZDBlZGM1OThlNmM2NjhjOTBiNGRiMjI1OTE2M2I2MTljNzZkNDUxLi4yMDYzMTk5ZTcyZGVhODUw
NzMyNjkwOGU2NWFjYmYyN2UyNWIyYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9z
cmMvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvblRlc3QuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250
ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvblRlc3QuamF2YQpAQCAtMTEsNiArMTEs
NyBAQAogcGFja2FnZSBvcmcud2VicnRjOwogCiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3Nl
cnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE5v
dEVxdWFsczsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRGYWxzZTsKIGlt
cG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3ROdWxsOwogaW1wb3J0IHN0YXRp
YyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE51bGw7CkBAIC00NCw2ICs0NSw3IEBAIGltcG9ydCBv
cmcuanVuaXQucnVubmVyLlJ1bldpdGg7CiBpbXBvcnQgb3JnLndlYnJ0Yy5NZXRyaWNzLkhpc3Rv
Z3JhbUluZm87CiBpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbi5JY2VDb25uZWN0aW9u
U3RhdGU7CiBpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbi5JY2VHYXRoZXJpbmdTdGF0
ZTsKK2ltcG9ydCBvcmcud2VicnRjLlBlZXJDb25uZWN0aW9uLlBlZXJDb25uZWN0aW9uU3RhdGU7
CiBpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbi5TaWduYWxpbmdTdGF0ZTsKIAogLyoq
IEVuZC10by1lbmQgdGVzdHMgZm9yIFBlZXJDb25uZWN0aW9uLmphdmEuICovCkBAIC03Myw2ICs3
NSw3IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3QgewogICAgIHByaXZhdGUgaW50
IGV4cGVjdGVkVHJhY2tzQWRkZWQ7CiAgICAgcHJpdmF0ZSBRdWV1ZTxTaWduYWxpbmdTdGF0ZT4g
ZXhwZWN0ZWRTaWduYWxpbmdDaGFuZ2VzID0gbmV3IEFycmF5RGVxdWU8PigpOwogICAgIHByaXZh
dGUgUXVldWU8SWNlQ29ubmVjdGlvblN0YXRlPiBleHBlY3RlZEljZUNvbm5lY3Rpb25DaGFuZ2Vz
ID0gbmV3IEFycmF5RGVxdWU8PigpOworICAgIHByaXZhdGUgUXVldWU8UGVlckNvbm5lY3Rpb25T
dGF0ZT4gZXhwZWN0ZWRDb25uZWN0aW9uQ2hhbmdlcyA9IG5ldyBBcnJheURlcXVlPD4oKTsKICAg
ICBwcml2YXRlIFF1ZXVlPEljZUdhdGhlcmluZ1N0YXRlPiBleHBlY3RlZEljZUdhdGhlcmluZ0No
YW5nZXMgPSBuZXcgQXJyYXlEZXF1ZTw+KCk7CiAgICAgcHJpdmF0ZSBRdWV1ZTxTdHJpbmc+IGV4
cGVjdGVkQWRkU3RyZWFtTGFiZWxzID0gbmV3IEFycmF5RGVxdWU8PigpOwogICAgIHByaXZhdGUg
UXVldWU8U3RyaW5nPiBleHBlY3RlZFJlbW92ZVN0cmVhbUxhYmVscyA9IG5ldyBBcnJheURlcXVl
PD4oKTsKQEAgLTE4NywxMSArMTkwLDI5IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvblRl
c3QgewogICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkSWNlQ29ubmVjdGlvbkNoYW5nZXMucmVt
b3ZlKCksIG5ld1N0YXRlKTsKICAgICB9CiAKKyAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84
NDkxKTogUmVtb3ZlIE5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2sgc3VwcHJlc3Npb24uCisgICAg
QFN1cHByZXNzV2FybmluZ3MoIk5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2siKQorICAgIHB1Ymxp
YyBzeW5jaHJvbml6ZWQgdm9pZCBleHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9u
U3RhdGUgbmV3U3RhdGUpIHsKKyAgICAgIGV4cGVjdGVkQ29ubmVjdGlvbkNoYW5nZXMuYWRkKG5l
d1N0YXRlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICAvLyBUT0RPKGJ1Z3Mud2VicnRj
Lm9yZy84NDkxKTogUmVtb3ZlIE5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2sgc3VwcHJlc3Npb24u
CisgICAgQFN1cHByZXNzV2FybmluZ3MoIk5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2siKQorICAg
IHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBvbkNvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rp
b25TdGF0ZSBuZXdTdGF0ZSkgeworICAgICAgaWYgKGV4cGVjdGVkQ29ubmVjdGlvbkNoYW5nZXMu
aXNFbXB0eSgpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuYW1lICsgIiBnb3QgYW4g
dW5leHBlY3RlZCBEVExTIGNvbm5lY3Rpb24gY2hhbmdlICIgKyBuZXdTdGF0ZSk7CisgICAgICAg
IHJldHVybjsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkQ29ubmVjdGlv
bkNoYW5nZXMucmVtb3ZlKCksIG5ld1N0YXRlKTsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAg
ICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NDkxKTogUmVtb3ZlIE5vU3luY2hyb25pemVkTWV0
aG9kQ2hlY2sgc3VwcHJlc3Npb24uCiAgICAgQFN1cHByZXNzV2FybmluZ3MoIk5vU3luY2hyb25p
emVkTWV0aG9kQ2hlY2siKQogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBvbkljZUNvbm5l
Y3Rpb25SZWNlaXZpbmdDaGFuZ2UoYm9vbGVhbiByZWNlaXZpbmcpIHsKLSAgICAgIFN5c3RlbS5v
dXQucHJpbnRsbihuYW1lICsgIkdvdCBhbiBJQ0UgY29ubmVjdGlvbiByZWNlaXZpbmcgY2hhbmdl
ICIgKyByZWNlaXZpbmcpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5hbWUgKyAiIGdvdCBh
biBJQ0UgY29ubmVjdGlvbiByZWNlaXZpbmcgY2hhbmdlICIgKyByZWNlaXZpbmcpOwogICAgIH0K
IAogICAgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzg0OTEpOiBSZW1vdmUgTm9TeW5jaHJvbml6
ZWRNZXRob2RDaGVjayBzdXBwcmVzc2lvbi4KQEAgLTY2Myw2ICs2ODQsNDUgQEAgcHVibGljIGNs
YXNzIFBlZXJDb25uZWN0aW9uVGVzdCB7CiAgICAgYXNzZXJ0Tm90TnVsbChvZmZlcmluZ1BDKTsK
ICAgfQogCisgIEBUZXN0CisgIEBTbWFsbFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdENyZWF0aW9u
V2l0aENlcnRpZmljYXRlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgUGVlckNvbm5lY3Rpb25G
YWN0b3J5IGZhY3RvcnkgPSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkuYnVpbGRlcigpLmNyZWF0ZVBl
ZXJDb25uZWN0aW9uRmFjdG9yeSgpOworICAgIFBlZXJDb25uZWN0aW9uLlJUQ0NvbmZpZ3VyYXRp
b24gY29uZmlnID0gbmV3IFBlZXJDb25uZWN0aW9uLlJUQ0NvbmZpZ3VyYXRpb24oQXJyYXlzLmFz
TGlzdCgpKTsKKworICAgIC8vIFRlc3QgY2VydGlmaWNhdGUuCisgICAgUnRjQ2VydGlmaWNhdGVQ
ZW0gb3JpZ2luYWxDZXJ0ID0gUnRjQ2VydGlmaWNhdGVQZW0uZ2VuZXJhdGVDZXJ0aWZpY2F0ZSgp
OworICAgIGNvbmZpZy5jZXJ0aWZpY2F0ZSA9IG9yaWdpbmFsQ2VydDsKKworICAgIE9ic2VydmVy
RXhwZWN0YXRpb25zIG9mZmVyaW5nRXhwZWN0YXRpb25zID0gbmV3IE9ic2VydmVyRXhwZWN0YXRp
b25zKCJQQ1Rlc3Q6b2ZmZXJlciIpOworICAgIFBlZXJDb25uZWN0aW9uIG9mZmVyaW5nUEMgPSBm
YWN0b3J5LmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZywgb2ZmZXJpbmdFeHBlY3RhdGlvbnMp
OworCisgICAgUnRjQ2VydGlmaWNhdGVQZW0gcmVzdG9yZWRDZXJ0ID0gb2ZmZXJpbmdQQy5nZXRD
ZXJ0aWZpY2F0ZSgpOworICAgIGFzc2VydEVxdWFscyhvcmlnaW5hbENlcnQucHJpdmF0ZUtleSwg
cmVzdG9yZWRDZXJ0LnByaXZhdGVLZXkpOworICAgIGFzc2VydEVxdWFscyhvcmlnaW5hbENlcnQu
Y2VydGlmaWNhdGUsIHJlc3RvcmVkQ2VydC5jZXJ0aWZpY2F0ZSk7CisgIH0KKworICBAVGVzdAor
ICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDcmVhdGlvbldpdGhDcnlwdG9PcHRpb25z
KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZhY3Rvcnkg
PSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkuYnVpbGRlcigpLmNyZWF0ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeSgpOworICAgIFBlZXJDb25uZWN0aW9uLlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnID0gbmV3
IFBlZXJDb25uZWN0aW9uLlJUQ0NvbmZpZ3VyYXRpb24oQXJyYXlzLmFzTGlzdCgpKTsKKworICAg
IGFzc2VydE51bGwoY29uZmlnLmNyeXB0b09wdGlvbnMpOworCisgICAgQ3J5cHRvT3B0aW9ucyBj
cnlwdG9PcHRpb25zID0gQ3J5cHRvT3B0aW9ucy5idWlsZGVyKCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLnNldEVuYWJsZUdjbUNyeXB0b1N1aXRlcyh0cnVlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0RW5hYmxlQWVzMTI4U2hhMV8z
MkNyeXB0b0NpcGhlcih0cnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAuc2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucyh0cnVlKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0UmVxdWlyZUZyYW1lRW5jcnlwdGlvbih0
cnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlQ3J5cHRv
T3B0aW9ucygpOworICAgIGNvbmZpZy5jcnlwdG9PcHRpb25zID0gY3J5cHRvT3B0aW9uczsKKwor
ICAgIE9ic2VydmVyRXhwZWN0YXRpb25zIG9mZmVyaW5nRXhwZWN0YXRpb25zID0gbmV3IE9ic2Vy
dmVyRXhwZWN0YXRpb25zKCJQQ1Rlc3Q6b2ZmZXJlciIpOworICAgIFBlZXJDb25uZWN0aW9uIG9m
ZmVyaW5nUEMgPSBmYWN0b3J5LmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZywgb2ZmZXJpbmdF
eHBlY3RhdGlvbnMpOworICAgIGFzc2VydE5vdE51bGwob2ZmZXJpbmdQQyk7CisgIH0KKwogICBA
VGVzdAogICBATWVkaXVtVGVzdAogICBwdWJsaWMgdm9pZCB0ZXN0Q29tcGxldGVTZXNzaW9uKCkg
dGhyb3dzIEV4Y2VwdGlvbiB7CkBAIC03NTksMTIgKzgxOSwxNCBAQCBwdWJsaWMgY2xhc3MgUGVl
ckNvbm5lY3Rpb25UZXN0IHsKIAogICAgIHNkcExhdGNoID0gbmV3IFNkcE9ic2VydmVyTGF0Y2go
KTsKICAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0U2lnbmFsaW5nQ2hhbmdlKFNpZ25h
bGluZ1N0YXRlLlNUQUJMRSk7CisgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5l
Y3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNUSU5HKTsKICAgICBhbnN3ZXJp
bmdQQy5zZXRMb2NhbERlc2NyaXB0aW9uKHNkcExhdGNoLCBhbnN3ZXJTZHApOwogICAgIGFzc2Vy
dFRydWUoc2RwTGF0Y2guYXdhaXQoKSk7CiAgICAgYXNzZXJ0TnVsbChzZHBMYXRjaC5nZXRTZHAo
KSk7CiAKICAgICBzZHBMYXRjaCA9IG5ldyBTZHBPYnNlcnZlckxhdGNoKCk7CiAgICAgb2ZmZXJp
bmdFeHBlY3RhdGlvbnMuZXhwZWN0U2lnbmFsaW5nQ2hhbmdlKFNpZ25hbGluZ1N0YXRlLkhBVkVf
TE9DQUxfT0ZGRVIpOworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5lY3Rpb25D
aGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNUSU5HKTsKICAgICBvZmZlcmluZ1BDLnNl
dExvY2FsRGVzY3JpcHRpb24oc2RwTGF0Y2gsIG9mZmVyU2RwKTsKICAgICBhc3NlcnRUcnVlKHNk
cExhdGNoLmF3YWl0KCkpOwogICAgIGFzc2VydE51bGwoc2RwTGF0Y2guZ2V0U2RwKCkpOwpAQCAt
Nzc0LDYgKzgzNiw5IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3QgewogCiAgICAg
b2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0
aW9uU3RhdGUuQ0hFQ0tJTkcpOwogICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUNv
bm5lY3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCk7CisgICAgb2ZmZXJp
bmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRl
Lk5FVyk7CisgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQ
ZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RJTkcpOworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25z
LmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpOwog
ICAgIC8vIFRPRE8oYmVtYXNjKTogdW5jb21tZW50IG9uY2UgZGVsaXZlcnkgb2YgSUNFQ29tcGxl
dGVkIGlzIHJlbGlhYmxlCiAgICAgLy8gKGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Avd2VicnRj
L2lzc3Vlcy9kZXRhaWw/aWQ9MzAyMSkuCiAgICAgLy8KQEAgLTc4MSw2ICs4NDYsNyBAQCBwdWJs
aWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKICAgICAvLyAgICAgSWNlQ29ubmVjdGlvblN0
YXRlLkNPTVBMRVRFRCk7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUNvbm5l
Y3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNIRUNLSU5HKTsKICAgICBhbnN3ZXJpbmdF
eHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUu
Q09OTkVDVEVEKTsKKyAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNo
YW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCk7CiAKICAgICBvZmZlcmluZ1BDLnNl
dFJlbW90ZURlc2NyaXB0aW9uKHNkcExhdGNoLCBhbnN3ZXJTZHApOwogICAgIGFzc2VydFRydWUo
c2RwTGF0Y2guYXdhaXQoKSk7CkBAIC05ODksMTIgKzEwNTUsMTQgQEAgcHVibGljIGNsYXNzIFBl
ZXJDb25uZWN0aW9uVGVzdCB7CiAKICAgICBzZHBMYXRjaCA9IG5ldyBTZHBPYnNlcnZlckxhdGNo
KCk7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdFNpZ25hbGluZ0NoYW5nZShTaWdu
YWxpbmdTdGF0ZS5TVEFCTEUpOworICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25u
ZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7CiAgICAgYW5zd2Vy
aW5nUEMuc2V0TG9jYWxEZXNjcmlwdGlvbihzZHBMYXRjaCwgYW5zd2VyU2RwKTsKICAgICBhc3Nl
cnRUcnVlKHNkcExhdGNoLmF3YWl0KCkpOwogICAgIGFzc2VydE51bGwoc2RwTGF0Y2guZ2V0U2Rw
KCkpOwogCiAgICAgc2RwTGF0Y2ggPSBuZXcgU2RwT2JzZXJ2ZXJMYXRjaCgpOwogICAgIG9mZmVy
aW5nRXhwZWN0YXRpb25zLmV4cGVjdFNpZ25hbGluZ0NoYW5nZShTaWduYWxpbmdTdGF0ZS5IQVZF
X0xPQ0FMX09GRkVSKTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9u
Q2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7CiAgICAgb2ZmZXJpbmdQQy5z
ZXRMb2NhbERlc2NyaXB0aW9uKHNkcExhdGNoLCBvZmZlclNkcCk7CiAgICAgYXNzZXJ0VHJ1ZShz
ZHBMYXRjaC5hd2FpdCgpKTsKICAgICBhc3NlcnROdWxsKHNkcExhdGNoLmdldFNkcCgpKTsKQEAg
LTEwMDMsMTAgKzEwNzEsMTQgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uVGVzdCB7CiAK
ICAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25uZWN0aW9uQ2hhbmdlKEljZUNv
bm5lY3Rpb25TdGF0ZS5DSEVDS0lORyk7CiAgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0
SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKTsKKyAgICBv
ZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9u
U3RhdGUuTkVXKTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hh
bmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7CisgICAgb2ZmZXJpbmdFeHBlY3Rh
dGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RF
RCk7CiAgICAgLy8gVE9ETyhiZW1hc2MpOiB1bmNvbW1lbnQgb25jZSBkZWxpdmVyeSBvZiBJQ0VD
b21wbGV0ZWQgaXMgcmVsaWFibGUKICAgICAvLyAoaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC93
ZWJydGMvaXNzdWVzL2RldGFpbD9pZD0zMDIxKS4KICAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMu
ZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUuQ0hFQ0tJTkcpOwog
ICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25uZWN0aW9uQ2hhbmdlKEljZUNv
bm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpOworICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBl
Y3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKTsKIAogICAg
IG9mZmVyaW5nUEMuc2V0UmVtb3RlRGVzY3JpcHRpb24oc2RwTGF0Y2gsIGFuc3dlclNkcCk7CiAg
ICAgYXNzZXJ0VHJ1ZShzZHBMYXRjaC5hd2FpdCgpKTsKQEAgLTExMzksNiArMTIxMSw3IEBAIHB1
YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3QgewogICAgIG9mZmVyaW5nRXhwZWN0YXRpb25z
LmV4cGVjdFNpZ25hbGluZ0NoYW5nZShTaWduYWxpbmdTdGF0ZS5IQVZFX0xPQ0FMX09GRkVSKTsK
ICAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDYW5kaWRhdGVzKDIpOwogICAgIG9m
ZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUdhdGhlcmluZ0NoYW5nZShJY2VHYXRoZXJpbmdT
dGF0ZS5DT01QTEVURSk7CisgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlv
bkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RJTkcpOwogICAgIG9mZmVyaW5nUEMu
c2V0TG9jYWxEZXNjcmlwdGlvbihzZHBMYXRjaCwgb2ZmZXJTZHApOwogICAgIGFzc2VydFRydWUo
c2RwTGF0Y2guYXdhaXQoKSk7CiAgICAgYXNzZXJ0TnVsbChzZHBMYXRjaC5nZXRTZHAoKSk7CkBA
IC0xMTcwLDYgKzEyNDMsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKICAg
ICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0U2lnbmFsaW5nQ2hhbmdlKFNpZ25hbGluZ1N0
YXRlLlNUQUJMRSk7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUNhbmRpZGF0
ZXMoMik7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUdhdGhlcmluZ0NoYW5n
ZShJY2VHYXRoZXJpbmdTdGF0ZS5DT01QTEVURSk7CisgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25z
LmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNUSU5HKTsK
ICAgICBhbnN3ZXJpbmdQQy5zZXRMb2NhbERlc2NyaXB0aW9uKHNkcExhdGNoLCBhbnN3ZXJTZHAp
OwogICAgIGFzc2VydFRydWUoc2RwTGF0Y2guYXdhaXQoKSk7CiAgICAgYXNzZXJ0TnVsbChzZHBM
YXRjaC5nZXRTZHAoKSk7CkBAIC0xMTgxLDYgKzEyNTUsOSBAQCBwdWJsaWMgY2xhc3MgUGVlckNv
bm5lY3Rpb25UZXN0IHsKIAogICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUNvbm5l
Y3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNIRUNLSU5HKTsKICAgICBvZmZlcmluZ0V4
cGVjdGF0aW9ucy5leHBlY3RJY2VDb25uZWN0aW9uQ2hhbmdlKEljZUNvbm5lY3Rpb25TdGF0ZS5D
T05ORUNURUQpOworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFu
Z2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5ORVcpOworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4
cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNUSU5HKTsKKyAg
ICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0
aW9uU3RhdGUuQ09OTkVDVEVEKTsKICAgICAvLyBUT0RPKGJlbWFzYyk6IHVuY29tbWVudCBvbmNl
IGRlbGl2ZXJ5IG9mIElDRUNvbXBsZXRlZCBpcyByZWxpYWJsZQogICAgIC8vIChodHRwczovL2Nv
ZGUuZ29vZ2xlLmNvbS9wL3dlYnJ0Yy9pc3N1ZXMvZGV0YWlsP2lkPTMwMjEpLgogICAgIC8vCkBA
IC0xMTg4LDYgKzEyNjUsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKICAg
ICAvLyAgICAgSWNlQ29ubmVjdGlvblN0YXRlLkNPTVBMRVRFRCk7CiAgICAgYW5zd2VyaW5nRXhw
ZWN0YXRpb25zLmV4cGVjdEljZUNvbm5lY3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNI
RUNLSU5HKTsKICAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNo
YW5nZShJY2VDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKTsKKyAgICBhbnN3ZXJpbmdFeHBlY3Rh
dGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RF
RCk7CiAKICAgICBvZmZlcmluZ1BDLnNldFJlbW90ZURlc2NyaXB0aW9uKHNkcExhdGNoLCBhbnN3
ZXJTZHApOwogICAgIGFzc2VydFRydWUoc2RwTGF0Y2guYXdhaXQoKSk7CkBAIC0xNTczLDYgKzE2
NTEsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKICAgICBhc3NlcnRUcnVl
KGV4cGVjdGF0aW9ucy53YWl0Rm9yQWxsRXhwZWN0YXRpb25zVG9CZVNhdGlzZmllZChUSU1FT1VU
X1NFQ09ORFMpKTsKIAogICAgIGV4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25uZWN0aW9uQ2hhbmdl
KEljZUNvbm5lY3Rpb25TdGF0ZS5DTE9TRUQpOworICAgIGV4cGVjdGF0aW9ucy5leHBlY3RDb25u
ZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ0xPU0VEKTsKICAgICBleHBlY3RhdGlv
bnMuZXhwZWN0U2lnbmFsaW5nQ2hhbmdlKFNpZ25hbGluZ1N0YXRlLkNMT1NFRCk7CiAgICAgcGMu
Y2xvc2UoKTsKICAgICBhc3NlcnRUcnVlKGV4cGVjdGF0aW9ucy53YWl0Rm9yQWxsRXhwZWN0YXRp
b25zVG9CZVNhdGlzZmllZChUSU1FT1VUX1NFQ09ORFMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRh
dGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1J0Y0NlcnRpZmljYXRlUGVtVGVzdC5qYXZhIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1
bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvUnRjQ2VydGlmaWNhdGVQZW1UZXN0LmphdmEK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDBmMjk1Yzk0MmY1N2ZmNGY4YmQzYmFkYzY3YzEyODdkOTEzMGRiNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1J0Y0NlcnRp
ZmljYXRlUGVtVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
K3BhY2thZ2Ugb3JnLndlYnJ0YzsKKworaW1wb3J0IHN0YXRpYyBjb20uZ29vZ2xlLmNvbW1vbi50
cnV0aC5UcnV0aC5hc3NlcnRUaGF0OworCitpbXBvcnQgYW5kcm9pZC5zdXBwb3J0LnRlc3QuZmls
dGVycy5TbWFsbFRlc3Q7CitpbXBvcnQgb3JnLmNocm9taXVtLmJhc2UudGVzdC5CYXNlSlVuaXQ0
Q2xhc3NSdW5uZXI7CitpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKK2ltcG9ydCBvcmcuanVuaXQu
VGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLndlYnJ0
Yy5QZWVyQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcud2VicnRjLlJ0Y0NlcnRpZmljYXRlUGVtOwor
CisvKiogVGVzdHMgZm9yIFJ0Y0NlcnRpZmljYXRlUGVtLmphdmEuICovCitAUnVuV2l0aChCYXNl
SlVuaXQ0Q2xhc3NSdW5uZXIuY2xhc3MpCitwdWJsaWMgY2xhc3MgUnRjQ2VydGlmaWNhdGVQZW1U
ZXN0IHsKKyAgQEJlZm9yZQorICBwdWJsaWMgdm9pZCBzZXRVcCgpIHsKKyAgICBTeXN0ZW0ubG9h
ZExpYnJhcnkoVGVzdENvbnN0YW50cy5OQVRJVkVfTElCUkFSWSk7CisgIH0KKworICBAVGVzdAor
ICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDb25zdHJ1Y3RvcigpIHsKKyAgICBSdGND
ZXJ0aWZpY2F0ZVBlbSBvcmlnaW5hbCA9IFJ0Y0NlcnRpZmljYXRlUGVtLmdlbmVyYXRlQ2VydGlm
aWNhdGUoKTsKKyAgICBSdGNDZXJ0aWZpY2F0ZVBlbSByZWNyZWF0ZWQgPSBuZXcgUnRjQ2VydGlm
aWNhdGVQZW0ob3JpZ2luYWwucHJpdmF0ZUtleSwgb3JpZ2luYWwuY2VydGlmaWNhdGUpOworICAg
IGFzc2VydFRoYXQob3JpZ2luYWwucHJpdmF0ZUtleSkuaXNFcXVhbFRvKHJlY3JlYXRlZC5wcml2
YXRlS2V5KTsKKyAgICBhc3NlcnRUaGF0KG9yaWdpbmFsLmNlcnRpZmljYXRlKS5pc0VxdWFsVG8o
cmVjcmVhdGVkLmNlcnRpZmljYXRlKTsKKyAgfQorCisgIEBUZXN0CisgIEBTbWFsbFRlc3QKKyAg
cHVibGljIHZvaWQgdGVzdEdlbmVyYXRlQ2VydGlmaWNhdGVEZWZhdWx0cygpIHsKKyAgICBSdGND
ZXJ0aWZpY2F0ZVBlbSBydGNDZXJ0aWZpY2F0ZSA9IFJ0Y0NlcnRpZmljYXRlUGVtLmdlbmVyYXRl
Q2VydGlmaWNhdGUoKTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRpZmljYXRlLnByaXZhdGVLZXkp
LmlzTm90RW1wdHkoKTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRpZmljYXRlLmNlcnRpZmljYXRl
KS5pc05vdEVtcHR5KCk7CisgIH0KKworICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2
b2lkIHRlc3RHZW5lcmF0ZUNlcnRpZmljYXRlQ3VzdG9tS2V5VHlwZURlZmF1bHRFeHBpcmVzKCkg
eworICAgIFJ0Y0NlcnRpZmljYXRlUGVtIHJ0Y0NlcnRpZmljYXRlID0KKyAgICAgICAgUnRjQ2Vy
dGlmaWNhdGVQZW0uZ2VuZXJhdGVDZXJ0aWZpY2F0ZShQZWVyQ29ubmVjdGlvbi5LZXlUeXBlLlJT
QSk7CisgICAgYXNzZXJ0VGhhdChydGNDZXJ0aWZpY2F0ZS5wcml2YXRlS2V5KS5pc05vdEVtcHR5
KCk7CisgICAgYXNzZXJ0VGhhdChydGNDZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZSkuaXNOb3RFbXB0
eSgpOworICB9CisKKyAgQFRlc3QKKyAgQFNtYWxsVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0R2Vu
ZXJhdGVDZXJ0aWZpY2F0ZUN1c3RvbUV4cGlyZXNEZWZhdWx0S2V5VHlwZSgpIHsKKyAgICBSdGND
ZXJ0aWZpY2F0ZVBlbSBydGNDZXJ0aWZpY2F0ZSA9IFJ0Y0NlcnRpZmljYXRlUGVtLmdlbmVyYXRl
Q2VydGlmaWNhdGUoNjAgKiA2MCAqIDI0KTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRpZmljYXRl
LnByaXZhdGVLZXkpLmlzTm90RW1wdHkoKTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRpZmljYXRl
LmNlcnRpZmljYXRlKS5pc05vdEVtcHR5KCk7CisgIH0KKworICBAVGVzdAorICBAU21hbGxUZXN0
CisgIHB1YmxpYyB2b2lkIHRlc3RHZW5lcmF0ZUNlcnRpZmljYXRlQ3VzdG9tS2V5VHlwZUFuZEV4
cGlyZXMoKSB7CisgICAgUnRjQ2VydGlmaWNhdGVQZW0gcnRjQ2VydGlmaWNhdGUgPQorICAgICAg
ICBSdGNDZXJ0aWZpY2F0ZVBlbS5nZW5lcmF0ZUNlcnRpZmljYXRlKFBlZXJDb25uZWN0aW9uLktl
eVR5cGUuUlNBLCA2MCAqIDYwICogMjQpOworICAgIGFzc2VydFRoYXQocnRjQ2VydGlmaWNhdGUu
cHJpdmF0ZUtleSkuaXNOb3RFbXB0eSgpOworICAgIGFzc2VydFRoYXQocnRjQ2VydGlmaWNhdGUu
Y2VydGlmaWNhdGUpLmlzTm90RW1wdHkoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0
aW9udGVzdHMvc3JjL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25lclRlc3QuamF2YSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1l
bnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1RpbWVzdGFtcEFsaWduZXJUZXN0LmphdmEKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWQ5NDRiNTdmOWQ2NTRkODlkYjAwN2U0ODQwN2E2MTgwYzY3YjRhNgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1RpbWVzdGFtcEFs
aWduZXJUZXN0LmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworcGFj
a2FnZSBvcmcud2VicnRjOworCitpbXBvcnQgYW5kcm9pZC5zdXBwb3J0LnRlc3QuZmlsdGVycy5T
bWFsbFRlc3Q7CitpbXBvcnQgb3JnLmNocm9taXVtLmJhc2UudGVzdC5wYXJhbXMuQmFzZUpVbml0
NFJ1bm5lckRlbGVnYXRlOworaW1wb3J0IG9yZy5jaHJvbWl1bS5iYXNlLnRlc3QucGFyYW1zLlBh
cmFtZXRlckFubm90YXRpb25zLlVzZVJ1bm5lckRlbGVnYXRlOworaW1wb3J0IG9yZy5qdW5pdC5C
ZWZvcmVDbGFzczsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworQFVzZVJ1bm5lckRlbGVnYXRl
KEJhc2VKVW5pdDRSdW5uZXJEZWxlZ2F0ZS5jbGFzcykKK3B1YmxpYyBjbGFzcyBUaW1lc3RhbXBB
bGlnbmVyVGVzdCB7CisgIEBCZWZvcmVDbGFzcworICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0VXAo
KSB7CisgICAgU3lzdGVtLmxvYWRMaWJyYXJ5KFRlc3RDb25zdGFudHMuTkFUSVZFX0xJQlJBUlkp
OworICB9CisKKyAgQFRlc3QKKyAgQFNtYWxsVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0R2V0UnRj
VGltZU5hbm9zKCkgeworICAgIFRpbWVzdGFtcEFsaWduZXIuZ2V0UnRjVGltZU5hbm9zKCk7Cisg
IH0KKworICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3REaXNwb3NlKCkg
eworICAgIGZpbmFsIFRpbWVzdGFtcEFsaWduZXIgdGltZXN0YW1wQWxpZ25lciA9IG5ldyBUaW1l
c3RhbXBBbGlnbmVyKCk7CisgICAgdGltZXN0YW1wQWxpZ25lci5kaXNwb3NlKCk7CisgIH0KKwor
ICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RUcmFuc2xhdGVUaW1lc3Rh
bXAoKSB7CisgICAgZmluYWwgVGltZXN0YW1wQWxpZ25lciB0aW1lc3RhbXBBbGlnbmVyID0gbmV3
IFRpbWVzdGFtcEFsaWduZXIoKTsKKyAgICB0aW1lc3RhbXBBbGlnbmVyLnRyYW5zbGF0ZVRpbWVz
dGFtcCgvKiBjYW1lcmFUaW1lTnM9ICovIDEyMyk7CisgICAgdGltZXN0YW1wQWxpZ25lci5kaXNw
b3NlKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV9hcGkvdmlkZW8vdmlkZW9zb3VyY2UuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9u
YXRpdmVfYXBpL3ZpZGVvL3ZpZGVvc291cmNlLmNjCmluZGV4IDRjMzAyZGEwZWQ5ZWIwYjM4YzMx
MWYwMTNmNjQ0M2U0ZmY2OTIyMzYuLmFhZTFkZTdmZjAzNDJhMGViNWNjYzcxNWRjN2ZhZWE3YzRl
NGQ5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL25hdGl2ZV9hcGkvdmlkZW8vdmlkZW9zb3VyY2UuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZl
X2FwaS92aWRlby92aWRlb3NvdXJjZS5jYwpAQCAtMjUsMTIgKzI1LDE0IEBAIGNsYXNzIEphdmFW
aWRlb1RyYWNrU291cmNlSW1wbCA6IHB1YmxpYyBKYXZhVmlkZW9UcmFja1NvdXJjZUludGVyZmFj
ZSB7CiAgcHVibGljOgogICBKYXZhVmlkZW9UcmFja1NvdXJjZUltcGwoSk5JRW52KiBlbnYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfc2NyZWVuY2FzdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfc2NyZWVuY2FzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgYWxpZ25fdGltZXN0YW1wcykKICAgICAgIDogYW5kcm9pZF92aWRlb190
cmFja19zb3VyY2VfKAogICAgICAgICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxqbmk6
OkFuZHJvaWRWaWRlb1RyYWNrU291cmNlPigKICAgICAgICAgICAgICAgICBzaWduYWxpbmdfdGhy
ZWFkLAogICAgICAgICAgICAgICAgIGVudiwKLSAgICAgICAgICAgICAgICBpc19zY3JlZW5jYXN0
KSksCisgICAgICAgICAgICAgICAgaXNfc2NyZWVuY2FzdCwKKyAgICAgICAgICAgICAgICBhbGln
bl90aW1lc3RhbXBzKSksCiAgICAgICAgIG5hdGl2ZV9jYXB0dXJlcl9vYnNlcnZlcl8oam5pOjpD
cmVhdGVKYXZhTmF0aXZlQ2FwdHVyZXJPYnNlcnZlcigKICAgICAgICAgICAgIGVudiwKICAgICAg
ICAgICAgIGFuZHJvaWRfdmlkZW9fdHJhY2tfc291cmNlXykpIHt9CkBAIC05Niw5ICs5OCwxMCBA
QCBjbGFzcyBKYXZhVmlkZW9UcmFja1NvdXJjZUltcGwgOiBwdWJsaWMgSmF2YVZpZGVvVHJhY2tT
b3VyY2VJbnRlcmZhY2UgewogcnRjOjpzY29wZWRfcmVmcHRyPEphdmFWaWRlb1RyYWNrU291cmNl
SW50ZXJmYWNlPiBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCiAgICAgSk5JRW52KiBqbmksCiAgICAg
cnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgYm9vbCBpc19zY3JlZW5jYXN0KSB7
CisgICAgYm9vbCBpc19zY3JlZW5jYXN0LAorICAgIGJvb2wgYWxpZ25fdGltZXN0YW1wcykgewog
ICByZXR1cm4gbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxKYXZhVmlkZW9UcmFja1NvdXJjZUlt
cGw+KAotICAgICAgam5pLCBzaWduYWxpbmdfdGhyZWFkLCBpc19zY3JlZW5jYXN0KTsKKyAgICAg
IGpuaSwgc2lnbmFsaW5nX3RocmVhZCwgaXNfc2NyZWVuY2FzdCwgYWxpZ25fdGltZXN0YW1wcyk7
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV9hcGkvdmlkZW8v
dmlkZW9zb3VyY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL25hdGl2ZV9hcGkvdmlkZW8vdmlkZW9zb3VyY2UuaAppbmRleCAwYzRmMzMz
NDJlYmFkNmQ0YjU5NzlkYWYzY2FlZTk3NjAzYjA2Zjg3Li43NWViZGJjZTMwMjYzZTMwODU1NDA0
MTRmMTI4M2Y2MTAzNjFhMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfYXBpL3ZpZGVvL3ZpZGVvc291cmNl
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvbmF0aXZlX2FwaS92aWRlby92aWRlb3NvdXJjZS5oCkBAIC0xNCw2ICsxNCw3IEBACiAj
aW5jbHVkZSA8am5pLmg+CiAKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9uYXRp
dmVfYXBpL2puaS9zY29wZWRfamF2YV9yZWYuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0z
Miw3ICszMyw4IEBAIGNsYXNzIEphdmFWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlIDogcHVibGlj
IFZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2UgewogcnRjOjpzY29wZWRfcmVmcHRyPEphdmFWaWRl
b1RyYWNrU291cmNlSW50ZXJmYWNlPiBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCiAgICAgSk5JRW52
KiBlbnYsCiAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgYm9vbCBpc19z
Y3JlZW5jYXN0KTsKKyAgICBib29sIGlzX3NjcmVlbmNhc3QsCisgICAgYm9vbCBhbGlnbl90aW1l
c3RhbXBzKTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfdW5p
dHRlc3RzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfdW5pdHRl
c3RzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfdW5pdHRlc3QuY2MKaW5kZXggNWU0NjA1MmI5
MDA0ODE1NmJmMWMzZDY5OGEyNTEzNjg0ZGY4ZDM2OS4uOThkNTg1Mzg3YTA0ZDhiNjY0NjdmZTJl
YWNlZTQ2MGZkOTdiMmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0ZXN0cy9hdWRpb19kZXZpY2Uv
YXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVzdHMvYXVkaW9fZGV2aWNl
L2F1ZGlvX2RldmljZV91bml0dGVzdC5jYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvbW9ja19hdWRpb190cmFuc3BvcnQuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNl
Y3Rpb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2Zvcm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgpAQCAtMjUsNyArMjYsNiBAQAogI2luY2x1
ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9tb2R1bGUu
aCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL2F1ZGlvX2RldmljZS9vcGVuc2xlc19j
b21tb24uaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL2puaV9oZWxwZXJzLmgiCi0j
aW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oIgogI2luY2x1
ZGUgInRlc3QvZ21vY2suaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVz
dC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKQEAgLTM2NCw3ICszNjQsNyBAQCBjbGFzcyBNb2Nr
QXVkaW9UcmFuc3BvcnRBbmRyb2lkIDogcHVibGljIHRlc3Q6Ok1vY2tBdWRpb1RyYW5zcG9ydCB7
CiAKICAgLy8gU2V0IGRlZmF1bHQgYWN0aW9ucyBvZiB0aGUgbW9jayBvYmplY3QuIFdlIGFyZSBk
ZWxlZ2F0aW5nIHRvIGZha2UKICAgLy8gaW1wbGVtZW50YXRpb25zIChvZiBBdWRpb1N0cmVhbUlu
dGVyZmFjZSkgaGVyZS4KLSAgdm9pZCBIYW5kbGVDYWxsYmFja3MoRXZlbnRXcmFwcGVyKiB0ZXN0
X2lzX2RvbmUsCisgIHZvaWQgSGFuZGxlQ2FsbGJhY2tzKHJ0Yzo6RXZlbnQqIHRlc3RfaXNfZG9u
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9TdHJlYW1JbnRlcmZhY2UqIGF1ZGlvX3N0
cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bV9jYWxsYmFja3MpIHsKICAgICB0
ZXN0X2lzX2RvbmVfID0gdGVzdF9pc19kb25lOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGNsYXNzIE1v
Y2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQgOiBwdWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0
IHsKICAgYm9vbCByZWNfbW9kZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGVfICYga1JlY29yZGluZzsg
fQogCiAgcHJpdmF0ZToKLSAgRXZlbnRXcmFwcGVyKiB0ZXN0X2lzX2RvbmVfOworICBydGM6OkV2
ZW50KiB0ZXN0X2lzX2RvbmVfOwogICBzaXplX3QgbnVtX2NhbGxiYWNrc187CiAgIGludCB0eXBl
XzsKICAgc2l6ZV90IHBsYXlfY291bnRfOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIGNsYXNzIE1vY2tB
dWRpb1RyYW5zcG9ydEFuZHJvaWQgOiBwdWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0IHsK
IC8vIEF1ZGlvRGV2aWNlVGVzdCB0ZXN0IGZpeHR1cmUuCiBjbGFzcyBBdWRpb0RldmljZVRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICBwcm90ZWN0ZWQ6Ci0gIEF1ZGlvRGV2aWNlVGVz
dCgpIDogdGVzdF9pc19kb25lXyhFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSB7CisgIEF1ZGlvRGV2
aWNlVGVzdCgpIHsKICAgICAvLyBPbmUtdGltZSBpbml0aWFsaXphdGlvbiBvZiBKVk0gYW5kIGFw
cGxpY2F0aW9uIGNvbnRleHQuIEVuc3VyZXMgdGhhdCB3ZQogICAgIC8vIGNhbiBkbyBjYWxscyBi
ZXR3ZWVuIEMrKyBhbmQgSmF2YS4gSW5pdGlhbGl6ZXMgYm90aCBKYXZhIGFuZCBPcGVuU0wgRVMK
ICAgICAvLyBpbXBsZW1lbnRhdGlvbnMuCkBAIC02ODMsNyArNjgzLDcgQEAgY2xhc3MgQXVkaW9E
ZXZpY2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAKICAgSk5JRW52KiBqbmlfOwog
ICBzdGQ6OnVuaXF1ZV9wdHI8SmF2YVBhcmFtUmVmPGpvYmplY3Q+PiBjb250ZXh0XzsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gdGVzdF9pc19kb25lXzsKKyAgcnRjOjpFdmVudCB0
ZXN0X2lzX2RvbmVfOwogICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZXZpY2VNb2R1bGU+IGF1
ZGlvX2RldmljZV87CiAgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBhdWRpb19tYW5hZ2Vy
XzsKICAgQXVkaW9QYXJhbWV0ZXJzIG91dHB1dF9wYXJhbWV0ZXJzXzsKQEAgLTg4MCwxNCArODgw
LDE0IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0b3BSZWNvcmRpbmdSZXF1aXJlc0luaXRU
b1Jlc3RhcnQpIHsKIC8vIGF1ZGlvIHNhbXBsZXMgdG8gcGxheSBvdXQgdXNpbmcgdGhlIE5lZWRN
b3JlUGxheURhdGEgY2FsbGJhY2suCiBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBsYXlv
dXRWZXJpZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCBtb2NrKGtQ
bGF5b3V0KTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgbnVs
bHB0ciwga051bUNhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2Rv
bmVfLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKICAgRVhQRUNUX0NBTEwobW9jaywgTmVlZE1v
cmVQbGF5RGF0YShwbGF5b3V0X2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrQnl0ZXNQZXJTYW1wbGUsIHBsYXlvdXRfY2hhbm5l
bHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5b3V0X3NhbXBs
ZV9yYXRlKCksIE5vdE51bGwoKSwgXywgXywgXykpCiAgICAgICAuVGltZXMoQXRMZWFzdChrTnVt
Q2FsbGJhY2tzKSk7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+UmVnaXN0ZXJBdWRp
b0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UGxheW91dCgpOwotICB0ZXN0X2lzX2RvbmVfLT5X
YWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKKyAgdGVzdF9pc19kb25lXy5XYWl0KGtU
ZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAgU3RvcFBsYXlvdXQoKTsKIH0KIApAQCAtODk1
LDcgKzg5NSw3IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UGxheW91dFZlcmlmeUNh
bGxiYWNrcykgewogLy8gYXVkaW8gc2FtcGxlcyB2aWEgdGhlIFJlY29yZGVkRGF0YUlzQXZhaWxh
YmxlIGNhbGxiYWNrLgogVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJp
ZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCBtb2NrKGtSZWNvcmRp
bmcpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBudWxscHRy
LCBrTnVtQ2FsbGJhY2tzKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRlc3RfaXNfZG9uZV8s
IG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOwogICBFWFBFQ1RfQ0FMTCgKICAgICAgIG1vY2ssIFJl
Y29yZGVkRGF0YUlzQXZhaWxhYmxlKE5vdE51bGwoKSwgcmVjb3JkX2ZyYW1lc19wZXJfMTBtc19i
dWZmZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtCeXRlc1BlclNh
bXBsZSwgcmVjb3JkX2NoYW5uZWxzKCksCkBAIC05MDQsNyArOTA0LDcgQEAgVEVTVF9GKEF1ZGlv
RGV2aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKIAogICBFWFBFQ1Rf
RVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBT
dGFydFJlY29yZGluZygpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWls
bGlzZWNvbmRzKTsKKyAgdGVzdF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNv
bmRzKTsKICAgU3RvcFJlY29yZGluZygpOwogfQogCkBAIC05MTIsNyArOTEyLDcgQEAgVEVTVF9G
KEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKIC8vIGFj
dGl2ZSBpbiBib3RoIGRpcmVjdGlvbnMuCiBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBs
YXlvdXRBbmRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0
QW5kcm9pZCBtb2NrKGtQbGF5b3V0IHwga1JlY29yZGluZyk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJh
Y2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOworICBtb2Nr
LkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7
CiAgIEVYUEVDVF9DQUxMKG1vY2ssIE5lZWRNb3JlUGxheURhdGEocGxheW91dF9mcmFtZXNfcGVy
XzEwbXNfYnVmZmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J5
dGVzUGVyU2FtcGxlLCBwbGF5b3V0X2NoYW5uZWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGxheW91dF9zYW1wbGVfcmF0ZSgpLCBOb3ROdWxsKCksIF8sIF8sIF8p
KQpAQCAtOTI1LDcgKzkyNSw3IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UGxheW91
dEFuZFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2
aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsK
ICAgU3RhcnRSZWNvcmRpbmcoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChrVGVzdFRpbWVPdXRJ
bk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRpbWVPdXRJbk1pbGxp
c2Vjb25kcyk7CiAgIFN0b3BSZWNvcmRpbmcoKTsKICAgU3RvcFBsYXlvdXQoKTsKIH0KQEAgLTk0
MSwxMiArOTQxLDExIEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFJ1blBsYXlvdXRXaXRoRmls
ZUFzU291cmNlKSB7CiAgIHN0ZDo6c3RyaW5nIGZpbGVfbmFtZSA9IEdldEZpbGVOYW1lKHBsYXlv
dXRfc2FtcGxlX3JhdGUoKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxlQXVkaW9TdHJlYW0+IGZp
bGVfYXVkaW9fc3RyZWFtKAogICAgICAgbmV3IEZpbGVBdWRpb1N0cmVhbShudW1fY2FsbGJhY2tz
LCBmaWxlX25hbWUsIHBsYXlvdXRfc2FtcGxlX3JhdGUoKSkpOwotICBtb2NrLkhhbmRsZUNhbGxi
YWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBmaWxlX2F1ZGlvX3N0cmVhbS5nZXQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgbnVtX2NhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2FsbGJhY2tz
KCZ0ZXN0X2lzX2RvbmVfLCBmaWxlX2F1ZGlvX3N0cmVhbS5nZXQoKSwgbnVtX2NhbGxiYWNrcyk7
CiAgIC8vIFNldE1heFBsYXlvdXRWb2x1bWUoKTsKICAgRVhQRUNUX0VRKDAsIGF1ZGlvX2Rldmlj
ZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3RhcnRQbGF5b3V0KCk7Ci0g
IHRlc3RfaXNfZG9uZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOworICB0ZXN0
X2lzX2RvbmVfLldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOwogICBTdG9wUGxheW91
dCgpOwogfQogCkBAIC0xMDg0LDEzICsxMDgzLDEzIEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3Qs
IERJU0FCTEVEX1J1blBsYXlvdXRBbmRSZWNvcmRpbmdJbkZ1bGxEdXBsZXgpIHsKICAgTmljZU1v
Y2s8TW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZD4gbW9jayhrUGxheW91dCB8IGtSZWNvcmRpbmcp
OwogICBzdGQ6OnVuaXF1ZV9wdHI8Rmlmb0F1ZGlvU3RyZWFtPiBmaWZvX2F1ZGlvX3N0cmVhbSgK
ICAgICAgIG5ldyBGaWZvQXVkaW9TdHJlYW0ocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVy
KCkpKTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgZmlmb19h
dWRpb19zdHJlYW0uZ2V0KCksCisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVf
LCBmaWZvX2F1ZGlvX3N0cmVhbS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAga0Z1bGxE
dXBsZXhUaW1lSW5TZWMgKiBrTnVtQ2FsbGJhY2tzUGVyU2Vjb25kKTsKICAgU2V0TWF4UGxheW91
dFZvbHVtZSgpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9D
YWxsYmFjaygmbW9jaykpOwogICBTdGFydFJlY29yZGluZygpOwogICBTdGFydFBsYXlvdXQoKTsK
LSAgdGVzdF9pc19kb25lXy0+V2FpdCgKKyAgdGVzdF9pc19kb25lXy5XYWl0KAogICAgICAgc3Rk
OjptYXgoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMsIDEwMDAgKiBrRnVsbER1cGxleFRpbWVJ
blNlYykpOwogICBTdG9wUGxheW91dCgpOwogICBTdG9wUmVjb3JkaW5nKCk7CkBAIC0xMTE3LDE0
ICsxMTE2LDE0IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIERJU0FCTEVEX01lYXN1cmVMb29w
YmFja0xhdGVuY3kpIHsKICAgTmljZU1vY2s8TW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZD4gbW9j
ayhrUGxheW91dCB8IGtSZWNvcmRpbmcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8TGF0ZW5jeU1lYXN1
cmluZ0F1ZGlvU3RyZWFtPiBsYXRlbmN5X2F1ZGlvX3N0cmVhbSgKICAgICAgIG5ldyBMYXRlbmN5
TWVhc3VyaW5nQXVkaW9TdHJlYW0ocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpKTsK
LSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgbGF0ZW5jeV9hdWRp
b19zdHJlYW0uZ2V0KCksCisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBs
YXRlbmN5X2F1ZGlvX3N0cmVhbS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAga01lYXN1
cmVMYXRlbmN5VGltZUluU2VjICoga051bUNhbGxiYWNrc1BlclNlY29uZCk7CiAgIEVYUEVDVF9F
USgwLCBhdWRpb19kZXZpY2UoKS0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFNl
dE1heFBsYXlvdXRWb2x1bWUoKTsKICAgRGlzYWJsZUJ1aWx0SW5BRUNJZkF2YWlsYWJsZSgpOwog
ICBTdGFydFJlY29yZGluZygpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25lXy0+
V2FpdCgKKyAgdGVzdF9pc19kb25lXy5XYWl0KAogICAgICAgc3RkOjptYXgoa1Rlc3RUaW1lT3V0
SW5NaWxsaXNlY29uZHMsIDEwMDAgKiBrTWVhc3VyZUxhdGVuY3lUaW1lSW5TZWMpKTsKICAgU3Rv
cFBsYXlvdXQoKTsKICAgU3RvcFJlY29yZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0ZXN0
cy9vcmcvd2VicnRjL0phdmFWaWRlb1NvdXJjZVRlc3RIZWxwZXIuamF2YSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVz
dHMvb3JnL3dlYnJ0Yy9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyLmphdmEKaW5kZXggYmRlMzRl
OTVjZjYzMzNiMGQ5MjUwMWU2NmEyMjBlOTgwMzU5NTVlNC4uMzA5Yzc4NjU0ZWYzNjZkNjU1YzU4
MWQ1YjkzYjM2ZGU1MDA0OWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0ZXN0cy9vcmcvd2VicnRj
L0phdmFWaWRlb1NvdXJjZVRlc3RIZWxwZXIuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfdW5pdHRlc3RzL29yZy93
ZWJydGMvSmF2YVZpZGVvU291cmNlVGVzdEhlbHBlci5qYXZhCkBAIC0yNCw4ICsyNCw5IEBAIHB1
YmxpYyBjbGFzcyBKYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyIHsKICAgfQogCiAgIEBDYWxsZWRC
eU5hdGl2ZQotICBwdWJsaWMgc3RhdGljIHZvaWQgZGVsaXZlckZyYW1lKGludCB3aWR0aCwgaW50
IGhlaWdodCwgaW50IHJvdGF0aW9uLCBDYXB0dXJlck9ic2VydmVyIG9ic2VydmVyKSB7CisgIHB1
YmxpYyBzdGF0aWMgdm9pZCBkZWxpdmVyRnJhbWUoCisgICAgICBpbnQgd2lkdGgsIGludCBoZWln
aHQsIGludCByb3RhdGlvbiwgbG9uZyB0aW1lc3RhbXBOcywgQ2FwdHVyZXJPYnNlcnZlciBvYnNl
cnZlcikgewogICAgIG9ic2VydmVyLm9uRnJhbWVDYXB0dXJlZCgKLSAgICAgICAgbmV3IFZpZGVv
RnJhbWUoSmF2YUk0MjBCdWZmZXIuYWxsb2NhdGUod2lkdGgsIGhlaWdodCksIHJvdGF0aW9uLCAw
IC8qIHRpbWVzdGFtcE5zPSAqLykpOworICAgICAgICBuZXcgVmlkZW9GcmFtZShKYXZhSTQyMEJ1
ZmZlci5hbGxvY2F0ZSh3aWR0aCwgaGVpZ2h0KSwgcm90YXRpb24sIHRpbWVzdGFtcE5zKSk7CiAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVzdHMvdmlkZW8vdmlkZW9zb3VyY2VfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9uYXRpdmVfdW5pdHRlc3RzL3ZpZGVvL3ZpZGVvc291cmNlX3VuaXR0ZXN0LmNjCmluZGV4
IGI1OGVkMWE0NWE1NGVkMDdiOWQ4N2ZjMjQzMDgyYmQ5ZGUwNzBjN2IuLjdlY2Y5ZjhlYjRiOGEw
Zjc4OTY1M2FlZjZlZDY3OWMzMzU0OGIzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVzdHMvdmlk
ZW8vdmlkZW9zb3VyY2VfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0ZXN0cy92aWRlby92aWRl
b3NvdXJjZV91bml0dGVzdC5jYwpAQCAtNDAsOSArNDAsOSBAQCBURVNUKEphdmFWaWRlb1NvdXJj
ZVRlc3QsIENyZWF0ZUphdmFWaWRlb1NvdXJjZSkgewogICBydGM6OlRocmVhZE1hbmFnZXI6Oklu
c3RhbmNlKCktPldyYXBDdXJyZW50VGhyZWFkKCk7CiAKICAgcnRjOjpzY29wZWRfcmVmcHRyPEph
dmFWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlPiB2aWRlb190cmFja19zb3VyY2UgPQotICAgICAg
Q3JlYXRlSmF2YVZpZGVvU291cmNlKGVudiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovKTsKKyAgICAgIENy
ZWF0ZUphdmFWaWRlb1NvdXJjZSgKKyAgICAgICAgICBlbnYsIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6
SW5zdGFuY2UoKS0+Q3VycmVudFRocmVhZCgpLAorICAgICAgICAgIGZhbHNlIC8qIGlzX3NjcmVl
bmNhc3QgKi8sIHRydWUgLyogYWxpZ25fdGltZXN0YW1wcyAqLyk7CiAKICAgQVNTRVJUX05FKG51
bGxwdHIsIHZpZGVvX3RyYWNrX3NvdXJjZSk7CiAgIEVYUEVDVF9ORShudWxscHRyLApAQCAtNTcs
OSArNTcsOSBAQCBURVNUKEphdmFWaWRlb1NvdXJjZVRlc3QsIE9uRnJhbWVDYXB0dXJlZEZyYW1l
SXNEZWxpdmVyZWRUb1NpbmspIHsKICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5X
cmFwQ3VycmVudFRocmVhZCgpOwogCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxKYXZhVmlkZW9UcmFj
a1NvdXJjZUludGVyZmFjZT4gdmlkZW9fdHJhY2tfc291cmNlID0KLSAgICAgIENyZWF0ZUphdmFW
aWRlb1NvdXJjZShlbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWRN
YW5hZ2VyOjpJbnN0YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFsc2UgLyogaXNfc2NyZWVuY2FzdCAqLyk7CisgICAgICBDcmVhdGVKYXZhVmlk
ZW9Tb3VyY2UoCisgICAgICAgICAgZW52LCBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCkt
PkN1cnJlbnRUaHJlYWQoKSwKKyAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovLCB0
cnVlIC8qIGFsaWduX3RpbWVzdGFtcHMgKi8pOwogICB2aWRlb190cmFja19zb3VyY2UtPkFkZE9y
VXBkYXRlU2luaygmdGVzdF92aWRlb19zaW5rLCBydGM6OlZpZGVvU2lua1dhbnRzKCkpOwogCiAg
IGpuaTo6SmF2YV9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyX3N0YXJ0Q2FwdHVyZSgKQEAgLTY4
LDggKzY4LDkgQEAgVEVTVChKYXZhVmlkZW9Tb3VyY2VUZXN0LCBPbkZyYW1lQ2FwdHVyZWRGcmFt
ZUlzRGVsaXZlcmVkVG9TaW5rKSB7CiAgIGNvbnN0IGludCB3aWR0aCA9IDIwOwogICBjb25zdCBp
bnQgaGVpZ2h0ID0gMzI7CiAgIGNvbnN0IGludCByb3RhdGlvbiA9IDE4MDsKKyAgY29uc3QgaW50
NjRfdCB0aW1lc3RhbXAgPSA5ODc2NTQzMjE7CiAgIGpuaTo6SmF2YV9KYXZhVmlkZW9Tb3VyY2VU
ZXN0SGVscGVyX2RlbGl2ZXJGcmFtZSgKLSAgICAgIGVudiwgd2lkdGgsIGhlaWdodCwgcm90YXRp
b24sCisgICAgICBlbnYsIHdpZHRoLCBoZWlnaHQsIHJvdGF0aW9uLCB0aW1lc3RhbXAsCiAgICAg
ICB2aWRlb190cmFja19zb3VyY2UtPkdldEphdmFWaWRlb0NhcHR1cmVyT2JzZXJ2ZXIoZW52KSk7
CiAKICAgc3RkOjp2ZWN0b3I8VmlkZW9GcmFtZT4gZnJhbWVzID0gdGVzdF92aWRlb19zaW5rLkdl
dEZyYW1lcygpOwpAQCAtODAsMTUgKzgxLDQ5IEBAIFRFU1QoSmF2YVZpZGVvU291cmNlVGVzdCwg
T25GcmFtZUNhcHR1cmVkRnJhbWVJc0RlbGl2ZXJlZFRvU2luaykgewogICBFWFBFQ1RfRVEocm90
YXRpb24sIGZyYW1lLnJvdGF0aW9uKCkpOwogfQogCitURVNUKEphdmFWaWRlb1NvdXJjZVRlc3Qs
CisgICAgIE9uRnJhbWVDYXB0dXJlZEZyYW1lSXNEZWxpdmVyZWRUb1NpbmtXaXRoUHJlc2VydmVk
VGltZXN0YW1wKSB7CisgIFRlc3RWaWRlb1NpbmsgdGVzdF92aWRlb19zaW5rOworCisgIEpOSUVu
diogZW52ID0gQXR0YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7CisgIC8vIFdyYXAgdGVzdCB0
aHJlYWQgc28gaXQgY2FuIGJlIHVzZWQgYXMgdGhlIHNpZ25hbGluZyB0aHJlYWQuCisgIHJ0Yzo6
VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+V3JhcEN1cnJlbnRUaHJlYWQoKTsKKworICBydGM6
OnNjb3BlZF9yZWZwdHI8SmF2YVZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2U+IHZpZGVvX3RyYWNr
X3NvdXJjZSA9CisgICAgICBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCisgICAgICAgICAgZW52LCBy
dGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKKyAgICAgICAg
ICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovLCBmYWxzZSAvKiBhbGlnbl90aW1lc3RhbXBzICov
KTsKKyAgdmlkZW9fdHJhY2tfc291cmNlLT5BZGRPclVwZGF0ZVNpbmsoJnRlc3RfdmlkZW9fc2lu
aywgcnRjOjpWaWRlb1NpbmtXYW50cygpKTsKKworICBqbmk6OkphdmFfSmF2YVZpZGVvU291cmNl
VGVzdEhlbHBlcl9zdGFydENhcHR1cmUoCisgICAgICBlbnYsIHZpZGVvX3RyYWNrX3NvdXJjZS0+
R2V0SmF2YVZpZGVvQ2FwdHVyZXJPYnNlcnZlcihlbnYpLAorICAgICAgdHJ1ZSAvKiBzdWNjZXNz
ICovKTsKKyAgY29uc3QgaW50IHdpZHRoID0gMjA7CisgIGNvbnN0IGludCBoZWlnaHQgPSAzMjsK
KyAgY29uc3QgaW50IHJvdGF0aW9uID0gMTgwOworICBjb25zdCBpbnQ2NF90IHRpbWVzdGFtcCA9
IDk4NzY1NDMyMTsKKyAgam5pOjpKYXZhX0phdmFWaWRlb1NvdXJjZVRlc3RIZWxwZXJfZGVsaXZl
ckZyYW1lKAorICAgICAgZW52LCB3aWR0aCwgaGVpZ2h0LCByb3RhdGlvbiwgOTg3NjU0MzIxLAor
ICAgICAgdmlkZW9fdHJhY2tfc291cmNlLT5HZXRKYXZhVmlkZW9DYXB0dXJlck9ic2VydmVyKGVu
dikpOworCisgIHN0ZDo6dmVjdG9yPFZpZGVvRnJhbWU+IGZyYW1lcyA9IHRlc3RfdmlkZW9fc2lu
ay5HZXRGcmFtZXMoKTsKKyAgQVNTRVJUX0VRKDF1LCBmcmFtZXMuc2l6ZSgpKTsKKyAgd2VicnRj
OjpWaWRlb0ZyYW1lIGZyYW1lID0gZnJhbWVzWzBdOworICBFWFBFQ1RfRVEod2lkdGgsIGZyYW1l
LndpZHRoKCkpOworICBFWFBFQ1RfRVEoaGVpZ2h0LCBmcmFtZS5oZWlnaHQoKSk7CisgIEVYUEVD
VF9FUShyb3RhdGlvbiwgZnJhbWUucm90YXRpb24oKSk7CisgIEVYUEVDVF9FUSh0aW1lc3RhbXAg
LyAxMDAwLCBmcmFtZS50aW1lc3RhbXBfdXMoKSk7Cit9CisKIFRFU1QoSmF2YVZpZGVvU291cmNl
VGVzdCwgQ2FwdHVyZXJTdGFydGVkU3VjY2Vzc1N0YXRlQmVjb21lc0xpdmUpIHsKICAgSk5JRW52
KiBlbnYgPSBBdHRhY2hDdXJyZW50VGhyZWFkSWZOZWVkZWQoKTsKICAgLy8gV3JhcCB0ZXN0IHRo
cmVhZCBzbyBpdCBjYW4gYmUgdXNlZCBhcyB0aGUgc2lnbmFsaW5nIHRocmVhZC4KICAgcnRjOjpU
aHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVudFRocmVhZCgpOwogCiAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxKYXZhVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZT4gdmlkZW9fdHJhY2tf
c291cmNlID0KLSAgICAgIENyZWF0ZUphdmFWaWRlb1NvdXJjZShlbnYsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5DdXJyZW50VGhy
ZWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaXNfc2NyZWVuY2Fz
dCAqLyk7CisgICAgICBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCisgICAgICAgICAgZW52LCBydGM6
OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKKyAgICAgICAgICBm
YWxzZSAvKiBpc19zY3JlZW5jYXN0ICovLCB0cnVlIC8qIGFsaWduX3RpbWVzdGFtcHMgKi8pOwog
CiAgIGpuaTo6SmF2YV9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyX3N0YXJ0Q2FwdHVyZSgKICAg
ICAgIGVudiwgdmlkZW9fdHJhY2tfc291cmNlLT5HZXRKYXZhVmlkZW9DYXB0dXJlck9ic2VydmVy
KGVudiksCkBAIC0xMDQsOSArMTM5LDkgQEAgVEVTVChKYXZhVmlkZW9Tb3VyY2VUZXN0LCBDYXB0
dXJlclN0YXJ0ZWRGYWlsdXJlU3RhdGVCZWNvbWVzRW5kZWQpIHsKICAgcnRjOjpUaHJlYWRNYW5h
Z2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVudFRocmVhZCgpOwogCiAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxKYXZhVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZT4gdmlkZW9fdHJhY2tfc291cmNlID0K
LSAgICAgIENyZWF0ZUphdmFWaWRlb1NvdXJjZShlbnYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaXNfc2NyZWVuY2FzdCAqLyk7Cisg
ICAgICBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCisgICAgICAgICAgZW52LCBydGM6OlRocmVhZE1h
bmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKKyAgICAgICAgICBmYWxzZSAvKiBp
c19zY3JlZW5jYXN0ICovLCB0cnVlIC8qIGFsaWduX3RpbWVzdGFtcHMgKi8pOwogCiAgIGpuaTo6
SmF2YV9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyX3N0YXJ0Q2FwdHVyZSgKICAgICAgIGVudiwg
dmlkZW9fdHJhY2tfc291cmNlLT5HZXRKYXZhVmlkZW9DYXB0dXJlck9ic2VydmVyKGVudiksCkBA
IC0xMjIsOSArMTU3LDkgQEAgVEVTVChKYXZhVmlkZW9Tb3VyY2VUZXN0LCBDYXB0dXJlclN0b3Bw
ZWRTdGF0ZUJlY29tZXNFbmRlZCkgewogICBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCkt
PldyYXBDdXJyZW50VGhyZWFkKCk7CiAKICAgcnRjOjpzY29wZWRfcmVmcHRyPEphdmFWaWRlb1Ry
YWNrU291cmNlSW50ZXJmYWNlPiB2aWRlb190cmFja19zb3VyY2UgPQotICAgICAgQ3JlYXRlSmF2
YVZpZGVvU291cmNlKGVudiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRocmVh
ZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovKTsKKyAgICAgIENyZWF0ZUphdmFW
aWRlb1NvdXJjZSgKKyAgICAgICAgICBlbnYsIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2Uo
KS0+Q3VycmVudFRocmVhZCgpLAorICAgICAgICAgIGZhbHNlIC8qIGlzX3NjcmVlbmNhc3QgKi8s
IHRydWUgLyogYWxpZ25fdGltZXN0YW1wcyAqLyk7CiAKICAgam5pOjpKYXZhX0phdmFWaWRlb1Nv
dXJjZVRlc3RIZWxwZXJfc3RhcnRDYXB0dXJlKAogICAgICAgZW52LCB2aWRlb190cmFja19zb3Vy
Y2UtPkdldEphdmFWaWRlb0NhcHR1cmVyT2JzZXJ2ZXIoZW52KSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZh
L29yZy93ZWJydGMvSGFyZHdhcmVWaWRlb0VuY29kZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMv
SGFyZHdhcmVWaWRlb0VuY29kZXIuamF2YQppbmRleCBlYmY5ZGUzNzRmMTRiMDFkOTNhMTgxY2Y3
YmUyNzY1ZjZkNDM4N2Q5Li5jMzZhNjhjZDIxYjdmMWI1MzBmZTE0ODM4MWY4ODM2NWY0ZjI5MGMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL0hhcmR3YXJlVmlkZW9FbmNvZGVyLmphdmEK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9IYXJkd2FyZVZpZGVvRW5jb2Rlci5qYXZhCkBAIC00MDMs
MTIgKzQwMyw2IEBAIGNsYXNzIEhhcmR3YXJlVmlkZW9FbmNvZGVyIGltcGxlbWVudHMgVmlkZW9F
bmNvZGVyIHsKICAgICByZXR1cm4gVmlkZW9Db2RlY1N0YXR1cy5PSzsKICAgfQogCi0gIEBPdmVy
cmlkZQotICBwdWJsaWMgVmlkZW9Db2RlY1N0YXR1cyBzZXRDaGFubmVsUGFyYW1ldGVycyhzaG9y
dCBwYWNrZXRMb3NzLCBsb25nIHJvdW5kVHJpcFRpbWVNcykgewotICAgIGVuY29kZVRocmVhZENo
ZWNrZXIuY2hlY2tJc09uVmFsaWRUaHJlYWQoKTsKLSAgICByZXR1cm4gVmlkZW9Db2RlY1N0YXR1
cy5PSzsgLy8gTm8gb3AuCi0gIH0KLQogICBAT3ZlcnJpZGUKICAgcHVibGljIFZpZGVvQ29kZWNT
dGF0dXMgc2V0UmF0ZUFsbG9jYXRpb24oQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZUFsbG9jYXRp
b24sIGludCBmcmFtZXJhdGUpIHsKICAgICBlbmNvZGVUaHJlYWRDaGVja2VyLmNoZWNrSXNPblZh
bGlkVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL05hdGl2ZUNhcHR1cmVy
T2JzZXJ2ZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvTmF0aXZlQ2FwdHVyZXJPYnNlcnZlci5q
YXZhCmluZGV4IDI0ODY5ODE4YTY2YTM4ZTljMDNlMTIyYTBhM2E5MDQyMzgwYzNjOGUuLmY2NzNi
MjQ4ODViMmI2MmVlZGMyMGFiMjBlYjY1ZmUxOGExMzg3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29y
Zy93ZWJydGMvTmF0aXZlQ2FwdHVyZXJPYnNlcnZlci5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJy
dGMvTmF0aXZlQ2FwdHVyZXJPYnNlcnZlci5qYXZhCkBAIC0xMSw2ICsxMSw3IEBACiBwYWNrYWdl
IG9yZy53ZWJydGM7CiAKIGltcG9ydCBqYXZheC5hbm5vdGF0aW9uLk51bGxhYmxlOworaW1wb3J0
IG9yZy53ZWJydGMuVmlkZW9GcmFtZTsKIAogLyoqCiAgKiBJbXBsZW1lbnRzIFZpZGVvQ2FwdHVy
ZXIuQ2FwdHVyZXJPYnNlcnZlciBhbmQgZmVlZHMgZnJhbWVzIHRvCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2
YS9vcmcvd2VicnRjL1ZQOERlY29kZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvVlA4RGVjb2Rl
ci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjI5YzM0OWM3YTEwMjE4NzE3
YjlmYzY5NGZlMDQwNTZhYjEzZWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvVlA4RGVjb2Rlci5qYXZhCisrKyAvZGV2L251
bGwKQEAgLTEsMjAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLXBhY2thZ2Ugb3Jn
LndlYnJ0YzsKLQotY2xhc3MgVlA4RGVjb2RlciBleHRlbmRzIFdyYXBwZWROYXRpdmVWaWRlb0Rl
Y29kZXIgewotICBAT3ZlcnJpZGUKLSAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZlVmlkZW9EZWNv
ZGVyKCkgewotICAgIHJldHVybiBuYXRpdmVDcmVhdGVEZWNvZGVyKCk7Ci0gIH0KLQotICBzdGF0
aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlRGVjb2RlcigpOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2ph
dmEvb3JnL3dlYnJ0Yy9WUDhFbmNvZGVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOEVuY29k
ZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJmOGY1MDQxNzdkZWVlZjlj
M2VhN2M3NzU4NTJkYTI4ZTQzYjRlNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOEVuY29kZXIuamF2YQorKysgL2Rldi9u
dWxsCkBAIC0xLDI1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi1wYWNrYWdlIG9y
Zy53ZWJydGM7Ci0KLWNsYXNzIFZQOEVuY29kZXIgZXh0ZW5kcyBXcmFwcGVkTmF0aXZlVmlkZW9F
bmNvZGVyIHsKLSAgQE92ZXJyaWRlCi0gIHB1YmxpYyBsb25nIGNyZWF0ZU5hdGl2ZVZpZGVvRW5j
b2RlcigpIHsKLSAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRW5jb2RlcigpOwotICB9Ci0KLSAgc3Rh
dGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsKLQotICBAT3ZlcnJpZGUKLSAg
cHVibGljIGJvb2xlYW4gaXNIYXJkd2FyZUVuY29kZXIoKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwot
ICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOURlY29kZXIuamF2YSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9q
YXZhL29yZy93ZWJydGMvVlA5RGVjb2Rlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiNmZlZTJkMzYyYjJhZTU4Mzc1OGNiZWI5ZGNkMWFkN2RhOWVlMWI2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvVlA5
RGVjb2Rlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotLyoKLSAqICBDb3B5
cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgotICovCi0KLXBhY2thZ2Ugb3JnLndlYnJ0YzsKLQotY2xhc3MgVlA5RGVjb2RlciBleHRl
bmRzIFdyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIgewotICBAT3ZlcnJpZGUKLSAgcHVibGljIGxv
bmcgY3JlYXRlTmF0aXZlVmlkZW9EZWNvZGVyKCkgewotICAgIHJldHVybiBuYXRpdmVDcmVhdGVE
ZWNvZGVyKCk7Ci0gIH0KLQotICBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlRGVjb2Rl
cigpOwotCi0gIHN0YXRpYyBuYXRpdmUgYm9vbGVhbiBuYXRpdmVJc1N1cHBvcnRlZCgpOwotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9WUDlFbmNvZGVyLmphdmEgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcv
d2VicnRjL1ZQOUVuY29kZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM3
MDViZDljNjAxN2ViNjY0NDljNzI3ZjM2NDA3MTVmNzE5MTNkZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOUVuY29kZXIu
amF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChj
KSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAq
LwotCi1wYWNrYWdlIG9yZy53ZWJydGM7Ci0KLWNsYXNzIFZQOUVuY29kZXIgZXh0ZW5kcyBXcmFw
cGVkTmF0aXZlVmlkZW9FbmNvZGVyIHsKLSAgQE92ZXJyaWRlCi0gIHB1YmxpYyBsb25nIGNyZWF0
ZU5hdGl2ZVZpZGVvRW5jb2RlcigpIHsKLSAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRW5jb2Rlcigp
OwotICB9Ci0KLSAgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsKLQot
ICBAT3ZlcnJpZGUKLSAgcHVibGljIGJvb2xlYW4gaXNIYXJkd2FyZUVuY29kZXIoKSB7Ci0gICAg
cmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgc3RhdGljIG5hdGl2ZSBib29sZWFuIG5hdGl2ZUlzU3Vw
cG9ydGVkKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1dyYXBwZWROYXRpdmVW
aWRlb0VuY29kZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvV3JhcHBlZE5hdGl2ZVZpZGVvRW5j
b2Rlci5qYXZhCmluZGV4IDA3ZTg0Mjg2MjEwMTIwNzEwN2NmZDQyNzgzYmI5ZDYwNTBhNTFkNWIu
Ljk1OWNhZmNhNTY5MDdjMGExOGJmNTFjNjZmOGJmYWIyNjFjY2MyNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9q
YXZhL29yZy93ZWJydGMvV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5qYXZhCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZh
L29yZy93ZWJydGMvV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5qYXZhCkBAIC0zMiwxMSArMzIs
NiBAQCBhYnN0cmFjdCBjbGFzcyBXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyIGltcGxlbWVudHMg
VmlkZW9FbmNvZGVyIHsKICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRp
b24oIk5vdCBpbXBsZW1lbnRlZC4iKTsKICAgfQogCi0gIEBPdmVycmlkZQotICBwdWJsaWMgVmlk
ZW9Db2RlY1N0YXR1cyBzZXRDaGFubmVsUGFyYW1ldGVycyhzaG9ydCBwYWNrZXRMb3NzLCBsb25n
IHJvdW5kVHJpcFRpbWVNcykgewotICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4
Y2VwdGlvbigiTm90IGltcGxlbWVudGVkLiIpOwotICB9Ci0KICAgQE92ZXJyaWRlCiAgIHB1Ymxp
YyBWaWRlb0NvZGVjU3RhdHVzIHNldFJhdGVBbGxvY2F0aW9uKEJpdHJhdGVBbGxvY2F0aW9uIGFs
bG9jYXRpb24sIGludCBmcmFtZXJhdGUpIHsKICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVy
YXRpb25FeGNlcHRpb24oIk5vdCBpbXBsZW1lbnRlZC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5k
cm9pZG1lZGlhZGVjb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZG1lZGlhZGVjb2Rlci5jYwppbmRleCA0
N2RkYWFjNDY3MmViMDFkYTBjMjQxNDc0NzlkNWEzY2IxZTFjZjQxLi40ZGY1MDgyOWMzNmIxMGUx
YzBlMDA5OTIxMjNjNTM2OGQ5ZmQ4ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRtZWRpYWRl
Y29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkbWVkaWFkZWNvZGVyLmNjCkBAIC0zNSw3ICszNSw2
IEBACiAjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L3ZpZGVvX2Nv
bW1vbi5oIgogCiB1c2luZyBydGM6OkJpbmQ7Ci11c2luZyBydGM6OlRocmVhZDsKIHVzaW5nIHJ0
Yzo6VGhyZWFkTWFuYWdlcjsKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIGpuaSB7CkBA
IC0xMjEsNyArMTIwLDcgQEAgY2xhc3MgTWVkaWFDb2RlY1ZpZGVvRGVjb2RlciA6IHB1YmxpYyBW
aWRlb0RlY29kZXIsIHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyIHsKIAogICAvLyBTdGF0ZSB0
aGF0IGlzIGNvbnN0YW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhpcyBvYmplY3Qgb25jZSB0aGUg
Y3RvcgogICAvLyByZXR1cm5zLgotICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkPgorICBzdGQ6OnVu
aXF1ZV9wdHI8cnRjOjpUaHJlYWQ+CiAgICAgICBjb2RlY190aHJlYWRfOyAgLy8gVGhyZWFkIG9u
IHdoaWNoIHRvIG9wZXJhdGUgTWVkaWFDb2RlYy4KICAgU2NvcGVkSmF2YUdsb2JhbFJlZjxqb2Jq
ZWN0PiBqX21lZGlhX2NvZGVjX3ZpZGVvX2RlY29kZXJfOwogCkBAIC0xMzcsNyArMTM2LDcgQEAg
TWVkaWFDb2RlY1ZpZGVvRGVjb2Rlcjo6TWVkaWFDb2RlY1ZpZGVvRGVjb2RlcihKTklFbnYqIGpu
aSwKICAgICAgIGluaXRlZF8oZmFsc2UpLAogICAgICAgc3dfZmFsbGJhY2tfcmVxdWlyZWRfKGZh
bHNlKSwKICAgICAgIHVzZV9zdXJmYWNlXyh1c2Vfc3VyZmFjZSksCi0gICAgICBjb2RlY190aHJl
YWRfKFRocmVhZDo6Q3JlYXRlKCkpLAorICAgICAgY29kZWNfdGhyZWFkXyhydGM6OlRocmVhZDo6
Q3JlYXRlKCkpLAogICAgICAgal9tZWRpYV9jb2RlY192aWRlb19kZWNvZGVyXygKICAgICAgICAg
ICBqbmksCiAgICAgICAgICAgSmF2YV9NZWRpYUNvZGVjVmlkZW9EZWNvZGVyX0NvbnN0cnVjdG9y
KGpuaSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZG1lZGlhZW5jb2Rlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
YW5kcm9pZG1lZGlhZW5jb2Rlci5jYwppbmRleCA0MzViYzcxM2E4NTgwY2Q5YWI0ZjFhOTY3MTY4
MGUxNGE4OTg0OWJjLi4wOWIyY2NmNDNmNDBjZDQ5MWJlYTA1NjE4YmIyYmFiYmUxMTY3MjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9zcmMvam5pL2FuZHJvaWRtZWRpYWVuY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lk
bWVkaWFlbmNvZGVyLmNjCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAidGhpcmRfcGFydHkv
bGlieXV2L2luY2x1ZGUvbGlieXV2L3ZpZGVvX2NvbW1vbi5oIgogCiB1c2luZyBydGM6OkJpbmQ7
Ci11c2luZyBydGM6OlRocmVhZDsKIHVzaW5nIHJ0Yzo6VGhyZWFkTWFuYWdlcjsKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CkBAIC0xMDUsMTMgKzEwNCw5IEBAIGNsYXNzIE1lZGlhQ29kZWNWaWRlb0Vu
Y29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgaW50MzJfdCBSZWdpc3RlckVuY29kZUNv
bXBsZXRlQ2FsbGJhY2soCiAgICAgICBFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2spIG92
ZXJyaWRlOwogICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZTsKLSAgaW50MzJfdCBTZXRDaGFu
bmVsUGFyYW1ldGVycyh1aW50MzJfdCAvKiBwYWNrZXRfbG9zcyAqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90IC8qIHJ0dCAqLykgb3ZlcnJpZGU7CiAgIGludDMyX3Qg
U2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgcmF0ZV9hbGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lX3JhdGUp
IG92ZXJyaWRlOwotCi0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBoYXNfZWdsX2NvbnRleHRfOyB9Ci0gIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0
aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICBFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbygp
IGNvbnN0IG92ZXJyaWRlOwogCiAgIC8vIEZpbGxzIHRoZSBpbnB1dCBidWZmZXIgd2l0aCBkYXRh
IGZyb20gdGhlIGJ1ZmZlcnMgcGFzc2VkIGFzIHBhcmFtZXRlcnMuCiAgIGJvb2wgRmlsbElucHV0
QnVmZmVyKEpOSUVudiogam5pLApAQCAtMTgwLDcgKzE3NSw3IEBAIGNsYXNzIE1lZGlhQ29kZWNW
aWRlb0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgLy8gdHJ1ZSBvbiBzdWNjZXNz
LgogICBib29sIERlbGl2ZXJQZW5kaW5nT3V0cHV0cyhKTklFbnYqIGpuaSk7CiAKLSAgVmlkZW9F
bmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5nc0lu
dGVybmFsKCkgY29uc3Q7CiAKICAgLy8gRGlzcGxheXMgZW5jb2RlciBzdGF0aXN0aWNzLgogICB2
b2lkIExvZ1N0YXRpc3RpY3MoYm9vbCBmb3JjZV9sb2cpOwpAQCAtMjcxLDYgKzI2Niw3IEBAIGNs
YXNzIE1lZGlhQ29kZWNWaWRlb0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgc2l6
ZV90IGdvZl9pZHhfOwogCiAgIGNvbnN0IGJvb2wgaGFzX2VnbF9jb250ZXh0XzsKKyAgRW5jb2Rl
ckluZm8gZW5jb2Rlcl9pbmZvXzsKIAogICAvLyBUZW1wb3JhcnkgZml4IGZvciBWUDguCiAgIC8v
IFNlbmRzIGEga2V5IGZyYW1lIGlmIGZyYW1lcyBhcmUgbGFyZ2VseSBzcGFjZWQgYXBhcnQgKHBv
c3NpYmx5CkBAIC0zNTgsMTcgKzM1NCwxNiBAQCBpbnQzMl90IE1lZGlhQ29kZWNWaWRlb0VuY29k
ZXI6OkluaXRFbmNvZGUoY29uc3QgVmlkZW9Db2RlYyogY29kZWNfc2V0dGluZ3MsCiAgICAgQUxP
R0QgPDwgIkguMjY0IHByb2ZpbGU6ICIgPDwgcHJvZmlsZV87CiAgIH0KIAorICBlbmNvZGVyX2lu
Zm9fLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBoYXNfZWdsX2NvbnRleHRfOworICBlbmNvZGVy
X2luZm9fLmltcGxlbWVudGF0aW9uX25hbWUgPSAiTWVkaWFDb2RlYyI7CisgIGVuY29kZXJfaW5m
b18uc2NhbGluZ19zZXR0aW5ncyA9IEdldFNjYWxpbmdTZXR0aW5nc0ludGVybmFsKCk7CisKICAg
cmV0dXJuIEluaXRFbmNvZGVJbnRlcm5hbCgKICAgICAgIGluaXRfd2lkdGgsIGluaXRfaGVpZ2h0
LCBjb2RlY19zZXR0aW5ncy0+c3RhcnRCaXRyYXRlLAogICAgICAgY29kZWNfc2V0dGluZ3MtPm1h
eEZyYW1lcmF0ZSwKICAgICAgIGNvZGVjX3NldHRpbmdzLT5leHBlY3RfZW5jb2RlX2Zyb21fdGV4
dHVyZSAmJiBoYXNfZWdsX2NvbnRleHRfKTsKIH0KIAotaW50MzJfdCBNZWRpYUNvZGVjVmlkZW9F
bmNvZGVyOjpTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCAvKiBwYWNrZXRfbG9zcyAqLywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCAvKiBydHQgKi8pIHsKLSAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLX0KLQog
Ym9vbCBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpSZXNldENvZGVjKCkgewogICBSVENfRENIRUNL
X0NBTExFRF9TRVFVRU5USUFMTFkoJmVuY29kZXJfcXVldWVfY2hlY2tlcl8pOwogICBBTE9HRSA8
PCAiUmVzZXQiOwpAQCAtOTMwLDYgKzkyNSwxMCBAQCBpbnQzMl90IE1lZGlhQ29kZWNWaWRlb0Vu
Y29kZXI6OlNldFJhdGVBbGxvY2F0aW9uKAogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09L
OwogfQogCitWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIE1lZGlhQ29kZWNWaWRlb0VuY29kZXI6
OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICByZXR1cm4gZW5jb2Rlcl9pbmZvXzsKK30KKwog
Ym9vbCBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpEZWxpdmVyUGVuZGluZ091dHB1dHMoSk5JRW52
KiBqbmkpIHsKICAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZlbmNvZGVyX3F1ZXVl
X2NoZWNrZXJfKTsKIApAQCAtMTE0OCw4ICsxMTQ3LDggQEAgdm9pZCBNZWRpYUNvZGVjVmlkZW9F
bmNvZGVyOjpMb2dTdGF0aXN0aWNzKGJvb2wgZm9yY2VfbG9nKSB7CiAgIH0KIH0KIAotVmlkZW9F
bmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgTWVkaWFDb2RlY1ZpZGVvRW5jb2Rlcjo6R2V0U2NhbGlu
Z1NldHRpbmdzKCkKLSAgICBjb25zdCB7CitWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncwor
TWVkaWFDb2RlY1ZpZGVvRW5jb2Rlcjo6R2V0U2NhbGluZ1NldHRpbmdzSW50ZXJuYWwoKSBjb25z
dCB7CiAgIGlmICghc2NhbGVfKQogICAgIHJldHVybiBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0
aW5nczo6a09mZjsKIApAQCAtMTIwNiwxMCArMTIwNSw2IEBAIFZpZGVvRW5jb2Rlcjo6U2NhbGlu
Z1NldHRpbmdzIE1lZGlhQ29kZWNWaWRlb0VuY29kZXI6OkdldFNjYWxpbmdTZXR0aW5ncygpCiAg
IHJldHVybiBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5nczo6a09mZjsKIH0KIAotY29uc3Qg
Y2hhciogTWVkaWFDb2RlY1ZpZGVvRW5jb2Rlcjo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qg
ewotICByZXR1cm4gIk1lZGlhQ29kZWMiOwotfQotCiBzdGF0aWMgdm9pZCBKTklfTWVkaWFDb2Rl
Y1ZpZGVvRW5jb2Rlcl9GaWxsSW5wdXRCdWZmZXIoCiAgICAgSk5JRW52KiBqbmksCiAgICAgY29u
c3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkbmV0d29y
a21vbml0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRuZXR3b3JrbW9uaXRvci5jYwppbmRleCBiMTM1MWVm
MWUxYjc0NTU1MDQ5NzU2MWY5YmMwZDE5MmY5NTEyZjc2Li43YWMxNzI4MWY5N2NhZjlmY2U3MzYx
ZTU0N2U2ZDliZTJkNzBjOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRuZXR3b3JrbW9uaXRv
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9zcmMvam5pL2FuZHJvaWRuZXR3b3JrbW9uaXRvci5jYwpAQCAtMTksNiArMTksNyBA
QAogI2luY2x1ZGUgInJ0Y19iYXNlL2JpbmQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9pcGFkZHJlc3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgog
I2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF9iYXNlX2puaS9qbmkvTmV0d29ya01vbml0
b3JBdXRvRGV0ZWN0X2puaS5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF9iYXNl
X2puaS9qbmkvTmV0d29ya01vbml0b3Jfam5pLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWR2
aWRlb3RyYWNrc291cmNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkdmlkZW90cmFja3NvdXJjZS5jYwppbmRl
eCA0MWQ0Mjc4YWM5Y2YzYWFkNDdjMWZhYTZkNmQyODM2MDA1YzFmODlmLi5lNzI4NTBmMjQ5ODhi
MDQ4N2E4ODUwYmEwNTExYzdjNGI1YjFlNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWR2aWRl
b3RyYWNrc291cmNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZHZpZGVvdHJhY2tzb3VyY2UuY2MKQEAg
LTI1LDEwICsyNSwxMiBAQCBjb25zdCBpbnQga1JlcXVpcmVkUmVzb2x1dGlvbkFsaWdubWVudCA9
IDI7CiAKIEFuZHJvaWRWaWRlb1RyYWNrU291cmNlOjpBbmRyb2lkVmlkZW9UcmFja1NvdXJjZShy
dGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBKTklFbnYqIGpuaSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3NjcmVlbmNhc3QpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19zY3JlZW5j
YXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgYWxpZ25fdGltZXN0YW1wcykKICAgICA6IEFkYXB0ZWRWaWRlb1RyYWNrU291cmNlKGtSZXF1
aXJlZFJlc29sdXRpb25BbGlnbm1lbnQpLAogICAgICAgc2lnbmFsaW5nX3RocmVhZF8oc2lnbmFs
aW5nX3RocmVhZCksCi0gICAgICBpc19zY3JlZW5jYXN0Xyhpc19zY3JlZW5jYXN0KSB7CisgICAg
ICBpc19zY3JlZW5jYXN0Xyhpc19zY3JlZW5jYXN0KSwKKyAgICAgIGFsaWduX3RpbWVzdGFtcHNf
KGFsaWduX3RpbWVzdGFtcHMpIHsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQW5kcm9pZFZpZGVv
VHJhY2tTb3VyY2UgY3RvciI7CiAgIGNhbWVyYV90aHJlYWRfY2hlY2tlcl8uRGV0YWNoRnJvbVRo
cmVhZCgpOwogfQpAQCAtNzUsNyArNzcsOSBAQCB2b2lkIEFuZHJvaWRWaWRlb1RyYWNrU291cmNl
OjpPbkZyYW1lQ2FwdHVyZWQoCiAKICAgaW50NjRfdCBjYW1lcmFfdGltZV91cyA9IHRpbWVzdGFt
cF9ucyAvIHJ0Yzo6a051bU5hbm9zZWNzUGVyTWljcm9zZWM7CiAgIGludDY0X3QgdHJhbnNsYXRl
ZF9jYW1lcmFfdGltZV91cyA9Ci0gICAgICB0aW1lc3RhbXBfYWxpZ25lcl8uVHJhbnNsYXRlVGlt
ZXN0YW1wKGNhbWVyYV90aW1lX3VzLCBydGM6OlRpbWVNaWNyb3MoKSk7CisgICAgICBhbGlnbl90
aW1lc3RhbXBzXyA/IHRpbWVzdGFtcF9hbGlnbmVyXy5UcmFuc2xhdGVUaW1lc3RhbXAoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmFfdGltZV91cywgcnRjOjpUaW1lTWljcm9z
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbWVyYV90aW1lX3VzOwogCiAgIGludCBh
ZGFwdGVkX3dpZHRoOwogICBpbnQgYWRhcHRlZF9oZWlnaHQ7CkBAIC04NCwxMCArODgsMTkgQEAg
dm9pZCBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZTo6T25GcmFtZUNhcHR1cmVkKAogICBpbnQgY3Jv
cF94OwogICBpbnQgY3JvcF95OwogCi0gIGlmICghQWRhcHRGcmFtZSh3aWR0aCwgaGVpZ2h0LCBj
YW1lcmFfdGltZV91cywgJmFkYXB0ZWRfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAmYWRhcHRl
ZF9oZWlnaHQsICZjcm9wX3dpZHRoLCAmY3JvcF9oZWlnaHQsICZjcm9wX3gsCi0gICAgICAgICAg
ICAgICAgICAmY3JvcF95KSkgewotICAgIHJldHVybjsKKyAgaWYgKHJvdGF0aW9uICUgMTgwID09
IDApIHsKKyAgICBpZiAoIUFkYXB0RnJhbWUod2lkdGgsIGhlaWdodCwgY2FtZXJhX3RpbWVfdXMs
ICZhZGFwdGVkX3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAmYWRhcHRlZF9oZWlnaHQsICZj
cm9wX3dpZHRoLCAmY3JvcF9oZWlnaHQsICZjcm9wX3gsCisgICAgICAgICAgICAgICAgICAgICZj
cm9wX3kpKSB7CisgICAgICByZXR1cm47CisgICAgfQorICB9IGVsc2UgeworICAgIC8vIFN3YXAg
YWxsIHdpZHRoL2hlaWdodCBhbmQgeC95LgorICAgIGlmICghQWRhcHRGcmFtZShoZWlnaHQsIHdp
ZHRoLCBjYW1lcmFfdGltZV91cywgJmFkYXB0ZWRfaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAmYWRhcHRlZF93aWR0aCwgJmNyb3BfaGVpZ2h0LCAmY3JvcF93aWR0aCwgJmNyb3BfeSwKKyAg
ICAgICAgICAgICAgICAgICAgJmNyb3BfeCkpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CiAgIH0K
IAogICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9GcmFtZUJ1ZmZlcj4gYnVmZmVyID0KQEAgLTEw
MywxMiArMTE2LDE2IEBAIHZvaWQgQW5kcm9pZFZpZGVvVHJhY2tTb3VyY2U6Ok9uRnJhbWVDYXB0
dXJlZCgKICAgT25GcmFtZShWaWRlb0ZyYW1lKGJ1ZmZlciwgcm90YXRpb24sIHRyYW5zbGF0ZWRf
Y2FtZXJhX3RpbWVfdXMpKTsKIH0KIAotdm9pZCBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZTo6T25P
dXRwdXRGb3JtYXRSZXF1ZXN0KGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAordm9pZCBBbmRyb2lkVmlkZW9U
cmFja1NvdXJjZTo6T25PdXRwdXRGb3JtYXRSZXF1ZXN0KGludCBsYW5kc2NhcGVfd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxh
bmRzY2FwZV9oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHBvcnRyYWl0X3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3J0cmFpdF9oZWlnaHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZwcykgewot
ICBjcmlja2V0OjpWaWRlb0Zvcm1hdCBmb3JtYXQod2lkdGgsIGhlaWdodCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OlZpZGVvRm9ybWF0OjpGcHNUb0ludGVydmFsKGZw
cyksIDApOwotICB2aWRlb19hZGFwdGVyKCktPk9uT3V0cHV0Rm9ybWF0UmVxdWVzdChmb3JtYXQp
OworICB2aWRlb19hZGFwdGVyKCktPk9uT3V0cHV0Rm9ybWF0UmVxdWVzdCgKKyAgICAgIHN0ZDo6
bWFrZV9wYWlyKGxhbmRzY2FwZV93aWR0aCwgbGFuZHNjYXBlX2hlaWdodCksCisgICAgICBsYW5k
c2NhcGVfd2lkdGggKiBsYW5kc2NhcGVfaGVpZ2h0LAorICAgICAgc3RkOjptYWtlX3BhaXIocG9y
dHJhaXRfd2lkdGgsIHBvcnRyYWl0X2hlaWdodCksCisgICAgICBwb3J0cmFpdF93aWR0aCAqIHBv
cnRyYWl0X2hlaWdodCwgZnBzKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGpuaQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
c3JjL2puaS9hbmRyb2lkdmlkZW90cmFja3NvdXJjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkdmlkZW90cmFj
a3NvdXJjZS5oCmluZGV4IDhmMDkyYzFiMDQxZDZhZWEzYjQ5NTJiNjA3YjJjOWE3MjE4MmRlNGMu
LjRmODQ0MmU1Nzc4MTU4MGZkZDE5YjI4N2M0YjhlNzAzYzVjNTRmNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9q
bmkvYW5kcm9pZHZpZGVvdHJhY2tzb3VyY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWR2aWRlb3RyYWNr
c291cmNlLmgKQEAgLTI5LDcgKzI5LDggQEAgY2xhc3MgQW5kcm9pZFZpZGVvVHJhY2tTb3VyY2Ug
OiBwdWJsaWMgcnRjOjpBZGFwdGVkVmlkZW9UcmFja1NvdXJjZSB7CiAgcHVibGljOgogICBBbmRy
b2lkVmlkZW9UcmFja1NvdXJjZShydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSk5JRW52KiBqbmksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNfc2NyZWVuY2FzdCA9IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc19zY3JlZW5jYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFs
aWduX3RpbWVzdGFtcHMpOwogICB+QW5kcm9pZFZpZGVvVHJhY2tTb3VyY2UoKSBvdmVycmlkZTsK
IAogICBib29sIGlzX3NjcmVlbmNhc3QoKSBjb25zdCBvdmVycmlkZTsKQEAgLTUzLDE1ICs1NCwy
MCBAQCBjbGFzcyBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZSA6IHB1YmxpYyBydGM6OkFkYXB0ZWRW
aWRlb1RyYWNrU291cmNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9Sb3RhdGlvbiBy
b3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVJlZjxqb2JqZWN0PiYg
al92aWRlb19mcmFtZV9idWZmZXIpOwogCi0gIHZvaWQgT25PdXRwdXRGb3JtYXRSZXF1ZXN0KGlu
dCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGZwcyk7CisgIHZvaWQgT25PdXRwdXRGb3JtYXRSZXF1
ZXN0KGludCBsYW5kc2NhcGVfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBsYW5kc2NhcGVfaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9y
dHJhaXRfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3J0cmFpdF9o
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcHMpOwogCiAgcHJpdmF0
ZToKICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWRfOwogICBydGM6OkFzeW5jSW52b2tl
ciBpbnZva2VyXzsKICAgcnRjOjpUaHJlYWRDaGVja2VyIGNhbWVyYV90aHJlYWRfY2hlY2tlcl87
CiAgIFNvdXJjZVN0YXRlIHN0YXRlXzsKLSAgcnRjOjpUaW1lc3RhbXBBbGlnbmVyIHRpbWVzdGFt
cF9hbGlnbmVyXzsKICAgY29uc3QgYm9vbCBpc19zY3JlZW5jYXN0XzsKKyAgcnRjOjpUaW1lc3Rh
bXBBbGlnbmVyIHRpbWVzdGFtcF9hbGlnbmVyXzsKKyAgY29uc3QgYm9vbCBhbGlnbl90aW1lc3Rh
bXBzXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBqbmkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYXVkaW9f
ZGV2aWNlL2F1ZGlvX2RldmljZV9tb2R1bGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2F1ZGlvX2RldmljZS9hdWRpb19k
ZXZpY2VfbW9kdWxlLmNjCmluZGV4IGRjM2E4ZmU0YmE1NTNhN2RhZTE0MjhjMzJlMDQ0MWE2NjRj
MjZhN2UuLmUwNGEwMWZhZWFkMWJmNjBjM2M2ZjRlMWMxOGNiZDUyZWY4ZGRlZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L3NyYy9qbmkvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9tb2R1bGUuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9h
dWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX21vZHVsZS5jYwpAQCAtMTIsNiArMTIsNyBAQAogCiAj
aW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlv
X2RldmljZV9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnRlZG9iamVj
dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX21vZHVsZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
c3JjL2puaS9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX21vZHVsZS5oCmluZGV4IGNkZGQzZTA2
NzY5Nzg1NTU5NDAzODliMzQ5MmU2MTAyMmViZTFmMDIuLjQ3NmRhMTRjZWI5MjgyNWU5YzMzNDg5
MjQ0MWViZjQwNWNkOGJlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYXVkaW9fZGV2aWNlL2F1ZGlvX2Rl
dmljZV9tb2R1bGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfbW9kdWxl
LmgKQEAgLTE0LDEwICsxNCwxMyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFi
c2wvdHlwZXMvb3B0aW9uYWwuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRp
b19kZXZpY2VfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVk
ZS9hdWRpb19kZXZpY2UuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9uYXRpdmVfYXBpL2puaS9z
Y29wZWRfamF2YV9yZWYuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIEF1ZGlvRGV2
aWNlQnVmZmVyOworCiBuYW1lc3BhY2Ugam5pIHsKIAogY2xhc3MgQXVkaW9JbnB1dCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9zcmMvam5pL2J1aWx0aW5hdWRpb2RlY29kZXJmYWN0b3J5ZmFjdG9yeS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
YnVpbHRpbmF1ZGlvZGVjb2RlcmZhY3RvcnlmYWN0b3J5LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4YTI4NDM2
Mzc0OTY3NjRkNDE4NDEyYzNjOWY0NGRmNDY5OTI2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5p
L2J1aWx0aW5hdWRpb2RlY29kZXJmYWN0b3J5ZmFjdG9yeS5jYwpAQCAtMCwwICsxLDI4IEBACisv
KgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX2J1aWx0
aW5fYXVkaW9fY29kZWNzX2puaS9qbmkvQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5
X2puaS5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL25hdGl2ZV9hcGkvam5pL2phdmFfdHlwZXMu
aCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL2puaV9oZWxwZXJzLmgiCisKKyNpbmNs
dWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIGpuaSB7CisKK3N0YXRpYyBqbG9uZworSk5J
X0J1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeV9DcmVhdGVCdWlsdGluQXVkaW9EZWNv
ZGVyRmFjdG9yeSgKKyAgICBKTklFbnYqIGVudiwKKyAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNs
YXNzPiYgamNhbGxlcikgeworICByZXR1cm4gTmF0aXZlVG9KYXZhUG9pbnRlcihDcmVhdGVCdWls
dGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpLnJlbGVhc2UoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBqbmkKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYnVpbHRpbmF1
ZGlvZW5jb2RlcmZhY3RvcnlmYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9idWlsdGluYXVkaW9lbmNvZGVyZmFj
dG9yeWZhY3RvcnkuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFhZWZiYTlhYjI3OGVmNjQzZGIwMjJkNjBlMjc5
ZTkxYWNlODJiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYnVpbHRpbmF1ZGlvZW5jb2RlcmZh
Y3RvcnlmYWN0b3J5LmNjCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRfYnVpbHRpbl9hdWRpb19jb2RlY3Nfam5pL2pu
aS9CdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3Rvcnlfam5pLmgiCisjaW5jbHVkZSAic2Rr
L2FuZHJvaWQvbmF0aXZlX2FwaS9qbmkvamF2YV90eXBlcy5oIgorI2luY2x1ZGUgInNkay9hbmRy
b2lkL3NyYy9qbmkvam5pX2hlbHBlcnMuaCIKKworI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3Mv
YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7Citu
YW1lc3BhY2Ugam5pIHsKKworc3RhdGljIGpsb25nCitKTklfQnVpbHRpbkF1ZGlvRW5jb2RlckZh
Y3RvcnlGYWN0b3J5X0NyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KAorICAgIEpOSUVu
diogZW52LAorICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+JiBqY2FsbGVyKSB7CisgIHJl
dHVybiBOYXRpdmVUb0phdmFQb2ludGVyKENyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5
KCkucmVsZWFzZSgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGpuaQorfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9lbmNvZGVkaW1hZ2UuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2VuY29kZWRp
bWFnZS5jYwppbmRleCBjMGVhMjhlMmRjMzIzOTI3YThlMjdiMDBkNzNkZjdjN2U1ZDNkYzYxLi4y
MWY4MzM2NGQ5N2Q2N2E1ZjU5NDk3ODRjNTVkZGFhMDZhYTE1ZmU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5p
L2VuY29kZWRpbWFnZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2VuY29kZWRpbWFnZS5jYwpAQCAtMTAsNyArMTAs
NyBAQAogCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9lbmNvZGVkaW1hZ2UuaCIKIAot
I2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCisjaW5jbHVkZSAi
YXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMu
aCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRfdmlkZW9fam5pL2puaS9FbmNvZGVk
SW1hZ2Vfam5pLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvbmF0aXZlX2FwaS9qbmkvamF2YV90
eXBlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfZ2VuZXJhdG9yX2hlbHBlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9q
bmlfZ2VuZXJhdG9yX2hlbHBlci5oCmluZGV4IDUzZTFkODQxMjdkN2I2MWIyNzZiYzMxNjA2NjIx
NDllMmIxODBlMmIuLmU2ZDZmN2VmMTU5ZDY4YWE1NDI1NDBmMTMxZTA0N2U1MzRkYTQxMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL3NyYy9qbmkvam5pX2dlbmVyYXRvcl9oZWxwZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2puaV9nZW5l
cmF0b3JfaGVscGVyLmgKQEAgLTMzLDEyICszMyw2IEBACiAgIFJUQ19DSEVDSygham5pLT5FeGNl
cHRpb25DaGVjaygpKSBcCiAgICAgICA8PCAoam5pLT5FeGNlcHRpb25EZXNjcmliZSgpLCBqbmkt
PkV4Y2VwdGlvbkNsZWFyKCksICIiKQogCi1uYW1lc3BhY2Ugam5pX2dlbmVyYXRvciB7Ci1pbmxp
bmUgdm9pZCBDaGVja0V4Y2VwdGlvbihKTklFbnYqIGVudikgewotICBDSEVDS19FWENFUFRJT04o
ZW52KTsKLX0KLX0gIC8vIG5hbWVzcGFjZSBqbmlfZ2VuZXJhdG9yCi0KIG5hbWVzcGFjZSB3ZWJy
dGMgewogCiAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgaW5pdGlhbGl6ZSB8YXRvbWljX2NsYXNzX2lk
fCB0byBjb250YWluIGEgZ2xvYmFsIHJlZiB0bwpAQCAtODYsNCArODAsODAgQEAgdXNpbmcgd2Vi
cnRjOjpNZXRob2RJRDsKIH0gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCiB9ICAvLyBuYW1lc3BhY2Ug
YmFzZQogCituYW1lc3BhY2Ugam5pX2dlbmVyYXRvciB7CitpbmxpbmUgdm9pZCBDaGVja0V4Y2Vw
dGlvbihKTklFbnYqIGVudikgeworICBDSEVDS19FWENFUFRJT04oZW52KTsKK30KKworLy8gQSAz
MiBiaXQgbnVtYmVyIGNvdWxkIGJlIGFuIGFkZHJlc3Mgb24gc3RhY2suIFJhbmRvbSA2NCBiaXQg
bWFya2VyIG9uIHRoZQorLy8gc3RhY2sgaXMgbXVjaCBsZXNzIGxpa2VseSB0byBiZSBwcmVzZW50
IG9uIHN0YWNrLgorY29uc3RleHByIHVpbnQ2NF90IGtKbmlTdGFja01hcmtlclZhbHVlID0gMHhi
ZGJkZWYxYmViY2FkZTFiOworCisvLyBDb250ZXh0IGFib3V0IHRoZSBKTkkgY2FsbCB3aXRoIGV4
Y2VwdGlvbiBjaGVja2VkIHRvIGJlIHN0b3JlZCBpbiBzdGFjay4KK3N0cnVjdCBCQVNFX0VYUE9S
VCBKbmlKYXZhQ2FsbENvbnRleHRVbmNoZWNrZWQgeworICBpbmxpbmUgSm5pSmF2YUNhbGxDb250
ZXh0VW5jaGVja2VkKCkgeworLy8gVE9ETyhzc2lkKTogSW1wbGVtZW50IGZvciBvdGhlciBhcmNo
aXRlY3R1cmVzLgorI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykK
KyAgICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB0aGlzIG1ldGhvZCBkb2VzIG5vdCBpbmNyZW1lbnQg
dGhlIHN0YWNrIHBvaW50ZXIuCisgICAgYXNtIHZvbGF0aWxlKCJtb3YgJTAsIHNwIiA6ICI9ciIo
c3ApKTsKKyNlbHNlCisgICAgc3AgPSAwOworI2VuZGlmCisgIH0KKworICAvLyBGb3JjZSBubyBp
bmxpbmUgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KKyAgdGVtcGxhdGUgPGJhc2U6OmFuZHJvaWQ6Ok1l
dGhvZElEOjpUeXBlIHR5cGU+CisgIHZvaWQgSW5pdChKTklFbnYqIGVudiwKKyAgICAgICAgICAg
IGpjbGFzcyBjbGF6eiwKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1ldGhvZF9uYW1lLAorICAg
ICAgICAgICAgY29uc3QgY2hhciogam5pX3NpZ25hdHVyZSwKKyAgICAgICAgICAgIHN0ZDo6YXRv
bWljPGptZXRob2RJRD4qIGF0b21pY19tZXRob2RfaWQpIHsKKyAgICBlbnYxID0gZW52OworCisg
ICAgLy8gTWFrZSBzdXJlIGNvbXBpbGVyIGRvZXNuJ3Qgb3B0aW1pemUgb3V0IHRoZSBhc3NpZ25t
ZW50LgorICAgIG1lbWNweSgmbWFya2VyLCAma0puaVN0YWNrTWFya2VyVmFsdWUsIHNpemVvZihr
Sm5pU3RhY2tNYXJrZXJWYWx1ZSkpOworICAgIC8vIEdldHMgUEMgb2YgdGhlIGNhbGxpbmcgZnVu
Y3Rpb24uCisgICAgcGMgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oX19idWlsdGluX3Jl
dHVybl9hZGRyZXNzKDApKTsKKworICAgIG1ldGhvZF9pZCA9IGJhc2U6OmFuZHJvaWQ6Ok1ldGhv
ZElEOjpMYXp5R2V0PHR5cGU+KAorICAgICAgICBlbnYsIGNsYXp6LCBtZXRob2RfbmFtZSwgam5p
X3NpZ25hdHVyZSwgYXRvbWljX21ldGhvZF9pZCk7CisgIH0KKworICB+Sm5pSmF2YUNhbGxDb250
ZXh0VW5jaGVja2VkKCkgeworICAgIC8vIFJlc2V0IHNvIHRoYXQgc3B1cmlvdXMgbWFya2VyIGZp
bmRzIGFyZSBhdm9pZGVkLgorICAgIG1lbXNldCgmbWFya2VyLCAwLCBzaXplb2YobWFya2VyKSk7
CisgIH0KKworICB1aW50NjRfdCBtYXJrZXI7CisgIHVpbnRwdHJfdCBzcDsKKyAgdWludHB0cl90
IHBjOworCisgIEpOSUVudiogZW52MTsKKyAgam1ldGhvZElEIG1ldGhvZF9pZDsKK307CisKKy8v
IENvbnRleHQgYWJvdXQgdGhlIEpOSSBjYWxsIHdpdGggZXhjZXB0aW9uIHVuY2hlY2tlZCB0byBi
ZSBzdG9yZWQgaW4gc3RhY2suCitzdHJ1Y3QgQkFTRV9FWFBPUlQgSm5pSmF2YUNhbGxDb250ZXh0
Q2hlY2tlZCB7CisgIC8vIEZvcmNlIG5vIGlubGluZSB0byByZWR1Y2UgY29kZSBzaXplLgorICB0
ZW1wbGF0ZSA8YmFzZTo6YW5kcm9pZDo6TWV0aG9kSUQ6OlR5cGUgdHlwZT4KKyAgdm9pZCBJbml0
KEpOSUVudiogZW52LAorICAgICAgICAgICAgamNsYXNzIGNsYXp6LAorICAgICAgICAgICAgY29u
c3QgY2hhciogbWV0aG9kX25hbWUsCisgICAgICAgICAgICBjb25zdCBjaGFyKiBqbmlfc2lnbmF0
dXJlLAorICAgICAgICAgICAgc3RkOjphdG9taWM8am1ldGhvZElEPiogYXRvbWljX21ldGhvZF9p
ZCkgeworICAgIGJhc2UuSW5pdDx0eXBlPihlbnYsIGNsYXp6LCBtZXRob2RfbmFtZSwgam5pX3Np
Z25hdHVyZSwgYXRvbWljX21ldGhvZF9pZCk7CisgICAgLy8gUmVzZXQgfHBjfCB0byBjb3JyZWN0
IGNhbGxlci4KKyAgICBiYXNlLnBjID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KF9fYnVp
bHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7CisgIH0KKworICB+Sm5pSmF2YUNhbGxDb250ZXh0Q2hl
Y2tlZCgpIHsgam5pX2dlbmVyYXRvcjo6Q2hlY2tFeGNlcHRpb24oYmFzZS5lbnYxKTsgfQorCisg
IEpuaUphdmFDYWxsQ29udGV4dFVuY2hlY2tlZCBiYXNlOworfTsKKworc3RhdGljX2Fzc2VydChz
aXplb2YoSm5pSmF2YUNhbGxDb250ZXh0Q2hlY2tlZCkgPT0KKyAgICAgICAgICAgICAgICAgIHNp
emVvZihKbmlKYXZhQ2FsbENvbnRleHRVbmNoZWNrZWQpLAorICAgICAgICAgICAgICAiU3RhY2sg
dW53aW5kZXIgY2Fubm90IHdvcmsgd2l0aCBzdHJ1Y3RzIG9mIGRpZmZlcmVudCBzaXplcy4iKTsK
K30gIC8vIG5hbWVzcGFjZSBqbmlfZ2VuZXJhdG9yCisKICNlbmRpZiAgLy8gU0RLX0FORFJPSURf
U1JDX0pOSV9KTklfR0VORVJBVE9SX0hFTFBFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9jcnlw
dG9vcHRpb25zLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvc3JjL2puaS9wYy9jcnlwdG9vcHRpb25zLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmMzhi
MTNmNzhiZGQ3MzNlOTYyYjg1YWY2OTg3OWQyMTQ5MWY3ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMv
am5pL3BjL2NyeXB0b29wdGlvbnMuY2MKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqICBDb3B5cmln
aHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvY3J5cHRvb3B0aW9ucy5oIgor
CisjaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3BlZXJjb25uZWN0aW9uX2puaS9qbmkv
Q3J5cHRvT3B0aW9uc19qbmkuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2Ugam5p
IHsKKworYWJzbDo6b3B0aW9uYWw8Q3J5cHRvT3B0aW9ucz4gSmF2YVRvTmF0aXZlT3B0aW9uYWxD
cnlwdG9PcHRpb25zKAorICAgIEpOSUVudiogam5pLAorICAgIGNvbnN0IEphdmFSZWY8am9iamVj
dD4mIGpfY3J5cHRvX29wdGlvbnMpIHsKKyAgaWYgKGpfY3J5cHRvX29wdGlvbnMuaXNfbnVsbCgp
KSB7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKworICBTY29wZWRKYXZhTG9jYWxS
ZWY8am9iamVjdD4gal9zcnRwID0KKyAgICAgIEphdmFfQ3J5cHRvT3B0aW9uc19nZXRTcnRwKGpu
aSwgal9jcnlwdG9fb3B0aW9ucyk7CisgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX3Nm
cmFtZSA9CisgICAgICBKYXZhX0NyeXB0b09wdGlvbnNfZ2V0U0ZyYW1lKGpuaSwgal9jcnlwdG9f
b3B0aW9ucyk7CisKKyAgQ3J5cHRvT3B0aW9ucyBuYXRpdmVfY3J5cHRvX29wdGlvbnM7CisgIG5h
dGl2ZV9jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9CisgICAg
ICBKYXZhX1NydHBfZ2V0RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKGpuaSwgal9zcnRwKTsKKyAgbmF0
aXZlX2NyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBo
ZXIgPQorICAgICAgSmF2YV9TcnRwX2dldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIo
am5pLCBqX3NydHApOworICBuYXRpdmVfY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZW5jcnlw
dGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9CisgICAgICBKYXZhX1NydHBfZ2V0RW5hYmxlRW5j
cnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucyhqbmksIGpfc3J0cCk7CisgIG5hdGl2ZV9jcnlwdG9f
b3B0aW9ucy5zZnJhbWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uID0KKyAgICAgIEphdmFfU0Zy
YW1lX2dldFJlcXVpcmVGcmFtZUVuY3J5cHRpb24oam5pLCBqX3NmcmFtZSk7CisgIHJldHVybiBh
YnNsOjpvcHRpb25hbDxDcnlwdG9PcHRpb25zPihuYXRpdmVfY3J5cHRvX29wdGlvbnMpOworfQor
Cit9ICAvLyBuYW1lc3BhY2Ugam5pCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL3BjL2NyeXB0b29wdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvY3J5cHRvb3B0aW9ucy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk4OTAyNjRhNTVjNmYyYzM4ODAyNzkxOGViZDkxMmI3NGMzNzIwZTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9zcmMvam5pL3BjL2NyeXB0b29wdGlvbnMuaApAQCAtMCwwICsxLDMwIEBACisvKgor
ICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFNES19BTkRST0lEX1NSQ19KTklfUENfQ1JZUFRPT1BU
SU9OU19IXworI2RlZmluZSBTREtfQU5EUk9JRF9TUkNfSk5JX1BDX0NSWVBUT09QVElPTlNfSF8K
KworI2luY2x1ZGUgPGpuaS5oPgorCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgor
I2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgorI2luY2x1ZGUgInNkay9hbmRy
b2lkL25hdGl2ZV9hcGkvam5pL3Njb3BlZF9qYXZhX3JlZi5oIgorCituYW1lc3BhY2Ugd2VicnRj
IHsKK25hbWVzcGFjZSBqbmkgeworCithYnNsOjpvcHRpb25hbDxDcnlwdG9PcHRpb25zPiBKYXZh
VG9OYXRpdmVPcHRpb25hbENyeXB0b09wdGlvbnMoCisgICAgSk5JRW52KiBqbmksCisgICAgY29u
c3QgSmF2YVJlZjxqb2JqZWN0PiYgal9jcnlwdG9fb3B0aW9ucyk7CisKK30gIC8vIG5hbWVzcGFj
ZSBqbmkKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBTREtfQU5EUk9JRF9T
UkNfSk5JX1BDX0NSWVBUT09QVElPTlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvbnVsbF92aWRl
by5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qbmkvcGMvbnVsbF92aWRlby5jYwppbmRleCAwZTBiODBkNDYxMmYyNWU4NzRiOTBk
OGVhNWE3MjI0MDMxNjQ2NzRhLi41NGE0MDFkNjA1YzE5MTI4M2FlN2ZjZmZlNDY0NzI5NDIwMjEx
Y2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL251bGxfdmlkZW8uY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9udWxs
X3ZpZGVvLmNjCkBAIC0zMSw3ICszMSw4IEBAIFZpZGVvRGVjb2RlckZhY3RvcnkqIENyZWF0ZVZp
ZGVvRGVjb2RlckZhY3RvcnkoCiB2b2lkKiBDcmVhdGVWaWRlb1NvdXJjZShKTklFbnYqIGVudiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgamJvb2xlYW4gYWxpZ25fdGltZXN0YW1wcykgewogICByZXR1cm4gbnVsbHB0cjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvc3JjL2puaS9wYy9vd25lZGZhY3RvcnlhbmR0aHJlYWRzLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9w
Yy9vd25lZGZhY3RvcnlhbmR0aHJlYWRzLmNjCmluZGV4IDk5ODdmMjUyMjc1ZTMyN2MyZGRhZDRm
MzgwNDlkMGM4ODllOTQ5OWUuLjJkNjJlYTMyYTEzMWNjNWUxMzZiODJhMTQ3YjMwZjBkNzk3NzJh
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvb3duZWRmYWN0b3J5YW5kdGhyZWFkcy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMv
am5pL3BjL293bmVkZmFjdG9yeWFuZHRocmVhZHMuY2MKQEAgLTIxLDkgKzIxLDkgQEAgUGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBmYWN0b3J5RnJvbUphdmEoamxvbmcgal9wKSB7CiB9
CiAKIE93bmVkRmFjdG9yeUFuZFRocmVhZHM6Ok93bmVkRmFjdG9yeUFuZFRocmVhZHMoCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFRocmVhZD4gbmV0d29ya190aHJlYWQsCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFRocmVhZD4gd29ya2VyX3RocmVhZCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkPiBz
aWduYWxpbmdfdGhyZWFkLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gbmV0d29y
a190aHJlYWQsCisgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiB3b3JrZXJfdGhyZWFk
LAorICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gc2lnbmFsaW5nX3RocmVhZCwKICAg
ICBydGM6Ok5ldHdvcmtNb25pdG9yRmFjdG9yeSogbmV0d29ya19tb25pdG9yX2ZhY3RvcnksCiAg
ICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBmYWN0b3J5KQogICAgIDogbmV0d29y
a190aHJlYWRfKHN0ZDo6bW92ZShuZXR3b3JrX3RocmVhZCkpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9w
Yy9vd25lZGZhY3RvcnlhbmR0aHJlYWRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL293bmVkZmFjdG9yeWFuZHRocmVh
ZHMuaAppbmRleCAyZWE4NTcwMjgyZDk1NWNhMDAwNjE4ZjEwM2MzMDk3NGM0NGNjOWU4Li5iYWNk
NDJkZmNkNmMxN2Y3OTBjZWFiNWRmZTg0ZjkwYjM0OTMzNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3Bj
L293bmVkZmFjdG9yeWFuZHRocmVhZHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL293bmVkZmFjdG9yeWFuZHRo
cmVhZHMuaApAQCAtMTgsOCArMTgsNiBAQAogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbmlu
dGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogCi11c2luZyBydGM6OlRo
cmVhZDsKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2Ugam5pIHsKIApAQCAtMzMsMTgg
KzMxLDE4IEBAIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9yeUZyb21KYXZh
KGpsb25nIGpfcCk7CiAvLyBzaW5nbGUgdGhpbmcgZm9yIEphdmEgdG8gaG9sZCBhbmQgZXZlbnR1
YWxseSBmcmVlLgogY2xhc3MgT3duZWRGYWN0b3J5QW5kVGhyZWFkcyB7CiAgcHVibGljOgotICBP
d25lZEZhY3RvcnlBbmRUaHJlYWRzKHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWQ+IG5ldHdvcmtfdGhy
ZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWQ+IHdv
cmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRo
cmVhZD4gc2lnbmFsaW5nX3RocmVhZCwKKyAgT3duZWRGYWN0b3J5QW5kVGhyZWFkcyhzdGQ6OnVu
aXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IG5ldHdvcmtfdGhyZWFkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gd29ya2VyX3RocmVhZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHNpZ25hbGlu
Z190aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpOZXR3b3JrTW9uaXRvckZh
Y3RvcnkqIG5ldHdvcmtfbW9uaXRvcl9mYWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAg
IFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9yeSk7CiAKICAgfk93bmVkRmFj
dG9yeUFuZFRocmVhZHMoKTsKIAogICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UqIGZh
Y3RvcnkoKSB7IHJldHVybiBmYWN0b3J5XzsgfQotICBUaHJlYWQqIG5ldHdvcmtfdGhyZWFkKCkg
eyByZXR1cm4gbmV0d29ya190aHJlYWRfLmdldCgpOyB9Ci0gIFRocmVhZCogc2lnbmFsaW5nX3Ro
cmVhZCgpIHsgcmV0dXJuIHNpZ25hbGluZ190aHJlYWRfLmdldCgpOyB9Ci0gIFRocmVhZCogd29y
a2VyX3RocmVhZCgpIHsgcmV0dXJuIHdvcmtlcl90aHJlYWRfLmdldCgpOyB9CisgIHJ0Yzo6VGhy
ZWFkKiBuZXR3b3JrX3RocmVhZCgpIHsgcmV0dXJuIG5ldHdvcmtfdGhyZWFkXy5nZXQoKTsgfQor
ICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCgpIHsgcmV0dXJuIHNpZ25hbGluZ190aHJl
YWRfLmdldCgpOyB9CisgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkKCkgeyByZXR1cm4gd29y
a2VyX3RocmVhZF8uZ2V0KCk7IH0KICAgcnRjOjpOZXR3b3JrTW9uaXRvckZhY3RvcnkqIG5ldHdv
cmtfbW9uaXRvcl9mYWN0b3J5KCkgewogICAgIHJldHVybiBuZXR3b3JrX21vbml0b3JfZmFjdG9y
eV87CiAgIH0KQEAgLTUyLDkgKzUwLDkgQEAgY2xhc3MgT3duZWRGYWN0b3J5QW5kVGhyZWFkcyB7
CiAgIHZvaWQgSW52b2tlSmF2YUNhbGxiYWNrc09uRmFjdG9yeVRocmVhZHMoKTsKIAogIHByaXZh
dGU6Ci0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWQ+IG5ldHdvcmtfdGhyZWFkXzsKLSAg
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPFRocmVhZD4gd29ya2VyX3RocmVhZF87Ci0gIGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxUaHJlYWQ+IHNpZ25hbGluZ190aHJlYWRfOworICBjb25zdCBzdGQ6OnVu
aXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IG5ldHdvcmtfdGhyZWFkXzsKKyAgY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPHJ0Yzo6VGhyZWFkPiB3b3JrZXJfdGhyZWFkXzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPHJ0Yzo6VGhyZWFkPiBzaWduYWxpbmdfdGhyZWFkXzsKICAgcnRjOjpOZXR3b3JrTW9uaXRv
ckZhY3RvcnkqIG5ldHdvcmtfbW9uaXRvcl9mYWN0b3J5XzsKICAgUGVlckNvbm5lY3Rpb25GYWN0
b3J5SW50ZXJmYWNlKiBmYWN0b3J5XzsgIC8vIENvbnN0IGFmdGVyIGN0b3IgZXhjZXB0IGR0b3Iu
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbi5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvcGVl
cmNvbm5lY3Rpb24uY2MKaW5kZXggNzlkYTc5N2UzODg3N2Q4YmZlZTQwYjNkMjg5ZThlNTc4MjA2
MjllZi4uMDUxNWNlMjY0ZTczOWQ3Y2Y1MzE1ZGVjOTkwNWY5MTc4NWUwMWY1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
c3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJjb25uZWN0aW9u
LmNjCkBAIC00MywxMCArNDMsMTIgQEAKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRf
cGVlcmNvbm5lY3Rpb25fam5pL2puaS9QZWVyQ29ubmVjdGlvbl9qbmkuaCIKICNpbmNsdWRlICJz
ZGsvYW5kcm9pZC9uYXRpdmVfYXBpL2puaS9qYXZhX3R5cGVzLmgiCiAjaW5jbHVkZSAic2RrL2Fu
ZHJvaWQvc3JjL2puaS9qbmlfaGVscGVycy5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9q
bmkvcGMvY3J5cHRvb3B0aW9ucy5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMv
ZGF0YWNoYW5uZWwuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL2ljZWNhbmRp
ZGF0ZS5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvbWVkaWFjb25zdHJhaW50
cy5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvbWVkaWFzdHJlYW10cmFjay5o
IgorI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuaCIKICNp
bmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL3J0Y3N0YXRzY29sbGVjdG9yY2FsbGJhY2t3
cmFwcGVyLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9wYy9ydHBzZW5kZXIuaCIK
ICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL3NkcG9ic2VydmVyLmgiCkBAIC0xMjks
NiArMTMxLDggQEAgdm9pZCBKYXZhVG9OYXRpdmVSVENDb25maWd1cmF0aW9uKAogICAgICAgSmF2
YV9SVENDb25maWd1cmF0aW9uX2dldEJ1bmRsZVBvbGljeShqbmksIGpfcnRjX2NvbmZpZyk7CiAg
IFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX3J0Y3BfbXV4X3BvbGljeSA9CiAgICAgICBK
YXZhX1JUQ0NvbmZpZ3VyYXRpb25fZ2V0UnRjcE11eFBvbGljeShqbmksIGpfcnRjX2NvbmZpZyk7
CisgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX3J0Y19jZXJ0aWZpY2F0ZSA9CisgICAg
ICBKYXZhX1JUQ0NvbmZpZ3VyYXRpb25fZ2V0Q2VydGlmaWNhdGUoam5pLCBqX3J0Y19jb25maWcp
OwogICBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gal90Y3BfY2FuZGlkYXRlX3BvbGljeSA9
CiAgICAgICBKYXZhX1JUQ0NvbmZpZ3VyYXRpb25fZ2V0VGNwQ2FuZGlkYXRlUG9saWN5KGpuaSwg
al9ydGNfY29uZmlnKTsKICAgU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IGpfY2FuZGlkYXRl
X25ldHdvcmtfcG9saWN5ID0KQEAgLTE0MywxMSArMTQ3LDIwIEBAIHZvaWQgSmF2YVRvTmF0aXZl
UlRDQ29uZmlndXJhdGlvbigKICAgICAgIEphdmFfUlRDQ29uZmlndXJhdGlvbl9nZXROZXR3b3Jr
UHJlZmVyZW5jZShqbmksIGpfcnRjX2NvbmZpZyk7CiAgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2Jq
ZWN0PiBqX3NkcF9zZW1hbnRpY3MgPQogICAgICAgSmF2YV9SVENDb25maWd1cmF0aW9uX2dldFNk
cFNlbWFudGljcyhqbmksIGpfcnRjX2NvbmZpZyk7CisgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2Jq
ZWN0PiBqX2NyeXB0b19vcHRpb25zID0KKyAgICAgIEphdmFfUlRDQ29uZmlndXJhdGlvbl9nZXRD
cnlwdG9PcHRpb25zKGpuaSwgal9ydGNfY29uZmlnKTsKIAogICBydGNfY29uZmlnLT50eXBlID0g
SmF2YVRvTmF0aXZlSWNlVHJhbnNwb3J0c1R5cGUoam5pLCBqX2ljZV90cmFuc3BvcnRzX3R5cGUp
OwogICBydGNfY29uZmlnLT5idW5kbGVfcG9saWN5ID0gSmF2YVRvTmF0aXZlQnVuZGxlUG9saWN5
KGpuaSwgal9idW5kbGVfcG9saWN5KTsKICAgcnRjX2NvbmZpZy0+cnRjcF9tdXhfcG9saWN5ID0K
ICAgICAgIEphdmFUb05hdGl2ZVJ0Y3BNdXhQb2xpY3koam5pLCBqX3J0Y3BfbXV4X3BvbGljeSk7
CisgIGlmICghal9ydGNfY2VydGlmaWNhdGUuaXNfbnVsbCgpKSB7CisgICAgcnRjOjpzY29wZWRf
cmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRlID0KKyAgICAgICAgcnRjOjpS
VENDZXJ0aWZpY2F0ZTo6RnJvbVBFTSgKKyAgICAgICAgICAgIEphdmFUb05hdGl2ZVJUQ0NlcnRp
ZmljYXRlUEVNKGpuaSwgal9ydGNfY2VydGlmaWNhdGUpKTsKKyAgICBSVENfQ0hFQ0soY2VydGlm
aWNhdGUgIT0gbnVsbHB0cikgPDwgInN1cHBsaWVkIGNlcnRpZmljYXRlIGlzIG1hbGZvcm1lZC4i
OworICAgIHJ0Y19jb25maWctPmNlcnRpZmljYXRlcy5wdXNoX2JhY2soY2VydGlmaWNhdGUpOwor
ICB9CiAgIHJ0Y19jb25maWctPnRjcF9jYW5kaWRhdGVfcG9saWN5ID0KICAgICAgIEphdmFUb05h
dGl2ZVRjcENhbmRpZGF0ZVBvbGljeShqbmksIGpfdGNwX2NhbmRpZGF0ZV9wb2xpY3kpOwogICBy
dGNfY29uZmlnLT5jYW5kaWRhdGVfbmV0d29ya19wb2xpY3kgPQpAQCAtMjM0LDYgKzI0NywxMyBA
QCB2b2lkIEphdmFUb05hdGl2ZVJUQ0NvbmZpZ3VyYXRpb24oCiAgIHJ0Y19jb25maWctPnNkcF9z
ZW1hbnRpY3MgPSBKYXZhVG9OYXRpdmVTZHBTZW1hbnRpY3Moam5pLCBqX3NkcF9zZW1hbnRpY3Mp
OwogICBydGNfY29uZmlnLT5hY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMgPQogICAgICAgSmF2YV9S
VENDb25maWd1cmF0aW9uX2dldEFjdGl2ZVJlc2V0U3J0cFBhcmFtcyhqbmksIGpfcnRjX2NvbmZp
Zyk7CisgIHJ0Y19jb25maWctPnVzZV9tZWRpYV90cmFuc3BvcnQgPQorICAgICAgSmF2YV9SVEND
b25maWd1cmF0aW9uX2dldFVzZU1lZGlhVHJhbnNwb3J0KGpuaSwgal9ydGNfY29uZmlnKTsKKyAg
cnRjX2NvbmZpZy0+dXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9CisgICAg
ICBKYXZhX1JUQ0NvbmZpZ3VyYXRpb25fZ2V0VXNlTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5l
bHMoam5pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpfcnRjX2NvbmZpZyk7CisgIHJ0Y19jb25maWctPmNyeXB0b19vcHRp
b25zID0KKyAgICAgIEphdmFUb05hdGl2ZU9wdGlvbmFsQ3J5cHRvT3B0aW9ucyhqbmksIGpfY3J5
cHRvX29wdGlvbnMpOwogfQogCiBydGM6OktleVR5cGUgR2V0UnRjQ29uZmlnS2V5VHlwZShKTklF
bnYqIGVudiwKQEAgLTI3OSw2ICsyOTksMTQgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbk9ic2VydmVy
Sm5pOjpPbkljZUNvbm5lY3Rpb25DaGFuZ2UoCiAgICAgICBKYXZhX0ljZUNvbm5lY3Rpb25TdGF0
ZV9mcm9tTmF0aXZlSW5kZXgoZW52LCBuZXdfc3RhdGUpKTsKIH0KIAordm9pZCBQZWVyQ29ubmVj
dGlvbk9ic2VydmVySm5pOjpPbkNvbm5lY3Rpb25DaGFuZ2UoCisgICAgUGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSB7CisgIEpOSUVudiogZW52
ID0gQXR0YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7CisgIEphdmFfT2JzZXJ2ZXJfb25Db25u
ZWN0aW9uQ2hhbmdlKGVudiwgal9vYnNlcnZlcl9nbG9iYWxfLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBKYXZhX1BlZXJDb25uZWN0aW9uU3RhdGVfZnJvbU5hdGl2ZUluZGV4
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LCBzdGF0aWNfY2Fz
dDxpbnQ+KG5ld19zdGF0ZSkpKTsKK30KKwogdm9pZCBQZWVyQ29ubmVjdGlvbk9ic2VydmVySm5p
OjpPbkljZUNvbm5lY3Rpb25SZWNlaXZpbmdDaGFuZ2UoYm9vbCByZWNlaXZpbmcpIHsKICAgSk5J
RW52KiBlbnYgPSBBdHRhY2hDdXJyZW50VGhyZWFkSWZOZWVkZWQoKTsKICAgSmF2YV9PYnNlcnZl
cl9vbkljZUNvbm5lY3Rpb25SZWNlaXZpbmdDaGFuZ2UoZW52LCBqX29ic2VydmVyX2dsb2JhbF8s
CkBAIC00MjksNiArNDU3LDE2IEBAIHN0YXRpYyBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4g
Sk5JX1BlZXJDb25uZWN0aW9uX0dldFJlbW90ZURlc2NyaXB0aW9uKAogICByZXR1cm4gc2RwID8g
TmF0aXZlVG9KYXZhU2Vzc2lvbkRlc2NyaXB0aW9uKGpuaSwgc2RwKSA6IG51bGxwdHI7CiB9CiAK
K3N0YXRpYyBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gSk5JX1BlZXJDb25uZWN0aW9uX0dl
dENlcnRpZmljYXRlKAorICAgIEpOSUVudiogam5pLAorICAgIGNvbnN0IEphdmFQYXJhbVJlZjxq
b2JqZWN0PiYgal9wYykgeworICBjb25zdCBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29u
ZmlndXJhdGlvbiBydGNfY29uZmlnID0KKyAgICAgIEV4dHJhY3ROYXRpdmVQQyhqbmksIGpfcGMp
LT5HZXRDb25maWd1cmF0aW9uKCk7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxydGM6OlJUQ0NlcnRp
ZmljYXRlPiBjZXJ0aWZpY2F0ZSA9CisgICAgICBydGNfY29uZmlnLmNlcnRpZmljYXRlc1swXTsK
KyAgcmV0dXJuIE5hdGl2ZVRvSmF2YVJUQ0NlcnRpZmljYXRlUEVNKGpuaSwgY2VydGlmaWNhdGUt
PlRvUEVNKCkpOworfQorCiBzdGF0aWMgU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IEpOSV9Q
ZWVyQ29ubmVjdGlvbl9DcmVhdGVEYXRhQ2hhbm5lbCgKICAgICBKTklFbnYqIGpuaSwKICAgICBj
b25zdCBKYXZhUGFyYW1SZWY8am9iamVjdD4mIGpfcGMsCkBAIC03MjIsNiArNzYwLDE0IEBAIHN0
YXRpYyBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gSk5JX1BlZXJDb25uZWN0aW9uX0ljZUNv
bm5lY3Rpb25TdGF0ZSgKICAgICAgIGVudiwgRXh0cmFjdE5hdGl2ZVBDKGVudiwgal9wYyktPmlj
ZV9jb25uZWN0aW9uX3N0YXRlKCkpOwogfQogCitzdGF0aWMgU2NvcGVkSmF2YUxvY2FsUmVmPGpv
YmplY3Q+IEpOSV9QZWVyQ29ubmVjdGlvbl9Db25uZWN0aW9uU3RhdGUoCisgICAgSk5JRW52KiBl
bnYsCisgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpvYmplY3Q+JiBqX3BjKSB7CisgIHJldHVybiBK
YXZhX1BlZXJDb25uZWN0aW9uU3RhdGVfZnJvbU5hdGl2ZUluZGV4KAorICAgICAgZW52LAorICAg
ICAgc3RhdGljX2Nhc3Q8aW50PihFeHRyYWN0TmF0aXZlUEMoZW52LCBqX3BjKS0+cGVlcl9jb25u
ZWN0aW9uX3N0YXRlKCkpKTsKK30KKwogc3RhdGljIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0
PiBKTklfUGVlckNvbm5lY3Rpb25fSWNlR2F0aGVyaW5nU3RhdGUoCiAgICAgSk5JRW52KiBlbnYs
CiAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpvYmplY3Q+JiBqX3BjKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMv
am5pL3BjL3BlZXJjb25uZWN0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJjb25uZWN0aW9uLmgKaW5kZXgg
ZjIwMTY2NzI3ZWEwYjQ5NTRiMDZhMTIxZWNjYzkzY2M2Y2FjNzVjMC4uYTlkN2IzOWMzZDQyMTdj
ZTJlYzgyNTdhMTM5N2ZiNjg3MjNlMjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9wZWVyY29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qbmkvcGMvcGVlcmNvbm5lY3Rpb24uaApAQCAtNTEsNiArNTEsOCBAQCBj
bGFzcyBQZWVyQ29ubmVjdGlvbk9ic2VydmVySm5pIDogcHVibGljIFBlZXJDb25uZWN0aW9uT2Jz
ZXJ2ZXIgewogICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlNpZ25hbGluZ1N0YXRlIG5l
d19zdGF0ZSkgb3ZlcnJpZGU7CiAgIHZvaWQgT25JY2VDb25uZWN0aW9uQ2hhbmdlKAogICAgICAg
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpIG92
ZXJyaWRlOworICB2b2lkIE9uQ29ubmVjdGlvbkNoYW5nZSgKKyAgICAgIFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0ZSkgb3ZlcnJpZGU7CiAgIHZv
aWQgT25JY2VDb25uZWN0aW9uUmVjZWl2aW5nQ2hhbmdlKGJvb2wgcmVjZWl2aW5nKSBvdmVycmlk
ZTsKICAgdm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZSgKICAgICAgIFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0ZSBuZXdfc3RhdGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
c3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJjb25uZWN0
aW9uZmFjdG9yeS5jYwppbmRleCAzZGU3OTU1NWE2M2MxZGQ4MDVjYWUxMzUzMzhkYjRhYWUzOGVj
Yzk5Li5jMmI4YjljNWQ3ZGZhN2JmZTJlYjg0MTZhOGUxMjJmNDAxNjY3MjhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJjb25u
ZWN0aW9uZmFjdG9yeS5jYwpAQCAtNTAsMTAgKzUwLDYgQEAgSmF2YVRvTmF0aXZlUGVlckNvbm5l
Y3Rpb25GYWN0b3J5T3B0aW9ucyhKTklFbnYqIGpuaSwKICAgYm9vbCBkaXNhYmxlX2VuY3J5cHRp
b24gPSBKYXZhX09wdGlvbnNfZ2V0RGlzYWJsZUVuY3J5cHRpb24oam5pLCBvcHRpb25zKTsKICAg
Ym9vbCBkaXNhYmxlX25ldHdvcmtfbW9uaXRvciA9CiAgICAgICBKYXZhX09wdGlvbnNfZ2V0RGlz
YWJsZU5ldHdvcmtNb25pdG9yKGpuaSwgb3B0aW9ucyk7Ci0gIGJvb2wgZW5hYmxlX2FlczEyOF9z
aGExXzMyX2NyeXB0b19jaXBoZXIgPQotICAgICAgSmF2YV9PcHRpb25zX2dldEVuYWJsZUFlczEy
OFNoYTFfMzJDcnlwdG9DaXBoZXIoam5pLCBvcHRpb25zKTsKLSAgYm9vbCBlbmFibGVfZ2NtX2Ny
eXB0b19zdWl0ZXMgPQotICAgICAgSmF2YV9PcHRpb25zX2dldEVuYWJsZUdjbUNyeXB0b1N1aXRl
cyhqbmksIG9wdGlvbnMpOwogCiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0
aW9ucyBuYXRpdmVfb3B0aW9uczsKIApAQCAtNjMsMTAgKzU5LDYgQEAgSmF2YVRvTmF0aXZlUGVl
ckNvbm5lY3Rpb25GYWN0b3J5T3B0aW9ucyhKTklFbnYqIGpuaSwKICAgbmF0aXZlX29wdGlvbnMu
ZGlzYWJsZV9lbmNyeXB0aW9uID0gZGlzYWJsZV9lbmNyeXB0aW9uOwogICBuYXRpdmVfb3B0aW9u
cy5kaXNhYmxlX25ldHdvcmtfbW9uaXRvciA9IGRpc2FibGVfbmV0d29ya19tb25pdG9yOwogCi0g
IG5hdGl2ZV9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlw
dG9fY2lwaGVyID0KLSAgICAgIGVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyOwot
ICBuYXRpdmVfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMg
PQotICAgICAgZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzOwogICByZXR1cm4gbmF0aXZlX29wdGlv
bnM7CiB9CiAKQEAgLTE5OSwxNSArMTkxLDIxIEBAIHN0YXRpYyB2b2lkIEpOSV9QZWVyQ29ubmVj
dGlvbkZhY3RvcnlfU2h1dGRvd25JbnRlcm5hbFRyYWNlcigKICAgcnRjOjp0cmFjaW5nOjpTaHV0
ZG93bkludGVybmFsVHJhY2VyKCk7CiB9CiAKKy8vIEZvbGxvd2luZyBwYXJhbWV0ZXJzIGFyZSBv
cHRpb25hbDoKKy8vIHxhdWRpb19kZXZpY2VfbW9kdWxlfCwgfGplbmNvZGVyX2ZhY3Rvcnl8LCB8
amRlY29kZXJfZmFjdG9yeXwsCisvLyB8YXVkaW9fcHJvY2Vzc29yfCwgfG1lZGlhX3RyYW5zcG9y
dF9mYWN0b3J5fCwgfGZlY19jb250cm9sbGVyX2ZhY3Rvcnl8LgogamxvbmcgQ3JlYXRlUGVlckNv
bm5lY3Rpb25GYWN0b3J5Rm9ySmF2YSgKICAgICBKTklFbnYqIGpuaSwKICAgICBjb25zdCBKYXZh
UGFyYW1SZWY8am9iamVjdD4mIGpjb250ZXh0LAogICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqb2Jq
ZWN0PiYgam9wdGlvbnMsCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxl
PiBhdWRpb19kZXZpY2VfbW9kdWxlLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29k
ZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRy
PEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKICAgICBjb25zdCBK
YXZhUGFyYW1SZWY8am9iamVjdD4mIGplbmNvZGVyX2ZhY3RvcnksCiAgICAgY29uc3QgSmF2YVBh
cmFtUmVmPGpvYmplY3Q+JiBqZGVjb2Rlcl9mYWN0b3J5LAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NvciwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RmVjQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+IGZlY19jb250cm9sbGVyX2ZhY3RvcnkpIHsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+IGZlY19j
b250cm9sbGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0RmFj
dG9yeT4gbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpIHsKICAgLy8gdGFsay8gYXNzdW1lcyBwcmV0
dHkgd2lkZWx5IHRoYXQgdGhlIGN1cnJlbnQgVGhyZWFkIGlzIFRocmVhZE1hbmFnZXInZCwgYnV0
CiAgIC8vIFRocmVhZE1hbmFnZXIgb25seSBXcmFwQ3VycmVudFRocmVhZCgpcyB0aGUgdGhyZWFk
IHdoZXJlIGl0IGlzIGZpcnN0CiAgIC8vIGNyZWF0ZWQuICBTaW5jZSB0aGUgc2VtYW50aWNzIGFy
b3VuZCB3aGVuIGF1dG8td3JhcHBpbmcgaGFwcGVucyBpbgpAQCAtMjI5LDggKzIyNyw2IEBAIGps
b25nIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUZvckphdmEoCiAgIFJUQ19DSEVDSyhzaWdu
YWxpbmdfdGhyZWFkLT5TdGFydCgpKSA8PCAiRmFpbGVkIHRvIHN0YXJ0IHRocmVhZCI7CiAKICAg
cnRjOjpOZXR3b3JrTW9uaXRvckZhY3RvcnkqIG5ldHdvcmtfbW9uaXRvcl9mYWN0b3J5ID0gbnVs
bHB0cjsKLSAgYXV0byBhdWRpb19lbmNvZGVyX2ZhY3RvcnkgPSBDcmVhdGVBdWRpb0VuY29kZXJG
YWN0b3J5KCk7Ci0gIGF1dG8gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5ID0gQ3JlYXRlQXVkaW9EZWNv
ZGVyRmFjdG9yeSgpOwogCiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0aW9u
cyBvcHRpb25zOwogICBib29sIGhhc19vcHRpb25zID0gIWpvcHRpb25zLmlzX251bGwoKTsKQEAg
LTI1NywxMiArMjUzLDE5IEBAIGpsb25nIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUZvckph
dmEoCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9yeT4oCiAgICAgICAg
ICAgQ3JlYXRlVmlkZW9EZWNvZGVyRmFjdG9yeShqbmksIGpkZWNvZGVyX2ZhY3RvcnkpKSwKICAg
ICAgIGF1ZGlvX21peGVyLCBhdWRpb19wcm9jZXNzb3IpKTsKKyAgUGVlckNvbm5lY3Rpb25GYWN0
b3J5RGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llczsKKyAgZGVwZW5kZW5jaWVzLm5ldHdvcmtfdGhy
ZWFkID0gbmV0d29ya190aHJlYWQuZ2V0KCk7CisgIGRlcGVuZGVuY2llcy53b3JrZXJfdGhyZWFk
ID0gd29ya2VyX3RocmVhZC5nZXQoKTsKKyAgZGVwZW5kZW5jaWVzLnNpZ25hbGluZ190aHJlYWQg
PSBzaWduYWxpbmdfdGhyZWFkLmdldCgpOworICBkZXBlbmRlbmNpZXMubWVkaWFfZW5naW5lID0g
c3RkOjptb3ZlKG1lZGlhX2VuZ2luZSk7CisgIGRlcGVuZGVuY2llcy5jYWxsX2ZhY3RvcnkgPSBz
dGQ6Om1vdmUoY2FsbF9mYWN0b3J5KTsKKyAgZGVwZW5kZW5jaWVzLmV2ZW50X2xvZ19mYWN0b3J5
ID0gc3RkOjptb3ZlKHJ0Y19ldmVudF9sb2dfZmFjdG9yeSk7CisgIGRlcGVuZGVuY2llcy5mZWNf
Y29udHJvbGxlcl9mYWN0b3J5ID0gc3RkOjptb3ZlKGZlY19jb250cm9sbGVyX2ZhY3RvcnkpOwor
ICBkZXBlbmRlbmNpZXMubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgPSBzdGQ6Om1vdmUobWVkaWFf
dHJhbnNwb3J0X2ZhY3RvcnkpOwogCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2U+IGZhY3RvcnkoCi0gICAgICBDcmVhdGVNb2R1bGFyUGVlckNvbm5l
Y3Rpb25GYWN0b3J5KAotICAgICAgICAgIG5ldHdvcmtfdGhyZWFkLmdldCgpLCB3b3JrZXJfdGhy
ZWFkLmdldCgpLCBzaWduYWxpbmdfdGhyZWFkLmdldCgpLAotICAgICAgICAgIHN0ZDo6bW92ZSht
ZWRpYV9lbmdpbmUpLCBzdGQ6Om1vdmUoY2FsbF9mYWN0b3J5KSwKLSAgICAgICAgICBzdGQ6Om1v
dmUocnRjX2V2ZW50X2xvZ19mYWN0b3J5KSwgc3RkOjptb3ZlKGZlY19jb250cm9sbGVyX2ZhY3Rv
cnkpKSk7CisgICAgICBDcmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KHN0ZDo6bW92
ZShkZXBlbmRlbmNpZXMpKSk7CisKICAgUlRDX0NIRUNLKGZhY3RvcnkpIDw8ICJGYWlsZWQgdG8g
Y3JlYXRlIHRoZSBwZWVyIGNvbm5lY3Rpb24gZmFjdG9yeTsgIgogICAgICAgICAgICAgICAgICAg
ICAgPDwgIldlYlJUQy9saWJqaW5nbGUgaW5pdCBsaWtlbHkgZmFpbGVkIG9uIHRoaXMgZGV2aWNl
IjsKICAgLy8gVE9ETyhob25naGFpeik6IE1heWJlIHB1dCB0aGUgb3B0aW9ucyBhcyB0aGUgYXJn
dW1lbnQgb2YKQEAgLTI4MywyMSArMjg2LDM5IEBAIHN0YXRpYyBqbG9uZyBKTklfUGVlckNvbm5l
Y3Rpb25GYWN0b3J5X0NyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKICAgICBjb25zdCBKYXZh
UGFyYW1SZWY8am9iamVjdD4mIGpjb250ZXh0LAogICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqb2Jq
ZWN0PiYgam9wdGlvbnMsCiAgICAgamxvbmcgbmF0aXZlX2F1ZGlvX2RldmljZV9tb2R1bGUsCisg
ICAgamxvbmcgbmF0aXZlX2F1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBqbG9uZyBuYXRpdmVf
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAogICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqb2JqZWN0PiYg
amVuY29kZXJfZmFjdG9yeSwKICAgICBjb25zdCBKYXZhUGFyYW1SZWY8am9iamVjdD4mIGpkZWNv
ZGVyX2ZhY3RvcnksCiAgICAgamxvbmcgbmF0aXZlX2F1ZGlvX3Byb2Nlc3NvciwKLSAgICBqbG9u
ZyBuYXRpdmVfZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSkgeworICAgIGpsb25nIG5hdGl2ZV9mZWNf
Y29udHJvbGxlcl9mYWN0b3J5LAorICAgIGpsb25nIG5hdGl2ZV9tZWRpYV90cmFuc3BvcnRfZmFj
dG9yeSkgewogICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9j
ZXNzb3IgPQogICAgICAgcmVpbnRlcnByZXRfY2FzdDxBdWRpb1Byb2Nlc3NpbmcqPihuYXRpdmVf
YXVkaW9fcHJvY2Vzc29yKTsKKyAgQXVkaW9FbmNvZGVyRmFjdG9yeSogYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5X3B0ciA9CisgICAgICByZWludGVycHJldF9jYXN0PEF1ZGlvRW5jb2RlckZhY3Rvcnkq
PihuYXRpdmVfYXVkaW9fZW5jb2Rlcl9mYWN0b3J5KTsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEF1
ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSgKKyAgICAgIGF1ZGlvX2Vu
Y29kZXJfZmFjdG9yeV9wdHIpOworICAvLyBSZWxlYXNlIHRoZSBjYWxsZXIncyByZWZlcmVuY2Ug
Y291bnQuCisgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeS0+UmVsZWFzZSgpOworICBBdWRpb0RlY29k
ZXJGYWN0b3J5KiBhdWRpb19kZWNvZGVyX2ZhY3RvcnlfcHRyID0KKyAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8QXVkaW9EZWNvZGVyRmFjdG9yeSo+KG5hdGl2ZV9hdWRpb19kZWNvZGVyX2ZhY3Rvcnkp
OworICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5KAorICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5X3B0cik7CisgIC8vIFJlbGVh
c2UgdGhlIGNhbGxlcidzIHJlZmVyZW5jZSBjb3VudC4KKyAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
LT5SZWxlYXNlKCk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyRmFjdG9yeUludGVy
ZmFjZT4gZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSgKICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RmVj
Q29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2UqPigKICAgICAgICAgICBuYXRpdmVfZmVjX2NvbnRy
b2xsZXJfZmFjdG9yeSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRGYWN0b3J5
PiBtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSgKKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TWVkaWFU
cmFuc3BvcnRGYWN0b3J5Kj4obmF0aXZlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KSk7CiAgIHJl
dHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnlGb3JKYXZhKAogICAgICAgam5pLCBqY29u
dGV4dCwgam9wdGlvbnMsCiAgICAgICByZWludGVycHJldF9jYXN0PEF1ZGlvRGV2aWNlTW9kdWxl
Kj4obmF0aXZlX2F1ZGlvX2RldmljZV9tb2R1bGUpLAotICAgICAgamVuY29kZXJfZmFjdG9yeSwg
amRlY29kZXJfZmFjdG9yeSwKKyAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5LCBqZW5jb2Rlcl9mYWN0b3J5LAorICAgICAgamRlY29kZXJfZmFjdG9yeSwK
ICAgICAgIGF1ZGlvX3Byb2Nlc3NvciA/IGF1ZGlvX3Byb2Nlc3NvciA6IENyZWF0ZUF1ZGlvUHJv
Y2Vzc2luZygpLAotICAgICAgc3RkOjptb3ZlKGZlY19jb250cm9sbGVyX2ZhY3RvcnkpKTsKKyAg
ICAgIHN0ZDo6bW92ZShmZWNfY29udHJvbGxlcl9mYWN0b3J5KSwgc3RkOjptb3ZlKG1lZGlhX3Ry
YW5zcG9ydF9mYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyB2b2lkIEpOSV9QZWVyQ29ubmVjdGlvbkZh
Y3RvcnlfRnJlZUZhY3RvcnkoSk5JRW52KiwKQEAgLTM5NiwxOCArNDE3LDIwIEBAIHN0YXRpYyBq
bG9uZyBKTklfUGVlckNvbm5lY3Rpb25GYWN0b3J5X0NyZWF0ZVBlZXJDb25uZWN0aW9uKAogICAg
ICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb25UeXBlOjprQWdncmVz
c2l2ZSk7CiAgIEphdmFUb05hdGl2ZVJUQ0NvbmZpZ3VyYXRpb24oam5pLCBqX3J0Y19jb25maWcs
ICZydGNfY29uZmlnKTsKIAotICAvLyBHZW5lcmF0ZSBub24tZGVmYXVsdCBjZXJ0aWZpY2F0ZS4K
LSAgcnRjOjpLZXlUeXBlIGtleV90eXBlID0gR2V0UnRjQ29uZmlnS2V5VHlwZShqbmksIGpfcnRj
X2NvbmZpZyk7Ci0gIGlmIChrZXlfdHlwZSAhPSBydGM6OktUX0RFRkFVTFQpIHsKLSAgICBydGM6
OnNjb3BlZF9yZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGUgPQotICAgICAg
ICBydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yOjpHZW5lcmF0ZUNlcnRpZmljYXRlKAotICAg
ICAgICAgICAgcnRjOjpLZXlQYXJhbXMoa2V5X3R5cGUpLCBhYnNsOjpudWxsb3B0KTsKLSAgICBp
ZiAoIWNlcnRpZmljYXRlKSB7Ci0gICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRv
IGdlbmVyYXRlIGNlcnRpZmljYXRlLiBLZXlUeXBlOiAiCi0gICAgICAgICAgICAgICAgICAgICAg
ICA8PCBrZXlfdHlwZTsKLSAgICAgIHJldHVybiAwOworICBpZiAocnRjX2NvbmZpZy5jZXJ0aWZp
Y2F0ZXMuZW1wdHkoKSkgeworICAgIC8vIEdlbmVyYXRlIG5vbi1kZWZhdWx0IGNlcnRpZmljYXRl
LgorICAgIHJ0Yzo6S2V5VHlwZSBrZXlfdHlwZSA9IEdldFJ0Y0NvbmZpZ0tleVR5cGUoam5pLCBq
X3J0Y19jb25maWcpOworICAgIGlmIChrZXlfdHlwZSAhPSBydGM6OktUX0RFRkFVTFQpIHsKKyAg
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxydGM6OlJUQ0NlcnRpZmljYXRlPiBjZXJ0aWZpY2F0ZSA9
CisgICAgICAgICAgcnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcjo6R2VuZXJhdGVDZXJ0aWZp
Y2F0ZSgKKyAgICAgICAgICAgICAgcnRjOjpLZXlQYXJhbXMoa2V5X3R5cGUpLCBhYnNsOjpudWxs
b3B0KTsKKyAgICAgIGlmICghY2VydGlmaWNhdGUpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJP
UikgPDwgIkZhaWxlZCB0byBnZW5lcmF0ZSBjZXJ0aWZpY2F0ZS4gS2V5VHlwZTogIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBrZXlfdHlwZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
ICB9CisgICAgICBydGNfY29uZmlnLmNlcnRpZmljYXRlcy5wdXNoX2JhY2soY2VydGlmaWNhdGUp
OwogICAgIH0KLSAgICBydGNfY29uZmlnLmNlcnRpZmljYXRlcy5wdXNoX2JhY2soY2VydGlmaWNh
dGUpOwogICB9CiAKICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhQ29uc3RyYWludHNJbnRlcmZhY2U+
IGNvbnN0cmFpbnRzOwpAQCAtNDM3LDEyICs0NjAsMTMgQEAgc3RhdGljIGpsb25nIEpOSV9QZWVy
Q29ubmVjdGlvbkZhY3RvcnlfQ3JlYXRlVmlkZW9Tb3VyY2UoCiAgICAgSk5JRW52KiBqbmksCiAg
ICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mLAogICAgIGpsb25nIG5hdGl2ZV9mYWN0b3J5
LAotICAgIGpib29sZWFuIGlzX3NjcmVlbmNhc3QpIHsKKyAgICBqYm9vbGVhbiBpc19zY3JlZW5j
YXN0LAorICAgIGpib29sZWFuIGFsaWduX3RpbWVzdGFtcHMpIHsKICAgT3duZWRGYWN0b3J5QW5k
VGhyZWFkcyogZmFjdG9yeSA9CiAgICAgICByZWludGVycHJldF9jYXN0PE93bmVkRmFjdG9yeUFu
ZFRocmVhZHMqPihuYXRpdmVfZmFjdG9yeSk7CiAgIHJldHVybiBqbG9uZ0Zyb21Qb2ludGVyKENy
ZWF0ZVZpZGVvU291cmNlKGpuaSwgZmFjdG9yeS0+c2lnbmFsaW5nX3RocmVhZCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWN0b3J5LT53b3JrZXJfdGhy
ZWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3Nj
cmVlbmNhc3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aXNfc2NyZWVuY2FzdCwgYWxpZ25fdGltZXN0YW1wcykpOwogfQogCiBzdGF0aWMgamxvbmcgSk5J
X1BlZXJDb25uZWN0aW9uRmFjdG9yeV9DcmVhdGVWaWRlb1RyYWNrKApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2pu
aS9wYy9ydGNjZXJ0aWZpY2F0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGM1OThjY2UwOWUzNWM2YTRhYzJmMTFmMGRkNWZjZmQxYWY5ZTE2NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL3NyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuY2MKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRjY2Vy
dGlmaWNhdGUuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL2ljZWNhbmRpZGF0
ZS5oIgorCisjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9ydGNjZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3J0Y2NlcnRpZmljYXRlZ2Vu
ZXJhdG9yLmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3BlZXJjb25uZWN0aW9u
X2puaS9qbmkvUnRjQ2VydGlmaWNhdGVQZW1fam5pLmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQv
bmF0aXZlX2FwaS9qbmkvamF2YV90eXBlcy5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9q
bmkvam5pX2hlbHBlcnMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2Ugam5pIHsK
KworcnRjOjpSVENDZXJ0aWZpY2F0ZVBFTSBKYXZhVG9OYXRpdmVSVENDZXJ0aWZpY2F0ZVBFTSgK
KyAgICBKTklFbnYqIGpuaSwKKyAgICBjb25zdCBKYXZhUmVmPGpvYmplY3Q+JiBqX3J0Y19jZXJ0
aWZpY2F0ZSkgeworICBTY29wZWRKYXZhTG9jYWxSZWY8anN0cmluZz4gcHJpdmF0ZWtleV9maWVs
ZCA9CisgICAgICBKYXZhX1J0Y0NlcnRpZmljYXRlUGVtX2dldFByaXZhdGVLZXkoam5pLCBqX3J0
Y19jZXJ0aWZpY2F0ZSk7CisgIFNjb3BlZEphdmFMb2NhbFJlZjxqc3RyaW5nPiBjZXJ0aWZpY2F0
ZV9maWVsZCA9CisgICAgICBKYXZhX1J0Y0NlcnRpZmljYXRlUGVtX2dldENlcnRpZmljYXRlKGpu
aSwgal9ydGNfY2VydGlmaWNhdGUpOworICByZXR1cm4gcnRjOjpSVENDZXJ0aWZpY2F0ZVBFTShK
YXZhVG9OYXRpdmVTdHJpbmcoam5pLCBwcml2YXRla2V5X2ZpZWxkKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSmF2YVRvTmF0aXZlU3RyaW5nKGpuaSwgY2VydGlmaWNhdGVfZmll
bGQpKTsKK30KKworU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IE5hdGl2ZVRvSmF2YVJUQ0Nl
cnRpZmljYXRlUEVNKAorICAgIEpOSUVudiogam5pLAorICAgIGNvbnN0IHJ0Yzo6UlRDQ2VydGlm
aWNhdGVQRU0mIGNlcnRpZmljYXRlKSB7CisgIHJldHVybiBKYXZhX1J0Y0NlcnRpZmljYXRlUGVt
X0NvbnN0cnVjdG9yKAorICAgICAgam5pLCBOYXRpdmVUb0phdmFTdHJpbmcoam5pLCBjZXJ0aWZp
Y2F0ZS5wcml2YXRlX2tleSgpKSwKKyAgICAgIE5hdGl2ZVRvSmF2YVN0cmluZyhqbmksIGNlcnRp
ZmljYXRlLmNlcnRpZmljYXRlKCkpKTsKK30KKworc3RhdGljIFNjb3BlZEphdmFMb2NhbFJlZjxq
b2JqZWN0PiBKTklfUnRjQ2VydGlmaWNhdGVQZW1fR2VuZXJhdGVDZXJ0aWZpY2F0ZSgKKyAgICBK
TklFbnYqIGpuaSwKKyAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNzPiYsCisgICAgY29uc3Qg
SmF2YVBhcmFtUmVmPGpvYmplY3Q+JiBqX2tleV90eXBlLAorICAgIGpsb25nIGpfZXhwaXJlcykg
eworICBydGM6OktleVR5cGUga2V5X3R5cGUgPSBKYXZhVG9OYXRpdmVLZXlUeXBlKGpuaSwgal9r
ZXlfdHlwZSk7CisgIHVpbnQ2NF90IGV4cGlyZXMgPSAodWludDY0X3Qpal9leHBpcmVzOworICBy
dGM6OnNjb3BlZF9yZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGUgPQorICAg
ICAgcnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcjo6R2VuZXJhdGVDZXJ0aWZpY2F0ZSgKKyAg
ICAgICAgICBydGM6OktleVBhcmFtcyhrZXlfdHlwZSksIGV4cGlyZXMpOworICBydGM6OlJUQ0Nl
cnRpZmljYXRlUEVNIHBlbSA9IGNlcnRpZmljYXRlLT5Ub1BFTSgpOworICByZXR1cm4gSmF2YV9S
dGNDZXJ0aWZpY2F0ZVBlbV9Db25zdHJ1Y3RvcigKKyAgICAgIGpuaSwgTmF0aXZlVG9KYXZhU3Ry
aW5nKGpuaSwgcGVtLnByaXZhdGVfa2V5KCkpLAorICAgICAgTmF0aXZlVG9KYXZhU3RyaW5nKGpu
aSwgcGVtLmNlcnRpZmljYXRlKCkpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGpuaQorfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9ydGNjZXJ0aWZpY2F0ZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3Jj
L2puaS9wYy9ydGNjZXJ0aWZpY2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZDFmNzVkMTM5OTNkNTBjYmVh
YTZlZDdmNjE1NmM4Mjk2NTlhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3J0Y2NlcnRp
ZmljYXRlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBT
REtfQU5EUk9JRF9TUkNfSk5JX1BDX1JUQ0NFUlRJRklDQVRFX0hfCisjZGVmaW5lIFNES19BTkRS
T0lEX1NSQ19KTklfUENfUlRDQ0VSVElGSUNBVEVfSF8KKworI2luY2x1ZGUgInJ0Y19iYXNlL3Jl
ZmNvdW50LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaCIKKyNpbmNsdWRl
ICJzZGsvYW5kcm9pZC9uYXRpdmVfYXBpL2puaS9qYXZhX3R5cGVzLmgiCisjaW5jbHVkZSAic2Rr
L2FuZHJvaWQvc3JjL2puaS9qbmlfaGVscGVycy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25h
bWVzcGFjZSBqbmkgeworCitydGM6OlJUQ0NlcnRpZmljYXRlUEVNIEphdmFUb05hdGl2ZVJUQ0Nl
cnRpZmljYXRlUEVNKAorICAgIEpOSUVudiogam5pLAorICAgIGNvbnN0IEphdmFSZWY8am9iamVj
dD4mIGpfcnRjX2NlcnRpZmljYXRlKTsKKworU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IE5h
dGl2ZVRvSmF2YVJUQ0NlcnRpZmljYXRlUEVNKAorICAgIEpOSUVudiogZW52LAorICAgIGNvbnN0
IHJ0Yzo6UlRDQ2VydGlmaWNhdGVQRU0mIGNlcnRpZmljYXRlKTsKKworfSAgLy8gbmFtZXNwYWNl
IGpuaQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFNES19BTkRST0lEX1NS
Q19KTklfUENfUlRDQ0VSVElGSUNBVEVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvdmlkZW8uY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL3BjL3ZpZGVvLmNjCmluZGV4IGRkMTBmZDUxY2I2YWQ1ZjRmNzcwZjI4OGIyN2ZhZmJk
N2ZjMDgzZGQuLmM3YzZlNzZkNWQ5YmE3M2UwNWI5MDBkM2JmNWUwYzBjMTBlNTViYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qbmkvcGMvdmlkZW8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy92aWRlby5jYwpAQCAtNDQsMTAg
KzQ0LDExIEBAIFZpZGVvRGVjb2RlckZhY3RvcnkqIENyZWF0ZVZpZGVvRGVjb2RlckZhY3Rvcnko
CiB2b2lkKiBDcmVhdGVWaWRlb1NvdXJjZShKTklFbnYqIGVudiwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqYm9v
bGVhbiBpc19zY3JlZW5jYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgamJvb2xlYW4gYWxp
Z25fdGltZXN0YW1wcykgewogICBydGM6OnNjb3BlZF9yZWZwdHI8QW5kcm9pZFZpZGVvVHJhY2tT
b3VyY2U+IHNvdXJjZSgKLSAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8QW5kcm9pZFZp
ZGVvVHJhY2tTb3VyY2U+KHNpZ25hbGluZ190aHJlYWQsIGVudiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NjcmVlbmNhc3QpKTsK
KyAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8QW5kcm9pZFZpZGVvVHJhY2tTb3VyY2U+
KAorICAgICAgICAgIHNpZ25hbGluZ190aHJlYWQsIGVudiwgaXNfc2NyZWVuY2FzdCwgYWxpZ25f
dGltZXN0YW1wcykpOwogICByZXR1cm4gVmlkZW9UcmFja1NvdXJjZVByb3h5OjpDcmVhdGUoc2ln
bmFsaW5nX3RocmVhZCwgd29ya2VyX3RocmVhZCwgc291cmNlKQogICAgICAgLnJlbGVhc2UoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvdmlkZW8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvdmlkZW8uaAppbmRleCAx
ODM3NzBiODIwNjI4MzkwMmY3OWIzNWY2MDczYjZlYWY3OWU5OGZiLi4wNDM5MGVhNDUzZWEwYTNi
OGNlMTJiMWI0ZTM1ZmNiOGU3ZTY1MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3ZpZGVvLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
c3JjL2puaS9wYy92aWRlby5oCkBAIC0zNiw3ICszNiw4IEBAIFZpZGVvRGVjb2RlckZhY3Rvcnkq
IENyZWF0ZVZpZGVvRGVjb2RlckZhY3RvcnkoCiB2b2lkKiBDcmVhdGVWaWRlb1NvdXJjZShKTklF
bnYqIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdf
dGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJl
YWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGpib29sZWFuIGlzX3NjcmVlbmNhc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICBqYm9vbGVhbiBhbGlnbl90aW1lc3RhbXBzKTsKIAogfSAgLy8gbmFtZXNw
YWNlIGpuaQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS90aW1lc3Rh
bXBhbGlnbmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvc3JjL2puaS90aW1lc3RhbXBhbGlnbmVyLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZTli
MGZkYzUxMzQ1NGY1MGRjYjJiNmJmZDEyYjdiYWMxMGJiYjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMv
am5pL3RpbWVzdGFtcGFsaWduZXIuY2MKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqICBDb3B5cmln
aHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2luY2x1ZGUgPGpuaS5oPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXN0YW1wYWxp
Z25lci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgorI2luY2x1ZGUgInNkay9h
bmRyb2lkL2dlbmVyYXRlZF92aWRlb19qbmkvam5pL1RpbWVzdGFtcEFsaWduZXJfam5pLmgiCisj
aW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfaGVscGVycy5oIgorCituYW1lc3BhY2Ug
d2VicnRjIHsKK25hbWVzcGFjZSBqbmkgeworCitzdGF0aWMgamxvbmcgSk5JX1RpbWVzdGFtcEFs
aWduZXJfUnRjVGltZU5hbm9zKAorICAgIEpOSUVudiogZW52LAorICAgIGNvbnN0IEphdmFQYXJh
bVJlZjxqY2xhc3M+JiBqX2NhbGxlcikgeworICByZXR1cm4gcnRjOjpUaW1lTmFub3MoKTsKK30K
Kworc3RhdGljIGpsb25nIEpOSV9UaW1lc3RhbXBBbGlnbmVyX0NyZWF0ZVRpbWVzdGFtcEFsaWdu
ZXIoCisgICAgSk5JRW52KiBlbnYsCisgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mIGpf
Y2FsbGVyKSB7CisgIHJldHVybiBqbG9uZ0Zyb21Qb2ludGVyKG5ldyBydGM6OlRpbWVzdGFtcEFs
aWduZXIoKSk7Cit9CisKK3N0YXRpYyB2b2lkIEpOSV9UaW1lc3RhbXBBbGlnbmVyX1JlbGVhc2VU
aW1lc3RhbXBBbGlnbmVyKAorICAgIEpOSUVudiogZW52LAorICAgIGNvbnN0IEphdmFQYXJhbVJl
ZjxqY2xhc3M+JiBqX2NhbGxlciwKKyAgICBqbG9uZyB0aW1lc3RhbXBfYWxpZ25lcikgeworICBk
ZWxldGUgcmVpbnRlcnByZXRfY2FzdDxydGM6OlRpbWVzdGFtcEFsaWduZXIqPih0aW1lc3RhbXBf
YWxpZ25lcik7Cit9CisKK3N0YXRpYyBqbG9uZyBKTklfVGltZXN0YW1wQWxpZ25lcl9UcmFuc2xh
dGVUaW1lc3RhbXAoCisgICAgSk5JRW52KiBlbnYsCisgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpj
bGFzcz4mIGpfY2FsbGVyLAorICAgIGpsb25nIHRpbWVzdGFtcF9hbGlnbmVyLAorICAgIGpsb25n
IGNhbWVyYV90aW1lX25zKSB7CisgIHJldHVybiByZWludGVycHJldF9jYXN0PHJ0Yzo6VGltZXN0
YW1wQWxpZ25lcio+KHRpbWVzdGFtcF9hbGlnbmVyKQorICAgICAgICAgICAgIC0+VHJhbnNsYXRl
VGltZXN0YW1wKGNhbWVyYV90aW1lX25zIC8gcnRjOjprTnVtTmFub3NlY3NQZXJNaWNyb3NlYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRpbWVNaWNyb3MoKSkgKgor
ICAgICAgICAgcnRjOjprTnVtTmFub3NlY3NQZXJNaWNyb3NlYzsKK30KKworfSAgLy8gbmFtZXNw
YWNlIGpuaQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb2Vu
Y29kZXJ3cmFwcGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb2VuY29kZXJ3cmFwcGVyLmNjCmluZGV4IDYzODFj
NjNjYjA2ZjkwNzI5NjgxNzhkY2EwOWIxNDRlOTBkYzkwMGQuLjFlNGI4NGVhYzYwZjJiN2M5YmFk
ZWYxYWMxY2JlMDUyYjlhYWU5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdmlkZW9lbmNvZGVyd3JhcHBl
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9zcmMvam5pL3ZpZGVvZW5jb2RlcndyYXBwZXIuY2MKQEAgLTMyLDggKzMyLDYgQEAg
bmFtZXNwYWNlIGpuaSB7CiBWaWRlb0VuY29kZXJXcmFwcGVyOjpWaWRlb0VuY29kZXJXcmFwcGVy
KEpOSUVudiogam5pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBKYXZhUmVmPGpvYmplY3Q+JiBqX2VuY29kZXIpCiAgICAgOiBlbmNvZGVyXyhqbmksIGpf
ZW5jb2RlciksIGludF9hcnJheV9jbGFzc18oR2V0Q2xhc3Moam5pLCAiW0kiKSkgewotICBpbXBs
ZW1lbnRhdGlvbl9uYW1lXyA9IEdldEltcGxlbWVudGF0aW9uTmFtZShqbmkpOwotCiAgIGluaXRp
YWxpemVkXyA9IGZhbHNlOwogICBudW1fcmVzZXRzXyA9IDA7CiB9CkBAIC04Miw2ICs4MCwxMCBA
QCBpbnQzMl90IFZpZGVvRW5jb2RlcldyYXBwZXI6OkluaXRFbmNvZGVJbnRlcm5hbChKTklFbnYq
IGpuaSkgewogICAgICAgam5pLCBKYXZhX1ZpZGVvRW5jb2Rlcl9pbml0RW5jb2RlKGpuaSwgZW5j
b2Rlcl8sIHNldHRpbmdzLCBjYWxsYmFjaykpOwogICBSVENfTE9HKExTX0lORk8pIDw8ICJpbml0
RW5jb2RlOiAiIDw8IHN0YXR1czsKIAorICBlbmNvZGVyX2luZm9fLnN1cHBvcnRzX25hdGl2ZV9o
YW5kbGUgPSB0cnVlOworICBlbmNvZGVyX2luZm9fLmltcGxlbWVudGF0aW9uX25hbWUgPSBHZXRJ
bXBsZW1lbnRhdGlvbk5hbWUoam5pKTsKKyAgZW5jb2Rlcl9pbmZvXy5zY2FsaW5nX3NldHRpbmdz
ID0gR2V0U2NhbGluZ1NldHRpbmdzSW50ZXJuYWwoam5pKTsKKwogICBpZiAoc3RhdHVzID09IFdF
QlJUQ19WSURFT19DT0RFQ19PSykgewogICAgIGluaXRpYWxpemVkXyA9IHRydWU7CiAgIH0KQEAg
LTEzNiwxNCArMTM4LDYgQEAgaW50MzJfdCBWaWRlb0VuY29kZXJXcmFwcGVyOjpFbmNvZGUoCiAg
IHJldHVybiBIYW5kbGVSZXR1cm5Db2RlKGpuaSwgcmV0LCAiZW5jb2RlIik7CiB9CiAKLWludDMy
X3QgVmlkZW9FbmNvZGVyV3JhcHBlcjo6U2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFj
a2V0X2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgcnR0KSB7Ci0gIEpOSUVudiogam5pID0gQXR0YWNoQ3VycmVudFRocmVhZElm
TmVlZGVkKCk7Ci0gIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiByZXQgPSBKYXZhX1ZpZGVv
RW5jb2Rlcl9zZXRDaGFubmVsUGFyYW1ldGVycygKLSAgICAgIGpuaSwgZW5jb2Rlcl8sIChqc2hv
cnQpcGFja2V0X2xvc3MsIChqbG9uZylydHQpOwotICByZXR1cm4gSGFuZGxlUmV0dXJuQ29kZShq
bmksIHJldCwgInNldENoYW5uZWxQYXJhbWV0ZXJzIik7Ci19Ci0KIGludDMyX3QgVmlkZW9FbmNv
ZGVyV3JhcHBlcjo6U2V0UmF0ZUFsbG9jYXRpb24oCiAgICAgY29uc3QgVmlkZW9CaXRyYXRlQWxs
b2NhdGlvbiYgYWxsb2NhdGlvbiwKICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIHsKQEAgLTE1Niw5
ICsxNTAsMTIgQEAgaW50MzJfdCBWaWRlb0VuY29kZXJXcmFwcGVyOjpTZXRSYXRlQWxsb2NhdGlv
bigKICAgcmV0dXJuIEhhbmRsZVJldHVybkNvZGUoam5pLCByZXQsICJzZXRSYXRlQWxsb2NhdGlv
biIpOwogfQogCi1WaWRlb0VuY29kZXJXcmFwcGVyOjpTY2FsaW5nU2V0dGluZ3MgVmlkZW9FbmNv
ZGVyV3JhcHBlcjo6R2V0U2NhbGluZ1NldHRpbmdzKCkKLSAgICBjb25zdCB7Ci0gIEpOSUVudiog
am5pID0gQXR0YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7CitWaWRlb0VuY29kZXI6OkVuY29k
ZXJJbmZvIFZpZGVvRW5jb2RlcldyYXBwZXI6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICBy
ZXR1cm4gZW5jb2Rlcl9pbmZvXzsKK30KKworVmlkZW9FbmNvZGVyV3JhcHBlcjo6U2NhbGluZ1Nl
dHRpbmdzCitWaWRlb0VuY29kZXJXcmFwcGVyOjpHZXRTY2FsaW5nU2V0dGluZ3NJbnRlcm5hbChK
TklFbnYqIGpuaSkgY29uc3QgewogICBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gal9zY2Fs
aW5nX3NldHRpbmdzID0KICAgICAgIEphdmFfVmlkZW9FbmNvZGVyX2dldFNjYWxpbmdTZXR0aW5n
cyhqbmksIGVuY29kZXJfKTsKICAgYm9vbCBpc09uID0KQEAgLTIwNiwxNCArMjAzLDYgQEAgVmlk
ZW9FbmNvZGVyV3JhcHBlcjo6U2NhbGluZ1NldHRpbmdzIFZpZGVvRW5jb2RlcldyYXBwZXI6Okdl
dFNjYWxpbmdTZXR0aW5ncygpCiAgIH0KIH0KIAotYm9vbCBWaWRlb0VuY29kZXJXcmFwcGVyOjpT
dXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0IHsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWNvbnN0
IGNoYXIqIFZpZGVvRW5jb2RlcldyYXBwZXI6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsK
LSAgcmV0dXJuIGltcGxlbWVudGF0aW9uX25hbWVfLmNfc3RyKCk7Ci19Ci0KIHZvaWQgVmlkZW9F
bmNvZGVyV3JhcHBlcjo6T25FbmNvZGVkRnJhbWUoSk5JRW52KiBqbmksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFSZWY8am9iamVjdD4mIGpfY2Fs
bGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKYXZh
UmVmPGpvYmplY3Q+JiBqX2J1ZmZlciwKQEAgLTM4NSw3ICszNzQsNiBAQCBDb2RlY1NwZWNpZmlj
SW5mbyBWaWRlb0VuY29kZXJXcmFwcGVyOjpQYXJzZUNvZGVjU3BlY2lmaWNJbmZvKAogICBDb2Rl
Y1NwZWNpZmljSW5mbyBpbmZvOwogICBtZW1zZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7CiAg
IGluZm8uY29kZWNUeXBlID0gY29kZWNfc2V0dGluZ3NfLmNvZGVjVHlwZTsKLSAgaW5mby5jb2Rl
Y19uYW1lID0gaW1wbGVtZW50YXRpb25fbmFtZV8uY19zdHIoKTsKIAogICBzd2l0Y2ggKGNvZGVj
X3NldHRpbmdzXy5jb2RlY1R5cGUpIHsKICAgICBjYXNlIGtWaWRlb0NvZGVjVlA4OgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS92aWRlb2VuY29kZXJ3cmFwcGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZpZGVvZW5jb2RlcndyYXBw
ZXIuaAppbmRleCBjMzA1NjA1MDNjYjc1ZWY5YWE1NDJkMTgxOTA1NTM5YWU2NGQ0ZGQ4Li4zNjE4
Zjc4NDczNzVlNTkwMzQ1Y2Y3N2MzMDg5ZWMwZDY3Y2ZkMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3Zp
ZGVvZW5jb2RlcndyYXBwZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZpZGVvZW5jb2RlcndyYXBwZXIuaApAQCAt
NDUsMTQgKzQ1LDEwIEBAIGNsYXNzIFZpZGVvRW5jb2RlcldyYXBwZXIgOiBwdWJsaWMgVmlkZW9F
bmNvZGVyIHsKICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVj
X3NwZWNpZmljX2luZm8sCiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1l
VHlwZT4qIGZyYW1lX3R5cGVzKSBvdmVycmlkZTsKIAotICBpbnQzMl90IFNldENoYW5uZWxQYXJh
bWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7Ci0KICAg
aW50MzJfdCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBh
bGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0
ZSkgb3ZlcnJpZGU7CiAKLSAgU2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNv
bnN0IG92ZXJyaWRlOwotCi0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZTsKIAog
ICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgYnkgSk5JLgogICB2b2lkIE9uRW5jb2RlZEZyYW1l
KEpOSUVudiogam5pLApAQCAtNjYsOCArNjIsNiBAQCBjbGFzcyBWaWRlb0VuY29kZXJXcmFwcGVy
IDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgICAgICAgICAgICAgICAgICAgICAgamJvb2xlYW4g
Y29tcGxldGVfZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVJlZjxqb2Jq
ZWN0PiYgal9xcCk7CiAKLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KICBwcml2YXRlOgogICBzdHJ1Y3QgRnJhbWVFeHRyYUluZm8gewogICAgIGlu
dDY0X3QgY2FwdHVyZV90aW1lX25zOyAgLy8gVXNlZCBhcyBhbiBpZGVudGlmaWVyIG9mIHRoZSBm
cmFtZS4KQEAgLTkyLDExICs4NiwxMSBAQCBjbGFzcyBWaWRlb0VuY29kZXJXcmFwcGVyIDogcHVi
bGljIFZpZGVvRW5jb2RlciB7CiAgICAgICBjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBh
bGxvY2F0aW9uKTsKICAgc3RkOjpzdHJpbmcgR2V0SW1wbGVtZW50YXRpb25OYW1lKEpOSUVudiog
am5pKSBjb25zdDsKIAorICBTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzSW50ZXJu
YWwoSk5JRW52KiBqbmkpIGNvbnN0OworCiAgIGNvbnN0IFNjb3BlZEphdmFHbG9iYWxSZWY8am9i
amVjdD4gZW5jb2Rlcl87CiAgIGNvbnN0IFNjb3BlZEphdmFHbG9iYWxSZWY8amNsYXNzPiBpbnRf
YXJyYXlfY2xhc3NfOwogCi0gIHN0ZDo6c3RyaW5nIGltcGxlbWVudGF0aW9uX25hbWVfOwotCiAg
IHJ0Yzo6VGFza1F1ZXVlKiBlbmNvZGVyX3F1ZXVlXzsKICAgc3RkOjpkZXF1ZTxGcmFtZUV4dHJh
SW5mbz4gZnJhbWVfZXh0cmFfaW5mb3NfOwogICBFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJh
Y2tfOwpAQCAtMTA0LDYgKzk4LDcgQEAgY2xhc3MgVmlkZW9FbmNvZGVyV3JhcHBlciA6IHB1Ymxp
YyBWaWRlb0VuY29kZXIgewogICBpbnQgbnVtX3Jlc2V0c187CiAgIGludCBudW1iZXJfb2ZfY29y
ZXNfOwogICBWaWRlb0NvZGVjIGNvZGVjX3NldHRpbmdzXzsKKyAgRW5jb2RlckluZm8gZW5jb2Rl
cl9pbmZvXzsKICAgSDI2NEJpdHN0cmVhbVBhcnNlciBoMjY0X2JpdHN0cmVhbV9wYXJzZXJfOwog
CiAgIC8vIFZQOSB2YXJpYWJsZXMgdG8gcG9wdWxhdGUgY29kZWMgc3BlY2lmaWMgc3RydWN0dXJl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb3NvdXJjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdmlkZW9zb3VyY2UuY2MK
aW5kZXggMDliNTM4ZWJjMjY1YmE5ODdlMGMyMmM2YmNjMzk1MTMxZTg1NTA3Zi4uMzdiYTBiMDRi
MTE1MTAxNTQ3ZTMxNjQ1N2ZiY2E5NjhjNWE5NTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb3Nv
dXJjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvam5pL3ZpZGVvc291cmNlLmNjCkBAIC0zMywxMyArMzMsMTYgQEAgc3Rh
dGljIGpsb25nIEpOSV9WaWRlb1NvdXJjZV9HZXRJbnRlcm5hbFNvdXJjZShKTklFbnYqIGpuaSwK
IHN0YXRpYyB2b2lkIEpOSV9WaWRlb1NvdXJjZV9BZGFwdE91dHB1dEZvcm1hdChKTklFbnYqIGpu
aSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBK
YXZhUGFyYW1SZWY8amNsYXNzPiYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgamxvbmcgal9zb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgamludCBqX3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppbnQgal9oZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBqX2xhbmRzY2FwZV93aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IGpfbGFuZHNjYXBl
X2hlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aW50IGpfcG9ydHJhaXRfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgamludCBqX3BvcnRyYWl0X2hlaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IGpfZnBzKSB7CiAgIFJUQ19MT0coTFNfSU5G
TykgPDwgIlZpZGVvU291cmNlX25hdGl2ZUFkYXB0T3V0cHV0Rm9ybWF0IjsKICAgQW5kcm9pZFZp
ZGVvVHJhY2tTb3VyY2UqIHNvdXJjZSA9CiAgICAgICBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZUZy
b21KYXZhUHJveHkoal9zb3VyY2UpOwotICBzb3VyY2UtPk9uT3V0cHV0Rm9ybWF0UmVxdWVzdChq
X3dpZHRoLCBqX2hlaWdodCwgal9mcHMpOworICBzb3VyY2UtPk9uT3V0cHV0Rm9ybWF0UmVxdWVz
dChqX2xhbmRzY2FwZV93aWR0aCwgal9sYW5kc2NhcGVfaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqX3BvcnRyYWl0X3dpZHRoLCBqX3BvcnRyYWl0X2hlaWdodCwgal9m
cHMpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugam5pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZwOGNvZGVj
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS92cDhjb2RlYy5jYwppbmRleCAyOTVhMDNhNjEwNzcwZjA2Yjk0NDUxMWNmZTAw
M2EyYzI3NWM5ZmM1Li4yNzU2YjEwMmZhZjE5MzI0ZWMwZDZiNGUwOTFjM2ZiZDZjNDE3ZjJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9zcmMvam5pL3ZwOGNvZGVjLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdnA4Y29kZWMuY2MKQEAgLTEx
LDIwICsxMSwyMCBAQAogI2luY2x1ZGUgPGpuaS5oPgogCiAjaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgotI2luY2x1ZGUgInNkay9hbmRyb2lk
L2dlbmVyYXRlZF92cDhfam5pL2puaS9WUDhEZWNvZGVyX2puaS5oIgotI2luY2x1ZGUgInNkay9h
bmRyb2lkL2dlbmVyYXRlZF92cDhfam5pL2puaS9WUDhFbmNvZGVyX2puaS5oIgorI2luY2x1ZGUg
InNkay9hbmRyb2lkL2dlbmVyYXRlZF9saWJ2cHhfdnA4X2puaS9qbmkvTGlidnB4VnA4RGVjb2Rl
cl9qbmkuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRfbGlidnB4X3ZwOF9qbmkv
am5pL0xpYnZweFZwOEVuY29kZXJfam5pLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2pu
aS9qbmlfaGVscGVycy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBqbmkgewog
Ci1zdGF0aWMgamxvbmcgSk5JX1ZQOEVuY29kZXJfQ3JlYXRlRW5jb2RlcihKTklFbnYqIGpuaSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFQYXJh
bVJlZjxqY2xhc3M+Jikgeworc3RhdGljIGpsb25nIEpOSV9MaWJ2cHhWcDhFbmNvZGVyX0NyZWF0
ZUVuY29kZXIoSk5JRW52KiBqbmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNzPiYpIHsKICAgcmV0dXJuIGps
b25nRnJvbVBvaW50ZXIoVlA4RW5jb2Rlcjo6Q3JlYXRlKCkucmVsZWFzZSgpKTsKIH0KIAotc3Rh
dGljIGpsb25nIEpOSV9WUDhEZWNvZGVyX0NyZWF0ZURlY29kZXIoSk5JRW52KiBqbmksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKYXZhUGFyYW1SZWY8
amNsYXNzPiYpIHsKK3N0YXRpYyBqbG9uZyBKTklfTGlidnB4VnA4RGVjb2Rlcl9DcmVhdGVEZWNv
ZGVyKEpOSUVudiogam5pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mKSB7CiAgIHJldHVybiBqbG9uZ0Zy
b21Qb2ludGVyKFZQOERlY29kZXI6OkNyZWF0ZSgpLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L3NyYy9qbmkvdnA5Y29kZWMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZwOWNvZGVjLmNjCmluZGV4IGNhNzEyZTZkODY1
NGQxZWM1ZTkwMjM4ZDhmMmI3YjdiN2Y1OTQyZmEuLjkyZjk3NTRkNTYzMzExYTA3M2VjMmI4YTMx
NGM2NmUxYTMwZmQ1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdnA5Y29kZWMuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92
cDljb2RlYy5jYwpAQCAtMTEsMzAgKzExLDMwIEBACiAjaW5jbHVkZSA8am5pLmg+CiAKICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L2luY2x1ZGUvdnA5LmgiCi0jaW5j
bHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3ZwOV9qbmkvam5pL1ZQOURlY29kZXJfam5pLmgi
Ci0jaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3ZwOV9qbmkvam5pL1ZQOUVuY29kZXJf
am5pLmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX2xpYnZweF92cDlfam5pL2pu
aS9MaWJ2cHhWcDlEZWNvZGVyX2puaS5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRl
ZF9saWJ2cHhfdnA5X2puaS9qbmkvTGlidnB4VnA5RW5jb2Rlcl9qbmkuaCIKICNpbmNsdWRlICJz
ZGsvYW5kcm9pZC9zcmMvam5pL2puaV9oZWxwZXJzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
bmFtZXNwYWNlIGpuaSB7CiAKLXN0YXRpYyBqbG9uZyBKTklfVlA5RW5jb2Rlcl9DcmVhdGVFbmNv
ZGVyKEpOSUVudiogam5pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mIHcpIHsKK3N0YXRpYyBqbG9uZyBKTklfTGli
dnB4VnA5RW5jb2Rlcl9DcmVhdGVFbmNvZGVyKEpOSUVudiogam5pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFz
cz4mIHcpIHsKICAgcmV0dXJuIGpsb25nRnJvbVBvaW50ZXIoVlA5RW5jb2Rlcjo6Q3JlYXRlKCku
cmVsZWFzZSgpKTsKIH0KIAotc3RhdGljIGpib29sZWFuIEpOSV9WUDlFbmNvZGVyX0lzU3VwcG9y
dGVkKEpOSUVudiogam5pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+Jikgeworc3RhdGljIGpib29sZWFuIEpOSV9M
aWJ2cHhWcDlFbmNvZGVyX0lzU3VwcG9ydGVkKEpOSUVudiogam5pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xh
c3M+JikgewogICByZXR1cm4gIVN1cHBvcnRlZFZQOUNvZGVjcygpLmVtcHR5KCk7CiB9CiAKLXN0
YXRpYyBqbG9uZyBKTklfVlA5RGVjb2Rlcl9DcmVhdGVEZWNvZGVyKEpOSUVudiogam5pLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVBhcmFtUmVm
PGpjbGFzcz4mIHcpIHsKK3N0YXRpYyBqbG9uZyBKTklfTGlidnB4VnA5RGVjb2Rlcl9DcmVhdGVE
ZWNvZGVyKEpOSUVudiogam5pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mIHcpIHsKICAgcmV0dXJuIGps
b25nRnJvbVBvaW50ZXIoVlA5RGVjb2Rlcjo6Q3JlYXRlKCkucmVsZWFzZSgpKTsKIH0KIAotc3Rh
dGljIGpib29sZWFuIEpOSV9WUDlEZWNvZGVyX0lzU3VwcG9ydGVkKEpOSUVudiogam5pLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFQYXJhbVJl
ZjxqY2xhc3M+Jikgeworc3RhdGljIGpib29sZWFuIEpOSV9MaWJ2cHhWcDlEZWNvZGVyX0lzU3Vw
cG9ydGVkKEpOSUVudiogam5pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+JikgewogICByZXR1cm4gIVN1
cHBvcnRlZFZQOUNvZGVjcygpLmVtcHR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3Rlc3RzL3NyYy9vcmcv
d2VicnRjL0NyeXB0b09wdGlvbnNUZXN0LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC90ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DcnlwdG9P
cHRpb25zVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwMzgxMWU2ZmNhZDUyYzg1MDRkNjhjNjdlOTI1
NzljYjIyZjQ5ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC90ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DcnlwdG9P
cHRpb25zVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTgg
VGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKK3Bh
Y2thZ2Ugb3JnLndlYnJ0YzsKKworaW1wb3J0IHN0YXRpYyBjb20uZ29vZ2xlLmNvbW1vbi50cnV0
aC5UcnV0aC5hc3NlcnRUaGF0OworCitpbXBvcnQgb3JnLmNocm9taXVtLnRlc3RpbmcubG9jYWwu
TG9jYWxSb2JvbGVjdHJpY1Rlc3RSdW5uZXI7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBv
cnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworaW1wb3J0IG9yZy5yb2JvbGVjdHJpYy5hbm5v
dGF0aW9uLkNvbmZpZzsKK2ltcG9ydCBvcmcud2VicnRjLkNyeXB0b09wdGlvbnM7CisKK0BSdW5X
aXRoKExvY2FsUm9ib2xlY3RyaWNUZXN0UnVubmVyLmNsYXNzKQorQENvbmZpZyhtYW5pZmVzdCA9
IENvbmZpZy5OT05FKQorcHVibGljIGNsYXNzIENyeXB0b09wdGlvbnNUZXN0IHsKKyAgLy8gVmFs
aWRhdGVzIHRoZSBidWlsZGVyIGJ1aWxkcyBieSBkZWZhdWx0IGFsbCBmYWxzZSBvcHRpb25zLgor
ICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0QnVpbGRlckRlZmF1bHRzQXJlRmFsc2UoKSB7Cisg
ICAgQ3J5cHRvT3B0aW9ucyBjcnlwdG9PcHRpb25zID0gQ3J5cHRvT3B0aW9ucy5idWlsZGVyKCku
Y3JlYXRlQ3J5cHRvT3B0aW9ucygpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRT
cnRwKCkuZ2V0RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKCkpLmlzRmFsc2UoKTsKKyAgICBhc3NlcnRU
aGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9D
aXBoZXIoKSkuaXNGYWxzZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTcnRw
KCkuZ2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucygpKS5pc0ZhbHNlKCk7Cisg
ICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNGcmFtZSgpLmdldFJlcXVpcmVGcmFtZUVu
Y3J5cHRpb24oKSkuaXNGYWxzZSgpOworICB9CisKKyAgLy8gVmFsaWRhdGVzIHRoZSBidWlsZGVy
IHNldHMgdGhlIGNvcnJlY3QgcGFyYW1ldGVycy4KKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVz
dEJ1aWxkZXJDb3JyZWN0bHlJbml0aWFsaXppbmdHY21DcnlwdG8oKSB7CisgICAgQ3J5cHRvT3B0
aW9ucyBjcnlwdG9PcHRpb25zID0KKyAgICAgICAgQ3J5cHRvT3B0aW9ucy5idWlsZGVyKCkuc2V0
RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKHRydWUpLmNyZWF0ZUNyeXB0b09wdGlvbnMoKTsKKyAgICBh
c3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUdjbUNyeXB0b1N1aXRl
cygpKS5pc1RydWUoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdl
dEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIoKSkuaXNGYWxzZSgpOworICAgIGFzc2Vy
dFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVy
RXh0ZW5zaW9ucygpKS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdl
dFNGcmFtZSgpLmdldFJlcXVpcmVGcmFtZUVuY3J5cHRpb24oKSkuaXNGYWxzZSgpOworICB9CisK
KyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEJ1aWxkZXJDb3JyZWN0bHlJbml0aWFsaXppbmdB
ZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKCkgeworICAgIENyeXB0b09wdGlvbnMgY3J5cHRvT3B0
aW9ucyA9CisgICAgICAgIENyeXB0b09wdGlvbnMuYnVpbGRlcigpLnNldEVuYWJsZUFlczEyOFNo
YTFfMzJDcnlwdG9DaXBoZXIodHJ1ZSkuY3JlYXRlQ3J5cHRvT3B0aW9ucygpOworICAgIGFzc2Vy
dFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKCkp
LmlzRmFsc2UoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVu
YWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIoKSkuaXNUcnVlKCk7CisgICAgYXNzZXJ0VGhh
dChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRl
bnNpb25zKCkpLmlzRmFsc2UoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U0Zy
YW1lKCkuZ2V0UmVxdWlyZUZyYW1lRW5jcnlwdGlvbigpKS5pc0ZhbHNlKCk7CisgIH0KKworICBA
VGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0QnVpbGRlckNvcnJlY3RseUluaXRpYWxpemluZ0VuY3J5
cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMoKSB7CisgICAgQ3J5cHRvT3B0aW9ucyBjcnlwdG9PcHRp
b25zID0KKyAgICAgICAgQ3J5cHRvT3B0aW9ucy5idWlsZGVyKCkuc2V0RW5hYmxlRW5jcnlwdGVk
UnRwSGVhZGVyRXh0ZW5zaW9ucyh0cnVlKS5jcmVhdGVDcnlwdG9PcHRpb25zKCk7CisgICAgYXNz
ZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVHY21DcnlwdG9TdWl0ZXMo
KSkuaXNGYWxzZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0
RW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcigpKS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0
VGhhdChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJF
eHRlbnNpb25zKCkpLmlzVHJ1ZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRT
RnJhbWUoKS5nZXRSZXF1aXJlRnJhbWVFbmNyeXB0aW9uKCkpLmlzRmFsc2UoKTsKKyAgfQorCisg
IEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RCdWlsZGVyQ29ycmVjdGx5SW5pdGlhbGl6aW5nUmVx
dWlyZUZyYW1lRW5jcnlwdGlvbigpIHsKKyAgICBDcnlwdG9PcHRpb25zIGNyeXB0b09wdGlvbnMg
PQorICAgICAgICBDcnlwdG9PcHRpb25zLmJ1aWxkZXIoKS5zZXRSZXF1aXJlRnJhbWVFbmNyeXB0
aW9uKHRydWUpLmNyZWF0ZUNyeXB0b09wdGlvbnMoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09w
dGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUdjbUNyeXB0b1N1aXRlcygpKS5pc0ZhbHNlKCk7Cisg
ICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVBZXMxMjhTaGEx
XzMyQ3J5cHRvQ2lwaGVyKCkpLmlzRmFsc2UoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlv
bnMuZ2V0U3J0cCgpLmdldEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMoKSkuaXNG
YWxzZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTRnJhbWUoKS5nZXRSZXF1
aXJlRnJhbWVFbmNyeXB0aW9uKCkpLmlzVHJ1ZSgpOworICB9Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsv
Q2xhc3Nlcy9QZWVyQ29ubmVjdGlvbi9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xh
c3Nlcy9QZWVyQ29ubmVjdGlvbi9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA0YTU2ODk0MTdjMjA3MzcyNzhhOGIyYjAyMmYxMjFmZmU5OTY2
MmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0Ns
YXNzZXMvUGVlckNvbm5lY3Rpb24vUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKgotICovCi0KLSNpbXBvcnQgIldl
YlJUQy9SVENWaWRlb0NvZGVjSDI2NC5oIgotCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9oMjY0X3By
b2ZpbGVfbGV2ZWxfaWQuaCIKLQotQGludGVyZmFjZSBSVENIMjY0UHJvZmlsZUxldmVsSWQgKCkK
LQotQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENIMjY0UHJvZmlsZSBwcm9maWxlOwot
QHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENIMjY0TGV2ZWwgbGV2ZWw7Ci1AcHJvcGVy
dHkobm9uYXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICpoZXhTdHJpbmc7Ci0KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIFJUQ0gyNjRQcm9maWxlTGV2ZWxJZAotCi1Ac3ludGhlc2l6ZSBwcm9maWxl
ID0gX3Byb2ZpbGU7Ci1Ac3ludGhlc2l6ZSBsZXZlbCA9IF9sZXZlbDsKLUBzeW50aGVzaXplIGhl
eFN0cmluZyA9IF9oZXhTdHJpbmc7Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEhleFN0cmlu
ZzooTlNTdHJpbmcgKiloZXhTdHJpbmcgewotICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewot
ICAgIHNlbGYuaGV4U3RyaW5nID0gaGV4U3RyaW5nOwotCi0gICAgYWJzbDo6b3B0aW9uYWw8d2Vi
cnRjOjpIMjY0OjpQcm9maWxlTGV2ZWxJZD4gcHJvZmlsZV9sZXZlbF9pZCA9Ci0gICAgICAgIHdl
YnJ0Yzo6SDI2NDo6UGFyc2VQcm9maWxlTGV2ZWxJZChbaGV4U3RyaW5nIGNTdHJpbmdVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7Ci0gICAgaWYgKHByb2ZpbGVfbGV2ZWxfaWQu
aGFzX3ZhbHVlKCkpIHsKLSAgICAgIHNlbGYucHJvZmlsZSA9IHN0YXRpY19jYXN0PFJUQ0gyNjRQ
cm9maWxlPihwcm9maWxlX2xldmVsX2lkLT5wcm9maWxlKTsKLSAgICAgIHNlbGYubGV2ZWwgPSBz
dGF0aWNfY2FzdDxSVENIMjY0TGV2ZWw+KHByb2ZpbGVfbGV2ZWxfaWQtPmxldmVsKTsKLSAgICB9
Ci0gIH0KLSAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb2Zp
bGU6KFJUQ0gyNjRQcm9maWxlKXByb2ZpbGUgbGV2ZWw6KFJUQ0gyNjRMZXZlbClsZXZlbCB7Ci0g
IGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgc2VsZi5wcm9maWxlID0gcHJvZmlsZTsK
LSAgICBzZWxmLmxldmVsID0gbGV2ZWw7Ci0KLSAgICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmlu
Zz4gaGV4X3N0cmluZyA9Ci0gICAgICAgIHdlYnJ0Yzo6SDI2NDo6UHJvZmlsZUxldmVsSWRUb1N0
cmluZyh3ZWJydGM6OkgyNjQ6OlByb2ZpbGVMZXZlbElkKAotICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8d2VicnRjOjpIMjY0OjpQcm9maWxlPihwcm9maWxlKSwgc3RhdGljX2Nhc3Q8d2VicnRjOjpI
MjY0OjpMZXZlbD4obGV2ZWwpKSk7Ci0gICAgc2VsZi5oZXhTdHJpbmcgPQotICAgICAgICBbTlNT
dHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6aGV4X3N0cmluZy52YWx1ZV9vcigiIikuY19zdHIoKSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gIH0KLSAgcmV0dXJuIHNlbGY7Ci19Ci0K
LUBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2VyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvbG9nZ2luZy9SVEND
YWxsYmFja0xvZ2dlci5oCmluZGV4IDQ4NjdiMzFlMzY1Y2MxYjgzYjQ3YzA5NjY3NzRiNjU1MDQ5
ZWVkOGMuLjJiY2UwM2ZlMGY4YWM1ZTA5NDZlMTY5OGZkNWQyN2ViZWUxNWNmMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL2xvZ2dpbmcvUlRDQ2FsbGJhY2tMb2dn
ZXIuaApAQCAtMTUsNiArMTUsMTAgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAordHlw
ZWRlZiB2b2lkICheUlRDQ2FsbGJhY2tMb2dnZXJNZXNzYWdlSGFuZGxlcikoTlNTdHJpbmcgKm1l
c3NhZ2UpOwordHlwZWRlZiB2b2lkICheUlRDQ2FsbGJhY2tMb2dnZXJNZXNzYWdlQW5kU2V2ZXJp
dHlIYW5kbGVyKShOU1N0cmluZyAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRDTG9nZ2luZ1NldmVyaXR5IHNldmVy
aXR5KTsKKwogLy8gVGhpcyBjbGFzcyBpbnRlcmNlcHRzIFdlYlJUQyBsb2dzIGFuZCBmb3J3YXJk
cyB0aGVtIHRvIGEgcmVnaXN0ZXJlZCBibG9jay4KIC8vIFRoaXMgY2xhc3MgaXMgbm90IHRocmVh
ZHNhZmUuCiBSVENfT0JKQ19FWFBPUlQKQEAgLTIzLDEwICsyNywxMiBAQCBSVENfT0JKQ19FWFBP
UlQKIC8vIFRoZSBzZXZlcml0eSBsZXZlbCB0byBjYXB0dXJlLiBUaGUgZGVmYXVsdCBpcyBrUlRD
TG9nZ2luZ1NldmVyaXR5SW5mby4KIEBwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgUlRDTG9n
Z2luZ1NldmVyaXR5IHNldmVyaXR5OwogCi0vLyBUaGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQg
b24gdGhlIHNhbWUgdGhyZWFkIHRoYXQgZG9lcyB0aGUgbG9nZ2luZywgc28KLS8vIGlmIHRoZSBs
b2dnaW5nIGNhbGxiYWNrIGNhbiBiZSBzbG93IGl0IG1heSBiZSBhIGdvb2QgaWRlYSB0byBpbXBs
ZW1lbnQKLS8vIGRpc3BhdGNoaW5nIHRvIHNvbWUgb3RoZXIgcXVldWUuCi0tICh2b2lkKXN0YXJ0
OihudWxsYWJsZSB2b2lkICheKShOU1N0cmluZyopKWNhbGxiYWNrOworLy8gVGhlIGNhbGxiYWNr
IGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgb24gdGhlIHNhbWUgdGhyZWFkIHRoYXQgZG9lcyB0aGUK
Ky8vIGxvZ2dpbmcsIHNvIGlmIHRoZSBsb2dnaW5nIGNhbGxiYWNrIGNhbiBiZSBzbG93IGl0IG1h
eSBiZSBhIGdvb2QgaWRlYQorLy8gdG8gaW1wbGVtZW50IGRpc3BhdGNoaW5nIHRvIHNvbWUgb3Ro
ZXIgcXVldWUuCistICh2b2lkKXN0YXJ0OihudWxsYWJsZSBSVENDYWxsYmFja0xvZ2dlck1lc3Nh
Z2VIYW5kbGVyKWhhbmRsZXI7CistICh2b2lkKXN0YXJ0V2l0aE1lc3NhZ2VBbmRTZXZlcml0eUhh
bmRsZXI6CisgICAgICAgIChudWxsYWJsZSBSVENDYWxsYmFja0xvZ2dlck1lc3NhZ2VBbmRTZXZl
cml0eUhhbmRsZXIpaGFuZGxlcjsKIAogLSAodm9pZClzdG9wOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvbG9nZ2lu
Zy9SVENDYWxsYmFja0xvZ2dlci5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2VyLm1tCmluZGV4
IDg0NDBkNjM3OTFlZjUyYWQyMjA2MTQyNTc4NWM0ZTQ0ODAwYzQ2NTAuLjliYmI1MzA0MzQwOWEy
N2M1NmE2NGM1YTE3Y2I4NGE5ZGMwZmI4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNr
TG9nZ2VyLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2VyLm1tCkBAIC0xOCwxMSArMTgs
OCBAQAogCiBjbGFzcyBDYWxsYmFja0xvZ1NpbmsgOiBwdWJsaWMgcnRjOjpMb2dTaW5rIHsKICBw
dWJsaWM6Ci0gIENhbGxiYWNrTG9nU2luayh2b2lkICheY2FsbGJhY2tIYW5kbGVyKShOU1N0cmlu
ZyAqbWVzc2FnZSkpIHsKLSAgICBjYWxsYmFja19oYW5kbGVyXyA9IGNhbGxiYWNrSGFuZGxlcjsK
LSAgfQotCi0gIH5DYWxsYmFja0xvZ1NpbmsoKSBvdmVycmlkZSB7IGNhbGxiYWNrX2hhbmRsZXJf
ID0gbmlsOyB9CisgIENhbGxiYWNrTG9nU2luayhSVENDYWxsYmFja0xvZ2dlck1lc3NhZ2VIYW5k
bGVyIGNhbGxiYWNrSGFuZGxlcikKKyAgICAgIDogY2FsbGJhY2tfaGFuZGxlcl8oY2FsbGJhY2tI
YW5kbGVyKSB7fQogCiAgIHZvaWQgT25Mb2dNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNz
YWdlKSBvdmVycmlkZSB7CiAgICAgaWYgKGNhbGxiYWNrX2hhbmRsZXJfKSB7CkBAIC0zMSwxMiAr
MjgsNDcgQEAgY2xhc3MgQ2FsbGJhY2tMb2dTaW5rIDogcHVibGljIHJ0Yzo6TG9nU2luayB7CiAg
IH0KIAogIHByaXZhdGU6Ci0gIHZvaWQgKF5jYWxsYmFja19oYW5kbGVyXykoTlNTdHJpbmcgKm1l
c3NhZ2UpOworICBSVENDYWxsYmFja0xvZ2dlck1lc3NhZ2VIYW5kbGVyIGNhbGxiYWNrX2hhbmRs
ZXJfOworfTsKKworY2xhc3MgQ2FsbGJhY2tXaXRoU2V2ZXJpdHlMb2dTaW5rIDogcHVibGljIHJ0
Yzo6TG9nU2luayB7CisgcHVibGljOgorICBDYWxsYmFja1dpdGhTZXZlcml0eUxvZ1NpbmsoUlRD
Q2FsbGJhY2tMb2dnZXJNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyIGNhbGxiYWNrSGFuZGxlcikK
KyAgICAgIDogY2FsbGJhY2tfaGFuZGxlcl8oY2FsbGJhY2tIYW5kbGVyKSB7fQorCisgIHZvaWQg
T25Mb2dNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZSB7IFJUQ19O
T1RSRUFDSEVEKCk7IH0KKworICB2b2lkIE9uTG9nTWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYg
bWVzc2FnZSwgcnRjOjpMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkpIG92ZXJyaWRlIHsKKyAgICBp
ZiAoY2FsbGJhY2tfaGFuZGxlcl8pIHsKKyAgICAgIFJUQ0xvZ2dpbmdTZXZlcml0eSBsb2dnaW5n
U2V2ZXJpdHkgPSBOYXRpdmVTZXZlcml0eVRvT2JqY1NldmVyaXR5KHNldmVyaXR5KTsKKyAgICAg
IGNhbGxiYWNrX2hhbmRsZXJfKFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzptZXNzYWdl
LmNfc3RyKCldLCBsb2dnaW5nU2V2ZXJpdHkpOworICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAg
c3RhdGljIFJUQ0xvZ2dpbmdTZXZlcml0eSBOYXRpdmVTZXZlcml0eVRvT2JqY1NldmVyaXR5KHJ0
Yzo6TG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5KSB7CisgICAgc3dpdGNoIChzZXZlcml0eSkgewor
ICAgICAgY2FzZSBydGM6OkxTX1NFTlNJVElWRToKKyAgICAgICAgcmV0dXJuIFJUQ0xvZ2dpbmdT
ZXZlcml0eVNlbnNpdGl2ZTsKKyAgICAgIGNhc2UgcnRjOjpMU19WRVJCT1NFOgorICAgICAgICBy
ZXR1cm4gUlRDTG9nZ2luZ1NldmVyaXR5VmVyYm9zZTsKKyAgICAgIGNhc2UgcnRjOjpMU19JTkZP
OgorICAgICAgICByZXR1cm4gUlRDTG9nZ2luZ1NldmVyaXR5SW5mbzsKKyAgICAgIGNhc2UgcnRj
OjpMU19XQVJOSU5HOgorICAgICAgICByZXR1cm4gUlRDTG9nZ2luZ1NldmVyaXR5V2FybmluZzsK
KyAgICAgIGNhc2UgcnRjOjpMU19FUlJPUjoKKyAgICAgICAgcmV0dXJuIFJUQ0xvZ2dpbmdTZXZl
cml0eUVycm9yOworICAgICAgY2FzZSBydGM6OkxTX05PTkU6CisgICAgICAgIHJldHVybiBSVENM
b2dnaW5nU2V2ZXJpdHlOb25lOworICAgIH0KKyAgfQorCisgIFJUQ0NhbGxiYWNrTG9nZ2VyTWVz
c2FnZUFuZFNldmVyaXR5SGFuZGxlciBjYWxsYmFja19oYW5kbGVyXzsKIH07CiAKIEBpbXBsZW1l
bnRhdGlvbiBSVENDYWxsYmFja0xvZ2dlciB7CiAgIEJPT0wgX2hhc1N0YXJ0ZWQ7Ci0gIHN0ZDo6
dW5pcXVlX3B0cjxDYWxsYmFja0xvZ1Npbms+IF9sb2dTaW5rOworICBzdGQ6OnVuaXF1ZV9wdHI8
cnRjOjpMb2dTaW5rPiBfbG9nU2luazsKIH0KIAogQHN5bnRoZXNpemUgc2V2ZXJpdHkgPSBfc2V2
ZXJpdHk7CkBAIC01MywxMiArODUsMjQgQEAgLSAodm9pZClkZWFsbG9jIHsKICAgW3NlbGYgc3Rv
cF07CiB9CiAKLS0gKHZvaWQpc3RhcnQ6KG51bGxhYmxlIHZvaWQgKF4pKE5TU3RyaW5nICopKWNh
bGxiYWNrIHsKKy0gKHZvaWQpc3RhcnQ6KG51bGxhYmxlIFJUQ0NhbGxiYWNrTG9nZ2VyTWVzc2Fn
ZUhhbmRsZXIpaGFuZGxlciB7CisgIGlmIChfaGFzU3RhcnRlZCkgeworICAgIHJldHVybjsKKyAg
fQorCisgIF9sb2dTaW5rLnJlc2V0KG5ldyBDYWxsYmFja0xvZ1NpbmsoaGFuZGxlcikpOworCisg
IHJ0Yzo6TG9nTWVzc2FnZTo6QWRkTG9nVG9TdHJlYW0oX2xvZ1NpbmsuZ2V0KCksIFtzZWxmIHJ0
Y1NldmVyaXR5XSk7CisgIF9oYXNTdGFydGVkID0gWUVTOworfQorCistICh2b2lkKXN0YXJ0V2l0
aE1lc3NhZ2VBbmRTZXZlcml0eUhhbmRsZXI6CisgICAgICAgIChudWxsYWJsZSBSVENDYWxsYmFj
a0xvZ2dlck1lc3NhZ2VBbmRTZXZlcml0eUhhbmRsZXIpaGFuZGxlciB7CiAgIGlmIChfaGFzU3Rh
cnRlZCkgewogICAgIHJldHVybjsKICAgfQogCi0gIF9sb2dTaW5rLnJlc2V0KG5ldyBDYWxsYmFj
a0xvZ1NpbmsoY2FsbGJhY2spKTsKKyAgX2xvZ1NpbmsucmVzZXQobmV3IENhbGxiYWNrV2l0aFNl
dmVyaXR5TG9nU2luayhoYW5kbGVyKSk7CiAKICAgcnRjOjpMb2dNZXNzYWdlOjpBZGRMb2dUb1N0
cmVhbShfbG9nU2luay5nZXQoKSwgW3NlbGYgcnRjU2V2ZXJpdHldKTsKICAgX2hhc1N0YXJ0ZWQg
PSBZRVM7CkBAIC03OCw2ICsxMjIsOCBAQCAtICh2b2lkKXN0b3AgewogCiAtIChydGM6OkxvZ2dp
bmdTZXZlcml0eSlydGNTZXZlcml0eSB7CiAgIHN3aXRjaCAoX3NldmVyaXR5KSB7CisgICAgY2Fz
ZSBSVENMb2dnaW5nU2V2ZXJpdHlTZW5zaXRpdmU6CisgICAgICByZXR1cm4gcnRjOjpMU19TRU5T
SVRJVkU7CiAgICAgY2FzZSBSVENMb2dnaW5nU2V2ZXJpdHlWZXJib3NlOgogICAgICAgcmV0dXJu
IHJ0Yzo6TFNfVkVSQk9TRTsKICAgICBjYXNlIFJUQ0xvZ2dpbmdTZXZlcml0eUluZm86CkBAIC04
Niw2ICsxMzIsOCBAQCAtIChydGM6OkxvZ2dpbmdTZXZlcml0eSlydGNTZXZlcml0eSB7CiAgICAg
ICByZXR1cm4gcnRjOjpMU19XQVJOSU5HOwogICAgIGNhc2UgUlRDTG9nZ2luZ1NldmVyaXR5RXJy
b3I6CiAgICAgICByZXR1cm4gcnRjOjpMU19FUlJPUjsKKyAgICBjYXNlIFJUQ0xvZ2dpbmdTZXZl
cml0eU5vbmU6CisgICAgICByZXR1cm4gcnRjOjpMU19OT05FOwogICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29u
ZmlndXJhdGlvbi5oCmluZGV4IDlmYjhiNGRmMzU5MWQ3YTY3YTE1ZDc0ZWE5ZTE3NWE1ZWFjMGJm
OGEuLmY5ZTZlZGZkOTc0MTVhODIxOTBiMzc5Mzk5OWIzMTdlMDdkMjU3MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9w
ZWVyY29ubmVjdGlvbi9SVENDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0Nv
bmZpZ3VyYXRpb24uaApAQCAtMTEsNiArMTEsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiAKICNpbXBvcnQgIlJUQ0NlcnRpZmljYXRlLmgiCisjaW1wb3J0ICJSVENDcnlw
dG9PcHRpb25zLmgiCiAjaW1wb3J0ICJSVENNYWNyb3MuaCIKIAogQGNsYXNzIFJUQ0ljZVNlcnZl
cjsKQEAgLTkxLDYgKzkyLDE5IEBAIFJUQ19PQkpDX0VYUE9SVAogQHByb3BlcnR5KG5vbmF0b21p
YywgYXNzaWduKSBSVENDYW5kaWRhdGVOZXR3b3JrUG9saWN5IGNhbmRpZGF0ZU5ldHdvcmtQb2xp
Y3k7CiBAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIFJUQ0NvbnRpbnVhbEdhdGhlcmluZ1Bv
bGljeSBjb250aW51YWxHYXRoZXJpbmdQb2xpY3k7CiAKKy8qKiBJZiBzZXQgdG8gWUVTLCBkb24n
dCBnYXRoZXIgSVB2NiBJQ0UgY2FuZGlkYXRlcy4KKyAqICBEZWZhdWx0IGlzIE5PLgorICovCitA
cHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgZGlzYWJsZUlQVjY7CisKKy8qKiBJZiBz
ZXQgdG8gWUVTLCBkb24ndCBnYXRoZXIgSVB2NiBJQ0UgY2FuZGlkYXRlcyBvbiBXaS1GaS4KKyAq
ICBPbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgb24gc3BlY2lmaWMgZGV2aWNlcy4gQ2VydGFpbiBw
aG9uZXMgZGlzYWJsZSBJUHY2CisgKiAgd2hlbiB0aGUgc2NyZWVuIGlzIHR1cm5lZCBvZmYgYW5k
IGl0IHdvdWxkIGJlIGJldHRlciB0byBqdXN0IGRpc2FibGUgdGhlCisgKiAgSVB2NiBJQ0UgY2Fu
ZGlkYXRlcyBvbiBXaS1GaSBpbiB0aG9zZSBjYXNlcy4KKyAqICBEZWZhdWx0IGlzIE5PLgorICov
CitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgZGlzYWJsZUlQVjZPbldpRmk7CisK
IC8qKiBCeSBkZWZhdWx0LCB0aGUgUGVlckNvbm5lY3Rpb24gd2lsbCB1c2UgYSBsaW1pdGVkIG51
bWJlciBvZiBJUHY2IG5ldHdvcmsKICAqICBpbnRlcmZhY2VzLCBpbiBvcmRlciB0byBhdm9pZCB0
b28gbWFueSBJQ0UgY2FuZGlkYXRlIHBhaXJzIGJlaW5nIGNyZWF0ZWQKICAqICBhbmQgZGVsYXlp
bmcgSUNFIGNvbXBsZXRpb24uCkBAIC0xNjgsNiArMTgyLDM1IEBAIFJUQ19PQkpDX0VYUE9SVAog
ICovCiBAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgYWN0aXZlUmVzZXRTcnRwUGFy
YW1zOwogCisvKioKKyAqIElmIE1lZGlhVHJhbnNwb3J0RmFjdG9yeSBpcyBwcm92aWRlZCBpbiBQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnksIHRoaXMgZmxhZyBpbmZvcm1zIFBlZXJDb25uZWN0aW9uCisg
KiB0aGF0IGl0IHNob3VsZCB1c2UgdGhlIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlLgorICovCitA
cHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgdXNlTWVkaWFUcmFuc3BvcnQ7CisKKy8q
KgorICogSWYgTWVkaWFUcmFuc3BvcnRGYWN0b3J5IGlzIHByb3ZpZGVkIGluIFBlZXJDb25uZWN0
aW9uRmFjdG9yeSwgdGhpcyBmbGFnIGluZm9ybXMgUGVlckNvbm5lY3Rpb24KKyAqIHRoYXQgaXQg
c2hvdWxkIHVzZSB0aGUgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UgZm9yIGRhdGEgY2hhbm5lbHMu
CisgKi8KK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9PTCB1c2VNZWRpYVRyYW5zcG9y
dEZvckRhdGFDaGFubmVsczsKKworLyoqCisgKiBEZWZpbmVzIGFkdmFuY2VkIG9wdGlvbmFsIGNy
eXB0b2dyYXBoaWMgc2V0dGluZ3MgcmVsYXRlZCB0byBTUlRQIGFuZAorICogZnJhbWUgZW5jcnlw
dGlvbiBmb3IgbmF0aXZlIFdlYlJUQy4gU2V0dGluZyB0aGlzIHdpbGwgb3ZlcndyaXRlIGFueQor
ICogb3B0aW9ucyBzZXQgdGhyb3VnaCB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5ICh3aGljaCBp
cyBkZXByZWNhdGVkKS4KKyAqLworQHByb3BlcnR5KG5vbmF0b21pYywgbnVsbGFibGUpIFJUQ0Ny
eXB0b09wdGlvbnMgKmNyeXB0b09wdGlvbnM7CisKKy8qKgorICogVGltZSBpbnRlcnZhbCBiZXR3
ZWVuIGF1ZGlvIFJUQ1AgcmVwb3J0cy4KKyAqLworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWdu
KSBpbnQgcnRjcEF1ZGlvUmVwb3J0SW50ZXJ2YWxNczsKKworLyoqCisgKiBUaW1lIGludGVydmFs
IGJldHdlZW4gdmlkZW8gUlRDUCByZXBvcnRzLgorICovCitAcHJvcGVydHkobm9uYXRvbWljLCBh
c3NpZ24pIGludCBydGNwVmlkZW9SZXBvcnRJbnRlcnZhbE1zOworCiAtIChpbnN0YW5jZXR5cGUp
aW5pdDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24u
bW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9h
cGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5tbQppbmRleCA3M2EwZmE5YWE1ZmQ4
MGRiNGNkMjdjZDI5M2I2NTBiN2I4MDA2OTVmLi40MDQxZjgzOTlmYzhiMzU1NjdjYmQ5ODlhMjU0
MjdlZWI0YmExZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5t
bQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5tbQpAQCAtMzEsNiArMzEsOCBA
QCBAc3ludGhlc2l6ZSBydGNwTXV4UG9saWN5ID0gX3J0Y3BNdXhQb2xpY3k7CiBAc3ludGhlc2l6
ZSB0Y3BDYW5kaWRhdGVQb2xpY3kgPSBfdGNwQ2FuZGlkYXRlUG9saWN5OwogQHN5bnRoZXNpemUg
Y2FuZGlkYXRlTmV0d29ya1BvbGljeSA9IF9jYW5kaWRhdGVOZXR3b3JrUG9saWN5OwogQHN5bnRo
ZXNpemUgY29udGludWFsR2F0aGVyaW5nUG9saWN5ID0gX2NvbnRpbnVhbEdhdGhlcmluZ1BvbGlj
eTsKK0BzeW50aGVzaXplIGRpc2FibGVJUFY2ID0gX2Rpc2FibGVJUFY2OworQHN5bnRoZXNpemUg
ZGlzYWJsZUlQVjZPbldpRmkgPSBfZGlzYWJsZUlQVjZPbldpRmk7CiBAc3ludGhlc2l6ZSBtYXhJ
UHY2TmV0d29ya3MgPSBfbWF4SVB2Nk5ldHdvcmtzOwogQHN5bnRoZXNpemUgZGlzYWJsZUxpbmtM
b2NhbE5ldHdvcmtzID0gX2Rpc2FibGVMaW5rTG9jYWxOZXR3b3JrczsKIEBzeW50aGVzaXplIGF1
ZGlvSml0dGVyQnVmZmVyTWF4UGFja2V0cyA9IF9hdWRpb0ppdHRlckJ1ZmZlck1heFBhY2tldHM7
CkBAIC00OCw2ICs1MCwxMSBAQCBAc3ludGhlc2l6ZSBpY2VSZWdhdGhlckludGVydmFsUmFuZ2Ug
PSBfaWNlUmVnYXRoZXJJbnRlcnZhbFJhbmdlOwogQHN5bnRoZXNpemUgc2RwU2VtYW50aWNzID0g
X3NkcFNlbWFudGljczsKIEBzeW50aGVzaXplIHR1cm5DdXN0b21pemVyID0gX3R1cm5DdXN0b21p
emVyOwogQHN5bnRoZXNpemUgYWN0aXZlUmVzZXRTcnRwUGFyYW1zID0gX2FjdGl2ZVJlc2V0U3J0
cFBhcmFtczsKK0BzeW50aGVzaXplIHVzZU1lZGlhVHJhbnNwb3J0ID0gX3VzZU1lZGlhVHJhbnNw
b3J0OworQHN5bnRoZXNpemUgdXNlTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5lbHMgPSBfdXNl
TWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5lbHM7CitAc3ludGhlc2l6ZSBjcnlwdG9PcHRpb25z
ID0gX2NyeXB0b09wdGlvbnM7CitAc3ludGhlc2l6ZSBydGNwQXVkaW9SZXBvcnRJbnRlcnZhbE1z
ID0gX3J0Y3BBdWRpb1JlcG9ydEludGVydmFsTXM7CitAc3ludGhlc2l6ZSBydGNwVmlkZW9SZXBv
cnRJbnRlcnZhbE1zID0gX3J0Y3BWaWRlb1JlcG9ydEludGVydmFsTXM7CiAKIC0gKGluc3RhbmNl
dHlwZSlpbml0IHsKICAgLy8gQ29weSBkZWZhdWx0cy4KQEAgLTg2LDYgKzkzLDggQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlQ29uZmlndXJhdGlvbjoKICAgICBjb25maWcuY29udGlu
dWFsX2dhdGhlcmluZ19wb2xpY3k7CiAgICAgX2NvbnRpbnVhbEdhdGhlcmluZ1BvbGljeSA9CiAg
ICAgICAgIFtbc2VsZiBjbGFzc10gY29udGludWFsR2F0aGVyaW5nUG9saWN5Rm9yTmF0aXZlUG9s
aWN5Om5hdGl2ZVBvbGljeV07CisgICAgX2Rpc2FibGVJUFY2ID0gY29uZmlnLmRpc2FibGVfaXB2
NjsKKyAgICBfZGlzYWJsZUlQVjZPbldpRmkgPSBjb25maWcuZGlzYWJsZV9pcHY2X29uX3dpZmk7
CiAgICAgX21heElQdjZOZXR3b3JrcyA9IGNvbmZpZy5tYXhfaXB2Nl9uZXR3b3JrczsKICAgICBf
ZGlzYWJsZUxpbmtMb2NhbE5ldHdvcmtzID0gY29uZmlnLmRpc2FibGVfbGlua19sb2NhbF9uZXR3
b3JrczsKICAgICBfYXVkaW9KaXR0ZXJCdWZmZXJNYXhQYWNrZXRzID0gY29uZmlnLmF1ZGlvX2pp
dHRlcl9idWZmZXJfbWF4X3BhY2tldHM7CkBAIC05Myw2ICsxMDIsOCBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhOYXRpdmVDb25maWd1cmF0aW9uOgogICAgIF9pY2VDb25uZWN0aW9uUmVjZWl2
aW5nVGltZW91dCA9IGNvbmZpZy5pY2VfY29ubmVjdGlvbl9yZWNlaXZpbmdfdGltZW91dDsKICAg
ICBfaWNlQmFja3VwQ2FuZGlkYXRlUGFpclBpbmdJbnRlcnZhbCA9CiAgICAgICAgIGNvbmZpZy5p
Y2VfYmFja3VwX2NhbmRpZGF0ZV9wYWlyX3BpbmdfaW50ZXJ2YWw7CisgICAgX3VzZU1lZGlhVHJh
bnNwb3J0ID0gY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnQ7CisgICAgX3VzZU1lZGlhVHJhbnNw
b3J0Rm9yRGF0YUNoYW5uZWxzID0gY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFf
Y2hhbm5lbHM7CiAgICAgX2tleVR5cGUgPSBSVENFbmNyeXB0aW9uS2V5VHlwZUVDRFNBOwogICAg
IF9pY2VDYW5kaWRhdGVQb29sU2l6ZSA9IGNvbmZpZy5pY2VfY2FuZGlkYXRlX3Bvb2xfc2l6ZTsK
ICAgICBfc2hvdWxkUHJ1bmVUdXJuUG9ydHMgPSBjb25maWcucHJ1bmVfdHVybl9wb3J0czsKQEAg
LTExMCwxNCArMTIxLDI3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZUNvbmZpZ3Vy
YXRpb246CiAgICAgX3NkcFNlbWFudGljcyA9IFtbc2VsZiBjbGFzc10gc2RwU2VtYW50aWNzRm9y
TmF0aXZlU2RwU2VtYW50aWNzOmNvbmZpZy5zZHBfc2VtYW50aWNzXTsKICAgICBfdHVybkN1c3Rv
bWl6ZXIgPSBjb25maWcudHVybl9jdXN0b21pemVyOwogICAgIF9hY3RpdmVSZXNldFNydHBQYXJh
bXMgPSBjb25maWcuYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zOworICAgIGlmIChjb25maWcuY3J5
cHRvX29wdGlvbnMpIHsKKyAgICAgIF9jcnlwdG9PcHRpb25zID0gW1tSVENDcnlwdG9PcHRpb25z
IGFsbG9jXQorICAgICAgICAgICAgICAgaW5pdFdpdGhTcnRwRW5hYmxlR2NtQ3J5cHRvU3VpdGVz
OmNvbmZpZy5jcnlwdG9fb3B0aW9ucy0+c3J0cAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzCisgICAg
ICAgICAgICAgc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI6Y29uZmlnLmNyeXB0
b19vcHRpb25zLT5zcnRwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlcgorICAgICAg
ICAgIHNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zOmNvbmZpZy5jcnlwdG9f
b3B0aW9ucy0+c3J0cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAuZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMKKyAgICAg
ICAgICAgICAgICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbjpjb25maWcuY3J5cHRv
X29wdGlvbnMtPnNmcmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uXTsKKyAgICB9CisgICAgX3J0
Y3BBdWRpb1JlcG9ydEludGVydmFsTXMgPSBjb25maWcuYXVkaW9fcnRjcF9yZXBvcnRfaW50ZXJ2
YWxfbXMoKTsKKyAgICBfcnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxNcyA9IGNvbmZpZy52aWRlb19y
dGNwX3JlcG9ydF9pbnRlcnZhbF9tcygpOwogICB9CiAgIHJldHVybiBzZWxmOwogfQogCiAtIChO
U1N0cmluZyAqKWRlc2NyaXB0aW9uIHsKLSAgc3RhdGljIE5TU3RyaW5nICpmb3JtYXRTdHJpbmcg
PQotICAgICAgQCJSVENDb25maWd1cmF0aW9uOiAiCi0gICAgICBAIntcbiVAXG4lQFxuJUBcbiVA
XG4lQFxuJUBcbiVAXG4lQFxuJWRcbiVkXG4lZFxuJWRcbiVkXG4lZFxuJWRcbiVAXG4lQFxuJWRc
biVkXG4lZFxufVxuIjsKKyAgc3RhdGljIE5TU3RyaW5nICpmb3JtYXRTdHJpbmcgPSBAIlJUQ0Nv
bmZpZ3VyYXRpb246ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIntcbiVA
XG4lQFxuJUBcbiVAXG4lQFxuJUBcbiVAXG4lQFxuJWRcbiVkXG4lZFxuJWRcbiVkXG4lZFxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiJWRcbiVAXG4lQFxuJWRcbiVkXG4l
ZFxuJWRcbiVkXG4lQFxufVxuIjsKIAogICByZXR1cm4gW05TU3RyaW5nCiAgICAgICBzdHJpbmdX
aXRoRm9ybWF0OmZvcm1hdFN0cmluZywKQEAgLTEzOSw4ICsxNjMsMTEgQEAgLSAoTlNTdHJpbmcg
KilkZXNjcmlwdGlvbiB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9pY2VDaGVja01pbkludGVy
dmFsLAogICAgICAgICAgICAgICAgICAgICAgICBfaWNlUmVnYXRoZXJJbnRlcnZhbFJhbmdlLAog
ICAgICAgICAgICAgICAgICAgICAgICBfZGlzYWJsZUxpbmtMb2NhbE5ldHdvcmtzLAorICAgICAg
ICAgICAgICAgICAgICAgICBfZGlzYWJsZUlQVjYsCisgICAgICAgICAgICAgICAgICAgICAgIF9k
aXNhYmxlSVBWNk9uV2lGaSwKICAgICAgICAgICAgICAgICAgICAgICAgX21heElQdjZOZXR3b3Jr
cywKLSAgICAgICAgICAgICAgICAgICAgICAgX2FjdGl2ZVJlc2V0U3J0cFBhcmFtc107CisgICAg
ICAgICAgICAgICAgICAgICAgIF9hY3RpdmVSZXNldFNydHBQYXJhbXMsCisgICAgICAgICAgICAg
ICAgICAgICAgIF91c2VNZWRpYVRyYW5zcG9ydF07CiB9CiAKICNwcmFnbWEgbWFyayAtIFByaXZh
dGUKQEAgLTE2Niw2ICsxOTMsOCBAQCAtICh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpSVENDb25maWd1cmF0aW9uICopCiAgICAgICBuYXRpdmVDYW5kaWRhdGVOZXR3b3JrUG9saWN5
Rm9yUG9saWN5Ol9jYW5kaWRhdGVOZXR3b3JrUG9saWN5XTsKICAgbmF0aXZlQ29uZmlnLT5jb250
aW51YWxfZ2F0aGVyaW5nX3BvbGljeSA9IFtbc2VsZiBjbGFzc10KICAgICAgIG5hdGl2ZUNvbnRp
bnVhbEdhdGhlcmluZ1BvbGljeUZvclBvbGljeTpfY29udGludWFsR2F0aGVyaW5nUG9saWN5XTsK
KyAgbmF0aXZlQ29uZmlnLT5kaXNhYmxlX2lwdjYgPSBfZGlzYWJsZUlQVjY7CisgIG5hdGl2ZUNv
bmZpZy0+ZGlzYWJsZV9pcHY2X29uX3dpZmkgPSBfZGlzYWJsZUlQVjZPbldpRmk7CiAgIG5hdGl2
ZUNvbmZpZy0+bWF4X2lwdjZfbmV0d29ya3MgPSBfbWF4SVB2Nk5ldHdvcmtzOwogICBuYXRpdmVD
b25maWctPmRpc2FibGVfbGlua19sb2NhbF9uZXR3b3JrcyA9IF9kaXNhYmxlTGlua0xvY2FsTmV0
d29ya3M7CiAgIG5hdGl2ZUNvbmZpZy0+YXVkaW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyA9
IF9hdWRpb0ppdHRlckJ1ZmZlck1heFBhY2tldHM7CkBAIC0xNzUsNiArMjA0LDggQEAgLSAod2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiAqKQogICAgICAg
X2ljZUNvbm5lY3Rpb25SZWNlaXZpbmdUaW1lb3V0OwogICBuYXRpdmVDb25maWctPmljZV9iYWNr
dXBfY2FuZGlkYXRlX3BhaXJfcGluZ19pbnRlcnZhbCA9CiAgICAgICBfaWNlQmFja3VwQ2FuZGlk
YXRlUGFpclBpbmdJbnRlcnZhbDsKKyAgbmF0aXZlQ29uZmlnLT51c2VfbWVkaWFfdHJhbnNwb3J0
ID0gX3VzZU1lZGlhVHJhbnNwb3J0OworICBuYXRpdmVDb25maWctPnVzZV9tZWRpYV90cmFuc3Bv
cnRfZm9yX2RhdGFfY2hhbm5lbHMgPSBfdXNlTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5lbHM7
CiAgIHJ0Yzo6S2V5VHlwZSBrZXlUeXBlID0KICAgICAgIFtbc2VsZiBjbGFzc10gbmF0aXZlRW5j
cnlwdGlvbktleVR5cGVGb3JLZXlUeXBlOl9rZXlUeXBlXTsKICAgaWYgKF9jZXJ0aWZpY2F0ZSAh
PSBudWxscHRyKSB7CkBAIC0yMjIsNiArMjUzLDIwIEBAIC0gKHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gKikKICAgICBuYXRpdmVDb25maWctPnR1cm5f
Y3VzdG9taXplciA9IF90dXJuQ3VzdG9taXplcjsKICAgfQogICBuYXRpdmVDb25maWctPmFjdGl2
ZV9yZXNldF9zcnRwX3BhcmFtcyA9IF9hY3RpdmVSZXNldFNydHBQYXJhbXMgPyB0cnVlIDogZmFs
c2U7CisgIGlmIChfY3J5cHRvT3B0aW9ucykgeworICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBu
YXRpdmVDcnlwdG9PcHRpb25zOworICAgIG5hdGl2ZUNyeXB0b09wdGlvbnMuc3J0cC5lbmFibGVf
Z2NtX2NyeXB0b19zdWl0ZXMgPQorICAgICAgICBfY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxlR2Nt
Q3J5cHRvU3VpdGVzID8gdHJ1ZSA6IGZhbHNlOworICAgIG5hdGl2ZUNyeXB0b09wdGlvbnMuc3J0
cC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9CisgICAgICAgIF9jcnlwdG9P
cHRpb25zLnNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyID8gdHJ1ZSA6IGZhbHNl
OworICAgIG5hdGl2ZUNyeXB0b09wdGlvbnMuc3J0cC5lbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFk
ZXJfZXh0ZW5zaW9ucyA9CisgICAgICAgIF9jcnlwdG9PcHRpb25zLnNydHBFbmFibGVFbmNyeXB0
ZWRSdHBIZWFkZXJFeHRlbnNpb25zID8gdHJ1ZSA6IGZhbHNlOworICAgIG5hdGl2ZUNyeXB0b09w
dGlvbnMuc2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbiA9CisgICAgICAgIF9jcnlwdG9P
cHRpb25zLnNmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb24gPyB0cnVlIDogZmFsc2U7CisgICAg
bmF0aXZlQ29uZmlnLT5jcnlwdG9fb3B0aW9ucyA9IGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6Q3J5
cHRvT3B0aW9ucz4obmF0aXZlQ3J5cHRvT3B0aW9ucyk7CisgIH0KKyAgbmF0aXZlQ29uZmlnLT5z
ZXRfYXVkaW9fcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMoX3J0Y3BBdWRpb1JlcG9ydEludGVydmFs
TXMpOworICBuYXRpdmVDb25maWctPnNldF92aWRlb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyhf
cnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxNcyk7CiAgIHJldHVybiBuYXRpdmVDb25maWcucmVsZWFz
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ3J5cHRvT3B0aW9ucy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3Bl
ZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDY1YmI1YTczYmRm
YjhlMzdmODgyNTE0YTljYjE2OTZjMDNjZmNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0
aW9uL1JUQ0NyeXB0b09wdGlvbnMuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogIENvcHlyaWdo
dCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworI2ltcG9ydCAiUlRDTWFj
cm9zLmgiCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKKy8qKgorICogT2JqZWN0aXZlLUMg
YmluZGluZ3MgZm9yIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucy4gVGhpcyBBUEkgaGFkIHRvIGJlIGZs
YXR0ZW5lZAorICogYXMgT2JqZWN0aXZlLUMgZG9lc24ndCBzdXBwb3J0IG5lc3RlZCBzdHJ1Y3R1
cmVzLgorICovCitSVENfT0JKQ19FWFBPUlQKK0BpbnRlcmZhY2UgUlRDQ3J5cHRvT3B0aW9ucyA6
IE5TT2JqZWN0CisKKy8qKgorICogRW5hYmxlIEdDTSBjcnlwdG8gc3VpdGVzIGZyb20gUkZDIDc3
MTQgZm9yIFNSVFAuIEdDTSB3aWxsIG9ubHkgYmUgdXNlZAorICogaWYgYm90aCBzaWRlcyBlbmFi
bGUgaXQKKyAqLworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIHNydHBFbmFibGVH
Y21DcnlwdG9TdWl0ZXM7CisvKioKKyAqIElmIHNldCB0byB0cnVlLCB0aGUgKHBvdGVudGlhbGx5
IGluc2VjdXJlKSBjcnlwdG8gY2lwaGVyCisgKiBTUlRQX0FFUzEyOF9DTV9TSEExXzMyIHdpbGwg
YmUgaW5jbHVkZWQgaW4gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGNpcGhlcnMKKyAqIGR1cmluZyBu
ZWdvdGlhdGlvbi4gSXQgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYm90aCBwZWVycyBzdXBwb3J0IGl0
IGFuZCBubworICogb3RoZXIgY2lwaGVycyBnZXQgcHJlZmVycmVkLgorICovCitAcHJvcGVydHko
bm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBo
ZXI7CisvKioKKyAqIElmIHNldCB0byB0cnVlLCBlbmNyeXB0ZWQgUlRQIGhlYWRlciBleHRlbnNp
b25zIGFzIGRlZmluZWQgaW4gUkZDIDY5MDQKKyAqIHdpbGwgYmUgbmVnb3RpYXRlZC4gVGhleSB3
aWxsIG9ubHkgYmUgdXNlZCBpZiBib3RoIHBlZXJzIHN1cHBvcnQgdGhlbS4KKyAqLworQHByb3Bl
cnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIHNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJF
eHRlbnNpb25zOworCisvKioKKyAqIElmIHNldCBhbGwgUnRwU2VuZGVycyBtdXN0IGhhdmUgYW4g
RnJhbWVFbmNyeXB0b3IgYXR0YWNoZWQgdG8gdGhlbSBiZWZvcmUKKyAqIHRoZXkgYXJlIGFsbG93
ZWQgdG8gc2VuZCBwYWNrZXRzLiBBbGwgUnRwUmVjZWl2ZXJzIG11c3QgaGF2ZSBhCisgKiBGcmFt
ZURlY3J5cHRvciBhdHRhY2hlZCB0byB0aGVtIGJlZm9yZSB0aGV5IGFyZSBhYmxlIHRvIHJlY2Vp
dmUgcGFja2V0cy4KKyAqLworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIHNmcmFt
ZVJlcXVpcmVGcmFtZUVuY3J5cHRpb247CisKKy8qKgorICogSW5pdGlhbGl6ZXMgQ3J5cHRvT3B0
aW9ucyB3aXRoIGFsbCBwb3NzaWJsZSBvcHRpb25zIHNldCBleHBsaWNpdGx5LiBUaGlzCisgKiBp
cyBkb25lIHdoZW4gY29udmVydGluZyBmcm9tIGEgbmF0aXZlIFJUQ0NvbmZpZ3VyYXRpb24uY3J5
cHRvX29wdGlvbnMuCisgKi8KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNydHBFbmFibGVHY21D
cnlwdG9TdWl0ZXM6KEJPT0wpc3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlcworICAgICAgICAgICAg
ICBzcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjooQk9PTClzcnRwRW5hYmxlQWVz
MTI4U2hhMV8zMkNyeXB0b0NpcGhlcgorICAgICAgICAgICBzcnRwRW5hYmxlRW5jcnlwdGVkUnRw
SGVhZGVyRXh0ZW5zaW9uczooQk9PTClzcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5z
aW9ucworICAgICAgICAgICAgICAgICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbjoo
Qk9PTClzZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uCisgICAgTlNfREVTSUdOQVRFRF9JTklU
SUFMSVpFUjsKKworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisKK0BlbmQK
KworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ3J5
cHRvT3B0aW9ucy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENDcnlwdG9PcHRpb25zLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmEwNTlmNzU1OTk0ZTc0MzAzMDMyMWRhNWYyZTA0MzJmMGIyMTFmZjkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ3J5cHRvT3B0aW9ucy5tbQpAQCAtMCwwICsxLDMzIEBA
CisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW1wb3J0ICJSVENDcnlwdG9PcHRpb25zLmgiCisKK0Bp
bXBsZW1lbnRhdGlvbiBSVENDcnlwdG9PcHRpb25zCisKK0BzeW50aGVzaXplIHNydHBFbmFibGVH
Y21DcnlwdG9TdWl0ZXMgPSBfc3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlczsKK0BzeW50aGVzaXpl
IHNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyID0gX3NydHBFbmFibGVBZXMxMjhT
aGExXzMyQ3J5cHRvQ2lwaGVyOworQHN5bnRoZXNpemUgc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhl
YWRlckV4dGVuc2lvbnMgPSBfc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnM7
CitAc3ludGhlc2l6ZSBzZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uID0gX3NmcmFtZVJlcXVp
cmVGcmFtZUVuY3J5cHRpb247CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNydHBFbmFibGVH
Y21DcnlwdG9TdWl0ZXM6KEJPT0wpc3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlcworICAgICAgICAg
ICAgICBzcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjooQk9PTClzcnRwRW5hYmxl
QWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcgorICAgICAgICAgICBzcnRwRW5hYmxlRW5jcnlwdGVk
UnRwSGVhZGVyRXh0ZW5zaW9uczooQk9PTClzcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0
ZW5zaW9ucworICAgICAgICAgICAgICAgICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlv
bjooQk9PTClzZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uIHsKKyAgaWYgKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pIHsKKyAgICBfc3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlcyA9IHNydHBFbmFibGVH
Y21DcnlwdG9TdWl0ZXM7CisgICAgX3NydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVy
ID0gc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7CisgICAgX3NydHBFbmFibGVF
bmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zID0gc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRl
ckV4dGVuc2lvbnM7CisgICAgX3NmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb24gPSBzZnJhbWVS
ZXF1aXJlRnJhbWVFbmNyeXB0aW9uOworICB9CisgIHJldHVybiBzZWxmOworfQorCitAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29u
bmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5oCmluZGV4IDFiMTI1ZjEwMzlhMjJmMjI5
ZjA5MmI5YTc2Y2YzNDJiMDhjNmJjNDEuLmM3N2E3YWQ4NWQ3YmI3YThkYmI1ZjBhOGNkNzEwOTU3
N2Q1ODJlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5oCkBAIC0xMCw3
ICsxMCw3IEBACiAKICNpbXBvcnQgImJhc2UvUlRDRW5jb2RlZEltYWdlLmgiCiAKLSNpbmNsdWRl
ICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUgImFwaS92aWRl
by9lbmNvZGVkX2ltYWdlLmgiCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlv
bi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbQppbmRleCA5NGNiMWYxMTBmOTZjZjAzY2Q1MWFk
N2JlZDQ1MGUxNWI4MjE4OTQ3Li5mOTkwMWJkMzI3ZThmMjRiY2YwYmYxNzZiMDA0ZmY5ZTFhZjVh
NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1tCkBAIC0zNSw3ICsz
NSw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZUVuY29kZWRJbWFnZTood2VicnRj
OjpFbmNvZGVkSW1hZ2UpZW5jb2RlZEltYWdlIHsKICAgICBzZWxmLmNvbnRlbnRUeXBlID0gKGVu
Y29kZWRJbWFnZS5jb250ZW50X3R5cGVfID09IHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6U0NS
RUVOU0hBUkUpID8KICAgICAgICAgUlRDVmlkZW9Db250ZW50VHlwZVNjcmVlbnNoYXJlIDoKICAg
ICAgICAgUlRDVmlkZW9Db250ZW50VHlwZVVuc3BlY2lmaWVkOwotICAgIHNlbGYuc3BhdGlhbElu
ZGV4ID0gZW5jb2RlZEltYWdlLlNwYXRpYWxJbmRleCgpID8gKmVuY29kZWRJbWFnZS5TcGF0aWFs
SW5kZXgoKSA6IDA7CiAgIH0KIAogICByZXR1cm4gc2VsZjsKQEAgLTU3LDExICs1NiwxMSBAQCAt
ICh3ZWJydGM6OkVuY29kZWRJbWFnZSluYXRpdmVFbmNvZGVkSW1hZ2UgewogICBlbmNvZGVkSW1h
Z2Uucm90YXRpb25fID0gd2VicnRjOjpWaWRlb1JvdGF0aW9uKHNlbGYucm90YXRpb24pOwogICBl
bmNvZGVkSW1hZ2UuX2NvbXBsZXRlRnJhbWUgPSBzZWxmLmNvbXBsZXRlRnJhbWU7CiAgIGVuY29k
ZWRJbWFnZS5xcF8gPSBzZWxmLnFwID8gc2VsZi5xcC5pbnRWYWx1ZSA6IC0xOworICBlbmNvZGVk
SW1hZ2UuU2V0U3BhdGlhbEluZGV4KHNlbGYuc3BhdGlhbEluZGV4KTsKICAgZW5jb2RlZEltYWdl
LmNvbnRlbnRfdHlwZV8gPSAoc2VsZi5jb250ZW50VHlwZSA9PSBSVENWaWRlb0NvbnRlbnRUeXBl
U2NyZWVuc2hhcmUpID8KICAgICAgIHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6U0NSRUVOU0hB
UkUgOgogICAgICAgd2VicnRjOjpWaWRlb0NvbnRlbnRUeXBlOjpVTlNQRUNJRklFRDsKLSAgaWYg
KHNlbGYuc3BhdGlhbEluZGV4KQotICAgIGVuY29kZWRJbWFnZS5TZXRTcGF0aWFsSW5kZXgoc2Vs
Zi5zcGF0aWFsSW5kZXgpOworCiAgIHJldHVybiBlbmNvZGVkSW1hZ2U7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENGaWVsZFRyaWFscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0ZpZWxk
VHJpYWxzLmgKaW5kZXggZWZmYzQ3MDY4NmY4MTBiNDAxNWYyM2I1MWM0YTRjMWYzOTE3NDBlYi4u
Y2Y2NDhkMzJjM2E5MTA4MWJlYjFkMjcxZjU1YzlkMmJhMjIxNzIwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJj
b25uZWN0aW9uL1JUQ0ZpZWxkVHJpYWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0ZpZWxkVHJp
YWxzLmgKQEAgLTIwLDI0ICsyMCwxMiBAQCBSVENfRVhURVJOIE5TU3RyaW5nICogY29uc3Qga1JU
Q0ZpZWxkVHJpYWxBdWRpb0ZvcmNlQUJXRU5vVFdDQ0tleTsKIFJUQ19FWFRFUk4gTlNTdHJpbmcg
KiBjb25zdCBrUlRDRmllbGRUcmlhbFNlbmRTaWRlQndlV2l0aE92ZXJoZWFkS2V5OwogUlRDX0VY
VEVSTiBOU1N0cmluZyAqIGNvbnN0IGtSVENGaWVsZFRyaWFsRmxleEZlYzAzQWR2ZXJ0aXNlZEtl
eTsKIFJUQ19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEZsZXhGZWMwM0tl
eTsKLVJUQ19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEltcHJvdmVkQml0
cmF0ZUVzdGltYXRlS2V5OwogUlRDX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IGtSVENGaWVsZFRy
aWFsSDI2NEhpZ2hQcm9maWxlS2V5OwogUlRDX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IGtSVENG
aWVsZFRyaWFsTWluaW1pemVSZXNhbXBsaW5nT25Nb2JpbGVLZXk7CiAKIC8qKiBUaGUgdmFsaWQg
dmFsdWUgZm9yIGZpZWxkIHRyaWFscyBhYm92ZS4gKi8KIFJUQ19FWFRFUk4gTlNTdHJpbmcgKiBj
b25zdCBrUlRDRmllbGRUcmlhbEVuYWJsZWRWYWx1ZTsKIAotLyoqIFVzZSBhIHN0cmluZyByZXR1
cm5lZCBieSBSVENGaWVsZFRyaWFsTWVkaWFuU2xvcGVGaWx0ZXJWYWx1ZSBhcyB0aGUgdmFsdWUu
ICovCi1SVENfRVhURVJOIE5TU3RyaW5nICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxNZWRpYW5TbG9w
ZUZpbHRlcktleTsKLVJUQ19FWFRFUk4gTlNTdHJpbmcgKlJUQ0ZpZWxkVHJpYWxNZWRpYW5TbG9w
ZUZpbHRlclZhbHVlKAotICAgIHNpemVfdCB3aW5kb3dTaXplLCBkb3VibGUgdGhyZXNob2xkR2Fp
bik7Ci0KLS8qKiBVc2UgYSBzdHJpbmcgcmV0dXJuZWQgYnkgUlRDRmllbGRUcmlhbFRyZW5kbGlu
ZUZpbHRlclZhbHVlIGFzIHRoZSB2YWx1ZS4gKi8KLVJUQ19FWFRFUk4gTlNTdHJpbmcgKiBjb25z
dCBrUlRDRmllbGRUcmlhbFRyZW5kbGluZUZpbHRlcktleTsKLS8qKiBSZXR1cm5zIGEgdmFsaWQg
dmFsdWUgZm9yIGtSVENGaWVsZFRyaWFsVHJlbmRsaW5lRmlsdGVyS2V5LiAqLwotUlRDX0VYVEVS
TiBOU1N0cmluZyAqUlRDRmllbGRUcmlhbFRyZW5kbGluZUZpbHRlclZhbHVlKAotICAgIHNpemVf
dCB3aW5kb3dTaXplLCBkb3VibGUgc21vb3RoaW5nQ29lZmYsIGRvdWJsZSB0aHJlc2hvbGRHYWlu
KTsKLQogLyoqIEluaXRpYWxpemUgZmllbGQgdHJpYWxzIHVzaW5nIGEgZGljdGlvbmFyeSBtYXBw
aW5nIGZpZWxkIHRyaWFsIGtleXMgdG8gdGhlaXIKICAqIHZhbHVlcy4gU2VlIGFib3ZlIGZvciB2
YWxpZCBrZXlzIGFuZCB2YWx1ZXMuIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIKICAq
IGNhbGwgaW50byBXZWJSVEMuIFNlZTogd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Zp
ZWxkX3RyaWFsLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENGaWVsZFRyaWFscy5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9w
ZWVyY29ubmVjdGlvbi9SVENGaWVsZFRyaWFscy5tbQppbmRleCAyMjEyYzdkZWM5NzE0Yjc5OWJk
MjkxZjU3ZmYxMzZmZDg1NGM2MjA2Li4xMjdjZTZmZWI4OWYzN2QzYTQxNGI1NWM5MDczMThhNGNk
NTQzMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRmllbGRUcmlhbHMubW0KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3Bl
ZXJjb25uZWN0aW9uL1JUQ0ZpZWxkVHJpYWxzLm1tCkBAIC0yMyw5ICsyMyw2IEBAIE5TU3RyaW5n
ICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxBdWRpb0ZvcmNlQUJXRU5vVFdDQ0tleSA9IEAiV2ViUlRD
LUF1ZGlvLUFCV0VOb1RXCiBOU1N0cmluZyAqIGNvbnN0IGtSVENGaWVsZFRyaWFsU2VuZFNpZGVC
d2VXaXRoT3ZlcmhlYWRLZXkgPSBAIldlYlJUQy1TZW5kU2lkZUJ3ZS1XaXRoT3ZlcmhlYWQiOwog
TlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEZsZXhGZWMwM0FkdmVydGlzZWRLZXkgPSBA
IldlYlJUQy1GbGV4RkVDLTAzLUFkdmVydGlzZWQiOwogTlNTdHJpbmcgKiBjb25zdCBrUlRDRmll
bGRUcmlhbEZsZXhGZWMwM0tleSA9IEAiV2ViUlRDLUZsZXhGRUMtMDMiOwotTlNTdHJpbmcgKiBj
b25zdCBrUlRDRmllbGRUcmlhbEltcHJvdmVkQml0cmF0ZUVzdGltYXRlS2V5ID0gQCJXZWJSVEMt
SW1wcm92ZWRCaXRyYXRlRXN0aW1hdGUiOwotTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlh
bE1lZGlhblNsb3BlRmlsdGVyS2V5ID0gQCJXZWJSVEMtQndlTWVkaWFuU2xvcGVGaWx0ZXIiOwot
TlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbFRyZW5kbGluZUZpbHRlcktleSA9IEAiV2Vi
UlRDLUJ3ZVRyZW5kbGluZUZpbHRlciI7CiBOU1N0cmluZyAqIGNvbnN0IGtSVENGaWVsZFRyaWFs
SDI2NEhpZ2hQcm9maWxlS2V5ID0gQCJXZWJSVEMtSDI2NEhpZ2hQcm9maWxlIjsKIE5TU3RyaW5n
ICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxNaW5pbWl6ZVJlc2FtcGxpbmdPbk1vYmlsZUtleSA9CiAg
ICAgQCJXZWJSVEMtQXVkaW8tTWluaW1pemVSZXNhbXBsaW5nT25Nb2JpbGUiOwpAQCAtMzMsMTgg
KzMwLDYgQEAgTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEVuYWJsZWRWYWx1ZSA9IEAi
RW5hYmxlZCI7CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBnRmllbGRUcmlhbElu
aXRTdHJpbmc7CiAKLU5TU3RyaW5nICpSVENGaWVsZFRyaWFsTWVkaWFuU2xvcGVGaWx0ZXJWYWx1
ZSgKLSAgICBzaXplX3Qgd2luZG93U2l6ZSwgZG91YmxlIHRocmVzaG9sZEdhaW4pIHsKLSAgTlNT
dHJpbmcgKmZvcm1hdCA9IEAiRW5hYmxlZC0lenUsJWxmIjsKLSAgcmV0dXJuIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OmZvcm1hdCwgd2luZG93U2l6ZSwgdGhyZXNob2xkR2Fpbl07Ci19Ci0K
LU5TU3RyaW5nICpSVENGaWVsZFRyaWFsVHJlbmRsaW5lRmlsdGVyVmFsdWUoCi0gICAgc2l6ZV90
IHdpbmRvd1NpemUsIGRvdWJsZSBzbW9vdGhpbmdDb2VmZiwgZG91YmxlIHRocmVzaG9sZEdhaW4p
IHsKLSAgTlNTdHJpbmcgKmZvcm1hdCA9IEAiRW5hYmxlZC0lenUsJWxmLCVsZiI7Ci0gIHJldHVy
biBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIHdpbmRvd1NpemUsIHNtb290aGlu
Z0NvZWZmLCB0aHJlc2hvbGRHYWluXTsKLX0KLQogdm9pZCBSVENJbml0RmllbGRUcmlhbERpY3Rp
b25hcnkoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICpmaWVsZFRyaWFscykg
ewogICBpZiAoIWZpZWxkVHJpYWxzKSB7CiAgICAgUlRDTG9nV2FybmluZyhAIk5vIGZpZWxkVHJp
YWxzIHByb3ZpZGVkLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0
aW9uK1ByaXZhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbitQcml2YXRlLmgK
aW5kZXggYjY0NDBjZDQzNGE4NTdlYmQ3YTMyMTZmODJmYjMzM2I5NzdiMjRjMS4uZDI2ZWIyZTU5
MjU1NGJkMjNjZmI0ZGI4YTE4NzEzZGNjNzMyMTExMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9u
L1JUQ1BlZXJDb25uZWN0aW9uK1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNv
bm5lY3Rpb24rUHJpdmF0ZS5oCkBAIC0zOSw2ICszOSw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9u
RGVsZWdhdGVBZGFwdGVyIDogcHVibGljIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgewogCiAgIHZv
aWQgT25JY2VDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25u
ZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSBvdmVycmlkZTsKIAorICB2b2lkIE9uQ29ubmVjdGlvbkNo
YW5nZShQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdfc3Rh
dGUpIG92ZXJyaWRlOworCiAgIHZvaWQgT25JY2VHYXRoZXJpbmdDaGFuZ2UoUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OkljZUdhdGhlcmluZ1N0YXRlIG5ld19zdGF0ZSkgb3ZlcnJpZGU7CiAKICAg
dm9pZCBPbkljZUNhbmRpZGF0ZShjb25zdCBJY2VDYW5kaWRhdGVJbnRlcmZhY2UgKmNhbmRpZGF0
ZSkgb3ZlcnJpZGU7CkBAIC04NSwxMSArODcsMTkgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25EZWxl
Z2F0ZUFkYXB0ZXIgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25PYnNlcnZlciB7CiArICh3ZWJydGM6
OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUpbmF0aXZlSWNlQ29u
bmVjdGlvblN0YXRlRm9yU3RhdGU6CiAgICAgICAgIChSVENJY2VDb25uZWN0aW9uU3RhdGUpc3Rh
dGU7CiAKKysgKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9u
U3RhdGUpbmF0aXZlQ29ubmVjdGlvblN0YXRlRm9yU3RhdGU6CisgICAgICAgIChSVENQZWVyQ29u
bmVjdGlvblN0YXRlKXN0YXRlOworCiArIChSVENJY2VDb25uZWN0aW9uU3RhdGUpaWNlQ29ubmVj
dGlvblN0YXRlRm9yTmF0aXZlU3RhdGU6CiAgICAgICAgICh3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUpbmF0aXZlU3RhdGU7CiAKKysgKFJUQ1BlZXJD
b25uZWN0aW9uU3RhdGUpY29ubmVjdGlvblN0YXRlRm9yTmF0aXZlU3RhdGU6CisgICAgICAgICh3
ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlKW5hdGl2
ZVN0YXRlOworCiArIChOU1N0cmluZyAqKXN0cmluZ0ZvckljZUNvbm5lY3Rpb25TdGF0ZTooUlRD
SWNlQ29ubmVjdGlvblN0YXRlKXN0YXRlOwogCisrIChOU1N0cmluZyAqKXN0cmluZ0ZvckNvbm5l
Y3Rpb25TdGF0ZTooUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSlzdGF0ZTsKKwogKyAod2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlR2F0aGVyaW5nU3RhdGUpbmF0aXZlSWNlR2F0aGVy
aW5nU3RhdGVGb3JTdGF0ZToKICAgICAgICAgKFJUQ0ljZUdhdGhlcmluZ1N0YXRlKXN0YXRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDAxNzllYzBlMjZkZjkzYWI1MWVlMmI3ZGY1
NzIyYzFmMmZmNGNiYTEuLjM5M2E1MGJjODk4NGVjOTljMDE0Yjc0ZTYzNDFlNWU3YWYyNmM1MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29u
bmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC01Nyw2ICs1NywxNiBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBSVENJY2VDb25uZWN0aW9uU3RhdGUpIHsKICAgUlRDSWNlQ29ubmVj
dGlvblN0YXRlQ291bnQsCiB9OwogCisvKiogUmVwcmVzZW50cyB0aGUgY29tYmluZWQgaWNlK2R0
bHMgY29ubmVjdGlvbiBzdGF0ZSBvZiB0aGUgcGVlciBjb25uZWN0aW9uLiAqLwordHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSkgeworICBSVENQZWVyQ29u
bmVjdGlvblN0YXRlTmV3LAorICBSVENQZWVyQ29ubmVjdGlvblN0YXRlQ29ubmVjdGluZywKKyAg
UlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNvbm5lY3RlZCwKKyAgUlRDUGVlckNvbm5lY3Rpb25TdGF0
ZURpc2Nvbm5lY3RlZCwKKyAgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUZhaWxlZCwKKyAgUlRDUGVl
ckNvbm5lY3Rpb25TdGF0ZUNsb3NlZCwKK307CisKIC8qKiBSZXByZXNlbnRzIHRoZSBpY2UgZ2F0
aGVyaW5nIHN0YXRlIG9mIHRoZSBwZWVyIGNvbm5lY3Rpb24uICovCiB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBSVENJY2VHYXRoZXJpbmdTdGF0ZSkgewogICBSVENJY2VHYXRoZXJpbmdTdGF0
ZU5ldywKQEAgLTExNSwxMSArMTI1LDE0IEBAIFJUQ19PQkpDX0VYUE9SVAogICogIFRoaXMgaXMg
b25seSBjYWxsZWQgd2l0aCBSVENTZHBTZW1hbnRpY3NVbmlmaWVkUGxhbiBzcGVjaWZpZWQuCiAg
Ki8KIEBvcHRpb25hbAorLyoqIENhbGxlZCBhbnkgdGltZSB0aGUgUGVlckNvbm5lY3Rpb25TdGF0
ZSBjaGFuZ2VzLiAqLworLSAodm9pZClwZWVyQ29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24g
KilwZWVyQ29ubmVjdGlvbgorICAgIGRpZENoYW5nZUNvbm5lY3Rpb25TdGF0ZTooUlRDUGVlckNv
bm5lY3Rpb25TdGF0ZSluZXdTdGF0ZTsKKwogLSAodm9pZClwZWVyQ29ubmVjdGlvbjooUlRDUGVl
ckNvbm5lY3Rpb24gKilwZWVyQ29ubmVjdGlvbgogICAgIGRpZFN0YXJ0UmVjZWl2aW5nT25UcmFu
c2NlaXZlcjooUlRDUnRwVHJhbnNjZWl2ZXIgKil0cmFuc2NlaXZlcjsKIAogLyoqIENhbGxlZCB3
aGVuIGEgcmVjZWl2ZXIgYW5kIGl0cyB0cmFjayBhcmUgY3JlYXRlZC4gKi8KLUBvcHRpb25hbAog
LSAodm9pZClwZWVyQ29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24gKilwZWVyQ29ubmVjdGlv
bgogICAgICAgICBkaWRBZGRSZWNlaXZlcjooUlRDUnRwUmVjZWl2ZXIgKilydHBSZWNlaXZlcgog
ICAgICAgICAgICAgICAgc3RyZWFtczooTlNBcnJheTxSVENNZWRpYVN0cmVhbSAqPiAqKW1lZGlh
U3RyZWFtczsKQEAgLTE0NSw2ICsxNTgsNyBAQCBSVENfT0JKQ19FWFBPUlQKIEBwcm9wZXJ0eShu
b25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uICpyZW1v
dGVEZXNjcmlwdGlvbjsKIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBSVENTaWduYWxp
bmdTdGF0ZSBzaWduYWxpbmdTdGF0ZTsKIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBS
VENJY2VDb25uZWN0aW9uU3RhdGUgaWNlQ29ubmVjdGlvblN0YXRlOworQHByb3BlcnR5KG5vbmF0
b21pYywgcmVhZG9ubHkpIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgY29ubmVjdGlvblN0YXRlOwog
QHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIFJUQ0ljZUdhdGhlcmluZ1N0YXRlIGljZUdh
dGhlcmluZ1N0YXRlOwogQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIFJUQ0Nv
bmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENQZWVyQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbi5tbQpp
bmRleCA1Mjc3NDg5NzQ3YjBiOWQzODhhMDM5YzBmM2M4MDcwMjUyNzcyZTJjLi5iNTlkYWZlYzM1
ZmY5MjI1NDkzM2E3NGU5YmExNTBkNzc1NTRkM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24v
UlRDUGVlckNvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9u
Lm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiYXBp
L2pzZXBpY2VjYW5kaWRhdGUuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVy
ZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBOU1N0cmluZyAqIGNvbnN0
IGtSVENQZWVyQ29ubmVjdGlvbkVycm9yRG9tYWluID0KQEAgLTE3NCwxMSArMTc1LDE3IEBAIHZv
aWQgUGVlckNvbm5lY3Rpb25EZWxlZ2F0ZUFkYXB0ZXI6Ok9uUmVuZWdvdGlhdGlvbk5lZWRlZCgp
IHsKIAogdm9pZCBQZWVyQ29ubmVjdGlvbkRlbGVnYXRlQWRhcHRlcjo6T25JY2VDb25uZWN0aW9u
Q2hhbmdlKAogICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUg
bmV3X3N0YXRlKSB7Ci0gIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSBzdGF0ZSA9Ci0gICAgICBbW1JU
Q1BlZXJDb25uZWN0aW9uIGNsYXNzXSBpY2VDb25uZWN0aW9uU3RhdGVGb3JOYXRpdmVTdGF0ZTpu
ZXdfc3RhdGVdOwotICBSVENQZWVyQ29ubmVjdGlvbiAqcGVlcl9jb25uZWN0aW9uID0gcGVlcl9j
b25uZWN0aW9uXzsKLSAgW3BlZXJfY29ubmVjdGlvbi5kZWxlZ2F0ZSBwZWVyQ29ubmVjdGlvbjpw
ZWVyX2Nvbm5lY3Rpb24KLSAgICAgICAgICAgICAgIGRpZENoYW5nZUljZUNvbm5lY3Rpb25TdGF0
ZTpzdGF0ZV07CisgIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSBzdGF0ZSA9IFtSVENQZWVyQ29ubmVj
dGlvbiBpY2VDb25uZWN0aW9uU3RhdGVGb3JOYXRpdmVTdGF0ZTpuZXdfc3RhdGVdOworICBbcGVl
cl9jb25uZWN0aW9uXy5kZWxlZ2F0ZSBwZWVyQ29ubmVjdGlvbjpwZWVyX2Nvbm5lY3Rpb25fIGRp
ZENoYW5nZUljZUNvbm5lY3Rpb25TdGF0ZTpzdGF0ZV07Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rp
b25EZWxlZ2F0ZUFkYXB0ZXI6Ok9uQ29ubmVjdGlvbkNoYW5nZSgKKyAgICBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpIHsKKyAgaWYgKFtwZWVy
X2Nvbm5lY3Rpb25fLmRlbGVnYXRlCisgICAgICAgICAgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihwZWVyQ29ubmVjdGlvbjpkaWRDaGFuZ2VDb25uZWN0aW9uU3RhdGU6KV0pIHsKKyAgICBS
VENQZWVyQ29ubmVjdGlvblN0YXRlIHN0YXRlID0gW1JUQ1BlZXJDb25uZWN0aW9uIGNvbm5lY3Rp
b25TdGF0ZUZvck5hdGl2ZVN0YXRlOm5ld19zdGF0ZV07CisgICAgW3BlZXJfY29ubmVjdGlvbl8u
ZGVsZWdhdGUgcGVlckNvbm5lY3Rpb246cGVlcl9jb25uZWN0aW9uXyBkaWRDaGFuZ2VDb25uZWN0
aW9uU3RhdGU6c3RhdGVdOworICB9CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25EZWxlZ2F0ZUFk
YXB0ZXI6Ok9uSWNlR2F0aGVyaW5nQ2hhbmdlKApAQCAtMzIxLDYgKzMyOCwxMCBAQCAtIChSVENJ
Y2VDb25uZWN0aW9uU3RhdGUpaWNlQ29ubmVjdGlvblN0YXRlIHsKICAgICAgIF9wZWVyQ29ubmVj
dGlvbi0+aWNlX2Nvbm5lY3Rpb25fc3RhdGUoKV07CiB9CiAKKy0gKFJUQ1BlZXJDb25uZWN0aW9u
U3RhdGUpY29ubmVjdGlvblN0YXRlIHsKKyAgcmV0dXJuIFtbc2VsZiBjbGFzc10gY29ubmVjdGlv
blN0YXRlRm9yTmF0aXZlU3RhdGU6X3BlZXJDb25uZWN0aW9uLT5wZWVyX2Nvbm5lY3Rpb25fc3Rh
dGUoKV07Cit9CisKIC0gKFJUQ0ljZUdhdGhlcmluZ1N0YXRlKWljZUdhdGhlcmluZ1N0YXRlIHsK
ICAgcmV0dXJuIFtbc2VsZiBjbGFzc10gaWNlR2F0aGVyaW5nU3RhdGVGb3JOYXRpdmVTdGF0ZToK
ICAgICAgIF9wZWVyQ29ubmVjdGlvbi0+aWNlX2dhdGhlcmluZ19zdGF0ZSgpXTsKQEAgLTYzMSw2
ICs2NDIsNTkgQEAgKyAoTlNTdHJpbmcgKilzdHJpbmdGb3JTaWduYWxpbmdTdGF0ZTooUlRDU2ln
bmFsaW5nU3RhdGUpc3RhdGUgewogICB9CiB9CiAKKysgKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUpbmF0aXZlQ29ubmVjdGlvblN0YXRlRm9yU3Rh
dGU6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvblN0YXRlKXN0YXRlIHsKKyAgc3dpdGNoIChz
dGF0ZSkgeworICAgIGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZU5ldzoKKyAgICAgIHJldHVy
biB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjpr
TmV3OworICAgIGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNvbm5lY3Rpbmc6CisgICAgICBy
ZXR1cm4gd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0
ZTo6a0Nvbm5lY3Rpbmc7CisgICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0YXRlQ29ubmVjdGVk
OgorICAgICAgcmV0dXJuIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25u
ZWN0aW9uU3RhdGU6OmtDb25uZWN0ZWQ7CisgICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0YXRl
RmFpbGVkOgorICAgICAgcmV0dXJuIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBl
ZXJDb25uZWN0aW9uU3RhdGU6OmtGYWlsZWQ7CisgICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0
YXRlRGlzY29ubmVjdGVkOgorICAgICAgcmV0dXJuIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtEaXNjb25uZWN0ZWQ7CisgICAgY2FzZSBSVENQ
ZWVyQ29ubmVjdGlvblN0YXRlQ2xvc2VkOgorICAgICAgcmV0dXJuIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDbG9zZWQ7CisgIH0KK30KKwor
KyAoUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSljb25uZWN0aW9uU3RhdGVGb3JOYXRpdmVTdGF0ZToK
KyAgICAgICAgKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9u
U3RhdGUpbmF0aXZlU3RhdGUgeworICBzd2l0Y2ggKG5hdGl2ZVN0YXRlKSB7CisgICAgY2FzZSB3
ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprTmV3
OgorICAgICAgcmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVOZXc7CisgICAgY2FzZSB3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29ubmVj
dGluZzoKKyAgICAgIHJldHVybiBSVENQZWVyQ29ubmVjdGlvblN0YXRlQ29ubmVjdGluZzsKKyAg
ICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3Rh
dGU6OmtDb25uZWN0ZWQ6CisgICAgICByZXR1cm4gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNvbm5l
Y3RlZDsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25u
ZWN0aW9uU3RhdGU6OmtGYWlsZWQ6CisgICAgICByZXR1cm4gUlRDUGVlckNvbm5lY3Rpb25TdGF0
ZUZhaWxlZDsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJD
b25uZWN0aW9uU3RhdGU6OmtEaXNjb25uZWN0ZWQ6CisgICAgICByZXR1cm4gUlRDUGVlckNvbm5l
Y3Rpb25TdGF0ZURpc2Nvbm5lY3RlZDsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDbG9zZWQ6CisgICAgICByZXR1cm4gUlRD
UGVlckNvbm5lY3Rpb25TdGF0ZUNsb3NlZDsKKyAgfQorfQorCisrIChOU1N0cmluZyAqKXN0cmlu
Z0ZvckNvbm5lY3Rpb25TdGF0ZTooUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSlzdGF0ZSB7CisgIHN3
aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVOZXc6CisgICAg
ICByZXR1cm4gQCJORVciOworICAgIGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNvbm5lY3Rp
bmc6CisgICAgICByZXR1cm4gQCJDT05ORUNUSU5HIjsKKyAgICBjYXNlIFJUQ1BlZXJDb25uZWN0
aW9uU3RhdGVDb25uZWN0ZWQ6CisgICAgICByZXR1cm4gQCJDT05ORUNURUQiOworICAgIGNhc2Ug
UlRDUGVlckNvbm5lY3Rpb25TdGF0ZUZhaWxlZDoKKyAgICAgIHJldHVybiBAIkZBSUxFRCI7Cisg
ICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0YXRlRGlzY29ubmVjdGVkOgorICAgICAgcmV0dXJu
IEAiRElTQ09OTkVDVEVEIjsKKyAgICBjYXNlIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVDbG9zZWQ6
CisgICAgICByZXR1cm4gQCJDTE9TRUQiOworICB9Cit9CisKICsgKHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSkKICAgICBuYXRpdmVJY2VDb25uZWN0
aW9uU3RhdGVGb3JTdGF0ZTooUlRDSWNlQ29ubmVjdGlvblN0YXRlKXN0YXRlIHsKICAgc3dpdGNo
IChzdGF0ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFj
dG9yeStOYXRpdmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnkrTmF0
aXZlLmgKaW5kZXggNjBhYTA4ZjdjYTNhMDIzZmFhMDNjMzMyOWZiY2VhYzFlNzFhNGUyYS4uMjc1
MmNmNDExNzY2YjkwNDZmNDEyMzIzMmYzNGY0YTQ1YTcwMWE5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25u
ZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeStOYXRpdmUuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rp
b24vUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5K05hdGl2ZS5oCkBAIC0xNyw2ICsxNyw3IEBAIG5h
bWVzcGFjZSB3ZWJydGMgewogY2xhc3MgQXVkaW9EZXZpY2VNb2R1bGU7CiBjbGFzcyBBdWRpb0Vu
Y29kZXJGYWN0b3J5OwogY2xhc3MgQXVkaW9EZWNvZGVyRmFjdG9yeTsKK2NsYXNzIE1lZGlhVHJh
bnNwb3J0RmFjdG9yeTsKIGNsYXNzIFZpZGVvRW5jb2RlckZhY3Rvcnk7CiBjbGFzcyBWaWRlb0Rl
Y29kZXJGYWN0b3J5OwogY2xhc3MgQXVkaW9Qcm9jZXNzaW5nOwpAQCAtNDksNiArNTAsMjUgQEAg
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRp
b1Byb2Nlc3NpbmdNb2R1bGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+KWF1ZGlvUHJvY2Vzc2luZ01v
ZHVsZTsKIAorLSAoaW5zdGFuY2V0eXBlKQorICAgIGluaXRXaXRoTmF0aXZlQXVkaW9FbmNvZGVy
RmFjdG9yeToKKyAgICAgICAgKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2Rl
ckZhY3Rvcnk+KWF1ZGlvRW5jb2RlckZhY3RvcnkKKyAgICAgICAgICAgIG5hdGl2ZUF1ZGlvRGVj
b2RlckZhY3Rvcnk6CisgICAgICAgICAgICAgICAgKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkF1ZGlvRGVjb2RlckZhY3Rvcnk+KWF1ZGlvRGVjb2RlckZhY3RvcnkKKyAgICAgICAgICAgIG5h
dGl2ZVZpZGVvRW5jb2RlckZhY3Rvcnk6CisgICAgICAgICAgICAgICAgKHN0ZDo6dW5pcXVlX3B0
cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+KXZpZGVvRW5jb2RlckZhY3RvcnkKKyAgICAg
ICAgICAgIG5hdGl2ZVZpZGVvRGVjb2RlckZhY3Rvcnk6CisgICAgICAgICAgICAgICAgKHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+KXZpZGVvRGVjb2RlckZhY3Rv
cnkKKyAgICAgICAgICAgICAgICAgICAgYXVkaW9EZXZpY2VNb2R1bGU6KG51bGxhYmxlIHdlYnJ0
Yzo6QXVkaW9EZXZpY2VNb2R1bGUgKilhdWRpb0RldmljZU1vZHVsZQorICAgICAgICAgICAgICAg
IGF1ZGlvUHJvY2Vzc2luZ01vZHVsZToKKyAgICAgICAgICAgICAgICAgICAgKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4pYXVkaW9Qcm9jZXNzaW5nTW9kdWxlCisg
ICAgICAgICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5OgorICAgICAgICAgICAgICAgICAg
ICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRGYWN0b3J5PiltZWRpYVRy
YW5zcG9ydEZhY3Rvcnk7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVuY29kZXJGYWN0b3J5
OihudWxsYWJsZSBpZDxSVENWaWRlb0VuY29kZXJGYWN0b3J5PillbmNvZGVyRmFjdG9yeQorICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjb2RlckZhY3Rvcnk6KG51bGxhYmxlIGlkPFJUQ1ZpZGVv
RGVjb2RlckZhY3Rvcnk+KWRlY29kZXJGYWN0b3J5CisgICAgICAgICAgICAgICAgIG1lZGlhVHJh
bnNwb3J0RmFjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+KW1lZGlhVHJhbnNwb3J0RmFjdG9yeTsKIEBlbmQK
IAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVl
ckNvbm5lY3Rpb25GYWN0b3J5Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFj
dG9yeS5tbQppbmRleCA0MDNkYjA0MGZiODYyMjY0OGQ0ODMyYTBlYzIwODYwOTdhYjM3ZDc4Li40
ODQ3NmYyMzY4ZjAxNDUyNDBkZWI1MGU0NTRjZTY5Mzg5NzljZmU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNv
bm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENQZWVyQ29ubmVjdGlvbkZhY3RvcnkubW0KQEAgLTUwLDYgKzUwLDcgQEAKIC8vIFRPRE8oemhp
aHVhbmcpOiBSZW1vdmUgbm9nbmNoZWNrIG9uY2UgTWVkaWFFbmdpbmVJbnRlcmZhY2UgaXMgbW92
ZWQgdG8gQysrCiAvLyBBUEkgbGF5ZXIuCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5Lmgi
CisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJt
ZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaCIgIC8vIG5vZ25jaGVjawogCiBAaW1wbGVt
ZW50YXRpb24gUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKQEAgLTgwLDEyICs4MSwxNSBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVZpZGVv
RGVjb2RlckZhY3Rvcnk6d2VicnRjOjpPYmpDVG9OYXRpdmVWaWRlb0RlY29kZXJGYWN0b3J5KAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1JU
Q1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0IGFsbG9jXSBpbml0XSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdWRpb0RldmljZU1vZHVsZTpbc2VsZiBhdWRpb0RldmljZU1vZHVsZV0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvUHJvY2Vzc2luZ01vZHVsZTpudWxscHRy
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvUHJvY2Vzc2luZ01vZHVsZTpudWxs
cHRyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVRyYW5zcG9ydEZhY3Rvcnk6bnVs
bHB0cl07CiAjZW5kaWYKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRW5jb2RlckZhY3Rv
cnk6KG51bGxhYmxlIGlkPFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnk+KWVuY29kZXJGYWN0b3J5Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyRmFjdG9yeToobnVsbGFibGUgaWQ8UlRDVmlk
ZW9EZWNvZGVyRmFjdG9yeT4pZGVjb2RlckZhY3RvcnkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgZGVjb2RlckZhY3Rvcnk6KG51bGxhYmxlIGlkPFJUQ1ZpZGVvRGVjb2RlckZhY3Rvcnk+KWRl
Y29kZXJGYWN0b3J5CisgICAgICAgICAgICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9yeToKKyAg
ICAgICAgICAgICAgICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5zcG9y
dEZhY3Rvcnk+KW1lZGlhVHJhbnNwb3J0RmFjdG9yeSB7CiAjaWZkZWYgSEFWRV9OT19NRURJQQog
ICByZXR1cm4gW3NlbGYgaW5pdFdpdGhOb01lZGlhXTsKICNlbHNlCkBAIC0xMDIsOSArMTA2LDE2
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVuY29kZXJGYWN0b3J5OihudWxsYWJsZSBpZDxS
VENWaWRlb0VuY29kZXJGYWN0b3J5PillbmNvCiAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2
ZVZpZGVvRW5jb2RlckZhY3Rvcnk6c3RkOjptb3ZlKG5hdGl2ZV9lbmNvZGVyX2ZhY3RvcnkpCiAg
ICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRGVjb2RlckZhY3Rvcnk6c3RkOjptb3Zl
KG5hdGl2ZV9kZWNvZGVyX2ZhY3RvcnkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXVkaW9EZXZpY2VNb2R1bGU6W3NlbGYgYXVkaW9EZXZpY2VNb2R1bGVdCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6bnVsbHB0cl07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6bnVsbHB0cgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5OnN0ZDo6bW92ZShtZWRpYVRy
YW5zcG9ydEZhY3RvcnkpXTsKICNlbmRpZgogfQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRW5j
b2RlckZhY3Rvcnk6KG51bGxhYmxlIGlkPFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnk+KWVuY29kZXJG
YWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyRmFjdG9yeToobnVsbGFibGUg
aWQ8UlRDVmlkZW9EZWNvZGVyRmFjdG9yeT4pZGVjb2RlckZhY3RvcnkgeworICByZXR1cm4gW3Nl
bGYgaW5pdFdpdGhFbmNvZGVyRmFjdG9yeTplbmNvZGVyRmFjdG9yeQorICAgICAgICAgICAgICAg
ICAgICAgICBkZWNvZGVyRmFjdG9yeTpkZWNvZGVyRmFjdG9yeQorICAgICAgICAgICAgICAgIG1l
ZGlhVHJhbnNwb3J0RmFjdG9yeTpudWxscHRyXTsKK30KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRO
YXRpdmUgewogICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewpAQCAtMTUyLDIwICsxNjMsNTcg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlQXVkaW9FbmNvZGVyRmFjdG9yeToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsYWJsZSB3ZWJydGM6OkF1ZGlv
RGV2aWNlTW9kdWxlICopYXVkaW9EZXZpY2VNb2R1bGUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+KWF1ZGlvUHJv
Y2Vzc2luZ01vZHVsZSB7CisgIHJldHVybiBbc2VsZiBpbml0V2l0aE5hdGl2ZUF1ZGlvRW5jb2Rl
ckZhY3Rvcnk6YXVkaW9FbmNvZGVyRmFjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICBuYXRp
dmVBdWRpb0RlY29kZXJGYWN0b3J5OmF1ZGlvRGVjb2RlckZhY3RvcnkKKyAgICAgICAgICAgICAg
ICAgICAgICAgbmF0aXZlVmlkZW9FbmNvZGVyRmFjdG9yeTpzdGQ6Om1vdmUodmlkZW9FbmNvZGVy
RmFjdG9yeSkKKyAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlVmlkZW9EZWNvZGVyRmFjdG9y
eTpzdGQ6Om1vdmUodmlkZW9EZWNvZGVyRmFjdG9yeSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdWRpb0RldmljZU1vZHVsZTphdWRpb0RldmljZU1vZHVsZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOmF1ZGlvUHJvY2Vzc2luZ01vZHVs
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5Om51bGxw
dHJdOworfQorCistIChpbnN0YW5jZXR5cGUpCisgICAgaW5pdFdpdGhOYXRpdmVBdWRpb0VuY29k
ZXJGYWN0b3J5OgorICAgICAgICAocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9FbmNv
ZGVyRmFjdG9yeT4pYXVkaW9FbmNvZGVyRmFjdG9yeQorICAgICAgICAgICAgbmF0aXZlQXVkaW9E
ZWNvZGVyRmFjdG9yeToKKyAgICAgICAgICAgICAgICAocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeT4pYXVkaW9EZWNvZGVyRmFjdG9yeQorICAgICAgICAgICAg
bmF0aXZlVmlkZW9FbmNvZGVyRmFjdG9yeToKKyAgICAgICAgICAgICAgICAoc3RkOjp1bmlxdWVf
cHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4pdmlkZW9FbmNvZGVyRmFjdG9yeQorICAg
ICAgICAgICAgbmF0aXZlVmlkZW9EZWNvZGVyRmFjdG9yeToKKyAgICAgICAgICAgICAgICAoc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4pdmlkZW9EZWNvZGVyRmFj
dG9yeQorICAgICAgICAgICAgICAgICAgICBhdWRpb0RldmljZU1vZHVsZToobnVsbGFibGUgd2Vi
cnRjOjpBdWRpb0RldmljZU1vZHVsZSAqKWF1ZGlvRGV2aWNlTW9kdWxlCisgICAgICAgICAgICAg
ICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOgorICAgICAgICAgICAgICAgICAgICAocnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPilhdWRpb1Byb2Nlc3NpbmdNb2R1bGUK
KyAgICAgICAgICAgICAgICBtZWRpYVRyYW5zcG9ydEZhY3Rvcnk6CisgICAgICAgICAgICAgICAg
ICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+KW1lZGlh
VHJhbnNwb3J0RmFjdG9yeSB7CiAjaWZkZWYgSEFWRV9OT19NRURJQQogICByZXR1cm4gW3NlbGYg
aW5pdFdpdGhOb01lZGlhXTsKICNlbHNlCiAgIGlmIChzZWxmID0gW3NlbGYgaW5pdE5hdGl2ZV0p
IHsKLSAgICBfbmF0aXZlRmFjdG9yeSA9IHdlYnJ0Yzo6Q3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0
b3J5KF9uZXR3b3JrVGhyZWFkLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dvcmtlclRocmVhZC5nZXQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zaWduYWxp
bmdUaHJlYWQuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdWRpb0RldmljZU1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRW5jb2RlckZhY3Rvcnks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdWRpb0RlY29kZXJGYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHZpZGVvRW5jb2RlckZhY3RvcnkpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptb3ZlKHZpZGVvRGVjb2RlckZhY3RvcnkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgIC8vIGF1ZGlvIG1peGVy
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGUpOworICAgIGlmICghYXVkaW9Qcm9jZXNzaW5nTW9kdWxl
KSBhdWRpb1Byb2Nlc3NpbmdNb2R1bGUgPSB3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIo
KS5DcmVhdGUoKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUlu
dGVyZmFjZT4gbWVkaWFfZW5naW5lID0KKyAgICAgICAgY3JpY2tldDo6V2ViUnRjTWVkaWFFbmdp
bmVGYWN0b3J5OjpDcmVhdGUoYXVkaW9EZXZpY2VNb2R1bGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRW5jb2RlckZhY3RvcnksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGVjb2Rl
ckZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bW92ZSh2aWRlb0VuY29kZXJGYWN0b3J5KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHZpZGVvRGVjb2RlckZhY3Rv
cnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLCAgLy8gYXVkaW8gbWl4ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlKTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjx3ZWJydGM6OkNhbGxGYWN0b3J5SW50ZXJmYWNlPiBjYWxsX2ZhY3RvcnkgPSB3ZWJy
dGM6OkNyZWF0ZUNhbGxGYWN0b3J5KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpS
dGNFdmVudExvZ0ZhY3RvcnlJbnRlcmZhY2U+IGV2ZW50X2xvZ19mYWN0b3J5ID0KKyAgICAgICAg
d2VicnRjOjpDcmVhdGVSdGNFdmVudExvZ0ZhY3RvcnkoKTsKKyAgICB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uRmFjdG9yeURlcGVuZGVuY2llcyBkZXBlbmRlbmNpZXM7CisgICAgZGVwZW5kZW5jaWVz
Lm5ldHdvcmtfdGhyZWFkID0gX25ldHdvcmtUaHJlYWQuZ2V0KCk7CisgICAgZGVwZW5kZW5jaWVz
Lndvcmtlcl90aHJlYWQgPSBfd29ya2VyVGhyZWFkLmdldCgpOworICAgIGRlcGVuZGVuY2llcy5z
aWduYWxpbmdfdGhyZWFkID0gX3NpZ25hbGluZ1RocmVhZC5nZXQoKTsKKyAgICBkZXBlbmRlbmNp
ZXMubWVkaWFfZW5naW5lID0gc3RkOjptb3ZlKG1lZGlhX2VuZ2luZSk7CisgICAgZGVwZW5kZW5j
aWVzLmNhbGxfZmFjdG9yeSA9IHN0ZDo6bW92ZShjYWxsX2ZhY3RvcnkpOworICAgIGRlcGVuZGVu
Y2llcy5ldmVudF9sb2dfZmFjdG9yeSA9IHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSk7Cisg
ICAgZGVwZW5kZW5jaWVzLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gc3RkOjptb3ZlKG1lZGlh
VHJhbnNwb3J0RmFjdG9yeSk7CisgICAgX25hdGl2ZUZhY3RvcnkgPSB3ZWJydGM6OkNyZWF0ZU1v
ZHVsYXJQZWVyQ29ubmVjdGlvbkZhY3Rvcnkoc3RkOjptb3ZlKGRlcGVuZGVuY2llcykpOwogICAg
IE5TQXNzZXJ0KF9uYXRpdmVGYWN0b3J5LCBAIkZhaWxlZCB0byBpbml0aWFsaXplIFBlZXJDb25u
ZWN0aW9uRmFjdG9yeSEiKTsKICAgfQogICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29u
bmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlCdWlsZGVyLm1tIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9u
L1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIubW0KaW5kZXggYTI2YTYzOWUyOGU0NGYy
MWI4YzI3NTZkNGZkMGMyMTM3ZDI3MTE1Yy4uMGFkYWEzMGU0ZjA4ODk0NmI2ZGY0NzUwNGZjNWI5
MTE4OWZiZWFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFj
dG9yeUJ1aWxkZXIubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9y
eUJ1aWxkZXIubW0KQEAgLTEzLDYgKzEzLDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2Rl
Y3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2lu
dGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3Rvcnku
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5o
IgpAQCAtMjUsNiArMjYsNyBAQCBAaW1wbGVtZW50YXRpb24gUlRDUGVlckNvbm5lY3Rpb25GYWN0
b3J5QnVpbGRlciB7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVjb2RlckZh
Y3Rvcnk+IF9hdWRpb0RlY29kZXJGYWN0b3J5OwogICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpBdWRpb0RldmljZU1vZHVsZT4gX2F1ZGlvRGV2aWNlTW9kdWxlOwogICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+IF9hdWRpb1Byb2Nlc3NpbmdNb2R1bGU7Cisg
IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gX21lZGlhVHJh
bnNwb3J0RmFjdG9yeTsKIH0KIAogKyAoUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlciAq
KWJ1aWxkZXIgewpAQCAtMzgsNyArNDAsOCBAQCAtIChSVENQZWVyQ29ubmVjdGlvbkZhY3Rvcnkg
KiljcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYXRpdmVWaWRlb0VuY29kZXJGYWN0b3J5OnN0ZDo6bW92ZShfdmlkZW9FbmNvZGVyRmFjdG9y
eSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlVmlkZW9EZWNvZGVyRmFjdG9yeTpz
dGQ6Om1vdmUoX3ZpZGVvRGVjb2RlckZhY3RvcnkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXVkaW9EZXZpY2VNb2R1bGU6X2F1ZGlvRGV2aWNlTW9kdWxlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6X2F1ZGlvUHJvY2Vzc2lu
Z01vZHVsZV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdN
b2R1bGU6X2F1ZGlvUHJvY2Vzc2luZ01vZHVsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5OnN0ZDo6bW92ZShfbWVkaWFUcmFuc3BvcnRGYWN0b3J5
KV07CiB9CiAKIC0gKHZvaWQpc2V0VmlkZW9FbmNvZGVyRmFjdG9yeTooc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4pdmlkZW9FbmNvZGVyRmFjdG9yeSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5T3B0aW9ucy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3Bl
ZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeU9wdGlvbnMuaAppbmRleCBhZjMy
N2Y5ODdiMjdiY2E3N2IxNDhkMzBmOTgwZDk2MjY0NmIzZGY3Li40YmVjODY5NWJkYmYxOTc5ZjUw
NzM5ZWY5NWM2NGFkZTEzNTkwYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNv
bm5lY3Rpb25GYWN0b3J5T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVj
dGlvbkZhY3RvcnlPcHRpb25zLmgKQEAgLTMxLDEwICszMSw2IEBAIFJUQ19PQkpDX0VYUE9SVAog
CiBAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgaWdub3JlRXRoZXJuZXROZXR3b3Jr
QWRhcHRlcjsKIAotQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIGVuYWJsZUFlczEy
OFNoYTFfMzJDcnlwdG9DaXBoZXI7Ci0KLUBwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9P
TCBlbmFibGVHY21DcnlwdG9TdWl0ZXM7Ci0KIC0gKGluc3RhbmNldHlwZSlpbml0IE5TX0RFU0lH
TkFURURfSU5JVElBTElaRVI7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnlPcHRpb25zLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25u
ZWN0aW9uRmFjdG9yeU9wdGlvbnMubW0KaW5kZXggMTAzYTEzMDM5MGMwNjJiYzZlYzc2Y2EwYWU3
N2MwZjUyZmVjM2ZlOS4uZjBjYzZhNmM4MWYwYzExZWY2MjJjZTJiM2UyODNlMjkzYmQyMGEzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeU9wdGlvbnMu
bW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeU9wdGlvbnMubW0K
QEAgLTM0LDggKzM0LDYgQEAgQHN5bnRoZXNpemUgaWdub3JlVlBOTmV0d29ya0FkYXB0ZXIgPSBf
aWdub3JlVlBOTmV0d29ya0FkYXB0ZXI7CiBAc3ludGhlc2l6ZSBpZ25vcmVDZWxsdWxhck5ldHdv
cmtBZGFwdGVyID0gX2lnbm9yZUNlbGx1bGFyTmV0d29ya0FkYXB0ZXI7CiBAc3ludGhlc2l6ZSBp
Z25vcmVXaUZpTmV0d29ya0FkYXB0ZXIgPSBfaWdub3JlV2lGaU5ldHdvcmtBZGFwdGVyOwogQHN5
bnRoZXNpemUgaWdub3JlRXRoZXJuZXROZXR3b3JrQWRhcHRlciA9IF9pZ25vcmVFdGhlcm5ldE5l
dHdvcmtBZGFwdGVyOwotQHN5bnRoZXNpemUgZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhl
ciA9IF9lbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOwotQHN5bnRoZXNpemUgZW5hYmxl
R2NtQ3J5cHRvU3VpdGVzID0gX2VuYWJsZUdjbUNyeXB0b1N1aXRlczsKIAogLSAoaW5zdGFuY2V0
eXBlKWluaXQgewogICByZXR1cm4gW3N1cGVyIGluaXRdOwpAQCAtNTIsOSArNTAsNiBAQCAtICh3
ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0aW9ucyluYXRpdmVPcHRp
b25zIHsKICAgc2V0TmV0d29ya0JpdCgmb3B0aW9ucywgcnRjOjpBREFQVEVSX1RZUEVfV0lGSSwg
c2VsZi5pZ25vcmVXaUZpTmV0d29ya0FkYXB0ZXIpOwogICBzZXROZXR3b3JrQml0KCZvcHRpb25z
LCBydGM6OkFEQVBURVJfVFlQRV9FVEhFUk5FVCwgc2VsZi5pZ25vcmVFdGhlcm5ldE5ldHdvcmtB
ZGFwdGVyKTsKIAotICBvcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9hZXMxMjhfc2hhMV8z
Ml9jcnlwdG9fY2lwaGVyID0gc2VsZi5lbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOwot
ICBvcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHNlbGYu
ZW5hYmxlR2NtQ3J5cHRvU3VpdGVzOwotCiAgIHJldHVybiBvcHRpb25zOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9h
cGkvcGVlcmNvbm5lY3Rpb24vUlRDUnRwVHJhbnNjZWl2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENS
dHBUcmFuc2NlaXZlci5oCmluZGV4IDhiOTYyZTQ4ODRiMTQyZjI5YjQ2MjZiYTcwZDQ4NmUyYjJm
OWI2NzUuLjhlZjNmYzFkNDJlN2EzMDE3ODYwOGUzNjQxYWU5OGRlYzdiYTdmOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENSdHBUcmFuc2NlaXZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENSdHBUcmFuc2NlaXZlci5oCkBAIC0yOCw2ICsyOCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uKSB7CiAgKiAgUlRDUGVlckNvbm5lY3Rp
b24uYWRkVHJhbnNjZWl2ZXIuCiAgKiAgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1wYy8j
ZG9tLXJ0Y3J0cHRyYW5zY2VpdmVyaW5pdAogICovCitSVENfT0JKQ19FWFBPUlQKIEBpbnRlcmZh
Y2UgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IDogTlNPYmplY3QKIAogLyoqIERpcmVjdGlvbiBvZiB0
aGUgUlRDUnRwVHJhbnNjZWl2ZXIuIFNlZSBSVENSdHBUcmFuc2NlaXZlci5kaXJlY3Rpb24uICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9Tb3VyY2UrUHJpdmF0ZS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJj
b25uZWN0aW9uL1JUQ1ZpZGVvU291cmNlK1ByaXZhdGUuaAppbmRleCAyNDQxZTBjZGJlNjI0OGFh
ZWJiM2U4OGVlNDA5MjU3ZDQ0ZDBlZmU2Li44MjhhYWQ4N2JkMDc0OThjZTk0MmUyODUxZGQ5NWEw
YmQ5MWFiOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9Tb3VyY2UrUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb1NvdXJjZStQcml2YXRlLmgKQEAgLTEzLDYg
KzEzLDcgQEAKICNpbXBvcnQgIlJUQ01lZGlhU291cmNlK1ByaXZhdGUuaCIKIAogI2luY2x1ZGUg
ImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5o
IgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0xvZ2dpbmcuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2Uv
UlRDTG9nZ2luZy5oCmluZGV4IGJlNjJkYjI1YjU2OWM4NDQzZWUwNTI1Y2IyODVhZmRjNTZjNjFm
ZmMuLmIyMGE0YjRkNDI4YjU4MDYwMGUwNzQ2NGMzNjYwMjQxZWVkMTMzY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2Uv
UlRDTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2Jhc2UvUlRDTG9nZ2luZy5oCkBAIC0xNCwxMCArMTQsMTIgQEAKIAogLy8g
U3Vic2V0IG9mIHJ0Yzo6TG9nZ2luZ1NldmVyaXR5LgogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgUlRDTG9nZ2luZ1NldmVyaXR5KSB7CisgIFJUQ0xvZ2dpbmdTZXZlcml0eVNlbnNpdGl2ZSwK
ICAgUlRDTG9nZ2luZ1NldmVyaXR5VmVyYm9zZSwKICAgUlRDTG9nZ2luZ1NldmVyaXR5SW5mbywK
ICAgUlRDTG9nZ2luZ1NldmVyaXR5V2FybmluZywKICAgUlRDTG9nZ2luZ1NldmVyaXR5RXJyb3Is
CisgIFJUQ0xvZ2dpbmdTZXZlcml0eU5vbmUsCiB9OwogCiAvLyBXcmFwcGVyIGZvciBDKysgUlRD
X0xPRyhzZXYpIG1hY3Jvcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDTG9nZ2luZy5tbSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDTG9nZ2luZy5t
bQppbmRleCA1YzhmOWZiNGY4YmY5NDRmMTgxOGY0NDg0ZGFmY2E1NDMwZjYxYTlhLi4zYWFlNDdh
MjQwY2M0MDBhMmIyZmYwYjBiZjFiZjAzNDU0MzY5Mzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0xvZ2dpbmcu
bW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYmFzZS9SVENMb2dnaW5nLm1tCkBAIC0xNCw2ICsxNCw4IEBACiAKIHJ0Yzo6TG9nZ2luZ1Nl
dmVyaXR5IFJUQ0dldE5hdGl2ZUxvZ2dpbmdTZXZlcml0eShSVENMb2dnaW5nU2V2ZXJpdHkgc2V2
ZXJpdHkpIHsKICAgc3dpdGNoIChzZXZlcml0eSkgeworICAgIGNhc2UgUlRDTG9nZ2luZ1NldmVy
aXR5U2Vuc2l0aXZlOgorICAgICAgcmV0dXJuIHJ0Yzo6TFNfU0VOU0lUSVZFOwogICAgIGNhc2Ug
UlRDTG9nZ2luZ1NldmVyaXR5VmVyYm9zZToKICAgICAgIHJldHVybiBydGM6OkxTX1ZFUkJPU0U7
CiAgICAgY2FzZSBSVENMb2dnaW5nU2V2ZXJpdHlJbmZvOgpAQCAtMjIsNiArMjQsOCBAQCBydGM6
OkxvZ2dpbmdTZXZlcml0eSBSVENHZXROYXRpdmVMb2dnaW5nU2V2ZXJpdHkoUlRDTG9nZ2luZ1Nl
dmVyaXR5IHNldmVyaXR5KSB7CiAgICAgICByZXR1cm4gcnRjOjpMU19XQVJOSU5HOwogICAgIGNh
c2UgUlRDTG9nZ2luZ1NldmVyaXR5RXJyb3I6CiAgICAgICByZXR1cm4gcnRjOjpMU19FUlJPUjsK
KyAgICBjYXNlIFJUQ0xvZ2dpbmdTZXZlcml0eU5vbmU6CisgICAgICByZXR1cm4gcnRjOjpMU19O
T05FOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvY2FwdHVyZXIvUlRDQ2FtZXJhVmlkZW9D
YXB0dXJlci5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy9jYXB0dXJlci9SVENDYW1lcmFWaWRlb0NhcHR1cmVyLm0KaW5kZXgg
MjkwOTQwNWU3ZDhjNTExYzU4MDA0OGMzODFkYmYzZmJhMzJlZGU5Ny4uZGI4MzNiMzk4Y2JmMWNj
MTIxMWQ5OTZkM2IyMWY5NzU3MjI0ODg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9jYXB0dXJlci9SVEND
YW1lcmFWaWRlb0NhcHR1cmVyLm0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9jYXB0dXJlci9SVENDYW1lcmFWaWRlb0Nh
cHR1cmVyLm0KQEAgLTI2LDE4ICsyNiwxOCBAQAogCiBAaW50ZXJmYWNlIFJUQ0NhbWVyYVZpZGVv
Q2FwdHVyZXIgKCk8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0U2FtcGxlQnVmZmVyRGVsZWdhdGU+
CiBAcHJvcGVydHkobm9uYXRvbWljLCByZWFkb25seSkgZGlzcGF0Y2hfcXVldWVfdCBmcmFtZVF1
ZXVlOworQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBBVkNhcHR1cmVEZXZpY2UgKmN1cnJl
bnREZXZpY2U7CitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgaGFzUmV0cmllZE9u
RmF0YWxFcnJvcjsKK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9PTCBpc1J1bm5pbmc7
CisvLyBXaWxsIHRoZSBzZXNzaW9uIGJlIHJ1bm5pbmcgb25jZSBhbGwgYXN5bmNocm9ub3VzIG9w
ZXJhdGlvbnMgaGF2ZSBiZWVuIGNvbXBsZXRlZD8KK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2ln
bikgQk9PTCB3aWxsQmVSdW5uaW5nOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gUlRDQ2FtZXJh
VmlkZW9DYXB0dXJlciB7CiAgIEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dCAqX3ZpZGVvRGF0YU91
dHB1dDsKICAgQVZDYXB0dXJlU2Vzc2lvbiAqX2NhcHR1cmVTZXNzaW9uOwotICBBVkNhcHR1cmVE
ZXZpY2UgKl9jdXJyZW50RGV2aWNlOwogICBGb3VyQ2hhckNvZGUgX3ByZWZlcnJlZE91dHB1dFBp
eGVsRm9ybWF0OwogICBGb3VyQ2hhckNvZGUgX291dHB1dFBpeGVsRm9ybWF0OwotICBCT09MIF9o
YXNSZXRyaWVkT25GYXRhbEVycm9yOwotICBCT09MIF9pc1J1bm5pbmc7Ci0gIC8vIFdpbGwgdGhl
IHNlc3Npb24gYmUgcnVubmluZyBvbmNlIGFsbCBhc3luY2hyb25vdXMgb3BlcmF0aW9ucyBoYXZl
IGJlZW4gY29tcGxldGVkPwotICBCT09MIF93aWxsQmVSdW5uaW5nOwogICBSVENWaWRlb1JvdGF0
aW9uIF9yb3RhdGlvbjsKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAgIFVJRGV2aWNlT3JpZW50YXRp
b24gX29yaWVudGF0aW9uOwpAQCAtNDYsNiArNDYsMTAgQEAgQGltcGxlbWVudGF0aW9uIFJUQ0Nh
bWVyYVZpZGVvQ2FwdHVyZXIgewogCiBAc3ludGhlc2l6ZSBmcmFtZVF1ZXVlID0gX2ZyYW1lUXVl
dWU7CiBAc3ludGhlc2l6ZSBjYXB0dXJlU2Vzc2lvbiA9IF9jYXB0dXJlU2Vzc2lvbjsKK0BzeW50
aGVzaXplIGN1cnJlbnREZXZpY2UgPSBfY3VycmVudERldmljZTsKK0BzeW50aGVzaXplIGhhc1Jl
dHJpZWRPbkZhdGFsRXJyb3IgPSBfaGFzUmV0cmllZE9uRmF0YWxFcnJvcjsKK0BzeW50aGVzaXpl
IGlzUnVubmluZyA9IF9pc1J1bm5pbmc7CitAc3ludGhlc2l6ZSB3aWxsQmVSdW5uaW5nID0gX3dp
bGxCZVJ1bm5pbmc7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0IHsKICAgcmV0dXJuIFtzZWxmIGlu
aXRXaXRoRGVsZWdhdGU6bmlsIGNhcHR1cmVTZXNzaW9uOltbQVZDYXB0dXJlU2Vzc2lvbiBhbGxv
Y10gaW5pdF1dOwpAQCAtMTU3LDI1ICsxNjEsMjYgQEAgLSAodm9pZClzdGFydENhcHR1cmVXaXRo
RGV2aWNlOihBVkNhcHR1cmVEZXZpY2UgKilkZXZpY2UKICAgICAgICAgICAgICAgICAgICAgICBb
W1VJRGV2aWNlIGN1cnJlbnREZXZpY2VdIGJlZ2luR2VuZXJhdGluZ0RldmljZU9yaWVudGF0aW9u
Tm90aWZpY2F0aW9uc107CiAjZW5kaWYKIAotICAgICAgICAgICAgICAgICAgICAgIF9jdXJyZW50
RGV2aWNlID0gZGV2aWNlOworICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudERldmlj
ZSA9IGRldmljZTsKIAogICAgICAgICAgICAgICAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmls
OwotICAgICAgICAgICAgICAgICAgICAgIGlmICghW19jdXJyZW50RGV2aWNlIGxvY2tGb3JDb25m
aWd1cmF0aW9uOiZlcnJvcl0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJUQ0xvZ0Vycm9y
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiRmFpbGVkIHRvIGxvY2sgZGV2aWNlICVA
LiBFcnJvcjogJUAiLCBfY3VycmVudERldmljZSwgZXJyb3IudXNlckluZm8pOworICAgICAgICAg
ICAgICAgICAgICAgIGlmICghW3NlbGYuY3VycmVudERldmljZSBsb2NrRm9yQ29uZmlndXJhdGlv
bjomZXJyb3JdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSVENMb2dFcnJvcihAIkZhaWxl
ZCB0byBsb2NrIGRldmljZSAlQC4gRXJyb3I6ICVAIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuY3VycmVudERldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yLnVzZXJJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBfd2lsbEJlUnVubmluZyA9IE5POworICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi53aWxsQmVSdW5uaW5nID0gTk87CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgIFtzZWxm
IHJlY29uZmlndXJlQ2FwdHVyZVNlc3Npb25JbnB1dF07CiAgICAgICAgICAgICAgICAgICAgICAg
W3NlbGYgdXBkYXRlT3JpZW50YXRpb25dOwogICAgICAgICAgICAgICAgICAgICAgIFtzZWxmIHVw
ZGF0ZURldmljZUNhcHR1cmVGb3JtYXQ6Zm9ybWF0IGZwczpmcHNdOwogICAgICAgICAgICAgICAg
ICAgICAgIFtzZWxmIHVwZGF0ZVZpZGVvRGF0YU91dHB1dFBpeGVsRm9ybWF0OmZvcm1hdF07Ci0g
ICAgICAgICAgICAgICAgICAgICAgW19jYXB0dXJlU2Vzc2lvbiBzdGFydFJ1bm5pbmddOwotICAg
ICAgICAgICAgICAgICAgICAgIFtfY3VycmVudERldmljZSB1bmxvY2tGb3JDb25maWd1cmF0aW9u
XTsKLSAgICAgICAgICAgICAgICAgICAgICBfaXNSdW5uaW5nID0gWUVTOworICAgICAgICAgICAg
ICAgICAgICAgIFtzZWxmLmNhcHR1cmVTZXNzaW9uIHN0YXJ0UnVubmluZ107CisgICAgICAgICAg
ICAgICAgICAgICAgW3NlbGYuY3VycmVudERldmljZSB1bmxvY2tGb3JDb25maWd1cmF0aW9uXTsK
KyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlzUnVubmluZyA9IFlFUzsKICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CiAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAt
MTg4LDE2ICsxOTMsMTYgQEAgLSAodm9pZClzdG9wQ2FwdHVyZVdpdGhDb21wbGV0aW9uSGFuZGxl
cjoobnVsbGFibGUgdm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmQKICAgICAgIGRpc3BhdGNo
QXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hlclR5cGVDYXB0dXJlU2Vzc2lvbgogICAgICAgICAgICAg
ICAgICAgICBibG9jazpeewogICAgICAgICAgICAgICAgICAgICAgIFJUQ0xvZ0luZm8oIlN0b3Ai
KTsKLSAgICAgICAgICAgICAgICAgICAgICBfY3VycmVudERldmljZSA9IG5pbDsKLSAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKEFWQ2FwdHVyZURldmljZUlucHV0ICpvbGRJbnB1dCBpbiBbX2Nh
cHR1cmVTZXNzaW9uLmlucHV0cyBjb3B5XSkgewotICAgICAgICAgICAgICAgICAgICAgICAgW19j
YXB0dXJlU2Vzc2lvbiByZW1vdmVJbnB1dDpvbGRJbnB1dF07CisgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5jdXJyZW50RGV2aWNlID0gbmlsOworICAgICAgICAgICAgICAgICAgICAgIGZvciAo
QVZDYXB0dXJlRGV2aWNlSW5wdXQgKm9sZElucHV0IGluIFtzZWxmLmNhcHR1cmVTZXNzaW9uLmlu
cHV0cyBjb3B5XSkgeworICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY2FwdHVyZVNlc3Np
b24gcmVtb3ZlSW5wdXQ6b2xkSW5wdXRdOwogICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICBbX2NhcHR1cmVTZXNzaW9uIHN0b3BSdW5uaW5nXTsKKyAgICAgICAg
ICAgICAgICAgICAgICBbc2VsZi5jYXB0dXJlU2Vzc2lvbiBzdG9wUnVubmluZ107CiAKICNpZiBU
QVJHRVRfT1NfSVBIT05FCiAgICAgICAgICAgICAgICAgICAgICAgW1tVSURldmljZSBjdXJyZW50
RGV2aWNlXSBlbmRHZW5lcmF0aW5nRGV2aWNlT3JpZW50YXRpb25Ob3RpZmljYXRpb25zXTsKICNl
bmRpZgotICAgICAgICAgICAgICAgICAgICAgIF9pc1J1bm5pbmcgPSBOTzsKKyAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLmlzUnVubmluZyA9IE5POwogICAgICAgICAgICAgICAgICAgICAgIGlm
IChjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0zNDAsNyArMzQ1LDcgQEAg
LSAodm9pZCloYW5kbGVDYXB0dXJlU2Vzc2lvbkRpZFN0YXJ0UnVubmluZzooTlNOb3RpZmljYXRp
b24gKilub3RpZmljYXRpb24gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nr
Ol57CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzdWNjZXNzZnVs
bHkgcmVzdGFydGVkIGFmdGVyIGFuIHVua25vd24gZXJyb3IsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBhbGxvdyBmdXR1cmUgcmV0cmllcyBvbiBmYXRhbCBlcnJvcnMuCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaGFzUmV0cmllZE9uRmF0YWxFcnJvciA9
IE5POworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYXNSZXRyaWVkT25G
YXRhbEVycm9yID0gTk87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV07CiB9CiAK
QEAgLTM1MiwxMCArMzU3LDEwIEBAIC0gKHZvaWQpaGFuZGxlRmF0YWxFcnJvciB7CiAgIFtSVENE
aXNwYXRjaGVyCiAgICAgICBkaXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3BhdGNoZXJUeXBlQ2Fw
dHVyZVNlc3Npb24KICAgICAgICAgICAgICAgICAgICAgYmxvY2s6XnsKLSAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIV9oYXNSZXRyaWVkT25GYXRhbEVycm9yKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFzZWxmLmhhc1JldHJpZWRPbkZhdGFsRXJyb3IpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIFJUQ0xvZ1dhcm5pbmcoQCJBdHRlbXB0aW5nIHRvIHJlY292ZXIgZnJvbSBmYXRh
bCBjYXB0dXJlIGVycm9yLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYgaGFuZGxl
Tm9uRmF0YWxFcnJvcl07Ci0gICAgICAgICAgICAgICAgICAgICAgICBfaGFzUmV0cmllZE9uRmF0
YWxFcnJvciA9IFlFUzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFzUmV0cmllZE9u
RmF0YWxFcnJvciA9IFlFUzsKICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgUlRDTG9nRXJyb3IoQCJQcmV2aW91cyBmYXRhbCBlcnJvciByZWNv
dmVyeSBmYWlsZWQuIik7CiAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzY2LDggKzM3MSw4
IEBAIC0gKHZvaWQpaGFuZGxlTm9uRmF0YWxFcnJvciB7CiAgIFtSVENEaXNwYXRjaGVyIGRpc3Bh
dGNoQXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hlclR5cGVDYXB0dXJlU2Vzc2lvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSVENMb2coQCJSZXN0YXJ0aW5nIGNhcHR1cmUgc2Vzc2lvbiBhZnRlciBlcnJvci4i
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNSdW5uaW5nKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfY2FwdHVyZVNlc3Npb24gc3RhcnRS
dW5uaW5nXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmlzUnVu
bmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5jYXB0dXJl
U2Vzc2lvbiBzdGFydFJ1bm5pbmddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dOwogfQpAQCAtMzc5LDkgKzM4NCw5
IEBAIC0gKHZvaWQpaGFuZGxlTm9uRmF0YWxFcnJvciB7CiAtICh2b2lkKWhhbmRsZUFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbiB7CiAgIFtS
VENEaXNwYXRjaGVyIGRpc3BhdGNoQXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hlclR5cGVDYXB0dXJl
U2Vzc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2lzUnVubmluZyAmJiAhX2NhcHR1cmVTZXNz
aW9uLmlzUnVubmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNl
bGYuaXNSdW5uaW5nICYmICFzZWxmLmNhcHR1cmVTZXNzaW9uLmlzUnVubmluZykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVENMb2coQCJSZXN0YXJ0aW5nIGNhcHR1cmUg
c2Vzc2lvbiBvbiBhY3RpdmUuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtfY2FwdHVyZVNlc3Npb24gc3RhcnRSdW5uaW5nXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW3NlbGYuY2FwdHVyZVNlc3Npb24gc3RhcnRSdW5uaW5nXTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvY2FwdHVyZXIvUlRDRmlsZVZpZGVvQ2FwdHVyZXIu
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvY2FwdHVyZXIvUlRDRmlsZVZpZGVvQ2FwdHVyZXIubQppbmRleCAwMDE0M2U5MDlm
ZDBhYTAyZmU3NzFmODBkNzkwZTk2Nzc4NDg3OTlhLi4yMDdhMjFkOGMwZDNmNjkxNWQyMjhhZjRj
YzIxZDJiZDgwNTAwYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL2NhcHR1cmVyL1JUQ0ZpbGVWaWRlb0Nh
cHR1cmVyLm0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvY29tcG9uZW50cy9jYXB0dXJlci9SVENGaWxlVmlkZW9DYXB0dXJlci5tCkBAIC0y
NywxNSArMjcsMjEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUlRDRmlsZVZpZGVvQ2Fw
dHVyZXJTdGF0dXMpIHsKICAgUlRDRmlsZVZpZGVvQ2FwdHVyZXJTdGF0dXNTdG9wcGVkCiB9Owog
CitAaW50ZXJmYWNlIFJUQ0ZpbGVWaWRlb0NhcHR1cmVyICgpCitAcHJvcGVydHkobm9uYXRvbWlj
LCBhc3NpZ24pIENNVGltZSBsYXN0UHJlc2VudGF0aW9uVGltZTsKK0Bwcm9wZXJ0eShub25hdG9t
aWMsIHN0cm9uZykgTlNVUkwgKmZpbGVVUkw7CitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBSVENG
aWxlVmlkZW9DYXB0dXJlciB7CiAgIEFWQXNzZXRSZWFkZXIgKl9yZWFkZXI7CiAgIEFWQXNzZXRS
ZWFkZXJUcmFja091dHB1dCAqX291dFRyYWNrOwogICBSVENGaWxlVmlkZW9DYXB0dXJlclN0YXR1
cyBfc3RhdHVzOwotICBDTVRpbWUgX2xhc3RQcmVzZW50YXRpb25UaW1lOwogICBkaXNwYXRjaF9x
dWV1ZV90IF9mcmFtZVF1ZXVlOwotICBOU1VSTCAqX2ZpbGVVUkw7CiB9CiAKK0BzeW50aGVzaXpl
IGxhc3RQcmVzZW50YXRpb25UaW1lID0gX2xhc3RQcmVzZW50YXRpb25UaW1lOworQHN5bnRoZXNp
emUgZmlsZVVSTCA9IF9maWxlVVJMOworCiAtICh2b2lkKXN0YXJ0Q2FwdHVyaW5nRnJvbUZpbGVO
YW1lZDooTlNTdHJpbmcgKiluYW1lT2ZGaWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b25FcnJvcjooUlRDRmlsZVZpZGVvQ2FwdHVyZXJFcnJvckJsb2NrKWVycm9yQmxvY2sgewogICBp
ZiAoX3N0YXR1cyA9PSBSVENGaWxlVmlkZW9DYXB0dXJlclN0YXR1c1N0YXJ0ZWQpIHsKQEAgLTYy
LDkgKzY4LDkgQEAgLSAodm9pZClzdGFydENhcHR1cmluZ0Zyb21GaWxlTmFtZWQ6KE5TU3RyaW5n
ICopbmFtZU9mRmlsZQogICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9sYXN0UHJlc2VudGF0
aW9uVGltZSA9IENNVGltZU1ha2UoMCwgMCk7CisgICAgc2VsZi5sYXN0UHJlc2VudGF0aW9uVGlt
ZSA9IENNVGltZU1ha2UoMCwgMCk7CiAKLSAgICBfZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6cGF0aEZvckZpbGVdOworICAgIHNlbGYuZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6cGF0aEZvckZpbGVdOwogICAgIFtzZWxmIHNldHVwUmVhZGVyT25FcnJvcjplcnJvckJs
b2NrXTsKICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRlcmVyL21ldGFsL1JUQ01UTFJl
bmRlcmVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy9yZW5kZXJlci9tZXRhbC9SVENNVExSZW5kZXJlci5tbQppbmRleCA4
ZjM3MmJjZGJkODE1MmZiZDI1Y2NkNGJhM2ViZWNmMTFmMWFkZTVhLi5mYjQ3OGQyNTMzMWU5Y2Nl
YzE0OTQwMTJmNjAyMDk2NzdmOTFmNjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRlcmVyL21ldGFs
L1JUQ01UTFJlbmRlcmVyLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvcmVuZGVyZXIvbWV0YWwvUlRDTVRMUmVuZGVy
ZXIubW0KQEAgLTE3Niw3ICsxNzYsOCBAQCAtIChCT09MKXNldHVwVGV4dHVyZXNGb3JGcmFtZToo
bm9ubnVsbCBSVENWaWRlb0ZyYW1lICopZnJhbWUgewogICBSVENWaWRlb1JvdGF0aW9uIHJvdGF0
aW9uOwogICBOU1ZhbHVlICpyb3RhdGlvbk92ZXJyaWRlID0gc2VsZi5yb3RhdGlvbk92ZXJyaWRl
OwogICBpZiAocm90YXRpb25PdmVycmlkZSkgewotI2lmIGRlZmluZWQoX19JUEhPTkVfMTFfMCkg
JiYgKF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gX19JUEhPTkVfMTFfMCkKKyNp
ZiBkZWZpbmVkKF9fSVBIT05FXzExXzApICYmIGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9N
QVhfQUxMT1dFRCkgJiYgXAorICAgIChfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49
IF9fSVBIT05FXzExXzApCiAgICAgaWYgKEBhdmFpbGFibGUoaU9TIDExLCAqKSkgewogICAgICAg
W3JvdGF0aW9uT3ZlcnJpZGUgZ2V0VmFsdWU6JnJvdGF0aW9uIHNpemU6c2l6ZW9mKHJvdGF0aW9u
KV07CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRlcmVyL21ldGFsL1JUQ01UTFZp
ZGVvVmlldy5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy9yZW5kZXJlci9tZXRhbC9SVENNVExWaWRlb1ZpZXcubQppbmRleCA3
YWQxZDc5ZDNlM2Y2ZDYzYmU0NmRmZTA4NjExNjE4MTFhOWFhNTQzLi5mODU3NWMwY2ZlZDUyZmM0
YTU1YjhmNjIxNWZlOGIzY2I1ODY1NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRlcmVyL21ldGFs
L1JUQ01UTFZpZGVvVmlldy5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvcmVuZGVyZXIvbWV0YWwvUlRDTVRMVmlkZW9W
aWV3Lm0KQEAgLTE0MSw2ICsxNDEsMTAgQEAgLSAodm9pZClkcmF3SW5NVEtWaWV3Oihub25udWxs
IE1US1ZpZXcgKil2aWV3IHsKICAgICByZXR1cm47CiAgIH0KIAorICBpZiAoQ0dSZWN0SXNFbXB0
eSh2aWV3LmJvdW5kcykpIHsKKyAgICByZXR1cm47CisgIH0KKwogICBSVENNVExSZW5kZXJlciAq
cmVuZGVyZXI7CiAgIGlmIChbdmlkZW9GcmFtZS5idWZmZXIgaXNLaW5kT2ZDbGFzczpbUlRDQ1ZQ
aXhlbEJ1ZmZlciBjbGFzc11dKSB7CiAgICAgUlRDQ1ZQaXhlbEJ1ZmZlciAqYnVmZmVyID0gKFJU
Q0NWUGl4ZWxCdWZmZXIqKXZpZGVvRnJhbWUuYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRl
b19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRl
b0RlY29kZXJIMjY0Lm1tCmluZGV4IDYzMTcwMTMxODBkYWEzNzEyYWQ3MjIyNWUwZDZmOGE2MDU5
YzUxNzcuLjFjMThmYWIxN2RmOTY0NTYzZWVjZDhlMmU0MmVkZDBmMDgwZWU0ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5tbQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3Zp
ZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQubW0KQEAgLTY3LDEyICs2NywyMyBAQCB2b2lk
IGRlY29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayh2b2lkICpkZWNvZGVyUmVmLAogLy8gRGVjb2Rl
ci4KIEBpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0RlY29kZXJIMjY0IHsKICAgQ01WaWRlb0Zvcm1h
dERlc2NyaXB0aW9uUmVmIF92aWRlb0Zvcm1hdDsKKyAgQ01NZW1vcnlQb29sUmVmIF9tZW1vcnlQ
b29sOwogICBWVERlY29tcHJlc3Npb25TZXNzaW9uUmVmIF9kZWNvbXByZXNzaW9uU2Vzc2lvbjsK
ICAgUlRDVmlkZW9EZWNvZGVyQ2FsbGJhY2sgX2NhbGxiYWNrOwogICBPU1N0YXR1cyBfZXJyb3I7
CiB9CiAKKy0gKGluc3RhbmNldHlwZSlpbml0IHsKKyAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAg
aWYgKHNlbGYpIHsKKyAgICBfbWVtb3J5UG9vbCA9IENNTWVtb3J5UG9vbENyZWF0ZShuaWwpOwor
ICB9CisgIHJldHVybiBzZWxmOworfQorCiAtICh2b2lkKWRlYWxsb2MgeworICBDTU1lbW9yeVBv
b2xJbnZhbGlkYXRlKF9tZW1vcnlQb29sKTsKKyAgQ0ZSZWxlYXNlKF9tZW1vcnlQb29sKTsKICAg
W3NlbGYgZGVzdHJveURlY29tcHJlc3Npb25TZXNzaW9uXTsKICAgW3NlbGYgc2V0VmlkZW9Gb3Jt
YXQ6bnVsbHB0cl07CiB9CkBAIC0xMjUsNyArMTM2LDggQEAgLSAoTlNJbnRlZ2VyKWRlY29kZToo
UlRDRW5jb2RlZEltYWdlICopaW5wdXRJbWFnZQogICBpZiAoIXdlYnJ0Yzo6SDI2NEFubmV4QkJ1
ZmZlclRvQ01TYW1wbGVCdWZmZXIoKHVpbnQ4X3QgKilpbnB1dEltYWdlLmJ1ZmZlci5ieXRlcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0SW1h
Z2UuYnVmZmVyLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF92aWRlb0Zvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZzYW1wbGVCdWZmZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmc2FtcGxlQnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21lbW9yeVBvb2wpKSB7CiAgICAgcmV0
dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKICAgfQogICBSVENfRENIRUNLKHNhbXBsZUJ1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL25hbHVfcmV3cml0ZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25l
bnRzL3ZpZGVvX2NvZGVjL25hbHVfcmV3cml0ZXIuY2MKaW5kZXggYTg0OWQzZjA1M2UzOWQyMWUz
OTAxZWQ0NTU5YTc1MDg2MmQ0NmNmYS4uNTVlZDFjMmI0Y2EzNzAwZTA4MDRhZGUyY2JiZWEwZTgw
N2IxZTVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fY29kZWMvbmFsdV9yZXdyaXRlci5jYwpAQCAtMTYwLDcgKzE2MCw4IEBA
IGJvb2wgSDI2NENNU2FtcGxlQnVmZmVyVG9Bbm5leEJCdWZmZXIoCiBib29sIEgyNjRBbm5leEJC
dWZmZXJUb0NNU2FtcGxlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGFubmV4Yl9idWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhbm5leGJfYnVmZmVyX3Np
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENNVmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvblJlZiB2aWRlb19mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENNU2FtcGxlQnVmZmVyUmVmKiBvdXRfc2FtcGxlX2J1ZmZlcikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiogb3V0X3Nh
bXBsZV9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENNTWVt
b3J5UG9vbFJlZiBtZW1vcnlfcG9vbCkgewogICBSVENfRENIRUNLKGFubmV4Yl9idWZmZXIpOwog
ICBSVENfRENIRUNLKG91dF9zYW1wbGVfYnVmZmVyKTsKICAgUlRDX0RDSEVDSyh2aWRlb19mb3Jt
YXQpOwpAQCAtMTg1LDExICsxODYsMTEgQEAgYm9vbCBIMjY0QW5uZXhCQnVmZmVyVG9DTVNhbXBs
ZUJ1ZmZlcihjb25zdCB1aW50OF90KiBhbm5leGJfYnVmZmVyLAogICB9CiAKICAgLy8gQWxsb2Nh
dGUgbWVtb3J5IGFzIGEgYmxvY2sgYnVmZmVyLgotICAvLyBUT0RPKHRrY2hpbik6IGZpZ3VyZSBv
dXQgaG93IHRvIHVzZSBhIHBvb2wuCiAgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tfYnVmZmVyID0g
bnVsbHB0cjsKKyAgQ0ZBbGxvY2F0b3JSZWYgYmxvY2tfYWxsb2NhdG9yID0gQ01NZW1vcnlQb29s
R2V0QWxsb2NhdG9yKG1lbW9yeV9wb29sKTsKICAgT1NTdGF0dXMgc3RhdHVzID0gQ01CbG9ja0J1
ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jaygKLSAgICAgIG51bGxwdHIsIG51bGxwdHIsIHJlYWRl
ci5CeXRlc1JlbWFpbmluZygpLCBudWxscHRyLCBudWxscHRyLCAwLAotICAgICAgcmVhZGVyLkJ5
dGVzUmVtYWluaW5nKCksIGtDTUJsb2NrQnVmZmVyQXNzdXJlTWVtb3J5Tm93RmxhZywKKyAgICAg
IGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIHJlYWRlci5CeXRlc1JlbWFpbmluZygpLCBi
bG9ja19hbGxvY2F0b3IsCisgICAgICBudWxscHRyLCAwLCByZWFkZXIuQnl0ZXNSZW1haW5pbmco
KSwga0NNQmxvY2tCdWZmZXJBc3N1cmVNZW1vcnlOb3dGbGFnLAogICAgICAgJmJsb2NrX2J1ZmZl
cik7CiAgIGlmIChzdGF0dXMgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikgewogICAgIFJUQ19MT0co
TFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGJsb2NrIGJ1ZmZlci4iOwpAQCAtMTk5LDgg
KzIwMCw5IEBAIGJvb2wgSDI2NEFubmV4QkJ1ZmZlclRvQ01TYW1wbGVCdWZmZXIoY29uc3QgdWlu
dDhfdCogYW5uZXhiX2J1ZmZlciwKICAgLy8gTWFrZSBzdXJlIGJsb2NrIGJ1ZmZlciBpcyBjb250
aWd1b3VzLgogICBDTUJsb2NrQnVmZmVyUmVmIGNvbnRpZ3VvdXNfYnVmZmVyID0gbnVsbHB0cjsK
ICAgaWYgKCFDTUJsb2NrQnVmZmVySXNSYW5nZUNvbnRpZ3VvdXMoYmxvY2tfYnVmZmVyLCAwLCAw
KSkgewotICAgIHN0YXR1cyA9IENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKAotICAgICAg
ICBudWxscHRyLCBibG9ja19idWZmZXIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDAsIDAsICZjb250
aWd1b3VzX2J1ZmZlcik7CisgICAgc3RhdHVzID0gQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3Vv
dXMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmxvY2tfYnVmZmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX2FsbG9jYXRvciwgbnVsbHB0ciwgMCwgMCwg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGlndW91
c19idWZmZXIpOwogICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKICAgICAgIFJUQ19MT0coTFNf
RVJST1IpIDw8ICJGYWlsZWQgdG8gZmxhdHRlbiBub24tY29udGlndW91cyBibG9jayBidWZmZXI6
ICIKICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN0YXR1czsKQEAgLTIzNiw5ICsyMzgsOSBA
QCBib29sIEgyNjRBbm5leEJCdWZmZXJUb0NNU2FtcGxlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGFu
bmV4Yl9idWZmZXIsCiAgIH0KIAogICAvLyBDcmVhdGUgc2FtcGxlIGJ1ZmZlci4KLSAgc3RhdHVz
ID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUobnVsbHB0ciwgY29udGlndW91c19idWZmZXIsIHRydWUs
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIHZpZGVv
X2Zvcm1hdCwgMSwgMCwgbnVsbHB0ciwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwgb3V0X3NhbXBsZV9idWZmZXIpOworICBzdGF0dXMgPSBDTVNhbXBsZUJ1ZmZl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb250aWd1b3VzX2J1ZmZlciwgdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgdmlkZW9fZm9y
bWF0LCAxLCAwLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBu
dWxscHRyLCBvdXRfc2FtcGxlX2J1ZmZlcik7CiAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKICAg
ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBzYW1wbGUgYnVmZmVyLiI7
CiAgICAgQ0ZSZWxlYXNlKGNvbnRpZ3VvdXNfYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlk
ZW9fY29kZWMvbmFsdV9yZXdyaXRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVy
LmgKaW5kZXggY2Q1YTUxMDc5YWI1YjIyNTg3N2QwMGNlMjM1YzY3ZDBiMWViMGU5OC4uYTBjMWFh
OTBhZjU3NTlkZTM5YjVkMDZjMjIxZDI4NDI5NDM4OTg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRl
b19jb2RlYy9uYWx1X3Jld3JpdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jld3Jp
dGVyLmgKQEAgLTQ0LDcgKzQ0LDggQEAgYm9vbCBIMjY0Q01TYW1wbGVCdWZmZXJUb0FubmV4QkJ1
ZmZlcigKIGJvb2wgSDI2NEFubmV4QkJ1ZmZlclRvQ01TYW1wbGVCdWZmZXIoY29uc3QgdWludDhf
dCogYW5uZXhiX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGFubmV4Yl9idWZmZXJfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIHZpZGVvX2Zvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYqIG91dF9z
YW1wbGVfYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ01T
YW1wbGVCdWZmZXJSZWYqIG91dF9zYW1wbGVfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDTU1lbW9yeVBvb2xSZWYgbWVtb3J5X3Bvb2wpOwogCiAvLyBSZXR1
cm5zIGEgdmlkZW8gZm9ybWF0IGRlc2NyaXB0aW9uIGNyZWF0ZWQgZnJvbSB0aGUgc3BzL3BwcyBp
bmZvcm1hdGlvbiBpbgogLy8gdGhlIEFubmV4IEIgYnVmZmVyLiBJZiB0aGVyZSBpcyBubyBzdWNo
IGluZm9ybWF0aW9uLCBudWxscHRyIGlzIHJldHVybmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRl
b19mcmFtZV9idWZmZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19mcmFtZV9idWZm
ZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oCmluZGV4IGFiZTlkZmNhOTNiMDRiZjU1MmVjMDMwMmI4MDc1
OTdkZjI2MWVkYjEuLjQzMmEzODI1NzQ2NGIyNmNiNTMyMzRjOGEzN2FmNjdkNThlZjgwYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ0NWUGl4ZWxCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVmZmVyLmgKQEAgLTE3LDcgKzE3
LDYgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogLyoqIFJUQ1ZpZGVvRnJhbWVCdWZmZXIg
Y29udGFpbmluZyBhIENWUGl4ZWxCdWZmZXJSZWYgKi8KIFJUQ19PQkpDX0VYUE9SVAotX19hdHRy
aWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0NWUGl4ZWxCdWZmZXIiKSkpCiBAaW50
ZXJmYWNlIFJUQ0NWUGl4ZWxCdWZmZXIgOiBOU09iamVjdCA8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4K
IAogQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxC
dWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1JUQ0NhbWVyYVByZXZpZXdWaWV3Lm0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1JUQ0NhbWVy
YVByZXZpZXdWaWV3Lm0KaW5kZXggMmFkZDQ2Y2Y3MWY2YTQ3ZGIwNWY5ODNjNDY5ZTNmNDAxYjBl
MzZmZi4uYWRjNjJjYzMwYWY0OTdiZGMxNjY0NGEzMTgxZTU5YTQ1YzhkZDM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvaGVs
cGVycy9SVENDYW1lcmFQcmV2aWV3Vmlldy5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2hlbHBlcnMvUlRDQ2FtZXJhUHJldmlld1ZpZXcu
bQpAQCAtNDcsMTkgKzQ3LDIyIEBAIC0gKHZvaWQpc2V0Q2FwdHVyZVNlc3Npb246KEFWQ2FwdHVy
ZVNlc3Npb24gKiljYXB0dXJlU2Vzc2lvbiB7CiAgIGlmIChfY2FwdHVyZVNlc3Npb24gPT0gY2Fw
dHVyZVNlc3Npb24pIHsKICAgICByZXR1cm47CiAgIH0KLSAgW1JUQ0Rpc3BhdGNoZXIgZGlzcGF0
Y2hBc3luY09uVHlwZTpSVENEaXNwYXRjaGVyVHlwZU1haW4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBibG9jazpeewotICAgIF9jYXB0dXJlU2Vzc2lvbiA9IGNhcHR1cmVTZXNzaW9u
OwotICAgIEFWQ2FwdHVyZVZpZGVvUHJldmlld0xheWVyICpwcmV2aWV3TGF5ZXIgPSBbc2VsZiBw
cmV2aWV3TGF5ZXJdOwotICAgIFtSVENEaXNwYXRjaGVyIGRpc3BhdGNoQXN5bmNPblR5cGU6UlRD
RGlzcGF0Y2hlclR5cGVDYXB0dXJlU2Vzc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmxvY2s6XnsKLSAgICAgIHByZXZpZXdMYXllci5zZXNzaW9uID0gY2FwdHVyZVNlc3Np
b247Ci0gICAgICBbUlRDRGlzcGF0Y2hlciBkaXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3BhdGNo
ZXJUeXBlTWFpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57Ci0gICAg
ICAgIFtzZWxmIHNldENvcnJlY3RWaWRlb09yaWVudGF0aW9uXTsKLSAgICAgIH1dOwotICAgIH1d
OwotICB9XTsKKyAgW1JUQ0Rpc3BhdGNoZXIKKyAgICAgIGRpc3BhdGNoQXN5bmNPblR5cGU6UlRD
RGlzcGF0Y2hlclR5cGVNYWluCisgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57CisgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5jYXB0dXJlU2Vzc2lvbiA9IGNhcHR1cmVTZXNzaW9uOworICAg
ICAgICAgICAgICAgICAgICAgIEFWQ2FwdHVyZVZpZGVvUHJldmlld0xheWVyICpwcmV2aWV3TGF5
ZXIgPSBbc2VsZiBwcmV2aWV3TGF5ZXJdOworICAgICAgICAgICAgICAgICAgICAgIFtSVENEaXNw
YXRjaGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoQXN5bmNPblR5cGU6UlRD
RGlzcGF0Y2hlclR5cGVDYXB0dXJlU2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJsb2NrOl57CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmV2aWV3TGF5ZXIuc2Vzc2lvbiA9IGNhcHR1cmVTZXNzaW9uOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JUQ0Rpc3BhdGNoZXIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEFzeW5jT25UeXBl
OlJUQ0Rpc3BhdGNoZXJUeXBlTWFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2s6XnsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYgc2V0Q29ycmVj
dFZpZGVvT3JpZW50YXRpb25dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfV07CisgICAgICAgICAgICAgICAgICAgIH1dOwogfQogCiAtICh2b2lkKWxh
eW91dFN1YnZpZXdzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2hlbHBlcnMvVUlEZXZpY2UrUlRDRGV2aWNlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1VJ
RGV2aWNlK1JUQ0RldmljZS5oCmluZGV4IGViMzllYTljYzRkNzY3MzQxYTNmN2FhMzk2Yjk4ZTcw
NmZiMTNlMDQuLjczNjIzNzU4MmZlODI4YmQ3MzZlNWM4YzBiZGRlYWU0ZThiZWJhMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2hlbHBlcnMvVUlEZXZpY2UrUlRDRGV2aWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvaGVscGVycy9VSURldmljZStSVENEZXZpY2Uu
aApAQCAtMzQsNiArMzQsOSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBSVENEZXZpY2VU
eXBlKSB7CiAgIFJUQ0RldmljZVR5cGVJUGhvbmU4LAogICBSVENEZXZpY2VUeXBlSVBob25lOFBs
dXMsCiAgIFJUQ0RldmljZVR5cGVJUGhvbmVYLAorICBSVENEZXZpY2VUeXBlSVBob25lWFMsCisg
IFJUQ0RldmljZVR5cGVJUGhvbmVYU01heCwKKyAgUlRDRGV2aWNlVHlwZUlQaG9uZVhSLAogICBS
VENEZXZpY2VUeXBlSVBvZFRvdWNoMUcsCiAgIFJUQ0RldmljZVR5cGVJUG9kVG91Y2gyRywKICAg
UlRDRGV2aWNlVHlwZUlQb2RUb3VjaDNHLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvaGVscGVycy9VSURldmljZStSVENEZXZp
Y2UubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9oZWxwZXJzL1VJRGV2aWNlK1JUQ0RldmljZS5tbQppbmRleCA5NmFkYjlhZjc4MGUxM2YwOTg4
MmVhZDdkODQ4YWVlN2M2MTZjMDkwLi42ZjY4ZTlmN2EwZGE0NmIwNGU1YTk3OTUwOTg3NGQ2ZDJh
M2FhMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1VJRGV2aWNlK1JUQ0RldmljZS5tbQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1VJRGV2
aWNlK1JUQ0RldmljZS5tbQpAQCAtMTcsODEgKzE3LDg1IEBAIEBpbXBsZW1lbnRhdGlvbiBVSURl
dmljZSAoUlRDRGV2aWNlKQogCiArIChSVENEZXZpY2VUeXBlKWRldmljZVR5cGUgewogICBOU0Rp
Y3Rpb25hcnkgKm1hY2hpbmVOYW1lVG9UeXBlID0gQHsKLSAgICBAImlQaG9uZTEsMSI6IEAoUlRD
RGV2aWNlVHlwZUlQaG9uZTFHKSwKLSAgICBAImlQaG9uZTEsMiI6IEAoUlRDRGV2aWNlVHlwZUlQ
aG9uZTNHKSwKLSAgICBAImlQaG9uZTIsMSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTNHUyksCi0g
ICAgQCJpUGhvbmUzLDEiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU0KSwKLSAgICBAImlQaG9uZTMs
MiI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTQpLAotICAgIEAiaVBob25lMywzIjogQChSVENEZXZp
Y2VUeXBlSVBob25lNFZlcml6b24pLAotICAgIEAiaVBob25lNCwxIjogQChSVENEZXZpY2VUeXBl
SVBob25lNFMpLAotICAgIEAiaVBob25lNSwxIjogQChSVENEZXZpY2VUeXBlSVBob25lNUdTTSks
Ci0gICAgQCJpUGhvbmU1LDIiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1R1NNX0NETUEpLAotICAg
IEAiaVBob25lNSwzIjogQChSVENEZXZpY2VUeXBlSVBob25lNUNHU00pLAotICAgIEAiaVBob25l
NSw0IjogQChSVENEZXZpY2VUeXBlSVBob25lNUNHU01fQ0RNQSksCi0gICAgQCJpUGhvbmU2LDEi
OiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1U0dTTSksCi0gICAgQCJpUGhvbmU2LDIiOiBAKFJUQ0Rl
dmljZVR5cGVJUGhvbmU1U0dTTV9DRE1BKSwKLSAgICBAImlQaG9uZTcsMSI6IEAoUlRDRGV2aWNl
VHlwZUlQaG9uZTZQbHVzKSwKLSAgICBAImlQaG9uZTcsMiI6IEAoUlRDRGV2aWNlVHlwZUlQaG9u
ZTYpLAotICAgIEAiaVBob25lOCwxIjogQChSVENEZXZpY2VUeXBlSVBob25lNlMpLAotICAgIEAi
aVBob25lOCwyIjogQChSVENEZXZpY2VUeXBlSVBob25lNlNQbHVzKSwKLSAgICBAImlQaG9uZTgs
NCI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVNFKSwKLSAgICBAImlQaG9uZTksMSI6IEAoUlRDRGV2
aWNlVHlwZUlQaG9uZTcpLAotICAgIEAiaVBob25lOSwyIjogQChSVENEZXZpY2VUeXBlSVBob25l
N1BsdXMpLAotICAgIEAiaVBob25lOSwzIjogQChSVENEZXZpY2VUeXBlSVBob25lNyksCi0gICAg
QCJpUGhvbmU5LDQiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU3UGx1cyksCi0gICAgQCJpUGhvbmUx
MCwxIjogQChSVENEZXZpY2VUeXBlSVBob25lOCksCi0gICAgQCJpUGhvbmUxMCwyIjogQChSVENE
ZXZpY2VUeXBlSVBob25lOFBsdXMpLAotICAgIEAiaVBob25lMTAsMyI6IEAoUlRDRGV2aWNlVHlw
ZUlQaG9uZVgpLAotICAgIEAiaVBob25lMTAsNCI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTgpLAot
ICAgIEAiaVBob25lMTAsNSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZThQbHVzKSwKLSAgICBAImlQ
aG9uZTEwLDYiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmVYKSwKLSAgICBAImlQb2QxLDEiOiBAKFJU
Q0RldmljZVR5cGVJUG9kVG91Y2gxRyksCi0gICAgQCJpUG9kMiwxIjogQChSVENEZXZpY2VUeXBl
SVBvZFRvdWNoMkcpLAotICAgIEAiaVBvZDMsMSI6IEAoUlRDRGV2aWNlVHlwZUlQb2RUb3VjaDNH
KSwKLSAgICBAImlQb2Q0LDEiOiBAKFJUQ0RldmljZVR5cGVJUG9kVG91Y2g0RyksCi0gICAgQCJp
UG9kNSwxIjogQChSVENEZXZpY2VUeXBlSVBvZFRvdWNoNUcpLAotICAgIEAiaVBvZDcsMSI6IEAo
UlRDRGV2aWNlVHlwZUlQb2RUb3VjaDZHKSwKLSAgICBAImlQYWQxLDEiOiBAKFJUQ0RldmljZVR5
cGVJUGFkKSwKLSAgICBAImlQYWQyLDEiOiBAKFJUQ0RldmljZVR5cGVJUGFkMldpZmkpLAotICAg
IEAiaVBhZDIsMiI6IEAoUlRDRGV2aWNlVHlwZUlQYWQyR1NNKSwKLSAgICBAImlQYWQyLDMiOiBA
KFJUQ0RldmljZVR5cGVJUGFkMkNETUEpLAotICAgIEAiaVBhZDIsNCI6IEAoUlRDRGV2aWNlVHlw
ZUlQYWQyV2lmaTIpLAotICAgIEAiaVBhZDIsNSI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pV2lm
aSksCi0gICAgQCJpUGFkMiw2IjogQChSVENEZXZpY2VUeXBlSVBhZE1pbmlHU00pLAotICAgIEAi
aVBhZDIsNyI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pR1NNX0NETUEpLAotICAgIEAiaVBhZDMs
MSI6IEAoUlRDRGV2aWNlVHlwZUlQYWQzV2lmaSksCi0gICAgQCJpUGFkMywyIjogQChSVENEZXZp
Y2VUeXBlSVBhZDNHU01fQ0RNQSksCi0gICAgQCJpUGFkMywzIjogQChSVENEZXZpY2VUeXBlSVBh
ZDNHU00pLAotICAgIEAiaVBhZDMsNCI6IEAoUlRDRGV2aWNlVHlwZUlQYWQ0V2lmaSksCi0gICAg
QCJpUGFkMyw1IjogQChSVENEZXZpY2VUeXBlSVBhZDRHU00pLAotICAgIEAiaVBhZDMsNiI6IEAo
UlRDRGV2aWNlVHlwZUlQYWQ0R1NNX0NETUEpLAotICAgIEAiaVBhZDQsMSI6IEAoUlRDRGV2aWNl
VHlwZUlQYWRBaXJXaWZpKSwKLSAgICBAImlQYWQ0LDIiOiBAKFJUQ0RldmljZVR5cGVJUGFkQWly
Q2VsbHVsYXIpLAotICAgIEAiaVBhZDQsMyI6IEAoUlRDRGV2aWNlVHlwZUlQYWRBaXJXaWZpQ2Vs
bHVsYXIpLAotICAgIEAiaVBhZDQsNCI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMkdXaWZpKSwK
LSAgICBAImlQYWQ0LDUiOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaTJHQ2VsbHVsYXIpLAotICAg
IEAiaVBhZDQsNiI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMkdXaWZpQ2VsbHVsYXIpLAotICAg
IEAiaVBhZDQsNyI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMyksCi0gICAgQCJpUGFkNCw4Ijog
QChSVENEZXZpY2VUeXBlSVBhZE1pbmkzKSwKLSAgICBAImlQYWQ0LDkiOiBAKFJUQ0RldmljZVR5
cGVJUGFkTWluaTMpLAotICAgIEAiaVBhZDUsMSI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pNCks
Ci0gICAgQCJpUGFkNSwyIjogQChSVENEZXZpY2VUeXBlSVBhZE1pbmk0KSwKLSAgICBAImlQYWQ1
LDMiOiBAKFJUQ0RldmljZVR5cGVJUGFkQWlyMiksCi0gICAgQCJpUGFkNSw0IjogQChSVENEZXZp
Y2VUeXBlSVBhZEFpcjIpLAotICAgIEAiaVBhZDYsMyI6IEAoUlRDRGV2aWNlVHlwZUlQYWRQcm85
SW5jaCksCi0gICAgQCJpUGFkNiw0IjogQChSVENEZXZpY2VUeXBlSVBhZFBybzlJbmNoKSwKLSAg
ICBAImlQYWQ2LDciOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTJJbmNoKSwKLSAgICBAImlQYWQ2
LDgiOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTJJbmNoKSwKLSAgICBAImlQYWQ2LDExIjogQChS
VENEZXZpY2VUeXBlSVBhZDUpLAotICAgIEAiaVBhZDYsMTIiOiBAKFJUQ0RldmljZVR5cGVJUGFk
NSksCi0gICAgQCJpUGFkNywxIjogQChSVENEZXZpY2VUeXBlSVBhZFBybzEySW5jaDIpLAotICAg
IEAiaVBhZDcsMiI6IEAoUlRDRGV2aWNlVHlwZUlQYWRQcm8xMkluY2gyKSwKLSAgICBAImlQYWQ3
LDMiOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTBJbmNoKSwKLSAgICBAImlQYWQ3LDQiOiBAKFJU
Q0RldmljZVR5cGVJUGFkUHJvMTBJbmNoKSwKLSAgICBAImlQYWQ3LDUiOiBAKFJUQ0RldmljZVR5
cGVJUGFkNiksCi0gICAgQCJpUGFkNyw2IjogQChSVENEZXZpY2VUeXBlSVBhZDYpLAotICAgIEAi
aTM4NiI6IEAoUlRDRGV2aWNlVHlwZVNpbXVsYXRvcmkzODYpLAotICAgIEAieDg2XzY0IjogQChS
VENEZXZpY2VUeXBlU2ltdWxhdG9yeDg2XzY0KSwKKyAgICBAImlQaG9uZTEsMSIgOiBAKFJUQ0Rl
dmljZVR5cGVJUGhvbmUxRyksCisgICAgQCJpUGhvbmUxLDIiIDogQChSVENEZXZpY2VUeXBlSVBo
b25lM0cpLAorICAgIEAiaVBob25lMiwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTNHUyksCisg
ICAgQCJpUGhvbmUzLDEiIDogQChSVENEZXZpY2VUeXBlSVBob25lNCksCisgICAgQCJpUGhvbmUz
LDIiIDogQChSVENEZXZpY2VUeXBlSVBob25lNCksCisgICAgQCJpUGhvbmUzLDMiIDogQChSVENE
ZXZpY2VUeXBlSVBob25lNFZlcml6b24pLAorICAgIEAiaVBob25lNCwxIiA6IEAoUlRDRGV2aWNl
VHlwZUlQaG9uZTRTKSwKKyAgICBAImlQaG9uZTUsMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1
R1NNKSwKKyAgICBAImlQaG9uZTUsMiIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1R1NNX0NETUEp
LAorICAgIEAiaVBob25lNSwzIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTVDR1NNKSwKKyAgICBA
ImlQaG9uZTUsNCIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1Q0dTTV9DRE1BKSwKKyAgICBAImlQ
aG9uZTYsMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1U0dTTSksCisgICAgQCJpUGhvbmU2LDIi
IDogQChSVENEZXZpY2VUeXBlSVBob25lNVNHU01fQ0RNQSksCisgICAgQCJpUGhvbmU3LDEiIDog
QChSVENEZXZpY2VUeXBlSVBob25lNlBsdXMpLAorICAgIEAiaVBob25lNywyIiA6IEAoUlRDRGV2
aWNlVHlwZUlQaG9uZTYpLAorICAgIEAiaVBob25lOCwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9u
ZTZTKSwKKyAgICBAImlQaG9uZTgsMiIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU2U1BsdXMpLAor
ICAgIEAiaVBob25lOCw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVNFKSwKKyAgICBAImlQaG9u
ZTksMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU3KSwKKyAgICBAImlQaG9uZTksMiIgOiBAKFJU
Q0RldmljZVR5cGVJUGhvbmU3UGx1cyksCisgICAgQCJpUGhvbmU5LDMiIDogQChSVENEZXZpY2VU
eXBlSVBob25lNyksCisgICAgQCJpUGhvbmU5LDQiIDogQChSVENEZXZpY2VUeXBlSVBob25lN1Bs
dXMpLAorICAgIEAiaVBob25lMTAsMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU4KSwKKyAgICBA
ImlQaG9uZTEwLDIiIDogQChSVENEZXZpY2VUeXBlSVBob25lOFBsdXMpLAorICAgIEAiaVBob25l
MTAsMyIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmVYKSwKKyAgICBAImlQaG9uZTEwLDQiIDogQChS
VENEZXZpY2VUeXBlSVBob25lOCksCisgICAgQCJpUGhvbmUxMCw1IiA6IEAoUlRDRGV2aWNlVHlw
ZUlQaG9uZThQbHVzKSwKKyAgICBAImlQaG9uZTEwLDYiIDogQChSVENEZXZpY2VUeXBlSVBob25l
WCksCisgICAgQCJpUGhvbmUxMSwyIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVhTKSwKKyAgICBA
ImlQaG9uZTExLDQiIDogQChSVENEZXZpY2VUeXBlSVBob25lWFNNYXgpLAorICAgIEAiaVBob25l
MTEsNiIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmVYU01heCksCisgICAgQCJpUGhvbmUxMSw4IiA6
IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVhSKSwKKyAgICBAImlQb2QxLDEiIDogQChSVENEZXZpY2VU
eXBlSVBvZFRvdWNoMUcpLAorICAgIEAiaVBvZDIsMSIgOiBAKFJUQ0RldmljZVR5cGVJUG9kVG91
Y2gyRyksCisgICAgQCJpUG9kMywxIiA6IEAoUlRDRGV2aWNlVHlwZUlQb2RUb3VjaDNHKSwKKyAg
ICBAImlQb2Q0LDEiIDogQChSVENEZXZpY2VUeXBlSVBvZFRvdWNoNEcpLAorICAgIEAiaVBvZDUs
MSIgOiBAKFJUQ0RldmljZVR5cGVJUG9kVG91Y2g1RyksCisgICAgQCJpUG9kNywxIiA6IEAoUlRD
RGV2aWNlVHlwZUlQb2RUb3VjaDZHKSwKKyAgICBAImlQYWQxLDEiIDogQChSVENEZXZpY2VUeXBl
SVBhZCksCisgICAgQCJpUGFkMiwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQyV2lmaSksCisgICAg
QCJpUGFkMiwyIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQyR1NNKSwKKyAgICBAImlQYWQyLDMiIDog
QChSVENEZXZpY2VUeXBlSVBhZDJDRE1BKSwKKyAgICBAImlQYWQyLDQiIDogQChSVENEZXZpY2VU
eXBlSVBhZDJXaWZpMiksCisgICAgQCJpUGFkMiw1IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5p
V2lmaSksCisgICAgQCJpUGFkMiw2IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pR1NNKSwKKyAg
ICBAImlQYWQyLDciIDogQChSVENEZXZpY2VUeXBlSVBhZE1pbmlHU01fQ0RNQSksCisgICAgQCJp
UGFkMywxIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQzV2lmaSksCisgICAgQCJpUGFkMywyIiA6IEAo
UlRDRGV2aWNlVHlwZUlQYWQzR1NNX0NETUEpLAorICAgIEAiaVBhZDMsMyIgOiBAKFJUQ0Rldmlj
ZVR5cGVJUGFkM0dTTSksCisgICAgQCJpUGFkMyw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQ0V2lm
aSksCisgICAgQCJpUGFkMyw1IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQ0R1NNKSwKKyAgICBAImlQ
YWQzLDYiIDogQChSVENEZXZpY2VUeXBlSVBhZDRHU01fQ0RNQSksCisgICAgQCJpUGFkNCwxIiA6
IEAoUlRDRGV2aWNlVHlwZUlQYWRBaXJXaWZpKSwKKyAgICBAImlQYWQ0LDIiIDogQChSVENEZXZp
Y2VUeXBlSVBhZEFpckNlbGx1bGFyKSwKKyAgICBAImlQYWQ0LDMiIDogQChSVENEZXZpY2VUeXBl
SVBhZEFpcldpZmlDZWxsdWxhciksCisgICAgQCJpUGFkNCw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQ
YWRNaW5pMkdXaWZpKSwKKyAgICBAImlQYWQ0LDUiIDogQChSVENEZXZpY2VUeXBlSVBhZE1pbmky
R0NlbGx1bGFyKSwKKyAgICBAImlQYWQ0LDYiIDogQChSVENEZXZpY2VUeXBlSVBhZE1pbmkyR1dp
ZmlDZWxsdWxhciksCisgICAgQCJpUGFkNCw3IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMyks
CisgICAgQCJpUGFkNCw4IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMyksCisgICAgQCJpUGFk
NCw5IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMyksCisgICAgQCJpUGFkNSwxIiA6IEAoUlRD
RGV2aWNlVHlwZUlQYWRNaW5pNCksCisgICAgQCJpUGFkNSwyIiA6IEAoUlRDRGV2aWNlVHlwZUlQ
YWRNaW5pNCksCisgICAgQCJpUGFkNSwzIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRBaXIyKSwKKyAg
ICBAImlQYWQ1LDQiIDogQChSVENEZXZpY2VUeXBlSVBhZEFpcjIpLAorICAgIEAiaVBhZDYsMyIg
OiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvOUluY2gpLAorICAgIEAiaVBhZDYsNCIgOiBAKFJUQ0Rl
dmljZVR5cGVJUGFkUHJvOUluY2gpLAorICAgIEAiaVBhZDYsNyIgOiBAKFJUQ0RldmljZVR5cGVJ
UGFkUHJvMTJJbmNoKSwKKyAgICBAImlQYWQ2LDgiIDogQChSVENEZXZpY2VUeXBlSVBhZFBybzEy
SW5jaCksCisgICAgQCJpUGFkNiwxMSIgOiBAKFJUQ0RldmljZVR5cGVJUGFkNSksCisgICAgQCJp
UGFkNiwxMiIgOiBAKFJUQ0RldmljZVR5cGVJUGFkNSksCisgICAgQCJpUGFkNywxIiA6IEAoUlRD
RGV2aWNlVHlwZUlQYWRQcm8xMkluY2gyKSwKKyAgICBAImlQYWQ3LDIiIDogQChSVENEZXZpY2VU
eXBlSVBhZFBybzEySW5jaDIpLAorICAgIEAiaVBhZDcsMyIgOiBAKFJUQ0RldmljZVR5cGVJUGFk
UHJvMTBJbmNoKSwKKyAgICBAImlQYWQ3LDQiIDogQChSVENEZXZpY2VUeXBlSVBhZFBybzEwSW5j
aCksCisgICAgQCJpUGFkNyw1IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQ2KSwKKyAgICBAImlQYWQ3
LDYiIDogQChSVENEZXZpY2VUeXBlSVBhZDYpLAorICAgIEAiaTM4NiIgOiBAKFJUQ0RldmljZVR5
cGVTaW11bGF0b3JpMzg2KSwKKyAgICBAIng4Nl82NCIgOiBAKFJUQ0RldmljZVR5cGVTaW11bGF0
b3J4ODZfNjQpLAogICB9OwogCiAgIFJUQ0RldmljZVR5cGUgZGV2aWNlVHlwZSA9IFJUQ0Rldmlj
ZVR5cGVVbmtub3duOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL2FwaS92aWRlb19jYXB0dXJlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL2FwaS92
aWRlb19jYXB0dXJlci5oCmluZGV4IDViNmYzZjkzOWJhYTdjNjYyMzM1ZDc5MWU2ODgwNjkzMzg5
YTFkNTEuLmQ2ZjM5NmI0NzAxY2FjNTcwOGIwZjY3NmRhNDY2MzY2NTRmMzZhNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25h
dGl2ZS9hcGkvdmlkZW9fY2FwdHVyZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvYXBpL3ZpZGVvX2NhcHR1cmVyLmgKQEAg
LTE1LDYgKzE1LDcgQEAKIAogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
dGhyZWFkLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNf
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9y
eS5tbQppbmRleCBjNGM4NWNjNmFiOTAzNTM1ZTVlZjAxZTdjZjVhODE1MzFkMTcwZTZmLi5hZTQ1
MDMzYTU3MGYxYzE5ODlkYjMxYzU0ZTFmYmVmMTllZmM0YTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29i
amNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVy
X2ZhY3RvcnkubW0KQEAgLTg2LDI4ICs4NiwyNiBAQCBjbGFzcyBPYmpDVmlkZW9FbmNvZGVyIDog
cHVibGljIFZpZGVvRW5jb2RlciB7CiAgICAgICAgICAgICAgICAgIGZyYW1lVHlwZXM6cnRjRnJh
bWVUeXBlc107CiAgIH0KIAotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90
IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgeyByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09L
OyB9Ci0KICAgaW50MzJfdCBTZXRSYXRlcyh1aW50MzJfdCBiaXRyYXRlLCB1aW50MzJfdCBmcmFt
ZXJhdGUpIHsKICAgICByZXR1cm4gW2VuY29kZXJfIHNldEJpdHJhdGU6Yml0cmF0ZSBmcmFtZXJh
dGU6ZnJhbWVyYXRlXTsKICAgfQogCiAgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3Qg
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYWxsb2NhdGlvbiwgdWludDMyX3QgZnJhbWVyYXRlKSB7
Ci0gICAgUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqYml0cmF0ZUFsbG9jYXRpb24gPQotICAg
ICAgW1tSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGFsbG9jXSBpbml0V2l0aE5hdGl2ZVZpZGVv
Qml0cmF0ZUFsbG9jYXRpb246JmFsbG9jYXRpb25dOwotICAgIHJldHVybiBbZW5jb2Rlcl8gc2V0
UmF0ZUFsbG9jYXRpb246IGJpdHJhdGVBbGxvY2F0aW9uIGZyYW1lcmF0ZTpmcmFtZXJhdGVdOwor
ICAgIGF1dG8gKnJ0Y0FsbG9jYXRpb24gPSBbW1JUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYWxs
b2NdIGluaXRXaXRoTmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjomYWxsb2NhdGlvbl07Cisg
ICAgcmV0dXJuIFtlbmNvZGVyXyBzZXRSYXRlQWxsb2NhdGlvbjogcnRjQWxsb2NhdGlvbiBmcmFt
ZXJhdGU6ZnJhbWVyYXRlXTsKICAgfQogCi0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisgIFZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gR2V0RW5j
b2RlckluZm8oKSBjb25zdCB7CisgICAgRW5jb2RlckluZm8gaW5mbzsKKyAgICBpbmZvLnN1cHBv
cnRzX25hdGl2ZV9oYW5kbGUgPSB0cnVlOworICAgIGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSA9
IGltcGxlbWVudGF0aW9uX25hbWVfOwogCi0gIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdz
IEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IHsKICAgICBSVENWaWRlb0VuY29kZXJRcFRocmVz
aG9sZHMgKnFwX3RocmVzaG9sZHMgPSBbZW5jb2Rlcl8gc2NhbGluZ1NldHRpbmdzXTsKLSAgICBy
ZXR1cm4gcXBfdGhyZXNob2xkcyA/IFNjYWxpbmdTZXR0aW5ncyhxcF90aHJlc2hvbGRzLmxvdywg
cXBfdGhyZXNob2xkcy5oaWdoKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBTY2FsaW5n
U2V0dGluZ3M6OmtPZmY7CisgICAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0gcXBfdGhyZXNob2xk
cyA/IFNjYWxpbmdTZXR0aW5ncyhxcF90aHJlc2hvbGRzLmxvdywgcXBfdGhyZXNob2xkcy5oaWdo
KSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjYWxpbmdT
ZXR0aW5nczo6a09mZjsKKyAgICByZXR1cm4gaW5mbzsKICAgfQogCi0gIGNvbnN0IGNoYXIgKklt
cGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGltcGxlbWVudGF0aW9uX25hbWVfLmNf
c3RyKCk7IH0KLQogIHByaXZhdGU6CiAgIGlkPFJUQ1ZpZGVvRW5jb2Rlcj4gZW5jb2Rlcl87CiAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGltcGxlbWVudGF0aW9uX25hbWVfOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3Rz
L1JUQ0F1ZGlvRGV2aWNlTW9kdWxlX3hjdGVzdC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENBdWRpb0RldmljZU1vZHVs
ZV94Y3Rlc3QubW0KaW5kZXggNjg5ZGU1ODFkMDRlYWY1OGFlNDczY2NkZmU1MjE4M2IwMjU2NDM3
ZS4uNTVkNDhjMjhiYTcxZTkzZjAzZjlkZWI3ODczZjU0MTEzYzBjMWVhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRl
c3RzL1JUQ0F1ZGlvRGV2aWNlTW9kdWxlX3hjdGVzdC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQXVkaW9EZXZp
Y2VNb2R1bGVfeGN0ZXN0Lm1tCkBAIC0xMjgsMTcgKzEyOCwyMCBAQCBzdGF0aWMgY29uc3QgTlNV
SW50ZWdlciBrRnVsbER1cGxleFRpbWVJblNlYyA9IDEwOwogc3RhdGljIGNvbnN0IE5TVUludGVn
ZXIga051bUlnbm9yZUZpcnN0Q2FsbGJhY2tzID0gNTA7CiAKIEBpbnRlcmZhY2UgUlRDQXVkaW9E
ZXZpY2VNb2R1bGVUZXN0cyA6IFhDVGVzdENhc2UgewotCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlPiBhdWRpb0RldmljZU1vZHVsZTsKLSAgd2VicnRjOjpB
dWRpb1BhcmFtZXRlcnMgcGxheW91dFBhcmFtZXRlcnM7Ci0gIHdlYnJ0Yzo6QXVkaW9QYXJhbWV0
ZXJzIHJlY29yZFBhcmFtZXRlcnM7CiAgIE1vY2tBdWRpb1RyYW5zcG9ydCBtb2NrOwogfQogCitA
cHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIHdlYnJ0Yzo6QXVkaW9QYXJhbWV0ZXJzIHBsYXlv
dXRQYXJhbWV0ZXJzOworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSB3ZWJydGM6OkF1ZGlv
UGFyYW1ldGVycyByZWNvcmRQYXJhbWV0ZXJzOworCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBS
VENBdWRpb0RldmljZU1vZHVsZVRlc3RzCiAKK0BzeW50aGVzaXplIHBsYXlvdXRQYXJhbWV0ZXJz
OworQHN5bnRoZXNpemUgcmVjb3JkUGFyYW1ldGVyczsKKwogLSAodm9pZClzZXRVcCB7CiAgIFtz
dXBlciBzZXRVcF07CiAgIGF1ZGlvRGV2aWNlTW9kdWxlID0gd2VicnRjOjpDcmVhdGVBdWRpb0Rl
dmljZU1vZHVsZSgpOwpAQCAtMjU0LDEwICsyNTcsMTAgQEAgLSAodm9pZCl0ZXN0U3RhcnRQbGF5
b3V0T25Ud29JbnN0YW5jZXMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCAqZWxhcHNlZF90aW1lX21zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCAqbnRwX3RpbWVfbXMpIHsKICAgICBuU2FtcGxlc091dCA9IG5T
YW1wbGVzOwotICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCBwbGF5b3V0UGFyYW1ldGVycy5m
cmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpOworICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCBz
ZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBtc19idWZmZXIoKSk7CiAgICAgWENU
QXNzZXJ0RXF1YWwobkJ5dGVzUGVyU2FtcGxlLCBrQnl0ZXNQZXJTYW1wbGUpOwotICAgIFhDVEFz
c2VydEVxdWFsKG5DaGFubmVscywgcGxheW91dFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7Ci0gICAg
WENUQXNzZXJ0RXF1YWwoKGludCkgc2FtcGxlc1BlclNlYywgcGxheW91dFBhcmFtZXRlcnMuc2Ft
cGxlX3JhdGUoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxzLCBzZWxmLnBsYXlvdXRQ
YXJhbWV0ZXJzLmNoYW5uZWxzKCkpOworICAgIFhDVEFzc2VydEVxdWFsKChpbnQpc2FtcGxlc1Bl
clNlYywgc2VsZi5wbGF5b3V0UGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKICAgICBYQ1RBc3Nl
cnROb3RFcXVhbCgodm9pZCopTlVMTCwgYXVkaW9TYW1wbGVzKTsKIAogICAgIHJldHVybiAwOwpA
QCAtMjkxLDEwICsyOTQsMTAgQEAgLSAodm9pZCl0ZXN0U3RhcnRQbGF5b3V0T25Ud29JbnN0YW5j
ZXMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgKmVs
YXBzZWRfdGltZV9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90ICpudHBfdGltZV9tcykgewogICAgIG5TYW1wbGVzT3V0ID0gblNhbXBsZXM7Ci0gICAg
WENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHBsYXlvdXRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBt
c19idWZmZXIoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHNlbGYucGxheW91dFBh
cmFtZXRlcnMuZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKTsKICAgICBYQ1RBc3NlcnRFcXVhbChu
Qnl0ZXNQZXJTYW1wbGUsIGtCeXRlc1BlclNhbXBsZSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwobkNo
YW5uZWxzLCBwbGF5b3V0UGFyYW1ldGVycy5jaGFubmVscygpKTsKLSAgICBYQ1RBc3NlcnRFcXVh
bCgoaW50KSBzYW1wbGVzUGVyU2VjLCBwbGF5b3V0UGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsK
KyAgICBYQ1RBc3NlcnRFcXVhbChuQ2hhbm5lbHMsIHNlbGYucGxheW91dFBhcmFtZXRlcnMuY2hh
bm5lbHMoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoKGludClzYW1wbGVzUGVyU2VjLCBzZWxmLnBs
YXlvdXRQYXJhbWV0ZXJzLnNhbXBsZV9yYXRlKCkpOwogICAgIFhDVEFzc2VydE5vdEVxdWFsKCh2
b2lkKilOVUxMLCBhdWRpb1NhbXBsZXMpOwogICAgIGlmICgrK251bV9jYWxsYmFja3MgPT0ga051
bUNhbGxiYWNrcykgewogICAgICAgW3BsYXlvdXRFeHBlY3RhdGlvbiBmdWxmaWxsXTsKQEAgLTMz
MCwxMCArMzMzLDEwIEBAIC0gKHZvaWQpdGVzdFN0YXJ0UGxheW91dFZlcmlmeUNhbGxiYWNrcyB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90ICplbGFwc2Vk
X3RpbWVfbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
ICpudHBfdGltZV9tcykgewogICAgIG5TYW1wbGVzT3V0ID0gblNhbXBsZXM7Ci0gICAgWENUQXNz
ZXJ0RXF1YWwoblNhbXBsZXMsIHBsYXlvdXRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBtc19idWZm
ZXIoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHNlbGYucGxheW91dFBhcmFtZXRl
cnMuZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKTsKICAgICBYQ1RBc3NlcnRFcXVhbChuQnl0ZXNQ
ZXJTYW1wbGUsIGtCeXRlc1BlclNhbXBsZSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxz
LCBwbGF5b3V0UGFyYW1ldGVycy5jaGFubmVscygpKTsKLSAgICBYQ1RBc3NlcnRFcXVhbCgoaW50
KSBzYW1wbGVzUGVyU2VjLCBwbGF5b3V0UGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKKyAgICBY
Q1RBc3NlcnRFcXVhbChuQ2hhbm5lbHMsIHNlbGYucGxheW91dFBhcmFtZXRlcnMuY2hhbm5lbHMo
KSk7CisgICAgWENUQXNzZXJ0RXF1YWwoKGludClzYW1wbGVzUGVyU2VjLCBzZWxmLnBsYXlvdXRQ
YXJhbWV0ZXJzLnNhbXBsZV9yYXRlKCkpOwogICAgIFhDVEFzc2VydE5vdEVxdWFsKCh2b2lkKilO
VUxMLCBhdWRpb1NhbXBsZXMpOwogICAgIGlmICgrK251bV9jYWxsYmFja3MgPT0ga051bUNhbGxi
YWNrcykgewogICAgICAgW3BsYXlvdXRFeHBlY3RhdGlvbiBmdWxmaWxsXTsKQEAgLTM2NiwxMCAr
MzY5LDEwIEBAIC0gKHZvaWQpdGVzdFN0YXJ0UmVjb3JkaW5nVmVyaWZ5Q2FsbGJhY2tzIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wga2V5UHJlc3Nl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90JiBuZXdN
aWNMZXZlbCkgewogICAgIFhDVEFzc2VydE5vdEVxdWFsKCh2b2lkKilOVUxMLCBhdWRpb1NhbXBs
ZXMpOwotICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCByZWNvcmRQYXJhbWV0ZXJzLmZyYW1l
c19wZXJfMTBtc19idWZmZXIoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHNlbGYu
cmVjb3JkUGFyYW1ldGVycy5mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpOwogICAgIFhDVEFzc2Vy
dEVxdWFsKG5CeXRlc1BlclNhbXBsZSwga0J5dGVzUGVyU2FtcGxlKTsKLSAgICBYQ1RBc3NlcnRF
cXVhbChuQ2hhbm5lbHMsIHJlY29yZFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7Ci0gICAgWENUQXNz
ZXJ0RXF1YWwoKGludCkgc2FtcGxlc1BlclNlYywgcmVjb3JkUGFyYW1ldGVycy5zYW1wbGVfcmF0
ZSgpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbChuQ2hhbm5lbHMsIHNlbGYucmVjb3JkUGFyYW1ldGVy
cy5jaGFubmVscygpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbCgoaW50KXNhbXBsZXNQZXJTZWMsIHNl
bGYucmVjb3JkUGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKICAgICBYQ1RBc3NlcnRFcXVhbCgw
LCBjbG9ja0RyaWZ0KTsKICAgICBYQ1RBc3NlcnRFcXVhbCgwdSwgY3VycmVudE1pY0xldmVsKTsK
ICAgICBYQ1RBc3NlcnRGYWxzZShrZXlQcmVzc2VkKTsKQEAgLTQwNSwxMCArNDA4LDEwIEBAIC0g
KHZvaWQpdGVzdFN0YXJ0UGxheW91dEFuZFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcyB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90ICplbGFwc2VkX3RpbWVf
bXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90ICpudHBf
dGltZV9tcykgewogICAgIG5TYW1wbGVzT3V0ID0gblNhbXBsZXM7Ci0gICAgWENUQXNzZXJ0RXF1
YWwoblNhbXBsZXMsIHBsYXlvdXRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBtc19idWZmZXIoKSk7
CisgICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHNlbGYucGxheW91dFBhcmFtZXRlcnMuZnJh
bWVzX3Blcl8xMG1zX2J1ZmZlcigpKTsKICAgICBYQ1RBc3NlcnRFcXVhbChuQnl0ZXNQZXJTYW1w
bGUsIGtCeXRlc1BlclNhbXBsZSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxzLCBwbGF5
b3V0UGFyYW1ldGVycy5jaGFubmVscygpKTsKLSAgICBYQ1RBc3NlcnRFcXVhbCgoaW50KSBzYW1w
bGVzUGVyU2VjLCBwbGF5b3V0UGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKKyAgICBYQ1RBc3Nl
cnRFcXVhbChuQ2hhbm5lbHMsIHNlbGYucGxheW91dFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7Cisg
ICAgWENUQXNzZXJ0RXF1YWwoKGludClzYW1wbGVzUGVyU2VjLCBzZWxmLnBsYXlvdXRQYXJhbWV0
ZXJzLnNhbXBsZV9yYXRlKCkpOwogICAgIFhDVEFzc2VydE5vdEVxdWFsKCh2b2lkKilOVUxMLCBh
dWRpb1NhbXBsZXMpOwogICAgIGlmIChjYWxsYmFja0NvdW50KysgPj0ga051bUNhbGxiYWNrcykg
ewogICAgICAgW3BsYXlvdXRFeHBlY3RhdGlvbiBmdWxmaWxsXTsKQEAgLTQyOCwxMCArNDMxLDEw
IEBAIC0gKHZvaWQpdGVzdFN0YXJ0UGxheW91dEFuZFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcyB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIGtleVBy
ZXNzZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCYg
bmV3TWljTGV2ZWwpIHsKICAgICBYQ1RBc3NlcnROb3RFcXVhbCgodm9pZCopTlVMTCwgYXVkaW9T
YW1wbGVzKTsKLSAgICBYQ1RBc3NlcnRFcXVhbChuU2FtcGxlcywgcmVjb3JkUGFyYW1ldGVycy5m
cmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpOworICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCBz
ZWxmLnJlY29yZFBhcmFtZXRlcnMuZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKTsKICAgICBYQ1RB
c3NlcnRFcXVhbChuQnl0ZXNQZXJTYW1wbGUsIGtCeXRlc1BlclNhbXBsZSk7Ci0gICAgWENUQXNz
ZXJ0RXF1YWwobkNoYW5uZWxzLCByZWNvcmRQYXJhbWV0ZXJzLmNoYW5uZWxzKCkpOwotICAgIFhD
VEFzc2VydEVxdWFsKChpbnQpIHNhbXBsZXNQZXJTZWMsIHJlY29yZFBhcmFtZXRlcnMuc2FtcGxl
X3JhdGUoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxzLCBzZWxmLnJlY29yZFBhcmFt
ZXRlcnMuY2hhbm5lbHMoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoKGludClzYW1wbGVzUGVyU2Vj
LCBzZWxmLnJlY29yZFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7CiAgICAgWENUQXNzZXJ0RXF1
YWwoMCwgY2xvY2tEcmlmdCk7CiAgICAgWENUQXNzZXJ0RXF1YWwoMHUsIGN1cnJlbnRNaWNMZXZl
bCk7CiAgICAgWENUQXNzZXJ0RmFsc2Uoa2V5UHJlc3NlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRD
Q2FsbGJhY2tMb2dnZXJfeGN0ZXN0Lm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQ2FsbGJhY2tMb2dnZXJfeGN0ZXN0Lm0K
aW5kZXggNGEwYTJiM2U2ZDE1YmQ3MWQ5NmE1OTIyMjJhY2Q1YTM0NzRjMmE5ZS4uY2VhYTc2MmYx
ZjhhMWYwOTdkNTFjNTVlMDkyNTJkOTJlZDk5YjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0NhbGxi
YWNrTG9nZ2VyX3hjdGVzdC5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENDYWxsYmFja0xvZ2dlcl94Y3Rlc3QubQpA
QCAtNDksNiArNDksMjMgQEAgLSAodm9pZCl0ZXN0Q2FsbGJhY2tHZXRzQ2FsbGVkRm9yQXBwcm9w
cmlhdGVMZXZlbCB7CiAgIFtzZWxmIHdhaXRGb3JFeHBlY3RhdGlvbnM6QFsgY2FsbGJhY2tFeHBl
Y3RhdGlvbiBdIHRpbWVvdXQ6MTAuMF07CiB9CiAKKy0gKHZvaWQpdGVzdENhbGxiYWNrV2l0aFNl
dmVyaXR5R2V0c0NhbGxlZEZvckFwcHJvcHJpYXRlTGV2ZWwgeworICBzZWxmLmxvZ2dlci5zZXZl
cml0eSA9IFJUQ0xvZ2dpbmdTZXZlcml0eVdhcm5pbmc7CisKKyAgWENUZXN0RXhwZWN0YXRpb24g
KmNhbGxiYWNrRXhwZWN0YXRpb24gPSBbc2VsZiBleHBlY3RhdGlvbldpdGhEZXNjcmlwdGlvbjpA
ImNhbGxiYWNrV2FybmluZyJdOworCisgIFtzZWxmLmxvZ2dlcgorICAgICAgc3RhcnRXaXRoTWVz
c2FnZUFuZFNldmVyaXR5SGFuZGxlcjpeKE5TU3RyaW5nICptZXNzYWdlLCBSVENMb2dnaW5nU2V2
ZXJpdHkgc2V2ZXJpdHkpIHsKKyAgICAgICAgWENUQXNzZXJ0VHJ1ZShbbWVzc2FnZSBoYXNTdWZm
aXg6QCJIb3JyaWJsZSBlcnJvclxuIl0pOworICAgICAgICBYQ1RBc3NlcnRFcXVhbChzZXZlcml0
eSwgUlRDTG9nZ2luZ1NldmVyaXR5RXJyb3IpOworICAgICAgICBbY2FsbGJhY2tFeHBlY3RhdGlv
biBmdWxmaWxsXTsKKyAgICAgIH1dOworCisgIFJUQ0xvZ0Vycm9yKCJIb3JyaWJsZSBlcnJvciIp
OworCisgIFtzZWxmIHdhaXRGb3JFeHBlY3RhdGlvbnM6QFsgY2FsbGJhY2tFeHBlY3RhdGlvbiBd
IHRpbWVvdXQ6MTAuMF07Cit9CisKIC0gKHZvaWQpdGVzdENhbGxiYWNrRG9lc05vdEdldENhbGxl
ZEZvck90aGVyTGV2ZWxzIHsKICAgc2VsZi5sb2dnZXIuc2V2ZXJpdHkgPSBSVENMb2dnaW5nU2V2
ZXJpdHlFcnJvcjsKIApAQCAtNjYsMTIgKzgzLDc2IEBAIC0gKHZvaWQpdGVzdENhbGxiYWNrRG9l
c05vdEdldENhbGxlZEZvck90aGVyTGV2ZWxzIHsKICAgW3NlbGYgd2FpdEZvckV4cGVjdGF0aW9u
czpAWyBjYWxsYmFja0V4cGVjdGF0aW9uIF0gdGltZW91dDoxMC4wXTsKIH0KIAorLSAodm9pZCl0
ZXN0Q2FsbGJhY2tXaXRoU2V2ZXJpdHlEb2VzTm90R2V0Q2FsbGVkRm9yT3RoZXJMZXZlbHMgewor
ICBzZWxmLmxvZ2dlci5zZXZlcml0eSA9IFJUQ0xvZ2dpbmdTZXZlcml0eUVycm9yOworCisgIFhD
VGVzdEV4cGVjdGF0aW9uICpjYWxsYmFja0V4cGVjdGF0aW9uID0gW3NlbGYgZXhwZWN0YXRpb25X
aXRoRGVzY3JpcHRpb246QCJjYWxsYmFja0Vycm9yIl07CisKKyAgW3NlbGYubG9nZ2VyCisgICAg
ICBzdGFydFdpdGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyOl4oTlNTdHJpbmcgKm1lc3NhZ2Us
IFJUQ0xvZ2dpbmdTZXZlcml0eSBzZXZlcml0eSkgeworICAgICAgICBYQ1RBc3NlcnRUcnVlKFtt
ZXNzYWdlIGhhc1N1ZmZpeDpAIkhvcnJpYmxlIGVycm9yXG4iXSk7CisgICAgICAgIFhDVEFzc2Vy
dEVxdWFsKHNldmVyaXR5LCBSVENMb2dnaW5nU2V2ZXJpdHlFcnJvcik7CisgICAgICAgIFtjYWxs
YmFja0V4cGVjdGF0aW9uIGZ1bGZpbGxdOworICAgICAgfV07CisKKyAgUlRDTG9nSW5mbygiSnVz
dCBzb21lIGluZm8iKTsKKyAgUlRDTG9nV2FybmluZygiV2FybmluZyB3YXJuaW5nIik7CisgIFJU
Q0xvZ0Vycm9yKCJIb3JyaWJsZSBlcnJvciIpOworCisgIFtzZWxmIHdhaXRGb3JFeHBlY3RhdGlv
bnM6QFsgY2FsbGJhY2tFeHBlY3RhdGlvbiBdIHRpbWVvdXQ6MTAuMF07Cit9CisKKy0gKHZvaWQp
dGVzdENhbGxiYWNrRG9lc05vdGdldENhbGxlZEZvclNldmVyaXR5Tm9uZSB7CisgIHNlbGYubG9n
Z2VyLnNldmVyaXR5ID0gUlRDTG9nZ2luZ1NldmVyaXR5Tm9uZTsKKworICBYQ1Rlc3RFeHBlY3Rh
dGlvbiAqY2FsbGJhY2tFeHBlY3RhdGlvbiA9IFtzZWxmIGV4cGVjdGF0aW9uV2l0aERlc2NyaXB0
aW9uOkAidW5leHBlY3RlZENhbGxiYWNrIl07CisKKyAgW3NlbGYubG9nZ2VyIHN0YXJ0Ol4oTlNT
dHJpbmcgKm1lc3NhZ2UpIHsKKyAgICBbY2FsbGJhY2tFeHBlY3RhdGlvbiBmdWxmaWxsXTsKKyAg
ICBYQ1RBc3NlcnRUcnVlKGZhbHNlKTsKKyAgfV07CisKKyAgUlRDTG9nSW5mbygiSnVzdCBzb21l
IGluZm8iKTsKKyAgUlRDTG9nV2FybmluZygiV2FybmluZyB3YXJuaW5nIik7CisgIFJUQ0xvZ0Vy
cm9yKCJIb3JyaWJsZSBlcnJvciIpOworCisgIFhDVFdhaXRlciAqd2FpdGVyID0gW1tYQ1RXYWl0
ZXIgYWxsb2NdIGluaXRdOworICBYQ1RXYWl0ZXJSZXN1bHQgcmVzdWx0ID0gW3dhaXRlciB3YWl0
Rm9yRXhwZWN0YXRpb25zOkBbIGNhbGxiYWNrRXhwZWN0YXRpb24gXSB0aW1lb3V0OjEuMF07Cisg
IFhDVEFzc2VydEVxdWFsKHJlc3VsdCwgWENUV2FpdGVyUmVzdWx0VGltZWRPdXQpOworfQorCist
ICh2b2lkKXRlc3RDYWxsYmFja1dpdGhTZXZlcml0eURvZXNOb3RnZXRDYWxsZWRGb3JTZXZlcml0
eU5vbmUgeworICBzZWxmLmxvZ2dlci5zZXZlcml0eSA9IFJUQ0xvZ2dpbmdTZXZlcml0eU5vbmU7
CisKKyAgWENUZXN0RXhwZWN0YXRpb24gKmNhbGxiYWNrRXhwZWN0YXRpb24gPSBbc2VsZiBleHBl
Y3RhdGlvbldpdGhEZXNjcmlwdGlvbjpAInVuZXhwZWN0ZWRDYWxsYmFjayJdOworCisgIFtzZWxm
LmxvZ2dlcgorICAgICAgc3RhcnRXaXRoTWVzc2FnZUFuZFNldmVyaXR5SGFuZGxlcjpeKE5TU3Ry
aW5nICptZXNzYWdlLCBSVENMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkpIHsKKyAgICAgICAgW2Nh
bGxiYWNrRXhwZWN0YXRpb24gZnVsZmlsbF07CisgICAgICAgIFhDVEFzc2VydFRydWUoZmFsc2Up
OworICAgICAgfV07CisKKyAgUlRDTG9nSW5mbygiSnVzdCBzb21lIGluZm8iKTsKKyAgUlRDTG9n
V2FybmluZygiV2FybmluZyB3YXJuaW5nIik7CisgIFJUQ0xvZ0Vycm9yKCJIb3JyaWJsZSBlcnJv
ciIpOworCisgIFhDVFdhaXRlciAqd2FpdGVyID0gW1tYQ1RXYWl0ZXIgYWxsb2NdIGluaXRdOwor
ICBYQ1RXYWl0ZXJSZXN1bHQgcmVzdWx0ID0gW3dhaXRlciB3YWl0Rm9yRXhwZWN0YXRpb25zOkBb
IGNhbGxiYWNrRXhwZWN0YXRpb24gXSB0aW1lb3V0OjEuMF07CisgIFhDVEFzc2VydEVxdWFsKHJl
c3VsdCwgWENUV2FpdGVyUmVzdWx0VGltZWRPdXQpOworfQorCiAtICh2b2lkKXRlc3RTdGFydGlu
Z1dpdGhOaWxDYWxsYmFja0RvZXNOb3RDcmFzaCB7CiAgIFtzZWxmLmxvZ2dlciBzdGFydDpuaWxd
OwogCiAgIFJUQ0xvZ0Vycm9yKCJIb3JyaWJsZSBlcnJvciIpOwogfQogCistICh2b2lkKXRlc3RT
dGFydGluZ1dpdGhOaWxDYWxsYmFja1dpdGhTZXZlcml0eURvZXNOb3RDcmFzaCB7CisgIFtzZWxm
LmxvZ2dlciBzdGFydFdpdGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyOm5pbF07CisKKyAgUlRD
TG9nRXJyb3IoIkhvcnJpYmxlIGVycm9yIik7Cit9CisKIC0gKHZvaWQpdGVzdFN0b3BDYWxsYmFj
a0xvZ2dlciB7CiAgIFhDVGVzdEV4cGVjdGF0aW9uICpjYWxsYmFja0V4cGVjdGF0aW9uID0gW3Nl
bGYgZXhwZWN0YXRpb25XaXRoRGVzY3JpcHRpb246QCJzdG9wcGVkIl07CiAKQEAgLTg4LDYgKzE2
OSwyMyBAQCAtICh2b2lkKXRlc3RTdG9wQ2FsbGJhY2tMb2dnZXIgewogICBYQ1RBc3NlcnRFcXVh
bChyZXN1bHQsIFhDVFdhaXRlclJlc3VsdFRpbWVkT3V0KTsKIH0KIAorLSAodm9pZCl0ZXN0U3Rv
cENhbGxiYWNrV2l0aFNldmVyaXR5TG9nZ2VyIHsKKyAgWENUZXN0RXhwZWN0YXRpb24gKmNhbGxi
YWNrRXhwZWN0YXRpb24gPSBbc2VsZiBleHBlY3RhdGlvbldpdGhEZXNjcmlwdGlvbjpAInN0b3Bw
ZWQiXTsKKworICBbc2VsZi5sb2dnZXIKKyAgICAgIHN0YXJ0V2l0aE1lc3NhZ2VBbmRTZXZlcml0
eUhhbmRsZXI6XihOU1N0cmluZyAqbWVzc2FnZSwgUlRDTG9nZ2luZ1NldmVyaXR5IGxvZ2dpbmdT
ZXJ2ZXJpdHkpIHsKKyAgICAgICAgW2NhbGxiYWNrRXhwZWN0YXRpb24gZnVsZmlsbF07CisgICAg
ICB9XTsKKworICBbc2VsZi5sb2dnZXIgc3RvcF07CisKKyAgUlRDTG9nSW5mbygiSnVzdCBzb21l
IGluZm8iKTsKKworICBYQ1RXYWl0ZXIgKndhaXRlciA9IFtbWENUV2FpdGVyIGFsbG9jXSBpbml0
XTsKKyAgWENUV2FpdGVyUmVzdWx0IHJlc3VsdCA9IFt3YWl0ZXIgd2FpdEZvckV4cGVjdGF0aW9u
czpAWyBjYWxsYmFja0V4cGVjdGF0aW9uIF0gdGltZW91dDoxLjBdOworICBYQ1RBc3NlcnRFcXVh
bChyZXN1bHQsIFhDVFdhaXRlclJlc3VsdFRpbWVkT3V0KTsKK30KKwogLSAodm9pZCl0ZXN0RGVz
dHJveWluZ0NhbGxiYWNrTG9nZ2VyIHsKICAgWENUZXN0RXhwZWN0YXRpb24gKmNhbGxiYWNrRXhw
ZWN0YXRpb24gPSBbc2VsZiBleHBlY3RhdGlvbldpdGhEZXNjcmlwdGlvbjpAImRlc3Ryb3llZCJd
OwogCkBAIC0xMDQsNCArMjAyLDQzIEBAIC0gKHZvaWQpdGVzdERlc3Ryb3lpbmdDYWxsYmFja0xv
Z2dlciB7CiAgIFhDVEFzc2VydEVxdWFsKHJlc3VsdCwgWENUV2FpdGVyUmVzdWx0VGltZWRPdXQp
OwogfQogCistICh2b2lkKXRlc3REZXN0cm95aW5nQ2FsbGJhY2tXaXRoU2V2ZXJpdHlMb2dnZXIg
eworICBYQ1Rlc3RFeHBlY3RhdGlvbiAqY2FsbGJhY2tFeHBlY3RhdGlvbiA9IFtzZWxmIGV4cGVj
dGF0aW9uV2l0aERlc2NyaXB0aW9uOkAiZGVzdHJveWVkIl07CisKKyAgW3NlbGYubG9nZ2VyCisg
ICAgICBzdGFydFdpdGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyOl4oTlNTdHJpbmcgKm1lc3Nh
Z2UsIFJUQ0xvZ2dpbmdTZXZlcml0eSBsb2dnaW5nU2VydmVyaXR5KSB7CisgICAgICAgIFtjYWxs
YmFja0V4cGVjdGF0aW9uIGZ1bGZpbGxdOworICAgICAgfV07CisKKyAgc2VsZi5sb2dnZXIgPSBu
aWw7CisKKyAgUlRDTG9nSW5mbygiSnVzdCBzb21lIGluZm8iKTsKKworICBYQ1RXYWl0ZXIgKndh
aXRlciA9IFtbWENUV2FpdGVyIGFsbG9jXSBpbml0XTsKKyAgWENUV2FpdGVyUmVzdWx0IHJlc3Vs
dCA9IFt3YWl0ZXIgd2FpdEZvckV4cGVjdGF0aW9uczpAWyBjYWxsYmFja0V4cGVjdGF0aW9uIF0g
dGltZW91dDoxLjBdOworICBYQ1RBc3NlcnRFcXVhbChyZXN1bHQsIFhDVFdhaXRlclJlc3VsdFRp
bWVkT3V0KTsKK30KKworLSAodm9pZCl0ZXN0Q2FsbGJhY2tXaXRoU2V2ZXJpdHlMb2dnZXJDYW5u
b3RTdGFydFR3aWNlIHsKKyAgc2VsZi5sb2dnZXIuc2V2ZXJpdHkgPSBSVENMb2dnaW5nU2V2ZXJp
dHlXYXJuaW5nOworCisgIFhDVGVzdEV4cGVjdGF0aW9uICpjYWxsYmFja0V4cGVjdGF0aW9uID0g
W3NlbGYgZXhwZWN0YXRpb25XaXRoRGVzY3JpcHRpb246QCJjYWxsYmFja1dhcm5pbmciXTsKKwor
ICBbc2VsZi5sb2dnZXIKKyAgICAgIHN0YXJ0V2l0aE1lc3NhZ2VBbmRTZXZlcml0eUhhbmRsZXI6
XihOU1N0cmluZyAqbWVzc2FnZSwgUlRDTG9nZ2luZ1NldmVyaXR5IGxvZ2dpbmdTZXJ2ZXJpdHkp
IHsKKyAgICAgICAgWENUQXNzZXJ0VHJ1ZShbbWVzc2FnZSBoYXNTdWZmaXg6QCJIb3JyaWJsZSBl
cnJvclxuIl0pOworICAgICAgICBYQ1RBc3NlcnRFcXVhbChsb2dnaW5nU2VydmVyaXR5LCBSVENM
b2dnaW5nU2V2ZXJpdHlFcnJvcik7CisgICAgICAgIFtjYWxsYmFja0V4cGVjdGF0aW9uIGZ1bGZp
bGxdOworICAgICAgfV07CisKKyAgW3NlbGYubG9nZ2VyIHN0YXJ0Ol4oTlNTdHJpbmcgKm1lc3Nh
Z2UpIHsKKyAgICBbY2FsbGJhY2tFeHBlY3RhdGlvbiBmdWxmaWxsXTsKKyAgICBYQ1RBc3NlcnRU
cnVlKGZhbHNlKTsKKyAgfV07CisKKyAgUlRDTG9nRXJyb3IoIkhvcnJpYmxlIGVycm9yIik7CisK
KyAgW3NlbGYgd2FpdEZvckV4cGVjdGF0aW9uczpAWyBjYWxsYmFja0V4cGVjdGF0aW9uIF0gdGlt
ZW91dDoxMC4wXTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0NlcnRpZmljYXRlVGVz
dC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L3VuaXR0ZXN0cy9SVENDZXJ0aWZpY2F0ZVRlc3QubW0KaW5kZXggMjU4NWEyNzgxMThlOTliZjM3
NWI0MDFiMTNiODRmMDYyNWQ0ZTA1Zi4uNWJmMWViM2ZlNDcwNzQ3N2ZmYjg0MjIzYjU1NGY0NmFl
ODRkNTZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0NlcnRpZmljYXRlVGVzdC5tbQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMv
UlRDQ2VydGlmaWNhdGVUZXN0Lm1tCkBAIC03MSw3ICs3MSw3IEBAIC0gKHZvaWQpdGVzdENlcnRp
ZmljYXRlSXNVc2VkSW5Db25maWcgewogCiBAZW5kCiAKLVRFU1QoQ2VydGlmaWNhdGVUZXN0LCBD
ZXJ0aWZpY2F0ZUlzVXNlZEluQ29uZmlnKSB7CitURVNUKENlcnRpZmljYXRlVGVzdCwgRElTQUJM
RURfQ2VydGlmaWNhdGVJc1VzZWRJbkNvbmZpZykgewogICBSVENDZXJ0aWZpY2F0ZVRlc3QgKnRl
c3QgPSBbW1JUQ0NlcnRpZmljYXRlVGVzdCBhbGxvY10gaW5pdF07CiAgIFt0ZXN0IHRlc3RDZXJ0
aWZpY2F0ZUlzVXNlZEluQ29uZmlnXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENDb25maWd1cmF0
aW9uVGVzdC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL3VuaXR0ZXN0cy9SVENDb25maWd1cmF0aW9uVGVzdC5tbQppbmRleCAxZWY3MThhZDQ5
NThkZTdkNzc2ZmY1OWJiNzQzM2QwNTcwM2E5OWZjLi5mMzFmY2ZkODU4ZDkyOWY2MDY0Zjg3YzQ4
ZWYxMDdhNDZlOGJmOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQ29uZmlndXJhdGlvblRlc3QubW0K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
dW5pdHRlc3RzL1JUQ0NvbmZpZ3VyYXRpb25UZXN0Lm1tCkBAIC01MCw2ICs1MCwxMiBAQCAtICh2
b2lkKXRlc3RDb252ZXJzaW9uVG9OYXRpdmVDb25maWd1cmF0aW9uIHsKICAgICAgIFJUQ0NvbnRp
bnVhbEdhdGhlcmluZ1BvbGljeUdhdGhlckNvbnRpbnVhbGx5OwogICBjb25maWcuc2hvdWxkUHJ1
bmVUdXJuUG9ydHMgPSBZRVM7CiAgIGNvbmZpZy5pY2VSZWdhdGhlckludGVydmFsUmFuZ2UgPSBy
YW5nZTsKKyAgY29uZmlnLmNyeXB0b09wdGlvbnMgPSBbW1JUQ0NyeXB0b09wdGlvbnMgYWxsb2Nd
IGluaXRXaXRoU3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlczpZRVMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNy
eXB0b0NpcGhlcjpZRVMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczpZRVMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ZyYW1lUmVx
dWlyZUZyYW1lRW5jcnlwdGlvbjpZRVNdOworICBjb25maWcucnRjcEF1ZGlvUmVwb3J0SW50ZXJ2
YWxNcyA9IDI1MDA7CisgIGNvbmZpZy5ydGNwVmlkZW9SZXBvcnRJbnRlcnZhbE1zID0gMzc1MDsK
IAogICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRD
Q29uZmlndXJhdGlvbj4KICAgICAgIG5hdGl2ZUNvbmZpZyhbY29uZmlnIGNyZWF0ZU5hdGl2ZUNv
bmZpZ3VyYXRpb25dKTsKQEAgLTc4LDYgKzg0LDEyIEBAIC0gKHZvaWQpdGVzdENvbnZlcnNpb25U
b05hdGl2ZUNvbmZpZ3VyYXRpb24gewogICBFWFBFQ1RfRVEodHJ1ZSwgbmF0aXZlQ29uZmlnLT5w
cnVuZV90dXJuX3BvcnRzKTsKICAgRVhQRUNUX0VRKHJhbmdlLm1pbiwgbmF0aXZlQ29uZmlnLT5p
Y2VfcmVnYXRoZXJfaW50ZXJ2YWxfcmFuZ2UtPm1pbigpKTsKICAgRVhQRUNUX0VRKHJhbmdlLm1h
eCwgbmF0aXZlQ29uZmlnLT5pY2VfcmVnYXRoZXJfaW50ZXJ2YWxfcmFuZ2UtPm1heCgpKTsKKyAg
RVhQRUNUX0VRKHRydWUsIG5hdGl2ZUNvbmZpZy0+Y3J5cHRvX29wdGlvbnMtPnNydHAuZW5hYmxl
X2djbV9jcnlwdG9fc3VpdGVzKTsKKyAgRVhQRUNUX0VRKHRydWUsIG5hdGl2ZUNvbmZpZy0+Y3J5
cHRvX29wdGlvbnMtPnNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIpOwor
ICBFWFBFQ1RfRVEodHJ1ZSwgbmF0aXZlQ29uZmlnLT5jcnlwdG9fb3B0aW9ucy0+c3J0cC5lbmFi
bGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyk7CisgIEVYUEVDVF9FUSh0cnVlLCBu
YXRpdmVDb25maWctPmNyeXB0b19vcHRpb25zLT5zZnJhbWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0
aW9uKTsKKyAgRVhQRUNUX0VRKDI1MDAsIG5hdGl2ZUNvbmZpZy0+YXVkaW9fcnRjcF9yZXBvcnRf
aW50ZXJ2YWxfbXMoKSk7CisgIEVYUEVDVF9FUSgzNzUwLCBuYXRpdmVDb25maWctPnZpZGVvX3J0
Y3BfcmVwb3J0X2ludGVydmFsX21zKCkpOwogfQogCiAtICh2b2lkKXRlc3ROYXRpdmVDb252ZXJz
aW9uVG9Db25maWd1cmF0aW9uIHsKQEAgLTEwMyw2ICsxMTUsMTIgQEAgLSAodm9pZCl0ZXN0TmF0
aXZlQ29udmVyc2lvblRvQ29uZmlndXJhdGlvbiB7CiAgICAgICBSVENDb250aW51YWxHYXRoZXJp
bmdQb2xpY3lHYXRoZXJDb250aW51YWxseTsKICAgY29uZmlnLnNob3VsZFBydW5lVHVyblBvcnRz
ID0gWUVTOwogICBjb25maWcuaWNlUmVnYXRoZXJJbnRlcnZhbFJhbmdlID0gcmFuZ2U7CisgIGNv
bmZpZy5jcnlwdG9PcHRpb25zID0gW1tSVENDcnlwdG9PcHRpb25zIGFsbG9jXSBpbml0V2l0aFNy
dHBFbmFibGVHY21DcnlwdG9TdWl0ZXM6WUVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI6
Tk8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnRwRW5h
YmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczpOTworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZnJhbWVSZXF1aXJlRnJhbWVFbmNy
eXB0aW9uOk5PXTsKKyAgY29uZmlnLnJ0Y3BBdWRpb1JlcG9ydEludGVydmFsTXMgPSAxNTAwOwor
ICBjb25maWcucnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxNcyA9IDIxNTA7CiAKICAgd2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiAqbmF0aXZlQ29uZmlnID0K
ICAgICAgIFtjb25maWcgY3JlYXRlTmF0aXZlQ29uZmlndXJhdGlvbl07CkBAIC0xMzAsNiArMTQ4
LDIxIEBAIC0gKHZvaWQpdGVzdE5hdGl2ZUNvbnZlcnNpb25Ub0NvbmZpZ3VyYXRpb24gewogICBF
WFBFQ1RfRVEoY29uZmlnLnNob3VsZFBydW5lVHVyblBvcnRzLCBuZXdDb25maWcuc2hvdWxkUHJ1
bmVUdXJuUG9ydHMpOwogICBFWFBFQ1RfRVEoY29uZmlnLmljZVJlZ2F0aGVySW50ZXJ2YWxSYW5n
ZS5taW4sIG5ld0NvbmZpZy5pY2VSZWdhdGhlckludGVydmFsUmFuZ2UubWluKTsKICAgRVhQRUNU
X0VRKGNvbmZpZy5pY2VSZWdhdGhlckludGVydmFsUmFuZ2UubWF4LCBuZXdDb25maWcuaWNlUmVn
YXRoZXJJbnRlcnZhbFJhbmdlLm1heCk7CisgIEVYUEVDVF9FUShjb25maWcuY3J5cHRvT3B0aW9u
cy5zcnRwRW5hYmxlR2NtQ3J5cHRvU3VpdGVzLAorICAgICAgICAgICAgbmV3Q29uZmlnLmNyeXB0
b09wdGlvbnMuc3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlcyk7CisgIEVYUEVDVF9FUShjb25maWcu
Y3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlciwKKyAgICAg
ICAgICAgIG5ld0NvbmZpZy5jcnlwdG9PcHRpb25zLnNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5
cHRvQ2lwaGVyKTsKKyAgRVhQRUNUX0VRKGNvbmZpZy5jcnlwdG9PcHRpb25zLnNydHBFbmFibGVF
bmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zLAorICAgICAgICAgICAgbmV3Q29uZmlnLmNyeXB0
b09wdGlvbnMuc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMpOworICBFWFBF
Q1RfRVEoY29uZmlnLmNyeXB0b09wdGlvbnMuc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbiwK
KyAgICAgICAgICAgIG5ld0NvbmZpZy5jcnlwdG9PcHRpb25zLnNmcmFtZVJlcXVpcmVGcmFtZUVu
Y3J5cHRpb24pOworICBFWFBFQ1RfRVEoY29uZmlnLnJ0Y3BBdWRpb1JlcG9ydEludGVydmFsTXMs
IG5ld0NvbmZpZy5ydGNwQXVkaW9SZXBvcnRJbnRlcnZhbE1zKTsKKyAgRVhQRUNUX0VRKGNvbmZp
Zy5ydGNwVmlkZW9SZXBvcnRJbnRlcnZhbE1zLCBuZXdDb25maWcucnRjcFZpZGVvUmVwb3J0SW50
ZXJ2YWxNcyk7Cit9CisKKy0gKHZvaWQpdGVzdERlZmF1bHRWYWx1ZXMgeworICBSVENDb25maWd1
cmF0aW9uICpjb25maWcgPSBbW1JUQ0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOworICBFWFBF
Q1RfRVEoY29uZmlnLmNyeXB0b09wdGlvbnMsIG5pbCk7CiB9CiAKIEBlbmQKQEAgLTEzOSw1ICsx
NzIsNiBAQCBURVNUKFJUQ0NvbmZpZ3VyYXRpb25UZXN0LCBOYXRpdmVDb25maWd1cmF0aW9uQ29u
dmVyc2lvblRlc3QpIHsKICAgICBSVENDb25maWd1cmF0aW9uVGVzdCAqdGVzdCA9IFtbUlRDQ29u
ZmlndXJhdGlvblRlc3QgYWxsb2NdIGluaXRdOwogICAgIFt0ZXN0IHRlc3RDb252ZXJzaW9uVG9O
YXRpdmVDb25maWd1cmF0aW9uXTsKICAgICBbdGVzdCB0ZXN0TmF0aXZlQ29udmVyc2lvblRvQ29u
ZmlndXJhdGlvbl07CisgICAgW3Rlc3QgdGVzdERlZmF1bHRWYWx1ZXNdOwogICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy91bml0dGVzdHMvUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlclRlc3QubW0gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMv
UlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlclRlc3QubW0KaW5kZXggOWJiNTE3OTUyMWYz
NGExNjFjY2UzZTE1Zjc2MjNmZmQ1N2VkNTgwNC4uNWY4ODlhNjk5ZGE2MTA4NTExOTAwNDNlM2Fj
ZmRmZDc2N2JkOWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1
aWxkZXJUZXN0Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlCdWlsZGVyVGVz
dC5tbQpAQCAtMjIsNiArMjIsNyBAQCBleHRlcm4gIkMiIHsKIAogI2luY2x1ZGUgImFwaS9hdWRp
b19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkv
YXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAi
YXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29k
ZWNzL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2Uv
aW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKQEAgLTQ5LDcgKzUwLDggQEAgLSAodm9pZCl0ZXN0QnVp
bGRlciB7CiAgICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRW5jb2RlckZhY3Rvcnk6bnVsbHB0cgog
ICAgICAgICAgICAgICBuYXRpdmVWaWRlb0RlY29kZXJGYWN0b3J5Om51bGxwdHIKICAgICAgICAg
ICAgICAgICAgICAgICBhdWRpb0RldmljZU1vZHVsZTpudWxscHRyCi0gICAgICAgICAgICAgICAg
ICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6bnVsbHB0cl0pOworICAgICAgICAgICAgICAgICAgYXVk
aW9Qcm9jZXNzaW5nTW9kdWxlOm51bGxwdHIKKyAgICAgICAgICAgICAgICAgIG1lZGlhVHJhbnNw
b3J0RmFjdG9yeTpudWxscHRyXSk7CiAjZW5kaWYKICAgUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5
QnVpbGRlciogYnVpbGRlciA9IFtbUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlciBhbGxv
Y10gaW5pdF07CiAgIFJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeSogcGVlckNvbm5lY3Rpb25GYWN0
b3J5ID0gW2J1aWxkZXIgY3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5XTsKQEAgLTY5LDcgKzcx
LDggQEAgLSAodm9pZCl0ZXN0RGVmYXVsdENvbXBvbmVudHNCdWlsZGVyIHsKICAgICAgICAgICAg
ICAgbmF0aXZlVmlkZW9FbmNvZGVyRmFjdG9yeTpudWxscHRyCiAgICAgICAgICAgICAgIG5hdGl2
ZVZpZGVvRGVjb2RlckZhY3Rvcnk6bnVsbHB0cgogICAgICAgICAgICAgICAgICAgICAgIGF1ZGlv
RGV2aWNlTW9kdWxlOm51bGxwdHIKLSAgICAgICAgICAgICAgICAgIGF1ZGlvUHJvY2Vzc2luZ01v
ZHVsZTpudWxscHRyXSk7CisgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6
bnVsbHB0cgorICAgICAgICAgICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5Om51bGxwdHJd
KTsKICNlbmRpZgogICBSVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlCdWlsZGVyKiBidWlsZGVyID0g
W1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIgZGVmYXVsdEJ1aWxkZXJdOwogICBSVENQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnkqIHBlZXJDb25uZWN0aW9uRmFjdG9yeSA9IFtidWlsZGVyIGNy
ZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDUGVlckNvbm5l
Y3Rpb25UZXN0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvdW5pdHRlc3RzL1JUQ1BlZXJDb25uZWN0aW9uVGVzdC5tbQppbmRleCAyOGZkZWU2
YTJiZDZlZDgxZTA3MDBiNGVjMTEwYTI0YjJjYTBhM2NkLi4zNTMyMjU4Nzk5NmQ5OGFjNjc2OWIw
NjU1YTY0OGIxOWEzYWQ5ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDUGVlckNvbm5lY3Rpb25UZXN0
Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL3VuaXR0ZXN0cy9SVENQZWVyQ29ubmVjdGlvblRlc3QubW0KQEAgLTE2LDYgKzE2LDcgQEAK
IAogI2ltcG9ydCAiYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24rUHJpdmF0ZS5o
IgogI2ltcG9ydCAiYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24uaCIKKyNpbXBv
cnQgImFwaS9wZWVyY29ubmVjdGlvbi9SVENDcnlwdG9PcHRpb25zLmgiCiAjaW1wb3J0ICJhcGkv
cGVlcmNvbm5lY3Rpb24vUlRDSWNlU2VydmVyLmgiCiAjaW1wb3J0ICJhcGkvcGVlcmNvbm5lY3Rp
b24vUlRDTWVkaWFDb25zdHJhaW50cy5oIgogI2ltcG9ydCAiYXBpL3BlZXJjb25uZWN0aW9uL1JU
Q1BlZXJDb25uZWN0aW9uLmgiCkBAIC01MCw2ICs1MSwxMCBAQCAtICh2b2lkKXRlc3RDb25maWd1
cmF0aW9uR2V0dGVyIHsKICAgICAgIFJUQ0NvbnRpbnVhbEdhdGhlcmluZ1BvbGljeUdhdGhlckNv
bnRpbnVhbGx5OwogICBjb25maWcuc2hvdWxkUHJ1bmVUdXJuUG9ydHMgPSBZRVM7CiAgIGNvbmZp
Zy5hY3RpdmVSZXNldFNydHBQYXJhbXMgPSBZRVM7CisgIGNvbmZpZy5jcnlwdG9PcHRpb25zID0g
W1tSVENDcnlwdG9PcHRpb25zIGFsbG9jXSBpbml0V2l0aFNydHBFbmFibGVHY21DcnlwdG9TdWl0
ZXM6WUVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI6WUVTCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRl
ckV4dGVuc2lvbnM6Tk8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbjpOT107CiAKICAgUlRD
TWVkaWFDb25zdHJhaW50cyAqY29udHJhaW50cyA9IFtbUlRDTWVkaWFDb25zdHJhaW50cyBhbGxv
Y10gaW5pdFdpdGhNYW5kYXRvcnlDb25zdHJhaW50czpAe30KICAgICAgIG9wdGlvbmFsQ29uc3Ry
YWludHM6bmlsXTsKQEAgLTg5LDYgKzk0LDE0IEBAIC0gKHZvaWQpdGVzdENvbmZpZ3VyYXRpb25H
ZXR0ZXIgewogICBFWFBFQ1RfRVEoY29uZmlnLmNvbnRpbnVhbEdhdGhlcmluZ1BvbGljeSwgbmV3
Q29uZmlnLmNvbnRpbnVhbEdhdGhlcmluZ1BvbGljeSk7CiAgIEVYUEVDVF9FUShjb25maWcuc2hv
dWxkUHJ1bmVUdXJuUG9ydHMsIG5ld0NvbmZpZy5zaG91bGRQcnVuZVR1cm5Qb3J0cyk7CiAgIEVY
UEVDVF9FUShjb25maWcuYWN0aXZlUmVzZXRTcnRwUGFyYW1zLCBuZXdDb25maWcuYWN0aXZlUmVz
ZXRTcnRwUGFyYW1zKTsKKyAgRVhQRUNUX0VRKGNvbmZpZy5jcnlwdG9PcHRpb25zLnNydHBFbmFi
bGVHY21DcnlwdG9TdWl0ZXMsCisgICAgICAgICAgICBuZXdDb25maWcuY3J5cHRvT3B0aW9ucy5z
cnRwRW5hYmxlR2NtQ3J5cHRvU3VpdGVzKTsKKyAgRVhQRUNUX0VRKGNvbmZpZy5jcnlwdG9PcHRp
b25zLnNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyLAorICAgICAgICAgICAgbmV3
Q29uZmlnLmNyeXB0b09wdGlvbnMuc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIp
OworICBFWFBFQ1RfRVEoY29uZmlnLmNyeXB0b09wdGlvbnMuc3J0cEVuYWJsZUVuY3J5cHRlZFJ0
cEhlYWRlckV4dGVuc2lvbnMsCisgICAgICAgICAgICBuZXdDb25maWcuY3J5cHRvT3B0aW9ucy5z
cnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucyk7CisgIEVYUEVDVF9FUShjb25m
aWcuY3J5cHRvT3B0aW9ucy5zZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uLAorICAgICAgICAg
ICAgbmV3Q29uZmlnLmNyeXB0b09wdGlvbnMuc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbik7
CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9tYWluLm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvbWFpbi5tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTdmYjRmNDc5YzA1NmU3YzJhM2ZhMjhkOGNhNTdmNTg2
ZGNhNGFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0
cy9tYWluLm0KKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vKgotICogIENvcHlyaWdo
dCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAq
LwotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbXBvcnQgPFVJS2l0L1VJ
S2l0Lmg+Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKLSAgQGF1dG9yZWxl
YXNlcG9vbCB7Ci0gICAgcmV0dXJuIFVJQXBwbGljYXRpb25NYWluKGFyZ2MsIGFyZ3YsIG5pbCwg
bmlsKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL21haW4ubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvbWFpbi5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43N2E4OGE2NGQzZDc0ZTM1ZGE4ZWUwNTVlNzg4MDEwODIzZDZmYTZlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvdW5pdHRlc3RzL21haW4ubW0KQEAgLTAsMCArMSwyMSBAQAorLyoKKyAqICBDb3B5cmln
aHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxVSUtpdC9V
SUtpdC5oPgorI2luY2x1ZGUgInRlc3QvaW9zL2NvdmVyYWdlX3V0aWxfaW9zLmgiCisKK2ludCBt
YWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKKyAgcnRjOjp0ZXN0OjpDb25maWd1cmVDb3Zl
cmFnZVJlcG9ydFBhdGgoKTsKKworICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICByZXR1cm4gVUlB
cHBsaWNhdGlvbk1haW4oYXJnYywgYXJndiwgbmlsLCBuaWwpOworICB9Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0
dGVzdHMvbmFsdV9yZXdyaXRlcl94Y3Rlc3QubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvbmFsdV9yZXdyaXRlcl94Y3Rlc3Qu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGIwNDk5MDFjNTFhYjc3NjU2YjkzNDdiMmVkMzAxZjBkMzQyMDYxZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9uYWx1X3Jld3JpdGVyX3hjdGVzdC5tbQpAQCAtMCwwICsx
LDQxNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0
L2gyNjRfY29tbW9uLmgiCisjaW5jbHVkZSAiY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jl
d3JpdGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvZ3VuaXQuaCIKKworI2ltcG9ydCA8WENUZXN0L1hDVGVzdC5oPgorCisjaWYgVEFSR0VU
X09TX0lQSE9ORQorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgorI2ltcG9y
dCA8VUlLaXQvVUlLaXQuaD4KKyNlbmRpZgorCitAaW50ZXJmYWNlIE5hbHVSZXdyaXRlclRlc3Rz
IDogWENUZXN0Q2FzZQorCitAZW5kCisKK3N0YXRpYyBjb25zdCB1aW50OF90IE5BTFVfVEVTVF9E
QVRBXzBbXSA9IHsweEFBLCAweEJCLCAweENDfTsKK3N0YXRpYyBjb25zdCB1aW50OF90IE5BTFVf
VEVTVF9EQVRBXzFbXSA9IHsweERFLCAweEFELCAweEJFLCAweEVGfTsKKworLy8gY2xhbmctZm9y
bWF0IG9mZgorc3RhdGljIGNvbnN0IHVpbnQ4X3QgU1BTX1BQU19CVUZGRVJbXSA9IHsKKyAgLy8g
U1BTIG5hbHUuCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjcsIDB4NDIsIDB4MDAsIDB4
MUUsIDB4QUIsIDB4NDAsIDB4RjAsIDB4MjgsCisgIDB4RDMsIDB4NzAsIDB4MjAsIDB4MjAsIDB4
MjAsIDB4MjAsCisgIC8vIFBQUyBuYWx1LgorICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDI4
LCAweENFLCAweDNDLCAweDMwfTsKKy8vIGNsYW5nLWZvcm1hdCBvbgorCitAaW1wbGVtZW50YXRp
b24gTmFsdVJld3JpdGVyVGVzdHMKKworLSAodm9pZCl0ZXN0Q3JlYXRlVmlkZW9Gb3JtYXREZXNj
cmlwdGlvbiB7CisgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjcmlwdGlvbiA9Cisg
ICAgICB3ZWJydGM6OkNyZWF0ZVZpZGVvRm9ybWF0RGVzY3JpcHRpb24oU1BTX1BQU19CVUZGRVIs
IGFycmF5c2l6ZShTUFNfUFBTX0JVRkZFUikpOworICBYQ1RBc3NlcnRUcnVlKGRlc2NyaXB0aW9u
KTsKKyAgaWYgKGRlc2NyaXB0aW9uKSB7CisgICAgQ0ZSZWxlYXNlKGRlc2NyaXB0aW9uKTsKKyAg
ICBkZXNjcmlwdGlvbiA9IG51bGxwdHI7CisgIH0KKworICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisg
IGNvbnN0IHVpbnQ4X3Qgc3BzX3Bwc19ub3RfYXRfc3RhcnRfYnVmZmVyW10gPSB7CisgICAgLy8g
QWRkIHNvbWUgbm9uLVNQUy9QUFMgTkFMVXMgYXQgdGhlIGJlZ2lubmluZworICAgIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDEsIDB4RkYsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDEsCisgICAgMHhBQiwgMHgzMywgMHgyMSwKKyAgICAvLyBTUFMgbmFsdS4KKyAgICAweDAw
LCAweDAwLCAweDAxLCAweDI3LCAweDQyLCAweDAwLCAweDFFLCAweEFCLCAweDQwLCAweEYwLCAw
eDI4LCAweEQzLAorICAgIDB4NzAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgLy8gUFBT
IG5hbHUuCisgICAgMHgwMCwgMHgwMCwgMHgwMSwgMHgyOCwgMHhDRSwgMHgzQywgMHgzMH07Cisg
IC8vIGNsYW5nLWZvcm1hdCBvbgorICBkZXNjcmlwdGlvbiA9IHdlYnJ0Yzo6Q3JlYXRlVmlkZW9G
b3JtYXREZXNjcmlwdGlvbihzcHNfcHBzX25vdF9hdF9zdGFydF9idWZmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5c2l6ZShzcHNf
cHBzX25vdF9hdF9zdGFydF9idWZmZXIpKTsKKworICBYQ1RBc3NlcnRUcnVlKGRlc2NyaXB0aW9u
KTsKKworICBpZiAoZGVzY3JpcHRpb24pIHsKKyAgICBDRlJlbGVhc2UoZGVzY3JpcHRpb24pOwor
ICAgIGRlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgfQorCisgIGNvbnN0IHVpbnQ4X3Qgb3RoZXJf
YnVmZmVyW10gPSB7MHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyOH07CisgIFhDVEFzc2VydEZh
bHNlKHdlYnJ0Yzo6Q3JlYXRlVmlkZW9Gb3JtYXREZXNjcmlwdGlvbihvdGhlcl9idWZmZXIsIGFy
cmF5c2l6ZShvdGhlcl9idWZmZXIpKSk7Cit9CisKKy0gKHZvaWQpdGVzdFJlYWRFbXB0eUlucHV0
IHsKKyAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rlc3RfZGF0YVtdID0gezB4MDB9OworICB3ZWJy
dGM6OkFubmV4QkJ1ZmZlclJlYWRlciByZWFkZXIoYW5uZXhfYl90ZXN0X2RhdGEsIDApOworICBj
b25zdCB1aW50OF90KiBuYWx1ID0gbnVsbHB0cjsKKyAgc2l6ZV90IG5hbHVfbGVuZ3RoID0gMDsK
KyAgWENUQXNzZXJ0RXF1YWwoMHUsIHJlYWRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNz
ZXJ0RmFsc2UocmVhZGVyLlJlYWROYWx1KCZuYWx1LCAmbmFsdV9sZW5ndGgpKTsKKyAgWENUQXNz
ZXJ0RXF1YWwobnVsbHB0ciwgbmFsdSk7CisgIFhDVEFzc2VydEVxdWFsKDB1LCBuYWx1X2xlbmd0
aCk7Cit9CisKKy0gKHZvaWQpdGVzdFJlYWRTaW5nbGVOYWx1IHsKKyAgY29uc3QgdWludDhfdCBh
bm5leF9iX3Rlc3RfZGF0YVtdID0gezB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QUF9OworICB3
ZWJydGM6OkFubmV4QkJ1ZmZlclJlYWRlciByZWFkZXIoYW5uZXhfYl90ZXN0X2RhdGEsIGFycmF5
c2l6ZShhbm5leF9iX3Rlc3RfZGF0YSkpOworICBjb25zdCB1aW50OF90KiBuYWx1ID0gbnVsbHB0
cjsKKyAgc2l6ZV90IG5hbHVfbGVuZ3RoID0gMDsKKyAgWENUQXNzZXJ0RXF1YWwoYXJyYXlzaXpl
KGFubmV4X2JfdGVzdF9kYXRhKSwgcmVhZGVyLkJ5dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3Nl
cnRUcnVlKHJlYWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2Vy
dEVxdWFsKGFubmV4X2JfdGVzdF9kYXRhICsgNCwgbmFsdSk7CisgIFhDVEFzc2VydEVxdWFsKDF1
LCBuYWx1X2xlbmd0aCk7CisgIFhDVEFzc2VydEVxdWFsKDB1LCByZWFkZXIuQnl0ZXNSZW1haW5p
bmcoKSk7CisgIFhDVEFzc2VydEZhbHNlKHJlYWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVfbGVu
Z3RoKSk7CisgIFhDVEFzc2VydEVxdWFsKG51bGxwdHIsIG5hbHUpOworICBYQ1RBc3NlcnRFcXVh
bCgwdSwgbmFsdV9sZW5ndGgpOworfQorCistICh2b2lkKXRlc3RSZWFkU2luZ2xlTmFsdTNCeXRl
SGVhZGVyIHsKKyAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rlc3RfZGF0YVtdID0gezB4MDAsIDB4
MDAsIDB4MDEsIDB4QUF9OworICB3ZWJydGM6OkFubmV4QkJ1ZmZlclJlYWRlciByZWFkZXIoYW5u
ZXhfYl90ZXN0X2RhdGEsIGFycmF5c2l6ZShhbm5leF9iX3Rlc3RfZGF0YSkpOworICBjb25zdCB1
aW50OF90KiBuYWx1ID0gbnVsbHB0cjsKKyAgc2l6ZV90IG5hbHVfbGVuZ3RoID0gMDsKKyAgWENU
QXNzZXJ0RXF1YWwoYXJyYXlzaXplKGFubmV4X2JfdGVzdF9kYXRhKSwgcmVhZGVyLkJ5dGVzUmVt
YWluaW5nKCkpOworICBYQ1RBc3NlcnRUcnVlKHJlYWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVf
bGVuZ3RoKSk7CisgIFhDVEFzc2VydEVxdWFsKGFubmV4X2JfdGVzdF9kYXRhICsgMywgbmFsdSk7
CisgIFhDVEFzc2VydEVxdWFsKDF1LCBuYWx1X2xlbmd0aCk7CisgIFhDVEFzc2VydEVxdWFsKDB1
LCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydEZhbHNlKHJlYWRlci5SZWFk
TmFsdSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2VydEVxdWFsKG51bGxwdHIsIG5h
bHUpOworICBYQ1RBc3NlcnRFcXVhbCgwdSwgbmFsdV9sZW5ndGgpOworfQorCistICh2b2lkKXRl
c3RSZWFkTWlzc2luZ05hbHUgeworICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgIGNvbnN0IHVpbnQ4
X3QgYW5uZXhfYl90ZXN0X2RhdGFbXSA9IHsweDAxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHgwMCwgMHgwMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkZ9OworICAvLyBjbGFuZy1mb3JtYXQgb24K
KyAgd2VicnRjOjpBbm5leEJCdWZmZXJSZWFkZXIgcmVhZGVyKGFubmV4X2JfdGVzdF9kYXRhLCBh
cnJheXNpemUoYW5uZXhfYl90ZXN0X2RhdGEpKTsKKyAgY29uc3QgdWludDhfdCogbmFsdSA9IG51
bGxwdHI7CisgIHNpemVfdCBuYWx1X2xlbmd0aCA9IDA7CisgIFhDVEFzc2VydEVxdWFsKDB1LCBy
ZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydEZhbHNlKHJlYWRlci5SZWFkTmFs
dSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2VydEVxdWFsKG51bGxwdHIsIG5hbHUp
OworICBYQ1RBc3NlcnRFcXVhbCgwdSwgbmFsdV9sZW5ndGgpOworfQorCistICh2b2lkKXRlc3RS
ZWFkTXVsdGlwbGVOYWx1cyB7CisgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgY29uc3QgdWludDhf
dCBhbm5leF9iX3Rlc3RfZGF0YVtdID0gezB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4RkYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwLCAweDAwLCAweDAxLCAweEFBLCAweEJC
fTsKKyAgLy8gY2xhbmctZm9ybWF0IG9uCisgIHdlYnJ0Yzo6QW5uZXhCQnVmZmVyUmVhZGVyIHJl
YWRlcihhbm5leF9iX3Rlc3RfZGF0YSwgYXJyYXlzaXplKGFubmV4X2JfdGVzdF9kYXRhKSk7Cisg
IGNvbnN0IHVpbnQ4X3QqIG5hbHUgPSBudWxscHRyOworICBzaXplX3QgbmFsdV9sZW5ndGggPSAw
OworICBYQ1RBc3NlcnRFcXVhbChhcnJheXNpemUoYW5uZXhfYl90ZXN0X2RhdGEpLCByZWFkZXIu
Qnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydFRydWUocmVhZGVyLlJlYWROYWx1KCZuYWx1
LCAmbmFsdV9sZW5ndGgpKTsKKyAgWENUQXNzZXJ0RXF1YWwoYW5uZXhfYl90ZXN0X2RhdGEgKyA0
LCBuYWx1KTsKKyAgWENUQXNzZXJ0RXF1YWwoOHUsIG5hbHVfbGVuZ3RoKTsKKyAgWENUQXNzZXJ0
RXF1YWwoNXUsIHJlYWRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0VHJ1ZShyZWFk
ZXIuUmVhZE5hbHUoJm5hbHUsICZuYWx1X2xlbmd0aCkpOworICBYQ1RBc3NlcnRFcXVhbChhbm5l
eF9iX3Rlc3RfZGF0YSArIDE1LCBuYWx1KTsKKyAgWENUQXNzZXJ0RXF1YWwoMnUsIG5hbHVfbGVu
Z3RoKTsKKyAgWENUQXNzZXJ0RXF1YWwoMHUsIHJlYWRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAg
WENUQXNzZXJ0RmFsc2UocmVhZGVyLlJlYWROYWx1KCZuYWx1LCAmbmFsdV9sZW5ndGgpKTsKKyAg
WENUQXNzZXJ0RXF1YWwobnVsbHB0ciwgbmFsdSk7CisgIFhDVEFzc2VydEVxdWFsKDB1LCBuYWx1
X2xlbmd0aCk7Cit9CisKKy0gKHZvaWQpdGVzdEVtcHR5T3V0cHV0QnVmZmVyIHsKKyAgY29uc3Qg
dWludDhfdCBleHBlY3RlZF9idWZmZXJbXSA9IHsweDAwfTsKKyAgY29uc3Qgc2l6ZV90IGJ1ZmZl
cl9zaXplID0gMTsKKyAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gYnVmZmVyKG5ldyB1aW50
OF90W2J1ZmZlcl9zaXplXSk7CisgIG1lbXNldChidWZmZXIuZ2V0KCksIDAsIGJ1ZmZlcl9zaXpl
KTsKKyAgd2VicnRjOjpBdmNjQnVmZmVyV3JpdGVyIHdyaXRlcihidWZmZXIuZ2V0KCksIDApOwor
ICBYQ1RBc3NlcnRFcXVhbCgwdSwgd3JpdGVyLkJ5dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3Nl
cnRGYWxzZSh3cml0ZXIuV3JpdGVOYWx1KE5BTFVfVEVTVF9EQVRBXzAsIGFycmF5c2l6ZShOQUxV
X1RFU1RfREFUQV8wKSkpOworICBYQ1RBc3NlcnRFcXVhbCgwLCBtZW1jbXAoZXhwZWN0ZWRfYnVm
ZmVyLCBidWZmZXIuZ2V0KCksIGFycmF5c2l6ZShleHBlY3RlZF9idWZmZXIpKSk7Cit9CisKKy0g
KHZvaWQpdGVzdFdyaXRlU2luZ2xlTmFsdSB7CisgIGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRfYnVm
ZmVyW10gPSB7CisgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEFBLCAweEJCLCAweEND
LAorICB9OworICBjb25zdCBzaXplX3QgYnVmZmVyX3NpemUgPSBhcnJheXNpemUoTkFMVV9URVNU
X0RBVEFfMCkgKyA0OworICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBidWZmZXIobmV3IHVp
bnQ4X3RbYnVmZmVyX3NpemVdKTsKKyAgd2VicnRjOjpBdmNjQnVmZmVyV3JpdGVyIHdyaXRlcihi
dWZmZXIuZ2V0KCksIGJ1ZmZlcl9zaXplKTsKKyAgWENUQXNzZXJ0RXF1YWwoYnVmZmVyX3NpemUs
IHdyaXRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0VHJ1ZSh3cml0ZXIuV3JpdGVO
YWx1KE5BTFVfVEVTVF9EQVRBXzAsIGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8wKSkpOworICBY
Q1RBc3NlcnRFcXVhbCgwdSwgd3JpdGVyLkJ5dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3NlcnRG
YWxzZSh3cml0ZXIuV3JpdGVOYWx1KE5BTFVfVEVTVF9EQVRBXzEsIGFycmF5c2l6ZShOQUxVX1RF
U1RfREFUQV8xKSkpOworICBYQ1RBc3NlcnRFcXVhbCgwLCBtZW1jbXAoZXhwZWN0ZWRfYnVmZmVy
LCBidWZmZXIuZ2V0KCksIGFycmF5c2l6ZShleHBlY3RlZF9idWZmZXIpKSk7Cit9CisKKy0gKHZv
aWQpdGVzdFdyaXRlTXVsdGlwbGVOYWx1cyB7CisgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgY29u
c3QgdWludDhfdCBleHBlY3RlZF9idWZmZXJbXSA9IHsKKyAgICAweDAwLCAweDAwLCAweDAwLCAw
eDAzLCAweEFBLCAweEJCLCAweENDLAorICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4REUs
IDB4QUQsIDB4QkUsIDB4RUYKKyAgfTsKKyAgLy8gY2xhbmctZm9ybWF0IG9uCisgIGNvbnN0IHNp
emVfdCBidWZmZXJfc2l6ZSA9IGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8wKSArIGFycmF5c2l6
ZShOQUxVX1RFU1RfREFUQV8xKSArIDg7CisgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IGJ1
ZmZlcihuZXcgdWludDhfdFtidWZmZXJfc2l6ZV0pOworICB3ZWJydGM6OkF2Y2NCdWZmZXJXcml0
ZXIgd3JpdGVyKGJ1ZmZlci5nZXQoKSwgYnVmZmVyX3NpemUpOworICBYQ1RBc3NlcnRFcXVhbChi
dWZmZXJfc2l6ZSwgd3JpdGVyLkJ5dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3NlcnRUcnVlKHdy
aXRlci5Xcml0ZU5hbHUoTkFMVV9URVNUX0RBVEFfMCwgYXJyYXlzaXplKE5BTFVfVEVTVF9EQVRB
XzApKSk7CisgIFhDVEFzc2VydEVxdWFsKGJ1ZmZlcl9zaXplIC0gKGFycmF5c2l6ZShOQUxVX1RF
U1RfREFUQV8wKSArIDQpLCB3cml0ZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydFRy
dWUod3JpdGVyLldyaXRlTmFsdShOQUxVX1RFU1RfREFUQV8xLCBhcnJheXNpemUoTkFMVV9URVNU
X0RBVEFfMSkpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMHUsIHdyaXRlci5CeXRlc1JlbWFpbmluZygp
KTsKKyAgWENUQXNzZXJ0RXF1YWwoMCwgbWVtY21wKGV4cGVjdGVkX2J1ZmZlciwgYnVmZmVyLmdl
dCgpLCBhcnJheXNpemUoZXhwZWN0ZWRfYnVmZmVyKSkpOworfQorCistICh2b2lkKXRlc3RPdmVy
ZmxvdyB7CisgIGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRfYnVmZmVyW10gPSB7MHgwMCwgMHgwMCwg
MHgwMH07CisgIGNvbnN0IHNpemVfdCBidWZmZXJfc2l6ZSA9IGFycmF5c2l6ZShOQUxVX1RFU1Rf
REFUQV8wKTsKKyAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gYnVmZmVyKG5ldyB1aW50OF90
W2J1ZmZlcl9zaXplXSk7CisgIG1lbXNldChidWZmZXIuZ2V0KCksIDAsIGJ1ZmZlcl9zaXplKTsK
KyAgd2VicnRjOjpBdmNjQnVmZmVyV3JpdGVyIHdyaXRlcihidWZmZXIuZ2V0KCksIGJ1ZmZlcl9z
aXplKTsKKyAgWENUQXNzZXJ0RXF1YWwoYnVmZmVyX3NpemUsIHdyaXRlci5CeXRlc1JlbWFpbmlu
ZygpKTsKKyAgWENUQXNzZXJ0RmFsc2Uod3JpdGVyLldyaXRlTmFsdShOQUxVX1RFU1RfREFUQV8w
LCBhcnJheXNpemUoTkFMVV9URVNUX0RBVEFfMCkpKTsKKyAgWENUQXNzZXJ0RXF1YWwoYnVmZmVy
X3NpemUsIHdyaXRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMCwgbWVt
Y21wKGV4cGVjdGVkX2J1ZmZlciwgYnVmZmVyLmdldCgpLCBhcnJheXNpemUoZXhwZWN0ZWRfYnVm
ZmVyKSkpOworfQorCistICh2b2lkKXRlc3RIMjY0QW5uZXhCQnVmZmVyVG9DTVNhbXBsZUJ1ZmZl
ciB7CisgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rlc3Rf
ZGF0YVtdID0geworICAgIDB4MDAsCisgICAgMHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweDAxLCAw
eDAwLCAweDAwLCAweEZGLCAvLyBmaXJzdCBjaHVuaywgNCBieXRlcworICAgIDB4MDAsIDB4MDAs
IDB4MDEsCisgICAgMHhBQSwgMHhGRiwgLy8gc2Vjb25kIGNodW5rLCAyIGJ5dGVzCisgICAgMHgw
MCwgMHgwMCwgMHgwMSwKKyAgICAweEJCfTsgIC8vIHRoaXJkIGNodW5rLCAxIGJ5dGUsIHdpbGwg
bm90IGZpdCBpbnRvIG91dHB1dCBhcnJheQorCisgIGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRfY21z
YW1wbGVfZGF0YVtdID0geworICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisgICAgMHgwMSwg
MHgwMCwgMHgwMCwgMHhGRiwgLy8gZmlyc3QgY2h1bmssIDQgYnl0ZXMKKyAgICAweDAwLCAweDAw
LCAweDAwLCAweDAyLAorICAgIDB4QUEsIDB4RkZ9OyAvLyBzZWNvbmQgY2h1bmssIDIgYnl0ZXMK
KyAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgQ01NZW1vcnlQb29sUmVmIG1lbW9yeV9wb29sID0g
Q01NZW1vcnlQb29sQ3JlYXRlKG5pbCk7CisgIENNU2FtcGxlQnVmZmVyUmVmIG91dF9zYW1wbGVf
YnVmZmVyID0gbmlsOworICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24g
PSBbc2VsZiBjcmVhdGVEZXNjcmlwdGlvbl07CisKKyAgQm9vbGVhbiByZXN1bHQgPSB3ZWJydGM6
OkgyNjRBbm5leEJCdWZmZXJUb0NNU2FtcGxlQnVmZmVyKGFubmV4X2JfdGVzdF9kYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJyYXlzaXplKGFubmV4X2JfdGVzdF9kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9z
YW1wbGVfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVtb3J5X3Bvb2wpOworCisgIFhDVEFzc2VydFRydWUocmVzdWx0
KTsKKworICBYQ1RBc3NlcnRFcXVhbChkZXNjcmlwdGlvbiwgQ01TYW1wbGVCdWZmZXJHZXRGb3Jt
YXREZXNjcmlwdGlvbihvdXRfc2FtcGxlX2J1ZmZlcikpOworCisgIGNoYXIqIGRhdGFfcHRyID0g
bnVsbHB0cjsKKyAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja19idWZmZXIgPSBDTVNhbXBsZUJ1ZmZl
ckdldERhdGFCdWZmZXIob3V0X3NhbXBsZV9idWZmZXIpOworICBzaXplX3QgYmxvY2tfYnVmZmVy
X3NpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChibG9ja19idWZmZXIpOworICBDTUJs
b2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoYmxvY2tfYnVmZmVyLCAwLCBudWxscHRyLCBudWxscHRy
LCAmZGF0YV9wdHIpOworICBYQ1RBc3NlcnRFcXVhbChibG9ja19idWZmZXJfc2l6ZSwgYXJyYXlz
aXplKGFubmV4X2JfdGVzdF9kYXRhKSk7CisKKyAgaW50IGRhdGFfY29tcGFyaXNvbl9yZXN1bHQg
PQorICAgICAgbWVtY21wKGV4cGVjdGVkX2Ntc2FtcGxlX2RhdGEsIGRhdGFfcHRyLCBhcnJheXNp
emUoZXhwZWN0ZWRfY21zYW1wbGVfZGF0YSkpOworCisgIFhDVEFzc2VydEVxdWFsKDAsIGRhdGFf
Y29tcGFyaXNvbl9yZXN1bHQpOworCisgIGlmIChkZXNjcmlwdGlvbikgeworICAgIENGUmVsZWFz
ZShkZXNjcmlwdGlvbik7CisgICAgZGVzY3JpcHRpb24gPSBudWxscHRyOworICB9CisKKyAgQ01N
ZW1vcnlQb29sSW52YWxpZGF0ZShtZW1vcnlfcG9vbCk7CisgIENGUmVsZWFzZShtZW1vcnlfcG9v
bCk7Cit9CisKKy0gKHZvaWQpdGVzdEgyNjRDTVNhbXBsZUJ1ZmZlclRvQW5uZXhCQnVmZmVyIHsK
KyAgLy8gY2xhbmctZm9ybWF0IG9mZgorICBjb25zdCB1aW50OF90IGNtc2FtcGxlX2RhdGFbXSA9
IHsKKyAgICAweDAwLCAweDAwLCAweDAwLCAweDA0LAorICAgIDB4MDEsIDB4MDAsIDB4MDAsIDB4
RkYsIC8vIGZpcnN0IGNodW5rLCA0IGJ5dGVzCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwK
KyAgICAweEFBLCAweEZGfTsgLy8gc2Vjb25kIGNodW5rLCAyIGJ5dGVzCisKKyAgY29uc3QgdWlu
dDhfdCBleHBlY3RlZF9hbm5leF9iX2RhdGFbXSA9IHsKKyAgICAweDAwLCAweDAwLCAweDAwLCAw
eDAxLAorICAgIDB4MDEsIDB4MDAsIDB4MDAsIDB4RkYsIC8vIGZpcnN0IGNodW5rLCA0IGJ5dGVz
CisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweEFBLCAweEZGfTsgLy8gc2Vjb25k
IGNodW5rLCAyIGJ5dGVzCisgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgIHJ0Yzo6QnVmZmVyIGFu
bmV4Yl9idWZmZXIoYXJyYXlzaXplKGNtc2FtcGxlX2RhdGEpKTsKKyAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlcj4gb3V0X2hlYWRlcl9wdHI7CisgIENNU2Ft
cGxlQnVmZmVyUmVmIHNhbXBsZV9idWZmZXIgPQorICAgICAgW3NlbGYgY3JlYXRlQ01TYW1wbGVC
dWZmZXJSZWY6KHZvaWQqKWNtc2FtcGxlX2RhdGEgY21zYW1wbGVTaXplOmFycmF5c2l6ZShjbXNh
bXBsZV9kYXRhKV07CisKKyAgQm9vbGVhbiByZXN1bHQgPSB3ZWJydGM6OkgyNjRDTVNhbXBsZUJ1
ZmZlclRvQW5uZXhCQnVmZmVyKHNhbXBsZV9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpc19rZXlmcmFtZSAqLyBm
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZhbm5leGJfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9oZWFkZXJfcHRyKTsKKworICBYQ1RB
c3NlcnRUcnVlKHJlc3VsdCk7CisKKyAgWENUQXNzZXJ0RXF1YWwoYXJyYXlzaXplKGV4cGVjdGVk
X2FubmV4X2JfZGF0YSksIGFubmV4Yl9idWZmZXIuc2l6ZSgpKTsKKworICBpbnQgZGF0YV9jb21w
YXJpc29uX3Jlc3VsdCA9CisgICAgICBtZW1jbXAoZXhwZWN0ZWRfYW5uZXhfYl9kYXRhLCBhbm5l
eGJfYnVmZmVyLmRhdGEoKSwgYXJyYXlzaXplKGV4cGVjdGVkX2FubmV4X2JfZGF0YSkpOworCisg
IFhDVEFzc2VydEVxdWFsKDAsIGRhdGFfY29tcGFyaXNvbl9yZXN1bHQpOworCisgIHdlYnJ0Yzo6
UlRQRnJhZ21lbnRhdGlvbkhlYWRlciogb3V0X2hlYWRlciA9IG91dF9oZWFkZXJfcHRyLmdldCgp
OworCisgIFhDVEFzc2VydEVxdWFsKDIsIChpbnQpb3V0X2hlYWRlci0+U2l6ZSgpKTsKKworICBY
Q1RBc3NlcnRFcXVhbCg0LCAoaW50KW91dF9oZWFkZXItPk9mZnNldCgwKSk7CisgIFhDVEFzc2Vy
dEVxdWFsKDQsIChpbnQpb3V0X2hlYWRlci0+TGVuZ3RoKDApKTsKKyAgWENUQXNzZXJ0RXF1YWwo
MCwgKGludClvdXRfaGVhZGVyLT5UaW1lRGlmZigwKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChp
bnQpb3V0X2hlYWRlci0+UGF5bG9hZFR5cGUoMCkpOworCisgIFhDVEFzc2VydEVxdWFsKDEyLCAo
aW50KW91dF9oZWFkZXItPk9mZnNldCgxKSk7CisgIFhDVEFzc2VydEVxdWFsKDIsIChpbnQpb3V0
X2hlYWRlci0+TGVuZ3RoKDEpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMCwgKGludClvdXRfaGVhZGVy
LT5UaW1lRGlmZigxKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+UGF5
bG9hZFR5cGUoMSkpOworfQorCistICh2b2lkKXRlc3RIMjY0Q01TYW1wbGVCdWZmZXJUb0FubmV4
QkJ1ZmZlcldpdGhLZXlmcmFtZSB7CisgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgY29uc3QgdWlu
dDhfdCBjbXNhbXBsZV9kYXRhW10gPSB7CisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwKKyAg
ICAweDAxLCAweDAwLCAweDAwLCAweEZGLCAvLyBmaXJzdCBjaHVuaywgNCBieXRlcworICAgIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisgICAgMHhBQSwgMHhGRn07IC8vIHNlY29uZCBjaHVuaywg
MiBieXRlcworCisgIGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRfYW5uZXhfYl9kYXRhW10gPSB7Cisg
ICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweDAxLCAweDAwLCAweDAwLCAweEZGLCAv
LyBmaXJzdCBjaHVuaywgNCBieXRlcworICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisgICAg
MHhBQSwgMHhGRn07IC8vIHNlY29uZCBjaHVuaywgMiBieXRlcworICAvLyBjbGFuZy1mb3JtYXQg
b24KKworICBydGM6OkJ1ZmZlciBhbm5leGJfYnVmZmVyKGFycmF5c2l6ZShjbXNhbXBsZV9kYXRh
KSk7CisgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXI+IG91
dF9oZWFkZXJfcHRyOworICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVfYnVmZmVyID0KKyAgICAg
IFtzZWxmIGNyZWF0ZUNNU2FtcGxlQnVmZmVyUmVmOih2b2lkKiljbXNhbXBsZV9kYXRhIGNtc2Ft
cGxlU2l6ZTphcnJheXNpemUoY21zYW1wbGVfZGF0YSldOworCisgIEJvb2xlYW4gcmVzdWx0ID0g
d2VicnRjOjpIMjY0Q01TYW1wbGVCdWZmZXJUb0FubmV4QkJ1ZmZlcihzYW1wbGVfYnVmZmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogaXNfa2V5ZnJhbWUgKi8gdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhbm5leGJfYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9o
ZWFkZXJfcHRyKTsKKworICBYQ1RBc3NlcnRUcnVlKHJlc3VsdCk7CisKKyAgWENUQXNzZXJ0RXF1
YWwoYXJyYXlzaXplKFNQU19QUFNfQlVGRkVSKSArIGFycmF5c2l6ZShleHBlY3RlZF9hbm5leF9i
X2RhdGEpLAorICAgICAgICAgICAgICAgICBhbm5leGJfYnVmZmVyLnNpemUoKSk7CisKKyAgWENU
QXNzZXJ0RXF1YWwoMCwgbWVtY21wKFNQU19QUFNfQlVGRkVSLCBhbm5leGJfYnVmZmVyLmRhdGEo
KSwgYXJyYXlzaXplKFNQU19QUFNfQlVGRkVSKSkpOworCisgIFhDVEFzc2VydEVxdWFsKDAsCisg
ICAgICAgICAgICAgICAgIG1lbWNtcChleHBlY3RlZF9hbm5leF9iX2RhdGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICBhbm5leGJfYnVmZmVyLmRhdGEoKSArIGFycmF5c2l6ZShTUFNfUFBTX0JV
RkZFUiksCisgICAgICAgICAgICAgICAgICAgICAgICBhcnJheXNpemUoZXhwZWN0ZWRfYW5uZXhf
Yl9kYXRhKSkpOworCisgIHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlciogb3V0X2hlYWRl
ciA9IG91dF9oZWFkZXJfcHRyLmdldCgpOworCisgIFhDVEFzc2VydEVxdWFsKDQsIChpbnQpb3V0
X2hlYWRlci0+U2l6ZSgpKTsKKworICBYQ1RBc3NlcnRFcXVhbCg0LCAoaW50KW91dF9oZWFkZXIt
Pk9mZnNldCgwKSk7CisgIFhDVEFzc2VydEVxdWFsKDE0LCAoaW50KW91dF9oZWFkZXItPkxlbmd0
aCgwKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+VGltZURpZmYoMCkp
OworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFkZXItPlBheWxvYWRUeXBlKDApKTsK
KworICBYQ1RBc3NlcnRFcXVhbCgyMiwgKGludClvdXRfaGVhZGVyLT5PZmZzZXQoMSkpOworICBY
Q1RBc3NlcnRFcXVhbCg0LCAoaW50KW91dF9oZWFkZXItPkxlbmd0aCgxKSk7CisgIFhDVEFzc2Vy
dEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+VGltZURpZmYoMSkpOworICBYQ1RBc3NlcnRFcXVh
bCgwLCAoaW50KW91dF9oZWFkZXItPlBheWxvYWRUeXBlKDEpKTsKKworICBYQ1RBc3NlcnRFcXVh
bCgzMCwgKGludClvdXRfaGVhZGVyLT5PZmZzZXQoMikpOworICBYQ1RBc3NlcnRFcXVhbCg0LCAo
aW50KW91dF9oZWFkZXItPkxlbmd0aCgyKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0
X2hlYWRlci0+VGltZURpZmYoMikpOworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFk
ZXItPlBheWxvYWRUeXBlKDIpKTsKKworICBYQ1RBc3NlcnRFcXVhbCgzOCwgKGludClvdXRfaGVh
ZGVyLT5PZmZzZXQoMykpOworICBYQ1RBc3NlcnRFcXVhbCgyLCAoaW50KW91dF9oZWFkZXItPkxl
bmd0aCgzKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+VGltZURpZmYo
MykpOworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFkZXItPlBheWxvYWRUeXBlKDMp
KTsKK30KKworLSAoQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKWNyZWF0ZURlc2NyaXB0aW9u
IHsKKyAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2NyaXB0aW9uID0KKyAgICAgIHdl
YnJ0Yzo6Q3JlYXRlVmlkZW9Gb3JtYXREZXNjcmlwdGlvbihTUFNfUFBTX0JVRkZFUiwgYXJyYXlz
aXplKFNQU19QUFNfQlVGRkVSKSk7CisgIFhDVEFzc2VydFRydWUoZGVzY3JpcHRpb24pOworICBy
ZXR1cm4gZGVzY3JpcHRpb247Cit9CisKKy0gKENNU2FtcGxlQnVmZmVyUmVmKWNyZWF0ZUNNU2Ft
cGxlQnVmZmVyUmVmOih2b2lkKiljbXNhbXBsZURhdGEgY21zYW1wbGVTaXplOihzaXplX3QpY21z
YW1wbGVTaXplIHsKKyAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlX2J1ZmZlciA9IG5pbDsKKyAg
T1NTdGF0dXMgc3RhdHVzOworCisgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjcmlw
dGlvbiA9IFtzZWxmIGNyZWF0ZURlc2NyaXB0aW9uXTsKKyAgQ01CbG9ja0J1ZmZlclJlZiBibG9j
a19idWZmZXIgPSBudWxscHRyOworCisgIHN0YXR1cyA9IENNQmxvY2tCdWZmZXJDcmVhdGVXaXRo
TWVtb3J5QmxvY2sobnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbXNhbXBsZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY21zYW1wbGVTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNtc2FtcGxlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0ZsYWcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsb2NrX2J1ZmZlcik7CisK
KyAgc3RhdHVzID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUobnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmxvY2tfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNhbXBsZV9idWZmZXIpOworCisgIHJldHVybiBz
YW1wbGVfYnVmZmVyOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvb2JqY192aWRlb19lbmNv
ZGVyX2ZhY3RvcnlfdGVzdHMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnlfdGVz
dHMubW0KaW5kZXggZDAwOWQ1MWJiYTMxNTQ1NDdjMmJjMTRlZWQyY2FmNjMwNjYyNjViMC4uNTBj
MzBjMGM3NDQyNzUzMzcxNjA3YTAxZmIwZmU1ZGVlYTJmZTlmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL29i
amNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5X3Rlc3RzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9vYmpjX3ZpZGVvX2Vu
Y29kZXJfZmFjdG9yeV90ZXN0cy5tbQpAQCAtODIsNyArODIsNiBAQCBURVNUKE9iakNWaWRlb0Vu
Y29kZXJGYWN0b3J5VGVzdCwgRW5jb2RlUmV0dXJuc09LT25TdWNjZXNzKSB7CiAgIHdlYnJ0Yzo6
VmlkZW9GcmFtZSBmcmFtZShidWZmZXIsIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCwgMCk7CiAg
IHdlYnJ0Yzo6Q29kZWNTcGVjaWZpY0luZm8gaW5mbzsKICAgaW5mby5jb2RlY1R5cGUgPSB3ZWJy
dGM6OmtWaWRlb0NvZGVjSDI2NDsKLSAgaW5mby5jb2RlY19uYW1lID0gIkgyNjQiOwogICBzdGQ6
OnZlY3Rvcjx3ZWJydGM6OkZyYW1lVHlwZT4gZnJhbWVfdHlwZXM7CiAKICAgRVhQRUNUX0VRKGVu
Y29kZXItPkVuY29kZShmcmFtZSwgJmluZm8sICZmcmFtZV90eXBlcyksIFdFQlJUQ19WSURFT19D
T0RFQ19PSyk7CkBAIC05OSw3ICs5OCw2IEBAIFRFU1QoT2JqQ1ZpZGVvRW5jb2RlckZhY3RvcnlU
ZXN0LCBFbmNvZGVSZXR1cm5zRXJyb3JPbkZhaWwpIHsKICAgd2VicnRjOjpWaWRlb0ZyYW1lIGZy
YW1lKGJ1ZmZlciwgd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wLCAwKTsKICAgd2VicnRjOjpDb2Rl
Y1NwZWNpZmljSW5mbyBpbmZvOwogICBpbmZvLmNvZGVjVHlwZSA9IHdlYnJ0Yzo6a1ZpZGVvQ29k
ZWNIMjY0OwotICBpbmZvLmNvZGVjX25hbWUgPSAiSDI2NCI7CiAgIHN0ZDo6dmVjdG9yPHdlYnJ0
Yzo6RnJhbWVUeXBlPiBmcmFtZV90eXBlczsKIAogICBFWFBFQ1RfRVEoZW5jb2Rlci0+RW5jb2Rl
KGZyYW1lLCAmaW5mbywgJmZyYW1lX3R5cGVzKSwgV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SKTsK
QEAgLTExNywxMiArMTE1LDYgQEAgVEVTVChPYmpDVmlkZW9FbmNvZGVyRmFjdG9yeVRlc3QsIFJl
bGVhc2VFbmNvZGVSZXR1cm5zRXJyb3JPbkZhaWwpIHsKICAgRVhQRUNUX0VRKGVuY29kZXItPlJl
bGVhc2UoKSwgV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SKTsKIH0KIAotVEVTVChPYmpDVmlkZW9F
bmNvZGVyRmFjdG9yeVRlc3QsIFNldENoYW5uZWxQYXJhbWV0ZXJzQWx3YXlzUmV0dXJuc09LKSB7
Ci0gIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rlcj4gZW5jb2RlciA9IEdldE9i
akNFbmNvZGVyKENyZWF0ZUVycm9yRW5jb2RlckZhY3RvcnkoKSk7Ci0KLSAgRVhQRUNUX0VRKGVu
Y29kZXItPlNldENoYW5uZWxQYXJhbWV0ZXJzKDEsIDEpLCBXRUJSVENfVklERU9fQ09ERUNfT0sp
OwotfQotCiBURVNUKE9iakNWaWRlb0VuY29kZXJGYWN0b3J5VGVzdCwgU2V0UmF0ZXNSZXR1cm5z
T0tPblN1Y2Nlc3MpIHsKICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyPiBl
bmNvZGVyID0gR2V0T2JqQ0VuY29kZXIoQ3JlYXRlT0tFbmNvZGVyRmFjdG9yeSgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3RhdHMv
QlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0
cy9CVUlMRC5nbgppbmRleCBkZTMwMGYxOGNmMmZhZjNiOTRiNmY1OTAwZmVkNWY3YmJkMTUyNzc4
Li5jNjdhNWJlMzY1NGRlNjIyNDQ0MmVhMTNmOTU0OGE3MGNjMzU1OGY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy9CVUlMRC5nbgor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy9CVUlM
RC5nbgpAQCAtNDAsNiArNDAsNyBAQCBydGNfc291cmNlX3NldCgicnRjX3N0YXRzX3Rlc3RfdXRp
bHMiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjpydGNfc3RhdHMiLAogICAgICIuLi9hcGk6cnRjX3N0
YXRzX2FwaSIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgXQogfQog
CkBAIC01Niw5ICs1Nyw5IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpydGNf
c3RhdHNfdGVzdF91dGlscyIsCiAgICAgICAiLi4vYXBpOnJ0Y19zdGF0c19hcGkiLAogICAgICAg
Ii4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIs
CiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uL3J0Y19i
YXNlOnJ0Y19iYXNlX3Rlc3RzX21haW4iLAotICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rl
c3RzX3V0aWxzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfanNvbiIsCiAgICAgXQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy9y
dGNzdGF0c19vYmplY3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc3RhdHMvcnRjc3RhdHNfb2JqZWN0cy5jYwppbmRleCBkY2MxMTgwZjE2ZjEwZmZjMjg1
YWRiZmU2NzAyZjE2NmM3MWVhODUxLi5jZDUyYTU1OTcxYmViYTNlZmZmNjkwNTdhYWUyZTYyMDZm
ZDU3MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zdGF0cy9ydGNzdGF0c19vYmplY3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0YXRzL3J0Y3N0YXRzX29iamVjdHMuY2MKQEAgLTM3NCw3
ICszNzQsOSBAQCBXRUJSVENfUlRDU1RBVFNfSU1QTChSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHMs
IFJUQ1N0YXRzLCAidHJhY2siLAogICAgICAgICAgICAgICAgICAgICAgJnRvdGFsX3NhbXBsZXNf
cmVjZWl2ZWQsCiAgICAgICAgICAgICAgICAgICAgICAmdG90YWxfc2FtcGxlc19kdXJhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICZjb25jZWFsZWRfc2FtcGxlcywKLSAgICAgICAgICAgICAg
ICAgICAgICZjb25jZWFsbWVudF9ldmVudHMpOworICAgICAgICAgICAgICAgICAgICAgJmNvbmNl
YWxtZW50X2V2ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICZqaXR0ZXJfYnVmZmVyX2ZsdXNo
ZXMsCisgICAgICAgICAgICAgICAgICAgICAmZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMp
OwogLy8gY2xhbmctZm9ybWF0IG9uCiAKIFJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0czo6UlRDTWVk
aWFTdHJlYW1UcmFja1N0YXRzKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwKQEAgLTQxMCw3ICs0MTIs
OSBAQCBSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHM6OlJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyhz
dGQ6OnN0cmluZyYmIGlkLAogICAgICAgdG90YWxfc2FtcGxlc19yZWNlaXZlZCgidG90YWxTYW1w
bGVzUmVjZWl2ZWQiKSwKICAgICAgIHRvdGFsX3NhbXBsZXNfZHVyYXRpb24oInRvdGFsU2FtcGxl
c0R1cmF0aW9uIiksCiAgICAgICBjb25jZWFsZWRfc2FtcGxlcygiY29uY2VhbGVkU2FtcGxlcyIp
LAotICAgICAgY29uY2VhbG1lbnRfZXZlbnRzKCJjb25jZWFsbWVudEV2ZW50cyIpIHsKKyAgICAg
IGNvbmNlYWxtZW50X2V2ZW50cygiY29uY2VhbG1lbnRFdmVudHMiKSwKKyAgICAgIGppdHRlcl9i
dWZmZXJfZmx1c2hlcygiaml0dGVyQnVmZmVyRmx1c2hlcyIpLAorICAgICAgZGVsYXllZF9wYWNr
ZXRfb3V0YWdlX3NhbXBsZXMoImRlbGF5ZWRQYWNrZXRPdXRhZ2VTYW1wbGVzIikgewogICBSVENf
RENIRUNLKGtpbmQgPT0gUlRDTWVkaWFTdHJlYW1UcmFja0tpbmQ6OmtBdWRpbyB8fAogICAgICAg
ICAgICAgIGtpbmQgPT0gUlRDTWVkaWFTdHJlYW1UcmFja0tpbmQ6OmtWaWRlbyk7CiB9CkBAIC00
NDIsNyArNDQ2LDkgQEAgUlRDTWVkaWFTdHJlYW1UcmFja1N0YXRzOjpSVENNZWRpYVN0cmVhbVRy
YWNrU3RhdHMoCiAgICAgICB0b3RhbF9zYW1wbGVzX3JlY2VpdmVkKG90aGVyLnRvdGFsX3NhbXBs
ZXNfcmVjZWl2ZWQpLAogICAgICAgdG90YWxfc2FtcGxlc19kdXJhdGlvbihvdGhlci50b3RhbF9z
YW1wbGVzX2R1cmF0aW9uKSwKICAgICAgIGNvbmNlYWxlZF9zYW1wbGVzKG90aGVyLmNvbmNlYWxl
ZF9zYW1wbGVzKSwKLSAgICAgIGNvbmNlYWxtZW50X2V2ZW50cyhvdGhlci5jb25jZWFsbWVudF9l
dmVudHMpIHt9CisgICAgICBjb25jZWFsbWVudF9ldmVudHMob3RoZXIuY29uY2VhbG1lbnRfZXZl
bnRzKSwKKyAgICAgIGppdHRlcl9idWZmZXJfZmx1c2hlcyhvdGhlci5qaXR0ZXJfYnVmZmVyX2Zs
dXNoZXMpLAorICAgICAgZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMob3RoZXIuZGVsYXll
ZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMpIHt9CiAKIFJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0czo6
flJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cygpIHt9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0YXRzL3Rlc3QvcnRjdGVzdHN0YXRzLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy90ZXN0L3J0
Y3Rlc3RzdGF0cy5oCmluZGV4IDdjOGUxMDUxZmYxMGFjZTQ1NjhjMjU3NDlhOTJkNzk2YmJjYWQ4
YTUuLmE3ZDJjOTFkYTA2MWQyNDUyMjUxYjg2MGZmMDJjMGE1ZDEyOWM3YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0YXRzL3Rlc3QvcnRj
dGVzdHN0YXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc3RhdHMvdGVzdC9ydGN0ZXN0c3RhdHMuaApAQCAtMTUsMTAgKzE1LDExIEBACiAjaW5jbHVk
ZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL3N0YXRzL3J0Y3N0YXRzLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNs
YXNzIFJUQ1Rlc3RTdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJU
Q1Rlc3RTdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RB
VFNfREVDTCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zdHlsZS1ndWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3N0eWxlLWd1aWRlLm1kCmluZGV4IDJhMzVmZGM1ZDFhNDc2ZWQ3NTY5MmUy
MTAxNDgxZTM2NzY4M2U3YWIuLjM5MWM0NWI2NDRkMDQxYTg5NDI0MDFhZDNkZWJkNmRlODQxNjFj
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3N0eWxlLWd1aWRlLm1kCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3N0eWxlLWd1aWRlLm1kCkBAIC03Nyw2ICs3NywxOCBAQCBpbnN0ZWFkIG9mICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHVzZQogCiBTZWUgW3RoZSBzb3VyY2VdKGFwaS9hcnJheV92
aWV3LmgpIGZvciBtb3JlIGRldGFpbGVkIGRvY3MuCiAKKyMjIyBgYWJzbDo6b3B0aW9uYWw8VD5g
IGFzIGZ1bmN0aW9uIGFyZ3VtZW50CisKK2BhYnNsOjpvcHRpb25hbDxUPmAgaXMgZ2VuZXJhbGx5
IGEgZ29vZCBjaG9pY2Ugd2hlbiB5b3Ugd2FudCB0byBwYXNzIGEKK3Bvc3NpYmx5IG1pc3Npbmcg
YFRgIHRvIGEgZnVuY3Rpb24mbWRhc2g7cHJvdmlkZWQgb2YgY291cnNlIHRoYXQgYFRgCitpcyBh
IHR5cGUgdGhhdCBpdCBtYWtlcyBzZW5zZSB0byBwYXNzIGJ5IHZhbHVlLgorCitIb3dldmVyLCB3
aGVuIHlvdSB3YW50IHRvIGF2b2lkIHBhc3MtYnktdmFsdWUsIGdlbmVyYWxseSAqKmRvIG5vdCBw
YXNzCitgY29uc3QgYWJzbDo6b3B0aW9uYWw8VD4mYDsgdXNlIGBjb25zdCBUKmAgaW5zdGVhZC4q
KiBgY29uc3QKK2Fic2w6Om9wdGlvbmFsPFQ+JmAgZm9yY2VzIHRoZSBjYWxsZXIgdG8gc3RvcmUg
dGhlIGBUYCBpbiBhbgorYGFic2w6Om9wdGlvbmFsPFQ+YDsgYGNvbnN0IFQqYCwgb24gdGhlIG90
aGVyIGhhbmQsIG1ha2VzIG5vCithc3N1bXB0aW9ucyBhYm91dCBob3cgdGhlIGBUYCBpcyBzdG9y
ZWQuCisKICMjIyBzaWdzbG90CiAKIHNpZ3Nsb3QgaXMgYSBsaWdodHdlaWdodCBsaWJyYXJ5IHRo
YXQgYWRkcyBhIHNpZ25hbC9zbG90IGxhbmd1YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMv
QlVJTEQuZ24KaW5kZXggZWI2MDA1MjI2NTkzYjRlZWE0NGIxOWZkOTRhZmU4MzBiODM5MWRiYy4u
ZGE4M2QxMmU4ZGIxOTE5NDI4YTQ5MzkxYWIxMTQ2YTQwZjhlZjNiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL0JV
SUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5
c3RlbV93cmFwcGVycy9CVUlMRC5nbgpAQCAtMzMsNyArMzMsNyBAQCBydGNfc3RhdGljX2xpYnJh
cnkoInN5c3RlbV93cmFwcGVycyIpIHsKICAgbGlicyA9IFtdCiAgIGRlcHMgPSBbCiAgICAgIjpj
cHVfZmVhdHVyZXNfYXBpIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uL2FwaTph
cnJheV92aWV3IiwKICAgICAiLi4vbW9kdWxlczptb2R1bGVfYXBpX3B1YmxpYyIsCiAgICAgIi4u
L3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlL3N5bmNocm9uaXphdGlvbjpyd19s
b2NrX3dyYXBwZXIiLApAQCAtODksOSArODksNiBAQCBydGNfc291cmNlX3NldCgiY3B1X2ZlYXR1
cmVzX2FwaSIpIHsKICAgc291cmNlcyA9IFsKICAgICAiaW5jbHVkZS9jcHVfZmVhdHVyZXNfd3Jh
cHBlci5oIiwKICAgXQotICBkZXBzID0gWwotICAgICIuLjp3ZWJydGNfY29tbW9uIiwKLSAgXQog
fQogCiBydGNfc291cmNlX3NldCgiZmllbGRfdHJpYWwiKSB7CkBAIC0xMDUsNiArMTAyLDE2IEBA
IHJ0Y19zb3VyY2Vfc2V0KCJmaWVsZF90cmlhbCIpIHsKICAgaWYgKHJ0Y19leGNsdWRlX2ZpZWxk
X3RyaWFsX2RlZmF1bHQpIHsKICAgICBkZWZpbmVzID0gWyAiV0VCUlRDX0VYQ0xVREVfRklFTERf
VFJJQUxfREVGQVVMVCIgXQogICB9CisgIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CisgICAg
IyBXaGVuIFdlYlJUQyBpcyBidWlsdCBhcyBwYXJ0IG9mIENocm9taXVtIGl0IHNob3VsZCBleGNs
dWRlIHRoZSBkZWZhdWx0CisgICAgIyBpbXBsZW1lbnRhdGlvbiBvZiBmaWVsZF90cmlhbCB1bmxl
c3MgaXQgaXMgYnVpbGRpbmcgZm9yIE5BQ0wgb3IKKyAgICAjIENocm9tZWNhc3QuCisgICAgaWYg
KCFpc19uYWNsICYmICFpc19jaHJvbWVjYXN0KSB7CisgICAgICBkZXBzID0gWworICAgICAgICAi
Li4vLi4vd2VicnRjX292ZXJyaWRlczpmaWVsZF90cmlhbCIsCisgICAgICBdCisgICAgfQorICB9
CiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJtZXRyaWNzIikgewpAQCAtMTIzLDYgKzEzMCw5IEBAIHJ0
Y19zb3VyY2Vfc2V0KCJtZXRyaWNzIikgewogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAg
ICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgIF0KKyAgaWYgKGJ1aWxkX3dpdGhf
Y2hyb21pdW0pIHsKKyAgICBkZXBzICs9IFsgIi4uLy4uL3dlYnJ0Y19vdmVycmlkZXM6bWV0cmlj
cyIgXQorICB9CiB9CiAKIGlmIChpc19hbmRyb2lkICYmICFidWlsZF93aXRoX21vemlsbGEpIHsK
QEAgLTE2Niw2ICsxNzYsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLjp3
ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAg
ICAgICAiLi4vdGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwK
ICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgIF0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL09XTkVSUyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVy
cy9PV05FUlMKaW5kZXggMTNiMDhhMzZlZjhmNDgyYjQ5YjZhZmYyYTI4NGFmMGQzMTAyNzVmZC4u
YTA4ZjYxMTRiOTI3NWRmMTJkZTQ1YzE1ZWZlZjI0ZmVmOTlkODNkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL09X
TkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0
ZW1fd3JhcHBlcnMvT1dORVJTCkBAIC0yLDcgKzIsNiBAQCBoZW5yaWthQHdlYnJ0Yy5vcmcKIG1m
bG9kbWFuQHdlYnJ0Yy5vcmcKIG5pa2xhcy5lbmJvbUB3ZWJydGMub3JnCiBuaXNzZUB3ZWJydGMu
b3JnCi1wZXJrakB3ZWJydGMub3JnCiAKICMgVGhlc2UgYXJlIGZvciB0aGUgY29tbW9uIGNhc2Ug
b2YgYWRkaW5nIG9yIHJlbmFtaW5nIGZpbGVzLiBJZiB5b3UncmUgZG9pbmcKICMgc3RydWN0dXJh
bCBjaGFuZ2VzLCBwbGVhc2UgZ2V0IGEgcmV2aWV3IGZyb20gYSByZXZpZXdlciBpbiB0aGlzIGZp
bGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaAppbmRl
eCA0YjZlYWI4ZWRjZWJlNTk4YTNiOGRjYWQ4MzA4MWFiMjQzYjJmMmM1Li5mMWZjMTFmMTcyOThl
ODc2MmM5M2NjYmRjNjg0NjA0M2EyMWIxNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93
cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgU1lTVEVN
X1dSQVBQRVJTX0lOQ0xVREVfQ0xPQ0tfSF8KICNkZWZpbmUgU1lTVEVNX1dSQVBQRVJTX0lOQ0xV
REVfQ0xPQ0tfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAog
I2luY2x1ZGUgInJ0Y19iYXNlL3N5bmNocm9uaXphdGlvbi9yd19sb2NrX3dyYXBwZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBw
ZXIuaAppbmRleCAwNTMxZGRiNTYzOGJlMGVjZTg0NTZlOThmNmMzZjQyMWQ1OWY1NzBlLi45ODll
NzkyOWIzOWEwODE4MjMwMTExMGFlNGYyYjUyMmY5OTFiNGViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVk
ZS9ldmVudF93cmFwcGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oCkBAIC0xMiwx
MSArMTIsNyBAQAogI2RlZmluZSBTWVNURU1fV1JBUFBFUlNfSU5DTFVERV9FVkVOVF9XUkFQUEVS
X0hfCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotZW51bSBFdmVudFR5cGVXcmFwcGVyIHsKLSAga0V2
ZW50U2lnbmFsZWQgPSAxLAotICBrRXZlbnRFcnJvciA9IDIsCi0gIGtFdmVudFRpbWVvdXQgPSAz
Ci19OworZW51bSBFdmVudFR5cGVXcmFwcGVyIHsga0V2ZW50U2lnbmFsZWQgPSAxLCBrRXZlbnRU
aW1lb3V0ID0gMiB9OwogCiAjZGVmaW5lIFdFQlJUQ19FVkVOVF9JTkZJTklURSAweGZmZmZmZmZm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaApp
bmRleCAyYTJjZGEwMmQwM2Y1OWEzNGQ2MjEwODhlYThlYTljMDZjNDU1MDEyLi5mMDBlY2YyNjIy
YWVmZDgxNzcxNzA4NmI2M2FiNGViNGQ5YjMzOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRy
aWNzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oCkBAIC0xNSw3ICsxNSw2IEBACiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3Bz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRl
L3J0cF90b19udHBfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ydHBfdG9fbnRwX2VzdGltYXRvci5o
CmluZGV4IGQ3MDA5ZDhiMWY0NTA0ZGI1ZDcyODNiZmE3OWQ5MmUyODg5ZjQ0NWMuLmMyNDRjNGZm
Mjc0NTIwOWJmZDQ4ZWM0NWQ5YzhiNjQzNGFlZmNlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL3J0
cF90b19udHBfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvcnRwX3RvX250cF9lc3RpbWF0b3Iu
aApAQCAtMTEsMTAgKzExLDEyIEBACiAjaWZuZGVmIFNZU1RFTV9XUkFQUEVSU19JTkNMVURFX1JU
UF9UT19OVFBfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIFNZU1RFTV9XUkFQUEVSU19JTkNMVURFX1JU
UF9UT19OVFBfRVNUSU1BVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxs
aXN0PgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL21vdmluZ19tZWRpYW5f
ZmlsdGVyLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbnRwX3RpbWUuaCIK
IApAQCAtNDAsMjMgKzQyLDEzIEBAIGNsYXNzIFJ0cFRvTnRwRXN0aW1hdG9yIHsKIAogICAvLyBF
c3RpbWF0ZWQgcGFyYW1ldGVycyBmcm9tIFJUUCBhbmQgTlRQIHRpbWVzdGFtcCBwYWlycyBpbiB8
bWVhc3VyZW1lbnRzX3wuCiAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKLSAgICAvLyBJbXBsaWNpdCBj
b252ZXJzaW9uIGZyb20gaW50IGJlY2F1c2UgTW92aW5nTWVkaWFuRmlsdGVyIHJldHVybnMgMAot
ICAgIC8vIGludGVybmFsbHkgaWYgbm8gc2FtcGxlcyBhcmUgcHJlc2VudC4gSG93ZXZlciwgaXQg
c2hvdWxkIG5ldmVyIGhhcHBlbiBhcwotICAgIC8vIHdlIGRvbid0IGFzayBzbW9vdGhpbmdfZmls
dGVyXyB0byByZXR1cm4gYW55dGhpbmcgaWYgdGhlcmUgd2VyZSBubwotICAgIC8vIHNhbXBsZXMu
Ci0gICAgUGFyYW1ldGVycyhjb25zdCBpbnQmIHZhbHVlKSB7ICAvLyBOT0xJTlQKLSAgICAgIFJU
Q19OT1RSRUFDSEVEKCk7Ci0gICAgfQogICAgIFBhcmFtZXRlcnMoKSA6IGZyZXF1ZW5jeV9raHoo
MC4wKSwgb2Zmc2V0X21zKDAuMCkge30KIAorICAgIFBhcmFtZXRlcnMoZG91YmxlIGZyZXF1ZW5j
eV9raHosIGRvdWJsZSBvZmZzZXRfbXMpCisgICAgICAgIDogZnJlcXVlbmN5X2toeihmcmVxdWVu
Y3lfa2h6KSwgb2Zmc2V0X21zKG9mZnNldF9tcykge30KKwogICAgIGRvdWJsZSBmcmVxdWVuY3lf
a2h6OwogICAgIGRvdWJsZSBvZmZzZXRfbXM7Ci0KLSAgICAvLyBOZWVkZWQgdG8gbWFrZSBpdCB3
b3JrIGluc2lkZSBNb3ZpbmdNZWRpYW5GaWx0ZXIKLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBQ
YXJhbWV0ZXJzJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhcmFt
ZXRlcnMmIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgUGFyYW1ldGVy
cyYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXJhbWV0ZXJzJiBv
dGhlcikgY29uc3Q7CiAgIH07CiAKICAgLy8gVXBkYXRlcyBtZWFzdXJlbWVudHMgd2l0aCBSVFAv
TlRQIHRpbWVzdGFtcCBwYWlyIGZyb20gYSBSVENQIHNlbmRlciByZXBvcnQuCkBAIC02OCw3ICs2
MCw3IEBAIGNsYXNzIFJ0cFRvTnRwRXN0aW1hdG9yIHsKIAogICAvLyBDb252ZXJ0cyBhbiBSVFAg
dGltZXN0YW1wIHRvIHRoZSBOVFAgZG9tYWluIGluIG1pbGxpc2Vjb25kcy4KICAgLy8gUmV0dXJu
cyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZS4KLSAgYm9vbCBFc3RpbWF0ZShpbnQ2
NF90IHJ0cF90aW1lc3RhbXAsIGludDY0X3QqIHJ0cF90aW1lc3RhbXBfbXMpIGNvbnN0OworICBi
b29sIEVzdGltYXRlKGludDY0X3QgcnRwX3RpbWVzdGFtcCwgaW50NjRfdCogbnRwX3RpbWVzdGFt
cF9tcykgY29uc3Q7CiAKICAgLy8gUmV0dXJucyBlc3RpbWF0ZWQgcnRwIHRvIG50cCBsaW5lYXIg
dHJhbnNmb3JtIHBhcmFtZXRlcnMuCiAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFBhcmFtZXRlcnM+
IHBhcmFtcygpIGNvbnN0OwpAQCAtODAsOCArNzIsNyBAQCBjbGFzcyBSdHBUb050cEVzdGltYXRv
ciB7CiAKICAgaW50IGNvbnNlY3V0aXZlX2ludmFsaWRfc2FtcGxlc187CiAgIHN0ZDo6bGlzdDxS
dGNwTWVhc3VyZW1lbnQ+IG1lYXN1cmVtZW50c187Ci0gIE1vdmluZ01lZGlhbkZpbHRlcjxQYXJh
bWV0ZXJzPiBzbW9vdGhpbmdfZmlsdGVyXzsKLSAgYm9vbCBwYXJhbXNfY2FsY3VsYXRlZF87Cisg
IGFic2w6Om9wdGlvbmFsPFBhcmFtZXRlcnM+IHBhcmFtc187CiAgIG11dGFibGUgVGltZXN0YW1w
VW53cmFwcGVyIHVud3JhcHBlcl87CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dy
YXBwZXJzL3NvdXJjZS9jbG9jay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvY2xvY2suY2MKaW5kZXggMzVhYjVmMDg3
ODM3OWVjZjU1YzViZWE4NWQ5ZjFhYzU2ZTMyMDM2ZC4uNGY1ZDljZmYxZjNhM2E3M2MzOWFiYjMy
YWRmNzcxM2RhOWIwZTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9jbG9jay5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291
cmNlL2Nsb2NrLmNjCkBAIC0xNyw2ICsxNyw4IEBACiAKICNpbmNsdWRlIDxtbXN5c3RlbS5oPgog
CisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisKICNlbGlmIGRlZmluZWQo
V0VCUlRDX1BPU0lYKQogCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KQEAgLTI0LDcgKzI2LDYgQEAK
IAogI2VuZGlmICAvLyBkZWZpbmVkKFdFQlJUQ19QT1NJWCkKIAotI2luY2x1ZGUgInJ0Y19iYXNl
L2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5bmNocm9uaXphdGlvbi9y
d19sb2NrX3dyYXBwZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVt
X3dyYXBwZXJzL3NvdXJjZS9ldmVudC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvZXZlbnQuY2MKaW5kZXggZDFkMmNk
YWZmMDc3Y2MzY2JiM2Q0YjI3Nzg0YjVhMmQxMzhjNWQ1ZS4uMGM0Y2UxMDE1N2MyMTYxMTE2OWRi
YmViNzNjZDA5MzE4ZDU5MDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9ldmVudC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMv
c291cmNlL2V2ZW50LmNjCkBAIC0xNCw5ICsxNCw2IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgog
I2VsaWYgZGVmaW5lZChXRUJSVENfTUFDKSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQogI2luY2x1
ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgotI2luY2x1ZGUg
PHB0aHJlYWQuaD4KLSNlbHNlCi0jaW5jbHVkZSA8cHRocmVhZC5oPgogI2VuZGlmCiAKICNpbmNs
dWRlICJydGNfYmFzZS9ldmVudC5oIgpAQCAtMjUsNyArMjIsNiBAQCBuYW1lc3BhY2Ugd2VicnRj
IHsKIAogY2xhc3MgRXZlbnRXcmFwcGVySW1wbCA6IHB1YmxpYyBFdmVudFdyYXBwZXIgewogIHB1
YmxpYzoKLSAgRXZlbnRXcmFwcGVySW1wbCgpIDogZXZlbnRfKGZhbHNlLCBmYWxzZSkge30KICAg
fkV2ZW50V3JhcHBlckltcGwoKSBvdmVycmlkZSB7fQogCiAgIGJvb2wgU2V0KCkgb3ZlcnJpZGUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9maWVsZF90cmlhbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvZmllbGRfdHJp
YWwuY2MKaW5kZXggNjAxNThmNDg4NjViYzUxYWFmZDdhMzcxMzIzNTI0YWI1YzJmZWFiMy4uYWM3
MTMxMTQ0YWVmMmI5NzEzNTAwZmMzNjNmYTQ5YmMzNjE3NTllMyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJj
ZS9maWVsZF90cmlhbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL2ZpZWxkX3RyaWFsLmNjCkBAIC05LDYgKzks
NyBAQAogCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIK
IAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAogLy8gU2ltcGxlIGZp
ZWxkIHRyaWFsIGltcGxlbWVudGF0aW9uLCB3aGljaCBhbGxvd3MgY2xpZW50IHRvCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3Jh
cHBlcnMvc291cmNlL3J0cF90b19udHBfZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9ydHBfdG9fbnRw
X2VzdGltYXRvci5jYwppbmRleCA3MzBjNGY2NjkxZmNjYzE0ZGNmMjQwMDQxY2IyNDBmZDFmMjM1
MDAyLi40YmJmNjA5NmQ5MGM1Y2MxNjRjN2ViNGM3NmY4M2IzYjkwZmU0NTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBl
cnMvc291cmNlL3J0cF90b19udHBfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvcnRwX3RvX250
cF9lc3RpbWF0b3IuY2MKQEAgLTEwLDMwICsxMCwyMyBAQAogCiAjaW5jbHVkZSAic3lzdGVtX3dy
YXBwZXJzL2luY2x1ZGUvcnRwX3RvX250cF9lc3RpbWF0b3IuaCIKIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFw
aS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Ns
b2NrLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKLS8vIE51bWJlciBvZiBS
VENQIFNSIHJlcG9ydHMgdG8gdXNlIHRvIG1hcCBiZXR3ZWVuIFJUUCBhbmQgTlRQLgotY29uc3Qg
c2l6ZV90IGtOdW1SdGNwUmVwb3J0c1RvVXNlID0gMjsKLS8vIE51bWJlciBvZiBwYXJhbWV0ZXJz
IHNhbXBsZXMgdXNlZCB0byBzbW9vdGguCi1jb25zdCBzaXplX3Qga051bVNhbXBsZXNUb1Ntb290
aCA9IDIwOwotCi0vLyBDYWxjdWxhdGVzIHRoZSBSVFAgdGltZXN0YW1wIGZyZXF1ZW5jeSBmcm9t
IHR3byBwYWlycyBvZiBOVFAvUlRQIHRpbWVzdGFtcHMuCi1ib29sIENhbGN1bGF0ZUZyZXF1ZW5j
eShpbnQ2NF90IG50cF9tczEsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBydHBf
dGltZXN0YW1wMSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgbnRwX21zMiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJ0cF90aW1lc3RhbXAyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlKiBmcmVxdWVuY3lfa2h6KSB7Ci0gIGlmIChudHBfbXMxIDw9
IG50cF9tczIpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gICpmcmVxdWVuY3lfa2h6ID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihydHBfdGltZXN0YW1wMSAtIHJ0cF90aW1lc3RhbXAyKSAvCi0gICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihudHBfbXMxIC0gbnRwX21zMik7Ci0gIHJl
dHVybiB0cnVlOwotfQorLy8gTWF4aW11bSBudW1iZXIgb2YgUlRDUCBTUiByZXBvcnRzIHRvIHVz
ZSB0byBtYXAgYmV0d2VlbiBSVFAgYW5kIE5UUC4KK2NvbnN0IHNpemVfdCBrTnVtUnRjcFJlcG9y
dHNUb1VzZSA9IDIwOworLy8gRG9uJ3QgYWxsb3cgTlRQIHRpbWVzdGFtcHMgdG8ganVtcCBtb3Jl
IHRoYW4gMSBob3VyLiBDaG9zZW4gYXJiaXRyYXJ5IGFzIGJpZworLy8gZW5vdWdoIHRvIG5vdCBh
ZmZlY3Qgbm9ybWFsIHVzZS1jYXNlcy4gWWV0IGl0IGlzIHNtYWxsZXIgdGhhbiBSVFAgd3JhcC1h
cm91bmQKKy8vIGhhbGYtcGVyaW9kICg5MGtoeiBSVFAgY2xvY2sgd3JhcC1hcm91bmRzIGV2ZXJ5
IDEzLjI1IGhvdXJzKS4gQWZ0ZXIgaGFsZiBvZgorLy8gd3JhcC1hcm91bmQgcGVyaW9kIGl0IGlz
IGltcG9zc2libGUgdG8gdW53cmFwIFJUUCB0aW1lc3RhbXBzIGNvcnJlY3RseS4KK2NvbnN0IGlu
dCBrTWF4QWxsb3dlZFJ0Y3BOdHBJbnRlcnZhbE1zID0gNjAgKiA2MCAqIDEwMDA7CiAKIGJvb2wg
Q29udGFpbnMoY29uc3Qgc3RkOjpsaXN0PFJ0cFRvTnRwRXN0aW1hdG9yOjpSdGNwTWVhc3VyZW1l
bnQ+JiBtZWFzdXJlbWVudHMsCiAgICAgICAgICAgICAgIGNvbnN0IFJ0cFRvTnRwRXN0aW1hdG9y
OjpSdGNwTWVhc3VyZW1lbnQmIG90aGVyKSB7CkBAIC00MywyOSArMzYsNDcgQEAgYm9vbCBDb250
YWlucyhjb25zdCBzdGQ6Omxpc3Q8UnRwVG9OdHBFc3RpbWF0b3I6OlJ0Y3BNZWFzdXJlbWVudD4m
IG1lYXN1cmVtZW50cywKICAgfQogICByZXR1cm4gZmFsc2U7CiB9Ci19ICAvLyBuYW1lc3BhY2UK
IAotYm9vbCBSdHBUb050cEVzdGltYXRvcjo6UGFyYW1ldGVyczo6b3BlcmF0b3I8KGNvbnN0IFBh
cmFtZXRlcnMmIG90aGVyKSBjb25zdCB7Ci0gIGlmIChmcmVxdWVuY3lfa2h6IDwgb3RoZXIuZnJl
cXVlbmN5X2toeiAtIDFlLTYpIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfSBlbHNlIGlmIChmcmVx
dWVuY3lfa2h6ID4gb3RoZXIuZnJlcXVlbmN5X2toeiArIDFlLTYpIHsKKy8vIEdpdmVuIHhbXSBh
bmQgeVtdIHdyaXRlcyBvdXQgc3VjaCBrIGFuZCBiIHRoYXQgbGluZSB5PWsqeCtiIGFwcHJveGlt
YXRlcworLy8gZ2l2ZW4gcG9pbnRzIGluIHRoZSBiZXN0IHdheSAoTGVhc3QgU3F1YXJlcyBNZXRo
b2QpLgorYm9vbCBMaW5lYXJSZWdyZXNzaW9uKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGRvdWJsZT4g
eCwKKyAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBkb3VibGU+IHks
CisgICAgICAgICAgICAgICAgICAgICAgZG91YmxlKiBrLAorICAgICAgICAgICAgICAgICAgICAg
IGRvdWJsZSogYikgeworICBzaXplX3QgbiA9IHguc2l6ZSgpOworICBpZiAobiA8IDIpCisgICAg
cmV0dXJuIGZhbHNlOworCisgIGlmICh5LnNpemUoKSAhPSBuKQogICAgIHJldHVybiBmYWxzZTsK
LSAgfSBlbHNlIHsKLSAgICByZXR1cm4gb2Zmc2V0X21zIDwgb3RoZXIub2Zmc2V0X21zIC0gMWUt
NjsKKworICBkb3VibGUgYXZnX3ggPSAwOworICBkb3VibGUgYXZnX3kgPSAwOworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG47ICsraSkgeworICAgIGF2Z194ICs9IHhbaV07CisgICAgYXZnX3kg
Kz0geVtpXTsKKyAgfQorICBhdmdfeCAvPSBuOworICBhdmdfeSAvPSBuOworCisgIGRvdWJsZSB2
YXJpYW5jZV94ID0gMDsKKyAgZG91YmxlIGNvdmFyaWFuY2VfeHkgPSAwOworICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG47ICsraSkgeworICAgIGRvdWJsZSBub3JtYWxpemVkX3ggPSB4W2ldIC0g
YXZnX3g7CisgICAgZG91YmxlIG5vcm1hbGl6ZWRfeSA9IHlbaV0gLSBhdmdfeTsKKyAgICB2YXJp
YW5jZV94ICs9IG5vcm1hbGl6ZWRfeCAqIG5vcm1hbGl6ZWRfeDsKKyAgICBjb3ZhcmlhbmNlX3h5
ICs9IG5vcm1hbGl6ZWRfeCAqIG5vcm1hbGl6ZWRfeTsKICAgfQotfQogCi1ib29sIFJ0cFRvTnRw
RXN0aW1hdG9yOjpQYXJhbWV0ZXJzOjpvcGVyYXRvcj09KGNvbnN0IFBhcmFtZXRlcnMmIG90aGVy
KSBjb25zdCB7Ci0gIHJldHVybiAhKG90aGVyIDwgKnRoaXMgfHwgKnRoaXMgPCBvdGhlcik7Ci19
CisgIGlmIChzdGQ6OmZhYnModmFyaWFuY2VfeCkgPCAxZS04KQorICAgIHJldHVybiBmYWxzZTsK
IAotYm9vbCBSdHBUb050cEVzdGltYXRvcjo6UGFyYW1ldGVyczo6b3BlcmF0b3IhPShjb25zdCBQ
YXJhbWV0ZXJzJiBvdGhlcikgY29uc3QgewotICByZXR1cm4gb3RoZXIgPCAqdGhpcyB8fCAqdGhp
cyA8IG90aGVyOworICAqayA9IHN0YXRpY19jYXN0PGRvdWJsZT4oY292YXJpYW5jZV94eSAvIHZh
cmlhbmNlX3gpOworICAqYiA9IHN0YXRpY19jYXN0PGRvdWJsZT4oYXZnX3kgLSAoKmspICogYXZn
X3gpOworICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSdHBUb050cEVzdGltYXRvcjo6UGFyYW1l
dGVyczo6b3BlcmF0b3I8PShjb25zdCBQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QgewotICByZXR1
cm4gIShvdGhlciA8ICp0aGlzKTsKLX0KK30gIC8vIG5hbWVzcGFjZQogCiBSdHBUb050cEVzdGlt
YXRvcjo6UnRjcE1lYXN1cmVtZW50OjpSdGNwTWVhc3VyZW1lbnQodWludDMyX3QgbnRwX3NlY3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgbnRwX2ZyYWMsCkBAIC04MiwzMSArOTMsMjkgQEAgYm9vbCBSdHBUb050cEVzdGltYXRv
cjo6UnRjcE1lYXN1cmVtZW50OjpJc0VxdWFsKAogfQogCiAvLyBDbGFzcyBmb3IgY29udmVydGlu
ZyBhbiBSVFAgdGltZXN0YW1wIHRvIHRoZSBOVFAgZG9tYWluLgotUnRwVG9OdHBFc3RpbWF0b3I6
OlJ0cFRvTnRwRXN0aW1hdG9yKCkKLSAgICA6IGNvbnNlY3V0aXZlX2ludmFsaWRfc2FtcGxlc18o
MCksCi0gICAgICBzbW9vdGhpbmdfZmlsdGVyXyhrTnVtU2FtcGxlc1RvU21vb3RoKSwKLSAgICAg
IHBhcmFtc19jYWxjdWxhdGVkXyhmYWxzZSkge30KK1J0cFRvTnRwRXN0aW1hdG9yOjpSdHBUb050
cEVzdGltYXRvcigpIDogY29uc2VjdXRpdmVfaW52YWxpZF9zYW1wbGVzXygwKSB7fQogCiBSdHBU
b050cEVzdGltYXRvcjo6flJ0cFRvTnRwRXN0aW1hdG9yKCkge30KIAogdm9pZCBSdHBUb050cEVz
dGltYXRvcjo6VXBkYXRlUGFyYW1ldGVycygpIHsKLSAgaWYgKG1lYXN1cmVtZW50c18uc2l6ZSgp
ICE9IGtOdW1SdGNwUmVwb3J0c1RvVXNlKQorICBpZiAobWVhc3VyZW1lbnRzXy5zaXplKCkgPCAy
KQogICAgIHJldHVybjsKIAotICBQYXJhbWV0ZXJzIHBhcmFtczsKLSAgaW50NjRfdCB0aW1lc3Rh
bXBfbmV3ID0gbWVhc3VyZW1lbnRzXy5mcm9udCgpLnVud3JhcHBlZF9ydHBfdGltZXN0YW1wOwot
ICBpbnQ2NF90IHRpbWVzdGFtcF9vbGQgPSBtZWFzdXJlbWVudHNfLmJhY2soKS51bndyYXBwZWRf
cnRwX3RpbWVzdGFtcDsKLQotICBpbnQ2NF90IG50cF9tc19uZXcgPSBtZWFzdXJlbWVudHNfLmZy
b250KCkubnRwX3RpbWUuVG9NcygpOwotICBpbnQ2NF90IG50cF9tc19vbGQgPSBtZWFzdXJlbWVu
dHNfLmJhY2soKS5udHBfdGltZS5Ub01zKCk7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4geDsKKyAg
c3RkOjp2ZWN0b3I8ZG91YmxlPiB5OworICB4LnJlc2VydmUobWVhc3VyZW1lbnRzXy5zaXplKCkp
OworICB5LnJlc2VydmUobWVhc3VyZW1lbnRzXy5zaXplKCkpOworICBmb3IgKGF1dG8gaXQgPSBt
ZWFzdXJlbWVudHNfLmJlZ2luKCk7IGl0ICE9IG1lYXN1cmVtZW50c18uZW5kKCk7ICsraXQpIHsK
KyAgICB4LnB1c2hfYmFjayhpdC0+dW53cmFwcGVkX3J0cF90aW1lc3RhbXApOworICAgIHkucHVz
aF9iYWNrKGl0LT5udHBfdGltZS5Ub01zKCkpOworICB9CisgIGRvdWJsZSBzbG9wZSwgb2Zmc2V0
OwogCi0gIGlmICghQ2FsY3VsYXRlRnJlcXVlbmN5KG50cF9tc19uZXcsIHRpbWVzdGFtcF9uZXcs
IG50cF9tc19vbGQsIHRpbWVzdGFtcF9vbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZw
YXJhbXMuZnJlcXVlbmN5X2toeikpIHsKKyAgaWYgKCFMaW5lYXJSZWdyZXNzaW9uKHgsIHksICZz
bG9wZSwgJm9mZnNldCkpIHsKICAgICByZXR1cm47CiAgIH0KLSAgcGFyYW1zLm9mZnNldF9tcyA9
IHRpbWVzdGFtcF9uZXcgLSBwYXJhbXMuZnJlcXVlbmN5X2toeiAqIG50cF9tc19uZXc7Ci0gIHBh
cmFtc19jYWxjdWxhdGVkXyA9IHRydWU7Ci0gIHNtb290aGluZ19maWx0ZXJfLkluc2VydChwYXJh
bXMpOworCisgIHBhcmFtc18uZW1wbGFjZSgxIC8gc2xvcGUsIG9mZnNldCk7CiB9CiAKIGJvb2wg
UnRwVG9OdHBFc3RpbWF0b3I6OlVwZGF0ZU1lYXN1cmVtZW50cyh1aW50MzJfdCBudHBfc2VjcywK
QEAgLTEzMiw3ICsxNDEsOCBAQCBib29sIFJ0cFRvTnRwRXN0aW1hdG9yOjpVcGRhdGVNZWFzdXJl
bWVudHModWludDMyX3QgbnRwX3NlY3MsCiAgIGlmICghbWVhc3VyZW1lbnRzXy5lbXB0eSgpKSB7
CiAgICAgaW50NjRfdCBvbGRfcnRwX3RpbWVzdGFtcCA9IG1lYXN1cmVtZW50c18uZnJvbnQoKS51
bndyYXBwZWRfcnRwX3RpbWVzdGFtcDsKICAgICBpbnQ2NF90IG9sZF9udHBfbXMgPSBtZWFzdXJl
bWVudHNfLmZyb250KCkubnRwX3RpbWUuVG9NcygpOwotICAgIGlmIChudHBfbXNfbmV3IDw9IG9s
ZF9udHBfbXMpIHsKKyAgICBpZiAobnRwX21zX25ldyA8PSBvbGRfbnRwX21zIHx8CisgICAgICAg
IG50cF9tc19uZXcgPiBvbGRfbnRwX21zICsga01heEFsbG93ZWRSdGNwTnRwSW50ZXJ2YWxNcykg
ewogICAgICAgaW52YWxpZF9zYW1wbGUgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAodW53cmFwcGVk
X3J0cF90aW1lc3RhbXAgPD0gb2xkX3J0cF90aW1lc3RhbXApIHsKICAgICAgIFJUQ19MT0coTFNf
V0FSTklORykKQEAgLTE1Miw4ICsxNjIsNyBAQCBib29sIFJ0cFRvTnRwRXN0aW1hdG9yOjpVcGRh
dGVNZWFzdXJlbWVudHModWludDMyX3QgbnRwX3NlY3MsCiAgICAgUlRDX0xPRyhMU19XQVJOSU5H
KSA8PCAiTXVsdGlwbGUgY29uc2VjdXRpdmVseSBpbnZhbGlkIFJUQ1AgU1IgcmVwb3J0cywgIgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsZWFyaW5nIG1lYXN1cmVtZW50cy4iOwogICAg
IG1lYXN1cmVtZW50c18uY2xlYXIoKTsKLSAgICBzbW9vdGhpbmdfZmlsdGVyXy5SZXNldCgpOwot
ICAgIHBhcmFtc19jYWxjdWxhdGVkXyA9IGZhbHNlOworICAgIHBhcmFtc18gPSBhYnNsOjpudWxs
b3B0OwogICB9CiAgIGNvbnNlY3V0aXZlX2ludmFsaWRfc2FtcGxlc18gPSAwOwogCkBAIC0xNzAs
MzUgKzE3OSwyOSBAQCBib29sIFJ0cFRvTnRwRXN0aW1hdG9yOjpVcGRhdGVNZWFzdXJlbWVudHMo
dWludDMyX3QgbnRwX3NlY3MsCiB9CiAKIGJvb2wgUnRwVG9OdHBFc3RpbWF0b3I6OkVzdGltYXRl
KGludDY0X3QgcnRwX3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3QqIHJ0cF90aW1lc3RhbXBfbXMpIGNvbnN0IHsKLSAgaWYgKCFwYXJhbXNfY2FsY3Vs
YXRlZF8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90KiBudHBfdGlt
ZXN0YW1wX21zKSBjb25zdCB7CisgIGlmICghcGFyYW1zXykKICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgaW50NjRfdCBydHBfdGltZXN0YW1wX3Vud3JhcHBlZCA9IHVud3JhcHBlcl8uVW53cmFwKHJ0
cF90aW1lc3RhbXApOwogCi0gIFBhcmFtZXRlcnMgcGFyYW1zID0gc21vb3RoaW5nX2ZpbHRlcl8u
R2V0RmlsdGVyZWRWYWx1ZSgpOwotCiAgIC8vIHBhcmFtc19jYWxjdWxhdGVkXyBzaG91bGQgbm90
IGJlIHRydWUgdW5sZXNzIG1zIHBhcmFtcy5mcmVxdWVuY3lfa2h6IGhhcwogICAvLyBiZWVuIGNh
bGN1bGF0ZWQgdG8gc29tZXRoaW5nIG5vbiB6ZXJvLgotICBSVENfRENIRUNLX05FKHBhcmFtcy5m
cmVxdWVuY3lfa2h6LCAwLjApOworICBSVENfRENIRUNLX05FKHBhcmFtc18tPmZyZXF1ZW5jeV9r
aHosIDAuMCk7CiAgIGRvdWJsZSBydHBfbXMgPQotICAgICAgKHN0YXRpY19jYXN0PGRvdWJsZT4o
cnRwX3RpbWVzdGFtcF91bndyYXBwZWQpIC0gcGFyYW1zLm9mZnNldF9tcykgLwotICAgICAgICAg
IHBhcmFtcy5mcmVxdWVuY3lfa2h6ICsKLSAgICAgIDAuNWY7CisgICAgICBzdGF0aWNfY2FzdDxk
b3VibGU+KHJ0cF90aW1lc3RhbXBfdW53cmFwcGVkKSAvIHBhcmFtc18tPmZyZXF1ZW5jeV9raHog
KworICAgICAgcGFyYW1zXy0+b2Zmc2V0X21zICsgMC41ZjsKIAogICBpZiAocnRwX21zIDwgMCkK
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgKnJ0cF90aW1lc3RhbXBfbXMgPSBydHBfbXM7CisgICpu
dHBfdGltZXN0YW1wX21zID0gcnRwX21zOworCiAgIHJldHVybiB0cnVlOwogfQogCiBjb25zdCBh
YnNsOjpvcHRpb25hbDxSdHBUb050cEVzdGltYXRvcjo6UGFyYW1ldGVycz4gUnRwVG9OdHBFc3Rp
bWF0b3I6OnBhcmFtcygpCiAgICAgY29uc3QgewotICBhYnNsOjpvcHRpb25hbDxQYXJhbWV0ZXJz
PiByZXM7Ci0gIGlmIChwYXJhbXNfY2FsY3VsYXRlZF8pIHsKLSAgICByZXMuZW1wbGFjZShzbW9v
dGhpbmdfZmlsdGVyXy5HZXRGaWx0ZXJlZFZhbHVlKCkpOwotICB9Ci0gIHJldHVybiByZXM7Cisg
IHJldHVybiBwYXJhbXNfOwogfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJz
L3NvdXJjZS9ydHBfdG9fbnRwX2VzdGltYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvcnRwX3Rv
X250cF9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKaW5kZXggMDY0N2VjOGNhZDYzOThjMjZjNWJiYmRi
ZWY1ZGFjNDU1N2JiM2Q0MC4uYjBiODNiYmJiMWM3NjY2YjRlNjE1NTM4MjU0ODBjYzI2OWNmMzM2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9ydHBfdG9fbnRwX2VzdGltYXRvcl91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3Jh
cHBlcnMvc291cmNlL3J0cF90b19udHBfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCkBAIC05LDExICs5
LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL3J0cF90b19u
dHBfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcmFuZG9tLmgiCiAjaW5jbHVkZSAi
dGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CiBjb25zdCB1
aW50MzJfdCBrT25lTXNJbk50cEZyYWMgPSA0Mjk0OTY3OworY29uc3QgdWludDMyX3Qga09uZUhv
dXJJbk50cFNlYyA9IDYwICogNjA7CiBjb25zdCB1aW50MzJfdCBrVGltZXN0YW1wVGlja3NQZXJN
cyA9IDkwOwogfSAgLy8gbmFtZXNwYWNlCiAKQEAgLTIyNCw2ICsyMjYsMjIgQEAgVEVTVChVcGRh
dGVSdGNwTWVhc3VyZW1lbnRUZXN0cywgRmFpbHNGb3JPbGROdHApIHsKICAgICAgIGVzdGltYXRv
ci5VcGRhdGVNZWFzdXJlbWVudHMobnRwX3NlYywgbnRwX2ZyYWMsIHRpbWVzdGFtcCwgJm5ld19z
cikpOwogfQogCitURVNUKFVwZGF0ZVJ0Y3BNZWFzdXJlbWVudFRlc3RzLCBGYWlsc0ZvclRvb05l
d050cCkgeworICBSdHBUb050cEVzdGltYXRvciBlc3RpbWF0b3I7CisgIHVpbnQzMl90IG50cF9z
ZWMgPSAxOworICB1aW50MzJfdCBudHBfZnJhYyA9IDY5OTkyNTA1MDsKKyAgdWludDMyX3QgdGlt
ZXN0YW1wID0gMHgxMjM0NTY3ODsKKyAgYm9vbCBuZXdfc3I7CisgIEVYUEVDVF9UUlVFKAorICAg
ICAgZXN0aW1hdG9yLlVwZGF0ZU1lYXN1cmVtZW50cyhudHBfc2VjLCBudHBfZnJhYywgdGltZXN0
YW1wLCAmbmV3X3NyKSk7CisgIEVYUEVDVF9UUlVFKG5ld19zcik7CisgIC8vIE50cCB0aW1lIGZy
b20gZmFyIGZ1dHVyZSwgbGlzdCBub3QgdXBkYXRlZC4KKyAgbnRwX3NlYyArPSBrT25lSG91cklu
TnRwU2VjICogMjsKKyAgdGltZXN0YW1wICs9IGtUaW1lc3RhbXBUaWNrc1Blck1zICogMTA7Cisg
IEVYUEVDVF9GQUxTRSgKKyAgICAgIGVzdGltYXRvci5VcGRhdGVNZWFzdXJlbWVudHMobnRwX3Nl
YywgbnRwX2ZyYWMsIHRpbWVzdGFtcCwgJm5ld19zcikpOworfQorCiBURVNUKFVwZGF0ZVJ0Y3BN
ZWFzdXJlbWVudFRlc3RzLCBGYWlsc0ZvckVxdWFsVGltZXN0YW1wKSB7CiAgIFJ0cFRvTnRwRXN0
aW1hdG9yIGVzdGltYXRvcjsKICAgdWludDMyX3QgbnRwX3NlYyA9IDA7CkBAIC0yOTIsNCArMzEw
LDM3IEBAIFRFU1QoUnRwVG9OdHBUZXN0cywgRmFpbHNGb3JOb1BhcmFtZXRlcnMpIHsKICAgRVhQ
RUNUX0ZBTFNFKGVzdGltYXRvci5Fc3RpbWF0ZSh0aW1lc3RhbXAsICZ0aW1lc3RhbXBfbXMpKTsK
IH0KIAorVEVTVChSdHBUb050cFRlc3RzLCBBdmVyYWdlc0Vycm9yT3V0KSB7CisgIFJ0cFRvTnRw
RXN0aW1hdG9yIGVzdGltYXRvcjsKKyAgdWludDMyX3QgbnRwX3NlYyA9IDE7CisgIHVpbnQzMl90
IG50cF9mcmFjID0gOTAwMDAwMDA7ICAvLyBNb3JlIHRoYW4gMSBtcy4KKyAgdWludDMyX3QgdGlt
ZXN0YW1wID0gMHgxMjM0NTY3ODsKKyAgY29uc3QgaW50IGtOdHBTZWNTdGVwID0gMTsgIC8vIDEg
c2Vjb25kLgorICBjb25zdCBpbnQga1J0cFRpY2tzUGVyTXMgPSA5MDsKKyAgY29uc3QgaW50IGtS
dHBTdGVwID0ga1J0cFRpY2tzUGVyTXMgKiAxMDAwOworICBib29sIG5ld19zcjsKKyAgRVhQRUNU
X1RSVUUoCisgICAgICBlc3RpbWF0b3IuVXBkYXRlTWVhc3VyZW1lbnRzKG50cF9zZWMsIG50cF9m
cmFjLCB0aW1lc3RhbXAsICZuZXdfc3IpKTsKKyAgRVhQRUNUX1RSVUUobmV3X3NyKTsKKworICBS
YW5kb20gcmFuZCgxMTIzNTM2TCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwMDsgaSsr
KSB7CisgICAgLy8gQWR2YW5jZSBib3RoIHRpbWVzdGFtcHMgYnkgZXhhY3RseSAxIHNlY29uZC4K
KyAgICBudHBfc2VjICs9IGtOdHBTZWNTdGVwOworICAgIHRpbWVzdGFtcCArPSBrUnRwU3RlcDsK
KyAgICAvLyBBZGQgdXB0byAxbXMgb2YgZXJyb3JzIHRvIE5UUCBhbmQgUlRQIHRpbWVzdGFtcHMg
cGFzc2VkIHRvIGVzdGltYXRvci4KKyAgICBFWFBFQ1RfVFJVRShlc3RpbWF0b3IuVXBkYXRlTWVh
c3VyZW1lbnRzKAorICAgICAgICBudHBfc2VjLAorICAgICAgICBudHBfZnJhYyArIHJhbmQuUmFu
ZCgtc3RhdGljX2Nhc3Q8aW50PihrT25lTXNJbk50cEZyYWMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGtPbmVNc0luTnRwRnJhYykpLAorICAgICAgICB0
aW1lc3RhbXAgKyByYW5kLlJhbmQoLWtSdHBUaWNrc1Blck1zLCBrUnRwVGlja3NQZXJNcyksICZu
ZXdfc3IpKTsKKyAgICBFWFBFQ1RfVFJVRShuZXdfc3IpOworCisgICAgaW50NjRfdCBlc3RpbWF0
ZWRfbnRwX21zOworICAgIEVYUEVDVF9UUlVFKGVzdGltYXRvci5Fc3RpbWF0ZSh0aW1lc3RhbXAs
ICZlc3RpbWF0ZWRfbnRwX21zKSk7CisgICAgLy8gQWxsb3cgdXB0byAyIG1zIG9mIGVycm9yLgor
ICAgIEVYUEVDVF9ORUFSKE50cFRpbWUobnRwX3NlYywgbnRwX2ZyYWMpLlRvTXMoKSwgZXN0aW1h
dGVkX250cF9tcywgMik7CisgIH0KK30KKwogfTsgIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L0JV
SUxELmduCmluZGV4IDI4MTQ2ZTA1OTljZGU5YjU1MjAwYjNkNmZhOWU3NzFiMTA5ZDVmMGQuLjdj
ZDdiM2VhYTFmYjkzNzI0YTI2ZDc0Y2RkNjkyNjVhMTVjZjA1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvQlVJTEQuZ24KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9CVUlMRC5nbgpA
QCAtMTM3LDYgKzEzNyw4IEBAIGlmIChpc19pb3MpIHsKICAgICB0ZXN0b25seSA9IHRydWUKICAg
ICB2aXNpYmlsaXR5ID0gWyAiOnRlc3Rfc3VwcG9ydCIgXQogICAgIHNvdXJjZXMgPSBbCisgICAg
ICAiaW9zL2NvdmVyYWdlX3V0aWxfaW9zLmgiLAorICAgICAgImlvcy9jb3ZlcmFnZV91dGlsX2lv
cy5tbSIsCiAgICAgICAiaW9zL3Rlc3Rfc3VwcG9ydC5oIiwKICAgICAgICJpb3MvdGVzdF9zdXBw
b3J0Lm1tIiwKICAgICBdCkBAIC0xNDQsNiArMTQ2LDE1IEBAIGlmIChpc19pb3MpIHsKICAgICAg
ICI6cGVyZl90ZXN0IiwKICAgICAgICIuLi9zZGs6aGVscGVyc19vYmpjIiwKICAgICBdCisgICAg
Y29uZmlncyArPSBbICI6dGVzdF9zdXBwb3J0X29iamNfY29uZmlnIiBdCisgIH0KKworICBjb25m
aWcoInRlc3Rfc3VwcG9ydF9vYmpjX2NvbmZpZyIpIHsKKyAgICBkZWZpbmVzID0gW10KKworICAg
IGlmICh1c2VfY2xhbmdfY292ZXJhZ2UpIHsKKyAgICAgIGRlZmluZXMgKz0gWyAiV0VCUlRDX0lP
U19FTkFCTEVfQ09WRVJBR0UiIF0KKyAgICB9CiAgIH0KIH0KIApAQCAtMTk2LDI0ICsyMDcsNDEg
QEAgcnRjX3NvdXJjZV9zZXQoInRlc3Rfc3VwcG9ydCIpIHsKIH0KIAogaWYgKHJ0Y19pbmNsdWRl
X3Rlc3RzKSB7Ci0gIHJ0Y19zb3VyY2Vfc2V0KCJ0ZXN0X21haW4iKSB7CisgIHJ0Y19zb3VyY2Vf
c2V0KCJ0ZXN0X21haW5fbGliIikgewogICAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgICAgdGVz
dG9ubHkgPSB0cnVlCiAgICAgc291cmNlcyA9IFsKLSAgICAgICJ0ZXN0X21haW4uY2MiLAorICAg
ICAgInRlc3RfbWFpbl9saWIuY2MiLAorICAgICAgInRlc3RfbWFpbl9saWIuaCIsCiAgICAgXQog
Ci0gICAgcHVibGljX2RlcHMgPSBbCi0gICAgICAiOnRlc3Rfc3VwcG9ydCIsCi0gICAgXQogICAg
IGRlcHMgPSBbCiAgICAgICAiOmZpZWxkX3RyaWFsIiwKLSAgICAgICI6ZmlsZXV0aWxzIiwKICAg
ICAgICI6cGVyZl90ZXN0IiwKKyAgICAgICI6dGVzdF9zdXBwb3J0IiwKICAgICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZSIsCiAgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwK
ICAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgICAiLy90ZXN0aW5nL2d0
ZXN0IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnk6bWVtb3J5
IiwKKworICAgICAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NzkyKTogVGhpcyBpcyBuZWVkZWQg
Zm9yIGRvd25zdHJlYW0gcHJvamVjdHMgb24KKyAgICAgICMgQW5kcm9pZCwgd2hlcmUgaXQncyBy
ZXBsYWNlZCBieSBhbiBpbnRlcm5hbCB2ZXJzaW9uIG9mIGZpbGV1dGlscyB0aGF0CisgICAgICAj
IGhhcyBhIGNlcnRhaW4gZmxhZy4gUmVtb3ZlIHRoaXMgb25jZSB0aGUgaW50ZXJuYWwgZmlsZXV0
aWxzIGhhcyBiZWVuCisgICAgICAjIGVsaW1pbmF0ZWQuCisgICAgICAiLi4vdGVzdDpmaWxldXRp
bHMiLAorICAgIF0KKyAgfQorCisgIHJ0Y19zb3VyY2Vfc2V0KCJ0ZXN0X21haW4iKSB7CisgICAg
dmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgICB0ZXN0b25seSA9IHRydWUKKyAgICBzb3VyY2VzID0g
WworICAgICAgInRlc3RfbWFpbi5jYyIsCisgICAgXQorCisgICAgZGVwcyA9IFsKKyAgICAgICI6
dGVzdF9tYWluX2xpYiIsCiAgICAgXQogICB9CiAKQEAgLTMwOSw2ICszMzcsOCBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6dmlkZW9fdGVzdF9zdXBwb3J0IiwKICAgICAgICIu
Li9hcGk6Y3JlYXRlX3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmVfYXBpIiwKICAgICAgICIuLi9hcGk6
c2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9hcGkiLAorICAgICAgIi4uL2FwaS90ZXN0L3ZpZGVvOmZ1
bmN0aW9uX3ZpZGVvX2ZhY3RvcnkiLAorICAgICAgIi4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVv
X2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19m
cmFtZV9pNDIwIiwKICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwIiwKICAgICAg
ICIuLi9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUiLApAQCAtMzYwLDcgKzM5MCwxMCBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKIAogaWYgKGlzX2lvcykgewogICBydGNfc291cmNlX3NldCgiZmls
ZXV0aWxzX2lvc19vYmpjIikgewotICAgIHZpc2liaWxpdHkgPSBbICI6ZmlsZXV0aWxzIiBdCisg
ICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICI6ZmlsZXV0aWxzIiwKKyAgICAgICI6ZmlsZXV0aWxz
X292ZXJyaWRlX2ltcGwiLAorICAgIF0KICAgICBzb3VyY2VzID0gWwogICAgICAgInRlc3RzdXBw
b3J0L2lvc2ZpbGV1dGlscy5oIiwKICAgICAgICJ0ZXN0c3VwcG9ydC9pb3NmaWxldXRpbHMubW0i
LApAQCAtMzc2LDcgKzQwOSwxMCBAQCBpZiAoaXNfaW9zKSB7CiAKIGlmIChpc19tYWMpIHsKICAg
cnRjX3NvdXJjZV9zZXQoImZpbGV1dGlsc19tYWNfb2JqYyIpIHsKLSAgICB2aXNpYmlsaXR5ID0g
WyAiOmZpbGV1dGlscyIgXQorICAgIHZpc2liaWxpdHkgPSBbCisgICAgICAiOmZpbGV1dGlscyIs
CisgICAgICAiOmZpbGV1dGlsc19vdmVycmlkZV9pbXBsIiwKKyAgICBdCiAgICAgc291cmNlcyA9
IFsKICAgICAgICJ0ZXN0c3VwcG9ydC9tYWNmaWxldXRpbHMuaCIsCiAgICAgICAidGVzdHN1cHBv
cnQvbWFjZmlsZXV0aWxzLm1tIiwKQEAgLTM5NSw2ICs0MzEsNDIgQEAgcnRjX3NvdXJjZV9zZXQo
ImZpbGV1dGlscyIpIHsKICAgICAidGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiLAogICBdCiAgIGRl
cHMgPSBbCisgICAgIjpmaWxldXRpbHNfb3ZlcnJpZGVfYXBpIiwKKyAgICAiOmZpbGV1dGlsc19v
dmVycmlkZV9pbXBsIiwKKyAgICAiLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uL3J0Y19iYXNl
OmNoZWNrcyIsCisgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4v
cnRjX2Jhc2Uvc3lzdGVtOmFyY2giLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlczpvcHRpb25hbCIsCisgIF0KKyAgaWYgKGlzX2lvcykgeworICAgIGRlcHMgKz0gWyAi
OmZpbGV1dGlsc19pb3Nfb2JqYyIgXQorICB9CisgIGlmIChpc19tYWMpIHsKKyAgICBkZXBzICs9
IFsgIjpmaWxldXRpbHNfbWFjX29iamMiIF0KKyAgfQorICBpZiAoaXNfd2luKSB7CisgICAgZGVw
cyArPSBbICIuLi9ydGNfYmFzZTpydGNfYmFzZSIgXQorICB9Cit9CisKKyMgV2Ugc2VwYXJhdGUg
aGVhZGVyIGludG8gb3duIHRhcmdldCB0byBtYWtlIGl0IHBvc3NpYmxlIGZvciBkb3duc3RyZWFt
CisjIHByb2plY3RzIHRvIG92ZXJyaWRlIGltcGxlbWVudGF0aW9uLgorcnRjX3NvdXJjZV9zZXQo
ImZpbGV1dGlsc19vdmVycmlkZV9hcGkiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBzb3VyY2Vz
ID0gWworICAgICJ0ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuaCIsCisgIF0KK30KKwor
cnRjX3NvdXJjZV9zZXQoImZpbGV1dGlsc19vdmVycmlkZV9pbXBsIikgeworICB0ZXN0b25seSA9
IHRydWUKKyAgdmlzaWJpbGl0eSA9IFsgIjpmaWxldXRpbHMiIF0KKyAgc291cmNlcyA9IFsKKyAg
ICAidGVzdHN1cHBvcnQvZmlsZXV0aWxzX292ZXJyaWRlLmNjIiwKKyAgXQorICBkZXBzID0gWwor
ICAgICI6ZmlsZXV0aWxzX292ZXJyaWRlX2FwaSIsCiAgICAgIi4uOndlYnJ0Y19jb21tb24iLAog
ICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHBy
b3ZlZCIsCkBAIC01MjMsNiArNTk1LDggQEAgcnRjX3NvdXJjZV9zZXQoImZha2VfdmlkZW9fY29k
ZWNzIikgewogICAgICJmYWtlX2RlY29kZXIuaCIsCiAgICAgImZha2VfZW5jb2Rlci5jYyIsCiAg
ICAgImZha2VfZW5jb2Rlci5oIiwKKyAgICAiZmFrZV92cDhfZGVjb2Rlci5jYyIsCisgICAgImZh
a2VfdnA4X2RlY29kZXIuaCIsCiAgICAgImZha2VfdnA4X2VuY29kZXIuY2MiLAogICAgICJmYWtl
X3ZwOF9lbmNvZGVyLmgiLAogICBdCkBAIC01MzIsNyArNjA2LDkgQEAgcnRjX3NvdXJjZV9zZXQo
ImZha2VfdmlkZW9fY29kZWNzIikgewogICB9CiAgIGRlcHMgPSBbCiAgICAgIi4uOndlYnJ0Y19j
b21tb24iLAorICAgICIuLi9hcGkvdmlkZW86ZW5jb2RlZF9pbWFnZSIsCiAgICAgIi4uL2FwaS92
aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKKyAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczpjcmVhdGVf
dnA4X3RlbXBvcmFsX2xheWVycyIsCiAgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29k
ZWNzX2FwaSIsCiAgICAgIi4uL2NvbW1vbl92aWRlbzpjb21tb25fdmlkZW8iLAogICAgICIuLi9t
b2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLApAQCAtNTYwLDggKzYz
Niw2IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ0ZXN0X2NvbW1vbiIpIHsKICAgICAiZW5jb2Rlcl9zZXR0
aW5ncy5jYyIsCiAgICAgImVuY29kZXJfc2V0dGluZ3MuaCIsCiAgICAgImZha2VfdmlkZW9yZW5k
ZXJlci5oIiwKLSAgICAiZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiLAotICAgICJm
dW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIsCiAgICAgImxheWVyX2ZpbHRlcmluZ190
cmFuc3BvcnQuY2MiLAogICAgICJsYXllcl9maWx0ZXJpbmdfdHJhbnNwb3J0LmgiLAogICAgICJt
b2NrX3RyYW5zcG9ydC5jYyIsCkBAIC01OTksNiArNjczLDkgQEAgcnRjX3NvdXJjZV9zZXQoInRl
c3RfY29tbW9uIikgewogICAgICIuLi9hcGk6dHJhbnNwb3J0X2FwaSIsCiAgICAgIi4uL2FwaS9h
dWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkiLAogICAgICIuLi9hcGkv
YXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAiLi4vYXBp
L3Rlc3QvdmlkZW86ZnVuY3Rpb25fdmlkZW9fZmFjdG9yeSIsCisgICAgIi4uL2FwaS92aWRlbzpi
dWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAorICAgICIuLi9hcGkvdmlk
ZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAgICAgIi4uL2FwaS92aWRlbzp2
aWRlb19mcmFtZSIsCiAgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIs
CiAgICAgIi4uL2F1ZGlvIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY2FsbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jYWxsX3Rlc3QuY2MKaW5kZXggZjRmYmYyMjFiZTkw
ZjU0ZTg3ZmRkODY1MGVhODJiNjg0ZjY4MDM1YS4uNmUyNWI4NWE1NmM3MjUzODVlMzVkMmU4YjNl
NWRjODRiNDZhMTBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9jYWxsX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jYWxsX3Rlc3QuY2MKQEAgLTE1LDYgKzE1LDcgQEAK
ICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29k
ZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlv
X2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS92
aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmlnLmgiCiAjaW5jbHVkZSAiY2Fs
bC9mYWtlX25ldHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9jb250
cm9sbGVyX3NlbmQuaCIKQEAgLTM5LDcgKzQwLDggQEAgQ2FsbFRlc3Q6OkNhbGxUZXN0KCkKICAg
ICAgIHNlbmRfZXZlbnRfbG9nXyhSdGNFdmVudExvZzo6Q3JlYXRlTnVsbCgpKSwKICAgICAgIHJl
Y3ZfZXZlbnRfbG9nXyhSdGNFdmVudExvZzo6Q3JlYXRlTnVsbCgpKSwKICAgICAgIHNlbmRlcl9j
YWxsX3RyYW5zcG9ydF9jb250cm9sbGVyXyhudWxscHRyKSwKLSAgICAgIGF1ZGlvX3NlbmRfY29u
ZmlnXyhudWxscHRyKSwKKyAgICAgIGF1ZGlvX3NlbmRfY29uZmlnXygvKnNlbmRfdHJhbnNwb3J0
PSovbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydD0q
L251bGxwdHIpLAogICAgICAgYXVkaW9fc2VuZF9zdHJlYW1fKG51bGxwdHIpLAogICAgICAgYmJy
X25ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5XyhuZXcgQmJyTmV0d29ya0NvbnRyb2xsZXJGYWN0
b3J5KCkpLAogICAgICAgZmFrZV9lbmNvZGVyX2ZhY3RvcnlfKFt0aGlzXSgpIHsKQEAgLTUzLDYg
KzU1LDcgQEAgQ2FsbFRlc3Q6OkNhbGxUZXN0KCkKICAgICAgICAgcmV0dXJuIGZha2VfZW5jb2Rl
cjsKICAgICAgIH0pLAogICAgICAgZmFrZV9kZWNvZGVyX2ZhY3RvcnlfKFtdKCkgeyByZXR1cm4g
YWJzbDo6bWFrZV91bmlxdWU8RmFrZURlY29kZXI+KCk7IH0pLAorICAgICAgYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeV8oQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnko
KSksCiAgICAgICBudW1fdmlkZW9fc3RyZWFtc18oMSksCiAgICAgICBudW1fYXVkaW9fc3RyZWFt
c18oMCksCiAgICAgICBudW1fZmxleGZlY19zdHJlYW1zXygwKSwKQEAgLTc1LDcgKzc4LDcgQEAg
dm9pZCBDYWxsVGVzdDo6UnVuQmFzZVRlc3QoQmFzZVRlc3QqIHRlc3QpIHsKICAgICBudW1fZmxl
eGZlY19zdHJlYW1zXyA9IHRlc3QtPkdldE51bUZsZXhmZWNTdHJlYW1zKCk7CiAgICAgUlRDX0RD
SEVDSyhudW1fdmlkZW9fc3RyZWFtc18gPiAwIHx8IG51bV9hdWRpb19zdHJlYW1zXyA+IDApOwog
ICAgIENhbGw6OkNvbmZpZyBzZW5kX2NvbmZpZyhzZW5kX2V2ZW50X2xvZ18uZ2V0KCkpOwotICAg
IHRlc3QtPk1vZGlmeVNlbmRlckNhbGxDb25maWcoJnNlbmRfY29uZmlnKTsKKyAgICB0ZXN0LT5N
b2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKCZzZW5kX2NvbmZpZy5iaXRyYXRlX2NvbmZpZyk7CiAg
ICAgaWYgKG51bV9hdWRpb19zdHJlYW1zXyA+IDApIHsKICAgICAgIENyZWF0ZUZha2VBdWRpb0Rl
dmljZXModGVzdC0+Q3JlYXRlQ2FwdHVyZXIoKSwgdGVzdC0+Q3JlYXRlUmVuZGVyZXIoKSk7CiAg
ICAgICB0ZXN0LT5PbkZha2VBdWRpb0RldmljZXNDcmVhdGVkKGZha2Vfc2VuZF9hdWRpb19kZXZp
Y2VfLmdldCgpLApAQCAtOTksNyArMTAyLDcgQEAgdm9pZCBDYWxsVGVzdDo6UnVuQmFzZVRlc3Qo
QmFzZVRlc3QqIHRlc3QpIHsKICAgICB9CiAgICAgaWYgKHRlc3QtPlNob3VsZENyZWF0ZVJlY2Vp
dmVycygpKSB7CiAgICAgICBDYWxsOjpDb25maWcgcmVjdl9jb25maWcocmVjdl9ldmVudF9sb2df
LmdldCgpKTsKLSAgICAgIHRlc3QtPk1vZGlmeVJlY2VpdmVyQ2FsbENvbmZpZygmcmVjdl9jb25m
aWcpOworICAgICAgdGVzdC0+TW9kaWZ5UmVjZWl2ZXJCaXRyYXRlQ29uZmlnKCZyZWN2X2NvbmZp
Zy5iaXRyYXRlX2NvbmZpZyk7CiAgICAgICBpZiAobnVtX2F1ZGlvX3N0cmVhbXNfID4gMCkgewog
ICAgICAgICBBdWRpb1N0YXRlOjpDb25maWcgYXVkaW9fc3RhdGVfY29uZmlnOwogICAgICAgICBh
dWRpb19zdGF0ZV9jb25maWcuYXVkaW9fbWl4ZXIgPSBBdWRpb01peGVySW1wbDo6Q3JlYXRlKCk7
CkBAIC0xNjMsNiArMTY2LDcgQEAgdm9pZCBDYWxsVGVzdDo6UnVuQmFzZVRlc3QoQmFzZVRlc3Qq
IHRlc3QpIHsKICAgICAgIGludCBoZWlnaHQgPSBrRGVmYXVsdEhlaWdodDsKICAgICAgIGludCBm
cmFtZV9yYXRlID0ga0RlZmF1bHRGcmFtZXJhdGU7CiAgICAgICB0ZXN0LT5Nb2RpZnlWaWRlb0Nh
cHR1cmVTdGFydFJlc29sdXRpb24oJndpZHRoLCAmaGVpZ2h0LCAmZnJhbWVfcmF0ZSk7CisgICAg
ICB0ZXN0LT5Nb2RpZnlWaWRlb0RlZ3JhZGF0aW9uUHJlZmVyZW5jZSgmZGVncmFkYXRpb25fcHJl
ZmVyZW5jZV8pOwogICAgICAgQ3JlYXRlRnJhbWVHZW5lcmF0b3JDYXB0dXJlcihmcmFtZV9yYXRl
LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgIHRlc3QtPk9uRnJhbWVHZW5lcmF0b3JDYXB0dXJlckNy
ZWF0ZWQoZnJhbWVfZ2VuZXJhdG9yX2NhcHR1cmVyXyk7CiAgICAgfQpAQCAtMjMyLDYgKzIzNiw4
IEBAIHZvaWQgQ2FsbFRlc3Q6OkNyZWF0ZVZpZGVvU2VuZENvbmZpZyhWaWRlb1NlbmRTdHJlYW06
OkNvbmZpZyogdmlkZW9fY29uZmlnLAogICBSVENfRENIRUNLX0xFKG51bV92aWRlb19zdHJlYW1z
ICsgbnVtX3VzZWRfc3NyY3MsIGtOdW1Tc3Jjcyk7CiAgICp2aWRlb19jb25maWcgPSBWaWRlb1Nl
bmRTdHJlYW06OkNvbmZpZyhzZW5kX3RyYW5zcG9ydCk7CiAgIHZpZGVvX2NvbmZpZy0+ZW5jb2Rl
cl9zZXR0aW5ncy5lbmNvZGVyX2ZhY3RvcnkgPSAmZmFrZV9lbmNvZGVyX2ZhY3RvcnlfOworICB2
aWRlb19jb25maWctPmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9
CisgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKTsKICAgdmlkZW9fY29uZmln
LT5ydHAucGF5bG9hZF9uYW1lID0gIkZBS0UiOwogICB2aWRlb19jb25maWctPnJ0cC5wYXlsb2Fk
X3R5cGUgPSBrRmFrZVZpZGVvU2VuZFBheWxvYWRUeXBlOwogICB2aWRlb19jb25maWctPnJ0cC5l
eHRlbnNpb25zLnB1c2hfYmFjaygKQEAgLTI1OSw3ICsyNjUsOCBAQCB2b2lkIENhbGxUZXN0OjpD
cmVhdGVBdWRpb0FuZEZlY1NlbmRDb25maWdzKHNpemVfdCBudW1fYXVkaW9fc3RyZWFtcywKICAg
UlRDX0RDSEVDS19MRShudW1fYXVkaW9fc3RyZWFtcywgMSk7CiAgIFJUQ19EQ0hFQ0tfTEUobnVt
X2ZsZXhmZWNfc3RyZWFtcywgMSk7CiAgIGlmIChudW1fYXVkaW9fc3RyZWFtcyA+IDApIHsKLSAg
ICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBhdWRpb19zZW5kX2NvbmZpZyhzZW5kX3RyYW5zcG9y
dCk7CisgICAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgYXVkaW9fc2VuZF9jb25maWcoc2VuZF90
cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgICBhdWRpb19zZW5kX2NvbmZpZy5ydHAu
c3NyYyA9IGtBdWRpb1NlbmRTc3JjOwogICAgIGF1ZGlvX3NlbmRfY29uZmlnLnNlbmRfY29kZWNf
c3BlYyA9IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjpTZW5kQ29kZWNTcGVjKAogICAgICAgICBr
QXVkaW9TZW5kUGF5bG9hZFR5cGUsIHsib3B1cyIsIDQ4MDAwLCAyLCB7eyJzdGVyZW8iLCAiMSJ9
fX0pOwpAQCAtNzI2LDkgKzczMywxMCBAQCB2b2lkIEJhc2VUZXN0OjpPbkZha2VBdWRpb0Rldmlj
ZXNDcmVhdGVkKAogICAgIFRlc3RBdWRpb0RldmljZU1vZHVsZSogc2VuZF9hdWRpb19kZXZpY2Us
CiAgICAgVGVzdEF1ZGlvRGV2aWNlTW9kdWxlKiByZWN2X2F1ZGlvX2RldmljZSkge30KIAotdm9p
ZCBCYXNlVGVzdDo6TW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZykg
e30KK3ZvaWQgQmFzZVRlc3Q6Ok1vZGlmeVNlbmRlckJpdHJhdGVDb25maWcoQml0cmF0ZUNvbnN0
cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykge30KIAotdm9pZCBCYXNlVGVzdDo6TW9kaWZ5UmVjZWl2
ZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSB7fQordm9pZCBCYXNlVGVzdDo6TW9k
aWZ5UmVjZWl2ZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25m
aWcpIHsKK30KIAogdm9pZCBCYXNlVGVzdDo6T25SdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZENy
ZWF0ZWQoCiAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQqIGNvbnRyb2xsZXIpIHt9CkBA
IC03NDIsOCArNzUwLDggQEAgdGVzdDo6UGFja2V0VHJhbnNwb3J0KiBCYXNlVGVzdDo6Q3JlYXRl
U2VuZFRyYW5zcG9ydCgKICAgICAgIHRhc2tfcXVldWUsIHNlbmRlcl9jYWxsLCB0aGlzLCB0ZXN0
OjpQYWNrZXRUcmFuc3BvcnQ6OmtTZW5kZXIsCiAgICAgICBDYWxsVGVzdDo6cGF5bG9hZF90eXBl
X21hcF8sCiAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAg
ICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRl
ZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZh
dWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKTsKKyAgICAgICAgICBDbG9jazo6R2V0UmVh
bFRpbWVDbG9jaygpLAorICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdv
cms+KEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpKTsKIH0KIAogdGVzdDo6UGFja2V0
VHJhbnNwb3J0KiBCYXNlVGVzdDo6Q3JlYXRlUmVjZWl2ZVRyYW5zcG9ydCgKQEAgLTc1Miw4ICs3
NjAsOCBAQCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQqIEJhc2VUZXN0OjpDcmVhdGVSZWNlaXZlVHJh
bnNwb3J0KAogICAgICAgdGFza19xdWV1ZSwgbnVsbHB0ciwgdGhpcywgdGVzdDo6UGFja2V0VHJh
bnNwb3J0OjprUmVjZWl2ZXIsCiAgICAgICBDYWxsVGVzdDo6cGF5bG9hZF90eXBlX21hcF8sCiAg
ICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICAgIENsb2Nr
OjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29y
a1NpbXVsYXRpb25Db25maWcoKSkpKTsKKyAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9j
aygpLAorICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KEJ1aWx0
SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpKTsKIH0KIAogc2l6ZV90IEJhc2VUZXN0OjpHZXRO
dW1WaWRlb1N0cmVhbXMoKSBjb25zdCB7CkBAIC03NzcsNiArNzg1LDkgQEAgdm9pZCBCYXNlVGVz
dDo6TW9kaWZ5VmlkZW9DYXB0dXJlU3RhcnRSZXNvbHV0aW9uKGludCogd2lkdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBoZWlndCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGZyYW1l
X3JhdGUpIHt9CiAKK3ZvaWQgQmFzZVRlc3Q6Ok1vZGlmeVZpZGVvRGVncmFkYXRpb25QcmVmZXJl
bmNlKAorICAgIERlZ3JhZGF0aW9uUHJlZmVyZW5jZSogZGVncmFkYXRpb25fcHJlZmVyZW5jZSkg
e30KKwogdm9pZCBCYXNlVGVzdDo6T25WaWRlb1N0cmVhbXNDcmVhdGVkKAogICAgIFZpZGVvU2Vu
ZFN0cmVhbSogc2VuZF9zdHJlYW0sCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9SZWNlaXZl
U3RyZWFtKj4mIHJlY2VpdmVfc3RyZWFtcykge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY2FsbF90ZXN0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2NhbGxfdGVzdC5oCmluZGV4IDdh
NWMzZTliOGMxYTAwZWQ3MDZmODA0MmQxOTIyMTA2NzczNzE2NjMuLjg5NjFiN2ZjY2IzZjkzOTBl
MTI2OTEyNzk5MTRlYmM2NDI1Mzg5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY2FsbF90ZXN0LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jYWxsX3Rlc3QuaApAQCAtMTMsNiAr
MTMsOSBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRl
ICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNs
dWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNp
bmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2lu
Y2x1ZGUgImNhbGwvY2FsbC5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9s
bGVyX3NlbmQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xv
Zy5oIgpAQCAtMjIsOCArMjUsNiBAQAogI2luY2x1ZGUgInRlc3QvZmFrZV92aWRlb3JlbmRlcmVy
LmgiCiAjaW5jbHVkZSAidGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmgiCiAjaW5jbHVkZSAidGVzdC9m
cmFtZV9nZW5lcmF0b3JfY2FwdHVyZXIuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVv
X2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVzdC9ydHBfcnRjcF9vYnNlcnZlci5oIgogI2luY2x1
ZGUgInRlc3Qvc2luZ2xlX3RocmVhZGVkX3Rhc2tfcXVldWUuaCIKIApAQCAtMjA1LDYgKzIwNiw3
IEBAIGNsYXNzIENhbGxUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgIHRlc3Q6OkZ1
bmN0aW9uVmlkZW9FbmNvZGVyRmFjdG9yeSBmYWtlX2VuY29kZXJfZmFjdG9yeV87CiAgIGludCBm
YWtlX2VuY29kZXJfbWF4X2JpdHJhdGVfID0gLTE7CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9EZWNv
ZGVyRmFjdG9yeSBmYWtlX2RlY29kZXJfZmFjdG9yeV87CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PiBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XzsKICAg
Ly8gTnVtYmVyIG9mIHNpbXVsY2FzdCBzdWJzdHJlYW1zLgogICBzaXplX3QgbnVtX3ZpZGVvX3N0
cmVhbXNfOwogICBzaXplX3QgbnVtX2F1ZGlvX3N0cmVhbXNfOwpAQCAtMjQxLDggKzI0Myw4IEBA
IGNsYXNzIEJhc2VUZXN0IDogcHVibGljIFJ0cFJ0Y3BPYnNlcnZlciB7CiAgICAgICBUZXN0QXVk
aW9EZXZpY2VNb2R1bGUqIHNlbmRfYXVkaW9fZGV2aWNlLAogICAgICAgVGVzdEF1ZGlvRGV2aWNl
TW9kdWxlKiByZWN2X2F1ZGlvX2RldmljZSk7CiAKLSAgdmlydHVhbCB2b2lkIE1vZGlmeVNlbmRl
ckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpOwotICB2aXJ0dWFsIHZvaWQgTW9kaWZ5
UmVjZWl2ZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKTsKKyAgdmlydHVhbCB2b2lk
IE1vZGlmeVNlbmRlckJpdHJhdGVDb25maWcoQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2Nv
bmZpZyk7CisgIHZpcnR1YWwgdm9pZCBNb2RpZnlSZWNlaXZlckJpdHJhdGVDb25maWcoQml0cmF0
ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZyk7CiAKICAgdmlydHVhbCB2b2lkIE9uUnRwVHJh
bnNwb3J0Q29udHJvbGxlclNlbmRDcmVhdGVkKAogICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxl
clNlbmQqIGNvbnRyb2xsZXIpOwpAQCAtMjYxLDYgKzI2Myw5IEBAIGNsYXNzIEJhc2VUZXN0IDog
cHVibGljIFJ0cFJ0Y3BPYnNlcnZlciB7CiAgIHZpcnR1YWwgdm9pZCBNb2RpZnlWaWRlb0NhcHR1
cmVTdGFydFJlc29sdXRpb24oaW50KiB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGhlaWd0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogZnJhbWVfcmF0ZSk7CisgIHZpcnR1YWwg
dm9pZCBNb2RpZnlWaWRlb0RlZ3JhZGF0aW9uUHJlZmVyZW5jZSgKKyAgICAgIERlZ3JhZGF0aW9u
UHJlZmVyZW5jZSogZGVncmFkYXRpb25fcHJlZmVyZW5jZSk7CisKICAgdmlydHVhbCB2b2lkIE9u
VmlkZW9TdHJlYW1zQ3JlYXRlZCgKICAgICAgIFZpZGVvU2VuZFN0cmVhbSogc2VuZF9zdHJlYW0s
CiAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb1JlY2VpdmVTdHJlYW0qPiYgcmVjZWl2ZV9z
dHJlYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvY29uZmlndXJhYmxlX2ZyYW1lX3NpemVfZW5jb2Rlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY29uZmlndXJhYmxlX2ZyYW1l
X3NpemVfZW5jb2Rlci5jYwppbmRleCBjMGZlMjk2NmU4NWZmMjFiNzEyYWQ0ODI4MmE5NGFlYTk1
ODg1ODM1Li5iZGQ2MWQwMzJmYzgzNGExZDhkOTllNmMyNDE2YmZjNDM4YmQ2NWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2NvbmZp
Z3VyYWJsZV9mcmFtZV9zaXplX2VuY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jb25maWd1cmFibGVfZnJhbWVfc2l6ZV9lbmNvZGVy
LmNjCkBAIC0xMiw3ICsxMiw3IEBACiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KIAotI2luY2x1ZGUg
ImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVv
L2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRl
L3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
CkBAIC01NCw3ICs1NCw5IEBAIGludDMyX3QgQ29uZmlndXJhYmxlRnJhbWVTaXplRW5jb2Rlcjo6
RW5jb2RlKAogICBDb2RlY1NwZWNpZmljSW5mbyBzcGVjaWZpY3t9OwogICBzcGVjaWZpYy5jb2Rl
Y1R5cGUgPSBjb2RlY190eXBlXzsKICAgY2FsbGJhY2tfLT5PbkVuY29kZWRJbWFnZShlbmNvZGVk
SW1hZ2UsICZzcGVjaWZpYywgZnJhZ21lbnRhdGlvbik7Ci0KKyAgaWYgKHBvc3RfZW5jb2RlX2Nh
bGxiYWNrXykgeworICAgICgqcG9zdF9lbmNvZGVfY2FsbGJhY2tfKSgpOworICB9CiAgIHJldHVy
biBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKQEAgLTY4LDExICs3MCw2IEBAIGludDMyX3Qg
Q29uZmlndXJhYmxlRnJhbWVTaXplRW5jb2Rlcjo6UmVsZWFzZSgpIHsKICAgcmV0dXJuIFdFQlJU
Q19WSURFT19DT0RFQ19PSzsKIH0KIAotaW50MzJfdCBDb25maWd1cmFibGVGcmFtZVNpemVFbmNv
ZGVyOjpTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBydHQpIHsKLSAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLX0KLQogaW50MzJfdCBD
b25maWd1cmFibGVGcmFtZVNpemVFbmNvZGVyOjpTZXRSYXRlQWxsb2NhdGlvbigKICAgICBjb25z
dCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9uLAogICAgIHVpbnQzMl90IGZyYW1l
cmF0ZSkgewpAQCAtODksNSArODYsMTAgQEAgdm9pZCBDb25maWd1cmFibGVGcmFtZVNpemVFbmNv
ZGVyOjpTZXRDb2RlY1R5cGUoVmlkZW9Db2RlY1R5cGUgY29kZWNfdHlwZSkgewogICBjb2RlY190
eXBlXyA9IGNvZGVjX3R5cGU7CiB9CiAKK3ZvaWQgQ29uZmlndXJhYmxlRnJhbWVTaXplRW5jb2Rl
cjo6UmVnaXN0ZXJQb3N0RW5jb2RlQ2FsbGJhY2soCisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKHZv
aWQpPiBwb3N0X2VuY29kZV9jYWxsYmFjaykgeworICBwb3N0X2VuY29kZV9jYWxsYmFja18gPSBz
dGQ6Om1vdmUocG9zdF9lbmNvZGVfY2FsbGJhY2spOworfQorCiB9ICAvLyBuYW1lc3BhY2UgdGVz
dAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jb25maWd1cmFibGVfZnJhbWVfc2l6ZV9lbmNv
ZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Nv
bmZpZ3VyYWJsZV9mcmFtZV9zaXplX2VuY29kZXIuaAppbmRleCAxZGM5ZTQ4ZjQ3ZjVhYjdiZjBj
NDc4MDM4ZThiZGY1ODMxYmM1OWRkLi5mODgxNTEzZmNjMjczNjFmN2EwNGI0YmY2OGFlNTU3MGQz
ZWE4NzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L2NvbmZpZ3VyYWJsZV9mcmFtZV9zaXplX2VuY29kZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2NvbmZpZ3VyYWJsZV9mcmFt
ZV9zaXplX2VuY29kZXIuaApAQCAtMzcsOCArMzcsNiBAQCBjbGFzcyBDb25maWd1cmFibGVGcmFt
ZVNpemVFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAKICAgaW50MzJfdCBSZWxlYXNl
KCkgb3ZlcnJpZGU7CiAKLSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBw
YWNrZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwotCiAgIGludDMyX3QgU2V0UmF0ZUFs
bG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYWxsb2NhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIG92ZXJyaWRlOwogCkBA
IC00Niw4ICs0NCwxMyBAQCBjbGFzcyBDb25maWd1cmFibGVGcmFtZVNpemVFbmNvZGVyIDogcHVi
bGljIFZpZGVvRW5jb2RlciB7CiAKICAgdm9pZCBTZXRDb2RlY1R5cGUoVmlkZW9Db2RlY1R5cGUg
Y29kZWNfdHlwZV8pOwogCisgIHZvaWQgUmVnaXN0ZXJQb3N0RW5jb2RlQ2FsbGJhY2soCisgICAg
ICBzdGQ6OmZ1bmN0aW9uPHZvaWQodm9pZCk+IHBvc3RfZW5jb2RlX2NhbGxiYWNrKTsKKwogIHBy
aXZhdGU6CiAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFja187CisgIGFic2w6Om9wdGlv
bmFsPHN0ZDo6ZnVuY3Rpb248dm9pZCh2b2lkKT4+IHBvc3RfZW5jb2RlX2NhbGxiYWNrXzsKKwog
ICBjb25zdCBzaXplX3QgbWF4X2ZyYW1lX3NpemVfOwogICBzaXplX3QgY3VycmVudF9mcmFtZV9z
aXplXzsKICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gYnVmZmVyXzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZGlyZWN0X3Ry
YW5zcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZGlyZWN0X3RyYW5zcG9ydC5jYwppbmRleCA2YWE4YzkxNThmMGRlNjcyMGUyMjViYjQ4ZWFl
NDYzYTc5YTUzMzEzLi5mZDczNjkxNzFhMjIwMGM3MTRkNDk3MjdkYTFmNjBmNTczODVjYjk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L2RpcmVjdF90cmFuc3BvcnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9kaXJlY3RfdHJhbnNwb3J0LmNjCkBAIC03Miw2ICs3Miw4IEBAIGJv
b2wgRGlyZWN0VHJhbnNwb3J0OjpTZW5kUnRwKGNvbnN0IHVpbnQ4X3QqIGRhdGEsCiAgIGlmIChz
ZW5kX2NhbGxfKSB7CiAgICAgcnRjOjpTZW50UGFja2V0IHNlbnRfcGFja2V0KG9wdGlvbnMucGFj
a2V0X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja18tPlRpbWVJbk1p
bGxpc2Vjb25kcygpKTsKKyAgICBzZW50X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2ZlZWRiYWNr
ID0gb3B0aW9ucy5pbmNsdWRlZF9pbl9mZWVkYmFjazsKKyAgICBzZW50X3BhY2tldC5pbmZvLmlu
Y2x1ZGVkX2luX2FsbG9jYXRpb24gPSBvcHRpb25zLmluY2x1ZGVkX2luX2FsbG9jYXRpb247CiAg
ICAgc2VudF9wYWNrZXQuaW5mby5wYWNrZXRfc2l6ZV9ieXRlcyA9IGxlbmd0aDsKICAgICBzZW50
X3BhY2tldC5pbmZvLnBhY2tldF90eXBlID0gcnRjOjpQYWNrZXRUeXBlOjprRGF0YTsKICAgICBz
ZW5kX2NhbGxfLT5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9lbmNvZGVyX3NldHRpbmdz
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9lbmNv
ZGVyX3NldHRpbmdzLmNjCmluZGV4IDk0NTU1OWI0ZWUwMmVlODU1MTlmNzMzYmE4NWQ2ODljNzEy
OTk3MGUuLmJmYmQyYmRlYzQ3YTk4MzQ5OTFhMTM3YzNlOTUyMWZmNzU5MGFkYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZW5jb2Rl
cl9zZXR0aW5ncy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L2VuY29kZXJfc2V0dGluZ3MuY2MKQEAgLTYxLDYgKzYxLDE0IEBAIHN0ZDo6dmVj
dG9yPFZpZGVvU3RyZWFtPiBDcmVhdGVWaWRlb1N0cmVhbXMoCiAgICAgICAgICAgICAgID8gc3Ry
ZWFtLnRhcmdldF9iaXRyYXRlX2JwcwogICAgICAgICAgICAgICA6IERlZmF1bHRWaWRlb1N0cmVh
bUZhY3Rvcnk6OmtNYXhCaXRyYXRlUGVyU3RyZWFtW2ldOwogICAgICAgdGFyZ2V0X2JpdHJhdGVf
YnBzID0gc3RkOjptaW4obWF4X2JpdHJhdGVfYnBzLCB0YXJnZXRfYml0cmF0ZV9icHMpOworCisg
ICAgICBpZiAoc3RyZWFtLm1heF9mcmFtZXJhdGUgPiAwKSB7CisgICAgICAgIHN0cmVhbV9zZXR0
aW5nc1tpXS5tYXhfZnJhbWVyYXRlID0gc3RyZWFtLm1heF9mcmFtZXJhdGU7CisgICAgICB9Cisg
ICAgICBpZiAoc3RyZWFtLm51bV90ZW1wb3JhbF9sYXllcnMpIHsKKyAgICAgICAgUlRDX0RDSEVD
S19HRSgqc3RyZWFtLm51bV90ZW1wb3JhbF9sYXllcnMsIDEpOworICAgICAgICBzdHJlYW1fc2V0
dGluZ3NbaV0ubnVtX3RlbXBvcmFsX2xheWVycyA9IHN0cmVhbS5udW1fdGVtcG9yYWxfbGF5ZXJz
OworICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICBtYXhfYml0cmF0ZV9icHMgPSBzdGQ6Om1p
bigKICAgICAgICAgICBiaXRyYXRlX2xlZnRfYnBzLCBEZWZhdWx0VmlkZW9TdHJlYW1GYWN0b3J5
OjprTWF4Qml0cmF0ZVBlclN0cmVhbVtpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfZW5jb2Rlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV9lbmNvZGVyLmNjCmlu
ZGV4IGJjM2M3YjEwODdiNGVhMGY2YTk1ODc5YzdhZTQ3MjZhMzExOTE3OWMuLmRkYWJhNzdhNGY0
NWViYTEzNzA4ZGI4YWI2ZTliOWE0NDNlZWUwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV9lbmNvZGVyLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV9lbmNvZGVy
LmNjCkBAIC0xNSwxNiArMTUsMzMgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
bWVtb3J5PgogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5j
bHVkZSkKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUv
dnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3Rl
bXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUv
dmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvc2xlZXAuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CituYW1lc3BhY2UgeworY29uc3QgaW50IGtLZXlmcmFt
ZVNpemVGYWN0b3IgPSA1OworCisvLyBJbnZlcnNlIG9mIHByb3BvcnRpb24gb2YgZnJhbWVzIGFz
c2lnbmVkIHRvIGVhY2ggdGVtcG9yYWwgbGF5ZXIgZm9yIGFsbAorLy8gcG9zc2libGUgdGVtcG9y
YWwgbGF5ZXJzIG51bWJlcnMuCitjb25zdCBpbnQga1RlbXBvcmFsTGF5ZXJSYXRlRmFjdG9yWzRd
WzRdID0geworICAgIHsxLCAwLCAwLCAwfSwgIC8vIDEvMQorICAgIHsyLCAyLCAwLCAwfSwgIC8v
IDEvMiArIDEvMgorICAgIHs0LCA0LCAyLCAwfSwgIC8vIDEvNCArIDEvNCArIDEvMgorICAgIHs4
LCA4LCA0LCAyfSwgIC8vIDEvOCArIDEvOCArIDEvNCArIDEvMgorfTsKKwordm9pZCBXcml0ZUNv
dW50ZXIodW5zaWduZWQgY2hhciogcGF5bG9hZCwgdWludDMyX3QgY291bnRlcikgeworICBwYXls
b2FkWzBdID0gKGNvdW50ZXIgJiAweDAwRkYpOworICBwYXlsb2FkWzFdID0gKGNvdW50ZXIgJiAw
eEZGMDApID4+IDg7CisgIHBheWxvYWRbMl0gPSAoY291bnRlciAmIDB4RkYwMDAwKSA+PiAxNjsK
KyAgcGF5bG9hZFszXSA9IChjb3VudGVyICYgMHhGRjAwMDAwMCkgPj4gMjQ7Cit9CiAKLWNvbnN0
IGludCBrS2V5ZnJhbWVTaXplRmFjdG9yID0gMTA7Cit9OyAgLy8gbmFtZXNwYWNlCiAKIEZha2VF
bmNvZGVyOjpGYWtlRW5jb2RlcihDbG9jayogY2xvY2spCiAgICAgOiBjbG9ja18oY2xvY2spLApA
QCAtMzIsNiArNDksNyBAQCBGYWtlRW5jb2Rlcjo6RmFrZUVuY29kZXIoQ2xvY2sqIGNsb2NrKQog
ICAgICAgY29uZmlndXJlZF9pbnB1dF9mcmFtZXJhdGVfKC0xKSwKICAgICAgIG1heF90YXJnZXRf
Yml0cmF0ZV9rYnBzXygtMSksCiAgICAgICBwZW5kaW5nX2tleWZyYW1lXyh0cnVlKSwKKyAgICAg
IGNvdW50ZXJfKDApLAogICAgICAgZGVidF9ieXRlc18oMCkgewogICAvLyBHZW5lcmF0ZSBzb21l
IGFyYml0cmFyeSBub3QtYWxsLXplcm8gZGF0YQogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emVvZihlbmNvZGVkX2J1ZmZlcl8pOyArK2kpIHsKQEAgLTQ2LDYgKzY0LDcgQEAgdm9pZCBGYWtl
RW5jb2Rlcjo6U2V0TWF4Qml0cmF0ZShpbnQgbWF4X2ticHMpIHsKICAgUlRDX0RDSEVDS19HRSht
YXhfa2JwcywgLTEpOyAgLy8gbWF4X2ticHMgPT0gLTEgZGlzYWJsZXMgaXQuCiAgIHJ0Yzo6Q3Jp
dFNjb3BlIGNzKCZjcml0X3NlY3RfKTsKICAgbWF4X3RhcmdldF9iaXRyYXRlX2ticHNfID0gbWF4
X2ticHM7CisgIFNldFJhdGVBbGxvY2F0aW9uKHRhcmdldF9iaXRyYXRlXywgY29uZmlndXJlZF9p
bnB1dF9mcmFtZXJhdGVfKTsKIH0KIAogaW50MzJfdCBGYWtlRW5jb2Rlcjo6SW5pdEVuY29kZShj
b25zdCBWaWRlb0NvZGVjKiBjb25maWcsCkBAIC03MSw2ICs5MCw3IEBAIGludDMyX3QgRmFrZUVu
Y29kZXI6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9pbWFnZSwKICAgaW50IGZyYW1l
cmF0ZTsKICAgVmlkZW9Db2RlY01vZGUgbW9kZTsKICAgYm9vbCBrZXlmcmFtZTsKKyAgdWludDMy
X3QgY291bnRlcjsKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0X3NlY3RfKTsKICAg
ICBtYXhfZnJhbWVyYXRlID0gY29uZmlnXy5tYXhGcmFtZXJhdGU7CkBAIC04OCwxMyArMTA4LDE1
IEBAIGludDMyX3QgRmFrZUVuY29kZXI6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9p
bWFnZSwKICAgICB9CiAgICAga2V5ZnJhbWUgPSBwZW5kaW5nX2tleWZyYW1lXzsKICAgICBwZW5k
aW5nX2tleWZyYW1lXyA9IGZhbHNlOworICAgIGNvdW50ZXIgPSBjb3VudGVyXysrOwogICB9CiAK
ICAgRnJhbWVJbmZvIGZyYW1lX2luZm8gPQogICAgICAgTmV4dEZyYW1lKGZyYW1lX3R5cGVzLCBr
ZXlmcmFtZSwgbnVtX3NpbXVsY2FzdF9zdHJlYW1zLCB0YXJnZXRfYml0cmF0ZSwKICAgICAgICAg
ICAgICAgICBzaW11bGNhc3Rfc3RyZWFtcywgZnJhbWVyYXRlKTsKICAgZm9yICh1aW50OF90IGkg
PSAwOyBpIDwgZnJhbWVfaW5mby5sYXllcnMuc2l6ZSgpOyArK2kpIHsKLSAgICBpZiAoZnJhbWVf
aW5mby5sYXllcnNbaV0uc2l6ZSA9PSAwKSB7CisgICAgY29uc3RleHByIGludCBrTWluUGF5TG9h
ZExlbmd0aCA9IDE0OworICAgIGlmIChmcmFtZV9pbmZvLmxheWVyc1tpXS5zaXplIDwga01pblBh
eUxvYWRMZW5ndGgpIHsKICAgICAgIC8vIERyb3AgdGhpcyB0ZW1wb3JhbCBsYXllci4KICAgICAg
IGNvbnRpbnVlOwogICAgIH0KQEAgLTEwNCw3ICsxMjYsMTAgQEAgaW50MzJfdCBGYWtlRW5jb2Rl
cjo6RW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2ltYWdlLAogICAgIHNwZWNpZmljcy5j
b2RlY1R5cGUgPSBrVmlkZW9Db2RlY0dlbmVyaWM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4
X3RbXT4gZW5jb2RlZF9idWZmZXIoCiAgICAgICAgIG5ldyB1aW50OF90W2ZyYW1lX2luZm8ubGF5
ZXJzW2ldLnNpemVdKTsKLSAgICBtZW1jcHkoZW5jb2RlZF9idWZmZXIuZ2V0KCksIGVuY29kZWRf
YnVmZmVyXywgZnJhbWVfaW5mby5sYXllcnNbaV0uc2l6ZSk7CisgICAgbWVtY3B5KGVuY29kZWRf
YnVmZmVyLmdldCgpLCBlbmNvZGVkX2J1ZmZlcl8sCisgICAgICAgICAgIGZyYW1lX2luZm8ubGF5
ZXJzW2ldLnNpemUgLSA0KTsKKyAgICAvLyBXcml0ZSBhIGNvdW50ZXIgdG8gdGhlIGltYWdlIHRv
IG1ha2UgZWFjaCBmcmFtZSB1bmlxdWUuCisgICAgV3JpdGVDb3VudGVyKGVuY29kZWRfYnVmZmVy
LmdldCgpICsgZnJhbWVfaW5mby5sYXllcnNbaV0uc2l6ZSAtIDQsIGNvdW50ZXIpOwogICAgIEVu
Y29kZWRJbWFnZSBlbmNvZGVkKGVuY29kZWRfYnVmZmVyLmdldCgpLCBmcmFtZV9pbmZvLmxheWVy
c1tpXS5zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbmNvZGVkX2J1ZmZl
cl8pKTsKICAgICBlbmNvZGVkLlNldFRpbWVzdGFtcChpbnB1dF9pbWFnZS50aW1lc3RhbXAoKSk7
CkBAIC0xMTgsNyArMTQzLDYgQEAgaW50MzJfdCBGYWtlRW5jb2Rlcjo6RW5jb2RlKGNvbnN0IFZp
ZGVvRnJhbWUmIGlucHV0X2ltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/
IFZpZGVvQ29udGVudFR5cGU6OlNDUkVFTlNIQVJFCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogVmlkZW9Db250ZW50VHlwZTo6VU5TUEVDSUZJRUQ7CiAgICAgZW5jb2RlZC5TZXRT
cGF0aWFsSW5kZXgoaSk7Ci0gICAgc3BlY2lmaWNzLmNvZGVjX25hbWUgPSBJbXBsZW1lbnRhdGlv
bk5hbWUoKTsKICAgICBpZiAoY2FsbGJhY2stPk9uRW5jb2RlZEltYWdlKGVuY29kZWQsICZzcGVj
aWZpY3MsIG51bGxwdHIpLmVycm9yICE9CiAgICAgICAgIEVuY29kZWRJbWFnZUNhbGxiYWNrOjpS
ZXN1bHQ6Ok9LKSB7CiAgICAgICByZXR1cm4gLTE7CkBAIC0xNDYsNiArMTcwLDcgQEAgRmFrZUVu
Y29kZXI6OkZyYW1lSW5mbyBGYWtlRW5jb2Rlcjo6TmV4dEZyYW1lKAogICAgIH0KICAgfQogCisg
IHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0X3NlY3RfKTsKICAgZm9yICh1aW50OF90IGkgPSAwOyBp
IDwgbnVtX3NpbXVsY2FzdF9zdHJlYW1zOyArK2kpIHsKICAgICBpZiAodGFyZ2V0X2JpdHJhdGUu
R2V0Qml0cmF0ZShpLCAwKSA+IDApIHsKICAgICAgIGludCB0ZW1wb3JhbF9pZCA9IGxhc3RfZnJh
bWVfaW5mb18ubGF5ZXJzLnNpemUoKSA+IGkKQEAgLTE2Niw3ICsxOTEsOSBAQCBGYWtlRW5jb2Rl
cjo6RnJhbWVJbmZvIEZha2VFbmNvZGVyOjpOZXh0RnJhbWUoCiAgICAgaWYgKGZyYW1lX2luZm8u
a2V5ZnJhbWUpIHsKICAgICAgIGxheWVyX2luZm8udGVtcG9yYWxfaWQgPSAwOwogICAgICAgc2l6
ZV90IGF2Z19mcmFtZV9zaXplID0KLSAgICAgICAgICAodGFyZ2V0X2JpdHJhdGUuR2V0Qml0cmF0
ZShpLCAwKSArIDcpIC8gKDggKiBmcmFtZXJhdGUpOworICAgICAgICAgICh0YXJnZXRfYml0cmF0
ZS5HZXRCaXRyYXRlKGksIDApICsgNykgKgorICAgICAgICAgIGtUZW1wb3JhbExheWVyUmF0ZUZh
Y3RvcltmcmFtZV9pbmZvLmxheWVycy5zaXplKCkgLSAxXVtpXSAvCisgICAgICAgICAgKDggKiBm
cmFtZXJhdGUpOwogCiAgICAgICAvLyBUaGUgZmlyc3QgZnJhbWUgaXMgYSBrZXkgZnJhbWUgYW5k
IHNob3VsZCBiZSBsYXJnZXIuCiAgICAgICAvLyBTdG9yZSB0aGUgb3ZlcnNob290IGJ5dGVzIGFu
ZCBkaXN0cmlidXRlIHRoZW0gb3ZlciB0aGUgY29taW5nIGZyYW1lcywKQEAgLTE3NSw3ICsyMDIs
OCBAQCBGYWtlRW5jb2Rlcjo6RnJhbWVJbmZvIEZha2VFbmNvZGVyOjpOZXh0RnJhbWUoCiAgICAg
ICBsYXllcl9pbmZvLnNpemUgPSBrS2V5ZnJhbWVTaXplRmFjdG9yICogYXZnX2ZyYW1lX3NpemU7
CiAgICAgfSBlbHNlIHsKICAgICAgIHNpemVfdCBhdmdfZnJhbWVfc2l6ZSA9Ci0gICAgICAgICAg
KHRhcmdldF9iaXRyYXRlLkdldEJpdHJhdGUoaSwgbGF5ZXJfaW5mby50ZW1wb3JhbF9pZCkgKyA3
KSAvCisgICAgICAgICAgKHRhcmdldF9iaXRyYXRlLkdldEJpdHJhdGUoaSwgbGF5ZXJfaW5mby50
ZW1wb3JhbF9pZCkgKyA3KSAqCisgICAgICAgICAga1RlbXBvcmFsTGF5ZXJSYXRlRmFjdG9yW2Zy
YW1lX2luZm8ubGF5ZXJzLnNpemUoKSAtIDFdW2ldIC8KICAgICAgICAgICAoOCAqIGZyYW1lcmF0
ZSk7CiAgICAgICBsYXllcl9pbmZvLnNpemUgPSBhdmdfZnJhbWVfc2l6ZTsKICAgICAgIGlmIChk
ZWJ0X2J5dGVzXyA+IDApIHsKQEAgLTIwMSwxMCArMjI5LDYgQEAgaW50MzJfdCBGYWtlRW5jb2Rl
cjo6UmVsZWFzZSgpIHsKICAgcmV0dXJuIDA7CiB9CiAKLWludDMyX3QgRmFrZUVuY29kZXI6OlNl
dENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgewot
ICByZXR1cm4gMDsKLX0KLQogaW50MzJfdCBGYWtlRW5jb2Rlcjo6U2V0UmF0ZUFsbG9jYXRpb24o
CiAgICAgY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgcmF0ZV9hbGxvY2F0aW9uLAogICAg
IHVpbnQzMl90IGZyYW1lcmF0ZSkgewpAQCAtMjM2LDggKzI2MCwxMCBAQCBpbnQzMl90IEZha2VF
bmNvZGVyOjpTZXRSYXRlQWxsb2NhdGlvbigKIH0KIAogY29uc3QgY2hhciogRmFrZUVuY29kZXI6
OmtJbXBsZW1lbnRhdGlvbk5hbWUgPSAiZmFrZV9lbmNvZGVyIjsKLWNvbnN0IGNoYXIqIEZha2VF
bmNvZGVyOjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7Ci0gIHJldHVybiBrSW1wbGVtZW50
YXRpb25OYW1lOworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBGYWtlRW5jb2Rlcjo6R2V0RW5j
b2RlckluZm8oKSBjb25zdCB7CisgIEVuY29kZXJJbmZvIGluZm87CisgIGluZm8uaW1wbGVtZW50
YXRpb25fbmFtZSA9IGtJbXBsZW1lbnRhdGlvbk5hbWU7CisgIHJldHVybiBpbmZvOwogfQogCiBp
bnQgRmFrZUVuY29kZXI6OkdldENvbmZpZ3VyZWRJbnB1dEZyYW1lcmF0ZSgpIGNvbnN0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
ZmFrZV9lbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Zha2VfZW5jb2Rlci5oCmluZGV4IDY3YWNlYmVjNjljOTRiNzI3MGY2ZmQyODcxM2Zm
ZWY3OGRmMzg5NWYuLmRhMzhmMTFiNDU2Y2ZhYmFhNDdlNDY0NmQ1MGZmY2IzNmFiZWIzOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
ZmFrZV9lbmNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mYWtlX2VuY29kZXIuaApAQCAtMTUsNyArMTUsNiBAQAogI2luY2x1ZGUgPHZl
Y3Rvcj4KIAogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgotI2lu
Y2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2VxdWVu
Y2VkX3Rhc2tfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKQEAg
LTQxLDExICs0MCwxMCBAQCBjbGFzcyBGYWtlRW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIg
ewogICBpbnQzMl90IFJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaygKICAgICAgIEVuY29k
ZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgIGludDMyX3QgUmVsZWFzZSgp
IG92ZXJyaWRlOwotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tl
dF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CiAgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRp
b24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgcmF0ZV9hbGxvY2F0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgb3ZlcnJpZGU7Ci0gIGNv
bnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICBpbnQgR2V0
Q29uZmlndXJlZElucHV0RnJhbWVyYXRlKCkgY29uc3Q7CisgIEVuY29kZXJJbmZvIEdldEVuY29k
ZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgc3RhdGljIGNvbnN0IGNoYXIqIGtJbXBsZW1l
bnRhdGlvbk5hbWU7CiAKQEAgLTcxLDcgKzY5LDcgQEAgY2xhc3MgRmFrZUVuY29kZXIgOiBwdWJs
aWMgVmlkZW9FbmNvZGVyIHsKICAgICAgICAgICAgICAgICAgICAgICBTaW11bGNhc3RTdHJlYW0g
c2ltdWxjYXN0X3N0cmVhbXNba01heFNpbXVsY2FzdFN0cmVhbXNdLAogICAgICAgICAgICAgICAg
ICAgICAgIGludCBmcmFtZXJhdGUpOwogCi0gIEZyYW1lSW5mbyBsYXN0X2ZyYW1lX2luZm9fOwor
ICBGcmFtZUluZm8gbGFzdF9mcmFtZV9pbmZvXyBSVENfR1VBUkRFRF9CWShjcml0X3NlY3RfKTsK
ICAgQ2xvY2sqIGNvbnN0IGNsb2NrXzsKIAogICBWaWRlb0NvZGVjIGNvbmZpZ18gUlRDX0dVQVJE
RURfQlkoY3JpdF9zZWN0Xyk7CkBAIC04MCw2ICs3OCw3IEBAIGNsYXNzIEZha2VFbmNvZGVyIDog
cHVibGljIFZpZGVvRW5jb2RlciB7CiAgIGludCBjb25maWd1cmVkX2lucHV0X2ZyYW1lcmF0ZV8g
UlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CiAgIGludCBtYXhfdGFyZ2V0X2JpdHJhdGVfa2Jw
c18gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CiAgIGJvb2wgcGVuZGluZ19rZXlmcmFtZV8g
UlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CisgIHVpbnQzMl90IGNvdW50ZXJfIFJUQ19HVUFS
REVEX0JZKGNyaXRfc2VjdF8pOwogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X3NlY3RfOwog
CiAgIHVpbnQ4X3QgZW5jb2RlZF9idWZmZXJfWzEwMDAwMF07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2RlY29kZXIu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2Vf
dnA4X2RlY29kZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE1YmIyMTQ5ZGVhNGYyZWY2ZWM3OWU5YmIzNThk
YjIzOGJiYjJiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhfZGVjb2Rlci5jYwpAQCAtMCwwICsxLDc3IEBA
CisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInRlc3QvZmFrZV92cDhfZGVjb2Rl
ci5oIgorCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvdGltZXV0aWxzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3Qg
eworCituYW1lc3BhY2UgeworLy8gUmVhZCB3aWR0aCBhbmQgaGVpZ2h0IGZyb20gdGhlIHBheWxv
YWQgb2YgdGhlIGZyYW1lIGlmIGl0IGlzIGEga2V5IGZyYW1lIHRoZQorLy8gc2FtZSB3YXkgYXMg
dGhlIHJlYWwgVlA4IGRlY29kZXIuCisvLyBGYWtlRW5jb2RlciB3cml0ZXMgd2lkdGgsIGhlaWdo
dCBhbmQgZnJhbWUgdHlwZS4KK3ZvaWQgUGFyc2VGYWtlVnA4KGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGRhdGEsIGludCogd2lkdGgsIGludCogaGVpZ2h0KSB7CisgIGJvb2wga2V5X2ZyYW1lID0gZGF0
YVswXSA9PSAwOworICBpZiAoa2V5X2ZyYW1lKSB7CisgICAgKndpZHRoID0gKChkYXRhWzddIDw8
IDgpICsgZGF0YVs2XSkgJiAweDNGRkY7CisgICAgKmhlaWdodCA9ICgoZGF0YVs5XSA8PCA4KSAr
IGRhdGFbOF0pICYgMHgzRkZGOworICB9Cit9Cit9ICAvLyBuYW1lc3BhY2UKKworRmFrZVZwOERl
Y29kZXI6OkZha2VWcDhEZWNvZGVyKCkgOiBjYWxsYmFja18obnVsbHB0ciksIHdpZHRoXygwKSwg
aGVpZ2h0XygwKSB7fQorCitpbnQzMl90IEZha2VWcDhEZWNvZGVyOjpJbml0RGVjb2RlKGNvbnN0
IFZpZGVvQ29kZWMqIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCBudW1iZXJfb2ZfY29yZXMpIHsKKyAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19P
SzsKK30KKworaW50MzJfdCBGYWtlVnA4RGVjb2Rlcjo6RGVjb2RlKGNvbnN0IEVuY29kZWRJbWFn
ZSYgaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtaXNzaW5nX2Zy
YW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmlj
SW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IHJlbmRlcl90aW1lX21zKSB7CisgIGNvbnN0ZXhwciBzaXplX3Qga01pblBheUxv
YWRIZWFkZXJMZW5ndGggPSAxMDsKKyAgaWYgKGlucHV0Ll9sZW5ndGggPCBrTWluUGF5TG9hZEhl
YWRlckxlbmd0aCkgeworICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CisgIH0K
KyAgUGFyc2VGYWtlVnA4KGlucHV0Ll9idWZmZXIsICZ3aWR0aF8sICZoZWlnaHRfKTsKKworICBW
aWRlb0ZyYW1lIGZyYW1lKEk0MjBCdWZmZXI6OkNyZWF0ZSh3aWR0aF8sIGhlaWdodF8pLAorICAg
ICAgICAgICAgICAgICAgIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCwKKyAgICAgICAgICAgICAg
ICAgICByZW5kZXJfdGltZV9tcyAqIHJ0Yzo6a051bU1pY3Jvc2Vjc1Blck1pbGxpc2VjKTsKKyAg
ZnJhbWUuc2V0X3RpbWVzdGFtcChpbnB1dC5UaW1lc3RhbXAoKSk7CisgIGZyYW1lLnNldF9udHBf
dGltZV9tcyhpbnB1dC5udHBfdGltZV9tc18pOworCisgIGNhbGxiYWNrXy0+RGVjb2RlZChmcmFt
ZSwgLypkZWNvZGVfdGltZV9tcz0qL2Fic2w6Om51bGxvcHQsCisgICAgICAgICAgICAgICAgICAg
ICAvKnFwPSovYWJzbDo6bnVsbG9wdCk7CisKKyAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19P
SzsKK30KKworaW50MzJfdCBGYWtlVnA4RGVjb2Rlcjo6UmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNh
bGxiYWNrKAorICAgIERlY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgeworICBjYWxsYmFj
a18gPSBjYWxsYmFjazsKKyAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKK30KKworaW50
MzJfdCBGYWtlVnA4RGVjb2Rlcjo6UmVsZWFzZSgpIHsKKyAgcmV0dXJuIFdFQlJUQ19WSURFT19D
T0RFQ19PSzsKK30KKworY29uc3QgY2hhciogRmFrZVZwOERlY29kZXI6OmtJbXBsZW1lbnRhdGlv
bk5hbWUgPSAiZmFrZV92cDhfZGVjb2RlciI7Citjb25zdCBjaGFyKiBGYWtlVnA4RGVjb2Rlcjo6
SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3QgeworICByZXR1cm4ga0ltcGxlbWVudGF0aW9uTmFt
ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
ZmFrZV92cDhfZGVjb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mYWtlX3ZwOF9kZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc0YWY0MDNkNjkyMDQw
ZDZhNTZkNTQ2YTIzYzA1YTY0YzVhYmEwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhfZGVjb2Rlci5oCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFRFU1RfRkFL
RV9WUDhfREVDT0RFUl9IXworI2RlZmluZSBURVNUX0ZBS0VfVlA4X0RFQ09ERVJfSF8KKworI2lu
Y2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNl
LmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKKworbmFtZXNw
YWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKK2NsYXNzIEZha2VWcDhEZWNvZGVyIDog
cHVibGljIFZpZGVvRGVjb2RlciB7CisgcHVibGljOgorICBGYWtlVnA4RGVjb2RlcigpOworICB+
RmFrZVZwOERlY29kZXIoKSBvdmVycmlkZSB7fQorCisgIGludDMyX3QgSW5pdERlY29kZShjb25z
dCBWaWRlb0NvZGVjKiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IG51bWJl
cl9vZl9jb3Jlcykgb3ZlcnJpZGU7CisKKyAgaW50MzJfdCBEZWNvZGUoY29uc3QgRW5jb2RlZElt
YWdlJiBpbnB1dCwKKyAgICAgICAgICAgICAgICAgYm9vbCBtaXNzaW5nX2ZyYW1lcywKKyAgICAg
ICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8s
CisgICAgICAgICAgICAgICAgIGludDY0X3QgcmVuZGVyX3RpbWVfbXMpIG92ZXJyaWRlOworCisg
IGludDMyX3QgUmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKAorICAgICAgRGVjb2RlZElt
YWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKKworICBpbnQzMl90IFJlbGVhc2UoKSBv
dmVycmlkZTsKKworICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKKworICBzdGF0aWMgY29uc3QgY2hhcioga0ltcGxlbWVudGF0aW9uTmFtZTsKKworIHBy
aXZhdGU6CisgIERlY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFja187CisgIGludCB3aWR0aF87
CisgIGludCBoZWlnaHRfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBURVNUX0ZBS0VfVlA4X0RFQ09ERVJfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFr
ZV92cDhfZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3QvZmFrZV92cDhfZW5jb2Rlci5jYwppbmRleCA0MDM4ODM3Nzk4MzE1NjAxYWQ4MTJl
Y2I2M2VkOWFhZWM1YmM0ZmFjLi45MTgwYmVjMDQ5OTZiNjg4NTgzZmVhNjU2N2UxZmEwNDc4Y2Ex
NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Zha2VfdnA4X2VuY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmNjCkBAIC0xMCw4ICsxMCw4
IEBACiAKICNpbmNsdWRlICJ0ZXN0L2Zha2VfdnA4X2VuY29kZXIuaCIKIAotI2luY2x1ZGUgImNv
bW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIK
KyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmgi
CisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vycm9yX2Nv
ZGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3Rf
dXRpbGl0eS5oIgpAQCAtMjAsNiArMjAsMjYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9yYW5kb20u
aCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAorbmFtZXNwYWNlIHsKKworLy8g
V3JpdGUgd2lkdGggYW5kIGhlaWdodCB0byB0aGUgcGF5bG9hZCB0aGUgc2FtZSB3YXkgYXMgdGhl
IHJlYWwgZW5jb2RlciBkb2VzLgorLy8gSXQgcmVxdWlyZXMgdGhhdCB8cGF5bG9hZHwgaGFzIGEg
c2l6ZSBvZiBhdCBsZWFzdCBrTWluUGF5TG9hZEhlYWRlckxlbmd0aC4KK3ZvaWQgV3JpdGVGYWtl
VnA4KHVuc2lnbmVkIGNoYXIqIHBheWxvYWQsCisgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgs
CisgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgYm9vbCBr
ZXlfZnJhbWUpIHsKKyAgcGF5bG9hZFswXSA9IGtleV9mcmFtZSA/IDAgOiAweDAxOworCisgIGlm
IChrZXlfZnJhbWUpIHsKKyAgICBwYXlsb2FkWzldID0gKGhlaWdodCAmIDB4M0YwMCkgPj4gODsK
KyAgICBwYXlsb2FkWzhdID0gKGhlaWdodCAmIDB4MDBGRik7CisKKyAgICBwYXlsb2FkWzddID0g
KHdpZHRoICYgMHgzRjAwKSA+PiA4OworICAgIHBheWxvYWRbNl0gPSAod2lkdGggJiAweDAwRkYp
OworICB9Cit9Cit9ICAvLyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIG5hbWVz
cGFjZSB0ZXN0IHsKQEAgLTYzLDE4ICs4MywxOCBAQCB2b2lkIEZha2VWUDhFbmNvZGVyOjpTZXR1
cFRlbXBvcmFsTGF5ZXJzKGNvbnN0IFZpZGVvQ29kZWMmIGNvZGVjKSB7CiAKICAgaW50IG51bV9z
dHJlYW1zID0gU2ltdWxjYXN0VXRpbGl0eTo6TnVtYmVyT2ZTaW11bGNhc3RTdHJlYW1zKGNvZGVj
KTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3RyZWFtczsgKytpKSB7Ci0gICAgVGVtcG9y
YWxMYXllcnNUeXBlIHR5cGU7CisgICAgVnA4VGVtcG9yYWxMYXllcnNUeXBlIHR5cGU7CiAgICAg
aW50IG51bV90ZW1wb3JhbF9sYXllcnMgPQogICAgICAgICBTaW11bGNhc3RVdGlsaXR5OjpOdW1i
ZXJPZlRlbXBvcmFsTGF5ZXJzKGNvZGVjLCBpKTsKICAgICBpZiAoU2ltdWxjYXN0VXRpbGl0eTo6
SXNDb25mZXJlbmNlTW9kZVNjcmVlbnNoYXJlKGNvZGVjKSAmJiBpID09IDApIHsKLSAgICAgIHR5
cGUgPSBUZW1wb3JhbExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1pYzsKKyAgICAgIHR5cGUgPSBW
cDhUZW1wb3JhbExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1pYzsKICAgICAgIC8vIExlZ2FjeSBz
Y3JlZW5zaGFyZSBsYXllcnMgc3VwcG9ydHMgbWF4IDIgbGF5ZXJzLgogICAgICAgbnVtX3RlbXBv
cmFsX2xheWVycyA9IHN0ZDo6bWF4PGludD4oMiwgbnVtX3RlbXBvcmFsX2xheWVycyk7CiAgICAg
fSBlbHNlIHsKLSAgICAgIHR5cGUgPSBUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBhdHRlcm47
CisgICAgICB0eXBlID0gVnA4VGVtcG9yYWxMYXllcnNUeXBlOjprRml4ZWRQYXR0ZXJuOwogICAg
IH0KICAgICB0ZW1wb3JhbF9sYXllcnNfLmVtcGxhY2VfYmFjaygKLSAgICAgICAgVGVtcG9yYWxM
YXllcnM6OkNyZWF0ZVRlbXBvcmFsTGF5ZXJzKHR5cGUsIG51bV90ZW1wb3JhbF9sYXllcnMpKTsK
KyAgICAgICAgQ3JlYXRlVnA4VGVtcG9yYWxMYXllcnModHlwZSwgbnVtX3RlbXBvcmFsX2xheWVy
cykpOwogICB9CiB9CiAKQEAgLTg1LDcgKzEwNSw2IEBAIHZvaWQgRmFrZVZQOEVuY29kZXI6OlBv
cHVsYXRlQ29kZWNTcGVjaWZpYyhDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZXN0
YW1wKSB7CiAgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VfY2hlY2tl
cl8pOwogICBjb2RlY19zcGVjaWZpYy0+Y29kZWNUeXBlID0ga1ZpZGVvQ29kZWNWUDg7Ci0gIGNv
ZGVjX3NwZWNpZmljLT5jb2RlY19uYW1lID0gSW1wbGVtZW50YXRpb25OYW1lKCk7CiAgIENvZGVj
U3BlY2lmaWNJbmZvVlA4KiB2cDhJbmZvID0gJihjb2RlY19zcGVjaWZpYy0+Y29kZWNTcGVjaWZp
Yy5WUDgpOwogICB2cDhJbmZvLT5rZXlJZHggPSBrTm9LZXlJZHg7CiAgIHZwOEluZm8tPm5vblJl
ZmVyZW5jZSA9IGZhbHNlOwpAQCAtMTA1LDkgKzEyNCwyMCBAQCBFbmNvZGVkSW1hZ2VDYWxsYmFj
azo6UmVzdWx0IEZha2VWUDhFbmNvZGVyOjpPbkVuY29kZWRJbWFnZSgKICAgICAgICAgICAgICAg
ICAgICAgICAgIGVuY29kZWRfaW1hZ2UuX2ZyYW1lVHlwZSwgc3RyZWFtX2lkeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kZWRfaW1hZ2UuVGltZXN0YW1wKCkpOwogCisgIC8vIFdyaXRl
IHdpZHRoIGFuZCBoZWlnaHQgdG8gdGhlIHBheWxvYWQgdGhlIHNhbWUgd2F5IGFzIHRoZSByZWFs
IGVuY29kZXIKKyAgLy8gZG9lcy4KKyAgV3JpdGVGYWtlVnA4KGVuY29kZWRfaW1hZ2UuX2J1ZmZl
ciwgZW5jb2RlZF9pbWFnZS5fZW5jb2RlZFdpZHRoLAorICAgICAgICAgICAgICAgZW5jb2RlZF9p
bWFnZS5fZW5jb2RlZEhlaWdodCwKKyAgICAgICAgICAgICAgIGVuY29kZWRfaW1hZ2UuX2ZyYW1l
VHlwZSA9PSBrVmlkZW9GcmFtZUtleSk7CiAgIHJldHVybiBjYWxsYmFja18tPk9uRW5jb2RlZElt
YWdlKGVuY29kZWRfaW1hZ2UsICZvdmVycmlkZWRfc3BlY2lmaWNfaW5mbywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRzKTsKIH0KIAorVmlkZW9FbmNvZGVyOjpF
bmNvZGVySW5mbyBGYWtlVlA4RW5jb2Rlcjo6R2V0RW5jb2RlckluZm8oKSBjb25zdCB7CisgIEVu
Y29kZXJJbmZvIGluZm87CisgIGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSA9ICJGYWtlVnA4RW5j
b2RlciI7CisgIHJldHVybiBpbmZvOworfQorCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29kZXIuaAppbmRleCA3
NTE4ZTNhMmRiNWQzNTg0MDVmZmMxNmM4NmE3M2QwMjU3MWM4Y2U0Li5hNGQ2M2E5YWUzMGE2NzAx
Y2EwYmIyYTZlYjM5YzQ5NWYwN2IxMWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29kZXIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29k
ZXIuaApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUv
dnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3Rl
bXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgInRlc3QvZmFrZV9lbmNvZGVyLmgiCiAKICNpbmNs
dWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKQEAgLTM3LDEyICszNywxMiBAQCBjbGFz
cyBGYWtlVlA4RW5jb2RlciA6IHB1YmxpYyBGYWtlRW5jb2RlciwgcHVibGljIEVuY29kZWRJbWFn
ZUNhbGxiYWNrIHsKIAogICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZTsKIAotICBjb25zdCBj
aGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiRmFrZVZw
OEVuY29kZXIiOyB9Ci0KICAgUmVzdWx0IE9uRW5jb2RlZEltYWdlKGNvbnN0IEVuY29kZWRJbWFn
ZSYgZW5jb2RlZEltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVj
aWZpY0luZm8qIGNvZGVjU3BlY2lmaWNJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRzKSBvdmVycmlkZTsKIAorICBFbmNv
ZGVySW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0IG92ZXJyaWRlOworCiAgcHJpdmF0ZToKICAg
dm9pZCBTZXR1cFRlbXBvcmFsTGF5ZXJzKGNvbnN0IFZpZGVvQ29kZWMmIGNvZGVjKTsKICAgdm9p
ZCBQb3B1bGF0ZUNvZGVjU3BlY2lmaWMoQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmlj
LApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBGYWtlVlA4RW5jb2RlciA6IHB1YmxpYyBGYWtlRW5j
b2RlciwgcHVibGljIEVuY29kZWRJbWFnZUNhbGxiYWNrIHsKICAgcnRjOjpTZXF1ZW5jZWRUYXNr
Q2hlY2tlciBzZXF1ZW5jZV9jaGVja2VyXzsKICAgRW5jb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxi
YWNrXyBSVENfR1VBUkRFRF9CWShzZXF1ZW5jZV9jaGVja2VyXyk7CiAKLSAgc3RkOjp2ZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFRlbXBvcmFsTGF5ZXJzPj4gdGVtcG9yYWxfbGF5ZXJzXworICBzdGQ6
OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VnA4VGVtcG9yYWxMYXllcnM+PiB0ZW1wb3JhbF9sYXll
cnNfCiAgICAgICBSVENfR1VBUkRFRF9CWShzZXF1ZW5jZV9jaGVja2VyXyk7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zh
a2VfdnA4X2VuY29kZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29kZXJfdW5pdHRlc3QuY2MKaW5kZXggYzc5
YmEwYzU1MTVjNWZkNjU0MDRiZGEwNThjZWUwYzgyZGFlYjQzOC4uNGU1NzZmZTljOWMyNTM2NGYx
NDg5YzlmMTk5ODg1ZmFhMjg5OTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVyX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV92
cDhfZW5jb2Rlcl91bml0dGVzdC5jYwpAQCAtMTQsMTEgKzE0LDExIEBACiAjaW5jbHVkZSAiYWJz
bC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL3Rlc3QvY3JlYXRlX3NpbXVsY2FzdF90
ZXN0X2ZpeHR1cmUuaCIKICNpbmNsdWRlICJhcGkvdGVzdC9zaW11bGNhc3RfdGVzdF9maXh0dXJl
LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNh
c3RfdGVzdF9maXh0dXJlX2ltcGwuaCIKLSNpbmNsdWRlICJ0ZXN0L2Zha2VfZGVjb2Rlci5oIgor
I2luY2x1ZGUgInRlc3QvZmFrZV92cDhfZGVjb2Rlci5oIgogI2luY2x1ZGUgInRlc3QvZmFrZV92
cDhfZW5jb2Rlci5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5LmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CkBAIC0zMiw3ICszMiw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxTaW11bGNhc3RUZXN0Rml4dHVyZT4gQ3JlYXRlU3BlY2lmaWNTaW11
bGNhc3RUZXN0Rml4dHVyZSgpIHsKICAgICAgIH0pOwogICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9E
ZWNvZGVyRmFjdG9yeT4gZGVjb2Rlcl9mYWN0b3J5ID0KICAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PEZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9yeT4oCi0gICAgICAgICAgW10oKSB7IHJldHVybiBh
YnNsOjptYWtlX3VuaXF1ZTxGYWtlRGVjb2Rlcj4oKTsgfSk7CisgICAgICAgICAgW10oKSB7IHJl
dHVybiBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlVnA4RGVjb2Rlcj4oKTsgfSk7CiAgIHJldHVybiBD
cmVhdGVTaW11bGNhc3RUZXN0Rml4dHVyZShzdGQ6Om1vdmUoZW5jb2Rlcl9mYWN0b3J5KSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShkZWNvZGVyX2ZhY3Rv
cnkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVmlkZW9Gb3JtYXQo
IlZQOCIpKTsKQEAgLTk5LDUgKzk5LDEwIEBAIFRFU1QoVGVzdEZha2VWcDhDb2RlYywgVGVzdFNw
YXRpb1RlbXBvcmFsTGF5ZXJzMzMzUGF0dGVybkVuY29kZXIpIHsKICAgZml4dHVyZS0+VGVzdFNw
YXRpb1RlbXBvcmFsTGF5ZXJzMzMzUGF0dGVybkVuY29kZXIoKTsKIH0KIAorVEVTVChUZXN0RmFr
ZVZwOENvZGVjLCBUZXN0RGVjb2RlV2lkdGhIZWlnaHRTZXQpIHsKKyAgYXV0byBmaXh0dXJlID0g
Q3JlYXRlU3BlY2lmaWNTaW11bGNhc3RUZXN0Rml4dHVyZSgpOworICBmaXh0dXJlLT5UZXN0RGVj
b2RlV2lkdGhIZWlnaHRTZXQoKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZnJhbWVfZ2VuZXJhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mcmFtZV9nZW5lcmF0b3IuY2MKaW5kZXggYWNk
NjNmOTMxMjIwYjU4ODM2YjFmNWNiYjAzZTZkY2Y0ZGE2YjA2MC4uZjZmZDI4NWMxYTEzZWFlZWRh
ZjA4NTNlMzA4MGRkMjJhZjU1NTE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mcmFtZV9nZW5lcmF0b3IuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mcmFtZV9nZW5lcmF0b3Iu
Y2MKQEAgLTM5MCwxMSArMzkwLDExIEBAIGNsYXNzIFNjcm9sbGluZ0ltYWdlRnJhbWVHZW5lcmF0
b3IgOiBwdWJsaWMgRnJhbWVHZW5lcmF0b3IgewogICAgICAgICAgICAgICAgICAgIChwaXhlbHNf
c2Nyb2xsZWRfeCAvIDIpOwogCiAgICAgY3VycmVudF9mcmFtZV8gPSB3ZWJydGM6OlZpZGVvRnJh
bWUoCi0gICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8d2VicnRjOjpXcmFwcGVkSTQy
MEJ1ZmZlcj4oCi0gICAgICAgICAgICB0YXJnZXRfd2lkdGhfLCB0YXJnZXRfaGVpZ2h0XywgJmk0
MjBfYnVmZmVyLT5EYXRhWSgpW29mZnNldF95XSwKLSAgICAgICAgICAgIGk0MjBfYnVmZmVyLT5T
dHJpZGVZKCksICZpNDIwX2J1ZmZlci0+RGF0YVUoKVtvZmZzZXRfdV0sCi0gICAgICAgICAgICBp
NDIwX2J1ZmZlci0+U3RyaWRlVSgpLCAmaTQyMF9idWZmZXItPkRhdGFWKClbb2Zmc2V0X3ZdLAot
ICAgICAgICAgICAgaTQyMF9idWZmZXItPlN0cmlkZVYoKSwgS2VlcFJlZlVudGlsRG9uZShpNDIw
X2J1ZmZlcikpLAorICAgICAgICBXcmFwSTQyMEJ1ZmZlcih0YXJnZXRfd2lkdGhfLCB0YXJnZXRf
aGVpZ2h0XywKKyAgICAgICAgICAgICAgICAgICAgICAgJmk0MjBfYnVmZmVyLT5EYXRhWSgpW29m
ZnNldF95XSwgaTQyMF9idWZmZXItPlN0cmlkZVkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
Jmk0MjBfYnVmZmVyLT5EYXRhVSgpW29mZnNldF91XSwgaTQyMF9idWZmZXItPlN0cmlkZVUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgJmk0MjBfYnVmZmVyLT5EYXRhVigpW29mZnNldF92XSwg
aTQyMF9idWZmZXItPlN0cmlkZVYoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgS2VlcFJlZlVu
dGlsRG9uZShpNDIwX2J1ZmZlcikpLAogICAgICAgICBrVmlkZW9Sb3RhdGlvbl8wLCAwKTsKICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2Zh
Y3RvcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg0Zjg1MzRiZTAwYmI1OTAx
ZTlhYjc5OTQyMzAxOGYzMDM5YmUwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTYgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgVEVTVF9GVU5DVElP
Tl9WSURFT19ERUNPREVSX0ZBQ1RPUllfSF8KLSNkZWZpbmUgVEVTVF9GVU5DVElPTl9WSURFT19E
RUNPREVSX0ZBQ1RPUllfSF8KLQotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8bWVt
b3J5PgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAi
YXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgdGVzdCB7Ci0KLS8vIEEgZGVj
b2RlciBmYWN0b3J5IHByb2R1Y2luZyBkZWNvZGVycyBieSBjYWxsaW5nIGEgc3VwcGxpZWQgY3Jl
YXRlIGZ1bmN0aW9uLgotY2xhc3MgRnVuY3Rpb25WaWRlb0RlY29kZXJGYWN0b3J5IGZpbmFsIDog
cHVibGljIFZpZGVvRGVjb2RlckZhY3RvcnkgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgRnVuY3Rp
b25WaWRlb0RlY29kZXJGYWN0b3J5KAotICAgICAgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9w
dHI8VmlkZW9EZWNvZGVyPigpPiBjcmVhdGUpCi0gICAgICA6IGNyZWF0ZV8oW2NyZWF0ZV0oY29u
c3QgU2RwVmlkZW9Gb3JtYXQmKSB7IHJldHVybiBjcmVhdGUoKTsgfSkge30KLSAgZXhwbGljaXQg
RnVuY3Rpb25WaWRlb0RlY29kZXJGYWN0b3J5KAotICAgICAgc3RkOjpmdW5jdGlvbjxzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9EZWNvZGVyPihjb25zdCBTZHBWaWRlb0Zvcm1hdCYpPgotICAgICAgICAg
IGNyZWF0ZSkKLSAgICAgIDogY3JlYXRlXyhzdGQ6Om1vdmUoY3JlYXRlKSkge30KLQotICAvLyBV
bnVzZWQgYnkgdGVzdHMuCi0gIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBHZXRTdXBwb3J0
ZWRGb3JtYXRzKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIHt9OwotICB9Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4gQ3JlYXRl
VmlkZW9EZWNvZGVyKAotICAgICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgb3ZlcnJp
ZGUgewotICAgIHJldHVybiBjcmVhdGVfKGZvcm1hdCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4oY29uc3QgU2Rw
VmlkZW9Gb3JtYXQmKT4KLSAgICAgIGNyZWF0ZV87Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgdGVz
dAotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIFRFU1RfRlVOQ1RJT05fVklE
RU9fREVDT0RFUl9GQUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdW5jdGlv
bl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTY3Mzk3ZjZjMGM2OTc5OTRjNjBiNTE0OWIxZDZkYzM3YWE0MGQwNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNp
Zm5kZWYgVEVTVF9GVU5DVElPTl9WSURFT19FTkNPREVSX0ZBQ1RPUllfSF8KLSNkZWZpbmUgVEVT
VF9GVU5DVElPTl9WSURFT19FTkNPREVSX0ZBQ1RPUllfSF8KLQotI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVj
dG9yPgotCi0jaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCi0j
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2Ug
dGVzdCB7Ci0KLS8vIEFuIGVuY29kZXIgZmFjdG9yeSBwcm9kdWNpbmcgZW5jb2RlcnMgYnkgY2Fs
bGluZyBhIHN1cHBsaWVkIGNyZWF0ZQotLy8gZnVuY3Rpb24uCi1jbGFzcyBGdW5jdGlvblZpZGVv
RW5jb2RlckZhY3RvcnkgZmluYWwgOiBwdWJsaWMgVmlkZW9FbmNvZGVyRmFjdG9yeSB7Ci0gcHVi
bGljOgotICBleHBsaWNpdCBGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkoCi0gICAgICBzdGQ6
OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KCk+IGNyZWF0ZSkKLSAgICAg
IDogY3JlYXRlXyhbY3JlYXRlXShjb25zdCBTZHBWaWRlb0Zvcm1hdCYpIHsgcmV0dXJuIGNyZWF0
ZSgpOyB9KSB7fQotICBleHBsaWNpdCBGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkoCi0gICAg
ICBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KGNvbnN0IFNkcFZp
ZGVvRm9ybWF0Jik+Ci0gICAgICAgICAgY3JlYXRlKQotICAgICAgOiBjcmVhdGVfKHN0ZDo6bW92
ZShjcmVhdGUpKSB7fQotCi0gIC8vIFVudXNlZCBieSB0ZXN0cy4KLSAgc3RkOjp2ZWN0b3I8U2Rw
VmlkZW9Gb3JtYXQ+IEdldFN1cHBvcnRlZEZvcm1hdHMoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAg
UlRDX05PVFJFQUNIRUQoKTsKLSAgICByZXR1cm4ge307Ci0gIH0KLQotICBDb2RlY0luZm8gUXVl
cnlWaWRlb0VuY29kZXIoCi0gICAgICBjb25zdCBTZHBWaWRlb0Zvcm1hdCYgLyogZm9ybWF0ICov
KSBjb25zdCBvdmVycmlkZSB7Ci0gICAgQ29kZWNJbmZvIGNvZGVjX2luZm87Ci0gICAgY29kZWNf
aW5mby5pc19oYXJkd2FyZV9hY2NlbGVyYXRlZCA9IGZhbHNlOwotICAgIGNvZGVjX2luZm8uaGFz
X2ludGVybmFsX3NvdXJjZSA9IGZhbHNlOwotICAgIHJldHVybiBjb2RlY19pbmZvOwotICB9Ci0K
LSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVyKAotICAg
ICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgb3ZlcnJpZGUgewotICAgIHJldHVybiBj
cmVhdGVfKGZvcm1hdCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
c3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4oY29uc3QgU2RwVmlkZW9Gb3JtYXQmKT4KLSAg
ICAgIGNyZWF0ZV87Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgdGVzdAotfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwotCi0jZW5kaWYgIC8vIFRFU1RfRlVOQ1RJT05fVklERU9fRU5DT0RFUl9GQUNUT1JZ
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Z1enplcnMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvQlVJTEQuZ24KaW5kZXggY2NjMTVhNjEwMDVlOWQzYWU4
NjJmMDBjNjJkMmQ1YTY4OWYzYTQ5Ny4uNDNkZTVmOTk4Y2VmNjEwODAwMDQxOGQwZTdmYzVjOTUw
NGRhZjZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mdXp6ZXJzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9CVUlMRC5nbgpAQCAtNiw5ICs2LDkgQEAK
ICMgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQogIyBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KIAotaW1wb3J0KCIuLi8uLi93ZWJydGMuZ25pIikKIGltcG9ydCgiLy9idWls
ZC9jb25maWcvZmVhdHVyZXMuZ25pIikKIGltcG9ydCgiLy90ZXN0aW5nL2xpYmZ1enplci9mdXp6
ZXJfdGVzdC5nbmkiKQoraW1wb3J0KCIuLi8uLi93ZWJydGMuZ25pIikKIAogcnRjX3N0YXRpY19s
aWJyYXJ5KCJ3ZWJydGNfZnV6emVyX21haW4iKSB7CiAgIHNvdXJjZXMgPSBbCkBAIC0xMjUsNyAr
MTI1LDYgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJmb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25fZnV6
emVyIikgewogICAgICIuLi8uLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAg
ICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgXQotICBsaWJmdXp6ZXJf
b3B0aW9ucyA9IFsgIm1heF9sZW49NTAwMCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoImZs
ZXhmZWNfaGVhZGVyX3JlYWRlcl9mdXp6ZXIiKSB7CkBAIC0xNDgsNyArMTQ3LDYgQEAgd2VicnRj
X2Z1enplcl90ZXN0KCJmbGV4ZmVjX3NlbmRlcl9mdXp6ZXIiKSB7CiAgICAgIi4uLy4uL21vZHVs
ZXMvcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJz
IiwKICAgXQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MjAwIiBdCiB9CiAKIHdl
YnJ0Y19mdXp6ZXJfdGVzdCgidWxwZmVjX2hlYWRlcl9yZWFkZXJfZnV6emVyIikgewpAQCAtMTg2
LDcgKzE4NCw2IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgidWxwZmVjX3JlY2VpdmVyX2Z1enplciIp
IHsKICAgICAiLi4vLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAogICAgICIu
Li8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgIF0KLSAgbGliZnV6emVyX29wdGlv
bnMgPSBbICJtYXhfbGVuPTIwMDAiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJmbGV4ZmVj
X3JlY2VpdmVyX2Z1enplciIpIHsKQEAgLTE5OCw3ICsxOTUsNiBAQCB3ZWJydGNfZnV6emVyX3Rl
c3QoImZsZXhmZWNfcmVjZWl2ZXJfZnV6emVyIikgewogICAgICIuLi8uLi9tb2R1bGVzL3J0cF9y
dGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKICAgXQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MjAwMCIgXQogfQog
CiB3ZWJydGNfZnV6emVyX3Rlc3QoInBhY2tldF9idWZmZXJfZnV6emVyIikgewpAQCAtMjA5LDcg
KzIwNSw2IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgicGFja2V0X2J1ZmZlcl9mdXp6ZXIiKSB7CiAg
ICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nLyIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFw
cGVycyIsCiAgIF0KLSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTIwMDAwMCIgXQog
fQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoInJ0Y3BfcmVjZWl2ZXJfZnV6emVyIikgewpAQCAtMjgz
LDggKzI3OCw2IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiYXVkaW9fZGVjb2Rlcl9pbGJjX2Z1enpl
ciIpIHsKICAgICAiOmF1ZGlvX2RlY29kZXJfZnV6emVyIiwKICAgICAiLi4vLi4vbW9kdWxlcy9h
dWRpb19jb2Rpbmc6aWxiYyIsCiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9s
ZW49MTAwMDAiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJhdWRpb19kZWNvZGVyX2lzYWNf
ZnV6emVyIikgewpAQCAtMjk1LDggKzI4OCw2IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiYXVkaW9f
ZGVjb2Rlcl9pc2FjX2Z1enplciIpIHsKICAgICAiOmF1ZGlvX2RlY29kZXJfZnV6emVyIiwKICAg
ICAiLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aXNhYyIsCiAgIF0KLQotICBsaWJmdXp6ZXJf
b3B0aW9ucyA9IFsgIm1heF9sZW49MjAwMDAiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJh
dWRpb19kZWNvZGVyX2lzYWNfaW5jb21pbmdfcGFja2V0X2Z1enplciIpIHsKQEAgLTMwNyw4ICsy
OTgsNiBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoImF1ZGlvX2RlY29kZXJfaXNhY19pbmNvbWluZ19w
YWNrZXRfZnV6emVyIikgewogICAgICI6YXVkaW9fZGVjb2Rlcl9mdXp6ZXIiLAogICAgICIuLi8u
Li9tb2R1bGVzL2F1ZGlvX2NvZGluZzppc2FjIiwKICAgXQotCi0gIGxpYmZ1enplcl9vcHRpb25z
ID0gWyAibWF4X2xlbj0yMDAwMCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoImF1ZGlvX2Rl
Y29kZXJfaXNhY2ZpeF9mdXp6ZXIiKSB7CkBAIC0zMTksOCArMzA4LDYgQEAgd2VicnRjX2Z1enpl
cl90ZXN0KCJhdWRpb19kZWNvZGVyX2lzYWNmaXhfZnV6emVyIikgewogICAgICI6YXVkaW9fZGVj
b2Rlcl9mdXp6ZXIiLAogICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzppc2FjX2ZpeCIs
CiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MjAwMDAiIF0KIH0KIAog
d2VicnRjX2Z1enplcl90ZXN0KCJhdWRpb19kZWNvZGVyX29wdXNfZnV6emVyIikgewpAQCAtMzc3
LDEwICszNjQsNyBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoIm5ldGVxX3J0cF9mdXp6ZXIiKSB7CiAg
ICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOnBjbTE2YiIsCiAgICAgIi4uLy4uL21vZHVs
ZXMvcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jh
c2VfYXBwcm92ZWQiLAotICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIs
CiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MTAwMDAwIiBdCiB9CiAK
IHdlYnJ0Y19mdXp6ZXJfdGVzdCgibmV0ZXFfc2lnbmFsX2Z1enplciIpIHsKQEAgLTM5NCwxMCAr
Mzc4LDcgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJuZXRlcV9zaWduYWxfZnV6emVyIikgewogICAg
ICIuLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpuZXRlcV90b29sc19taW5pbWFsIiwKICAgICAi
Li4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6cGNtMTZiIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191
dGlscyIsCiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MTAwMDAwIiBd
CiB9CiAKIHdlYnJ0Y19mdXp6ZXJfdGVzdCgicmVzaWR1YWxfZWNob19kZXRlY3Rvcl9mdXp6ZXIi
KSB7CkBAIC00MjAsNyArNDAxLDYgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJzZHBfcGFyc2VyX2Z1
enplciIpIHsKICAgICAiLi4vLi4vcGM6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uIiwKICAgXQog
ICBzZWVkX2NvcnB1cyA9ICJjb3Jwb3JhL3NkcC1jb3JwdXMiCi0gIGxpYmZ1enplcl9vcHRpb25z
ID0gWyAibWF4X2xlbj0xNjM4NCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoInN0dW5fcGFy
c2VyX2Z1enplciIpIHsKQEAgLTQ4Nyw2ICs0NjcsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1
ZGlvX3Byb2Nlc3NpbmdfZnV6emVyX2hlbHBlciIpIHsKICAgICAiOmZ1enpfZGF0YV9oZWxwZXIi
LAogICAgICIuLi8uLi9hcGkvYXVkaW86YXVkaW9fZnJhbWVfYXBpIiwKICAgICAiLi4vLi4vbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nIiwKKyAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nOmFwaSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19i
YXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXM6b3B0aW9uYWwiLApAQCAtNTAxLDEwICs0ODIsMTMgQEAgd2VicnRjX2Z1enplcl90
ZXN0KCJhdWRpb19wcm9jZXNzaW5nX2Z1enplciIpIHsKICAgICAiOmF1ZGlvX3Byb2Nlc3Npbmdf
ZnV6emVyX2hlbHBlciIsCiAgICAgIi4uLy4uL2FwaS9hdWRpbzphZWMzX2ZhY3RvcnkiLAogICAg
ICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmciLAorICAgICIuLi8uLi9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMiLAotICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXA6bW9j
a19hZWNfZHVtcCIsCisgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVt
cCIsCisgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVtcDphZWNfZHVt
cF9pbXBsIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cHRyX3V0aWwiLAogICAgICIuLi8uLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1
ZXVlIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAogICAgICIuLi8uLi9zeXN0
ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnkiLApAQCAtNTE5LDEzICs1MDMsMTMgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJh
Z2NfZnV6emVyIikgewogICBkZXBzID0gWwogICAgICI6ZnV6el9kYXRhX2hlbHBlciIsCiAgICAg
Ii4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZyIsCisgICAgIi4uLy4uL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZzphcGkiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3Zl
ZCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQogCiAgIHNlZWRfY29ycHVzID0gImNvcnBv
cmEvYWdjLWNvcnB1cyIKLSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTIwMDAwMCIg
XQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoImNvbWZvcnRfbm9pc2VfZGVjb2Rlcl9mdXp6ZXIi
KSB7CkBAIC01MzQsMTEgKzUxOCw5IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiY29tZm9ydF9ub2lz
ZV9kZWNvZGVyX2Z1enplciIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLi8uLi9hcGk6YXJy
YXlfdmlldyIsCi0gICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmNuZyIsCisgICAgIi4u
Ly4uL21vZHVsZXMvYXVkaW9fY29kaW5nOndlYnJ0Y19jbmciLAogICAgICIuLi8uLi9ydGNfYmFz
ZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1h
eF9sZW49NTAwMCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoInJ0cF9mcmFtZV9yZWZlcmVu
Y2VfZmluZGVyX2Z1enplciIpIHsKQEAgLTU1MSw3ICs1MzMsNiBAQCB3ZWJydGNfZnV6emVyX3Rl
c3QoInJ0cF9mcmFtZV9yZWZlcmVuY2VfZmluZGVyX2Z1enplciIpIHsKICAgICAiLi4vLi4vc3lz
dGVtX3dyYXBwZXJzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5
IiwKICAgXQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MjAwMDAiIF0KIH0KIAog
d2VicnRjX2Z1enplcl90ZXN0KCJmcmFtZV9idWZmZXIyX2Z1enplciIpIHsKQEAgLTU2Miw1ICs1
NDMsNCBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoImZyYW1lX2J1ZmZlcjJfZnV6emVyIikgewogICAg
ICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZy8iLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBl
cnM6c3lzdGVtX3dyYXBwZXJzIiwKICAgXQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9s
ZW49MTAwMDAiIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hZ2NfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2FnY19mdXp6ZXIuY2MKaW5k
ZXggNWJkOTIxZTc0ZGFlM2I5OTg1OWNjZjUyMjE0Y2MxMWZhYmEwOWY0MC4uZjJjOTA0ODBjODM1
ZWFkZWUzZGIyMjg5MjIyYTVjY2FkZWI5OWU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2FnY19mdXp6ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJz
L2FnY19mdXp6ZXIuY2MKQEAgLTEwOSw2ICsxMDksOSBAQCB2b2lkIEZ1enpHYWluQ29udHJvbGxl
cih0ZXN0OjpGdXp6RGF0YUhlbHBlciogZnV6el9kYXRhLCBHYWluQ29udHJvbEltcGwqIGdjaSkg
ewogfSAgLy8gbmFtZXNwYWNlCiAKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7CisgIGlmIChzaXplID4gMjAwMDAwKSB7CisgICAgcmV0dXJuOwor
ICB9CiAgIHRlc3Q6OkZ1enpEYXRhSGVscGVyIGZ1enpfZGF0YShydGM6OkFycmF5Vmlldzxjb25z
dCB1aW50OF90PihkYXRhLCBzaXplKSk7CiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfY2Fw
dHVyZTsKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9yZW5kZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVk
aW9fZGVjb2Rlcl9pbGJjX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lsYmNfZnV6emVyLmNjCmlu
ZGV4IGE2ODcyNWQ2YWFjZDE2MmUyYTJmYjQwZjY5YTExMTBmYzc0MDI3YjMuLjg1NDg2NDVjNjNm
OWI3NjdhNTk1MmI3NjAxY2IyYzBmMWMzZGFiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2ls
YmNfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lsYmNfZnV6emVyLmNjCkBAIC0xMyw2ICsx
Myw5IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUgPiAxMDAwMCkgeworICAgIHJl
dHVybjsKKyAgfQogICBBdWRpb0RlY29kZXJJbGJjSW1wbCBkZWM7CiAgIHN0YXRpYyBjb25zdCBp
bnQga1NhbXBsZVJhdGVIeiA9IDgwMDA7CiAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0FsbG9jYXRl
ZE91cHV0U2l6ZVNhbXBsZXMgPSBrU2FtcGxlUmF0ZUh6IC8gMTA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9f
ZGVjb2Rlcl9pc2FjX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNfZnV6emVyLmNjCmluZGV4
IGU3OTk5NmUwNWIyOGEzNGJmMTFkMWI4OTY5NzQwNmI0NmQxMjBlNzAuLmI1NzkwODM5NTZjNmJj
ZTA2NGJlNGY5OGI3NWU5NWYwMDNiNjdlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNf
ZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNfZnV6emVyLmNjCkBAIC0xMyw2ICsxMyw5
IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUgPiAyMDAwMCkgeworICAgIHJldHVy
bjsKKyAgfQogICBjb25zdCBpbnQgc2FtcGxlX3JhdGVfaHogPSBzaXplICUgMiA9PSAwID8gMTYw
MDAgOiAzMjAwMDsgICAgIC8vIDE2IG9yIDMyIGtIei4KICAgc3RhdGljIGNvbnN0IHNpemVfdCBr
QWxsb2NhdGVkT3VwdXRTaXplU2FtcGxlcyA9IDMyMDAwIC8gMTA7ICAvLyAxMDAgbXMuCiAgIGlu
dDE2X3Qgb3V0cHV0W2tBbGxvY2F0ZWRPdXB1dFNpemVTYW1wbGVzXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRp
b19kZWNvZGVyX2lzYWNfaW5jb21pbmdfcGFja2V0X2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lz
YWNfaW5jb21pbmdfcGFja2V0X2Z1enplci5jYwppbmRleCA1NjQ1MTQyYTAzNGZhMjMyNmNhMTUz
ZTIzOTMxOTRiZWM5NDYyNjg0Li45YmQ2MjM0ZmExNDk1ZTcxNzVmYzAxMjIxZTM2ZWFlMjRhNjMw
M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rlcl9pc2FjX2luY29taW5nX3BhY2tldF9mdXp6ZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9m
dXp6ZXJzL2F1ZGlvX2RlY29kZXJfaXNhY19pbmNvbWluZ19wYWNrZXRfZnV6emVyLmNjCkBAIC0x
Myw2ICsxMyw5IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogdm9pZCBGdXp6T25lSW5wdXQoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUgPiAyMDAwMCkgewor
ICAgIHJldHVybjsKKyAgfQogICBBdWRpb0RlY29kZXJJc2FjRmxvYXRJbXBsIGRlYygxNjAwMCk7
CiAgIEZ1enpBdWRpb0RlY29kZXJJbmNvbWluZ1BhY2tldChkYXRhLCBzaXplLCAmZGVjKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNmaXhfZnV6emVyLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX2RlY29kZXJf
aXNhY2ZpeF9mdXp6ZXIuY2MKaW5kZXggNDQ0Mzk1YjE3ZGYyMGM1YzlkOTBjOTIwOGUxZDBjZjIw
NTI1NTM1NC4uNjQ3N2RjMzYxYmRkZDc3N2Y2MGI4MzBiYWYyMTA1MGMzZGYwN2ExYyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6
ZXJzL2F1ZGlvX2RlY29kZXJfaXNhY2ZpeF9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX2RlY29kZXJfaXNh
Y2ZpeF9mdXp6ZXIuY2MKQEAgLTEzLDYgKzEzLDkgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiB2
b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBp
ZiAoc2l6ZSA+IDIwMDAwKSB7CisgICAgcmV0dXJuOworICB9CiAgIHN0YXRpYyBjb25zdCBpbnQg
a1NhbXBsZVJhdGVIeiA9IDE2MDAwOwogICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtBbGxvY2F0ZWRP
dXB1dFNpemVTYW1wbGVzID0gMTYwMDAgLyAxMDsgIC8vIDEwMCBtcy4KICAgaW50MTZfdCBvdXRw
dXRba0FsbG9jYXRlZE91cHV0U2l6ZVNhbXBsZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX3Byb2Nlc3Np
bmdfY29uZmlnc19mdXp6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fcHJvY2Vzc2luZ19jb25maWdzX2Z1enplci5jYwpp
bmRleCA4MTE3YzUyYWFmMmIzMTVmN2YwNjZiNGIxOTI5MTk4OTFhNDFkMzMzLi5kZDAwMTM2ODRl
ZGJjYmNmMzQwODFmYWYzOGFlMjE0MjFiZmIyMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fcHJvY2Vzc2lu
Z19jb25maWdzX2Z1enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fcHJvY2Vzc2luZ19jb25maWdzX2Z1enplci5j
YwpAQCAtMTMsMTAgKzEzLDExIEBACiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
ICNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2ZhY3RvcnkuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvbW9ja19hZWNfZHVtcC5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVtcC9hZWNfZHVtcF9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJv
Y2Vzc2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19x
dWV1ZS5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgi
CiAjaW5jbHVkZSAidGVzdC9mdXp6ZXJzL2F1ZGlvX3Byb2Nlc3NpbmdfZnV6emVyX2hlbHBlci5o
IgogI2luY2x1ZGUgInRlc3QvZnV6emVycy9mdXp6X2RhdGFfaGVscGVyLmgiCkBAIC0yNSwzNiAr
MjYsNDUgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogCiBjb25zdCBzdGQ6OnN0
cmluZyBrRmllbGRUcmlhbE5hbWVzW10gPSB7Ci0gICAgIldlYlJUQy1BZWMzVHJhbnNwYXJlbnRN
b2RlS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzU3RhdGlvbmFyeVJlbmRlckltcHJvdmVt
ZW50c0tpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM0VuZm9yY2VEZWxheUFmdGVyUmVhbGln
bm1lbnRLaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNVc2VTaG9ydERlbGF5RXN0aW1hdG9y
V2luZG93IiwKLSAgICAiV2ViUlRDLUFlYzNSZXZlcmJCYXNlZE9uUmVuZGVyS2lsbFN3aXRjaCIs
Ci0gICAgIldlYlJUQy1BZWMzUmV2ZXJiTW9kZWxsaW5nS2lsbFN3aXRjaCIsCi0gICAgIldlYlJU
Qy1BZWMzRmlsdGVyQW5hbHl6ZXJQcmVwcm9jZXNzb3JLaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRD
LUFlYzNUcmFuc3BhcmVuY3lJbXByb3ZlbWVudHNLaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRDLUFl
YzNTb2Z0VHJhbnNwYXJlbnRNb2RlS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzT3ZlcnJp
ZGVFY2hvUGF0aEdhaW5LaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNaZXJvRXh0ZXJuYWxE
ZWxheUhlYWRyb29tS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzRG93blNhbXBsaW5nRmFj
dG9yOEtpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM0FkYXB0RXJsZU9uTG93UmVuZGVyS2ls
bFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzQWdjR2FpbkNoYW5nZVJlc3BvbnNlS2lsbFN3aXRj
aCIsCisgICAgIldlYlJUQy1BZWMzQm91bmRlZE5lYXJlbmRLaWxsU3dpdGNoIiwKKyAgICAiV2Vi
UlRDLUFlYzNFYXJseVNoYWRvd0ZpbHRlckp1bXBzdGFydEtpbGxTd2l0Y2giLAorICAgICJXZWJS
VEMtQWVjM0VuYWJsZUFkYXB0aXZlRWNob1JldmVyYkVzdGltYXRpb24iLAorICAgICJXZWJSVEMt
QWVjM0VuYWJsZUxlZ2FjeURvbWluYW50TmVhcmVuZCIsCisgICAgIldlYlJUQy1BZWMzRW5hYmxl
VW5pdHlJbml0aWFsUmFtcHVwR2FpbiIsCisgICAgIldlYlJUQy1BZWMzRW5hYmxlVW5pdHlOb25a
ZXJvUmFtcHVwR2FpbiIsCiAgICAgIldlYlJUQy1BZWMzRW5mb3JjZVNrZXdIeXN0ZXJlc2lzMSIs
CiAgICAgIldlYlJUQy1BZWMzRW5mb3JjZVNrZXdIeXN0ZXJlc2lzMiIsCi0gICAgIldlYlJUQy1B
ZWMzTmV3U3VwcHJlc3Npb25LaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNMaW5lYXJNb2Rl
V2l0aERpdmVyZ2VkRmlsdGVyS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzRmlsdGVyQW5h
bHl6ZXJQcmVwcm9jZXNzb3JLaWxsU3dpdGNoIiwKICAgICAiV2ViUlRDLUFlYzNNaXNhZGp1c3Rt
ZW50RXN0aW1hdG9yS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzTmV3RmlsdGVyUGFyYW1z
S2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzTmV3UmVuZGVyQnVmZmVyaW5nS2lsbFN3aXRj
aCIsCisgICAgIldlYlJUQy1BZWMzT3ZlcnJpZGVFY2hvUGF0aEdhaW5LaWxsU3dpdGNoIiwKICAg
ICAiV2ViUlRDLUFlYzNSYXBpZEFnY0dhaW5SZWNvdmVyeUtpbGxTd2l0Y2giLAotICAgICJXZWJS
VEMtQWVjM1Nsb3dGaWx0ZXJBZGFwdGF0aW9uS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMz
U21vb3RoVXBkYXRlc1RhaWxGcmVxUmVzcEtpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM1N1
cHByZXNzb3JOZWFyZW5kQXZlcmFnaW5nS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzQWdj
R2FpbkNoYW5nZVJlc3BvbnNlS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzUmVzZXRFcmxl
QXRHYWluQ2hhbmdlc0tpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM1JldmVyYkJhc2VkT25S
ZW5kZXJLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNSZXZlcmJNb2RlbGxpbmdLaWxsU3dp
dGNoIiwKKyAgICAiV2ViUlRDLUFlYzNTaGFkb3dGaWx0ZXJCb29zdGVkSnVtcHN0YXJ0S2lsbFN3
aXRjaCIsCiAgICAgIldlYlJUQy1BZWMzU2hhZG93RmlsdGVySnVtcHN0YXJ0S2lsbFN3aXRjaCIs
Ci0gICAgIldlYlJUQy1BZWMzRWFybHlMaW5lYXJGaWx0ZXJVc2FnZUtpbGxTd2l0Y2giLAotICAg
ICJXZWJSVEMtQWVjM1Nob3J0SW5pdGlhbFN0YXRlS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1B
ZWMzU2hvcnRSZXZlcmJLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNTbW9vdGhTaWduYWxU
cmFuc2l0aW9uc0tpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM1Ntb290aFVwZGF0ZXNUYWls
RnJlcVJlc3BLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNTb2Z0VHJhbnNwYXJlbnRNb2Rl
S2lsbFN3aXRjaCIsCiAgICAgIldlYlJUQy1BZWMzU3RhbmRhcmROb25saW5lYXJSZXZlcmJNb2Rl
bEtpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM0VuYWJsZUFkYXB0aXZlRWNob1JldmVyYkVz
dGltYXRpb24ifTsKKyAgICAiV2ViUlRDLUFlYzNTdHJpY3REaXZlcmdlbmNlQ2hlY2tLaWxsU3dp
dGNoIiwKKyAgICAiV2ViUlRDLUFlYzNVc2VMZWdhY3lOb3JtYWxTdXBwcmVzc29yVHVuaW5nIiwK
KyAgICAiV2ViUlRDLUFlYzNVc2VPZmZzZXRCbG9ja3MiLAorICAgICJXZWJSVEMtQWVjM1VzZVNo
b3J0RGVsYXlFc3RpbWF0b3JXaW5kb3ciLAorICAgICJXZWJSVEMtQWVjM1VzZVN0YXRpb25hcml0
eVByb3BlcnRpZXNLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNVdGlsaXplU2hhZG93Rmls
dGVyT3V0cHV0S2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzWmVyb0V4dGVybmFsRGVsYXlI
ZWFkcm9vbUtpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM0Vhcmx5RGVsYXlEZXRlY3Rpb25L
aWxsU3dpdGNoIiwKK307CiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Byb2Nlc3Npbmc+IENyZWF0
ZUFwbSh0ZXN0OjpGdXp6RGF0YUhlbHBlciogZnV6el9kYXRhLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBmaWVsZF90cmlhbF9zdHJpbmcp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyogZmllbGRfdHJpYWxfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6VGFza1F1ZXVlKiB3b3JrZXJfcXVldWUpIHsKICAgLy8gUGFyc2UgYm9v
bGVhbiB2YWx1ZXMgZm9yIG9wdGlvbmFsbHkgZW5hYmxpbmcgZGlmZmVyZW50CiAgIC8vIGNvbmZp
Z3VyYWJsZSBwdWJsaWMgY29tcG9uZW50cyBvZiBBUE0uCiAgIGJvb2wgZXhwX2FnYyA9IGZ1enpf
ZGF0YS0+UmVhZE9yRGVmYXVsdFZhbHVlKHRydWUpOwpAQCAtNzksMTIgKzg5LDEzIEBAIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb1Byb2Nlc3Npbmc+IENyZWF0ZUFwbSh0ZXN0OjpGdXp6RGF0YUhlbHBl
ciogZnV6el9kYXRhLAogCiAgIC8vIFJlYWQgYW4gaW50OCB2YWx1ZSwgYnV0IGRvbid0IGxldCBp
dCBiZSB0b28gbGFyZ2Ugb3Igc21hbGwuCiAgIGNvbnN0IGZsb2F0IGdhaW5fY29udHJvbGxlcjJf
Z2Fpbl9kYiA9Ci0gICAgICBydGM6OlNhZmVDbGFtcDxpbnQ+KGZ1enpfZGF0YS0+UmVhZE9yRGVm
YXVsdFZhbHVlPGludDhfdD4oMCksIC01MCwgNTApOworICAgICAgcnRjOjpTYWZlQ2xhbXA8aW50
PihmdXp6X2RhdGEtPlJlYWRPckRlZmF1bHRWYWx1ZTxpbnQ4X3Q+KDApLCAtNDAsIDQwKTsKIAog
ICBjb25zdGV4cHIgc2l6ZV90IGtOdW1GaWVsZFRyaWFscyA9IGFycmF5c2l6ZShrRmllbGRUcmlh
bE5hbWVzKTsKICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHJlYWQgZGF0YSB0eXBlIGhhcyBlbm91Z2gg
Yml0cyB0byBmdXp6IHRoZSBmaWVsZCB0cmlhbHMuCi0gIHVzaW5nIEZpZWxkVHJpYWxCaXRtYXNr
VHlwZSA9IHVpbnQzMl90OwotICBSVENfRENIRUNLX0xFKGtOdW1GaWVsZFRyaWFscywgc2l6ZW9m
KEZpZWxkVHJpYWxCaXRtYXNrVHlwZSkgKiA4KTsKKyAgdXNpbmcgRmllbGRUcmlhbEJpdG1hc2tU
eXBlID0gdWludDY0X3Q7CisgIHN0YXRpY19hc3NlcnQoa051bUZpZWxkVHJpYWxzIDw9IHNpemVv
ZihGaWVsZFRyaWFsQml0bWFza1R5cGUpICogOCwKKyAgICAgICAgICAgICAgICAiRmllbGRUcmlh
bEJpdG1hc2tUeXBlIGlzIG5vdCBsYXJnZSBlbm91Z2guIik7CiAgIHN0ZDo6Yml0c2V0PGtOdW1G
aWVsZFRyaWFscz4gZmllbGRfdHJpYWxfYml0bWFzaygKICAgICAgIGZ1enpfZGF0YS0+UmVhZE9y
RGVmYXVsdFZhbHVlPEZpZWxkVHJpYWxCaXRtYXNrVHlwZT4oMCkpOwogICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGtOdW1GaWVsZFRyaWFsczsgKytpKSB7CkBAIC0xMjksOCArMTQwLDkgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvUHJvY2Vzc2luZz4gQ3JlYXRlQXBtKHRlc3Q6OkZ1enpEYXRhSGVs
cGVyKiBmdXp6X2RhdGEsCiAgICAgICAgICAgLlNldEVjaG9Db250cm9sRmFjdG9yeShzdGQ6Om1v
dmUoZWNob19jb250cm9sX2ZhY3RvcnkpKQogICAgICAgICAgIC5DcmVhdGUoY29uZmlnKSk7CiAK
LSAgYXBtLT5BdHRhY2hBZWNEdW1wKAotICAgICAgYWJzbDo6bWFrZV91bmlxdWU8dGVzdGluZzo6
TmljZU1vY2s8d2VicnRjOjp0ZXN0OjpNb2NrQWVjRHVtcD4+KCkpOworI2lmZGVmIFdFQlJUQ19M
SU5VWAorICBhcG0tPkF0dGFjaEFlY0R1bXAoQWVjRHVtcEZhY3Rvcnk6OkNyZWF0ZSgiL2Rldi9u
dWxsIiwgLTEsIHdvcmtlcl9xdWV1ZSkpOworI2VuZGlmCiAKICAgd2VicnRjOjpBdWRpb1Byb2Nl
c3Npbmc6OkNvbmZpZyBhcG1fY29uZmlnOwogICBhcG1fY29uZmlnLmVjaG9fY2FuY2VsbGVyLmVu
YWJsZWQgPSB1c2VfYWVjIHx8IHVzZV9hZWNtOwpAQCAtMTM5LDcgKzE1MSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb1Byb2Nlc3Npbmc+IENyZWF0ZUFwbSh0ZXN0OjpGdXp6RGF0YUhlbHBlciog
ZnV6el9kYXRhLAogICBhcG1fY29uZmlnLmhpZ2hfcGFzc19maWx0ZXIuZW5hYmxlZCA9IGhwZjsK
ICAgYXBtX2NvbmZpZy5nYWluX2NvbnRyb2xsZXIyLmVuYWJsZWQgPSB1c2VfYWdjMl9saW1pdGVy
OwogCi0gIGFwbV9jb25maWcuZ2Fpbl9jb250cm9sbGVyMi5maXhlZF9nYWluX2RiID0gZ2Fpbl9j
b250cm9sbGVyMl9nYWluX2RiOworICBhcG1fY29uZmlnLmdhaW5fY29udHJvbGxlcjIuZml4ZWRf
ZGlnaXRhbC5nYWluX2RiID0gZ2Fpbl9jb250cm9sbGVyMl9nYWluX2RiOwogCiAgIGFwbS0+QXBw
bHlDb25maWcoYXBtX2NvbmZpZyk7CiAKQEAgLTE1OCw3ICsxNzAsMTAgQEAgdm9pZCBGdXp6T25l
SW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgLy8gVGhpcyBzdHJp
bmcgbXVzdCBiZSBpbiBzY29wZSBkdXJpbmcgZXhlY3V0aW9uLCBhY2NvcmRpbmcgdG8gZG9jdW1l
bnRhdGlvbgogICAvLyBmb3IgZmllbGRfdHJpYWwuaC4gSGVuY2UgaXQncyBjcmVhdGVkIGhlcmUg
YW5kIG5vdCBpbiBDcmVhdGVBcG0uCiAgIHN0ZDo6c3RyaW5nIGZpZWxkX3RyaWFsX3N0cmluZyA9
ICIiOwotICBhdXRvIGFwbSA9IENyZWF0ZUFwbSgmZnV6el9kYXRhLCAmZmllbGRfdHJpYWxfc3Ry
aW5nKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUYXNrUXVldWU+IHdvcmtlcl9xdWV1ZSgK
KyAgICAgIG5ldyBydGM6OlRhc2tRdWV1ZSgicnRjLWxvdy1wcmlvIiwgcnRjOjpUYXNrUXVldWU6
OlByaW9yaXR5OjpMT1cpKTsKKyAgYXV0byBhcG0gPSBDcmVhdGVBcG0oJmZ1enpfZGF0YSwgJmZp
ZWxkX3RyaWFsX3N0cmluZywgd29ya2VyX3F1ZXVlLmdldCgpKTsKIAogICBpZiAoYXBtKSB7CiAg
ICAgRnV6ekF1ZGlvUHJvY2Vzc2luZygmZnV6el9kYXRhLCBzdGQ6Om1vdmUoYXBtKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1
enplcnMvYXVkaW9fcHJvY2Vzc2luZ19mdXp6ZXJfaGVscGVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX3Byb2Nlc3Npbmdf
ZnV6emVyX2hlbHBlci5jYwppbmRleCAwNzNhYjE3YmQ5MzFjNGJiZWMxMzNkMGU5MGFkNWMxYjNj
YmFmNGMzLi5kZWM0ZTFmMDVlNGQ0MjJhNGRmZWY4NmE2ODBmYTQzMGJlMDc2Zjc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enpl
cnMvYXVkaW9fcHJvY2Vzc2luZ19mdXp6ZXJfaGVscGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19wcm9jZXNzaW5n
X2Z1enplcl9oZWxwZXIuY2MKQEAgLTEzMCwxMCArMTMwLDggQEAgdm9pZCBGdXp6QXVkaW9Qcm9j
ZXNzaW5nKHRlc3Q6OkZ1enpEYXRhSGVscGVyKiBmdXp6X2RhdGEsCiAgICAgICB9CiAgICAgfQog
Ci0gICAgLy8gTWFrZSBjYWxscyB0byBzdGF0cyBnYXRoZXJpbmcgZnVuY3Rpb25zIHRvIGNvdmVy
IHRoZXNlCi0gICAgLy8gY29kZXdheXMuCi0gICAgc3RhdGljX2Nhc3Q8dm9pZD4oYXBtLT5HZXRT
dGF0aXN0aWNzKCkpOwotICAgIHN0YXRpY19jYXN0PHZvaWQ+KGFwbS0+R2V0U3RhdGlzdGljcyh0
cnVlKSk7CisgICAgLy8gQ292ZXIgc3RhdHMgZ2F0aGVyaW5nIGNvZGUgcGF0aHMuCisgICAgc3Rh
dGljX2Nhc3Q8dm9pZD4oYXBtLT5HZXRTdGF0aXN0aWNzKHRydWUgLypoYXNfcmVtb3RlX3RyYWNr
cyovKSk7CiAgICAgc3RhdGljX2Nhc3Q8dm9pZD4oYXBtLT5VcGRhdGVIaXN0b2dyYW1zT25DYWxs
RW5kKCkpOwogCiAgICAgUlRDX0RDSEVDS19ORShhcG1fcmV0dXJuX2NvZGUsIEF1ZGlvUHJvY2Vz
c2luZzo6a0JhZERhdGFMZW5ndGhFcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvY29tZm9ydF9ub2lzZV9kZWNv
ZGVyX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvZnV6emVycy9jb21mb3J0X25vaXNlX2RlY29kZXJfZnV6emVyLmNjCmluZGV4IDUwMTY2
ZDdkZjc3ODI1MDA0MWU1MmRjNTc3ZTE3NGI0YTQ4Yjk0Y2UuLjdmNDRhZjk5ZmI1MzAzNWQ0M2M3
MjVmYmE5Mzc3OTgwMGJmOTJmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9jb21mb3J0X25vaXNlX2RlY29kZXJfZnV6
emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZnV6emVycy9jb21mb3J0X25vaXNlX2RlY29kZXJfZnV6emVyLmNjCkBAIC01MCw2ICs1MCw5
IEBAIHZvaWQgRnV6ek9uZUlucHV0VGVzdChydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBk
YXRhKSB7CiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogCiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+IDUwMDApIHsKKyAgICBy
ZXR1cm47CisgIH0KICAgdGVzdDo6RnV6ek9uZUlucHV0VGVzdChydGM6OkFycmF5Vmlldzxjb25z
dCB1aW50OF90PihkYXRhLCBzaXplKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mbGV4ZmVjX3JlY2VpdmVy
X2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZnV6emVycy9mbGV4ZmVjX3JlY2VpdmVyX2Z1enplci5jYwppbmRleCBkOTZhMzI4ZmEyYzU4
YmZlZjBhNWVhNTRjNDMxY2QyMDJhMTE1ZDRmLi5jNTAzNGJiOTMzZWU4M2I0NmExOGZjNDBhMWE4
ZjY5Yjk1M2I5ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZmxleGZlY19yZWNlaXZlcl9mdXp6ZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2Zs
ZXhmZWNfcmVjZWl2ZXJfZnV6emVyLmNjCkBAIC0yNSw3ICsyNSw3IEBAIGNsYXNzIER1bW15Q2Fs
bGJhY2sgOiBwdWJsaWMgUmVjb3ZlcmVkUGFja2V0UmVjZWl2ZXIgewogCiB2b2lkIEZ1enpPbmVJ
bnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewogICBjb25zdGV4cHIgc2l6
ZV90IGtNaW5EYXRhTmVlZGVkID0gMTI7Ci0gIGlmIChzaXplIDwga01pbkRhdGFOZWVkZWQpIHsK
KyAgaWYgKHNpemUgPCBrTWluRGF0YU5lZWRlZCB8fCBzaXplID4gMjAwMCkgewogICAgIHJldHVy
bjsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L2Z1enplcnMvZmxleGZlY19zZW5kZXJfZnV6emVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2ZsZXhmZWNfc2Vu
ZGVyX2Z1enplci5jYwppbmRleCA4ZTc5Zjk1Y2YzZmVlMzIzYWM1MDJlM2RkMmNkMDIzMWExYWFh
MGQ0Li40ODgyZjdkZjUxYTVjNmJmZmYzODI0ZGMwMDA0YjcwYjM1MWQ3NmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMv
ZmxleGZlY19zZW5kZXJfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mbGV4ZmVjX3NlbmRlcl9mdXp6ZXIuY2MKQEAg
LTMxLDEwICszMSw5IEBAIGNvbnN0IHN0ZDo6dmVjdG9yPFJ0cEV4dGVuc2lvblNpemU+IGtOb1J0
cEhlYWRlckV4dGVuc2lvblNpemVzOwogCiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewogICBzaXplX3QgaSA9IDA7Ci0gIGlmIChzaXplIDwgNSkg
eworICBpZiAoc2l6ZSA8IDUgfHwgc2l6ZSA+IDIwMCkgewogICAgIHJldHVybjsKICAgfQotCiAg
IFNpbXVsYXRlZENsb2NrIGNsb2NrKDEgKyBkYXRhW2krK10pOwogICBGbGV4ZmVjU2VuZGVyIHNl
bmRlcihrRmxleGZlY1BheWxvYWRUeXBlLCBrRmxleGZlY1NzcmMsIGtNZWRpYVNzcmMsIGtOb01p
ZCwKICAgICAgICAgICAgICAgICAgICAgICAga05vUnRwSGVhZGVyRXh0ZW5zaW9ucywga05vUnRw
SGVhZGVyRXh0ZW5zaW9uU2l6ZXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9u
X2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZnV6emVycy9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25fZnV6emVyLmNjCmluZGV4IDlkNWI4
NzI0MzRhZDMxNjNjNjU5ODA5MjRjZDljODg3M2FiYzdlMmUuLjJlYjM1N2I3NGE4MTQyNmJkM2M1
ZjI2YmQ4NDliYzhiNTE1NzVjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25f
ZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvZnV6emVycy9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25fZnV6emVyLmNjCkBAIC0yNiw2
ICsyNiw5IEBAIGNvbnN0ZXhwciBzaXplX3Qga01heFBhY2tldHNJbkJ1ZmZlciA9IDQ4OwogfSAg
Ly8gbmFtZXNwYWNlCiAKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKSB7CisgIGlmIChzaXplID4gNTAwMCkgeworICAgIHJldHVybjsKKyAgfQogICAv
LyBPYmplY3QgdW5kZXIgdGVzdC4KICAgc3RkOjp1bmlxdWVfcHRyPEZvcndhcmRFcnJvckNvcnJl
Y3Rpb24+IGZlYyA9CiAgICAgICBGb3J3YXJkRXJyb3JDb3JyZWN0aW9uOjpDcmVhdGVGbGV4ZmVj
KGtGZWNTc3JjLCBrTWVkaWFTc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mcmFtZV9idWZmZXIyX2Z1enplci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVy
cy9mcmFtZV9idWZmZXIyX2Z1enplci5jYwppbmRleCAyZDU4MzA5NzljMTI0ZTQwOWM3ZjRhYTE5
YTIzZWYxNTcxOTA1M2VhLi5hNTU5MTA0MWZmNjliMDkxYTMxYTM1ZGQzNWJlMzJmYTRjMDRkOTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2Z1enplcnMvZnJhbWVfYnVmZmVyMl9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2ZyYW1lX2J1ZmZlcjJfZnV6
emVyLmNjCkBAIC02Myw2ICs2Myw5IEBAIGNsYXNzIEZ1enp5RnJhbWVPYmplY3QgOiBwdWJsaWMg
dmlkZW9fY29kaW5nOjpFbmNvZGVkRnJhbWUgewogfSAgLy8gbmFtZXNwYWNlCiAKIHZvaWQgRnV6
ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGlmIChzaXpl
ID4gMTAwMDApIHsKKyAgICByZXR1cm47CisgIH0KICAgRGF0YVJlYWRlciByZWFkZXIoZGF0YSwg
c2l6ZSk7CiAgIENsb2NrKiBjbG9jayA9IENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCk7CiAgIFZD
TUppdHRlckVzdGltYXRvciBqaXR0ZXJfZXN0aW1hdG9yKGNsb2NrLCAwLCAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVy
cy9tZG5zX3BhcnNlcl9mdXp6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvbWRuc19wYXJzZXJfZnV6emVyLmNjCmluZGV4IGMzZjc2
NWVmNzg3YjQ4MmIwOThjMGU4ODE5ODIzNDVjM2E5ZGE3ZTguLjI5NGY2ODMyMjZjMDc2MDNmOGUz
ZmI4ODc1MDVjOTc2ZTdiNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9tZG5zX3BhcnNlcl9mdXp6ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJz
L21kbnNfcGFyc2VyX2Z1enplci5jYwpAQCAtMTksNyArMTksNyBAQCBuYW1lc3BhY2Ugd2VicnRj
IHsKIAogdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
IHsKICAgTWVzc2FnZUJ1ZmZlclJlYWRlciBidWYocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSksIHNpemUpOwotICBhdXRvIG1kbnNfbXNnID0gYWJzbDo6bWFrZV91bmlxdWU8TURu
c01lc3NhZ2U+KCk7CisgIGF1dG8gbWRuc19tc2cgPSBhYnNsOjptYWtlX3VuaXF1ZTxNZG5zTWVz
c2FnZT4oKTsKICAgbWRuc19tc2ctPlJlYWQoJmJ1Zik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9uZXRlcV9y
dHBfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC9mdXp6ZXJzL25ldGVxX3J0cF9mdXp6ZXIuY2MKaW5kZXggOGFhNmJlNTlkZDBlMWM4ZDc0
Y2Y5YmMxZDg3MzUxMDNlMDNiMjc5OC4uOTRkYmVmMzllYmU1ZWRlZWM0NmEzYzJlNWIwYzE0NjA5
NDZhZDg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mdXp6ZXJzL25ldGVxX3J0cF9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL25ldGVxX3J0cF9mdXp6
ZXIuY2MKQEAgLTE0Niw2ICsxNDYsOSBAQCB2b2lkIEZ1enpPbmVJbnB1dFRlc3QoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiAKIHZvaWQg
RnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGlmIChz
aXplID4gMTAwMDAwKSB7CisgICAgcmV0dXJuOworICB9CiAgIHRlc3Q6OkZ1enpPbmVJbnB1dFRl
c3QoZGF0YSwgc2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9uZXRlcV9zaWduYWxfZnV6emVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL25l
dGVxX3NpZ25hbF9mdXp6ZXIuY2MKaW5kZXggMTZlNzc2MDcyYmMyZjFjYzYyZTZjMTE0OTA5MWJm
NzQ1NDZhZDg5Ni4uMjUzMDJjMzFhODg1N2ExMGFjMDIyODU4NDM4NGY5MzY4YWRiOTljNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9m
dXp6ZXJzL25ldGVxX3NpZ25hbF9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL25ldGVxX3NpZ25hbF9mdXp6ZXIuY2MK
QEAgLTE0MCw4ICsxNDAsOSBAQCBjbGFzcyBGdXp6U2lnbmFsSW5wdXQgOiBwdWJsaWMgTmV0RXFJ
bnB1dCB7CiB9ICAvLyBuYW1lc3BhY2UKIAogdm9pZCBGdXp6T25lSW5wdXRUZXN0KGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gIGlmIChzaXplIDwgMSkKKyAgaWYgKHNpemUg
PCAxIHx8IHNpemUgPiA5MDAwMCkgewogICAgIHJldHVybjsKKyAgfQogCiAgIEZ1enpEYXRhSGVs
cGVyIGZ1enpfZGF0YShydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PihkYXRhLCBzaXplKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvZnV6emVycy9wYWNrZXRfYnVmZmVyX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9wYWNrZXRfYnVmZmVyX2Z1enpl
ci5jYwppbmRleCBkMjI2NzY0Y2IyNWQ4MmJmZjg1ZmRlNDhkZTg3ODk1Yjk3NTBiZWFkLi41NmQx
NTU3MDcyZjQ3ZjUyNTE2ZjA5NWY3ZThkMmIwNmVmZTFiNGVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvcGFja2V0X2J1
ZmZlcl9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mdXp6ZXJzL3BhY2tldF9idWZmZXJfZnV6emVyLmNjCkBAIC0yMSw2ICsyMSw5
IEBAIGNsYXNzIE51bGxDYWxsYmFjayA6IHB1YmxpYyB2aWRlb19jb2Rpbmc6Ok9uUmVjZWl2ZWRG
cmFtZUNhbGxiYWNrIHsKIH0gIC8vIG5hbWVzcGFjZQogCiB2b2lkIEZ1enpPbmVJbnB1dChjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+IDIwMDAwMCkgewor
ICAgIHJldHVybjsKKyAgfQogICBWQ01QYWNrZXQgcGFja2V0OwogICBOdWxsQ2FsbGJhY2sgY2Fs
bGJhY2s7CiAgIFNpbXVsYXRlZENsb2NrIGNsb2NrKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0Y3BfcmVjZWl2
ZXJfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC9mdXp6ZXJzL3J0Y3BfcmVjZWl2ZXJfZnV6emVyLmNjCmluZGV4IGNkNzYzZDBmNjA1ODgw
NDE2MzAyYjUwYTJiYTMyMjRkZDIxNTI0ZTkuLjdmOGNhYmFmZDY4ZWE0OGJlYjlhNGI4N2U5NTcw
Y2M0ZTMwM2RlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvZnV6emVycy9ydGNwX3JlY2VpdmVyX2Z1enplci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvcnRjcF9y
ZWNlaXZlcl9mdXp6ZXIuY2MKQEAgLTE1LDYgKzE1LDggQEAKIG5hbWVzcGFjZSB3ZWJydGMgewog
bmFtZXNwYWNlIHsKIAorY29uc3RleHByIGludCBrUnRjcEludGVydmFsTXMgPSAxMDAwOworCiBj
bGFzcyBOdWxsTW9kdWxlUnRwUnRjcCA6IHB1YmxpYyBSVENQUmVjZWl2ZXI6Ok1vZHVsZVJ0cFJ0
Y3AgewogIHB1YmxpYzoKICAgdm9pZCBTZXRUbW1ibihzdGQ6OnZlY3RvcjxydGNwOjpUbW1iSXRl
bT4pIG92ZXJyaWRlIHt9CkBAIC0zMCw3ICszMiw3IEBAIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CiAgIFNpbXVsYXRlZENsb2NrIGNsb2NrKDEy
MzQpOwogCiAgIFJUQ1BSZWNlaXZlciByZWNlaXZlcigmY2xvY2ssIGZhbHNlLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwgJnJ0cF9ydGNwX21vZHVsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBr
UnRjcEludGVydmFsTXMsICZydHBfcnRjcF9tb2R1bGUpOwogCiAgIHJlY2VpdmVyLkluY29taW5n
UGFja2V0KGRhdGEsIHNpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0cF9mcmFtZV9yZWZlcmVuY2VfZmlu
ZGVyX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvZnV6emVycy9ydHBfZnJhbWVfcmVmZXJlbmNlX2ZpbmRlcl9mdXp6ZXIuY2MKaW5kZXgg
ZmQ5ODg5MmEwNDgwZmQ5Y2YwZWI0MGVmYmU4YTQ4ODE3NGQyMWMwZC4uNTdkN2E5NjIzYTA3YTBk
MTI4ODdlZTc2MTg0MzNlMmE5NGUxNzg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0cF9mcmFtZV9yZWZlcmVuY2Vf
ZmluZGVyX2Z1enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L2Z1enplcnMvcnRwX2ZyYW1lX3JlZmVyZW5jZV9maW5kZXJfZnV6emVyLmNj
CkBAIC0xMDEsNiArMTAxLDkgQEAgY2xhc3MgRnV6enlQYWNrZXRCdWZmZXIgOiBwdWJsaWMgdmlk
ZW9fY29kaW5nOjpQYWNrZXRCdWZmZXIgewogfSAgLy8gbmFtZXNwYWNlCiAKIHZvaWQgRnV6ek9u
ZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGlmIChzaXplID4g
MjAwMDApIHsKKyAgICByZXR1cm47CisgIH0KICAgRGF0YVJlYWRlciByZWFkZXIoZGF0YSwgc2l6
ZSk7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGdXp6eVBhY2tldEJ1ZmZlcj4gcGIobmV3IEZ1enp5
UGFja2V0QnVmZmVyKCZyZWFkZXIpKTsKICAgTnVsbENhbGxiYWNrIGNiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0
cF9wYWNrZXRfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mdXp6ZXJzL3J0cF9wYWNrZXRfZnV6emVyLmNjCmluZGV4IDhiZjhlNzRhYmE5
NGNmNzM0NWE1ZGZmMWVjMTYwYmE1OWViY2M0ZmMuLmY3NzRjMGNiOGIwMTg0MzQzNjAxYThmMmZm
YmM2MjMwOTAyNzk0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9ydHBfcGFja2V0X2Z1enplci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvcnRwX3Bh
Y2tldF9mdXp6ZXIuY2MKQEAgLTEyMSw2ICsxMjEsMTEgQEAgdm9pZCBGdXp6T25lSW5wdXQoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgICAgICAgcGFja2V0LkdldEV4dGVu
c2lvbjxSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uPigmZGVzY3JpcHRvcik7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgfQorICAgICAgY2FzZSBrUnRwRXh0ZW5zaW9uQ29sb3JTcGFj
ZTogeworICAgICAgICBDb2xvclNwYWNlIGNvbG9yX3NwYWNlOworICAgICAgICBwYWNrZXQuR2V0
RXh0ZW5zaW9uPENvbG9yU3BhY2VFeHRlbnNpb24+KCZjb2xvcl9zcGFjZSk7CisgICAgICAgIGJy
ZWFrOworICAgICAgfQogICAgIH0KICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3NkcF9wYXJzZXJfZnV6emVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6
ZXJzL3NkcF9wYXJzZXJfZnV6emVyLmNjCmluZGV4IGU0NzE1NmM1NzFlNWNkOTAxNTMwYzBkYjZk
OGQ4N2Y1MTBhNzg3MTQuLjc2M2RiYzU5NGFjYjc0MTI1YmMzMjhlY2NlODgxYWI5YWZlNmUzNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZnV6emVycy9zZHBfcGFyc2VyX2Z1enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvc2RwX3BhcnNlcl9mdXp6ZXIuY2MK
QEAgLTE1LDYgKzE1LDkgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiB2b2lkIEZ1enpPbmVJbnB1
dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+IDE2Mzg0
KSB7CisgICAgcmV0dXJuOworICB9CiAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwogICB3ZWJydGM6OlNkcFBhcnNlRXJyb3Ig
ZXJyb3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvZnV6emVycy91bHBmZWNfcmVjZWl2ZXJfZnV6emVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3VscGZlY19yZWNl
aXZlcl9mdXp6ZXIuY2MKaW5kZXggNmI3NGYzYWM5NWQ0ZDNmZjNhZDI5MDc0YTEyZjY3NDEwYzE3
NDI5OC4uN2NiMGZjNjFiNWQyZjIwYmNkNWM0MmI3MDlkMWM4YzdiZDVkMmMxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJz
L3VscGZlY19yZWNlaXZlcl9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3VscGZlY19yZWNlaXZlcl9mdXp6ZXIuY2MK
QEAgLTI1LDcgKzI1LDcgQEAgY2xhc3MgRHVtbXlDYWxsYmFjayA6IHB1YmxpYyBSZWNvdmVyZWRQ
YWNrZXRSZWNlaXZlciB7CiAKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7CiAgIGNvbnN0ZXhwciBzaXplX3Qga01pbkRhdGFOZWVkZWQgPSAxMjsK
LSAgaWYgKHNpemUgPCBrTWluRGF0YU5lZWRlZCkgeworICBpZiAoc2l6ZSA8IGtNaW5EYXRhTmVl
ZGVkIHx8IHNpemUgPiAyMDAwKSB7CiAgICAgcmV0dXJuOwogICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvaW9zL2NvdmVyYWdl
X3V0aWxfaW9zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2lvcy9jb3ZlcmFnZV91dGlsX2lvcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExN2I2OWRjYTgwMTFiMWQy
MTZlM2NiYjhkZGU4NmQ4Nzc5ZmFiYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lvcy9jb3ZlcmFnZV91dGlsX2lvcy5o
CkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgVEVTVF9JT1Nf
Q09WRVJBR0VfVVRJTF9JT1NfSF8KKyNkZWZpbmUgVEVTVF9JT1NfQ09WRVJBR0VfVVRJTF9JT1Nf
SF8KKworbmFtZXNwYWNlIHJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKKy8vIEluIGRlYnVnIGJ1
aWxkcywgaWYgSU9TX0VOQUJMRV9DT1ZFUkFHRSBpcyBkZWZpbmVkLCBzZXRzIHRoZSBmaWxlbmFt
ZSBvZiB0aGUKKy8vIGNvdmVyYWdlIGZpbGUuIE90aGVyd2lzZSwgaXQgZG9lcyBub3RoaW5nLgor
dm9pZCBDb25maWd1cmVDb3ZlcmFnZVJlcG9ydFBhdGgoKTsKKworfSAgLy8gbmFtZXNwYWNlIHRl
c3QKK30gIC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAvLyBURVNUX0lPU19DT1ZFUkFHRV9V
VElMX0lPU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9pb3MvY292ZXJhZ2VfdXRpbF9pb3MubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lvcy9jb3ZlcmFnZV91dGlsX2lvcy5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMjFhMTZkZWYyNDc0NmE4ZmZkMGZkMjJkOWFjNzJiMmQyNDg0YWUwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC9pb3MvY292ZXJhZ2VfdXRpbF9pb3MubW0KQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqICBD
b3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpZmRlZiBX
RUJSVENfSU9TX0VOQUJMRV9DT1ZFUkFHRQorZXh0ZXJuICJDIiB2b2lkIF9fbGx2bV9wcm9maWxl
X3NldF9maWxlbmFtZShjb25zdCBjaGFyKiBuYW1lKTsKKyNlbmRpZgorCituYW1lc3BhY2UgcnRj
IHsKK25hbWVzcGFjZSB0ZXN0IHsKKwordm9pZCBDb25maWd1cmVDb3ZlcmFnZVJlcG9ydFBhdGgo
KSB7CisjaWZkZWYgV0VCUlRDX0lPU19FTkFCTEVfQ09WRVJBR0UKKyAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBvbmNlX3Rva2VuOworICBkaXNwYXRjaF9vbmNlKCZvbmNlX3Rva2VuLCBeeworICAg
IC8vIFdyaXRlcyB0aGUgcHJvZnJhdyBmaWxlIHRvIHRoZSBEb2N1bWVudHMgZGlyZWN0b3J5LCB3
aGVyZSB0aGUgYXBwIGhhcworICAgIC8vIHdyaXRlIHJpZ2h0cy4KKyAgICBOU0FycmF5KiBwYXRo
cyA9CisgICAgICAgIE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TRG9jdW1l
bnREaXJlY3RvcnksIE5TVXNlckRvbWFpbk1hc2ssIFlFUyk7CisgICAgTlNTdHJpbmcqIGRvY3Vt
ZW50c19kaXJlY3RvcnkgPSBbcGF0aHMgZmlyc3RPYmplY3RdOworICAgIE5TU3RyaW5nKiBmaWxl
X25hbWUgPSBbZG9jdW1lbnRzX2RpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJjb3ZlcmFnZS5wcm9mcmF3Il07CisKKyAgICAvLyBGb3IgZG9jdW1lbnRhdGlvbiwgc2Vl
OgorICAgIC8vIGh0dHA6Ly9jbGFuZy5sbHZtLm9yZy9kb2NzL1NvdXJjZUJhc2VkQ29kZUNvdmVy
YWdlLmh0bWwKKyAgICBfX2xsdm1fcHJvZmlsZV9zZXRfZmlsZW5hbWUoW2ZpbGVfbmFtZSBjU3Ry
aW5nVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworCisgICAgLy8gUHJpbnQg
dGhlIHBhdGggZm9yIGVhc2llciByZXRyaWV2YWwuCisgICAgTlNMb2coQCJDb3ZlcmFnZSBkYXRh
IGF0ICVALiIsIGZpbGVfbmFtZSk7CisgIH0pOworI2VuZGlmICAvLyBpZmRlZiBXRUJSVENfSU9T
X0VOQUJMRV9DT1ZFUkFHRQorfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNw
YWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9pb3MvdGVzdF9zdXBwb3J0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9pb3MvdGVzdF9zdXBwb3J0Lm1tCmluZGV4IGZlYzU5Nzg4
NTQ5N2Q2YmEyOTk2Y2RlYmI2YmQ5NmJkMjIwY2YwNmIuLjg2MDA1OTc0ZmIyMjE2YzYzNjVjYzUw
YzE2N2IzOTY4YTgyNDRkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvaW9zL3Rlc3Rfc3VwcG9ydC5tbQorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lvcy90ZXN0X3N1cHBvcnQubW0K
QEAgLTEwLDYgKzEwLDcgQEAKIAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KIAorI2luY2x1ZGUg
InRlc3QvaW9zL2NvdmVyYWdlX3V0aWxfaW9zLmgiCiAjaW5jbHVkZSAidGVzdC9pb3MvdGVzdF9z
dXBwb3J0LmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9wZXJmX3Rlc3QuaCIKIApAQCAt
NzAsNiArNzEsOCBAQCAtIChCT09MKWFwcGxpY2F0aW9uOihVSUFwcGxpY2F0aW9uICopYXBwbGlj
YXRpb24KIH0KIAogLSAodm9pZClydW5UZXN0cyB7CisgIHJ0Yzo6dGVzdDo6Q29uZmlndXJlQ292
ZXJhZ2VSZXBvcnRQYXRoKCk7CisKICAgaW50IGV4aXRTdGF0dXMgPSBnX3Rlc3Rfc3VpdGUoKTsK
IAogICBpZiAoZ19zYXZlX2NoYXJ0anNvbl9yZXN1bHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnRwX2ZpbGVfcmVhZGVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J0cF9maWxl
X3JlYWRlci5oCmluZGV4IDQ5MTM1MjJiYTcwMWE2YWQ4MTAwNDc3YjVjZTNjZTk1OWJjODBiZjMu
LjgwNTA0NGY1MmY5ZjljNzM5OWM4MjQ5MTBmMTlkMTIxMTNlZmY5ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnRwX2ZpbGVfcmVh
ZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9ydHBfZmlsZV9yZWFkZXIuaApAQCAtMTMsOCArMTMsNiBAQAogI2luY2x1ZGUgPHNldD4KICNp
bmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChi
dWlsZC9pbmNsdWRlKQotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9ydHBfZmlsZV93cml0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvcnRwX2ZpbGVfd3JpdGVyLmgKaW5kZXggNDQ5NmNhNGEyNWZkYzA4NjdmMTc3
YTQ5YmI3YTVlMDI1Nzk5MGJlNi4uNWU1NjBkNzM3NTYwYTQ3NzJiZTM5ZDkzMjE1ZGExOTI1ZDFj
MDU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9ydHBfZmlsZV93cml0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J0cF9maWxlX3dyaXRlci5oCkBAIC0xMiw3ICsxMiw2IEBA
CiAKICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgInRlc3QvcnRwX2ZpbGVfcmVhZGVyLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydHBfcnRjcF9vYnNlcnZlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydHBfcnRjcF9vYnNlcnZlci5oCmlu
ZGV4IGM5NzQ0MTA5NTUzNzQyZTdmZDk2NTEzY2NmYWEzYmViMGFiNGI3ZTIuLmQ0YWFkZmUwZGFk
YWYwZjkzZmUzMDg2ZTM5ODU3NDZiZWFhNDZkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnRwX3J0Y3Bfb2JzZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J0cF9ydGNw
X29ic2VydmVyLmgKQEAgLTcxLDkgKzcxLDcgQEAgY2xhc3MgUnRwUnRjcE9ic2VydmVyIHsKICBw
cm90ZWN0ZWQ6CiAgIFJ0cFJ0Y3BPYnNlcnZlcigpIDogUnRwUnRjcE9ic2VydmVyKDApIHt9CiAg
IGV4cGxpY2l0IFJ0cFJ0Y3BPYnNlcnZlcihpbnQgZXZlbnRfdGltZW91dF9tcykKLSAgICAgIDog
b2JzZXJ2YXRpb25fY29tcGxldGVfKGZhbHNlLCBmYWxzZSksCi0gICAgICAgIHBhcnNlcl8oUnRw
SGVhZGVyUGFyc2VyOjpDcmVhdGUoKSksCi0gICAgICAgIHRpbWVvdXRfbXNfKGV2ZW50X3RpbWVv
dXRfbXMpIHsKKyAgICAgIDogcGFyc2VyXyhSdHBIZWFkZXJQYXJzZXI6OkNyZWF0ZSgpKSwgdGlt
ZW91dF9tc18oZXZlbnRfdGltZW91dF9tcykgewogICAgIHBhcnNlcl8tPlJlZ2lzdGVyUnRwSGVh
ZGVyRXh0ZW5zaW9uKGtSdHBFeHRlbnNpb25UcmFuc21pc3Npb25UaW1lT2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtUT2Zmc2V0RXh0ZW5zaW9uSWQpOwog
ICAgIHBhcnNlcl8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKGtSdHBFeHRlbnNpb25BYnNv
bHV0ZVNlbmRUaW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9ydW5fbG9vcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnVuX2xvb3AuY2MKaW5kZXggZGMyZWMxOGVlYTc5ZjRkNDZj
ZTdlYzM5Y2I0ZmI4MGNlYzI0MDA4ZS4uMDUyNjYyYTQ2NGU5NDIyOWQ0NjIxZGI3NGNlNjA1NTVi
M2JmOTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9ydW5fbG9vcC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L3J1bl9sb29wLmNjCkBAIC0xNCw3ICsxNCw3IEBACiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIAotdm9pZCBQcmVzc0VudGVyVG9Db250aW51
ZSgpIHsKK3ZvaWQgUHJlc3NFbnRlclRvQ29udGludWUoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVG
b3JUZXN0aW5nJikgewogICBwdXRzKCI+PiBQcmVzcyBFTlRFUiB0byBjb250aW51ZS4uLiIpOwog
ICB3aGlsZSAoZ2V0YyhzdGRpbikgIT0gJ1xuJyAmJiAhZmVvZihzdGRpbikpCiAgICAgOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9y
dW5fbG9vcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9ydW5fbG9vcC5oCmluZGV4IDkwMDYzZGMzZTg3M2Q3ZmYyNDk4MTJmYzUwYmUwNzlmOGNmZmE3
MzEuLjM2YmZhMDY2OTcwOGFiZThhYmJiZTAzMWU3NmNhMTcwYjkyZjhiMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnVuX2xvb3Au
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J1
bl9sb29wLmgKQEAgLTEwLDExICsxMCwxMyBAQAogI2lmbmRlZiBURVNUX1JVTl9MT09QX0hfCiAj
ZGVmaW5lIFRFU1RfUlVOX0xPT1BfSF8KIAorI2luY2x1ZGUgInRlc3Qvc2luZ2xlX3RocmVhZGVk
X3Rhc2tfcXVldWUuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiAK
IC8vIEJsb2NrcyB1bnRpbCB0aGUgdXNlciBwcmVzc2VzIGVudGVyLgotdm9pZCBQcmVzc0VudGVy
VG9Db250aW51ZSgpOwordm9pZCBQcmVzc0VudGVyVG9Db250aW51ZShTaW5nbGVUaHJlYWRlZFRh
c2tRdWV1ZUZvclRlc3RpbmcgJnRhc2tfcXVldWUpOwogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vQlVJTEQuZ24KaW5k
ZXggMzcwM2FhODRlNzJlNmM1Y2I1NjM5NjA3YTNjNjMzYzMwOGRmODYxMy4uZTliZGE1MTEyY2I4
YWM5YmQ2MmY4MGI2ODI0MmI5N2RjMjAxOTgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9CVUlMRC5nbgorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL0JV
SUxELmduCkBAIC0zNywxNCArMzcsMTUgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAg
ICAiLi4vOnRlc3RfY29tbW9uIiwKICAgICAgICIuLi86dGVzdF9zdXBwb3J0IiwKICAgICAgICIu
Li86dmlkZW9fdGVzdF9jb21tb24iLAotICAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAg
ICAgIi4uLy4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi8u
Li9hcGk6dHJhbnNwb3J0X2FwaSIsCiAgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczpidWls
dGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeSIsCiAgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVj
czpidWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeSIsCisgICAgICAiLi4vLi4vYXBpL3Rlc3Qv
dmlkZW86ZnVuY3Rpb25fdmlkZW9fZmFjdG9yeSIsCiAgICAgICAiLi4vLi4vYXBpL3VuaXRzOmRh
dGFfcmF0ZSIsCiAgICAgICAiLi4vLi4vYXBpL3VuaXRzOnRpbWVfZGVsdGEiLAogICAgICAgIi4u
Ly4uL2FwaS91bml0czp0aW1lc3RhbXAiLAorICAgICAgIi4uLy4uL2FwaS92aWRlbzpidWlsdGlu
X3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS92aWRl
bzp2aWRlb19mcmFtZSIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAi
LAogICAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCkBAIC04
Miw2ICs4Myw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uLy4uL3J0Y19i
YXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90
ZXN0c191dGlscyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAorICAg
ICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpz
ZXF1ZW5jZWRfdGFza19jaGVja2VyIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpzdHJpbmd1dGls
cyIsCiAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKQEAgLTk0LDYgKzk2LDkgQEAgaWYg
KHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgfSBlbHNlIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7
CiAgICAgICBkZXBzICs9IFsgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOm9iamNfY29kZWNf
ZmFjdG9yeV9oZWxwZXIiIF0KICAgICB9CisgICAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsK
KyAgICAgIGRlcHMgKz0gWyAiLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6YW5hX2NvbmZpZ19w
cm90byIgXQorICAgIH0KICAgICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYgaXNfY2xhbmcp
IHsKICAgICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jbGFuZzpm
aW5kX2JhZF9jb25zdHJ1Y3RzIiBdCiAgICAgfQpAQCAtMTExLDExICsxMTYsMTAgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vLi4vbG9nZ2luZzptb2NrcyIsCiAgICAgICAi
Li4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9h
cHByb3ZlZCIsCi0gICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAog
ICAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBw
ZXJzOmZpZWxkX3RyaWFsIiwKICAgICAgICIuLi8uLi90ZXN0OmZpZWxkX3RyaWFsIiwKICAgICAg
ICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCi0gICAgICAiLy9zeXN0ZW1fd3JhcHBlcnM6Zmll
bGRfdHJpYWwiLAogICAgICAgIi8vdGVzdGluZy9nbW9jayIsCiAgICAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2F1ZGlvX3N0cmVh
bS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2Nl
bmFyaW8vYXVkaW9fc3RyZWFtLmNjCmluZGV4IGJkMzE3ZDk3ZDhiN2M0ODgxOWEwZGZlNjVhMWNi
ODY4Nzg4YzZlMWUuLjgzNTliZDA5ZWM1OGVjZTE5ZWY5YmNmZDI2YjBkZjViY2EwODc0MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
c2NlbmFyaW8vYXVkaW9fc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vYXVkaW9fc3RyZWFtLmNjCkBAIC05LDEwICs5
LDU4IEBACiAgKi8KICNpbmNsdWRlICJ0ZXN0L3NjZW5hcmlvL2F1ZGlvX3N0cmVhbS5oIgogCisj
aW5jbHVkZSAicnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oIgogI2luY2x1ZGUg
InRlc3QvY2FsbF90ZXN0LmgiCiAKKyNpZiBXRUJSVENfRU5BQkxFX1BST1RPQlVGCitSVENfUFVT
SF9JR05PUklOR19XVU5ERUYoKQorI2lmZGVmIFdFQlJUQ19BTkRST0lEX1BMQVRGT1JNX0JVSUxE
CisjaW5jbHVkZSAiZXh0ZXJuYWwvd2VicnRjL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9h
dWRpb19uZXR3b3JrX2FkYXB0b3IvY29uZmlnLnBiLmgiCisjZWxzZQorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9jb25maWcucGIuaCIKKyNlbmRp
ZgorUlRDX1BPUF9JR05PUklOR19XVU5ERUYoKQorI2VuZGlmCisKIG5hbWVzcGFjZSB3ZWJydGMg
ewogbmFtZXNwYWNlIHRlc3QgeworbmFtZXNwYWNlIHsKK2Fic2w6Om9wdGlvbmFsPHN0ZDo6c3Ry
aW5nPiBDcmVhdGVBZGFwdGF0aW9uU3RyaW5nKAorICAgIEF1ZGlvU3RyZWFtQ29uZmlnOjpOZXR3
b3JrQWRhcHRhdGlvbiBjb25maWcpIHsKKyNpZiBXRUJSVENfRU5BQkxFX1BST1RPQlVGCisKKyAg
YXVkaW9fbmV0d29ya19hZGFwdG9yOjpjb25maWc6OkNvbnRyb2xsZXJNYW5hZ2VyIGNvbnRfY29u
ZjsKKyAgaWYgKGNvbmZpZy5mcmFtZS5tYXhfcmF0ZV9mb3JfNjBfbXMuSXNGaW5pdGUoKSkgewor
ICAgIGF1dG8gY29udHJvbGxlciA9CisgICAgICAgIGNvbnRfY29uZi5hZGRfY29udHJvbGxlcnMo
KS0+bXV0YWJsZV9mcmFtZV9sZW5ndGhfY29udHJvbGxlcigpOworICAgIGNvbnRyb2xsZXItPnNl
dF9mbF9kZWNyZWFzaW5nX3BhY2tldF9sb3NzX2ZyYWN0aW9uKAorICAgICAgICBjb25maWcuZnJh
bWUubWluX3BhY2tldF9sb3NzX2Zvcl9kZWNyZWFzZSk7CisgICAgY29udHJvbGxlci0+c2V0X2Zs
X2luY3JlYXNpbmdfcGFja2V0X2xvc3NfZnJhY3Rpb24oCisgICAgICAgIGNvbmZpZy5mcmFtZS5t
YXhfcGFja2V0X2xvc3NfZm9yX2luY3JlYXNlKTsKKworICAgIGNvbnRyb2xsZXItPnNldF9mbF8y
MG1zX3RvXzYwbXNfYmFuZHdpZHRoX2JwcygKKyAgICAgICAgY29uZmlnLmZyYW1lLm1pbl9yYXRl
X2Zvcl8yMF9tcy5icHM8aW50MzJfdD4oKSk7CisgICAgY29udHJvbGxlci0+c2V0X2ZsXzYwbXNf
dG9fMjBtc19iYW5kd2lkdGhfYnBzKAorICAgICAgICBjb25maWcuZnJhbWUubWF4X3JhdGVfZm9y
XzYwX21zLmJwczxpbnQzMl90PigpKTsKKworICAgIGlmIChjb25maWcuZnJhbWUubWF4X3JhdGVf
Zm9yXzEyMF9tcy5Jc0Zpbml0ZSgpKSB7CisgICAgICBjb250cm9sbGVyLT5zZXRfZmxfNjBtc190
b18xMjBtc19iYW5kd2lkdGhfYnBzKAorICAgICAgICAgIGNvbmZpZy5mcmFtZS5taW5fcmF0ZV9m
b3JfNjBfbXMuYnBzPGludDMyX3Q+KCkpOworICAgICAgY29udHJvbGxlci0+c2V0X2ZsXzEyMG1z
X3RvXzYwbXNfYmFuZHdpZHRoX2JwcygKKyAgICAgICAgICBjb25maWcuZnJhbWUubWF4X3JhdGVf
Zm9yXzEyMF9tcy5icHM8aW50MzJfdD4oKSk7CisgICAgfQorICB9CisgIGNvbnRfY29uZi5hZGRf
Y29udHJvbGxlcnMoKS0+bXV0YWJsZV9iaXRyYXRlX2NvbnRyb2xsZXIoKTsKKyAgc3RkOjpzdHJp
bmcgY29uZmlnX3N0cmluZyA9IGNvbnRfY29uZi5TZXJpYWxpemVBc1N0cmluZygpOworICByZXR1
cm4gY29uZmlnX3N0cmluZzsKKyNlbHNlCisgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJhdWRpb19u
ZXR3b3JrX2FkYXB0YXRpb24gaXMgZW5hYmxlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIiBi
dXQgV0VCUlRDX0VOQUJMRV9QUk9UT0JVRiBpcyBmYWxzZS5cbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIklnbm9yaW5nIHNldHRpbmdzLiI7CisgIHJldHVybiBhYnNsOjpudWxsb3B0OworI2Vu
ZGlmICAvLyBXRUJSVENfRU5BQkxFX1BST1RPQlVGCit9Cit9ICAvLyBuYW1lc3BhY2UKIAogU2Vu
ZEF1ZGlvU3RyZWFtOjpTZW5kQXVkaW9TdHJlYW0oCiAgICAgQ2FsbENsaWVudCogc2VuZGVyLApA
QCAtMjAsNyArNjgsOCBAQCBTZW5kQXVkaW9TdHJlYW06OlNlbmRBdWRpb1N0cmVhbSgKICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gZW5jb2Rlcl9mYWN0b3J5LAog
ICAgIFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQpCiAgICAgOiBzZW5kZXJfKHNlbmRlciksIGNv
bmZpZ18oY29uZmlnKSB7Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIHNlbmRfY29uZmlnKHNl
bmRfdHJhbnNwb3J0KTsKKyAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgc2VuZF9jb25maWcoc2Vu
ZF90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVk
aWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgIHNzcmNfID0gc2VuZGVyLT5HZXROZXh0QXVkaW9T
c3JjKCk7CiAgIHNlbmRfY29uZmlnLnJ0cC5zc3JjID0gc3NyY187CiAgIFNkcEF1ZGlvRm9ybWF0
OjpQYXJhbWV0ZXJzIHNkcF9wYXJhbXM7CkBAIC00Miw2ICs5MSwxMCBAQCBTZW5kQXVkaW9TdHJl
YW06OlNlbmRBdWRpb1N0cmVhbSgKICAgICBzZW5kX2NvbmZpZy5zZW5kX2NvZGVjX3NwZWMtPnRh
cmdldF9iaXRyYXRlX2JwcyA9CiAgICAgICAgIGNvbmZpZy5lbmNvZGVyLmZpeGVkX3JhdGUtPmJw
cygpOwogCisgIGlmIChjb25maWcubmV0d29ya19hZGFwdGF0aW9uKSB7CisgICAgc2VuZF9jb25m
aWcuYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZyA9CisgICAgICAgIENyZWF0ZUFkYXB0YXRp
b25TdHJpbmcoY29uZmlnLmFkYXB0KTsKKyAgfQogICBpZiAoY29uZmlnLmVuY29kZXIuYWxsb2Nh
dGVfYml0cmF0ZSB8fAogICAgICAgY29uZmlnLnN0cmVhbS5pbl9iYW5kd2lkdGhfZXN0aW1hdGlv
bikgewogICAgIERhdGFSYXRlIG1pbl9yYXRlID0gRGF0YVJhdGU6OkluZmluaXR5KCk7CkBAIC01
NCwxMSArMTA3LDIwIEBAIFNlbmRBdWRpb1N0cmVhbTo6U2VuZEF1ZGlvU3RyZWFtKAogICAgICAg
bWF4X3JhdGUgPSAqY29uZmlnLmVuY29kZXIubWF4X3JhdGU7CiAgICAgfQogICAgIGlmIChmaWVs
ZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtU2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikpIHsK
LSAgICAgIFRpbWVEZWx0YSBmcmFtZV9sZW5ndGggPSBjb25maWcuZW5jb2Rlci5pbml0aWFsX2Zy
YW1lX2xlbmd0aDsKKyAgICAgIFRpbWVEZWx0YSBtaW5fZnJhbWVfbGVuZ3RoID0gVGltZURlbHRh
OjptcygyMCk7CisgICAgICAvLyBOb3RlLCBkZXBlbmRzIG9uIFdFQlJUQ19PUFVTX1NVUFBPUlRf
MTIwTVNfUFRJTUUgYmVpbmcgc2V0LCB3aGljaCBpcworICAgICAgLy8gdGhlIGRlZmF1bHQuCisg
ICAgICBUaW1lRGVsdGEgbWF4X2ZyYW1lX2xlbmd0aCA9IFRpbWVEZWx0YTo6bXMoMTIwKTsKICAg
ICAgIERhdGFTaXplIHJ0cF9vdmVyaGVhZCA9IERhdGFTaXplOjpieXRlcygxMik7Ci0gICAgICBE
YXRhU2l6ZSB0b3RhbF9vdmVyaGVhZCA9IGNvbmZpZy5zdHJlYW0ucGFja2V0X292ZXJoZWFkICsg
cnRwX292ZXJoZWFkOwotICAgICAgbWluX3JhdGUgKz0gdG90YWxfb3ZlcmhlYWQgLyBmcmFtZV9s
ZW5ndGg7Ci0gICAgICBtYXhfcmF0ZSArPSB0b3RhbF9vdmVyaGVhZCAvIGZyYW1lX2xlbmd0aDsK
KyAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgcnRwIGV4dGVuc2lvbiBv
dmVyaGVhZCBhbmQgd2lsbCBub3QKKyAgICAgIC8vIGZvbGxvdyB1cGRhdGVzIGluIHRoZSB0cmFu
c3BvcnQgb3ZlcmhlYWQgb3ZlciB0aW1lLgorICAgICAgRGF0YVNpemUgdG90YWxfb3ZlcmhlYWQg
PQorICAgICAgICAgIHNlbmRlcl8tPnRyYW5zcG9ydF8ucGFja2V0X292ZXJoZWFkKCkgKyBydHBf
b3ZlcmhlYWQ7CisKKyAgICAgIG1pbl9yYXRlICs9IHRvdGFsX292ZXJoZWFkIC8gbWF4X2ZyYW1l
X2xlbmd0aDsKKyAgICAgIC8vIEluIFdlYlJUQ1ZvaWNlRW5naW5lIHRoZSBtYXggcmF0ZSBpcyBh
bHNvIGJhc2VkIG9uIHRoZSBtYXggZnJhbWUKKyAgICAgIC8vIGxlbmd0aC4KKyAgICAgIG1heF9y
YXRlICs9IHRvdGFsX292ZXJoZWFkIC8gbWluX2ZyYW1lX2xlbmd0aDsKICAgICB9CiAgICAgc2Vu
ZF9jb25maWcubWluX2JpdHJhdGVfYnBzID0gbWluX3JhdGUuYnBzKCk7CiAgICAgc2VuZF9jb25m
aWcubWF4X2JpdHJhdGVfYnBzID0gbWF4X3JhdGUuYnBzKCk7CkBAIC03MCwxMyArMTMyLDE3IEBA
IFNlbmRBdWRpb1N0cmVhbTo6U2VuZEF1ZGlvU3RyZWFtKAogICAgICAgICB7UnRwRXh0ZW5zaW9u
OjprVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJVcmksIDh9fTsKICAgfQogCi0gIGlmIChjb25maWcu
c3RyZWFtLnJhdGVfYWxsb2NhdGlvbl9wcmlvcml0eSkgeworICBpZiAoY29uZmlnLmVuY29kZXIu
cHJpb3JpdHlfcmF0ZSkgewogICAgIHNlbmRfY29uZmlnLnRyYWNrX2lkID0gc2VuZGVyLT5HZXRO
ZXh0UHJpb3JpdHlJZCgpOworICAgIHNlbmRlcl8tPmNhbGxfLT5TZXRCaXRyYXRlQWxsb2NhdGlv
blN0cmF0ZWd5KAorICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxydGM6OkF1ZGlvUHJpb3JpdHlC
aXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5PigKKyAgICAgICAgICAgIHNlbmRfY29uZmlnLnRyYWNr
X2lkLAorICAgICAgICAgICAgY29uZmlnLmVuY29kZXIucHJpb3JpdHlfcmF0ZS0+YnBzPHVpbnQz
Ml90PigpKSk7CiAgIH0KICAgc2VuZF9zdHJlYW1fID0gc2VuZGVyXy0+Y2FsbF8tPkNyZWF0ZUF1
ZGlvU2VuZFN0cmVhbShzZW5kX2NvbmZpZyk7CiAgIGlmIChmaWVsZF90cmlhbDo6SXNFbmFibGVk
KCJXZWJSVEMtU2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikpIHsKICAgICBzZW5kZXItPmNhbGxf
LT5PbkF1ZGlvVHJhbnNwb3J0T3ZlcmhlYWRDaGFuZ2VkKAotICAgICAgICBjb25maWcuc3RyZWFt
LnBhY2tldF9vdmVyaGVhZC5ieXRlcygpKTsKKyAgICAgICAgc2VuZGVyXy0+dHJhbnNwb3J0Xy5w
YWNrZXRfb3ZlcmhlYWQoKS5ieXRlcygpKTsKICAgfQogfQogCkBAIC04NiwxNyArMTUyLDE5IEBA
IFNlbmRBdWRpb1N0cmVhbTo6flNlbmRBdWRpb1N0cmVhbSgpIHsKIAogdm9pZCBTZW5kQXVkaW9T
dHJlYW06OlN0YXJ0KCkgewogICBzZW5kX3N0cmVhbV8tPlN0YXJ0KCk7CisgIHNlbmRlcl8tPmNh
bGxfLT5TaWduYWxDaGFubmVsTmV0d29ya1N0YXRlKE1lZGlhVHlwZTo6QVVESU8sIGtOZXR3b3Jr
VXApOwogfQogCi1ib29sIFNlbmRBdWRpb1N0cmVhbTo6VHJ5RGVsaXZlclBhY2tldChydGM6OkNv
cHlPbldyaXRlQnVmZmVyIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ2NF90IHJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKLSAgLy8gUmVtb3ZlcyBhZGRlZCBvdmVyaGVh
ZCBiZWZvcmUgZGVsaXZlcmluZyBSVENQIHBhY2tldCB0byBzZW5kZXIuCi0gIFJUQ19EQ0hFQ0tf
R0UocGFja2V0LnNpemUoKSwgY29uZmlnXy5zdHJlYW0ucGFja2V0X292ZXJoZWFkLmJ5dGVzKCkp
OwotICBwYWNrZXQuU2V0U2l6ZShwYWNrZXQuc2l6ZSgpIC0gY29uZmlnXy5zdHJlYW0ucGFja2V0
X292ZXJoZWFkLmJ5dGVzKCkpOwotICBzZW5kZXJfLT5EZWxpdmVyUGFja2V0KE1lZGlhVHlwZTo6
QVVESU8sIHBhY2tldCwgYXRfdGltZSk7Ci0gIHJldHVybiB0cnVlOworQ29sdW1uUHJpbnRlciBT
ZW5kQXVkaW9TdHJlYW06OlN0YXRzUHJpbnRlcigpIHsKKyAgcmV0dXJuIENvbHVtblByaW50ZXI6
OkxhbWJkYSgKKyAgICAgICJhdWRpb190YXJnZXRfcmF0ZSIsCisgICAgICBbdGhpc10ocnRjOjpT
aW1wbGVTdHJpbmdCdWlsZGVyJiBzYikgeworICAgICAgICBBdWRpb1NlbmRTdHJlYW06OlN0YXRz
IHN0YXRzID0gc2VuZF9zdHJlYW1fLT5HZXRTdGF0cygpOworICAgICAgICBzYi5BcHBlbmRGb3Jt
YXQoIiUuMGxmIiwgc3RhdHMudGFyZ2V0X2JpdHJhdGVfYnBzIC8gOC4wKTsKKyAgICAgIH0sCisg
ICAgICA2NCk7CiB9CisKIFJlY2VpdmVBdWRpb1N0cmVhbTo6UmVjZWl2ZUF1ZGlvU3RyZWFtKAog
ICAgIENhbGxDbGllbnQqIHJlY2VpdmVyLAogICAgIEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZywK
QEAgLTEwOCwxMSArMTc2LDEzIEBAIFJlY2VpdmVBdWRpb1N0cmVhbTo6UmVjZWl2ZUF1ZGlvU3Ry
ZWFtKAogICByZWN2X2NvbmZpZy5ydHAubG9jYWxfc3NyYyA9IENhbGxUZXN0OjprUmVjZWl2ZXJM
b2NhbEF1ZGlvU3NyYzsKICAgcmVjdl9jb25maWcucnRjcF9zZW5kX3RyYW5zcG9ydCA9IGZlZWRi
YWNrX3RyYW5zcG9ydDsKICAgcmVjdl9jb25maWcucnRwLnJlbW90ZV9zc3JjID0gc2VuZF9zdHJl
YW0tPnNzcmNfOworICByZWNlaXZlci0+c3NyY19tZWRpYV90eXBlc19bcmVjdl9jb25maWcucnRw
LnJlbW90ZV9zc3JjXSA9IE1lZGlhVHlwZTo6QVVESU87CiAgIGlmIChjb25maWcuc3RyZWFtLmlu
X2JhbmR3aWR0aF9lc3RpbWF0aW9uKSB7CiAgICAgcmVjdl9jb25maWcucnRwLnRyYW5zcG9ydF9j
YyA9IHRydWU7CiAgICAgcmVjdl9jb25maWcucnRwLmV4dGVuc2lvbnMgPSB7CiAgICAgICAgIHtS
dHBFeHRlbnNpb246OmtUcmFuc3BvcnRTZXF1ZW5jZU51bWJlclVyaSwgOH19OwogICB9CisgIHJl
Y2VpdmVyXy0+QWRkRXh0ZW5zaW9ucyhyZWN2X2NvbmZpZy5ydHAuZXh0ZW5zaW9ucyk7CiAgIHJl
Y3ZfY29uZmlnLmRlY29kZXJfZmFjdG9yeSA9IGRlY29kZXJfZmFjdG9yeTsKICAgcmVjdl9jb25m
aWcuZGVjb2Rlcl9tYXAgPSB7CiAgICAgICB7Q2FsbFRlc3Q6OmtBdWRpb1NlbmRQYXlsb2FkVHlw
ZSwgeyJvcHVzIiwgNDgwMDAsIDJ9fX07CkBAIC0xMjMsNDkgKzE5MywyNiBAQCBSZWNlaXZlQXVk
aW9TdHJlYW06On5SZWNlaXZlQXVkaW9TdHJlYW0oKSB7CiAgIHJlY2VpdmVyXy0+Y2FsbF8tPkRl
c3Ryb3lBdWRpb1JlY2VpdmVTdHJlYW0ocmVjZWl2ZV9zdHJlYW1fKTsKIH0KIAotYm9vbCBSZWNl
aXZlQXVkaW9TdHJlYW06OlRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBw
YWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRf
dCByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRp
bWVzdGFtcCBhdF90aW1lKSB7Ci0gIFJUQ19EQ0hFQ0tfR0UocGFja2V0LnNpemUoKSwgY29uZmln
Xy5zdHJlYW0ucGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwotICBwYWNrZXQuU2V0U2l6ZShwYWNr
ZXQuc2l6ZSgpIC0gY29uZmlnXy5zdHJlYW0ucGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwotICBy
ZWNlaXZlcl8tPkRlbGl2ZXJQYWNrZXQoTWVkaWFUeXBlOjpBVURJTywgcGFja2V0LCBhdF90aW1l
KTsKLSAgcmV0dXJuIHRydWU7Cit2b2lkIFJlY2VpdmVBdWRpb1N0cmVhbTo6U3RhcnQoKSB7Cisg
IHJlY2VpdmVfc3RyZWFtXy0+U3RhcnQoKTsKKyAgcmVjZWl2ZXJfLT5jYWxsXy0+U2lnbmFsQ2hh
bm5lbE5ldHdvcmtTdGF0ZShNZWRpYVR5cGU6OkFVRElPLCBrTmV0d29ya1VwKTsKIH0KIAogQXVk
aW9TdHJlYW1QYWlyOjp+QXVkaW9TdHJlYW1QYWlyKCkgPSBkZWZhdWx0OwogCiBBdWRpb1N0cmVh
bVBhaXI6OkF1ZGlvU3RyZWFtUGFpcigKICAgICBDYWxsQ2xpZW50KiBzZW5kZXIsCi0gICAgc3Rk
Ojp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAgdWludDY0X3Qgc2VuZF9yZWNl
aXZlcl9pZCwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gZW5j
b2Rlcl9mYWN0b3J5LAogICAgIENhbGxDbGllbnQqIHJlY2VpdmVyLAotICAgIHN0ZDo6dmVjdG9y
PE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmssCi0gICAgdWludDY0X3QgcmV0dXJuX3JlY2VpdmVy
X2lkLAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBkZWNvZGVy
X2ZhY3RvcnksCiAgICAgQXVkaW9TdHJlYW1Db25maWcgY29uZmlnKQogICAgIDogY29uZmlnXyhj
b25maWcpLAotICAgICAgc2VuZF9saW5rXyhzZW5kX2xpbmspLAotICAgICAgcmV0dXJuX2xpbmtf
KHJldHVybl9saW5rKSwKLSAgICAgIHNlbmRfdHJhbnNwb3J0XyhzZW5kZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgc2VuZF9saW5rLmZyb250KCksCi0gICAgICAgICAgICAgICAgICAgICAgc2Vu
ZF9yZWNlaXZlcl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc3RyZWFtLnBhY2tl
dF9vdmVyaGVhZCksCi0gICAgICByZXR1cm5fdHJhbnNwb3J0XyhyZWNlaXZlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybl9saW5rLmZyb250KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm5fcmVjZWl2ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWcu
c3RyZWFtLnBhY2tldF9vdmVyaGVhZCksCi0gICAgICBzZW5kX3N0cmVhbV8oc2VuZGVyLCBjb25m
aWcsIGVuY29kZXJfZmFjdG9yeSwgJnNlbmRfdHJhbnNwb3J0XyksCisgICAgICBzZW5kX3N0cmVh
bV8oc2VuZGVyLCBjb25maWcsIGVuY29kZXJfZmFjdG9yeSwgJnNlbmRlci0+dHJhbnNwb3J0Xyks
CiAgICAgICByZWNlaXZlX3N0cmVhbV8ocmVjZWl2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
Y29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICZzZW5kX3N0cmVhbV8sCiAgICAgICAgICAg
ICAgICAgICAgICAgZGVjb2Rlcl9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICZyZXR1
cm5fdHJhbnNwb3J0XykgewotICBOZXR3b3JrTm9kZTo6Um91dGUoc2VuZF90cmFuc3BvcnRfLlJl
Y2VpdmVySWQoKSwgc2VuZF9saW5rXywKLSAgICAgICAgICAgICAgICAgICAgICZyZWNlaXZlX3N0
cmVhbV8pOwotICBOZXR3b3JrTm9kZTo6Um91dGUocmV0dXJuX3RyYW5zcG9ydF8uUmVjZWl2ZXJJ
ZCgpLCByZXR1cm5fbGlua18sCi0gICAgICAgICAgICAgICAgICAgICAmc2VuZF9zdHJlYW1fKTsK
LX0KKyAgICAgICAgICAgICAgICAgICAgICAmcmVjZWl2ZXItPnRyYW5zcG9ydF8pIHt9CiAKIH0g
IC8vIG5hbWVzcGFjZSB0ZXN0CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2F1
ZGlvX3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC9zY2VuYXJpby9hdWRpb19zdHJlYW0uaAppbmRleCAxN2I4YmMzNzBlZmQzZDE5MjE1OThi
ODYwZmIwZjg3YjMwMjM4OTI2Li4zYWIwYTFmMmRlZjc0YzllYmQ4N2QzNWM5ZWNiNTc4YTIzZDJm
ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3NjZW5hcmlvL2F1ZGlvX3N0cmVhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vYXVkaW9fc3RyZWFtLmgKQEAgLTI0
LDExICsyNCwxMiBAQCBuYW1lc3BhY2UgdGVzdCB7CiAKIC8vIFNlbmRBdWRpb1N0cmVhbSByZXBy
ZXNlbnRzIHNlbmRpbmcgb2YgYXVkaW8uIEl0IGNhbiBiZSB1c2VkIGZvciBzdGFydGluZyB0aGUK
IC8vIHN0cmVhbSBpZiBuZWNjZXNzYXJ5LgotY2xhc3MgU2VuZEF1ZGlvU3RyZWFtIDogcHVibGlj
IE5ldHdvcmtSZWNlaXZlckludGVyZmFjZSB7CitjbGFzcyBTZW5kQXVkaW9TdHJlYW0gewogIHB1
YmxpYzoKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTZW5kQXVkaW9TdHJlYW0pOwog
ICB+U2VuZEF1ZGlvU3RyZWFtKCk7CiAgIHZvaWQgU3RhcnQoKTsKKyAgQ29sdW1uUHJpbnRlciBT
dGF0c1ByaW50ZXIoKTsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyBTY2VuYXJpbzsKQEAg
LTM4LDExICszOSw2IEBAIGNsYXNzIFNlbmRBdWRpb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVj
ZWl2ZXJJbnRlcmZhY2UgewogICAgICAgICAgICAgICAgICAgQXVkaW9TdHJlYW1Db25maWcgY29u
ZmlnLAogICAgICAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZh
Y3Rvcnk+IGVuY29kZXJfZmFjdG9yeSwKICAgICAgICAgICAgICAgICAgIFRyYW5zcG9ydCogc2Vu
ZF90cmFuc3BvcnQpOwotICAvLyBIYW5kbGVzIFJUQ1AgZmVlZGJhY2sgZm9yIHRoaXMgc3RyZWFt
LgotICBib29sIFRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSBvdmVycmlkZTsKLQogICBBdWRpb1NlbmRT
dHJlYW0qIHNlbmRfc3RyZWFtXyA9IG51bGxwdHI7CiAgIENhbGxDbGllbnQqIGNvbnN0IHNlbmRl
cl87CiAgIGNvbnN0IEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZ187CkBAIC01MCwxMCArNDYsMTEg
QEAgY2xhc3MgU2VuZEF1ZGlvU3RyZWFtIDogcHVibGljIE5ldHdvcmtSZWNlaXZlckludGVyZmFj
ZSB7CiB9OwogCiAvLyBSZWNlaXZlQXVkaW9TdHJlYW0gcmVwcmVzZW50cyBhbiBhdWRpbyByZWNl
aXZlci4gSXQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseS4KLWNsYXNzIFJlY2VpdmVBdWRpb1N0cmVh
bSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgeworY2xhc3MgUmVjZWl2ZUF1ZGlv
U3RyZWFtIHsKICBwdWJsaWM6CiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVjZWl2
ZUF1ZGlvU3RyZWFtKTsKICAgflJlY2VpdmVBdWRpb1N0cmVhbSgpOworICB2b2lkIFN0YXJ0KCk7
CiAKICBwcml2YXRlOgogICBmcmllbmQgY2xhc3MgU2NlbmFyaW87CkBAIC02Myw5ICs2MCw2IEBA
IGNsYXNzIFJlY2VpdmVBdWRpb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZh
Y2UgewogICAgICAgICAgICAgICAgICAgICAgU2VuZEF1ZGlvU3RyZWFtKiBzZW5kX3N0cmVhbSwK
ICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0
b3J5PiBkZWNvZGVyX2ZhY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICBUcmFuc3BvcnQqIGZl
ZWRiYWNrX3RyYW5zcG9ydCk7Ci0gIGJvb2wgVHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldy
aXRlQnVmZmVyIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlY2Vp
dmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIG92ZXJyaWRl
OwogICBBdWRpb1JlY2VpdmVTdHJlYW0qIHJlY2VpdmVfc3RyZWFtXyA9IG51bGxwdHI7CiAgIENh
bGxDbGllbnQqIGNvbnN0IHJlY2VpdmVyXzsKICAgY29uc3QgQXVkaW9TdHJlYW1Db25maWcgY29u
ZmlnXzsKQEAgLTg0LDIzICs3OCwxMyBAQCBjbGFzcyBBdWRpb1N0cmVhbVBhaXIgewogIHByaXZh
dGU6CiAgIGZyaWVuZCBjbGFzcyBTY2VuYXJpbzsKICAgQXVkaW9TdHJlYW1QYWlyKENhbGxDbGll
bnQqIHNlbmRlciwKLSAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4g
c2VuZF9saW5rLAotICAgICAgICAgICAgICAgICAgdWludDY0X3Qgc2VuZF9yZWNlaXZlcl9pZCwK
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5
PiBlbmNvZGVyX2ZhY3RvcnksCi0KICAgICAgICAgICAgICAgICAgIENhbGxDbGllbnQqIHJlY2Vp
dmVyLAotICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5f
bGluaywKLSAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJldHVybl9yZWNlaXZlcl9pZCwKICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBk
ZWNvZGVyX2ZhY3RvcnksCiAgICAgICAgICAgICAgICAgICBBdWRpb1N0cmVhbUNvbmZpZyBjb25m
aWcpOwogCiAgcHJpdmF0ZToKICAgY29uc3QgQXVkaW9TdHJlYW1Db25maWcgY29uZmlnXzsKLSAg
c3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmtfOwotICBzdGQ6OnZlY3RvcjxOZXR3
b3JrTm9kZSo+IHJldHVybl9saW5rXzsKLSAgTmV0d29ya05vZGVUcmFuc3BvcnQgc2VuZF90cmFu
c3BvcnRfOwotICBOZXR3b3JrTm9kZVRyYW5zcG9ydCByZXR1cm5fdHJhbnNwb3J0XzsKLQogICBT
ZW5kQXVkaW9TdHJlYW0gc2VuZF9zdHJlYW1fOwogICBSZWNlaXZlQXVkaW9TdHJlYW0gcmVjZWl2
ZV9zdHJlYW1fOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vY2FsbF9jbGllbnQuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2NhbGxfY2xpZW50LmNj
CmluZGV4IDQ3Y2MzYmM1N2I4MmQyNTM2ZTIyZmNkZTllNjJjMzdiYTQzZDI2MGUuLjg2ZWI0ZGMx
ZGI2YTQwYTVmODUxNjlhMzZmZTJlNDY0MTFjZTUzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vY2FsbF9jbGllbnQu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9z
Y2VuYXJpby9jYWxsX2NsaWVudC5jYwpAQCAtMjEsNiArMjEsMzkgQEAgbmFtZXNwYWNlIHdlYnJ0
YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiBuYW1lc3BhY2UgewogY29uc3QgY2hhcioga1ByaW9yaXR5
U3RyZWFtSWQgPSAicHJpb3JpdHktdHJhY2siOworCitDYWxsQ2xpZW50RmFrZUF1ZGlvIEluaXRB
dWRpbygpIHsKKyAgQ2FsbENsaWVudEZha2VBdWRpbyBzZXR1cDsKKyAgYXV0byBjYXB0dXJlciA9
IFRlc3RBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRlUHVsc2VkTm9pc2VDYXB0dXJlcigyNTYsIDQ4
MDAwKTsKKyAgYXV0byByZW5kZXJlciA9IFRlc3RBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRlRGlz
Y2FyZFJlbmRlcmVyKDQ4MDAwKTsKKyAgc2V0dXAuZmFrZV9hdWRpb19kZXZpY2UgPSBUZXN0QXVk
aW9EZXZpY2VNb2R1bGU6OkNyZWF0ZVRlc3RBdWRpb0RldmljZU1vZHVsZSgKKyAgICAgIHN0ZDo6
bW92ZShjYXB0dXJlciksIHN0ZDo6bW92ZShyZW5kZXJlciksIDEuZik7CisgIHNldHVwLmFwbSA9
IEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKTsKKyAgc2V0dXAuZmFrZV9hdWRpb19k
ZXZpY2UtPkluaXQoKTsKKyAgQXVkaW9TdGF0ZTo6Q29uZmlnIGF1ZGlvX3N0YXRlX2NvbmZpZzsK
KyAgYXVkaW9fc3RhdGVfY29uZmlnLmF1ZGlvX21peGVyID0gQXVkaW9NaXhlckltcGw6OkNyZWF0
ZSgpOworICBhdWRpb19zdGF0ZV9jb25maWcuYXVkaW9fcHJvY2Vzc2luZyA9IHNldHVwLmFwbTsK
KyAgYXVkaW9fc3RhdGVfY29uZmlnLmF1ZGlvX2RldmljZV9tb2R1bGUgPSBzZXR1cC5mYWtlX2F1
ZGlvX2RldmljZTsKKyAgc2V0dXAuYXVkaW9fc3RhdGUgPSBBdWRpb1N0YXRlOjpDcmVhdGUoYXVk
aW9fc3RhdGVfY29uZmlnKTsKKyAgc2V0dXAuZmFrZV9hdWRpb19kZXZpY2UtPlJlZ2lzdGVyQXVk
aW9DYWxsYmFjaygKKyAgICAgIHNldHVwLmF1ZGlvX3N0YXRlLT5hdWRpb190cmFuc3BvcnQoKSk7
CisgIHJldHVybiBzZXR1cDsKK30KKworQ2FsbCogQ3JlYXRlQ2FsbChDYWxsQ2xpZW50Q29uZmln
IGNvbmZpZywKKyAgICAgICAgICAgICAgICAgTG9nZ2luZ05ldHdvcmtDb250cm9sbGVyRmFjdG9y
eSogbmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnlfLAorICAgICAgICAgICAgICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9TdGF0ZT4gYXVkaW9fc3RhdGUpIHsKKyAgQ2FsbENvbmZpZyBjYWxs
X2NvbmZpZyhuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV8tPkdldEV2ZW50TG9nKCkpOworICBj
YWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5tYXhfYml0cmF0ZV9icHMgPQorICAgICAgY29uZmln
LnRyYW5zcG9ydC5yYXRlcy5tYXhfcmF0ZS5icHNfb3IoLTEpOworICBjYWxsX2NvbmZpZy5iaXRy
YXRlX2NvbmZpZy5taW5fYml0cmF0ZV9icHMgPQorICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRl
cy5taW5fcmF0ZS5icHMoKTsKKyAgY2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcuc3RhcnRfYml0
cmF0ZV9icHMgPQorICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlLmJwcygp
OworICBjYWxsX2NvbmZpZy5uZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeSA9IG5ldHdvcmtfY29u
dHJvbGxlcl9mYWN0b3J5XzsKKyAgY2FsbF9jb25maWcuYXVkaW9fc3RhdGUgPSBhdWRpb19zdGF0
ZTsKKyAgcmV0dXJuIENhbGw6OkNyZWF0ZShjYWxsX2NvbmZpZyk7Cit9CiB9CiAKIExvZ2dpbmdO
ZXR3b3JrQ29udHJvbGxlckZhY3Rvcnk6OkxvZ2dpbmdOZXR3b3JrQ29udHJvbGxlckZhY3Rvcnko
CkBAIC0xMDcsMzEgKzE0MCwxNyBAQCBDYWxsQ2xpZW50OjpDYWxsQ2xpZW50KENsb2NrKiBjbG9j
aywKICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbG9nX2ZpbGVuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICBDYWxsQ2xpZW50Q29uZmlnIGNvbmZpZykKICAgICA6IGNsb2Nr
XyhjbG9jayksCi0gICAgICBuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV8obG9nX2ZpbGVuYW1l
LCBjb25maWcudHJhbnNwb3J0KSB7Ci0gIENhbGxDb25maWcgY2FsbF9jb25maWcobmV0d29ya19j
b250cm9sbGVyX2ZhY3RvcnlfLkdldEV2ZW50TG9nKCkpOwotICBjYWxsX2NvbmZpZy5iaXRyYXRl
X2NvbmZpZy5tYXhfYml0cmF0ZV9icHMgPQotICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5t
YXhfcmF0ZS5icHNfb3IoLTEpOwotICBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5taW5fYml0
cmF0ZV9icHMgPQotICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5taW5fcmF0ZS5icHMoKTsK
LSAgY2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMgPQotICAgICAg
Y29uZmlnLnRyYW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlLmJwcygpOwotICBjYWxsX2NvbmZpZy5u
ZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeSA9ICZuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV87
Ci0gIGNhbGxfY29uZmlnLmF1ZGlvX3N0YXRlID0gSW5pdEF1ZGlvKCk7Ci0gIGNhbGxfLnJlc2V0
KENhbGw6OkNyZWF0ZShjYWxsX2NvbmZpZykpOwotICBpZiAoIWNvbmZpZy5wcmlvcml0eV90YXJn
ZXRfcmF0ZS5Jc1plcm8oKSAmJgotICAgICAgY29uZmlnLnByaW9yaXR5X3RhcmdldF9yYXRlLklz
RmluaXRlKCkpIHsKLSAgICBjYWxsXy0+U2V0Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneSgKLSAg
ICAgICAgYWJzbDo6bWFrZV91bmlxdWU8cnRjOjpBdWRpb1ByaW9yaXR5Qml0cmF0ZUFsbG9jYXRp
b25TdHJhdGVneT4oCi0gICAgICAgICAgICBrUHJpb3JpdHlTdHJlYW1JZCwgY29uZmlnLnByaW9y
aXR5X3RhcmdldF9yYXRlLmJwcygpKSk7Ci0gIH0KKyAgICAgIG5ldHdvcmtfY29udHJvbGxlcl9m
YWN0b3J5Xyhsb2dfZmlsZW5hbWUsIGNvbmZpZy50cmFuc3BvcnQpLAorICAgICAgZmFrZV9hdWRp
b19zZXR1cF8oSW5pdEF1ZGlvKCkpLAorICAgICAgY2FsbF8oQ3JlYXRlQ2FsbChjb25maWcsCisg
ICAgICAgICAgICAgICAgICAgICAgICZuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV8sCisgICAg
ICAgICAgICAgICAgICAgICAgIGZha2VfYXVkaW9fc2V0dXBfLmF1ZGlvX3N0YXRlKSksCisgICAg
ICB0cmFuc3BvcnRfKGNsb2NrXywgY2FsbF8uZ2V0KCkpLAorICAgICAgaGVhZGVyX3BhcnNlcl8o
UnRwSGVhZGVyUGFyc2VyOjpDcmVhdGUoKSkgewogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIAotQ2Fs
bENsaWVudDo6fkNhbGxDbGllbnQoKSB7fQotCi12b2lkIENhbGxDbGllbnQ6OkRlbGl2ZXJQYWNr
ZXQoTWVkaWFUeXBlIG1lZGlhX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKLSAgY2FsbF8tPlJlY2VpdmVyKCktPkRlbGl2ZXJQ
YWNrZXQobWVkaWFfdHlwZSwgcGFja2V0LCBhdF90aW1lLnVzKCkpOworQ2FsbENsaWVudDo6fkNh
bGxDbGllbnQoKSB7CisgIGRlbGV0ZSBoZWFkZXJfcGFyc2VyXzsKIH0KIAogQ29sdW1uUHJpbnRl
ciBDYWxsQ2xpZW50OjpTdGF0c1ByaW50ZXIoKSB7CkBAIC0xNDksNiArMTY4LDI2IEBAIENhbGw6
OlN0YXRzIENhbGxDbGllbnQ6OkdldFN0YXRzKCkgewogICByZXR1cm4gY2FsbF8tPkdldFN0YXRz
KCk7CiB9CiAKK2Jvb2wgQ2FsbENsaWVudDo6VHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldy
aXRlQnVmZmVyIHBhY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
NjRfdCByZWNlaXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3Rh
bXAgYXRfdGltZSkgeworICAvLyBSZW1vdmVzIGFkZGVkIG92ZXJoZWFkIGJlZm9yZSBkZWxpdmVy
aW5nIHBhY2tldCB0byBzZW5kZXIuCisgIFJUQ19EQ0hFQ0tfR0UocGFja2V0LnNpemUoKSwgcm91
dGVfb3ZlcmhlYWRfLmF0KHJlY2VpdmVyKS5ieXRlcygpKTsKKyAgcGFja2V0LlNldFNpemUocGFj
a2V0LnNpemUoKSAtIHJvdXRlX292ZXJoZWFkXy5hdChyZWNlaXZlcikuYnl0ZXMoKSk7CisKKyAg
TWVkaWFUeXBlIG1lZGlhX3R5cGUgPSBNZWRpYVR5cGU6OkFOWTsKKyAgaWYgKCFSdHBIZWFkZXJQ
YXJzZXI6OklzUnRjcChwYWNrZXQuY2RhdGEoKSwgcGFja2V0LnNpemUoKSkpIHsKKyAgICBSVFBI
ZWFkZXIgaGVhZGVyOworICAgIGJvb2wgc3VjY2VzcyA9CisgICAgICAgIGhlYWRlcl9wYXJzZXJf
LT5QYXJzZShwYWNrZXQuY2RhdGEoKSwgcGFja2V0LnNpemUoKSwgJmhlYWRlcik7CisgICAgaWYg
KCFzdWNjZXNzKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1lZGlhX3R5cGUgPSBzc3JjX21l
ZGlhX3R5cGVzX1toZWFkZXIuc3NyY107CisgIH0KKyAgY2FsbF8tPlJlY2VpdmVyKCktPkRlbGl2
ZXJQYWNrZXQobWVkaWFfdHlwZSwgcGFja2V0LCBhdF90aW1lLnVzKCkpOworICByZXR1cm4gdHJ1
ZTsKK30KKwogdWludDMyX3QgQ2FsbENsaWVudDo6R2V0TmV4dFZpZGVvU3NyYygpIHsKICAgUlRD
X0NIRUNLX0xUKG5leHRfdmlkZW9fc3NyY19pbmRleF8sIENhbGxUZXN0OjprTnVtU3NyY3MpOwog
ICByZXR1cm4gQ2FsbFRlc3Q6OmtWaWRlb1NlbmRTc3Jjc1tuZXh0X3ZpZGVvX3NzcmNfaW5kZXhf
KytdOwpAQCAtMTcwLDIxICsyMDksMTIgQEAgc3RkOjpzdHJpbmcgQ2FsbENsaWVudDo6R2V0TmV4
dFByaW9yaXR5SWQoKSB7CiAgIHJldHVybiBrUHJpb3JpdHlTdHJlYW1JZDsKIH0KIAotcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvU3RhdGU+IENhbGxDbGllbnQ6OkluaXRBdWRpbygpIHsKLSAgYXV0
byBjYXB0dXJlciA9IFRlc3RBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRlUHVsc2VkTm9pc2VDYXB0
dXJlcigyNTYsIDQ4MDAwKTsKLSAgYXV0byByZW5kZXJlciA9IFRlc3RBdWRpb0RldmljZU1vZHVs
ZTo6Q3JlYXRlRGlzY2FyZFJlbmRlcmVyKDQ4MDAwKTsKLSAgZmFrZV9hdWRpb19kZXZpY2VfID0g
VGVzdEF1ZGlvRGV2aWNlTW9kdWxlOjpDcmVhdGVUZXN0QXVkaW9EZXZpY2VNb2R1bGUoCi0gICAg
ICBzdGQ6Om1vdmUoY2FwdHVyZXIpLCBzdGQ6Om1vdmUocmVuZGVyZXIpLCAxLmYpOwotICBhcG1f
ID0gQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpOwotICBmYWtlX2F1ZGlvX2Rldmlj
ZV8tPkluaXQoKTsKLSAgQXVkaW9TdGF0ZTo6Q29uZmlnIGF1ZGlvX3N0YXRlX2NvbmZpZzsKLSAg
YXVkaW9fc3RhdGVfY29uZmlnLmF1ZGlvX21peGVyID0gQXVkaW9NaXhlckltcGw6OkNyZWF0ZSgp
OwotICBhdWRpb19zdGF0ZV9jb25maWcuYXVkaW9fcHJvY2Vzc2luZyA9IGFwbV87Ci0gIGF1ZGlv
X3N0YXRlX2NvbmZpZy5hdWRpb19kZXZpY2VfbW9kdWxlID0gZmFrZV9hdWRpb19kZXZpY2VfOwot
ICBhdXRvIGF1ZGlvX3N0YXRlID0gQXVkaW9TdGF0ZTo6Q3JlYXRlKGF1ZGlvX3N0YXRlX2NvbmZp
Zyk7Ci0gIGZha2VfYXVkaW9fZGV2aWNlXy0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKGF1ZGlvX3N0
YXRlLT5hdWRpb190cmFuc3BvcnQoKSk7Ci0gIHJldHVybiBhdWRpb19zdGF0ZTsKK3ZvaWQgQ2Fs
bENsaWVudDo6QWRkRXh0ZW5zaW9ucyhzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+IGV4dGVuc2lv
bnMpIHsKKyAgZm9yIChjb25zdCBhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zKQorICAgIGhl
YWRlcl9wYXJzZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihleHRlbnNpb24pOwogfQog
CitDYWxsQ2xpZW50UGFpcjo6fkNhbGxDbGllbnRQYWlyKCkgPSBkZWZhdWx0OworCiB9ICAvLyBu
YW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9jYWxsX2Ns
aWVudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9z
Y2VuYXJpby9jYWxsX2NsaWVudC5oCmluZGV4IDgwZTJmYWYxNjI2YWZkMWQwYjdhYzRkNGY3Y2Y4
OGIxZDk5ODg3NzYuLmExMmUwNmEwNjU2NDg5Nzk5NDBiYjg0MWQyNGM2NTgwNDFlZGQ2MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
c2NlbmFyaW8vY2FsbF9jbGllbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2NhbGxfY2xpZW50LmgKQEAgLTE3LDggKzE3LDEw
IEBACiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL3Rlc3RfYXVkaW9fZGV2aWNlLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvdGVzdC9jb250cm9sbGVy
X3ByaW50ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRl
cl9wYXJzZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5j
bHVkZSAidGVzdC9zY2VuYXJpby9jb2x1bW5fcHJpbnRlci5oIgorI2luY2x1ZGUgInRlc3Qvc2Nl
bmFyaW8vbmV0d29ya19ub2RlLmgiCiAjaW5jbHVkZSAidGVzdC9zY2VuYXJpby9zY2VuYXJpb19j
b25maWcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC00NSwxMCArNDcsMTUgQEAgY2xhc3Mg
TG9nZ2luZ05ldHdvcmtDb250cm9sbGVyRmFjdG9yeQogICBGSUxFKiBjY19vdXRfID0gbnVsbHB0
cjsKIH07CiAKK3N0cnVjdCBDYWxsQ2xpZW50RmFrZUF1ZGlvIHsKKyAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXBtOworICBydGM6OnNjb3BlZF9yZWZwdHI8VGVzdEF1ZGlv
RGV2aWNlTW9kdWxlPiBmYWtlX2F1ZGlvX2RldmljZTsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEF1
ZGlvU3RhdGU+IGF1ZGlvX3N0YXRlOworfTsKIC8vIENhbGxDbGllbnQgcmVwcmVzZW50cyBhIHBh
cnRpY2lwYW50IGluIGEgY2FsbCBzY2VuYXJpby4gSXQgaXMgY3JlYXRlZCBieSB0aGUKIC8vIFNj
ZW5hcmlvIGNsYXNzIGFuZCBpcyB1c2VkIGFzIHNlbmRlciBhbmQgcmVjZWl2ZXIgd2hlbiBzZXR0
aW5nIHVwIGEgbWVkaWEKIC8vIHN0cmVhbSBzZXNzaW9uLgotY2xhc3MgQ2FsbENsaWVudCB7Citj
bGFzcyBDYWxsQ2xpZW50IDogcHVibGljIE5ldHdvcmtSZWNlaXZlckludGVyZmFjZSB7CiAgcHVi
bGljOgogICBDYWxsQ2xpZW50KENsb2NrKiBjbG9jaywgc3RkOjpzdHJpbmcgbG9nX2ZpbGVuYW1l
LCBDYWxsQ2xpZW50Q29uZmlnIGNvbmZpZyk7CiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oQ2FsbENsaWVudCk7CkBAIC01NiwzNyArNjMsNjMgQEAgY2xhc3MgQ2FsbENsaWVudCB7CiAg
IH5DYWxsQ2xpZW50KCk7CiAgIENvbHVtblByaW50ZXIgU3RhdHNQcmludGVyKCk7CiAgIENhbGw6
OlN0YXRzIEdldFN0YXRzKCk7CisgIERhdGFSYXRlIHNlbmRfYmFuZHdpZHRoKCkgeworICAgIHJl
dHVybiBEYXRhUmF0ZTo6YnBzKEdldFN0YXRzKCkuc2VuZF9iYW5kd2lkdGhfYnBzKTsKKyAgfQor
CisgIGJvb2wgVHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlY2VpdmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAg
ZnJpZW5kIGNsYXNzIFNjZW5hcmlvOworICBmcmllbmQgY2xhc3MgQ2FsbENsaWVudFBhaXI7CiAg
IGZyaWVuZCBjbGFzcyBTZW5kVmlkZW9TdHJlYW07CisgIGZyaWVuZCBjbGFzcyBWaWRlb1N0cmVh
bVBhaXI7CiAgIGZyaWVuZCBjbGFzcyBSZWNlaXZlVmlkZW9TdHJlYW07CiAgIGZyaWVuZCBjbGFz
cyBTZW5kQXVkaW9TdHJlYW07CiAgIGZyaWVuZCBjbGFzcyBSZWNlaXZlQXVkaW9TdHJlYW07Cisg
IGZyaWVuZCBjbGFzcyBBdWRpb1N0cmVhbVBhaXI7CiAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrTm9k
ZVRyYW5zcG9ydDsKLSAgLy8gVE9ETyhzcnRlKTogQ29uc2lkZXIgdXNpbmcgdGhlIENvbHVtbnBy
aW50ZXIgaW50ZXJmYWNlIGZvciB0aGlzLgotICB2b2lkIERlbGl2ZXJQYWNrZXQoTWVkaWFUeXBl
IG1lZGlhX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICBydGM6OkNvcHlPbldyaXRlQnVmZmVy
IHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsKICAgdWlu
dDMyX3QgR2V0TmV4dFZpZGVvU3NyYygpOwogICB1aW50MzJfdCBHZXROZXh0QXVkaW9Tc3JjKCk7
CiAgIHVpbnQzMl90IEdldE5leHRSdHhTc3JjKCk7CiAgIHN0ZDo6c3RyaW5nIEdldE5leHRQcmlv
cml0eUlkKCk7CisgIHZvaWQgQWRkRXh0ZW5zaW9ucyhzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+
IGV4dGVuc2lvbnMpOwogCiAgIENsb2NrKiBjbG9ja187CiAgIExvZ2dpbmdOZXR3b3JrQ29udHJv
bGxlckZhY3RvcnkgbmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnlfOworICBDYWxsQ2xpZW50RmFr
ZUF1ZGlvIGZha2VfYXVkaW9fc2V0dXBfOwogICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbD4gY2FsbF87
Ci0KLSAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvU3RhdGU+IEluaXRBdWRpbygpOwotCi0gIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGFwbV87Ci0gIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxUZXN0QXVkaW9EZXZpY2VNb2R1bGU+IGZha2VfYXVkaW9fZGV2aWNlXzsKKyAgTmV0d29y
a05vZGVUcmFuc3BvcnQgdHJhbnNwb3J0XzsKKyAgUnRwSGVhZGVyUGFyc2VyKiBjb25zdCBoZWFk
ZXJfcGFyc2VyXzsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3RvcnlJbnRl
cmZhY2U+IGZlY19jb250cm9sbGVyX2ZhY3RvcnlfOworICAvLyBTdG9yZXMgdGhlIGNvbmZpZ3Vy
ZWQgb3ZlcmhlYWQgcGVyIGtub3duIGluY29tbWluZyByb3V0ZS4gVGhpcyBpcyB1c2VkIHRvCisg
IC8vIHN1YnRyYWN0IHRoZSBvdmVyaGVhZCBiZWZvcmUgcHJvY2Vzc2luZy4KKyAgc3RkOjptYXA8
dWludDY0X3QsIERhdGFTaXplPiByb3V0ZV9vdmVyaGVhZF87CiAgIGludCBuZXh0X3ZpZGVvX3Nz
cmNfaW5kZXhfID0gMDsKICAgaW50IG5leHRfcnR4X3NzcmNfaW5kZXhfID0gMDsKICAgaW50IG5l
eHRfYXVkaW9fc3NyY19pbmRleF8gPSAwOwogICBpbnQgbmV4dF9wcmlvcml0eV9pbmRleF8gPSAw
OworICBzdGQ6Om1hcDx1aW50MzJfdCwgTWVkaWFUeXBlPiBzc3JjX21lZGlhX3R5cGVzXzsKK307
CisKK2NsYXNzIENhbGxDbGllbnRQYWlyIHsKKyBwdWJsaWM6CisgIFJUQ19ESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oQ2FsbENsaWVudFBhaXIpOworICB+Q2FsbENsaWVudFBhaXIoKTsKKyAgQ2Fs
bENsaWVudCogZmlyc3QoKSB7IHJldHVybiBmaXJzdF87IH0KKyAgQ2FsbENsaWVudCogc2Vjb25k
KCkgeyByZXR1cm4gc2Vjb25kXzsgfQorICBzdGQ6OnBhaXI8Q2FsbENsaWVudCosIENhbGxDbGll
bnQqPiBmb3J3YXJkKCkgeyByZXR1cm4ge2ZpcnN0KCksIHNlY29uZCgpfTsgfQorICBzdGQ6OnBh
aXI8Q2FsbENsaWVudCosIENhbGxDbGllbnQqPiByZXZlcnNlKCkgeyByZXR1cm4ge3NlY29uZCgp
LCBmaXJzdCgpfTsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGNsYXNzIFNjZW5hcmlvOworICBD
YWxsQ2xpZW50UGFpcihDYWxsQ2xpZW50KiBmaXJzdCwgQ2FsbENsaWVudCogc2Vjb25kKQorICAg
ICAgOiBmaXJzdF8oZmlyc3QpLCBzZWNvbmRfKHNlY29uZCkge30KKyAgQ2FsbENsaWVudCogY29u
c3QgZmlyc3RfOworICBDYWxsQ2xpZW50KiBjb25zdCBzZWNvbmRfOwogfTsKIH0gIC8vIG5hbWVz
cGFjZSB0ZXN0CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL25ldHdvcmtfbm9k
ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2Nl
bmFyaW8vbmV0d29ya19ub2RlLmNjCmluZGV4IGZmMTM4OTM5YWJiMWVmZDUxYzFhZTRhNThiYTE3
OTUwMGRkZGJhY2EuLmIzOWQ2N2JkMjVjODkwOWEzMjAzNWQzYWVhYThhM2UzZGMzZTFjOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
c2NlbmFyaW8vbmV0d29ya19ub2RlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vbmV0d29ya19ub2RlLmNjCkBAIC0xMiw2ICsx
Miw4IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMg
ewogbmFtZXNwYWNlIHRlc3QgewogbmFtZXNwYWNlIHsKQEAgLTE2OCwyOSArMTcwLDI5IEBAIFNp
bXVsYXRpb25Ob2RlOjpTaW11bGF0aW9uTm9kZSgKICAgICAgIHNpbXVsYXRlZF9uZXR3b3JrXyhz
aW11bGF0aW9uKSwKICAgICAgIGNvbmZpZ18oY29uZmlnKSB7fQogCi1OZXR3b3JrTm9kZVRyYW5z
cG9ydDo6TmV0d29ya05vZGVUcmFuc3BvcnQoQ2FsbENsaWVudCogc2VuZGVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdvcmtOb2RlKiBzZW5kX25ldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNl
aXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6
ZSBwYWNrZXRfb3ZlcmhlYWQpCi0gICAgOiBzZW5kZXJfKHNlbmRlciksCi0gICAgICBzZW5kX25l
dF8oc2VuZF9uZXQpLAotICAgICAgcmVjZWl2ZXJfaWRfKHJlY2VpdmVyKSwKLSAgICAgIHBhY2tl
dF9vdmVyaGVhZF8ocGFja2V0X292ZXJoZWFkKSB7fQorTmV0d29ya05vZGVUcmFuc3BvcnQ6Ok5l
dHdvcmtOb2RlVHJhbnNwb3J0KGNvbnN0IENsb2NrKiBzZW5kZXJfY2xvY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbCogc2VuZGVyX2NhbGwpCisgICAg
OiBzZW5kZXJfY2xvY2tfKHNlbmRlcl9jbG9jayksIHNlbmRlcl9jYWxsXyhzZW5kZXJfY2FsbCkg
e30KIAogTmV0d29ya05vZGVUcmFuc3BvcnQ6On5OZXR3b3JrTm9kZVRyYW5zcG9ydCgpID0gZGVm
YXVsdDsKIAogYm9vbCBOZXR3b3JrTm9kZVRyYW5zcG9ydDo6U2VuZFJ0cChjb25zdCB1aW50OF90
KiBwYWNrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5n
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldE9wdGlv
bnMmIG9wdGlvbnMpIHsKLSAgaW50NjRfdCBzZW5kX3RpbWVfbXMgPSBzZW5kZXJfLT5jbG9ja18t
PlRpbWVJbk1pbGxpc2Vjb25kcygpOworICBpbnQ2NF90IHNlbmRfdGltZV9tcyA9IHNlbmRlcl9j
bG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpOwogICBydGM6OlNlbnRQYWNrZXQgc2VudF9wYWNr
ZXQ7CiAgIHNlbnRfcGFja2V0LnBhY2tldF9pZCA9IG9wdGlvbnMucGFja2V0X2lkOworICBzZW50
X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2ZlZWRiYWNrID0gb3B0aW9ucy5pbmNsdWRlZF9pbl9m
ZWVkYmFjazsKKyAgc2VudF9wYWNrZXQuaW5mby5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0gb3B0
aW9ucy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uOwogICBzZW50X3BhY2tldC5zZW5kX3RpbWVfbXMg
PSBzZW5kX3RpbWVfbXM7CiAgIHNlbnRfcGFja2V0LmluZm8ucGFja2V0X3NpemVfYnl0ZXMgPSBs
ZW5ndGg7CiAgIHNlbnRfcGFja2V0LmluZm8ucGFja2V0X3R5cGUgPSBydGM6OlBhY2tldFR5cGU6
OmtEYXRhOwotICBzZW5kZXJfLT5jYWxsXy0+T25TZW50UGFja2V0KHNlbnRfcGFja2V0KTsKKyAg
c2VuZGVyX2NhbGxfLT5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQpOwogCiAgIFRpbWVzdGFtcCBz
ZW5kX3RpbWUgPSBUaW1lc3RhbXA6Om1zKHNlbmRfdGltZV9tcyk7CisgIHJ0Yzo6Q3JpdFNjb3Bl
IGNyaXQoJmNyaXRfc2VjdF8pOworICBpZiAoIXNlbmRfbmV0XykKKyAgICByZXR1cm4gZmFsc2U7
CiAgIHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgYnVmZmVyKHBhY2tldCwgbGVuZ3RoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggKyBwYWNrZXRfb3ZlcmhlYWRfLmJ5dGVz
KCkpOwogICBidWZmZXIuU2V0U2l6ZShsZW5ndGggKyBwYWNrZXRfb3ZlcmhlYWRfLmJ5dGVzKCkp
OwpAQCAtMTk5LDEzICsyMDEsMjkgQEAgYm9vbCBOZXR3b3JrTm9kZVRyYW5zcG9ydDo6U2VuZFJ0
cChjb25zdCB1aW50OF90KiBwYWNrZXQsCiAKIGJvb2wgTmV0d29ya05vZGVUcmFuc3BvcnQ6OlNl
bmRSdGNwKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IGxlbmd0aCkgewogICBydGM6OkNv
cHlPbldyaXRlQnVmZmVyIGJ1ZmZlcihwYWNrZXQsIGxlbmd0aCk7Ci0gIFRpbWVzdGFtcCBzZW5k
X3RpbWUgPSBUaW1lc3RhbXA6Om1zKHNlbmRlcl8tPmNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRz
KCkpOworICBUaW1lc3RhbXAgc2VuZF90aW1lID0gVGltZXN0YW1wOjptcyhzZW5kZXJfY2xvY2tf
LT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJmNyaXRfc2Vj
dF8pOwogICBidWZmZXIuU2V0U2l6ZShsZW5ndGggKyBwYWNrZXRfb3ZlcmhlYWRfLmJ5dGVzKCkp
OworICBpZiAoIXNlbmRfbmV0XykKKyAgICByZXR1cm4gZmFsc2U7CiAgIHJldHVybiBzZW5kX25l
dF8tPlRyeURlbGl2ZXJQYWNrZXQoYnVmZmVyLCByZWNlaXZlcl9pZF8sIHNlbmRfdGltZSk7CiB9
CiAKLXVpbnQ2NF90IE5ldHdvcmtOb2RlVHJhbnNwb3J0OjpSZWNlaXZlcklkKCkgY29uc3Qgewot
ICByZXR1cm4gcmVjZWl2ZXJfaWRfOwordm9pZCBOZXR3b3JrTm9kZVRyYW5zcG9ydDo6Q29ubmVj
dChOZXR3b3JrTm9kZSogc2VuZF9ub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50NjRfdCByZWNlaXZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRGF0YVNpemUgcGFja2V0X292ZXJoZWFkKSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQo
JmNyaXRfc2VjdF8pOworICBzZW5kX25ldF8gPSBzZW5kX25vZGU7CisgIHJlY2VpdmVyX2lkXyA9
IHJlY2VpdmVyX2lkOworICBwYWNrZXRfb3ZlcmhlYWRfID0gcGFja2V0X292ZXJoZWFkOworCisg
IHJ0Yzo6TmV0d29ya1JvdXRlIHJvdXRlOworICByb3V0ZS5jb25uZWN0ZWQgPSB0cnVlOworICBy
b3V0ZS5sb2NhbF9uZXR3b3JrX2lkID0gcmVjZWl2ZXJfaWQ7CisgIHJvdXRlLnJlbW90ZV9uZXR3
b3JrX2lkID0gcmVjZWl2ZXJfaWQ7CisgIHN0ZDo6c3RyaW5nIHRyYW5zcG9ydF9uYW1lID0gImR1
bW15IjsKKyAgc2VuZGVyX2NhbGxfLT5HZXRUcmFuc3BvcnRDb250cm9sbGVyU2VuZCgpLT5Pbk5l
dHdvcmtSb3V0ZUNoYW5nZWQoCisgICAgICB0cmFuc3BvcnRfbmFtZSwgcm91dGUpOwogfQogCiBD
cm9zc1RyYWZmaWNTb3VyY2U6OkNyb3NzVHJhZmZpY1NvdXJjZShOZXR3b3JrUmVjZWl2ZXJJbnRl
cmZhY2UqIHRhcmdldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vbmV0d29ya19ub2RlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL25ldHdvcmtfbm9kZS5o
CmluZGV4IGFmNmRiMGEwMDk5Y2MzODdmZGI0NzA4Yjk4ZGUxYmE1OTVmNGNlYjIuLjRlOTBmNmYy
NTJhMmM3Y2Y1ZGU3NmI4OGRkMDlhN2U5MDdhODY4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vbmV0d29ya19ub2Rl
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9z
Y2VuYXJpby9uZXR3b3JrX25vZGUuaApAQCAtMTgsMTAgKzE4LDEwIEBACiAKICNpbmNsdWRlICJh
cGkvY2FsbC90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJhcGkvdW5pdHMvdGltZXN0YW1wLmgiCisj
aW5jbHVkZSAiY2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29yay5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIgotI2luY2x1ZGUgInRlc3Qvc2NlbmFyaW8vY2FsbF9j
bGllbnQuaCIKICNpbmNsdWRlICJ0ZXN0L3NjZW5hcmlvL2NvbHVtbl9wcmludGVyLmgiCiAjaW5j
bHVkZSAidGVzdC9zY2VuYXJpby9zY2VuYXJpb19jb25maWcuaCIKIApAQCAtMTE5LDIzICsxMTks
MzAgQEAgY2xhc3MgU2ltdWxhdGlvbk5vZGUgOiBwdWJsaWMgTmV0d29ya05vZGUgewogCiBjbGFz
cyBOZXR3b3JrTm9kZVRyYW5zcG9ydCA6IHB1YmxpYyBUcmFuc3BvcnQgewogIHB1YmxpYzoKLSAg
TmV0d29ya05vZGVUcmFuc3BvcnQoQ2FsbENsaWVudCogc2VuZGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICBOZXR3b3JrTm9kZSogc2VuZF9uZXQsCi0gICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ2NF90IHJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSBwYWNrZXRf
b3ZlcmhlYWQpOworICBOZXR3b3JrTm9kZVRyYW5zcG9ydChjb25zdCBDbG9jayogc2VuZGVyX2Ns
b2NrLCBDYWxsKiBzZW5kZXJfY2FsbCk7CiAgIH5OZXR3b3JrTm9kZVRyYW5zcG9ydCgpIG92ZXJy
aWRlOwogCiAgIGJvb2wgU2VuZFJ0cChjb25zdCB1aW50OF90KiBwYWNrZXQsCiAgICAgICAgICAg
ICAgICBzaXplX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgY29uc3QgUGFja2V0T3B0aW9ucyYg
b3B0aW9ucykgb3ZlcnJpZGU7CiAgIGJvb2wgU2VuZFJ0Y3AoY29uc3QgdWludDhfdCogcGFja2V0
LCBzaXplX3QgbGVuZ3RoKSBvdmVycmlkZTsKLSAgdWludDY0X3QgUmVjZWl2ZXJJZCgpIGNvbnN0
OworCisgIHZvaWQgQ29ubmVjdChOZXR3b3JrTm9kZSogc2VuZF9ub2RlLAorICAgICAgICAgICAg
ICAgdWludDY0X3QgcmVjZWl2ZXJfaWQsCisgICAgICAgICAgICAgICBEYXRhU2l6ZSBwYWNrZXRf
b3ZlcmhlYWQpOworCisgIERhdGFTaXplIHBhY2tldF9vdmVyaGVhZCgpIHsKKyAgICBydGM6OkNy
aXRTY29wZSBjcml0KCZjcml0X3NlY3RfKTsKKyAgICByZXR1cm4gcGFja2V0X292ZXJoZWFkXzsK
KyAgfQogCiAgcHJpdmF0ZToKLSAgQ2FsbENsaWVudCogY29uc3Qgc2VuZGVyXzsKLSAgTmV0d29y
a05vZGUqIGNvbnN0IHNlbmRfbmV0XzsKLSAgY29uc3QgdWludDY0X3QgcmVjZWl2ZXJfaWRfOwot
ICBjb25zdCBEYXRhU2l6ZSBwYWNrZXRfb3ZlcmhlYWRfOworICBydGM6OkNyaXRpY2FsU2VjdGlv
biBjcml0X3NlY3RfOworICBjb25zdCBDbG9jayogY29uc3Qgc2VuZGVyX2Nsb2NrXzsKKyAgQ2Fs
bCogY29uc3Qgc2VuZGVyX2NhbGxfOworICBOZXR3b3JrTm9kZSogc2VuZF9uZXRfIFJUQ19HVUFS
REVEX0JZKGNyaXRfc2VjdF8pID0gbnVsbHB0cjsKKyAgdWludDY0X3QgcmVjZWl2ZXJfaWRfIFJU
Q19HVUFSREVEX0JZKGNyaXRfc2VjdF8pID0gMDsKKyAgRGF0YVNpemUgcGFja2V0X292ZXJoZWFk
XyBSVENfR1VBUkRFRF9CWShjcml0X3NlY3RfKSA9IERhdGFTaXplOjpaZXJvKCk7CiB9OwogCiAv
LyBDcm9zc1RyYWZmaWNTb3VyY2UgaXMgY3JlYXRlZCBieSBhIFNjZW5hcmlvIGFuZCBnZW5lcmF0
ZXMgY3Jvc3MgdHJhZmZpYy4gSXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW8uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmNj
CmluZGV4IDdlYjA5ZThiYjdhMWQxMjQ4NjI0MzI3YWI0YmFhZTJlYWVhMzkxYzUuLjc1ODk4Nzhk
NWJhMzUzOTc4ZjUzMGNjMmZiYzA2NjliZDVlNjRiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW8uY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2Vu
YXJpby9zY2VuYXJpby5jYwpAQCAtMTYsNyArMTYsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2Zs
YWdzLmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKIAotREVGSU5F
X2Jvb2woc2NlbmFyaW9fbG9ncywgZmFsc2UsICJTYXZlIGxvZ3MgZnJvbSBzY2VuYXJpbyBmcmFt
ZXdvcmsuIik7CitXRUJSVENfREVGSU5FX2Jvb2woc2NlbmFyaW9fbG9ncywgZmFsc2UsICJTYXZl
IGxvZ3MgZnJvbSBzY2VuYXJpbyBmcmFtZXdvcmsuIik7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
bmFtZXNwYWNlIHRlc3QgewpAQCAtNzUsNiArNzUsOCBAQCBTY2VuYXJpbzo6U2NlbmFyaW8oc3Rk
OjpzdHJpbmcgZmlsZV9uYW1lLCBib29sIHJlYWxfdGltZSkKIH0KIAogU2NlbmFyaW86On5TY2Vu
YXJpbygpIHsKKyAgaWYgKHN0YXJ0X3RpbWVfLklzRmluaXRlKCkpCisgICAgU3RvcCgpOwogICBp
ZiAoIXJlYWxfdGltZV9tb2RlXykKICAgICBydGM6OlNldENsb2NrRm9yVGVzdGluZyhudWxscHRy
KTsKIH0KQEAgLTEyMywxNCArMTI1LDUwIEBAIENhbGxDbGllbnQqIFNjZW5hcmlvOjpDcmVhdGVD
bGllbnQoCiAgIHJldHVybiBDcmVhdGVDbGllbnQobmFtZSwgY29uZmlnKTsKIH0KIAorQ2FsbENs
aWVudFBhaXIqIFNjZW5hcmlvOjpDcmVhdGVSb3V0ZXMoQ2FsbENsaWVudCogZmlyc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9k
ZSo+IHNlbmRfbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENh
bGxDbGllbnQqIHNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmspIHsKKyAgcmV0dXJuIENyZWF0
ZVJvdXRlcyhmaXJzdCwgc2VuZF9saW5rLAorICAgICAgICAgICAgICAgICAgICAgIERhdGFTaXpl
OjpieXRlcyhQYWNrZXRPdmVyaGVhZDo6a0RlZmF1bHQpLCBzZWNvbmQsCisgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuX2xpbmssIERhdGFTaXplOjpieXRlcyhQYWNrZXRPdmVyaGVhZDo6a0Rl
ZmF1bHQpKTsKK30KKworQ2FsbENsaWVudFBhaXIqIFNjZW5hcmlvOjpDcmVhdGVSb3V0ZXMoQ2Fs
bENsaWVudCogZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERhdGFTaXplIGZpcnN0X292ZXJoZWFkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbENsaWVudCogc2Vjb25kLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBy
ZXR1cm5fbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFT
aXplIHNlY29uZF9vdmVyaGVhZCkgeworICBDYWxsQ2xpZW50UGFpciogY2xpZW50X3BhaXIgPSBu
ZXcgQ2FsbENsaWVudFBhaXIoZmlyc3QsIHNlY29uZCk7CisgIENoYW5nZVJvdXRlKGNsaWVudF9w
YWlyLT5mb3J3YXJkKCksIHNlbmRfbGluaywgZmlyc3Rfb3ZlcmhlYWQpOworICBDaGFuZ2VSb3V0
ZShjbGllbnRfcGFpci0+cmV2ZXJzZSgpLCByZXR1cm5fbGluaywgc2Vjb25kX292ZXJoZWFkKTsK
KyAgY2xpZW50X3BhaXJzXy5lbXBsYWNlX2JhY2soY2xpZW50X3BhaXIpOworICByZXR1cm4gY2xp
ZW50X3BhaXI7Cit9CisKK3ZvaWQgU2NlbmFyaW86OkNoYW5nZVJvdXRlKHN0ZDo6cGFpcjxDYWxs
Q2xpZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMpIHsKKyAgQ2hhbmdlUm91dGUo
Y2xpZW50cywgb3Zlcl9ub2RlcywgRGF0YVNpemU6OmJ5dGVzKFBhY2tldE92ZXJoZWFkOjprRGVm
YXVsdCkpOworfQorCit2b2lkIFNjZW5hcmlvOjpDaGFuZ2VSb3V0ZShzdGQ6OnBhaXI8Q2FsbENs
aWVudCosIENhbGxDbGllbnQqPiBjbGllbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBvdmVyX25vZGVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRGF0YVNpemUgb3ZlcmhlYWQpIHsKKyAgdWludDY0X3Qgcm91dGVfaWQgPSBuZXh0
X3JvdXRlX2lkXysrOworICBjbGllbnRzLnNlY29uZC0+cm91dGVfb3ZlcmhlYWRfLmluc2VydCh7
cm91dGVfaWQsIG92ZXJoZWFkfSk7CisgIE5ldHdvcmtOb2RlOjpSb3V0ZShyb3V0ZV9pZCwgb3Zl
cl9ub2RlcywgY2xpZW50cy5zZWNvbmQpOworICBjbGllbnRzLmZpcnN0LT50cmFuc3BvcnRfLkNv
bm5lY3Qob3Zlcl9ub2Rlcy5mcm9udCgpLCByb3V0ZV9pZCwgb3ZlcmhlYWQpOworfQorCiBTaW11
bGF0ZWRUaW1lQ2xpZW50KiBTY2VuYXJpbzo6Q3JlYXRlU2ltdWxhdGVkVGltZUNsaWVudCgKICAg
ICBzdGQ6OnN0cmluZyBuYW1lLAogICAgIFNpbXVsYXRlZFRpbWVDbGllbnRDb25maWcgY29uZmln
LAogICAgIHN0ZDo6dmVjdG9yPFBhY2tldFN0cmVhbUNvbmZpZz4gc3RyZWFtX2NvbmZpZ3MsCiAg
ICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCiAgICAgc3RkOjp2ZWN0b3I8
TmV0d29ya05vZGUqPiByZXR1cm5fbGluaykgewotICB1aW50NjRfdCBzZW5kX2lkID0gbmV4dF9y
ZWNlaXZlcl9pZF8rKzsKLSAgdWludDY0X3QgcmV0dXJuX2lkID0gbmV4dF9yZWNlaXZlcl9pZF8r
KzsKKyAgdWludDY0X3Qgc2VuZF9pZCA9IG5leHRfcm91dGVfaWRfKys7CisgIHVpbnQ2NF90IHJl
dHVybl9pZCA9IG5leHRfcm91dGVfaWRfKys7CiAgIFNpbXVsYXRlZFRpbWVDbGllbnQqIGNsaWVu
dCA9IG5ldyBTaW11bGF0ZWRUaW1lQ2xpZW50KAogICAgICAgR2V0RnVsbFBhdGhPckVtcHR5KG5h
bWUpLCBjb25maWcsIHN0cmVhbV9jb25maWdzLCBzZW5kX2xpbmssIHJldHVybl9saW5rLAogICAg
ICAgc2VuZF9pZCwgcmV0dXJuX2lkLCBOb3coKSk7CkBAIC0xNzksMjEgKzIxNywyMSBAQCBOZXR3
b3JrTm9kZSogU2NlbmFyaW86OkNyZWF0ZU5ldHdvcmtOb2RlKAogdm9pZCBTY2VuYXJpbzo6VHJp
Z2dlclBhY2tldEJ1cnN0KHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gb3Zlcl9ub2RlcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX3BhY2tldHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhY2tldF9zaXplKSB7Ci0gIGlu
dDY0X3QgcmVjZWl2ZXJfaWQgPSBuZXh0X3JlY2VpdmVyX2lkXysrOwotICBOZXR3b3JrTm9kZTo6
Um91dGUocmVjZWl2ZXJfaWQsIG92ZXJfbm9kZXMsICZudWxsX3JlY2VpdmVyXyk7CisgIGludDY0
X3Qgcm91dGVfaWQgPSBuZXh0X3JvdXRlX2lkXysrOworICBOZXR3b3JrTm9kZTo6Um91dGUocm91
dGVfaWQsIG92ZXJfbm9kZXMsICZudWxsX3JlY2VpdmVyXyk7CiAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtX3BhY2tldHM7ICsraSkKICAgICBvdmVyX25vZGVzWzBdLT5UcnlEZWxpdmVyUGFj
a2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIocGFja2V0X3NpemUpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJfaWQsIE5vdygpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJvdXRlX2lkLCBOb3coKSk7CiB9CiAKIHZvaWQgU2NlbmFy
aW86Ok5ldHdvcmtEZWxheWVkQWN0aW9uKHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gb3Zlcl9u
b2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYWNrZXRf
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBhY3Rpb24pIHsKLSAgaW50NjRfdCByZWNlaXZlcl9pZCA9IG5leHRfcmVjZWl2ZXJf
aWRfKys7CisgIGludDY0X3Qgcm91dGVfaWQgPSBuZXh0X3JvdXRlX2lkXysrOwogICBhY3Rpb25f
cmVjZWl2ZXJzXy5lbXBsYWNlX2JhY2sobmV3IEFjdGlvblJlY2VpdmVyKGFjdGlvbikpOwotICBO
ZXR3b3JrTm9kZTo6Um91dGUocmVjZWl2ZXJfaWQsIG92ZXJfbm9kZXMsIGFjdGlvbl9yZWNlaXZl
cnNfLmJhY2soKS5nZXQoKSk7Ci0gIG92ZXJfbm9kZXNbMF0tPlRyeURlbGl2ZXJQYWNrZXQocnRj
OjpDb3B5T25Xcml0ZUJ1ZmZlcihwYWNrZXRfc2l6ZSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVjZWl2ZXJfaWQsIE5vdygpKTsKKyAgTmV0d29ya05vZGU6OlJvdXRlKHJv
dXRlX2lkLCBvdmVyX25vZGVzLCBhY3Rpb25fcmVjZWl2ZXJzXy5iYWNrKCkuZ2V0KCkpOworICBv
dmVyX25vZGVzWzBdLT5UcnlEZWxpdmVyUGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIocGFj
a2V0X3NpemUpLCByb3V0ZV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
b3coKSk7CiB9CiAKIENyb3NzVHJhZmZpY1NvdXJjZSogU2NlbmFyaW86OkNyZWF0ZUNyb3NzVHJh
ZmZpYygKQEAgLTIwNyw2NSArMjQ1LDQ2IEBAIENyb3NzVHJhZmZpY1NvdXJjZSogU2NlbmFyaW86
OkNyZWF0ZUNyb3NzVHJhZmZpYygKIENyb3NzVHJhZmZpY1NvdXJjZSogU2NlbmFyaW86OkNyZWF0
ZUNyb3NzVHJhZmZpYygKICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMs
CiAgICAgQ3Jvc3NUcmFmZmljQ29uZmlnIGNvbmZpZykgewotICBpbnQ2NF90IHJlY2VpdmVyX2lk
ID0gbmV4dF9yZWNlaXZlcl9pZF8rKzsKKyAgaW50NjRfdCByb3V0ZV9pZCA9IG5leHRfcm91dGVf
aWRfKys7CiAgIGNyb3NzX3RyYWZmaWNfc291cmNlc18uZW1wbGFjZV9iYWNrKAotICAgICAgbmV3
IENyb3NzVHJhZmZpY1NvdXJjZShvdmVyX25vZGVzLmZyb250KCksIHJlY2VpdmVyX2lkLCBjb25m
aWcpKTsKKyAgICAgIG5ldyBDcm9zc1RyYWZmaWNTb3VyY2Uob3Zlcl9ub2Rlcy5mcm9udCgpLCBy
b3V0ZV9pZCwgY29uZmlnKSk7CiAgIENyb3NzVHJhZmZpY1NvdXJjZSogbm9kZSA9IGNyb3NzX3Ry
YWZmaWNfc291cmNlc18uYmFjaygpLmdldCgpOwotICBOZXR3b3JrTm9kZTo6Um91dGUocmVjZWl2
ZXJfaWQsIG92ZXJfbm9kZXMsICZudWxsX3JlY2VpdmVyXyk7CisgIE5ldHdvcmtOb2RlOjpSb3V0
ZShyb3V0ZV9pZCwgb3Zlcl9ub2RlcywgJm51bGxfcmVjZWl2ZXJfKTsKICAgRXZlcnkoY29uZmln
Lm1pbl9wYWNrZXRfaW50ZXJ2YWwsCiAgICAgICAgIFt0aGlzLCBub2RlXShUaW1lRGVsdGEgZGVs
dGEpIHsgbm9kZS0+UHJvY2VzcyhOb3coKSwgZGVsdGEpOyB9KTsKICAgcmV0dXJuIG5vZGU7CiB9
CiAKIFZpZGVvU3RyZWFtUGFpciogU2NlbmFyaW86OkNyZWF0ZVZpZGVvU3RyZWFtKAotICAgIENh
bGxDbGllbnQqIHNlbmRlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGlu
aywKLSAgICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9k
ZSo+IHJldHVybl9saW5rLAorICAgIHN0ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVudCo+
IGNsaWVudHMsCiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKFZpZGVvU3RyZWFtQ29uZmlnKik+IGNv
bmZpZ19tb2RpZmllcikgewogICBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWc7CiAgIGNvbmZpZ19t
b2RpZmllcigmY29uZmlnKTsKLSAgcmV0dXJuIENyZWF0ZVZpZGVvU3RyZWFtKHNlbmRlciwgc2Vu
ZF9saW5rLCByZWNlaXZlciwgcmV0dXJuX2xpbmssIGNvbmZpZyk7CisgIHJldHVybiBDcmVhdGVW
aWRlb1N0cmVhbShjbGllbnRzLCBjb25maWcpOwogfQogCiBWaWRlb1N0cmVhbVBhaXIqIFNjZW5h
cmlvOjpDcmVhdGVWaWRlb1N0cmVhbSgKLSAgICBDYWxsQ2xpZW50KiBzZW5kZXIsCi0gICAgc3Rk
Ojp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAgQ2FsbENsaWVudCogcmVjZWl2
ZXIsCi0gICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKKyAgICBzdGQ6
OnBhaXI8Q2FsbENsaWVudCosIENhbGxDbGllbnQqPiBjbGllbnRzLAogICAgIFZpZGVvU3RyZWFt
Q29uZmlnIGNvbmZpZykgewotICB1aW50NjRfdCBzZW5kX3JlY2VpdmVyX2lkID0gbmV4dF9yZWNl
aXZlcl9pZF8rKzsKLSAgdWludDY0X3QgcmV0dXJuX3JlY2VpdmVyX2lkID0gbmV4dF9yZWNlaXZl
cl9pZF8rKzsKLQogICB2aWRlb19zdHJlYW1zXy5lbXBsYWNlX2JhY2soCi0gICAgICBuZXcgVmlk
ZW9TdHJlYW1QYWlyKHNlbmRlciwgc2VuZF9saW5rLCBzZW5kX3JlY2VpdmVyX2lkLCByZWNlaXZl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2xpbmssIHJldHVybl9yZWNlaXZl
cl9pZCwgY29uZmlnKSk7CisgICAgICBuZXcgVmlkZW9TdHJlYW1QYWlyKGNsaWVudHMuZmlyc3Qs
IGNsaWVudHMuc2Vjb25kLCBjb25maWcpKTsKICAgcmV0dXJuIHZpZGVvX3N0cmVhbXNfLmJhY2so
KS5nZXQoKTsKIH0KIAogQXVkaW9TdHJlYW1QYWlyKiBTY2VuYXJpbzo6Q3JlYXRlQXVkaW9TdHJl
YW0oCi0gICAgQ2FsbENsaWVudCogc2VuZGVyLAotICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2Rl
Kj4gc2VuZF9saW5rLAotICAgIENhbGxDbGllbnQqIHJlY2VpdmVyLAotICAgIHN0ZDo6dmVjdG9y
PE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmssCisgICAgc3RkOjpwYWlyPENhbGxDbGllbnQqLCBD
YWxsQ2xpZW50Kj4gY2xpZW50cywKICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoQXVkaW9TdHJlYW1D
b25maWcqKT4gY29uZmlnX21vZGlmaWVyKSB7CiAgIEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZzsK
ICAgY29uZmlnX21vZGlmaWVyKCZjb25maWcpOwotICByZXR1cm4gQ3JlYXRlQXVkaW9TdHJlYW0o
c2VuZGVyLCBzZW5kX2xpbmssIHJlY2VpdmVyLCByZXR1cm5fbGluaywgY29uZmlnKTsKKyAgcmV0
dXJuIENyZWF0ZUF1ZGlvU3RyZWFtKGNsaWVudHMsIGNvbmZpZyk7CiB9CiAKIEF1ZGlvU3RyZWFt
UGFpciogU2NlbmFyaW86OkNyZWF0ZUF1ZGlvU3RyZWFtKAotICAgIENhbGxDbGllbnQqIHNlbmRl
ciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICBDYWxsQ2xp
ZW50KiByZWNlaXZlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5r
LAorICAgIHN0ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMsCiAgICAg
QXVkaW9TdHJlYW1Db25maWcgY29uZmlnKSB7Ci0gIHVpbnQ2NF90IHNlbmRfcmVjZWl2ZXJfaWQg
PSBuZXh0X3JlY2VpdmVyX2lkXysrOwotICB1aW50NjRfdCByZXR1cm5fcmVjZWl2ZXJfaWQgPSBu
ZXh0X3JlY2VpdmVyX2lkXysrOwotCi0gIGF1ZGlvX3N0cmVhbXNfLmVtcGxhY2VfYmFjayhuZXcg
QXVkaW9TdHJlYW1QYWlyKAotICAgICAgc2VuZGVyLCBzZW5kX2xpbmssIHNlbmRfcmVjZWl2ZXJf
aWQsIGF1ZGlvX2VuY29kZXJfZmFjdG9yeV8sIHJlY2VpdmVyLAotICAgICAgcmV0dXJuX2xpbmss
IHJldHVybl9yZWNlaXZlcl9pZCwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5XywgY29uZmlnKSk7Cisg
IGF1ZGlvX3N0cmVhbXNfLmVtcGxhY2VfYmFjaygKKyAgICAgIG5ldyBBdWRpb1N0cmVhbVBhaXIo
Y2xpZW50cy5maXJzdCwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5XywgY2xpZW50cy5zZWNvbmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeV8sIGNvbmZpZykp
OwogICByZXR1cm4gYXVkaW9fc3RyZWFtc18uYmFjaygpLmdldCgpOwogfQogCkBAIC0yODgsMzcg
KzMwNywyMCBAQCB2b2lkIFNjZW5hcmlvOjpBdChUaW1lRGVsdGEgb2Zmc2V0LCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gZnVuY3Rpb24pIHsKIH0KIAogdm9pZCBTY2VuYXJpbzo6UnVuRm9yKFRpbWVE
ZWx0YSBkdXJhdGlvbikgewotICBSdW5VbnRpbChkdXJhdGlvbiwgVGltZURlbHRhOjpQbHVzSW5m
aW5pdHkoKSwgW10oKSB7IHJldHVybiBmYWxzZTsgfSk7CisgIFJ1blVudGlsKER1cmF0aW9uKCkg
KyBkdXJhdGlvbik7Cit9CisKK3ZvaWQgU2NlbmFyaW86OlJ1blVudGlsKFRpbWVEZWx0YSBtYXhf
ZHVyYXRpb24pIHsKKyAgUnVuVW50aWwobWF4X2R1cmF0aW9uLCBUaW1lRGVsdGE6OlBsdXNJbmZp
bml0eSgpLCBbXSgpIHsgcmV0dXJuIGZhbHNlOyB9KTsKIH0KIAogdm9pZCBTY2VuYXJpbzo6UnVu
VW50aWwoVGltZURlbHRhIG1heF9kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIFRp
bWVEZWx0YSBwb2xsX2ludGVydmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmdW5j
dGlvbjxib29sKCk+IGV4aXRfZnVuY3Rpb24pIHsKLSAgc3RhcnRfdGltZV8gPSBUaW1lc3RhbXA6
OnVzKGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkpOwotICBmb3IgKGF1dG8mIGFjdGl2aXR5
IDogcmVwZWF0ZWRfYWN0aXZpdGllc18pIHsKLSAgICBhY3Rpdml0eS0+U2V0U3RhcnRUaW1lKHN0
YXJ0X3RpbWVfKTsKLSAgfQorICBpZiAoc3RhcnRfdGltZV8uSXNJbmZpbml0ZSgpKQorICAgIFN0
YXJ0KCk7CiAKLSAgZm9yIChhdXRvJiBzdHJlYW1fcGFpciA6IHZpZGVvX3N0cmVhbXNfKQotICAg
IHN0cmVhbV9wYWlyLT5yZWNlaXZlKCktPnJlY2VpdmVfc3RyZWFtXy0+U3RhcnQoKTsKLSAgZm9y
IChhdXRvJiBzdHJlYW1fcGFpciA6IGF1ZGlvX3N0cmVhbXNfKQotICAgIHN0cmVhbV9wYWlyLT5y
ZWNlaXZlKCktPnJlY2VpdmVfc3RyZWFtXy0+U3RhcnQoKTsKLSAgZm9yIChhdXRvJiBzdHJlYW1f
cGFpciA6IHZpZGVvX3N0cmVhbXNfKSB7Ci0gICAgaWYgKHN0cmVhbV9wYWlyLT5jb25maWdfLmF1
dG9zdGFydCkgewotICAgICAgc3RyZWFtX3BhaXItPnNlbmQoKS0+U3RhcnQoKTsKLSAgICB9Ci0g
IH0KLSAgZm9yIChhdXRvJiBzdHJlYW1fcGFpciA6IGF1ZGlvX3N0cmVhbXNfKSB7Ci0gICAgaWYg
KHN0cmVhbV9wYWlyLT5jb25maWdfLmF1dG9zdGFydCkgewotICAgICAgc3RyZWFtX3BhaXItPnNl
bmQoKS0+U3RhcnQoKTsKLSAgICB9Ci0gIH0KLSAgZm9yIChhdXRvJiBjYWxsIDogY2xpZW50c18p
IHsKLSAgICBjYWxsLT5jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdvcmtTdGF0ZShNZWRpYVR5cGU6
OkFVRElPLCBrTmV0d29ya1VwKTsKLSAgICBjYWxsLT5jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdv
cmtTdGF0ZShNZWRpYVR5cGU6OlZJREVPLCBrTmV0d29ya1VwKTsKLSAgfQotCi0gIHJ0Yzo6RXZl
bnQgZG9uZV8oZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lXzsKICAgd2hpbGUgKCFl
eGl0X2Z1bmN0aW9uKCkgJiYgRHVyYXRpb24oKSA8IG1heF9kdXJhdGlvbikgewogICAgIFRpbWVz
dGFtcCBjdXJyZW50X3RpbWUgPSBOb3coKTsKICAgICBUaW1lRGVsdGEgZHVyYXRpb24gPSBjdXJy
ZW50X3RpbWUgLSBzdGFydF90aW1lXzsKQEAgLTM0Niw2ICszNDgsMzIgQEAgdm9pZCBTY2VuYXJp
bzo6UnVuVW50aWwoVGltZURlbHRhIG1heF9kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMDAwKTsKICAgICB9CiAgIH0KK30KKwordm9pZCBTY2Vu
YXJpbzo6U3RhcnQoKSB7CisgIHN0YXJ0X3RpbWVfID0gVGltZXN0YW1wOjp1cyhjbG9ja18tPlRp
bWVJbk1pY3Jvc2Vjb25kcygpKTsKKyAgZm9yIChhdXRvJiBhY3Rpdml0eSA6IHJlcGVhdGVkX2Fj
dGl2aXRpZXNfKSB7CisgICAgYWN0aXZpdHktPlNldFN0YXJ0VGltZShzdGFydF90aW1lXyk7Cisg
IH0KKworICBmb3IgKGF1dG8mIHN0cmVhbV9wYWlyIDogdmlkZW9fc3RyZWFtc18pCisgICAgc3Ry
ZWFtX3BhaXItPnJlY2VpdmUoKS0+U3RhcnQoKTsKKyAgZm9yIChhdXRvJiBzdHJlYW1fcGFpciA6
IGF1ZGlvX3N0cmVhbXNfKQorICAgIHN0cmVhbV9wYWlyLT5yZWNlaXZlKCktPlN0YXJ0KCk7Cisg
IGZvciAoYXV0byYgc3RyZWFtX3BhaXIgOiB2aWRlb19zdHJlYW1zXykgeworICAgIGlmIChzdHJl
YW1fcGFpci0+Y29uZmlnXy5hdXRvc3RhcnQpIHsKKyAgICAgIHN0cmVhbV9wYWlyLT5zZW5kKCkt
PlN0YXJ0KCk7CisgICAgfQorICB9CisgIGZvciAoYXV0byYgc3RyZWFtX3BhaXIgOiBhdWRpb19z
dHJlYW1zXykgeworICAgIGlmIChzdHJlYW1fcGFpci0+Y29uZmlnXy5hdXRvc3RhcnQpIHsKKyAg
ICAgIHN0cmVhbV9wYWlyLT5zZW5kKCktPlN0YXJ0KCk7CisgICAgfQorICB9Cit9CisKK3ZvaWQg
U2NlbmFyaW86OlN0b3AoKSB7CisgIFJUQ19EQ0hFQ0soc3RhcnRfdGltZV8uSXNGaW5pdGUoKSk7
CiAgIGZvciAoYXV0byYgc3RyZWFtX3BhaXIgOiB2aWRlb19zdHJlYW1zXykgewogICAgIHN0cmVh
bV9wYWlyLT5zZW5kKCktPnZpZGVvX2NhcHR1cmVyXy0+U3RvcCgpOwogICAgIHN0cmVhbV9wYWly
LT5zZW5kKCktPnNlbmRfc3RyZWFtXy0+U3RvcCgpOwpAQCAtMzU2LDYgKzM4NCw3IEBAIHZvaWQg
U2NlbmFyaW86OlJ1blVudGlsKFRpbWVEZWx0YSBtYXhfZHVyYXRpb24sCiAgICAgc3RyZWFtX3Bh
aXItPnJlY2VpdmUoKS0+cmVjZWl2ZV9zdHJlYW1fLT5TdG9wKCk7CiAgIGZvciAoYXV0byYgc3Ry
ZWFtX3BhaXIgOiBhdWRpb19zdHJlYW1zXykKICAgICBzdHJlYW1fcGFpci0+cmVjZWl2ZSgpLT5y
ZWNlaXZlX3N0cmVhbV8tPlN0b3AoKTsKKyAgc3RhcnRfdGltZV8gPSBUaW1lc3RhbXA6OlBsdXNJ
bmZpbml0eSgpOwogfQogCiBUaW1lc3RhbXAgU2NlbmFyaW86Ok5vdygpIHsKQEAgLTM2Myw2ICsz
OTIsOCBAQCBUaW1lc3RhbXAgU2NlbmFyaW86Ok5vdygpIHsKIH0KIAogVGltZURlbHRhIFNjZW5h
cmlvOjpEdXJhdGlvbigpIHsKKyAgaWYgKHN0YXJ0X3RpbWVfLklzSW5maW5pdGUoKSkKKyAgICBy
ZXR1cm4gVGltZURlbHRhOjpaZXJvKCk7CiAgIHJldHVybiBOb3coKSAtIHN0YXJ0X3RpbWVfOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmgKaW5kZXggMDU4NzZhYzQ5YzE1
NjM4NzJmMjZlZDM4ZGMwMDY4MzllODQ5MDM3OS4uMzhiZWY0NDJlY2RkNTMwMjk1MTM3NjhkY2Vh
MTJlYjU1NzM3OTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpby5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW8uaApAQCAt
NzgsNiArNzgsMjUgQEAgY2xhc3MgU2NlbmFyaW8gewogICAgICAgc3RkOjpzdHJpbmcgbmFtZSwK
ICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChDYWxsQ2xpZW50Q29uZmlnKik+IGNvbmZpZ19tb2Rp
Zmllcik7CiAKKyAgQ2FsbENsaWVudFBhaXIqIENyZWF0ZVJvdXRlcyhDYWxsQ2xpZW50KiBmaXJz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9k
ZSo+IHNlbmRfbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsQ2xpZW50
KiBzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0
d29ya05vZGUqPiByZXR1cm5fbGluayk7CisKKyAgQ2FsbENsaWVudFBhaXIqIENyZWF0ZVJvdXRl
cyhDYWxsQ2xpZW50KiBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEYXRhU2l6ZSBmaXJzdF9vdmVyaGVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDYWxsQ2xpZW50KiBzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEYXRhU2l6ZSBzZWNvbmRfb3ZlcmhlYWQpOworCisgIHZvaWQgQ2hh
bmdlUm91dGUoc3RkOjpwYWlyPENhbGxDbGllbnQqLCBDYWxsQ2xpZW50Kj4gY2xpZW50cywKKyAg
ICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMpOwor
CisgIHZvaWQgQ2hhbmdlUm91dGUoc3RkOjpwYWlyPENhbGxDbGllbnQqLCBDYWxsQ2xpZW50Kj4g
Y2xpZW50cywKKyAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92
ZXJfbm9kZXMsCisgICAgICAgICAgICAgICAgICAgRGF0YVNpemUgb3ZlcmhlYWQpOworCiAgIFNp
bXVsYXRlZFRpbWVDbGllbnQqIENyZWF0ZVNpbXVsYXRlZFRpbWVDbGllbnQoCiAgICAgICBzdGQ6
OnN0cmluZyBuYW1lLAogICAgICAgU2ltdWxhdGVkVGltZUNsaWVudENvbmZpZyBjb25maWcsCkBA
IC04NiwyOCArMTA1LDE4IEBAIGNsYXNzIFNjZW5hcmlvIHsKICAgICAgIHN0ZDo6dmVjdG9yPE5l
dHdvcmtOb2RlKj4gcmV0dXJuX2xpbmspOwogCiAgIFZpZGVvU3RyZWFtUGFpciogQ3JlYXRlVmlk
ZW9TdHJlYW0oCi0gICAgICBDYWxsQ2xpZW50KiBzZW5kZXIsCi0gICAgICBzdGQ6OnZlY3RvcjxO
ZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICAgIENhbGxDbGllbnQqIHJlY2VpdmVyLAotICAg
ICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKKyAgICAgIHN0ZDo6cGFp
cjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMsCiAgICAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQoVmlkZW9TdHJlYW1Db25maWcqKT4gY29uZmlnX21vZGlmaWVyKTsKLSAgVmlkZW9TdHJl
YW1QYWlyKiBDcmVhdGVWaWRlb1N0cmVhbShDYWxsQ2xpZW50KiBzZW5kZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5k
X2xpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbENsaWVudCog
cmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWcpOworICBWaWRlb1N0cmVhbVBhaXIq
IENyZWF0ZVZpZGVvU3RyZWFtKAorICAgICAgc3RkOjpwYWlyPENhbGxDbGllbnQqLCBDYWxsQ2xp
ZW50Kj4gY2xpZW50cywKKyAgICAgIFZpZGVvU3RyZWFtQ29uZmlnIGNvbmZpZyk7CiAKICAgQXVk
aW9TdHJlYW1QYWlyKiBDcmVhdGVBdWRpb1N0cmVhbSgKLSAgICAgIENhbGxDbGllbnQqIHNlbmRl
ciwKLSAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gc2VuZF9saW5rLAotICAgICAgQ2Fs
bENsaWVudCogcmVjZWl2ZXIsCi0gICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVy
bl9saW5rLAorICAgICAgc3RkOjpwYWlyPENhbGxDbGllbnQqLCBDYWxsQ2xpZW50Kj4gY2xpZW50
cywKICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChBdWRpb1N0cmVhbUNvbmZpZyopPiBjb25maWdf
bW9kaWZpZXIpOwotICBBdWRpb1N0cmVhbVBhaXIqIENyZWF0ZUF1ZGlvU3RyZWFtKENhbGxDbGll
bnQqIHNlbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZl
Y3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZp
Zyk7CisgIEF1ZGlvU3RyZWFtUGFpciogQ3JlYXRlQXVkaW9TdHJlYW0oCisgICAgICBzdGQ6OnBh
aXI8Q2FsbENsaWVudCosIENhbGxDbGllbnQqPiBjbGllbnRzLAorICAgICAgQXVkaW9TdHJlYW1D
b25maWcgY29uZmlnKTsKIAogICBDcm9zc1RyYWZmaWNTb3VyY2UqIENyZWF0ZUNyb3NzVHJhZmZp
YygKICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gb3Zlcl9ub2RlcywKQEAgLTEzMSw5
ICsxNDAsMTIgQEAgY2xhc3MgU2NlbmFyaW8gewogICAvLyBSdW5zIHRoZSBzY2VuYXJpbyBmb3Ig
dGhlIGdpdmVuIHRpbWUgb3IgdW50aWwgdGhlIGV4aXQgZnVuY3Rpb24gcmV0dXJucwogICAvLyB0
cnVlLgogICB2b2lkIFJ1bkZvcihUaW1lRGVsdGEgZHVyYXRpb24pOworICB2b2lkIFJ1blVudGls
KFRpbWVEZWx0YSBtYXhfZHVyYXRpb24pOwogICB2b2lkIFJ1blVudGlsKFRpbWVEZWx0YSBtYXhf
ZHVyYXRpb24sCiAgICAgICAgICAgICAgICAgVGltZURlbHRhIHByb2JlX2ludGVydmFsLAogICAg
ICAgICAgICAgICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbCgpPiBleGl0X2Z1bmN0aW9uKTsKKyAgdm9p
ZCBTdGFydCgpOworICB2b2lkIFN0b3AoKTsKIAogICAvLyBUcmlnZ2VycyBzZW5kaW5nIG9mIGR1
bW15IHBhY2tldHMgb3ZlciB0aGUgZ2l2ZW4gbm9kZXMuCiAgIHZvaWQgVHJpZ2dlclBhY2tldEJ1
cnN0KHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gb3Zlcl9ub2RlcywKQEAgLTE2Nyw2ICsxNzks
NyBAQCBjbGFzcyBTY2VuYXJpbyB7CiAgIHJ0Yzo6RmFrZUNsb2NrIGV2ZW50X2xvZ19mYWtlX2Ns
b2NrXzsKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsbENsaWVudD4+IGNsaWVu
dHNfOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsbENsaWVudFBhaXI+PiBjbGll
bnRfcGFpcnNfOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya05vZGU+PiBu
ZXR3b3JrX25vZGVzXzsKICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENyb3NzVHJhZmZp
Y1NvdXJjZT4+IGNyb3NzX3RyYWZmaWNfc291cmNlc187CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb1N0cmVhbVBhaXI+PiB2aWRlb19zdHJlYW1zXzsKQEAgLTE3OSw3ICsxOTIs
NyBAQCBjbGFzcyBTY2VuYXJpbyB7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5k
aW5nQWN0aXZpdHk+PiBwZW5kaW5nX2FjdGl2aXRpZXNfOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8U3RhdGVzUHJpbnRlcj4+IHByaW50ZXJzXzsKIAotICBpbnQ2NF90IG5leHRfcmVj
ZWl2ZXJfaWRfID0gNDAwMDA7CisgIGludDY0X3QgbmV4dF9yb3V0ZV9pZF8gPSA0MDAwMDsKICAg
cnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFj
dG9yeV87CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19l
bmNvZGVyX2ZhY3RvcnlfOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvX2NvbmZpZy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJp
b19jb25maWcuaAppbmRleCBlNjUyZTJjZTM5MjFkZjlkNjM0OTU3YzFkMDVhMWRjODQ0M2U5N2Ex
Li44OGZkYjhhZjAxNzM1Y2JjMDU2N2MxYjE1NDhhNTMxY2QzY2ZlMDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3Nj
ZW5hcmlvX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW9fY29uZmlnLmgKQEAgLTI4LDcgKzI4LDEyIEBA
IHN0cnVjdCBQYWNrZXRPdmVyaGVhZCB7CiAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtJcHY2
ID0gNDA7CiAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtVZHAgPSA4OwogICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBrU3J0cCA9IDEwOwotICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrVHVy
biA9IDQ7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTdHVuID0gNDsKKyAgLy8gVFVSTiBt
ZXNzYWdlcyBjYW4gYmUgc2VudCBlaXRoZXIgd2l0aCBvciB3aXRob3V0IGFuIGVzdGFibGllc2hl
ZCBjaGFubmVsLgorICAvLyBJbiB0aGUgbGF0dGVyIGNhc2UsIGEgVFVSTiBTZW5kL0RhdGEgSW5k
aWNhdGlvbiBpcyBzZW50IHdoaWNoIGhhcworICAvLyBzaWduaWZpY2FudGx5IG1vcmUgb3Zlcmhl
YWQuCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtUdXJuQ2hhbm5lbE1lc3NhZ2UgPSA0Owor
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrVHVybkluZGljYXRpb25NZXNzYWdlID0gMzY7CiAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtEZWZhdWx0ID0ga0lwdjQgKyBrVWRwICsga1NydHA7
CiB9Owogc3RydWN0IFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWcgewpAQCAtNDYsNyArNTEsNiBA
QCBzdHJ1Y3QgVHJhbnNwb3J0Q29udHJvbGxlckNvbmZpZyB7CiAKIHN0cnVjdCBDYWxsQ2xpZW50
Q29uZmlnIHsKICAgVHJhbnNwb3J0Q29udHJvbGxlckNvbmZpZyB0cmFuc3BvcnQ7Ci0gIERhdGFS
YXRlIHByaW9yaXR5X3RhcmdldF9yYXRlID0gRGF0YVJhdGU6Olplcm8oKTsKIH07CiAKIHN0cnVj
dCBTaW11bGF0ZWRUaW1lQ2xpZW50Q29uZmlnIHsKQEAgLTcxLDYgKzc1LDEwIEBAIHN0cnVjdCBQ
YWNrZXRTdHJlYW1Db25maWcgewogc3RydWN0IFZpZGVvU3RyZWFtQ29uZmlnIHsKICAgYm9vbCBh
dXRvc3RhcnQgPSB0cnVlOwogICBzdHJ1Y3QgU291cmNlIHsKKyAgICBlbnVtIGNsYXNzIENvbnRl
bnRUeXBlIHsKKyAgICAgIGtWaWRlbywKKyAgICAgIGtTY3JlZW4sCisgICAgfSBjb250ZW50X3R5
cGUgPSBDb250ZW50VHlwZTo6a1ZpZGVvOwogICAgIGVudW0gQ2FwdHVyZSB7CiAgICAgICBrR2Vu
ZXJhdG9yLAogICAgICAga1ZpZGVvRmlsZSwKQEAgLTEwMyw2ICsxMTEsNyBAQCBzdHJ1Y3QgVmlk
ZW9TdHJlYW1Db25maWcgewogICAgIGFic2w6Om9wdGlvbmFsPGludD4ga2V5X2ZyYW1lX2ludGVy
dmFsID0gMzAwMDsKIAogICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBtYXhfZGF0YV9yYXRl
OworICAgIGFic2w6Om9wdGlvbmFsPGludD4gbWF4X2ZyYW1lcmF0ZTsKICAgICBzaXplX3QgbnVt
X3NpbXVsY2FzdF9zdHJlYW1zID0gMTsKICAgICB1c2luZyBEZWdyYWRhdGlvblByZWZlcmVuY2Ug
PSBEZWdyYWRhdGlvblByZWZlcmVuY2U7CiAgICAgRGVncmFkYXRpb25QcmVmZXJlbmNlIGRlZ3Jh
ZGF0aW9uX3ByZWZlcmVuY2UgPQpAQCAtMTE0LDEwICsxMjMsMTAgQEAgc3RydWN0IFZpZGVvU3Ry
ZWFtQ29uZmlnIHsKICAgICB+U3RyZWFtKCk7CiAgICAgYm9vbCBwYWNrZXRfZmVlZGJhY2sgPSB0
cnVlOwogICAgIGJvb2wgdXNlX3J0eCA9IHRydWU7CisgICAgRGF0YVJhdGUgcGFkX3RvX3JhdGUg
PSBEYXRhUmF0ZTo6WmVybygpOwogICAgIFRpbWVEZWx0YSBuYWNrX2hpc3RvcnlfdGltZSA9IFRp
bWVEZWx0YTo6bXMoMTAwMCk7CiAgICAgYm9vbCB1c2VfZmxleGZlYyA9IGZhbHNlOwogICAgIGJv
b2wgdXNlX3VscGZlYyA9IGZhbHNlOwotICAgIERhdGFTaXplIHBhY2tldF9vdmVyaGVhZCA9IERh
dGFTaXplOjpieXRlcyhQYWNrZXRPdmVyaGVhZDo6a0RlZmF1bHQpOwogICB9IHN0cmVhbTsKICAg
c3RydWN0IFJlbmRlcmVyIHsKICAgICBlbnVtIFR5cGUgeyBrRmFrZSB9IHR5cGUgPSBrRmFrZTsK
QEAgLTEzMiw2ICsxNDEsMTcgQEAgc3RydWN0IEF1ZGlvU3RyZWFtQ29uZmlnIHsKICAgc3RydWN0
IFNvdXJjZSB7CiAgICAgaW50IGNoYW5uZWxzID0gMTsKICAgfSBzb3VyY2U7CisgIGJvb2wgbmV0
d29ya19hZGFwdGF0aW9uID0gZmFsc2U7CisgIHN0cnVjdCBOZXR3b3JrQWRhcHRhdGlvbiB7Cisg
ICAgc3RydWN0IEZyYW1lTGVuZ3RoIHsKKyAgICAgIGRvdWJsZSBtaW5fcGFja2V0X2xvc3NfZm9y
X2RlY3JlYXNlID0gMDsKKyAgICAgIGRvdWJsZSBtYXhfcGFja2V0X2xvc3NfZm9yX2luY3JlYXNl
ID0gMTsKKyAgICAgIERhdGFSYXRlIG1pbl9yYXRlX2Zvcl8yMF9tcyA9IERhdGFSYXRlOjpaZXJv
KCk7CisgICAgICBEYXRhUmF0ZSBtYXhfcmF0ZV9mb3JfNjBfbXMgPSBEYXRhUmF0ZTo6SW5maW5p
dHkoKTsKKyAgICAgIERhdGFSYXRlIG1pbl9yYXRlX2Zvcl82MF9tcyA9IERhdGFSYXRlOjpaZXJv
KCk7CisgICAgICBEYXRhUmF0ZSBtYXhfcmF0ZV9mb3JfMTIwX21zID0gRGF0YVJhdGU6OkluZmlu
aXR5KCk7CisgICAgfSBmcmFtZTsKKyAgfSBhZGFwdDsKICAgc3RydWN0IEVuY29kZXIgewogICAg
IEVuY29kZXIoKTsKICAgICBFbmNvZGVyKGNvbnN0IEVuY29kZXImKTsKQEAgLTE0MCw2ICsxNjAs
NyBAQCBzdHJ1Y3QgQXVkaW9TdHJlYW1Db25maWcgewogICAgIGFic2w6Om9wdGlvbmFsPERhdGFS
YXRlPiBmaXhlZF9yYXRlOwogICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBtaW5fcmF0ZTsK
ICAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gbWF4X3JhdGU7CisgICAgYWJzbDo6b3B0aW9u
YWw8RGF0YVJhdGU+IHByaW9yaXR5X3JhdGU7CiAgICAgVGltZURlbHRhIGluaXRpYWxfZnJhbWVf
bGVuZ3RoID0gVGltZURlbHRhOjptcygyMCk7CiAgIH0gZW5jb2RlcjsKICAgc3RydWN0IFN0cmVh
bSB7CkBAIC0xNDcsOCArMTY4LDYgQEAgc3RydWN0IEF1ZGlvU3RyZWFtQ29uZmlnIHsKICAgICBT
dHJlYW0oY29uc3QgU3RyZWFtJik7CiAgICAgflN0cmVhbSgpOwogICAgIGJvb2wgaW5fYmFuZHdp
ZHRoX2VzdGltYXRpb24gPSBmYWxzZTsKLSAgICBib29sIHJhdGVfYWxsb2NhdGlvbl9wcmlvcml0
eSA9IGZhbHNlOwotICAgIERhdGFTaXplIHBhY2tldF9vdmVyaGVhZCA9IERhdGFTaXplOjpieXRl
cyhQYWNrZXRPdmVyaGVhZDo6a0RlZmF1bHQpOwogICB9IHN0cmVhbTsKICAgc3RydWN0IFJlbmRl
ciB7CiAgICAgc3RkOjpzdHJpbmcgc3luY19ncm91cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW9fdGVz
dHMvYmJyX3BlcmZvcm1hbmNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb190ZXN0cy9iYnJfcGVyZm9ybWFuY2UuY2MK
aW5kZXggZTg3Y2M2OGRkMzFmNzBjOGY4ZmNlM2YwZGRhNzU3YTZhMjc1OWQyOS4uMjhjYWJjMDcw
ZmRhMDdmYjc2NjNhMTMwZTRmODc3OTVjMTg3ZjU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb190ZXN0
cy9iYnJfcGVyZm9ybWFuY2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb190ZXN0cy9iYnJfcGVyZm9ybWFuY2Uu
Y2MKQEAgLTE2NywzMSArMTY3LDMxIEBAIFRFU1RfUChCYnJTY2VuYXJpb1Rlc3QsIFJlY2VpdmVz
VmlkZW8pIHsKICAgbmV0X2NvbmYuc2ltdWxhdGlvbi5kZWxheV9zdGRfZGV2ID0gY29uZl8uc2Nl
bmFyaW8uZGVsYXlfbm9pc2U7CiAgIFNpbXVsYXRpb25Ob2RlKiBzZW5kX25ldCA9IHMuQ3JlYXRl
U2ltdWxhdGlvbk5vZGUobmV0X2NvbmYpOwogICBTaW11bGF0aW9uTm9kZSogcmV0X25ldCA9IHMu
Q3JlYXRlU2ltdWxhdGlvbk5vZGUobmV0X2NvbmYpOwotICBWaWRlb1N0cmVhbVBhaXIqIGFsaWNl
X3ZpZGVvID0gcy5DcmVhdGVWaWRlb1N0cmVhbSgKLSAgICAgIGFsaWNlLCB7c2VuZF9uZXR9LCBi
b2IsIHtyZXRfbmV0fSwgWyZdKFZpZGVvU3RyZWFtQ29uZmlnKiBjKSB7CisgIGF1dG8gcm91dGUg
PSBzLkNyZWF0ZVJvdXRlcyhhbGljZSwge3NlbmRfbmV0fSwgYm9iLCB7cmV0X25ldH0pOworCisg
IFZpZGVvU3RyZWFtUGFpciogYWxpY2VfdmlkZW8gPQorICAgICAgcy5DcmVhdGVWaWRlb1N0cmVh
bShyb3V0ZS0+Zm9yd2FyZCgpLCBbJl0oVmlkZW9TdHJlYW1Db25maWcqIGMpIHsKICAgICAgICAg
Yy0+ZW5jb2Rlci5mYWtlLm1heF9yYXRlID0gRGF0YVJhdGU6OmticHMoMTgwMCk7CiAgICAgICB9
KTsKLSAgcy5DcmVhdGVBdWRpb1N0cmVhbShhbGljZSwge3NlbmRfbmV0fSwgYm9iLCB7cmV0X25l
dH0sCi0gICAgICAgICAgICAgICAgICAgICAgWyZdKEF1ZGlvU3RyZWFtQ29uZmlnKiBjKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZl8udHVuaW5nLnVzZV9iYnIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgYy0+c3RyZWFtLmluX2JhbmR3aWR0aF9lc3RpbWF0aW9uID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+ZW5jb2Rlci5maXhlZF9yYXRlID0g
RGF0YVJhdGU6OmticHMoMzEpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgIH0pOworICBzLkNyZWF0ZUF1ZGlvU3RyZWFtKHJvdXRlLT5mb3J3YXJkKCks
IFsmXShBdWRpb1N0cmVhbUNvbmZpZyogYykgeworICAgIGlmIChjb25mXy50dW5pbmcudXNlX2Ji
cikgeworICAgICAgYy0+c3RyZWFtLmluX2JhbmR3aWR0aF9lc3RpbWF0aW9uID0gdHJ1ZTsKKyAg
ICAgIGMtPmVuY29kZXIuZml4ZWRfcmF0ZSA9IERhdGFSYXRlOjprYnBzKDMxKTsKKyAgICB9Cisg
IH0pOwogCiAgIFZpZGVvU3RyZWFtUGFpciogYm9iX3ZpZGVvID0gbnVsbHB0cjsKICAgaWYgKGNv
bmZfLnNjZW5hcmlvLnJldHVybl90cmFmZmljKSB7Ci0gICAgYm9iX3ZpZGVvID0gcy5DcmVhdGVW
aWRlb1N0cmVhbSgKLSAgICAgICAgYm9iLCB7cmV0X25ldH0sIGFsaWNlLCB7c2VuZF9uZXR9LCBb
Jl0oVmlkZW9TdHJlYW1Db25maWcqIGMpIHsKKyAgICBib2JfdmlkZW8gPQorICAgICAgICBzLkNy
ZWF0ZVZpZGVvU3RyZWFtKHJvdXRlLT5yZXZlcnNlKCksIFsmXShWaWRlb1N0cmVhbUNvbmZpZyog
YykgewogICAgICAgICAgIGMtPmVuY29kZXIuZmFrZS5tYXhfcmF0ZSA9IERhdGFSYXRlOjprYnBz
KDE4MDApOwogICAgICAgICB9KTsKLSAgICBzLkNyZWF0ZUF1ZGlvU3RyZWFtKGJvYiwge3JldF9u
ZXR9LCBhbGljZSwge3NlbmRfbmV0fSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsmXShBdWRp
b1N0cmVhbUNvbmZpZyogYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZl8u
dHVuaW5nLnVzZV9iYnIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5zdHJlYW0u
aW5fYmFuZHdpZHRoX2VzdGltYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGMtPmVuY29kZXIuZml4ZWRfcmF0ZSA9IERhdGFSYXRlOjprYnBzKDMxKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgcy5D
cmVhdGVBdWRpb1N0cmVhbShyb3V0ZS0+cmV2ZXJzZSgpLCBbJl0oQXVkaW9TdHJlYW1Db25maWcq
IGMpIHsKKyAgICAgIGlmIChjb25mXy50dW5pbmcudXNlX2JicikgeworICAgICAgICBjLT5zdHJl
YW0uaW5fYmFuZHdpZHRoX2VzdGltYXRpb24gPSB0cnVlOworICAgICAgICBjLT5lbmNvZGVyLmZp
eGVkX3JhdGUgPSBEYXRhUmF0ZTo6a2JwcygzMSk7CisgICAgICB9CisgICAgfSk7CiAgIH0KICAg
Q3Jvc3NUcmFmZmljQ29uZmlnIGNyb3NzX2NvbmZpZzsKICAgY3Jvc3NfY29uZmlnLnBlYWtfcmF0
ZSA9IGNvbmZfLnNjZW5hcmlvLmNyb3NzX3RyYWZmaWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9zY2VuYXJpby9zY2VuYXJpb191bml0dGVzdC5jYwppbmRleCAzMDVmODY2MGNjZDc0NGU5ZTdm
NTYzZDhmMzNlMmJmZGMyNGM4Y2UzLi45NzI4NWQzOTE0NTlmMmNmYzhjM2FmYzY2NWIzODFjODE1
MWY3Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW9fdW5p
dHRlc3QuY2MKQEAgLTIxLDE0ICsyMSwxOSBAQCBURVNUKFNjZW5hcmlvVGVzdCwgU3RhcnRzQW5k
U3RvcHNXaXRob3V0RXJyb3JzKSB7CiAgIE5ldHdvcmtOb2RlQ29uZmlnIG5ldHdvcmtfY29uZmln
OwogICBhdXRvIGFsaWNlX25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUobmV0d29ya19jb25m
aWcpOwogICBhdXRvIGJvYl9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKG5ldHdvcmtfY29u
ZmlnKTsKKyAgYXV0byByb3V0ZSA9IHMuQ3JlYXRlUm91dGVzKGFsaWNlLCB7YWxpY2VfbmV0fSwg
Ym9iLCB7Ym9iX25ldH0pOwogCiAgIFZpZGVvU3RyZWFtQ29uZmlnIHZpZGVvX3N0cmVhbV9jb25m
aWc7Ci0gIHMuQ3JlYXRlVmlkZW9TdHJlYW0oYWxpY2UsIHthbGljZV9uZXR9LCBib2IsIHtib2Jf
bmV0fSwgdmlkZW9fc3RyZWFtX2NvbmZpZyk7Ci0gIHMuQ3JlYXRlVmlkZW9TdHJlYW0oYm9iLCB7
Ym9iX25ldH0sIGFsaWNlLCB7YWxpY2VfbmV0fSwgdmlkZW9fc3RyZWFtX2NvbmZpZyk7CisgIHMu
Q3JlYXRlVmlkZW9TdHJlYW0ocm91dGUtPmZvcndhcmQoKSwgdmlkZW9fc3RyZWFtX2NvbmZpZyk7
CisgIHMuQ3JlYXRlVmlkZW9TdHJlYW0ocm91dGUtPnJldmVyc2UoKSwgdmlkZW9fc3RyZWFtX2Nv
bmZpZyk7CiAKICAgQXVkaW9TdHJlYW1Db25maWcgYXVkaW9fc3RyZWFtX2NvbmZpZzsKLSAgcy5D
cmVhdGVBdWRpb1N0cmVhbShhbGljZSwge2FsaWNlX25ldH0sIGJvYiwge2JvYl9uZXR9LCBhdWRp
b19zdHJlYW1fY29uZmlnKTsKLSAgcy5DcmVhdGVBdWRpb1N0cmVhbShib2IsIHtib2JfbmV0fSwg
YWxpY2UsIHthbGljZV9uZXR9LCBhdWRpb19zdHJlYW1fY29uZmlnKTsKKyAgYXVkaW9fc3RyZWFt
X2NvbmZpZy5lbmNvZGVyLm1pbl9yYXRlID0gRGF0YVJhdGU6OmticHMoNik7CisgIGF1ZGlvX3N0
cmVhbV9jb25maWcuZW5jb2Rlci5tYXhfcmF0ZSA9IERhdGFSYXRlOjprYnBzKDY0KTsKKyAgYXVk
aW9fc3RyZWFtX2NvbmZpZy5lbmNvZGVyLmFsbG9jYXRlX2JpdHJhdGUgPSB0cnVlOworICBhdWRp
b19zdHJlYW1fY29uZmlnLnN0cmVhbS5pbl9iYW5kd2lkdGhfZXN0aW1hdGlvbiA9IGZhbHNlOwor
ICBzLkNyZWF0ZUF1ZGlvU3RyZWFtKHJvdXRlLT5mb3J3YXJkKCksIGF1ZGlvX3N0cmVhbV9jb25m
aWcpOworICBzLkNyZWF0ZUF1ZGlvU3RyZWFtKHJvdXRlLT5yZXZlcnNlKCksIGF1ZGlvX3N0cmVh
bV9jb25maWcpOwogCiAgIENyb3NzVHJhZmZpY0NvbmZpZyBjcm9zc190cmFmZmljX2NvbmZpZzsK
ICAgcy5DcmVhdGVDcm9zc1RyYWZmaWMoe2FsaWNlX25ldH0sIGNyb3NzX3RyYWZmaWNfY29uZmln
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3Qvc2NlbmFyaW8vc2ltdWxhdGVkX3RpbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NpbXVsYXRlZF90aW1lLmNjCmluZGV4
IGYyOWE4MmM0NTUwMjlmMjM5NjE0ZjNjMWVhYTQyZGNkMTZmOWIzMTMuLmE1OTc3ZTdkOTY1ZDIz
NmU5OTU0ZTM4MDFkZTRlMTQ1MWRjOTgxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2ltdWxhdGVkX3RpbWUuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2Vu
YXJpby9zaW11bGF0ZWRfdGltZS5jYwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRyYW5zcG9ydFBhY2tl
dHNGZWVkYmFjayBTaW11bGF0ZWRTZW5kZXI6OlB1bGxGZWVkYmFja1JlcG9ydCgKICAgICAgICAg
fQogICAgICAgfQogCi0gICAgICBkYXRhX2luX2ZsaWdodF8gLT0gZmVlZGJhY2suc2VudF9wYWNr
ZXQtPnNpemU7CisgICAgICBkYXRhX2luX2ZsaWdodF8gLT0gZmVlZGJhY2suc2VudF9wYWNrZXQu
c2l6ZTsKICAgICAgIHJlcG9ydC5wYWNrZXRfZmVlZGJhY2tzLnB1c2hfYmFjayhmZWVkYmFjayk7
CiAgICAgfQogICB9CkBAIC0yNTIsMTEgKzI1MiwxMiBAQCBTaW11bGF0ZWRUaW1lQ2xpZW50OjpT
aW11bGF0ZWRUaW1lQ2xpZW50KAogICAgICAgcmV0dXJuX2xpbmtfKHJldHVybl9saW5rKSwKICAg
ICAgIHNlbmRlcl8oc2VuZF9saW5rLmZyb250KCksIHNlbmRfcmVjZWl2ZXJfaWQpLAogICAgICAg
ZmVlZGJhY2tfKGNvbmZpZywgcmV0dXJuX3JlY2VpdmVyX2lkLCByZXR1cm5fbGluay5mcm9udCgp
KSB7CisgIGN1cnJlbnRfY29udHJhaW50c18uYXRfdGltZSA9IGF0X3RpbWU7CisgIGN1cnJlbnRf
Y29udHJhaW50c18uc3RhcnRpbmdfcmF0ZSA9IGNvbmZpZy50cmFuc3BvcnQucmF0ZXMuc3RhcnRf
cmF0ZTsKKyAgY3VycmVudF9jb250cmFpbnRzXy5taW5fZGF0YV9yYXRlID0gY29uZmlnLnRyYW5z
cG9ydC5yYXRlcy5taW5fcmF0ZTsKKyAgY3VycmVudF9jb250cmFpbnRzXy5tYXhfZGF0YV9yYXRl
ID0gY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5tYXhfcmF0ZTsKICAgTmV0d29ya0NvbnRyb2xsZXJD
b25maWcgaW5pdGlhbF9jb25maWc7Ci0gIGluaXRpYWxfY29uZmlnLmNvbnN0cmFpbnRzLmF0X3Rp
bWUgPSBhdF90aW1lOwotICBpbml0aWFsX2NvbmZpZy5jb25zdHJhaW50cy5zdGFydGluZ19yYXRl
ID0gY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlOwotICBpbml0aWFsX2NvbmZpZy5j
b25zdHJhaW50cy5taW5fZGF0YV9yYXRlID0gY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5taW5fcmF0
ZTsKLSAgaW5pdGlhbF9jb25maWcuY29uc3RyYWludHMubWF4X2RhdGFfcmF0ZSA9IGNvbmZpZy50
cmFuc3BvcnQucmF0ZXMubWF4X3JhdGU7CisgIGluaXRpYWxfY29uZmlnLmNvbnN0cmFpbnRzID0g
Y3VycmVudF9jb250cmFpbnRzXzsKICAgY29uZ2VzdGlvbl9jb250cm9sbGVyXyA9IG5ldHdvcmtf
Y29udHJvbGxlcl9mYWN0b3J5Xy5DcmVhdGUoaW5pdGlhbF9jb25maWcpOwogICBmb3IgKGF1dG8m
IHN0cmVhbV9jb25maWcgOiBzdHJlYW1fY29uZmlncykKICAgICBwYWNrZXRfc3RyZWFtc18uZW1w
bGFjZV9iYWNrKG5ldyBQYWNrZXRTdHJlYW0oc3RyZWFtX2NvbmZpZykpOwpAQCAtMjgzLDkgKzI4
NCw5IEBAIGJvb2wgU2ltdWxhdGVkVGltZUNsaWVudDo6VHJ5RGVsaXZlclBhY2tldChydGM6OkNv
cHlPbldyaXRlQnVmZmVyIHJhd19idWZmZXIsCiAgIGZvciAoUGFja2V0UmVzdWx0JiBmZWVkYmFj
ayA6IHJlcG9ydC5wYWNrZXRfZmVlZGJhY2tzKSB7CiAgICAgaWYgKHBhY2tldF9sb2dfKQogICAg
ICAgZnByaW50ZihwYWNrZXRfbG9nXywgIiUiIFBSSWQ2NCAiICUiIFBSSWQ2NCAiICUuM2xmICUu
M2xmICUuM2xmXG4iLAotICAgICAgICAgICAgICBmZWVkYmFjay5zZW50X3BhY2tldC0+c2VxdWVu
Y2VfbnVtYmVyLAotICAgICAgICAgICAgICBmZWVkYmFjay5zZW50X3BhY2tldC0+c2l6ZS5ieXRl
cygpLAotICAgICAgICAgICAgICBmZWVkYmFjay5zZW50X3BhY2tldC0+c2VuZF90aW1lLnNlY29u
ZHM8ZG91YmxlPigpLAorICAgICAgICAgICAgICBmZWVkYmFjay5zZW50X3BhY2tldC5zZXF1ZW5j
ZV9udW1iZXIsCisgICAgICAgICAgICAgIGZlZWRiYWNrLnNlbnRfcGFja2V0LnNpemUuYnl0ZXMo
KSwKKyAgICAgICAgICAgICAgZmVlZGJhY2suc2VudF9wYWNrZXQuc2VuZF90aW1lLnNlY29uZHM8
ZG91YmxlPigpLAogICAgICAgICAgICAgICBmZWVkYmFjay5yZWNlaXZlX3RpbWUuc2Vjb25kczxk
b3VibGU+KCksCiAgICAgICAgICAgICAgIGF0X3RpbWUuc2Vjb25kczxkb3VibGU+KCkpOwogICB9
CkBAIC0zMDcsNiArMzA4LDcgQEAgdm9pZCBTaW11bGF0ZWRUaW1lQ2xpZW50OjpVcGRhdGUoTmV0
d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRlKSB7CiAgICAgRGF0YVJhdGUgcmF0ZV9wZXJfc3RyZWFt
ID0KICAgICAgICAgdXBkYXRlLnRhcmdldF9yYXRlLT50YXJnZXRfcmF0ZSAqIHJhdGlvX3Blcl9z
dHJlYW07CiAgICAgdGFyZ2V0X3JhdGVfID0gdXBkYXRlLnRhcmdldF9yYXRlLT50YXJnZXRfcmF0
ZTsKKyAgICBsaW5rX2NhcGFjaXR5XyA9IHVwZGF0ZS50YXJnZXRfcmF0ZS0+bmV0d29ya19lc3Rp
bWF0ZS5iYW5kd2lkdGg7CiAgICAgZm9yIChhdXRvJiBzdHJlYW0gOiBwYWNrZXRfc3RyZWFtc18p
CiAgICAgICBzdHJlYW0tPk9uVGFyZ2V0UmF0ZVVwZGF0ZShyYXRlX3Blcl9zdHJlYW0pOwogICB9
CkBAIC0zMzYsMTAgKzMzOCwyMiBAQCB2b2lkIFNpbXVsYXRlZFRpbWVDbGllbnQ6OlByb2Nlc3NG
cmFtZXMoVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgfQogfQogCit2b2lkIFNpbXVsYXRlZFRpbWVD
bGllbnQ6OlRyaWdnZXJGYWtlUmVyb3V0ZShUaW1lc3RhbXAgYXRfdGltZSkgeworICBOZXR3b3Jr
Um91dGVDaGFuZ2UgbXNnOworICBtc2cuYXRfdGltZSA9IGF0X3RpbWU7CisgIG1zZy5jb25zdHJh
aW50cyA9IGN1cnJlbnRfY29udHJhaW50c187CisgIG1zZy5jb25zdHJhaW50cy5hdF90aW1lID0g
YXRfdGltZTsKKyAgVXBkYXRlKGNvbmdlc3Rpb25fY29udHJvbGxlcl8tPk9uTmV0d29ya1JvdXRl
Q2hhbmdlKG1zZykpOworfQorCiBUaW1lRGVsdGEgU2ltdWxhdGVkVGltZUNsaWVudDo6R2V0TmV0
d29ya0NvbnRyb2xsZXJQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdCB7CiAgIHJldHVybiBuZXR3b3Jr
X2NvbnRyb2xsZXJfZmFjdG9yeV8uR2V0UHJvY2Vzc0ludGVydmFsKCk7CiB9CiAKK0RhdGFSYXRl
IFNpbXVsYXRlZFRpbWVDbGllbnQ6OmxpbmtfY2FwYWNpdHkoKSBjb25zdCB7CisgIHJldHVybiBs
aW5rX2NhcGFjaXR5XzsKK30KKwogZG91YmxlIFNpbXVsYXRlZFRpbWVDbGllbnQ6OnRhcmdldF9y
YXRlX2ticHMoKSBjb25zdCB7CiAgIHJldHVybiB0YXJnZXRfcmF0ZV8ua2Jwczxkb3VibGU+KCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3NjZW5hcmlvL3NpbXVsYXRlZF90aW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NpbXVsYXRlZF90aW1lLmgKaW5kZXgg
YjljNmRlMTI0ZDQxZjVkNTNhYmU5MjgxOWI1ZWE2NWRkNDEyYmQ0Yi4uNzlmZGY4NDU3MzZkMjZh
NDQyZjE3ZTFiNjJjNjgwMjg5ZTMwZDU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zaW11bGF0ZWRfdGltZS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFy
aW8vc2ltdWxhdGVkX3RpbWUuaApAQCAtMTI5LDggKzEyOSwxMCBAQCBjbGFzcyBTaW11bGF0ZWRU
aW1lQ2xpZW50IDogTmV0d29ya1JlY2VpdmVySW50ZXJmYWNlIHsKICAgdm9pZCBDb25nZXN0aW9u
UHJvY2VzcyhUaW1lc3RhbXAgYXRfdGltZSk7CiAgIHZvaWQgUGFjZXJQcm9jZXNzKFRpbWVzdGFt
cCBhdF90aW1lKTsKICAgdm9pZCBQcm9jZXNzRnJhbWVzKFRpbWVzdGFtcCBhdF90aW1lKTsKKyAg
dm9pZCBUcmlnZ2VyRmFrZVJlcm91dGUoVGltZXN0YW1wIGF0X3RpbWUpOwogICBUaW1lRGVsdGEg
R2V0TmV0d29ya0NvbnRyb2xsZXJQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdDsKICAgZG91YmxlIHRh
cmdldF9yYXRlX2ticHMoKSBjb25zdDsKKyAgRGF0YVJhdGUgbGlua19jYXBhY2l0eSgpIGNvbnN0
OwogCiAgIGJvb2wgVHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlY2VpdmVyLApAQCAtMTQ0LDcg
KzE0Niw5IEBAIGNsYXNzIFNpbXVsYXRlZFRpbWVDbGllbnQgOiBOZXR3b3JrUmVjZWl2ZXJJbnRl
cmZhY2UgewogICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rXzsKICAgU2lt
dWxhdGVkU2VuZGVyIHNlbmRlcl87CiAgIFNpbXVsYXRlZEZlZWRiYWNrIGZlZWRiYWNrXzsKKyAg
VGFyZ2V0UmF0ZUNvbnN0cmFpbnRzIGN1cnJlbnRfY29udHJhaW50c187CiAgIERhdGFSYXRlIHRh
cmdldF9yYXRlXyA9IERhdGFSYXRlOjpJbmZpbml0eSgpOworICBEYXRhUmF0ZSBsaW5rX2NhcGFj
aXR5XyA9IERhdGFSYXRlOjpJbmZpbml0eSgpOwogICBGSUxFKiBwYWNrZXRfbG9nXyA9IG51bGxw
dHI7CiAKICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBhY2tldFN0cmVhbT4+IHBhY2tl
dF9zdHJlYW1zXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vdmlkZW9fc3RyZWFtLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby92aWRlb19zdHJlYW0uY2MK
aW5kZXggYjg1MDM0ZmZiMjAyMjMzMDJiNjkyMzIzNThhZWIzNTk3YmRmZDAzYy4uMzYzOTkyMzRh
ZGNhZjk4ZDJhYjZjNDY4MTg2MTRiM2Y1ZGQ2YzFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby92aWRlb19zdHJlYW0u
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9z
Y2VuYXJpby92aWRlb19zdHJlYW0uY2MKQEAgLTEyLDEzICsxMiwxNCBAQAogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8v
ZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1
aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlh
L2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxk
ZWNvZGVyZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGVuY29kZXJm
YWN0b3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lLmgiCiAj
aW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L2Zha2VfZW5jb2Rlci5o
IgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAidGVzdC9zY2VuYXJpby9oYXJkd2FyZV9jb2RlY3MuaCIKICNpbmNsdWRlICJ0ZXN0L3Rl
c3RzdXBwb3J0L2ZpbGV1dGlscy5oIgogCkBAIC0xMzEsMTEgKzEzMiwyMCBAQCBWaWRlb0VuY29k
ZXJDb25maWcgQ3JlYXRlVmlkZW9FbmNvZGVyQ29uZmlnKFZpZGVvU3RyZWFtQ29uZmlnIGNvbmZp
ZykgewogICBzaXplX3QgbnVtX3N0cmVhbXMgPSBjb25maWcuZW5jb2Rlci5udW1fc2ltdWxjYXN0
X3N0cmVhbXM7CiAgIFZpZGVvRW5jb2RlckNvbmZpZyBlbmNvZGVyX2NvbmZpZzsKICAgZW5jb2Rl
cl9jb25maWcuY29kZWNfdHlwZSA9IGNvbmZpZy5lbmNvZGVyLmNvZGVjOwotICBlbmNvZGVyX2Nv
bmZpZy5jb250ZW50X3R5cGUgPSBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprUmVh
bHRpbWVWaWRlbzsKKyAgc3dpdGNoIChjb25maWcuc291cmNlLmNvbnRlbnRfdHlwZSkgeworICAg
IGNhc2UgVmlkZW9TdHJlYW1Db25maWc6OlNvdXJjZTo6Q29udGVudFR5cGU6OmtWaWRlbzoKKyAg
ICAgIGVuY29kZXJfY29uZmlnLmNvbnRlbnRfdHlwZSA9CisgICAgICAgICAgVmlkZW9FbmNvZGVy
Q29uZmlnOjpDb250ZW50VHlwZTo6a1JlYWx0aW1lVmlkZW87CisgICAgICBicmVhazsKKyAgICBj
YXNlIFZpZGVvU3RyZWFtQ29uZmlnOjpTb3VyY2U6OkNvbnRlbnRUeXBlOjprU2NyZWVuOgorICAg
ICAgZW5jb2Rlcl9jb25maWcuY29udGVudF90eXBlID0gVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250
ZW50VHlwZTo6a1NjcmVlbjsKKyAgICAgIGJyZWFrOworICB9CiAgIGVuY29kZXJfY29uZmlnLnZp
ZGVvX2Zvcm1hdCA9CiAgICAgICBTZHBWaWRlb0Zvcm1hdChDb2RlY1R5cGVUb1BheWxvYWRTdHJp
bmcoY29uZmlnLmVuY29kZXIuY29kZWMpLCB7fSk7CiAgIGVuY29kZXJfY29uZmlnLm51bWJlcl9v
Zl9zdHJlYW1zID0gbnVtX3N0cmVhbXM7CiAgIGVuY29kZXJfY29uZmlnLnNpbXVsY2FzdF9sYXll
cnMgPSBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4obnVtX3N0cmVhbXMpOworICBlbmNvZGVyX2Nv
bmZpZy5taW5fdHJhbnNtaXRfYml0cmF0ZV9icHMgPSBjb25maWcuc3RyZWFtLnBhZF90b19yYXRl
LmJwcygpOwogCiAgIHN0ZDo6c3RyaW5nIGNyaWNrZXRfY29kZWMgPSBDb2RlY1R5cGVUb0NvZGVj
TmFtZShjb25maWcuZW5jb2Rlci5jb2RlYyk7CiAgIGlmICghY3JpY2tldF9jb2RlYy5lbXB0eSgp
KSB7CkBAIC0xNTMsNiArMTYzLDEyIEBAIFZpZGVvRW5jb2RlckNvbmZpZyBDcmVhdGVWaWRlb0Vu
Y29kZXJDb25maWcoVmlkZW9TdHJlYW1Db25maWcgY29uZmlnKSB7CiAgIH0KICAgZW5jb2Rlcl9j
b25maWcuZW5jb2Rlcl9zcGVjaWZpY19zZXR0aW5ncyA9CiAgICAgICBDcmVhdGVFbmNvZGVyU3Bl
Y2lmaWNTZXR0aW5ncyhjb25maWcpOworICBpZiAoY29uZmlnLmVuY29kZXIubWF4X2ZyYW1lcmF0
ZSkgeworICAgIGZvciAoYXV0byYgbGF5ZXIgOiBlbmNvZGVyX2NvbmZpZy5zaW11bGNhc3RfbGF5
ZXJzKSB7CisgICAgICBsYXllci5tYXhfZnJhbWVyYXRlID0gKmNvbmZpZy5lbmNvZGVyLm1heF9m
cmFtZXJhdGU7CisgICAgfQorICB9CisKICAgcmV0dXJuIGVuY29kZXJfY29uZmlnOwogfQogfSAg
Ly8gbmFtZXNwYWNlCkBAIC0xOTMsMTEgKzIwOSwxMyBAQCBTZW5kVmlkZW9TdHJlYW06OlNlbmRW
aWRlb1N0cmVhbShDYWxsQ2xpZW50KiBzZW5kZXIsCiAgICAgY2FzZSBFbmNvZGVyOjpJbXBsZW1l
bnRhdGlvbjo6a0Zha2U6CiAgICAgICBpZiAoY29uZmlnLmVuY29kZXIuY29kZWMgPT0gQ29kZWM6
OmtWaWRlb0NvZGVjR2VuZXJpYykgewogICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfID0KLSAgICAg
ICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uVmlkZW9FbmNvZGVyRmFjdG9yeT4oW3Ro
aXMsIGNvbmZpZ10oKSB7CisgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGdW5jdGlvblZp
ZGVvRW5jb2RlckZhY3Rvcnk+KFt0aGlzXSgpIHsKKyAgICAgICAgICAgICAgcnRjOjpDcml0U2Nv
cGUgY3MoJmNyaXRfKTsKICAgICAgICAgICAgICAgYXV0byBlbmNvZGVyID0KICAgICAgICAgICAg
ICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkZha2VFbmNvZGVyPihzZW5kZXJfLT5jbG9j
a18pOwotICAgICAgICAgICAgICBpZiAoY29uZmlnLmVuY29kZXIuZmFrZS5tYXhfcmF0ZS5Jc0Zp
bml0ZSgpKQotICAgICAgICAgICAgICAgIGVuY29kZXItPlNldE1heEJpdHJhdGUoY29uZmlnLmVu
Y29kZXIuZmFrZS5tYXhfcmF0ZS5rYnBzKCkpOworICAgICAgICAgICAgICBmYWtlX2VuY29kZXJz
Xy5wdXNoX2JhY2soZW5jb2Rlci5nZXQoKSk7CisgICAgICAgICAgICAgIGlmIChjb25maWdfLmVu
Y29kZXIuZmFrZS5tYXhfcmF0ZS5Jc0Zpbml0ZSgpKQorICAgICAgICAgICAgICAgIGVuY29kZXIt
PlNldE1heEJpdHJhdGUoY29uZmlnXy5lbmNvZGVyLmZha2UubWF4X3JhdGUua2JwcygpKTsKICAg
ICAgICAgICAgICAgcmV0dXJuIGVuY29kZXI7CiAgICAgICAgICAgICB9KTsKICAgICAgIH0gZWxz
ZSB7CkBAIC0yMTMsOSArMjMxLDE1IEBAIFNlbmRWaWRlb1N0cmVhbTo6U2VuZFZpZGVvU3RyZWFt
KENhbGxDbGllbnQqIHNlbmRlciwKICAgfQogICBSVENfQ0hFQ0soZW5jb2Rlcl9mYWN0b3J5Xyk7
CiAKKyAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8gPSBDcmVhdGVCdWlsdGluVmlkZW9CaXRy
YXRlQWxsb2NhdG9yRmFjdG9yeSgpOworICBSVENfQ0hFQ0soYml0cmF0ZV9hbGxvY2F0b3JfZmFj
dG9yeV8pOworCiAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnIHNlbmRfY29uZmlnID0KICAgICAg
IENyZWF0ZVZpZGVvU2VuZFN0cmVhbUNvbmZpZyhjb25maWcsIHNzcmNzXywgc2VuZF90cmFuc3Bv
cnQpOwogICBzZW5kX2NvbmZpZy5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9IGVu
Y29kZXJfZmFjdG9yeV8uZ2V0KCk7CisgIHNlbmRfY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5
Xy5nZXQoKTsKKwogICBWaWRlb0VuY29kZXJDb25maWcgZW5jb2Rlcl9jb25maWcgPSBDcmVhdGVW
aWRlb0VuY29kZXJDb25maWcoY29uZmlnKTsKIAogICBzZW5kX3N0cmVhbV8gPSBzZW5kZXJfLT5j
YWxsXy0+Q3JlYXRlVmlkZW9TZW5kU3RyZWFtKApAQCAtMjMyLDI5ICsyNTYsMzQgQEAgU2VuZFZp
ZGVvU3RyZWFtOjp+U2VuZFZpZGVvU3RyZWFtKCkgewogdm9pZCBTZW5kVmlkZW9TdHJlYW06OlN0
YXJ0KCkgewogICBzZW5kX3N0cmVhbV8tPlN0YXJ0KCk7CiAgIHZpZGVvX2NhcHR1cmVyXy0+U3Rh
cnQoKTsKKyAgc2VuZGVyXy0+Y2FsbF8tPlNpZ25hbENoYW5uZWxOZXR3b3JrU3RhdGUoTWVkaWFU
eXBlOjpWSURFTywga05ldHdvcmtVcCk7CiB9CiAKLWJvb2wgU2VuZFZpZGVvU3RyZWFtOjpUcnlE
ZWxpdmVyUGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVjZWl2ZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSkgewotICAvLyBS
ZW1vdmVzIGFkZGVkIG92ZXJoZWFkIGJlZm9yZSBkZWxpdmVyaW5nIFJUQ1AgcGFja2V0IHRvIHNl
bmRlci4KLSAgUlRDX0RDSEVDS19HRShwYWNrZXQuc2l6ZSgpLCBjb25maWdfLnN0cmVhbS5wYWNr
ZXRfb3ZlcmhlYWQuYnl0ZXMoKSk7Ci0gIHBhY2tldC5TZXRTaXplKHBhY2tldC5zaXplKCkgLSBj
b25maWdfLnN0cmVhbS5wYWNrZXRfb3ZlcmhlYWQuYnl0ZXMoKSk7Ci0gIHNlbmRlcl8tPkRlbGl2
ZXJQYWNrZXQoTWVkaWFUeXBlOjpWSURFTywgcGFja2V0LCBhdF90aW1lKTsKLSAgcmV0dXJuIHRy
dWU7Cit2b2lkIFNlbmRWaWRlb1N0cmVhbTo6VXBkYXRlQ29uZmlnKAorICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZChWaWRlb1N0cmVhbUNvbmZpZyopPiBtb2RpZmllcikgeworICBydGM6OkNyaXRTY29w
ZSBjcygmY3JpdF8pOworICBWaWRlb1N0cmVhbUNvbmZpZyBwcmlvcl9jb25maWcgPSBjb25maWdf
OworICBtb2RpZmllcigmY29uZmlnXyk7CisgIGlmIChwcmlvcl9jb25maWcuZW5jb2Rlci5mYWtl
Lm1heF9yYXRlICE9IGNvbmZpZ18uZW5jb2Rlci5mYWtlLm1heF9yYXRlKSB7CisgICAgZm9yIChh
dXRvKiBlbmNvZGVyIDogZmFrZV9lbmNvZGVyc18pIHsKKyAgICAgIGVuY29kZXItPlNldE1heEJp
dHJhdGUoY29uZmlnXy5lbmNvZGVyLmZha2UubWF4X3JhdGUua2JwcygpKTsKKyAgICB9CisgIH0K
KyAgLy8gVE9ETyhzcnRlKTogQWRkIG1vcmUgY29uZGl0aW9ucyB0aGF0IHNob3VsZCBjYXVzZSBy
ZWNvbmZpZ3VyYXRpb24uCisgIGlmIChwcmlvcl9jb25maWcuZW5jb2Rlci5tYXhfZnJhbWVyYXRl
ICE9IGNvbmZpZ18uZW5jb2Rlci5tYXhfZnJhbWVyYXRlKSB7CisgICAgVmlkZW9FbmNvZGVyQ29u
ZmlnIGVuY29kZXJfY29uZmlnID0gQ3JlYXRlVmlkZW9FbmNvZGVyQ29uZmlnKGNvbmZpZ18pOwor
ICAgIHNlbmRfc3RyZWFtXy0+UmVjb25maWd1cmVWaWRlb0VuY29kZXIoc3RkOjptb3ZlKGVuY29k
ZXJfY29uZmlnKSk7CisgIH0KKyAgaWYgKHByaW9yX2NvbmZpZy5zb3VyY2UuZnJhbWVyYXRlICE9
IGNvbmZpZ18uc291cmNlLmZyYW1lcmF0ZSkgeworICAgIFNldENhcHR1cmVGcmFtZXJhdGUoY29u
ZmlnXy5zb3VyY2UuZnJhbWVyYXRlKTsKKyAgfQogfQogCiB2b2lkIFNlbmRWaWRlb1N0cmVhbTo6
U2V0Q2FwdHVyZUZyYW1lcmF0ZShpbnQgZnJhbWVyYXRlKSB7CiAgIFJUQ19DSEVDSyhmcmFtZV9n
ZW5lcmF0b3JfKQogICAgICAgPDwgIkZyYW1lcmF0ZSBjaGFuZ2Ugb25seSBpbXBsZW1lbnRlZCBm
b3IgZ2VuZXJhdG9ycyI7CiAgIGZyYW1lX2dlbmVyYXRvcl8tPkNoYW5nZUZyYW1lcmF0ZShmcmFt
ZXJhdGUpOwotfQogCi12b2lkIFNlbmRWaWRlb1N0cmVhbTo6U2V0TWF4RnJhbWVyYXRlKGFic2w6
Om9wdGlvbmFsPGludD4gbWF4X2ZyYW1lcmF0ZSkgewotICBWaWRlb0VuY29kZXJDb25maWcgZW5j
b2Rlcl9jb25maWcgPSBDcmVhdGVWaWRlb0VuY29kZXJDb25maWcoY29uZmlnXyk7Ci0gIFJUQ19E
Q0hFQ0tfRVEoZW5jb2Rlcl9jb25maWcuc2ltdWxjYXN0X2xheWVycy5zaXplKCksIDEpOwotICBl
bmNvZGVyX2NvbmZpZy5zaW11bGNhc3RfbGF5ZXJzWzBdLm1heF9mcmFtZXJhdGUgPSBtYXhfZnJh
bWVyYXRlLnZhbHVlX29yKC0xKTsKLSAgc2VuZF9zdHJlYW1fLT5SZWNvbmZpZ3VyZVZpZGVvRW5j
b2RlcihzdGQ6Om1vdmUoZW5jb2Rlcl9jb25maWcpKTsKIH0KIAogVmlkZW9TZW5kU3RyZWFtOjpT
dGF0cyBTZW5kVmlkZW9TdHJlYW06OkdldFN0YXRzKCkgY29uc3QgewpAQCAtMjg0LDE1ICszMTMs
MTQgQEAgUmVjZWl2ZVZpZGVvU3RyZWFtOjpSZWNlaXZlVmlkZW9TdHJlYW0oQ2FsbENsaWVudCog
cmVjZWl2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kVmlk
ZW9TdHJlYW0qIHNlbmRfc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGNob3Nlbl9zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUcmFuc3BvcnQqIGZlZWRiYWNrX3RyYW5zcG9ydCkKLSAgICA6IHJlY2VpdmVy
XyhyZWNlaXZlciksCi0gICAgICBjb25maWdfKGNvbmZpZyksCi0gICAgICBkZWNvZGVyX2ZhY3Rv
cnlfKGFic2w6Om1ha2VfdW5pcXVlPEludGVybmFsRGVjb2RlckZhY3Rvcnk+KCkpIHsKKyAgICA6
IHJlY2VpdmVyXyhyZWNlaXZlciksIGNvbmZpZ18oY29uZmlnKSB7CiAgIHJlbmRlcmVyXyA9IGFi
c2w6Om1ha2VfdW5pcXVlPEZha2VWaWRlb1JlbmRlcmVyPigpOwogICBWaWRlb1JlY2VpdmVTdHJl
YW06OkNvbmZpZyByZWN2X2NvbmZpZyhmZWVkYmFja190cmFuc3BvcnQpOwogICByZWN2X2NvbmZp
Zy5ydHAucmVtYiA9ICFjb25maWcuc3RyZWFtLnBhY2tldF9mZWVkYmFjazsKICAgcmVjdl9jb25m
aWcucnRwLnRyYW5zcG9ydF9jYyA9IGNvbmZpZy5zdHJlYW0ucGFja2V0X2ZlZWRiYWNrOwogICBy
ZWN2X2NvbmZpZy5ydHAubG9jYWxfc3NyYyA9IENhbGxUZXN0OjprUmVjZWl2ZXJMb2NhbFZpZGVv
U3NyYzsKICAgcmVjdl9jb25maWcucnRwLmV4dGVuc2lvbnMgPSBHZXRWaWRlb1J0cEV4dGVuc2lv
bnMoY29uZmlnKTsKKyAgcmVjZWl2ZXJfLT5BZGRFeHRlbnNpb25zKHJlY3ZfY29uZmlnLnJ0cC5l
eHRlbnNpb25zKTsKICAgUlRDX0RDSEVDSyghY29uZmlnLnN0cmVhbS51c2VfcnR4IHx8CiAgICAg
ICAgICAgICAgY29uZmlnLnN0cmVhbS5uYWNrX2hpc3RvcnlfdGltZSA+IFRpbWVEZWx0YTo6WmVy
bygpKTsKICAgcmVjdl9jb25maWcucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgPSBjb25maWcuc3Ry
ZWFtLm5hY2tfaGlzdG9yeV90aW1lLm1zKCk7CkBAIC0zMDAsMTQgKzMyOCwyNCBAQCBSZWNlaXZl
VmlkZW9TdHJlYW06OlJlY2VpdmVWaWRlb1N0cmVhbShDYWxsQ2xpZW50KiByZWNlaXZlciwKICAg
cmVjdl9jb25maWcucmVuZGVyZXIgPSByZW5kZXJlcl8uZ2V0KCk7CiAgIGlmIChjb25maWcuc3Ry
ZWFtLnVzZV9ydHgpIHsKICAgICByZWN2X2NvbmZpZy5ydHAucnR4X3NzcmMgPSBzZW5kX3N0cmVh
bS0+cnR4X3NzcmNzX1tjaG9zZW5fc3RyZWFtXTsKKyAgICByZWNlaXZlci0+c3NyY19tZWRpYV90
eXBlc19bcmVjdl9jb25maWcucnRwLnJ0eF9zc3JjXSA9IE1lZGlhVHlwZTo6VklERU87CiAgICAg
cmVjdl9jb25maWcucnRwCiAgICAgICAgIC5ydHhfYXNzb2NpYXRlZF9wYXlsb2FkX3R5cGVzW0Nh
bGxUZXN0OjprU2VuZFJ0eFBheWxvYWRUeXBlXSA9CiAgICAgICAgIENvZGVjVHlwZVRvUGF5bG9h
ZFR5cGUoY29uZmlnLmVuY29kZXIuY29kZWMpOwogICB9CiAgIHJlY3ZfY29uZmlnLnJ0cC5yZW1v
dGVfc3NyYyA9IHNlbmRfc3RyZWFtLT5zc3Jjc19bY2hvc2VuX3N0cmVhbV07CisgIHJlY2VpdmVy
LT5zc3JjX21lZGlhX3R5cGVzX1tyZWN2X2NvbmZpZy5ydHAucmVtb3RlX3NzcmNdID0gTWVkaWFU
eXBlOjpWSURFTzsKKwogICBWaWRlb1JlY2VpdmVTdHJlYW06OkRlY29kZXIgZGVjb2RlciA9CiAg
ICAgICBDcmVhdGVNYXRjaGluZ0RlY29kZXIoQ29kZWNUeXBlVG9QYXlsb2FkVHlwZShjb25maWcu
ZW5jb2Rlci5jb2RlYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZWNUeXBlVG9Q
YXlsb2FkU3RyaW5nKGNvbmZpZy5lbmNvZGVyLmNvZGVjKSk7CisgIGlmIChjb25maWcuZW5jb2Rl
ci5jb2RlYyA9PQorICAgICAgVmlkZW9TdHJlYW1Db25maWc6OkVuY29kZXI6OkNvZGVjOjprVmlk
ZW9Db2RlY0dlbmVyaWMpIHsKKyAgICBkZWNvZGVyX2ZhY3RvcnlfID0gYWJzbDo6bWFrZV91bmlx
dWU8RnVuY3Rpb25WaWRlb0RlY29kZXJGYWN0b3J5PigKKyAgICAgICAgW10oKSB7IHJldHVybiBh
YnNsOjptYWtlX3VuaXF1ZTxGYWtlRGVjb2Rlcj4oKTsgfSk7CisgIH0gZWxzZSB7CisgICAgZGVj
b2Rlcl9mYWN0b3J5XyA9IGFic2w6Om1ha2VfdW5pcXVlPEludGVybmFsRGVjb2RlckZhY3Rvcnk+
KCk7CisgIH0KICAgZGVjb2Rlci5kZWNvZGVyX2ZhY3RvcnkgPSBkZWNvZGVyX2ZhY3RvcnlfLmdl
dCgpOwogICByZWN2X2NvbmZpZy5kZWNvZGVycy5wdXNoX2JhY2soZGVjb2Rlcik7CiAKQEAgLTMx
Niw2ICszNTQsNyBAQCBSZWNlaXZlVmlkZW9TdHJlYW06OlJlY2VpdmVWaWRlb1N0cmVhbShDYWxs
Q2xpZW50KiByZWNlaXZlciwKICAgICBGbGV4ZmVjUmVjZWl2ZVN0cmVhbTo6Q29uZmlnIGZsZXhm
ZWNfY29uZmlnKGZlZWRiYWNrX3RyYW5zcG9ydCk7CiAgICAgZmxleGZlY19jb25maWcucGF5bG9h
ZF90eXBlID0gQ2FsbFRlc3Q6OmtGbGV4ZmVjUGF5bG9hZFR5cGU7CiAgICAgZmxleGZlY19jb25m
aWcucmVtb3RlX3NzcmMgPSBDYWxsVGVzdDo6a0ZsZXhmZWNTZW5kU3NyYzsKKyAgICByZWNlaXZl
ci0+c3NyY19tZWRpYV90eXBlc19bZmxleGZlY19jb25maWcucmVtb3RlX3NzcmNdID0gTWVkaWFU
eXBlOjpWSURFTzsKICAgICBmbGV4ZmVjX2NvbmZpZy5wcm90ZWN0ZWRfbWVkaWFfc3NyY3MgPSBz
ZW5kX3N0cmVhbS0+cnR4X3NzcmNzXzsKICAgICBmbGV4ZmVjX2NvbmZpZy5sb2NhbF9zc3JjID0g
cmVjdl9jb25maWcucnRwLmxvY2FsX3NzcmM7CiAgICAgZmxlY2ZlY19zdHJlYW1fID0KQEAgLTMz
Nyw0NiArMzc2LDIzIEBAIFJlY2VpdmVWaWRlb1N0cmVhbTo6flJlY2VpdmVWaWRlb1N0cmVhbSgp
IHsKICAgICByZWNlaXZlcl8tPmNhbGxfLT5EZXN0cm95RmxleGZlY1JlY2VpdmVTdHJlYW0oZmxl
Y2ZlY19zdHJlYW1fKTsKIH0KIAotYm9vbCBSZWNlaXZlVmlkZW9TdHJlYW06OlRyeURlbGl2ZXJQ
YWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7Ci0gIFJUQ19E
Q0hFQ0tfR0UocGFja2V0LnNpemUoKSwgY29uZmlnXy5zdHJlYW0ucGFja2V0X292ZXJoZWFkLmJ5
dGVzKCkpOwotICBwYWNrZXQuU2V0U2l6ZShwYWNrZXQuc2l6ZSgpIC0gY29uZmlnXy5zdHJlYW0u
cGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwotICByZWNlaXZlcl8tPkRlbGl2ZXJQYWNrZXQoTWVk
aWFUeXBlOjpWSURFTywgcGFja2V0LCBhdF90aW1lKTsKLSAgcmV0dXJuIHRydWU7Cit2b2lkIFJl
Y2VpdmVWaWRlb1N0cmVhbTo6U3RhcnQoKSB7CisgIHJlY2VpdmVfc3RyZWFtXy0+U3RhcnQoKTsK
KyAgcmVjZWl2ZXJfLT5jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdvcmtTdGF0ZShNZWRpYVR5cGU6
OlZJREVPLCBrTmV0d29ya1VwKTsKIH0KIAogVmlkZW9TdHJlYW1QYWlyOjp+VmlkZW9TdHJlYW1Q
YWlyKCkgPSBkZWZhdWx0OwogCiBWaWRlb1N0cmVhbVBhaXI6OlZpZGVvU3RyZWFtUGFpcihDYWxs
Q2xpZW50KiBzZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZl
Y3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ2NF90IHNlbmRfcmVjZWl2ZXJfaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZXR1cm5fcmVjZWl2ZXJfaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWcp
CiAgICAgOiBjb25maWdfKGNvbmZpZyksCi0gICAgICBzZW5kX2xpbmtfKHNlbmRfbGluayksCi0g
ICAgICByZXR1cm5fbGlua18ocmV0dXJuX2xpbmspLAotICAgICAgc2VuZF90cmFuc3BvcnRfKHNl
bmRlciwKLSAgICAgICAgICAgICAgICAgICAgICBzZW5kX2xpbmsuZnJvbnQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICBzZW5kX3JlY2VpdmVyX2lkLAotICAgICAgICAgICAgICAgICAgICAgIGNv
bmZpZy5zdHJlYW0ucGFja2V0X292ZXJoZWFkKSwKLSAgICAgIHJldHVybl90cmFuc3BvcnRfKHJl
Y2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2xpbmsuZnJvbnQoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9yZWNlaXZlcl9pZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbmZpZy5zdHJlYW0ucGFja2V0X292ZXJoZWFkKSwKLSAgICAgIHNlbmRfc3Ry
ZWFtXyhzZW5kZXIsIGNvbmZpZywgJnNlbmRfdHJhbnNwb3J0XyksCisgICAgICBzZW5kX3N0cmVh
bV8oc2VuZGVyLCBjb25maWcsICZzZW5kZXItPnRyYW5zcG9ydF8pLAogICAgICAgcmVjZWl2ZV9z
dHJlYW1fKHJlY2VpdmVyLAogICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywKICAgICAgICAg
ICAgICAgICAgICAgICAmc2VuZF9zdHJlYW1fLAogICAgICAgICAgICAgICAgICAgICAgIC8qY2hv
c2VuX3N0cmVhbT0qLzAsCi0gICAgICAgICAgICAgICAgICAgICAgJnJldHVybl90cmFuc3BvcnRf
KSB7Ci0gIE5ldHdvcmtOb2RlOjpSb3V0ZShzZW5kX3RyYW5zcG9ydF8uUmVjZWl2ZXJJZCgpLCBz
ZW5kX2xpbmtfLAotICAgICAgICAgICAgICAgICAgICAgJnJlY2VpdmVfc3RyZWFtXyk7Ci0gIE5l
dHdvcmtOb2RlOjpSb3V0ZShyZXR1cm5fdHJhbnNwb3J0Xy5SZWNlaXZlcklkKCksIHJldHVybl9s
aW5rXywKLSAgICAgICAgICAgICAgICAgICAgICZzZW5kX3N0cmVhbV8pOwotfQorICAgICAgICAg
ICAgICAgICAgICAgICZyZWNlaXZlci0+dHJhbnNwb3J0Xykge30KIAogfSAgLy8gbmFtZXNwYWNl
IHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vdmlkZW9fc3RyZWFtLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlv
L3ZpZGVvX3N0cmVhbS5oCmluZGV4IGU2Njk2MTgzYTdlYmQ1MDNjZmVlMDUyN2U3OGNhYzA0OGVj
OWI2MDEuLmViZjljOTUxYjcwNjkyMzU5NjUxODA1ODA2OGRjNjRiZWJjM2JkMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFy
aW8vdmlkZW9fc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9zY2VuYXJpby92aWRlb19zdHJlYW0uaApAQCAtMTQsNiArMTQsNyBAQAog
I2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKKyNpbmNsdWRlICJ0ZXN0L2Zha2VfZW5jb2Rlci5oIgogI2luY2x1ZGUgInRlc3QvZnJhbWVf
Z2VuZXJhdG9yX2NhcHR1cmVyLmgiCiAjaW5jbHVkZSAidGVzdC9zY2VuYXJpby9jYWxsX2NsaWVu
dC5oIgogI2luY2x1ZGUgInRlc3Qvc2NlbmFyaW8vY29sdW1uX3ByaW50ZXIuaCIKQEAgLTI1LDE1
ICsyNiwxNSBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIC8vIFNlbmRW
aWRlb1N0cmVhbSBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGNoYW5naW5nIHBhcmFtZXRlcnMg
YW5kIHJldHJpZXZpbmcKIC8vIHN0YXRlcyBhdCBydW4gdGltZS4KLWNsYXNzIFNlbmRWaWRlb1N0
cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgeworY2xhc3MgU2VuZFZpZGVv
U3RyZWFtIHsKICBwdWJsaWM6CiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2VuZFZp
ZGVvU3RyZWFtKTsKICAgflNlbmRWaWRlb1N0cmVhbSgpOwogICB2b2lkIFNldENhcHR1cmVGcmFt
ZXJhdGUoaW50IGZyYW1lcmF0ZSk7Ci0gIHZvaWQgU2V0TWF4RnJhbWVyYXRlKGFic2w6Om9wdGlv
bmFsPGludD4gbWF4X2ZyYW1lcmF0ZSk7CiAgIFZpZGVvU2VuZFN0cmVhbTo6U3RhdHMgR2V0U3Rh
dHMoKSBjb25zdDsKICAgQ29sdW1uUHJpbnRlciBTdGF0c1ByaW50ZXIoKTsKICAgdm9pZCBTdGFy
dCgpOworICB2b2lkIFVwZGF0ZUNvbmZpZyhzdGQ6OmZ1bmN0aW9uPHZvaWQoVmlkZW9TdHJlYW1D
b25maWcqKT4gbW9kaWZpZXIpOwogCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFNjZW5hcmlv
OwpAQCAtNDMsMjUgKzQ0LDI4IEBAIGNsYXNzIFNlbmRWaWRlb1N0cmVhbSA6IHB1YmxpYyBOZXR3
b3JrUmVjZWl2ZXJJbnRlcmZhY2UgewogICBTZW5kVmlkZW9TdHJlYW0oQ2FsbENsaWVudCogc2Vu
ZGVyLAogICAgICAgICAgICAgICAgICAgVmlkZW9TdHJlYW1Db25maWcgY29uZmlnLAogICAgICAg
ICAgICAgICAgICAgVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCk7Ci0gIGJvb2wgVHJ5RGVsaXZl
clBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ2NF90IHJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0
YW1wIGF0X3RpbWUpIG92ZXJyaWRlOwogCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfOwog
ICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gc3NyY3NfOwogICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4g
cnR4X3NzcmNzXzsKICAgVmlkZW9TZW5kU3RyZWFtKiBzZW5kX3N0cmVhbV8gPSBudWxscHRyOwog
ICBDYWxsQ2xpZW50KiBjb25zdCBzZW5kZXJfOwotICBjb25zdCBWaWRlb1N0cmVhbUNvbmZpZyBj
b25maWdfOworICBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWdfIFJUQ19HVUFSREVEX0JZKGNyaXRf
KTsKICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IGVuY29kZXJfZmFjdG9y
eV87CisgIHN0ZDo6dmVjdG9yPHRlc3Q6OkZha2VFbmNvZGVyKj4gZmFrZV9lbmNvZGVyc18gUlRD
X0dVQVJERURfQlkoY3JpdF8pOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2Nh
dG9yRmFjdG9yeT4gYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV87CiAgIHN0ZDo6dW5pcXVlX3B0
cjxUZXN0VmlkZW9DYXB0dXJlcj4gdmlkZW9fY2FwdHVyZXJfOwogICBGcmFtZUdlbmVyYXRvckNh
cHR1cmVyKiBmcmFtZV9nZW5lcmF0b3JfID0gbnVsbHB0cjsKKyAgaW50IG5leHRfbG9jYWxfbmV0
d29ya19pZF8gPSAwOworICBpbnQgbmV4dF9yZW1vdGVfbmV0d29ya19pZF8gPSAwOwogfTsKIAog
Ly8gUmVjZWl2ZVZpZGVvU3RyZWFtIHJlcHJlc2VudHMgYSB2aWRlbyByZWNlaXZlci4gSXQgY2Fu
J3QgYmUgdXNlZCBkaXJlY3RseS4KLWNsYXNzIFJlY2VpdmVWaWRlb1N0cmVhbSA6IHB1YmxpYyBO
ZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgeworY2xhc3MgUmVjZWl2ZVZpZGVvU3RyZWFtIHsKICBw
dWJsaWM6CiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVjZWl2ZVZpZGVvU3RyZWFt
KTsKICAgflJlY2VpdmVWaWRlb1N0cmVhbSgpOworICB2b2lkIFN0YXJ0KCk7CiAKICBwcml2YXRl
OgogICBmcmllbmQgY2xhc3MgU2NlbmFyaW87CkBAIC03MSw5ICs3NSw3IEBAIGNsYXNzIFJlY2Vp
dmVWaWRlb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgewogICAgICAg
ICAgICAgICAgICAgICAgU2VuZFZpZGVvU3RyZWFtKiBzZW5kX3N0cmVhbSwKICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBjaG9zZW5fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgVHJh
bnNwb3J0KiBmZWVkYmFja190cmFuc3BvcnQpOwotICBib29sIFRyeURlbGl2ZXJQYWNrZXQocnRj
OjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50
NjRfdCByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1l
KSBvdmVycmlkZTsKKwogICBWaWRlb1JlY2VpdmVTdHJlYW0qIHJlY2VpdmVfc3RyZWFtXyA9IG51
bGxwdHI7CiAgIEZsZXhmZWNSZWNlaXZlU3RyZWFtKiBmbGVjZmVjX3N0cmVhbV8gPSBudWxscHRy
OwogICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRl
b0ZyYW1lPj4gcmVuZGVyZXJfOwpAQCAtOTUsMTggKzk3LDEwIEBAIGNsYXNzIFZpZGVvU3RyZWFt
UGFpciB7CiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFNjZW5hcmlvOwogICBWaWRlb1N0cmVh
bVBhaXIoQ2FsbENsaWVudCogc2VuZGVyLAotICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8
TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAgICAgICAgICAgICAgICB1aW50NjRfdCBzZW5k
X3JlY2VpdmVyX2lkLAogICAgICAgICAgICAgICAgICAgQ2FsbENsaWVudCogcmVjZWl2ZXIsCi0g
ICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rLAot
ICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmV0dXJuX3JlY2VpdmVyX2lkLAogICAgICAgICAg
ICAgICAgICAgVmlkZW9TdHJlYW1Db25maWcgY29uZmlnKTsKIAogICBjb25zdCBWaWRlb1N0cmVh
bUNvbmZpZyBjb25maWdfOwotICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGlua187
Ci0gIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmtfOwotICBOZXR3b3JrTm9k
ZVRyYW5zcG9ydCBzZW5kX3RyYW5zcG9ydF87Ci0gIE5ldHdvcmtOb2RlVHJhbnNwb3J0IHJldHVy
bl90cmFuc3BvcnRfOwogCiAgIFNlbmRWaWRlb1N0cmVhbSBzZW5kX3N0cmVhbV87CiAgIFJlY2Vp
dmVWaWRlb1N0cmVhbSByZWNlaXZlX3N0cmVhbV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NpbmdsZV90aHJlYWRlZF90YXNrX3F1
ZXVlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9z
aW5nbGVfdGhyZWFkZWRfdGFza19xdWV1ZS5jYwppbmRleCBhZDdhNTAzMjdiOTAwYmYyNTBhYjIz
MTM4MTQzN2VmNmM1MmE5Mjg4Li41YzM1YzJlNDNiMDkzOWY5MTZjMjc4NDMxNDE2ODRkYzI5ODVl
NDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3NpbmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2luZ2xlX3RocmVhZGVkX3Rhc2tfcXVl
dWUuY2MKQEAgLTMyLDEwICszMiw3IEBAIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGlu
Zzo6UXVldWVkVGFzazo6flF1ZXVlZFRhc2soKSA9IGRlZmF1bHQ7CiAKIFNpbmdsZVRocmVhZGVk
VGFza1F1ZXVlRm9yVGVzdGluZzo6U2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nKAog
ICAgIGNvbnN0IGNoYXIqIG5hbWUpCi0gICAgOiB0aHJlYWRfKFJ1biwgdGhpcywgbmFtZSksCi0g
ICAgICBydW5uaW5nXyh0cnVlKSwKLSAgICAgIG5leHRfdGFza19pZF8oMCksCi0gICAgICB3YWtl
X3VwXyhmYWxzZSwgZmFsc2UpIHsKKyAgICA6IHRocmVhZF8oUnVuLCB0aGlzLCBuYW1lKSwgcnVu
bmluZ18odHJ1ZSksIG5leHRfdGFza19pZF8oMCkgewogICB0aHJlYWRfLlN0YXJ0KCk7CiB9CiAK
QEAgLTgzLDcgKzgwLDcgQEAgU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nOjpQb3N0
RGVsYXllZFRhc2soVGFzayB0YXNrLAogfQogCiB2b2lkIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVl
Rm9yVGVzdGluZzo6U2VuZFRhc2soVGFzayB0YXNrKSB7Ci0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVl
LCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgUG9zdFRhc2soWyZ0YXNrLCAmZG9uZV0o
KSB7CiAgICAgdGFzaygpOwogICAgIGRvbmUuU2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NpbmdsZV90aHJlYWRlZF90YXNr
X3F1ZXVlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9zaW5nbGVfdGhyZWFkZWRfdGFza19xdWV1ZV91bml0dGVzdC5jYwppbmRleCAw
ODRmMGQ3ZThjYmI4MjEyY2ZlMjcxNjUzMjA2NmJjOTVjZDMxMGMzLi4wNDk2MTY1MGM3NjBlMTRh
YjJjYjQwNzg2OGJmYTJlZGVhZTAzNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NpbmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3Qvc2luZ2xlX3RocmVhZGVkX3Rhc2tfcXVldWVfdW5pdHRlc3QuY2MKQEAgLTM3LDcgKzM3
LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LCBFeGVjdXRl
c1Bvc3RlZFRhc2tzKSB7CiAgIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZyB0YXNr
X3F1ZXVlKCJ0YXNrX3F1ZXVlIik7CiAKICAgc3RkOjphdG9taWM8Ym9vbD4gZXhlY3V0ZWQoZmFs
c2UpOwotICBydGM6OkV2ZW50IGRvbmUodHJ1ZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7
CiAKICAgdGFza19xdWV1ZS5Qb3N0VGFzayhbJmV4ZWN1dGVkLCAmZG9uZV0oKSB7CiAgICAgZXhl
Y3V0ZWQuc3RvcmUodHJ1ZSk7CkBAIC02MCwxNCArNjAsMTQgQEAgVEVTVChTaW5nbGVUaHJlYWRl
ZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LAogCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxydGM6OkV2ZW50Pj4gZG9uZV9ldmVudHM7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga0Nv
dW50OyBpKyspIHsKLSAgICBkb25lX2V2ZW50cy5lbXBsYWNlX2JhY2soYWJzbDo6bWFrZV91bmlx
dWU8cnRjOjpFdmVudD4oZmFsc2UsIGZhbHNlKSk7CisgICAgZG9uZV9ldmVudHMuZW1wbGFjZV9i
YWNrKGFic2w6Om1ha2VfdW5pcXVlPHJ0Yzo6RXZlbnQ+KCkpOwogICB9CiAKICAgLy8gVG8gYXZv
aWQgdGhlIHRhc2tzIHdoaWNoIGNvbXByaXNlIHRoZSBhY3R1YWwgdGVzdCBmcm9tIHJ1bm5pbmcg
YmVmb3JlIHRoZXkKICAgLy8gaGF2ZSBhbGwgYmUgcG9zdGVkLCB3aGljaCBjb3VsZCByZXN1bHQg
aW4gb25seSBvbmUgdGFzayBldmVyIGJlaW5nIGluIHRoZQogICAvLyBxdWV1ZSBhdCBhbnkgZ2l2
ZW4gdGltZSwgcG9zdCBvbmUgd2FpdGluZyB0YXNrIHRoYXQgd291bGQgYmxvY2sgdGhlCiAgIC8v
IHRhc2stcXVldWUsIGFuZCB1bmJsb2NrIG9ubHkgYWZ0ZXIgYWxsIHRhc2tzIGhhdmUgYmVlbiBw
b3N0ZWQuCi0gIHJ0Yzo6RXZlbnQgcmVuZGV6dm91cyh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZl
bnQgcmVuZGV6dm91czsKICAgdGFza19xdWV1ZS5Qb3N0VGFzaygKICAgICAgIFsmcmVuZGV6dm91
c10oKSB7IEFTU0VSVF9UUlVFKHJlbmRlenZvdXMuV2FpdChrTWF4V2FpdFRpbWVNcykpOyB9KTsK
IApAQCAtOTUsNyArOTUsNyBAQCBURVNUKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGlu
Z1Rlc3QsIFBvc3RUb1Rhc2tRdWV1ZUZyb21Pd25UaHJlYWQpIHsKICAgU2luZ2xlVGhyZWFkZWRU
YXNrUXVldWVGb3JUZXN0aW5nIHRhc2tfcXVldWUoInRhc2tfcXVldWUiKTsKIAogICBzdGQ6OmF0
b21pYzxib29sPiBleGVjdXRlZChmYWxzZSk7Ci0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxz
ZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKIAogICBhdXRvIGludGVybmFsbHlfcG9zdGVkX3Rhc2sg
PSBbJmV4ZWN1dGVkLCAmZG9uZV0oKSB7CiAgICAgZXhlY3V0ZWQuc3RvcmUodHJ1ZSk7CkBAIC0x
MjQsNyArMTI0LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0
LCBUYXNrc0V4ZWN1dGVkSW5TZXF1ZW5jZSkgewogCiAgIC8vIFByZXZlbnQgdGhlIGNoYWluIGZy
b20gYmVpbmcgc2V0IGluIG1vdGlvbiBiZWZvcmUgd2UndmUgaGFkIHRpbWUgdG8KICAgLy8gc2No
ZWR1bGUgaXQgYWxsLCBsZXN0IHRoZSBxdWV1ZSBvbmx5IGNvbnRhaW4gb25lIHRhc2sgYXQgYSB0
aW1lLgotICBydGM6OkV2ZW50IHJlbmRlenZvdXModHJ1ZSwgZmFsc2UpOworICBydGM6OkV2ZW50
IHJlbmRlenZvdXM7CiAgIHRhc2tfcXVldWUuUG9zdFRhc2soCiAgICAgICBbJnJlbmRlenZvdXNd
KCkgeyBBU1NFUlRfVFJVRShyZW5kZXp2b3VzLldhaXQoa01heFdhaXRUaW1lTXMpKTsgfSk7CiAK
QEAgLTEzNiw3ICsxMzYsNyBAQCBURVNUKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGlu
Z1Rlc3QsIFRhc2tzRXhlY3V0ZWRJblNlcXVlbmNlKSB7CiAgIH0KIAogICAvLyBUaGUgdGVzdCB3
aWxsIHdhaXQgZm9yIHRoZSB0YXNrLXF1ZXVlIHRvIGZpbmlzaC4KLSAgcnRjOjpFdmVudCBkb25l
KHRydWUsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICB0YXNrX3F1ZXVlLlBvc3RUYXNr
KFsmZG9uZV0oKSB7IGRvbmUuU2V0KCk7IH0pOwogCiAgIHJlbmRlenZvdXMuU2V0KCk7ICAvLyBT
ZXQgdGhlIGNoYWluIGluIG1vdGlvbi4KQEAgLTE1MCw3ICsxNTAsNyBAQCBURVNUKFNpbmdsZVRo
cmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIEV4ZWN1dGVzUG9zdGVkRGVsYXllZFRhc2sp
IHsKICAgU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nIHRhc2tfcXVldWUoInRhc2tf
cXVldWUiKTsKIAogICBzdGQ6OmF0b21pYzxib29sPiBleGVjdXRlZChmYWxzZSk7Ci0gIHJ0Yzo6
RXZlbnQgZG9uZSh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKIAogICBjb25zdGV4
cHIgaW50NjRfdCBkZWxheV9tcyA9IDIwOwogICBzdGF0aWNfYXNzZXJ0KGRlbGF5X21zIDwga01h
eFdhaXRUaW1lTXMgLyAyLCAiRGVsYXkgdG9vIGxvbmcgZm9yIHRlc3RzLiIpOwpAQCAtMTc3LDcg
KzE3Nyw3IEBAIFRFU1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nVGVzdCwgRG9l
c05vdEV4ZWN1dGVEZWxheWVkVGFza1Rvb1Nvb24pIHsKICAgdGFza19xdWV1ZS5Qb3N0RGVsYXll
ZFRhc2soWyZleGVjdXRlZF0oKSB7IGV4ZWN1dGVkLnN0b3JlKHRydWUpOyB9LCBkZWxheV9tcyk7
CiAKICAgLy8gV2FpdCBsZXNzIHRoYW4gaXMgZW5vdWdoLCBtYWtlIHN1cmUgdGhlIHRhc2sgd2Fz
IG5vdCB5ZXQgZXhlY3V0ZWQuCi0gIHJ0Yzo6RXZlbnQgbm90X2RvbmUodHJ1ZSwgZmFsc2UpOwor
ICBydGM6OkV2ZW50IG5vdF9kb25lOwogICBBU1NFUlRfRkFMU0Uobm90X2RvbmUuV2FpdChkZWxh
eV9tcyAvIDIpKTsKICAgRVhQRUNUX0ZBTFNFKGV4ZWN1dGVkLmxvYWQoKSk7CiB9CkBAIC0xOTUs
NyArMTk1LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LAog
ICBzdGF0aWNfYXNzZXJ0KGVhcmxpZXJfZGVsYXlfbXMgKyBsYXRlcl9kZWxheV9tcyA8IGtNYXhX
YWl0VGltZU1zIC8gMiwKICAgICAgICAgICAgICAgICAiRGVsYXkgdG9vIGxvbmcgZm9yIHRlc3Rz
LiIpOwogCi0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9u
ZTsKIAogICBhdXRvIGVhcmxpZXJfdGFzayA9IFsmZWFybGllcl9leGVjdXRlZCwgJmxhdGVyX2V4
ZWN1dGVkXSgpIHsKICAgICBFWFBFQ1RfRkFMU0UobGF0ZXJfZXhlY3V0ZWQubG9hZCgpKTsKQEAg
LTIyOSw3ICsyMjksNyBAQCBURVNUKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rl
c3QsCiAgIHN0YXRpY19hc3NlcnQoZWFybGllcl9kZWxheV9tcyArIGxhdGVyX2RlbGF5X21zIDwg
a01heFdhaXRUaW1lTXMgLyAyLAogICAgICAgICAgICAgICAgICJEZWxheSB0b28gbG9uZyBmb3Ig
dGVzdHMuIik7CiAKLSAgcnRjOjpFdmVudCBkb25lKHRydWUsIGZhbHNlKTsKKyAgcnRjOjpFdmVu
dCBkb25lOwogCiAgIGF1dG8gZWFybGllcl90YXNrID0gWyZlYXJsaWVyX2V4ZWN1dGVkLCAmbGF0
ZXJfZXhlY3V0ZWRdKCkgewogICAgIEVYUEVDVF9GQUxTRShsYXRlcl9leGVjdXRlZC5sb2FkKCkp
OwpAQCAtMjUzLDExICsyNTMsMTEgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRl
c3RpbmdUZXN0LAogVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LCBF
eHRlcm5hbFRocmVhZENhbmNlbHNUYXNrKSB7CiAgIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9y
VGVzdGluZyB0YXNrX3F1ZXVlKCJ0YXNrX3F1ZXVlIik7CiAKLSAgcnRjOjpFdmVudCBkb25lKHRy
dWUsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogCiAgIC8vIFByZXZlbnQgdGhlIHRvLWJl
LWNhbmNlbGxlZCB0YXNrIGZyb20gYmVpbmcgZXhlY3V0ZWQgYmVmb3JlIHdlJ3ZlIGhhZAogICAv
LyB0aW1lIHRvIGNhbmNlbCBpdC4KLSAgcnRjOjpFdmVudCByZW5kZXp2b3VzKHRydWUsIGZhbHNl
KTsKKyAgcnRjOjpFdmVudCByZW5kZXp2b3VzOwogICB0YXNrX3F1ZXVlLlBvc3RUYXNrKAogICAg
ICAgWyZyZW5kZXp2b3VzXSgpIHsgQVNTRVJUX1RSVUUocmVuZGV6dm91cy5XYWl0KGtNYXhXYWl0
VGltZU1zKSk7IH0pOwogCkBAIC0yNzksMTAgKzI3OSwxMCBAQCBURVNUKFNpbmdsZVRocmVhZGVk
VGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIEV4dGVybmFsVGhyZWFkQ2FuY2Vsc1Rhc2spIHsKIFRF
U1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nVGVzdCwgSW50ZXJuYWxUaHJlYWRD
YW5jZWxzVGFzaykgewogICBTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmcgdGFza19x
dWV1ZSgidGFza19xdWV1ZSIpOwogCi0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxzZSk7Cisg
IHJ0Yzo6RXZlbnQgZG9uZTsKIAogICAvLyBQcmV2ZW50IHRoZSBjaGFpbiBmcm9tIGJlaW5nIHNl
dC1vZmYgYmVmb3JlIHdlJ3ZlIHNldCBldmVyeXRoaW5nIHVwLgotICBydGM6OkV2ZW50IHJlbmRl
enZvdXModHJ1ZSwgZmFsc2UpOworICBydGM6OkV2ZW50IHJlbmRlenZvdXM7CiAgIHRhc2tfcXVl
dWUuUG9zdFRhc2soCiAgICAgICBbJnJlbmRlenZvdXNdKCkgeyBBU1NFUlRfVFJVRShyZW5kZXp2
b3VzLldhaXQoa01heFdhaXRUaW1lTXMpKTsgfSk7CiAKQEAgLTMxNiw3ICszMTYsNyBAQCBURVNU
KFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIFNlbmRUYXNrKSB7CiAgIHRh
c2tfcXVldWUuU2VuZFRhc2soWyZleGVjdXRlZF0oKSB7CiAgICAgLy8gSW50ZW50aW9uYWxseSBk
ZWxheSwgc28gdGhhdCBpZiBTZW5kVGFzayBkaWRuJ3QgYmxvY2ssIHRoZSBzZW5kZXIgdGhyZWFk
CiAgICAgLy8gd291bGQgaGF2ZSB0aW1lIHRvIHJlYWQgfGV4ZWN1dGVkfC4KLSAgICBydGM6OkV2
ZW50IGRlbGF5KHRydWUsIGZhbHNlKTsKKyAgICBydGM6OkV2ZW50IGRlbGF5OwogICAgIEFTU0VS
VF9GQUxTRShkZWxheS5XYWl0KDEwMDApKTsKICAgICBleGVjdXRlZC5zdG9yZSh0cnVlKTsKICAg
fSk7CkBAIC0zMzUsNyArMzM1LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRl
c3RpbmdUZXN0LAogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRhc2tzOyBpKyspIHsKICAgICB0
YXNrX3F1ZXVlLT5Qb3N0VGFzayhbJmNvdW50ZXJdKCkgewogICAgICAgc3RkOjphdG9taWNfZmV0
Y2hfYWRkKCZjb3VudGVyLCBzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKTsKLSAgICAgIHJ0Yzo6RXZl
bnQgZGVsYXkodHJ1ZSwgZmFsc2UpOworICAgICAgcnRjOjpFdmVudCBkZWxheTsKICAgICAgIEFT
U0VSVF9GQUxTRShkZWxheS5XYWl0KDUwMCkpOwogICAgIH0pOwogICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RfbWFpbi5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9t
YWluLmNjCmluZGV4IGM4ZDBiMWI1ODRlNmE3NWM5NWYwNzZhNmRmNzVhN2MzMDllMDY1Y2YuLjFh
MzExZjYzYzI3OWNjOWI4ODI5ZGVjZmE5YjVjY2Q0MjkwMWFmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9tYWluLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9t
YWluLmNjCkBAIC04LDEyOSArOCwxNSBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKLSNpbmNsdWRlIDxmc3Ry
ZWFtPgorI2luY2x1ZGUgPG1lbW9yeT4KIAotI2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5o
IgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCi0jaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgotI2luY2x1ZGUgInRlc3Qv
ZmllbGRfdHJpYWwuaCIKLSNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCi0jaW5jbHVkZSAidGVzdC9n
dGVzdC5oIgotI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCi0jaW5jbHVk
ZSAidGVzdC90ZXN0c3VwcG9ydC9wZXJmX3Rlc3QuaCIKLQotI2lmIGRlZmluZWQoV0VCUlRDX1dJ
TikKLSNpbmNsdWRlICJydGNfYmFzZS93aW4zMnNvY2tldGluaXQuaCIKLSNlbmRpZgotCi0jaWYg
ZGVmaW5lZChXRUJSVENfSU9TKQotI2luY2x1ZGUgInRlc3QvaW9zL3Rlc3Rfc3VwcG9ydC5oIgot
Ci1ERUZJTkVfc3RyaW5nKE5TVHJlYXRVbmtub3duQXJndW1lbnRzQXNPcGVuLAotICAgICAgICAg
ICAgICAiIiwKLSAgICAgICAgICAgICAgIkludGVudGlvbmFsbHkgaWdub3JlZCBmbGFnIGludGVu
ZGVkIGZvciBpT1Mgc2ltdWxhdG9yLiIpOwotREVGSU5FX3N0cmluZyhBcHBsZVBlcnNpc3RlbmNl
SWdub3JlU3RhdGUsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiSW50ZW50aW9u
YWxseSBpZ25vcmVkIGZsYWcgaW50ZW5kZWQgZm9yIGlPUyBzaW11bGF0b3IuIik7Ci1ERUZJTkVf
Ym9vbCgKLSAgICBzYXZlX2NoYXJ0anNvbl9yZXN1bHQsCi0gICAgZmFsc2UsCi0gICAgIlN0b3Jl
IHRoZSBwZXJmIHJlc3VsdHMgaW4gRG9jdW1lbnRzL3BlcmZfcmVzdWx0Lmpzb24gaW4gdGhlIGZv
cm1hdCAiCi0gICAgImRlc2NyaWJlZCBieSAiCi0gICAgImh0dHBzOi8vZ2l0aHViLmNvbS9jYXRh
cHVsdC1wcm9qZWN0L2NhdGFwdWx0L2Jsb2IvbWFzdGVyL2Rhc2hib2FyZC9kb2NzLyIKLSAgICAi
ZGF0YS1mb3JtYXQubWQuIik7Ci0KLSNlbHNlCi0KLURFRklORV9zdHJpbmcoCi0gICAgaXNvbGF0
ZWRfc2NyaXB0X3Rlc3Rfb3V0cHV0LAotICAgICIiLAotICAgICJQYXRoIHRvIG91dHB1dCBhbiBl
bXB0eSBKU09OIGZpbGUgd2hpY2ggQ2hyb21pdW0gaW5mcmEgcmVxdWlyZXMuIik7Ci0KLURFRklO
RV9zdHJpbmcoCi0gICAgaXNvbGF0ZWRfc2NyaXB0X3Rlc3RfcGVyZl9vdXRwdXQsCi0gICAgIiIs
Ci0gICAgIlBhdGggd2hlcmUgdGhlIHBlcmYgcmVzdWx0cyBzaG91bGQgYmUgc3RvcmVkIGluIHRo
ZSBKU09OIGZvcm1hdCBkZXNjcmliZWQgIgotICAgICJieSAiCi0gICAgImh0dHBzOi8vZ2l0aHVi
LmNvbS9jYXRhcHVsdC1wcm9qZWN0L2NhdGFwdWx0L2Jsb2IvbWFzdGVyL2Rhc2hib2FyZC9kb2Nz
LyIKLSAgICAiZGF0YS1mb3JtYXQubWQuIik7Ci0KLSNlbmRpZgotCi1ERUZJTkVfYm9vbChsb2dz
LCBmYWxzZSwgInByaW50IGxvZ3MgdG8gc3RkZXJyIik7Ci0KLURFRklORV9zdHJpbmcoCi0gICAg
Zm9yY2VfZmllbGR0cmlhbHMsCi0gICAgIiIsCi0gICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4
cGVyaW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgotICAgICJFLmcu
IHJ1bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJs
ZS8iCi0gICAgIiB3aWxsIGFzc2lnbiB0aGUgZ3JvdXAgRW5hYmxlIHRvIGZpZWxkIHRyaWFsIFdl
YlJUQy1Gb29GZWF0dXJlLiIpOwotCi1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRo
aXMgbWVzc2FnZS4iKTsKKyNpbmNsdWRlICJ0ZXN0L3Rlc3RfbWFpbl9saWIuaCIKIAogaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVNb2Nr
KCZhcmdjLCBhcmd2KTsKLQotICAvLyBEZWZhdWx0IHRvIExTX0lORk8sIGV2ZW4gZm9yIHJlbGVh
c2UgYnVpbGRzIHRvIHByb3ZpZGUgYmV0dGVyIHRlc3QgbG9nZ2luZy4KLSAgLy8gVE9ETyhwYm9z
KTogQ29uc2lkZXIgYWRkaW5nIGEgY29tbWFuZC1saW5lIG92ZXJyaWRlLgotICBpZiAocnRjOjpM
b2dNZXNzYWdlOjpHZXRMb2dUb0RlYnVnKCkgPiBydGM6OkxTX0lORk8pCi0gICAgcnRjOjpMb2dN
ZXNzYWdlOjpMb2dUb0RlYnVnKHJ0Yzo6TFNfSU5GTyk7Ci0KLSAgaWYgKHJ0Yzo6RmxhZ0xpc3Q6
OlNldEZsYWdzRnJvbUNvbW1hbmRMaW5lKCZhcmdjLCBhcmd2LCBmYWxzZSkpIHsKLSAgICByZXR1
cm4gMTsKLSAgfQotICBpZiAoRkxBR19oZWxwKSB7Ci0gICAgcnRjOjpGbGFnTGlzdDo6UHJpbnQo
bnVsbHB0ciwgZmFsc2UpOwotICAgIHJldHVybiAwOworICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRj
OjpUZXN0TWFpbj4gbWFpbiA9IHdlYnJ0Yzo6VGVzdE1haW46OkNyZWF0ZSgpOworICBpbnQgZXJy
X2NvZGUgPSBtYWluLT5Jbml0KCZhcmdjLCBhcmd2KTsKKyAgaWYgKGVycl9jb2RlICE9IDApIHsK
KyAgICByZXR1cm4gZXJyX2NvZGU7CiAgIH0KLQotICB3ZWJydGM6OnRlc3Q6OlNldEV4ZWN1dGFi
bGVQYXRoKGFyZ3ZbMF0pOwotICB3ZWJydGM6OnRlc3Q6OlZhbGlkYXRlRmllbGRUcmlhbHNTdHJp
bmdPckRpZShGTEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsKLSAgLy8gSW5pdEZpZWxkVHJpYWxzRnJv
bVN0cmluZyBzdG9yZXMgdGhlIGNoYXIqLCBzbyB0aGUgY2hhciBhcnJheSBtdXN0IG91dGxpdmUK
LSAgLy8gdGhlIGFwcGxpY2F0aW9uLgotICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJbml0RmllbGRU
cmlhbHNGcm9tU3RyaW5nKEZMQUdfZm9yY2VfZmllbGR0cmlhbHMpOwotICB3ZWJydGM6Om1ldHJp
Y3M6OkVuYWJsZSgpOwotCi0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotICBydGM6OldpbnNvY2tJ
bml0aWFsaXplciB3aW5zb2NrX2luaXQ7Ci0jZW5kaWYKLQotICBydGM6OkxvZ01lc3NhZ2U6OlNl
dExvZ1RvU3RkZXJyKEZMQUdfbG9ncyk7Ci0KLSAgLy8gRW5zdXJlIHRoYXQgbWFpbiB0aHJlYWQg
Z2V0cyB3cmFwcGVkIGFzIGFuIHJ0Yzo6VGhyZWFkLgotICAvLyBUT0RPKGJ1Z3Mud2VicnQub3Jn
Lzk3MTQpOiBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gYXZvaWQgd3JhcHBpbmcgdGhlIG1haW4KLSAg
Ly8gdGhyZWFkLCBvciBsZWF2ZSBpdCB0byBpbmRpdmlkdWFsIHRlc3RzIHRoYXQgbmVlZCBpdC4g
QnV0IGFzIGxvbmcgYXMgd2UKLSAgLy8gaGF2ZSBhdXRvbWF0aWMgdGhyZWFkIHdyYXBwaW5nLCB3
ZSBuZWVkIHRoaXMgdG8gYXZvaWQgdGhhdCBzb21lIG90aGVyCi0gIC8vIHJhbmRvbSB0aHJlYWQg
KHdoaWNoIG9uZSBkZXBlbmRpbmcgb24gd2hpY2ggdGVzdHMgYXJlIHJ1bikgZ2V0cwotICAvLyBh
dXRvbWF0aWNhbGx5IHdyYXBwZWQuCi0gIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+
V3JhcEN1cnJlbnRUaHJlYWQoKTsKLSAgUlRDX0NIRUNLKHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCkp
OwotCi0jaWYgZGVmaW5lZChXRUJSVENfSU9TKQotCi0gIHJ0Yzo6dGVzdDo6SW5pdFRlc3RTdWl0
ZShSVU5fQUxMX1RFU1RTLCBhcmdjLCBhcmd2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
RkxBR19zYXZlX2NoYXJ0anNvbl9yZXN1bHQpOwotICBydGM6OnRlc3Q6OlJ1blRlc3RzRnJvbUlP
U0FwcCgpOwotCi0jZWxzZQotCi0gIGludCBleGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7Ci0K
LSAgc3RkOjpzdHJpbmcgY2hhcnRqc29uX3Jlc3VsdF9maWxlID0gRkxBR19pc29sYXRlZF9zY3Jp
cHRfdGVzdF9wZXJmX291dHB1dDsKLSAgaWYgKCFjaGFydGpzb25fcmVzdWx0X2ZpbGUuZW1wdHko
KSkgewotICAgIHdlYnJ0Yzo6dGVzdDo6V3JpdGVQZXJmUmVzdWx0cyhjaGFydGpzb25fcmVzdWx0
X2ZpbGUpOwotICB9Ci0KLSAgc3RkOjpzdHJpbmcgcmVzdWx0X2ZpbGVuYW1lID0gRkxBR19pc29s
YXRlZF9zY3JpcHRfdGVzdF9vdXRwdXQ7Ci0gIGlmICghcmVzdWx0X2ZpbGVuYW1lLmVtcHR5KCkp
IHsKLSAgICBzdGQ6Om9mc3RyZWFtIHJlc3VsdF9maWxlKHJlc3VsdF9maWxlbmFtZSk7Ci0gICAg
cmVzdWx0X2ZpbGUgPDwgIntcInZlcnNpb25cIjogM30iOwotICAgIHJlc3VsdF9maWxlLmNsb3Nl
KCk7Ci0gIH0KLQotICByZXR1cm4gZXhpdF9jb2RlOwotCi0jZW5kaWYKKyAgcmV0dXJuIG1haW4t
PlJ1bihhcmdjLCBhcmd2KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9tYWluX2xpYi5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9tYWluX2xpYi5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NTE0NGM5OGZjYjkzNDdhMDdkNjRmZTcxMTc4OTVmNjEzNWFiZTg1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90
ZXN0X21haW5fbGliLmNjCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogIENvcHlyaWdodCAoYykg
MjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8K
KworI2luY2x1ZGUgInRlc3QvdGVzdF9tYWluX2xpYi5oIgorCisjaW5jbHVkZSA8ZnN0cmVhbT4K
KyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9maWVsZF90cmlhbC5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRl
L21ldHJpY3MuaCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCisjaW5jbHVkZSAidGVz
dC9nbW9jay5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0L3Rlc3Rz
dXBwb3J0L2ZpbGV1dGlscy5oIgorI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvcGVyZl90ZXN0
LmgiCisKKyNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCisjaW5jbHVkZSAicnRjX2Jhc2Uvd2luMzJz
b2NrZXRpbml0LmgiCisjZW5kaWYKKworI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKKyNpbmNsdWRl
ICJ0ZXN0L2lvcy90ZXN0X3N1cHBvcnQuaCIKKworV0VCUlRDX0RFRklORV9zdHJpbmcoTlNUcmVh
dFVua25vd25Bcmd1bWVudHNBc09wZW4sCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAg
ICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbGx5IGlnbm9yZWQgZmxhZyBpbnRlbmRlZCBmb3Ig
aU9TIHNpbXVsYXRvci4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKEFwcGxlUGVyc2lzdGVuY2VJ
Z25vcmVTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAg
ICAgIkludGVudGlvbmFsbHkgaWdub3JlZCBmbGFnIGludGVuZGVkIGZvciBpT1Mgc2ltdWxhdG9y
LiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHNhdmVfY2hhcnRqc29uX3Jlc3VsdCwKKyAg
ICBmYWxzZSwKKyAgICAiU3RvcmUgdGhlIHBlcmYgcmVzdWx0cyBpbiBEb2N1bWVudHMvcGVyZl9y
ZXN1bHQuanNvbiBpbiB0aGUgZm9ybWF0ICIKKyAgICAiZGVzY3JpYmVkIGJ5ICIKKyAgICAiaHR0
cHM6Ly9naXRodWIuY29tL2NhdGFwdWx0LXByb2plY3QvY2F0YXB1bHQvYmxvYi9tYXN0ZXIvZGFz
aGJvYXJkL2RvY3MvIgorICAgICJkYXRhLWZvcm1hdC5tZC4iKTsKKworI2Vsc2UKKworV0VCUlRD
X0RFRklORV9zdHJpbmcoCisgICAgaXNvbGF0ZWRfc2NyaXB0X3Rlc3Rfb3V0cHV0LAorICAgICIi
LAorICAgICJQYXRoIHRvIG91dHB1dCBhbiBlbXB0eSBKU09OIGZpbGUgd2hpY2ggQ2hyb21pdW0g
aW5mcmEgcmVxdWlyZXMuIik7CisKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIGlzb2xhdGVk
X3NjcmlwdF90ZXN0X3BlcmZfb3V0cHV0LAorICAgICIiLAorICAgICJQYXRoIHdoZXJlIHRoZSBw
ZXJmIHJlc3VsdHMgc2hvdWxkIGJlIHN0b3JlZCBpbiB0aGUgSlNPTiBmb3JtYXQgZGVzY3JpYmVk
ICIKKyAgICAiYnkgIgorICAgICJodHRwczovL2dpdGh1Yi5jb20vY2F0YXB1bHQtcHJvamVjdC9j
YXRhcHVsdC9ibG9iL21hc3Rlci9kYXNoYm9hcmQvZG9jcy8iCisgICAgImRhdGEtZm9ybWF0Lm1k
LiIpOworCisjZW5kaWYKKworV0VCUlRDX0RFRklORV9ib29sKGxvZ3MsIGZhbHNlLCAicHJpbnQg
bG9ncyB0byBzdGRlcnIiKTsKKworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgZm9yY2VfZmll
bGR0cmlhbHMsCisgICAgIiIsCisgICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRh
bCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgorICAgICJFLmcuIHJ1bm5pbmcg
d2l0aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZS8iCisgICAg
IiB3aWxsIGFzc2lnbiB0aGUgZ3JvdXAgRW5hYmxlIHRvIGZpZWxkIHRyaWFsIFdlYlJUQy1Gb29G
ZWF0dXJlLiIpOworCitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlz
IG1lc3NhZ2UuIik7CisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1lc3BhY2UgeworCitjbGFz
cyBUZXN0TWFpbkltcGwgOiBwdWJsaWMgVGVzdE1haW4geworIHB1YmxpYzoKKyAgaW50IEluaXQo
aW50KiBhcmdjLCBjaGFyKiBhcmd2W10pIG92ZXJyaWRlIHsKKyAgICA6OnRlc3Rpbmc6OkluaXRH
b29nbGVNb2NrKGFyZ2MsIGFyZ3YpOworCisgICAgLy8gRGVmYXVsdCB0byBMU19JTkZPLCBldmVu
IGZvciByZWxlYXNlIGJ1aWxkcyB0byBwcm92aWRlIGJldHRlciB0ZXN0CisgICAgLy8gbG9nZ2lu
Zy4KKyAgICAvLyBUT0RPKHBib3MpOiBDb25zaWRlciBhZGRpbmcgYSBjb21tYW5kLWxpbmUgb3Zl
cnJpZGUuCisgICAgaWYgKHJ0Yzo6TG9nTWVzc2FnZTo6R2V0TG9nVG9EZWJ1ZygpID4gcnRjOjpM
U19JTkZPKQorICAgICAgcnRjOjpMb2dNZXNzYWdlOjpMb2dUb0RlYnVnKHJ0Yzo6TFNfSU5GTyk7
CisKKyAgICBpZiAocnRjOjpGbGFnTGlzdDo6U2V0RmxhZ3NGcm9tQ29tbWFuZExpbmUoYXJnYywg
YXJndiwgZmFsc2UpKSB7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKEZMQUdfaGVs
cCkgeworICAgICAgcnRjOjpGbGFnTGlzdDo6UHJpbnQobnVsbHB0ciwgZmFsc2UpOworICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTc5Mik6IHdl
IG5lZWQgdG8gcmVmZXJlbmNlIHNvbWV0aGluZyBmcm9tCisgICAgLy8gZmlsZXV0aWxzLmggc28g
dGhhdCBvdXIgZG93bnN0cmVhbSBoYWNrIHdoZXJlIHdlIHJlcGxhY2UgZmlsZXV0aWxzLmNjCisg
ICAgLy8gd29ya3MuIE90aGVyd2lzZSB0aGUgZG93bnN0cmVhbSBmbGFnIGltcGxlbWVudGF0aW9u
IHdpbGwgdGFrZSBvdmVyIGFuZAorICAgIC8vIGJvdGNoIHRoZSBmbGFnIGludHJvZHVjZWQgYnkg
dGhlIGhhY2suIFJlbW92ZSB0aGlzIGF3ZnVsIHRoaW5nIG9uY2UgdGhlCisgICAgLy8gZG93bnN0
cmVhbSBpbXBsZW1lbnRhdGlvbiBoYXMgYmVlbiBlbGltaW5hdGVkLgorICAgICh2b2lkKXdlYnJ0
Yzo6dGVzdDo6Sm9pbkZpbGVuYW1lKCJob3JyaWJsZSIsICJoYWNrIik7CisKKyAgICB3ZWJydGM6
OnRlc3Q6OlZhbGlkYXRlRmllbGRUcmlhbHNTdHJpbmdPckRpZShGTEFHX2ZvcmNlX2ZpZWxkdHJp
YWxzKTsKKyAgICAvLyBJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5nIHN0b3JlcyB0aGUgY2hhcios
IHNvIHRoZSBjaGFyIGFycmF5IG11c3QKKyAgICAvLyBvdXRsaXZlIHRoZSBhcHBsaWNhdGlvbi4K
KyAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5nKEZMQUdf
Zm9yY2VfZmllbGR0cmlhbHMpOworICAgIHdlYnJ0Yzo6bWV0cmljczo6RW5hYmxlKCk7CisKKyNp
ZiBkZWZpbmVkKFdFQlJUQ19XSU4pCisgICAgd2luc29ja19pbml0XyA9IGFic2w6Om1ha2VfdW5p
cXVlPHJ0Yzo6V2luc29ja0luaXRpYWxpemVyPigpOworI2VuZGlmCisKKyAgICBydGM6OkxvZ01l
c3NhZ2U6OlNldExvZ1RvU3RkZXJyKEZMQUdfbG9ncyk7CisKKyAgICAvLyBFbnN1cmUgdGhhdCBt
YWluIHRocmVhZCBnZXRzIHdyYXBwZWQgYXMgYW4gcnRjOjpUaHJlYWQuCisgICAgLy8gVE9ETyhi
dWdzLndlYnJ0Lm9yZy85NzE0KTogSXQgbWlnaHQgYmUgYmV0dGVyIHRvIGF2b2lkIHdyYXBwaW5n
IHRoZSBtYWluCisgICAgLy8gdGhyZWFkLCBvciBsZWF2ZSBpdCB0byBpbmRpdmlkdWFsIHRlc3Rz
IHRoYXQgbmVlZCBpdC4gQnV0IGFzIGxvbmcgYXMgd2UKKyAgICAvLyBoYXZlIGF1dG9tYXRpYyB0
aHJlYWQgd3JhcHBpbmcsIHdlIG5lZWQgdGhpcyB0byBhdm9pZCB0aGF0IHNvbWUgb3RoZXIKKyAg
ICAvLyByYW5kb20gdGhyZWFkICh3aGljaCBvbmUgZGVwZW5kaW5nIG9uIHdoaWNoIHRlc3RzIGFy
ZSBydW4pIGdldHMKKyAgICAvLyBhdXRvbWF0aWNhbGx5IHdyYXBwZWQuCisgICAgcnRjOjpUaHJl
YWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVudFRocmVhZCgpOworICAgIFJUQ19DSEVD
SyhydGM6OlRocmVhZDo6Q3VycmVudCgpKTsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIGludCBS
dW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgb3ZlcnJpZGUgeworI2lmIGRlZmluZWQoV0VCUlRD
X0lPUykKKyAgICBydGM6OnRlc3Q6OkluaXRUZXN0U3VpdGUoUlVOX0FMTF9URVNUUywgYXJnYywg
YXJndiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxBR19zYXZlX2NoYXJ0anNvbl9y
ZXN1bHQpOworICAgIHJ0Yzo6dGVzdDo6UnVuVGVzdHNGcm9tSU9TQXBwKCk7CisgICAgcmV0dXJu
IDA7CisjZWxzZQorICAgIGludCBleGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7CisKKyAgICBz
dGQ6OnN0cmluZyBjaGFydGpzb25fcmVzdWx0X2ZpbGUgPSBGTEFHX2lzb2xhdGVkX3NjcmlwdF90
ZXN0X3BlcmZfb3V0cHV0OworICAgIGlmICghY2hhcnRqc29uX3Jlc3VsdF9maWxlLmVtcHR5KCkp
IHsKKyAgICAgIHdlYnJ0Yzo6dGVzdDo6V3JpdGVQZXJmUmVzdWx0cyhjaGFydGpzb25fcmVzdWx0
X2ZpbGUpOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIHJlc3VsdF9maWxlbmFtZSA9IEZMQUdf
aXNvbGF0ZWRfc2NyaXB0X3Rlc3Rfb3V0cHV0OworICAgIGlmICghcmVzdWx0X2ZpbGVuYW1lLmVt
cHR5KCkpIHsKKyAgICAgIHN0ZDo6b2ZzdHJlYW0gcmVzdWx0X2ZpbGUocmVzdWx0X2ZpbGVuYW1l
KTsKKyAgICAgIHJlc3VsdF9maWxlIDw8ICJ7XCJ2ZXJzaW9uXCI6IDN9IjsKKyAgICAgIHJlc3Vs
dF9maWxlLmNsb3NlKCk7CisgICAgfQorCisjaWYgZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikg
fHwgZGVmaW5lZChMRUFLX1NBTklUSVpFUikgfHwgIFwKKyAgICBkZWZpbmVkKE1FTU9SWV9TQU5J
VElaRVIpIHx8IGRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikgfHwgXAorICAgIGRlZmluZWQoVU5E
RUZJTkVEX1NBTklUSVpFUikKKyAgICAvLyBXZSB3YW50IHRoZSB0ZXN0IGZsYWdnZWQgYXMgZmFp
bGVkIG9ubHkgZm9yIHNhbml0aXplciBkZWZlY3RzLAorICAgIC8vIGluIHdoaWNoIGNhc2UgdGhl
IHNhbml0aXplciB3aWxsIG92ZXJyaWRlIGV4aXQgY29kZSB3aXRoIDY2LgorICAgIHJldHVybiAw
OworI2VuZGlmCisKKyAgICByZXR1cm4gZXhpdF9jb2RlOworI2VuZGlmCisgIH0KKworICB+VGVz
dE1haW5JbXBsKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworCisgcHJpdmF0ZToKKyNpZiBkZWZpbmVk
KFdFQlJUQ19XSU4pCisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OldpbnNvY2tJbml0aWFsaXplcj4g
d2luc29ja19pbml0XzsKKyNlbmRpZgorfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK3N0ZDo6dW5p
cXVlX3B0cjxUZXN0TWFpbj4gVGVzdE1haW46OkNyZWF0ZSgpIHsKKyAgcmV0dXJuIGFic2w6Om1h
a2VfdW5pcXVlPFRlc3RNYWluSW1wbD4oKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC90ZXN0X21haW5fbGliLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L3Rlc3RfbWFpbl9saWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGRkNzY0YWUyNGQzZGZiODYz
ZjZlYzEzNGE0ZDY5M2U4ZGQwMzBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0X21haW5fbGliLmgKQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisjaWZuZGVmIFRFU1RfVEVTVF9NQUlOX0xJ
Ql9IXworI2RlZmluZSBURVNUX1RFU1RfTUFJTl9MSUJfSF8KKworI2luY2x1ZGUgPG1lbW9yeT4K
KworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIENsYXNzIHRvIGluaXRpYWxpemUgdGVzdCBlbnZp
cm9ubWVudCBhbmQgcnVuIHRlc3RzLgorY2xhc3MgVGVzdE1haW4geworIHB1YmxpYzoKKyAgdmly
dHVhbCB+VGVzdE1haW4oKSB7fQorCisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGVzdE1haW4+
IENyZWF0ZSgpOworCisgIC8vIEluaXRpYWxpemVzIHRlc3QgZW52aXJvbm1lbnQuIENsaWVudHMg
Y2FuIGFkZCB0aGVpciBvd24gaW5pdGlhbGl6YXRpb24KKyAgLy8gc3RlcHMgYWZ0ZXIgY2FsbCB0
byB0aGlzIG1ldGhvZCBhbmQgYmVmb3JlIHJ1bm5pbmcgdGVzdHMuCisgIC8vIFJldHVybnMgMCBp
ZiBpbml0aWFsaXphdGlvbiB3YXMgc3VjY2Vzc2Z1bCBhbmQgbm9uIDAgb3RoZXJ3aXNlLgorICB2
aXJ0dWFsIGludCBJbml0KGludCogYXJnYywgY2hhciogYXJndltdKSA9IDA7CisKKyAgLy8gUnVu
cyB0ZXN0IGVuZCByZXR1cm4gcmVzdWx0IGVycm9yIGNvZGUuIDAgLSBubyBlcnJvcnMuCisgIHZp
cnR1YWwgaW50IFJ1bihpbnQgYXJnYywgY2hhciogYXJndltdKSA9IDA7CisKKyBwcm90ZWN0ZWQ6
CisgIFRlc3RNYWluKCkgPSBkZWZhdWx0OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywor
CisjZW5kaWYgIC8vIFRFU1RfVEVTVF9NQUlOX0xJQl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRp
bHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rl
c3RzdXBwb3J0L2ZpbGV1dGlscy5jYwppbmRleCBjYjg4NDcyZTQyNWJmMmFmYzZhODk4ODY0Yzkz
MDljYmQ0ZWJiNTM1Li5hNzFkOGY4ZGI1N2Q1N2VlOTQwMzQxMTRkYjRiNjhlMDI4OGU2OGFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5jYwpAQCAtNTksMzUg
KzU5LDE3IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKKyNpbmNs
dWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlsc19vdmVycmlkZS5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIAotbmFtZXNwYWNlIHsKLQogI2lmIGRlZmluZWQo
V0VCUlRDX1dJTikKIGNvbnN0IGNoYXIqIGtQYXRoRGVsaW1pdGVyID0gIlxcIjsKICNlbHNlCiBj
b25zdCBjaGFyKiBrUGF0aERlbGltaXRlciA9ICIvIjsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChX
RUJSVENfQU5EUk9JRCkKLS8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgaW4gQ2hyb21lIGluZnJh
c3RydWN0dXJlLiBTZWUKLS8vIGJhc2UvdGVzdC90ZXN0X3N1cHBvcnRfYW5kcm9pZC5jYy4KLWNv
bnN0IGNoYXIqIGtBbmRyb2lkQ2hyb21pdW1UZXN0c1Jvb3QgPSAiL3NkY2FyZC9jaHJvbWl1bV90
ZXN0c19yb290LyI7Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKFdFQlJUQ19JT1MpCi1jb25zdCBj
aGFyKiBrUmVzb3VyY2VzRGlyTmFtZSA9ICJyZXNvdXJjZXMiOwotI2VuZGlmCi0KLWNoYXIgcmVs
YXRpdmVfZGlyX3BhdGhbRklMRU5BTUVfTUFYXTsKLWJvb2wgcmVsYXRpdmVfZGlyX3BhdGhfc2V0
ID0gZmFsc2U7Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1jb25zdCBjaGFyKiBrQ2Fubm90RmluZFBy
b2plY3RSb290RGlyID0gIkVSUk9SX0NBTk5PVF9GSU5EX1BST0pFQ1RfUk9PVF9ESVIiOwotCiBz
dGQ6OnN0cmluZyBEaXJOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSB7CiAgIGlmIChwYXRo
LmVtcHR5KCkpCiAgICAgcmV0dXJuICIiOwpAQCAtMTAxLDI3ICs4Myw2IEBAIHN0ZDo6c3RyaW5n
IERpck5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpIHsKICAgcmV0dXJuIHJlc3VsdC5zdWJz
dHIoMCwgcmVzdWx0LmZpbmRfbGFzdF9vZihrUGF0aERlbGltaXRlcikpOwogfQogCi12b2lkIFNl
dEV4ZWN1dGFibGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSB7Ci0gIHN0ZDo6c3RyaW5n
IHdvcmtpbmdfZGlyID0gV29ya2luZ0RpcigpOwotICBzdGQ6OnN0cmluZyB0ZW1wX3BhdGggPSBw
YXRoOwotCi0gIC8vIEhhbmRsZSBhYnNvbHV0ZSBwYXRoczsgY29udmVydCB0aGVtIHRvIHJlbGF0
aXZlIHBhdGhzIHRvIHRoZSB3b3JraW5nIGRpci4KLSAgaWYgKHBhdGguZmluZCh3b3JraW5nX2Rp
cikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICB0ZW1wX3BhdGggPSBwYXRoLnN1YnN0cih3
b3JraW5nX2Rpci5sZW5ndGgoKSArIDEpOwotICB9Ci0vLyBPbiBXaW5kb3dzLCB3aGVuIHRlc3Rz
IGFyZSBydW4gdW5kZXIgbWVtb3J5IHRvb2xzIGxpa2UgRHJNZW1vcnkgYW5kIFRTYW4sCi0vLyBz
bGFzaGVzIG9jY3VyIGluIHRoZSBwYXRoIGFzIGRpcmVjdG9yeSBzZXBhcmF0b3JzLiBNYWtlIHN1
cmUgd2UgcmVwbGFjZQotLy8gc3VjaCBjYXNlcyB3aXRoIGJhY2tzbGFzaGVzIGluIG9yZGVyIGZv
ciB0aGUgcGF0aHMgdG8gYmUgY29ycmVjdC4KLSNpZmRlZiBXSU4zMgotICBzdGQ6OnJlcGxhY2Uo
dGVtcF9wYXRoLmJlZ2luKCksIHRlbXBfcGF0aC5lbmQoKSwgJy8nLCAnXFwnKTsKLSNlbmRpZgot
Ci0gIC8vIFRyaW0gYXdheSB0aGUgZXhlY3V0YWJsZSBuYW1lOyBvbmx5IHN0b3JlIHRoZSByZWxh
dGl2ZSBkaXIgcGF0aC4KLSAgdGVtcF9wYXRoID0gRGlyTmFtZSh0ZW1wX3BhdGgpOwotICBzdHJu
Y3B5KHJlbGF0aXZlX2Rpcl9wYXRoLCB0ZW1wX3BhdGguY19zdHIoKSwgRklMRU5BTUVfTUFYKTsK
LSAgcmVsYXRpdmVfZGlyX3BhdGhfc2V0ID0gdHJ1ZTsKLX0KLQogYm9vbCBGaWxlRXhpc3RzKGNv
bnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpIHsKICAgc3RydWN0IHN0YXQgZmlsZV9pbmZvID0g
ezB9OwogICByZXR1cm4gc3RhdChmaWxlX25hbWUuY19zdHIoKSwgJmZpbGVfaW5mbykgPT0gMDsK
QEAgLTEzMyw2OSArOTQsMTIgQEAgYm9vbCBEaXJFeGlzdHMoY29uc3Qgc3RkOjpzdHJpbmcmIGRp
cmVjdG9yeV9uYW1lKSB7CiAgICAgICAgICBTX0lTRElSKGRpcmVjdG9yeV9pbmZvLnN0X21vZGUp
OwogfQogCi0vLyBGaW5kcyB0aGUgV2ViUlRDIHNyYyBkaXIuCi0vLyBUaGUgcmV0dXJuZWQgcGF0
aCBhbHdheXMgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IuCi1zdGQ6OnN0cmluZyBQcm9qZWN0
Um9vdFBhdGgoKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKLSAgcmV0dXJuIGtBbmRy
b2lkQ2hyb21pdW1UZXN0c1Jvb3Q7Ci0jZWxpZiBkZWZpbmVkIFdFQlJUQ19JT1MKLSAgcmV0dXJu
IElPU1Jvb3RQYXRoKCk7Ci0jZWxpZiBkZWZpbmVkKFdFQlJUQ19NQUMpCi0gIHN0ZDo6c3RyaW5n
IHBhdGg7Ci0gIEdldE5TRXhlY3V0YWJsZVBhdGgoJnBhdGgpOwotICBzdGQ6OnN0cmluZyBleGVf
ZGlyID0gRGlyTmFtZShwYXRoKTsKLSAgLy8gT24gTWFjLCB0ZXN0cyBleGVjdXRlIGluIG91dC9X
aGF0ZXZlciwgc28gc3JjIGlzIHR3byBsZXZlbHMgdXAgZXhjZXB0IGlmCi0gIC8vIHRoZSB0ZXN0
IGlzIGJ1bmRsZWQgKHdoaWNoIG91ciB0ZXN0cyBhcmUgbm90KSwgaW4gd2hpY2ggY2FzZSBpdCdz
IDUgbGV2ZWxzLgotICByZXR1cm4gRGlyTmFtZShEaXJOYW1lKGV4ZV9kaXIpKSArIGtQYXRoRGVs
aW1pdGVyOwotI2VsaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCi0gIGNoYXIgYnVmW1BBVEhfTUFY
XTsKLSAgc3NpemVfdCBjb3VudCA9IDo6cmVhZGxpbmsoIi9wcm9jL3NlbGYvZXhlIiwgYnVmLCBh
cnJheXNpemUoYnVmKSk7Ci0gIGlmIChjb3VudCA8PSAwKSB7Ci0gICAgUlRDX05PVFJFQUNIRUQo
KSA8PCAiVW5hYmxlIHRvIHJlc29sdmUgL3Byb2Mvc2VsZi9leGUuIjsKLSAgICByZXR1cm4ga0Nh
bm5vdEZpbmRQcm9qZWN0Um9vdERpcjsKLSAgfQotICAvLyBPbiBQT1NJWCwgdGVzdHMgZXhlY3V0
ZSBpbiBvdXQvV2hhdGV2ZXIsIHNvIHNyYyBpcyB0d28gbGV2ZWxzIHVwLgotICBzdGQ6OnN0cmlu
ZyBleGVfZGlyID0gRGlyTmFtZShzdGQ6OnN0cmluZyhidWYsIGNvdW50KSk7Ci0gIHJldHVybiBE
aXJOYW1lKERpck5hbWUoZXhlX2RpcikpICsga1BhdGhEZWxpbWl0ZXI7Ci0jZWxpZiBkZWZpbmVk
KFdFQlJUQ19XSU4pCi0gIHdjaGFyX3QgYnVmW01BWF9QQVRIXTsKLSAgYnVmWzBdID0gMDsKLSAg
aWYgKEdldE1vZHVsZUZpbGVOYW1lKE5VTEwsIGJ1ZiwgTUFYX1BBVEgpID09IDApCi0gICAgcmV0
dXJuIGtDYW5ub3RGaW5kUHJvamVjdFJvb3REaXI7Ci0KLSAgc3RkOjpzdHJpbmcgZXhlX3BhdGgg
PSBydGM6OlRvVXRmOChzdGQ6OndzdHJpbmcoYnVmKSk7Ci0gIHN0ZDo6c3RyaW5nIGV4ZV9kaXIg
PSBEaXJOYW1lKGV4ZV9wYXRoKTsKLSAgcmV0dXJuIERpck5hbWUoRGlyTmFtZShleGVfZGlyKSkg
KyBrUGF0aERlbGltaXRlcjsKLSNlbmRpZgotfQotCiBzdGQ6OnN0cmluZyBPdXRwdXRQYXRoKCkg
ewotI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKLSAgcmV0dXJuIElPU091dHB1dFBhdGgoKTsKLSNl
bGlmIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCi0gIHJldHVybiBrQW5kcm9pZENocm9taXVtVGVz
dHNSb290OwotI2Vsc2UKLSAgc3RkOjpzdHJpbmcgcGF0aCA9IFByb2plY3RSb290UGF0aCgpOwot
ICBSVENfRENIRUNLX05FKHBhdGgsIGtDYW5ub3RGaW5kUHJvamVjdFJvb3REaXIpOwotICBwYXRo
ICs9ICJvdXQiOwotICBpZiAoIUNyZWF0ZURpcihwYXRoKSkgewotICAgIHJldHVybiAiLi8iOwot
ICB9Ci0gIHJldHVybiBwYXRoICsga1BhdGhEZWxpbWl0ZXI7Ci0jZW5kaWYKKyAgcmV0dXJuIHdl
YnJ0Yzo6dGVzdDo6aW50ZXJuYWw6Ok91dHB1dFBhdGgoKTsKIH0KIAogc3RkOjpzdHJpbmcgV29y
a2luZ0RpcigpIHsKLSNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQotICByZXR1cm4ga0FuZHJv
aWRDaHJvbWl1bVRlc3RzUm9vdDsKLSNlbmRpZgotICBjaGFyIHBhdGhfYnVmZmVyW0ZJTEVOQU1F
X01BWF07Ci0gIGlmICghR0VUX0NVUlJFTlRfRElSKHBhdGhfYnVmZmVyLCBzaXplb2YocGF0aF9i
dWZmZXIpKSkgewotICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGdldCBjdXJyZW50IGRpcmVj
dG9yeSFcbiIpOwotICAgIHJldHVybiAiLi8iOwotICB9IGVsc2UgewotICAgIHJldHVybiBzdGQ6
OnN0cmluZyhwYXRoX2J1ZmZlcik7Ci0gIH0KKyAgcmV0dXJuIHdlYnJ0Yzo6dGVzdDo6aW50ZXJu
YWw6OldvcmtpbmdEaXIoKTsKIH0KIAogLy8gR2VuZXJhdGUgYSB0ZW1wb3JhcnkgZmlsZW5hbWUg
aW4gYSBzYWZlIHdheS4KQEAgLTMyMiwzMCArMjI2LDcgQEAgYm9vbCBSZW1vdmVGaWxlKGNvbnN0
IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpIHsKIAogc3RkOjpzdHJpbmcgUmVzb3VyY2VQYXRoKGNv
bnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBleHRlbnNpb24pIHsKLSNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCi0gIHJldHVy
biBJT1NSZXNvdXJjZVBhdGgobmFtZSwgZXh0ZW5zaW9uKTsKLSNlbHNlCi0gIHN0ZDo6c3RyaW5n
IHBsYXRmb3JtID0gIndpbiI7Ci0jaWZkZWYgV0VCUlRDX0xJTlVYCi0gIHBsYXRmb3JtID0gImxp
bnV4IjsKLSNlbmRpZiAgLy8gV0VCUlRDX0xJTlVYCi0jaWZkZWYgV0VCUlRDX01BQwotICBwbGF0
Zm9ybSA9ICJtYWMiOwotI2VuZGlmICAvLyBXRUJSVENfTUFDCi0jaWZkZWYgV0VCUlRDX0FORFJP
SUQKLSAgcGxhdGZvcm0gPSAiYW5kcm9pZCI7Ci0jZW5kaWYgIC8vIFdFQlJUQ19BTkRST0lECi0K
LSAgc3RkOjpzdHJpbmcgcmVzb3VyY2VzX3BhdGggPQotICAgICAgUHJvamVjdFJvb3RQYXRoKCkg
KyBrUmVzb3VyY2VzRGlyTmFtZSArIGtQYXRoRGVsaW1pdGVyOwotICBzdGQ6OnN0cmluZyByZXNv
dXJjZV9maWxlID0KLSAgICAgIHJlc291cmNlc19wYXRoICsgbmFtZSArICJfIiArIHBsYXRmb3Jt
ICsgIi4iICsgZXh0ZW5zaW9uOwotICBpZiAoRmlsZUV4aXN0cyhyZXNvdXJjZV9maWxlKSkgewot
ICAgIHJldHVybiByZXNvdXJjZV9maWxlOwotICB9Ci0gIC8vIEZhbGwgYmFjayBvbiBuYW1lIHdp
dGhvdXQgcGxhdGZvcm0uCi0gIHJldHVybiByZXNvdXJjZXNfcGF0aCArIG5hbWUgKyAiLiIgKyBl
eHRlbnNpb247Ci0jZW5kaWYgIC8vIGRlZmluZWQgKFdFQlJUQ19JT1MpCisgIHJldHVybiB3ZWJy
dGM6OnRlc3Q6OmludGVybmFsOjpSZXNvdXJjZVBhdGgobmFtZSwgZXh0ZW5zaW9uKTsKIH0KIAog
c3RkOjpzdHJpbmcgSm9pbkZpbGVuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXIsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRp
bHMuaAppbmRleCA1ZmYwMTk2MDBlZDU5ODFlY2ZlZjI1NDYxMTY5ZTk3NWQ0OTIyOTZhLi44YTE4
Njk4OGQ2MzgwODZkMTY0NDViZTIxZjVmZTE0YzFkYjU2N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1
dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgKQEAgLTI1LDYgKzI1LDkgQEAgbmFtZXNwYWNlIHRl
c3QgewogLy8gdG8gZmluZCB0aGUgcHJvamVjdCByb290LgogZXh0ZXJuIGNvbnN0IGNoYXIqIGtD
YW5ub3RGaW5kUHJvamVjdFJvb3REaXI7CiAKKy8vIFNsYXNoIG9yIGJhY2tzbGFzaCwgZGVwZW5k
aW5nIG9uIHBsYXRmb3JtLiBOVUwtdGVybWluYXRlZCBzdHJpbmcuCitleHRlcm4gY29uc3QgY2hh
cioga1BhdGhEZWxpbWl0ZXI7CisKIC8vIFJldHVybnMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhl
IG91dHB1dCBkaXJlY3Rvcnkgd2hlcmUgbG9nIGZpbGVzIGFuZCBvdGhlcgogLy8gdGVzdCBhcnRp
ZmFjdHMgc2hvdWxkIGJlIHB1dC4gVGhlIG91dHB1dCBkaXJlY3RvcnkgaXMgZ2VuZXJhbGx5IGEg
ZGlyZWN0b3J5CiAvLyBuYW1lZCAib3V0IiBhdCB0aGUgcHJvamVjdCByb290LiBUaGlzIHJvb3Qg
aXMgYXNzdW1lZCB0byBiZSB0d28gbGV2ZWxzIGFib3ZlCkBAIC01MSwxOCArNTQsOCBAQCBzdGQ6
OnN0cmluZyBUZW1wRmlsZW5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGRpciwgY29uc3Qgc3RkOjpz
dHJpbmcmIHByZWZpeCk7CiBzdGQ6OnN0cmluZyBHZW5lcmF0ZVRlbXBGaWxlbmFtZShjb25zdCBz
dGQ6OnN0cmluZyYgZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHByZWZpeCk7CiAKLS8vIFJldHVybnMgYSBwYXRoIHRvIGEgcmVzb3VyY2Ug
ZmlsZSBmb3IgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgcGxhdGZvcm0uCi0vLyBBZGFwdHMgdG8g
d2hhdCBmaWxlbmFtZXMgYXJlIGN1cnJlbnRseSBwcmVzZW50IGluIHRoZQotLy8gW3Byb2plY3Qt
cm9vdF0vcmVzb3VyY2VzLyBkaXIuCi0vLyBSZXR1cm5zIGFuIGFic29sdXRlIHBhdGggYWNjb3Jk
aW5nIHRvIHRoaXMgcHJpb3JpdHkgbGlzdCAodGhlIGRpcmVjdG9yeQotLy8gcGFydCBvZiB0aGUg
cGF0aCBpcyBsZWZ0IG91dCBmb3IgcmVhZGFiaWxpdHkpOgotLy8gMS4gW25hbWVdX1twbGF0Zm9y
bV1fW2FyY2hpdGVjdHVyZV0uW2V4dGVuc2lvbl0KLS8vIDIuIFtuYW1lXV9bcGxhdGZvcm1dLltl
eHRlbnNpb25dCi0vLyAzLiBbbmFtZV1fW2FyY2hpdGVjdHVyZV0uW2V4dGVuc2lvbl0KLS8vIDQu
IFtuYW1lXS5bZXh0ZW5zaW9uXQotLy8gV2hlcmUKLS8vICogcGxhdGZvcm0gaXMgZWl0aGVyIG9m
ICJ3aW4iLCAibWFjIiBvciAibGludXgiLgotLy8gKiBhcmNoaXRlY3R1cmUgaXMgZWl0aGVyIG9m
ICIzMiIgb3IgIjY0Ii4KKy8vIFJldHVybnMgYSBwYXRoIHRvIGEgcmVzb3VyY2UgZmlsZSBpbiBb
cHJvamVjdC1yb290XS9yZXNvdXJjZXMvIGRpci4KKy8vIFJldHVybnMgYW4gYWJzb2x1dGUgcGF0
aAogLy8KIC8vIEFyZ3VtZW50czoKIC8vICAgIG5hbWUgLSBOYW1lIG9mIHRoZSByZXNvdXJjZSBm
aWxlLiBJZiBhIHBsYWluIGZpbGVuYW1lIChubyBkaXJlY3RvcnkgcGF0aCkKQEAgLTExMCwxNSAr
MTAzLDYgQEAgc3RkOjpzdHJpbmcgRGlyTmFtZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCk7CiAv
LyBlbXB0eSBvciBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdC9pcyByZWFkYWJsZS4KIHNpemVf
dCBHZXRGaWxlU2l6ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpOwogCi0vLyBTZXRzIHRo
ZSBleGVjdXRhYmxlIHBhdGgsIGkuZS4gdGhlIHBhdGggdG8gdGhlIGV4ZWN1dGFibGUgdGhhdCBp
cyBiZWluZyB1c2VkCi0vLyB3aGVuIGxhdW5jaGluZyBpdC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBw
YXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeQotLy8gYnV0IGNhbiBhbHNvIGJl
IGFuIGFic29sdXRlIHBhdGguIFRoZSBpbnRlbnRpb24gd2l0aCB0aGlzIGZ1bmN0aW9uIGlzIHRv
IHBhc3MKLS8vIHRoZSBhcmd2WzBdIGJlaW5nIHNlbnQgaW50byB0aGUgbWFpbiBmdW5jdGlvbiB0
byBtYWtlIGl0IHBvc3NpYmxlIGZvcgotLy8gZmlsZXV0aWxzLmggdG8gZmluZCB0aGUgY29ycmVj
dCBwcm9qZWN0IHBhdGhzIGV2ZW4gd2hlbiB0aGUgd29ya2luZyBkaXJlY3RvcnkKLS8vIGlzIG91
dHNpZGUgdGhlIHByb2plY3QgdHJlZSAod2hpY2ggaGFwcGVucyBpbiBzb21lIGNhc2VzKS4KLS8v
IFRPRE8oYnVncy53ZWJydGMub3JnLzk3OTIpOiBEZXByZWNhdGVkIC0gZ29pbmcgYXdheSBzb29u
Lgotdm9pZCBTZXRFeGVjdXRhYmxlUGF0aChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aF90b19leGVj
dXRhYmxlKTsKLQogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlsc19vdmVy
cmlkZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ODQwNjljMTBkZDRmNjEwY2RiZWE5MDZhY2Y2MWFhMzIzYjJh
MGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuY2MKQEAgLTAsMCAr
MSwxNTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAidGVzdC90ZXN0c3Vw
cG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuaCIKKworI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKKyNp
bmNsdWRlIDxkaXJlY3QuaD4KKyNpbmNsdWRlIDx0Y2hhci5oPgorI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y29kZWN2dD4KKyNpbmNsdWRlIDxs
b2NhbGU+CisKKyNpbmNsdWRlICJTaGx3YXBpLmgiCisjaW5jbHVkZSAiV2luRGVmLmgiCisKKyNp
bmNsdWRlICJydGNfYmFzZS93aW4zMi5oIgorI2RlZmluZSBHRVRfQ1VSUkVOVF9ESVIgX2dldGN3
ZAorI2Vsc2UKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNkZWZp
bmUgR0VUX0NVUlJFTlRfRElSIGdldGN3ZAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFdFQlJUQ19J
T1MpCisjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9pb3NmaWxldXRpbHMuaCIKKyNlbmRpZgor
CisjaWYgZGVmaW5lZChXRUJSVENfTUFDKQorI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvbWFj
ZmlsZXV0aWxzLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworc3RkOjpzdHJpbmcgRGlyTmFtZShjb25zdCBzdGQ6
OnN0cmluZyYgcGF0aCk7Citib29sIENyZWF0ZURpcihjb25zdCBzdGQ6OnN0cmluZyYgZGlyZWN0
b3J5X25hbWUpOworCituYW1lc3BhY2UgaW50ZXJuYWwgeworCituYW1lc3BhY2UgeworI2lmIGRl
ZmluZWQoV0VCUlRDX1dJTikKK2NvbnN0IGNoYXIqIGtQYXRoRGVsaW1pdGVyID0gIlxcIjsKKyNl
bGlmICFkZWZpbmVkKFdFQlJUQ19JT1MpCitjb25zdCBjaGFyKiBrUGF0aERlbGltaXRlciA9ICIv
IjsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKKy8vIFRoaXMgaXMgYSBz
cGVjaWFsIGNhc2UgaW4gQ2hyb21lIGluZnJhc3RydWN0dXJlLiBTZWUKKy8vIGJhc2UvdGVzdC90
ZXN0X3N1cHBvcnRfYW5kcm9pZC5jYy4KK2NvbnN0IGNoYXIqIGtBbmRyb2lkQ2hyb21pdW1UZXN0
c1Jvb3QgPSAiL3NkY2FyZC9jaHJvbWl1bV90ZXN0c19yb290LyI7CisjZW5kaWYKKworI2lmICFk
ZWZpbmVkKFdFQlJUQ19JT1MpCitjb25zdCBjaGFyKiBrUmVzb3VyY2VzRGlyTmFtZSA9ICJyZXNv
dXJjZXMiOworI2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZQorCisvLyBGaW5kcyB0aGUgV2ViUlRD
IHNyYyBkaXIuCisvLyBUaGUgcmV0dXJuZWQgcGF0aCBhbHdheXMgZW5kcyB3aXRoIGEgcGF0aCBz
ZXBhcmF0b3IuCithYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gUHJvamVjdFJvb3RQYXRoKCkg
eworI2lmIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCisgIHJldHVybiBrQW5kcm9pZENocm9taXVt
VGVzdHNSb290OworI2VsaWYgZGVmaW5lZCBXRUJSVENfSU9TCisgIHJldHVybiBJT1NSb290UGF0
aCgpOworI2VsaWYgZGVmaW5lZChXRUJSVENfTUFDKQorICBzdGQ6OnN0cmluZyBwYXRoOworICBH
ZXROU0V4ZWN1dGFibGVQYXRoKCZwYXRoKTsKKyAgc3RkOjpzdHJpbmcgZXhlX2RpciA9IERpck5h
bWUocGF0aCk7CisgIC8vIE9uIE1hYywgdGVzdHMgZXhlY3V0ZSBpbiBvdXQvV2hhdGV2ZXIsIHNv
IHNyYyBpcyB0d28gbGV2ZWxzIHVwIGV4Y2VwdCBpZgorICAvLyB0aGUgdGVzdCBpcyBidW5kbGVk
ICh3aGljaCBvdXIgdGVzdHMgYXJlIG5vdCksIGluIHdoaWNoIGNhc2UgaXQncyA1IGxldmVscy4K
KyAgcmV0dXJuIERpck5hbWUoRGlyTmFtZShleGVfZGlyKSkgKyBrUGF0aERlbGltaXRlcjsKKyNl
bGlmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQorICBjaGFyIGJ1ZltQQVRIX01BWF07CisgIHNzaXpl
X3QgY291bnQgPSA6OnJlYWRsaW5rKCIvcHJvYy9zZWxmL2V4ZSIsIGJ1ZiwgYXJyYXlzaXplKGJ1
ZikpOworICBpZiAoY291bnQgPD0gMCkgeworICAgIFJUQ19OT1RSRUFDSEVEKCkgPDwgIlVuYWJs
ZSB0byByZXNvbHZlIC9wcm9jL3NlbGYvZXhlLiI7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7
CisgIH0KKyAgLy8gT24gUE9TSVgsIHRlc3RzIGV4ZWN1dGUgaW4gb3V0L1doYXRldmVyLCBzbyBz
cmMgaXMgdHdvIGxldmVscyB1cC4KKyAgc3RkOjpzdHJpbmcgZXhlX2RpciA9IERpck5hbWUoc3Rk
OjpzdHJpbmcoYnVmLCBjb3VudCkpOworICByZXR1cm4gRGlyTmFtZShEaXJOYW1lKGV4ZV9kaXIp
KSArIGtQYXRoRGVsaW1pdGVyOworI2VsaWYgZGVmaW5lZChXRUJSVENfV0lOKQorICB3Y2hhcl90
IGJ1ZltNQVhfUEFUSF07CisgIGJ1ZlswXSA9IDA7CisgIGlmIChHZXRNb2R1bGVGaWxlTmFtZShO
VUxMLCBidWYsIE1BWF9QQVRIKSA9PSAwKQorICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworCisg
IHN0ZDo6c3RyaW5nIGV4ZV9wYXRoID0gcnRjOjpUb1V0Zjgoc3RkOjp3c3RyaW5nKGJ1ZikpOwor
ICBzdGQ6OnN0cmluZyBleGVfZGlyID0gRGlyTmFtZShleGVfcGF0aCk7CisgIHJldHVybiBEaXJO
YW1lKERpck5hbWUoZXhlX2RpcikpICsga1BhdGhEZWxpbWl0ZXI7CisjZW5kaWYKK30KKworc3Rk
OjpzdHJpbmcgT3V0cHV0UGF0aCgpIHsKKyNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCisgIHJldHVy
biBJT1NPdXRwdXRQYXRoKCk7CisjZWxpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQorICByZXR1
cm4ga0FuZHJvaWRDaHJvbWl1bVRlc3RzUm9vdDsKKyNlbHNlCisgIGFic2w6Om9wdGlvbmFsPHN0
ZDo6c3RyaW5nPiBwYXRoX29wdCA9IFByb2plY3RSb290UGF0aCgpOworICBSVENfRENIRUNLKHBh
dGhfb3B0KTsKKyAgc3RkOjpzdHJpbmcgcGF0aCA9ICpwYXRoX29wdCArICJvdXQiOworICBpZiAo
IUNyZWF0ZURpcihwYXRoKSkgeworICAgIHJldHVybiAiLi8iOworICB9CisgIHJldHVybiBwYXRo
ICsga1BhdGhEZWxpbWl0ZXI7CisjZW5kaWYKK30KKworc3RkOjpzdHJpbmcgV29ya2luZ0Rpcigp
IHsKKyNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQorICByZXR1cm4ga0FuZHJvaWRDaHJvbWl1
bVRlc3RzUm9vdDsKKyNlbmRpZgorICBjaGFyIHBhdGhfYnVmZmVyW0ZJTEVOQU1FX01BWF07Cisg
IGlmICghR0VUX0NVUlJFTlRfRElSKHBhdGhfYnVmZmVyLCBzaXplb2YocGF0aF9idWZmZXIpKSkg
eworICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGdldCBjdXJyZW50IGRpcmVjdG9yeSFcbiIp
OworICAgIHJldHVybiAiLi8iOworICB9IGVsc2UgeworICAgIHJldHVybiBzdGQ6OnN0cmluZyhw
YXRoX2J1ZmZlcik7CisgIH0KK30KKworc3RkOjpzdHJpbmcgUmVzb3VyY2VQYXRoKGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBleHRlbnNpb24pIHsKKyNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCisgIHJldHVybiBJT1NS
ZXNvdXJjZVBhdGgobmFtZSwgZXh0ZW5zaW9uKTsKKyNlbHNlCisgIGFic2w6Om9wdGlvbmFsPHN0
ZDo6c3RyaW5nPiBwYXRoX29wdCA9IFByb2plY3RSb290UGF0aCgpOworICBSVENfRENIRUNLKHBh
dGhfb3B0KTsKKyAgc3RkOjpzdHJpbmcgcmVzb3VyY2VzX3BhdGggPSAqcGF0aF9vcHQgKyBrUmVz
b3VyY2VzRGlyTmFtZSArIGtQYXRoRGVsaW1pdGVyOworICByZXR1cm4gcmVzb3VyY2VzX3BhdGgg
KyBuYW1lICsgIi4iICsgZXh0ZW5zaW9uOworI2VuZGlmCit9CisKK30gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
dGVzdHN1cHBvcnQvZmlsZXV0aWxzX292ZXJyaWRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlsc19vdmVycmlkZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE0MWM3Njg2MDcxNmFkNzg5MmVkZGRiZDgzNTk5MzFjZjIwYjAyNmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlsc19vdmVycmlkZS5oCkBAIC0wLDAgKzEsNTcgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxz
dHJpbmc+CisKKyNpZm5kZWYgVEVTVF9URVNUU1VQUE9SVF9GSUxFVVRJTFNfT1ZFUlJJREVfSF8K
KyNkZWZpbmUgVEVTVF9URVNUU1VQUE9SVF9GSUxFVVRJTFNfT1ZFUlJJREVfSF8KKworbmFtZXNw
YWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisv
LyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHdoZXJl
IGxvZyBmaWxlcyBhbmQgb3RoZXIKKy8vIHRlc3QgYXJ0aWZhY3RzIHNob3VsZCBiZSBwdXQuIFRo
ZSBvdXRwdXQgZGlyZWN0b3J5IGlzIGdlbmVyYWxseSBhIGRpcmVjdG9yeQorLy8gbmFtZWQgIm91
dCIgYXQgdGhlIHByb2plY3Qgcm9vdC4gVGhpcyByb290IGlzIGFzc3VtZWQgdG8gYmUgdHdvIGxl
dmVscyBhYm92ZQorLy8gd2hlcmUgdGhlIHRlc3QgYmluYXJ5IGlzIGxvY2F0ZWQ7IHRoaXMgaXMg
YmVjYXVzZSB0ZXN0cyBleGVjdXRlIGluIGEgZGlyCisvLyBvdXQvV2hhdGV2ZXIgcmVsYXRpdmUg
dG8gdGhlIHByb2plY3Qgcm9vdC4gVGhpcyBjb252ZW50aW9uIGlzIGFsc28gZm9sbG93ZWQKKy8v
IGluIENocm9taXVtLgorLy8KKy8vIFRoZSBleGNlcHRpb24gaXMgQW5kcm9pZCB3aGVyZSB3ZSB1
c2UgL3NkY2FyZC8gaW5zdGVhZC4KKy8vCisvLyBJZiBzeW1ib2xpYyBsaW5rcyBvY2N1ciBpbiB0
aGUgcGF0aCB0aGV5IHdpbGwgYmUgcmVzb2x2ZWQgYW5kIHRoZSBhY3R1YWwKKy8vIGRpcmVjdG9y
eSB3aWxsIGJlIHJldHVybmVkLgorLy8KKy8vIFJldHVybnMgdGhlIHBhdGggV0lUSCBhIHRyYWls
aW5nIHBhdGggZGVsaW1pdGVyLiBJZiB0aGUgcHJvamVjdCByb290IGlzIG5vdAorLy8gZm91bmQs
IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5ICgiLi8iKSBpcyByZXR1cm5lZCBhcyBhIGZh
bGxiYWNrLgorc3RkOjpzdHJpbmcgT3V0cHV0UGF0aCgpOworCisvLyBHZXRzIHRoZSBjdXJyZW50
IHdvcmtpbmcgZGlyZWN0b3J5IGZvciB0aGUgZXhlY3V0aW5nIHByb2dyYW0uCisvLyBSZXR1cm5z
ICIuLyIgaWYgZm9yIHNvbWUgcmVhc29uIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBmaW5kIHRoZSB3
b3JraW5nCisvLyBkaXJlY3RvcnkuCitzdGQ6OnN0cmluZyBXb3JraW5nRGlyKCk7CisKKy8vIFJl
dHVybnMgYSBwYXRoIHRvIGEgcmVzb3VyY2UgZmlsZSBpbiBbcHJvamVjdC1yb290XS9yZXNvdXJj
ZXMvIGRpci4KKy8vIFJldHVybnMgYW4gYWJzb2x1dGUgcGF0aAorLy8KKy8vIEFyZ3VtZW50czoK
Ky8vICAgIG5hbWUgLSBOYW1lIG9mIHRoZSByZXNvdXJjZSBmaWxlLiBJZiBhIHBsYWluIGZpbGVu
YW1lIChubyBkaXJlY3RvcnkgcGF0aCkKKy8vICAgICAgICAgICBpcyBzdXBwbGllZCwgdGhlIGZp
bGUgaXMgYXNzdW1lZCB0byBiZSBsb2NhdGVkIGluIHJlc291cmNlcy8KKy8vICAgICAgICAgICBJ
ZiBhIGRpcmVjdG9yeSBwYXRoIGlzIHByZXBlbmRlZCB0byB0aGUgZmlsZW5hbWUsIGEgc3ViZGly
ZWN0b3J5CisvLyAgICAgICAgICAgaGllcmFyY2h5IHJlZmxlY3RpbmcgdGhhdCBwYXRoIGlzIGFz
c3VtZWQgdG8gYmUgcHJlc2VudC4KKy8vICAgIGV4dGVuc2lvbiAtIEZpbGUgZXh0ZW5zaW9uLCB3
aXRob3V0IHRoZSBkb3QsIGkuZS4gImJtcCIgb3IgInl1diIuCitzdGQ6OnN0cmluZyBSZXNvdXJj
ZVBhdGgoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHRlbnNp
b24pOworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gVEVTVF9URVNUU1VQUE9SVF9GSUxF
VVRJTFNfT1ZFUlJJREVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9y
dC9maWxldXRpbHNfdW5pdHRlc3QuY2MKaW5kZXggYzZkYzg2ZGViMjAwYTNjM2MwMmQyOGQxMDRl
MjY1MjY2ODcwOTgyYS4uZDM5ZjQ2ODAwNDE4ZGE3YzM3Njc2OGZhZDEyM2VlNzE5Njk2MDRiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC90ZXN0c3VwcG9ydC9maWxldXRpbHNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfdW5p
dHRlc3QuY2MKQEAgLTI0LDkgKzI0LDYgQEAKIAogI2lmZGVmIFdJTjMyCiAjZGVmaW5lIGNoZGly
IF9jaGRpcgotc3RhdGljIGNvbnN0IGNoYXIqIGtQYXRoRGVsaW1pdGVyID0gIlxcIjsKLSNlbHNl
Ci1zdGF0aWMgY29uc3QgY2hhcioga1BhdGhEZWxpbWl0ZXIgPSAiLyI7CiAjZW5kaWYKIAogdXNp
bmcgOjp0ZXN0aW5nOjpFbmRzV2l0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvanBlZ19mcmFtZV93cml0ZXIu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3Rz
dXBwb3J0L2pwZWdfZnJhbWVfd3JpdGVyLmNjCmluZGV4IDUzN2U4NWNmYTVlNTVmMTAwMjkxMTQ0
MzJhMjVlOTc3ZjY4YjVmOTguLjhiZjFlZTQ2MzBlMWYzYjg0YTdkYTQzZmQxNzFjOWQxYjEyNjM0
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvdGVzdHN1cHBvcnQvanBlZ19mcmFtZV93cml0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9qcGVnX2ZyYW1l
X3dyaXRlci5jYwpAQCAtMTAsNyArMTAsNiBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotI2lu
Y2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVk
ZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rl
c3RzdXBwb3J0L3Rlc3RfYXJ0aWZhY3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC90ZXN0X2FydGlmYWN0cy5jYwppbmRleCAw
ZjdlMGNkNGZmODY2MDZkMGI5YWIyY2NmYmNjYTM1MmEzOTBkN2VlLi45NDM4Y2VmYmM0ZmQ3ZTE4
NmJiYzIyZWZiN2RhYmNhMjg0OWE0NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L3Rlc3RfYXJ0aWZhY3RzLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVz
dHN1cHBvcnQvdGVzdF9hcnRpZmFjdHMuY2MKQEAgLTI0LDkgKzI0LDkgQEAgY29uc3Qgc3RkOjpz
dHJpbmcmIERlZmF1bHRBcnRpZmFjdFBhdGgoKSB7CiB9CiB9ICAvLyBuYW1lc3BhY2UKIAotREVG
SU5FX3N0cmluZyh0ZXN0X2FydGlmYWN0c19kaXIsCi0gICAgICAgICAgICAgIERlZmF1bHRBcnRp
ZmFjdFBhdGgoKS5jX3N0cigpLAotICAgICAgICAgICAgICAiVGhlIG91dHB1dCBmb2xkZXIgd2hl
cmUgdGVzdCBvdXRwdXQgc2hvdWxkIGJlIHNhdmVkLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmco
dGVzdF9hcnRpZmFjdHNfZGlyLAorICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdEFydGlmYWN0
UGF0aCgpLmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAiVGhlIG91dHB1dCBmb2xkZXIg
d2hlcmUgdGVzdCBvdXRwdXQgc2hvdWxkIGJlIHNhdmVkLiIpOwogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIG5hbWVzcGFjZSB0ZXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvdGVzdF9hcnRpZmFjdHNfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rl
c3RzdXBwb3J0L3Rlc3RfYXJ0aWZhY3RzX3VuaXR0ZXN0LmNjCmluZGV4IGM0MjNjZDkwZWFkYTkw
OGFmM2M5MmZmYTlkZTJlMWY4NjE5NmRkYjkuLmRmMDJkMjdjNjcyNWQ2MTY3MjI2ZWYyNDEwZjU3
MDQwNTEzYzM5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvdGVzdF9hcnRpZmFjdHNfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3Vw
cG9ydC90ZXN0X2FydGlmYWN0c191bml0dGVzdC5jYwpAQCAtMTYsMTIgKzE2LDExIEBACiAKICNp
bmNsdWRlICJydGNfYmFzZS9maWxlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZmxhZ3MuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9wYXRodXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9y
bV9maWxlLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3QvdGVzdHN1
cHBvcnQvZmlsZXV0aWxzLmgiCiAKLURFQ0xBUkVfc3RyaW5nKHRlc3RfYXJ0aWZhY3RzX2Rpcik7
CitXRUJSVENfREVDTEFSRV9zdHJpbmcodGVzdF9hcnRpZmFjdHNfZGlyKTsKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3ZjbV9jYXB0dXJlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC92Y21fY2FwdHVyZXIuaAppbmRl
eCA1OWRmNGM3MWUyYWE4NjNlMWJjZDg5ZjZmMDAxM2FmZjRhYjkzNDIwLi41ZjQ3MDdmOTExNTUx
ZjQ0OWNiOGNmNDJmNDZiNjQwMzYxODBmN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3ZjbV9jYXB0dXJlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdmNtX2NhcHR1cmVyLmgK
QEAgLTEyLDcgKzEyLDYgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KIAotI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9uX3Zp
ZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKICNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NhcHR1cmUvdmlkZW9fY2FwdHVyZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fs
c2VjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC92aWRlb19lbmNvZGVyX3Byb3h5X2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdmlkZW9fZW5jb2Rlcl9wcm94eV9m
YWN0b3J5LmgKaW5kZXggZTcyODljMDM5OWUyNjY3ZWU4ZjEzMjU2NjQ4ZDYwMzc1NWUzNDVmNC4u
OWU1ZWExMmNlMmJjYmI5MzgyZjMzNTM4MWI1NTliOTU3NDBkZDcyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC92aWRlb19lbmNvZGVy
X3Byb3h5X2ZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L3ZpZGVvX2VuY29kZXJfcHJveHlfZmFjdG9yeS5oCkBAIC03MSwyMyArNzEs
MTcgQEAgY2xhc3MgVmlkZW9FbmNvZGVyUHJveHlGYWN0b3J5IGZpbmFsIDogcHVibGljIFZpZGVv
RW5jb2RlckZhY3RvcnkgewogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4X3BheWxv
YWRfc2l6ZSkgb3ZlcnJpZGUgewogICAgICAgcmV0dXJuIGVuY29kZXJfLT5Jbml0RW5jb2RlKGNv
bmZpZywgbnVtYmVyX29mX2NvcmVzLCBtYXhfcGF5bG9hZF9zaXplKTsKICAgICB9Ci0gICAgVmlk
ZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qgb3Zl
cnJpZGUgewotICAgICAgcmV0dXJuIGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKLSAg
ICB9CiAgICAgaW50MzJfdCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgICAgICAg
IEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGUgewogICAgICAgcmV0dXJu
IGVuY29kZXJfLT5SZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soY2FsbGJhY2spOwogICAg
IH0KICAgICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZSB7IHJldHVybiBlbmNvZGVyXy0+UmVs
ZWFzZSgpOyB9Ci0gICAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNr
ZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlIHsKLSAgICAgIHJldHVybiBlbmNvZGVyXy0+
U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0X2xvc3MsIHJ0dCk7Ci0gICAgfQogICAgIGludDMy
X3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgcmF0ZV9h
bGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVy
YXRlKSBvdmVycmlkZSB7CiAgICAgICByZXR1cm4gZW5jb2Rlcl8tPlNldFJhdGVBbGxvY2F0aW9u
KHJhdGVfYWxsb2NhdGlvbiwgZnJhbWVyYXRlKTsKICAgICB9Ci0gICAgY29uc3QgY2hhciogSW1w
bGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgICAgcmV0dXJuIGVuY29kZXJf
LT5JbXBsZW1lbnRhdGlvbk5hbWUoKTsKKyAgICBWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIEdl
dEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgICAgcmV0dXJuIGVuY29kZXJfLT5H
ZXRFbmNvZGVySW5mbygpOwogICAgIH0KIAogICAgIFZpZGVvRW5jb2RlciogY29uc3QgZW5jb2Rl
cl87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3dpbi9ydW5fbG9vcF93aW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L3dpbi9ydW5fbG9vcF93aW4uY2MKaW5kZXggMjhkYzkzMzRlMDg2
ZmY1OTE5YzYzOWJkNjYwMjc1ZjU2ODUxYjllNC4uZWU5MzYzNThmYTZkMmJlMDNmYTc1OThiZDg0
ODcwYjQ3YjVmOTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC93aW4vcnVuX2xvb3Bfd2luLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvd2luL3J1bl9sb29wX3dpbi5jYwpAQCAt
MTgsMTUgKzE4LDE4IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIAot
dm9pZCBQcmVzc0VudGVyVG9Db250aW51ZSgpIHsKK3ZvaWQgUHJlc3NFbnRlclRvQ29udGludWUo
U2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nICZ0YXNrX3F1ZXVlKSB7CiAgIHB1dHMo
Ij4+IFByZXNzIEVOVEVSIHRvIGNvbnRpbnVlLi4uIik7CiAKLSAgTVNHIG1zZzsKLSAgQk9PTCBy
ZXQ7Ci0gIHdoaWxlICgocmV0ID0gR2V0TWVzc2FnZSgmbXNnLCBOVUxMLCAwLCAwKSkgIT0gMCkg
ewotICAgIGFzc2VydChyZXQgIT0gLTEpOwotICAgIFRyYW5zbGF0ZU1lc3NhZ2UoJm1zZyk7Ci0g
ICAgRGlzcGF0Y2hNZXNzYWdlKCZtc2cpOworICB3aGlsZSAoIV9rYmhpdCgpIHx8IF9nZXRjaCgp
ICE9ICdccicpIHsKKyAgICAvLyBEcml2ZSB0aGUgbWVzc2FnZSBsb29wIGZvciB0aGUgdGhyZWFk
IHJ1bm5pbmcgdGhlIHRhc2tfcXVldWUKKyAgICB0YXNrX3F1ZXVlLlNlbmRUYXNrKFsmXSgpIHsK
KyAgICAgIE1TRyBtc2c7CisgICAgICBpZiAoUGVla01lc3NhZ2UoJm1zZywgTlVMTCwgMCwgMCwg
UE1fUkVNT1ZFKSkgeworICAgICAgICBUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOworICAgICAgICBE
aXNwYXRjaE1lc3NhZ2UoJm1zZyk7CisgICAgICB9CisgICAgfSk7CiAgIH0KIH0KIH0gIC8vIG5h
bWVzcGFjZSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvYW5kcm9pZC9zdXBwcmVzc2lvbnMueG1sIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2FuZHJvaWQv
c3VwcHJlc3Npb25zLnhtbAppbmRleCA2N2U1YjQxNjUzMDJmZTgzYzFiZmVjY2E2ZWM4NmEyMzUy
MmRhMTlhLi40NTM3NWMyZmU3MWM4ZDM2MjZjY2Y5ZmQwMWU2MzA1ZDVlY2EzMjExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvYW5kcm9pZC9zdXBwcmVzc2lvbnMueG1sCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9hbmRyb2lkL3N1cHByZXNzaW9ucy54bWwK
QEAgLTIyLDcgKzIyLDEwIEBACiAKICAgPGlzc3VlIGlkPSJHb29nbGVBcHBJbmRleGluZ1dhcm5p
bmciIHNldmVyaXR5PSJpZ25vcmUiLz4KICAgPGlzc3VlIGlkPSJNaXNzaW5nUmVnaXN0ZXJlZCIg
c2V2ZXJpdHk9Imlnbm9yZSIvPgotCisgIDxpc3N1ZSBpZD0iTGludEVycm9yIj4KKyAgICA8IS0t
IFdlIG5vIGxvbmdlciBzdXBwbHkgY2xhc3MgZmlsZXMgdG8gbGludC4gLS0+CisgICAgPGlnbm9y
ZSByZWdleHA9Ik5vIGAuY2xhc3NgIGZpbGVzIHdlcmUgZm91bmQgaW4gcHJvamVjdCIvPgorICA8
L2lzc3VlPgogICA8IS0tIFRoZXNlIGFyZSBqdXN0IGZyb20gdGhlIGR1bW15IEFuZHJvaWRNYW5p
ZmVzdC54bWwgd2UgdXNlIGZvciBsaW50aW5nLgogICAgICAgIEl0J3MgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5IGFzIHRoaXMgZmlsZS4gLS0+CiAgIDxpc3N1ZSBpZD0iTWlzc2luZ0FwcGxpY2F0aW9u
SWNvbiIgc2V2ZXJpdHk9Imlnbm9yZSIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2F1dG9yb2xsZXIvcm9sbF9kZXBz
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2Vi
cnRjL2F1dG9yb2xsZXIvcm9sbF9kZXBzLnB5CmluZGV4IDk5OTljNmY2YWZiZjZkZjFkYTExMGQx
NTIwMzlmMmRhMjBjMzhkZjUuLmQzYThiZGJjYThmOWZiMjdmMmYxMTM0Zjg4ZGQwNTFkOWVlMWRl
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rvb2xzX3dlYnJ0Yy9hdXRvcm9sbGVyL3JvbGxfZGVwcy5weQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvYXV0b3JvbGxlci9yb2xs
X2RlcHMucHkKQEAgLTcwLDYgKzcwLDggQEAgQU5EUk9JRF9ERVBTX0VORCA9IHInPT09IEFORFJP
SURfREVQUyBHZW5lcmF0ZWQgQ29kZSBFbmQgPT09JwogIyBMb2NhdGlvbiBvZiBhdXRvbWljYWxs
eSBnYXRoZXJlZCBhbmRyb2lkIGRlcHMuCiBBTkRST0lEX0RFUFNfUEFUSCA9ICdzcmMvdGhpcmRf
cGFydHkvYW5kcm9pZF9kZXBzLycKIAorTk9USUZZX0VNQUlMID0gJ3dlYnJ0Yy10cm9vcGVyQGdy
b3RhdGlvbnMuYXBwc3BvdG1haWwuY29tJworCiAKIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpv
aW4oQ0hFQ0tPVVRfU1JDX0RJUiwgJ2J1aWxkJykpCiBpbXBvcnQgZmluZF9kZXBvdF90b29scwpA
QCAtMjU2LDggKzI1OCw5IEBAIGRlZiBCdWlsZERlcHNlbnRyeURpY3QoZGVwc19kaWN0KToKIAog
CiBkZWYgX0ZpbmRDaGFuZ2VkQ2lwZFBhY2thZ2VzKHBhdGgsIG9sZF9wa2dzLCBuZXdfcGtncyk6
Ci0gIGFzc2VydCAoe3BbJ3BhY2thZ2UnXSBmb3IgcCBpbiBvbGRfcGtnc30gPT0KLSAgICAgICAg
ICB7cFsncGFja2FnZSddIGZvciBwIGluIG5ld19wa2dzfSkKKyAgcGtnc19lcXVhbCA9ICh7cFsn
cGFja2FnZSddIGZvciBwIGluIG9sZF9wa2dzfSA9PQorICAgICAge3BbJ3BhY2thZ2UnXSBmb3Ig
cCBpbiBuZXdfcGtnc30pCisgIGFzc2VydCBwa2dzX2VxdWFsLCAnT2xkOiAlc1xuIE5ldzogJXMn
ICUgKG9sZF9wa2dzLCBuZXdfcGtncykKICAgZm9yIG9sZF9wa2cgaW4gb2xkX3BrZ3M6CiAgICAg
Zm9yIG5ld19wa2cgaW4gbmV3X3BrZ3M6CiAgICAgICBvbGRfdmVyc2lvbiA9IG9sZF9wa2dbJ3Zl
cnNpb24nXQpAQCAtNTkyLDEwICs1OTUsMTEgQEAgZGVmIF9VcGxvYWRDTChjb21taXRfcXVldWVf
bW9kZSk6CiAgICAgLSAxOiBSdW4gdHJ5Ym90cyBidXQgZG8gbm90IHN1Ym1pdCB0byBDUS4KICAg
ICAtIDA6IFNraXAgQ1EsIHVwbG9hZCBvbmx5LgogICAiIiIKLSAgY21kID0gWydnaXQnLCAnY2wn
LCAndXBsb2FkJywgJy0tZm9yY2UnLCAnLS1ieXBhc3MtaG9va3MnXQorICBjbWQgPSBbJ2dpdCcs
ICdjbCcsICd1cGxvYWQnLCAnLS1mb3JjZScsICctLWJ5cGFzcy1ob29rcycsICctLXNlbmQtbWFp
bCddCisgIGNtZC5leHRlbmQoWyctLWNjJywgTk9USUZZX0VNQUlMXSkKICAgaWYgY29tbWl0X3F1
ZXVlX21vZGUgPj0gMjoKICAgICBsb2dnaW5nLmluZm8oJ1NlbmRpbmcgdGhlIENMIHRvIHRoZSBD
US4uLicpCi0gICAgY21kLmV4dGVuZChbJy0tdXNlLWNvbW1pdC1xdWV1ZScsICctLXNlbmQtbWFp
bCddKQorICAgIGNtZC5leHRlbmQoWyctLXVzZS1jb21taXQtcXVldWUnXSkKICAgZWxpZiBjb21t
aXRfcXVldWVfbW9kZSA+PSAxOgogICAgIGxvZ2dpbmcuaW5mbygnU3RhcnRpbmcgQ1EgZHJ5IHJ1
bi4uLicpCiAgICAgY21kLmV4dGVuZChbJy0tY3EtZHJ5LXJ1biddKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2NvdmVy
YWdlL2dlbmVyYXRlX2NvdmVyYWdlX2NvbW1hbmQucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvY292ZXJhZ2UvZ2VuZXJhdGVfY292ZXJh
Z2VfY29tbWFuZC5weQppbmRleCBhNDAyZjM4ZGE3ZDQ1ODkzZGJhNzdkMzJhZGM4M2VhY2IzMTJk
MDczLi44NTY2NjY4MTZkZmYxNjU5ZDJmNjgxYTYyODA3ZjQ3NzI3OGMzZTkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMv
Y292ZXJhZ2UvZ2VuZXJhdGVfY292ZXJhZ2VfY29tbWFuZC5weQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvY292ZXJhZ2UvZ2VuZXJh
dGVfY292ZXJhZ2VfY29tbWFuZC5weQpAQCAtMjIsMTMgKzIyLDEzIEBAIFRFU1RTID0gWwogICAn
dmlkZW9fZW5naW5lX3Rlc3RzJywKICAgJ3Rvb2xzX3VuaXR0ZXN0cycsCiAgICd0ZXN0X3N1cHBv
cnRfdW5pdHRlc3RzJywKKyAgJ3Nsb3dfdGVzdHMnLAogICAnc3lzdGVtX3dyYXBwZXJzX3VuaXR0
ZXN0cycsCiAgICdydGNfdW5pdHRlc3RzJywKICAgJ3J0Y19zdGF0c191bml0dGVzdHMnLAogICAn
cnRjX3BjX3VuaXR0ZXN0cycsCiAgICdydGNfbWVkaWFfdW5pdHRlc3RzJywKICAgJ3BlZXJjb25u
ZWN0aW9uX3VuaXR0ZXN0cycsCi0gICdvcnRjX3VuaXR0ZXN0cycsCiAgICdtb2R1bGVzX3VuaXR0
ZXN0cycsCiAgICdtb2R1bGVzX3Rlc3RzJywKICAgJ2xvd19iYW5kd2lkdGhfYXVkaW9fdGVzdCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
b29sc193ZWJydGMvY292ZXJhZ2UvZ2VuZXJhdGVfaW9zX2NvdmVyYWdlX2NvbW1hbmQucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvY292
ZXJhZ2UvZ2VuZXJhdGVfaW9zX2NvdmVyYWdlX2NvbW1hbmQucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgxZWUy
YzYyYjBhNzVkMmU5YWNlOWMyYWZjOTVmZjZkYjYyYzhkNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9jb3Zl
cmFnZS9nZW5lcmF0ZV9pb3NfY292ZXJhZ2VfY29tbWFuZC5weQpAQCAtMCwwICsxLDE3NCBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorIyB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyMg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisjIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorCisiIiJHZW5lcmF0ZXMgY29tbWFuZC1saW5lIGluc3Ry
dWN0aW9ucyB0byBwcm9kdWNlIG9uZS10aW1lIGlPUyBjb3ZlcmFnZSB1c2luZworY292ZXJhZ2Uu
cHkuCisKK1RoaXMgc2NyaXB0IGlzIHVzYWJsZSBmb3IgYm90aCByZWFsIGRldmljZXMgYW5kIHNp
bXVsYXRvci4KK0J1dCBmb3IgcmVhbCBkZXZpY2VzIGFjdHVhbCBleGVjdXRpb24gc2hvdWxkIGJl
IGRvbmUgbWFudWFsbHkgZnJvbSBYY29kZQorYW5kIGNvdmVyYWdlLnByb2ZyYXcgZmlsZXMgc2hv
dWxkIGJlIGFsc28gY29waWVkIG1hbnVhbGx5IGZyb20gdGhlIGRldmljZS4KKworQWRkaXRpb25h
bCBwcmVyZXF1aXNpdGVzOgorCisxLiBYY29kZSAxMCsgd2l0aCBpUGhvbmUgU2ltdWxhdG9yIFNE
Sy4gQ2FuIGJlIGluc3RhbGxlZCBieSBjb21tYW5kOgorICAgJCBtYWNfdG9vbGNoYWluIGluc3Rh
bGwgLWtpbmQgaW9zIC14Y29kZS12ZXJzaW9uIDEwbDIzMm0gXAorICAgICAtb3V0cHV0LWRpciBi
dWlsZC9tYWNfZmlsZXMvWGNvZGUuYXBwCisKKzIuIEZvciBjb21wdXRpbmcgY292ZXJhZ2Ugb24g
cmVhbCBkZXZpY2UgeW91IHByb2JhYmx5IGFsc28gbmVlZCB0byBhcHBseQorZm9sbG93aW5nIHBh
dGNoIHRvIGNvZGVfY292ZXJhZ2UvY292ZXJhZ2UucHkgc2NyaXB0OgorCis9PT09PT09PT09IEJF
R0lOTklORyBPRiBQQVRDSCA9PT09PT09PT09CistLS0gYS9jb2RlX2NvdmVyYWdlL2NvdmVyYWdl
LnB5CisrKysgYi9jb2RlX2NvdmVyYWdlL2NvdmVyYWdlLnB5CitAQCAtNjkzLDggKzY5Myw3IEBA
IGRlZiBfQWRkQXJjaEFyZ3VtZW50Rm9ySU9TSWZOZWVkZWQoY21kX2xpc3QsIG51bV9hcmNocyk6
CisgICB0byB1c2UsIGFuZCBvbmUgYXJjaGl0ZWN0dXJlIG5lZWRzIHRvIGJlIHNwZWNpZmllZCBm
b3IgZWFjaCBiaW5hcnkuCisgICAiIiAiCitpZiBfSXNJT1MoKToKKy0gICAgY21kX2xpc3QuZXh0
ZW5kKFsnLWFyY2g9eDg2XzY0J10gKiBudW1fYXJjaHMpCisrICAgIGNtZF9saXN0LmV4dGVuZChb
Jy1hcmNoPWFybTY0J10gKiBudW1fYXJjaHMpCisKKworZGVmIF9HZXRCaW5hcnlQYXRoKGNvbW1h
bmQpOgorQEAgLTgzNiw4ICs4MzUsOCBAQCBkZWYgX0dldEJpbmFyeVBhdGhzRnJvbVRhcmdldHMo
dGFyZ2V0cywgYnVpbGRfZGlyKToKKyAgYmluYXJ5X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRf
ZGlyLCB0YXJnZXQpCisgIGlmIGNvdmVyYWdlX3V0aWxzLkdldEhvc3RQbGF0Zm9ybSgpID09ICd3
aW4nOgorICAgIGJpbmFyeV9wYXRoICs9ICcuZXhlJworKyAgICBlbGlmIGNvdmVyYWdlX3V0aWxz
LkdldEhvc3RQbGF0Zm9ybSgpID09ICdtYWMnOgorKyAgICAgIGJpbmFyeV9wYXRoICs9ICcuYXBw
LyVzJyAlIHRhcmdldAorCitpZiBvcy5wYXRoLmV4aXN0cyhiaW5hcnlfcGF0aCk6CisgIGJpbmFy
eV9wYXRocy5hcHBlbmQoYmluYXJ5X3BhdGgpCis9PT09PT09PT09IEVORElORyBPRiBQQVRDSCA9
PT09PT09PT09CisKKyIiIgorCitpbXBvcnQgc3lzCisKK0RJUkVDVE9SWSA9ICdvdXQvY292ZXJh
Z2UnCisKK1RFU1RTID0gWworICAnYXVkaW9fZGVjb2Rlcl91bml0dGVzdHMnLAorICAnY29tbW9u
X2F1ZGlvX3VuaXR0ZXN0cycsCisgICdjb21tb25fdmlkZW9fdW5pdHRlc3RzJywKKyAgJ21vZHVs
ZXNfdGVzdHMnLAorICAnbW9kdWxlc191bml0dGVzdHMnLAorICAncnRjX21lZGlhX3VuaXR0ZXN0
cycsCisgICdydGNfcGNfdW5pdHRlc3RzJywKKyAgJ3J0Y19zdGF0c191bml0dGVzdHMnLAorICAn
cnRjX3VuaXR0ZXN0cycsCisgICdzbG93X3Rlc3RzJywKKyAgJ3N5c3RlbV93cmFwcGVyc191bml0
dGVzdHMnLAorICAndGVzdF9zdXBwb3J0X3VuaXR0ZXN0cycsCisgICd0b29sc191bml0dGVzdHMn
LAorICAndmlkZW9fY2FwdHVyZV90ZXN0cycsCisgICd2aWRlb19lbmdpbmVfdGVzdHMnLAorICAn
d2VicnRjX25vbnBhcmFsbGVsX3Rlc3RzJywKK10KKworWENfVEVTVFMgPSBbCisgICdhcHBydGNt
b2JpbGVfdGVzdHMnLAorICAnc2RrX2ZyYW1ld29ya191bml0dGVzdHMnLAorICAnc2RrX3VuaXR0
ZXN0cycsCitdCisKKworZGVmIEZvcm1hdElvc3NpbVRlc3QodGVzdF9uYW1lLCBpc194Y3Rlc3Q9
RmFsc2UpOgorICBhcmdzID0gWyclcy8lcy5hcHAnICUgKERJUkVDVE9SWSwgdGVzdF9uYW1lKV0K
KyAgaWYgaXNfeGN0ZXN0OgorICAgIGFyZ3MgKz0gWyclcy8lc19tb2R1bGUueGN0ZXN0JyAlIChE
SVJFQ1RPUlksIHRlc3RfbmFtZSldCisKKyAgcmV0dXJuICctYyBcJyVzL2lvc3NpbSAlc1wnJyAl
IChESVJFQ1RPUlksICcgJy5qb2luKGFyZ3MpKQorCisKK2RlZiBHZXRHTkFyZ3MoaXNfc2ltdWxh
dG9yKToKKyAgdGFyZ2V0X2NwdSA9ICd4NjQnIGlmIGlzX3NpbXVsYXRvciBlbHNlICdhcm02NCcK
KyAgcmV0dXJuIChbXSArCisgICAgICAgICAgWyd0YXJnZXRfb3M9ImlvcyInXSArCisgICAgICAg
ICAgWyd0YXJnZXRfY3B1PSIlcyInICUgdGFyZ2V0X2NwdV0gKworICAgICAgICAgIFsndXNlX2Ns
YW5nX2NvdmVyYWdlPXRydWUnXSArCisgICAgICAgICAgWydpc19jb21wb25lbnRfYnVpbGQ9ZmFs
c2UnXSArCisgICAgICAgICAgWydkY2hlY2tfYWx3YXlzX29uPXRydWUnXSkKKworCitkZWYgR2Vu
ZXJhdGVJT1NTaW11bGF0b3JDb21tYW5kKCk6CisgIGduX2FyZ3Nfc3RyaW5nID0gJyAnLmpvaW4o
R2V0R05BcmdzKGlzX3NpbXVsYXRvcj1UcnVlKSkKKyAgZ25fY21kID0gWydnbicsICdnZW4nLCBE
SVJFQ1RPUlksICctLWFyZ3M9XCclc1wnJyAlIGduX2FyZ3Nfc3RyaW5nXQorCisgIGNvdmVyYWdl
X2NtZCA9ICgKKyAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJ3Rvb2xzL2NvZGVfY292ZXJhZ2UvY292
ZXJhZ2UucHknXSArCisgICAgICBbIiVzLmFwcCIgJSB0IGZvciB0IGluIFhDX1RFU1RTICsgVEVT
VFNdICsKKyAgICAgIFsnLWIgJXMnICUgRElSRUNUT1JZLCAnLW8gb3V0L3JlcG9ydCddICsKKyAg
ICAgIFsnLWk9XCcuKi9vdXQvLip8LiovdGhpcmRfcGFydHkvLip8Lip0ZXN0LipcJyddICsKKyAg
ICAgIFtGb3JtYXRJb3NzaW1UZXN0KHQsIGlzX3hjdGVzdD1UcnVlKSBmb3IgdCBpbiBYQ19URVNU
U10gKworICAgICAgW0Zvcm1hdElvc3NpbVRlc3QodCwgaXNfeGN0ZXN0PUZhbHNlKSBmb3IgdCBp
biBURVNUU10KKyAgKQorCisgIHByaW50ICdUbyBnZXQgY29kZSBjb3ZlcmFnZSB1c2luZyBpT1Mg
c2ltdWxhdG9yIGp1c3QgcnVuIGZvbGxvd2luZyBjb21tYW5kczonCisgIHByaW50ICcnCisgIHBy
aW50ICcgJy5qb2luKGduX2NtZCkKKyAgcHJpbnQgJycKKyAgcHJpbnQgJyAnLmpvaW4oY292ZXJh
Z2VfY21kKQorICByZXR1cm4gMAorCisKK2RlZiBHZW5lcmF0ZUlPU0RldmljZUNvbW1hbmQoKToK
KyAgZ25fYXJnc19zdHJpbmcgPSAnICcuam9pbihHZXRHTkFyZ3MoaXNfc2ltdWxhdG9yPUZhbHNl
KSkKKworICBjb3ZlcmFnZV9yZXBvcnRfY21kID0gKAorICAgICAgW3N5cy5leGVjdXRhYmxlLCAn
dG9vbHMvY29kZV9jb3ZlcmFnZS9jb3ZlcmFnZS5weSddICsKKyAgICAgIFsnJXMuYXBwJyAlIHQg
Zm9yIHQgaW4gVEVTVFNdICsKKyAgICAgIFsnLWIgJXMnICUgRElSRUNUT1JZXSArCisgICAgICBb
Jy1vIG91dC9yZXBvcnQnXSArCisgICAgICBbJy1wICVzL21lcmdlZC5wcm9mZGF0YScgJSBESVJF
Q1RPUlldICsKKyAgICAgIFsnLWk9XCcuKi9vdXQvLip8LiovdGhpcmRfcGFydHkvLip8Lip0ZXN0
LipcJyddCisgICkKKworICBwcmludCAnQ29tcHV0aW5nIGNvZGUgY292ZXJhZ2UgZm9yIHJlYWwg
aU9TIGRldmljZSBpcyBhIGxpdHRsZSBiaXQgdGVkaW91cy4nCisgIHByaW50ICcnCisgIHByaW50
ICdZb3Ugd2lsbCBuZWVkOicKKyAgcHJpbnQgJycKKyAgcHJpbnQgJzEuIEdlbmVyYXRlIHhjb2Rl
IHByb2plY3QgYW5kIG9wZW4gaXQgd2l0aCBYY29kZSAxMCs6JworICBwcmludCAnICBnbiBnZW4g
JXMgLS1pZGU9eGNvZGUgLS1hcmdzPVwnJXNcJycgJSAoRElSRUNUT1JZLCBnbl9hcmdzX3N0cmlu
ZykKKyAgcHJpbnQgJyAgb3BlbiAlcy9hbGwueGN3b3Jrc3BhY2UnICUgRElSRUNUT1JZCisgIHBy
aW50ICcnCisgIHByaW50ICcyLiBFeGVjdXRlIHRoZXNlIFJ1biB0YXJnZXRzIG1hbnVhbGx5IHdp
dGggWGNvZGUgUnVuIGJ1dHRvbiBhbmQgJworICBwcmludCAnbWFudWFsbHkgc2F2ZSBnZW5lcmF0
ZWQgY292ZXJhZ2UucHJvZnJhdyBmaWxlIHRvICVzOicgJSBESVJFQ1RPUlkKKyAgcHJpbnQgJ1xu
Jy5qb2luKCctICVzJyAlIHQgZm9yIHQgaW4gVEVTVFMpCisgIHByaW50ICcnCisgIHByaW50ICcz
LiBFeGVjdXRlIHRoZXNlIFRlc3QgdGFyZ2V0cyBtYW51YWxseSB3aXRoIFhjb2RlIFRlc3QgYnV0
dG9uIGFuZCAnCisgIHByaW50ICdtYW51YWxseSBzYXZlIGdlbmVyYXRlZCBjb3ZlcmFnZS5wcm9m
cmF3IGZpbGUgdG8gJXM6JyAlIERJUkVDVE9SWQorICBwcmludCAnXG4nLmpvaW4oJy0gJXMnICUg
dCBmb3IgdCBpbiBYQ19URVNUUykKKyAgcHJpbnQgJycKKyAgcHJpbnQgJzQuIE1lcmdlICoucHJv
ZnJhdyBmaWxlcyB0byAqLnByb2ZkYXRhIHVzaW5nIGxsdm0tcHJvZmRhdGEgdG9vbDonCisgIHBy
aW50ICgnICBidWlsZC9tYWNfZmlsZXMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9Ub29s
Y2hhaW5zLycgKworICAgICAgICAgJ1hjb2RlRGVmYXVsdC54Y3Rvb2xjaGFpbi91c3IvYmluL2xs
dm0tcHJvZmRhdGEgbWVyZ2UgJyArCisgICAgICAgICAnLW8gJXMvbWVyZ2VkLnByb2ZkYXRhICcg
JSBESVJFQ1RPUlkgKworICAgICAgICAgJy1zcGFyc2U9dHJ1ZSAlcy8qLnByb2ZyYXcnICUgRElS
RUNUT1JZKQorICBwcmludCAnJworICBwcmludCAnNS4gR2VuZXJhdGUgY292ZXJhZ2UgcmVwb3J0
OicKKyAgcHJpbnQgJyAgJyArICcgJy5qb2luKGNvdmVyYWdlX3JlcG9ydF9jbWQpCisgIHJldHVy
biAwCisKKworZGVmIE1haW4oKToKKyAgaWYgbGVuKHN5cy5hcmd2KSA8IDI6CisgICAgcHJpbnQg
J1BsZWFzZSBzcGVjaWZ5IHR5cGUgb2YgY292ZXJhZ2U6JworICAgIHByaW50ICcgICVzIHNpbXVs
YXRvcicgJSBzeXMuYXJndlswXQorICAgIHByaW50ICcgICVzIGRldmljZScgJSBzeXMuYXJndlsw
XQorICBlbGlmIHN5cy5hcmd2WzFdID09ICdzaW11bGF0b3InOgorICAgIEdlbmVyYXRlSU9TU2lt
dWxhdG9yQ29tbWFuZCgpCisgIGVsaWYgc3lzLmFyZ3ZbMV0gPT0gJ2RldmljZSc6CisgICAgR2Vu
ZXJhdGVJT1NEZXZpY2VDb21tYW5kKCkKKyAgZWxzZToKKyAgICBwcmludCAnVW5zdXBwb3J0ZWQg
dHlwZSBvZiBjb3ZlcmFnZScKKworICByZXR1cm4gMAorCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICBzeXMuZXhpdChNYWluKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvZ25fY2hlY2tfYXV0b2ZpeC5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9n
bl9jaGVja19hdXRvZml4LnB5CmluZGV4IGI5Mzk2MzZkMGM4MzFlOTI4NzcyMzg5YWI1ZjE5MTU1
ZWRkZWZhNmYuLmU0NGY3MTIyZGZmZjllZjAzN2NiYzlkNDYwNjJjY2M5NDYyYTc1OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9nbl9jaGVja19hdXRvZml4LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9nbl9jaGVja19hdXRvZml4LnB5CkBAIC0zMSw2
ICszMSw5IEBAIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKIFNDUklQVF9E
SVIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKIAorQ0hST01J
VU1fRElSUyA9IFsnYmFzZScsICdidWlsZCcsICdidWlsZHRvb2xzJywKKyAgICAgICAgICAgICAg
ICAgJ3Rlc3RpbmcnLCAndGhpcmRfcGFydHknLCAndG9vbHMnXQorCiBUQVJHRVRfUkUgPSByZS5j
b21waWxlKAogICAgIHInKD9QPGluZGVudGF0aW9uX2xldmVsPlxzKilcdypcKCIoP1A8dGFyZ2V0
X25hbWU+XHcqKSJcKSB7JCcpCiAKQEAgLTg4LDIyICs5MSw0OCBAQCBkZWYgRml4RXJyb3JzKGZp
bGVuYW1lLCBtaXNzaW5nX2RlcHMsIGRlbGV0ZWRfc291cmNlcyk6CiAKICAgUnVuKFsnZ24nLCAn
Zm9ybWF0JywgZmlsZW5hbWVdKQogCitkZWYgRmlyc3ROb25FbXB0eShpdGVyYWJsZSk6CisgICIi
IlJldHVybiBmaXJzdCBpdGVtIHdoaWNoIGV2YWx1YXRlcyB0byBUcnVlLCBvciBmYWxsYmFjayB0
byBOb25lLiIiIgorICByZXR1cm4gbmV4dCgoeCBmb3IgeCBpbiBpdGVyYWJsZSBpZiB4KSwgTm9u
ZSkKKwogZGVmIFJlYmFzZShiYXNlX3BhdGgsIGRlcGVuZGVuY3lfcGF0aCwgZGVwZW5kZW5jeSk6
Ci0gIGJhc2VfcGF0aCA9IGJhc2VfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKLSAgZGVwZW5kZW5j
eV9wYXRoID0gZGVwZW5kZW5jeV9wYXRoLnNwbGl0KG9zLnBhdGguc2VwKQotCi0gIGZpcnN0X2Rp
ZmZlcmVuY2UgPSBOb25lCi0gIHNob3J0ZXN0X2xlbmd0aCA9IG1pbihsZW4oZGVwZW5kZW5jeV9w
YXRoKSwgbGVuKGJhc2VfcGF0aCkpCi0gIGZvciBpIGluIHJhbmdlKHNob3J0ZXN0X2xlbmd0aCk6
Ci0gICAgaWYgZGVwZW5kZW5jeV9wYXRoW2ldICE9IGJhc2VfcGF0aFtpXToKLSAgICAgIGZpcnN0
X2RpZmZlcmVuY2UgPSBpCi0gICAgICBicmVhawotCi0gIGZpcnN0X2RpZmZlcmVuY2UgPSBmaXJz
dF9kaWZmZXJlbmNlIG9yIHNob3J0ZXN0X2xlbmd0aAotICBiYXNlX3BhdGggPSBiYXNlX3BhdGhb
Zmlyc3RfZGlmZmVyZW5jZTpdCi0gIGRlcGVuZGVuY3lfcGF0aCA9IGRlcGVuZGVuY3lfcGF0aFtm
aXJzdF9kaWZmZXJlbmNlOl0KLSAgcmV0dXJuIChvcy5wYXRoLnNlcC5qb2luKChbJy4uJ10gKiBs
ZW4oYmFzZV9wYXRoKSkgKyBkZXBlbmRlbmN5X3BhdGgpICsKLSAgICAgICAgICAnOicgKyBkZXBl
bmRlbmN5KQorICAiIiJBZGFwdCBwYXRocyBzbyB0aGV5IHdvcmsgYm90aCBpbiBzdGFuZC1hbG9u
ZSBXZWJSVEMgYW5kIENocm9taXVtIHRyZWUuCisKKyAgVG8gY29wZSB3aXRoIHZhcnlpbmcgdG9w
LWxldmVsIGRpcmVjdG9yeSAoV2ViUlRDIFZTIENocm9taXVtKSwgd2UgdXNlOgorICAgICogcmVs
YXRpdmUgcGF0aHMgZm9yIFdlYlJUQyBtb2R1bGVzLgorICAgICogYWJzb2x1dGUgcGF0aHMgZm9y
IHNoYXJlZCBvbmVzLgorICBFLmcuICcvL2NvbW1vbl9hdWRpby8uLi4nIC0+ICcuLi8uLi9jb21t
b25fYXVkaW8vJworICAgICAgICcvL3RoaXJkX3BhcnR5Ly4uLicgcmVtYWlucyBhcyBpcy4KKwor
ICBBcmdzOgorICAgIGJhc2VfcGF0aDogY3VycmVudCBtb2R1bGUgcGF0aCAgKEUuZy4gJy8vdmlk
ZW8nKQorICAgIGRlcGVuZGVuY3lfcGF0aDogcGF0aCBmcm9tIHJvb3QgKEUuZy4gJy8vcnRjX2Jh
c2UvdGltZScpCisgICAgZGVwZW5kZW5jeTogdGFyZ2V0IGl0c2VsZiAgICAgICAoRS5nLiAndGlt
ZXN0YW1wX2V4dHJhcG9sYXRvcicpCisKKyAgUmV0dXJuczoKKyAgICBGdWxsIHRhcmdldCBwYXRo
IChFLmcuICcuLi9ydGNfYmFzZS90aW1lOnRpbWVzdGFtcF9leHRyYXBvbGF0b3InKS4KKyAgIiIi
CisKKyAgcm9vdCA9IEZpcnN0Tm9uRW1wdHkoZGVwZW5kZW5jeV9wYXRoLnNwbGl0KCcvJykpCisg
IGlmIHJvb3QgaW4gQ0hST01JVU1fRElSUzoKKyAgICAjIENocm9taXVtIHBhdGhzIG11c3QgcmVt
YWluIGFic29sdXRlLiBFLmcuIC8vdGhpcmRfcGFydHkvL2Fic2VpbC1jcHAuLi4KKyAgICByZWJh
c2VkID0gZGVwZW5kZW5jeV9wYXRoCisgIGVsc2U6CisgICAgYmFzZV9wYXRoID0gYmFzZV9wYXRo
LnNwbGl0KG9zLnBhdGguc2VwKQorICAgIGRlcGVuZGVuY3lfcGF0aCA9IGRlcGVuZGVuY3lfcGF0
aC5zcGxpdChvcy5wYXRoLnNlcCkKKworICAgIGZpcnN0X2RpZmZlcmVuY2UgPSBOb25lCisgICAg
c2hvcnRlc3RfbGVuZ3RoID0gbWluKGxlbihkZXBlbmRlbmN5X3BhdGgpLCBsZW4oYmFzZV9wYXRo
KSkKKyAgICBmb3IgaSBpbiByYW5nZShzaG9ydGVzdF9sZW5ndGgpOgorICAgICAgaWYgZGVwZW5k
ZW5jeV9wYXRoW2ldICE9IGJhc2VfcGF0aFtpXToKKyAgICAgICAgZmlyc3RfZGlmZmVyZW5jZSA9
IGkKKyAgICAgICAgYnJlYWsKKworICAgIGZpcnN0X2RpZmZlcmVuY2UgPSBmaXJzdF9kaWZmZXJl
bmNlIG9yIHNob3J0ZXN0X2xlbmd0aAorICAgIGJhc2VfcGF0aCA9IGJhc2VfcGF0aFtmaXJzdF9k
aWZmZXJlbmNlOl0KKyAgICBkZXBlbmRlbmN5X3BhdGggPSBkZXBlbmRlbmN5X3BhdGhbZmlyc3Rf
ZGlmZmVyZW5jZTpdCisgICAgcmViYXNlZCA9IG9zLnBhdGguc2VwLmpvaW4oKFsnLi4nXSAqIGxl
bihiYXNlX3BhdGgpKSArIGRlcGVuZGVuY3lfcGF0aCkKKyAgcmV0dXJuIHJlYmFzZWQgKyAnOicg
KyBkZXBlbmRlbmN5CiAKIGRlZiBtYWluKCk6CiAgIGRlbGV0ZWRfc291cmNlcyA9IHNldCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29s
c193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TMzJfRGVidWcuanNvbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50Lndl
YnJ0Yy9pT1MzMl9EZWJ1Zy5qc29uCmluZGV4IGQyOTY2ZWMzYWQ0ZDY3ZWNlMGU4N2VkZjJiYzVi
ZDViNmFhNTJmYWQuLmIxNDgwOWZmM2Q0ZWZmYzNkYzc3M2JlOWJhZTQzM2M0NTdhMzgxMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xz
X3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9EZWJ1Zy5qc29uCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50
LndlYnJ0Yy9pT1MzMl9EZWJ1Zy5qc29uCkBAIC0xLDYgKzEsNyBAQAogewogICAiY29tbWVudHMi
OiBbCi0gICAgIkJ1aWxkZXIgZm9yIDMyLWJpdCBkZXZpY2VzLiIKKyAgICAiQnVpbGRlciBmb3Ig
MzItYml0IGRldmljZXMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1
aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNv
ZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMv
aW9zL2NsaWVudC53ZWJydGMvaU9TMzJfUmVsZWFzZS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lP
UzMyX1JlbGVhc2UuanNvbgppbmRleCBlNzJhMjI5MTc4N2M3MGY5ZTMwMWI3OGE2NmRmNTZhMTRj
ZjNlNGE1Li45NzI2MzI1NmRlOTkxOWM5YjFmN2U5MzJiYmY0ZGQ0Y2RlZjhmMTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvaW9zL2NsaWVudC53ZWJydGMvaU9TMzJfUmVsZWFzZS5qc29uCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50Lndl
YnJ0Yy9pT1MzMl9SZWxlYXNlLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6
IFsKLSAgICAiQnVpbGRlciBmb3IgMzItYml0IGRldmljZXMuIgorICAgICJCdWlsZGVyIGZvciAz
Mi1iaXQgZGV2aWNlcy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVp
bGRidWNrZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29k
ZSBidWlsZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9p
b3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9TaW1fRGVidWdfKGlPU185LjApLmpzb24gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVu
dC53ZWJydGMvaU9TMzJfU2ltX0RlYnVnXyhpT1NfOS4wKS5qc29uCmluZGV4IDdhNTZkNDYxODA3
NTA2OGNlYjc0YjExNDQxOGMyNGZhNjZiN2NiNmEuLjAzYjI3MmJiNTM0N2IzY2RkMjg5MDQ2OWUz
MTM4YWQ0ZmFjOTE1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9TaW1fRGVi
dWdfKGlPU185LjApLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzMyX1NpbV9EZWJ1Z18o
aU9TXzkuMCkuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAgICJU
ZXN0cyBmb3IgMzItYml0IGlPUyBzaW11bGF0b3JzLiIKKyAgICAiVGVzdHMgZm9yIDMyLWJpdCBp
T1Mgc2ltdWxhdG9ycy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVp
bGRidWNrZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29k
ZSBidWlsZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9p
b3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9EZWJ1Zy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0
X0RlYnVnLmpzb24KaW5kZXggNjUzMmM5MGY1MDk3YmFiOGU2ZTNjMGNkNjZkNmQ1ZjZjYzdmNWNm
Mi4uZjFmYjdmYTcxOTAxYTgwZDMzMzg5Mzk4MzA2MTA1MDE5MjhiODE5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lv
cy9jbGllbnQud2VicnRjL2lPUzY0X0RlYnVnLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lP
UzY0X0RlYnVnLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAi
QnVpbGRlciBmb3IgNjQtYml0IGRldmljZXMuIgorICAgICJCdWlsZGVyIGZvciA2NC1iaXQgZGV2
aWNlcy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNrZXQu
Y2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWlsZCB2
ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50
LndlYnJ0Yy9pT1M2NF9SZWxlYXNlLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRfUmVsZWFz
ZS5qc29uCmluZGV4IDhjYTQ2NGMzYzQzMDA1NTVmYzhhNjg5NjU4YWE5Mjk4ZTJkMGRhNzQuLmMy
NTU1YzZhMTcwZDQyMGE5Y2I0NmM0ZmY2MDNkZTI5MTcyZDQ2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xp
ZW50LndlYnJ0Yy9pT1M2NF9SZWxlYXNlLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0
X1JlbGVhc2UuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAgICJC
dWlsZGVyIGZvciA2NC1iaXQgZGV2aWNlcy4iCisgICAgIkJ1aWxkZXIgZm9yIDY0LWJpdCBkZXZp
Y2VzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBpbiBjci1idWlsZGJ1Y2tldC5j
Zmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwKICAgInhjb2RlIGJ1aWxkIHZl
cnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQu
d2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzEwLjApLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMv
aU9TNjRfU2ltX0RlYnVnXyhpT1NfMTAuMCkuanNvbgppbmRleCBlNzU5ZDk1ZTM2ODZiOTcyYzUy
NGQ5OGM5YTJkMDFkODA3NWJiNTYxLi5kOGE3MWY2NjVhMzQyYWQ5MTM1MzdhZjgwYjYzMGQ0ODk3
NjkxMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRfU2ltX0RlYnVnXyhpT1Nf
MTAuMCkuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRfU2ltX0RlYnVnXyhpT1NfMTAu
MCkuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAgICJUZXN0cyBm
b3IgNjQtYml0IGlPUyBzaW11bGF0b3JzLiIKKyAgICAiVGVzdHMgZm9yIDY0LWJpdCBpT1Mgc2lt
dWxhdG9ycy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNr
ZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWls
ZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xp
ZW50LndlYnJ0Yy9pT1M2NF9TaW1fRGVidWdfKGlPU18xMS4wKS5qc29uIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2Vi
cnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzExLjApLmpzb24KaW5kZXggM2RhZDkxYmE2NGY3ZTNm
YWY3OGQ0MTg4NjI0YWQ0ODIzZTQ4YmMyNS4uYzMwMzA4OGI0NDk3N2UxMDg1NmZkMzk0ZWUwOTlh
NTRlY2ZjODlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18o
aU9TXzExLjApLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9T
XzExLjApLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVz
dHMgZm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3RzIGZvciA2NC1iaXQgaU9T
IHNpbXVsYXRvcnMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxk
YnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUg
YnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9z
L2NsaWVudC53ZWJydGMvaU9TNjRfU2ltX0RlYnVnXyhpT1NfOS4wKS5qc29uIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQu
d2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzkuMCkuanNvbgppbmRleCBkMjdjZGFhNDVmNTQw
YzU2YTA4MjdjZGE2YWFhNmY5MzlkZmJlZDc5Li5iY2Y1MmQ3MjgzMjZlY2IyNzhjNWQxMjQ0NmU3
YjkxMzU5MjBkZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRfU2ltX0RlYnVn
XyhpT1NfOS4wKS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9TaW1fRGVidWdfKGlP
U185LjApLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVz
dHMgZm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3RzIGZvciA2NC1iaXQgaU9T
IHNpbXVsYXRvcnMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxk
YnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUg
YnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9z
L2dlbmVyYXRlX21vZHVsZW1hcC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvZ2VuZXJhdGVfbW9kdWxlbWFwLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ1YmQzZDg3NWU3Y2QwYTA2MmM3NWZjMGEyZmYxM2ZjN2QxZmU2NmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193
ZWJydGMvaW9zL2dlbmVyYXRlX21vZHVsZW1hcC5weQpAQCAtMCwwICsxLDMyIEBACisjIENvcHly
aWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyMKKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyMgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorIyBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisjIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorCitpbXBv
cnQgYXJncGFyc2UKK2ltcG9ydCBzeXMKKworZGVmIEdlbmVyYXRlTW9kdWxlbWFwKCk6CisgIHBh
cnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdHZW5lcmF0ZSBtb2R1
bGVtYXAnKQorICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbyIsICItLW91dCIsIHR5cGU9c3RyLCBo
ZWxwPSJPdXRwdXQgZmlsZS4iKQorICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbiIsICItLW5hbWUi
LCB0eXBlPXN0ciwgaGVscD0iTmFtZSBvZiBiaW5hcnkuIikKKworICBhcmdzID0gcGFyc2VyLnBh
cnNlX2FyZ3MoKQorCisgIHdpdGggb3BlbihhcmdzLm91dCwgInciKSBhcyBvdXRmaWxlOgorICAg
IG1vZHVsZV90ZW1wbGF0ZSA9ICdmcmFtZXdvcmsgbW9kdWxlICVzIHtcbicgXAorICAgICAgICAg
ICAgICAgICAgICAgICcgIHVtYnJlbGxhIGhlYWRlciAiJXMuaCJcbicgXAorICAgICAgICAgICAg
ICAgICAgICAgICdcbicgXAorICAgICAgICAgICAgICAgICAgICAgICcgIGV4cG9ydCAqXG4nIFwK
KyAgICAgICAgICAgICAgICAgICAgICAnICBtb2R1bGUgKiB7IGV4cG9ydCAqIH1cbicgXAorICAg
ICAgICAgICAgICAgICAgICAgICd9XG4nICUgKGFyZ3MubmFtZSwgYXJncy5uYW1lKQorICAgIG91
dGZpbGUud3JpdGUobW9kdWxlX3RlbXBsYXRlKQorICByZXR1cm4gMAorCisKK2lmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CisgIHN5cy5leGl0KEdlbmVyYXRlTW9kdWxlbWFwKCkpCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9EZWJ1Zy5qc29uIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRl
cm5hbC5jbGllbnQud2VicnRjL2lPUzY0X0RlYnVnLmpzb24KaW5kZXggN2MzYjNjZWUxZGExMjhh
ZGM2YjNiY2EwODUzYTE4NGU1ZTRlM2IzMy4uYTk3ZDhiNzA2ZjgyMTUwZmQyMzZlMTE4NTVhYjRi
ZDM3YTc3YWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X0Rl
YnVnLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X0RlYnVnLmpzb24K
QEAgLTIxLDYgKzIxLDcgQEAKICAgInRlc3RzIjogWwogICAgIHsKICAgICAgICJpbmNsdWRlIjog
InJlYWxfZGV2aWNlX3Rlc3RzLmpzb24iLAorICAgICAgImRldmljZSB0eXBlIjogImlQaG9uZSA2
cyIsCiAgICAgICAib3MiOiAiMTEuNC4xIiwKICAgICAgICJkaW1lbnNpb25zIjogWwogICAgICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53ZWJydGMvaU9TNjRfUGVyZi5qc29u
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRj
L2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X1BlcmYuanNvbgppbmRleCBiNTM1NzY2
MWE4NDI3YjIxY2YzZWIzNzIyNmM3MjY3NDk4ZjhkOWFiLi44OGJmZTc1MjY0YWQ1NmIyNTUyYWZk
MDFiMzRiZmFiOWE5YTRiOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53ZWJydGMv
aU9TNjRfUGVyZi5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9QZXJm
Lmpzb24KQEAgLTIxLDEzICsyMSw4IEBACiAgICJ0ZXN0cyI6IFsKICAgICB7CiAgICAgICAiaW5j
bHVkZSI6ICJwZXJmX3Rlc3RzLmpzb24iLAorICAgICAgImRldmljZSB0eXBlIjogImlQaG9uZSA3
IiwKICAgICAgICJvcyI6ICIxMS40LjEiLAotICAgICAgImRpbWVuc2lvbnMiOiBbCi0gICAgICAg
IHsKLSAgICAgICAgICAib3MiOiAiTWFjIiwKLSAgICAgICAgICAicG9vbCI6ICJDaHJvbWUiCi0g
ICAgICAgIH0KLSAgICAgIF0KICAgICB9CiAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwu
Y2xpZW50LndlYnJ0Yy9pT1M2NF9SZWxlYXNlLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53ZWJy
dGMvaU9TNjRfUmVsZWFzZS5qc29uCmluZGV4IGFjODRkYjEwYmY1YzYyMjhmMzdjMGY5OTJjZDgw
ODI2Zjc3N2M1NDQuLmQ3NWNkZTA3ZmY2ODFiYTY5ZDAyOTFlNGNiMDk2ODI2MmMwYjY5ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xz
X3dlYnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9SZWxlYXNlLmpzb24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRj
L2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X1JlbGVhc2UuanNvbgpAQCAtMjIsNiAr
MjIsNyBAQAogICAidGVzdHMiOiBbCiAgICAgewogICAgICAgImluY2x1ZGUiOiAicmVhbF9kZXZp
Y2VfdGVzdHMuanNvbiIsCisgICAgICAiZGV2aWNlIHR5cGUiOiAiaVBob25lIDZzIiwKICAgICAg
ICJvcyI6ICIxMS40LjEiLAogICAgICAgImRpbWVuc2lvbnMiOiBbCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9pb3MvaW50ZXJuYWwudHJ5c2VydmVyLndlYnJ0Yy9pb3NfYXJtNjRfcGVyZi5qc29uIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lv
cy9pbnRlcm5hbC50cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9wZXJmLmpzb24KaW5kZXggMDIz
MGM3NGE5MmFkMDdkMTU4ZWYwNDg0MjNhNzY5NTM3OGU2ZDIzNy4uMGMzMDU4MWRhMWRmMDEwNzZk
ODhiZjgzOGI1MDdjNDVkYjNlMmM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC50cnlzZXJ2ZXIu
d2VicnRjL2lvc19hcm02NF9wZXJmLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC50cnlzZXJ2ZXIud2Vi
cnRjL2lvc19hcm02NF9wZXJmLmpzb24KQEAgLTIzLDEyICsyMyw2IEBACiAgICAgICAiaW5jbHVk
ZSI6ICJwZXJmX3RyeWJvdF90ZXN0cy5qc29uIiwKICAgICAgICJkZXZpY2UgdHlwZSI6ICJpUGhv
bmUgNyIsCiAgICAgICAib3MiOiAiMTEuMC4zIiwKLSAgICAgICJkaW1lbnNpb25zIjogWwotICAg
ICAgICB7Ci0gICAgICAgICAgIm9zIjogIk1hYyIsCi0gICAgICAgICAgInBvb2wiOiAiQ2hyb21l
IgotICAgICAgICB9Ci0gICAgICBdCiAgICAgfQogICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Rlc3Rz
L2NvbW1vbl90ZXN0cy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90ZXN0cy9jb21tb25fdGVzdHMuanNvbgppbmRleCA1ZWVi
NDA4Mzg3ZmVjNDczNzEyZDRjNjc5ZWFiYTgzYjFlNTJmMDZjLi43NDU5NTAzZDdmMDY4MzI1Mzli
YWY0NzNmNDBjOGZhYzQzOTIyZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Rlc3RzL2NvbW1vbl90ZXN0cy5q
c29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xz
X3dlYnJ0Yy9pb3MvdGVzdHMvY29tbW9uX3Rlc3RzLmpzb24KQEAgLTI3LDkgKzI3LDYgQEAKICAg
ICB7CiAgICAgICAiYXBwIjogIm1vZHVsZXNfdW5pdHRlc3RzIgogICAgIH0sCi0gICAgewotICAg
ICAgImFwcCI6ICJvcnRjX3VuaXR0ZXN0cyIKLSAgICB9LAogICAgIHsKICAgICAgICJhcHAiOiAi
cnRjX21lZGlhX3VuaXR0ZXN0cyIKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90ZXN0cy9yZWFsX2Rl
dmljZV90ZXN0cy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdG9vbHNfd2VicnRjL2lvcy90ZXN0cy9yZWFsX2RldmljZV90ZXN0cy5qc29uCmluZGV4IDg0
MTc0NzBkZGI4ODJlMjk4NTJjOTA0OGFlMGM3OWIxYmJlZDllM2IuLmRjZWU1MTY4OGQ2Y2Y5ZmQ1
NWZhYTBhZTQ3MWVmMmJkNGY1MTQzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdGVzdHMvcmVhbF9kZXZpY2Vf
dGVzdHMuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvaW9zL3Rlc3RzL3JlYWxfZGV2aWNlX3Rlc3RzLmpzb24KQEAgLTEyLDkg
KzEyLDYgQEAKICAgICB7CiAgICAgICAiYXBwIjogIm1vZHVsZXNfdW5pdHRlc3RzIgogICAgIH0s
Ci0gICAgewotICAgICAgImFwcCI6ICJvcnRjX3VuaXR0ZXN0cyIKLSAgICB9LAogICAgIHsKICAg
ICAgICJhcHAiOiAicnRjX3BjX3VuaXR0ZXN0cyIKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlz
ZXJ2ZXIud2VicnRjL2lvczMyX3NpbV9pb3M5X2RiZy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRj
L2lvczMyX3NpbV9pb3M5X2RiZy5qc29uCmluZGV4IDI5YTExM2Q0MTM4OGM3ZmViNmViOWViMzU4
YzM0MDc1ZmMwMjVmZjEuLjFlYWNjOTI5NWZiMWE3MmJmY2NlMzZlYWUyNzM5MjlkY2M4MjVkZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3MzMl9zaW1faW9zOV9kYmcuanNvbgor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zMzJfc2ltX2lvczlfZGJnLmpzb24KQEAgLTEsNiAr
MSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVzdHMgZm9yIDMyLWJpdCBpT1Mgc2lt
dWxhdG9ycy4iCisgICAgIlRlc3RzIGZvciAzMi1iaXQgaU9TIHNpbXVsYXRvcnMuIiwKKyAgICAi
Tk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5n
aW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwy
MzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9z
NjRfc2ltX2lvczEwX2RiZy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczY0X3NpbV9pb3Mx
MF9kYmcuanNvbgppbmRleCA2NDg0Y2ExMDUwZGUwZWFhNGYxOWQ4MTAwNWJmMDVkMGI2N2Y2YTBh
Li44Y2VjZjRhNDFlZjU5OWU1NWE4ZWE2M2NiNjZjZmQ3MjE2NWY3OTNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9z
L3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lvczEwX2RiZy5qc29uCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2Vy
dmVyLndlYnJ0Yy9pb3M2NF9zaW1faW9zMTBfZGJnLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAg
ICJjb21tZW50cyI6IFsKLSAgICAiVGVzdHMgZm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisg
ICAgIlRlc3RzIGZvciA2NC1iaXQgaU9TIHNpbXVsYXRvcnMuIiwKKyAgICAiTk9URTogVXBkYXRl
IGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZl
cnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImdu
X2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lvczEx
X2RiZy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9v
bHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczY0X3NpbV9pb3MxMV9kYmcuanNvbgpp
bmRleCBiNTRmMjEyYWNiZDY4YWRjMWVkNDI2ZWI0MWU5ZjZhYzQ5MGY5Zjk3Li4zYTVmN2MwY2Y2
YjBmN2RkMDQxMzJkNWI0ZmZkYjk0MjI5ZTY2MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53
ZWJydGMvaW9zNjRfc2ltX2lvczExX2RiZy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9p
b3M2NF9zaW1faW9zMTFfZGJnLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6
IFsKLSAgICAiVGVzdHMgZm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3RzIGZv
ciA2NC1iaXQgaU9TIHNpbXVsYXRvcnMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5
IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBd
LAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29s
c193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lvczlfZGJnLmpzb24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9z
L3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lvczlfZGJnLmpzb24KaW5kZXggZmRmYTdiMzgy
ZDVhZTJhMDlmMjlmMjllNTMxZTAzZmYxMTk0YzMxZi4uNmM5ODQ4ZWU2ZGQ5Njg3MTU2NzI4MTBj
YWIwZDVjMWVjNWI3MzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczY0X3Np
bV9pb3M5X2RiZy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3M2NF9zaW1faW9zOV9k
YmcuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAgICJUZXN0cyBm
b3IgNjQtYml0IGlPUyBzaW11bGF0b3JzLiIKKyAgICAiVGVzdHMgZm9yIDY0LWJpdCBpT1Mgc2lt
dWxhdG9ycy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNr
ZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWls
ZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5
c2VydmVyLndlYnJ0Yy9pb3NfYXJtNjRfZGJnLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9z
X2FybTY0X2RiZy5qc29uCmluZGV4IDc1OTRjZDJhMzZkNjZlNmM4ZGNlYjYwOTkyMjdjYTQ1ZmJl
ODBkMDIuLjQzYWRkNjcxMGU2YzU3MjlhMzIyZGM5MmJiYjE4NTU5NzcwN2Y2NTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0
Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3NfYXJtNjRfZGJnLmpzb24KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2
ZXIud2VicnRjL2lvc19hcm02NF9kYmcuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1l
bnRzIjogWwotICAgICJCdWlsZGVyIGZvciA2NC1iaXQgZGV2aWNlcy4iCisgICAgIkJ1aWxkZXIg
Zm9yIDY0LWJpdCBkZXZpY2VzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBpbiBj
ci1idWlsZGJ1Y2tldC5jZmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwKICAg
Inhjb2RlIGJ1aWxkIHZlcnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2Vi
cnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9yZWwuanNvbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVy
LndlYnJ0Yy9pb3NfYXJtNjRfcmVsLmpzb24KaW5kZXggMDhhZTdlMTk4MzMyMTI0YjMxZTQ1MzY0
NjdlN2Y4MjY3MzljZjA4MC4uOTVhNTdlNTIyNjJlNTJhZTZmZWVlOTVhMzVjZmJhZDc2ZGU1ZTQ1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9yZWwuanNvbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMv
aW9zL3RyeXNlcnZlci53ZWJydGMvaW9zX2FybTY0X3JlbC5qc29uCkBAIC0xLDYgKzEsNyBAQAog
ewogICAiY29tbWVudHMiOiBbCi0gICAgIkJ1aWxkZXIgZm9yIDY0LWJpdCBkZXZpY2VzLiIKKyAg
ICAiQnVpbGRlciBmb3IgNjQtYml0IGRldmljZXMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hl
IGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24u
IgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3Mi
OiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zX2RiZy5qc29uIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlz
ZXJ2ZXIud2VicnRjL2lvc19kYmcuanNvbgppbmRleCBlOWQwNmMyYTc2MTQwMDQ4ODA5ZWJiMjM1
YTQ2N2YwMmQ3MDI0Zjc4Li44YmU5ZTk1YzBmMGI1YWExY2QzMmI4Yzk2ZTY2YWFkNTI1MmNjZDhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zX2RiZy5qc29uCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5
c2VydmVyLndlYnJ0Yy9pb3NfZGJnLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50
cyI6IFsKLSAgICAiQnVpbGRlciBmb3IgMzItYml0IGRldmljZXMuIgorICAgICJCdWlsZGVyIGZv
ciAzMi1iaXQgZGV2aWNlcy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3It
YnVpbGRidWNrZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4
Y29kZSBidWlsZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0
Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3NfcmVsLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMv
aW9zX3JlbC5qc29uCmluZGV4IDQ1MjFlZjUxNTM3MjE1NTc1OTM3NmE3M2FiZWNjNTFmNTIwYjQy
MDUuLmY2NDQ5NDBjN2M0MDBkOGQxOGZlZmM0NGFhODQ1MzU3M2FmYzBhY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9p
b3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3NfcmVsLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRj
L2lvc19yZWwuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAgICJC
dWlsZGVyIGZvciAzMi1iaXQgZGV2aWNlcy4iCisgICAgIkJ1aWxkZXIgZm9yIDMyLWJpdCBkZXZp
Y2VzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBpbiBjci1idWlsZGJ1Y2tldC5j
Zmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwKICAgInhjb2RlIGJ1aWxkIHZl
cnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2xpYnMvZ2VuZXJh
dGVfbGljZW5zZXMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvbGlicy9nZW5lcmF0ZV9saWNlbnNlcy5weQppbmRleCA4OTJmYjQ2YzA1
MTc4ZjRlNWI0OTU3NmFiNGRlNGUzNzc2MmUzNjRhLi5kMWE3NmE2NGVlYzFhMzU0NjdmMWVkZTk4
ZWVmN2Y5NjI3MzM5ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbGlicy9nZW5lcmF0ZV9saWNlbnNlcy5weQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMv
bGlicy9nZW5lcmF0ZV9saWNlbnNlcy5weQpAQCAtMzYsNyArMzYsNiBAQCBMSUJfVE9fTElDRU5T
RVNfRElDVCA9IHsKICAgICAnYmF6ZWwnOiBbJ3RoaXJkX3BhcnR5L2JhemVsL0xJQ0VOU0UnXSwK
ICAgICAnYm9yaW5nc3NsJzogWyd0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL0xJQ0VOU0UnXSwK
ICAgICAnZXJyb3Jwcm9uZSc6IFsndGhpcmRfcGFydHkvZXJyb3Jwcm9uZS9MSUNFTlNFJ10sCi0g
ICAgJ2V4cGF0JzogWyd0aGlyZF9wYXJ0eS9leHBhdC9maWxlcy9DT1BZSU5HJ10sCiAgICAgJ2Zp
YXQnOiBbJ3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvdGhpcmRfcGFydHkvZmlhdC9MSUNFTlNF
J10sCiAgICAgJ2d1YXZhJzogWyd0aGlyZF9wYXJ0eS9ndWF2YS9MSUNFTlNFJ10sCiAgICAgJ2lq
YXInOiBbJ3RoaXJkX3BhcnR5L2lqYXIvTElDRU5TRSddLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL2duX2lzb2xh
dGVfbWFwLnB5bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9tYi9nbl9pc29sYXRlX21hcC5weWwKaW5kZXggZmVjYzU2YzM4ZTFkMWVhNjk0
ODg5YjAwYjY2MTU0MDdlY2ViMGQxMy4uZDcyYmJkYzAwOTBhZjg0OGJmODljMjZjOWVlM2IzMmQx
N2FmNTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdG9vbHNfd2VicnRjL21iL2duX2lzb2xhdGVfbWFwLnB5bAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbWIvZ25faXNvbGF0
ZV9tYXAucHlsCkBAIC04MiwxMCArODIsNiBAQAogICAgICJsYWJlbCI6ICIvL21vZHVsZXM6bW9k
dWxlc191bml0dGVzdHMiLAogICAgICJ0eXBlIjogIndpbmRvd2VkX3Rlc3RfbGF1bmNoZXIiLAog
ICB9LAotICAib3J0Y191bml0dGVzdHMiOiB7Ci0gICAgImxhYmVsIjogIi8vb3J0YzpvcnRjX3Vu
aXR0ZXN0cyIsCi0gICAgInR5cGUiOiAiY29uc29sZV90ZXN0X2xhdW5jaGVyIiwKLSAgfSwKICAg
InBlZXJjb25uZWN0aW9uX3VuaXR0ZXN0cyI6IHsKICAgICAibGFiZWwiOiAiLy9wYzpwZWVyY29u
bmVjdGlvbl91bml0dGVzdHMiLAogICAgICJ0eXBlIjogImNvbnNvbGVfdGVzdF9sYXVuY2hlciIs
CkBAIC0xMDYsNiArMTAyLDEwIEBACiAgICAgImxhYmVsIjogIi8vOnJ0Y191bml0dGVzdHMiLAog
ICAgICJ0eXBlIjogImNvbnNvbGVfdGVzdF9sYXVuY2hlciIsCiAgIH0sCisgICJzbG93X3Rlc3Rz
IjogeworICAgICJsYWJlbCI6ICIvLzpzbG93X3Rlc3RzIiwKKyAgICAidHlwZSI6ICJjb25zb2xl
X3Rlc3RfbGF1bmNoZXIiLAorICB9LAogICAic3lzdGVtX3dyYXBwZXJzX3VuaXR0ZXN0cyI6IHsK
ICAgICAibGFiZWwiOiAiLy9zeXN0ZW1fd3JhcHBlcnM6c3lzdGVtX3dyYXBwZXJzX3VuaXR0ZXN0
cyIsCiAgICAgInR5cGUiOiAiY29uc29sZV90ZXN0X2xhdW5jaGVyIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9t
Yi5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9tYi9tYi5weQppbmRleCA3ZjE5NmJiNzMzODQ2YzhjZjAwMzFhZjExNzgyZjI1OTM5Njk5
ZWI5Li40ODVmY2ViODU4Yzk4YWEzOWQyZTlmZmUyM2M2NjE0ZjdlMGRkMGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMv
bWIvbWIucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL21iL21iLnB5CkBAIC04MzMsNiArODMzLDcgQEAgY2xhc3MgTWV0YUJ1aWxk
V3JhcHBlcihvYmplY3QpOgogICAgICAgJy4uLy4uL3Rlc3RpbmcvdGVzdF9lbnYucHknLAogICAg
IF0KIAorICAgIG11c3RfcmV0cnkgPSBGYWxzZQogICAgIGlmIHRlc3RfdHlwZSA9PSAnc2NyaXB0
JzoKICAgICAgIGNtZGxpbmUgPSBbJy4uLy4uLycgKyBzZWxmLlRvU3JjUmVsUGF0aChpc29sYXRl
X21hcFt0YXJnZXRdWydzY3JpcHQnXSldCiAgICAgZWxpZiBpc19hbmRyb2lkOgpAQCAtODc0LDEy
ICs4NzUsMjEgQEAgY2xhc3MgTWV0YUJ1aWxkV3JhcHBlcihvYmplY3QpOgogICAgICAgICAgICAg
IyBzbyBpdCBjYW4gZXhpdCBjbGVhbmx5IGFuZCByZXBvcnQgcmVzdWx0cywgaW5zdGVhZCBvZiBi
ZWluZwogICAgICAgICAgICAgIyBpbnRlcnJ1cHRlZCBieSBzd2FybWluZyBhbmQgbm90IHJlcG9y
dGluZyBhbnl0aGluZy4KICAgICAgICAgICAgICctLXRpbWVvdXQ9JXMnICUgdGltZW91dCwKLSAg
ICAgICAgICAgICctLXJldHJ5X2ZhaWxlZD0zJywKICAgICAgICAgXQogICAgICAgICBpZiB0ZXN0
X3R5cGUgPT0gJ25vbl9wYXJhbGxlbF9jb25zb2xlX3Rlc3RfbGF1bmNoZXInOgogICAgICAgICAg
ICMgU3RpbGwgdXNlIHRoZSBndGVzdC1wYXJhbGxlbC13cmFwcGVyLnB5IHNjcmlwdCBzaW5jZSB3
ZSBuZWVkIGl0IHRvCiAgICAgICAgICAgIyBydW4gdGVzdHMgb24gc3dhcm1pbmcsIGJ1dCBkb24n
dCBleGVjdXRlIHRlc3RzIGluIHBhcmFsbGVsLgogICAgICAgICAgIGNtZGxpbmUuYXBwZW5kKCct
LXdvcmtlcnM9MScpCisgICAgICAgIG11c3RfcmV0cnkgPSBUcnVlCisKKyAgICAgIGFzYW4gPSAn
aXNfYXNhbj10cnVlJyBpbiB2YWxzWydnbl9hcmdzJ10KKyAgICAgIGxzYW4gPSAnaXNfbHNhbj10
cnVlJyBpbiB2YWxzWydnbl9hcmdzJ10KKyAgICAgIG1zYW4gPSAnaXNfbXNhbj10cnVlJyBpbiB2
YWxzWydnbl9hcmdzJ10KKyAgICAgIHRzYW4gPSAnaXNfdHNhbj10cnVlJyBpbiB2YWxzWydnbl9h
cmdzJ10KKyAgICAgIHNhbml0aXplciA9IGFzYW4gb3IgbHNhbiBvciBtc2FuIG9yIHRzYW4KKyAg
ICAgIGlmIG11c3RfcmV0cnkgYW5kIG5vdCBzYW5pdGl6ZXI6CisgICAgICAgICMgUmV0cnkgd291
bGQgaGlkZSBtb3N0IHNhbml0aXplcnMgZGV0ZWN0aW9ucy4KKyAgICAgICAgY21kbGluZS5hcHBl
bmQoJy0tcmV0cnlfZmFpbGVkPTMnKQogCiAgICAgICBleGVjdXRhYmxlX3ByZWZpeCA9ICcuXFwn
IGlmIHNlbGYucGxhdGZvcm0gPT0gJ3dpbjMyJyBlbHNlICcuLycKICAgICAgIGV4ZWN1dGFibGVf
c3VmZml4ID0gJy5leGUnIGlmIHNlbGYucGxhdGZvcm0gPT0gJ3dpbjMyJyBlbHNlICcnCkBAIC04
ODcsMTEgKzg5Nyw2IEBAIGNsYXNzIE1ldGFCdWlsZFdyYXBwZXIob2JqZWN0KToKIAogICAgICAg
Y21kbGluZS5hcHBlbmQoZXhlY3V0YWJsZSkKIAotICAgICAgYXNhbiA9ICdpc19hc2FuPXRydWUn
IGluIHZhbHNbJ2duX2FyZ3MnXQotICAgICAgbHNhbiA9ICdpc19sc2FuPXRydWUnIGluIHZhbHNb
J2duX2FyZ3MnXQotICAgICAgbXNhbiA9ICdpc19tc2FuPXRydWUnIGluIHZhbHNbJ2duX2FyZ3Mn
XQotICAgICAgdHNhbiA9ICdpc190c2FuPXRydWUnIGluIHZhbHNbJ2duX2FyZ3MnXQotCiAgICAg
ICBjbWRsaW5lLmV4dGVuZChbCiAgICAgICAgICAgJy0tYXNhbj0lZCcgJSBhc2FuLAogICAgICAg
ICAgICctLWxzYW49JWQnICUgbHNhbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9tYl9jb25maWcucHlsIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL21i
X2NvbmZpZy5weWwKaW5kZXggNTZjODU4MzdmZTZhNWExMGFiMTIxMzkxOTNmYzdjNDBjNDdkZTgz
OC4uNTQ5ZWU0Y2I2OGVjYmUxYThlOWQ2YTQwZDkzMDg2MzdkOTQxYTBhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21i
L21iX2NvbmZpZy5weWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdG9vbHNfd2VicnRjL21iL21iX2NvbmZpZy5weWwKQEAgLTI0LDcgKzI0LDYgQEAKICAg
ICAgICdpT1MzMiBSZWxlYXNlJzogJ2lvcycsCiAgICAgICAnaU9TNjQgRGVidWcnOiAnaW9zJywK
ICAgICAgICdpT1M2NCBSZWxlYXNlJzogJ2lvcycsCi0gICAgICAnaU9TMzIgU2ltIERlYnVnIChp
T1MgOS4wKSc6ICdpb3MnLAogICAgICAgJ2lPUzY0IFNpbSBEZWJ1ZyAoaU9TIDkuMCknOiAnaW9z
JywKICAgICAgICdpT1M2NCBTaW0gRGVidWcgKGlPUyAxMC4wKSc6ICdpb3MnLAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvbWIvbWJfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90b29sc193ZWJydGMvbWIvbWJfdW5pdHRlc3QucHkKaW5kZXggMDkwOTNjMDZiYWU5
ODUxMWY1YTVmNDBiODJkYjAxYzUzN2Q3MWM0YS4uMGU3MTczYWJiNGNlNjZhNjc1NTY4NmUzNTEy
ZDY2YTAxYTc0NmViMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL21iX3VuaXR0ZXN0LnB5CisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9tYl91bml0
dGVzdC5weQpAQCAtMzgyLDggKzM4Miw4IEBAIGNsYXNzIFVuaXRUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgJy0tb3V0cHV0X2Rpcj0ke0lTT0xBVEVEX09VVERJUn0vdGVzdF9sb2dz
JywKICAgICAgICAgJy0tZ3Rlc3RfY29sb3I9bm8nLAogICAgICAgICAnLS10aW1lb3V0PTUwMCcs
Ci0gICAgICAgICctLXJldHJ5X2ZhaWxlZD0zJywKICAgICAgICAgJy0td29ya2Vycz0xJywKKyAg
ICAgICAgJy0tcmV0cnlfZmFpbGVkPTMnLAogICAgICAgICAnLi9iYXNlX3VuaXR0ZXN0cycsCiAg
ICAgICAgICctLWFzYW49MCcsCiAgICAgICAgICctLWxzYW49MCcsCkBAIC01MDIsOCArNTAyLDgg
QEAgY2xhc3MgVW5pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAnLS1vdXRwdXRf
ZGlyPSR7SVNPTEFURURfT1VURElSfS90ZXN0X2xvZ3MnLAogICAgICAgICAnLS1ndGVzdF9jb2xv
cj1ubycsCiAgICAgICAgICctLXRpbWVvdXQ9OTAwJywKLSAgICAgICAgJy0tcmV0cnlfZmFpbGVk
PTMnLAogICAgICAgICAnLS13b3JrZXJzPTEnLAorICAgICAgICAnLS1yZXRyeV9mYWlsZWQ9Mycs
CiAgICAgICAgICcuL2Jhc2VfdW5pdHRlc3RzJywKICAgICAgICAgJy0tYXNhbj0wJywKICAgICAg
ICAgJy0tbHNhbj0wJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy92aWRlb19xdWFsaXR5X3Rvb2xjaGFpbi9saW51eC96
eGluZy5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9v
bHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL2xpbnV4L3p4aW5nLnNoYTEKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2OWE2YWM0MzcxZjNjZTVjYzcxMGNmZmU2M2E0Mzk2
MWE1NWY1YmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL3Zp
ZGVvX3F1YWxpdHlfdG9vbGNoYWluL2xpbnV4L3p4aW5nLnNoYTEKKysrIC9kZXYvbnVsbApAQCAt
MSArMCwwIEBACi0zZTJhMjVlYWEyZTIwN2ExZTU2OWM2NTg1ZTUwYWRkYjIwYmNhODlhClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWlu
L21hYy96eGluZy5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL21hYy96eGluZy5zaGExCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjQ5NmU3Y2U2YTkwNGU2MTY4MGMyMGNiMTJi
YzQ5MTcyNzc4MzdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0
Yy92aWRlb19xdWFsaXR5X3Rvb2xjaGFpbi9tYWMvenhpbmcuc2hhMQorKysgL2Rldi9udWxsCkBA
IC0xICswLDAgQEAKLTY3NzhlM2FjNDg5ZjRmYzE4YTFlZDEyNTJiYmQ2ZWNhNTRjOTk2MGUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvdmlkZW9fcXVhbGl0eV90b29sY2hh
aW4vd2luL3p4aW5nLmV4ZS5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL3dpbi96eGluZy5l
eGUuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU1MjkwZmIzNDZjNTNhZjg2
NmYzOWM0MDg0ZDcxN2U5ZDI3ZmZkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
b29sc193ZWJydGMvdmlkZW9fcXVhbGl0eV90b29sY2hhaW4vd2luL3p4aW5nLmV4ZS5zaGExCisr
KyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotODZjYTMxNDg3NzgwNzk2NjVhZDViOTQ1OTMxMWQz
NDNhMTg2NTk0MwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL0JVSUxELmduIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KaW5k
ZXggMzI3M2ZkYTI1ZDU1Mjg2OGViOTU4MDVmMmU1NGIyN2JlMDc5Y2E1YS4uYjUzZDczMGFlMDdl
MDZmODAwNGUzNTUzNmNhZTcyMmExYTVhNmVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KQEAgLTUyLDcg
KzUyLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlbyIpIHsKICAgfQogCiAgIGRlcHMgPSBb
Ci0gICAgIi4uOndlYnJ0Y19jb21tb24iLAorICAgICI6ZnJhbWVfZHVtcGluZ19kZWNvZGVyIiwK
ICAgICAiLi4vYXBpOmZlY19jb250cm9sbGVyX2FwaSIsCiAgICAgIi4uL2FwaTpsaWJqaW5nbGVf
cGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAiLi4vYXBpOnRyYW5zcG9ydF9hcGkiLApAQCAtMTMz
LDYgKzEzMywyNSBAQCBydGNfc291cmNlX3NldCgidmlkZW9fc3RyZWFtX2RlY29kZXJfaW1wbCIp
IHsKICAgXQogfQogCitydGNfc291cmNlX3NldCgiZnJhbWVfZHVtcGluZ19kZWNvZGVyIikgewor
ICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorCisgIHNvdXJjZXMgPSBbCisgICAgImZyYW1lX2R1bXBp
bmdfZGVjb2Rlci5jYyIsCisgICAgImZyYW1lX2R1bXBpbmdfZGVjb2Rlci5oIiwKKyAgXQorCisg
IGRlcHMgPSBbCisgICAgIi4uL2FwaS92aWRlbzplbmNvZGVkX2ZyYW1lIiwKKyAgICAiLi4vYXBp
L3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKKyAgICAiLi4vbW9kdWxlcy92aWRlb19j
b2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKKyAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rp
bmc6dmlkZW9fY29kaW5nIiwKKyAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29k
aW5nX3V0aWxpdHkiLAorICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgIF0KK30KKwogcnRjX3Nv
dXJjZV9zZXQoInZpZGVvX3N0cmVhbV9lbmNvZGVyX2ltcGwiKSB7CiAgIHZpc2liaWxpdHkgPSBb
ICIqIiBdCiAKQEAgLTE1Miw3ICsxNzEsOSBAQCBydGNfc291cmNlX3NldCgidmlkZW9fc3RyZWFt
X2VuY29kZXJfaW1wbCIpIHsKICAgfQogCiAgIGRlcHMgPSBbCisgICAgIi4uL2FwaS92aWRlbzpl
bmNvZGVkX2ltYWdlIiwKICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
IiwKKyAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAog
ICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAogICAgICIuLi9hcGkvdmlkZW86dmlkZW9f
ZnJhbWVfaTQyMCIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19zdHJlYW1fZW5jb2RlciIsCkBA
IC0yMDMsMTUgKzIyNCwxOSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJ2aWRl
b19xdWFsaXR5X3Rlc3QuaCIsCiAgICAgXQogICAgIGRlcHMgPSBbCisgICAgICAiOmZyYW1lX2R1
bXBpbmdfZGVjb2RlciIsCiAgICAgICAiLi4vYXBpOmZlY19jb250cm9sbGVyX2FwaSIsCiAgICAg
ICAiLi4vYXBpOnRlc3RfZGVwZW5kZW5jeV9mYWN0b3J5IiwKICAgICAgICIuLi9hcGk6dmlkZW9f
cXVhbGl0eV90ZXN0X2ZpeHR1cmVfYXBpIiwKKyAgICAgICIuLi9hcGkvdmlkZW86YnVpbHRpbl92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKKyAgICAgICIuLi9hcGkvdmlkZW86dmlk
ZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAgICAgICAiLi4vY2FsbDpmYWtlX25ldHdv
cmsiLAogICAgICAgIi4uL2NhbGw6c2ltdWxhdGVkX25ldHdvcmsiLAogICAgICAgIi4uL2xvZ2dp
bmc6cnRjX2V2ZW50X2xvZ19hcGkiLAogICAgICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19p
bXBsX291dHB1dCIsCiAgICAgICAiLi4vbWVkaWE6cnRjX2F1ZGlvX3ZpZGVvIiwKICAgICAgICIu
Li9tZWRpYTpydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIiwKKyAgICAgICIuLi9tZWRpYTpydGNf
dnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5IiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2Rl
dmljZTphdWRpb19kZXZpY2VfYXBpIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTph
dWRpb19kZXZpY2VfbW9kdWxlX2Zyb21faW5wdXRfYW5kX291dHB1dCIsCiAgICAgICAiLi4vbW9k
dWxlcy9hdWRpb19kZXZpY2U6d2luZG93c19jb3JlX2F1ZGlvX3V0aWxpdHkiLApAQCAtMzUwLDcg
KzM3NSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgInJlcGxheS5jYyIsCiAg
ICAgXQogICAgIGRlcHMgPSBbCi0gICAgICAiLi46d2VicnRjX2NvbW1vbiIsCisgICAgICAiLi4v
YXBpL3Rlc3QvdmlkZW86ZnVuY3Rpb25fdmlkZW9fZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpL3Zp
ZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAgICIuLi9jYWxsOmNhbGxfaW50ZXJm
YWNlcyIsCiAgICAgICAiLi4vY29tbW9uX3ZpZGVvIiwKQEAgLTM4NCw2ICs0MDksNyBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBkZWZpbmVzID0gW10KICAgICBzb3VyY2VzID0gWwog
ICAgICAgImNhbGxfc3RhdHNfdW5pdHRlc3QuY2MiLAorICAgICAgImNwdV9zY2FsaW5nX3Rlc3Rz
LmNjIiwKICAgICAgICJlbmNvZGVyX3J0Y3BfZmVlZGJhY2tfdW5pdHRlc3QuY2MiLAogICAgICAg
ImVuZF90b19lbmRfdGVzdHMvYmFuZHdpZHRoX3Rlc3RzLmNjIiwKICAgICAgICJlbmRfdG9fZW5k
X3Rlc3RzL2NhbGxfb3BlcmF0aW9uX3Rlc3RzLmNjIiwKQEAgLTM5MSw2ICs0MTcsNyBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL2NvbmZpZ190ZXN0
cy5jYyIsCiAgICAgICAiZW5kX3RvX2VuZF90ZXN0cy9leHRlbmRlZF9yZXBvcnRzX3Rlc3RzLmNj
IiwKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL2ZlY190ZXN0cy5jYyIsCisgICAgICAiZW5kX3Rv
X2VuZF90ZXN0cy9mcmFtZV9lbmNyeXB0aW9uX3Rlc3RzLmNjIiwKICAgICAgICJlbmRfdG9fZW5k
X3Rlc3RzL2hpc3RvZ3JhbV90ZXN0cy5jYyIsCiAgICAgICAiZW5kX3RvX2VuZF90ZXN0cy9tdWx0
aV9jb2RlY19yZWNlaXZlX3Rlc3RzLmNjIiwKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL211bHRp
X3N0cmVhbV90ZXN0ZXIuY2MiLApAQCAtMzk4LDcgKzQyNSw2IEBAIGlmIChydGNfaW5jbHVkZV90
ZXN0cykgewogICAgICAgImVuZF90b19lbmRfdGVzdHMvbXVsdGlfc3RyZWFtX3Rlc3RzLmNjIiwK
ICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL25ldHdvcmtfc3RhdGVfdGVzdHMuY2MiLAogICAgICAg
ImVuZF90b19lbmRfdGVzdHMvcHJvYmluZ190ZXN0cy5jYyIsCi0gICAgICAiZW5kX3RvX2VuZF90
ZXN0cy9yZWNlaXZlX3RpbWVfdGVzdHMuY2MiLAogICAgICAgImVuZF90b19lbmRfdGVzdHMvcmV0
cmFuc21pc3Npb25fdGVzdHMuY2MiLAogICAgICAgImVuZF90b19lbmRfdGVzdHMvcnRwX3J0Y3Bf
dGVzdHMuY2MiLAogICAgICAgImVuZF90b19lbmRfdGVzdHMvc3NyY190ZXN0cy5jYyIsCkBAIC00
MjQsOSArNDUwLDE1IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjp2aWRlbyIs
CiAgICAgICAiOnZpZGVvX21vY2tzIiwKICAgICAgICI6dmlkZW9fc3RyZWFtX2VuY29kZXJfaW1w
bCIsCisgICAgICAiLi4vYXBpOmZha2VfZnJhbWVfZGVjcnlwdG9yIiwKKyAgICAgICIuLi9hcGk6
ZmFrZV9mcmFtZV9lbmNyeXB0b3IiLAogICAgICAgIi4uL2FwaTpzaW11bGF0ZWRfbmV0d29ya19h
cGkiLAorICAgICAgIi4uL2FwaS90ZXN0L3ZpZGVvOmZ1bmN0aW9uX3ZpZGVvX2ZhY3RvcnkiLAor
ICAgICAgIi4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rv
cnkiLAorICAgICAgIi4uL2FwaS92aWRlbzplbmNvZGVkX2ltYWdlIiwKICAgICAgICIuLi9hcGkv
dmlkZW86dmlkZW9fZnJhbWUiLAogICAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIw
IiwKKyAgICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOmNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJz
IiwKICAgICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAogICAgICAg
Ii4uL2NhbGw6Y2FsbF9pbnRlcmZhY2VzIiwKICAgICAgICIuLi9jYWxsOmZha2VfbmV0d29yayIs
CkBAIC00NDMsNiArNDc1LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4v
bWVkaWE6cnRjX21lZGlhIiwKICAgICAgICIuLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCiAgICAg
ICAiLi4vbWVkaWE6cnRjX21lZGlhX3Rlc3RzX3V0aWxzIiwKKyAgICAgICIuLi9tZWRpYTpydGNf
c2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlciIsCiAgICAgICAiLi4vbW9kdWxlczptb2R1bGVfYXBp
IiwKICAgICAgICIuLi9tb2R1bGVzL3BhY2luZyIsCiAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRj
cCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby9jYWxsX3N0YXRzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vY2FsbF9zdGF0c191bml0dGVzdC5jYwppbmRleCA3MWZh
YTY5MmE1NzhhOTZlYmUzMmU5YTVkNDQ5ZmRlYjA0MjUyYWIxLi5kYzZjNjlhZjllOThjNzFiNTYz
OGIyZGQzNGJiMjM1MjQ1YmJlN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9jYWxsX3N0YXRzX3VuaXR0ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2NhbGxfc3RhdHNf
dW5pdHRlc3QuY2MKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgQ2FsbFN0YXRzVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewogfTsKIAogVEVTVF9GKENhbGxTdGF0c1Rlc3QsIEFkZEFuZFRy
aWdnZXJDYWxsYmFjaykgewotICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0
Yzo6RXZlbnQgZXZlbnQ7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQ2NF90IGtSdHQg
PSAyNTsKIApAQCAtNzcsNyArNzcsNyBAQCBURVNUX0YoQ2FsbFN0YXRzVGVzdCwgQWRkQW5kVHJp
Z2dlckNhbGxiYWNrKSB7CiB9CiAKIFRFU1RfRihDYWxsU3RhdHNUZXN0LCBQcm9jZXNzVGltZSkg
ewotICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7
CiAKICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQ2NF90IGtSdHQgPSAxMDA7CiAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgaW50NjRfdCBrUnR0MiA9IDgwOwpAQCAtMTI4LDggKzEyOCw4IEBA
IFRFU1RfRihDYWxsU3RhdHNUZXN0LCBNdWx0aXBsZU9ic2VydmVycykgewogICBzdGF0aWMgY29u
c3RleHByIGNvbnN0IGludDY0X3Qga1J0dCA9IDEwMDsKIAogICAvLyBWZXJpZnkgYm90aCBvYnNl
cnZlcnMgYXJlIHVwZGF0ZWQuCi0gIHJ0Yzo6RXZlbnQgZXYxKGZhbHNlLCBmYWxzZSk7Ci0gIHJ0
Yzo6RXZlbnQgZXYyKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZXYxOworICBydGM6OkV2
ZW50IGV2MjsKICAgRVhQRUNUX0NBTEwoc3RhdHNfb2JzZXJ2ZXJfMSwgT25SdHRVcGRhdGUoa1J0
dCwga1J0dCkpCiAgICAgICAuVGltZXMoQW55TnVtYmVyKCkpCiAgICAgICAuV2lsbE9uY2UoSW52
b2tlV2l0aG91dEFyZ3MoWyZldjFdIHsgZXYxLlNldCgpOyB9KSkKQEAgLTE2Nyw3ICsxNjcsNyBA
QCBURVNUX0YoQ2FsbFN0YXRzVGVzdCwgTXVsdGlwbGVPYnNlcnZlcnMpIHsKIAogICAvLyBGbHVz
aCB0aGUgcXVldWUgb24gdGhlIHByb2Nlc3MgdGhyZWFkIHRvIG1ha2Ugc3VyZSB3ZSByZXR1cm4g
YWZ0ZXIKICAgLy8gUHJvY2VzcygpIGhhcyBiZWVuIGNhbGxlZC4KLSAgcnRjOjpFdmVudCBldmVu
dChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGV2ZW50OwogICBwcm9jZXNzX3RocmVhZF8t
PlBvc3RUYXNrKHJ0Yzo6TmV3Q2xvc3VyZShbJmV2ZW50XSgpIHsgZXZlbnQuU2V0KCk7IH0pKTsK
ICAgZXZlbnQuV2FpdChydGM6OkV2ZW50OjprRm9yZXZlcik7CiB9CkBAIC0xODMsNyArMTgzLDcg
QEAgVEVTVF9GKENhbGxTdGF0c1Rlc3QsIENoYW5nZVJ0dCkgewogICBjYWxsX3N0YXRzXy5SZWdp
c3RlclN0YXRzT2JzZXJ2ZXIoJnN0YXRzX29ic2VydmVyKTsKICAgUnRjcFJ0dFN0YXRzKiBydGNw
X3J0dF9zdGF0cyA9ICZjYWxsX3N0YXRzXzsKIAotICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBm
YWxzZSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBp
bnQ2NF90IGtGaXJzdFJ0dCA9IDEwMDsKICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQ2NF90
IGtMb3dSdHQgPSBrRmlyc3RSdHQgLSAyMDsKQEAgLTI0MCw3ICsyNDAsNyBAQCBURVNUX0YoQ2Fs
bFN0YXRzVGVzdCwgQ2hhbmdlUnR0KSB7CiB9CiAKIFRFU1RfRihDYWxsU3RhdHNUZXN0LCBMYXN0
UHJvY2Vzc2VkUnR0KSB7Ci0gIHJ0Yzo6RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgcnRj
OjpFdmVudCBldmVudDsKICAgTW9ja1N0YXRzT2JzZXJ2ZXIgc3RhdHNfb2JzZXJ2ZXI7CiAgIGNh
bGxfc3RhdHNfLlJlZ2lzdGVyU3RhdHNPYnNlcnZlcigmc3RhdHNfb2JzZXJ2ZXIpOwogICBSdGNw
UnR0U3RhdHMqIHJ0Y3BfcnR0X3N0YXRzID0gJmNhbGxfc3RhdHNfOwpAQCAtMjg5LDcgKzI4OSw3
IEBAIFRFU1RfRihDYWxsU3RhdHNUZXN0LCBMYXN0UHJvY2Vzc2VkUnR0KSB7CiAKIFRFU1RfRihD
YWxsU3RhdHNUZXN0LCBQcm9kdWNlc0hpc3RvZ3JhbU1ldHJpY3MpIHsKICAgbWV0cmljczo6UmVz
ZXQoKTsKLSAgcnRjOjpFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGV2
ZW50OwogICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGludDY0X3Qga1J0dCA9IDEyMzsKICAgUnRj
cFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0cyA9ICZjYWxsX3N0YXRzXzsKICAgTW9ja1N0YXRzT2Jz
ZXJ2ZXIgc3RhdHNfb2JzZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9jcHVfc2NhbGluZ190ZXN0cy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2NwdV9zY2FsaW5nX3Rlc3Rz
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYwOGYwNWUwNTI0N2RiOWYyMzZjM2YyZDA4MTA4ZTM5YjFkMzdiZGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9jcHVfc2NhbGluZ190ZXN0cy5jYwpAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgorI2luY2x1ZGUg
InRlc3QvZmllbGRfdHJpYWwuaCIKKyNpbmNsdWRlICJ0ZXN0L2ZyYW1lX2dlbmVyYXRvcl9jYXB0
dXJlci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7Citjb25zdGV4cHIgaW50
IGtXaWR0aCA9IDEyODA7Citjb25zdGV4cHIgaW50IGtIZWlnaHQgPSA3MjA7Citjb25zdGV4cHIg
aW50IGtGcHMgPSAyODsKK30gIC8vIG5hbWVzcGFjZQorCisvLyBNaW5pbWFsIG5vcm1hbCB1c2Fn
ZSBhdCBzdGFydCwgdGhlbiA2MHMgb3ZlcnVzZS4KK2NsYXNzIENwdU92ZXJ1c2VUZXN0IDogcHVi
bGljIHRlc3Q6OkNhbGxUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIENwdU92ZXJ1c2VUZXN0KCkKKyAg
ICAgIDogZmllbGRfdHJpYWxzXygiV2ViUlRDLUZvcmNlU2ltdWxhdGVkT3ZlcnVzZUludGVydmFs
TXMvMS02MDAwMC02MDAwMC8iKSB7CisgIH0KKworICB2b2lkIFJ1blRlc3RBbmRDaGVja0ZvckFk
YXB0YXRpb24oCisgICAgICBjb25zdCBEZWdyYWRhdGlvblByZWZlcmVuY2UmIGRlZ3JhZGF0aW9u
X3ByZWZlcmVuY2UsCisgICAgICBib29sIGV4cGVjdF9hZGFwdGF0aW9uKTsKKworICB0ZXN0OjpT
Y29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHNfOworfTsKKwordm9pZCBDcHVPdmVydXNlVGVz
dDo6UnVuVGVzdEFuZENoZWNrRm9yQWRhcHRhdGlvbigKKyAgICBjb25zdCBEZWdyYWRhdGlvblBy
ZWZlcmVuY2UmIGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UsCisgICAgYm9vbCBleHBlY3RfYWRhcHRh
dGlvbikgeworICBjbGFzcyBPdmVydXNlT2JzZXJ2ZXIKKyAgICAgIDogcHVibGljIHRlc3Q6OlNl
bmRUZXN0LAorICAgICAgICBwdWJsaWMgdGVzdDo6RnJhbWVHZW5lcmF0b3JDYXB0dXJlcjo6U2lu
a1dhbnRzT2JzZXJ2ZXIgeworICAgcHVibGljOgorICAgIE92ZXJ1c2VPYnNlcnZlcihjb25zdCBE
ZWdyYWRhdGlvblByZWZlcmVuY2UmIGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UsCisgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZXhwZWN0X2FkYXB0YXRpb24pCisgICAgICAgIDogU2VuZFRlc3QoZXhw
ZWN0X2FkYXB0YXRpb24gPyBrTG9uZ1RpbWVvdXRNcyA6IGtEZWZhdWx0VGltZW91dE1zKSwKKyAg
ICAgICAgICBkZWdyYWRhdGlvbl9wcmVmZXJlbmNlXyhkZWdyYWRhdGlvbl9wcmVmZXJlbmNlKSwK
KyAgICAgICAgICBleHBlY3RfYWRhcHRhdGlvbl8oZXhwZWN0X2FkYXB0YXRpb24pIHt9CisKKyAg
IHByaXZhdGU6CisgICAgdm9pZCBPbkZyYW1lR2VuZXJhdG9yQ2FwdHVyZXJDcmVhdGVkKAorICAg
ICAgICB0ZXN0OjpGcmFtZUdlbmVyYXRvckNhcHR1cmVyKiBmcmFtZV9nZW5lcmF0b3JfY2FwdHVy
ZXIpIG92ZXJyaWRlIHsKKyAgICAgIGZyYW1lX2dlbmVyYXRvcl9jYXB0dXJlci0+U2V0U2lua1dh
bnRzT2JzZXJ2ZXIodGhpcyk7CisgICAgICAvLyBTZXQgaW5pdGlhbCByZXNvbHV0aW9uLgorICAg
ICAgZnJhbWVfZ2VuZXJhdG9yX2NhcHR1cmVyLT5DaGFuZ2VSZXNvbHV0aW9uKGtXaWR0aCwga0hl
aWdodCk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIHdoZW4gRnJhbWVHZW5lcmF0b3JDYXB0dXJl
cjo6QWRkT3JVcGRhdGVTaW5rIGlzIGNhbGxlZC4KKyAgICB2b2lkIE9uU2lua1dhbnRzQ2hhbmdl
ZChydGM6OlZpZGVvU2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiogc2luaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlZpZGVvU2lua1dhbnRzJiB3YW50cykgb3ZlcnJp
ZGUgeworICAgICAgaWYgKHdhbnRzLm1heF9waXhlbF9jb3VudCA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludD46Om1heCgpICYmCisgICAgICAgICAgd2FudHMubWF4X2ZyYW1lcmF0ZV9mcHMgPT0g
a0ZwcykgeworICAgICAgICAvLyBNYXggY29uZmlndXJlZCBmcmFtZXJhdGUgaXMgaW5pdGlhbGx5
IHNldC4KKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgc3dpdGNoIChkZWdyYWRhdGlv
bl9wcmVmZXJlbmNlXykgeworICAgICAgICBjYXNlIERlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TUFJ
TlRBSU5fRlJBTUVSQVRFOgorICAgICAgICAgIEVYUEVDVF9MVCh3YW50cy5tYXhfcGl4ZWxfY291
bnQsIGtXaWR0aCAqIGtIZWlnaHQpOworICAgICAgICAgIG9ic2VydmF0aW9uX2NvbXBsZXRlXy5T
ZXQoKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEZWdyYWRhdGlvblByZWZlcmVu
Y2U6Ok1BSU5UQUlOX1JFU09MVVRJT046CisgICAgICAgICAgRVhQRUNUX0xUKHdhbnRzLm1heF9m
cmFtZXJhdGVfZnBzLCBrRnBzKTsKKyAgICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0
KCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVncmFkYXRpb25QcmVmZXJlbmNl
OjpCQUxBTkNFRDoKKyAgICAgICAgICBpZiAod2FudHMubWF4X3BpeGVsX2NvdW50ID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkgJiYKKyAgICAgICAgICAgICAgd2FudHMubWF4X2Zy
YW1lcmF0ZV9mcHMgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkgeworICAgICAg
ICAgICAgLy8gfGFkYXB0X2NvdW50ZXJzX3wgbWFwIGluIFZpZGVvU3RyZWFtRW5jb2RlciBpcyBy
ZXNldCB3aGVuCisgICAgICAgICAgICAvLyBiYWxhbmNlZCBtb2RlIGlzIHNldC4KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgICBFWFBFQ1RfVFJVRSh3YW50cy5tYXhf
cGl4ZWxfY291bnQgPCBrV2lkdGggKiBrSGVpZ2h0IHx8CisgICAgICAgICAgICAgICAgICAgICAg
d2FudHMubWF4X2ZyYW1lcmF0ZV9mcHMgPCBrRnBzKTsKKyAgICAgICAgICBvYnNlcnZhdGlvbl9j
b21wbGV0ZV8uU2V0KCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIE1vZGlm
eVZpZGVvQ29uZmlncygKKyAgICAgICAgVmlkZW9TZW5kU3RyZWFtOjpDb25maWcqIHNlbmRfY29u
ZmlnLAorICAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1JlY2VpdmVTdHJlYW06OkNvbmZpZz4qIHJl
Y2VpdmVfY29uZmlncywKKyAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnKiBlbmNvZGVyX2NvbmZp
Zykgb3ZlcnJpZGUgeworICAgICAgRVhQRUNUX0ZBTFNFKGVuY29kZXJfY29uZmlnLT5zaW11bGNh
c3RfbGF5ZXJzLmVtcHR5KCkpOworICAgICAgZW5jb2Rlcl9jb25maWctPnNpbXVsY2FzdF9sYXll
cnNbMF0ubWF4X2ZyYW1lcmF0ZSA9IGtGcHM7CisgICAgfQorCisgICAgdm9pZCBNb2RpZnlWaWRl
b0RlZ3JhZGF0aW9uUHJlZmVyZW5jZSgKKyAgICAgICAgRGVncmFkYXRpb25QcmVmZXJlbmNlKiBk
ZWdyYWRhdGlvbl9wcmVmZXJlbmNlKSBvdmVycmlkZSB7CisgICAgICAqZGVncmFkYXRpb25fcHJl
ZmVyZW5jZSA9IGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2VfOworICAgIH0KKworICAgIHZvaWQgUGVy
Zm9ybVRlc3QoKSBvdmVycmlkZSB7CisgICAgICBFWFBFQ1RfRVEoZXhwZWN0X2FkYXB0YXRpb25f
LCBXYWl0KCkpCisgICAgICAgICAgPDwgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhIHNj
YWxlIGRvd24uIjsKKyAgICB9CisKKyAgICBjb25zdCBEZWdyYWRhdGlvblByZWZlcmVuY2UgZGVn
cmFkYXRpb25fcHJlZmVyZW5jZV87CisgICAgY29uc3QgYm9vbCBleHBlY3RfYWRhcHRhdGlvbl87
CisgIH0gdGVzdChkZWdyYWRhdGlvbl9wcmVmZXJlbmNlLCBleHBlY3RfYWRhcHRhdGlvbik7CisK
KyAgUnVuQmFzZVRlc3QoJnRlc3QpOworfQorCitURVNUX0YoQ3B1T3ZlcnVzZVRlc3QsIEFkYXB0
c0Rvd25JblJlc29sdXRpb25Pbk92ZXJ1c2UpIHsKKyAgUnVuVGVzdEFuZENoZWNrRm9yQWRhcHRh
dGlvbihEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX0ZSQU1FUkFURSwgdHJ1ZSk7Cit9
CisKK1RFU1RfRihDcHVPdmVydXNlVGVzdCwgQWRhcHRzRG93bkluRnBzT25PdmVydXNlKSB7Cisg
IFJ1blRlc3RBbmRDaGVja0ZvckFkYXB0YXRpb24oRGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlO
VEFJTl9SRVNPTFVUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwor
fQorCitURVNUX0YoQ3B1T3ZlcnVzZVRlc3QsIEFkYXB0c0Rvd25JblJlc29sdXRpb25PckZwc09u
T3ZlcnVzZSkgeworICBSdW5UZXN0QW5kQ2hlY2tGb3JBZGFwdGF0aW9uKERlZ3JhZGF0aW9uUHJl
ZmVyZW5jZTo6QkFMQU5DRUQsIHRydWUpOworfQorCitURVNUX0YoQ3B1T3ZlcnVzZVRlc3QsIE5v
QWRhcHREb3duT25PdmVydXNlKSB7CisgIFJ1blRlc3RBbmRDaGVja0ZvckFkYXB0YXRpb24oRGVn
cmFkYXRpb25QcmVmZXJlbmNlOjpESVNBQkxFRCwgZmFsc2UpOworfQorfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9iYW5kd2lkdGhfdGVzdHMuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3Rz
L2JhbmR3aWR0aF90ZXN0cy5jYwppbmRleCBhYjVlNTY4N2I5OTdiYWJlYmI0MjBjMzdmNmY1MTY2
ZjA0YjM5N2MzLi5hMzVmMDhjM2Y1ZjZiZTNlNmIyNjIxNDE4YTE5MjkwNTlhOGIyYTI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9l
bmRfdG9fZW5kX3Rlc3RzL2JhbmR3aWR0aF90ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2JhbmR3aWR0
aF90ZXN0cy5jYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiYXBpL3Rlc3Qvc2lt
dWxhdGVkX25ldHdvcmsuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlw
ZS5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3AuaCIKQEAgLTE0NSw3ICsxNDYsNiBAQCBURVNU
X0YoQmFuZHdpZHRoRW5kVG9FbmRUZXN0LCBSZW1iV2l0aFNlbmRTaWRlQndlKSB7CiAgICAgICAg
ICAgc2VuZGVyX3NzcmNfKDApLAogICAgICAgICAgIHJlbWJfYml0cmF0ZV9icHNfKDEwMDAwMDAp
LAogICAgICAgICAgIHJlY2VpdmVfdHJhbnNwb3J0XyhudWxscHRyKSwKLSAgICAgICAgICBzdG9w
X2V2ZW50XyhmYWxzZSwgZmFsc2UpLAogICAgICAgICAgIHBvbGxlcl90aHJlYWRfKCZCaXRyYXRl
U3RhdHNQb2xsaW5nVGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkJpdHJhdGVTdGF0c1BvbGxpbmdUaHJlYWQiKSwKQEAgLTE2
MCwxNSArMTYwLDE1IEBAIFRFU1RfRihCYW5kd2lkdGhFbmRUb0VuZFRlc3QsIFJlbWJXaXRoU2Vu
ZFNpZGVCd2UpIHsKICAgICAgICAgICB0YXNrX3F1ZXVlLCBudWxscHRyLCB0aGlzLCB0ZXN0OjpQ
YWNrZXRUcmFuc3BvcnQ6OmtSZWNlaXZlciwKICAgICAgICAgICBwYXlsb2FkX3R5cGVfbWFwXywK
ICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICAg
ICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAotICAgICAgICAgICAgICBhYnNsOjptYWtl
X3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgIERlZmF1bHROZXR3
b3JrU2ltdWxhdGlvbkNvbmZpZygpKSkpOworICAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRp
bWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZp
b3JDb25maWcoKSkpKTsKICAgICAgIHJldHVybiByZWNlaXZlX3RyYW5zcG9ydF87CiAgICAgfQog
Ci0gICAgdm9pZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSBv
dmVycmlkZSB7CisgICAgdm9pZCBNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKAorICAgICAgICBC
aXRyYXRlQ29uc3RyYWludHMqIGJpdHJhdGVfY29uZmlnKSBvdmVycmlkZSB7CiAgICAgICAvLyBT
ZXQgYSBoaWdoIHN0YXJ0IGJpdHJhdGUgdG8gcmVkdWNlIHRoZSB0ZXN0IGNvbXBsZXRpb24gdGlt
ZS4KLSAgICAgIGNvbmZpZy0+Yml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMgPSByZW1i
X2JpdHJhdGVfYnBzXzsKKyAgICAgIGJpdHJhdGVfY29uZmlnLT5zdGFydF9iaXRyYXRlX2JwcyA9
IHJlbWJfYml0cmF0ZV9icHNfOwogICAgIH0KIAogICAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdz
KApAQCAtMjc0LDYgKzI3NCw4IEBAIFRFU1RfRihCYW5kd2lkdGhFbmRUb0VuZFRlc3QsIFJlcG9y
dHNTZXRFbmNvZGVyUmF0ZXMpIHsKICAgICAgICAgICB0YXNrX3F1ZXVlXyh0YXNrX3F1ZXVlKSwK
ICAgICAgICAgICBzZW5kX3N0cmVhbV8obnVsbHB0ciksCiAgICAgICAgICAgZW5jb2Rlcl9mYWN0
b3J5Xyh0aGlzKSwKKyAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XygKKyAgICAg
ICAgICAgICAgQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSksCiAg
ICAgICAgICAgYml0cmF0ZV9rYnBzXygwKSB7fQogCiAgICAgdm9pZCBPblZpZGVvU3RyZWFtc0Ny
ZWF0ZWQoCkBAIC0yODcsNiArMjg5LDggQEAgVEVTVF9GKEJhbmR3aWR0aEVuZFRvRW5kVGVzdCwg
UmVwb3J0c1NldEVuY29kZXJSYXRlcykgewogICAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1JlY2Vp
dmVTdHJlYW06OkNvbmZpZz4qIHJlY2VpdmVfY29uZmlncywKICAgICAgICAgVmlkZW9FbmNvZGVy
Q29uZmlnKiBlbmNvZGVyX2NvbmZpZykgb3ZlcnJpZGUgewogICAgICAgc2VuZF9jb25maWctPmVu
Y29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gJmVuY29kZXJfZmFjdG9yeV87CisgICAg
ICBzZW5kX2NvbmZpZy0+ZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5
ID0KKyAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKTsKICAgICAgIFJU
Q19EQ0hFQ0tfRVEoMSwgZW5jb2Rlcl9jb25maWctPm51bWJlcl9vZl9zdHJlYW1zKTsKICAgICB9
CiAKQEAgLTM0NSw2ICszNDksNyBAQCBURVNUX0YoQmFuZHdpZHRoRW5kVG9FbmRUZXN0LCBSZXBv
cnRzU2V0RW5jb2RlclJhdGVzKSB7CiAgICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF87CiAg
ICAgVmlkZW9TZW5kU3RyZWFtKiBzZW5kX3N0cmVhbV87CiAgICAgdGVzdDo6VmlkZW9FbmNvZGVy
UHJveHlGYWN0b3J5IGVuY29kZXJfZmFjdG9yeV87CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
Qml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+IGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfOwogICAg
IHVpbnQzMl90IGJpdHJhdGVfa2Jwc18gUlRDX0dVQVJERURfQlkoY3JpdF8pOwogICB9IHRlc3Qo
JnRhc2tfcXVldWVfKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9jYWxsX29wZXJhdGlvbl90ZXN0
cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2Vu
ZF90b19lbmRfdGVzdHMvY2FsbF9vcGVyYXRpb25fdGVzdHMuY2MKaW5kZXggMmFjZDFiOWZlODEy
OTE4NzAxYWQ2ZjZmNmM4MGY2ZDU3MTMyYzUxZi4uZWMzY2E4NGJmYjU0N2MxMGQ2NDM5YzliYzNl
MzE3YzM2YjA2MGY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9jYWxsX29wZXJhdGlvbl90ZXN0cy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9l
bmRfdG9fZW5kX3Rlc3RzL2NhbGxfb3BlcmF0aW9uX3Rlc3RzLmNjCkBAIC05Miw4ICs5Miw2IEBA
IFRFU1RfUChDYWxsT3BlcmF0aW9uRW5kVG9FbmRUZXN0LCBSZW5kZXJzU2luZ2xlRGVsYXllZEZy
YW1lKSB7CiAKICAgY2xhc3MgUmVuZGVyZXIgOiBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZh
Y2U8VmlkZW9GcmFtZT4gewogICAgcHVibGljOgotICAgIFJlbmRlcmVyKCkgOiBldmVudF8oZmFs
c2UsIGZhbHNlKSB7fQotCiAgICAgdm9pZCBPbkZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVv
X2ZyYW1lKSBvdmVycmlkZSB7CiAgICAgICBTbGVlcE1zKGtSZW5kZXJEZWxheU1zKTsKICAgICAg
IGV2ZW50Xy5TZXQoKTsKQEAgLTExNCwxNSArMTEyLDE1IEBAIFRFU1RfUChDYWxsT3BlcmF0aW9u
RW5kVG9FbmRUZXN0LCBSZW5kZXJzU2luZ2xlRGVsYXllZEZyYW1lKSB7CiAKICAgICBzZW5kZXJf
dHJhbnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGlyZWN0VHJhbnNwb3J0PigKICAg
ICAgICAgJnRhc2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29y
a1BpcGU+KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFr
ZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAg
ICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9jazo6R2V0UmVhbFRpbWVD
bG9jaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6
Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwK
ICAgICAgICAgc2VuZGVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiAgICAgcmVj
ZWl2ZXJfdHJhbnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGlyZWN0VHJhbnNwb3J0
PigKICAgICAgICAgJnRhc2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtl
TmV0d29ya1BpcGU+KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJz
bDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwK
KyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9jazo6R2V0UmVh
bFRpbWVDbG9jaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmln
KCkpKSwKICAgICAgICAgcmVjZWl2ZXJfY2FsbF8uZ2V0KCksIHBheWxvYWRfdHlwZV9tYXBfKTsK
ICAgICBzZW5kZXJfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+UmVjZWl2
ZXIoKSk7CiAgICAgcmVjZWl2ZXJfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihzZW5kZXJfY2FsbF8t
PlJlY2VpdmVyKCkpOwpAQCAtMTYxLDggKzE1OSw2IEBAIFRFU1RfUChDYWxsT3BlcmF0aW9uRW5k
VG9FbmRUZXN0LCBSZW5kZXJzU2luZ2xlRGVsYXllZEZyYW1lKSB7CiBURVNUX1AoQ2FsbE9wZXJh
dGlvbkVuZFRvRW5kVGVzdCwgVHJhbnNtaXRzRmlyc3RGcmFtZSkgewogICBjbGFzcyBSZW5kZXJl
ciA6IHB1YmxpYyBydGM6OlZpZGVvU2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiB7CiAgICBwdWJs
aWM6Ci0gICAgUmVuZGVyZXIoKSA6IGV2ZW50XyhmYWxzZSwgZmFsc2UpIHt9Ci0KICAgICB2b2lk
IE9uRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9fZnJhbWUpIG92ZXJyaWRlIHsgZXZlbnRf
LlNldCgpOyB9CiAKICAgICBib29sIFdhaXQoKSB7IHJldHVybiBldmVudF8uV2FpdChrRGVmYXVs
dFRpbWVvdXRNcyk7IH0KQEAgLTE4MiwxNSArMTc4LDE1IEBAIFRFU1RfUChDYWxsT3BlcmF0aW9u
RW5kVG9FbmRUZXN0LCBUcmFuc21pdHNGaXJzdEZyYW1lKSB7CiAKICAgICBzZW5kZXJfdHJhbnNw
b3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGlyZWN0VHJhbnNwb3J0PigKICAgICAgICAg
JnRhc2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+
KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlx
dWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2Vf
dW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAg
ICAgc2VuZGVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiAgICAgcmVjZWl2ZXJf
dHJhbnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGlyZWN0VHJhbnNwb3J0PigKICAg
ICAgICAgJnRhc2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29y
a1BpcGU+KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFr
ZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAg
ICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9jazo6R2V0UmVhbFRpbWVD
bG9jaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6
Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwK
ICAgICAgICAgcmVjZWl2ZXJfY2FsbF8uZ2V0KCksIHBheWxvYWRfdHlwZV9tYXBfKTsKICAgICBz
ZW5kZXJfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7
CiAgICAgcmVjZWl2ZXJfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihzZW5kZXJfY2FsbF8tPlJlY2Vp
dmVyKCkpOwpAQCAtMjIxLDc5ICsyMTcsNCBAQCBURVNUX1AoQ2FsbE9wZXJhdGlvbkVuZFRvRW5k
VGVzdCwgVHJhbnNtaXRzRmlyc3RGcmFtZSkgewogICB9KTsKIH0KIAotVEVTVF9QKENhbGxPcGVy
YXRpb25FbmRUb0VuZFRlc3QsIE9ic2VydmVyc0VuY29kZWRGcmFtZXMpIHsKLSAgY2xhc3MgRW5j
b2RlZEZyYW1lVGVzdE9ic2VydmVyIDogcHVibGljIEVuY29kZWRGcmFtZU9ic2VydmVyIHsKLSAg
IHB1YmxpYzoKLSAgICBFbmNvZGVkRnJhbWVUZXN0T2JzZXJ2ZXIoKQotICAgICAgICA6IGxlbmd0
aF8oMCksIGZyYW1lX3R5cGVfKGtFbXB0eUZyYW1lKSwgY2FsbGVkXyhmYWxzZSwgZmFsc2UpIHt9
Ci0gICAgdmlydHVhbCB+RW5jb2RlZEZyYW1lVGVzdE9ic2VydmVyKCkge30KLQotICAgIHZpcnR1
YWwgdm9pZCBFbmNvZGVkRnJhbWVDYWxsYmFjayhjb25zdCBFbmNvZGVkRnJhbWUmIGVuY29kZWRf
ZnJhbWUpIHsKLSAgICAgIGZyYW1lX3R5cGVfID0gZW5jb2RlZF9mcmFtZS5mcmFtZV90eXBlXzsK
LSAgICAgIGxlbmd0aF8gPSBlbmNvZGVkX2ZyYW1lLmxlbmd0aF87Ci0gICAgICBidWZmZXJfLnJl
c2V0KG5ldyB1aW50OF90W2xlbmd0aF9dKTsKLSAgICAgIG1lbWNweShidWZmZXJfLmdldCgpLCBl
bmNvZGVkX2ZyYW1lLmRhdGFfLCBsZW5ndGhfKTsKLSAgICAgIGNhbGxlZF8uU2V0KCk7Ci0gICAg
fQotCi0gICAgYm9vbCBXYWl0KCkgeyByZXR1cm4gY2FsbGVkXy5XYWl0KGtEZWZhdWx0VGltZW91
dE1zKTsgfQotCi0gICBwcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IGJ1
ZmZlcl87Ci0gICAgc2l6ZV90IGxlbmd0aF87Ci0gICAgRnJhbWVUeXBlIGZyYW1lX3R5cGVfOwot
ICAgIHJ0Yzo6RXZlbnQgY2FsbGVkXzsKLSAgfTsKLQotICBFbmNvZGVkRnJhbWVUZXN0T2JzZXJ2
ZXIgcG9zdF9lbmNvZGVfb2JzZXJ2ZXI7Ci0gIHRlc3Q6OkZyYW1lRm9yd2FyZGVyIGZvcndhcmRl
cjsKLSAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkZyYW1lR2VuZXJhdG9yPiBmcmFtZV9nZW5lcmF0
b3I7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4gc2VuZGVyX3Ry
YW5zcG9ydDsKLSAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4gcmVjZWl2
ZXJfdHJhbnNwb3J0OwotCi0gIHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsKLSAgICBDcmVh
dGVDYWxscygpOwotCi0gICAgc2VuZGVyX3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRl
c3Q6OkRpcmVjdFRyYW5zcG9ydD4oCi0gICAgICAgICZ0YXNrX3F1ZXVlXywKLSAgICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICAgIENsb2NrOjpHZXRS
ZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2lt
dWxhdGlvbkNvbmZpZygpKSksCi0gICAgICAgIHNlbmRlcl9jYWxsXy5nZXQoKSwgcGF5bG9hZF90
eXBlX21hcF8pOwotICAgIHJlY2VpdmVyX3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRl
c3Q6OkRpcmVjdFRyYW5zcG9ydD4oCi0gICAgICAgICZ0YXNrX3F1ZXVlXywKLSAgICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICAgIENsb2NrOjpHZXRS
ZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2lt
dWxhdGlvbkNvbmZpZygpKSksCi0gICAgICAgIHJlY2VpdmVyX2NhbGxfLmdldCgpLCBwYXlsb2Fk
X3R5cGVfbWFwXyk7Ci0gICAgc2VuZGVyX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIocmVjZWl2ZXJf
Y2FsbF8tPlJlY2VpdmVyKCkpOwotICAgIHJlY2VpdmVyX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIo
c2VuZGVyX2NhbGxfLT5SZWNlaXZlcigpKTsKLQotICAgIENyZWF0ZVNlbmRDb25maWcoMSwgMCwg
MCwgc2VuZGVyX3RyYW5zcG9ydC5nZXQoKSk7Ci0gICAgQ3JlYXRlTWF0Y2hpbmdSZWNlaXZlQ29u
ZmlncyhyZWNlaXZlcl90cmFuc3BvcnQuZ2V0KCkpOwotICAgIEdldFZpZGVvU2VuZENvbmZpZygp
LT5wb3N0X2VuY29kZV9jYWxsYmFjayA9ICZwb3N0X2VuY29kZV9vYnNlcnZlcjsKLQotICAgIENy
ZWF0ZVZpZGVvU3RyZWFtcygpOwotICAgIFN0YXJ0KCk7Ci0KLSAgICBmcmFtZV9nZW5lcmF0b3Ig
PSB0ZXN0OjpGcmFtZUdlbmVyYXRvcjo6Q3JlYXRlU3F1YXJlR2VuZXJhdG9yKAotICAgICAgICBr
RGVmYXVsdFdpZHRoLCBrRGVmYXVsdEhlaWdodCwgYWJzbDo6bnVsbG9wdCwgYWJzbDo6bnVsbG9w
dCk7Ci0gICAgR2V0VmlkZW9TZW5kU3RyZWFtKCktPlNldFNvdXJjZSgmZm9yd2FyZGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVncmFkYXRpb25QcmVmZXJlbmNlOjpN
QUlOVEFJTl9GUkFNRVJBVEUpOwotICAgIGZvcndhcmRlci5JbmNvbWluZ0NhcHR1cmVkRnJhbWUo
KmZyYW1lX2dlbmVyYXRvci0+TmV4dEZyYW1lKCkpOwotICB9KTsKLQotICBFWFBFQ1RfVFJVRShw
b3N0X2VuY29kZV9vYnNlcnZlci5XYWl0KCkpCi0gICAgICA8PCAiVGltZWQgb3V0IHdoaWxlIHdh
aXRpbmcgZm9yIHNlbmQtc2lkZSBlbmNvZGVkLWZyYW1lIGNhbGxiYWNrLiI7Ci0KLSAgdGFza19x
dWV1ZV8uU2VuZFRhc2soW3RoaXMsICZzZW5kZXJfdHJhbnNwb3J0LCAmcmVjZWl2ZXJfdHJhbnNw
b3J0XSgpIHsKLSAgICBTdG9wKCk7Ci0gICAgRGVzdHJveVN0cmVhbXMoKTsKLSAgICBzZW5kZXJf
dHJhbnNwb3J0LnJlc2V0KCk7Ci0gICAgcmVjZWl2ZXJfdHJhbnNwb3J0LnJlc2V0KCk7Ci0gICAg
RGVzdHJveUNhbGxzKCk7Ci0gIH0pOwotfQotCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9l
bmRfdG9fZW5kX3Rlc3RzL2NvZGVjX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9jb2RlY190ZXN0cy5jYwpp
bmRleCBmYWQzYWM3ZWRlZjNkMGRhYmMzZDJhMTVmODg4NjY5ZjgxMzFmYmI4Li42N2VmNjExYTcw
ODg4MjNkN2QyZGRjNDMzMzJlNDhhNmEwZGZlNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2NvZGVj
X3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvY29kZWNfdGVzdHMuY2MKQEAgLTgsNiArOCw3IEBACiAg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCiAgKi8KIAorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2Vu
Y29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGRlY29kZXJm
YWN0b3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZW5jb2RlcmZhY3Rvcnku
aCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9pbmNsdWRlL2gy
NjQuaCIKQEAgLTE4LDcgKzE5LDYgQEAKICNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgogI2lu
Y2x1ZGUgInRlc3QvZW5jb2Rlcl9zZXR0aW5ncy5oIgogI2luY2x1ZGUgInRlc3QvZmllbGRfdHJp
YWwuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgog
I2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0xMTgsNyAr
MTE4LDcgQEAgVEVTVF9QKENvZGVjRW5kVG9FbmRUZXN0LCBTZW5kc0FuZFJlY2VpdmVzVlA4Um90
YXRpb245MCkgewogICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9CiAKLSNpZiAhZGVmaW5lZChSVENf
RElTQUJMRV9WUDkpCisjaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIFRFU1RfUChDb2RlY0Vu
ZFRvRW5kVGVzdCwgU2VuZHNBbmRSZWNlaXZlc1ZQOSkgewogICB0ZXN0OjpGdW5jdGlvblZpZGVv
RW5jb2RlckZhY3RvcnkgZW5jb2Rlcl9mYWN0b3J5KAogICAgICAgW10oKSB7IHJldHVybiBWUDlF
bmNvZGVyOjpDcmVhdGUoKTsgfSk7CkBAIC0xNzcsNyArMTc3LDcgQEAgVEVTVF9QKENvZGVjRW5k
VG9FbmRUZXN0LCBTZW5kc0FuZFJlY2VpdmVzTXVsdGlwbGV4VmlkZW9Sb3RhdGlvbjkwKSB7CiAg
IFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KIAotI2VuZGlmICAvLyAhZGVmaW5lZChSVENfRElTQUJM
RV9WUDkpCisjZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKICNpZiBkZWZpbmVk
KFdFQlJUQ19VU0VfSDI2NCkKIGNsYXNzIEVuZFRvRW5kVGVzdEgyNjQgOiBwdWJsaWMgdGVzdDo6
Q2FsbFRlc3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2NvbmZpZ190ZXN0cy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMv
Y29uZmlnX3Rlc3RzLmNjCmluZGV4IGQzMmIxMTE4YjdjMzIxNzQ3MTI0ZTg4NzkyZTY2YjcxMTYy
OTlhNDguLjFkMzM1ODljOWQxY2VkN2NmMDI4MjA3MzMwZTMyZDU3MzIwODFmMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90
b19lbmRfdGVzdHMvY29uZmlnX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvY29uZmlnX3Rlc3RzLmNj
CkBAIC00OSw2ICs0OSwxMiBAQCBURVNUX0YoQ29uZmlnRW5kVG9FbmRUZXN0LCBWZXJpZnlEZWZh
dWx0U2VuZENvbmZpZ1BhcmFtZXRlcnMpIHsKICAgICAgIDw8ICJFbmFibGluZyBSVFggcmVxdWly
ZXMgcnRwbWFwOiBydHggbmVnb3RpYXRpb24uIjsKICAgRVhQRUNUX1RSVUUoZGVmYXVsdF9zZW5k
X2NvbmZpZy5ydHAuZXh0ZW5zaW9ucy5lbXB0eSgpKQogICAgICAgPDwgIkVuYWJsaW5nIFJUUCBl
eHRlbnNpb25zIHJlcXVpcmUgbmVnb3RpYXRpb24uIjsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIGRl
ZmF1bHRfc2VuZF9jb25maWcuZnJhbWVfZW5jcnlwdG9yKQorICAgICAgPDwgIkVuYWJsaW5nIEZy
YW1lIEVuY3J5cHRpb24gcmVxdWlyZXMgYSBmcmFtZSBlbmNyeXB0b3IgdG8gYmUgYXR0YWNoZWQi
OworICBFWFBFQ1RfRkFMU0UoCisgICAgICBkZWZhdWx0X3NlbmRfY29uZmlnLmNyeXB0b19vcHRp
b25zLnNmcmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24pCisgICAgICA8PCAiRW5hYmxpbmcg
UmVxdWlyZSBGcmFtZSBFbmNyeXB0aW9uIG1lYW5zIGFuIGVuY3J5cHRvciBtdXN0IGJlICIKKyAg
ICAgICAgICJhdHRhY2hlZCI7CiAKICAgVmVyaWZ5RW1wdHlOYWNrQ29uZmlnKGRlZmF1bHRfc2Vu
ZF9jb25maWcucnRwLm5hY2spOwogICBWZXJpZnlFbXB0eVVscGZlY0NvbmZpZyhkZWZhdWx0X3Nl
bmRfY29uZmlnLnJ0cC51bHBmZWMpOwpAQCAtNzAsMTIgKzc2LDE2IEBAIFRFU1RfRihDb25maWdF
bmRUb0VuZFRlc3QsIFZlcmlmeURlZmF1bHRWaWRlb1JlY2VpdmVDb25maWdQYXJhbWV0ZXJzKSB7
CiAgICAgICA8PCAiRW5hYmxpbmcgUlRYIHJlcXVpcmVzIHJ0cG1hcDogcnR4IG5lZ290aWF0aW9u
LiI7CiAgIEVYUEVDVF9UUlVFKGRlZmF1bHRfcmVjZWl2ZV9jb25maWcucnRwLmV4dGVuc2lvbnMu
ZW1wdHkoKSkKICAgICAgIDw8ICJFbmFibGluZyBSVFAgZXh0ZW5zaW9ucyByZXF1aXJlIG5lZ290
aWF0aW9uLiI7Ci0KICAgVmVyaWZ5RW1wdHlOYWNrQ29uZmlnKGRlZmF1bHRfcmVjZWl2ZV9jb25m
aWcucnRwLm5hY2spOwogICBFWFBFQ1RfRVEoLTEsIGRlZmF1bHRfcmVjZWl2ZV9jb25maWcucnRw
LnVscGZlY19wYXlsb2FkX3R5cGUpCiAgICAgICA8PCAiRW5hYmxpbmcgVUxQRkVDIHJlcXVpcmVz
IHJ0cG1hcDogdWxwZmVjIG5lZ290aWF0aW9uLiI7CiAgIEVYUEVDVF9FUSgtMSwgZGVmYXVsdF9y
ZWNlaXZlX2NvbmZpZy5ydHAucmVkX3BheWxvYWRfdHlwZSkKICAgICAgIDw8ICJFbmFibGluZyBV
TFBGRUMgcmVxdWlyZXMgcnRwbWFwOiByZWQgbmVnb3RpYXRpb24uIjsKKyAgRVhQRUNUX0VRKG51
bGxwdHIsIGRlZmF1bHRfcmVjZWl2ZV9jb25maWcuZnJhbWVfZGVjcnlwdG9yKQorICAgICAgPDwg
IkVuYWJsaW5nIEZyYW1lIERlY3J5cHRpb24gcmVxdWlyZXMgYSBmcmFtZSBkZWNyeXB0b3IgdG8g
YmUgYXR0YWNoZWQiOworICBFWFBFQ1RfRkFMU0UoCisgICAgICBkZWZhdWx0X3JlY2VpdmVfY29u
ZmlnLmNyeXB0b19vcHRpb25zLnNmcmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24pCisgICAg
ICA8PCAiRW5hYmxpbmcgUmVxdWlyZSBGcmFtZSBFbmNyeXB0aW9uIG1lYW5zIGEgZGVjcnlwdG9y
IG11c3QgYmUgYXR0YWNoZWQiOwogfQogCiBURVNUX0YoQ29uZmlnRW5kVG9FbmRUZXN0LCBWZXJp
ZnlEZWZhdWx0RmxleGZlY1JlY2VpdmVDb25maWdQYXJhbWV0ZXJzKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5k
X3Rlc3RzL2V4dGVuZGVkX3JlcG9ydHNfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2V4dGVuZGVkX3JlcG9y
dHNfdGVzdHMuY2MKaW5kZXggYmE1Y2E2OTNmMmI1ZThkNWJhODNmYjZkM2VhMWMxZWRkNjFkMTgy
Mi4uNGRlMDQ0MWIzZGZjNDQ0ZmZlM2UwMjJkN2ViZTk0ODNkMDc0ZWYyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2Vu
ZF90ZXN0cy9leHRlbmRlZF9yZXBvcnRzX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvZXh0ZW5kZWRf
cmVwb3J0c190ZXN0cy5jYwpAQCAtOCw5ICs4LDExIEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KIAorI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25maWcuaCIKICNpbmNsdWRlICJj
YWxsL2Zha2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29y
ay5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCisjaW5jbHVkZSAidGVzdC9maWVsZF90
cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L3J0Y3BfcGFj
a2V0X3BhcnNlci5oIgogCkBAIC0yMSwxMiArMjMsMTQgQEAgY2xhc3MgRXh0ZW5kZWRSZXBvcnRz
RW5kVG9FbmRUZXN0IDogcHVibGljIHRlc3Q6OkNhbGxUZXN0IHt9OwogY2xhc3MgUnRjcFhyT2Jz
ZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKICBwdWJsaWM6CiAgIFJ0Y3BYck9i
c2VydmVyKGJvb2wgZW5hYmxlX3JydHIsCi0gICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlX3Rh
cmdldF9iaXRyYXRlLAotICAgICAgICAgICAgICAgICBib29sIGVuYWJsZV96ZXJvX3RhcmdldF9i
aXRyYXRlKQorICAgICAgICAgICAgICAgICBib29sIGV4cGVjdF90YXJnZXRfYml0cmF0ZSwKKyAg
ICAgICAgICAgICAgICAgYm9vbCBlbmFibGVfemVyb190YXJnZXRfYml0cmF0ZSwKKyAgICAgICAg
ICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZSBjb250ZW50X3R5cGUpCiAg
ICAgICA6IEVuZFRvRW5kVGVzdCh0ZXN0OjpDYWxsVGVzdDo6a0RlZmF1bHRUaW1lb3V0TXMpLAog
ICAgICAgICBlbmFibGVfcnJ0cl8oZW5hYmxlX3JydHIpLAotICAgICAgICBlbmFibGVfdGFyZ2V0
X2JpdHJhdGVfKGVuYWJsZV90YXJnZXRfYml0cmF0ZSksCisgICAgICAgIGV4cGVjdF90YXJnZXRf
Yml0cmF0ZV8oZXhwZWN0X3RhcmdldF9iaXRyYXRlKSwKICAgICAgICAgZW5hYmxlX3plcm9fdGFy
Z2V0X2JpdHJhdGVfKGVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlKSwKKyAgICAgICAgY29udGVu
dF90eXBlXyhjb250ZW50X3R5cGUpLAogICAgICAgICBzZW50X3J0Y3Bfc3JfKDApLAogICAgICAg
ICBzZW50X3J0Y3BfcnJfKDApLAogICAgICAgICBzZW50X3J0Y3BfcnJ0cl8oMCksCkBAIC05NSw3
ICs5OSw3IEBAIGNsYXNzIFJ0Y3BYck9ic2VydmVyIDogcHVibGljIHRlc3Q6OkVuZFRvRW5kVGVz
dCB7CiAKICAgICBpZiAoc2VudF9ydGNwX3NyXyA+IGtOdW1SdGNwUmVwb3J0UGFja2V0c1RvT2Jz
ZXJ2ZSAmJgogICAgICAgICBzZW50X3J0Y3BfcnJfID4ga051bVJ0Y3BSZXBvcnRQYWNrZXRzVG9P
YnNlcnZlICYmCi0gICAgICAgIChzZW50X3J0Y3BfdGFyZ2V0X2JpdHJhdGVfIHx8ICFlbmFibGVf
dGFyZ2V0X2JpdHJhdGVfKSAmJgorICAgICAgICAoc2VudF9ydGNwX3RhcmdldF9iaXRyYXRlXyB8
fCAhZXhwZWN0X3RhcmdldF9iaXRyYXRlXykgJiYKICAgICAgICAgKHNlbnRfemVyb19ydGNwX3Rh
cmdldF9iaXRyYXRlXyB8fCAhZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGVfKSkgewogICAgICAg
aWYgKGVuYWJsZV9ycnRyXykgewogICAgICAgICBFWFBFQ1RfR1Qoc2VudF9ydGNwX3JydHJfLCAw
KTsKQEAgLTEwNCw3ICsxMDgsNyBAQCBjbGFzcyBSdGNwWHJPYnNlcnZlciA6IHB1YmxpYyB0ZXN0
OjpFbmRUb0VuZFRlc3QgewogICAgICAgICBFWFBFQ1RfRVEoc2VudF9ydGNwX3JydHJfLCAwKTsK
ICAgICAgICAgRVhQRUNUX0VRKHNlbnRfcnRjcF9kbHJyXywgMCk7CiAgICAgICB9Ci0gICAgICBF
WFBFQ1RfRVEoZW5hYmxlX3RhcmdldF9iaXRyYXRlXywgc2VudF9ydGNwX3RhcmdldF9iaXRyYXRl
Xyk7CisgICAgICBFWFBFQ1RfRVEoZXhwZWN0X3RhcmdldF9iaXRyYXRlXywgc2VudF9ydGNwX3Rh
cmdldF9iaXRyYXRlXyk7CiAgICAgICBFWFBFQ1RfRVEoZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJh
dGVfLCBzZW50X3plcm9fcnRjcF90YXJnZXRfYml0cmF0ZV8pOwogICAgICAgb2JzZXJ2YXRpb25f
Y29tcGxldGVfLlNldCgpOwogICAgIH0KQEAgLTE0NCwxMCArMTQ4LDcgQEAgY2xhc3MgUnRjcFhy
T2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKICAgICAgICgqcmVjZWl2ZV9j
b25maWdzKVswXS5kZWNvZGVyc1swXS52aWRlb19mb3JtYXQgPQogICAgICAgICAgIFNkcFZpZGVv
Rm9ybWF0KHNlbmRfY29uZmlnLT5ydHAucGF5bG9hZF9uYW1lKTsKICAgICB9Ci0gICAgaWYgKGVu
YWJsZV90YXJnZXRfYml0cmF0ZV8pIHsKLSAgICAgIC8vIFRhcmdldEJpdHJhdGUgb25seSBzaWdu
YWxlZCBmb3Igc2NyZWVuc2hhcmluZy4KLSAgICAgIGVuY29kZXJfY29uZmlnLT5jb250ZW50X3R5
cGUgPSBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprU2NyZWVuOwotICAgIH0KKyAg
ICBlbmNvZGVyX2NvbmZpZy0+Y29udGVudF90eXBlID0gY29udGVudF90eXBlXzsKICAgICAoKnJl
Y2VpdmVfY29uZmlncylbMF0ucnRwLnJ0Y3BfbW9kZSA9IFJ0Y3BNb2RlOjprUmVkdWNlZFNpemU7
CiAgICAgKCpyZWNlaXZlX2NvbmZpZ3MpWzBdLnJ0cC5ydGNwX3hyLnJlY2VpdmVyX3JlZmVyZW5j
ZV90aW1lX3JlcG9ydCA9CiAgICAgICAgIGVuYWJsZV9ycnRyXzsKQEAgLTE2Miw1MCArMTYzLDY1
IEBAIGNsYXNzIFJ0Y3BYck9ic2VydmVyIDogcHVibGljIHRlc3Q6OkVuZFRvRW5kVGVzdCB7CiAK
ICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF87CiAgIGNvbnN0IGJvb2wgZW5hYmxlX3JydHJf
OwotICBjb25zdCBib29sIGVuYWJsZV90YXJnZXRfYml0cmF0ZV87CisgIGNvbnN0IGJvb2wgZXhw
ZWN0X3RhcmdldF9iaXRyYXRlXzsKICAgY29uc3QgYm9vbCBlbmFibGVfemVyb190YXJnZXRfYml0
cmF0ZV87CisgIGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZzo6Q29udGVudFR5cGUgY29udGVudF90
eXBlXzsKICAgaW50IHNlbnRfcnRjcF9zcl87CiAgIGludCBzZW50X3J0Y3BfcnJfIFJUQ19HVUFS
REVEX0JZKCZjcml0Xyk7CiAgIGludCBzZW50X3J0Y3BfcnJ0cl8gUlRDX0dVQVJERURfQlkoJmNy
aXRfKTsKICAgYm9vbCBzZW50X3J0Y3BfdGFyZ2V0X2JpdHJhdGVfIFJUQ19HVUFSREVEX0JZKCZj
cml0Xyk7CiAgIGJvb2wgc2VudF96ZXJvX3J0Y3BfdGFyZ2V0X2JpdHJhdGVfIFJUQ19HVUFSREVE
X0JZKCZjcml0Xyk7CiAgIGludCBzZW50X3J0Y3BfZGxycl87Ci0gIERlZmF1bHROZXR3b3JrU2lt
dWxhdGlvbkNvbmZpZyBmb3J3YXJkX3RyYW5zcG9ydF9jb25maWdfOworICBCdWlsdEluTmV0d29y
a0JlaGF2aW9yQ29uZmlnIGZvcndhcmRfdHJhbnNwb3J0X2NvbmZpZ187CiAgIFNpbXVsYXRlZE5l
dHdvcmsqIHNlbmRfc2ltdWxhdGVkX25ldHdvcmtfOwogfTsKIAogVEVTVF9GKEV4dGVuZGVkUmVw
b3J0c0VuZFRvRW5kVGVzdCwKICAgICAgICBUZXN0RXh0ZW5kZWRSZXBvcnRzV2l0aFJydHJXaXRo
b3V0VGFyZ2V0Qml0cmF0ZSkgewotICBSdGNwWHJPYnNlcnZlciB0ZXN0KC8qZW5hYmxlX3JydHI9
Ki90cnVlLCAvKmVuYWJsZV90YXJnZXRfYml0cmF0ZT0qL2ZhbHNlLAotICAgICAgICAgICAgICAg
ICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSk7CisgIFJ0Y3BYck9i
c2VydmVyIHRlc3QoLyplbmFibGVfcnJ0cj0qL3RydWUsIC8qZXhwZWN0X3RhcmdldF9iaXRyYXRl
PSovZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgLyplbmFibGVfemVyb190YXJnZXRfYml0
cmF0ZT0qL2ZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZzo6
Q29udGVudFR5cGU6OmtSZWFsdGltZVZpZGVvKTsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQog
CiBURVNUX0YoRXh0ZW5kZWRSZXBvcnRzRW5kVG9FbmRUZXN0LAogICAgICAgIFRlc3RFeHRlbmRl
ZFJlcG9ydHNXaXRob3V0UnJ0cldpdGhvdXRUYXJnZXRCaXRyYXRlKSB7Ci0gIFJ0Y3BYck9ic2Vy
dmVyIHRlc3QoLyplbmFibGVfcnJ0cj0qL2ZhbHNlLCAvKmVuYWJsZV90YXJnZXRfYml0cmF0ZT0q
L2ZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJh
dGU9Ki9mYWxzZSk7CisgIFJ0Y3BYck9ic2VydmVyIHRlc3QoLyplbmFibGVfcnJ0cj0qL2ZhbHNl
LCAvKmV4cGVjdF90YXJnZXRfYml0cmF0ZT0qL2ZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg
IC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprUmVhbHRpbWVWaWRlbyk7CiAg
IFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KIAogVEVTVF9GKEV4dGVuZGVkUmVwb3J0c0VuZFRvRW5k
VGVzdCwKICAgICAgICBUZXN0RXh0ZW5kZWRSZXBvcnRzV2l0aFJydHJXaXRoVGFyZ2V0Qml0cmF0
ZSkgewotICBSdGNwWHJPYnNlcnZlciB0ZXN0KC8qZW5hYmxlX3JydHI9Ki90cnVlLCAvKmVuYWJs
ZV90YXJnZXRfYml0cmF0ZT0qL3RydWUsCi0gICAgICAgICAgICAgICAgICAgICAgLyplbmFibGVf
emVyb190YXJnZXRfYml0cmF0ZT0qL2ZhbHNlKTsKKyAgUnRjcFhyT2JzZXJ2ZXIgdGVzdCgvKmVu
YWJsZV9ycnRyPSovdHJ1ZSwgLypleHBlY3RfdGFyZ2V0X2JpdHJhdGU9Ki90cnVlLAorICAgICAg
ICAgICAgICAgICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprU2Ny
ZWVuKTsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCiBURVNUX0YoRXh0ZW5kZWRSZXBvcnRz
RW5kVG9FbmRUZXN0LAogICAgICAgIFRlc3RFeHRlbmRlZFJlcG9ydHNXaXRob3V0UnJ0cldpdGhU
YXJnZXRCaXRyYXRlKSB7Ci0gIFJ0Y3BYck9ic2VydmVyIHRlc3QoLyplbmFibGVfcnJ0cj0qL2Zh
bHNlLCAvKmVuYWJsZV90YXJnZXRfYml0cmF0ZT0qL3RydWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgLyplbmFibGVfemVyb190YXJnZXRfYml0cmF0ZT0qL2ZhbHNlKTsKKyAgUnRjcFhyT2JzZXJ2
ZXIgdGVzdCgvKmVuYWJsZV9ycnRyPSovZmFsc2UsIC8qZXhwZWN0X3RhcmdldF9iaXRyYXRlPSov
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAvKmVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRl
PSovZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250
ZW50VHlwZTo6a1NjcmVlbik7CisgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKK30KKworVEVTVF9GKEV4
dGVuZGVkUmVwb3J0c0VuZFRvRW5kVGVzdCwKKyAgICAgICBUZXN0RXh0ZW5kZWRSZXBvcnRzV2l0
aG91dFJydHJXaXRoVGFyZ2V0Qml0cmF0ZUZyb21GaWVsZFRyaWFsKSB7CisgIHRlc3Q6OlNjb3Bl
ZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygiV2ViUlRDLVRhcmdldC1CaXRyYXRlLVJ0Y3AvRW5h
YmxlZC8iKTsKKyAgUnRjcFhyT2JzZXJ2ZXIgdGVzdCgvKmVuYWJsZV9ycnRyPSovZmFsc2UsIC8q
ZXhwZWN0X3RhcmdldF9iaXRyYXRlPSovdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAvKmVu
YWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlPSovZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAg
VmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1JlYWx0aW1lVmlkZW8pOwogICBSdW5C
YXNlVGVzdCgmdGVzdCk7CiB9CiAKIFRFU1RfRihFeHRlbmRlZFJlcG9ydHNFbmRUb0VuZFRlc3Qs
CiAgICAgICAgVGVzdEV4dGVuZGVkUmVwb3J0c0NhblNpZ25hbFplcm9UYXJnZXRCaXRyYXRlKSB7
Ci0gIFJ0Y3BYck9ic2VydmVyIHRlc3QoLyplbmFibGVfcnJ0cj0qL2ZhbHNlLCAvKmVuYWJsZV90
YXJnZXRfYml0cmF0ZT0qL3RydWUsCi0gICAgICAgICAgICAgICAgICAgICAgLyplbmFibGVfemVy
b190YXJnZXRfYml0cmF0ZT0qL3RydWUpOworICBSdGNwWHJPYnNlcnZlciB0ZXN0KC8qZW5hYmxl
X3JydHI9Ki9mYWxzZSwgLypleHBlY3RfdGFyZ2V0X2JpdHJhdGU9Ki90cnVlLAorICAgICAgICAg
ICAgICAgICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki90cnVlLAorICAgICAg
ICAgICAgICAgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZzo6Q29udGVudFR5cGU6OmtTY3JlZW4p
OwogICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9l
bmRfdG9fZW5kX3Rlc3RzL2ZlY190ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvZmVjX3Rlc3RzLmNjCmluZGV4
IDAzMDBkMTJmOGJjYWM2ZDJhYTI4YmViZmZkMTI1MTg2ODk0MzgzZjMuLjJjNTNjY2M3Y2JlYzM0
MDk5ZDc4ODA5ZmQ1N2Y2NmY0NDFhNjkzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvZmVjX3Rlc3Rz
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L2VuZF90b19lbmRfdGVzdHMvZmVjX3Rlc3RzLmNjCkBAIC05LDYgKzksNyBAQAogICovCiAKICNp
bmNsdWRlICJhcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgorI2luY2x1ZGUgImFwaS90ZXN0
L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwv
ZmFrZV9uZXR3b3JrX3BpcGUuaCIKICNpbmNsdWRlICJjYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgi
CiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuaCIKQEAgLTE2
LDcgKzE3LDYgQEAKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2lu
Y2x1ZGUvdnA4LmgiCiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0
L2ZpZWxkX3RyaWFsLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2Zh
Y3RvcnkuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9ydGNwX3Bh
Y2tldF9wYXJzZXIuaCIKIApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIEZsZXhmZWNSZW5kZXJP
YnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QsCiAgICAgICBDYWxsKiBzZW5kZXJf
Y2FsbCkgb3ZlcnJpZGUgewogICAgIC8vIEF0IGxvdyBSVFQgKDwga0xvd1J0dE5hY2tNcykgLT4g
TkFDSyBvbmx5LCBubyBGRUMuCiAgICAgY29uc3QgaW50IGtOZXR3b3JrRGVsYXlNcyA9IDEwMDsK
LSAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICAgIEJ1aWx0SW5O
ZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5xdWV1ZV9kZWxheV9tcyA9
IGtOZXR3b3JrRGVsYXlNczsKICAgICByZXR1cm4gbmV3IHRlc3Q6OlBhY2tldFRyYW5zcG9ydCgK
ICAgICAgICAgdGFza19xdWV1ZSwgc2VuZGVyX2NhbGwsIHRoaXMsIHRlc3Q6OlBhY2tldFRyYW5z
cG9ydDo6a1NlbmRlciwKQEAgLTQyMSw3ICs0MjEsNyBAQCBURVNUX0YoRmVjRW5kVG9FbmRUZXN0
LCBSZWNlaXZlZFVscGZlY1BhY2tldHNOb3ROYWNrZWQpIHsKICAgICAgIC8vIEF0IGxvdyBSVFQg
KDwga0xvd1J0dE5hY2tNcykgLT4gTkFDSyBvbmx5LCBubyBGRUMuCiAgICAgICAvLyBDb25maWd1
cmUgc29tZSBuZXR3b3JrIGRlbGF5LgogICAgICAgY29uc3QgaW50IGtOZXR3b3JrRGVsYXlNcyA9
IDUwOwotICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgICAg
IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICAgICAgY29uZmlnLnF1ZXVl
X2RlbGF5X21zID0ga05ldHdvcmtEZWxheU1zOwogICAgICAgcmV0dXJuIG5ldyB0ZXN0OjpQYWNr
ZXRUcmFuc3BvcnQoCiAgICAgICAgICAgdGFza19xdWV1ZSwgc2VuZGVyX2NhbGwsIHRoaXMsIHRl
c3Q6OlBhY2tldFRyYW5zcG9ydDo6a1NlbmRlciwKQEAgLTQzMyw5ICs0MzMsMTAgQEAgVEVTVF9G
KEZlY0VuZFRvRW5kVGVzdCwgUmVjZWl2ZWRVbHBmZWNQYWNrZXRzTm90TmFja2VkKSB7CiAKICAg
ICAvLyBUT0RPKGhvbG1lcik6IEludmVzdGlnYXRlIHdoeSB3ZSBkb24ndCBzZW5kIEZFQyBwYWNr
ZXRzIHdoZW4gdGhlIGJpdHJhdGUKICAgICAvLyBpcyAxMCBrYnBzLgotICAgIHZvaWQgTW9kaWZ5
U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZykgb3ZlcnJpZGUgeworICAgIHZv
aWQgTW9kaWZ5U2VuZGVyQml0cmF0ZUNvbmZpZygKKyAgICAgICAgQml0cmF0ZUNvbnN0cmFpbnRz
KiBiaXRyYXRlX2NvbmZpZykgb3ZlcnJpZGUgewogICAgICAgY29uc3QgaW50IGtNaW5CaXRyYXRl
QnBzID0gMzAwMDA7Ci0gICAgICBjb25maWctPmJpdHJhdGVfY29uZmlnLm1pbl9iaXRyYXRlX2Jw
cyA9IGtNaW5CaXRyYXRlQnBzOworICAgICAgYml0cmF0ZV9jb25maWctPm1pbl9iaXRyYXRlX2Jw
cyA9IGtNaW5CaXRyYXRlQnBzOwogICAgIH0KIAogICAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdz
KApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9mcmFtZV9lbmNyeXB0aW9uX3Rlc3RzLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0
cy9mcmFtZV9lbmNyeXB0aW9uX3Rlc3RzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZDdiNDc4NDkzNTk0MDEy
YWZhYzE3Y2YzNTYzZTk3ZWM0MTQ4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2ZyYW1l
X2VuY3J5cHRpb25fdGVzdHMuY2MKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqICBDb3B5cmlnaHQg
MjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8K
KworI2luY2x1ZGUgImFwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmgiCisjaW5jbHVkZSAi
YXBpL3Rlc3QvZmFrZV9mcmFtZV9lbmNyeXB0b3IuaCIKKyNpbmNsdWRlICJtZWRpYS9lbmdpbmUv
aW50ZXJuYWxkZWNvZGVyZmFjdG9yeS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKKyNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgor
I2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBGcmFtZUVuY3J5cHRpb25FbmRUb0VuZFRlc3Qg
OiBwdWJsaWMgdGVzdDo6Q2FsbFRlc3QgeworIHB1YmxpYzoKKyAgRnJhbWVFbmNyeXB0aW9uRW5k
VG9FbmRUZXN0KCkgPSBkZWZhdWx0OworCisgcHJpdmF0ZToKKyAgLy8gR2VuZXJpY0Rlc2NyaXB0
b3IgaXMgcmVxdWlyZWQgZm9yIEZyYW1lRW5jcnlwdGlvbiB0byB3b3JrLgorICB0ZXN0OjpTY29w
ZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHNfeyJXZWJSVEMtR2VuZXJpY0Rlc2NyaXB0b3IvRW5h
YmxlZC8ifTsKK307CisKKy8vIFZhbGlkYXRlcyB0aGF0IHBheWxvYWRzIGNhbm5vdCBiZSBzZW50
IHdpdGhvdXQgYSBmcmFtZSBlbmNyeXB0b3IgYW5kIGZyYW1lCisvLyBkZWNyeXB0b3IgYXR0YWNo
ZWQuCitURVNUX0YoRnJhbWVFbmNyeXB0aW9uRW5kVG9FbmRUZXN0LCBSZXF1aXJlRnJhbWVFbmNy
eXB0aW9uRW5mb3JjZWQpIHsKKyAgY2xhc3MgRGVjcnlwdGVkRnJhbWVPYnNlcnZlciA6IHB1Ymxp
YyB0ZXN0OjpFbmRUb0VuZFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4geworICAgcHVibGljOgor
ICAgIERlY3J5cHRlZEZyYW1lT2JzZXJ2ZXIoKQorICAgICAgICA6IEVuZFRvRW5kVGVzdChrRGVm
YXVsdFRpbWVvdXRNcyksCisgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5XyhbXSgpIHsgcmV0dXJu
IFZQOEVuY29kZXI6OkNyZWF0ZSgpOyB9KSB7fQorCisgICBwcml2YXRlOgorICAgIHZvaWQgTW9k
aWZ5VmlkZW9Db25maWdzKAorICAgICAgICBWaWRlb1NlbmRTdHJlYW06OkNvbmZpZyogc2VuZF9j
b25maWcsCisgICAgICAgIHN0ZDo6dmVjdG9yPFZpZGVvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnPiog
cmVjZWl2ZV9jb25maWdzLAorICAgICAgICBWaWRlb0VuY29kZXJDb25maWcqIGVuY29kZXJfY29u
ZmlnKSBvdmVycmlkZSB7CisgICAgICAvLyBVc2UgVlA4IGluc3RlYWQgb2YgRkFLRS4KKyAgICAg
IHNlbmRfY29uZmlnLT5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9ICZlbmNvZGVy
X2ZhY3RvcnlfOworICAgICAgc2VuZF9jb25maWctPnJ0cC5wYXlsb2FkX25hbWUgPSAiVlA4IjsK
KyAgICAgIHNlbmRfY29uZmlnLT5ydHAucGF5bG9hZF90eXBlID0ga1ZpZGVvU2VuZFBheWxvYWRU
eXBlOworICAgICAgc2VuZF9jb25maWctPmZyYW1lX2VuY3J5cHRvciA9IG5ldyBGYWtlRnJhbWVF
bmNyeXB0b3IoKTsKKyAgICAgIHNlbmRfY29uZmlnLT5jcnlwdG9fb3B0aW9ucy5zZnJhbWUucmVx
dWlyZV9mcmFtZV9lbmNyeXB0aW9uID0gdHJ1ZTsKKyAgICAgIGVuY29kZXJfY29uZmlnLT5jb2Rl
Y190eXBlID0ga1ZpZGVvQ29kZWNWUDg7CisgICAgICBWaWRlb1JlY2VpdmVTdHJlYW06OkRlY29k
ZXIgZGVjb2RlciA9CisgICAgICAgICAgdGVzdDo6Q3JlYXRlTWF0Y2hpbmdEZWNvZGVyKCpzZW5k
X2NvbmZpZyk7CisgICAgICBkZWNvZGVyLmRlY29kZXJfZmFjdG9yeSA9ICZkZWNvZGVyX2ZhY3Rv
cnlfOworICAgICAgZm9yIChhdXRvJiByZWN2X2NvbmZpZyA6ICpyZWNlaXZlX2NvbmZpZ3MpIHsK
KyAgICAgICAgcmVjdl9jb25maWcuZGVjb2RlcnMuY2xlYXIoKTsKKyAgICAgICAgcmVjdl9jb25m
aWcuZGVjb2RlcnMucHVzaF9iYWNrKGRlY29kZXIpOworICAgICAgICByZWN2X2NvbmZpZy5yZW5k
ZXJlciA9IHRoaXM7CisgICAgICAgIHJlY3ZfY29uZmlnLmZyYW1lX2RlY3J5cHRvciA9IG5ldyBG
YWtlRnJhbWVEZWNyeXB0b3IoKTsKKyAgICAgICAgcmVjdl9jb25maWcuY3J5cHRvX29wdGlvbnMu
c2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbiA9IHRydWU7CisgICAgICB9CisgICAgfQor
CisgICAgLy8gVmFsaWRhdGUgdGhhdCByb3RhdGlvbiBpcyBwcmVzZXJ2ZWQuCisgICAgdm9pZCBP
bkZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVvX2ZyYW1lKSBvdmVycmlkZSB7CisgICAgICBv
YnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7CisgICAgfQorCisgICAgdm9pZCBQZXJmb3JtVGVz
dCgpIG92ZXJyaWRlIHsKKyAgICAgIEVYUEVDVF9UUlVFKFdhaXQoKSkKKyAgICAgICAgICA8PCAi
VGltZWQgb3V0IHdhaXRpbmcgZm9yIGRlY3J5cHRlZCBmcmFtZXMgdG8gYmUgcmVuZGVyZWQuIjsK
KyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBlbmNvZGVyXzsKKyAg
ICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2Rlcl9mYWN0b3J5XzsKKyAg
ICBJbnRlcm5hbERlY29kZXJGYWN0b3J5IGRlY29kZXJfZmFjdG9yeV87CisgIH0gdGVzdDsKKwor
ICBSdW5CYXNlVGVzdCgmdGVzdCk7Cit9Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRf
dG9fZW5kX3Rlc3RzL2hpc3RvZ3JhbV90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvaGlzdG9ncmFtX3Rlc3Rz
LmNjCmluZGV4IGE0YWEwYzgxMGE5NjI5NWE5ZjAwYzhmM2JlYzA4ZDc0OThmZjYyMmUuLjMxMjky
NGM5ODZiODYyYzgxYWFlNjAwY2EwNjdhNmE5MWU1ZTRmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMv
aGlzdG9ncmFtX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvaGlzdG9ncmFtX3Rlc3RzLmNjCkBAIC05
LDEwICs5LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNp
bmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4Lmgi
CiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogI2luY2x1ZGUg
InRlc3QvY2FsbF90ZXN0LmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVy
X2ZhY3RvcnkuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9jb2RlY19yZWNlaXZlX3Rlc3RzLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90
ZXN0cy9tdWx0aV9jb2RlY19yZWNlaXZlX3Rlc3RzLmNjCmluZGV4IGUxM2JjMzUxY2ExY2M3MDcz
OGE0MWJjMzBhMzMyZmQxZGM3Yjk4N2EuLmM1OGYwZmUxNmE4ZTJlYWQwNTcwOWE4NjEyN2IzOWQ1
NzRjMjNkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvbXVsdGlfY29kZWNfcmVjZWl2ZV90ZXN0cy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9l
bmRfdG9fZW5kX3Rlc3RzL211bHRpX2NvZGVjX3JlY2VpdmVfdGVzdHMuY2MKQEAgLTksMTMgKzks
MTMgQEAKICAqLwogCiAjaW5jbHVkZSAiYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaCIKKyNp
bmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJjYWxsL2Zha2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11
bGF0ZWRfbmV0d29yay5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9o
MjY0L2luY2x1ZGUvaDI2NC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvaW5jbHVkZS92cDguaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA5L2luY2x1ZGUvdnA5LmgiCiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKLSNpbmNs
dWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInRl
c3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC01MSwyOSArNTEsNiBAQCBpbnQg
UmVtb3ZlT2xkZXJPckVxdWFsKHVpbnQzMl90IHRpbWVzdGFtcCwgc3RkOjp2ZWN0b3I8dWludDMy
X3Q+KiB0aW1lc3RhbXBzKSB7CiAgIHJldHVybiBudW1fcmVtb3ZlZDsKIH0KIAotY2xhc3MgVmlk
ZW9TdHJlYW1GYWN0b3J5VGVzdAotICAgIDogcHVibGljIFZpZGVvRW5jb2RlckNvbmZpZzo6Vmlk
ZW9TdHJlYW1GYWN0b3J5SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFZpZGVvU3Ry
ZWFtRmFjdG9yeVRlc3Qoc2l6ZV90IG51bV90ZW1wb3JhbF9sYXllcnMpCi0gICAgICA6IG51bV90
ZW1wb3JhbF9sYXllcnNfKG51bV90ZW1wb3JhbF9sYXllcnMpIHt9Ci0KLSBwcml2YXRlOgotICBz
dGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gQ3JlYXRlRW5jb2RlclN0cmVhbXMoCi0gICAgICBpbnQg
d2lkdGgsCi0gICAgICBpbnQgaGVpZ2h0LAotICAgICAgY29uc3QgVmlkZW9FbmNvZGVyQ29uZmln
JiBlbmNvZGVyX2NvbmZpZykgb3ZlcnJpZGUgewotICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFt
PiBzdHJlYW1zID0KLSAgICAgICAgdGVzdDo6Q3JlYXRlVmlkZW9TdHJlYW1zKHdpZHRoLCBoZWln
aHQsIGVuY29kZXJfY29uZmlnKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW5jb2Rl
cl9jb25maWcubnVtYmVyX29mX3N0cmVhbXM7ICsraSkKLSAgICAgIHN0cmVhbXNbaV0ubnVtX3Rl
bXBvcmFsX2xheWVycyA9IG51bV90ZW1wb3JhbF9sYXllcnNfOwotCi0gICAgcmV0dXJuIHN0cmVh
bXM7Ci0gIH0KLQotICBjb25zdCBzaXplX3QgbnVtX3RlbXBvcmFsX2xheWVyc187Ci19OwotCiBj
bGFzcyBGcmFtZU9ic2VydmVyIDogcHVibGljIHRlc3Q6OlJ0cFJ0Y3BPYnNlcnZlciwKICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFt
ZT4gewogIHB1YmxpYzoKQEAgLTE1MywxOCArMTMwLDE2IEBAIGNsYXNzIE11bHRpQ29kZWNSZWNl
aXZlVGVzdCA6IHB1YmxpYyB0ZXN0OjpDYWxsVGVzdCB7CiAgICAgICAgICAgJnRhc2tfcXVldWVf
LCBzZW5kZXJfY2FsbF8uZ2V0KCksICZvYnNlcnZlcl8sCiAgICAgICAgICAgdGVzdDo6UGFja2V0
VHJhbnNwb3J0OjprU2VuZGVyLCBrUGF5bG9hZFR5cGVNYXAsCiAgICAgICAgICAgYWJzbDo6bWFr
ZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxU
aW1lQ2xvY2soKSwKLSAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0
d29yaz4oCi0gICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWco
KSkpKSk7CisgICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1h
a2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSkpKTsKICAg
ICAgIHNlbmRfdHJhbnNwb3J0Xy0+U2V0UmVjZWl2ZXIocmVjZWl2ZXJfY2FsbF8tPlJlY2VpdmVy
KCkpOwogCiAgICAgICByZWNlaXZlX3RyYW5zcG9ydF8ucmVzZXQobmV3IHRlc3Q6OlBhY2tldFRy
YW5zcG9ydCgKICAgICAgICAgICAmdGFza19xdWV1ZV8sIHJlY2VpdmVyX2NhbGxfLmdldCgpLCAm
b2JzZXJ2ZXJfLAogICAgICAgICAgIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1JlY2VpdmVyLCBr
UGF5bG9hZFR5cGVNYXAsCiAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQ
aXBlPigKLSAgICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKLSAgICAgICAg
ICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAg
ICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKSk7CisgICAgICAgICAgICAg
IENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5l
dHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVp
bHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSkpKTsKICAgICAgIHJlY2VpdmVfdHJhbnNwb3J0
Xy0+U2V0UmVjZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZlcigpKTsKICAgICB9KTsKICAgfQpA
QCAtMjE5LDkgKzE5NCw5IEBAIHZvaWQgTXVsdGlDb2RlY1JlY2VpdmVUZXN0OjpDb25maWd1cmVF
bmNvZGVyKGNvbnN0IENvZGVjQ29uZmlnJiBjb25maWcpIHsKICAgICAgIFBheWxvYWROYW1lVG9Q
YXlsb2FkVHlwZShjb25maWcucGF5bG9hZF9uYW1lKTsKICAgR2V0VmlkZW9FbmNvZGVyQ29uZmln
KCktPmNvZGVjX3R5cGUgPQogICAgICAgUGF5bG9hZFN0cmluZ1RvQ29kZWNUeXBlKGNvbmZpZy5w
YXlsb2FkX25hbWUpOwotICBHZXRWaWRlb0VuY29kZXJDb25maWcoKS0+dmlkZW9fc3RyZWFtX2Zh
Y3RvcnkgPQotICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxWaWRlb1N0cmVhbUZhY3Rv
cnlUZXN0PigKLSAgICAgICAgICBjb25maWcubnVtX3RlbXBvcmFsX2xheWVycyk7CisgIEVYUEVD
VF9FUSgxdSwgR2V0VmlkZW9FbmNvZGVyQ29uZmlnKCktPnNpbXVsY2FzdF9sYXllcnMuc2l6ZSgp
KTsKKyAgR2V0VmlkZW9FbmNvZGVyQ29uZmlnKCktPnNpbXVsY2FzdF9sYXllcnNbMF0ubnVtX3Rl
bXBvcmFsX2xheWVycyA9CisgICAgICBjb25maWcubnVtX3RlbXBvcmFsX2xheWVyczsKIH0KIAog
dm9pZCBNdWx0aUNvZGVjUmVjZWl2ZVRlc3Q6OlJ1blRlc3RXaXRoQ29kZWNzKApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3Rv
X2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1f
dGVzdGVyLmNjCmluZGV4IDdkNjY5NzYwMDFhZGIyZmQ0NTY0NjdjZTdmNGNiNzZlYmJmMjUyYTIu
LjVkNWRhNjVjYThmN2Y4MDUxMmVjYzBmNmE4MGRkNTZlYTVlZmJmM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRf
dGVzdHMvbXVsdGlfc3RyZWFtX3Rlc3Rlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL211bHRpX3N0cmVhbV90
ZXN0ZXIuY2MKQEAgLTE1LDYgKzE1LDggQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRl
ICJhcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVv
L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9i
dWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJjYWxs
L2Zha2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29yay5o
IgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCkBAIC0y
Miw3ICsyNCw2IEBACiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9p
bmNsdWRlL3ZwOC5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCiAjaW5jbHVkZSAidGVz
dC9lbmNvZGVyX3NldHRpbmdzLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNv
ZGVyX2ZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTU0LDYgKzU1LDggQEAg
dm9pZCBNdWx0aVN0cmVhbVRlc3Rlcjo6UnVuVGVzdCgpIHsKICAgdGVzdDo6RnJhbWVHZW5lcmF0
b3JDYXB0dXJlciogZnJhbWVfZ2VuZXJhdG9yc1trTnVtU3RyZWFtc107CiAgIHRlc3Q6OkZ1bmN0
aW9uVmlkZW9FbmNvZGVyRmFjdG9yeSBlbmNvZGVyX2ZhY3RvcnkoCiAgICAgICBbXSgpIHsgcmV0
dXJuIFZQOEVuY29kZXI6OkNyZWF0ZSgpOyB9KTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0
cmF0ZUFsbG9jYXRvckZhY3Rvcnk+IGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkgPQorICAgICAg
Q3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKTsKICAgSW50ZXJuYWxE
ZWNvZGVyRmFjdG9yeSBkZWNvZGVyX2ZhY3Rvcnk7CiAKICAgdGFza19xdWV1ZV8tPlNlbmRUYXNr
KFsmXSgpIHsKQEAgLTc1LDYgKzc4LDggQEAgdm9pZCBNdWx0aVN0cmVhbVRlc3Rlcjo6UnVuVGVz
dCgpIHsKICAgICAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnIHNlbmRfY29uZmlnKHNlbmRlcl90
cmFuc3BvcnQuZ2V0KCkpOwogICAgICAgc2VuZF9jb25maWcucnRwLnNzcmNzLnB1c2hfYmFjayhz
c3JjKTsKICAgICAgIHNlbmRfY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5
ID0gJmVuY29kZXJfZmFjdG9yeTsKKyAgICAgIHNlbmRfY29uZmlnLmVuY29kZXJfc2V0dGluZ3Mu
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICAgICAgYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeS5nZXQoKTsKICAgICAgIHNlbmRfY29uZmlnLnJ0cC5wYXlsb2FkX25hbWUgPSAiVlA4
IjsKICAgICAgIHNlbmRfY29uZmlnLnJ0cC5wYXlsb2FkX3R5cGUgPSBrVmlkZW9QYXlsb2FkVHlw
ZTsKICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZyBlbmNvZGVyX2NvbmZpZzsKQEAgLTE0Myw5ICsx
NDgsOSBAQCB0ZXN0OjpEaXJlY3RUcmFuc3BvcnQqIE11bHRpU3RyZWFtVGVzdGVyOjpDcmVhdGVT
ZW5kVHJhbnNwb3J0KAogICAgIENhbGwqIHNlbmRlcl9jYWxsKSB7CiAgIHJldHVybiBuZXcgdGVz
dDo6RGlyZWN0VHJhbnNwb3J0KAogICAgICAgdGFza19xdWV1ZSwKLSAgICAgIGFic2w6Om1ha2Vf
dW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2lt
dWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpLAorICAgICAgYWJzbDo6bWFr
ZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKKyAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVD
bG9jaygpLAorICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KEJ1
aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpLAogICAgICAgc2VuZGVyX2NhbGwsIHBheWxv
YWRfdHlwZV9tYXBfKTsKIH0KIApAQCAtMTU0LDkgKzE1OSw5IEBAIHRlc3Q6OkRpcmVjdFRyYW5z
cG9ydCogTXVsdGlTdHJlYW1UZXN0ZXI6OkNyZWF0ZVJlY2VpdmVUcmFuc3BvcnQoCiAgICAgQ2Fs
bCogcmVjZWl2ZXJfY2FsbCkgewogICByZXR1cm4gbmV3IHRlc3Q6OkRpcmVjdFRyYW5zcG9ydCgK
ICAgICAgIHRhc2tfcXVldWUsCi0gICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1Bp
cGU+KENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtT
aW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3Jr
UGlwZT4oCisgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKKyAgICAgICAgICBh
YnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPihCdWlsdEluTmV0d29ya0JlaGF2aW9y
Q29uZmlnKCkpKSwKICAgICAgIHJlY2VpdmVyX2NhbGwsIHBheWxvYWRfdHlwZV9tYXBfKTsKIH0K
IH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvbXVsdGlfc3RyZWFt
X3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdHMuY2MKaW5kZXggZGJlYWQyNDU2
NGZlMGQ3MGJlMDAwMWZhZjEyNTkyNjM5Y2FiNGM1Yi4uOWM3NTRmYjcwYTU3ZGU2N2ZkMDJhMDQ0
MjBlODdmMTk2NWMzNWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdHMu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
ZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdHMuY2MKQEAgLTMwLDEwICszMCw3IEBA
IFRFU1RfRihNdWx0aVN0cmVhbUVuZFRvRW5kVGVzdCwgU2VuZHNBbmRSZWNlaXZlc011bHRpcGxl
U3RyZWFtcykgewogICAgIFZpZGVvT3V0cHV0T2JzZXJ2ZXIoY29uc3QgTXVsdGlTdHJlYW1UZXN0
ZXI6OkNvZGVjU2V0dGluZ3MmIHNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3Qgc3NyYywKICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6OkZyYW1lR2VuZXJhdG9y
Q2FwdHVyZXIqKiBmcmFtZV9nZW5lcmF0b3IpCi0gICAgICAgIDogc2V0dGluZ3NfKHNldHRpbmdz
KSwKLSAgICAgICAgICBzc3JjXyhzc3JjKSwKLSAgICAgICAgICBmcmFtZV9nZW5lcmF0b3JfKGZy
YW1lX2dlbmVyYXRvciksCi0gICAgICAgICAgZG9uZV8oZmFsc2UsIGZhbHNlKSB7fQorICAgICAg
ICA6IHNldHRpbmdzXyhzZXR0aW5ncyksIHNzcmNfKHNzcmMpLCBmcmFtZV9nZW5lcmF0b3JfKGZy
YW1lX2dlbmVyYXRvcikge30KIAogICAgIHZvaWQgT25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2
aWRlb19mcmFtZSkgb3ZlcnJpZGUgewogICAgICAgRVhQRUNUX0VRKHNldHRpbmdzXy53aWR0aCwg
dmlkZW9fZnJhbWUud2lkdGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL25ldHdvcmtfc3RhdGVf
dGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9lbmRfdG9fZW5kX3Rlc3RzL25ldHdvcmtfc3RhdGVfdGVzdHMuY2MKaW5kZXggOTM3Nzc3ZjZi
MzQ3OTI3NjUwNjczOWQyNWEzODY5YzBjZWE2YzBjOC4uZDY2NjM0YTEzNWYzMmFhNjZiYjAzMmZh
MTNiYTlmN2IxM2QyMjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9uZXR3b3JrX3N0YXRlX3Rlc3Rz
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L2VuZF90b19lbmRfdGVzdHMvbmV0d29ya19zdGF0ZV90ZXN0cy5jYwpAQCAtMTE4LDkgKzExOCw5
IEBAIHZvaWQgTmV0d29ya1N0YXRlRW5kVG9FbmRUZXN0OjpWZXJpZnlOZXdWaWRlb1JlY2VpdmVT
dHJlYW1zUmVzcGVjdE5ldHdvcmtTdGF0ZSgKICAgICByZWNlaXZlcl9jYWxsXy0+U2lnbmFsQ2hh
bm5lbE5ldHdvcmtTdGF0ZShuZXR3b3JrX3RvX2JyaW5nX3VwLCBrTmV0d29ya1VwKTsKICAgICBz
ZW5kZXJfdHJhbnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGlyZWN0VHJhbnNwb3J0
PigKICAgICAgICAgJnRhc2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtl
TmV0d29ya1BpcGU+KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJz
bDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwK
KyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9jazo6R2V0UmVh
bFRpbWVDbG9jaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmln
KCkpKSwKICAgICAgICAgc2VuZGVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiAg
ICAgc2VuZGVyX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIocmVjZWl2ZXJfY2FsbF8tPlJlY2VpdmVy
KCkpOwogICAgIENyZWF0ZVNlbmRDb25maWcoMSwgMCwgMCwgc2VuZGVyX3RyYW5zcG9ydC5nZXQo
KSk7CkBAIC0xNTgsOCArMTU4LDYgQEAgVEVTVF9GKE5ldHdvcmtTdGF0ZUVuZFRvRW5kVGVzdCwg
UmVzcGVjdHNOZXR3b3JrU3RhdGUpIHsKICAgICAgICAgOiBFbmRUb0VuZFRlc3Qoa0RlZmF1bHRU
aW1lb3V0TXMpLAogICAgICAgICAgIEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNsb2Nr
KCkpLAogICAgICAgICAgIHRhc2tfcXVldWVfKHRhc2tfcXVldWUpLAotICAgICAgICAgIGVuY29k
ZWRfZnJhbWVzXyhmYWxzZSwgZmFsc2UpLAotICAgICAgICAgIHBhY2tldF9ldmVudF8oZmFsc2Us
IGZhbHNlKSwKICAgICAgICAgICBzZW5kZXJfY2FsbF8obnVsbHB0ciksCiAgICAgICAgICAgcmVj
ZWl2ZXJfY2FsbF8obnVsbHB0ciksCiAgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyh0aGlzKSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL2VuZF90b19lbmRfdGVzdHMvcHJvYmluZ190ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcHJvYmluZ190
ZXN0cy5jYwppbmRleCA3ZGZmNjU3YWQwMzk3Y2JmOTYzNDBhOTRjZjQzN2Y2MDYyMGMwYzk0Li43
OTcwZDRhMWJmNzk4OWI5NWZmYzY5ZDNmNzZjYjliMjk2YmViNzQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rl
c3RzL3Byb2JpbmdfdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9wcm9iaW5nX3Rlc3RzLmNjCkBAIC00
MSw4ICs0MSw4IEBAIGNsYXNzIFByb2JpbmdUZXN0IDogcHVibGljIHRlc3Q6OkVuZFRvRW5kVGVz
dCB7CiAgICAgICAgIHN0YXRlXygwKSwKICAgICAgICAgc2VuZGVyX2NhbGxfKG51bGxwdHIpIHt9
CiAKLSAgdm9pZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSBv
dmVycmlkZSB7Ci0gICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5zdGFydF9iaXRyYXRlX2JwcyA9
IHN0YXJ0X2JpdHJhdGVfYnBzXzsKKyAgdm9pZCBNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKEJp
dHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIG92ZXJyaWRlIHsKKyAgICBiaXRyYXRl
X2NvbmZpZy0+c3RhcnRfYml0cmF0ZV9icHMgPSBzdGFydF9iaXRyYXRlX2Jwc187CiAgIH0KIAog
ICB2b2lkIE9uQ2FsbHNDcmVhdGVkKENhbGwqIHNlbmRlcl9jYWxsLCBDYWxsKiByZWNlaXZlcl9j
YWxsKSBvdmVycmlkZSB7CkBAIC0yMjEsNyArMjIxLDcgQEAgVEVTVF9QKFByb2JpbmdFbmRUb0Vu
ZFRlc3QsIFByb2JlT25WaWRlb0VuY29kZXJSZWNvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgdGVz
dDo6U2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nKiB0YXNrX3F1ZXVlLAogICAgICAg
ICBDYWxsKiBzZW5kZXJfY2FsbCkgb3ZlcnJpZGUgewogICAgICAgYXV0byBuZXR3b3JrID0KLSAg
ICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPihEZWZhdWx0TmV0d29y
a1NpbXVsYXRpb25Db25maWcoKSk7CisgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxh
dGVkTmV0d29yaz4oQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKTsKICAgICAgIHNlbmRf
c2ltdWxhdGVkX25ldHdvcmtfID0gbmV0d29yay5nZXQoKTsKICAgICAgIHJldHVybiBuZXcgdGVz
dDo6UGFja2V0VHJhbnNwb3J0KAogICAgICAgICAgIHRhc2tfcXVldWUsIHNlbmRlcl9jYWxsLCB0
aGlzLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtTZW5kZXIsCkBAIC0yNDUsNyArMjQ1LDcgQEAg
VEVTVF9QKFByb2JpbmdFbmRUb0VuZFRlc3QsIFByb2JlT25WaWRlb0VuY29kZXJSZWNvbmZpZ3Vy
YXRpb24pIHsKICAgICAgICAgICAgIC8vIGJpdHJhdGUpLgogICAgICAgICAgICAgaWYgKHN0YXRz
LnNlbmRfYmFuZHdpZHRoX2JwcyA+PSAyNTAwMDAgJiYKICAgICAgICAgICAgICAgICBzdGF0cy5z
ZW5kX2JhbmR3aWR0aF9icHMgPD0gMzUwMDAwKSB7Ci0gICAgICAgICAgICAgIERlZmF1bHROZXR3
b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3Jr
QmVoYXZpb3JDb25maWcgY29uZmlnOwogICAgICAgICAgICAgICBjb25maWcubGlua19jYXBhY2l0
eV9rYnBzID0gMjAwOwogICAgICAgICAgICAgICBzZW5kX3NpbXVsYXRlZF9uZXR3b3JrXy0+U2V0
Q29uZmlnKGNvbmZpZyk7CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCBURVNUX1AoUHJvYmluZ0VuZFRv
RW5kVGVzdCwgUHJvYmVPblZpZGVvRW5jb2RlclJlY29uZmlndXJhdGlvbikgewogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgaWYgKHN0YXRzLnNlbmRf
YmFuZHdpZHRoX2JwcyA8PSAyMTAwMDApIHsKLSAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtT
aW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhh
dmlvckNvbmZpZyBjb25maWc7CiAgICAgICAgICAgICAgIGNvbmZpZy5saW5rX2NhcGFjaXR5X2ti
cHMgPSA1MDAwOwogICAgICAgICAgICAgICBzZW5kX3NpbXVsYXRlZF9uZXR3b3JrXy0+U2V0Q29u
ZmlnKGNvbmZpZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcmVjZWl2ZV90aW1lX3Rlc3RzLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3Rv
X2VuZF90ZXN0cy9yZWNlaXZlX3RpbWVfdGVzdHMuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNjYTY2ZjFkM2Q2N2UyNzZlNTdiMGE4ODMwOGNmMTg0NzBiYWI0ZDAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9yZWNlaXZlX3Rp
bWVfdGVzdHMuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotLyoKLSAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
Ci0gKi8KLQotI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsYXRlZF9uZXR3b3JrLmgiCi0jaW5jbHVk
ZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oIgotI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25l
dHdvcmsuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS90aW1ldXRpbHMuaCIKLSNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgotI2lu
Y2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKLSNpbmNsdWRlICJ0ZXN0L3J0Y3BfcGFja2V0X3Bh
cnNlci5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLW5hbWVzcGFjZSB7Ci0KLS8vIFRoaXMgdGVz
dGVyIHNpbXVsYXRlcyBhIHNlcmllcyBvZiBjbG9jayByZXNldCBldmVudHMgd2hlcmUgZGlmZmVy
ZW50IG9mZnNldHMKLS8vIGFyZSBhZGRlZCB0byB0aGUgcmVjZWl2ZSB0aW1lLiBJdCBkZXRlY3Rz
IGp1bXBzIGluIHRoZSByZXN1bHRpbmcgcmVwb3J0ZWQKLS8vIHJlY2VpdmUgdGltZXMgb2YgbW9y
ZSB0aGFuIDIwMCBtcy4KLWNsYXNzIFJlcG9ydGVkUmVjZWl2ZVRpbWVUZXN0ZXIgOiBwdWJsaWMg
dGVzdDo6RW5kVG9FbmRUZXN0IHsKLSBwdWJsaWM6Ci0gIHN0cnVjdCBUaW1lSnVtcCB7Ci0gICAg
aW50NjRfdCBhdF9zZW5kX3RpbWVfbXM7Ci0gICAgaW50NjRfdCBhZGRfb2Zmc2V0X21zOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBrU3RvcCA9IDA7Ci0gIH07Ci0KLSAgUmVwb3J0ZWRS
ZWNlaXZlVGltZVRlc3RlcigpCi0gICAgICA6IEVuZFRvRW5kVGVzdCh0ZXN0OjpDYWxsVGVzdDo6
a0RlZmF1bHRUaW1lb3V0TXMpIHsKLSAgICAvLyBUaGVzZSBzaG91bGQgYmUgbGV0IHRyb3VnaCB3
aXRob3V0IGNvcnJlY3Rpb24gYW5kIGZpbHRlcmVkIGlmIGNvcnJlY3Rpb24KLSAgICAvLyBpcyBl
bmFibGVkLgotICAgIGp1bXBzXy5wdXNoKHs1MDAsIDIwMDB9KTsKLSAgICBqdW1wc18ucHVzaCh7
MTAwMCwgLTQwMH0pOwotICAgIGp1bXBzXy5wdXNoKHsxNTAwLCAyMDAwMDAwfSk7Ci0gICAganVt
cHNfLnB1c2goezE3MDAsIFRpbWVKdW1wOjprU3RvcH0pOwotICB9Ci0gIGJvb2wgSnVtcEluUmVw
b3J0ZWRUaW1lcygpIHsgcmV0dXJuIGp1bXBfaW5fcmVwb3J0ZWRfdGltZXNfOyB9Ci0KLSBwcm90
ZWN0ZWQ6Ci0gIEFjdGlvbiBPblJlY2VpdmVSdGNwKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpIG92ZXJyaWRlIHsKLSAgICB0ZXN0OjpSdGNwUGFja2V0UGFyc2VyIHBhcnNlcjsK
LSAgICBFWFBFQ1RfVFJVRShwYXJzZXIuUGFyc2UoZGF0YSwgbGVuZ3RoKSk7Ci0gICAgY29uc3Qg
YXV0byYgZmIgPSBwYXJzZXIudHJhbnNwb3J0X2ZlZWRiYWNrKCk7Ci0gICAgaWYgKGZiLT5udW1f
cGFja2V0cygpID4gMCkgewotICAgICAgaW50NjRfdCBhcnJpdmFsX3RpbWVfdXMgPSBmYi0+R2V0
QmFzZVRpbWVVcygpOwotICAgICAgZm9yIChjb25zdCBhdXRvJiBwa3QgOiBmYi0+R2V0UmVjZWl2
ZWRQYWNrZXRzKCkpIHsKLSAgICAgICAgYXJyaXZhbF90aW1lX3VzICs9IHBrdC5kZWx0YV91cygp
OwotICAgICAgICBpZiAobGFzdF9hcnJpdmFsX3RpbWVfdXNfICE9IDApIHsKLSAgICAgICAgICBp
bnQ2NF90IGRlbHRhX3VzID0gYXJyaXZhbF90aW1lX3VzIC0gbGFzdF9hcnJpdmFsX3RpbWVfdXNf
OwotICAgICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJnNlbmRfdGltZXNfY3JpdF8pOwotICAg
ICAgICAgIGlmIChzZW5kX3RpbWVzX3VzXy5zaXplKCkgPj0gMikgewotICAgICAgICAgICAgaW50
NjRfdCBncm91bmRfdHJ1dGhfZGVsdGFfdXMgPQotICAgICAgICAgICAgICAgIHNlbmRfdGltZXNf
dXNfWzFdIC0gc2VuZF90aW1lc191c19bMF07Ci0gICAgICAgICAgICBzZW5kX3RpbWVzX3VzXy5w
b3BfZnJvbnQoKTsKLSAgICAgICAgICAgIGludDY0X3QgZGVsdGFfZGlmZl9tcyA9IChkZWx0YV91
cyAtIGdyb3VuZF90cnV0aF9kZWx0YV91cykgLyAxMDAwOwotICAgICAgICAgICAgaWYgKHN0ZDo6
YWJzKGRlbHRhX2RpZmZfbXMpID4gMjAwKSB7Ci0gICAgICAgICAgICAgIGp1bXBfaW5fcmVwb3J0
ZWRfdGltZXNfID0gdHJ1ZTsKLSAgICAgICAgICAgICAgb2JzZXJ2YXRpb25fY29tcGxldGVfLlNl
dCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBsYXN0
X2Fycml2YWxfdGltZV91c18gPSBhcnJpdmFsX3RpbWVfdXM7Ci0gICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBTRU5EX1BBQ0tFVDsKLSAgfQotICBBY3Rpb24gT25TZW5kUnRwKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIG92ZXJyaWRlIHsKLSAgICB7Ci0gICAgICBydGM6OkNy
aXRTY29wZSBjcml0KCZzZW5kX3RpbWVzX2NyaXRfKTsKLSAgICAgIHNlbmRfdGltZXNfdXNfLnB1
c2hfYmFjayhydGM6OlRpbWVNaWNyb3MoKSk7Ci0gICAgfQotICAgIGludDY0X3Qgbm93X21zID0g
cnRjOjpUaW1lTWlsbGlzKCk7Ci0gICAgaWYgKCFmaXJzdF9zZW5kX3RpbWVfbXNfKQotICAgICAg
Zmlyc3Rfc2VuZF90aW1lX21zXyA9IG5vd19tczsKLSAgICBpbnQ2NF90IHNlbmRfdGltZV9tcyA9
IG5vd19tcyAtIGZpcnN0X3NlbmRfdGltZV9tc187Ci0gICAgaWYgKHNlbmRfdGltZV9tcyA+PSBq
dW1wc18uZnJvbnQoKS5hdF9zZW5kX3RpbWVfbXMpIHsKLSAgICAgIGlmIChqdW1wc18uZnJvbnQo
KS5hZGRfb2Zmc2V0X21zID09IFRpbWVKdW1wOjprU3RvcCkgewotICAgICAgICBvYnNlcnZhdGlv
bl9jb21wbGV0ZV8uU2V0KCk7Ci0gICAgICAgIGp1bXBzXy5wb3AoKTsKLSAgICAgICAgcmV0dXJu
IFNFTkRfUEFDS0VUOwotICAgICAgfQotICAgICAgY2xvY2tfb2Zmc2V0X21zXyArPSBqdW1wc18u
ZnJvbnQoKS5hZGRfb2Zmc2V0X21zOwotICAgICAgc2VuZF9waXBlXy0+U2V0Q2xvY2tPZmZzZXQo
Y2xvY2tfb2Zmc2V0X21zXyk7Ci0gICAgICBqdW1wc18ucG9wKCk7Ci0gICAgfQotICAgIHJldHVy
biBTRU5EX1BBQ0tFVDsKLSAgfQotICB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQqIENyZWF0ZVNlbmRU
cmFuc3BvcnQoCi0gICAgICB0ZXN0OjpTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3Rpbmcq
IHRhc2tfcXVldWUsCi0gICAgICBDYWxsKiBzZW5kZXJfY2FsbCkgb3ZlcnJpZGUgewotICAgIGF1
dG8gcGlwZSA9IGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCi0gICAgICAgIENs
b2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCi0gICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVs
YXRlZE5ldHdvcms+KERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSk7Ci0gICAgc2Vu
ZF9waXBlXyA9IHBpcGUuZ2V0KCk7Ci0gICAgcmV0dXJuIHNlbmRfdHJhbnNwb3J0XyA9IG5ldyB0
ZXN0OjpQYWNrZXRUcmFuc3BvcnQoCi0gICAgICAgICAgICAgICB0YXNrX3F1ZXVlLCBzZW5kZXJf
Y2FsbCwgdGhpcywgdGVzdDo6UGFja2V0VHJhbnNwb3J0OjprU2VuZGVyLAotICAgICAgICAgICAg
ICAgdGVzdDo6Q2FsbFRlc3Q6OnBheWxvYWRfdHlwZV9tYXBfLCBzdGQ6Om1vdmUocGlwZSkpOwot
ICB9Ci0gIHZvaWQgUGVyZm9ybVRlc3QoKSBvdmVycmlkZSB7Ci0gICAgb2JzZXJ2YXRpb25fY29t
cGxldGVfLldhaXQodGVzdDo6Q2FsbFRlc3Q6OmtEZWZhdWx0VGltZW91dE1zKTsKLSAgfQotICBz
aXplX3QgR2V0TnVtVmlkZW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMTsgfQot
ICBzaXplX3QgR2V0TnVtQXVkaW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsg
fQotCi0gcHJpdmF0ZToKLSAgaW50NjRfdCBsYXN0X2Fycml2YWxfdGltZV91c18gPSAwOwotICBp
bnQ2NF90IGZpcnN0X3NlbmRfdGltZV9tc18gPSAwOwotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBz
ZW5kX3RpbWVzX2NyaXRfOwotICBzdGQ6OmRlcXVlPGludDY0X3Q+IHNlbmRfdGltZXNfdXNfIFJU
Q19HVUFSREVEX0JZKHNlbmRfdGltZXNfY3JpdF8pOwotICBib29sIGp1bXBfaW5fcmVwb3J0ZWRf
dGltZXNfID0gZmFsc2U7Ci0gIEZha2VOZXR3b3JrUGlwZSogc2VuZF9waXBlXzsKLSAgdGVzdDo6
UGFja2V0VHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydF87Ci0gIGludDY0X3QgY2xvY2tfb2Zmc2V0
X21zXyA9IDA7Ci0gIHN0ZDo6cXVldWU8VGltZUp1bXA+IGp1bXBzXzsKLX07Ci19ICAvLyBuYW1l
c3BhY2UKLQotY2xhc3MgUmVjZWl2ZVRpbWVFbmRUb0VuZFRlc3QgOiBwdWJsaWMgdGVzdDo6Q2Fs
bFRlc3QgewotIHB1YmxpYzoKLSAgUmVjZWl2ZVRpbWVFbmRUb0VuZFRlc3QoKSB7fQotCi0gIHZp
cnR1YWwgflJlY2VpdmVUaW1lRW5kVG9FbmRUZXN0KCkge30KLX07Ci0KLVRFU1RfRihSZWNlaXZl
VGltZUVuZFRvRW5kVGVzdCwgUmVjZWl2ZVRpbWVKdW1wc1dpdGhvdXRGaWVsZFRyaWFsKSB7Ci0g
IC8vIFdpdGhvdXQgdGhlIGZpZWxkIHRyaWFsLCB0aGUganVtcHMgaW4gY2xvY2sgb2Zmc2V0IHNo
b3VsZCBiZSBsZXQgdHJvdWdoIGFuZAotICAvLyBiZSBkZXRlY3RlZC4KLSAgUmVwb3J0ZWRSZWNl
aXZlVGltZVRlc3RlciB0ZXN0OwotICBSdW5CYXNlVGVzdCgmdGVzdCk7Ci0gIEVYUEVDVF9UUlVF
KHRlc3QuSnVtcEluUmVwb3J0ZWRUaW1lcygpKTsKLX0KLQotVEVTVF9GKFJlY2VpdmVUaW1lRW5k
VG9FbmRUZXN0LCBSZWNlaXZlVGltZVN0ZWFkeVdpdGhGaWVsZFRyaWFsKSB7Ci0gIC8vIFNpbmNl
IGFsbCB0aGUgYWRkZWQganVtcHMgYnkgdGhlIHRlc3RlciBhcmUgb3V0c2lkZSB0aGUgaW50ZXJ2
YWwgb2YgLTEwMCBtcwotICAvLyB0byAxMDAwIG1zLCB0aGV5IHNob3VsZCBhbGwgYmUgZmlsdGVy
ZWQgYnkgdGhlIGZpZWxkIHRyaWFsIGJlbG93LCBhbmQgbm8KLSAgLy8ganVtcHMgc2hvdWxkIGJl
IGRldGVjdGVkLgotICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbCgKLSAgICAg
ICJXZWJSVEMtQndlUmVjZWl2ZVRpbWVDb3JyZWN0aW9uL0VuYWJsZWQsLTEwMCwxMDAwLyIpOwot
ICBSZXBvcnRlZFJlY2VpdmVUaW1lVGVzdGVyIHRlc3Q7Ci0gIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsK
LSAgRVhQRUNUX0ZBTFNFKHRlc3QuSnVtcEluUmVwb3J0ZWRUaW1lcygpKTsKLX0KLX0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcmV0cmFuc21pc3Npb25fdGVzdHMu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRf
dG9fZW5kX3Rlc3RzL3JldHJhbnNtaXNzaW9uX3Rlc3RzLmNjCmluZGV4IDczYTU1ODVlNzQ3MTkx
YjJlMzg1ODY3YWJmMjcyNTc0NzU3MjhlZjEuLmQxYTY5ZTNlZDMxODFjOWY1YmM1ZGE3OGI5NzZl
NmY4NzY1OThmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcmV0cmFuc21pc3Npb25fdGVzdHMuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5k
X3RvX2VuZF90ZXN0cy9yZXRyYW5zbWlzc2lvbl90ZXN0cy5jYwpAQCAtOSwxMyArOSwxMyBAQAog
ICovCiAKICNpbmNsdWRlICJhcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgorI2luY2x1ZGUg
ImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1
ZGUgImNhbGwvZmFrZV9uZXR3b3JrX3BpcGUuaCIKICNpbmNsdWRlICJjYWxsL3NpbXVsYXRlZF9u
ZXR3b3JrLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNs
dWRlL3ZwOC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL3NsZWVwLmgiCiAj
aW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgi
Ci0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNs
dWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9ydGNwX3BhY2tldF9wYXJzZXIuaCIK
IApAQCAtMTMxLDkgKzEzMSw4IEBAIFRFU1RfRihSZXRyYW5zbWlzc2lvbkVuZFRvRW5kVGVzdCwg
UmVjZWl2ZXNOYWNrQW5kUmV0cmFuc21pdHNBdWRpbykgewogICAgICAgICAgIHRhc2tfcXVldWUs
IG51bGxwdHIsIHRoaXMsIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1JlY2VpdmVyLAogICAgICAg
ICAgIHBheWxvYWRfdHlwZV9tYXBfLAogICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VO
ZXR3b3JrUGlwZT4oCi0gICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCi0g
ICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAg
ICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSk7CisgICAgICAg
ICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVs
YXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSkpOwogICAgICAgcmVjZWl2ZV90cmFu
c3BvcnRfID0gcmVjZWl2ZV90cmFuc3BvcnQ7CiAgICAgICByZXR1cm4gcmVjZWl2ZV90cmFuc3Bv
cnQ7CiAgICAgfQpAQCAtMTY2LDcgKzE2NSw2IEBAIFRFU1RfRihSZXRyYW5zbWlzc2lvbkVuZFRv
RW5kVGVzdCwgUmVjZWl2ZXNOYWNrQW5kUmV0cmFuc21pdHNBdWRpbykgewogICAgIHZvaWQgTW9k
aWZ5QXVkaW9Db25maWdzKAogICAgICAgICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyogc2VuZF9j
b25maWcsCiAgICAgICAgIHN0ZDo6dmVjdG9yPEF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnPiog
cmVjZWl2ZV9jb25maWdzKSBvdmVycmlkZSB7Ci0gICAgICBzZW5kX2NvbmZpZy0+cnRwLm5hY2su
cnRwX2hpc3RvcnlfbXMgPSBrTmFja1J0cEhpc3RvcnlNczsKICAgICAgICgqcmVjZWl2ZV9jb25m
aWdzKVswXS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyA9IGtOYWNrUnRwSGlzdG9yeU1zOwogICAg
ICAgbG9jYWxfc3NyY18gPSAoKnJlY2VpdmVfY29uZmlncylbMF0ucnRwLmxvY2FsX3NzcmM7CiAg
ICAgICByZW1vdGVfc3NyY18gPSAoKnJlY2VpdmVfY29uZmlncylbMF0ucnRwLnJlbW90ZV9zc3Jj
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9ydHBfcnRjcF90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcnRwX3J0
Y3BfdGVzdHMuY2MKaW5kZXggN2Q5NmRjY2E3NjEwZWRhMmJhMjU4YmE0Y2NmMjgxMjFjOGJiYmNi
Yi4uZjE5YzZhZDNmYWE1ZjZhNDE4NzBjMzg1OGRhOGI1NDBhYjJiZGE2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2Vu
ZF90ZXN0cy9ydHBfcnRjcF90ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3J0cF9ydGNwX3Rlc3RzLmNj
CkBAIC0yODIsMTMgKzI4MiwxMyBAQCB2b2lkIFJ0cFJ0Y3BFbmRUb0VuZFRlc3Q6OlRlc3RSdHBT
dGF0ZVByZXNlcnZhdGlvbigKICAgICAgICAgdGVzdDo6UGFja2V0VHJhbnNwb3J0OjprU2VuZGVy
LCBwYXlsb2FkX3R5cGVfbWFwXywKICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdv
cmtQaXBlPigKICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1h
a2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVo
YXZpb3JDb25maWcoKSkpKTsKICAgICByZWNlaXZlX3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5p
cXVlPHRlc3Q6OlBhY2tldFRyYW5zcG9ydD4oCiAgICAgICAgICZ0YXNrX3F1ZXVlXywgbnVsbHB0
ciwgJm9ic2VydmVyLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtSZWNlaXZlciwKICAgICAgICAg
cGF5bG9hZF90eXBlX21hcF8sCiAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3Jr
UGlwZT4oCiAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtl
X3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2
aW9yQ29uZmlnKCkpKSk7CiAgICAgc2VuZF90cmFuc3BvcnQtPlNldFJlY2VpdmVyKHJlY2VpdmVy
X2NhbGxfLT5SZWNlaXZlcigpKTsKICAgICByZWNlaXZlX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIo
c2VuZGVyX2NhbGxfLT5SZWNlaXZlcigpKTsKIApAQCAtNDc0LDcgKzQ3NCw3IEBAIFRFU1RfRihS
dHBSdGNwRW5kVG9FbmRUZXN0LCBESVNBQkxFRF9UZXN0RmxleGZlY1J0cFN0YXRlUHJlc2VydmF0
aW9uKSB7CiAgIHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsKICAgICBDcmVhdGVDYWxscygp
OwogCi0gICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGxvc3N5X2RlbGF5ZWRfbGlu
azsKKyAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGxvc3N5X2RlbGF5ZWRfbGluazsK
ICAgICBsb3NzeV9kZWxheWVkX2xpbmsubG9zc19wZXJjZW50ID0gMjsKICAgICBsb3NzeV9kZWxh
eWVkX2xpbmsucXVldWVfZGVsYXlfbXMgPSA1MDsKIApAQCAtNDg2LDcgKzQ4Niw3IEBAIFRFU1Rf
RihSdHBSdGNwRW5kVG9FbmRUZXN0LCBESVNBQkxFRF9UZXN0RmxleGZlY1J0cFN0YXRlUHJlc2Vy
dmF0aW9uKSB7CiAgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3Jr
Pihsb3NzeV9kZWxheWVkX2xpbmspKSk7CiAgICAgc2VuZF90cmFuc3BvcnQtPlNldFJlY2VpdmVy
KHJlY2VpdmVyX2NhbGxfLT5SZWNlaXZlcigpKTsKIAotICAgIERlZmF1bHROZXR3b3JrU2ltdWxh
dGlvbkNvbmZpZyBmbGF3bGVzc19saW5rOworICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25m
aWcgZmxhd2xlc3NfbGluazsKICAgICByZWNlaXZlX3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5p
cXVlPHRlc3Q6OlBhY2tldFRyYW5zcG9ydD4oCiAgICAgICAgICZ0YXNrX3F1ZXVlXywgbnVsbHB0
ciwgJm9ic2VydmVyLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtSZWNlaXZlciwKICAgICAgICAg
cGF5bG9hZF90eXBlX21hcF8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3NzcmNfdGVzdHMuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5k
X3Rlc3RzL3NzcmNfdGVzdHMuY2MKaW5kZXggYzAzYjQ5NDc3ZDYwYThiZTgyODU1MTlkM2VhZjk2
MmRmMjkyYWJmZi4uODZmYWEwNDY1YjVmYjNjMWQ4ZGRhODgyYWIzOWNlZmQ5YTkyOTk1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
ZW5kX3RvX2VuZF90ZXN0cy9zc3JjX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvc3NyY190ZXN0cy5j
YwpAQCAtNDgsNyArNDgsNyBAQCBURVNUX0YoU3NyY0VuZFRvRW5kVGVzdCwgVW5rbm93blJ0cFBh
Y2tldEdpdmVzVW5rbm93blNzcmNSZXR1cm5Db2RlKSB7CiAgIGNsYXNzIFBhY2tldElucHV0T2Jz
ZXJ2ZXIgOiBwdWJsaWMgUGFja2V0UmVjZWl2ZXIgewogICAgcHVibGljOgogICAgIGV4cGxpY2l0
IFBhY2tldElucHV0T2JzZXJ2ZXIoUGFja2V0UmVjZWl2ZXIqIHJlY2VpdmVyKQotICAgICAgICA6
IHJlY2VpdmVyXyhyZWNlaXZlciksIGRlbGl2ZXJlZF9wYWNrZXRfKGZhbHNlLCBmYWxzZSkge30K
KyAgICAgICAgOiByZWNlaXZlcl8ocmVjZWl2ZXIpIHt9CiAKICAgICBib29sIFdhaXQoKSB7IHJl
dHVybiBkZWxpdmVyZWRfcGFja2V0Xy5XYWl0KGtEZWZhdWx0VGltZW91dE1zKTsgfQogCkBAIC04
MiwxNSArODIsMTUgQEAgVEVTVF9GKFNzcmNFbmRUb0VuZFRlc3QsIFVua25vd25SdHBQYWNrZXRH
aXZlc1Vua25vd25Tc3JjUmV0dXJuQ29kZSkgewogCiAgICAgc2VuZF90cmFuc3BvcnQgPSBhYnNs
OjptYWtlX3VuaXF1ZTx0ZXN0OjpEaXJlY3RUcmFuc3BvcnQ+KAogICAgICAgICAmdGFza19xdWV1
ZV8sCi0gICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCi0gICAgICAg
ICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0
ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
ZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpLAorICAgICAgICBhYnNsOjptYWtlX3Vu
aXF1ZTxGYWtlTmV0d29ya1BpcGU+KENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2lt
dWxhdGVkTmV0d29yaz4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpLAogICAgICAgICBzZW5kZXJf
Y2FsbF8uZ2V0KCksIHBheWxvYWRfdHlwZV9tYXBfKTsKICAgICByZWNlaXZlX3RyYW5zcG9ydCA9
IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4oCiAgICAgICAgICZ0YXNr
X3F1ZXVlXywKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAg
ICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNp
bXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSksCisgICAgICAgIGFic2w6Om1h
a2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1
ZTxTaW11bGF0ZWROZXR3b3JrPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSksCiAgICAgICAgIHJl
Y2VpdmVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiAgICAgaW5wdXRfb2JzZXJ2
ZXIgPQogICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxQYWNrZXRJbnB1dE9ic2VydmVyPihyZWNl
aXZlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3N0YXRzX3Rlc3Rz
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5k
X3RvX2VuZF90ZXN0cy9zdGF0c190ZXN0cy5jYwppbmRleCBhZjZiYmRhMTY4ZTI0NGRlYzc3NjBm
ZThhNTE0MDVlYTQ1OTgwMzc5Li5kNmU5MmM4YWYyMDNhZWY1Y2JlZjU0NDE3ZmJkMjgwMDk0NmI5
ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3N0YXRzX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvc3Rh
dHNfdGVzdHMuY2MKQEAgLTksNiArOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImFwaS90ZXN0L3Np
bXVsYXRlZF9uZXR3b3JrLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5o
IgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5oIgpAQCAtMTgsNyArMTksNiBAQAogI2luY2x1
ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL3NsZWVwLmgiCiAjaW5jbHVkZSAidGVzdC9jYWxs
X3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L2Zha2VfZW5jb2Rlci5oIgotI2luY2x1ZGUgInRlc3Qv
ZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5o
IgogI2luY2x1ZGUgInRlc3QvcnRjcF9wYWNrZXRfcGFyc2VyLmgiCiAKQEAgLTQ3LDggKzQ3LDcg
QEAgVEVTVF9GKFN0YXRzRW5kVG9FbmRUZXN0LCBHZXRTdGF0cykgewogICAgICAgICAgICAgICAg
IENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIDEwKTsKICAgICAgICAgICB9KSwKICAgICAgICAg
ICBzZW5kX3N0cmVhbV8obnVsbHB0ciksCi0gICAgICAgICAgZXhwZWN0ZWRfc2VuZF9zc3Jjc18o
KSwKLSAgICAgICAgICBjaGVja19zdGF0c19ldmVudF8oZmFsc2UsIGZhbHNlKSB7fQorICAgICAg
ICAgIGV4cGVjdGVkX3NlbmRfc3NyY3NfKCkge30KIAogICAgcHJpdmF0ZToKICAgICBBY3Rpb24g
T25TZW5kUnRwKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IGxlbmd0aCkgb3ZlcnJpZGUg
ewpAQCAtMjMxLDcgKzIzMCw3IEBAIFRFU1RfRihTdGF0c0VuZFRvRW5kVGVzdCwgR2V0U3RhdHMp
IHsKICAgICB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQqIENyZWF0ZVNlbmRUcmFuc3BvcnQoCiAgICAg
ICAgIHRlc3Q6OlNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZyogdGFza19xdWV1ZSwK
ICAgICAgICAgQ2FsbCogc2VuZGVyX2NhbGwpIG92ZXJyaWRlIHsKLSAgICAgIERlZmF1bHROZXR3
b3JrU2ltdWxhdGlvbkNvbmZpZyBuZXR3b3JrX2NvbmZpZzsKKyAgICAgIEJ1aWx0SW5OZXR3b3Jr
QmVoYXZpb3JDb25maWcgbmV0d29ya19jb25maWc7CiAgICAgICBuZXR3b3JrX2NvbmZpZy5sb3Nz
X3BlcmNlbnQgPSA1OwogICAgICAgcmV0dXJuIG5ldyB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQoCiAg
ICAgICAgICAgdGFza19xdWV1ZSwgc2VuZGVyX2NhbGwsIHRoaXMsIHRlc3Q6OlBhY2tldFRyYW5z
cG9ydDo6a1NlbmRlciwKQEAgLTI0MCw4ICsyMzksOSBAQCBURVNUX0YoU3RhdHNFbmRUb0VuZFRl
c3QsIEdldFN0YXRzKSB7CiAgICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCks
CiAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KG5ldHdv
cmtfY29uZmlnKSkpOwogICAgIH0KLSAgICB2b2lkIE1vZGlmeVNlbmRlckNhbGxDb25maWcoQ2Fs
bDo6Q29uZmlnKiBjb25maWcpIG92ZXJyaWRlIHsKLSAgICAgIGNvbmZpZy0+Yml0cmF0ZV9jb25m
aWcuc3RhcnRfYml0cmF0ZV9icHMgPSBrU3RhcnRCaXRyYXRlQnBzOworICAgIHZvaWQgTW9kaWZ5
U2VuZGVyQml0cmF0ZUNvbmZpZygKKyAgICAgICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRl
X2NvbmZpZykgb3ZlcnJpZGUgeworICAgICAgYml0cmF0ZV9jb25maWctPnN0YXJ0X2JpdHJhdGVf
YnBzID0ga1N0YXJ0Qml0cmF0ZUJwczsKICAgICB9CiAKICAgICAvLyBUaGlzIHRlc3QgdXNlIG90
aGVyIFZpZGVvU3RyZWFtIHNldHRpbmdzIHRoYW4gdGhlIHRoZSBkZWZhdWx0IHNldHRpbmdzCkBA
IC01MTUsOSArNTE1LDkgQEAgVEVTVF9GKFN0YXRzRW5kVG9FbmRUZXN0LCBNQVlCRV9Db250ZW50
VHlwZVN3aXRjaGVzKSB7CiAgIG1ldHJpY3M6OlJlc2V0KCk7CiAKICAgQ2FsbDo6Q29uZmlnIHNl
bmRfY29uZmlnKHNlbmRfZXZlbnRfbG9nXy5nZXQoKSk7Ci0gIHRlc3QuTW9kaWZ5U2VuZGVyQ2Fs
bENvbmZpZygmc2VuZF9jb25maWcpOworICB0ZXN0Lk1vZGlmeVNlbmRlckJpdHJhdGVDb25maWco
JnNlbmRfY29uZmlnLmJpdHJhdGVfY29uZmlnKTsKICAgQ2FsbDo6Q29uZmlnIHJlY3ZfY29uZmln
KHJlY3ZfZXZlbnRfbG9nXy5nZXQoKSk7Ci0gIHRlc3QuTW9kaWZ5UmVjZWl2ZXJDYWxsQ29uZmln
KCZyZWN2X2NvbmZpZyk7CisgIHRlc3QuTW9kaWZ5UmVjZWl2ZXJCaXRyYXRlQ29uZmlnKCZyZWN2
X2NvbmZpZy5iaXRyYXRlX2NvbmZpZyk7CiAKICAgVmlkZW9FbmNvZGVyQ29uZmlnIGVuY29kZXJf
Y29uZmlnX3dpdGhfc2NyZWVuc2hhcmU7CiAKQEAgLTcxMyw3ICs3MTMsNyBAQCBURVNUX0YoU3Rh
dHNFbmRUb0VuZFRlc3QsIENhbGxSZXBvcnRzUnR0Rm9yU2VuZGVyKSB7CiAgIHN0ZDo6dW5pcXVl
X3B0cjx0ZXN0OjpEaXJlY3RUcmFuc3BvcnQ+IHJlY2VpdmVyX3RyYW5zcG9ydDsKIAogICB0YXNr
X3F1ZXVlXy5TZW5kVGFzayhbdGhpcywgJnNlbmRlcl90cmFuc3BvcnQsICZyZWNlaXZlcl90cmFu
c3BvcnRdKCkgewotICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7Cisg
ICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBjb25maWc7CiAgICAgY29uZmlnLnF1ZXVl
X2RlbGF5X21zID0ga1NlbmREZWxheU1zOwogICAgIENyZWF0ZUNhbGxzKCk7CiAgICAgc2VuZGVy
X3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9lbmRfdG9fZW5kX3Rlc3RzL3RyYW5zcG9ydF9mZWVkYmFja190ZXN0cy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMv
dHJhbnNwb3J0X2ZlZWRiYWNrX3Rlc3RzLmNjCmluZGV4IDE0MzdjZDQ2ZTQ4NWViNGYzNjk5MDcx
MjM5ZWRlMjhiY2UyZWZhMTQuLjk0ZGIwMzgzMzA1MTk4ZTYwMTZmNTY3ZDgyNGM1NDc4MTFkMGQ0
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvdHJhbnNwb3J0X2ZlZWRiYWNrX3Rlc3RzLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19l
bmRfdGVzdHMvdHJhbnNwb3J0X2ZlZWRiYWNrX3Rlc3RzLmNjCkBAIC01NSwxMCArNTUsOSBAQCBU
RVNUX1AoVHJhbnNwb3J0RmVlZGJhY2tFbmRUb0VuZFRlc3QsIEFzc2lnbnNUcmFuc3BvcnRTZXF1
ZW5jZU51bWJlcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlx
dWU8RmFrZU5ldHdvcmtQaXBlPigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb2Nr
OjpHZXRSZWFsVGltZUNsb2NrKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNs
OjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kZXJfY2FsbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGF5bG9hZF90eXBlX21hcCksCi0gICAgICAgICAgZG9uZV8oZmFsc2UsIGZh
bHNlKSwKICAgICAgICAgICBwYXJzZXJfKFJ0cEhlYWRlclBhcnNlcjo6Q3JlYXRlKCkpLAogICAg
ICAgICAgIGZpcnN0X21lZGlhX3NzcmNfKGZpcnN0X21lZGlhX3NzcmMpLAogICAgICAgICAgIHJ0
eF90b19tZWRpYV9zc3Jjc18oc3NyY19tYXApLApAQCAtNDE1LDggKzQxNCw5IEBAIFRFU1RfUChU
cmFuc3BvcnRGZWVkYmFja0VuZFRvRW5kVGVzdCwKICAgICAgIEVYUEVDVF9UUlVFKHBhcnNlci5Q
YXJzZShkYXRhLCBsZW5ndGgpKTsKICAgICAgIHJldHVybiBwYXJzZXIudHJhbnNwb3J0X2ZlZWRi
YWNrKCktPm51bV9wYWNrZXRzKCkgPiAwOwogICAgIH0KLSAgICB2b2lkIE1vZGlmeVNlbmRlckNh
bGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpIG92ZXJyaWRlIHsKLSAgICAgIGNvbmZpZy0+
Yml0cmF0ZV9jb25maWcubWF4X2JpdHJhdGVfYnBzID0gMzAwMDAwOworICAgIHZvaWQgTW9kaWZ5
U2VuZGVyQml0cmF0ZUNvbmZpZygKKyAgICAgICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRl
X2NvbmZpZykgb3ZlcnJpZGUgeworICAgICAgYml0cmF0ZV9jb25maWctPm1heF9iaXRyYXRlX2Jw
cyA9IDMwMDAwMDsKICAgICB9CiAKICAgICB2b2lkIFBlcmZvcm1UZXN0KCkgb3ZlcnJpZGUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vZnJhbWVfZHVtcGluZ19kZWNvZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vZnJhbWVfZHVtcGluZ19kZWNvZGVyLmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc3OTg1MTFiNTQzOWEzYmE3MWNmYzhlY2MzMDYyZWJkMDM3OTRlMmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9mcmFt
ZV9kdW1waW5nX2RlY29kZXIuY2MKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpbmNsdWRlICJ2aWRlby9mcmFtZV9kdW1waW5nX2RlY29kZXIuaCIKKworI2luY2x1
ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3Zp
ZGVvX2NvZGVjX2ludGVyZmFjZS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworRnJhbWVEdW1w
aW5nRGVjb2Rlcjo6RnJhbWVEdW1waW5nRGVjb2RlcihzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNv
ZGVyPiBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dGM6OlBsYXRmb3JtRmlsZSBmaWxlKQorICAgIDogZGVjb2Rlcl8oc3RkOjptb3ZlKGRlY29kZXIp
KSwKKyAgICAgIHdyaXRlcl8oSXZmRmlsZVdyaXRlcjo6V3JhcChydGM6OkZpbGUoZmlsZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYnl0ZV9saW1pdD0gKi8gMTAwMDAw
MDAwKSkge30KKworRnJhbWVEdW1waW5nRGVjb2Rlcjo6fkZyYW1lRHVtcGluZ0RlY29kZXIoKSA9
IGRlZmF1bHQ7CisKK2ludDMyX3QgRnJhbWVEdW1waW5nRGVjb2Rlcjo6SW5pdERlY29kZShjb25z
dCBWaWRlb0NvZGVjKiBjb2RlY19zZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IG51bWJlcl9vZl9jb3JlcykgeworICByZXR1cm4gZGVjb2Rl
cl8tPkluaXREZWNvZGUoY29kZWNfc2V0dGluZ3MsIG51bWJlcl9vZl9jb3Jlcyk7Cit9CisKK2lu
dDMyX3QgRnJhbWVEdW1waW5nRGVjb2Rlcjo6RGVjb2RlKAorICAgIGNvbnN0IEVuY29kZWRJbWFn
ZSYgaW5wdXRfaW1hZ2UsCisgICAgYm9vbCBtaXNzaW5nX2ZyYW1lcywKKyAgICBjb25zdCBDb2Rl
Y1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKKyAgICBpbnQ2NF90IHJlbmRlcl90
aW1lX21zKSB7CisgIGludDMyX3QgcmV0ID0gZGVjb2Rlcl8tPkRlY29kZShpbnB1dF9pbWFnZSwg
bWlzc2luZ19mcmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY19z
cGVjaWZpY19pbmZvLCByZW5kZXJfdGltZV9tcyk7CisgIHdyaXRlcl8tPldyaXRlRnJhbWUoaW5w
dXRfaW1hZ2UsIGNvZGVjX3NwZWNpZmljX2luZm8tPmNvZGVjVHlwZSk7CisKKyAgcmV0dXJuIHJl
dDsKK30KKworaW50MzJfdCBGcmFtZUR1bXBpbmdEZWNvZGVyOjpSZWdpc3RlckRlY29kZUNvbXBs
ZXRlQ2FsbGJhY2soCisgICAgRGVjb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSB7CisgIHJl
dHVybiBkZWNvZGVyXy0+UmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKGNhbGxiYWNrKTsK
K30KKworaW50MzJfdCBGcmFtZUR1bXBpbmdEZWNvZGVyOjpSZWxlYXNlKCkgeworICByZXR1cm4g
ZGVjb2Rlcl8tPlJlbGVhc2UoKTsKK30KKworYm9vbCBGcmFtZUR1bXBpbmdEZWNvZGVyOjpQcmVm
ZXJzTGF0ZURlY29kaW5nKCkgY29uc3QgeworICByZXR1cm4gZGVjb2Rlcl8tPlByZWZlcnNMYXRl
RGVjb2RpbmcoKTsKK30KKworY29uc3QgY2hhciogRnJhbWVEdW1waW5nRGVjb2Rlcjo6SW1wbGVt
ZW50YXRpb25OYW1lKCkgY29uc3QgeworICByZXR1cm4gZGVjb2Rlcl8tPkltcGxlbWVudGF0aW9u
TmFtZSgpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9mcmFtZV9kdW1waW5nX2Rl
Y29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L2ZyYW1lX2R1bXBpbmdfZGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxOWU5YjRkYjA4OWQ4MzVhMmYz
ZWI4MjU1OTQwZTI3MWZlYzA5MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9mcmFtZV9kdW1waW5nX2RlY29kZXIuaApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBWSURFT19G
UkFNRV9EVU1QSU5HX0RFQ09ERVJfSF8KKyNkZWZpbmUgVklERU9fRlJBTUVfRFVNUElOR19ERUNP
REVSX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNz
L3ZpZGVvX2RlY29kZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5
L2l2Zl9maWxlX3dyaXRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIK
KworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEEgZGVjb2RlciB3cmFwcGVyIHRoYXQgd3JpdGVz
IHRoZSBlbmNvZGVkIGZyYW1lcyB0byBhIGZpbGUuCitjbGFzcyBGcmFtZUR1bXBpbmdEZWNvZGVy
IDogcHVibGljIFZpZGVvRGVjb2RlciB7CisgcHVibGljOgorICBGcmFtZUR1bXBpbmdEZWNvZGVy
KHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+IGRlY29kZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSk7CisgIH5GcmFtZUR1bXBpbmdEZWNvZGVyKCkg
b3ZlcnJpZGU7CisKKyAgaW50MzJfdCBJbml0RGVjb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNvZGVj
X3NldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBudW1iZXJfb2ZfY29yZXMp
IG92ZXJyaWRlOworICBpbnQzMl90IERlY29kZShjb25zdCBFbmNvZGVkSW1hZ2UmIGlucHV0X2lt
YWdlLAorICAgICAgICAgICAgICAgICBib29sIG1pc3NpbmdfZnJhbWVzLAorICAgICAgICAgICAg
ICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKKyAgICAg
ICAgICAgICAgICAgaW50NjRfdCByZW5kZXJfdGltZV9tcykgb3ZlcnJpZGU7CisgIGludDMyX3Qg
UmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKAorICAgICAgRGVjb2RlZEltYWdlQ2FsbGJh
Y2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKKyAgaW50MzJfdCBSZWxlYXNlKCkgb3ZlcnJpZGU7Cisg
IGJvb2wgUHJlZmVyc0xhdGVEZWNvZGluZygpIGNvbnN0IG92ZXJyaWRlOworICBjb25zdCBjaGFy
KiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIHN0
ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+IGRlY29kZXJfOworICBzdGQ6OnVuaXF1ZV9wdHI8
SXZmRmlsZVdyaXRlcj4gd3JpdGVyXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKwor
I2VuZGlmICAvLyBWSURFT19GUkFNRV9EVU1QSU5HX0RFQ09ERVJfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2Z1bGxfc3RhY2tf
dGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9mdWxsX3N0YWNrX3Rlc3RzLmNjCmluZGV4IDc3ZGEyNTM0NDg5YTJhYWU4MDI3ZGM3OWVhODM4
YTEyZDFlYjk2N2MuLjlhOGQyNTJiZmNjNTFjNmZhZDEzYjU0MTY5MDE2MTg3MDIxMDRlOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L2Z1bGxfc3RhY2tfdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vZnVsbF9zdGFja190ZXN0cy5jYwpAQCAtMjIsMjEgKzIyLDI0IEBA
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBmbGFncyB7CiAKLURFRklORV9zdHJpbmco
cnRjX2V2ZW50X2xvZ19uYW1lLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkZp
bGVuYW1lIGZvciBydGMgZXZlbnQgbG9nLiBUd28gZmlsZXMgIgotICAgICAgICAgICAgICAid2l0
aCBcIl9zZW5kXCIgYW5kIFwiX3JlY3ZcIiBzdWZmaXhlcyB3aWxsIGJlIGNyZWF0ZWQuIik7CitX
RUJSVENfREVGSU5FX3N0cmluZyhydGNfZXZlbnRfbG9nX25hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJGaWxlbmFtZSBmb3IgcnRjIGV2ZW50IGxv
Zy4gVHdvIGZpbGVzICIKKyAgICAgICAgICAgICAgICAgICAgICJ3aXRoIFwiX3NlbmRcIiBhbmQg
XCJfcmVjdlwiIHN1ZmZpeGVzIHdpbGwgYmUgY3JlYXRlZC4iKTsKIHN0ZDo6c3RyaW5nIFJ0Y0V2
ZW50TG9nTmFtZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3J0
Y19ldmVudF9sb2dfbmFtZSk7CiB9Ci1ERUZJTkVfc3RyaW5nKHJ0cF9kdW1wX25hbWUsICIiLCAi
RmlsZW5hbWUgZm9yIGR1bXBlZCByZWNlaXZlZCBSVFAgc3RyZWFtLiIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcocnRwX2R1bXBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAg
ICAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBkdW1wZWQgcmVjZWl2ZWQgUlRQIHN0cmVhbS4i
KTsKIHN0ZDo6c3RyaW5nIFJ0cER1bXBOYW1lKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3Rk
OjpzdHJpbmc+KEZMQUdfcnRwX2R1bXBfbmFtZSk7CiB9Ci1ERUZJTkVfc3RyaW5nKGVuY29kZWRf
ZnJhbWVfcGF0aCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJUaGUgYmFzZSBw
YXRoIGZvciBlbmNvZGVkIGZyYW1lIGxvZ3MuIENyZWF0ZWQgZmlsZXMgd2lsbCBoYXZlICIKLSAg
ICAgICAgICAgICAgInRoZSBmb3JtIDxlbmNvZGVkX2ZyYW1lX3BhdGg+LjxuPi4ocmVjdnxzZW5k
LjxtPikuaXZmIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBlbmNvZGVkX2ZyYW1lX3Bh
dGgsCisgICAgIiIsCisgICAgIlRoZSBiYXNlIHBhdGggZm9yIGVuY29kZWQgZnJhbWUgbG9ncy4g
Q3JlYXRlZCBmaWxlcyB3aWxsIGhhdmUgIgorICAgICJ0aGUgZm9ybSA8ZW5jb2RlZF9mcmFtZV9w
YXRoPi48bj4uKHJlY3Z8c2VuZC48bT4pLml2ZiIpOwogc3RkOjpzdHJpbmcgRW5jb2RlZEZyYW1l
UGF0aCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2VuY29kZWRf
ZnJhbWVfcGF0aCk7CiB9CkBAIC00NywxMCArNTAsMTAgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
IG5hbWVzcGFjZSB7CiBzdGF0aWMgY29uc3QgaW50IGtGdWxsU3RhY2tUZXN0RHVyYXRpb25TZWNz
ID0gNDU7Ci1jb25zdCBjaGFyIGtTY3JlZW5zaGFyZVNpbXVsY2FzdEV4cGVyaW1lbnRbXSA9Ci0g
ICAgIldlYlJUQy1TaW11bGNhc3RTY3JlZW5zaGFyZS9FbmFibGVkLyI7CiBjb25zdCBjaGFyIGtQ
YWNlclB1c2hCYWNrRXhwZXJpbWVudFtdID0KICAgICAiV2ViUlRDLVBhY2VyUHVzaGJhY2tFeHBl
cmltZW50L0VuYWJsZWQvIjsKK2NvbnN0IGNoYXIga1ZwOFRydXN0ZWRSYXRlQ29udHJvbGxlckZp
ZWxkVHJpYWxbXSA9CisgICAgIldlYlJUQy1MaWJ2cHhWcDhUcnVzdGVkUmF0ZUNvbnRyb2xsZXIv
RW5hYmxlZC8iOwogCiBzdHJ1Y3QgUGFyYW1zV2l0aExvZ2dpbmcgOiBwdWJsaWMgVmlkZW9RdWFs
aXR5VGVzdDo6UGFyYW1zIHsKICBwdWJsaWM6CkBAIC01OCw3ICs2MSw3IEBAIHN0cnVjdCBQYXJh
bXNXaXRoTG9nZ2luZyA6IHB1YmxpYyBWaWRlb1F1YWxpdHlUZXN0OjpQYXJhbXMgewogICAgIC8v
IFVzZSB0aGVzZSBsb2dnaW5nIGZsYWdzIGJ5IGRlZmF1bHQsIGZvciBldmVyeXRoaW5nLgogICAg
IGxvZ2dpbmcgPSB7ZmxhZ3M6OlJ0Y0V2ZW50TG9nTmFtZSgpLCBmbGFnczo6UnRwRHVtcE5hbWUo
KSwKICAgICAgICAgICAgICAgIGZsYWdzOjpFbmNvZGVkRnJhbWVQYXRoKCl9OwotICAgIHRoaXMt
PmNvbmZpZyA9IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpOworICAgIHRoaXMtPmNv
bmZpZyA9IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKTsKICAgfQogfTsKIApAQCAtMTA2
LDcgKzEwOSw3IEBAIGNsYXNzIEdlbmVyaWNEZXNjcmlwdG9yVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3RXaXRoUGFyYW08c3RkOjpzdHJpbmc+IHsKICAgYm9vbCBnZW5lcmljX2Rlc2NyaXB0
b3JfZW5hYmxlZF87CiB9OwogCi0jaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2lmIGRl
ZmluZWQoUlRDX0VOQUJMRV9WUDkpCiBURVNUKEZ1bGxTdGFja1Rlc3QsIEZvcmVtYW5DaWZXaXRo
b3V0UGFja2V0TG9zc1ZwOSkgewogICBhdXRvIGZpeHR1cmUgPSBDcmVhdGVWaWRlb1F1YWxpdHlU
ZXN0Rml4dHVyZSgpOwogICBQYXJhbXNXaXRoTG9nZ2luZyBmb3JlbWFuX2NpZjsKQEAgLTE4Nyw3
ICsxOTAsNyBAQCBURVNUKEZ1bGxTdGFja1Rlc3QsIEdlbmVyYXRvcldpdGhvdXRQYWNrZXRMb3Nz
TXVsdGlwbGV4STQyMEFGcmFtZSkgewogICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6ZXIoZ2VuZXJh
dG9yKTsKIH0KIAotI2VuZGlmICAvLyAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjZW5kaWYg
IC8vIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19MSU5VWCkK
IC8vIENyYXNoZXMgb24gdGhlIGxpbnV4IHRydXN0eSBwZXJmIGJvdDogYnVncy53ZWJydGMub3Jn
LzkxMjkuCkBAIC0yMzQsNiArMjM3LDI1IEBAIFRFU1RfUChHZW5lcmljRGVzY3JpcHRvclRlc3Qs
IEZvcmVtYW5DaWYzMGticHNXaXRob3V0UGFja2V0TG9zcykgewogICBmaXh0dXJlLT5SdW5XaXRo
QW5hbHl6ZXIoZm9yZW1hbl9jaWYpOwogfQogCisvLyBUT0RPKHdlYnJ0Yzo5NzIyKTogUmVtb3Zl
IHdoZW4gZXhwZXJpbWVudCBpcyBjbGVhbmVkIHVwLgorVEVTVF9QKEdlbmVyaWNEZXNjcmlwdG9y
VGVzdCwKKyAgICAgICBGb3JlbWFuQ2lmMzBrYnBzV2l0aG91dFBhY2tldExvc3NUcnVzdGVkUmF0
ZUNvbnRyb2wpIHsKKyAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJp
YWxzKAorICAgICAgQXBwZW5kRmllbGRUcmlhbHMoa1ZwOFRydXN0ZWRSYXRlQ29udHJvbGxlckZp
ZWxkVHJpYWwpKTsKKyAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1
cmUoKTsKKworICBQYXJhbXNXaXRoTG9nZ2luZyBmb3JlbWFuX2NpZjsKKyAgZm9yZW1hbl9jaWYu
Y2FsbC5zZW5kX3NpZGVfYndlID0gdHJ1ZTsKKyAgZm9yZW1hbl9jaWYudmlkZW9bMF0gPSB7dHJ1
ZSwgIDM1MiwgICAgICAgICAgMjg4LCAxMCwgMzAwMDAsIDMwMDAwLCAzMDAwMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmFsc2UsICJWUDgiLCAgICAgICAgMSwgICAwLCAgMCwgICAgIGZh
bHNlLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsICJmb3JlbWFuX2Np
ZiJ9OworICBmb3JlbWFuX2NpZi5hbmFseXplciA9IHsKKyAgICAgIEdldFRlc3ROYW1lKCJmb3Jl
bWFuX2NpZl8zMGticHNfbmV0X2RlbGF5XzBfMF9wbHJfMF90cnVzdGVkX3JhdGVfY3RybCIpLAor
ICAgICAgMC4wLCAwLjAsIGtGdWxsU3RhY2tUZXN0RHVyYXRpb25TZWNzfTsKKyAgZm9yZW1hbl9j
aWYuY2FsbC5nZW5lcmljX2Rlc2NyaXB0b3IgPSBHZW5lcmljRGVzY3JpcHRvckVuYWJsZWQoKTsK
KyAgZml4dHVyZS0+UnVuV2l0aEFuYWx5emVyKGZvcmVtYW5fY2lmKTsKK30KKwogLy8gTGluayBj
YXBhY2l0eSBiZWxvdyBkZWZhdWx0IHN0YXJ0IHJhdGUuIEF1dG9tYXRpYyBkb3duIHNjYWxpbmcg
ZW5hYmxlZC4KIFRFU1QoRnVsbFN0YWNrVGVzdCwgRm9yZW1hbkNpZkxpbmsxNTBrYnBzV2l0aG91
dFBhY2tldExvc3MpIHsKICAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZp
eHR1cmUoKTsKQEAgLTM2NSw5ICszODcsOSBAQCBURVNUX1AoR2VuZXJpY0Rlc2NyaXB0b3JUZXN0
LCBGb3JlbWFuQ2lmUGxyNUgyNjQpIHsKIH0KIAogVEVTVChGdWxsU3RhY2tUZXN0LCBGb3JlbWFu
Q2lmUGxyNUgyNjRTcHNQcHNJZHJJc0tleWZyYW1lKSB7Ci0gIGF1dG8gZml4dHVyZSA9IENyZWF0
ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CiAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92
ZXJyaWRlX2ZpZWxkX3RyaWFscygKICAgICAgIEFwcGVuZEZpZWxkVHJpYWxzKCJXZWJSVEMtU3Bz
UHBzSWRySXNIMjY0S2V5ZnJhbWUvRW5hYmxlZC8iKSk7CisgIGF1dG8gZml4dHVyZSA9IENyZWF0
ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CiAKICAgUGFyYW1zV2l0aExvZ2dpbmcgZm9yZW1h
bl9jaWY7CiAgIGZvcmVtYW5fY2lmLmNhbGwuc2VuZF9zaWRlX2J3ZSA9IHRydWU7CkBAIC01MjEs
MTYgKzU0MywyMSBAQCBURVNUKEZ1bGxTdGFja1Rlc3QsIENvbmZlcmVuY2VNb3Rpb25IZDIwMDBr
YnBzMTAwbXNMaW1pdGVkUXVldWUpIHsKICAgZml4dHVyZS0+UnVuV2l0aEFuYWx5emVyKGNvbmZf
bW90aW9uX2hkKTsKIH0KIAotVEVTVChGdWxsU3RhY2tUZXN0LCBDb25mZXJlbmNlTW90aW9uSGQx
VExNb2RlcmF0ZUxpbWl0cykgeworLy8gVE9ETyh3ZWJydGM6OTcyMik6IFJlbW92ZSB3aGVuIGV4
cGVyaW1lbnQgaXMgY2xlYW5lZCB1cC4KK1RFU1QoRnVsbFN0YWNrVGVzdCwgQ29uZmVyZW5jZU1v
dGlvbkhkMVRMTW9kZXJhdGVMaW1pdHNXaGl0ZWxpc3RWcDgpIHsKKyAgdGVzdDo6U2NvcGVkRmll
bGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAgQXBwZW5kRmllbGRUcmlhbHMo
a1ZwOFRydXN0ZWRSYXRlQ29udHJvbGxlckZpZWxkVHJpYWwpKTsKICAgYXV0byBmaXh0dXJlID0g
Q3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKKwogICBQYXJhbXNXaXRoTG9nZ2luZyBj
b25mX21vdGlvbl9oZDsKICAgY29uZl9tb3Rpb25faGQuY2FsbC5zZW5kX3NpZGVfYndlID0gdHJ1
ZTsKICAgY29uZl9tb3Rpb25faGQudmlkZW9bMF0gPSB7CiAgICAgICB0cnVlLCAgICAxMjgwLCAg
ICA3MjAsICAgNTAsICAgIDMwMDAwLAogICAgICAgMzAwMDAwMCwgMzAwMDAwMCwgZmFsc2UsICJW
UDgiLCAxLAogICAgICAgLTEsICAgICAgMCwgICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgIkNv
bmZlcmVuY2VNb3Rpb25fMTI4MF83MjBfNTAifTsKLSAgY29uZl9tb3Rpb25faGQuYW5hbHl6ZXIg
PSB7ImNvbmZlcmVuY2VfbW90aW9uX2hkXzF0bF9tb2RlcmF0ZV9saW1pdHMiLCAwLjAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCwga0Z1bGxTdGFja1Rlc3REdXJhdGlvblNlY3N9
OworICBjb25mX21vdGlvbl9oZC5hbmFseXplciA9IHsKKyAgICAgICJjb25mZXJlbmNlX21vdGlv
bl9oZF8xdGxfbW9kZXJhdGVfbGltaXRzX3RydXN0ZWRfcmF0ZV9jdHJsIiwgMC4wLCAwLjAsCisg
ICAgICBrRnVsbFN0YWNrVGVzdER1cmF0aW9uU2Vjc307CiAgIGNvbmZfbW90aW9uX2hkLmNvbmZp
Zy0+cXVldWVfbGVuZ3RoX3BhY2tldHMgPSA1MDsKICAgY29uZl9tb3Rpb25faGQuY29uZmlnLT5s
b3NzX3BlcmNlbnQgPSAzOwogICBjb25mX21vdGlvbl9oZC5jb25maWctPnF1ZXVlX2RlbGF5X21z
ID0gMTAwOwpAQCAtNTkyLDE3ICs2MTksNDAgQEAgVEVTVChGdWxsU3RhY2tUZXN0LCBDb25mZXJl
bmNlTW90aW9uSGQ0VExNb2RlcmF0ZUxpbWl0cykgewogfQogCiBURVNUKEZ1bGxTdGFja1Rlc3Qs
IENvbmZlcmVuY2VNb3Rpb25IZDNUTE1vZGVyYXRlTGltaXRzQWx0VExQYXR0ZXJuKSB7Ci0gIGF1
dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CiAgIHRlc3Q6OlNj
b3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFsKAogICAgICAgQXBwZW5kRmllbGRUcmlhbHMoIldl
YlJUQy1Vc2VTaG9ydFZQOFRMM1BhdHRlcm4vRW5hYmxlZC8iKSk7CisgIGF1dG8gZml4dHVyZSA9
IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CisgIFBhcmFtc1dpdGhMb2dnaW5nIGNv
bmZfbW90aW9uX2hkOworICBjb25mX21vdGlvbl9oZC5jYWxsLnNlbmRfc2lkZV9id2UgPSB0cnVl
OworICBjb25mX21vdGlvbl9oZC52aWRlb1swXSA9IHsKKyAgICAgIHRydWUsICAxMjgwLCAgICA3
MjAsICAgICA1MCwKKyAgICAgIDMwMDAwLCAzMDAwMDAwLCAzMDAwMDAwLCBmYWxzZSwKKyAgICAg
ICJWUDgiLCAzLCAgICAgICAtMSwgICAgICAwLAorICAgICAgZmFsc2UsIGZhbHNlLCAgIGZhbHNl
LCAgICJDb25mZXJlbmNlTW90aW9uXzEyODBfNzIwXzUwIn07CisgIGNvbmZfbW90aW9uX2hkLmFu
YWx5emVyID0geyJjb25mZXJlbmNlX21vdGlvbl9oZF8zdGxfYWx0X21vZGVyYXRlX2xpbWl0cyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCwgMC4wLCBrRnVsbFN0YWNrVGVzdER1
cmF0aW9uU2Vjc307CisgIGNvbmZfbW90aW9uX2hkLmNvbmZpZy0+cXVldWVfbGVuZ3RoX3BhY2tl
dHMgPSA1MDsKKyAgY29uZl9tb3Rpb25faGQuY29uZmlnLT5sb3NzX3BlcmNlbnQgPSAzOworICBj
b25mX21vdGlvbl9oZC5jb25maWctPnF1ZXVlX2RlbGF5X21zID0gMTAwOworICBjb25mX21vdGlv
bl9oZC5jb25maWctPmxpbmtfY2FwYWNpdHlfa2JwcyA9IDIwMDA7CisgIGZpeHR1cmUtPlJ1bldp
dGhBbmFseXplcihjb25mX21vdGlvbl9oZCk7Cit9CisKK1RFU1QoRnVsbFN0YWNrVGVzdCwKKyAg
ICAgQ29uZmVyZW5jZU1vdGlvbkhkM1RMTW9kZXJhdGVMaW1pdHNBbHRUTFBhdHRlcm5BbmRCYXNl
SGVhdnlUTEFsbG9jYXRpb24pIHsKKyAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5
VGVzdEZpeHR1cmUoKTsKKyAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWwoCisg
ICAgICBBcHBlbmRGaWVsZFRyaWFscygiV2ViUlRDLVVzZVNob3J0VlA4VEwzUGF0dGVybi9FbmFi
bGVkLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJXZWJSVEMtVXNlQmFzZUhlYXZ5VlA4VEwz
UmF0ZUFsbG9jYXRpb24vRW5hYmxlZC8iKSk7CiAgIFBhcmFtc1dpdGhMb2dnaW5nIGNvbmZfbW90
aW9uX2hkOwogICBjb25mX21vdGlvbl9oZC5jYWxsLnNlbmRfc2lkZV9id2UgPSB0cnVlOwogICBj
b25mX21vdGlvbl9oZC52aWRlb1swXSA9IHsKICAgICAgIHRydWUsICAgIDEyODAsICAgIDcyMCwg
ICA1MCwgICAgMzAwMDAsCiAgICAgICAzMDAwMDAwLCAzMDAwMDAwLCBmYWxzZSwgIlZQOCIsIDMs
CiAgICAgICAtMSwgICAgICAwLCAgICAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCAiQ29uZmVyZW5j
ZU1vdGlvbl8xMjgwXzcyMF81MCJ9OwotICBjb25mX21vdGlvbl9oZC5hbmFseXplciA9IHsiY29u
ZmVyZW5jZV9tb3Rpb25faGRfM3RsX2FsdF9tb2RlcmF0ZV9saW1pdHMiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjAsIDAuMCwga0Z1bGxTdGFja1Rlc3REdXJhdGlvblNlY3N9Owor
ICBjb25mX21vdGlvbl9oZC5hbmFseXplciA9IHsKKyAgICAgICJjb25mZXJlbmNlX21vdGlvbl9o
ZF8zdGxfYWx0X2hlYXZ5X21vZGVyYXRlX2xpbWl0cyIsIDAuMCwgMC4wLAorICAgICAga0Z1bGxT
dGFja1Rlc3REdXJhdGlvblNlY3N9OwogICBjb25mX21vdGlvbl9oZC5jb25maWctPnF1ZXVlX2xl
bmd0aF9wYWNrZXRzID0gNTA7CiAgIGNvbmZfbW90aW9uX2hkLmNvbmZpZy0+bG9zc19wZXJjZW50
ID0gMzsKICAgY29uZl9tb3Rpb25faGQuY29uZmlnLT5xdWV1ZV9kZWxheV9tcyA9IDEwMDsKQEAg
LTYxMCw3ICs2NjAsNyBAQCBURVNUKEZ1bGxTdGFja1Rlc3QsIENvbmZlcmVuY2VNb3Rpb25IZDNU
TE1vZGVyYXRlTGltaXRzQWx0VExQYXR0ZXJuKSB7CiAgIGZpeHR1cmUtPlJ1bldpdGhBbmFseXpl
cihjb25mX21vdGlvbl9oZCk7CiB9CiAKLSNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisj
aWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIFRFU1QoRnVsbFN0YWNrVGVzdCwgQ29uZmVyZW5j
ZU1vdGlvbkhkMjAwMGticHMxMDBtc0xpbWl0ZWRRdWV1ZVZQOSkgewogICBhdXRvIGZpeHR1cmUg
PSBDcmVhdGVWaWRlb1F1YWxpdHlUZXN0Rml4dHVyZSgpOwogICBQYXJhbXNXaXRoTG9nZ2luZyBj
b25mX21vdGlvbl9oZDsKQEAgLTY0Miw5ICs2OTIsMTUgQEAgVEVTVChGdWxsU3RhY2tUZXN0LCBT
Y3JlZW5zaGFyZVNsaWRlc1ZQOF8yVEwpIHsKICAgZml4dHVyZS0+UnVuV2l0aEFuYWx5emVyKHNj
cmVlbnNoYXJlKTsKIH0KIAorLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTg0MCk6IEludmVzdGln
YXRlIHdoeSBpcyB0aGlzIHRlc3QgZmxha3kgb24gTUFDLgorI2lmICFkZWZpbmVkKFdFQlJUQ19N
QUMpCitjb25zdCBjaGFyIGtTY3JlZW5zaGFyZVNpbXVsY2FzdEV4cGVyaW1lbnRbXSA9CisgICAg
IldlYlJUQy1TaW11bGNhc3RTY3JlZW5zaGFyZS9FbmFibGVkLyI7CisKIFRFU1QoRnVsbFN0YWNr
VGVzdCwgU2NyZWVuc2hhcmVTbGlkZXNWUDhfM1RMX1NpbXVsY2FzdCkgeworICB0ZXN0OjpTY29w
ZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbCgKKyAgICAgIEFwcGVuZEZpZWxkVHJpYWxzKGtTY3Jl
ZW5zaGFyZVNpbXVsY2FzdEV4cGVyaW1lbnQpKTsKICAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlk
ZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKLSAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRf
dHJpYWwoa1NjcmVlbnNoYXJlU2ltdWxjYXN0RXhwZXJpbWVudCk7CiAgIFBhcmFtc1dpdGhMb2dn
aW5nIHNjcmVlbnNoYXJlOwogICBzY3JlZW5zaGFyZS5jYWxsLnNlbmRfc2lkZV9id2UgPSB0cnVl
OwogICBzY3JlZW5zaGFyZS5zY3JlZW5zaGFyZVswXSA9IHt0cnVlLCBmYWxzZSwgMTB9OwpAQCAt
NjcwLDYgKzcyNiw3IEBAIFRFU1QoRnVsbFN0YWNrVGVzdCwgU2NyZWVuc2hhcmVTbGlkZXNWUDhf
M1RMX1NpbXVsY2FzdCkgewogICAgICAgZmFsc2V9OwogICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6
ZXIoc2NyZWVuc2hhcmUpOwogfQorI2VuZGlmICAvLyAhZGVmaW5lZChXRUJSVENfTUFDKQogCiBU
RVNUKEZ1bGxTdGFja1Rlc3QsIFNjcmVlbnNoYXJlU2xpZGVzVlA4XzJUTF9TY3JvbGwpIHsKICAg
YXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKQEAgLTc3MSw3
ICs4MjgsNyBAQCBjb25zdCBQYXJhbXNXaXRoTG9nZ2luZzo6VmlkZW8ga1NpbXVsY2FzdFZwOFZp
ZGVvTG93ID0gewogICAgIDE1MDAwMCwgMjAwMDAwLCBmYWxzZSwgIlZQOCIsIDMsCiAgICAgMiwg
ICAgICA0MDAwMDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsICJDb25mZXJlbmNlTW90aW9uXzEyODBf
NzIwXzUwIn07CiAKLSNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjaWYgZGVmaW5lZChS
VENfRU5BQkxFX1ZQOSkKIFRFU1QoRnVsbFN0YWNrVGVzdCwgU2NyZWVuc2hhcmVTbGlkZXNWUDlf
MlNMKSB7CiAgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7
CiAgIFBhcmFtc1dpdGhMb2dnaW5nIHNjcmVlbnNoYXJlOwpAQCAtODkxLDkgKzk0OCwyOCBAQCBU
RVNUKEZ1bGxTdGFja1Rlc3QsIFZQOUtTVkNfM1NMX01lZGl1bV9OZXR3b3JrX1Jlc3RyaWN0ZWQp
IHsKICAgc2ltdWxjYXN0LmNvbmZpZy0+cXVldWVfZGVsYXlfbXMgPSAxMDA7CiAgIGZpeHR1cmUt
PlJ1bldpdGhBbmFseXplcihzaW11bGNhc3QpOwogfQorCisvLyBUT0RPKHdlYnJ0Yzo5NzIyKTog
UmVtb3ZlIHdoZW4gZXhwZXJpbWVudCBpcyBjbGVhbmVkIHVwLgorVEVTVChGdWxsU3RhY2tUZXN0
LCBWUDlLU1ZDXzNTTF9NZWRpdW1fTmV0d29ya19SZXN0cmljdGVkX1RydXN0ZWRfUmF0ZSkgewor
ICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX3RyaWFscygKKyAgICAg
IEFwcGVuZEZpZWxkVHJpYWxzKCJXZWJSVEMtVnA5SXNzdWVLZXlGcmFtZU9uTGF5ZXJEZWFjdGl2
YXRpb24vRW5hYmxlZC8iCisgICAgICAgICAgICAgICAgICAgICAgICAiV2ViUlRDLUxpYnZweFZw
OVRydXN0ZWRSYXRlQ29udHJvbGxlci9FbmFibGVkLyIpKTsKKyAgYXV0byBmaXh0dXJlID0gQ3Jl
YXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKKyAgUGFyYW1zV2l0aExvZ2dpbmcgc2ltdWxj
YXN0OworICBzaW11bGNhc3QuY2FsbC5zZW5kX3NpZGVfYndlID0gdHJ1ZTsKKyAgc2ltdWxjYXN0
LnZpZGVvWzBdID0ga1N2Y1ZwOVZpZGVvOworICBzaW11bGNhc3QuYW5hbHl6ZXIgPSB7InZwOWtz
dmNfM3NsX21lZGl1bV9uZXR3b3JrX3Jlc3RyaWN0ZWRfdHJ1c3RlZF9yYXRlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMCwgMC4wLCBrRnVsbFN0YWNrVGVzdER1cmF0aW9uU2Vjc307Cisg
IHNpbXVsY2FzdC5zc1swXSA9IHsKKyAgICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPigpLCAg
MCwgICAgMywgLTEsIEludGVyTGF5ZXJQcmVkTW9kZTo6a09uS2V5UGljLAorICAgICAgc3RkOjp2
ZWN0b3I8U3BhdGlhbExheWVyPigpLCBmYWxzZX07CisgIHNpbXVsY2FzdC5jb25maWctPmxpbmtf
Y2FwYWNpdHlfa2JwcyA9IDEwMDA7CisgIHNpbXVsY2FzdC5jb25maWctPnF1ZXVlX2RlbGF5X21z
ID0gMTAwOworICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6ZXIoc2ltdWxjYXN0KTsKK30KICNlbmRp
ZiAgLy8gIWRlZmluZWQoV0VCUlRDX01BQykKIAotI2VuZGlmICAvLyAhZGVmaW5lZChSVENfRElT
QUJMRV9WUDkpCisjZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKIC8vIEFuZHJv
aWQgYm90cyBjYW4ndCBoYW5kbGUgRnVsbEhELCBzbyBkaXNhYmxlIHRoZSB0ZXN0LgogLy8gVE9E
TyhidWdzLndlYnJ0Yy5vcmcvOTIyMCk6IEludmVzdGlnYXRlIHNvdXJjZSBvZiBmbGFraW5lc3Mg
b24gTWFjLgpAQCAtMTEwNCw3ICsxMTgwLDggQEAgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRnVs
bFN0YWNrVGVzdCwKIGNsYXNzIER1YWxTdHJlYW1zVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08aW50PiB7fTsKIAogLy8gRGlzYWJsZSBkdWFsIHZpZGVvIHRlc3Qgb24gbW9i
aWxlIGRldmljZSBiZWN1YXNlIGl0J3MgdG9vIGhlYXZ5LgotI2lmICFkZWZpbmVkKFdFQlJUQ19B
TkRST0lEKSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQorLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcv
OTg0MCk6IEludmVzdGlnYXRlIHdoeSBpcyB0aGlzIHRlc3QgZmxha3kgb24gTUFDLgorI2lmICFk
ZWZpbmVkKFdFQlJUQ19BTkRST0lEKSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKSAmJiAhZGVmaW5l
ZChXRUJSVENfTUFDKQogVEVTVF9QKER1YWxTdHJlYW1zVGVzdCwKICAgICAgICBNb2RlcmF0ZWx5
UmVzdHJpY3RlZF9TbGlkZXNWcDhfM1RMX1NpbXVsY2FzdF9WaWRlb19TaW11bGNhc3RfSGlnaCkg
ewogICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbCgKQEAgLTExNjgsNyArMTI0
NSw4IEBAIFRFU1RfUChEdWFsU3RyZWFtc1Rlc3QsCiAgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZp
ZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CiAgIGZpeHR1cmUtPlJ1bldpdGhBbmFseXplcihkdWFs
X3N0cmVhbXMpOwogfQotI2VuZGlmICAvLyAhZGVmaW5lZChXRUJSVENfQU5EUk9JRCkgJiYgIWRl
ZmluZWQoV0VCUlRDX0lPUykKKyNlbmRpZiAgLy8gIWRlZmluZWQoV0VCUlRDX0FORFJPSUQpICYm
ICFkZWZpbmVkKFdFQlJUQ19JT1MpICYmCisgICAgICAgIC8vICFkZWZpbmVkKFdFQlJUQ19NQUMp
CiAKIFRFU1RfUChEdWFsU3RyZWFtc1Rlc3QsIENvbmZlcmVuY2VfUmVzdHJpY3RlZCkgewogICB0
ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL292ZXJ1c2VfZnJhbWVfZGV0
ZWN0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9vdmVydXNlX2ZyYW1lX2RldGVjdG9yX3VuaXR0ZXN0LmNjCmluZGV4IGFjMDE5
NzU0YzU0ZTI2MWRhMTdmYWI4OWM5NjQwMWQ2N2VjNjFjYjguLjkxMDUwZDUwNTZmMDFiNGNmZTc5
OGQyODgzNzQxY2Y0M2IzYzhjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL292ZXJ1c2VfZnJhbWVfZGV0ZWN0b3JfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
b3ZlcnVzZV9mcmFtZV9kZXRlY3Rvcl91bml0dGVzdC5jYwpAQCAtMTAsOCArMTAsOCBAQAogCiAj
aW5jbHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIK
ICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKLSNpbmNsdWRlICJjb21tb25fdmlk
ZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L3V0aWxpdHkvcXVhbGl0eV9zY2FsZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2Zha2VjbG9jay5oIgpAQCAtNDA2LDcgKzQwNiw3IEBAIFRFU1Rf
RihPdmVydXNlRnJhbWVEZXRlY3RvclRlc3QsIFVwZGF0ZXNFeGlzdGluZ1NhbXBsZXMpIHsKIFRF
U1RfRihPdmVydXNlRnJhbWVEZXRlY3RvclRlc3QsIFJ1bk9uVHFOb3JtYWxVc2FnZSkgewogICBy
dGM6OlRhc2tRdWV1ZSBxdWV1ZSgiT3ZlcnVzZUZyYW1lRGV0ZWN0b3JUZXN0UXVldWUiKTsKIAot
ICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAg
IHF1ZXVlLlBvc3RUYXNrKFt0aGlzLCAmZXZlbnRdIHsKICAgICBvdmVydXNlX2RldGVjdG9yXy0+
U3RhcnRDaGVja0Zvck92ZXJ1c2Uob3B0aW9uc18sIG9ic2VydmVyXyk7CiAgICAgZXZlbnQuU2V0
KCk7CkBAIC04NzAsNyArODcwLDcgQEAgVEVTVF9GKE92ZXJ1c2VGcmFtZURldGVjdG9yVGVzdDIs
IFVwZGF0ZXNFeGlzdGluZ1NhbXBsZXMpIHsKIFRFU1RfRihPdmVydXNlRnJhbWVEZXRlY3RvclRl
c3QyLCBSdW5PblRxTm9ybWFsVXNhZ2UpIHsKICAgcnRjOjpUYXNrUXVldWUgcXVldWUoIk92ZXJ1
c2VGcmFtZURldGVjdG9yVGVzdFF1ZXVlIik7CiAKLSAgcnRjOjpFdmVudCBldmVudChmYWxzZSwg
ZmFsc2UpOworICBydGM6OkV2ZW50IGV2ZW50OwogICBxdWV1ZS5Qb3N0VGFzayhbdGhpcywgJmV2
ZW50XSB7CiAgICAgb3ZlcnVzZV9kZXRlY3Rvcl8tPlN0YXJ0Q2hlY2tGb3JPdmVydXNlKG9wdGlv
bnNfLCBvYnNlcnZlcl8pOwogICAgIGV2ZW50LlNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcGljdHVyZV9pZF90ZXN0cy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3BpY3R1
cmVfaWRfdGVzdHMuY2MKaW5kZXggMTU1ZGExM2FlNDlkYzQ5NjdhYmE5YWIyNzY5MGYzODNjNWZm
MzdmNC4uNmNlMGM5OWZmZTdiMzI3MDFhYTI1Mjg5YzEwZWRkZTU3ZDIyOTEyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcGljdHVy
ZV9pZF90ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9waWN0dXJlX2lkX3Rlc3RzLmNjCkBAIC05LDYgKzksNyBAQAogICovCiAKICNp
bmNsdWRlICJhcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgorI2luY2x1ZGUgImFwaS90ZXN0
L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwv
ZmFrZV9uZXR3b3JrX3BpcGUuaCIKICNpbmNsdWRlICJjYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgi
CiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZW5jb2RlcmZhY3RvcnkuaCIKQEAgLTE5
LDcgKzIwLDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25z
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2VxdWVuY2VfbnVtYmVyX3V0aWwuaCIK
ICNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsK
QEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFBpY3R1cmVJZFRlc3Q6OlNldHVwRW5jb2RlcihWaWRl
b0VuY29kZXJGYWN0b3J5KiBlbmNvZGVyX2ZhY3RvcnksCiAgICAgICAgIHRlc3Q6OlBhY2tldFRy
YW5zcG9ydDo6a1NlbmRlciwgcGF5bG9hZF90eXBlX21hcF8sCiAgICAgICAgIGFic2w6Om1ha2Vf
dW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCiAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVD
bG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWcoKSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSkpKTsKIAogICAgIENyZWF0ZVNlbmRDb25m
aWcoa051bVNpbXVsY2FzdFN0cmVhbXMsIDAsIDAsIHNlbmRfdHJhbnNwb3J0Xy5nZXQoKSk7CiAg
ICAgR2V0VmlkZW9TZW5kQ29uZmlnKCktPmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5
ID0gZW5jb2Rlcl9mYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcXVhbGl0eV9zY2FsaW5nX3Rlc3RzLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcXVhbGl0eV9zY2FsaW5n
X3Rlc3RzLmNjCmluZGV4IDliMWQwZmFlZmYyMTI4YzdlYWNjYzI0ZTcyYjE3Njg2NzAyNzc5MDQu
LjAxMzI4ZjgxOTI1NzI1ZjIwNjJiMGRmYzQ2MmM3NDExYmM5OWNjZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3F1YWxpdHlfc2Nh
bGluZ190ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9xdWFsaXR5X3NjYWxpbmdfdGVzdHMuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAog
I2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGVu
Y29kZXJmYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gy
NjQvaW5jbHVkZS9oMjY0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3ZwOC9pbmNsdWRlL3ZwOC5oIgpAQCAtMTcsNyArMTgsNiBAQAogI2luY2x1ZGUgInRlc3QvY2Fs
bF90ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3Qv
ZnJhbWVfZ2VuZXJhdG9yX2NhcHR1cmVyLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRl
b19lbmNvZGVyX2ZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewpA
QCAtMTAzLDggKzEwMyw5IEBAIHZvaWQgUXVhbGl0eVNjYWxpbmdUZXN0OjpSdW5UZXN0KFZpZGVv
RW5jb2RlckZhY3RvcnkqIGVuY29kZXJfZmFjdG9yeSwKICAgICAgIGlmICh3YW50cy5tYXhfcGl4
ZWxfY291bnQgPCBrV2lkdGggKiBrSGVpZ2h0KQogICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0
ZV8uU2V0KCk7CiAgICAgfQotICAgIHZvaWQgTW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpD
b25maWcqIGNvbmZpZykgb3ZlcnJpZGUgewotICAgICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5z
dGFydF9iaXRyYXRlX2JwcyA9IHN0YXJ0X2Jwc187CisgICAgdm9pZCBNb2RpZnlTZW5kZXJCaXRy
YXRlQ29uZmlnKAorICAgICAgICBCaXRyYXRlQ29uc3RyYWludHMqIGJpdHJhdGVfY29uZmlnKSBv
dmVycmlkZSB7CisgICAgICBiaXRyYXRlX2NvbmZpZy0+c3RhcnRfYml0cmF0ZV9icHMgPSBzdGFy
dF9icHNfOwogICAgIH0KIAogICAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdzKApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVjZWl2
ZV9zdGF0aXN0aWNzX3Byb3h5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vcmVjZWl2ZV9zdGF0aXN0aWNzX3Byb3h5LmNjCmluZGV4IGNjZDJjMjBm
NjVmOGE3MjllZWQxZGQ1NmQxNzdjY2VhYWNlOGVkN2MuLmUyMGI3ZDI5NGZkNjIyNDk0MmM3Nzk4
YWU2NjQwM2I1ZDgzNTdkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94eS5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0
YXRpc3RpY3NfcHJveHkuY2MKQEAgLTc1OSw2ICs3NTksOSBAQCB2b2lkIFJlY2VpdmVTdGF0aXN0
aWNzUHJveHk6Ok9uUmVuZGVyZWRGcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSkgewogICBS
VENfRENIRUNLX0dUKGhlaWdodCwgMCk7CiAgIGludDY0X3Qgbm93X21zID0gY2xvY2tfLT5UaW1l
SW5NaWxsaXNlY29uZHMoKTsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF8pOworCisgIHZp
ZGVvX3F1YWxpdHlfb2JzZXJ2ZXJfLT5PblJlbmRlcmVkRnJhbWUobm93X21zKTsKKwogICBDb250
ZW50U3BlY2lmaWNTdGF0cyogY29udGVudF9zcGVjaWZpY19zdGF0cyA9CiAgICAgICAmY29udGVu
dF9zcGVjaWZpY19zdGF0c19bbGFzdF9jb250ZW50X3R5cGVfXTsKICAgcmVuZGVyc19mcHNfZXN0
aW1hdG9yXy5VcGRhdGUoMSwgbm93X21zKTsKQEAgLTgxMyw4ICs4MTYsMTUgQEAgdm9pZCBSZWNl
aXZlU3RhdGlzdGljc1Byb3h5OjpPbkNvbXBsZXRlRnJhbWUoYm9vbCBpc19rZXlmcmFtZSwKICAg
ICArK3N0YXRzXy5mcmFtZV9jb3VudHMuZGVsdGFfZnJhbWVzOwogICB9CiAKKyAgLy8gQ29udGVu
dCB0eXBlIGV4dGVuc2lvbiBpcyBzZXQgb25seSBmb3Iga2V5ZnJhbWVzIGFuZCBzaG91bGQgYmUg
cHJvcGFnYXRlZAorICAvLyBmb3IgYWxsIHRoZSBmb2xsb3dpbmcgZGVsdGEgZnJhbWVzLiBIZXJl
IHdlIG1heSByZWNlaXZlIGZyYW1lcyBvdXQgb2Ygb3JkZXIKKyAgLy8gYW5kIG1pc2NhdGVnb3Jp
c2Ugc29tZSBkZWx0YSBmcmFtZXMgbmVhciB0aGUgbGF5ZXIgc3dpdGNoLgorICAvLyBUaGlzIG1h
eSBzbGlnaHRseSBvZmZzZXQgY2FsY3VsYXRlZCBiaXRyYXRlIGFuZCBrZXlmcmFtZXMgcGVybWls
bGUgbWV0cmljcy4KKyAgVmlkZW9Db250ZW50VHlwZSBwcm9wYWdhdGVkX2NvbnRlbnRfdHlwZSA9
CisgICAgICBpc19rZXlmcmFtZSA/IGNvbnRlbnRfdHlwZSA6IGxhc3RfY29udGVudF90eXBlXzsK
KwogICBDb250ZW50U3BlY2lmaWNTdGF0cyogY29udGVudF9zcGVjaWZpY19zdGF0cyA9Ci0gICAg
ICAmY29udGVudF9zcGVjaWZpY19zdGF0c19bY29udGVudF90eXBlXTsKKyAgICAgICZjb250ZW50
X3NwZWNpZmljX3N0YXRzX1twcm9wYWdhdGVkX2NvbnRlbnRfdHlwZV07CiAKICAgY29udGVudF9z
cGVjaWZpY19zdGF0cy0+dG90YWxfbWVkaWFfYnl0ZXMgKz0gc2l6ZV9ieXRlczsKICAgaWYgKGlz
X2tleWZyYW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0YXRpc3RpY3NfcHJveHkuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGljc19w
cm94eS5oCmluZGV4IDRkYWVmZTA0N2Q2NTg5OTRlODkzYmQ4MzUzMzIwYzNjMjgxZmM2ZGUuLjEw
MGU3NTExNmM0NzM2MDAyMGMyOTQwMzZkZjRlMThiNTk5MTI4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlz
dGljc19wcm94eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94eS5oCkBAIC0xOCw4ICsxOCw2IEBACiAK
ICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiY2FsbC92aWRlb19y
ZWNlaXZlX3N0cmVhbS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1
aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvZnJhbWVfY2FsbGJh
Y2suaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGlu
Z19kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbnVtZXJpY3MvaGlzdG9ncmFtX3BlcmNlbnRpbGVfY291bnRlci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vcmVjZWl2ZV9zdGF0aXN0aWNzX3Byb3h5X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVjZWl2ZV9zdGF0aXN0aWNzX3Byb3h5
X3VuaXR0ZXN0LmNjCmluZGV4IGI4YTk2YjJmNWU4MjQyNDgzNTEyODU2MDZlMDkzYWNmNjVlMDE4
YzIuLmI3NGU0NjAxYWFiMGE5MTZlODQ5NmFjM2VhMDI0YmUxZWExMTA0MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVf
c3RhdGlzdGljc19wcm94eV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0YXRpc3RpY3NfcHJveHlfdW5pdHRl
c3QuY2MKQEAgLTEwNTcsMTUgKzEwNTcsMTkgQEAgVEVTVF9QKFJlY2VpdmVTdGF0aXN0aWNzUHJv
eHlUZXN0LCBGcmVlemVzQXJlUmVwb3J0ZWQpIHsKICAgY29uc3QgaW50IGtGcmVlemVEZWxheU1z
ID0gMjAwOwogICBjb25zdCBpbnQga0NhbGxEdXJhdGlvbk1zID0KICAgICAgIGtNaW5SZXF1aXJl
ZFNhbXBsZXMgKiBrSW50ZXJGcmFtZURlbGF5TXMgKyBrRnJlZXplRGVsYXlNczsKKyAgd2VicnRj
OjpWaWRlb0ZyYW1lIGZyYW1lKHdlYnJ0Yzo6STQyMEJ1ZmZlcjo6Q3JlYXRlKDEsIDEpLCAwLCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wKTsK
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrTWluUmVxdWlyZWRTYW1wbGVzOyArK2kpIHsKICAgICBz
dGF0aXN0aWNzX3Byb3h5Xy0+T25EZWNvZGVkRnJhbWUoYWJzbDo6bnVsbG9wdCwga1dpZHRoLCBr
SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5
cGUpOworICAgIHN0YXRpc3RpY3NfcHJveHlfLT5PblJlbmRlcmVkRnJhbWUoZnJhbWUpOwogICAg
IGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtJbnRlckZyYW1lRGVsYXlNcyk7
CiAgIH0KICAgLy8gQWRkIGV4dHJhIGZyZWV6ZS4KICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVN
aWxsaXNlY29uZHMoa0ZyZWV6ZURlbGF5TXMpOwogICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25EZWNv
ZGVkRnJhbWUoYWJzbDo6bnVsbG9wdCwga1dpZHRoLCBrSGVpZ2h0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlKTsKKyAgc3RhdGlzdGljc19wcm94eV8t
Pk9uUmVuZGVyZWRGcmFtZShmcmFtZSk7CiAKICAgc3RhdGlzdGljc19wcm94eV8ucmVzZXQoKTsK
ICAgY29uc3QgaW50IGtFeHBlY3RlZFRpbWVCZXR3ZWVuRnJlZXplcyA9CkBAIC0xMDk1LDkgKzEw
OTksMTIgQEAgVEVTVF9QKFJlY2VpdmVTdGF0aXN0aWNzUHJveHlUZXN0LCBQYXVzZXNBcmVJZ25v
cmVkKSB7CiAgIGNvbnN0IFZpZGVvQ29udGVudFR5cGUgY29udGVudF90eXBlID0gR2V0UGFyYW0o
KTsKICAgY29uc3QgaW50IGtJbnRlckZyYW1lRGVsYXlNcyA9IDMzOwogICBjb25zdCBpbnQga1Bh
dXNlRHVyYXRpb25NcyA9IDEwMDAwOworICB3ZWJydGM6OlZpZGVvRnJhbWUgZnJhbWUod2VicnRj
OjpJNDIwQnVmZmVyOjpDcmVhdGUoMSwgMSksIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzApOwogICBmb3IgKGludCBpID0gMDsgaSA8PSBr
TWluUmVxdWlyZWRTYW1wbGVzOyArK2kpIHsKICAgICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25EZWNv
ZGVkRnJhbWUoYWJzbDo6bnVsbG9wdCwga1dpZHRoLCBrSGVpZ2h0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGUpOworICAgIHN0YXRpc3RpY3NfcHJv
eHlfLT5PblJlbmRlcmVkRnJhbWUoZnJhbWUpOwogICAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1l
TWlsbGlzZWNvbmRzKGtJbnRlckZyYW1lRGVsYXlNcyk7CiAgIH0KICAgLy8gQWRkIGEgcGF1c2Uu
CkBAIC0xMTA4LDYgKzExMTUsNyBAQCBURVNUX1AoUmVjZWl2ZVN0YXRpc3RpY3NQcm94eVRlc3Qs
IFBhdXNlc0FyZUlnbm9yZWQpIHsKICAgZm9yIChpbnQgaSA9IDA7IGkgPD0ga01pblJlcXVpcmVk
U2FtcGxlcyAqIDM7ICsraSkgewogICAgIHN0YXRpc3RpY3NfcHJveHlfLT5PbkRlY29kZWRGcmFt
ZShhYnNsOjpudWxsb3B0LCBrV2lkdGgsIGtIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSk7CisgICAgc3RhdGlzdGljc19wcm94eV8tPk9u
UmVuZGVyZWRGcmFtZShmcmFtZSk7CiAgICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNl
Y29uZHMoa0ludGVyRnJhbWVEZWxheU1zKTsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZXBsYXkuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZXBsYXkuY2MKaW5kZXgg
NWMxN2U1YjNiN2Q5NDdiZDg0NmU5ZjY5NjdiZjFkMWEyM2EwYjQ1My4uMmMxYzhhNTVhZDRmNWY4
NTI3Y2IxNjJlODU1NWQxOWIyOGFjYjY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVwbGF5LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlcGxheS5jYwpAQCAtMTUsNiAr
MTUsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzc3RyZWFtPgogCisjaW5jbHVk
ZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAiY2FsbC9j
YWxsLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5
dXYuaCIKQEAgLTMyLDcgKzMzLDYgQEAKICNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgogI2lu
Y2x1ZGUgInRlc3QvZW5jb2Rlcl9zZXR0aW5ncy5oIgogI2luY2x1ZGUgInRlc3QvZmFrZV9kZWNv
ZGVyLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9udWxsX3RyYW5zcG9ydC5o
IgogI2luY2x1ZGUgInRlc3QvcnRwX2ZpbGVfcmVhZGVyLmgiCkBAIC03MiwzOSArNzIsMzkgQEAg
bmFtZXNwYWNlIGZsYWdzIHsKIC8vIFRPRE8ocGJvcyk6IE11bHRpcGxlIHJlY2VpdmVycy4KIAog
Ly8gRmxhZyBmb3IgcGF5bG9hZCB0eXBlLgotREVGSU5FX2ludChtZWRpYV9wYXlsb2FkX3R5cGUs
Ci0gICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprUGF5bG9hZFR5cGVWUDgsCi0gICAgICAgICAg
ICJNZWRpYSBwYXlsb2FkIHR5cGUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KG1lZGlhX3BheWxvYWRf
dHlwZSwKKyAgICAgICAgICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprUGF5bG9hZFR5cGVWUDgs
CisgICAgICAgICAgICAgICAgICAiTWVkaWEgcGF5bG9hZCB0eXBlIik7CiBzdGF0aWMgaW50IE1l
ZGlhUGF5bG9hZFR5cGUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbWVkaWFf
cGF5bG9hZF90eXBlKTsKIH0KIAogLy8gRmxhZyBmb3IgUkVEIHBheWxvYWQgdHlwZS4KLURFRklO
RV9pbnQocmVkX3BheWxvYWRfdHlwZSwKLSAgICAgICAgICAgdGVzdDo6Q2FsbFRlc3Q6OmtSZWRQ
YXlsb2FkVHlwZSwKLSAgICAgICAgICAgIlJFRCBwYXlsb2FkIHR5cGUiKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KHJlZF9wYXlsb2FkX3R5cGUsCisgICAgICAgICAgICAgICAgICB0ZXN0OjpDYWxsVGVz
dDo6a1JlZFBheWxvYWRUeXBlLAorICAgICAgICAgICAgICAgICAgIlJFRCBwYXlsb2FkIHR5cGUi
KTsKIHN0YXRpYyBpbnQgUmVkUGF5bG9hZFR5cGUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KEZMQUdfcmVkX3BheWxvYWRfdHlwZSk7CiB9CiAKIC8vIEZsYWcgZm9yIFVMUEZFQyBwYXls
b2FkIHR5cGUuCi1ERUZJTkVfaW50KHVscGZlY19wYXlsb2FkX3R5cGUsCi0gICAgICAgICAgIHRl
c3Q6OkNhbGxUZXN0OjprVWxwZmVjUGF5bG9hZFR5cGUsCi0gICAgICAgICAgICJVTFBGRUMgcGF5
bG9hZCB0eXBlIik7CitXRUJSVENfREVGSU5FX2ludCh1bHBmZWNfcGF5bG9hZF90eXBlLAorICAg
ICAgICAgICAgICAgICAgdGVzdDo6Q2FsbFRlc3Q6OmtVbHBmZWNQYXlsb2FkVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICJVTFBGRUMgcGF5bG9hZCB0eXBlIik7CiBzdGF0aWMgaW50IFVscGZlY1Bh
eWxvYWRUeXBlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3VscGZlY19wYXls
b2FkX3R5cGUpOwogfQogCi1ERUZJTkVfaW50KG1lZGlhX3BheWxvYWRfdHlwZV9ydHgsCi0gICAg
ICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprU2VuZFJ0eFBheWxvYWRUeXBlLAotICAgICAgICAgICAi
TWVkaWEgb3ZlciBSVFggcGF5bG9hZCB0eXBlIik7CitXRUJSVENfREVGSU5FX2ludChtZWRpYV9w
YXlsb2FkX3R5cGVfcnR4LAorICAgICAgICAgICAgICAgICAgdGVzdDo6Q2FsbFRlc3Q6OmtTZW5k
UnR4UGF5bG9hZFR5cGUsCisgICAgICAgICAgICAgICAgICAiTWVkaWEgb3ZlciBSVFggcGF5bG9h
ZCB0eXBlIik7CiBzdGF0aWMgaW50IE1lZGlhUGF5bG9hZFR5cGVSdHgoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KEZMQUdfbWVkaWFfcGF5bG9hZF90eXBlX3J0eCk7CiB9CiAKLURFRklO
RV9pbnQocmVkX3BheWxvYWRfdHlwZV9ydHgsCi0gICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0Ojpr
UnR4UmVkUGF5bG9hZFR5cGUsCi0gICAgICAgICAgICJSRUQgb3ZlciBSVFggcGF5bG9hZCB0eXBl
Iik7CitXRUJSVENfREVGSU5FX2ludChyZWRfcGF5bG9hZF90eXBlX3J0eCwKKyAgICAgICAgICAg
ICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprUnR4UmVkUGF5bG9hZFR5cGUsCisgICAgICAgICAgICAg
ICAgICAiUkVEIG92ZXIgUlRYIHBheWxvYWQgdHlwZSIpOwogc3RhdGljIGludCBSZWRQYXlsb2Fk
VHlwZVJ0eCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19yZWRfcGF5bG9hZF90
eXBlX3J0eCk7CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgY29uc3Qgc3RkOjpzdHJpbmcmIERlZmF1
bHRTc3JjKCkgewogICAgICAgc3RkOjp0b19zdHJpbmcodGVzdDo6Q2FsbFRlc3Q6OmtWaWRlb1Nl
bmRTc3Jjc1swXSk7CiAgIHJldHVybiBzc3JjOwogfQotREVGSU5FX3N0cmluZyhzc3JjLCBEZWZh
dWx0U3NyYygpLmNfc3RyKCksICJJbmNvbWluZyBTU1JDIik7CitXRUJSVENfREVGSU5FX3N0cmlu
Zyhzc3JjLCBEZWZhdWx0U3NyYygpLmNfc3RyKCksICJJbmNvbWluZyBTU1JDIik7CiBzdGF0aWMg
dWludDMyX3QgU3NyYygpIHsKICAgcmV0dXJuIHJ0Yzo6U3RyaW5nVG9OdW1iZXI8dWludDMyX3Q+
KEZMQUdfc3NyYykudmFsdWUoKTsKIH0KQEAgLTEyNSw1NCArMTI1LDU2IEBAIGNvbnN0IHN0ZDo6
c3RyaW5nJiBEZWZhdWx0U3NyY1J0eCgpIHsKICAgICAgIHN0ZDo6dG9fc3RyaW5nKHRlc3Q6OkNh
bGxUZXN0OjprU2VuZFJ0eFNzcmNzWzBdKTsKICAgcmV0dXJuIHNzcmNfcnR4OwogfQotREVGSU5F
X3N0cmluZyhzc3JjX3J0eCwgRGVmYXVsdFNzcmNSdHgoKS5jX3N0cigpLCAiSW5jb21pbmcgUlRY
IFNTUkMiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHNzcmNfcnR4LCBEZWZhdWx0U3NyY1J0eCgp
LmNfc3RyKCksICJJbmNvbWluZyBSVFggU1NSQyIpOwogc3RhdGljIHVpbnQzMl90IFNzcmNSdHgo
KSB7CiAgIHJldHVybiBydGM6OlN0cmluZ1RvTnVtYmVyPHVpbnQzMl90PihGTEFHX3NzcmNfcnR4
KS52YWx1ZSgpOwogfQogCiAvLyBGbGFnIGZvciBhYnMtc2VuZC10aW1lIGlkLgotREVGSU5FX2lu
dChhYnNfc2VuZF90aW1lX2lkLCAtMSwgIlJUUCBleHRlbnNpb24gSUQgZm9yIGFicy1zZW5kLXRp
bWUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGFic19zZW5kX3RpbWVfaWQsIC0xLCAiUlRQIGV4dGVu
c2lvbiBJRCBmb3IgYWJzLXNlbmQtdGltZSIpOwogc3RhdGljIGludCBBYnNTZW5kVGltZUlkKCkg
ewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2Fic19zZW5kX3RpbWVfaWQpOwogfQog
CiAvLyBGbGFnIGZvciB0cmFuc21pc3Npb24tb2Zmc2V0IGlkLgotREVGSU5FX2ludCh0cmFuc21p
c3Npb25fb2Zmc2V0X2lkLAotICAgICAgICAgICAtMSwKLSAgICAgICAgICAgIlJUUCBleHRlbnNp
b24gSUQgZm9yIHRyYW5zbWlzc2lvbi1vZmZzZXQiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHRyYW5z
bWlzc2lvbl9vZmZzZXRfaWQsCisgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAg
ICAgICJSVFAgZXh0ZW5zaW9uIElEIGZvciB0cmFuc21pc3Npb24tb2Zmc2V0Iik7CiBzdGF0aWMg
aW50IFRyYW5zbWlzc2lvbk9mZnNldElkKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihG
TEFHX3RyYW5zbWlzc2lvbl9vZmZzZXRfaWQpOwogfQogCiAvLyBGbGFnIGZvciBydHBkdW1wIGlu
cHV0IGZpbGUuCi1ERUZJTkVfc3RyaW5nKGlucHV0X2ZpbGUsICIiLCAiaW5wdXQgZmlsZSIpOwor
V0VCUlRDX0RFRklORV9zdHJpbmcoaW5wdXRfZmlsZSwgIiIsICJpbnB1dCBmaWxlIik7CiBzdGF0
aWMgc3RkOjpzdHJpbmcgSW5wdXRGaWxlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpz
dHJpbmc+KEZMQUdfaW5wdXRfZmlsZSk7CiB9CiAKLURFRklORV9zdHJpbmcoY29uZmlnX2ZpbGUs
ICIiLCAiY29uZmlnIGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGNvbmZpZ19maWxlLCAi
IiwgImNvbmZpZyBmaWxlIik7CiBzdGF0aWMgc3RkOjpzdHJpbmcgQ29uZmlnRmlsZSgpIHsKICAg
cmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2NvbmZpZ19maWxlKTsKIH0KIAog
Ly8gRmxhZyBmb3IgcmF3IG91dHB1dCBmaWxlcy4KLURFRklORV9zdHJpbmcob3V0X2Jhc2UsICIi
LCAiQmFzZW5hbWUgKGV4Y2x1ZGluZyAuanBnKSBmb3IgcmF3IG91dHB1dCIpOworV0VCUlRDX0RF
RklORV9zdHJpbmcob3V0X2Jhc2UsICIiLCAiQmFzZW5hbWUgKGV4Y2x1ZGluZyAuanBnKSBmb3Ig
cmF3IG91dHB1dCIpOwogc3RhdGljIHN0ZDo6c3RyaW5nIE91dEJhc2UoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19vdXRfYmFzZSk7CiB9CiAKLURFRklORV9zdHJp
bmcoZGVjb2Rlcl9iaXRzdHJlYW1fZmlsZW5hbWUsICIiLCAiRGVjb2RlciBiaXRzdHJlYW0gb3V0
cHV0IGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGRlY29kZXJfYml0c3RyZWFtX2ZpbGVu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiRGVj
b2RlciBiaXRzdHJlYW0gb3V0cHV0IGZpbGUiKTsKIHN0YXRpYyBzdGQ6OnN0cmluZyBEZWNvZGVy
Qml0c3RyZWFtRmlsZW5hbWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4o
RkxBR19kZWNvZGVyX2JpdHN0cmVhbV9maWxlbmFtZSk7CiB9CiAKIC8vIEZsYWcgZm9yIHZpZGVv
IGNvZGVjLgotREVGSU5FX3N0cmluZyhjb2RlYywgIlZQOCIsICJWaWRlbyBjb2RlYyIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcoY29kZWMsICJWUDgiLCAiVmlkZW8gY29kZWMiKTsKIHN0YXRpYyBz
dGQ6OnN0cmluZyBDb2RlYygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihG
TEFHX2NvZGVjKTsKIH0KIAotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1l
c3NhZ2UuIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1l
c3NhZ2UuIik7CiB9ICAvLyBuYW1lc3BhY2UgZmxhZ3MKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90
IGtSZWNlaXZlckxvY2FsU3NyYyA9IDB4MTIzNDU2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVwb3J0X2Jsb2NrX3N0YXRzLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZXBvcnRf
YmxvY2tfc3RhdHMuaAppbmRleCAyNDFmZWM3NmE2OTkyMzg0Mjk1OWRjYWM4NjRlODYwYzBjNDcz
NzVhLi45MGJhZGY3MDg2MmZjMWFiNzBkNmE0YjEyOTY3NTQ5ODhjNDUxNTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZXBvcnRf
YmxvY2tfc3RhdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9yZXBvcnRfYmxvY2tfc3RhdHMuaApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1
ZGUgPG1hcD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIg
IC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9ydGNwX3N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1
ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3J0cF92aWRl
b19zdHJlYW1fcmVjZWl2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyLmNjCmluZGV4IDY0ZWM1NDRi
NzBhNmYxYjMyODg4NDBiYWM0MDA2NTA2Y2Y5MDNjNDAuLmZkZjAyZmYzMjlkNzQxZmFmMjg5MDg0
ZTM4YWQ4YWE3ZTczOGI0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVv
X3N0cmVhbV9yZWNlaXZlci5jYwpAQCAtMTYsNyArMTYsNiBAQAogCiAjaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChi
dWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3IuaCIKQEAgLTUwLDcgKzQ5LDcgQEAgbmFtZXNwYWNlIHsKIC8vIFRPRE8ocGhpbGlwZWwpOiBD
aGFuZ2Uga1BhY2tldEJ1ZmZlclN0YXJ0U2l6ZSBiYWNrIHRvIDMyIGluIE02MyBzZWU6CiAvLyAg
ICAgICAgICAgICAgICAgY3JidWcuY29tLzc1Mjg4NgogY29uc3RleHByIGludCBrUGFja2V0QnVm
ZmVyU3RhcnRTaXplID0gNTEyOwotY29uc3RleHByIGludCBrUGFja2V0QnVmZmVyTWF4U2l4ZSA9
IDIwNDg7Citjb25zdGV4cHIgaW50IGtQYWNrZXRCdWZmZXJNYXhTaXplID0gMjA0ODsKIH0gIC8v
IG5hbWVzcGFjZQogCiBzdGQ6OnVuaXF1ZV9wdHI8UnRwUnRjcD4gQ3JlYXRlUnRwUnRjcE1vZHVs
ZSgKQEAgLTk1LDcgKzk0LDggQEAgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6UnRwVmlkZW9TdHJl
YW1SZWNlaXZlcigKICAgICBQcm9jZXNzVGhyZWFkKiBwcm9jZXNzX3RocmVhZCwKICAgICBOYWNr
U2VuZGVyKiBuYWNrX3NlbmRlciwKICAgICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1l
X3JlcXVlc3Rfc2VuZGVyLAotICAgIHZpZGVvX2NvZGluZzo6T25Db21wbGV0ZUZyYW1lQ2FsbGJh
Y2sqIGNvbXBsZXRlX2ZyYW1lX2NhbGxiYWNrKQorICAgIHZpZGVvX2NvZGluZzo6T25Db21wbGV0
ZUZyYW1lQ2FsbGJhY2sqIGNvbXBsZXRlX2ZyYW1lX2NhbGxiYWNrLAorICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yKQogICAgIDog
Y2xvY2tfKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgY29uZmlnXygqY29uZmln
KSwKICAgICAgIHBhY2tldF9yb3V0ZXJfKHBhY2tldF9yb3V0ZXIpLApAQCAtMTEzLDExICsxMTMs
MTAgQEAgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6UnRwVmlkZW9TdHJlYW1SZWNlaXZlcigKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9yb3V0ZXIpKSwKICAgICAg
IGNvbXBsZXRlX2ZyYW1lX2NhbGxiYWNrXyhjb21wbGV0ZV9mcmFtZV9jYWxsYmFjayksCiAgICAg
ICBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcl8oa2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIpLAotICAg
ICAgaGFzX3JlY2VpdmVkX2ZyYW1lXyhmYWxzZSkgeworICAgICAgaGFzX3JlY2VpdmVkX2ZyYW1l
XyhmYWxzZSksCisgICAgICBmcmFtZV9kZWNyeXB0b3JfKGZyYW1lX2RlY3J5cHRvcikgewogICBj
b25zdGV4cHIgYm9vbCByZW1iX2NhbmRpZGF0ZSA9IHRydWU7CiAgIHBhY2tldF9yb3V0ZXJfLT5B
ZGRSZWNlaXZlUnRwTW9kdWxlKHJ0cF9ydGNwXy5nZXQoKSwgcmVtYl9jYW5kaWRhdGUpOwotICBy
dHBfcmVjZWl2ZV9zdGF0aXN0aWNzXy0+UmVnaXN0ZXJSdHBTdGF0aXN0aWNzQ2FsbGJhY2socmVj
ZWl2ZV9zdGF0c19wcm94eSk7Ci0gIHJ0cF9yZWNlaXZlX3N0YXRpc3RpY3NfLT5SZWdpc3RlclJ0
Y3BTdGF0aXN0aWNzQ2FsbGJhY2socmVjZWl2ZV9zdGF0c19wcm94eSk7CiAKICAgUlRDX0RDSEVD
Syhjb25maWdfLnJ0cC5ydGNwX21vZGUgIT0gUnRjcE1vZGU6OmtPZmYpCiAgICAgICA8PCAiQSBz
dHJlYW0gc2hvdWxkIG5vdCBiZSBjb25maWd1cmVkIHdpdGggUlRDUCBkaXNhYmxlZC4gVGhpcyB2
YWx1ZSBpcyAiCkBAIC0xNDcsMTQgKzE0NiwyOSBAQCBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyOjpS
dHBWaWRlb1N0cmVhbVJlY2VpdmVyKAogICBwcm9jZXNzX3RocmVhZF8tPlJlZ2lzdGVyTW9kdWxl
KHJ0cF9ydGNwXy5nZXQoKSwgUlRDX0ZST01fSEVSRSk7CiAKICAgaWYgKGNvbmZpZ18ucnRwLm5h
Y2sucnRwX2hpc3RvcnlfbXMgIT0gMCkgewotICAgIG5hY2tfbW9kdWxlXy5yZXNldCgKLSAgICAg
ICAgbmV3IE5hY2tNb2R1bGUoY2xvY2tfLCBuYWNrX3NlbmRlciwga2V5ZnJhbWVfcmVxdWVzdF9z
ZW5kZXIpKTsKKyAgICBuYWNrX21vZHVsZV8gPSBhYnNsOjptYWtlX3VuaXF1ZTxOYWNrTW9kdWxl
PihjbG9ja18sIG5hY2tfc2VuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKTsKICAgICBwcm9jZXNzX3Ro
cmVhZF8tPlJlZ2lzdGVyTW9kdWxlKG5hY2tfbW9kdWxlXy5nZXQoKSwgUlRDX0ZST01fSEVSRSk7
CiAgIH0KIAorICAvLyBUaGUgZ3JvdXAgaGVyZSBtdXN0IGJlIGEgcG9zaXRpdmUgcG93ZXIgb2Yg
MiwgaW4gd2hpY2ggY2FzZSB0aGF0IGlzIHVzZWQgYXMKKyAgLy8gc2l6ZS4gQWxsIG90aGVyIHZh
bHVlcyBzaGFsbCByZXN1bHQgaW4gdGhlIGRlZmF1bHQgdmFsdWUgYmVpbmcgdXNlZC4KKyAgY29u
c3Qgc3RkOjpzdHJpbmcgZ3JvdXBfbmFtZSA9CisgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpG
aW5kRnVsbE5hbWUoIldlYlJUQy1QYWNrZXRCdWZmZXJNYXhTaXplIik7CisgIGludCBwYWNrZXRf
YnVmZmVyX21heF9zaXplID0ga1BhY2tldEJ1ZmZlck1heFNpemU7CisgIGlmICghZ3JvdXBfbmFt
ZS5lbXB0eSgpICYmCisgICAgICAoc3NjYW5mKGdyb3VwX25hbWUuY19zdHIoKSwgIiVkIiwgJnBh
Y2tldF9idWZmZXJfbWF4X3NpemUpICE9IDEgfHwKKyAgICAgICBwYWNrZXRfYnVmZmVyX21heF9z
aXplIDw9IDAgfHwKKyAgICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgbnVtYmVyIGlzIGEgcG9zaXRp
dmUgcG93ZXIgb2YgMi4KKyAgICAgICAocGFja2V0X2J1ZmZlcl9tYXhfc2l6ZSAmIChwYWNrZXRf
YnVmZmVyX21heF9zaXplIC0gMSkpICE9IDApKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8
PCAiSW52YWxpZCBwYWNrZXQgYnVmZmVyIG1heCBzaXplOiAiIDw8IGdyb3VwX25hbWU7CisgICAg
cGFja2V0X2J1ZmZlcl9tYXhfc2l6ZSA9IGtQYWNrZXRCdWZmZXJNYXhTaXplOworICB9CisKICAg
cGFja2V0X2J1ZmZlcl8gPSB2aWRlb19jb2Rpbmc6OlBhY2tldEJ1ZmZlcjo6Q3JlYXRlKAotICAg
ICAgY2xvY2tfLCBrUGFja2V0QnVmZmVyU3RhcnRTaXplLCBrUGFja2V0QnVmZmVyTWF4U2l4ZSwg
dGhpcyk7Ci0gIHJlZmVyZW5jZV9maW5kZXJfLnJlc2V0KG5ldyB2aWRlb19jb2Rpbmc6OlJ0cEZy
YW1lUmVmZXJlbmNlRmluZGVyKHRoaXMpKTsKKyAgICAgIGNsb2NrXywga1BhY2tldEJ1ZmZlclN0
YXJ0U2l6ZSwgcGFja2V0X2J1ZmZlcl9tYXhfc2l6ZSwgdGhpcyk7CisgIHJlZmVyZW5jZV9maW5k
ZXJfID0KKyAgICAgIGFic2w6Om1ha2VfdW5pcXVlPHZpZGVvX2NvZGluZzo6UnRwRnJhbWVSZWZl
cmVuY2VGaW5kZXI+KHRoaXMpOwogfQogCiBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyOjp+UnRwVmlk
ZW9TdHJlYW1SZWNlaXZlcigpIHsKQEAgLTIwMiwxNCArMjE2LDE1IEBAIGludDMyX3QgUnRwVmlk
ZW9TdHJlYW1SZWNlaXZlcjo6T25SZWNlaXZlZFBheWxvYWREYXRhKAogICAgIHNpemVfdCBwYXls
b2FkX3NpemUsCiAgICAgY29uc3QgV2ViUnRjUlRQSGVhZGVyKiBydHBfaGVhZGVyKSB7CiAgIHJl
dHVybiBPblJlY2VpdmVkUGF5bG9hZERhdGEocGF5bG9hZF9kYXRhLCBwYXlsb2FkX3NpemUsIHJ0
cF9oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bnVsbG9wdCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bnVsbG9wdCwgZmFsc2UpOwog
fQogCiBpbnQzMl90IFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6Ok9uUmVjZWl2ZWRQYXlsb2FkRGF0
YSgKICAgICBjb25zdCB1aW50OF90KiBwYXlsb2FkX2RhdGEsCiAgICAgc2l6ZV90IHBheWxvYWRf
c2l6ZSwKICAgICBjb25zdCBXZWJSdGNSVFBIZWFkZXIqIHJ0cF9oZWFkZXIsCi0gICAgY29uc3Qg
YWJzbDo6b3B0aW9uYWw8UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvcj4mIGdlbmVyaWNfZGVzY3Jp
cHRvcikgeworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0
b3I+JiBnZW5lcmljX2Rlc2NyaXB0b3IsCisgICAgYm9vbCBpc19yZWNvdmVyZWQpIHsKICAgV2Vi
UnRjUlRQSGVhZGVyIHJ0cF9oZWFkZXJfd2l0aF9udHAgPSAqcnRwX2hlYWRlcjsKICAgcnRwX2hl
YWRlcl93aXRoX250cC5udHBfdGltZV9tcyA9CiAgICAgICBudHBfZXN0aW1hdG9yXy5Fc3RpbWF0
ZShydHBfaGVhZGVyLT5oZWFkZXIudGltZXN0YW1wKTsKQEAgLTIyMSw3ICsyMzYsOCBAQCBpbnQz
Ml90IFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6Ok9uUmVjZWl2ZWRQYXlsb2FkRGF0YSgKICAgICAg
ICAgcnRwX2hlYWRlci0+ZnJhbWVUeXBlID09IGtWaWRlb0ZyYW1lS2V5OwogCiAgICAgcGFja2V0
LnRpbWVzTmFja2VkID0gbmFja19tb2R1bGVfLT5PblJlY2VpdmVkUGFja2V0KAotICAgICAgICBy
dHBfaGVhZGVyLT5oZWFkZXIuc2VxdWVuY2VOdW1iZXIsIGlzX2tleWZyYW1lKTsKKyAgICAgICAg
cnRwX2hlYWRlci0+aGVhZGVyLnNlcXVlbmNlTnVtYmVyLCBpc19rZXlmcmFtZSwgaXNfcmVjb3Zl
cmVkKTsKKwogICB9IGVsc2UgewogICAgIHBhY2tldC50aW1lc05hY2tlZCA9IC0xOwogICB9CkBA
IC0zMDIsNyArMzE4LDggQEAgdm9pZCBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyOjpPblJ0cFBhY2tl
dChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgICAgICBsYXN0X3JlY2VpdmVk
X3J0cF9zeXN0ZW1fdGltZV9tc18gPSBub3dfbXM7CiAKICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQz
Ml90PiBjc3JjcyA9IHBhY2tldC5Dc3JjcygpOwotICAgICAgY29udHJpYnV0aW5nX3NvdXJjZXNf
LlVwZGF0ZShub3dfbXMsIGNzcmNzKTsKKyAgICAgIGNvbnRyaWJ1dGluZ19zb3VyY2VzXy5VcGRh
dGUobm93X21zLCBjc3JjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
YXVkaW8gbGV2ZWwgKi9hYnNsOjpudWxsb3B0KTsKICAgICB9CiAgICAgLy8gUGVyaW9kaWNhbGx5
IGxvZyB0aGUgUlRQIGhlYWRlciBvZiBpbmNvbWluZyBwYWNrZXRzLgogICAgIGlmIChub3dfbXMg
LSBsYXN0X3BhY2tldF9sb2dfbXNfID4ga1BhY2tldExvZ0ludGVydmFsTXMpIHsKQEAgLTM2Mywx
MCArMzgwLDYxIEBAIGludDMyX3QgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6UmVzZW5kUGFja2V0
cyhjb25zdCB1aW50MTZfdCogc2VxdWVuY2VfbnVtYmVycywKIAogdm9pZCBSdHBWaWRlb1N0cmVh
bVJlY2VpdmVyOjpPblJlY2VpdmVkRnJhbWUoCiAgICAgc3RkOjp1bmlxdWVfcHRyPHZpZGVvX2Nv
ZGluZzo6UnRwRnJhbWVPYmplY3Q+IGZyYW1lKSB7CisgIC8vIFJlcXVlc3QgYSBrZXkgZnJhbWUg
YXMgc29vbiBhcyBwb3NzaWJsZS4KKyAgYm9vbCBrZXlfZnJhbWVfcmVxdWVzdGVkID0gZmFsc2U7
CiAgIGlmICghaGFzX3JlY2VpdmVkX2ZyYW1lXykgewogICAgIGhhc19yZWNlaXZlZF9mcmFtZV8g
PSB0cnVlOwotICAgIGlmIChmcmFtZS0+RnJhbWVUeXBlKCkgIT0ga1ZpZGVvRnJhbWVLZXkpCisg
ICAgaWYgKGZyYW1lLT5GcmFtZVR5cGUoKSAhPSBrVmlkZW9GcmFtZUtleSkgeworICAgICAga2V5
X2ZyYW1lX3JlcXVlc3RlZCA9IHRydWU7CiAgICAgICBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcl8t
PlJlcXVlc3RLZXlGcmFtZSgpOworICAgIH0KKyAgfQorCisgIC8vIE9wdGlvbmFsbHkgYXR0ZW1w
dCB0byBkZWNyeXB0IHRoZSByYXcgdmlkZW8gZnJhbWUgaWYgaXQgd2FzIHByb3ZpZGVkLgorICBp
ZiAoZnJhbWVfZGVjcnlwdG9yXyAhPSBudWxscHRyKSB7CisgICAgLy8gV2hlbiB1c2luZyBlbmNy
eXB0aW9uIHdlIGV4cGVjdCB0aGUgZnJhbWUgdG8gaGF2ZSB0aGUgZ2VuZXJpYyBkZXNjcmlwdG9y
LgorICAgIGFic2w6Om9wdGlvbmFsPFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I+IGRlc2NyaXB0
b3IgPQorICAgICAgICBmcmFtZS0+R2V0R2VuZXJpY0ZyYW1lRGVzY3JpcHRvcigpOworICAgIGlm
ICghZGVzY3JpcHRvcikgeworICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIk5vIGdlbmVyaWMg
ZnJhbWUgZGVzY3JpcHRvciBmb3VuZCBkcm9wcGluZyBmcmFtZS4iOworICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIFJldHJpZXZlIHRoZSBiaXRzdHJlYW0gb2YgdGhlIGVuY3J5cHRlZCB2
aWRlbyBmcmFtZS4KKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBlbmNyeXB0ZWRf
ZnJhbWVfYml0c3RyZWFtKGZyYW1lLT5CdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zaXplKCkpOworICAg
IC8vIFJldHJpZXZlIHRoZSBtYXhpbXVtIHBvc3NpYmxlIHNpemUgb2YgdGhlIGRlY3J5cHRlZCBw
YXlsb2FkLgorICAgIGNvbnN0IHNpemVfdCBtYXhfcGxhaW50ZXh0X2J5dGVfc2l6ZSA9CisgICAg
ICAgIGZyYW1lX2RlY3J5cHRvcl8tPkdldE1heFBsYWludGV4dEJ5dGVTaXplKGNyaWNrZXQ6Ok1F
RElBX1RZUEVfVklERU8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1lLT5zaXplKCkpOworICAgIFJUQ19DSEVDSyhtYXhfcGxhaW50ZXh0X2J5
dGVfc2l6ZSA8PSBmcmFtZS0+c2l6ZSgpKTsKKyAgICAvLyBQbGFjZSB0aGUgZGVjcnlwdGVkIGZy
YW1lIGlubGluZSBpbnRvIHRoZSBleGlzdGluZyBmcmFtZS4KKyAgICBydGM6OkFycmF5Vmlldzx1
aW50OF90PiBpbmxpbmVfZGVjcnlwdGVkX2JpdHN0cmVhbShmcmFtZS0+TXV0YWJsZUJ1ZmZlcigp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1heF9wbGFpbnRleHRfYnl0ZV9zaXplKTsKKworICAgIC8vIEF0dGVtcHQgdG8gZGVjcnlwdCB0
aGUgdmlkZW8gZnJhbWUuCisgICAgc2l6ZV90IGJ5dGVzX3dyaXR0ZW4gPSAwOworICAgIGlmIChm
cmFtZV9kZWNyeXB0b3JfLT5EZWNyeXB0KAorICAgICAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQ
RV9WSURFTywgLypjc3Jjcz0qL3t9LAorICAgICAgICAgICAgLyphZGRpdGlvbmFsX2RhdGE9Ki9u
dWxscHRyLCBlbmNyeXB0ZWRfZnJhbWVfYml0c3RyZWFtLAorICAgICAgICAgICAgaW5saW5lX2Rl
Y3J5cHRlZF9iaXRzdHJlYW0sICZieXRlc193cml0dGVuKSAhPSAwKSB7CisgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCFoYXNfcmVjZWl2ZWRfZGVjcnlwdGVkX2ZyYW1lXyAmJiAha2V5
X2ZyYW1lX3JlcXVlc3RlZCkgeworICAgICAgaGFzX3JlY2VpdmVkX2RlY3J5cHRlZF9mcmFtZV8g
PSB0cnVlOworICAgICAgaWYgKGZyYW1lLT5GcmFtZVR5cGUoKSAhPSBrVmlkZW9GcmFtZUtleSkg
eworICAgICAgICBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcl8tPlJlcXVlc3RLZXlGcmFtZSgpOwor
ICAgICAgfQorICAgIH0KKworICAgIFJUQ19DSEVDSyhieXRlc193cml0dGVuIDw9IG1heF9wbGFp
bnRleHRfYnl0ZV9zaXplKTsKKyAgICAvLyBVcGRhdGUgdGhlIGZyYW1lIHRvIGNvbnRhaW4ganVz
dCB0aGUgd3JpdHRlbiBieXRlcy4KKyAgICBmcmFtZS0+U2V0TGVuZ3RoKGJ5dGVzX3dyaXR0ZW4p
OworICB9IGVsc2UgaWYgKGNvbmZpZ18uY3J5cHRvX29wdGlvbnMuc2ZyYW1lLnJlcXVpcmVfZnJh
bWVfZW5jcnlwdGlvbikgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZyYW1lIGRlY3J5
cHRpb24gcmVxdWlyZWQgYnV0IG5vdCBhdHRhY2hlZCB0byB0aGlzICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJzdHJlYW0uIERyb3BwaW5nICBmcmFtZS4iOworICAgIHJldHVybjsKICAg
fQogCiAgIHJlZmVyZW5jZV9maW5kZXJfLT5NYW5hZ2VGcmFtZShzdGQ6Om1vdmUoZnJhbWUpKTsK
QEAgLTQ1OSw4ICs1MjcsNiBAQCB2b2lkIFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6OlJlY2VpdmVQ
YWNrZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgewogICB3ZWJydGNfcnRwX2hl
YWRlci52aWRlb19oZWFkZXIoKS5jb250ZW50X3R5cGUgPSBWaWRlb0NvbnRlbnRUeXBlOjpVTlNQ
RUNJRklFRDsKICAgd2VicnRjX3J0cF9oZWFkZXIudmlkZW9faGVhZGVyKCkudmlkZW9fdGltaW5n
LmZsYWdzID0KICAgICAgIFZpZGVvU2VuZFRpbWluZzo6a0ludmFsaWQ7Ci0gIHdlYnJ0Y19ydHBf
aGVhZGVyLnZpZGVvX2hlYWRlcigpLnBsYXlvdXRfZGVsYXkubWluX21zID0gLTE7Ci0gIHdlYnJ0
Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLnBsYXlvdXRfZGVsYXkubWF4X21zID0gLTE7CiAg
IHdlYnJ0Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLmlzX2xhc3RfcGFja2V0X2luX2ZyYW1l
ID0KICAgICAgIHdlYnJ0Y19ydHBfaGVhZGVyLmhlYWRlci5tYXJrZXJCaXQ7CiAKQEAgLTQ4Niwx
MiArNTUyLDIzIEBAIHZvaWQgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6UmVjZWl2ZVBhY2tldChj
b25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgICAgICAgIHdlYnJ0Y19ydHBfaGVh
ZGVyLmhlYWRlci5tYXJrZXJCaXQgfHwKICAgICAgICAgKGdlbmVyaWNfZGVzY3JpcHRvcl93aXJl
LT5MYXN0U3ViRnJhbWVJbkZyYW1lKCkgJiYKICAgICAgICAgIGdlbmVyaWNfZGVzY3JpcHRvcl93
aXJlLT5MYXN0UGFja2V0SW5TdWJGcmFtZSgpKTsKKworICAgIGlmIChnZW5lcmljX2Rlc2NyaXB0
b3Jfd2lyZS0+Rmlyc3RQYWNrZXRJblN1YkZyYW1lKCkpIHsKKyAgICAgIHdlYnJ0Y19ydHBfaGVh
ZGVyLmZyYW1lVHlwZSA9CisgICAgICAgICAgZ2VuZXJpY19kZXNjcmlwdG9yX3dpcmUtPkZyYW1l
RGVwZW5kZW5jaWVzRGlmZnMoKS5lbXB0eSgpCisgICAgICAgICAgICAgID8ga1ZpZGVvRnJhbWVL
ZXkKKyAgICAgICAgICAgICAgOiBrVmlkZW9GcmFtZURlbHRhOworICAgIH0KKworICAgIHdlYnJ0
Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLndpZHRoID0gZ2VuZXJpY19kZXNjcmlwdG9yX3dp
cmUtPldpZHRoKCk7CisgICAgd2VicnRjX3J0cF9oZWFkZXIudmlkZW9faGVhZGVyKCkuaGVpZ2h0
ID0gZ2VuZXJpY19kZXNjcmlwdG9yX3dpcmUtPkhlaWdodCgpOwogICB9IGVsc2UgewogICAgIGdl
bmVyaWNfZGVzY3JpcHRvcl93aXJlLnJlc2V0KCk7CiAgIH0KIAogICBPblJlY2VpdmVkUGF5bG9h
ZERhdGEocGFyc2VkX3BheWxvYWQucGF5bG9hZCwgcGFyc2VkX3BheWxvYWQucGF5bG9hZF9sZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAmd2VicnRjX3J0cF9oZWFkZXIsIGdlbmVyaWNf
ZGVzY3JpcHRvcl93aXJlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICZ3ZWJydGNfcnRwX2hl
YWRlciwgZ2VuZXJpY19kZXNjcmlwdG9yX3dpcmUsCisgICAgICAgICAgICAgICAgICAgICAgICBw
YWNrZXQucmVjb3ZlcmVkKCkpOwogfQogCiB2b2lkIFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6OlBh
cnNlQW5kSGFuZGxlRW5jYXBzdWxhdGluZ0hlYWRlcigKQEAgLTUyMyw3ICs2MDAsOCBAQCB2b2lk
IFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6Ok5vdGlmeVJlY2VpdmVyT2ZFbXB0eVBhY2tldCh1aW50
MTZfdCBzZXFfbnVtKSB7CiAgIHJlZmVyZW5jZV9maW5kZXJfLT5QYWRkaW5nUmVjZWl2ZWQoc2Vx
X251bSk7CiAgIHBhY2tldF9idWZmZXJfLT5QYWRkaW5nUmVjZWl2ZWQoc2VxX251bSk7CiAgIGlm
IChuYWNrX21vZHVsZV8pIHsKLSAgICBuYWNrX21vZHVsZV8tPk9uUmVjZWl2ZWRQYWNrZXQoc2Vx
X251bSwgLyogaXNfa2V5ZnJhbWUgPSAqLyBmYWxzZSk7CisgICAgbmFja19tb2R1bGVfLT5PblJl
Y2VpdmVkUGFja2V0KHNlcV9udW0sIC8qIGlzX2tleWZyYW1lID0gKi8gZmFsc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlzIF9yZWNvdmVyZWQgPSAqLyBmYWxzZSk7
CiAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNl
aXZlci5oCmluZGV4IGNhNWQ3YTBhYmQ5NDI1ODE0N2IxZjZiOWIyYWFiYzU5YWRhNTUzYjAuLmEy
MDA2ZDFiYjJhMDg3MjQ2YTY4MGI2ZWVkMDU3ZTJkMjRhZjBiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3J0cF92aWRlb19zdHJl
YW1fcmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyLmgKQEAgLTE5LDYgKzE5LDcgQEAK
IAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKIAorI2luY2x1ZGUgImFwaS9jcnlw
dG8vZnJhbWVkZWNyeXB0b3JpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNz
L3ZpZGVvX2NvZGVjLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfcGFja2V0X3NpbmtfaW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiY2FsbC9zeW5jYWJsZS5oIgpAQCAtNjcsNyArNjgsOCBAQCBjbGFzcyBS
dHBWaWRlb1N0cmVhbVJlY2VpdmVyIDogcHVibGljIFJlY292ZXJlZFBhY2tldFJlY2VpdmVyLAog
ICAgICAgUHJvY2Vzc1RocmVhZCogcHJvY2Vzc190aHJlYWQsCiAgICAgICBOYWNrU2VuZGVyKiBu
YWNrX3NlbmRlciwKICAgICAgIEtleUZyYW1lUmVxdWVzdFNlbmRlcioga2V5ZnJhbWVfcmVxdWVz
dF9zZW5kZXIsCi0gICAgICB2aWRlb19jb2Rpbmc6Ok9uQ29tcGxldGVGcmFtZUNhbGxiYWNrKiBj
b21wbGV0ZV9mcmFtZV9jYWxsYmFjayk7CisgICAgICB2aWRlb19jb2Rpbmc6Ok9uQ29tcGxldGVG
cmFtZUNhbGxiYWNrKiBjb21wbGV0ZV9mcmFtZV9jYWxsYmFjaywKKyAgICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yKTsKICAgflJ0
cFZpZGVvU3RyZWFtUmVjZWl2ZXIoKSBvdmVycmlkZTsKIAogICB2b2lkIEFkZFJlY2VpdmVDb2Rl
Yyhjb25zdCBWaWRlb0NvZGVjJiB2aWRlb19jb2RlYywKQEAgLTEwMiw3ICsxMDQsOCBAQCBjbGFz
cyBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyIDogcHVibGljIFJlY292ZXJlZFBhY2tldFJlY2VpdmVy
LAogICAgICAgY29uc3QgdWludDhfdCogcGF5bG9hZF9kYXRhLAogICAgICAgc2l6ZV90IHBheWxv
YWRfc2l6ZSwKICAgICAgIGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciogcnRwX2hlYWRlciwKLSAgICAg
IGNvbnN0IGFic2w6Om9wdGlvbmFsPFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I+JiBnZW5lcmlj
X2Rlc2NyaXB0b3IpOworICAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8UnRwR2VuZXJpY0ZyYW1l
RGVzY3JpcHRvcj4mIGdlbmVyaWNfZGVzY3JpcHRvciwKKyAgICAgIGJvb2wgaXNfcmVjb3ZlcmVk
KTsKIAogICAvLyBJbXBsZW1lbnRzIFJlY292ZXJlZFBhY2tldFJlY2VpdmVyLgogICB2b2lkIE9u
UmVjb3ZlcmVkUGFja2V0KGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IHBhY2tldF9sZW5n
dGgpIG92ZXJyaWRlOwpAQCAtMjAzLDYgKzIwNiwxMSBAQCBjbGFzcyBSdHBWaWRlb1N0cmVhbVJl
Y2VpdmVyIDogcHVibGljIFJlY292ZXJlZFBhY2tldFJlY2VpdmVyLAogICAgICAgUlRDX0dVQVJE
RURfQlkocnRwX3NvdXJjZXNfbG9ja18pOwogICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBsYXN0
X3JlY2VpdmVkX3J0cF9zeXN0ZW1fdGltZV9tc18KICAgICAgIFJUQ19HVUFSREVEX0JZKHJ0cF9z
b3VyY2VzX2xvY2tfKTsKKworICAvLyBFMkVFIFZpZGVvIEZyYW1lIERlY3J5cHRvciAoT3B0aW9u
YWwpCisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVf
ZGVjcnlwdG9yXzsKKyAgLy8gU2V0IHRvIHRydWUgb24gdGhlIGZpcnN0IHN1Y2Nlc3NzZnVsbHkg
ZGVjcnlwdGVkIGZyYW1lLgorICBib29sIGhhc19yZWNlaXZlZF9kZWNyeXB0ZWRfZnJhbWVfID0g
ZmFsc2U7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFt
X3JlY2VpdmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlcl91bml0dGVzdC5jYwppbmRl
eCBlYzJiZjMzNGU5YjZkMGU3OTg0ZmU4YzY2NTEwMDc0OWE0MTY5NjUzLi4xMGM1ZTdlZWJjZTJh
ZjFmY2IwY2NjOWM5ZjRlMjZmYWUzNWNlNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVy
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXJfdW5pdHRlc3QuY2MKQEAgLTEzMyw3
ICsxMzMsNyBAQCBjbGFzcyBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKICAgICAgICAgJm1vY2tfdHJhbnNwb3J0XywgbnVsbHB0ciwgJnBhY2tldF9y
b3V0ZXJfLCAmY29uZmlnXywKICAgICAgICAgcnRwX3JlY2VpdmVfc3RhdGlzdGljc18uZ2V0KCks
IG51bGxwdHIsIHByb2Nlc3NfdGhyZWFkXy5nZXQoKSwKICAgICAgICAgJm1vY2tfbmFja19zZW5k
ZXJfLCAmbW9ja19rZXlfZnJhbWVfcmVxdWVzdF9zZW5kZXJfLAotICAgICAgICAmbW9ja19vbl9j
b21wbGV0ZV9mcmFtZV9jYWxsYmFja18pOworICAgICAgICAmbW9ja19vbl9jb21wbGV0ZV9mcmFt
ZV9jYWxsYmFja18sIG51bGxwdHIpOwogICB9CiAKICAgV2ViUnRjUlRQSGVhZGVyIEdldERlZmF1
bHRQYWNrZXQoKSB7CkBAIC01NjgsMTAgKzU2OCw4IEBAIFRFU1RfRihSdHBWaWRlb1N0cmVhbVJl
Y2VpdmVyVGVzdCwgUGFyc2VHZW5lcmljRGVzY3JpcHRvclR3b1BhY2tldHMpIHsKICAgZmlyc3Rf
cGFja2V0X2Rlc2NyaXB0b3IuU2V0Rmlyc3RTdWJGcmFtZUluRnJhbWUodHJ1ZSk7CiAgIGZpcnN0
X3BhY2tldF9kZXNjcmlwdG9yLlNldExhc3RTdWJGcmFtZUluRnJhbWUodHJ1ZSk7CiAgIGZpcnN0
X3BhY2tldF9kZXNjcmlwdG9yLlNldEZyYW1lSWQoMTAwKTsKLSAgZmlyc3RfcGFja2V0X2Rlc2Ny
aXB0b3IuU2V0VGVtcG9yYWxMYXllcigxKTsKICAgZmlyc3RfcGFja2V0X2Rlc2NyaXB0b3IuU2V0
U3BhdGlhbExheWVyc0JpdG1hc2soMSA8PCBrU3BhdGlhbEluZGV4KTsKLSAgZmlyc3RfcGFja2V0
X2Rlc2NyaXB0b3IuQWRkRnJhbWVEZXBlbmRlbmN5RGlmZig5MCk7Ci0gIGZpcnN0X3BhY2tldF9k
ZXNjcmlwdG9yLkFkZEZyYW1lRGVwZW5kZW5jeURpZmYoODApOworICBmaXJzdF9wYWNrZXRfZGVz
Y3JpcHRvci5TZXRSZXNvbHV0aW9uKDQ4MCwgMzYwKTsKICAgRVhQRUNUX1RSVUUoZmlyc3RfcGFj
a2V0LlNldEV4dGVuc2lvbjxSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uPigKICAg
ICAgIGZpcnN0X3BhY2tldF9kZXNjcmlwdG9yKSk7CiAKQEAgLTYwNiwxMCArNjA0LDEwIEBAIFRF
U1RfRihSdHBWaWRlb1N0cmVhbVJlY2VpdmVyVGVzdCwgUGFyc2VHZW5lcmljRGVzY3JpcHRvclR3
b1BhY2tldHMpIHsKIAogICBFWFBFQ1RfQ0FMTChtb2NrX29uX2NvbXBsZXRlX2ZyYW1lX2NhbGxi
YWNrXywgRG9PbkNvbXBsZXRlRnJhbWUpCiAgICAgICAuV2lsbE9uY2UoSW52b2tlKFtrU3BhdGlh
bEluZGV4XSh2aWRlb19jb2Rpbmc6OkVuY29kZWRGcmFtZSogZnJhbWUpIHsKLSAgICAgICAgRVhQ
RUNUX0VRKGZyYW1lLT5udW1fcmVmZXJlbmNlcywgMlUpOwotICAgICAgICBFWFBFQ1RfRVEoZnJh
bWUtPnJlZmVyZW5jZXNbMF0sIGZyYW1lLT5pZC5waWN0dXJlX2lkIC0gOTApOwotICAgICAgICBF
WFBFQ1RfRVEoZnJhbWUtPnJlZmVyZW5jZXNbMV0sIGZyYW1lLT5pZC5waWN0dXJlX2lkIC0gODAp
OworICAgICAgICBFWFBFQ1RfRVEoZnJhbWUtPm51bV9yZWZlcmVuY2VzLCAwVSk7CiAgICAgICAg
IEVYUEVDVF9FUShmcmFtZS0+aWQuc3BhdGlhbF9sYXllciwga1NwYXRpYWxJbmRleCk7CisgICAg
ICAgIEVYUEVDVF9FUShmcmFtZS0+RW5jb2RlZEltYWdlKCkuX2VuY29kZWRXaWR0aCwgNDgwdSk7
CisgICAgICAgIEVYUEVDVF9FUShmcmFtZS0+RW5jb2RlZEltYWdlKCkuX2VuY29kZWRIZWlnaHQs
IDM2MHUpOwogICAgICAgfSkpOwogCiAgIHJ0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXJfLT5PblJ0
cFBhY2tldChzZWNvbmRfcGFja2V0KTsKQEAgLTYyOCw0ICs2MjYsMTMgQEAgVEVTVF9GKFJ0cFZp
ZGVvU3RyZWFtUmVjZWl2ZXJUZXN0LCBSZXBlYXRlZFNlY29uZGFyeVNpbmtEaXNhbGxvd2VkKSB7
CiB9CiAjZW5kaWYKIAorLy8gSW5pdGlhbGl6YXRpb24gb2YgV2ViUnRjUlRQSGVhZGVyIGlzIGEg
Yml0IGNvbnZvbHV0ZWQsIHdpdGggc29tZSBmaWVsZHMKKy8vIHplcm8taW5pdGlhbGl6ZWQuIFJ0
cFZpZGVvU3RyZWFtUmVjZWl2ZXIgZGVwZW5kcyBvbiBwcm9wZXIgZGVmYXVsdCB2YWx1ZXMgZm9y
CisvLyB0aGUgcGxheW91dCBkZWxheS4KK1RFU1QoV2ViUnRjUlRQSGVhZGVyLCBEZWZhdWx0UGxh
eW91dERlbGF5SXNVbnNwZWNpZmllZCkgeworICBXZWJSdGNSVFBIZWFkZXIgd2VicnRjX3J0cF9o
ZWFkZXIgPSB7fTsKKyAgRVhQRUNUX0VRKHdlYnJ0Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigp
LnBsYXlvdXRfZGVsYXkubWluX21zLCAtMSk7CisgIEVYUEVDVF9FUSh3ZWJydGNfcnRwX2hlYWRl
ci52aWRlb19oZWFkZXIoKS5wbGF5b3V0X2RlbGF5Lm1heF9tcywgLTEpOworfQorCiB9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby9zY3JlZW5zaGFyZV9sb29wYmFjay5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NjcmVlbnNoYXJlX2xvb3BiYWNr
LmNjCmluZGV4IDFkNmU4N2U3MWZmNGJhOTJlNDdjYzc0ZDlhZThiMDIwYjNlMzllMDEuLjQ2OTY2
NjY5MDg3MDdkNDUwZTJhM2ZiM2ExN2U2MmEyMDYzNmNhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NjcmVlbnNoYXJlX2xvb3Bi
YWNrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL3NjcmVlbnNoYXJlX2xvb3BiYWNrLmNjCkBAIC0xMiw3ICsxMiw2IEBACiAKICNpbmNsdWRl
ICJydGNfYmFzZS9mbGFncy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKICNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCkBAIC0yMyw3MyArMjIsNzYgQEAgbmFtZXNwYWNlIHdlYnJ0
YyB7CiBuYW1lc3BhY2UgZmxhZ3MgewogCiAvLyBGbGFncyBjb21tb24gd2l0aCB2aWRlbyBsb29w
YmFjaywgd2l0aCBkaWZmZXJlbnQgZGVmYXVsdCB2YWx1ZXMuCi1ERUZJTkVfaW50KHdpZHRoLCAx
ODUwLCAiVmlkZW8gd2lkdGggKGNyb3BzIHNvdXJjZSkuIik7CitXRUJSVENfREVGSU5FX2ludCh3
aWR0aCwgMTg1MCwgIlZpZGVvIHdpZHRoIChjcm9wcyBzb3VyY2UpLiIpOwogc2l6ZV90IFdpZHRo
KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihGTEFHX3dpZHRoKTsKIH0KIAotREVG
SU5FX2ludChoZWlnaHQsIDExMTAsICJWaWRlbyBoZWlnaHQgKGNyb3BzIHNvdXJjZSkuIik7CitX
RUJSVENfREVGSU5FX2ludChoZWlnaHQsIDExMTAsICJWaWRlbyBoZWlnaHQgKGNyb3BzIHNvdXJj
ZSkuIik7CiBzaXplX3QgSGVpZ2h0KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihG
TEFHX2hlaWdodCk7CiB9CiAKLURFRklORV9pbnQoZnBzLCA1LCAiRnJhbWVzIHBlciBzZWNvbmQu
Iik7CitXRUJSVENfREVGSU5FX2ludChmcHMsIDUsICJGcmFtZXMgcGVyIHNlY29uZC4iKTsKIGlu
dCBGcHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfZnBzKTsKIH0KIAotREVG
SU5FX2ludChtaW5fYml0cmF0ZSwgNTAsICJDYWxsIGFuZCBzdHJlYW0gbWluIGJpdHJhdGUgaW4g
a2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KG1pbl9iaXRyYXRlLCA1MCwgIkNhbGwgYW5kIHN0
cmVhbSBtaW4gYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IE1pbkJpdHJhdGVLYnBzKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX21pbl9iaXRyYXRlKTsKIH0KIAotREVGSU5FX2lu
dChzdGFydF9iaXRyYXRlLCAzMDAsICJDYWxsIHN0YXJ0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dF
QlJUQ19ERUZJTkVfaW50KHN0YXJ0X2JpdHJhdGUsIDMwMCwgIkNhbGwgc3RhcnQgYml0cmF0ZSBp
biBrYnBzLiIpOwogaW50IFN0YXJ0Qml0cmF0ZUticHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KEZMQUdfc3RhcnRfYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQodGFyZ2V0X2JpdHJh
dGUsIDIwMCwgIlN0cmVhbSB0YXJnZXQgYml0cmF0ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklO
RV9pbnQodGFyZ2V0X2JpdHJhdGUsIDIwMCwgIlN0cmVhbSB0YXJnZXQgYml0cmF0ZSBpbiBrYnBz
LiIpOwogaW50IFRhcmdldEJpdHJhdGVLYnBzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihGTEFHX3RhcmdldF9iaXRyYXRlKTsKIH0KIAotREVGSU5FX2ludChtYXhfYml0cmF0ZSwgMTAw
MCwgIkNhbGwgYW5kIHN0cmVhbSBtYXggYml0cmF0ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklO
RV9pbnQobWF4X2JpdHJhdGUsIDEwMDAsICJDYWxsIGFuZCBzdHJlYW0gbWF4IGJpdHJhdGUgaW4g
a2Jwcy4iKTsKIGludCBNYXhCaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oRkxBR19tYXhfYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQobnVtX3RlbXBvcmFsX2xheWVy
cywgMiwgIk51bWJlciBvZiB0ZW1wb3JhbCBsYXllcnMgdG8gdXNlLiIpOworV0VCUlRDX0RFRklO
RV9pbnQobnVtX3RlbXBvcmFsX2xheWVycywgMiwgIk51bWJlciBvZiB0ZW1wb3JhbCBsYXllcnMg
dG8gdXNlLiIpOwogaW50IE51bVRlbXBvcmFsTGF5ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihGTEFHX251bV90ZW1wb3JhbF9sYXllcnMpOwogfQogCiAvLyBGbGFncyBjb21tb24g
d2l0aCB2aWRlbyBsb29wYmFjaywgd2l0aCBlcXVhbCBkZWZhdWx0IHZhbHVlcy4KLURFRklORV9z
dHJpbmcoY29kZWMsICJWUDgiLCAiVmlkZW8gY29kZWMgdG8gdXNlLiIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcoY29kZWMsICJWUDgiLCAiVmlkZW8gY29kZWMgdG8gdXNlLiIpOwogc3RkOjpzdHJp
bmcgQ29kZWMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19jb2Rl
Yyk7CiB9CiAKLURFRklORV9zdHJpbmcocnRjX2V2ZW50X2xvZ19uYW1lLAotICAgICAgICAgICAg
ICAiIiwKLSAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBydGMgZXZlbnQgbG9nLiBUd28gZmls
ZXMgIgotICAgICAgICAgICAgICAid2l0aCBcIl9zZW5kXCIgYW5kIFwiX3JlY3ZcIiBzdWZmaXhl
cyB3aWxsIGJlIGNyZWF0ZWQuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhydGNfZXZlbnRfbG9n
X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJG
aWxlbmFtZSBmb3IgcnRjIGV2ZW50IGxvZy4gVHdvIGZpbGVzICIKKyAgICAgICAgICAgICAgICAg
ICAgICJ3aXRoIFwiX3NlbmRcIiBhbmQgXCJfcmVjdlwiIHN1ZmZpeGVzIHdpbGwgYmUgY3JlYXRl
ZC4iKTsKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nTmFtZSgpIHsKICAgcmV0dXJuIHN0YXRpY19j
YXN0PHN0ZDo6c3RyaW5nPihGTEFHX3J0Y19ldmVudF9sb2dfbmFtZSk7CiB9CiAKLURFRklORV9z
dHJpbmcocnRwX2R1bXBfbmFtZSwgIiIsICJGaWxlbmFtZSBmb3IgZHVtcGVkIHJlY2VpdmVkIFJU
UCBzdHJlYW0uIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhydHBfZHVtcF9uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiRmlsZW5hbWUgZm9yIGR1
bXBlZCByZWNlaXZlZCBSVFAgc3RyZWFtLiIpOwogc3RkOjpzdHJpbmcgUnRwRHVtcE5hbWUoKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19ydHBfZHVtcF9uYW1lKTsK
IH0KIAotREVGSU5FX2ludChzZWxlY3RlZF90bCwKLSAgICAgICAgICAgLTEsCi0gICAgICAgICAg
ICJUZW1wb3JhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2FibGUgZmlsdGVy
aW5nLiIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgc2VsZWN0ZWRfdGwsCisgICAgLTEsCisg
ICAgIlRlbXBvcmFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZS4gLTEgdG8gZGlzYWJsZSBmaWx0
ZXJpbmcuIik7CiBpbnQgU2VsZWN0ZWRUTCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
RkxBR19zZWxlY3RlZF90bCk7CiB9CiAKLURFRklORV9pbnQoCitXRUJSVENfREVGSU5FX2ludCgK
ICAgICBkdXJhdGlvbiwKICAgICAwLAogICAgICJEdXJhdGlvbiBvZiB0aGUgdGVzdCBpbiBzZWNv
bmRzLiBJZiAwLCByZW5kZXJlZCB3aWxsIGJlIHNob3duIGluc3RlYWQuIik7CkBAIC05Nyw3MSAr
OTksNzQgQEAgaW50IER1cmF0aW9uU2VjcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
RkxBR19kdXJhdGlvbik7CiB9CiAKLURFRklORV9zdHJpbmcob3V0cHV0X2ZpbGVuYW1lLCAiIiwg
IlRhcmdldCBncmFwaCBkYXRhIGZpbGVuYW1lLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob3V0
cHV0X2ZpbGVuYW1lLCAiIiwgIlRhcmdldCBncmFwaCBkYXRhIGZpbGVuYW1lLiIpOwogc3RkOjpz
dHJpbmcgT3V0cHV0RmlsZW5hbWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmlu
Zz4oRkxBR19vdXRwdXRfZmlsZW5hbWUpOwogfQogCi1ERUZJTkVfc3RyaW5nKGdyYXBoX3RpdGxl
LAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIklmIGVtcHR5LCB0aXRsZSB3aWxs
IGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoZ3Jh
cGhfdGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAg
ICJJZiBlbXB0eSwgdGl0bGUgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4iKTsKIHN0
ZDo6c3RyaW5nIEdyYXBoVGl0bGUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmlu
Zz4oRkxBR19ncmFwaF90aXRsZSk7CiB9CiAKLURFRklORV9pbnQobG9zc19wZXJjZW50LCAwLCAi
UGVyY2VudGFnZSBvZiBwYWNrZXRzIHJhbmRvbWx5IGxvc3QuIik7CitXRUJSVENfREVGSU5FX2lu
dChsb3NzX3BlcmNlbnQsIDAsICJQZXJjZW50YWdlIG9mIHBhY2tldHMgcmFuZG9tbHkgbG9zdC4i
KTsKIGludCBMb3NzUGVyY2VudCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19s
b3NzX3BlcmNlbnQpOwogfQogCi1ERUZJTkVfaW50KGxpbmtfY2FwYWNpdHksCi0gICAgICAgICAg
IDAsCi0gICAgICAgICAgICJDYXBhY2l0eSAoa2Jwcykgb2YgdGhlIGZha2UgbGluay4gMCBtZWFu
cyBpbmZpbml0ZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGxpbmtfY2FwYWNpdHksCisgICAgICAg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIkNhcGFjaXR5IChrYnBzKSBvZiB0aGUg
ZmFrZSBsaW5rLiAwIG1lYW5zIGluZmluaXRlLiIpOwogaW50IExpbmtDYXBhY2l0eUticHMoKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbGlua19jYXBhY2l0eSk7CiB9CiAKLURF
RklORV9pbnQocXVldWVfc2l6ZSwgMCwgIlNpemUgb2YgdGhlIGJvdHRsZW5lY2sgbGluayBxdWV1
ZSBpbiBwYWNrZXRzLiIpOworV0VCUlRDX0RFRklORV9pbnQocXVldWVfc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiU2l6ZSBvZiB0aGUgYm90dGxlbmVjayBs
aW5rIHF1ZXVlIGluIHBhY2tldHMuIik7CiBpbnQgUXVldWVTaXplKCkgewogICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihGTEFHX3F1ZXVlX3NpemUpOwogfQogCi1ERUZJTkVfaW50KGF2Z19wcm9w
YWdhdGlvbl9kZWxheV9tcywKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkF2ZXJhZ2UgbGlu
ayBwcm9wYWdhdGlvbiBkZWxheSBpbiBtcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGF2Z19wcm9w
YWdhdGlvbl9kZWxheV9tcywKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAg
ICAiQXZlcmFnZSBsaW5rIHByb3BhZ2F0aW9uIGRlbGF5IGluIG1zLiIpOwogaW50IEF2Z1Byb3Bh
Z2F0aW9uRGVsYXlNcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19hdmdfcHJv
cGFnYXRpb25fZGVsYXlfbXMpOwogfQogCi1ERUZJTkVfaW50KHN0ZF9wcm9wYWdhdGlvbl9kZWxh
eV9tcywKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkxpbmsgcHJvcGFnYXRpb24gZGVsYXkg
c3RhbmRhcmQgZGV2aWF0aW9uIGluIG1zLiIpOworV0VCUlRDX0RFRklORV9pbnQoc3RkX3Byb3Bh
Z2F0aW9uX2RlbGF5X21zLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAg
ICJMaW5rIHByb3BhZ2F0aW9uIGRlbGF5IHN0YW5kYXJkIGRldmlhdGlvbiBpbiBtcy4iKTsKIGlu
dCBTdGRQcm9wYWdhdGlvbkRlbGF5TXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZM
QUdfc3RkX3Byb3BhZ2F0aW9uX2RlbGF5X21zKTsKIH0KIAotREVGSU5FX2ludChudW1fc3RyZWFt
cywgMCwgIk51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cgb3IgYW5hbHl6ZS4iKTsKK1dFQlJUQ19E
RUZJTkVfaW50KG51bV9zdHJlYW1zLCAwLCAiTnVtYmVyIG9mIHN0cmVhbXMgdG8gc2hvdyBvciBh
bmFseXplLiIpOwogaW50IE51bVN0cmVhbXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KEZMQUdfbnVtX3N0cmVhbXMpOwogfQogCi1ERUZJTkVfaW50KHNlbGVjdGVkX3N0cmVhbSwKLSAg
ICAgICAgICAgMCwKLSAgICAgICAgICAgIklEIG9mIHRoZSBzdHJlYW0gdG8gc2hvdyBvciBhbmFs
eXplLiAiCi0gICAgICAgICAgICJTZXQgdG8gdGhlIG51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cg
dGhlbSBhbGwuIik7CitXRUJSVENfREVGSU5FX2ludChzZWxlY3RlZF9zdHJlYW0sCisgICAgICAg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIklEIG9mIHRoZSBzdHJlYW0gdG8gc2hv
dyBvciBhbmFseXplLiAiCisgICAgICAgICAgICAgICAgICAiU2V0IHRvIHRoZSBudW1iZXIgb2Yg
c3RyZWFtcyB0byBzaG93IHRoZW0gYWxsLiIpOwogaW50IFNlbGVjdGVkU3RyZWFtKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NlbGVjdGVkX3N0cmVhbSk7CiB9CiAKLURFRklO
RV9pbnQobnVtX3NwYXRpYWxfbGF5ZXJzLCAxLCAiTnVtYmVyIG9mIHNwYXRpYWwgbGF5ZXJzIHRv
IHVzZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KG51bV9zcGF0aWFsX2xheWVycywgMSwgIk51bWJl
ciBvZiBzcGF0aWFsIGxheWVycyB0byB1c2UuIik7CiBpbnQgTnVtU3BhdGlhbExheWVycygpIHsK
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19udW1fc3BhdGlhbF9sYXllcnMpOwogfQog
Ci1ERUZJTkVfaW50KGludGVyX2xheWVyX3ByZWQsCi0gICAgICAgICAgIDAsCi0gICAgICAgICAg
ICJJbnRlci1sYXllciBwcmVkaWN0aW9uIG1vZGUuICIKLSAgICAgICAgICAgIjAgLSBlbmFibGVk
LCAxIC0gZGlzYWJsZWQsIDIgLSBlbmFibGVkIG9ubHkgZm9yIGtleSBwaWN0dXJlcy4iKTsKK1dF
QlJUQ19ERUZJTkVfaW50KAorICAgIGludGVyX2xheWVyX3ByZWQsCisgICAgMCwKKyAgICAiSW50
ZXItbGF5ZXIgcHJlZGljdGlvbiBtb2RlLiAiCisgICAgIjAgLSBlbmFibGVkLCAxIC0gZGlzYWJs
ZWQsIDIgLSBlbmFibGVkIG9ubHkgZm9yIGtleSBwaWN0dXJlcy4iKTsKIEludGVyTGF5ZXJQcmVk
TW9kZSBJbnRlckxheWVyUHJlZCgpIHsKICAgaWYgKEZMQUdfaW50ZXJfbGF5ZXJfcHJlZCA9PSAw
KSB7CiAgICAgcmV0dXJuIEludGVyTGF5ZXJQcmVkTW9kZTo6a09uOwpAQCAtMTczLDU4ICsxNzgs
NjUgQEAgSW50ZXJMYXllclByZWRNb2RlIEludGVyTGF5ZXJQcmVkKCkgewogICB9CiB9CiAKLURF
RklORV9pbnQoc2VsZWN0ZWRfc2wsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiU3BhdGlh
bCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2FibGUgZmlsdGVyaW5nLiIpOwor
V0VCUlRDX0RFRklORV9pbnQoc2VsZWN0ZWRfc2wsCisgICAgICAgICAgICAgICAgICAtMSwKKyAg
ICAgICAgICAgICAgICAgICJTcGF0aWFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZS4gLTEgdG8g
ZGlzYWJsZSBmaWx0ZXJpbmcuIik7CiBpbnQgU2VsZWN0ZWRTTCgpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4oRkxBR19zZWxlY3RlZF9zbCk7CiB9CiAKLURFRklORV9zdHJpbmcoc3RyZWFt
MCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJDb21tYSBzZXBhcmF0ZWQgdmFs
dWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHN0cmVhbSAjMC4iKTsKK1dFQlJUQ19ERUZJ
TkVfc3RyaW5nKAorICAgIHN0cmVhbTAsCisgICAgIiIsCisgICAgIkNvbW1hIHNlcGFyYXRlZCB2
YWx1ZXMgZGVzY3JpYmluZyBWaWRlb1N0cmVhbSBmb3Igc3RyZWFtICMwLiIpOwogc3RkOjpzdHJp
bmcgU3RyZWFtMCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3N0
cmVhbTApOwogfQogCi1ERUZJTkVfc3RyaW5nKHN0cmVhbTEsCi0gICAgICAgICAgICAgICIiLAot
ICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFZpZGVvU3Ry
ZWFtIGZvciBzdHJlYW0gIzEuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzdHJlYW0x
LAorICAgICIiLAorICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9T
dHJlYW0gZm9yIHN0cmVhbSAjMS4iKTsKIHN0ZDo6c3RyaW5nIFN0cmVhbTEoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zdHJlYW0xKTsKIH0KIAotREVGSU5FX3N0
cmluZyhzbDAsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJh
dGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3IgbGF5ZXIgIzAuIik7CitXRUJS
VENfREVGSU5FX3N0cmluZygKKyAgICBzbDAsCisgICAgIiIsCisgICAgIkNvbW1hIHNlcGFyYXRl
ZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxheWVyICMwLiIpOwogc3RkOjpz
dHJpbmcgU0wwKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc2ww
KTsKIH0KIAotREVGSU5FX3N0cmluZyhzbDEsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAg
ICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3Ig
bGF5ZXIgIzEuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzbDEsCisgICAgIiIsCisg
ICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxh
eWVyICMxLiIpOwogc3RkOjpzdHJpbmcgU0wxKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3Rk
OjpzdHJpbmc+KEZMQUdfc2wxKTsKIH0KIAotREVGSU5FX3N0cmluZyhlbmNvZGVkX2ZyYW1lX3Bh
dGgsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiVGhlIGJhc2UgcGF0aCBmb3Ig
ZW5jb2RlZCBmcmFtZSBsb2dzLiBDcmVhdGVkIGZpbGVzIHdpbGwgaGF2ZSAiCi0gICAgICAgICAg
ICAgICJ0aGUgZm9ybSA8ZW5jb2RlZF9mcmFtZV9wYXRoPi48bj4uKHJlY3Z8c2VuZC48bT4pLml2
ZiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgZW5jb2RlZF9mcmFtZV9wYXRoLAorICAg
ICIiLAorICAgICJUaGUgYmFzZSBwYXRoIGZvciBlbmNvZGVkIGZyYW1lIGxvZ3MuIENyZWF0ZWQg
ZmlsZXMgd2lsbCBoYXZlICIKKyAgICAidGhlIGZvcm0gPGVuY29kZWRfZnJhbWVfcGF0aD4uPG4+
LihyZWN2fHNlbmQuPG0+KS5pdmYiKTsKIHN0ZDo6c3RyaW5nIEVuY29kZWRGcmFtZVBhdGgoKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19lbmNvZGVkX2ZyYW1lX3Bh
dGgpOwogfQogCi1ERUZJTkVfYm9vbChsb2dzLCBmYWxzZSwgInByaW50IGxvZ3MgdG8gc3RkZXJy
Iik7CitXRUJSVENfREVGSU5FX2Jvb2wobG9ncywgZmFsc2UsICJwcmludCBsb2dzIHRvIHN0ZGVy
ciIpOwogCi1ERUZJTkVfYm9vbChzZW5kX3NpZGVfYndlLCB0cnVlLCAiVXNlIHNlbmQtc2lkZSBi
YW5kd2lkdGggZXN0aW1hdGlvbiIpOworV0VCUlRDX0RFRklORV9ib29sKHNlbmRfc2lkZV9id2Us
IHRydWUsICJVc2Ugc2VuZC1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0aW9uIik7CiAKLURFRklORV9i
b29sKGdlbmVyaWNfZGVzY3JpcHRvciwgZmFsc2UsICJVc2UgdGhlIGdlbmVyaWMgZnJhbWUgZGVz
Y3JpcHRvci4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChnZW5lcmljX2Rlc2NyaXB0b3IsCisgICAg
ICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlVzZSB0aGUgZ2VuZXJp
YyBmcmFtZSBkZXNjcmlwdG9yLiIpOwogCi1ERUZJTkVfYm9vbChhbGxvd19yZW9yZGVyaW5nLCBm
YWxzZSwgIkFsbG93IHBhY2tldCByZW9yZGVyaW5nIHRvIG9jY3VyIik7CitXRUJSVENfREVGSU5F
X2Jvb2woYWxsb3dfcmVvcmRlcmluZywgZmFsc2UsICJBbGxvdyBwYWNrZXQgcmVvcmRlcmluZyB0
byBvY2N1ciIpOwogCi1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAg
Zm9yY2VfZmllbGR0cmlhbHMsCiAgICAgIiIsCiAgICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4
cGVyaW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgpAQCAtMjMzLDEy
ICsyNDUsMTQgQEAgREVGSU5FX3N0cmluZygKICAgICAidHJpYWxzIGFyZSBzZXBhcmF0ZWQgYnkg
XCIvXCIiKTsKIAogLy8gU2NyZWVuc2hhcmUtc3BlY2lmaWMgZmxhZ3MuCi1ERUZJTkVfaW50KG1p
bl90cmFuc21pdF9iaXRyYXRlLCA0MDAsICJNaW4gdHJhbnNtaXQgYml0cmF0ZSBpbmNsLiBwYWRk
aW5nLiIpOworV0VCUlRDX0RFRklORV9pbnQobWluX3RyYW5zbWl0X2JpdHJhdGUsCisgICAgICAg
ICAgICAgICAgICA0MDAsCisgICAgICAgICAgICAgICAgICAiTWluIHRyYW5zbWl0IGJpdHJhdGUg
aW5jbC4gcGFkZGluZy4iKTsKIGludCBNaW5UcmFuc21pdEJpdHJhdGVLYnBzKCkgewogICByZXR1
cm4gRkxBR19taW5fdHJhbnNtaXRfYml0cmF0ZTsKIH0KIAotREVGSU5FX2Jvb2woCitXRUJSVENf
REVGSU5FX2Jvb2woCiAgICAgZ2VuZXJhdGVfc2xpZGVzLAogICAgIGZhbHNlLAogICAgICJXaGV0
aGVyIHRvIHVzZSByYW5kb21seSBnZW5lcmF0ZWQgc2xpZGVzIG9yIHJlYWQgdGhlbSBmcm9tIGZp
bGVzLiIpOwpAQCAtMjQ2LDE0ICsyNjAsMTQgQEAgYm9vbCBHZW5lcmF0ZVNsaWRlcygpIHsKICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19nZW5lcmF0ZV9zbGlkZXMpOwogfQogCi1ERUZJ
TkVfaW50KHNsaWRlX2NoYW5nZV9pbnRlcnZhbCwKLSAgICAgICAgICAgMTAsCi0gICAgICAgICAg
ICJJbnRlcnZhbCAoaW4gc2Vjb25kcykgYmV0d2VlbiBzaW11bGF0ZWQgc2xpZGUgY2hhbmdlcy4i
KTsKK1dFQlJUQ19ERUZJTkVfaW50KHNsaWRlX2NoYW5nZV9pbnRlcnZhbCwKKyAgICAgICAgICAg
ICAgICAgIDEwLAorICAgICAgICAgICAgICAgICAgIkludGVydmFsIChpbiBzZWNvbmRzKSBiZXR3
ZWVuIHNpbXVsYXRlZCBzbGlkZSBjaGFuZ2VzLiIpOwogaW50IFNsaWRlQ2hhbmdlSW50ZXJ2YWwo
KSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2xpZGVfY2hhbmdlX2ludGVydmFs
KTsKIH0KIAotREVGSU5FX2ludCgKK1dFQlJUQ19ERUZJTkVfaW50KAogICAgIHNjcm9sbF9kdXJh
dGlvbiwKICAgICAwLAogICAgICJEdXJhdGlvbiAoaW4gc2Vjb25kcykgZHVyaW5nIHdoaWNoIGEg
c2xpZGUgd2lsbCBiZSBzY3JvbGxlZCBpbnRvIHBsYWNlLiIpOwpAQCAtMjYxLDkgKzI3NSwxMCBA
QCBpbnQgU2Nyb2xsRHVyYXRpb24oKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdf
c2Nyb2xsX2R1cmF0aW9uKTsKIH0KIAotREVGSU5FX3N0cmluZyhzbGlkZXMsCi0gICAgICAgICAg
ICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgKi55dXYgZmls
ZXMgdG8gZGlzcGxheSBhcyBzbGlkZXMuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBz
bGlkZXMsCisgICAgIiIsCisgICAgIkNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICoueXV2IGZpbGVz
IHRvIGRpc3BsYXkgYXMgc2xpZGVzLiIpOwogc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IFNsaWRl
cygpIHsKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHNsaWRlczsKICAgc3RkOjpzdHJpbmcg
c2xpZGVzX2xpc3QgPSBGTEFHX3NsaWRlczsKQEAgLTI3MSwxMiArMjg2LDEyIEBAIHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiBTbGlkZXMoKSB7CiAgIHJldHVybiBzbGlkZXM7CiB9CiAKLURFRklO
RV9ib29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklO
RV9ib29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOwogCiB9ICAvLyBuYW1l
c3BhY2UgZmxhZ3MKIAogdm9pZCBMb29wYmFjaygpIHsKLSAgRGVmYXVsdE5ldHdvcmtTaW11bGF0
aW9uQ29uZmlnIHBpcGVfY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIHBp
cGVfY29uZmlnOwogICBwaXBlX2NvbmZpZy5sb3NzX3BlcmNlbnQgPSBmbGFnczo6TG9zc1BlcmNl
bnQoKTsKICAgcGlwZV9jb25maWcubGlua19jYXBhY2l0eV9rYnBzID0gZmxhZ3M6OkxpbmtDYXBh
Y2l0eUticHMoKTsKICAgcGlwZV9jb25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMgPSBmbGFnczo6
UXVldWVTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9zZW5kX2RlbGF5X3N0YXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX2RlbGF5X3N0YXRzLmgKaW5kZXggMzMz
Nzg5OTA2OWEwMDYwOTc2NjAwMzBiYTAwNWRlY2ZkYTAyYTU3Ni4uYjQ0NTE2YjI4NTU0MWFiYTA4
MWYxMTBiMzE2ZmUyMmRlOWMwYmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9kZWxheV9zdGF0cy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfZGVsYXlfc3Rh
dHMuaApAQCAtMTYsNyArMTYsNiBAQAogI2luY2x1ZGUgPHNldD4KIAogI2luY2x1ZGUgImNhbGwv
dmlkZW9fc2VuZF9zdHJlYW0uaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElO
VChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX3N0YXRpc3RpY3NfcHJveHkuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX3N0
YXRpc3RpY3NfcHJveHkuY2MKaW5kZXggOTgzOWVkN2EzYjcwOTRiZGZmZTc0ZGU4MzRkMWY3NzMx
NWVjYmFmYi4uMjRlOTY0MTk0NzE0NTAzNzQ4ZjIwNTUzMzFjY2I1OTU5N2Y3ZDFiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2Vu
ZF9zdGF0aXN0aWNzX3Byb3h5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGljc19wcm94eS5jYwpAQCAtMTUsNyArMTUs
NiBAQAogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaW5jbHVkZSAi
Y29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKQEAg
LTgyMywxMCArODIyLDEzIEBAIHZvaWQgU2VuZFN0YXRpc3RpY3NQcm94eTo6VXBkYXRlRW5jb2Rl
ckZhbGxiYWNrU3RhdHMoCiAKICAgY29uc3QgaW50NjRfdCBub3dfbXMgPSBjbG9ja18tPlRpbWVJ
bk1pbGxpc2Vjb25kcygpOwogICBib29sIGlzX2FjdGl2ZSA9IGZhbGxiYWNrX2luZm8tPmlzX2Fj
dGl2ZTsKLSAgaWYgKGNvZGVjX2luZm8tPmNvZGVjX25hbWUgIT0gc3RhdHNfLmVuY29kZXJfaW1w
bGVtZW50YXRpb25fbmFtZSkgeworICBpZiAoZW5jb2Rlcl9jaGFuZ2VkXykgewogICAgIC8vIElt
cGxlbWVudGF0aW9uIGNoYW5nZWQuCi0gICAgaXNfYWN0aXZlID0gc3RyY21wKGNvZGVjX2luZm8t
PmNvZGVjX25hbWUsIGtWcDhTd0NvZGVjTmFtZSkgPT0gMDsKLSAgICBpZiAoIWlzX2FjdGl2ZSAm
JiBzdGF0c18uZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbl9uYW1lICE9IGtWcDhTd0NvZGVjTmFtZSkg
eworICAgIGNvbnN0IGJvb2wgbGFzdF93YXNfdnA4X3NvZnR3YXJlID0KKyAgICAgICAgZW5jb2Rl
cl9jaGFuZ2VkXy0+cHJldmlvdXNfZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbiA9PSBrVnA4U3dDb2Rl
Y05hbWU7CisgICAgaXNfYWN0aXZlID0gZW5jb2Rlcl9jaGFuZ2VkXy0+bmV3X2VuY29kZXJfaW1w
bGVtZW50YXRpb24gPT0ga1ZwOFN3Q29kZWNOYW1lOworICAgIGVuY29kZXJfY2hhbmdlZF8ucmVz
ZXQoKTsKKyAgICBpZiAoIWlzX2FjdGl2ZSAmJiAhbGFzdF93YXNfdnA4X3NvZnR3YXJlKSB7CiAg
ICAgICAvLyBGaXJzdCBvciBub3QgYSBWUDggU1cgY2hhbmdlLCB1cGRhdGUgc3RhdHMgb24gbmV4
dCBjYWxsLgogICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg2NSw3ICs4NjcsNyBAQCB2b2lkIFNl
bmRTdGF0aXN0aWNzUHJveHk6OlVwZGF0ZUZhbGxiYWNrRGlzYWJsZWRTdGF0cygKICAgfQogCiAg
IGlmICghSXNGb3JjZWRGYWxsYmFja1Bvc3NpYmxlKGNvZGVjX2luZm8sIHNpbXVsY2FzdF9pbmRl
eCkgfHwKLSAgICAgIHN0cmNtcChjb2RlY19pbmZvLT5jb2RlY19uYW1lLCBrVnA4U3dDb2RlY05h
bWUpID09IDApIHsKKyAgICAgIHN0YXRzXy5lbmNvZGVyX2ltcGxlbWVudGF0aW9uX25hbWUgPT0g
a1ZwOFN3Q29kZWNOYW1lKSB7CiAgICAgdW1hX2NvbnRhaW5lcl8tPmZhbGxiYWNrX2luZm9fZGlz
YWJsZWRfLmlzX3Bvc3NpYmxlID0gZmFsc2U7CiAgICAgcmV0dXJuOwogICB9CkBAIC04OTUsMTMg
Kzg5Nyw5IEBAIHZvaWQgU2VuZFN0YXRpc3RpY3NQcm94eTo6T25TZW5kRW5jb2RlZEltYWdlKAog
ICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7CiAgICsrc3RhdHNfLmZyYW1lc19lbmNvZGVk
OwogICBpZiAoY29kZWNfaW5mbykgewotICAgIGlmIChjb2RlY19pbmZvLT5jb2RlY19uYW1lKSB7
Ci0gICAgICBVcGRhdGVFbmNvZGVyRmFsbGJhY2tTdGF0cygKLSAgICAgICAgICBjb2RlY19pbmZv
LAotICAgICAgICAgIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRXaWR0aCAqIGVuY29kZWRfaW1hZ2Uu
X2VuY29kZWRIZWlnaHQsCi0gICAgICAgICAgc2ltdWxjYXN0X2lkeCk7Ci0gICAgICBzdGF0c18u
ZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbl9uYW1lID0gY29kZWNfaW5mby0+Y29kZWNfbmFtZTsKLSAg
ICB9CisgICAgVXBkYXRlRW5jb2RlckZhbGxiYWNrU3RhdHMoCisgICAgICAgIGNvZGVjX2luZm8s
IGVuY29kZWRfaW1hZ2UuX2VuY29kZWRXaWR0aCAqIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRIZWln
aHQsCisgICAgICAgIHNpbXVsY2FzdF9pZHgpOwogICB9CiAKICAgaWYgKHN0YXRpY19jYXN0PHNp
emVfdD4oc2ltdWxjYXN0X2lkeCkgPj0gcnRwX2NvbmZpZ18uc3NyY3Muc2l6ZSgpKSB7CkBAIC05
ODEsNiArOTc5LDE0IEBAIHZvaWQgU2VuZFN0YXRpc3RpY3NQcm94eTo6T25TZW5kRW5jb2RlZElt
YWdlKAogICB9CiB9CiAKK3ZvaWQgU2VuZFN0YXRpc3RpY3NQcm94eTo6T25FbmNvZGVySW1wbGVt
ZW50YXRpb25DaGFuZ2VkKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbXBsZW1lbnRhdGlvbl9u
YW1lKSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfKTsKKyAgZW5jb2Rlcl9jaGFuZ2Vk
XyA9IEVuY29kZXJDaGFuZ2VFdmVudHtzdGF0c18uZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbl9uYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9u
X25hbWV9OworICBzdGF0c18uZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbl9uYW1lID0gaW1wbGVtZW50
YXRpb25fbmFtZTsKK30KKwogaW50IFNlbmRTdGF0aXN0aWNzUHJveHk6OkdldElucHV0RnJhbWVS
YXRlKCkgY29uc3QgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7CiAgIHJldHVybiBy
b3VuZCh1bWFfY29udGFpbmVyXy0+aW5wdXRfZnJhbWVfcmF0ZV90cmFja2VyXy5Db21wdXRlUmF0
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGljc19wcm94eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmgKaW5kZXgg
YjU4NjhkMDg5MDcyN2YwNTI2MGU5MDMwYjQ1NzA5MDlmZDJmNDE4Ni4uNzMxNmYzYjU1YWVjMGQz
NGZkNWY1YWEwOTJlMGYxOWNhODg5YmM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9z
dGF0aXN0aWNzX3Byb3h5LmgKQEAgLTE4LDcgKzE4LDYgQEAKIAogI2luY2x1ZGUgImFwaS92aWRl
by92aWRlb19zdHJlYW1fZW5jb2Rlcl9vYnNlcnZlci5oIgogI2luY2x1ZGUgImNhbGwvdmlkZW9f
c2VuZF9zdHJlYW0uaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWls
ZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9f
Y29kZWNfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVk
ZS92aWRlb19jb2RpbmdfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2Vj
dGlvbi5oIgpAQCAtNTMsNiArNTIsMTAgQEAgY2xhc3MgU2VuZFN0YXRpc3RpY3NQcm94eSA6IHB1
YmxpYyBWaWRlb1N0cmVhbUVuY29kZXJPYnNlcnZlciwKIAogICB2b2lkIE9uU2VuZEVuY29kZWRJ
bWFnZShjb25zdCBFbmNvZGVkSW1hZ2UmIGVuY29kZWRfaW1hZ2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19pbmZvKSBvdmVycmlkZTsK
KworICB2b2lkIE9uRW5jb2RlckltcGxlbWVudGF0aW9uQ2hhbmdlZCgKKyAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBpbXBsZW1lbnRhdGlvbl9uYW1lKSBvdmVycmlkZTsKKwogICAvLyBVc2VkIHRv
IHVwZGF0ZSBpbmNvbWluZyBmcmFtZSByYXRlLgogICB2b2lkIE9uSW5jb21pbmdGcmFtZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRlOwogCkBAIC0yNDEsNiArMjQ0LDE0IEBAIGNsYXNz
IFNlbmRTdGF0aXN0aWNzUHJveHkgOiBwdWJsaWMgVmlkZW9TdHJlYW1FbmNvZGVyT2JzZXJ2ZXIs
CiAKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9vdXRsaWVyX3RpbWVzdGFtcF8gUlRD
X0dVQVJERURfQlkoY3JpdF8pOwogCisgIHN0cnVjdCBFbmNvZGVyQ2hhbmdlRXZlbnQgeworICAg
IHN0ZDo6c3RyaW5nIHByZXZpb3VzX2VuY29kZXJfaW1wbGVtZW50YXRpb247CisgICAgc3RkOjpz
dHJpbmcgbmV3X2VuY29kZXJfaW1wbGVtZW50YXRpb247CisgIH07CisgIC8vIFN0b3JlcyB0aGUg
bGFzdCBjaGFuZ2UgaW4gZW5jb2RlciBpbXBsZW1lbnRhdGlvbiBpbiBhbiBvcHRpb25hbCwgc28g
dGhhdAorICAvLyB0aGUgZXZlbnQgY2FuIGJlIGNvbnN1bWVkLgorICBhYnNsOjpvcHRpb25hbDxF
bmNvZGVyQ2hhbmdlRXZlbnQ+IGVuY29kZXJfY2hhbmdlZF87CisKICAgLy8gQ29udGFpbnMgc3Rh
dHMgdXNlZCBmb3IgVU1BIGhpc3RvZ3JhbXMuIFRoZXNlIHN0YXRzIHdpbGwgYmUgcmVzZXQgaWYK
ICAgLy8gY29udGVudCB0eXBlIGNoYW5nZXMgYmV0d2VlbiByZWFsLXRpbWUgdmlkZW8gYW5kIHNj
cmVlbnNoYXJlLCBzaW5jZSB0aGVzZQogICAvLyB3aWxsIGJlIHJlcG9ydGVkIHNlcGFyYXRlbHku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92
aWRlby9zZW5kX3N0YXRpc3RpY3NfcHJveHlfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX3N0YXRpc3RpY3NfcHJveHlfdW5p
dHRlc3QuY2MKaW5kZXggM2QyN2M3MTJjNmI2YTM3MjdmOWY5OTNiZGIxNmQxYTMxMmRhZjQ0My4u
NTg2ZDU3ZmIyODQ4ODBmZmYxNzMzZWM5ZTdjODIwNTViNDhmMzM5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0
aWNzX3Byb3h5X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGljc19wcm94eV91bml0dGVzdC5jYwpAQCAt
MjE2NywxMyArMjE2Nyw5IEBAIFRFU1RfRihTZW5kU3RhdGlzdGljc1Byb3h5VGVzdCwgRmVjQml0
cmF0ZU5vdFJlcG9ydGVkV2hlbk5vdEVuYWJsZWQpIHsKIH0KIAogVEVTVF9GKFNlbmRTdGF0aXN0
aWNzUHJveHlUZXN0LCBHZXRTdGF0c1JlcG9ydHNFbmNvZGVySW1wbGVtZW50YXRpb25OYW1lKSB7
Ci0gIGNvbnN0IGNoYXIqIGtOYW1lID0gImVuY29kZXJOYW1lIjsKLSAgRW5jb2RlZEltYWdlIGVu
Y29kZWRfaW1hZ2U7Ci0gIENvZGVjU3BlY2lmaWNJbmZvIGNvZGVjX2luZm87Ci0gIGNvZGVjX2lu
Zm8uY29kZWNfbmFtZSA9IGtOYW1lOwotICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25TZW5kRW5jb2Rl
ZEltYWdlKGVuY29kZWRfaW1hZ2UsICZjb2RlY19pbmZvKTsKLSAgRVhQRUNUX1NUUkVRKAotICAg
ICAga05hbWUsIHN0YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygpLmVuY29kZXJfaW1wbGVtZW50
YXRpb25fbmFtZS5jX3N0cigpKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga05hbWUgPSAiZW5jb2Rl
ck5hbWUiOworICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25FbmNvZGVySW1wbGVtZW50YXRpb25DaGFu
Z2VkKGtOYW1lKTsKKyAgRVhQRUNUX0VRKGtOYW1lLCBzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3Rh
dHMoKS5lbmNvZGVyX2ltcGxlbWVudGF0aW9uX25hbWUpOwogfQogCiBURVNUX0YoU2VuZFN0YXRp
c3RpY3NQcm94eVRlc3QsIFZwOVN2Y0xvd1NwYXRpYWxMYXllckRvZXNOb3RVcGRhdGVSZXNvbHV0
aW9uKSB7CkBAIC0yMjE5LDcgKzIyMTUsNiBAQCBjbGFzcyBGb3JjZWRGYWxsYmFja1Rlc3QgOiBw
dWJsaWMgU2VuZFN0YXRpc3RpY3NQcm94eVRlc3QgewogICAgICAgOiBTZW5kU3RhdGlzdGljc1By
b3h5VGVzdChmaWVsZF90cmlhbHMpIHsKICAgICBjb2RlY19pbmZvXy5jb2RlY1R5cGUgPSBrVmlk
ZW9Db2RlY1ZQODsKICAgICBjb2RlY19pbmZvXy5jb2RlY1NwZWNpZmljLlZQOC50ZW1wb3JhbElk
eCA9IDA7Ci0gICAgY29kZWNfaW5mb18uY29kZWNfbmFtZSA9ICJmYWtlX2NvZGVjIjsKICAgICBl
bmNvZGVkX2ltYWdlXy5fZW5jb2RlZFdpZHRoID0ga1dpZHRoOwogICAgIGVuY29kZWRfaW1hZ2Vf
Ll9lbmNvZGVkSGVpZ2h0ID0ga0hlaWdodDsKICAgICBlbmNvZGVkX2ltYWdlXy5TZXRTcGF0aWFs
SW5kZXgoMCk7CkBAIC0yMjI5LDYgKzIyMjQsOCBAQCBjbGFzcyBGb3JjZWRGYWxsYmFja1Rlc3Qg
OiBwdWJsaWMgU2VuZFN0YXRpc3RpY3NQcm94eVRlc3QgewogCiAgcHJvdGVjdGVkOgogICB2b2lk
IEluc2VydEVuY29kZWRGcmFtZXMoaW50IG51bV9mcmFtZXMsIGludCBpbnRlcnZhbF9tcykgewor
ICAgIHN0YXRpc3RpY3NfcHJveHlfLT5PbkVuY29kZXJJbXBsZW1lbnRhdGlvbkNoYW5nZWQoY29k
ZWNfbmFtZV8pOworCiAgICAgLy8gRmlyc3QgZnJhbWUgaXMgbm90IHVwZGF0aW5nIHN0YXRzLCBp
bnNlcnQgaW5pdGlhbCBmcmFtZS4KICAgICBpZiAoc3RhdGlzdGljc19wcm94eV8tPkdldFN0YXRz
KCkuZnJhbWVzX2VuY29kZWQgPT0gMCkgewogICAgICAgc3RhdGlzdGljc19wcm94eV8tPk9uU2Vu
ZEVuY29kZWRJbWFnZShlbmNvZGVkX2ltYWdlXywgJmNvZGVjX2luZm9fKTsKQEAgLTIyNDMsNiAr
MjI0MCw3IEBAIGNsYXNzIEZvcmNlZEZhbGxiYWNrVGVzdCA6IHB1YmxpYyBTZW5kU3RhdGlzdGlj
c1Byb3h5VGVzdCB7CiAKICAgRW5jb2RlZEltYWdlIGVuY29kZWRfaW1hZ2VfOwogICBDb2RlY1Nw
ZWNpZmljSW5mbyBjb2RlY19pbmZvXzsKKyAgc3RkOjpzdHJpbmcgY29kZWNfbmFtZV87CiAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGtQcmVmaXggPSAiV2ViUlRDLlZpZGVvLkVuY29kZXIuRm9yY2VkU3ci
OwogICBjb25zdCBpbnQga0ZyYW1lSW50ZXJ2YWxNcyA9IDEwMDA7CiAgIGNvbnN0IGludCBrTWlu
RnJhbWVzID0gMjA7ICAvLyBNaW4gcnVuIHRpbWUgMjAgc2VjLgpAQCAtMjMyMSw3ICsyMzE5LDcg
QEAgVEVTVF9GKEZvcmNlZEZhbGxiYWNrRW5hYmxlZCwgRW50ZXJlZExvd1Jlc29sdXRpb25Ob3RT
ZXRJZk5vdExpYnZweCkgewogfQogCiBURVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFibGVkLCBFbnRl
cmVkTG93UmVzb2x1dGlvblNldElmTGlidnB4KSB7Ci0gIGNvZGVjX2luZm9fLmNvZGVjX25hbWUg
PSAibGlidnB4IjsKKyAgY29kZWNfbmFtZV8gPSAibGlidnB4IjsKICAgSW5zZXJ0RW5jb2RlZEZy
YW1lcygxLCBrRnJhbWVJbnRlcnZhbE1zKTsKICAgRVhQRUNUX1RSVUUoc3RhdGlzdGljc19wcm94
eV8tPkdldFN0YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwogfQpAQCAtMjMzMyw3
ICsyMzMxLDcgQEAgVEVTVF9GKEZvcmNlZEZhbGxiYWNrRGlzYWJsZWQsIEVudGVyZWRMb3dSZXNv
bHV0aW9uTm90U2V0SWZBYm92ZU1heFBpeGVscykgewogfQogCiBURVNUX0YoRm9yY2VkRmFsbGJh
Y2tEaXNhYmxlZCwgRW50ZXJlZExvd1Jlc29sdXRpb25Ob3RTZXRJZkxpYnZweCkgewotICBjb2Rl
Y19pbmZvXy5jb2RlY19uYW1lID0gImxpYnZweCI7CisgIGNvZGVjX25hbWVfID0gImxpYnZweCI7
CiAgIEluc2VydEVuY29kZWRGcmFtZXMoMSwga0ZyYW1lSW50ZXJ2YWxNcyk7CiAgIEVYUEVDVF9G
QUxTRShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1
dGlvbik7CiB9CkBAIC0yMzUxLDcgKzIzNDksNyBAQCBURVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFi
bGVkLCBPbmVGYWxsYmFja0V2ZW50KSB7CiAgIEVYUEVDVF9GQUxTRShzdGF0aXN0aWNzX3Byb3h5
Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7CiAgIEluc2VydEVuY29k
ZWRGcmFtZXMoMTUsIDEwMDApOwogICBFWFBFQ1RfRkFMU0Uoc3RhdGlzdGljc19wcm94eV8tPkdl
dFN0YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwotICBjb2RlY19pbmZvXy5jb2Rl
Y19uYW1lID0gImxpYnZweCI7CisgIGNvZGVjX25hbWVfID0gImxpYnZweCI7CiAgIEluc2VydEVu
Y29kZWRGcmFtZXMoNSwgMTAwMCk7CiAgIEVYUEVDVF9UUlVFKHN0YXRpc3RpY3NfcHJveHlfLT5H
ZXRTdGF0cygpLmhhc19lbnRlcmVkX2xvd19yZXNvbHV0aW9uKTsKIApAQCAtMjM2OSwxOCArMjM2
NywxOCBAQCBURVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFibGVkLCBUaHJlZUZhbGxiYWNrRXZlbnRz
KSB7CiAgIC8vIFRocmVlIGNoYW5nZXMuIFZpZGVvOiA2MDAwMCBtcywgZmFsbGJhY2s6IDE1MDAw
IG1zICgyNSUpLgogICBJbnNlcnRFbmNvZGVkRnJhbWVzKDEwLCAxMDAwKTsKICAgRVhQRUNUX0ZB
TFNFKHN0YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygpLmhhc19lbnRlcmVkX2xvd19yZXNvbHV0
aW9uKTsKLSAgY29kZWNfaW5mb18uY29kZWNfbmFtZSA9ICJsaWJ2cHgiOworICBjb2RlY19uYW1l
XyA9ICJsaWJ2cHgiOwogICBJbnNlcnRFbmNvZGVkRnJhbWVzKDE1LCA1MDApOwogICBFWFBFQ1Rf
VFJVRShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1
dGlvbik7Ci0gIGNvZGVjX2luZm9fLmNvZGVjX25hbWUgPSAibm90bGlidnB4IjsKKyAgY29kZWNf
bmFtZV8gPSAibm90bGlidnB4IjsKICAgSW5zZXJ0RW5jb2RlZEZyYW1lcygyMCwgMTAwMCk7CiAg
IEluc2VydEVuY29kZWRGcmFtZXMoMywga01heEZyYW1lRGlmZk1zKTsgIC8vIFNob3VsZCBub3Qg
YmUgaW5jbHVkZWQuCiAgIEluc2VydEVuY29kZWRGcmFtZXMoMTAsIDEwMDApOwogICBFWFBFQ1Rf
VFJVRShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1
dGlvbik7Ci0gIGNvZGVjX2luZm9fLmNvZGVjX25hbWUgPSAibm90bGlidnB4MiI7CisgIGNvZGVj
X25hbWVfID0gIm5vdGxpYnZweDIiOwogICBJbnNlcnRFbmNvZGVkRnJhbWVzKDEwLCA1MDApOwog
ICBFWFBFQ1RfVFJVRShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9s
b3dfcmVzb2x1dGlvbik7Ci0gIGNvZGVjX2luZm9fLmNvZGVjX25hbWUgPSAibGlidnB4IjsKKyAg
Y29kZWNfbmFtZV8gPSAibGlidnB4IjsKICAgSW5zZXJ0RW5jb2RlZEZyYW1lcygxNSwgNTAwKTsK
ICAgRVhQRUNUX1RSVUUoc3RhdGlzdGljc19wcm94eV8tPkdldFN0YXRzKCkuaGFzX2VudGVyZWRf
bG93X3Jlc29sdXRpb24pOwogCkBAIC0yMzkzLDcgKzIzOTEsNyBAQCBURVNUX0YoRm9yY2VkRmFs
bGJhY2tFbmFibGVkLCBUaHJlZUZhbGxiYWNrRXZlbnRzKSB7CiAKIFRFU1RfRihGb3JjZWRGYWxs
YmFja0VuYWJsZWQsIE5vRmFsbGJhY2tJZkFib3ZlTWF4UGl4ZWxzKSB7CiAgIGVuY29kZWRfaW1h
Z2VfLl9lbmNvZGVkV2lkdGggPSBrV2lkdGggKyAxOwotICBjb2RlY19pbmZvXy5jb2RlY19uYW1l
ID0gImxpYnZweCI7CisgIGNvZGVjX25hbWVfID0gImxpYnZweCI7CiAgIEluc2VydEVuY29kZWRG
cmFtZXMoa01pbkZyYW1lcywga0ZyYW1lSW50ZXJ2YWxNcyk7CiAKICAgRVhQRUNUX0ZBTFNFKHN0
YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygpLmhhc19lbnRlcmVkX2xvd19yZXNvbHV0aW9uKTsK
QEAgLTI0MDQsNyArMjQwMiw3IEBAIFRFU1RfRihGb3JjZWRGYWxsYmFja0VuYWJsZWQsIE5vRmFs
bGJhY2tJZkFib3ZlTWF4UGl4ZWxzKSB7CiAKIFRFU1RfRihGb3JjZWRGYWxsYmFja0VuYWJsZWQs
IEZhbGxiYWNrSWZBdE1heFBpeGVscykgewogICBlbmNvZGVkX2ltYWdlXy5fZW5jb2RlZFdpZHRo
ID0ga1dpZHRoOwotICBjb2RlY19pbmZvXy5jb2RlY19uYW1lID0gImxpYnZweCI7CisgIGNvZGVj
X25hbWVfID0gImxpYnZweCI7CiAgIEluc2VydEVuY29kZWRGcmFtZXMoa01pbkZyYW1lcywga0Zy
YW1lSW50ZXJ2YWxNcyk7CiAKICAgRVhQRUNUX1RSVUUoc3RhdGlzdGljc19wcm94eV8tPkdldFN0
YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc3ZfbG9vcGJhY2suY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zdl9sb29wYmFj
ay5jYwppbmRleCBmZDcyYzk5OTEyNGQxNTVhNWU0MDRhOWQ2YzIyNjI0MTQ5MTE4ZDFiLi4xZmY0
OTU2Y2EyOTUwY2ViZjE3OTcyMzA0NGQ5YWVkMTAwM2M5NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zdl9sb29wYmFjay5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zdl9s
b29wYmFjay5jYwpAQCAtMTIsNyArMTIsNiBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvZmxhZ3Mu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3Ry
aW5nZW5jb2RlLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJp
YWwuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVz
dC5oIgpAQCAtMzQsNzMgKzMzLDc5IEBAIEludGVyTGF5ZXJQcmVkTW9kZSBJbnRUb0ludGVyTGF5
ZXJQcmVkTW9kZShpbnQgaW50ZXJfbGF5ZXJfcHJlZCkgewogfQogCiAvLyBGbGFncyBmb3Igdmlk
ZW8uCi1ERUZJTkVfaW50KHZ3aWR0aCwgNjQwLCAiVmlkZW8gd2lkdGguIik7CitXRUJSVENfREVG
SU5FX2ludCh2d2lkdGgsIDY0MCwgIlZpZGVvIHdpZHRoLiIpOwogc2l6ZV90IFZpZGVvV2lkdGgo
KSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdfdndpZHRoKTsKIH0KIAotREVG
SU5FX2ludCh2aGVpZ2h0LCA0ODAsICJWaWRlbyBoZWlnaHQuIik7CitXRUJSVENfREVGSU5FX2lu
dCh2aGVpZ2h0LCA0ODAsICJWaWRlbyBoZWlnaHQuIik7CiBzaXplX3QgVmlkZW9IZWlnaHQoKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdfdmhlaWdodCk7CiB9CiAKLURFRklO
RV9pbnQodmZwcywgMzAsICJWaWRlbyBmcmFtZXMgcGVyIHNlY29uZC4iKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KHZmcHMsIDMwLCAiVmlkZW8gZnJhbWVzIHBlciBzZWNvbmQuIik7CiBpbnQgVmlkZW9G
cHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfdmZwcyk7CiB9CiAKLURFRklO
RV9pbnQoY2FwdHVyZV9kZXZpY2VfaW5kZXgsCi0gICAgICAgICAgIDAsCi0gICAgICAgICAgICJD
YXB0dXJlIGRldmljZSB0byBzZWxlY3QgZm9yIHZpZGVvIHN0cmVhbSIpOworV0VCUlRDX0RFRklO
RV9pbnQoY2FwdHVyZV9kZXZpY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAwLAorICAgICAg
ICAgICAgICAgICAgIkNhcHR1cmUgZGV2aWNlIHRvIHNlbGVjdCBmb3IgdmlkZW8gc3RyZWFtIik7
CiBzaXplX3QgR2V0Q2FwdHVyZURldmljZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVf
dD4oRkxBR19jYXB0dXJlX2RldmljZV9pbmRleCk7CiB9CiAKLURFRklORV9pbnQodnRhcmdldF9i
aXRyYXRlLCA0MDAsICJWaWRlbyBzdHJlYW0gdGFyZ2V0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dF
QlJUQ19ERUZJTkVfaW50KHZ0YXJnZXRfYml0cmF0ZSwgNDAwLCAiVmlkZW8gc3RyZWFtIHRhcmdl
dCBiaXRyYXRlIGluIGticHMuIik7CiBpbnQgVmlkZW9UYXJnZXRCaXRyYXRlS2JwcygpIHsKICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR192dGFyZ2V0X2JpdHJhdGUpOwogfQogCi1ERUZJ
TkVfaW50KHZtaW5fYml0cmF0ZSwgMTAwLCAiVmlkZW8gc3RyZWFtIG1pbiBiaXRyYXRlIGluIGti
cHMuIik7CitXRUJSVENfREVGSU5FX2ludCh2bWluX2JpdHJhdGUsIDEwMCwgIlZpZGVvIHN0cmVh
bSBtaW4gYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IFZpZGVvTWluQml0cmF0ZUticHMoKSB7CiAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfdm1pbl9iaXRyYXRlKTsKIH0KIAotREVGSU5F
X2ludCh2bWF4X2JpdHJhdGUsIDIwMDAsICJWaWRlbyBzdHJlYW0gbWF4IGJpdHJhdGUgaW4ga2Jw
cy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZtYXhfYml0cmF0ZSwgMjAwMCwgIlZpZGVvIHN0cmVh
bSBtYXggYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IFZpZGVvTWF4Qml0cmF0ZUticHMoKSB7CiAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfdm1heF9iaXRyYXRlKTsKIH0KIAotREVGSU5F
X2Jvb2woc3VzcGVuZF9iZWxvd19taW5fYml0cmF0ZSwKLSAgICAgICAgICAgIGZhbHNlLAotICAg
ICAgICAgICAgIlN1c3BlbmRzIHZpZGVvIGJlbG93IHRoZSBjb25maWd1cmVkIG1pbiBiaXRyYXRl
LiIpOworV0VCUlRDX0RFRklORV9ib29sKHN1c3BlbmRfYmVsb3dfbWluX2JpdHJhdGUsCisgICAg
ICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlN1c3BlbmRzIHZpZGVv
IGJlbG93IHRoZSBjb25maWd1cmVkIG1pbiBiaXRyYXRlLiIpOwogCi1ERUZJTkVfaW50KHZudW1f
dGVtcG9yYWxfbGF5ZXJzLAotICAgICAgICAgICAxLAotICAgICAgICAgICAiTnVtYmVyIG9mIHRl
bXBvcmFsIGxheWVycyBmb3IgdmlkZW8uIFNldCB0byAxLTQgdG8gb3ZlcnJpZGUuIik7CitXRUJS
VENfREVGSU5FX2ludCgKKyAgICB2bnVtX3RlbXBvcmFsX2xheWVycywKKyAgICAxLAorICAgICJO
dW1iZXIgb2YgdGVtcG9yYWwgbGF5ZXJzIGZvciB2aWRlby4gU2V0IHRvIDEtNCB0byBvdmVycmlk
ZS4iKTsKIGludCBWaWRlb051bVRlbXBvcmFsTGF5ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihGTEFHX3ZudW1fdGVtcG9yYWxfbGF5ZXJzKTsKIH0KIAotREVGSU5FX2ludCh2bnVt
X3N0cmVhbXMsIDAsICJOdW1iZXIgb2YgdmlkZW8gc3RyZWFtcyB0byBzaG93IG9yIGFuYWx5emUu
Iik7CitXRUJSVENfREVGSU5FX2ludCh2bnVtX3N0cmVhbXMsCisgICAgICAgICAgICAgICAgICAw
LAorICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiB2aWRlbyBzdHJlYW1zIHRvIHNob3cgb3Ig
YW5hbHl6ZS4iKTsKIGludCBWaWRlb051bVN0cmVhbXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KEZMQUdfdm51bV9zdHJlYW1zKTsKIH0KIAotREVGSU5FX2ludCh2bnVtX3NwYXRpYWxf
bGF5ZXJzLCAxLCAiTnVtYmVyIG9mIHZpZGVvIHNwYXRpYWwgbGF5ZXJzIHRvIHVzZS4iKTsKK1dF
QlJUQ19ERUZJTkVfaW50KHZudW1fc3BhdGlhbF9sYXllcnMsCisgICAgICAgICAgICAgICAgICAx
LAorICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiB2aWRlbyBzcGF0aWFsIGxheWVycyB0byB1
c2UuIik7CiBpbnQgVmlkZW9OdW1TcGF0aWFsTGF5ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihGTEFHX3ZudW1fc3BhdGlhbF9sYXllcnMpOwogfQogCi1ERUZJTkVfaW50KHZpbnRl
cl9sYXllcl9wcmVkLAotICAgICAgICAgICAyLAotICAgICAgICAgICAiVmlkZW8gaW50ZXItbGF5
ZXIgcHJlZGljdGlvbiBtb2RlLiAiCi0gICAgICAgICAgICIwIC0gZW5hYmxlZCwgMSAtIGRpc2Fi
bGVkLCAyIC0gZW5hYmxlZCBvbmx5IGZvciBrZXkgcGljdHVyZXMuIik7CitXRUJSVENfREVGSU5F
X2ludCgKKyAgICB2aW50ZXJfbGF5ZXJfcHJlZCwKKyAgICAyLAorICAgICJWaWRlbyBpbnRlci1s
YXllciBwcmVkaWN0aW9uIG1vZGUuICIKKyAgICAiMCAtIGVuYWJsZWQsIDEgLSBkaXNhYmxlZCwg
MiAtIGVuYWJsZWQgb25seSBmb3Iga2V5IHBpY3R1cmVzLiIpOwogSW50ZXJMYXllclByZWRNb2Rl
IFZpZGVvSW50ZXJMYXllclByZWQoKSB7CiAgIHJldHVybiBJbnRUb0ludGVyTGF5ZXJQcmVkTW9k
ZShGTEFHX3ZpbnRlcl9sYXllcl9wcmVkKTsKIH0KIAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19E
RUZJTkVfc3RyaW5nKAogICAgIHZzdHJlYW0wLAogICAgICIiLAogICAgICJDb21tYSBzZXBhcmF0
ZWQgdmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHZpZGVvIHN0cmVhbSAjMC4iKTsK
QEAgLTEwOCw3ICsxMTMsNyBAQCBzdGQ6OnN0cmluZyBWaWRlb1N0cmVhbTAoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR192c3RyZWFtMCk7CiB9CiAKLURFRklORV9z
dHJpbmcoCitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICB2c3RyZWFtMSwKICAgICAiIiwKICAg
ICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZvciB2aWRl
byBzdHJlYW0gIzEuIik7CkBAIC0xMTYsNyArMTIxLDcgQEAgc3RkOjpzdHJpbmcgVmlkZW9TdHJl
YW0xKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfdnN0cmVhbTEp
OwogfQogCi1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgdnNsMCwK
ICAgICAiIiwKICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxM
YXllciBmb3IgdmlkZW8gbGF5ZXIgIzAuIik7CkBAIC0xMjQsNyArMTI5LDcgQEAgc3RkOjpzdHJp
bmcgVmlkZW9TTDAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR192
c2wwKTsKIH0KIAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIHZz
bDEsCiAgICAgIiIsCiAgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0
aWFsTGF5ZXIgZm9yIHZpZGVvIGxheWVyICMxLiIpOwpAQCAtMTMyLDk4ICsxMzcsMTA1IEBAIHN0
ZDo6c3RyaW5nIFZpZGVvU0wxKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+
KEZMQUdfdnNsMSk7CiB9CiAKLURFRklORV9pbnQodnNlbGVjdGVkX3RsLAotICAgICAgICAgICAt
MSwKLSAgICAgICAgICAgIlRlbXBvcmFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2Ny
ZWVuc2hhcmUuIC0xIHRvIGRpc2FibGUgIgotICAgICAgICAgICAiZmlsdGVyaW5nLiIpOworV0VC
UlRDX0RFRklORV9pbnQoCisgICAgdnNlbGVjdGVkX3RsLAorICAgIC0xLAorICAgICJUZW1wb3Jh
bCBsYXllciB0byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNoYXJlLiAtMSB0byBkaXNhYmxl
ICIKKyAgICAiZmlsdGVyaW5nLiIpOwogaW50IFZpZGVvU2VsZWN0ZWRUTCgpIHsKICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oRkxBR192c2VsZWN0ZWRfdGwpOwogfQogCi1ERUZJTkVfaW50KHZz
ZWxlY3RlZF9zdHJlYW0sCi0gICAgICAgICAgIDAsCi0gICAgICAgICAgICJJRCBvZiB0aGUgc3Ry
ZWFtIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUuIgotICAgICAgICAgICAiU2V0
IHRvIHRoZSBudW1iZXIgb2Ygc3RyZWFtcyB0byBzaG93IHRoZW0gYWxsLiIpOworV0VCUlRDX0RF
RklORV9pbnQodnNlbGVjdGVkX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAg
ICAgICAgICAgICAiSUQgb2YgdGhlIHN0cmVhbSB0byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVl
bnNoYXJlLiIKKyAgICAgICAgICAgICAgICAgICJTZXQgdG8gdGhlIG51bWJlciBvZiBzdHJlYW1z
IHRvIHNob3cgdGhlbSBhbGwuIik7CiBpbnQgVmlkZW9TZWxlY3RlZFN0cmVhbSgpIHsKICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR192c2VsZWN0ZWRfc3RyZWFtKTsKIH0KIAotREVGSU5F
X2ludCh2c2VsZWN0ZWRfc2wsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiU3BhdGlhbCBs
YXllciB0byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNoYXJlLiAtMSB0byBkaXNhYmxlICIK
LSAgICAgICAgICAgImZpbHRlcmluZy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KAorICAgIHZzZWxl
Y3RlZF9zbCwKKyAgICAtMSwKKyAgICAiU3BhdGlhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUg
Zm9yIHNjcmVlbnNoYXJlLiAtMSB0byBkaXNhYmxlICIKKyAgICAiZmlsdGVyaW5nLiIpOwogaW50
IFZpZGVvU2VsZWN0ZWRTTCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR192c2Vs
ZWN0ZWRfc2wpOwogfQogCiAvLyBGbGFncyBmb3Igc2NyZWVuc2hhcmUuCi1ERUZJTkVfaW50KG1p
bl90cmFuc21pdF9iaXRyYXRlLAotICAgICAgICAgICA0MDAsCi0gICAgICAgICAgICJNaW4gdHJh
bnNtaXQgYml0cmF0ZSBpbmNsLiBwYWRkaW5nIGZvciBzY3JlZW5zaGFyZS4iKTsKK1dFQlJUQ19E
RUZJTkVfaW50KG1pbl90cmFuc21pdF9iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgNDAwLAor
ICAgICAgICAgICAgICAgICAgIk1pbiB0cmFuc21pdCBiaXRyYXRlIGluY2wuIHBhZGRpbmcgZm9y
IHNjcmVlbnNoYXJlLiIpOwogaW50IFNjcmVlbnNoYXJlTWluVHJhbnNtaXRCaXRyYXRlS2Jwcygp
IHsKICAgcmV0dXJuIEZMQUdfbWluX3RyYW5zbWl0X2JpdHJhdGU7CiB9CiAKLURFRklORV9pbnQo
c3dpZHRoLCAxODUwLCAiU2NyZWVuc2hhcmUgd2lkdGggKGNyb3BzIHNvdXJjZSkuIik7CitXRUJS
VENfREVGSU5FX2ludChzd2lkdGgsIDE4NTAsICJTY3JlZW5zaGFyZSB3aWR0aCAoY3JvcHMgc291
cmNlKS4iKTsKIHNpemVfdCBTY3JlZW5zaGFyZVdpZHRoKCkgewogICByZXR1cm4gc3RhdGljX2Nh
c3Q8c2l6ZV90PihGTEFHX3N3aWR0aCk7CiB9CiAKLURFRklORV9pbnQoc2hlaWdodCwgMTExMCwg
IlNjcmVlbnNoYXJlIGhlaWdodCAoY3JvcHMgc291cmNlKS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50
KHNoZWlnaHQsIDExMTAsICJTY3JlZW5zaGFyZSBoZWlnaHQgKGNyb3BzIHNvdXJjZSkuIik7CiBz
aXplX3QgU2NyZWVuc2hhcmVIZWlnaHQoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+
KEZMQUdfc2hlaWdodCk7CiB9CiAKLURFRklORV9pbnQoc2ZwcywgNSwgIkZyYW1lcyBwZXIgc2Vj
b25kIGZvciBzY3JlZW5zaGFyZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNmcHMsIDUsICJGcmFt
ZXMgcGVyIHNlY29uZCBmb3Igc2NyZWVuc2hhcmUuIik7CiBpbnQgU2NyZWVuc2hhcmVGcHMoKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2Zwcyk7CiB9CiAKLURFRklORV9pbnQo
c3RhcmdldF9iaXRyYXRlLCAxMDAsICJTY3JlZW5zaGFyZSBzdHJlYW0gdGFyZ2V0IGJpdHJhdGUg
aW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHN0YXJnZXRfYml0cmF0ZSwKKyAgICAgICAg
ICAgICAgICAgIDEwMCwKKyAgICAgICAgICAgICAgICAgICJTY3JlZW5zaGFyZSBzdHJlYW0gdGFy
Z2V0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBTY3JlZW5zaGFyZVRhcmdldEJpdHJhdGVLYnBz
KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3N0YXJnZXRfYml0cmF0ZSk7CiB9
CiAKLURFRklORV9pbnQoc21pbl9iaXRyYXRlLCAxMDAsICJTY3JlZW5zaGFyZSBzdHJlYW0gbWlu
IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNtaW5fYml0cmF0ZSwgMTAw
LCAiU2NyZWVuc2hhcmUgc3RyZWFtIG1pbiBiaXRyYXRlIGluIGticHMuIik7CiBpbnQgU2NyZWVu
c2hhcmVNaW5CaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19z
bWluX2JpdHJhdGUpOwogfQogCi1ERUZJTkVfaW50KHNtYXhfYml0cmF0ZSwgMjAwMCwgIlNjcmVl
bnNoYXJlIHN0cmVhbSBtYXggYml0cmF0ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklORV9pbnQo
c21heF9iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgMjAwMCwKKyAgICAgICAgICAgICAgICAg
ICJTY3JlZW5zaGFyZSBzdHJlYW0gbWF4IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBTY3JlZW5z
aGFyZU1heEJpdHJhdGVLYnBzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3Nt
YXhfYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQoc251bV90ZW1wb3JhbF9sYXllcnMsCi0gICAg
ICAgICAgIDIsCi0gICAgICAgICAgICJOdW1iZXIgb2YgdGVtcG9yYWwgbGF5ZXJzIHRvIHVzZSBp
biBzY3JlZW5zaGFyZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNudW1fdGVtcG9yYWxfbGF5ZXJz
LAorICAgICAgICAgICAgICAgICAgMiwKKyAgICAgICAgICAgICAgICAgICJOdW1iZXIgb2YgdGVt
cG9yYWwgbGF5ZXJzIHRvIHVzZSBpbiBzY3JlZW5zaGFyZS4iKTsKIGludCBTY3JlZW5zaGFyZU51
bVRlbXBvcmFsTGF5ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NudW1f
dGVtcG9yYWxfbGF5ZXJzKTsKIH0KIAotREVGSU5FX2ludChzbnVtX3N0cmVhbXMsCi0gICAgICAg
ICAgIDAsCi0gICAgICAgICAgICJOdW1iZXIgb2Ygc2NyZWVuc2hhcmUgc3RyZWFtcyB0byBzaG93
IG9yIGFuYWx5emUuIik7CitXRUJSVENfREVGSU5FX2ludChzbnVtX3N0cmVhbXMsCisgICAgICAg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiBzY3JlZW5zaGFyZSBz
dHJlYW1zIHRvIHNob3cgb3IgYW5hbHl6ZS4iKTsKIGludCBTY3JlZW5zaGFyZU51bVN0cmVhbXMo
KSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc251bV9zdHJlYW1zKTsKIH0KIAot
REVGSU5FX2ludChzbnVtX3NwYXRpYWxfbGF5ZXJzLAotICAgICAgICAgICAxLAotICAgICAgICAg
ICAiTnVtYmVyIG9mIHNjcmVlbnNoYXJlIHNwYXRpYWwgbGF5ZXJzIHRvIHVzZS4iKTsKK1dFQlJU
Q19ERUZJTkVfaW50KHNudW1fc3BhdGlhbF9sYXllcnMsCisgICAgICAgICAgICAgICAgICAxLAor
ICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiBzY3JlZW5zaGFyZSBzcGF0aWFsIGxheWVycyB0
byB1c2UuIik7CiBpbnQgU2NyZWVuc2hhcmVOdW1TcGF0aWFsTGF5ZXJzKCkgewogICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihGTEFHX3NudW1fc3BhdGlhbF9sYXllcnMpOwogfQogCi1ERUZJTkVf
aW50KHNpbnRlcl9sYXllcl9wcmVkLAotICAgICAgICAgICAwLAotICAgICAgICAgICAiU2NyZWVu
c2hhcmUgaW50ZXItbGF5ZXIgcHJlZGljdGlvbiBtb2RlLiAiCi0gICAgICAgICAgICIwIC0gZW5h
YmxlZCwgMSAtIGRpc2FibGVkLCAyIC0gZW5hYmxlZCBvbmx5IGZvciBrZXkgcGljdHVyZXMuIik7
CitXRUJSVENfREVGSU5FX2ludCgKKyAgICBzaW50ZXJfbGF5ZXJfcHJlZCwKKyAgICAwLAorICAg
ICJTY3JlZW5zaGFyZSBpbnRlci1sYXllciBwcmVkaWN0aW9uIG1vZGUuICIKKyAgICAiMCAtIGVu
YWJsZWQsIDEgLSBkaXNhYmxlZCwgMiAtIGVuYWJsZWQgb25seSBmb3Iga2V5IHBpY3R1cmVzLiIp
OwogSW50ZXJMYXllclByZWRNb2RlIFNjcmVlbnNoYXJlSW50ZXJMYXllclByZWQoKSB7CiAgIHJl
dHVybiBJbnRUb0ludGVyTGF5ZXJQcmVkTW9kZShGTEFHX3NpbnRlcl9sYXllcl9wcmVkKTsKIH0K
IAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIHNzdHJlYW0wLAog
ICAgICIiLAogICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJl
YW0gZm9yIHNjcmVlbnNoYXJlIHN0cmVhbSAjMC4iKTsKQEAgLTIzMSw3ICsyNDMsNyBAQCBzdGQ6
OnN0cmluZyBTY3JlZW5zaGFyZVN0cmVhbTAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6
OnN0cmluZz4oRkxBR19zc3RyZWFtMCk7CiB9CiAKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVG
SU5FX3N0cmluZygKICAgICBzc3RyZWFtMSwKICAgICAiIiwKICAgICAiQ29tbWEgc2VwYXJhdGVk
IHZhbHVlcyBkZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZvciBzY3JlZW5zaGFyZSBzdHJlYW0gIzEu
Iik7CkBAIC0yMzksNyArMjUxLDcgQEAgc3RkOjpzdHJpbmcgU2NyZWVuc2hhcmVTdHJlYW0xKCkg
ewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc3N0cmVhbTEpOwogfQog
Ci1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgc3NsMCwKICAgICAi
IiwKICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxMYXllciBm
b3Igc2NyZWVuc2hhcmUgbGF5ZXIgIzAuIik7CkBAIC0yNDcsNyArMjU5LDcgQEAgc3RkOjpzdHJp
bmcgU2NyZWVuc2hhcmVTTDAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4o
RkxBR19zc2wwKTsKIH0KIAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAog
ICAgIHNzbDEsCiAgICAgIiIsCiAgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmlu
ZyBTcGF0aWFsTGF5ZXIgZm9yIHNjcmVlbnNoYXJlIGxheWVyICMxLiIpOwpAQCAtMjU1LDMxICsy
NjcsMzMgQEAgc3RkOjpzdHJpbmcgU2NyZWVuc2hhcmVTTDEoKSB7CiAgIHJldHVybiBzdGF0aWNf
Y2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zc2wxKTsKIH0KIAotREVGSU5FX2ludChzc2VsZWN0ZWRf
dGwsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiVGVtcG9yYWwgbGF5ZXIgdG8gc2hvdyBv
ciBhbmFseXplIGZvciBzY3JlZW5zaGFyZS4gLTEgdG8gZGlzYWJsZSAiCi0gICAgICAgICAgICJm
aWx0ZXJpbmcuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICBzc2VsZWN0ZWRfdGwsCisgICAg
LTEsCisgICAgIlRlbXBvcmFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hh
cmUuIC0xIHRvIGRpc2FibGUgIgorICAgICJmaWx0ZXJpbmcuIik7CiBpbnQgU2NyZWVuc2hhcmVT
ZWxlY3RlZFRMKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NzZWxlY3RlZF90
bCk7CiB9CiAKLURFRklORV9pbnQoc3NlbGVjdGVkX3N0cmVhbSwKLSAgICAgICAgICAgMCwKLSAg
ICAgICAgICAgIklEIG9mIHRoZSBzdHJlYW0gdG8gc2hvdyBvciBhbmFseXplIGZvciBzY3JlZW5z
aGFyZS4iCi0gICAgICAgICAgICJTZXQgdG8gdGhlIG51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cg
dGhlbSBhbGwuIik7CitXRUJSVENfREVGSU5FX2ludChzc2VsZWN0ZWRfc3RyZWFtLAorICAgICAg
ICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJJRCBvZiB0aGUgc3RyZWFtIHRvIHNo
b3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUuIgorICAgICAgICAgICAgICAgICAgIlNldCB0
byB0aGUgbnVtYmVyIG9mIHN0cmVhbXMgdG8gc2hvdyB0aGVtIGFsbC4iKTsKIGludCBTY3JlZW5z
aGFyZVNlbGVjdGVkU3RyZWFtKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3Nz
ZWxlY3RlZF9zdHJlYW0pOwogfQogCi1ERUZJTkVfaW50KHNzZWxlY3RlZF9zbCwKLSAgICAgICAg
ICAgLTEsCi0gICAgICAgICAgICJTcGF0aWFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Ig
c2NyZWVuc2hhcmUuIC0xIHRvIGRpc2FibGUgIgotICAgICAgICAgICAiZmlsdGVyaW5nLiIpOwor
V0VCUlRDX0RFRklORV9pbnQoCisgICAgc3NlbGVjdGVkX3NsLAorICAgIC0xLAorICAgICJTcGF0
aWFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUuIC0xIHRvIGRpc2Fi
bGUgIgorICAgICJmaWx0ZXJpbmcuIik7CiBpbnQgU2NyZWVuc2hhcmVTZWxlY3RlZFNMKCkgewog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NzZWxlY3RlZF9zbCk7CiB9CiAKLURFRklO
RV9ib29sKAorV0VCUlRDX0RFRklORV9ib29sKAogICAgIGdlbmVyYXRlX3NsaWRlcywKICAgICBm
YWxzZSwKICAgICAiV2hldGhlciB0byB1c2UgcmFuZG9tbHkgZ2VuZXJhdGVkIHNsaWRlcyBvciBy
ZWFkIHRoZW0gZnJvbSBmaWxlcy4iKTsKQEAgLTI4NywxNCArMzAxLDE0IEBAIGJvb2wgR2VuZXJh
dGVTbGlkZXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfZ2VuZXJhdGVfc2xp
ZGVzKTsKIH0KIAotREVGSU5FX2ludChzbGlkZV9jaGFuZ2VfaW50ZXJ2YWwsCi0gICAgICAgICAg
IDEwLAotICAgICAgICAgICAiSW50ZXJ2YWwgKGluIHNlY29uZHMpIGJldHdlZW4gc2ltdWxhdGVk
IHNsaWRlIGNoYW5nZXMuIik7CitXRUJSVENfREVGSU5FX2ludChzbGlkZV9jaGFuZ2VfaW50ZXJ2
YWwsCisgICAgICAgICAgICAgICAgICAxMCwKKyAgICAgICAgICAgICAgICAgICJJbnRlcnZhbCAo
aW4gc2Vjb25kcykgYmV0d2VlbiBzaW11bGF0ZWQgc2xpZGUgY2hhbmdlcy4iKTsKIGludCBTbGlk
ZUNoYW5nZUludGVydmFsKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NsaWRl
X2NoYW5nZV9pbnRlcnZhbCk7CiB9CiAKLURFRklORV9pbnQoCitXRUJSVENfREVGSU5FX2ludCgK
ICAgICBzY3JvbGxfZHVyYXRpb24sCiAgICAgMCwKICAgICAiRHVyYXRpb24gKGluIHNlY29uZHMp
IGR1cmluZyB3aGljaCBhIHNsaWRlIHdpbGwgYmUgc2Nyb2xsZWQgaW50byBwbGFjZS4iKTsKQEAg
LTMwMiw5ICszMTYsMTAgQEAgaW50IFNjcm9sbER1cmF0aW9uKCkgewogICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihGTEFHX3Njcm9sbF9kdXJhdGlvbik7CiB9CiAKLURFRklORV9zdHJpbmcoc2xp
ZGVzLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkNvbW1hLXNlcGFyYXRlZCBs
aXN0IG9mICoueXV2IGZpbGVzIHRvIGRpc3BsYXkgYXMgc2xpZGVzLiIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcoCisgICAgc2xpZGVzLAorICAgICIiLAorICAgICJDb21tYS1zZXBhcmF0ZWQgbGlz
dCBvZiAqLnl1diBmaWxlcyB0byBkaXNwbGF5IGFzIHNsaWRlcy4iKTsKIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiBTbGlkZXMoKSB7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBzbGlkZXM7
CiAgIHN0ZDo6c3RyaW5nIHNsaWRlc19saXN0ID0gRkxBR19zbGlkZXM7CkBAIC0zMTMsMzEgKzMy
OCwzMSBAQCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gU2xpZGVzKCkgewogfQogCiAvLyBGbGFn
cyBjb21tb24gd2l0aCBzY3JlZW5zaGFyZSBhbmQgdmlkZW8gbG9vcGJhY2ssIHdpdGggZXF1YWwg
ZGVmYXVsdCB2YWx1ZXMuCi1ERUZJTkVfaW50KHN0YXJ0X2JpdHJhdGUsIDYwMCwgIkNhbGwgc3Rh
cnQgYml0cmF0ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklORV9pbnQoc3RhcnRfYml0cmF0ZSwg
NjAwLCAiQ2FsbCBzdGFydCBiaXRyYXRlIGluIGticHMuIik7CiBpbnQgU3RhcnRCaXRyYXRlS2Jw
cygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zdGFydF9iaXRyYXRlKTsKIH0K
IAotREVGSU5FX3N0cmluZyhjb2RlYywgIlZQOCIsICJWaWRlbyBjb2RlYyB0byB1c2UuIik7CitX
RUJSVENfREVGSU5FX3N0cmluZyhjb2RlYywgIlZQOCIsICJWaWRlbyBjb2RlYyB0byB1c2UuIik7
CiBzdGQ6OnN0cmluZyBDb2RlYygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5n
PihGTEFHX2NvZGVjKTsKIH0KIAotREVGSU5FX2Jvb2woYW5hbHl6ZV92aWRlbywKLSAgICAgICAg
ICAgIGZhbHNlLAotICAgICAgICAgICAgIkFuYWx5emUgdmlkZW8gc3RyZWFtIChpZiAtLWR1cmF0
aW9uIGlzIHByZXNlbnQpIik7CitXRUJSVENfREVGSU5FX2Jvb2woYW5hbHl6ZV92aWRlbywKKyAg
ICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiQW5hbHl6ZSB2aWRl
byBzdHJlYW0gKGlmIC0tZHVyYXRpb24gaXMgcHJlc2VudCkiKTsKIGJvb2wgQW5hbHl6ZVZpZGVv
KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oRkxBR19hbmFseXplX3ZpZGVvKTsKIH0K
IAotREVGSU5FX2Jvb2woYW5hbHl6ZV9zY3JlZW5zaGFyZSwKLSAgICAgICAgICAgIGZhbHNlLAot
ICAgICAgICAgICAgIkFuYWx5emUgc2NyZWVuc2hhcmUgc3RyZWFtIChpZiAtLWR1cmF0aW9uIGlz
IHByZXNlbnQpIik7CitXRUJSVENfREVGSU5FX2Jvb2woYW5hbHl6ZV9zY3JlZW5zaGFyZSwKKyAg
ICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiQW5hbHl6ZSBzY3Jl
ZW5zaGFyZSBzdHJlYW0gKGlmIC0tZHVyYXRpb24gaXMgcHJlc2VudCkiKTsKIGJvb2wgQW5hbHl6
ZVNjcmVlbnNoYXJlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oRkxBR19hbmFseXpl
X3NjcmVlbnNoYXJlKTsKIH0KIAotREVGSU5FX2ludCgKK1dFQlJUQ19ERUZJTkVfaW50KAogICAg
IGR1cmF0aW9uLAogICAgIDAsCiAgICAgIkR1cmF0aW9uIG9mIHRoZSB0ZXN0IGluIHNlY29uZHMu
IElmIDAsIHJlbmRlcmVkIHdpbGwgYmUgc2hvd24gaW5zdGVhZC4iKTsKQEAgLTM0NSwxMDAgKzM2
MCwxMTMgQEAgaW50IER1cmF0aW9uU2VjcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
RkxBR19kdXJhdGlvbik7CiB9CiAKLURFRklORV9zdHJpbmcob3V0cHV0X2ZpbGVuYW1lLCAiIiwg
IlRhcmdldCBncmFwaCBkYXRhIGZpbGVuYW1lLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob3V0
cHV0X2ZpbGVuYW1lLCAiIiwgIlRhcmdldCBncmFwaCBkYXRhIGZpbGVuYW1lLiIpOwogc3RkOjpz
dHJpbmcgT3V0cHV0RmlsZW5hbWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmlu
Zz4oRkxBR19vdXRwdXRfZmlsZW5hbWUpOwogfQogCi1ERUZJTkVfc3RyaW5nKGdyYXBoX3RpdGxl
LAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIklmIGVtcHR5LCB0aXRsZSB3aWxs
IGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoZ3Jh
cGhfdGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAg
ICJJZiBlbXB0eSwgdGl0bGUgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4iKTsKIHN0
ZDo6c3RyaW5nIEdyYXBoVGl0bGUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmlu
Zz4oRkxBR19ncmFwaF90aXRsZSk7CiB9CiAKLURFRklORV9pbnQobG9zc19wZXJjZW50LCAwLCAi
UGVyY2VudGFnZSBvZiBwYWNrZXRzIHJhbmRvbWx5IGxvc3QuIik7CitXRUJSVENfREVGSU5FX2lu
dChsb3NzX3BlcmNlbnQsIDAsICJQZXJjZW50YWdlIG9mIHBhY2tldHMgcmFuZG9tbHkgbG9zdC4i
KTsKIGludCBMb3NzUGVyY2VudCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19s
b3NzX3BlcmNlbnQpOwogfQogCi1ERUZJTkVfaW50KGF2Z19idXJzdF9sb3NzX2xlbmd0aCwgLTEs
ICJBdmVyYWdlIGJ1cnN0IGxlbmd0aCBvZiBsb3N0IHBhY2tldHMuIik7CitXRUJSVENfREVGSU5F
X2ludChhdmdfYnVyc3RfbG9zc19sZW5ndGgsCisgICAgICAgICAgICAgICAgICAtMSwKKyAgICAg
ICAgICAgICAgICAgICJBdmVyYWdlIGJ1cnN0IGxlbmd0aCBvZiBsb3N0IHBhY2tldHMuIik7CiBp
bnQgQXZnQnVyc3RMb3NzTGVuZ3RoKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFH
X2F2Z19idXJzdF9sb3NzX2xlbmd0aCk7CiB9CiAKLURFRklORV9pbnQobGlua19jYXBhY2l0eSwK
LSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkNhcGFjaXR5IChrYnBzKSBvZiB0aGUgZmFrZSBs
aW5rLiAwIG1lYW5zIGluZmluaXRlLiIpOworV0VCUlRDX0RFRklORV9pbnQobGlua19jYXBhY2l0
eSwKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiQ2FwYWNpdHkgKGti
cHMpIG9mIHRoZSBmYWtlIGxpbmsuIDAgbWVhbnMgaW5maW5pdGUuIik7CiBpbnQgTGlua0NhcGFj
aXR5S2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19saW5rX2NhcGFjaXR5
KTsKIH0KIAotREVGSU5FX2ludChxdWV1ZV9zaXplLCAwLCAiU2l6ZSBvZiB0aGUgYm90dGxlbmVj
ayBsaW5rIHF1ZXVlIGluIHBhY2tldHMuIik7CitXRUJSVENfREVGSU5FX2ludChxdWV1ZV9zaXpl
LAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJTaXplIG9mIHRoZSBi
b3R0bGVuZWNrIGxpbmsgcXVldWUgaW4gcGFja2V0cy4iKTsKIGludCBRdWV1ZVNpemUoKSB7CiAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfcXVldWVfc2l6ZSk7CiB9CiAKLURFRklORV9p
bnQoYXZnX3Byb3BhZ2F0aW9uX2RlbGF5X21zLAotICAgICAgICAgICAwLAotICAgICAgICAgICAi
QXZlcmFnZSBsaW5rIHByb3BhZ2F0aW9uIGRlbGF5IGluIG1zLiIpOworV0VCUlRDX0RFRklORV9p
bnQoYXZnX3Byb3BhZ2F0aW9uX2RlbGF5X21zLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAg
ICAgICAgICAgICAgICJBdmVyYWdlIGxpbmsgcHJvcGFnYXRpb24gZGVsYXkgaW4gbXMuIik7CiBp
bnQgQXZnUHJvcGFnYXRpb25EZWxheU1zKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihG
TEFHX2F2Z19wcm9wYWdhdGlvbl9kZWxheV9tcyk7CiB9CiAKLURFRklORV9zdHJpbmcocnRjX2V2
ZW50X2xvZ19uYW1lLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkZpbGVuYW1l
IGZvciBydGMgZXZlbnQgbG9nLiBUd28gZmlsZXMgIgotICAgICAgICAgICAgICAid2l0aCBcIl9z
ZW5kXCIgYW5kIFwiX3JlY3ZcIiBzdWZmaXhlcyB3aWxsIGJlIGNyZWF0ZWQuICIKLSAgICAgICAg
ICAgICAgIldvcmtzIG9ubHkgd2hlbiAtLWR1cmF0aW9uIGlzIHNldC4iKTsKK1dFQlJUQ19ERUZJ
TkVfc3RyaW5nKHJ0Y19ldmVudF9sb2dfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAor
ICAgICAgICAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBydGMgZXZlbnQgbG9nLiBUd28gZmls
ZXMgIgorICAgICAgICAgICAgICAgICAgICAgIndpdGggXCJfc2VuZFwiIGFuZCBcIl9yZWN2XCIg
c3VmZml4ZXMgd2lsbCBiZSBjcmVhdGVkLiAiCisgICAgICAgICAgICAgICAgICAgICAiV29ya3Mg
b25seSB3aGVuIC0tZHVyYXRpb24gaXMgc2V0LiIpOwogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dO
YW1lKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfcnRjX2V2ZW50
X2xvZ19uYW1lKTsKIH0KIAotREVGSU5FX3N0cmluZyhydHBfZHVtcF9uYW1lLCAiIiwgIkZpbGVu
YW1lIGZvciBkdW1wZWQgcmVjZWl2ZWQgUlRQIHN0cmVhbS4iKTsKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKHJ0cF9kdW1wX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAg
ICAgICAgICAgICJGaWxlbmFtZSBmb3IgZHVtcGVkIHJlY2VpdmVkIFJUUCBzdHJlYW0uIik7CiBz
dGQ6OnN0cmluZyBSdHBEdW1wTmFtZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3Ry
aW5nPihGTEFHX3J0cF9kdW1wX25hbWUpOwogfQogCi1ERUZJTkVfaW50KHN0ZF9wcm9wYWdhdGlv
bl9kZWxheV9tcywKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkxpbmsgcHJvcGFnYXRpb24g
ZGVsYXkgc3RhbmRhcmQgZGV2aWF0aW9uIGluIG1zLiIpOworV0VCUlRDX0RFRklORV9pbnQoc3Rk
X3Byb3BhZ2F0aW9uX2RlbGF5X21zLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAg
ICAgICAgICJMaW5rIHByb3BhZ2F0aW9uIGRlbGF5IHN0YW5kYXJkIGRldmlhdGlvbiBpbiBtcy4i
KTsKIGludCBTdGRQcm9wYWdhdGlvbkRlbGF5TXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KEZMQUdfc3RkX3Byb3BhZ2F0aW9uX2RlbGF5X21zKTsKIH0KIAotREVGSU5FX3N0cmluZyhl
bmNvZGVkX2ZyYW1lX3BhdGgsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiVGhl
IGJhc2UgcGF0aCBmb3IgZW5jb2RlZCBmcmFtZSBsb2dzLiBDcmVhdGVkIGZpbGVzIHdpbGwgaGF2
ZSAiCi0gICAgICAgICAgICAgICJ0aGUgZm9ybSA8ZW5jb2RlZF9mcmFtZV9wYXRoPi48bj4uKHJl
Y3Z8c2VuZC48bT4pLml2ZiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgZW5jb2RlZF9m
cmFtZV9wYXRoLAorICAgICIiLAorICAgICJUaGUgYmFzZSBwYXRoIGZvciBlbmNvZGVkIGZyYW1l
IGxvZ3MuIENyZWF0ZWQgZmlsZXMgd2lsbCBoYXZlICIKKyAgICAidGhlIGZvcm0gPGVuY29kZWRf
ZnJhbWVfcGF0aD4uPG4+LihyZWN2fHNlbmQuPG0+KS5pdmYiKTsKIHN0ZDo6c3RyaW5nIEVuY29k
ZWRGcmFtZVBhdGgoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19l
bmNvZGVkX2ZyYW1lX3BhdGgpOwogfQogCi1ERUZJTkVfYm9vbChsb2dzLCBmYWxzZSwgInByaW50
IGxvZ3MgdG8gc3RkZXJyIik7CitXRUJSVENfREVGSU5FX2Jvb2wobG9ncywgZmFsc2UsICJwcmlu
dCBsb2dzIHRvIHN0ZGVyciIpOwogCi1ERUZJTkVfYm9vbChzZW5kX3NpZGVfYndlLCB0cnVlLCAi
VXNlIHNlbmQtc2lkZSBiYW5kd2lkdGggZXN0aW1hdGlvbiIpOworV0VCUlRDX0RFRklORV9ib29s
KHNlbmRfc2lkZV9id2UsIHRydWUsICJVc2Ugc2VuZC1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0aW9u
Iik7CiAKLURFRklORV9ib29sKGdlbmVyaWNfZGVzY3JpcHRvciwgZmFsc2UsICJVc2UgdGhlIGdl
bmVyaWMgZnJhbWUgZGVzY3JpcHRvci4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChnZW5lcmljX2Rl
c2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAg
IlVzZSB0aGUgZ2VuZXJpYyBmcmFtZSBkZXNjcmlwdG9yLiIpOwogCi1ERUZJTkVfYm9vbChhbGxv
d19yZW9yZGVyaW5nLCBmYWxzZSwgIkFsbG93IHBhY2tldCByZW9yZGVyaW5nIHRvIG9jY3VyIik7
CitXRUJSVENfREVGSU5FX2Jvb2woYWxsb3dfcmVvcmRlcmluZywgZmFsc2UsICJBbGxvdyBwYWNr
ZXQgcmVvcmRlcmluZyB0byBvY2N1ciIpOwogCi1ERUZJTkVfYm9vbCh1c2VfdWxwZmVjLCBmYWxz
ZSwgIlVzZSBSRUQrVUxQRkVDIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbi4iKTsKK1dFQlJUQ19E
RUZJTkVfYm9vbCh1c2VfdWxwZmVjLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAg
ICAgICAgICAgICAgICJVc2UgUkVEK1VMUEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24uIik7
CiAKLURFRklORV9ib29sKHVzZV9mbGV4ZmVjLCBmYWxzZSwgIlVzZSBGbGV4RkVDIGZvcndhcmQg
ZXJyb3IgY29ycmVjdGlvbi4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCh1c2VfZmxleGZlYywgZmFs
c2UsICJVc2UgRmxleEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24uIik7CiAKLURFRklORV9i
b29sKGF1ZGlvLCBmYWxzZSwgIkFkZCBhdWRpbyBzdHJlYW0iKTsKK1dFQlJUQ19ERUZJTkVfYm9v
bChhdWRpbywgZmFsc2UsICJBZGQgYXVkaW8gc3RyZWFtIik7CiAKLURFRklORV9ib29sKGF1ZGlv
X3ZpZGVvX3N5bmMsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJTeW5jIGF1ZGlv
IGFuZCB2aWRlbyBzdHJlYW0gKG5vIGVmZmVjdCBpZiIKLSAgICAgICAgICAgICIgYXVkaW8gaXMg
ZmFsc2UpIik7CitXRUJSVENfREVGSU5FX2Jvb2woYXVkaW9fdmlkZW9fc3luYywKKyAgICAgICAg
ICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiU3luYyBhdWRpbyBhbmQgdmlk
ZW8gc3RyZWFtIChubyBlZmZlY3QgaWYiCisgICAgICAgICAgICAgICAgICAgIiBhdWRpbyBpcyBm
YWxzZSkiKTsKIAotREVGSU5FX2Jvb2woYXVkaW9fZHR4LCBmYWxzZSwgIkVuYWJsZSBhdWRpbyBE
VFggKG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSkiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChh
dWRpb19kdHgsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAg
IkVuYWJsZSBhdWRpbyBEVFggKG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSkiKTsKIAotREVG
SU5FX2Jvb2wodmlkZW8sIHRydWUsICJBZGQgdmlkZW8gc3RyZWFtIik7CitXRUJSVENfREVGSU5F
X2Jvb2wodmlkZW8sIHRydWUsICJBZGQgdmlkZW8gc3RyZWFtIik7CiAKLURFRklORV9zdHJpbmco
CitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICBmb3JjZV9maWVsZHRyaWFscywKICAgICAiIiwK
ICAgICAiRmllbGQgdHJpYWxzIGNvbnRyb2wgZXhwZXJpbWVudGFsIGZlYXR1cmUgY29kZSB3aGlj
aCBjYW4gYmUgZm9yY2VkLiAiCkBAIC00NDcsMTUgKzQ3NSwxNiBAQCBERUZJTkVfc3RyaW5nKAog
ICAgICJ0cmlhbHMgYXJlIHNlcGFyYXRlZCBieSBcIi9cIiIpOwogCiAvLyBWaWRlby1zcGVjaWZp
YyBmbGFncy4KLURFRklORV9zdHJpbmcodmNsaXAsCi0gICAgICAgICAgICAgICIiLAotICAgICAg
ICAgICAgICAiTmFtZSBvZiB0aGUgY2xpcCB0byBzaG93LiBJZiBlbXB0eSwgdGhlIGNhbWVyYSBp
cyB1c2VkLiBVc2UgIgotICAgICAgICAgICAgICAiXCJHZW5lcmF0b3JcIiBmb3IgY2hyb21hIGdl
bmVyYXRvci4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIHZjbGlwLAorICAgICIiLAor
ICAgICJOYW1lIG9mIHRoZSBjbGlwIHRvIHNob3cuIElmIGVtcHR5LCB0aGUgY2FtZXJhIGlzIHVz
ZWQuIFVzZSAiCisgICAgIlwiR2VuZXJhdG9yXCIgZm9yIGNocm9tYSBnZW5lcmF0b3IuIik7CiBz
dGQ6OnN0cmluZyBWaWRlb0NsaXAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmlu
Zz4oRkxBR192Y2xpcCk7CiB9CiAKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRo
aXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRo
aXMgbWVzc2FnZSIpOwogCiB9ICAvLyBuYW1lc3BhY2UgZmxhZ3MKIApAQCAtNDc1LDcgKzUwNCw3
IEBAIHZvaWQgTG9vcGJhY2soKSB7CiAgICAgc2NyZWVuc2hhcmVfaWR4ID0gMDsKICAgfQogCi0g
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBwaXBlX2NvbmZpZzsKKyAgQnVpbHRJbk5l
dHdvcmtCZWhhdmlvckNvbmZpZyBwaXBlX2NvbmZpZzsKICAgcGlwZV9jb25maWcubG9zc19wZXJj
ZW50ID0gZmxhZ3M6Okxvc3NQZXJjZW50KCk7CiAgIHBpcGVfY29uZmlnLmF2Z19idXJzdF9sb3Nz
X2xlbmd0aCA9IGZsYWdzOjpBdmdCdXJzdExvc3NMZW5ndGgoKTsKICAgcGlwZV9jb25maWcubGlu
a19jYXBhY2l0eV9rYnBzID0gZmxhZ3M6OkxpbmtDYXBhY2l0eUticHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3RyYW5zcG9y
dF9hZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92
aWRlby90cmFuc3BvcnRfYWRhcHRlci5oCmluZGV4IDhlYzUzZmRmMjVhOTE2YzcxMDI5YzdkZWFl
MjRiNTg4N2ZlMjcyYWYuLjc4Njg1OGIwZTIxYzc0MTAzNDEwZWM0ZmViMmQ0NGVjNDg5OWFlOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL3RyYW5zcG9ydF9hZGFwdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vdHJhbnNwb3J0X2FkYXB0ZXIuaApAQCAtMTMsNyArMTMsNiBA
QAogI2luY2x1ZGUgPGF0b21pYz4KIAogI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgot
I2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIGludGVybmFsIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX2FuYWx5emVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlk
ZW9fYW5hbHl6ZXIuY2MKaW5kZXggMDVhYmUxZmNmM2IyNDBiMjI5ZTIzZDJkZDAyMTM3NDExYWUy
ZDgzMS4uMWZkMjJmZjgwNjBiMDk0YTVkZDg1NDFiODlkNGI1YjRlOGMyZTYwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9f
YW5hbHl6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vdmlkZW9fYW5hbHl6ZXIuY2MKQEAgLTE4LDE3ICsxOCwxOCBAQAogI2luY2x1ZGUg
InJ0Y19iYXNlL2ZsYWdzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL21lbW9yeV91c2FnZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Bh
dGh1dGlscy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9pbmZvLmgi
CiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0
L2ZpbGV1dGlscy5oIgogI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZnJhbWVfd3JpdGVyLmgi
CiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9wZXJmX3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0
L3Rlc3RzdXBwb3J0L3Rlc3RfYXJ0aWZhY3RzLmgiCiAKLURFRklORV9ib29sKHNhdmVfd29yc3Rf
ZnJhbWUsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJFbmFibGUgc2F2aW5nIGEg
ZnJhbWUgd2l0aCB0aGUgbG93ZXN0IFBTTlIgdG8gYSBqcGVnIGZpbGUgaW4gdGhlICIKLSAgICAg
ICAgICAgICJ0ZXN0X2FydGlmYWN0c19kaXIiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBz
YXZlX3dvcnN0X2ZyYW1lLAorICAgIGZhbHNlLAorICAgICJFbmFibGUgc2F2aW5nIGEgZnJhbWUg
d2l0aCB0aGUgbG93ZXN0IFBTTlIgdG8gYSBqcGVnIGZpbGUgaW4gdGhlICIKKyAgICAidGVzdF9h
cnRpZmFjdHNfZGlyIik7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKQEAgLTcw
LDcgKzcxLDYgQEAgVmlkZW9BbmFseXplcjo6VmlkZW9BbmFseXplcih0ZXN0OjpMYXllckZpbHRl
cmluZ1RyYW5zcG9ydCogdHJhbnNwb3J0LAogICAgICAgc2VsZWN0ZWRfc3RyZWFtXyhzZWxlY3Rl
ZF9zdHJlYW0pLAogICAgICAgc2VsZWN0ZWRfc2xfKHNlbGVjdGVkX3NsKSwKICAgICAgIHNlbGVj
dGVkX3RsXyhzZWxlY3RlZF90bCksCi0gICAgICBwcmVfZW5jb2RlX3Byb3h5Xyh0aGlzKSwKICAg
ICAgIGxhc3RfZmVjX2J5dGVzXygwKSwKICAgICAgIGZyYW1lc190b19wcm9jZXNzXyhkdXJhdGlv
bl9mcmFtZXMpLAogICAgICAgZnJhbWVzX3JlY29yZGVkXygwKSwKQEAgLTkxLDcgKzkxLDYgQEAg
VmlkZW9BbmFseXplcjo6VmlkZW9BbmFseXplcih0ZXN0OjpMYXllckZpbHRlcmluZ1RyYW5zcG9y
dCogdHJhbnNwb3J0LAogICAgICAgYXZnX3NzaW1fdGhyZXNob2xkXyhhdmdfc3NpbV90aHJlc2hv
bGQpLAogICAgICAgaXNfcXVpY2tfdGVzdF9lbmFibGVkXyhpc19xdWlja190ZXN0X2VuYWJsZWQp
LAogICAgICAgc3RhdHNfcG9sbGluZ190aHJlYWRfKCZQb2xsU3RhdHNUaHJlYWQsIHRoaXMsICJT
dGF0c1BvbGxlciIpLAotICAgICAgY29tcGFyaXNvbl9hdmFpbGFibGVfZXZlbnRfKGZhbHNlLCBm
YWxzZSksCiAgICAgICBkb25lXyh0cnVlLCBmYWxzZSksCiAgICAgICBjbG9ja18oY2xvY2spLAog
ICAgICAgc3RhcnRfbXNfKGNsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSkgewpAQCAtMjMxLDEw
ICsyMzAsMTAgQEAgdm9pZCBWaWRlb0FuYWx5emVyOjpQcmVFbmNvZGVPbkZyYW1lKGNvbnN0IFZp
ZGVvRnJhbWUmIHZpZGVvX2ZyYW1lKSB7CiAgIH0KIH0KIAotdm9pZCBWaWRlb0FuYWx5emVyOjpF
bmNvZGVkRnJhbWVDYWxsYmFjayhjb25zdCBFbmNvZGVkRnJhbWUmIGVuY29kZWRfZnJhbWUpIHsK
K3ZvaWQgVmlkZW9BbmFseXplcjo6UG9zdEVuY29kZU9uRnJhbWUoc2l6ZV90IHN0cmVhbV9pZCwg
dWludDMyX3QgdGltZXN0YW1wKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfKTsKLSAg
aWYgKCFmaXJzdF9zZW50X3RpbWVzdGFtcF8gJiYgZW5jb2RlZF9mcmFtZS5zdHJlYW1faWRfID09
IHNlbGVjdGVkX3N0cmVhbV8pIHsKLSAgICBmaXJzdF9zZW50X3RpbWVzdGFtcF8gPSBlbmNvZGVk
X2ZyYW1lLnRpbWVzdGFtcF87CisgIGlmICghZmlyc3Rfc2VudF90aW1lc3RhbXBfICYmIHN0cmVh
bV9pZCA9PSBzZWxlY3RlZF9zdHJlYW1fKSB7CisgICAgZmlyc3Rfc2VudF90aW1lc3RhbXBfID0g
dGltZXN0YW1wOwogICB9CiB9CiAKQEAgLTM2NiwxMCArMzY1LDYgQEAgdm9pZCBWaWRlb0FuYWx5
emVyOjpXYWl0KCkgewogICBzdGF0c19wb2xsaW5nX3RocmVhZF8uU3RvcCgpOwogfQogCi1ydGM6
OlZpZGVvU2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiogVmlkZW9BbmFseXplcjo6cHJlX2VuY29k
ZV9wcm94eSgpIHsKLSAgcmV0dXJuICZwcmVfZW5jb2RlX3Byb3h5XzsKLX0KLQogdm9pZCBWaWRl
b0FuYWx5emVyOjpTdGFydE1lYXN1cmluZ0NwdVByb2Nlc3NUaW1lKCkgewogICBydGM6OkNyaXRT
Y29wZSBsb2NrKCZjcHVfbWVhc3VyZW1lbnRfbG9ja18pOwogICBjcHVfdGltZV8gLT0gcnRjOjpH
ZXRQcm9jZXNzQ3B1VGltZU5hbm9zKCk7CkBAIC02MTEsNyArNjA2LDcgQEAgdm9pZCBWaWRlb0Fu
YWx5emVyOjpQcmludFJlc3VsdHMoKSB7CiAgICAgc3RkOjpzdHJpbmcgb3V0cHV0X2RpcjsKICAg
ICB0ZXN0OjpHZXRUZXN0QXJ0aWZhY3RzRGlyKCZvdXRwdXRfZGlyKTsKICAgICBzdGQ6OnN0cmlu
ZyBvdXRwdXRfcGF0aCA9Ci0gICAgICAgIHJ0Yzo6UGF0aG5hbWUob3V0cHV0X2RpciwgdGVzdF9s
YWJlbF8gKyAiLmpwZyIpLnBhdGhuYW1lKCk7CisgICAgICAgIHRlc3Q6OkpvaW5GaWxlbmFtZShv
dXRwdXRfZGlyLCB0ZXN0X2xhYmVsXyArICIuanBnIik7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8
PCAiU2F2aW5nIHdvcnN0IGZyYW1lIHRvICIgPDwgb3V0cHV0X3BhdGg7CiAgICAgdGVzdDo6SnBl
Z0ZyYW1lV3JpdGVyIGZyYW1lX3dyaXRlcihvdXRwdXRfcGF0aCk7CiAgICAgUlRDX0NIRUNLKApA
QCAtODQxLDEzICs4MzYsNiBAQCBWaWRlb0FuYWx5emVyOjpTYW1wbGU6OlNhbXBsZShpbnQgZHJv
cHBlZCwKICAgICAgIHBzbnIocHNuciksCiAgICAgICBzc2ltKHNzaW0pIHt9CiAKLVZpZGVvQW5h
bHl6ZXI6OlByZUVuY29kZVByb3h5OjpQcmVFbmNvZGVQcm94eShWaWRlb0FuYWx5emVyKiBwYXJl
bnQpCi0gICAgOiBwYXJlbnRfKHBhcmVudCkge30KLQotdm9pZCBWaWRlb0FuYWx5emVyOjpQcmVF
bmNvZGVQcm94eTo6T25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb19mcmFtZSkgewotICBw
YXJlbnRfLT5QcmVFbmNvZGVPbkZyYW1lKHZpZGVvX2ZyYW1lKTsKLX0KLQogVmlkZW9BbmFseXpl
cjo6Q2FwdHVyZWRGcmFtZUZvcndhcmRlcjo6Q2FwdHVyZWRGcmFtZUZvcndhcmRlcigKICAgICBW
aWRlb0FuYWx5emVyKiBhbmFseXplciwKICAgICBDbG9jayogY2xvY2spCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19hbmFs
eXplci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
dmlkZW9fYW5hbHl6ZXIuaAppbmRleCA2ODFkMWY0NjRmNDgxYzZlN2JhZjNmMWZmNjFmZGNhZTJm
NDBkN2NkLi5kMmM0ZmE4NGNkYTNhMTViMzdlNjAwNzY5OGI3YmNjOWY5N2ZhZTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRl
b19hbmFseXplci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3ZpZGVvX2FuYWx5emVyLmgKQEAgLTI1LDggKzI1LDcgQEAgbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKIGNsYXNzIFZpZGVvQW5hbHl6ZXIgOiBwdWJsaWMgUGFja2V0UmVjZWl2ZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIFRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4sCi0gICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIEVuY29kZWRGcmFtZU9ic2VydmVyIHsKKyAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4gewog
IHB1YmxpYzoKICAgVmlkZW9BbmFseXplcih0ZXN0OjpMYXllckZpbHRlcmluZ1RyYW5zcG9ydCog
dHJhbnNwb3J0LAogICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X2xhYmVs
LApAQCAtNjEsOSArNjAsNyBAQCBjbGFzcyBWaWRlb0FuYWx5emVyIDogcHVibGljIFBhY2tldFJl
Y2VpdmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3Rp
bWVfdXMpIG92ZXJyaWRlOwogCiAgIHZvaWQgUHJlRW5jb2RlT25GcmFtZShjb25zdCBWaWRlb0Zy
YW1lJiB2aWRlb19mcmFtZSk7Ci0KLSAgLy8gRW5jb2RlZEZyYW1lT2JzZXJ2ZXIgaW1wbGVtZW50
YXRpb24sIHdpcmVkIHRvIHBvc3RfZW5jb2RlX2NhbGxiYWNrLgotICB2b2lkIEVuY29kZWRGcmFt
ZUNhbGxiYWNrKGNvbnN0IEVuY29kZWRGcmFtZSYgZW5jb2RlZF9mcmFtZSkgb3ZlcnJpZGU7Cisg
IHZvaWQgUG9zdEVuY29kZU9uRnJhbWUoc2l6ZV90IHN0cmVhbV9pZCwgdWludDMyX3QgdGltZXN0
YW1wKTsKIAogICBib29sIFNlbmRSdHAoY29uc3QgdWludDhfdCogcGFja2V0LAogICAgICAgICAg
ICAgICAgc2l6ZV90IGxlbmd0aCwKQEAgLTczLDggKzcwLDYgQEAgY2xhc3MgVmlkZW9BbmFseXpl
ciA6IHB1YmxpYyBQYWNrZXRSZWNlaXZlciwKICAgdm9pZCBPbkZyYW1lKGNvbnN0IFZpZGVvRnJh
bWUmIHZpZGVvX2ZyYW1lKSBvdmVycmlkZTsKICAgdm9pZCBXYWl0KCk7CiAKLSAgcnRjOjpWaWRl
b1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4qIHByZV9lbmNvZGVfcHJveHkoKTsKLQogICB2b2lk
IFN0YXJ0TWVhc3VyaW5nQ3B1UHJvY2Vzc1RpbWUoKTsKICAgdm9pZCBTdG9wTWVhc3VyaW5nQ3B1
UHJvY2Vzc1RpbWUoKTsKICAgdm9pZCBTdGFydEV4Y2x1ZGluZ0NwdVRocmVhZFRpbWUoKTsKQEAg
LTEzMiwxNyArMTI3LDYgQEAgY2xhc3MgVmlkZW9BbmFseXplciA6IHB1YmxpYyBQYWNrZXRSZWNl
aXZlciwKICAgICBkb3VibGUgc3NpbTsKICAgfTsKIAotICAvLyBUaGlzIGNsYXNzIHJlY2VpdmVz
IHRoZSBzZW5kLXNpZGUgT25GcmFtZSBjYWxsYmFjayBhbmQgaXMgcHJvdmlkZWQgdG8gbm90Ci0g
IC8vIGNvbmZsaWN0IHdpdGggdGhlIHJlY2VpdmVyLXNpZGUgcmVuZGVyZXIgY2FsbGJhY2suCi0g
IGNsYXNzIFByZUVuY29kZVByb3h5IDogcHVibGljIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPFZp
ZGVvRnJhbWU+IHsKLSAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBQcmVFbmNvZGVQcm94eShWaWRl
b0FuYWx5emVyKiBwYXJlbnQpOwotICAgIHZvaWQgT25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2
aWRlb19mcmFtZSkgb3ZlcnJpZGU7Ci0KLSAgIHByaXZhdGU6Ci0gICAgVmlkZW9BbmFseXplciog
Y29uc3QgcGFyZW50XzsKLSAgfTsKLQogICAvLyBJbXBsZW1lbnRzIFZpZGVvU2lua0ludGVyZmFj
ZSB0byByZWNlaXZlIGNhcHR1cmVkIGZyYW1lcyBmcm9tIGEKICAgLy8gRnJhbWVHZW5lcmF0b3JD
YXB0dXJlci4gSW1wbGVtZW50cyBWaWRlb1NvdXJjZUludGVyZmFjZSB0byBiZSBhYmxlIHRvIGFj
dAogICAvLyBhcyBhIHNvdXJjZSB0byBWaWRlb1NlbmRTdHJlYW0uCkBAIC0yMjEsNyArMjA1LDYg
QEAgY2xhc3MgVmlkZW9BbmFseXplciA6IHB1YmxpYyBQYWNrZXRSZWNlaXZlciwKICAgY29uc3Qg
c2l6ZV90IHNlbGVjdGVkX3N0cmVhbV87CiAgIGNvbnN0IGludCBzZWxlY3RlZF9zbF87CiAgIGNv
bnN0IGludCBzZWxlY3RlZF90bF87Ci0gIFByZUVuY29kZVByb3h5IHByZV9lbmNvZGVfcHJveHlf
OwogCiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNvbXBhcmlzb25fbG9ja187CiAgIHN0ZDo6dmVj
dG9yPFNhbXBsZT4gc2FtcGxlc18gUlRDX0dVQVJERURfQlkoY29tcGFyaXNvbl9sb2NrXyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by92aWRlb19sb29wYmFjay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL3ZpZGVvX2xvb3BiYWNrLmNjCmluZGV4IDU3NTkwZWQxNDQ5NTQ3NTZlOTA5
NzM2NmE3YzA5YTc2ZWIwM2MxZjEuLjRjZGRkYjk0ZTUyODU4NTBkOTNkOTNiMDk4ZWM4MTNkNzJi
MGUzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3ZpZGVvX2xvb3BiYWNrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX2xvb3BiYWNrLmNjCkBAIC0yMiw2MSArMjIs
NjIgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgZmxhZ3MgewogCiAvLyBGbGFncyBj
b21tb24gd2l0aCBzY3JlZW5zaGFyZSBsb29wYmFjaywgd2l0aCBkaWZmZXJlbnQgZGVmYXVsdCB2
YWx1ZXMuCi1ERUZJTkVfaW50KHdpZHRoLCA2NDAsICJWaWRlbyB3aWR0aC4iKTsKK1dFQlJUQ19E
RUZJTkVfaW50KHdpZHRoLCA2NDAsICJWaWRlbyB3aWR0aC4iKTsKIHNpemVfdCBXaWR0aCgpIHsK
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oRkxBR193aWR0aCk7CiB9CiAKLURFRklORV9p
bnQoaGVpZ2h0LCA0ODAsICJWaWRlbyBoZWlnaHQuIik7CitXRUJSVENfREVGSU5FX2ludChoZWln
aHQsIDQ4MCwgIlZpZGVvIGhlaWdodC4iKTsKIHNpemVfdCBIZWlnaHQoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdfaGVpZ2h0KTsKIH0KIAotREVGSU5FX2ludChmcHMsIDMw
LCAiRnJhbWVzIHBlciBzZWNvbmQuIik7CitXRUJSVENfREVGSU5FX2ludChmcHMsIDMwLCAiRnJh
bWVzIHBlciBzZWNvbmQuIik7CiBpbnQgRnBzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihGTEFHX2Zwcyk7CiB9CiAKLURFRklORV9pbnQoY2FwdHVyZV9kZXZpY2VfaW5kZXgsIDAsICJD
YXB0dXJlIGRldmljZSB0byBzZWxlY3QiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGNhcHR1cmVfZGV2
aWNlX2luZGV4LCAwLCAiQ2FwdHVyZSBkZXZpY2UgdG8gc2VsZWN0Iik7CiBzaXplX3QgR2V0Q2Fw
dHVyZURldmljZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oRkxBR19jYXB0dXJl
X2RldmljZV9pbmRleCk7CiB9CiAKLURFRklORV9pbnQobWluX2JpdHJhdGUsIDUwLCAiQ2FsbCBh
bmQgc3RyZWFtIG1pbiBiaXRyYXRlIGluIGticHMuIik7CitXRUJSVENfREVGSU5FX2ludChtaW5f
Yml0cmF0ZSwgNTAsICJDYWxsIGFuZCBzdHJlYW0gbWluIGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGlu
dCBNaW5CaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19taW5f
Yml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQoc3RhcnRfYml0cmF0ZSwgMzAwLCAiQ2FsbCBzdGFy
dCBiaXRyYXRlIGluIGticHMuIik7CitXRUJSVENfREVGSU5FX2ludChzdGFydF9iaXRyYXRlLCAz
MDAsICJDYWxsIHN0YXJ0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBTdGFydEJpdHJhdGVLYnBz
KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3N0YXJ0X2JpdHJhdGUpOwogfQog
Ci1ERUZJTkVfaW50KHRhcmdldF9iaXRyYXRlLCA4MDAsICJTdHJlYW0gdGFyZ2V0IGJpdHJhdGUg
aW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHRhcmdldF9iaXRyYXRlLCA4MDAsICJTdHJl
YW0gdGFyZ2V0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBUYXJnZXRCaXRyYXRlS2JwcygpIHsK
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR190YXJnZXRfYml0cmF0ZSk7CiB9CiAKLURF
RklORV9pbnQobWF4X2JpdHJhdGUsIDgwMCwgIkNhbGwgYW5kIHN0cmVhbSBtYXggYml0cmF0ZSBp
biBrYnBzLiIpOworV0VCUlRDX0RFRklORV9pbnQobWF4X2JpdHJhdGUsIDgwMCwgIkNhbGwgYW5k
IHN0cmVhbSBtYXggYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IE1heEJpdHJhdGVLYnBzKCkgewog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX21heF9iaXRyYXRlKTsKIH0KIAotREVGSU5F
X2Jvb2woc3VzcGVuZF9iZWxvd19taW5fYml0cmF0ZSwKLSAgICAgICAgICAgIGZhbHNlLAotICAg
ICAgICAgICAgIlN1c3BlbmRzIHZpZGVvIGJlbG93IHRoZSBjb25maWd1cmVkIG1pbiBiaXRyYXRl
LiIpOworV0VCUlRDX0RFRklORV9ib29sKHN1c3BlbmRfYmVsb3dfbWluX2JpdHJhdGUsCisgICAg
ICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlN1c3BlbmRzIHZpZGVv
IGJlbG93IHRoZSBjb25maWd1cmVkIG1pbiBiaXRyYXRlLiIpOwogCi1ERUZJTkVfaW50KG51bV90
ZW1wb3JhbF9sYXllcnMsCi0gICAgICAgICAgIDEsCi0gICAgICAgICAgICJOdW1iZXIgb2YgdGVt
cG9yYWwgbGF5ZXJzLiBTZXQgdG8gMS00IHRvIG92ZXJyaWRlLiIpOworV0VCUlRDX0RFRklORV9p
bnQobnVtX3RlbXBvcmFsX2xheWVycywKKyAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAg
ICAgICAgICAiTnVtYmVyIG9mIHRlbXBvcmFsIGxheWVycy4gU2V0IHRvIDEtNCB0byBvdmVycmlk
ZS4iKTsKIGludCBOdW1UZW1wb3JhbExheWVycygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oRkxBR19udW1fdGVtcG9yYWxfbGF5ZXJzKTsKIH0KIAotREVGSU5FX2ludChpbnRlcl9sYXll
cl9wcmVkLAotICAgICAgICAgICAyLAotICAgICAgICAgICAiSW50ZXItbGF5ZXIgcHJlZGljdGlv
biBtb2RlLiAiCi0gICAgICAgICAgICIwIC0gZW5hYmxlZCwgMSAtIGRpc2FibGVkLCAyIC0gZW5h
YmxlZCBvbmx5IGZvciBrZXkgcGljdHVyZXMuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICBp
bnRlcl9sYXllcl9wcmVkLAorICAgIDIsCisgICAgIkludGVyLWxheWVyIHByZWRpY3Rpb24gbW9k
ZS4gIgorICAgICIwIC0gZW5hYmxlZCwgMSAtIGRpc2FibGVkLCAyIC0gZW5hYmxlZCBvbmx5IGZv
ciBrZXkgcGljdHVyZXMuIik7CiBJbnRlckxheWVyUHJlZE1vZGUgSW50ZXJMYXllclByZWQoKSB7
CiAgIGlmIChGTEFHX2ludGVyX2xheWVyX3ByZWQgPT0gMCkgewogICAgIHJldHVybiBJbnRlckxh
eWVyUHJlZE1vZGU6OmtPbjsKQEAgLTg5LDE5ICs5MCwyMCBAQCBJbnRlckxheWVyUHJlZE1vZGUg
SW50ZXJMYXllclByZWQoKSB7CiB9CiAKIC8vIEZsYWdzIGNvbW1vbiB3aXRoIHNjcmVlbnNoYXJl
IGxvb3BiYWNrLCB3aXRoIGVxdWFsIGRlZmF1bHQgdmFsdWVzLgotREVGSU5FX3N0cmluZyhjb2Rl
YywgIlZQOCIsICJWaWRlbyBjb2RlYyB0byB1c2UuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhj
b2RlYywgIlZQOCIsICJWaWRlbyBjb2RlYyB0byB1c2UuIik7CiBzdGQ6OnN0cmluZyBDb2RlYygp
IHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2NvZGVjKTsKIH0KIAot
REVGSU5FX2ludChzZWxlY3RlZF90bCwKLSAgICAgICAgICAgLTEsCi0gICAgICAgICAgICJUZW1w
b3JhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2FibGUgZmlsdGVyaW5nLiIp
OworV0VCUlRDX0RFRklORV9pbnQoCisgICAgc2VsZWN0ZWRfdGwsCisgICAgLTEsCisgICAgIlRl
bXBvcmFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZS4gLTEgdG8gZGlzYWJsZSBmaWx0ZXJpbmcu
Iik7CiBpbnQgU2VsZWN0ZWRUTCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19z
ZWxlY3RlZF90bCk7CiB9CiAKLURFRklORV9pbnQoCitXRUJSVENfREVGSU5FX2ludCgKICAgICBk
dXJhdGlvbiwKICAgICAwLAogICAgICJEdXJhdGlvbiBvZiB0aGUgdGVzdCBpbiBzZWNvbmRzLiBJ
ZiAwLCByZW5kZXJlZCB3aWxsIGJlIHNob3duIGluc3RlYWQuIik7CkBAIC0xMDksMTc3ICsxMTEs
MTk2IEBAIGludCBEdXJhdGlvblNlY3MoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZM
QUdfZHVyYXRpb24pOwogfQogCi1ERUZJTkVfc3RyaW5nKG91dHB1dF9maWxlbmFtZSwgIiIsICJU
YXJnZXQgZ3JhcGggZGF0YSBmaWxlbmFtZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKG91dHB1
dF9maWxlbmFtZSwgIiIsICJUYXJnZXQgZ3JhcGggZGF0YSBmaWxlbmFtZS4iKTsKIHN0ZDo6c3Ry
aW5nIE91dHB1dEZpbGVuYW1lKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+
KEZMQUdfb3V0cHV0X2ZpbGVuYW1lKTsKIH0KIAotREVGSU5FX3N0cmluZyhncmFwaF90aXRsZSwK
LSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJJZiBlbXB0eSwgdGl0bGUgd2lsbCBi
ZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGdyYXBo
X3RpdGxlLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAi
SWYgZW1wdHksIHRpdGxlIHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuIik7CiBzdGQ6
OnN0cmluZyBHcmFwaFRpdGxlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+
KEZMQUdfZ3JhcGhfdGl0bGUpOwogfQogCi1ERUZJTkVfaW50KGxvc3NfcGVyY2VudCwgMCwgIlBl
cmNlbnRhZ2Ugb2YgcGFja2V0cyByYW5kb21seSBsb3N0LiIpOworV0VCUlRDX0RFRklORV9pbnQo
bG9zc19wZXJjZW50LCAwLCAiUGVyY2VudGFnZSBvZiBwYWNrZXRzIHJhbmRvbWx5IGxvc3QuIik7
CiBpbnQgTG9zc1BlcmNlbnQoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbG9z
c19wZXJjZW50KTsKIH0KIAotREVGSU5FX2ludChhdmdfYnVyc3RfbG9zc19sZW5ndGgsIC0xLCAi
QXZlcmFnZSBidXJzdCBsZW5ndGggb2YgbG9zdCBwYWNrZXRzLiIpOworV0VCUlRDX0RFRklORV9p
bnQoYXZnX2J1cnN0X2xvc3NfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAg
ICAgICAgICAgICAiQXZlcmFnZSBidXJzdCBsZW5ndGggb2YgbG9zdCBwYWNrZXRzLiIpOwogaW50
IEF2Z0J1cnN0TG9zc0xlbmd0aCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19h
dmdfYnVyc3RfbG9zc19sZW5ndGgpOwogfQogCi1ERUZJTkVfaW50KGxpbmtfY2FwYWNpdHksCi0g
ICAgICAgICAgIDAsCi0gICAgICAgICAgICJDYXBhY2l0eSAoa2Jwcykgb2YgdGhlIGZha2UgbGlu
ay4gMCBtZWFucyBpbmZpbml0ZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGxpbmtfY2FwYWNpdHks
CisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIkNhcGFjaXR5IChrYnBz
KSBvZiB0aGUgZmFrZSBsaW5rLiAwIG1lYW5zIGluZmluaXRlLiIpOwogaW50IExpbmtDYXBhY2l0
eUticHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbGlua19jYXBhY2l0eSk7
CiB9CiAKLURFRklORV9pbnQocXVldWVfc2l6ZSwgMCwgIlNpemUgb2YgdGhlIGJvdHRsZW5lY2sg
bGluayBxdWV1ZSBpbiBwYWNrZXRzLiIpOworV0VCUlRDX0RFRklORV9pbnQocXVldWVfc2l6ZSwK
KyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiU2l6ZSBvZiB0aGUgYm90
dGxlbmVjayBsaW5rIHF1ZXVlIGluIHBhY2tldHMuIik7CiBpbnQgUXVldWVTaXplKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3F1ZXVlX3NpemUpOwogfQogCi1ERUZJTkVfaW50
KGF2Z19wcm9wYWdhdGlvbl9kZWxheV9tcywKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkF2
ZXJhZ2UgbGluayBwcm9wYWdhdGlvbiBkZWxheSBpbiBtcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50
KGF2Z19wcm9wYWdhdGlvbl9kZWxheV9tcywKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAg
ICAgICAgICAgICAiQXZlcmFnZSBsaW5rIHByb3BhZ2F0aW9uIGRlbGF5IGluIG1zLiIpOwogaW50
IEF2Z1Byb3BhZ2F0aW9uRGVsYXlNcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxB
R19hdmdfcHJvcGFnYXRpb25fZGVsYXlfbXMpOwogfQogCi1ERUZJTkVfc3RyaW5nKHJ0Y19ldmVu
dF9sb2dfbmFtZSwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJGaWxlbmFtZSBm
b3IgcnRjIGV2ZW50IGxvZy4gVHdvIGZpbGVzICIKLSAgICAgICAgICAgICAgIndpdGggXCJfc2Vu
ZFwiIGFuZCBcIl9yZWN2XCIgc3VmZml4ZXMgd2lsbCBiZSBjcmVhdGVkLiIpOworV0VCUlRDX0RF
RklORV9zdHJpbmcocnRjX2V2ZW50X2xvZ19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIiIs
CisgICAgICAgICAgICAgICAgICAgICAiRmlsZW5hbWUgZm9yIHJ0YyBldmVudCBsb2cuIFR3byBm
aWxlcyAiCisgICAgICAgICAgICAgICAgICAgICAid2l0aCBcIl9zZW5kXCIgYW5kIFwiX3JlY3Zc
IiBzdWZmaXhlcyB3aWxsIGJlIGNyZWF0ZWQuIik7CiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ05h
bWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19ydGNfZXZlbnRf
bG9nX25hbWUpOwogfQogCi1ERUZJTkVfc3RyaW5nKHJ0cF9kdW1wX25hbWUsICIiLCAiRmlsZW5h
bWUgZm9yIGR1bXBlZCByZWNlaXZlZCBSVFAgc3RyZWFtLiIpOworV0VCUlRDX0RFRklORV9zdHJp
bmcocnRwX2R1bXBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAg
ICAgICAgICAgIkZpbGVuYW1lIGZvciBkdW1wZWQgcmVjZWl2ZWQgUlRQIHN0cmVhbS4iKTsKIHN0
ZDo6c3RyaW5nIFJ0cER1bXBOYW1lKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJp
bmc+KEZMQUdfcnRwX2R1bXBfbmFtZSk7CiB9CiAKLURFRklORV9pbnQoc3RkX3Byb3BhZ2F0aW9u
X2RlbGF5X21zLAotICAgICAgICAgICAwLAotICAgICAgICAgICAiTGluayBwcm9wYWdhdGlvbiBk
ZWxheSBzdGFuZGFyZCBkZXZpYXRpb24gaW4gbXMuIik7CitXRUJSVENfREVGSU5FX2ludChzdGRf
cHJvcGFnYXRpb25fZGVsYXlfbXMsCisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAg
ICAgICAgIkxpbmsgcHJvcGFnYXRpb24gZGVsYXkgc3RhbmRhcmQgZGV2aWF0aW9uIGluIG1zLiIp
OwogaW50IFN0ZFByb3BhZ2F0aW9uRGVsYXlNcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oRkxBR19zdGRfcHJvcGFnYXRpb25fZGVsYXlfbXMpOwogfQogCi1ERUZJTkVfaW50KG51bV9z
dHJlYW1zLCAwLCAiTnVtYmVyIG9mIHN0cmVhbXMgdG8gc2hvdyBvciBhbmFseXplLiIpOworV0VC
UlRDX0RFRklORV9pbnQobnVtX3N0cmVhbXMsIDAsICJOdW1iZXIgb2Ygc3RyZWFtcyB0byBzaG93
IG9yIGFuYWx5emUuIik7CiBpbnQgTnVtU3RyZWFtcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oRkxBR19udW1fc3RyZWFtcyk7CiB9CiAKLURFRklORV9pbnQoc2VsZWN0ZWRfc3RyZWFt
LAotICAgICAgICAgICAwLAotICAgICAgICAgICAiSUQgb2YgdGhlIHN0cmVhbSB0byBzaG93IG9y
IGFuYWx5emUuICIKLSAgICAgICAgICAgIlNldCB0byB0aGUgbnVtYmVyIG9mIHN0cmVhbXMgdG8g
c2hvdyB0aGVtIGFsbC4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNlbGVjdGVkX3N0cmVhbSwKKyAg
ICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiSUQgb2YgdGhlIHN0cmVhbSB0
byBzaG93IG9yIGFuYWx5emUuICIKKyAgICAgICAgICAgICAgICAgICJTZXQgdG8gdGhlIG51bWJl
ciBvZiBzdHJlYW1zIHRvIHNob3cgdGhlbSBhbGwuIik7CiBpbnQgU2VsZWN0ZWRTdHJlYW0oKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2VsZWN0ZWRfc3RyZWFtKTsKIH0KIAot
REVGSU5FX2ludChudW1fc3BhdGlhbF9sYXllcnMsIDEsICJOdW1iZXIgb2Ygc3BhdGlhbCBsYXll
cnMgdG8gdXNlLiIpOworV0VCUlRDX0RFRklORV9pbnQobnVtX3NwYXRpYWxfbGF5ZXJzLCAxLCAi
TnVtYmVyIG9mIHNwYXRpYWwgbGF5ZXJzIHRvIHVzZS4iKTsKIGludCBOdW1TcGF0aWFsTGF5ZXJz
KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX251bV9zcGF0aWFsX2xheWVycyk7
CiB9CiAKLURFRklORV9pbnQoc2VsZWN0ZWRfc2wsCi0gICAgICAgICAgIC0xLAotICAgICAgICAg
ICAiU3BhdGlhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2FibGUgZmlsdGVy
aW5nLiIpOworV0VCUlRDX0RFRklORV9pbnQoc2VsZWN0ZWRfc2wsCisgICAgICAgICAgICAgICAg
ICAtMSwKKyAgICAgICAgICAgICAgICAgICJTcGF0aWFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6
ZS4gLTEgdG8gZGlzYWJsZSBmaWx0ZXJpbmcuIik7CiBpbnQgU2VsZWN0ZWRTTCgpIHsKICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zZWxlY3RlZF9zbCk7CiB9CiAKLURFRklORV9zdHJp
bmcoc3RyZWFtMCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJDb21tYSBzZXBh
cmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHN0cmVhbSAjMC4iKTsKK1dF
QlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIHN0cmVhbTAsCisgICAgIiIsCisgICAgIkNvbW1hIHNl
cGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBWaWRlb1N0cmVhbSBmb3Igc3RyZWFtICMwLiIpOwog
c3RkOjpzdHJpbmcgU3RyZWFtMCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5n
PihGTEFHX3N0cmVhbTApOwogfQogCi1ERUZJTkVfc3RyaW5nKHN0cmVhbTEsCi0gICAgICAgICAg
ICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5n
IFZpZGVvU3RyZWFtIGZvciBzdHJlYW0gIzEuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAg
ICBzdHJlYW0xLAorICAgICIiLAorICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJp
bmcgVmlkZW9TdHJlYW0gZm9yIHN0cmVhbSAjMS4iKTsKIHN0ZDo6c3RyaW5nIFN0cmVhbTEoKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zdHJlYW0xKTsKIH0KIAot
REVGSU5FX3N0cmluZyhzbDAsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiQ29t
bWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3IgbGF5ZXIgIzAu
Iik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzbDAsCisgICAgIiIsCisgICAgIkNvbW1h
IHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxheWVyICMwLiIp
Owogc3RkOjpzdHJpbmcgU0wwKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+
KEZMQUdfc2wwKTsKIH0KIAotREVGSU5FX3N0cmluZyhzbDEsCi0gICAgICAgICAgICAgICIiLAot
ICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxM
YXllciBmb3IgbGF5ZXIgIzEuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzbDEsCisg
ICAgIiIsCisgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5
ZXIgZm9yIGxheWVyICMxLiIpOwogc3RkOjpzdHJpbmcgU0wxKCkgewogICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc2wxKTsKIH0KIAotREVGSU5FX3N0cmluZyhlbmNvZGVk
X2ZyYW1lX3BhdGgsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiVGhlIGJhc2Ug
cGF0aCBmb3IgZW5jb2RlZCBmcmFtZSBsb2dzLiBDcmVhdGVkIGZpbGVzIHdpbGwgaGF2ZSAiCi0g
ICAgICAgICAgICAgICJ0aGUgZm9ybSA8ZW5jb2RlZF9mcmFtZV9wYXRoPi48bj4uKHJlY3Z8c2Vu
ZC48bT4pLml2ZiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgZW5jb2RlZF9mcmFtZV9w
YXRoLAorICAgICIiLAorICAgICJUaGUgYmFzZSBwYXRoIGZvciBlbmNvZGVkIGZyYW1lIGxvZ3Mu
IENyZWF0ZWQgZmlsZXMgd2lsbCBoYXZlICIKKyAgICAidGhlIGZvcm0gPGVuY29kZWRfZnJhbWVf
cGF0aD4uPG4+LihyZWN2fHNlbmQuPG0+KS5pdmYiKTsKIHN0ZDo6c3RyaW5nIEVuY29kZWRGcmFt
ZVBhdGgoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19lbmNvZGVk
X2ZyYW1lX3BhdGgpOwogfQogCi1ERUZJTkVfYm9vbChsb2dzLCBmYWxzZSwgInByaW50IGxvZ3Mg
dG8gc3RkZXJyIik7CitXRUJSVENfREVGSU5FX2Jvb2wobG9ncywgZmFsc2UsICJwcmludCBsb2dz
IHRvIHN0ZGVyciIpOwogCi1ERUZJTkVfYm9vbChzZW5kX3NpZGVfYndlLCB0cnVlLCAiVXNlIHNl
bmQtc2lkZSBiYW5kd2lkdGggZXN0aW1hdGlvbiIpOworV0VCUlRDX0RFRklORV9ib29sKHNlbmRf
c2lkZV9id2UsIHRydWUsICJVc2Ugc2VuZC1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0aW9uIik7CiAK
LURFRklORV9ib29sKGdlbmVyaWNfZGVzY3JpcHRvciwgZmFsc2UsICJVc2UgdGhlIGdlbmVyaWMg
ZnJhbWUgZGVzY3JpcHRvci4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChnZW5lcmljX2Rlc2NyaXB0
b3IsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlVzZSB0
aGUgZ2VuZXJpYyBmcmFtZSBkZXNjcmlwdG9yLiIpOwogCi1ERUZJTkVfYm9vbChhbGxvd19yZW9y
ZGVyaW5nLCBmYWxzZSwgIkFsbG93IHBhY2tldCByZW9yZGVyaW5nIHRvIG9jY3VyIik7CitXRUJS
VENfREVGSU5FX2Jvb2woYWxsb3dfcmVvcmRlcmluZywgZmFsc2UsICJBbGxvdyBwYWNrZXQgcmVv
cmRlcmluZyB0byBvY2N1ciIpOwogCi1ERUZJTkVfYm9vbCh1c2VfdWxwZmVjLCBmYWxzZSwgIlVz
ZSBSRUQrVUxQRkVDIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbi4iKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbCh1c2VfdWxwZmVjLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICJVc2UgUkVEK1VMUEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24uIik7CiAKLURF
RklORV9ib29sKHVzZV9mbGV4ZmVjLCBmYWxzZSwgIlVzZSBGbGV4RkVDIGZvcndhcmQgZXJyb3Ig
Y29ycmVjdGlvbi4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCh1c2VfZmxleGZlYywgZmFsc2UsICJV
c2UgRmxleEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24uIik7CiAKLURFRklORV9ib29sKGF1
ZGlvLCBmYWxzZSwgIkFkZCBhdWRpbyBzdHJlYW0iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChhdWRp
bywgZmFsc2UsICJBZGQgYXVkaW8gc3RyZWFtIik7CiAKLURFRklORV9ib29sKHVzZV9yZWFsX2Fk
bSwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlVzZSByZWFsIEFETSBpbnN0ZWFk
IG9mIGZha2UgKG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSkiKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbCgKKyAgICB1c2VfcmVhbF9hZG0sCisgICAgZmFsc2UsCisgICAgIlVzZSByZWFsIEFETSBp
bnN0ZWFkIG9mIGZha2UgKG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSkiKTsKIAotREVGSU5F
X2Jvb2woYXVkaW9fdmlkZW9fc3luYywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAg
IlN5bmMgYXVkaW8gYW5kIHZpZGVvIHN0cmVhbSAobm8gZWZmZWN0IGlmIgotICAgICAgICAgICAg
IiBhdWRpbyBpcyBmYWxzZSkiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChhdWRpb192aWRlb19zeW5j
LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJTeW5jIGF1
ZGlvIGFuZCB2aWRlbyBzdHJlYW0gKG5vIGVmZmVjdCBpZiIKKyAgICAgICAgICAgICAgICAgICAi
IGF1ZGlvIGlzIGZhbHNlKSIpOwogCi1ERUZJTkVfYm9vbChhdWRpb19kdHgsIGZhbHNlLCAiRW5h
YmxlIGF1ZGlvIERUWCAobm8gZWZmZWN0IGlmIGF1ZGlvIGlzIGZhbHNlKSIpOworV0VCUlRDX0RF
RklORV9ib29sKGF1ZGlvX2R0eCwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAg
ICAgICAgICAgICAiRW5hYmxlIGF1ZGlvIERUWCAobm8gZWZmZWN0IGlmIGF1ZGlvIGlzIGZhbHNl
KSIpOwogCi1ERUZJTkVfYm9vbCh2aWRlbywgdHJ1ZSwgIkFkZCB2aWRlbyBzdHJlYW0iKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbCh2aWRlbywgdHJ1ZSwgIkFkZCB2aWRlbyBzdHJlYW0iKTsKIAotREVG
SU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIGZvcmNlX2ZpZWxkdHJpYWxz
LAogICAgICIiLAogICAgICJGaWVsZCB0cmlhbHMgY29udHJvbCBleHBlcmltZW50YWwgZmVhdHVy
ZSBjb2RlIHdoaWNoIGNhbiBiZSBmb3JjZWQuICIKLSAgICAiRS5nLiBydW5uaW5nIHdpdGggLS1m
b3JjZV9maWVsZHRyaWFscz1XZWJSVEMtRm9vRmVhdHVyZS9FbmFibGUvIgorICAgICJFLmcuIHJ1
bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZWQv
IgogICAgICIgd2lsbCBhc3NpZ24gdGhlIGdyb3VwIEVuYWJsZSB0byBmaWVsZCB0cmlhbCBXZWJS
VEMtRm9vRmVhdHVyZS4gTXVsdGlwbGUgIgogICAgICJ0cmlhbHMgYXJlIHNlcGFyYXRlZCBieSBc
Ii9cIiIpOwogCiAvLyBWaWRlby1zcGVjaWZpYyBmbGFncy4KLURFRklORV9zdHJpbmcoY2xpcCwK
LSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJOYW1lIG9mIHRoZSBjbGlwIHRvIHNo
b3cuIElmIGVtcHR5LCB1c2luZyBjaHJvbWEgZ2VuZXJhdG9yLiIpOworV0VCUlRDX0RFRklORV9z
dHJpbmcoCisgICAgY2xpcCwKKyAgICAiIiwKKyAgICAiTmFtZSBvZiB0aGUgY2xpcCB0byBzaG93
LiBJZiBlbXB0eSwgdXNpbmcgY2hyb21hIGdlbmVyYXRvci4iKTsKIHN0ZDo6c3RyaW5nIENsaXAo
KSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19jbGlwKTsKIH0KIAot
REVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CitXRUJSVENf
REVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CiAKIH0gIC8v
IG5hbWVzcGFjZSBmbGFncwogCiB2b2lkIExvb3BiYWNrKCkgewotICBEZWZhdWx0TmV0d29ya1Np
bXVsYXRpb25Db25maWcgcGlwZV9jb25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25m
aWcgcGlwZV9jb25maWc7CiAgIHBpcGVfY29uZmlnLmxvc3NfcGVyY2VudCA9IGZsYWdzOjpMb3Nz
UGVyY2VudCgpOwogICBwaXBlX2NvbmZpZy5hdmdfYnVyc3RfbG9zc19sZW5ndGggPSBmbGFnczo6
QXZnQnVyc3RMb3NzTGVuZ3RoKCk7CiAgIHBpcGVfY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9
IGZsYWdzOjpMaW5rQ2FwYWNpdHlLYnBzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X29ic2VydmVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9f
cXVhbGl0eV9vYnNlcnZlci5jYwppbmRleCBiMDVjMzUzNWUwY2U3MTcxNTIzMjFmNGE2YjBhNmZh
NTE0NDc4ZDA5Li5jNGE1NzRhYmZlMGU2MGExODI4NzljNTM0OWYxMzM2ODc4ZWY0MzU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92
aWRlb19xdWFsaXR5X29ic2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfb2JzZXJ2ZXIuY2MKQEAgLTM0LDcg
KzM0LDkgQEAgY29uc3QgaW50IGtCbG9ja3lRcFRocmVzaG9sZFZwOSA9IDYwOyAgLy8gVE9ETyhp
bG5payk6IHR1bmUgdGhpcyB2YWx1ZS4KIAogVmlkZW9RdWFsaXR5T2JzZXJ2ZXI6OlZpZGVvUXVh
bGl0eU9ic2VydmVyKFZpZGVvQ29udGVudFR5cGUgY29udGVudF90eXBlKQogICAgIDogbGFzdF9m
cmFtZV9kZWNvZGVkX21zXygtMSksCisgICAgICBsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXygtMSks
CiAgICAgICBudW1fZnJhbWVzX2RlY29kZWRfKDApLAorICAgICAgbnVtX2ZyYW1lc19yZW5kZXJl
ZF8oMCksCiAgICAgICBmaXJzdF9mcmFtZV9kZWNvZGVkX21zXygtMSksCiAgICAgICBsYXN0X2Zy
YW1lX3BpeGVsc18oMCksCiAgICAgICBsYXN0X2ZyYW1lX3FwXygwKSwKQEAgLTExOSw2ICsxMjEs
NDYgQEAgdm9pZCBWaWRlb1F1YWxpdHlPYnNlcnZlcjo6VXBkYXRlSGlzdG9ncmFtcygpIHsKICAg
UlRDX0xPRyhMU19JTkZPKSA8PCBsb2dfc3RyZWFtLnN0cigpOwogfQogCit2b2lkIFZpZGVvUXVh
bGl0eU9ic2VydmVyOjpPblJlbmRlcmVkRnJhbWUoaW50NjRfdCBub3dfbXMpIHsKKyAgaWYgKG51
bV9mcmFtZXNfcmVuZGVyZWRfID09IDApIHsKKyAgICBsYXN0X3VuZnJlZXplX3RpbWVfID0gbm93
X21zOworICB9CisKKyAgKytudW1fZnJhbWVzX3JlbmRlcmVkXzsKKworICBpZiAoIWlzX3BhdXNl
ZF8gJiYgbnVtX2ZyYW1lc19yZW5kZXJlZF8gPiAxKSB7CisgICAgLy8gUHJvY2VzcyBpbnRlci1m
cmFtZSBkZWxheS4KKyAgICBpbnQ2NF90IGludGVyZnJhbWVfZGVsYXlfbXMgPSBub3dfbXMgLSBs
YXN0X2ZyYW1lX3JlbmRlcmVkX21zXzsKKyAgICByZW5kZXJfaW50ZXJmcmFtZV9kZWxheXNfLkFk
ZChpbnRlcmZyYW1lX2RlbGF5X21zKTsKKyAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IGF2Z19pbnRl
cmZyYW1lX2RlbGF5ID0KKyAgICAgICAgcmVuZGVyX2ludGVyZnJhbWVfZGVsYXlzXy5Bdmcoa01p
bkZyYW1lU2FtcGxlc1RvRGV0ZWN0RnJlZXplKTsKKyAgICAvLyBDaGVjayBpZiBpdCB3YXMgYSBm
cmVlemUuCisgICAgaWYgKGF2Z19pbnRlcmZyYW1lX2RlbGF5ICYmCisgICAgICAgIGludGVyZnJh
bWVfZGVsYXlfbXMgPj0KKyAgICAgICAgICAgIHN0ZDo6bWF4KDMgKiAqYXZnX2ludGVyZnJhbWVf
ZGVsYXksCisgICAgICAgICAgICAgICAgICAgICAqYXZnX2ludGVyZnJhbWVfZGVsYXkgKyBrTWlu
SW5jcmVhc2VGb3JGcmVlemVNcykpIHsKKyAgICAgIGZyZWV6ZXNfZHVyYXRpb25zXy5BZGQoaW50
ZXJmcmFtZV9kZWxheV9tcyk7CisgICAgICBzbW9vdGhfcGxheWJhY2tfZHVyYXRpb25zXy5BZGQo
bGFzdF9mcmFtZV9yZW5kZXJlZF9tc18gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhc3RfdW5mcmVlemVfdGltZV8pOworICAgICAgbGFzdF91bmZyZWV6ZV90aW1lXyA9
IG5vd19tczsKKyAgICB9CisgIH0KKworICBpZiAoaXNfcGF1c2VkXykgeworICAgIC8vIElmIHRo
ZSBzdHJlYW0gd2FzIHBhdXNlZCBzaW5jZSB0aGUgcHJldmlvdXMgZnJhbWUsIGRvIG5vdCBjb3Vu
dCB0aGUKKyAgICAvLyBwYXVzZSB0b3dhcmQgc21vb3RoIHBsYXliYWNrLiBFeHBsaWNpdGx5IGNv
dW50IHRoZSBwYXJ0IGJlZm9yZSBpdCBhbmQKKyAgICAvLyBzdGFydCB0aGUgbmV3IHNtb290aCBw
bGF5YmFjayBpbnRlcnZhbCBmcm9tIHRoaXMgZnJhbWUuCisgICAgaXNfcGF1c2VkXyA9IGZhbHNl
OworICAgIGlmIChsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXyA+IGxhc3RfdW5mcmVlemVfdGltZV8p
IHsKKyAgICAgIHNtb290aF9wbGF5YmFja19kdXJhdGlvbnNfLkFkZChsYXN0X2ZyYW1lX3JlbmRl
cmVkX21zXyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF91bmZy
ZWV6ZV90aW1lXyk7CisgICAgfQorICAgIGxhc3RfdW5mcmVlemVfdGltZV8gPSBub3dfbXM7Cisg
IH0KKworICBsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXyA9IG5vd19tczsKK30KKwogdm9pZCBWaWRl
b1F1YWxpdHlPYnNlcnZlcjo6T25EZWNvZGVkRnJhbWUoYWJzbDo6b3B0aW9uYWw8dWludDhfdD4g
cXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LApA
QCAtMTI2LDcgKzE2OCw2IEBAIHZvaWQgVmlkZW9RdWFsaXR5T2JzZXJ2ZXI6Ok9uRGVjb2RlZEZy
YW1lKGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+IHFwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmlkZW9Db2RlY1R5cGUgY29kZWMpIHsKICAgaWYgKG51bV9mcmFt
ZXNfZGVjb2RlZF8gPT0gMCkgewogICAgIGZpcnN0X2ZyYW1lX2RlY29kZWRfbXNfID0gbm93X21z
OwotICAgIGxhc3RfdW5mcmVlemVfdGltZV8gPSBub3dfbXM7CiAgIH0KIAogICArK251bV9mcmFt
ZXNfZGVjb2RlZF87CkBAIC0xMzQsMjEgKzE3NSwxNCBAQCB2b2lkIFZpZGVvUXVhbGl0eU9ic2Vy
dmVyOjpPbkRlY29kZWRGcmFtZShhYnNsOjpvcHRpb25hbDx1aW50OF90PiBxcCwKICAgaWYgKCFp
c19wYXVzZWRfICYmIG51bV9mcmFtZXNfZGVjb2RlZF8gPiAxKSB7CiAgICAgLy8gUHJvY2VzcyBp
bnRlci1mcmFtZSBkZWxheS4KICAgICBpbnQ2NF90IGludGVyZnJhbWVfZGVsYXlfbXMgPSBub3df
bXMgLSBsYXN0X2ZyYW1lX2RlY29kZWRfbXNfOwotICAgIGludGVyZnJhbWVfZGVsYXlzXy5BZGQo
aW50ZXJmcmFtZV9kZWxheV9tcyk7CisgICAgZGVjb2RlX2ludGVyZnJhbWVfZGVsYXlzXy5BZGQo
aW50ZXJmcmFtZV9kZWxheV9tcyk7CiAgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBhdmdfaW50ZXJm
cmFtZV9kZWxheSA9Ci0gICAgICAgIGludGVyZnJhbWVfZGVsYXlzXy5Bdmcoa01pbkZyYW1lU2Ft
cGxlc1RvRGV0ZWN0RnJlZXplKTsKLSAgICAvLyBDaGVjayBpZiBpdCB3YXMgYSBmcmVlemUuCi0g
ICAgaWYgKGF2Z19pbnRlcmZyYW1lX2RlbGF5ICYmCi0gICAgICAgIGludGVyZnJhbWVfZGVsYXlf
bXMgPj0KKyAgICAgICAgZGVjb2RlX2ludGVyZnJhbWVfZGVsYXlzXy5Bdmcoa01pbkZyYW1lU2Ft
cGxlc1RvRGV0ZWN0RnJlZXplKTsKKyAgICAvLyBDb3VudCBzcGF0aWFsIG1ldHJpY3MgaWYgdGhl
cmUgd2VyZSBubyBmcmVlemUuCisgICAgaWYgKCFhdmdfaW50ZXJmcmFtZV9kZWxheSB8fAorICAg
ICAgICBpbnRlcmZyYW1lX2RlbGF5X21zIDwKICAgICAgICAgICAgIHN0ZDo6bWF4KDMgKiAqYXZn
X2ludGVyZnJhbWVfZGVsYXksCiAgICAgICAgICAgICAgICAgICAgICAqYXZnX2ludGVyZnJhbWVf
ZGVsYXkgKyBrTWluSW5jcmVhc2VGb3JGcmVlemVNcykpIHsKLSAgICAgIGZyZWV6ZXNfZHVyYXRp
b25zXy5BZGQoaW50ZXJmcmFtZV9kZWxheV9tcyk7Ci0gICAgICBzbW9vdGhfcGxheWJhY2tfZHVy
YXRpb25zXy5BZGQobGFzdF9mcmFtZV9kZWNvZGVkX21zXyAtCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGFzdF91bmZyZWV6ZV90aW1lXyk7Ci0gICAgICBsYXN0X3VuZnJl
ZXplX3RpbWVfID0gbm93X21zOwotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBPbmx5IGNvdW50IGlu
dGVyLWZyYW1lIGRlbGF5IGFzIHBsYXliYWNrIHRpbWUgaWYgdGhlcmUKLSAgICAgIC8vIHdhcyBu
byBmcmVlemUuCiAgICAgICB0aW1lX2luX3Jlc29sdXRpb25fbXNfW2N1cnJlbnRfcmVzb2x1dGlv
bl9dICs9IGludGVyZnJhbWVfZGVsYXlfbXM7CiAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IHFw
X2Jsb2NreV90aHJlc2hvbGQ7CiAgICAgICAvLyBUT0RPKGlsbmlrKTogYWRkIG90aGVyIGNvZGVj
IHR5cGVzIHdoZW4gd2UgaGF2ZSBRUCBmb3IgdGhlbS4KQEAgLTE2OCwxOCArMjAyLDYgQEAgdm9p
ZCBWaWRlb1F1YWxpdHlPYnNlcnZlcjo6T25EZWNvZGVkRnJhbWUoYWJzbDo6b3B0aW9uYWw8dWlu
dDhfdD4gcXAsCiAgICAgfQogICB9CiAKLSAgaWYgKGlzX3BhdXNlZF8pIHsKLSAgICAvLyBJZiB0
aGUgc3RyZWFtIHdhcyBwYXVzZWQgc2luY2UgdGhlIHByZXZpb3VzIGZyYW1lLCBkbyBub3QgY291
bnQgdGhlCi0gICAgLy8gcGF1c2UgdG93YXJkIHNtb290aCBwbGF5YmFjay4gRXhwbGljaXRseSBj
b3VudCB0aGUgcGFydCBiZWZvcmUgaXQgYW5kCi0gICAgLy8gc3RhcnQgdGhlIG5ldyBzbW9vdGgg
cGxheWJhY2sgaW50ZXJ2YWwgZnJvbSB0aGlzIGZyYW1lLgotICAgIGlzX3BhdXNlZF8gPSBmYWxz
ZTsKLSAgICBpZiAobGFzdF9mcmFtZV9kZWNvZGVkX21zXyA+IGxhc3RfdW5mcmVlemVfdGltZV8p
IHsKLSAgICAgIHNtb290aF9wbGF5YmFja19kdXJhdGlvbnNfLkFkZChsYXN0X2ZyYW1lX2RlY29k
ZWRfbXNfIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3VuZnJl
ZXplX3RpbWVfKTsKLSAgICB9Ci0gICAgbGFzdF91bmZyZWV6ZV90aW1lXyA9IG5vd19tczsKLSAg
fQotCiAgIGludDY0X3QgcGl4ZWxzID0gd2lkdGggKiBoZWlnaHQ7CiAgIGlmIChwaXhlbHMgPj0g
a1BpeGVsc0luSGlnaFJlc29sdXRpb24pIHsKICAgICBjdXJyZW50X3Jlc29sdXRpb25fID0gUmVz
b2x1dGlvbjo6SGlnaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfb2JzZXJ2ZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfb2JzZXJ2
ZXIuaAppbmRleCA4YmE0YWYzOTg0MmE4ZGUwMTA2ODNlMWNkYTc0NDhjMWY2ZDNkYmIxLi43NGYy
MDFlOGM0NWY1M2Y1NjdlZTBjOTc1OWY4NTk4Y2I3MzQ0ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X29i
c2VydmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vdmlkZW9fcXVhbGl0eV9vYnNlcnZlci5oCkBAIC0xNSw4ICsxNSw4IEBACiAjaW5jbHVk
ZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUg
ImFwaS92aWRlby92aWRlb19jb2RlY190eXBlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVv
X2NvbnRlbnRfdHlwZS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1
aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FtcGxlX2NvdW50ZXIu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFZpZGVvUXVh
bGl0eU9ic2VydmVyIHsKICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAogICAgICAg
ICAgICAgICAgICAgICAgIGludDY0X3Qgbm93X21zLAogICAgICAgICAgICAgICAgICAgICAgIFZp
ZGVvQ29kZWNUeXBlIGNvZGVjKTsKKyAgdm9pZCBPblJlbmRlcmVkRnJhbWUoaW50NjRfdCBub3df
bXMpOwogCiAgIHZvaWQgT25TdHJlYW1JbmFjdGl2ZSgpOwogCkBAIC00OCwxMyArNDksMTYgQEAg
Y2xhc3MgVmlkZW9RdWFsaXR5T2JzZXJ2ZXIgewogICB9OwogCiAgIGludDY0X3QgbGFzdF9mcmFt
ZV9kZWNvZGVkX21zXzsKKyAgaW50NjRfdCBsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXzsKICAgaW50
NjRfdCBudW1fZnJhbWVzX2RlY29kZWRfOworICBpbnQ2NF90IG51bV9mcmFtZXNfcmVuZGVyZWRf
OwogICBpbnQ2NF90IGZpcnN0X2ZyYW1lX2RlY29kZWRfbXNfOwogICBpbnQ2NF90IGxhc3RfZnJh
bWVfcGl4ZWxzXzsKICAgdWludDhfdCBsYXN0X2ZyYW1lX3FwXzsKICAgLy8gRGVjb2RlZCB0aW1l
c3RhbXAgb2YgdGhlIGxhc3QgZGVsYXllZCBmcmFtZS4KICAgaW50NjRfdCBsYXN0X3VuZnJlZXpl
X3RpbWVfOwotICBydGM6OlNhbXBsZUNvdW50ZXIgaW50ZXJmcmFtZV9kZWxheXNfOworICBydGM6
OlNhbXBsZUNvdW50ZXIgcmVuZGVyX2ludGVyZnJhbWVfZGVsYXlzXzsKKyAgcnRjOjpTYW1wbGVD
b3VudGVyIGRlY29kZV9pbnRlcmZyYW1lX2RlbGF5c187CiAgIC8vIEFuIGludGVyLWZyYW1lIGRl
bGF5IGlzIGNvdW50ZWQgYXMgYSBmcmVlemUgaWYgaXQncyBzaWduaWZpY2FudGx5IGxvbmdlcgog
ICAvLyB0aGFuIGF2ZXJhZ2UgaW50ZXItZnJhbWUgZGVsYXkuCiAgIHJ0Yzo6U2FtcGxlQ291bnRl
ciBmcmVlemVzX2R1cmF0aW9uc187CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X3Rl
c3QuY2MKaW5kZXggMmEzYmU2NzJkNzYwNjhhMTQxNTQzZTg5MGJhMWQ4YjYxYjViYzlhYi4uZDZj
Y2I2NTIyZTU4MzIxNzdmYzViNDg1MzI5ZGFkZDkxYTAyNzY3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcXVhbGl0eV90
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL3ZpZGVvX3F1YWxpdHlfdGVzdC5jYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPHN0
cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25l
dHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKICNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvb3V0cHV0L3J0Y19ldmVudF9sb2dfb3V0cHV0X2Zp
bGUuaCIKQEAgLTM1LDcgKzM2LDcgQEAKICNpbmNsdWRlICJ0ZXN0L3J1bl9sb29wLmgiCiAjaW5j
bHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKICNpbmNsdWRlICJ0ZXN0L3ZpZGVv
X3JlbmRlcmVyLmgiCi0jaW5jbHVkZSAidmlkZW8vdmlkZW9fYW5hbHl6ZXIuaCIKKyNpbmNsdWRl
ICJ2aWRlby9mcmFtZV9kdW1waW5nX2RlY29kZXIuaCIKICNpZmRlZiBXRUJSVENfV0lOCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZmFjdG9yeS5o
IgogI2VuZGlmCkBAIC03NSw2MSArNzYsMTYgQEAgY2xhc3MgVmlkZW9TdHJlYW1GYWN0b3J5CiAg
IHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBzdHJlYW1zXzsKIH07CiAKLS8vIEEgZGVjb2RlciB3
cmFwcGVyIHRoYXQgd3JpdGVzIHRoZSBlbmNvZGVkIGZyYW1lcyB0byBhIGZpbGUuCi1jbGFzcyBG
cmFtZUR1bXBpbmdEZWNvZGVyIDogcHVibGljIFZpZGVvRGVjb2RlciB7CisvLyBUaGlzIHdyYXBw
ZXIgcHJvdmlkZXMgdHdvIGZlYXR1cmVzIG5lZWRlZCBieSB0aGUgdmlkZW8gcXVhbGl0eSB0ZXN0
czoKKy8vICAxLiBJbnZva2UgVmlkZW9BbmFseXplciBjYWxsYmFja3MgYmVmb3JlIGFuZCBhZnRl
ciBlbmNvZGluZyBlYWNoIGZyYW1lLgorLy8gIDIuIFdyaXRlIHRoZSBlbmNvZGVkIGZyYW1lcyB0
byBmaWxlLCBvbmUgZmlsZSBwZXIgc2ltdWxjYXN0IGxheWVyLgorY2xhc3MgUXVhbGl0eVRlc3RW
aWRlb0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcml2YXRlIEVuY29kZWRJbWFnZUNhbGxiYWNrIHsKICBwdWJsaWM6Ci0gIEZy
YW1lRHVtcGluZ0RlY29kZXIoc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4gZGVjb2RlciwK
LSAgICAgICAgICAgICAgICAgICAgICBydGM6OlBsYXRmb3JtRmlsZSBmaWxlKQotICAgICAgOiBk
ZWNvZGVyXyhzdGQ6Om1vdmUoZGVjb2RlcikpLAotICAgICAgICB3cml0ZXJfKEl2ZkZpbGVXcml0
ZXI6OldyYXAocnRjOjpGaWxlKGZpbGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogYnl0ZV9saW1pdD0gKi8gMTAwMDAwMDAwKSkge30KLQotICBpbnQzMl90IEluaXRE
ZWNvZGUoY29uc3QgVmlkZW9Db2RlYyogY29kZWNfc2V0dGluZ3MsCi0gICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IG51bWJlcl9vZl9jb3Jlcykgb3ZlcnJpZGUgewotICAgIHJldHVybiBkZWNv
ZGVyXy0+SW5pdERlY29kZShjb2RlY19zZXR0aW5ncywgbnVtYmVyX29mX2NvcmVzKTsKLSAgfQot
Ci0gIGludDMyX3QgRGVjb2RlKGNvbnN0IEVuY29kZWRJbWFnZSYgaW5wdXRfaW1hZ2UsCi0gICAg
ICAgICAgICAgICAgIGJvb2wgbWlzc2luZ19mcmFtZXMsCi0gICAgICAgICAgICAgICAgIGNvbnN0
IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZvLAotICAgICAgICAgICAgICAg
ICBpbnQ2NF90IHJlbmRlcl90aW1lX21zKSBvdmVycmlkZSB7Ci0gICAgaW50MzJfdCByZXQgPSBk
ZWNvZGVyXy0+RGVjb2RlKGlucHV0X2ltYWdlLCBtaXNzaW5nX2ZyYW1lcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNfc3BlY2lmaWNfaW5mbywgcmVuZGVyX3RpbWVf
bXMpOwotICAgIHdyaXRlcl8tPldyaXRlRnJhbWUoaW5wdXRfaW1hZ2UsIGNvZGVjX3NwZWNpZmlj
X2luZm8tPmNvZGVjVHlwZSk7Ci0KLSAgICByZXR1cm4gcmV0OwotICB9Ci0KLSAgaW50MzJfdCBS
ZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soCi0gICAgICBEZWNvZGVkSW1hZ2VDYWxsYmFj
ayogY2FsbGJhY2spIG92ZXJyaWRlIHsKLSAgICByZXR1cm4gZGVjb2Rlcl8tPlJlZ2lzdGVyRGVj
b2RlQ29tcGxldGVDYWxsYmFjayhjYWxsYmFjayk7Ci0gIH0KLQotICBpbnQzMl90IFJlbGVhc2Uo
KSBvdmVycmlkZSB7IHJldHVybiBkZWNvZGVyXy0+UmVsZWFzZSgpOyB9Ci0KLSAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBkZWNvZGVyIHByZWZlciB0byBkZWNvZGUgZnJhbWVzIGxhdGUuCi0gIC8v
IFRoYXQgaXMsIGl0IGNhbiBub3QgZGVjb2RlIGluZmluaXRlIG51bWJlciBvZiBmcmFtZXMgYmVm
b3JlIHRoZSBkZWNvZGVkCi0gIC8vIGZyYW1lIGlzIGNvbnN1bWVkLgotICBib29sIFByZWZlcnNM
YXRlRGVjb2RpbmcoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIGRlY29kZXJfLT5QcmVm
ZXJzTGF0ZURlY29kaW5nKCk7Ci0gIH0KLQotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5h
bWUoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIGRlY29kZXJfLT5JbXBsZW1lbnRhdGlv
bk5hbWUoKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rl
cj4gZGVjb2Rlcl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxJdmZGaWxlV3JpdGVyPiB3cml0ZXJfOwot
fTsKLQotLy8gQW4gZW5jb2RlciB3cmFwcGVyIHRoYXQgd3JpdGVzIHRoZSBlbmNvZGVkIGZyYW1l
cyB0byBmaWxlLCBvbmUgcGVyIHNpbXVsY2FzdAotLy8gbGF5ZXIuCi1jbGFzcyBGcmFtZUR1bXBp
bmdFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVkSW1hZ2VDYWxs
YmFjayB7Ci0gcHVibGljOgotICBGcmFtZUR1bXBpbmdFbmNvZGVyKHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0VuY29kZXI+IGVuY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8
cnRjOjpQbGF0Zm9ybUZpbGU+IGZpbGVzKQotICAgICAgOiBlbmNvZGVyXyhzdGQ6Om1vdmUoZW5j
b2RlcikpIHsKKyAgUXVhbGl0eVRlc3RWaWRlb0VuY29kZXIoc3RkOjp1bmlxdWVfcHRyPFZpZGVv
RW5jb2Rlcj4gZW5jb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9BbmFseXpl
ciogYW5hbHl6ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6
UGxhdGZvcm1GaWxlPiBmaWxlcykKKyAgICAgIDogZW5jb2Rlcl8oc3RkOjptb3ZlKGVuY29kZXIp
KSwgYW5hbHl6ZXJfKGFuYWx5emVyKSB7CiAgICAgZm9yIChydGM6OlBsYXRmb3JtRmlsZSBmaWxl
IDogZmlsZXMpIHsKICAgICAgIHdyaXRlcnNfLnB1c2hfYmFjaygKICAgICAgICAgICBJdmZGaWxl
V3JpdGVyOjpXcmFwKHJ0Yzo6RmlsZShmaWxlKSwgLyogYnl0ZV9saW1pdD0gKi8gMTAwMDAwMDAw
KSk7CkBAIC0xNTEsMTEgKzEwNywxMSBAQCBjbGFzcyBGcmFtZUR1bXBpbmdFbmNvZGVyIDogcHVi
bGljIFZpZGVvRW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7CiAgIGludDMy
X3QgRW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLAogICAgICAgICAgICAgICAgICBjb25z
dCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiogZnJhbWVfdHlwZXMpIHsKKyAgICBpZiAo
YW5hbHl6ZXJfKSB7CisgICAgICBhbmFseXplcl8tPlByZUVuY29kZU9uRnJhbWUoZnJhbWUpOwor
ICAgIH0KICAgICByZXR1cm4gZW5jb2Rlcl8tPkVuY29kZShmcmFtZSwgY29kZWNfc3BlY2lmaWNf
aW5mbywgZnJhbWVfdHlwZXMpOwogICB9Ci0gIGludDMyX3QgU2V0Q2hhbm5lbFBhcmFtZXRlcnMo
dWludDMyX3QgcGFja2V0X2xvc3MsIGludDY0X3QgcnR0KSBvdmVycmlkZSB7Ci0gICAgcmV0dXJu
IGVuY29kZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRfbG9zcywgcnR0KTsKLSAgfQog
ICBpbnQzMl90IFNldFJhdGVzKHVpbnQzMl90IGJpdHJhdGUsIHVpbnQzMl90IGZyYW1lcmF0ZSkg
b3ZlcnJpZGUgewogICAgIHJldHVybiBlbmNvZGVyXy0+U2V0UmF0ZXMoYml0cmF0ZSwgZnJhbWVy
YXRlKTsKICAgfQpAQCAtMTYzLDE0ICsxMTksOCBAQCBjbGFzcyBGcmFtZUR1bXBpbmdFbmNvZGVy
IDogcHVibGljIFZpZGVvRW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVyYXRlKSBvdmVycmlkZSB7
CiAgICAgcmV0dXJuIGVuY29kZXJfLT5TZXRSYXRlQWxsb2NhdGlvbihhbGxvY2F0aW9uLCBmcmFt
ZXJhdGUpOwogICB9Ci0gIFNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25z
dCBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsK
LSAgfQotICBib29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3Qgb3ZlcnJpZGUgewotICAg
IHJldHVybiBlbmNvZGVyXy0+U3VwcG9ydHNOYXRpdmVIYW5kbGUoKTsKLSAgfQotICBjb25zdCBj
aGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIGVu
Y29kZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKTsKKyAgRW5jb2RlckluZm8gR2V0RW5jb2Rlcklu
Zm8oKSBjb25zdCBvdmVycmlkZSB7CisgICAgcmV0dXJuIGVuY29kZXJfLT5HZXRFbmNvZGVySW5m
bygpOwogICB9CiAKICBwcml2YXRlOgpAQCAtMTg2LDYgKzEzNiwxMCBAQCBjbGFzcyBGcmFtZUR1
bXBpbmdFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVkSW1hZ2VD
YWxsYmFjayB7CiAgICAgICAgIHNpbXVsY2FzdF9pbmRleCA9IGVuY29kZWRfaW1hZ2UuU3BhdGlh
bEluZGV4KCkudmFsdWVfb3IoMCk7CiAgICAgICB9CiAgICAgICBSVENfRENIRUNLX0dFKHNpbXVs
Y2FzdF9pbmRleCwgMCk7CisgICAgICBpZiAoYW5hbHl6ZXJfKSB7CisgICAgICAgIGFuYWx5emVy
Xy0+UG9zdEVuY29kZU9uRnJhbWUoc2ltdWxjYXN0X2luZGV4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVuY29kZWRfaW1hZ2UuVGltZXN0YW1wKCkpOworICAgICAgfQog
ICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oc2ltdWxjYXN0X2luZGV4KSA8IHdyaXRlcnNf
LnNpemUoKSkgewogICAgICAgICB3cml0ZXJzX1tzaW11bGNhc3RfaW5kZXhdLT5Xcml0ZUZyYW1l
KGVuY29kZWRfaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29kZWNfc3BlY2lmaWNfaW5mby0+Y29kZWNUeXBlKTsKQEAgLTIwMiw2ICsxNTYsNyBA
QCBjbGFzcyBGcmFtZUR1bXBpbmdFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciwgcHJpdmF0
ZSBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7CiAKICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rl
cj4gZW5jb2Rlcl87CiAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFja18gPSBudWxscHRy
OworICBWaWRlb0FuYWx5emVyKiBjb25zdCBhbmFseXplcl87CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxJdmZGaWxlV3JpdGVyPj4gd3JpdGVyc187CiB9OwogCkBAIC0yMjgsNyArMTgz
LDggQEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4gVmlkZW9RdWFsaXR5VGVzdDo6Q3Jl
YXRlVmlkZW9EZWNvZGVyKAogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBWaWRl
b1F1YWxpdHlUZXN0OjpDcmVhdGVWaWRlb0VuY29kZXIoCi0gICAgY29uc3QgU2RwVmlkZW9Gb3Jt
YXQmIGZvcm1hdCkgeworICAgIGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQsCisgICAgVmlk
ZW9BbmFseXplciogYW5hbHl6ZXIpIHsKICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4g
ZW5jb2RlcjsKICAgaWYgKGZvcm1hdC5uYW1lID09ICJWUDgiKSB7CiAgICAgZW5jb2RlciA9IGFi
c2w6Om1ha2VfdW5pcXVlPFZQOEVuY29kZXJTaW11bGNhc3RQcm94eT4oCkBAIC0yNDUsMTIgKzIw
MSwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBWaWRlb1F1YWxpdHlUZXN0OjpD
cmVhdGVWaWRlb0VuY29kZXIoCiAgICAgc2IgPDwgc2VuZF9sb2dzXysrOwogICAgIHN0ZDo6c3Ry
aW5nIHByZWZpeCA9CiAgICAgICAgIHBhcmFtc18ubG9nZ2luZy5lbmNvZGVkX2ZyYW1lX2Jhc2Vf
cGF0aCArICIuIiArIHNiLnN0cigpICsgIi5zZW5kLiI7Ci0gICAgZW5jb2RlciA9IGFic2w6Om1h
a2VfdW5pcXVlPEZyYW1lRHVtcGluZ0VuY29kZXI+KAotICAgICAgICBzdGQ6Om1vdmUoZW5jb2Rl
ciksIHN0ZDo6dmVjdG9yPHJ0Yzo6UGxhdGZvcm1GaWxlPigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge3J0Yzo6Q3JlYXRlUGxhdGZvcm1GaWxlKHByZWZpeCArICIxLml2ZiIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpDcmVhdGVQbGF0Zm9ybUZpbGUo
cHJlZml4ICsgIjIuaXZmIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6
OkNyZWF0ZVBsYXRmb3JtRmlsZShwcmVmaXggKyAiMy5pdmYiKX0pKTsKKyAgICBlbmNvZGVyID0g
YWJzbDo6bWFrZV91bmlxdWU8UXVhbGl0eVRlc3RWaWRlb0VuY29kZXI+KAorICAgICAgICBzdGQ6
Om1vdmUoZW5jb2RlciksIGFuYWx5emVyLAorICAgICAgICBzdGQ6OnZlY3RvcjxydGM6OlBsYXRm
b3JtRmlsZT4oCisgICAgICAgICAgICB7cnRjOjpDcmVhdGVQbGF0Zm9ybUZpbGUocHJlZml4ICsg
IjEuaXZmIiksCisgICAgICAgICAgICAgcnRjOjpDcmVhdGVQbGF0Zm9ybUZpbGUocHJlZml4ICsg
IjIuaXZmIiksCisgICAgICAgICAgICAgcnRjOjpDcmVhdGVQbGF0Zm9ybUZpbGUocHJlZml4ICsg
IjMuaXZmIil9KSk7CisgIH0gZWxzZSBpZiAoYW5hbHl6ZXIpIHsKKyAgICBlbmNvZGVyID0gYWJz
bDo6bWFrZV91bmlxdWU8UXVhbGl0eVRlc3RWaWRlb0VuY29kZXI+KAorICAgICAgICBzdGQ6Om1v
dmUoZW5jb2RlciksIGFuYWx5emVyLCBzdGQ6OnZlY3RvcjxydGM6OlBsYXRmb3JtRmlsZT4oKSk7
CiAgIH0KKwogICByZXR1cm4gZW5jb2RlcjsKIH0KIApAQCAtMjYxLDExICsyMjIsMTggQEAgVmlk
ZW9RdWFsaXR5VGVzdDo6VmlkZW9RdWFsaXR5VGVzdCgKICAgICAgICAgcmV0dXJuIHRoaXMtPkNy
ZWF0ZVZpZGVvRGVjb2Rlcihmb3JtYXQpOwogICAgICAgfSksCiAgICAgICB2aWRlb19lbmNvZGVy
X2ZhY3RvcnlfKFt0aGlzXShjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLT5DcmVhdGVWaWRlb0VuY29kZXIoZm9ybWF0KTsKKyAgICAgICAgcmV0dXJu
IHRoaXMtPkNyZWF0ZVZpZGVvRW5jb2Rlcihmb3JtYXQsIG51bGxwdHIpOwogICAgICAgfSksCisg
ICAgICB2aWRlb19lbmNvZGVyX2ZhY3Rvcnlfd2l0aF9hbmFseXplcl8oCisgICAgICAgICAgW3Ro
aXNdKGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIHsKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLT5DcmVhdGVWaWRlb0VuY29kZXIoZm9ybWF0LCBhbmFseXplcl8uZ2V0KCkpOworICAgICAg
ICAgIH0pLAorICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8oCisgICAgICAg
ICAgQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSksCiAgICAgICBy
ZWNlaXZlX2xvZ3NfKDApLAogICAgICAgc2VuZF9sb2dzXygwKSwKLSAgICAgIGluamVjdGlvbl9j
b21wb25lbnRzXyhzdGQ6Om1vdmUoaW5qZWN0aW9uX2NvbXBvbmVudHMpKSB7CisgICAgICBpbmpl
Y3Rpb25fY29tcG9uZW50c18oc3RkOjptb3ZlKGluamVjdGlvbl9jb21wb25lbnRzKSksCisgICAg
ICBudW1fdmlkZW9fc3RyZWFtc18oMCkgewogICBpZiAoaW5qZWN0aW9uX2NvbXBvbmVudHNfID09
IG51bGxwdHIpIHsKICAgICBpbmplY3Rpb25fY29tcG9uZW50c18gPSBhYnNsOjptYWtlX3VuaXF1
ZTxJbmplY3Rpb25Db21wb25lbnRzPigpOwogICB9CkBAIC0yOTQsNyArMjYyLDYgQEAgVmlkZW9R
dWFsaXR5VGVzdDo6UGFyYW1zOjpQYXJhbXMoKQogICAgICAgYXVkaW8oe2ZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlfSksCiAgICAgICBzY3JlZW5zaGFyZXt7ZmFsc2UsIGZhbHNlLCAxMCwgMH0s
IHtmYWxzZSwgZmFsc2UsIDEwLCAwfX0sCiAgICAgICBhbmFseXplcih7IiIsIDAuMCwgMC4wLCAw
LCAiIiwgIiJ9KSwKLSAgICAgIHBpcGUoKSwKICAgICAgIGNvbmZpZyhhYnNsOjpudWxsb3B0KSwK
ICAgICAgIHNze3tzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4oKSwgMCwgMCwgLTEsIEludGVyTGF5
ZXJQcmVkTW9kZTo6a09uLAogICAgICAgICAgIHN0ZDo6dmVjdG9yPFNwYXRpYWxMYXllcj4oKX0s
CkBAIC0zMzEsOSArMjk4LDcgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpDaGVja1BhcmFtc0Fu
ZEluamVjdGlvbkNvbXBvbmVudHMoKSB7CiAgIH0KICAgaWYgKCFwYXJhbXNfLmNvbmZpZyAmJiBp
bmplY3Rpb25fY29tcG9uZW50c18tPnNlbmRlcl9uZXR3b3JrID09IG51bGxwdHIgJiYKICAgICAg
IGluamVjdGlvbl9jb21wb25lbnRzXy0+cmVjZWl2ZXJfbmV0d29yayA9PSBudWxscHRyKSB7Ci0g
ICAgLy8gVE9ETyh0aXRvdmFydGVtKSByZXBsYWNlIHdpdGggZGVmYXVsdCBjb25maWcgY3JlYXRp
b24gd2hlbiByZW1vdmluZwotICAgIC8vIHBpcGUuCi0gICAgcGFyYW1zXy5jb25maWcgPSBwYXJh
bXNfLnBpcGU7CisgICAgcGFyYW1zXy5jb25maWcgPSBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29u
ZmlnKCk7CiAgIH0KICAgUlRDX0NIRUNLKAogICAgICAgKHBhcmFtc18uY29uZmlnICYmIGluamVj
dGlvbl9jb21wb25lbnRzXy0+c2VuZGVyX25ldHdvcmsgPT0gbnVsbHB0ciAmJgpAQCAtNTk0LDcg
KzU1OSwxMCBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OlNldHVwVmlkZW8oVHJhbnNwb3J0KiBz
ZW5kX3RyYW5zcG9ydCwKICAgICAgIHJldHVybjsKICAgICB9CiAgICAgdmlkZW9fc2VuZF9jb25m
aWdzX1t2aWRlb19pZHhdLmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0KLSAgICAg
ICAgJnZpZGVvX2VuY29kZXJfZmFjdG9yeV87CisgICAgICAgICh2aWRlb19pZHggPT0gMCkgPyAm
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5X3dpdGhfYW5hbHl6ZXJfCisgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAmdmlkZW9fZW5jb2Rlcl9mYWN0b3J5XzsKKyAgICB2aWRlb19zZW5kX2NvbmZpZ3Nf
W3ZpZGVvX2lkeF0uZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0K
KyAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8uZ2V0KCk7CiAKICAgICB2
aWRlb19zZW5kX2NvbmZpZ3NfW3ZpZGVvX2lkeF0ucnRwLnBheWxvYWRfbmFtZSA9CiAgICAgICAg
IHBhcmFtc18udmlkZW9bdmlkZW9faWR4XS5jb2RlYzsKQEAgLTcwMiw2ICs2NzAsMTAgQEAgdm9p
ZCBWaWRlb1F1YWxpdHlUZXN0OjpTZXR1cFZpZGVvKFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQs
CiAgICAgICAgIHZwOV9zZXR0aW5ncy5udW1iZXJPZlNwYXRpYWxMYXllcnMgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPigKICAgICAgICAgICAgIHBhcmFtc18uc3NbdmlkZW9faWR4XS5udW1f
c3BhdGlhbF9sYXllcnMpOwogICAgICAgICB2cDlfc2V0dGluZ3MuaW50ZXJMYXllclByZWQgPSBw
YXJhbXNfLnNzW3ZpZGVvX2lkeF0uaW50ZXJfbGF5ZXJfcHJlZDsKKyAgICAgICAgLy8gSGlnaCBG
UFMgdnA5IHNjcmVlbnNoYXJlIHJlcXVpcmVzIGZsZXhpYmxlIG1vZGUuCisgICAgICAgIGlmIChw
YXJhbXNfLnZpZGVvW3ZpZGVvX2lkeF0uZnBzID4gNSkgeworICAgICAgICAgIHZwOV9zZXR0aW5n
cy5mbGV4aWJsZU1vZGUgPSB0cnVlOworICAgICAgICB9CiAgICAgICAgIHZpZGVvX2VuY29kZXJf
Y29uZmlnc19bdmlkZW9faWR4XS5lbmNvZGVyX3NwZWNpZmljX3NldHRpbmdzID0KICAgICAgICAg
ICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8CiAgICAgICAgICAgICAgICAgVmlkZW9FbmNv
ZGVyQ29uZmlnOjpWcDlFbmNvZGVyU3BlY2lmaWNTZXR0aW5ncz4odnA5X3NldHRpbmdzKTsKQEAg
LTc4Myw2ICs3NTUsOCBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OlNldHVwVGh1bWJuYWlscyhU
cmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LAogICAgIC8vIFRPRE8obmlzc2UpOiBDb3VsZCB1c2Ug
YSBzaW1wbGVyIFZQOC1vbmx5IGVuY29kZXIgZmFjdG9yeS4KICAgICB0aHVtYm5haWxfc2VuZF9j
b25maWcuZW5jb2Rlcl9zZXR0aW5ncy5lbmNvZGVyX2ZhY3RvcnkgPQogICAgICAgICAmdmlkZW9f
ZW5jb2Rlcl9mYWN0b3J5XzsKKyAgICB0aHVtYm5haWxfc2VuZF9jb25maWcuZW5jb2Rlcl9zZXR0
aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0KKyAgICAgICAgdmlkZW9fYml0cmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeV8uZ2V0KCk7CiAgICAgdGh1bWJuYWlsX3NlbmRfY29uZmlnLnJ0cC5w
YXlsb2FkX25hbWUgPSBwYXJhbXNfLnZpZGVvWzBdLmNvZGVjOwogICAgIHRodW1ibmFpbF9zZW5k
X2NvbmZpZy5ydHAucGF5bG9hZF90eXBlID0ga1BheWxvYWRUeXBlVlA4OwogICAgIHRodW1ibmFp
bF9zZW5kX2NvbmZpZy5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyA9IGtOYWNrUnRwSGlzdG9yeU1z
OwpAQCAtMTA0Myw3ICsxMDE3LDYgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpSdW5XaXRoQW5h
bHl6ZXIoY29uc3QgUGFyYW1zJiBwYXJhbXMpIHsKICAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6Okxh
eWVyRmlsdGVyaW5nVHJhbnNwb3J0PiBzZW5kX3RyYW5zcG9ydDsKICAgc3RkOjp1bmlxdWVfcHRy
PHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4gcmVjdl90cmFuc3BvcnQ7CiAgIEZJTEUqIGdyYXBoX2Rh
dGFfb3V0cHV0X2ZpbGUgPSBudWxscHRyOwotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9BbmFseXpl
cj4gYW5hbHl6ZXI7CiAKICAgcGFyYW1zXyA9IHBhcmFtczsKICAgLy8gVE9ETyhpdmljYSk6IE1l
cmdlIHdpdGggUnVuV2l0aFJlbmRlcmVyIGFuZCB1c2UgYSBmbGFnIC8gYXJndW1lbnQgdG8KQEAg
LTExMDAsNyArMTA3Myw3IEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6UnVuV2l0aEFuYWx5emVy
KGNvbnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAgIGlmIChncmFwaF90aXRsZS5lbXB0eSgpKQogICAg
IGdyYXBoX3RpdGxlID0gVmlkZW9RdWFsaXR5VGVzdDo6R2VuZXJhdGVHcmFwaFRpdGxlKCk7CiAg
IGJvb2wgaXNfcXVpY2tfdGVzdF9lbmFibGVkID0gZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2Vi
UlRDLVF1aWNrUGVyZlRlc3QiKTsKLSAgYW5hbHl6ZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxWaWRl
b0FuYWx5emVyPigKKyAgYW5hbHl6ZXJfID0gYWJzbDo6bWFrZV91bmlxdWU8VmlkZW9BbmFseXpl
cj4oCiAgICAgICBzZW5kX3RyYW5zcG9ydC5nZXQoKSwgcGFyYW1zXy5hbmFseXplci50ZXN0X2xh
YmVsLAogICAgICAgcGFyYW1zXy5hbmFseXplci5hdmdfcHNucl90aHJlc2hvbGQsIHBhcmFtc18u
YW5hbHl6ZXIuYXZnX3NzaW1fdGhyZXNob2xkLAogICAgICAgaXNfcXVpY2tfdGVzdF9lbmFibGVk
CkBAIC0xMTE0LDI2ICsxMDg3LDIzIEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6UnVuV2l0aEFu
YWx5emVyKGNvbnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICBpc19xdWlja190ZXN0X2VuYWJs
ZWQsIGNsb2NrXywgcGFyYW1zXy5sb2dnaW5nLnJ0cF9kdW1wX25hbWUpOwogCiAgIHRhc2tfcXVl
dWVfLlNlbmRUYXNrKFsmXSgpIHsKLSAgICBhbmFseXplci0+U2V0Q2FsbChzZW5kZXJfY2FsbF8u
Z2V0KCkpOwotICAgIGFuYWx5emVyLT5TZXRSZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+UmVjZWl2
ZXIoKSk7Ci0gICAgc2VuZF90cmFuc3BvcnQtPlNldFJlY2VpdmVyKGFuYWx5emVyLmdldCgpKTsK
KyAgICBhbmFseXplcl8tPlNldENhbGwoc2VuZGVyX2NhbGxfLmdldCgpKTsKKyAgICBhbmFseXpl
cl8tPlNldFJlY2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5SZWNlaXZlcigpKTsKKyAgICBzZW5kX3Ry
YW5zcG9ydC0+U2V0UmVjZWl2ZXIoYW5hbHl6ZXJfLmdldCgpKTsKICAgICByZWN2X3RyYW5zcG9y
dC0+U2V0UmVjZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZlcigpKTsKIAotICAgIFNldHVwVmlk
ZW8oYW5hbHl6ZXIuZ2V0KCksIHJlY3ZfdHJhbnNwb3J0LmdldCgpKTsKLSAgICBTZXR1cFRodW1i
bmFpbHMoYW5hbHl6ZXIuZ2V0KCksIHJlY3ZfdHJhbnNwb3J0LmdldCgpKTsKKyAgICBTZXR1cFZp
ZGVvKGFuYWx5emVyXy5nZXQoKSwgcmVjdl90cmFuc3BvcnQuZ2V0KCkpOworICAgIFNldHVwVGh1
bWJuYWlscyhhbmFseXplcl8uZ2V0KCksIHJlY3ZfdHJhbnNwb3J0LmdldCgpKTsKICAgICB2aWRl
b19yZWNlaXZlX2NvbmZpZ3NfW3BhcmFtc18uc3NbMF0uc2VsZWN0ZWRfc3RyZWFtXS5yZW5kZXJl
ciA9Ci0gICAgICAgIGFuYWx5emVyLmdldCgpOwotICAgIEdldFZpZGVvU2VuZENvbmZpZygpLT5w
cmVfZW5jb2RlX2NhbGxiYWNrID0gYW5hbHl6ZXItPnByZV9lbmNvZGVfcHJveHkoKTsKLSAgICBS
VENfRENIRUNLKCFHZXRWaWRlb1NlbmRDb25maWcoKS0+cG9zdF9lbmNvZGVfY2FsbGJhY2spOwot
ICAgIEdldFZpZGVvU2VuZENvbmZpZygpLT5wb3N0X2VuY29kZV9jYWxsYmFjayA9IGFuYWx5emVy
LmdldCgpOworICAgICAgICBhbmFseXplcl8uZ2V0KCk7CiAKICAgICBDcmVhdGVGbGV4ZmVjU3Ry
ZWFtcygpOwogICAgIENyZWF0ZVZpZGVvU3RyZWFtcygpOwotICAgIGFuYWx5emVyLT5TZXRTZW5k
U3RyZWFtKHZpZGVvX3NlbmRfc3RyZWFtc19bMF0pOworICAgIGFuYWx5emVyXy0+U2V0U2VuZFN0
cmVhbSh2aWRlb19zZW5kX3N0cmVhbXNfWzBdKTsKICAgICBpZiAodmlkZW9fcmVjZWl2ZV9zdHJl
YW1zXy5zaXplKCkgPT0gMSkKLSAgICAgIGFuYWx5emVyLT5TZXRSZWNlaXZlU3RyZWFtKHZpZGVv
X3JlY2VpdmVfc3RyZWFtc19bMF0pOworICAgICAgYW5hbHl6ZXJfLT5TZXRSZWNlaXZlU3RyZWFt
KHZpZGVvX3JlY2VpdmVfc3RyZWFtc19bMF0pOwogCi0gICAgR2V0VmlkZW9TZW5kU3RyZWFtKCkt
PlNldFNvdXJjZShhbmFseXplci0+T3V0cHV0SW50ZXJmYWNlKCksCisgICAgR2V0VmlkZW9TZW5k
U3RyZWFtKCktPlNldFNvdXJjZShhbmFseXplcl8tPk91dHB1dEludGVyZmFjZSgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVncmFkYXRpb25fcHJlZmVyZW5jZV8pOwog
ICAgIFNldHVwVGh1bWJuYWlsQ2FwdHVyZXJzKHBhcmFtc18uY2FsbC5udW1fdGh1bWJuYWlscyk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aHVtYm5haWxfc2VuZF9zdHJlYW1zXy5zaXpl
KCk7ICsraSkgewpAQCAtMTE0Myw3ICsxMTEzLDggQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpS
dW5XaXRoQW5hbHl6ZXIoY29uc3QgUGFyYW1zJiBwYXJhbXMpIHsKIAogICAgIENyZWF0ZUNhcHR1
cmVycygpOwogCi0gICAgYW5hbHl6ZXItPlNldFNvdXJjZSh2aWRlb19jYXB0dXJlcnNfWzBdLmdl
dCgpLCBwYXJhbXNfLnNzWzBdLmluZmVyX3N0cmVhbXMpOworICAgIGFuYWx5emVyXy0+U2V0U291
cmNlKHZpZGVvX2NhcHR1cmVyc19bMF0uZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zXy5zc1swXS5pbmZlcl9zdHJlYW1zKTsKIAogICAgIGZvciAoc2l6ZV90IHZpZGVvX2lk
eCA9IDE7IHZpZGVvX2lkeCA8IG51bV92aWRlb19zdHJlYW1zXzsgKyt2aWRlb19pZHgpIHsKICAg
ICAgIHZpZGVvX3NlbmRfc3RyZWFtc19bdmlkZW9faWR4XS0+U2V0U291cmNlKApAQCAtMTE1Mywx
NiArMTEyNCwxNiBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OlJ1bldpdGhBbmFseXplcihjb25z
dCBQYXJhbXMmIHBhcmFtcykgewogICAgIGlmIChwYXJhbXNfLmF1ZGlvLmVuYWJsZWQpIHsKICAg
ICAgIFNldHVwQXVkaW8oc2VuZF90cmFuc3BvcnQuZ2V0KCkpOwogICAgICAgU3RhcnRBdWRpb1N0
cmVhbXMoKTsKLSAgICAgIGFuYWx5emVyLT5TZXRBdWRpb1JlY2VpdmVTdHJlYW0oYXVkaW9fcmVj
ZWl2ZV9zdHJlYW1zX1swXSk7CisgICAgICBhbmFseXplcl8tPlNldEF1ZGlvUmVjZWl2ZVN0cmVh
bShhdWRpb19yZWNlaXZlX3N0cmVhbXNfWzBdKTsKICAgICB9CiAgICAgU3RhcnRWaWRlb1N0cmVh
bXMoKTsKICAgICBTdGFydFRodW1ibmFpbHMoKTsKLSAgICBhbmFseXplci0+U3RhcnRNZWFzdXJp
bmdDcHVQcm9jZXNzVGltZSgpOworICAgIGFuYWx5emVyXy0+U3RhcnRNZWFzdXJpbmdDcHVQcm9j
ZXNzVGltZSgpOwogICAgIFN0YXJ0VmlkZW9DYXB0dXJlKCk7CiAgICAgU3RhcnRUaHVtYm5haWxD
YXB0dXJlKCk7CiAgIH0pOwogCi0gIGFuYWx5emVyLT5XYWl0KCk7CisgIGFuYWx5emVyXy0+V2Fp
dCgpOwogCiAgIHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsKICAgICBTdG9wVGh1bWJuYWls
Q2FwdHVyZSgpOwpAQCAtMTE4MSw2ICsxMTUyLDcgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpS
dW5XaXRoQW5hbHl6ZXIoY29uc3QgUGFyYW1zJiBwYXJhbXMpIHsKIAogICAgIERlc3Ryb3lDYWxs
cygpOwogICB9KTsKKyAgYW5hbHl6ZXJfID0gbnVsbHB0cjsKIH0KIAogcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBWaWRlb1F1YWxpdHlUZXN0OjpDcmVhdGVBdWRpb0Rldmlj
ZSgpIHsKQEAgLTEyMzksNyArMTIxMSw4IEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6SW5pdGlh
bGl6ZUF1ZGlvRGV2aWNlKENhbGw6OkNvbmZpZyogc2VuZF9jYWxsX2NvbmZpZywKIH0KIAogdm9p
ZCBWaWRlb1F1YWxpdHlUZXN0OjpTZXR1cEF1ZGlvKFRyYW5zcG9ydCogdHJhbnNwb3J0KSB7Ci0g
IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGF1ZGlvX3NlbmRfY29uZmlnKHRyYW5zcG9ydCk7Cisg
IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGF1ZGlvX3NlbmRfY29uZmlnKHRyYW5zcG9ydCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3Bv
cnQ9Ki9udWxscHRyKTsKICAgYXVkaW9fc2VuZF9jb25maWcucnRwLnNzcmMgPSBrQXVkaW9TZW5k
U3NyYzsKIAogICAvLyBBZGQgZXh0ZW5zaW9uIHRvIGVuYWJsZSBhdWRpbyBzZW5kIHNpZGUgQldF
LCBhbmQgYWxsb3cgYXVkaW8gYml0IHJhdGUKQEAgLTEyNzgsNyArMTI1MSwyOCBAQCB2b2lkIFZp
ZGVvUXVhbGl0eVRlc3Q6OlJ1bldpdGhSZW5kZXJlcnMoY29uc3QgUGFyYW1zJiBwYXJhbXMpIHsK
ICAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4gcmVjdl90cmFuc3BvcnQ7
CiAgIHN0ZDo6dW5pcXVlX3B0cjx0ZXN0OjpWaWRlb1JlbmRlcmVyPiBsb2NhbF9wcmV2aWV3Owog
ICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8dGVzdDo6VmlkZW9SZW5kZXJlcj4+IGxvb3Bi
YWNrX3JlbmRlcmVyczsKLSAgUnRjRXZlbnRMb2dOdWxsSW1wbCBudWxsX2V2ZW50X2xvZzsKKwor
ICBpZiAoIXBhcmFtcy5sb2dnaW5nLnJ0Y19ldmVudF9sb2dfbmFtZS5lbXB0eSgpKSB7CisgICAg
c2VuZF9ldmVudF9sb2dfID0gUnRjRXZlbnRMb2c6OkNyZWF0ZShSdGNFdmVudExvZzo6RW5jb2Rp
bmdUeXBlOjpMZWdhY3kpOworICAgIHJlY3ZfZXZlbnRfbG9nXyA9IFJ0Y0V2ZW50TG9nOjpDcmVh
dGUoUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TGVnYWN5KTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UnRjRXZlbnRMb2dPdXRwdXRGaWxlPiBzZW5kX291dHB1dCgKKyAgICAgICAgYWJzbDo6bWFr
ZV91bmlxdWU8UnRjRXZlbnRMb2dPdXRwdXRGaWxlPigKKyAgICAgICAgICAgIHBhcmFtcy5sb2dn
aW5nLnJ0Y19ldmVudF9sb2dfbmFtZSArICJfc2VuZCIsCisgICAgICAgICAgICBSdGNFdmVudExv
Zzo6a1VubGltaXRlZE91dHB1dCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZ091
dHB1dEZpbGU+IHJlY3Zfb3V0cHV0KAorICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVu
dExvZ091dHB1dEZpbGU+KAorICAgICAgICAgICAgcGFyYW1zLmxvZ2dpbmcucnRjX2V2ZW50X2xv
Z19uYW1lICsgIl9yZWN2IiwKKyAgICAgICAgICAgIFJ0Y0V2ZW50TG9nOjprVW5saW1pdGVkT3V0
cHV0KSk7CisgICAgYm9vbCBldmVudF9sb2dfc3RhcnRlZCA9CisgICAgICAgIHNlbmRfZXZlbnRf
bG9nXy0+U3RhcnRMb2dnaW5nKHN0ZDo6bW92ZShzZW5kX291dHB1dCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qb3V0cHV0X3BlcmlvZF9tcz0qLzUwMDApICYmCisg
ICAgICAgIHJlY3ZfZXZlbnRfbG9nXy0+U3RhcnRMb2dnaW5nKHN0ZDo6bW92ZShyZWN2X291dHB1
dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qb3V0cHV0X3Blcmlv
ZF9tcz0qLzUwMDApOworICAgIFJUQ19EQ0hFQ0soZXZlbnRfbG9nX3N0YXJ0ZWQpOworICB9IGVs
c2UgeworICAgIHNlbmRfZXZlbnRfbG9nXyA9IFJ0Y0V2ZW50TG9nOjpDcmVhdGVOdWxsKCk7Cisg
ICAgcmVjdl9ldmVudF9sb2dfID0gUnRjRXZlbnRMb2c6OkNyZWF0ZU51bGwoKTsKKyAgfQogCiAg
IHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsKICAgICBwYXJhbXNfID0gcGFyYW1zOwpAQCAt
MTI4Niw5ICsxMjgwLDkgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpSdW5XaXRoUmVuZGVyZXJz
KGNvbnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAKICAgICAvLyBUT0RPKGl2aWNhKTogUmVtb3ZlIGJp
dHJhdGVfY29uZmlnIGFuZCB1c2UgdGhlIGRlZmF1bHQgQ2FsbDo6Q29uZmlnKCksIHRvCiAgICAg
Ly8gbWF0Y2ggdGhlIGZ1bGwgc3RhY2sgdGVzdHMuCi0gICAgQ2FsbDo6Q29uZmlnIHNlbmRfY2Fs
bF9jb25maWcoJm51bGxfZXZlbnRfbG9nKTsKKyAgICBDYWxsOjpDb25maWcgc2VuZF9jYWxsX2Nv
bmZpZyhzZW5kX2V2ZW50X2xvZ18uZ2V0KCkpOwogICAgIHNlbmRfY2FsbF9jb25maWcuYml0cmF0
ZV9jb25maWcgPSBwYXJhbXNfLmNhbGwuY2FsbF9iaXRyYXRlX2NvbmZpZzsKLSAgICBDYWxsOjpD
b25maWcgcmVjdl9jYWxsX2NvbmZpZygmbnVsbF9ldmVudF9sb2cpOworICAgIENhbGw6OkNvbmZp
ZyByZWN2X2NhbGxfY29uZmlnKHJlY3ZfZXZlbnRfbG9nXy5nZXQoKSk7CiAKICAgICBpZiAocGFy
YW1zXy5hdWRpby5lbmFibGVkKQogICAgICAgSW5pdGlhbGl6ZUF1ZGlvRGV2aWNlKApAQCAtMTM2
NCw3ICsxMzU4LDcgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpSdW5XaXRoUmVuZGVyZXJzKGNv
bnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgU3RhcnQoKTsKICAgfSk7CiAKLSAgdGVzdDo6UHJl
c3NFbnRlclRvQ29udGludWUoKTsKKyAgdGVzdDo6UHJlc3NFbnRlclRvQ29udGludWUodGFza19x
dWV1ZV8pOwogCiAgIHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsKICAgICBTdG9wKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by92aWRlb19xdWFsaXR5X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfdGVzdC5oCmluZGV4IDdlYzdlOGRhN2U0NGI2
MjdmZmJhODcxMTI0YTAxYzU1OGRlNzJjN2IuLmY2N2U2NWJjMTM3OTc0MjhjMGNjN2NjNjFjYTY3
OGE1MjY4NzBlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfdGVzdC5oCkBA
IC0xNywxMiArMTcsMTQgQEAKIAogI2luY2x1ZGUgImFwaS9mZWNfY29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgImFwaS90ZXN0L3ZpZGVvX3F1YWxpdHlfdGVzdF9maXh0dXJlLmgiCisjaW5jbHVkZSAi
YXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJj
YWxsL2Zha2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFs
ZGVjb2RlcmZhY3RvcnkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVy
ZmFjdG9yeS5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9m
cmFtZV9nZW5lcmF0b3IuaCIKICNpbmNsdWRlICJ0ZXN0L2xheWVyX2ZpbHRlcmluZ190cmFuc3Bv
cnQuaCIKKyNpbmNsdWRlICJ2aWRlby92aWRlb19hbmFseXplci5oIgogI2lmZGVmIFdFQlJUQ19X
SU4KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS93aW4vY29yZV9hdWRpb191dGlsaXR5
X3dpbi5oIgogI2VuZGlmCkBAIC03NSw4ICs3Nyw4IEBAIGNsYXNzIFZpZGVvUXVhbGl0eVRlc3Qg
OgogICB2b2lkIFNldHVwVGh1bWJuYWlsQ2FwdHVyZXJzKHNpemVfdCBudW1fdGh1bWJuYWlsX3N0
cmVhbXMpOwogICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyPiBDcmVhdGVWaWRlb0RlY29k
ZXIoCiAgICAgICBjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KTsKLSAgc3RkOjp1bmlxdWVf
cHRyPFZpZGVvRW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVyKAotICAgICAgY29uc3QgU2RwVmlk
ZW9Gb3JtYXQmIGZvcm1hdCk7CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IENyZWF0
ZVZpZGVvRW5jb2Rlcihjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9BbmFseXplciogYW5h
bHl6ZXIpOwogICB2b2lkIFNldHVwVmlkZW8oVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwgVHJh
bnNwb3J0KiByZWN2X3RyYW5zcG9ydCk7CiAgIHZvaWQgU2V0dXBUaHVtYm5haWxzKFRyYW5zcG9y
dCogc2VuZF90cmFuc3BvcnQsIFRyYW5zcG9ydCogcmVjdl90cmFuc3BvcnQpOwogICB2b2lkIFN0
YXJ0QXVkaW9TdHJlYW1zKCk7CkBAIC0xMDMsNiArMTA1LDkgQEAgY2xhc3MgVmlkZW9RdWFsaXR5
VGVzdCA6CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9yeSB2aWRlb19kZWNvZGVy
X2ZhY3RvcnlfOwogICBJbnRlcm5hbERlY29kZXJGYWN0b3J5IGludGVybmFsX2RlY29kZXJfZmFj
dG9yeV87CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9FbmNvZGVyRmFjdG9yeSB2aWRlb19lbmNvZGVy
X2ZhY3RvcnlfOworICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5X3dpdGhfYW5hbHl6ZXJfOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRy
YXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rv
cnlfOwogICBJbnRlcm5hbEVuY29kZXJGYWN0b3J5IGludGVybmFsX2VuY29kZXJfZmFjdG9yeV87
CiAgIHN0ZDo6dmVjdG9yPFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnPiB0aHVtYm5haWxfc2VuZF9j
b25maWdzXzsKICAgc3RkOjp2ZWN0b3I8VmlkZW9FbmNvZGVyQ29uZmlnPiB0aHVtYm5haWxfZW5j
b2Rlcl9jb25maWdzXzsKQEAgLTExNiw2ICsxMjEsOSBAQCBjbGFzcyBWaWRlb1F1YWxpdHlUZXN0
IDoKICAgUGFyYW1zIHBhcmFtc187CiAgIHN0ZDo6dW5pcXVlX3B0cjxJbmplY3Rpb25Db21wb25l
bnRzPiBpbmplY3Rpb25fY29tcG9uZW50c187CiAKKyAgLy8gU2V0IG5vbi1udWxsIHdoZW4gcnVu
bmluZyB3aXRoIGFuYWx5emVyLgorICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9BbmFseXplcj4gYW5h
bHl6ZXJfOworCiAgIC8vIE5vdGU6IG5vdCBzYW1lIGFzIHNpbWlsYXJseSBuYW1lZCBtZW1iZXIg
aW4gQ2FsbFRlc3QuIFRoaXMgaXMgdGhlIG51bWJlciBvZgogICAvLyBzZXBhcmF0ZSBzZW5kIHN0
cmVhbXMsIHRoZSBvbmUgaW4gQ2FsbFRlc3QgaXMgdGhlIG51bWJlciBvZiBzdWJzdHJlYW1zIGZv
cgogICAvLyBhIHNpbmdsZSBzZW5kIHN0cmVhbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9f
cmVjZWl2ZV9zdHJlYW0uY2MKaW5kZXggODZiOTM2ODZjYTVmOTczMzkyMDQ1NmQ5YjcxODllYjM4
MGZlNDVkNS4uYmJhMzNhYTM2M2U4YTY5NWRhYzZjZjQ0ODBjYmRjNDc3NzYxNTMwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlk
ZW9fcmVjZWl2ZV9zdHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW0uY2MKQEAgLTIxLDcgKzIxLDYg
QEAKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgog
I2luY2x1ZGUgImNhbGwvcnRwX3N0cmVhbV9yZWNlaXZlcl9jb250cm9sbGVyX2ludGVyZmFjZS5o
IgogI2luY2x1ZGUgImNhbGwvcnR4X3JlY2VpdmVfc3RyZWFtLmgiCi0jaW5jbHVkZSAiY29tbW9u
X3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJjb21tb25fdmlk
ZW8vaDI2NC9wcm9maWxlX2xldmVsX2lkLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1
ZGUvaW5jb21pbmdfdmlkZW9fc3RyZWFtLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1
di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKQEAgLTM1LDEwICszNCwxMyBAQAogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2Zp
bGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvdHJhY2VfZXZlbnQuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9jbG9jay5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxk
X3RyaWFsLmgiCiAjaW5jbHVkZSAidmlkZW8vY2FsbF9zdGF0cy5oIgorI2luY2x1ZGUgInZpZGVv
L2ZyYW1lX2R1bXBpbmdfZGVjb2Rlci5oIgogI2luY2x1ZGUgInZpZGVvL3JlY2VpdmVfc3RhdGlz
dGljc19wcm94eS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTEwNyw2ICsxMDksMTEgQEAg
Y2xhc3MgTnVsbFZpZGVvRGVjb2RlciA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRGVjb2RlciB7CiAg
IGNvbnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJOdWxsVmlkZW9EZWNvZGVyIjsgfQogfTsKIAorLy8gVE9ETyhodHRwczovL2J1Z3Mud2VicnRj
Lm9yZy85OTc0KTogQ29uc2lkZXIgcmVtb3ZpbmcgdGhpcyB3b3JrYXJvdW5kLgorLy8gTWF4aW11
bSB0aW1lIGJldHdlZW4gZnJhbWVzIGJlZm9yZSByZXNldHRpbmcgdGhlIEZyYW1lQnVmZmVyIHRv
IGF2b2lkIFJUUAorLy8gdGltZXN0YW1wcyB3cmFwYXJvdW5kIHRvIGFmZmVjdCBGcmFtZUJ1ZmZl
ci4KK2NvbnN0ZXhwciBpbnQga0luYWN0aXZlU3RyZWFtVGhyZXNob2xkTXMgPSA2MDAwMDA7ICAv
LyAgMTAgbWludXRlcy4KKwogfSAgLy8gbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7
CkBAIC0xMjgsMTAgKzEzNSwxMSBAQCBWaWRlb1JlY2VpdmVTdHJlYW06OlZpZGVvUmVjZWl2ZVN0
cmVhbSgKICAgICAgICAgICAgICAgICAgICAgICJEZWNvZGluZ1RocmVhZCIsCiAgICAgICAgICAg
ICAgICAgICAgICBydGM6OmtIaWdoZXN0UHJpb3JpdHkpLAogICAgICAgY2FsbF9zdGF0c18oY2Fs
bF9zdGF0cyksCi0gICAgICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXyhSZWNlaXZlU3RhdGlzdGlj
czo6Q3JlYXRlKGNsb2NrXykpLAotICAgICAgdGltaW5nXyhuZXcgVkNNVGltaW5nKGNsb2NrXykp
LAotICAgICAgdmlkZW9fcmVjZWl2ZXJfKGNsb2NrXywgbnVsbHB0ciwgdGltaW5nXy5nZXQoKSwg
dGhpcywgdGhpcyksCiAgICAgICBzdGF0c19wcm94eV8oJmNvbmZpZ18sIGNsb2NrXyksCisgICAg
ICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXygKKyAgICAgICAgICBSZWNlaXZlU3RhdGlzdGljczo6
Q3JlYXRlKGNsb2NrXywgJnN0YXRzX3Byb3h5XywgJnN0YXRzX3Byb3h5XykpLAorICAgICAgdGlt
aW5nXyhuZXcgVkNNVGltaW5nKGNsb2NrXykpLAorICAgICAgdmlkZW9fcmVjZWl2ZXJfKGNsb2Nr
XywgdGltaW5nXy5nZXQoKSwgdGhpcywgdGhpcyksCiAgICAgICBydHBfdmlkZW9fc3RyZWFtX3Jl
Y2VpdmVyXygmdHJhbnNwb3J0X2FkYXB0ZXJfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FsbF9zdGF0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tl
dF9yb3V0ZXIsCkBAIC0xMzksOSArMTQ3LDEwIEBAIFZpZGVvUmVjZWl2ZVN0cmVhbTo6VmlkZW9S
ZWNlaXZlU3RyZWFtKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX3JlY2Vp
dmVfc3RhdGlzdGljc18uZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
c3RhdHNfcHJveHlfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc190
aHJlYWRfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgICAvLyBOYWNr
U2VuZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCAgIC8vIEtleUZy
YW1lUmVxdWVzdFNlbmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyks
ICAvLyBPbkNvbXBsZXRlRnJhbWVDYWxsYmFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcywgIC8vIE5hY2tTZW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMsICAvLyBLZXlGcmFtZVJlcXVlc3RTZW5kZXIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMsICAvLyBPbkNvbXBsZXRlRnJhbWVDYWxsYmFjaworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnXy5mcmFtZV9kZWNyeXB0b3IpLAogICAgICAg
cnRwX3N0cmVhbV9zeW5jXyh0aGlzKSB7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlZpZGVvUmVj
ZWl2ZVN0cmVhbTogIiA8PCBjb25maWdfLlRvU3RyaW5nKCk7CiAKQEAgLTI0NSw2ICsyNTQsMTgg
QEAgdm9pZCBWaWRlb1JlY2VpdmVTdHJlYW06OlN0YXJ0KCkgewogICAgIGlmICghdmlkZW9fZGVj
b2RlcikgewogICAgICAgdmlkZW9fZGVjb2RlciA9IGFic2w6Om1ha2VfdW5pcXVlPE51bGxWaWRl
b0RlY29kZXI+KCk7CiAgICAgfQorCisgICAgc3RkOjpzdHJpbmcgZGVjb2RlZF9vdXRwdXRfZmls
ZSA9CisgICAgICAgIGZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoIldlYlJUQy1EZWNvZGVyRGF0
YUR1bXBEaXJlY3RvcnkiKTsKKyAgICBpZiAoIWRlY29kZWRfb3V0cHV0X2ZpbGUuZW1wdHkoKSkg
eworICAgICAgY2hhciBmaWxlbmFtZV9idWZmZXJbMjU2XTsKKyAgICAgIHJ0Yzo6U2ltcGxlU3Ry
aW5nQnVpbGRlciBzc2IoZmlsZW5hbWVfYnVmZmVyKTsKKyAgICAgIHNzYiA8PCBkZWNvZGVkX291
dHB1dF9maWxlIDw8ICIvd2VicnRjX3JlY2VpdmVfc3RyZWFtXyIKKyAgICAgICAgICA8PCB0aGlz
LT5jb25maWdfLnJ0cC5sb2NhbF9zc3JjIDw8ICIuaXZmIjsKKyAgICAgIHZpZGVvX2RlY29kZXIg
PSBhYnNsOjptYWtlX3VuaXF1ZTxGcmFtZUR1bXBpbmdEZWNvZGVyPigKKyAgICAgICAgICBzdGQ6
Om1vdmUodmlkZW9fZGVjb2RlciksIHJ0Yzo6Q3JlYXRlUGxhdGZvcm1GaWxlKHNzYi5zdHIoKSkp
OworICAgIH0KKwogICAgIHZpZGVvX2RlY29kZXJzXy5wdXNoX2JhY2soc3RkOjptb3ZlKHZpZGVv
X2RlY29kZXIpKTsKIAogICAgIHZpZGVvX3JlY2VpdmVyXy5SZWdpc3RlckV4dGVybmFsRGVjb2Rl
cih2aWRlb19kZWNvZGVyc18uYmFjaygpLmdldCgpLApAQCAtMzU3LDYgKzM3OCwxNCBAQCB2b2lk
IFZpZGVvUmVjZWl2ZVN0cmVhbTo6T25Db21wbGV0ZUZyYW1lKAogICAvLyBwYXJ0aWFsbHkgZW5h
YmxlZCBpbnRlci1sYXllciBwcmVkaWN0aW9uLgogICBmcmFtZS0+aWQuc3BhdGlhbF9sYXllciA9
IDA7CiAKKyAgLy8gVE9ETyhodHRwczovL2J1Z3Mud2VicnRjLm9yZy85OTc0KTogQ29uc2lkZXIg
cmVtb3ZpbmcgdGhpcyB3b3JrYXJvdW5kLgorICBpbnQ2NF90IHRpbWVfbm93X21zID0gcnRjOjpU
aW1lTWlsbGlzKCk7CisgIGlmIChsYXN0X2NvbXBsZXRlX2ZyYW1lX3RpbWVfbXNfID4gMCAmJgor
ICAgICAgdGltZV9ub3dfbXMgLSBsYXN0X2NvbXBsZXRlX2ZyYW1lX3RpbWVfbXNfID4ga0luYWN0
aXZlU3RyZWFtVGhyZXNob2xkTXMpIHsKKyAgICBmcmFtZV9idWZmZXJfLT5DbGVhcigpOworICB9
CisgIGxhc3RfY29tcGxldGVfZnJhbWVfdGltZV9tc18gPSB0aW1lX25vd19tczsKKwogICBpbnQ2
NF90IGxhc3RfY29udGludW91c19waWQgPSBmcmFtZV9idWZmZXJfLT5JbnNlcnRGcmFtZShzdGQ6
Om1vdmUoZnJhbWUpKTsKICAgaWYgKGxhc3RfY29udGludW91c19waWQgIT0gLTEpCiAgICAgcnRw
X3ZpZGVvX3N0cmVhbV9yZWNlaXZlcl8uRnJhbWVDb250aW51b3VzKGxhc3RfY29udGludW91c19w
aWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmgKaW5kZXggYWU1
Y2VkNTFjM2I3YjE5ZmVhMTg0MzI2YjA5MTJkZjk3YWJhMDg4ZS4uNWM5ZmQ4M2M2MmE5ZWQxMTUz
YmIyMGU1MTA4ZDRlYjNiM2IyYmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW0uaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19yZWNl
aXZlX3N0cmVhbS5oCkBAIC0xNyw3ICsxNyw2IEBACiAjaW5jbHVkZSAiY2FsbC9ydHBfcGFja2V0
X3NpbmtfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9zeW5jYWJsZS5oIgogI2luY2x1ZGUg
ImNhbGwvdmlkZW9fcmVjZWl2ZV9zdHJlYW0uaCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vbGli
eXV2L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS9mbGV4ZmVjX3JlY2VpdmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvZnJhbWVfYnVmZmVyMi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVv
X2NvZGluZ19pbXBsLmgiCkBAIC0xMTUsNiArMTE0LDcgQEAgY2xhc3MgVmlkZW9SZWNlaXZlU3Ry
ZWFtIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9SZWNlaXZlU3RyZWFtLAogCiAgIENhbGxTdGF0cyog
Y29uc3QgY2FsbF9zdGF0c187CiAKKyAgUmVjZWl2ZVN0YXRpc3RpY3NQcm94eSBzdGF0c19wcm94
eV87CiAgIC8vIFNoYXJlZCBieSBtZWRpYSBhbmQgcnR4IHN0cmVhbSByZWNlaXZlcnMsIHNpbmNl
IHRoZSBsYXR0ZXIgaGFzIG5vIFJ0cFJ0Y3AKICAgLy8gbW9kdWxlIG9mIGl0cyBvd24uCiAgIGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxSZWNlaXZlU3RhdGlzdGljcz4gcnRwX3JlY2VpdmVfc3RhdGlz
dGljc187CkBAIC0xMjIsNyArMTIyLDYgQEAgY2xhc3MgVmlkZW9SZWNlaXZlU3RyZWFtIDogcHVi
bGljIHdlYnJ0Yzo6VmlkZW9SZWNlaXZlU3RyZWFtLAogICBzdGQ6OnVuaXF1ZV9wdHI8VkNNVGlt
aW5nPiB0aW1pbmdfOyAgLy8gSml0dGVyIGJ1ZmZlciBleHBlcmltZW50LgogICB2Y206OlZpZGVv
UmVjZWl2ZXIgdmlkZW9fcmVjZWl2ZXJfOwogICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpWaWRlb1Np
bmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4+IGluY29taW5nX3ZpZGVvX3N0cmVhbV87Ci0gIFJlY2Vp
dmVTdGF0aXN0aWNzUHJveHkgc3RhdHNfcHJveHlfOwogICBSdHBWaWRlb1N0cmVhbVJlY2VpdmVy
IHJ0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXJfOwogICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TdHJl
YW1EZWNvZGVyPiB2aWRlb19zdHJlYW1fZGVjb2Rlcl87CiAgIFJ0cFN0cmVhbXNTeW5jaHJvbml6
ZXIgcnRwX3N0cmVhbV9zeW5jXzsKQEAgLTE0Nyw2ICsxNDYsNyBAQCBjbGFzcyBWaWRlb1JlY2Vp
dmVTdHJlYW0gOiBwdWJsaWMgd2VicnRjOjpWaWRlb1JlY2VpdmVTdHJlYW0sCiAgIGJvb2wgZnJh
bWVfZGVjb2RlZF8gPSBmYWxzZTsKIAogICBpbnQ2NF90IGxhc3Rfa2V5ZnJhbWVfcmVxdWVzdF9t
c18gPSAwOworICBpbnQ2NF90IGxhc3RfY29tcGxldGVfZnJhbWVfdGltZV9tc18gPSAwOwogfTsK
IH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlk
ZW9fcmVjZWl2ZV9zdHJlYW1fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19yZWNlaXZlX3N0cmVhbV91bml0dGVzdC5jYwpp
bmRleCBlNGJhNjliN2I5MmJlNGJlZjA3N2RjYjZjOWIyNGM3YWNlZjBmNjdhLi4wZWM5ZTE3NzMz
ODRkM2U3MmI2NjFjZTQ2OGFlNTc5NGQ1NmE3NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19yZWNlaXZlX3N0cmVhbV91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby92aWRlb19yZWNlaXZlX3N0cmVhbV91bml0dGVzdC5jYwpAQCAtMTE4LDcgKzExOCw3
IEBAIFRFU1RfRihWaWRlb1JlY2VpdmVTdHJlYW1UZXN0LCBDcmVhdGVGcmFtZUZyb21IMjY0Rm10
cFNwcm9wQW5kSWRyKSB7CiAgIHJ0cHBhY2tldC5TZXRQYXlsb2FkVHlwZSg5OSk7CiAgIHJ0cHBh
Y2tldC5TZXRTZXF1ZW5jZU51bWJlcigxKTsKICAgcnRwcGFja2V0LlNldFRpbWVzdGFtcCgwKTsK
LSAgcnRjOjpFdmVudCBpbml0X2RlY29kZV9ldmVudF8oZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpF
dmVudCBpbml0X2RlY29kZV9ldmVudF87CiAgIEVYUEVDVF9DQUxMKG1vY2tfaDI2NF92aWRlb19k
ZWNvZGVyXywgSW5pdERlY29kZShfLCBfKSkKICAgICAgIC5XaWxsT25jZShJbnZva2UoWyZpbml0
X2RlY29kZV9ldmVudF9dKGNvbnN0IFZpZGVvQ29kZWMqIGNvbmZpZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbnVtYmVyX29mX2NvcmVzKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92
aWRlby92aWRlb19zZW5kX3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmNjCmluZGV4IDA1NGQyN2U0MjFj
MDAxNzlkMmNmYWQ5NmNmMDE4YTJhOGNmYTExY2UuLjA1OWE2MTUwYWY5YjljZTNlZDRmODc5YWM0
Yzk3YWJmNDEyMjNjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmNj
CkBAIC0xNSwxMiArMTUsMTUgQEAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX3NlbmRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInZp
ZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX2ltcGwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIG5h
bWVzcGFjZSB7CiAKK2NvbnN0ZXhwciBjaGFyIGtUYXJnZXRCaXRyYXRlUnRjcEZpZWxkVHJpYWxb
XSA9ICJXZWJSVEMtVGFyZ2V0LUJpdHJhdGUtUnRjcCI7CisKIHNpemVfdCBDYWxjdWxhdGVNYXhI
ZWFkZXJTaXplKGNvbnN0IFJ0cENvbmZpZyYgY29uZmlnKSB7CiAgIHNpemVfdCBoZWFkZXJfc2l6
ZSA9IGtSdHBIZWFkZXJTaXplOwogICBzaXplX3QgZXh0ZW5zaW9uc19zaXplID0gMDsKQEAgLTYy
LDcgKzY1LDcgQEAgVmlkZW9TZW5kU3RyZWFtOjpWaWRlb1NlbmRTdHJlYW0oCiAgICAgcnRjOjpU
YXNrUXVldWUqIHdvcmtlcl9xdWV1ZSwKICAgICBDYWxsU3RhdHMqIGNhbGxfc3RhdHMsCiAgICAg
UnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHRyYW5zcG9ydCwKLSAgICBCaXRy
YXRlQWxsb2NhdG9yKiBiaXRyYXRlX2FsbG9jYXRvciwKKyAgICBCaXRyYXRlQWxsb2NhdG9ySW50
ZXJmYWNlKiBiaXRyYXRlX2FsbG9jYXRvciwKICAgICBTZW5kRGVsYXlTdGF0cyogc2VuZF9kZWxh
eV9zdGF0cywKICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgIFZpZGVvU2VuZFN0cmVh
bTo6Q29uZmlnIGNvbmZpZywKQEAgLTcxLDEzICs3NCwxMyBAQCBWaWRlb1NlbmRTdHJlYW06OlZp
ZGVvU2VuZFN0cmVhbSgKICAgICBjb25zdCBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwUGF5bG9hZFN0
YXRlPiYgc3VzcGVuZGVkX3BheWxvYWRfc3RhdGVzLAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWND
b250cm9sbGVyPiBmZWNfY29udHJvbGxlcikKICAgICA6IHdvcmtlcl9xdWV1ZV8od29ya2VyX3F1
ZXVlKSwKLSAgICAgIHRocmVhZF9zeW5jX2V2ZW50XyhmYWxzZSAvKiBtYW51YWxfcmVzZXQgKi8s
IGZhbHNlKSwKICAgICAgIHN0YXRzX3Byb3h5XyhDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAog
ICAgICAgICAgICAgICAgICAgIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICBlbmNvZGVyX2Nv
bmZpZy5jb250ZW50X3R5cGUpLAogICAgICAgY29uZmlnXyhzdGQ6Om1vdmUoY29uZmlnKSksCiAg
ICAgICBjb250ZW50X3R5cGVfKGVuY29kZXJfY29uZmlnLmNvbnRlbnRfdHlwZSkgewogICBSVENf
RENIRUNLKGNvbmZpZ18uZW5jb2Rlcl9zZXR0aW5ncy5lbmNvZGVyX2ZhY3RvcnkpOworICBSVENf
RENIRUNLKGNvbmZpZ18uZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5
KTsKIAogICB2aWRlb19zdHJlYW1fZW5jb2Rlcl8gPSBDcmVhdGVWaWRlb1N0cmVhbUVuY29kZXIo
bnVtX2NwdV9jb3JlcywgJnN0YXRzX3Byb3h5XywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18uZW5jb2Rlcl9zZXR0aW5ncywKQEAgLTEw
NCw5ICsxMDcsMTAgQEAgVmlkZW9TZW5kU3RyZWFtOjpWaWRlb1NlbmRTdHJlYW0oCiAgIC8vIGl0
IHdhcyBjcmVhdGVkIG9uLgogICB0aHJlYWRfc3luY19ldmVudF8uV2FpdChydGM6OkV2ZW50Ojpr
Rm9yZXZlcik7CiAgIHNlbmRfc3RyZWFtXy0+UmVnaXN0ZXJQcm9jZXNzVGhyZWFkKG1vZHVsZV9w
cm9jZXNzX3RocmVhZCk7Ci0gIC8vIFRPRE8oc3ByYW5nKTogRW5hYmxlIHRoaXMgYWxzbyBmb3Ig
cmVndWxhciB2aWRlbyBjYWxscyBpZiBpdCB3b3JrcyB3ZWxsLgotICBpZiAoZW5jb2Rlcl9jb25m
aWcuY29udGVudF90eXBlID09IFZpZGVvRW5jb2RlckNvbmZpZzo6Q29udGVudFR5cGU6OmtTY3Jl
ZW4pIHsKLSAgICAvLyBPbmx5IHNpZ25hbCB0YXJnZXQgYml0cmF0ZSBmb3Igc2NyZWVuc2hhcmUg
c3RyZWFtcywgZm9yIG5vdy4KKyAgLy8gVE9ETyhzcHJhbmcpOiBFbmFibGUgdGhpcyBhbHNvIGZv
ciByZWd1bGFyIHZpZGVvIGNhbGxzIGJ5IGRlZmF1bHQsIGlmIGl0CisgIC8vIHdvcmtzIHdlbGwu
CisgIGlmIChlbmNvZGVyX2NvbmZpZy5jb250ZW50X3R5cGUgPT0gVmlkZW9FbmNvZGVyQ29uZmln
OjpDb250ZW50VHlwZTo6a1NjcmVlbiB8fAorICAgICAgZmllbGRfdHJpYWw6OklzRW5hYmxlZChr
VGFyZ2V0Qml0cmF0ZVJ0Y3BGaWVsZFRyaWFsKSkgewogICAgIHZpZGVvX3N0cmVhbV9lbmNvZGVy
Xy0+U2V0Qml0cmF0ZUFsbG9jYXRpb25PYnNlcnZlcihzZW5kX3N0cmVhbV8uZ2V0KCkpOwogICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbS5oCmluZGV4IDA5NDUyMDNkZjMx
YjVhNTc5ODE5YTFiMWQ1YmIzMjUyYjU3NTc3ZGQuLjIyYWE0YjFjNmQ1ZGJkMzYyNzVlZmE3YTYx
YWY5NTE4MWQ2MzhhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW0uaApA
QCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgImNhbGwvYml0cmF0ZV9hbGxvY2F0b3IuaCIKICNp
bmNsdWRlICJjYWxsL3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmgiCiAjaW5jbHVkZSAiY2FsbC92aWRl
b19zZW5kX3N0cmVhbS5oIgotI2luY2x1ZGUgImNvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93
ZWJydGNfbGlieXV2LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVl
LmgiCkBAIC02MCw3ICs1OSw3IEBAIGNsYXNzIFZpZGVvU2VuZFN0cmVhbSA6IHB1YmxpYyB3ZWJy
dGM6OlZpZGVvU2VuZFN0cmVhbSB7CiAgICAgICBydGM6OlRhc2tRdWV1ZSogd29ya2VyX3F1ZXVl
LAogICAgICAgQ2FsbFN0YXRzKiBjYWxsX3N0YXRzLAogICAgICAgUnRwVHJhbnNwb3J0Q29udHJv
bGxlclNlbmRJbnRlcmZhY2UqIHRyYW5zcG9ydCwKLSAgICAgIEJpdHJhdGVBbGxvY2F0b3IqIGJp
dHJhdGVfYWxsb2NhdG9yLAorICAgICAgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSogYml0cmF0
ZV9hbGxvY2F0b3IsCiAgICAgICBTZW5kRGVsYXlTdGF0cyogc2VuZF9kZWxheV9zdGF0cywKICAg
ICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCiAgICAgICBWaWRlb1NlbmRTdHJlYW06OkNvbmZp
ZyBjb25maWcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbC5j
YwppbmRleCA1OGNhZjQ3Nzc0NjJkNzU5NWNhMDBhZjZjM2Y1OGEwZTk3NDE0NTdiLi41ZGNmMTgy
NDNkNWY4NzZmMDEyMDY3NTA0NjRiMTk3ZmIzYzJkMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9p
bXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX2ltcGwuY2MKQEAgLTExMSw2ICsxMTEsMTQgQEAgaW50IENh
bGN1bGF0ZU1heFBhZEJpdHJhdGVCcHMoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+JiBz
dHJlYW1zLAogICByZXR1cm4gcGFkX3VwX3RvX2JpdHJhdGVfYnBzOwogfQogCitSdHBTZW5kZXJG
cmFtZUVuY3J5cHRpb25Db25maWcgQ3JlYXRlRnJhbWVFbmNyeXB0aW9uQ29uZmlnKAorICAgIGNv
bnN0IFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnKiBjb25maWcpIHsKKyAgUnRwU2VuZGVyRnJhbWVF
bmNyeXB0aW9uQ29uZmlnIGZyYW1lX2VuY3J5cHRpb25fY29uZmlnOworICBmcmFtZV9lbmNyeXB0
aW9uX2NvbmZpZy5mcmFtZV9lbmNyeXB0b3IgPSBjb25maWctPmZyYW1lX2VuY3J5cHRvcjsKKyAg
ZnJhbWVfZW5jcnlwdGlvbl9jb25maWcuY3J5cHRvX29wdGlvbnMgPSBjb25maWctPmNyeXB0b19v
cHRpb25zOworICByZXR1cm4gZnJhbWVfZW5jcnlwdGlvbl9jb25maWc7Cit9CisKIFJ0cFNlbmRl
ck9ic2VydmVycyBDcmVhdGVPYnNlcnZlcnMoQ2FsbFN0YXRzKiBjYWxsX3N0YXRzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGVyUnRjcEZlZWRiYWNrKiBlbmNvZGVy
X2ZlZWRiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kU3RhdGlz
dGljc1Byb3h5KiBzdGF0c19wcm94eSwKQEAgLTE1MSw2ICsxNTksMTYgQEAgYm9vbCBTYW1lU3Ry
ZWFtc0VuYWJsZWQoY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgbGhzLAogfQogfSAgLy8g
bmFtZXNwYWNlCiAKK1BhY2luZ0NvbmZpZzo6UGFjaW5nQ29uZmlnKCkKKyAgICA6IHBhY2luZ19m
YWN0b3IoImZhY3RvciIsIFBhY2VkU2VuZGVyOjprRGVmYXVsdFBhY2VNdWx0aXBsaWVyKSwKKyAg
ICAgIG1heF9wYWNpbmdfZGVsYXkoIm1heF9kZWxheSIsCisgICAgICAgICAgICAgICAgICAgICAg
IFRpbWVEZWx0YTo6bXMoUGFjZWRTZW5kZXI6OmtNYXhRdWV1ZUxlbmd0aE1zKSkgeworICBQYXJz
ZUZpZWxkVHJpYWwoeyZwYWNpbmdfZmFjdG9yLCAmbWF4X3BhY2luZ19kZWxheX0sCisgICAgICAg
ICAgICAgICAgICBmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJXZWJSVEMtVmlkZW8tUGFjaW5n
IikpOworfQorUGFjaW5nQ29uZmlnOjpQYWNpbmdDb25maWcoY29uc3QgUGFjaW5nQ29uZmlnJikg
PSBkZWZhdWx0OworUGFjaW5nQ29uZmlnOjp+UGFjaW5nQ29uZmlnKCkgPSBkZWZhdWx0OworCiAv
LyBDaGVja0VuY29kZXJBY3Rpdml0eVRhc2sgaXMgdXNlZCBmb3IgdHJhY2tpbmcgd2hlbiB0aGUg
ZW5jb2RlciBsYXN0IHByb2R1Y2VkCiAvLyBhbmQgZW5jb2RlZCB2aWRlbyBmcmFtZS4gSWYgdGhl
IGVuY29kZXIgaGFzIG5vdCBwcm9kdWNlZCBhbnl0aGluZyB0aGUgbGFzdAogLy8ga0VuY29kZXJU
aW1lT3V0TXMgd2UgYWxzbyB3YW50IHRvIHN0b3Agc2VuZGluZyBwYWRkaW5nLgpAQCAtMjIxLDYg
KzIzOSw3IEBAIFZpZGVvU2VuZFN0cmVhbUltcGw6OlZpZGVvU2VuZFN0cmVhbUltcGwoCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+IGZlY19jb250cm9sbGVyKQogICAgIDogaGFz
X2Fscl9wcm9iaW5nXyhjb25maWctPnBlcmlvZGljX2Fscl9iYW5kd2lkdGhfcHJvYmluZyB8fAog
ICAgICAgICAgICAgICAgICAgICAgICBHZXRBbHJTZXR0aW5ncyhjb250ZW50X3R5cGUpKSwKKyAg
ICAgIHBhY2luZ19jb25maWdfKFBhY2luZ0NvbmZpZygpKSwKICAgICAgIHN0YXRzX3Byb3h5Xyhz
dGF0c19wcm94eSksCiAgICAgICBjb25maWdfKGNvbmZpZyksCiAgICAgICB3b3JrZXJfcXVldWVf
KHdvcmtlcl9xdWV1ZSksCkBAIC0yMzgsMTkgKzI1NywyMCBAQCBWaWRlb1NlbmRTdHJlYW1JbXBs
OjpWaWRlb1NlbmRTdHJlYW1JbXBsKAogICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnXy0+
cnRwLnNzcmNzLAogICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9fc3RyZWFtX2VuY29kZXIp
LAogICAgICAgYmFuZHdpZHRoX29ic2VydmVyXyh0cmFuc3BvcnQtPkdldEJhbmR3aWR0aE9ic2Vy
dmVyKCkpLAotICAgICAgcnRwX3ZpZGVvX3NlbmRlcl8oCi0gICAgICAgICAgdHJhbnNwb3J0Xy0+
Q3JlYXRlUnRwVmlkZW9TZW5kZXIoY29uZmlnXy0+cnRwLnNzcmNzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1c3BlbmRlZF9zc3JjcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXNwZW5kZWRfcGF5bG9hZF9zdGF0ZXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnXy0+cnRw
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18tPnJ0
Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnXy0+
c2VuZF90cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ3JlYXRlT2JzZXJ2ZXJzKGNhbGxfc3RhdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbmNvZGVyX2ZlZWRiYWNrXywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdHNfcHJveHlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZW5kX2RlbGF5X3N0YXRzKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBldmVudF9sb2csCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGZlY19jb250cm9sbGVyKSkpLAorICAgICAg
cnRwX3ZpZGVvX3NlbmRlcl8odHJhbnNwb3J0Xy0+Q3JlYXRlUnRwVmlkZW9TZW5kZXIoCisgICAg
ICAgICAgY29uZmlnXy0+cnRwLnNzcmNzLAorICAgICAgICAgIHN1c3BlbmRlZF9zc3JjcywKKyAg
ICAgICAgICBzdXNwZW5kZWRfcGF5bG9hZF9zdGF0ZXMsCisgICAgICAgICAgY29uZmlnXy0+cnRw
LAorICAgICAgICAgIGNvbmZpZ18tPnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zLAorICAgICAgICAg
IGNvbmZpZ18tPnNlbmRfdHJhbnNwb3J0LAorICAgICAgICAgIENyZWF0ZU9ic2VydmVycyhjYWxs
X3N0YXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jb2Rlcl9mZWVkYmFja18sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzX3Byb3h5XywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VuZF9kZWxheV9zdGF0cyksCisgICAgICAgICAgZXZlbnRfbG9nLAorICAgICAg
ICAgIHN0ZDo6bW92ZShmZWNfY29udHJvbGxlciksCisgICAgICAgICAgQ3JlYXRlRnJhbWVFbmNy
eXB0aW9uQ29uZmlnKGNvbmZpZ18pKSksCiAgICAgICB3ZWFrX3B0cl9mYWN0b3J5Xyh0aGlzKSB7
CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKHdvcmtlcl9xdWV1ZV8pOwogICBSVENfTE9HKExTX0lORk8p
IDw8ICJWaWRlb1NlbmRTdHJlYW1JbnRlcm5hbDogIiA8PCBjb25maWdfLT5Ub1N0cmluZygpOwpA
QCAtMjkzLDkgKzMxMyw5IEBAIFZpZGVvU2VuZFN0cmVhbUltcGw6OlZpZGVvU2VuZFN0cmVhbUlt
cGwoCiAgICAgICB0cmFuc3BvcnQtPlNldFF1ZXVlVGltZUxpbWl0KGFscl9zZXR0aW5ncy0+bWF4
X3BhY2VkX3F1ZXVlX3RpbWUpOwogICAgIH0gZWxzZSB7CiAgICAgICB0cmFuc3BvcnQtPkVuYWJs
ZVBlcmlvZGljQWxyUHJvYmluZyhmYWxzZSk7Ci0gICAgICB0cmFuc3BvcnQtPlNldFBhY2luZ0Zh
Y3RvcihQYWNlZFNlbmRlcjo6a0RlZmF1bHRQYWNlTXVsdGlwbGllcik7Ci0gICAgICBjb25maWd1
cmVkX3BhY2luZ19mYWN0b3JfID0gUGFjZWRTZW5kZXI6OmtEZWZhdWx0UGFjZU11bHRpcGxpZXI7
Ci0gICAgICB0cmFuc3BvcnQtPlNldFF1ZXVlVGltZUxpbWl0KFBhY2VkU2VuZGVyOjprTWF4UXVl
dWVMZW5ndGhNcyk7CisgICAgICB0cmFuc3BvcnQtPlNldFBhY2luZ0ZhY3RvcihwYWNpbmdfY29u
ZmlnXy5wYWNpbmdfZmFjdG9yKTsKKyAgICAgIGNvbmZpZ3VyZWRfcGFjaW5nX2ZhY3Rvcl8gPSBw
YWNpbmdfY29uZmlnXy5wYWNpbmdfZmFjdG9yOworICAgICAgdHJhbnNwb3J0LT5TZXRRdWV1ZVRp
bWVMaW1pdChwYWNpbmdfY29uZmlnXy5tYXhfcGFjaW5nX2RlbGF5LkdldCgpLm1zKCkpOwogICAg
IH0KICAgfQogCkBAIC01NjMsMTcgKzU4Myw2IEBAIEVuY29kZWRJbWFnZUNhbGxiYWNrOjpSZXN1
bHQgVmlkZW9TZW5kU3RyZWFtSW1wbDo6T25FbmNvZGVkSW1hZ2UoCiAgIC8vIEVuY29kZWQgaXMg
Y2FsbGVkIG9uIHdoYXRldmVyIHRocmVhZCB0aGUgcmVhbCBlbmNvZGVyIGltcGxlbWVudGF0aW9u
IHJ1bgogICAvLyBvbi4gSW4gdGhlIGNhc2Ugb2YgaGFyZHdhcmUgZW5jb2RlcnMsIHRoZXJlIG1p
Z2h0IGJlIHNldmVyYWwgZW5jb2RlcnMKICAgLy8gcnVubmluZyBpbiBwYXJhbGxlbCBvbiBkaWZm
ZXJlbnQgdGhyZWFkcy4KLSAgY29uc3Qgc2l6ZV90IHNpbXVsY2FzdF9pZHggPQotICAgICAgKGNv
ZGVjX3NwZWNpZmljX2luZm8tPmNvZGVjVHlwZSAhPSBrVmlkZW9Db2RlY1ZQOSkKLSAgICAgICAg
ICA/IGVuY29kZWRfaW1hZ2UuU3BhdGlhbEluZGV4KCkudmFsdWVfb3IoMCkKLSAgICAgICAgICA6
IDA7Ci0gIGlmIChjb25maWdfLT5wb3N0X2VuY29kZV9jYWxsYmFjaykgewotICAgIC8vIFRPRE8o
bmlzc2UpOiBEZWxldGUgd2VicnRjOjpFbmNvZGVkRnJhbWUgY2xhc3MsIHBhc3MgRW5jb2RlZElt
YWdlCi0gICAgLy8gaW5zdGVhZC4KLSAgICBjb25maWdfLT5wb3N0X2VuY29kZV9jYWxsYmFjay0+
RW5jb2RlZEZyYW1lQ2FsbGJhY2soRW5jb2RlZEZyYW1lKAotICAgICAgICBlbmNvZGVkX2ltYWdl
Ll9idWZmZXIsIGVuY29kZWRfaW1hZ2UuX2xlbmd0aCwgZW5jb2RlZF9pbWFnZS5fZnJhbWVUeXBl
LAotICAgICAgICBzaW11bGNhc3RfaWR4LCBlbmNvZGVkX2ltYWdlLlRpbWVzdGFtcCgpKSk7Ci0g
IH0KICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmVuY29kZXJfYWN0aXZpdHlfY3JpdF9z
ZWN0Xyk7CiAgICAgaWYgKGNoZWNrX2VuY29kZXJfYWN0aXZpdHlfdGFza18pCkBAIC02MTMsMjEg
KzYyMiwyMiBAQCBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwUGF5bG9hZFN0YXRlPiBWaWRlb1NlbmRT
dHJlYW1JbXBsOjpHZXRSdHBQYXlsb2FkU3RhdGVzKCkKICAgcmV0dXJuIHJ0cF92aWRlb19zZW5k
ZXJfLT5HZXRSdHBQYXlsb2FkU3RhdGVzKCk7CiB9CiAKLXVpbnQzMl90IFZpZGVvU2VuZFN0cmVh
bUltcGw6Ok9uQml0cmF0ZVVwZGF0ZWQodWludDMyX3QgYml0cmF0ZV9icHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9z
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBydHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcykgewordWludDMyX3QgVmlkZW9TZW5kU3RyZWFtSW1w
bDo6T25CaXRyYXRlVXBkYXRlZChCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpIHsKICAg
UlRDX0RDSEVDS19SVU5fT04od29ya2VyX3F1ZXVlXyk7CiAgIFJUQ19EQ0hFQ0socnRwX3ZpZGVv
X3NlbmRlcl8tPklzQWN0aXZlKCkpCiAgICAgICA8PCAiVmlkZW9TZW5kU3RyZWFtOjpTdGFydCBo
YXMgbm90IGJlZW4gY2FsbGVkLiI7CiAKLSAgcnRwX3ZpZGVvX3NlbmRlcl8tPk9uQml0cmF0ZVVw
ZGF0ZWQoYml0cmF0ZV9icHMsIGZyYWN0aW9uX2xvc3MsIHJ0dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdHNfcHJveHlfLT5HZXRTZW5kRnJhbWVSYXRlKCkpOwor
ICBydHBfdmlkZW9fc2VuZGVyXy0+T25CaXRyYXRlVXBkYXRlZCgKKyAgICAgIHVwZGF0ZS50YXJn
ZXRfYml0cmF0ZS5icHMoKSwKKyAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50OF90Pih1cGRh
dGUucGFja2V0X2xvc3NfcmF0aW8gKiAyNTYpLAorICAgICAgdXBkYXRlLnJvdW5kX3RyaXBfdGlt
ZS5tcygpLCBzdGF0c19wcm94eV8tPkdldFNlbmRGcmFtZVJhdGUoKSk7CiAgIGVuY29kZXJfdGFy
Z2V0X3JhdGVfYnBzXyA9IHJ0cF92aWRlb19zZW5kZXJfLT5HZXRQYXlsb2FkQml0cmF0ZUJwcygp
OwogICBlbmNvZGVyX3RhcmdldF9yYXRlX2Jwc18gPQogICAgICAgc3RkOjptaW4oZW5jb2Rlcl9t
YXhfYml0cmF0ZV9icHNfLCBlbmNvZGVyX3RhcmdldF9yYXRlX2Jwc18pOwotICB2aWRlb19zdHJl
YW1fZW5jb2Rlcl8tPk9uQml0cmF0ZVVwZGF0ZWQoZW5jb2Rlcl90YXJnZXRfcmF0ZV9icHNfLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25fbG9zcywg
cnR0KTsKKyAgdmlkZW9fc3RyZWFtX2VuY29kZXJfLT5PbkJpdHJhdGVVcGRhdGVkKAorICAgICAg
ZW5jb2Rlcl90YXJnZXRfcmF0ZV9icHNfLAorICAgICAgcnRjOjpkY2hlY2tlZF9jYXN0PHVpbnQ4
X3Q+KHVwZGF0ZS5wYWNrZXRfbG9zc19yYXRpbyAqIDI1NiksCisgICAgICB1cGRhdGUucm91bmRf
dHJpcF90aW1lLm1zKCkpOwogICBzdGF0c19wcm94eV8tPk9uU2V0RW5jb2RlclRhcmdldFJhdGUo
ZW5jb2Rlcl90YXJnZXRfcmF0ZV9icHNfKTsKICAgcmV0dXJuIHJ0cF92aWRlb19zZW5kZXJfLT5H
ZXRQcm90ZWN0aW9uQml0cmF0ZUJwcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9f
c2VuZF9zdHJlYW1faW1wbC5oCmluZGV4IGVlZDlmNTY3ZmIwODE4NmZhODUxZGQyOWM0MmM1NDE3
MGJhMzM5OTMuLjljYWFiYWNkYWI5MjQ0OGQxMzY3N2NhZjkxMDUxN2YxYjJhZmZlYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Zp
ZGVvX3NlbmRfc3RyZWFtX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9pbXBsLmgKQEAgLTE4LDcgKzE4
LDYgQEAKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJfaW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiY2FsbC9iaXRyYXRlX2FsbG9jYXRvci5oIgogI2luY2x1ZGUgImNhbGwv
cnRwX3ZpZGVvX3NlbmRlcl9pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIg
IC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNs
dWRlL3Byb2Nlc3NfdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvd2Vha19wdHIuaCIKICNp
bmNsdWRlICJ2aWRlby9jYWxsX3N0YXRzLmgiCkBAIC0zMCw2ICsyOSwxNiBAQAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCisvLyBQYWNpbmcgYnVmZmVyIGNvbmZp
Zzsgb3ZlcnJpZGRlbiBieSBBTFIgY29uZmlnIGlmIHByb3ZpZGVkLgorc3RydWN0IFBhY2luZ0Nv
bmZpZyB7CisgIFBhY2luZ0NvbmZpZygpOworICBQYWNpbmdDb25maWcoY29uc3QgUGFjaW5nQ29u
ZmlnJik7CisgIFBhY2luZ0NvbmZpZyYgb3BlcmF0b3I9KGNvbnN0IFBhY2luZ0NvbmZpZyYpID0g
ZGVmYXVsdDsKKyAgflBhY2luZ0NvbmZpZygpOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPGRvdWJs
ZT4gcGFjaW5nX2ZhY3RvcjsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IG1heF9w
YWNpbmdfZGVsYXk7Cit9OworCiAvLyBWaWRlb1NlbmRTdHJlYW1JbXBsIGltcGxlbWVudHMgaW50
ZXJuYWw6OlZpZGVvU2VuZFN0cmVhbS4KIC8vIEl0IGlzIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCBv
biB8d29ya2VyX3F1ZXVlfC4gVGhlIGludGVudCBpcyB0byBkZWNyZWFzZSB0aGUKIC8vIG5lZWQg
Zm9yIGxvY2tpbmcgYW5kIHRvIGVuc3VyZSBtZXRob2RzIGFyZSBjYWxsZWQgaW4gc2VxdWVuY2Uu
CkBAIC04MywxMCArOTIsNyBAQCBjbGFzcyBWaWRlb1NlbmRTdHJlYW1JbXBsIDogcHVibGljIHdl
YnJ0Yzo6Qml0cmF0ZUFsbG9jYXRvck9ic2VydmVyLAogICBjbGFzcyBDaGVja0VuY29kZXJBY3Rp
dml0eVRhc2s7CiAKICAgLy8gSW1wbGVtZW50cyBCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIuCi0g
IHVpbnQzMl90IE9uQml0cmF0ZVVwZGF0ZWQodWludDMyX3QgYml0cmF0ZV9icHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3NzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDY0X3QgcnR0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcykgb3ZlcnJpZGU7CisgIHVpbnQzMl90IE9uQml0
cmF0ZVVwZGF0ZWQoQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlKSBvdmVycmlkZTsKIAog
ICB2b2lkIE9uRW5jb2RlckNvbmZpZ3VyYXRpb25DaGFuZ2VkKHN0ZDo6dmVjdG9yPFZpZGVvU3Ry
ZWFtPiBzdHJlYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBt
aW5fdHJhbnNtaXRfYml0cmF0ZV9icHMpIG92ZXJyaWRlOwpAQCAtMTE1LDYgKzEyMSw3IEBAIGNs
YXNzIFZpZGVvU2VuZFN0cmVhbUltcGwgOiBwdWJsaWMgd2VicnRjOjpCaXRyYXRlQWxsb2NhdG9y
T2JzZXJ2ZXIsCiAgIHZvaWQgU2lnbmFsRW5jb2RlckFjdGl2ZSgpOwogCiAgIGNvbnN0IGJvb2wg
aGFzX2Fscl9wcm9iaW5nXzsKKyAgY29uc3QgUGFjaW5nQ29uZmlnIHBhY2luZ19jb25maWdfOwog
CiAgIFNlbmRTdGF0aXN0aWNzUHJveHkqIGNvbnN0IHN0YXRzX3Byb3h5XzsKICAgY29uc3QgVmlk
ZW9TZW5kU3RyZWFtOjpDb25maWcqIGNvbnN0IGNvbmZpZ187CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVh
bV9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbF91bml0dGVzdC5jYwppbmRleCBkZDAz
NjkwOWE2YWYxZWM1Njc5OGQ0OGI5NThhMTY5ZDBiN2NkYjE4Li4zMmQwZGYxYzJlNjFiN2RjNWVm
Y2RhZTgzZjYzYTQxODgxMDcxMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9pbXBsX3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L3ZpZGVvX3NlbmRfc3RyZWFtX2ltcGxfdW5pdHRlc3QuY2MKQEAgLTY5LDYgKzY5LDE0IEBAIGNs
YXNzIE1vY2tSdHBWaWRlb1NlbmRlciA6IHB1YmxpYyBSdHBWaWRlb1NlbmRlckludGVyZmFjZSB7
CiAgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRQcm90ZWN0aW9uQml0cmF0ZUJwcywgdWludDMyX3Qo
KSk7CiAgIE1PQ0tfTUVUSE9EMyhTZXRFbmNvZGluZ0RhdGEsIHZvaWQoc2l6ZV90LCBzaXplX3Qs
IHNpemVfdCkpOwogfTsKKworQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgQ3JlYXRlQWxsb2NhdGlv
bihpbnQgYml0cmF0ZV9icHMpIHsKKyAgQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlOwor
ICB1cGRhdGUudGFyZ2V0X2JpdHJhdGUgPSBEYXRhUmF0ZTo6YnBzKGJpdHJhdGVfYnBzKTsKKyAg
dXBkYXRlLnBhY2tldF9sb3NzX3JhdGlvID0gMDsKKyAgdXBkYXRlLnJvdW5kX3RyaXBfdGltZSA9
IFRpbWVEZWx0YTo6WmVybygpOworICByZXR1cm4gdXBkYXRlOworfQogfSAgLy8gbmFtZXNwYWNl
CiAKIGNsYXNzIFZpZGVvU2VuZFN0cmVhbUltcGxUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7CkBAIC05MSw3ICs5OSw3IEBAIGNsYXNzIFZpZGVvU2VuZFN0cmVhbUltcGxUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgRVhQRUNUX0NBTEwodHJhbnNwb3J0X2NvbnRyb2xs
ZXJfLCBwYWNrZXRfcm91dGVyKCkpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oJnBh
Y2tldF9yb3V0ZXJfKSk7CiAgICAgRVhQRUNUX0NBTEwodHJhbnNwb3J0X2NvbnRyb2xsZXJfLAot
ICAgICAgICAgICAgICAgIENyZWF0ZVJ0cFZpZGVvU2VuZGVyKF8sIF8sIF8sIF8sIF8sIF8sIF8s
IF8sIF8pKQorICAgICAgICAgICAgICAgIENyZWF0ZVJ0cFZpZGVvU2VuZGVyKF8sIF8sIF8sIF8s
IF8sIF8sIF8sIF8sIF8sIF8pKQogICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCZydHBf
dmlkZW9fc2VuZGVyXykpOwogICAgIEVYUEVDVF9DQUxMKHJ0cF92aWRlb19zZW5kZXJfLCBTZXRB
Y3RpdmUoXykpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseSh0ZXN0aW5nOjpJbnZva2UoCkBAIC0z
NjcsNyArMzc1LDcgQEAgVEVTVF9GKFZpZGVvU2VuZFN0cmVhbUltcGxUZXN0LCBGb3J3YXJkc1Zp
ZGVvQml0cmF0ZUFsbG9jYXRpb25XaGVuRW5hYmxlZCkgewogICAgICAgICAuVGltZXMoMSkKICAg
ICAgICAgLldpbGxPbmNlKFJldHVybihrQml0cmF0ZUJwcykpOwogICAgIHN0YXRpY19jYXN0PEJp
dHJhdGVBbGxvY2F0b3JPYnNlcnZlcio+KHZzc19pbXBsLmdldCgpKQotICAgICAgICAtPk9uQml0
cmF0ZVVwZGF0ZWQoa0JpdHJhdGVCcHMsIDAsIDAsIDApOworICAgICAgICAtPk9uQml0cmF0ZVVw
ZGF0ZWQoQ3JlYXRlQWxsb2NhdGlvbihrQml0cmF0ZUJwcykpOwogICAgIEVYUEVDVF9DQUxMKHJ0
cF92aWRlb19zZW5kZXJfLCBPbkJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlZChhbGxvYykpLlRpbWVz
KDEpOwogICAgIG9ic2VydmVyLT5PbkJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlZChhbGxvYyk7CiAK
QEAgLTM3Niw3ICszODQsNyBAQCBURVNUX0YoVmlkZW9TZW5kU3RyZWFtSW1wbFRlc3QsIEZvcndh
cmRzVmlkZW9CaXRyYXRlQWxsb2NhdGlvbldoZW5FbmFibGVkKSB7CiAgICAgICAgIC5UaW1lcygx
KQogICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDApKTsKICAgICBzdGF0aWNfY2FzdDxCaXRyYXRl
QWxsb2NhdG9yT2JzZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSkKLSAgICAgICAgLT5PbkJpdHJhdGVV
cGRhdGVkKDAsIDAsIDAsIDApOworICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoQ3JlYXRlQWxs
b2NhdGlvbigwKSk7CiAgICAgRVhQRUNUX0NBTEwocnRwX3ZpZGVvX3NlbmRlcl8sIE9uQml0cmF0
ZUFsbG9jYXRpb25VcGRhdGVkKGFsbG9jKSkuVGltZXMoMCk7CiAgICAgb2JzZXJ2ZXItPk9uQml0
cmF0ZUFsbG9jYXRpb25VcGRhdGVkKGFsbG9jKTsKIApAQCAtMzk2LDcgKzQwNCw3IEBAIFRFU1Rf
RihWaWRlb1NlbmRTdHJlYW1JbXBsVGVzdCwgVGhyb3R0bGVzVmlkZW9CaXRyYXRlQWxsb2NhdGlv
bldoZW5Ub29TaW1pbGFyKSB7CiAgICAgICAgIC5UaW1lcygxKQogICAgICAgICAuV2lsbE9uY2Uo
UmV0dXJuKGtCaXRyYXRlQnBzKSk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0cmF0ZUFsbG9jYXRvck9i
c2VydmVyKj4odnNzX2ltcGwuZ2V0KCkpCi0gICAgICAgIC0+T25CaXRyYXRlVXBkYXRlZChrQml0
cmF0ZUJwcywgMCwgMCwgMCk7CisgICAgICAgIC0+T25CaXRyYXRlVXBkYXRlZChDcmVhdGVBbGxv
Y2F0aW9uKGtCaXRyYXRlQnBzKSk7CiAgICAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbk9ic2VydmVy
KiBjb25zdCBvYnNlcnZlciA9CiAgICAgICAgIHN0YXRpY19jYXN0PFZpZGVvQml0cmF0ZUFsbG9j
YXRpb25PYnNlcnZlcio+KHZzc19pbXBsLmdldCgpKTsKIApAQCAtNDUwLDcgKzQ1OCw3IEBAIFRF
U1RfRihWaWRlb1NlbmRTdHJlYW1JbXBsVGVzdCwgRm9yd2FyZHNWaWRlb0JpdHJhdGVBbGxvY2F0
aW9uT25MYXllckNoYW5nZSkgewogICAgICAgICAuVGltZXMoMSkKICAgICAgICAgLldpbGxPbmNl
KFJldHVybihrQml0cmF0ZUJwcykpOwogICAgIHN0YXRpY19jYXN0PEJpdHJhdGVBbGxvY2F0b3JP
YnNlcnZlcio+KHZzc19pbXBsLmdldCgpKQotICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoa0Jp
dHJhdGVCcHMsIDAsIDAsIDApOworICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoQ3JlYXRlQWxs
b2NhdGlvbihrQml0cmF0ZUJwcykpOwogICAgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb25PYnNlcnZl
ciogY29uc3Qgb2JzZXJ2ZXIgPQogICAgICAgICBzdGF0aWNfY2FzdDxWaWRlb0JpdHJhdGVBbGxv
Y2F0aW9uT2JzZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSk7CiAKQEAgLTQ5NCw3ICs1MDIsNyBAQCBU
RVNUX0YoVmlkZW9TZW5kU3RyZWFtSW1wbFRlc3QsIEZvcndhcmRzVmlkZW9CaXRyYXRlQWxsb2Nh
dGlvbkFmdGVyVGltZW91dCkgewogICAgICAgICAuVGltZXMoMSkKICAgICAgICAgLldpbGxSZXBl
YXRlZGx5KFJldHVybihrQml0cmF0ZUJwcykpOwogICAgIHN0YXRpY19jYXN0PEJpdHJhdGVBbGxv
Y2F0b3JPYnNlcnZlcio+KHZzc19pbXBsLmdldCgpKQotICAgICAgICAtPk9uQml0cmF0ZVVwZGF0
ZWQoa0JpdHJhdGVCcHMsIDAsIDAsIDApOworICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoQ3Jl
YXRlQWxsb2NhdGlvbihrQml0cmF0ZUJwcykpOwogICAgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb25P
YnNlcnZlciogY29uc3Qgb2JzZXJ2ZXIgPQogICAgICAgICBzdGF0aWNfY2FzdDxWaWRlb0JpdHJh
dGVBbGxvY2F0aW9uT2JzZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRf
c3RyZWFtX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1fdGVzdHMuY2MKaW5kZXggMDljY2YxYzQ5ODkzYTUz
Y2YzYmM3MzlkZGZmYjcwZmMyMTc1YWM5OS4uZWE3N2NkNjUyOTE0OTM3OTVjOWQyMWVhNGMyNzgw
MWYzM2Q4OTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1fdGVzdHMuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1f
dGVzdHMuY2MKQEAgLTEyLDEyICsxMiwxMSBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1
ZGUgImFwaS90ZXN0L3NpbXVsYXRlZF9uZXR3b3JrLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2Vu
Y29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJjYWxsL2NhbGwuaCIKICNpbmNsdWRlICJjYWxsL2Zh
a2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xs
ZXJfc2VuZC5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKLSNpbmNsdWRl
ICJjb21tb25fdmlkZW8vaW5jbHVkZS9mcmFtZV9jYWxsYmFjay5oIgotI2luY2x1ZGUgImNvbW1v
bl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9pbmNsdWRlL3J0cF9oZWFkZXJfcGFyc2VyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9pbmNsdWRlL3J0cF9ydGNwLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRjcF9zZW5kZXIuaCIKQEAgLTcwLDEwICs2OSwxNCBAQCBjbGFzcyBWaWRlb1NlbmRTdHJlYW1Q
ZWVyIHsKIH07CiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogCituYW1lc3BhY2UgeworY29uc3RleHBy
IGludDY0X3Qga1J0Y3BJbnRlcnZhbE1zID0gMTAwMDsKKwogZW51bSBWaWRlb0Zvcm1hdCB7CiAg
IGtHZW5lcmljLAogICBrVlA4LAogfTsKK30gIC8vIG5hbWVzcGFjZQogCiB2b2lkIEV4cGVjdEVx
dWFsRnJhbWVzVmVjdG9yKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvRnJhbWU+JiBmcmFtZXMxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0ZyYW1l
PiYgZnJhbWVzMik7CkBAIC01NDEsNyArNTQ0LDcgQEAgY2xhc3MgVWxwZmVjT2JzZXJ2ZXIgOiBw
dWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKICAgICAvLyBBdCBsb3cgUlRUICg8IGtMb3dSdHRO
YWNrTXMpIC0+IE5BQ0sgb25seSwgbm8gRkVDLgogICAgIC8vIENvbmZpZ3VyZSBzb21lIG5ldHdv
cmsgZGVsYXkuCiAgICAgY29uc3QgaW50IGtOZXR3b3JrRGVsYXlNcyA9IDEwMDsKLSAgICBEZWZh
dWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICAgIEJ1aWx0SW5OZXR3b3JrQmVo
YXZpb3JDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5sb3NzX3BlcmNlbnQgPSA1OwogICAgIGNv
bmZpZy5xdWV1ZV9kZWxheV9tcyA9IGtOZXR3b3JrRGVsYXlNczsKICAgICByZXR1cm4gbmV3IHRl
c3Q6OlBhY2tldFRyYW5zcG9ydCgKQEAgLTY1NSw3ICs2NTgsNyBAQCBURVNUX1AoVmlkZW9TZW5k
U3RyZWFtVGVzdCwgRElTQUJMRURfRG9lc1V0aWxpemVVbHBmZWNGb3JWcDhXaXRoTmFja0VuYWJs
ZWQpIHsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCi0jaWYgIWRlZmluZWQoUlRDX0RJU0FC
TEVfVlA5KQorI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAvLyBEaXNhYmxlZCBhcyBmbGFr
eSwgc2VlIGh0dHBzOi8vY3JidWcuY29tL3dlYnJ0Yy83Mjg1IGZvciBkZXRhaWxzLgogVEVTVF9Q
KFZpZGVvU2VuZFN0cmVhbVRlc3QsIERJU0FCTEVEX0RvZXNVdGlsaXplVWxwZmVjRm9yVnA5V2l0
aE5hY2tFbmFibGVkKSB7CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9FbmNvZGVyRmFjdG9yeSBlbmNv
ZGVyX2ZhY3RvcnkoCkBAIC02NjMsNyArNjY2LDcgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRl
c3QsIERJU0FCTEVEX0RvZXNVdGlsaXplVWxwZmVjRm9yVnA5V2l0aE5hY2tFbmFibGVkKSB7CiAg
IFVscGZlY09ic2VydmVyIHRlc3QoZmFsc2UsIHRydWUsIHRydWUsIHRydWUsICJWUDkiLCAmZW5j
b2Rlcl9mYWN0b3J5KTsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQotI2VuZGlmICAvLyAhZGVm
aW5lZChSVENfRElTQUJMRV9WUDkpCisjZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkp
CiAKIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBTdXBwb3J0c1VscGZlY1dpdGhNdWx0aXRo
cmVhZGVkSDI2NCkgewogICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2Rl
cl9mYWN0b3J5KFtdKCkgewpAQCAtNzMxLDcgKzczNCw3IEBAIGNsYXNzIEZsZXhmZWNPYnNlcnZl
ciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QgewogICAgIC8vIEF0IGxvdyBSVFQgKDwga0xv
d1J0dE5hY2tNcykgLT4gTkFDSyBvbmx5LCBubyBGRUMuCiAgICAgLy8gVGhlcmVmb3JlIHdlIG5l
ZWQgc29tZSBuZXR3b3JrIGRlbGF5LgogICAgIGNvbnN0IGludCBrTmV0d29ya0RlbGF5TXMgPSAx
MDA7Ci0gICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgICBCdWls
dEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgICBjb25maWcubG9zc19wZXJjZW50
ID0gNTsKICAgICBjb25maWcucXVldWVfZGVsYXlfbXMgPSBrTmV0d29ya0RlbGF5TXM7CiAgICAg
cmV0dXJuIG5ldyB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQoCkBAIC04MDYsNyArODA5LDcgQEAgVEVT
VF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFN1cHBvcnRzRmxleGZlY1dpdGhSdHBFeHRlbnNpb25z
VnA4KSB7CiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KIAotI2lmICFkZWZpbmVkKFJUQ19ESVNB
QkxFX1ZQOSkKKyNpZiBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogVEVTVF9QKFZpZGVvU2VuZFN0
cmVhbVRlc3QsIFN1cHBvcnRzRmxleGZlY1ZwOSkgewogICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5j
b2RlckZhY3RvcnkgZW5jb2Rlcl9mYWN0b3J5KAogICAgICAgW10oKSB7IHJldHVybiBWUDlFbmNv
ZGVyOjpDcmVhdGUoKTsgfSk7CkBAIC04MjAsNyArODIzLDcgQEAgVEVTVF9QKFZpZGVvU2VuZFN0
cmVhbVRlc3QsIFN1cHBvcnRzRmxleGZlY1dpdGhOYWNrVnA5KSB7CiAgIEZsZXhmZWNPYnNlcnZl
ciB0ZXN0KGZhbHNlLCB0cnVlLCAiVlA5IiwgJmVuY29kZXJfZmFjdG9yeSwgMSk7CiAgIFJ1bkJh
c2VUZXN0KCZ0ZXN0KTsKIH0KLSNlbmRpZiAgLy8gZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisj
ZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKIFRFU1RfUChWaWRlb1NlbmRTdHJl
YW1UZXN0LCBTdXBwb3J0c0ZsZXhmZWNIMjY0KSB7CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9FbmNv
ZGVyRmFjdG9yeSBlbmNvZGVyX2ZhY3RvcnkoW10oKSB7CkBAIC04NjYsMTkgKzg2OSwyNyBAQCB2
b2lkIFZpZGVvU2VuZFN0cmVhbVRlc3Q6OlRlc3ROYWNrUmV0cmFuc21pc3Npb24oCiAgICAgICBS
VFBIZWFkZXIgaGVhZGVyOwogICAgICAgRVhQRUNUX1RSVUUocGFyc2VyXy0+UGFyc2UocGFja2V0
LCBsZW5ndGgsICZoZWFkZXIpKTsKIAotICAgICAgaW50IGtSZXRyYW5zbWl0VGFyZ2V0ID0gNjsK
KyAgICAgIC8vIE5BQ0sgcGFja2V0cyB0d28gdGltZXMgYXQgc29tZSBhcmJpdHJhcnkgcG9pbnRz
LgorICAgICAgY29uc3QgaW50IGtOYWNrZWRQYWNrZXRzQXRPbmNlQ291bnQgPSAzOworICAgICAg
Y29uc3QgaW50IGtSZXRyYW5zbWl0VGFyZ2V0ID0ga05hY2tlZFBhY2tldHNBdE9uY2VDb3VudCAq
IDI7CisKKyAgICAgIC8vIFNraXAgcGFkZGluZyBwYWNrZXRzIGJlY2F1c2UgdGhleSB3aWxsIG5l
dmVyIGJlIHJldHJhbnNtaXR0ZWQuCisgICAgICBpZiAoaGVhZGVyLnBhZGRpbmdMZW5ndGggKyBo
ZWFkZXIuaGVhZGVyTGVuZ3RoID09IGxlbmd0aCkgeworICAgICAgICByZXR1cm4gU0VORF9QQUNL
RVQ7CisgICAgICB9CisKICAgICAgICsrc2VuZF9jb3VudF87CisKKyAgICAgIC8vIE5BQ0sgcGFj
a2V0cyBhdCBhcmJpdHJhcnkgcG9pbnRzLgogICAgICAgaWYgKHNlbmRfY291bnRfID09IDUgfHwg
c2VuZF9jb3VudF8gPT0gMjUpIHsKLSAgICAgICAgbmFja2VkX3NlcXVlbmNlX251bWJlcnNfLnB1
c2hfYmFjaygKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQxNl90PihoZWFkZXIuc2VxdWVu
Y2VOdW1iZXIgLSAzKSk7Ci0gICAgICAgIG5hY2tlZF9zZXF1ZW5jZV9udW1iZXJzXy5wdXNoX2Jh
Y2soCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4oaGVhZGVyLnNlcXVlbmNlTnVt
YmVyIC0gMikpOwotICAgICAgICBuYWNrZWRfc2VxdWVuY2VfbnVtYmVyc18ucHVzaF9iYWNrKAot
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGhlYWRlci5zZXF1ZW5jZU51bWJlciAt
IDEpKTsKKyAgICAgICAgbmFja2VkX3NlcXVlbmNlX251bWJlcnNfLmluc2VydCgKKyAgICAgICAg
ICAgIG5hY2tlZF9zZXF1ZW5jZV9udW1iZXJzXy5lbmQoKSwKKyAgICAgICAgICAgIG5vbl9wYWRk
aW5nX3NlcXVlbmNlX251bWJlcnNfLmVuZCgpIC0ga05hY2tlZFBhY2tldHNBdE9uY2VDb3VudCwK
KyAgICAgICAgICAgIG5vbl9wYWRkaW5nX3NlcXVlbmNlX251bWJlcnNfLmVuZCgpKTsKIAogICAg
ICAgICBSVENQU2VuZGVyIHJ0Y3Bfc2VuZGVyKGZhbHNlLCBDbG9jazo6R2V0UmVhbFRpbWVDbG9j
aygpLCBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51
bGxwdHIsIHRyYW5zcG9ydF9hZGFwdGVyXy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSdGNwSW50ZXJ2YWxDb25maWd7fSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga1J0Y3BJbnRlcnZhbE1zKTsKIAogICAgICAgICBydGNwX3NlbmRlci5TZXRSVENQU3Rh
dHVzKFJ0Y3BNb2RlOjprUmVkdWNlZFNpemUpOwogICAgICAgICBydGNwX3NlbmRlci5TZXRSZW1v
dGVTU1JDKGtWaWRlb1NlbmRTc3Jjc1swXSk7CkBAIC04OTIsNyArOTAzLDYgQEAgdm9pZCBWaWRl
b1NlbmRTdHJlYW1UZXN0OjpUZXN0TmFja1JldHJhbnNtaXNzaW9uKAogICAgICAgfQogCiAgICAg
ICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIgPSBoZWFkZXIuc2VxdWVuY2VOdW1iZXI7Ci0KICAg
ICAgIGlmIChoZWFkZXIuc3NyYyA9PSByZXRyYW5zbWl0X3NzcmNfICYmCiAgICAgICAgICAgcmV0
cmFuc21pdF9zc3JjXyAhPSBrVmlkZW9TZW5kU3NyY3NbMF0pIHsKICAgICAgICAgLy8gTm90IGtW
aWRlb1NlbmRTc3Jjc1swXSwgYXNzdW1lIGNvcnJlY3QgUlRYIHBhY2tldC4gRXh0cmFjdCBzZXF1
ZW5jZQpAQCAtOTAwLDYgKzkxMCw3IEBAIHZvaWQgVmlkZW9TZW5kU3RyZWFtVGVzdDo6VGVzdE5h
Y2tSZXRyYW5zbWlzc2lvbigKICAgICAgICAgY29uc3QgdWludDhfdCogcnR4X2hlYWRlciA9IHBh
Y2tldCArIGhlYWRlci5oZWFkZXJMZW5ndGg7CiAgICAgICAgIHNlcXVlbmNlX251bWJlciA9IChy
dHhfaGVhZGVyWzBdIDw8IDgpICsgcnR4X2hlYWRlclsxXTsKICAgICAgIH0KKwogICAgICAgYXV0
byBmb3VuZCA9IHN0ZDo6ZmluZChuYWNrZWRfc2VxdWVuY2VfbnVtYmVyc18uYmVnaW4oKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFja2VkX3NlcXVlbmNlX251bWJlcnNfLmVuZCgp
LCBzZXF1ZW5jZV9udW1iZXIpOwogICAgICAgaWYgKGZvdW5kICE9IG5hY2tlZF9zZXF1ZW5jZV9u
dW1iZXJzXy5lbmQoKSkgewpAQCAtOTEwLDYgKzkyMSw4IEBAIHZvaWQgVmlkZW9TZW5kU3RyZWFt
VGVzdDo6VGVzdE5hY2tSZXRyYW5zbWlzc2lvbigKICAgICAgICAgICBFWFBFQ1RfRVEocmV0cmFu
c21pdF9wYXlsb2FkX3R5cGVfLCBoZWFkZXIucGF5bG9hZFR5cGUpOwogICAgICAgICAgIG9ic2Vy
dmF0aW9uX2NvbXBsZXRlXy5TZXQoKTsKICAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgbm9uX3BhZGRpbmdfc2VxdWVuY2VfbnVtYmVyc18ucHVzaF9iYWNrKHNlcXVlbmNlX251bWJl
cik7CiAgICAgICB9CiAKICAgICAgIHJldHVybiBTRU5EX1BBQ0tFVDsKQEAgLTkzOCw2ICs5NTEs
NyBAQCB2b2lkIFZpZGVvU2VuZFN0cmVhbVRlc3Q6OlRlc3ROYWNrUmV0cmFuc21pc3Npb24oCiAg
ICAgdWludDMyX3QgcmV0cmFuc21pdF9zc3JjXzsKICAgICB1aW50OF90IHJldHJhbnNtaXRfcGF5
bG9hZF90eXBlXzsKICAgICBzdGQ6OnZlY3Rvcjx1aW50MTZfdD4gbmFja2VkX3NlcXVlbmNlX251
bWJlcnNfOworICAgIHN0ZDo6dmVjdG9yPHVpbnQxNl90PiBub25fcGFkZGluZ19zZXF1ZW5jZV9u
dW1iZXJzXzsKICAgfSB0ZXN0KHJldHJhbnNtaXRfc3NyYywgcmV0cmFuc21pdF9wYXlsb2FkX3R5
cGUpOwogCiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKQEAgLTk2NCw4ICs5NzgsNyBAQCB2b2lkIFZp
ZGVvU2VuZFN0cmVhbVRlc3Q6OlRlc3RQYWNrZXRGcmFnbWVudGF0aW9uU2l6ZShWaWRlb0Zvcm1h
dCBmb3JtYXQsCiAKICAgLy8gT2JzZXJ2ZXIgdGhhdCB2ZXJpZmllcyB0aGF0IHRoZSBleHBlY3Rl
ZCBudW1iZXIgb2YgcGFja2V0cyBhbmQgYnl0ZXMKICAgLy8gYXJyaXZlIGZvciBlYWNoIGZyYW1l
IHNpemUsIGZyb20gc3RhcnRfc2l6ZSB0byBzdG9wX3NpemUuCi0gIGNsYXNzIEZyYW1lRnJhZ21l
bnRhdGlvblRlc3QgOiBwdWJsaWMgdGVzdDo6U2VuZFRlc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgRW5jb2RlZEZyYW1lT2JzZXJ2ZXIgeworICBjbGFzcyBGcmFt
ZUZyYWdtZW50YXRpb25UZXN0IDogcHVibGljIHRlc3Q6OlNlbmRUZXN0IHsKICAgIHB1YmxpYzoK
ICAgICBGcmFtZUZyYWdtZW50YXRpb25UZXN0KHNpemVfdCBtYXhfcGFja2V0X3NpemUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3RhcnRfc2l6ZSwKQEAgLTEwOTAsNyArMTEw
Myw3IEBAIHZvaWQgVmlkZW9TZW5kU3RyZWFtVGVzdDo6VGVzdFBhY2tldEZyYWdtZW50YXRpb25T
aXplKFZpZGVvRm9ybWF0IGZvcm1hdCwKICAgICAgICAgICAgIGxvc3NfcmF0aW8pOyAgICAvLyBM
b3NzIHBlcmNlbnQuCiAgICAgICAgIFJUQ1BTZW5kZXIgcnRjcF9zZW5kZXIoZmFsc2UsIENsb2Nr
OjpHZXRSZWFsVGltZUNsb2NrKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxv
c3N5X3JlY2VpdmVfc3RhdHMsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhbnNwb3J0X2FkYXB0ZXJfLmdldCgpLCBSdGNwSW50ZXJ2YWxDb25maWd7
fSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X2FkYXB0ZXJfLmdl
dCgpLCBrUnRjcEludGVydmFsTXMpOwogCiAgICAgICAgIHJ0Y3Bfc2VuZGVyLlNldFJUQ1BTdGF0
dXMoUnRjcE1vZGU6OmtSZWR1Y2VkU2l6ZSk7CiAgICAgICAgIHJ0Y3Bfc2VuZGVyLlNldFJlbW90
ZVNTUkMoa1ZpZGVvU2VuZFNzcmNzWzBdKTsKQEAgLTExMDEsNyArMTExNCw3IEBAIHZvaWQgVmlk
ZW9TZW5kU3RyZWFtVGVzdDo6VGVzdFBhY2tldEZyYWdtZW50YXRpb25TaXplKFZpZGVvRm9ybWF0
IGZvcm1hdCwKICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIEVuY29kZWRGcmFtZUNhbGxiYWNr
KGNvbnN0IEVuY29kZWRGcmFtZSYgZW5jb2RlZF9mcmFtZSkgb3ZlcnJpZGUgeworICAgIHZvaWQg
VXBkYXRlQ29uZmlndXJhdGlvbigpIHsKICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJm11dGV4
Xyk7CiAgICAgICAvLyBJbmNyZWFzZSBmcmFtZSBzaXplIGZvciBuZXh0IGVuY29kZWQgZnJhbWUs
IGluIHRoZSBjb250ZXh0IG9mIHRoZQogICAgICAgLy8gZW5jb2RlciB0aHJlYWQuCkBAIC0xMTEw
LDkgKzExMjMsMTAgQEAgdm9pZCBWaWRlb1NlbmRTdHJlYW1UZXN0OjpUZXN0UGFja2V0RnJhZ21l
bnRhdGlvblNpemUoVmlkZW9Gb3JtYXQgZm9ybWF0LAogICAgICAgfQogICAgICAgZW5jb2Rlcl8u
U2V0RnJhbWVTaXplKHN0YXRpY19jYXN0PHNpemVfdD4oY3VycmVudF9zaXplX2ZyYW1lXykpOwog
ICAgIH0KLSAgICB2b2lkIE1vZGlmeVNlbmRlckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25m
aWcpIG92ZXJyaWRlIHsKKyAgICB2b2lkIE1vZGlmeVNlbmRlckJpdHJhdGVDb25maWcoCisgICAg
ICAgIEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIG92ZXJyaWRlIHsKICAgICAg
IGNvbnN0IGludCBrTWluQml0cmF0ZUJwcyA9IDMwMDAwOwotICAgICAgY29uZmlnLT5iaXRyYXRl
X2NvbmZpZy5taW5fYml0cmF0ZV9icHMgPSBrTWluQml0cmF0ZUJwczsKKyAgICAgIGJpdHJhdGVf
Y29uZmlnLT5taW5fYml0cmF0ZV9icHMgPSBrTWluQml0cmF0ZUJwczsKICAgICB9CiAKICAgICB2
b2lkIE1vZGlmeVZpZGVvQ29uZmlncygKQEAgLTExMzIsMzggKzExNDYsMTUgQEAgdm9pZCBWaWRl
b1NlbmRTdHJlYW1UZXN0OjpUZXN0UGFja2V0RnJhZ21lbnRhdGlvblNpemUoVmlkZW9Gb3JtYXQg
Zm9ybWF0LAogCiAgICAgICBzZW5kX2NvbmZpZy0+ZW5jb2Rlcl9zZXR0aW5ncy5lbmNvZGVyX2Zh
Y3RvcnkgPSAmZW5jb2Rlcl9mYWN0b3J5XzsKICAgICAgIHNlbmRfY29uZmlnLT5ydHAubWF4X3Bh
Y2tldF9zaXplID0ga01heFBhY2tldFNpemU7Ci0gICAgICBzZW5kX2NvbmZpZy0+cG9zdF9lbmNv
ZGVfY2FsbGJhY2sgPSB0aGlzOworICAgICAgZW5jb2Rlcl8uUmVnaXN0ZXJQb3N0RW5jb2RlQ2Fs
bGJhY2soW3RoaXNdKCkgeyBVcGRhdGVDb25maWd1cmF0aW9uKCk7IH0pOwogCiAgICAgICAvLyBN
YWtlIHN1cmUgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGV4dGVuc2lvbiBoZWFkZXIsIHRvIG1ha2Ug
dGhlIFJUUAogICAgICAgLy8gaGVhZGVyIGxhcmdlciB0aGFuIHRoZSBiYXNlIGxlbmd0aCBvZiAx
MiBieXRlcy4KICAgICAgIEVYUEVDVF9GQUxTRShzZW5kX2NvbmZpZy0+cnRwLmV4dGVuc2lvbnMu
ZW1wdHkoKSk7CiAKICAgICAgIC8vIFNldHVwIHNjcmVlbiBjb250ZW50IGRpc2FibGVzIGZyYW1l
IGRyb3BwaW5nIHdoaWNoIG1ha2VzIHRoaXMgZWFzaWVyLgotICAgICAgY2xhc3MgVmlkZW9TdHJl
YW1GYWN0b3J5Ci0gICAgICAgICAgOiBwdWJsaWMgVmlkZW9FbmNvZGVyQ29uZmlnOjpWaWRlb1N0
cmVhbUZhY3RvcnlJbnRlcmZhY2UgewotICAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQg
VmlkZW9TdHJlYW1GYWN0b3J5KHNpemVfdCBudW1fdGVtcG9yYWxfbGF5ZXJzKQotICAgICAgICAg
ICAgOiBudW1fdGVtcG9yYWxfbGF5ZXJzXyhudW1fdGVtcG9yYWxfbGF5ZXJzKSB7Ci0gICAgICAg
ICAgRVhQRUNUX0dUKG51bV90ZW1wb3JhbF9sYXllcnMsIDB1KTsKLSAgICAgICAgfQotCi0gICAg
ICAgcHJpdmF0ZToKLSAgICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+IENyZWF0ZUVuY29k
ZXJTdHJlYW1zKAotICAgICAgICAgICAgaW50IHdpZHRoLAotICAgICAgICAgICAgaW50IGhlaWdo
dCwKLSAgICAgICAgICAgIGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZyYgZW5jb2Rlcl9jb25maWcp
IG92ZXJyaWRlIHsKLSAgICAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9
Ci0gICAgICAgICAgICAgIHRlc3Q6OkNyZWF0ZVZpZGVvU3RyZWFtcyh3aWR0aCwgaGVpZ2h0LCBl
bmNvZGVyX2NvbmZpZyk7Ci0gICAgICAgICAgZm9yIChWaWRlb1N0cmVhbSYgc3RyZWFtIDogc3Ry
ZWFtcykgewotICAgICAgICAgICAgc3RyZWFtLm51bV90ZW1wb3JhbF9sYXllcnMgPSBudW1fdGVt
cG9yYWxfbGF5ZXJzXzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIHN0cmVhbXM7Ci0g
ICAgICAgIH0KLSAgICAgICAgY29uc3Qgc2l6ZV90IG51bV90ZW1wb3JhbF9sYXllcnNfOwotICAg
ICAgfTsKLQotICAgICAgZW5jb2Rlcl9jb25maWctPnZpZGVvX3N0cmVhbV9mYWN0b3J5ID0KLSAg
ICAgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PFZpZGVvU3RyZWFtRmFjdG9yeT4oMik7
CisgICAgICBFWFBFQ1RfRVEoMXUsIGVuY29kZXJfY29uZmlnLT5zaW11bGNhc3RfbGF5ZXJzLnNp
emUoKSk7CisgICAgICBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0X2xheWVyc1swXS5udW1fdGVt
cG9yYWxfbGF5ZXJzID0gMjsKICAgICAgIGVuY29kZXJfY29uZmlnLT5jb250ZW50X3R5cGUgPSBW
aWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprU2NyZWVuOwogICAgIH0KIApAQCAtMTM0
Nyw3ICsxMzM4LDcgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFN1c3BlbmRCZWxvd01p
bkJpdHJhdGUpIHsKICAgICAgIEZha2VSZWNlaXZlU3RhdGlzdGljcyByZWNlaXZlX3N0YXRzKGtW
aWRlb1NlbmRTc3Jjc1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxhc3Rfc2VxdWVuY2VfbnVtYmVyXywgcnRwX2NvdW50XywgMCk7CiAgICAgICBSVENQU2Vu
ZGVyIHJ0Y3Bfc2VuZGVyKGZhbHNlLCBjbG9ja18sICZyZWNlaXZlX3N0YXRzLCBudWxscHRyLCBu
dWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfYWRhcHRlcl8u
Z2V0KCksIFJ0Y3BJbnRlcnZhbENvbmZpZ3t9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNwb3J0X2FkYXB0ZXJfLmdldCgpLCBrUnRjcEludGVydmFsTXMpOwogCiAgICAgICBy
dGNwX3NlbmRlci5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprUmVkdWNlZFNpemUpOwogICAgICAg
cnRjcF9zZW5kZXIuU2V0UmVtb3RlU1NSQyhrVmlkZW9TZW5kU3NyY3NbMF0pOwpAQCAtMTM5Niwx
MiArMTM4NywyMCBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgTm9QYWRkaW5nV2hlblZp
ZGVvSXNNdXRlZCkgewogICAgICAgICAgIGhlYWRlci5oZWFkZXJMZW5ndGggKyBoZWFkZXIucGFk
ZGluZ0xlbmd0aCA9PSBsZW5ndGg7CiAKICAgICAgIGlmICh0ZXN0X3N0YXRlXyA9PSBrQmVmb3Jl
U3RvcENhcHR1cmUpIHsKKyAgICAgICAgLy8gUGFja2V0cyBhcmUgZmxvd2luZywgc3RvcCBjYW1l
cmEuCiAgICAgICAgIGNhcHR1cmVyXy0+U3RvcCgpOwogICAgICAgICB0ZXN0X3N0YXRlXyA9IGtX
YWl0aW5nRm9yUGFkZGluZzsKICAgICAgIH0gZWxzZSBpZiAodGVzdF9zdGF0ZV8gPT0ga1dhaXRp
bmdGb3JQYWRkaW5nICYmIG9ubHlfcGFkZGluZykgeworICAgICAgICAvLyBXZSdyZSBzdGlsbCBn
ZXR0aW5nIHBhZGRpbmcsIGFmdGVyIHN0b3BwaW5nIGNhbWVyYS4KICAgICAgICAgdGVzdF9zdGF0
ZV8gPSBrV2FpdGluZ0Zvck5vUGFja2V0czsKLSAgICAgIH0gZWxzZSBpZiAodGVzdF9zdGF0ZV8g
PT0ga1dhaXRpbmdGb3JQYWRkaW5nQWZ0ZXJDYW1lcmFSZXN0YXJ0ICYmCisgICAgICB9IGVsc2Ug
aWYgKHRlc3Rfc3RhdGVfID09IGtXYWl0aW5nRm9yTWVkaWFBZnRlckNhbWVyYVJlc3RhcnQgJiYK
KyAgICAgICAgICAgICAgICAgIW9ubHlfcGFkZGluZykgeworICAgICAgICAvLyBNZWRpYSBwYWNr
ZXRzIGFyZSBmbG93aW5nIGFnYWluLCBzdG9wIGNhbWVyYSBhIHNlY29uZCB0aW1lLgorICAgICAg
ICBjYXB0dXJlcl8tPlN0b3AoKTsKKyAgICAgICAgdGVzdF9zdGF0ZV8gPSBrV2FpdGluZ0ZvclBh
ZGRpbmdBZnRlckNhbWVyYVN0b3BzQWdhaW47CisgICAgICB9IGVsc2UgaWYgKHRlc3Rfc3RhdGVf
ID09IGtXYWl0aW5nRm9yUGFkZGluZ0FmdGVyQ2FtZXJhU3RvcHNBZ2FpbiAmJgogICAgICAgICAg
ICAgICAgICBvbmx5X3BhZGRpbmcpIHsKKyAgICAgICAgLy8gUGFkZGluZyBpcyBzdGlsbCBmbG93
aW5nLCB0ZXN0IG9rLgogICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7CiAgICAg
ICB9CiAgICAgICByZXR1cm4gU0VORF9QQUNLRVQ7CkBAIC0xNDE0LDEzICsxNDEzLDIwIEBAIFRF
U1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBOb1BhZGRpbmdXaGVuVmlkZW9Jc011dGVkKSB7CiAg
ICAgICAgICAgKGxhc3RfcGFja2V0X3RpbWVfbXNfID4gMCAmJgogICAgICAgICAgICBjbG9ja18t
PlRpbWVJbk1pbGxpc2Vjb25kcygpIC0gbGFzdF9wYWNrZXRfdGltZV9tc18gPgogICAgICAgICAg
ICAgICAga05vUGFja2V0c1RocmVzaG9sZE1zKSkgeworICAgICAgICAvLyBObyBwYWNrZXRzIHNl
ZW4gZm9yIHxrTm9QYWNrZXRzVGhyZXNob2xkTXN8LCByZXN0YXJ0IGNhbWVyYS4KICAgICAgICAg
Y2FwdHVyZXJfLT5TdGFydCgpOwotICAgICAgICB0ZXN0X3N0YXRlXyA9IGtXYWl0aW5nRm9yUGFk
ZGluZ0FmdGVyQ2FtZXJhUmVzdGFydDsKKyAgICAgICAgdGVzdF9zdGF0ZV8gPSBrV2FpdGluZ0Zv
ck1lZGlhQWZ0ZXJDYW1lcmFSZXN0YXJ0OwogICAgICAgfQogICAgICAgcmV0dXJuIFNFTkRfUEFD
S0VUOwogICAgIH0KIAotICAgIHNpemVfdCBHZXROdW1WaWRlb1N0cmVhbXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAzOyB9CisgICAgdm9pZCBNb2RpZnlWaWRlb0NvbmZpZ3MoCisgICAgICAg
IFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnKiBzZW5kX2NvbmZpZywKKyAgICAgICAgc3RkOjp2ZWN0
b3I8VmlkZW9SZWNlaXZlU3RyZWFtOjpDb25maWc+KiByZWNlaXZlX2NvbmZpZ3MsCisgICAgICAg
IFZpZGVvRW5jb2RlckNvbmZpZyogZW5jb2Rlcl9jb25maWcpIG92ZXJyaWRlIHsKKyAgICAgIC8v
IE1ha2Ugc3VyZSBwYWRkaW5nIGlzIHNlbnQgaWYgZW5jb2RlciBpcyBub3QgcHJvZHVjaW5nIG1l
ZGlhLgorICAgICAgZW5jb2Rlcl9jb25maWctPm1pbl90cmFuc21pdF9iaXRyYXRlX2JwcyA9IDUw
MDAwOworICAgIH0KIAogICAgIHZvaWQgT25GcmFtZUdlbmVyYXRvckNhcHR1cmVyQ3JlYXRlZCgK
ICAgICAgICAgdGVzdDo6RnJhbWVHZW5lcmF0b3JDYXB0dXJlciogZnJhbWVfZ2VuZXJhdG9yX2Nh
cHR1cmVyKSBvdmVycmlkZSB7CkBAIC0xNDM3LDcgKzE0NDMsOCBAQCBURVNUX1AoVmlkZW9TZW5k
U3RyZWFtVGVzdCwgTm9QYWRkaW5nV2hlblZpZGVvSXNNdXRlZCkgewogICAgICAga0JlZm9yZVN0
b3BDYXB0dXJlLAogICAgICAga1dhaXRpbmdGb3JQYWRkaW5nLAogICAgICAga1dhaXRpbmdGb3JO
b1BhY2tldHMsCi0gICAgICBrV2FpdGluZ0ZvclBhZGRpbmdBZnRlckNhbWVyYVJlc3RhcnQKKyAg
ICAgIGtXYWl0aW5nRm9yTWVkaWFBZnRlckNhbWVyYVJlc3RhcnQsCisgICAgICBrV2FpdGluZ0Zv
clBhZGRpbmdBZnRlckNhbWVyYVN0b3BzQWdhaW4KICAgICB9OwogCiAgICAgVGVzdFN0YXRlIHRl
c3Rfc3RhdGVfID0ga0JlZm9yZVN0b3BDYXB0dXJlOwpAQCAtMTQ4MSw3ICsxNDg4LDcgQEAgVEVT
VF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFBhZGRpbmdJc1ByaW1hcmlseVJldHJhbnNtaXNzaW9u
cykgewogICAgICAgICB0ZXN0OjpTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmcqIHRh
c2tfcXVldWUsCiAgICAgICAgIENhbGwqIHNlbmRlcl9jYWxsKSBvdmVycmlkZSB7CiAgICAgICBj
b25zdCBpbnQga05ldHdvcmtEZWxheU1zID0gNTA7Ci0gICAgICBEZWZhdWx0TmV0d29ya1NpbXVs
YXRpb25Db25maWcgY29uZmlnOworICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBj
b25maWc7CiAgICAgICBjb25maWcubG9zc19wZXJjZW50ID0gMTA7CiAgICAgICBjb25maWcubGlu
a19jYXBhY2l0eV9rYnBzID0ga0NhcGFjaXR5S2JwczsKICAgICAgIGNvbmZpZy5xdWV1ZV9kZWxh
eV9tcyA9IGtOZXR3b3JrRGVsYXlNczsKQEAgLTE3ODAsNyArMTc4Nyw2IEBAIGNsYXNzIE1heFBh
ZGRpbmdTZXRUZXN0IDogcHVibGljIHRlc3Q6OlNlbmRUZXN0IHsKIAogICBleHBsaWNpdCBNYXhQ
YWRkaW5nU2V0VGVzdChib29sIHRlc3Rfc3dpdGNoX2NvbnRlbnRfdHlwZSwgVCogc3RyZWFtX3Jl
c2V0X2Z1bikKICAgICAgIDogU2VuZFRlc3QodGVzdDo6Q2FsbFRlc3Q6OmtEZWZhdWx0VGltZW91
dE1zKSwKLSAgICAgICAgY29udGVudF9zd2l0Y2hfZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAgICAg
ICAgIGNhbGxfKG51bGxwdHIpLAogICAgICAgICBzZW5kX3N0cmVhbV8obnVsbHB0ciksCiAgICAg
ICAgIHNlbmRfc3RyZWFtX2NvbmZpZ18obnVsbHB0ciksCkBAIC0xOTEwLDcgKzE5MTYsNiBAQCBU
RVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwKICAgIHB1YmxpYzoKICAgICBFbmNvZGVyT2JzZXJ2
ZXIoKQogICAgICAgICA6IEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAot
ICAgICAgICAgIGluaXRfZW5jb2RlX2NhbGxlZF8oZmFsc2UsIGZhbHNlKSwKICAgICAgICAgICBu
dW1iZXJfb2ZfaW5pdGlhbGl6YXRpb25zXygwKSwKICAgICAgICAgICBsYXN0X2luaXRpYWxpemVk
X2ZyYW1lX3dpZHRoXygwKSwKICAgICAgICAgICBsYXN0X2luaXRpYWxpemVkX2ZyYW1lX2hlaWdo
dF8oMCkge30KQEAgLTE5OTMsNyArMTk5OCw2IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0
LCBDYW5SZWNvbmZpZ3VyZVRvVXNlU3RhcnRCaXRyYXRlQWJvdmVQcmV2aW91c01heCkgewogICAg
cHVibGljOgogICAgIFN0YXJ0Qml0cmF0ZU9ic2VydmVyKCkKICAgICAgICAgOiBGYWtlRW5jb2Rl
cihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpKSwKLSAgICAgICAgICBzdGFydF9iaXRyYXRlX2No
YW5nZWRfKGZhbHNlLCBmYWxzZSksCiAgICAgICAgICAgc3RhcnRfYml0cmF0ZV9rYnBzXygwKSB7
fQogICAgIGludDMyX3QgSW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBjb25maWcsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3QgbnVtYmVyX29mX2NvcmVzLApAQCAtMjA2OCwxMCAr
MjA3Miw3IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBDYW5SZWNvbmZpZ3VyZVRvVXNl
U3RhcnRCaXRyYXRlQWJvdmVQcmV2aW91c01heCkgewogCiBjbGFzcyBTdGFydFN0b3BCaXRyYXRl
T2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6RmFrZUVuY29kZXIgewogIHB1YmxpYzoKLSAgU3RhcnRT
dG9wQml0cmF0ZU9ic2VydmVyKCkKLSAgICAgIDogRmFrZUVuY29kZXIoQ2xvY2s6OkdldFJlYWxU
aW1lQ2xvY2soKSksCi0gICAgICAgIGVuY29kZXJfaW5pdF8oZmFsc2UsIGZhbHNlKSwKLSAgICAg
ICAgYml0cmF0ZV9jaGFuZ2VkXyhmYWxzZSwgZmFsc2UpIHt9CisgIFN0YXJ0U3RvcEJpdHJhdGVP
YnNlcnZlcigpIDogRmFrZUVuY29kZXIoQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSkge30KICAg
aW50MzJfdCBJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNvbmZpZywKICAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgbnVtYmVyX29mX2NvcmVzLAogICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG1heF9wYXlsb2FkX3NpemUpIG92ZXJyaWRlIHsKQEAgLTIyMjgsOCArMjIyOSw2IEBA
IFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBWaWRlb1NlbmRTdHJlYW1VcGRhdGVBY3RpdmVT
aW11bGNhc3RMYXllcnMpIHsKIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBDYXB0dXJlc1Rl
eHR1cmVBbmRWaWRlb0ZyYW1lcykgewogICBjbGFzcyBGcmFtZU9ic2VydmVyIDogcHVibGljIHJ0
Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPFZpZGVvRnJhbWU+IHsKICAgIHB1YmxpYzoKLSAgICBGcmFt
ZU9ic2VydmVyKCkgOiBvdXRwdXRfZnJhbWVfZXZlbnRfKGZhbHNlLCBmYWxzZSkge30KLQogICAg
IHZvaWQgT25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb19mcmFtZSkgb3ZlcnJpZGUgewog
ICAgICAgb3V0cHV0X2ZyYW1lc18ucHVzaF9iYWNrKHZpZGVvX2ZyYW1lKTsKICAgICAgIG91dHB1
dF9mcmFtZV9ldmVudF8uU2V0KCk7CkBAIC0yMzkyLDExICsyMzkxLDYgQEAgVEVTVF9QKFZpZGVv
U2VuZFN0cmVhbVRlc3QsIEVuY29kZXJJc1Byb3Blcmx5SW5pdGlhbGl6ZWRBbmREZXN0cm95ZWQp
IHsKICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGludDMyX3QgU2V0Q2hhbm5lbFBhcmFt
ZXRlcnModWludDMyX3QgcGFja2V0TG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlIHsKLSAgICAg
IEVYUEVDVF9UUlVFKElzUmVhZHlGb3JFbmNvZGUoKSk7Ci0gICAgICByZXR1cm4gMDsKLSAgICB9
Ci0KICAgICBpbnQzMl90IFNldFJhdGVzKHVpbnQzMl90IG5ld0JpdFJhdGUsIHVpbnQzMl90IGZy
YW1lUmF0ZSkgb3ZlcnJpZGUgewogICAgICAgRVhQRUNUX1RSVUUoSXNSZWFkeUZvckVuY29kZSgp
KTsKICAgICAgIHJldHVybiAwOwpAQCAtMjQ1OCw3ICsyNDUyLDYgQEAgVEVTVF9QKFZpZGVvU2Vu
ZFN0cmVhbVRlc3QsIEVuY29kZXJTZXR1cFByb3BhZ2F0ZXNDb21tb25FbmNvZGVyQ29uZmlnVmFs
dWVzKSB7CiAgICAgVmlkZW9Db2RlY0NvbmZpZ09ic2VydmVyKCkKICAgICAgICAgOiBTZW5kVGVz
dChrRGVmYXVsdFRpbWVvdXRNcyksCiAgICAgICAgICAgRmFrZUVuY29kZXIoQ2xvY2s6OkdldFJl
YWxUaW1lQ2xvY2soKSksCi0gICAgICAgICAgaW5pdF9lbmNvZGVfZXZlbnRfKGZhbHNlLCBmYWxz
ZSksCiAgICAgICAgICAgbnVtX2luaXRpYWxpemF0aW9uc18oMCksCiAgICAgICAgICAgc3RyZWFt
XyhudWxscHRyKSwKICAgICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfKHRoaXMpIHt9CkBAIC0yNTMw
LDcgKzI1MjMsNiBAQCBjbGFzcyBWaWRlb0NvZGVjQ29uZmlnT2JzZXJ2ZXIgOiBwdWJsaWMgdGVz
dDo6U2VuZFRlc3QsCiAgICAgICAgIEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNsb2Nr
KCkpLAogICAgICAgICB2aWRlb19jb2RlY190eXBlXyh2aWRlb19jb2RlY190eXBlKSwKICAgICAg
ICAgY29kZWNfbmFtZV8oY29kZWNfbmFtZSksCi0gICAgICAgIGluaXRfZW5jb2RlX2V2ZW50Xyhm
YWxzZSwgZmFsc2UpLAogICAgICAgICBudW1faW5pdGlhbGl6YXRpb25zXygwKSwKICAgICAgICAg
c3RyZWFtXyhudWxscHRyKSwKICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyh0aGlzKSB7CkBAIC0y
NTM4LDI2ICsyNTMwLDYgQEAgY2xhc3MgVmlkZW9Db2RlY0NvbmZpZ09ic2VydmVyIDogcHVibGlj
IHRlc3Q6OlNlbmRUZXN0LAogICB9CiAKICBwcml2YXRlOgotICBjbGFzcyBWaWRlb1N0cmVhbUZh
Y3RvcnkKLSAgICAgIDogcHVibGljIFZpZGVvRW5jb2RlckNvbmZpZzo6VmlkZW9TdHJlYW1GYWN0
b3J5SW50ZXJmYWNlIHsKLSAgIHB1YmxpYzoKLSAgICBWaWRlb1N0cmVhbUZhY3RvcnkoKSB7fQot
Ci0gICBwcml2YXRlOgotICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBDcmVhdGVFbmNvZGVy
U3RyZWFtcygKLSAgICAgICAgaW50IHdpZHRoLAotICAgICAgICBpbnQgaGVpZ2h0LAotICAgICAg
ICBjb25zdCBWaWRlb0VuY29kZXJDb25maWcmIGVuY29kZXJfY29uZmlnKSBvdmVycmlkZSB7Ci0g
ICAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9Ci0gICAgICAgICAgdGVzdDo6
Q3JlYXRlVmlkZW9TdHJlYW1zKHdpZHRoLCBoZWlnaHQsIGVuY29kZXJfY29uZmlnKTsKLSAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyZWFtcy5zaXplKCk7ICsraSkgewotICAgICAgICBz
dHJlYW1zW2ldLm51bV90ZW1wb3JhbF9sYXllcnMgPQotICAgICAgICAgICAga1ZpZGVvQ29kZWND
b25maWdPYnNlcnZlck51bWJlck9mVGVtcG9yYWxMYXllcnM7Ci0gICAgICB9Ci0gICAgICByZXR1
cm4gc3RyZWFtczsKLSAgICB9Ci0gIH07Ci0KICAgdm9pZCBNb2RpZnlWaWRlb0NvbmZpZ3MoCiAg
ICAgICBWaWRlb1NlbmRTdHJlYW06OkNvbmZpZyogc2VuZF9jb25maWcsCiAgICAgICBzdGQ6OnZl
Y3RvcjxWaWRlb1JlY2VpdmVTdHJlYW06OkNvbmZpZz4qIHJlY2VpdmVfY29uZmlncywKQEAgLTI1
NjcsOCArMjUzOSw5IEBAIGNsYXNzIFZpZGVvQ29kZWNDb25maWdPYnNlcnZlciA6IHB1YmxpYyB0
ZXN0OjpTZW5kVGVzdCwKIAogICAgIGVuY29kZXJfY29uZmlnLT5jb2RlY190eXBlID0gdmlkZW9f
Y29kZWNfdHlwZV87CiAgICAgZW5jb2Rlcl9jb25maWctPmVuY29kZXJfc3BlY2lmaWNfc2V0dGlu
Z3MgPSBHZXRFbmNvZGVyU3BlY2lmaWNTZXR0aW5ncygpOwotICAgIGVuY29kZXJfY29uZmlnLT52
aWRlb19zdHJlYW1fZmFjdG9yeSA9Ci0gICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8
VmlkZW9TdHJlYW1GYWN0b3J5PigpOworICAgIEVYUEVDVF9FUSgxdSwgZW5jb2Rlcl9jb25maWct
PnNpbXVsY2FzdF9sYXllcnMuc2l6ZSgpKTsKKyAgICBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0
X2xheWVyc1swXS5udW1fdGVtcG9yYWxfbGF5ZXJzID0KKyAgICAgICAga1ZpZGVvQ29kZWNDb25m
aWdPYnNlcnZlck51bWJlck9mVGVtcG9yYWxMYXllcnM7CiAgICAgZW5jb2Rlcl9jb25maWdfID0g
ZW5jb2Rlcl9jb25maWctPkNvcHkoKTsKICAgfQogCkBAIC0yNzk0LDggKzI3NjcsNiBAQCBURVNU
X1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgVHJhbnNsYXRlc1R3b0xheWVyU2NyZWVuY2FzdFRvVGFy
Z2V0Qml0cmF0ZSkgewogICAgICAgICBjb25zdCBWaWRlb0VuY29kZXJDb25maWcmIGVuY29kZXJf
Y29uZmlnKSBvdmVycmlkZSB7CiAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFt
cyA9CiAgICAgICAgICAgdGVzdDo6Q3JlYXRlVmlkZW9TdHJlYW1zKHdpZHRoLCBoZWlnaHQsIGVu
Y29kZXJfY29uZmlnKTsKLSAgICAgIEVYUEVDVF9GQUxTRShzdHJlYW1zWzBdLm51bV90ZW1wb3Jh
bF9sYXllcnMuaGFzX3ZhbHVlKCkpOwotICAgICAgc3RyZWFtc1swXS5udW1fdGVtcG9yYWxfbGF5
ZXJzID0gMjsKICAgICAgIFJUQ19DSEVDS19HVChzdHJlYW1zWzBdLm1heF9iaXRyYXRlX2JwcywK
ICAgICAgICAgICAgICAgICAgICBrU2NyZWVuY2FzdE1heFRhcmdldEJpdHJhdGVEZWx0YUticHMp
OwogICAgICAgc3RyZWFtc1swXS50YXJnZXRfYml0cmF0ZV9icHMgPQpAQCAtMjgzMyw2ICsyODA0
LDggQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFRyYW5zbGF0ZXNUd29MYXllclNjcmVl
bmNhc3RUb1RhcmdldEJpdHJhdGUpIHsKICAgICAgIEVYUEVDVF9FUSgxdSwgZW5jb2Rlcl9jb25m
aWctPm51bWJlcl9vZl9zdHJlYW1zKTsKICAgICAgIGVuY29kZXJfY29uZmlnLT52aWRlb19zdHJl
YW1fZmFjdG9yeSA9CiAgICAgICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxWaWRlb1N0
cmVhbUZhY3Rvcnk+KCk7CisgICAgICBFWFBFQ1RfRVEoMXUsIGVuY29kZXJfY29uZmlnLT5zaW11
bGNhc3RfbGF5ZXJzLnNpemUoKSk7CisgICAgICBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0X2xh
eWVyc1swXS5udW1fdGVtcG9yYWxfbGF5ZXJzID0gMjsKICAgICAgIGVuY29kZXJfY29uZmlnLT5j
b250ZW50X3R5cGUgPSBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprU2NyZWVuOwog
ICAgIH0KIApAQCAtMjg2Myw4ICsyODM2LDYgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3Qs
IFJlY29uZmlndXJlQml0cmF0ZXNTZXRzRW5jb2RlckJpdHJhdGVzQ29ycmVjdGx5KSB7CiAgICAg
ICAgIDogU2VuZFRlc3Qoa0RlZmF1bHRUaW1lb3V0TXMpLAogICAgICAgICAgIEZha2VFbmNvZGVy
KENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgICAgIHRhc2tfcXVldWVfKHRhc2tf
cXVldWUpLAotICAgICAgICAgIGluaXRfZW5jb2RlX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAotICAg
ICAgICAgIGJpdHJhdGVfY2hhbmdlZF9ldmVudF8oZmFsc2UsIGZhbHNlKSwKICAgICAgICAgICB0
YXJnZXRfYml0cmF0ZV8oMCksCiAgICAgICAgICAgbnVtX2luaXRpYWxpemF0aW9uc18oMCksCiAg
ICAgICAgICAgY2FsbF8obnVsbHB0ciksCkBAIC0yOTI3LDEwICsyODk4LDExIEBAIFRFU1RfUChW
aWRlb1NlbmRTdHJlYW1UZXN0LCBSZWNvbmZpZ3VyZUJpdHJhdGVzU2V0c0VuY29kZXJCaXRyYXRl
c0NvcnJlY3RseSkgewogICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2JpdHJhdGUsIHRhcmdldF9i
aXRyYXRlXyk7CiAgICAgfQogCi0gICAgdm9pZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6
OkNvbmZpZyogY29uZmlnKSBvdmVycmlkZSB7Ci0gICAgICBjb25maWctPmJpdHJhdGVfY29uZmln
Lm1pbl9iaXRyYXRlX2JwcyA9IGtNaW5CaXRyYXRlS2JwcyAqIDEwMDA7Ci0gICAgICBjb25maWct
PmJpdHJhdGVfY29uZmlnLnN0YXJ0X2JpdHJhdGVfYnBzID0ga1N0YXJ0Qml0cmF0ZUticHMgKiAx
MDAwOwotICAgICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5tYXhfYml0cmF0ZV9icHMgPSBrTWF4
Qml0cmF0ZUticHMgKiAxMDAwOworICAgIHZvaWQgTW9kaWZ5U2VuZGVyQml0cmF0ZUNvbmZpZygK
KyAgICAgICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykgb3ZlcnJpZGUgewor
ICAgICAgYml0cmF0ZV9jb25maWctPm1pbl9iaXRyYXRlX2JwcyA9IGtNaW5CaXRyYXRlS2JwcyAq
IDEwMDA7CisgICAgICBiaXRyYXRlX2NvbmZpZy0+c3RhcnRfYml0cmF0ZV9icHMgPSBrU3RhcnRC
aXRyYXRlS2JwcyAqIDEwMDA7CisgICAgICBiaXRyYXRlX2NvbmZpZy0+bWF4X2JpdHJhdGVfYnBz
ID0ga01heEJpdHJhdGVLYnBzICogMTAwMDsKICAgICB9CiAKICAgICBjbGFzcyBWaWRlb1N0cmVh
bUZhY3RvcnkKQEAgLTMxMTUsNyArMzA4Nyw3IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0
LCBSZXBvcnRzU2VudFJlc29sdXRpb24pIHsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCi0j
aWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkp
CiBjbGFzcyBWcDlIZWFkZXJPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpTZW5kVGVzdCB7CiAgcHVi
bGljOgogICBWcDlIZWFkZXJPYnNlcnZlcigpCkBAIC0zMTM3LDI2ICszMTA5LDYgQEAgY2xhc3Mg
VnA5SGVhZGVyT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6U2VuZFRlc3QgewogIHByaXZhdGU6CiAg
IGNvbnN0IGludCBrVnA5UGF5bG9hZFR5cGUgPSB0ZXN0OjpDYWxsVGVzdDo6a1ZpZGVvU2VuZFBh
eWxvYWRUeXBlOwogCi0gIGNsYXNzIFZpZGVvU3RyZWFtRmFjdG9yeQotICAgICAgOiBwdWJsaWMg
VmlkZW9FbmNvZGVyQ29uZmlnOjpWaWRlb1N0cmVhbUZhY3RvcnlJbnRlcmZhY2UgewotICAgcHVi
bGljOgotICAgIGV4cGxpY2l0IFZpZGVvU3RyZWFtRmFjdG9yeShzaXplX3QgbnVtYmVyX29mX3Rl
bXBvcmFsX2xheWVycykKLSAgICAgICAgOiBudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzXyhudW1i
ZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzKSB7fQotCi0gICBwcml2YXRlOgotICAgIHN0ZDo6dmVjdG9y
PFZpZGVvU3RyZWFtPiBDcmVhdGVFbmNvZGVyU3RyZWFtcygKLSAgICAgICAgaW50IHdpZHRoLAot
ICAgICAgICBpbnQgaGVpZ2h0LAotICAgICAgICBjb25zdCBWaWRlb0VuY29kZXJDb25maWcmIGVu
Y29kZXJfY29uZmlnKSBvdmVycmlkZSB7Ci0gICAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4g
c3RyZWFtcyA9Ci0gICAgICAgICAgdGVzdDo6Q3JlYXRlVmlkZW9TdHJlYW1zKHdpZHRoLCBoZWln
aHQsIGVuY29kZXJfY29uZmlnKTsKLSAgICAgIHN0cmVhbXMuYmFjaygpLm51bV90ZW1wb3JhbF9s
YXllcnMgPSBudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzXzsKLSAgICAgIHJldHVybiBzdHJlYW1z
OwotICAgIH0KLQotICAgIGNvbnN0IHNpemVfdCBudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzXzsK
LSAgfTsKLQogICB2b2lkIE1vZGlmeVZpZGVvQ29uZmlncygKICAgICAgIFZpZGVvU2VuZFN0cmVh
bTo6Q29uZmlnKiBzZW5kX2NvbmZpZywKICAgICAgIHN0ZDo6dmVjdG9yPFZpZGVvUmVjZWl2ZVN0
cmVhbTo6Q29uZmlnPiogcmVjZWl2ZV9jb25maWdzLApAQCAtMzE2OCw5ICszMTIwLDkgQEAgY2xh
c3MgVnA5SGVhZGVyT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6U2VuZFRlc3QgewogICAgIGVuY29k
ZXJfY29uZmlnLT5lbmNvZGVyX3NwZWNpZmljX3NldHRpbmdzID0gbmV3IHJ0Yzo6UmVmQ291bnRl
ZE9iamVjdDwKICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpWcDlFbmNvZGVyU3BlY2lmaWNT
ZXR0aW5ncz4odnA5X3NldHRpbmdzXyk7CiAgICAgRVhQRUNUX0VRKDF1LCBlbmNvZGVyX2NvbmZp
Zy0+bnVtYmVyX29mX3N0cmVhbXMpOwotICAgIGVuY29kZXJfY29uZmlnLT52aWRlb19zdHJlYW1f
ZmFjdG9yeSA9Ci0gICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8VmlkZW9TdHJlYW1G
YWN0b3J5PigKLSAgICAgICAgICAgIHZwOV9zZXR0aW5nc18ubnVtYmVyT2ZUZW1wb3JhbExheWVy
cyk7CisgICAgRVhQRUNUX0VRKDF1LCBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0X2xheWVycy5z
aXplKCkpOworICAgIGVuY29kZXJfY29uZmlnLT5zaW11bGNhc3RfbGF5ZXJzWzBdLm51bV90ZW1w
b3JhbF9sYXllcnMgPQorICAgICAgICB2cDlfc2V0dGluZ3NfLm51bWJlck9mVGVtcG9yYWxMYXll
cnM7CiAgICAgZW5jb2Rlcl9jb25maWdfID0gZW5jb2Rlcl9jb25maWctPkNvcHkoKTsKICAgfQog
CkBAIC0zNjI4LDcgKzM1ODAsNyBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgTUFZQkVf
VnA5RmxleE1vZGVSZWZDb3VudCkgewogCiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KLSNlbmRp
ZiAgLy8gIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2VuZGlmICAvLyBkZWZpbmVkKFJUQ19F
TkFCTEVfVlA5KQogCiB2b2lkIFZpZGVvU2VuZFN0cmVhbVRlc3Q6OlRlc3RSZXF1ZXN0U291cmNl
Um90YXRlVmlkZW8oCiAgICAgYm9vbCBzdXBwb3J0X29yaWVudGF0aW9uX2V4dCkgewpAQCAtMzY2
Myw2ICszNjE1LDM5IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LAogICBUZXN0UmVxdWVz
dFNvdXJjZVJvdGF0ZVZpZGVvKHRydWUpOwogfQogCitURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVz
dCwgRW5jb2RlckNvbmZpZ01heEZyYW1lcmF0ZVJlcG9ydGVkVG9Tb3VyY2UpIHsKKyAgc3RhdGlj
IGNvbnN0IGludCBrTWF4RnBzID0gMjI7CisgIGNsYXNzIEZwc09ic2VydmVyIDogcHVibGljIHRl
c3Q6OlNlbmRUZXN0LAorICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0OjpGcmFtZUdl
bmVyYXRvckNhcHR1cmVyOjpTaW5rV2FudHNPYnNlcnZlciB7CisgICBwdWJsaWM6CisgICAgRnBz
T2JzZXJ2ZXIoKSA6IFNlbmRUZXN0KGtEZWZhdWx0VGltZW91dE1zKSB7fQorCisgICAgdm9pZCBP
bkZyYW1lR2VuZXJhdG9yQ2FwdHVyZXJDcmVhdGVkKAorICAgICAgICB0ZXN0OjpGcmFtZUdlbmVy
YXRvckNhcHR1cmVyKiBmcmFtZV9nZW5lcmF0b3JfY2FwdHVyZXIpIG92ZXJyaWRlIHsKKyAgICAg
IGZyYW1lX2dlbmVyYXRvcl9jYXB0dXJlci0+U2V0U2lua1dhbnRzT2JzZXJ2ZXIodGhpcyk7Cisg
ICAgfQorCisgICAgdm9pZCBPblNpbmtXYW50c0NoYW5nZWQocnRjOjpWaWRlb1NpbmtJbnRlcmZh
Y2U8VmlkZW9GcmFtZT4qIHNpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpWaWRlb1NpbmtXYW50cyYgd2FudHMpIG92ZXJyaWRlIHsKKyAgICAgIGlmICh3YW50cy5t
YXhfZnJhbWVyYXRlX2ZwcyA9PSBrTWF4RnBzKQorICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0
ZV8uU2V0KCk7CisgICAgfQorCisgICAgdm9pZCBNb2RpZnlWaWRlb0NvbmZpZ3MoCisgICAgICAg
IFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnKiBzZW5kX2NvbmZpZywKKyAgICAgICAgc3RkOjp2ZWN0
b3I8VmlkZW9SZWNlaXZlU3RyZWFtOjpDb25maWc+KiByZWNlaXZlX2NvbmZpZ3MsCisgICAgICAg
IFZpZGVvRW5jb2RlckNvbmZpZyogZW5jb2Rlcl9jb25maWcpIG92ZXJyaWRlIHsKKyAgICAgIGVu
Y29kZXJfY29uZmlnLT5zaW11bGNhc3RfbGF5ZXJzWzBdLm1heF9mcmFtZXJhdGUgPSBrTWF4RnBz
OworICAgIH0KKworICAgIHZvaWQgUGVyZm9ybVRlc3QoKSBvdmVycmlkZSB7CisgICAgICBFWFBF
Q1RfVFJVRShXYWl0KCkpIDw8ICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgZnBzIHRvIGJl
IHJlcG9ydGVkLiI7CisgICAgfQorICB9IHRlc3Q7CisKKyAgUnVuQmFzZVRlc3QoJnRlc3QpOwor
fQorCiAvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBvdmVyaGVhZCBpcyByZW1vdmVkIGZyb20g
dGhlIGJhbmR3aWR0aCBlc3RpbWF0ZSBieQogLy8gdGVzdGluZyB0aGF0IHRoZSBtYXhpbXVtIHBv
c3NpYmxlIHRhcmdldCBwYXlsb2FkIHJhdGUgaXMgc21hbGxlciB0aGFuIHRoZQogLy8gbWF4aW11
bSBiYW5kd2lkdGggZXN0aW1hdGUgYnkgdGhlIG92ZXJoZWFkIHJhdGUuCkBAIC0zNjgwLDggKzM2
NjUsNyBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgUmVtb3ZlT3ZlcmhlYWRGcm9tQmFu
ZHdpZHRoKSB7CiAgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyh0aGlzKSwKICAgICAgICAgICBj
YWxsXyhudWxscHRyKSwKICAgICAgICAgICBtYXhfYml0cmF0ZV9icHNfKDApLAotICAgICAgICAg
IGZpcnN0X3BhY2tldF9zZW50XyhmYWxzZSksCi0gICAgICAgICAgYml0cmF0ZV9jaGFuZ2VkX2V2
ZW50XyhmYWxzZSwgZmFsc2UpIHt9CisgICAgICAgICAgZmlyc3RfcGFja2V0X3NlbnRfKGZhbHNl
KSB7fQogCiAgICAgaW50MzJfdCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVB
bGxvY2F0aW9uJiBiaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgZnJhbWVSYXRlKSBvdmVycmlkZSB7CkBAIC0zODk0LDcgKzM4NzgsNiBAQCBjbGFzcyBDb250
ZW50U3dpdGNoVGVzdCA6IHB1YmxpYyB0ZXN0OjpTZW5kVGVzdCB7CiAKICAgZXhwbGljaXQgQ29u
dGVudFN3aXRjaFRlc3QoVCogc3RyZWFtX3Jlc2V0X2Z1bikKICAgICAgIDogU2VuZFRlc3QodGVz
dDo6Q2FsbFRlc3Q6OmtEZWZhdWx0VGltZW91dE1zKSwKLSAgICAgICAgY29udGVudF9zd2l0Y2hf
ZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAgICAgICAgIGNhbGxfKG51bGxwdHIpLAogICAgICAgICBz
dGF0ZV8oU3RyZWFtU3RhdGU6OmtCZWZvcmVTd2l0Y2gpLAogICAgICAgICBzZW5kX3N0cmVhbV8o
bnVsbHB0ciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyLmNjCmlu
ZGV4IGI3YjVhMzI2MTEzZjU3YTNmZjE0ZDlkYjJiMDE3MjI4MDBkNjI5OGYuLmEyMmQ1OGFkZjFl
YWFkZjg4N2JjNTRiMzg3ZjBlNGQ2MmU2Y2VlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Zp
ZGVvX3N0cmVhbV9lbmNvZGVyLmNjCkBAIC0xNSw4ICsxNSw5IEBACiAjaW5jbHVkZSA8bnVtZXJp
Yz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1h
Z2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKLSNpbmNsdWRlICJjb21t
b25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRl
b19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19j
b2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbml0aWFsaXplci5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvYXJyYXlzaXplLmgiCkBAIC0zNjMsNiArMzY0LDggQEAgVmlkZW9TdHJlYW1FbmNvZGVyOjpW
aWRlb1N0cmVhbUVuY29kZXIoCiAgICAgICBtYXhfZnJhbWVyYXRlXygtMSksCiAgICAgICBwZW5k
aW5nX2VuY29kZXJfcmVjb25maWd1cmF0aW9uXyhmYWxzZSksCiAgICAgICBwZW5kaW5nX2VuY29k
ZXJfY3JlYXRpb25fKGZhbHNlKSwKKyAgICAgIGNyb3Bfd2lkdGhfKDApLAorICAgICAgY3JvcF9o
ZWlnaHRfKDApLAogICAgICAgZW5jb2Rlcl9zdGFydF9iaXRyYXRlX2Jwc18oMCksCiAgICAgICBt
YXhfZGF0YV9wYXlsb2FkX2xlbmd0aF8oMCksCiAgICAgICBsYXN0X29ic2VydmVkX2JpdHJhdGVf
YnBzXygwKSwKQEAgLTM3Niw2ICszNzksNyBAQCBWaWRlb1N0cmVhbUVuY29kZXI6OlZpZGVvU3Ry
ZWFtRW5jb2RlcigKICAgICAgIGxhc3RfZnJhbWVfbG9nX21zXyhjbG9ja18tPlRpbWVJbk1pbGxp
c2Vjb25kcygpKSwKICAgICAgIGNhcHR1cmVkX2ZyYW1lX2NvdW50XygwKSwKICAgICAgIGRyb3Bw
ZWRfZnJhbWVfY291bnRfKDApLAorICAgICAgcGVuZGluZ19mcmFtZV9wb3N0X3RpbWVfdXNfKDAp
LAogICAgICAgYml0cmF0ZV9vYnNlcnZlcl8obnVsbHB0ciksCiAgICAgICBlbmNvZGVyX3F1ZXVl
XygiRW5jb2RlclF1ZXVlIikgewogICBSVENfRENIRUNLKGVuY29kZXJfc3RhdHNfb2JzZXJ2ZXIp
OwpAQCAtNTMxLDExICs1MzUsMTQgQEAgdm9pZCBWaWRlb1N0cmVhbUVuY29kZXI6OlJlY29uZmln
dXJlRW5jb2RlcigpIHsKICAgY3JvcF9oZWlnaHRfID0gbGFzdF9mcmFtZV9pbmZvXy0+aGVpZ2h0
IC0gaGlnaGVzdF9zdHJlYW1faGVpZ2h0OwogCiAgIFZpZGVvQ29kZWMgY29kZWM7Ci0gIGlmICgh
VmlkZW9Db2RlY0luaXRpYWxpemVyOjpTZXR1cENvZGVjKGVuY29kZXJfY29uZmlnXywgc3RyZWFt
cywgJmNvZGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF0
ZV9hbGxvY2F0b3JfKSkgeworICBpZiAoIVZpZGVvQ29kZWNJbml0aWFsaXplcjo6U2V0dXBDb2Rl
YyhlbmNvZGVyX2NvbmZpZ18sIHN0cmVhbXMsICZjb2RlYykpIHsKICAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBlbmNvZGVyIGNvbmZpZ3VyYXRpb24uIjsKICAgfQog
CisgIHJhdGVfYWxsb2NhdG9yXyA9CisgICAgICBzZXR0aW5nc18uYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeS0+Q3JlYXRlVmlkZW9CaXRyYXRlQWxsb2NhdG9yKGNvZGVjKTsKKyAgUlRDX0NIRUNL
KHJhdGVfYWxsb2NhdG9yXykgPDwgIkZhaWxlZCB0byBjcmVhdGUgYml0cmF0ZSBhbGxvY2F0b3Iu
IjsKKwogICAvLyBTZXQgbWluX2JpdHJhdGVfYnBzLCBtYXhfYml0cmF0ZV9icHMsIGFuZCBtYXgg
cGFkZGluZyBiaXQgcmF0ZSBmb3IgVlA5LgogICBpZiAoZW5jb2Rlcl9jb25maWdfLmNvZGVjX3R5
cGUgPT0ga1ZpZGVvQ29kZWNWUDkpIHsKICAgICBSVENfRENIRUNLX0VRKDFVLCBzdHJlYW1zLnNp
emUoKSk7CkBAIC02MjksNyArNjM2LDcgQEAgdm9pZCBWaWRlb1N0cmVhbUVuY29kZXI6OlJlY29u
ZmlndXJlRW5jb2RlcigpIHsKIAogdm9pZCBWaWRlb1N0cmVhbUVuY29kZXI6OkNvbmZpZ3VyZVF1
YWxpdHlTY2FsZXIoKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZlbmNvZGVyX3F1ZXVlXyk7Ci0g
IGNvbnN0IGF1dG8gc2NhbGluZ19zZXR0aW5ncyA9IGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGlu
Z3MoKTsKKyAgY29uc3QgYXV0byBzY2FsaW5nX3NldHRpbmdzID0gZW5jb2Rlcl8tPkdldEVuY29k
ZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5nczsKICAgY29uc3QgYm9vbCBxdWFsaXR5X3NjYWxpbmdf
YWxsb3dlZCA9CiAgICAgICBJc1Jlc29sdXRpb25TY2FsaW5nRW5hYmxlZChkZWdyYWRhdGlvbl9w
cmVmZXJlbmNlXykgJiYKICAgICAgIHNjYWxpbmdfc2V0dGluZ3MudGhyZXNob2xkczsKQEAgLTg4
Nyw3ICs4OTQsMTUgQEAgdm9pZCBWaWRlb1N0cmVhbUVuY29kZXI6OkVuY29kZVZpZGVvRnJhbWUo
Y29uc3QgVmlkZW9GcmFtZSYgdmlkZW9fZnJhbWUsCiAKICAgb3ZlcnVzZV9kZXRlY3Rvcl8tPkZy
YW1lQ2FwdHVyZWQob3V0X2ZyYW1lLCB0aW1lX3doZW5fcG9zdGVkX3VzKTsKIAotICB2aWRlb19z
ZW5kZXJfLkFkZFZpZGVvRnJhbWUob3V0X2ZyYW1lLCBudWxscHRyKTsKKyAgLy8gRW5jb2RlciBt
ZXRhZGF0YSBuZWVkcyB0byBiZSB1cGRhdGVkIGJlZm9yZSBlbmNvZGUgY29tcGxldGUgY2FsbGJh
Y2suCisgIFZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gaW5mbyA9IGVuY29kZXJfLT5HZXRFbmNv
ZGVySW5mbygpOworICBpZiAoaW5mby5pbXBsZW1lbnRhdGlvbl9uYW1lICE9IGVuY29kZXJfaW5m
b18uaW1wbGVtZW50YXRpb25fbmFtZSkgeworICAgIGVuY29kZXJfc3RhdHNfb2JzZXJ2ZXJfLT5P
bkVuY29kZXJJbXBsZW1lbnRhdGlvbkNoYW5nZWQoCisgICAgICAgIGluZm8uaW1wbGVtZW50YXRp
b25fbmFtZSk7CisgIH0KKyAgZW5jb2Rlcl9pbmZvXyA9IGluZm87CisKKyAgdmlkZW9fc2VuZGVy
Xy5BZGRWaWRlb0ZyYW1lKG91dF9mcmFtZSwgbnVsbHB0ciwgZW5jb2Rlcl9pbmZvXyk7CiB9CiAK
IHZvaWQgVmlkZW9TdHJlYW1FbmNvZGVyOjpTZW5kS2V5RnJhbWUoKSB7CkBAIC0xMDg1LDcgKzEx
MDAsNyBAQCB2b2lkIFZpZGVvU3RyZWFtRW5jb2Rlcjo6QWRhcHREb3duKEFkYXB0UmVhc29uIHJl
YXNvbikgewogICAgICAgYm9vbCBtaW5fcGl4ZWxzX3JlYWNoZWQgPSBmYWxzZTsKICAgICAgIGlm
ICghc291cmNlX3Byb3h5Xy0+UmVxdWVzdFJlc29sdXRpb25Mb3dlclRoYW4oCiAgICAgICAgICAg
ICAgIGFkYXB0YXRpb25fcmVxdWVzdC5pbnB1dF9waXhlbF9jb3VudF8sCi0gICAgICAgICAgICAg
IGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKS5taW5fcGl4ZWxzX3Blcl9mcmFtZSwKKyAg
ICAgICAgICAgICAgZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5ncy5t
aW5fcGl4ZWxzX3Blcl9mcmFtZSwKICAgICAgICAgICAgICAgJm1pbl9waXhlbHNfcmVhY2hlZCkp
IHsKICAgICAgICAgaWYgKG1pbl9waXhlbHNfcmVhY2hlZCkKICAgICAgICAgICBlbmNvZGVyX3N0
YXRzX29ic2VydmVyXy0+T25NaW5QaXhlbExpbWl0UmVhY2hlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc3RyZWFt
X2VuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyLmgKaW5kZXggNDAwODQyNmJhYzljZjBlNmRjMjhlOTI4
NjQ0ODQ3MTMwMDEyNTZkNS4uOGM1ZWZiZTVjMzY5OTkxYjM5YmMzZTljZjgyNzhlMzY0MTY0YTgz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlci5oCkBAIC0yNjgs
NiArMjY4LDggQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyIDogcHVibGljIFZpZGVvU3RyZWFt
RW5jb2RlckludGVyZmFjZSwKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9wYXJhbWV0
ZXJzX3VwZGF0ZV9tc18KICAgICAgIFJUQ19HVUFSREVEX0JZKCZlbmNvZGVyX3F1ZXVlXyk7CiAK
KyAgVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBlbmNvZGVyX2luZm9fIFJUQ19HVUFSREVEX0JZ
KCZlbmNvZGVyX3F1ZXVlXyk7CisKICAgLy8gQWxsIHB1YmxpYyBtZXRob2RzIGFyZSBwcm94aWVk
IHRvIHxlbmNvZGVyX3F1ZXVlX3wuIEl0IG11c3QgbXVzdCBiZQogICAvLyBkZXN0cm95ZWQgZmly
c3QgdG8gbWFrZSBzdXJlIG5vIHRhc2tzIGFyZSBydW4gdGhhdCB1c2Ugb3RoZXIgbWVtYmVycy4K
ICAgcnRjOjpUYXNrUXVldWUgZW5jb2Rlcl9xdWV1ZV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rl
cl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyX3VuaXR0ZXN0LmNjCmluZGV4IDgwZjhkNWE1OTIx
NzVmM2MyMjU3OTAzM2RlMDZmY2RhM2FiMzkwZDcuLjA1YTIzYzA1YjQ1ZTczNmQwN2RkODc2MWI1
NDliZTEzNGEyMjgwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0
cmVhbV9lbmNvZGVyX3VuaXR0ZXN0LmNjCkBAIC04LDEzICs4LDE3IEBACiAgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8K
IAorI2luY2x1ZGUgInZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyLmgiCisKICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNs
dWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFwaS92aWRl
b19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2Uvdmlk
ZW9hZGFwdGVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9p
bmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA5L2luY2x1ZGUvdnA5X2dsb2JhbHMuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy91dGlsaXR5L2RlZmF1bHRfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9mYWtlY2xvY2suaCIKQEAgLTMwLDcgKzM0LDYgQEAKICNpbmNs
dWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC92aWRlb19lbmNvZGVyX3Byb3h5X2Zh
Y3RvcnkuaCIKICNpbmNsdWRlICJ2aWRlby9zZW5kX3N0YXRpc3RpY3NfcHJveHkuaCIKLSNpbmNs
dWRlICJ2aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IApAQCAtMTAyLDcgKzEwNSw3IEBAIGNsYXNzIFZpZGVvU3RyZWFtRW5jb2RlclVuZGVyVGVzdCA6
IHB1YmxpYyBWaWRlb1N0cmVhbUVuY29kZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcgQ3B1T3ZlcnVzZURldGVjdG9yUHJveHkoc3RhdHNfcHJveHkpKSkge30KIAog
ICB2b2lkIFBvc3RUYXNrQW5kV2FpdChib29sIGRvd24sIEFkYXB0UmVhc29uIHJlYXNvbikgewot
ICAgIHJ0Yzo6RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgICBydGM6OkV2ZW50IGV2ZW50
OwogICAgIGVuY29kZXJfcXVldWUoKS0+UG9zdFRhc2soW3RoaXMsICZldmVudCwgcmVhc29uLCBk
b3duXSB7CiAgICAgICBkb3duID8gQWRhcHREb3duKHJlYXNvbikgOiBBZGFwdFVwKHJlYXNvbik7
CiAgICAgICBldmVudC5TZXQoKTsKQEAgLTExMyw3ICsxMTYsNyBAQCBjbGFzcyBWaWRlb1N0cmVh
bUVuY29kZXJVbmRlclRlc3QgOiBwdWJsaWMgVmlkZW9TdHJlYW1FbmNvZGVyIHsKICAgLy8gVGhp
cyBpcyB1c2VkIGFzIGEgc3luY2hyb25pc2F0aW9uIG1lY2hhbmlzbSwgdG8gbWFrZSBzdXJlIHRo
YXQgdGhlCiAgIC8vIGVuY29kZXIgcXVldWUgaXMgbm90IGJsb2NrZWQgYmVmb3JlIHdlIHN0YXJ0
IHNlbmRpbmcgaXQgZnJhbWVzLgogICB2b2lkIFdhaXRVbnRpbFRhc2tRdWV1ZUlzSWRsZSgpIHsK
LSAgICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgICAgcnRjOjpFdmVudCBldmVu
dDsKICAgICBlbmNvZGVyX3F1ZXVlKCktPlBvc3RUYXNrKFsmZXZlbnRdIHsgZXZlbnQuU2V0KCk7
IH0pOwogICAgIEFTU0VSVF9UUlVFKGV2ZW50LldhaXQoNTAwMCkpOwogICB9CkBAIC0yNzcsNiAr
MjgwLDcgQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgewogICAgICAgICBtYXhfZnJhbWVyYXRlXyhrRGVmYXVsdEZyYW1lcmF0ZSksCiAgICAg
ICAgIGZha2VfZW5jb2Rlcl8oKSwKICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5XygmZmFrZV9lbmNv
ZGVyXyksCisgICAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfKENyZWF0ZUJ1aWx0aW5W
aWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkpLAogICAgICAgICBzdGF0c19wcm94eV8obmV3
IE1vY2thYmxlU2VuZFN0YXRpc3RpY3NQcm94eSgKICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFs
VGltZUNsb2NrKCksCiAgICAgICAgICAgICB2aWRlb19zZW5kX2NvbmZpZ18sCkBAIC0yODcsNiAr
MjkxLDggQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgewogICAgIG1ldHJpY3M6OlJlc2V0KCk7CiAgICAgdmlkZW9fc2VuZF9jb25maWdfID0g
VmlkZW9TZW5kU3RyZWFtOjpDb25maWcobnVsbHB0cik7CiAgICAgdmlkZW9fc2VuZF9jb25maWdf
LmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gJmVuY29kZXJfZmFjdG9yeV87Cisg
ICAgdmlkZW9fc2VuZF9jb25maWdfLmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeSA9CisgICAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfLmdldCgpOwogICAg
IHZpZGVvX3NlbmRfY29uZmlnXy5ydHAucGF5bG9hZF9uYW1lID0gIkZBS0UiOwogICAgIHZpZGVv
X3NlbmRfY29uZmlnXy5ydHAucGF5bG9hZF90eXBlID0gMTI1OwogCkBAIC00OTIsOSArNDk4LDcg
QEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
ewogCiAgIGNsYXNzIFRlc3RFbmNvZGVyIDogcHVibGljIHRlc3Q6OkZha2VFbmNvZGVyIHsKICAg
IHB1YmxpYzoKLSAgICBUZXN0RW5jb2RlcigpCi0gICAgICAgIDogRmFrZUVuY29kZXIoQ2xvY2s6
OkdldFJlYWxUaW1lQ2xvY2soKSksCi0gICAgICAgICAgY29udGludWVfZW5jb2RlX2V2ZW50Xyhm
YWxzZSwgZmFsc2UpIHt9CisgICAgVGVzdEVuY29kZXIoKSA6IEZha2VFbmNvZGVyKENsb2NrOjpH
ZXRSZWFsVGltZUNsb2NrKCkpIHt9CiAKICAgICBWaWRlb0NvZGVjIGNvZGVjX2NvbmZpZygpIGNv
bnN0IHsKICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfc2VjdF8pOwpAQCAtNTA2LDEx
ICs1MTAsMTQgQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewogICAgICAgYmxvY2tfbmV4dF9lbmNvZGVfID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25z
dCBvdmVycmlkZSB7CisgICAgVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5m
bygpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICAgIEVuY29kZXJJbmZvIGluZm87CiAgICAgICBydGM6
OkNyaXRTY29wZSBsb2NrKCZsb2NhbF9jcml0X3NlY3RfKTsKLSAgICAgIGlmIChxdWFsaXR5X3Nj
YWxpbmdfKQotICAgICAgICByZXR1cm4gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MoMSwg
Miwga01pblBpeGVsc1BlckZyYW1lKTsKLSAgICAgIHJldHVybiBWaWRlb0VuY29kZXI6OlNjYWxp
bmdTZXR0aW5nczo6a09mZjsKKyAgICAgIGlmIChxdWFsaXR5X3NjYWxpbmdfKSB7CisgICAgICAg
IGluZm8uc2NhbGluZ19zZXR0aW5ncyA9CisgICAgICAgICAgICBWaWRlb0VuY29kZXI6OlNjYWxp
bmdTZXR0aW5ncygxLCAyLCBrTWluUGl4ZWxzUGVyRnJhbWUpOworICAgICAgfQorICAgICAgcmV0
dXJuIGluZm87CiAgICAgfQogCiAgICAgdm9pZCBDb250aW51ZUVuY29kZSgpIHsgY29udGludWVf
ZW5jb2RlX2V2ZW50Xy5TZXQoKTsgfQpAQCAtNTY5LDkgKzU3Niw4IEBAIGNsYXNzIFZpZGVvU3Ry
ZWFtRW5jb2RlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgaW50IG51
bV9zdHJlYW1zID0gc3RkOjptYXg8aW50PigxLCBjb25maWctPm51bWJlck9mU2ltdWxjYXN0U3Ry
ZWFtcyk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3N0cmVhbXM7ICsraSkgewog
ICAgICAgICAgIGFsbG9jYXRlZF90ZW1wb3JhbF9sYXllcnNfLmVtcGxhY2VfYmFjaygKLSAgICAg
ICAgICAgICAgVGVtcG9yYWxMYXllcnM6OkNyZWF0ZVRlbXBvcmFsTGF5ZXJzKAotICAgICAgICAg
ICAgICAgICAgVGVtcG9yYWxMYXllcnNUeXBlOjprRml4ZWRQYXR0ZXJuLAotICAgICAgICAgICAg
ICAgICAgY29uZmlnLT5WUDgoKS5udW1iZXJPZlRlbXBvcmFsTGF5ZXJzKSk7CisgICAgICAgICAg
ICAgIENyZWF0ZVZwOFRlbXBvcmFsTGF5ZXJzKFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVk
UGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLT5W
UDgoKS5udW1iZXJPZlRlbXBvcmFsTGF5ZXJzKSk7CiAgICAgICAgIH0KICAgICAgIH0KICAgICAg
IGlmIChmb3JjZV9pbml0X2VuY29kZV9mYWlsZWRfKQpAQCAtNTg3LDcgKzU5Myw3IEBAIGNsYXNz
IFZpZGVvU3RyZWFtRW5jb2RlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICBp
bnQgbGFzdF9pbnB1dF93aWR0aF8gUlRDX0dVQVJERURfQlkobG9jYWxfY3JpdF9zZWN0XykgPSAw
OwogICAgIGludCBsYXN0X2lucHV0X2hlaWdodF8gUlRDX0dVQVJERURfQlkobG9jYWxfY3JpdF9z
ZWN0XykgPSAwOwogICAgIGJvb2wgcXVhbGl0eV9zY2FsaW5nXyBSVENfR1VBUkRFRF9CWShsb2Nh
bF9jcml0X3NlY3RfKSA9IHRydWU7Ci0gICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRl
bXBvcmFsTGF5ZXJzPj4gYWxsb2NhdGVkX3RlbXBvcmFsX2xheWVyc18KKyAgICBzdGQ6OnZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8VnA4VGVtcG9yYWxMYXllcnM+PiBhbGxvY2F0ZWRfdGVtcG9yYWxf
bGF5ZXJzXwogICAgICAgICBSVENfR1VBUkRFRF9CWShsb2NhbF9jcml0X3NlY3RfKTsKICAgICBi
b29sIGZvcmNlX2luaXRfZW5jb2RlX2ZhaWxlZF8gUlRDX0dVQVJERURfQlkobG9jYWxfY3JpdF9z
ZWN0XykgPSBmYWxzZTsKICAgfTsKQEAgLTU5NSw3ICs2MDEsNyBAQCBjbGFzcyBWaWRlb1N0cmVh
bUVuY29kZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgIGNsYXNzIFRlc3RTaW5r
IDogcHVibGljIFZpZGVvU3RyZWFtRW5jb2Rlcjo6RW5jb2RlclNpbmsgewogICAgcHVibGljOgog
ICAgIGV4cGxpY2l0IFRlc3RTaW5rKFRlc3RFbmNvZGVyKiB0ZXN0X2VuY29kZXIpCi0gICAgICAg
IDogdGVzdF9lbmNvZGVyXyh0ZXN0X2VuY29kZXIpLCBlbmNvZGVkX2ZyYW1lX2V2ZW50XyhmYWxz
ZSwgZmFsc2UpIHt9CisgICAgICAgIDogdGVzdF9lbmNvZGVyXyh0ZXN0X2VuY29kZXIpIHt9CiAK
ICAgICB2b2lkIFdhaXRGb3JFbmNvZGVkRnJhbWUoaW50NjRfdCBleHBlY3RlZF9udHBfdGltZSkg
ewogICAgICAgRVhQRUNUX1RSVUUoCkBAIC02OTQsNiArNzAwLDcgQEAgY2xhc3MgVmlkZW9TdHJl
YW1FbmNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICBpbnQgbWF4X2ZyYW1l
cmF0ZV87CiAgIFRlc3RFbmNvZGVyIGZha2VfZW5jb2Rlcl87CiAgIHRlc3Q6OlZpZGVvRW5jb2Rl
clByb3h5RmFjdG9yeSBlbmNvZGVyX2ZhY3RvcnlfOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9C
aXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4gYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV87CiAgIHN0
ZDo6dW5pcXVlX3B0cjxNb2NrYWJsZVNlbmRTdGF0aXN0aWNzUHJveHk+IHN0YXRzX3Byb3h5XzsK
ICAgVGVzdFNpbmsgc2lua187CiAgIEFkYXB0aW5nRnJhbWVGb3J3YXJkZXIgdmlkZW9fc291cmNl
XzsKQEAgLTcwMyw3ICs3MTAsNyBAQCBjbGFzcyBWaWRlb1N0cmVhbUVuY29kZXJUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CiAKIFRFU1RfRihWaWRlb1N0cmVhbUVuY29kZXJUZXN0LCBF
bmNvZGVPbmVGcmFtZSkgewogICB2aWRlb19zdHJlYW1fZW5jb2Rlcl8tPk9uQml0cmF0ZVVwZGF0
ZWQoa1RhcmdldEJpdHJhdGVCcHMsIDAsIDApOwotICBydGM6OkV2ZW50IGZyYW1lX2Rlc3Ryb3ll
ZF9ldmVudChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGZyYW1lX2Rlc3Ryb3llZF9ldmVu
dDsKICAgdmlkZW9fc291cmNlXy5JbmNvbWluZ0NhcHR1cmVkRnJhbWUoQ3JlYXRlRnJhbWUoMSwg
JmZyYW1lX2Rlc3Ryb3llZF9ldmVudCkpOwogICBXYWl0Rm9yRW5jb2RlZEZyYW1lKDEpOwogICBF
WFBFQ1RfVFJVRShmcmFtZV9kZXN0cm95ZWRfZXZlbnQuV2FpdChrRGVmYXVsdFRpbWVvdXRNcykp
OwpAQCAtNzEyLDcgKzcxOSw3IEBAIFRFU1RfRihWaWRlb1N0cmVhbUVuY29kZXJUZXN0LCBFbmNv
ZGVPbmVGcmFtZSkgewogCiBURVNUX0YoVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCwgRHJvcHNGcmFt
ZXNCZWZvcmVGaXJzdE9uQml0cmF0ZVVwZGF0ZWQpIHsKICAgLy8gRHJvcHBlZCBzaW5jZSBubyB0
YXJnZXQgYml0cmF0ZSBoYXMgYmVlbiBzZXQuCi0gIHJ0Yzo6RXZlbnQgZnJhbWVfZGVzdHJveWVk
X2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZnJhbWVfZGVzdHJveWVkX2V2ZW50
OwogICAvLyBUaGUgZW5jb2RlciB3aWxsIGNhY2hlIHVwIHRvIG9uZSBmcmFtZSBmb3IgYSBzaG9y
dCBkdXJhdGlvbi4gQWRkaW5nIHR3bwogICAvLyBmcmFtZXMgbWVhbnMgdGhhdCB0aGUgZmlyc3Qg
ZnJhbWUgd2lsbCBiZSBkcm9wcGVkIGFuZCB0aGUgc2Vjb25kIGZyYW1lIHdpbGwKICAgLy8gYmUg
c2VudCB3aGVuIHRoZSBlbmNvZGVyIGlzIGVuYWJsZWQuCkBAIC03NzAsNyArNzc3LDcgQEAgVEVT
VF9GKFZpZGVvU3RyZWFtRW5jb2RlclRlc3QsIERyb3BzRnJhbWVBZnRlclN0b3ApIHsKIAogICB2
aWRlb19zdHJlYW1fZW5jb2Rlcl8tPlN0b3AoKTsKICAgc2lua18uU2V0RXhwZWN0Tm9GcmFtZXMo
KTsKLSAgcnRjOjpFdmVudCBmcmFtZV9kZXN0cm95ZWRfZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAg
cnRjOjpFdmVudCBmcmFtZV9kZXN0cm95ZWRfZXZlbnQ7CiAgIHZpZGVvX3NvdXJjZV8uSW5jb21p
bmdDYXB0dXJlZEZyYW1lKENyZWF0ZUZyYW1lKDIsICZmcmFtZV9kZXN0cm95ZWRfZXZlbnQpKTsK
ICAgRVhQRUNUX1RSVUUoZnJhbWVfZGVzdHJveWVkX2V2ZW50LldhaXQoa0RlZmF1bHRUaW1lb3V0
TXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3dlYnJ0Yy5nbmkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy93ZWJydGMuZ25pCmluZGV4IDZlY2Y4NTliYTEwM2QwZjY4NjA3NjU5ZDI5OGVlZTdjNmEz
YzcxODQuLjVjNTIxNGU4YTE1N2YxNmZjYThiODM4MDM3ODJiNTIzYjU5NDdhZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3dlYnJ0Yy5nbmkK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvd2VicnRjLmdu
aQpAQCAtOSw2ICs5LDcgQEAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9hcm0uZ25pIikKIGltcG9y
dCgiLy9idWlsZC9jb25maWcvZmVhdHVyZXMuZ25pIikKIGltcG9ydCgiLy9idWlsZC9jb25maWcv
bWlwcy5nbmkiKQogaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9zYW5pdGl6ZXJzL3Nhbml0aXplcnMu
Z25pIikKK2ltcG9ydCgiLy9idWlsZC9jb25maWcvc3lzcm9vdC5nbmkiKQogaW1wb3J0KCIvL2J1
aWxkL2NvbmZpZy91aS5nbmkiKQogaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmki
KQogCkBAIC0zNSw2ICszNiwxMCBAQCBpZiAoaXNfbWFjKSB7CiB9CiAKIGRlY2xhcmVfYXJncygp
IHsKKyAgIyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSB3aWxsIG1ha2UgUlRDX0VYUE9SVCAoc2VlIHJ0
Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgpCisgICMgZXhwYW5kIHRvIGNvZGUgdGhhdCB3aWxs
IG1hbmFnZSBzeW1ib2xzIHZpc2liaWxpdHkuCisgIHJ0Y19lbmFibGVfc3ltYm9sX2V4cG9ydCA9
IGZhbHNlCisKICAgIyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSB3aWxsIGRlZmluZSBXRUJSVENfRVhD
TFVERV9GSUVMRF9UUklBTF9ERUZBVUxUIHdoaWNoCiAgICMgd2lsbCB0ZWxsIHRoZSBwcmUtcHJv
Y2Vzc29yIHRvIHJlbW92ZSB0aGUgZGVmYXVsdCBkZWZpbml0aW9uIG9mIHN5bWJvbHMKICAgIyBu
ZWVkZWQgdG8gdXNlIGZpZWxkX3RyaWFsLiBJbiB0aGF0IGNhc2UgYSBuZXcgaW1wbGVtZW50YXRp
b24gbmVlZHMgdG8gYmUKQEAgLTEwMyw2ICsxMDgsOSBAQCBkZWNsYXJlX2FyZ3MoKSB7CiAgICMg
U2V0IHRoaXMgdG8gZmFsc2UgdG8gc2tpcCBidWlsZGluZyBjb2RlIHRoYXQgcmVxdWlyZXMgWDEx
LgogICBydGNfdXNlX3gxMSA9IHVzZV94MTEKIAorICAjIFNldCB0aGlzIHRvIHVzZSBQaXBlV2ly
ZSBvbiB0aGUgV2F5bGFuZCBkaXNwbGF5IHNlcnZlci4KKyAgcnRjX3VzZV9waXBld2lyZSA9IGZh
bHNlCisKICAgIyBFbmFibGUgdG8gdXNlIHRoZSBNb3ppbGxhIGludGVybmFsIHNldHRpbmdzLgog
ICBidWlsZF93aXRoX21vemlsbGEgPSBmYWxzZQogCkBAIC0yMjUsNyArMjMzLDggQEAgcnRjX2xp
YnZweF9kaXIgPSAiLy90aGlyZF9wYXJ0eS9saWJ2cHgiCiBydGNfb3B1c19kaXIgPSAiLy90aGly
ZF9wYXJ0eS9vcHVzIgogCiAjIERlc2t0b3AgY2FwdHVyZXIgaXMgc3VwcG9ydGVkIG9ubHkgb24g
V2luZG93cywgT1NYIGFuZCBMaW51eC4KLXJ0Y19kZXNrdG9wX2NhcHR1cmVfc3VwcG9ydGVkID0g
aXNfd2luIHx8IGlzX21hYyB8fCAoaXNfbGludXggJiYgcnRjX3VzZV94MTEpCitydGNfZGVza3Rv
cF9jYXB0dXJlX3N1cHBvcnRlZCA9CisgICAgaXNfd2luIHx8IGlzX21hYyB8fCAoaXNfbGludXgg
JiYgKHJ0Y191c2VfeDExIHx8IHJ0Y191c2VfcGlwZXdpcmUpKQogCiAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCiAjIFRlbXBsYXRlcwpAQCAtNjQ5LDYgKzY1OCw4IEBAIGlmIChpc19pb3MpIHsKICAg
ICB9CiAgIH0KIAorICAjIFRPRE86IEdlbmVyYXRlIG1vZHVsZS5tb2R1bGVtYXAgZmlsZSB0byBl
bmFibGUgdXNlIGluIFN3aWZ0CisgICMgcHJvamVjdHMuIFNlZSAibWFjX2ZyYW1ld29ya19idW5k
bGVfd2l0aF91bWJyZWxsYV9oZWFkZXIiLgogICB0ZW1wbGF0ZSgiaW9zX2ZyYW1ld29ya19idW5k
bGVfd2l0aF91bWJyZWxsYV9oZWFkZXIiKSB7CiAgICAgZm9yd2FyZF92YXJpYWJsZXNfZnJvbShp
bnZva2VyLCBbICJvdXRwdXRfbmFtZSIgXSkKICAgICB1bWJyZWxsYV9oZWFkZXJfcGF0aCA9CkBA
IC02OTksMTIgKzcxMCwxNyBAQCBpZiAoaXNfbWFjKSB7CiAgICAgZm9yd2FyZF92YXJpYWJsZXNf
ZnJvbShpbnZva2VyLCBbICJvdXRwdXRfbmFtZSIgXSkKICAgICB0aGlzX3RhcmdldF9uYW1lID0g
dGFyZ2V0X25hbWUKICAgICB1bWJyZWxsYV9oZWFkZXJfcGF0aCA9ICIkdGFyZ2V0X2dlbl9kaXIv
dW1icmVsbGFfaGVhZGVyLyRvdXRwdXRfbmFtZS5oIgorICAgIG1vZHVsZW1hcF9wYXRoID0gIiR0
YXJnZXRfZ2VuX2Rpci9Nb2R1bGVzL21vZHVsZS5tb2R1bGVtYXAiCiAKICAgICBtYWNfZnJhbWV3
b3JrX2J1bmRsZSh0YXJnZXRfbmFtZSkgewogICAgICAgZm9yd2FyZF92YXJpYWJsZXNfZnJvbShp
bnZva2VyLCAiKiIsIFtdKQogCiAgICAgICBmcmFtZXdvcmtfdmVyc2lvbiA9ICJBIgotICAgICAg
ZnJhbWV3b3JrX2NvbnRlbnRzID0gWyAiSGVhZGVycyIgXQorICAgICAgZnJhbWV3b3JrX2NvbnRl
bnRzID0gWworICAgICAgICAiSGVhZGVycyIsCisgICAgICAgICJNb2R1bGVzIiwKKyAgICAgICAg
IlJlc291cmNlcyIsCisgICAgICBdCiAKICAgICAgIGxkZmxhZ3MgPSBbCiAgICAgICAgICItYWxs
X2xvYWQiLApAQCAtNzE0LDcgKzczMCw5IEBAIGlmIChpc19tYWMpIHsKIAogICAgICAgZGVwcyAr
PSBbCiAgICAgICAgICI6Y29weV9mcmFtZXdvcmtfaGVhZGVyc18kdGhpc190YXJnZXRfbmFtZSIs
CisgICAgICAgICI6Y29weV9tb2R1bGVtYXBfJHRoaXNfdGFyZ2V0X25hbWUiLAogICAgICAgICAi
OmNvcHlfdW1icmVsbGFfaGVhZGVyXyR0aGlzX3RhcmdldF9uYW1lIiwKKyAgICAgICAgIjptb2R1
bGVtYXBfJHRoaXNfdGFyZ2V0X25hbWUiLAogICAgICAgICAiOnVtYnJlbGxhX2hlYWRlcl8kdGhp
c190YXJnZXRfbmFtZSIsCiAgICAgICBdCiAgICAgfQpAQCAtNzI3LDYgKzc0NSwzMSBAQCBpZiAo
aXNfbWFjKSB7CiAgICAgICBdCiAgICAgfQogCisgICAgYWN0aW9uKCJtb2R1bGVtYXBfJHRoaXNf
dGFyZ2V0X25hbWUiKSB7CisgICAgICBzY3JpcHQgPSAiLy90b29sc193ZWJydGMvaW9zL2dlbmVy
YXRlX21vZHVsZW1hcC5weSIKKyAgICAgIGFyZ3MgPSBbCisgICAgICAgICItLW91dCIsCisgICAg
ICAgIHJlYmFzZV9wYXRoKG1vZHVsZW1hcF9wYXRoLCByb290X2J1aWxkX2RpciksCisgICAgICAg
ICItLW5hbWUiLAorICAgICAgICBvdXRwdXRfbmFtZSwKKyAgICAgIF0KKyAgICAgIG91dHB1dHMg
PSBbCisgICAgICAgIG1vZHVsZW1hcF9wYXRoLAorICAgICAgXQorICAgIH0KKworICAgIGJ1bmRs
ZV9kYXRhKCJjb3B5X21vZHVsZW1hcF8kdGhpc190YXJnZXRfbmFtZSIpIHsKKyAgICAgIHNvdXJj
ZXMgPSBbCisgICAgICAgIG1vZHVsZW1hcF9wYXRoLAorICAgICAgXQorICAgICAgb3V0cHV0cyA9
IFsKKyAgICAgICAgInt7YnVuZGxlX2NvbnRlbnRzX2Rpcn19L01vZHVsZXMvbW9kdWxlLm1vZHVs
ZW1hcCIsCisgICAgICBdCisgICAgICBkZXBzID0gWworICAgICAgICAiOm1vZHVsZW1hcF8kdGhp
c190YXJnZXRfbmFtZSIsCisgICAgICBdCisgICAgfQorCiAgICAgYWN0aW9uKCJ1bWJyZWxsYV9o
ZWFkZXJfJHRoaXNfdGFyZ2V0X25hbWUiKSB7CiAgICAgICBmb3J3YXJkX3ZhcmlhYmxlc19mcm9t
KGludm9rZXIsIFsgInNvdXJjZXMiIF0pCiAKQEAgLTc2OSwxNCArODEyLDE0IEBAIGlmIChpc19h
bmRyb2lkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZpc2liaWxpdHkiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQogCi0gICAgICBqYXZhY19hcmdzID0gW10K
KyAgICAgIGVycm9ycHJvbmVfYXJncyA9IFtdCiAKICAgICAgICMgVHJlYXQgd2FybmluZ3MgYXMg
ZXJyb3JzLgotICAgICAgamF2YWNfYXJncyArPSBbICItV2Vycm9yIiBdCisgICAgICBlcnJvcnBy
b25lX2FyZ3MgKz0gWyAiLVdlcnJvciIgXQogCiAgICAgICAjIFRPRE8oY3JidWcuY29tLzgyNDY3
OSk6IEZpbmQgb3V0IHdoeSB0aGlzIGZhaWxzIGluIENocm9taXVtCiAgICAgICBpZiAoIWJ1aWxk
X3dpdGhfY2hyb21pdW0pIHsKLSAgICAgICAgamF2YWNfYXJncyArPSBbCisgICAgICAgIGVycm9y
cHJvbmVfYXJncyArPSBbCiAgICAgICAgICAgIi1YZXA6UGFyYW1ldGVyTm90TnVsbGFibGU6RVJS
T1IiLAogICAgICAgICAgICItWGVwOkZpZWxkTWlzc2luZ051bGxhYmxlOkVSUk9SIiwKICAgICAg
ICAgICAiLVhlcDpSZXR1cm5NaXNzaW5nTnVsbGFibGU6RVJST1IiLApAQCAtNzg0LDggKzgyNyw4
IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgICB9CiAKICAgICAgICMgQWRkIGFueSBhcmd1bWVu
dHMgZGVmaW5lZCBieSB0aGUgaW52b2tlci4KLSAgICAgIGlmIChkZWZpbmVkKGludm9rZXIuamF2
YWNfYXJncykpIHsKLSAgICAgICAgamF2YWNfYXJncyArPSBpbnZva2VyLmphdmFjX2FyZ3MKKyAg
ICAgIGlmIChkZWZpbmVkKGludm9rZXIuZXJyb3Jwcm9uZV9hcmdzKSkgeworICAgICAgICBlcnJv
cnByb25lX2FyZ3MgKz0gaW52b2tlci5lcnJvcnByb25lX2FyZ3MKICAgICAgIH0KIAogICAgICAg
aWYgKCFkZWZpbmVkKGRlcHMpKSB7CkBAIC04MDksMTEgKzg1MiwxMSBAQCBpZiAoaXNfYW5kcm9p
ZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQogCiAgICAgICAjIFRyZWF0IHdh
cm5pbmdzIGFzIGVycm9ycy4KLSAgICAgIGphdmFjX2FyZ3MgPSBbICItV2Vycm9yIiBdCisgICAg
ICBlcnJvcnByb25lX2FyZ3MgPSBbICItV2Vycm9yIiBdCiAKICAgICAgICMgVE9ETyhjcmJ1Zy5j
b20vODI0Njc5KTogRmluZCBvdXQgd2h5IHRoaXMgZmFpbHMgaW4gQ2hyb21pdW0KICAgICAgIGlm
ICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewotICAgICAgICBqYXZhY19hcmdzICs9IFsKKyAgICAg
ICAgZXJyb3Jwcm9uZV9hcmdzICs9IFsKICAgICAgICAgICAiLVhlcDpQYXJhbWV0ZXJOb3ROdWxs
YWJsZTpFUlJPUiIsCiAgICAgICAgICAgIi1YZXA6RmllbGRNaXNzaW5nTnVsbGFibGU6RVJST1Ii
LAogICAgICAgICAgICItWGVwOlJldHVybk1pc3NpbmdOdWxsYWJsZTpFUlJPUiIsCkBAIC04NDEs
MTEgKzg4NCwxMSBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKQogCiAgICAgICAjIFRyZWF0IHdhcm5pbmdzIGFzIGVycm9ycy4KLSAgICAgIGphdmFj
X2FyZ3MgPSBbICItV2Vycm9yIiBdCisgICAgICBlcnJvcnByb25lX2FyZ3MgPSBbICItV2Vycm9y
IiBdCiAKICAgICAgICMgVE9ETyhjcmJ1Zy5jb20vODI0Njc5KTogRmluZCBvdXQgd2h5IHRoaXMg
ZmFpbHMgaW4gQ2hyb21pdW0KICAgICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewotICAg
ICAgICBqYXZhY19hcmdzICs9IFsKKyAgICAgICAgZXJyb3Jwcm9uZV9hcmdzICs9IFsKICAgICAg
ICAgICAiLVhlcDpQYXJhbWV0ZXJOb3ROdWxsYWJsZTpFUlJPUiIsCiAgICAgICAgICAgIi1YZXA6
RmllbGRNaXNzaW5nTnVsbGFibGU6RVJST1IiLAogICAgICAgICAgICItWGVwOlJldHVybk1pc3Np
bmdOdWxsYWJsZTpFUlJPUiIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvV2ViS2l0LzAwMDEtbGlid2VicnRjLWNoYW5nZXMucGF0Y2ggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvV2ViS2l0LzAwMDEtbGlid2VicnRjLWNoYW5nZXMucGF0Y2gKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMDEzNGJiMmQxYTBmMDQ0NjE2NzhlMWY0YmQ1OGJkNzRm
YWVmZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dlYktpdC8wMDAxLWxpYndlYnJ0Yy1jaGFuZ2VzLnBh
dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA4MiArMCwwIEBACi1Gcm9tIDM4YTgzODI4NDU1Mjcx
MWQ2MjI4ZGI5YmFiMmRlYzcyODQwMjA5OGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t
OiBZb3Vlbm4gRmFibGV0IDx5b3Vlbm5AYXBwbGUuY29tPgotRGF0ZTogTW9uLCA4IE9jdCAyMDE4
IDEwOjM4OjEyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBsaWJ3ZWJydGMgY2hhbmdlcwot
Ci0tLS0KLSAuLi4vYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjICAgfCAg
IDIgKy0KLSAuLi4vbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhdHlwZXMuY2MgfCAg
IDQgKy0KLSAuLi4vU291cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYyAgICAgfCAg
IDQgKy0KLSAuLi4vU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MgICAgfCAg
IDQgKy0KLSAuLi4vd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZV9idWZmZXIuY2MgfCAg
IDIgKy0KLSAuLi4vbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuY2MgfCAg
IDQgKy0KLSAuLi4vY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5jYyAgICAgICAgICAgfCAg
IDIgKy0KLSAuLi4vY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjICAgICAgICAgfCAg
IDQgKy0KLSAuLi4vbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmNjICAgICAgICAgICAgfCAg
IDIgKy0KLSAuLi4vU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjICAgICAgICAgfCAg
MTAgKwotIC4uLi9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXIuaCB8ICAg
MiArLQotIC4uLi9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyB8ICAg
NCArLQotIC4uLi93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb24uY2MgICAgICB8ICAg
MiArLQotIC4uLi9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaCB8ICAg
NiArLQotIC4uLi9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYyB8ICAg
NiArLQotIC4uLi9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmggICAgICAgICB8ICAg
MiArLQotIC4uLi9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmcuY2MgICAgICAgICB8ICA1
NCArKy0KLSAuLi4vd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfdW5pdHRlc3QuY2MgICAgICAgfCAg
IDIgKy0KLSAuLi4vU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZlcl9kZXN0cm95ZWQuaCAgfCAg
NjkgKysrKwotIC4uLi9ydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmggICAgICB8
ICAgNCArLQotIC4uLi93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjICAgICB8
ICAgOCArLQotIC4uLi9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2l6ZV9tYWNyb3MuaCB8
ICAgNCArLQotIC4uLi93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYyAgICB8
ICAgMyArLQotIC4uLi9QZWVyQ29ubmVjdGlvbi9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0gICB8
ICA1OCArKysKLSAuLi4vcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0g
fCAgIDQgKy0KLSAuLi4vcGVlcmNvbm5lY3Rpb24vUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmgg
fCAgIDEgKwotIC4uLi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLmggICAgICAgICB8
ICAgNyArCi0gLi4uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUubW0gICAgICAgIHwg
IDUyICsrLQotIC4uLi9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbSB8
ICAgNCArLQotIC4uLi9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaCB8
ICAgMSArCi0gLi4uL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0gICAgICAgICAgIHwg
ICA1ICsKLSAuLi4vdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIuaCAgfCAg
IDEgKwotIC4uLi9SVENOYXRpdmVNdXRhYmxlSTQyMEJ1ZmZlci5oICAgICAgICAgICAgICB8ICAg
MSArCi0gLi4uL3Nkay9vYmpjL2Jhc2UvUlRDQ29kZWNTcGVjaWZpY0luZm8uaCAgICAgIHwgICAx
ICsKLSAuLi4vd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLmggICAgfCAgIDIg
KwotIC4uLi93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UubSAgICB8ICAgMSAr
Ci0gLi4uL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0k0MjBCdWZmZXIuaCAgICAgIHwgICAxICsK
LSAuLi4vc2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLmggfCAgIDEgKwot
IC4uLi9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubSB8ICAgMyArLQot
IC4uLi93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0NvZGVjSW5mby5oICB8ICAgMSArCi0g
Li4uL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2Rlci5oICAgIHwgICAxICsKLSAu
Li4vc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXJGYWN0b3J5LmggICAgfCAgIDEgKwotIC4u
Li93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaCAgICB8ICAgOCArLQotIC4u
Li9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnkuaCAgICB8ICAgMSArCi0gLi4u
L29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaCAgIHwgICAxICsKLSAuLi4v
c2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJTZXR0aW5ncy5oICAgfCAgIDYgKwotIC4uLi93
ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lLmggICAgICB8ICAgMSArCi0gLi4uL3Nk
ay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oICAgICAgIHwgICAxICsKLSAuLi4vdmlk
ZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0LmggICAgfCAgIDMgKy0KLSAuLi4vUlRD
RGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaCAgICAgICAgICAgfCAgIDEgKwotIC4uLi9SVENE
ZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5oICAgICAgICAgICB8ICAgMSArCi0gLi4uL3ZpZGVv
X2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5oICAgICAgIHwgICAxICsKLSAuLi4vdmlkZW9f
Y29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tICAgICAgfCAgMTYgKy0KLSAuLi4vdmlkZW9f
Y29kZWMvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQuaCAgfCAgIDEgKwotIC4uLi92aWRlb19j
b2RlYy9SVENWaWRlb0RlY29kZXJIMjY0LmggICAgICAgICB8ICAgMSArCi0gLi4uL3ZpZGVvX2Nv
ZGVjL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0LmggIHwgICAxICsKLSAuLi4vdmlkZW9fY29k
ZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5oICAgICAgICAgfCAgIDEgKwotIC4uLi92aWRlb19jb2Rl
Yy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tICAgICAgICB8IDM4MiArKysrKysrKysrKysrKy0tLS0K
LSAuLi4vb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuY2MgICAgfCAgMTYgKy0K
LSAuLi4vc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmggfCAgMTAgKy0K
LSAuLi4vdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ0NWUGl4ZWxCdWZmZXIuaCAgICAgfCAgIDEgKwot
IC4uLi9uYXRpdmUvc3JjL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tICB8ICAgNiArCi0g
NjIgZmlsZXMgY2hhbmdlZCwgNjM3IGluc2VydGlvbnMoKyksIDE3MiBkZWxldGlvbnMoLSkKLSBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbmV2ZXJfZGVzdHJveWVkLmgKLSBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0Ns
YXNzZXMvUGVlckNvbm5lY3Rpb24vUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tCi0KLWRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJf
aWxiYy5jYwotaW5kZXggZWZjZWYzODJmZjcuLjJhZTc1NDc0Y2NkIDEwMDY0NAotLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9p
bGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxi
Yy5jYwotQEAgLTMzLDcgKzMzLDcgQEAgaW50IEdldElsYmNCaXRyYXRlKGludCBwdGltZSkgewot
ICAgICAgIC8vIDUwIGJ5dGVzIHBlciBmcmFtZSBvZiAzMCBtcyA9PiAoYXBwcm94KSAxMzMzMyBi
aXRzL3MuCi0gICAgICAgcmV0dXJuIDEzMzMzOwotICAgICBkZWZhdWx0OgotLSAgICAgIEZBVEFM
KCk7Ci0rICAgICAgUlRDX0ZBVEFMKCk7Ci0gICB9Ci0gfQotIH0gIC8vIG5hbWVzcGFjZQotZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9t
ZWRpYXR5cGVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL21lZGlhdHlwZXMuY2MKLWluZGV4IDU5OTU0MmRiMDhmLi4xNDBkMGFlOTYyNSAxMDA2NDQK
LS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRp
YXR5cGVzLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvbWVkaWF0eXBlcy5jYwotQEAgLTI4LDcgKzI4LDcgQEAgc3RkOjpzdHJpbmcgTWVkaWFU
eXBlVG9TdHJpbmcoTWVkaWFUeXBlIHR5cGUpIHsKLSAgICAgY2FzZSBNRURJQV9UWVBFX0RBVEE6
Ci0gICAgICAgcmV0dXJuIGtNZWRpYVR5cGVEYXRhOwotICAgfQotLSAgRkFUQUwoKTsKLSsgIFJU
Q19GQVRBTCgpOwotICAgLy8gTm90IHJlYWNoYWJsZTsgYXZvaWRzIGNvbXBpbGUgd2FybmluZy4K
LSAgIHJldHVybiAiIjsKLSB9Ci1AQCAtNDEsNyArNDEsNyBAQCBNZWRpYVR5cGUgTWVkaWFUeXBl
RnJvbVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdHlwZV9zdHIpIHsKLSAgIH0gZWxzZSBpZiAo
dHlwZV9zdHIgPT0ga01lZGlhVHlwZURhdGEpIHsKLSAgICAgcmV0dXJuIE1FRElBX1RZUEVfREFU
QTsKLSAgIH0KLS0gIEZBVEFMKCk7Ci0rICBSVENfRkFUQUwoKTsKLSAgIC8vIE5vdCByZWFjaGFi
bGU7IGF2b2lkcyBjb21waWxlIHdhcm5pbmcuCi0gICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFU
eXBlPigtMSk7Ci0gfQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4X3Jlc2FtcGxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MKLWluZGV4IGVk
YTcwYzdjMzc4Li45NzIyMmU5NDdhNCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4X3Jlc2FtcGxlLmNjCi0rKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBs
ZS5jYwotQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBSZW1peEFuZFJlc2FtcGxlKGNvbnN0IGludDE2
X3QqIHNyY19kYXRhLAotIAotICAgaWYgKHJlc2FtcGxlci0+SW5pdGlhbGl6ZUlmTmVlZGVkKHNh
bXBsZV9yYXRlX2h6LCBkc3RfZnJhbWUtPnNhbXBsZV9yYXRlX2h6XywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wdHJfbnVtX2NoYW5uZWxzKSA9PSAtMSkgewot
LSAgICBGQVRBTCgpIDw8ICJJbml0aWFsaXplSWZOZWVkZWQgZmFpbGVkOiBzYW1wbGVfcmF0ZV9o
eiA9ICIgPDwgc2FtcGxlX3JhdGVfaHoKLSsgICAgUlRDX0ZBVEFMKCkgPDwgIkluaXRpYWxpemVJ
Zk5lZWRlZCBmYWlsZWQ6IHNhbXBsZV9yYXRlX2h6ID0gIiA8PCBzYW1wbGVfcmF0ZV9oegotICAg
ICAgICAgICAgIDw8ICIsIGRzdF9mcmFtZS0+c2FtcGxlX3JhdGVfaHpfID0gIiA8PCBkc3RfZnJh
bWUtPnNhbXBsZV9yYXRlX2h6XwotICAgICAgICAgICAgIDw8ICIsIGF1ZGlvX3B0cl9udW1fY2hh
bm5lbHMgPSAiIDw8IGF1ZGlvX3B0cl9udW1fY2hhbm5lbHM7Ci0gICB9Ci1AQCAtNzIsNyArNzIs
NyBAQCB2b2lkIFJlbWl4QW5kUmVzYW1wbGUoY29uc3QgaW50MTZfdCogc3JjX2RhdGEsCi0gICAg
ICAgcmVzYW1wbGVyLT5SZXNhbXBsZShhdWRpb19wdHIsIHNyY19sZW5ndGgsIGRzdF9mcmFtZS0+
bXV0YWJsZV9kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0ZyYW1lOjpr
TWF4RGF0YVNpemVTYW1wbGVzKTsKLSAgIGlmIChvdXRfbGVuZ3RoID09IC0xKSB7Ci0tICAgIEZB
VEFMKCkgPDwgIlJlc2FtcGxlIGZhaWxlZDogYXVkaW9fcHRyID0gIiA8PCBhdWRpb19wdHIKLSsg
ICAgUlRDX0ZBVEFMKCkgPDwgIlJlc2FtcGxlIGZhaWxlZDogYXVkaW9fcHRyID0gIiA8PCBhdWRp
b19wdHIKLSAgICAgICAgICAgICA8PCAiLCBzcmNfbGVuZ3RoID0gIiA8PCBzcmNfbGVuZ3RoCi0g
ICAgICAgICAgICAgPDwgIiwgZHN0X2ZyYW1lLT5tdXRhYmxlX2RhdGEoKSA9ICIgPDwgZHN0X2Zy
YW1lLT5tdXRhYmxlX2RhdGEoKTsKLSAgIH0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2Zp
bGUuY2MKLWluZGV4IDAwODg5MWY5Y2ZiLi4wMjA5ZjUyZDJjNyAxMDA2NDQKLS0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmls
ZS5jYwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX2F1ZGlvL3dhdl9maWxlLmNjCi1AQCAtNTMsNyArNTMsNyBAQCBXYXZSZWFkZXI6OldhdlJl
YWRlcihydGM6OlBsYXRmb3JtRmlsZSBmaWxlKSB7Ci0gICAgIGlmICghcnRjOjpDbG9zZVBsYXRm
b3JtRmlsZShmaWxlKSkgewotICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBjbG9z
ZSBmaWxlLiI7Ci0gICAgIH0KLS0gICAgRkFUQUwoKSA8PCAiQ291bGQgbm90IG9wZW4gd2F2IGZp
bGUgZm9yIHJlYWRpbmcuIjsKLSsgICAgUlRDX0ZBVEFMKCkgPDwgIkNvdWxkIG5vdCBvcGVuIHdh
diBmaWxlIGZvciByZWFkaW5nLiI7Ci0gICB9Ci0gCi0gICBSZWFkYWJsZVdhdkZpbGUgcmVhZGFi
bGUoZmlsZV9oYW5kbGVfKTsKLUBAIC0xMzgsNyArMTM4LDcgQEAgV2F2V3JpdGVyOjpXYXZXcml0
ZXIocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwKLSAgICAgaWYgKCFydGM6OkNsb3NlUGxhdGZvcm1G
aWxlKGZpbGUpKSB7Ci0gICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbid0IGNsb3NlIGZp
bGUuIjsKLSAgICAgfQotLSAgICBGQVRBTCgpIDw8ICJDb3VsZCBub3Qgb3BlbiB3YXYgZmlsZSBm
b3Igd3JpdGluZy4iOwotKyAgICBSVENfRkFUQUwoKSA8PCAiQ291bGQgbm90IG9wZW4gd2F2IGZp
bGUgZm9yIHdyaXRpbmcuIjsKLSAgIH0KLSAKLSAgIFJUQ19DSEVDSyhDaGVja1dhdlBhcmFtZXRl
cnMobnVtX2NoYW5uZWxzXywgc2FtcGxlX3JhdGVfLCBrV2F2Rm9ybWF0LAotZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92
aWRlb19mcmFtZV9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjCi1pbmRleCAyY2QwYjI5
MGYxNS4uYmUwYjQ5MjdiYmUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjCi0rKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8v
dmlkZW9fZnJhbWVfYnVmZmVyLmNjCi1AQCAtMzIzLDcgKzMyMyw3IEBAIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxQbGFuYXJZdXZCdWZmZXI+IFdyYXBZdXZCdWZmZXIoCi0gICAgICAgcmV0dXJuIFdyYXBJ
NDQ0QnVmZmVyKHdpZHRoLCBoZWlnaHQsIHlfcGxhbmUsIHlfc3RyaWRlLCB1X3BsYW5lLCB1X3N0
cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdl9wbGFuZSwgdl9zdHJpZGUsIG5v
X2xvbmdlcl91c2VkKTsKLSAgICAgZGVmYXVsdDoKLS0gICAgICBGQVRBTCgpIDw8ICJVbmV4cGVj
dGVkIGZyYW1lIGJ1ZmZlciB0eXBlLiI7Ci0rICAgICAgUlRDX0ZBVEFMKCkgPDwgIlVuZXhwZWN0
ZWQgZnJhbWUgYnVmZmVyIHR5cGUuIjsKLSAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgIH0KLSB9
Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3Jl
bnRfYV9jb2RlYy5jYwotaW5kZXggMGE5Y2UxMTdlMmIuLjQ1ZDc4ZDc0YTVkIDEwMDY0NAotLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuY2MKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2Nv
ZGVjLmNjCi1AQCAtMjExLDcgKzIxMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+
IENyZWF0ZUNuZ0VuY29kZXIoCi0gICAgICAgY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkVmVy
eUFnZ3Jlc3NpdmU7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0tICAgICAgRkFUQUwo
KTsKLSsgICAgICBSVENfRkFUQUwoKTsKLSAgIH0KLSAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9FbmNvZGVyPihuZXcgQXVkaW9FbmNvZGVyQ25nKHN0ZDo6bW92ZShjb25maWcpKSk7Ci0g
fQotQEAgLTIyNiw3ICsyMjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPiBDcmVh
dGVJc2FjRGVjb2RlcigKLSAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPigK
LSAgICAgICBuZXcgQXVkaW9EZWNvZGVySXNhY0Zsb2F0SW1wbChzYW1wbGVfcmF0ZV9oeiwgYndp
bmZvKSk7Ci0gI2Vsc2UKLS0gIEZBVEFMKCkgPDwgImlTQUMgaXMgbm90IHN1cHBvcnRlZC4iOwot
KyAgUlRDX0ZBVEFMKCkgPDwgImlTQUMgaXMgbm90IHN1cHBvcnRlZC4iOwotICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0RlY29kZXI+KCk7Ci0gI2VuZGlmCi0gfQotZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25n
L2F1ZGlvX2VuY29kZXJfY25nLmNjCi1pbmRleCA0Y2RhMzQwMWZhMi4uMDU1MTkwNDk3YTUgMTAw
NjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjCi0rKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjCi1AQCAtMTM5LDcgKzEzOSw3IEBA
IEF1ZGlvRW5jb2Rlcjo6RW5jb2RlZEluZm8gQXVkaW9FbmNvZGVyQ25nOjpFbmNvZGVJbXBsKAot
ICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgVmFkOjprRXJyb3I6IHsKLS0gICAgICBG
QVRBTCgpOyAgLy8gRmFpbHMgb25seSBpZiBmZWQgaW52YWxpZCBkYXRhLgotKyAgICAgIFJUQ19G
QVRBTCgpOyAgLy8gRmFpbHMgb25seSBpZiBmZWQgaW52YWxpZCBkYXRhLgotICAgICAgIGJyZWFr
OwotICAgICB9Ci0gICB9Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5j
b2Rlcl9pbGJjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCi1p
bmRleCA4NDY5NWUzNzYzMC4uZGFlOTU2YjMwYzAgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
aWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlv
X2VuY29kZXJfaWxiYy5jYwotQEAgLTQwLDcgKzQwLDcgQEAgaW50IEdldElsYmNCaXRyYXRlKGlu
dCBwdGltZSkgewotICAgICAgIC8vIDUwIGJ5dGVzIHBlciBmcmFtZSBvZiAzMCBtcyA9PiAoYXBw
cm94KSAxMzMzMyBiaXRzL3MuCi0gICAgICAgcmV0dXJuIDEzMzMzOwotICAgICBkZWZhdWx0Ogot
LSAgICAgIEZBVEFMKCk7Ci0rICAgICAgUlRDX0ZBVEFMKCk7Ci0gICB9Ci0gfQotIAotQEAgLTE0
Nyw3ICsxNDcsNyBAQCBzaXplX3QgQXVkaW9FbmNvZGVySWxiY0ltcGw6OlJlcXVpcmVkT3V0cHV0
U2l6ZUJ5dGVzKCkgY29uc3QgewotICAgICBjYXNlIDY6Ci0gICAgICAgcmV0dXJuIDIgKiA1MDsK
LSAgICAgZGVmYXVsdDoKLS0gICAgICBGQVRBTCgpOwotKyAgICAgIFJUQ19GQVRBTCgpOwotICAg
fQotIH0KLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2Uu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2UuY2MKLWluZGV4IDgwNmJiYTdh
OWZlLi43YmY3ZDUyMDgzYyAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9maWxl
X3NvdXJjZS5jYwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmNjCi1A
QCAtODksNyArODksNyBAQCBib29sIFJ0cEZpbGVTb3VyY2U6Ok9wZW5GaWxlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBmaWxlX25hbWUpIHsKLSAgICAgcmV0dXJuIHRydWU7Ci0gICBydHBfcmVhZGVyXy5y
ZXNldChSdHBGaWxlUmVhZGVyOjpDcmVhdGUoUnRwRmlsZVJlYWRlcjo6a1BjYXAsIGZpbGVfbmFt
ZSkpOwotICAgaWYgKCFydHBfcmVhZGVyXykgewotLSAgICBGQVRBTCgpIDw8ICJDb3VsZG4ndCBv
cGVuIGlucHV0IGZpbGUgYXMgZWl0aGVyIGEgcnRwZHVtcCBvciAucGNhcC4gTm90ZSAiCi0rICAg
IFJUQ19GQVRBTCgpIDw8ICJDb3VsZG4ndCBvcGVuIGlucHV0IGZpbGUgYXMgZWl0aGVyIGEgcnRw
ZHVtcCBvciAucGNhcC4gTm90ZSAiCi0gICAgICAgICAgICAgICAgInRoYXQgLnBjYXBuZyBpcyBu
b3Qgc3VwcG9ydGVkLiI7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLWRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNw
cG9ydC5jYwotaW5kZXggZDA3MGY2ZWNlZTguLmM2NmM3MzA3Mzc1IDEwMDY0NAotLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5j
YwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvdGNwcG9ydC5jYwotQEAgLTM1MSwxMSArMzUxLDIxIEBAIFRDUENvbm5lY3Rpb246OlRDUENv
bm5lY3Rpb24oVENQUG9ydCogcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBw
b3J0KCkgTmV0d29yazoiIDw8IHBvcnQtPk5ldHdvcmsoKS0+VG9TdHJpbmcoKTsKLSAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8cnRjOjpJbnRlcmZhY2VBZGRyZXNzPiYgZGVzaXJlZF9hZGRyZXNzZXMg
PQotICAgICAgICAgcG9ydF8tPk5ldHdvcmsoKS0+R2V0SVBzKCk7Ci0rCi0rI2lmIGRlZmluZWQo
V0VCUlRDX1dFQktJVF9CVUlMRCkKLSsgICAgIFJUQ19EQ0hFQ0soc29ja2V0LT5HZXRMb2NhbEFk
ZHJlc3MoKS5Jc0xvb3BiYWNrSVAoKSB8fAotKyAgICAgICAgICAgICAgICAoc3RkOjpmaW5kX2lm
KGRlc2lyZWRfYWRkcmVzc2VzLmJlZ2luKCksIGRlc2lyZWRfYWRkcmVzc2VzLmVuZCgpLAotKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXNdKGNvbnN0IHJ0Yzo6SW50ZXJmYWNlQWRk
cmVzcyYgYWRkcikgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc29j
a2V0Xy0+R2V0TG9jYWxBZGRyZXNzKCkuaXBhZGRyKCkgPT0KLSsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFkZHI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KSAhPSBkZXNpcmVkX2FkZHJlc3Nlcy5lbmQoKSkpOwotKyAjZWxzZQotICAgICBSVENfRENIRUNL
KHN0ZDo6ZmluZF9pZihkZXNpcmVkX2FkZHJlc3Nlcy5iZWdpbigpLCBkZXNpcmVkX2FkZHJlc3Nl
cy5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXNdKGNvbnN0IHJ0Yzo6
SW50ZXJmYWNlQWRkcmVzcyYgYWRkcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzb2NrZXRfLT5HZXRMb2NhbEFkZHJlc3MoKS5pcGFkZHIoKSA9PQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9KSAhPSBkZXNpcmVkX2FkZHJlc3Nlcy5lbmQoKSk7Ci0rI2VuZGlmCi0gICAgIENv
bm5lY3RTb2NrZXRTaWduYWxzKHNvY2tldCk7Ci0gICB9Ci0gfQotZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZpbHRlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVy
LmgKLWluZGV4IDdkZWNiYmE4YTRmLi5kZTQ3N2Y0NTdmMiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZpbHRlci5oCi0rKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idW5kbGVmaWx0
ZXIuaAotQEAgLTE3LDcgKzE3LDcgQEAKLSAjaW5jbHVkZSA8dmVjdG9yPgotIAotICNpbmNsdWRl
ICJtZWRpYS9iYXNlL3N0cmVhbXBhcmFtcy5oIgotLSNpbmNsdWRlICJydGNfYmFzZS9iYXNpY3R5
cGVzLmgiCi0rLy8jaW5jbHVkZSAicnRjX2Jhc2UvYmFzaWN0eXBlcy5oIgotIAotIG5hbWVzcGFj
ZSBjcmlja2V0IHsKLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MK
LWluZGV4IGI3OGVkOGRiMWVlLi41M2Y0ZGE4NTE2ZSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5j
YwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVl
cmNvbm5lY3Rpb25mYWN0b3J5LmNjCi1AQCAtMjU3LDcgKzI1Nyw3IEBAIFJ0cENhcGFiaWxpdGll
cyBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkdldFJ0cFNlbmRlckNhcGFiaWxpdGllcygKLSAgICAg
ICByZXR1cm4gUnRwQ2FwYWJpbGl0aWVzKCk7Ci0gICB9Ci0gICAvLyBOb3QgcmVhY2hlZDsgYXZv
aWRzIGNvbXBpbGUgd2FybmluZy4KLS0gIEZBVEFMKCk7Ci0rICBSVENfRkFUQUwoKTsKLSB9Ci0g
Ci0gUnRwQ2FwYWJpbGl0aWVzIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6R2V0UnRwUmVjZWl2ZXJD
YXBhYmlsaXRpZXMoCi1AQCAtMjg0LDcgKzI4NCw3IEBAIFJ0cENhcGFiaWxpdGllcyBQZWVyQ29u
bmVjdGlvbkZhY3Rvcnk6OkdldFJ0cFJlY2VpdmVyQ2FwYWJpbGl0aWVzKAotICAgICAgIHJldHVy
biBSdHBDYXBhYmlsaXRpZXMoKTsKLSAgIH0KLSAgIC8vIE5vdCByZWFjaGVkOyBhdm9pZHMgY29t
cGlsZSB3YXJuaW5nLgotLSAgRkFUQUwoKTsKLSsgIFJUQ19GQVRBTCgpOwotIH0KLSAKLSBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9Tb3VyY2VJbnRlcmZhY2U+Ci1kaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZl
cnNpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9y
dHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYwotaW5kZXggYTU3MDY2ZTRkYjAuLmU1MTliOWIwNmRl
IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb24uY2MKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNjCi1AQCAt
NjEsNyArNjEsNyBAQCBSVENFcnJvck9yPGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0+IFRvQ3JpY2tl
dEZlZWRiYWNrUGFyYW0oCi0gICAgICAgcmV0dXJuIGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0oY3Jp
Y2tldDo6a1J0Y3BGYlBhcmFtVHJhbnNwb3J0Q2MpOwotICAgfQotICAgLy8gTm90IHJlYWNoZWQ7
IGF2b2lkcyBjb21waWxlIHdhcm5pbmcuCi0tICBGQVRBTCgpOwotKyAgUlRDX0ZBVEFMKCk7Ci0g
fQotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBDPgotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NoZWNrcy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgKLWluZGV4
IDlkZTZkNDc1NzNjLi41Y2YwNjc5OTEwZSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NoZWNrcy5oCi0rKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaAotQEAg
LTgwLDcgKzgwLDcgQEAgUlRDX05PUkVUVVJOIHZvaWQgcnRjX0ZhdGFsTWVzc2FnZShjb25zdCBj
aGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogbXNnKTsKLSAvLyAgIG1lc3NhZ2VzIGlm
IHRoZSBjb25kaXRpb24gZG9lc24ndCBob2xkLiBQcmVmZXIgdGhlbSB0byByYXcgUlRDX0NIRUNL
IGFuZAotIC8vICAgUlRDX0RDSEVDSy4KLSAvLwotLS8vIC0gRkFUQUwoKSBhYm9ydHMgdW5jb25k
aXRpb25hbGx5LgotKy8vIC0gUlRDX0ZBVEFMKCkgYWJvcnRzIHVuY29uZGl0aW9uYWxseS4KLSAv
LwotIC8vIFRPRE8oYWptKTogSWRlYWxseSwgY2hlY2tzLmggd291bGQgYmUgY29tYmluZWQgd2l0
aCBsb2dnaW5nLmgsIGJ1dAotIC8vIGNvbnNvbGlkYXRpb24gd2l0aCBzeXN0ZW1fd3JhcHBlcnMv
bG9nZ2luZy5oIHNob3VsZCBoYXBwZW4gZmlyc3QuCi1AQCAtMzQ4LDkgKzM0OCw5IEBAIGNsYXNz
IEZhdGFsTG9nQ2FsbCBmaW5hbCB7Ci0gI2RlZmluZSBSVENfTk9UUkVBQ0hFRCgpIFJUQ19EQ0hF
Q0soUlRDX1VOUkVBQ0hBQkxFX0NPREVfSElUKQotIAotIC8vIFRPRE8oYnVncy53ZWJydGMub3Jn
Lzg0NTQpOiBBZGQgYW4gUlRDXyBwcmVmaXggb3IgcmVuYW1lIGRpZmZlcmVudGx5LgotLSNkZWZp
bmUgRkFUQUwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0rI2RlZmluZSBSVENfRkFUQUwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICBydGM6OndlYnJ0Y19jaGVja3NfaW1wbDo6RmF0
YWxMb2dDYWxsPGZhbHNlPihfX0ZJTEVfXywgX19MSU5FX18sIFwKLS0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGQVRBTCgpIikgJiAgICAgICAgXAotKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJUQ19GQVRBTCgp
IikgJiAgICAgICAgXAotICAgICAgIHJ0Yzo6d2VicnRjX2NoZWNrc19pbXBsOjpMb2dTdHJlYW1l
cjw+KCkKLSAKLSAvLyBQZXJmb3JtcyB0aGUgaW50ZWdlciBkaXZpc2lvbiBhL2IgYW5kIHJldHVy
bnMgdGhlIHJlc3VsdC4gQ0hFQ0tzIHRoYXQgdGhlCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYwotaW5k
ZXggNWIyODc5NGY2Y2EuLjRmMjk0NTk0YmQ0IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MKLSsrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjCi1A
QCAtODAsNyArODAsNyBAQCB2b2lkIEZsYWc6OlNldFRvRGVmYXVsdCgpIHsKLSAgICAgICB2YXJp
YWJsZV8tPnMgPSBkZWZhdWx0Xy5zOwotICAgICAgIHJldHVybjsKLSAgIH0KLS0gIEZBVEFMKCkg
PDwgInVucmVhY2hhYmxlIGNvZGUiOwotKyAgUlRDX0ZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNv
ZGUiOwotIH0KLSAKLSBzdGF0aWMgY29uc3QgY2hhciogVHlwZTJTdHJpbmcoRmxhZzo6VHlwZSB0
eXBlKSB7Ci1AQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogVHlwZTJTdHJpbmco
RmxhZzo6VHlwZSB0eXBlKSB7Ci0gICAgIGNhc2UgRmxhZzo6U1RSSU5HOgotICAgICAgIHJldHVy
biAic3RyaW5nIjsKLSAgIH0KLS0gIEZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotKyAg
UlRDX0ZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBQ
cmludEZsYWdWYWx1ZShGbGFnOjpUeXBlIHR5cGUsIEZsYWdWYWx1ZSogcCkgewotQEAgLTExMiw3
ICsxMTIsNyBAQCBzdGF0aWMgdm9pZCBQcmludEZsYWdWYWx1ZShGbGFnOjpUeXBlIHR5cGUsIEZs
YWdWYWx1ZSogcCkgewotICAgICAgIHByaW50ZigiJXMiLCBwLT5zKTsKLSAgICAgICByZXR1cm47
Ci0gICB9Ci0tICBGQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSsgIFJUQ19GQVRBTCgp
IDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSB9Ci0gCi0gdm9pZCBGbGFnOjpQcmludChib29sIHBy
aW50X2N1cnJlbnRfdmFsdWUpIHsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaAotaW5kZXggNTEz
YmMyNjM2NTEuLjcxOGQ5NTg5MzQ4IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaAotKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaAotQEAg
LTUwLDcgKzUwLDcgQEAgY2xhc3MgTG9jYXRpb24gewotICNkZWZpbmUgUlRDX0ZST01fSEVSRSBS
VENfRlJPTV9IRVJFX1dJVEhfRlVOQ1RJT04oX19GVU5DVElPTl9fKQotIAotICNkZWZpbmUgUlRD
X0ZST01fSEVSRV9XSVRIX0ZVTkNUSU9OKGZ1bmN0aW9uX25hbWUpIFwKLS0gIDo6cnRjOjpMb2Nh
dGlvbihmdW5jdGlvbl9uYW1lLCBfX0ZJTEVfXyAiOiIgU1RSSU5HSVpFKF9fTElORV9fKSkKLSsg
IDo6cnRjOjpMb2NhdGlvbihmdW5jdGlvbl9uYW1lLCBfX0ZJTEVfXyAiOiIgUlRDX1NUUklOR0la
RShfX0xJTkVfXykpCi0gCi0gfSAgLy8gbmFtZXNwYWNlIHJ0YwotIAotZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmcu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9s
b2dnaW5nLmNjCi1pbmRleCAxMjlhODk3NDM5Ny4uNTg0NTZjNTk5ZWMgMTAwNjQ0Ci0tLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5n
LmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9sb2dnaW5nLmNjCi1AQCAtMzYsNiArMzYsNyBAQCBzdGF0aWMgY29uc3QgaW50IGtNYXhM
b2dMaW5lU2l6ZSA9IDEwMjQgLSA2MDsKLSAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0
aW9uLmgiCi0gI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSAjaW5jbHVkZSAicnRjX2Jh
c2UvcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmgiCi0rI2luY2x1ZGUgInJ0Y19iYXNlL25ldmVyX2Rl
c3Ryb3llZC5oIgotICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKLSAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgotICNpbmNsdWRlICJydGNfYmFz
ZS9zdHJpbmd1dGlscy5oIgotQEAgLTYyLDggKzYzLDEyIEBAIGNvbnN0IGNoYXIqIEZpbGVuYW1l
RnJvbVBhdGgoY29uc3QgY2hhciogZmlsZSkgewotICAgICByZXR1cm4gKGVuZDEgPiBlbmQyKSA/
IGVuZDEgKyAxIDogZW5kMiArIDE7Ci0gfQotIAotLS8vIEdsb2JhbCBsb2NrIGZvciBsb2cgc3Vi
c3lzdGVtLCBvbmx5IG5lZWRlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHN0cmVhbXNfLgotLUNy
aXRpY2FsU2VjdGlvbiBnX2xvZ19jcml0OwotKy8vIEdsb2JhbCBsb2NrIGZvciBsb2cgc3Vic3lz
dGVtLCBvbmx5IG5lZWRlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHN0cmVhbUxpc3QoKS4KLStD
cml0aWNhbFNlY3Rpb24mIGxvZ0NyaXRpY2FsU2NvcGUoKSB7Ci0rICBzdGF0aWMgYXV0byBzY29w
ZSA9IG1ha2VOZXZlckRlc3Ryb3llZDw+KENyaXRpY2FsU2VjdGlvbiB7IH0pOwotKyAgcmV0dXJu
IHNjb3BlLmdldCgpOwotK30KLSsKLSB9ICAvLyBuYW1lc3BhY2UKLSAKLSAvLyBJbmVmZmljaWVu
dCBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBvdmVycmlkZSBpcyByZWNvbW1lbmRlZC4KLUBAIC04
Myw3ICs4OCwxNSBAQCBib29sIExvZ01lc3NhZ2U6OmxvZ190b19zdGRlcnJfID0gdHJ1ZTsKLSAv
LyBOb3RlOiB3ZSBleHBsaWNpdGx5IGRvIG5vdCBjbGVhbiB0aGlzIHVwLCBiZWNhdXNlIG9mIHRo
ZSB1bmNlcnRhaW4gb3JkZXJpbmcKLSAvLyBvZiBkZXN0cnVjdG9ycyBhdCBwcm9ncmFtIGV4aXQu
ICBMZXQgdGhlIHBlcnNvbiB3aG8gc2V0cyB0aGUgc3RyZWFtIHRyaWdnZXIKLSAvLyBjbGVhbnVw
IGJ5IHNldHRpbmcgdG8gbnVsbCwgb3IgbGV0IGl0IGxlYWsgKHNhZmUgYXQgcHJvZ3JhbSBleGl0
KS4KLS1Mb2dNZXNzYWdlOjpTdHJlYW1MaXN0IExvZ01lc3NhZ2U6OnN0cmVhbXNfIFJUQ19HVUFS
REVEX0JZKGdfbG9nX2NyaXQpOwotK3R5cGVkZWYgc3RkOjpwYWlyPExvZ1NpbmsqLCBMb2dnaW5n
U2V2ZXJpdHk+IFN0cmVhbUFuZFNldmVyaXR5OwotK3R5cGVkZWYgc3RkOjpsaXN0PFN0cmVhbUFu
ZFNldmVyaXR5PiBTdHJlYW1MaXN0OwotKwotKy8vIFRoZSBvdXRwdXQgc3RyZWFtcyBhbmQgdGhl
aXIgYXNzb2NpYXRlZCBzZXZlcml0aWVzCi0rU3RyZWFtTGlzdCYgc3RyZWFtTGlzdCgpCi0rICAg
IFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQobG9nQ3JpdGljYWxTY29wZSgpKSB7Ci0rICAg
ICAgICBzdGF0aWMgYXV0byBzdHJlYW1fbGlzdCA9IG1ha2VOZXZlckRlc3Ryb3llZDw+KFN0cmVh
bUxpc3QgeyB9KTsKLSsgIHJldHVybiBzdHJlYW1fbGlzdC5nZXQoKTsKLSt9Ci0gCi0gLy8gQm9v
bGVhbiBvcHRpb25zIGRlZmF1bHQgdG8gZmFsc2UgKDApCi0gYm9vbCBMb2dNZXNzYWdlOjp0aHJl
YWRfLCBMb2dNZXNzYWdlOjp0aW1lc3RhbXBfOwotQEAgLTk3LDYgKzExMCwxMCBAQCBMb2dNZXNz
YWdlOjpMb2dNZXNzYWdlKGNvbnN0IGNoYXIqIGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBMb2dFcnJvckNvbnRleHQgZXJyX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBl
cnIpCi0gICAgIDogc2V2ZXJpdHlfKHNldikgewotKwotKyAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IGNhbGxMb2dDcml0aWNhbFNjb3BlT25jZTsKLSsgIHN0ZDo6Y2FsbF9vbmNlKGNhbGxMb2dDcml0
aWNhbFNjb3BlT25jZSxbXSB7IGxvZ0NyaXRpY2FsU2NvcGUoKTsgfSk7Ci0rCi0gICBpZiAodGlt
ZXN0YW1wXykgewotICAgICAvLyBVc2UgU3lzdGVtVGltZU1pbGxpcyBzbyB0aGF0IGV2ZW4gaWYg
dGVzdHMgdXNlIGZha2UgY2xvY2tzLCB0aGUgdGltZXN0YW1wCi0gICAgIC8vIGluIGxvZyBtZXNz
YWdlcyByZXByZXNlbnRzIHRoZSByZWFsIHN5c3RlbSB0aW1lLgotQEAgLTE5Nyw4ICsyMTQsOCBA
QCBMb2dNZXNzYWdlOjp+TG9nTWVzc2FnZSgpIHsKLSAjZW5kaWYKLSAgIH0KLSAKLS0gIENyaXRT
Y29wZSBjcygmZ19sb2dfY3JpdCk7Ci0tICBmb3IgKGF1dG8mIGt2IDogc3RyZWFtc18pIHsKLSsg
IENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29wZSgpKTsKLSsgIGZvciAoYXV0byYga3YgOiBz
dHJlYW1MaXN0KCkpIHsKLSAgICAgaWYgKHNldmVyaXR5XyA+PSBrdi5zZWNvbmQpIHsKLSAjaWYg
ZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKLSAgICAgICBrdi5maXJzdC0+T25Mb2dNZXNzYWdlKHN0
ciwgc2V2ZXJpdHlfLCB0YWdfKTsKLUBAIC0yNDYsNyArMjYzLDcgQEAgdm9pZCBMb2dNZXNzYWdl
OjpMb2dUaW1lc3RhbXBzKGJvb2wgb24pIHsKLSAKLSB2b2lkIExvZ01lc3NhZ2U6OkxvZ1RvRGVi
dWcoTG9nZ2luZ1NldmVyaXR5IG1pbl9zZXYpIHsKLSAgIGdfZGJnX3NldiA9IG1pbl9zZXY7Ci0t
ICBDcml0U2NvcGUgY3MoJmdfbG9nX2NyaXQpOwotKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0aWNh
bFNjb3BlKCkpOwotICAgVXBkYXRlTWluTG9nU2V2ZXJpdHkoKTsKLSB9Ci0gCi1AQCAtMjU1LDkg
KzI3Miw5IEBAIHZvaWQgTG9nTWVzc2FnZTo6U2V0TG9nVG9TdGRlcnIoYm9vbCBsb2dfdG9fc3Rk
ZXJyKSB7Ci0gfQotIAotIGludCBMb2dNZXNzYWdlOjpHZXRMb2dUb1N0cmVhbShMb2dTaW5rKiBz
dHJlYW0pIHsKLS0gIENyaXRTY29wZSBjcygmZ19sb2dfY3JpdCk7Ci0rICBDcml0U2NvcGUgY3Mo
JmxvZ0NyaXRpY2FsU2NvcGUoKSk7Ci0gICBMb2dnaW5nU2V2ZXJpdHkgc2V2ID0gTFNfTk9ORTsK
LS0gIGZvciAoYXV0byYga3YgOiBzdHJlYW1zXykgewotKyAgZm9yIChhdXRvJiBrdiA6IHN0cmVh
bUxpc3QoKSkgewotICAgICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0gPT0ga3YuZmlyc3QpIHsKLSAg
ICAgICBzZXYgPSBzdGQ6Om1pbihzZXYsIGt2LnNlY29uZCk7Ci0gICAgIH0KLUBAIC0yNjYsMTYg
KzI4MywxNiBAQCBpbnQgTG9nTWVzc2FnZTo6R2V0TG9nVG9TdHJlYW0oTG9nU2luayogc3RyZWFt
KSB7Ci0gfQotIAotIHZvaWQgTG9nTWVzc2FnZTo6QWRkTG9nVG9TdHJlYW0oTG9nU2luayogc3Ry
ZWFtLCBMb2dnaW5nU2V2ZXJpdHkgbWluX3NldikgewotLSAgQ3JpdFNjb3BlIGNzKCZnX2xvZ19j
cml0KTsKLS0gIHN0cmVhbXNfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihzdHJlYW0sIG1pbl9z
ZXYpKTsKLSsgIENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29wZSgpKTsKLSsgIHN0cmVhbUxp
c3QoKS5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoc3RyZWFtLCBtaW5fc2V2KSk7Ci0gICBVcGRh
dGVNaW5Mb2dTZXZlcml0eSgpOwotIH0KLSAKLSB2b2lkIExvZ01lc3NhZ2U6OlJlbW92ZUxvZ1Rv
U3RyZWFtKExvZ1NpbmsqIHN0cmVhbSkgewotLSAgQ3JpdFNjb3BlIGNzKCZnX2xvZ19jcml0KTsK
LS0gIGZvciAoU3RyZWFtTGlzdDo6aXRlcmF0b3IgaXQgPSBzdHJlYW1zXy5iZWdpbigpOyBpdCAh
PSBzdHJlYW1zXy5lbmQoKTsgKytpdCkgewotKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0aWNhbFNj
b3BlKCkpOwotKyAgZm9yIChTdHJlYW1MaXN0OjppdGVyYXRvciBpdCA9IHN0cmVhbUxpc3QoKS5i
ZWdpbigpOyBpdCAhPSBzdHJlYW1MaXN0KCkuZW5kKCk7ICsraXQpIHsKLSAgICAgaWYgKHN0cmVh
bSA9PSBpdC0+Zmlyc3QpIHsKLS0gICAgICBzdHJlYW1zXy5lcmFzZShpdCk7Ci0rICAgICAgc3Ry
ZWFtTGlzdCgpLmVyYXNlKGl0KTsKLSAgICAgICBicmVhazsKLSAgICAgfQotICAgfQotQEAgLTMz
NCw5ICszNTEsOSBAQCB2b2lkIExvZ01lc3NhZ2U6OkNvbmZpZ3VyZUxvZ2dpbmcoY29uc3QgY2hh
ciogcGFyYW1zKSB7Ci0gfQotIAotIHZvaWQgTG9nTWVzc2FnZTo6VXBkYXRlTWluTG9nU2V2ZXJp
dHkoKQotLSAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGdfbG9nX2NyaXQpIHsKLSsg
ICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChsb2dDcml0aWNhbFNjb3BlKCkpIHsKLSAg
IExvZ2dpbmdTZXZlcml0eSBtaW5fc2V2ID0gZ19kYmdfc2V2OwotLSAgZm9yIChjb25zdCBhdXRv
JiBrdiA6IHN0cmVhbXNfKSB7Ci0rICBmb3IgKGNvbnN0IGF1dG8mIGt2IDogc3RyZWFtTGlzdCgp
KSB7Ci0gICAgIGNvbnN0IExvZ2dpbmdTZXZlcml0eSBzZXYgPSBrdi5zZWNvbmQ7Ci0gICAgIG1p
bl9zZXYgPSBzdGQ6Om1pbihtaW5fc2V2LCBzZXYpOwotICAgfQotQEAgLTQ1MCwxMSArNDY3LDgg
QEAgYm9vbCBMb2dNZXNzYWdlOjpJc05vb3AoTG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5KSB7Ci0g
ICAvLyBUT0RPKHRvbW1pKTogV2UncmUgZ3JhYmJpbmcgdGhpcyBsb2NrIGZvciBldmVyeSBMb2dN
ZXNzYWdlIGluc3RhbmNlIHRoYXQKLSAgIC8vIGlzIGdvaW5nIHRvIGJlIGxvZ2dlZC4gVGhpcyBp
bnRyb2R1Y2VzIHVubmVjZXNzYXJ5IHN5bmNocm9uaXphdGlvbiBmb3IKLSAgIC8vIGEgZmVhdHVy
ZSB0aGF0J3MgbW9zdGx5IHVzZWQgZm9yIHRlc3RpbmcuCi0tICBDcml0U2NvcGUgY3MoJmdfbG9n
X2NyaXQpOwotLSAgaWYgKHN0cmVhbXNfLnNpemUoKSA+IDApCi0tICAgIHJldHVybiBmYWxzZTsK
LS0KLS0gIHJldHVybiB0cnVlOwotKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0aWNhbFNjb3BlKCkp
OwotKyAgcmV0dXJuIHN0cmVhbUxpc3QoKS5zaXplKCkgPT0gMDsKLSB9Ci0gCi0gdm9pZCBMb2dN
ZXNzYWdlOjpGaW5pc2hQcmludFN0cmVhbSgpIHsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9n
Z2luZ191bml0dGVzdC5jYwotaW5kZXggYTQ3NWU1MmQ0NjUuLjZiMjI2MzkyM2ZhIDEwMDY0NAot
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
bG9nZ2luZ191bml0dGVzdC5jYwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ191bml0dGVzdC5jYwotQEAgLTIyMSw3ICsyMjEs
NyBAQCBURVNUKExvZ1Rlc3QsIFNpbmdsZVN0cmVhbSkgewotIAotICNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVCAmJiAhZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKLSBURVNUKExvZ1Rlc3QsIENoZWNr
cykgewotLSAgRVhQRUNUX0RFQVRIKEZBVEFMKCkgPDwgIm1lc3NhZ2UiLAotKyAgRVhQRUNUX0RF
QVRIKFJUQ19GQVRBTCgpIDw8ICJtZXNzYWdlIiwKLSAgICAgICAgICAgICAgICAiXG5cbiNcbiIK
LSAgICAgICAgICAgICAgICAiIyBGYXRhbCBlcnJvciBpbjogXFxTKywgbGluZSBcXHcrXG4iCi0g
ICAgICAgICAgICAgICAgIiMgbGFzdCBzeXN0ZW0gZXJyb3I6IFxcdytcbiIKLWRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZl
cl9kZXN0cm95ZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL25ldmVyX2Rlc3Ryb3llZC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg
MDAwMDAwMDAwMDAuLmZjYzYyZTM1NTM0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZlcl9kZXN0cm95ZWQu
aAotQEAgLTAsMCArMSw2OSBAQAotKy8qCi0rICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotKyAqIGFyZSBtZXQ6Ci0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0rICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0rICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSsgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0rICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0rICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0rICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSsgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICovCi0r
Ci0rI3ByYWdtYSBvbmNlCi0rCi0rI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotKyNpbmNsdWRlIDx1
dGlsaXR5PgotKwotK25hbWVzcGFjZSBydGMgewotKwotK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIE5ldmVyRGVzdHJveWVkIHsKLStwdWJsaWM6Ci0rICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3M+IE5ldmVyRGVzdHJveWVkKEFyZ3MmJi4uLiBhcmdzKQotKyAgICB7Ci0rICAgICAgICBu
ZXcgKHN0b3JhZ2VQb2ludGVyKCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSsg
ICAgfQotKwotKyAgICBOZXZlckRlc3Ryb3llZChOZXZlckRlc3Ryb3llZCYmIG90aGVyKQotKyAg
ICB7Ci0rICAgICAgICBuZXcgKHN0b3JhZ2VQb2ludGVyKCkpIFQoc3RkOjptb3ZlKCpvdGhlci5z
dG9yYWdlUG9pbnRlcigpKSk7Ci0rICAgIH0KLSsKLSsgICAgb3BlcmF0b3IgVCYoKSB7IHJldHVy
biAqc3RvcmFnZVBvaW50ZXIoKTsgfQotKyAgICBUJiBnZXQoKSB7IHJldHVybiAqc3RvcmFnZVBv
aW50ZXIoKTsgfQotKwotKyAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgcmV0dXJuICpz
dG9yYWdlUG9pbnRlcigpOyB9Ci0rICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpz
dG9yYWdlUG9pbnRlcigpOyB9Ci0rCi0rcHJpdmF0ZToKLSsgICAgTmV2ZXJEZXN0cm95ZWQoY29u
c3QgTmV2ZXJEZXN0cm95ZWQmKSA9IGRlbGV0ZTsKLSsgICAgTmV2ZXJEZXN0cm95ZWQmIG9wZXJh
dG9yPShjb25zdCBOZXZlckRlc3Ryb3llZCYpID0gZGVsZXRlOwotKwotKyAgICB1c2luZyBQb2lu
dGVyVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlKjsKLSsKLSsgICAg
UG9pbnRlclR5cGUgc3RvcmFnZVBvaW50ZXIoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFBv
aW50ZXJUeXBlPihyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPigmbV9zdG9yYWdlKSk7IH0KLSsK
LSsgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIHdoZXRoZXIgd2Ugc2hvdWxkIGFsbG9jYXRlIGEg
aHVuayBvZiB2aXJ0dWFsIG1lbW9yeQotKyAgICAvLyBhbmQgaGFuZCBvdXQgY2h1bmtzIG9mIGl0
IHRvIE5ldmVyRGVzdHJveWVkIGluc3RlYWQsIHRvIHJlZHVjZSBmcmFnbWVudGF0aW9uLgotKyAg
ICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50
X29mPFQ+Ojp2YWx1ZT46OnR5cGUgbV9zdG9yYWdlOwotK307Ci0rCi0rdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIE5ldmVyRGVzdHJveWVkPFQ+IG1ha2VOZXZlckRlc3Ryb3llZChUJiYgYXJn
dW1lbnQpCi0rewotKyAgICByZXR1cm4gTmV2ZXJEZXN0cm95ZWQ8VD4oc3RkOjptb3ZlKGFyZ3Vt
ZW50KSk7Ci0rfQotKwotK30gLy8gbmFtZXNwYWNlIHJ0YwotZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL3NhZmVf
Y29udmVyc2lvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaAotaW5kZXggNThlZmNhYTc0NmEu
LjQ4YzIxMmU0ZDQ5IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oCi0rKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmlj
cy9zYWZlX2NvbnZlcnNpb25zLmgKLUBAIC02MywxMSArNjMsMTEgQEAgaW5saW5lIERzdCBzYXR1
cmF0ZWRfY2FzdChTcmMgdmFsdWUpIHsKLSAKLSAgICAgLy8gU2hvdWxkIGZhaWwgb25seSBvbiBh
dHRlbXB0aW5nIHRvIGFzc2lnbiBOYU4gdG8gYSBzYXR1cmF0ZWQgaW50ZWdlci4KLSAgICAgY2Fz
ZSBpbnRlcm5hbDo6VFlQRV9JTlZBTElEOgotLSAgICAgIEZBVEFMKCk7Ci0rICAgICAgUlRDX0ZB
VEFMKCk7Ci0gICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8RHN0Pjo6bWF4KCk7Ci0g
ICB9Ci0gCi0tICBGQVRBTCgpOwotKyAgUlRDX0ZBVEFMKCk7Ci0gICByZXR1cm4gc3RhdGljX2Nh
c3Q8RHN0Pih2YWx1ZSk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xj
ZXJ0aWZpY2F0ZS5jYwotaW5kZXggZWQ2N2E4OTM4ZTEuLjIzNmJlZjU1YzhhIDEwMDY0NAotLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3Bl
bnNzbGNlcnRpZmljYXRlLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MKLUBAIC0yNTYsMTEgKzI1
NiwxMSBAQCBPcGVuU1NMQ2VydGlmaWNhdGUqIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6R2V0UmVmZXJl
bmNlKCkgY29uc3QgewotIHN0ZDo6c3RyaW5nIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9QRU1TdHJp
bmcoKSBjb25zdCB7Ci0gICBCSU8qIGJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOwotICAgaWYg
KCFiaW8pIHsKLS0gICAgRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7Ci0rICAgIFJUQ19G
QVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSAgIH0KLSAgIGlmICghUEVNX3dyaXRlX2Jp
b19YNTA5KGJpbywgeDUwOV8pKSB7Ci0gICAgIEJJT19mcmVlKGJpbyk7Ci0tICAgIEZBVEFMKCkg
PDwgInVucmVhY2hhYmxlIGNvZGUiOwotKyAgICBSVENfRkFUQUwoKSA8PCAidW5yZWFjaGFibGUg
Y29kZSI7Ci0gICB9Ci0gICBCSU9fd3JpdGUoYmlvLCAiXDAiLCAxKTsKLSAgIGNoYXIqIGJ1ZmZl
cjsKLUBAIC0yNzcsMTEgKzI3NywxMSBAQCB2b2lkIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9ERVIo
QnVmZmVyKiBkZXJfYnVmZmVyKSBjb25zdCB7Ci0gICAvLyBDYWxjdWxhdGVzIHRoZSBERVIgcmVw
cmVzZW50YXRpb24gb2YgdGhlIGNlcnRpZmljYXRlLCBmcm9tIHNjcmF0Y2guCi0gICBCSU8qIGJp
byA9IEJJT19uZXcoQklPX3NfbWVtKCkpOwotICAgaWYgKCFiaW8pIHsKLS0gICAgRkFUQUwoKSA8
PCAidW5yZWFjaGFibGUgY29kZSI7Ci0rICAgIFJUQ19GQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBj
b2RlIjsKLSAgIH0KLSAgIGlmICghaTJkX1g1MDlfYmlvKGJpbywgeDUwOV8pKSB7Ci0gICAgIEJJ
T19mcmVlKGJpbyk7Ci0tICAgIEZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotKyAgICBS
VENfRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7Ci0gICB9Ci0gICBjaGFyKiBkYXRhOwot
ICAgc2l6ZV90IGxlbmd0aCA9IEJJT19nZXRfbWVtX2RhdGEoYmlvLCAmZGF0YSk7Ci1kaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c3RyaW5naXplX21hY3Jvcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oCi1pbmRleCBhZWU4ZDE0NTUxZC4uMzhj
NmYxODM2YmQgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2l6ZV9tYWNyb3MuaAot
QEAgLTgsNyArOCw3IEBACi0gICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICAqLwotIAotLS8vIE1vZGlmaWVkIGZyb20gdGhl
IENocm9taXVtIG9yaWdpbmFsOgotKy8vIE1vZGlmaWVkIGZyb20gdGhlIENoeHNyb21pdW0gb3Jp
Z2luYWw6Ci0gLy8gc3JjL2Jhc2Uvc3RyaW5ncy9zdHJpbmdpemVfbWFjcm9zLmgKLSAKLSAvLyBU
aGlzIGZpbGUgZGVmaW5lcyBwcmVwcm9jZXNzb3IgbWFjcm9zIGZvciBzdHJpbmdpemluZyBwcmVw
cm9jZXNzb3IKLUBAIC0zMyw2ICszMyw2IEBACi0gLy8gVGhlbjoKLSAvLyAgIFNUUklOR0laRShB
KSBwcm9kdWNlcyAiRk9PIgotIC8vICAgU1RSSU5HSVpFKEIoeSkpIHByb2R1Y2VzICJteW9iai0+
RnVuY3Rpb25DYWxsKHkpIgotLSNkZWZpbmUgU1RSSU5HSVpFKHgpIFNUUklOR0laRV9OT19FWFBB
TlNJT04oeCkKLSsjZGVmaW5lIFJUQ19TVFJJTkdJWkUoeCkgU1RSSU5HSVpFX05PX0VYUEFOU0lP
Tih4KQotIAotICNlbmRpZiAgLy8gUlRDX0JBU0VfU1RSSU5HSVpFX01BQ1JPU19IXwotZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNjCi1pbmRleCA1M2RhZDQ2
ZmNlZC4uYWU0MGQ3ODg4ZjUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNjCi0rKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFs
c29ja2V0c2VydmVyLmNjCi1AQCAtMTAyNyw5ICsxMDI3LDggQEAgdm9pZCBWaXJ0dWFsU29ja2V0
U2VydmVyOjpVcGRhdGVEZWxheURpc3RyaWJ1dGlvbigpIHsKLSAgIH0KLSB9Ci0gCi0tc3RhdGlj
IGRvdWJsZSBQSSA9IDQgKiBhdGFuKDEuMCk7Ci0tCi0gc3RhdGljIGRvdWJsZSBOb3JtYWwoZG91
YmxlIHgsIGRvdWJsZSBtZWFuLCBkb3VibGUgc3RkZGV2KSB7Ci0rICBzdGF0aWMgY29uc3QgZG91
YmxlIFBJID0gNCAqIGF0YW4oMS4wKTsKLSAgIGRvdWJsZSBhID0gKHggLSBtZWFuKSAqICh4IC0g
bWVhbikgLyAoMiAqIHN0ZGRldiAqIHN0ZGRldik7Ci0gICByZXR1cm4gZXhwKC1hKSAvIChzdGRk
ZXYgKiBzcXJ0KDIgKiBQSSkpOwotIH0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy9QZWVyQ29u
bmVjdGlvbi9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy9QZWVyQ29ubmVj
dGlvbi9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl
eCAwMDAwMDAwMDAwMC4uMDRhNTY4OTQxN2MKLS0tLSAvZGV2L251bGwKLSsrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL0ZyYW1ld29yay9DbGFz
c2VzL1BlZXJDb25uZWN0aW9uL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbQotQEAgLTAsMCArMSw1
OCBAQAotKy8qCi0rICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotKyAqCi0rICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSsgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0rICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSsgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQotKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSsgKgotKyAqLwotKwotKyNpbXBvcnQgIldlYlJU
Qy9SVENWaWRlb0NvZGVjSDI2NC5oIgotKwotKyNpbmNsdWRlICJtZWRpYS9iYXNlL2gyNjRfcHJv
ZmlsZV9sZXZlbF9pZC5oIgotKwotK0BpbnRlcmZhY2UgUlRDSDI2NFByb2ZpbGVMZXZlbElkICgp
Ci0rCi0rQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENIMjY0UHJvZmlsZSBwcm9maWxl
OwotK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgUlRDSDI2NExldmVsIGxldmVsOwotK0Bw
cm9wZXJ0eShub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKmhleFN0cmluZzsKLSsKLStAZW5k
Ci0rCi0rQGltcGxlbWVudGF0aW9uIFJUQ0gyNjRQcm9maWxlTGV2ZWxJZAotKwotK0BzeW50aGVz
aXplIHByb2ZpbGUgPSBfcHJvZmlsZTsKLStAc3ludGhlc2l6ZSBsZXZlbCA9IF9sZXZlbDsKLStA
c3ludGhlc2l6ZSBoZXhTdHJpbmcgPSBfaGV4U3RyaW5nOwotKwotKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEhleFN0cmluZzooTlNTdHJpbmcgKiloZXhTdHJpbmcgewotKyAgaWYgKHNlbGYgPSBb
c3VwZXIgaW5pdF0pIHsKLSsgICAgc2VsZi5oZXhTdHJpbmcgPSBoZXhTdHJpbmc7Ci0rCi0rICAg
IGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6SDI2NDo6UHJvZmlsZUxldmVsSWQ+IHByb2ZpbGVfbGV2
ZWxfaWQgPQotKyAgICAgICAgd2VicnRjOjpIMjY0OjpQYXJzZVByb2ZpbGVMZXZlbElkKFtoZXhT
dHJpbmcgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKLSsgICAg
aWYgKHByb2ZpbGVfbGV2ZWxfaWQuaGFzX3ZhbHVlKCkpIHsKLSsgICAgICBzZWxmLnByb2ZpbGUg
PSBzdGF0aWNfY2FzdDxSVENIMjY0UHJvZmlsZT4ocHJvZmlsZV9sZXZlbF9pZC0+cHJvZmlsZSk7
Ci0rICAgICAgc2VsZi5sZXZlbCA9IHN0YXRpY19jYXN0PFJUQ0gyNjRMZXZlbD4ocHJvZmlsZV9s
ZXZlbF9pZC0+bGV2ZWwpOwotKyAgICB9Ci0rICB9Ci0rICByZXR1cm4gc2VsZjsKLSt9Ci0rCi0r
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvZmlsZTooUlRDSDI2NFByb2ZpbGUpcHJvZmlsZSBs
ZXZlbDooUlRDSDI2NExldmVsKWxldmVsIHsKLSsgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7
Ci0rICAgIHNlbGYucHJvZmlsZSA9IHByb2ZpbGU7Ci0rICAgIHNlbGYubGV2ZWwgPSBsZXZlbDsK
LSsKLSsgICAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IGhleF9zdHJpbmcgPQotKyAgICAg
ICAgd2VicnRjOjpIMjY0OjpQcm9maWxlTGV2ZWxJZFRvU3RyaW5nKHdlYnJ0Yzo6SDI2NDo6UHJv
ZmlsZUxldmVsSWQoCi0rICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d2VicnRjOjpIMjY0OjpQcm9m
aWxlPihwcm9maWxlKSwgc3RhdGljX2Nhc3Q8d2VicnRjOjpIMjY0OjpMZXZlbD4obGV2ZWwpKSk7
Ci0rICAgIHNlbGYuaGV4U3RyaW5nID0KLSsgICAgICAgIFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0
cmluZzpoZXhfc3RyaW5nLnZhbHVlX29yKCIiKS5jX3N0cigpIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXTsKLSsgIH0KLSsgIHJldHVybiBzZWxmOwotK30KLSsKLStAZW5kCi1kaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1tIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0
aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1tCi1pbmRleCA2ZjJkMWY0NmQ5Yy4uOTRjYjFm
MTEwZjkgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUu
bW0KLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbQotQEAgLTM1
LDYgKzM1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlRW5jb2RlZEltYWdlOih3
ZWJydGM6OkVuY29kZWRJbWFnZSllbmNvZGVkSW1hZ2UgewotICAgICBzZWxmLmNvbnRlbnRUeXBl
ID0gKGVuY29kZWRJbWFnZS5jb250ZW50X3R5cGVfID09IHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlw
ZTo6U0NSRUVOU0hBUkUpID8KLSAgICAgICAgIFJUQ1ZpZGVvQ29udGVudFR5cGVTY3JlZW5zaGFy
ZSA6Ci0gICAgICAgICBSVENWaWRlb0NvbnRlbnRUeXBlVW5zcGVjaWZpZWQ7Ci0rICAgIHNlbGYu
c3BhdGlhbEluZGV4ID0gZW5jb2RlZEltYWdlLlNwYXRpYWxJbmRleCgpID8gKmVuY29kZWRJbWFn
ZS5TcGF0aWFsSW5kZXgoKSA6IDA7Ci0gICB9Ci0gCi0gICByZXR1cm4gc2VsZjsKLUBAIC01OSw3
ICs2MCw4IEBAIC0gKHdlYnJ0Yzo6RW5jb2RlZEltYWdlKW5hdGl2ZUVuY29kZWRJbWFnZSB7Ci0g
ICBlbmNvZGVkSW1hZ2UuY29udGVudF90eXBlXyA9IChzZWxmLmNvbnRlbnRUeXBlID09IFJUQ1Zp
ZGVvQ29udGVudFR5cGVTY3JlZW5zaGFyZSkgPwotICAgICAgIHdlYnJ0Yzo6VmlkZW9Db250ZW50
VHlwZTo6U0NSRUVOU0hBUkUgOgotICAgICAgIHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6VU5T
UEVDSUZJRUQ7Ci0tCi0rICBpZiAoc2VsZi5zcGF0aWFsSW5kZXgpCi0rICAgIGVuY29kZWRJbWFn
ZS5TZXRTcGF0aWFsSW5kZXgoc2VsZi5zcGF0aWFsSW5kZXgpOwotICAgcmV0dXJuIGVuY29kZWRJ
bWFnZTsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEVuY29kaW5nUGFy
YW1ldGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5oCi1pbmRl
eCBiYTUwYmRlNjQ5Zi4uZGFiZmY3MjVhYmIgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRD
UnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENSdHBFbmNvZGlu
Z1BhcmFtZXRlcnMuaAotQEAgLTE1LDYgKzE1LDcgQEAKLSBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgotIAotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1l
KCJXS19SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMiKSkpCi0gQGludGVyZmFjZSBSVENSdHBFbmNv
ZGluZ1BhcmFtZXRlcnMgOiBOU09iamVjdAotIAotIC8qKiBDb250cm9scyB3aGV0aGVyIHRoZSBl
bmNvZGluZyBpcyBjdXJyZW50bHkgdHJhbnNtaXR0ZWQuICovCi1kaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25u
ZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLmgKLWluZGV4IDViMDYyNDU1YmMwLi43MmFm
NzMyYjIzYiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5n
cytQcml2YXRlLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQ
cml2YXRlLmgKLUBAIC0yMiw0ICsyMiwxMSBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotIAot
IEBlbmQKLSAKLStAaW50ZXJmYWNlIFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gKFByaXZhdGUp
Ci0rCi0rLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlv
bjooY29uc3Qgd2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uICpfX251bGxhYmxlKXZpZGVv
Qml0cmF0ZUFsbG9jYXRpb247Ci0rLSAod2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uKW5h
dGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb247Ci0rCi0rQGVuZAotKwotIE5TX0FTU1VNRV9OT05O
VUxMX0VORAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5n
cytQcml2YXRlLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZh
dGUubW0KLWluZGV4IDZmYjgxZGJiOGFmLi44MmI1YmE3YmMwZiAxMDA2NDQKLS0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29u
bmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLm1tCi0rKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5l
Y3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5tbQotQEAgLTEyLDYgKzEyLDIz
IEBACi0gCi0gI2ltcG9ydCAiaGVscGVycy9OU1N0cmluZytTdGRTdHJpbmcuaCIKLSAKLStAaW1w
bGVtZW50YXRpb24gUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MgewotKyAgd2VicnRjOjpWaWRlb0Nv
ZGVjIF9uYXRpdmVWaWRlb0NvZGVjOwotK30KLSsKLStAc3ludGhlc2l6ZSBuYW1lID0gX25hbWU7
Ci0rQHN5bnRoZXNpemUgd2lkdGggPSBfd2lkdGg7Ci0rQHN5bnRoZXNpemUgaGVpZ2h0ID0gX2hl
aWdodDsKLStAc3ludGhlc2l6ZSBzdGFydEJpdHJhdGUgPSBfc3RhcnRCaXRyYXRlOwotK0BzeW50
aGVzaXplIG1heEJpdHJhdGUgPSBfbWF4Qml0cmF0ZTsKLStAc3ludGhlc2l6ZSBtaW5CaXRyYXRl
ID0gX21pbkJpdHJhdGU7Ci0rQHN5bnRoZXNpemUgdGFyZ2V0Qml0cmF0ZSA9IF90YXJnZXRCaXRy
YXRlOwotK0BzeW50aGVzaXplIG1heEZyYW1lcmF0ZSA9IF9tYXhGcmFtZXJhdGU7Ci0rQHN5bnRo
ZXNpemUgcXBNYXggPSBfcXBNYXg7Ci0rQHN5bnRoZXNpemUgbW9kZSA9IF9tb2RlOwotKwotK0Bl
bmQKLSsKLSBAaW1wbGVtZW50YXRpb24gUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MgKFByaXZhdGUp
Ci0gCi0gLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlVmlkZW9Db2RlYzooY29uc3Qgd2Vi
cnRjOjpWaWRlb0NvZGVjICopdmlkZW9Db2RlYyB7Ci1AQCAtMjAsNiArMzcsNyBAQCAtIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhOYXRpdmVWaWRlb0NvZGVjOihjb25zdCB3ZWJydGM6OlZpZGVvQ29k
ZWMgKil2aWRlb0NvZGVjCi0gICAgICAgY29uc3QgY2hhciAqY29kZWNOYW1lID0gQ29kZWNUeXBl
VG9QYXlsb2FkU3RyaW5nKHZpZGVvQ29kZWMtPmNvZGVjVHlwZSk7Ci0gICAgICAgc2VsZi5uYW1l
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmNvZGVjTmFtZV07Ci0gCi0rICAgICAg
X25hdGl2ZVZpZGVvQ29kZWMgPSAqdmlkZW9Db2RlYzsKLSAgICAgICBzZWxmLndpZHRoID0gdmlk
ZW9Db2RlYy0+d2lkdGg7Ci0gICAgICAgc2VsZi5oZWlnaHQgPSB2aWRlb0NvZGVjLT5oZWlnaHQ7
Ci0gICAgICAgc2VsZi5zdGFydEJpdHJhdGUgPSB2aWRlb0NvZGVjLT5zdGFydEJpdHJhdGU7Ci1A
QCAtMzYsMTggKzU0LDI4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZVZpZGVvQ29k
ZWM6KGNvbnN0IHdlYnJ0Yzo6VmlkZW9Db2RlYyAqKXZpZGVvQ29kZWMKLSB9Ci0gCi0gLSAod2Vi
cnRjOjpWaWRlb0NvZGVjKW5hdGl2ZVZpZGVvQ29kZWMgewotLSAgd2VicnRjOjpWaWRlb0NvZGVj
IHZpZGVvQ29kZWM7Ci0tICB2aWRlb0NvZGVjLndpZHRoID0gc2VsZi53aWR0aDsKLS0gIHZpZGVv
Q29kZWMuaGVpZ2h0ID0gc2VsZi5oZWlnaHQ7Ci0tICB2aWRlb0NvZGVjLnN0YXJ0Qml0cmF0ZSA9
IHNlbGYuc3RhcnRCaXRyYXRlOwotLSAgdmlkZW9Db2RlYy5tYXhCaXRyYXRlID0gc2VsZi5tYXhC
aXRyYXRlOwotLSAgdmlkZW9Db2RlYy5taW5CaXRyYXRlID0gc2VsZi5taW5CaXRyYXRlOwotLSAg
dmlkZW9Db2RlYy50YXJnZXRCaXRyYXRlID0gc2VsZi50YXJnZXRCaXRyYXRlOwotLSAgdmlkZW9D
b2RlYy5tYXhCaXRyYXRlID0gc2VsZi5tYXhCaXRyYXRlOwotLSAgdmlkZW9Db2RlYy5xcE1heCA9
IHNlbGYucXBNYXg7Ci0tICB2aWRlb0NvZGVjLm1vZGUgPSAod2VicnRjOjpWaWRlb0NvZGVjTW9k
ZSlzZWxmLm1vZGU7Ci0tCi0tICByZXR1cm4gdmlkZW9Db2RlYzsKLSsgIHJldHVybiBfbmF0aXZl
VmlkZW9Db2RlYzsKLSt9Ci0rCi0rQGVuZAotKwotK0BpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0Jp
dHJhdGVBbGxvY2F0aW9uIHsKLSsgIHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBfbmF0
aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsKLSt9Ci0rCi0rQGVuZAotKwotK0BpbXBsZW1lbnRh
dGlvbiBSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIChQcml2YXRlKQotKwotKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aE5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb246KGNvbnN0IHdlYnJ0Yzo6
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqKXZpZGVvQml0cmF0ZUFsbG9jYXRpb24gewotKyAgaWYg
KHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSsgICAgX25hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRp
b24gPSAqdmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsKLSsgIH0KLSsgIHJldHVybiBzZWxmOwotK30K
LSsKLSstICh3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRpb24pbmF0aXZlVmlkZW9CaXRyYXRl
QWxsb2NhdGlvbiB7Ci0rICByZXR1cm4gX25hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb247Ci0g
fQotIAotIEBlbmQKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50
cy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0NvZGVjQ29uc3RhbnRzLm1tCi1pbmRleCBhY2JmMTI2
MTcwYy4uMTQ0N2QzYjI3ZTEgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9Db2RlY0Nv
bnN0YW50cy5tbQotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29kZWNDb25zdGFudHMubW0KLUBA
IC0xMyw1ICsxMyw1IEBACi0gCi0gI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMu
aCIKLSAKLS1OU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNWcDhOYW1lID0gQChjcmlja2V0
OjprVnA4Q29kZWNOYW1lKTsKLS1OU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNWcDlOYW1l
ID0gQChjcmlja2V0OjprVnA5Q29kZWNOYW1lKTsKLStOU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVv
Q29kZWNWcDhOYW1lID0gQCJWUDgiOwotK05TU3RyaW5nICpjb25zdCBrUlRDVmlkZW9Db2RlY1Zw
OU5hbWUgPSBAIlZQOSI7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlclZQ
OC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlclZQOC5oCi1pbmRleCA4ZDg3YTg5ODkzMS4u
MDhkMTg1MDQyMjIgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyVlA4LmgK
LSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaAotQEAgLTE0LDYgKzE0LDcgQEAK
LSAjaW1wb3J0ICJSVENWaWRlb0VuY29kZXIuaCIKLSAKLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0
dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVyVlA4IikpKQot
IEBpbnRlcmZhY2UgUlRDVmlkZW9FbmNvZGVyVlA4IDogTlNPYmplY3QKLSAKLSAvKiBUaGlzIHJl
dHVybnMgYSBWUDggZW5jb2RlciB0aGF0IGNhbiBiZSByZXR1cm5lZCBmcm9tIGEgUlRDVmlkZW9F
bmNvZGVyRmFjdG9yeSBpbmplY3RlZCBpbnRvCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1dy
YXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDV3JhcHBlZE5hdGl2ZVZp
ZGVvRW5jb2Rlci5tbQotaW5kZXggOWFmZDU0ZjU1ZjUuLmI5NjM0Nzc5ZjFmIDEwMDY0NAotLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBp
L3ZpZGVvX2NvZGVjL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0KLSsrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19j
b2RlYy9SVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tCi1AQCAtNTgsNiArNTgsMTEgQEAg
LSAoaW50KXNldEJpdHJhdGU6KHVpbnQzMl90KWJpdHJhdGVLYml0IGZyYW1lcmF0ZToodWludDMy
X3QpZnJhbWVyYXRlIHsKLSAgIHJldHVybiAwOwotIH0KLSAKLSstIChpbnQpc2V0UmF0ZUFsbG9j
YXRpb246KG5vbm51bGwgUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqKWFsbG9jYXRpb24gZnJh
bWVyYXRlOih1aW50MzJfdClmcmFtZXJhdGUgewotKyAgUlRDX05PVFJFQUNIRUQoKTsKLSsgIHJl
dHVybiAwOwotK30KLSsKLSAtIChOU1N0cmluZyAqKWltcGxlbWVudGF0aW9uTmFtZSB7Ci0gICBS
VENfTk9UUkVBQ0hFRCgpOwotICAgcmV0dXJuIG5pbDsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVf
YnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZl
STQyMEJ1ZmZlci5oCi1pbmRleCA5YTkwNGY1Mzk2YS4uZGM5MDNiYzRiY2EgMTAwNjQ0Ci0tLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
dmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIuaAotKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1l
X2J1ZmZlci9SVENOYXRpdmVJNDIwQnVmZmVyLmgKLUBAIC0xNyw2ICsxNyw3IEBAIE5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCi0gCi0gLyoqIFJUQ0k0MjBCdWZmZXIgaW1wbGVtZW50cyB0aGUgUlRD
STQyMEJ1ZmZlciBwcm90b2NvbCAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18o
KG9iamNfcnVudGltZV9uYW1lKCJXS19SVENJNDIwQnVmZmVyIikpKQotIEBpbnRlcmZhY2UgUlRD
STQyMEJ1ZmZlciA6IE5TT2JqZWN0PFJUQ0k0MjBCdWZmZXI+Ci0gQGVuZAotIAotZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19m
cmFtZV9idWZmZXIvUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIuaAotaW5kZXggNmNkNTExMDQ2
MGIuLjdjZmE5NTBhYmI2IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVN
dXRhYmxlSTQyMEJ1ZmZlci5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZU11dGFi
bGVJNDIwQnVmZmVyLmgKLUBAIC0xOCw2ICsxOCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lO
Ci0gCi0gLyoqIE11dGFibGUgdmVyc2lvbiBvZiBSVENJNDIwQnVmZmVyICovCi0gUlRDX09CSkNf
RVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ011dGFibGVJ
NDIwQnVmZmVyIikpKQotIEBpbnRlcmZhY2UgUlRDTXV0YWJsZUk0MjBCdWZmZXIgOiBSVENJNDIw
QnVmZmVyPFJUQ011dGFibGVJNDIwQnVmZmVyPgotIEBlbmQKLSAKLWRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0Nv
ZGVjU3BlY2lmaWNJbmZvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmgKLWluZGV4IGUyYWU0Y2Fm
YTExLi45ZGM0NGMxMmFmOCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDQ29kZWNTcGVjaWZpY0luZm8uaAotKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFz
ZS9SVENDb2RlY1NwZWNpZmljSW5mby5oCi1AQCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgotICAqICBDb3JyZXNwb25kcyB0byB3ZWJydGM6OkNvZGVjU3BlY2lmaWNJbmZv
LgotICAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9u
YW1lKCJXS19SVENDb2RlY1NwZWNpZmljSW5mbyIpKSkKLSBAcHJvdG9jb2wgUlRDQ29kZWNTcGVj
aWZpY0luZm8gPE5TT2JqZWN0PgotIEBlbmQKLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFn
ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YmFzZS9SVENFbmNvZGVkSW1hZ2UuaAotaW5kZXggNjcwYzcyNzZmZjcuLjc5OTRjZTY0YTFmIDEw
MDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UuaAotQEAg
LTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFJUQ1ZpZGVvQ29udGVu
dFR5cGUpIHsKLSAKLSAvKiogUmVwcmVzZW50cyBhbiBlbmNvZGVkIGZyYW1lLiBDb3JyZXNwb25k
cyB0byB3ZWJydGM6OkVuY29kZWRJbWFnZS4gKi8KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJp
YnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDRW5jb2RlZEltYWdlIikpKQotIEBpbnRl
cmZhY2UgUlRDRW5jb2RlZEltYWdlIDogTlNPYmplY3QKLSAKLSBAcHJvcGVydHkobm9uYXRvbWlj
LCBzdHJvbmcpIE5TRGF0YSAqYnVmZmVyOwotQEAgLTQ3LDYgKzQ4LDcgQEAgUlRDX09CSkNfRVhQ
T1JUCi0gQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIGNvbXBsZXRlRnJhbWU7Ci0g
QHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBOU051bWJlciAqcXA7Ci0gQHByb3BlcnR5KG5v
bmF0b21pYywgYXNzaWduKSBSVENWaWRlb0NvbnRlbnRUeXBlIGNvbnRlbnRUeXBlOwotK0Bwcm9w
ZXJ0eShub25hdG9taWMsIGFzc2lnbikgaW50IHNwYXRpYWxJbmRleDsKLSAKLSBAZW5kCi0gCi1k
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UubSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLm0KLWluZGV4IDAy
NGE1N2M1NDFiLi44NWNkNWUyOThlNCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLm0KLSsr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UvUlRDRW5jb2RlZEltYWdlLm0KLUBAIC0yNiw1ICsyNiw2IEBAIEBpbXBsZW1lbnRhdGlvbiBS
VENFbmNvZGVkSW1hZ2UKLSBAc3ludGhlc2l6ZSBjb21wbGV0ZUZyYW1lID0gX2NvbXBsZXRlRnJh
bWU7Ci0gQHN5bnRoZXNpemUgcXAgPSBfcXA7Ci0gQHN5bnRoZXNpemUgY29udGVudFR5cGUgPSBf
Y29udGVudFR5cGU7Ci0rQHN5bnRoZXNpemUgc3BhdGlhbEluZGV4ID0gX3NwYXRpYWxJbmRleDsK
LSAKLSBAZW5kCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENJNDIwQnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0k0MjBCdWZmZXIuaAot
aW5kZXggYTZjN2U0MWJjYmEuLmNmYTE0ZjhhZjIzIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENJNDIwQnVmZmVy
LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2Jhc2UvUlRDSTQyMEJ1ZmZlci5oCi1AQCAtMTYsNiArMTYsNyBAQCBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgotIAotIC8qKiBQcm90b2NvbCBmb3IgUlRDWVVWUGxhbmFyQnVmZmVycyBjb250
YWluaW5nIEk0MjAgZGF0YSAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9i
amNfcnVudGltZV9uYW1lKCJXS19SVENJNDIwQnVmZmVyIikpKQotIEBwcm90b2NvbCBSVENJNDIw
QnVmZmVyIDxSVENZVVZQbGFuYXJCdWZmZXI+Ci0gQGVuZAotIAotZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRw
RnJhZ21lbnRhdGlvbkhlYWRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLmgKLWluZGV4
IDJlMjZiMDhiOGFmLi5mYmJjNjhhOGVmNiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlv
bkhlYWRlci5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIuaAotQEAgLTE2LDYgKzE2
LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLSAKLSAvKiogSW5mb3JtYXRpb24gZm9yIGhl
YWRlci4gQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyLiAqLwot
IFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19S
VENSdHBGcmFnbWVudGF0aW9uSGVhZGVyIikpKQotIEBpbnRlcmZhY2UgUlRDUnRwRnJhZ21lbnRh
dGlvbkhlYWRlciA6IE5TT2JqZWN0Ci0gCi0gQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBO
U0FycmF5PE5TTnVtYmVyICo+ICpmcmFnbWVudGF0aW9uT2Zmc2V0OwotZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRD
UnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0KLWlu
ZGV4IDgwNDlhYmM0MTFlLi42Y2YyMWRkYzJhMSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRh
dGlvbkhlYWRlci5tCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubQotQEAgLTE3LDQg
KzE3LDUgQEAgQGltcGxlbWVudGF0aW9uIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIKLSBAc3lu
dGhlc2l6ZSBmcmFnbWVudGF0aW9uVGltZURpZmYgPSBfZnJhZ21lbnRhdGlvblRpbWVEaWZmOwot
IEBzeW50aGVzaXplIGZyYWdtZW50YXRpb25QbFR5cGUgPSBfZnJhZ21lbnRhdGlvblBsVHlwZTsK
LSAKLS1AZW5kCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLStAZW5kCi0rCi1kaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YmFzZS9SVENWaWRlb0NvZGVjSW5mby5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0NvZGVjSW5mby5oCi1pbmRleCAyMTYy
Y2FhYTIxZi4uNGU2NDNkOTQzNDcgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvQ29kZWNJbmZvLmgKLSsr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UvUlRDVmlkZW9Db2RlY0luZm8uaAotQEAgLTE2LDYgKzE2LDcgQEAgTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KLSAKLSAvKiogSG9sZHMgaW5mb3JtYXRpb24gdG8gaWRlbnRpZnkgYSBjb2RlYy4g
Q29ycmVzcG9uZHMgdG8gd2VicnRjOjpTZHBWaWRlb0Zvcm1hdC4gKi8KLSBSVENfT0JKQ19FWFBP
UlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9Db2RlY0lu
Zm8iKSkpCi0gQGludGVyZmFjZSBSVENWaWRlb0NvZGVjSW5mbyA6IE5TT2JqZWN0IDxOU0NvZGlu
Zz4KLSAKLSAtIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKLWRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNl
L1JUQ1ZpZGVvRGVjb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXIuaAotaW5kZXggMThjNmY2YjAwMDYu
LjUzNDQyMGQzOTU1IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXIuaAotKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRl
b0RlY29kZXIuaAotQEAgLTIzLDYgKzIzLDcgQEAgdHlwZWRlZiB2b2lkICheUlRDVmlkZW9EZWNv
ZGVyQ2FsbGJhY2spKFJUQ1ZpZGVvRnJhbWUgKmZyYW1lKTsKLSAKLSAvKiogUHJvdG9jb2wgZm9y
IGRlY29kZXIgaW1wbGVtZW50YXRpb25zLiAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmli
dXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0RlY29kZXIiKSkpCi0gQHByb3Rv
Y29sIFJUQ1ZpZGVvRGVjb2RlciA8TlNPYmplY3Q+Ci0gCi0gLSAodm9pZClzZXRDYWxsYmFjazoo
UlRDVmlkZW9EZWNvZGVyQ2FsbGJhY2spY2FsbGJhY2s7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0Rl
Y29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuaAotaW5kZXggM2UyNDE1M2I4
MmMuLmNiOTVmYTNmMTM0IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXJGYWN0b3J5LmgKLSsr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS5oCi1AQCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgotIAotIC8qKiBSVENWaWRlb0RlY29kZXJGYWN0b3J5IGlzIGFuIE9iamVj
dGl2ZS1DIHZlcnNpb24gb2Ygd2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5LiAqLwotIFJUQ19P
QkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRl
b0RlY29kZXJGYWN0b3J5IikpKQotIEBwcm90b2NvbCBSVENWaWRlb0RlY29kZXJGYWN0b3J5IDxO
U09iamVjdD4KLSAKLSAtIChudWxsYWJsZSBpZDxSVENWaWRlb0RlY29kZXI+KWNyZWF0ZURlY29k
ZXI6KFJUQ1ZpZGVvQ29kZWNJbmZvICopaW5mbzsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2Rl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YmFzZS9SVENWaWRlb0VuY29kZXIuaAotaW5kZXggYzUyNTc2NzRkODMuLjUyOTFiYjEzNDJiIDEw
MDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaAotQEAg
LTE5LDcgKzE5LDExIEBACi0gI2ltcG9ydCAiUlRDVmlkZW9GcmFtZS5oIgotIAotIE5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCi0tCi0rLyoKLStuYW1lc3BhY2Ugd2VicnRjIHsKLStjbGFzcyBWaWRl
b0JpdHJhdGVBbGxvY2F0aW9uOwotK307Ci0rKi8KLSAvKiogQ2FsbGJhY2sgYmxvY2sgZm9yIGVu
Y29kZXIuICovCi0gdHlwZWRlZiBCT09MICheUlRDVmlkZW9FbmNvZGVyQ2FsbGJhY2spKFJUQ0Vu
Y29kZWRJbWFnZSAqZnJhbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlkPFJUQ0NvZGVjU3BlY2lmaWNJbmZvPiBpbmZvLAotQEAgLTI3LDYgKzMxLDcgQEAgdHlw
ZWRlZiBCT09MICheUlRDVmlkZW9FbmNvZGVyQ2FsbGJhY2spKFJUQ0VuY29kZWRJbWFnZSAqZnJh
bWUsCi0gCi0gLyoqIFByb3RvY29sIGZvciBlbmNvZGVyIGltcGxlbWVudGF0aW9ucy4gKi8KLSBS
VENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRD
VmlkZW9FbmNvZGVyIikpKQotIEBwcm90b2NvbCBSVENWaWRlb0VuY29kZXIgPE5TT2JqZWN0Pgot
IAotIC0gKHZvaWQpc2V0Q2FsbGJhY2s6KFJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrKWNhbGxiYWNr
OwotQEAgLTM3LDYgKzQyLDcgQEAgUlRDX09CSkNfRVhQT1JUCi0gICAgIGNvZGVjU3BlY2lmaWNJ
bmZvOihudWxsYWJsZSBpZDxSVENDb2RlY1NwZWNpZmljSW5mbz4paW5mbwotICAgICAgICAgICAg
ZnJhbWVUeXBlczooTlNBcnJheTxOU051bWJlciAqPiAqKWZyYW1lVHlwZXM7Ci0gLSAoaW50KXNl
dEJpdHJhdGU6KHVpbnQzMl90KWJpdHJhdGVLYml0IGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVy
YXRlOwotKy0gKGludClzZXRSYXRlQWxsb2NhdGlvbjogKFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRp
b24gKilhbGxvY2F0aW9uIGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlOwotIC0gKE5TU3Ry
aW5nICopaW1wbGVtZW50YXRpb25OYW1lOwotIAotIC8qKiBSZXR1cm5zIFFQIHNjYWxpbmcgc2V0
dGluZ3MgZm9yIGVuY29kZXIuIFRoZSBxdWFsaXR5IHNjYWxlciBhZGp1c3RzIHRoZSByZXNvbHV0
aW9uIGluIG9yZGVyIHRvCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJGYWN0b3J5LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JU
Q1ZpZGVvRW5jb2RlckZhY3RvcnkuaAotaW5kZXggMjBjNjAzZDZmZTYuLmNiZTllYTQ5MmFlIDEw
MDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJGYWN0b3J5LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVy
RmFjdG9yeS5oCi1AQCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotIAot
IC8qKiBSVENWaWRlb0VuY29kZXJGYWN0b3J5IGlzIGFuIE9iamVjdGl2ZS1DIHZlcnNpb24gb2Yg
d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5LiAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0
cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0VuY29kZXJGYWN0b3J5Iikp
KQotIEBwcm90b2NvbCBSVENWaWRlb0VuY29kZXJGYWN0b3J5IDxOU09iamVjdD4KLSAKLSAtIChu
dWxsYWJsZSBpZDxSVENWaWRlb0VuY29kZXI+KWNyZWF0ZUVuY29kZXI6KFJUQ1ZpZGVvQ29kZWNJ
bmZvICopaW5mbzsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9S
VENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaAotaW5kZXggMmI0OGY0NWNlMGEuLjY4Y2ZkNjZk
ZjQ3IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaAotKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENW
aWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaAotQEAgLTE2LDYgKzE2LDcgQEAgTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KLSAKLSAvKiogUVAgdGhyZXNob2xkcyBmb3IgZW5jb2Rlci4gQ29ycmVzcG9u
ZHMgdG8gd2VicnRjOjpWaWRlb0VuY29kZXI6OlFwVGhyZXNob2xkcy4gKi8KLSBSVENfT0JKQ19F
WFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNv
ZGVyUXBUaHJlc2hvbGRzIikpKQotIEBpbnRlcmZhY2UgUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hv
bGRzIDogTlNPYmplY3QKLSAKLSAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhUaHJlc2hvbGRzTG93
OihOU0ludGVnZXIpbG93IGhpZ2g6KE5TSW50ZWdlciloaWdoOwotZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlk
ZW9FbmNvZGVyU2V0dGluZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MuaAotaW5kZXggNjll
MDRjYWM3MGYuLmFlM2JmNWZiNWYxIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJTZXR0aW5n
cy5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLmgKLUBAIC0yMSw2ICsyMSw3IEBAIHR5
cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBSVENWaWRlb0NvZGVjTW9kZSkgewotIAotIC8qKiBT
ZXR0aW5ncyBmb3IgZW5jb2Rlci4gQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpWaWRlb0NvZGVjLiAq
LwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJX
S19SVENWaWRlb0VuY29kZXJTZXR0aW5ncyIpKSkKLSBAaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2Rl
clNldHRpbmdzIDogTlNPYmplY3QKLSAKLSBAcHJvcGVydHkobm9uYXRvbWljLCBzdHJvbmcpIE5T
U3RyaW5nICpuYW1lOwotQEAgLTQwLDQgKzQxLDkgQEAgUlRDX09CSkNfRVhQT1JUCi0gCi0gQGVu
ZAotIAotK1JUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1l
KCJXS19SVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIikpKQotK0BpbnRlcmZhY2UgUlRDVmlkZW9C
aXRyYXRlQWxsb2NhdGlvbiA6IE5TT2JqZWN0Ci0rQGVuZAotKwotIE5TX0FTU1VNRV9OT05OVUxM
X0VORAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lLmgKLWluZGV4
IDlhY2E3NDMzZjM0Li5iZGUwOWM1MGM5ZCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZS5oCi0r
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9i
YXNlL1JUQ1ZpZGVvRnJhbWUuaAotQEAgLTI2LDYgKzI2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgUlRDVmlkZW9Sb3RhdGlvbikgewotIAotIC8vIFJUQ1ZpZGVvRnJhbWUgaXMgYW4g
T2JqZWN0aXZlQyB2ZXJzaW9uIG9mIHdlYnJ0Yzo6VmlkZW9GcmFtZS4KLSBSVENfT0JKQ19FWFBP
UlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9GcmFtZSIp
KSkKLSBAaW50ZXJmYWNlIFJUQ1ZpZGVvRnJhbWUgOiBOU09iamVjdAotIAotIC8qKiBXaWR0aCB3
aXRob3V0IHJvdGF0aW9uIGFwcGxpZWQuICovCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lQnVm
ZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9iYXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaAotaW5kZXggYmI5ZTZmYmE2MzEuLjE4NmFkMDg4
OWJmIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmgKLSsrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFt
ZUJ1ZmZlci5oCi1AQCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotIAot
IC8vIFJUQ1ZpZGVvRnJhbWVCdWZmZXIgaXMgYW4gT2JqZWN0aXZlQyB2ZXJzaW9uIG9mIHdlYnJ0
Yzo6VmlkZW9GcmFtZUJ1ZmZlci4KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChv
YmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9GcmFtZUJ1ZmZlciIpKSkKLSBAcHJvdG9jb2wg
UlRDVmlkZW9GcmFtZUJ1ZmZlciA8TlNPYmplY3Q+Ci0gCi0gQHByb3BlcnR5KG5vbmF0b21pYywg
cmVhZG9ubHkpIGludCB3aWR0aDsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0Nv
ZGVjU3BlY2lmaWNJbmZvSDI2NC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmlj
SW5mb0gyNjQuaAotaW5kZXggZWNlOTU3MGExM2IuLmU5NDdkYzZlNjIzIDEwMDY0NAotLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9u
ZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQuaAotKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQuaAotQEAgLTEwLDcgKzEwLDcgQEAK
LSAKLSAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSAKLS0jaW1wb3J0ICJSVEND
b2RlY1NwZWNpZmljSW5mby5oIgotKyNpbXBvcnQgImJhc2UvUlRDQ29kZWNTcGVjaWZpY0luZm8u
aCIKLSAjaW1wb3J0ICJSVENNYWNyb3MuaCIKLSAKLSAvKiogQ2xhc3MgZm9yIEgyNjQgc3BlY2lm
aWMgY29uZmlnLiAqLwotQEAgLTIwLDYgKzIwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVn
ZXIsIFJUQ0gyNjRQYWNrZXRpemF0aW9uTW9kZSkgewotIH07Ci0gCi0gUlRDX09CSkNfRVhQT1JU
Ci0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0NvZGVjU3BlY2lmaWNJ
bmZvSDI2NCIpKSkKLSBAaW50ZXJmYWNlIFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NCA6IE5TT2Jq
ZWN0IDxSVENDb2RlY1NwZWNpZmljSW5mbz4KLSAKLSBAcHJvcGVydHkobm9uYXRvbWljLCBhc3Np
Z24pIFJUQ0gyNjRQYWNrZXRpemF0aW9uTW9kZSBwYWNrZXRpemF0aW9uTW9kZTsKLWRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9j
b21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25l
bnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5LmgKLWluZGV4IDdj
YTk0NjNhNTkzLi5kMTE0NjAzMDBkNSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRD
RGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENE
ZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oCi1AQCAtMTksNiArMTksNyBAQCBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgotICAqICBjb2RlY3MsIGNyZWF0ZSBjdXN0b20gaW1wbGVtZW50YXRpb25z
IG9mIFJUQ1ZpZGVvRW5jb2RlckZhY3RvcnkgYW5kIFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuCi0g
ICovCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUo
IldLX1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5IikpKQotIEBpbnRlcmZhY2UgUlRDRGVm
YXVsdFZpZGVvRGVjb2RlckZhY3RvcnkgOiBOU09iamVjdCA8UlRDVmlkZW9EZWNvZGVyRmFjdG9y
eT4KLSBAZW5kCi0gCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0Vmlk
ZW9FbmNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9FbmNv
ZGVyRmFjdG9yeS5oCi1pbmRleCBjNDVlNTQzNjJiMi4uOTMyMzI1NmNlYWQgMTAwNjQ0Ci0tLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5LmgKLSsrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkuaAotQEAgLTE5
LDYgKzE5LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLSAgKiAgY29kZWNzLCBjcmVhdGUg
Y3VzdG9tIGltcGxlbWVudGF0aW9ucyBvZiBSVENWaWRlb0VuY29kZXJGYWN0b3J5IGFuZCBSVENW
aWRlb0RlY29kZXJGYWN0b3J5LgotICAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRl
X18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeSIp
KSkKLSBAaW50ZXJmYWNlIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5IDogTlNPYmplY3Qg
PFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnk+Ci0gCi0gQHByb3BlcnR5KG5vbmF0b21pYywgcmV0YWlu
KSBSVENWaWRlb0NvZGVjSW5mbyAqcHJlZmVycmVkQ29kZWM7Ci1kaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxldmVsSWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRD
SDI2NFByb2ZpbGVMZXZlbElkLmgKLWluZGV4IDU2YjM1MzIxNWEyLi5kMDIyMjk3Njc0ZSAxMDA2
NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLmgKLSsrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLmgKLUBAIC00OCw2ICs0OCw3
IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBSVENIMjY0TGV2ZWwpIHsKLSB9OwotIAot
IFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19S
VENIMjY0UHJvZmlsZUxldmVsSWQiKSkpCi0gQGludGVyZmFjZSBSVENIMjY0UHJvZmlsZUxldmVs
SWQgOiBOU09iamVjdAotIAotIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBSVENIMjY0
UHJvZmlsZSBwcm9maWxlOwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFBy
b2ZpbGVMZXZlbElkLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxldmVsSWQu
bW0KLWluZGV4IDM1OTY1NmNiOTdiLi4yOGY1MjEzOWMxNyAxMDA2NDQKLS0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlk
ZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbQotQEAgLTE5LDIwICsxOSwzMCBAQAotICNpbmNsdWRl
ICJtZWRpYS9iYXNlL2gyNjRfcHJvZmlsZV9sZXZlbF9pZC5oIgotICNpbmNsdWRlICJtZWRpYS9i
YXNlL21lZGlhY29uc3RhbnRzLmgiCi0gCi0rI2lmICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJ
TEQpCi0gbmFtZXNwYWNlIHsKLSAKLSBOU1N0cmluZyAqTWF4U3VwcG9ydGVkUHJvZmlsZUxldmVs
Q29uc3RyYWluZWRIaWdoKCk7Ci0gTlNTdHJpbmcgKk1heFN1cHBvcnRlZFByb2ZpbGVMZXZlbENv
bnN0cmFpbmVkQmFzZWxpbmUoKTsKLSAKLSB9ICAvLyBuYW1lc3BhY2UKLSsjZW5kaWYKLSAKLS1O
U1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNIMjY0TmFtZSA9IEAoY3JpY2tldDo6a0gyNjRD
b2RlY05hbWUpOwotK05TU3RyaW5nICpjb25zdCBrUlRDVmlkZW9Db2RlY0gyNjROYW1lID0gQCJI
MjY0IjsKLSBOU1N0cmluZyAqY29uc3Qga1JUQ0xldmVsMzFDb25zdHJhaW5lZEhpZ2ggPSBAIjY0
MGMxZiI7Ci0gTlNTdHJpbmcgKmNvbnN0IGtSVENMZXZlbDMxQ29uc3RyYWluZWRCYXNlbGluZSA9
IEAiNDJlMDFmIjsKLSsKLSsjaWYgZGVmaW5lZChXRUJSVENfV0VCS0lUX0JVSUxEKQotK05TU3Ry
aW5nICpjb25zdCBrUlRDTWF4U3VwcG9ydGVkSDI2NFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkSGln
aCA9Ci0rICAgIEAiNjQwYzFmIjsKLStOU1N0cmluZyAqY29uc3Qga1JUQ01heFN1cHBvcnRlZEgy
NjRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEJhc2VsaW5lID0KLSsgICAgQCI0MmUwMWYiOwotKyNl
bHNlCi0gTlNTdHJpbmcgKmNvbnN0IGtSVENNYXhTdXBwb3J0ZWRIMjY0UHJvZmlsZUxldmVsQ29u
c3RyYWluZWRIaWdoID0KLSAgICAgTWF4U3VwcG9ydGVkUHJvZmlsZUxldmVsQ29uc3RyYWluZWRI
aWdoKCk7Ci0gTlNTdHJpbmcgKmNvbnN0IGtSVENNYXhTdXBwb3J0ZWRIMjY0UHJvZmlsZUxldmVs
Q29uc3RyYWluZWRCYXNlbGluZSA9Ci0gICAgIE1heFN1cHBvcnRlZFByb2ZpbGVMZXZlbENvbnN0
cmFpbmVkQmFzZWxpbmUoKTsKLSsjZW5kaWYKLSAKLSBuYW1lc3BhY2UgewotIAotQEAgLTUzLDYg
KzYzLDggQEAgTlNTdHJpbmcgKk1heFN1cHBvcnRlZExldmVsRm9yUHJvZmlsZShQcm9maWxlIHBy
b2ZpbGUpIHsKLSB9Ci0gI2VuZGlmCi0gCi0rI2lmICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJ
TEQpCi0rCi0gTlNTdHJpbmcgKk1heFN1cHBvcnRlZFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkQmFz
ZWxpbmUoKSB7Ci0gI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKLSAgIE5TU3RyaW5nICpwcm9maWxl
ID0gTWF4U3VwcG9ydGVkTGV2ZWxGb3JQcm9maWxlKHdlYnJ0Yzo6SDI2NDo6a1Byb2ZpbGVDb25z
dHJhaW5lZEJhc2VsaW5lKTsKLUBAIC03Myw2ICs4NSw4IEBAIE5TU3RyaW5nICpNYXhTdXBwb3J0
ZWRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEhpZ2goKSB7Ci0gICByZXR1cm4ga1JUQ0xldmVsMzFD
b25zdHJhaW5lZEhpZ2g7Ci0gfQotIAotKyNlbmRpZgotKwotIH0gIC8vIG5hbWVzcGFjZQotIAot
IEBpbnRlcmZhY2UgUlRDSDI2NFByb2ZpbGVMZXZlbElkICgpCi1kaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5oCi1pbmRleCA0ZmNmZjFkZmY3OS4uZmRhYmQ4
MDc0ODAgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckZhY3Rv
cnlIMjY0LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgy
NjQuaAotQEAgLTE0LDUgKzE0LDYgQEAKLSAjaW1wb3J0ICJSVENWaWRlb0RlY29kZXJGYWN0b3J5
LmgiCi0gCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25h
bWUoIldLX1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0IikpKQotIEBpbnRlcmZhY2UgUlRDVmlk
ZW9EZWNvZGVyRmFjdG9yeUgyNjQgOiBOU09iamVjdCA8UlRDVmlkZW9EZWNvZGVyRmFjdG9yeT4K
LSBAZW5kCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9j
b21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQuaAotaW5kZXggYjg2MDI3
NjIwNmMuLmIxMGQxZTZhMDk5IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRl
b0RlY29kZXJIMjY0LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2
NC5oCi1AQCAtMTQsNSArMTQsNiBAQAotICNpbXBvcnQgIlJUQ1ZpZGVvRGVjb2Rlci5oIgotIAot
IFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19S
VENWaWRlb0RlY29kZXJIMjY0IikpKQotIEBpbnRlcmZhY2UgUlRDVmlkZW9EZWNvZGVySDI2NCA6
IE5TT2JqZWN0IDxSVENWaWRlb0RlY29kZXI+Ci0gQGVuZAotZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlk
ZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMv
UlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQuaAotaW5kZXggYzY0NDA1ZTRkYWMuLjVmNmY3OGRm
YTlhIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJGYWN0b3J5
SDI2NC5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0
LmgKLUBAIC0xNCw1ICsxNCw2IEBACi0gI2ltcG9ydCAiUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5o
IgotIAotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1l
KCJXS19SVENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NCIpKSkKLSBAaW50ZXJmYWNlIFJUQ1ZpZGVv
RW5jb2RlckZhY3RvcnlIMjY0IDogTlNPYmplY3QgPFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnk+Ci0g
QGVuZAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0LmgKLWluZGV4IGE5YzA1NTgw
YTQxLi43NzE0YjI1ZWFhNCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9F
bmNvZGVySDI2NC5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQu
aAotQEAgLTE1LDYgKzE1LDcgQEAKLSAjaW1wb3J0ICJSVENWaWRlb0VuY29kZXIuaCIKLSAKLSBS
VENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRD
VmlkZW9FbmNvZGVySDI2NCIpKSkKLSBAaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlckgyNjQgOiBO
U09iamVjdCA8UlRDVmlkZW9FbmNvZGVyPgotIAotIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENv
ZGVjSW5mbzooUlRDVmlkZW9Db2RlY0luZm8gKiljb2RlY0luZm87Ci1kaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9S
VENWaWRlb0VuY29kZXJIMjY0Lm1tCi1pbmRleCAxNmFkMWZmNDdhYS4uOTAxM2JhOTYyZmIgMTAw
NjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQubW0KLSsrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5tbQotQEAgLTksMzkgKzksNzIg
QEAKLSAgKgotICAqLwotIAotLSNpbXBvcnQgIlJUQ1ZpZGVvRW5jb2RlckgyNjQuaCIKLSsjaW1w
b3J0ICJXZWJSVEMvUlRDVmlkZW9Db2RlY0gyNjQuaCIKLSAKLSAjaW1wb3J0IDxWaWRlb1Rvb2xi
b3gvVmlkZW9Ub29sYm94Lmg+Ci0gI2luY2x1ZGUgPHZlY3Rvcj4KLSAKLSAjaWYgZGVmaW5lZChX
RUJSVENfSU9TKQotLSNpbXBvcnQgImhlbHBlcnMvVUlEZXZpY2UrUlRDRGV2aWNlLmgiCi0rI2lt
cG9ydCAiQ29tbW9uL1JUQ1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZlci5oIgotKyNpbXBvcnQg
IldlYlJUQy9VSURldmljZStSVENEZXZpY2UuaCIKLSAjZW5kaWYKLS0jaW1wb3J0ICJSVENDb2Rl
Y1NwZWNpZmljSW5mb0gyNjQuaCIKLS0jaW1wb3J0ICJSVENIMjY0UHJvZmlsZUxldmVsSWQuaCIK
LS0jaW1wb3J0ICJhcGkvcGVlcmNvbm5lY3Rpb24vUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlcitQ
cml2YXRlLmgiCi0tI2ltcG9ydCAiYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvQ29kZWNJbmZv
K1ByaXZhdGUuaCIKLS0jaW1wb3J0ICJiYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmgiCi0tI2lt
cG9ydCAiYmFzZS9SVENJNDIwQnVmZmVyLmgiCi0tI2ltcG9ydCAiYmFzZS9SVENWaWRlb0VuY29k
ZXIuaCIKLS0jaW1wb3J0ICJiYXNlL1JUQ1ZpZGVvRnJhbWUuaCIKLS0jaW1wb3J0ICJiYXNlL1JU
Q1ZpZGVvRnJhbWVCdWZmZXIuaCIKLS0jaW1wb3J0ICJjb21wb25lbnRzL3ZpZGVvX2ZyYW1lX2J1
ZmZlci9SVENDVlBpeGVsQnVmZmVyLmgiCi0tI2ltcG9ydCAiaGVscGVycy5oIgotLQotKyNpbXBv
cnQgIlBlZXJDb25uZWN0aW9uL1JUQ1ZpZGVvQ29kZWMrUHJpdmF0ZS5oIgotKyNpbXBvcnQgIldl
YlJUQy9SVENWaWRlb0NvZGVjLmgiCi0rI2ltcG9ydCAiV2ViUlRDL1JUQ1ZpZGVvRnJhbWUuaCIK
LSsjaW1wb3J0ICJXZWJSVEMvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIgotICNpbmNsdWRlICJjb21t
b25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuaCIKLSAjaW5jbHVkZSAiY29tbW9u
X3ZpZGVvL2gyNjQvcHJvZmlsZV9sZXZlbF9pZC5oIgotICNpbmNsdWRlICJjb21tb25fdmlkZW8v
aW5jbHVkZS9iaXRyYXRlX2FkanVzdGVyLmgiCi0rI2ltcG9ydCAiaGVscGVycy5oIgotICNpbmNs
dWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgotICNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vycm9yX2NvZGVzLmgiCi0gI2luY2x1
ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgotICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0g
I2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgotLSNpbmNsdWRlICJzZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL25hbHVfcmV3cml0ZXIuaCIKLSsjaW5jbHVkZSAic2RrL29iamMv
RnJhbWV3b3JrL0NsYXNzZXMvVmlkZW9Ub29sYm94L25hbHVfcmV3cml0ZXIuaCIKLSsjaW5jbHVk
ZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFy
dHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgotIAotLUBpbnRlcmZhY2Ug
UlRDVmlkZW9FbmNvZGVySDI2NCAoKQotKyNpbmNsdWRlICJzZGsvV2ViS2l0L0VuY29kZXJVdGls
aXRpZXMuaCIKLSsjaW5jbHVkZSAic2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaCIKLSsKLSsj
aW1wb3J0IDxkbGZjbi5oPgotKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotKwotK1NPRlRfTElO
S19GUkFNRVdPUktfT1BUSU9OQUwoVmlkZW9Ub29sQm94KQotK1NPRlRfTElOS19QT0lOVEVSX09Q
VElPTkFMKFZpZGVvVG9vbEJveCwga1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9Vc2FnZSwg
TlNTdHJpbmcgKikKLSsKLSsjaWYgIUVOQUJMRV9WQ1BfRU5DT0RFUiAmJiAhZGVmaW5lZChXRUJS
VENfSU9TKQotK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1N0YW5kYXJkRnJhbWVTaXplKGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQotK3sKLSsgICAgLy8gRklYTUU6IEVudmlzaW9uIHJlbGF4
aW5nIHRoaXMgcnVsZSwgc29tZXRoaW5nIGxpa2Ugd2lkdGggYW5kIGhlaWdodCBkaXZpZGFibGUg
YnkgNCBvciA4IHNob3VsZCBiZSBnb29kIGVub3VnaC4KLSsgICAgaWYgKHdpZHRoID09IDEyODAp
Ci0rICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDcyMDsKLSsgICAgaWYgKHdpZHRoID09IDcyMCkK
LSsgICAgICAgIHJldHVybiBoZWlnaHQgPT0gMTI4MDsKLSsgICAgaWYgKHdpZHRoID09IDk2MCkK
LSsgICAgICAgIHJldHVybiBoZWlnaHQgPT0gNTQwOwotKyAgICBpZiAod2lkdGggPT0gNTQwKQot
KyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSA5NjA7Ci0rICAgIGlmICh3aWR0aCA9PSA2NDApCi0r
ICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDQ4MDsKLSsgICAgaWYgKHdpZHRoID09IDQ4MCkKLSsg
ICAgICAgIHJldHVybiBoZWlnaHQgPT0gNjQwOwotKyAgICBpZiAod2lkdGggPT0gMjg4KQotKyAg
ICAgICAgcmV0dXJuIGhlaWdodCA9PSAzNTI7Ci0rICAgIGlmICh3aWR0aCA9PSAzNTIpCi0rICAg
ICAgICByZXR1cm4gaGVpZ2h0ID09IDI4ODsKLSsgICAgaWYgKHdpZHRoID09IDMyMCkKLSsgICAg
ICAgIHJldHVybiBoZWlnaHQgPT0gMjQwOwotKyAgICBpZiAod2lkdGggPT0gMjQwKQotKyAgICAg
ICAgcmV0dXJuIGhlaWdodCA9PSAzMjA7Ci0rICAgIHJldHVybiBmYWxzZTsKLSt9Ci0rI2VuZGlm
Ci0gCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1NpbmdsZVZpZGVv
RW5jb2RlckgyNjQiKSkpCi0rQGludGVyZmFjZSBSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IDog
TlNPYmplY3QgPFJUQ1ZpZGVvRW5jb2Rlcj4KLSstIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2Rl
Y0luZm86KFJUQ1ZpZGVvQ29kZWNJbmZvICopY29kZWNJbmZvIHNpbXVsY2FzdEluZGV4OiAoaW50
KWluZGV4OwotIC0gKHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1cylzdGF0dXMKLSAgICAg
ICAgICAgICAgICAgICBmbGFnczooVlRFbmNvZGVJbmZvRmxhZ3MpaW5mb0ZsYWdzCi0gICAgICAg
ICAgICBzYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgotQEAgLTUx
LDcgKzg0LDYgQEAgLSAodm9pZClmcmFtZVdhc0VuY29kZWQ6KE9TU3RhdHVzKXN0YXR1cwotICAg
ICAgICAgICAgcmVuZGVyVGltZU1zOihpbnQ2NF90KXJlbmRlclRpbWVNcwotICAgICAgICAgICAg
ICAgdGltZXN0YW1wOih1aW50MzJfdCl0aW1lc3RhbXAKLSAgICAgICAgICAgICAgICByb3RhdGlv
bjooUlRDVmlkZW9Sb3RhdGlvbilyb3RhdGlvbjsKLS0KLSBAZW5kCi0gCi0gbmFtZXNwYWNlIHsg
IC8vIGFub255bW91cyBuYW1lc3BhY2UKLUBAIC03MCw3ICsxMDIsNyBAQCBjb25zdCBPU1R5cGUg
a05WMTJQaXhlbEZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJG
dWxsUmFuZ2U7Ci0gLy8gU3RydWN0IHRoYXQgd2UgcGFzcyB0byB0aGUgZW5jb2RlciBwZXIgZnJh
bWUgdG8gZW5jb2RlLiBXZSByZWNlaXZlIGl0IGFnYWluCi0gLy8gaW4gdGhlIGVuY29kZXIgY2Fs
bGJhY2suCi0gc3RydWN0IFJUQ0ZyYW1lRW5jb2RlUGFyYW1zIHsKLS0gIFJUQ0ZyYW1lRW5jb2Rl
UGFyYW1zKFJUQ1ZpZGVvRW5jb2RlckgyNjQgKmUsCi0rICBSVENGcmFtZUVuY29kZVBhcmFtcyhS
VENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICplLAotICAgICAgICAgICAgICAgICAgICAgICAgUlRD
Q29kZWNTcGVjaWZpY0luZm9IMjY0ICpjc2ksCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQz
Ml90IHcsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGgsCi1AQCAtODUsNyArMTE3
LDcgQEAgc3RydWN0IFJUQ0ZyYW1lRW5jb2RlUGFyYW1zIHsKLSAgICAgfQotICAgfQotIAotLSAg
UlRDVmlkZW9FbmNvZGVySDI2NCAqZW5jb2RlcjsKLSsgIFJUQ1NpbmdsZVZpZGVvRW5jb2Rlckgy
NjQgKmVuY29kZXI7Ci0gICBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQgKmNvZGVjU3BlY2lmaWNJ
bmZvOwotICAgaW50MzJfdCB3aWR0aDsKLSAgIGludDMyX3QgaGVpZ2h0OwotQEAgLTE3Myw4ICsy
MDUsOCBAQCB2b2lkIGNvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2sodm9pZCAqZW5jb2RlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOmVuY29kZVBhcmFtcy0+cm90
YXRpb25dOwotIH0KLSAKLS0vLyBFeHRyYWN0IFZpZGVvVG9vbGJveCBwcm9maWxlIG91dCBvZiB0
aGUgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdC4gSWYgdGhlcmUgaXMKLS0vLyBubyBzcGVjaWZpYyBW
aWRlb1Rvb2xib3ggcHJvZmlsZSBmb3IgdGhlIHNwZWNpZmllZCBsZXZlbCwgQXV0b0xldmVsIHdp
bGwgYmUKLSsvLyBFeHRyYWN0IFZpZGVvVG9vbGJveCBwcm9maWxlIG91dCBvZiB0aGUgY3JpY2tl
dDo6VmlkZW9Db2RlYy4gSWYgdGhlcmUgaXMgbm8KLSsvLyBzcGVjaWZpYyBWaWRlb1Rvb2xib3gg
cHJvZmlsZSBmb3IgdGhlIHNwZWNpZmllZCBsZXZlbCwgQXV0b0xldmVsIHdpbGwgYmUKLSAvLyBy
ZXR1cm5lZC4gVGhlIHVzZXIgbXVzdCBpbml0aWFsaXplIHRoZSBlbmNvZGVyIHdpdGggYSByZXNv
bHV0aW9uIGFuZAotIC8vIGZyYW1lcmF0ZSBjb25mb3JtaW5nIHRvIHRoZSBzZWxlY3RlZCBIMjY0
IGxldmVsIHJlZ2FyZGxlc3MuCi0gQ0ZTdHJpbmdSZWYgRXh0cmFjdFByb2ZpbGUod2VicnRjOjpT
ZHBWaWRlb0Zvcm1hdCB2aWRlb0Zvcm1hdCkgewotQEAgLTI4MCw3ICszMTIsNyBAQCBDRlN0cmlu
Z1JlZiBFeHRyYWN0UHJvZmlsZSh3ZWJydGM6OlNkcFZpZGVvRm9ybWF0IHZpZGVvRm9ybWF0KSB7
Ci0gfQotIH0gIC8vIG5hbWVzcGFjZQotIAotLUBpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0VuY29k
ZXJIMjY0IHsKLStAaW1wbGVtZW50YXRpb24gUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCB7Ci0g
ICBSVENWaWRlb0NvZGVjSW5mbyAqX2NvZGVjSW5mbzsKLSAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OkJpdHJhdGVBZGp1c3Rlcj4gX2JpdHJhdGVBZGp1c3RlcjsKLSAgIHVpbnQzMl90IF90YXJn
ZXRCaXRyYXRlQnBzOwotQEAgLTI5MCwxMiArMzIyLDE0IEBAIEBpbXBsZW1lbnRhdGlvbiBSVENW
aWRlb0VuY29kZXJIMjY0IHsKLSAgIFJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrIF9jYWxsYmFjazsK
LSAgIGludDMyX3QgX3dpZHRoOwotICAgaW50MzJfdCBfaGVpZ2h0OwotLSAgVlRDb21wcmVzc2lv
blNlc3Npb25SZWYgX2NvbXByZXNzaW9uU2Vzc2lvbjsKLS0gIENWUGl4ZWxCdWZmZXJQb29sUmVm
IF9waXhlbEJ1ZmZlclBvb2w7Ci0rICBDb21wcmVzc2lvblNlc3Npb25SZWYgX2NvbXByZXNzaW9u
U2Vzc2lvbjsKLSAgIFJUQ1ZpZGVvQ29kZWNNb2RlIF9tb2RlOwotIAotICAgd2VicnRjOjpIMjY0
Qml0c3RyZWFtUGFyc2VyIF9oMjY0Qml0c3RyZWFtUGFyc2VyOwotICAgc3RkOjp2ZWN0b3I8dWlu
dDhfdD4gX2ZyYW1lU2NhbGVCdWZmZXI7Ci0rCi0rICB3ZWJydGM6OlZpZGVvQ29kZWMgX25hdGl2
ZVZpZGVvQ29kZWM7Ci0rICBpbnQgX3NpbXVsY2FzdEluZGV4OwotIH0KLSAKLSAvLyAuNSBpcyBz
ZXQgYXMgYSBtaW5pbnVtIHRvIHByZXZlbnQgb3ZlcmNvbXBlbnNhdGluZyBmb3IgbGFyZ2UgdGVt
cG9yYXJ5Ci1AQCAtMzA1LDE0ICszMzksMTkgQEAgQGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVvRW5j
b2RlckgyNjQgewotIC8vIGRyYXN0aWNhbGx5IHJlZHVjZWQgYml0cmF0ZSwgc28gd2Ugd2FudCB0
byBhdm9pZCB0aGF0LiBJbiBzdGVhZHkgc3RhdGUKLSAvLyBjb25kaXRpb25zLCAwLjk1IHNlZW1z
IHRvIGdpdmUgdXMgYmV0dGVyIG92ZXJhbGwgYml0cmF0ZSBvdmVyIGxvbmcgcGVyaW9kcwotIC8v
IG9mIHRpbWUuCi0tLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZWNJbmZvOihSVENWaWRlb0Nv
ZGVjSW5mbyAqKWNvZGVjSW5mbyB7Ci0rLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZWNJbmZv
OihSVENWaWRlb0NvZGVjSW5mbyAqKWNvZGVjSW5mbyBzaW11bGNhc3RJbmRleDooaW50KWluZGV4
IHsKLSAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgIF9jb2RlY0luZm8gPSBjb2Rl
Y0luZm87Ci0gICAgIF9iaXRyYXRlQWRqdXN0ZXIucmVzZXQobmV3IHdlYnJ0Yzo6Qml0cmF0ZUFk
anVzdGVyKC41LCAuOTUpKTsKLSAgICAgX3BhY2tldGl6YXRpb25Nb2RlID0gUlRDSDI2NFBhY2tl
dGl6YXRpb25Nb2RlTm9uSW50ZXJsZWF2ZWQ7Ci0gICAgIF9wcm9maWxlID0gRXh0cmFjdFByb2Zp
bGUoW2NvZGVjSW5mbyBuYXRpdmVTZHBWaWRlb0Zvcm1hdF0pOwotKyAgICBfc2ltdWxjYXN0SW5k
ZXggPSBpbmRleDsKLSAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiVXNpbmcgcHJvZmlsZSAiIDw8
IENGU3RyaW5nVG9TdHJpbmcoX3Byb2ZpbGUpOwotICAgICBSVENfQ0hFQ0soW2NvZGVjSW5mby5u
YW1lIGlzRXF1YWxUb1N0cmluZzprUlRDVmlkZW9Db2RlY0gyNjROYW1lXSk7Ci0rCi0rI2lmIGRl
ZmluZWQoV0VCUlRDX0lPUykKLSsgICAgW1JUQ1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciBw
cmVwYXJlRm9yVXNlXTsKLSsjZW5kaWYKLSAgIH0KLSAgIHJldHVybiBzZWxmOwotIH0KLUBAIC0z
MjksOSArMzY4LDEyIEBAIC0gKE5TSW50ZWdlcilzdGFydEVuY29kZVdpdGhTZXR0aW5nczooUlRD
VmlkZW9FbmNvZGVyU2V0dGluZ3MgKilzZXR0aW5ncwotICAgX3dpZHRoID0gc2V0dGluZ3Mud2lk
dGg7Ci0gICBfaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0OwotICAgX21vZGUgPSBzZXR0aW5ncy5t
b2RlOwotKyAgX25hdGl2ZVZpZGVvQ29kZWMgPSBzZXR0aW5ncy5uYXRpdmVWaWRlb0NvZGVjOwot
KwotKyAgUlRDX0RDSEVDSyhfbmF0aXZlVmlkZW9Db2RlYy5udW1iZXJPZlNpbXVsY2FzdFN0cmVh
bXMgIT0gMSk7Ci0gCi0gICAvLyBXZSBjYW4gb25seSBzZXQgYXZlcmFnZSBiaXRyYXRlIG9uIHRo
ZSBIVyBlbmNvZGVyLgotLSAgX3RhcmdldEJpdHJhdGVCcHMgPSBzZXR0aW5ncy5zdGFydEJpdHJh
dGUgKiAxMDAwOyAgLy8gc3RhcnRCaXRyYXRlIGlzIGluIGticHMuCi0rICBfdGFyZ2V0Qml0cmF0
ZUJwcyA9IHNldHRpbmdzLnN0YXJ0Qml0cmF0ZTsKLSAgIF9iaXRyYXRlQWRqdXN0ZXItPlNldFRh
cmdldEJpdHJhdGVCcHMoX3RhcmdldEJpdHJhdGVCcHMpOwotIAotICAgLy8gVE9ETyh0a2NoaW4p
OiBUcnkgc2V0dGluZyBwYXlsb2FkIHNpemUgdmlhCi1AQCAtMzQ4LDEwICszOTAsMjAgQEAgLSAo
TlNJbnRlZ2VyKWVuY29kZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1lCi0gICBpZiAoIV9jYWxsYmFj
ayB8fCAhX2NvbXByZXNzaW9uU2Vzc2lvbikgewotICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NP
REVDX1VOSU5JVElBTElaRUQ7Ci0gICB9Ci0rI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKLSsgIGlm
ICghW1tSVENVSUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIgc2hhcmVkSW5zdGFuY2VdIGlzQXBw
bGljYXRpb25BY3RpdmVdKSB7Ci0rICAgIC8vIElnbm9yZSBhbGwgZW5jb2RlIHJlcXVlc3RzIHdo
ZW4gYXBwIGlzbid0IGFjdGl2ZS4gSW4gdGhpcyBzdGF0ZSwgdGhlCi0rICAgIC8vIGhhcmR3YXJl
IGVuY29kZXIgaGFzIGJlZW4gaW52YWxpZGF0ZWQgYnkgdGhlIE9TLgotKyAgICByZXR1cm4gV0VC
UlRDX1ZJREVPX0NPREVDX09LOwotKyAgfQotKyNlbmRpZgotICAgQk9PTCBpc0tleWZyYW1lUmVx
dWlyZWQgPSBOTzsKLSAKLSAgIC8vIEdldCBhIHBpeGVsIGJ1ZmZlciBmcm9tIHRoZSBwb29sIGFu
ZCBjb3B5IGZyYW1lIGRhdGEgb3Zlci4KLS0gIGlmIChbc2VsZiByZXNldENvbXByZXNzaW9uU2Vz
c2lvbklmTmVlZGVkV2l0aEZyYW1lOmZyYW1lXSkgewotKyAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYg
cGl4ZWxCdWZmZXJQb29sID0KLSsgICAgICBDb21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZl
clBvb2woX2NvbXByZXNzaW9uU2Vzc2lvbik7Ci0rICBpZiAoW3NlbGYgcmVzZXRDb21wcmVzc2lv
blNlc3Npb25JZk5lZWRlZEZvclBvb2w6cGl4ZWxCdWZmZXJQb29sIHdpdGhGcmFtZTpmcmFtZV0p
IHsKLSsgICAgcGl4ZWxCdWZmZXJQb29sID0gQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZm
ZXJQb29sKF9jb21wcmVzc2lvblNlc3Npb24pOwotICAgICBpc0tleWZyYW1lUmVxdWlyZWQgPSBZ
RVM7Ci0gICB9Ci0gCi1AQCAtMzY4LDcgKzQyMCw3IEBAIC0gKE5TSW50ZWdlcillbmNvZGU6KFJU
Q1ZpZGVvRnJhbWUgKilmcmFtZQotICAgICAgIENWQnVmZmVyUmV0YWluKHBpeGVsQnVmZmVyKTsK
LSAgICAgfSBlbHNlIHsKLSAgICAgICAvLyBDcm9wcGluZyByZXF1aXJlZCwgd2UgbmVlZCB0byBj
cm9wIGFuZCBzY2FsZSB0byBhIG5ldyBwaXhlbCBidWZmZXIuCi0tICAgICAgcGl4ZWxCdWZmZXIg
PSBDcmVhdGVQaXhlbEJ1ZmZlcihfcGl4ZWxCdWZmZXJQb29sKTsKLSsgICAgICBwaXhlbEJ1ZmZl
ciA9IENyZWF0ZVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyUG9vbCk7Ci0gICAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikgewotICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKLSAg
ICAgICB9Ci1AQCAtMzkxLDcgKzQ0Myw3IEBAIC0gKE5TSW50ZWdlcillbmNvZGU6KFJUQ1ZpZGVv
RnJhbWUgKilmcmFtZQotIAotICAgaWYgKCFwaXhlbEJ1ZmZlcikgewotICAgICAvLyBXZSBkaWQg
bm90IGhhdmUgYSBuYXRpdmUgZnJhbWUgYnVmZmVyCi0tICAgIHBpeGVsQnVmZmVyID0gQ3JlYXRl
UGl4ZWxCdWZmZXIoX3BpeGVsQnVmZmVyUG9vbCk7Ci0rICAgIHBpeGVsQnVmZmVyID0gQ3JlYXRl
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXJQb29sKTsKLSAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewot
ICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0gICAgIH0KLUBAIC00MzQs
NyArNDg2LDcgQEAgLSAoTlNJbnRlZ2VyKWVuY29kZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1lCi0g
ICAvLyBVcGRhdGUgdGhlIGJpdHJhdGUgaWYgbmVlZGVkLgotICAgW3NlbGYgc2V0Qml0cmF0ZUJw
czpfYml0cmF0ZUFkanVzdGVyLT5HZXRBZGp1c3RlZEJpdHJhdGVCcHMoKV07Ci0gCi0tICBPU1N0
YXR1cyBzdGF0dXMgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKF9jb21wcmVzc2lv
blNlc3Npb24sCi0rICBPU1N0YXR1cyBzdGF0dXMgPSBDb21wcmVzc2lvblNlc3Npb25FbmNvZGVG
cmFtZShfY29tcHJlc3Npb25TZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwaXhlbEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudGF0aW9uVGltZVN0YW1wLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ01U
aW1lSW52YWxpZCwKLUBAIC00NDcsMTQgKzQ5OSw3IEBAIC0gKE5TSW50ZWdlcillbmNvZGU6KFJU
Q1ZpZGVvRnJhbWUgKilmcmFtZQotICAgaWYgKHBpeGVsQnVmZmVyKSB7Ci0gICAgIENWQnVmZmVy
UmVsZWFzZShwaXhlbEJ1ZmZlcik7Ci0gICB9Ci0tCi0tICBpZiAoc3RhdHVzID09IGtWVEludmFs
aWRTZXNzaW9uRXJyKSB7Ci0tICAgIC8vIFRoaXMgZXJyb3Igb2NjdXJzIHdoZW4gZW50ZXJpbmcg
Zm9yZWdyb3VuZCBhZnRlciBiYWNrZ3JvdW5kaW5nIHRoZSBhcHAuCi0tICAgIFJUQ19MT0coTFNf
RVJST1IpIDw8ICJJbnZhbGlkIGNvbXByZXNzaW9uIHNlc3Npb24sIHJlc2V0dGluZy4iOwotLSAg
ICBbc2VsZiByZXNldENvbXByZXNzaW9uU2Vzc2lvbldpdGhQaXhlbEZvcm1hdDpbc2VsZiBwaXhl
bEZvcm1hdE9mRnJhbWU6ZnJhbWVdXTsKLS0KLS0gICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19OT19PVVRQVVQ7Ci0tICB9IGVsc2UgaWYgKHN0YXR1cyAhPSBub0VycikgewotKyAgaWYgKHN0
YXR1cyAhPSBub0VycikgewotICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGVu
Y29kZSBmcmFtZSB3aXRoIGNvZGU6ICIgPDwgc3RhdHVzOwotICAgICByZXR1cm4gV0VCUlRDX1ZJ
REVPX0NPREVDX0VSUk9SOwotICAgfQotQEAgLTQ2NSw4ICs1MTAsOCBAQCAtICh2b2lkKXNldENh
bGxiYWNrOihSVENWaWRlb0VuY29kZXJDYWxsYmFjayljYWxsYmFjayB7Ci0gICBfY2FsbGJhY2sg
PSBjYWxsYmFjazsKLSB9Ci0gCi0tLSAoaW50KXNldEJpdHJhdGU6KHVpbnQzMl90KWJpdHJhdGVL
Yml0IGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsKLS0gIF90YXJnZXRCaXRyYXRlQnBz
ID0gMTAwMCAqIGJpdHJhdGVLYml0OwotKy0gKGludClzZXRCaXRyYXRlOih1aW50MzJfdCliaXRy
YXRlQnBzIGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsKLSsgIF90YXJnZXRCaXRyYXRl
QnBzID0gYml0cmF0ZUJwczsKLSAgIF9iaXRyYXRlQWRqdXN0ZXItPlNldFRhcmdldEJpdHJhdGVC
cHMoX3RhcmdldEJpdHJhdGVCcHMpOwotICAgW3NlbGYgc2V0Qml0cmF0ZUJwczpfYml0cmF0ZUFk
anVzdGVyLT5HZXRBZGp1c3RlZEJpdHJhdGVCcHMoKV07Ci0gICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX09LOwotQEAgLTQ4Myw0NCArNTI4LDUxIEBAIC0gKE5TSW50ZWdlcilyZWxlYXNlRW5j
b2RlciB7Ci0gICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwotIH0KLSAKLS0tIChPU1R5
cGUpcGl4ZWxGb3JtYXRPZkZyYW1lOihSVENWaWRlb0ZyYW1lICopZnJhbWUgewotLSAgLy8gVXNl
IE5WMTIgZm9yIG5vbi1uYXRpdmUgZnJhbWVzLgotLSAgaWYgKFtmcmFtZS5idWZmZXIgaXNLaW5k
T2ZDbGFzczpbUlRDQ1ZQaXhlbEJ1ZmZlciBjbGFzc11dKSB7Ci0tICAgIFJUQ0NWUGl4ZWxCdWZm
ZXIgKnJ0Y1BpeGVsQnVmZmVyID0gKFJUQ0NWUGl4ZWxCdWZmZXIgKilmcmFtZS5idWZmZXI7Ci0t
ICAgIHJldHVybiBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHJ0Y1BpeGVsQnVmZmVy
LnBpeGVsQnVmZmVyKTsKLS0gIH0KLS0KLS0gIHJldHVybiBrTlYxMlBpeGVsRm9ybWF0OwotLX0K
LS0KLS0tIChCT09MKXJlc2V0Q29tcHJlc3Npb25TZXNzaW9uSWZOZWVkZWRXaXRoRnJhbWU6KFJU
Q1ZpZGVvRnJhbWUgKilmcmFtZSB7Ci0rLSAoQk9PTClyZXNldENvbXByZXNzaW9uU2Vzc2lvbklm
TmVlZGVkRm9yUG9vbDooQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYpcGl4ZWxCdWZmZXJQb29sCi0rICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhGcmFtZTooUlRDVmlkZW9GcmFt
ZSAqKWZyYW1lIHsKLSAgIEJPT0wgcmVzZXRDb21wcmVzc2lvblNlc3Npb24gPSBOTzsKLSAKLSsj
aWYgZGVmaW5lZChXRUJSVENfSU9TKQotKyAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpIHsKLSsgICAg
Ly8gS2luZCBvZiBhIGhhY2suIE9uIGJhY2tncm91bmRpbmcsIHRoZSBjb21wcmVzc2lvbiBzZXNz
aW9uIHNlZW1zIHRvIGdldAotKyAgICAvLyBpbnZhbGlkYXRlZCwgd2hpY2ggY2F1c2VzIHRoaXMg
cG9vbCBjYWxsIHRvIGZhaWwgd2hlbiB0aGUgYXBwbGljYXRpb24KLSsgICAgLy8gaXMgZm9yZWdy
b3VuZGVkIGFuZCBmcmFtZXMgYXJlIGJlaW5nIHNlbnQgZm9yIGVuY29kaW5nIGFnYWluLgotKyAg
ICAvLyBSZXNldHRpbmcgdGhlIHNlc3Npb24gd2hlbiB0aGlzIGhhcHBlbnMgZml4ZXMgdGhlIGlz
c3VlLgotKyAgICAvLyBJbiBhZGRpdGlvbiB3ZSByZXF1ZXN0IGEga2V5ZnJhbWUgc28gdmlkZW8g
Y2FuIHJlY292ZXIgcXVpY2tseS4KLSsgICAgcmVzZXRDb21wcmVzc2lvblNlc3Npb24gPSBZRVM7
Ci0rICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlJlc2V0dGluZyBjb21wcmVzc2lvbiBzZXNzaW9u
IGR1ZSB0byBpbnZhbGlkIHBvb2wuIjsKLSsgIH0KLSsjZW5kaWYKLSsKLSAgIC8vIElmIHdlJ3Jl
IGNhcHR1cmluZyBuYXRpdmUgZnJhbWVzIGluIGFub3RoZXIgcGl4ZWwgZm9ybWF0IHRoYW4gdGhl
IGNvbXByZXNzaW9uIHNlc3Npb24gaXMKLSAgIC8vIGNvbmZpZ3VyZWQgd2l0aCwgbWFrZSBzdXJl
IHRoZSBjb21wcmVzc2lvbiBzZXNzaW9uIGlzIHJlc2V0IHVzaW5nIHRoZSBjb3JyZWN0IHBpeGVs
IGZvcm1hdC4KLS0gIE9TVHlwZSBmcmFtZVBpeGVsRm9ybWF0ID0gW3NlbGYgcGl4ZWxGb3JtYXRP
ZkZyYW1lOmZyYW1lXTsKLS0KLS0gIGlmIChfY29tcHJlc3Npb25TZXNzaW9uKSB7Ci0rICAvLyBJ
ZiB3ZSdyZSBjYXB0dXJpbmcgbm9uLW5hdGl2ZSBmcmFtZXMgYW5kIHRoZSBjb21wcmVzc2lvbiBz
ZXNzaW9uIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIG5vbi1OVjEyCi0rICAvLyBmb3JtYXQsIHJlc2V0
IGl0IHRvIE5WMTIuCi0rICBPU1R5cGUgZnJhbWVQaXhlbEZvcm1hdCA9IGtOVjEyUGl4ZWxGb3Jt
YXQ7Ci0rICBpZiAocGl4ZWxCdWZmZXJQb29sKSB7Ci0gICAgIC8vIFRoZSBwb29sIGF0dHJpYnV0
ZSBga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXlgIGNhbiBjb250YWluIGVpdGhlciBh
biBhcnJheSBvZiBwaXhlbAotICAgICAvLyBmb3JtYXRzIG9yIGEgc2luZ2xlIHBpeGVsIGZvcm1h
dC4KLSAgICAgTlNEaWN0aW9uYXJ5ICpwb29sQXR0cmlidXRlcyA9Ci0tICAgICAgICAoX19icmlk
Z2UgTlNEaWN0aW9uYXJ5ICopQ1ZQaXhlbEJ1ZmZlclBvb2xHZXRQaXhlbEJ1ZmZlckF0dHJpYnV0
ZXMoX3BpeGVsQnVmZmVyUG9vbCk7Ci0rICAgICAgICAoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICop
Q1ZQaXhlbEJ1ZmZlclBvb2xHZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMocGl4ZWxCdWZmZXJQb29s
KTsKLSAgICAgaWQgcGl4ZWxGb3JtYXRzID0KLSAgICAgICAgIFtwb29sQXR0cmlidXRlcyBvYmpl
Y3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5
cGVLZXldOwotICAgICBOU0FycmF5PE5TTnVtYmVyICo+ICpjb21wcmVzc2lvblNlc3Npb25QaXhl
bEZvcm1hdHMgPSBuaWw7Ci0gICAgIGlmIChbcGl4ZWxGb3JtYXRzIGlzS2luZE9mQ2xhc3M6W05T
QXJyYXkgY2xhc3NdXSkgewotICAgICAgIGNvbXByZXNzaW9uU2Vzc2lvblBpeGVsRm9ybWF0cyA9
IChOU0FycmF5ICopcGl4ZWxGb3JtYXRzOwotLSAgICB9IGVsc2UgaWYgKFtwaXhlbEZvcm1hdHMg
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkgewotKyAgICB9IGVsc2UgewotICAgICAg
IGNvbXByZXNzaW9uU2Vzc2lvblBpeGVsRm9ybWF0cyA9IEBbIChOU051bWJlciAqKXBpeGVsRm9y
bWF0cyBdOwotICAgICB9Ci0gCi0rICAgIGlmIChbZnJhbWUuYnVmZmVyIGlzS2luZE9mQ2xhc3M6
W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkgewotKyAgICAgIFJUQ0NWUGl4ZWxCdWZmZXIgKnJ0
Y1BpeGVsQnVmZmVyID0gKFJUQ0NWUGl4ZWxCdWZmZXIgKilmcmFtZS5idWZmZXI7Ci0rICAgICAg
ZnJhbWVQaXhlbEZvcm1hdCA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocnRjUGl4
ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOwotKyAgICB9Ci0rCi0gICAgIGlmICghW2NvbXByZXNzaW9u
U2Vzc2lvblBpeGVsRm9ybWF0cwotICAgICAgICAgICAgIGNvbnRhaW5zT2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoTG9uZzpmcmFtZVBpeGVsRm9ybWF0XV0pIHsKLSAgICAgICByZXNldENvbXBy
ZXNzaW9uU2Vzc2lvbiA9IFlFUzsKLSAgICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJSZXNldHRp
bmcgY29tcHJlc3Npb24gc2Vzc2lvbiBkdWUgdG8gbm9uLW1hdGNoaW5nIHBpeGVsIGZvcm1hdC4i
OwotICAgICB9Ci0tICB9IGVsc2UgewotLSAgICByZXNldENvbXByZXNzaW9uU2Vzc2lvbiA9IFlF
UzsKLSAgIH0KLSAKLSAgIGlmIChyZXNldENvbXByZXNzaW9uU2Vzc2lvbikgewotQEAgLTU1Nywy
MiArNjA5LDI2IEBAIC0gKGludClyZXNldENvbXByZXNzaW9uU2Vzc2lvbldpdGhQaXhlbEZvcm1h
dDooT1NUeXBlKWZyYW1lUGl4ZWxGb3JtYXQgewotICAgICBDRlJlbGVhc2UocGl4ZWxGb3JtYXQp
OwotICAgICBwaXhlbEZvcm1hdCA9IG51bGxwdHI7Ci0gICB9Ci0tICBDRk11dGFibGVEaWN0aW9u
YXJ5UmVmIGVuY29kZXJfc3BlY3MgPSBudWxscHRyOwotLSNpZiBkZWZpbmVkKFdFQlJUQ19NQUMp
ICYmICFkZWZpbmVkKFdFQlJUQ19JT1MpCi0rICBDRkRpY3Rpb25hcnlSZWYgZW5jb2RlclNwZWNz
ID0gbnVsbHB0cjsKLSsjaWYgIWRlZmluZWQoV0VCUlRDX0lPUykKLSsgIGF1dG8gdXNlSGFyZHdh
cmVFbmNvZGVyID0gd2VicnRjOjppc0gyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKCkgPyBrQ0ZC
b29sZWFuVHJ1ZSA6IGtDRkJvb2xlYW5GYWxzZTsKLSAgIC8vIEN1cnJlbnRseSBodyBhY2NsIGlz
IHN1cHBvcnRlZCBhYm92ZSAzNjBwIG9uIG1hYywgYmVsb3cgMzYwcAotICAgLy8gdGhlIGNvbXBy
ZXNzaW9uIHNlc3Npb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggaHcgYWNjbCBkaXNhYmxlZC4KLS0g
IGVuY29kZXJfc3BlY3MgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKAotLSAgICAgIG51bGxw
dHIsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5
VmFsdWVDYWxsQmFja3MpOwotLSAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZW5jb2Rlcl9zcGVjcywK
LS0gICAgICAgICAgICAgICAgICAgICAgIGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5h
YmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2RlciwKLS0gICAgICAgICAgICAgICAgICAg
ICAgIGtDRkJvb2xlYW5UcnVlKTsKLSsgIENGVHlwZVJlZiBzZXNzaW9uS2V5c1tdID0geyBrVlRW
aWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0Vu
Y29kZXIsIGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fUmVxdWlyZUhhcmR3YXJlQWNjZWxl
cmF0ZWRWaWRlb0VuY29kZXIsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgfTsK
LSsgIENGVHlwZVJlZiBzZXNzaW9uVmFsdWVzW10gPSB7IHVzZUhhcmR3YXJlRW5jb2RlciwgdXNl
SGFyZHdhcmVFbmNvZGVyLCBrQ0ZCb29sZWFuVHJ1ZSB9OwotKyAgZW5jb2RlclNwZWNzID0gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb25LZXlzLCBzZXNzaW9u
VmFsdWVzLCAzLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSsjZWxzZQotKyAgQ0ZUeXBlUmVmIHNlc3Npb25LZXlzW10g
PSB7IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgfTsKLSsgIENGVHlwZVJlZiBz
ZXNzaW9uVmFsdWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07Ci0rICBlbmNvZGVyU3BlY3MgPSBD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbktleXMsIHNlc3Np
b25WYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICNlbmRpZgotKwotICAgT1NTdGF0dXMgc3RhdHVzID0K
LS0gICAgICBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZShudWxscHRyLCAgLy8gdXNlIGRlZmF1
bHQgYWxsb2NhdG9yCi0rICAgICAgQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKG51bGxwdHIsICAv
LyB1c2UgZGVmYXVsdCBhbGxvY2F0b3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2hlaWdodCwKLS0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ01WaWRlb0NvZGVjVHlwZV9IMjY0LAot
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJfc3BlY3MsICAvLyB1c2Ug
aGFyZHdhcmUgYWNjZWxlcmF0ZWQgZW5jb2RlciBpZiBhdmFpbGFibGUKLSsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrQ29kZWNUeXBlSDI2NCwKLSsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmNvZGVyU3BlY3MsICAvLyB1c2UgaGFyZHdhcmUgYWNjZWxlcmF0ZWQg
ZW5jb2RlciBpZiBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
b3VyY2VBdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsICAvLyB1c2UgZGVmYXVsdCBjb21wcmVzc2VkIGRhdGEgYWxsb2NhdG9yCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25PdXRwdXRDYWxsYmFjaywKLUBAIC01
ODIsMzIgKzYzOCwxMDUgQEAgLSAoaW50KXJlc2V0Q29tcHJlc3Npb25TZXNzaW9uV2l0aFBpeGVs
Rm9ybWF0OihPU1R5cGUpZnJhbWVQaXhlbEZvcm1hdCB7Ci0gICAgIENGUmVsZWFzZShzb3VyY2VB
dHRyaWJ1dGVzKTsKLSAgICAgc291cmNlQXR0cmlidXRlcyA9IG51bGxwdHI7Ci0gICB9Ci0tICBp
ZiAoZW5jb2Rlcl9zcGVjcykgewotLSAgICBDRlJlbGVhc2UoZW5jb2Rlcl9zcGVjcyk7Ci0tICAg
IGVuY29kZXJfc3BlY3MgPSBudWxscHRyOwotKyAgaWYgKGVuY29kZXJTcGVjcykgewotKyAgICBD
RlJlbGVhc2UoZW5jb2RlclNwZWNzKTsKLSsgICAgZW5jb2RlclNwZWNzID0gbnVsbHB0cjsKLSAg
IH0KLSsKLSsjaWYgRU5BQkxFX1ZDUF9FTkNPREVSIHx8IGRlZmluZWQoV0VCUlRDX0lPUykKLSAg
IGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKLSAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxl
ZCB0byBjcmVhdGUgY29tcHJlc3Npb24gc2Vzc2lvbjogIiA8PCBzdGF0dXM7Ci0gICAgIHJldHVy
biBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0gICB9Ci0rI2VuZGlmCi0gI2lmIGRlZmluZWQo
V0VCUlRDX01BQykgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKLSAgIENGQm9vbGVhblJlZiBod2Fj
Y2xfZW5hYmxlZCA9IG51bGxwdHI7Ci0tICBzdGF0dXMgPSBWVFNlc3Npb25Db3B5UHJvcGVydHko
X2NvbXByZXNzaW9uU2Vzc2lvbiwKLSsgIGlmIChzdGF0dXMgPT0gbm9FcnIpIHsKLSsgICAgc3Rh
dHVzID0gVlRTZXNzaW9uQ29weVByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9Vc2lu
Z0hhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
aHdhY2NsX2VuYWJsZWQpOwotKyAgfQotICAgaWYgKHN0YXR1cyA9PSBub0VyciAmJiAoQ0ZCb29s
ZWFuR2V0VmFsdWUoaHdhY2NsX2VuYWJsZWQpKSkgewotICAgICBSVENfTE9HKExTX0lORk8pIDw8
ICJDb21wcmVzc2lvbiBzZXNzaW9uIGNyZWF0ZWQgd2l0aCBodyBhY2NsIGVuYWJsZWQiOwotICAg
fSBlbHNlIHsKLSAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQ29tcHJlc3Npb24gc2Vzc2lvbiBj
cmVhdGVkIHdpdGggaHcgYWNjbCBkaXNhYmxlZCI7Ci0rCi0rI2lmICFFTkFCTEVfVkNQX0VOQ09E
RVIgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKLSsgICAgaWYgKCFpc1N0YW5kYXJkRnJhbWVTaXpl
KF93aWR0aCwgX2hlaWdodCkpIHsKLSsgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVXNpbmcg
SDI2NCBzb2Z0d2FyZSBlbmNvZGVyIHdpdGggbm9uIHN0YW5kYXJkIHNpemUgaXMgbm90IHN1cHBv
cnRlZCI7Ci0rICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKLSsgICAgfQot
KwotKyAgICBpZiAoIWdldGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fVXNhZ2UoKSkgewot
KyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IGNh
bm5vdCBjcmVhdGUgYSBIMjY0IHNvZnR3YXJlIGVuY29kZXIiOwotKyAgICAgIHJldHVybiBXRUJS
VENfVklERU9fQ09ERUNfRVJST1I7Ci0rICAgIH0KLSsKLSsgICAgQ0ZEaWN0aW9uYXJ5UmVmIGlv
U3VyZmFjZVZhbHVlID0gQ3JlYXRlQ0ZUeXBlRGljdGlvbmFyeShudWxscHRyLCBudWxscHRyLCAw
KTsKLSsgICAgaW50NjRfdCBwaXhlbEZvcm1hdFR5cGUgPSBmcmFtZVBpeGVsRm9ybWF0OwotKyAg
ICBDRk51bWJlclJlZiBwaXhlbEZvcm1hdCA9IENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsIGtDRk51
bWJlckxvbmdUeXBlLCAmcGl4ZWxGb3JtYXRUeXBlKTsKLSsKLSsgICAgY29uc3Qgc2l6ZV90IGF0
dHJpYnV0ZXNTaXplID0gMzsKLSsgICAgQ0ZUeXBlUmVmIGtleXNbYXR0cmlidXRlc1NpemVdID0g
ewotKyAgICAgIGtDVlBpeGVsQnVmZmVyT3BlbkdMQ29tcGF0aWJpbGl0eUtleSwKLSsgICAgICBr
Q1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXksCi0rICAgICAga0NWUGl4ZWxCdWZm
ZXJQaXhlbEZvcm1hdFR5cGVLZXkKLSsgICAgfTsKLSsgICAgQ0ZUeXBlUmVmIHZhbHVlc1thdHRy
aWJ1dGVzU2l6ZV0gPSB7Ci0rICAgICAga0NGQm9vbGVhblRydWUsCi0rICAgICAgaW9TdXJmYWNl
VmFsdWUsCi0rICAgICAgcGl4ZWxGb3JtYXR9OwotKyAgICBDRkRpY3Rpb25hcnlSZWYgc291cmNl
QXR0cmlidXRlcyA9IENyZWF0ZUNGVHlwZURpY3Rpb25hcnkoa2V5cywgdmFsdWVzLCBhdHRyaWJ1
dGVzU2l6ZSk7Ci0rCi0rICAgIGlmIChpb1N1cmZhY2VWYWx1ZSkgewotKyAgICAgIENGUmVsZWFz
ZShpb1N1cmZhY2VWYWx1ZSk7Ci0rICAgICAgaW9TdXJmYWNlVmFsdWUgPSBudWxscHRyOwotKyAg
ICB9Ci0rICAgIGlmIChwaXhlbEZvcm1hdCkgewotKyAgICAgIENGUmVsZWFzZShwaXhlbEZvcm1h
dCk7Ci0rICAgICAgcGl4ZWxGb3JtYXQgPSBudWxscHRyOwotKyAgICB9Ci0rCi0rICAgIENGTXV0
YWJsZURpY3Rpb25hcnlSZWYgZW5jb2RlclNwZWNzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZShudWxscHRyLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSsgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZW5jb2Rl
clNwZWNzLCBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxl
cmF0ZWRWaWRlb0VuY29kZXIsIGtDRkJvb2xlYW5GYWxzZSk7Ci0rICAgIGludCB1c2FnZVZhbHVl
ID0gMTsKLSsgICAgQ0ZOdW1iZXJSZWYgdXNhZ2UgPSBDRk51bWJlckNyZWF0ZShudWxscHRyLCBr
Q0ZOdW1iZXJJbnRUeXBlLCAmdXNhZ2VWYWx1ZSk7Ci0rICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGVuY29kZXJTcGVjcywgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWdldGtWVFZpZGVvRW5jb2RlclNw
ZWNpZmljYXRpb25fVXNhZ2UoKSwgdXNhZ2UpOwotKwotKyAgICBpZiAodXNhZ2UpIHsKLSsgICAg
ICBDRlJlbGVhc2UodXNhZ2UpOwotKyAgICAgIHVzYWdlID0gbnVsbHB0cjsKLSsgICAgfQotKwot
KyAgICBbc2VsZiBkZXN0cm95Q29tcHJlc3Npb25TZXNzaW9uXTsKLSsKLSsgICAgT1NTdGF0dXMg
c3RhdHVzID0KLSsgICAgICBDb21wcmVzc2lvblNlc3Npb25DcmVhdGUobnVsbHB0ciwgIC8vIHVz
ZSBkZWZhdWx0IGFsbG9jYXRvcgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF93
aWR0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaGVpZ2h0LAotKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2RlY1R5cGVIMjY0LAotKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJTcGVjcywKLSsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzb3VyY2VBdHRyaWJ1dGVzLAotKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsICAvLyB1c2UgZGVmYXVsdCBjb21wcmVzc2VkIGRhdGEgYWxsb2Nh
dG9yCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25PdXRwdXRD
YWxsYmFjaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZfY29tcHJlc3Npb25TZXNzaW9uKTsKLSsg
ICAgaWYgKHNvdXJjZUF0dHJpYnV0ZXMpIHsKLSsgICAgICBDRlJlbGVhc2Uoc291cmNlQXR0cmli
dXRlcyk7Ci0rICAgICAgc291cmNlQXR0cmlidXRlcyA9IG51bGxwdHI7Ci0rICAgIH0KLSsgICAg
aWYgKGVuY29kZXJTcGVjcykgewotKyAgICAgIENGUmVsZWFzZShlbmNvZGVyU3BlY3MpOwotKyAg
ICAgIGVuY29kZXJTcGVjcyA9IG51bGxwdHI7Ci0rICAgIH0KLSsgICAgaWYgKHN0YXR1cyAhPSBu
b0VycikgewotKyAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0rICAgIH0K
LSsjZW5kaWYKLSAgIH0KLSAjZW5kaWYKLSAgIFtzZWxmIGNvbmZpZ3VyZUNvbXByZXNzaW9uU2Vz
c2lvbl07Ci0tCi0tICAvLyBUaGUgcGl4ZWwgYnVmZmVyIHBvb2wgaXMgZGVwZW5kZW50IG9uIHRo
ZSBjb21wcmVzc2lvbiBzZXNzaW9uIHNvIGlmIHRoZSBzZXNzaW9uIGlzIHJlc2V0LCB0aGUKLS0g
IC8vIHBvb2wgc2hvdWxkIGJlIHJlc2V0IGFzIHdlbGwuCi0tICBfcGl4ZWxCdWZmZXJQb29sID0g
VlRDb21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2woX2NvbXByZXNzaW9uU2Vzc2lv
bik7Ci0tCi0gICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwotIH0KLSAKLUBAIC02MTYs
NiArNzQ1LDEwIEBAIC0gKHZvaWQpY29uZmlndXJlQ29tcHJlc3Npb25TZXNzaW9uIHsKLSAgIFNl
dFZUU2Vzc2lvblByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9uUHJv
cGVydHlLZXlfUmVhbFRpbWUsIHRydWUpOwotICAgU2V0VlRTZXNzaW9uUHJvcGVydHkoX2NvbXBy
ZXNzaW9uU2Vzc2lvbiwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9Qcm9maWxlTGV2ZWwsIF9w
cm9maWxlKTsKLSAgIFNldFZUU2Vzc2lvblByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sIGtW
VENvbXByZXNzaW9uUHJvcGVydHlLZXlfQWxsb3dGcmFtZVJlb3JkZXJpbmcsIGZhbHNlKTsKLSsj
aWYgRU5BQkxFX1ZDUF9FTkNPREVSCi0rICBpZiAoYXV0byBrZXkgPSBnZXRrVlRWaWRlb0VuY29k
ZXJTcGVjaWZpY2F0aW9uX1VzYWdlKCkpCi0rICAgICAgU2V0VlRTZXNzaW9uUHJvcGVydHkoX2Nv
bXByZXNzaW9uU2Vzc2lvbiwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleSwgMSk7Ci0rI2VuZGlm
Ci0gICBbc2VsZiBzZXRFbmNvZGVyQml0cmF0ZUJwczpfdGFyZ2V0Qml0cmF0ZUJwc107Ci0gICAv
LyBUT0RPKHRrY2hpbik6IExvb2sgYXQgZW50cm9weSBtb2RlIGFuZCBjb2xvcnNwYWNlIG1hdHJp
Y2VzLgotICAgLy8gVE9ETyh0a2NoaW4pOiBJbnZlc3RpZ2F0ZSB0byBzZWUgaWYgdGhlcmUncyBh
bnkgd2F5IHRvIG1ha2UgdGhpcyB3b3JrLgotQEAgLTYzMywxMCArNzY2LDkgQEAgLSAodm9pZClj
b25maWd1cmVDb21wcmVzc2lvblNlc3Npb24gewotIAotIC0gKHZvaWQpZGVzdHJveUNvbXByZXNz
aW9uU2Vzc2lvbiB7Ci0gICBpZiAoX2NvbXByZXNzaW9uU2Vzc2lvbikgewotLSAgICBWVENvbXBy
ZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUoX2NvbXByZXNzaW9uU2Vzc2lvbik7Ci0rICAgIENvbXBy
ZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUoX2NvbXByZXNzaW9uU2Vzc2lvbik7Ci0gICAgIENGUmVs
ZWFzZShfY29tcHJlc3Npb25TZXNzaW9uKTsKLSAgICAgX2NvbXByZXNzaW9uU2Vzc2lvbiA9IG51
bGxwdHI7Ci0tICAgIF9waXhlbEJ1ZmZlclBvb2wgPSBudWxscHRyOwotICAgfQotIH0KLSAKLUBA
IC02NjQsNyArNzk2LDcgQEAgLSAodm9pZClzZXRFbmNvZGVyQml0cmF0ZUJwczoodWludDMyX3Qp
Yml0cmF0ZUJwcyB7Ci0gICAgICAgICBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmb25lU2Vjb25kVmFsdWUpOwotICAgICBjb25zdCB2b2lk
ICpudW1zWzJdID0ge2J5dGVzUGVyU2Vjb25kLCBvbmVTZWNvbmR9OwotICAgICBDRkFycmF5UmVm
IGRhdGFSYXRlTGltaXRzID0gQ0ZBcnJheUNyZWF0ZShudWxscHRyLCBudW1zLCAyLCAma0NGVHlw
ZUFycmF5Q2FsbEJhY2tzKTsKLS0gICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJv
cGVydHkoCi0rICAgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9uU2Vzc2lvblNldFByb3Bl
cnR5KAotICAgICAgICAgX2NvbXByZXNzaW9uU2Vzc2lvbiwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0
eUtleV9EYXRhUmF0ZUxpbWl0cywgZGF0YVJhdGVMaW1pdHMpOwotICAgICBpZiAoYnl0ZXNQZXJT
ZWNvbmQpIHsKLSAgICAgICBDRlJlbGVhc2UoYnl0ZXNQZXJTZWNvbmQpOwotQEAgLTY3Niw3ICs4
MDgsNyBAQCAtICh2b2lkKXNldEVuY29kZXJCaXRyYXRlQnBzOih1aW50MzJfdCliaXRyYXRlQnBz
IHsKLSAgICAgICBDRlJlbGVhc2UoZGF0YVJhdGVMaW1pdHMpOwotICAgICB9Ci0gICAgIGlmIChz
dGF0dXMgIT0gbm9FcnIpIHsKLS0gICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRv
IHNldCBkYXRhIHJhdGUgbGltaXQgd2l0aCBjb2RlOiAiIDw8IHN0YXR1czsKLSsgICAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHNldCBkYXRhIHJhdGUgbGltaXQiOwotICAgICB9
Ci0gCi0gICAgIF9lbmNvZGVyQml0cmF0ZUJwcyA9IGJpdHJhdGVCcHM7Ci1AQCAtNjkzLDcgKzgy
NSw3IEBAIC0gKHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1cylzdGF0dXMKLSAgICAgICAg
ICAgICAgIHRpbWVzdGFtcDoodWludDMyX3QpdGltZXN0YW1wCi0gICAgICAgICAgICAgICAgcm90
YXRpb246KFJUQ1ZpZGVvUm90YXRpb24pcm90YXRpb24gewotICAgaWYgKHN0YXR1cyAhPSBub0Vy
cikgewotLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiSDI2NCBlbmNvZGUgZmFpbGVkIHdpdGgg
Y29kZTogIiA8PCBzdGF0dXM7Ci0rICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJIMjY0IGVuY29k
ZSBmYWlsZWQ6ICIgPDwgc3RhdHVzOwotICAgICByZXR1cm47Ci0gICB9Ci0gICBpZiAoaW5mb0Zs
YWdzICYga1ZURW5jb2RlSW5mb19GcmFtZURyb3BwZWQpIHsKLUBAIC03MzgsNiArODcwLDcgQEAg
LSAodm9pZClmcmFtZVdhc0VuY29kZWQ6KE9TU3RhdHVzKXN0YXR1cwotICAgZnJhbWUucm90YXRp
b24gPSByb3RhdGlvbjsKLSAgIGZyYW1lLmNvbnRlbnRUeXBlID0gKF9tb2RlID09IFJUQ1ZpZGVv
Q29kZWNNb2RlU2NyZWVuc2hhcmluZykgPyBSVENWaWRlb0NvbnRlbnRUeXBlU2NyZWVuc2hhcmUg
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJUQ1ZpZGVvQ29udGVudFR5cGVVbnNwZWNpZmllZDsKLSsgIGZyYW1lLnNw
YXRpYWxJbmRleCA9IF9zaW11bGNhc3RJbmRleDsKLSAgIGZyYW1lLmZsYWdzID0gd2VicnRjOjpW
aWRlb1NlbmRUaW1pbmc6OmtJbnZhbGlkOwotIAotICAgaW50IHFwOwotQEAgLTc1Myw5ICs4ODYs
ODggQEAgLSAodm9pZClmcmFtZVdhc0VuY29kZWQ6KE9TU3RhdHVzKXN0YXR1cwotICAgX2JpdHJh
dGVBZGp1c3Rlci0+VXBkYXRlKGZyYW1lLmJ1ZmZlci5sZW5ndGgpOwotIH0KLSAKLS0tIChudWxs
YWJsZSBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMgKilzY2FsaW5nU2V0dGluZ3MgewotLSAg
cmV0dXJuIFtbUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzIGFsbG9jXSBpbml0V2l0aFRocmVz
aG9sZHNMb3c6a0xvd0gyNjRRcFRocmVzaG9sZAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2g6a0hpZ2hIMjY0UXBUaHJl
c2hvbGRdOwotKy0gKFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyAqKXNjYWxpbmdTZXR0aW5n
cyB7Ci0rICByZXR1cm4gW1tSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMgYWxsb2NdIGluaXRX
aXRoVGhyZXNob2xkc0xvdzprTG93SDI2NFFwVGhyZXNob2xkIGhpZ2g6a0hpZ2hIMjY0UXBUaHJl
c2hvbGRdOwotK30KLSsKLSstIChpbnQpc2V0UmF0ZUFsbG9jYXRpb246KFJUQ1ZpZGVvQml0cmF0
ZUFsbG9jYXRpb24gKilhbGxvY2F0aW9uIGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsK
LSsgIHJldHVybiAwOwotK30KLSsKLStAZW5kCi0rCi0rQGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVv
RW5jb2RlckgyNjQgewotKyAgTlNNdXRhYmxlQXJyYXk8UlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2
NCo+ICpfY29kZWNzOwotKyAgUlRDVmlkZW9Db2RlY0luZm8gKl9jb2RlY0luZm87Ci0rfQotKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlkZW9Db2RlY0luZm8gKiljb2Rl
Y0luZm8gewotKyAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSsgICAgX2NvZGVjSW5mbyA9
IGNvZGVjSW5mbzsKLSsgIH0KLSsgIHJldHVybiBzZWxmOwotK30KLSsKLSstICh2b2lkKXNldENh
bGxiYWNrOihSVENWaWRlb0VuY29kZXJDYWxsYmFjayljYWxsYmFjayB7Ci0rICBmb3IgKFJUQ1Np
bmdsZVZpZGVvRW5jb2RlckgyNjQgKmNvZGVjIDogX2NvZGVjcykKLSsgICAgW2NvZGVjIHNldENh
bGxiYWNrOmNhbGxiYWNrXTsKLSt9Ci0rCi0rLSAoTlNJbnRlZ2VyKXN0YXJ0RW5jb2RlV2l0aFNl
dHRpbmdzOihSVENWaWRlb0VuY29kZXJTZXR0aW5ncyAqKXNldHRpbmdzIG51bWJlck9mQ29yZXM6
KGludCludW1iZXJPZkNvcmVzIHsKLSsgICAgYXV0byBuYXRpdmVDb2RlY1NldHRpbmdzID0gc2V0
dGluZ3MubmF0aXZlVmlkZW9Db2RlYzsKLSsKLSsgIF9jb2RlY3MgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XTsKLSsgIGZvciAodW5zaWduZWQgaW5kZXggPSAwIDsgaW5kZXggPCBuYXRp
dmVDb2RlY1NldHRpbmdzLm51bWJlck9mU2ltdWxjYXN0U3RyZWFtczsgKytpbmRleCkgewotKyAg
ICBhdXRvIGNvZGVjID0gW1tSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IGFsbG9jXSBpbml0V2l0
aENvZGVjSW5mbzpfY29kZWNJbmZvIHNpbXVsY2FzdEluZGV4OmluZGV4XTsKLSsgICAgW19jb2Rl
Y3MgYWRkT2JqZWN0OmNvZGVjXTsKLSsKLSsgICAgYXV0byBjb2RlY1NldHRpbmdzID0gbmF0aXZl
Q29kZWNTZXR0aW5nczsKLSsgICAgY29kZWNTZXR0aW5ncy53aWR0aCA9IG5hdGl2ZUNvZGVjU2V0
dGluZ3Muc2ltdWxjYXN0U3RyZWFtW2luZGV4XS53aWR0aDsKLSsgICAgY29kZWNTZXR0aW5ncy5o
ZWlnaHQgPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNpbXVsY2FzdFN0cmVhbVtpbmRleF0uaGVpZ2h0
OwotKyAgICBjb2RlY1NldHRpbmdzLm1heEJpdHJhdGUgPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNp
bXVsY2FzdFN0cmVhbVtpbmRleF0ubWF4Qml0cmF0ZTsKLSsgICAgY29kZWNTZXR0aW5ncy50YXJn
ZXRCaXRyYXRlID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNhc3RTdHJlYW1baW5kZXhdLnRh
cmdldEJpdHJhdGU7Ci0rICAgIGNvZGVjU2V0dGluZ3MubWluQml0cmF0ZSA9IG5hdGl2ZUNvZGVj
U2V0dGluZ3Muc2ltdWxjYXN0U3RyZWFtW2luZGV4XS5taW5CaXRyYXRlOwotKyAgICBjb2RlY1Nl
dHRpbmdzLnFwTWF4ID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNhc3RTdHJlYW1baW5kZXhd
LnFwTWF4OwotKyAgICBjb2RlY1NldHRpbmdzLmFjdGl2ZSA9IHRydWU7Ci0rCi0rICAgIGF1dG8g
KnNldHRpbmdzID0gW1tSVENWaWRlb0VuY29kZXJTZXR0aW5ncyBhbGxvY10gaW5pdFdpdGhOYXRp
dmVWaWRlb0NvZGVjOiZjb2RlY1NldHRpbmdzXTsKLSsgICAgW2NvZGVjIHN0YXJ0RW5jb2RlV2l0
aFNldHRpbmdzOnNldHRpbmdzIG51bWJlck9mQ29yZXM6bnVtYmVyT2ZDb3Jlc107Ci0rICB9Ci0r
ICByZXR1cm4gMDsKLSt9Ci0rCi0rLSAoTlNJbnRlZ2VyKXJlbGVhc2VFbmNvZGVyIHsKLSsgIGZv
ciAoUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCAqY29kZWMgOiBfY29kZWNzKQotKyAgICBbY29k
ZWMgcmVsZWFzZUVuY29kZXJdOwotKyAgX2NvZGVjcyA9IG5pbDsKLSsgIHJldHVybiAwOwotK30K
LSsKLSstIChOU0ludGVnZXIpZW5jb2RlOihSVENWaWRlb0ZyYW1lICopZnJhbWUgY29kZWNTcGVj
aWZpY0luZm86KG51bGxhYmxlIGlkPFJUQ0NvZGVjU3BlY2lmaWNJbmZvPilpbmZvIGZyYW1lVHlw
ZXM6KE5TQXJyYXk8TlNOdW1iZXIgKj4gKilmcmFtZVR5cGVzIHsKLSsgIGludCByZXN1bHQgPSAw
OwotKyAgZm9yIChSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICpjb2RlYyA6IF9jb2RlY3MpCi0r
ICAgIHJlc3VsdCB8PSBbY29kZWMgZW5jb2RlOmZyYW1lIGNvZGVjU3BlY2lmaWNJbmZvOmluZm8g
ZnJhbWVUeXBlczpmcmFtZVR5cGVzXTsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotKy0gKGlu
dClzZXRSYXRlQWxsb2NhdGlvbjooUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqKWJpdFJhdGVB
bGxvY2F0aW9uIGZyYW1lcmF0ZToodWludDMyX3QpIGZyYW1lcmF0ZSB7Ci0rICBpbnQgcmVzdWx0
ID0gMDsKLSsgIHVuc2lnbmVkIGNvdW50ZXIgPSAwOwotKyAgYXV0byBuYXRpdmVCaXRSYXRlQWxs
b2NhdGlvbiA9IGJpdFJhdGVBbGxvY2F0aW9uLm5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb247
Ci0rICBmb3IgKFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgKmNvZGVjIDogX2NvZGVjcykKLSsg
ICAgcmVzdWx0IHw9IFtjb2RlYyBzZXRCaXRyYXRlOm5hdGl2ZUJpdFJhdGVBbGxvY2F0aW9uLkdl
dFNwYXRpYWxMYXllclN1bShjb3VudGVyKyspIGZyYW1lcmF0ZTpmcmFtZXJhdGVdOwotKyAgcmV0
dXJuIHJlc3VsdDsKLSt9Ci0rCi0rLSAoTlNTdHJpbmcgKilpbXBsZW1lbnRhdGlvbk5hbWUgewot
KyAgcmV0dXJuIEAiVmlkZW9Ub29sYm94IjsKLSt9Ci0rCi0rLSAoUlRDVmlkZW9FbmNvZGVyUXBU
aHJlc2hvbGRzICopc2NhbGluZ1NldHRpbmdzIHsKLSsgIHJldHVybiBbW1JUQ1ZpZGVvRW5jb2Rl
clFwVGhyZXNob2xkcyBhbGxvY10gaW5pdFdpdGhUaHJlc2hvbGRzTG93OmtMb3dIMjY0UXBUaHJl
c2hvbGQgaGlnaDprSGlnaEgyNjRRcFRocmVzaG9sZF07Ci0rfQotKwotKy0gKGludClzZXRCaXRy
YXRlOih1aW50MzJfdCliaXRyYXRlS2JpdCBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZSB7
Ci0rICByZXR1cm4gMDsKLSB9Ci0gCi0gQGVuZAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29k
ZWMvaGVscGVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5jYwotaW5kZXggYWM5NTdm
MWI0OTcuLjQ2ZGFmNDRlY2FjIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJz
LmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuY2MKLUBAIC0zNSwxMiArMzUsMTIg
QEAgc3RkOjpzdHJpbmcgQ0ZTdHJpbmdUb1N0cmluZyhjb25zdCBDRlN0cmluZ1JlZiBjZl9zdHJp
bmcpIHsKLSB9Ci0gCi0gLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBw
cm9wZXJ0eS4KLS12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9u
LAotK3ZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBrZXksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHZhbHVlKSB7Ci0gICBDRk51bWJlclJlZiBjZk51
bSA9Ci0gICAgICAgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVy
U0ludDMyVHlwZSwgJnZhbHVlKTsKLS0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFBy
b3BlcnR5KHNlc3Npb24sIGtleSwgY2ZOdW0pOwotKyAgT1NTdGF0dXMgc3RhdHVzID0gQ29tcHJl
c3Npb25TZXNzaW9uU2V0UHJvcGVydHkoc2Vzc2lvbiwga2V5LCBjZk51bSk7Ci0gICBDRlJlbGVh
c2UoY2ZOdW0pOwotICAgaWYgKHN0YXR1cyAhPSBub0VycikgewotICAgICBzdGQ6OnN0cmluZyBr
ZXlfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyhrZXkpOwotQEAgLTUwLDEzICs1MCwxMyBAQCB2
b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAotIH0KLSAKLSAv
LyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZvaWQg
U2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sCi0rdm9pZCBTZXRWVFNl
c3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IHZhbHVlKSB7Ci0gICBpbnQ2NF90IHZhbHVlXzY0ID0gdmFsdWU7Ci0gICBD
Rk51bWJlclJlZiBjZk51bSA9Ci0gICAgICAgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJnZhbHVlXzY0KTsKLS0gIE9TU3RhdHVzIHN0YXR1
cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZOdW0pOwotKyAgT1NTdGF0
dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNzaW9uU2V0UHJvcGVydHkoc2Vzc2lvbiwga2V5LCBj
Zk51bSk7Ci0gICBDRlJlbGVhc2UoY2ZOdW0pOwotICAgaWYgKHN0YXR1cyAhPSBub0Vycikgewot
ICAgICBzdGQ6OnN0cmluZyBrZXlfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyhrZXkpOwotQEAg
LTY2LDkgKzY2LDkgQEAgdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vz
c2lvbiwKLSB9Ci0gCi0gLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBw
cm9wZXJ0eS4KLS12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9u
LCBDRlN0cmluZ1JlZiBrZXksIGJvb2wgdmFsdWUpIHsKLSt2b2lkIFNldFZUU2Vzc2lvblByb3Bl
cnR5KENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIGJvb2wg
dmFsdWUpIHsKLSAgIENGQm9vbGVhblJlZiBjZl9ib29sID0gKHZhbHVlKSA/IGtDRkJvb2xlYW5U
cnVlIDoga0NGQm9vbGVhbkZhbHNlOwotLSAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0
UHJvcGVydHkoc2Vzc2lvbiwga2V5LCBjZl9ib29sKTsKLSsgIE9TU3RhdHVzIHN0YXR1cyA9IENv
bXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZfYm9vbCk7Ci0gICBp
ZiAoc3RhdHVzICE9IG5vRXJyKSB7Ci0gICAgIHN0ZDo6c3RyaW5nIGtleV9zdHJpbmcgPSBDRlN0
cmluZ1RvU3RyaW5nKGtleSk7Ci0gICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWVFNlc3Npb25T
ZXRQcm9wZXJ0eSBmYWlsZWQgdG8gc2V0OiAiIDw8IGtleV9zdHJpbmcKLUBAIC03NywxMCArNzcs
MTAgQEAgdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZT
dHJpbmdSZWYga2V5LCBib29sIHZhbHVlKSB7Ci0gfQotIAotIC8vIENvbnZlbmllbmNlIGZ1bmN0
aW9uIGZvciBzZXR0aW5nIGEgVlQgcHJvcGVydHkuCi0tdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0
eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKLSt2b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KENvbXBy
ZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZT
dHJpbmdSZWYga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgdmFs
dWUpIHsKLS0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24s
IGtleSwgdmFsdWUpOwotKyAgT1NTdGF0dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNzaW9uU2V0
UHJvcGVydHkoc2Vzc2lvbiwga2V5LCB2YWx1ZSk7Ci0gICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7
Ci0gICAgIHN0ZDo6c3RyaW5nIGtleV9zdHJpbmcgPSBDRlN0cmluZ1RvU3RyaW5nKGtleSk7Ci0g
ICAgIHN0ZDo6c3RyaW5nIHZhbF9zdHJpbmcgPSBDRlN0cmluZ1RvU3RyaW5nKHZhbHVlKTsKLWRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMv
aGVscGVycy5oCi1pbmRleCAwNjgzZWE3OWU1Ni4uMGM2NjllOGJjZTYgMTAwNjQ0Ci0tLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25l
bnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJz
LmgKLUBAIC0xNiw2ICsxNiw4IEBACi0gI2luY2x1ZGUgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xi
b3guaD4KLSAjaW5jbHVkZSA8c3RyaW5nPgotIAotKyNpbmNsdWRlICJzZGsvV2ViS2l0L0VuY29k
ZXJVdGlsaXRpZXMuaCIKLSsKLSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcg
YSBkaWN0aW9uYXJ5LgotIGlubGluZSBDRkRpY3Rpb25hcnlSZWYgQ3JlYXRlQ0ZUeXBlRGljdGlv
bmFyeShDRlR5cGVSZWYqIGtleXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENGVHlwZVJlZiogdmFsdWVzLAotQEAgLTI5LDE4ICszMSwxOCBAQCBpbmxp
bmUgQ0ZEaWN0aW9uYXJ5UmVmIENyZWF0ZUNGVHlwZURpY3Rpb25hcnkoQ0ZUeXBlUmVmKiBrZXlz
LAotIHN0ZDo6c3RyaW5nIENGU3RyaW5nVG9TdHJpbmcoY29uc3QgQ0ZTdHJpbmdSZWYgY2Zfc3Ry
aW5nKTsKLSAKLSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3Bl
cnR5LgotLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sIENG
U3RyaW5nUmVmIGtleSwgaW50MzJfdCB2YWx1ZSk7Ci0rdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0
eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBpbnQzMl90
IHZhbHVlKTsKLSAKLSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHBy
b3BlcnR5LgotLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24s
Ci0rdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGtleSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbHVlKTsKLSAKLSAvLyBDb252ZW5pZW5jZSBm
dW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZvaWQgU2V0VlRTZXNzaW9uUHJv
cGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwgYm9vbCB2YWx1ZSk7
Ci0rdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lv
biwgQ0ZTdHJpbmdSZWYga2V5LCBib29sIHZhbHVlKTsKLSAKLSAvLyBDb252ZW5pZW5jZSBmdW5j
dGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVy
dHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sCi0rdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21w
cmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENG
U3RyaW5nUmVmIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIHZh
bHVlKTsKLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVs
QnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVmZmVyLmgKLWlu
ZGV4IDQzMmEzODI1NzQ2Li5hYmU5ZGZjYTkzYiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fZnJh
bWVfYnVmZmVyL1JUQ0NWUGl4ZWxCdWZmZXIuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19mcmFtZV9idWZm
ZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oCi1AQCAtMTcsNiArMTcsNyBAQCBOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgotIAotIC8qKiBSVENWaWRlb0ZyYW1lQnVmZmVyIGNvbnRhaW5pbmcgYSBDVlBpeGVs
QnVmZmVyUmVmICovCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50
aW1lX25hbWUoIldLX1JUQ0NWUGl4ZWxCdWZmZXIiKSkpCi0gQGludGVyZmFjZSBSVENDVlBpeGVs
QnVmZmVyIDogTlNPYmplY3QgPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+Ci0gCi0gQHByb3BlcnR5KG5v
bmF0b21pYywgcmVhZG9ubHkpIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXI7Ci1kaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
bmF0aXZlL3NyYy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY192aWRl
b19lbmNvZGVyX2ZhY3RvcnkubW0KLWluZGV4IGJhN2MzZTk2NzU0Li5jNGM4NWNjNmFiOSAxMDA2
NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL25hdGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KLSsrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMv
b2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KLUBAIC05Miw2ICs5MiwxMiBAQCBjbGFzcyBP
YmpDVmlkZW9FbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7Ci0gICAgIHJldHVybiBbZW5j
b2Rlcl8gc2V0Qml0cmF0ZTpiaXRyYXRlIGZyYW1lcmF0ZTpmcmFtZXJhdGVdOwotICAgfQotIAot
KyAgaW50MzJfdCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9u
JiBhbGxvY2F0aW9uLCB1aW50MzJfdCBmcmFtZXJhdGUpIHsKLSsgICAgUlRDVmlkZW9CaXRyYXRl
QWxsb2NhdGlvbiAqYml0cmF0ZUFsbG9jYXRpb24gPQotKyAgICAgIFtbUlRDVmlkZW9CaXRyYXRl
QWxsb2NhdGlvbiBhbGxvY10gaW5pdFdpdGhOYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOiZh
bGxvY2F0aW9uXTsKLSsgICAgcmV0dXJuIFtlbmNvZGVyXyBzZXRSYXRlQWxsb2NhdGlvbjogYml0
cmF0ZUFsbG9jYXRpb24gZnJhbWVyYXRlOmZyYW1lcmF0ZV07Ci0rICB9Ci0rCi0gICBib29sIFN1
cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotIAotICAgVmlkZW9F
bmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3QgewotLS0g
Ci0yLjE3LjEgKEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9XZWJLaXQvbGlid2VicnRjLmRpZmYgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvV2ViS2l0L2xpYndlYnJ0Yy5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyNDI4ZTQxNWRjYTg2ZmMw
NzQ0ZWNkOTgxM2VlY2YwZDJjMDc3ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvV2ViS2l0L2xpYndlYnJ0Yy5kaWZmCkBAIC0wLDAgKzEsMjU2OCBAQAor
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9f
ZW5jb2Rlcl9pbGJjLmNjCitpbmRleCA4OTZlZDIzOGNjMy4uNGQwMjhjOWFhZjQgMTAwNjQ0Cist
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5j
b2Rlcl9pbGJjLmNjCitAQCAtMzMsNyArMzMsNyBAQCBpbnQgR2V0SWxiY0JpdHJhdGUoaW50IHB0
aW1lKSB7CisgICAgICAgLy8gNTAgYnl0ZXMgcGVyIGZyYW1lIG9mIDMwIG1zID0+IChhcHByb3gp
IDEzMzMzIGJpdHMvcy4KKyAgICAgICByZXR1cm4gMTMzMzM7CisgICAgIGRlZmF1bHQ6CistICAg
ICAgRkFUQUwoKTsKKysgICAgICBSVENfRkFUQUwoKTsKKyAgIH0KKyB9CisgfSAgLy8gbmFtZXNw
YWNlCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL21lZGlhdHlwZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvbWVkaWF0eXBlcy5jYworaW5kZXggNTk5NTQyZGIwOGYuLjE0MGQwYWU5NjI1
IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL21lZGlhdHlwZXMuY2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9tZWRpYXR5cGVzLmNjCitAQCAtMjgsNyArMjgsNyBAQCBzdGQ6OnN0cmlu
ZyBNZWRpYVR5cGVUb1N0cmluZyhNZWRpYVR5cGUgdHlwZSkgeworICAgICBjYXNlIE1FRElBX1RZ
UEVfREFUQToKKyAgICAgICByZXR1cm4ga01lZGlhVHlwZURhdGE7CisgICB9CistICBGQVRBTCgp
OworKyAgUlRDX0ZBVEFMKCk7CisgICAvLyBOb3QgcmVhY2hhYmxlOyBhdm9pZHMgY29tcGlsZSB3
YXJuaW5nLgorICAgcmV0dXJuICIiOworIH0KK0BAIC00MSw3ICs0MSw3IEBAIE1lZGlhVHlwZSBN
ZWRpYVR5cGVGcm9tU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlX3N0cikgeworICAgfSBl
bHNlIGlmICh0eXBlX3N0ciA9PSBrTWVkaWFUeXBlRGF0YSkgeworICAgICByZXR1cm4gTUVESUFf
VFlQRV9EQVRBOworICAgfQorLSAgRkFUQUwoKTsKKysgIFJUQ19GQVRBTCgpOworICAgLy8gTm90
IHJlYWNoYWJsZTsgYXZvaWRzIGNvbXBpbGUgd2FybmluZy4KKyAgIHJldHVybiBzdGF0aWNfY2Fz
dDxNZWRpYVR5cGU+KC0xKTsKKyB9CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYwor
aW5kZXggY2M1OWUyYTgyM2MuLmIxMTU4ZGEyMTNmIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MKKysr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4
X3Jlc2FtcGxlLmNjCitAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFJlbWl4QW5kUmVzYW1wbGUoY29u
c3QgaW50MTZfdCogc3JjX2RhdGEsCisgCisgICBpZiAocmVzYW1wbGVyLT5Jbml0aWFsaXplSWZO
ZWVkZWQoc2FtcGxlX3JhdGVfaHosIGRzdF9mcmFtZS0+c2FtcGxlX3JhdGVfaHpfLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3B0cl9udW1fY2hhbm5lbHMpID09
IC0xKSB7CistICAgIEZBVEFMKCkgPDwgIkluaXRpYWxpemVJZk5lZWRlZCBmYWlsZWQ6IHNhbXBs
ZV9yYXRlX2h6ID0gIiA8PCBzYW1wbGVfcmF0ZV9oegorKyAgICBSVENfRkFUQUwoKSA8PCAiSW5p
dGlhbGl6ZUlmTmVlZGVkIGZhaWxlZDogc2FtcGxlX3JhdGVfaHogPSAiIDw8IHNhbXBsZV9yYXRl
X2h6CisgICAgICAgICAgICAgPDwgIiwgZHN0X2ZyYW1lLT5zYW1wbGVfcmF0ZV9oel8gPSAiIDw8
IGRzdF9mcmFtZS0+c2FtcGxlX3JhdGVfaHpfCisgICAgICAgICAgICAgPDwgIiwgYXVkaW9fcHRy
X251bV9jaGFubmVscyA9ICIgPDwgYXVkaW9fcHRyX251bV9jaGFubmVsczsKKyAgIH0KK0BAIC02
OSw3ICs2OSw3IEBAIHZvaWQgUmVtaXhBbmRSZXNhbXBsZShjb25zdCBpbnQxNl90KiBzcmNfZGF0
YSwKKyAgICAgICByZXNhbXBsZXItPlJlc2FtcGxlKGF1ZGlvX3B0ciwgc3JjX2xlbmd0aCwgZHN0
X2ZyYW1lLT5tdXRhYmxlX2RhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlv
RnJhbWU6OmtNYXhEYXRhU2l6ZVNhbXBsZXMpOworICAgaWYgKG91dF9sZW5ndGggPT0gLTEpIHsK
Ky0gICAgRkFUQUwoKSA8PCAiUmVzYW1wbGUgZmFpbGVkOiBhdWRpb19wdHIgPSAiIDw8IGF1ZGlv
X3B0cgorKyAgICBSVENfRkFUQUwoKSA8PCAiUmVzYW1wbGUgZmFpbGVkOiBhdWRpb19wdHIgPSAi
IDw8IGF1ZGlvX3B0cgorICAgICAgICAgICAgIDw8ICIsIHNyY19sZW5ndGggPSAiIDw8IHNyY19s
ZW5ndGgKKyAgICAgICAgICAgICA8PCAiLCBkc3RfZnJhbWUtPm11dGFibGVfZGF0YSgpID0gIiA8
PCBkc3RfZnJhbWUtPm11dGFibGVfZGF0YSgpOworICAgfQorZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRp
by93YXZfZmlsZS5jYworaW5kZXggMWI4YmNiZDkyM2MuLjkwYTg5MjgxZTVjIDEwMDY0NAorLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlv
L3dhdl9maWxlLmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKK0BAIC02Myw3ICs2Myw3IEBAIFdhdlJlYWRl
cjo6V2F2UmVhZGVyKHJ0Yzo6UGxhdGZvcm1GaWxlIGZpbGUpIHsKKyAgICAgaWYgKCFydGM6OkNs
b3NlUGxhdGZvcm1GaWxlKGZpbGUpKSB7CisgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNh
bid0IGNsb3NlIGZpbGUuIjsKKyAgICAgfQorLSAgICBGQVRBTCgpIDw8ICJDb3VsZCBub3Qgb3Bl
biB3YXYgZmlsZSBmb3IgcmVhZGluZy4iOworKyAgICBSVENfRkFUQUwoKSA8PCAiQ291bGQgbm90
IG9wZW4gd2F2IGZpbGUgZm9yIHJlYWRpbmcuIjsKKyAgIH0KKyAKKyAgIFJlYWRhYmxlV2F2Rmls
ZSByZWFkYWJsZShmaWxlX2hhbmRsZV8pOworQEAgLTE0OCw3ICsxNDgsNyBAQCBXYXZXcml0ZXI6
OldhdldyaXRlcihydGM6OlBsYXRmb3JtRmlsZSBmaWxlLAorICAgICBpZiAoIXJ0Yzo6Q2xvc2VQ
bGF0Zm9ybUZpbGUoZmlsZSkpIHsKKyAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ2FuJ3Qg
Y2xvc2UgZmlsZS4iOworICAgICB9CistICAgIEZBVEFMKCkgPDwgIkNvdWxkIG5vdCBvcGVuIHdh
diBmaWxlIGZvciB3cml0aW5nLiI7CisrICAgIFJUQ19GQVRBTCgpIDw8ICJDb3VsZCBub3Qgb3Bl
biB3YXYgZmlsZSBmb3Igd3JpdGluZy4iOworICAgfQorIAorICAgUlRDX0NIRUNLKENoZWNrV2F2
UGFyYW1ldGVycyhudW1fY2hhbm5lbHNfLCBzYW1wbGVfcmF0ZV8sIGtXYXZGb3JtYXQsCitkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZV9idWZmZXIuY2MKK2luZGV4
IGY0ZjEzOGZjY2I1Li41Zjg5YjRhY2I5NiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZV9idWZmZXIu
Y2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl92aWRlby92aWRlb19mcmFtZV9idWZmZXIuY2MKK0BAIC0yNzIsNyArMjcyLDcgQEAgcnRjOjpz
Y29wZWRfcmVmcHRyPFBsYW5hcll1dkJ1ZmZlcj4gV3JhcFl1dkJ1ZmZlcigKKyAgICAgICByZXR1
cm4gV3JhcEk0NDRCdWZmZXIod2lkdGgsIGhlaWdodCwgeV9wbGFuZSwgeV9zdHJpZGUsIHVfcGxh
bmUsIHVfc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2X3BsYW5lLCB2X3N0
cmlkZSwgbm9fbG9uZ2VyX3VzZWQpOworICAgICBkZWZhdWx0OgorLSAgICAgIEZBVEFMKCkgPDwg
IlVuZXhwZWN0ZWQgZnJhbWUgYnVmZmVyIHR5cGUuIjsKKysgICAgICBSVENfRkFUQUwoKSA8PCAi
VW5leHBlY3RlZCBmcmFtZSBidWZmZXIgdHlwZS4iOworICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgfQorIH0KK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25n
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5jYworaW5kZXggOWEyOTI2
MTQzZDAuLjQ3Njk1NGZlNjBkIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19l
bmNvZGVyX2NuZy5jYworKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5j
YworQEAgLTE3MSw3ICsxNzEsNyBAQCBBdWRpb0VuY29kZXI6OkVuY29kZWRJbmZvIEF1ZGlvRW5j
b2RlckNuZzo6RW5jb2RlSW1wbCgKKyAgICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIFZh
ZDo6a0Vycm9yOiB7CistICAgICAgRkFUQUwoKTsgIC8vIEZhaWxzIG9ubHkgaWYgZmVkIGludmFs
aWQgZGF0YS4KKysgICAgICBSVENfRkFUQUwoKTsgIC8vIEZhaWxzIG9ubHkgaWYgZmVkIGludmFs
aWQgZGF0YS4KKyAgICAgICBicmVhazsKKyAgICAgfQorICAgfQorZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1
ZGlvX2VuY29kZXJfaWxiYy5jYworaW5kZXggODgwMWZkNTU1OTAuLjM1ZTZmYzY0YTYyIDEwMDY0
NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCisrKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKK0BAIC00MSw3ICs0MSw3IEBA
IGludCBHZXRJbGJjQml0cmF0ZShpbnQgcHRpbWUpIHsKKyAgICAgICAvLyA1MCBieXRlcyBwZXIg
ZnJhbWUgb2YgMzAgbXMgPT4gKGFwcHJveCkgMTMzMzMgYml0cy9zLgorICAgICAgIHJldHVybiAx
MzMzMzsKKyAgICAgZGVmYXVsdDoKKy0gICAgICBGQVRBTCgpOworKyAgICAgIFJUQ19GQVRBTCgp
OworICAgfQorIH0KKyAKK0BAIC0xNDgsNyArMTQ4LDcgQEAgc2l6ZV90IEF1ZGlvRW5jb2Rlckls
YmNJbXBsOjpSZXF1aXJlZE91dHB1dFNpemVCeXRlcygpIGNvbnN0IHsKKyAgICAgY2FzZSA2Ogor
ICAgICAgIHJldHVybiAyICogNTA7CisgICAgIGRlZmF1bHQ6CistICAgICAgRkFUQUwoKTsKKysg
ICAgICBSVENfRkFUQUwoKTsKKyAgIH0KKyB9CisgCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3ZwOS92cDlfbm9vcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X25vb3AuY2MKK25ldyBmaWxl
IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uYjA1OGMyZDY3MjgKKy0tLSAvZGV2L251
bGwKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X25vb3AuY2MKK0BAIC0wLDAgKzEsNDMgQEAK
KysvKgorKyAqICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisrICoKKysgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKysgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisrICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorKyAqCisrICovCisrCisrI2lmICFkZWZpbmVkKFJU
Q19ESVNBQkxFX1ZQOSkKKysjZXJyb3IKKysjZW5kaWYgIC8vICFkZWZpbmVkKFJUQ19ESVNBQkxF
X1ZQOSkKKysKKysjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9pbmNs
dWRlL3ZwOS5oIgorKworKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3Jt
YXQuaCIKKysjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisrCisrbmFtZXNwYWNlIHdlYnJ0
YyB7CisrCisrc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IFN1cHBvcnRlZFZQOUNvZGVjcygp
IHsKKysgIHJldHVybiBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4oKTsKKyt9CisrCisrc3Rk
Ojp1bmlxdWVfcHRyPFZQOUVuY29kZXI+IFZQOUVuY29kZXI6OkNyZWF0ZSgpIHsKKysgIFJUQ19O
T1RSRUFDSEVEKCk7CisrICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisrc3RkOjp1bmlxdWVfcHRy
PFZQOUVuY29kZXI+IFZQOUVuY29kZXI6OkNyZWF0ZSgKKysgICAgY29uc3QgY3JpY2tldDo6Vmlk
ZW9Db2RlYyYgY29kZWMpIHsKKysgIFJUQ19OT1RSRUFDSEVEKCk7CisrICByZXR1cm4gbnVsbHB0
cjsKKyt9CisrCisrc3RkOjp1bmlxdWVfcHRyPFZQOURlY29kZXI+IFZQOURlY29kZXI6OkNyZWF0
ZSgpIHsKKysgIFJUQ19OT1RSRUFDSEVEKCk7CisrICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisr
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjCitpbmRleCBl
MDE4ZWE3NTVkNi4uMGQ3YWVhOWQ2MGEgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjCisrKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjCitA
QCAtMzUxLDExICszNTEsMjEgQEAgVENQQ29ubmVjdGlvbjo6VENQQ29ubmVjdGlvbihUQ1BQb3J0
KiBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsIHBvcnQoKSBOZXR3b3JrOiIg
PDwgcG9ydC0+TmV0d29yaygpLT5Ub1N0cmluZygpOworICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxy
dGM6OkludGVyZmFjZUFkZHJlc3M+JiBkZXNpcmVkX2FkZHJlc3NlcyA9CisgICAgICAgICBwb3J0
Xy0+TmV0d29yaygpLT5HZXRJUHMoKTsKKysKKysjaWYgZGVmaW5lZChXRUJSVENfV0VCS0lUX0JV
SUxEKQorKyAgICAgUlRDX0RDSEVDSyhzb2NrZXQtPkdldExvY2FsQWRkcmVzcygpLklzTG9vcGJh
Y2tJUCgpIHx8CisrICAgICAgICAgICAgICAgIChzdGQ6OmZpbmRfaWYoZGVzaXJlZF9hZGRyZXNz
ZXMuYmVnaW4oKSwgZGVzaXJlZF9hZGRyZXNzZXMuZW5kKCksCisrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbdGhpc10oY29uc3QgcnRjOjpJbnRlcmZhY2VBZGRyZXNzJiBhZGRyKSB7Cisr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzb2NrZXRfLT5HZXRMb2NhbEFk
ZHJlc3MoKS5pcGFkZHIoKSA9PQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkcjsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICE9IGRlc2lyZWRfYWRk
cmVzc2VzLmVuZCgpKSk7CisrICNlbHNlCisgICAgIFJUQ19EQ0hFQ0soc3RkOjpmaW5kX2lmKGRl
c2lyZWRfYWRkcmVzc2VzLmJlZ2luKCksIGRlc2lyZWRfYWRkcmVzc2VzLmVuZCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbdGhpc10oY29uc3QgcnRjOjpJbnRlcmZhY2VBZGRyZXNz
JiBhZGRyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvY2tldF8t
PkdldExvY2FsQWRkcmVzcygpLmlwYWRkcigpID09CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICE9IGRl
c2lyZWRfYWRkcmVzc2VzLmVuZCgpKTsKKysjZW5kaWYKKyAgICAgQ29ubmVjdFNvY2tldFNpZ25h
bHMoc29ja2V0KTsKKyAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0
b3J5LmNjCitpbmRleCAzN2M2YTBiMGJjZi4uNzUyNjE1MDhiMjcgMTAwNjQ0CistLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZh
Y3RvcnkuY2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYworQEAgLTI2MSw3ICsyNjEsNyBAQCBSdHBDYXBh
YmlsaXRpZXMgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpHZXRSdHBTZW5kZXJDYXBhYmlsaXRpZXMo
CisgICAgICAgcmV0dXJuIFJ0cENhcGFiaWxpdGllcygpOworICAgfQorICAgLy8gTm90IHJlYWNo
ZWQ7IGF2b2lkcyBjb21waWxlIHdhcm5pbmcuCistICBGQVRBTCgpOworKyAgUlRDX0ZBVEFMKCk7
CisgfQorIAorIFJ0cENhcGFiaWxpdGllcyBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkdldFJ0cFJl
Y2VpdmVyQ2FwYWJpbGl0aWVzKAorQEAgLTI4OCw3ICsyODgsNyBAQCBSdHBDYXBhYmlsaXRpZXMg
UGVlckNvbm5lY3Rpb25GYWN0b3J5OjpHZXRSdHBSZWNlaXZlckNhcGFiaWxpdGllcygKKyAgICAg
ICByZXR1cm4gUnRwQ2FwYWJpbGl0aWVzKCk7CisgICB9CisgICAvLyBOb3QgcmVhY2hlZDsgYXZv
aWRzIGNvbXBpbGUgd2FybmluZy4KKy0gIEZBVEFMKCk7CisrICBSVENfRkFUQUwoKTsKKyB9Cisg
CisgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvU291cmNlSW50ZXJmYWNlPgorZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRl
cnNjb252ZXJzaW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb24uY2MKK2luZGV4IGJmM2JjZTNkYWEzLi44NjU2
ODVkNzNjNCAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5j
YworQEAgLTYxLDcgKzYxLDcgQEAgUlRDRXJyb3JPcjxjcmlja2V0OjpGZWVkYmFja1BhcmFtPiBU
b0NyaWNrZXRGZWVkYmFja1BhcmFtKAorICAgICAgIHJldHVybiBjcmlja2V0OjpGZWVkYmFja1Bh
cmFtKGNyaWNrZXQ6OmtSdGNwRmJQYXJhbVRyYW5zcG9ydENjKTsKKyAgIH0KKyAgIC8vIE5vdCBy
ZWFjaGVkOyBhdm9pZHMgY29tcGlsZSB3YXJuaW5nLgorLSAgRkFUQUwoKTsKKysgIFJUQ19GQVRB
TCgpOworIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK2RpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NoZWNrcy5o
CitpbmRleCA5ZGU2ZDQ3NTczYy4uNWNmMDY3OTkxMGUgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaAorKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2hlY2tz
LmgKK0BAIC04MCw3ICs4MCw3IEBAIFJUQ19OT1JFVFVSTiB2b2lkIHJ0Y19GYXRhbE1lc3NhZ2Uo
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIG1zZyk7CisgLy8gICBtZXNz
YWdlcyBpZiB0aGUgY29uZGl0aW9uIGRvZXNuJ3QgaG9sZC4gUHJlZmVyIHRoZW0gdG8gcmF3IFJU
Q19DSEVDSyBhbmQKKyAvLyAgIFJUQ19EQ0hFQ0suCisgLy8KKy0vLyAtIEZBVEFMKCkgYWJvcnRz
IHVuY29uZGl0aW9uYWxseS4KKysvLyAtIFJUQ19GQVRBTCgpIGFib3J0cyB1bmNvbmRpdGlvbmFs
bHkuCisgLy8KKyAvLyBUT0RPKGFqbSk6IElkZWFsbHksIGNoZWNrcy5oIHdvdWxkIGJlIGNvbWJp
bmVkIHdpdGggbG9nZ2luZy5oLCBidXQKKyAvLyBjb25zb2xpZGF0aW9uIHdpdGggc3lzdGVtX3dy
YXBwZXJzL2xvZ2dpbmcuaCBzaG91bGQgaGFwcGVuIGZpcnN0LgorQEAgLTM0OCw5ICszNDgsOSBA
QCBjbGFzcyBGYXRhbExvZ0NhbGwgZmluYWwgeworICNkZWZpbmUgUlRDX05PVFJFQUNIRUQoKSBS
VENfRENIRUNLKFJUQ19VTlJFQUNIQUJMRV9DT0RFX0hJVCkKKyAKKyAvLyBUT0RPKGJ1Z3Mud2Vi
cnRjLm9yZy84NDU0KTogQWRkIGFuIFJUQ18gcHJlZml4IG9yIHJlbmFtZSBkaWZmZXJlbnRseS4K
Ky0jZGVmaW5lIEZBVEFMKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorKyNkZWZpbmUgUlRDX0ZBVEFMKCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgcnRjOjp3ZWJydGNfY2hlY2tzX2lt
cGw6OkZhdGFsTG9nQ2FsbDxmYWxzZT4oX19GSUxFX18sIF9fTElORV9fLCBcCistICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRkFUQUwoKSIpICYgICAgICAg
IFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSVENf
RkFUQUwoKSIpICYgICAgICAgIFwKKyAgICAgICBydGM6OndlYnJ0Y19jaGVja3NfaW1wbDo6TG9n
U3RyZWFtZXI8PigpCisgCisgLy8gUGVyZm9ybXMgdGhlIGludGVnZXIgZGl2aXNpb24gYS9iIGFu
ZCByZXR1cm5zIHRoZSByZXN1bHQuIENIRUNLcyB0aGF0IHRoZQorZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3Mu
Y2MKK2luZGV4IGJjY2UwZGFmYmMwLi42YjQzYjkxZTAyNiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjCisrKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFn
cy5jYworQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBGbGFnOjpTZXRUb0RlZmF1bHQoKSB7CisgICAg
ICAgdmFyaWFibGVfLT5zID0gZGVmYXVsdF8uczsKKyAgICAgICByZXR1cm47CisgICB9CistICBG
QVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKysgIFJUQ19GQVRBTCgpIDw8ICJ1bnJlYWNo
YWJsZSBjb2RlIjsKKyB9CisgCisgc3RhdGljIGNvbnN0IGNoYXIqIFR5cGUyU3RyaW5nKEZsYWc6
OlR5cGUgdHlwZSkgeworQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIFR5cGUy
U3RyaW5nKEZsYWc6OlR5cGUgdHlwZSkgeworICAgICBjYXNlIEZsYWc6OlNUUklORzoKKyAgICAg
ICByZXR1cm4gInN0cmluZyI7CisgICB9CistICBGQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2Rl
IjsKKysgIFJUQ19GQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKyB9CisgCisgc3RhdGlj
IHZvaWQgUHJpbnRGbGFnVmFsdWUoRmxhZzo6VHlwZSB0eXBlLCBGbGFnVmFsdWUqIHApIHsKK0BA
IC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgUHJpbnRGbGFnVmFsdWUoRmxhZzo6VHlwZSB0
eXBlLCBGbGFnVmFsdWUqIHApIHsKKyAgICAgICBwcmludGYoIiVzIiwgcC0+cyk7CisgICAgICAg
cmV0dXJuOworICAgfQorLSAgRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7CisrICBSVENf
RkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7CisgfQorIAorIHZvaWQgRmxhZzo6UHJpbnQo
Ym9vbCBwcmludF9jdXJyZW50X3ZhbHVlKSB7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmgKK2lu
ZGV4IDUxM2JjMjYzNjUxLi43MThkOTU4OTM0OCAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmgKKysrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9u
LmgKK0BAIC01MCw3ICs1MCw3IEBAIGNsYXNzIExvY2F0aW9uIHsKKyAjZGVmaW5lIFJUQ19GUk9N
X0hFUkUgUlRDX0ZST01fSEVSRV9XSVRIX0ZVTkNUSU9OKF9fRlVOQ1RJT05fXykKKyAKKyAjZGVm
aW5lIFJUQ19GUk9NX0hFUkVfV0lUSF9GVU5DVElPTihmdW5jdGlvbl9uYW1lKSBcCistICA6OnJ0
Yzo6TG9jYXRpb24oZnVuY3Rpb25fbmFtZSwgX19GSUxFX18gIjoiIFNUUklOR0laRShfX0xJTkVf
XykpCisrICA6OnJ0Yzo6TG9jYXRpb24oZnVuY3Rpb25fbmFtZSwgX19GSUxFX18gIjoiIFJUQ19T
VFJJTkdJWkUoX19MSU5FX18pKQorIAorIH0gIC8vIG5hbWVzcGFjZSBydGMKKyAKK2RpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9s
b2dnaW5nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbG9nZ2luZy5jYworaW5kZXggYmI0ZmJmYWFlMjUuLjQ0ZWMzZjUwYzE5IDEwMDY0NAor
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
bG9nZ2luZy5jYworKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbG9nZ2luZy5jYworQEAgLTIwLDI4ICsyMCwyNiBAQAorICNpbmNsdWRlIDxD
b3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+CisgI2VsaWYgZGVmaW5lZChXRUJSVENfQU5EUk9J
RCkKKyAjaW5jbHVkZSA8YW5kcm9pZC9sb2cuaD4KKy0KKyAvLyBBbmRyb2lkIGhhcyBhIDEwMjQg
bGltaXQgb24gbG9nIGlucHV0cy4gV2UgdXNlIDYwIGNoYXJzIGFzIGFuCisgLy8gYXBwcm94IGZv
ciB0aGUgaGVhZGVyL3RhZyBwb3J0aW9uLgorIC8vIFNlZSBhbmRyb2lkL3N5c3RlbS9jb3JlL2xp
YmxvZy9sb2dkX3dyaXRlLmMKKyBzdGF0aWMgY29uc3QgaW50IGtNYXhMb2dMaW5lU2l6ZSA9IDEw
MjQgLSA2MDsKKyAjZW5kaWYgIC8vIFdFQlJUQ19NQUMgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykg
fHwgV0VCUlRDX0FORFJPSUQKKyAKKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8c3Ry
aW5nLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDx0aW1lLmg+CisrCisgI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KKyAjaW5jbHVkZSA8Y3N0ZGFyZz4KKyAjaW5jbHVkZSA8dmVjdG9y
PgorIAorLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y3JpdGljYWxzZWN0aW9uLmgiCisgI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyAjaW5j
bHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmgiCisrI2luY2x1ZGUgInJ0Y19i
YXNlL25ldmVyX2Rlc3Ryb3llZC5oIgorICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUu
aCIKKyAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgorICNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgorLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRf
YW5ub3RhdGlvbnMuaCIKKyAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCisgCisgbmFt
ZXNwYWNlIHJ0YyB7CitAQCAtNjUsMjAgKzYzLDE5IEBAIGNvbnN0IGNoYXIqIEZpbGVuYW1lRnJv
bVBhdGgoY29uc3QgY2hhciogZmlsZSkgeworICAgICByZXR1cm4gKGVuZDEgPiBlbmQyKSA/IGVu
ZDEgKyAxIDogZW5kMiArIDE7CisgfQorIAorLS8vIEdsb2JhbCBsb2NrIGZvciBsb2cgc3Vic3lz
dGVtLCBvbmx5IG5lZWRlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHN0cmVhbXNfLgorLUNyaXRp
Y2FsU2VjdGlvbiBnX2xvZ19jcml0OworKy8vIEdsb2JhbCBsb2NrIGZvciBsb2cgc3Vic3lzdGVt
LCBvbmx5IG5lZWRlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHN0cmVhbUxpc3QoKS4KKytDcml0
aWNhbFNlY3Rpb24mIGxvZ0NyaXRpY2FsU2NvcGUoKSB7CisrICBzdGF0aWMgYXV0byBzY29wZSA9
IG1ha2VOZXZlckRlc3Ryb3llZDw+KENyaXRpY2FsU2VjdGlvbiB7IH0pOworKyAgcmV0dXJuIHNj
b3BlLmdldCgpOworK30KKysKKyB9ICAvLyBuYW1lc3BhY2UKKyAKKyAvLyBJbmVmZmljaWVudCBk
ZWZhdWx0IGltcGxlbWVudGF0aW9uLCBvdmVycmlkZSBpcyByZWNvbW1lbmRlZC4KKyB2b2lkIExv
Z1Npbms6Ok9uTG9nTWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbXNnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExvZ2dpbmdTZXZlcml0eSBzZXZlcml0eSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YWcpIHsKKy0gIE9uTG9nTWVzc2FnZSh0YWcgKyAo
IjogIiArIG1zZyksIHNldmVyaXR5KTsKKy19CistCistdm9pZCBMb2dTaW5rOjpPbkxvZ01lc3Nh
Z2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1zZywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBM
b2dnaW5nU2V2ZXJpdHkgLyogc2V2ZXJpdHkgKi8pIHsKKy0gIE9uTG9nTWVzc2FnZShtc2cpOwor
KyAgT25Mb2dNZXNzYWdlKHRhZyArICgiOiAiICsgbXNnKSk7CisgfQorIAorIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCitAQCAtOTEsNyArODgsMTUgQEAgYm9vbCBMb2dNZXNzYWdlOjpsb2dfdG9fc3Rk
ZXJyXyA9IHRydWU7CisgLy8gTm90ZTogd2UgZXhwbGljaXRseSBkbyBub3QgY2xlYW4gdGhpcyB1
cCwgYmVjYXVzZSBvZiB0aGUgdW5jZXJ0YWluIG9yZGVyaW5nCisgLy8gb2YgZGVzdHJ1Y3RvcnMg
YXQgcHJvZ3JhbSBleGl0LiAgTGV0IHRoZSBwZXJzb24gd2hvIHNldHMgdGhlIHN0cmVhbSB0cmln
Z2VyCisgLy8gY2xlYW51cCBieSBzZXR0aW5nIHRvIG51bGwsIG9yIGxldCBpdCBsZWFrIChzYWZl
IGF0IHByb2dyYW0gZXhpdCkuCistTG9nTWVzc2FnZTo6U3RyZWFtTGlzdCBMb2dNZXNzYWdlOjpz
dHJlYW1zXyBSVENfR1VBUkRFRF9CWShnX2xvZ19jcml0KTsKKyt0eXBlZGVmIHN0ZDo6cGFpcjxM
b2dTaW5rKiwgTG9nZ2luZ1NldmVyaXR5PiBTdHJlYW1BbmRTZXZlcml0eTsKKyt0eXBlZGVmIHN0
ZDo6bGlzdDxTdHJlYW1BbmRTZXZlcml0eT4gU3RyZWFtTGlzdDsKKysKKysvLyBUaGUgb3V0cHV0
IHN0cmVhbXMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgc2V2ZXJpdGllcworK1N0cmVhbUxpc3QmIHN0
cmVhbUxpc3QoKQorKyAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGxvZ0NyaXRpY2Fs
U2NvcGUoKSkgeworKyAgICAgICAgc3RhdGljIGF1dG8gc3RyZWFtX2xpc3QgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQ8PihTdHJlYW1MaXN0IHsgfSk7CisrICByZXR1cm4gc3RyZWFtX2xpc3QuZ2V0KCk7
CisrfQorIAorIC8vIEJvb2xlYW4gb3B0aW9ucyBkZWZhdWx0IHRvIGZhbHNlICgwKQorIGJvb2wg
TG9nTWVzc2FnZTo6dGhyZWFkXywgTG9nTWVzc2FnZTo6dGltZXN0YW1wXzsKK0BAIC0xMDUsNiAr
MTEwLDcgQEAgTG9nTWVzc2FnZTo6TG9nTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgTG9nRXJyb3JDb250ZXh0IGVycl9jdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZXJyKQorICAgICA6IHNldmVyaXR5XyhzZXYpIHsKKysKKyAgIGlmICh0
aW1lc3RhbXBfKSB7CisgICAgIC8vIFVzZSBTeXN0ZW1UaW1lTWlsbGlzIHNvIHRoYXQgZXZlbiBp
ZiB0ZXN0cyB1c2UgZmFrZSBjbG9ja3MsIHRoZSB0aW1lc3RhbXAKKyAgICAgLy8gaW4gbG9nIG1l
c3NhZ2VzIHJlcHJlc2VudHMgdGhlIHJlYWwgc3lzdGVtIHRpbWUuCitAQCAtMjA1LDEzICsyMTEs
MTMgQEAgTG9nTWVzc2FnZTo6fkxvZ01lc3NhZ2UoKSB7CisgI2VuZGlmCisgICB9CisgCistICBD
cml0U2NvcGUgY3MoJmdfbG9nX2NyaXQpOworLSAgZm9yIChhdXRvJiBrdiA6IHN0cmVhbXNfKSB7
CisrICBDcml0U2NvcGUgY3MoJmxvZ0NyaXRpY2FsU2NvcGUoKSk7CisrICBmb3IgKGF1dG8mIGt2
IDogc3RyZWFtTGlzdCgpKSB7CisgICAgIGlmIChzZXZlcml0eV8gPj0ga3Yuc2Vjb25kKSB7Cisg
I2lmIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCisgICAgICAga3YuZmlyc3QtPk9uTG9nTWVzc2Fn
ZShzdHIsIHNldmVyaXR5XywgdGFnXyk7CisgI2Vsc2UKKy0gICAgICBrdi5maXJzdC0+T25Mb2dN
ZXNzYWdlKHN0ciwgc2V2ZXJpdHlfKTsKKysgICAgICBrdi5maXJzdC0+T25Mb2dNZXNzYWdlKHN0
cik7CisgI2VuZGlmCisgICAgIH0KKyAgIH0KK0BAIC0yNTQsNyArMjYwLDcgQEAgdm9pZCBMb2dN
ZXNzYWdlOjpMb2dUaW1lc3RhbXBzKGJvb2wgb24pIHsKKyAKKyB2b2lkIExvZ01lc3NhZ2U6Okxv
Z1RvRGVidWcoTG9nZ2luZ1NldmVyaXR5IG1pbl9zZXYpIHsKKyAgIGdfZGJnX3NldiA9IG1pbl9z
ZXY7CistICBDcml0U2NvcGUgY3MoJmdfbG9nX2NyaXQpOworKyAgQ3JpdFNjb3BlIGNzKCZsb2dD
cml0aWNhbFNjb3BlKCkpOworICAgVXBkYXRlTWluTG9nU2V2ZXJpdHkoKTsKKyB9CisgCitAQCAt
MjYzLDkgKzI2OSw5IEBAIHZvaWQgTG9nTWVzc2FnZTo6U2V0TG9nVG9TdGRlcnIoYm9vbCBsb2df
dG9fc3RkZXJyKSB7CisgfQorIAorIGludCBMb2dNZXNzYWdlOjpHZXRMb2dUb1N0cmVhbShMb2dT
aW5rKiBzdHJlYW0pIHsKKy0gIENyaXRTY29wZSBjcygmZ19sb2dfY3JpdCk7CisrICBDcml0U2Nv
cGUgY3MoJmxvZ0NyaXRpY2FsU2NvcGUoKSk7CisgICBMb2dnaW5nU2V2ZXJpdHkgc2V2ID0gTFNf
Tk9ORTsKKy0gIGZvciAoYXV0byYga3YgOiBzdHJlYW1zXykgeworKyAgZm9yIChhdXRvJiBrdiA6
IHN0cmVhbUxpc3QoKSkgeworICAgICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0gPT0ga3YuZmlyc3Qp
IHsKKyAgICAgICBzZXYgPSBzdGQ6Om1pbihzZXYsIGt2LnNlY29uZCk7CisgICAgIH0KK0BAIC0y
NzQsMTYgKzI4MCwxNiBAQCBpbnQgTG9nTWVzc2FnZTo6R2V0TG9nVG9TdHJlYW0oTG9nU2luayog
c3RyZWFtKSB7CisgfQorIAorIHZvaWQgTG9nTWVzc2FnZTo6QWRkTG9nVG9TdHJlYW0oTG9nU2lu
ayogc3RyZWFtLCBMb2dnaW5nU2V2ZXJpdHkgbWluX3NldikgeworLSAgQ3JpdFNjb3BlIGNzKCZn
X2xvZ19jcml0KTsKKy0gIHN0cmVhbXNfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihzdHJlYW0s
IG1pbl9zZXYpKTsKKysgIENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29wZSgpKTsKKysgIHN0
cmVhbUxpc3QoKS5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoc3RyZWFtLCBtaW5fc2V2KSk7Cisg
ICBVcGRhdGVNaW5Mb2dTZXZlcml0eSgpOworIH0KKyAKKyB2b2lkIExvZ01lc3NhZ2U6OlJlbW92
ZUxvZ1RvU3RyZWFtKExvZ1NpbmsqIHN0cmVhbSkgeworLSAgQ3JpdFNjb3BlIGNzKCZnX2xvZ19j
cml0KTsKKy0gIGZvciAoU3RyZWFtTGlzdDo6aXRlcmF0b3IgaXQgPSBzdHJlYW1zXy5iZWdpbigp
OyBpdCAhPSBzdHJlYW1zXy5lbmQoKTsgKytpdCkgeworKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0
aWNhbFNjb3BlKCkpOworKyAgZm9yIChTdHJlYW1MaXN0OjppdGVyYXRvciBpdCA9IHN0cmVhbUxp
c3QoKS5iZWdpbigpOyBpdCAhPSBzdHJlYW1MaXN0KCkuZW5kKCk7ICsraXQpIHsKKyAgICAgaWYg
KHN0cmVhbSA9PSBpdC0+Zmlyc3QpIHsKKy0gICAgICBzdHJlYW1zXy5lcmFzZShpdCk7CisrICAg
ICAgc3RyZWFtTGlzdCgpLmVyYXNlKGl0KTsKKyAgICAgICBicmVhazsKKyAgICAgfQorICAgfQor
QEAgLTM0Miw5ICszNDgsOSBAQCB2b2lkIExvZ01lc3NhZ2U6OkNvbmZpZ3VyZUxvZ2dpbmcoY29u
c3QgY2hhciogcGFyYW1zKSB7CisgfQorIAorIHZvaWQgTG9nTWVzc2FnZTo6VXBkYXRlTWluTG9n
U2V2ZXJpdHkoKQorLSAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGdfbG9nX2NyaXQp
IHsKKysgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChsb2dDcml0aWNhbFNjb3BlKCkp
IHsKKyAgIExvZ2dpbmdTZXZlcml0eSBtaW5fc2V2ID0gZ19kYmdfc2V2OworLSAgZm9yIChjb25z
dCBhdXRvJiBrdiA6IHN0cmVhbXNfKSB7CisrICBmb3IgKGNvbnN0IGF1dG8mIGt2IDogc3RyZWFt
TGlzdCgpKSB7CisgICAgIGNvbnN0IExvZ2dpbmdTZXZlcml0eSBzZXYgPSBrdi5zZWNvbmQ7Cisg
ICAgIG1pbl9zZXYgPSBzdGQ6Om1pbihtaW5fc2V2LCBzZXYpOworICAgfQorQEAgLTQ1OCwxMSAr
NDY0LDggQEAgYm9vbCBMb2dNZXNzYWdlOjpJc05vb3AoTG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5
KSB7CisgICAvLyBUT0RPKHRvbW1pKTogV2UncmUgZ3JhYmJpbmcgdGhpcyBsb2NrIGZvciBldmVy
eSBMb2dNZXNzYWdlIGluc3RhbmNlIHRoYXQKKyAgIC8vIGlzIGdvaW5nIHRvIGJlIGxvZ2dlZC4g
VGhpcyBpbnRyb2R1Y2VzIHVubmVjZXNzYXJ5IHN5bmNocm9uaXphdGlvbiBmb3IKKyAgIC8vIGEg
ZmVhdHVyZSB0aGF0J3MgbW9zdGx5IHVzZWQgZm9yIHRlc3RpbmcuCistICBDcml0U2NvcGUgY3Mo
JmdfbG9nX2NyaXQpOworLSAgaWYgKHN0cmVhbXNfLnNpemUoKSA+IDApCistICAgIHJldHVybiBm
YWxzZTsKKy0KKy0gIHJldHVybiB0cnVlOworKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0aWNhbFNj
b3BlKCkpOworKyAgcmV0dXJuIHN0cmVhbUxpc3QoKS5zaXplKCkgPT0gMDsKKyB9CisgCisgdm9p
ZCBMb2dNZXNzYWdlOjpGaW5pc2hQcmludFN0cmVhbSgpIHsKK2RpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZlcl9kZXN0cm95
ZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L25ldmVyX2Rlc3Ryb3llZC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAw
MDAuLmZjYzYyZTM1NTM0CistLS0gL2Rldi9udWxsCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZlcl9kZXN0cm95ZWQuaAorQEAgLTAs
MCArMSw2OSBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFy
ZSBtZXQ6CisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KysgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKysgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisrICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisrICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisrICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKysgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKysgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICovCisrCisrI3ByYWdt
YSBvbmNlCisrCisrI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorKyNpbmNsdWRlIDx1dGlsaXR5Pgor
KworK25hbWVzcGFjZSBydGMgeworKworK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE5ldmVy
RGVzdHJveWVkIHsKKytwdWJsaWM6CisrICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IE5l
dmVyRGVzdHJveWVkKEFyZ3MmJi4uLiBhcmdzKQorKyAgICB7CisrICAgICAgICBuZXcgKHN0b3Jh
Z2VQb2ludGVyKCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKysgICAgfQorKwor
KyAgICBOZXZlckRlc3Ryb3llZChOZXZlckRlc3Ryb3llZCYmIG90aGVyKQorKyAgICB7CisrICAg
ICAgICBuZXcgKHN0b3JhZ2VQb2ludGVyKCkpIFQoc3RkOjptb3ZlKCpvdGhlci5zdG9yYWdlUG9p
bnRlcigpKSk7CisrICAgIH0KKysKKysgICAgb3BlcmF0b3IgVCYoKSB7IHJldHVybiAqc3RvcmFn
ZVBvaW50ZXIoKTsgfQorKyAgICBUJiBnZXQoKSB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsg
fQorKworKyAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgcmV0dXJuICpzdG9yYWdlUG9p
bnRlcigpOyB9CisrICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpzdG9yYWdlUG9p
bnRlcigpOyB9CisrCisrcHJpdmF0ZToKKysgICAgTmV2ZXJEZXN0cm95ZWQoY29uc3QgTmV2ZXJE
ZXN0cm95ZWQmKSA9IGRlbGV0ZTsKKysgICAgTmV2ZXJEZXN0cm95ZWQmIG9wZXJhdG9yPShjb25z
dCBOZXZlckRlc3Ryb3llZCYpID0gZGVsZXRlOworKworKyAgICB1c2luZyBQb2ludGVyVHlwZSA9
IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlKjsKKysKKysgICAgUG9pbnRlclR5
cGUgc3RvcmFnZVBvaW50ZXIoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFBvaW50ZXJUeXBl
PihyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPigmbV9zdG9yYWdlKSk7IH0KKysKKysgICAgLy8g
RklYTUU6IEludmVzdGlnYXRlIHdoZXRoZXIgd2Ugc2hvdWxkIGFsbG9jYXRlIGEgaHVuayBvZiB2
aXJ0dWFsIG1lbW9yeQorKyAgICAvLyBhbmQgaGFuZCBvdXQgY2h1bmtzIG9mIGl0IHRvIE5ldmVy
RGVzdHJveWVkIGluc3RlYWQsIHRvIHJlZHVjZSBmcmFnbWVudGF0aW9uLgorKyAgICB0eXBlbmFt
ZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2
YWx1ZT46OnR5cGUgbV9zdG9yYWdlOworK307CisrCisrdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIE5ldmVyRGVzdHJveWVkPFQ+IG1ha2VOZXZlckRlc3Ryb3llZChUJiYgYXJndW1lbnQpCisr
eworKyAgICByZXR1cm4gTmV2ZXJEZXN0cm95ZWQ8VD4oc3RkOjptb3ZlKGFyZ3VtZW50KSk7Cisr
fQorKworK30gLy8gbmFtZXNwYWNlIHJ0YworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lv
bnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaAoraW5kZXggNThlZmNhYTc0NmEuLjQ4YzIxMmU0
ZDQ5IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oCisrKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9zYWZlX2Nv
bnZlcnNpb25zLmgKK0BAIC02MywxMSArNjMsMTEgQEAgaW5saW5lIERzdCBzYXR1cmF0ZWRfY2Fz
dChTcmMgdmFsdWUpIHsKKyAKKyAgICAgLy8gU2hvdWxkIGZhaWwgb25seSBvbiBhdHRlbXB0aW5n
IHRvIGFzc2lnbiBOYU4gdG8gYSBzYXR1cmF0ZWQgaW50ZWdlci4KKyAgICAgY2FzZSBpbnRlcm5h
bDo6VFlQRV9JTlZBTElEOgorLSAgICAgIEZBVEFMKCk7CisrICAgICAgUlRDX0ZBVEFMKCk7Cisg
ICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8RHN0Pjo6bWF4KCk7CisgICB9CisgCist
ICBGQVRBTCgpOworKyAgUlRDX0ZBVEFMKCk7CisgICByZXR1cm4gc3RhdGljX2Nhc3Q8RHN0Pih2
YWx1ZSk7CisgfQorIAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0
ZS5jYworaW5kZXggNGU2MWI4NmYzYmEuLjRlMzI1ZGNlYzAxIDEwMDY0NAorLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRp
ZmljYXRlLmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MKK0BAIC0yNDQsMTEgKzI0NCwxMSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6Q2xvbmUo
KSBjb25zdCB7Cisgc3RkOjpzdHJpbmcgT3BlblNTTENlcnRpZmljYXRlOjpUb1BFTVN0cmluZygp
IGNvbnN0IHsKKyAgIEJJTyogYmlvID0gQklPX25ldyhCSU9fc19tZW0oKSk7CisgICBpZiAoIWJp
bykgeworLSAgICBGQVRBTCgpIDw8ICJVbnJlYWNoYWJsZSBjb2RlLiI7CisrICAgIFJUQ19GQVRB
TCgpIDw8ICJVbnJlYWNoYWJsZSBjb2RlLiI7CisgICB9CisgICBpZiAoIVBFTV93cml0ZV9iaW9f
WDUwOShiaW8sIHg1MDlfKSkgeworICAgICBCSU9fZnJlZShiaW8pOworLSAgICBGQVRBTCgpIDw8
ICJVbnJlYWNoYWJsZSBjb2RlLiI7CisrICAgIFJUQ19GQVRBTCgpIDw8ICJVbnJlYWNoYWJsZSBj
b2RlLiI7CisgICB9CisgICBCSU9fd3JpdGUoYmlvLCAiXDAiLCAxKTsKKyAgIGNoYXIqIGJ1ZmZl
cjsKK0BAIC0yNjQsMTEgKzI2NCwxMSBAQCB2b2lkIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9ERVIo
QnVmZmVyKiBkZXJfYnVmZmVyKSBjb25zdCB7CisgICAvLyBDYWxjdWxhdGVzIHRoZSBERVIgcmVw
cmVzZW50YXRpb24gb2YgdGhlIGNlcnRpZmljYXRlLCBmcm9tIHNjcmF0Y2guCisgICBCSU8qIGJp
byA9IEJJT19uZXcoQklPX3NfbWVtKCkpOworICAgaWYgKCFiaW8pIHsKKy0gICAgRkFUQUwoKSA8
PCAiVW5yZWFjaGFibGUgY29kZS4iOworKyAgICBSVENfRkFUQUwoKSA8PCAiVW5yZWFjaGFibGUg
Y29kZS4iOworICAgfQorICAgaWYgKCFpMmRfWDUwOV9iaW8oYmlvLCB4NTA5XykpIHsKKyAgICAg
QklPX2ZyZWUoYmlvKTsKKy0gICAgRkFUQUwoKSA8PCAiVW5yZWFjaGFibGUgY29kZS4iOworKyAg
ICBSVENfRkFUQUwoKSA8PCAiVW5yZWFjaGFibGUgY29kZS4iOworICAgfQorICAgY2hhciogZGF0
YSA9IG51bGxwdHI7CisgICBzaXplX3QgbGVuZ3RoID0gQklPX2dldF9tZW1fZGF0YShiaW8sICZk
YXRhKTsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9waHlzaWNhbHNvY2tldHNlcnZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2Fsc29ja2V0c2VydmVyLmNj
CitpbmRleCA0YWQyODU3YzAwYy4uNzQ0OGE3ZTA0MjcgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9waHlzaWNhbHNvY2tldHNl
cnZlci5jYworKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXIuY2MKK0BAIC01OTYsNyArNTk2LDcgQEAgYm9v
bCBTb2NrZXREaXNwYXRjaGVyOjpJbml0aWFsaXplKCkgeworICNlbGlmIGRlZmluZWQoV0VCUlRD
X1BPU0lYKQorICAgZmNudGwoc18sIEZfU0VURkwsIGZjbnRsKHNfLCBGX0dFVEZMLCAwKSB8IE9f
Tk9OQkxPQ0spOworICNlbmRpZgorLSNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCisrI2lmIGRlZmlu
ZWQoV0VCUlRDX0lPUykgfHwgKGRlZmluZWQoV0VCUlRDX01BQykgJiYgZGVmaW5lZChXRUJSVENf
V0VCS0lUX0JVSUxEKSkKKyAgIC8vIGlPUyBtYXkga2lsbCBzb2NrZXRzIHdoZW4gdGhlIGFwcCBp
cyBtb3ZlZCB0byB0aGUgYmFja2dyb3VuZAorICAgLy8gKHNwZWNpZmljYWxseSwgaWYgdGhlIGFw
cCBkb2Vzbid0IHVzZSB0aGUgInZvaXAiIFVJQmFja2dyb3VuZE1vZGUpLiBXaGVuCisgICAvLyB3
ZSBhdHRlbXB0IHRvIHdyaXRlIHRvIHN1Y2ggYSBzb2NrZXQsIFNJR1BJUEUgd2lsbCBiZSByYWlz
ZWQsIHdoaWNoIGJ5CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oCitp
bmRleCBhZWU4ZDE0NTUxZC4uMzhjNmYxODM2YmQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmgK
KysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3N0cmluZ2l6ZV9tYWNyb3MuaAorQEAgLTgsNyArOCw3IEBACisgICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICAqLworIAor
LS8vIE1vZGlmaWVkIGZyb20gdGhlIENocm9taXVtIG9yaWdpbmFsOgorKy8vIE1vZGlmaWVkIGZy
b20gdGhlIENoeHNyb21pdW0gb3JpZ2luYWw6CisgLy8gc3JjL2Jhc2Uvc3RyaW5ncy9zdHJpbmdp
emVfbWFjcm9zLmgKKyAKKyAvLyBUaGlzIGZpbGUgZGVmaW5lcyBwcmVwcm9jZXNzb3IgbWFjcm9z
IGZvciBzdHJpbmdpemluZyBwcmVwcm9jZXNzb3IKK0BAIC0zMyw2ICszMyw2IEBACisgLy8gVGhl
bjoKKyAvLyAgIFNUUklOR0laRShBKSBwcm9kdWNlcyAiRk9PIgorIC8vICAgU1RSSU5HSVpFKEIo
eSkpIHByb2R1Y2VzICJteW9iai0+RnVuY3Rpb25DYWxsKHkpIgorLSNkZWZpbmUgU1RSSU5HSVpF
KHgpIFNUUklOR0laRV9OT19FWFBBTlNJT04oeCkKKysjZGVmaW5lIFJUQ19TVFJJTkdJWkUoeCkg
U1RSSU5HSVpFX05PX0VYUEFOU0lPTih4KQorIAorICNlbmRpZiAgLy8gUlRDX0JBU0VfU1RSSU5H
SVpFX01BQ1JPU19IXworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2Vy
dmVyLmNjCitpbmRleCA3OTY5NDExMmM4MS4uYmZjZTBmNTQ1NDEgMTAwNjQ0CistLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29j
a2V0c2VydmVyLmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNjCitAQCAtMTAyNiw5ICsxMDI2LDkg
QEAgdm9pZCBWaXJ0dWFsU29ja2V0U2VydmVyOjpVcGRhdGVEZWxheURpc3RyaWJ1dGlvbigpIHsK
KyAgIH0KKyB9CisgCistc3RhdGljIGRvdWJsZSBQSSA9IDQgKiBhdGFuKDEuMCk7CisgCisgc3Rh
dGljIGRvdWJsZSBOb3JtYWwoZG91YmxlIHgsIGRvdWJsZSBtZWFuLCBkb3VibGUgc3RkZGV2KSB7
CisrICBzdGF0aWMgZG91YmxlIFBJID0gNCAqIGF0YW4oMS4wKTsKKyAgIGRvdWJsZSBhID0gKHgg
LSBtZWFuKSAqICh4IC0gbWVhbikgLyAoMiAqIHN0ZGRldiAqIHN0ZGRldik7CisgICByZXR1cm4g
ZXhwKC1hKSAvIChzdGRkZXYgKiBzcXJ0KDIgKiBQSSkpOworIH0KK2RpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L0VuY29kZXJV
dGlsaXRpZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvRW5jb2RlclV0aWxpdGllcy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg
MDAwMDAwMDAwMDAuLjViOWJkZmRhMTE0CistLS0gL2Rldi9udWxsCisrKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L0VuY29kZXJVdGlsaXRp
ZXMuaAorQEAgLTAsMCArMSw1MCBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworKyAqIGFyZSBtZXQ6CisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKysgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKysgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisrICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisrICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisrICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKysgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKysgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICov
CisrCisrI3ByYWdtYSBvbmNlCisrCisrI2luY2x1ZGUgIlZpZGVvUHJvY2Vzc2luZ1NvZnRMaW5r
LmgiCisrCisrI2lmIEVOQUJMRV9WQ1BfRU5DT0RFUgorKworKyNkZWZpbmUgQ29tcHJlc3Npb25T
ZXNzaW9uUmVmIFZDUENvbXByZXNzaW9uU2Vzc2lvblJlZgorKyNkZWZpbmUgQ29tcHJlc3Npb25T
ZXNzaW9uU2V0UHJvcGVydHkgd2VicnRjOjpWQ1BDb21wcmVzc2lvblNlc3Npb25TZXRQcm9wZXJ0
eQorKyNkZWZpbmUgQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sIHdlYnJ0Yzo6
VkNQQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sCisrI2RlZmluZSBDb21wcmVz
c2lvblNlc3Npb25FbmNvZGVGcmFtZSB3ZWJydGM6OlZDUENvbXByZXNzaW9uU2Vzc2lvbkVuY29k
ZUZyYW1lCisrI2RlZmluZSBDb21wcmVzc2lvblNlc3Npb25DcmVhdGUgd2VicnRjOjpWQ1BDb21w
cmVzc2lvblNlc3Npb25DcmVhdGUKKysjZGVmaW5lIGtDb2RlY1R5cGVIMjY0IGtWQ1BDb2RlY1R5
cGU0Q0NfSDI2NAorKyNkZWZpbmUgQ29tcHJlc3Npb25TZXNzaW9uSW52YWxpZGF0ZSB3ZWJydGM6
OlZDUENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUKKysKKysjZWxzZQorKworKyNkZWZpbmUg
Q29tcHJlc3Npb25TZXNzaW9uUmVmIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmCisrI2RlZmluZSBD
b21wcmVzc2lvblNlc3Npb25TZXRQcm9wZXJ0eSBWVFNlc3Npb25TZXRQcm9wZXJ0eQorKyNkZWZp
bmUgQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sIFZUQ29tcHJlc3Npb25TZXNz
aW9uR2V0UGl4ZWxCdWZmZXJQb29sCisrI2RlZmluZSBDb21wcmVzc2lvblNlc3Npb25FbmNvZGVG
cmFtZSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lCisrI2RlZmluZSBDb21wcmVzc2lv
blNlc3Npb25DcmVhdGUgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUKKysjZGVmaW5lIGtDb2Rl
Y1R5cGVIMjY0IGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQKKysjZGVmaW5lIENvbXByZXNzaW9uU2Vz
c2lvbkludmFsaWRhdGUgVlRDb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRlCisrCisrI2VuZGlm
CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL1dlYktpdC9WaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1ZpZGVvUHJvY2Vzc2luZ1NvZnRM
aW5rLmNwcAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4xMDFlODdj
NjY3NworLS0tIC9kZXYvbnVsbAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL1dlYktpdC9WaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5jcHAKK0BAIC0w
LDAgKzEsNzggQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBh
cmUgbWV0OgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICoKKysgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisrICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisrICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKysgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisrICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisrICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqLworKworKyNpbmNs
dWRlICJWaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5oIgorKworKyNpZiBFTkFCTEVfVkNQX0VOQ09E
RVIKKysKKysjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorKyNpbXBvcnQgPGRsZmNuLmg+
CisrI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisrCisrLy8gTWFjcm9zIGNvcGllZCBmcm9tIDx3
dGYvY29jb2EvU29mdExpbmtpbmcuaD4KKysjZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1F
V09SS19GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKysgICAgbmFt
ZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAorKyAgICB2b2lkKiBmcmFtZXdvcmsjI0xpYnJh
cnkoYm9vbCBpc09wdGlvbmFsKSBcCisrICAgIHsgXAorKyAgICAgICAgc3RhdGljIHZvaWQqIGZy
YW1ld29ya0xpYnJhcnk7IFwKKysgICAgICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsg
XAorKyAgICAgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsgXAorKyAgICAgICAgICAgIGZyYW1l
d29ya0xpYnJhcnkgPSBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy8i
ICNmcmFtZXdvcmsgIi5mcmFtZXdvcmsvIiAjZnJhbWV3b3JrLCBSVExEX05PVyk7IFwKKysgICAg
ICAgICAgICBpZiAoIWlzT3B0aW9uYWwgJiYgIWZyYW1ld29ya0xpYnJhcnkpIFwKKysgICAgICAg
ICAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbm5vdCBvcGVuIGZyYW1ld29yazogIiA8
PCBkbGVycm9yKCk7IFwKKysgICAgICAgIH0pOyBcCisrICAgICAgICByZXR1cm4gZnJhbWV3b3Jr
TGlicmFyeTsgXAorKyAgICB9IFwKKysgICAgfQorKworKyNkZWZpbmUgU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rpb25OYW1l
LCByZXN1bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzKSBcCisr
ICAgIGV4dGVybiAiQyIgeyBcCisrICAgIHJlc3VsdFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFtZXRl
ckRlY2xhcmF0aW9uczsgXAorKyAgICB9IFwKKysgICAgbmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNw
YWNlIHsgXAorKyAgICBzdGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9u
TmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnM7IFwKKysgICAgcmVzdWx0VHlwZSAoKnNvZnRMaW5r
IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkgcGFyYW1ldGVyRGVjbGFyYXRpb25zID0gaW5pdCMj
ZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWU7IFwKKysgICAgc3RhdGljIHJlc3VsdFR5cGUgaW5pdCMj
ZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zIFwKKysgICAgeyBc
CisrICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7IFwKKysgICAgICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2UsIF57IFwKKysgICAgICAgICAgICBzb2Z0TGluayMjZnJhbWV3b3JrIyNm
dW5jdGlvbk5hbWUgPSAocmVzdWx0VHlwZSAoKikgcGFyYW1ldGVyRGVjbGFyYXRpb25zKSBkbHN5
bShmcmFtZXdvcmsjI0xpYnJhcnkoKSwgI2Z1bmN0aW9uTmFtZSk7IFwKKysgICAgICAgICAgICBp
ZiAoIXNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkgXAorKyAgICAgICAgICAgICAg
ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ2Fubm90IGZpbmQgZnVuY3Rpb24gIyNmdW5jdGlvbk5h
bWU6ICIgPDwgZGxlcnJvcigpOyBcCisrICAgICAgICB9KTsgXAorKyAgICAgICAgcmV0dXJuIHNv
ZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJOYW1lczsgXAorKyAgICB9
IFwKKyt9CisrCisrU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0Uod2VicnRj
LCBWaWRlb1Byb2Nlc3NpbmcpCisrCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uod2Vi
cnRjLCBWaWRlb1Byb2Nlc3NpbmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5LCBP
U1N0YXR1cywgKFZDUENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBr
ZXksIENGVHlwZVJlZiB2YWx1ZSksIChzZXNzaW9uLCBrZXksIHZhbHVlKSkKKytTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRSh3ZWJydGMsIFZpZGVvUHJvY2Vzc2luZywgVkNQQ29tcHJlc3Np
b25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sLCBDVlBpeGVsQnVmZmVyUG9vbFJlZiwgKFZDUENv
bXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uKSwgKHNlc3Npb24pKQorK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKHdlYnJ0YywgVmlkZW9Qcm9jZXNzaW5nLCBWQ1BDb21wcmVzc2lvblNl
c3Npb25FbmNvZGVGcmFtZSwgT1NTdGF0dXMsIChWQ1BDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vz
c2lvbiwgQ1ZJbWFnZUJ1ZmZlclJlZiBidWZmZXIsIENNVGltZSB0aW1lc3RhbXAsIENNVGltZSB0
aW1lLCBDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgdm9pZCogZGF0YSwgVlRFbmNvZGVJbmZv
RmxhZ3MqIGZsYWdzKSwgKHNlc3Npb24sIGJ1ZmZlciwgdGltZXN0YW1wLCB0aW1lLCBkaWN0aW9u
YXJ5LCBkYXRhLCBmbGFncykpCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uod2VicnRj
LCBWaWRlb1Byb2Nlc3NpbmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMs
IChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IxLCBpbnQzMl90IHZhbHVlMSAsIGludDMyX3QgdmFs
dWUyLCBDTVZpZGVvQ29kZWNUeXBlIHR5cGUsIENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5MSwg
Q0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkyLCBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IzLCBW
VENvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGRhdGEsIFZDUENvbXBy
ZXNzaW9uU2Vzc2lvblJlZiogc2Vzc2lvbiksIChhbGxvY2F0b3IxLCB2YWx1ZTEsIHZhbHVlMiwg
dHlwZSwgZGljdGlvbmFyeTEsIGRpY3Rpb25hcnkyLCBhbGxvY2F0b3IzLCBjYWxsYmFjaywgZGF0
YSwgc2Vzc2lvbikpCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uod2VicnRjLCBWaWRl
b1Byb2Nlc3NpbmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUsIHZvaWQsIChWQ1BD
b21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKytTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRSh3ZWJydGMsIFZpZGVvUHJvY2Vzc2luZywgVlBNb2R1bGVJbml0aWFs
aXplLCB2b2lkLCAoKSwgKCkpCisrCisrI2VuZGlmIC8vIEVOQUJMRV9WQ1BfRU5DT0RFUgorZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuaAor
bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jZjg2NmQ4YThkYgorLS0t
IC9kZXYvbnVsbAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9WaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5oCitAQCAtMCwwICsxLDE0MCBA
QAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6Cisr
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKysgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKysgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisrICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisrICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisrICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKysgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKysgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICovCisrCisrI3ByYWdtYSBvbmNlCisr
CisrI2lmZGVmIF9fQVBQTEVfXworKyNpbmNsdWRlIDxBdmFpbGFiaWxpdHkuaD4KKysjaW5jbHVk
ZSA8QXZhaWxhYmlsaXR5TWFjcm9zLmg+CisrI2luY2x1ZGUgPFRhcmdldENvbmRpdGlvbmFscy5o
PgorKworKy8vIE1hY3JvIHRha2VuIGZyb20gV1RGL3d0Zi9QbGF0Zm9ybS5oCisrI2lmIGRlZmlu
ZWQgX19oYXNfaW5jbHVkZSAmJiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRhdGlvbi9DRlByaXYu
aD4pCisrCisrI2lmIChkZWZpbmVkKFRBUkdFVF9JUEhPTkVfU0lNVUxBVE9SKSAgJiYgVEFSR0VU
X0lQSE9ORV9TSU1VTEFUT1IpCisrI2RlZmluZSBFTkFCTEVfVkNQX0VOQ09ERVIgMAorKyNlbGlm
IChkZWZpbmVkKFRBUkdFVF9PU19JUEhPTkUpICAmJiBUQVJHRVRfT1NfSVBIT05FKQorKyNkZWZp
bmUgRU5BQkxFX1ZDUF9FTkNPREVSIDEKKysjZWxpZiAoZGVmaW5lZChUQVJHRVRfT1NfTUFDKSAm
JiBUQVJHRVRfT1NfTUFDKQorKyNkZWZpbmUgRU5BQkxFX1ZDUF9FTkNPREVSIChfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFY
X0FMTE9XRUQgPj0gMTAxMzA0KQorKyNlbmRpZgorKworKyNlbmRpZgorKworKyNpZiAhZGVmaW5l
ZChFTkFCTEVfVkNQX0VOQ09ERVIpCisrI2RlZmluZSBFTkFCTEVfVkNQX0VOQ09ERVIgMAorKyNl
bmRpZgorKworKyNpZiAhZGVmaW5lZChBTFdBWVNfSU5MSU5FKQorKyNkZWZpbmUgQUxXQVlTX0lO
TElORSBpbmxpbmUKKysjZW5kaWYKKysKKysjaWZkZWYgX19jcGx1c3BsdXMKKysjZGVmaW5lIFdU
Rl9FWFRFUk5fQ19CRUdJTiBleHRlcm4gIkMiIHsKKysjZGVmaW5lIFdURl9FWFRFUk5fQ19FTkQg
fQorKyNlbHNlCisrI2RlZmluZSBXVEZfRVhURVJOX0NfQkVHSU4KKysjZGVmaW5lIFdURl9FWFRF
Uk5fQ19FTkQKKysjZW5kaWYKKysKKysvLyBNYWNyb3MgY29waWVkIGZyb20gPHd0Zi9jb2NvYS9T
b2Z0TGlua2luZy5oPgorKyNkZWZpbmUgU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKGZ1
bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKysgICAgbmFtZXNwYWNlIGZ1bmN0aW9uTmFt
ZXNwYWNlIHsgXAorKyAgICBleHRlcm4gdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wgaXNP
cHRpb25hbCA9IGZhbHNlKTsgXAorKyAgICBib29sIGlzIyNmcmFtZXdvcmsjI0ZyYW1ld29ya0F2
YWlsYWJsZSgpOyBcCisrICAgIGlubGluZSBib29sIGlzIyNmcmFtZXdvcmsjI0ZyYW1ld29ya0F2
YWlsYWJsZSgpIHsgXAorKyAgICAgICAgcmV0dXJuIGZyYW1ld29yayMjTGlicmFyeSh0cnVlKSAh
PSBudWxscHRyOyBcCisrICAgIH0gXAorKyAgICB9CisrCisrI2RlZmluZSBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5h
bWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMpIFwK
KysgICAgV1RGX0VYVEVSTl9DX0JFR0lOIFwKKysgICAgcmVzdWx0VHlwZSBmdW5jdGlvbk5hbWUg
cGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCisrICAgIFdURl9FWFRFUk5fQ19FTkQgXAorKyAgICBu
YW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCisrICAgIGV4dGVybiByZXN1bHRUeXBlICgq
c29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lKSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnM7
IFwKKysgICAgaW5saW5lIHJlc3VsdFR5cGUgc29mdExpbmtfIyNmcmFtZXdvcmsjI18jI2Z1bmN0
aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMgXAorKyAgICB7IFwKKysgICAgICAgIHJldHVy
biBzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyTmFtZXM7IFwKKysg
ICAgfSBcCisrICAgIH0gXAorKyAgICBBTFdBWVNfSU5MSU5FIHJlc3VsdFR5cGUgZnVuY3Rpb25O
YW1lIHBhcmFtZXRlckRlY2xhcmF0aW9ucyBcCisrICAgIHtcCisrICAgICAgICByZXR1cm4gZnVu
Y3Rpb25OYW1lc3BhY2U6OnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0
ZXJOYW1lczsgXAorKyAgICB9CisrCisrI2RlZmluZSBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElP
TkFMKGZyYW1ld29yaykgXAorKyAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KCkg
XAorKyAgICB7IFwKKysgICAgICAgIHN0YXRpYyB2b2lkKiBmcmFtZXdvcmtMaWJyYXJ5ID0gZGxv
cGVuKCIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy8iICNmcmFtZXdvcmsgIi5mcmFtZXdvcmsv
IiAjZnJhbWV3b3JrLCBSVExEX05PVyk7IFwKKysgICAgICAgIHJldHVybiBmcmFtZXdvcmtMaWJy
YXJ5OyBcCisrICAgIH0KKysKKysjZGVmaW5lIFNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKGZy
YW1ld29yaywgbmFtZSwgdHlwZSkgXAorKyAgICBzdGF0aWMgdHlwZSBpbml0IyNuYW1lKCk7IFwK
KysgICAgc3RhdGljIHR5cGUgKCpnZXQjI25hbWUpKCkgPSBpbml0IyNuYW1lOyBcCisrICAgIHN0
YXRpYyB0eXBlIHBvaW50ZXIjI25hbWU7IFwKKysgICAgXAorKyAgICBzdGF0aWMgdHlwZSBuYW1l
IyNGdW5jdGlvbigpIFwKKysgICAgeyBcCisrICAgICAgICByZXR1cm4gcG9pbnRlciMjbmFtZTsg
XAorKyAgICB9IFwKKysgICAgXAorKyAgICBzdGF0aWMgdHlwZSBpbml0IyNuYW1lKCkgXAorKyAg
ICB7IFwKKysgICAgICAgIHZvaWQqKiBwb2ludGVyID0gc3RhdGljX2Nhc3Q8dm9pZCoqPihkbHN5
bShmcmFtZXdvcmsjI0xpYnJhcnkoKSwgI25hbWUpKTsgXAorKyAgICAgICAgaWYgKHBvaW50ZXIp
IFwKKysgICAgICAgICAgICBwb2ludGVyIyNuYW1lID0gKF9fYnJpZGdlIHR5cGUpKCpwb2ludGVy
KTsgXAorKyAgICAgICAgZ2V0IyNuYW1lID0gbmFtZSMjRnVuY3Rpb247IFwKKysgICAgICAgIHJl
dHVybiBwb2ludGVyIyNuYW1lOyBcCisrICAgIH0KKysKKysjaWYgRU5BQkxFX1ZDUF9FTkNPREVS
CisrCisrI2luY2x1ZGUgPFZpZGVvUHJvY2Vzc2luZy9WaWRlb1Byb2Nlc3NpbmcuaD4KKysKKytT
T0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIod2VicnRjLCBWaWRlb1Byb2Nlc3NpbmcpCisr
CisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIod2VicnRjLCBWaWRlb1Byb2Nlc3Npbmcs
IFZDUENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5LCBPU1N0YXR1cywgKFZDUENvbXByZXNz
aW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIENGVHlwZVJlZiB2YWx1ZSks
IChzZXNzaW9uLCBrZXksIHZhbHVlKSkKKysjZGVmaW5lIFZDUENvbXByZXNzaW9uU2Vzc2lvblNl
dFByb3BlcnR5IHNvZnRMaW5rX1ZpZGVvUHJvY2Vzc2luZ19WQ1BDb21wcmVzc2lvblNlc3Npb25T
ZXRQcm9wZXJ0eQorKworK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKHdlYnJ0YywgVmlk
ZW9Qcm9jZXNzaW5nLCBWQ1BDb21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wsIENW
UGl4ZWxCdWZmZXJQb29sUmVmLCAoVkNQQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAo
c2Vzc2lvbikpCisrI2RlZmluZSBWQ1BDb21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBv
b2wgc29mdExpbmtfVmlkZW9Qcm9jZXNzaW5nX1ZDUENvbXByZXNzaW9uU2Vzc2lvbkdldFBpeGVs
QnVmZmVyUG9vbAorKworK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKHdlYnJ0YywgVmlk
ZW9Qcm9jZXNzaW5nLCBWQ1BDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSwgT1NTdGF0dXMs
IChWQ1BDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1ZmZlclJlZiBidWZm
ZXIsIENNVGltZSB0aW1lc3RhbXAsIENNVGltZSB0aW1lLCBDRkRpY3Rpb25hcnlSZWYgZGljdGlv
bmFyeSwgdm9pZCAqIGRhdGEsIFZURW5jb2RlSW5mb0ZsYWdzICogZmxhZ3MpLCAoc2Vzc2lvbiwg
YnVmZmVyLCB0aW1lc3RhbXAsIHRpbWUsIGRpY3Rpb25hcnksIGRhdGEsIGZsYWdzKSkKKysjZGVm
aW5lIFZDUENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lIHNvZnRMaW5rX1ZpZGVvUHJvY2Vz
c2luZ19WQ1BDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZQorKworK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKHdlYnJ0YywgVmlkZW9Qcm9jZXNzaW5nLCBWQ1BDb21wcmVzc2lvblNl
c3Npb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yMSwgaW50MzJf
dCB2YWx1ZTEgLCBpbnQzMl90IHZhbHVlMiwgQ01WaWRlb0NvZGVjVHlwZSB0eXBlLCBDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeTEsIENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5MiwgQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yMywgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIGNhbGxiYWNr
LCB2b2lkICogZGF0YSwgVkNQQ29tcHJlc3Npb25TZXNzaW9uUmVmICpzZXNzaW9uKSwgKGFsbG9j
YXRvcjEsIHZhbHVlMSwgdmFsdWUyLCB0eXBlLCBkaWN0aW9uYXJ5MSwgZGljdGlvbmFyeTIsIGFs
bG9jYXRvcjMsIGNhbGxiYWNrLCBkYXRhLCBzZXNzaW9uKSkKKysjZGVmaW5lIFZDUENvbXByZXNz
aW9uU2Vzc2lvbkNyZWF0ZSBzb2Z0TGlua19WaWRlb1Byb2Nlc3NpbmdfVkNQQ29tcHJlc3Npb25T
ZXNzaW9uQ3JlYXRlCisrCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIod2VicnRjLCBW
aWRlb1Byb2Nlc3NpbmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUsIHZvaWQsIChW
Q1BDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKysjZGVmaW5lIFZD
UENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUgc29mdExpbmtfVmlkZW9Qcm9jZXNzaW5nX1ZD
UENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUKKysKKytTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUih3ZWJydGMsIFZpZGVvUHJvY2Vzc2luZywgVlBNb2R1bGVJbml0aWFsaXplLCB2b2lk
LCAoKSwgKCkpCisrI2RlZmluZSBWUE1vZHVsZUluaXRpYWxpemUgc29mdExpbmtfVmlkZW9Qcm9j
ZXNzaW5nX1ZQTW9kdWxlSW5pdGlhbGl6ZQorKworKyNlbmRpZiAvLyBFTkFCTEVfVkNQX0VOQ09E
RVIKKysKKysjZW5kaWYgLy8gX19BUFBMRV9fCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2Vi
S2l0VXRpbGl0aWVzLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4u
ZWYxNDU2ZWRkZDMKKy0tLSAvZGV2L251bGwKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKK0BAIC0wLDAg
KzEsNTQgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUg
bWV0OgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisr
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisrICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKysgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisrICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisrICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqLworKworKyNwcmFnbWEg
b25jZQorKworKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCisrI2lu
Y2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisrI2luY2x1ZGUgIndlYnJ0Yy9tZWRp
YS9lbmdpbmUvd2VicnRjdmlkZW9kZWNvZGVyZmFjdG9yeS5oIgorKyNpbmNsdWRlICJ3ZWJydGMv
bWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3RvcnkuaCIKKysKKyt0eXBlZGVmIHN0
cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOworKworK25hbWVzcGFjZSB3ZWJydGMg
eworKworK2NsYXNzIFZpZGVvRGVjb2RlckZhY3Rvcnk7CisrY2xhc3MgVmlkZW9FbmNvZGVyRmFj
dG9yeTsKKytjbGFzcyBWaWRlb0ZyYW1lOworKworK2VudW0gY2xhc3MgV2ViS2l0Q29kZWNTdXBw
b3J0IHsgSDI2NCwgSDI2NEFuZFZQOCB9OworKworK3N0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZp
ZGVvRW5jb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5KFdlYktpdENvZGVj
U3VwcG9ydCk7Cisrc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4g
Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnkoV2ViS2l0Q29kZWNTdXBwb3J0KTsKKysKKyt2b2lk
IHNldEFwcGxpY2F0aW9uU3RhdHVzKGJvb2wgaXNBY3RpdmUpOworKworK3ZvaWQgc2V0SDI2NEhh
cmR3YXJlRW5jb2RlckFsbG93ZWQoYm9vbCk7CisrYm9vbCBpc0gyNjRIYXJkd2FyZUVuY29kZXJB
bGxvd2VkKCk7CisrCisrQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25z
dCBWaWRlb0ZyYW1lJiwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVf
dCwgc2l6ZV90KT4mKTsKKytydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVm
ZmVyPiBwaXhlbEJ1ZmZlclRvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZik7CisrCisrfQorZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VXRpbGl0aWVzLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KK25ldyBmaWxlIG1vZGUgMTAw
NjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uNjVlZWZhMzZmMmQKKy0tLSAvZGV2L251bGwKKysrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2Vi
S2l0VXRpbGl0aWVzLm1tCitAQCAtMCwwICsxLDE4NSBAQAorKy8qCisrICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisrICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKysgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKysgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisrICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisrICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisrICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKysgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKysgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisrICovCisrCisrI2luY2x1ZGUgIldlYktpdFV0aWxpdGllcy5oIgorKworKy8vI2lu
Y2x1ZGUgIkNvbW1vbi9SVENVSUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIuaCIKKysjaW1wb3J0
ICJXZWJSVEMvUlRDVmlkZW9Db2RlY0gyNjQuaCIKKysKKysjaW5jbHVkZSAiYXBpL3ZpZGVvL3Zp
ZGVvX2ZyYW1lLmgiCisrI2luY2x1ZGUgIm5hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIuaCIK
KysjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJv
bS5oIgorKyNpbmNsdWRlICJ3ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgiCisrI2luY2x1ZGUgIkZy
YW1ld29yay9IZWFkZXJzL1dlYlJUQy9SVENWaWRlb0NvZGVjRmFjdG9yeS5oIgorKyNpbmNsdWRl
ICJGcmFtZXdvcmsvSGVhZGVycy9XZWJSVEMvUlRDVmlkZW9GcmFtZS5oIgorKyNpbmNsdWRlICJG
cmFtZXdvcmsvSGVhZGVycy9XZWJSVEMvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIgorKyNpbmNsdWRl
ICJGcmFtZXdvcmsvTmF0aXZlL2FwaS92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKKysjaW5jbHVk
ZSAiRnJhbWV3b3JrL05hdGl2ZS9hcGkvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisrLyoKKysj
aWYgIWRlZmluZWQoV0VCUlRDX0lPUykKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFt
ZSgiV0tfUlRDVUlBcHBsaWNhdGlvblN0YXR1c09ic2VydmVyIikpKQorK0BpbnRlcmZhY2UgUlRD
VUlBcHBsaWNhdGlvblN0YXR1c09ic2VydmVyIDogTlNPYmplY3QKKysKKysrIChpbnN0YW5jZXR5
cGUpc2hhcmVkSW5zdGFuY2U7CisrKyAodm9pZClwcmVwYXJlRm9yVXNlOworKworKy0gKEJPT0wp
aXNBcHBsaWNhdGlvbkFjdGl2ZTsKKysKKytAZW5kCisrI2VuZGlmCisrCisrQGltcGxlbWVudGF0
aW9uIFJUQ1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciB7CisrICAgIEJPT0wgX2lzQWN0aXZl
OworK30KKysKKysrIChpbnN0YW5jZXR5cGUpc2hhcmVkSW5zdGFuY2UgeworKyAgICBzdGF0aWMg
aWQgc2hhcmVkSW5zdGFuY2U7CisrICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OworKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisrICAgICAgICBzaGFyZWRJbnN0
YW5jZSA9IFtbc2VsZiBhbGxvY10gaW5pdF07CisrICAgIH0pOworKworKyAgICByZXR1cm4gc2hh
cmVkSW5zdGFuY2U7CisrfQorKworKysgKHZvaWQpcHJlcGFyZUZvclVzZSB7CisrICAgIF9fdW51
c2VkIFJUQ1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciAqb2JzZXJ2ZXIgPSBbc2VsZiBzaGFy
ZWRJbnN0YW5jZV07CisrfQorKworKy0gKGlkKWluaXQgeworKyAgICBfaXNBY3RpdmUgPSBZRVM7
CisrICAgIHJldHVybiBzZWxmOworK30KKysKKystICh2b2lkKXNldEFjdGl2ZSB7CisrICAgIF9p
c0FjdGl2ZSA9IFlFUzsKKyt9CisrCisrLSAodm9pZClzZXRJbmFjdGl2ZSB7CisrICAgIF9pc0Fj
dGl2ZSA9IE5POworK30KKysKKystIChCT09MKWlzQXBwbGljYXRpb25BY3RpdmUgeworKyAgICBy
ZXR1cm4gX2lzQWN0aXZlOworK30KKysKKytAZW5kCisrKi8KKytuYW1lc3BhY2Ugd2VicnRjIHsK
KysKKyt2b2lkIHNldEFwcGxpY2F0aW9uU3RhdHVzKGJvb2wgaXNBY3RpdmUpCisreworKy8qCisr
ICAgIGlmIChpc0FjdGl2ZSkKKysgICAgICAgIFtbUlRDVUlBcHBsaWNhdGlvblN0YXR1c09ic2Vy
dmVyIHNoYXJlZEluc3RhbmNlXSBzZXRBY3RpdmVdOworKyAgICBlbHNlCisrICAgICAgICBbW1JU
Q1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciBzaGFyZWRJbnN0YW5jZV0gc2V0SW5hY3RpdmVd
OworKyAqLworK30KKysKKytzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0
b3J5PiBjcmVhdGVXZWJLaXRFbmNvZGVyRmFjdG9yeShXZWJLaXRDb2RlY1N1cHBvcnQgY29kZWNT
dXBwb3J0KQorK3sKKysjaWYgRU5BQkxFX1ZDUF9FTkNPREVSCisrICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlRmxhZzsKKysgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKysg
ICAgICAgIHdlYnJ0Yzo6VlBNb2R1bGVJbml0aWFsaXplKCk7CisrICAgIH0pOworKyNlbmRpZgor
KyAgICByZXR1cm4gT2JqQ1RvTmF0aXZlVmlkZW9FbmNvZGVyRmFjdG9yeShjb2RlY1N1cHBvcnQg
PT0gV2ViS2l0Q29kZWNTdXBwb3J0OjpIMjY0QW5kVlA4ID8gW1tSVENEZWZhdWx0VmlkZW9FbmNv
ZGVyRmFjdG9yeSBhbGxvY10gaW5pdF0gOiBbW1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0IGFs
bG9jXSBpbml0XSk7CisrfQorKworK3N0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2Rl
ckZhY3Rvcnk+IGNyZWF0ZVdlYktpdERlY29kZXJGYWN0b3J5KFdlYktpdENvZGVjU3VwcG9ydCBj
b2RlY1N1cHBvcnQpCisreworKyAgICByZXR1cm4gT2JqQ1RvTmF0aXZlVmlkZW9EZWNvZGVyRmFj
dG9yeShjb2RlY1N1cHBvcnQgPT0gV2ViS2l0Q29kZWNTdXBwb3J0OjpIMjY0QW5kVlA4ID8gW1tS
VENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeSBhbGxvY10gaW5pdF0gOiBbW1JUQ1ZpZGVvRGVj
b2RlckZhY3RvcnlIMjY0IGFsbG9jXSBpbml0XSk7CisrfQorKworK3N0YXRpYyBib29sIGgyNjRI
YXJkd2FyZUVuY29kZXJBbGxvd2VkID0gdHJ1ZTsKKyt2b2lkIHNldEgyNjRIYXJkd2FyZUVuY29k
ZXJBbGxvd2VkKGJvb2wgYWxsb3dlZCkKKyt7CisrICAgIGgyNjRIYXJkd2FyZUVuY29kZXJBbGxv
d2VkID0gYWxsb3dlZDsKKyt9CisrCisrYm9vbCBpc0gyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2Vk
KCkKKyt7CisrICAgIHJldHVybiBoMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZDsKKyt9CisrCisr
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJU
b0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpCisreworKyAgICBSVENDVlBpeGVs
QnVmZmVyICpmcmFtZUJ1ZmZlciA9IFtbUlRDQ1ZQaXhlbEJ1ZmZlciBhbGxvY10gaW5pdFdpdGhQ
aXhlbEJ1ZmZlcjpwaXhlbEJ1ZmZlcl07CisrICAgIHJldHVybiBuZXcgcnRjOjpSZWZDb3VudGVk
T2JqZWN0PE9iakNGcmFtZUJ1ZmZlcj4oZnJhbWVCdWZmZXIpOworK30KKysKKytzdGF0aWMgYm9v
bCBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6STQyMEJ1ZmZlckludGVyZmFjZT4mIGZyYW1lLCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVs
X2J1ZmZlcikgeworKyAgICBSVENfRENIRUNLKHBpeGVsX2J1ZmZlcik7CisrICAgIFJUQ19EQ0hF
Q0soQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbF9idWZmZXIpID09IGtDVlBp
eGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UgfHwgQ1ZQaXhlbEJ1ZmZl
ckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbF9idWZmZXIpID09IGtDVlBpeGVsRm9ybWF0VHlwZV80
MjBZcENiQ3I4QmlQbGFuYXJWaWRlb1JhbmdlKTsKKysgICAgUlRDX0RDSEVDS19FUShDVlBpeGVs
QnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGZyYW1lLT5oZWlnaHQoKSkpOworKyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJH
ZXRXaWR0aE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihmcmFt
ZS0+d2lkdGgoKSkpOworKworKyAgICBpZiAoQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhw
aXhlbF9idWZmZXIsIDApICE9IGtDVlJldHVyblN1Y2Nlc3MpCisrICAgICAgICByZXR1cm4gZmFs
c2U7CisrCisrICAgIHVpbnQ4X3QqIGRzdF95ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
Q1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhlbF9idWZmZXIsIDApKTsKKysg
ICAgaW50IGRzdF9zdHJpZGVfeSA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUo
cGl4ZWxfYnVmZmVyLCAwKTsKKysKKysgICAgdWludDhfdCogZHN0X3V2ID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhlbF9i
dWZmZXIsIDEpKTsKKysgICAgaW50IGRzdF9zdHJpZGVfdXYgPSBDVlBpeGVsQnVmZmVyR2V0Qnl0
ZXNQZXJSb3dPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMSk7CisrCisrICAgIGludCByZXN1bHQgPSBs
aWJ5dXY6Okk0MjBUb05WMTIoCisrICAgICAgICBmcmFtZS0+RGF0YVkoKSwgZnJhbWUtPlN0cmlk
ZVkoKSwKKysgICAgICAgIGZyYW1lLT5EYXRhVSgpLCBmcmFtZS0+U3RyaWRlVSgpLAorKyAgICAg
ICAgZnJhbWUtPkRhdGFWKCksIGZyYW1lLT5TdHJpZGVWKCksCisrICAgICAgICBkc3RfeSwgZHN0
X3N0cmlkZV95LCBkc3RfdXYsIGRzdF9zdHJpZGVfdXYsCisrICAgICAgICBmcmFtZS0+d2lkdGgo
KSwgZnJhbWUtPmhlaWdodCgpKTsKKysKKysgICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRy
ZXNzKHBpeGVsX2J1ZmZlciwgMCk7CisrCisrICAgIGlmIChyZXN1bHQpCisrICAgICAgICByZXR1
cm4gZmFsc2U7CisrCisrICAgIHJldHVybiB0cnVlOworK30KKysKKysKKytDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBz
dGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QpPiYgbWFrZVBpeGVs
QnVmZmVyKQorK3sKKysgICAgaWYgKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT50eXBlKCkg
IT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkgeworKyAgICAgICAgcnRjOjpzY29w
ZWRfcmVmcHRyPGNvbnN0IEk0MjBCdWZmZXJJbnRlcmZhY2U+IGJ1ZmZlciA9IGZyYW1lLnZpZGVv
X2ZyYW1lX2J1ZmZlcigpLT5HZXRJNDIwKCk7CisrCisrICAgICAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gbWFrZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSk7Cisr
ICAgICAgICBpZiAocGl4ZWxCdWZmZXIpCisrICAgICAgICAgICAgQ29weVZpZGVvRnJhbWVUb1Bp
eGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT5HZXRJNDIwKCksIHBpeGVsQnVm
ZmVyKTsKKysgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKKysgICAgfQorKworKyAgICBhdXRv
ICpmcmFtZUJ1ZmZlciA9IHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1ZmZlcio+KGZyYW1lLnZpZGVv
X2ZyYW1lX2J1ZmZlcigpLmdldCgpKS0+d3JhcHBlZF9mcmFtZV9idWZmZXIoKTsKKysgICAgaWYg
KCFbZnJhbWVCdWZmZXIgaXNLaW5kT2ZDbGFzczpbUlRDQ1ZQaXhlbEJ1ZmZlciBjbGFzc11dKQor
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisrCisrICAgIGF1dG8gKnJ0Y1BpeGVsQnVmZmVyID0g
KFJUQ0NWUGl4ZWxCdWZmZXIgKilmcmFtZUJ1ZmZlcjsKKysgICAgcmV0dXJuIHJ0Y1BpeGVsQnVm
ZmVyLnBpeGVsQnVmZmVyOworK30KKysKKyt9CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JU
Q0VuY29kZWRJbWFnZStQcml2YXRlLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQ
cml2YXRlLm1tCitpbmRleCA2ZjJkMWY0NmQ5Yy4uZjk5MDFiZDMyN2UgMTAwNjQ0CistLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVl
cmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0KKysrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlv
bi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbQorQEAgLTU2LDYgKzU2LDcgQEAgLSAod2VicnRj
OjpFbmNvZGVkSW1hZ2UpbmF0aXZlRW5jb2RlZEltYWdlIHsKKyAgIGVuY29kZWRJbWFnZS5yb3Rh
dGlvbl8gPSB3ZWJydGM6OlZpZGVvUm90YXRpb24oc2VsZi5yb3RhdGlvbik7CisgICBlbmNvZGVk
SW1hZ2UuX2NvbXBsZXRlRnJhbWUgPSBzZWxmLmNvbXBsZXRlRnJhbWU7CisgICBlbmNvZGVkSW1h
Z2UucXBfID0gc2VsZi5xcCA/IHNlbGYucXAuaW50VmFsdWUgOiAtMTsKKysgIGVuY29kZWRJbWFn
ZS5TZXRTcGF0aWFsSW5kZXgoc2VsZi5zcGF0aWFsSW5kZXgpOworICAgZW5jb2RlZEltYWdlLmNv
bnRlbnRfdHlwZV8gPSAoc2VsZi5jb250ZW50VHlwZSA9PSBSVENWaWRlb0NvbnRlbnRUeXBlU2Ny
ZWVuc2hhcmUpID8KKyAgICAgICB3ZWJydGM6OlZpZGVvQ29udGVudFR5cGU6OlNDUkVFTlNIQVJF
IDoKKyAgICAgICB3ZWJydGM6OlZpZGVvQ29udGVudFR5cGU6OlVOU1BFQ0lGSUVEOworZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2FwaS9wZWVyY29ubmVjdGlvbi9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaAoraW5kZXggYmE1MGJkZTY0OWYuLmRhYmZm
NzI1YWJiIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVy
cy5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmgKK0BAIC0x
NSw2ICsxNSw3IEBACisgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyBSVENfT0JKQ19FWFBP
UlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDUnRwRW5jb2RpbmdQ
YXJhbWV0ZXJzIikpKQorIEBpbnRlcmZhY2UgUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIDogTlNP
YmplY3QKKyAKKyAvKiogQ29udHJvbHMgd2hldGhlciB0aGUgZW5jb2RpbmcgaXMgY3VycmVudGx5
IHRyYW5zbWl0dGVkLiAqLworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29k
ZXJTZXR0aW5ncytQcml2YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGlu
Z3MrUHJpdmF0ZS5oCitpbmRleCA1YjA2MjQ1NWJjMC4uNzJhZjczMmIyM2IgMTAwNjQ0CistLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
cGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5oCisrKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVl
cmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5oCitAQCAtMjIsNCAr
MjIsMTEgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyBAZW5kCisgCisrQGludGVyZmFj
ZSBSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIChQcml2YXRlKQorKworKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aE5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb246KGNvbnN0IHdlYnJ0Yzo6Vmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbiAqX19udWxsYWJsZSl2aWRlb0JpdHJhdGVBbGxvY2F0aW9uOwor
Ky0gKHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiluYXRpdmVWaWRlb0JpdHJhdGVBbGxv
Y2F0aW9uOworKworK0BlbmQKKysKKyBOU19BU1NVTUVfTk9OTlVMTF9FTkQKK2RpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
cGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5tbSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29u
bmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLm1tCitpbmRleCA2ZmI4MWRi
YjhhZi4uODJiNWJhN2JjMGYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNv
ZGVyU2V0dGluZ3MrUHJpdmF0ZS5tbQorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5jb2Rl
clNldHRpbmdzK1ByaXZhdGUubW0KK0BAIC0xMiw2ICsxMiwyMyBAQAorIAorICNpbXBvcnQgImhl
bHBlcnMvTlNTdHJpbmcrU3RkU3RyaW5nLmgiCisgCisrQGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVv
RW5jb2RlclNldHRpbmdzIHsKKysgIHdlYnJ0Yzo6VmlkZW9Db2RlYyBfbmF0aXZlVmlkZW9Db2Rl
YzsKKyt9CisrCisrQHN5bnRoZXNpemUgbmFtZSA9IF9uYW1lOworK0BzeW50aGVzaXplIHdpZHRo
ID0gX3dpZHRoOworK0BzeW50aGVzaXplIGhlaWdodCA9IF9oZWlnaHQ7CisrQHN5bnRoZXNpemUg
c3RhcnRCaXRyYXRlID0gX3N0YXJ0Qml0cmF0ZTsKKytAc3ludGhlc2l6ZSBtYXhCaXRyYXRlID0g
X21heEJpdHJhdGU7CisrQHN5bnRoZXNpemUgbWluQml0cmF0ZSA9IF9taW5CaXRyYXRlOworK0Bz
eW50aGVzaXplIHRhcmdldEJpdHJhdGUgPSBfdGFyZ2V0Qml0cmF0ZTsKKytAc3ludGhlc2l6ZSBt
YXhGcmFtZXJhdGUgPSBfbWF4RnJhbWVyYXRlOworK0BzeW50aGVzaXplIHFwTWF4ID0gX3FwTWF4
OworK0BzeW50aGVzaXplIG1vZGUgPSBfbW9kZTsKKysKKytAZW5kCisrCisgQGltcGxlbWVudGF0
aW9uIFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzIChQcml2YXRlKQorIAorIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aE5hdGl2ZVZpZGVvQ29kZWM6KGNvbnN0IHdlYnJ0Yzo6VmlkZW9Db2RlYyAqKXZp
ZGVvQ29kZWMgeworQEAgLTIwLDYgKzM3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0
aXZlVmlkZW9Db2RlYzooY29uc3Qgd2VicnRjOjpWaWRlb0NvZGVjICopdmlkZW9Db2RlYworICAg
ICAgIGNvbnN0IGNoYXIgKmNvZGVjTmFtZSA9IENvZGVjVHlwZVRvUGF5bG9hZFN0cmluZyh2aWRl
b0NvZGVjLT5jb2RlY1R5cGUpOworICAgICAgIHNlbGYubmFtZSA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoVVRGOFN0cmluZzpjb2RlY05hbWVdOworIAorKyAgICAgIF9uYXRpdmVWaWRlb0NvZGVjID0g
KnZpZGVvQ29kZWM7CisgICAgICAgc2VsZi53aWR0aCA9IHZpZGVvQ29kZWMtPndpZHRoOworICAg
ICAgIHNlbGYuaGVpZ2h0ID0gdmlkZW9Db2RlYy0+aGVpZ2h0OworICAgICAgIHNlbGYuc3RhcnRC
aXRyYXRlID0gdmlkZW9Db2RlYy0+c3RhcnRCaXRyYXRlOworQEAgLTM2LDE4ICs1NCwyOCBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOYXRpdmVWaWRlb0NvZGVjOihjb25zdCB3ZWJydGM6OlZp
ZGVvQ29kZWMgKil2aWRlb0NvZGVjCisgfQorIAorIC0gKHdlYnJ0Yzo6VmlkZW9Db2RlYyluYXRp
dmVWaWRlb0NvZGVjIHsKKy0gIHdlYnJ0Yzo6VmlkZW9Db2RlYyB2aWRlb0NvZGVjOworLSAgdmlk
ZW9Db2RlYy53aWR0aCA9IHNlbGYud2lkdGg7CistICB2aWRlb0NvZGVjLmhlaWdodCA9IHNlbGYu
aGVpZ2h0OworLSAgdmlkZW9Db2RlYy5zdGFydEJpdHJhdGUgPSBzZWxmLnN0YXJ0Qml0cmF0ZTsK
Ky0gIHZpZGVvQ29kZWMubWF4Qml0cmF0ZSA9IHNlbGYubWF4Qml0cmF0ZTsKKy0gIHZpZGVvQ29k
ZWMubWluQml0cmF0ZSA9IHNlbGYubWluQml0cmF0ZTsKKy0gIHZpZGVvQ29kZWMudGFyZ2V0Qml0
cmF0ZSA9IHNlbGYudGFyZ2V0Qml0cmF0ZTsKKy0gIHZpZGVvQ29kZWMubWF4Qml0cmF0ZSA9IHNl
bGYubWF4Qml0cmF0ZTsKKy0gIHZpZGVvQ29kZWMucXBNYXggPSBzZWxmLnFwTWF4OworLSAgdmlk
ZW9Db2RlYy5tb2RlID0gKHdlYnJ0Yzo6VmlkZW9Db2RlY01vZGUpc2VsZi5tb2RlOworLQorLSAg
cmV0dXJuIHZpZGVvQ29kZWM7CisrICByZXR1cm4gX25hdGl2ZVZpZGVvQ29kZWM7CisrfQorKwor
K0BlbmQKKysKKytAaW1wbGVtZW50YXRpb24gUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiB7Cisr
ICB3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRpb24gX25hdGl2ZVZpZGVvQml0cmF0ZUFsbG9j
YXRpb247CisrfQorKworK0BlbmQKKysKKytAaW1wbGVtZW50YXRpb24gUlRDVmlkZW9CaXRyYXRl
QWxsb2NhdGlvbiAoUHJpdmF0ZSkKKysKKystIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOYXRpdmVW
aWRlb0JpdHJhdGVBbGxvY2F0aW9uOihjb25zdCB3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRp
b24gKil2aWRlb0JpdHJhdGVBbGxvY2F0aW9uIHsKKysgIGlmIChzZWxmID0gW3N1cGVyIGluaXRd
KSB7CisrICAgIF9uYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uID0gKnZpZGVvQml0cmF0ZUFs
bG9jYXRpb247CisrICB9CisrICByZXR1cm4gc2VsZjsKKyt9CisrCisrLSAod2VicnRjOjpWaWRl
b0JpdHJhdGVBbGxvY2F0aW9uKW5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb24geworKyAgcmV0
dXJuIF9uYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOworIH0KKyAKKyBAZW5kCitkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29kZWNDb25zdGFudHMubW0gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRD
VmlkZW9Db2RlY0NvbnN0YW50cy5tbQoraW5kZXggYWNiZjEyNjE3MGMuLjE0NDdkM2IyN2UxIDEw
MDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29kZWNDb25zdGFudHMubW0KKysrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRl
b19jb2RlYy9SVENWaWRlb0NvZGVjQ29uc3RhbnRzLm1tCitAQCAtMTMsNSArMTMsNSBAQAorIAor
ICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCisgCistTlNTdHJpbmcgKmNv
bnN0IGtSVENWaWRlb0NvZGVjVnA4TmFtZSA9IEAoY3JpY2tldDo6a1ZwOENvZGVjTmFtZSk7Cist
TlNTdHJpbmcgKmNvbnN0IGtSVENWaWRlb0NvZGVjVnA5TmFtZSA9IEAoY3JpY2tldDo6a1ZwOUNv
ZGVjTmFtZSk7CisrTlNTdHJpbmcgKmNvbnN0IGtSVENWaWRlb0NvZGVjVnA4TmFtZSA9IEAiVlA4
IjsKKytOU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNWcDlOYW1lID0gQCJWUDkiOworZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENW
aWRlb0VuY29kZXJWUDguaAoraW5kZXggOGQ4N2E4OTg5MzEuLjA4ZDE4NTA0MjIyIDEwMDY0NAor
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlclZQOC5oCisrKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRD
VmlkZW9FbmNvZGVyVlA4LmgKK0BAIC0xNCw2ICsxNCw3IEBACisgI2ltcG9ydCAiUlRDVmlkZW9F
bmNvZGVyLmgiCisgCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50
aW1lX25hbWUoIldLX1JUQ1ZpZGVvRW5jb2RlclZQOCIpKSkKKyBAaW50ZXJmYWNlIFJUQ1ZpZGVv
RW5jb2RlclZQOCA6IE5TT2JqZWN0CisgCisgLyogVGhpcyByZXR1cm5zIGEgVlA4IGVuY29kZXIg
dGhhdCBjYW4gYmUgcmV0dXJuZWQgZnJvbSBhIFJUQ1ZpZGVvRW5jb2RlckZhY3RvcnkgaW5qZWN0
ZWQgaW50bworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNv
ZGVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0KK2luZGV4
IDlhZmQ1NGY1NWY1Li5iOTYzNDc3OWYxZiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENXcmFw
cGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDV3JhcHBlZE5hdGl2
ZVZpZGVvRW5jb2Rlci5tbQorQEAgLTU4LDYgKzU4LDExIEBAIC0gKGludClzZXRCaXRyYXRlOih1
aW50MzJfdCliaXRyYXRlS2JpdCBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZSB7CisgICBy
ZXR1cm4gMDsKKyB9CisgCisrLSAoaW50KXNldFJhdGVBbGxvY2F0aW9uOihub25udWxsIFJUQ1Zp
ZGVvQml0cmF0ZUFsbG9jYXRpb24gKilhbGxvY2F0aW9uIGZyYW1lcmF0ZToodWludDMyX3QpZnJh
bWVyYXRlIHsKKysgIFJUQ19OT1RSRUFDSEVEKCk7CisrICByZXR1cm4gMDsKKyt9CisrCisgLSAo
TlNTdHJpbmcgKilpbXBsZW1lbnRhdGlvbk5hbWUgeworICAgUlRDX05PVFJFQUNIRUQoKTsKKyAg
IHJldHVybiBuaWw7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVJNDIw
QnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIuaAoraW5kZXgg
OWE5MDRmNTM5NmEuLmRjOTAzYmM0YmNhIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9S
VENOYXRpdmVJNDIwQnVmZmVyLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlSTQy
MEJ1ZmZlci5oCitAQCAtMTcsNiArMTcsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAor
IC8qKiBSVENJNDIwQnVmZmVyIGltcGxlbWVudHMgdGhlIFJUQ0k0MjBCdWZmZXIgcHJvdG9jb2wg
Ki8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgi
V0tfUlRDSTQyMEJ1ZmZlciIpKSkKKyBAaW50ZXJmYWNlIFJUQ0k0MjBCdWZmZXIgOiBOU09iamVj
dDxSVENJNDIwQnVmZmVyPgorIEBlbmQKKyAKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVy
L1JUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2
ZU11dGFibGVJNDIwQnVmZmVyLmgKK2luZGV4IDZjZDUxMTA0NjBiLi43Y2ZhOTUwYWJiNiAxMDA2
NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIuaAor
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVNdXRhYmxlSTQyMEJ1ZmZlci5oCitAQCAt
MTgsNiArMTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAorIC8qKiBNdXRhYmxlIHZl
cnNpb24gb2YgUlRDSTQyMEJ1ZmZlciAqLworIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRl
X18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENNdXRhYmxlSTQyMEJ1ZmZlciIpKSkKKyBAaW50
ZXJmYWNlIFJUQ011dGFibGVJNDIwQnVmZmVyIDogUlRDSTQyMEJ1ZmZlcjxSVENNdXRhYmxlSTQy
MEJ1ZmZlcj4KKyBAZW5kCisgCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENDb2RlY1NwZWNpZmljSW5mby5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9S
VENDb2RlY1NwZWNpZmljSW5mby5oCitpbmRleCBlMmFlNGNhZmExMS4uOWRjNDRjMTJhZjggMTAw
NjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9iYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDQ29kZWNTcGVjaWZpY0lu
Zm8uaAorQEAgLTE4LDYgKzE4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAgKiAgQ29y
cmVzcG9uZHMgdG8gd2VicnRjOjpDb2RlY1NwZWNpZmljSW5mby4KKyAgKi8KKyBSVENfT0JKQ19F
WFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDQ29kZWNTcGVj
aWZpY0luZm8iKSkpCisgQHByb3RvY29sIFJUQ0NvZGVjU3BlY2lmaWNJbmZvIDxOU09iamVjdD4K
KyBAZW5kCisgCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdl
LmgKK2luZGV4IDY3MGM3Mjc2ZmY3Li43OTk0Y2U2NGExZiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2Rl
ZEltYWdlLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLmgKK0BAIC0zMSw2ICszMSw3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBSVENWaWRlb0NvbnRlbnRUeXBlKSB7CisgCisgLyoqIFJl
cHJlc2VudHMgYW4gZW5jb2RlZCBmcmFtZS4gQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpFbmNvZGVk
SW1hZ2UuICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1l
X25hbWUoIldLX1JUQ0VuY29kZWRJbWFnZSIpKSkKKyBAaW50ZXJmYWNlIFJUQ0VuY29kZWRJbWFn
ZSA6IE5TT2JqZWN0CisgCisgQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBOU0RhdGEgKmJ1
ZmZlcjsKK0BAIC00Nyw2ICs0OCw3IEBAIFJUQ19PQkpDX0VYUE9SVAorIEBwcm9wZXJ0eShub25h
dG9taWMsIGFzc2lnbikgQk9PTCBjb21wbGV0ZUZyYW1lOworIEBwcm9wZXJ0eShub25hdG9taWMs
IHN0cm9uZykgTlNOdW1iZXIgKnFwOworIEBwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgUlRD
VmlkZW9Db250ZW50VHlwZSBjb250ZW50VHlwZTsKKytAcHJvcGVydHkobm9uYXRvbWljLCBhc3Np
Z24pIGludCBzcGF0aWFsSW5kZXg7CisgCisgQGVuZAorIAorZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2Rl
ZEltYWdlLm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5tCitpbmRleCAwMjRhNTdjNTQxYi4uODVjZDVlMjk4
ZTQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5tCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5t
CitAQCAtMjYsNSArMjYsNiBAQCBAaW1wbGVtZW50YXRpb24gUlRDRW5jb2RlZEltYWdlCisgQHN5
bnRoZXNpemUgY29tcGxldGVGcmFtZSA9IF9jb21wbGV0ZUZyYW1lOworIEBzeW50aGVzaXplIHFw
ID0gX3FwOworIEBzeW50aGVzaXplIGNvbnRlbnRUeXBlID0gX2NvbnRlbnRUeXBlOworK0BzeW50
aGVzaXplIHNwYXRpYWxJbmRleCA9IF9zcGF0aWFsSW5kZXg7CisgCisgQGVuZAorZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UvUlRDSTQyMEJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYmFzZS9SVENJNDIwQnVmZmVyLmgKK2luZGV4IGE2YzdlNDFiY2JhLi5j
ZmExNGY4YWYyMyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDSTQyMEJ1ZmZlci5oCisrKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0k0MjBCdWZm
ZXIuaAorQEAgLTE2LDYgKzE2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAvKiog
UHJvdG9jb2wgZm9yIFJUQ1lVVlBsYW5hckJ1ZmZlcnMgY29udGFpbmluZyBJNDIwIGRhdGEgKi8K
KyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tf
UlRDSTQyMEJ1ZmZlciIpKSkKKyBAcHJvdG9jb2wgUlRDSTQyMEJ1ZmZlciA8UlRDWVVWUGxhbmFy
QnVmZmVyPgorIEBlbmQKKyAKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5oCitpbmRleCAyZTI2YjA4YjhhZi4uZmJiYzY4
YThlZjYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIuaAorKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENS
dHBGcmFnbWVudGF0aW9uSGVhZGVyLmgKK0BAIC0xNiw2ICsxNiw3IEBAIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCisgCisgLyoqIEluZm9ybWF0aW9uIGZvciBoZWFkZXIuIENvcnJlc3BvbmRzIHRv
IHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlci4gKi8KKyBSVENfT0JKQ19FWFBPUlQKKytf
X2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDUnRwRnJhZ21lbnRhdGlvbkhl
YWRlciIpKSkKKyBAaW50ZXJmYWNlIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIgOiBOU09iamVj
dAorIAorIEBwcm9wZXJ0eShub25hdG9taWMsIHN0cm9uZykgTlNBcnJheTxOU051bWJlciAqPiAq
ZnJhZ21lbnRhdGlvbk9mZnNldDsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFk
ZXIubSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tCitpbmRleCA4MDQ5YWJjNDExZS4uNmNm
MjFkZGMyYTEgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubQorKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9S
VENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0KK0BAIC0xNyw0ICsxNyw1IEBAIEBpbXBsZW1lbnRh
dGlvbiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyCisgQHN5bnRoZXNpemUgZnJhZ21lbnRhdGlv
blRpbWVEaWZmID0gX2ZyYWdtZW50YXRpb25UaW1lRGlmZjsKKyBAc3ludGhlc2l6ZSBmcmFnbWVu
dGF0aW9uUGxUeXBlID0gX2ZyYWdtZW50YXRpb25QbFR5cGU7CisgCistQGVuZAorXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCisrQGVuZAorKworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9Db2RlY0lu
Zm8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2Jhc2UvUlRDVmlkZW9Db2RlY0luZm8uaAoraW5kZXggMjE2MmNhYWEyMWYuLjRlNjQzZDk0MzQ3
IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYmFzZS9SVENWaWRlb0NvZGVjSW5mby5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvQ29kZWNJbmZv
LmgKK0BAIC0xNiw2ICsxNiw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgLyoqIEhv
bGRzIGluZm9ybWF0aW9uIHRvIGlkZW50aWZ5IGEgY29kZWMuIENvcnJlc3BvbmRzIHRvIHdlYnJ0
Yzo6U2RwVmlkZW9Gb3JtYXQuICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygo
b2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvQ29kZWNJbmZvIikpKQorIEBpbnRlcmZhY2Ug
UlRDVmlkZW9Db2RlY0luZm8gOiBOU09iamVjdCA8TlNDb2Rpbmc+CisgCisgLSAoaW5zdGFuY2V0
eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2Uv
UlRDVmlkZW9EZWNvZGVyLmgKK2luZGV4IDE4YzZmNmIwMDA2Li41MzQ0MjBkMzk1NSAxMDA2NDQK
Ky0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2Jhc2UvUlRDVmlkZW9EZWNvZGVyLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyLmgKK0BAIC0yMyw2
ICsyMyw3IEBAIHR5cGVkZWYgdm9pZCAoXlJUQ1ZpZGVvRGVjb2RlckNhbGxiYWNrKShSVENWaWRl
b0ZyYW1lICpmcmFtZSk7CisgCisgLyoqIFByb3RvY29sIGZvciBkZWNvZGVyIGltcGxlbWVudGF0
aW9ucy4gKi8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVf
bmFtZSgiV0tfUlRDVmlkZW9EZWNvZGVyIikpKQorIEBwcm90b2NvbCBSVENWaWRlb0RlY29kZXIg
PE5TT2JqZWN0PgorIAorIC0gKHZvaWQpc2V0Q2FsbGJhY2s6KFJUQ1ZpZGVvRGVjb2RlckNhbGxi
YWNrKWNhbGxiYWNrOworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENW
aWRlb0RlY29kZXJGYWN0b3J5LmgKK2luZGV4IDNlMjQxNTNiODJjLi5jYjk1ZmEzZjEzNCAxMDA2
NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2RlckZh
Y3RvcnkuaAorQEAgLTE4LDYgKzE4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAv
KiogUlRDVmlkZW9EZWNvZGVyRmFjdG9yeSBpcyBhbiBPYmplY3RpdmUtQyB2ZXJzaW9uIG9mIHdl
YnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeS4gKi8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJp
YnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9EZWNvZGVyRmFjdG9yeSIpKSkK
KyBAcHJvdG9jb2wgUlRDVmlkZW9EZWNvZGVyRmFjdG9yeSA8TlNPYmplY3Q+CisgCisgLSAobnVs
bGFibGUgaWQ8UlRDVmlkZW9EZWNvZGVyPiljcmVhdGVEZWNvZGVyOihSVENWaWRlb0NvZGVjSW5m
byAqKWluZm87CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVy
LmgKK2luZGV4IGM1MjU3Njc0ZDgzLi41MjkxYmIxMzQyYiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9F
bmNvZGVyLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyLmgKK0BAIC0xOSw3ICsxOSwxMSBAQAorICNp
bXBvcnQgIlJUQ1ZpZGVvRnJhbWUuaCIKKyAKKyBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorLQor
Ky8qCisrbmFtZXNwYWNlIHdlYnJ0YyB7CisrY2xhc3MgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsK
Kyt9OworKyovCisgLyoqIENhbGxiYWNrIGJsb2NrIGZvciBlbmNvZGVyLiAqLworIHR5cGVkZWYg
Qk9PTCAoXlJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrKShSVENFbmNvZGVkSW1hZ2UgKmZyYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDxSVENDb2RlY1NwZWNp
ZmljSW5mbz4gaW5mbywKK0BAIC0yNyw2ICszMSw3IEBAIHR5cGVkZWYgQk9PTCAoXlJUQ1ZpZGVv
RW5jb2RlckNhbGxiYWNrKShSVENFbmNvZGVkSW1hZ2UgKmZyYW1lLAorIAorIC8qKiBQcm90b2Nv
bCBmb3IgZW5jb2RlciBpbXBsZW1lbnRhdGlvbnMuICovCisgUlRDX09CSkNfRVhQT1JUCisrX19h
dHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRW5jb2RlciIpKSkKKyBA
cHJvdG9jb2wgUlRDVmlkZW9FbmNvZGVyIDxOU09iamVjdD4KKyAKKyAtICh2b2lkKXNldENhbGxi
YWNrOihSVENWaWRlb0VuY29kZXJDYWxsYmFjayljYWxsYmFjazsKK0BAIC0zNyw2ICs0Miw3IEBA
IFJUQ19PQkpDX0VYUE9SVAorICAgICBjb2RlY1NwZWNpZmljSW5mbzoobnVsbGFibGUgaWQ8UlRD
Q29kZWNTcGVjaWZpY0luZm8+KWluZm8KKyAgICAgICAgICAgIGZyYW1lVHlwZXM6KE5TQXJyYXk8
TlNOdW1iZXIgKj4gKilmcmFtZVR5cGVzOworIC0gKGludClzZXRCaXRyYXRlOih1aW50MzJfdCli
aXRyYXRlS2JpdCBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZTsKKystIChpbnQpc2V0UmF0
ZUFsbG9jYXRpb246IChSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uICopYWxsb2NhdGlvbiBmcmFt
ZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZTsKKyAtIChOU1N0cmluZyAqKWltcGxlbWVudGF0aW9u
TmFtZTsKKyAKKyAvKiogUmV0dXJucyBRUCBzY2FsaW5nIHNldHRpbmdzIGZvciBlbmNvZGVyLiBU
aGUgcXVhbGl0eSBzY2FsZXIgYWRqdXN0cyB0aGUgcmVzb2x1dGlvbiBpbiBvcmRlciB0bworZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJGYWN0b3J5
LmgKK2luZGV4IDIwYzYwM2Q2ZmU2Li5jYmU5ZWE0OTJhZSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9F
bmNvZGVyRmFjdG9yeS5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnkuaAorQEAgLTE4LDYg
KzE4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAvKiogUlRDVmlkZW9FbmNvZGVy
RmFjdG9yeSBpcyBhbiBPYmplY3RpdmUtQyB2ZXJzaW9uIG9mIHdlYnJ0Yzo6VmlkZW9FbmNvZGVy
RmFjdG9yeS4gKi8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRp
bWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVyRmFjdG9yeSIpKSkKKyBAcHJvdG9jb2wgUlRDVmlk
ZW9FbmNvZGVyRmFjdG9yeSA8TlNPYmplY3Q+CisgCisgLSAobnVsbGFibGUgaWQ8UlRDVmlkZW9F
bmNvZGVyPiljcmVhdGVFbmNvZGVyOihSVENWaWRlb0NvZGVjSW5mbyAqKWluZm87CitkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YmFzZS9SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyUXBUaHJl
c2hvbGRzLmgKK2luZGV4IDJiNDhmNDVjZTBhLi42OGNmZDY2ZGY0NyAxMDA2NDQKKy0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRD
VmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hv
bGRzLmgKK0BAIC0xNiw2ICsxNiw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgLyoq
IFFQIHRocmVzaG9sZHMgZm9yIGVuY29kZXIuIENvcnJlc3BvbmRzIHRvIHdlYnJ0Yzo6VmlkZW9F
bmNvZGVyOjpRcFRocmVzaG9sZHMuICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVf
Xygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyIpKSkK
KyBAaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyA6IE5TT2JqZWN0CisgCisg
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVGhyZXNob2xkc0xvdzooTlNJbnRlZ2VyKWxvdyBoaWdo
OihOU0ludGVnZXIpaGlnaDsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNl
L1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLmgKK2luZGV4IDY5ZTA0Y2FjNzBmLi5hZTNiZjVmYjVm
MSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MuaAorKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0Vu
Y29kZXJTZXR0aW5ncy5oCitAQCAtMjEsNiArMjEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50
ZWdlciwgUlRDVmlkZW9Db2RlY01vZGUpIHsKKyAKKyAvKiogU2V0dGluZ3MgZm9yIGVuY29kZXIu
IENvcnJlc3BvbmRzIHRvIHdlYnJ0Yzo6VmlkZW9Db2RlYy4gKi8KKyBSVENfT0JKQ19FWFBPUlQK
KytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVyU2V0
dGluZ3MiKSkpCisgQGludGVyZmFjZSBSVENWaWRlb0VuY29kZXJTZXR0aW5ncyA6IE5TT2JqZWN0
CisgCisgQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqbmFtZTsKK0BAIC00
MCw0ICs0MSw5IEBAIFJUQ19PQkpDX0VYUE9SVAorIAorIEBlbmQKKyAKKytSVENfT0JKQ19FWFBP
UlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9CaXRyYXRl
QWxsb2NhdGlvbiIpKSkKKytAaW50ZXJmYWNlIFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gOiBO
U09iamVjdAorK0BlbmQKKysKKyBOU19BU1NVTUVfTk9OTlVMTF9FTkQKK2RpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JU
Q1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZS5oCitpbmRleCA5YWNhNzQzM2YzNC4uYmRlMDlj
NTBjOWQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWUuaAorKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lLmgK
K0BAIC0yNiw2ICsyNiw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFJUQ1ZpZGVvUm90
YXRpb24pIHsKKyAKKyAvLyBSVENWaWRlb0ZyYW1lIGlzIGFuIE9iamVjdGl2ZUMgdmVyc2lvbiBv
ZiB3ZWJydGM6OlZpZGVvRnJhbWUuCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygo
b2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRnJhbWUiKSkpCisgQGludGVyZmFjZSBSVENW
aWRlb0ZyYW1lIDogTlNPYmplY3QKKyAKKyAvKiogV2lkdGggd2l0aG91dCByb3RhdGlvbiBhcHBs
aWVkLiAqLworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1l
QnVmZmVyLmgKK2luZGV4IGJiOWU2ZmJhNjMxLi4xODZhZDA4ODliZiAxMDA2NDQKKy0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRD
VmlkZW9GcmFtZUJ1ZmZlci5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaAorQEAgLTE4LDYg
KzE4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAvLyBSVENWaWRlb0ZyYW1lQnVm
ZmVyIGlzIGFuIE9iamVjdGl2ZUMgdmVyc2lvbiBvZiB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXIu
CisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldL
X1JUQ1ZpZGVvRnJhbWVCdWZmZXIiKSkpCisgQHByb3RvY29sIFJUQ1ZpZGVvRnJhbWVCdWZmZXIg
PE5TT2JqZWN0PgorIAorIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBpbnQgd2lkdGg7
CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0LmgKK2luZGV4IGVj
ZTk1NzBhMTNiLi5lOTQ3ZGM2ZTYyMyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRD
Q29kZWNTcGVjaWZpY0luZm9IMjY0LmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDQ29kZWNT
cGVjaWZpY0luZm9IMjY0LmgKK0BAIC0xMCw3ICsxMCw3IEBACisgCisgI2ltcG9ydCA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+CisgCistI2ltcG9ydCAiUlRDQ29kZWNTcGVjaWZpY0luZm8uaCIK
KysjaW1wb3J0ICJiYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmgiCisgI2ltcG9ydCAiUlRDTWFj
cm9zLmgiCisgCisgLyoqIENsYXNzIGZvciBIMjY0IHNwZWNpZmljIGNvbmZpZy4gKi8KK0BAIC0y
MCw2ICsyMCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBSVENIMjY0UGFja2V0aXph
dGlvbk1vZGUpIHsKKyB9OworIAorIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9i
amNfcnVudGltZV9uYW1lKCJXS19SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQiKSkpCisgQGludGVy
ZmFjZSBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQgOiBOU09iamVjdCA8UlRDQ29kZWNTcGVjaWZp
Y0luZm8+CisgCisgQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENIMjY0UGFja2V0aXph
dGlvbk1vZGUgcGFja2V0aXphdGlvbk1vZGU7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0NvZGVj
U3BlY2lmaWNJbmZvSDI2NC5tbQoraW5kZXggNTdmMjQxMWUzYmIuLjYzZThiZDdmNDJhIDEwMDY0
NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQubW0KKysr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0Lm1tCitAQCAtMjAs
NiArMjAsNyBAQCBAc3ludGhlc2l6ZSBwYWNrZXRpemF0aW9uTW9kZSA9IF9wYWNrZXRpemF0aW9u
TW9kZTsKKyAtICh3ZWJydGM6OkNvZGVjU3BlY2lmaWNJbmZvKW5hdGl2ZUNvZGVjU3BlY2lmaWNJ
bmZvIHsKKyAgIHdlYnJ0Yzo6Q29kZWNTcGVjaWZpY0luZm8gY29kZWNTcGVjaWZpY0luZm87Cisg
ICBjb2RlY1NwZWNpZmljSW5mby5jb2RlY1R5cGUgPSB3ZWJydGM6OmtWaWRlb0NvZGVjSDI2NDsK
KysgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVjX25hbWUgPSBba1JUQ1ZpZGVvQ29kZWNIMjY0TmFt
ZSBjU3RyaW5nVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICBjb2RlY1Nw
ZWNpZmljSW5mby5jb2RlY1NwZWNpZmljLkgyNjQucGFja2V0aXphdGlvbl9tb2RlID0KKyAgICAg
ICAod2VicnRjOjpIMjY0UGFja2V0aXphdGlvbk1vZGUpX3BhY2tldGl6YXRpb25Nb2RlOworIAor
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3Rv
cnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaAor
aW5kZXggN2NhOTQ2M2E1OTMuLmQxMTQ2MDMwMGQ1IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19j
b2RlYy9SVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oCisrKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2Nv
ZGVjL1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5LmgKK0BAIC0xOSw2ICsxOSw3IEBAIE5T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCisgICogIGNvZGVjcywgY3JlYXRlIGN1c3RvbSBpbXBsZW1l
bnRhdGlvbnMgb2YgUlRDVmlkZW9FbmNvZGVyRmFjdG9yeSBhbmQgUlRDVmlkZW9EZWNvZGVyRmFj
dG9yeS4KKyAgKi8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRp
bWVfbmFtZSgiV0tfUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkiKSkpCisgQGludGVyZmFj
ZSBSVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeSA6IE5TT2JqZWN0IDxSVENWaWRlb0RlY29k
ZXJGYWN0b3J5PgorIEBlbmQKKyAKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0Rl
ZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5Lm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRW
aWRlb0RlY29kZXJGYWN0b3J5Lm0KK2luZGV4IGJkYjE4NTE3Y2FmLi5jN2QwOGNhYTljOSAxMDA2
NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3Rvcnku
bQorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5t
CitAQCAtMTUsNyArMTUsNyBAQAorICNpbXBvcnQgImFwaS92aWRlb19jb2RlYy9SVENWaWRlb0Nv
ZGVjQ29uc3RhbnRzLmgiCisgI2ltcG9ydCAiYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2Rl
clZQOC5oIgorICNpbXBvcnQgImJhc2UvUlRDVmlkZW9Db2RlY0luZm8uaCIKKy0jaWYgZGVmaW5l
ZChSVENfRU5BQkxFX1ZQOSkKKysjaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorICNpbXBv
cnQgImFwaS92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJWUDkuaCIKKyAjZW5kaWYKKyAKK0BA
IC0yNiw3ICsyNiw3IEBAIEBpbXBsZW1lbnRhdGlvbiBSVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFj
dG9yeQorICAgICByZXR1cm4gW1tSVENWaWRlb0RlY29kZXJIMjY0IGFsbG9jXSBpbml0XTsKKyAg
IH0gZWxzZSBpZiAoW2luZm8ubmFtZSBpc0VxdWFsVG9TdHJpbmc6a1JUQ1ZpZGVvQ29kZWNWcDhO
YW1lXSkgeworICAgICByZXR1cm4gW1JUQ1ZpZGVvRGVjb2RlclZQOCB2cDhEZWNvZGVyXTsKKy0j
aWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKKysjaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5
KQorICAgfSBlbHNlIGlmIChbaW5mby5uYW1lIGlzRXF1YWxUb1N0cmluZzprUlRDVmlkZW9Db2Rl
Y1ZwOU5hbWVdKSB7CisgICAgIHJldHVybiBbUlRDVmlkZW9EZWNvZGVyVlA5IHZwOURlY29kZXJd
OworICNlbmRpZgorQEAgLTM5LDcgKzM5LDcgQEAgQGltcGxlbWVudGF0aW9uIFJUQ0RlZmF1bHRW
aWRlb0RlY29kZXJGYWN0b3J5CisgICByZXR1cm4gQFsKKyAgICAgW1tSVENWaWRlb0NvZGVjSW5m
byBhbGxvY10gaW5pdFdpdGhOYW1lOmtSVENWaWRlb0NvZGVjSDI2NE5hbWVdLAorICAgICBbW1JU
Q1ZpZGVvQ29kZWNJbmZvIGFsbG9jXSBpbml0V2l0aE5hbWU6a1JUQ1ZpZGVvQ29kZWNWcDhOYW1l
XSwKKy0jaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKKysjaWYgIWRlZmluZWQoUlRDX0RJU0FC
TEVfVlA5KQorICAgICBbW1JUQ1ZpZGVvQ29kZWNJbmZvIGFsbG9jXSBpbml0V2l0aE5hbWU6a1JU
Q1ZpZGVvQ29kZWNWcDlOYW1lXSwKKyAjZW5kaWYKKyAgIF07CitkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19j
b2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5oCitpbmRleCBjNDVlNTQzNjJiMi4u
OTMyMzI1NmNlYWQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRl
b0VuY29kZXJGYWN0b3J5LmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVv
RW5jb2RlckZhY3RvcnkuaAorQEAgLTE5LDYgKzE5LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KKyAgKiAgY29kZWNzLCBjcmVhdGUgY3VzdG9tIGltcGxlbWVudGF0aW9ucyBvZiBSVENWaWRl
b0VuY29kZXJGYWN0b3J5IGFuZCBSVENWaWRlb0RlY29kZXJGYWN0b3J5LgorICAqLworIFJUQ19P
QkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENEZWZh
dWx0VmlkZW9FbmNvZGVyRmFjdG9yeSIpKSkKKyBAaW50ZXJmYWNlIFJUQ0RlZmF1bHRWaWRlb0Vu
Y29kZXJGYWN0b3J5IDogTlNPYmplY3QgPFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnk+CisgCisgQHBy
b3BlcnR5KG5vbmF0b21pYywgcmV0YWluKSBSVENWaWRlb0NvZGVjSW5mbyAqcHJlZmVycmVkQ29k
ZWM7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVy
RmFjdG9yeS5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9y
eS5tCitpbmRleCBiNzIyOTZiNjRmMy4uYjAxYzA3NDY3OTIgMTAwNjQ0CistLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3Zp
ZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5Lm0KKysrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlk
ZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkubQorQEAgLTE1LDcgKzE1LDcg
QEAKKyAjaW1wb3J0ICJhcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5oIgor
ICNpbXBvcnQgImFwaS92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaCIKKyAjaW1wb3J0
ICJiYXNlL1JUQ1ZpZGVvQ29kZWNJbmZvLmgiCistI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkp
CisrI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyAjaW1wb3J0ICJhcGkvdmlkZW9fY29k
ZWMvUlRDVmlkZW9FbmNvZGVyVlA5LmgiCisgI2VuZGlmCisgCitAQCAtNDQsNyArNDQsNyBAQCBA
aW1wbGVtZW50YXRpb24gUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkKKyAKKyAgIFJUQ1Zp
ZGVvQ29kZWNJbmZvICp2cDhJbmZvID0gW1tSVENWaWRlb0NvZGVjSW5mbyBhbGxvY10gaW5pdFdp
dGhOYW1lOmtSVENWaWRlb0NvZGVjVnA4TmFtZV07CisgCistI2lmIGRlZmluZWQoUlRDX0VOQUJM
RV9WUDkpCisrI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyAgIFJUQ1ZpZGVvQ29kZWNJ
bmZvICp2cDlJbmZvID0gW1tSVENWaWRlb0NvZGVjSW5mbyBhbGxvY10gaW5pdFdpdGhOYW1lOmtS
VENWaWRlb0NvZGVjVnA5TmFtZV07CisgI2VuZGlmCisgCitAQCAtNTIsNyArNTIsNyBAQCBAaW1w
bGVtZW50YXRpb24gUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkKKyAgICAgY29uc3RyYWlu
ZWRIaWdoSW5mbywKKyAgICAgY29uc3RyYWluZWRCYXNlbGluZUluZm8sCisgICAgIHZwOEluZm8s
CistI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCisrI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxF
X1ZQOSkKKyAgICAgdnA5SW5mbywKKyAjZW5kaWYKKyAgIF07CitAQCAtNjMsNyArNjMsNyBAQCBA
aW1wbGVtZW50YXRpb24gUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkKKyAgICAgcmV0dXJu
IFtbUlRDVmlkZW9FbmNvZGVySDI2NCBhbGxvY10gaW5pdFdpdGhDb2RlY0luZm86aW5mb107Cisg
ICB9IGVsc2UgaWYgKFtpbmZvLm5hbWUgaXNFcXVhbFRvU3RyaW5nOmtSVENWaWRlb0NvZGVjVnA4
TmFtZV0pIHsKKyAgICAgcmV0dXJuIFtSVENWaWRlb0VuY29kZXJWUDggdnA4RW5jb2Rlcl07Cist
I2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCisrI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQ
OSkKKyAgIH0gZWxzZSBpZiAoW2luZm8ubmFtZSBpc0VxdWFsVG9TdHJpbmc6a1JUQ1ZpZGVvQ29k
ZWNWcDlOYW1lXSkgeworICAgICByZXR1cm4gW1JUQ1ZpZGVvRW5jb2RlclZQOSB2cDlFbmNvZGVy
XTsKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxl
TGV2ZWxJZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxldmVsSWQuaAoraW5k
ZXggNTZiMzUzMjE1YTIuLmQwMjIyOTc2NzRlIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENIMjY0UHJvZmlsZUxldmVsSWQuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0
UHJvZmlsZUxldmVsSWQuaAorQEAgLTQ4LDYgKzQ4LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUlu
dGVnZXIsIFJUQ0gyNjRMZXZlbCkgeworIH07CisgCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRy
aWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0gyNjRQcm9maWxlTGV2ZWxJZCIpKSkK
KyBAaW50ZXJmYWNlIFJUQ0gyNjRQcm9maWxlTGV2ZWxJZCA6IE5TT2JqZWN0CisgCisgQHByb3Bl
cnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIFJUQ0gyNjRQcm9maWxlIHByb2ZpbGU7CitkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
Y29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3Zp
ZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbQoraW5kZXggMzU5NjU2Y2I5N2IuLjNk
NWM4MzM3MjQ2IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxl
dmVsSWQubW0KKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1t
CitAQCAtMTksMjMgKzE5LDM1IEBACisgI2luY2x1ZGUgIm1lZGlhL2Jhc2UvaDI2NF9wcm9maWxl
X2xldmVsX2lkLmgiCisgI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKKyAK
KysjaWYgIWRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKKyBuYW1lc3BhY2UgeworIAorIE5T
U3RyaW5nICpNYXhTdXBwb3J0ZWRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEhpZ2goKTsKKyBOU1N0
cmluZyAqTWF4U3VwcG9ydGVkUHJvZmlsZUxldmVsQ29uc3RyYWluZWRCYXNlbGluZSgpOworIAor
IH0gIC8vIG5hbWVzcGFjZQorKyNlbmRpZgorIAorLU5TU3RyaW5nICpjb25zdCBrUlRDVmlkZW9D
b2RlY0gyNjROYW1lID0gQChjcmlja2V0OjprSDI2NENvZGVjTmFtZSk7CisrTlNTdHJpbmcgKmNv
bnN0IGtSVENWaWRlb0NvZGVjSDI2NE5hbWUgPSBAIkgyNjQiOworIE5TU3RyaW5nICpjb25zdCBr
UlRDTGV2ZWwzMUNvbnN0cmFpbmVkSGlnaCA9IEAiNjQwYzFmIjsKKyBOU1N0cmluZyAqY29uc3Qg
a1JUQ0xldmVsMzFDb25zdHJhaW5lZEJhc2VsaW5lID0gQCI0MmUwMWYiOworKworKyNpZiBkZWZp
bmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCisrTlNTdHJpbmcgKmNvbnN0IGtSVENNYXhTdXBwb3J0
ZWRIMjY0UHJvZmlsZUxldmVsQ29uc3RyYWluZWRIaWdoID0KKysgICAgQCI2NDBjMWYiOworK05T
U3RyaW5nICpjb25zdCBrUlRDTWF4U3VwcG9ydGVkSDI2NFByb2ZpbGVMZXZlbENvbnN0cmFpbmVk
QmFzZWxpbmUgPQorKyAgICBAIjQyZTAxZiI7CisrI2Vsc2UKKyBOU1N0cmluZyAqY29uc3Qga1JU
Q01heFN1cHBvcnRlZEgyNjRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEhpZ2ggPQorICAgICBNYXhT
dXBwb3J0ZWRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEhpZ2goKTsKKyBOU1N0cmluZyAqY29uc3Qg
a1JUQ01heFN1cHBvcnRlZEgyNjRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEJhc2VsaW5lID0KKyAg
ICAgTWF4U3VwcG9ydGVkUHJvZmlsZUxldmVsQ29uc3RyYWluZWRCYXNlbGluZSgpOworKyNlbmRp
ZgorIAorIG5hbWVzcGFjZSB7CisgCisrI2lmICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQp
CisrCisgI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKKyAKKyB1c2luZyBuYW1lc3BhY2Ugd2VicnRj
OjpIMjY0OworQEAgLTczLDYgKzg1LDggQEAgTlNTdHJpbmcgKk1heFN1cHBvcnRlZFByb2ZpbGVM
ZXZlbENvbnN0cmFpbmVkSGlnaCgpIHsKKyAgIHJldHVybiBrUlRDTGV2ZWwzMUNvbnN0cmFpbmVk
SGlnaDsKKyB9CisgCisrI2VuZGlmCisrCisgfSAgLy8gbmFtZXNwYWNlCisgCisgQGludGVyZmFj
ZSBSVENIMjY0UHJvZmlsZUxldmVsSWQgKCkKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVv
RGVjb2RlckZhY3RvcnlIMjY0LmgKK2luZGV4IDRmY2ZmMWRmZjc5Li5mZGFiZDgwNzQ4MCAxMDA2
NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQuaAor
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
Y29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5oCitAQCAt
MTQsNSArMTQsNiBAQAorICNpbXBvcnQgIlJUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuaCIKKyAKKyBS
VENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRD
VmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQiKSkpCisgQGludGVyZmFjZSBSVENWaWRlb0RlY29kZXJG
YWN0b3J5SDI2NCA6IE5TT2JqZWN0IDxSVENWaWRlb0RlY29kZXJGYWN0b3J5PgorIEBlbmQKK2Rp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMv
dmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5oCitpbmRleCBiODYwMjc2MjA2Yy4uYjEw
ZDFlNmEwOTkgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2Rlckgy
NjQuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0LmgKK0BAIC0x
NCw1ICsxNCw2IEBACisgI2ltcG9ydCAiUlRDVmlkZW9EZWNvZGVyLmgiCisgCisgUlRDX09CSkNf
RVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRGVj
b2RlckgyNjQiKSkpCisgQGludGVyZmFjZSBSVENWaWRlb0RlY29kZXJIMjY0IDogTlNPYmplY3Qg
PFJUQ1ZpZGVvRGVjb2Rlcj4KKyBAZW5kCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9S
VENWaWRlb0RlY29kZXJIMjY0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJI
MjY0Lm1tCitpbmRleCAzYmZiOTE4YmY2MS4uMWMxOGZhYjE3ZGYgMTAwNjQ0CistLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQubW0KKysrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29k
ZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5tbQorQEAgLTE5LDEwICsxOSw2IEBACisgI2ltcG9ydCAi
aGVscGVycy5oIgorICNpbXBvcnQgImhlbHBlcnMvc2NvcGVkX2NmdHlwZXJlZi5oIgorIAorLSNp
ZiBkZWZpbmVkKFdFQlJUQ19JT1MpCistI2ltcG9ydCAiaGVscGVycy9VSURldmljZStSVENEZXZp
Y2UuaCIKKy0jZW5kaWYKKy0KKyAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVk
ZS92aWRlb19lcnJvcl9jb2Rlcy5oIgorICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyAj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorQEAgLTI1MSw5ICsyNDcsNyBAQCAtICh2b2lk
KWNvbmZpZ3VyZURlY29tcHJlc3Npb25TZXNzaW9uIHsKKyAtICh2b2lkKWRlc3Ryb3lEZWNvbXBy
ZXNzaW9uU2Vzc2lvbiB7CisgICBpZiAoX2RlY29tcHJlc3Npb25TZXNzaW9uKSB7CisgI2lmIGRl
ZmluZWQoV0VCUlRDX0lPUykKKy0gICAgaWYgKFtVSURldmljZSBpc0lPUzExT3JMYXRlcl0pIHsK
Ky0gICAgICBWVERlY29tcHJlc3Npb25TZXNzaW9uV2FpdEZvckFzeW5jaHJvbm91c0ZyYW1lcyhf
ZGVjb21wcmVzc2lvblNlc3Npb24pOworLSAgICB9CisrICAgIFZURGVjb21wcmVzc2lvblNlc3Np
b25XYWl0Rm9yQXN5bmNocm9ub3VzRnJhbWVzKF9kZWNvbXByZXNzaW9uU2Vzc2lvbik7CisgI2Vu
ZGlmCisgICAgIFZURGVjb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRlKF9kZWNvbXByZXNzaW9u
U2Vzc2lvbik7CisgICAgIENGUmVsZWFzZShfZGVjb21wcmVzc2lvblNlc3Npb24pOworZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVu
dHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQuaAoraW5kZXggYzY0NDA1
ZTRkYWMuLjVmNmY3OGRmYTlhIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRl
b0VuY29kZXJGYWN0b3J5SDI2NC5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5j
b2RlckZhY3RvcnlIMjY0LmgKK0BAIC0xNCw1ICsxNCw2IEBACisgI2ltcG9ydCAiUlRDVmlkZW9F
bmNvZGVyRmFjdG9yeS5oIgorIAorIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9i
amNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NCIpKSkKKyBAaW50
ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0IDogTlNPYmplY3QgPFJUQ1ZpZGVvRW5j
b2RlckZhY3Rvcnk+CisgQGVuZAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlk
ZW9FbmNvZGVySDI2NC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0LmgK
K2luZGV4IGE5YzA1NTgwYTQxLi43NzE0YjI1ZWFhNCAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9f
Y29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1Zp
ZGVvRW5jb2RlckgyNjQuaAorQEAgLTE1LDYgKzE1LDcgQEAKKyAjaW1wb3J0ICJSVENWaWRlb0Vu
Y29kZXIuaCIKKyAKKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRp
bWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVySDI2NCIpKSkKKyBAaW50ZXJmYWNlIFJUQ1ZpZGVv
RW5jb2RlckgyNjQgOiBOU09iamVjdCA8UlRDVmlkZW9FbmNvZGVyPgorIAorIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlkZW9Db2RlY0luZm8gKiljb2RlY0luZm87Citk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tCitpbmRleCBmNjY5MGI2ZDg2MS4u
YTE0MzU3ZmI4MGMgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2Rl
ckgyNjQubW0KKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5tbQor
QEAgLTksMzkgKzksNjggQEAKKyAgKgorICAqLworIAorLSNpbXBvcnQgIlJUQ1ZpZGVvRW5jb2Rl
ckgyNjQuaCIKKysjaW1wb3J0ICJXZWJSVEMvUlRDVmlkZW9Db2RlY0gyNjQuaCIKKyAKKyAjaW1w
b3J0IDxWaWRlb1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAK
Ky0jaWYgZGVmaW5lZChXRUJSVENfSU9TKQorLSNpbXBvcnQgImhlbHBlcnMvVUlEZXZpY2UrUlRD
RGV2aWNlLmgiCistI2VuZGlmCistI2ltcG9ydCAiUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0Lmgi
CistI2ltcG9ydCAiUlRDSDI2NFByb2ZpbGVMZXZlbElkLmgiCistI2ltcG9ydCAiYXBpL3BlZXJj
b25uZWN0aW9uL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIrUHJpdmF0ZS5oIgorLSNpbXBvcnQg
ImFwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0NvZGVjSW5mbytQcml2YXRlLmgiCistI2ltcG9y
dCAiYmFzZS9SVENDb2RlY1NwZWNpZmljSW5mby5oIgorLSNpbXBvcnQgImJhc2UvUlRDSTQyMEJ1
ZmZlci5oIgorLSNpbXBvcnQgImJhc2UvUlRDVmlkZW9FbmNvZGVyLmgiCistI2ltcG9ydCAiYmFz
ZS9SVENWaWRlb0ZyYW1lLmgiCistI2ltcG9ydCAiYmFzZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmgi
CistI2ltcG9ydCAiY29tcG9uZW50cy92aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQaXhlbEJ1ZmZl
ci5oIgorLSNpbXBvcnQgImhlbHBlcnMuaCIKKy0KKysjaW1wb3J0ICJQZWVyQ29ubmVjdGlvbi9S
VENWaWRlb0NvZGVjK1ByaXZhdGUuaCIKKysjaW1wb3J0ICJXZWJSVEMvUlRDVmlkZW9Db2RlYy5o
IgorKyNpbXBvcnQgIldlYlJUQy9SVENWaWRlb0ZyYW1lLmgiCisrI2ltcG9ydCAiV2ViUlRDL1JU
Q1ZpZGVvRnJhbWVCdWZmZXIuaCIKKyAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9i
aXRzdHJlYW1fcGFyc2VyLmgiCisgI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0L3Byb2ZpbGVf
bGV2ZWxfaWQuaCIKKyAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvYml0cmF0ZV9hZGp1
c3Rlci5oIgorKyNpbXBvcnQgImhlbHBlcnMuaCIKKyAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRl
L21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
aW5jbHVkZS92aWRlb19lcnJvcl9jb2Rlcy5oIgorICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIu
aCIKKyAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorICNpbmNsdWRlICJydGNfYmFzZS90
aW1ldXRpbHMuaCIKKy0jaW5jbHVkZSAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9u
YWx1X3Jld3JpdGVyLmgiCisrI2luY2x1ZGUgInNkay9vYmpjL0ZyYW1ld29yay9DbGFzc2VzL1Zp
ZGVvVG9vbGJveC9uYWx1X3Jld3JpdGVyLmgiCisrI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL2Nsb2NrLmgiCisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xp
Ynl1di9jb252ZXJ0X2Zyb20uaCIKKyAKKy1AaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlckgyNjQg
KCkKKysjaW5jbHVkZSAic2RrL1dlYktpdC9FbmNvZGVyVXRpbGl0aWVzLmgiCisrI2luY2x1ZGUg
InNkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgiCisrCisrI2ltcG9ydCA8ZGxmY24uaD4KKysj
aW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKysKKytTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFM
KFZpZGVvVG9vbEJveCkKKytTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChWaWRlb1Rvb2xCb3gs
IGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fVXNhZ2UsIE5TU3RyaW5nICopCisrCisrI2lm
ICFFTkFCTEVfVkNQX0VOQ09ERVIgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKKytzdGF0aWMgaW5s
aW5lIGJvb2wgaXNTdGFuZGFyZEZyYW1lU2l6ZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKKyt7CisrICAgIC8vIEZJWE1FOiBFbnZpc2lvbiByZWxheGluZyB0aGlzIHJ1bGUsIHNvbWV0
aGluZyBsaWtlIHdpZHRoIGFuZCBoZWlnaHQgZGl2aWRhYmxlIGJ5IDQgb3IgOCBzaG91bGQgYmUg
Z29vZCBlbm91Z2guCisrICAgIGlmICh3aWR0aCA9PSAxMjgwKQorKyAgICAgICAgcmV0dXJuIGhl
aWdodCA9PSA3MjA7CisrICAgIGlmICh3aWR0aCA9PSA3MjApCisrICAgICAgICByZXR1cm4gaGVp
Z2h0ID09IDEyODA7CisrICAgIGlmICh3aWR0aCA9PSA5NjApCisrICAgICAgICByZXR1cm4gaGVp
Z2h0ID09IDU0MDsKKysgICAgaWYgKHdpZHRoID09IDU0MCkKKysgICAgICAgIHJldHVybiBoZWln
aHQgPT0gOTYwOworKyAgICBpZiAod2lkdGggPT0gNjQwKQorKyAgICAgICAgcmV0dXJuIGhlaWdo
dCA9PSA0ODA7CisrICAgIGlmICh3aWR0aCA9PSA0ODApCisrICAgICAgICByZXR1cm4gaGVpZ2h0
ID09IDY0MDsKKysgICAgaWYgKHdpZHRoID09IDI4OCkKKysgICAgICAgIHJldHVybiBoZWlnaHQg
PT0gMzUyOworKyAgICBpZiAod2lkdGggPT0gMzUyKQorKyAgICAgICAgcmV0dXJuIGhlaWdodCA9
PSAyODg7CisrICAgIGlmICh3aWR0aCA9PSAzMjApCisrICAgICAgICByZXR1cm4gaGVpZ2h0ID09
IDI0MDsKKysgICAgaWYgKHdpZHRoID09IDI0MCkKKysgICAgICAgIHJldHVybiBoZWlnaHQgPT0g
MzIwOworKyAgICByZXR1cm4gZmFsc2U7CisrfQorKyNlbmRpZgorIAorK19fYXR0cmlidXRlX18o
KG9iamNfcnVudGltZV9uYW1lKCJXS19SVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IikpKQorK0Bp
bnRlcmZhY2UgUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCA6IE5TT2JqZWN0IDxSVENWaWRlb0Vu
Y29kZXI+CisrLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZWNJbmZvOihSVENWaWRlb0NvZGVj
SW5mbyAqKWNvZGVjSW5mbyBzaW11bGNhc3RJbmRleDogKGludClpbmRleDsKKyAtICh2b2lkKWZy
YW1lV2FzRW5jb2RlZDooT1NTdGF0dXMpc3RhdHVzCisgICAgICAgICAgICAgICAgICAgZmxhZ3M6
KFZURW5jb2RlSW5mb0ZsYWdzKWluZm9GbGFncworICAgICAgICAgICAgc2FtcGxlQnVmZmVyOihD
TVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIKK0BAIC01MSw3ICs4MCw2IEBAIC0gKHZvaWQp
ZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1cylzdGF0dXMKKyAgICAgICAgICAgIHJlbmRlclRpbWVN
czooaW50NjRfdClyZW5kZXJUaW1lTXMKKyAgICAgICAgICAgICAgIHRpbWVzdGFtcDoodWludDMy
X3QpdGltZXN0YW1wCisgICAgICAgICAgICAgICAgcm90YXRpb246KFJUQ1ZpZGVvUm90YXRpb24p
cm90YXRpb247CistCisgQGVuZAorIAorIG5hbWVzcGFjZSB7ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCitAQCAtNzAsNyArOTgsNyBAQCBjb25zdCBPU1R5cGUga05WMTJQaXhlbEZvcm1hdCA9IGtD
VlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2U7CisgLy8gU3RydWN0
IHRoYXQgd2UgcGFzcyB0byB0aGUgZW5jb2RlciBwZXIgZnJhbWUgdG8gZW5jb2RlLiBXZSByZWNl
aXZlIGl0IGFnYWluCisgLy8gaW4gdGhlIGVuY29kZXIgY2FsbGJhY2suCisgc3RydWN0IFJUQ0Zy
YW1lRW5jb2RlUGFyYW1zIHsKKy0gIFJUQ0ZyYW1lRW5jb2RlUGFyYW1zKFJUQ1ZpZGVvRW5jb2Rl
ckgyNjQgKmUsCisrICBSVENGcmFtZUVuY29kZVBhcmFtcyhSVENTaW5nbGVWaWRlb0VuY29kZXJI
MjY0ICplLAorICAgICAgICAgICAgICAgICAgICAgICAgUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0
ICpjc2ksCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHcsCisgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQzMl90IGgsCitAQCAtODUsNyArMTEzLDcgQEAgc3RydWN0IFJUQ0ZyYW1l
RW5jb2RlUGFyYW1zIHsKKyAgICAgfQorICAgfQorIAorLSAgUlRDVmlkZW9FbmNvZGVySDI2NCAq
ZW5jb2RlcjsKKysgIFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgKmVuY29kZXI7CisgICBSVEND
b2RlY1NwZWNpZmljSW5mb0gyNjQgKmNvZGVjU3BlY2lmaWNJbmZvOworICAgaW50MzJfdCB3aWR0
aDsKKyAgIGludDMyX3QgaGVpZ2h0OworQEAgLTE3Myw4ICsyMDEsOCBAQCB2b2lkIGNvbXByZXNz
aW9uT3V0cHV0Q2FsbGJhY2sodm9pZCAqZW5jb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJvdGF0aW9uOmVuY29kZVBhcmFtcy0+cm90YXRpb25dOworIH0KKyAKKy0vLyBF
eHRyYWN0IFZpZGVvVG9vbGJveCBwcm9maWxlIG91dCBvZiB0aGUgd2VicnRjOjpTZHBWaWRlb0Zv
cm1hdC4gSWYgdGhlcmUgaXMKKy0vLyBubyBzcGVjaWZpYyBWaWRlb1Rvb2xib3ggcHJvZmlsZSBm
b3IgdGhlIHNwZWNpZmllZCBsZXZlbCwgQXV0b0xldmVsIHdpbGwgYmUKKysvLyBFeHRyYWN0IFZp
ZGVvVG9vbGJveCBwcm9maWxlIG91dCBvZiB0aGUgY3JpY2tldDo6VmlkZW9Db2RlYy4gSWYgdGhl
cmUgaXMgbm8KKysvLyBzcGVjaWZpYyBWaWRlb1Rvb2xib3ggcHJvZmlsZSBmb3IgdGhlIHNwZWNp
ZmllZCBsZXZlbCwgQXV0b0xldmVsIHdpbGwgYmUKKyAvLyByZXR1cm5lZC4gVGhlIHVzZXIgbXVz
dCBpbml0aWFsaXplIHRoZSBlbmNvZGVyIHdpdGggYSByZXNvbHV0aW9uIGFuZAorIC8vIGZyYW1l
cmF0ZSBjb25mb3JtaW5nIHRvIHRoZSBzZWxlY3RlZCBIMjY0IGxldmVsIHJlZ2FyZGxlc3MuCisg
Q0ZTdHJpbmdSZWYgRXh0cmFjdFByb2ZpbGUod2VicnRjOjpTZHBWaWRlb0Zvcm1hdCB2aWRlb0Zv
cm1hdCkgeworQEAgLTI4MCwyMyArMzA4LDI2IEBAIENGU3RyaW5nUmVmIEV4dHJhY3RQcm9maWxl
KHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQgdmlkZW9Gb3JtYXQpIHsKKyB9CisgfSAgLy8gbmFtZXNw
YWNlCisgCistQGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVvRW5jb2RlckgyNjQgeworK0BpbXBsZW1l
bnRhdGlvbiBSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IHsKKyAgIFJUQ1ZpZGVvQ29kZWNJbmZv
ICpfY29kZWNJbmZvOworICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6Qml0cmF0ZUFkanVzdGVy
PiBfYml0cmF0ZUFkanVzdGVyOworICAgdWludDMyX3QgX3RhcmdldEJpdHJhdGVCcHM7CistICB1
aW50MzJfdCBfZW5jb2RlckZyYW1lUmF0ZTsKKyAgIHVpbnQzMl90IF9lbmNvZGVyQml0cmF0ZUJw
czsKKyAgIFJUQ0gyNjRQYWNrZXRpemF0aW9uTW9kZSBfcGFja2V0aXphdGlvbk1vZGU7CisgICBD
RlN0cmluZ1JlZiBfcHJvZmlsZTsKKyAgIFJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrIF9jYWxsYmFj
azsKKyAgIGludDMyX3QgX3dpZHRoOworICAgaW50MzJfdCBfaGVpZ2h0OworLSAgVlRDb21wcmVz
c2lvblNlc3Npb25SZWYgX2NvbXByZXNzaW9uU2Vzc2lvbjsKKysgIENvbXByZXNzaW9uU2Vzc2lv
blJlZiBfY29tcHJlc3Npb25TZXNzaW9uOworICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgX3BpeGVs
QnVmZmVyUG9vbDsKKyAgIFJUQ1ZpZGVvQ29kZWNNb2RlIF9tb2RlOworIAorICAgd2VicnRjOjpI
MjY0Qml0c3RyZWFtUGFyc2VyIF9oMjY0Qml0c3RyZWFtUGFyc2VyOworICAgc3RkOjp2ZWN0b3I8
dWludDhfdD4gX2ZyYW1lU2NhbGVCdWZmZXI7CisrCisrICB3ZWJydGM6OlZpZGVvQ29kZWMgX25h
dGl2ZVZpZGVvQ29kZWM7CisrICBpbnQgX3NpbXVsY2FzdEluZGV4OworKyAgYm9vbCBfZGlzYWJs
ZUVuY29kaW5nOworIH0KKyAKKyAvLyAuNSBpcyBzZXQgYXMgYSBtaW5pbnVtIHRvIHByZXZlbnQg
b3ZlcmNvbXBlbnNhdGluZyBmb3IgbGFyZ2UgdGVtcG9yYXJ5CitAQCAtMzA2LDEyICszMzcsMTMg
QEAgQGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVvRW5jb2RlckgyNjQgeworIC8vIGRyYXN0aWNhbGx5
IHJlZHVjZWQgYml0cmF0ZSwgc28gd2Ugd2FudCB0byBhdm9pZCB0aGF0LiBJbiBzdGVhZHkgc3Rh
dGUKKyAvLyBjb25kaXRpb25zLCAwLjk1IHNlZW1zIHRvIGdpdmUgdXMgYmV0dGVyIG92ZXJhbGwg
Yml0cmF0ZSBvdmVyIGxvbmcgcGVyaW9kcworIC8vIG9mIHRpbWUuCistLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoQ29kZWNJbmZvOihSVENWaWRlb0NvZGVjSW5mbyAqKWNvZGVjSW5mbyB7CisrLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZWNJbmZvOihSVENWaWRlb0NvZGVjSW5mbyAqKWNvZGVj
SW5mbyBzaW11bGNhc3RJbmRleDooaW50KWluZGV4IHsKKyAgIGlmIChzZWxmID0gW3N1cGVyIGlu
aXRdKSB7CisgICAgIF9jb2RlY0luZm8gPSBjb2RlY0luZm87CisgICAgIF9iaXRyYXRlQWRqdXN0
ZXIucmVzZXQobmV3IHdlYnJ0Yzo6Qml0cmF0ZUFkanVzdGVyKC41LCAuOTUpKTsKKyAgICAgX3Bh
Y2tldGl6YXRpb25Nb2RlID0gUlRDSDI2NFBhY2tldGl6YXRpb25Nb2RlTm9uSW50ZXJsZWF2ZWQ7
CisgICAgIF9wcm9maWxlID0gRXh0cmFjdFByb2ZpbGUoW2NvZGVjSW5mbyBuYXRpdmVTZHBWaWRl
b0Zvcm1hdF0pOworKyAgICBfc2ltdWxjYXN0SW5kZXggPSBpbmRleDsKKyAgICAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiVXNpbmcgcHJvZmlsZSAiIDw8IENGU3RyaW5nVG9TdHJpbmcoX3Byb2ZpbGUp
OworICAgICBSVENfQ0hFQ0soW2NvZGVjSW5mby5uYW1lIGlzRXF1YWxUb1N0cmluZzprUlRDVmlk
ZW9Db2RlY0gyNjROYW1lXSk7CisgICB9CitAQCAtMzMwLDExICszNjIsMTMgQEAgLSAoTlNJbnRl
Z2VyKXN0YXJ0RW5jb2RlV2l0aFNldHRpbmdzOihSVENWaWRlb0VuY29kZXJTZXR0aW5ncyAqKXNl
dHRpbmdzCisgICBfd2lkdGggPSBzZXR0aW5ncy53aWR0aDsKKyAgIF9oZWlnaHQgPSBzZXR0aW5n
cy5oZWlnaHQ7CisgICBfbW9kZSA9IHNldHRpbmdzLm1vZGU7CisrICBfbmF0aXZlVmlkZW9Db2Rl
YyA9IHNldHRpbmdzLm5hdGl2ZVZpZGVvQ29kZWM7CisrCisrICBSVENfRENIRUNLKF9uYXRpdmVW
aWRlb0NvZGVjLm51bWJlck9mU2ltdWxjYXN0U3RyZWFtcyAhPSAxKTsKKyAKKyAgIC8vIFdlIGNh
biBvbmx5IHNldCBhdmVyYWdlIGJpdHJhdGUgb24gdGhlIEhXIGVuY29kZXIuCistICBfdGFyZ2V0
Qml0cmF0ZUJwcyA9IHNldHRpbmdzLnN0YXJ0Qml0cmF0ZSAqIDEwMDA7ICAvLyBzdGFydEJpdHJh
dGUgaXMgaW4ga2Jwcy4KKysgIF90YXJnZXRCaXRyYXRlQnBzID0gc2V0dGluZ3Muc3RhcnRCaXRy
YXRlOworICAgX2JpdHJhdGVBZGp1c3Rlci0+U2V0VGFyZ2V0Qml0cmF0ZUJwcyhfdGFyZ2V0Qml0
cmF0ZUJwcyk7CistICBfZW5jb2RlckZyYW1lUmF0ZSA9IHNldHRpbmdzLm1heEZyYW1lcmF0ZTsK
KyAKKyAgIC8vIFRPRE8odGtjaGluKTogVHJ5IHNldHRpbmcgcGF5bG9hZCBzaXplIHZpYQorICAg
Ly8ga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhIMjY0U2xpY2VCeXRlcy4KK0BAIC0zNTcs
NiArMzkxLDEwIEBAIC0gKE5TSW50ZWdlcillbmNvZGU6KFJUQ1ZpZGVvRnJhbWUgKilmcmFtZQor
ICAgICBpc0tleWZyYW1lUmVxdWlyZWQgPSBZRVM7CisgICB9CisgCisrICBpZiAoX2Rpc2FibGVF
bmNvZGluZykgeworKyAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworKyAgfQor
KworICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7CisgICBpZiAoW2Zy
YW1lLmJ1ZmZlciBpc0tpbmRPZkNsYXNzOltSVENDVlBpeGVsQnVmZmVyIGNsYXNzXV0pIHsKKyAg
ICAgLy8gTmF0aXZlIGZyYW1lIGJ1ZmZlcgorQEAgLTQzNCw5ICs0NzIsOSBAQCAtIChOU0ludGVn
ZXIpZW5jb2RlOihSVENWaWRlb0ZyYW1lICopZnJhbWUKKyAgIGVuY29kZVBhcmFtcy0+Y29kZWNT
cGVjaWZpY0luZm8ucGFja2V0aXphdGlvbk1vZGUgPSBfcGFja2V0aXphdGlvbk1vZGU7CisgCisg
ICAvLyBVcGRhdGUgdGhlIGJpdHJhdGUgaWYgbmVlZGVkLgorLSAgW3NlbGYgc2V0Qml0cmF0ZUJw
czpfYml0cmF0ZUFkanVzdGVyLT5HZXRBZGp1c3RlZEJpdHJhdGVCcHMoKSBmcmFtZVJhdGU6X2Vu
Y29kZXJGcmFtZVJhdGVdOworKyAgW3NlbGYgc2V0Qml0cmF0ZUJwczpfYml0cmF0ZUFkanVzdGVy
LT5HZXRBZGp1c3RlZEJpdHJhdGVCcHMoKV07CisgCistICBPU1N0YXR1cyBzdGF0dXMgPSBWVENv
bXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKF9jb21wcmVzc2lvblNlc3Npb24sCisrICBPU1N0
YXR1cyBzdGF0dXMgPSBDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZShfY29tcHJlc3Npb25T
ZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwaXhlbEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJlc2VudGF0aW9uVGltZVN0YW1wLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ01UaW1lSW52YWxpZCwKK0BAIC00
NjcsMTAgKzUwNSwxMCBAQCAtICh2b2lkKXNldENhbGxiYWNrOihSVENWaWRlb0VuY29kZXJDYWxs
YmFjayljYWxsYmFjayB7CisgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKKyB9CisgCistLSAoaW50
KXNldEJpdHJhdGU6KHVpbnQzMl90KWJpdHJhdGVLYml0IGZyYW1lcmF0ZToodWludDMyX3QpZnJh
bWVyYXRlIHsKKy0gIF90YXJnZXRCaXRyYXRlQnBzID0gMTAwMCAqIGJpdHJhdGVLYml0OworKy0g
KGludClzZXRCaXRyYXRlOih1aW50MzJfdCliaXRyYXRlQnBzIGZyYW1lcmF0ZToodWludDMyX3Qp
ZnJhbWVyYXRlIHsKKysgIF90YXJnZXRCaXRyYXRlQnBzID0gYml0cmF0ZUJwczsKKyAgIF9iaXRy
YXRlQWRqdXN0ZXItPlNldFRhcmdldEJpdHJhdGVCcHMoX3RhcmdldEJpdHJhdGVCcHMpOworLSAg
W3NlbGYgc2V0Qml0cmF0ZUJwczpfYml0cmF0ZUFkanVzdGVyLT5HZXRBZGp1c3RlZEJpdHJhdGVC
cHMoKSBmcmFtZVJhdGU6ZnJhbWVyYXRlXTsKKysgIFtzZWxmIHNldEJpdHJhdGVCcHM6X2JpdHJh
dGVBZGp1c3Rlci0+R2V0QWRqdXN0ZWRCaXRyYXRlQnBzKCldOworICAgcmV0dXJuIFdFQlJUQ19W
SURFT19DT0RFQ19PSzsKKyB9CisgCitAQCAtNTAzLDYgKzU0MSwxMSBAQCAtIChCT09MKXJlc2V0
Q29tcHJlc3Npb25TZXNzaW9uSWZOZWVkZWRXaXRoRnJhbWU6KFJUQ1ZpZGVvRnJhbWUgKilmcmFt
ZSB7CisgICBPU1R5cGUgZnJhbWVQaXhlbEZvcm1hdCA9IFtzZWxmIHBpeGVsRm9ybWF0T2ZGcmFt
ZTpmcmFtZV07CisgCisgICBpZiAoX2NvbXByZXNzaW9uU2Vzc2lvbikgeworKyNpZiBkZWZpbmVk
KFdFQlJUQ19XRUJLSVRfQlVJTEQpCisrICAgIGlmICghX3BpeGVsQnVmZmVyUG9vbCkgeworKyAg
ICAgIHJldHVybiBOTzsKKysgICAgfQorKyNlbmRpZgorICAgICAvLyBUaGUgcG9vbCBhdHRyaWJ1
dGUgYGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5YCBjYW4gY29udGFpbiBlaXRoZXIg
YW4gYXJyYXkgb2YgcGl4ZWwKKyAgICAgLy8gZm9ybWF0cyBvciBhIHNpbmdsZSBwaXhlbCBmb3Jt
YXQuCisgICAgIE5TRGljdGlvbmFyeSAqcG9vbEF0dHJpYnV0ZXMgPQorQEAgLTUxNiw2ICs1NTks
MTEgQEAgLSAoQk9PTClyZXNldENvbXByZXNzaW9uU2Vzc2lvbklmTmVlZGVkV2l0aEZyYW1lOihS
VENWaWRlb0ZyYW1lICopZnJhbWUgeworICAgICAgIGNvbXByZXNzaW9uU2Vzc2lvblBpeGVsRm9y
bWF0cyA9IEBbIChOU051bWJlciAqKXBpeGVsRm9ybWF0cyBdOworICAgICB9CisgCisrICAgIGlm
IChbZnJhbWUuYnVmZmVyIGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkg
eworKyAgICAgIFJUQ0NWUGl4ZWxCdWZmZXIgKnJ0Y1BpeGVsQnVmZmVyID0gKFJUQ0NWUGl4ZWxC
dWZmZXIgKilmcmFtZS5idWZmZXI7CisrICAgICAgZnJhbWVQaXhlbEZvcm1hdCA9IENWUGl4ZWxC
dWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOworKyAg
ICB9CisrCisgICAgIGlmICghW2NvbXByZXNzaW9uU2Vzc2lvblBpeGVsRm9ybWF0cworICAgICAg
ICAgICAgIGNvbnRhaW5zT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoTG9uZzpmcmFtZVBpeGVs
Rm9ybWF0XV0pIHsKKyAgICAgICByZXNldENvbXByZXNzaW9uU2Vzc2lvbiA9IFlFUzsKK0BAIC01
MzMsNiArNTgxLDcgQEAgLSAoQk9PTClyZXNldENvbXByZXNzaW9uU2Vzc2lvbklmTmVlZGVkV2l0
aEZyYW1lOihSVENWaWRlb0ZyYW1lICopZnJhbWUgeworIAorIC0gKGludClyZXNldENvbXByZXNz
aW9uU2Vzc2lvbldpdGhQaXhlbEZvcm1hdDooT1NUeXBlKWZyYW1lUGl4ZWxGb3JtYXQgeworICAg
W3NlbGYgZGVzdHJveUNvbXByZXNzaW9uU2Vzc2lvbl07CisrICBfZGlzYWJsZUVuY29kaW5nID0g
ZmFsc2U7CisgCisgICAvLyBTZXQgc291cmNlIGltYWdlIGJ1ZmZlciBhdHRyaWJ1dGVzLiBUaGVz
ZSBhdHRyaWJ1dGVzIHdpbGwgYmUgcHJlc2VudCBvbgorICAgLy8gYnVmZmVycyByZXRyaWV2ZWQg
ZnJvbSB0aGUgZW5jb2RlcidzIHBpeGVsIGJ1ZmZlciBwb29sLgorQEAgLTU1OSwyMiArNjA4LDI2
IEBAIC0gKGludClyZXNldENvbXByZXNzaW9uU2Vzc2lvbldpdGhQaXhlbEZvcm1hdDooT1NUeXBl
KWZyYW1lUGl4ZWxGb3JtYXQgeworICAgICBDRlJlbGVhc2UocGl4ZWxGb3JtYXQpOworICAgICBw
aXhlbEZvcm1hdCA9IG51bGxwdHI7CisgICB9CistICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGVu
Y29kZXJfc3BlY3MgPSBudWxscHRyOworLSNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpICYmICFkZWZp
bmVkKFdFQlJUQ19JT1MpCisrICBDRkRpY3Rpb25hcnlSZWYgZW5jb2RlclNwZWNzID0gbnVsbHB0
cjsKKysjaWYgIWRlZmluZWQoV0VCUlRDX0lPUykKKysgIGF1dG8gdXNlSGFyZHdhcmVFbmNvZGVy
ID0gd2VicnRjOjppc0gyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKCkgPyBrQ0ZCb29sZWFuVHJ1
ZSA6IGtDRkJvb2xlYW5GYWxzZTsKKyAgIC8vIEN1cnJlbnRseSBodyBhY2NsIGlzIHN1cHBvcnRl
ZCBhYm92ZSAzNjBwIG9uIG1hYywgYmVsb3cgMzYwcAorICAgLy8gdGhlIGNvbXByZXNzaW9uIHNl
c3Npb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggaHcgYWNjbCBkaXNhYmxlZC4KKy0gIGVuY29kZXJf
c3BlY3MgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKAorLSAgICAgIG51bGxwdHIsIDEsICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpOworLSAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZW5jb2Rlcl9zcGVjcywKKy0gICAgICAg
ICAgICAgICAgICAgICAgIGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdh
cmVBY2NlbGVyYXRlZFZpZGVvRW5jb2RlciwKKy0gICAgICAgICAgICAgICAgICAgICAgIGtDRkJv
b2xlYW5UcnVlKTsKKysgIENGVHlwZVJlZiBzZXNzaW9uS2V5c1tdID0geyBrVlRWaWRlb0VuY29k
ZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsIGtW
VFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fUmVxdWlyZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRl
b0VuY29kZXIsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgfTsKKysgIENGVHlw
ZVJlZiBzZXNzaW9uVmFsdWVzW10gPSB7IHVzZUhhcmR3YXJlRW5jb2RlciwgdXNlSGFyZHdhcmVF
bmNvZGVyLCBrQ0ZCb29sZWFuVHJ1ZSB9OworKyAgZW5jb2RlclNwZWNzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb25LZXlzLCBzZXNzaW9uVmFsdWVzLCAz
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKTsKKysjZWxzZQorKyAgQ0ZUeXBlUmVmIHNlc3Npb25LZXlzW10gPSB7IGtWVENv
bXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgfTsKKysgIENGVHlwZVJlZiBzZXNzaW9uVmFs
dWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07CisrICBlbmNvZGVyU3BlY3MgPSBDRkRpY3Rpb25h
cnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbktleXMsIHNlc3Npb25WYWx1ZXMs
IDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpOworICNlbmRpZgorKworICAgT1NTdGF0dXMgc3RhdHVzID0KKy0gICAgICBW
VENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZShudWxscHRyLCAgLy8gdXNlIGRlZmF1bHQgYWxsb2Nh
dG9yCisrICAgICAgQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKG51bGxwdHIsICAvLyB1c2UgZGVm
YXVsdCBhbGxvY2F0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2hlaWdodCwKKy0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrQ01WaWRlb0NvZGVjVHlwZV9IMjY0LAorLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJfc3BlY3MsICAvLyB1c2UgaGFyZHdhcmUg
YWNjZWxlcmF0ZWQgZW5jb2RlciBpZiBhdmFpbGFibGUKKysgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrQ29kZWNUeXBlSDI2NCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbmNvZGVyU3BlY3MsICAvLyB1c2UgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgZW5jb2RlciBp
ZiBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBdHRy
aWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsICAvLyB1
c2UgZGVmYXVsdCBjb21wcmVzc2VkIGRhdGEgYWxsb2NhdG9yCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29tcHJlc3Npb25PdXRwdXRDYWxsYmFjaywKK0BAIC01ODQsMzIgKzYz
NywxMTMgQEAgLSAoaW50KXJlc2V0Q29tcHJlc3Npb25TZXNzaW9uV2l0aFBpeGVsRm9ybWF0OihP
U1R5cGUpZnJhbWVQaXhlbEZvcm1hdCB7CisgICAgIENGUmVsZWFzZShzb3VyY2VBdHRyaWJ1dGVz
KTsKKyAgICAgc291cmNlQXR0cmlidXRlcyA9IG51bGxwdHI7CisgICB9CistICBpZiAoZW5jb2Rl
cl9zcGVjcykgeworLSAgICBDRlJlbGVhc2UoZW5jb2Rlcl9zcGVjcyk7CistICAgIGVuY29kZXJf
c3BlY3MgPSBudWxscHRyOworKyAgaWYgKGVuY29kZXJTcGVjcykgeworKyAgICBDRlJlbGVhc2Uo
ZW5jb2RlclNwZWNzKTsKKysgICAgZW5jb2RlclNwZWNzID0gbnVsbHB0cjsKKyAgIH0KKysKKysj
aWYgRU5BQkxFX1ZDUF9FTkNPREVSIHx8IGRlZmluZWQoV0VCUlRDX0lPUykKKyAgIGlmIChzdGF0
dXMgIT0gbm9FcnIpIHsKKyAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBjcmVh
dGUgY29tcHJlc3Npb24gc2Vzc2lvbjogIiA8PCBzdGF0dXM7CisgICAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfRVJST1I7CisgICB9CisrI2VuZGlmCisgI2lmIGRlZmluZWQoV0VCUlRDX01B
QykgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKKyAgIENGQm9vbGVhblJlZiBod2FjY2xfZW5hYmxl
ZCA9IG51bGxwdHI7CistICBzdGF0dXMgPSBWVFNlc3Npb25Db3B5UHJvcGVydHkoX2NvbXByZXNz
aW9uU2Vzc2lvbiwKKysgIGlmIChzdGF0dXMgPT0gbm9FcnIpIHsKKysgICAgc3RhdHVzID0gVlRT
ZXNzaW9uQ29weVByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9Vc2luZ0hhcmR3YXJl
QWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaHdhY2NsX2Vu
YWJsZWQpOworKyAgfQorICAgaWYgKHN0YXR1cyA9PSBub0VyciAmJiAoQ0ZCb29sZWFuR2V0VmFs
dWUoaHdhY2NsX2VuYWJsZWQpKSkgeworICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJDb21wcmVz
c2lvbiBzZXNzaW9uIGNyZWF0ZWQgd2l0aCBodyBhY2NsIGVuYWJsZWQiOworICAgfSBlbHNlIHsK
KyAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQ29tcHJlc3Npb24gc2Vzc2lvbiBjcmVhdGVkIHdp
dGggaHcgYWNjbCBkaXNhYmxlZCI7CisrCisrI2lmICFFTkFCTEVfVkNQX0VOQ09ERVIgJiYgIWRl
ZmluZWQoV0VCUlRDX0lPUykKKysgICAgaWYgKCFpc1N0YW5kYXJkRnJhbWVTaXplKF93aWR0aCwg
X2hlaWdodCkpIHsKKysgICAgICBfZGlzYWJsZUVuY29kaW5nID0gdHJ1ZTsKKysgICAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiVXNpbmcgSDI2NCBzb2Z0d2FyZSBlbmNvZGVyIHdpdGggbm9uIHN0
YW5kYXJkIHNpemUgaXMgbm90IHN1cHBvcnRlZCI7CisrICAgICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19FUlJPUjsKKysgICAgfQorKworKyAgICBpZiAoIWdldGtWVFZpZGVvRW5jb2RlclNw
ZWNpZmljYXRpb25fVXNhZ2UoKSkgeworKyAgICAgIF9kaXNhYmxlRW5jb2RpbmcgPSB0cnVlOwor
KyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IGNh
bm5vdCBjcmVhdGUgYSBIMjY0IHNvZnR3YXJlIGVuY29kZXIiOworKyAgICAgIHJldHVybiBXRUJS
VENfVklERU9fQ09ERUNfRVJST1I7CisrICAgIH0KKysKKysgICAgQ0ZEaWN0aW9uYXJ5UmVmIGlv
U3VyZmFjZVZhbHVlID0gQ3JlYXRlQ0ZUeXBlRGljdGlvbmFyeShudWxscHRyLCBudWxscHRyLCAw
KTsKKysgICAgaW50NjRfdCBwaXhlbEZvcm1hdFR5cGUgPSBmcmFtZVBpeGVsRm9ybWF0OworKyAg
ICBDRk51bWJlclJlZiBwaXhlbEZvcm1hdCA9IENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsIGtDRk51
bWJlckxvbmdUeXBlLCAmcGl4ZWxGb3JtYXRUeXBlKTsKKysKKysgICAgY29uc3Qgc2l6ZV90IGF0
dHJpYnV0ZXNTaXplID0gMzsKKysgICAgQ0ZUeXBlUmVmIGtleXNbYXR0cmlidXRlc1NpemVdID0g
eworKyAgICAgIGtDVlBpeGVsQnVmZmVyT3BlbkdMQ29tcGF0aWJpbGl0eUtleSwKKysgICAgICBr
Q1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXksCisrICAgICAga0NWUGl4ZWxCdWZm
ZXJQaXhlbEZvcm1hdFR5cGVLZXkKKysgICAgfTsKKysgICAgQ0ZUeXBlUmVmIHZhbHVlc1thdHRy
aWJ1dGVzU2l6ZV0gPSB7CisrICAgICAga0NGQm9vbGVhblRydWUsCisrICAgICAgaW9TdXJmYWNl
VmFsdWUsCisrICAgICAgcGl4ZWxGb3JtYXR9OworKyAgICBDRkRpY3Rpb25hcnlSZWYgc291cmNl
QXR0cmlidXRlcyA9IENyZWF0ZUNGVHlwZURpY3Rpb25hcnkoa2V5cywgdmFsdWVzLCBhdHRyaWJ1
dGVzU2l6ZSk7CisrCisrICAgIGlmIChpb1N1cmZhY2VWYWx1ZSkgeworKyAgICAgIENGUmVsZWFz
ZShpb1N1cmZhY2VWYWx1ZSk7CisrICAgICAgaW9TdXJmYWNlVmFsdWUgPSBudWxscHRyOworKyAg
ICB9CisrICAgIGlmIChwaXhlbEZvcm1hdCkgeworKyAgICAgIENGUmVsZWFzZShwaXhlbEZvcm1h
dCk7CisrICAgICAgcGl4ZWxGb3JtYXQgPSBudWxscHRyOworKyAgICB9CisrCisrICAgIENGTXV0
YWJsZURpY3Rpb25hcnlSZWYgZW5jb2RlclNwZWNzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZShudWxscHRyLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKysgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZW5jb2Rl
clNwZWNzLCBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxl
cmF0ZWRWaWRlb0VuY29kZXIsIGtDRkJvb2xlYW5GYWxzZSk7CisrICAgIGludCB1c2FnZVZhbHVl
ID0gMTsKKysgICAgQ0ZOdW1iZXJSZWYgdXNhZ2UgPSBDRk51bWJlckNyZWF0ZShudWxscHRyLCBr
Q0ZOdW1iZXJJbnRUeXBlLCAmdXNhZ2VWYWx1ZSk7CisrICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGVuY29kZXJTcGVjcywgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWdldGtWVFZpZGVvRW5jb2RlclNw
ZWNpZmljYXRpb25fVXNhZ2UoKSwgdXNhZ2UpOworKworKyAgICBpZiAodXNhZ2UpIHsKKysgICAg
ICBDRlJlbGVhc2UodXNhZ2UpOworKyAgICAgIHVzYWdlID0gbnVsbHB0cjsKKysgICAgfQorKwor
KyAgICBbc2VsZiBkZXN0cm95Q29tcHJlc3Npb25TZXNzaW9uXTsKKysKKysgICAgT1NTdGF0dXMg
c3RhdHVzID0KKysgICAgICBDb21wcmVzc2lvblNlc3Npb25DcmVhdGUobnVsbHB0ciwgIC8vIHVz
ZSBkZWZhdWx0IGFsbG9jYXRvcgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF93
aWR0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaGVpZ2h0LAorKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2RlY1R5cGVIMjY0LAorKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJTcGVjcywKKysgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzb3VyY2VBdHRyaWJ1dGVzLAorKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsICAvLyB1c2UgZGVmYXVsdCBjb21wcmVzc2VkIGRhdGEgYWxsb2Nh
dG9yCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25PdXRwdXRD
YWxsYmFjaywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZfY29tcHJlc3Npb25TZXNzaW9uKTsKKysg
ICAgaWYgKHNvdXJjZUF0dHJpYnV0ZXMpIHsKKysgICAgICBDRlJlbGVhc2Uoc291cmNlQXR0cmli
dXRlcyk7CisrICAgICAgc291cmNlQXR0cmlidXRlcyA9IG51bGxwdHI7CisrICAgIH0KKysgICAg
aWYgKGVuY29kZXJTcGVjcykgeworKyAgICAgIENGUmVsZWFzZShlbmNvZGVyU3BlY3MpOworKyAg
ICAgIGVuY29kZXJTcGVjcyA9IG51bGxwdHI7CisrICAgIH0KKysgICAgaWYgKHN0YXR1cyAhPSBu
b0VycikgeworKyAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CisrICAgIH0K
KysjZW5kaWYKKyAgIH0KKyAjZW5kaWYKKyAgIFtzZWxmIGNvbmZpZ3VyZUNvbXByZXNzaW9uU2Vz
c2lvbl07CisgCisrI2lmICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCisgICAvLyBUaGUg
cGl4ZWwgYnVmZmVyIHBvb2wgaXMgZGVwZW5kZW50IG9uIHRoZSBjb21wcmVzc2lvbiBzZXNzaW9u
IHNvIGlmIHRoZSBzZXNzaW9uIGlzIHJlc2V0LCB0aGUKKyAgIC8vIHBvb2wgc2hvdWxkIGJlIHJl
c2V0IGFzIHdlbGwuCistICBfcGl4ZWxCdWZmZXJQb29sID0gVlRDb21wcmVzc2lvblNlc3Npb25H
ZXRQaXhlbEJ1ZmZlclBvb2woX2NvbXByZXNzaW9uU2Vzc2lvbik7CistCisrICBfcGl4ZWxCdWZm
ZXJQb29sID0gQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sKF9jb21wcmVzc2lv
blNlc3Npb24pOworKyNlbmRpZgorICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKKyB9
CisgCitAQCAtNjE4LDcgKzc1MiwxMSBAQCAtICh2b2lkKWNvbmZpZ3VyZUNvbXByZXNzaW9uU2Vz
c2lvbiB7CisgICBTZXRWVFNlc3Npb25Qcm9wZXJ0eShfY29tcHJlc3Npb25TZXNzaW9uLCBrVlRD
b21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lLCB0cnVlKTsKKyAgIFNldFZUU2Vzc2lvblBy
b3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUHJv
ZmlsZUxldmVsLCBfcHJvZmlsZSk7CisgICBTZXRWVFNlc3Npb25Qcm9wZXJ0eShfY29tcHJlc3Np
b25TZXNzaW9uLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0FsbG93RnJhbWVSZW9yZGVyaW5n
LCBmYWxzZSk7CistICBbc2VsZiBzZXRFbmNvZGVyQml0cmF0ZUJwczpfdGFyZ2V0Qml0cmF0ZUJw
cyBmcmFtZVJhdGU6X2VuY29kZXJGcmFtZVJhdGVdOworKyNpZiBFTkFCTEVfVkNQX0VOQ09ERVIK
KysgIGlmIChhdXRvIGtleSA9IGdldGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fVXNhZ2Uo
KSkKKysgICAgICBTZXRWVFNlc3Npb25Qcm9wZXJ0eShfY29tcHJlc3Npb25TZXNzaW9uLCAoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5LCAxKTsKKysjZW5kaWYKKysgIFtzZWxmIHNldEVuY29kZXJC
aXRyYXRlQnBzOl90YXJnZXRCaXRyYXRlQnBzXTsKKyAgIC8vIFRPRE8odGtjaGluKTogTG9vayBh
dCBlbnRyb3B5IG1vZGUgYW5kIGNvbG9yc3BhY2UgbWF0cmljZXMuCisgICAvLyBUT0RPKHRrY2hp
bik6IEludmVzdGlnYXRlIHRvIHNlZSBpZiB0aGVyZSdzIGFueSB3YXkgdG8gbWFrZSB0aGlzIHdv
cmsuCisgICAvLyBNYXkgbmVlZCBpdCB0byBpbnRlcm9wIHdpdGggQW5kcm9pZC4gQ3VycmVudGx5
IHRoaXMgY2FsbCBqdXN0IGZhaWxzLgorQEAgLTYzNSw3ICs3NzMsNyBAQCAtICh2b2lkKWNvbmZp
Z3VyZUNvbXByZXNzaW9uU2Vzc2lvbiB7CisgCisgLSAodm9pZClkZXN0cm95Q29tcHJlc3Npb25T
ZXNzaW9uIHsKKyAgIGlmIChfY29tcHJlc3Npb25TZXNzaW9uKSB7CistICAgIFZUQ29tcHJlc3Np
b25TZXNzaW9uSW52YWxpZGF0ZShfY29tcHJlc3Npb25TZXNzaW9uKTsKKysgICAgQ29tcHJlc3Np
b25TZXNzaW9uSW52YWxpZGF0ZShfY29tcHJlc3Npb25TZXNzaW9uKTsKKyAgICAgQ0ZSZWxlYXNl
KF9jb21wcmVzc2lvblNlc3Npb24pOworICAgICBfY29tcHJlc3Npb25TZXNzaW9uID0gbnVsbHB0
cjsKKyAgICAgX3BpeGVsQnVmZmVyUG9vbCA9IG51bGxwdHI7CitAQCAtNjQ2LDE3ICs3ODQsMTUg
QEAgLSAoTlNTdHJpbmcgKilpbXBsZW1lbnRhdGlvbk5hbWUgeworICAgcmV0dXJuIEAiVmlkZW9U
b29sYm94IjsKKyB9CisgCistLSAodm9pZClzZXRCaXRyYXRlQnBzOih1aW50MzJfdCliaXRyYXRl
QnBzIGZyYW1lUmF0ZToodWludDMyX3QpZnJhbWVSYXRlIHsKKy0gIGlmIChfZW5jb2RlckJpdHJh
dGVCcHMgIT0gYml0cmF0ZUJwcyB8fCBfZW5jb2RlckZyYW1lUmF0ZSAhPSBmcmFtZVJhdGUpIHsK
Ky0gICAgW3NlbGYgc2V0RW5jb2RlckJpdHJhdGVCcHM6Yml0cmF0ZUJwcyBmcmFtZVJhdGU6ZnJh
bWVSYXRlXTsKKystICh2b2lkKXNldEJpdHJhdGVCcHM6KHVpbnQzMl90KWJpdHJhdGVCcHMgewor
KyAgaWYgKF9lbmNvZGVyQml0cmF0ZUJwcyAhPSBiaXRyYXRlQnBzKSB7CisrICAgIFtzZWxmIHNl
dEVuY29kZXJCaXRyYXRlQnBzOmJpdHJhdGVCcHNdOworICAgfQorIH0KKyAKKy0tICh2b2lkKXNl
dEVuY29kZXJCaXRyYXRlQnBzOih1aW50MzJfdCliaXRyYXRlQnBzIGZyYW1lUmF0ZToodWludDMy
X3QpZnJhbWVSYXRlIHsKKystICh2b2lkKXNldEVuY29kZXJCaXRyYXRlQnBzOih1aW50MzJfdCli
aXRyYXRlQnBzIHsKKyAgIGlmIChfY29tcHJlc3Npb25TZXNzaW9uKSB7CisgICAgIFNldFZUU2Vz
c2lvblByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9uUHJvcGVydHlL
ZXlfQXZlcmFnZUJpdFJhdGUsIGJpdHJhdGVCcHMpOworLSAgICBTZXRWVFNlc3Npb25Qcm9wZXJ0
eSgKKy0gICAgICAgIF9jb21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9uUHJvcGVydHlL
ZXlfRXhwZWN0ZWRGcmFtZVJhdGUsIGZyYW1lUmF0ZSk7CisgCisgICAgIC8vIFRPRE8odGtjaGlu
KTogQWRkIGEgaGVscGVyIG1ldGhvZCB0byBzZXQgYXJyYXkgdmFsdWUuCisgICAgIGludDY0X3Qg
ZGF0YUxpbWl0Qnl0ZXNQZXJTZWNvbmRWYWx1ZSA9CitAQCAtNjY4LDcgKzgwNCw3IEBAIC0gKHZv
aWQpc2V0RW5jb2RlckJpdHJhdGVCcHM6KHVpbnQzMl90KWJpdHJhdGVCcHMgZnJhbWVSYXRlOih1
aW50MzJfdClmcmFtZVJhdGUKKyAgICAgICAgIENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZvbmVTZWNvbmRWYWx1ZSk7CisgICAgIGNvbnN0
IHZvaWQgKm51bXNbMl0gPSB7Ynl0ZXNQZXJTZWNvbmQsIG9uZVNlY29uZH07CisgICAgIENGQXJy
YXlSZWYgZGF0YVJhdGVMaW1pdHMgPSBDRkFycmF5Q3JlYXRlKG51bGxwdHIsIG51bXMsIDIsICZr
Q0ZUeXBlQXJyYXlDYWxsQmFja3MpOworLSAgICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25T
ZXRQcm9wZXJ0eSgKKysgICAgT1NTdGF0dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNzaW9uU2V0
UHJvcGVydHkoCisgICAgICAgICBfY29tcHJlc3Npb25TZXNzaW9uLCBrVlRDb21wcmVzc2lvblBy
b3BlcnR5S2V5X0RhdGFSYXRlTGltaXRzLCBkYXRhUmF0ZUxpbWl0cyk7CisgICAgIGlmIChieXRl
c1BlclNlY29uZCkgeworICAgICAgIENGUmVsZWFzZShieXRlc1BlclNlY29uZCk7CitAQCAtNjgw
LDExICs4MTYsMTAgQEAgLSAodm9pZClzZXRFbmNvZGVyQml0cmF0ZUJwczoodWludDMyX3QpYml0
cmF0ZUJwcyBmcmFtZVJhdGU6KHVpbnQzMl90KWZyYW1lUmF0ZQorICAgICAgIENGUmVsZWFzZShk
YXRhUmF0ZUxpbWl0cyk7CisgICAgIH0KKyAgICAgaWYgKHN0YXR1cyAhPSBub0VycikgeworLSAg
ICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gc2V0IGRhdGEgcmF0ZSBsaW1pdCB3
aXRoIGNvZGU6ICIgPDwgc3RhdHVzOworKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWls
ZWQgdG8gc2V0IGRhdGEgcmF0ZSBsaW1pdCI7CisgICAgIH0KKyAKKyAgICAgX2VuY29kZXJCaXRy
YXRlQnBzID0gYml0cmF0ZUJwczsKKy0gICAgX2VuY29kZXJGcmFtZVJhdGUgPSBmcmFtZVJhdGU7
CisgICB9CisgfQorIAorQEAgLTY5OCw3ICs4MzMsNyBAQCAtICh2b2lkKWZyYW1lV2FzRW5jb2Rl
ZDooT1NTdGF0dXMpc3RhdHVzCisgICAgICAgICAgICAgICB0aW1lc3RhbXA6KHVpbnQzMl90KXRp
bWVzdGFtcAorICAgICAgICAgICAgICAgIHJvdGF0aW9uOihSVENWaWRlb1JvdGF0aW9uKXJvdGF0
aW9uIHsKKyAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKKy0gICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIkgyNjQgZW5jb2RlIGZhaWxlZCB3aXRoIGNvZGU6ICIgPDwgc3RhdHVzOworKyAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiSDI2NCBlbmNvZGUgZmFpbGVkOiAiIDw8IHN0YXR1czsKKyAgICAg
cmV0dXJuOworICAgfQorICAgaWYgKGluZm9GbGFncyAmIGtWVEVuY29kZUluZm9fRnJhbWVEcm9w
cGVkKSB7CitAQCAtNzQzLDYgKzg3OCw3IEBAIC0gKHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0
YXR1cylzdGF0dXMKKyAgIGZyYW1lLnJvdGF0aW9uID0gcm90YXRpb247CisgICBmcmFtZS5jb250
ZW50VHlwZSA9IChfbW9kZSA9PSBSVENWaWRlb0NvZGVjTW9kZVNjcmVlbnNoYXJpbmcpID8gUlRD
VmlkZW9Db250ZW50VHlwZVNjcmVlbnNoYXJlIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVENWaWRlb0NvbnRlbnRU
eXBlVW5zcGVjaWZpZWQ7CisrICBmcmFtZS5zcGF0aWFsSW5kZXggPSBfc2ltdWxjYXN0SW5kZXg7
CisgICBmcmFtZS5mbGFncyA9IHdlYnJ0Yzo6VmlkZW9TZW5kVGltaW5nOjprSW52YWxpZDsKKyAK
KyAgIGludCBxcDsKK0BAIC03NTgsOSArODk0LDg4IEBAIC0gKHZvaWQpZnJhbWVXYXNFbmNvZGVk
OihPU1N0YXR1cylzdGF0dXMKKyAgIF9iaXRyYXRlQWRqdXN0ZXItPlVwZGF0ZShmcmFtZS5idWZm
ZXIubGVuZ3RoKTsKKyB9CisgCistLSAobnVsbGFibGUgUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hv
bGRzICopc2NhbGluZ1NldHRpbmdzIHsKKy0gIHJldHVybiBbW1JUQ1ZpZGVvRW5jb2RlclFwVGhy
ZXNob2xkcyBhbGxvY10gaW5pdFdpdGhUaHJlc2hvbGRzTG93OmtMb3dIMjY0UXBUaHJlc2hvbGQK
Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoaWdoOmtIaWdoSDI2NFFwVGhyZXNob2xkXTsKKystIChSVENWaWRlb0VuY29kZXJR
cFRocmVzaG9sZHMgKilzY2FsaW5nU2V0dGluZ3MgeworKyAgcmV0dXJuIFtbUlRDVmlkZW9FbmNv
ZGVyUXBUaHJlc2hvbGRzIGFsbG9jXSBpbml0V2l0aFRocmVzaG9sZHNMb3c6a0xvd0gyNjRRcFRo
cmVzaG9sZCBoaWdoOmtIaWdoSDI2NFFwVGhyZXNob2xkXTsKKyt9CisrCisrLSAoaW50KXNldFJh
dGVBbGxvY2F0aW9uOihSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uICopYWxsb2NhdGlvbiBmcmFt
ZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZSB7CisrICByZXR1cm4gMDsKKyt9CisrCisrQGVuZAor
KworK0BpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0VuY29kZXJIMjY0IHsKKysgIE5TTXV0YWJsZUFy
cmF5PFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQqPiAqX2NvZGVjczsKKysgIFJUQ1ZpZGVvQ29k
ZWNJbmZvICpfY29kZWNJbmZvOworK30KKystIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlY0lu
Zm86KFJUQ1ZpZGVvQ29kZWNJbmZvICopY29kZWNJbmZvIHsKKysgIGlmIChzZWxmID0gW3N1cGVy
IGluaXRdKSB7CisrICAgIF9jb2RlY0luZm8gPSBjb2RlY0luZm87CisrICB9CisrICByZXR1cm4g
c2VsZjsKKyt9CisrCisrLSAodm9pZClzZXRDYWxsYmFjazooUlRDVmlkZW9FbmNvZGVyQ2FsbGJh
Y2spY2FsbGJhY2sgeworKyAgZm9yIChSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICpjb2RlYyA6
IF9jb2RlY3MpCisrICAgIFtjb2RlYyBzZXRDYWxsYmFjazpjYWxsYmFja107CisrfQorKworKy0g
KE5TSW50ZWdlcilzdGFydEVuY29kZVdpdGhTZXR0aW5nczooUlRDVmlkZW9FbmNvZGVyU2V0dGlu
Z3MgKilzZXR0aW5ncyBudW1iZXJPZkNvcmVzOihpbnQpbnVtYmVyT2ZDb3JlcyB7CisrICAgIGF1
dG8gbmF0aXZlQ29kZWNTZXR0aW5ncyA9IHNldHRpbmdzLm5hdGl2ZVZpZGVvQ29kZWM7CisrCisr
ICBfY29kZWNzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisrICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMCA7IGluZGV4IDwgbmF0aXZlQ29kZWNTZXR0aW5ncy5udW1iZXJPZlNpbXVs
Y2FzdFN0cmVhbXM7ICsraW5kZXgpIHsKKysgICAgYXV0byBjb2RlYyA9IFtbUlRDU2luZ2xlVmlk
ZW9FbmNvZGVySDI2NCBhbGxvY10gaW5pdFdpdGhDb2RlY0luZm86X2NvZGVjSW5mbyBzaW11bGNh
c3RJbmRleDppbmRleF07CisrICAgIFtfY29kZWNzIGFkZE9iamVjdDpjb2RlY107CisrCisrICAg
IGF1dG8gY29kZWNTZXR0aW5ncyA9IG5hdGl2ZUNvZGVjU2V0dGluZ3M7CisrICAgIGNvZGVjU2V0
dGluZ3Mud2lkdGggPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNpbXVsY2FzdFN0cmVhbVtpbmRleF0u
d2lkdGg7CisrICAgIGNvZGVjU2V0dGluZ3MuaGVpZ2h0ID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5z
aW11bGNhc3RTdHJlYW1baW5kZXhdLmhlaWdodDsKKysgICAgY29kZWNTZXR0aW5ncy5tYXhCaXRy
YXRlID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNhc3RTdHJlYW1baW5kZXhdLm1heEJpdHJh
dGU7CisrICAgIGNvZGVjU2V0dGluZ3MudGFyZ2V0Qml0cmF0ZSA9IG5hdGl2ZUNvZGVjU2V0dGlu
Z3Muc2ltdWxjYXN0U3RyZWFtW2luZGV4XS50YXJnZXRCaXRyYXRlOworKyAgICBjb2RlY1NldHRp
bmdzLm1pbkJpdHJhdGUgPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNpbXVsY2FzdFN0cmVhbVtpbmRl
eF0ubWluQml0cmF0ZTsKKysgICAgY29kZWNTZXR0aW5ncy5xcE1heCA9IG5hdGl2ZUNvZGVjU2V0
dGluZ3Muc2ltdWxjYXN0U3RyZWFtW2luZGV4XS5xcE1heDsKKysgICAgY29kZWNTZXR0aW5ncy5h
Y3RpdmUgPSB0cnVlOworKworKyAgICBhdXRvICpzZXR0aW5ncyA9IFtbUlRDVmlkZW9FbmNvZGVy
U2V0dGluZ3MgYWxsb2NdIGluaXRXaXRoTmF0aXZlVmlkZW9Db2RlYzomY29kZWNTZXR0aW5nc107
CisrICAgIFtjb2RlYyBzdGFydEVuY29kZVdpdGhTZXR0aW5nczpzZXR0aW5ncyBudW1iZXJPZkNv
cmVzOm51bWJlck9mQ29yZXNdOworKyAgfQorKyAgcmV0dXJuIDA7CisrfQorKworKy0gKE5TSW50
ZWdlcilyZWxlYXNlRW5jb2RlciB7CisrICBmb3IgKFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQg
KmNvZGVjIDogX2NvZGVjcykKKysgICAgW2NvZGVjIHJlbGVhc2VFbmNvZGVyXTsKKysgIF9jb2Rl
Y3MgPSBuaWw7CisrICByZXR1cm4gMDsKKyt9CisrCisrLSAoTlNJbnRlZ2VyKWVuY29kZTooUlRD
VmlkZW9GcmFtZSAqKWZyYW1lIGNvZGVjU3BlY2lmaWNJbmZvOihudWxsYWJsZSBpZDxSVENDb2Rl
Y1NwZWNpZmljSW5mbz4paW5mbyBmcmFtZVR5cGVzOihOU0FycmF5PE5TTnVtYmVyICo+ICopZnJh
bWVUeXBlcyB7CisrICBpbnQgcmVzdWx0ID0gMDsKKysgIGZvciAoUlRDU2luZ2xlVmlkZW9FbmNv
ZGVySDI2NCAqY29kZWMgOiBfY29kZWNzKQorKyAgICByZXN1bHQgfD0gW2NvZGVjIGVuY29kZTpm
cmFtZSBjb2RlY1NwZWNpZmljSW5mbzppbmZvIGZyYW1lVHlwZXM6ZnJhbWVUeXBlc107CisrICBy
ZXR1cm4gcmVzdWx0OworK30KKysKKystIChpbnQpc2V0UmF0ZUFsbG9jYXRpb246KFJUQ1ZpZGVv
Qml0cmF0ZUFsbG9jYXRpb24gKiliaXRSYXRlQWxsb2NhdGlvbiBmcmFtZXJhdGU6KHVpbnQzMl90
KSBmcmFtZXJhdGUgeworKyAgaW50IHJlc3VsdCA9IDA7CisrICB1bnNpZ25lZCBjb3VudGVyID0g
MDsKKysgIGF1dG8gbmF0aXZlQml0UmF0ZUFsbG9jYXRpb24gPSBiaXRSYXRlQWxsb2NhdGlvbi5u
YXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOworKyAgZm9yIChSVENTaW5nbGVWaWRlb0VuY29k
ZXJIMjY0ICpjb2RlYyA6IF9jb2RlY3MpCisrICAgIHJlc3VsdCB8PSBbY29kZWMgc2V0Qml0cmF0
ZTpuYXRpdmVCaXRSYXRlQWxsb2NhdGlvbi5HZXRTcGF0aWFsTGF5ZXJTdW0oY291bnRlcisrKSBm
cmFtZXJhdGU6ZnJhbWVyYXRlXTsKKysgIHJldHVybiByZXN1bHQ7CisrfQorKworKy0gKE5TU3Ry
aW5nICopaW1wbGVtZW50YXRpb25OYW1lIHsKKysgIHJldHVybiBAIlZpZGVvVG9vbGJveCI7Cisr
fQorKworKy0gKFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyAqKXNjYWxpbmdTZXR0aW5ncyB7
CisrICByZXR1cm4gW1tSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMgYWxsb2NdIGluaXRXaXRo
VGhyZXNob2xkc0xvdzprTG93SDI2NFFwVGhyZXNob2xkIGhpZ2g6a0hpZ2hIMjY0UXBUaHJlc2hv
bGRdOworK30KKysKKystIChpbnQpc2V0Qml0cmF0ZToodWludDMyX3QpYml0cmF0ZUtiaXQgZnJh
bWVyYXRlOih1aW50MzJfdClmcmFtZXJhdGUgeworKyAgcmV0dXJuIDA7CisgfQorIAorIEBlbmQK
K2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1VJRGV2aWNlK0gyNjRQcm9maWxlLm1tIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9u
ZW50cy92aWRlb19jb2RlYy9VSURldmljZStIMjY0UHJvZmlsZS5tbQoraW5kZXggODUyYzNkNDcw
MmYuLmEwMTVmN2NhMTVjIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9VSURldmljZStI
MjY0UHJvZmlsZS5tbQorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9VSURldmljZStIMjY0UHJvZmls
ZS5tbQorQEAgLTI0LDkgKzI0LDYgQEAgc3RydWN0IFN1cHBvcnRlZEgyNjRQcm9maWxlIHsKKyAK
KyBjb25zdGV4cHIgU3VwcG9ydGVkSDI2NFByb2ZpbGUga0gyNjRNYXhTdXBwb3J0ZWRQcm9maWxl
c1tdID0geworICAgICAvLyBpUGhvbmVzIHdpdGggYXQgbGVhc3QgaU9TIDkKKy0gICAge1JUQ0Rl
dmljZVR5cGVJUGhvbmVYUywge2tQcm9maWxlSGlnaCwga0xldmVsNV8yfX0sICAgICAgLy8gaHR0
cHM6Ly9zdXBwb3J0LmFwcGxlLmNvbS9rYi9TUDc3OQorLSAgICB7UlRDRGV2aWNlVHlwZUlQaG9u
ZVhTTWF4LCB7a1Byb2ZpbGVIaWdoLCBrTGV2ZWw1XzJ9fSwgICAvLyBodHRwczovL3N1cHBvcnQu
YXBwbGUuY29tL2tiL1NQNzgwCistICAgIHtSVENEZXZpY2VUeXBlSVBob25lWFIsIHtrUHJvZmls
ZUhpZ2gsIGtMZXZlbDVfMn19LCAgICAgIC8vIGh0dHBzOi8vc3VwcG9ydC5hcHBsZS5jb20va2Iv
U1A3ODEKKyAgICAge1JUQ0RldmljZVR5cGVJUGhvbmVYLCB7a1Byb2ZpbGVIaWdoLCBrTGV2ZWw1
XzJ9fSwgICAgICAgLy8gaHR0cHM6Ly9zdXBwb3J0LmFwcGxlLmNvbS9rYi9TUDc3MAorICAgICB7
UlRDRGV2aWNlVHlwZUlQaG9uZTgsIHtrUHJvZmlsZUhpZ2gsIGtMZXZlbDVfMn19LCAgICAgICAv
LyBodHRwczovL3N1cHBvcnQuYXBwbGUuY29tL2tiL1NQNzY3CisgICAgIHtSVENEZXZpY2VUeXBl
SVBob25lOFBsdXMsIHtrUHJvZmlsZUhpZ2gsIGtMZXZlbDVfMn19LCAgIC8vIGh0dHBzOi8vc3Vw
cG9ydC5hcHBsZS5jb20va2IvU1A3NjgKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hl
bHBlcnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuY2MKK2luZGV4IGFjOTU3ZjFiNDk3
Li40NmRhZjQ0ZWNhYyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5jYwor
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
Y29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmNjCitAQCAtMzUsMTIgKzM1LDEyIEBAIHN0
ZDo6c3RyaW5nIENGU3RyaW5nVG9TdHJpbmcoY29uc3QgQ0ZTdHJpbmdSZWYgY2Zfc3RyaW5nKSB7
CisgfQorIAorIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGEgVlQgcHJvcGVy
dHkuCistdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKKyt2
b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYga2V5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCB2YWx1ZSkgeworICAgQ0ZOdW1iZXJSZWYgY2ZOdW0gPQor
ICAgICAgIENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQz
MlR5cGUsICZ2YWx1ZSk7CistICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25TZXRQcm9wZXJ0
eShzZXNzaW9uLCBrZXksIGNmTnVtKTsKKysgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9u
U2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZOdW0pOworICAgQ0ZSZWxlYXNlKGNm
TnVtKTsKKyAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgc3RkOjpzdHJpbmcga2V5X3N0
cmluZyA9IENGU3RyaW5nVG9TdHJpbmcoa2V5KTsKK0BAIC01MCwxMyArNTAsMTMgQEAgdm9pZCBT
ZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKKyB9CisgCisgLy8gQ29u
dmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KKy12b2lkIFNldFZU
U2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAorK3ZvaWQgU2V0VlRTZXNzaW9u
UHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDRlN0cmluZ1JlZiBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCB2YWx1ZSkgeworICAgaW50NjRfdCB2YWx1ZV82NCA9IHZhbHVlOworICAgQ0ZOdW1i
ZXJSZWYgY2ZOdW0gPQorICAgICAgIENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGtDRk51bWJlclNJbnQ2NFR5cGUsICZ2YWx1ZV82NCk7CistICBPU1N0YXR1cyBzdGF0dXMgPSBW
VFNlc3Npb25TZXRQcm9wZXJ0eShzZXNzaW9uLCBrZXksIGNmTnVtKTsKKysgIE9TU3RhdHVzIHN0
YXR1cyA9IENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZOdW0p
OworICAgQ0ZSZWxlYXNlKGNmTnVtKTsKKyAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAg
c3RkOjpzdHJpbmcga2V5X3N0cmluZyA9IENGU3RyaW5nVG9TdHJpbmcoa2V5KTsKK0BAIC02Niw5
ICs2Niw5IEBAIHZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24s
CisgfQorIAorIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGEgVlQgcHJvcGVy
dHkuCistdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZT
dHJpbmdSZWYga2V5LCBib29sIHZhbHVlKSB7Cisrdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShD
b21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBib29sIHZhbHVl
KSB7CisgICBDRkJvb2xlYW5SZWYgY2ZfYm9vbCA9ICh2YWx1ZSkgPyBrQ0ZCb29sZWFuVHJ1ZSA6
IGtDRkJvb2xlYW5GYWxzZTsKKy0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3Bl
cnR5KHNlc3Npb24sIGtleSwgY2ZfYm9vbCk7CisrICBPU1N0YXR1cyBzdGF0dXMgPSBDb21wcmVz
c2lvblNlc3Npb25TZXRQcm9wZXJ0eShzZXNzaW9uLCBrZXksIGNmX2Jvb2wpOworICAgaWYgKHN0
YXR1cyAhPSBub0VycikgeworICAgICBzdGQ6OnN0cmluZyBrZXlfc3RyaW5nID0gQ0ZTdHJpbmdU
b1N0cmluZyhrZXkpOworICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlRTZXNzaW9uU2V0UHJv
cGVydHkgZmFpbGVkIHRvIHNldDogIiA8PCBrZXlfc3RyaW5nCitAQCAtNzcsMTAgKzc3LDEwIEBA
IHZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5n
UmVmIGtleSwgYm9vbCB2YWx1ZSkgeworIH0KKyAKKyAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBm
b3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgorLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRT
ZXNzaW9uUmVmIHNlc3Npb24sCisrdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lv
blNlc3Npb25SZWYgc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5n
UmVmIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIHZhbHVlKSB7
CistICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShzZXNzaW9uLCBrZXks
IHZhbHVlKTsKKysgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9uU2Vzc2lvblNldFByb3Bl
cnR5KHNlc3Npb24sIGtleSwgdmFsdWUpOworICAgaWYgKHN0YXR1cyAhPSBub0VycikgeworICAg
ICBzdGQ6OnN0cmluZyBrZXlfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyhrZXkpOworICAgICBz
dGQ6OnN0cmluZyB2YWxfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyh2YWx1ZSk7CitkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
Y29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBl
cnMuaAoraW5kZXggMDY4M2VhNzllNTYuLjBjNjY5ZThiY2U2IDEwMDY0NAorLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9oZWxwZXJzLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5oCitA
QCAtMTYsNiArMTYsOCBAQAorICNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+
CisgI2luY2x1ZGUgPHN0cmluZz4KKyAKKysjaW5jbHVkZSAic2RrL1dlYktpdC9FbmNvZGVyVXRp
bGl0aWVzLmgiCisrCisgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgZGlj
dGlvbmFyeS4KKyBpbmxpbmUgQ0ZEaWN0aW9uYXJ5UmVmIENyZWF0ZUNGVHlwZURpY3Rpb25hcnko
Q0ZUeXBlUmVmKiBrZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDRlR5cGVSZWYqIHZhbHVlcywKK0BAIC0yOSwxOCArMzEsMTggQEAgaW5saW5lIENG
RGljdGlvbmFyeVJlZiBDcmVhdGVDRlR5cGVEaWN0aW9uYXJ5KENGVHlwZVJlZioga2V5cywKKyBz
dGQ6OnN0cmluZyBDRlN0cmluZ1RvU3RyaW5nKGNvbnN0IENGU3RyaW5nUmVmIGNmX3N0cmluZyk7
CisgCisgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4K
Ky12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmlu
Z1JlZiBrZXksIGludDMyX3QgdmFsdWUpOworK3ZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29t
cHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwgaW50MzJfdCB2YWx1
ZSk7CisgCisgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0
eS4KKy12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAorK3Zv
aWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBrZXksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSk7CisgCisgLy8gQ29udmVuaWVuY2UgZnVuY3Rp
b24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KKy12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5
KFZUU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIGJvb2wgdmFsdWUpOworK3Zv
aWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENG
U3RyaW5nUmVmIGtleSwgYm9vbCB2YWx1ZSk7CisgCisgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24g
Zm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KKy12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZU
U2Vzc2lvblJlZiBzZXNzaW9uLAorK3ZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Np
b25TZXNzaW9uUmVmIHNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmlu
Z1JlZiBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZSk7
CisgCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9z
cmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KK2luZGV4IGZhZmFkNzQ2NmVjLi5hZTQ1
MDMzYTU3MCAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0K
KysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L25hdGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KK0BAIC05MCw2ICs5MCwx
MSBAQCBjbGFzcyBPYmpDVmlkZW9FbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CisgICAg
IHJldHVybiBbZW5jb2Rlcl8gc2V0Qml0cmF0ZTpiaXRyYXRlIGZyYW1lcmF0ZTpmcmFtZXJhdGVd
OworICAgfQorIAorKyAgaW50MzJfdCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJh
dGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9uLCB1aW50MzJfdCBmcmFtZXJhdGUpIHsKKysgICAgYXV0
byAqcnRjQWxsb2NhdGlvbiA9IFtbUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBhbGxvY10gaW5p
dFdpdGhOYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOiZhbGxvY2F0aW9uXTsKKysgICAgcmV0
dXJuIFtlbmNvZGVyXyBzZXRSYXRlQWxsb2NhdGlvbjogcnRjQWxsb2NhdGlvbiBmcmFtZXJhdGU6
ZnJhbWVyYXRlXTsKKysgIH0KKysKKyAgIFZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gR2V0RW5j
b2RlckluZm8oKSBjb25zdCB7CisgICAgIEVuY29kZXJJbmZvIGluZm87CisgICAgIGluZm8uc3Vw
cG9ydHNfbmF0aXZlX2hhbmRsZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMmE1NGJkYjAwNzhhNGI4MDA1YTMxYmVmZWQxMGY5Y2M2M2I0ZGUzYS4uMjI5NDY3MDE3
ZmVhNmJjNWUzMWFiNThjMGZiMzUzMTVjODI4OTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtODEsNyArODEsNiBAQAogCQk0MTI5NDA5MzIxMkUxMjhEMDBBRDk1RTcgLyog
bGlidnB4X3ZwOF9lbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTI5NDA4RjIxMkUxMjhDMDBBRDk1RTcgLyogbGlidnB4X3ZwOF9lbmNvZGVy
LmggKi87IH07CiAJCTQxMjk0MDk0MjEyRTEyOEQwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2RlY29k
ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5
NDA5MDIxMkUxMjhDMDBBRDk1RTcgLyogbGlidnB4X3ZwOF9kZWNvZGVyLmNjICovOyB9OwogCQk0
MTI5NDA5NTIxMkUxMjhEMDBBRDk1RTcgLyogbGlidnB4X3ZwOF9kZWNvZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NDA5MTIxMkUxMjhDMDBB
RDk1RTcgLyogbGlidnB4X3ZwOF9kZWNvZGVyLmggKi87IH07Ci0JCTQxMjk5QjhCMjEyNzM2NTEw
MEIzNDE0QiAvKiBwYWNlcl9jb250cm9sbGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMDJDRDYyMTI3MzYzQzAwQzI3Q0Q2IC8qIHBhY2VyX2Nv
bnRyb2xsZXIuY2MgKi87IH07CiAJCTQxMjk5QjhDMjEyNzM2NTEwMEIzNDE0QiAvKiBzZW5kX3Rp
bWVfaGlzdG9yeS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRTAyQ0Q4MjEyNzM2M0QwMEMyN0NENiAvKiBzZW5kX3RpbWVfaGlzdG9yeS5jYyAqLzsg
fTsKIAkJNDEyOTlCOEQyMTI3MzY1MTAwQjM0MTRCIC8qIHRyYW5zcG9ydF9mZWVkYmFja19hZGFw
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUw
MkNENzIxMjczNjNDMDBDMjdDRDYgLyogdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaCAqLzsg
fTsKIAkJNDEyOTlCOTEyMTI3MzY3QjAwQjM0MTRCIC8qIGlzYWNfdmFkLmMgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5OUI4RTIxMjczNjdBMDBCMzQx
NEIgLyogaXNhY192YWQuYyAqLzsgfTsKQEAgLTE0Miw3ICsxNDEsNiBAQAogCQk0MTNBMjJBMTFG
RTE4RTA2MDAzNzNFOTkgLyogdGVzdGJhc2U2NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxNDQxRkUxOEQ0QzAwMzczRTk5IC8qIHRlc3RiYXNl
NjQuaCAqLzsgfTsKIAkJNDEzQTIyQTIxRkUxOEUwNjAwMzczRTk5IC8qIGZ1bmN0aW9uX3ZpZXcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMTQ1
MUZFMThENEMwMDM3M0U5OSAvKiBmdW5jdGlvbl92aWV3LmggKi87IH07CiAJCTQxM0EyMkEzMUZF
MThFMDYwMDM3M0U5OSAvKiBmb3JtYXRfbWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjE0NzFGRTE4RDREMDAzNzNFOTkgLyogZm9ybWF0
X21hY3Jvcy5oICovOyB9OwotCQk0MTNBMjJBNDFGRTE4RTA2MDAzNzNFOTkgLyogdW5peGZpbGVz
eXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
M0EyMTQ4MUZFMThENEQwMDM3M0U5OSAvKiB1bml4ZmlsZXN5c3RlbS5oICovOyB9OwogCQk0MTNB
MjJBNTFGRTE4RTA2MDAzNzNFOTkgLyogdGVzdGVjaG9zZXJ2ZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjE0OTFGRTE4RDRFMDAzNzNFOTkg
LyogdGVzdGVjaG9zZXJ2ZXIuY2MgKi87IH07CiAJCTQxM0EyMkE3MUZFMThFMDYwMDM3M0U5OSAv
KiBwcm94eXNlcnZlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxM0EyMTRDMUZFMThENEYwMDM3M0U5OSAvKiBwcm94eXNlcnZlci5jYyAqLzsgfTsK
IAkJNDEzQTIyQTgxRkUxOEUwNjAwMzczRTk5IC8qIGFzeW5jaW52b2tlci1pbmwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMTREMUZFMThENTAw
MDM3M0U5OSAvKiBhc3luY2ludm9rZXItaW5sLmggKi87IH07CkBAIC0yMjgsMTYgKzIyNiwxMyBA
QAogCQk0MTNBMjMzODFGRTE4RTA3MDAzNzNFOTkgLyogbWFjdXRpbHMuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFFNDFGRTE4REIwMDAzNzNF
OTkgLyogbWFjdXRpbHMuY2MgKi87IH07CiAJCTQxM0EyMzM5MUZFMThFMDcwMDM3M0U5OSAvKiB0
YXNrX3F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTNBMjFFNTFGRTE4REIxMDAzNzNFOTkgLyogdGFza19xdWV1ZS5oICovOyB9OwogCQk0MTNB
MjMzQjFGRTE4RTA3MDAzNzNFOTkgLyogYml0YnVmZmVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRTcxRkUxOERCMTAwMzczRTk5IC8qIGJp
dGJ1ZmZlci5jYyAqLzsgfTsKLQkJNDEzQTIzM0MxRkUxOEUwNzAwMzczRTk5IC8qIHBhdGh1dGls
cy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0Ey
MUU4MUZFMThEQjIwMDM3M0U5OSAvKiBwYXRodXRpbHMuY2MgKi87IH07CiAJCTQxM0EyMzNEMUZF
MThFMDcwMDM3M0U5OSAvKiBwaHlzaWNhbHNvY2tldHNlcnZlci5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUU5MUZFMThEQjIwMDM3M0U5OSAv
KiBwaHlzaWNhbHNvY2tldHNlcnZlci5jYyAqLzsgfTsKIAkJNDEzQTIzM0UxRkUxOEUwNzAwMzcz
RTk5IC8qIGJ5dGVvcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEzQTIxRUExRkUxOERCMzAwMzczRTk5IC8qIGJ5dGVvcmRlci5oICovOyB9Owog
CQk0MTNBMjM0MjFGRTE4RTA3MDAzNzNFOTkgLyogdGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFFRTFGRTE4REI0MDAzNzNFOTkgLyog
dGhyZWFkLmggKi87IH07CiAJCTQxM0EyMzQzMUZFMThFMDcwMDM3M0U5OSAvKiBjcmMzMi5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUVGMUZF
MThEQjUwMDM3M0U5OSAvKiBjcmMzMi5jYyAqLzsgfTsKLQkJNDEzQTIzNDUxRkUxOEUwNzAwMzcz
RTk5IC8qIG9wdGlvbnNmaWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTNBMjFGMTFGRTE4REI2MDAzNzNFOTkgLyogb3B0aW9uc2ZpbGUuaCAqLzsg
fTsKIAkJNDEzQTIzNDcxRkUxOEUwNzAwMzczRTk5IC8qIHN3YXBfcXVldWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUYzMUZFMThEQjcwMDM3
M0U5OSAvKiBzd2FwX3F1ZXVlLmggKi87IH07CiAJCTQxM0EyMzQ4MUZFMThFMDcwMDM3M0U5OSAv
KiBkc2NwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNBMjFGNDFGRTE4REI3MDAzNzNFOTkgLyogZHNjcC5oICovOyB9OwogCQk0MTNBMjM0OTFGRTE4
RTA3MDAzNzNFOTkgLyogdGltZXV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFGNTFGRTE4REI3MDAzNzNFOTkgLyogdGltZXV0aWxzLmgg
Ki87IH07Ci0JCTQxM0EyMzRBMUZFMThFMDcwMDM3M0U5OSAvKiBvcHRpb25zZmlsZS5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUY2MUZFMThE
QjgwMDM3M0U5OSAvKiBvcHRpb25zZmlsZS5jYyAqLzsgfTsKIAkJNDEzQTIzNEIxRkUxOEUwNzAw
MzczRTk5IC8qIHR5cGVfdHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTNBMjFGNzFGRTE4REI4MDAzNzNFOTkgLyogdHlwZV90cmFpdHMuaCAq
LzsgfTsKIAkJNDEzQTIzNEMxRkUxOEUwNzAwMzczRTk5IC8qIHJhbmRvbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRjgxRkUxOERCOTAwMzcz
RTk5IC8qIHJhbmRvbS5oICovOyB9OwogCQk0MTNBMjM0RDFGRTE4RTA3MDAzNzNFOTkgLyogc29j
a2V0YWRkcmVzc3BhaXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTNBMjFGOTFGRTE4REI5MDAzNzNFOTkgLyogc29ja2V0YWRkcmVzc3BhaXIuY2Mg
Ki87IH07CkBAIC0yNTUsNyArMjUwLDYgQEAKIAkJNDEzQTIzNUMxRkUxOEUwNzAwMzczRTk5IC8q
IGJpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
M0EyMjA5MUZFMThEQzAwMDM3M0U5OSAvKiBiaW5kLmggKi87IH07CiAJCTQxM0EyMzVEMUZFMThF
MDcwMDM3M0U5OSAvKiBndW5pdF9wcm9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjIwQTFGRTE4REMwMDAzNzNFOTkgLyogZ3VuaXRfcHJvZC5o
ICovOyB9OwogCQk0MTNBMjM1RTFGRTE4RTA3MDAzNzNFOTkgLyogYXN5bmNzb2NrZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjBCMUZFMThE
QzEwMDM3M0U5OSAvKiBhc3luY3NvY2tldC5oICovOyB9OwotCQk0MTNBMjM1RjFGRTE4RTA3MDAz
NzNFOTkgLyogbm9vcC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxM0EyMjBDMUZFMThEQzEwMDM3M0U5OSAvKiBub29wLmNjICovOyB9OwogCQk0MTNB
MjM2MDFGRTE4RTA3MDAzNzNFOTkgLyogcmF0ZV9saW1pdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjIwRDFGRTE4REMyMDAzNzNFOTkgLyog
cmF0ZV9saW1pdGVyLmggKi87IH07CiAJCTQxM0EyMzYxMUZFMThFMDcwMDM3M0U5OSAvKiBzb2Nr
ZXRhZGFwdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzQTIyMEUxRkUxOERDMjAwMzczRTk5IC8qIHNvY2tldGFkYXB0ZXJzLmggKi87IH07CiAJ
CTQxM0EyMzYyMUZFMThFMDcwMDM3M0U5OSAvKiByYXRldHJhY2tlci5jYyBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjBGMUZFMThEQzIwMDM3M0U5
OSAvKiByYXRldHJhY2tlci5jYyAqLzsgfTsKQEAgLTI4Nyw3ICsyODEsNiBAQAogCQk0MTNBMjM4
RDFGRTE4RTA3MDAzNzNFOTkgLyogcmF0ZV9saW1pdGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyM0ExRkUxOEREODAwMzczRTk5IC8qIHJh
dGVfbGltaXRlci5jYyAqLzsgfTsKIAkJNDEzQTIzOEUxRkUxOEUwNzAwMzczRTk5IC8qIGJ1ZmZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIy
M0IxRkUxOEREOTAwMzczRTk5IC8qIGJ1ZmZlci5oICovOyB9OwogCQk0MTNBMjM4RjFGRTE4RTA3
MDAzNzNFOTkgLyogZXZlbnRfdHJhY2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyM0MxRkUxOEREOTAwMzczRTk5IC8qIGV2ZW50X3RyYWNl
ci5jYyAqLzsgfTsKLQkJNDEzQTIzOTAxRkUxOEUwODAwMzczRTk5IC8qIHBhdGh1dGlscy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyM0QxRkUx
OEREOTAwMzczRTk5IC8qIHBhdGh1dGlscy5oICovOyB9OwogCQk0MTNBMjM5MjFGRTE4RTA4MDAz
NzNFOTkgLyogc3Nscm9vdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxM0EyMjNGMUZFMThEREEwMDM3M0U5OSAvKiBzc2xyb290cy5oICovOyB9Owog
CQk0MTNBMjM5NTFGRTE4RTA4MDAzNzNFOTkgLyogaHR0cGNvbW1vbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNDIxRkUxOEREQjAwMzczRTk5
IC8qIGh0dHBjb21tb24uaCAqLzsgfTsKIAkJNDEzQTIzOTYxRkUxOEUwODAwMzczRTk5IC8qIGFz
eW5jc29ja2V0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzQTIyNDMxRkUxOEREQzAwMzczRTk5IC8qIGFzeW5jc29ja2V0LmNjICovOyB9OwpAQCAt
MzA2LDEyICsyOTksMTAgQEAKIAkJNDEzQTIzQUUxRkUxOEUwODAwMzczRTk5IC8qIHNlcXVlbmNl
ZF90YXNrX2NoZWNrZXJfaW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDEzQTIyNUIxRkUxOERFNjAwMzczRTk5IC8qIHNlcXVlbmNlZF90YXNrX2No
ZWNrZXJfaW1wbC5oICovOyB9OwogCQk0MTNBMjNBRjFGRTE4RTA4MDAzNzNFOTkgLyogc3NsZmlu
Z2VycHJpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxM0EyMjVDMUZFMThERTYwMDM3M0U5OSAvKiBzc2xmaW5nZXJwcmludC5oICovOyB9OwogCQk0
MTNBMjNCMTFGRTE4RTA4MDAzNzNFOTkgLyogc3RyaW5naXplX21hY3Jvcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNUUxRkUxOERFNzAwMzcz
RTk5IC8qIHN0cmluZ2l6ZV9tYWNyb3MuaCAqLzsgfTsKLQkJNDEzQTIzQjUxRkUxOEUwODAwMzcz
RTk5IC8qIGZpbGV1dGlscy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxM0EyMjYyMUZFMThERTkwMDM3M0U5OSAvKiBmaWxldXRpbHMuY2MgKi87IH07
CiAJCTQxM0EyM0I3MUZFMThFMDgwMDM3M0U5OSAvKiBldmVudC5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjY0MUZFMThERUIwMDM3M0U5OSAv
KiBldmVudC5jYyAqLzsgfTsKIAkJNDEzQTIzQjkxRkUxOEUwODAwMzczRTk5IC8qIHNvY2tldHNl
cnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
QTIyNjYxRkUxOERFQzAwMzczRTk5IC8qIHNvY2tldHNlcnZlci5oICovOyB9OwogCQk0MTNBMjNC
QTFGRTE4RTA4MDAzNzNFOTkgLyogc2lnc2xvdHRlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNjcxRkUxOERFQzAwMzczRTk5IC8qIHNp
Z3Nsb3R0ZXN0ZXIuaCAqLzsgfTsKIAkJNDEzQTIzQkMxRkUxOEUwODAwMzczRTk5IC8qIGZsYWdz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI2
OTFGRTE4REVGMDAzNzNFOTkgLyogZmxhZ3MuaCAqLzsgfTsKLQkJNDEzQTIzQkQxRkUxOEUwODAw
MzczRTk5IC8qIGZpbGV1dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDEzQTIyNkExRkUxOERGMDAwMzczRTk5IC8qIGZpbGV1dGlscy5oICovOyB9
OwogCQk0MTNBMjNCRTFGRTE4RTA4MDAzNzNFOTkgLyogbG9nc2lua3MuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI2QjFGRTE4REYwMDAzNzNF
OTkgLyogbG9nc2lua3MuY2MgKi87IH07CiAJCTQxM0EyM0MwMUZFMThFMDgwMDM3M0U5OSAvKiBu
dWxsc29ja2V0c2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTNBMjI2RDFGRTE4REYxMDAzNzNFOTkgLyogbnVsbHNvY2tldHNlcnZlci5oICov
OyB9OwogCQk0MTNBMjNDMTFGRTE4RTA4MDAzNzNFOTkgLyogc3Nsc3RyZWFtYWRhcHRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNkUxRkUx
OERGMTAwMzczRTk5IC8qIHNzbHN0cmVhbWFkYXB0ZXIuaCAqLzsgfTsKQEAgLTMzMSw3ICszMjIs
NiBAQAogCQk0MTNBMjNEODFGRTE4RTA4MDAzNzNFOTkgLyogZmlsZV9wb3NpeC5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjg1MUZFMThERkMw
MDM3M0U5OSAvKiBmaWxlX3Bvc2l4LmNjICovOyB9OwogCQk0MTNBMjNEOTFGRTE4RTA4MDAzNzNF
OTkgLyogdGVzdHV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTNBMjI4NjFGRTE4REZDMDAzNzNFOTkgLyogdGVzdHV0aWxzLmggKi87IH07CiAJ
CTQxM0EyM0RBMUZFMThFMDgwMDM3M0U5OSAvKiBmaWxlcm90YXRpbmdzdHJlYW0uY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI4NzFGRTE4REZE
MDAzNzNFOTkgLyogZmlsZXJvdGF0aW5nc3RyZWFtLmNjICovOyB9OwotCQk0MTNBMjNERDFGRTE4
RTA4MDAzNzNFOTkgLyogdGhyZWFkX2Rhcndpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjhBMUZFMThERkUwMDM3M0U5OSAvKiB0aHJlYWRf
ZGFyd2luLm1tICovOyB9OwogCQk0MTNBMjNERTFGRTE4RTA4MDAzNzNFOTkgLyogdGFza19xdWV1
ZV9nY2QuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNBMjI4QjFGRTE4REZFMDAzNzNFOTkgLyogdGFza19xdWV1ZV9nY2QuY2MgKi87IH07CiAJCTQx
M0EyM0RGMUZFMThFMDgwMDM3M0U5OSAvKiBmaXJld2FsbHNvY2tldHNlcnZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyOEMxRkUxOERGRTAw
MzczRTk5IC8qIGZpcmV3YWxsc29ja2V0c2VydmVyLmggKi87IH07CiAJCTQxM0EyM0UyMUZFMThF
MDgwMDM3M0U5OSAvKiBjcHVfdGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDEzQTIyOTAxRkUxOEUwMDAwMzczRTk5IC8qIGNwdV90aW1lLmggKi87
IH07CkBAIC0zNDIsNyArMzMyLDYgQEAKIAkJNDEzQTIzRUIxRkUxOEUwODAwMzczRTk5IC8qIGxv
Y2F0aW9uLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzQTIyOTkxRkUxOEUwMzAwMzczRTk5IC8qIGxvY2F0aW9uLmNjICovOyB9OwogCQk0MTNBMjNF
QzFGRTE4RTA4MDAzNzNFOTkgLyogbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjlBMUZFMThFMDQwMDM3M0U5OSAvKiBsb2NhdGlv
bi5oICovOyB9OwogCQk0MTNBMjNFRDFGRTE4RTA4MDAzNzNFOTkgLyogaXBhZGRyZXNzLmNjIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyOUIxRkUx
OEUwNDAwMzczRTk5IC8qIGlwYWRkcmVzcy5jYyAqLzsgfTsKLQkJNDEzQTIzRUUxRkUxOEUwODAw
MzczRTk5IC8qIG5vb3AubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTNBMjI5QzFGRTE4RTA0MDAzNzNFOTkgLyogbm9vcC5tbSAqLzsgfTsKIAkJNDEz
QTIzRUYxRkUxOEUwODAwMzczRTk5IC8qIHJhY2VfY2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyOUQxRkUxOEUwNTAwMzczRTk5IC8q
IHJhY2VfY2hlY2tlci5oICovOyB9OwogCQk0MTNBMjNGMTFGRTE4RTA4MDAzNzNFOTkgLyogc3Ns
ZmluZ2VycHJpbnQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTNBMjI5RjFGRTE4RTA2MDAzNzNFOTkgLyogc3NsZmluZ2VycHJpbnQuY2MgKi87IH07
CiAJCTQxM0EyM0YyMUZFMThFMDgwMDM3M0U5OSAvKiBieXRlYnVmZmVyLmNjIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyQTAxRkUxOEUwNjAwMzcz
RTk5IC8qIGJ5dGVidWZmZXIuY2MgKi87IH07CkBAIC00MTIsMTEgKzQwMSw4IEBACiAJCTQxM0U2
NzZEMjE2OTg1NEIwMEVGMzdFRCAvKiBSVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTU0MDAyMTY5
ODUxRjAwMjgyNjZCIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0gKi87IH07CiAJ
CTQxM0U2NzcyMjE2OTg2M0IwMEVGMzdFRCAvKiB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzZFMjE2
OTg2M0EwMEVGMzdFRCAvKiB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYyAqLzsgfTsKIAkJNDEz
RTY3NzMyMTY5ODYzQjAwRUYzN0VEIC8qIGxpYnZweF9pbnRlcmZhY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzZGMjE2OTg2M0EwMEVGMzdF
RCAvKiBsaWJ2cHhfaW50ZXJmYWNlLmggKi87IH07Ci0JCTQxM0U2Nzc0MjE2OTg2M0IwMEVGMzdF
RCAvKiB2cDhfdGVtcG9yYWxfbGF5ZXJzLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3NzAyMTY5ODYzQjAwRUYzN0VEIC8qIHZwOF90ZW1wb3Jh
bF9sYXllcnMuY2MgKi87IH07CiAJCTQxM0U2Nzc1MjE2OTg2M0IwMEVGMzdFRCAvKiBsaWJ2cHhf
aW50ZXJmYWNlLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzRTY3NzEyMTY5ODYzQjAwRUYzN0VEIC8qIGxpYnZweF9pbnRlcmZhY2UuY2MgKi87IH07
CiAJCTQxM0U2Nzc2MjE2OTg2NjEwMEVGMzdFRCAvKiBSVENWaWRlb0NvZGVjQ29uc3RhbnRzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTUzRkYy
MTY5ODUxRjAwMjgyNjZCIC8qIFJUQ1ZpZGVvQ29kZWNDb25zdGFudHMubW0gKi87IH07Ci0JCTQx
M0U2Nzc5MjE2OTg2N0EwMEVGMzdFRCAvKiBjaGFubmVsX3JlY2VpdmVfcHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2Nzc3MjE2OTg2N0Ew
MEVGMzdFRCAvKiBjaGFubmVsX3JlY2VpdmVfcHJveHkuaCAqLzsgfTsKLQkJNDEzRTY3N0EyMTY5
ODY3QTAwRUYzN0VEIC8qIGNoYW5uZWxfcmVjZWl2ZV9wcm94eS5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2Nzc4MjE2OTg2N0EwMEVGMzdFRCAv
KiBjaGFubmVsX3JlY2VpdmVfcHJveHkuY2MgKi87IH07CiAJCTQxM0U2NzdEMjE2OTg2QUUwMEVG
MzdFRCAvKiBydHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3N0IyMTY5ODZBRDAwRUYzN0VEIC8qIHJ0
cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuY2MgKi87IH07CiAJCTQxM0U2NzdFMjE2OTg2QUUwMEVG
MzdFRCAvKiBydHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc3QzIxNjk4NkFFMDBFRjM3RUQgLyogcnRw
X2hlYWRlcl9leHRlbnNpb25fc2l6ZS5oICovOyB9OwogCQk0MTNFNjc4MTIxNjk4NzBGMDBFRjM3
RUQgLyogc3ZjX2NvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEzRTY3N0YyMTY5ODcwRjAwRUYzN0VEIC8qIHN2Y19jb25maWcuaCAqLzsgfTsK
QEAgLTQzNCw3ICs0MjAsNiBAQAogCQk0MTNFNjc5QjIxNjk4ODYyMDBFRjM3RUQgLyogYWdjMl9j
b21tb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNFNjc5QTIxNjk4ODYyMDBFRjM3RUQgLyogYWdjMl9jb21tb24uY2MgKi87IH07CiAJCTQxM0U2
N0EwMjE2OTg4OTUwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzlDMjE2OTg4
OTQwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaCAqLzsgfTsKIAkJNDEz
RTY3QTEyMTY5ODg5NTAwRUYzN0VEIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzlEMjE2OTg4
OTQwMEVGMzdFRCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLmggKi87IH07Ci0JCTQxM0U2
N0EyMjE2OTg4OTUwMEVGMzdFRCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc5RTIxNjk4ODk0
MDBFRjM3RUQgLyogUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tICovOyB9OwogCQk0MTNFNjdB
MzIxNjk4ODk1MDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLm0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc5RjIxNjk4ODk1
MDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLm0gKi87IH07CiAJCTQxM0U2
N0E1MjE2OTg4REMwMEVGMzdFRCAvKiB2aWRlb19zdHJlYW1fZW5jb2Rlcl9vYnNlcnZlci5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2N0E0MjE2
OTg4REMwMEVGMzdFRCAvKiB2aWRlb19zdHJlYW1fZW5jb2Rlcl9vYnNlcnZlci5jYyAqLzsgfTsK
IAkJNDE0MEI4MjAxRTRFMzM4MzAwNzQwOUU2IC8qIGF1ZGlvX2VuY29kZXJfcGNtLmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0MEI4MTgxRTRFMzM4
MzAwNzQwOUU2IC8qIGF1ZGlvX2VuY29kZXJfcGNtLmNjICovOyB9OwpAQCAtNTI1LDcgKzUxMCw2
IEBACiAJCTQxNDVFNEM2MUVGODk2RDcwMEZDRjZFNiAvKiBydGNzdGF0c3JlcG9ydC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NUU0QzIxRUY4OTZD
RTAwRkNGNkU2IC8qIHJ0Y3N0YXRzcmVwb3J0LmggKi87IH07CiAJCTQxNDVFNEM3MUVGODk2RDcw
MEZDRjZFNiAvKiBydGNzdGF0c19vYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ1RTRDMzFFRjg5NkQyMDBGQ0Y2RTYgLyogcnRjc3RhdHNf
b2JqZWN0cy5oICovOyB9OwogCQk0MTQ1RTRDODFFRjg5NkQ3MDBGQ0Y2RTYgLyogcnRjc3RhdHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDVFNEM0
MUVGODk2RDcwMEZDRjZFNiAvKiBydGNzdGF0cy5oICovOyB9OwotCQk0MTQ1RTRDQTFFRjhDQjMy
MDBGQ0Y2RTYgLyogY3JlYXRlcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NUU0QzkxRUY4Q0IzMTAwRkNGNkU2
IC8qIGNyZWF0ZXBlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyAqLzsgfTsKIAkJNDE0NUU0Q0MxRUY4
Q0I4QjAwRkNGNkU2IC8qIHJ0cHRyYW5zcG9ydC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDVFNENCMUVGOENCOEEwMEZDRjZFNiAvKiBydHB0cmFu
c3BvcnQuY2MgKi87IH07CiAJCTQxNDVFNENFMUVGOENCOTUwMEZDRjZFNiAvKiBydHB0cmFuc3Bv
cnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDVF
NENEMUVGOENCOTQwMEZDRjZFNiAvKiBydHB0cmFuc3BvcnQuaCAqLzsgfTsKIAkJNDE0NUU0RDEx
RUY4Q0MyMDAwRkNGNkU2IC8qIHdlYnJ0Y3ZpZGVvZW5naW5lLmNjIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NUU0Q0YxRUY4Q0MxNzAwRkNGNkU2IC8q
IHdlYnJ0Y3ZpZGVvZW5naW5lLmNjICovOyB9OwpAQCAtNTYxLDcgKzU0NSw2IEBACiAJCTQxNUYx
RkFFMjEyNzJGQkEwMDA2NENCRiAvKiBmaXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCREYyMTI3
MkY4NDAwMUQ1RDdCIC8qIGZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmggKi87IH07CiAJ
CTQxNUYxRkFGMjEyNzJGQkEwMDA2NENCRiAvKiBnYWluX2FwcGxpZXIuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJERTIxMjcyRjg0MDAxRDVE
N0IgLyogZ2Fpbl9hcHBsaWVyLmNjICovOyB9OwogCQk0MTVGMUZCMDIxMjcyRkJBMDAwNjRDQkYg
LyogZ2Fpbl9hcHBsaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUEwOEJFNzIxMjcyRjg2MDAxRDVEN0IgLyogZ2Fpbl9hcHBsaWVyLmggKi87IH07
Ci0JCTQxNUYxRkIxMjEyNzJGQkEwMDA2NENCRiAvKiBnYWluX2N1cnZlX2FwcGxpZXIuY2MgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJFMDIxMjcy
Rjg1MDAxRDVEN0IgLyogZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmNjICovOyB9OwogCQk0MTVGMUZCMjIx
MjcyRkJBMDAwNjRDQkYgLyogaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJFMTIxMjcyRjg1MDAxRDVE
N0IgLyogaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MgKi87IH07CiAJCTQxNUYxRkIzMjEyNzJG
QkEwMDA2NENCRiAvKiBsaW1pdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUEwOEJFQTIxMjcyRjg2MDAxRDVEN0IgLyogbGltaXRlci5oICovOyB9
OwogCQk0MTVGMUZCNDIxMjcyRkJBMDAwNjRDQkYgLyogbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJF
MjIxMjcyRjg1MDAxRDVEN0IgLyogbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmggKi87IH07CkBA
IC02NDYsOSArNjI5LDYgQEAKIAkJNDE2RDNCRTAyMTI3MzFDMjAwNzc1RjA5IC8qIGJpcXVhZF9m
aWx0ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUQ2QjQ1RTIxMjczMUEwMDA4RjkzNTMgLyogYmlxdWFkX2ZpbHRlci5jYyAqLzsgfTsKIAkJNDE2
RDNCRTEyMTI3MzFDMjAwNzc1RjA5IC8qIGJpcXVhZF9maWx0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZCNDYzMjEyNzMxQTIwMDhGOTM1MyAv
KiBiaXF1YWRfZmlsdGVyLmggKi87IH07CiAJCTQxNkQzQkUyMjEyNzMxQzIwMDc3NUYwOSAvKiBk
b3duX3NhbXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRDZCNDYwMjEyNzMxQTEwMDhGOTM1MyAvKiBkb3duX3NhbXBsZXIuaCAqLzsgfTsKLQkJ
NDE2RDNCRTMyMTI3MzFDMjAwNzc1RjA5IC8qIGZpeGVkX2dhaW5fY29udHJvbGxlci5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZCNDY1MjEyNzMx
QTIwMDhGOTM1MyAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIuY2MgKi87IH07Ci0JCTQxNkQzQkU0
MjEyNzMxQzIwMDc3NUYwOSAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZCNDY3MjEyNzMxQTMwMDhGOTM1
MyAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIuaCAqLzsgfTsKLQkJNDE2RDNCRTUyMTI3MzFDMjAw
Nzc1RjA5IC8qIGdhaW5fY3VydmVfYXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENkI0NjkyMTI3MzFBMzAwOEY5MzUzIC8qIGdhaW5fY3Vy
dmVfYXBwbGllci5oICovOyB9OwogCQk0MTZEM0JFNjIxMjczMUMyMDA3NzVGMDkgLyogbGltaXRl
ci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZC
NDcwMjEyNzMxQTYwMDhGOTM1MyAvKiBsaW1pdGVyLmNjICovOyB9OwogCQk0MTZEM0JFNzIxMjcz
MUMyMDA3NzVGMDkgLyogbm9pc2VfbGV2ZWxfZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENkI0NjEyMTI3MzFBMTAwOEY5MzUzIC8q
IG5vaXNlX2xldmVsX2VzdGltYXRvci5jYyAqLzsgfTsKIAkJNDE2RDNCRTgyMTI3MzFDMjAwNzc1
RjA5IC8qIG5vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZCNDZBMjEyNzMxQTMwMDhGOTM1MyAvKiBub2lz
ZV9zcGVjdHJ1bV9lc3RpbWF0b3IuY2MgKi87IH07CkBAIC02ODMsOSArNjYzLDcgQEAKIAkJNDE3
OTUzQ0MyMTY5ODJEQjAwMjgyNjZCIC8qIFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjIyNUVEMjE2OTgx
RjIwMEE5MUM5QiAvKiBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQubW0gKi87IH07CiAJCTQxNzk1
M0QzMjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmQuY2MgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5NTNDRDIxNjk4MzRFMDAyODI2NkIgLyog
Y2hhbm5lbF9zZW5kLmNjICovOyB9OwogCQk0MTc5NTNENDIxNjk4MzRGMDAyODI2NkIgLyogY2hh
bm5lbF9zZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTc5NTNDRTIxNjk4MzRFMDAyODI2NkIgLyogY2hhbm5lbF9zZW5kLmggKi87IH07Ci0JCTQx
Nzk1M0Q1MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmRfcHJveHkuY2MgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5NTNDRjIxNjk4MzRFMDAy
ODI2NkIgLyogY2hhbm5lbF9zZW5kX3Byb3h5LmNjICovOyB9OwogCQk0MTc5NTNENjIxNjk4MzRG
MDAyODI2NkIgLyogY2hhbm5lbF9yZWNlaXZlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5NTNEMDIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9y
ZWNlaXZlLmggKi87IH07Ci0JCTQxNzk1M0Q3MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3Nl
bmRfcHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNzk1M0QxMjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmRfcHJveHkuaCAqLzsgfTsK
IAkJNDE3OTUzRDgyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfcmVjZWl2ZS5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzk1M0QyMjE2OTgzNEYw
MDI4MjY2QiAvKiBjaGFubmVsX3JlY2VpdmUuY2MgKi87IH07CiAJCTQxNzk1M0RCMjE2OTgzOTEw
MDI4MjY2QiAvKiBtZXRyaWNzLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE3OTUzRDkyMTY5ODM5MDAwMjgyNjZCIC8qIG1ldHJpY3MuY2MgKi87IH07
CiAJCTQxNzk1M0RDMjE2OTgzOTEwMDI4MjY2QiAvKiBmaWVsZF90cmlhbC5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzk1M0RBMjE2OTgzOTAwMDI4
MjY2QiAvKiBmaWVsZF90cmlhbC5jYyAqLzsgfTsKQEAgLTc1Miw3ICs3MzAsNiBAQAogCQk0MTky
NDE1NDIxMjczNzZGMDA2MzRGQ0YgLyogYmFzaWNhc3luY3Jlc29sdmVyZmFjdG9yeS5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MTRBMjEyNzM3
NkQwMDYzNEZDRiAvKiBiYXNpY2FzeW5jcmVzb2x2ZXJmYWN0b3J5LmNjICovOyB9OwogCQk0MTky
NDE1NTIxMjczNzZGMDA2MzRGQ0YgLyogcmVnYXRoZXJpbmdjb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE0QjIxMjczNzZEMDA2
MzRGQ0YgLyogcmVnYXRoZXJpbmdjb250cm9sbGVyLmggKi87IH07CiAJCTQxOTI0MTU2MjEyNzM3
NkYwMDYzNEZDRiAvKiBmYWtlY2FuZGlkYXRlcGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQxNEMyMTI3Mzc2RTAwNjM0RkNGIC8qIGZha2Vj
YW5kaWRhdGVwYWlyLmggKi87IH07Ci0JCTQxOTI0MTU3MjEyNzM3NkYwMDYzNEZDRiAvKiB1ZHB0
cmFuc3BvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxOTI0MTREMjEyNzM3NkUwMDYzNEZDRiAvKiB1ZHB0cmFuc3BvcnQuaCAqLzsgfTsKIAkJNDE5
MjQxNTgyMTI3Mzc2RjAwNjM0RkNGIC8qIGZha2VwYWNrZXR0cmFuc3BvcnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MTRFMjEyNzM3NkUwMDYz
NEZDRiAvKiBmYWtlcGFja2V0dHJhbnNwb3J0LmggKi87IH07CiAJCTQxOTI0MTU5MjEyNzM3NkYw
MDYzNEZDRiAvKiBmYWtlaWNldHJhbnNwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE0RjIxMjczNzZFMDA2MzRGQ0YgLyogZmFrZWljZXRy
YW5zcG9ydC5oICovOyB9OwogCQk0MTkyNDE1QTIxMjczNzZGMDA2MzRGQ0YgLyogaWNldHJhbnNw
b3J0aW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxOTI0MTUwMjEyNzM3NkUwMDYzNEZDRiAvKiBpY2V0cmFuc3BvcnRpbnRlcm5hbC5oICov
OyB9OwpAQCAtNzc3LDcgKzc1NCw2IEBACiAJCTQxOTI0MTgyMjEyNzQ5NzEwMDYzNEZDRiAvKiBi
YWRfdmFyaWFudF9hY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxOTI0MTgwMjEyNzQ5NzEwMDYzNEZDRiAvKiBiYWRfdmFyaWFudF9hY2Nlc3Mu
aCAqLzsgfTsKIAkJNDE5MjQxOEIyMTI3NDlDODAwNjM0RkNGIC8qIHNlbmRfdGltZV9oaXN0b3J5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE4
NzIxMjc0OUM3MDA2MzRGQ0YgLyogc2VuZF90aW1lX2hpc3RvcnkuaCAqLzsgfTsKIAkJNDE5MjQx
OEMyMTI3NDlDODAwNjM0RkNGIC8qIHNlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE4ODIx
Mjc0OUM3MDA2MzRGQ0YgLyogc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYyAqLzsg
fTsKLQkJNDE5MjQxOEQyMTI3NDlDODAwNjM0RkNGIC8qIHBhY2VyX2NvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MTg5MjEyNzQ5
QzgwMDYzNEZDRiAvKiBwYWNlcl9jb250cm9sbGVyLmggKi87IH07CiAJCTQxOTI0MThFMjEyNzQ5
QzgwMDYzNEZDRiAvKiB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYyBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MThBMjEyNzQ5QzgwMDYzNEZD
RiAvKiB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYyAqLzsgfTsKIAkJNDE5MjQxOTAyMTI3
NTgxMDAwNjM0RkNGIC8qIGZlY19wcml2YXRlX3RhYmxlc19idXJzdHkuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE4RjIxMjc1ODEwMDA2MzRG
Q0YgLyogZmVjX3ByaXZhdGVfdGFibGVzX2J1cnN0eS5jYyAqLzsgfTsKIAkJNDE5MjQxOTgyMTI3
NTg2NTAwNjM0RkNGIC8qIHJubl92YWRfd2VpZ2h0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQxOTMyMTI3NTg2NDAwNjM0RkNGIC8qIHJubl92
YWRfd2VpZ2h0cy5oICovOyB9OwpAQCAtODkxLDggKzg2Nyw2IEBACiAJCTQxOUM4MzI1MUZFMjQ1
MjgwMDQwQzMwRiAvKiBydGNfZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzMjMxRkUyNDUyODAwNDBD
MzBGIC8qIHJ0Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmggKi87IH07CiAJCTQxOUM4MzJF
MUZFMjQ1Q0QwMDQwQzMwRiAvKiBwYWNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzMjgxRkUyNDVDQjAwNDBDMzBGIC8qIHBhY2VyLmggKi87
IH07CiAJCTQxOUM4MzMxMUZFMjQ1Q0QwMDQwQzMwRiAvKiBpbnRlcnZhbF9idWRnZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4MzJCMUZFMjQ1
Q0MwMDQwQzMwRiAvKiBpbnRlcnZhbF9idWRnZXQuaCAqLzsgfTsKLQkJNDE5QzgzMzQxRkUyNDVF
QTAwNDBDMzBGIC8qIHRpbWVfaW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4MzMyMUZFMjQ1RTkwMDQwQzMwRiAvKiB0aW1lX2ludGVy
dmFsLmggKi87IH07Ci0JCTQxOUM4MzM1MUZFMjQ1RUEwMDQwQzMwRiAvKiB0aW1lX2ludGVydmFs
LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5Qzgz
MzMxRkUyNDVFOTAwNDBDMzBGIC8qIHRpbWVfaW50ZXJ2YWwuY2MgKi87IH07CiAJCTQxOUM4MzND
MUZFMjQ2MjMwMDQwQzMwRiAvKiBhdWRpb19lbmNvZGVyX2c3MjJfY29uZmlnLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlDODMzNzFGRTI0NjIyMDA0
MEMzMEYgLyogYXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZy5oICovOyB9OwogCQk0MTlDODMzRDFG
RTI0NjIzMDA0MEMzMEYgLyogYXVkaW9fZGVjb2Rlcl9nNzIyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlDODMzODFGRTI0NjIyMDA0MEMzMEYgLyog
YXVkaW9fZGVjb2Rlcl9nNzIyLmggKi87IH07CiAJCTQxOUM4MzNFMUZFMjQ2MjMwMDQwQzMwRiAv
KiBhdWRpb19lbmNvZGVyX2c3MjIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTlDODMzOTFGRTI0NjIyMDA0MEMzMEYgLyogYXVkaW9fZW5jb2Rlcl9n
NzIyLmNjICovOyB9OwpAQCAtOTY1LDcgKzkzOSw2IEBACiAJCTQxOUM4M0Q5MUZFMjQ3RjIwMDQw
QzMwRiAvKiBwYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzRDAxRkUyNDdFRjAwNDBDMzBGIC8qIHBhY2tl
dHRyYW5zcG9ydGludGVybmFsLmggKi87IH07CiAJCTQxOUM4M0RBMUZFMjQ3RjIwMDQwQzMwRiAv
KiBwYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4M0QxMUZFMjQ3RjAwMDQwQzMwRiAvKiBwYWNrZXR0cmFu
c3BvcnRpbnRlcm5hbC5jYyAqLzsgfTsKIAkJNDE5QzgzREIxRkUyNDdGMjAwNDBDMzBGIC8qIHBv
cnRpbnRlcmZhY2UuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTlDODNEMjFGRTI0N0YwMDA0MEMzMEYgLyogcG9ydGludGVyZmFjZS5jYyAqLzsgfTsK
LQkJNDE5QzgzREMxRkUyNDdGMjAwNDBDMzBGIC8qIHVkcHRyYW5zcG9ydC5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4M0QzMUZFMjQ3RjAwMDQw
QzMwRiAvKiB1ZHB0cmFuc3BvcnQuY2MgKi87IH07CiAJCTQxOUM4M0REMUZFMjQ3RjIwMDQwQzMw
RiAvKiBkdGxzdHJhbnNwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTlDODNENDFGRTI0N0YxMDA0MEMzMEYgLyogZHRsc3RyYW5zcG9ydC5oICov
OyB9OwogCQk0MTlDODNERTFGRTI0N0YyMDA0MEMzMEYgLyogZHRsc3RyYW5zcG9ydGludGVybmFs
LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5Qzgz
RDUxRkUyNDdGMTAwNDBDMzBGIC8qIGR0bHN0cmFuc3BvcnRpbnRlcm5hbC5jYyAqLzsgfTsKIAkJ
NDE5QzgzREYxRkUyNDdGMjAwNDBDMzBGIC8qIGR0bHN0cmFuc3BvcnRpbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzRDYxRkUyNDdG
MTAwNDBDMzBGIC8qIGR0bHN0cmFuc3BvcnRpbnRlcm5hbC5oICovOyB9OwpAQCAtMTA3OCw4ICsx
MDUxLDYgQEAKIAkJNDFBMDhCRDAyMTI3MkVFMjAwMUQ1RDdCIC8qIGdhaW5fY29udHJvbGxlcjIu
Y2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJD
RTIxMjcyRUUxMDAxRDVEN0IgLyogZ2Fpbl9jb250cm9sbGVyMi5jYyAqLzsgfTsKIAkJNDFBMDhC
RDMyMTI3MkVGQTAwMUQ1RDdCIC8qIHJvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCRDEyMTI3MkVGQTAw
MUQ1RDdCIC8qIHJvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5oICovOyB9OwogCQk0MUEwOEJENDIx
MjcyRUZBMDAxRDVEN0IgLyogcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmNjIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCRDIyMTI3MkVGQTAwMUQ1
RDdCIC8qIHJvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5jYyAqLzsgfTsKLQkJNDFBMDhCRDcyMTI3
MkYxRDAwMUQ1RDdCIC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4QkQ1MjEy
NzJGMUMwMDFENUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmgg
Ki87IH07Ci0JCTQxQTA4QkQ4MjEyNzJGMUQwMDFENUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19w
dXNoYmFja19jb250cm9sbGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFBMDhCRDYyMTI3MkYxQzAwMUQ1RDdCIC8qIGNvbmdlc3Rpb25fd2luZG93
X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgKi87IH07CiAJCTQxQTM5MTczMUVGQzQ0N0MwMEM0NTE2
QSAvKiBzaGExLWFsdGl2ZWMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxQTM5MTRGMUVGQzQ0NkUwMEM0NTE2QSAvKiBzaGExLWFsdGl2ZWMuYyAqLzsg
fTsKIAkJNDFBMzkxNzQxRUZDNDQ3QzAwQzQ1MTZBIC8qIHNoYTEuYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTM5MTUwMUVGQzQ0NkUwMEM0NTE2QSAv
KiBzaGExLmMgKi87IH07CiAJCTQxQTM5MTc1MUVGQzQ0N0MwMEM0NTE2QSAvKiBzaGEyNTYuYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTM5MTUxMUVG
QzQ0NkUwMEM0NTE2QSAvKiBzaGEyNTYuYyAqLzsgfTsKQEAgLTEzNjgsNyArMTMzOSw2IEBACiAJ
CTQxRTAyQ0E2MjEyNzM1MkQwMEMyN0NENiAvKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTAy
QzkyMjEyNzM1MkEwMEMyN0NENiAvKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCAq
LzsgfTsKIAkJNDFFMDJDQTcyMTI3MzUyRDAwQzI3Q0Q2IC8qIHByb2JlX2JpdHJhdGVfZXN0aW1h
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUw
MkM5MzIxMjczNTJBMDBDMjdDRDYgLyogcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuaCAqLzsgfTsK
IAkJNDFFMDJDQTgyMTI3MzUyRDAwQzI3Q0Q2IC8qIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGlt
YXRvci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RTAyQzk0MjEyNzM1MkEwMEMyN0NENiAvKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3Iu
Y2MgKi87IH07Ci0JCTQxRTAyQ0E5MjEyNzM1MkQwMEMyN0NENiAvKiBnb29nX2NjX2ZhY3Rvcnku
Y2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUwMkM5
NTIxMjczNTJBMDBDMjdDRDYgLyogZ29vZ19jY19mYWN0b3J5LmNjICovOyB9OwogCQk0MUUwMkNB
QTIxMjczNTJEMDBDMjdDRDYgLyogZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTAyQzk2MjEyNzM1MkEwMEMy
N0NENiAvKiBnb29nX2NjX25ldHdvcmtfY29udHJvbC5oICovOyB9OwogCQk0MUUwMkNBQjIxMjcz
NTJEMDBDMjdDRDYgLyogZGVsYXlfYmFzZWRfYndlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUwMkM5NzIxMjczNTJBMDBDMjdDRDYgLyogZGVsYXlf
YmFzZWRfYndlLmggKi87IH07CiAJCTQxRTAyQ0FDMjEyNzM1MkQwMEMyN0NENiAvKiBiaXRyYXRl
X2VzdGltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFFMDJDOTgyMTI3MzUyQjAwQzI3Q0Q2IC8qIGJpdHJhdGVfZXN0aW1hdG9yLmggKi87IH07
CkBAIC0xNTkzLDYgKzE1NjMsNjUgQEAKIAkJNDFGOUJGRTQyMDUxREUxODAwQUJGMEI5IC8qIHNl
c3Npb25kZXNjcmlwdGlvbi5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRjlCRkRFMjA1MURFMTcwMEFCRjBCOSAvKiBzZXNzaW9uZGVzY3JpcHRpb24u
Y2MgKi87IH07CiAJCTQxRjlCRkU5MjA1MURFRUEwMEFCRjBCOSAvKiB0dXJucG9ydGZhY3Rvcnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjlCRkU3
MjA1MURFRTkwMEFCRjBCOSAvKiB0dXJucG9ydGZhY3RvcnkuaCAqLzsgfTsKIAkJNDFGOUJGRUEy
MDUxREVFQTAwQUJGMEI5IC8qIHR1cm5wb3J0ZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjlCRkU4MjA1MURFRUEwMEFCRjBCOSAvKiB0
dXJucG9ydGZhY3RvcnkuY2MgKi87IH07CisJCTQxRkNCQjBFMjFCMUY1MzcwMEE1REYyNyAvKiBj
cmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjA5MjFCMUY1MzAwMEE1REYyNyAvKiBjcmVhdGVf
cGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5jYyAqLzsgfTsKKwkJNDFGQ0JCMEYyMUIxRjUzNzAwQTVE
RjI3IC8qIG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjBBMjFCMUY1MzEwMEE1REYyNyAvKiBtZWRp
YV90cmFuc3BvcnRfaW50ZXJmYWNlLmggKi87IH07CisJCTQxRkNCQjEwMjFCMUY1MzcwMEE1REYy
NyAvKiBzY29wZWRfcmVmcHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUZDQkIwQjIxQjFGNTMyMDBBNURGMjcgLyogc2NvcGVkX3JlZnB0ci5oICov
OyB9OworCQk0MUZDQkIxMTIxQjFGNTM3MDBBNURGMjcgLyogbWVkaWFfdHJhbnNwb3J0X2ludGVy
ZmFjZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RkNCQjBDMjFCMUY1MzIwMEE1REYyNyAvKiBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmNjICov
OyB9OworCQk0MUZDQkIxMjIxQjFGNTM3MDBBNURGMjcgLyogY3JlYXRlX3BlZXJjb25uZWN0aW9u
X2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRkNCQjBEMjFCMUY1MzYwMEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9y
eS5oICovOyB9OworCQk0MUZDQkIxNTIxQjFGN0FBMDBBNURGMjcgLyogbW92aW5nX2F2ZXJhZ2Uu
Y2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIx
MzIxQjFGN0FBMDBBNURGMjcgLyogbW92aW5nX2F2ZXJhZ2UuY2MgKi87IH07CisJCTQxRkNCQjE2
MjFCMUY3QUEwMEE1REYyNyAvKiBtb3ZpbmdfYXZlcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMTQyMUIxRjdBQTAwQTVERjI3IC8qIG1v
dmluZ19hdmVyYWdlLmggKi87IH07CisJCTQxRkNCQjFCMjFCMUY3Q0QwMEE1REYyNyAvKiBidWls
dGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIxNzIxQjFGN0NDMDBBNURGMjcgLyog
YnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNjICovOyB9OworCQk0MUZD
QkIxQzIxQjFGN0NEMDBBNURGMjcgLyogZW5jb2RlZF9pbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMTgyMUIxRjdDQzAwQTVERjI3IC8q
IGVuY29kZWRfaW1hZ2UuaCAqLzsgfTsKKwkJNDFGQ0JCMUQyMUIxRjdDRDAwQTVERjI3IC8qIGVu
Y29kZWRfaW1hZ2UuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUZDQkIxOTIxQjFGN0NDMDBBNURGMjcgLyogZW5jb2RlZF9pbWFnZS5jYyAqLzsgfTsK
KwkJNDFGQ0JCMUUyMUIxRjdDRDAwQTVERjI3IC8qIGJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFGQ0JCMUEyMUIxRjdDRDAwQTVERjI3IC8qIGJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeS5oICovOyB9OworCQk0MUZDQkIyMjIxQjFGODJGMDBBNURGMjcgLyog
dGhyb3dfZGVsZWdhdGUuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZDQkIyMDIxQjFGODJFMDBBNURGMjcgLyogdGhyb3dfZGVsZWdhdGUuY2MgKi87
IH07CisJCTQxRkNCQjIzMjFCMUY4MkYwMEE1REYyNyAvKiB0aHJvd19kZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMjEyMUIxRjgy
RjAwQTVERjI3IC8qIHRocm93X2RlbGVnYXRlLmggKi87IH07CisJCTQxRkNCQjI3MjFCMUY4N0Uw
MEE1REYyNyAvKiBzZW50X3BhY2tldC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRkNCQjI1MjFCMUY4N0UwMEE1REYyNyAvKiBzZW50X3BhY2tldC5j
YyAqLzsgfTsKKwkJNDFGQ0JCMjgyMUIxRjg3RTAwQTVERjI3IC8qIHNlbnRfcGFja2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIyNjIxQjFG
ODdFMDBBNURGMjcgLyogc2VudF9wYWNrZXQuaCAqLzsgfTsKKwkJNDFGQ0JCMkUyMUIxRjhCNzAw
QTVERjI3IC8qIGNyeXB0b29wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRkNCQjJBMjFCMUY4QjYwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25z
LmggKi87IH07CisJCTQxRkNCQjJGMjFCMUY4QjcwMEE1REYyNyAvKiBmcmFtZWRlY3J5cHRvcmlu
dGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGQ0JCMkIyMUIxRjhCNjAwQTVERjI3IC8qIGZyYW1lZGVjcnlwdG9yaW50ZXJmYWNlLmggKi87
IH07CisJCTQxRkNCQjMwMjFCMUY4QjcwMEE1REYyNyAvKiBmcmFtZWVuY3J5cHRvcmludGVyZmFj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JC
MkMyMUIxRjhCNjAwQTVERjI3IC8qIGZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmggKi87IH07CisJ
CTQxRkNCQjMxMjFCMUY4QjcwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25zLmNjIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMkQyMUIxRjhCNjAwQTVE
RjI3IC8qIGNyeXB0b29wdGlvbnMuY2MgKi87IH07CisJCTQxRkNCQjM4MjFCMUY4RkMwMEE1REYy
NyAvKiBjb250cm9sX2hhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRkNCQjM0MjFCMUY4RkIwMEE1REYyNyAvKiBjb250cm9sX2hhbmRsZXIu
aCAqLzsgfTsKKwkJNDFGQ0JCMzkyMUIxRjhGQzAwQTVERjI3IC8qIGNvbnRyb2xfaGFuZGxlci5j
YyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjM1
MjFCMUY4RkMwMEE1REYyNyAvKiBjb250cm9sX2hhbmRsZXIuY2MgKi87IH07CisJCTQxRkNCQjND
MjFCMUZENDAwMEE1REYyNyAvKiBtYXRjaC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjNBMjFCMUZEM0YwMEE1REYyNyAvKiBtYXRjaC5jYyAq
LzsgfTsKKwkJNDFGQ0JCM0QyMUIxRkQ0MDAwQTVERjI3IC8qIG1hdGNoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIzQjIxQjFGRDNGMDBBNURG
MjcgLyogbWF0Y2guaCAqLzsgfTsKKwkJNDFGQ0JCNDAyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdl
c3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjNFMjFCMUZEQjgwMEE1REYyNyAvKiBjb25n
ZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmggKi87IH07CisJCTQxRkNCQjQxMjFC
MUZEQjgwMEE1REYyNyAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNj
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCM0Yy
MUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIu
Y2MgKi87IH07CisJCTQxRkNCQjQ2MjFCMUZERUYwMEE1REYyNyAvKiBtZG5zX21lc3NhZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjQyMjFC
MUZERUUwMEE1REYyNyAvKiBtZG5zX21lc3NhZ2UuaCAqLzsgfTsKKwkJNDFGQ0JCNDcyMUIxRkRF
RjAwQTVERjI3IC8qIGljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2MgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0MzIxQjFGREVFMDBBNURGMjcgLyog
aWNlY3JlZGVudGlhbHNpdGVyYXRvci5jYyAqLzsgfTsKKwkJNDFGQ0JCNDgyMUIxRkRFRjAwQTVE
RjI3IC8qIG1kbnNfbWVzc2FnZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRkNCQjQ0MjFCMUZERUYwMEE1REYyNyAvKiBtZG5zX21lc3NhZ2UuY2Mg
Ki87IH07CisJCTQxRkNCQjQ5MjFCMUZERUYwMEE1REYyNyAvKiBpY2VjcmVkZW50aWFsc2l0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZD
QkI0NTIxQjFGREVGMDBBNURGMjcgLyogaWNlY3JlZGVudGlhbHNpdGVyYXRvci5oICovOyB9Owor
CQk0MUZDQkI1MTIxQjFGRTQ2MDBBNURGMjcgLyogY3B1X3NwZWVkX2V4cGVyaW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjRCMjFCMUZF
NDQwMEE1REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5oICovOyB9OworCQk0MUZDQkI1MjIx
QjFGRTQ2MDBBNURGMjcgLyogaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0QzIxQjFGRTQ0
MDBBNURGMjcgLyogaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuY2MgKi87IH07CisJCTQx
RkNCQjUzMjFCMUZFNDYwMEE1REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjREMjFCMUZFNDUw
MEE1REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5jYyAqLzsgfTsKKwkJNDFGQ0JCNTQyMUIx
RkU0NjAwQTVERjI3IC8qIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0RTIxQjFGRTQ1MDBB
NURGMjcgLyogaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuaCAqLzsgfTsKKwkJNDFGQ0JC
NTUyMUIxRkU0NjAwQTVERjI3IC8qIG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0
RjIxQjFGRTQ1MDBBNURGMjcgLyogbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQu
aCAqLzsgfTsKKwkJNDFGQ0JCNTYyMUIxRkU0NjAwQTVERjI3IC8qIG5vcm1hbGl6ZV9zaW11bGNh
c3Rfc2l6ZV9leHBlcmltZW50LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGQ0JCNTAyMUIxRkU0NTAwQTVERjI3IC8qIG5vcm1hbGl6ZV9zaW11bGNh
c3Rfc2l6ZV9leHBlcmltZW50LmNjICovOyB9OworCQk0MUZDQkI1OTIxQjFGRTZFMDBBNURGMjcg
LyogZnJhbWVfZHVtcGluZ19kZWNvZGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNTcyMUIxRkU2RDAwQTVERjI3IC8qIGZyYW1lX2R1bXBp
bmdfZGVjb2Rlci5jYyAqLzsgfTsKKwkJNDFGQ0JCNUEyMUIxRkU2RTAwQTVERjI3IC8qIGZyYW1l
X2R1bXBpbmdfZGVjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQ0JCNTgyMUIxRkU2RTAwQTVERjI3IC8qIGZyYW1lX2R1bXBpbmdfZGVjb2Rl
ci5oICovOyB9OworCQk0MUZDQkI1QzIxQjFGRUEzMDBBNURGMjcgLyogYml0cmF0ZV9jb250cm9s
bGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFG
Q0JCNUIyMUIxRkVBMzAwQTVERjI3IC8qIGJpdHJhdGVfY29udHJvbGxlci5jYyAqLzsgfTsKKwkJ
NDFGQ0JCNUYyMUIxRkVDNDAwQTVERjI3IC8qIGdvb2dfY2NfZmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNUQyMUIxRkVDNDAwQTVE
RjI3IC8qIGdvb2dfY2NfZmFjdG9yeS5oICovOyB9OworCQk0MUZDQkI2MDIxQjFGRUM0MDBBNURG
MjcgLyogZ29vZ19jY19mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFGQ0JCNUUyMUIxRkVDNDAwQTVERjI3IC8qIGdvb2dfY2NfZmFjdG9y
eS5jYyAqLzsgfTsKKwkJNDFGQ0JCNjQyMUIxRkVGNjAwQTVERjI3IC8qIGNyZWF0ZV92cDhfdGVt
cG9yYWxfbGF5ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUZDQkI2MTIxQjFGRUY1MDBBNURGMjcgLyogY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXll
cnMuaCAqLzsgfTsKKwkJNDFGQ0JCNjUyMUIxRkVGNjAwQTVERjI3IC8qIHZwOF90ZW1wb3JhbF9s
YXllcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RkNCQjYyMjFCMUZFRjUwMEE1REYyNyAvKiB2cDhfdGVtcG9yYWxfbGF5ZXJzLmggKi87IH07CisJ
CTQxRkNCQjY2MjFCMUZFRjYwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5j
YyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjYz
MjFCMUZFRjUwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5jYyAqLzsgfTsK
KwkJNDFGQ0JCNjkyMUIxRkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGlt
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RkNCQjY3MjFCMUZGMUIwMEE1REYyNyAvKiBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9u
LmggKi87IH07CisJCTQxRkNCQjZBMjFCMUZGMUIwMEE1REYyNyAvKiBsb3NzX2Jhc2VkX2JhbmR3
aWR0aF9lc3RpbWF0aW9uLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQ0JCNjgyMUIxRkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFuZHdpZHRo
X2VzdGltYXRpb24uY2MgKi87IH07CisJCTQxRkNCQjZEMjFCMUZGM0EwMEE1REYyNyAvKiBrZXlf
ZGVyaXZhdGlvbi5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRkNCQjZCMjFCMUZGMzkwMEE1REYyNyAvKiBrZXlfZGVyaXZhdGlvbi5jYyAqLzsgfTsK
KwkJNDFGQ0JCNkUyMUIxRkYzQTAwQTVERjI3IC8qIGtleV9kZXJpdmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI2QzIxQjFGRjNBMDBB
NURGMjcgLyoga2V5X2Rlcml2YXRpb24uaCAqLzsgfTsKKwkJNDFGQ0JCNzEyMUIxRkY3NDAwQTVE
RjI3IC8qIGhkcl9tZXRhZGF0YS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRkNCQjZGMjFCMUZGNzQwMEE1REYyNyAvKiBoZHJfbWV0YWRhdGEuY2Mg
Ki87IH07CisJCTQxRkNCQjcyMjFCMUZGNzQwMEE1REYyNyAvKiBoZHJfbWV0YWRhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjcwMjFCMUZG
NzQwMEE1REYyNyAvKiBoZHJfbWV0YWRhdGEuaCAqLzsgfTsKKwkJNDFGQ0JCNzUyMUIxRkZBNDAw
QTVERjI3IC8qIGNvY29hX3RocmVhZGluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjczMjFCMUZGQTQwMEE1REYyNyAvKiBjb2NvYV90aHJl
YWRpbmcubW0gKi87IH07CisJCTQxRkNCQjc2MjFCMUZGQTQwMEE1REYyNyAvKiBjb2NvYV90aHJl
YWRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RkNCQjc0MjFCMUZGQTQwMEE1REYyNyAvKiBjb2NvYV90aHJlYWRpbmcuaCAqLzsgfTsKKwkJNDFG
Q0JCNzkyMUIxRkZDMDAwQTVERjI3IC8qIGFzY2lpLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI3NzIxQjFGRkJGMDBBNURGMjcgLyogYXNjaWku
aCAqLzsgfTsKKwkJNDFGQ0JCN0EyMUIxRkZDMDAwQTVERjI3IC8qIGFzY2lpLmNjIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNzgyMUIxRkZDMDAw
QTVERjI3IC8qIGFzY2lpLmNjICovOyB9OworCQk0MUZDQkI3RDIxQjFGRkY2MDBBNURGMjcgLyog
b3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCN0IyMUIxRkZGNTAwQTVERjI3IC8qIG9wZW5zc2xf
a2V5X2Rlcml2YXRpb25faGtkZi5jYyAqLzsgfTsKKwkJNDFGQ0JCN0UyMUIxRkZGNjAwQTVERjI3
IC8qIG9wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCN0MyMUIxRkZGNTAwQTVERjI3IC8qIG9wZW5z
c2xfa2V5X2Rlcml2YXRpb25faGtkZi5oICovOyB9OworCQk0MUZDQkI4MDIxQjIwMDEyMDBBNURG
MjcgLyogc3RyaW5nX3ZpZXcuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUZDQkI3RjIxQjIwMDExMDBBNURGMjcgLyogc3RyaW5nX3ZpZXcuY2MgKi87
IH07CisJCTQxRkNCQjg0MjFCMjAwN0IwMEE1REYyNyAvKiBtZW11dGlsLmNjIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCODIyMUIyMDA3QjAwQTVE
RjI3IC8qIG1lbXV0aWwuY2MgKi87IH07CisJCTQxRkNCQjg1MjFCMjAwN0IwMEE1REYyNyAvKiBt
ZW11dGlsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUZDQkI4MzIxQjIwMDdCMDBBNURGMjcgLyogbWVtdXRpbC5oICovOyB9OworCQk0MUZDQkI4OTIx
QjIwMEZEMDBBNURGMjcgLyogUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3OUUyMTY5ODg5NDAwRUYz
N0VEIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubSAqLzsgfTsKIAkJNDFGRTg2NTEyMTVD
NTMwNzAwQjYyQzA3IC8qIG5hc20tbGlzdGZtdC5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGRTg2NTAyMTVDNTMwNjAwQjYyQzA3IC8qIG5hc20tbGlz
dGZtdC5jICovOyB9OwogCQk0MUZFODY1MzIxNUM1MzI1MDBCNjJDMDcgLyogbmFzbS1ldmFsLmMg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZFODY0NTIx
NUM1MjYwMDBCNjJDMDcgLyogbmFzbS1ldmFsLmMgKi87IH07CiAJCTQxRkU4NjU0MjE1QzUzMjUw
MEI2MkMwNyAvKiBuYXNtLXBwLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUQxMjQyNjIxNUM1MjQxMDAzNkIwNTcgLyogbmFzbS1wcC5jICovOyB9OwpA
QCAtMTY4NSw4ICsxNzE0LDYgQEAKIAkJNUMwODg1MzMxRTRBOTlEMjAwNDAzOTk1IC8qIHJkYi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwODg1MjEx
RTRBOTlEMjAwNDAzOTk1IC8qIHJkYi5oICovOyB9OwogCQk1QzA4ODUzNDFFNEE5OUQyMDA0MDM5
OTUgLyogcmRieC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUMwODg1MjIxRTRBOTlEMjAwNDAzOTk1IC8qIHJkYnguaCAqLzsgfTsKIAkJNUMwODg1MzUx
RTRBOTlEMjAwNDAzOTk1IC8qIHN0YXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDMDg4NTIzMUU0QTk5RDIwMDQwMzk5NSAvKiBzdGF0LmggKi87IH07
Ci0JCTVDMDg4QzEwMUU0QUE0NDQwMDQwMzk5NSAvKiBidW5kbGVmaWx0ZXIuY2MgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzYzRkEzQTFFNDE3NjFGMDAy
Q0E1MzEgLyogYnVuZGxlZmlsdGVyLmNjICovOyB9OwotCQk1QzA4OEMxMTFFNEFBNDQ0MDA0MDM5
OTUgLyogYnVuZGxlZmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzYzRkEzQjFFNDE3NjFGMDAyQ0E1MzEgLyogYnVuZGxlZmlsdGVyLmggKi87
IH07CiAJCTVDMDg4QzEyMUU0QUE0NDQwMDQwMzk5NSAvKiBjaGFubmVsLmNjIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2M0ZBM0QxRTQxNzYxRjAwMkNB
NTMxIC8qIGNoYW5uZWwuY2MgKi87IH07CiAJCTVDMDg4QzEzMUU0QUE0NDQwMDQwMzk5NSAvKiBj
aGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzYzRkEzRTFFNDE3NjFGMDAyQ0E1MzEgLyogY2hhbm5lbC5oICovOyB9OwogCQk1QzA4OEMxNDFF
NEFBNDQ0MDA0MDM5OTUgLyogY2hhbm5lbG1hbmFnZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzYzRkE0MDFFNDE3NjFGMDAyQ0E1MzEgLyogY2hh
bm5lbG1hbmFnZXIuY2MgKi87IH07CkBAIC0xOTgwLDcgKzIwMDcsNiBAQAogCQk1QzRCNEMxQjFF
NDMxRjc1MDAyNjUxQzggLyogaTQyMF9idWZmZXJfcG9vbC5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEI0QzEyMUU0MzFGNzUwMDI2NTFDOCAvKiBp
NDIwX2J1ZmZlcl9wb29sLmNjICovOyB9OwogCQk1QzRCNEMxQzFFNDMxRjc1MDAyNjUxQzggLyog
aW5jb21pbmdfdmlkZW9fc3RyZWFtLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUM0QjRDMTMxRTQzMUY3NTAwMjY1MUM4IC8qIGluY29taW5nX3ZpZGVv
X3N0cmVhbS5jYyAqLzsgfTsKIAkJNUM0QjRDMUUxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX2Zy
YW1lX2J1ZmZlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDNEI0QzE1MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZV9idWZmZXIuY2MgKi87
IH07Ci0JCTVDNEI0QzFGMUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZS5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEI0QzE2MUU0MzFGNzUw
MDI2NTFDOCAvKiB2aWRlb19mcmFtZS5jYyAqLzsgfTsKIAkJNUM0QjRDMjAxRTQzMUY3NTAwMjY1
MUM4IC8qIHZpZGVvX3JlbmRlcl9mcmFtZXMuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRCNEMxNzFFNDMxRjc1MDAyNjUxQzggLyogdmlkZW9fcmVu
ZGVyX2ZyYW1lcy5jYyAqLzsgfTsKIAkJNUM0QjRDMjExRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVv
X3JlbmRlcl9mcmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDNEI0QzE4MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19yZW5kZXJfZnJhbWVzLmgg
Ki87IH07CiAJCTVDNEI0QzU5MUU0MzFGOUMwMDI2NTFDOCAvKiBhdWRpb19jb252ZXJ0ZXIuY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRCNEMyNDFF
NDMxRjlDMDAyNjUxQzggLyogYXVkaW9fY29udmVydGVyLmNjICovOyB9OwpAQCAtMjM0NSw4ICsy
MzcxLDYgQEAKIAkJNUNERDgzN0ExRTQzOUEzNTAwNjIxRTkyIC8qIGZyYW1lX2Ryb3BwZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4MzZDMUU0
MzlBMzUwMDYyMUU5MiAvKiBmcmFtZV9kcm9wcGVyLmggKi87IH07CiAJCTVDREQ4MzdCMUU0MzlB
MzUwMDYyMUU5MiAvKiBpdmZfZmlsZV93cml0ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODM2RDFFNDM5QTM1MDA2MjFFOTIgLyogaXZmX2Zp
bGVfd3JpdGVyLmNjICovOyB9OwogCQk1Q0REODM3QzFFNDM5QTM1MDA2MjFFOTIgLyogaXZmX2Zp
bGVfd3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0REODM2RTFFNDM5QTM1MDA2MjFFOTIgLyogaXZmX2ZpbGVfd3JpdGVyLmggKi87IH07Ci0J
CTVDREQ4MzdEMUU0MzlBMzUwMDYyMUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4MzZGMUU0MzlBMzUwMDYy
MUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5jYyAqLzsgfTsKLQkJNUNERDgzN0UxRTQzOUEzNTAwNjIx
RTkyIC8qIG1vdmluZ19hdmVyYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0REODM3MDFFNDM5QTM1MDA2MjFFOTIgLyogbW92aW5nX2F2ZXJhZ2Uu
aCAqLzsgfTsKIAkJNUNERDgzODExRTQzOUEzNTAwNjIxRTkyIC8qIHF1YWxpdHlfc2NhbGVyLmNj
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDgzNzMx
RTQzOUEzNTAwNjIxRTkyIC8qIHF1YWxpdHlfc2NhbGVyLmNjICovOyB9OwogCQk1Q0REODM4MjFF
NDM5QTM1MDA2MjFFOTIgLyogcXVhbGl0eV9zY2FsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4Mzc0MUU0MzlBMzUwMDYyMUU5MiAvKiBxdWFs
aXR5X3NjYWxlci5oICovOyB9OwogCQk1Q0REODM4NTFFNDM5QTM1MDA2MjFFOTIgLyogdnA4X2hl
YWRlcl9wYXJzZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0REODM3NzFFNDM5QTM1MDA2MjFFOTIgLyogdnA4X2hlYWRlcl9wYXJzZXIuY2MgKi87
IH07CkBAIC0yNDUzLDggKzI0NzcsNiBAQAogCQk1Q0REODUxMDFFNDNCMUVBMDA2MjFFOTIgLyog
YXVkaW9fY29kaW5nX21vZHVsZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDREQ4NEY5MUU0M0IxRUEwMDYyMUU5MiAvKiBhdWRpb19jb2RpbmdfbW9k
dWxlLmNjICovOyB9OwogCQk1Q0REODUxMjFFNDNCMUVBMDA2MjFFOTIgLyogY2FsbF9zdGF0aXN0
aWNzLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNE
RDg0RkIxRTQzQjFFQTAwNjIxRTkyIC8qIGNhbGxfc3RhdGlzdGljcy5jYyAqLzsgfTsKIAkJNUNE
RDg1MTMxRTQzQjFFQTAwNjIxRTkyIC8qIGNhbGxfc3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDg0RkMxRTQzQjFFQTAwNjIxRTky
IC8qIGNhbGxfc3RhdGlzdGljcy5oICovOyB9OwotCQk1Q0REODUxNTFFNDNCMUVBMDA2MjFFOTIg
LyogY29kZWNfbWFuYWdlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDREQ4NEZFMUU0M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19tYW5hZ2VyLmNjICov
OyB9OwotCQk1Q0REODUxNjFFNDNCMUVBMDA2MjFFOTIgLyogY29kZWNfbWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDg0RkYxRTQzQjFF
QTAwNjIxRTkyIC8qIGNvZGVjX21hbmFnZXIuaCAqLzsgfTsKIAkJNUNERDg1MTgxRTQzQjFFQTAw
NjIxRTkyIC8qIHJlbnRfYV9jb2RlYy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDREQ4NTAxMUU0M0IxRUEwMDYyMUU5MiAvKiByZW50X2FfY29kZWMu
Y2MgKi87IH07CiAJCTVDREQ4NTE5MUU0M0IxRUEwMDYyMUU5MiAvKiByZW50X2FfY29kZWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4NTAyMUU0
M0IxRUEwMDYyMUU5MiAvKiByZW50X2FfY29kZWMuaCAqLzsgfTsKIAkJNUNERDg1MkYxRTQzQjM5
QzAwNjIxRTkyIC8qIGJpdHJhdGVfYWxsb2NhdG9yLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDg1MUMxRTQzQjM5QzAwNjIxRTkyIC8qIGJpdHJh
dGVfYWxsb2NhdG9yLmNjICovOyB9OwpAQCAtMjg0MSw4ICsyODYzLDYgQEAKIAkJNUNERDhBNEIx
RTQzQkZCMzAwNjIxRTkyIC8qIHJhbmRvbV92ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4OUUyMUU0M0JGQjMwMDYyMUU5MiAvKiByYW5k
b21fdmVjdG9yLmggKi87IH07CiAJCTVDREQ4QTREMUU0M0JGQjMwMDYyMUU5MiAvKiByZWRfcGF5
bG9hZF9zcGxpdHRlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDREQ4OUU0MUU0M0JGQjMwMDYyMUU5MiAvKiByZWRfcGF5bG9hZF9zcGxpdHRlci5j
YyAqLzsgfTsKIAkJNUNERDhBNEUxRTQzQkZCMzAwNjIxRTkyIC8qIHJlZF9wYXlsb2FkX3NwbGl0
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0RE
ODlFNTFFNDNCRkIzMDA2MjFFOTIgLyogcmVkX3BheWxvYWRfc3BsaXR0ZXIuaCAqLzsgfTsKLQkJ
NUNERDhBNEYxRTQzQkZCMzAwNjIxRTkyIC8qIHJ0Y3AuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODlFNjFFNDNCRkIzMDA2MjFFOTIgLyogcnRj
cC5jYyAqLzsgfTsKLQkJNUNERDhBNTAxRTQzQkZCMzAwNjIxRTkyIC8qIHJ0Y3AuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4OUU3MUU0M0JGQjMw
MDYyMUU5MiAvKiBydGNwLmggKi87IH07CiAJCTVDREQ4QTUxMUU0M0JGQjMwMDYyMUU5MiAvKiBz
dGF0aXN0aWNzX2NhbGN1bGF0b3IuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0REODlFODFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGljc19jYWxj
dWxhdG9yLmNjICovOyB9OwogCQk1Q0REOEE1MjFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGlj
c19jYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0REODlFOTFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGljc19jYWxjdWxhdG9yLmgg
Ki87IH07CiAJCTVDREQ4QTU0MUU0M0JGQjMwMDYyMUU5MiAvKiBzeW5jX2J1ZmZlci5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4OUVCMUU0M0JG
QjMwMDYyMUU5MiAvKiBzeW5jX2J1ZmZlci5jYyAqLzsgfTsKQEAgLTM3OTgsNyArMzgxOCw2IEBA
CiAJCTQxM0EyMTQ0MUZFMThENEMwMDM3M0U5OSAvKiB0ZXN0YmFzZTY0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHRlc3RiYXNlNjQuaDsgcGF0aCA9IHJ0Y19iYXNlL3Rlc3Ri
YXNlNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxNDUxRkUxOEQ0QzAw
MzczRTk5IC8qIGZ1bmN0aW9uX3ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gZnVuY3Rpb25fdmlldy5oOyBwYXRoID0gcnRjX2Jhc2UvZnVuY3Rpb25fdmlldy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjE0NzFGRTE4RDREMDAzNzNFOTkgLyogZm9y
bWF0X21hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBmb3JtYXRfbWFj
cm9zLmg7IHBhdGggPSBydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQxM0EyMTQ4MUZFMThENEQwMDM3M0U5OSAvKiB1bml4ZmlsZXN5c3RlbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB1bml4ZmlsZXN5c3RlbS5oOyBwYXRo
ID0gcnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEzQTIxNDkxRkUxOEQ0RTAwMzczRTk5IC8qIHRlc3RlY2hvc2VydmVyLmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGVjaG9zZXJ2ZXIuY2M7IHBhdGggPSBy
dGNfYmFzZS90ZXN0ZWNob3NlcnZlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEzQTIxNEExRkUxOEQ0RTAwMzczRTk5IC8qIGJpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBiaXRyYXRlYWxsb2NhdGlvbnN0
cmF0ZWd5LmNjOyBwYXRoID0gcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxNEIxRkUxOEQ0RTAwMzczRTk5IC8q
IHByb3h5X3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
cHJveHlfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9wcm94eV91bml0dGVzdC5jYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4NzIsNyArMzg5MSw2IEBACiAJCTQxM0EyMTk4
MUZFMThEOEEwMDM3M0U5OSAvKiBhdG9taWNvcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gYXRvbWljb3BzLmg7IHBhdGggPSBydGNfYmFzZS9hdG9taWNvcHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxOUExRkUxOEQ4QjAwMzczRTk5IC8qIG9wZW5z
c2xhZGFwdGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gb3BlbnNz
bGFkYXB0ZXIuY2M7IHBhdGggPSBydGNfYmFzZS9vcGVuc3NsYWRhcHRlci5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxOUIxRkUxOEQ4QjAwMzczRTk5IC8qIHNvY2tldGFk
YXB0ZXJzLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc29ja2V0YWRh
cHRlcnMuY2M7IHBhdGggPSBydGNfYmFzZS9zb2NrZXRhZGFwdGVycy5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDEzQTIxOUQxRkUxOEQ4RDAwMzczRTk5IC8qIHBhdGh1dGlsc191
bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHBhdGh1dGls
c191bml0dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3BhdGh1dGlsc191bml0dGVzdC5jYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxOUUxRkUxOEQ4RDAwMzczRTk5IC8qIHRh
c2tfcXVldWVfd2luLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGFz
a19xdWV1ZV93aW4uY2M7IHBhdGggPSBydGNfYmFzZS90YXNrX3F1ZXVlX3dpbi5jYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxOUYxRkUxOEQ4RTAwMzczRTk5IC8qIHRlc3R1
dGlscy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3R1dGlscy5j
YzsgcGF0aCA9IHJ0Y19iYXNlL3Rlc3R1dGlscy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzQTIxQTIxRkUxOEQ4RjAwMzczRTk5IC8qIHNpZ3Nsb3RfdW5pdHRlc3QuY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzaWdzbG90X3VuaXR0ZXN0LmNjOyBw
YXRoID0gcnRjX2Jhc2Uvc2lnc2xvdF91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTM5MDcsNyArMzkyNSw2IEBACiAJCTQxM0EyMUMzMUZFMThEOUUwMDM3M0U5OSAv
KiBjYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBjYWxsYmFjay5o
OyBwYXRoID0gcnRjX2Jhc2UvY2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEzQTIxQzUxRkUxOEQ5RjAwMzczRTk5IC8qIGhlbHBlcnNfdW5pdHRlc3QuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBoZWxwZXJzX3VuaXR0ZXN0LmNjOyBwYXRo
ID0gcnRjX2Jhc2UvaGVscGVyc191bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzQTIxQzYxRkUxOERBMDAwMzczRTk5IC8qIG5hdHNvY2tldGZhY3RvcnkuY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBuYXRzb2NrZXRmYWN0b3J5LmNjOyBw
YXRoID0gcnRjX2Jhc2UvbmF0c29ja2V0ZmFjdG9yeS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDEzQTIxQzcxRkUxOERBMTAwMzczRTk5IC8qIG9wdGlvbnNmaWxlX3VuaXR0ZXN0
LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gb3B0aW9uc2ZpbGVfdW5p
dHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9vcHRpb25zZmlsZV91bml0dGVzdC5jYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxQzgxRkUxOERBMTAwMzczRTk5IC8qIG5hdF91
bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG5hdF91bml0
dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL25hdF91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDEzQTIxQzkxRkUxOERBMjAwMzczRTk5IC8qIHBsYXRmb3JtX3RocmVh
ZF90eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBwbGF0Zm9ybV90aHJl
YWRfdHlwZXMuaDsgcGF0aCA9IHJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZF90eXBlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFDQTFGRTE4REEzMDAzNzNFOTkgLyogcGxh
dGZvcm1fdGhyZWFkLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gcGxh
dGZvcm1fdGhyZWFkLmNjOyBwYXRoID0gcnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmNjOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzkzNiwxOCArMzk1MywxNSBAQAogCQk0MTNBMjFF
NDFGRTE4REIwMDAzNzNFOTkgLyogbWFjdXRpbHMuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBtYWN1dGlscy5jYzsgcGF0aCA9IHJ0Y19iYXNlL21hY3V0aWxzLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFFNTFGRTE4REIxMDAzNzNFOTkgLyog
dGFza19xdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB0YXNrX3F1ZXVl
Lmg7IHBhdGggPSBydGNfYmFzZS90YXNrX3F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxM0EyMUU3MUZFMThEQjEwMDM3M0U5OSAvKiBiaXRidWZmZXIuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBiaXRidWZmZXIuY2M7IHBhdGggPSBydGNfYmFz
ZS9iaXRidWZmZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxM0EyMUU4MUZF
MThEQjIwMDM3M0U5OSAvKiBwYXRodXRpbHMuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBwYXRodXRpbHMuY2M7IHBhdGggPSBydGNfYmFzZS9wYXRodXRpbHMuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUU5MUZFMThEQjIwMDM3M0U5OSAvKiBw
aHlzaWNhbHNvY2tldHNlcnZlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IHBoeXNpY2Fsc29ja2V0c2VydmVyLmNjOyBwYXRoID0gcnRjX2Jhc2UvcGh5c2ljYWxzb2Nr
ZXRzZXJ2ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUVBMUZFMThE
QjMwMDM3M0U5OSAvKiBieXRlb3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gYnl0ZW9yZGVyLmg7IHBhdGggPSBydGNfYmFzZS9ieXRlb3JkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRUIxRkUxOERCMzAwMzczRTk5IC8qIHNzbHN0cmVhbWFk
YXB0ZXJfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBz
c2xzdHJlYW1hZGFwdGVyX3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2Uvc3Nsc3RyZWFtYWRh
cHRlcl91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRUUx
RkUxOERCNDAwMzczRTk5IC8qIHRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSB0aHJlYWQuaDsgcGF0aCA9IHJ0Y19iYXNlL3RocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTNBMjFFRjFGRTE4REI1MDAzNzNFOTkgLyogY3JjMzIuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBjcmMzMi5jYzsgcGF0aCA9IHJ0Y19iYXNl
L2NyYzMyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFGMDFGRTE4REI1
MDAzNzNFOTkgLyogbWVtb3J5X3VzYWdlX3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gbWVtb3J5X3VzYWdlX3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jh
c2UvbWVtb3J5X3VzYWdlX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0MTNBMjFGMTFGRTE4REI2MDAzNzNFOTkgLyogb3B0aW9uc2ZpbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gb3B0aW9uc2ZpbGUuaDsgcGF0aCA9IHJ0Y19iYXNlL29wdGlv
bnNmaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUYzMUZFMThEQjcw
MDM3M0U5OSAvKiBzd2FwX3F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IHN3YXBfcXVldWUuaDsgcGF0aCA9IHJ0Y19iYXNlL3N3YXBfcXVldWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRjQxRkUxOERCNzAwMzczRTk5IC8qIGRzY3AuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gZHNjcC5oOyBwYXRoID0gcnRjX2Jhc2UvZHNj
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFGNTFGRTE4REI3MDAzNzNF
OTkgLyogdGltZXV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHRpbWV1
dGlscy5oOyBwYXRoID0gcnRjX2Jhc2UvdGltZXV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxM0EyMUY2MUZFMThEQjgwMDM3M0U5OSAvKiBvcHRpb25zZmlsZS5jYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG9wdGlvbnNmaWxlLmNjOyBwYXRoID0g
cnRjX2Jhc2Uvb3B0aW9uc2ZpbGUuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
M0EyMUY3MUZFMThEQjgwMDM3M0U5OSAvKiB0eXBlX3RyYWl0cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSB0eXBlX3RyYWl0cy5oOyBwYXRoID0gcnRjX2Jhc2UvdHlwZV90cmFp
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRjgxRkUxOERCOTAwMzcz
RTk5IC8qIHJhbmRvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSByYW5kb20u
aDsgcGF0aCA9IHJ0Y19iYXNlL3JhbmRvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTNBMjFGOTFGRTE4REI5MDAzNzNFOTkgLyogc29ja2V0YWRkcmVzc3BhaXIuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzb2NrZXRhZGRyZXNzcGFpci5jYzsgcGF0
aCA9IHJ0Y19iYXNlL3NvY2tldGFkZHJlc3NwYWlyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzk2Nyw3ICszOTgxLDYgQEAKIAkJNDEzQTIyMDkxRkUxOERDMDAwMzczRTk5IC8q
IGJpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYmluZC5oOyBwYXRoID0g
cnRjX2Jhc2UvYmluZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjIwQTFG
RTE4REMwMDAzNzNFOTkgLyogZ3VuaXRfcHJvZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBndW5pdF9wcm9kLmg7IHBhdGggPSBydGNfYmFzZS9ndW5pdF9wcm9kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjBCMUZFMThEQzEwMDM3M0U5OSAvKiBhc3lu
Y3NvY2tldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBhc3luY3NvY2tldC5o
OyBwYXRoID0gcnRjX2Jhc2UvYXN5bmNzb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDEzQTIyMEMxRkUxOERDMTAwMzczRTk5IC8qIG5vb3AuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBub29wLmNjOyBwYXRoID0gcnRjX2Jhc2Uvbm9vcC5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyMEQxRkUxOERDMjAwMzczRTk5IC8q
IHJhdGVfbGltaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSByYXRlX2xp
bWl0ZXIuaDsgcGF0aCA9IHJ0Y19iYXNlL3JhdGVfbGltaXRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTNBMjIwRTFGRTE4REMyMDAzNzNFOTkgLyogc29ja2V0YWRhcHRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gc29ja2V0YWRhcHRlcnMuaDsgcGF0
aCA9IHJ0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxM0EyMjBGMUZFMThEQzIwMDM3M0U5OSAvKiByYXRldHJhY2tlci5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHJhdGV0cmFja2VyLmNjOyBwYXRoID0gcnRjX2Jh
c2UvcmF0ZXRyYWNrZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDAyLDcg
KzQwMTUsNiBAQAogCQk0MTNBMjIyRjFGRTE4REQyMDAzNzNFOTkgLyogYmluZF91bml0dGVzdC5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGJpbmRfdW5pdHRlc3QuY2M7
IHBhdGggPSBydGNfYmFzZS9iaW5kX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTNBMjIzMTFGRTE4REQzMDAzNzNFOTkgLyogc3RyaW5ndXRpbHNfdW5pdHRlc3Qu
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzdHJpbmd1dGlsc191bml0
dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3N0cmluZ3V0aWxzX3VuaXR0ZXN0LmNjOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjIzMjFGRTE4REQzMDAzNzNFOTkgLyogY29tcGls
ZV9hc3NlcnRfYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBjb21waWxlX2Fz
c2VydF9jLmg7IHBhdGggPSBydGNfYmFzZS9jb21waWxlX2Fzc2VydF9jLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQxM0EyMjMzMUZFMThERDQwMDM3M0U5OSAvKiB1bml4ZmlsZXN5
c3RlbS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHVuaXhmaWxlc3lz
dGVtLmNjOyBwYXRoID0gcnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxM0EyMjM0MUZFMThERDQwMDM3M0U5OSAvKiBzc2xhZGFwdGVyX3Vu
aXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc3NsYWRhcHRl
cl91bml0dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3NzbGFkYXB0ZXJfdW5pdHRlc3QuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjM1MUZFMThERDUwMDM3M0U5OSAvKiBj
cml0aWNhbHNlY3Rpb24uY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBj
cml0aWNhbHNlY3Rpb24uY2M7IHBhdGggPSBydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjM2MUZFMThERDUwMDM3M0U5OSAvKiBi
eXRlb3JkZXJfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBieXRlb3JkZXJfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9ieXRlb3JkZXJfdW5pdHRl
c3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDEyLDcgKzQwMjQsNiBAQAog
CQk0MTNBMjIzQTFGRTE4REQ4MDAzNzNFOTkgLyogcmF0ZV9saW1pdGVyLmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gcmF0ZV9saW1pdGVyLmNjOyBwYXRoID0gcnRjX2Jh
c2UvcmF0ZV9saW1pdGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjIz
QjFGRTE4REQ5MDAzNzNFOTkgLyogYnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IGJ1ZmZlci5oOyBwYXRoID0gcnRjX2Jhc2UvYnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxM0EyMjNDMUZFMThERDkwMDM3M0U5OSAvKiBldmVudF90cmFjZXIu
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBldmVudF90cmFjZXIuY2M7
IHBhdGggPSBydGNfYmFzZS9ldmVudF90cmFjZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQxM0EyMjNEMUZFMThERDkwMDM3M0U5OSAvKiBwYXRodXRpbHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcGF0aHV0aWxzLmg7IHBhdGggPSBydGNfYmFzZS9wYXRo
dXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyM0YxRkUxOEREQTAw
MzczRTk5IC8qIHNzbHJvb3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHNz
bHJvb3RzLmg7IHBhdGggPSBydGNfYmFzZS9zc2xyb290cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTNBMjI0MDFGRTE4RERCMDAzNzNFOTkgLyogb3BlbnNzbGRpZ2VzdC5jYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG9wZW5zc2xkaWdlc3QuY2M7IHBh
dGggPSBydGNfYmFzZS9vcGVuc3NsZGlnZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTNBMjI0MjFGRTE4RERCMDAzNzNFOTkgLyogaHR0cGNvbW1vbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBodHRwY29tbW9uLmg7IHBhdGggPSBydGNfYmFzZS9odHRw
Y29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDQzLDcgKzQwNTQsNiBA
QAogCQk0MTNBMjI1RDFGRTE4REU2MDAzNzNFOTkgLyogYXRvbWljb3BzX3VuaXR0ZXN0LmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gYXRvbWljb3BzX3VuaXR0ZXN0LmNj
OyBwYXRoID0gcnRjX2Jhc2UvYXRvbWljb3BzX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTNBMjI1RTFGRTE4REU3MDAzNzNFOTkgLyogc3RyaW5naXplX21hY3Jv
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBzdHJpbmdpemVfbWFjcm9zLmg7
IHBhdGggPSBydGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxM0EyMjYxMUZFMThERTgwMDM3M0U5OSAvKiBjcHVfdGltZV91bml0dGVzdC5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGNwdV90aW1lX3VuaXR0ZXN0
LmNjOyBwYXRoID0gcnRjX2Jhc2UvY3B1X3RpbWVfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQxM0EyMjYyMUZFMThERTkwMDM3M0U5OSAvKiBmaWxldXRpbHMuY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBmaWxldXRpbHMuY2M7IHBhdGgg
PSBydGNfYmFzZS9maWxldXRpbHMuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
M0EyMjYzMUZFMThERUEwMDM3M0U5OSAvKiBvcGVuc3Nsc3RyZWFtYWRhcHRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBvcGVuc3Nsc3RyZWFtYWRhcHRlci5oOyBwYXRoID0g
cnRjX2Jhc2Uvb3BlbnNzbHN0cmVhbWFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzQTIyNjQxRkUxOERFQjAwMzczRTk5IC8qIGV2ZW50LmNjICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gZXZlbnQuY2M7IHBhdGggPSBydGNfYmFzZS9ldmVudC5j
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyNjUxRkUxOERFQjAwMzczRTk5
IC8qIGNyYzMyX3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gY3JjMzJfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9jcmMzMl91bml0dGVzdC5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwNTEsNyArNDA2MSw2IEBACiAJCTQxM0Ey
MjY3MUZFMThERUMwMDM3M0U5OSAvKiBzaWdzbG90dGVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IHNpZ3Nsb3R0ZXN0ZXIuaDsgcGF0aCA9IHJ0Y19iYXNlL3NpZ3Nsb3R0
ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyNjgxRkUxOERFRTAw
MzczRTk5IC8qIG5ldHdvcmtfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBuZXR3b3JrX3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2UvbmV0d29ya191
bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyNjkxRkUxOERF
RjAwMzczRTk5IC8qIGZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGZs
YWdzLmg7IHBhdGggPSBydGNfYmFzZS9mbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0MTNBMjI2QTFGRTE4REYwMDAzNzNFOTkgLyogZmlsZXV0aWxzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGZpbGV1dGlscy5oOyBwYXRoID0gcnRjX2Jhc2UvZmlsZXV0
aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjZCMUZFMThERjAwMDM3
M0U5OSAvKiBsb2dzaW5rcy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IGxvZ3NpbmtzLmNjOyBwYXRoID0gcnRjX2Jhc2UvbG9nc2lua3MuY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxM0EyMjZDMUZFMThERjAwMDM3M0U5OSAvKiBzc2xpZGVudGl0eV91
bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHNzbGlkZW50
aXR5X3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2Uvc3NsaWRlbnRpdHlfdW5pdHRlc3QuY2M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjZEMUZFMThERjEwMDM3M0U5OSAv
KiBudWxsc29ja2V0c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IG51
bGxzb2NrZXRzZXJ2ZXIuaDsgcGF0aCA9IHJ0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwODEsNyArNDA5MCw2IEBACiAJCTQxM0EyMjg2
MUZFMThERkMwMDM3M0U5OSAvKiB0ZXN0dXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gdGVzdHV0aWxzLmg7IHBhdGggPSBydGNfYmFzZS90ZXN0dXRpbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyODcxRkUxOERGRDAwMzczRTk5IC8qIGZpbGVy
b3RhdGluZ3N0cmVhbS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGZp
bGVyb3RhdGluZ3N0cmVhbS5jYzsgcGF0aCA9IHJ0Y19iYXNlL2ZpbGVyb3RhdGluZ3N0cmVhbS5j
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyODgxRkUxOERGRDAwMzczRTk5
IC8qIHJ0Y2NlcnRpZmljYXRlX3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gcnRjY2VydGlmaWNhdGVfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9y
dGNjZXJ0aWZpY2F0ZV91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDEzQTIyOEExRkUxOERGRTAwMzczRTk5IC8qIHRocmVhZF9kYXJ3aW4ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSB0aHJlYWRfZGFyd2luLm1tOyBwYXRoID0gcnRj
X2Jhc2UvdGhyZWFkX2Rhcndpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEz
QTIyOEIxRkUxOERGRTAwMzczRTk5IC8qIHRhc2tfcXVldWVfZ2NkLmNjICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGFza19xdWV1ZV9nY2QuY2M7IHBhdGggPSBydGNfYmFz
ZS90YXNrX3F1ZXVlX2djZC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIy
OEMxRkUxOERGRTAwMzczRTk5IC8qIGZpcmV3YWxsc29ja2V0c2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGZpcmV3YWxsc29ja2V0c2VydmVyLmg7IHBhdGggPSBydGNf
YmFzZS9maXJld2FsbHNvY2tldHNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTNBMjI4RTFGRTE4REZGMDAzNzNFOTkgLyogdGltZXV0aWxzX3VuaXR0ZXN0LmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGltZXV0aWxzX3VuaXR0ZXN0LmNjOyBw
YXRoID0gcnRjX2Jhc2UvdGltZXV0aWxzX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDA5Nyw3ICs0MTA1LDYgQEAKIAkJNDEzQTIyOTkxRkUxOEUwMzAwMzczRTk5
IC8qIGxvY2F0aW9uLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gbG9j
YXRpb24uY2M7IHBhdGggPSBydGNfYmFzZS9sb2NhdGlvbi5jYzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzQTIyOUExRkUxOEUwNDAwMzczRTk5IC8qIGxvY2F0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGxvY2F0aW9uLmg7IHBhdGggPSBydGNfYmFzZS9s
b2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI5QjFGRTE4RTA0
MDAzNzNFOTkgLyogaXBhZGRyZXNzLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gaXBhZGRyZXNzLmNjOyBwYXRoID0gcnRjX2Jhc2UvaXBhZGRyZXNzLmNjOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0MTNBMjI5QzFGRTE4RTA0MDAzNzNFOTkgLyogbm9vcC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IG5vb3AubW07IHBhdGgg
PSBydGNfYmFzZS9ub29wLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI5
RDFGRTE4RTA1MDAzNzNFOTkgLyogcmFjZV9jaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IHJhY2VfY2hlY2tlci5oOyBwYXRoID0gcnRjX2Jhc2UvcmFjZV9jaGVja2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjlFMUZFMThFMDUwMDM3M0U5
OSAvKiByYXRlX2xpbWl0ZXJfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSByYXRlX2xpbWl0ZXJfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9yYXRl
X2xpbWl0ZXJfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0Ey
MjlGMUZFMThFMDYwMDM3M0U5OSAvKiBzc2xmaW5nZXJwcmludC5jYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHNzbGZpbmdlcnByaW50LmNjOyBwYXRoID0gcnRjX2Jhc2Uv
c3NsZmluZ2VycHJpbnQuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTY1LDE2
ICs0MTcyLDEyIEBACiAJCTQxM0U2NzY0MjE2OTg1NDUwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29k
ZXJWUDgubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSVENWaWRl
b0VuY29kZXJWUDgubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0U2NzZFMjE2
OTg2M0EwMEVGMzdFRCAvKiB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlbXBvcmFsX2xheWVyc19jaGVja2VyLmNjOyBwYXRo
ID0gY29kZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDEzRTY3NkYyMTY5ODYzQTAwRUYzN0VEIC8qIGxpYnZweF9pbnRlcmZh
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gbGlidnB4X2ludGVyZmFjZS5o
OyBwYXRoID0gY29kZWNzL3ZwOC9saWJ2cHhfaW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQxM0U2NzcwMjE2OTg2M0IwMEVGMzdFRCAvKiB2cDhfdGVtcG9yYWxfbGF5
ZXJzLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdnA4X3RlbXBvcmFs
X2xheWVycy5jYzsgcGF0aCA9IGNvZGVjcy92cDgvdnA4X3RlbXBvcmFsX2xheWVycy5jYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTY3NzEyMTY5ODYzQjAwRUYzN0VEIC8qIGxp
YnZweF9pbnRlcmZhY2UuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBs
aWJ2cHhfaW50ZXJmYWNlLmNjOyBwYXRoID0gY29kZWNzL3ZwOC9saWJ2cHhfaW50ZXJmYWNlLmNj
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTNFNjc3NzIxNjk4NjdBMDBFRjM3RUQg
LyogY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IGNoYW5uZWxfcmVjZWl2ZV9wcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0MTNFNjc3ODIxNjk4NjdBMDBFRjM3RUQgLyogY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY2hhbm5lbF9yZWNlaXZlX3Byb3h5
LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFNjc3QjIxNjk4NkFEMDBFRjM3
RUQgLyogcnRwX2hlYWRlcl9leHRlbnNpb25fc2l6ZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxM0U2NzdDMjE2OTg2QUUwMEVGMzdFRCAvKiBydHBfaGVhZGVy
X2V4dGVuc2lvbl9zaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJ0cF9o
ZWFkZXJfZXh0ZW5zaW9uX3NpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEz
RTY3N0YyMTY5ODcwRjAwRUYzN0VEIC8qIHN2Y19jb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gc3ZjX2NvbmZpZy5oOyBwYXRoID0gY29kZWNzL3ZwOS9zdmNfY29uZmln
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0U2NzgwMjE2OTg3MEYwMEVGMzdF
RCAvKiBzdmNfY29uZmlnLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
c3ZjX2NvbmZpZy5jYzsgcGF0aCA9IGNvZGVjcy92cDkvc3ZjX2NvbmZpZy5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTY3ODMyMTY5ODc3RDAwRUYzN0VEIC8qIFJUQ1ZpZGVv
RW5jb2RlclNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1Zp
ZGVvRW5jb2RlclNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxM0U2
Nzg0MjE2OTg3N0QwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJTZXR0aW5ncy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFNjc4ODIxNjk4N0I5MDBFRjM3
RUQgLyogUlRDQ1ZQaXhlbEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSVENDVlBpeGVsQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0U2
Nzg5MjE2OTg3QjkwMEVGMzdFRCAvKiBSVENDVlBpeGVsQnVmZmVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUlRDQ1ZQaXhlbEJ1ZmZlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTY3OEMyMTY5ODdEQjAwRUYzN0VEIC8qIFJUQ1ZpZGVv
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDVmlkZW9GcmFtZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDMwOCw3ICs0MzExLDYgQEAKIAkJNDE0
NUU0QzIxRUY4OTZDRTAwRkNGNkU2IC8qIHJ0Y3N0YXRzcmVwb3J0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IHJ0Y3N0YXRzcmVwb3J0Lmg7IHBhdGggPSBzdGF0cy9ydGNzdGF0
c3JlcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQ1RTRDMzFFRjg5NkQy
MDBGQ0Y2RTYgLyogcnRjc3RhdHNfb2JqZWN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBydGNzdGF0c19vYmplY3RzLmg7IHBhdGggPSBzdGF0cy9ydGNzdGF0c19vYmplY3Rz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDVFNEM0MUVGODk2RDcwMEZDRjZF
NiAvKiBydGNzdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBydGNzdGF0
cy5oOyBwYXRoID0gc3RhdHMvcnRjc3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDE0NUU0QzkxRUY4Q0IzMTAwRkNGNkU2IC8qIGNyZWF0ZXBlZXJjb25uZWN0aW9uZmFjdG9y
eS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNyZWF0ZXBlZXJjb25u
ZWN0aW9uZmFjdG9yeS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0NUU0Q0Ix
RUY4Q0I4QTAwRkNGNkU2IC8qIHJ0cHRyYW5zcG9ydC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IHJ0cHRyYW5zcG9ydC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE0NUU0Q0QxRUY4Q0I5NDAwRkNGNkU2IC8qIHJ0cHRyYW5zcG9ydC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBydHB0cmFuc3BvcnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE0NUU0Q0YxRUY4Q0MxNzAwRkNGNkU2IC8qIHdlYnJ0Y3ZpZGVvZW5n
aW5lLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gd2VicnRjdmlkZW9l
bmdpbmUuY2M7IHBhdGggPSBlbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00NDU1LDkgKzQ0NTcsNyBAQAogCQk0MTc5NTNCMzIxNjk4MjQy
MDAyODI2NkIgLyogUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3OTUzQ0QyMTY5ODM0RTAwMjgyNjZCIC8qIGNo
YW5uZWxfc2VuZC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNoYW5u
ZWxfc2VuZC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3OTUzQ0UyMTY5ODM0
RTAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBjaGFubmVsX3NlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE3OTUz
Q0YyMTY5ODM0RTAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZF9wcm94eS5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNoYW5uZWxfc2VuZF9wcm94eS5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3OTUzRDAyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxf
cmVjZWl2ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjaGFubmVsX3JlY2Vp
dmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE3OTUzRDEyMTY5ODM0RjAwMjgy
NjZCIC8qIGNoYW5uZWxfc2VuZF9wcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBjaGFubmVsX3NlbmRfcHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE3OTUzRDIyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfcmVjZWl2ZS5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNoYW5uZWxfcmVjZWl2ZS5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3OTUzRDkyMTY5ODM5MDAwMjgyNjZCIC8qIG1ldHJpY3Mu
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBtZXRyaWNzLmNjOyBwYXRo
ID0gc291cmNlL21ldHJpY3MuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzk1
M0RBMjE2OTgzOTAwMDI4MjY2QiAvKiBmaWVsZF90cmlhbC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IGZpZWxkX3RyaWFsLmNjOyBwYXRoID0gc291cmNlL2ZpZWxkX3Ry
aWFsLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUzNiw3ICs0NTM2LDYgQEAK
IAkJNDE5MjQxNEEyMTI3Mzc2RDAwNjM0RkNGIC8qIGJhc2ljYXN5bmNyZXNvbHZlcmZhY3Rvcnku
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBiYXNpY2FzeW5jcmVzb2x2
ZXJmYWN0b3J5LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTkyNDE0QjIxMjcz
NzZEMDA2MzRGQ0YgLyogcmVnYXRoZXJpbmdjb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IHJlZ2F0aGVyaW5nY29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTkyNDE0QzIxMjczNzZFMDA2MzRGQ0YgLyogZmFrZWNhbmRpZGF0ZXBh
aXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmFrZWNhbmRpZGF0ZXBhaXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5MjQxNEQyMTI3Mzc2RTAwNjM0RkNG
IC8qIHVkcHRyYW5zcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB1ZHB0
cmFuc3BvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5MjQxNEUyMTI3Mzc2
RTAwNjM0RkNGIC8qIGZha2VwYWNrZXR0cmFuc3BvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gZmFrZXBhY2tldHRyYW5zcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTkyNDE0RjIxMjczNzZFMDA2MzRGQ0YgLyogZmFrZWljZXRyYW5zcG9ydC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmYWtlaWNldHJhbnNwb3J0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTI0MTUwMjEyNzM3NkUwMDYzNEZDRiAvKiBpY2V0
cmFuc3BvcnRpbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBpY2V0
cmFuc3BvcnRpbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU2MSw3
ICs0NTYwLDYgQEAKIAkJNDE5MjQxODAyMTI3NDk3MTAwNjM0RkNGIC8qIGJhZF92YXJpYW50X2Fj
Y2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBiYWRfdmFyaWFudF9hY2Nl
c3MuaDsgcGF0aCA9IHR5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTkyNDE4NzIxMjc0OUM3MDA2MzRGQ0YgLyogc2VuZF90aW1lX2hpc3Rv
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gc2VuZF90aW1lX2hpc3Rvcnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5MjQxODgyMTI3NDlDNzAwNjM0RkNG
IC8qIHNlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBzZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTkyNDE4OTIxMjc0OUM4MDA2MzRGQ0YgLyog
cGFjZXJfY29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBwYWNl
cl9jb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTI0MThBMjEy
NzQ5QzgwMDYzNEZDRiAvKiB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmNj
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTkyNDE4RjIxMjc1ODEwMDA2MzRGQ0Yg
LyogZmVjX3ByaXZhdGVfdGFibGVzX2J1cnN0eS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IGZlY19wcml2YXRlX3RhYmxlc19idXJzdHkuY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxOTI0MTkzMjEyNzU4NjQwMDYzNEZDRiAvKiBybm5fdmFkX3dlaWdo
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcm5uX3ZhZF93ZWlnaHRzLmg7
IHBhdGggPSBzcmMvcm5uX3ZhZF93ZWlnaHRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00NzI0LDggKzQ3MjIsNiBAQAogCQk0MTlDODMyMzFGRTI0NTI4MDA0MEMzMEYgLyogcnRj
X2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuaDsgcGF0aCA9IHJ0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxOUM4MzI4MUZFMjQ1Q0IwMDQwQzMwRiAvKiBwYWNlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBwYWNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTlDODMyQjFGRTI0NUNDMDA0MEMzMEYgLyogaW50ZXJ2YWxfYnVkZ2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGludGVydmFsX2J1ZGdldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTlDODMzMjFGRTI0NUU5MDA0MEMzMEYgLyogdGlt
ZV9pbnRlcnZhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB0aW1lX2ludGVy
dmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxOUM4MzMzMUZFMjQ1RTkwMDQw
QzMwRiAvKiB0aW1lX2ludGVydmFsLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gdGltZV9pbnRlcnZhbC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5
QzgzMzcxRkUyNDYyMjAwNDBDMzBGIC8qIGF1ZGlvX2VuY29kZXJfZzcyMl9jb25maWcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZy5o
OyBwYXRoID0gYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlDODMzODFGRTI0NjIyMDA0MEMzMEYgLyog
YXVkaW9fZGVjb2Rlcl9nNzIyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGF1
ZGlvX2RlY29kZXJfZzcyMi5oOyBwYXRoID0gYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rl
cl9nNzIyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUM4MzM5MUZFMjQ2MjIw
MDQwQzMwRiAvKiBhdWRpb19lbmNvZGVyX2c3MjIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBhdWRpb19lbmNvZGVyX2c3MjIuY2M7IHBhdGggPSBhdWRpb19jb2RlY3Mv
ZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00Nzk4LDcgKzQ3OTQsNiBAQAogCQk0MTlDODNEMDFGRTI0N0VGMDA0MEMzMEYgLyogcGFja2V0
dHJhbnNwb3J0aW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcGFj
a2V0dHJhbnNwb3J0aW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5
QzgzRDExRkUyNDdGMDAwNDBDMzBGIC8qIHBhY2tldHRyYW5zcG9ydGludGVybmFsLmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwu
Y2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUM4M0QyMUZFMjQ3RjAwMDQwQzMw
RiAvKiBwb3J0aW50ZXJmYWNlLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gcG9ydGludGVyZmFjZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5Qzgz
RDMxRkUyNDdGMDAwNDBDMzBGIC8qIHVkcHRyYW5zcG9ydC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IHVkcHRyYW5zcG9ydC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE5QzgzRDQxRkUyNDdGMTAwNDBDMzBGIC8qIGR0bHN0cmFuc3BvcnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZHRsc3RyYW5zcG9ydC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTlDODNENTFGRTI0N0YxMDA0MEMzMEYgLyogZHRsc3RyYW5z
cG9ydGludGVybmFsLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZHRs
c3RyYW5zcG9ydGludGVybmFsLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlD
ODNENjFGRTI0N0YxMDA0MEMzMEYgLyogZHRsc3RyYW5zcG9ydGludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGR0bHN0cmFuc3BvcnRpbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDkwNywxNSArNDkwMiwxMiBAQAogCQk0MUEwOEJDRTIx
MjcyRUUxMDAxRDVEN0IgLyogZ2Fpbl9jb250cm9sbGVyMi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IGdhaW5fY29udHJvbGxlcjIuY2M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxQTA4QkQxMjEyNzJFRkEwMDFENUQ3QiAvKiByb3VuZF9yb2Jpbl9wYWNr
ZXRfcXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcm91bmRfcm9iaW5f
cGFja2V0X3F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4QkQyMjEy
NzJFRkEwMDFENUQ3QiAvKiByb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuY2MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSByb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQTA4QkQ1MjEyNzJGMUMwMDFENUQ3QiAvKiBj
b25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFBMDhCRDYyMTI3MkYxQzAwMUQ1RDdCIC8q
IGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9s
bGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwOEJEQTIxMjcyRjg0MDAx
RDVEN0IgLyogY29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBjb21wdXRlX2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQTA4QkRCMjEyNzJGODQwMDFENUQ3QiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dh
aW5fYXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwOEJEQzIxMjcyRjg0MDAxRDVE
N0IgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYWRh
cHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFBMDhCREQyMTI3MkY4NDAwMUQ1RDdCIC8qIHZlY3Rvcl9mbG9hdF9mcmFtZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSB2ZWN0b3JfZmxvYXRfZnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFBMDhCREUyMTI3MkY4NDAwMUQ1RDdCIC8qIGdhaW5fYXBwbGllci5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IGdhaW5fYXBwbGllci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFBMDhCREYyMTI3MkY4NDAwMUQ1RDdCIC8qIGZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1h
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQTA4QkUwMjEyNzJGODUwMDFENUQ3QiAvKiBn
YWluX2N1cnZlX2FwcGxpZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnYWluX2N1cnZlX2FwcGxp
ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4QkUxMjEyNzJGODUwMDFE
NUQ3QiAvKiBpbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGlu
dGVycG9sYXRlZF9nYWluX2N1cnZlLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUEwOEJFMjIxMjcyRjg1MDAxRDVEN0IgLyogbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IG5vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUEwOEJFMzIxMjcyRjg1MDAxRDVEN0IgLyogdmFkX3dpdGhfbGV2ZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gdmFkX3dpdGhfbGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTUxNzYsMTEgKzUxNjgsOCBAQAogCQk0MUQ2QjQ2MjIxMjczMUExMDA4RjkzNTMg
LyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGFk
YXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUQ2QjQ2MzIxMjczMUEyMDA4RjkzNTMgLyogYmlxdWFkX2ZpbHRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBiaXF1YWRfZmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRDZCNDY0MjEyNzMxQTIwMDhGOTM1MyAvKiBhZGFwdGl2ZV9hZ2MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gYWRhcHRpdmVfYWdjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxRDZCNDY1
MjEyNzMxQTIwMDhGOTM1MyAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIuY2MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBmaXhlZF9nYWluX2NvbnRyb2xsZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRDZCNDY2MjEyNzMxQTIwMDhGOTM1MyAvKiB2ZWN0b3JfZmxvYXRfZnJhbWUuY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSB2ZWN0b3JfZmxvYXRfZnJhbWUuY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQxRDZCNDY3MjEyNzMxQTMwMDhGOTM1MyAvKiBmaXhlZF9nYWluX2Nv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDZCNDY4MjEyNzMxQTMwMDhGOTM1MyAvKiBzYXR1
cmF0aW9uX3Byb3RlY3Rvci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHNhdHVyYXRpb25fcHJvdGVj
dG9yLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUQ2QjQ2OTIxMjczMUEzMDA4
RjkzNTMgLyogZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdhaW5fY3VydmVf
YXBwbGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQ2QjQ2QTIxMjczMUEz
MDA4RjkzNTMgLyogbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUQ2QjQ2QjIxMjczMUEzMDA4RjkzNTMgLyogc2F0dXJhdGlvbl9wcm90ZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gc2F0dXJhdGlvbl9wcm90ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFENkI0NkMyMTI3MzFBNDAwOEY5MzUzIC8qIHZhZF93aXRoX2xldmVsLmNj
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gdmFkX3dpdGhfbGV2ZWwuY2M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01MjMxLDcgKzUyMjAsNiBAQAogCQk0MUUwMkM5MjIxMjczNTJBMDBDMjdD
RDYgLyogYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUwMkM5MzIxMjczNTJBMDBDMjdDRDYgLyogcHJvYmVf
Yml0cmF0ZV9lc3RpbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcHJv
YmVfYml0cmF0ZV9lc3RpbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFF
MDJDOTQyMTI3MzUyQTAwQzI3Q0Q2IC8qIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGFja25vd2xlZGdlZF9iaXRy
YXRlX2VzdGltYXRvci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFFMDJDOTUy
MTI3MzUyQTAwQzI3Q0Q2IC8qIGdvb2dfY2NfZmFjdG9yeS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IGdvb2dfY2NfZmFjdG9yeS5jYzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFFMDJDOTYyMTI3MzUyQTAwQzI3Q0Q2IC8qIGdvb2dfY2NfbmV0d29ya19j
b250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdvb2dfY2NfbmV0d29y
a19jb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTAyQzk3MjEyNzM1
MkEwMEMyN0NENiAvKiBkZWxheV9iYXNlZF9id2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gZGVsYXlfYmFzZWRfYndlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRTAyQzk4MjEyNzM1MkIwMEMyN0NENiAvKiBiaXRyYXRlX2VzdGltYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBiaXRyYXRlX2VzdGltYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTI2MCw3ICs1MjQ4LDYgQEAKIAkJNDFFMDJDQ0IyMTI3MzVC
NzAwQzI3Q0Q2IC8qIGJpdHJhdGVfc2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gYml0cmF0ZV9zZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUUwMkNEMTIxMjczNjA2MDBDMjdDRDYgLyogc2FtcGxlX2NvdW50ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gc2FtcGxlX2NvdW50ZXIuaDsgcGF0aCA9IHJ0Y19iYXNl
L251bWVyaWNzL3NhbXBsZV9jb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRTAyQ0QyMjEyNzM2MDcwMEMyN0NENiAvKiBzYW1wbGVfY291bnRlci5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHNhbXBsZV9jb3VudGVyLmNjOyBwYXRoID0gcnRj
X2Jhc2UvbnVtZXJpY3Mvc2FtcGxlX2NvdW50ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQxRTAyQ0Q2MjEyNzM2M0MwMEMyN0NENiAvKiBwYWNlcl9jb250cm9sbGVyLmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gcGFjZXJfY29udHJvbGxlci5jYzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFFMDJDRDcyMTI3MzYzQzAwQzI3Q0Q2IC8qIHRyYW5zcG9ydF9mZWVkYmFj
a19hZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTAyQ0Q4MjEyNzM2M0QwMEMyN0NENiAv
KiBzZW5kX3RpbWVfaGlzdG9yeS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHNlbmRfdGltZV9oaXN0
b3J5LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUVBNTNBNDFFRkMyQkZEMDAy
RkYwNEMgLyogaG1hYy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBobWFjLmM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01NDY1LDggKzU0NTIsOCBAQAogCQk0MUY5QkZCMzIwNTFDOTM2MDBBQkYw
QjkgLyogc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBzaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmg7IHBhdGggPSBlbmdpbmUvc2lt
dWxjYXN0X2VuY29kZXJfYWRhcHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUY5QkZDNDIwNTFDQUU0MDBBQkYwQjkgLyogc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBzaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5
Lmg7IHBhdGggPSBzaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNzaW5nX2xp
YnJhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGOUJGQzYyMDUxRENFODAw
QUJGMEI5IC8qIHdlYnJ0Y192YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
d2VicnRjX3ZhZC5oOyBwYXRoID0gdmFkL2luY2x1ZGUvd2VicnRjX3ZhZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MUY5QkZDOTIwNTFEREEyMDBBQkYwQjkgLyogYWxyX2V4cGVy
aW1lbnQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBhbHJfZXhwZXJp
bWVudC5jYzsgcGF0aCA9IHJ0Y19iYXNlL2V4cGVyaW1lbnRzL2Fscl9leHBlcmltZW50LmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUY5QkZDQTIwNTFEREEyMDBBQkYwQjkgLyog
YWxyX2V4cGVyaW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYWxyX2V4
cGVyaW1lbnQuaDsgcGF0aCA9IHJ0Y19iYXNlL2V4cGVyaW1lbnRzL2Fscl9leHBlcmltZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRjlCRkM5MjA1MUREQTIwMEFCRjBCOSAv
KiBhbHJfZXhwZXJpbWVudC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IGFscl9leHBlcmltZW50LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUY5QkZD
QTIwNTFEREEyMDBBQkYwQjkgLyogYWxyX2V4cGVyaW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gYWxyX2V4cGVyaW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFGOUJGQ0QyMDUxRERFNDAwQUJGMEI5IC8qIGZmdF9idWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZ0X2J1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUY5QkZDRTIwNTFEREU0MDBBQkYwQjkgLyogbWF0cml4X2J1ZmZlci5jYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1hdHJpeF9idWZmZXIuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjlCRkNGMjA1MURERTQwMEFCRjBCOSAvKiB2
ZWN0b3JfYnVmZmVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdmVj
dG9yX2J1ZmZlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0ODEsNiArNTQ2
OCw2NSBAQAogCQk0MUY5QkZERTIwNTFERTE3MDBBQkYwQjkgLyogc2Vzc2lvbmRlc2NyaXB0aW9u
LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gc2Vzc2lvbmRlc2NyaXB0
aW9uLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY5QkZFNzIwNTFERUU5MDBB
QkYwQjkgLyogdHVybnBvcnRmYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IHR1cm5wb3J0ZmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY5
QkZFODIwNTFERUVBMDBBQkYwQjkgLyogdHVybnBvcnRmYWN0b3J5LmNjICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdHVybnBvcnRmYWN0b3J5LmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUZDQkIwOTIxQjFGNTMwMDBBNURGMjcgLyogY3JlYXRlX3BlZXJj
b25uZWN0aW9uX2ZhY3RvcnkuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFGQ0JCMEEyMUIxRjUzMTAwQTVERjI3IC8qIG1lZGlhX3RyYW5zcG9ydF9pbnRl
cmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbWVkaWFfdHJhbnNwb3J0
X2ludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIwQjIxQjFG
NTMyMDBBNURGMjcgLyogc2NvcGVkX3JlZnB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBzY29wZWRfcmVmcHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
RkNCQjBDMjFCMUY1MzIwMEE1REYyNyAvKiBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbWVkaWFfdHJhbnNwb3J0X2ludGVy
ZmFjZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMEQyMUIxRjUzNjAw
QTVERjI3IC8qIGNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IGNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjEzMjFCMUY3QUEwMEE1REYyNyAvKiBtb3Zp
bmdfYXZlcmFnZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG1vdmlu
Z19hdmVyYWdlLmNjOyBwYXRoID0gcnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2UuY2M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjE0MjFCMUY3QUEwMEE1REYyNyAv
KiBtb3ZpbmdfYXZlcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBtb3Zp
bmdfYXZlcmFnZS5oOyBwYXRoID0gcnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMTcyMUIxRjdDQzAwQTVERjI3IC8q
IGJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMTgyMUIxRjdD
QzAwQTVERjI3IC8qIGVuY29kZWRfaW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gZW5jb2RlZF9pbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZD
QkIxOTIxQjFGN0NDMDBBNURGMjcgLyogZW5jb2RlZF9pbWFnZS5jYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGVuY29kZWRfaW1hZ2UuY2M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxRkNCQjFBMjFCMUY3Q0QwMEE1REYyNyAvKiBidWlsdGluX3ZpZGVvX2Jp
dHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjIwMjFCMUY4MkUwMEE1REYyNyAvKiB0aHJvd19kZWxl
Z2F0ZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRocm93X2RlbGVn
YXRlLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIyMTIxQjFGODJGMDBB
NURGMjcgLyogdGhyb3dfZGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gdGhyb3dfZGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JC
MjUyMUIxRjg3RTAwQTVERjI3IC8qIHNlbnRfcGFja2V0LmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gc2VudF9wYWNrZXQuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRkNCQjI2MjFCMUY4N0UwMEE1REYyNyAvKiBzZW50X3BhY2tldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBzZW50X3BhY2tldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUZDQkIyQTIxQjFGOEI2MDBBNURGMjcgLyogY3J5cHRvb3B0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjcnlwdG9vcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjJCMjFCMUY4QjYwMEE1REYyNyAvKiBmcmFt
ZWRlY3J5cHRvcmludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBm
cmFtZWRlY3J5cHRvcmludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUZDQkIyQzIxQjFGOEI2MDBBNURGMjcgLyogZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMkQyMUIxRjhCNjAwQTVERjI3IC8q
IGNyeXB0b29wdGlvbnMuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBj
cnlwdG9vcHRpb25zLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIzNDIx
QjFGOEZCMDBBNURGMjcgLyogY29udHJvbF9oYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGNvbnRyb2xfaGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUZDQkIzNTIxQjFGOEZDMDBBNURGMjcgLyogY29udHJvbF9oYW5kbGVyLmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY29udHJvbF9oYW5kbGVyLmNjOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIzQTIxQjFGRDNGMDBBNURGMjcgLyogbWF0
Y2guY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtYXRjaC5jYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCM0IyMUIxRkQzRjAwQTVERjI3IC8qIG1h
dGNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG1hdGNoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjNFMjFCMUZEQjgwMEE1REYyNyAvKiBjb25nZXN0
aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCM0YyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdl
c3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNj
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI0MjIxQjFGREVFMDBBNURGMjcg
LyogbWRuc19tZXNzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG1kbnNf
bWVzc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI0MzIxQjFGREVF
MDBBNURGMjcgLyogaWNlY3JlZGVudGlhbHNpdGVyYXRvci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IGljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjQ0MjFCMUZERUYwMEE1REYyNyAvKiBtZG5zX21lc3Nh
Z2UuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtZG5zX21lc3NhZ2Uu
Y2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjQ1MjFCMUZERUYwMEE1REYy
NyAvKiBpY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFGQ0JCNEIyMUIxRkU0NDAwQTVERjI3IC8qIGNwdV9zcGVlZF9leHBlcmltZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNwdV9zcGVlZF9leHBlcmltZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjRDMjFCMUZFNDQwMEE1REYyNyAv
KiBqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI0RDIxQjFGRTQ1MDBBNURGMjcgLyogY3B1X3Nw
ZWVkX2V4cGVyaW1lbnQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBj
cHVfc3BlZWRfZXhwZXJpbWVudC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
Q0JCNEUyMUIxRkU0NTAwQTVERjI3IC8qIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGppdHRlcl91cHBlcl9ib3VuZF9leHBl
cmltZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjRGMjFCMUZFNDUw
MEE1REYyNyAvKiBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJp
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI1MDIxQjFGRTQ1MDBB
NURGMjcgLyogbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhw
ZXJpbWVudC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNTcyMUIxRkU2
RDAwQTVERjI3IC8qIGZyYW1lX2R1bXBpbmdfZGVjb2Rlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IGZyYW1lX2R1bXBpbmdfZGVjb2Rlci5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNTgyMUIxRkU2RTAwQTVERjI3IC8qIGZyYW1lX2R1bXBp
bmdfZGVjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmcmFtZV9kdW1w
aW5nX2RlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNUIyMUIx
RkVBMzAwQTVERjI3IC8qIGJpdHJhdGVfY29udHJvbGxlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IGJpdHJhdGVfY29udHJvbGxlci5jYzsgcGF0aCA9IGJpdHJhdGVf
Y29udHJvbGxlci9iaXRyYXRlX2NvbnRyb2xsZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRkNCQjVEMjFCMUZFQzQwMEE1REYyNyAvKiBnb29nX2NjX2ZhY3RvcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ29vZ19jY19mYWN0b3J5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjVFMjFCMUZFQzQwMEE1REYyNyAvKiBnb29nX2Nj
X2ZhY3RvcnkuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnb29nX2Nj
X2ZhY3RvcnkuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjYxMjFCMUZF
RjUwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oOyBwYXRoID0g
dmlkZW9fY29kZWNzL2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRkNCQjYyMjFCMUZFRjUwMEE1REYyNyAvKiB2cDhfdGVtcG9yYWxf
bGF5ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHZwOF90ZW1wb3JhbF9s
YXllcnMuaDsgcGF0aCA9IHZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjYzMjFCMUZFRjUwMEE1REYyNyAvKiBjcmVh
dGVfdnA4X3RlbXBvcmFsX2xheWVycy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjOyBwYXRoID0gdmlkZW9fY29kZWNz
L2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUZDQkI2NzIxQjFGRjFCMDBBNURGMjcgLyogbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0
aW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBsb3NzX2Jhc2VkX2Jh
bmR3aWR0aF9lc3RpbWF0aW9uLmg7IHBhdGggPSBiaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNl
ZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUZDQkI2ODIxQjFGRjFCMDBBNURGMjcgLyogbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlv
bi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGxvc3NfYmFzZWRfYmFu
ZHdpZHRoX2VzdGltYXRpb24uY2M7IHBhdGggPSBiaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNl
ZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFGQ0JCNkIyMUIxRkYzOTAwQTVERjI3IC8qIGtleV9kZXJpdmF0aW9uLmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0ga2V5X2Rlcml2YXRpb24uY2M7IHBhdGggPSBydGNf
YmFzZS9rZXlfZGVyaXZhdGlvbi5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
Q0JCNkMyMUIxRkYzQTAwQTVERjI3IC8qIGtleV9kZXJpdmF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IGtleV9kZXJpdmF0aW9uLmg7IHBhdGggPSBydGNfYmFzZS9rZXlf
ZGVyaXZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI2RjIxQjFG
Rjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gaGRyX21ldGFkYXRhLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MUZDQkI3MDIxQjFGRjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGhkcl9tZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MUZDQkI3MzIxQjFGRkE0MDBBNURGMjcgLyogY29jb2FfdGhyZWFkaW5nLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gY29jb2FfdGhyZWFkaW5n
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI3NDIxQjFGRkE0MDBBNURG
MjcgLyogY29jb2FfdGhyZWFkaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGNvY29hX3RocmVhZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI3
NzIxQjFGRkJGMDBBNURGMjcgLyogYXNjaWkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gYXNjaWkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNzgyMUIx
RkZDMDAwQTVERjI3IC8qIGFzY2lpLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gYXNjaWkuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjdCMjFC
MUZGRjUwMEE1REYyNyAvKiBvcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBvcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYu
Y2M7IHBhdGggPSBydGNfYmFzZS9vcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjdDMjFCMUZGRjUwMEE1REYyNyAvKiBvcGVu
c3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmg7IHBhdGggPSBydGNfYmFzZS9vcGVuc3Ns
X2tleV9kZXJpdmF0aW9uX2hrZGYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
Q0JCN0YyMUIyMDAxMTAwQTVERjI3IC8qIHN0cmluZ192aWV3LmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gc3RyaW5nX3ZpZXcuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxRkNCQjgyMjFCMjAwN0IwMEE1REYyNyAvKiBtZW11dGlsLmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbWVtdXRpbC5jYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCODMyMUIyMDA3QjAwQTVERjI3IC8qIG1lbXV0aWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbWVtdXRpbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUZDQkI4NzIxQjIwMERCMDBBNURGMjcgLyogUlRDVmlkZW9FbmNvZGVy
U2V0dGluZ3MubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gUlRDVmlkZW9F
bmNvZGVyU2V0dGluZ3MubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGRTg2NDQy
MTVDNTI1RjAwQjYyQzA3IC8qIGdlbnZlcnNpb24uYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5j
OyBwYXRoID0gZ2VudmVyc2lvbi5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZF
ODY0NTIxNUM1MjYwMDBCNjJDMDcgLyogbmFzbS1ldmFsLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuYzsgcGF0aCA9ICJuYXNtLWV2YWwuYyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRkU4NjQ2MjE1QzUyNjAwMEI2MkMwNyAvKiBuYXNtLWV2YWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gIm5hc20tZXZhbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTU4ODcsNyArNTkzMyw2IEBACiAJCTVDNEI0QzEyMUU0MzFGNzUwMDI2NTFDOCAvKiBp
NDIwX2J1ZmZlcl9wb29sLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
aTQyMF9idWZmZXJfcG9vbC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjRD
MTMxRTQzMUY3NTAwMjY1MUM4IC8qIGluY29taW5nX3ZpZGVvX3N0cmVhbS5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGluY29taW5nX3ZpZGVvX3N0cmVhbS5jYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjRDMTUxRTQzMUY3NTAwMjY1MUM4IC8qIHZp
ZGVvX2ZyYW1lX2J1ZmZlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IHZpZGVvX2ZyYW1lX2J1ZmZlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM0
QjRDMTYxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX2ZyYW1lLmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gdmlkZW9fZnJhbWUuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDNEI0QzE3MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19yZW5kZXJfZnJhbWVz
LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdmlkZW9fcmVuZGVyX2Zy
YW1lcy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjRDMTgxRTQzMUY3NTAw
MjY1MUM4IC8qIHZpZGVvX3JlbmRlcl9mcmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gdmlkZW9fcmVuZGVyX2ZyYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzRCNEMyNDFFNDMxRjlDMDAyNjUxQzggLyogYXVkaW9fY29udmVydGVyLmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gYXVkaW9fY29udmVydGVyLmNjOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjAyOCw4ICs2MDczLDYgQEAKIAkJNUM2M0Y5RDkx
RTQxNzRGNjAwMkNBNTMxIC8qIHR1cm5zZXJ2ZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSB0dXJuc2VydmVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzYzRjlEQTFFNDE3NEY2MDAyQ0E1MzEgLyogdHVybnNlcnZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSB0dXJuc2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNjNGOURCMUU0MTc0RjYwMDJDQTUzMSAvKiB1ZHBwb3J0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHVkcHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNUM2M0ZBM0ExRTQxNzYxRjAwMkNBNTMxIC8qIGJ1bmRsZWZpbHRlci5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGJ1bmRsZWZpbHRlci5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM2M0ZBM0IxRTQxNzYxRjAwMkNBNTMxIC8qIGJ1bmRsZWZp
bHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBidW5kbGVmaWx0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2M0ZBM0QxRTQxNzYxRjAwMkNBNTMxIC8q
IGNoYW5uZWwuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjaGFubmVs
LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzYzRkEzRTFFNDE3NjFGMDAyQ0E1
MzEgLyogY2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjaGFubmVs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjNGQTQwMUU0MTc2MUYwMDJDQTUz
MSAvKiBjaGFubmVsbWFuYWdlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IGNoYW5uZWxtYW5hZ2VyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIz
NCw4ICs2Mjc3LDYgQEAKIAkJNUNERDgzNkMxRTQzOUEzNTAwNjIxRTkyIC8qIGZyYW1lX2Ryb3Bw
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZnJhbWVfZHJvcHBlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODM2RDFFNDM5QTM1MDA2MjFFOTIgLyog
aXZmX2ZpbGVfd3JpdGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
aXZmX2ZpbGVfd3JpdGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODM2
RTFFNDM5QTM1MDA2MjFFOTIgLyogaXZmX2ZpbGVfd3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IGl2Zl9maWxlX3dyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1Q0REODM2RjFFNDM5QTM1MDA2MjFFOTIgLyogbW92aW5nX2F2ZXJhZ2UuY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtb3ZpbmdfYXZlcmFnZS5jYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNERDgzNzAxRTQzOUEzNTAwNjIxRTkyIC8qIG1v
dmluZ19hdmVyYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG1vdmluZ19h
dmVyYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4MzczMUU0MzlBMzUw
MDYyMUU5MiAvKiBxdWFsaXR5X3NjYWxlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IHF1YWxpdHlfc2NhbGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1Q0REODM3NDFFNDM5QTM1MDA2MjFFOTIgLyogcXVhbGl0eV9zY2FsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcXVhbGl0eV9zY2FsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUNERDgzNzcxRTQzOUEzNTAwNjIxRTkyIC8qIHZwOF9oZWFkZXJfcGFy
c2VyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdnA4X2hlYWRlcl9w
YXJzZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzQ2LDggKzYzODcsNiBA
QAogCQk1Q0REODRGOTFFNDNCMUVBMDA2MjFFOTIgLyogYXVkaW9fY29kaW5nX21vZHVsZS5jYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGF1ZGlvX2NvZGluZ19tb2R1bGUu
Y2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4NEZCMUU0M0IxRUEwMDYyMUU5
MiAvKiBjYWxsX3N0YXRpc3RpY3MuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBjYWxsX3N0YXRpc3RpY3MuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
REQ4NEZDMUU0M0IxRUEwMDYyMUU5MiAvKiBjYWxsX3N0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gY2FsbF9zdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTVDREQ4NEZFMUU0M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19tYW5hZ2VyLmNj
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY29kZWNfbWFuYWdlci5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNERDg0RkYxRTQzQjFFQTAwNjIxRTkyIC8q
IGNvZGVjX21hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29kZWNf
bWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODUwMTFFNDNCMUVB
MDA2MjFFOTIgLyogcmVudF9hX2NvZGVjLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gcmVudF9hX2NvZGVjLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0REODUwMjFFNDNCMUVBMDA2MjFFOTIgLyogcmVudF9hX2NvZGVjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IHJlbnRfYV9jb2RlYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Q0REODUxQzFFNDNCMzlDMDA2MjFFOTIgLyogYml0cmF0ZV9hbGxvY2F0b3IuY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBiaXRyYXRlX2FsbG9jYXRvci5j
YzsgcGF0aCA9IGNhbGwvYml0cmF0ZV9hbGxvY2F0b3IuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NzM0LDggKzY3NzMsNiBAQAogCQk1Q0REODlFMjFFNDNCRkIzMDA2MjFFOTIg
LyogcmFuZG9tX3ZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSByYW5k
b21fdmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4OUU0MUU0M0JG
QjMwMDYyMUU5MiAvKiByZWRfcGF5bG9hZF9zcGxpdHRlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IHJlZF9wYXlsb2FkX3NwbGl0dGVyLmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Q0REODlFNTFFNDNCRkIzMDA2MjFFOTIgLyogcmVkX3BheWxvYWRf
c3BsaXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcmVkX3BheWxvYWRf
c3BsaXR0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNERDg5RTYxRTQzQkZC
MzAwNjIxRTkyIC8qIHJ0Y3AuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBydGNwLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0REODlFNzFFNDNCRkIz
MDA2MjFFOTIgLyogcnRjcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBydGNw
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4OUU4MUU0M0JGQjMwMDYyMUU5
MiAvKiBzdGF0aXN0aWNzX2NhbGN1bGF0b3IuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBzdGF0aXN0aWNzX2NhbGN1bGF0b3IuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDREQ4OUU5MUU0M0JGQjMwMDYyMUU5MiAvKiBzdGF0aXN0aWNzX2NhbGN1bGF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gc3RhdGlzdGljc19jYWxjdWxh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4OUVCMUU0M0JGQjMwMDYy
MUU5MiAvKiBzeW5jX2J1ZmZlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IHN5bmNfYnVmZmVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY0Myw2
ICs3NjgwLDEyIEBACiAJCTQxMDZENTZCMjE2QzJCOTEwMDFFM0M0MCAvKiBzdHJpbmdzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MUZDQkI4MTIxQjIw
MDVBMDBBNURGMjcgLyogaW50ZXJuYWwgKi8sCisJCQkJNDFGQ0JCNzgyMUIxRkZDMDAwQTVERjI3
IC8qIGFzY2lpLmNjICovLAorCQkJCTQxRkNCQjc3MjFCMUZGQkYwMEE1REYyNyAvKiBhc2NpaS5o
ICovLAorCQkJCTQxRkNCQjNBMjFCMUZEM0YwMEE1REYyNyAvKiBtYXRjaC5jYyAqLywKKwkJCQk0
MUZDQkIzQjIxQjFGRDNGMDBBNURGMjcgLyogbWF0Y2guaCAqLywKKwkJCQk0MUZDQkI3RjIxQjIw
MDExMDBBNURGMjcgLyogc3RyaW5nX3ZpZXcuY2MgKi8sCiAJCQkJNDEwNkQ1NkMyMTZDMkJBOTAw
MUUzQzQwIC8qIHN0cmluZ192aWV3LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHN0cmluZ3M7CkBA
IC03NzEzLDIzICs3NzU2LDI2IEBACiAJCQkJNDFEREIyNzYyMTI2N0FDMTAwMjk2RDQ3IC8qIGJ1
aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmggKi8sCiAJCQkJNDFFMDJDQzIyMTI3MzU4NzAw
QzI3Q0Q2IC8qIGJ1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmNjICovLAogCQkJCTQxRERC
Mjc3MjEyNjdBQzEwMDI5NkQ0NyAvKiBidWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oICov
LAorCQkJCTQxRkNCQjYzMjFCMUZFRjUwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xh
eWVycy5jYyAqLywKKwkJCQk0MUZDQkI2MTIxQjFGRUY1MDBBNURGMjcgLyogY3JlYXRlX3ZwOF90
ZW1wb3JhbF9sYXllcnMuaCAqLywKIAkJCQk0MUREQjI3QTIxMjY3QUMyMDAyOTZENDcgLyogc2Rw
X3ZpZGVvX2Zvcm1hdC5jYyAqLywKIAkJCQk0MTQ1RjYxOTFGRTFGMzhCMDBFQjlDQUYgLyogc2Rw
X3ZpZGVvX2Zvcm1hdC5oICovLAogCQkJCTQxRERCMjcwMjEyNjdBQzAwMDI5NkQ0NyAvKiB2aWRl
b19jb2RlYy5jYyAqLywKIAkJCQk0MUREQjI3MTIxMjY3QUMwMDAyOTZENDcgLyogdmlkZW9fY29k
ZWMuaCAqLywKKwkJCQk0MUREQjI3MjIxMjY3QUMwMDAyOTZENDcgLyogdmlkZW9fZGVjb2Rlci5j
YyAqLywKKwkJCQk0MTQ1RTQ4QjFFRjg4Qjk2MDBGQ0Y2RTYgLyogdmlkZW9fZGVjb2Rlci5oICov
LAogCQkJCTQxNzk1M0YwMjE2OTg0NTUwMDI4MjY2QiAvKiB2aWRlb19kZWNvZGVyX2ZhY3Rvcnku
Y2MgKi8sCiAJCQkJNDE0NUY2MUExRkUxRjM4QzAwRUI5Q0FGIC8qIHZpZGVvX2RlY29kZXJfZmFj
dG9yeS5oICovLAogCQkJCTQxRERCMjc0MjEyNjdBQzEwMDI5NkQ0NyAvKiB2aWRlb19kZWNvZGVy
X3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuY2MgKi8sCiAJCQkJNDFEREIyNzgyMTI2N0FDMTAw
Mjk2RDQ3IC8qIHZpZGVvX2RlY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5oICovLAot
CQkJCTQxRERCMjcyMjEyNjdBQzAwMDI5NkQ0NyAvKiB2aWRlb19kZWNvZGVyLmNjICovLAotCQkJ
CTQxNDVFNDhCMUVGODhCOTYwMEZDRjZFNiAvKiB2aWRlb19kZWNvZGVyLmggKi8sCisJCQkJNDE0
NUY2MUMxRkUxRjM4RDAwRUI5Q0FGIC8qIHZpZGVvX2VuY29kZXIuY2MgKi8sCisJCQkJNDE0NUU0
OEMxRUY4OEI5RDAwRkNGNkU2IC8qIHZpZGVvX2VuY29kZXIuaCAqLywKIAkJCQk0MUUwMkNDMzIx
MjczNTg4MDBDMjdDRDYgLyogdmlkZW9fZW5jb2Rlcl9jb25maWcuY2MgKi8sCiAJCQkJNDFEREIy
N0IyMTI2N0FDMjAwMjk2RDQ3IC8qIHZpZGVvX2VuY29kZXJfY29uZmlnLmggKi8sCiAJCQkJNDE0
NUY2MUIxRkUxRjM4RDAwRUI5Q0FGIC8qIHZpZGVvX2VuY29kZXJfZmFjdG9yeS5oICovLAogCQkJ
CTQxRERCMjc1MjEyNjdBQzEwMDI5NkQ0NyAvKiB2aWRlb19lbmNvZGVyX3NvZnR3YXJlX2ZhbGxi
YWNrX3dyYXBwZXIuY2MgKi8sCiAJCQkJNDFEREIyNzkyMTI2N0FDMjAwMjk2RDQ3IC8qIHZpZGVv
X2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5oICovLAotCQkJCTQxNDVGNjFDMUZF
MUYzOEQwMEVCOUNBRiAvKiB2aWRlb19lbmNvZGVyLmNjICovLAotCQkJCTQxNDVFNDhDMUVGODhC
OUQwMEZDRjZFNiAvKiB2aWRlb19lbmNvZGVyLmggKi8sCisJCQkJNDFGQ0JCNjIyMUIxRkVGNTAw
QTVERjI3IC8qIHZwOF90ZW1wb3JhbF9sYXllcnMuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gdmlk
ZW9fY29kZWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc3OTAsNyArNzgzNiw3
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTNBMjE4MDFGRTE4RDdBMDAzNzNFOTkgLyogREVQ
UyAqLywKIAkJCQk0MTkyNDE2NTIxMjczODc5MDA2MzRGQ0YgLyogZXhwZXJpbWVudHMgKi8sCi0J
CQkJNDFGOUJGQzgyMDUxREQ4RTAwQUJGMEI5IC8qIGV4cGVyaW1lbnRzICovLAorCQkJCTQxRkNC
QjI0MjFCMUY4NUQwMEE1REYyNyAvKiBuZXR3b3JrICovLAogCQkJCTQxOUM4MzQxMUZFMjQ2Mzgw
MDQwQzMwRiAvKiBudW1lcmljcyAqLywKIAkJCQk0MTNBMjFGRDFGRTE4REJCMDAzNzNFOTkgLyog
T1dORVJTICovLAogCQkJCTQxRERCMjY3MjEyNjc5QUUwMDI5NkQ0NyAvKiBzdHJpbmdzICovLApA
QCAtNzg4MSw4ICs3OTI3LDYgQEAKIAkJCQk0MTNBMjI4NzFGRTE4REZEMDAzNzNFOTkgLyogZmls
ZXJvdGF0aW5nc3RyZWFtLmNjICovLAogCQkJCTQxM0EyMThDMUZFMThEODMwMDM3M0U5OSAvKiBm
aWxlcm90YXRpbmdzdHJlYW0uaCAqLywKIAkJCQk0MTNBMjI1QTFGRTE4REU1MDAzNzNFOTkgLyog
ZmlsZXJvdGF0aW5nc3RyZWFtX3VuaXR0ZXN0LmNjICovLAotCQkJCTQxM0EyMjYyMUZFMThERTkw
MDM3M0U5OSAvKiBmaWxldXRpbHMuY2MgKi8sCi0JCQkJNDEzQTIyNkExRkUxOERGMDAwMzczRTk5
IC8qIGZpbGV1dGlscy5oICovLAogCQkJCTQxM0EyMjE3MUZFMThEQzYwMDM3M0U5OSAvKiBmaXJl
d2FsbHNvY2tldHNlcnZlci5jYyAqLywKIAkJCQk0MTNBMjI4QzFGRTE4REZFMDAzNzNFOTkgLyog
ZmlyZXdhbGxzb2NrZXRzZXJ2ZXIuaCAqLywKIAkJCQk0MTNBMjE2MTFGRTE4RDVCMDAzNzNFOTkg
LyogZmxhZ3MuY2MgKi8sCkBAIC03OTA3LDYgKzc5NTEsOCBAQAogCQkJCTQxM0EyMTRFMUZFMThE
NTAwMDM3M0U5OSAvKiBpcGFkZHJlc3MuaCAqLywKIAkJCQk0MTNBMjE2QTFGRTE4RDY3MDAzNzNF
OTkgLyogaXBhZGRyZXNzX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMjEyMUZFMThEQzQwMDM3
M0U5OSAvKiBrZWVwX3JlZl91bnRpbF9kb25lLmggKi8sCisJCQkJNDFGQ0JCNkIyMUIxRkYzOTAw
QTVERjI3IC8qIGtleV9kZXJpdmF0aW9uLmNjICovLAorCQkJCTQxRkNCQjZDMjFCMUZGM0EwMEE1
REYyNyAvKiBrZXlfZGVyaXZhdGlvbi5oICovLAogCQkJCTQxM0EyMjk5MUZFMThFMDMwMDM3M0U5
OSAvKiBsb2NhdGlvbi5jYyAqLywKIAkJCQk0MTNBMjI5QTFGRTE4RTA0MDAzNzNFOTkgLyogbG9j
YXRpb24uaCAqLywKIAkJCQk0MTNBMjE3MjFGRTE4RDZEMDAzNzNFOTkgLyogbG9nZ2luZy5jYyAq
LywKQEAgLTc5NDcsMTQgKzc5OTMsMTQgQEAKIAkJCQk0MTNBMjIzODFGRTE4REQ2MDAzNzNFOTkg
LyogbmV0d29ya21vbml0b3IuY2MgKi8sCiAJCQkJNDEzQTIyMjkxRkUxOERDRjAwMzczRTk5IC8q
IG5ldHdvcmttb25pdG9yLmggKi8sCiAJCQkJNDEzQTIxNjkxRkUxOEQ2NTAwMzczRTk5IC8qIG5l
dHdvcmtyb3V0ZS5oICovLAotCQkJCTQxM0EyMjBDMUZFMThEQzEwMDM3M0U5OSAvKiBub29wLmNj
ICovLAotCQkJCTQxM0EyMjlDMUZFMThFMDQwMDM3M0U5OSAvKiBub29wLm1tICovLAogCQkJCTQx
M0EyMjdGMUZFMThERjkwMDM3M0U5OSAvKiBudWxsc29ja2V0c2VydmVyLmNjICovLAogCQkJCTQx
M0EyMjZEMUZFMThERjEwMDM3M0U5OSAvKiBudWxsc29ja2V0c2VydmVyLmggKi8sCiAJCQkJNDEz
QTIyN0MxRkUxOERGODAwMzczRTk5IC8qIG51bGxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3QuY2MgKi8s
CiAJCQkJNDEzQTIxRTIxRkUxOERBRjAwMzczRTk5IC8qIG9uZXRpbWVldmVudC5oICovLAogCQkJ
CTQxM0EyMTYyMUZFMThENUQwMDM3M0U5OSAvKiBvbmV0aW1lZXZlbnRfdW5pdHRlc3QuY2MgKi8s
CiAJCQkJNDEzQTIyNzUxRkUxOERGNjAwMzczRTk5IC8qIG9wZW5zc2wuaCAqLywKKwkJCQk0MUZD
QkI3QjIxQjFGRkY1MDBBNURGMjcgLyogb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmNjICov
LAorCQkJCTQxRkNCQjdDMjFCMUZGRjUwMEE1REYyNyAvKiBvcGVuc3NsX2tleV9kZXJpdmF0aW9u
X2hrZGYuaCAqLywKIAkJCQk0MTNBMjE5QTFGRTE4RDhCMDAzNzNFOTkgLyogb3BlbnNzbGFkYXB0
ZXIuY2MgKi8sCiAJCQkJNDEzQTIxREIxRkUxOERBQzAwMzczRTk5IC8qIG9wZW5zc2xhZGFwdGVy
LmggKi8sCiAJCQkJNDEzQTIyN0UxRkUxOERGOTAwMzczRTk5IC8qIG9wZW5zc2xhZGFwdGVyX3Vu
aXR0ZXN0LmNjICovLApAQCAtNzk3MCwxMiArODAxNiw2IEBACiAJCQkJNDEzQTIyNjMxRkUxOERF
QTAwMzczRTk5IC8qIG9wZW5zc2xzdHJlYW1hZGFwdGVyLmggKi8sCiAJCQkJNDFEREIyNUYyMTI2
NzlBMjAwMjk2RDQ3IC8qIG9wZW5zc2x1dGlsaXR5LmNjICovLAogCQkJCTQxRERCMjVCMjEyNjc5
OUYwMDI5NkQ0NyAvKiBvcGVuc3NsdXRpbGl0eS5oICovLAotCQkJCTQxM0EyMUY2MUZFMThEQjgw
MDM3M0U5OSAvKiBvcHRpb25zZmlsZS5jYyAqLywKLQkJCQk0MTNBMjFGMTFGRTE4REI2MDAzNzNF
OTkgLyogb3B0aW9uc2ZpbGUuaCAqLywKLQkJCQk0MTNBMjFDNzFGRTE4REExMDAzNzNFOTkgLyog
b3B0aW9uc2ZpbGVfdW5pdHRlc3QuY2MgKi8sCi0JCQkJNDEzQTIxRTgxRkUxOERCMjAwMzczRTk5
IC8qIHBhdGh1dGlscy5jYyAqLywKLQkJCQk0MTNBMjIzRDFGRTE4REQ5MDAzNzNFOTkgLyogcGF0
aHV0aWxzLmggKi8sCi0JCQkJNDEzQTIxOUQxRkUxOEQ4RDAwMzczRTk5IC8qIHBhdGh1dGlsc191
bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjFFOTFGRTE4REIyMDAzNzNFOTkgLyogcGh5c2ljYWxz
b2NrZXRzZXJ2ZXIuY2MgKi8sCiAJCQkJNDEzQTIyOTgxRkUxOEUwMzAwMzczRTk5IC8qIHBoeXNp
Y2Fsc29ja2V0c2VydmVyLmggKi8sCiAJCQkJNDEzQTIyN0IxRkUxOERGODAwMzczRTk5IC8qIHBo
eXNpY2Fsc29ja2V0c2VydmVyX3VuaXR0ZXN0LmNjICovLApAQCAtODEwMCw3ICs4MTQwLDYgQEAK
IAkJCQk0MTNBMjFGQzFGRTE4REJCMDAzNzNFOTkgLyogdGhyZWFkX2NoZWNrZXJfaW1wbC5jYyAq
LywKIAkJCQk0MTNBMjE1RTFGRTE4RDU5MDAzNzNFOTkgLyogdGhyZWFkX2NoZWNrZXJfaW1wbC5o
ICovLAogCQkJCTQxM0EyMUI2MUZFMThEOTgwMDM3M0U5OSAvKiB0aHJlYWRfY2hlY2tlcl91bml0
dGVzdC5jYyAqLywKLQkJCQk0MTNBMjI4QTFGRTE4REZFMDAzNzNFOTkgLyogdGhyZWFkX2Rhcndp
bi5tbSAqLywKIAkJCQk0MTNBMjIyNjFGRTE4RENEMDAzNzNFOTkgLyogdGhyZWFkX3VuaXR0ZXN0
LmNjICovLAogCQkJCTQxM0EyMjI4MUZFMThEQ0UwMDM3M0U5OSAvKiB0aW1lc3RhbXBhbGlnbmVy
LmNjICovLAogCQkJCTQxM0EyMjAxMUZFMThEQkQwMDM3M0U5OSAvKiB0aW1lc3RhbXBhbGlnbmVy
LmggKi8sCkBAIC04MTExLDggKzgxNTAsNiBAQAogCQkJCTQxM0EyMUFCMUZFMThEOTMwMDM3M0U5
OSAvKiB0cmFjZV9ldmVudC5oICovLAogCQkJCTQxM0EyMUY3MUZFMThEQjgwMDM3M0U5OSAvKiB0
eXBlX3RyYWl0cy5oICovLAogCQkJCTQxM0EyMjRDMUZFMThERTAwMDM3M0U5OSAvKiB1bml0dGVz
dF9tYWluLmNjICovLAotCQkJCTQxM0EyMjMzMUZFMThERDQwMDM3M0U5OSAvKiB1bml4ZmlsZXN5
c3RlbS5jYyAqLywKLQkJCQk0MTNBMjE0ODFGRTE4RDREMDAzNzNFOTkgLyogdW5peGZpbGVzeXN0
ZW0uaCAqLywKIAkJCQk0MTNBMjFEQTFGRTE4REFDMDAzNzNFOTkgLyogdmlydHVhbHNvY2tldF91
bml0dGVzdC5jYyAqLywKIAkJCQk0MTNBMjFCRTFGRTE4RDlDMDAzNzNFOTkgLyogdmlydHVhbHNv
Y2tldHNlcnZlci5jYyAqLywKIAkJCQk0MTNBMjE2MzFGRTE4RDVFMDAzNzNFOTkgLyogdmlydHVh
bHNvY2tldHNlcnZlci5oICovLApAQCAtODIwNSwxMSArODI0MiwxMSBAQAogCQk0MTNBRDE5RjIx
MjY1QURGMDAzRjcyNjMgLyogYWJzbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJNDEwNkQ1NkIyMTZDMkI5MTAwMUUzQzQwIC8qIHN0cmluZ3MgKi8sCiAJ
CQkJNDEzQUQxQTAyMTI2NUFGQTAwM0Y3MjYzIC8qIGFsZ29yaXRobSAqLywKIAkJCQk0MTNBRDFB
NjIxMjY1QjM1MDAzRjcyNjMgLyogYmFzZSAqLywKIAkJCQk0MUREQjI0NTIxMjY1QjgyMDAyOTZE
NDcgLyogY29udGFpbmVyICovLAogCQkJCTQxQTA4QkI2MjEyNjhBNkEwMDFENUQ3QiAvKiBtZW1v
cnkgKi8sCisJCQkJNDEwNkQ1NkIyMTZDMkI5MTAwMUUzQzQwIC8qIHN0cmluZ3MgKi8sCiAJCQkJ
NDFEREIyNEEyMTI2NUJBODAwMjk2RDQ3IC8qIHR5cGVzICovLAogCQkJKTsKIAkJCW5hbWUgPSBh
YnNsOwpAQCAtODIyOCw2ICs4MjY1LDcgQEAKIAkJNDEzQUQxQTYyMTI2NUIzNTAwM0Y3MjYzIC8q
IGJhc2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQx
RkNCQjFGMjFCMUY4MTQwMEE1REYyNyAvKiBpbnRlcm5hbCAqLywKIAkJCQk0MTNBRDFBOTIxMjY1
QjU5MDAzRjcyNjMgLyogY2FzdHMuaCAqLywKIAkJCQk0MTNBRDFBODIxMjY1QjU5MDAzRjcyNjMg
LyogZHluYW1pY19hbm5vdGF0aW9ucy5jYyAqLywKIAkJCQk0MTNBRDFBQTIxMjY1QjU5MDAzRjcy
NjMgLyogbWFjcm9zLmggKi8sCkBAIC04MjUwLDkgKzgyODgsOSBAQAogCQk0MTNFNjdBNjIxNjk4
OTM2MDBFRjM3RUQgLyogdmlkZW9fZnJhbWVfYnVmZmVyICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTNFNjdBODIxNjk4OTRDMDBFRjM3RUQgLyogUlRD
TmF0aXZlSTQyMEJ1ZmZlcitQcml2YXRlLmggKi8sCiAJCQkJNDEzRTY3QTkyMTY5ODk0QzAwRUYz
N0VEIC8qIFJUQ05hdGl2ZUk0MjBCdWZmZXIuaCAqLywKIAkJCQk0MTNFNjdBNzIxNjk4OTRCMDBF
RjM3RUQgLyogUlRDTmF0aXZlSTQyMEJ1ZmZlci5tbSAqLywKLQkJCQk0MTNFNjdBODIxNjk4OTRD
MDBFRjM3RUQgLyogUlRDTmF0aXZlSTQyMEJ1ZmZlcitQcml2YXRlLmggKi8sCiAJCQkJNDEzRTY3
QUEyMTY5ODk0QzAwRUYzN0VEIC8qIFJUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVyLmggKi8sCiAJ
CQkJNDE0NEIzRDAyMTY5ODk2NjAwNDM2M0FDIC8qIFJUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVy
Lm1tICovLAogCQkJKTsKQEAgLTgzNzAsOSArODQwOCw5IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQk0MTQ0QjNGNDIxNkIwODFCMDA0MzYzQUMgLyogUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUuaCAq
LywKIAkJCQk0MTQ0QjNGMzIxNkIwODFBMDA0MzYzQUMgLyogUlRDRW5jb2RlZEltYWdlK1ByaXZh
dGUubW0gKi8sCisJCQkJNDE4ODlENzQyMTZCQjdCNjAwNDYxNEREIC8qIFJUQ1J0cEVuY29kaW5n
UGFyYW1ldGVycytQcml2YXRlLmggKi8sCiAJCQkJNDE0RkI4NjkyMTZCQjc2NzAwMUY1NDkyIC8q
IFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5oICovLAogCQkJCTQxNEZCODZBMjE2QkI3NjgwMDFG
NTQ5MiAvKiBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMubW0gKi8sCi0JCQkJNDE4ODlENzQyMTZC
QjdCNjAwNDYxNEREIC8qIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycytQcml2YXRlLmggKi8sCiAJ
CQkJNDE0RkI4NjgyMTZCQjc2NjAwMUY1NDkyIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIr
UHJpdmF0ZS5oICovLAogCQkJCTQxNEZCODY3MjE2QkI3NjYwMDFGNTQ5MiAvKiBSVENSdHBGcmFn
bWVudGF0aW9uSGVhZGVyK1ByaXZhdGUubW0gKi8sCiAJCQkJNDE0NEIzRTcyMTY5QzVFMzAwNDM2
M0FDIC8qIFJUQ1ZpZGVvQ29kZWNJbmZvK1ByaXZhdGUuaCAqLywKQEAgLTg0NjIsMTAgKzg1MDAs
MTAgQEAKIAkJCQk0MTYyMjVEMDIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5Lm1tICovLAogCQkJCTQxNjIyNUNEMjE2OTgxODAwMEE5MUM5QiAvKiB2aWRlb19lbmNvZGVy
X2ZhY3RvcnkuaCAqLywKIAkJCQk0MTYyMjVDQzIxNjk4MTgwMDBBOTFDOUIgLyogdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5Lm1tICovLAotCQkJCTQxNjIyNUNCMjE2OTgxODAwMEE5MUM5QiAvKiB2aWRl
b19mcmFtZV9idWZmZXIuaCAqLywKLQkJCQk0MTYyMjVDRjIxNjk4MTgxMDBBOTFDOUIgLyogdmlk
ZW9fZnJhbWVfYnVmZmVyLm1tICovLAogCQkJCTQxNjIyNUNFMjE2OTgxODAwMEE5MUM5QiAvKiB2
aWRlb19mcmFtZS5oICovLAogCQkJCTQxNjIyNUQxMjE2OTgxODEwMEE5MUM5QiAvKiB2aWRlb19m
cmFtZS5tbSAqLywKKwkJCQk0MTYyMjVDQjIxNjk4MTgwMDBBOTFDOUIgLyogdmlkZW9fZnJhbWVf
YnVmZmVyLmggKi8sCisJCQkJNDE2MjI1Q0YyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1l
X2J1ZmZlci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gYXBpOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTg0ODgsOCArODUyNiw4IEBACiAJCTQxNjIyNUVBMjE2OTgxQkEwMEE5MUM5
QiAvKiBjb21wb25lbnRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQk0MTNFNjc4NzIxNjk4N0E1MDBFRjM3RUQgLyogdmlkZW9fZnJhbWVfYnVmZmVyICov
LAogCQkJCTQxNjIyNUVCMjE2OTgxQ0UwMEE5MUM5QiAvKiB2aWRlb19jb2RlYyAqLywKKwkJCQk0
MTNFNjc4NzIxNjk4N0E1MDBFRjM3RUQgLyogdmlkZW9fZnJhbWVfYnVmZmVyICovLAogCQkJKTsK
IAkJCW5hbWUgPSBjb21wb25lbnRzOwogCQkJcGF0aCA9IHNkay9vYmpjL2NvbXBvbmVudHM7CkBA
IC04NTAyLDkgKzg1NDAsOSBAQAogCQkJCTQxNjIyNUY1MjE2OTgxRjQwMEE5MUM5QiAvKiBoZWxw
ZXJzLmggKi8sCiAJCQkJNDE3OTUzQUMyMTY5ODIzRDAwMjgyNjZCIC8qIG5hbHVfcmV3cml0ZXIu
Y2MgKi8sCiAJCQkJNDExNTIxRDUyMTY5ODIyMDAwMEFCQUY3IC8qIG5hbHVfcmV3cml0ZXIuaCAq
LywKKwkJCQk0MTc5NTNCMjIxNjk4MjQxMDAyODI2NkIgLyogUlRDQ29kZWNTcGVjaWZpY0luZm9I
MjY0K1ByaXZhdGUuaCAqLywKIAkJCQk0MTYyMjVGMTIxNjk4MUYzMDBBOTFDOUIgLyogUlRDQ29k
ZWNTcGVjaWZpY0luZm9IMjY0LmggKi8sCiAJCQkJNDE2MjI1RUQyMTY5ODFGMjAwQTkxQzlCIC8q
IFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5tbSAqLywKLQkJCQk0MTc5NTNCMjIxNjk4MjQxMDAy
ODI2NkIgLyogUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0K1ByaXZhdGUuaCAqLywKIAkJCQk0MTc5
NTNCMzIxNjk4MjQyMDAyODI2NkIgLyogUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaCAq
LywKIAkJCQk0MTc5NTNBRDIxNjk4MjNFMDAyODI2NkIgLyogUlRDRGVmYXVsdFZpZGVvRGVjb2Rl
ckZhY3RvcnkubSAqLywKIAkJCQk0MTYyMjVGNzIxNjk4MUY0MDBBOTFDOUIgLyogUlRDRGVmYXVs
dFZpZGVvRW5jb2RlckZhY3RvcnkuaCAqLywKQEAgLTg1NDUsMTEgKzg1ODMsMTEgQEAKIAkJNDE3
OTUzREQyMTY5ODNCMjAwMjgyNjZCIC8qIGluY2x1ZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQxNzk1M0UwMjE2OTgzQzkwMDI4MjY2QiAvKiBtb2R1
bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oICovLAorCQkJCTQxNzk1M0RGMjE2OTgzQzkwMDI4MjY2
QiAvKiBtb2R1bGUuaCAqLywKIAkJCQk0MTc5NTNFMTIxNjk4M0NBMDAyODI2NkIgLyogbW9kdWxl
X2NvbW1vbl90eXBlcy5jYyAqLywKIAkJCQk0MTc5NTNFMjIxNjk4M0NBMDAyODI2NkIgLyogbW9k
dWxlX2NvbW1vbl90eXBlcy5oICovLAorCQkJCTQxNzk1M0UwMjE2OTgzQzkwMDI4MjY2QiAvKiBt
b2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oICovLAogCQkJCTQxNzk1M0RFMjE2OTgzQzkwMDI4
MjY2QiAvKiBtb2R1bGVfZmVjX3R5cGVzLmggKi8sCi0JCQkJNDE3OTUzREYyMTY5ODNDOTAwMjgy
NjZCIC8qIG1vZHVsZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpbmNsdWRlOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTg1NzIsNyArODYxMCw3IEBACiAJCQkJNDEzRTY3OUMyMTY5
ODg5NDAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5oICovLAogCQkJCTQx
M0U2NzlGMjE2OTg4OTUwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMubSAq
LywKIAkJCQk0MTNFNjc4MzIxNjk4NzdEMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGlu
Z3MuaCAqLywKLQkJCQk0MTNFNjc4NDIxNjk4NzdEMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVy
U2V0dGluZ3MubW0gKi8sCisJCQkJNDFGQ0JCODcyMUIyMDBEQjAwQTVERjI3IC8qIFJUQ1ZpZGVv
RW5jb2RlclNldHRpbmdzLm0gKi8sCiAJCQkJNDEzRTY3OEMyMTY5ODdEQjAwRUYzN0VEIC8qIFJU
Q1ZpZGVvRnJhbWUuaCAqLywKIAkJCQk0MTNFNjc4RDIxNjk4N0RCMDBFRjM3RUQgLyogUlRDVmlk
ZW9GcmFtZS5tbSAqLywKIAkJCQk0MTNFNjc4RTIxNjk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9G
cmFtZUJ1ZmZlci5oICovLApAQCAtODU5NSwxMSArODYzMywxMSBAQAogCQk0MTc5NTNGQzIxNjk4
NEY0MDAyODI2NkIgLyogdmlkZW9fY29kZWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCTQxM0U2NzY0MjE2OTg1NDUwMEVGMzdFRCAvKiBSVENWaWRlb0Vu
Y29kZXJWUDgubW0gKi8sCiAJCQkJNDE3OTUzRkQyMTY5ODUxRjAwMjgyNjZCIC8qIFJUQ1ZpZGVv
Q29kZWNDb25zdGFudHMuaCAqLywKIAkJCQk0MTc5NTNGRjIxNjk4NTFGMDAyODI2NkIgLyogUlRD
VmlkZW9Db2RlY0NvbnN0YW50cy5tbSAqLywKIAkJCQk0MTc5NTQwMjIxNjk4NTIwMDAyODI2NkIg
LyogUlRDVmlkZW9EZWNvZGVyVlA4Lm1tICovLAogCQkJCTQxNzk1NDAxMjE2OTg1MUYwMDI4MjY2
QiAvKiBSVENWaWRlb0VuY29kZXJWUDguaCAqLywKKwkJCQk0MTNFNjc2NDIxNjk4NTQ1MDBFRjM3
RUQgLyogUlRDVmlkZW9FbmNvZGVyVlA4Lm1tICovLAogCQkJCTQxNzk1M0ZFMjE2OTg1MUYwMDI4
MjY2QiAvKiBSVENXcmFwcGVkTmF0aXZlVmlkZW9EZWNvZGVyLmggKi8sCiAJCQkJNDE3OTU0MDMy
MTY5ODUyMDAwMjgyNjZCIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIubW0gKi8sCiAJ
CQkJNDE3OTU0MDQyMTY5ODUyMDAwMjgyNjZCIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29k
ZXIuaCAqLywKQEAgLTg3NTIsMTIgKzg3OTAsMjAgQEAKIAkJNDE5MjQxNjUyMTI3Mzg3OTAwNjM0
RkNGIC8qIGV4cGVyaW1lbnRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk0MUY5QkZDOTIwNTFEREEyMDBBQkYwQjkgLyogYWxyX2V4cGVyaW1lbnQuY2Mg
Ki8sCisJCQkJNDFGOUJGQ0EyMDUxRERBMjAwQUJGMEI5IC8qIGFscl9leHBlcmltZW50LmggKi8s
CiAJCQkJNDE5MjQxNkIyMTI3Mzg5QjAwNjM0RkNGIC8qIGNvbmdlc3Rpb25fY29udHJvbGxlcl9l
eHBlcmltZW50LmNjICovLAogCQkJCTQxOTI0MTY3MjEyNzM4OUEwMDYzNEZDRiAvKiBjb25nZXN0
aW9uX2NvbnRyb2xsZXJfZXhwZXJpbWVudC5oICovLAorCQkJCTQxRkNCQjREMjFCMUZFNDUwMEE1
REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5jYyAqLywKKwkJCQk0MUZDQkI0QjIxQjFGRTQ0
MDBBNURGMjcgLyogY3B1X3NwZWVkX2V4cGVyaW1lbnQuaCAqLywKIAkJCQk0MTkyNDE2ODIxMjcz
ODlBMDA2MzRGQ0YgLyogZmllbGRfdHJpYWxfcGFyc2VyLmNjICovLAogCQkJCTQxOTI0MTY5MjEy
NzM4OUIwMDYzNEZDRiAvKiBmaWVsZF90cmlhbF9wYXJzZXIuaCAqLywKIAkJCQk0MTkyNDFFNjIx
Mjc1QTc2MDA2MzRGQ0YgLyogZmllbGRfdHJpYWxfdW5pdHMuY2MgKi8sCiAJCQkJNDE5MjQxRTUy
MTI3NUE3NjAwNjM0RkNGIC8qIGZpZWxkX3RyaWFsX3VuaXRzLmggKi8sCisJCQkJNDFGQ0JCNEMy
MUIxRkU0NDAwQTVERjI3IC8qIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjICovLAor
CQkJCTQxRkNCQjRFMjFCMUZFNDUwMEE1REYyNyAvKiBqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJp
bWVudC5oICovLAorCQkJCTQxRkNCQjUwMjFCMUZFNDUwMEE1REYyNyAvKiBub3JtYWxpemVfc2lt
dWxjYXN0X3NpemVfZXhwZXJpbWVudC5jYyAqLywKKwkJCQk0MUZDQkI0RjIxQjFGRTQ1MDBBNURG
MjcgLyogbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuaCAqLywKIAkJCQk0MTky
NDE2QTIxMjczODlCMDA2MzRGQ0YgLyogcXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnQuY2MgKi8s
CiAJCQkJNDE5MjQxNjYyMTI3Mzg5QTAwNjM0RkNGIC8qIHF1YWxpdHlfc2NhbGluZ19leHBlcmlt
ZW50LmggKi8sCiAJCQkJNDE3OTUzRTgyMTY5ODNGMTAwMjgyNjZCIC8qIHJ0dF9tdWx0X2V4cGVy
aW1lbnQuY2MgKi8sCkBAIC04OTM4LDYgKzg5ODQsOCBAQAogCQkJCTQxOUM4MzRDMUZFMjQ2NjQw
MDQwQzMwRiAvKiBoaXN0b2dyYW1fcGVyY2VudGlsZV9jb3VudGVyLmggKi8sCiAJCQkJNDE5Qzgz
NEQxRkUyNDY2NDAwNDBDMzBGIC8qIG1hdGh1dGlscy5oICovLAogCQkJCTQxOUM4MzRBMUZFMjQ2
NjQwMDQwQzMwRiAvKiBtb2Rfb3BzLmggKi8sCisJCQkJNDFGQ0JCMTMyMUIxRjdBQTAwQTVERjI3
IC8qIG1vdmluZ19hdmVyYWdlLmNjICovLAorCQkJCTQxRkNCQjE0MjFCMUY3QUEwMEE1REYyNyAv
KiBtb3ZpbmdfYXZlcmFnZS5oICovLAogCQkJCTQxOUM4MzQ5MUZFMjQ2NjQwMDQwQzMwRiAvKiBt
b3ZpbmdfbWF4X2NvdW50ZXIuaCAqLywKIAkJCQk0MTlDODM0NjFGRTI0NjYzMDA0MEMzMEYgLyog
bW92aW5nX21lZGlhbl9maWx0ZXIuaCAqLywKIAkJCQk0MTlDODM0MjFGRTI0NjYyMDA0MEMzMEYg
LyogcGVyY2VudGlsZV9maWx0ZXIuaCAqLywKQEAgLTkxNTksMTQgKzkyMDcsMTUgQEAKIAkJNDFB
MDhCRDkyMTI3MkYzRTAwMUQ1RDdCIC8qIGFnYzIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTQxMjk5Qjk4MjEyNzM2QjIwMEIzNDE0QiAvKiBybm5fdmFk
ICovLAogCQkJCTQxRDZCNDZFMjEyNzMxQTQwMDhGOTM1MyAvKiBhZGFwdGl2ZV9hZ2MuY2MgKi8s
CiAJCQkJNDFENkI0NjQyMTI3MzFBMjAwOEY5MzUzIC8qIGFkYXB0aXZlX2FnYy5oICovLAogCQkJ
CTQxQTA4QkU0MjEyNzJGODUwMDFENUQ3QiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGll
ci5jYyAqLywKIAkJCQk0MUEwOEJEQjIxMjcyRjg0MDAxRDVEN0IgLyogYWRhcHRpdmVfZGlnaXRh
bF9nYWluX2FwcGxpZXIuaCAqLywKLQkJCQk0MUEwOEJFOTIxMjcyRjg2MDAxRDVEN0IgLyogYWRh
cHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmNjICovLAotCQkJCTQxRDZCNDYyMjEyNzMx
QTEwMDhGOTM1MyAvKiBhZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuaCAqLywKIAkJ
CQk0MUQ2QjQ1RjIxMjczMUExMDA4RjkzNTMgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0
b3IuY2MgKi8sCiAJCQkJNDFBMDhCREMyMTI3MkY4NDAwMUQ1RDdCIC8qIGFkYXB0aXZlX21vZGVf
bGV2ZWxfZXN0aW1hdG9yLmggKi8sCisJCQkJNDFBMDhCRTkyMTI3MkY4NjAwMUQ1RDdCIC8qIGFk
YXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5jYyAqLywKKwkJCQk0MUQ2QjQ2MjIxMjcz
MUExMDA4RjkzNTMgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmggKi8sCiAJ
CQkJNDEzRTY3OUEyMTY5ODg2MjAwRUYzN0VEIC8qIGFnYzJfY29tbW9uLmNjICovLAogCQkJCTQx
RDZCNDZEMjEyNzMxQTQwMDhGOTM1MyAvKiBhZ2MyX2NvbW1vbi5oICovLAogCQkJCTQxRDZCNDVF
MjEyNzMxQTAwMDhGOTM1MyAvKiBiaXF1YWRfZmlsdGVyLmNjICovLApAQCAtOTE3NywxOSArOTIy
NiwxNCBAQAogCQkJCTQxRDZCNDYwMjEyNzMxQTEwMDhGOTM1MyAvKiBkb3duX3NhbXBsZXIuaCAq
LywKIAkJCQk0MUEwOEJFNTIxMjcyRjg2MDAxRDVEN0IgLyogZml4ZWRfZGlnaXRhbF9sZXZlbF9l
c3RpbWF0b3IuY2MgKi8sCiAJCQkJNDFBMDhCREYyMTI3MkY4NDAwMUQ1RDdCIC8qIGZpeGVkX2Rp
Z2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmggKi8sCi0JCQkJNDFENkI0NjUyMTI3MzFBMjAwOEY5MzUz
IC8qIGZpeGVkX2dhaW5fY29udHJvbGxlci5jYyAqLywKLQkJCQk0MUQ2QjQ2NzIxMjczMUEzMDA4
RjkzNTMgLyogZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmggKi8sCiAJCQkJNDFBMDhCREUyMTI3MkY4
NDAwMUQ1RDdCIC8qIGdhaW5fYXBwbGllci5jYyAqLywKIAkJCQk0MUEwOEJFNzIxMjcyRjg2MDAx
RDVEN0IgLyogZ2Fpbl9hcHBsaWVyLmggKi8sCi0JCQkJNDFBMDhCRTAyMTI3MkY4NTAwMUQ1RDdC
IC8qIGdhaW5fY3VydmVfYXBwbGllci5jYyAqLywKLQkJCQk0MUQ2QjQ2OTIxMjczMUEzMDA4Rjkz
NTMgLyogZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmggKi8sCiAJCQkJNDFBMDhCRTEyMTI3MkY4NTAwMUQ1
RDdCIC8qIGludGVycG9sYXRlZF9nYWluX2N1cnZlLmNjICovLAogCQkJCTQxRDZCNDcwMjEyNzMx
QTYwMDhGOTM1MyAvKiBsaW1pdGVyLmNjICovLAogCQkJCTQxQTA4QkVBMjEyNzJGODYwMDFENUQ3
QiAvKiBsaW1pdGVyLmggKi8sCiAJCQkJNDFENkI0NjEyMTI3MzFBMTAwOEY5MzUzIC8qIG5vaXNl
X2xldmVsX2VzdGltYXRvci5jYyAqLywKIAkJCQk0MUQ2QjQ2QTIxMjczMUEzMDA4RjkzNTMgLyog
bm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmNjICovLAogCQkJCTQxQTA4QkUyMjEyNzJGODUwMDFE
NUQ3QiAvKiBub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuaCAqLywKLQkJCQk0MTI5OUI5ODIxMjcz
NkIyMDBCMzQxNEIgLyogcm5uX3ZhZCAqLywKIAkJCQk0MUQ2QjQ2ODIxMjczMUEzMDA4RjkzNTMg
Lyogc2F0dXJhdGlvbl9wcm90ZWN0b3IuY2MgKi8sCiAJCQkJNDFENkI0NkIyMTI3MzFBMzAwOEY5
MzUzIC8qIHNhdHVyYXRpb25fcHJvdGVjdG9yLmggKi8sCiAJCQkJNDFENkI0NkYyMTI3MzFBNDAw
OEY5MzUzIC8qIHNpZ25hbF9jbGFzc2lmaWVyLmNjICovLApAQCAtOTYyNywxMCArOTY3MSwxMSBA
QAogCQkJCTQxRTAyQzk5MjEyNzM1MkIwMEMyN0NENiAvKiBhbHJfZGV0ZWN0b3IuaCAqLywKIAkJ
CQk0MUUwMkM5QTIxMjczNTJCMDBDMjdDRDYgLyogYml0cmF0ZV9lc3RpbWF0b3IuY2MgKi8sCiAJ
CQkJNDFFMDJDOTgyMTI3MzUyQjAwQzI3Q0Q2IC8qIGJpdHJhdGVfZXN0aW1hdG9yLmggKi8sCisJ
CQkJNDFGQ0JCM0YyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNr
X2NvbnRyb2xsZXIuY2MgKi8sCisJCQkJNDFGQ0JCM0UyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdl
c3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCAqLywKIAkJCQk0MUUwMkM5MTIxMjcz
NTI5MDBDMjdDRDYgLyogZGVsYXlfYmFzZWRfYndlLmNjICovLAogCQkJCTQxRTAyQzk3MjEyNzM1
MkEwMEMyN0NENiAvKiBkZWxheV9iYXNlZF9id2UuaCAqLywKIAkJCQk0MUUwMkNBMzIxMjczNTJE
MDBDMjdDRDYgLyogZGVsYXlfaW5jcmVhc2VfZGV0ZWN0b3JfaW50ZXJmYWNlLmggKi8sCi0JCQkJ
NDFFMDJDOTUyMTI3MzUyQTAwQzI3Q0Q2IC8qIGdvb2dfY2NfZmFjdG9yeS5jYyAqLywKIAkJCQk0
MUUwMkNBMjIxMjczNTJDMDBDMjdDRDYgLyogZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuY2MgKi8s
CiAJCQkJNDFFMDJDOTYyMTI3MzUyQTAwQzI3Q0Q2IC8qIGdvb2dfY2NfbmV0d29ya19jb250cm9s
LmggKi8sCiAJCQkJNDFFMDJDOUQyMTI3MzUyQjAwQzI3Q0Q2IC8qIG1lZGlhbl9zbG9wZV9lc3Rp
bWF0b3IuY2MgKi8sCkBAIC05NjUwLDYgKzk2OTUsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
NDFFMDJDQzcyMTI3MzVCNjAwQzI3Q0Q2IC8qIGJpdHJhdGVfc2V0dGluZ3MuY2MgKi8sCiAJCQkJ
NDFFMDJDQ0IyMTI3MzVCNzAwQzI3Q0Q2IC8qIGJpdHJhdGVfc2V0dGluZ3MuaCAqLywKKwkJCQk0
MUZDQkI1RTIxQjFGRUM0MDBBNURGMjcgLyogZ29vZ19jY19mYWN0b3J5LmNjICovLAorCQkJCTQx
RkNCQjVEMjFCMUZFQzQwMEE1REYyNyAvKiBnb29nX2NjX2ZhY3RvcnkuaCAqLywKIAkJCQk0MUUw
MkNDQTIxMjczNUI3MDBDMjdDRDYgLyogbmV0d29ya19jb250cm9sLmggKi8sCiAJCQkJNDFFMDJD
QzgyMTI3MzVCNzAwQzI3Q0Q2IC8qIG5ldHdvcmtfdHlwZXMuY2MgKi8sCiAJCQkJNDFFMDJDQzky
MTI3MzVCNzAwQzI3Q0Q2IC8qIG5ldHdvcmtfdHlwZXMuaCAqLywKQEAgLTk2NjAsOCArOTcwNyw4
IEBACiAJCTQxRTAyQ0Q1MjEyNzM2MjMwMEMyN0NENiAvKiBydHAgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQxRTAyQ0Q2MjEyNzM2M0MwMEMyN0NENiAv
KiBwYWNlcl9jb250cm9sbGVyLmNjICovLAotCQkJCTQxOTI0MTg5MjEyNzQ5QzgwMDYzNEZDRiAv
KiBwYWNlcl9jb250cm9sbGVyLmggKi8sCisJCQkJNDFGQ0JCMzUyMUIxRjhGQzAwQTVERjI3IC8q
IGNvbnRyb2xfaGFuZGxlci5jYyAqLywKKwkJCQk0MUZDQkIzNDIxQjFGOEZCMDBBNURGMjcgLyog
Y29udHJvbF9oYW5kbGVyLmggKi8sCiAJCQkJNDE5MjQxODgyMTI3NDlDNzAwNjM0RkNGIC8qIHNl
bmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgKi8sCiAJCQkJNDFFMDJDRDgyMTI3MzYz
RDAwQzI3Q0Q2IC8qIHNlbmRfdGltZV9oaXN0b3J5LmNjICovLAogCQkJCTQxOTI0MTg3MjEyNzQ5
QzcwMDYzNEZDRiAvKiBzZW5kX3RpbWVfaGlzdG9yeS5oICovLApAQCAtOTg3Nyw2ICs5OTI0LDgg
QEAKIAkJCQk0MUYyNjNBQjIxMjY4MEE4MDAyNzRGNTkgLyogYXJjaC5oICovLAogCQkJCTQxRjI2
M0E5MjEyNjgwQTcwMDI3NEY1OSAvKiBhc21fZGVmaW5lcy5oICovLAogCQkJCTQxRjI2M0E4MjEy
NjgwQTcwMDI3NEY1OSAvKiBCVUlMRC5nbiAqLywKKwkJCQk0MUZDQkI3NDIxQjFGRkE0MDBBNURG
MjcgLyogY29jb2FfdGhyZWFkaW5nLmggKi8sCisJCQkJNDFGQ0JCNzMyMUIxRkZBNDAwQTVERjI3
IC8qIGNvY29hX3RocmVhZGluZy5tbSAqLywKIAkJCQk0MUYyNjNBNTIxMjY4MEE3MDAyNzRGNTkg
LyogZmFsbHRocm91Z2guaCAqLywKIAkJCQk0MUYyNjNBMzIxMjY4MEE2MDAyNzRGNTkgLyogZmls
ZV93cmFwcGVyLmNjICovLAogCQkJCTQxRjI2M0FBMjEyNjgwQTgwMDI3NEY1OSAvKiBmaWxlX3dy
YXBwZXIuaCAqLywKQEAgLTk5MDMsOSArOTk1Miw5IEBACiAJCTQxRjQxMUJEMUVGOERCODIwMDM0
M0MyNiAvKiB2cDggKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTQxNDVGNjE1MUZFMUVGNUMwMEVCOUNBRiAvKiBpbmNsdWRlICovLAogCQkJCTQxOUM4NDJC
MUZFMjRFN0UwMDQwQzMwRiAvKiBkZWZhdWx0X3RlbXBvcmFsX2xheWVycy5jYyAqLywKIAkJCQk0
MTlDODQzMTFGRTI0RTgwMDA0MEMzMEYgLyogZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuaCAqLywK
LQkJCQk0MTQ1RjYxNTFGRTFFRjVDMDBFQjlDQUYgLyogaW5jbHVkZSAqLywKIAkJCQk0MTNFNjc3
MTIxNjk4NjNCMDBFRjM3RUQgLyogbGlidnB4X2ludGVyZmFjZS5jYyAqLywKIAkJCQk0MTNFNjc2
RjIxNjk4NjNBMDBFRjM3RUQgLyogbGlidnB4X2ludGVyZmFjZS5oICovLAogCQkJCTQxMjk0MDkw
MjEyRTEyOEMwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2RlY29kZXIuY2MgKi8sCkBAIC05OTE0LDkg
Kzk5NjMsOCBAQAogCQkJCTQxMjk0MDhGMjEyRTEyOEMwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2Vu
Y29kZXIuaCAqLywKIAkJCQk0MTlDODQzMDFGRTI0RTdGMDA0MEMzMEYgLyogc2NyZWVuc2hhcmVf
bGF5ZXJzLmNjICovLAogCQkJCTQxOUM4NDJDMUZFMjRFN0YwMDQwQzMwRiAvKiBzY3JlZW5zaGFy
ZV9sYXllcnMuaCAqLywKLQkJCQk0MTNFNjc2RTIxNjk4NjNBMDBFRjM3RUQgLyogdGVtcG9yYWxf
bGF5ZXJzX2NoZWNrZXIuY2MgKi8sCiAJCQkJNDE5Qzg0MzMxRkUyNEU4MDAwNDBDMzBGIC8qIHRl
bXBvcmFsX2xheWVycy5oICovLAotCQkJCTQxM0U2NzcwMjE2OTg2M0IwMEVGMzdFRCAvKiB2cDhf
dGVtcG9yYWxfbGF5ZXJzLmNjICovLAorCQkJCTQxM0U2NzZFMjE2OTg2M0EwMEVGMzdFRCAvKiB0
ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYyAqLywKIAkJCSk7CiAJCQluYW1lID0gdnA4OwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEwMDM3LDEzICsxMDA4NSw0NCBAQAogCQkJbmFt
ZSA9IGluY2x1ZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk0MUY5QkZD
ODIwNTFERDhFMDBBQkYwQjkgLyogZXhwZXJpbWVudHMgKi8gPSB7CisJCTQxRkNCQjFGMjFCMUY4
MTQwMEE1REYyNyAvKiBpbnRlcm5hbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJNDFGOUJGQzkyMDUxRERBMjAwQUJGMEI5IC8qIGFscl9leHBlcmltZW50
LmNjICovLAotCQkJCTQxRjlCRkNBMjA1MUREQTIwMEFCRjBCOSAvKiBhbHJfZXhwZXJpbWVudC5o
ICovLAorCQkJCTQxRkNCQjIwMjFCMUY4MkUwMEE1REYyNyAvKiB0aHJvd19kZWxlZ2F0ZS5jYyAq
LywKKwkJCQk0MUZDQkIyMTIxQjFGODJGMDBBNURGMjcgLyogdGhyb3dfZGVsZWdhdGUuaCAqLywK
IAkJCSk7Ci0JCQluYW1lID0gZXhwZXJpbWVudHM7CisJCQluYW1lID0gaW50ZXJuYWw7CisJCQlw
YXRoID0gYmFzZS9pbnRlcm5hbDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJ
CTQxRkNCQjI0MjFCMUY4NUQwMEE1REYyNyAvKiBuZXR3b3JrICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0MUZDQkIyNTIxQjFGODdFMDBBNURGMjcgLyog
c2VudF9wYWNrZXQuY2MgKi8sCisJCQkJNDFGQ0JCMjYyMUIxRjg3RTAwQTVERjI3IC8qIHNlbnRf
cGFja2V0LmggKi8sCisJCQkpOworCQkJbmFtZSA9IG5ldHdvcms7CisJCQlwYXRoID0gcnRjX2Jh
c2UvbmV0d29yazsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTQxRkNCQjI5
MjFCMUY4QTMwMEE1REYyNyAvKiBjcnlwdG8gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTQxRkNCQjJEMjFCMUY4QjYwMEE1REYyNyAvKiBjcnlwdG9vcHRp
b25zLmNjICovLAorCQkJCTQxRkNCQjJBMjFCMUY4QjYwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25z
LmggKi8sCisJCQkJNDFGQ0JCMkIyMUIxRjhCNjAwQTVERjI3IC8qIGZyYW1lZGVjcnlwdG9yaW50
ZXJmYWNlLmggKi8sCisJCQkJNDFGQ0JCMkMyMUIxRjhCNjAwQTVERjI3IC8qIGZyYW1lZW5jcnlw
dG9yaW50ZXJmYWNlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGNyeXB0bzsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTQxRkNCQjgxMjFCMjAwNUEwMEE1REYyNyAvKiBpbnRl
cm5hbCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDFG
Q0JCODIyMUIyMDA3QjAwQTVERjI3IC8qIG1lbXV0aWwuY2MgKi8sCisJCQkJNDFGQ0JCODMyMUIy
MDA3QjAwQTVERjI3IC8qIG1lbXV0aWwuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW50ZXJuYWw7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQk0MUZFODY0RTIxNUM1MkU5MDBC
NjJDMDcgLyogbGlzdGZtdHMgKi8gPSB7CkBAIC0xMDg1MywxMiArMTA5MzIsMTIgQEAKIAkJNUM0
QjRCNTgxRTQzMUM0OTAwMjY1MUM4IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCTQxNDRCM0VDMjE2OUM2MUMwMDQzNjNBQyAvKiBoZWxwZXJz
ICovLAogCQkJCTQxNzk1M0ZCMjE2OTg0REMwMDI4MjY2QiAvKiBhcGkgKi8sCiAJCQkJNDE3OTUz
RjIyMTY5ODQ4MzAwMjgyNjZCIC8qIGJhc2UgKi8sCiAJCQkJNDE2MjI1RUEyMTY5ODFCQTAwQTkx
QzlCIC8qIGNvbXBvbmVudHMgKi8sCi0JCQkJNDE2MjI1QzcyMTY5ODE0MTAwQTkxQzlCIC8qIG5h
dGl2ZSAqLywKIAkJCQk1QzRCNEI1OTFFNDMxQzU1MDAyNjUxQzggLyogRnJhbWV3b3JrICovLAor
CQkJCTQxNDRCM0VDMjE2OUM2MUMwMDQzNjNBQyAvKiBoZWxwZXJzICovLAorCQkJCTQxNjIyNUM3
MjE2OTgxNDEwMEE5MUM5QiAvKiBuYXRpdmUgKi8sCiAJCQkpOwogCQkJbmFtZSA9IG9iamM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTA4OTQsNyArMTA5NzMsNiBAQAogCQkJCTVD
NEI0QzEwMUU0MzFGNzUwMDI2NTFDOCAvKiBiaXRyYXRlX2FkanVzdGVyLmNjICovLAogCQkJCTVD
NEI0QzEyMUU0MzFGNzUwMDI2NTFDOCAvKiBpNDIwX2J1ZmZlcl9wb29sLmNjICovLAogCQkJCTVD
NEI0QzEzMUU0MzFGNzUwMDI2NTFDOCAvKiBpbmNvbWluZ192aWRlb19zdHJlYW0uY2MgKi8sCi0J
CQkJNUM0QjRDMTYxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX2ZyYW1lLmNjICovLAogCQkJCTVD
NEI0QzE1MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZV9idWZmZXIuY2MgKi8sCiAJCQkJ
NUM0QjRDMTcxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX3JlbmRlcl9mcmFtZXMuY2MgKi8sCiAJ
CQkJNUM0QjRDMTgxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX3JlbmRlcl9mcmFtZXMuaCAqLywK
QEAgLTExMDk3LDE3ICsxMTE3NSwyNSBAQAogCQk1QzYzRjhFMjFFNDE3MzJCMDAyQ0E1MzEgLyog
YXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0MUY5
QkY3OTIwNTFDN0ZEMDBBQkYwQjkgLyogYXJyYXlfdmlldy5oICovLAogCQkJCTVDRDI4NTNCMUU2
QTYxQkUwMDk0RkRDOCAvKiBhdWRpb19jb2RlY3MgKi8sCisJCQkJNUNERDhDNDUxRTQzQzU3OTAw
NjIxRTkyIC8qIGNhbGwgKi8sCisJCQkJNDFGQ0JCMjkyMUIxRjhBMzAwQTVERjI3IC8qIGNyeXB0
byAqLywKKwkJCQk0MTQ1RTRDMDFFRjg5NjI4MDBGQ0Y2RTYgLyogc3RhdHMgKi8sCisJCQkJNDFF
MDJDQzYyMTI3MzU5RjAwQzI3Q0Q2IC8qIHRyYW5zcG9ydCAqLywKKwkJCQk0MTkyNDFENDIxMjc1
QTE4MDA2MzRGQ0YgLyogdW5pdHMgKi8sCisJCQkJNUNEMjg0NjAxRTZBNTdERDAwOTRGREM4IC8q
IHZpZGVvICovLAorCQkJCTQxMjQ1NTU4MUVGODhBRDkwMEYxMTgwOSAvKiB2aWRlb19jb2RlY3Mg
Ki8sCisJCQkJNDFGOUJGNzkyMDUxQzdGRDAwQUJGMEI5IC8qIGFycmF5X3ZpZXcuaCAqLywKIAkJ
CQk0MTVGMUZDQTIxMjczMEYwMDAwNjRDQkYgLyogYXVkaW9fZnJhbWUuY2MgKi8sCiAJCQkJNDE1
RjFGQ0IyMTI3MzBGMDAwMDY0Q0JGIC8qIGF1ZGlvX2ZyYW1lLmggKi8sCiAJCQkJNDE1RjFGQzky
MTI3MzBGMDAwMDY0Q0JGIC8qIGF1ZGlvX21peGVyLmggKi8sCiAJCQkJNDFGMjYzNzUyMTI2N0I3
NjAwMjc0RjU5IC8qIGF1ZGlvX29wdGlvbnMuY2MgKi8sCiAJCQkJNDFGMjYzNzgyMTI2N0I3NjAw
Mjc0RjU5IC8qIGF1ZGlvX29wdGlvbnMuaCAqLywKIAkJCQk0MUYyNjM3OTIxMjY3Qjc3MDAyNzRG
NTkgLyogYml0cmF0ZV9jb25zdHJhaW50cy5oICovLAotCQkJCTVDREQ4QzQ1MUU0M0M1NzkwMDYy
MUU5MiAvKiBjYWxsICovLAogCQkJCTQxOUM4MzBFMUZFMjQyN0YwMDQwQzMwRiAvKiBjYW5kaWRh
dGUuY2MgKi8sCiAJCQkJNDFGOUJGNzcyMDUxQzdGRDAwQUJGMEI5IC8qIGNhbmRpZGF0ZS5oICov
LAorCQkJCTQxRkNCQjA5MjFCMUY1MzAwMEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25f
ZmFjdG9yeS5jYyAqLywKKwkJCQk0MUZDQkIwRDIxQjFGNTM2MDBBNURGMjcgLyogY3JlYXRlX3Bl
ZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCAqLywKIAkJCQk0MUY5QkY4MjIwNTFDODAwMDBBQkYwQjkg
LyogY3J5cHRvcGFyYW1zLmggKi8sCiAJCQkJNDFGMjYzNzcyMTI2N0I3NjAwMjc0RjU5IC8qIGRh
dGFjaGFubmVsaW50ZXJmYWNlLmNjICovLAogCQkJCTVDNjNGOEU3MUU0MTczN0IwMDJDQTUzMSAv
KiBkYXRhY2hhbm5lbGludGVyZmFjZS5oICovLApAQCAtMTExMTksNiArMTEyMDUsOCBAQAogCQkJ
CTQxRjI2MzdCMjEyNjdCNzcwMDI3NEY1OSAvKiBqc2VwaWNlY2FuZGlkYXRlLmNjICovLAogCQkJ
CTVDNjNGOEYxMUU0MTczN0IwMDJDQTUzMSAvKiBqc2VwaWNlY2FuZGlkYXRlLmggKi8sCiAJCQkJ
NUM2M0Y4RjMxRTQxNzM3QjAwMkNBNTMxIC8qIGpzZXBzZXNzaW9uZGVzY3JpcHRpb24uaCAqLywK
KwkJCQk0MUZDQkIwQzIxQjFGNTMyMDBBNURGMjcgLyogbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFj
ZS5jYyAqLywKKwkJCQk0MUZDQkIwQTIxQjFGNTMxMDBBNURGMjcgLyogbWVkaWFfdHJhbnNwb3J0
X2ludGVyZmFjZS5oICovLAogCQkJCTVDNjNGOEY2MUU0MTczN0IwMDJDQTUzMSAvKiBtZWRpYWNv
bnN0cmFpbnRzaW50ZXJmYWNlLmNjICovLAogCQkJCTVDNjNGOEY3MUU0MTczN0IwMDJDQTUzMSAv
KiBtZWRpYWNvbnN0cmFpbnRzaW50ZXJmYWNlLmggKi8sCiAJCQkJNUNEMjg2M0YxRTZBNjgzQTAw
OTRGREM4IC8qIG1lZGlhc3RyZWFtaW50ZXJmYWNlLmNjICovLApAQCAtMTExNDgsMTYgKzExMjM2
LDEyIEBACiAJCQkJNUM2M0Y5MUIxRTQxNzM3QjAwMkNBNTMxIC8qIHJ0cHNlbmRlcmludGVyZmFj
ZS5oICovLAogCQkJCTQxRjI2MzdDMjEyNjdCNzcwMDI3NEY1OSAvKiBydHB0cmFuc2NlaXZlcmlu
dGVyZmFjZS5jYyAqLywKIAkJCQk0MUY5QkY4MDIwNTFDN0ZGMDBBQkYwQjkgLyogcnRwdHJhbnNj
ZWl2ZXJpbnRlcmZhY2UuaCAqLywKKwkJCQk0MUZDQkIwQjIxQjFGNTMyMDBBNURGMjcgLyogc2Nv
cGVkX3JlZnB0ci5oICovLAogCQkJCTQxRjlCRjg0MjA1MUM4MDAwMEFCRjBCOSAvKiBzZXRyZW1v
dGVkZXNjcmlwdGlvbm9ic2VydmVyaW50ZXJmYWNlLmggKi8sCi0JCQkJNDE0NUU0QzAxRUY4OTYy
ODAwRkNGNkU2IC8qIHN0YXRzICovLAogCQkJCTVDNjNGOTIxMUU0MTczN0IwMDJDQTUzMSAvKiBz
dGF0c3R5cGVzLmNjICovLAogCQkJCTVDNjNGOTIyMUU0MTczN0IwMDJDQTUzMSAvKiBzdGF0c3R5
cGVzLmggKi8sCi0JCQkJNDFFMDJDQzYyMTI3MzU5RjAwQzI3Q0Q2IC8qIHRyYW5zcG9ydCAqLywK
IAkJCQk0MUY5QkY4MzIwNTFDODAwMDBBQkYwQjkgLyogdHVybmN1c3RvbWl6ZXIuaCAqLywKIAkJ
CQk1QzYzRjkyNDFFNDE3MzdCMDAyQ0E1MzEgLyogdW1hbWV0cmljcy5oICovLAotCQkJCTQxOTI0
MUQ0MjEyNzVBMTgwMDYzNEZDRiAvKiB1bml0cyAqLywKLQkJCQk1Q0QyODQ2MDFFNkE1N0REMDA5
NEZEQzggLyogdmlkZW8gKi8sCi0JCQkJNDEyNDU1NTgxRUY4OEFEOTAwRjExODA5IC8qIHZpZGVv
X2NvZGVjcyAqLywKIAkJCQk1QzYzRjkyODFFNDE3MzdCMDAyQ0E1MzEgLyogdmlkZW9zb3VyY2Vw
cm94eS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBhcGk7CkBAIC0xMTE5MSw4ICsxMTI3NSwxMiBA
QAogCQkJCTQxOTI0MTRGMjEyNzM3NkUwMDYzNEZDRiAvKiBmYWtlaWNldHJhbnNwb3J0LmggKi8s
CiAJCQkJNDE5MjQxNEUyMTI3Mzc2RTAwNjM0RkNGIC8qIGZha2VwYWNrZXR0cmFuc3BvcnQuaCAq
LywKIAkJCQk1QzYzRjk5NTFFNDE3NEY2MDAyQ0E1MzEgLyogZmFrZXBvcnRhbGxvY2F0b3IuaCAq
LywKKwkJCQk0MUZDQkI0MzIxQjFGREVFMDBBNURGMjcgLyogaWNlY3JlZGVudGlhbHNpdGVyYXRv
ci5jYyAqLywKKwkJCQk0MUZDQkI0NTIxQjFGREVGMDBBNURGMjcgLyogaWNlY3JlZGVudGlhbHNp
dGVyYXRvci5oICovLAogCQkJCTQxOUM4M0Q3MUZFMjQ3RjIwMDQwQzMwRiAvKiBpY2V0cmFuc3Bv
cnRpbnRlcm5hbC5jYyAqLywKIAkJCQk0MTkyNDE1MDIxMjczNzZFMDA2MzRGQ0YgLyogaWNldHJh
bnNwb3J0aW50ZXJuYWwuaCAqLywKKwkJCQk0MUZDQkI0NDIxQjFGREVGMDBBNURGMjcgLyogbWRu
c19tZXNzYWdlLmNjICovLAorCQkJCTQxRkNCQjQyMjFCMUZERUUwMEE1REYyNyAvKiBtZG5zX21l
c3NhZ2UuaCAqLywKIAkJCQk1QzYzRjk5NzFFNDE3NEY2MDAyQ0E1MzEgLyogcDJwY29uc3RhbnRz
LmNjICovLAogCQkJCTVDNjNGOTk4MUU0MTc0RjYwMDJDQTUzMSAvKiBwMnBjb25zdGFudHMuaCAq
LywKIAkJCQk1QzYzRjk5QzFFNDE3NEY2MDAyQ0E1MzEgLyogcDJwdHJhbnNwb3J0Y2hhbm5lbC5j
YyAqLywKQEAgLTExMjQyLDggKzExMzMwLDYgQEAKIAkJCQk1QzYzRjlEOTFFNDE3NEY2MDAyQ0E1
MzEgLyogdHVybnNlcnZlci5jYyAqLywKIAkJCQk1QzYzRjlEQTFFNDE3NEY2MDAyQ0E1MzEgLyog
dHVybnNlcnZlci5oICovLAogCQkJCTVDNjNGOURCMUU0MTc0RjYwMDJDQTUzMSAvKiB1ZHBwb3J0
LmggKi8sCi0JCQkJNDE5QzgzRDMxRkUyNDdGMDAwNDBDMzBGIC8qIHVkcHRyYW5zcG9ydC5jYyAq
LywKLQkJCQk0MTkyNDE0RDIxMjczNzZFMDA2MzRGQ0YgLyogdWRwdHJhbnNwb3J0LmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGJhc2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTEy
NTMsMTMgKzExMzM5LDEwIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1Q0QyODRDNDFFNkE2MDU3
MDA5NEZEQzggLyogYXVkaW90cmFjay5jYyAqLywKIAkJCQk1Q0QyODRDNTFFNkE2MDU3MDA5NEZE
QzggLyogYXVkaW90cmFjay5oICovLAotCQkJCTVDNjNGQTNBMUU0MTc2MUYwMDJDQTUzMSAvKiBi
dW5kbGVmaWx0ZXIuY2MgKi8sCi0JCQkJNUM2M0ZBM0IxRTQxNzYxRjAwMkNBNTMxIC8qIGJ1bmRs
ZWZpbHRlci5oICovLAogCQkJCTVDNjNGQTNEMUU0MTc2MUYwMDJDQTUzMSAvKiBjaGFubmVsLmNj
ICovLAogCQkJCTVDNjNGQTNFMUU0MTc2MUYwMDJDQTUzMSAvKiBjaGFubmVsLmggKi8sCiAJCQkJ
NUM2M0ZBNDAxRTQxNzYxRjAwMkNBNTMxIC8qIGNoYW5uZWxtYW5hZ2VyLmNjICovLAogCQkJCTVD
NjNGQTQxMUU0MTc2MUYwMDJDQTUzMSAvKiBjaGFubmVsbWFuYWdlci5oICovLAotCQkJCTQxNDVF
NEM5MUVGOENCMzEwMEZDRjZFNiAvKiBjcmVhdGVwZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgKi8s
CiAJCQkJNUNEMjg0QzYxRTZBNjA1NzAwOTRGREM4IC8qIGRhdGFjaGFubmVsLmNjICovLAogCQkJ
CTVDRDI4NEM3MUU2QTYwNTcwMDk0RkRDOCAvKiBkYXRhY2hhbm5lbC5oICovLAogCQkJCTQxOUM4
MkQ2MUZFMjBFNTgwMDQwQzMwRiAvKiBkdGxzc3J0cHRyYW5zcG9ydC5jYyAqLywKQEAgLTExNDUx
LDMxICsxMTUzNCwzNyBAQAogCQk1Q0QyODQ2MDFFNkE1N0REMDA5NEZEQzggLyogdmlkZW8gKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxRkNCQjE3MjFC
MUY3Q0MwMEE1REYyNyAvKiBidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnku
Y2MgKi8sCisJCQkJNDFGQ0JCMUEyMUIxRjdDRDAwQTVERjI3IC8qIGJ1aWx0aW5fdmlkZW9fYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oICovLAogCQkJCTQxMDJGNkQyMjEyNzM0MTQwMDZBRThE
NyAvKiBjb2xvcl9zcGFjZS5jYyAqLywKIAkJCQk0MTAyRjZEODIxMjczNDE2MDA2QUU4RDcgLyog
Y29sb3Jfc3BhY2UuaCAqLywKIAkJCQk0MUYyNjNDNzIxMjY4MThBMDAyNzRGNTkgLyogZW5jb2Rl
ZF9mcmFtZS5jYyAqLywKIAkJCQk0MUYyNjNDMjIxMjY4MTg5MDAyNzRGNTkgLyogZW5jb2RlZF9m
cmFtZS5oICovLAorCQkJCTQxRkNCQjE5MjFCMUY3Q0MwMEE1REYyNyAvKiBlbmNvZGVkX2ltYWdl
LmNjICovLAorCQkJCTQxRkNCQjE4MjFCMUY3Q0MwMEE1REYyNyAvKiBlbmNvZGVkX2ltYWdlLmgg
Ki8sCisJCQkJNDFGQ0JCNkYyMUIxRkY3NDAwQTVERjI3IC8qIGhkcl9tZXRhZGF0YS5jYyAqLywK
KwkJCQk0MUZDQkI3MDIxQjFGRjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmggKi8sCiAJCQkJ
NDEwMkY2RDYyMTI3MzQxNTAwNkFFOEQ3IC8qIGkwMTBfYnVmZmVyLmNjICovLAogCQkJCTQxRjI2
M0JGMjEyNjgxODkwMDI3NEY1OSAvKiBpMDEwX2J1ZmZlci5oICovLAogCQkJCTVDRDI4NDYxMUU2
QTU3RjQwMDk0RkRDOCAvKiBpNDIwX2J1ZmZlci5jYyAqLywKIAkJCQk1Q0QyODQ2MjFFNkE1N0Y0
MDA5NEZEQzggLyogaTQyMF9idWZmZXIuaCAqLywKIAkJCQk0MTAyRjZEOTIxMjczNDE2MDA2QUU4
RDcgLyogdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmNjICovLAogCQkJCTQxRjI2M0M0MjEyNjgx
ODkwMDI3NEY1OSAvKiB2aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uaCAqLywKLQkJCQk0MTAyRjZE
QTIxMjczNDE2MDA2QUU4RDcgLyogdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oICov
LAogCQkJCTQxRjI2M0MxMjEyNjgxODkwMDI3NEY1OSAvKiB2aWRlb19iaXRyYXRlX2FsbG9jYXRv
ci5oICovLAorCQkJCTQxMDJGNkRBMjEyNzM0MTYwMDZBRThENyAvKiB2aWRlb19iaXRyYXRlX2Fs
bG9jYXRvcl9mYWN0b3J5LmggKi8sCiAJCQkJNDE5Qzg0MEQxRkUyNDlBQTAwNDBDMzBGIC8qIHZp
ZGVvX2NvbnRlbnRfdHlwZS5jYyAqLywKIAkJCQk0MTlDODQwRjFGRTI0OUFCMDA0MEMzMEYgLyog
dmlkZW9fY29udGVudF90eXBlLmggKi8sCi0JCQkJNDEyNDU1NEExRUY4ODc0MzAwRjExODA5IC8q
IHZpZGVvX2ZyYW1lX2J1ZmZlci5jYyAqLywKLQkJCQk1Q0QyODQ2MzFFNkE1N0Y0MDA5NEZEQzgg
LyogdmlkZW9fZnJhbWVfYnVmZmVyLmggKi8sCiAJCQkJNUNEMjg0NjQxRTZBNTdGNDAwOTRGREM4
IC8qIHZpZGVvX2ZyYW1lLmNjICovLAogCQkJCTVDRDI4NDY1MUU2QTU3RjQwMDk0RkRDOCAvKiB2
aWRlb19mcmFtZS5oICovLAorCQkJCTQxMjQ1NTRBMUVGODg3NDMwMEYxMTgwOSAvKiB2aWRlb19m
cmFtZV9idWZmZXIuY2MgKi8sCisJCQkJNUNEMjg0NjMxRTZBNTdGNDAwOTRGREM4IC8qIHZpZGVv
X2ZyYW1lX2J1ZmZlci5oICovLAogCQkJCTVDRDI4NDY2MUU2QTU3RjQwMDk0RkRDOCAvKiB2aWRl
b19yb3RhdGlvbi5oICovLAogCQkJCTQxMDJGNkQzMjEyNzM0MTUwMDZBRThENyAvKiB2aWRlb19z
aW5rX2ludGVyZmFjZS5oICovLAogCQkJCTQxRjI2M0M2MjEyNjgxOEEwMDI3NEY1OSAvKiB2aWRl
b19zb3VyY2VfaW50ZXJmYWNlLmNjICovLAogCQkJCTQxRjI2M0JFMjEyNjgxODgwMDI3NEY1OSAv
KiB2aWRlb19zb3VyY2VfaW50ZXJmYWNlLmggKi8sCisJCQkJNDFGMjYzQzUyMTI2ODE4QTAwMjc0
RjU5IC8qIHZpZGVvX3N0cmVhbV9kZWNvZGVyLmggKi8sCiAJCQkJNDEwMkY2RDEyMTI3MzQxNDAw
NkFFOEQ3IC8qIHZpZGVvX3N0cmVhbV9kZWNvZGVyX2NyZWF0ZS5jYyAqLywKIAkJCQk0MTAyRjZE
NDIxMjczNDE1MDA2QUU4RDcgLyogdmlkZW9fc3RyZWFtX2RlY29kZXJfY3JlYXRlLmggKi8sCi0J
CQkJNDFGMjYzQzUyMTI2ODE4QTAwMjc0RjU5IC8qIHZpZGVvX3N0cmVhbV9kZWNvZGVyLmggKi8s
CiAJCQkJNDEwMkY2RDUyMTI3MzQxNTAwNkFFOEQ3IC8qIHZpZGVvX3N0cmVhbV9lbmNvZGVyX2Ny
ZWF0ZS5jYyAqLywKIAkJCQk0MUYyNjNDMDIxMjY4MTg5MDAyNzRGNTkgLyogdmlkZW9fc3RyZWFt
X2VuY29kZXJfY3JlYXRlLmggKi8sCiAJCQkJNDFGMjYzQzMyMTI2ODE4OTAwMjc0RjU5IC8qIHZp
ZGVvX3N0cmVhbV9lbmNvZGVyX2ludGVyZmFjZS5oICovLApAQCAtMTE3NjIsOCArMTE4NTEsNiBA
QAogCQkJCTVDREQ4MzZDMUU0MzlBMzUwMDYyMUU5MiAvKiBmcmFtZV9kcm9wcGVyLmggKi8sCiAJ
CQkJNUNERDgzNkQxRTQzOUEzNTAwNjIxRTkyIC8qIGl2Zl9maWxlX3dyaXRlci5jYyAqLywKIAkJ
CQk1Q0REODM2RTFFNDM5QTM1MDA2MjFFOTIgLyogaXZmX2ZpbGVfd3JpdGVyLmggKi8sCi0JCQkJ
NUNERDgzNkYxRTQzOUEzNTAwNjIxRTkyIC8qIG1vdmluZ19hdmVyYWdlLmNjICovLAotCQkJCTVD
REQ4MzcwMUU0MzlBMzUwMDYyMUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5oICovLAogCQkJCTVDREQ4
MzczMUU0MzlBMzUwMDYyMUU5MiAvKiBxdWFsaXR5X3NjYWxlci5jYyAqLywKIAkJCQk1Q0REODM3
NDFFNDM5QTM1MDA2MjFFOTIgLyogcXVhbGl0eV9zY2FsZXIuaCAqLywKIAkJCQk0MTkyNDFFQTIx
Mjc1QUZBMDA2MzRGQ0YgLyogc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yLmNjICovLApAQCAtMTE5
MDcsOCArMTE5OTQsNiBAQAogCQkJCTVDREQ4NEY5MUU0M0IxRUEwMDYyMUU5MiAvKiBhdWRpb19j
b2RpbmdfbW9kdWxlLmNjICovLAogCQkJCTVDREQ4NEZCMUU0M0IxRUEwMDYyMUU5MiAvKiBjYWxs
X3N0YXRpc3RpY3MuY2MgKi8sCiAJCQkJNUNERDg0RkMxRTQzQjFFQTAwNjIxRTkyIC8qIGNhbGxf
c3RhdGlzdGljcy5oICovLAotCQkJCTVDREQ4NEZFMUU0M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19t
YW5hZ2VyLmNjICovLAotCQkJCTVDREQ4NEZGMUU0M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19tYW5h
Z2VyLmggKi8sCiAJCQkJNUNERDg1MDExRTQzQjFFQTAwNjIxRTkyIC8qIHJlbnRfYV9jb2RlYy5j
YyAqLywKIAkJCQk1Q0REODUwMjFFNDNCMUVBMDA2MjFFOTIgLyogcmVudF9hX2NvZGVjLmggKi8s
CiAJCQkpOwpAQCAtMTIwMDgsNiArMTIwOTMsOCBAQAogCQkJCTVDREQ4NTVEMUU0M0I1QzAwMDYy
MUU5MiAvKiBjYWxsX3N0YXRzLmggKi8sCiAJCQkJNUNERDg1NjAxRTQzQjVDMDAwNjIxRTkyIC8q
IGVuY29kZXJfcnRjcF9mZWVkYmFjay5jYyAqLywKIAkJCQk1Q0REODU2MTFFNDNCNUMwMDA2MjFF
OTIgLyogZW5jb2Rlcl9ydGNwX2ZlZWRiYWNrLmggKi8sCisJCQkJNDFGQ0JCNTcyMUIxRkU2RDAw
QTVERjI3IC8qIGZyYW1lX2R1bXBpbmdfZGVjb2Rlci5jYyAqLywKKwkJCQk0MUZDQkI1ODIxQjFG
RTZFMDBBNURGMjcgLyogZnJhbWVfZHVtcGluZ19kZWNvZGVyLmggKi8sCiAJCQkJNUNERDg1NjYx
RTQzQjVDMDAwNjIxRTkyIC8qIG92ZXJ1c2VfZnJhbWVfZGV0ZWN0b3IuY2MgKi8sCiAJCQkJNUNE
RDg1NjcxRTQzQjVDMDAwNjIxRTkyIC8qIG92ZXJ1c2VfZnJhbWVfZGV0ZWN0b3IuaCAqLywKIAkJ
CQk1Q0QyODYyODFFNkE2NkM4MDA5NEZEQzggLyogcXVhbGl0eV90aHJlc2hvbGQuY2MgKi8sCkBA
IC0xMjM3Niw2ICsxMjQ2Myw3IEBACiAJCTVDREQ4N0ZBMUU0M0JFMjYwMDYyMUU5MiAvKiBzb3Vy
Y2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDREQ4
OEVCMUU0M0JGMjUwMDYyMUU5MiAvKiBydGNwX3BhY2tldCAqLywKIAkJCQk1Q0REODdGQzFFNDNC
RTNDMDA2MjFFOTIgLyogYnl0ZV9pby5oICovLAogCQkJCTQxMDJGNkVCMjEyNzM0NjAwMDZBRThE
NyAvKiBjb250cmlidXRpbmdfc291cmNlcy5jYyAqLywKIAkJCQk1Q0REODdGRTFFNDNCRTNDMDA2
MjFFOTIgLyogZHRtZl9xdWV1ZS5jYyAqLywKQEAgLTEyMzkwLDEwICsxMjQ3OCwxMCBAQAogCQkJ
CTVDREQ4ODA2MUU0M0JFM0MwMDYyMUU5MiAvKiBmbGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVy
LmggKi8sCiAJCQkJNUNERDg4MEExRTQzQkUzQzAwNjIxRTkyIC8qIGZsZXhmZWNfcmVjZWl2ZXIu
Y2MgKi8sCiAJCQkJNUNERDg4MEMxRTQzQkUzQzAwNjIxRTkyIC8qIGZsZXhmZWNfc2VuZGVyLmNj
ICovLAotCQkJCTVDREQ4ODBEMUU0M0JFM0MwMDYyMUU5MiAvKiBmb3J3YXJkX2Vycm9yX2NvcnJl
Y3Rpb25faW50ZXJuYWwuY2MgKi8sCi0JCQkJNUNERDg4MEUxRTQzQkUzQzAwNjIxRTkyIC8qIGZv
cndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRlcm5hbC5oICovLAogCQkJCTVDREQ4ODBGMUU0M0JF
M0MwMDYyMUU5MiAvKiBmb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uY2MgKi8sCiAJCQkJNUNERDg4
MTAxRTQzQkUzQzAwNjIxRTkyIC8qIGZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5oICovLAorCQkJ
CTVDREQ4ODBEMUU0M0JFM0MwMDYyMUU5MiAvKiBmb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50
ZXJuYWwuY2MgKi8sCisJCQkJNUNERDg4MEUxRTQzQkUzQzAwNjIxRTkyIC8qIGZvcndhcmRfZXJy
b3JfY29ycmVjdGlvbl9pbnRlcm5hbC5oICovLAogCQkJCTVDREQ4ODE1MUU0M0JFM0MwMDYyMUU5
MiAvKiBwYWNrZXRfbG9zc19zdGF0cy5jYyAqLywKIAkJCQk1Q0REODgxNjFFNDNCRTNDMDA2MjFF
OTIgLyogcGFja2V0X2xvc3Nfc3RhdHMuaCAqLywKIAkJCQk1Q0REODgxODFFNDNCRTNDMDA2MjFF
OTIgLyogcGxheW91dF9kZWxheV9vcmFjbGUuY2MgKi8sCkBAIC0xMjQwMywxOSArMTI0OTEsMjAg
QEAKIAkJCQk1Q0REODgxRTFFNDNCRTNDMDA2MjFFOTIgLyogcmVtb3RlX250cF90aW1lX2VzdGlt
YXRvci5jYyAqLywKIAkJCQk1Q0QyODVGODFFNkE2NDUyMDA5NEZEQzggLyogcnRjcF9uYWNrX3N0
YXRzLmNjICovLAogCQkJCTVDRDI4NUY5MUU2QTY0NTIwMDk0RkRDOCAvKiBydGNwX25hY2tfc3Rh
dHMuaCAqLywKLQkJCQk1Q0REODhFQjFFNDNCRjI1MDA2MjFFOTIgLyogcnRjcF9wYWNrZXQgKi8s
CiAJCQkJNUNERDg4MjExRTQzQkUzQzAwNjIxRTkyIC8qIHJ0Y3BfcGFja2V0LmNjICovLAogCQkJ
CTVDREQ4ODIyMUU0M0JFM0MwMDYyMUU5MiAvKiBydGNwX3BhY2tldC5oICovLAogCQkJCTVDREQ4
ODI0MUU0M0JFM0MwMDYyMUU5MiAvKiBydGNwX3JlY2VpdmVyLmNjICovLAogCQkJCTVDREQ4ODI1
MUU0M0JFM0MwMDYyMUU5MiAvKiBydGNwX3JlY2VpdmVyLmggKi8sCiAJCQkJNUNERDg4MjcxRTQz
QkUzQzAwNjIxRTkyIC8qIHJ0Y3Bfc2VuZGVyLmNjICovLAogCQkJCTVDREQ4ODI4MUU0M0JFM0Mw
MDYyMUU5MiAvKiBydGNwX3NlbmRlci5oICovLAorCQkJCTQxOUM4MkY2MUZFMjBFRkIwMDQwQzMw
RiAvKiBydGNwX3RyYW5zY2VpdmVyLmNjICovLAorCQkJCTQxOUM4MkZBMUZFMjBFRkQwMDQwQzMw
RiAvKiBydGNwX3RyYW5zY2VpdmVyLmggKi8sCiAJCQkJNDE5QzgyRjkxRkUyMEVGRDAwNDBDMzBG
IC8qIHJ0Y3BfdHJhbnNjZWl2ZXJfY29uZmlnLmNjICovLAogCQkJCTQxOUM4MkY4MUZFMjBFRkMw
MDQwQzMwRiAvKiBydGNwX3RyYW5zY2VpdmVyX2NvbmZpZy5oICovLAogCQkJCTQxOUM4MkY3MUZF
MjBFRkMwMDQwQzMwRiAvKiBydGNwX3RyYW5zY2VpdmVyX2ltcGwuY2MgKi8sCiAJCQkJNDE5Qzgy
RkMxRkUyMEVGRTAwNDBDMzBGIC8qIHJ0Y3BfdHJhbnNjZWl2ZXJfaW1wbC5oICovLAotCQkJCTQx
OUM4MkY2MUZFMjBFRkIwMDQwQzMwRiAvKiBydGNwX3RyYW5zY2VpdmVyLmNjICovLAotCQkJCTQx
OUM4MkZBMUZFMjBFRkQwMDQwQzMwRiAvKiBydGNwX3RyYW5zY2VpdmVyLmggKi8sCisJCQkJNUNE
RDg4M0ExRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXQuY2MgKi8sCisJCQkJNUNERDg4M0Ix
RTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXQuaCAqLywKIAkJCQk1Q0REODgyRTFFNDNCRTND
MDA2MjFFOTIgLyogcnRwX2Zvcm1hdF9oMjY0LmNjICovLAogCQkJCTVDREQ4ODJGMUU0M0JFM0Mw
MDYyMUU5MiAvKiBydHBfZm9ybWF0X2gyNjQuaCAqLywKIAkJCQk1Q0REODgzMDFFNDNCRTNDMDA2
MjFFOTIgLyogcnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmNjICovLApAQCAtMTI0MjQsMzUgKzEy
NTEzLDMzIEBACiAJCQkJNUNERDg4MzYxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXRfdnA4
LmggKi8sCiAJCQkJNUNERDg4MzgxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXRfdnA5LmNj
ICovLAogCQkJCTVDREQ4ODM5MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfZm9ybWF0X3ZwOS5oICov
LAotCQkJCTVDREQ4ODNBMUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfZm9ybWF0LmNjICovLAotCQkJ
CTVDREQ4ODNCMUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfZm9ybWF0LmggKi8sCi0JCQkJNDE5MjQx
QUYyMTI3NTkwMjAwNjM0RkNGIC8qIHJ0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5z
aW9uLmNjICovLAotCQkJCTQxMDJGNkU4MjEyNzM0NUYwMDZBRThENyAvKiBydHBfZ2VuZXJpY19m
cmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5oICovLAogCQkJCTQxMDJGNkU1MjEyNzM0NUUwMDZB
RThENyAvKiBydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmNjICovLAogCQkJCTQxMDJGNkU2
MjEyNzM0NUYwMDZBRThENyAvKiBydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmggKi8sCisJ
CQkJNDE5MjQxQUYyMTI3NTkwMjAwNjM0RkNGIC8qIHJ0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0
b3JfZXh0ZW5zaW9uLmNjICovLAorCQkJCTQxMDJGNkU4MjEyNzM0NUYwMDZBRThENyAvKiBydHBf
Z2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5oICovLAogCQkJCTQxNDVFNERCMUVG
OENDRUUwMEZDRjZFNiAvKiBydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuY2MgKi8sCiAJCQkJNDEz
RTY3N0IyMTY5ODZBRDAwRUYzN0VEIC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuY2MgKi8s
CiAJCQkJNDEzRTY3N0MyMTY5ODZBRTAwRUYzN0VEIC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX3Np
emUuaCAqLywKIAkJCQk1Q0REODgzRjFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX2hlYWRlcl9leHRl
bnNpb25zLmNjICovLAogCQkJCTVDREQ4ODQwMUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfaGVhZGVy
X2V4dGVuc2lvbnMuaCAqLywKIAkJCQk1Q0REODg0MTFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX2hl
YWRlcl9wYXJzZXIuY2MgKi8sCisJCQkJNUNERDg4NDgxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9w
YWNrZXQuY2MgKi8sCisJCQkJNUNERDg4NDkxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9wYWNrZXQu
aCAqLywKIAkJCQk1Q0REODg0MzFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX3BhY2tldF9oaXN0b3J5
LmNjICovLAogCQkJCTVDREQ4ODQ0MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcGFja2V0X2hpc3Rv
cnkuaCAqLywKIAkJCQk0MTlDODJGRTFGRTIwRjAxMDA0MEMzMEYgLyogcnRwX3BhY2tldF9yZWNl
aXZlZC5jYyAqLywKIAkJCQk1Q0REODg0NTFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX3BhY2tldF9y
ZWNlaXZlZC5oICovLAogCQkJCTQxMDJGNkU5MjEyNzM0NUYwMDZBRThENyAvKiBydHBfcGFja2V0
X3RvX3NlbmQuY2MgKi8sCiAJCQkJNUNERDg4NDYxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9wYWNr
ZXRfdG9fc2VuZC5oICovLAotCQkJCTVDREQ4ODQ4MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcGFj
a2V0LmNjICovLAotCQkJCTVDREQ4ODQ5MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcGFja2V0Lmgg
Ki8sCiAJCQkJNUNERDg4NTQxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9ydGNwX2NvbmZpZy5oICov
LAogCQkJCTVDREQ4ODU2MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcnRjcF9pbXBsLmNjICovLAog
CQkJCTVDREQ4ODU3MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcnRjcF9pbXBsLmggKi8sCisJCQkJ
NUNERDg4NUQxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9zZW5kZXIuY2MgKi8sCisJCQkJNUNERDg4
NUUxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9zZW5kZXIuaCAqLywKIAkJCQk1Q0REODg1ODFFNDNC
RTNDMDA2MjFFOTIgLyogcnRwX3NlbmRlcl9hdWRpby5jYyAqLywKIAkJCQk1Q0REODg1OTFFNDNC
RTNDMDA2MjFFOTIgLyogcnRwX3NlbmRlcl9hdWRpby5oICovLAogCQkJCTVDREQ4ODVCMUU0M0JF
M0MwMDYyMUU5MiAvKiBydHBfc2VuZGVyX3ZpZGVvLmNjICovLAogCQkJCTVDREQ4ODVDMUU0M0JF
M0MwMDYyMUU5MiAvKiBydHBfc2VuZGVyX3ZpZGVvLmggKi8sCi0JCQkJNUNERDg4NUQxRTQzQkUz
QzAwNjIxRTkyIC8qIHJ0cF9zZW5kZXIuY2MgKi8sCi0JCQkJNUNERDg4NUUxRTQzQkUzQzAwNjIx
RTkyIC8qIHJ0cF9zZW5kZXIuaCAqLywKIAkJCQk1Q0REODg1RjFFNDNCRTNDMDA2MjFFOTIgLyog
cnRwX3V0aWxpdHkuY2MgKi8sCiAJCQkJNUNERDg4NjAxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF91
dGlsaXR5LmggKi8sCiAJCQkJNDEwMkY2RTcyMTI3MzQ1RjAwNkFFOEQ3IC8qIHJ0cF92aWRlb19o
ZWFkZXIuY2MgKi8sCkBAIC0xMjU4Nyw4ICsxMjY3NCw2IEBACiAJCQkJNUNERDg5RTIxRTQzQkZC
MzAwNjIxRTkyIC8qIHJhbmRvbV92ZWN0b3IuaCAqLywKIAkJCQk1Q0REODlFNDFFNDNCRkIzMDA2
MjFFOTIgLyogcmVkX3BheWxvYWRfc3BsaXR0ZXIuY2MgKi8sCiAJCQkJNUNERDg5RTUxRTQzQkZC
MzAwNjIxRTkyIC8qIHJlZF9wYXlsb2FkX3NwbGl0dGVyLmggKi8sCi0JCQkJNUNERDg5RTYxRTQz
QkZCMzAwNjIxRTkyIC8qIHJ0Y3AuY2MgKi8sCi0JCQkJNUNERDg5RTcxRTQzQkZCMzAwNjIxRTky
IC8qIHJ0Y3AuaCAqLywKIAkJCQk1Q0REODlFODFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGlj
c19jYWxjdWxhdG9yLmNjICovLAogCQkJCTVDREQ4OUU5MUU0M0JGQjMwMDYyMUU5MiAvKiBzdGF0
aXN0aWNzX2NhbGN1bGF0b3IuaCAqLywKIAkJCQk1Q0REODlFQjFFNDNCRkIzMDA2MjFFOTIgLyog
c3luY19idWZmZXIuY2MgKi8sCkBAIC0xMjY0Miw2ICsxMjcyNyw3IEBACiAJCTVDREQ4QUJCMUU0
M0MyMjIwMDYyMUU5MiAvKiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJNUNEMjg1NEExRTZBNjIwOTAwOTRGREM4IC8qIHV0aWxpdHkgKi8sCiAJ
CQkJNDEwMkY2OUEyMTI3MzI2MTAwNkFFOEQ3IC8qIGF1ZGlvX2xldmVsLmNjICovLAogCQkJCTQx
MDJGNjk4MjEyNzMyNjAwMDZBRThENyAvKiBhdWRpb19sZXZlbC5oICovLAogCQkJCTVDREQ4QUJE
MUU0M0MyMzkwMDYyMUU5MiAvKiBhdWRpb19yZWNlaXZlX3N0cmVhbS5jYyAqLywKQEAgLTEyNjUy
LDEyICsxMjczOCw4IEBACiAJCQkJNUNERDhBQzQxRTQzQzIzOTAwNjIxRTkyIC8qIGF1ZGlvX3N0
YXRlLmggKi8sCiAJCQkJNDFGOUJGOTkyMDUxQzg0QjAwQUJGMEI5IC8qIGF1ZGlvX3RyYW5zcG9y
dF9pbXBsLmNjICovLAogCQkJCTQxRjlCRjlBMjA1MUM4NEIwMEFCRjBCOSAvKiBhdWRpb190cmFu
c3BvcnRfaW1wbC5oICovLAotCQkJCTQxM0U2Nzc4MjE2OTg2N0EwMEVGMzdFRCAvKiBjaGFubmVs
X3JlY2VpdmVfcHJveHkuY2MgKi8sCi0JCQkJNDEzRTY3NzcyMTY5ODY3QTAwRUYzN0VEIC8qIGNo
YW5uZWxfcmVjZWl2ZV9wcm94eS5oICovLAogCQkJCTQxNzk1M0QyMjE2OTgzNEYwMDI4MjY2QiAv
KiBjaGFubmVsX3JlY2VpdmUuY2MgKi8sCiAJCQkJNDE3OTUzRDAyMTY5ODM0RjAwMjgyNjZCIC8q
IGNoYW5uZWxfcmVjZWl2ZS5oICovLAotCQkJCTQxNzk1M0NGMjE2OTgzNEUwMDI4MjY2QiAvKiBj
aGFubmVsX3NlbmRfcHJveHkuY2MgKi8sCi0JCQkJNDE3OTUzRDEyMTY5ODM0RjAwMjgyNjZCIC8q
IGNoYW5uZWxfc2VuZF9wcm94eS5oICovLAogCQkJCTQxNzk1M0NEMjE2OTgzNEUwMDI4MjY2QiAv
KiBjaGFubmVsX3NlbmQuY2MgKi8sCiAJCQkJNDE3OTUzQ0UyMTY5ODM0RTAwMjgyNjZCIC8qIGNo
YW5uZWxfc2VuZC5oICovLAogCQkJCTVDREQ4QUM2MUU0M0MyMzkwMDYyMUU5MiAvKiBjb252ZXJz
aW9uLmggKi8sCkBAIC0xMjY2NSwxMSArMTI3NDcsOCBAQAogCQkJCTQxOUM4M0IyMUZFMjQ3MkUw
MDQwQzMwRiAvKiBudWxsX2F1ZGlvX3BvbGxlci5oICovLAogCQkJCTQxMDJGNjk3MjEyNzMyNjAw
MDZBRThENyAvKiByZW1peF9yZXNhbXBsZS5jYyAqLywKIAkJCQk0MTAyRjY5RDIxMjczMjYxMDA2
QUU4RDcgLyogcmVtaXhfcmVzYW1wbGUuaCAqLywKLQkJCQk0MTlDODMzMzFGRTI0NUU5MDA0MEMz
MEYgLyogdGltZV9pbnRlcnZhbC5jYyAqLywKLQkJCQk0MTlDODMzMjFGRTI0NUU5MDA0MEMzMEYg
LyogdGltZV9pbnRlcnZhbC5oICovLAogCQkJCTQxMDJGNjlGMjEyNzMyNjIwMDZBRThENyAvKiB0
cmFuc3BvcnRfZmVlZGJhY2tfcGFja2V0X2xvc3NfdHJhY2tlci5jYyAqLywKIAkJCQk0MTAyRjY5
NjIxMjczMjYwMDA2QUU4RDcgLyogdHJhbnNwb3J0X2ZlZWRiYWNrX3BhY2tldF9sb3NzX3RyYWNr
ZXIuaCAqLywKLQkJCQk1Q0QyODU0QTFFNkE2MjA5MDA5NEZEQzggLyogdXRpbGl0eSAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTI4
MjcsMTAgKzEyOTA2LDEwIEBACiAJCTVDREQ4QzEyMUU0M0MzOTIwMDYyMUU5MiAvKiB2cDkgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQxM0U2NzkyMjE2
OTg4MTkwMEVGMzdFRCAvKiBzdmNfcmF0ZV9hbGxvY2F0b3IuY2MgKi8sCi0JCQkJNDEzRTY3OTMy
MTY5ODgxOTAwRUYzN0VEIC8qIHN2Y19yYXRlX2FsbG9jYXRvci5oICovLAogCQkJCTQxM0U2Nzgw
MjE2OTg3MEYwMEVGMzdFRCAvKiBzdmNfY29uZmlnLmNjICovLAogCQkJCTQxM0U2NzdGMjE2OTg3
MEYwMEVGMzdFRCAvKiBzdmNfY29uZmlnLmggKi8sCisJCQkJNDEzRTY3OTIyMTY5ODgxOTAwRUYz
N0VEIC8qIHN2Y19yYXRlX2FsbG9jYXRvci5jYyAqLywKKwkJCQk0MTNFNjc5MzIxNjk4ODE5MDBF
RjM3RUQgLyogc3ZjX3JhdGVfYWxsb2NhdG9yLmggKi8sCiAJCQkJNUNERDhDMTMxRTQzQzNCNDAw
NjIxRTkyIC8qIHZwOV9ub29wLmNjICovLAogCQkJKTsKIAkJCW5hbWUgPSB2cDk7CkBAIC0xMzIw
Nyw4ICsxMzI4Niw2IEBACiAJCQkJNDE5MjQxQjEyMTI3NTkxQzAwNjM0RkNGIC8qIGJiciAqLywK
IAkJCQk0MUUwMkM4RjIxMjczNEU4MDBDMjdDRDYgLyogZ29vZ19jYyAqLywKIAkJCQk0MUUwMkNE
NTIxMjczNjIzMDBDMjdDRDYgLyogcnRwICovLAotCQkJCTQxQTA4QkQ2MjEyNzJGMUMwMDFENUQ3
QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjICovLAotCQkJCTQx
QTA4QkQ1MjEyNzJGMUMwMDFENUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250
cm9sbGVyLmggKi8sCiAJCQkJNDEzMDkxRkQxRUY4RDA2RDAwNzU3QzU1IC8qIHJlY2VpdmVfc2lk
ZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgKi8sCiAJCQkJNDEzMDkyMTQxRUY4RDVFRDAwNzU3
QzU1IC8qIHNlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgKi8sCiAJCQkJNUNERDhG
QjAxRTQzQ0QwNzAwNjIxRTkyIC8qIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmNjICovLApA
QCAtMTMzMDUsOCArMTMzODIsMTEgQEAKIAkJNUNERDkwNTExRTQzRDEwNDAwNjIxRTkyIC8qIGJp
dHJhdGVfY29udHJvbGxlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJNDFGQ0JCNUIyMUIxRkVBMzAwQTVERjI3IC8qIGJpdHJhdGVfY29udHJvbGxlci5j
YyAqLywKIAkJCQk1Q0REOTA1MjFFNDNEMTEyMDA2MjFFOTIgLyogYml0cmF0ZV9jb250cm9sbGVy
X2ltcGwuY2MgKi8sCiAJCQkJNUNERDkwNTMxRTQzRDExMjAwNjIxRTkyIC8qIGJpdHJhdGVfY29u
dHJvbGxlcl9pbXBsLmggKi8sCisJCQkJNDFGQ0JCNjgyMUIxRkYxQjAwQTVERjI3IC8qIGxvc3Nf
YmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uY2MgKi8sCisJCQkJNDFGQ0JCNjcyMUIxRkYxQjAw
QTVERjI3IC8qIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uaCAqLywKIAkJCQk1Q0RE
OTA1QjFFNDNEMTEyMDA2MjFFOTIgLyogc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNj
ICovLAogCQkJCTVDREQ5MDVDMUU0M0QxMTIwMDYyMUU5MiAvKiBzZW5kX3NpZGVfYmFuZHdpZHRo
X2VzdGltYXRpb24uaCAqLywKIAkJCSk7CkBAIC0xMzU0Myw3ICsxMzYyMyw2IEBACiAJCQlpc2Eg
PSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CiAJCQlmaWxlcyA9ICgKLQkJCQk1QzA4OEMxMTFFNEFBNDQ0MDA0MDM5OTUgLyogYnVuZGxlZmls
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzA4OEMxMzFFNEFBNDQ0MDA0MDM5OTUgLyogY2hh
bm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMwODhDMTUxRTRBQTQ0NDAwNDAzOTk1IC8qIGNo
YW5uZWxtYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzA4OEMxOTFFNEFBNDQ0MDA0MDM5
OTUgLyogZXh0ZXJuYWxobWFjLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNzIzLDcgKzEzODAyLDYg
QEAKIAkJCQk0MTZEM0JERDIxMjczMUMyMDA3NzVGMDkgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9l
c3RpbWF0b3JfYWdjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY0MTFDODFFRjk3QkFGMDAzNDND
MjYgLyogYWRtX2hlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUE5MUU2QTYzNDMw
MDk0RkRDOCAvKiBhZWMzX2NvbW1vbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NEIzRDUyMTY5
ODk2RDAwNDM2M0FDIC8qIFJUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0QyODVBQjFFNkE2MzQzMDA5NEZEQzggLyogYWVjM19mZnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4NkI3MUU0M0I5QzIwMDYyMUU5MiAvKiBhZWNfY29tbW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0REODZCRDFFNDNCOUMyMDA2MjFFOTIgLyogYWVjX2NvcmUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTM3NTgsNiArMTM4MzYsNyBAQAogCQkJCTQxNDMzRDAxMUY3OUIzMzQw
MDM4N0I0RCAvKiBhcml0aF9yb3V0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkY4NzIw
NTFDODAxMDBBQkYwQjkgLyogYXJyYXlfdmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIz
RTQxRkUxOEUwODAwMzczRTk5IC8qIGFycmF5c2l6ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFG
Q0JCNzkyMUIxRkZDMDAwQTVERjI3IC8qIGFzY2lpLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYy
NjNCMTIxMjY4MEE4MDAyNzRGNTkgLyogYXNtX2RlZmluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDNjNGOEQ5MUU0MTZENTMwMDJDQTUzMSAvKiBhc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNBMjJBODFGRTE4RTA2MDAzNzNFOTkgLyogYXN5bmNpbnZva2VyLWlubC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMzc3Niw3ICsxMzg1NSw2IEBACiAJCQkJNUNERDg0MTYxRTQzOUIyOTAw
NjIxRTkyIC8qIGF1ZGlvX2RlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NTQ1MUU2
QTYxRDIwMDk0RkRDOCAvKiBhdWRpb19kZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0Qy
ODU0MzFFNkE2MUQyMDA5NEZEQzggLyogYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmggaW4gSGVhZGVy
cyAqLywKLQkJCQk0MTc5NTNDMDIxNjk4MjRCMDAyODI2NkIgLyogUlRDQ29kZWNTcGVjaWZpY0lu
Zm9IMjY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkY5ODIwNTFDODIxMDBBQkYwQjkgLyog
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5X3RlbXBsYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlD
ODNFODFGRTI0ODM1MDA0MEMzMEYgLyogYXVkaW9fZGVjb2Rlcl9nNzExLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTQwQjgzMjFFNEUzMzk2MDA3NDA5RTYgLyogYXVkaW9fZGVjb2Rlcl9nNzIyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEzODIwLDcgKzEzODk4LDYgQEAKIAkJCQk0MTlDODM2OTFGRTI0
NkNBMDA0MEMzMEYgLyogYXVkaW9fZW5jb2Rlcl9pc2FjX2Zsb2F0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REOEMwQzFFNDNDMzQ2MDA2MjFFOTIgLyogYXVkaW9fZW5jb2Rlcl9pc2FjX3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDREQ4QzBCMUU0M0MzNDYwMDYyMUU5MiAvKiBhdWRpb19lbmNv
ZGVyX2lzYWNfdF9pbXBsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5NTNDOTIxNjk4MjRCMDAy
ODI2NkIgLyogUlRDVmlkZW9FbmNvZGVySDI2NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5Qzgz
RjMxRkUyNDg4RDAwNDBDMzBGIC8qIGF1ZGlvX2VuY29kZXJfTDE2LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REOEM2NDFFNDNDNjA5MDA2MjFFOTIgLyogYXVkaW9fZW5jb2Rlcl9vcHVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTlDODJGMDFGRTIwRUI1MDA0MEMzMEYgLyogYXVkaW9fZW5jb2Rl
cl9vcHVzLmggaW4gSGVhZGVycyAqLywKQEAgLTEzODMzLDkgKzEzOTEwLDcgQEAKIAkJCQk0MTVG
MUZDRjIxMjczMEYwMDAwNjRDQkYgLyogYXVkaW9fZnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDRDI4NDkzMUU2QTVGNDEwMDk0RkRDOCAvKiBhdWRpb19mcmFtZV9tYW5pcHVsYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1NEUxRTZBNjIxMzAwOTRGREM4IC8qIGF1ZGlvX2ZyYW1l
X29wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNDRCM0REMjE2OUEwNzAwMDQzNjNB
QyAvKiBSVENWaWRlb0RlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMDJGNkEyMjEyNzMy
NjIwMDZBRThENyAvKiBhdWRpb19sZXZlbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3QTAy
MTY5ODg5NTAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNERDhBOTAxRTQzQzAwRjAwNjIxRTkyIC8qIGF1ZGlvX2xvb3AuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNUYxRkNEMjEyNzMwRjAwMDA2NENCRiAvKiBhdWRpb19taXhlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg0OTYxRTZBNUY0MTAwOTRGREM4IC8qIGF1ZGlvX21p
eGVyX2ltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMTM4NTQsNyArMTM5MjksNiBAQAogCQkJCTVD
REQ4QzRGMUU0M0M1OEUwMDYyMUU5MiAvKiBhdWRpb19zaW5rLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0REOEE5MjFFNDNDMDBGMDA2MjFFOTIgLyogYXVkaW9fc2luay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNERDhBRDMxRTQzQzIzOTAwNjIxRTkyIC8qIGF1ZGlvX3N0YXRlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk0MTc5NTNFMzIxNjk4M0NBMDAyODI2NkIgLyogbW9kdWxlX2ZlY190eXBlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg0QjMxRTZBNUY5RjAwOTRGREM4IC8qIGF1ZGlvX3N0
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkY5QzIwNTFDODRDMDBBQkYwQjkgLyogYXVk
aW9fdHJhbnNwb3J0X2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjlCRkEwMjA1MUM4ODUw
MEFCRjBCOSAvKiBhdWRpb191dGlsLmggaW4gSGVhZGVycyAqLywKQEAgLTEzODc3LDcgKzEzOTUx
LDYgQEAKIAkJCQk1QzRCNEQwQTFFNDMyMkY2MDAyNjUxQzggLyogYmFzaWNwb3J0YWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDFDNjIxMjc1OTNGMDA2MzRGQ0YgLyogYmJyX2Zh
Y3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOTI0MUMzMjEyNzU5M0YwMDYzNEZDRiAvKiBi
YnJfbmV0d29ya19jb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTYyMjVFNTIxNjk4
MTk1MDBBOTFDOUIgLyogb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxM0EyMzVDMUZFMThFMDcwMDM3M0U5OSAvKiBiaW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTZEM0JFMTIxMjczMUMyMDA3NzVGMDkgLyogYmlxdWFkX2ZpbHRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTIzNzcxRkUxOEUwNzAwMzczRTk5IC8qIGJpdGJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMzg4Niw3ICsxMzk1OSw2IEBACiAJCQkJNDFGMjYzODIyMTI2N0I3NzAw
Mjc0RjU5IC8qIGJpdHJhdGVfY29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
RjdFMUU0M0NCRTAwMDYyMUU5MiAvKiBiaXRyYXRlX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDREQ5MDVFMUU0M0QxMTIwMDYyMUU5MiAvKiBiaXRyYXRlX2NvbnRyb2xsZXJfaW1w
bC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NEIzRUEyMTY5QzVFMzAwNDM2M0FDIC8qIFJUQ1Zp
ZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTAyQ0FD
MjEyNzM1MkQwMEMyN0NENiAvKiBiaXRyYXRlX2VzdGltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDhGQTExRTQzQ0NCRTAwNjIxRTkyIC8qIGJpdHJhdGVfcHJvYmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MUUwMkNEMDIxMjczNUI3MDBDMjdDRDYgLyogYml0cmF0ZV9zZXR0aW5ncy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMzg5NCw3ICsxMzk2Niw2IEBACiAJCQkJNDFCRTcxQTgyMTVD
NDYzNzAwQTdCMTk2IC8qIGJpdHZlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUFEMUU2
QTYzNDMwMDk0RkRDOCAvKiBibG9ja19mcmFtZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
Njg4MUU0M0I5MzkwMDYyMUU5MiAvKiBibG9ja19tZWFuX2NhbGN1bGF0b3IuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQxNzk1M0MzMjE2OTgyNEIwMDI4MjY2QiAvKiBSVENIMjY0UHJvZmlsZUxldmVs
SWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUIxMUU2QTYzNDMwMDk0RkRDOCAvKiBibG9j
a19wcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUFGMUU2QTYzNDMwMDk0RkRD
OCAvKiBibG9ja19wcm9jZXNzb3JfbWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIz
OEUxRkUxOEUwNzAwMzczRTk5IC8qIGJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzkwMiwx
NiArMTM5NzMsMTMgQEAKIAkJCQk0MTNBMjMyQjFGRTE4RTA3MDAzNzNFOTkgLyogYnVmZmVycXVl
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NTQ5MUU2QTYxRDIwMDk0RkRDOCAvKiBidWls
dGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzMDkxRkMx
RUY4Q0ZGODAwNzU3QzU1IC8qIGJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0MTc5NTNFNDIxNjk4M0NBMDAyODI2NkIgLyogbW9kdWxlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0MTNFNjc3OTIxNjk4NjdBMDBFRjM3RUQgLyogY2hhbm5lbF9yZWNlaXZl
X3Byb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkIxRTIxQjFGN0NEMDBBNURGMjcgLyog
YnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MUYyNjM2MDIxMjY3QURGMDAyNzRGNTkgLyogYnVpbHRpbl92aWRlb19kZWNvZGVyX2Zh
Y3RvcnkuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0U2NzY5MjE2OTg1NEIwMEVGMzdFRCAvKiBS
VENWaWRlb0VuY29kZXJWUDguaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjI2MzYxMjEyNjdBREYw
MDI3NEY1OSAvKiBidWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNERDhCNzUxRTQzQzJCNTAwNjIxRTkyIC8qIGJ3X2V4cGFuZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNERDg5M0YxRTQzQkYzQTAwNjIxRTkyIC8qIGJ5ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNERDg4NzYxRTQzQkUzQzAwNjIxRTkyIC8qIGJ5dGVfaW8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxM0EyM0E0MUZFMThFMDgwMDM3M0U5OSAvKiBieXRlYnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk0MTc5NTNGODIxNjk4NEJFMDAyODI2NkIgLyogUlRDQ29kZWNTcGVjaWZpY0lu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQkU3MUFFMjE1QzQ2MzcwMEE3QjE5NiAvKiBieXRl
Y29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzM0UxRkUxOEUwNzAwMzczRTk5IC8qIGJ5
dGVvcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg0QjgxRTZBNUY5RjAwOTRGREM4IC8q
IGNhbGwuaCBpbiBIZWFkZXJzICovLApAQCAtMTM5MzMsMTYgKzE0MDAxLDE2IEBACiAJCQkJNUNE
RDhCODMxRTQzQzJCNTAwNjIxRTkyIC8qIGNiX3VwZGF0ZV9iZXN0X2luZGV4LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1QzRCNEM2NTFFNDMxRjlDMDAyNjUxQzggLyogY2hhbm5lbF9idWZmZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDREQ4RjgxMUU0M0NCRTAwMDYyMUU5MiAvKiBjaGFubmVsX2Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0Q2MjE2OTgzNEYwMDI4MjY2QiAv
KiBjaGFubmVsX3JlY2VpdmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0Q0MjE2OTgzNEYw
MDI4MjY2QiAvKiBjaGFubmVsX3NlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4Qjg1MUU0
M0MyQjUwMDYyMUU5MiAvKiBjaGVieXNoZXYuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzRG
MUZFMThFMDcwMDM3M0U5OSAvKiBjaGVja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMDg4NTJB
MUU0QTk5RDIwMDQwMzk5NSAvKiBjaXBoZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0U2NzY2
MjE2OTg1NEIwMEVGMzdFRCAvKiBSVENWaWRlb0NvZGVjQ29uc3RhbnRzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0REODZBMjFFNDNCOTk0MDA2MjFFOTIgLyogY2lyY3VsYXJfYnVmZmVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MUZDQkI3NjIxQjFGRkE0MDBBNURGMjcgLyogY29jb2FfdGhyZWFk
aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDhEQzFFNDJDMUUzMDAyNjUxQzggLyogY29k
ZWMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNjIyNUU4MjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpj
X3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3QjAxRTQz
QkMwNTAwNjIxRTkyIC8qIGNvZGVjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQzM0NGMzFGNzlC
MzM0MDAzODdCNEQgLyogY29kZWMuaCBpbiBIZWFkZXJzICovLAotCQkJCTVDREQ4NTE2MUU0M0Ix
RUEwMDYyMUU5MiAvKiBjb2RlY19tYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODND
OTFFNDM5QTZGMDA2MjFFOTIgLyogY29kZWNfdGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MDJGNkUyMjEyNzM0MTYwMDZBRThENyAvKiBjb2xvcl9zcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDhBMEUxRTQzQkZCMzAwNjIxRTkyIC8qIGNvbWZvcnRfbm9pc2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTM5NjEsMjcgKzE0MDI5LDMxIEBACiAJCQkJNUNERDhGRUMxRTQzQ0RDQTAwNjIx
RTkyIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0Y4REIxRTQxNkQ1MzAwMkNB
NTMxIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5MjQxNkQyMTI3Mzg5QjAwNjM0
RkNGIC8qIGNvbmdlc3Rpb25fY29udHJvbGxlcl9leHBlcmltZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQk0MUEwOEJENzIxMjcyRjFEMDAxRDVEN0IgLyogY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJh
Y2tfY29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNDAyMUIxRkRCODAwQTVE
RjI3IC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4QTk0MUU0M0MwMEYwMDYyMUU5MiAvKiBjb25zdGFudF9wY21fcGFja2V0
X3NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjQ4NzgxRTQyQzFCQTAwMjY1MUM4IC8q
IGNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCOEExRTQzQzJCNTAwNjIxRTky
IC8qIGNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzNkMxRkUxOEUwNzAwMzcz
RTk5IC8qIGNvbnN0cnVjdG9ybWFnaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0FEMUE0MjEy
NjVCMTAwMDNGNzI2MyAvKiBjb250YWluZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjM4
MjFCMUY4RkMwMEE1REYyNyAvKiBjb250cm9sX2hhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4Rjg2MUU0M0NCRTAwMDYyMUU5MiAvKiBjb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REOEY4NDFFNDNDQkUwMDA2MjFFOTIgLyogY29udHJvbGxlcl9tYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0REOEFENDFFNDNDMjM5MDA2MjFFOTIgLyogY29udmVyc2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGOUJGQjQyMDUxQzkzNjAwQUJGMEI5IC8qIGNvbnZlcnRf
bGVnYWN5X3ZpZGVvX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyM0FDMUZFMThF
MDgwMDM3M0U5OSAvKiBjb3B5b253cml0ZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFC
RTcxQkMyMTVDNDYzNzAwQTdCMTk2IC8qIGNvcmV0eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
MTg4OUQ3NjIxNkJDNEVDMDA0NjE0REQgLyogUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MUZDQkI1MTIxQjFGRTQ2MDBBNURGMjcgLyogY3B1X3NwZWVkX2V4
cGVyaW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyM0UyMUZFMThFMDgwMDM3M0U5OSAv
KiBjcHVfdGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3QjIxRTQzQkMwNTAwNjIxRTky
IC8qIGNyYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyQUMxRkUxOEUwNjAwMzczRTk5IC8q
IGNyYzMyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEI4QzFFNDNDMkI1MDA2MjFFOTIgLyog
Y3JlYXRlX2F1Z21lbnRlZF92ZWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjEyMjFCMUY1
MzcwMEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDFGQ0JCNjQyMUIxRkVGNjAwQTVERjI3IC8qIGNyZWF0ZV92cDhfdGVtcG9yYWxf
bGF5ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM2OTFGRTE4RTA3MDAzNzNFOTkgLyog
Y3JpdGljYWxzZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEExMDFFNDNCRkIzMDA2
MjFFOTIgLyogY3Jvc3NfY29ycmVsYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMDg4NTJC
MUU0QTk5RDIwMDQwMzk5NSAvKiBjcnlwdG9fa2VybmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
QzA4ODUyQzFFNEE5OUQyMDA0MDM5OTUgLyogY3J5cHRvX3R5cGVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MUZDQkIyRTIxQjFGOEI3MDBBNURGMjcgLyogY3J5cHRvb3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUM0QjQ4REQxRTQyQzFFMzAwMjY1MUM4IC8qIGNyeXB0b3BhcmFtcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFGOUJGOTAyMDUxQzgwMTAwQUJGMEI5IC8qIGNyeXB0b3BhcmFt
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzMjkxRkUxOEUwNzAwMzczRTk5IC8qIGNyeXB0
c3RyaW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MDQ0LDcgKzE0MTE2LDYgQEAKIAkJCQk1Q0RE
ODRCMTFFNDNBRjEzMDA2MjFFOTIgLyogZWNob19jb250cm9sX21vYmlsZV9pbXBsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0QyODVCQjFFNkE2MzQzMDA5NEZEQzggLyogZWNob19wYXRoX2RlbGF5
X2VzdGltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1QkQxRTZBNjM0MzAwOTRGREM4
IC8qIGVjaG9fcGF0aF92YXJpYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzQkQy
MTY5ODI0QjAwMjgyNjZCIC8qIGhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUMx
MUU2QTYzNDMwMDk0RkRDOCAvKiBlY2hvX3JlbW92ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
RDI4NUJGMUU2QTYzNDMwMDk0RkRDOCAvKiBlY2hvX3JlbW92ZXJfbWV0cmljcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTIxM0UxRkUwRjBFRjAwMzczRTk5IC8qIGVrdC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNDA1Myw2ICsxNDEyNCw3IEBACiAJCQkJNUNERDhBOTYxRTQzQzAwRjAwNjIxRTky
IC8qIGVuY29kZV9uZXRlcV9pbnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgzQ0QxRTQz
OUE2RjAwNjIxRTkyIC8qIGVuY29kZWRfZnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTA4
QkFDMjEyNjgxQzgwMDFENUQ3QiAvKiBlbmNvZGVkX2ZyYW1lLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MUZDQkIxQzIxQjFGN0NEMDBBNURGMjcgLyogZW5jb2RlZF9pbWFnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFFMDJDODkyMTI3MzRCOTAwQzI3Q0Q2IC8qIGVuY29kZXJfZGF0YWJhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDREQ4NUEwMUU0M0I1QzAwMDYyMUU5MiAvKiBlbmNvZGVyX3J0
Y3BfZmVlZGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUNFQUZDMjA2NDY2NjQwMDlENTE0
MSAvKiBFbmNvZGVyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MDY3LDcgKzE0MTM5
LDYgQEAKIAkJCQk1QzA4ODUyRTFFNEE5OUQyMDA0MDM5OTUgLyogZXJyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUJFNzFBQTIxNUM0NjM3MDBBN0IxOTYgLyogZXJyd2Fybi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDEzQTIzQTUxRkUxOEUwODAwMzczRTk5IC8qIGV2ZW50LmggaW4gSGVhZGVycyAq
LywKLQkJCQk0MTNFNjc4NTIxNjk4NzdEMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGlu
Z3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjE1MUU2QTY2MTMwMDk0RkRDOCAvKiBldmVu
dF9sb2dfd3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM3RTFGRTE4RTA3MDAzNzNF
OTkgLyogZXZlbnRfdHJhY2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODM1MDFGRTI0NjY1
MDA0MEMzMEYgLyogZXhwX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDA3Niw3ICsxNDE0
Nyw2IEBACiAJCQkJNDFCRTcxQTYyMTVDNDYzNzAwQTdCMTk2IC8qIGV4cHIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4OTRCMUU0M0JGM0EwMDYyMUU5MiAvKiBleHRlbmRlZF9qaXR0ZXJfcmVw
b3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODk0RTFFNDNCRjNBMDA2MjFFOTIgLyogZXh0
ZW5kZWRfcmVwb3J0cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3QTEyMTY5ODg5NTAwRUYz
N0VEIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ4QTk4MUU0M0MwMEYwMDYyMUU5MiAvKiBmYWtlX2RlY29kZV9mcm9tX2ZpbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxMjk5Qjk3MjEyNzM2OTEwMEIzNDE0QiAvKiBmYWtlX25ldHdvcmtfcGlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5MjQxNTYyMTI3Mzc2RjAwNjM0RkNGIC8qIGZha2Vj
YW5kaWRhdGVwYWlyLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MDg0LDcgKzE0MTU0LDYgQEAKIAkJ
CQk0MTkyNDE1MzIxMjczNzZGMDA2MzRGQ0YgLyogZmFrZWR0bHN0cmFuc3BvcnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxOTI0MTU5MjEyNzM3NkYwMDYzNEZDRiAvKiBmYWtlaWNldHJhbnNwb3J0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDhERjFFNDJDMUUzMDAyNjUxQzggLyogZmFrZW1l
ZGlhZW5naW5lLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNFNjc2QTIxNjk4NTRCMDBFRjM3RUQg
LyogUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEz
QTIyQjcxRkUxOEUwNzAwMzczRTk5IC8qIGZha2VuZXR3b3JrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1QzRCNDhFMDFFNDJDMUUzMDAyNjUxQzggLyogZmFrZW5ldHdvcmtpbnRlcmZhY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxOTI0MTU4MjEyNzM3NkYwMDYzNEZDRiAvKiBmYWtlcGFja2V0dHJh
bnNwb3J0LmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTA0LDcgKzE0MTczLDYgQEAKIAkJCQk0MUUw
MkM4RTIxMjczNEI5MDBDMjdDRDYgLyogZmVjX3JhdGVfdGFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4ODdDMUU0M0JFM0MwMDYyMUU5MiAvKiBmZWNfdGVzdF9oZWxwZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxRjI2Mzg5MjEyNjdGNDAwMDI3NEY1OSAvKiBmZnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQxNjIyNUUzMjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX2ZyYW1lX2J1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0MzNEMjIxRjc5QjMzNDAwMzg3QjREIC8qIGZmdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzNkYyMTI2N0IzRTAwMjc0RjU5IC8qIGZmdDRnLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUY5QkZEMzIwNTFEREU1MDBBQkYwQjkgLyogZmZ0X2J1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xNDExOSwxMiArMTQxODcsMTAgQEAKIAkJCQk1Q0REOEM4QzFF
NDNDNjYwMDA2MjFFOTIgLyogZmlsZV91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYz
QjIyMTI2ODBBODAwMjc0RjU5IC8qIGZpbGVfd3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDEzQTIyRTExRkUxOEUwNzAwMzczRTk5IC8qIGZpbGVyb3RhdGluZ3N0cmVhbS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNDEzQTIzQkQxRkUxOEUwODAwMzczRTk5IC8qIGZpbGV1dGlscy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE0MzNDRUQxRjc5QjMzNDAwMzg3QjREIC8qIGZpbHRlcmJhbmtfaW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDMzRDBEMUY3OUIzMzQwMDM4N0I0RCAvKiBm
aWx0ZXJiYW5rX3RhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCQTExRTQzQzJCNTAw
NjIxRTkyIC8qIGZpbHRlcmVkX2NiX3ZlY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMTFBMDA0
MUU0NTc0MDAwMDRGMDk4NyAvKiBmaW5lX2F1ZGlvX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDE2MjI1RDYyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0REODk1MTFFNDNCRjNBMDA2MjFFOTIgLyogZmlyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1QzRCNEM2RTFFNDMxRjlDMDAyNjUxQzggLyogZmlyX2ZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE5QzgzMUExRkUyNDJCMjAwNDBDMzBGIC8qIGZpcl9maWx0ZXJfYy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xNDEzMywxMiArMTQxOTksMTAgQEAKIAkJCQk0MTNBMjNERjFGRTE4RTA4
MDAzNzNFOTkgLyogZmlyZXdhbGxzb2NrZXRzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
RERCMjREMjEyNjVCRDcwMDI5NkQ0NyAvKiBmaXhlZF9hcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDE1RjFGQUUyMTI3MkZCQTAwMDY0Q0JGIC8qIGZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1h
dG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTZEM0JFNDIxMjczMUMyMDA3NzVGMDkgLyogZml4
ZWRfZ2Fpbl9jb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjNCQzFGRTE4RTA4
MDAzNzNFOTkgLyogZmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4ODdGMUU0M0JFM0Mw
MDYyMUU5MiAvKiBmbGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REODUzNzFFNDNCMzlDMDA2MjFFOTIgLyogZmxleGZlY19yZWNlaXZlX3N0cmVhbS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg0QkExRTZBNUY5RjAwOTRGREM4IC8qIGZsZXhmZWNf
cmVjZWl2ZV9zdHJlYW1faW1wbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3ODEyMTY5ODcw
RjAwRUYzN0VEIC8qIHN2Y19jb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4M0NCMUZF
MjQ3QjQwMDQwQzMwRiAvKiBmbGV4ZmVjX3JlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTlDODNDRTFGRTI0N0I0MDA0MEMzMEYgLyogZmxleGZlY19zZW5kZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxM0EyMkEzMUZFMThFMDYwMDM3M0U5OSAvKiBmb3JtYXRfbWFjcm9zLmggaW4gSGVh
ZGVycyAqLywKQEAgLTE0MTUyLDggKzE0MjE2LDExIEBACiAJCQkJNUNERDhCQTMxRTQzQzJCNTAw
NjIxRTkyIC8qIGZyYW1lX2NsYXNzaWZ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODQ5QjFF
NkE1RjQxMDA5NEZEQzggLyogZnJhbWVfY29tYmluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ4MzdBMUU0MzlBMzUwMDYyMUU5MiAvKiBmcmFtZV9kcm9wcGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MUZDQkI1QTIxQjFGRTZFMDBBNURGMjcgLyogZnJhbWVfZHVtcGluZ19kZWNvZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEY5MTFFNDNDQkUwMDA2MjFFOTIgLyogZnJhbWVfbGVu
Z3RoX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4M0Q0MUU0MzlBNkYwMDYy
MUU5MiAvKiBmcmFtZV9vYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjJGMjFCMUY4
QjcwMEE1REYyNyAvKiBmcmFtZWRlY3J5cHRvcmludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDFGQ0JCMzAyMUIxRjhCNzAwQTVERjI3IC8qIGZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjJBMjFGRTE4RTA2MDAzNzNFOTkgLyogZnVuY3Rpb25f
dmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzOEUyMTI2N0Y0OTAwMjc0RjU5IC8qIGc3
MTEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDBCODI1MUU0RTMzODMwMDc0MDlFNiAvKiBnNzEx
X2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDE2NCw4ICsxNDIzMSw2IEBACiAJCQkJ
NUNERDg0QjMxRTQzQUYxMzAwNjIxRTkyIC8qIGdhaW5fY29udHJvbF9mb3JfZXhwZXJpbWVudGFs
X2FnYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg0QjUxRTQzQUYxMzAwNjIxRTkyIC8qIGdh
aW5fY29udHJvbF9pbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUEwOEJDRjIxMjcyRUUyMDAx
RDVEN0IgLyogZ2Fpbl9jb250cm9sbGVyMi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RDNCRTUy
MTI3MzFDMjAwNzc1RjA5IC8qIGdhaW5fY3VydmVfYXBwbGllci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDE4ODlENzUyMTZCQjdCOTAwNDYxNEREIC8qIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycytQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJBNTFFNDNDMkI1MDA2MjFFOTIgLyog
Z2Fpbl9kZXF1YW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODcwMzFFNDNCQTc1MDA2MjFF
OTIgLyogZ2Fpbl9tYXBfaW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkE3MUU0
M0MyQjUwMDYyMUU5MiAvKiBnYWluX3F1YW50LmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTc2LDYg
KzE0MjQxLDcgQEAKIAkJCQk1Q0REOEJBRDFFNDNDMkI1MDA2MjFFOTIgLyogZ2V0X3N5bmNfc2Vx
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjE0MTFGRTBGMEVGMDAzNzNFOTkgLyogZ2V0b3B0
X3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzJBMUU0M0JBQkUwMDYyMUU5MiAvKiBnbW0u
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjVGMjFCMUZFQzQwMEE1REYyNyAvKiBnb29nX2Nj
X2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTAyQ0FBMjEyNzM1MkQwMEMyN0NENiAv
KiBnb29nX2NjX25ldHdvcmtfY29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzMDEx
RkUxOEUwNzAwMzczRTk5IC8qIGd0ZXN0X3Byb2RfdXRpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDEzQTIyRUExRkUxOEUwNzAwMzczRTk5IC8qIGd1bml0LmggaW4gSGVhZGVycyAqLywKQEAgLTE0
MTg3LDYgKzE0MjUzLDggQEAKIAkJCQk0MTQ1RTRCRTFFRjg5NEY2MDBGQ0Y2RTYgLyogaDI2NF9w
cm9maWxlX2xldmVsX2lkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODVFQjFFNkE2MzlGMDA5
NEZEQzggLyogaDI2NF9zcHJvcF9wYXJhbWV0ZXJfc2V0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNERDgzREExRTQzOUE2RjAwNjIxRTkyIC8qIGgyNjRfc3BzX3Bwc190cmFja2VyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0MUZDQkI3MjIxQjFGRjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNCRDIxNjk4MjRCMDAyODI2NkIgLyogaGVscGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyRDgxRkUxOEUwNzAwMzczRTk5IC8qIGhlbHBlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4M0RDMUU0MzlBNkYwMDYyMUU5MiAvKiBoaXN0b2dy
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzU4MUZFMjQ2NjUwMDQwQzMwRiAvKiBoaXN0
b2dyYW1fcGVyY2VudGlsZV9jb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTk2LDcgKzE0
MjY0LDcgQEAKIAkJCQk0MUEwOEJBRDIxMjY4MUM4MDAxRDVEN0IgLyogaTAxMF9idWZmZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDRDI4NDY4MUU2QTU3RjQwMDk0RkRDOCAvKiBpNDIwX2J1ZmZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDlBQUQxRTVGQTE5MjAwQzA5NTVBIC8qIGk0MjBf
YnVmZmVyX3Bvb2wuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNDRCM0RFMjE2OUEwNzAwMDQzNjNB
QyAvKiBSVENWaWRlb0VuY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjQ5MjFCMUZE
RUYwMEE1REYyNyAvKiBpY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUEwOEJDMzIxMjY5NTc3MDAxRDVEN0IgLyogaWNlbG9nZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTMwOTFGNzFFRjhDRkJEMDA3NTdDNTUgLyogaWNlc2VydmVycGFyc2luZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE5MjQxNUEyMTI3Mzc2RjAwNjM0RkNGIC8qIGljZXRyYW5zcG9ydGlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MjMxLDYgKzE0Mjk5LDcgQEAKIAkJCQk1Q0RE
ODNFMjFFNDM5QTZGMDA2MjFFOTIgLyogaml0dGVyX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDgzRTAxRTQzOUE2RjAwNjIxRTkyIC8qIGppdHRlcl9idWZmZXJfY29tbW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0REODNFNDFFNDM5QTZGMDA2MjFFOTIgLyogaml0dGVyX2VzdGlt
YXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNTQyMUIxRkU0NjAwQTVERjI3IC8qIGpp
dHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzYzRjk0
MTFFNDE3MzdCMDAyQ0E1MzEgLyoganNlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0Y5NDMx
RTQxNzM3QjAwMkNBNTMxIC8qIGpzZXBpY2VjYW5kaWRhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDNjNGOTQ1MUU0MTczN0IwMDJDQTUzMSAvKiBqc2Vwc2Vzc2lvbmRlc2NyaXB0aW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTE0MjM5LDEyICsxNDMwOCwxMyBAQAogCQkJCTVDNjNGOERFMUU0MTZE
NTMwMDJDQTUzMSAvKiBqc29uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM2NTFGRTE4RTA3
MDAzNzNFOTkgLyoga2VlcF9yZWZfdW50aWxfZG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMw
ODg1MzAxRTRBOTlEMjAwNDAzOTk1IC8qIGtleS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JC
NkUyMUIxRkYzQTAwQTVERjI3IC8qIGtleV9kZXJpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTkyNDE5QjIxMjc1ODY1MDA2MzRGQ0YgLyoga2lzc19mZnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4NDIwMUU0MzlCMjkwMDYyMUU5MiAvKiBsZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg0QjkxRTQzQUYxMzAwNjIxRTkyIC8qIGxldmVs
X2VzdGltYXRvcl9pbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNFNjc3MzIxNjk4NjNCMDBF
RjM3RUQgLyogbGlidnB4X2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyOTQwOTUy
MTJFMTI4RDAwQUQ5NUU3IC8qIGxpYnZweF92cDhfZGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEyOTQwOTMyMTJFMTI4RDAwQUQ5NUU3IC8qIGxpYnZweF92cDhfZW5jb2Rlci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNDE3OTUzRjcyMTY5ODRCRTAwMjgyNjZCIC8qIFJUQ0VuY29kZWRJbWFn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1RjFGQjMyMTI3MkZCQTAwMDY0Q0JGIC8qIGxpbWl0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQkU3MUFCMjE1QzQ2MzcwMEE3QjE5NiAvKiBsaW5l
bWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUJFNzFCOTIxNUM0NjM3MDBBN0IxOTYgLyogbGlz
dGZtdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDI1MywxMCArMTQzMjMsMTAgQEAKIAkJCQk1Q0RE
OEMxMDFFNDNDMzQ2MDA2MjFFOTIgLyogbG9ja2VkX2JhbmR3aWR0aF9pbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTNBMjMzMjFGRTE4RTA3MDAzNzNFOTkgLyogbG9nZ2luZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTIzNTIxRkUxOEUwNzAwMzczRTk5IC8qIGxvZ3NpbmtzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0MUZDQkI2OTIxQjFGRjFCMDBBNURGMjcgLyogbG9zc19iYXNlZF9iYW5k
d2lkdGhfZXN0aW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5MjQxQzAyMTI3NTkzRjAw
NjM0RkNGIC8qIGxvc3NfcmF0ZV9maWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzA2
MUU0M0JBNzUwMDYyMUU5MiAvKiBsb3VkbmVzc19oaXN0b2dyYW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDRDI4NTVFMUU2QTYyRUQwMDk0RkRDOCAvKiBsb3dfY3V0X2ZpbHRlci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNDE2MjI1RDUyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2VuY29kZXJfZmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5MjQxNDAyMTI3MzcyNDAwNjM0RkNGIC8qIGxw
X3Jlc2lkdWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODdDNjFFNDNCQzA1MDA2MjFFOTIg
LyogbHBjX2FuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJDMjFFNDNDMkI1MDA2
MjFFOTIgLyogbHBjX2VuY29kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDI3NCwxNSArMTQzNDQs
MTcgQEAKIAkJCQk1Q0REOEJDRTFFNDNDMkI1MDA2MjFFOTIgLyogbHNwX3RvX2xzZi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzQTIzOTcxRkUxOEUwODAwMzczRTk5IC8qIG1hY3V0aWxzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0QyODVDQzFFNkE2MzQzMDA5NEZEQzggLyogbWFpbl9maWx0ZXJf
dXBkYXRlX2dhaW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjNEMjFCMUZENDAwMEE1REYy
NyAvKiBtYXRjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1RDAxRTZBNjM0MzAwOTRGREM4
IC8qIG1hdGNoZWRfZmlsdGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTQ0QjNERjIxNjlBMDcw
MDA0MzYzQUMgLyogUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNEMjg1Q0UxRTZBNjM0MzAwOTRGREM4IC8qIG1hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODM1OTFGRTI0NjY1MDA0MEMzMEYgLyogbWF0aHV0
aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkZENjIwNTFEREU1MDBBQkYwQjkgLyogbWF0
cml4X2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFCRTcxQjgyMTVDNDYzNzAwQTdCMTk2
IC8qIG1kNS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNDYyMUIxRkRFRjAwQTVERjI3IC8q
IG1kbnNfbWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg2QTUxRTQzQjk5NDAwNjIx
RTkyIC8qIG1lYW5fdmFyaWFuY2VfZXN0aW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
ODNFNjFFNDM5QTZGMDA2MjFFOTIgLyogbWVkaWFfb3B0X3V0aWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4M0U4MUU0MzlBNkYwMDYyMUU5MiAvKiBtZWRpYV9vcHRpbWl6YXRpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQxRkNCQjBGMjFCMUY1MzcwMEE1REYyNyAvKiBtZWRpYV90cmFuc3Bv
cnRfaW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDhFNTFFNDJDMUUzMDAyNjUx
QzggLyogbWVkaWFjaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTAyRjZCMjIxMjczMzMx
MDA2QUU4RDcgLyogbWVkaWFjb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNEI0OEU3MUU0
MkMxRTMwMDI2NTFDOCAvKiBtZWRpYWNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDI5
OCw2ICsxNDM3MCw3IEBACiAJCQkJNUNEMjg2MzMxRTZBNjdCRjAwOTRGREM4IC8qIG1lZGlhdHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTA4QkI4MjEyNjhBN0QwMDFENUQ3QiAvKiBtZW1v
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzA5MUZFMThFMDcwMDM3M0U5OSAvKiBtZW1v
cnlfdXNhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjg1MjFCMjAwN0IwMEE1REYyNyAv
KiBtZW11dGlsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEEzMDFFNDNCRkIzMDA2MjFFOTIg
LyogbWVyZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMkZBMUZFMThFMDcwMDM3M0U5OSAv
KiBtZXNzYWdlZGlnZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjJCOTFGRTE4RTA3MDAz
NzNFOTkgLyogbWVzc2FnZWhhbmRsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQzMDYsMjEgKzE0
Mzc5LDIzIEBACiAJCQkJNUMxMUEwMDUxRTQ1NzQwMDAwNEYwOTg3IC8qIG1vY2tfYXVkaW9fZGV2
aWNlX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhGRUQxRTQzQ0RDQTAwNjIxRTky
IC8qIG1vY2tfYXVkaW9fcHJvY2Vzc2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzNTYx
RkUyNDY2NTAwNDBDMzBGIC8qIG1vZF9vcHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTVDREQ4MzdF
MUU0MzlBMzUwMDYyMUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDE3OTUzRTQyMTY5ODNDQTAwMjgyNjZCIC8qIG1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDE3OTUzRTcyMTY5ODNDQTAwMjgyNjZCIC8qIG1vZHVsZV9jb21tb25fdHlwZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxNzk1M0U1MjE2OTgzQ0EwMDI4MjY2QiAvKiBtb2R1bGVfY29tbW9uX3R5
cGVzX3B1YmxpYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzRTMyMTY5ODNDQTAwMjgyNjZC
IC8qIG1vZHVsZV9mZWNfdHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjE2MjFCMUY3
QUEwMEE1REYyNyAvKiBtb3ZpbmdfYXZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2
MTExRTZBNjRDOTAwOTRGREM4IC8qIG1vdmluZ19tYXguaCBpbiBIZWFkZXJzICovLAotCQkJCTQx
ODg5RDc4MjE2QkM0RUMwMDQ2MTRERCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyK1ByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzU1MUZFMjQ2NjUwMDQwQzMwRiAvKiBtb3Zp
bmdfbWF4X2NvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzUyMUZFMjQ2NjUwMDQw
QzMwRiAvKiBtb3ZpbmdfbWVkaWFuX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhD
OEYxRTQzQzY2MDAwNjIxRTkyIC8qIG1vdmluZ19tb21lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0REOEJEMDFFNDNDMkI1MDA2MjFFOTIgLyogbXlfY29yci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDg5NTQxRTQzQkYzQTAwNjIxRTkyIC8qIG5hY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4M0U5MUU0MzlBNkYwMDYyMUU5MiAvKiBuYWNrX2ZlY190YWJsZXMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQxNzk1M0VFMjE2OTg0MjEwMDI4MjY2QiAvKiB2cDlfcHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNERDgzRUIxRTQzOUE2RjAwNjIxRTkyIC8qIG5hY2tfbW9kdWxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEEzMzFFNDNCRkIzMDA2MjFFOTIgLyogbmFja190cmFj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ1RTRCNzFFRjg5NDNFMDBGQ0Y2RTYgLyogbmFs
dV9yZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzQkYyMTY5ODI0QjAwMjgyNjZC
IC8qIG5hbHVfcmV3cml0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMkM0MUZFMThFMDcw
MDM3M0U5OSAvKiBuYXRzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNDRCM0UwMjE2OUEw
NzAwMDQzNjNBQyAvKiBSVENWaWRlb0RlY29kZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjJEOTFGRTE4RTA3MDAzNzNFOTkgLyogbmF0c29ja2V0ZmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTIyRTcxRkUxOEUwNzAwMzczRTk5IC8qIG5hdHR5cGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0REOEJEMjFFNDNDMkI1MDA2MjFFOTIgLyogbmVhcmVzdF9uZWlnaGJv
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDMzNSw3ICsxNDQxMCw2IEBACiAJCQkJNDFFMDJDQ0Yy
MTI3MzVCNzAwQzI3Q0Q2IC8qIG5ldHdvcmtfY29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFFMDJDQ0UyMTI3MzVCNzAwQzI3Q0Q2IC8qIG5ldHdvcmtfdHlwZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxM0EyMzdDMUZFMThFMDcwMDM3M0U5OSAvKiBuZXR3b3JrbW9uaXRvci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNDEzRTY3OTEyMTY5ODdEQjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRnJhbWVC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMkMyMUZFMThFMDcwMDM3M0U5OSAvKiBu
ZXR3b3Jrcm91dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzJCMUU0M0JBQkUwMDYyMUU5
MiAvKiBub2lzZV9nbW1fdGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTVGMUZCNDIxMjcy
RkJBMDAwNjRDQkYgLyogbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmggaW4gSGVhZGVycyAqLywK
QEAgLTE0MzQzLDExICsxNDQxNywxMiBAQAogCQkJCTVDREQ4NEVBMUU0M0IwQjYwMDYyMUU5MiAv
KiBub2lzZV9zdXBwcmVzc2lvbl9pbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODVGRDFF
NDNCODRFMDA2MjFFOTIgLyogbm9pc2Vfc3VwcHJlc3Npb25feC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDhBM0UxRTQzQkZCMzAwNjIxRTkyIC8qIG5vcm1hbC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDE3OTUzRUIyMTY5ODNGMTAwMjgyNjZCIC8qIHJ0dF9tdWx0X2V4cGVyaW1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQxRkNCQjU1MjFCMUZFNDYwMEE1REYyNyAvKiBub3JtYWxpemVfc2lt
dWxjYXN0X3NpemVfZXhwZXJpbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg2QTgxRTQz
Qjk5NDAwNjIxRTkyIC8qIG5vcm1hbGl6ZWRfY292YXJpYW5jZV9lc3RpbWF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDNjNGOTU0MUU0MTczN0IwMDJDQTUzMSAvKiBub3RpZmllci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNERDg2MDExRTQzQjg0RTAwNjIxRTkyIC8qIG5zX2NvcmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxRUNFQUMxMjA2NDBGMjgwMDlENTE0MSAvKiBOU1N0cmluZytTdGRT
dHJpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNDRCM0VGMjE2OUM2M0YwMDQzNjNBQyAvKiBO
U1N0cmluZytTdGRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NjA2MUU0M0I4NEUw
MDYyMUU5MiAvKiBuc3hfY29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg2MDcxRTQzQjg0
RTAwNjIxRTkyIC8qIG5zeF9kZWZpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODNCNDFG
RTI0NzJFMDA0MEMzMEYgLyogbnVsbF9hdWRpb19wb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MTQzNTUsMTQgKzE0NDMwLDE4IEBACiAJCQkJNUMwODg1MzIxRTRBOTlEMjAwNDAzOTk1IC8qIG51
bGxfY2lwaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjNDMDFGRTE4RTA4MDAzNzNFOTkg
LyogbnVsbHNvY2tldHNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1MzMxRTZBNjEx
MTAwOTRGREM4IC8qIG51bGx3ZWJydGN2aWRlb2VuZ2luZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDE2MjI1RTMyMTY5ODE5NTAwQTkxQzlCIC8qIG9iamNfZnJhbWVfYnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MTYyMjVFODIxNjk4MTk1MDBBOTFDOUIgLyogb2JqY192aWRlb19kZWNvZGVy
X2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNjIyNUU1MjE2OTgxOTUwMEE5MUM5QiAv
KiBvYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2MjI1
RTkyMTY5ODE5NTAwQTkxQzlCIC8qIG9iamNfdmlkZW9fZnJhbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxM0EyMzM2MUZFMThFMDcwMDM3M0U5OSAvKiBvbmV0aW1lZXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4Njk1MUU0M0I5MzkwMDYyMUU5MiAvKiBvb3VyYV9mZnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDREQ4NjkyMUU0M0I5MzkwMDYyMUU5MiAvKiBvb3VyYV9mZnRfdGFibGVz
X2NvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCN0UyMUIxRkZGNjAwQTVERjI3IC8q
IG9wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEREIy
NjYyMTI2NzlBMzAwMjk2RDQ3IC8qIG9wZW5zc2xjZXJ0aWZpY2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFEREIyNjMyMTI2NzlBMzAwMjk2RDQ3IC8qIG9wZW5zc2xzZXNzaW9uY2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxRERCMjYxMjEyNjc5QTMwMDI5NkQ0NyAvKiBvcGVuc3NsdXRp
bGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEREIyNTEyMTI2NUJFOTAwMjk2RDQ3IC8qIG9w
dGlvbmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNBMjM0NTFGRTE4RTA3MDAzNzNFOTkgLyog
b3B0aW9uc2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QzY2MUU0M0M2MDkwMDYyMUU5
MiAvKiBvcHVzX2luc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QzY4MUU0M0M2MDkwMDYy
MUU5MiAvKiBvcHVzX2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3Q0YxRTQz
QkMwNTAwNjIxRTkyIC8qIG9zX3NwZWNpZmljX2lubGluZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NDM3OCw3ICsxNDQ1Nyw2IEBACiAJCQkJNDFGMjYzOTkyMTI2N0Y1RTAwMjc0RjU5IC8qIHBhX3Jp
bmdidWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4RkEzMUU0M0NDQkUwMDYyMUU5MiAv
KiBwYWNlZF9zZW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzJFMUZFMjQ1Q0QwMDQw
QzMwRiAvKiBwYWNlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE5MjQxOEQyMTI3NDlDODAwNjM0
RkNGIC8qIHBhY2VyX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkQ0MUU0
M0MyQjUwMDYyMUU5MiAvKiBwYWNrX2JpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4M0VG
MUU0MzlBNkYwMDYyMUU5MiAvKiBwYWNrZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QUIw
MUU0M0MwMEYwMDYyMUU5MiAvKiBwYWNrZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTQzODYsNyAr
MTQ0NjQsNiBAQAogCQkJCTVDREQ4QTQxMUU0M0JGQjMwMDYyMUU5MiAvKiBwYWNrZXRfYnVmZmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODNFRDFFNDM5QTZGMDA2MjFFOTIgLyogcGFja2V0
X2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4OEQxRTQzQkUzQzAwNjIxRTkyIC8q
IHBhY2tldF9sb3NzX3N0YXRzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNFNjc5NTIxNjk4ODE5
MDBFRjM3RUQgLyogc3ZjX3JhdGVfYWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTky
NDFDODIxMjc1OTNGMDA2MzRGQ0YgLyogcGFja2V0X251bWJlcl9pbmRleGVkX3F1ZXVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTAyRjZCOTIxMjczMzgyMDA2QUU4RDcgLyogcGFja2V0X3JlY2Vp
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEZBNTFFNDNDQ0JFMDA2MjFFOTIgLyogcGFj
a2V0X3JvdXRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDM5NSw3ICsxNDQ3Miw2IEBACiAJCQkJ
NUM2M0Y5RjQxRTQxNzRGNjAwMkNBNTMxIC8qIHBhY2tldHNvY2tldGZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDNjNGOUY1MUU0MTc0RjYwMDJDQTUzMSAvKiBwYWNrZXR0cmFuc3BvcnRp
bnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4M0Q5MUZFMjQ3RjIwMDQwQzMwRiAv
KiBwYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzQTIzOTAx
RkUxOEUwODAwMzczRTk5IC8qIHBhdGh1dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjQ4
ODQxRTQyQzFCQTAwMjY1MUM4IC8qIHBheWxvYWRfdHlwZV9tYXBwZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDREQ5MDAxMUU0M0NFM0EwMDYyMUU5MiAvKiBwY20xNmIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDRDI4NTAwMUU2QTYwNTcwMDk0RkRDOCAvKiBwZWVyY29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xNDQwNSw3ICsxNDQ4MSw2IEBACiAJCQkJNDEwMkY2OTUyMTI3MzIwNjAw
NkFFOEQ3IC8qIHBlZXJjb25uZWN0aW9uaW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
NjNGOTVCMUU0MTczN0IwMDJDQTUzMSAvKiBwZWVyY29ubmVjdGlvbnByb3h5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MUY5QkZFMDIwNTFERTE4MDBBQkYwQjkgLyogcGVlcmNvbm5lY3Rpb253cmFw
cGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5NTNCQjIxNjk4MjQyMDAyODI2NkIgLyogUlRD
RGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzRF
MUZFMjQ2NjUwMDQwQzMwRiAvKiBwZXJjZW50aWxlX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFCRTcxQzAyMTVDNDYzNzAwQTdCMTk2IC8qIHBoYXNoLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjNFQTFGRTE4RTA4MDAzNzNFOTkgLyogcGh5c2ljYWxzb2NrZXRzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTQ0MjYsMTAgKzE0NTAxLDggQEAKIAkJCQk0MTNBMjMxRDFGRTE4RTA3
MDAzNzNFOTkgLyogcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0REODg5MDFFNDNCRTNDMDA2MjFFOTIgLyogcGxheW91dF9kZWxheV9vcmFjbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDREQ4OTU3MUU0M0JGM0EwMDYyMUU5MiAvKiBwbGkuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQxM0U2NzZDMjE2OTg1NEIwMEVGMzdFRCAvKiBSVENXcmFwcGVkTmF0aXZlVmlk
ZW9FbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODczNDFFNDNCQUJFMDA2MjFFOTIg
LyogcG9sZV96ZXJvX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCRDYxRTQzQzJC
NTAwNjIxRTkyIC8qIHBvbHlfdG9fbHNmLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5NTNCRjIx
Njk4MjRCMDAyODI2NkIgLyogbmFsdV9yZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
RDhCRDgxRTQzQzJCNTAwNjIxRTkyIC8qIHBvbHlfdG9fbHNwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1QzYzRjlGODFFNDE3NEY2MDAyQ0E1MzEgLyogcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUM2M0Y5RkIxRTQxNzRGNjAwMkNBNTMxIC8qIHBvcnRhbGxvY2F0b3IuaCBpbiBIZWFkZXJzICov
LApAQCAtMTQ0NDYsMjAgKzE0NTE5LDE3IEBACiAJCQkJNDEzQTIzMUYxRkUxOEUwNzAwMzczRTk5
IC8qIHByb3h5aW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzQzUxRkUxOEUwODAwMzcz
RTk5IC8qIHByb3h5c2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzYzRjlGRjFFNDE3NEY2
MDAyQ0E1MzEgLyogcHNldWRvdGNwLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTA2RDU2RDIxNkMy
QkFBMDAxRTNDNDAgLyogc3RyaW5nX3ZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4OTU5
MUU0M0JGM0EwMDYyMUU5MiAvKiBwc2ZiLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODc1NjFF
NDNCQUY1MDA2MjFFOTIgLyogcHVzaF9zaW5jX3Jlc2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDgzODIxRTQzOUEzNTAwNjIxRTkyIC8qIHF1YWxpdHlfc2NhbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTkyNDE2QzIxMjczODlCMDA2MzRGQ0YgLyogcXVhbGl0eV9zY2FsaW5nX2V4
cGVyaW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjJCMUU2QTY2QzgwMDk0RkRDOCAv
KiBxdWFsaXR5X3RocmVzaG9sZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NEIzRDQyMTY5ODk2
RDAwNDM2M0FDIC8qIFJUQ05hdGl2ZUk0MjBCdWZmZXIrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDEzQTIzRUYxRkUxOEUwODAwMzczRTk5IC8qIHJhY2VfY2hlY2tlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTIzNEMxRkUxOEUwNzAwMzczRTk5IC8qIHJhbmRvbS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNERDhBNEIxRTQzQkZCMzAwNjIxRTkyIC8qIHJhbmRvbV92ZWN0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDREQ4OTVDMUU0M0JGM0EwMDYyMUU5MiAvKiByYXBpZF9yZXN5
bmNfcmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzNjAxRkUxOEUwNzAwMzczRTk5
IC8qIHJhdGVfbGltaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzMEQxRkUxOEUwNzAw
MzczRTk5IC8qIHJhdGVfc3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NEIzRUYy
MTY5QzYzRjAwNDM2M0FDIC8qIE5TU3RyaW5nK1N0ZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQTIzMDQxRkUxOEUwNzAwMzczRTk5IC8qIHJhdGV0cmFja2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUEwOEJDQjIxMjY5NjFGMDAxRDVEN0IgLyogcmF3X2xvZ2dpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDMDg4NTMzMUU0QTk5RDIwMDQwMzk5NSAvKiByZGIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTQ0ODMsNyArMTQ1NTMsNiBAQAogCQkJCTVDNjNGQTAyMUU0MTc0RjYwMDJDQTUz
MSAvKiByZWxheXBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGQTA1MUU0MTc0RjYwMDJD
QTUzMSAvKiByZWxheXNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg5NjIxRTQzQkYz
QTAwNjIxRTkyIC8qIHJlbWIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0U2NzdFMjE2OTg2QUUw
MEVGMzdFRCAvKiBydHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTAyRjZBNzIxMjczMjYyMDA2QUU4RDcgLyogcmVtaXhfcmVzYW1wbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4RkRDMUU0M0NENjYwMDYyMUU5MiAvKiByZW1vdGVfYml0cmF0ZV9lc3Rp
bWF0b3JfYWJzX3NlbmRfdGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhGREUxRTQzQ0Q2
NjAwNjIxRTkyIC8qIHJlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmggaW4g
SGVhZGVycyAqLywKQEAgLTE0NTE2LDcgKzE0NTg1LDYgQEAKIAkJCQk0MUY5QkZBOTIwNTFDOEUy
MDBBQkYwQjkgLyogcnRjX2V2ZW50X2Fscl9zdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5
QzgzOUQxRkUyNDZGOTAwNDBDMzBGIC8qIHJ0Y19ldmVudF9hdWRpb19uZXR3b3JrX2FkYXB0YXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4Mzk4MUZFMjQ2RjkwMDQwQzMwRiAvKiBydGNf
ZXZlbnRfYXVkaW9fcGxheW91dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3OEEyMTY5ODdC
OTAwRUYzN0VEIC8qIFJUQ0NWUGl4ZWxCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4
M0ExMUZFMjQ2RjkwMDQwQzMwRiAvKiBydGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29u
ZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODM4RTFGRTI0NkY5MDA0MEMzMEYgLyogcnRj
X2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5
QzgzOTMxRkUyNDZGOTAwNDBDMzBGIC8qIHJ0Y19ldmVudF9id2VfdXBkYXRlX2RlbGF5X2Jhc2Vk
LmggaW4gSGVhZGVycyAqLywKQEAgLTE0NTI5LDcgKzE0NTk3LDYgQEAKIAkJCQk0MTlDODQyMzFG
RTI0QkE2MDA0MEMzMEYgLyogcnRjX2V2ZW50X2xvZ19vdXRwdXRfZmlsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE5QzgzOUYxRkUyNDZGOTAwNDBDMzBGIC8qIHJ0Y19ldmVudF9wcm9iZV9jbHVz
dGVyX2NyZWF0ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4M0EwMUZFMjQ2RjkwMDQwQzMw
RiAvKiBydGNfZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxNDRCM0QyMjE2OTg5NkQwMDQzNjNBQyAvKiBSVENOYXRpdmVJNDIwQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTlDODM5QTFGRTI0NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X3Byb2Jl
X3Jlc3VsdF9zdWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODM5MDFGRTI0NkY5MDA0
MEMzMEYgLyogcnRjX2V2ZW50X3J0Y3BfcGFja2V0X2luY29taW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTlDODM5NDFGRTI0NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X3J0Y3BfcGFja2V0X291
dGdvaW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NTM3LDcgKzE0NjA0LDYgQEAKIAkJCQk0MTlD
ODNBQjFGRTI0NzA4MDA0MEMzMEYgLyogcnRjX2V2ZW50X3J0cF9wYWNrZXRfb3V0Z29pbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxOUM4M0FFMUZFMjQ3MDgwMDQwQzMwRiAvKiBydGNfZXZlbnRf
dmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODNC
MDFGRTI0NzA4MDA0MEMzMEYgLyogcnRjX2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzRDQyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxf
c2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5Qzg0MUUxRkUyNEFFRjAwNDBDMzBGIC8qIHJ0
Y19zdHJlYW1fY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ2MjFGRTE5OTFBMDAz
NzNFOTkgLyogUlRDQXVkaW9TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ1ODFG
RTE5OTFBMDAzNzNFOTkgLyogUlRDQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xNDU0NSwyMSArMTQ2MTEsMjggQEAKIAkJCQk0MTNBMjQ1NzFGRTE5OTFBMDAz
NzNFOTkgLyogUlRDQXVkaW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NUIxRkUx
OTkxQTAwMzczRTk5IC8qIFJUQ0NhbWVyYVByZXZpZXdWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjQ0RDFGRTE5OTFBMDAzNzNFOTkgLyogUlRDQ2FtZXJhVmlkZW9DYXB0dXJlci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzRjkyMTY5ODRCRTAwMjgyNjZCIC8qIFJUQ0k0MjBCdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzIzMUZFMThFMDcwMDM3M0U5OSAvKiBydGNj
ZXJ0aWZpY2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyREIxRkUxOEUwNzAwMzczRTk5
IC8qIHJ0Y2NlcnRpZmljYXRlZ2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNG
ODIxNjk4NEJFMDAyODI2NkIgLyogUlRDQ29kZWNTcGVjaWZpY0luZm8uaCBpbiBIZWFkZXJzICov
LAorCQkJCTQxNzk1M0JBMjE2OTgyNDIwMDI4MjY2QiAvKiBSVENDb2RlY1NwZWNpZmljSW5mb0gy
NjQrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzQzAyMTY5ODI0QjAwMjgyNjZC
IC8qIFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0
NDQxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0NvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxM0U2NzhBMjE2OTg3QjkwMEVGMzdFRCAvKiBSVENDVlBpeGVsQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTNBMjQ1NTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDRGF0YUNoYW5uZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDcwMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENEYXRh
Q2hhbm5lbENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNjIyNUQyMjE2OTgx
ODEwMEE5MUM5QiAvKiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxNzk1M0JCMjE2OTgyNDIwMDI4MjY2QiAvKiBSVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzQzIyMTY5ODI0QjAwMjgyNjZCIC8qIFJUQ0Rl
ZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ1MjFG
RTE5OTFBMDAzNzNFOTkgLyogUlRDRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEz
QTI0NUQxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0VBR0xWaWRlb1ZpZXcuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQxNDRCM0Y2MjE2QjA4MUIwMDQzNjNBQyAvKiBSVENFbmNvZGVkSW1hZ2UrUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzRjcyMTY5ODRCRTAwMjgyNjZCIC8qIFJUQ0Vu
Y29kZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGNDExQjExRUY4REEwMjAwMzQzQzI2
IC8qIHJ0Y2Vycm9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5NTNFNTIxNjk4M0NBMDAyODI2
NkIgLyogbW9kdWxlX2NvbW1vbl90eXBlc19wdWJsaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
RjlCRjg4MjA1MUM4MDEwMEFCRjBCOSAvKiBydGNldmVudGxvZ291dHB1dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDEzQTI0NDAxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0ZpZWxkVHJpYWxzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTNBMjQ1QTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDRmlsZUxvZ2dl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NTYxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0Zp
bGVWaWRlb0NhcHR1cmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNDMzIxNjk4MjRCMDAy
ODI2NkIgLyogUlRDSDI2NFByb2ZpbGVMZXZlbElkLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5
NTNGOTIxNjk4NEJFMDAyODI2NkIgLyogUlRDSTQyMEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQTI0NEUxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0ljZUNhbmRpZGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTI0NUUxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0ljZVNlcnZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NDgxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0ludGVydmFs
UmFuZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ1NzQsMTIgKzE0NjQ3LDEzIEBACiAJCQkJNDEz
QTI0NkExRkUxOTkxQTAwMzczRTk5IC8qIFJUQ01ldHJpY3NTYW1wbGVJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTNBMjQ2NzFGRTE5OTFBMDAzNzNFOTkgLyogUlRDTVRMTlNWaWRlb1ZpZXcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDcxMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENNVExW
aWRlb1ZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNDRCM0Q0MjE2OTg5NkQwMDQzNjNBQyAv
KiBSVENOYXRpdmVJNDIwQnVmZmVyK1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNDRC
M0QyMjE2OTg5NkQwMDQzNjNBQyAvKiBSVENOYXRpdmVJNDIwQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MTQ0QjNENTIxNjk4OTZEMDA0MzYzQUMgLyogUlRDTmF0aXZlTXV0YWJsZUk0MjBC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDU5MUZFMTk5MUEwMDM3M0U5OSAvKiBS
VENOU0dMVmlkZW9WaWV3LmggaW4gSGVhZGVycyAqLywKLQkJCQk1Q0REOEE1MDFFNDNCRkIzMDA2
MjFFOTIgLyogcnRjcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgyQjIxRkUyMERDRDAwNDBD
MzBGIC8qIHJ0Y3BfZGVtdXhlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1RkIxRTZBNjQ1
MjAwOTRGREM4IC8qIHJ0Y3BfbmFja19zdGF0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4
OTgxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0Y3BfcGFja2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0
MTQ0QjNFQjIxNjlDNUUzMDA0MzYzQUMgLyogUlRDVmlkZW9Db2RlY0luZm8rUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgyQkQxRkUyMERDRDAwNDBDMzBGIC8qIHJ0Y3BfcGFja2V0
X3NpbmtfaW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODg5QjFFNDNCRTNDMDA2
MjFFOTIgLyogcnRjcF9yZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4OUUxRTQz
QkUzQzAwNjIxRTkyIC8qIHJ0Y3Bfc2VuZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NTg4LDE1
ICsxNDY2MiwxNyBAQAogCQkJCTQxOUM4MzA1MUZFMjBGMDIwMDQwQzMwRiAvKiBydGNwX3RyYW5z
Y2VpdmVyX2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDNFMUZFMTk5MUEwMDM3M0U5
OSAvKiBSVENQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NjMxRkUx
OTkxQTAwMzczRTk5IC8qIFJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNDE3OTUzQzIyMTY5ODI0QjAwMjgyNjZCIC8qIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJG
YWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ2QzFGRTE5OTFBMDAzNzNFOTkgLyog
UlRDUnRwQ29kZWNQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTg4OUQ3NTIxNkJC
N0I5MDA0NjE0REQgLyogUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzK1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxODg5RDc2MjE2QkM0RUMwMDQ2MTRERCAvKiBSVENSdHBFbmNvZGluZ1Bh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDRDMUZFMTk5MUEwMDM3M0U5OSAv
KiBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxODg5RDc4
MjE2QkM0RUMwMDQ2MTRERCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyK1ByaXZhdGUuaCBp
biBIZWFkZXJzICovLAorCQkJCTQxM0U2N0ExMjE2OTg4OTUwMEVGMzdFRCAvKiBSVENSdHBGcmFn
bWVudGF0aW9uSGVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ0NTFGRTE5OTFBMDAz
NzNFOTkgLyogUlRDUnRwUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0M0Ix
RkUxOTkxQTAwMzczRTk5IC8qIFJUQ1J0cFJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTNBMjQ1QzFGRTE5OTFBMDAzNzNFOTkgLyogUlRDUnRwU2VuZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNBMjQ0QTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ2NjFGRTE5OTFBMDAzNzNFOTkgLyogUlRDU1NMQWRh
cHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzQzYyMTY5ODI0QjAwMjgyNjZCIC8qIFJU
Q1ZpZGVvRGVjb2RlckgyNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDVFNEM4MUVGODk2RDcw
MEZDRjZFNiAvKiBydGNzdGF0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0NUU0QzcxRUY4OTZE
NzAwRkNGNkU2IC8qIHJ0Y3N0YXRzX29iamVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4
NTA4MUU2QTYwNTcwMDk0RkRDOCAvKiBydGNzdGF0c2NvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xNDYwNywxOSArMTQ2ODMsMzcgQEAKIAkJCQk0MTNBMjQzRDFGRTE5OTFBMDAzNzNFOTkg
LyogUlRDVmlkZW9DYXB0dXJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFQ0VBQjYyMDYzMDEw
ODAwOUQ1MTQxIC8qIFJUQ1ZpZGVvQ29kZWMrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDEzQTI0NDMxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ1ZpZGVvQ29kZWMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQxM0U2NzY2MjE2OTg1NEIwMEVGMzdFRCAvKiBSVENWaWRlb0NvZGVjQ29uc3RhbnRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ1MzFGRTE5OTFBMDAzNzNFOTkgLyogUlRDVmlk
ZW9Db2RlY0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDNDMUZFMTk5MUEwMDM3
M0U5OSAvKiBSVENWaWRlb0NvZGVjSDI2NC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE0NEIzRUIy
MTY5QzVFMzAwNDM2M0FDIC8qIFJUQ1ZpZGVvQ29kZWNJbmZvK1ByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQxM0U2Nzk5MjE2OTg4MzkwMEVGMzdFRCAvKiBSVENWaWRlb0NvZGVjSW5mby5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDE0NEIzREQyMTY5QTA3MDAwNDM2M0FDIC8qIFJUQ1ZpZGVv
RGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE0NEIzRTAyMTY5QTA3MDAwNDM2M0FDIC8q
IFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0M1MjE2
OTgyNEIwMDI4MjY2QiAvKiBSVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDE3OTUzQzYyMTY5ODI0QjAwMjgyNjZCIC8qIFJUQ1ZpZGVvRGVjb2RlckgyNjQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDY1MUZFMTk5MUEwMDM3M0U5OSAvKiBSVENWaWRl
b0RlY29kZXJWUDguaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDYwMUZFMTk5MUEwMDM3M0U5
OSAvKiBSVENWaWRlb0RlY29kZXJWUDkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNDRCM0RFMjE2
OUEwNzAwMDQzNjNBQyAvKiBSVENWaWRlb0VuY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
NDRCM0RGMjE2OUEwNzAwMDQzNjNBQyAvKiBSVENWaWRlb0VuY29kZXJGYWN0b3J5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0MTc5NTNDODIxNjk4MjRCMDAyODI2NkIgLyogUlRDVmlkZW9FbmNvZGVy
RmFjdG9yeUgyNjQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0M5MjE2OTgyNEIwMDI4MjY2
QiAvKiBSVENWaWRlb0VuY29kZXJIMjY0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNFNjdBMDIx
Njk4ODk1MDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MTQ0QjNFQTIxNjlDNUUzMDA0MzYzQUMgLyogUlRDVmlkZW9FbmNvZGVyU2V0
dGluZ3MrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEzRTY3ODUyMTY5ODc3RDAwRUYz
N0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNF
Njc2OTIxNjk4NTRCMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyVlA4LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTNBMjQ2RTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDVmlkZW9FbmNvZGVyVlA4Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ0NjFGRTE5OTFBMDAzNzNFOTkgLyogUlRDVmlkZW9F
bmNvZGVyVlA5LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNFNjc3MzIxNjk4NjNCMDBFRjM3RUQg
LyogbGlidnB4X2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NEYxRkUxOTkx
QTAwMzczRTk5IC8qIFJUQ1ZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxM0U2NzhG
MjE2OTg3REIwMEVGMzdFRCAvKiBSVENWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MTNFNjc5MTIxNjk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTI0NDExRkUxOTkxQTAwMzczRTk5IC8qIFJUQ1ZpZGVvRnJhbWVCdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDZGMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENW
aWRlb1JlbmRlcmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ2MTFGRTE5OTFBMDAzNzNF
OTkgLyogUlRDVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDUwMUZFMTk5
MUEwMDM3M0U5OSAvKiBSVENWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQz
QTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDVmlkZW9WaWV3U2hhZGluZy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDEzRTY3NkEyMTY5ODU0QjAwRUYzN0VEIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0Rl
Y29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxM0U2NzZDMjE2OTg1NEIwMEVGMzdFRCAvKiBS
VENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODJC
ODFGRTIwRENEMDA0MEMzMEYgLyogcnRwX2NvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5
QzgzQzkxRkUyNDdCNDAwNDBDMzBGIC8qIHJ0cF9jdm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MzA5MjAxMUVGOEQwQTYwMDc1N0M1NSAvKiBydHBfZGVtdXhlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xNDYzMCwxMSArMTQ3MjQsMTEgQEAKIAkJCQk1Q0REODhBQzFFNDNCRTNDMDA2MjFFOTIgLyog
cnRwX2Zvcm1hdF92cDguaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4OEFGMUU0M0JFM0MwMDYy
MUU5MiAvKiBydHBfZm9ybWF0X3ZwOS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgzRjcxRTQz
OUE2RjAwNjIxRTkyIC8qIHJ0cF9mcmFtZV9yZWZlcmVuY2VfZmluZGVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0MTc5NTNENjIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9yZWNlaXZlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0REOEFCOTFFNDNDMDBGMDA2MjFFOTIgLyogcnRwX2dlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMDJDN0IyMTI3MzQ3NDAwQzI3Q0Q2IC8qIHJ0cF9n
ZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTAyQzc5MjEy
NzM0NzQwMEMyN0NENiAvKiBydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzQzQxRkUyNDdCNDAwNDBDMzBGIC8qIHJ0cF9oZWFk
ZXJfZXh0ZW5zaW9uX21hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEzRTY3N0UyMTY5ODZBRTAw
RUYzN0VEIC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4OEI2MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxOUM4M0NDMUZFMjQ3QjQwMDQwQzMwRiAvKiBydHBfaGVhZGVyX3Bh
cnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGOUJGOEQyMDUxQzgwMTAwQUJGMEI5IC8qIHJ0
cF9oZWFkZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjQyLDcgKzE0NzM2LDYgQEAKIAkJCQk1
Q0REODhCQTFFNDNCRTNEMDA2MjFFOTIgLyogcnRwX3BhY2tldF9oaXN0b3J5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REODhCQjFFNDNCRTNEMDA2MjFFOTIgLyogcnRwX3BhY2tldF9yZWNlaXZl
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgyQjYxRkUyMERDRDAwNDBDMzBGIC8qIHJ0cF9w
YWNrZXRfc2lua19pbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0U2NzhGMjE2OTg3
REIwMEVGMzdFRCAvKiBSVENWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODhC
QzFFNDNCRTNEMDA2MjFFOTIgLyogcnRwX3BhY2tldF90b19zZW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MUQ2QjQ1QTIxMjczMTU5MDA4RjkzNTMgLyogcnRwX3BheWxvYWRfcGFyYW1zLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTlDODNDMzFGRTI0N0I0MDA0MEMzMEYgLyogcnRwX3J0Y3AuaCBp
biBIZWFkZXJzICovLApAQCAtMTQ2NzksNiArMTQ3NzIsNyBAQAogCQkJCTQxOUM4MkRCMUZFMjBF
NTkwMDQwQzMwRiAvKiBydHB0cmFuc3BvcnRpbnRlcm5hbGFkYXB0ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDNEI0OEYyMUU0MkMxRTMwMDI2NTFDOCAvKiBydHB1dGlscy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNERDgzRjkxRTQzOUE2RjAwNjIxRTkyIC8qIHJ0dF9maWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxNzk1M0VCMjE2OTgzRjEwMDI4MjY2QiAvKiBydHRfbXVsdF9leHBlcmlt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDFDQjIxMjc1OTNGMDA2MzRGQ0YgLyogcnR0
X3N0YXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODJDMjFGRTIwRENEMDA0MEMzMEYgLyog
cnR4X3JlY2VpdmVfc3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDE2MjIxMjczODVC
MDA2MzRGQ0YgLyogcndfbG9ja19wb3NpeC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDY5MCw2ICsx
NDc4NCw3IEBACiAJCQkJNDEzQTIzMjgxRkUxOEUwNzAwMzczRTk5IC8qIHNhbml0aXplci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE2RDNCRUEyMTI3MzFDMjAwNzc1RjA5IC8qIHNhdHVyYXRpb25f
cHJvdGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjMwNTFGRTE4RTA3MDAzNzNFOTkg
Lyogc2NvcGVkX3JlZl9wdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjEwMjFCMUY1Mzcw
MEE1REYyNyAvKiBzY29wZWRfcmVmcHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkZCNjIw
NTFDOTM2MDBBQkYwQjkgLyogc2NvcGVkdmlkZW9kZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUY5QkZCNzIwNTFDOTM2MDBBQkYwQjkgLyogc2NvcGVkdmlkZW9lbmNvZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTlDODQzNjFGRTI0RTgwMDA0MEMzMEYgLyogc2NyZWVuc2hhcmVfbGF5
ZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NzA0LDYgKzE0Nzk5LDcgQEAKIAkJCQk1Q0REODVC
QTFFNDNCNUMwMDA2MjFFOTIgLyogc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTkyNDE4QjIxMjc0OUM4MDA2MzRGQ0YgLyogc2VuZF90aW1lX2hpc3RvcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDREQ4OTczMUU0M0JGM0EwMDYyMUU5MiAvKiBzZW5kZXJfcmVw
b3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkIyODIxQjFGODdFMDBBNURGMjcgLyogc2Vu
dF9wYWNrZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOTI0MUFDMjEyNzU4RDMwMDYzNEZDRiAv
KiBzZXF1ZW5jZV9idWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMkQ0MUZFMThFMDcw
MDM3M0U5OSAvKiBzZXF1ZW5jZWRfdGFza19jaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTNBMjNBRTFGRTE4RTA4MDAzNzNFOTkgLyogc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl9pbXBsLmgg
aW4gSGVhZGVycyAqLywKQEAgLTE0NzE1LDcgKzE0ODExLDYgQEAKIAkJCQk1Q0QyODVFMDFFNkE2
MzQzMDA5NEZEQzggLyogc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE1RjFGQjUyMTI3MkZCQTAwMDY0Q0JGIC8qIHNpZ25hbF9jbGFzc2lmaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUY5QkZDNTIwNTFDQUU1MDBBQkYwQjkgLyogc2lnbmFsX3Byb2Nl
c3NpbmdfbGlicmFyeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzRDcyMTY5ODM0RjAwMjgy
NjZCIC8qIGNoYW5uZWxfc2VuZF9wcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzODEx
RkUxOEUwNzAwMzczRTk5IC8qIHNpZ25hbHRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFG
MjYzQkMyMTI2ODExNTAwMjc0RjU5IC8qIHNpZ3Nsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
M0EyMzMzMUZFMThFMDcwMDM3M0U5OSAvKiBzaWdzbG90cmVwZWF0ZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMTQ3NTUsNyArMTQ4NTAsNiBAQAogCQkJCTQxM0EyMTNGMUZFMEYwRUYwMDM3M0U5OSAv
KiBzcnRwLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjEzRDFGRTBGMEVGMDAzNzNFOTkgLyog
c3J0cF9wcml2LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODJFMTFGRTIwRTU5MDA0MEMzMEYg
Lyogc3J0cHNlc3Npb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNzk1M0M4MjE2OTgyNEIwMDI4
MjY2QiAvKiBSVENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE5QzgyRTIxRkUyMEU1OTAwNDBDMzBGIC8qIHNydHB0cmFuc3BvcnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxRTAyQ0JEMjEyNzM1NkEwMEMyN0NENiAvKiBzc2xjZXJ0aWZpY2F0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzQTIzQUYxRkUxOEUwODAwMzczRTk5IC8qIHNzbGZpbmdlcnByaW50
LmggaW4gSGVhZGVycyAqLywKQEAgLTE0NzY2LDcgKzE0ODYwLDYgQEAKIAkJCQk1Q0REODczNzFF
NDNCQUJFMDA2MjFFOTIgLyogc3RhbmRhbG9uZV92YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
MDg4NTM1MUU0QTk5RDIwMDQwMzk5NSAvKiBzdGF0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
OEJFQzFFNDNDMkI1MDA2MjFFOTIgLyogc3RhdGVfY29uc3RydWN0LmggaW4gSGVhZGVycyAqLywK
LQkJCQk0MTYyMjVFOTIxNjk4MTk1MDBBOTFDOUIgLyogb2JqY192aWRlb19mcmFtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNERDhCRUUxRTQzQzJCNTAwNjIxRTkyIC8qIHN0YXRlX3NlYXJjaC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhBNTIxRTQzQkZCMzAwNjIxRTkyIC8qIHN0YXRpc3Rp
Y3NfY2FsY3VsYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg1QkQxRTQzQjVDMDAwNjIx
RTkyIC8qIHN0YXRzX2NvdW50ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ3NzgsNiArMTQ4NzEs
NyBAQAogCQkJCTVDNEI0OEY1MUU0MkMxRTMwMDI2NTFDOCAvKiBzdHJlYW1wYXJhbXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxRERCMjZDMjEyNjc5RDIwMDI5NkQ0NyAvKiBzdHJpbmdfYnVpbGRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzNjQxRkUxOEUwNzAwMzczRTk5IC8qIHN0cmlu
Z190b19udW1iZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMDZENTZEMjE2QzJCQUEwMDFFM0M0
MCAvKiBzdHJpbmdfdmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyRUIxRkUxOEUwNzAw
MzczRTk5IC8qIHN0cmluZ2VuY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzQjExRkUx
OEUwODAwMzczRTk5IC8qIHN0cmluZ2l6ZV9tYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
M0EyMkNFMUZFMThFMDcwMDM3M0U5OSAvKiBzdHJpbmd1dGlscy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xNDc5MSwxMyArMTQ4ODUsMTQgQEAKIAkJCQk1Q0QyODVFMTFFNkE2MzQzMDA5NEZEQzggLyog
c3VidHJhY3Rvcl9vdXRwdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUU1MUU2QTYzNDMw
MDk0RkRDOCAvKiBzdXBwcmVzc2lvbl9maWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4
NUU3MUU2QTYzNDMwMDk0RkRDOCAvKiBzdXBwcmVzc2lvbl9nYWluLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MTNFNjc4MTIxNjk4NzBGMDBFRjM3RUQgLyogc3ZjX2NvbmZpZy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDEzRTY3OTUyMTY5ODgxOTAwRUYzN0VEIC8qIHN2Y19yYXRlX2FsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCRjAxRTQzQzJCNTAwNjIxRTkyIC8qIHN3YXBfYnl0
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzQ3MUZFMThFMDcwMDM3M0U5OSAvKiBzd2Fw
X3F1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDFBOTIxMjc1OEQzMDA2MzRGQ0YgLyog
c3ltbWV0cmljX21hdHJpeF9idWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQkU3MUEzMjE1
QzQ2MzcwMEE3QjE5NiAvKiBzeW1yZWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QTU1MUU0
M0JGQjMwMDYyMUU5MiAvKiBzeW5jX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg0
QkYxRTZBNUY5RjAwOTRGREM4IC8qIHN5bmNhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTQ0
QjNGNjIxNkIwODFCMDA0MzYzQUMgLyogUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDREQ4OTc5MUU0M0JGM0EwMDYyMUU5MiAvKiB0YXJnZXRfYml0cmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzMzkxRkUxOEUwNzAwMzczRTk5IC8qIHRhc2tfcXVl
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzdEMUZFMThFMDcwMDM3M0U5OSAvKiB0YXNr
X3F1ZXVlX3Bvc2l4LmggaW4gSGVhZGVycyAqLywKQEAgLTE0ODE2LDkgKzE0OTExLDkgQEAKIAkJ
CQk0MTNBMjJFODFGRTE4RTA3MDAzNzNFOTkgLyogdGhyZWFkX2NoZWNrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxM0EyMkI4MUZFMThFMDcwMDM3M0U5OSAvKiB0aHJlYWRfY2hlY2tlcl9pbXBs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODRDNDFFNDNBRjEzMDA2MjFFOTIgLyogdGhyZWVf
YmFuZF9maWx0ZXJfYmFuay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCMjMyMUIxRjgyRjAw
QTVERjI3IC8qIHRocm93X2RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEE1ODFF
NDNCRkIzMDA2MjFFOTIgLyogdGlja190aW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5MjQx
REQyMTI3NUEzMDAwNjM0RkNGIC8qIHRpbWVfZGVsdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTQx
OUM4MzM0MUZFMjQ1RUEwMDQwQzMwRiAvKiB0aW1lX2ludGVydmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REOEE1QjFFNDNCRkIzMDA2MjFFOTIgLyogdGltZV9zdHJldGNoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REODhEQjFFNDNCRTNEMDA2MjFFOTIgLyogdGltZV91dGlsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTkyNDFFMDIxMjc1QTMwMDA2MzRGQ0YgLyogdGltZXN0YW1wLmggaW4g
SGVhZGVycyAqLywKQEAgLTE0ODU2LDIwICsxNDk1MSwxNyBAQAogCQkJCTQxM0EyMzRCMUZFMThF
MDcwMDM3M0U5OSAvKiB0eXBlX3RyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg0QzYx
RTQzQUYxMzAwNjIxRTkyIC8qIHR5cGluZ19kZXRlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDNjNGQTMxMUU0MTc0RjYwMDJDQTUzMSAvKiB1ZHBwb3J0LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0MTkyNDE1NzIxMjczNzZGMDA2MzRGQ0YgLyogdWRwdHJhbnNwb3J0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTNBMjQ2QjFGRTE5OTFBMDAzNzNFOTkgLyogVUlEZXZpY2UrUlRDRGV2aWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODhFMDFFNDNCRTNEMDA2MjFFOTIgLyogdWxwZmVjX2dl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4RTMxRTQzQkUzRDAwNjIxRTkyIC8q
IHVscGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5Qzgz
QzYxRkUyNDdCNDAwNDBDMzBGIC8qIHVscGZlY19yZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDg4RTUxRTQzQkUzRDAwNjIxRTkyIC8qIHVscGZlY19yZWNlaXZlcl9pbXBsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzYzRjk3NTFFNDE3MzdCMDAyQ0E1MzEgLyogdW1hbWV0cmljcy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzQTIyQTQxRkUxOEUwNjAwMzczRTk5IC8qIHVuaXhmaWxl
c3lzdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJGMjFFNDNDMkI1MDA2MjFFOTIgLyog
dW5wYWNrX2JpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjI2M0IwMjEyNjgwQTgwMDI3NEY1
OSAvKiB1bnVzZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMTQwMUZFMEYwRUYwMDM3M0U5
OSAvKiB1dF9zaW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzA5MUU0M0JBNzUwMDYyMUU5
MiAvKiB1dGlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODdERjFFNDNCQzJFMDA2MjFF
OTIgLyogdXRpbGl0eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzQkEyMTY5ODI0MjAwMjgy
NjZCIC8qIFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NCtQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REODczQjFFNDNCQUJFMDA2MjFFOTIgLyogdmFkX2F1ZGlvX3Byb2MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDREQ4NzM4MUU0M0JBQkUwMDYyMUU5MiAvKiB2YWRfYXVkaW9fcHJvY19p
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3M0UxRTQzQkFCRTAwNjIxRTkyIC8q
IHZhZF9jaXJjdWxhcl9idWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ4ODgsMTkgKzE0OTgw
LDIxIEBACiAJCQkJNUNERDg0MDIxRTQzOUE2RjAwNjIxRTkyIC8qIHZpZGVvX2NvZGluZ19pbXBs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODQxMzFGRTI0OUFCMDA0MEMzMEYgLyogdmlkZW9f
Y29udGVudF90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ1RTQ4RDFFRjg4QjlEMDBGQ0Y2
RTYgLyogdmlkZW9fZGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2MjI1RDIyMTY5ODE4
MTAwQTkxQzlCIC8qIHZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE0NUY2MUUxRkUxRjM4RDAwRUI5Q0FGIC8qIHZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDFGMjYzNjYyMTI2N0FERjAwMjc0RjU5IC8qIHZpZGVvX2RlY29kZXJf
c29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0NUU0OEUx
RUY4OEI5RDAwRkNGNkU2IC8qIHZpZGVvX2VuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
RjI2MzY4MjEyNjdBREYwMDI3NEY1OSAvKiB2aWRlb19lbmNvZGVyX2NvbmZpZy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDE2MjI1RDUyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2VuY29kZXJfZmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0NUY2MUYxRkUxRjM4RDAwRUI5Q0FGIC8qIHZp
ZGVvX2VuY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzNkEyMTI2N0FE
RjAwMjc0RjU5IC8qIHZpZGVvX2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDE2MjI1RDYyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1l
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODQ2QjFFNkE1N0Y0MDA5NEZEQzggLyogdmlkZW9f
ZnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMTA5QUFFMUU1RkExOTIwMEMwOTU1QSAvKiB2
aWRlb19mcmFtZV9idWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NDY5MUU2QTU3RjQw
MDk0RkRDOCAvKiB2aWRlb19mcmFtZV9idWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNjIy
NUQzMjE2OTgxODEwMEE5MUM5QiAvKiB2aWRlb19mcmFtZV9idWZmZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxMDJGNkNGMjEyNzMzQjcwMDZBRThENyAvKiB2aWRlb19xdWFsaXR5X29ic2VydmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODJDNDFGRTIwRENEMDA0MEMzMEYgLyogdmlkZW9f
cmVjZWl2ZV9zdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNzk1M0M1MjE2OTgyNEIwMDI4
MjY2QiAvKiBSVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NDEzRTY3OTkyMTY5ODgzOTAwRUYzN0VEIC8qIFJUQ1ZpZGVvQ29kZWNJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REODVDQjFFNDNCNUMwMDA2MjFFOTIgLyogdmlkZW9fcmVjZWl2ZV9zdHJl
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNEI0QzIxMUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRl
b19yZW5kZXJfZnJhbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODQ2QzFFNkE1N0Y0MDA5
NEZEQzggLyogdmlkZW9fcm90YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTQ5MzIsMTMgKzE1
MDI2LDE0IEBACiAJCQkJNUNEMjg1MTkxRTZBNjA1NzAwOTRGREM4IC8qIHZpZGVvdHJhY2tzb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMkJDMUZFMThFMDcwMDM3M0U5OSAvKiB2aXJ0
dWFsc29ja2V0c2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODc0MTFFNDNCQUJFMDA2
MjFFOTIgLyogdm9pY2VfYWN0aXZpdHlfZGV0ZWN0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTQx
Nzk1M0U3MjE2OTgzQ0EwMDI4MjY2QiAvKiBtb2R1bGVfY29tbW9uX3R5cGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REODRDODFFNDNBRjEzMDA2MjFFOTIgLyogdm9pY2VfZGV0ZWN0aW9uX2lt
cGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzQyMUU0M0JBQkUwMDYyMUU5MiAvKiB2b2lj
ZV9nbW1fdGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0ZENTM4MTFFNEJBNEY1MDA0ODI5
MDggLyogdm9pY2VfcHJvY2Vzc2luZ19hdWRpb191bml0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTQ1RjYxNzFGRTFFRkNBMDBFQjlDQUYgLyogdnA4LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTky
NDFGNDIxMjc1QzMyMDA2MzRGQ0YgLyogdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0REODM4NjFFNDM5QTM1MDA2MjFFOTIgLyogdnA4X2hlYWRlcl9w
YXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjY1MjFCMUZFRjYwMEE1REYyNyAvKiB2
cDhfdGVtcG9yYWxfbGF5ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNFRTIxNjk4NDIx
MDAyODI2NkIgLyogdnA5X3Byb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkY0MUU0
M0MyQjUwMDYyMUU5MiAvKiB2cTMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkY2MUU0M0My
QjUwMDYyMUU5MiAvKiB2cTQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNEI0QzgxMUU0MzFGOUMw
MDI2NTFDOCAvKiB3YXZfZmlsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDk1NSw3ICsxNTA1MCw2
IEBACiAJCQkJNUM0QjQ4OTMxRTQyQzFCQTAwMjY1MUM4IC8qIHdlYnJ0Y3ZpZGVvY2FwdHVyZXJm
YWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDg5NDFFNDJDMUJBMDAyNjUxQzggLyog
d2VicnRjdmlkZW9kZWNvZGVyZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjQ4OTYx
RTQyQzFCQTAwMjY1MUM4IC8qIHdlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3RvcnkuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQxNjIyNUQzMjE2OTgxODEwMEE5MUM5QiAvKiB2aWRlb19mcmFtZV9idWZmZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDVFNEQyMUVGOENDMjAwMEZDRjZFNiAvKiB3ZWJydGN2
aWRlb2VuZ2luZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjQ4OUUxRTQyQzFCQTAwMjY1MUM4
IC8qIHdlYnJ0Y3ZvaWNlZW5naW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJGODFFNDND
MkI1MDA2MjFFOTIgLyogd2luZG93MzJfdzMyLmggaW4gSGVhZGVycyAqLywKQEAgLTE1NjExLDcg
KzE1NzA1LDYgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTVDMDg4QzEwMUU0QUE0NDQw
MDQwMzk5NSAvKiBidW5kbGVmaWx0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzA4OEMxMjFF
NEFBNDQ0MDA0MDM5OTUgLyogY2hhbm5lbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDMDg4QzE0
MUU0QUE0NDQwMDQwMzk5NSAvKiBjaGFubmVsbWFuYWdlci5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDMDg4QzE4MUU0QUE0NDQwMDQwMzk5NSAvKiBleHRlcm5hbGhtYWMuY2MgaW4gU291cmNlcyAq
LywKQEAgLTE2MTA3LDE1ICsxNjIwMCwxMiBAQAogCQkJCTVDREQ4QjZBMUU0M0MyQjUwMDYyMUU5
MiAvKiBhYnNfcXVhbnRfbG9vcC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg5RjgxRTQzQkZC
MzAwNjIxRTkyIC8qIGFjY2VsZXJhdGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUUwMkNBODIx
MjczNTJEMDBDMjdDRDYgLyogYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmNjIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDE2MjI1RDgyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2RlY29kZXJf
ZmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NTAzMUU0M0IxRUEwMDYyMUU5MiAv
KiBhY21fY29kZWNfZGF0YWJhc2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODUwOTFFNDNC
MUVBMDA2MjFFOTIgLyogYWNtX3JlY2VpdmVyLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUz
RDMyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZC5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4NTBCMUU0M0IxRUEwMDYyMUU5MiAvKiBhY21fcmVzYW1wbGVyLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUM0QjQ4RDcxRTQyQzFFMzAwMjY1MUM4IC8qIGFkYXB0ZWR2aWRlb3RyYWNrc291
cmNlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2RDNCREIyMTI3MzFDMjAwNzc1RjA5IC8qIGFk
YXB0aXZlX2FnYy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNUYxRkE2MjEyNzJGQkEwMDA2NENC
RiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5jYyBpbiBTb3VyY2VzICovLAotCQkJ
CTQxM0U2Nzk0MjE2OTg4MTkwMEVGMzdFRCAvKiBzdmNfcmF0ZV9hbGxvY2F0b3IuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0QyODVBNDFFNkE2MzQzMDA5NEZEQzggLyogYWRhcHRpdmVfZmlyX2Zp
bHRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNkQzQkRFMjEyNzMxQzIwMDc3NUYwOSAvKiBh
ZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNUYx
RkE4MjEyNzJGQkEwMDA2NENCRiAvKiBhZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2Mu
Y2MgaW4gU291cmNlcyAqLywKQEAgLTE2MTMwLDYgKzE2MjIwLDcgQEAKIAkJCQk1Q0REODVFNzFF
NDNCODEwMDA2MjFFOTIgLyogYWVjbV9jb3JlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg1
RTQxRTQzQjgxMDAwNjIxRTkyIC8qIGFlY21fY29yZV9jLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDg3MDExRTQzQkE3NTAwNjIxRTkyIC8qIGFnYy5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQx
M0U2NzlCMjE2OTg4NjIwMEVGMzdFRCAvKiBhZ2MyX2NvbW1vbi5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4NkZGMUU0M0JBNzUwMDYyMUU5MiAvKiBhZ2NfbWFuYWdlcl9kaXJlY3QuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REOEZEMTFFNDNDRDY2MDA2MjFFOTIgLyogYWltZF9yYXRlX2Nv
bnRyb2wuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUYyNjM5RTIxMjY4MDAwMDAyNzRGNTkgLyog
YWxpZ25lZF9tYWxsb2MuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2MTQ1LDYgKzE2MjM2LDcgQEAK
IAkJCQk0MTQzM0QyOTFGNzlCMzM0MDAzODdCNEQgLyogYXJpdGhfcm91dGluZXNfaGlzdC5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3QTgxRTQzQkMwNTAwNjIxRTkyIC8qIGFyaXRoX3JvdXRp
bmVzX2xvZ2lzdC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MzNEMEYxRjc5QjMzNDAwMzg3QjRE
IC8qIGFyaXRoX3JvdXRpbmVzX2xvZ2lzdC5jIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCN0Ey
MUIxRkZDMDAwQTVERjI3IC8qIGFzY2lpLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzOEMx
RkUxOEUwNzAwMzczRTk5IC8qIGFzeW5jaW52b2tlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQx
M0EyMTZEMUZFMThENkEwMDM3M0U5OSAvKiBhc3luY3BhY2tldHNvY2tldC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxM0EyMzU1MUZFMThFMDcwMDM3M0U5OSAvKiBhc3luY3Jlc29sdmVyaW50ZXJm
YWNlLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjE3Miw3ICsxNjI2NCw2IEBACiAJCQkJNDE0MEI4
MjIxRTRFMzM4MzAwNzQwOUU2IC8qIGF1ZGlvX2RlY29kZXJfcGNtLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNERDhGRkMxRTQzQ0UzQTAwNjIxRTkyIC8qIGF1ZGlvX2RlY29kZXJfcGNtMTZiLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxMTlGRkIxRTQ1NzQwMDAwNEYwOTg3IC8qIGF1ZGlvX2Rl
dmljZV9idWZmZXIuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTg4OUQ3NzIxNkJDNEVDMDA0NjE0
REQgLyogUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMx
MUEwMUQxRTQ1NzU3ODAwNEYwOTg3IC8qIGF1ZGlvX2RldmljZV9kdW1teS5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDMTE5RkZFMUU0NTc0MDAwMDRGMDk4NyAvKiBhdWRpb19kZXZpY2VfZ2VuZXJp
Yy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDMTFBMDBCMUU0NTc0NDgwMDRGMDk4NyAvKiBhdWRp
b19kZXZpY2VfbWFjLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjIyMiw3ICsxNjMxMyw2IEBACiAJ
CQkJNUM0QjRDNUYxRTQzMUY5QzAwMjY1MUM4IC8qIGF1ZGlvX3V0aWwuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REOEEwNDFFNDNCRkIzMDA2MjFFOTIgLyogYXVkaW9fdmVjdG9yLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNEMjg0RjAxRTZBNjA1NzAwOTRGREM4IC8qIGF1ZGlvdHJhY2suY2Mg
aW4gU291cmNlcyAqLywKLQkJCQk0MTc5NTNEODIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9y
ZWNlaXZlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCNzIxRTQzQzJCNTAwNjIxRTkyIC8q
IGF1Z21lbnRlZF9jYl9jb3JyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY0MDFFNDNCOEI1
MDA2MjFFOTIgLyogYXV0b19jb3JyX3RvX3JlZmxfY29lZi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDg2NDExRTQzQjhCNTAwNjIxRTkyIC8qIGF1dG9fY29ycmVsYXRpb24uYyBpbiBTb3VyY2Vz
ICovLApAQCAtMTYyNDQsNiArMTYzMzQsNyBAQAogCQkJCTVDNEI0QzE5MUU0MzFGNzUwMDI2NTFD
OCAvKiBiaXRyYXRlX2FkanVzdGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg1MkYxRTQz
QjM5QzAwNjIxRTkyIC8qIGJpdHJhdGVfYWxsb2NhdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDhGN0QxRTQzQ0JFMDAwNjIxRTkyIC8qIGJpdHJhdGVfY29udHJvbGxlci5jYyBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxRkNCQjVDMjFCMUZFQTMwMEE1REYyNyAvKiBiaXRyYXRlX2NvbnRyb2xs
ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOTA1RDFFNDNEMTEyMDA2MjFFOTIgLyogYml0
cmF0ZV9jb250cm9sbGVyX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUUwMkNBRTIxMjcz
NTJEMDBDMjdDRDYgLyogYml0cmF0ZV9lc3RpbWF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REOEZBMDFFNDNDQ0JFMDA2MjFFOTIgLyogYml0cmF0ZV9wcm9iZXIuY2MgaW4gU291cmNlcyAq
LywKQEAgLTE2MjU3LDYgKzE2MzQ4LDcgQEAKIAkJCQk0MTNBMjM5QjFGRTE4RTA4MDAzNzNFOTkg
LyogYnVmZmVycXVldWUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODU0ODFFNkE2MUQyMDA5
NEZEQzggLyogYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk0MTMwOTFGQjFFRjhDRkY4MDA3NTdDNTUgLyogYnVpbHRpbl9hdWRpb19lbmNvZGVyX2Zh
Y3RvcnkuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkIxQjIxQjFGN0NEMDBBNURGMjcgLyog
YnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDFGMjYzNUYyMTI2N0FERjAwMjc0RjU5IC8qIGJ1aWx0aW5fdmlkZW9fZGVjb2Rlcl9m
YWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMDJDQzQyMTI3MzU4ODAwQzI3Q0Q2IC8q
IGJ1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDhCNzQxRTQzQzJCNTAwNjIxRTkyIC8qIGJ3X2V4cGFuZC5jIGluIFNvdXJjZXMgKi8sCkBAIC0x
NjI3OSwxMiArMTYzNzEsMTQgQEAKIAkJCQk1Q0REOEI4MjFFNDNDMkI1MDA2MjFFOTIgLyogY2Jf
dXBkYXRlX2Jlc3RfaW5kZXguYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0QzY0MUU0MzFGOUMw
MDI2NTFDOCAvKiBjaGFubmVsX2J1ZmZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4Rjgw
MUU0M0NCRTAwMDYyMUU5MiAvKiBjaGFubmVsX2NvbnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywK
KwkJCQk0MTc5NTNEODIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9yZWNlaXZlLmNjIGluIFNv
dXJjZXMgKi8sCisJCQkJNDE3OTUzRDMyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZC5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4Qjg0MUU0M0MyQjUwMDYyMUU5MiAvKiBjaGVieXNo
ZXYuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzczMUZFMThFMDcwMDM3M0U5OSAvKiBjaGVj
a3MuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODZBMTFFNDNCOTk0MDA2MjFFOTIgLyogY2ly
Y3VsYXJfYnVmZmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDQzYxRTQzMjBBOTAwMjY1
MUM4IC8qIGNsb2NrLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCNzUyMUIxRkZBNDAwQTVE
RjI3IC8qIGNvY29hX3RocmVhZGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0OERCMUU0
MkMxRTMwMDI2NTFDOCAvKiBjb2RlYy5jYyBpbiBTb3VyY2VzICovLAotCQkJCTVDREQ4NTE1MUU0
M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19tYW5hZ2VyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDgzQzgxRTQzOUE2RjAwNjIxRTkyIC8qIGNvZGVjX3RpbWVyLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDEwMkY2REMyMTI3MzQxNjAwNkFFOEQ3IC8qIGNvbG9yX3NwYWNlLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNERDhBMEQxRTQzQkZCMzAwNjIxRTkyIC8qIGNvbWZvcnRfbm9pc2UuY2MgaW4g
U291cmNlcyAqLywKQEAgLTE2Mjk5LDEzICsxNjM5MywxMiBAQAogCQkJCTQxNUYxRkFBMjEyNzJG
QkEwMDA2NENCRiAvKiBjb21wdXRlX2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDhGRUIxRTQzQ0RDQTAwNjIxRTkyIC8qIGNvbmZpZy5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxOTI0MTcxMjEyNzM4OUIwMDYzNEZDRiAvKiBjb25nZXN0aW9uX2NvbnRy
b2xsZXJfZXhwZXJpbWVudC5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxQTA4QkQ4MjEyNzJGMUQw
MDFENUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjIGluIFNv
dXJjZXMgKi8sCisJCQkJNDFGQ0JCNDEyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2lu
ZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEE5MzFF
NDNDMDBGMDA2MjFFOTIgLyogY29uc3RhbnRfcGNtX3BhY2tldF9zb3VyY2UuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REOEI4OTFFNDNDMkI1MDA2MjFFOTIgLyogY29uc3RhbnRzLmMgaW4gU291
cmNlcyAqLywKIAkJCQk0MTlDODNGQjFGRTI0OTM3MDA0MEMzMEYgLyogY29uc3RhbnRzLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDFFMDJDNzgyMTI3MzQ3NDAwQzI3Q0Q2IC8qIGNvbnRyaWJ1dGlu
Z19zb3VyY2VzLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzRTY3QTIyMTY5ODg5NTAwRUYzN0VE
IC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubSBpbiBTb3VyY2VzICovLAotCQkJCTQxNjIy
NUU3MjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTQxRkNCQjM5MjFCMUY4RkMwMEE1REYyNyAvKiBjb250cm9sX2hhbmRs
ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEY4NTFFNDNDQkUwMDA2MjFFOTIgLyogY29u
dHJvbGxlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4RjgzMUU0M0NCRTAwMDYyMUU5MiAv
KiBjb250cm9sbGVyX21hbmFnZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUY5QkZBQzIwNTFD
OTE5MDBBQkYwQjkgLyogY29udmVydF9sZWdhY3lfdmlkZW9fZmFjdG9yeS5jYyBpbiBTb3VyY2Vz
ICovLApAQCAtMTYzMTMsMTMgKzE2NDA2LDE2IEBACiAJCQkJNDEzQTIzMTUxRkUxOEUwNzAwMzcz
RTk5IC8qIGNvcHlvbndyaXRlYnVmZmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDQ0Ex
RTQzMjBBOTAwMjY1MUM4IC8qIGNwdV9mZWF0dXJlcy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
NEI0Q0NCMUU0MzIwQTkwMDI2NTFDOCAvKiBjcHVfaW5mby5jYyBpbiBTb3VyY2VzICovLAorCQkJ
CTQxRkNCQjUzMjFCMUZFNDYwMEE1REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDREQ4N0IxMUU0M0JDMDUwMDYyMUU5MiAvKiBjcmMuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxM0EyMzQzMUZFMThFMDcwMDM3M0U5OSAvKiBjcmMzMi5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4QjhCMUU0M0MyQjUwMDYyMUU5MiAvKiBjcmVhdGVfYXVnbWVudGVk
X3ZlYy5jIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE0NUU0Q0ExRUY4Q0IzMjAwRkNGNkU2IC8qIGNy
ZWF0ZXBlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjBF
MjFCMUY1MzcwMEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5jYyBpbiBT
b3VyY2VzICovLAorCQkJCTQxRkNCQjY2MjFCMUZFRjYwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3Rl
bXBvcmFsX2xheWVycy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzg4MUZFMThFMDcwMDM3
M0U5OSAvKiBjcml0aWNhbHNlY3Rpb24uY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY0QjFF
NDNCOEI1MDA2MjFFOTIgLyogY3Jvc3NfY29ycmVsYXRpb24uYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4QTBGMUU0M0JGQjMwMDYyMUU5MiAvKiBjcm9zc19jb3JyZWxhdGlvbi5jYyBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxRkNCQjMxMjFCMUY4QjcwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25zLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzMjIxRkUxOEUwNzAwMzczRTk5IC8qIGNyeXB0c3Ry
aW5nLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5Qzg0OEUxRkUyNTc0RDAwNDBDMzBGIC8qIGN1
c3RvbV9leHRlbnNpb25zLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5Qzg0OEMxRkUyNTc0RDAw
NDBDMzBGIC8qIGQxX2JvdGguY2MgaW4gU291cmNlcyAqLywKQEAgLTE2MzUzLDcgKzE2NDQ5LDYg
QEAKIAkJCQk0MUUwMkNBNTIxMjczNTJEMDBDMjdDRDYgLyogZGVsYXlfYmFzZWRfYndlLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2OEQxRTQzQjkzOTAwNjIxRTkyIC8qIGRlbGF5X2VzdGlt
YXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NjhCMUU0M0I5MzkwMDYyMUU5MiAvKiBk
ZWxheV9lc3RpbWF0b3Jfd3JhcHBlci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0ZBMjE2
OTg0QkUwMDI4MjY2QiAvKiBSVENFbmNvZGVkSW1hZ2UubSBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4QTFEMUU0M0JGQjMwMDYyMUU5MiAvKiBkZWxheV9tYW5hZ2VyLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNERDhBMjAxRTQzQkZCMzAwNjIxRTkyIC8qIGRlbGF5X3BlYWtfZGV0ZWN0b3IuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0REODZFRTFFNDNCQTZEMDA2MjFFOTIgLyogZGlnaXRhbF9h
Z2MuYyBpbiBTb3VyY2VzICovLApAQCAtMTYzODgsMTAgKzE2NDgzLDEwIEBACiAJCQkJNUNERDg3
QjcxRTQzQkMwNTAwNjIxRTkyIC8qIGVuY29kZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MzNE
MTIxRjc5QjMzNDAwMzg3QjREIC8qIGVuY29kZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3
QjUxRTQzQkMwNTAwNjIxRTkyIC8qIGVuY29kZV9scGNfc3diLmMgaW4gU291cmNlcyAqLywKLQkJ
CQk0MTc5NTNEQzIxNjk4MzkxMDAyODI2NkIgLyogZmllbGRfdHJpYWwuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REOEE5NTFFNDNDMDBGMDA2MjFFOTIgLyogZW5jb2RlX25ldGVxX2lucHV0LmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzQ0MxRTQzOUE2RjAwNjIxRTkyIC8qIGVuY29kZWRf
ZnJhbWUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUEwOEJBQjIxMjY4MUM4MDAxRDVEN0IgLyog
ZW5jb2RlZF9mcmFtZS5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjFEMjFCMUY3Q0QwMEE1
REYyNyAvKiBlbmNvZGVkX2ltYWdlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMDJDODgyMTI3
MzRCOTAwQzI3Q0Q2IC8qIGVuY29kZXJfZGF0YWJhc2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REODU5RjFFNDNCNUMwMDA2MjFFOTIgLyogZW5jb2Rlcl9ydGNwX2ZlZWRiYWNrLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNERDg2NTExRTQzQjhCNTAwNjIxRTkyIC8qIGVuZXJneS5jIGluIFNv
dXJjZXMgKi8sCkBAIC0xNjQxNCw3ICsxNjUwOSw2IEBACiAJCQkJNUNERDg5NEExRTQzQkYzQTAw
NjIxRTkyIC8qIGV4dGVuZGVkX2ppdHRlcl9yZXBvcnQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REODk0RDFFNDNCRjNBMDA2MjFFOTIgLyogZXh0ZW5kZWRfcmVwb3J0cy5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDREQ4QTk3MUU0M0MwMEYwMDYyMUU5MiAvKiBmYWtlX2RlY29kZV9mcm9tX2Zp
bGUuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTNFNjc4MjIxNjk4NzBGMDBFRjM3RUQgLyogc3Zj
X2NvbmZpZy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxMjk5Qjk2MjEyNzM2OTEwMEIzNDE0QiAv
KiBmYWtlX25ldHdvcmtfcGlwZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzEwMUZFMThF
MDcwMDM3M0U5OSAvKiBmYWtlY2xvY2suY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjNDQzFG
RTE4RTA4MDAzNzNFOTkgLyogZmFrZXNzbGlkZW50aXR5LmNjIGluIFNvdXJjZXMgKi8sCkBAIC0x
NjQyNSwxMSArMTY1MTksMTEgQEAKIAkJCQk0MTkyNDFEMzIxMjc1OUExMDA2MzRGQ0YgLyogZmVj
X3ByaXZhdGVfdGFibGVzX3JhbmRvbS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4ODdCMUU0
M0JFM0MwMDYyMUU5MiAvKiBmZWNfdGVzdF9oZWxwZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0
MUYyNjM4QTIxMjY3RjQwMDAyNzRGNTkgLyogZmZ0LmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTc5
NTNFQTIxNjk4M0YxMDAyODI2NkIgLyogcnR0X211bHRfZXhwZXJpbWVudC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxNDMzQ0VBMUY3OUIzMzQwMDM4N0I0RCAvKiBmZnQuYyBpbiBTb3VyY2VzICov
LAogCQkJCTQxRjI2MzZFMjEyNjdCM0UwMDI3NEY1OSAvKiBmZnQ0Zy5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDFGOUJGRDcyMDUxRERFNTAwQUJGMEI5IC8qIGZmdF9idWZmZXIuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MTkyNDEzRDIxMjczNzI0MDA2MzRGQ0YgLyogZmZ0X3V0aWwuY2MgaW4gU291
cmNlcyAqLywKKwkJCQk0MTc5NTNEQzIxNjk4MzkxMDAyODI2NkIgLyogZmllbGRfdHJpYWwuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDE2RTIxMjczODlCMDA2MzRGQ0YgLyogZmllbGRfdHJp
YWxfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxRTgyMTI3NUE3NjAwNjM0RkNG
IC8qIGZpZWxkX3RyaWFsX3VuaXRzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIyRTYxRkUx
OEUwNzAwMzczRTk5IC8qIGZpbGUuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NDM3LDE0ICsxNjUz
MSwxMSBAQAogCQkJCTVDMTFBMDFGMUU0NTc1NzgwMDRGMDk4NyAvKiBmaWxlX2F1ZGlvX2Rldmlj
ZV9mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzRDgxRkUxOEUwODAwMzczRTk5
IC8qIGZpbGVfcG9zaXguY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEM4QjFFNDNDNjYwMDA2
MjFFOTIgLyogZmlsZV91dGlscy5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNjIyNUQ3MjE2OTgx
ODEwMEE5MUM5QiAvKiB2aWRlb19mcmFtZV9idWZmZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0
MUYyNjNBQzIxMjY4MEE4MDAyNzRGNTkgLyogZmlsZV93cmFwcGVyLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEzQTIzREExRkUxOEUwODAwMzczRTk5IC8qIGZpbGVyb3RhdGluZ3N0cmVhbS5jYyBp
biBTb3VyY2VzICovLAotCQkJCTQxM0EyM0I1MUZFMThFMDgwMDM3M0U5OSAvKiBmaWxldXRpbHMu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY1NTFFNDNCOEI1MDA2MjFFOTIgLyogZmlsdGVy
X2FyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY1NDFFNDNCOEI1MDA2MjFFOTIgLyogZmls
dGVyX2FyX2Zhc3RfcTEyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODdCQzFFNDNCQzA1MDA2
MjFFOTIgLyogZmlsdGVyX2Z1bmN0aW9ucy5jIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE0NEIzRTgy
MTY5QzVFMzAwNDM2M0FDIC8qIFJUQ1ZpZGVvQ29kZWNJbmZvK1ByaXZhdGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REODY1NjFFNDNCOEI1MDA2MjFFOTIgLyogZmlsdGVyX21hX2Zhc3RfcTEy
LmMgaW4gU291cmNlcyAqLywKIAkJCQk0MTQzM0QyNzFGNzlCMzM0MDAzODdCNEQgLyogZmlsdGVy
YmFua190YWJsZXMuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNDMzRDA2MUY3OUIzMzQwMDM4N0I0
RCAvKiBmaWx0ZXJiYW5rcy5jIGluIFNvdXJjZXMgKi8sCkBAIC0xNjQ1Nyw3ICsxNjU0OCw2IEBA
CiAJCQkJNDE5QzgzMUQxRkUyNDJCMjAwNDBDMzBGIC8qIGZpcl9maWx0ZXJfZmFjdG9yeS5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDNEI0QzZBMUU0MzFGOUMwMDI2NTFDOCAvKiBmaXJfZmlsdGVy
X3NzZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNUYxRkFEMjEyNzJGQkEwMDA2NENCRiAvKiBm
aXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNkQz
QkUzMjEyNzMxQzIwMDc3NUYwOSAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MTNBMjE3RDFGRTE4RDc4MDAzNzNFOTkgLyogZmxhZ3MuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REODg3RTFFNDNCRTNDMDA2MjFFOTIgLyogZmxleGZlY19oZWFkZXJfcmVh
ZGVyX3dyaXRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxMDJGNkJDMjEyNzMzODIwMDZBRThE
NyAvKiBmbGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjQ3MSw4
ICsxNjU2MSw4IEBACiAJCQkJNUNERDgzRDExRTQzOUE2RjAwNjIxRTkyIC8qIGZyYW1lX2J1ZmZl
cjIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEJBMjFFNDNDMkI1MDA2MjFFOTIgLyogZnJh
bWVfY2xhc3NpZnkuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NDlBMUU2QTVGNDEwMDk0RkRD
OCAvKiBmcmFtZV9jb21iaW5lci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0M3MjE2OTgy
NEIwMDI4MjY2QiAvKiBSVENWaWRlb0RlY29kZXJIMjY0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzNzkxRTQzOUEzNTAwNjIxRTkyIC8qIGZyYW1lX2Ryb3BwZXIuY2MgaW4gU291cmNlcyAq
LywKKwkJCQk0MUZDQkI1OTIxQjFGRTZFMDBBNURGMjcgLyogZnJhbWVfZHVtcGluZ19kZWNvZGVy
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhGOTAxRTQzQ0JFMDAwNjIxRTkyIC8qIGZyYW1l
X2xlbmd0aF9jb250cm9sbGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzRDMxRTQzOUE2
RjAwNjIxRTkyIC8qIGZyYW1lX29iamVjdC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjI2MzhE
MjEyNjdGNDkwMDI3NEY1OSAvKiBnNzExLmMgaW4gU291cmNlcyAqLywKQEAgLTE2NDg0LDcgKzE2
NTc0LDYgQEAKIAkJCQk1Q0REODRCMjFFNDNBRjEzMDA2MjFFOTIgLyogZ2Fpbl9jb250cm9sX2Zv
cl9leHBlcmltZW50YWxfYWdjLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg0QjQxRTQzQUYx
MzAwNjIxRTkyIC8qIGdhaW5fY29udHJvbF9pbXBsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFB
MDhCRDAyMTI3MkVFMjAwMUQ1RDdCIC8qIGdhaW5fY29udHJvbGxlcjIuY2MgaW4gU291cmNlcyAq
LywKLQkJCQk0MTVGMUZCMTIxMjcyRkJBMDAwNjRDQkYgLyogZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCQTQxRTQzQzJCNTAwNjIxRTkyIC8qIGdhaW5fZGVx
dWFudC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCQTYxRTQzQzJCNTAwNjIxRTkyIC8qIGdh
aW5fcXVhbnQuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4M0Q1MUU0MzlBNkYwMDYyMUU5MiAv
KiBnZW5lcmljX2RlY29kZXIuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NDk1LDE5ICsxNjU4NCwy
MCBAQAogCQkJCTVDREQ4NjU4MUU0M0I4QjUwMDYyMUU5MiAvKiBnZXRfc2NhbGluZ19zcXVhcmUu
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkFDMUU0M0MyQjUwMDYyMUU5MiAvKiBnZXRfc3lu
Y19zZXEuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NzI5MUU0M0JBQkUwMDYyMUU5MiAvKiBn
bW0uY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MUUwMkNBOTIxMjczNTJEMDBDMjdDRDYgLyogZ29v
Z19jY19mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCNjAyMUIxRkVDNDAwQTVE
RjI3IC8qIGdvb2dfY2NfZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRTAyQ0I2MjEy
NzM1MkQwMEMyN0NENiAvKiBnb29nX2NjX25ldHdvcmtfY29udHJvbC5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDREQ4NTU4MUU0M0I0MkIwMDYyMUU5MiAvKiBoMjY0LmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNERDgzNTQxRTQzMjU3MjAwNjIxRTkyIC8qIGgyNjRfYml0c3RyZWFtX3BhcnNlci5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4MzU2MUU0MzI1NzIwMDYyMUU5MiAvKiBoMjY0X2Nv
bW1vbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNDVFNEJGMUVGODk0RjYwMEZDRjZFNiAvKiBo
MjY0X3Byb2ZpbGVfbGV2ZWxfaWQuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTg4OUQ3OTIxNkJD
NEVDMDA0NjE0REQgLyogUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlcitQcml2YXRlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNEMjg1RUExRTZBNjM5RjAwOTRGREM4IC8qIGgyNjRfc3Byb3BfcGFy
YW1ldGVyX3NldHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODNEOTFFNDM5QTZGMDA2MjFF
OTIgLyogaDI2NF9zcHNfcHBzX3RyYWNrZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQ2
OTFGRTI1NUZBMDA0MEMzMEYgLyogaGFuZHNoYWtlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5
Qzg0ODkxRkUyNTc0RDAwNDBDMzBGIC8qIGhhbmRzaGFrZV9jbGllbnQuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk0MTlDODQ4QjFGRTI1NzREMDA0MEMzMEYgLyogaGFuZHNoYWtlX3NlcnZlci5jYyBp
biBTb3VyY2VzICovLAorCQkJCTQxRkNCQjcxMjFCMUZGNzQwMEE1REYyNyAvKiBoZHJfbWV0YWRh
dGEuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjM2RTFGRTE4RTA3MDAzNzNFOTkgLyogaGVs
cGVycy5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNzk1M0JDMjE2OTgyNEIwMDI4MjY2QiAvKiBo
ZWxwZXJzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzREIxRTQzOUE2RjAwNjIxRTkyIC8q
IGhpc3RvZ3JhbS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4MzUxMUZFMjQ2NjUwMDQwQzMw
RiAvKiBoaXN0b2dyYW1fcGVyY2VudGlsZV9jb3VudGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDhCQUUxRTQzQzJCNTAwNjIxRTkyIC8qIGhwX2lucHV0LmMgaW4gU291cmNlcyAqLywKQEAg
LTE2NTE3LDYgKzE2NjA3LDcgQEAKIAkJCQk1Q0REOTA1MDFFNDNEMEU5MDA2MjFFOTIgLyogaTQy
MC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NDY3MUU2QTU3RjQwMDk0RkRDOCAvKiBpNDIw
X2J1ZmZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0QzFCMUU0MzFGNzUwMDI2NTFDOCAv
KiBpNDIwX2J1ZmZlcl9wb29sLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCNDcyMUIxRkRF
RjAwQTVERjI3IC8qIGljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MUEwOEJDNDIxMjY5NTc3MDAxRDVEN0IgLyogaWNlbG9nZ2VyLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEzMDkxRjgxRUY4Q0ZCRDAwNzU3QzU1IC8qIGljZXNlcnZlcnBhcnNpbmcuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTlDODNFMDFGRTI0N0YyMDA0MEMzMEYgLyogaWNldHJhbnNwb3J0
aW50ZXJuYWwuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NTM5LDcgKzE2NjMwLDYgQEAKIAkJCQk0
MTVGMUZCMjIxMjcyRkJBMDAwNjRDQkYgLyogaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTlDODI5QTFGRTIwQ0ExMDA0MEMzMEYgLyogaW50ZXJ2YWxfYnVk
Z2V0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3QzAxRTQzQkMwNTAwNjIxRTkyIC8qIGlu
dGlhbGl6ZS5jIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzQ0MyMTY5ODJEQjAwMjgyNjZCIC8q
IFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyM0VE
MUZFMThFMDgwMDM3M0U5OSAvKiBpcGFkZHJlc3MuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
ODdDMzFFNDNCQzA1MDA2MjFFOTIgLyogaXNhYy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEyOTlC
OTEyMTI3MzY3QjAwQjM0MTRCIC8qIGlzYWNfdmFkLmMgaW4gU291cmNlcyAqLywKQEAgLTE2NTQ3
LDI5ICsxNjYzNywzMiBAQAogCQkJCTVDREQ4MzdCMUU0MzlBMzUwMDYyMUU5MiAvKiBpdmZfZmls
ZV93cml0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODNFMTFFNDM5QTZGMDA2MjFFOTIg
Lyogaml0dGVyX2J1ZmZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4M0UzMUU0MzlBNkYw
MDYyMUU5MiAvKiBqaXR0ZXJfZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JC
NTIyMUIxRkU0NjAwQTVERjI3IC8qIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDFGOUJGODYyMDUxQzgwMTAwQUJGMEI5IC8qIGpzZXAuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0QyODQ3NDFFNkE1RDI4MDA5NEZEQzggLyoganNlcGljZWNhbmRp
ZGF0ZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjI2Mzg0MjEyNjdCNzcwMDI3NEY1OSAvKiBq
c2VwaWNlY2FuZGlkYXRlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg0NzIxRTZBNUQwODAw
OTRGREM4IC8qIGpzZXBzZXNzaW9uZGVzY3JpcHRpb24uY2MgaW4gU291cmNlcyAqLywKIAkJCQk0
MUY5QkZFMzIwNTFERTE4MDBBQkYwQjkgLyoganNlcHRyYW5zcG9ydC5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTQxMDJGNjkwMjEyNzMyMDYwMDZBRThENyAvKiBqc2VwdHJhbnNwb3J0Y29udHJvbGxl
ci5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjZEMjFCMUZGM0EwMEE1REYyNyAvKiBrZXlf
ZGVyaXZhdGlvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOTI0MTlBMjEyNzU4NjUwMDYzNEZD
RiAvKiBraXNzX2ZmdC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4N0M0MUU0M0JDMDUwMDYy
MUU5MiAvKiBsYXR0aWNlLmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTNFNjc2ODIxNjk4NTRCMDBF
RjM3RUQgLyogUlRDVmlkZW9EZWNvZGVyVlA4Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MzND
RjIxRjc5QjMzNDAwMzg3QjREIC8qIGxhdHRpY2UuYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNjIy
NUQ0MjE2OTgxODEwMEE5MUM5QiAvKiB2aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0MTQzM0QxNDFGNzlCMzM0MDAzODdCNEQgLyogbGF0dGljZV9jLmMgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REODQxRjFFNDM5QjI5MDA2MjFFOTIgLyogbGVnYWN5X2VuY29kZWRf
YXVkaW9fZnJhbWUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRCODFFNDNBRjEzMDA2MjFF
OTIgLyogbGV2ZWxfZXN0aW1hdG9yX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY1
QTFFNDNCOEI1MDA2MjFFOTIgLyogbGV2aW5zb25fZHVyYmluLmMgaW4gU291cmNlcyAqLywKKwkJ
CQk0MTNFNjc3NTIxNjk4NjNCMDBFRjM3RUQgLyogbGlidnB4X2ludGVyZmFjZS5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxMjk0MDk0MjEyRTEyOEQwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2RlY29k
ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTI5NDA5MjIxMkUxMjhEMDBBRDk1RTcgLyogbGli
dnB4X3ZwOF9lbmNvZGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2RDNCRTYyMTI3MzFDMjAw
Nzc1RjA5IC8qIGxpbWl0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODRGNjFFNkE2MDU3
MDA5NEZEQzggLyogbG9jYWxhdWRpb3NvdXJjZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0Ey
M0VCMUZFMThFMDgwMDM3M0U5OSAvKiBsb2NhdGlvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4QzBGMUU0M0MzNDYwMDYyMUU5MiAvKiBsb2NrZWRfYmFuZHdpZHRoX2luZm8uY2MgaW4gU291
cmNlcyAqLywKKwkJCQk0MTQ0QjNEODIxNjk4RDNEMDA0MzYzQUMgLyogbG9nZ2luZy5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxM0EyMkMwMUZFMThFMDcwMDM3M0U5OSAvKiBsb2dnaW5nX21hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyM0JFMUZFMThFMDgwMDM3M0U5OSAvKiBsb2dzaW5r
cy5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjZBMjFCMUZGMUIwMEE1REYyNyAvKiBsb3Nz
X2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQx
QzUyMTI3NTkzRjAwNjM0RkNGIC8qIGxvc3NfcmF0ZV9maWx0ZXIuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0REODcwNTFFNDNCQTc1MDA2MjFFOTIgLyogbG91ZG5lc3NfaGlzdG9ncmFtLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg1NUQxRTZBNjJFRDAwOTRGREM4IC8qIGxvd19jdXRfZmls
dGVyLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjU3OCw3ICsxNjY3MSw2IEBACiAJCQkJNUNERDhC
QzExRTQzQzJCNTAwNjIxRTkyIC8qIGxwY19lbmNvZGUuYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4N0M3MUU0M0JDMDUwMDYyMUU5MiAvKiBscGNfZ2Fpbl9zd2JfdGFibGVzLmMgaW4gU291cmNl
cyAqLywKIAkJCQk0MTQzM0NFRTFGNzlCMzM0MDAzODdCNEQgLyogbHBjX21hc2tpbmdfbW9kZWwu
YyBpbiBTb3VyY2VzICovLAotCQkJCTQxNDRCM0YwMjE2OUM2M0YwMDQzNjNBQyAvKiBOU1N0cmlu
ZytTdGRTdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODdDOTFFNDNCQzA1MDA2MjFF
OTIgLyogbHBjX3NoYXBlX3N3YjEyX3RhYmxlcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3
Q0IxRTQzQkMwNTAwNjIxRTkyIC8qIGxwY19zaGFwZV9zd2IxNl90YWJsZXMuYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDREQ4N0NEMUU0M0JDMDUwMDYyMUU5MiAvKiBscGNfdGFibGVzLmMgaW4gU291
cmNlcyAqLywKQEAgLTE2NTkzLDEzICsxNjY4NSwxNSBAQAogCQkJCTQxM0EyMzJDMUZFMThFMDcw
MDM3M0U5OSAvKiBtYWNpZmFkZHJzX2NvbnZlcnRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQx
M0EyMzM4MUZFMThFMDcwMDM3M0U5OSAvKiBtYWN1dGlscy5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDRDI4NUNCMUU2QTYzNDMwMDk0RkRDOCAvKiBtYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbi5jYyBp
biBTb3VyY2VzICovLAorCQkJCTQxRkNCQjNDMjFCMUZENDAwMEE1REYyNyAvKiBtYXRjaC5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDRDI4NUNGMUU2QTYzNDMwMDk0RkRDOCAvKiBtYXRjaGVkX2Zp
bHRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NUNEMUU2QTYzNDMwMDk0RkRDOCAvKiBt
YXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjlC
RkQ0MjA1MURERTUwMEFCRjBCOSAvKiBtYXRyaXhfYnVmZmVyLmNjIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDFGQ0JCNDgyMUIxRkRFRjAwQTVERjI3IC8qIG1kbnNfbWVzc2FnZS5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDREQ4NkE0MUU0M0I5OTQwMDYyMUU5MiAvKiBtZWFuX3ZhcmlhbmNlX2VzdGlt
YXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4M0U1MUU0MzlBNkYwMDYyMUU5MiAvKiBt
ZWRpYV9vcHRfdXRpbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4M0U3MUU0MzlBNkYwMDYy
MUU5MiAvKiBtZWRpYV9vcHRpbWl6YXRpb24uY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTYyMjVF
NjIxNjk4MTk1MDBBOTFDOUIgLyogb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0gaW4gU291
cmNlcyAqLywKKwkJCQk0MUZDQkIxMTIxQjFGNTM3MDBBNURGMjcgLyogbWVkaWFfdHJhbnNwb3J0
X2ludGVyZmFjZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxMDJGNkIzMjEyNzMzMzEwMDZBRThE
NyAvKiBtZWRpYWNoYW5uZWwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNDhFNjFFNDJDMUUz
MDAyNjUxQzggLyogbWVkaWFjb25zdGFudHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzYzRjk0
ODFFNDE3MzdCMDAyQ0E1MzEgLyogbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5jYyBpbiBTb3Vy
Y2VzICovLApAQCAtMTY2MDcsMjQgKzE2NzAxLDI1IEBACiAJCQkJNDFFMDJDQjEyMTI3MzUyRDAw
QzI3Q0Q2IC8qIG1lZGlhbl9zbG9wZV9lc3RpbWF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0QyODRGQTFFNkE2MDU3MDA5NEZEQzggLyogbWVkaWFzdHJlYW0uY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0QyODY0MDFFNkE2ODNBMDA5NEZEQzggLyogbWVkaWFzdHJlYW1pbnRlcmZhY2UuY2Mg
aW4gU291cmNlcyAqLywKLQkJCQk0MTQ0QjNEMzIxNjk4OTZEMDA0MzYzQUMgLyogUlRDTmF0aXZl
STQyMEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NEZDMUU2QTYwNTcwMDk0RkRD
OCAvKiBtZWRpYXN0cmVhbW9ic2VydmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg2MzIx
RTZBNjdCRjAwOTRGREM4IC8qIG1lZGlhdHlwZXMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNB
MjM4MDFGRTE4RTA3MDAzNzNFOTkgLyogbWVtb3J5X3VzYWdlLmNjIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDFGQ0JCODQyMUIyMDA3QjAwQTVERjI3IC8qIG1lbXV0aWwuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0REOEEyRjFFNDNCRkIzMDA2MjFFOTIgLyogbWVyZ2UuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk0MTNBMjJGOTFGRTE4RTA3MDAzNzNFOTkgLyogbWVzc2FnZWRpZ2VzdC5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxM0EyMzZCMUZFMThFMDcwMDM3M0U5OSAvKiBtZXNzYWdlaGFuZGxlci5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMkIxMUZFMThFMDcwMDM3M0U5OSAvKiBtZXNzYWdl
cXVldWUuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTc5NTNEQjIxNjk4MzkxMDAyODI2NkIgLyog
bWV0cmljcy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NjVFMUU0M0I4QjUwMDYyMUU5MiAv
KiBtaW5fbWF4X29wZXJhdGlvbnMuYyBpbiBTb3VyY2VzICovLAotCQkJCTVDREQ4MzdEMUU0MzlB
MzUwMDYyMUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2
N0EzMjE2OTg4OTUwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMubSBpbiBT
b3VyY2VzICovLAorCQkJCTQxNzk1M0U2MjE2OTgzQ0EwMDI4MjY2QiAvKiBtb2R1bGVfY29tbW9u
X3R5cGVzLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCMTUyMUIxRjdBQTAwQTVERjI3IC8q
IG1vdmluZ19hdmVyYWdlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg2MTAxRTZBNjRDOTAw
OTRGREM4IC8qIG1vdmluZ19tYXguY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEM4RTFFNDND
NjYwMDA2MjFFOTIgLyogbW92aW5nX21vbWVudHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
OEJDRjFFNDNDMkI1MDA2MjFFOTIgLyogbXlfY29yci5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDg5NTMxRTQzQkYzQTAwNjIxRTkyIC8qIG5hY2suY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
ODNFQTFFNDM5QTZGMDA2MjFFOTIgLyogbmFja19tb2R1bGUuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REOEEzMjFFNDNCRkIzMDA2MjFFOTIgLyogbmFja190cmFja2VyLmNjIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNDE3OTUzQjkyMTY5ODI0MjAwMjgyNjZCIC8qIFJUQ1ZpZGVvRW5jb2RlckZhY3Rv
cnlIMjY0Lm0gaW4gU291cmNlcyAqLywKKwkJCQk0MTc5NTNCNDIxNjk4MjQyMDAyODI2NkIgLyog
bmFsdV9yZXdyaXRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzAzMUZFMThFMDcwMDM3
M0U5OSAvKiBuYXR0eXBlcy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkQxMUU0M0MyQjUw
MDYyMUU5MiAvKiBuZWFyZXN0X25laWdoYm9yLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEEz
QjFFNDNCRkIzMDA2MjFFOTIgLyogbmV0ZXEuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NjM3LDQ2
ICsxNjczMiw0NCBAQAogCQkJCTQxRTAyQ0NEMjEyNzM1QjcwMEMyN0NENiAvKiBuZXR3b3JrX3R5
cGVzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzOEIxRkUxOEUwNzAwMzczRTk5IC8qIG5l
dHdvcmttb25pdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2RDNCRTcyMTI3MzFDMjAwNzc1
RjA5IC8qIG5vaXNlX2xldmVsX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2
NzkwMjE2OTg3REIwMEVGMzdFRCAvKiBSVENWaWRlb0ZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE2RDNCRTgyMTI3MzFDMjAwNzc1RjA5IC8qIG5vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NUZFMUU0M0I4NEUwMDYyMUU5MiAvKiBub2lzZV9z
dXBwcmVzc2lvbi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg0RTkxRTQzQjBCNjAwNjIxRTky
IC8qIG5vaXNlX3N1cHByZXNzaW9uX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODVG
QzFFNDNCODRFMDA2MjFFOTIgLyogbm9pc2Vfc3VwcHJlc3Npb25feC5jIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNDE3OTUzQjgyMTY5ODI0MjAwMjgyNjZCIC8qIFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnlI
MjY0Lm0gaW4gU291cmNlcyAqLywKLQkJCQk0MTNBMjM1RjFGRTE4RTA3MDAzNzNFOTkgLyogbm9v
cC5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0EyM0VFMUZFMThFMDgwMDM3M0U5OSAvKiBub29w
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhBM0QxRTQzQkZCMzAwNjIxRTkyIC8qIG5vcm1h
bC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjU2MjFCMUZFNDYwMEE1REYyNyAvKiBub3Jt
YWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4NkE3MUU0M0I5OTQwMDYyMUU5MiAvKiBub3JtYWxpemVkX2NvdmFyaWFuY2VfZXN0aW1hdG9y
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2MDAxRTQzQjg0RTAwNjIxRTkyIC8qIG5zX2Nv
cmUuYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNDRCM0YwMjE2OUM2M0YwMDQzNjNBQyAvKiBOU1N0
cmluZytTdGRTdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODYwNTFFNDNCODRFMDA2
MjFFOTIgLyogbnN4X2NvcmUuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NjAyMUU0M0I4NEUw
MDYyMUU5MiAvKiBuc3hfY29yZV9jLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MUY0MTFBRDFFRjhE
OTFGMDAzNDNDMjYgLyogbnVsbF9hZWNfZHVtcF9mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE5QzgzQjMxRkUyNDcyRTAwNDBDMzBGIC8qIG51bGxfYXVkaW9fcG9sbGVyLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDEzQTIzRDIxRkUxOEUwODAwMzczRTk5IC8qIG51bGxzb2NrZXRzZXJ2
ZXIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTYyMjVFNDIxNjk4MTk1MDBBOTFDOUIgLyogb2Jq
Y19mcmFtZV9idWZmZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTYyMjVFNzIxNjk4MTk1MDBB
OTFDOUIgLyogb2JqY192aWRlb19kZWNvZGVyX2ZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk0MTYyMjVFNjIxNjk4MTk1MDBBOTFDOUIgLyogb2JqY192aWRlb19lbmNvZGVyX2ZhY3Rvcnku
bW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTYyMjVFMjIxNjk4MTk1MDBBOTFDOUIgLyogb2JqY192
aWRlb19mcmFtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4Njk0MUU0M0I5MzkwMDYyMUU5
MiAvKiBvb3VyYV9mZnQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY5MTFFNDNCOTM5MDA2
MjFFOTIgLyogb291cmFfZmZ0X3NzZTIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI3RDIx
QjFGRkY2MDBBNURGMjcgLyogb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDE5Qzg0MjcxRkUyNEJEMTAwNDBDMzBGIC8qIG9wZW5zc2xhZGFwdGVyLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEREIyNjQyMTI2NzlBMzAwMjk2RDQ3IC8qIG9wZW5zc2xj
ZXJ0aWZpY2F0ZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4NDI2MUZFMjRCQ0YwMDQwQzMw
RiAvKiBvcGVuc3NsZGlnZXN0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5Qzg0MjUxRkUyNEJD
ODAwNDBDMzBGIC8qIG9wZW5zc2xpZGVudGl0eS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRERC
MjYyMjEyNjc5QTMwMDI5NkQ0NyAvKiBvcGVuc3Nsc2Vzc2lvbmNhY2hlLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDE5Qzg0M0YxRkUyNTBCOTAwNDBDMzBGIC8qIG9wZW5zc2xzdHJlYW1hZGFwdGVy
LmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzRTY3OUIyMTY5ODg2MjAwRUYzN0VEIC8qIGFnYzJf
Y29tbW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEREIyNjUyMTI2NzlBMzAwMjk2RDQ3IC8q
IG9wZW5zc2x1dGlsaXR5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEREIyNTIyMTI2NUJFOTAw
Mjk2RDQ3IC8qIG9wdGlvbmFsLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzQTIzNEExRkUxOEUw
NzAwMzczRTk5IC8qIG9wdGlvbnNmaWxlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhDNjcx
RTQzQzYwOTAwNjIxRTkyIC8qIG9wdXNfaW50ZXJmYWNlLmMgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REOEZENzFFNDNDRDY2MDA2MjFFOTIgLyogb3ZlcnVzZV9kZXRlY3Rvci5jYyBpbiBTb3VyY2Vz
ICovLAotCQkJCTQxNzk1M0Q1MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmRfcHJveHku
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEZEOTFFNDNDRDY2MDA2MjFFOTIgLyogb3ZlcnVz
ZV9lc3RpbWF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODVBNDFFNDNCNUMwMDA2MjFF
OTIgLyogb3ZlcnVzZV9mcmFtZV9kZXRlY3Rvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNjNG
OUVEMUU0MTc0RjYwMDJDQTUzMSAvKiBwMnBjb25zdGFudHMuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1QzYzRjlGMjFFNDE3NEY2MDAyQ0E1MzEgLyogcDJwdHJhbnNwb3J0Y2hhbm5lbC5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxRjI2MzlBMjEyNjdGNUUwMDI3NEY1OSAvKiBwYV9yaW5nYnVmZmVy
LmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEZBMjFFNDNDQ0JFMDA2MjFFOTIgLyogcGFjZWRf
c2VuZGVyLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEyOTlCOEIyMTI3MzY1MTAwQjM0MTRCIC8q
IHBhY2VyX2NvbnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEJEMzFFNDNDMkI1
MDA2MjFFOTIgLyogcGFja19iaXRzLmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTQ0QjNEMTIxNjk4
OTY3MDA0MzYzQUMgLyogUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REOEE0MjFFNDNCRkIzMDA2MjFFOTIgLyogcGFja2V0LmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNERDgzRUUxRTQzOUE2RjAwNjIxRTkyIC8qIHBhY2tldC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDREQ4QUFGMUU0M0MwMEYwMDYyMUU5MiAvKiBwYWNrZXQuY2MgaW4gU291cmNl
cyAqLywKQEAgLTE2Njg4LDcgKzE2NzgxLDYgQEAKIAkJCQk0MTI0NTU1NjFFRjg4N0ZCMDBGMTE4
MDkgLyogcGFja2V0bG9zc2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4M0Y1
MUZFMjQ4Q0EwMDQwQzMwRiAvKiBwYWNrZXRzb2NrZXRmYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDE5QzgzREExRkUyNDdGMjAwNDBDMzBGIC8qIHBhY2tldHRyYW5zcG9ydGludGVybmFs
LmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzQTIzM0MxRkUxOEUwNzAwMzczRTk5IC8qIHBhdGh1
dGlscy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0ODgzMUU0MkMxQkEwMDI2NTFDOCAvKiBw
YXlsb2FkX3R5cGVfbWFwcGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDkwMDAxRTQzQ0Uz
QTAwNjIxRTkyIC8qIHBjbTE2Yi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg0RkYxRTZBNjA1
NzAwOTRGREM4IC8qIHBlZXJjb25uZWN0aW9uLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjcwNyw3
ICsxNjc5OSw2IEBACiAJCQkJNUNERDg3MzAxRTQzQkFCRTAwNjIxRTkyIC8qIHBpdGNoX2ludGVy
bmFsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3RDUxRTQzQkMwNjAwNjIxRTkyIC8qIHBp
dGNoX2xhZ190YWJsZXMuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNDMzRDE5MUY3OUIzMzQwMDM4
N0I0RCAvKiBwaXRjaF9sYWdfdGFibGVzLmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTNFNjc2RDIx
Njk4NTRCMDBFRjM3RUQgLyogUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxOTI0MTQxMjEyNzM3MjQwMDYzNEZDRiAvKiBwaXRjaF9zZWFyY2guY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDE0NDIxMjczNzI4MDA2MzRGQ0YgLyogcGl0Y2hfc2Vh
cmNoX2ludGVybmFsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzNUExRkUxOEUwNzAwMzcz
RTk5IC8qIHBsYXRmb3JtX2ZpbGUuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NzQ3LDcgKzE2ODM4
LDYgQEAKIAkJCQk0MTNBMjM2MjFGRTE4RTA3MDAzNzNFOTkgLyogcmF0ZXRyYWNrZXIuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MUEwOEJDQzIxMjY5NjIwMDAxRDVEN0IgLyogcmF3X2xvZ2dpbmcu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY2MTFFNDNCOEI1MDA2MjFFOTIgLyogcmVhbF9m
ZnQuYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2Nzc1MjE2OTg2M0IwMEVGMzdFRCAvKiBsaWJ2
cHhfaW50ZXJmYWNlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDNzcxRTQzMUY5QzAwMjY1
MUM4IC8qIHJlYWxfZm91cmllci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0QzcyMUU0MzFG
OUMwMDI2NTFDOCAvKiByZWFsX2ZvdXJpZXJfb291cmEuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0
MTMwOTFGRTFFRjhEMDZEMDA3NTdDNTUgLyogcmVjZWl2ZV9zaWRlX2Nvbmdlc3Rpb25fY29udHJv
bGxlci5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY3ODMsMTQgKzE2ODczLDEyIEBACiAJCQkJNUNE
RDg2NjQxRTQzQjhCNTAwNjIxRTkyIC8qIHJlc2FtcGxlX2J5XzJfaW50ZXJuYWwuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4NjY4MUU0M0I4QjUwMDYyMUU5MiAvKiByZXNhbXBsZV9mcmFjdGlv
bmFsLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEFCMTFFNDNDMDBGMDA2MjFFOTIgLyogcmVz
YW1wbGVfaW5wdXRfYXVkaW9fZmlsZS5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2Nzk4MjE2
OTg4MzkwMEVGMzdFRCAvKiBSVENWaWRlb0NvZGVjSW5mby5tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDg3NTgxRTQzQkFGNTAwNjIxRTkyIC8qIHJlc2FtcGxlci5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4NEJEMUU0M0FGMTMwMDYyMUU5MiAvKiByZXNpZHVhbF9lY2hvX2RldGVjdG9yLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg1REQxRTZBNjM0MzAwOTRGREM4IC8qIHJlc2lkdWFs
X2VjaG9fZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDN0ExRTQzMUY5QzAw
MjY1MUM4IC8qIHJpbmdfYnVmZmVyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRCRjFFNDNB
RjEzMDA2MjFFOTIgLyogcm1zX2xldmVsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxNDYy
MTI3MzcyODAwNjM0RkNGIC8qIHJubi5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0JDMjE2
OTgyNEIwMDI4MjY2QiAvKiBoZWxwZXJzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxOTky
MTI3NTg2NTAwNjM0RkNGIC8qIHJubl92YWRfd2VpZ2h0cy5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDRkQ1MzhGMUU0QkQzQTMwMDQ4MjkwOCAvKiByb3RhdGVfbmVvbi5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDRkQ1MzkwMUU0QkQzQTMwMDQ4MjkwOCAvKiByb3RhdGVfbmVvbjY0LmNjIGluIFNv
dXJjZXMgKi8sCkBAIC0xNjgwNCw3ICsxNjg5Miw2IEBACiAJCQkJNDE5QzgzOUIxRkUyNDZGOTAw
NDBDMzBGIC8qIHJ0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0cmVhbV9jb25maWcuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk0MTlDODM5RTFGRTI0NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X2F1ZGlv
X3NlbmRfc3RyZWFtX2NvbmZpZy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4MzhCMUZFMjQ2
RjkwMDQwQzMwRiAvKiBydGNfZXZlbnRfYndlX3VwZGF0ZV9kZWxheV9iYXNlZC5jYyBpbiBTb3Vy
Y2VzICovLAotCQkJCTQxNzk1M0VGMjE2OTg0MjEwMDI4MjY2QiAvKiB2cDlfcHJvZmlsZS5jYyBp
biBTb3VyY2VzICovLAogCQkJCTQxOUM4MzhEMUZFMjQ2RjkwMDQwQzMwRiAvKiBydGNfZXZlbnRf
YndlX3VwZGF0ZV9sb3NzX2Jhc2VkLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFBMDhCQzAyMTI2
OTU1MzAwMUQ1RDdCIC8qIHJ0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXIuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MUEwOEJCRDIxMjY5NTUzMDAxRDVEN0IgLyogcnRjX2V2ZW50X2ljZV9jYW5k
aWRhdGVfcGFpcl9jb25maWcuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2ODI0LDEwICsxNjkxMSwx
NyBAQAogCQkJCTQxOUM4NDFEMUZFMjRBRUYwMDQwQzMwRiAvKiBydGNfc3RyZWFtX2NvbmZpZy5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzBGMUZFMThFMDcwMDM3M0U5OSAvKiBydGNjZXJ0
aWZpY2F0ZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMkJFMUZFMThFMDcwMDM3M0U5OSAv
KiBydGNjZXJ0aWZpY2F0ZWdlbmVyYXRvci5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNzk1M0ND
MjE2OTgyREIwMDI4MjY2QiAvKiBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQubW0gaW4gU291cmNl
cyAqLywKKwkJCQk0MTNFNjc4QjIxNjk4N0I5MDBFRjM3RUQgLyogUlRDQ1ZQaXhlbEJ1ZmZlci5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTQxNzk1M0I1MjE2OTgyNDIwMDI4MjY2QiAvKiBSVENEZWZh
dWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5tIGluIFNvdXJjZXMgKi8sCisJCQkJNDE3OTUzQjcyMTY5
ODI0MjAwMjgyNjZCIC8qIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5Lm0gaW4gU291cmNl
cyAqLywKKwkJCQk0MTQ0QjNGNTIxNkIwODFCMDA0MzYzQUMgLyogUlRDRW5jb2RlZEltYWdlK1By
aXZhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTc5NTNGQTIxNjk4NEJFMDAyODI2NkIgLyog
UlRDRW5jb2RlZEltYWdlLm0gaW4gU291cmNlcyAqLywKIAkJCQk0MUY0MTFCMDFFRjhEQTAxMDAz
NDNDMjYgLyogcnRjZXJyb3IuY2MgaW4gU291cmNlcyAqLywKLQkJCQk1Q0REOEE0RjFFNDNCRkIz
MDA2MjFFOTIgLyogcnRjcC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNDRCM0Q2MjE2OThBMUEw
MDQzNjNBQyAvKiBSVENIMjY0UHJvZmlsZUxldmVsSWQubW0gaW4gU291cmNlcyAqLywKKwkJCQk0
MTQ0QjNEMzIxNjk4OTZEMDA0MzYzQUMgLyogUlRDTmF0aXZlSTQyMEJ1ZmZlci5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxNDRCM0QxMjE2OTg5NjcwMDQzNjNBQyAvKiBSVENOYXRpdmVNdXRhYmxl
STQyMEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4MkI5MUZFMjBEQ0QwMDQwQzMw
RiAvKiBydGNwX2RlbXV4ZXIuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTNFNjc3NjIxNjk4NjYx
MDBFRjM3RUQgLyogUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTVDRDI4NUZBMUU2QTY0NTIwMDk0RkRDOCAvKiBydGNwX25hY2tfc3RhdHMuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REODg5NzFFNDNCRTNDMDA2MjFFOTIgLyogcnRjcF9wYWNrZXQuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REODg5QTFFNDNCRTNDMDA2MjFFOTIgLyogcnRjcF9yZWNlaXZl
ci5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY4MzUsMTUgKzE2OTI5LDMxIEBACiAJCQkJNDE5Qzgy
RkYxRkUyMEYwMjAwNDBDMzBGIC8qIHJ0Y3BfdHJhbnNjZWl2ZXIuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk0MTlDODMwMjFGRTIwRjAyMDA0MEMzMEYgLyogcnRjcF90cmFuc2NlaXZlcl9jb25maWcu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODMwMDFGRTIwRjAyMDA0MEMzMEYgLyogcnRjcF90
cmFuc2NlaXZlcl9pbXBsLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4ODlENzcyMTZCQzRFQzAw
NDYxNEREIC8qIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTQxODg5RDc5MjE2QkM0RUMwMDQ2MTRERCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyK1By
aXZhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI4OTIxQjIwMEZEMDBBNURGMjcgLyog
UlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2M0ZBNzgx
RTQxN0FFRDAwMkNBNTMxIC8qIHJ0Y3N0YXRzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2M0ZB
NzcxRTQxN0FFRDAwMkNBNTMxIC8qIHJ0Y3N0YXRzX29iamVjdHMuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0QyODUwNzFFNkE2MDU3MDA5NEZEQzggLyogcnRjc3RhdHNjb2xsZWN0b3IuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1QzYzRkE3OTFFNDE3QUVEMDAyQ0E1MzEgLyogcnRjc3RhdHNyZXBv
cnQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTAyRjY5MjIxMjczMjA2MDA2QUU4RDcgLyogcnRj
c3RhdHN0cmF2ZXJzYWwuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTNFNjc3NjIxNjk4NjYxMDBF
RjM3RUQgLyogUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQx
NDRCM0U4MjE2OUM1RTMwMDQzNjNBQyAvKiBSVENWaWRlb0NvZGVjSW5mbytQcml2YXRlLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDEzRTY3OTgyMTY5ODgzOTAwRUYzN0VEIC8qIFJUQ1ZpZGVvQ29k
ZWNJbmZvLm0gaW4gU291cmNlcyAqLywKKwkJCQk0MTc5NTNCODIxNjk4MjQyMDAyODI2NkIgLyog
UlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQubSBpbiBTb3VyY2VzICovLAorCQkJCTQxNzk1M0M3
MjE2OTgyNEIwMDI4MjY2QiAvKiBSVENWaWRlb0RlY29kZXJIMjY0Lm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNDEzRTY3NjgyMTY5ODU0QjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRGVjb2RlclZQOC5tbSBp
biBTb3VyY2VzICovLAorCQkJCTQxNzk1M0I5MjE2OTgyNDIwMDI4MjY2QiAvKiBSVENWaWRlb0Vu
Y29kZXJGYWN0b3J5SDI2NC5tIGluIFNvdXJjZXMgKi8sCisJCQkJNDE3OTUzQ0EyMTY5ODI0QjAw
MjgyNjZCIC8qIFJUQ1ZpZGVvRW5jb2RlckgyNjQubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTNF
NjdBMzIxNjk4ODk1MDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLm0gaW4g
U291cmNlcyAqLywKKwkJCQk0MTQ0QjNGNzIxNkIwOUNCMDA0MzYzQUMgLyogUlRDVmlkZW9FbmNv
ZGVyU2V0dGluZ3MrUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxM0U2NzY1MjE2OTg1
NDYwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJWUDgubW0gaW4gU291cmNlcyAqLywKKwkJCQk0
MTNFNjc5MDIxNjk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9GcmFtZS5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTQxM0U2NzZCMjE2OTg1NEIwMEVGMzdFRCAvKiBSVENXcmFwcGVkTmF0aXZlVmlkZW9E
ZWNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzRTY3NkQyMTY5ODU0QjAwRUYzN0VEIC8q
IFJUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MUQ2
QjQ1OTIxMjczMTU5MDA4RjkzNTMgLyogcnRwX2JpdHJhdGVfY29uZmlndXJhdG9yLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDE5QzgyQjQxRkUyMERDRDAwNDBDMzBGIC8qIHJ0cF9jb25maWcuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MTMwOTIwMjFFRjhEMEE2MDA3NTdDNTUgLyogcnRwX2RlbXV4
ZXIuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTc5NTNCNTIxNjk4MjQyMDAyODI2NkIgLyogUlRD
RGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkubSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OEIw
MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfZm9ybWF0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDg4QTQxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXRfaDI2NC5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDREQ4OEE2MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfZm9ybWF0X3ZpZGVvX2dlbmVy
aWMuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2ODU0LDYgKzE2OTY0LDcgQEAKIAkJCQk0MUUwMkM3
QTIxMjczNDc0MDBDMjdDRDYgLyogcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxOTI0MUIwMjEyNzU5MDIwMDYzNEZDRiAvKiBydHBfZ2VuZXJpY19m
cmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNDVFNERD
MUVGOENDRUYwMEZDRjZFNiAvKiBydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuY2MgaW4gU291cmNl
cyAqLywKKwkJCQk0MTNFNjc3RDIxNjk4NkFFMDBFRjM3RUQgLyogcnRwX2hlYWRlcl9leHRlbnNp
b25fc2l6ZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OEI1MUU0M0JFM0MwMDYyMUU5MiAv
KiBydHBfaGVhZGVyX2V4dGVuc2lvbnMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODhCNzFF
NDNCRTNDMDA2MjFFOTIgLyogcnRwX2hlYWRlcl9wYXJzZXIuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MUY5QkY4QjIwNTFDODAxMDBBQkYwQjkgLyogcnRwX2hlYWRlcnMuY2MgaW4gU291cmNlcyAq
LywKQEAgLTE2ODY3LDcgKzE2OTc4LDYgQEAKIAkJCQk1Q0REODhDQzFFNDNCRTNEMDA2MjFFOTIg
LyogcnRwX3J0Y3BfaW1wbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OEQzMUU0M0JFM0Qw
MDYyMUU5MiAvKiBydHBfc2VuZGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4Q0UxRTQz
QkUzRDAwNjIxRTkyIC8qIHJ0cF9zZW5kZXJfYXVkaW8uY2MgaW4gU291cmNlcyAqLywKLQkJCQk0
MTc5NTNEQjIxNjk4MzkxMDAyODI2NkIgLyogbWV0cmljcy5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4OEQxMUU0M0JFM0QwMDYyMUU5MiAvKiBydHBfc2VuZGVyX3ZpZGVvLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDE5QzgyQkMxRkUyMERDRDAwNDBDMzBGIC8qIHJ0cF9zdHJlYW1fcmVjZWl2
ZXJfY29udHJvbGxlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NUIyMUU0M0I1QzAwMDYy
MUU5MiAvKiBydHBfc3RyZWFtc19zeW5jaHJvbml6ZXIuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2
ODc2LDI2ICsxNjk4NiwyMiBAQAogCQkJCTVDREQ4OEQ1MUU0M0JFM0QwMDYyMUU5MiAvKiBydHBf
dXRpbGl0eS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRTAyQzdEMjEyNzM0NzQwMEMyN0NENiAv
KiBydHBfdmlkZW9faGVhZGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFENkI0NUMyMTI3MzE1
OTAwOEY5MzUzIC8qIHJ0cF92aWRlb19zZW5kZXIuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTNF
Njc4QjIxNjk4N0I5MDBFRjM3RUQgLyogUlRDQ1ZQaXhlbEJ1ZmZlci5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTQxM0U2Nzc0MjE2OTg2M0IwMEVGMzdFRCAvKiB2cDhfdGVtcG9yYWxfbGF5ZXJzLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMDkxRjQxRUY4Q0Y5MjAwNzU3QzU1IC8qIHJ0cF92aWRl
b19zdHJlYW1fcmVjZWl2ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNDhFQjFFNDJDMUUz
MDAyNjUxQzggLyogcnRwZGF0YWVuZ2luZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OTZD
MUU0M0JGM0EwMDYyMUU5MiAvKiBydHBmYi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4MkM5
MUZFMjBFMkMwMDQwQzMwRiAvKiBydHBtZWRpYXV0aWxzLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NDE0NEIzRDgyMTY5OEQzRDAwNDM2M0FDIC8qIGxvZ2dpbmcuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTlDODMxNTFGRTI0MjgwMDA0MEMzMEYgLyogcnRwcGFyYW1ldGVycy5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxMDJGNjkzMjEyNzMyMDYwMDZBRThENyAvKiBydHBwYXJhbWV0ZXJzY29udmVy
c2lvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NTA5MUU2QTYwNTcwMDk0RkRDOCAvKiBy
dHByZWNlaXZlci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNDRCM0Y1MjE2QjA4MUIwMDQzNjNB
QyAvKiBSVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQxNjIy
NUQ5MjE2OTgxODEwMEE5MUM5QiAvKiB2aWRlb19mcmFtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTQxRjI2MzgzMjEyNjdCNzcwMDI3NEY1OSAvKiBydHByZWNlaXZlcmludGVyZmFjZS5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDRDI4NTBCMUU2QTYwNTcwMDk0RkRDOCAvKiBydHBzZW5kZXIuY2Mg
aW4gU291cmNlcyAqLywKKwkJCQk0MTQ0QjNFMjIxNjlCNUJEMDA0MzYzQUMgLyogcnRwc2VuZGVy
aW50ZXJmYWNlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgyRTYxRkUyMEU1OTAwNDBDMzBG
IC8qIHJ0cHRyYW5zY2VpdmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzODUyMTI2N0I3
NzAwMjc0RjU5IC8qIHJ0cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE0NUU0Q0MxRUY4Q0I4QjAwRkNGNkU2IC8qIHJ0cHRyYW5zcG9ydC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDNEI0OEYxMUU0MkMxRTMwMDI2NTFDOCAvKiBydHB1dGlscy5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4M0Y4MUU0MzlBNkYwMDYyMUU5MiAvKiBydHRfZmlsdGVyLmNjIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNDEzRTY3NzIyMTY5ODYzQjAwRUYzN0VEIC8qIHRlbXBvcmFsX2xh
eWVyc19jaGVja2VyLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE3OTUzRUEyMTY5ODNGMTAwMjgy
NjZCIC8qIHJ0dF9tdWx0X2V4cGVyaW1lbnQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDFD
QTIxMjc1OTNGMDA2MzRGQ0YgLyogcnR0X3N0YXRzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5
QzgyQjcxRkUyMERDRDAwNDBDMzBGIC8qIHJ0eF9yZWNlaXZlX3N0cmVhbS5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxOTI0MTY0MjEyNzM4NUIwMDYzNEZDRiAvKiByd19sb2NrX3Bvc2l4LmNjIGlu
IFNvdXJjZXMgKi8sCkBAIC0xNjkxMiw3ICsxNzAxOCw2IEBACiAJCQkJNDEyMzlCM0YyMTQ3NkRD
NDAwMzk2RjgxIC8qIHNjcmVlbnNoYXJlX2xheWVycy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
RDI4NjNDMUU2QTY4MUMwMDk0RkRDOCAvKiBzY3RwdHJhbnNwb3J0LmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNEMjg1MEQxRTZBNjA1NzAwOTRGREM4IC8qIHNjdHB1dGlscy5jYyBpbiBTb3VyY2Vz
ICovLAotCQkJCTQxM0U2NzY1MjE2OTg1NDYwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJWUDgu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODk2RjFFNDNCRjNBMDA2MjFFOTIgLyogc2Rlcy5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjI2MzYyMjEyNjdBREYwMDI3NEY1OSAvKiBzZHBfdmlk
ZW9fZm9ybWF0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgyREMxRkUyMEU1OTAwNDBDMzBG
IC8qIHNkcHV0aWxzLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjkyMywxMSArMTcwMjgsMTEgQEAK
IAkJCQk1Q0REODVCOTFFNDNCNUMwMDA2MjFFOTIgLyogc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDEyOTlCOEMyMTI3MzY1MTAwQjM0MTRCIC8qIHNlbmRfdGlt
ZV9oaXN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg5NzIxRTQzQkYzQTAwNjIxRTky
IC8qIHNlbmRlcl9yZXBvcnQuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkIyNzIxQjFGODdF
MDBBNURGMjcgLyogc2VudF9wYWNrZXQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjM5RDFG
RTE4RTA4MDAzNzNFOTkgLyogc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl9pbXBsLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDgzRkIxRTQzOUE2RjAwNjIxRTkyIC8qIHNlc3Npb25faW5mby5jYyBp
biBTb3VyY2VzICovLAogCQkJCTQxRjlCRkU0MjA1MURFMTgwMEFCRjBCOSAvKiBzZXNzaW9uZGVz
Y3JpcHRpb24uY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODVERjFFNkE2MzQzMDA5NEZEQzgg
Lyogc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbi5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2
NzdBMjE2OTg2N0EwMEVGMzdFRCAvKiBjaGFubmVsX3JlY2VpdmVfcHJveHkuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MTZEM0JFQjIxMjczMUMyMDA3NzVGMDkgLyogc2lnbmFsX2NsYXNzaWZpZXIu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjM1QjFGRTE4RTA3MDAzNzNFOTkgLyogc2lnbmFs
dGhyZWFkLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzQkIyMTI2ODExNTAwMjc0RjU5IC8q
IHNpZ3Nsb3QuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2OTQ2LDE4ICsxNzA1MSwxNCBAQAogCQkJ
CTVDNEI0Q0U1MUU0MzIwQTkwMDI2NTFDOCAvKiBzbGVlcC5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4QkU1MUU0M0MyQjUwMDYyMUU5MiAvKiBzbW9vdGguYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4QkUzMUU0M0MyQjUwMDYyMUU5MiAvKiBzbW9vdGhfb3V0X2RhdGEuYyBpbiBTb3VyY2Vz
ICovLAotCQkJCTQxM0U2N0E1MjE2OTg4REMwMEVGMzdFRCAvKiB2aWRlb19zdHJlYW1fZW5jb2Rl
cl9vYnNlcnZlci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0I0MjE2OTgyNDIwMDI4MjY2
QiAvKiBuYWx1X3Jld3JpdGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg1RjYxRTZBNjNG
NjAwOTRGREM4IC8qIHNtb290aGluZ19maWx0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MURE
QjI1NjIxMjY3OTBBMDAyOTZENDcgLyogc29ja2V0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEz
QTIyRjAxRkUxOEUwNzAwMzczRTk5IC8qIHNvY2tldGFkYXB0ZXJzLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEzQTIzNjgxRkUxOEUwNzAwMzczRTk5IC8qIHNvY2tldGFkZHJlc3MuY2MgaW4gU291
cmNlcyAqLywKLQkJCQk0MTQ0QjNENjIxNjk4QTFBMDA0MzYzQUMgLyogUlRDSDI2NFByb2ZpbGVM
ZXZlbElkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzNEQxRkUxOEUwNzAwMzczRTk5IC8q
IHNvY2tldGFkZHJlc3NwYWlyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIyRDMxRkUxOEUw
NzAwMzczRTk5IC8qIHNvY2tldHN0cmVhbS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkU3
MUU0M0MyQjUwMDYyMUU5MiAvKiBzb3J0X3NxLmMgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNEM3
RDFFNDMxRjlDMDAyNjUxQzggLyogc3BhcnNlX2Zpcl9maWx0ZXIuY2MgaW4gU291cmNlcyAqLywK
LQkJCQk0MTQ0QjNFMjIxNjlCNUJEMDA0MzYzQUMgLyogcnRwc2VuZGVyaW50ZXJmYWNlLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxQUQyMTI3NThEMzAwNjM0RkNGIC8qIHNwZWN0cmFsX2Zl
YXR1cmVzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxQTgyMTI3NThEMzAwNjM0RkNGIC8q
IHNwZWN0cmFsX2ZlYXR1cmVzX2ludGVybmFsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MzNE
MDIxRjc5QjMzNDAwMzg3QjREIC8qIHNwZWN0cnVtX2FyX21vZGVsX3RhYmxlcy5jIGluIFNvdXJj
ZXMgKi8sCkBAIC0xNjk5Miw3ICsxNzA5Myw2IEBACiAJCQkJNDFFMDJDQkUyMTI3MzU2QTAwQzI3
Q0Q2IC8qIHNzbGNlcnRpZmljYXRlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzRjExRkUx
OEUwODAwMzczRTk5IC8qIHNzbGZpbmdlcnByaW50LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5
Qzg0MTYxRkUyNEE4RDAwNDBDMzBGIC8qIHNzbGlkZW50aXR5LmNjIGluIFNvdXJjZXMgKi8sCi0J
CQkJNDEzRTY3N0QyMTY5ODZBRTAwRUYzN0VEIC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQxNzFGRTI0QUEzMDA0MEMzMEYgLyogc3Nsc3Ry
ZWFtYWRhcHRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NzM2MUU0M0JBQkUwMDYyMUU5
MiAvKiBzdGFuZGFsb25lX3ZhZC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkVCMUU0M0My
QjUwMDYyMUU5MiAvKiBzdGF0ZV9jb25zdHJ1Y3QuYyBpbiBTb3VyY2VzICovLApAQCAtMTcwMDUs
OCArMTcxMDUsOCBAQAogCQkJCTVDREQ4NUJGMUU0M0I1QzAwMDYyMUU5MiAvKiBzdHJlYW1fc3lu
Y2hyb25pemF0aW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjQ4RjQxRTQyQzFFMzAwMjY1
MUM4IC8qIHN0cmVhbXBhcmFtcy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRERCMjZFMjEyNjc5
RDIwMDI5NkQ0NyAvKiBzdHJpbmdfYnVpbGRlci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2
NzZCMjE2OTg1NEIwMEVGMzdFRCAvKiBSVENXcmFwcGVkTmF0aXZlVmlkZW9EZWNvZGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzRDYxRkUxOEUwODAwMzczRTk5IC8qIHN0cmluZ190b19u
dW1iZXIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI4MDIxQjIwMDEyMDBBNURGMjcgLyog
c3RyaW5nX3ZpZXcuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjJCNTFGRTE4RTA3MDAzNzNF
OTkgLyogc3RyaW5nZW5jb2RlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzMTMxRkUxOEUw
NzAwMzczRTk5IC8qIHN0cmluZ3V0aWxzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2M0ZBMEIx
RTQxNzRGNjAwMkNBNTMxIC8qIHN0dW4uY2MgaW4gU291cmNlcyAqLywKQEAgLTE3MDE2LDYgKzE3
MTE2LDggQEAKIAkJCQk1Q0QyODVFMjFFNkE2MzQzMDA5NEZEQzggLyogc3VidHJhY3Rvci5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDRDI4NUU0MUU2QTYzNDMwMDk0RkRDOCAvKiBzdXBwcmVzc2lv
bl9maWx0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODVFNjFFNkE2MzQzMDA5NEZEQzgg
Lyogc3VwcHJlc3Npb25fZ2Fpbi5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxM0U2NzgyMjE2OTg3
MEYwMEVGMzdFRCAvKiBzdmNfY29uZmlnLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzRTY3OTQy
MTY5ODgxOTAwRUYzN0VEIC8qIHN2Y19yYXRlX2FsbG9jYXRvci5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4QkVGMUU0M0MyQjUwMDYyMUU5MiAvKiBzd2FwX2J5dGVzLmMgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REOEE1NDFFNDNCRkIzMDA2MjFFOTIgLyogc3luY19idWZmZXIuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0QyODRCRTFFNkE1RjlGMDA5NEZEQzggLyogc3luY2FibGUuY2MgaW4g
U291cmNlcyAqLywKQEAgLTE3MDI1LDE0ICsxNzEyNywxNCBAQAogCQkJCTQxM0EyM0RFMUZFMThF
MDgwMDM3M0U5OSAvKiB0YXNrX3F1ZXVlX2djZC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0Ey
MzJEMUZFMThFMDcwMDM3M0U5OSAvKiB0YXNrX3F1ZXVlX3Bvc2l4LmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUM2M0ZBMTcxRTQxNzRGNjAwMkNBNTMxIC8qIHRjcHBvcnQuY2MgaW4gU291cmNlcyAq
LywKKwkJCQk0MTNFNjc3MjIxNjk4NjNCMDBFRjM3RUQgLyogdGVtcG9yYWxfbGF5ZXJzX2NoZWNr
ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjJBNTFGRTE4RTA2MDAzNzNFOTkgLyogdGVz
dGVjaG9zZXJ2ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjJFNTFGRTE4RTA3MDAzNzNF
OTkgLyogdGhyZWFkLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzNTAxRkUxOEUwNzAwMzcz
RTk5IC8qIHRocmVhZF9jaGVja2VyX2ltcGwuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTNBMjNE
RDFGRTE4RTA4MDAzNzNFOTkgLyogdGhyZWFkX2Rhcndpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4NEMzMUU0M0FGMTMwMDYyMUU5MiAvKiB0aHJlZV9iYW5kX2ZpbHRlcl9iYW5rLmNjIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCMjIyMUIxRjgyRjAwQTVERjI3IC8qIHRocm93X2RlbGVn
YXRlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhBNTcxRTQzQkZCMzAwNjIxRTkyIC8qIHRp
Y2tfdGltZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDFFMjIxMjc1QTMwMDA2MzRGQ0Yg
LyogdGltZV9kZWx0YS5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxOUM4MzM1MUZFMjQ1RUEwMDQw
QzMwRiAvKiB0aW1lX2ludGVydmFsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhBNUExRTQz
QkZCMzAwNjIxRTkyIC8qIHRpbWVfc3RyZXRjaC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
OERBMUU0M0JFM0QwMDYyMUU5MiAvKiB0aW1lX3V0aWwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0
MTkyNDFFMzIxMjc1QTMwMDA2MzRGQ0YgLyogdGltZXN0YW1wLmNjIGluIFNvdXJjZXMgKi8sCkBA
IC0xNzA3Miw5ICsxNzE3NCw3IEBACiAJCQkJNDFGOUJGRUEyMDUxREVFQTAwQUJGMEI5IC8qIHR1
cm5wb3J0ZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNjNGQTJGMUU0MTc0RjYwMDJD
QTUzMSAvKiB0dXJuc2VydmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjQ4RjkxRTQyQzFF
MzAwMjY1MUM4IC8qIHR1cm51dGlscy5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNjIyNUU0MjE2
OTgxOTUwMEE5MUM5QiAvKiBvYmpjX2ZyYW1lX2J1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4NEM1MUU0M0FGMTMwMDYyMUU5MiAvKiB0eXBpbmdfZGV0ZWN0aW9uLmNjIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNDE5QzgzREMxRkUyNDdGMjAwNDBDMzBGIC8qIHVkcHRyYW5zcG9ydC5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDREQ4OERGMUU0M0JFM0QwMDYyMUU5MiAvKiB1bHBmZWNfZ2Vu
ZXJhdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4RTIxRTQzQkUzRDAwNjIxRTkyIC8q
IHVscGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
OEU0MUU0M0JFM0QwMDYyMUU5MiAvKiB1bHBmZWNfcmVjZWl2ZXJfaW1wbC5jYyBpbiBTb3VyY2Vz
ICovLApAQCAtMTcwODcsNyArMTcxODcsNiBAQAogCQkJCTVDREQ4NkQ2MUU0M0JBMjgwMDYyMUU5
MiAvKiB2YWRfY29yZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2RDkxRTQzQkEyODAwNjIx
RTkyIC8qIHZhZF9maWx0ZXJiYW5rLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODZEQzFFNDNC
QTI4MDA2MjFFOTIgLyogdmFkX2dtbS5jIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzRTYyMTY5
ODNDQTAwMjgyNjZCIC8qIG1vZHVsZV9jb21tb25fdHlwZXMuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REODZERjFFNDNCQTI4MDA2MjFFOTIgLyogdmFkX3NwLmMgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTZEM0JFQzIxMjczMUMyMDA3NzVGMDkgLyogdmFkX3dpdGhfbGV2ZWwuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MUY5QkZENTIwNTFEREU1MDBBQkYwQjkgLyogdmVjdG9yX2J1ZmZlci5jYyBp
biBTb3VyY2VzICovLApAQCAtMTcwOTgsMTcgKzE3MTk3LDIwIEBACiAJCQkJNUNEMjg1MzUxRTZB
NjE1OTAwOTRGREM4IC8qIHZpZGVvX2NvZGVjX2luaXRpYWxpemVyLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDFFMDJDOEQyMTI3MzRCOTAwQzI3Q0Q2IC8qIHZpZGVvX2NvZGluZ19kZWZpbmVzLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg0MDExRTQzOUE2RjAwNjIxRTkyIC8qIHZpZGVvX2Nv
ZGluZ19pbXBsLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE2MjI1RTIyMTY5ODE5NTAwQTkxQzlC
IC8qIG9iamNfdmlkZW9fZnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQxMTFGRTI0
OUFCMDA0MEMzMEYgLyogdmlkZW9fY29udGVudF90eXBlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDFGMjYzNjcyMTI2N0FERjAwMjc0RjU5IC8qIHZpZGVvX2RlY29kZXIuY2MgaW4gU291cmNlcyAq
LywKKwkJCQk0MTc5NTNGMTIxNjk4NDU1MDAyODI2NkIgLyogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5
LmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE2MjI1RDgyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVv
X2RlY29kZXJfZmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjI2MzY1MjEyNjdBREYw
MDI3NEY1OSAvKiB2aWRlb19kZWNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTQ1RjYyMDFGRTFGMzhEMDBFQjlDQUYgLyogdmlkZW9fZW5jb2Rl
ci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRTAyQ0M1MjEyNzM1ODgwMEMyN0NENiAvKiB2aWRl
b19lbmNvZGVyX2NvbmZpZy5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNjIyNUQ0MjE2OTgxODEw
MEE5MUM5QiAvKiB2aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKIAkJCQk0
MUYyNjM2OTIxMjY3QURGMDAyNzRGNTkgLyogdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFj
a193cmFwcGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg0NkExRTZBNTdGNDAwOTRGREM4
IC8qIHZpZGVvX2ZyYW1lLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNUM0QjRDMUYxRTQzMUY3NTAw
MjY1MUM4IC8qIHZpZGVvX2ZyYW1lLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE2MjI1RDkyMTY5
ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEyNDU1
NEIxRUY4ODc0MzAwRjExODA5IC8qIHZpZGVvX2ZyYW1lX2J1ZmZlci5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDNEI0QzFFMUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZV9idWZmZXIuY2Mg
aW4gU291cmNlcyAqLywKKwkJCQk0MTYyMjVENzIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZnJh
bWVfYnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEwMkY2QzkyMTI3MzNCNzAwNkFFOEQ3
IC8qIHZpZGVvX3F1YWxpdHlfb2JzZXJ2ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODJC
RTFGRTIwRENEMDA0MEMzMEYgLyogdmlkZW9fcmVjZWl2ZV9zdHJlYW0uY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REODVDQTFFNDNCNUMwMDA2MjFFOTIgLyogdmlkZW9fcmVjZWl2ZV9zdHJlYW0u
Y2MgaW4gU291cmNlcyAqLywKQEAgLTE3MTE2LDE1ICsxNzIxOCwxNCBAQAogCQkJCTVDNEI0QzIw
MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19yZW5kZXJfZnJhbWVzLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDE5QzgyQjMxRkUyMERDRDAwNDBDMzBGIC8qIHZpZGVvX3NlbmRfc3RyZWFtLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDg1Q0QxRTQzQjVDMDAwNjIxRTkyIC8qIHZpZGVvX3NlbmRf
c3RyZWFtLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzQ0EyMTY5ODI0QjAwMjgyNjZCIC8q
IFJUQ1ZpZGVvRW5jb2RlckgyNjQubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTAyRjZDQzIxMjcz
M0I3MDA2QUU4RDcgLyogdmlkZW9fc2VuZF9zdHJlYW1faW1wbC5jYyBpbiBTb3VyY2VzICovLAot
CQkJCTQxNzk1M0YxMjE2OTg0NTUwMDI4MjY2QiAvKiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0REODQwNDFFNDM5QTZGMDA2MjFFOTIgLyogdmlkZW9fc2Vu
ZGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFBMDhCQjAyMTI2ODFDODAwMUQ1RDdCIC8qIHZp
ZGVvX3NvdXJjZV9pbnRlcmZhY2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODVDRjFFNDNC
NUMwMDA2MjFFOTIgLyogdmlkZW9fc3RyZWFtX2RlY29kZXIuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTAyRjZEQjIxMjczNDE2MDA2QUU4RDcgLyogdmlkZW9fc3RyZWFtX2RlY29kZXJfY3JlYXRl
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEwMkY2Q0IyMTI3MzNCNzAwNkFFOEQ3IC8qIHZpZGVv
X3N0cmVhbV9kZWNvZGVyX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODMxRjFGRTI0
MkU2MDA0MEMzMEYgLyogdmlkZW9fc3RyZWFtX2VuY29kZXIuY2MgaW4gU291cmNlcyAqLywKKwkJ
CQk0MTNFNjdBNTIxNjk4OERDMDBFRjM3RUQgLyogdmlkZW9fc3RyZWFtX2VuY29kZXJfb2JzZXJ2
ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQxMDFGRTI0OUFCMDA0MEMzMEYgLyogdmlk
ZW9fdGltaW5nLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjQ4RkMxRTQyQzFFMzAwMjY1MUM4
IC8qIHZpZGVvYWRhcHRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0OEZGMUU0MkMxRTMw
MDI2NTFDOCAvKiB2aWRlb2Jyb2FkY2FzdGVyLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNzE0Miw3
ICsxNzI0Myw3IEBACiAJCQkJNDE5MjQxRjUyMTI3NUMzMjAwNjM0RkNGIC8qIHZwOF9lbmNvZGVy
X3NpbXVsY2FzdF9wcm94eS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4Mzg1MUU0MzlBMzUw
MDYyMUU5MiAvKiB2cDhfaGVhZGVyX3BhcnNlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
QzE0MUU0M0MzQjQwMDYyMUU5MiAvKiB2cDlfbm9vcC5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQx
Nzk1M0I3MjE2OTgyNDIwMDI4MjY2QiAvKiBSVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5t
IGluIFNvdXJjZXMgKi8sCisJCQkJNDE3OTUzRUYyMTY5ODQyMTAwMjgyNjZCIC8qIHZwOV9wcm9m
aWxlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCRjMxRTQzQzJCNTAwNjIxRTkyIC8qIHZx
My5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCRjUxRTQzQzJCNTAwNjIxRTkyIC8qIHZxNC5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDODAxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9maWxl
LmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNzE2NSw3ICsxNzI2Niw2IEBACiAJCQkJNUM0QjRDODYx
RTQzMUY5QzAwMjY1MUM4IC8qIHdpbmRvd19nZW5lcmF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REOEM5ODFFNDNDNjYwMDA2MjFFOTIgLyogd3BkX25vZGUuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0REOEM5QjFFNDNDNjYwMDA2MjFFOTIgLyogd3BkX3RyZWUuY2MgaW4gU291cmNlcyAq
LywKLQkJCQk0MTQ0QjNGNzIxNkIwOUNCMDA0MzYzQUMgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGlu
Z3MrUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkY5MUU0M0MyQjUwMDYyMUU5
MiAvKiB4Y29ycl9jb2VmLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MUREQjI1OTIxMjY3OTI4MDAy
OTZENDcgLyogemVyb19tZW1vcnkuY2MgaW4gU291cmNlcyAqLywKIAkJCSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCBlNWRhYjY2OWQ4Mjg3ZWJkMzBlMTRlZDYx
NTE3YTk5ZmIxMmMwNGZlLi5jMjRkYzA3OTlkMTQwNTJiNzAyNWFhYTUxNWZjZTgwN2JmOWJhZDFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTM3LDYgKzM3LDcg
QEAgQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KICNpbmNsdWRlIDx3ZWJydGMvYXBpL2Fz
eW5jcmVzb2x2ZXJmYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oPgorI2luY2x1ZGUgPHdl
YnJ0Yy9hcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3ZWJy
dGMvYXBpL3BlZXJjb25uZWN0aW9uZmFjdG9yeXByb3h5Lmg+CiAjaW5jbHVkZSA8d2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaD4KICNpbmNs
dWRlIDx3ZWJydGMvcDJwL2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0b3J5Lmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
U29ja2V0Q2xpZW50LmNwcAppbmRleCA3M2IwMTk2NzU5NGUwYWU0ZDYyY2JmZTVkZjY2YzcxZDdm
MDBiYTVlLi5jNTk5NWJjNTMyNTVmZTJkMzc2ZmM0NWZiZmI5ZWU2MzFlZTczZTcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ1NvY2tldENsaWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBMaWJXZWJSVENTb2Nr
ZXRDbGllbnQ6OnNpZ25hbFJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0
LCBjb24KICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHZh
bHVlLCBsZW5ndGgpOwogICAgIG1fcnRjUHJvdmlkZXIuc2VuZEZyb21NYWluVGhyZWFkKFtpZGVu
dGlmaWVyID0gbV9pZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGFkZHJlc3Mg
PSBSVENOZXR3b3JrOjppc29sYXRlZENvcHkoYWRkcmVzcyksIHBhY2tldFRpbWVdKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbikgewogICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+
c2l6ZSgpKTsKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJSVENTb2NrZXQ6
OlNpZ25hbFJlYWRQYWNrZXQoZGF0YSwgUlRDTmV0d29yazo6SVBBZGRyZXNzKGFkZHJlc3MuaXBh
ZGRyKCkpLCBhZGRyZXNzLnBvcnQoKSwgcGFja2V0VGltZS50aW1lc3RhbXApLCBpZGVudGlmaWVy
KTsKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJSVENTb2NrZXQ6OlNpZ25h
bFJlYWRQYWNrZXQoZGF0YSwgUlRDTmV0d29yazo6SVBBZGRyZXNzKGFkZHJlc3MuaXBhZGRyKCkp
LCBhZGRyZXNzLnBvcnQoKSwgcGFja2V0VGltZSksIGlkZW50aWZpZXIpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ1NvY2tldENsaWVudC5oCmluZGV4IDM2MGMyZTAxYTRmMTNjNWU4MDhmZWVlZDUyMjY3
NzE0MjJlZmQxNGMuLjhmMjA1Y2UwMjk3MTNkOGJhMjEzZjE0M2JhNzFiYjExNDc1MmRlZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ1NvY2tldENsaWVudC5oCkBAIC0zNSw4ICszNSw4IEBAIG5hbWVzcGFjZSBydGMgewog
Y2xhc3MgQXN5bmNQYWNrZXRTb2NrZXQ7CiBjbGFzcyBTb2NrZXRBZGRyZXNzOwogc3RydWN0IFBh
Y2tldE9wdGlvbnM7Ci1zdHJ1Y3QgUGFja2V0VGltZTsKIHN0cnVjdCBTZW50UGFja2V0OwordHlw
ZWRlZiBpbnQ2NF90IFBhY2tldFRpbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuY3BwCmluZGV4IGNlMGYxM2RhNzU5NGFkNmZhYjg3MTQ3ZTlkZTJkNThiODJlYmRk
OTMuLmRkOTc3OThkYWVhNDBhY2U2MjlhZDhmMGEzYjQxMWU0OTI4ZDNmODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlJUQ1NvY2tldE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENNYWNyb3MuaD4KICNpbmNsdWRlIDx3
ZWJydGMvcnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaD4KKyNpbmNsdWRlIDx3ZWJydGMvcnRj
X2Jhc2UvbG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaAppbmRleCBkOWRlYWFjNjI1NTAzMTk0
YmYyZGVlZjBhYjg1OTc4YzcwNmM2ZjU4Li42ZTRiZmUyYjE2NDE5Y2JiYzUxYjgwZDk1Zjc1OWVm
ZTJlZGQ5MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDU29ja2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oCkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBydGMg
ewogY2xhc3MgQXN5bmNQYWNrZXRTb2NrZXQ7CiBjbGFzcyBTb2NrZXRBZGRyZXNzOwogc3RydWN0
IFBhY2tldE9wdGlvbnM7Ci1zdHJ1Y3QgUGFja2V0VGltZTsKIHN0cnVjdCBTZW50UGFja2V0Owor
dHlwZWRlZiBpbnQ2NF90IFBhY2tldFRpbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1NvY2tldC5jcHAKaW5kZXggNzA1NDE1NzMzNzNkMjY5MjcxMjAyYjA2MWViOWMxNWM4
ZWM3NjU2YS4uZTJjNWRmNTU3YzQwMTE1ZGRmNDhmZDQwNzlhZmI5NDlhNmMyNTU2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1NvY2tldC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBMaWJXZWJSVENTb2NrZXQ6
OnNpZ25hbEFkZHJlc3NSZWFkeShjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MpCiB2
b2lkIExpYldlYlJUQ1NvY2tldDo6c2lnbmFsUmVhZFBhY2tldChjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgcnRjOjpTb2NrZXRBZGRyZXNzJiYgYWRkcmVzcywgaW50NjRfdCB0
aW1lc3RhbXApCiB7CiAgICAgbV9yZW1vdGVBZGRyZXNzID0gV1RGTW92ZShhZGRyZXNzKTsKLSAg
ICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIG1f
cmVtb3RlQWRkcmVzcywgcnRjOjpQYWNrZXRUaW1lKHRpbWVzdGFtcCwgMCkpOworICAgIFNpZ25h
bFJlYWRQYWNrZXQodGhpcywgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgbV9yZW1vdGVB
ZGRyZXNzLCB0aW1lc3RhbXApOwogfQogCiB2b2lkIExpYldlYlJUQ1NvY2tldDo6c2lnbmFsU2Vu
dFBhY2tldChpbnQgcnRjUGFja2V0SUQsIGludDY0X3Qgc2VuZFRpbWVNcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356469</attachid>
            <date>2018-12-03 22:20:46 -0800</date>
            <delta_ts>2018-12-07 08:55:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192316-20181203222033.patch</filename>
            <type>text/plain</type>
            <size>8346261</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA3NzUxNmFkOTY0MzU5ZTMyZTMwMGIxNTBmMzFkZjg4MWFlODUxYTY2Li4wOTAw
MmMzYTc4MmZkNzE4MTIzMTkyYjZkNThlZDllMjA1ZTA0YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMi0wMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB1cCB0
byAwZDAwN2Q3YzRmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTIzMTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGluZyB0byBsYXRlc3QgbGlid2VicnRjIHdpbGwgYWxsb3dzIGNoZXJyeS1waWNr
aW5nIGltcG9ydGFudCBidWcgZml4ZXMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAg
ICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcDogcmVmcmVzaGVkLgorICAgICAgICAq
IFNvdXJjZS93ZWJydGM6IHJlZnJlc2hlZC4KKyAgICAgICAgKiBXZWJLaXQvMDAwMS1saWJ3ZWJy
dGMtY2hhbmdlcy5wYXRjaDogUmVtb3ZlZC4KKyAgICAgICAgKiBsaWJ3ZWJydGMueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0wMSAgVGhpYmF1bHQgU2F1bmllciAgPHRzYXVu
aWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bV2ViUlRDXSBCdWlsZCBvcHVz
IGRlY29kZXIgc3VwcG9ydCBpbiBsaWJ3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZjlhYzNiNGVmZjUx
ODE4MzFlMGRiOTY0M2JjODQ1MzUwZDEwZDViLi5kMjliZTRkYzljNzdmMzkyNjQ4MzllNTBmN2Rl
NWRjZmQzMmE4OGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTItMDMgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBsaWJ3ZWJy
dGMgdXAgdG8gMGQwMDdkN2M0ZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkyMzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGluY2x1ZGUgYWNjb3JkaW5nIG5ldyBsaWJ3ZWJydGMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwOgorCiAyMDE4LTEyLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBIHNlbmRlciBjcmVhdGVkIHRocm91Z2ggYWRkVHJhbnNjZWl2ZXIgYW5kIHBvcHVs
YXRlZCB1c2luZyBhZGRUcmFjayBzaG91bGQgaGF2ZSBpdHMgc291cmNlIHNldApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBmMDIyMzI2M2NlOGZjZjk2Mzk0MjVmMWViYjY2YzJiYjdlZDA5Yjc3Li43Mzg1NDAyMjI2YzBh
MzI4M2U0ODkwMWU1NTQyZGNlYjBiNjFmN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDE4LTEyLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBV
cGRhdGUgbGlid2VicnRjIHVwIHRvIDBkMDA3ZDdjNGYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIGJhc2UgYWNjb3JkaW5nIG5ldyBs
aWJ3ZWJydGMgYmFja2VuZAorICAgICAgICBJbiBwYXJ0aWN1bGFyLCB1c2UgZGlyZWN0bHkgaW50
NjRfdCBmb3IgcGFja2V0IHRpbWUuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXQu
eGNjb25maWc6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldENsaWVudDo6c2ln
bmFsUmVhZFBhY2tldCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDU29ja2V0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXQ6OnNpZ25hbFJl
YWRQYWNrZXQpOgorCiAyMDE4LTEyLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBEZXZpY2Ugb3JpZW50YXRpb24gbWF5IGJlIHdyb25nIG9uIHBhZ2UgcmVs
b2FkIGFmdGVyIGNyYXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ01ha2VMaXN0cy50
eHQKaW5kZXggMjU0Nzg4NDdmZTc3MWFjOWY5MjUxMDc2ODM4ZWY2NmU1MzUzYzg4MC4uZmEyMWIy
NzljNzk1MjJhNjNiNDAwNGRlZGU2ZTI3MDZlYWM3ZWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9DTWFrZUxpc3RzLnR4dApAQCAtNDE0LDEyICs0MTQsOSBAQCBzZXQod2VicnRj
X1NPVVJDRVMKICAgICBTb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3N0YXRlLmNjCiAgICAgU291
cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb190cmFuc3BvcnRfaW1wbC5jYwogICAgIFNvdXJjZS93ZWJy
dGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlLmNjCi0gICAgU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFu
bmVsX3JlY2VpdmVfcHJveHkuY2MKICAgICBTb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2Vu
ZC5jYwotICAgIFNvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9zZW5kX3Byb3h5LmNjCiAgICAg
U291cmNlL3dlYnJ0Yy9hdWRpby9udWxsX2F1ZGlvX3BvbGxlci5jYwogICAgIFNvdXJjZS93ZWJy
dGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MKLSAgICBTb3VyY2Uvd2VicnRjL2F1ZGlvL3RpbWVf
aW50ZXJ2YWwuY2MKICAgICBTb3VyY2Uvd2VicnRjL2F1ZGlvL3RyYW5zcG9ydF9mZWVkYmFja19w
YWNrZXRfbG9zc190cmFja2VyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9hdWRpby91dGlsaXR5L2F1
ZGlvX2ZyYW1lX29wZXJhdGlvbnMuY2MKICAgICBTb3VyY2Uvd2VicnRjL2NhbGwvYXVkaW9fcmVj
ZWl2ZV9zdHJlYW0uY2MKQEAgLTU4Myw3ICs1ODAsNiBAQCBzZXQod2VicnRjX1NPVVJDRVMKICAg
ICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jlc2FtcGxlci5j
YwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hdWRpb19jb2Rp
bmdfbW9kdWxlLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20y
L2NhbGxfc3RhdGlzdGljcy5jYwotICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYWNtMi9jb2RlY19tYW5hZ2VyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9j
b25maWcuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5jYwpAQCAtNzc1LDcgKzc3
MSw2IEBAIHNldCh3ZWJydGNfU09VUkNFUwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvcHJlZW1wdGl2ZV9leHBhbmQuY2MKICAgICBTb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3JhbmRvbV92ZWN0b3IuY2MKICAgICBTb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3JlZF9wYXlsb2FkX3NwbGl0dGVyLmNjCi0g
ICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ydGNwLmNjCiAgICAg
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zdGF0aXN0aWNzX2NhbGN1
bGF0b3IuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N5
bmNfYnVmZmVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90aWNrX3RpbWVyLmNjCkBAIC04NTcsOSArODUyLDcgQEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAg
ICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9jb21wdXRlX2lu
dGVycG9sYXRlZF9nYWluX2N1cnZlLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9kb3duX3NhbXBsZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmNj
Ci0gICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9n
YWluX2NvbnRyb2xsZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2dhaW5fYXBwbGllci5jYwotICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmNjCiAgICAgU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5j
YwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRl
ci5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbm9p
c2VfbGV2ZWxfZXN0aW1hdG9yLmNjCkBAIC05MjgsMTkgKzkyMSwxNiBAQCBzZXQod2VicnRjX1NP
VVJDRVMKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Ji
ci9kYXRhX3RyYW5zZmVyX3RyYWNrZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2Jici9sb3NzX3JhdGVfZmlsdGVyLmNjCiAgICAgU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9iYnIvcnR0X3N0YXRzLmNjCi0gICAg
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dp
bmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRv
ci5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy9hbHJfZGV0ZWN0b3IuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3IuY2MKICAgICBTb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndl
LmNjCi0gICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL2dvb2dfY2NfZmFjdG9yeS5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5jYwogICAgIFNv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9tZWRpYW5f
c2xvcGVfZXN0aW1hdG9yLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1hdG9yLmNjCiAgICAgU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2NvbnRy
b2xsZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvdHJlbmRsaW5lX2VzdGltYXRvci5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcmVjZWl2ZV9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxl
ci5jYwotICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRw
L3BhY2VyX2NvbnRyb2xsZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjCiAgICAg
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvc2VuZF90aW1l
X2hpc3RvcnkuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYwpAQCAtMTA1MCw3ICsxMDQwLDYg
QEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvaTQyMC9pNDIwLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmNjCiAgICAgU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVy
cy5jYwotICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC92
cDhfdGVtcG9yYWxfbGF5ZXJzLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZGVjb2Rlci5jYwogICAgIFNvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfaW50ZXJmYWNlLmNjCiAgICAg
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3RlbXBvcmFsX2xh
eWVyc19jaGVja2VyLmNjCkBAIC0xMDg3LDcgKzEwNzYsNiBAQCBzZXQod2VicnRjX1NPVVJDRVMK
ICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvZGVmYXVsdF92
aWRlb19iaXRyYXRlX2FsbG9jYXRvci5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvdXRpbGl0eS9mcmFtZV9kcm9wcGVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L2l2Zl9maWxlX3dyaXRlci5jYwotICAgIFNvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5jYwogICAg
IFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxl
ci5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11
bGNhc3RfcmF0ZV9hbGxvY2F0b3IuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3V0aWxpdHkuY2MKQEAgLTExMzAsMTUgKzExMTgsMTIg
QEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAgICAgU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3Bv
cnRkZXNjcmlwdGlvbmZhY3RvcnkuY2MKICAgICBTb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5w
b3J0LmNjCiAgICAgU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJuc2VydmVyLmNjCi0gICAgU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS91ZHB0cmFuc3BvcnQuY2MKICAgICBTb3VyY2Uvd2VicnRjL3Ay
cC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9wMnAvY2xp
ZW50L3R1cm5wb3J0ZmFjdG9yeS5jYwogICAgIFNvdXJjZS93ZWJydGMvcDJwL3N0dW5wcm9iZXIv
c3R1bnByb2Jlci5jYwogICAgIFNvdXJjZS93ZWJydGMvcGMvYXVkaW90cmFjay5jYwotICAgIFNv
dXJjZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9wYy9jaGFu
bmVsLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5jYwotICAgIFNvdXJj
ZS93ZWJydGMvcGMvY3JlYXRlcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjCiAgICAgU291cmNlL3dl
YnJ0Yy9wYy9kYXRhY2hhbm5lbC5jYwogICAgIFNvdXJjZS93ZWJydGMvcGMvZHRsc3NydHB0cmFu
c3BvcnQuY2MKICAgICBTb3VyY2Uvd2VicnRjL3BjL2R0bWZzZW5kZXIuY2MKQEAgLTEyMDUsNyAr
MTE5MCw2IEBAIHNldCh3ZWJydGNfU09VUkNFUwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
ZXhwZXJpbWVudHMvcnR0X211bHRfZXhwZXJpbWVudC5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZmlsZS5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZV9wb3NpeC5jYwot
ICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtLmNjCiAgICAgU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxldXRpbHMuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2ZpcmV3YWxsc29ja2V0c2VydmVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9m
bGFncy5jYwpAQCAtMTIyOCw3ICsxMjEyLDYgQEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAgICAgU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXRoZWxwZXJzLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9uZXR3b3JrLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrbW9uaXRv
ci5jYwotICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvbm9vcC5jYwogICAgIFNvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbnVsbHNvY2tldHNlcnZlci5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbnVtZXJpY3MvZXhwX2ZpbHRlci5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVt
ZXJpY3MvaGlzdG9ncmFtX3BlcmNlbnRpbGVfY291bnRlci5jYwpAQCAtMTI0MCw4ICsxMjIzLDYg
QEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Ns
c2Vzc2lvbmNhY2hlLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Nsc3RyZWFt
YWRhcHRlci5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuY2MK
LSAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wdGlvbnNmaWxlLmNjCi0gICAgU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHMuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Bo
eXNpY2Fsc29ja2V0c2VydmVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9y
bV9maWxlLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuY2MK
QEAgLTEyODUsNyArMTI2Niw2IEBAIHNldCh3ZWJydGNfU09VUkNFUwogICAgIFNvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdGltZS90aW1lc3RhbXBfZXh0cmFwb2xhdG9yLmNjCiAgICAgU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS90aW1lc3RhbXBhbGlnbmVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS90aW1ldXRpbHMuY2MKLSAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3VuaXhmaWxlc3lz
dGVtLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNj
CiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93ZWFrX3B0ci5jYwogICAgIFNvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvemVyb19tZW1vcnkuY2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAppbmRleCBk
OTVkNTFlYTBjODE3YWQwNmFjZTgwZWEyZDAyNmM0ODNhZTdiMmFiLi42MjI4NmVkYzU1MmRhYWRk
MjlkMzE0MzczODUwNzE3NTU2NGRlZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCkBAIC0y
MTgsNyArMjE4LDYgQEAgX19aTks2d2VicnRjMThSdHBTZW5kZXJJbnRlcmZhY2UxOWluaXRfc2Vu
ZF9lbmNvZGluZ3NFdgogX19aTks2d2VicnRjMThSdHBTZW5kZXJJbnRlcmZhY2UxN0dldEZyYW1l
RW5jcnlwdG9yRXYKIF9fWk42d2VicnRjMThSdHBTZW5kZXJJbnRlcmZhY2UxN1NldEZyYW1lRW5j
cnlwdG9yRU4zcnRjMTNzY29wZWRfcmVmcHRySU5TXzIzRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2VF
RUUKIF9fWk42d2VicnRjMzBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UxN0NyZWF0ZVZp
ZGVvU291cmNlRU5TdDNfXzExMHVuaXF1ZV9wdHJJTjdjcmlja2V0MTNWaWRlb0NhcHR1cmVyRU5T
MV8xNGRlZmF1bHRfZGVsZXRlSVM0X0VFRUUKLV9fWk5LM3J0YzE0TmV0d29ya01hbmFnZXIxNkdl
dE1EbnNSZXNwb25kZXJFdgogX19aVFZONndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlRQogX19a
TjNydGMyM1JUQ0NlcnRpZmljYXRlR2VuZXJhdG9yQzFFUE5TXzZUaHJlYWRFUzJfCiBfX1pOM3J0
YzlLZXlQYXJhbXMzUlNBRWlpCkBAIC0yMzMsMyArMjMyLDkgQEAgX19aTjZ3ZWJydGMyNlBlZXJD
b25uZWN0aW9uRGVwZW5kZW5jaWVzQzFFUE5TXzIyUGVlckNvbm5lY3Rpb25PYnNlcnZlckUKIF9f
Wk42d2VicnRjMzBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UyMENyZWF0ZVBlZXJDb25u
ZWN0aW9uRVJLTlNfMjNQZWVyQ29ubmVjdGlvbkludGVyZmFjZTE2UlRDQ29uZmlndXJhdGlvbkVO
U3QzX18xMTB1bmlxdWVfcHRySU43Y3JpY2tldDEzUG9ydEFsbG9jYXRvckVOUzVfMTRkZWZhdWx0
X2RlbGV0ZUlTOF9FRUVFTlM2X0lOM3J0YzMyUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3JJbnRlcmZh
Y2VFTlM5X0lTRF9FRUVFUE5TXzIyUGVlckNvbm5lY3Rpb25PYnNlcnZlckUKIF9fWk42d2VicnRj
MjlTZXRTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjlPbkZhaWx1cmVFUktOU3QzX18xMTJiYXNp
Y19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5TMV85YWxsb2NhdG9ySWNFRUVFCiBfX1pO
NndlYnJ0YzMyQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI5T25GYWlsdXJlRVJLTlN0
M19fMTEyYmFzaWNfc3RyaW5nSWNOUzFfMTFjaGFyX3RyYWl0c0ljRUVOUzFfOWFsbG9jYXRvcklj
RUVFRQorX19aTjZ3ZWJydGMxM0NyeXB0b09wdGlvbnNDMUVSS1MwXworX19aTjZ3ZWJydGMxM0Ny
eXB0b09wdGlvbnNEMUV2CitfX1pOSzZ3ZWJydGMyMEF1ZGlvU291cmNlSW50ZXJmYWNlN29wdGlv
bnNFdgorX19aVFZONndlYnJ0YzIwQXVkaW9Tb3VyY2VJbnRlcmZhY2VFCitfX1pONndlYnJ0YzIz
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2UyMXBlZXJfY29ubmVjdGlvbl9zdGF0ZUV2CitfX1pOSzNy
dGMxNE5ldHdvcmtNYW5hZ2VyMTZHZXRNZG5zUmVzcG9uZGVyRXYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMu
aU9Tc2ltLmV4cAppbmRleCAxOWQwZmU2YjIwMWQ5NmNiZmQxYzFjMWQwODY3NDA5NzcxMDdhNmYw
Li5lMzEyNmJmMDZmZDk4NzBhYTlmM2Y5OWM0NzUzY2UxYzgwMTM4Yzg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3Np
bS5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1NzaW0uZXhwCkBAIC0yMTksNyArMjE5LDYgQEAgX19aTks2d2VicnRjMThSdHBT
ZW5kZXJJbnRlcmZhY2UxOWluaXRfc2VuZF9lbmNvZGluZ3NFdgogX19aTks2d2VicnRjMThSdHBT
ZW5kZXJJbnRlcmZhY2UxN0dldEZyYW1lRW5jcnlwdG9yRXYKIF9fWk42d2VicnRjMThSdHBTZW5k
ZXJJbnRlcmZhY2UxN1NldEZyYW1lRW5jcnlwdG9yRU4zcnRjMTNzY29wZWRfcmVmcHRySU5TXzIz
RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2VFRUUKIF9fWk42d2VicnRjMzBQZWVyQ29ubmVjdGlvbkZh
Y3RvcnlJbnRlcmZhY2UxN0NyZWF0ZVZpZGVvU291cmNlRU5TdDNfXzExMHVuaXF1ZV9wdHJJTjdj
cmlja2V0MTNWaWRlb0NhcHR1cmVyRU5TMV8xNGRlZmF1bHRfZGVsZXRlSVM0X0VFRUUKLV9fWk5L
M3J0YzE0TmV0d29ya01hbmFnZXIxNkdldE1EbnNSZXNwb25kZXJFdgogX19aVFZONndlYnJ0YzE4
UnRwU2VuZGVySW50ZXJmYWNlRQogX19aTjNydGMyM1JUQ0NlcnRpZmljYXRlR2VuZXJhdG9yQzFF
UE5TXzZUaHJlYWRFUzJfCiBfX1pOM3J0YzlLZXlQYXJhbXMzUlNBRWlpCkBAIC0yMzQsMyArMjMz
LDkgQEAgX19aTjZ3ZWJydGMyNlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzQzFFUE5TXzIyUGVl
ckNvbm5lY3Rpb25PYnNlcnZlckUKIF9fWk42d2VicnRjMzBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJ
bnRlcmZhY2UyMENyZWF0ZVBlZXJDb25uZWN0aW9uRVJLTlNfMjNQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZTE2UlRDQ29uZmlndXJhdGlvbkVOU3QzX18xMTB1bmlxdWVfcHRySU43Y3JpY2tldDEzUG9y
dEFsbG9jYXRvckVOUzVfMTRkZWZhdWx0X2RlbGV0ZUlTOF9FRUVFTlM2X0lOM3J0YzMyUlRDQ2Vy
dGlmaWNhdGVHZW5lcmF0b3JJbnRlcmZhY2VFTlM5X0lTRF9FRUVFUE5TXzIyUGVlckNvbm5lY3Rp
b25PYnNlcnZlckUKIF9fWk42d2VicnRjMjlTZXRTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjlP
bkZhaWx1cmVFUktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5T
MV85YWxsb2NhdG9ySWNFRUVFCiBfX1pONndlYnJ0YzMyQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9u
T2JzZXJ2ZXI5T25GYWlsdXJlRVJLTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzFfMTFjaGFyX3Ry
YWl0c0ljRUVOUzFfOWFsbG9jYXRvckljRUVFRQorX19aTjZ3ZWJydGMxM0NyeXB0b09wdGlvbnND
MUVSS1MwXworX19aTjZ3ZWJydGMxM0NyeXB0b09wdGlvbnNEMUV2CitfX1pOSzZ3ZWJydGMyMEF1
ZGlvU291cmNlSW50ZXJmYWNlN29wdGlvbnNFdgorX19aVFZONndlYnJ0YzIwQXVkaW9Tb3VyY2VJ
bnRlcmZhY2VFCitfX1pONndlYnJ0YzIzUGVlckNvbm5lY3Rpb25JbnRlcmZhY2UyMXBlZXJfY29u
bmVjdGlvbl9zdGF0ZUV2CitfX1pOSzNydGMxNE5ldHdvcmtNYW5hZ2VyMTZHZXRNZG5zUmVzcG9u
ZGVyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMubWFjLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAppbmRleCAxOWQwZmU2YjIwMWQ5NmNiZmQxYzFj
MWQwODY3NDA5NzcxMDdhNmYwLi5lMzEyNmJmMDZmZDk4NzBhYTlmM2Y5OWM0NzUzY2UxYzgwMTM4
Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLm1hYy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0Nv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCkBAIC0yMTksNyArMjE5LDYgQEAgX19aTks2
d2VicnRjMThSdHBTZW5kZXJJbnRlcmZhY2UxOWluaXRfc2VuZF9lbmNvZGluZ3NFdgogX19aTks2
d2VicnRjMThSdHBTZW5kZXJJbnRlcmZhY2UxN0dldEZyYW1lRW5jcnlwdG9yRXYKIF9fWk42d2Vi
cnRjMThSdHBTZW5kZXJJbnRlcmZhY2UxN1NldEZyYW1lRW5jcnlwdG9yRU4zcnRjMTNzY29wZWRf
cmVmcHRySU5TXzIzRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2VFRUUKIF9fWk42d2VicnRjMzBQZWVy
Q29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UxN0NyZWF0ZVZpZGVvU291cmNlRU5TdDNfXzExMHVu
aXF1ZV9wdHJJTjdjcmlja2V0MTNWaWRlb0NhcHR1cmVyRU5TMV8xNGRlZmF1bHRfZGVsZXRlSVM0
X0VFRUUKLV9fWk5LM3J0YzE0TmV0d29ya01hbmFnZXIxNkdldE1EbnNSZXNwb25kZXJFdgogX19a
VFZONndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlRQogX19aTjNydGMyM1JUQ0NlcnRpZmljYXRl
R2VuZXJhdG9yQzFFUE5TXzZUaHJlYWRFUzJfCiBfX1pOM3J0YzlLZXlQYXJhbXMzUlNBRWlpCkBA
IC0yMzQsMyArMjMzLDkgQEAgX19aTjZ3ZWJydGMyNlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVz
QzFFUE5TXzIyUGVlckNvbm5lY3Rpb25PYnNlcnZlckUKIF9fWk42d2VicnRjMzBQZWVyQ29ubmVj
dGlvbkZhY3RvcnlJbnRlcmZhY2UyMENyZWF0ZVBlZXJDb25uZWN0aW9uRVJLTlNfMjNQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTE2UlRDQ29uZmlndXJhdGlvbkVOU3QzX18xMTB1bmlxdWVfcHRySU43
Y3JpY2tldDEzUG9ydEFsbG9jYXRvckVOUzVfMTRkZWZhdWx0X2RlbGV0ZUlTOF9FRUVFTlM2X0lO
M3J0YzMyUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3JJbnRlcmZhY2VFTlM5X0lTRF9FRUVFUE5TXzIy
UGVlckNvbm5lY3Rpb25PYnNlcnZlckUKIF9fWk42d2VicnRjMjlTZXRTZXNzaW9uRGVzY3JpcHRp
b25PYnNlcnZlcjlPbkZhaWx1cmVFUktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMV8xMWNoYXJf
dHJhaXRzSWNFRU5TMV85YWxsb2NhdG9ySWNFRUVFCiBfX1pONndlYnJ0YzMyQ3JlYXRlU2Vzc2lv
bkRlc2NyaXB0aW9uT2JzZXJ2ZXI5T25GYWlsdXJlRVJLTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNO
UzFfMTFjaGFyX3RyYWl0c0ljRUVOUzFfOWFsbG9jYXRvckljRUVFRQorX19aTjZ3ZWJydGMxM0Ny
eXB0b09wdGlvbnNDMUVSS1MwXworX19aTjZ3ZWJydGMxM0NyeXB0b09wdGlvbnNEMUV2CitfX1pO
SzZ3ZWJydGMyMEF1ZGlvU291cmNlSW50ZXJmYWNlN29wdGlvbnNFdgorX19aVFZONndlYnJ0YzIw
QXVkaW9Tb3VyY2VJbnRlcmZhY2VFCitfX1pONndlYnJ0YzIzUGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2UyMXBlZXJfY29ubmVjdGlvbl9zdGF0ZUV2CitfX1pOSzNydGMxNE5ldHdvcmtNYW5hZ2VyMTZH
ZXRNZG5zUmVzcG9uZGVyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLnhjY29uZmlnCmluZGV4IDJkY2YwMzkw
NzlmYTE5NDI3ZDA5ZDgwODgyYjhhN2MzY2ExNWQ5ODguLjU3NTk5ZmNkZmM5NDRlMWNmMTY4NmZl
NjM1ZDE0ODk3YTJkM2IwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy54Y2NvbmZpZwpAQCAtMzIsOCAr
MzIsOCBAQCBHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TW3Nkaz1tYWNvc3gqXSA9ICQoaW5o
ZXJpdGVkKSBXRUJSVENfVVNFX1ZUQl9IQVJEV0FSRQogR0NDX1BSRVBST0NFU1NPUl9ERUZJTklU
SU9OU1tzZGs9aXBob25lb3MqXSA9ICQoaW5oZXJpdGVkKSBXRUJSVENfSU9TOwogR0NDX1BSRVBS
T0NFU1NPUl9ERUZJTklUSU9OU1tzZGs9aXBob25lc2ltdWxhdG9yKl0gPSAkKGluaGVyaXRlZCkg
V0VCUlRDX0lPUzsKIAotRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNbc2RrPWlwaG9uZW9zKl0g
PSAqX3NzZS5jYyAqX3NzZTIuY2MgbWFjdXRpbHMuY2MgbWFjd2luZG93cGlja2VyLmNjIGF1ZGlv
X2RldmljZV9tYWMuY2MgYXVkaW9fbWl4ZXJfbWFuYWdlcl9tYWMuY2M7Ci1FWENMVURFRF9TT1VS
Q0VfRklMRV9OQU1FU1tzZGs9aXBob25lc2ltdWxhdG9yKl0gPSBtYWN1dGlscy5jYyBtYWN3aW5k
b3dwaWNrZXIuY2MgYXVkaW9fZGV2aWNlX21hYy5jYyBhdWRpb19taXhlcl9tYW5hZ2VyX21hYy5j
YzsKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTW3Nkaz1pcGhvbmVvcypdID0gKl9zc2UuY2Mg
Kl9zc2UyLmNjIG1hY3V0aWxzLmNjIG1hY3dpbmRvd3BpY2tlci5jYyBhdWRpb19kZXZpY2VfbWFj
LmNjIGF1ZGlvX21peGVyX21hbmFnZXJfbWFjLmNjIGxvZ2dpbmdfbWFjLm1tOworRVhDTFVERURf
U09VUkNFX0ZJTEVfTkFNRVNbc2RrPWlwaG9uZXNpbXVsYXRvcipdID0gbWFjdXRpbHMuY2MgbWFj
d2luZG93cGlja2VyLmNjIGF1ZGlvX2RldmljZV9tYWMuY2MgYXVkaW9fbWl4ZXJfbWFuYWdlcl9t
YWMuY2MgbG9nZ2luZ19tYWMubW07CiBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU1tzZGs9bWFj
b3N4Kl0gPSB2b2ljZV9wcm9jZXNzaW5nX2F1ZGlvX3VuaXQubW07CiAKIE9USEVSX0xERkxBR1Nb
c2RrPW1hY29zeDEwLjEzKl0gPSAkKGluaGVyaXRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQWJz
ZWlsSGVscGVycy5jbWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9BYnNlaWxIZWxwZXJzLmNtYWtlCmluZGV4IGU0ZWFm
ZTQ5ZTQ3OTA2NTE1ZTQ0OGEyZGVmNTlmNzYyOWIyYmEzOTMuLjBjOTM0MTc0NzUxMmNlYjYxNzM1
NDFjN2Y0YTI2NjdhMTViNTc3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZS9BYnNlaWxIZWxwZXJzLmNt
YWtlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9DTWFrZS9BYnNlaWxIZWxwZXJzLmNtYWtlCkBAIC0xMjMsNyArMTIzLDcgQEAg
ZW5kZnVuY3Rpb24oKQogIwogIyBhbGwgdGVzdHMgd2lsbCBiZSByZWdpc3RlciBmb3IgZXhlY3V0
aW9uIHdpdGggYWRkX3Rlc3QoKQogIwotIyB0ZXN0IGNvbXBpbGF0aW9uIGFuZCBleGVjdXRpb24g
aXMgZGlzYWJsZSB3aGVuIEJVSUxEX1RFU1RJTkc9T0ZGCisjIHRlc3QgY29tcGlsYXRpb24gYW5k
IGV4ZWN1dGlvbiBpcyBkaXNhYmxlIHdoZW4gQUJTTF9SVU5fVEVTVFM9T0ZGCiAjCiBmdW5jdGlv
bihhYnNsX3Rlc3QpCiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBmdW5jdGlvbihhYnNsX3Rlc3QpCiAg
ICkKIAogCi0gIGlmKEJVSUxEX1RFU1RJTkcpCisgIGlmKEFCU0xfUlVOX1RFU1RTKQogCiAgICAg
c2V0KF9OQU1FICR7QUJTTF9URVNUX1RBUkdFVH0pCiAgICAgc3RyaW5nKFRPVVBQRVIgJHtfTkFN
RX0gX1VQUEVSX05BTUUpCkBAIC0xNTMsNyArMTUzLDcgQEAgZnVuY3Rpb24oYWJzbF90ZXN0KQog
ICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtfTkFNRX1fYmluIFBST1BFUlRZIEZPTERFUiAke0FC
U0xfSURFX0ZPTERFUn0pCiAKICAgICBhZGRfdGVzdCgke19OQU1FfSAke19OQU1FfV9iaW4pCi0g
IGVuZGlmKEJVSUxEX1RFU1RJTkcpCisgIGVuZGlmKEFCU0xfUlVOX1RFU1RTKQogCiBlbmRmdW5j
dGlvbigpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZUxpc3RzLnR4dApp
bmRleCA4OWEzMzg2ZjdlMjU4ZWZjOTczOWIzNTE3NTY2YzU5MWYwMmFkZTdlLi45YTdlMTAzMWIy
MzUxMTA0ZTNlYzgzMjExNGE4ZDZiNzVkNTUwNGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL0NNYWtlTGlzdHMudHh0CkBAIC0zMiw3ICszMiw3IEBAIGlmIChNU1ZDKQogICAj
IC93ZDQyNDQgIGNvbnZlcnNpb24gZnJvbSAndHlwZTEnIHRvICd0eXBlMicKICAgIyAvd2Q0MjY3
ICBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUyJwogICAjIC93ZDQ4MDAgIGZvcmNl
IHZhbHVlIHRvIGJvb2wgJ3RydWUnIG9yICdmYWxzZScgKHBlcmZvcm1hbmNlIHdhcm5pbmcpCi0g
IGFkZF9jb21waWxlX29wdGlvbnMoL1czIC9XWCAvd2Q0MDA1IC93ZDQwNjggL3dkNDI0NCAvd2Q0
MjY3IC93ZDQ4MDApCisgIGFkZF9jb21waWxlX29wdGlvbnMoL1czIC93ZDQwMDUgL3dkNDA2OCAv
d2Q0MjQ0IC93ZDQyNjcgL3dkNDgwMCkKICAgYWRkX2RlZmluaXRpb25zKC9ETk9NSU5NQVggL0RX
SU4zMl9MRUFOX0FORF9NRUFOPTEgL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRF9TQ0xfU0VD
VVJFX05PX1dBUk5JTkdTKQogZWxzZSgpCiAgIHNldChBQlNMX1NURF9DWFhfRkxBRyAiLXN0ZD1j
KysxMSIgQ0FDSEUgU1RSSU5HICJjKysgc3RkIGZsYWcgKGRlZmF1bHQ6IGMrKzExKSIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUwppbmRleCBjZWNhNGE4YmEyY2IxNmJkOGQxZDc4MzNi
ZWRmNzhlNmYwOWM5M2ExLi4zOGViYWYyMjk1ZDFhNjE2MDU2NjUwNDAzYWJiODlhMDkyODBkZDE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvT1dORVJTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9PV05FUlMKQEAgLTEsMiArMSw0IEBACitkYW5p
bGNoYXBAY2hyb21pdW0ub3JnCitrd2liZXJnQGNocm9taXVtLm9yZwogbWJvbmFkZWlAY2hyb21p
dW0ub3JnCiBwaG9nbHVuZEBjaHJvbWl1bS5vcmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9SRUFETUUuY2hyb21p
dW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvUkVBRE1FLmNocm9taXVtCmluZGV4IDkxZDZkMzgxYTQ3NzA0NDUwYjU5OWEwMDlmMDQ5
YzcwN2IxYTkyMzIuLjYwMjZhMmY0ZTIwNjEzZWRiNTNlMTY4YmZiNDM4ZjIwZmU0YzFmZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9SRUFETUUuY2hyb21pdW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1JFQURNRS5jaHJvbWl1bQpAQCAtNCw3
ICs0LDcgQEAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vYWJzZWlsL2Fic2VpbC1jcHAKIExpY2Vu
c2U6IEFwYWNoZSAyLjAKIExpY2Vuc2UgRmlsZTogTElDRU5TRQogVmVyc2lvbjogMAotUmV2aXNp
b246IGJlYTg1YjUyNzMzMDIyMjk0ZWVmMTA4YTJlNDJkNzdiNjE2ZGRjYTIKK1JldmlzaW9uOiBm
YjQ2MjIyNGMwNTg0ODc3NjNmMjYzYjc5OTVkNzBlZmQwMjQyYzE3CiBTZWN1cml0eSBDcml0aWNh
bDogeWVzCiAKIERlc2NyaXB0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1dPUktTUEFDRSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9XT1JLU1BB
Q0UKaW5kZXggZTRhOTExOTc4ZGM2ODI1Njk1YTI4NDEzYmRmYTIzNTVhY2NkYTI3ZC4uNzJlZjEz
OTgwYzI5MjYzODMyY2JiMjJmOThmNzlhZTg1OTgyMWZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1dPUktTUEFD
RQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvV09SS1NQQUNFCkBAIC01LDExICs1LDExIEBAIGxvYWQoIkBiYXplbF90b29scy8v
dG9vbHMvYnVpbGRfZGVmcy9yZXBvOmh0dHAuYnpsIiwgImh0dHBfYXJjaGl2ZSIpCiBodHRwX2Fy
Y2hpdmUoCiAgIG5hbWUgPSAiYmF6ZWxfdG9vbGNoYWlucyIsCiAgIHVybHMgPSBbCi0gICAgImh0
dHBzOi8vbWlycm9yLmJhemVsLmJ1aWxkL2dpdGh1Yi5jb20vYmF6ZWxidWlsZC9iYXplbC10b29s
Y2hhaW5zL2FyY2hpdmUvMjg3YjY0ZTBhMjExZmI3YzIzYjc0Njk1ZjhkNWY1MjA1YjYxZjRlYi50
YXIuZ3oiLAotICAgICJodHRwczovL2dpdGh1Yi5jb20vYmF6ZWxidWlsZC9iYXplbC10b29sY2hh
aW5zL2FyY2hpdmUvMjg3YjY0ZTBhMjExZmI3YzIzYjc0Njk1ZjhkNWY1MjA1YjYxZjRlYi50YXIu
Z3oiLAorICAgICJodHRwczovL21pcnJvci5iYXplbC5idWlsZC9naXRodWIuY29tL2JhemVsYnVp
bGQvYmF6ZWwtdG9vbGNoYWlucy9hcmNoaXZlL2JjMDliOTk1YzEzN2RmMDQyYmI4MGEzOTViNzNk
N2NlNmYyNmFmYmUudGFyLmd6IiwKKyAgICAiaHR0cHM6Ly9naXRodWIuY29tL2JhemVsYnVpbGQv
YmF6ZWwtdG9vbGNoYWlucy9hcmNoaXZlL2JjMDliOTk1YzEzN2RmMDQyYmI4MGEzOTViNzNkN2Nl
NmYyNmFmYmUudGFyLmd6IiwKICAgXSwKLSAgc3RyaXBfcHJlZml4ID0gImJhemVsLXRvb2xjaGFp
bnMtMjg3YjY0ZTBhMjExZmI3YzIzYjc0Njk1ZjhkNWY1MjA1YjYxZjRlYiIsCi0gIHNoYTI1NiA9
ICJhY2E4YWM2YWZkNzc0NTAyN2VlNGE0MzAzMmI1MWE3MjVhNjFhNzVhMzBmMDJjYzU4NjgxZWU4
N2U0ZGNkZjRiIiwKKyAgc3RyaXBfcHJlZml4ID0gImJhemVsLXRvb2xjaGFpbnMtYmMwOWI5OTVj
MTM3ZGYwNDJiYjgwYTM5NWI3M2Q3Y2U2ZjI2YWZiZSIsCisgIHNoYTI1NiA9ICI0MzI5NjYzZmU2
YzUyMzQyNWFkNGQzYzk4OWE4YWMwMjZiMDRlMWFjZWRlY2ViNTZhYTRiMTkwZmE3ZjM5NzNjIiwK
ICkKIAogIyBHb29nbGVUZXN0L0dvb2dsZU1vY2sgZnJhbWV3b3JrLiBVc2VkIGJ5IG1vc3QgdW5p
dC10ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvQ01ha2VM
aXN0cy50eHQKaW5kZXggNjg5ZjY0ZTI1OGJhYWM5OTIwMWNmYTc4OTRkYmNiODA1NDI0MDhkZi4u
MWQwOWIxOTM1ZDg0NzM1ZDZkYzkwNzQyYTY0NWIyODg1MGFlZWM3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvQ01ha2VMaXN0cy50eHQKQEAgLTIwLDYgKzIw
LDcgQEAgYWRkX3N1YmRpcmVjdG9yeShiYXNlKQogYWRkX3N1YmRpcmVjdG9yeShhbGdvcml0aG0p
CiBhZGRfc3ViZGlyZWN0b3J5KGNvbnRhaW5lcikKIGFkZF9zdWJkaXJlY3RvcnkoZGVidWdnaW5n
KQorYWRkX3N1YmRpcmVjdG9yeShoYXNoKQogYWRkX3N1YmRpcmVjdG9yeShtZW1vcnkpCiBhZGRf
c3ViZGlyZWN0b3J5KG1ldGEpCiBhZGRfc3ViZGlyZWN0b3J5KG51bWVyaWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVy
LmgKaW5kZXggNmFmOGMwOTc5OWU1NmYyMjNhZDNlZWNhMjQ2ZDgzYWIwNzA2M2ExOS4uNTNhYjE1
Njg2YzZlMTBlNjIxN2VkNDdiMGI0ZDdhMzMzNzU2ODA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxn
b3JpdGhtL2NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWluZXIuaApAQCAt
NDk0LDcgKzQ5NCw3IEBAIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBjX2NvcHlfYmFja3dhcmQoY29u
c3QgQyYgc3JjLAogLy8gQ29udGFpbmVyLWJhc2VkIHZlcnNpb24gb2YgdGhlIDxhbGdvcml0aG0+
IGBzdGQ6Om1vdmUoKWAgZnVuY3Rpb24gdG8gbW92ZQogLy8gYSBjb250YWluZXIncyBlbGVtZW50
cyBpbnRvIGFuIGl0ZXJhdG9yLgogdGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE91dHB1
dEl0ZXJhdG9yPgotT3V0cHV0SXRlcmF0b3IgY19tb3ZlKEMmIHNyYywgT3V0cHV0SXRlcmF0b3Ig
ZGVzdCkgeworT3V0cHV0SXRlcmF0b3IgY19tb3ZlKEMmJiBzcmMsIE91dHB1dEl0ZXJhdG9yIGRl
c3QpIHsKICAgcmV0dXJuIHN0ZDo6bW92ZShjb250YWluZXJfYWxnb3JpdGhtX2ludGVybmFsOjpj
X2JlZ2luKHNyYyksCiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX2FsZ29yaXRobV9pbnRl
cm5hbDo6Y19lbmQoc3JjKSwgZGVzdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0v
Y29udGFpbmVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyX3Rlc3QuY2MKaW5k
ZXggZGU2NmYxNDY4MGYxYjhmMjJkMmU5NjVkNDQxYTA1ZWZjNThhNmMwMy4uMTUwMmIxN2Y4NjM2
YjBkNWVkZWM5ZmE0NTM1YzZlOGI4MGQzNTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGht
L2NvbnRhaW5lcl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWluZXJfdGVzdC5j
YwpAQCAtNjM2LDYgKzYzNiwyMSBAQCBURVNUKE11dGF0aW5nVGVzdCwgTW92ZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludGVlKDUpKSk7CiB9CiAKK1RFU1QoTXV0YXRp
bmdUZXN0LCBNb3ZlV2l0aFJ2YWx1ZSkgeworICBhdXRvIE1ha2VSVmFsdWVTcmMgPSBbXSB7Cisg
ICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGludD4+IHNyYzsKKyAgICBzcmMuZW1wbGFj
ZV9iYWNrKGFic2w6Om1ha2VfdW5pcXVlPGludD4oMSkpOworICAgIHNyYy5lbXBsYWNlX2JhY2so
YWJzbDo6bWFrZV91bmlxdWU8aW50PigyKSk7CisgICAgc3JjLmVtcGxhY2VfYmFjayhhYnNsOjpt
YWtlX3VuaXF1ZTxpbnQ+KDMpKTsKKyAgICByZXR1cm4gc3JjOworICB9OworCisgIHN0ZDo6dmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBkZXN0ID0gTWFrZVJWYWx1ZVNyYygpOworICBhYnNs
OjpjX21vdmUoTWFrZVJWYWx1ZVNyYygpLCBzdGQ6OmJhY2tfaW5zZXJ0ZXIoZGVzdCkpOworICBF
WFBFQ1RfVEhBVChkZXN0LCBFbGVtZW50c0FyZShQb2ludGVlKDEpLCBQb2ludGVlKDIpLCBQb2lu
dGVlKDMpLCBQb2ludGVlKDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2lu
dGVlKDIpLCBQb2ludGVlKDMpKSk7Cit9CisKIFRFU1QoTXV0YXRpbmdUZXN0LCBTd2FwUmFuZ2Vz
KSB7CiAgIHN0ZDo6dmVjdG9yPGludD4gb2RkcyA9IHsyLCA0LCA2fTsKICAgc3RkOjp2ZWN0b3I8
aW50PiBldmVucyA9IHsxLCAzLCA1fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuYmF6
ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL0JVSUxELmJhemVsCmluZGV4IDA2ZDA5MmViZGZhODNhYmY5MjRiYjNl
ZTAzMjY5NDI1OWIyZTRiMmQuLmY3ZDgxMDEzNWI4Y2NjNWZiMDVkZTRhYjcyNWQ2YzFjZDhkZjNh
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9C
VUlMRC5iYXplbApAQCAtMTksNiArMTksNyBAQCBsb2FkKAogICAgICJBQlNMX0RFRkFVTFRfQ09Q
VFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAogICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBRyIs
CisgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTIiwKICkKIAogcGFja2FnZShkZWZh
dWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKQEAgLTI5LDYgKzMwLDcg
QEAgY2NfbGlicmFyeSgKICAgICBuYW1lID0gInNwaW5sb2NrX3dhaXQiLAogICAgIHNyY3MgPSBb
CiAgICAgICAgICJpbnRlcm5hbC9zcGlubG9ja19ha2Fyb3MuaW5jIiwKKyAgICAgICAgImludGVy
bmFsL3NwaW5sb2NrX2xpbnV4LmluYyIsCiAgICAgICAgICJpbnRlcm5hbC9zcGlubG9ja19wb3Np
eC5pbmMiLAogICAgICAgICAiaW50ZXJuYWwvc3BpbmxvY2tfd2FpdC5jYyIsCiAgICAgICAgICJp
bnRlcm5hbC9zcGlubG9ja193aW4zMi5pbmMiLApAQCAtMTc5LDYgKzE4MSw3IEBAIGNjX2xpYnJh
cnkoCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvdGhyb3dfZGVsZWdhdGUuY2MiXSwKICAgICBoZHJz
ID0gWyJpbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFV
TFRfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhD
RVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIHZpc2liaWxpdHkgPSBbCiAgICAgICAgICIvL2Fi
c2w6X19zdWJwYWNrYWdlc19fIiwKICAgICBdLApAQCAtMTkzLDYgKzE5Niw3IEBAIGNjX3Rlc3Qo
CiAgICAgbmFtZSA9ICJ0aHJvd19kZWxlZ2F0ZV90ZXN0IiwKICAgICBzcmNzID0gWyJ0aHJvd19k
ZWxlZ2F0ZV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VY
Q0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktP
UFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6dGhyb3dfZGVsZWdhdGUiLAogICAgICAgICAi
QGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLApAQCAtMjI1LDYgKzIyOSw3IEBA
IGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9IFsiaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0
aW5nLmNjIl0sCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5n
LmgiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFH
LAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIjpiYXNlIiwKICAgICAgICAgIjpjb25maWciLApAQCAtMjQxLDYgKzI0
Niw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVz
dCIsCiAgICAgc3JjcyA9IFsiZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nX3Rlc3QuY2MiXSwKICAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxp
bmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAg
ICAgICAgIjpleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmciLAogICAgICAgICAiLy9hYnNsL21lbW9y
eSIsCkBAIC0yOTksNiArMzA1LDcgQEAgY2NfdGVzdCgKICAgICBzaXplID0gIm1lZGl1bSIsCiAg
ICAgc3JjcyA9IFsic3BpbmxvY2tfdGVzdF9jb21tb24uY2MiXSwKICAgICBjb3B0cyA9IEFCU0xf
VEVTVF9DT1BUUywKKyAgICB0YWdzID0gWyJub190ZXN0X3dhc20iXSwKICAgICBkZXBzID0gWwog
ICAgICAgICAiOmJhc2UiLAogICAgICAgICAiOmNvcmVfaGVhZGVycyIsCkBAIC0zMzcsNiArMzQ0
LDkgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNvbmZpZ190ZXN0IiwKICAgICBzcmNzID0gWyJj
b25maWdfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIHRhZ3Mg
PSBbCisgICAgICAgICJub190ZXN0X3dhc20iLAorICAgIF0sCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjpjb25maWciLAogICAgICAgICAiLy9hYnNsL3N5bmNocm9uaXphdGlvbjp0aHJlYWRfcG9v
bCIsCkBAIC0zNDgsNiArMzU4LDkgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImNhbGxfb25jZV90
ZXN0IiwKICAgICBzcmNzID0gWyJjYWxsX29uY2VfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJT
TF9URVNUX0NPUFRTLAorICAgIHRhZ3MgPSBbCisgICAgICAgICJub190ZXN0X3dhc20iLAorICAg
IF0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpiYXNlIiwKICAgICAgICAgIjpjb3JlX2hlYWRl
cnMiLApAQCAtNDAxLDYgKzQxNCw5IEBAIGNjX3Rlc3QoCiAgICAgICAgICIvL2Fic2w6d2luZG93
cyI6IFtdLAogICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi1wdGhyZWFkIl0sCiAg
ICAgfSksCisgICAgdGFncyA9IFsKKyAgICAgICAgIm5vX3Rlc3Rfd2FzbSIsCisgICAgXSwKICAg
ICBkZXBzID0gWwogICAgICAgICAiOmJhc2UiLAogICAgICAgICAiOmNvcmVfaGVhZGVycyIsCkBA
IC00MjEsMyArNDM3LDIzIEBAIGNjX3Rlc3QoCiAgICAgICAgICJAY29tX2dpdGh1Yl9nb29nbGVf
YmVuY2htYXJrLy86YmVuY2htYXJrX21haW4iLAogICAgIF0sCiApCisKK2NjX2xpYnJhcnkoCisg
ICAgbmFtZSA9ICJiaXRzIiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9iaXRzLmgiXSwKKyAgICB2
aXNpYmlsaXR5ID0gWworICAgICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNfXyIsCisgICAgXSwK
KyAgICBkZXBzID0gWyI6Y29yZV9oZWFkZXJzIl0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9
ICJiaXRzX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImludGVybmFs
L2JpdHNfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMg
PSBbCisgICAgICAgICI6Yml0cyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86
Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuZ24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL0JVSUxELmduCmluZGV4IGE3MTQ2NTY0NjIyOTBiY2Q0MGNkNDk5OWNhMWZl
ZjIwYzg2MzdlN2QuLjZjNTQwZjNiMmJiMjljYTk2ZTQ1Njk2YTFjYjMzNWNjYjRhMGIxYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9CVUlMRC5nbgpA
QCAtMjMsNiArMjMsNyBAQCBzb3VyY2Vfc2V0KCJzcGlubG9ja193YWl0IikgewogICBwdWJsaWNf
Y29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmln
IiBdCiAgIHNvdXJjZXMgPSBbCiAgICAgImludGVybmFsL3NwaW5sb2NrX2FrYXJvcy5pbmMiLAor
ICAgICJpbnRlcm5hbC9zcGlubG9ja19saW51eC5pbmMiLAogICAgICJpbnRlcm5hbC9zcGlubG9j
a19wb3NpeC5pbmMiLAogICAgICJpbnRlcm5hbC9zcGlubG9ja193YWl0LmNjIiwKICAgICAiaW50
ZXJuYWwvc3BpbmxvY2tfd2luMzIuaW5jIiwKQEAgLTcxLDYgKzcyLDcgQEAgc291cmNlX3NldCgi
ZHluYW1pY19hbm5vdGF0aW9ucyIpIHsKICAgcHVibGljID0gWwogICAgICJkeW5hbWljX2Fubm90
YXRpb25zLmgiLAogICBdCisKICAgIyBBYnNlaWwncyBkeW5hbWljIGFubm90YXRpb25zIGFyZSBv
bmx5IHZpc2libGUgaW5zaWRlIEFic2VpbCBiZWNhdXNlCiAgICMgdGhlaXIgdXNhZ2UgaXMgZGVw
cmVjYXRlZCBpbiBDaHJvbWl1bSAoc2VlIFJFQURNRS5jaHJvbWl1bSBmb3IgbW9yZSBpbmZvKS4K
ICAgdmlzaWJpbGl0eSA9IFtdCkBAIC0yOTYsMyArMjk4LDE5IEBAIHNvdXJjZV9zZXQoImVuZGlh
biIpIHsKICAgICAiOmNvcmVfaGVhZGVycyIsCiAgIF0KIH0KKworc291cmNlX3NldCgiYml0cyIp
IHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2Rl
IiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJv
bWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9j
ZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvYml0cy5oIiwKKyAg
XQorICBkZXBzID0gWworICAgICI6Y29yZV9oZWFkZXJzIiwKKyAgXQorICB2aXNpYmlsaXR5ID0g
W10KKyAgdmlzaWJpbGl0eSArPSBbICIuLi8qIiBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwMWQyYWYw
ODVmNThlMTVmM2UyNjM5YzUxNmNmNjZkNDZkMTIxYmVkLi4wNGE2ZWIzMTk1NWI2MDIyMDJhZDU5
N2JhMmIzNGVjMDRiYzdlNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvQ01ha2VMaXN0cy50eHQKQEAgLTMxLDYgKzMxLDcgQEAgbGlzdChB
UFBFTkQgQkFTRV9QVUJMSUNfSEVBREVSUwogCiBsaXN0KEFQUEVORCBCQVNFX0lOVEVSTkFMX0hF
QURFUlMKICAgImludGVybmFsL2F0b21pY19ob29rLmgiCisgICJpbnRlcm5hbC9iaXRzLmgiCiAg
ICJpbnRlcm5hbC9jeWNsZWNsb2NrLmgiCiAgICJpbnRlcm5hbC9kaXJlY3RfbW1hcC5oIgogICAi
aW50ZXJuYWwvZW5kaWFuLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvYXR0cmlidXRlcy5oCmluZGV4IGIxODgzYjZkNzUyY2MxNWNkNzZlMDc5MjQw
ZDA4NTdjZTE4ZThkMGEuLmU4NTAwMjI0NDQzYmNlNWJmNjViYTVjZTFmY2QwMGQ4YzcwNDRjOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvYXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvYXR0
cmlidXRlcy5oCkBAIC0xMDAsNyArMTAwLDcgQEAKIC8vIEFCU0xfUFJJTlRGX0FUVFJJQlVURQog
Ly8gQUJTTF9TQ0FORl9BVFRSSUJVVEUKIC8vCi0vLyBUZWxscyB0aGUgY29tcGlsZXIgdG8gcGVy
Zm9ybSBgcHJpbnRmYCBmb3JtYXQgc3RkOjpzdHJpbmcgY2hlY2tpbmcgaWYgdGhlCisvLyBUZWxs
cyB0aGUgY29tcGlsZXIgdG8gcGVyZm9ybSBgcHJpbnRmYCBmb3JtYXQgc3RyaW5nIGNoZWNraW5n
IGlmIHRoZQogLy8gY29tcGlsZXIgc3VwcG9ydHMgaXQ7IHNlZSB0aGUgJ2Zvcm1hdCcgYXR0cmli
dXRlIGluCiAvLyA8aHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjLTQuNy4wL2djYy9G
dW5jdGlvbi1BdHRyaWJ1dGVzLmh0bWw+LgogLy8KQEAgLTQ5NCwxNCArNDk0LDI3IEBACiAjZGVm
aW5lIEFCU0xfWFJBWV9MT0dfQVJHUyhOKQogI2VuZGlmCiAKKy8vIEFCU0xfQVRUUklCVVRFX1JF
SU5JVElBTElaRVMKKy8vCisvLyBJbmRpY2F0ZXMgdGhhdCBhIG1lbWJlciBmdW5jdGlvbiByZWlu
aXRpYWxpemVzIHRoZSBlbnRpcmUgb2JqZWN0IHRvIGEga25vd24KKy8vIHN0YXRlLCBpbmRlcGVu
ZGVudCBvZiB0aGUgcHJldmlvdXMgc3RhdGUgb2YgdGhlIG9iamVjdC4KKy8vCisvLyBUaGUgY2xh
bmctdGlkeSBjaGVjayBidWdwcm9uZS11c2UtYWZ0ZXItbW92ZSBhbGxvd3MgbWVtYmVyIGZ1bmN0
aW9ucyBtYXJrZWQKKy8vIHdpdGggdGhpcyBhdHRyaWJ1dGUgdG8gYmUgY2FsbGVkIG9uIG9iamVj
dHMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgZnJvbTsKKy8vIHdpdGhvdXQgdGhlIGF0dHJpYnV0ZSwg
dGhpcyB3b3VsZCByZXN1bHQgaW4gYSB1c2UtYWZ0ZXItbW92ZSB3YXJuaW5nLgorI2lmIEFCU0xf
SEFWRV9DUFBfQVRUUklCVVRFKGNsYW5nOjpyZWluaXRpYWxpemVzKQorI2RlZmluZSBBQlNMX0FU
VFJJQlVURV9SRUlOSVRJQUxJWkVTIFtbY2xhbmc6OnJlaW5pdGlhbGl6ZXNdXQorI2Vsc2UKKyNk
ZWZpbmUgQUJTTF9BVFRSSUJVVEVfUkVJTklUSUFMSVpFUworI2VuZGlmCisKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLyBWYXJpYWJsZSBBdHRyaWJ1dGVzCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiAvLyBBQlNMX0FUVFJJQlVURV9VTlVTRUQKIC8vCi0vLyBQcmV2ZW50cyB0aGUgY29t
cGlsZXIgZnJvbSBjb21wbGFpbmluZyBhYm91dCBvciBvcHRpbWl6aW5nIGF3YXkgdmFyaWFibGVz
Ci0vLyB0aGF0IGFwcGVhciB1bnVzZWQuCisvLyBQcmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbSBj
b21wbGFpbmluZyBhYm91dCB2YXJpYWJsZXMgdGhhdCBhcHBlYXIgdW51c2VkLgogI2lmIEFCU0xf
SEFWRV9BVFRSSUJVVEUodW51c2VkKSB8fCAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQo
X19jbGFuZ19fKSkKICN1bmRlZiBBQlNMX0FUVFJJQlVURV9VTlVTRUQKICNkZWZpbmUgQUJTTF9B
VFRSSUJVVEVfVU5VU0VEIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uZmlnLmgKaW5kZXggNjg5MGUzMTNi
ZjI3YWY3ZTVlOGE1YzA1MTMyNTAxM2UyNzIxNWEwZS4uZDRlYjdkMGNiZDc2YjcxOGY0Mjg5Nzlk
Y2U3NTVkNzM1YWZjYjAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jb25maWcuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL2NvbmZpZy5oCkBAIC0xOTksNyArMTk5LDcgQEAKICNkZWZpbmUgQUJTTF9IQVZF
X0lOVFJJTlNJQ19JTlQxMjggMQogI2VsaWYgZGVmaW5lZChfX0NVREFDQ19fKQogLy8gX19DVURB
Q0NfVkVSX18gaXMgYSBmdWxsIHZlcnNpb24gbnVtYmVyIGJlZm9yZSBDVURBIDksIGFuZCBpcyBk
ZWZpbmVkIHRvIGEKLS8vIHN0ZDo6c3RyaW5nIGV4cGxhaW5pbmcgdGhhdCBpdCBoYXMgYmVlbiBy
ZW1vdmVkIHN0YXJ0aW5nIHdpdGggQ1VEQSA5LiBXZSB1c2UKKy8vIHN0cmluZyBleHBsYWluaW5n
IHRoYXQgaXQgaGFzIGJlZW4gcmVtb3ZlZCBzdGFydGluZyB3aXRoIENVREEgOS4gV2UgdXNlCiAv
LyBuZXN0ZWQgI2lmcyBiZWNhdXNlIHRoZXJlIGlzIG5vIHNob3J0LWNpcmN1aXRpbmcgaW4gdGhl
IHByZXByb2Nlc3Nvci4KIC8vIE5PVEU6IGBfX0NVREFDQ19fYCBjb3VsZCBiZSB1bmRlZmluZWQg
d2hpbGUgYF9fQ1VEQUNDX1ZFUl9fYCBpcyBkZWZpbmVkLgogI2lmIF9fQ1VEQUNDX1ZFUl9fID49
IDcwMDAwCkBAIC00MTQsMTQgKzQxNCwxMyBAQAogLy8gPHN0cmluZ192aWV3PiwgPHZhcmlhbnQ+
IGlzIGltcGxlbWVudGVkKSBvciBoaWdoZXIuIEFsc28sIGBfX2NwbHVzcGx1c2AgaXMKIC8vIG5v
dCBjb3JyZWN0bHkgc2V0IGJ5IE1TVkMsIHNvIHdlIHVzZSBgX01TVkNfTEFOR2AgdG8gY2hlY2sg
dGhlIGxhbmd1YWdlCiAvLyB2ZXJzaW9uLgotLy8gVE9ETyh6aGFuZ3h5KTogZml4IHRlc3RzIGJl
Zm9yZSBlbmFibGluZyBhbGlhc2luZyBmb3IgYHN0ZDo6YW55YCwKLS8vIGBzdGQ6OnN0cmluZ192
aWV3YC4KKy8vIFRPRE8oemhhbmd4eSk6IGZpeCB0ZXN0cyBiZWZvcmUgZW5hYmxpbmcgYWxpYXNp
bmcgZm9yIGBzdGQ6OmFueWAuCiAjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0g
MTkxMCAmJiBcCiAgICAgKChkZWZpbmVkKF9NU1ZDX0xBTkcpICYmIF9NU1ZDX0xBTkcgPiAyMDE0
MDIpIHx8IF9fY3BsdXNwbHVzID4gMjAxNDAyKQogLy8gI2RlZmluZSBBQlNMX0hBVkVfU1REX0FO
WSAxCiAjZGVmaW5lIEFCU0xfSEFWRV9TVERfT1BUSU9OQUwgMQogI2RlZmluZSBBQlNMX0hBVkVf
U1REX1ZBUklBTlQgMQotLy8gI2RlZmluZSBBQlNMX0hBVkVfU1REX1NUUklOR19WSUVXIDEKKyNk
ZWZpbmUgQUJTTF9IQVZFX1NURF9TVFJJTkdfVklFVyAxCiAjZW5kaWYKIAogI2VuZGlmICAvLyBB
QlNMX0JBU0VfQ09ORklHX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2V4Y2VwdGlvbl9zYWZl
dHlfdGVzdGluZ190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9leGNlcHRpb25fc2FmZXR5X3Rlc3Rpbmdf
dGVzdC5jYwppbmRleCA5N2M4ZDZmODMxODk0YTg4MGE5ODRhMWQwZTA5MGUwNDg3NzI4MmVlLi4x
MDZiYzM0YjAwZjdjZTI3YTdiNDM3NTJhZDcxMDY5OWZiYzQ1NWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZ190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nX3Rlc3QuY2MKQEAgLTM4LDcgKzM4LDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIEY+CiB2b2lkIEV4cGVjdE5vVGhyb3coY29uc3QgRiYgZikgewogICB0cnkg
ewogICAgIGYoKTsKLSAgfSBjYXRjaCAoVGVzdEV4Y2VwdGlvbiBlKSB7CisgIH0gY2F0Y2ggKGNv
bnN0IFRlc3RFeGNlcHRpb24mIGUpIHsKICAgICBBRERfRkFJTFVSRSgpIDw8ICJVbmV4cGVjdGVk
IGV4Y2VwdGlvbiB0aHJvd24gZnJvbSAiIDw8IGUud2hhdCgpOwogICB9CiB9CkBAIC0xNzksNyAr
MTc5LDcgQEAgVEVTVChUaHJvd2luZ1ZhbHVlVGVzdCwgVGhyb3dpbmdTdHJlYW1PcHMpIHsKIH0K
IAogLy8gVGVzdHMgdGhlIG9wZXJhdG9yPDwgb2YgVGhyb3dpbmdWYWx1ZSBieSBmb3JjaW5nIENv
bnN0cnVjdG9yVHJhY2tlciB0byBlbWl0Ci0vLyBhIG5vbmZhdGFsIGZhaWx1cmUgdGhhdCBjb250
YWlucyB0aGUgc3RkOjpzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFRocm93ZXIKKy8vIGEg
bm9uZmF0YWwgZmFpbHVyZSB0aGF0IGNvbnRhaW5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24g
b2YgdGhlIFRocm93ZXIKIFRFU1QoVGhyb3dpbmdWYWx1ZVRlc3QsIFN0cmVhbU9wc091dHB1dCkg
ewogICB1c2luZyA6OnRlc3Rpbmc6OlR5cGVTcGVjOwogICBleGNlcHRpb25zX2ludGVybmFsOjpD
b25zdHJ1Y3RvclRyYWNrZXIgY3QoZXhjZXB0aW9uc19pbnRlcm5hbDo6Y291bnRkb3duKTsKQEAg
LTU0OCwyMSArNTQ4LDIxIEBAIFRFU1QoRXhjZXB0aW9uU2FmZXR5VGVzdGVyVGVzdCwgSW5jb21w
bGV0ZVR5cGVzQXJlTm90VGVzdGFibGUpIHsKICAgLy8gVGVzdCB0aGF0IHByb3ZpZGluZyBvcGVy
YXRpb24gYW5kIGludmVyaWFudHMgc3RpbGwgZG9lcyBub3QgYWxsb3cgZm9yIHRoZQogICAvLyB0
aGUgaW52b2NhdGlvbiBvZiAuVGVzdCgpIGFuZCAuVGVzdChvcCkgYmVjYXVzZSBpdCBsYWNrcyBh
IGZhY3RvcnkKICAgYXV0byB3aXRob3V0X2ZhYyA9Ci0gICAgICB0ZXN0aW5nOjpNYWtlRXhjZXB0
aW9uU2FmZXR5VGVzdGVyKCkuV2l0aE9wZXJhdGlvbihvcCkuV2l0aEludmFyaWFudHMoCisgICAg
ICB0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aE9wZXJhdGlvbihvcCku
V2l0aENvbnRyYWN0cygKICAgICAgICAgICBpbnYsIHRlc3Rpbmc6OnN0cm9uZ19ndWFyYW50ZWUp
OwogICBFWFBFQ1RfRkFMU0UoSGFzTnVsbGFyeVRlc3Qod2l0aG91dF9mYWMpKTsKICAgRVhQRUNU
X0ZBTFNFKEhhc1VuYXJ5VGVzdCh3aXRob3V0X2ZhYykpOwogCi0gIC8vIFRlc3QgdGhhdCBwcm92
aWRpbmcgaW52YXJpYW50cyBhbmQgZmFjdG9yeSBhbGxvd3MgdGhlIGludm9jYXRpb24gb2YKKyAg
Ly8gVGVzdCB0aGF0IHByb3ZpZGluZyBjb250cmFjdHMgYW5kIGZhY3RvcnkgYWxsb3dzIHRoZSBp
bnZvY2F0aW9uIG9mCiAgIC8vIC5UZXN0KG9wKSBidXQgZG9lcyBub3QgYWxsb3cgZm9yIC5UZXN0
KCkgYmVjYXVzZSBpdCBsYWNrcyBhbiBvcGVyYXRpb24KICAgYXV0byB3aXRob3V0X29wID0gdGVz
dGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAuV2l0aEludmFyaWFudHMoaW52LCB0ZXN0aW5nOjpzdHJvbmdfZ3VhcmFudGVlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoaW52LCB0ZXN0aW5nOjpzdHJvbmdfZ3Vh
cmFudGVlKQogICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhGYWN0b3J5KGZhYyk7CiAgIEVY
UEVDVF9GQUxTRShIYXNOdWxsYXJ5VGVzdCh3aXRob3V0X29wKSk7CiAgIEVYUEVDVF9UUlVFKEhh
c1VuYXJ5VGVzdCh3aXRob3V0X29wKSk7CiAKICAgLy8gVGVzdCB0aGF0IHByb3ZpZGluZyBvcGVy
YXRpb24gYW5kIGZhY3Rvcnkgc3RpbGwgZG9lcyBub3QgYWxsb3cgZm9yIHRoZQotICAvLyB0aGUg
aW52b2NhdGlvbiBvZiAuVGVzdCgpIGFuZCAuVGVzdChvcCkgYmVjYXVzZSBpdCBsYWNrcyBpbnZh
cmlhbnRzCisgIC8vIHRoZSBpbnZvY2F0aW9uIG9mIC5UZXN0KCkgYW5kIC5UZXN0KG9wKSBiZWNh
dXNlIGl0IGxhY2tzIGNvbnRyYWN0cwogICBhdXRvIHdpdGhvdXRfaW52ID0KICAgICAgIHRlc3Rp
bmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoT3BlcmF0aW9uKG9wKS5XaXRoRmFj
dG9yeShmYWMpOwogICBFWFBFQ1RfRkFMU0UoSGFzTnVsbGFyeVRlc3Qod2l0aG91dF9pbnYpKTsK
QEAgLTU3Nyw3ICs1NzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RXhhbXBsZVN0cnVjdD4gRXhhbXBs
ZUZ1bmN0aW9uRmFjdG9yeSgpIHsKIAogdm9pZCBFeGFtcGxlRnVuY3Rpb25PcGVyYXRpb24oRXhh
bXBsZVN0cnVjdCopIHt9CiAKLXRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBFeGFtcGxlRnVuY3Rp
b25JbnZhcmlhbnQoRXhhbXBsZVN0cnVjdCopIHsKK3Rlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBF
eGFtcGxlRnVuY3Rpb25Db250cmFjdChFeGFtcGxlU3RydWN0KikgewogICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogfQogCkBAIC01OTMsMTYgKzU5MywxNiBAQCBzdHJ1Y3Qg
ewogCiBzdHJ1Y3QgewogICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgb3BlcmF0b3IoKShFeGFt
cGxlU3RydWN0KiBleGFtcGxlX3N0cnVjdCkgY29uc3QgewotICAgIHJldHVybiBFeGFtcGxlRnVu
Y3Rpb25JbnZhcmlhbnQoZXhhbXBsZV9zdHJ1Y3QpOworICAgIHJldHVybiBFeGFtcGxlRnVuY3Rp
b25Db250cmFjdChleGFtcGxlX3N0cnVjdCk7CiAgIH0KLX0gZXhhbXBsZV9zdHJ1Y3RfaW52YXJp
YW50OworfSBleGFtcGxlX3N0cnVjdF9jb250cmFjdDsKIAogYXV0byBleGFtcGxlX2xhbWJkYV9m
YWN0b3J5ID0gW10oKSB7IHJldHVybiBFeGFtcGxlRnVuY3Rpb25GYWN0b3J5KCk7IH07CiAKIGF1
dG8gZXhhbXBsZV9sYW1iZGFfb3BlcmF0aW9uID0gW10oRXhhbXBsZVN0cnVjdCopIHt9OwogCi1h
dXRvIGV4YW1wbGVfbGFtYmRhX2ludmFyaWFudCA9IFtdKEV4YW1wbGVTdHJ1Y3QqIGV4YW1wbGVf
c3RydWN0KSB7Ci0gIHJldHVybiBFeGFtcGxlRnVuY3Rpb25JbnZhcmlhbnQoZXhhbXBsZV9zdHJ1
Y3QpOworYXV0byBleGFtcGxlX2xhbWJkYV9jb250cmFjdCA9IFtdKEV4YW1wbGVTdHJ1Y3QqIGV4
YW1wbGVfc3RydWN0KSB7CisgIHJldHVybiBFeGFtcGxlRnVuY3Rpb25Db250cmFjdChleGFtcGxl
X3N0cnVjdCk7CiB9OwogCiAvLyBUZXN0aW5nIHRoYXQgZnVuY3Rpb24gcmVmZXJlbmNlcywgcG9p
bnRlcnMsIHN0cnVjdHMgd2l0aCBvcGVyYXRvcigpIGFuZApAQCAtNjEyLDI4ICs2MTIsMjggQEAg
VEVTVChFeGNlcHRpb25TYWZldHlUZXN0ZXJUZXN0LCBNaXhlZEZ1bmN0aW9uVHlwZXMpIHsKICAg
RVhQRUNUX1RSVUUodGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAg
ICAgICAgICAgICAuV2l0aEZhY3RvcnkoRXhhbXBsZUZ1bmN0aW9uRmFjdG9yeSkKICAgICAgICAg
ICAgICAgICAgIC5XaXRoT3BlcmF0aW9uKEV4YW1wbGVGdW5jdGlvbk9wZXJhdGlvbikKLSAgICAg
ICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhFeGFtcGxlRnVuY3Rpb25JbnZhcmlhbnQpCisg
ICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhFeGFtcGxlRnVuY3Rpb25Db250cmFjdCkK
ICAgICAgICAgICAgICAgICAgIC5UZXN0KCkpOwogCiAgIC8vIGZ1bmN0aW9uIHBvaW50ZXIKICAg
RVhQRUNUX1RSVUUodGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAg
ICAgICAgICAgICAuV2l0aEZhY3RvcnkoJkV4YW1wbGVGdW5jdGlvbkZhY3RvcnkpCiAgICAgICAg
ICAgICAgICAgICAuV2l0aE9wZXJhdGlvbigmRXhhbXBsZUZ1bmN0aW9uT3BlcmF0aW9uKQotICAg
ICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKCZFeGFtcGxlRnVuY3Rpb25JbnZhcmlhbnQp
CisgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cygmRXhhbXBsZUZ1bmN0aW9uQ29udHJh
Y3QpCiAgICAgICAgICAgICAgICAgICAuVGVzdCgpKTsKIAogICAvLyBzdHJ1Y3QKICAgRVhQRUNU
X1RSVUUodGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAgICAgICAg
ICAgICAuV2l0aEZhY3RvcnkoZXhhbXBsZV9zdHJ1Y3RfZmFjdG9yeSkKICAgICAgICAgICAgICAg
ICAgIC5XaXRoT3BlcmF0aW9uKGV4YW1wbGVfc3RydWN0X29wZXJhdGlvbikKLSAgICAgICAgICAg
ICAgICAgIC5XaXRoSW52YXJpYW50cyhleGFtcGxlX3N0cnVjdF9pbnZhcmlhbnQpCisgICAgICAg
ICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhleGFtcGxlX3N0cnVjdF9jb250cmFjdCkKICAgICAg
ICAgICAgICAgICAgIC5UZXN0KCkpOwogCiAgIC8vIGxhbWJkYQogICBFWFBFQ1RfVFJVRSh0ZXN0
aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgIC5XaXRo
RmFjdG9yeShleGFtcGxlX2xhbWJkYV9mYWN0b3J5KQogICAgICAgICAgICAgICAgICAgLldpdGhP
cGVyYXRpb24oZXhhbXBsZV9sYW1iZGFfb3BlcmF0aW9uKQotICAgICAgICAgICAgICAgICAgLldp
dGhJbnZhcmlhbnRzKGV4YW1wbGVfbGFtYmRhX2ludmFyaWFudCkKKyAgICAgICAgICAgICAgICAg
IC5XaXRoQ29udHJhY3RzKGV4YW1wbGVfbGFtYmRhX2NvbnRyYWN0KQogICAgICAgICAgICAgICAg
ICAgLlRlc3QoKSk7CiB9CiAKQEAgLTY1OCw5ICs2NTgsOSBAQCBzdHJ1Y3QgewogfSBpbnZva2Vy
OwogCiBhdXRvIHRlc3RlciA9Ci0gICAgdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3Rl
cigpLldpdGhPcGVyYXRpb24oaW52b2tlcikuV2l0aEludmFyaWFudHMoCisgICAgdGVzdGluZzo6
TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpLldpdGhPcGVyYXRpb24oaW52b2tlcikuV2l0aENv
bnRyYWN0cygKICAgICAgICAgQ2hlY2tOb25OZWdhdGl2ZUludmFyaWFudHMpOwotYXV0byBzdHJv
bmdfdGVzdGVyID0gdGVzdGVyLldpdGhJbnZhcmlhbnRzKHRlc3Rpbmc6OnN0cm9uZ19ndWFyYW50
ZWUpOworYXV0byBzdHJvbmdfdGVzdGVyID0gdGVzdGVyLldpdGhDb250cmFjdHModGVzdGluZzo6
c3Ryb25nX2d1YXJhbnRlZSk7CiAKIHN0cnVjdCBGYWlsc0Jhc2ljR3VhcmFudGVlIDogcHVibGlj
IE5vbk5lZ2F0aXZlIHsKICAgdm9pZCBvcGVyYXRvcigpKCkgewpAQCAtNjkwLDcgKzY5MCw3IEBA
IFRFU1QoRXhjZXB0aW9uQ2hlY2tUZXN0LCBTdHJvbmdHdWFyYW50ZWVGYWlsdXJlKSB7CiAgIEVY
UEVDVF9GQUxTRShzdHJvbmdfdGVzdGVyLldpdGhJbml0aWFsVmFsdWUoRm9sbG93c0Jhc2ljR3Vh
cmFudGVle30pLlRlc3QoKSk7CiB9CiAKLXN0cnVjdCBCYXNpY0d1YXJhbnRlZVdpdGhFeHRyYUlu
dmFyaWFudHMgOiBwdWJsaWMgTm9uTmVnYXRpdmUgeworc3RydWN0IEJhc2ljR3VhcmFudGVlV2l0
aEV4dHJhQ29udHJhY3RzIDogcHVibGljIE5vbk5lZ2F0aXZlIHsKICAgLy8gQWZ0ZXIgb3BlcmF0
b3IoKSwgaSBpcyBpbmNyZW1lbnRlZC4gIElmIG9wZXJhdG9yKCkgdGhyb3dzLCBpIGlzIHNldCB0
byA5OTk5CiAgIHZvaWQgb3BlcmF0b3IoKSgpIHsKICAgICBpbnQgb2xkX2kgPSBpOwpAQCAtNzAx
LDIxICs3MDEsMjEgQEAgc3RydWN0IEJhc2ljR3VhcmFudGVlV2l0aEV4dHJhSW52YXJpYW50cyA6
IHB1YmxpYyBOb25OZWdhdGl2ZSB7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBpbnQga0V4Y2VwdGlv
blNlbnRpbmVsID0gOTk5OTsKIH07Ci1jb25zdGV4cHIgaW50IEJhc2ljR3VhcmFudGVlV2l0aEV4
dHJhSW52YXJpYW50czo6a0V4Y2VwdGlvblNlbnRpbmVsOworY29uc3RleHByIGludCBCYXNpY0d1
YXJhbnRlZVdpdGhFeHRyYUNvbnRyYWN0czo6a0V4Y2VwdGlvblNlbnRpbmVsOwogCi1URVNUKEV4
Y2VwdGlvbkNoZWNrVGVzdCwgQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFJbnZhcmlhbnRzKSB7CitU
RVNUKEV4Y2VwdGlvbkNoZWNrVGVzdCwgQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFDb250cmFjdHMp
IHsKICAgYXV0byB0ZXN0ZXJfd2l0aF92YWwgPQotICAgICAgdGVzdGVyLldpdGhJbml0aWFsVmFs
dWUoQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFJbnZhcmlhbnRze30pOworICAgICAgdGVzdGVyLldp
dGhJbml0aWFsVmFsdWUoQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFDb250cmFjdHN7fSk7CiAgIEVY
UEVDVF9UUlVFKHRlc3Rlcl93aXRoX3ZhbC5UZXN0KCkpOwogICBFWFBFQ1RfVFJVRSgKICAgICAg
IHRlc3Rlcl93aXRoX3ZhbAotICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhbXShCYXNpY0d1YXJh
bnRlZVdpdGhFeHRyYUludmFyaWFudHMqIG8pIHsKLSAgICAgICAgICAgIGlmIChvLT5pID09IEJh
c2ljR3VhcmFudGVlV2l0aEV4dHJhSW52YXJpYW50czo6a0V4Y2VwdGlvblNlbnRpbmVsKSB7Cisg
ICAgICAgICAgLldpdGhDb250cmFjdHMoW10oQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFDb250cmFj
dHMqIG8pIHsKKyAgICAgICAgICAgIGlmIChvLT5pID09IEJhc2ljR3VhcmFudGVlV2l0aEV4dHJh
Q29udHJhY3RzOjprRXhjZXB0aW9uU2VudGluZWwpIHsKICAgICAgICAgICAgICAgcmV0dXJuIHRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKICAgICAgICAgICAgICAgICAgICA8PCAi
aSBzaG91bGQgYmUgIgotICAgICAgICAgICAgICAgICAgIDw8IEJhc2ljR3VhcmFudGVlV2l0aEV4
dHJhSW52YXJpYW50czo6a0V4Y2VwdGlvblNlbnRpbmVsCisgICAgICAgICAgICAgICAgICAgPDwg
QmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFDb250cmFjdHM6OmtFeGNlcHRpb25TZW50aW5lbAogICAg
ICAgICAgICAgICAgICAgIDw8ICIsIGJ1dCBpcyAiIDw8IG8tPmk7CiAgICAgICAgICAgfSkKICAg
ICAgICAgICAuVGVzdCgpKTsKQEAgLTc0MCw3ICs3NDAsNyBAQCBzdHJ1Y3QgSGFzUmVzZXQgOiBw
dWJsaWMgTm9uTmVnYXRpdmUgewogICB2b2lkIHJlc2V0KCkgeyBpID0gMDsgfQogfTsKIAotdGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IENoZWNrSGFzUmVzZXRJbnZhcmlhbnRzKEhhc1Jlc2V0KiBo
KSB7Cit0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgQ2hlY2tIYXNSZXNldENvbnRyYWN0cyhIYXNS
ZXNldCogaCkgewogICBoLT5yZXNldCgpOwogICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0KGgtPmkgPT0gMCk7CiB9CkBAIC03NTksMTQgKzc1OSwxNCBAQCBURVNUKEV4Y2VwdGlvbkNo
ZWNrVGVzdCwgTW9kaWZ5aW5nQ2hlY2tlcikgewogICB9OwogCiAgIEVYUEVDVF9GQUxTRSh0ZXN0
ZXIuV2l0aEluaXRpYWxWYWx1ZShGb2xsb3dzQmFzaWNHdWFyYW50ZWV7fSkKLSAgICAgICAgICAg
ICAgICAgICAuV2l0aEludmFyaWFudHMoc2V0X3RvXzEwMDAsIGlzXzEwMDApCisgICAgICAgICAg
ICAgICAgICAgLldpdGhDb250cmFjdHMoc2V0X3RvXzEwMDAsIGlzXzEwMDApCiAgICAgICAgICAg
ICAgICAgICAgLlRlc3QoKSk7CiAgIEVYUEVDVF9UUlVFKHN0cm9uZ190ZXN0ZXIuV2l0aEluaXRp
YWxWYWx1ZShGb2xsb3dzU3Ryb25nR3VhcmFudGVle30pCi0gICAgICAgICAgICAgICAgICAuV2l0
aEludmFyaWFudHMoaW5jcmVtZW50KQorICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMo
aW5jcmVtZW50KQogICAgICAgICAgICAgICAgICAgLlRlc3QoKSk7CiAgIEVYUEVDVF9UUlVFKHRl
c3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgLldp
dGhJbml0aWFsVmFsdWUoSGFzUmVzZXR7fSkKLSAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJp
YW50cyhDaGVja0hhc1Jlc2V0SW52YXJpYW50cykKKyAgICAgICAgICAgICAgICAgIC5XaXRoQ29u
dHJhY3RzKENoZWNrSGFzUmVzZXRDb250cmFjdHMpCiAgICAgICAgICAgICAgICAgICAuVGVzdChp
bnZva2VyKSk7CiB9CiAKQEAgLTc5OSw3ICs3OTksNyBAQCBURVNUKEV4Y2VwdGlvbkNoZWNrVGVz
dCwgTm9uRXF1YWxpdHlDb21wYXJhYmxlKSB7CiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdChuZWMtPmkgPT0gTm9uRXF1YWxpdHlDb21wYXJhYmxlKCkuaSk7CiAgIH07CiAgIGF1
dG8gc3Ryb25nX25lY190ZXN0ZXIgPSB0ZXN0ZXIuV2l0aEluaXRpYWxWYWx1ZShOb25FcXVhbGl0
eUNvbXBhcmFibGV7fSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFy
aWFudHMobmVjX2lzX3N0cm9uZyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLldp
dGhDb250cmFjdHMobmVjX2lzX3N0cm9uZyk7CiAKICAgRVhQRUNUX1RSVUUoc3Ryb25nX25lY190
ZXN0ZXIuVGVzdCgpKTsKICAgRVhQRUNUX0ZBTFNFKHN0cm9uZ19uZWNfdGVzdGVyLlRlc3QoCkBA
IC04MzMsMTQgKzgzMywxNCBAQCBzdHJ1Y3QgewogICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQg
b3BlcmF0b3IoKShFeGhhdXN0aXZlbmVzc1Rlc3RlcjxUPiopIGNvbnN0IHsKICAgICByZXR1cm4g
dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogICB9Ci19IENoZWNrRXhoYXVzdGl2ZW5lc3NU
ZXN0ZXJJbnZhcmlhbnRzOworfSBDaGVja0V4aGF1c3RpdmVuZXNzVGVzdGVyQ29udHJhY3RzOwog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHVuc2lnbmVkIGNoYXIgRXhoYXVzdGl2ZW5lc3NUZXN0
ZXI8VD46OnN1Y2Nlc3NlcyA9IDA7CiAKIFRFU1QoRXhjZXB0aW9uQ2hlY2tUZXN0LCBFeGhhdXN0
aXZlbmVzcykgewogICBhdXRvIGV4aGF1c3RfdGVzdGVyID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlv
blNhZmV0eVRlc3RlcigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlh
bnRzKENoZWNrRXhoYXVzdGl2ZW5lc3NUZXN0ZXJJbnZhcmlhbnRzKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKENoZWNrRXhoYXVzdGl2ZW5lc3NUZXN0ZXJDb250
cmFjdHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhPcGVyYXRpb24oaW52b2tl
cik7CiAKICAgRVhQRUNUX1RSVUUoCkBAIC04NDksNyArODQ5LDcgQEAgVEVTVChFeGNlcHRpb25D
aGVja1Rlc3QsIEV4aGF1c3RpdmVuZXNzKSB7CiAKICAgRVhQRUNUX1RSVUUoCiAgICAgICBleGhh
dXN0X3Rlc3Rlci5XaXRoSW5pdGlhbFZhbHVlKEV4aGF1c3RpdmVuZXNzVGVzdGVyPFRocm93aW5n
VmFsdWU8Pj57fSkKLSAgICAgICAgICAuV2l0aEludmFyaWFudHModGVzdGluZzo6c3Ryb25nX2d1
YXJhbnRlZSkKKyAgICAgICAgICAuV2l0aENvbnRyYWN0cyh0ZXN0aW5nOjpzdHJvbmdfZ3VhcmFu
dGVlKQogICAgICAgICAgIC5UZXN0KCkpOwogICBFWFBFQ1RfRVEoRXhoYXVzdGl2ZW5lc3NUZXN0
ZXI8VGhyb3dpbmdWYWx1ZTw+Pjo6c3VjY2Vzc2VzLCAweEYpOwogfQpAQCAtOTMxLDggKzkzMSw4
IEBAIFRFU1QoVGhyb3dpbmdWYWx1ZVRyYWl0c1Rlc3QsIFJlbGF0aW9uYWxPcGVyYXRvcnMpIHsK
IH0KIAogVEVTVChUaHJvd2luZ0FsbG9jYXRvclRyYWl0c1Rlc3QsIEFzc2lnbmFibGlsaXR5KSB7
Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPFRocm93aW5nQWxsb2NhdG9y
PGludD4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPFRo
cm93aW5nQWxsb2NhdG9yPGludD4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX21v
dmVfYXNzaWduYWJsZTxUaHJvd2luZ0FsbG9jYXRvcjxpbnQ+Pjo6dmFsdWUpOworICBFWFBFQ1Rf
VFJVRShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8VGhyb3dpbmdBbGxvY2F0b3I8aW50Pj46OnZh
bHVlKTsKICAgRVhQRUNUX1RSVUUoc3RkOjppc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxUaHJv
d2luZ0FsbG9jYXRvcjxpbnQ+Pjo6dmFsdWUpOwogICBFWFBFQ1RfVFJVRShzdGQ6OmlzX25vdGhy
b3dfY29weV9hc3NpZ25hYmxlPFRocm93aW5nQWxsb2NhdG9yPGludD4+Ojp2YWx1ZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJu
YWwvYml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjN2ZhYWVlM2IyNTdlZGMzN2NkOTA5MGI3Nzc3ZDcwMzVk
M2MzYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaApAQCAt
MCwwICsxLDE5MyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwor
I2lmbmRlZiBBQlNMX0JBU0VfSU5URVJOQUxfQklUU19IXworI2RlZmluZSBBQlNMX0JBU0VfSU5U
RVJOQUxfQklUU19IXworCisvLyBUaGlzIGZpbGUgY29udGFpbnMgYml0d2lzZSBvcHMgd2hpY2gg
YXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdmFyaW91cworLy8gYWJzbCBsaWJyYXJpZXMu
CisKKyNpbmNsdWRlIDxjc3RkaW50PgorCisvLyBDbGFuZyBvbiBXaW5kb3dzIGhhcyBfX2J1aWx0
aW5fY2x6bGw7IG90aGVyd2lzZSB3ZSBuZWVkIHRvIHVzZSB0aGUKKy8vIHdpbmRvd3MgaW50cmlu
c2ljIGZ1bmN0aW9ucy4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2luY2x1ZGUgPGludHJpbi5o
PgorI2lmIGRlZmluZWQoX01fWDY0KQorI3ByYWdtYSBpbnRyaW5zaWMoX0JpdFNjYW5SZXZlcnNl
NjQpCisjcHJhZ21hIGludHJpbnNpYyhfQml0U2NhbkZvcndhcmQ2NCkKKyNlbmRpZgorI3ByYWdt
YSBpbnRyaW5zaWMoX0JpdFNjYW5SZXZlcnNlKQorI3ByYWdtYSBpbnRyaW5zaWMoX0JpdFNjYW5G
b3J3YXJkKQorI2VuZGlmCisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorCisj
aWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIFdlIGNhbiBhY2hpZXZlIHNvbWV0aGluZyBzaW1pbGFy
IHRvIGF0dHJpYnV0ZSgoYWx3YXlzX2lubGluZSkpIHdpdGggTVNWQyBieQorLy8gdXNpbmcgdGhl
IF9fZm9yY2VpbmxpbmUga2V5d29yZCwgaG93ZXZlciB0aGlzIGlzIG5vdCBwZXJmZWN0LiBNU1ZD
IGlzCisvLyBtdWNoIGxlc3MgYWdncmVzc2l2ZSBhYm91dCBpbmxpbmluZywgYW5kIGV2ZW4gd2l0
aCB0aGUgX19mb3JjZWlubGluZSBrZXl3b3JkLgorI2RlZmluZSBBQlNMX0JBU0VfSU5URVJOQUxf
Rk9SQ0VJTkxJTkUgX19mb3JjZWlubGluZQorI2Vsc2UKKy8vIFVzZSBkZWZhdWx0IGF0dHJpYnV0
ZSBpbmxpbmUuCisjZGVmaW5lIEFCU0xfQkFTRV9JTlRFUk5BTF9GT1JDRUlOTElORSBpbmxpbmUg
QUJTTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQorI2VuZGlmCisKKworbmFtZXNwYWNlIGFic2wg
eworbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgeworCitBQlNMX0JBU0VfSU5URVJOQUxfRk9SQ0VJ
TkxJTkUgaW50IENvdW50TGVhZGluZ1plcm9zNjRTbG93KHVpbnQ2NF90IG4pIHsKKyAgaW50IHpl
cm9lcyA9IDYwOworICBpZiAobiA+PiAzMikgemVyb2VzIC09IDMyLCBuID4+PSAzMjsKKyAgaWYg
KG4gPj4gMTYpIHplcm9lcyAtPSAxNiwgbiA+Pj0gMTY7CisgIGlmIChuID4+IDgpIHplcm9lcyAt
PSA4LCBuID4+PSA4OworICBpZiAobiA+PiA0KSB6ZXJvZXMgLT0gNCwgbiA+Pj0gNDsKKyAgcmV0
dXJuICJcNFwzXDJcMlwxXDFcMVwxXDBcMFwwXDBcMFwwXDAiW25dICsgemVyb2VzOworfQorCitB
QlNMX0JBU0VfSU5URVJOQUxfRk9SQ0VJTkxJTkUgaW50IENvdW50TGVhZGluZ1plcm9zNjQodWlu
dDY0X3QgbikgeworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQoX01fWDY0KQorICAv
LyBNU1ZDIGRvZXMgbm90IGhhdmUgX19idWl0aW5fY2x6bGwuIFVzZSBfQml0U2NhblJldmVyc2U2
NC4KKyAgdW5zaWduZWQgbG9uZyByZXN1bHQgPSAwOyAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQor
ICBpZiAoX0JpdFNjYW5SZXZlcnNlNjQoJnJlc3VsdCwgbikpIHsKKyAgICByZXR1cm4gNjMgLSBy
ZXN1bHQ7CisgIH0KKyAgcmV0dXJuIDY0OworI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgLy8g
TVNWQyBkb2VzIG5vdCBoYXZlIF9fYnVpdGluX2NsemxsLiBDb21wb3NlIHR3byBjYWxscyB0byBf
Qml0U2NhblJldmVyc2UKKyAgdW5zaWduZWQgbG9uZyByZXN1bHQgPSAwOyAgLy8gTk9MSU5UKHJ1
bnRpbWUvaW50KQorICBpZiAoKG4gPj4gMzIpICYmIF9CaXRTY2FuUmV2ZXJzZSgmcmVzdWx0LCBu
ID4+IDMyKSkgeworICAgIHJldHVybiAzMSAtIHJlc3VsdDsKKyAgfQorICBpZiAoX0JpdFNjYW5S
ZXZlcnNlKCZyZXN1bHQsIG4pKSB7CisgICAgcmV0dXJuIDYzIC0gcmVzdWx0OworICB9CisgIHJl
dHVybiA2NDsKKyNlbGlmIGRlZmluZWQoX19HTlVDX18pCisgIC8vIFVzZSBfX2J1aWx0aW5fY2x6
bGwsIHdoaWNoIHVzZXMgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbnM6CisgIC8vICB4ODY6IGJz
cgorICAvLyAgQVJNNjQ6IGNsegorICAvLyAgUFBDOiBjbnRsemQKKyAgc3RhdGljX2Fzc2VydChz
aXplb2YodW5zaWduZWQgbG9uZyBsb25nKSA9PSBzaXplb2YobiksICAvLyBOT0xJTlQocnVudGlt
ZS9pbnQpCisgICAgICAgICAgICAgICAgIl9fYnVpbHRpbl9jbHpsbCBkb2VzIG5vdCB0YWtlIDY0
LWJpdCBhcmciKTsKKworICAvLyBIYW5kbGUgMCBhcyBhIHNwZWNpYWwgY2FzZSBiZWNhdXNlIF9f
YnVpbHRpbl9jbHpsbCgwKSBpcyB1bmRlZmluZWQuCisgIGlmIChuID09IDApIHsKKyAgICByZXR1
cm4gNjQ7CisgIH0KKyAgcmV0dXJuIF9fYnVpbHRpbl9jbHpsbChuKTsKKyNlbHNlCisgIHJldHVy
biBDb3VudExlYWRpbmdaZXJvczY0U2xvdyhuKTsKKyNlbmRpZgorfQorCitBQlNMX0JBU0VfSU5U
RVJOQUxfRk9SQ0VJTkxJTkUgaW50IENvdW50TGVhZGluZ1plcm9zMzJTbG93KHVpbnQ2NF90IG4p
IHsKKyAgaW50IHplcm9lcyA9IDI4OworICBpZiAobiA+PiAxNikgemVyb2VzIC09IDE2LCBuID4+
PSAxNjsKKyAgaWYgKG4gPj4gOCkgemVyb2VzIC09IDgsIG4gPj49IDg7CisgIGlmIChuID4+IDQp
IHplcm9lcyAtPSA0LCBuID4+PSA0OworICByZXR1cm4gIlw0XDNcMlwyXDFcMVwxXDFcMFwwXDBc
MFwwXDBcMCJbbl0gKyB6ZXJvZXM7Cit9CisKK0FCU0xfQkFTRV9JTlRFUk5BTF9GT1JDRUlOTElO
RSBpbnQgQ291bnRMZWFkaW5nWmVyb3MzMih1aW50MzJfdCBuKSB7CisjaWYgZGVmaW5lZChfTVND
X1ZFUikKKyAgdW5zaWduZWQgbG9uZyByZXN1bHQgPSAwOyAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50
KQorICBpZiAoX0JpdFNjYW5SZXZlcnNlKCZyZXN1bHQsIG4pKSB7CisgICAgcmV0dXJuIDMxIC0g
cmVzdWx0OworICB9CisgIHJldHVybiAzMjsKKyNlbGlmIGRlZmluZWQoX19HTlVDX18pCisgIC8v
IFVzZSBfX2J1aWx0aW5fY2x6LCB3aGljaCB1c2VzIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25z
OgorICAvLyAgeDg2OiBic3IKKyAgLy8gIEFSTTY0OiBjbHoKKyAgLy8gIFBQQzogY250bHpkCisg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKGludCkgPT0gc2l6ZW9mKG4pLAorICAgICAgICAgICAgICAg
ICJfX2J1aWx0aW5fY2x6IGRvZXMgbm90IHRha2UgMzItYml0IGFyZyIpOworCisgIC8vIEhhbmRs
ZSAwIGFzIGEgc3BlY2lhbCBjYXNlIGJlY2F1c2UgX19idWlsdGluX2NseigwKSBpcyB1bmRlZmlu
ZWQuCisgIGlmIChuID09IDApIHsKKyAgICByZXR1cm4gMzI7CisgIH0KKyAgcmV0dXJuIF9fYnVp
bHRpbl9jbHoobik7CisjZWxzZQorICByZXR1cm4gQ291bnRMZWFkaW5nWmVyb3MzMlNsb3cobik7
CisjZW5kaWYKK30KKworQUJTTF9CQVNFX0lOVEVSTkFMX0ZPUkNFSU5MSU5FIGludCBDb3VudFRy
YWlsaW5nWmVyb3NOb25aZXJvNjRTbG93KHVpbnQ2NF90IG4pIHsKKyAgaW50IGMgPSA2MzsKKyAg
biAmPSB+biArIDE7CisgIGlmIChuICYgMHgwMDAwMDAwMEZGRkZGRkZGKSBjIC09IDMyOworICBp
ZiAobiAmIDB4MDAwMEZGRkYwMDAwRkZGRikgYyAtPSAxNjsKKyAgaWYgKG4gJiAweDAwRkYwMEZG
MDBGRjAwRkYpIGMgLT0gODsKKyAgaWYgKG4gJiAweDBGMEYwRjBGMEYwRjBGMEYpIGMgLT0gNDsK
KyAgaWYgKG4gJiAweDMzMzMzMzMzMzMzMzMzMzMpIGMgLT0gMjsKKyAgaWYgKG4gJiAweDU1NTU1
NTU1NTU1NTU1NTUpIGMgLT0gMTsKKyAgcmV0dXJuIGM7Cit9CisKK0FCU0xfQkFTRV9JTlRFUk5B
TF9GT1JDRUlOTElORSBpbnQgQ291bnRUcmFpbGluZ1plcm9zTm9uWmVybzY0KHVpbnQ2NF90IG4p
IHsKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9NX1g2NCkKKyAgdW5zaWduZWQg
bG9uZyByZXN1bHQgPSAwOyAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQorICBfQml0U2NhbkZvcndh
cmQ2NCgmcmVzdWx0LCBuKTsKKyAgcmV0dXJuIHJlc3VsdDsKKyNlbGlmIGRlZmluZWQoX01TQ19W
RVIpCisgIHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsgIC8vIE5PTElOVChydW50aW1lL2ludCkK
KyAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihuKSA9PSAwKSB7CisgICAgX0JpdFNjYW5Gb3J3
YXJkKCZyZXN1bHQsIG4gPj4gMzIpOworICAgIHJldHVybiByZXN1bHQgKyAzMjsKKyAgfQorICBf
Qml0U2NhbkZvcndhcmQoJnJlc3VsdCwgbik7CisgIHJldHVybiByZXN1bHQ7CisjZWxpZiBkZWZp
bmVkKF9fR05VQ19fKQorICBzdGF0aWNfYXNzZXJ0KHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcp
ID09IHNpemVvZihuKSwgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgICAgICAgICAgICAgICAi
X19idWlsdGluX2N0emxsIGRvZXMgbm90IHRha2UgNjQtYml0IGFyZyIpOworICByZXR1cm4gX19i
dWlsdGluX2N0emxsKG4pOworI2Vsc2UKKyAgcmV0dXJuIENvdW50VHJhaWxpbmdaZXJvc05vblpl
cm82NFNsb3cobik7CisjZW5kaWYKK30KKworQUJTTF9CQVNFX0lOVEVSTkFMX0ZPUkNFSU5MSU5F
IGludCBDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvMzJTbG93KHVpbnQzMl90IG4pIHsKKyAgaW50
IGMgPSAzMTsKKyAgbiAmPSB+biArIDE7CisgIGlmIChuICYgMHgwMDAwRkZGRikgYyAtPSAxNjsK
KyAgaWYgKG4gJiAweDAwRkYwMEZGKSBjIC09IDg7CisgIGlmIChuICYgMHgwRjBGMEYwRikgYyAt
PSA0OworICBpZiAobiAmIDB4MzMzMzMzMzMpIGMgLT0gMjsKKyAgaWYgKG4gJiAweDU1NTU1NTU1
KSBjIC09IDE7CisgIHJldHVybiBjOworfQorCitBQlNMX0JBU0VfSU5URVJOQUxfRk9SQ0VJTkxJ
TkUgaW50IENvdW50VHJhaWxpbmdaZXJvc05vblplcm8zMih1aW50MzJfdCBuKSB7CisjaWYgZGVm
aW5lZChfTVNDX1ZFUikKKyAgdW5zaWduZWQgbG9uZyByZXN1bHQgPSAwOyAgLy8gTk9MSU5UKHJ1
bnRpbWUvaW50KQorICBfQml0U2NhbkZvcndhcmQoJnJlc3VsdCwgbik7CisgIHJldHVybiByZXN1
bHQ7CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorICBzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQp
ID09IHNpemVvZihuKSwKKyAgICAgICAgICAgICAgICAiX19idWlsdGluX2N0eiBkb2VzIG5vdCB0
YWtlIDMyLWJpdCBhcmciKTsKKyAgcmV0dXJuIF9fYnVpbHRpbl9jdHoobik7CisjZWxzZQorICBy
ZXR1cm4gQ291bnRUcmFpbGluZ1plcm9zTm9uWmVybzMyU2xvdyhuKTsKKyNlbmRpZgorfQorCisj
dW5kZWYgQUJTTF9CQVNFX0lOVEVSTkFMX0ZPUkNFSU5MSU5FCisKK30gIC8vIG5hbWVzcGFjZSBi
YXNlX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQkFT
RV9JTlRFUk5BTF9CSVRTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHNf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvYml0c190ZXN0LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1
ZDk5MWQ2NzI1ODc0YWE5ZGI4MDNiMTUxMTc4MTdhYTMwODZiNTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHNfdGVzdC5jYwpAQCAtMCwwICsxLDk3IEBACisvLyBD
b3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9iYXNl
L2ludGVybmFsL2JpdHMuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFj
ZSB7CisKK2ludCBDTFo2NCh1aW50NjRfdCBuKSB7CisgIGludCBmYXN0ID0gYWJzbDo6YmFzZV9p
bnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChuKTsKKyAgaW50IHNsb3cgPSBhYnNsOjpiYXNl
X2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0U2xvdyhuKTsKKyAgRVhQRUNUX0VRKGZhc3Qs
IHNsb3cpIDw8IG47CisgIHJldHVybiBmYXN0OworfQorCitURVNUKEJpdHNUZXN0LCBDb3VudExl
YWRpbmdaZXJvczY0KSB7CisgIEVYUEVDVF9FUSg2NCwgQ0xaNjQodWludDY0X3R7fSkpOworICBF
WFBFQ1RfRVEoMCwgQ0xaNjQofnVpbnQ2NF90e30pKTsKKworICBmb3IgKGludCBpbmRleCA9IDA7
IGluZGV4IDwgNjQ7IGluZGV4KyspIHsKKyAgICB1aW50NjRfdCB4ID0gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KDEpIDw8IGluZGV4OworICAgIGNvbnN0IGF1dG8gY250ID0gNjMgLSBpbmRleDsKKyAg
ICBBU1NFUlRfRVEoY250LCBDTFo2NCh4KSkgPDwgaW5kZXg7CisgICAgQVNTRVJUX0VRKGNudCwg
Q0xaNjQoeCArIHggLSAxKSkgPDwgaW5kZXg7CisgIH0KK30KKworaW50IENMWjMyKHVpbnQzMl90
IG4pIHsKKyAgaW50IGZhc3QgPSBhYnNsOjpiYXNlX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJv
czMyKG4pOworICBpbnQgc2xvdyA9IGFic2w6OmJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1pl
cm9zMzJTbG93KG4pOworICBFWFBFQ1RfRVEoZmFzdCwgc2xvdykgPDwgbjsKKyAgcmV0dXJuIGZh
c3Q7Cit9CisKK1RFU1QoQml0c1Rlc3QsIENvdW50TGVhZGluZ1plcm9zMzIpIHsKKyAgRVhQRUNU
X0VRKDMyLCBDTFozMih1aW50MzJfdHt9KSk7CisgIEVYUEVDVF9FUSgwLCBDTFozMih+dWludDMy
X3R7fSkpOworCisgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCAzMjsgaW5kZXgrKykgewor
ICAgIHVpbnQzMl90IHggPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oMSkgPDwgaW5kZXg7CisgICAg
Y29uc3QgYXV0byBjbnQgPSAzMSAtIGluZGV4OworICAgIEFTU0VSVF9FUShjbnQsIENMWjMyKHgp
KSA8PCBpbmRleDsKKyAgICBBU1NFUlRfRVEoY250LCBDTFozMih4ICsgeCAtIDEpKSA8PCBpbmRl
eDsKKyAgICBBU1NFUlRfRVEoQ0xaNjQoeCksIENMWjMyKHgpICsgMzIpOworICB9Cit9CisKK2lu
dCBDVFo2NCh1aW50NjRfdCBuKSB7CisgIGludCBmYXN0ID0gYWJzbDo6YmFzZV9pbnRlcm5hbDo6
Q291bnRUcmFpbGluZ1plcm9zTm9uWmVybzY0KG4pOworICBpbnQgc2xvdyA9IGFic2w6OmJhc2Vf
aW50ZXJuYWw6OkNvdW50VHJhaWxpbmdaZXJvc05vblplcm82NFNsb3cobik7CisgIEVYUEVDVF9F
UShmYXN0LCBzbG93KSA8PCBuOworICByZXR1cm4gZmFzdDsKK30KKworVEVTVChCaXRzVGVzdCwg
Q291bnRUcmFpbGluZ1plcm9zTm9uWmVybzY0KSB7CisgIEVYUEVDVF9FUSgwLCBDVFo2NCh+dWlu
dDY0X3R7fSkpOworCisgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCA2NDsgaW5kZXgrKykg
eworICAgIHVpbnQ2NF90IHggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwgaW5kZXg7Cisg
ICAgY29uc3QgYXV0byBjbnQgPSBpbmRleDsKKyAgICBBU1NFUlRfRVEoY250LCBDVFo2NCh4KSkg
PDwgaW5kZXg7CisgICAgQVNTRVJUX0VRKGNudCwgQ1RaNjQofih4IC0gMSkpKSA8PCBpbmRleDsK
KyAgfQorfQorCitpbnQgQ1RaMzIodWludDMyX3QgbikgeworICBpbnQgZmFzdCA9IGFic2w6OmJh
c2VfaW50ZXJuYWw6OkNvdW50VHJhaWxpbmdaZXJvc05vblplcm8zMihuKTsKKyAgaW50IHNsb3cg
PSBhYnNsOjpiYXNlX2ludGVybmFsOjpDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvMzJTbG93KG4p
OworICBFWFBFQ1RfRVEoZmFzdCwgc2xvdykgPDwgbjsKKyAgcmV0dXJuIGZhc3Q7Cit9CisKK1RF
U1QoQml0c1Rlc3QsIENvdW50VHJhaWxpbmdaZXJvc05vblplcm8zMikgeworICBFWFBFQ1RfRVEo
MCwgQ1RaMzIofnVpbnQzMl90e30pKTsKKworICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwg
MzI7IGluZGV4KyspIHsKKyAgICB1aW50MzJfdCB4ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEp
IDw8IGluZGV4OworICAgIGNvbnN0IGF1dG8gY250ID0gaW5kZXg7CisgICAgQVNTRVJUX0VRKGNu
dCwgQ1RaMzIoeCkpIDw8IGluZGV4OworICAgIEFTU0VSVF9FUShjbnQsIENUWjMyKH4oeCAtIDEp
KSkgPDwgaW5kZXg7CisgIH0KK30KKworCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L2ludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oCmluZGV4IDhjMmY1MDkzZmM0ZGE4
MjhhZmE4MjM0MmJlNDQ5OTVkMThhM2JiZTcuLjU2NjVhMWI2N2RiMmVjNGNhMmFkODBmZmEwNmZl
NmU5Y2ZjNDkxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3Nh
ZmV0eV90ZXN0aW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRpb25fc2FmZXR5
X3Rlc3RpbmcuaApAQCAtMTkxLDE5ICsxOTEsMTkgQEAgY2xhc3MgVHJhY2tlZE9iamVjdCB7CiAg
IH5UcmFja2VkT2JqZWN0KCkgbm9leGNlcHQgeyBDb25zdHJ1Y3RvclRyYWNrZXI6Ok9iamVjdERl
c3RydWN0ZWQodGhpcyk7IH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBl
bmFtZSBPcGVyYXRpb24sIHR5cGVuYW1lIEludmFyaWFudD4KLWFic2w6Om9wdGlvbmFsPHRlc3Rp
bmc6OkFzc2VydGlvblJlc3VsdD4gVGVzdFNpbmdsZUludmFyaWFudEF0Q291bnRkb3duSW1wbCgK
K3RlbXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24sIHR5cGVuYW1l
IENvbnRyYWN0PgorYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0PiBUZXN0
U2luZ2xlQ29udHJhY3RBdENvdW50ZG93bkltcGwoCiAgICAgY29uc3QgRmFjdG9yeSYgZmFjdG9y
eSwgY29uc3QgT3BlcmF0aW9uJiBvcGVyYXRpb24sIGludCBjb3VudCwKLSAgICBjb25zdCBJbnZh
cmlhbnQmIGludmFyaWFudCkgeworICAgIGNvbnN0IENvbnRyYWN0JiBjb250cmFjdCkgewogICBh
dXRvIHRfcHRyID0gZmFjdG9yeSgpOwogICBhYnNsOjpvcHRpb25hbDx0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHQ+IGN1cnJlbnRfcmVzOwogICBTZXRDb3VudGRvd24oY291bnQpOwogICB0cnkgewog
ICAgIG9wZXJhdGlvbih0X3B0ci5nZXQoKSk7CiAgIH0gY2F0Y2ggKGNvbnN0IGV4Y2VwdGlvbnNf
aW50ZXJuYWw6OlRlc3RFeGNlcHRpb24mIGUpIHsKLSAgICBjdXJyZW50X3Jlcy5lbXBsYWNlKGlu
dmFyaWFudCh0X3B0ci5nZXQoKSkpOworICAgIGN1cnJlbnRfcmVzLmVtcGxhY2UoY29udHJhY3Qo
dF9wdHIuZ2V0KCkpKTsKICAgICBpZiAoIWN1cnJlbnRfcmVzLnZhbHVlKCkpIHsKLSAgICAgICpj
dXJyZW50X3JlcyA8PCBlLndoYXQoKSA8PCAiIGZhaWxlZCBpbnZhcmlhbnQgY2hlY2siOworICAg
ICAgKmN1cnJlbnRfcmVzIDw8IGUud2hhdCgpIDw8ICIgZmFpbGVkIGNvbnRyYWN0IGNoZWNrIjsK
ICAgICB9CiAgIH0KICAgVW5zZXRDb3VudGRvd24oKTsKQEAgLTIxMSwyMiArMjExLDIyIEBAIGFi
c2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4gVGVzdFNpbmdsZUludmFyaWFu
dEF0Q291bnRkb3duSW1wbCgKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZhY3RvcnksIHR5cGVu
YW1lIE9wZXJhdGlvbj4KLWFic2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4g
VGVzdFNpbmdsZUludmFyaWFudEF0Q291bnRkb3duSW1wbCgKK2Fic2w6Om9wdGlvbmFsPHRlc3Rp
bmc6OkFzc2VydGlvblJlc3VsdD4gVGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRvd25JbXBsKAog
ICAgIGNvbnN0IEZhY3RvcnkmIGZhY3RvcnksIGNvbnN0IE9wZXJhdGlvbiYgb3BlcmF0aW9uLCBp
bnQgY291bnQsCiAgICAgU3Ryb25nR3VhcmFudGVlVGFnVHlwZSkgewogICB1c2luZyBUUHRyID0g
dHlwZW5hbWUgZGVjbHR5cGUoZmFjdG9yeSgpKTo6cG9pbnRlcjsKICAgYXV0byB0X2lzX3N0cm9u
ZyA9IFsmXShUUHRyIHQpIHsgcmV0dXJuICp0ID09ICpmYWN0b3J5KCk7IH07Ci0gIHJldHVybiBU
ZXN0U2luZ2xlSW52YXJpYW50QXRDb3VudGRvd25JbXBsKGZhY3RvcnksIG9wZXJhdGlvbiwgY291
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRfaXNfc3Ry
b25nKTsKKyAgcmV0dXJuIFRlc3RTaW5nbGVDb250cmFjdEF0Q291bnRkb3duSW1wbChmYWN0b3J5
LCBvcGVyYXRpb24sIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRfaXNfc3Ryb25nKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEZhY3RvcnksIHR5
cGVuYW1lIE9wZXJhdGlvbiwgdHlwZW5hbWUgSW52YXJpYW50PgotaW50IFRlc3RTaW5nbGVJbnZh
cmlhbnRBdENvdW50ZG93bigKK3RlbXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBP
cGVyYXRpb24sIHR5cGVuYW1lIENvbnRyYWN0PgoraW50IFRlc3RTaW5nbGVDb250cmFjdEF0Q291
bnRkb3duKAogICAgIGNvbnN0IEZhY3RvcnkmIGZhY3RvcnksIGNvbnN0IE9wZXJhdGlvbiYgb3Bl
cmF0aW9uLCBpbnQgY291bnQsCi0gICAgY29uc3QgSW52YXJpYW50JiBpbnZhcmlhbnQsCisgICAg
Y29uc3QgQ29udHJhY3QmIGNvbnRyYWN0LAogICAgIGFic2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFz
c2VydGlvblJlc3VsdD4qIHJlZHVjZWRfcmVzKSB7CiAgIC8vIElmIHJlZHVjZWRfcmVzIGlzIGVt
cHR5LCBpdCBtZWFucyB0aGUgY3VycmVudCBjYWxsIHRvCi0gIC8vIFRlc3RTaW5nbGVJbnZhcmlh
bnRBdENvdW50ZG93biguLi4pIGlzIHRoZSBmaXJzdCB0ZXN0IGJlaW5nIHJ1biBzbyB3ZSBkbwor
ICAvLyBUZXN0U2luZ2xlQ29udHJhY3RBdENvdW50ZG93biguLi4pIGlzIHRoZSBmaXJzdCB0ZXN0
IGJlaW5nIHJ1biBzbyB3ZSBkbwogICAvLyB3YW50IHRvIHJ1biBpdC4gQWx0ZXJuYXRpdmVseSwg
aWYgaXQncyBub3QgZW1wdHkgKG1lYW5pbmcgYSBwcmV2aW91cyB0ZXN0CiAgIC8vIGhhcyBydW4p
IHdlIHdhbnQgdG8gY2hlY2sgaWYgaXQgcGFzc2VkLiBJZiB0aGUgcHJldmlvdXMgdGVzdCBkaWQg
cGFzcywgd2UKICAgLy8gd2FudCB0byBjb250aW5lIHJ1bm5pbmcgdGVzdHMgc28gd2UgZG8gd2Fu
dCB0byBydW4gdGhlIGN1cnJlbnQgb25lLiBJZiBpdApAQCAtMjM0LDIyICsyMzQsMjIgQEAgaW50
IFRlc3RTaW5nbGVJbnZhcmlhbnRBdENvdW50ZG93bigKICAgLy8gb3V0cHV0LiBJZiB0aGF0J3Mg
dGhlIGNhc2UsIHdlIGRvIG5vdCBydW4gdGhlIGN1cnJlbnQgdGVzdCBhbmQgaW5zdGVhZCB3ZQog
ICAvLyBzaW1wbHkgcmV0dXJuLgogICBpZiAoIXJlZHVjZWRfcmVzLT5oYXNfdmFsdWUoKSB8fCBy
ZWR1Y2VkX3Jlcy0+dmFsdWUoKSkgewotICAgICpyZWR1Y2VkX3JlcyA9IFRlc3RTaW5nbGVJbnZh
cmlhbnRBdENvdW50ZG93bkltcGwoZmFjdG9yeSwgb3BlcmF0aW9uLCBjb3VudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFyaWFudCk7
CisgICAgKnJlZHVjZWRfcmVzID0KKyAgICAgICAgVGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRv
d25JbXBsKGZhY3RvcnksIG9wZXJhdGlvbiwgY291bnQsIGNvbnRyYWN0KTsKICAgfQogICByZXR1
cm4gMDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEZhY3RvcnksIHR5cGVuYW1lIE9wZXJhdGlv
biwgdHlwZW5hbWUuLi4gSW52YXJpYW50cz4KLWlubGluZSBhYnNsOjpvcHRpb25hbDx0ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHQ+IFRlc3RBbGxJbnZhcmlhbnRzQXRDb3VudGRvd24oCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBlbmFtZS4uLiBDb250
cmFjdHM+CitpbmxpbmUgYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0PiBU
ZXN0QWxsQ29udHJhY3RzQXRDb3VudGRvd24oCiAgICAgY29uc3QgRmFjdG9yeSYgZmFjdG9yeSwg
Y29uc3QgT3BlcmF0aW9uJiBvcGVyYXRpb24sIGludCBjb3VudCwKLSAgICBjb25zdCBJbnZhcmlh
bnRzJi4uLiBpbnZhcmlhbnRzKSB7CisgICAgY29uc3QgQ29udHJhY3RzJi4uLiBjb250cmFjdHMp
IHsKICAgYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0PiByZWR1Y2VkX3Jl
czsKIAogICAvLyBSdW4gZWFjaCBjaGVja2VyLCBzaG9ydCBjaXJjdWl0aW5nIGFmdGVyIHRoZSBm
aXJzdCBmYWlsdXJlCiAgIGludCBkdW1teVtdID0gewotICAgICAgMCwgKFRlc3RTaW5nbGVJbnZh
cmlhbnRBdENvdW50ZG93bihmYWN0b3J5LCBvcGVyYXRpb24sIGNvdW50LCBpbnZhcmlhbnRzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVkdWNlZF9yZXMpKS4u
Ln07CisgICAgICAwLCAoVGVzdFNpbmdsZUNvbnRyYWN0QXRDb3VudGRvd24oZmFjdG9yeSwgb3Bl
cmF0aW9uLCBjb3VudCwgY29udHJhY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZyZWR1Y2VkX3JlcykpLi4ufTsKICAgc3RhdGljX2Nhc3Q8dm9pZD4oZHVtbXkp
OwogICByZXR1cm4gcmVkdWNlZF9yZXM7CiB9CkBAIC04NTgsNyArODU4LDcgQEAgdGVzdGluZzo6
QXNzZXJ0aW9uUmVzdWx0IFRlc3ROb3Rocm93T3AoY29uc3QgT3BlcmF0aW9uJiBvcGVyYXRpb24p
IHsKICAgdHJ5IHsKICAgICBvcGVyYXRpb24oKTsKICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uU3VjY2VzcygpOwotICB9IGNhdGNoIChleGNlcHRpb25zX2ludGVybmFsOjpUZXN0RXhjZXB0
aW9uKSB7CisgIH0gY2F0Y2ggKGNvbnN0IGV4Y2VwdGlvbnNfaW50ZXJuYWw6OlRlc3RFeGNlcHRp
b24mKSB7CiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQogICAgICAgICAg
ICA8PCAiVGVzdEV4Y2VwdGlvbiB0aHJvd24gZHVyaW5nIGNhbGwgdG8gb3BlcmF0aW9uKCkgd2hl
biBub3Rocm93ICIKICAgICAgICAgICAgICAgImd1YXJhbnRlZSB3YXMgZXhwZWN0ZWQuIjsKQEAg
LTg4NCwxNSArODg0LDE1IEBAIGNsYXNzIERlZmF1bHRGYWN0b3J5IHsKICAgVCB0XzsKIH07CiAK
LXRlbXBsYXRlIDxzaXplX3QgTGF6eUludmFyaWFudHNDb3VudCwgdHlwZW5hbWUgTGF6eUZhY3Rv
cnksCit0ZW1wbGF0ZSA8c2l6ZV90IExhenlDb250cmFjdHNDb3VudCwgdHlwZW5hbWUgTGF6eUZh
Y3RvcnksCiAgICAgICAgICAgdHlwZW5hbWUgTGF6eU9wZXJhdGlvbj4KIHVzaW5nIEVuYWJsZUlm
VGVzdGFibGUgPSB0eXBlbmFtZSBhYnNsOjplbmFibGVfaWZfdDwKLSAgICBMYXp5SW52YXJpYW50
c0NvdW50ICE9IDAgJiYKKyAgICBMYXp5Q29udHJhY3RzQ291bnQgIT0gMCAmJgogICAgICFzdGQ6
OmlzX3NhbWU8TGF6eUZhY3RvcnksIFVuaW5pdGlhbGl6ZWRUPjo6dmFsdWUgJiYKICAgICAhc3Rk
Ojppc19zYW1lPExhenlPcGVyYXRpb24sIFVuaW5pdGlhbGl6ZWRUPjo6dmFsdWU+OwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSA9IFVuaW5pdGlhbGl6ZWRULAotICAgICAgICAgIHR5cGVu
YW1lIE9wZXJhdGlvbiA9IFVuaW5pdGlhbGl6ZWRULCB0eXBlbmFtZS4uLiBJbnZhcmlhbnRzPgor
ICAgICAgICAgIHR5cGVuYW1lIE9wZXJhdGlvbiA9IFVuaW5pdGlhbGl6ZWRULCB0eXBlbmFtZS4u
LiBDb250cmFjdHM+CiBjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0ZXI7CiAKIH0gIC8vIG5hbWVz
cGFjZSBleGNlcHRpb25zX2ludGVybmFsCkBAIC05MDMsNyArOTAzLDcgQEAgbmFtZXNwYWNlIGV4
Y2VwdGlvbnNfaW50ZXJuYWwgewogCiAvKgogICogQnVpbGRzIGEgdGVzdGVyIG9iamVjdCB0aGF0
IHRlc3RzIGlmIHBlcmZvcm1pbmcgYSBvcGVyYXRpb24gb24gYSBUIGZvbGxvd3MKLSAqIGV4Y2Vw
dGlvbiBzYWZldHkgZ3VhcmFudGVlcy4gVmVyaWZpY2F0aW9uIGlzIGRvbmUgdmlhIGludmFyaWFu
dCBhc3NlcnRpb24KKyAqIGV4Y2VwdGlvbiBzYWZldHkgZ3VhcmFudGVlcy4gVmVyaWZpY2F0aW9u
IGlzIGRvbmUgdmlhIGNvbnRyYWN0IGFzc2VydGlvbgogICogY2FsbGJhY2tzIGFwcGxpZWQgdG8g
VCBpbnN0YW5jZXMgcG9zdC10aHJvdy4KICAqCiAgKiBUZW1wbGF0ZSBwYXJhbWV0ZXJzIGZvciBF
eGNlcHRpb25TYWZldHlUZXN0ZXI6CkBAIC05MjEsMTggKzkyMSwxOCBAQCBuYW1lc3BhY2UgZXhj
ZXB0aW9uc19pbnRlcm5hbCB7CiAgKiAgIGZyZXNoIFQgaW5zdGFuY2Ugc28gaXQncyBmcmVlIHRv
IG1vZGlmeSBhbmQgZGVzdHJveSB0aGUgVCBpbnN0YW5jZXMgYXMgaXQKICAqICAgcGxlYXNlcy4K
ICAqCi0gKiAtIEludmFyaWFudHMuLi46IFRoZSBpbnZhcmlhbnQgYXNzZXJ0aW9uIGNhbGxiYWNr
IG9iamVjdHMgKHBhc3NlZCBpbiB2aWEKLSAqICAgdGVzdGVyLldpdGhJbnZhcmlhbnRzKC4uLikp
IG11c3QgYmUgaW52b2NhYmxlIHdpdGggdGhlIHNpZ25hdHVyZQorICogLSBDb250cmFjdHMuLi46
IFRoZSBjb250cmFjdCBhc3NlcnRpb24gY2FsbGJhY2sgb2JqZWN0cyAocGFzc2VkIGluIHZpYQor
ICogICB0ZXN0ZXIuV2l0aENvbnRyYWN0cyguLi4pKSBtdXN0IGJlIGludm9jYWJsZSB3aXRoIHRo
ZSBzaWduYXR1cmUKICAqICAgYHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBvcGVyYXRvcigpKFQq
KSBjb25zdGAgd2hlcmUgVCBpcyB0aGUgdHlwZSBiZWluZwotICogICB0ZXN0ZWQuIEludmFyaWFu
dCBhc3NlcnRpb24gY2FsbGJhY2tzIGFyZSBwcm92aWRlZCBUIGluc3RhbmNlcyBwb3N0LXRocm93
LgotICogICBUaGV5IG11c3QgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3Mgd2hlbiB0
aGUgdHlwZSBpbnZhcmlhbnRzIG9mIHRoZQotICogICBwcm92aWRlZCBUIGluc3RhbmNlIGhvbGQu
IElmIHRoZSB0eXBlIGludmFyaWFudHMgb2YgdGhlIFQgaW5zdGFuY2UgZG8gbm90CisgKiAgIHRl
c3RlZC4gQ29udHJhY3QgYXNzZXJ0aW9uIGNhbGxiYWNrcyBhcmUgcHJvdmlkZWQgVCBpbnN0YW5j
ZXMgcG9zdC10aHJvdy4KKyAqICAgVGhleSBtdXN0IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25T
dWNjZXNzIHdoZW4gdGhlIHR5cGUgY29udHJhY3RzIG9mIHRoZQorICogICBwcm92aWRlZCBUIGlu
c3RhbmNlIGhvbGQuIElmIHRoZSB0eXBlIGNvbnRyYWN0cyBvZiB0aGUgVCBpbnN0YW5jZSBkbyBu
b3QKICAqICAgaG9sZCwgdGhleSBtdXN0IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJl
LiBFeGVjdXRpb24gb3JkZXIgb2YKLSAqICAgSW52YXJpYW50cy4uLiBpcyB1bnNwZWNpZmllZC4g
VGhleSB3aWxsIGVhY2ggaW5kaXZpZHVhbGx5IGdldCBhIGZyZXNoIFQKKyAqICAgQ29udHJhY3Rz
Li4uIGlzIHVuc3BlY2lmaWVkLiBUaGV5IHdpbGwgZWFjaCBpbmRpdmlkdWFsbHkgZ2V0IGEgZnJl
c2ggVAogICogICBpbnN0YW5jZSBzbyB0aGV5IGFyZSBmcmVlIHRvIG1vZGlmeSBhbmQgZGVzdHJv
eSB0aGUgVCBpbnN0YW5jZXMgYXMgdGhleQogICogICBwbGVhc2UuCiAgKi8KLXRlbXBsYXRlIDx0
eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24sIHR5cGVuYW1lLi4uIEludmFyaWFu
dHM+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBl
bmFtZS4uLiBDb250cmFjdHM+CiBjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0ZXIgewogIHB1Ymxp
YzoKICAgLyoKQEAgLTk0OCw3ICs5NDgsNyBAQCBjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0ZXIg
ewogICAgKiAgIHRlc3Rlci5XaXRoRmFjdG9yeSguLi4pLgogICAgKi8KICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gIEV4Y2VwdGlvblNhZmV0eVRlc3RlcjxEZWZhdWx0RmFjdG9yeTxUPiwgT3Bl
cmF0aW9uLCBJbnZhcmlhbnRzLi4uPgorICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8RGVmYXVsdEZh
Y3Rvcnk8VD4sIE9wZXJhdGlvbiwgQ29udHJhY3RzLi4uPgogICBXaXRoSW5pdGlhbFZhbHVlKGNv
bnN0IFQmIHQpIGNvbnN0IHsKICAgICByZXR1cm4gV2l0aEZhY3RvcnkoRGVmYXVsdEZhY3Rvcnk8
VD4odCkpOwogICB9CkBAIC05NjEsOSArOTYxLDkgQEAgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVz
dGVyIHsKICAgICogbWV0aG9kIHRlc3Rlci5XaXRoSW5pdGlhbFZhbHVlKC4uLikuCiAgICAqLwog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTmV3RmFjdG9yeT4KLSAgRXhjZXB0aW9uU2FmZXR5VGVzdGVy
PGFic2w6OmRlY2F5X3Q8TmV3RmFjdG9yeT4sIE9wZXJhdGlvbiwgSW52YXJpYW50cy4uLj4KKyAg
RXhjZXB0aW9uU2FmZXR5VGVzdGVyPGFic2w6OmRlY2F5X3Q8TmV3RmFjdG9yeT4sIE9wZXJhdGlv
biwgQ29udHJhY3RzLi4uPgogICBXaXRoRmFjdG9yeShjb25zdCBOZXdGYWN0b3J5JiBuZXdfZmFj
dG9yeSkgY29uc3QgewotICAgIHJldHVybiB7bmV3X2ZhY3RvcnksIG9wZXJhdGlvbl8sIGludmFy
aWFudHNffTsKKyAgICByZXR1cm4ge25ld19mYWN0b3J5LCBvcGVyYXRpb25fLCBjb250cmFjdHNf
fTsKICAgfQogCiAgIC8qCkBAIC05NzIsMzkgKzk3MiwzOSBAQCBjbGFzcyBFeGNlcHRpb25TYWZl
dHlUZXN0ZXIgewogICAgKiB0ZXN0ZXIuCiAgICAqLwogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTmV3
T3BlcmF0aW9uPgotICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8RmFjdG9yeSwgYWJzbDo6ZGVjYXlf
dDxOZXdPcGVyYXRpb24+LCBJbnZhcmlhbnRzLi4uPgorICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8
RmFjdG9yeSwgYWJzbDo6ZGVjYXlfdDxOZXdPcGVyYXRpb24+LCBDb250cmFjdHMuLi4+CiAgIFdp
dGhPcGVyYXRpb24oY29uc3QgTmV3T3BlcmF0aW9uJiBuZXdfb3BlcmF0aW9uKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIHtmYWN0b3J5XywgbmV3X29wZXJhdGlvbiwgaW52YXJpYW50c199OworICAgIHJl
dHVybiB7ZmFjdG9yeV8sIG5ld19vcGVyYXRpb24sIGNvbnRyYWN0c199OwogICB9CiAKICAgLyoK
LSAgICogUmV0dXJucyBhIG5ldyBFeGNlcHRpb25TYWZldHlUZXN0ZXIgd2l0aCB0aGUgcHJvdmlk
ZWQgTW9yZUludmFyaWFudHMuLi4KLSAgICogY29tYmluZWQgd2l0aCB0aGUgSW52YXJpYW50cy4u
LiB0aGF0IHdlcmUgYWxyZWFkeSBpbmNsdWRlZCBpbiB0aGUgaW5zdGFuY2UKLSAgICogb24gd2hp
Y2ggdGhlIG1ldGhvZCB3YXMgY2FsbGVkLiBJbnZhcmlhbnRzLi4uIGNhbm5vdCBiZSByZW1vdmVk
IG9yIHJlcGxhY2VkCisgICAqIFJldHVybnMgYSBuZXcgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHdp
dGggdGhlIHByb3ZpZGVkIE1vcmVDb250cmFjdHMuLi4KKyAgICogY29tYmluZWQgd2l0aCB0aGUg
Q29udHJhY3RzLi4uIHRoYXQgd2VyZSBhbHJlYWR5IGluY2x1ZGVkIGluIHRoZSBpbnN0YW5jZQor
ICAgKiBvbiB3aGljaCB0aGUgbWV0aG9kIHdhcyBjYWxsZWQuIENvbnRyYWN0cy4uLiBjYW5ub3Qg
YmUgcmVtb3ZlZCBvciByZXBsYWNlZAogICAgKiBvbmNlIGFkZGVkIHRvIGFuIEV4Y2VwdGlvblNh
ZmV0eVRlc3RlciBpbnN0YW5jZS4gQSBmcmVzaCBvYmplY3QgbXVzdCBiZQotICAgKiBjcmVhdGVk
IGluIG9yZGVyIHRvIGdldCBhbiBlbXB0eSBJbnZhcmlhbnRzLi4uIGxpc3QuCisgICAqIGNyZWF0
ZWQgaW4gb3JkZXIgdG8gZ2V0IGFuIGVtcHR5IENvbnRyYWN0cy4uLiBsaXN0LgogICAgKgotICAg
KiBJbiBhZGRpdGlvbiB0byBwYXNzaW5nIGluIGN1c3RvbSBpbnZhcmlhbnQgYXNzZXJ0aW9uIGNh
bGxiYWNrcywgdGhpcyBtZXRob2QKKyAgICogSW4gYWRkaXRpb24gdG8gcGFzc2luZyBpbiBjdXN0
b20gY29udHJhY3QgYXNzZXJ0aW9uIGNhbGxiYWNrcywgdGhpcyBtZXRob2QKICAgICogYWNjZXB0
cyBgdGVzdGluZzo6c3Ryb25nX2d1YXJhbnRlZWAgYXMgYW4gYXJndW1lbnQgd2hpY2ggY2hlY2tz
IFQgaW5zdGFuY2VzCiAgICAqIHBvc3QtdGhyb3cgYWdhaW5zdCBmcmVzaGx5IGNyZWF0ZWQgVCBp
bnN0YW5jZXMgdmlhIG9wZXJhdG9yPT0gdG8gdmVyaWZ5CiAgICAqIHRoYXQgYW55IHN0YXRlIGNo
YW5nZXMgbWFkZSBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgb3BlcmF0aW9uIHdlcmUKICAg
ICogcHJvcGVybHkgcm9sbGVkIGJhY2suCiAgICAqLwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
TW9yZUludmFyaWFudHM+Ci0gIEV4Y2VwdGlvblNhZmV0eVRlc3RlcjxGYWN0b3J5LCBPcGVyYXRp
b24sIEludmFyaWFudHMuLi4sCi0gICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpkZWNheV90
PE1vcmVJbnZhcmlhbnRzPi4uLj4KLSAgV2l0aEludmFyaWFudHMoY29uc3QgTW9yZUludmFyaWFu
dHMmLi4uIG1vcmVfaW52YXJpYW50cykgY29uc3QgewotICAgIHJldHVybiB7ZmFjdG9yeV8sIG9w
ZXJhdGlvbl8sCi0gICAgICAgICAgICBzdGQ6OnR1cGxlX2NhdChpbnZhcmlhbnRzXywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dHVwbGU8YWJzbDo6ZGVjYXlfdDxNb3JlSW52YXJp
YW50cz4uLi4+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfaW52YXJpYW50
cy4uLikpfTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIE1vcmVDb250cmFjdHM+CisgIEV4Y2Vw
dGlvblNhZmV0eVRlc3RlcjxGYWN0b3J5LCBPcGVyYXRpb24sIENvbnRyYWN0cy4uLiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFic2w6OmRlY2F5X3Q8TW9yZUNvbnRyYWN0cz4uLi4+CisgIFdp
dGhDb250cmFjdHMoY29uc3QgTW9yZUNvbnRyYWN0cyYuLi4gbW9yZV9jb250cmFjdHMpIGNvbnN0
IHsKKyAgICByZXR1cm4geworICAgICAgICBmYWN0b3J5Xywgb3BlcmF0aW9uXywKKyAgICAgICAg
c3RkOjp0dXBsZV9jYXQoY29udHJhY3RzXywgc3RkOjp0dXBsZTxhYnNsOjpkZWNheV90PE1vcmVD
b250cmFjdHM+Li4uPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
cmVfY29udHJhY3RzLi4uKSl9OwogICB9CiAKICAgLyoKICAgICogUmV0dXJucyBhIHRlc3Rpbmc6
OkFzc2VydGlvblJlc3VsdCB0aGF0IGlzIHRoZSByZWR1Y2VkIHJlc3VsdCBvZiB0aGUKICAgICog
ZXhjZXB0aW9uIHNhZmV0eSBhbGdvcml0aG0uIFRoZSBhbGdvcml0aG0gc2hvcnQgY2lyY3VpdHMg
YW5kIHJldHVybnMKLSAgICogQXNzZXJ0aW9uRmFpbHVyZSBhZnRlciB0aGUgZmlyc3QgaW52YXJp
YW50IGNhbGxiYWNrIHJldHVybnMgYW4KLSAgICogQXNzZXJ0aW9uRmFpbHVyZS4gT3RoZXJ3aXNl
LCBpZiBhbGwgaW52YXJpYW50IGNhbGxiYWNrcyByZXR1cm4gYW4KKyAgICogQXNzZXJ0aW9uRmFp
bHVyZSBhZnRlciB0aGUgZmlyc3QgY29udHJhY3QgY2FsbGJhY2sgcmV0dXJucyBhbgorICAgKiBB
c3NlcnRpb25GYWlsdXJlLiBPdGhlcndpc2UsIGlmIGFsbCBjb250cmFjdCBjYWxsYmFja3MgcmV0
dXJuIGFuCiAgICAqIEFzc2VydGlvblN1Y2Nlc3MsIHRoZSByZWR1Y2VkIHJlc3VsdCBpcyBBc3Nl
cnRpb25TdWNjZXNzLgogICAgKgogICAgKiBUaGUgcGFzc2VkLWluIHRlc3RhYmxlIG9wZXJhdGlv
biB3aWxsIG5vdCBiZSBzYXZlZCBpbiBhIG5ldyB0ZXN0ZXIgaW5zdGFuY2UKQEAgLTEwMTMsMzMg
KzEwMTMsMzMgQEAgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKICAgICoKICAgICogUHJl
Y29uZGl0aW9ucyBmb3IgdGVzdGVyLlRlc3QoY29uc3QgTmV3T3BlcmF0aW9uJiBuZXdfb3BlcmF0
aW9uKToKICAgICoKLSAgICogLSBNYXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYXQgbGVhc3Qgb25l
IGludmFyaWFudCBhc3NlcnRpb24gY2FsbGJhY2sgYW5kIGEKKyAgICogLSBNYXkgb25seSBiZSBj
YWxsZWQgYWZ0ZXIgYXQgbGVhc3Qgb25lIGNvbnRyYWN0IGFzc2VydGlvbiBjYWxsYmFjayBhbmQg
YQogICAgKiAgIGZhY3Rvcnkgb3IgaW5pdGlhbCB2YWx1ZSBoYXZlIGJlZW4gcHJvdmlkZWQuCiAg
ICAqLwogICB0ZW1wbGF0ZSA8CiAgICAgICB0eXBlbmFtZSBOZXdPcGVyYXRpb24sCi0gICAgICB0
eXBlbmFtZSA9IEVuYWJsZUlmVGVzdGFibGU8c2l6ZW9mLi4uKEludmFyaWFudHMpLCBGYWN0b3J5
LCBOZXdPcGVyYXRpb24+PgorICAgICAgdHlwZW5hbWUgPSBFbmFibGVJZlRlc3RhYmxlPHNpemVv
Zi4uLihDb250cmFjdHMpLCBGYWN0b3J5LCBOZXdPcGVyYXRpb24+PgogICB0ZXN0aW5nOjpBc3Nl
cnRpb25SZXN1bHQgVGVzdChjb25zdCBOZXdPcGVyYXRpb24mIG5ld19vcGVyYXRpb24pIGNvbnN0
IHsKLSAgICByZXR1cm4gVGVzdEltcGwobmV3X29wZXJhdGlvbiwgYWJzbDo6aW5kZXhfc2VxdWVu
Y2VfZm9yPEludmFyaWFudHMuLi4+KCkpOworICAgIHJldHVybiBUZXN0SW1wbChuZXdfb3BlcmF0
aW9uLCBhYnNsOjppbmRleF9zZXF1ZW5jZV9mb3I8Q29udHJhY3RzLi4uPigpKTsKICAgfQogCiAg
IC8qCiAgICAqIFJldHVybnMgYSB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgdGhhdCBpcyB0aGUg
cmVkdWNlZCByZXN1bHQgb2YgdGhlCiAgICAqIGV4Y2VwdGlvbiBzYWZldHkgYWxnb3JpdGhtLiBU
aGUgYWxnb3JpdGhtIHNob3J0IGNpcmN1aXRzIGFuZCByZXR1cm5zCi0gICAqIEFzc2VydGlvbkZh
aWx1cmUgYWZ0ZXIgdGhlIGZpcnN0IGludmFyaWFudCBjYWxsYmFjayByZXR1cm5zIGFuCi0gICAq
IEFzc2VydGlvbkZhaWx1cmUuIE90aGVyd2lzZSwgaWYgYWxsIGludmFyaWFudCBjYWxsYmFja3Mg
cmV0dXJuIGFuCisgICAqIEFzc2VydGlvbkZhaWx1cmUgYWZ0ZXIgdGhlIGZpcnN0IGNvbnRyYWN0
IGNhbGxiYWNrIHJldHVybnMgYW4KKyAgICogQXNzZXJ0aW9uRmFpbHVyZS4gT3RoZXJ3aXNlLCBp
ZiBhbGwgY29udHJhY3QgY2FsbGJhY2tzIHJldHVybiBhbgogICAgKiBBc3NlcnRpb25TdWNjZXNz
LCB0aGUgcmVkdWNlZCByZXN1bHQgaXMgQXNzZXJ0aW9uU3VjY2Vzcy4KICAgICoKICAgICogUHJl
Y29uZGl0aW9ucyBmb3IgdGVzdGVyLlRlc3QoKToKICAgICoKLSAgICogLSBNYXkgb25seSBiZSBj
YWxsZWQgYWZ0ZXIgYXQgbGVhc3Qgb25lIGludmFyaWFudCBhc3NlcnRpb24gY2FsbGJhY2ssIGEK
KyAgICogLSBNYXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYXQgbGVhc3Qgb25lIGNvbnRyYWN0IGFz
c2VydGlvbiBjYWxsYmFjaywgYQogICAgKiAgIGZhY3Rvcnkgb3IgaW5pdGlhbCB2YWx1ZSBhbmQg
YSB0ZXN0YWJsZSBvcGVyYXRpb24gaGF2ZSBiZWVuIHByb3ZpZGVkLgogICAgKi8KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIExhenlPcGVyYXRpb24gPSBPcGVyYXRpb24sCi0gICAgICAgICAgICB0eXBl
bmFtZSA9Ci0gICAgICAgICAgICAgICAgRW5hYmxlSWZUZXN0YWJsZTxzaXplb2YuLi4oSW52YXJp
YW50cyksIEZhY3RvcnksIExhenlPcGVyYXRpb24+PgorICB0ZW1wbGF0ZSA8CisgICAgICB0eXBl
bmFtZSBMYXp5T3BlcmF0aW9uID0gT3BlcmF0aW9uLAorICAgICAgdHlwZW5hbWUgPSBFbmFibGVJ
ZlRlc3RhYmxlPHNpemVvZi4uLihDb250cmFjdHMpLCBGYWN0b3J5LCBMYXp5T3BlcmF0aW9uPj4K
ICAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFRlc3QoKSBjb25zdCB7Ci0gICAgcmV0dXJuIFRl
c3RJbXBsKG9wZXJhdGlvbl8sIGFic2w6OmluZGV4X3NlcXVlbmNlX2ZvcjxJbnZhcmlhbnRzLi4u
PigpKTsKKyAgICByZXR1cm4gVGVzdEltcGwob3BlcmF0aW9uXywgYWJzbDo6aW5kZXhfc2VxdWVu
Y2VfZm9yPENvbnRyYWN0cy4uLj4oKSk7CiAgIH0KIAogIHByaXZhdGU6CkBAIC0xMDUxLDggKzEw
NTEsOCBAQCBjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0ZXIgewogICBFeGNlcHRpb25TYWZldHlU
ZXN0ZXIoKSB7fQogCiAgIEV4Y2VwdGlvblNhZmV0eVRlc3Rlcihjb25zdCBGYWN0b3J5JiBmLCBj
b25zdCBPcGVyYXRpb24mIG8sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnR1
cGxlPEludmFyaWFudHMuLi4+JiBpKQotICAgICAgOiBmYWN0b3J5XyhmKSwgb3BlcmF0aW9uXyhv
KSwgaW52YXJpYW50c18oaSkge30KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
dHVwbGU8Q29udHJhY3RzLi4uPiYgaSkKKyAgICAgIDogZmFjdG9yeV8oZiksIG9wZXJhdGlvbl8o
byksIGNvbnRyYWN0c18oaSkge30KIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0ZWRPcGVy
YXRpb24sIHNpemVfdC4uLiBJbmRpY2VzPgogICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgVGVz
dEltcGwoY29uc3QgU2VsZWN0ZWRPcGVyYXRpb24mIHNlbGVjdGVkX29wZXJhdGlvbiwKQEAgLTEw
NjQsMjggKzEwNjQsMjggQEAgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKIAogICAgICAg
Ly8gUnVuIHRoZSBmdWxsIGV4Y2VwdGlvbiBzYWZldHkgdGVzdCBhbGdvcml0aG0gZm9yIHRoZSBj
dXJyZW50IGNvdW50ZG93bgogICAgICAgYXV0byByZWR1Y2VkX3JlcyA9Ci0gICAgICAgICAgVGVz
dEFsbEludmFyaWFudHNBdENvdW50ZG93bihmYWN0b3J5Xywgc2VsZWN0ZWRfb3BlcmF0aW9uLCBj
b3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Z2V0PElu
ZGljZXM+KGludmFyaWFudHNfKS4uLik7Ci0gICAgICAvLyBJZiB0aGVyZSBpcyBubyB2YWx1ZSBp
biB0aGUgb3B0aW9uYWwsIG5vIGludmFyaWFudHMgd2VyZSBydW4gYmVjYXVzZSBubworICAgICAg
ICAgIFRlc3RBbGxDb250cmFjdHNBdENvdW50ZG93bihmYWN0b3J5Xywgc2VsZWN0ZWRfb3BlcmF0
aW9uLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpn
ZXQ8SW5kaWNlcz4oY29udHJhY3RzXykuLi4pOworICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gdmFs
dWUgaW4gdGhlIG9wdGlvbmFsLCBubyBjb250cmFjdHMgd2VyZSBydW4gYmVjYXVzZSBubwogICAg
ICAgLy8gZXhjZXB0aW9uIHdhcyB0aHJvd24uIFRoaXMgbWVhbnMgdGhhdCB0aGUgdGVzdCBpcyBj
b21wbGV0ZSBhbmQgdGhlIGxvb3AKICAgICAgIC8vIGNhbiBleGl0IHN1Y2Nlc3NmdWxseS4KICAg
ICAgIGlmICghcmVkdWNlZF9yZXMuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgcmV0dXJuIHRlc3Rp
bmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKICAgICAgIH0KLSAgICAgIC8vIElmIHRoZSBvcHRpb25h
bCBpcyBub3QgZW1wdHkgYW5kIHRoZSB2YWx1ZSBpcyBmYWxzeSwgYW4gaW52YXJpYW50IGNoZWNr
CisgICAgICAvLyBJZiB0aGUgb3B0aW9uYWwgaXMgbm90IGVtcHR5IGFuZCB0aGUgdmFsdWUgaXMg
ZmFsc3ksIGFuIGNvbnRyYWN0IGNoZWNrCiAgICAgICAvLyBmYWlsZWQgc28gdGhlIHRlc3QgbXVz
dCBleGl0IHRvIHByb3BlZ2F0ZSB0aGUgZmFpbHVyZS4KICAgICAgIGlmICghcmVkdWNlZF9yZXMu
dmFsdWUoKSkgewogICAgICAgICByZXR1cm4gcmVkdWNlZF9yZXMudmFsdWUoKTsKICAgICAgIH0K
ICAgICAgIC8vIElmIHRoZSBvcHRpb25hbCBpcyBub3QgZW1wdHkgYW5kIHRoZSB2YWx1ZSBpcyBu
b3QgZmFsc3ksIGl0IG1lYW5zCi0gICAgICAvLyBleGNlcHRpb25zIHdlcmUgdGhyb3duIGJ1dCB0
aGUgaW52YXJpYW50cyBwYXNzZWQgc28gdGhlIHRlc3QgbXVzdAorICAgICAgLy8gZXhjZXB0aW9u
cyB3ZXJlIHRocm93biBidXQgdGhlIGNvbnRyYWN0cyBwYXNzZWQgc28gdGhlIHRlc3QgbXVzdAog
ICAgICAgLy8gY29udGludWUgdG8gcnVuLgogICAgIH0KICAgfQogCiAgIEZhY3RvcnkgZmFjdG9y
eV87CiAgIE9wZXJhdGlvbiBvcGVyYXRpb25fOwotICBzdGQ6OnR1cGxlPEludmFyaWFudHMuLi4+
IGludmFyaWFudHNfOworICBzdGQ6OnR1cGxlPENvbnRyYWN0cy4uLj4gY29udHJhY3RzXzsKIH07
CiAKIH0gIC8vIG5hbWVzcGFjZSBleGNlcHRpb25zX2ludGVybmFsCkBAIC0xMDk2LDcgKzEwOTYs
NyBAQCBjbGFzcyBFeGNlcHRpb25TYWZldHlUZXN0ZXIgewogICogaW5zdGFuY2VzIG9mIEV4Y2Vw
dGlvblNhZmV0eVRlc3Rlci4KICAqCiAgKiBJbiBvcmRlciB0byB0ZXN0IGEgVCBmb3IgZXhjZXB0
aW9uIHNhZmV0eSwgYSBmYWN0b3J5IGZvciB0aGF0IFQsIGEgdGVzdGFibGUKLSAqIG9wZXJhdGlv
biwgYW5kIGF0IGxlYXN0IG9uZSBpbnZhcmlhbnQgY2FsbGJhY2sgcmV0dXJuaW5nIGFuIGFzc2Vy
dGlvbgorICogb3BlcmF0aW9uLCBhbmQgYXQgbGVhc3Qgb25lIGNvbnRyYWN0IGNhbGxiYWNrIHJl
dHVybmluZyBhbiBhc3NlcnRpb24KICAqIHJlc3VsdCBtdXN0IGJlIGFwcGxpZWQgdXNpbmcgdGhl
IHJlc3BlY3RpdmUgbWV0aG9kcy4KICAqLwogaW5saW5lIGV4Y2VwdGlvbnNfaW50ZXJuYWw6OkV4
Y2VwdGlvblNhZmV0eVRlc3Rlcjw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xv
d19sZXZlbF9hbGxvYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmNj
CmluZGV4IDA2MjZjZDU0NzhkOTcwMDRlYjFlOWNkZTIxNWE5MGU0ODYyZDI5ZjEuLjE1OWY5NDVm
NWVkZDA3MDc4ZjhjYWZjZWE4YjM3MzBhM2U4YzcxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvbG93
X2xldmVsX2FsbG9jLmNjCkBAIC00MDEsMTYgKzQwMSwyMCBAQCBib29sIExvd0xldmVsQWxsb2M6
OkRlbGV0ZUFyZW5hKEFyZW5hICphcmVuYSkgewogICAgIEFCU0xfUkFXX0NIRUNLKG11bm1hcF9y
ZXN1bHQgIT0gMCwKICAgICAgICAgICAgICAgICAgICAiTG93TGV2ZWxBbGxvYzo6RGVsZXRlQXJl
bmE6IFZpdHVhbEZyZWUgZmFpbGVkIik7CiAjZWxzZQorI2lmbmRlZiBBQlNMX0xPV19MRVZFTF9B
TExPQ19BU1lOQ19TSUdOQUxfU0FGRV9NSVNTSU5HCiAgICAgaWYgKChhcmVuYS0+ZmxhZ3MgJiBM
b3dMZXZlbEFsbG9jOjprQXN5bmNTaWduYWxTYWZlKSA9PSAwKSB7CiAgICAgICBtdW5tYXBfcmVz
dWx0ID0gbXVubWFwKHJlZ2lvbiwgc2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgIG11bm1hcF9y
ZXN1bHQgPSBiYXNlX2ludGVybmFsOjpEaXJlY3RNdW5tYXAocmVnaW9uLCBzaXplKTsKICAgICB9
CisjZWxzZQorICAgIG11bm1hcF9yZXN1bHQgPSBtdW5tYXAocmVnaW9uLCBzaXplKTsKKyNlbmRp
ZiAgLy8gQUJTTF9MT1dfTEVWRUxfQUxMT0NfQVNZTkNfU0lHTkFMX1NBRkVfTUlTU0lORwogICAg
IGlmIChtdW5tYXBfcmVzdWx0ICE9IDApIHsKICAgICAgIEFCU0xfUkFXX0xPRyhGQVRBTCwgIkxv
d0xldmVsQWxsb2M6OkRlbGV0ZUFyZW5hOiBtdW5tYXAgZmFpbGVkOiAlZCIsCiAgICAgICAgICAg
ICAgICAgICAgZXJybm8pOwogICAgIH0KLSNlbmRpZgorI2VuZGlmICAvLyBfV0lOMzIKICAgfQog
ICBzZWN0aW9uLkxlYXZlKCk7CiAgIGFyZW5hLT5+QXJlbmEoKTsKQEAgLTU0NSw2ICs1NDksNyBA
QCBzdGF0aWMgdm9pZCAqRG9BbGxvY1dpdGhBcmVuYShzaXplX3QgcmVxdWVzdCwgTG93TGV2ZWxB
bGxvYzo6QXJlbmEgKmFyZW5hKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVN
X1JFU0VSVkUgfCBNRU1fQ09NTUlULCBQQUdFX1JFQURXUklURSk7CiAgICAgICBBQlNMX1JBV19D
SEVDSyhuZXdfcGFnZXMgIT0gbnVsbHB0ciwgIlZpcnR1YWxBbGxvYyBmYWlsZWQiKTsKICNlbHNl
CisjaWZuZGVmIEFCU0xfTE9XX0xFVkVMX0FMTE9DX0FTWU5DX1NJR05BTF9TQUZFX01JU1NJTkcK
ICAgICAgIGlmICgoYXJlbmEtPmZsYWdzICYgTG93TGV2ZWxBbGxvYzo6a0FzeW5jU2lnbmFsU2Fm
ZSkgIT0gMCkgewogICAgICAgICBuZXdfcGFnZXMgPSBiYXNlX2ludGVybmFsOjpEaXJlY3RNbWFw
KG51bGxwdHIsIG5ld19wYWdlc19zaXplLAogICAgICAgICAgICAgUFJPVF9XUklURXxQUk9UX1JF
QUQsIE1BUF9BTk9OWU1PVVN8TUFQX1BSSVZBVEUsIC0xLCAwKTsKQEAgLTU1MiwxMCArNTU3LDE1
IEBAIHN0YXRpYyB2b2lkICpEb0FsbG9jV2l0aEFyZW5hKHNpemVfdCByZXF1ZXN0LCBMb3dMZXZl
bEFsbG9jOjpBcmVuYSAqYXJlbmEpIHsKICAgICAgICAgbmV3X3BhZ2VzID0gbW1hcChudWxscHRy
LCBuZXdfcGFnZXNfc2l6ZSwgUFJPVF9XUklURSB8IFBST1RfUkVBRCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBNQVBfQU5PTllNT1VTIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTsKICAgICAgIH0K
KyNlbHNlCisgICAgICBuZXdfcGFnZXMgPSBtbWFwKG51bGxwdHIsIG5ld19wYWdlc19zaXplLCBQ
Uk9UX1dSSVRFIHwgUFJPVF9SRUFELAorICAgICAgICAgICAgICAgICAgICAgICBNQVBfQU5PTllN
T1VTIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTsKKyNlbmRpZiAgLy8gQUJTTF9MT1dfTEVWRUxfQUxM
T0NfQVNZTkNfU0lHTkFMX1NBRkVfTUlTU0lORwogICAgICAgaWYgKG5ld19wYWdlcyA9PSBNQVBf
RkFJTEVEKSB7CiAgICAgICAgIEFCU0xfUkFXX0xPRyhGQVRBTCwgIm1tYXAgZXJyb3I6ICVkIiwg
ZXJybm8pOwogICAgICAgfQotI2VuZGlmCisKKyNlbmRpZiAgLy8gX1dJTjMyCiAgICAgICBhcmVu
YS0+bXUuTG9jaygpOwogICAgICAgcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8QWxsb2NMaXN0ICo+KG5l
d19wYWdlcyk7CiAgICAgICBzLT5oZWFkZXIuc2l6ZSA9IG5ld19wYWdlc19zaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmgKaW5kZXggM2MxNTYwNWJlZDM1Nzg4OTkzODljYzRl
YTI5NmNlYjViYTU3YTE1ZS4uZmJhOTQ2NmE3NTc0MjdjMDFlZDEyMTQ2NGMzYWIxMTJkZTIwYzlh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvYy5oCkBAIC0zOSwxMCArMzksMTMg
QEAKICNkZWZpbmUgQUJTTF9MT1dfTEVWRUxfQUxMT0NfTUlTU0lORyAxCiAjZW5kaWYKIAotLy8g
VXNpbmcgTG93TGV2ZWxBbGxvYyB3aXRoIGtBc3luY1NpZ25hbFNhZmUgaXNuJ3Qgc3VwcG9ydGVk
IG9uIFdpbmRvd3MuCisvLyBVc2luZyBMb3dMZXZlbEFsbG9jIHdpdGgga0FzeW5jU2lnbmFsU2Fm
ZSBpc24ndCBzdXBwb3J0ZWQgb24gV2luZG93cyBvcgorLy8gYXNtLmpzIC8gV2ViQXNzZW1ibHku
CisvLyBTZWUgaHR0cHM6Ly9rcmlwa2VuLmdpdGh1Yi5pby9lbXNjcmlwdGVuLXNpdGUvZG9jcy9w
b3J0aW5nL3B0aHJlYWRzLmh0bWwKKy8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgogI2lmZGVmIEFC
U0xfTE9XX0xFVkVMX0FMTE9DX0FTWU5DX1NJR05BTF9TQUZFX01JU1NJTkcKICNlcnJvciBBQlNM
X0xPV19MRVZFTF9BTExPQ19BU1lOQ19TSUdOQUxfU0FGRV9NSVNTSU5HIGNhbm5vdCBiZSBkaXJl
Y3RseSBzZXQKLSNlbGlmIGRlZmluZWQoX1dJTjMyKQorI2VsaWYgZGVmaW5lZChfV0lOMzIpIHx8
IGRlZmluZWQoX19hc21qc19fKSB8fCBkZWZpbmVkKF9fd2FzbV9fKQogI2RlZmluZSBBQlNMX0xP
V19MRVZFTF9BTExPQ19BU1lOQ19TSUdOQUxfU0FGRV9NSVNTSU5HIDEKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu
dGVybmFsL3Jhd19sb2dnaW5nLmgKaW5kZXggNjdhYmZkMzA3OThkYjhmZmY2MGIyODRhYTZjOTJk
ZmUyM2E0NWJlZi4uNzlhN2JiOWIyZjdhNjJiYjE5NjljZWVhYzAxNzgyY2U0ZTlkZWM1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgU2FmZVdy
aXRlVG9TdGRlcnIoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbik7CiAKIC8vIGNvbXBpbGUtdGlt
ZSBmdW5jdGlvbiB0byBnZXQgdGhlICJiYXNlIiBmaWxlbmFtZSwgdGhhdCBpcywgdGhlIHBhcnQg
b2YKIC8vIGEgZmlsZW5hbWUgYWZ0ZXIgdGhlIGxhc3QgIi8iIG9yICJcIiBwYXRoIHNlcGFyYXRv
ci4gIFRoZSBzZWFyY2ggc3RhcnRzIGF0Ci0vLyB0aGUgZW5kIG9mIHRoZSBzdGQ6OnN0cmluZzsg
dGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RkOjpzdHJpbmcuCisv
LyB0aGUgZW5kIG9mIHRoZSBzdHJpbmc7IHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBsZW5n
dGggb2YgdGhlIHN0cmluZy4KIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBCYXNlbmFtZShjb25zdCBj
aGFyKiBmbmFtZSwgaW50IG9mZnNldCkgewogICByZXR1cm4gb2Zmc2V0ID09IDAgfHwgZm5hbWVb
b2Zmc2V0IC0gMV0gPT0gJy8nIHx8IGZuYW1lW29mZnNldCAtIDFdID09ICdcXCcKICAgICAgICAg
ICAgICA/IGZuYW1lICsgb2Zmc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Nw
aW5sb2NrX2xpbnV4LmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfbGludXguaW5j
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk0Yzg2MWRjNmNhMjNjMjhlZDIwODIyODliYTIzZWYyNTM4NjAxMDEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX2xpbnV4LmluYwpA
QCAtMCwwICsxLDcyIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
Ly8KKy8vIFRoaXMgZmlsZSBpcyBhIExpbnV4LXNwZWNpZmljIHBhcnQgb2Ygc3BpbmxvY2tfd2Fp
dC5jYworCisjaW5jbHVkZSA8bGludXgvZnV0ZXguaD4KKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5o
PgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPGNl
cnJubz4KKyNpbmNsdWRlIDxjbGltaXRzPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8
Y3RpbWU+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgorCisvLyBUaGUgU3Bp
bkxvY2sgbG9ja3dvcmQgaXMgYHN0ZDo6YXRvbWljPHVpbnQzMl90PmAuIEhlcmUgd2UgYXNzZXJ0
IHRoYXQKKy8vIGBzdGQ6OmF0b21pYzx1aW50MzJfdD5gIGlzIGJpdHdpc2UgZXF1aXZhbGVudCBv
ZiB0aGUgYGludGAgZXhwZWN0ZWQKKy8vIGJ5IFNZU19mdXRleC4gV2UgYWxzbyBhc3N1bWUgdGhh
dCByZWFkcy93cml0ZXMgZG9uZSB0byB0aGUgbG9ja3dvcmQKKy8vIGJ5IFNZU19mdXRleCBoYXZl
IHJhdGlvbmFsIHNlbWFudGljcyB3aXRoIHJlZ2FyZCB0byB0aGUKKy8vIHN0ZDo6YXRvbWljPD4g
QVBJLiBDKysgcHJvdmlkZXMgbm8gZ3VhcmFudGVlcyBvZiB0aGVzZSBhc3N1bXB0aW9ucywKKy8v
IGJ1dCB0aGV5IGFyZSBiZWxpZXZlZCB0byBob2xkIGluIHByYWN0aWNlLgorc3RhdGljX2Fzc2Vy
dChzaXplb2Yoc3RkOjphdG9taWM8dWludDMyX3Q+KSA9PSBzaXplb2YoaW50KSwKKyAgICAgICAg
ICAgICAgIlNwaW5Mb2NrIGxvY2t3b3JkIGhhcyB0aGUgd3Jvbmcgc2l6ZSBmb3IgYSBmdXRleCIp
OworCisvLyBTb21lIEFuZHJvaWQgaGVhZGVycyBhcmUgbWlzc2luZyB0aGVzZSBkZWZpbml0aW9u
cyBldmVuIHRob3VnaCB0aGV5CisvLyBzdXBwb3J0IHRoZXNlIGZ1dGV4IG9wZXJhdGlvbnMuCisj
aWZkZWYgX19CSU9OSUNfXworI2lmbmRlZiBTWVNfZnV0ZXgKKyNkZWZpbmUgU1lTX2Z1dGV4IF9f
TlJfZnV0ZXgKKyNlbmRpZgorI2lmbmRlZiBGVVRFWF9QUklWQVRFX0ZMQUcKKyNkZWZpbmUgRlVU
RVhfUFJJVkFURV9GTEFHIDEyOAorI2VuZGlmCisjZW5kaWYKKworZXh0ZXJuICJDIiB7CisKK0FC
U0xfQVRUUklCVVRFX1dFQUsgdm9pZCBBYnNsSW50ZXJuYWxTcGluTG9ja0RlbGF5KAorICAgIHN0
ZDo6YXRvbWljPHVpbnQzMl90PiAqdywgdWludDMyX3QgdmFsdWUsIGludCBsb29wLAorICAgIGFi
c2w6OmJhc2VfaW50ZXJuYWw6OlNjaGVkdWxpbmdNb2RlKSB7CisgIGlmIChsb29wICE9IDApIHsK
KyAgICBpbnQgc2F2ZV9lcnJubyA9IGVycm5vOworICAgIHN0cnVjdCB0aW1lc3BlYyB0bTsKKyAg
ICB0bS50dl9zZWMgPSAwOworICAgIC8vIEluY3JlYXNlIHRoZSBkZWxheTsgd2UgZXhwZWN0IChi
dXQgZG8gbm90IHJlbHkgb24pIGV4cGxpY2l0IHdha2V1cHMuCisgICAgLy8gV2UgZG9uJ3QgcmVs
eSBvbiBleHBsaWNpdCB3YWtldXBzIGJlY2F1c2Ugd2UgaW50ZW50aW9uYWxseSBhbGxvdyBmb3IK
KyAgICAvLyBhIHJhY2Ugb24gdGhlIGtTcGluTG9ja1NsZWVwZXIgYml0LgorICAgIHRtLnR2X25z
ZWMgPSAxNiAqIGFic2w6OmJhc2VfaW50ZXJuYWw6OlNwaW5Mb2NrU3VnZ2VzdGVkRGVsYXlOUyhs
b29wKTsKKyAgICBzeXNjYWxsKFNZU19mdXRleCwgdywgRlVURVhfV0FJVCB8IEZVVEVYX1BSSVZB
VEVfRkxBRywgdmFsdWUsICZ0bSk7CisgICAgZXJybm8gPSBzYXZlX2Vycm5vOworICB9Cit9CisK
K0FCU0xfQVRUUklCVVRFX1dFQUsgdm9pZCBBYnNsSW50ZXJuYWxTcGluTG9ja1dha2Uoc3RkOjph
dG9taWM8dWludDMyX3Q+ICp3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGFsbCkgeworICBzeXNjYWxsKFNZU19mdXRleCwgdywgRlVURVhf
V0FLRSB8IEZVVEVYX1BSSVZBVEVfRkxBRywgYWxsID8gSU5UX01BWCA6IDEsIDApOworfQorCit9
ICAvLyBleHRlcm4gIkMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2Nr
X3dhaXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3dhaXQuY2MKaW5kZXggOWY2
ZTk5MTFlMTA5NmIyZjE4N2NjNmE4NDMwNTQ0ZTlmYzE2NjMzMy4uMGZkZTljMDRiNzNiYWY1N2Qx
MzQ5OTgyMGNiZDQ0NzFmMzVmZGRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9z
cGlubG9ja193YWl0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfd2FpdC5j
YwpAQCAtMTMsNyArMTMsNyBAQAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAK
IC8vIFRoZSBPUy1zcGVjaWZpYyBoZWFkZXIgaW5jbHVkZWQgYmVsb3cgbXVzdCBwcm92aWRlIHR3
byBjYWxsczoKLS8vIGJhc2U6OnN1YnRsZTo6U3BpbkxvY2tEZWxheSgpIGFuZCBiYXNlOjpzdWJ0
bGU6OlNwaW5Mb2NrV2FrZSgpLgorLy8gQWJzbEludGVybmFsU3BpbkxvY2tEZWxheSgpIGFuZCBB
YnNsSW50ZXJuYWxTcGluTG9ja1dha2UoKS4KIC8vIFNlZSBzcGlubG9ja193YWl0LmggZm9yIHRo
ZSBzcGVjcy4KIAogI2luY2x1ZGUgPGF0b21pYz4KQEAgLTIzLDYgKzIzLDggQEAKIAogI2lmIGRl
ZmluZWQoX1dJTjMyKQogI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193aW4z
Mi5pbmMiCisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50
ZXJuYWwvc3BpbmxvY2tfbGludXguaW5jIgogI2VsaWYgZGVmaW5lZChfX2FrYXJvc19fKQogI2lu
Y2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19ha2Fyb3MuaW5jIgogI2Vsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuY2MKaW5kZXggNjc4ZTg1NjhkNzQyMWU1MTQ4
ZTlkMTljZDU2ZTY4MDg0YTAwMzcwNS4uY2ZmOWMxYjRmNGRjMzk1NDJiMmFlZDk0NGM4YzdlZDA2
NjNmYTJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHku
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJlYWRfaWRlbnRpdHkuY2MKQEAgLTY4LDYg
KzY4LDE0IEBAIHZvaWQgU2V0Q3VycmVudFRocmVhZElkZW50aXR5KAogICAvLyBOT1RFOiBOb3Qg
YXN5bmMtc2FmZS4gIEJ1dCBjYW4gYmUgb3Blbi1jb2RlZC4KICAgYWJzbDo6Y2FsbF9vbmNlKGlu
aXRfdGhyZWFkX2lkZW50aXR5X2tleV9vbmNlLCBBbGxvY2F0ZVRocmVhZElkZW50aXR5S2V5LAog
ICAgICAgICAgICAgICAgICAgcmVjbGFpbWVyKTsKKworI2lmZGVmIF9fRU1TQ1JJUFRFTl9fCisg
IC8vIEVtc2NyaXB0ZW4gUFRocmVhZCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHNp
Z25hbHMuCisgIC8vIFNlZSBodHRwczovL2tyaXBrZW4uZ2l0aHViLmlvL2Vtc2NyaXB0ZW4tc2l0
ZS9kb2NzL3BvcnRpbmcvcHRocmVhZHMuaHRtbAorICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K
KyAgcHRocmVhZF9zZXRzcGVjaWZpYyh0aHJlYWRfaWRlbnRpdHlfcHRocmVhZF9rZXksCisgICAg
ICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaWRlbnRpdHkpKTsKKyNl
bHNlCiAgIC8vIFdlIG11c3QgbWFzayBzaWduYWxzIGFyb3VuZCB0aGUgY2FsbCB0byBzZXRzcGVj
aWZpYyBhcyB3aXRoIGN1cnJlbnQgZ2xpYmMsCiAgIC8vIGEgY29uY3VycmVudCBnZXRzcGVjaWZp
YyAobmVlZGVkIGZvciBHZXRDdXJyZW50VGhyZWFkSWRlbnRpdHlJZlByZXNlbnQoKSkKICAgLy8g
bWF5IHplcm8gb3VyIHZhbHVlLgpAQCAtODEsNiArODksOCBAQCB2b2lkIFNldEN1cnJlbnRUaHJl
YWRJZGVudGl0eSgKICAgcHRocmVhZF9zZXRzcGVjaWZpYyh0aHJlYWRfaWRlbnRpdHlfcHRocmVh
ZF9rZXksCiAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaWRl
bnRpdHkpKTsKICAgcHRocmVhZF9zaWdtYXNrKFNJR19TRVRNQVNLLCAmY3Vycl9zaWduYWxzLCBu
dWxscHRyKTsKKyNlbmRpZiAgLy8gIV9fRU1TQ1JJUFRFTl9fCisKICNlbGlmIEFCU0xfVEhSRUFE
X0lERU5USVRZX01PREUgPT0gQUJTTF9USFJFQURfSURFTlRJVFlfTU9ERV9VU0VfVExTCiAgIC8v
IE5PVEU6IE5vdCBhc3luYy1zYWZlLiAgQnV0IGNhbiBiZSBvcGVuLWNvZGVkLgogICBhYnNsOjpj
YWxsX29uY2UoaW5pdF90aHJlYWRfaWRlbnRpdHlfa2V5X29uY2UsIEFsbG9jYXRlVGhyZWFkSWRl
bnRpdHlLZXksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3VuYWxpZ25lZF9hY2Nl
c3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5hbGlnbmVkX2FjY2Vzcy5oCmluZGV4IDVjNzUx
N2FiZDcxYTZiZjUyNTA3MTlkMWQ1OGNjN2EwNWE5MDZlMWEuLmY5ZGYzYjc4NDhjNDBhOTc0ZmQ5
Njk3ZGVmOGNmN2ZmYmZlMDI5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5h
bGlnbmVkX2FjY2Vzcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5hbGlnbmVkX2FjY2Vz
cy5oCkBAIC02NSw2ICs2NSw3IEBAIHZvaWQgX19zYW5pdGl6ZXJfdW5hbGlnbmVkX3N0b3JlNjQo
dm9pZCAqcCwgdWludDY0X3Qgdik7CiB9ICAvLyBleHRlcm4gIkMiCiAKIG5hbWVzcGFjZSBhYnNs
IHsKK25hbWVzcGFjZSBiYXNlX2ludGVybmFsIHsKIAogaW5saW5lIHVpbnQxNl90IFVuYWxpZ25l
ZExvYWQxNihjb25zdCB2b2lkICpwKSB7CiAgIHJldHVybiBfX3Nhbml0aXplcl91bmFsaWduZWRf
bG9hZDE2KHApOwpAQCAtOTAsMjIgKzkxLDI3IEBAIGlubGluZSB2b2lkIFVuYWxpZ25lZFN0b3Jl
NjQodm9pZCAqcCwgdWludDY0X3QgdikgewogICBfX3Nhbml0aXplcl91bmFsaWduZWRfc3RvcmU2
NChwLCB2KTsKIH0KIAorfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKIH0gIC8vIG5hbWVz
cGFjZSBhYnNsCiAKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2KF9wKSAo
YWJzbDo6VW5hbGlnbmVkTG9hZDE2KF9wKSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdO
RURfTE9BRDMyKF9wKSAoYWJzbDo6VW5hbGlnbmVkTG9hZDMyKF9wKSkKLSNkZWZpbmUgQUJTTF9J
TlRFUk5BTF9VTkFMSUdORURfTE9BRDY0KF9wKSAoYWJzbDo6VW5hbGlnbmVkTG9hZDY0KF9wKSkK
KyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2KF9wKSBcCisgIChhYnNsOjpi
YXNlX2ludGVybmFsOjpVbmFsaWduZWRMb2FkMTYoX3ApKQorI2RlZmluZSBBQlNMX0lOVEVSTkFM
X1VOQUxJR05FRF9MT0FEMzIoX3ApIFwKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25l
ZExvYWQzMihfcCkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQ2NChfcCkg
XAorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkTG9hZDY0KF9wKSkKIAogI2RlZmlu
ZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTE2KF9wLCBfdmFsKSBcCi0gIChhYnNsOjpV
bmFsaWduZWRTdG9yZTE2KF9wLCBfdmFsKSkKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxp
Z25lZFN0b3JlMTYoX3AsIF92YWwpKQogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9T
VE9SRTMyKF9wLCBfdmFsKSBcCi0gIChhYnNsOjpVbmFsaWduZWRTdG9yZTMyKF9wLCBfdmFsKSkK
KyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZFN0b3JlMzIoX3AsIF92YWwpKQogI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTY0KF9wLCBfdmFsKSBcCi0gIChhYnNs
OjpVbmFsaWduZWRTdG9yZTY0KF9wLCBfdmFsKSkKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVu
YWxpZ25lZFN0b3JlNjQoX3AsIF92YWwpKQogCiAjZWxpZiBkZWZpbmVkKFVOREVGSU5FRF9CRUhB
VklPUl9TQU5JVElaRVIpCiAKIG5hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBiYXNlX2ludGVy
bmFsIHsKIAogaW5saW5lIHVpbnQxNl90IFVuYWxpZ25lZExvYWQxNihjb25zdCB2b2lkICpwKSB7
CiAgIHVpbnQxNl90IHQ7CkBAIC0xMzEsMTggKzEzNywyMiBAQCBpbmxpbmUgdm9pZCBVbmFsaWdu
ZWRTdG9yZTMyKHZvaWQgKnAsIHVpbnQzMl90IHYpIHsgbWVtY3B5KHAsICZ2LCBzaXplb2Ygdik7
IH0KIAogaW5saW5lIHZvaWQgVW5hbGlnbmVkU3RvcmU2NCh2b2lkICpwLCB1aW50NjRfdCB2KSB7
IG1lbWNweShwLCAmdiwgc2l6ZW9mIHYpOyB9CiAKK30gIC8vIG5hbWVzcGFjZSBiYXNlX2ludGVy
bmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAogCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElH
TkVEX0xPQUQxNihfcCkgKGFic2w6OlVuYWxpZ25lZExvYWQxNihfcCkpCi0jZGVmaW5lIEFCU0xf
SU5URVJOQUxfVU5BTElHTkVEX0xPQUQzMihfcCkgKGFic2w6OlVuYWxpZ25lZExvYWQzMihfcCkp
Ci0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQ2NChfcCkgKGFic2w6OlVuYWxp
Z25lZExvYWQ2NChfcCkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQxNihf
cCkgXAorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkTG9hZDE2KF9wKSkKKyNkZWZp
bmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDMyKF9wKSBcCisgIChhYnNsOjpiYXNlX2lu
dGVybmFsOjpVbmFsaWduZWRMb2FkMzIoX3ApKQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJ
R05FRF9MT0FENjQoX3ApIFwKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZExvYWQ2
NChfcCkpCiAKICNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkUxNihfcCwgX3Zh
bCkgXAotICAoYWJzbDo6VW5hbGlnbmVkU3RvcmUxNihfcCwgX3ZhbCkpCisgIChhYnNsOjpiYXNl
X2ludGVybmFsOjpVbmFsaWduZWRTdG9yZTE2KF9wLCBfdmFsKSkKICNkZWZpbmUgQUJTTF9JTlRF
Uk5BTF9VTkFMSUdORURfU1RPUkUzMihfcCwgX3ZhbCkgXAotICAoYWJzbDo6VW5hbGlnbmVkU3Rv
cmUzMihfcCwgX3ZhbCkpCisgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRTdG9yZTMy
KF9wLCBfdmFsKSkKICNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkU2NChfcCwg
X3ZhbCkgXAotICAoYWJzbDo6VW5hbGlnbmVkU3RvcmU2NChfcCwgX3ZhbCkpCisgIChhYnNsOjpi
YXNlX2ludGVybmFsOjpVbmFsaWduZWRTdG9yZTY0KF9wLCBfdmFsKSkKIAogI2VsaWYgZGVmaW5l
ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkgfHwgZGVmaW5lZChfX2kzODYpIHx8IFwK
ICAgICBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX1BQ
Q19fKSB8fCAgICBcCkBAIC0xOTksNyArMjA5LDcgQEAgaW5saW5lIHZvaWQgVW5hbGlnbmVkU3Rv
cmU2NCh2b2lkICpwLCB1aW50NjRfdCB2KSB7IG1lbWNweShwLCAmdiwgc2l6ZW9mIHYpOyB9CiAv
LyBzbyB3ZSBkbyB0aGF0LgogCiBuYW1lc3BhY2UgYWJzbCB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwg
eworbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgewogCiBzdHJ1Y3QgVW5hbGlnbmVkMTZTdHJ1Y3Qg
ewogICB1aW50MTZfdCB2YWx1ZTsKQEAgLTIxMSwyMiArMjIxLDI1IEBAIHN0cnVjdCBVbmFsaWdu
ZWQzMlN0cnVjdCB7CiAgIHVpbnQ4X3QgZHVtbXk7ICAvLyBUbyBtYWtlIHRoZSBzaXplIG5vbi1w
b3dlci1vZi10d28uCiB9IEFCU0xfQVRUUklCVVRFX1BBQ0tFRDsKIAotfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYmFzZV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNl
IGFic2wKIAotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMTYoX3ApIFwKLSAg
KChyZWludGVycHJldF9jYXN0PGNvbnN0IDo6YWJzbDo6aW50ZXJuYWw6OlVuYWxpZ25lZDE2U3Ry
dWN0ICo+KF9wKSktPnZhbHVlKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FE
MzIoX3ApIFwKLSAgKChyZWludGVycHJldF9jYXN0PGNvbnN0IDo6YWJzbDo6aW50ZXJuYWw6OlVu
YWxpZ25lZDMyU3RydWN0ICo+KF9wKSktPnZhbHVlKQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VO
QUxJR05FRF9MT0FEMTYoX3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
KChyZWludGVycHJldF9jYXN0PGNvbnN0IDo6YWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVk
MTZTdHJ1Y3QgKj4oX3ApKSBcCisgICAgICAgLT52YWx1ZSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5B
TF9VTkFMSUdORURfTE9BRDMyKF9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICgocmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OmFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxp
Z25lZDMyU3RydWN0ICo+KF9wKSkgXAorICAgICAgIC0+dmFsdWUpCiAKLSNkZWZpbmUgQUJTTF9J
TlRFUk5BTF9VTkFMSUdORURfU1RPUkUxNihfcCwgX3ZhbCkgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgKChyZWludGVycHJldF9jYXN0PCA6OmFic2w6OmludGVybmFsOjpVbmFsaWduZWQx
NlN0cnVjdCAqPihfcCkpLT52YWx1ZSA9IFwKLSAgICAgICAoX3ZhbCkpCi0jZGVmaW5lIEFCU0xf
SU5URVJOQUxfVU5BTElHTkVEX1NUT1JFMzIoX3AsIF92YWwpICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICgocmVpbnRlcnByZXRfY2FzdDwgOjphYnNsOjppbnRlcm5hbDo6VW5hbGlnbmVk
MzJTdHJ1Y3QgKj4oX3ApKS0+dmFsdWUgPSBcCi0gICAgICAgKF92YWwpKQorI2RlZmluZSBBQlNM
X0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTE2KF9wLCBfdmFsKSAgICAgICAgICAgICAgICAgICAg
ICBcCisgICgocmVpbnRlcnByZXRfY2FzdDwgOjphYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWdu
ZWQxNlN0cnVjdCAqPihfcCkpIFwKKyAgICAgICAtPnZhbHVlID0gKF92YWwpKQorI2RlZmluZSBB
QlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTMyKF9wLCBfdmFsKSAgICAgICAgICAgICAgICAg
ICAgICBcCisgICgocmVpbnRlcnByZXRfY2FzdDwgOjphYnNsOjpiYXNlX2ludGVybmFsOjpVbmFs
aWduZWQzMlN0cnVjdCAqPihfcCkpIFwKKyAgICAgICAtPnZhbHVlID0gKF92YWwpKQogCiBuYW1l
c3BhY2UgYWJzbCB7CituYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7CiAKIGlubGluZSB1aW50NjRf
dCBVbmFsaWduZWRMb2FkNjQoY29uc3Qgdm9pZCAqcCkgewogICB1aW50NjRfdCB0OwpAQCAtMjM2
LDExICsyNDksMTMgQEAgaW5saW5lIHVpbnQ2NF90IFVuYWxpZ25lZExvYWQ2NChjb25zdCB2b2lk
ICpwKSB7CiAKIGlubGluZSB2b2lkIFVuYWxpZ25lZFN0b3JlNjQodm9pZCAqcCwgdWludDY0X3Qg
dikgeyBtZW1jcHkocCwgJnYsIHNpemVvZiB2KTsgfQogCit9ICAvLyBuYW1lc3BhY2UgYmFzZV9p
bnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIAotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VO
QUxJR05FRF9MT0FENjQoX3ApIChhYnNsOjpVbmFsaWduZWRMb2FkNjQoX3ApKQorI2RlZmluZSBB
QlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FENjQoX3ApIFwKKyAgKGFic2w6OmJhc2VfaW50ZXJu
YWw6OlVuYWxpZ25lZExvYWQ2NChfcCkpCiAjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVE
X1NUT1JFNjQoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92YWwp
KQorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmU2NChfcCwgX3ZhbCkpCiAK
ICNlbHNlCiAKQEAgLTI1Miw2ICsyNjcsNyBAQCBpbmxpbmUgdm9pZCBVbmFsaWduZWRTdG9yZTY0
KHZvaWQgKnAsIHVpbnQ2NF90IHYpIHsgbWVtY3B5KHAsICZ2LCBzaXplb2Ygdik7IH0KIC8vIHVu
YWxpZ25lZCBsb2FkcyBhbmQgc3RvcmVzLgogCiBuYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
YmFzZV9pbnRlcm5hbCB7CiAKIGlubGluZSB1aW50MTZfdCBVbmFsaWduZWRMb2FkMTYoY29uc3Qg
dm9pZCAqcCkgewogICB1aW50MTZfdCB0OwpAQCAtMjc3LDE4ICsyOTMsMjIgQEAgaW5saW5lIHZv
aWQgVW5hbGlnbmVkU3RvcmUzMih2b2lkICpwLCB1aW50MzJfdCB2KSB7IG1lbWNweShwLCAmdiwg
c2l6ZW9mIHYpOyB9CiAKIGlubGluZSB2b2lkIFVuYWxpZ25lZFN0b3JlNjQodm9pZCAqcCwgdWlu
dDY0X3QgdikgeyBtZW1jcHkocCwgJnYsIHNpemVvZiB2KTsgfQogCit9ICAvLyBuYW1lc3BhY2Ug
YmFzZV9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIAotI2RlZmluZSBBQlNMX0lOVEVS
TkFMX1VOQUxJR05FRF9MT0FEMTYoX3ApIChhYnNsOjpVbmFsaWduZWRMb2FkMTYoX3ApKQotI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMzIoX3ApIChhYnNsOjpVbmFsaWduZWRM
b2FkMzIoX3ApKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FENjQoX3ApIChh
YnNsOjpVbmFsaWduZWRMb2FkNjQoX3ApKQorI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05F
RF9MT0FEMTYoX3ApIFwKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZExvYWQxNihf
cCkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQzMihfcCkgXAorICAoYWJz
bDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkTG9hZDMyKF9wKSkKKyNkZWZpbmUgQUJTTF9JTlRF
Uk5BTF9VTkFMSUdORURfTE9BRDY0KF9wKSBcCisgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFs
aWduZWRMb2FkNjQoX3ApKQogCiAjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JF
MTYoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVuYWxpZ25lZFN0b3JlMTYoX3AsIF92YWwpKQorICAo
YWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmUxNihfcCwgX3ZhbCkpCiAjZGVmaW5l
IEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFMzIoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVu
YWxpZ25lZFN0b3JlMzIoX3AsIF92YWwpKQorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGln
bmVkU3RvcmUzMihfcCwgX3ZhbCkpCiAjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NU
T1JFNjQoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92YWwpKQor
ICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmU2NChfcCwgX3ZhbCkpCiAKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9sb2dfc2V2ZXJpdHkuaAppbmRleCBlMjkzMWMzNGQxZGY1NGE3YmJmN2VkNzFkZTg1ODUwMzM2
MmM3MzM3Li41NzcwZDM2MjllNzI2NDY4OWY2MDI5Y2I2ZDY0Mjg1NTQ1YmY0ZmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbG9nX3NldmVy
aXR5LmgKQEAgLTM5LDcgKzM5LDcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8YWJzbDo6TG9nU2V2
ZXJpdHksIDQ+IExvZ1NldmVyaXRpZXMoKSB7CiAgICAgICAgICAgIGFic2w6OkxvZ1NldmVyaXR5
OjprRXJyb3IsIGFic2w6OkxvZ1NldmVyaXR5OjprRmF0YWx9fTsKIH0KIAotLy8gUmV0dXJucyB0
aGUgYWxsLWNhcHMgc3RkOjpzdHJpbmcgcmVwcmVzZW50YXRpb24gKGUuZy4gIklORk8iKSBvZiB0
aGUgc3BlY2lmaWVkCisvLyBSZXR1cm5zIHRoZSBhbGwtY2FwcyBzdHJpbmcgcmVwcmVzZW50YXRp
b24gKGUuZy4gIklORk8iKSBvZiB0aGUgc3BlY2lmaWVkCiAvLyBzZXZlcml0eSBsZXZlbCBpZiBp
dCBpcyBvbmUgb2YgdGhlIG5vcm1hbCBsZXZlbHMgYW5kICJVTktOT1dOIiBvdGhlcndpc2UuCiBj
b25zdGV4cHIgY29uc3QgY2hhciogTG9nU2V2ZXJpdHlOYW1lKGFic2w6OkxvZ1NldmVyaXR5IHMp
IHsKICAgcmV0dXJuIHMgPT0gYWJzbDo6TG9nU2V2ZXJpdHk6OmtJbmZvCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL3Jhd19sb2dnaW5nX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3Jhd19sb2dnaW5nX3Rl
c3QuY2MKaW5kZXggZWJiYzVkYjkwNjcyN2Y2Y2IyYzAzYTYzZTk5YTg5N2Y1Y2ViNWFhNC4uYjIx
Y2Y2NTE3NThlM2MyNDkyNjJlNjljMWM4YmExN2MxYzlhN2FlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9yYXdfbG9nZ2luZ190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvcmF3X2xvZ2dpbmdfdGVz
dC5jYwpAQCAtNDAsNyArNDAsNyBAQCBURVNUKFJhd0xvZ2dpbmdDb21waWxhdGlvblRlc3QsIFBh
c3NpbmdDaGVjaykgewogfQogCiAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IG91dHB1dCBm
cm9tIHJhdyBsb2csIHNvIHdlIGRvbid0IHZlcmlmeSBhbnkKLS8vIHBhcnRpY3VsYXIgb3V0cHV0
IGZvciBSQVcgY2hlY2sgZmFpbHVyZXMgKGV4cGVjdGluZyB0aGUgZW1wdHkgc3RkOjpzdHJpbmcK
Ky8vIHBhcnRpY3VsYXIgb3V0cHV0IGZvciBSQVcgY2hlY2sgZmFpbHVyZXMgKGV4cGVjdGluZyB0
aGUgZW1wdHkgc3RyaW5nCiAvLyBhY2NvbXBsaXNoZXMgdGhpcykuICBUaGlzIHRlc3QgaXMgcHJp
bWFyaWx5IGEgY29tcGlsYXRpb24gdGVzdCwgYnV0IHdlCiAvLyBhcmUgdmVyaWZ5aW5nIHByb2Nl
c3MgZGVhdGggd2hlbiBFWFBFQ1RfREVBVEggd29ya3MgZm9yIGEgcGxhdGZvcm0uCiBjb25zdCBj
aGFyIGtFeHBlY3RlZERlYXRoT3V0cHV0W10gPSAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5iYXplbAppbmRleCA2ZDVj
OTU4ZjM4MmJhNjM5N2YwYjBkZjFjZjk5NjY3OGE3YTNjNWE2Li5mMjIxMGUzYzE5Nzk4M2ZhYjYw
MzRkODE4MTU0Nzc5YjcxNzMyZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvQlVJTEQu
YmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmJhemVsCkBAIC0xOSw2ICsxOSw3IEBA
IGxvYWQoCiAgICAgIkFCU0xfREVGQVVMVF9DT1BUUyIsCiAgICAgIkFCU0xfVEVTVF9DT1BUUyIs
CiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHIiwKKyAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUdf
TElOS09QVFMiLAogKQogCiBwYWNrYWdlKGRlZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmls
aXR5OnB1YmxpYyJdKQpAQCAtNjIsOSArNjMsMTEgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImZp
eGVkX2FycmF5X3Rlc3QiLAogICAgIHNyY3MgPSBbImZpeGVkX2FycmF5X3Rlc3QuY2MiXSwKICAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxp
bmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAg
ICAgICAgIjpmaXhlZF9hcnJheSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fdGVz
dGluZyIsCisgICAgICAgICIvL2Fic2wvaGFzaDpoYXNoX3Rlc3RpbmciLAogICAgICAgICAiLy9h
YnNsL21lbW9yeSIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFp
biIsCiAgICAgXSwKQEAgLTc3LDYgKzgwLDcgQEAgY2NfdGVzdCgKICAgICBkZXBzID0gWwogICAg
ICAgICAiOmZpeGVkX2FycmF5IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4Y2VwdGlvbl90ZXN0
aW5nIiwKKyAgICAgICAgIi8vYWJzbC9oYXNoOmhhc2hfdGVzdGluZyIsCiAgICAgICAgICIvL2Fi
c2wvbWVtb3J5IiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWlu
IiwKICAgICBdLApAQCAtODYsNiArOTAsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiZml4ZWRf
YXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0IiwKICAgICBzcmNzID0gWyJmaXhlZF9hcnJheV9l
eGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyAr
IEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZM
QUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpmaXhlZF9hcnJheSIsCiAgICAg
ICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmciLApAQCAtMTIwLDEyICsx
MjUsMTQgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImlubGluZWRfdmVjdG9yX3Rlc3QiLAogICAg
IHNyY3MgPSBbImlubGluZWRfdmVjdG9yX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVT
VF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENF
UFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjppbmxpbmVkX3Zl
Y3RvciIsCiAgICAgICAgICI6dGVzdF9pbnN0YW5jZV90cmFja2VyIiwKICAgICAgICAgIi8vYWJz
bC9iYXNlIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgICAgICIv
L2Fic2wvYmFzZTpleGNlcHRpb25fdGVzdGluZyIsCisgICAgICAgICIvL2Fic2wvaGFzaDpoYXNo
X3Rlc3RpbmciLAogICAgICAgICAiLy9hYnNsL21lbW9yeSIsCiAgICAgICAgICIvL2Fic2wvc3Ry
aW5ncyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCkBA
IC0xNDIsNiArMTQ5LDcgQEAgY2NfdGVzdCgKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKICAgICAg
ICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNl
cHRpb25fdGVzdGluZyIsCisgICAgICAgICIvL2Fic2wvaGFzaDpoYXNoX3Rlc3RpbmciLAogICAg
ICAgICAiLy9hYnNsL21lbW9yeSIsCiAgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCiAgICAgICAg
ICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCkBAIC0xODEsMyArMTg5LDQ1
OSBAQCBjY190ZXN0KAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21h
aW4iLAogICAgIF0sCiApCisKK05PVEVTVF9UQUdTX05PTk1PQklMRSA9IFsKKyAgICAibm9fdGVz
dF9kYXJ3aW5feDg2XzY0IiwKKyAgICAibm9fdGVzdF9sb29uaXgiLAorXQorCitOT1RFU1RfVEFH
U19NT0JJTEUgPSBbCisgICAgIm5vX3Rlc3RfYW5kcm9pZF9hcm0iLAorICAgICJub190ZXN0X2Fu
ZHJvaWRfYXJtNjQiLAorICAgICJub190ZXN0X2FuZHJvaWRfeDg2IiwKKyAgICAibm9fdGVzdF9p
b3NfeDg2XzY0IiwKK10KKworTk9URVNUX1RBR1MgPSBOT1RFU1RfVEFHU19NT0JJTEUgKyBOT1RF
U1RfVEFHU19OT05NT0JJTEUKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImZsYXRfaGFzaF9t
YXAiLAorICAgIGhkcnMgPSBbImZsYXRfaGFzaF9tYXAuaCJdLAorICAgIGNvcHRzID0gQUJTTF9E
RUZBVUxUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIs
CisgICAgICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCisgICAgICAgICI6cmF3X2hhc2hf
bWFwIiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisg
ICAgbmFtZSA9ICJmbGF0X2hhc2hfbWFwX3Rlc3QiLAorICAgIHNyY3MgPSBbImZsYXRfaGFzaF9t
YXBfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgWyItRFVOT1JERVJF
RF9NQVBfQ1hYMTciXSwKKyAgICB0YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxFLAorICAgIGRl
cHMgPSBbCisgICAgICAgICI6ZmxhdF9oYXNoX21hcCIsCisgICAgICAgICI6aGFzaF9nZW5lcmF0
b3JfdGVzdGluZyIsCisgICAgICAgICI6dW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0IiwK
KyAgICAgICAgIjp1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVy
ZWRfbWFwX21vZGlmaWVyc190ZXN0IiwKKyAgICAgICAgIi8vYWJzbC90eXBlczphbnkiLAorICAg
ICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisK
K2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJmbGF0X2hhc2hfc2V0IiwKKyAgICBoZHJzID0gWyJm
bGF0X2hhc2hfc2V0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBk
ZXBzID0gWworICAgICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICAgICAiOmhhc2hfZnVu
Y3Rpb25fZGVmYXVsdHMiLAorICAgICAgICAiOnJhd19oYXNoX3NldCIsCisgICAgICAgICIvL2Fi
c2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL21lbW9yeSIsCisgICAgXSwK
KykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImZsYXRfaGFzaF9zZXRfdGVzdCIsCisgICAgc3Jj
cyA9IFsiZmxhdF9oYXNoX3NldF90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMgKyBbIi1EVU5PUkRFUkVEX1NFVF9DWFgxNyJdLAorICAgIHRhZ3MgPSBOT1RFU1RfVEFHU19O
T05NT0JJTEUsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpmbGF0X2hhc2hfc2V0IiwKKyAgICAg
ICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAgICAgIjp1bm9yZGVyZWRfc2V0X2Nv
bnN0cnVjdG9yX3Rlc3QiLAorICAgICAgICAiOnVub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QiLAor
ICAgICAgICAiOnVub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QiLAorICAgICAgICAiLy9hYnNs
L21lbW9yeSIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJAY29tX2dvb2ds
ZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAg
ICBuYW1lID0gIm5vZGVfaGFzaF9tYXAiLAorICAgIGhkcnMgPSBbIm5vZGVfaGFzaF9tYXAuaCJd
LAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAg
ICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIs
CisgICAgICAgICI6bm9kZV9oYXNoX3BvbGljeSIsCisgICAgICAgICI6cmF3X2hhc2hfbWFwIiwK
KyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFt
ZSA9ICJub2RlX2hhc2hfbWFwX3Rlc3QiLAorICAgIHNyY3MgPSBbIm5vZGVfaGFzaF9tYXBfdGVz
dC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgWyItRFVOT1JERVJFRF9NQVBf
Q1hYMTciXSwKKyAgICB0YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxFLAorICAgIGRlcHMgPSBb
CisgICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgICAgICI6bm9kZV9oYXNo
X21hcCIsCisgICAgICAgICI6dHJhY2tlZCIsCisgICAgICAgICI6dW5vcmRlcmVkX21hcF9jb25z
dHJ1Y3Rvcl90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0IiwKKyAg
ICAgICAgIjp1bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0IiwKKyAgICAgICAgIkBjb21fZ29v
Z2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAor
ICAgIG5hbWUgPSAibm9kZV9oYXNoX3NldCIsCisgICAgaGRycyA9IFsibm9kZV9oYXNoX3NldC5o
Il0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAg
ICAgIjpjb250YWluZXJfbWVtb3J5IiwKKyAgICAgICAgIjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRz
IiwKKyAgICAgICAgIjpub2RlX2hhc2hfcG9saWN5IiwKKyAgICAgICAgIjpyYXdfaGFzaF9zZXQi
LAorICAgICAgICAiLy9hYnNsL21lbW9yeSIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBu
YW1lID0gIm5vZGVfaGFzaF9zZXRfdGVzdCIsCisgICAgc3JjcyA9IFsibm9kZV9oYXNoX3NldF90
ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBbIi1EVU5PUkRFUkVEX1NF
VF9DWFgxNyJdLAorICAgIHRhZ3MgPSBOT1RFU1RfVEFHU19OT05NT0JJTEUsCisgICAgZGVwcyA9
IFsKKyAgICAgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAgICAgIjpub2RlX2hh
c2hfc2V0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QiLAorICAg
ICAgICAiOnVub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QiLAorICAgICAgICAiOnVub3JkZXJlZF9z
ZXRfbW9kaWZpZXJzX3Rlc3QiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0
ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJjb250YWlu
ZXJfbWVtb3J5IiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiXSwK
KyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAi
Ly9hYnNsL21lbW9yeSIsCisgICAgICAgICIvL2Fic2wvdXRpbGl0eSIsCisgICAgXSwKKykKKwor
Y2NfdGVzdCgKKyAgICBuYW1lID0gImNvbnRhaW5lcl9tZW1vcnlfdGVzdCIsCisgICAgc3JjcyA9
IFsiaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeV90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNM
X1RFU1RfQ09QVFMsCisgICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwKKyAgICBkZXBz
ID0gWworICAgICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICAgICAiLy9hYnNsL3N0cmlu
Z3MiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAg
IF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJoYXNoX2Z1bmN0aW9uX2RlZmF1bHRz
IiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgiXSwKKyAg
ICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiLy9h
YnNsL2Jhc2U6Y29uZmlnIiwKKyAgICAgICAgIi8vYWJzbC9oYXNoIiwKKyAgICAgICAgIi8vYWJz
bC9zdHJpbmdzIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiaGFzaF9mdW5j
dGlvbl9kZWZhdWx0c190ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9oYXNoX2Z1bmN0aW9u
X2RlZmF1bHRzX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0
YWdzID0gTk9URVNUX1RBR1MsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpoYXNoX2Z1bmN0aW9u
X2RlZmF1bHRzIiwKKyAgICAgICAgIi8vYWJzbC9oYXNoIiwKKyAgICAgICAgIi8vYWJzbC9zdHJp
bmdzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAg
ICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFzaF9nZW5lcmF0b3JfdGVzdGlu
ZyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImludGVybmFsL2hhc2hfZ2VuZXJh
dG9yX3Rlc3RpbmcuY2MiXSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90
ZXN0aW5nLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0gWwor
ICAgICAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICAgICAiLy9hYnNsL21ldGE6dHlw
ZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgIF0sCispCisKK2NjX2xp
YnJhcnkoCisgICAgbmFtZSA9ICJoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICB0ZXN0b25seSA9
IDEsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIl0sCisgICAg
Y29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9o
YXNoIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICBdLAorKQorCitjY190ZXN0KAor
ICAgIG5hbWUgPSAiaGFzaF9wb2xpY3lfdGVzdGluZ190ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRl
cm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVT
VF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCisp
CisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJoYXNoX3BvbGljeV90cmFpdHMiLAorICAgIGhk
cnMgPSBbImludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oIl0sCisgICAgY29wdHMgPSBBQlNM
X0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiXSwK
KykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImhhc2hfcG9saWN5X3RyYWl0c190ZXN0IiwKKyAg
ICBzcmNzID0gWyJpbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHNfdGVzdC5jYyJdLAorICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFzaF9wb2xp
Y3lfdHJhaXRzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWlu
IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFzaHRhYmxlX2RlYnVn
IiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNodGFibGVfZGVidWcuaCJdLAorICAgIGNvcHRz
ID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFzaHRhYmxl
X2RlYnVnX2hvb2tzIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFz
aHRhYmxlX2RlYnVnX2hvb2tzIiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9oYXNodGFibGVfZGVi
dWdfaG9va3MuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorKQorCitjY19s
aWJyYXJ5KAorICAgIG5hbWUgPSAibm9kZV9oYXNoX3BvbGljeSIsCisgICAgaGRycyA9IFsiaW50
ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09Q
VFMsCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJub2RlX2hhc2hfcG9saWN5X3Rlc3QiLAor
ICAgIHNyY3MgPSBbImludGVybmFsL25vZGVfaGFzaF9wb2xpY3lfdGVzdC5jYyJdLAorICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFzaF9wb2xp
Y3lfdHJhaXRzIiwKKyAgICAgICAgIjpub2RlX2hhc2hfcG9saWN5IiwKKyAgICAgICAgIkBjb21f
Z29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5
KAorICAgIG5hbWUgPSAicmF3X2hhc2hfbWFwIiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9yYXdf
aGFzaF9tYXAuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMg
PSBbCisgICAgICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgICAgICI6cmF3X2hhc2hfc2V0
IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAicmF3X2hhc2hfc2V0IiwK
KyAgICBzcmNzID0gWyJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MiXSwKKyAgICBoZHJzID0gWyJp
bnRlcm5hbC9yYXdfaGFzaF9zZXQuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRT
LAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29tcHJlc3NlZF90dXBsZSIsCisgICAgICAgICI6
Y29udGFpbmVyX21lbW9yeSIsCisgICAgICAgICI6aGFzaF9wb2xpY3lfdHJhaXRzIiwKKyAgICAg
ICAgIjpoYXNodGFibGVfZGVidWdfaG9va3MiLAorICAgICAgICAiOmxheW91dCIsCisgICAgICAg
ICIvL2Fic2wvYmFzZTpiaXRzIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCisgICAg
ICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6ZW5k
aWFuIiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgICAgICAiLy9hYnNsL21ldGE6dHlw
ZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgICAgICAgIi8v
YWJzbC91dGlsaXR5IiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAicmF3X2hh
c2hfc2V0X3Rlc3QiLAorICAgIHNyY3MgPSBbImludGVybmFsL3Jhd19oYXNoX3NldF90ZXN0LmNj
Il0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgbGlua3N0YXRpYyA9IDEsCisg
ICAgdGFncyA9IE5PVEVTVF9UQUdTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29udGFpbmVy
X21lbW9yeSIsCisgICAgICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCisgICAgICAgICI6
aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgICAgICI6aGFzaHRhYmxlX2RlYnVnIiwKKyAgICAg
ICAgIjpyYXdfaGFzaF9zZXQiLAorICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAiLy9h
YnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAg
ICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitj
Y190ZXN0KAorICAgIG5hbWUgPSAicmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90ZXN0IiwKKyAgICBz
aXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9yYXdfaGFzaF9zZXRfYWxsb2Nh
dG9yX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0g
WworICAgICAgICAiOnJhd19oYXNoX3NldCIsCisgICAgICAgICI6dHJhY2tlZCIsCisgICAgICAg
ICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xl
dGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9
ICJsYXlvdXQiLAorICAgIGhkcnMgPSBbImludGVybmFsL2xheW91dC5oIl0sCisgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9iYXNl
OmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAg
ICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6c3BhbiIsCisgICAg
ICAgICIvL2Fic2wvdXRpbGl0eSIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0g
ImxheW91dF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJpbnRlcm5h
bC9sYXlvdXRfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIHRh
Z3MgPSBOT1RFU1RfVEFHUywKKyAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0
ZSJdLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6bGF5b3V0IiwKKyAgICAgICAgIi8vYWJzbC9i
YXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fi
c2wvdHlwZXM6c3BhbiIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3Rf
bWFpbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInRyYWNrZWQiLAor
ICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC90cmFja2VkLmgiXSwKKyAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0g
InVub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdCIsCisgICAgdGVzdG9ubHkgPSAxLAorICAg
IGhkcnMgPSBbImludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oIl0sCisg
ICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpoYXNo
X2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAg
ICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdCIsCisgICAgXSwKKykKKworY2Nf
bGlicmFyeSgKKyAgICBuYW1lID0gInVub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QiLAorICAgIHRl
c3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90
ZXN0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0gWworICAg
ICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICAgICAiOmhhc2hfcG9saWN5X3Rl
c3RpbmciLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0IiwKKyAgICBd
LAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAidW5vcmRlcmVkX21hcF9tb2RpZmllcnNf
dGVzdCIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBbImludGVybmFsL3Vub3JkZXJl
ZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAor
ICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgICAg
ICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0
Ly86Z3Rlc3QiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJ1bm9yZGVy
ZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0g
WyJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCJdLAorICAgIGNvcHRz
ID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFzaF9nZW5lcmF0
b3JfdGVzdGluZyIsCisgICAgICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3QiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnko
CisgICAgbmFtZSA9ICJ1bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0IiwKKyAgICB0ZXN0b25seSA9
IDEsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdC5oIl0s
CisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpo
YXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwK
KyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdCIsCisgICAgXSwKKykKKwor
Y2NfbGlicmFyeSgKKyAgICBuYW1lID0gInVub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QiLAor
ICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X21v
ZGlmaWVyc190ZXN0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBz
ID0gWworICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICAgICAiOmhhc2hf
cG9saWN5X3Rlc3RpbmciLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0
IiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAidW5vcmRlcmVkX3NldF90ZXN0
IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X3Rlc3QuY2MiXSwKKyAgICBj
b3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxF
LAorICAgIGRlcHMgPSBbCisgICAgICAgICI6dW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0
IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0IiwKKyAgICAgICAgIjp1bm9y
ZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRl
c3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAidW5v
cmRlcmVkX21hcF90ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX3Rl
c3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0gTk9URVNU
X1RBR1NfTk9OTU9CSUxFLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6dW5vcmRlcmVkX21hcF9j
b25zdHJ1Y3Rvcl90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0IiwK
KyAgICAgICAgIjp1bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0IiwKKyAgICAgICAgIkBjb21f
Z29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmduCmluZGV4
IDAwMWEyYTM2ZDQ4NDZkNTdlODUxZjgxNDNmOGFhYTVjOTkxNTgzMGEuLmEyZmJkNTQzMzE2ZDQ1
NmI1ZGYxNDczMTMzZTMxZDA0MDliNzI3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9C
VUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvQlVJTEQuZ24KQEAgLTg0LDMgKzg0LDM4OSBA
QCBzb3VyY2Vfc2V0KCJ0ZXN0X2luc3RhbmNlX3RyYWNrZXIiKSB7CiAgIHZpc2liaWxpdHkgPSBb
XQogICB2aXNpYmlsaXR5ICs9IFsgIi4uLyoiIF0KIH0KKworc291cmNlX3NldCgiZmxhdF9oYXNo
X21hcCIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1
bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpu
b19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVm
YXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJm
bGF0X2hhc2hfbWFwLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb250YWluZXJfbWVtb3J5
IiwKKyAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAorICAgICI6cmF3X2hhc2hfbWFwIiwK
KyAgICAiLi4vbWVtb3J5IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJmbGF0X2hhc2hfc2V0Iikg
eworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUi
IF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9t
aXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2Nm
bGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImZsYXRfaGFz
aF9zZXQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAg
ICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCisgICAgIjpyYXdfaGFzaF9zZXQiLAorICAgICIu
Li9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL21lbW9yeSIsCisgIF0KK30KKworc291cmNl
X3NldCgibm9kZV9oYXNoX21hcCIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2Nv
bmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0g
WyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVi
bGljID0gWworICAgICJub2RlX2hhc2hfbWFwLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpj
b250YWluZXJfbWVtb3J5IiwKKyAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAorICAgICI6
bm9kZV9oYXNoX3BvbGljeSIsCisgICAgIjpyYXdfaGFzaF9tYXAiLAorICAgICIuLi9tZW1vcnki
LAorICBdCit9CisKK3NvdXJjZV9zZXQoIm5vZGVfaGFzaF9zZXQiKSB7CisgIGNvbmZpZ3MgLT0g
WyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9
IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQor
ICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1
ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAibm9kZV9oYXNoX3NldC5oIiwKKyAgXQor
ICBkZXBzID0gWworICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgIjpoYXNoX2Z1bmN0aW9u
X2RlZmF1bHRzIiwKKyAgICAiOm5vZGVfaGFzaF9wb2xpY3kiLAorICAgICI6cmF3X2hhc2hfc2V0
IiwKKyAgICAiLi4vbWVtb3J5IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJjb250YWluZXJfbWVt
b3J5IikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVt
X2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5v
X2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZh
dWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImlu
dGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vbWVt
b3J5IiwKKyAgICAiLi4vdXRpbGl0eSIsCisgIF0KK30KKworc291cmNlX3NldCgiaGFzaF9mdW5j
dGlvbl9kZWZhdWx0cyIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0g
WworICAgICJpbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgiLAorICBdCisgIGRlcHMg
PSBbCisgICAgIi4uL2Jhc2U6Y29uZmlnIiwKKyAgICAiLi4vaGFzaCIsCisgICAgIi4uL3N0cmlu
Z3MiLAorICBdCit9CisKK3NvdXJjZV9zZXQoImhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciKSB7Cisg
IHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVy
OmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2Nv
bXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6
YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2VzID0g
WworICAgICJpbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmNjIiwKKyAgXQorICBwdWJs
aWMgPSBbCisgICAgImludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIsCisgIF0KKyAg
ZGVwcyA9IFsKKyAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICIuLi9tZXRhOnR5cGVf
dHJhaXRzIiwKKyAgICAiLi4vc3RyaW5ncyIsCisgIF0KK30KKworc291cmNlX3NldCgiaGFzaF9w
b2xpY3lfdGVzdGluZyIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9i
dWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAg
ICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJs
aWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29u
ZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5o
IiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9oYXNoIiwKKyAgICAiLi4vc3RyaW5ncyIsCisg
IF0KK30KKworc291cmNlX3NldCgiaGFzaF9wb2xpY3lfdHJhaXRzIikgeworICBjb25maWdzIC09
IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyAr
PSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0K
KyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNs
dWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL2hhc2hfcG9saWN5X3Ry
YWl0cy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKKyAg
XQorfQorCitzb3VyY2Vfc2V0KCJoYXNodGFibGVfZGVidWciKSB7CisgIGNvbmZpZ3MgLT0gWyAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsK
KyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBw
dWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVf
Y29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnLmgi
LAorICBdCisgIGRlcHMgPSBbCisgICAgIjpoYXNodGFibGVfZGVidWdfaG9va3MiLAorICBdCit9
CisKK3NvdXJjZV9zZXQoImhhc2h0YWJsZV9kZWJ1Z19ob29rcyIpIHsKKyAgY29uZmlncyAtPSBb
ICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0g
WworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisg
IHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVk
ZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9oYXNodGFibGVfZGVidWdf
aG9va3MuaCIsCisgIF0KK30KKworc291cmNlX3NldCgibm9kZV9oYXNoX3BvbGljeSIpIHsKKyAg
Y29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisg
IGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9j
b2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3Nf
Y2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
OmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9ub2Rl
X2hhc2hfcG9saWN5LmgiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInJhd19oYXNoX21hcCIpIHsK
KyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBd
CisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1
bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxh
Z3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9y
YXdfaGFzaF9tYXAuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNvbnRhaW5lcl9tZW1vcnki
LAorICAgICI6cmF3X2hhc2hfc2V0IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJyYXdfaGFzaF9z
ZXQiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1f
Y29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9f
Y2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1
bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImlu
dGVybmFsL3Jhd19oYXNoX3NldC5jYyIsCisgIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5h
bC9yYXdfaGFzaF9zZXQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNvbXByZXNzZWRfdHVw
bGUiLAorICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgIjpoYXNoX3BvbGljeV90cmFpdHMi
LAorICAgICI6aGFzaHRhYmxlX2RlYnVnX2hvb2tzIiwKKyAgICAiOmxheW91dCIsCisgICAgIi4u
L2Jhc2U6Yml0cyIsCisgICAgIi4uL2Jhc2U6Y29uZmlnIiwKKyAgICAiLi4vYmFzZTpjb3JlX2hl
YWRlcnMiLAorICAgICIuLi9iYXNlOmVuZGlhbiIsCisgICAgIi4uL21lbW9yeSIsCisgICAgIi4u
L21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi90eXBlczpvcHRpb25hbCIsCisgICAgIi4uL3V0
aWxpdHkiLAorICBdCit9CisKK3NvdXJjZV9zZXQoImxheW91dCIpIHsKKyAgY29uZmlncyAtPSBb
ICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0g
WworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisg
IHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVk
ZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9sYXlvdXQuaCIsCisgIF0K
KyAgZGVwcyA9IFsKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICIuLi9tZXRhOnR5
cGVfdHJhaXRzIiwKKyAgICAiLi4vc3RyaW5ncyIsCisgICAgIi4uL3R5cGVzOnNwYW4iLAorICAg
ICIuLi91dGlsaXR5IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ0cmFja2VkIikgeworICB0ZXN0
b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJv
bWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
ZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAg
ICJpbnRlcm5hbC90cmFja2VkLmgiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInVub3JkZXJlZF9t
YXBfY29uc3RydWN0b3JfdGVzdCIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0g
WyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9
IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQor
ICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1
ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9j
b25zdHJ1Y3Rvcl90ZXN0LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpoYXNoX2dlbmVyYXRv
cl90ZXN0aW5nIiwKKyAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICIvL3Rlc3Rpbmcv
Z3Rlc3QiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInVub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3Qi
KSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2Nv
bXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29u
ZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBb
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJs
aWMgPSBbCisgICAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QuaCIsCisgIF0K
KyAgZGVwcyA9IFsKKyAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICI6aGFzaF9w
b2xpY3lfdGVzdGluZyIsCisgICAgIi8vdGVzdGluZy9ndGVzdCIsCisgIF0KK30KKworc291cmNl
X3NldCgidW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdCIpIHsKKyAgdGVzdG9ubHkgPSB0cnVl
CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIg
XQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21p
dW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2Zs
YWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwv
dW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6
aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAg
ICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfc2V0
X2NvbnN0cnVjdG9yX3Rlc3QiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBb
CisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAg
cHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRl
X2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL3Vub3JkZXJlZF9zZXRfY29u
c3RydWN0b3JfdGVzdC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6aGFzaF9nZW5lcmF0b3Jf
dGVzdGluZyIsCisgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAiLy90ZXN0aW5nL2d0
ZXN0IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0Iikg
eworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21w
aWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZp
Zy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGlj
ID0gWworICAgICJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgiLAorICBdCisg
IGRlcHMgPSBbCisgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAiOmhhc2hfcG9s
aWN5X3Rlc3RpbmciLAorICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAorICBdCit9CisKK3NvdXJjZV9z
ZXQoInVub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQor
ICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0K
KyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVt
X2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFn
c19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL3Vu
b3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmhh
c2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAg
Ii8vdGVzdGluZy9ndGVzdCIsCisgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9DTWFrZUxpc3RzLnR4dAppbmRleCAxMjNl
NGM0ODQ5YWFiZTJlZWRlYTIxZjA1ZWZkMmQwMjYzODMwZmI4Li45ZTQwNjkwMmIwNTg1ZGVkYTNi
YTMwNzJiZWUwZmYyNzc0ODRlYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0NNYWtlTGlzdHMudHh0CkBAIC0xNywxOCAr
MTcsNDIgQEAKIAogbGlzdChBUFBFTkQgQ09OVEFJTkVSX1BVQkxJQ19IRUFERVJTCiAgICJmaXhl
ZF9hcnJheS5oIgorICAiZmxhdF9oYXNoX21hcC5oIgorICAiZmxhdF9oYXNoX3NldC5oIgogICAi
aW5saW5lZF92ZWN0b3IuaCIKKyAgIm5vZGVfaGFzaF9tYXAuaCIKKyAgIm5vZGVfaGFzaF9zZXQu
aCIKICkKIAogCiBsaXN0KEFQUEVORCBDT05UQUlORVJfSU5URVJOQUxfSEVBREVSUworICAiaW50
ZXJuYWwvY29tcHJlc3NlZF90dXBsZS5oIgorICAiaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5o
IgorICAiaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIgorICAiaW50ZXJuYWwvaGFz
aF9nZW5lcmF0b3JfdGVzdGluZy5oIgorICAiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5o
IgorICAiaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzLmgiCisgICJpbnRlcm5hbC9oYXNodGFi
bGVfZGVidWcuaCIKKyAgImludGVybmFsL2xheW91dC5oIgorICAiaW50ZXJuYWwvbm9kZV9oYXNo
X3BvbGljeS5oIgorICAiaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiCisgICJpbnRlcm5hbC9yYXdf
aGFzaF9zZXQuaCIKICAgImludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5oIgorICAiaW50
ZXJuYWwvdHJhY2tlZC5oIgorICAiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90
ZXN0LmgiCisgICJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgiCisgICJpbnRl
cm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgiCisgICJpbnRlcm5hbC91bm9yZGVy
ZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCIKKyAgImludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9v
a3VwX3Rlc3QuaCIKKyAgImludGVybmFsL3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaCIK
ICkKIAogCi1hYnNsX2hlYWRlcl9saWJyYXJ5KAorYWJzbF9saWJyYXJ5KAogICBUQVJHRVQKICAg
ICBhYnNsX2NvbnRhaW5lcgorICBTT1VSQ0VTCisgICAgImludGVybmFsL3Jhd19oYXNoX3NldC5j
YyIKICAgRVhQT1JUX05BTUUKICAgICBjb250YWluZXIKICkKQEAgLTE0MiwzICsxNjYsMTEgQEAg
YWJzbF90ZXN0KAogKQogCiAKK2Fic2xfdGVzdCgKKyAgVEFSR0VUCisgICAgcmF3X2hhc2hfc2V0
X3Rlc3QKKyAgU09VUkNFUworICAgICJpbnRlcm5hbC9yYXdfaGFzaF9zZXRfdGVzdC5jYyIKKyAg
UFVCTElDX0xJQlJBUklFUworICAgIGFic2w6OmJhc2UgYWJzbDo6aGFzaCBhYnNsX3Rocm93X2Rl
bGVnYXRlIHRlc3RfaW5zdGFuY2VfdHJhY2tlcl9saWIKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9maXhlZF9hcnJheS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5LmgKaW5k
ZXggMTgyMjU4ZjYyM2UxM2FlYTgwYjc1NzhlMTkwNmRhZDk0NzgzODhiMC4uNmQ5ZmE1Zjc0NWRj
Yzk1NjNjN2E3MDkxNjBkYjE4MzdjZmZiYzJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ZpeGVkX2FycmF5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5LmgKQEAgLTEz
OCw4ICsxMzgsOCBAQCBjbGFzcyBGaXhlZEFycmF5IHsKICAgZXhwbGljaXQgRml4ZWRBcnJheShz
aXplX3R5cGUgbiwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGEgPSBhbGxvY2F0b3JfdHlwZSgpKQog
ICAgICAgOiBzdG9yYWdlXyhuLCBhKSB7CiAgICAgaWYgKERlZmF1bHRDb25zdHJ1Y3RvcklzTm9u
VHJpdmlhbCgpKSB7Ci0gICAgICBtZW1vcnlfaW50ZXJuYWw6OkNvbnN0cnVjdFN0b3JhZ2Uoc3Rv
cmFnZV8uYWxsb2MoKSwgc3RvcmFnZV8uYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdG9yYWdlXy5lbmQoKSk7CisgICAgICBtZW1vcnlfaW50ZXJuYWw6
OkNvbnN0cnVjdFJhbmdlKHN0b3JhZ2VfLmFsbG9jKCksIHN0b3JhZ2VfLmJlZ2luKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VfLmVuZCgpKTsKICAgICB9
CiAgIH0KIApAQCAtMTQ3LDggKzE0Nyw4IEBAIGNsYXNzIEZpeGVkQXJyYXkgewogICBGaXhlZEFy
cmF5KHNpemVfdHlwZSBuLCBjb25zdCB2YWx1ZV90eXBlJiB2YWwsCiAgICAgICAgICAgICAgY29u
c3QgYWxsb2NhdG9yX3R5cGUmIGEgPSBhbGxvY2F0b3JfdHlwZSgpKQogICAgICAgOiBzdG9yYWdl
XyhuLCBhKSB7Ci0gICAgbWVtb3J5X2ludGVybmFsOjpDb25zdHJ1Y3RTdG9yYWdlKHN0b3JhZ2Vf
LmFsbG9jKCksIHN0b3JhZ2VfLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0b3JhZ2VfLmVuZCgpLCB2YWwpOworICAgIG1lbW9yeV9pbnRlcm5hbDo6Q29u
c3RydWN0UmFuZ2Uoc3RvcmFnZV8uYWxsb2MoKSwgc3RvcmFnZV8uYmVnaW4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VfLmVuZCgpLCB2YWwpOwogICB9CiAK
ICAgLy8gQ3JlYXRlcyBhbiBhcnJheSBpbml0aWFsaXplZCB3aXRoIHRoZSBzaXplIGFuZCBjb250
ZW50cyBvZiBgaW5pdF9saXN0YC4KQEAgLTE2MywxMyArMTYzLDEyIEBAIGNsYXNzIEZpeGVkQXJy
YXkgewogICBGaXhlZEFycmF5KEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LAogICAgICAg
ICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgICAg
IDogc3RvcmFnZV8oc3RkOjpkaXN0YW5jZShmaXJzdCwgbGFzdCksIGEpIHsKLSAgICBtZW1vcnlf
aW50ZXJuYWw6OkNvcHlUb1N0b3JhZ2VGcm9tUmFuZ2Uoc3RvcmFnZV8uYWxsb2MoKSwgc3RvcmFn
ZV8uYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zmlyc3QsIGxhc3QpOworICAgIG1lbW9yeV9pbnRlcm5hbDo6Q29weVJhbmdlKHN0b3JhZ2VfLmFs
bG9jKCksIHN0b3JhZ2VfLmJlZ2luKCksIGZpcnN0LCBsYXN0KTsKICAgfQogCiAgIH5GaXhlZEFy
cmF5KCkgbm9leGNlcHQgewogICAgIGZvciAoYXV0byogY3VyID0gc3RvcmFnZV8uYmVnaW4oKTsg
Y3VyICE9IHN0b3JhZ2VfLmVuZCgpOyArK2N1cikgewotICAgICAgQWxsb2NhdG9yVHJhaXRzOjpk
ZXN0cm95KCpzdG9yYWdlXy5hbGxvYygpLCBjdXIpOworICAgICAgQWxsb2NhdG9yVHJhaXRzOjpk
ZXN0cm95KHN0b3JhZ2VfLmFsbG9jKCksIGN1cik7CiAgICAgfQogICB9CiAKQEAgLTM1OSw2ICsz
NTgsMTMgQEAgY2xhc3MgRml4ZWRBcnJheSB7CiAgIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oY29u
c3QgRml4ZWRBcnJheSYgbGhzLCBjb25zdCBGaXhlZEFycmF5JiByaHMpIHsKICAgICByZXR1cm4g
IShsaHMgPCByaHMpOwogICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CisgIGZyaWVuZCBI
IEFic2xIYXNoVmFsdWUoSCBoLCBjb25zdCBGaXhlZEFycmF5JiB2KSB7CisgICAgcmV0dXJuIEg6
OmNvbWJpbmUoSDo6Y29tYmluZV9jb250aWd1b3VzKHN0ZDo6bW92ZShoKSwgdi5kYXRhKCksIHYu
c2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICB2LnNpemUoKSk7CisgIH0KKwogIHByaXZh
dGU6CiAgIC8vIFN0b3JhZ2VFbGVtZW50CiAgIC8vCkBAIC00NDYsMTUgKzQ1MiwxNSBAQCBjbGFz
cyBGaXhlZEFycmF5IHsKICAgICAgIGlmIChVc2luZ0lubGluZWRTdG9yYWdlKHNpemUoKSkpIHsK
ICAgICAgICAgSW5saW5lZFN0b3JhZ2U6OkFubm90YXRlRGVzdHJ1Y3Qoc2l6ZSgpKTsKICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgIEFsbG9jYXRvclRyYWl0czo6ZGVhbGxvY2F0ZSgqYWxsb2MoKSwg
QXNWYWx1ZVR5cGUoYmVnaW4oKSksIHNpemUoKSk7CisgICAgICAgIEFsbG9jYXRvclRyYWl0czo6
ZGVhbGxvY2F0ZShhbGxvYygpLCBBc1ZhbHVlVHlwZShiZWdpbigpKSwgc2l6ZSgpKTsKICAgICAg
IH0KICAgICB9CiAKICAgICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVfYWxs
b2NfLnRlbXBsYXRlIGdldDwwPigpOyB9CiAgICAgU3RvcmFnZUVsZW1lbnQqIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gZGF0YV87IH0KICAgICBTdG9yYWdlRWxlbWVudCogZW5kKCkgY29uc3QgeyBy
ZXR1cm4gYmVnaW4oKSArIHNpemUoKTsgfQotICAgIGFsbG9jYXRvcl90eXBlKiBhbGxvYygpIHsK
LSAgICAgIHJldHVybiBzdGQ6OmFkZHJlc3NvZihzaXplX2FsbG9jXy50ZW1wbGF0ZSBnZXQ8MT4o
KSk7CisgICAgYWxsb2NhdG9yX3R5cGUmIGFsbG9jKCkgeworICAgICAgcmV0dXJuIHNpemVfYWxs
b2NfLnRlbXBsYXRlIGdldDwxPigpOwogICAgIH0KIAogICAgcHJpdmF0ZToKQEAgLTQ2OCw3ICs0
NzQsNyBAQCBjbGFzcyBGaXhlZEFycmF5IHsKICAgICAgICAgcmV0dXJuIElubGluZWRTdG9yYWdl
OjpkYXRhKCk7CiAgICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxTdG9yYWdlRWxlbWVudCo+KAotICAgICAgICAgICAgQWxsb2NhdG9yVHJhaXRzOjphbGxvY2F0
ZSgqYWxsb2MoKSwgc2l6ZSgpKSk7CisgICAgICAgICAgICBBbGxvY2F0b3JUcmFpdHM6OmFsbG9j
YXRlKGFsbG9jKCksIHNpemUoKSkpOwogICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ZpeGVkX2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9maXhlZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKaW5kZXggYzEy
M2MyYTFjMGQyZDM4NDg0MDU2YzM0Zjg5MTAxNDg5ZTVjMTQyNC4uZGE2M2RiZmUzOGU3MWQzNGEz
M2U4MDBkZmU0MmFhOWYzZWEzMTdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVk
X2FycmF5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4
ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCkBAIC05Nyw3ICs5Nyw3IEBAIHRlc3Rp
bmc6OkFzc2VydGlvblJlc3VsdCBSZWFkTWVtb3J5KEZpeGVkQXJyKiBmaXhlZF9hcnIpIHsKIAog
VEVTVChGaXhlZEFycmF5RXhjZXB0aW9uU2FmZXR5LCBGaWxsKSB7CiAgIGF1dG8gdGVzdF9maWxs
ID0gdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCi0gICAgICAgICAgICAgICAg
ICAgICAgIC5XaXRoSW52YXJpYW50cyhSZWFkTWVtb3J5KQorICAgICAgICAgICAgICAgICAgICAg
ICAuV2l0aENvbnRyYWN0cyhSZWFkTWVtb3J5KQogICAgICAgICAgICAgICAgICAgICAgICAuV2l0
aE9wZXJhdGlvbihbJl0oRml4ZWRBcnIqIGZpeGVkX2Fycl9wdHIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdXRvIHRocm93ZXIgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
aHJvd2VyKGtVcGRhdGVkVmFsdWUsIHRlc3Rpbmc6Om5vdGhyb3dfY3Rvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9m
aXhlZF9hcnJheV90ZXN0LmNjCmluZGV4IGIwN2ViY2I2ZDljYTZiMGU0MjZjYTYzYWMzNGMwNmY4
MTQwOTgzY2UuLjIwNWZmNDFmZTExNDJiYmU4ZTE4N2E0NGYxN2E1YTVhNzNiNWM1NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV90ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9maXhlZF9hcnJheV90ZXN0LmNjCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
Z21vY2svZ21vY2suaCIKICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgImFic2wv
YmFzZS9pbnRlcm5hbC9leGNlcHRpb25fdGVzdGluZy5oIgorI2luY2x1ZGUgImFic2wvaGFzaC9o
YXNoX3Rlc3RpbmcuaCIKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKIAogdXNpbmcg
Ojp0ZXN0aW5nOjpFbGVtZW50c0FyZUFycmF5OwpAQCAtODY3LDQgKzg2OCw1IEBAIFRFU1QoRml4
ZWRBcnJheVRlc3QsIEFkZHJlc3NTYW5pdGl6ZXJBbm5vdGF0aW9uczQpIHsKICAgRVhQRUNUX0RF
QVRIKHJhd1syMV0gPSBUaHJlZUludHMoKSwgImNvbnRhaW5lci1vdmVyZmxvdyIpOwogfQogI2Vu
ZGlmICAvLyBBRERSRVNTX1NBTklUSVpFUgorCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfbWFwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9o
YXNoX21hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1NTcwZDEwMDQ0MTMxNjZhYmRkZGI2YzU0NmJiNTdjYWJk
NGJmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcC5o
CkBAIC0wLDAgKzEsNTI4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBmbGF0X2hhc2hfbWFwLmgK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQW4gYGFic2w6OmZsYXRfaGFzaF9tYXA8
SywgVj5gIGlzIGFuIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgb2YKKy8vIHVuaXF1
ZSBrZXlzIGFuZCBhc3NvY2lhdGVkIHZhbHVlcyBkZXNpZ25lZCB0byBiZSBhIG1vcmUgZWZmaWNp
ZW50IHJlcGxhY2VtZW50CisvLyBmb3IgYHN0ZDo6dW5vcmRlcmVkX21hcGAuIExpa2UgYHVub3Jk
ZXJlZF9tYXBgLCBzZWFyY2gsIGluc2VydGlvbiwgYW5kCisvLyBkZWxldGlvbiBvZiBtYXAgZWxl
bWVudHMgY2FuIGJlIGRvbmUgYXMgYW4gYE8oMSlgIG9wZXJhdGlvbi4gSG93ZXZlciwKKy8vIGBm
bGF0X2hhc2hfbWFwYCAoYW5kIG90aGVyIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXJz
IGtub3duIGFzIHRoZQorLy8gY29sbGVjdGlvbiBvZiBBYnNlaWwgIlN3aXNzIHRhYmxlcyIpIGNv
bnRhaW4gb3RoZXIgb3B0aW1pemF0aW9ucyB0aGF0IHJlc3VsdAorLy8gaW4gYm90aCBtZW1vcnkg
YW5kIGNvbXB1dGF0aW9uIGFkdmFudGFnZXMuCisvLworLy8gSW4gbW9zdCBjYXNlcywgeW91ciBk
ZWZhdWx0IGNob2ljZSBmb3IgYSBoYXNoIG1hcCBzaG91bGQgYmUgYSBtYXAgb2YgdHlwZQorLy8g
YGZsYXRfaGFzaF9tYXBgLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0ZMQVRfSEFTSF9NQVBf
SF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfRkxBVF9IQVNIX01BUF9IXworCisjaW5jbHVkZSA8
Y3N0ZGRlZj4KKyNpbmNsdWRlIDxuZXc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVk
ZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5l
cl9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0
aW9uX2RlZmF1bHRzLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisjaW5jbHVkZSAiYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0
CisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+
CitzdHJ1Y3QgRmxhdEhhc2hNYXBQb2xpY3k7Cit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2lu
dGVybmFsCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNsOjpmbGF0X2hhc2hfbWFw
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEFuIGBhYnNsOjpmbGF0X2hhc2hfbWFw
PEssIFY+YCBpcyBhbiB1bm9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIHdoaWNoCisvLyBo
YXMgYmVlbiBvcHRpbWl6ZWQgZm9yIGJvdGggc3BlZWQgYW5kIG1lbW9yeSBmb290cHJpbnQgaW4g
bW9zdCBjb21tb24gdXNlCisvLyBjYXNlcy4gSXRzIGludGVyZmFjZSBpcyBzaW1pbGFyIHRvIHRo
YXQgb2YgYHN0ZDo6dW5vcmRlcmVkX21hcDxLLCBWPmAgd2l0aAorLy8gdGhlIGZvbGxvd2luZyBu
b3RhYmxlIGRpZmZlcmVuY2VzOgorLy8KKy8vICogUmVxdWlyZXMga2V5cyB0aGF0IGFyZSBDb3B5
Q29uc3RydWN0aWJsZQorLy8gKiBSZXF1aXJlcyB2YWx1ZXMgdGhhdCBhcmUgTW92ZUNvbnN0cnVj
dGlibGUKKy8vICogU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHRocm91Z2ggYGZpbmQo
KWAsIGBvcGVyYXRvcltdKClgIGFuZAorLy8gICBgaW5zZXJ0KClgLCBwcm92aWRlZCB0aGF0IHRo
ZSBtYXAgaXMgcHJvdmlkZWQgYSBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMKKy8vICAgaGFzaGlu
ZyBmdW5jdGlvbiBhbmQgZXF1YWxpdHkgb3BlcmF0b3IuCisvLyAqIEludmFsaWRhdGVzIGFueSBy
ZWZlcmVuY2VzIGFuZCBwb2ludGVycyB0byBlbGVtZW50cyB3aXRoaW4gdGhlIHRhYmxlIGFmdGVy
CisvLyAgIGByZWhhc2goKWAuCisvLyAqIENvbnRhaW5zIGEgYGNhcGFjaXR5KClgIG1lbWJlciBm
dW5jdGlvbiBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgZWxlbWVudAorLy8gICBzbG90cyAob3Bl
biwgZGVsZXRlZCwgYW5kIGVtcHR5KSB3aXRoaW4gdGhlIGhhc2ggbWFwLgorLy8gKiBSZXR1cm5z
IGB2b2lkYCBmcm9tIHRoZSBgZXJhc2UoaXRlcmF0b3IpYCBvdmVybG9hZC4KKy8vCisvLyBCeSBk
ZWZhdWx0LCBgZmxhdF9oYXNoX21hcGAgdXNlcyB0aGUgYGFic2w6Okhhc2hgIGhhc2hpbmcgZnJh
bWV3b3JrLgorLy8gQWxsIGZ1bmRhbWVudGFsIGFuZCBBYnNlaWwgdHlwZXMgdGhhdCBzdXBwb3J0
IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3JrIGhhdmUKKy8vIGEgY29tcGF0aWJsZSBlcXVhbGl0
eSBvcGVyYXRvciBmb3IgY29tcGFyaW5nIGluc2VydGlvbnMgaW50byBgZmxhdF9oYXNoX21hcGAu
CisvLyBJZiB5b3VyIHR5cGUgaXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgdGhlIGBhc2JsOjpIYXNo
YCBmcmFtZXdvcmssIHNlZQorLy8gYWJzbC9oYXNoL2hhc2guaCBmb3IgaW5mb3JtYXRpb24gb24g
ZXh0ZW5kaW5nIEFic2VpbCBoYXNoaW5nIHRvIHVzZXItZGVmaW5lZAorLy8gdHlwZXMuCisvLwor
Ly8gTk9URTogQSBgZmxhdF9oYXNoX21hcGAgc3RvcmVzIGl0cyB2YWx1ZSB0eXBlcyBkaXJlY3Rs
eSBpbnNpZGUgaXRzCisvLyBpbXBsZW1lbnRhdGlvbiBhcnJheSB0byBhdm9pZCBtZW1vcnkgaW5k
aXJlY3Rpb24uIEJlY2F1c2UgYSBgZmxhdF9oYXNoX21hcGAKKy8vIGlzIGRlc2lnbmVkIHRvIG1v
dmUgZGF0YSB3aGVuIHJlaGFzaGVkLCBtYXAgdmFsdWVzIHdpbGwgbm90IHJldGFpbiBwb2ludGVy
CisvLyBzdGFiaWxpdHkuIElmIHlvdSByZXF1aXJlIHBvaW50ZXIgc3RhYmlsaXR5LCBvciB5b3Vy
IHZhbHVlcyBhcmUgbGFyZ2UsCisvLyBjb25zaWRlciB1c2luZyBgYWJzbDo6ZmxhdF9oYXNoX21h
cDxLZXksIHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZT4+YCBpbnN0ZWFkLgorLy8gSWYgeW91ciB0eXBl
cyBhcmUgbm90IG1vdmVhYmxlIG9yIHlvdSByZXF1aXJlIHBvaW50ZXIgc3RhYmlsaXR5IGZvciBr
ZXlzLAorLy8gY29uc2lkZXIgYGFic2w6Om5vZGVfaGFzaF9tYXBgLgorLy8KKy8vIEV4YW1wbGU6
CisvLworLy8gICAvLyBDcmVhdGUgYSBmbGF0IGhhc2ggbWFwIG9mIHRocmVlIHN0cmluZ3MgKHRo
YXQgbWFwIHRvIHN0cmluZ3MpCisvLyAgIGFic2w6OmZsYXRfaGFzaF9tYXA8c3RkOjpzdHJpbmcs
IHN0ZDo6c3RyaW5nPiBkdWNrcyA9CisvLyAgICAge3siYSIsICJodWV5In0sIHsiYiIsICJkZXdl
eSJ9LCB7ImMiLCAibG91aWUifX07CisvLworLy8gIC8vIEluc2VydCBhIG5ldyBlbGVtZW50IGlu
dG8gdGhlIGZsYXQgaGFzaCBtYXAKKy8vICBkdWNrcy5pbnNlcnQoeyJkIiwgImRvbmFsZCJ9KTsK
Ky8vCisvLyAgLy8gRm9yY2UgYSByZWhhc2ggb2YgdGhlIGZsYXQgaGFzaCBtYXAKKy8vICBkdWNr
cy5yZWhhc2goMCk7CisvLworLy8gIC8vIEZpbmQgdGhlIGVsZW1lbnQgd2l0aCB0aGUga2V5ICJi
IgorLy8gIHN0ZDo6c3RyaW5nIHNlYXJjaF9rZXkgPSAiYiI7CisvLyAgYXV0byByZXN1bHQgPSBk
dWNrcy5maW5kKHNlYXJjaF9rZXkpOworLy8gIGlmIChyZXN1bHQgIT0gZHVja3MuZW5kKCkpIHsK
Ky8vICAgIHN0ZDo6Y291dCA8PCAiUmVzdWx0OiAiIDw8IHJlc3VsdC0+c2Vjb25kIDw8IHN0ZDo6
ZW5kbDsKKy8vICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgViwKKyAgICAgICAgICBjbGFz
cyBIYXNoID0gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2RlZmF1bHRfaGFzaDxLPiwK
KyAgICAgICAgICBjbGFzcyBFcSA9IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZh
dWx0X2VxPEs+LAorICAgICAgICAgIGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPHN0
ZDo6cGFpcjxjb25zdCBLLCBWPj4+CitjbGFzcyBmbGF0X2hhc2hfbWFwIDogcHVibGljIGFic2w6
OmNvbnRhaW5lcl9pbnRlcm5hbDo6cmF3X2hhc2hfbWFwPAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkZsYXRIYXNoTWFwUG9saWN5PEssIFY+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoLCBFcSwgQWxsb2NhdG9yPiB7CisgIHVzaW5n
IEJhc2UgPSB0eXBlbmFtZSBmbGF0X2hhc2hfbWFwOjpyYXdfaGFzaF9tYXA7CisKKyBwdWJsaWM6
CisgIGZsYXRfaGFzaF9tYXAoKSB7fQorICB1c2luZyBCYXNlOjpCYXNlOworCisgIC8vIGZsYXRf
aGFzaF9tYXA6OmJlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUg
YmVnaW5uaW5nIG9mIHRoZSBgZmxhdF9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmJlZ2luOwor
CisgIC8vIGZsYXRfaGFzaF9tYXA6OmNiZWdpbigpCisgIC8vCisgIC8vIFJldHVybnMgYSBjb25z
dCBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgZmxhdF9oYXNoX21hcGAuCisgIHVz
aW5nIEJhc2U6OmNiZWdpbjsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpjZW5kKCkKKyAgLy8KKyAg
Ly8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBmbGF0X2hhc2hf
bWFwYC4KKyAgdXNpbmcgQmFzZTo6Y2VuZDsKKworICAvLyBmbGF0X2hhc2hfbWFwOjplbmQoKQor
ICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBmbGF0X2hh
c2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6ZW5kOworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmNhcGFj
aXR5KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnQgc2xvdHMgKGFz
c2lnbmVkLCBkZWxldGVkLCBhbmQgZW1wdHkpCisgIC8vIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGBm
bGF0X2hhc2hfbWFwYC4KKyAgLy8KKyAgLy8gTk9URTogdGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMg
cGFydGljdWxhciB0byBgYWJzbDo6ZmxhdF9oYXNoX21hcGAgYW5kIGlzCisgIC8vIG5vdCBwcm92
aWRlZCBpbiB0aGUgYHN0ZDo6dW5vcmRlcmVkX21hcGAgQVBJLgorICB1c2luZyBCYXNlOjpjYXBh
Y2l0eTsKKworICAvLyBmbGF0X2hhc2hfbWFwOjplbXB0eSgpCisgIC8vCisgIC8vIFJldHVybnMg
d2hldGhlciBvciBub3QgdGhlIGBmbGF0X2hhc2hfbWFwYCBpcyBlbXB0eS4KKyAgdXNpbmcgQmFz
ZTo6ZW1wdHk7CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6bWF4X3NpemUoKQorICAvLworICAvLyBS
ZXR1cm5zIHRoZSBsYXJnZXN0IHRoZW9yZXRpY2FsIHBvc3NpYmxlIG51bWJlciBvZiBlbGVtZW50
cyB3aXRoaW4gYQorICAvLyBgZmxhdF9oYXNoX21hcGAgdW5kZXIgY3VycmVudCBtZW1vcnkgY29u
c3RyYWludHMuIFRoaXMgdmFsdWUgY2FuIGJlIHRob3VnaHQKKyAgLy8gb2YgdGhlIGxhcmdlc3Qg
dmFsdWUgb2YgYHN0ZDo6ZGlzdGFuY2UoYmVnaW4oKSwgZW5kKCkpYCBmb3IgYQorICAvLyBgZmxh
dF9oYXNoX21hcDxLLCBWPmAuCisgIHVzaW5nIEJhc2U6Om1heF9zaXplOworCisgIC8vIGZsYXRf
aGFzaF9tYXA6OnNpemUoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVu
dHMgY3VycmVudGx5IHdpdGhpbiB0aGUgYGZsYXRfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpz
aXplOworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmNsZWFyKCkKKyAgLy8KKyAgLy8gUmVtb3ZlcyBh
bGwgZWxlbWVudHMgZnJvbSB0aGUgYGZsYXRfaGFzaF9tYXBgLiBJbnZhbGlkYXRlcyBhbnkgcmVm
ZXJlbmNlcywKKyAgLy8gcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyByZWZlcnJpbmcgdG8gY29udGFp
bmVkIGVsZW1lbnRzLgorICAvLworICAvLyBOT1RFOiB0aGlzIG9wZXJhdGlvbiBtYXkgc2hyaW5r
IHRoZSB1bmRlcmx5aW5nIGJ1ZmZlci4gVG8gYXZvaWQgc2hyaW5raW5nCisgIC8vIHRoZSB1bmRl
cmx5aW5nIGJ1ZmZlciBjYWxsIGBlcmFzZShiZWdpbigpLCBlbmQoKSlgLgorICB1c2luZyBCYXNl
OjpjbGVhcjsKKworICAvLyBmbGF0X2hhc2hfbWFwOjplcmFzZSgpCisgIC8vCisgIC8vIEVyYXNl
cyBlbGVtZW50cyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfbWFwYC4gRXJhc2luZyBkb2VzIG5vdCB0
cmlnZ2VyIGEKKyAgLy8gcmVoYXNoLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8K
KyAgLy8gdm9pZCBlcmFzZShjb25zdF9pdGVyYXRvciBwb3MpOgorICAvLworICAvLyAgIEVyYXNl
cyB0aGUgZWxlbWVudCBhdCBgcG9zaXRpb25gIG9mIHRoZSBgZmxhdF9oYXNoX21hcGAsIHJldHVy
bmluZworICAvLyAgIGB2b2lkYC4KKyAgLy8KKyAgLy8gICBOT1RFOiB0aGlzIHJldHVybiBiZWhh
dmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIFNUTCBjb250YWluZXJzIGluCisgIC8vICAg
Z2VuZXJhbCBhbmQgYHN0ZDo6dW5vcmRlcmVkX21hcGAgaW4gcGFydGljdWxhci4KKyAgLy8KKyAg
Ly8gaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxh
c3QpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudHMgaW4gdGhlIG9wZW4gaW50ZXJ2
YWwgW2BmaXJzdGAsIGBsYXN0YCksIHJldHVybmluZyBhbgorICAvLyAgIGl0ZXJhdG9yIHBvaW50
aW5nIHRvIGBsYXN0YC4KKyAgLy8KKyAgLy8gc2l6ZV90eXBlIGVyYXNlKGNvbnN0IGtleV90eXBl
JiBrZXkpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCB3aXRoIHRoZSBtYXRjaGlu
ZyBrZXksIGlmIGl0IGV4aXN0cy4KKyAgdXNpbmcgQmFzZTo6ZXJhc2U7CisKKyAgLy8gZmxhdF9o
YXNoX21hcDo6aW5zZXJ0KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBz
cGVjaWZpZWQgdmFsdWUgaW50byB0aGUgYGZsYXRfaGFzaF9tYXBgLAorICAvLyByZXR1cm5pbmcg
YW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQsIHByb3Zp
ZGVkIHRoYXQKKyAgLy8gYW4gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkgZG9lcyBub3QgYWxy
ZWFkeSBleGlzdC4gSWYgcmVoYXNoaW5nIG9jY3VycworICAvLyBkdWUgdG8gdGhlIGluc2VydGlv
biwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuIE92ZXJsb2FkcyBhcmUgbGlzdGVkCisg
IC8vIGJlbG93LgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0KGNv
bnN0IGluaXRfdHlwZSYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSBpbnRv
IHRoZSBgZmxhdF9oYXNoX21hcGAuIFJldHVybnMgYSBwYWlyIGNvbnNpc3Rpbmcgb2YgYW4KKyAg
Ly8gICBpdGVyYXRvciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3IgdG8gdGhlIGVsZW1lbnQg
dGhhdCBwcmV2ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uKSBhbmQgYSBib29sIGRlbm90aW5n
IHdoZXRoZXIgdGhlIGluc2VydGlvbiB0b29rIHBsYWNlLgorICAvLworICAvLyBzdGQ6OnBhaXI8
aXRlcmF0b3IsYm9vbD4gaW5zZXJ0KFQmJiB2YWx1ZSk6CisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRv
cixib29sPiBpbnNlcnQoaW5pdF90eXBlJiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMg
YSBtb3ZlYWJsZSB2YWx1ZSBpbnRvIHRoZSBgZmxhdF9oYXNoX21hcGAuIFJldHVybnMgYSBwYWly
CisgIC8vICAgY29uc2lzdGluZyBvZiBhbiBpdGVyYXRvciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVu
dCAob3IgdG8gdGhlIGVsZW1lbnQgdGhhdAorICAvLyAgIHByZXZlbnRlZCB0aGUgaW5zZXJ0aW9u
KSBhbmQgYSBib29sIGRlbm90aW5nIHdoZXRoZXIgdGhlIGluc2VydGlvbiB0b29rCisgIC8vICAg
cGxhY2UuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBj
b25zdCBpbml0X3R5cGUmIHZhbHVlKToKKyAgLy8gaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJh
dG9yIGhpbnQsIFQmJiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRv
ciBoaW50LCBpbml0X3R5cGUmJiB2YWx1ZSk7CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHZhbHVl
LCB1c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRgIGFzIGEgbm9uLWJpbmRpbmcgc3VnZ2VzdGlv
bgorICAvLyAgIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaC4gUmV0dXJu
cyBhbiBpdGVyYXRvciB0byB0aGUKKyAgLy8gICBpbnNlcnRlZCBlbGVtZW50LCBvciB0byB0aGUg
ZXhpc3RpbmcgZWxlbWVudCB0aGF0IHByZXZlbnRlZCB0aGUKKyAgLy8gICBpbnNlcnRpb24uCisg
IC8vCisgIC8vIHZvaWQgaW5zZXJ0KElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3Ig
bGFzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHJhbmdlIG9mIHZhbHVlcyBbYGZpcnN0YCwg
YGxhc3RgKS4KKyAgLy8KKyAgLy8gICBOT1RFOiBBbHRob3VnaCB0aGUgU1RMIGRvZXMgbm90IHNw
ZWNpZnkgd2hpY2ggZWxlbWVudCBtYXkgYmUgaW5zZXJ0ZWQgaWYKKyAgLy8gICBtdWx0aXBsZSBr
ZXlzIGNvbXBhcmUgZXF1aXZhbGVudGx5LCBmb3IgYGZsYXRfaGFzaF9tYXBgIHdlIGd1YXJhbnRl
ZSB0aGUKKyAgLy8gICBmaXJzdCBtYXRjaCBpcyBpbnNlcnRlZC4KKyAgLy8KKyAgLy8gdm9pZCBp
bnNlcnQoc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaWxpc3QpOgorICAvLworICAv
LyAgIEluc2VydHMgdGhlIGVsZW1lbnRzIHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBgaWxp
c3RgLgorICAvLworICAvLyAgIE5PVEU6IEFsdGhvdWdoIHRoZSBTVEwgZG9lcyBub3Qgc3BlY2lm
eSB3aGljaCBlbGVtZW50IG1heSBiZSBpbnNlcnRlZCBpZgorICAvLyAgIG11bHRpcGxlIGtleXMg
Y29tcGFyZSBlcXVpdmFsZW50bHkgd2l0aGluIHRoZSBpbml0aWFsaXplciBsaXN0LCBmb3IKKyAg
Ly8gICBgZmxhdF9oYXNoX21hcGAgd2UgZ3VhcmFudGVlIHRoZSBmaXJzdCBtYXRjaCBpcyBpbnNl
cnRlZC4KKyAgdXNpbmcgQmFzZTo6aW5zZXJ0OworCisgIC8vIGZsYXRfaGFzaF9tYXA6Omluc2Vy
dF9vcl9hc3NpZ24oKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNp
ZmllZCB2YWx1ZSBpbnRvIHRoZSBgZmxhdF9oYXNoX21hcGAgcHJvdmlkZWQKKyAgLy8gdGhhdCBh
IHZhbHVlIHdpdGggdGhlIGdpdmVuIGtleSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LCBvciByZXBs
YWNlcyBpdCB3aXRoCisgIC8vIHRoZSBlbGVtZW50IHZhbHVlIGlmIGEga2V5IGZvciB0aGF0IHZh
bHVlIGFscmVhZHkgZXhpc3RzLCByZXR1cm5pbmcgYW4KKyAgLy8gaXRlcmF0b3IgcG9pbnRpbmcg
dG8gdGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQuICBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZQor
ICAvLyB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgZXhpc3RpbmcgaXRlcmF0b3JzIGFyZSBpbnZhbGlk
YXRlZC4gT3ZlcmxvYWRzIGFyZQorICAvLyBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIHBhaXI8
aXRlcmF0b3IsIGJvb2w+IGluc2VydF9vcl9hc3NpZ24oY29uc3QgaW5pdF90eXBlJiBrLCBUJiYg
b2JqKToKKyAgLy8gcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fzc2lnbihpbml0X3R5
cGUmJiBrLCBUJiYgb2JqKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzL0Fzc2lnbnMgKG9yIG1vdmVz
KSB0aGUgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIGtleSBpbnRvIHRoZQorICAvLyAgIGBmbGF0
X2hhc2hfbWFwYC4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgaW5zZXJ0X29yX2Fzc2lnbihjb25zdF9p
dGVyYXRvciBoaW50LAorICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaXRf
dHlwZSYgaywgVCYmIG9iaik6CisgIC8vIGl0ZXJhdG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3Rf
aXRlcmF0b3IgaGludCwgaW5pdF90eXBlJiYgaywgVCYmIG9iaik6CisgIC8vCisgIC8vICAgSW5z
ZXJ0cy9Bc3NpZ25zIChvciBtb3ZlcykgdGhlIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBrZXkg
aW50byB0aGUKKyAgLy8gICBgZmxhdF9oYXNoX21hcGAgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBo
aW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hlcmUgdG8gYmVn
aW4gdGhlIGluc2VydGlvbiBzZWFyY2guCisgIHVzaW5nIEJhc2U6Omluc2VydF9vcl9hc3NpZ247
CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6ZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4g
ZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFj
ZQorICAvLyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfbWFwYCwgcHJvdmlkZWQgdGhhdCBubyBlbGVt
ZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8g
VGhlIGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBh
biBlbGVtZW50IHdpdGggdGhlCisgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBj
YXNlIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVk
IGltbWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9lbXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBu
b3QKKyAgLy8gY29weWFibGUgb3IgbW92ZWFibGUuCisgIC8vCisgIC8vIElmIHJlaGFzaGluZyBv
Y2N1cnMgZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVk
LgorICB1c2luZyBCYXNlOjplbXBsYWNlOworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmVtcGxhY2Vf
aGludCgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZh
bHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBmbGF0X2hh
c2hfbWFwYCwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nCisg
IC8vIHN1Z2dlc3Rpb24gZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLCBh
bmQgb25seSBpbnNlcnRzCisgIC8vIHByb3ZpZGVkIHRoYXQgbm8gZWxlbWVudCB3aXRoIHRoZSBn
aXZlbiBrZXkgYWxyZWFkeSBleGlzdHMuCisgIC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBj
b25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQor
ICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3Ry
dWN0ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJlZmVy
IGB0cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90CisgIC8vIGNvcHlhYmxlIG9y
IG1vdmVhYmxlLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5z
ZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1w
bGFjZV9oaW50OworCisgIC8vIGZsYXRfaGFzaF9tYXA6OnRyeV9lbXBsYWNlKCkKKyAgLy8KKyAg
Ly8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29uc3RydWN0
aW5nIGl0IGluLXBsYWNlCisgIC8vIHdpdGhpbiB0aGUgYGZsYXRfaGFzaF9tYXBgLCBwcm92aWRl
ZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8vIGFscmVhZHkgZXhpc3Rz
LiBVbmxpa2UgYGVtcGxhY2UoKWAsIGlmIGFuIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5Cisg
IC8vIGFscmVhZHkgZXhpc3RzLCB3ZSBndWFyYW50ZWUgdGhhdCBubyBlbGVtZW50IGlzIGNvbnN0
cnVjdGVkLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0
aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgLy8gT3ZlcmxvYWRzIGFyZSBs
aXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gdHJ5X2VtcGxh
Y2UoY29uc3Qga2V5X3R5cGUmIGssIEFyZ3MmJi4uLiBhcmdzKToKKyAgLy8gICBwYWlyPGl0ZXJh
dG9yLCBib29sPiB0cnlfZW1wbGFjZShrZXlfdHlwZSYmIGssIEFyZ3MmJi4uLiBhcmdzKToKKyAg
Ly8KKyAgLy8gSW5zZXJ0cyAodmlhIGNvcHkgb3IgbW92ZSkgdGhlIGVsZW1lbnQgb2YgdGhlIHNw
ZWNpZmllZCBrZXkgaW50byB0aGUKKyAgLy8gYGZsYXRfaGFzaF9tYXBgLgorICAvLworICAvLyAg
IGl0ZXJhdG9yIHRyeV9lbXBsYWNlKGNvbnN0X2l0ZXJhdG9yIGhpbnQsCisgIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgaW5pdF90eXBlJiBrLCBBcmdzJiYuLi4gYXJncyk6CisgIC8v
ICAgaXRlcmF0b3IgdHJ5X2VtcGxhY2UoY29uc3RfaXRlcmF0b3IgaGludCwgaW5pdF90eXBlJiYg
aywgQXJncyYmLi4uIGFyZ3MpOgorICAvLworICAvLyBJbnNlcnRzICh2aWEgY29weSBvciBtb3Zl
KSB0aGUgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIGtleSBpbnRvIHRoZQorICAvLyBgZmxhdF9o
YXNoX21hcGAgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1
Z2dlc3Rpb24KKyAgLy8gZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLgor
ICB1c2luZyBCYXNlOjp0cnlfZW1wbGFjZTsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpleHRyYWN0
KCkKKyAgLy8KKyAgLy8gRXh0cmFjdHMgdGhlIGluZGljYXRlZCBlbGVtZW50LCBlcmFzaW5nIGl0
IGluIHRoZSBwcm9jZXNzLCBhbmQgcmV0dXJucyBpdAorICAvLyBhcyBhIEMrKzE3LWNvbXBhdGli
bGUgbm9kZSBoYW5kbGUuIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyBu
b2RlX3R5cGUgZXh0cmFjdChjb25zdF9pdGVyYXRvciBwb3NpdGlvbik6CisgIC8vCisgIC8vICAg
RXh0cmFjdHMgdGhlIGtleSx2YWx1ZSBwYWlyIG9mIHRoZSBlbGVtZW50IGF0IHRoZSBpbmRpY2F0
ZWQgcG9zaXRpb24gYW5kCisgIC8vICAgcmV0dXJucyBhIG5vZGUgaGFuZGxlIG93bmluZyB0aGF0
IGV4dHJhY3RlZCBkYXRhLgorICAvLworICAvLyBub2RlX3R5cGUgZXh0cmFjdChjb25zdCBrZXlf
dHlwZSYgeCk6CisgIC8vCisgIC8vICAgRXh0cmFjdHMgdGhlIGtleSx2YWx1ZSBwYWlyIG9mIHRo
ZSBlbGVtZW50IHdpdGggYSBrZXkgbWF0Y2hpbmcgdGhlIHBhc3NlZAorICAvLyAgIGtleSB2YWx1
ZSBhbmQgcmV0dXJucyBhIG5vZGUgaGFuZGxlIG93bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLiBJ
ZiB0aGUKKyAgLy8gICBgZmxhdF9oYXNoX21hcGAgZG9lcyBub3QgY29udGFpbiBhbiBlbGVtZW50
IHdpdGggYSBtYXRjaGluZyBrZXksIHRoaXMKKyAgLy8gICBmdW5jdGlvbiByZXR1cm5zIGFuIGVt
cHR5IG5vZGUgaGFuZGxlLgorICB1c2luZyBCYXNlOjpleHRyYWN0OworCisgIC8vIGZsYXRfaGFz
aF9tYXA6Om1lcmdlKCkKKyAgLy8KKyAgLy8gRXh0cmFjdHMgZWxlbWVudHMgZnJvbSBhIGdpdmVu
IGBzb3VyY2VgIGZsYXQgaGFzaCBtYXAgaW50byB0aGlzCisgIC8vIGBmbGF0X2hhc2hfbWFwYC4g
SWYgdGhlIGRlc3RpbmF0aW9uIGBmbGF0X2hhc2hfbWFwYCBhbHJlYWR5IGNvbnRhaW5zIGFuCisg
IC8vIGVsZW1lbnQgd2l0aCBhbiBlcXVpdmFsZW50IGtleSwgdGhhdCBlbGVtZW50IGlzIG5vdCBl
eHRyYWN0ZWQuCisgIHVzaW5nIEJhc2U6Om1lcmdlOworCisgIC8vIGZsYXRfaGFzaF9tYXA6OnN3
YXAoZmxhdF9oYXNoX21hcCYgb3RoZXIpCisgIC8vCisgIC8vIEV4Y2hhbmdlcyB0aGUgY29udGVu
dHMgb2YgdGhpcyBgZmxhdF9oYXNoX21hcGAgd2l0aCB0aG9zZSBvZiB0aGUgYG90aGVyYAorICAv
LyBmbGF0IGhhc2ggbWFwLCBhdm9pZGluZyBpbnZvY2F0aW9uIG9mIGFueSBtb3ZlLCBjb3B5LCBv
ciBzd2FwIG9wZXJhdGlvbnMgb24KKyAgLy8gaW5kaXZpZHVhbCBlbGVtZW50cy4KKyAgLy8KKyAg
Ly8gQWxsIGl0ZXJhdG9ycyBhbmQgcmVmZXJlbmNlcyBvbiB0aGUgYGZsYXRfaGFzaF9tYXBgIHJl
bWFpbiB2YWxpZCwgZXhjZXB0aW5nCisgIC8vIGZvciB0aGUgcGFzdC10aGUtZW5kIGl0ZXJhdG9y
LCB3aGljaCBpcyBpbnZhbGlkYXRlZC4KKyAgLy8KKyAgLy8gYHN3YXAoKWAgcmVxdWlyZXMgdGhh
dCB0aGUgZmxhdCBoYXNoIG1hcCdzIGhhc2hpbmcgYW5kIGtleSBlcXVpdmFsZW5jZQorICAvLyBm
dW5jdGlvbnMgYmUgU3dhcHBhYmxlLCBhbmQgYXJlIGV4Y2hhZ2VkIHVzaW5nIHVucXVhbGlmaWVk
IGNhbGxzIHRvCisgIC8vIG5vbi1tZW1iZXIgYHN3YXAoKWAuIElmIHRoZSBtYXAncyBhbGxvY2F0
b3IgaGFzCisgIC8vIGBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yX3R5cGU+Ojpwcm9w
YWdhdGVfb25fY29udGFpbmVyX3N3YXA6OnZhbHVlYAorICAvLyBzZXQgdG8gYHRydWVgLCB0aGUg
YWxsb2NhdG9ycyBhcmUgYWxzbyBleGNoYW5nZWQgdXNpbmcgYW4gdW5xdWFsaWZpZWQgY2FsbAor
ICAvLyB0byBub24tbWVtYmVyIGBzd2FwKClgOyBvdGhlcndpc2UsIHRoZSBhbGxvY2F0b3JzIGFy
ZSBub3Qgc3dhcHBlZC4KKyAgdXNpbmcgQmFzZTo6c3dhcDsKKworICAvLyBmbGF0X2hhc2hfbWFw
OjpyZWhhc2goY291bnQpCisgIC8vCisgIC8vIFJlaGFzaGVzIHRoZSBgZmxhdF9oYXNoX21hcGAs
IHNldHRpbmcgdGhlIG51bWJlciBvZiBzbG90cyB0byBiZSBhdCBsZWFzdAorICAvLyB0aGUgcGFz
c2VkIHZhbHVlLiBJZiB0aGUgbmV3IG51bWJlciBvZiBzbG90cyBpbmNyZWFzZXMgdGhlIGxvYWQg
ZmFjdG9yIG1vcmUKKyAgLy8gdGhhbiB0aGUgY3VycmVudCBtYXhpbXVtIGxvYWQgZmFjdG9yCisg
IC8vIChgY291bnRgIDwgYHNpemUoKWAgLyBgbWF4X2xvYWRfZmFjdG9yKClgKSwgdGhlbiB0aGUg
bmV3IG51bWJlciBvZiBzbG90cworICAvLyB3aWxsIGJlIGF0IGxlYXN0IGBzaXplKClgIC8gYG1h
eF9sb2FkX2ZhY3RvcigpYC4KKyAgLy8KKyAgLy8gVG8gZm9yY2UgYSByZWhhc2gsIHBhc3MgcmVo
YXNoKDApLgorICAvLworICAvLyBOT1RFOiB1bmxpa2UgYmVoYXZpb3IgaW4gYHN0ZDo6dW5vcmRl
cmVkX21hcGAsIHJlZmVyZW5jZXMgYXJlIGFsc28KKyAgLy8gaW52YWxpZGF0ZWQgdXBvbiBhIGBy
ZWhhc2goKWAuCisgIHVzaW5nIEJhc2U6OnJlaGFzaDsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpy
ZXNlcnZlKGNvdW50KQorICAvLworICAvLyBTZXRzIHRoZSBudW1iZXIgb2Ygc2xvdHMgaW4gdGhl
IGBmbGF0X2hhc2hfbWFwYCB0byB0aGUgbnVtYmVyIG5lZWRlZCB0bworICAvLyBhY2NvbW1vZGF0
ZSBhdCBsZWFzdCBgY291bnRgIHRvdGFsIGVsZW1lbnRzIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBj
dXJyZW50CisgIC8vIG1heGltdW0gbG9hZCBmYWN0b3IsIGFuZCBtYXkgcmVoYXNoIHRoZSBjb250
YWluZXIgaWYgbmVlZGVkLgorICB1c2luZyBCYXNlOjpyZXNlcnZlOworCisgIC8vIGZsYXRfaGFz
aF9tYXA6OmF0KCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgbWFwcGVk
IHZhbHVlIG9mIHRoZSBlbGVtZW50IHdpdGgga2V5IGVxdWl2YWxlbnQKKyAgLy8gdG8gdGhlIHBh
c3NlZCBrZXkuCisgIHVzaW5nIEJhc2U6OmF0OworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmNvbnRh
aW5zKCkKKyAgLy8KKyAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCBhIGtl
eSBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgCisgIC8vIGV4aXN0cyB3aXRoaW4g
dGhlIGBmbGF0X2hhc2hfbWFwYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzbyBvciBgZmFsc2VgCisg
IC8vIG90aGVyd2lzZS4KKyAgdXNpbmcgQmFzZTo6Y29udGFpbnM7CisKKyAgLy8gZmxhdF9oYXNo
X21hcDo6Y291bnQoY29uc3QgS2V5JiBrZXkpIGNvbnN0CisgIC8vCisgIC8vIFJldHVybnMgdGhl
IG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGEga2V5IGNvbXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2
ZW4KKyAgLy8gYGtleWAgd2l0aGluIHRoZSBgZmxhdF9oYXNoX21hcGAuIG5vdGUgdGhhdCB0aGlz
IGZ1bmN0aW9uIHdpbGwgcmV0dXJuCisgIC8vIGVpdGhlciBgMWAgb3IgYDBgIHNpbmNlIGR1cGxp
Y2F0ZSBrZXlzIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gYQorICAvLyBgZmxhdF9oYXNoX21hcGAu
CisgIHVzaW5nIEJhc2U6OmNvdW50OworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmVxdWFsX3Jhbmdl
KCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNsb3NlZCByYW5nZSBbZmlyc3QsIGxhc3RdLCBkZWZp
bmVkIGJ5IGEgYHN0ZDo6cGFpcmAgb2YgdHdvCisgIC8vIGl0ZXJhdG9ycywgY29udGFpbmluZyBh
bGwgZWxlbWVudHMgd2l0aCB0aGUgcGFzc2VkIGtleSBpbiB0aGUKKyAgLy8gYGZsYXRfaGFzaF9t
YXBgLgorICB1c2luZyBCYXNlOjplcXVhbF9yYW5nZTsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpm
aW5kKCkKKyAgLy8KKyAgLy8gRmluZHMgYW4gZWxlbWVudCB3aXRoIHRoZSBwYXNzZWQgYGtleWAg
d2l0aGluIHRoZSBgZmxhdF9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmZpbmQ7CisKKyAgLy8g
ZmxhdF9oYXNoX21hcDo6b3BlcmF0b3JbXSgpCisgIC8vCisgIC8vIFJldHVybnMgYSByZWZlcmVu
Y2UgdG8gdGhlIHZhbHVlIG1hcHBlZCB0byB0aGUgcGFzc2VkIGtleSB3aXRoaW4gdGhlCisgIC8v
IGBmbGF0X2hhc2hfbWFwYCwgcGVyZm9ybWluZyBhbiBgaW5zZXJ0KClgIGlmIHRoZSBrZXkgZG9l
cyBub3QgYWxyZWFkeQorICAvLyBleGlzdC4KKyAgLy8KKyAgLy8gSWYgYW4gaW5zZXJ0aW9uIG9j
Y3VycyBhbmQgcmVzdWx0cyBpbiBhIHJlaGFzaGluZyBvZiB0aGUgY29udGFpbmVyLCBhbGwKKyAg
Ly8gaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4gT3RoZXJ3aXNlIGl0ZXJhdG9ycyBhcmUgbm90
IGFmZmVjdGVkIGFuZAorICAvLyByZWZlcmVuY2VzIGFyZSBub3QgaW52YWxpZGF0ZWQuIE92ZXJs
b2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyBUJiBvcGVyYXRvcltdKGNvbnN0IEtl
eSYga2V5KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGFuIGluaXRfdHlwZSBvYmplY3QgY29uc3Ry
dWN0ZWQgaW4tcGxhY2UgaWYgdGhlIGVsZW1lbnQgd2l0aCB0aGUKKyAgLy8gICBnaXZlbiBrZXkg
ZG9lcyBub3QgZXhpc3QuCisgIC8vCisgIC8vIFQmIG9wZXJhdG9yW10oS2V5JiYga2V5KToKKyAg
Ly8KKyAgLy8gICBJbnNlcnRzIGFuIGluaXRfdHlwZSBvYmplY3QgY29uc3RydWN0ZWQgaW4tcGxh
Y2UgcHJvdmlkZWQgdGhhdCBhbiBlbGVtZW50CisgIC8vICAgd2l0aCB0aGUgZ2l2ZW4ga2V5IGRv
ZXMgbm90IGV4aXN0LgorICB1c2luZyBCYXNlOjpvcGVyYXRvcltdOworCisgIC8vIGZsYXRfaGFz
aF9tYXA6OmJ1Y2tldF9jb3VudCgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiAi
YnVja2V0cyIgd2l0aGluIHRoZSBgZmxhdF9oYXNoX21hcGAuIE5vdGUgdGhhdAorICAvLyBiZWNh
dXNlIGEgZmxhdCBoYXNoIG1hcCBjb250YWlucyBhbGwgZWxlbWVudHMgd2l0aGluIGl0cyBpbnRl
cm5hbCBzdG9yYWdlLAorICAvLyB0aGlzIHZhbHVlIHNpbXBseSBlcXVhbHMgdGhlIGN1cnJlbnQg
Y2FwYWNpdHkgb2YgdGhlIGBmbGF0X2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6YnVja2V0X2Nv
dW50OworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmxvYWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8gUmV0
dXJucyB0aGUgY3VycmVudCBsb2FkIGZhY3RvciBvZiB0aGUgYGZsYXRfaGFzaF9tYXBgICh0aGUg
YXZlcmFnZSBudW1iZXIKKyAgLy8gb2Ygc2xvdHMgb2NjdXBpZWQgd2l0aCBhIHZhbHVlIHdpdGhp
biB0aGUgaGFzaCBtYXApLgorICB1c2luZyBCYXNlOjpsb2FkX2ZhY3RvcjsKKworICAvLyBmbGF0
X2hhc2hfbWFwOjptYXhfbG9hZF9mYWN0b3IoKQorICAvLworICAvLyBNYW5hZ2VzIHRoZSBtYXhp
bXVtIGxvYWQgZmFjdG9yIG9mIHRoZSBgZmxhdF9oYXNoX21hcGAuIE92ZXJsb2FkcyBhcmUKKyAg
Ly8gbGlzdGVkIGJlbG93LgorICAvLworICAvLyBmbG9hdCBmbGF0X2hhc2hfbWFwOjptYXhfbG9h
ZF9mYWN0b3IoKQorICAvLworICAvLyAgIFJldHVybnMgdGhlIGN1cnJlbnQgbWF4aW11bSBsb2Fk
IGZhY3RvciBvZiB0aGUgYGZsYXRfaGFzaF9tYXBgLgorICAvLworICAvLyB2b2lkIGZsYXRfaGFz
aF9tYXA6Om1heF9sb2FkX2ZhY3RvcihmbG9hdCBtbCkKKyAgLy8KKyAgLy8gICBTZXRzIHRoZSBt
YXhpbXVtIGxvYWQgZmFjdG9yIG9mIHRoZSBgZmxhdF9oYXNoX21hcGAgdG8gdGhlIHBhc3NlZCB2
YWx1ZS4KKyAgLy8KKyAgLy8gICBOT1RFOiBUaGlzIG92ZXJsb2FkIGlzIHByb3ZpZGVkIG9ubHkg
Zm9yIEFQSSBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFNUTDsKKyAgLy8gICBgZmxhdF9oYXNoX21h
cGAgd2lsbCBpZ25vcmUgYW55IHNldCBsb2FkIGZhY3RvciBhbmQgbWFuYWdlIGl0cyByZWhhc2hp
bmcKKyAgLy8gICBpbnRlcm5hbGx5IGFzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KKyAgdXNp
bmcgQmFzZTo6bWF4X2xvYWRfZmFjdG9yOworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmdldF9hbGxv
Y2F0b3IoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBhbGxvY2F0b3IgZnVuY3Rpb24gYXNzb2Np
YXRlZCB3aXRoIHRoaXMgYGZsYXRfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpnZXRfYWxsb2Nh
dG9yOworCisgIC8vIGZsYXRfaGFzaF9tYXA6Omhhc2hfZnVuY3Rpb24oKQorICAvLworICAvLyBS
ZXR1cm5zIHRoZSBoYXNoaW5nIGZ1bmN0aW9uIHVzZWQgdG8gaGFzaCB0aGUga2V5cyB3aXRoaW4g
dGhpcworICAvLyBgZmxhdF9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6Omhhc2hfZnVuY3Rpb247
CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6a2V5X2VxKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUg
ZnVuY3Rpb24gdXNlZCBmb3IgY29tcGFyaW5nIGtleXMgZXF1YWxpdHkuCisgIHVzaW5nIEJhc2U6
OmtleV9lcTsKK307CisKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCit0ZW1wbGF0
ZSA8Y2xhc3MgSywgY2xhc3MgVj4KK3N0cnVjdCBGbGF0SGFzaE1hcFBvbGljeSB7CisgIHVzaW5n
IHNsb3RfdHlwZSA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6c2xvdF90eXBlPEssIFY+OworICB1c2lu
ZyBrZXlfdHlwZSA9IEs7CisgIHVzaW5nIG1hcHBlZF90eXBlID0gVjsKKyAgdXNpbmcgaW5pdF90
eXBlID0gc3RkOjpwYWlyPC8qbm9uIGNvbnN0Ki8ga2V5X3R5cGUsIG1hcHBlZF90eXBlPjsKKwor
ICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3QoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBzbG90LCBBcmdzJiYuLi4g
YXJncykgeworICAgIHNsb3RfdHlwZTo6Y29uc3RydWN0KGFsbG9jLCBzbG90LCBzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4K
KyAgc3RhdGljIHZvaWQgZGVzdHJveShBbGxvY2F0b3IqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3Qp
IHsKKyAgICBzbG90X3R5cGU6OmRlc3Ryb3koYWxsb2MsIHNsb3QpOworICB9CisKKyAgdGVtcGxh
dGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgdHJhbnNmZXIoQWxsb2NhdG9yKiBh
bGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2xvdF90
eXBlKiBvbGRfc2xvdCkgeworICAgIHNsb3RfdHlwZTo6dHJhbnNmZXIoYWxsb2MsIG5ld19zbG90
LCBvbGRfc2xvdCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MuLi4gQXJncz4K
KyAgc3RhdGljIGRlY2x0eXBlKGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6RGVjb21wb3NlUGFp
cigKKyAgICAgIHN0ZDo6ZGVjbHZhbDxGPigpLCBzdGQ6OmRlY2x2YWw8QXJncz4oKS4uLikpCisg
IGFwcGx5KEYmJiBmLCBBcmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiBhYnNsOjpjb250YWlu
ZXJfaW50ZXJuYWw6OkRlY29tcG9zZVBhaXIoc3RkOjpmb3J3YXJkPEY+KGYpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIHN0YXRpYyBzaXplX3Qgc3BhY2VfdXNlZChjb25zdCBz
bG90X3R5cGUqKSB7IHJldHVybiAwOyB9CisKKyAgc3RhdGljIHN0ZDo6cGFpcjxjb25zdCBLLCBW
PiYgZWxlbWVudChzbG90X3R5cGUqIHNsb3QpIHsgcmV0dXJuIHNsb3QtPnZhbHVlOyB9CisKKyAg
c3RhdGljIFYmIHZhbHVlKHN0ZDo6cGFpcjxjb25zdCBLLCBWPioga3YpIHsgcmV0dXJuIGt2LT5z
ZWNvbmQ7IH0KKyAgc3RhdGljIGNvbnN0IFYmIHZhbHVlKGNvbnN0IHN0ZDo6cGFpcjxjb25zdCBL
LCBWPioga3YpIHsgcmV0dXJuIGt2LT5zZWNvbmQ7IH0KK307CisKK30gIC8vIG5hbWVzcGFjZSBj
b250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisjZW5kaWYgIC8vIEFCU0xf
Q09OVEFJTkVSX0ZMQVRfSEFTSF9NQVBfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9m
bGF0X2hhc2hfbWFwX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcF90ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjEwYTc4MWZmZDZjN2Q5ZDE0OTA4NmU0NDMxNzRhN2FhNzZhZDIyYWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcF90ZXN0LmNj
CkBAIC0wLDAgKzEsMjQxIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcC5oIgorCisjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgorI2lu
Y2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3Jf
dGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBf
bG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVy
ZWRfbWFwX21vZGlmaWVyc190ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9hbnkuaCIKKwor
bmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3Bh
Y2UgewordXNpbmcgOjphYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfaW50ZXJuYWw6OkVu
dW07Cit1c2luZyA6OmFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9pbnRlcm5hbDo6RW51
bUNsYXNzOwordXNpbmcgOjp0ZXN0aW5nOjpfOwordXNpbmcgOjp0ZXN0aW5nOjpQYWlyOwordXNp
bmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZTsKKwordGVtcGxhdGUgPGNsYXNzIEss
IGNsYXNzIFY+Cit1c2luZyBNYXAgPQorICAgIGZsYXRfaGFzaF9tYXA8SywgViwgU3RhdGVmdWxU
ZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFsbG9jPD4+OworCitzdGF0aWNfYXNz
ZXJ0KCFzdGQ6OmlzX3N0YW5kYXJkX2xheW91dDxOb25TdGFuZGFyZExheW91dD4oKSwgIiIpOwor
Cit1c2luZyBNYXBUeXBlcyA9CisgICAgOjp0ZXN0aW5nOjpUeXBlczxNYXA8aW50LCBpbnQ+LCBN
YXA8c3RkOjpzdHJpbmcsIGludD4sIE1hcDxFbnVtLCBzdGQ6OnN0cmluZz4sCisgICAgICAgICAg
ICAgICAgICAgICBNYXA8RW51bUNsYXNzLCBpbnQ+LCBNYXA8aW50LCBOb25TdGFuZGFyZExheW91
dD4sCisgICAgICAgICAgICAgICAgICAgICBNYXA8Tm9uU3RhbmRhcmRMYXlvdXQsIGludD4+Owor
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChGbGF0SGFzaE1hcCwgQ29uc3RydWN0b3JU
ZXN0LCBNYXBUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChGbGF0SGFzaE1h
cCwgTG9va3VwVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
RmxhdEhhc2hNYXAsIE1vZGlmaWVyc1Rlc3QsIE1hcFR5cGVzKTsKKworVEVTVChGbGF0SGFzaE1h
cCwgU3RhbmRhcmRMYXlvdXQpIHsKKyAgc3RydWN0IEludCB7CisgICAgZXhwbGljaXQgSW50KHNp
emVfdCB2YWx1ZSkgOiB2YWx1ZSh2YWx1ZSkge30KKyAgICBJbnQoKSA6IHZhbHVlKDApIHsgQURE
X0ZBSUxVUkUoKTsgfQorICAgIEludChjb25zdCBJbnQmIG90aGVyKSA6IHZhbHVlKG90aGVyLnZh
bHVlKSB7IEFERF9GQUlMVVJFKCk7IH0KKyAgICBJbnQoSW50JiYpID0gZGVmYXVsdDsKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgSW50JiBvdGhlcikgY29uc3QgeyByZXR1cm4gdmFsdWUgPT0g
b3RoZXIudmFsdWU7IH0KKyAgICBzaXplX3QgdmFsdWU7CisgIH07CisgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8SW50PigpLCAiIik7CisKKyAgc3RydWN0IEhhc2ggewor
ICAgIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IEludCYgb2JqKSBjb25zdCB7IHJldHVybiBvYmou
dmFsdWU7IH0KKyAgfTsKKworICAvLyBWZXJpZnkgdGhhdCBuZWl0aGVyIHRoZSBrZXkgbm9yIHRo
ZSB2YWx1ZSBnZXQgZGVmYXVsdC1jb25zdHJ1Y3RlZCBvcgorICAvLyBjb3B5LWNvbnN0cnVjdGVk
LgorICB7CisgICAgZmxhdF9oYXNoX21hcDxJbnQsIEludCwgSGFzaD4gbTsKKyAgICBtLnRyeV9l
bXBsYWNlKEludCgxKSwgSW50KDIpKTsKKyAgICBtLnRyeV9lbXBsYWNlKEludCgzKSwgSW50KDQp
KTsKKyAgICBtLmVyYXNlKEludCgxKSk7CisgICAgbS5yZWhhc2goMiAqIG0uYnVja2V0X2NvdW50
KCkpOworICB9CisgIHsKKyAgICBmbGF0X2hhc2hfbWFwPEludCwgSW50LCBIYXNoPiBtOworICAg
IG0udHJ5X2VtcGxhY2UoSW50KDEpLCBJbnQoMikpOworICAgIG0udHJ5X2VtcGxhY2UoSW50KDMp
LCBJbnQoNCkpOworICAgIG0uZXJhc2UoSW50KDEpKTsKKyAgICBtLmNsZWFyKCk7CisgIH0KK30K
KworLy8gZ2NjIGJlY29tZXMgdW5oYXBweSBpZiB0aGlzIGlzIGluc2lkZSB0aGUgbWV0aG9kLCBz
byBwdWxsIGl0IG91dCBoZXJlLgorc3RydWN0IGJhbGFzdCB7fTsKKworVEVTVChGbGF0SGFzaE1h
cCwgSXRlcmF0ZXNNc2FuKSB7CisgIC8vIEJlY2F1c2UgU3dpc3NUYWJsZSByYW5kb21pemVzIG9u
IHBvaW50ZXIgYWRkcmVzc2VzLCB3ZSBrZWVwIG9sZCB0YWJsZXMKKyAgLy8gYXJvdW5kIHRvIGVu
c3VyZSB3ZSBkb24ndCByZXVzZSBvbGQgbWVtb3J5LgorICBzdGQ6OnZlY3RvcjxhYnNsOjpmbGF0
X2hhc2hfbWFwPGludCwgYmFsYXN0Pj4gZ2FyYmFnZTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAx
MDA7ICsraSkgeworICAgIGFic2w6OmZsYXRfaGFzaF9tYXA8aW50LCBiYWxhc3Q+IHQ7CisgICAg
Zm9yIChpbnQgaiA9IDA7IGogPCAxMDA7ICsraikgeworICAgICAgdFtqXTsKKyAgICAgIGZvciAo
Y29uc3QgYXV0byYgcCA6IHQpIEVYUEVDVF9USEFUKHAsIFBhaXIoXywgXykpOworICAgIH0KKyAg
ICBnYXJiYWdlLnB1c2hfYmFjayhzdGQ6Om1vdmUodCkpOworICB9Cit9CisKKy8vIERlbW9uc3Ry
YXRpb24gb2YgdGhlICJMYXp5IEtleSIgcGF0dGVybi4gIFRoaXMgdXNlcyBoZXRlcm9nZW5vdXMg
aW5zZXJ0IHRvCisvLyBhdm9pZCBjcmVhdGluZyBleHBlbnNpdmUga2V5IGVsZW1lbnRzIHdoZW4g
dGhlIGl0ZW0gaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZQorLy8gbWFwLgorc3RydWN0IExhenlJ
bnQgeworICBleHBsaWNpdCBMYXp5SW50KHNpemVfdCB2YWx1ZSwgaW50KiB0cmFja2VyKQorICAg
ICAgOiB2YWx1ZSh2YWx1ZSksIHRyYWNrZXIodHJhY2tlcikge30KKworICBleHBsaWNpdCBvcGVy
YXRvciBzaXplX3QoKSBjb25zdCB7CisgICAgKysqdHJhY2tlcjsKKyAgICByZXR1cm4gdmFsdWU7
CisgIH0KKworICBzaXplX3QgdmFsdWU7CisgIGludCogdHJhY2tlcjsKK307CisKK3N0cnVjdCBI
YXNoIHsKKyAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworICBpbnQqIHRyYWNrZXI7Cisg
IHNpemVfdCBvcGVyYXRvcigpKHNpemVfdCBvYmopIGNvbnN0IHsKKyAgICArKyp0cmFja2VyOwor
ICAgIHJldHVybiBvYmo7CisgIH0KKyAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgTGF6eUludCYg
b2JqKSBjb25zdCB7CisgICAgKysqdHJhY2tlcjsKKyAgICByZXR1cm4gb2JqLnZhbHVlOworICB9
Cit9OworCitzdHJ1Y3QgRXEgeworICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7CisgIGJv
b2wgb3BlcmF0b3IoKShzaXplX3QgbGhzLCBzaXplX3QgcmhzKSBjb25zdCB7CisgICAgcmV0dXJu
IGxocyA9PSByaHM7CisgIH0KKyAgYm9vbCBvcGVyYXRvcigpKHNpemVfdCBsaHMsIGNvbnN0IExh
enlJbnQmIHJocykgY29uc3QgeworICAgIHJldHVybiBsaHMgPT0gcmhzLnZhbHVlOworICB9Cit9
OworCitURVNUKEZsYXRIYXNoTWFwLCBMYXp5S2V5UGF0dGVybikgeworICAvLyBoYXNoZXMgYXJl
IG9ubHkgZ3VhcmFudGVlZCBpbiBvcHQgbW9kZSwgd2UgdXNlIGFzc2VydGlvbnMgdG8gdHJhY2sg
aW50ZXJuYWwKKyAgLy8gc3RhdGUgdGhhdCBjYW4gY2F1c2UgZXh0cmEgY2FsbHMgdG8gaGFzaC4K
KyAgaW50IGNvbnZlcnNpb25zID0gMDsKKyAgaW50IGhhc2hlcyA9IDA7CisgIGZsYXRfaGFzaF9t
YXA8c2l6ZV90LCBzaXplX3QsIEhhc2gsIEVxPiBtKDAsIEhhc2h7Jmhhc2hlc30pOworCisgIG1b
TGF6eUludCgxLCAmY29udmVyc2lvbnMpXSA9IDE7CisgIEVYUEVDVF9USEFUKG0sIFVub3JkZXJl
ZEVsZW1lbnRzQXJlKFBhaXIoMSwgMSkpKTsKKyAgRVhQRUNUX0VRKGNvbnZlcnNpb25zLCAxKTsK
KyNpZmRlZiBOREVCVUcKKyAgRVhQRUNUX0VRKGhhc2hlcywgMSk7CisjZW5kaWYKKworICBtW0xh
enlJbnQoMSwgJmNvbnZlcnNpb25zKV0gPSAyOworICBFWFBFQ1RfVEhBVChtLCBVbm9yZGVyZWRF
bGVtZW50c0FyZShQYWlyKDEsIDIpKSk7CisgIEVYUEVDVF9FUShjb252ZXJzaW9ucywgMSk7Cisj
aWZkZWYgTkRFQlVHCisgIEVYUEVDVF9FUShoYXNoZXMsIDIpOworI2VuZGlmCisKKyAgbS50cnlf
ZW1wbGFjZShMYXp5SW50KDIsICZjb252ZXJzaW9ucyksIDMpOworICBFWFBFQ1RfVEhBVChtLCBV
bm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKDEsIDIpLCBQYWlyKDIsIDMpKSk7CisgIEVYUEVDVF9F
UShjb252ZXJzaW9ucywgMik7CisjaWZkZWYgTkRFQlVHCisgIEVYUEVDVF9FUShoYXNoZXMsIDMp
OworI2VuZGlmCisKKyAgbS50cnlfZW1wbGFjZShMYXp5SW50KDIsICZjb252ZXJzaW9ucyksIDQp
OworICBFWFBFQ1RfVEhBVChtLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKDEsIDIpLCBQYWly
KDIsIDMpKSk7CisgIEVYUEVDVF9FUShjb252ZXJzaW9ucywgMik7CisjaWZkZWYgTkRFQlVHCisg
IEVYUEVDVF9FUShoYXNoZXMsIDQpOworI2VuZGlmCit9CisKK1RFU1QoRmxhdEhhc2hNYXAsIEJp
dGZpZWxkQXJndW1lbnQpIHsKKyAgdW5pb24geworICAgIGludCBuIDogMTsKKyAgfTsKKyAgbiA9
IDA7CisgIGZsYXRfaGFzaF9tYXA8aW50LCBpbnQ+IG07CisgIG0uZXJhc2Uobik7CisgIG0uY291
bnQobik7CisgIG0ucHJlZmV0Y2gobik7CisgIG0uZmluZChuKTsKKyAgbS5jb250YWlucyhuKTsK
KyAgbS5lcXVhbF9yYW5nZShuKTsKKyAgbS5pbnNlcnRfb3JfYXNzaWduKG4sIG4pOworICBtLmlu
c2VydF9vcl9hc3NpZ24obS5lbmQoKSwgbiwgbik7CisgIG0udHJ5X2VtcGxhY2Uobik7CisgIG0u
dHJ5X2VtcGxhY2UobS5lbmQoKSwgbik7CisgIG0uYXQobik7CisgIG1bbl07Cit9CisKK1RFU1Qo
RmxhdEhhc2hNYXAsIE1lcmdlRXh0cmFjdEluc2VydCkgeworICAvLyBXZSBjYW4ndCB0ZXN0IG11
dGFibGUga2V5cywgb3Igbm9uLWNvcHlhYmxlIGtleXMgd2l0aCBmbGF0X2hhc2hfbWFwLgorICAv
LyBUZXN0IHRoYXQgdGhlIG5vZGVzIGhhdmUgdGhlIHByb3BlciBBUEkuCisgIGFic2w6OmZsYXRf
aGFzaF9tYXA8aW50LCBpbnQ+IG0gPSB7ezEsIDd9LCB7MiwgOX19OworICBhdXRvIG5vZGUgPSBt
LmV4dHJhY3QoMSk7CisgIEVYUEVDVF9UUlVFKG5vZGUpOworICBFWFBFQ1RfRVEobm9kZS5rZXko
KSwgMSk7CisgIEVYUEVDVF9FUShub2RlLm1hcHBlZCgpLCA3KTsKKyAgRVhQRUNUX1RIQVQobSwg
VW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigyLCA5KSkpOworCisgIG5vZGUubWFwcGVkKCkgPSAx
NzsKKyAgbS5pbnNlcnQoc3RkOjptb3ZlKG5vZGUpKTsKKyAgRVhQRUNUX1RIQVQobSwgVW5vcmRl
cmVkRWxlbWVudHNBcmUoUGFpcigxLCAxNyksIFBhaXIoMiwgOSkpKTsKK30KKyNpZiAhZGVmaW5l
ZChfX0FORFJPSURfXykgJiYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX0VNU0NS
SVBURU5fXykKK1RFU1QoRmxhdEhhc2hNYXAsIEFueSkgeworICBhYnNsOjpmbGF0X2hhc2hfbWFw
PGludCwgYWJzbDo6YW55PiBtOworICBtLmVtcGxhY2UoMSwgNyk7CisgIGF1dG8gaXQgPSBtLmZp
bmQoMSk7CisgIEFTU0VSVF9ORShpdCwgbS5lbmQoKSk7CisgIEVYUEVDVF9FUSg3LCBhYnNsOjph
bnlfY2FzdDxpbnQ+KGl0LT5zZWNvbmQpKTsKKworICBtLmVtcGxhY2Uoc3RkOjpwaWVjZXdpc2Vf
Y29uc3RydWN0LCBzdGQ6Om1ha2VfdHVwbGUoMiksIHN0ZDo6bWFrZV90dXBsZSg4KSk7CisgIGl0
ID0gbS5maW5kKDIpOworICBBU1NFUlRfTkUoaXQsIG0uZW5kKCkpOworICBFWFBFQ1RfRVEoOCwg
YWJzbDo6YW55X2Nhc3Q8aW50PihpdC0+c2Vjb25kKSk7CisKKyAgbS5lbXBsYWNlKHN0ZDo6cGll
Y2V3aXNlX2NvbnN0cnVjdCwgc3RkOjptYWtlX3R1cGxlKDMpLAorICAgICAgICAgICAgc3RkOjpt
YWtlX3R1cGxlKGFic2w6OmFueSg5KSkpOworICBpdCA9IG0uZmluZCgzKTsKKyAgQVNTRVJUX05F
KGl0LCBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKDksIGFic2w6OmFueV9jYXN0PGludD4oaXQtPnNl
Y29uZCkpOworCisgIHN0cnVjdCBIIHsKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBhYnNs
OjphbnkmKSBjb25zdCB7IHJldHVybiAwOyB9CisgIH07CisgIHN0cnVjdCBFIHsKKyAgICBib29s
IG9wZXJhdG9yKCkoY29uc3QgYWJzbDo6YW55JiwgY29uc3QgYWJzbDo6YW55JikgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICB9OworICBhYnNsOjpmbGF0X2hhc2hfbWFwPGFic2w6OmFueSwgaW50
LCBILCBFPiBtMjsKKyAgbTIuZW1wbGFjZSgxLCA3KTsKKyAgYXV0byBpdDIgPSBtMi5maW5kKDEp
OworICBBU1NFUlRfTkUoaXQyLCBtMi5lbmQoKSk7CisgIEVYUEVDVF9FUSg3LCBpdDItPnNlY29u
ZCk7Cit9CisjZW5kaWYgIC8vIF9fQU5EUk9JRF9fCisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8g
bmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfc2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
ZmxhdF9oYXNoX3NldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4YWVhZDFhOGFlMjA5ZTJhNDVhOTU2MTY3YmU5
NWU3MjcwYzU0NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNo
X3NldC5oCkBAIC0wLDAgKzEsNDM5IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBmbGF0X2hhc2hf
c2V0LmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQW4gYGFic2w6OmZsYXRfaGFz
aF9zZXQ8VD5gIGlzIGFuIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgZGVzaWduZWQg
dG8KKy8vIGJlIGEgbW9yZSBlZmZpY2llbnQgcmVwbGFjZW1lbnQgZm9yIGBzdGQ6OnVub3JkZXJl
ZF9zZXRgLiBMaWtlCisvLyBgdW5vcmRlcmVkX3NldGAsIHNlYXJjaCwgaW5zZXJ0aW9uLCBhbmQg
ZGVsZXRpb24gb2Ygc2V0IGVsZW1lbnRzIGNhbiBiZSBkb25lCisvLyBhcyBhbiBgTygxKWAgb3Bl
cmF0aW9uLiBIb3dldmVyLCBgZmxhdF9oYXNoX3NldGAgKGFuZCBvdGhlciB1bm9yZGVyZWQKKy8v
IGFzc29jaWF0aXZlIGNvbnRhaW5lcnMga25vd24gYXMgdGhlIGNvbGxlY3Rpb24gb2YgQWJzZWls
ICJTd2lzcyB0YWJsZXMiKQorLy8gY29udGFpbiBvdGhlciBvcHRpbWl6YXRpb25zIHRoYXQgcmVz
dWx0IGluIGJvdGggbWVtb3J5IGFuZCBjb21wdXRhdGlvbgorLy8gYWR2YW50YWdlcy4KKy8vCisv
LyBJbiBtb3N0IGNhc2VzLCB5b3VyIGRlZmF1bHQgY2hvaWNlIGZvciBhIGhhc2ggc2V0IHNob3Vs
ZCBiZSBhIHNldCBvZiB0eXBlCisvLyBgZmxhdF9oYXNoX3NldGAuCisjaWZuZGVmIEFCU0xfQ09O
VEFJTkVSX0ZMQVRfSEFTSF9TRVRfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfRkxBVF9IQVNI
X1NFVF9IXworCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKwor
I2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAor
I2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5oIiAgLy8gSVdZ
VSBwcmFnbWE6IGV4cG9ydAorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorCituYW1l
c3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IEZsYXRIYXNoU2V0UG9saWN5OworfSAgLy8gbmFtZXNwYWNlIGNv
bnRhaW5lcl9pbnRlcm5hbAorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6Zmxh
dF9oYXNoX3NldAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBBbiBgYWJzbDo6Zmxh
dF9oYXNoX3NldDxUPmAgaXMgYW4gdW5vcmRlcmVkIGFzc29jaWF0aXZlIGNvbnRhaW5lciB3aGlj
aCBoYXMKKy8vIGJlZW4gb3B0aW1pemVkIGZvciBib3RoIHNwZWVkIGFuZCBtZW1vcnkgZm9vdHBy
aW50IGluIG1vc3QgY29tbW9uIHVzZSBjYXNlcy4KKy8vIEl0cyBpbnRlcmZhY2UgaXMgc2ltaWxh
ciB0byB0aGF0IG9mIGBzdGQ6OnVub3JkZXJlZF9zZXQ8VD5gIHdpdGggdGhlCisvLyBmb2xsb3dp
bmcgbm90YWJsZSBkaWZmZXJlbmNlczoKKy8vCisvLyAqIFJlcXVpcmVzIGtleXMgdGhhdCBhcmUg
Q29weUNvbnN0cnVjdGlibGUKKy8vICogU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHRo
cm91Z2ggYGZpbmQoKWAsIGBvcGVyYXRvcltdKClgIGFuZAorLy8gICBgaW5zZXJ0KClgLCBwcm92
aWRlZCB0aGF0IHRoZSBzZXQgaXMgcHJvdmlkZWQgYSBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMK
Ky8vICAgaGFzaGluZyBmdW5jdGlvbiBhbmQgZXF1YWxpdHkgb3BlcmF0b3IuCisvLyAqIEludmFs
aWRhdGVzIGFueSByZWZlcmVuY2VzIGFuZCBwb2ludGVycyB0byBlbGVtZW50cyB3aXRoaW4gdGhl
IHRhYmxlIGFmdGVyCisvLyAgIGByZWhhc2goKWAuCisvLyAqIENvbnRhaW5zIGEgYGNhcGFjaXR5
KClgIG1lbWJlciBmdW5jdGlvbiBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgZWxlbWVudAorLy8g
ICBzbG90cyAob3BlbiwgZGVsZXRlZCwgYW5kIGVtcHR5KSB3aXRoaW4gdGhlIGhhc2ggc2V0Lgor
Ly8gKiBSZXR1cm5zIGB2b2lkYCBmcm9tIHRoZSBgZXJhc2UoaXRlcmF0b3IpYCBvdmVybG9hZC4K
Ky8vCisvLyBCeSBkZWZhdWx0LCBgZmxhdF9oYXNoX3NldGAgdXNlcyB0aGUgYGFic2w6Okhhc2hg
IGhhc2hpbmcgZnJhbWV3b3JrLiBBbGwKKy8vIGZ1bmRhbWVudGFsIGFuZCBBYnNlaWwgdHlwZXMg
dGhhdCBzdXBwb3J0IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3JrIGhhdmUgYQorLy8gY29tcGF0
aWJsZSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgY29tcGFyaW5nIGluc2VydGlvbnMgaW50byBgZmxh
dF9oYXNoX21hcGAuCisvLyBJZiB5b3VyIHR5cGUgaXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgdGhl
IGBhc2JsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQorLy8gYWJzbC9oYXNoL2hhc2guaCBmb3IgaW5m
b3JtYXRpb24gb24gZXh0ZW5kaW5nIEFic2VpbCBoYXNoaW5nIHRvIHVzZXItZGVmaW5lZAorLy8g
dHlwZXMuCisvLworLy8gTk9URTogQSBgZmxhdF9oYXNoX3NldGAgc3RvcmVzIGl0cyBrZXlzIGRp
cmVjdGx5IGluc2lkZSBpdHMgaW1wbGVtZW50YXRpb24KKy8vIGFycmF5IHRvIGF2b2lkIG1lbW9y
eSBpbmRpcmVjdGlvbi4gQmVjYXVzZSBhIGBmbGF0X2hhc2hfc2V0YCBpcyBkZXNpZ25lZCB0bwor
Ly8gbW92ZSBkYXRhIHdoZW4gcmVoYXNoZWQsIHNldCBrZXlzIHdpbGwgbm90IHJldGFpbiBwb2lu
dGVyIHN0YWJpbGl0eS4gSWYgeW91CisvLyByZXF1aXJlIHBvaW50ZXIgc3RhYmlsaXR5LCBjb25z
aWRlciB1c2luZworLy8gYGFic2w6OmZsYXRfaGFzaF9zZXQ8c3RkOjp1bmlxdWVfcHRyPFQ+PmAu
IElmIHlvdXIgdHlwZSBpcyBub3QgbW92ZWFibGUgYW5kCisvLyB5b3UgcmVxdWlyZSBwb2ludGVy
IHN0YWJpbGl0eSwgY29uc2lkZXIgYGFic2w6Om5vZGVfaGFzaF9zZXRgIGluc3RlYWQuCisvLwor
Ly8gRXhhbXBsZToKKy8vCisvLyAgIC8vIENyZWF0ZSBhIGZsYXQgaGFzaCBzZXQgb2YgdGhyZWUg
c3RyaW5ncworLy8gICBhYnNsOjpmbGF0X2hhc2hfc2V0PHN0ZDo6c3RyaW5nPiBkdWNrcyA9Cisv
LyAgICAgeyJodWV5IiwgImRld2V5IiwgImxvdWllIn07CisvLworLy8gIC8vIEluc2VydCBhIG5l
dyBlbGVtZW50IGludG8gdGhlIGZsYXQgaGFzaCBzZXQKKy8vICBkdWNrcy5pbnNlcnQoImRvbmFs
ZCJ9OworLy8KKy8vICAvLyBGb3JjZSBhIHJlaGFzaCBvZiB0aGUgZmxhdCBoYXNoIHNldAorLy8g
IGR1Y2tzLnJlaGFzaCgwKTsKKy8vCisvLyAgLy8gU2VlIGlmICJkZXdleSIgaXMgcHJlc2VudAor
Ly8gIGlmIChkdWNrcy5jb250YWlucygiZGV3ZXkiKSkgeworLy8gICAgc3RkOjpjb3V0IDw8ICJX
ZSBmb3VuZCBkZXdleSEiIDw8IHN0ZDo6ZW5kbDsKKy8vICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgVCwg
Y2xhc3MgSGFzaCA9IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZhdWx0X2hhc2g8
VD4sCisgICAgICAgICAgY2xhc3MgRXEgPSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hf
ZGVmYXVsdF9lcTxUPiwKKyAgICAgICAgICBjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRv
cjxUPj4KK2NsYXNzIGZsYXRfaGFzaF9zZXQKKyAgICA6IHB1YmxpYyBhYnNsOjpjb250YWluZXJf
aW50ZXJuYWw6OnJhd19oYXNoX3NldDwKKyAgICAgICAgICBhYnNsOjpjb250YWluZXJfaW50ZXJu
YWw6OkZsYXRIYXNoU2V0UG9saWN5PFQ+LCBIYXNoLCBFcSwgQWxsb2NhdG9yPiB7CisgIHVzaW5n
IEJhc2UgPSB0eXBlbmFtZSBmbGF0X2hhc2hfc2V0OjpyYXdfaGFzaF9zZXQ7CisKKyBwdWJsaWM6
CisgIGZsYXRfaGFzaF9zZXQoKSB7fQorICB1c2luZyBCYXNlOjpCYXNlOworCisgIC8vIGZsYXRf
aGFzaF9zZXQ6OmJlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUg
YmVnaW5uaW5nIG9mIHRoZSBgZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmJlZ2luOwor
CisgIC8vIGZsYXRfaGFzaF9zZXQ6OmNiZWdpbigpCisgIC8vCisgIC8vIFJldHVybnMgYSBjb25z
dCBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgZmxhdF9oYXNoX3NldGAuCisgIHVz
aW5nIEJhc2U6OmNiZWdpbjsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpjZW5kKCkKKyAgLy8KKyAg
Ly8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBmbGF0X2hhc2hf
c2V0YC4KKyAgdXNpbmcgQmFzZTo6Y2VuZDsKKworICAvLyBmbGF0X2hhc2hfc2V0OjplbmQoKQor
ICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBmbGF0X2hh
c2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6ZW5kOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmNhcGFj
aXR5KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnQgc2xvdHMgKGFz
c2lnbmVkLCBkZWxldGVkLCBhbmQgZW1wdHkpCisgIC8vIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGBm
bGF0X2hhc2hfc2V0YC4KKyAgLy8KKyAgLy8gTk9URTogdGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMg
cGFydGljdWxhciB0byBgYWJzbDo6ZmxhdF9oYXNoX3NldGAgYW5kIGlzCisgIC8vIG5vdCBwcm92
aWRlZCBpbiB0aGUgYHN0ZDo6dW5vcmRlcmVkX21hcGAgQVBJLgorICB1c2luZyBCYXNlOjpjYXBh
Y2l0eTsKKworICAvLyBmbGF0X2hhc2hfc2V0OjplbXB0eSgpCisgIC8vCisgIC8vIFJldHVybnMg
d2hldGhlciBvciBub3QgdGhlIGBmbGF0X2hhc2hfc2V0YCBpcyBlbXB0eS4KKyAgdXNpbmcgQmFz
ZTo6ZW1wdHk7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6bWF4X3NpemUoKQorICAvLworICAvLyBS
ZXR1cm5zIHRoZSBsYXJnZXN0IHRoZW9yZXRpY2FsIHBvc3NpYmxlIG51bWJlciBvZiBlbGVtZW50
cyB3aXRoaW4gYQorICAvLyBgZmxhdF9oYXNoX3NldGAgdW5kZXIgY3VycmVudCBtZW1vcnkgY29u
c3RyYWludHMuIFRoaXMgdmFsdWUgY2FuIGJlIHRob3VnaHQKKyAgLy8gb2YgdGhlIGxhcmdlc3Qg
dmFsdWUgb2YgYHN0ZDo6ZGlzdGFuY2UoYmVnaW4oKSwgZW5kKCkpYCBmb3IgYQorICAvLyBgZmxh
dF9oYXNoX3NldDxUPmAuCisgIHVzaW5nIEJhc2U6Om1heF9zaXplOworCisgIC8vIGZsYXRfaGFz
aF9zZXQ6OnNpemUoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMg
Y3VycmVudGx5IHdpdGhpbiB0aGUgYGZsYXRfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjpzaXpl
OworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmNsZWFyKCkKKyAgLy8KKyAgLy8gUmVtb3ZlcyBhbGwg
ZWxlbWVudHMgZnJvbSB0aGUgYGZsYXRfaGFzaF9zZXRgLiBJbnZhbGlkYXRlcyBhbnkgcmVmZXJl
bmNlcywKKyAgLy8gcG9pbnRlcnMsIG9yIGl0ZXJhdG9ycyByZWZlcnJpbmcgdG8gY29udGFpbmVk
IGVsZW1lbnRzLgorICAvLworICAvLyBOT1RFOiB0aGlzIG9wZXJhdGlvbiBtYXkgc2hyaW5rIHRo
ZSB1bmRlcmx5aW5nIGJ1ZmZlci4gVG8gYXZvaWQgc2hyaW5raW5nCisgIC8vIHRoZSB1bmRlcmx5
aW5nIGJ1ZmZlciBjYWxsIGBlcmFzZShiZWdpbigpLCBlbmQoKSlgLgorICB1c2luZyBCYXNlOjpj
bGVhcjsKKworICAvLyBmbGF0X2hhc2hfc2V0OjplcmFzZSgpCisgIC8vCisgIC8vIEVyYXNlcyBl
bGVtZW50cyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfc2V0YC4gRXJhc2luZyBkb2VzIG5vdCB0cmln
Z2VyIGEKKyAgLy8gcmVoYXNoLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAg
Ly8gdm9pZCBlcmFzZShjb25zdF9pdGVyYXRvciBwb3MpOgorICAvLworICAvLyAgIEVyYXNlcyB0
aGUgZWxlbWVudCBhdCBgcG9zaXRpb25gIG9mIHRoZSBgZmxhdF9oYXNoX3NldGAsIHJldHVybmlu
ZworICAvLyAgIGB2b2lkYC4KKyAgLy8KKyAgLy8gICBOT1RFOiB0aGlzIHJldHVybiBiZWhhdmlv
ciBpcyBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIFNUTCBjb250YWluZXJzIGluCisgIC8vICAgZ2Vu
ZXJhbCBhbmQgYHN0ZDo6dW5vcmRlcmVkX21hcGAgaW4gcGFydGljdWxhci4KKyAgLy8KKyAgLy8g
aXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3Qp
OgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudHMgaW4gdGhlIG9wZW4gaW50ZXJ2YWwg
W2BmaXJzdGAsIGBsYXN0YCksIHJldHVybmluZyBhbgorICAvLyAgIGl0ZXJhdG9yIHBvaW50aW5n
IHRvIGBsYXN0YC4KKyAgLy8KKyAgLy8gc2l6ZV90eXBlIGVyYXNlKGNvbnN0IGtleV90eXBlJiBr
ZXkpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCB3aXRoIHRoZSBtYXRjaGluZyBr
ZXksIGlmIGl0IGV4aXN0cy4KKyAgdXNpbmcgQmFzZTo6ZXJhc2U7CisKKyAgLy8gZmxhdF9oYXNo
X3NldDo6aW5zZXJ0KCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVj
aWZpZWQgdmFsdWUgaW50byB0aGUgYGZsYXRfaGFzaF9zZXRgLAorICAvLyByZXR1cm5pbmcgYW4g
aXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQsIHByb3ZpZGVk
IHRoYXQKKyAgLy8gYW4gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkgZG9lcyBub3QgYWxyZWFk
eSBleGlzdC4gSWYgcmVoYXNoaW5nIG9jY3VycworICAvLyBkdWUgdG8gdGhlIGluc2VydGlvbiwg
YWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuIE92ZXJsb2FkcyBhcmUgbGlzdGVkCisgIC8v
IGJlbG93LgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0KGNvbnN0
IFQmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUgYGZsYXRf
aGFzaF9zZXRgLiBSZXR1cm5zIGEgcGFpciBjb25zaXN0aW5nIG9mIGFuCisgIC8vICAgaXRlcmF0
b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9yIHRvIHRoZSBlbGVtZW50IHRoYXQgcHJldmVu
dGVkIHRoZQorICAvLyAgIGluc2VydGlvbikgYW5kIGEgYm9vbCBkZW5vdGluZyB3aGV0aGVyIHRo
ZSBpbnNlcnRpb24gdG9vayBwbGFjZS4KKyAgLy8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9yLGJv
b2w+IGluc2VydChUJiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSBtb3ZlYWJsZSB2
YWx1ZSBpbnRvIHRoZSBgZmxhdF9oYXNoX3NldGAuIFJldHVybnMgYSBwYWlyCisgIC8vICAgY29u
c2lzdGluZyBvZiBhbiBpdGVyYXRvciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3IgdG8gdGhl
IGVsZW1lbnQgdGhhdAorICAvLyAgIHByZXZlbnRlZCB0aGUgaW5zZXJ0aW9uKSBhbmQgYSBib29s
IGRlbm90aW5nIHdoZXRoZXIgdGhlIGluc2VydGlvbiB0b29rCisgIC8vICAgcGxhY2UuCisgIC8v
CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBjb25zdCBUJiB2YWx1
ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBUJiYgdmFsdWUp
OgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBo
aW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hlcmUgdG8gYmVn
aW4gdGhlIGluc2VydGlvbiBzZWFyY2guIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlCisgIC8v
ICAgaW5zZXJ0ZWQgZWxlbWVudCwgb3IgdG8gdGhlIGV4aXN0aW5nIGVsZW1lbnQgdGhhdCBwcmV2
ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uLgorICAvLworICAvLyB2b2lkIGluc2VydChJbnB1
dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEluc2Vy
dHMgYSByYW5nZSBvZiB2YWx1ZXMgW2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisgIC8vICAgTk9U
RTogQWx0aG91Z2ggdGhlIFNUTCBkb2VzIG5vdCBzcGVjaWZ5IHdoaWNoIGVsZW1lbnQgbWF5IGJl
IGluc2VydGVkIGlmCisgIC8vICAgbXVsdGlwbGUga2V5cyBjb21wYXJlIGVxdWl2YWxlbnRseSwg
Zm9yIGBmbGF0X2hhc2hfc2V0YCB3ZSBndWFyYW50ZWUgdGhlCisgIC8vICAgZmlyc3QgbWF0Y2gg
aXMgaW5zZXJ0ZWQuCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxUPiBpbGlzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyB0aGUgZWxlbWVudHMgd2l0aGluIHRo
ZSBpbml0aWFsaXplciBsaXN0IGBpbGlzdGAuCisgIC8vCisgIC8vICAgTk9URTogQWx0aG91Z2gg
dGhlIFNUTCBkb2VzIG5vdCBzcGVjaWZ5IHdoaWNoIGVsZW1lbnQgbWF5IGJlIGluc2VydGVkIGlm
CisgIC8vICAgbXVsdGlwbGUga2V5cyBjb21wYXJlIGVxdWl2YWxlbnRseSB3aXRoaW4gdGhlIGlu
aXRpYWxpemVyIGxpc3QsIGZvcgorICAvLyAgIGBmbGF0X2hhc2hfc2V0YCB3ZSBndWFyYW50ZWUg
dGhlIGZpcnN0IG1hdGNoIGlzIGluc2VydGVkLgorICB1c2luZyBCYXNlOjppbnNlcnQ7CisKKyAg
Ly8gZmxhdF9oYXNoX3NldDo6ZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVu
dCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAv
LyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfc2V0YCwgcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50IHdp
dGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8gVGhlIGVs
ZW1lbnQgbWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBlbGVt
ZW50IHdpdGggdGhlCisgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIHRo
ZSBuZXdseSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVkIGltbWVk
aWF0ZWx5LiBQcmVmZXIgYHRyeV9lbXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBub3QKKyAg
Ly8gY29weWFibGUgb3IgbW92ZWFibGUuCisgIC8vCisgIC8vIElmIHJlaGFzaGluZyBvY2N1cnMg
ZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLgorICB1
c2luZyBCYXNlOjplbXBsYWNlOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmVtcGxhY2VfaGludCgp
CisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5
IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfc2V0
YCwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nCisgIC8vIHN1
Z2dlc3Rpb24gZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLCBhbmQgb25s
eSBpbnNlcnRzCisgIC8vIHByb3ZpZGVkIHRoYXQgbm8gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBr
ZXkgYWxyZWFkeSBleGlzdHMuCisgIC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25zdHJ1
Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQorICAvLyBr
ZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0ZWQg
ZWxlbWVudCB3aWxsIGJlCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJlZmVyIGB0cnlf
ZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90CisgIC8vIGNvcHlhYmxlIG9yIG1vdmVh
YmxlLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9u
LCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZV9o
aW50OworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmV4dHJhY3QoKQorICAvLworICAvLyBFeHRyYWN0
cyB0aGUgaW5kaWNhdGVkIGVsZW1lbnQsIGVyYXNpbmcgaXQgaW4gdGhlIHByb2Nlc3MsIGFuZCBy
ZXR1cm5zIGl0CisgIC8vIGFzIGEgQysrMTctY29tcGF0aWJsZSBub2RlIGhhbmRsZS4gT3Zlcmxv
YWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIG5vZGVfdHlwZSBleHRyYWN0KGNvbnN0
X2l0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0aGUgZWxlbWVudCBh
dCB0aGUgaW5kaWNhdGVkIHBvc2l0aW9uIGFuZCByZXR1cm5zIGEgbm9kZSBoYW5kbGUKKyAgLy8g
ICBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4KKyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJh
Y3QoY29uc3Qga2V5X3R5cGUmIHgpOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBlbGVtZW50
IHdpdGggdGhlIGtleSBtYXRjaGluZyB0aGUgcGFzc2VkIGtleSB2YWx1ZSBhbmQKKyAgLy8gICBy
ZXR1cm5zIGEgbm9kZSBoYW5kbGUgb3duaW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEuIElmIHRoZSBg
ZmxhdF9oYXNoX3NldGAKKyAgLy8gICBkb2VzIG5vdCBjb250YWluIGFuIGVsZW1lbnQgd2l0aCBh
IG1hdGNoaW5nIGtleSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuCisgIC8vICAgZW1wdHkgbm9k
ZSBoYW5kbGUuCisgIHVzaW5nIEJhc2U6OmV4dHJhY3Q7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6
bWVyZ2UoKQorICAvLworICAvLyBFeHRyYWN0cyBlbGVtZW50cyBmcm9tIGEgZ2l2ZW4gYHNvdXJj
ZWAgZmxhdCBoYXNoIG1hcCBpbnRvIHRoaXMKKyAgLy8gYGZsYXRfaGFzaF9zZXRgLiBJZiB0aGUg
ZGVzdGluYXRpb24gYGZsYXRfaGFzaF9zZXRgIGFscmVhZHkgY29udGFpbnMgYW4KKyAgLy8gZWxl
bWVudCB3aXRoIGFuIGVxdWl2YWxlbnQga2V5LCB0aGF0IGVsZW1lbnQgaXMgbm90IGV4dHJhY3Rl
ZC4KKyAgdXNpbmcgQmFzZTo6bWVyZ2U7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6c3dhcChmbGF0
X2hhc2hfc2V0JiBvdGhlcikKKyAgLy8KKyAgLy8gRXhjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiB0
aGlzIGBmbGF0X2hhc2hfc2V0YCB3aXRoIHRob3NlIG9mIHRoZSBgb3RoZXJgCisgIC8vIGZsYXQg
aGFzaCBtYXAsIGF2b2lkaW5nIGludm9jYXRpb24gb2YgYW55IG1vdmUsIGNvcHksIG9yIHN3YXAg
b3BlcmF0aW9ucyBvbgorICAvLyBpbmRpdmlkdWFsIGVsZW1lbnRzLgorICAvLworICAvLyBBbGwg
aXRlcmF0b3JzIGFuZCByZWZlcmVuY2VzIG9uIHRoZSBgZmxhdF9oYXNoX3NldGAgcmVtYWluIHZh
bGlkLCBleGNlcHRpbmcKKyAgLy8gZm9yIHRoZSBwYXN0LXRoZS1lbmQgaXRlcmF0b3IsIHdoaWNo
IGlzIGludmFsaWRhdGVkLgorICAvLworICAvLyBgc3dhcCgpYCByZXF1aXJlcyB0aGF0IHRoZSBm
bGF0IGhhc2ggc2V0J3MgaGFzaGluZyBhbmQga2V5IGVxdWl2YWxlbmNlCisgIC8vIGZ1bmN0aW9u
cyBiZSBTd2FwcGFibGUsIGFuZCBhcmUgZXhjaGFnZWQgdXNpbmcgdW5xdWFsaWZpZWQgY2FsbHMg
dG8KKyAgLy8gbm9uLW1lbWJlciBgc3dhcCgpYC4gSWYgdGhlIG1hcCdzIGFsbG9jYXRvciBoYXMK
KyAgLy8gYHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT46OnByb3BhZ2F0ZV9v
bl9jb250YWluZXJfc3dhcDo6dmFsdWVgCisgIC8vIHNldCB0byBgdHJ1ZWAsIHRoZSBhbGxvY2F0
b3JzIGFyZSBhbHNvIGV4Y2hhbmdlZCB1c2luZyBhbiB1bnF1YWxpZmllZCBjYWxsCisgIC8vIHRv
IG5vbi1tZW1iZXIgYHN3YXAoKWA7IG90aGVyd2lzZSwgdGhlIGFsbG9jYXRvcnMgYXJlIG5vdCBz
d2FwcGVkLgorICB1c2luZyBCYXNlOjpzd2FwOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OnJlaGFz
aChjb3VudCkKKyAgLy8KKyAgLy8gUmVoYXNoZXMgdGhlIGBmbGF0X2hhc2hfc2V0YCwgc2V0dGlu
ZyB0aGUgbnVtYmVyIG9mIHNsb3RzIHRvIGJlIGF0IGxlYXN0CisgIC8vIHRoZSBwYXNzZWQgdmFs
dWUuIElmIHRoZSBuZXcgbnVtYmVyIG9mIHNsb3RzIGluY3JlYXNlcyB0aGUgbG9hZCBmYWN0b3Ig
bW9yZQorICAvLyB0aGFuIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBmYWN0b3IKKyAgLy8gKGBj
b3VudGAgPCBgc2l6ZSgpYCAvIGBtYXhfbG9hZF9mYWN0b3IoKWApLCB0aGVuIHRoZSBuZXcgbnVt
YmVyIG9mIHNsb3RzCisgIC8vIHdpbGwgYmUgYXQgbGVhc3QgYHNpemUoKWAgLyBgbWF4X2xvYWRf
ZmFjdG9yKClgLgorICAvLworICAvLyBUbyBmb3JjZSBhIHJlaGFzaCwgcGFzcyByZWhhc2goMCku
CisgIC8vCisgIC8vIE5PVEU6IHVubGlrZSBiZWhhdmlvciBpbiBgc3RkOjp1bm9yZGVyZWRfc2V0
YCwgcmVmZXJlbmNlcyBhcmUgYWxzbworICAvLyBpbnZhbGlkYXRlZCB1cG9uIGEgYHJlaGFzaCgp
YC4KKyAgdXNpbmcgQmFzZTo6cmVoYXNoOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OnJlc2VydmUo
Y291bnQpCisgIC8vCisgIC8vIFNldHMgdGhlIG51bWJlciBvZiBzbG90cyBpbiB0aGUgYGZsYXRf
aGFzaF9zZXRgIHRvIHRoZSBudW1iZXIgbmVlZGVkIHRvCisgIC8vIGFjY29tbW9kYXRlIGF0IGxl
YXN0IGBjb3VudGAgdG90YWwgZWxlbWVudHMgd2l0aG91dCBleGNlZWRpbmcgdGhlIGN1cnJlbnQK
KyAgLy8gbWF4aW11bSBsb2FkIGZhY3RvciwgYW5kIG1heSByZWhhc2ggdGhlIGNvbnRhaW5lciBp
ZiBuZWVkZWQuCisgIHVzaW5nIEJhc2U6OnJlc2VydmU7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6
Y29udGFpbnMoKQorICAvLworICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxlbWVudCBjb21w
YXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgIGV4aXN0cworICAvLyB3aXRoaW4gdGhlIGBm
bGF0X2hhc2hfc2V0YCwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzbyBvciBgZmFsc2VgIG90aGVyd2lz
ZS4KKyAgdXNpbmcgQmFzZTo6Y29udGFpbnM7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6Y291bnQo
Y29uc3QgS2V5JiBrZXkpIGNvbnN0CisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBl
bGVtZW50cyBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgIHdpdGhpbgorICAvLyB0
aGUgYGZsYXRfaGFzaF9zZXRgLiBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBl
aXRoZXIgYDFgIG9yIGAwYAorICAvLyBzaW5jZSBkdXBsaWNhdGUgZWxlbWVudHMgYXJlIG5vdCBh
bGxvd2VkIHdpdGhpbiBhIGBmbGF0X2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Y291bnQ7CisK
KyAgLy8gZmxhdF9oYXNoX3NldDo6ZXF1YWxfcmFuZ2UoKQorICAvLworICAvLyBSZXR1cm5zIGEg
Y2xvc2VkIHJhbmdlIFtmaXJzdCwgbGFzdF0sIGRlZmluZWQgYnkgYSBgc3RkOjpwYWlyYCBvZiB0
d28KKyAgLy8gaXRlcmF0b3JzLCBjb250YWluaW5nIGFsbCBlbGVtZW50cyB3aXRoIHRoZSBwYXNz
ZWQga2V5IGluIHRoZQorICAvLyBgZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmVxdWFs
X3JhbmdlOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmZpbmQoKQorICAvLworICAvLyBGaW5kcyBh
biBlbGVtZW50IHdpdGggdGhlIHBhc3NlZCBga2V5YCB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfc2V0
YC4KKyAgdXNpbmcgQmFzZTo6ZmluZDsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpidWNrZXRfY291
bnQoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgImJ1Y2tldHMiIHdpdGhpbiB0
aGUgYGZsYXRfaGFzaF9zZXRgLiBOb3RlIHRoYXQKKyAgLy8gYmVjYXVzZSBhIGZsYXQgaGFzaCBt
YXAgY29udGFpbnMgYWxsIGVsZW1lbnRzIHdpdGhpbiBpdHMgaW50ZXJuYWwgc3RvcmFnZSwKKyAg
Ly8gdGhpcyB2YWx1ZSBzaW1wbHkgZXF1YWxzIHRoZSBjdXJyZW50IGNhcGFjaXR5IG9mIHRoZSBg
ZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmJ1Y2tldF9jb3VudDsKKworICAvLyBmbGF0
X2hhc2hfc2V0Ojpsb2FkX2ZhY3RvcigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQg
bG9hZCBmYWN0b3Igb2YgdGhlIGBmbGF0X2hhc2hfc2V0YCAodGhlIGF2ZXJhZ2UgbnVtYmVyCisg
IC8vIG9mIHNsb3RzIG9jY3VwaWVkIHdpdGggYSB2YWx1ZSB3aXRoaW4gdGhlIGhhc2ggbWFwKS4K
KyAgdXNpbmcgQmFzZTo6bG9hZF9mYWN0b3I7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6bWF4X2xv
YWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8gTWFuYWdlcyB0aGUgbWF4aW11bSBsb2FkIGZhY3RvciBv
ZiB0aGUgYGZsYXRfaGFzaF9zZXRgLiBPdmVybG9hZHMgYXJlCisgIC8vIGxpc3RlZCBiZWxvdy4K
KyAgLy8KKyAgLy8gZmxvYXQgZmxhdF9oYXNoX3NldDo6bWF4X2xvYWRfZmFjdG9yKCkKKyAgLy8K
KyAgLy8gICBSZXR1cm5zIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBmYWN0b3Igb2YgdGhlIGBm
bGF0X2hhc2hfc2V0YC4KKyAgLy8KKyAgLy8gdm9pZCBmbGF0X2hhc2hfc2V0OjptYXhfbG9hZF9m
YWN0b3IoZmxvYXQgbWwpCisgIC8vCisgIC8vICAgU2V0cyB0aGUgbWF4aW11bSBsb2FkIGZhY3Rv
ciBvZiB0aGUgYGZsYXRfaGFzaF9zZXRgIHRvIHRoZSBwYXNzZWQgdmFsdWUuCisgIC8vCisgIC8v
ICAgTk9URTogVGhpcyBvdmVybG9hZCBpcyBwcm92aWRlZCBvbmx5IGZvciBBUEkgY29tcGF0aWJp
bGl0eSB3aXRoIHRoZSBTVEw7CisgIC8vICAgYGZsYXRfaGFzaF9zZXRgIHdpbGwgaWdub3JlIGFu
eSBzZXQgbG9hZCBmYWN0b3IgYW5kIG1hbmFnZSBpdHMgcmVoYXNoaW5nCisgIC8vICAgaW50ZXJu
YWxseSBhcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgIHVzaW5nIEJhc2U6Om1heF9sb2Fk
X2ZhY3RvcjsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpnZXRfYWxsb2NhdG9yKCkKKyAgLy8KKyAg
Ly8gUmV0dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBm
bGF0X2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Z2V0X2FsbG9jYXRvcjsKKworICAvLyBmbGF0
X2hhc2hfc2V0OjpoYXNoX2Z1bmN0aW9uKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgaGFzaGlu
ZyBmdW5jdGlvbiB1c2VkIHRvIGhhc2ggdGhlIGtleXMgd2l0aGluIHRoaXMKKyAgLy8gYGZsYXRf
aGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjpoYXNoX2Z1bmN0aW9uOworCisgIC8vIGZsYXRfaGFz
aF9zZXQ6OmtleV9lcSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGZ1bmN0aW9uIHVzZWQgZm9y
IGNvbXBhcmluZyBrZXlzIGVxdWFsaXR5LgorICB1c2luZyBCYXNlOjprZXlfZXE7Cit9OworCitu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1
Y3QgRmxhdEhhc2hTZXRQb2xpY3kgeworICB1c2luZyBzbG90X3R5cGUgPSBUOworICB1c2luZyBr
ZXlfdHlwZSA9IFQ7CisgIHVzaW5nIGluaXRfdHlwZSA9IFQ7CisgIHVzaW5nIGNvbnN0YW50X2l0
ZXJhdG9ycyA9IHN0ZDo6dHJ1ZV90eXBlOworCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3Is
IGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvY2F0b3IqIGFsbG9j
LCBzbG90X3R5cGUqIHNsb3QsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgYWJzbDo6YWxsb2NhdG9y
X3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoKmFsbG9jLCBzbG90LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgorICBzdGF0aWMg
dm9pZCBkZXN0cm95KEFsbG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCkgeworICAgIGFi
c2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6ZGVzdHJveSgqYWxsb2MsIHNsb3QpOwor
ICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgdHJhbnNm
ZXIoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgc2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAgIGNvbnN0cnVjdChhbGxvYywgbmV3
X3Nsb3QsIHN0ZDo6bW92ZSgqb2xkX3Nsb3QpKTsKKyAgICBkZXN0cm95KGFsbG9jLCBvbGRfc2xv
dCk7CisgIH0KKworICBzdGF0aWMgVCYgZWxlbWVudChzbG90X3R5cGUqIHNsb3QpIHsgcmV0dXJu
ICpzbG90OyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRp
YyBkZWNsdHlwZShhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkRlY29tcG9zZVZhbHVlKAorICAg
ICAgc3RkOjpkZWNsdmFsPEY+KCksIHN0ZDo6ZGVjbHZhbDxBcmdzPigpLi4uKSkKKyAgYXBwbHko
RiYmIGYsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgcmV0dXJuIGFic2w6OmNvbnRhaW5lcl9pbnRl
cm5hbDo6RGVjb21wb3NlVmFsdWUoCisgICAgICAgIHN0ZDo6Zm9yd2FyZDxGPihmKSwgc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIHN0YXRpYyBzaXplX3Qgc3BhY2VfdXNl
ZChjb25zdCBUKikgeyByZXR1cm4gMDsgfQorfTsKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJf
aW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVS
X0ZMQVRfSEFTSF9TRVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hf
c2V0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldF90ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU1MmZkNTMyY2JlZWM3NTE1OGJlNjIwNWU1NjExODFjYjE3NGQ0YmIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldF90ZXN0LmNjCkBAIC0wLDAg
KzEsMTI2IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5j
bHVkZSAiYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldC5oIgorCisjaW5jbHVkZSA8dmVjdG9y
PgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVz
dGluZy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRf
Y29uc3RydWN0b3JfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vu
b3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9tZW1v
cnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25h
bWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNl
IHsKKwordXNpbmcgOjphYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfaW50ZXJuYWw6OkVu
dW07Cit1c2luZyA6OmFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9pbnRlcm5hbDo6RW51
bUNsYXNzOwordXNpbmcgOjp0ZXN0aW5nOjpQb2ludGVlOwordXNpbmcgOjp0ZXN0aW5nOjpVbm9y
ZGVyZWRFbGVtZW50c0FyZTsKK3VzaW5nIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVB
cnJheTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+Cit1c2luZyBTZXQgPQorICAgIGFic2w6OmZsYXRf
aGFzaF9zZXQ8VCwgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFs
bG9jPFQ+PjsKKwordXNpbmcgU2V0VHlwZXMgPQorICAgIDo6dGVzdGluZzo6VHlwZXM8U2V0PGlu
dD4sIFNldDxzdGQ6OnN0cmluZz4sIFNldDxFbnVtPiwgU2V0PEVudW1DbGFzcz4+OworCitJTlNU
QU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChGbGF0SGFzaFNldCwgQ29uc3RydWN0b3JUZXN0LCBT
ZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChGbGF0SGFzaFNldCwgTG9v
a3VwVGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoRmxhdEhh
c2hTZXQsIE1vZGlmaWVyc1Rlc3QsIFNldFR5cGVzKTsKKworVEVTVChGbGF0SGFzaFNldCwgRW1w
bGFjZVN0cmluZykgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IHsiYSIsICJiIn07
CisgIGFic2w6OmZsYXRfaGFzaF9zZXQ8YWJzbDo6c3RyaW5nX3ZpZXc+IGhzKHYuYmVnaW4oKSwg
di5lbmQoKSk7CisgIEVYUEVDVF9USEFUKGhzLCBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHYp
KTsKK30KKworVEVTVChGbGF0SGFzaFNldCwgQml0ZmllbGRBcmd1bWVudCkgeworICB1bmlvbiB7
CisgICAgaW50IG4gOiAxOworICB9OworICBuID0gMDsKKyAgYWJzbDo6ZmxhdF9oYXNoX3NldDxp
bnQ+IHMgPSB7bn07CisgIHMuaW5zZXJ0KG4pOworICBzLmluc2VydChzLmVuZCgpLCBuKTsKKyAg
cy5pbnNlcnQoe259KTsKKyAgcy5lcmFzZShuKTsKKyAgcy5jb3VudChuKTsKKyAgcy5wcmVmZXRj
aChuKTsKKyAgcy5maW5kKG4pOworICBzLmNvbnRhaW5zKG4pOworICBzLmVxdWFsX3JhbmdlKG4p
OworfQorCitURVNUKEZsYXRIYXNoU2V0LCBNZXJnZUV4dHJhY3RJbnNlcnQpIHsKKyAgc3RydWN0
IEhhc2ggeworICAgIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxpbnQ+
JiBwKSBjb25zdCB7IHJldHVybiAqcDsgfQorICB9OworICBzdHJ1Y3QgRXEgeworICAgIGJvb2wg
b3BlcmF0b3IoKShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8aW50PiYgYSwKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPGludD4mIGIpIGNvbnN0IHsKKyAgICAgIHJldHVy
biAqYSA9PSAqYjsKKyAgICB9CisgIH07CisgIGFic2w6OmZsYXRfaGFzaF9zZXQ8c3RkOjp1bmlx
dWVfcHRyPGludD4sIEhhc2gsIEVxPiBzZXQxLCBzZXQyOworICBzZXQxLmluc2VydChhYnNsOjpt
YWtlX3VuaXF1ZTxpbnQ+KDcpKTsKKyAgc2V0MS5pbnNlcnQoYWJzbDo6bWFrZV91bmlxdWU8aW50
PigxNykpOworCisgIHNldDIuaW5zZXJ0KGFic2w6Om1ha2VfdW5pcXVlPGludD4oNykpOworICBz
ZXQyLmluc2VydChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDE5KSk7CisKKyAgRVhQRUNUX1RIQVQo
c2V0MSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSwgUG9pbnRlZSgxNykpKTsKKyAg
RVhQRUNUX1RIQVQoc2V0MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSwgUG9pbnRl
ZSgxOSkpKTsKKworICBzZXQxLm1lcmdlKHNldDIpOworCisgIEVYUEVDVF9USEFUKHNldDEsIFVu
b3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoNyksIFBvaW50ZWUoMTcpLCBQb2ludGVlKDE5KSkp
OworICBFWFBFQ1RfVEhBVChzZXQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQb2ludGVlKDcpKSk7
CisKKyAgYXV0byBub2RlID0gc2V0MS5leHRyYWN0KGFic2w6Om1ha2VfdW5pcXVlPGludD4oNykp
OworICBFWFBFQ1RfVFJVRShub2RlKTsKKyAgRVhQRUNUX1RIQVQobm9kZS52YWx1ZSgpLCBQb2lu
dGVlKDcpKTsKKyAgRVhQRUNUX1RIQVQoc2V0MSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRl
ZSgxNyksIFBvaW50ZWUoMTkpKSk7CisKKyAgYXV0byBpbnNlcnRfcmVzdWx0ID0gc2V0Mi5pbnNl
cnQoc3RkOjptb3ZlKG5vZGUpKTsKKyAgRVhQRUNUX0ZBTFNFKG5vZGUpOworICBFWFBFQ1RfRkFM
U0UoaW5zZXJ0X3Jlc3VsdC5pbnNlcnRlZCk7CisgIEVYUEVDVF9UUlVFKGluc2VydF9yZXN1bHQu
bm9kZSk7CisgIEVYUEVDVF9USEFUKGluc2VydF9yZXN1bHQubm9kZS52YWx1ZSgpLCBQb2ludGVl
KDcpKTsKKyAgRVhQRUNUX0VRKCoqaW5zZXJ0X3Jlc3VsdC5wb3NpdGlvbiwgNyk7CisgIEVYUEVD
VF9ORShpbnNlcnRfcmVzdWx0LnBvc2l0aW9uLT5nZXQoKSwgaW5zZXJ0X3Jlc3VsdC5ub2RlLnZh
bHVlKCkuZ2V0KCkpOworICBFWFBFQ1RfVEhBVChzZXQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQ
b2ludGVlKDcpKSk7CisKKyAgbm9kZSA9IHNldDEuZXh0cmFjdChhYnNsOjptYWtlX3VuaXF1ZTxp
bnQ+KDE3KSk7CisgIEVYUEVDVF9UUlVFKG5vZGUpOworICBFWFBFQ1RfVEhBVChub2RlLnZhbHVl
KCksIFBvaW50ZWUoMTcpKTsKKyAgRVhQRUNUX1RIQVQoc2V0MSwgVW5vcmRlcmVkRWxlbWVudHNB
cmUoUG9pbnRlZSgxOSkpKTsKKworICBub2RlLnZhbHVlKCkgPSBhYnNsOjptYWtlX3VuaXF1ZTxp
bnQ+KDIzKTsKKworICBpbnNlcnRfcmVzdWx0ID0gc2V0Mi5pbnNlcnQoc3RkOjptb3ZlKG5vZGUp
KTsKKyAgRVhQRUNUX0ZBTFNFKG5vZGUpOworICBFWFBFQ1RfVFJVRShpbnNlcnRfcmVzdWx0Lmlu
c2VydGVkKTsKKyAgRVhQRUNUX0ZBTFNFKGluc2VydF9yZXN1bHQubm9kZSk7CisgIEVYUEVDVF9F
USgqKmluc2VydF9yZXN1bHQucG9zaXRpb24sIDIzKTsKKyAgRVhQRUNUX1RIQVQoc2V0MiwgVW5v
cmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSwgUG9pbnRlZSgyMykpKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1l
c3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaAppbmRleCBjYTM2ZmQzNjk5YjkwNWMy
ZWRlOWJiMTA3MjViNGQ5YjY2OTg2ODc3Li4xMjc1NmJiODIwY2Y2YWU5NTZjYTQ2NGE4YWM3Y2Q3
MzJjYmM5ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaApAQCAtNjIwLDYgKzYyMCwxMiBA
QCBjbGFzcyBJbmxpbmVkVmVjdG9yIHsKICAgLy8gUmV0dXJucyB0aGUgYWxsb2NhdG9yIG9mIHRo
aXMgaW5saW5lZCB2ZWN0b3IuCiAgIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25z
dCB7IHJldHVybiBhbGxvY2F0b3IoKTsgfQogCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBm
cmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgY29uc3QgSW5saW5lZFZlY3RvciYgdikgeworICAg
IHJldHVybiBIOjpjb21iaW5lKEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6Om1vdmUoaCksIHYu
ZGF0YSgpLCB2LnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgdi5zaXplKCkpOworICB9
CisKICBwcml2YXRlOgogICBzdGF0aWNfYXNzZXJ0KE4gPiAwLCAiaW5saW5lZCB2ZWN0b3Igd2l0
aCBub25wb3NpdGl2ZSBzaXplIik7CiAKQEAgLTY0OCw4ICs2NTQsNyBAQCBjbGFzcyBJbmxpbmVk
VmVjdG9yIHsKICAgLy8gb3VyIGluc3RhbmNlIG9mIGl0IGZvciBmcmVlLgogICBjbGFzcyBBbGxv
Y2F0b3JBbmRUYWcgOiBwcml2YXRlIGFsbG9jYXRvcl90eXBlIHsKICAgIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBBbGxvY2F0b3JBbmRUYWcoY29uc3QgYWxsb2NhdG9yX3R5cGUmIGEsIFRhZyB0ID0g
VGFnKCkpCi0gICAgICAgIDogYWxsb2NhdG9yX3R5cGUoYSksIHRhZ18odCkge30KKyAgICBleHBs
aWNpdCBBbGxvY2F0b3JBbmRUYWcoY29uc3QgYWxsb2NhdG9yX3R5cGUmIGEpIDogYWxsb2NhdG9y
X3R5cGUoYSkge30KICAgICBUYWcmIHRhZygpIHsgcmV0dXJuIHRhZ187IH0KICAgICBjb25zdCBU
YWcmIHRhZygpIGNvbnN0IHsgcmV0dXJuIHRhZ187IH0KICAgICBhbGxvY2F0b3JfdHlwZSYgYWxs
b2NhdG9yKCkgeyByZXR1cm4gKnRoaXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bmxpbmVkX3ZlY3Rvcl9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0
b3JfYmVuY2htYXJrLmNjCmluZGV4IDI0ZjIxNzQ5MjhhMzhiMDFmZWY5OWFlMjdjYjg5ZTQxOTgy
NjVhYjMuLmEzYWQwZjhhZTRmMWExNjNjN2YyMzI5MzJlNDZhMzhlZTRlYTY3MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl9iZW5jaG1hcmsuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yX2JlbmNobWFyay5jYwpAQCAtNjYsNyArNjYsNyBA
QCBCRU5DSE1BUksoQk1fU3RkVmVjdG9yRmlsbCktPlJhbmdlKDAsIDEwMjQpOwogLy8gVGhlIHB1
cnBvc2Ugb2YgdGhlIG5leHQgdHdvIGJlbmNobWFya3MgaXMgdG8gdmVyaWZ5IHRoYXQKIC8vIGFi
c2w6OklubGluZWRWZWN0b3IgaXMgZWZmaWNpZW50IHdoZW4gbW92aW5nIGlzIG1vcmUgZWZmaWNl
bnQgdGhhbgogLy8gY29weWluZy4gVG8gZG8gc28sIHdlIHVzZSBzdHJpbmdzIHRoYXQgYXJlIGxh
cmdlciB0aGFuIHRoZSBzaG9ydAotLy8gc3RkOjpzdHJpbmcgb3B0aW1pemF0aW9uLgorLy8gc3Ry
aW5nIG9wdGltaXphdGlvbi4KIGJvb2wgU3RyaW5nUmVwcmVzZW50ZWRJbmxpbmUoc3RkOjpzdHJp
bmcgcykgewogICBjb25zdCBjaGFyKiBjaGFycyA9IHMuZGF0YSgpOwogICBzdGQ6OnN0cmluZyBz
MSA9IHN0ZDo6bW92ZShzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3Zl
Y3Rvcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yX3Rlc3QuY2MKaW5k
ZXggMTk2YTFiZWQ5NzZjNGJiZDA2MGEwYzgxYTMwODE5YWNlZDQ2NjliMi4uMDhkY2QzZWY2NmZi
NmEzMzAyZjg2MmM1MmFkOTFmNTM2MjYwZDQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2lubGluZWRfdmVjdG9yX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVj
dG9yX3Rlc3QuY2MKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJu
YWwvcmF3X2xvZ2dpbmcuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvbWFjcm9zLmgiCiAjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmgiCisjaW5j
bHVkZSAiYWJzbC9oYXNoL2hhc2hfdGVzdGluZy5oIgogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCiAKQEAgLTE3ODgsNCAr
MTc4OSw1IEBAIFRFU1QoQWxsb2NhdG9yU3VwcG9ydFRlc3QsIFNpemVBbGxvY0NvbnN0cnVjdG9y
KSB7CiAgICAgRVhQRUNUX1RIQVQodiwgQWxsT2YoU2l6ZUlzKGxlbiksIEVhY2goMCkpKTsKICAg
fQogfQorCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL2NvbnRhaW5lcl9tZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmM1ZDJkZjY3MzE0ZTgyOWZjOWY1
OTFiMzZlNjVhYjlkZjNlMGNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaApAQCAtMCwwICsxLDQwNSBAQAorLy8gQ29weXJpZ2h0
IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRF
Uk5BTF9DT05UQUlORVJfTUVNT1JZX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFM
X0NPTlRBSU5FUl9NRU1PUllfSF8KKworI2lmZGVmIEFERFJFU1NfU0FOSVRJWkVSCisjaW5jbHVk
ZSA8c2FuaXRpemVyL2FzYW5faW50ZXJmYWNlLmg+CisjZW5kaWYKKworI2lmZGVmIE1FTU9SWV9T
QU5JVElaRVIKKyNpbmNsdWRlIDxzYW5pdGl6ZXIvbXNhbl9pbnRlcmZhY2UuaD4KKyNlbmRpZgor
CisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1
dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJz
bC91dGlsaXR5L3V0aWxpdHkuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRh
aW5lcl9pbnRlcm5hbCB7CisKKy8vIEFsbG9jYXRlcyBhdCBsZWFzdCBuIGJ5dGVzIGFsaWduZWQg
dG8gdGhlIHNwZWNpZmllZCBhbGlnbm1lbnQuCisvLyBBbGlnbm1lbnQgbXVzdCBiZSBhIHBvd2Vy
IG9mIDIuIEl0IG11c3QgYmUgcG9zaXRpdmUuCisvLworLy8gTm90ZSB0aGF0IG1hbnkgYWxsb2Nh
dG9ycyBkb24ndCBob25vciBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIGFib3ZlIGNlcnRhaW4KKy8v
IHRocmVzaG9sZCAodXN1YWxseSBlaXRoZXIgYWxpZ25vZihzdGQ6Om1heF9hbGlnbl90KSBvciBh
bGlnbm9mKHZvaWQqKSkuCisvLyBBbGxvY2F0ZSgpIGRvZXNuJ3QgYXBwbHkgYWxpZ25tZW50IGNv
cnJlY3Rpb25zLiBJZiB0aGUgdW5kZXJseWluZyBhbGxvY2F0b3IKKy8vIHJldHVybnMgaW5zdWZm
aWNpZW50bHkgYWxpZ25tZW50IHBvaW50ZXIsIHRoYXQncyB3aGF0IHlvdSBhcmUgZ29pbmcgdG8g
Z2V0LgordGVtcGxhdGUgPHNpemVfdCBBbGlnbm1lbnQsIGNsYXNzIEFsbG9jPgordm9pZCogQWxs
b2NhdGUoQWxsb2MqIGFsbG9jLCBzaXplX3QgbikgeworICBzdGF0aWNfYXNzZXJ0KEFsaWdubWVu
dCA+IDAsICIiKTsKKyAgYXNzZXJ0KG4gJiYgIm4gbXVzdCBiZSBwb3NpdGl2ZSIpOworICBzdHJ1
Y3QgYWxpZ25hcyhBbGlnbm1lbnQpIE0ge307CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBhYnNsOjph
bGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6dGVtcGxhdGUgcmViaW5kX2FsbG9jPE0+OworICB1c2lu
ZyBBVCA9IHR5cGVuYW1lIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+Ojp0ZW1wbGF0ZSBy
ZWJpbmRfdHJhaXRzPE0+OworICBBIG1lbV9hbGxvYygqYWxsb2MpOworICB2b2lkKiBwID0gQVQ6
OmFsbG9jYXRlKG1lbV9hbGxvYywgKG4gKyBzaXplb2YoTSkgLSAxKSAvIHNpemVvZihNKSk7Cisg
IGFzc2VydChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocCkgJSBBbGlnbm1lbnQgPT0gMCAm
JgorICAgICAgICAgImFsbG9jYXRvciBkb2VzIG5vdCByZXNwZWN0IGFsaWdubWVudCIpOworICBy
ZXR1cm4gcDsKK30KKworLy8gVGhlIHBvaW50ZXIgbXVzdCBoYXZlIGJlZW4gcHJldmlvdXNseSBv
YnRhaW5lZCBieSBjYWxsaW5nCisvLyBBbGxvY2F0ZTxBbGlnbm1lbnQ+KGFsbG9jLCBuKS4KK3Rl
bXBsYXRlIDxzaXplX3QgQWxpZ25tZW50LCBjbGFzcyBBbGxvYz4KK3ZvaWQgRGVhbGxvY2F0ZShB
bGxvYyogYWxsb2MsIHZvaWQqIHAsIHNpemVfdCBuKSB7CisgIHN0YXRpY19hc3NlcnQoQWxpZ25t
ZW50ID4gMCwgIiIpOworICBhc3NlcnQobiAmJiAibiBtdXN0IGJlIHBvc2l0aXZlIik7CisgIHN0
cnVjdCBhbGlnbmFzKEFsaWdubWVudCkgTSB7fTsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIGFic2w6
OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+Ojp0ZW1wbGF0ZSByZWJpbmRfYWxsb2M8TT47CisgIHVz
aW5nIEFUID0gdHlwZW5hbWUgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OnRlbXBsYXRl
IHJlYmluZF90cmFpdHM8TT47CisgIEEgbWVtX2FsbG9jKCphbGxvYyk7CisgIEFUOjpkZWFsbG9j
YXRlKG1lbV9hbGxvYywgc3RhdGljX2Nhc3Q8TSo+KHApLAorICAgICAgICAgICAgICAgICAobiAr
IHNpemVvZihNKSAtIDEpIC8gc2l6ZW9mKE0pKTsKK30KKworbmFtZXNwYWNlIG1lbW9yeV9pbnRl
cm5hbCB7CisKKy8vIENvbnN0cnVjdHMgVCBpbnRvIHVuaW5pdGlhbGl6ZWQgc3RvcmFnZSBwb2lu
dGVkIGJ5IGBwdHJgIHVzaW5nIHRoZSBhcmdzCisvLyBzcGVjaWZpZWQgaW4gdGhlIHR1cGxlLgor
dGVtcGxhdGUgPGNsYXNzIEFsbG9jLCBjbGFzcyBULCBjbGFzcyBUdXBsZSwgc2l6ZV90Li4uIEk+
Cit2b2lkIENvbnN0cnVjdEZyb21UdXBsZUltcGwoQWxsb2MqIGFsbG9jLCBUKiBwdHIsIFR1cGxl
JiYgdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjppbmRleF9zZXF1ZW5jZTxJ
Li4uPikgeworICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6Y29uc3RydWN0KAorICAg
ICAgKmFsbG9jLCBwdHIsIHN0ZDo6Z2V0PEk+KHN0ZDo6Zm9yd2FyZDxUdXBsZT4odCkpLi4uKTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEY+CitzdHJ1Y3QgV2l0aENvbnN0cnVjdGVk
SW1wbEYgeworICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgZGVjbHR5cGUoc3RkOjpkZWNs
dmFsPEY+KCkoc3RkOjpkZWNsdmFsPFQ+KCkpKSBvcGVyYXRvcigpKAorICAgICAgQXJncyYmLi4u
IGFyZ3MpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RkOjpmb3J3YXJkPEY+KGYpKFQoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgIH0KKyAgRiYmIGY7Cit9OworCit0ZW1wbGF0ZSA8Y2xh
c3MgVCwgY2xhc3MgVHVwbGUsIHNpemVfdC4uLiBJcywgY2xhc3MgRj4KK2RlY2x0eXBlKHN0ZDo6
ZGVjbHZhbDxGPigpKHN0ZDo6ZGVjbHZhbDxUPigpKSkgV2l0aENvbnN0cnVjdGVkSW1wbCgKKyAg
ICBUdXBsZSYmIHQsIGFic2w6OmluZGV4X3NlcXVlbmNlPElzLi4uPiwgRiYmIGYpIHsKKyAgcmV0
dXJuIFdpdGhDb25zdHJ1Y3RlZEltcGxGPFQsIEY+e3N0ZDo6Zm9yd2FyZDxGPihmKX0oCisgICAg
ICBzdGQ6OmdldDxJcz4oc3RkOjpmb3J3YXJkPFR1cGxlPih0KSkuLi4pOworfQorCit0ZW1wbGF0
ZSA8Y2xhc3MgVCwgc2l6ZV90Li4uIElzPgorYXV0byBUdXBsZVJlZkltcGwoVCYmIHQsIGFic2w6
OmluZGV4X3NlcXVlbmNlPElzLi4uPikKKyAgICAtPiBkZWNsdHlwZShzdGQ6OmZvcndhcmRfYXNf
dHVwbGUoc3RkOjpnZXQ8SXM+KHN0ZDo6Zm9yd2FyZDxUPih0KSkuLi4pKSB7CisgIHJldHVybiBz
dGQ6OmZvcndhcmRfYXNfdHVwbGUoc3RkOjpnZXQ8SXM+KHN0ZDo6Zm9yd2FyZDxUPih0KSkuLi4p
OworfQorCisvLyBSZXR1cm5zIGEgdHVwbGUgb2YgcmVmZXJlbmNlcyB0byB0aGUgZWxlbWVudHMg
b2YgdGhlIGlucHV0IHR1cGxlLiBUIG11c3QgYmUgYQorLy8gdHVwbGUuCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4KK2F1dG8gVHVwbGVSZWYoVCYmIHQpIC0+IGRlY2x0eXBlKAorICAgIFR1cGxlUmVmSW1w
bChzdGQ6OmZvcndhcmQ8VD4odCksCisgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfaW5kZXhf
c2VxdWVuY2U8CisgICAgICAgICAgICAgICAgICAgICBzdGQ6OnR1cGxlX3NpemU8dHlwZW5hbWUg
c3RkOjpkZWNheTxUPjo6dHlwZT46OnZhbHVlPigpKSkgeworICByZXR1cm4gVHVwbGVSZWZJbXBs
KAorICAgICAgc3RkOjpmb3J3YXJkPFQ+KHQpLAorICAgICAgYWJzbDo6bWFrZV9pbmRleF9zZXF1
ZW5jZTwKKyAgICAgICAgICBzdGQ6OnR1cGxlX3NpemU8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6
dHlwZT46OnZhbHVlPigpKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIEssIGNsYXNz
IFY+CitkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Rj4oKShzdGQ6OmRlY2x2YWw8Y29uc3QgSyY+KCks
IHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6ZGVjbHZhbDxzdGQ6OnR1cGxlPEs+PigpLCBzdGQ6OmRlY2x2YWw8Vj4oKSkpCitEZWNvbXBv
c2VQYWlySW1wbChGJiYgZiwgc3RkOjpwYWlyPHN0ZDo6dHVwbGU8Sz4sIFY+IHApIHsKKyAgY29u
c3QgYXV0byYga2V5ID0gc3RkOjpnZXQ8MD4ocC5maXJzdCk7CisgIHJldHVybiBzdGQ6OmZvcndh
cmQ8Rj4oZikoa2V5LCBzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6bW92ZShwLmZpcnN0
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUocC5zZWNvbmQpKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlIG1lbW9yeV9pbnRlcm5hbAorCisvLyBDb25zdHJ1Y3RzIFQgaW50
byB1bmluaXRpYWxpemVkIHN0b3JhZ2UgcG9pbnRlZCBieSBgcHRyYCB1c2luZyB0aGUgYXJncwor
Ly8gc3BlY2lmaWVkIGluIHRoZSB0dXBsZS4KK3RlbXBsYXRlIDxjbGFzcyBBbGxvYywgY2xhc3Mg
VCwgY2xhc3MgVHVwbGU+Cit2b2lkIENvbnN0cnVjdEZyb21UdXBsZShBbGxvYyogYWxsb2MsIFQq
IHB0ciwgVHVwbGUmJiB0KSB7CisgIG1lbW9yeV9pbnRlcm5hbDo6Q29uc3RydWN0RnJvbVR1cGxl
SW1wbCgKKyAgICAgIGFsbG9jLCBwdHIsIHN0ZDo6Zm9yd2FyZDxUdXBsZT4odCksCisgICAgICBh
YnNsOjptYWtlX2luZGV4X3NlcXVlbmNlPAorICAgICAgICAgIHN0ZDo6dHVwbGVfc2l6ZTx0eXBl
bmFtZSBzdGQ6OmRlY2F5PFR1cGxlPjo6dHlwZT46OnZhbHVlPigpKTsKK30KKworLy8gQ29uc3Ry
dWN0cyBUIHVzaW5nIHRoZSBhcmdzIHNwZWNpZmllZCBpbiB0aGUgdHVwbGUgYW5kIGNhbGxzIEYg
d2l0aCB0aGUKKy8vIGNvbnN0cnVjdGVkIHZhbHVlLgordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNz
IFR1cGxlLCBjbGFzcyBGPgorZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEY+KCkoc3RkOjpkZWNsdmFs
PFQ+KCkpKSBXaXRoQ29uc3RydWN0ZWQoCisgICAgVHVwbGUmJiB0LCBGJiYgZikgeworICByZXR1
cm4gbWVtb3J5X2ludGVybmFsOjpXaXRoQ29uc3RydWN0ZWRJbXBsPFQ+KAorICAgICAgc3RkOjpm
b3J3YXJkPFR1cGxlPih0KSwKKyAgICAgIGFic2w6Om1ha2VfaW5kZXhfc2VxdWVuY2U8CisgICAg
ICAgICAgc3RkOjp0dXBsZV9zaXplPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VHVwbGU+Ojp0eXBlPjo6
dmFsdWU+KCksCisgICAgICBzdGQ6OmZvcndhcmQ8Rj4oZikpOworfQorCisvLyBHaXZlbiBhcmd1
bWVudHMgb2YgYW4gc3RkOjpwYWlyJ3MgY29uc3J1Y3RvciwgUGFpckFyZ3MoKSByZXR1cm5zIGEg
cGFpciBvZgorLy8gdHVwbGVzIHdpdGggcmVmZXJlbmNlcyB0byB0aGUgcGFzc2VkIGFyZ3VtZW50
cy4gVGhlIHR1cGxlcyBjb250YWluCisvLyBjb25zdHJ1Y3RvciBhcmd1bWVudHMgZm9yIHRoZSBm
aXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50cyBvZiB0aGUgcGFpci4KKy8vCisvLyBUaGUgZm9s
bG93aW5nIHR3byBzbmlwcGV0cyBhcmUgZXF1aXZhbGVudC4KKy8vCisvLyAxLiBzdGQ6OnBhaXI8
RiwgUz4gcChhcmdzLi4uKTsKKy8vCisvLyAyLiBhdXRvIGEgPSBQYWlyQXJncyhhcmdzLi4uKTsK
Ky8vICAgIHN0ZDo6cGFpcjxGLCBTPiBwKHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwKKy8vICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShwLmZpcnN0KSwgc3RkOjptb3ZlKHAuc2Vjb25k
KSk7CitpbmxpbmUgc3RkOjpwYWlyPHN0ZDo6dHVwbGU8Piwgc3RkOjp0dXBsZTw+PiBQYWlyQXJn
cygpIHsgcmV0dXJuIHt9OyB9Cit0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgUz4KK3N0ZDo6cGFp
cjxzdGQ6OnR1cGxlPEYmJj4sIHN0ZDo6dHVwbGU8UyYmPj4gUGFpckFyZ3MoRiYmIGYsIFMmJiBz
KSB7CisgIHJldHVybiB7c3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6OmZvcndhcmRfYXNf
dHVwbGUoc3RkOjpmb3J3YXJkPEY+KGYpKSwKKyAgICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVw
bGUoc3RkOjpmb3J3YXJkPFM+KHMpKX07Cit9Cit0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgUz4K
K3N0ZDo6cGFpcjxzdGQ6OnR1cGxlPGNvbnN0IEYmPiwgc3RkOjp0dXBsZTxjb25zdCBTJj4+IFBh
aXJBcmdzKAorICAgIGNvbnN0IHN0ZDo6cGFpcjxGLCBTPiYgcCkgeworICByZXR1cm4gUGFpckFy
Z3MocC5maXJzdCwgcC5zZWNvbmQpOworfQordGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIFM+Citz
dGQ6OnBhaXI8c3RkOjp0dXBsZTxGJiY+LCBzdGQ6OnR1cGxlPFMmJj4+IFBhaXJBcmdzKHN0ZDo6
cGFpcjxGLCBTPiYmIHApIHsKKyAgcmV0dXJuIFBhaXJBcmdzKHN0ZDo6Zm9yd2FyZDxGPihwLmZp
cnN0KSwgc3RkOjpmb3J3YXJkPFM+KHAuc2Vjb25kKSk7Cit9Cit0ZW1wbGF0ZSA8Y2xhc3MgRiwg
Y2xhc3MgUz4KK2F1dG8gUGFpckFyZ3Moc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0X3QsIEYmJiBm
LCBTJiYgcykKKyAgICAtPiBkZWNsdHlwZShzdGQ6Om1ha2VfcGFpcihtZW1vcnlfaW50ZXJuYWw6
OlR1cGxlUmVmKHN0ZDo6Zm9yd2FyZDxGPihmKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVtb3J5X2ludGVybmFsOjpUdXBsZVJlZihzdGQ6OmZvcndhcmQ8Uz4ocykpKSkgewor
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWVtb3J5X2ludGVybmFsOjpUdXBsZVJlZihzdGQ6OmZv
cndhcmQ8Rj4oZikpLAorICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X2ludGVybmFsOjpU
dXBsZVJlZihzdGQ6OmZvcndhcmQ8Uz4ocykpKTsKK30KKworLy8gQSBoZWxwZXIgZnVuY3Rpb24g
Zm9yIGltcGxlbWVudGluZyBhcHBseSgpIGluIG1hcCBwb2xpY2llcy4KK3RlbXBsYXRlIDxjbGFz
cyBGLCBjbGFzcy4uLiBBcmdzPgorYXV0byBEZWNvbXBvc2VQYWlyKEYmJiBmLCBBcmdzJiYuLi4g
YXJncykKKyAgICAtPiBkZWNsdHlwZShtZW1vcnlfaW50ZXJuYWw6OkRlY29tcG9zZVBhaXJJbXBs
KAorICAgICAgICBzdGQ6OmZvcndhcmQ8Rj4oZiksIFBhaXJBcmdzKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpKSB7CisgIHJldHVybiBtZW1vcnlfaW50ZXJuYWw6OkRlY29tcG9zZVBhaXJJ
bXBsKAorICAgICAgc3RkOjpmb3J3YXJkPEY+KGYpLCBQYWlyQXJncyhzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKTsKK30KKworLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGltcGxlbWVudGlu
ZyBhcHBseSgpIGluIHNldCBwb2xpY2llcy4KK3RlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBBcmc+
CitkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Rj4oKShzdGQ6OmRlY2x2YWw8Y29uc3QgQXJnJj4oKSwg
c3RkOjpkZWNsdmFsPEFyZz4oKSkpCitEZWNvbXBvc2VWYWx1ZShGJiYgZiwgQXJnJiYgYXJnKSB7
CisgIGNvbnN0IGF1dG8mIGtleSA9IGFyZzsKKyAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihmKShr
ZXksIHN0ZDo6Zm9yd2FyZDxBcmc+KGFyZykpOworfQorCisvLyBIZWxwZXIgZnVuY3Rpb25zIGZv
ciBhc2FuIGFuZCBtc2FuLgoraW5saW5lIHZvaWQgU2FuaXRpemVyUG9pc29uTWVtb3J5UmVnaW9u
KGNvbnN0IHZvaWQqIG0sIHNpemVfdCBzKSB7CisjaWZkZWYgQUREUkVTU19TQU5JVElaRVIKKyAg
QVNBTl9QT0lTT05fTUVNT1JZX1JFR0lPTihtLCBzKTsKKyNlbmRpZgorI2lmZGVmIE1FTU9SWV9T
QU5JVElaRVIKKyAgX19tc2FuX3BvaXNvbihtLCBzKTsKKyNlbmRpZgorICAodm9pZCltOworICAo
dm9pZClzOworfQorCitpbmxpbmUgdm9pZCBTYW5pdGl6ZXJVbnBvaXNvbk1lbW9yeVJlZ2lvbihj
b25zdCB2b2lkKiBtLCBzaXplX3QgcykgeworI2lmZGVmIEFERFJFU1NfU0FOSVRJWkVSCisgIEFT
QU5fVU5QT0lTT05fTUVNT1JZX1JFR0lPTihtLCBzKTsKKyNlbmRpZgorI2lmZGVmIE1FTU9SWV9T
QU5JVElaRVIKKyAgX19tc2FuX3VucG9pc29uKG0sIHMpOworI2VuZGlmCisgICh2b2lkKW07Cisg
ICh2b2lkKXM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgU2FuaXRp
emVyUG9pc29uT2JqZWN0KGNvbnN0IFQqIG9iamVjdCkgeworICBTYW5pdGl6ZXJQb2lzb25NZW1v
cnlSZWdpb24ob2JqZWN0LCBzaXplb2YoVCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2lubGluZSB2b2lkIFNhbml0aXplclVucG9pc29uT2JqZWN0KGNvbnN0IFQqIG9iamVjdCkgewor
ICBTYW5pdGl6ZXJVbnBvaXNvbk1lbW9yeVJlZ2lvbihvYmplY3QsIHNpemVvZihUKSk7Cit9CisK
K25hbWVzcGFjZSBtZW1vcnlfaW50ZXJuYWwgeworCisvLyBJZiBQYWlyIGlzIGEgc3RhbmRhcmQt
bGF5b3V0IHR5cGUsIE9mZnNldE9mPFBhaXI+OjprRmlyc3QgYW5kCisvLyBPZmZzZXRPZjxQYWly
Pjo6a1NlY29uZCBhcmUgZXF1aXZhbGVudCB0byBvZmZzZXRvZihQYWlyLCBmaXJzdCkgYW5kCisv
LyBvZmZzZXRvZihQYWlyLCBzZWNvbmQpIHJlc3BlY3RpdmVseS4gT3RoZXJ3aXNlIHRoZXkgYXJl
IC0xLgorLy8KKy8vIFRoZSBwdXJwb3NlIG9mIE9mZnNldE9mIGlzIHRvIGF2b2lkIGNhbGxpbmcg
b2Zmc2V0b2YoKSBvbiBub24tc3RhbmRhcmQtbGF5b3V0CisvLyB0eXBlLCB3aGljaCBpcyBub24t
cG9ydGFibGUuCit0ZW1wbGF0ZSA8Y2xhc3MgUGFpciwgY2xhc3MgPSBzdGQ6OnRydWVfdHlwZT4K
K3N0cnVjdCBPZmZzZXRPZiB7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtGaXJzdCA9IC0x
OworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU2Vjb25kID0gLTE7Cit9OworCit0ZW1wbGF0
ZSA8Y2xhc3MgUGFpcj4KK3N0cnVjdCBPZmZzZXRPZjxQYWlyLCB0eXBlbmFtZSBzdGQ6OmlzX3N0
YW5kYXJkX2xheW91dDxQYWlyPjo6dHlwZT4geworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBr
Rmlyc3QgPSBvZmZzZXRvZihQYWlyLCBmaXJzdCk7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGtTZWNvbmQgPSBvZmZzZXRvZihQYWlyLCBzZWNvbmQpOworfTsKKwordGVtcGxhdGUgPGNsYXNz
IEssIGNsYXNzIFY+CitzdHJ1Y3QgSXNMYXlvdXRDb21wYXRpYmxlIHsKKyBwcml2YXRlOgorICBz
dHJ1Y3QgUGFpciB7CisgICAgSyBmaXJzdDsKKyAgICBWIHNlY29uZDsKKyAgfTsKKworICAvLyBJ
cyBQIGxheW91dC1jb21wYXRpYmxlIHdpdGggUGFpcj8KKyAgdGVtcGxhdGUgPGNsYXNzIFA+Cisg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBMYXlvdXRDb21wYXRpYmxlKCkgeworICAgIHJldHVybiBz
dGQ6OmlzX3N0YW5kYXJkX2xheW91dDxQPigpICYmIHNpemVvZihQKSA9PSBzaXplb2YoUGFpcikg
JiYKKyAgICAgICAgICAgYWxpZ25vZihQKSA9PSBhbGlnbm9mKFBhaXIpICYmCisgICAgICAgICAg
IG1lbW9yeV9pbnRlcm5hbDo6T2Zmc2V0T2Y8UD46OmtGaXJzdCA9PQorICAgICAgICAgICAgICAg
bWVtb3J5X2ludGVybmFsOjpPZmZzZXRPZjxQYWlyPjo6a0ZpcnN0ICYmCisgICAgICAgICAgIG1l
bW9yeV9pbnRlcm5hbDo6T2Zmc2V0T2Y8UD46OmtTZWNvbmQgPT0KKyAgICAgICAgICAgICAgIG1l
bW9yeV9pbnRlcm5hbDo6T2Zmc2V0T2Y8UGFpcj46OmtTZWNvbmQ7CisgIH0KKworIHB1YmxpYzoK
KyAgLy8gV2hldGhlciBwYWlyPGNvbnN0IEssIFY+IGFuZCBwYWlyPEssIFY+IGFyZSBsYXlvdXQt
Y29tcGF0aWJsZS4gSWYgdGhleSBhcmUsCisgIC8vIHRoZW4gaXQgaXMgc2FmZSB0byBzdG9yZSB0
aGVtIGluIGEgdW5pb24gYW5kIHJlYWQgZnJvbSBlaXRoZXIuCisgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB2YWx1ZSA9IHN0ZDo6aXNfc3RhbmRhcmRfbGF5b3V0PEs+KCkgJiYKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8UGFpcj4oKSAmJgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfaW50ZXJuYWw6Ok9mZnNldE9m
PFBhaXI+OjprRmlyc3QgPT0gMCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
YXlvdXRDb21wYXRpYmxlPHN0ZDo6cGFpcjxLLCBWPj4oKSAmJgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMYXlvdXRDb21wYXRpYmxlPHN0ZDo6cGFpcjxjb25zdCBLLCBWPj4oKTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSBtZW1vcnlfaW50ZXJuYWwKKworLy8gSWYga011dGFibGVL
ZXlzIGlzIGZhbHNlLCBvbmx5IHRoZSB2YWx1ZSBtZW1iZXIgaXMgYWNjZXNzZWQuCisvLworLy8g
SWYga011dGFibGVLZXlzIGlzIHRydWUsIGtleSBpcyBhY2Nlc3NlZCB0aHJvdWdoIGFsbCBzbG90
cyB3aGlsZSB2YWx1ZSBhbmQKKy8vIG11dGFibGVfdmFsdWUgYXJlIGFjY2Vzc2VkIG9ubHkgdmlh
IElOSVRJQUxJWkVEIHNsb3RzLiBTbG90cyBhcmUgY3JlYXRlZCBhbmQKKy8vIGRlc3Ryb3llZCB2
aWEgbXV0YWJsZV92YWx1ZSBzbyB0aGF0IHRoZSBrZXkgY2FuIGJlIG1vdmVkIGxhdGVyLgordGVt
cGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+Cit1bmlvbiBzbG90X3R5cGUgeworIHByaXZhdGU6Cisg
IHN0YXRpYyB2b2lkIGVtcGxhY2Uoc2xvdF90eXBlKiBzbG90KSB7CisgICAgLy8gVGhlIGNvbnN0
cnVjdGlvbiBvZiB1bmlvbiBkb2Vzbid0IGRvIGFueXRoaW5nIGF0IHJ1bnRpbWUgYnV0IGl0IGFs
bG93cyB1cworICAgIC8vIHRvIGFjY2VzcyBpdHMgbWVtYmVycyB3aXRob3V0IHZpb2xhdGluZyBh
bGlhc2luZyBydWxlcy4KKyAgICBuZXcgKHNsb3QpIHNsb3RfdHlwZTsKKyAgfQorICAvLyBJZiBw
YWlyPGNvbnN0IEssIFY+IGFuZCBwYWlyPEssIFY+IGFyZSBsYXlvdXQtY29tcGF0aWJsZSwgd2Ug
Y2FuIGFjY2VwdCBvbmUKKyAgLy8gb3IgdGhlIG90aGVyIHZpYSBzbG90X3R5cGUuIFdlIGFyZSBh
bHNvIGZyZWUgdG8gYWNjZXNzIHRoZSBrZXkgdmlhCisgIC8vIHNsb3RfdHlwZTo6a2V5IGluIHRo
aXMgY2FzZS4KKyAgdXNpbmcga011dGFibGVLZXlzID0KKyAgICAgIHN0ZDo6aW50ZWdyYWxfY29u
c3RhbnQ8Ym9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X2ludGVybmFs
OjpJc0xheW91dENvbXBhdGlibGU8SywgVj46OnZhbHVlPjsKKworIHB1YmxpYzoKKyAgc2xvdF90
eXBlKCkge30KKyAgfnNsb3RfdHlwZSgpID0gZGVsZXRlOworICB1c2luZyB2YWx1ZV90eXBlID0g
c3RkOjpwYWlyPGNvbnN0IEssIFY+OworICB1c2luZyBtdXRhYmxlX3ZhbHVlX3R5cGUgPSBzdGQ6
OnBhaXI8SywgVj47CisKKyAgdmFsdWVfdHlwZSB2YWx1ZTsKKyAgbXV0YWJsZV92YWx1ZV90eXBl
IG11dGFibGVfdmFsdWU7CisgIEsga2V5OworCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3Is
IGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvY2F0b3IqIGFsbG9j
LCBzbG90X3R5cGUqIHNsb3QsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgZW1wbGFjZShzbG90KTsK
KyAgICBpZiAoa011dGFibGVLZXlzOjp2YWx1ZSkgeworICAgICAgYWJzbDo6YWxsb2NhdG9yX3Ry
YWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoKmFsbG9jLCAmc2xvdC0+bXV0YWJsZV92YWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfSBlbHNlIHsKKyAgICAgIGFic2w6OmFsbG9j
YXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KCphbGxvYywgJnNsb3QtPnZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisgIH0KKworICAvLyBDb25zdHJ1Y3QgdGhp
cyBzbG90IGJ5IG1vdmluZyBmcm9tIGFub3RoZXIgc2xvdC4KKyAgdGVtcGxhdGUgPGNsYXNzIEFs
bG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9jYXRvciogYWxsb2MsIHNsb3Rf
dHlwZSogc2xvdCwgc2xvdF90eXBlKiBvdGhlcikgeworICAgIGVtcGxhY2Uoc2xvdCk7CisgICAg
aWYgKGtNdXRhYmxlS2V5czo6dmFsdWUpIHsKKyAgICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8
QWxsb2NhdG9yPjo6Y29uc3RydWN0KAorICAgICAgICAgICphbGxvYywgJnNsb3QtPm11dGFibGVf
dmFsdWUsIHN0ZDo6bW92ZShvdGhlci0+bXV0YWJsZV92YWx1ZSkpOworICAgIH0gZWxzZSB7Cisg
ICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdCgqYWxsb2Ms
ICZzbG90LT52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bW92ZShvdGhlci0+dmFsdWUpKTsKKyAgICB9CisgIH0KKworICB0ZW1w
bGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgorICBzdGF0aWMgdm9pZCBkZXN0cm95KEFsbG9jYXRvciog
YWxsb2MsIHNsb3RfdHlwZSogc2xvdCkgeworICAgIGlmIChrTXV0YWJsZUtleXM6OnZhbHVlKSB7
CisgICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koKmFsbG9j
LCAmc2xvdC0+bXV0YWJsZV92YWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGFic2w6OmFsbG9j
YXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6ZGVzdHJveSgqYWxsb2MsICZzbG90LT52YWx1ZSk7Cisg
ICAgfQorICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZvaWQg
dHJhbnNmZXIoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgc2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAgIGVtcGxhY2UobmV3X3Ns
b3QpOworICAgIGlmIChrTXV0YWJsZUtleXM6OnZhbHVlKSB7CisgICAgICBhYnNsOjphbGxvY2F0
b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdCgKKyAgICAgICAgICAqYWxsb2MsICZuZXdf
c2xvdC0+bXV0YWJsZV92YWx1ZSwgc3RkOjptb3ZlKG9sZF9zbG90LT5tdXRhYmxlX3ZhbHVlKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6
Y29uc3RydWN0KCphbGxvYywgJm5ld19zbG90LT52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShvbGRfc2xvdC0+dmFsdWUp
KTsKKyAgICB9CisgICAgZGVzdHJveShhbGxvYywgb2xkX3Nsb3QpOworICB9CisKKyAgdGVtcGxh
dGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgc3dhcChBbGxvY2F0b3IqIGFsbG9j
LCBzbG90X3R5cGUqIGEsIHNsb3RfdHlwZSogYikgeworICAgIGlmIChrTXV0YWJsZUtleXM6OnZh
bHVlKSB7CisgICAgICB1c2luZyBzdGQ6OnN3YXA7CisgICAgICBzd2FwKGEtPm11dGFibGVfdmFs
dWUsIGItPm11dGFibGVfdmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICB2YWx1ZV90eXBlIHRt
cCA9IHN0ZDo6bW92ZShhLT52YWx1ZSk7CisgICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFs
bG9jYXRvcj46OmRlc3Ryb3koKmFsbG9jLCAmYS0+dmFsdWUpOworICAgICAgYWJzbDo6YWxsb2Nh
dG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoKmFsbG9jLCAmYS0+dmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUo
Yi0+dmFsdWUpKTsKKyAgICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6ZGVz
dHJveSgqYWxsb2MsICZiLT52YWx1ZSk7CisgICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFs
bG9jYXRvcj46OmNvbnN0cnVjdCgqYWxsb2MsICZiLT52YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh0bXApKTsKKyAgICB9
CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgorICBzdGF0aWMgdm9pZCBtb3Zl
KEFsbG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSogc3JjLCBzbG90X3R5cGUqIGRlc3QpIHsKKyAg
ICBpZiAoa011dGFibGVLZXlzOjp2YWx1ZSkgeworICAgICAgZGVzdC0+bXV0YWJsZV92YWx1ZSA9
IHN0ZDo6bW92ZShzcmMtPm11dGFibGVfdmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICBhYnNs
OjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koKmFsbG9jLCAmZGVzdC0+dmFs
dWUpOworICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3Qo
KmFsbG9jLCAmZGVzdC0+dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoc3JjLT52YWx1ZSkpOworICAgIH0KKyAgfQorCisg
IHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0YXRpYyB2b2lkIG1vdmUoQWxsb2NhdG9y
KiBhbGxvYywgc2xvdF90eXBlKiBmaXJzdCwgc2xvdF90eXBlKiBsYXN0LAorICAgICAgICAgICAg
ICAgICAgIHNsb3RfdHlwZSogcmVzdWx0KSB7CisgICAgZm9yIChzbG90X3R5cGUgKnNyYyA9IGZp
cnN0LCAqZGVzdCA9IHJlc3VsdDsgc3JjICE9IGxhc3Q7ICsrc3JjLCArK2Rlc3QpCisgICAgICBt
b3ZlKGFsbG9jLCBzcmMsIGRlc3QpOworICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFp
bmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09O
VEFJTkVSX0lOVEVSTkFMX0NPTlRBSU5FUl9NRU1PUllfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxYzQwNTgy
OThjMTU3NDA5ZmVjOWFjOTkwODUwYzBiMTQ5NDk3MWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeV90ZXN0LmNjCkBAIC0wLDAgKzEs
MTg4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIgorCisjaW5jbHVk
ZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5j
bHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3Bh
Y2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6dGVzdGluZzo6
UGFpcjsKKworVEVTVChNZW1vcnksIEFsaWdubWVudExhcmdlclRoYW5CYXNlKSB7CisgIHN0ZDo6
YWxsb2NhdG9yPGludDhfdD4gYWxsb2M7CisgIHZvaWQqIG1lbSA9IEFsbG9jYXRlPDI+KCZhbGxv
YywgMyk7CisgIEVYUEVDVF9FUSgwLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obWVtKSAl
IDIpOworICBtZW1jcHkobWVtLCAiYWJjIiwgMyk7CisgIERlYWxsb2NhdGU8Mj4oJmFsbG9jLCBt
ZW0sIDMpOworfQorCitURVNUKE1lbW9yeSwgQWxpZ25tZW50U21hbGxlclRoYW5CYXNlKSB7Cisg
IHN0ZDo6YWxsb2NhdG9yPGludDY0X3Q+IGFsbG9jOworICB2b2lkKiBtZW0gPSBBbGxvY2F0ZTwy
PigmYWxsb2MsIDMpOworICBFWFBFQ1RfRVEoMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KG1lbSkgJSAyKTsKKyAgbWVtY3B5KG1lbSwgImFiYyIsIDMpOworICBEZWFsbG9jYXRlPDI+KCZh
bGxvYywgbWVtLCAzKTsKK30KKworY2xhc3MgRml4dHVyZSA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgeworICB1c2luZyBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPHN0ZDo6c3RyaW5nPjsKKworIHB1
YmxpYzoKKyAgRml4dHVyZSgpIHsgcHRyXyA9IHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46
OmFsbG9jYXRlKCphbGxvYygpLCAxKTsgfQorICB+Rml4dHVyZSgpIG92ZXJyaWRlIHsKKyAgICBz
dGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+OjpkZXN0cm95KCphbGxvYygpLCBwdHJfKTsKKyAg
ICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+OjpkZWFsbG9jYXRlKCphbGxvYygpLCBwdHJf
LCAxKTsKKyAgfQorICBzdGQ6OnN0cmluZyogcHRyKCkgeyByZXR1cm4gcHRyXzsgfQorICBBbGxv
YyogYWxsb2MoKSB7IHJldHVybiAmYWxsb2NfOyB9CisKKyBwcml2YXRlOgorICBBbGxvYyBhbGxv
Y187CisgIHN0ZDo6c3RyaW5nKiBwdHJfOworfTsKKworVEVTVF9GKEZpeHR1cmUsIENvbnN0cnVj
dE5vQXJncykgeworICBDb25zdHJ1Y3RGcm9tVHVwbGUoYWxsb2MoKSwgcHRyKCksIHN0ZDo6Zm9y
d2FyZF9hc190dXBsZSgpKTsKKyAgRVhQRUNUX0VRKCpwdHIoKSwgIiIpOworfQorCitURVNUX0Yo
Rml4dHVyZSwgQ29uc3RydWN0T25lQXJnKSB7CisgIENvbnN0cnVjdEZyb21UdXBsZShhbGxvYygp
LCBwdHIoKSwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKCJhYmNkZSIpKTsKKyAgRVhQRUNUX0VRKCpw
dHIoKSwgImFiY2RlIik7Cit9CisKK1RFU1RfRihGaXh0dXJlLCBDb25zdHJ1Y3RUd29BcmcpIHsK
KyAgQ29uc3RydWN0RnJvbVR1cGxlKGFsbG9jKCksIHB0cigpLCBzdGQ6OmZvcndhcmRfYXNfdHVw
bGUoNSwgJ2EnKSk7CisgIEVYUEVDVF9FUSgqcHRyKCksICJhYWFhYSIpOworfQorCitURVNUKFBh
aXJBcmdzLCBOb0FyZ3MpIHsKKyAgRVhQRUNUX1RIQVQoUGFpckFyZ3MoKSwKKyAgICAgICAgICAg
ICAgUGFpcihzdGQ6OmZvcndhcmRfYXNfdHVwbGUoKSwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKCkp
KTsKK30KKworVEVTVChQYWlyQXJncywgVHdvQXJncykgeworICBFWFBFQ1RfRVEoCisgICAgICBz
dGQ6Om1ha2VfcGFpcihzdGQ6OmZvcndhcmRfYXNfdHVwbGUoMSksIHN0ZDo6Zm9yd2FyZF9hc190
dXBsZSgnQScpKSwKKyAgICAgIFBhaXJBcmdzKDEsICdBJykpOworfQorCitURVNUKFBhaXJBcmdz
LCBQYWlyKSB7CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6Zm9yd2Fy
ZF9hc190dXBsZSgxKSwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKCdBJykpLAorICAgICAgUGFpckFy
Z3Moc3RkOjptYWtlX3BhaXIoMSwgJ0EnKSkpOworfQorCitURVNUKFBhaXJBcmdzLCBQaWVjZXdp
c2UpIHsKKyAgRVhQRUNUX0VRKAorICAgICAgc3RkOjptYWtlX3BhaXIoc3RkOjpmb3J3YXJkX2Fz
X3R1cGxlKDEpLCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoJ0EnKSksCisgICAgICBQYWlyQXJncyhz
dGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgxKSwKKyAgICAg
ICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgnQScpKSk7Cit9CisKK1RFU1QoV2l0aENv
bnN0cnVjdGVkLCBTaW1wbGUpIHsKKyAgRVhQRUNUX0VRKDEsIFdpdGhDb25zdHJ1Y3RlZDxhYnNs
OjpzdHJpbmdfdmlldz4oCisgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3R1cGxlKHN0ZDo6
c3RyaW5nKCJhIikpLAorICAgICAgICAgICAgICAgICAgIFtdKGFic2w6OnN0cmluZ192aWV3IHN0
cikgeyByZXR1cm4gc3RyLnNpemUoKTsgfSkpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xh
c3MgQXJnPgorZGVjbHR5cGUoRGVjb21wb3NlVmFsdWUoc3RkOjpkZWNsdmFsPEY+KCksIHN0ZDo6
ZGVjbHZhbDxBcmc+KCkpKQorRGVjb21wb3NlVmFsdWVJbXBsKGludCwgRiYmIGYsIEFyZyYmIGFy
ZykgeworICByZXR1cm4gRGVjb21wb3NlVmFsdWUoc3RkOjpmb3J3YXJkPEY+KGYpLCBzdGQ6OmZv
cndhcmQ8QXJnPihhcmcpKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIEFyZz4KK2Nv
bnN0IGNoYXIqIERlY29tcG9zZVZhbHVlSW1wbChjaGFyLCBGJiYgZiwgQXJnJiYgYXJnKSB7Cisg
IHJldHVybiAibm90IGRlY29tcG9zYWJsZSI7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBGLCBjbGFz
cyBBcmc+CitkZWNsdHlwZShEZWNvbXBvc2VWYWx1ZUltcGwoMCwgc3RkOjpkZWNsdmFsPEY+KCks
IHN0ZDo6ZGVjbHZhbDxBcmc+KCkpKQorVHJ5RGVjb21wb3NlVmFsdWUoRiYmIGYsIEFyZyYmIGFy
ZykgeworICByZXR1cm4gRGVjb21wb3NlVmFsdWVJbXBsKDAsIHN0ZDo6Zm9yd2FyZDxGPihmKSwg
c3RkOjpmb3J3YXJkPEFyZz4oYXJnKSk7Cit9CisKK1RFU1QoRGVjb21wb3NlVmFsdWUsIERlY29t
cG9zYWJsZSkgeworICBhdXRvIGYgPSBbXShjb25zdCBpbnQmIHgsIGludCYmIHkpIHsKKyAgICBF
WFBFQ1RfRVEoJngsICZ5KTsKKyAgICBFWFBFQ1RfRVEoNDIsIHgpOworICAgIHJldHVybiAnQSc7
CisgIH07CisgIEVYUEVDVF9FUSgnQScsIFRyeURlY29tcG9zZVZhbHVlKGYsIDQyKSk7Cit9CisK
K1RFU1QoRGVjb21wb3NlVmFsdWUsIE5vdERlY29tcG9zYWJsZSkgeworICBhdXRvIGYgPSBbXSh2
b2lkKikgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIk11c3Qgbm90IGJlIGNhbGxlZCI7CisgICAg
cmV0dXJuICdBJzsKKyAgfTsKKyAgRVhQRUNUX1NUUkVRKCJub3QgZGVjb21wb3NhYmxlIiwgVHJ5
RGVjb21wb3NlVmFsdWUoZiwgNDIpKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzLi4u
IEFyZ3M+CitkZWNsdHlwZShEZWNvbXBvc2VQYWlyKHN0ZDo6ZGVjbHZhbDxGPigpLCBzdGQ6OmRl
Y2x2YWw8QXJncz4oKS4uLikpCitEZWNvbXBvc2VQYWlySW1wbChpbnQsIEYmJiBmLCBBcmdzJiYu
Li4gYXJncykgeworICByZXR1cm4gRGVjb21wb3NlUGFpcihzdGQ6OmZvcndhcmQ8Rj4oZiksIHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBGLCBjbGFz
cy4uLiBBcmdzPgorY29uc3QgY2hhciogRGVjb21wb3NlUGFpckltcGwoY2hhciwgRiYmIGYsIEFy
Z3MmJi4uLiBhcmdzKSB7CisgIHJldHVybiAibm90IGRlY29tcG9zYWJsZSI7Cit9CisKK3RlbXBs
YXRlIDxjbGFzcyBGLCBjbGFzcy4uLiBBcmdzPgorZGVjbHR5cGUoRGVjb21wb3NlUGFpckltcGwo
MCwgc3RkOjpkZWNsdmFsPEY+KCksIHN0ZDo6ZGVjbHZhbDxBcmdzPigpLi4uKSkKK1RyeURlY29t
cG9zZVBhaXIoRiYmIGYsIEFyZ3MmJi4uLiBhcmdzKSB7CisgIHJldHVybiBEZWNvbXBvc2VQYWly
SW1wbCgwLCBzdGQ6OmZvcndhcmQ8Rj4oZiksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7
Cit9CisKK1RFU1QoRGVjb21wb3NlUGFpciwgRGVjb21wb3NhYmxlKSB7CisgIGF1dG8gZiA9IFtd
KGNvbnN0IGludCYgeCwgc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0X3QsIHN0ZDo6dHVwbGU8aW50
JiY+IGssCisgICAgICAgICAgICAgIHN0ZDo6dHVwbGU8ZG91YmxlPiYmIHYpIHsKKyAgICBFWFBF
Q1RfRVEoJngsICZzdGQ6OmdldDwwPihrKSk7CisgICAgRVhQRUNUX0VRKDQyLCB4KTsKKyAgICBF
WFBFQ1RfRVEoMC41LCBzdGQ6OmdldDwwPih2KSk7CisgICAgcmV0dXJuICdBJzsKKyAgfTsKKyAg
RVhQRUNUX0VRKCdBJywgVHJ5RGVjb21wb3NlUGFpcihmLCA0MiwgMC41KSk7CisgIEVYUEVDVF9F
USgnQScsIFRyeURlY29tcG9zZVBhaXIoZiwgc3RkOjptYWtlX3BhaXIoNDIsIDAuNSkpKTsKKyAg
RVhQRUNUX0VRKCdBJywgVHJ5RGVjb21wb3NlUGFpcihmLCBzdGQ6OnBpZWNld2lzZV9jb25zdHJ1
Y3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3R1cGxlKDQy
KSwgc3RkOjptYWtlX3R1cGxlKDAuNSkpKTsKK30KKworVEVTVChEZWNvbXBvc2VQYWlyLCBOb3RE
ZWNvbXBvc2FibGUpIHsKKyAgYXV0byBmID0gW10oLi4uKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8
PCAiTXVzdCBub3QgYmUgY2FsbGVkIjsKKyAgICByZXR1cm4gJ0EnOworICB9OworICBFWFBFQ1Rf
U1RSRVEoIm5vdCBkZWNvbXBvc2FibGUiLAorICAgICAgICAgICAgICAgVHJ5RGVjb21wb3NlUGFp
cihmKSk7CisgIEVYUEVDVF9TVFJFUSgibm90IGRlY29tcG9zYWJsZSIsCisgICAgICAgICAgICAg
ICBUcnlEZWNvbXBvc2VQYWlyKGYsIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjptYWtl
X3R1cGxlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV90dXBs
ZSgwLjUpKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5l
cl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmMGQ3OTRkOTY2
Mzg4MTg2ZGQ3ZGZkNjlhOGFlOWE2YWRmNzA5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oCkBAIC0wLDAgKzEsMTQz
IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIERlZmlu
ZSB0aGUgZGVmYXVsdCBIYXNoIGFuZCBFcSBmdW5jdGlvbnMgZm9yIFN3aXNzVGFibGUgY29udGFp
bmVycy4KKy8vCisvLyBzdGQ6Omhhc2g8VD4gYW5kIHN0ZDo6ZXF1YWxfdG88VD4gYXJlIG5vdCBh
cHByb3ByaWF0ZSBoYXNoIGFuZCBlcXVhbAorLy8gZnVuY3Rpb25zIGZvciBTd2lzc1RhYmxlIGNv
bnRhaW5lcnMuIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3IgdGhpcy4KKy8vCisvLyBTd2lzc1Rh
YmxlIGNvbnRhaW5lcnMgYXJlIHBvd2VyIG9mIDIgc2l6ZWQgY29udGFpbmVyczoKKy8vCisvLyBU
aGlzIG1lYW5zIHRoZXkgdXNlIHRoZSBsb3dlciBiaXRzIG9mIHRoZSBoYXNoIHZhbHVlIHRvIGZp
bmQgdGhlIHNsb3QgZm9yCisvLyBlYWNoIGVudHJ5LiBUaGUgdHlwaWNhbCBoYXNoIGZ1bmN0aW9u
IGZvciBpbnRlZ3JhbCB0eXBlcyBpcyB0aGUgaWRlbnRpdHkuCisvLyBUaGlzIGlzIGEgdmVyeSB3
ZWFrIGhhc2ggZnVuY3Rpb24gZm9yIFN3aXNzVGFibGUgYW5kIGFueSBwb3dlciBvZiAyIHNpemVk
CisvLyBoYXNodGFibGUgaW1wbGVtZW50YXRpb24gd2hpY2ggd2lsbCBsZWFkIHRvIGV4Y2Vzc2l2
ZSBjb2xsaXNpb25zLiBGb3IKKy8vIFN3aXNzVGFibGUgd2UgdXNlIG11cm11cjMgc3R5bGUgbWl4
aW5nIHRvIHJlZHVjZSBjb2xsaXNpb25zIHRvIGEgbWluaW11bS4KKy8vCisvLyBTd2lzc1RhYmxl
IGNvbnRhaW5lcnMgc3VwcG9ydCBoZXRlcm9nZW5lb3VzIGxvb2t1cDoKKy8vCisvLyBJbiBvcmRl
ciB0byBtYWtlIGhldGVyb2dlbmVvdXMgbG9va3VwIHdvcmssIGhhc2ggYW5kIGVxdWFsIGZ1bmN0
aW9ucyBtdXN0IGJlCisvLyBwb2x5bW9ycGhpYy4gQXQgdGhlIHNhbWUgdGltZSB0aGV5IGhhdmUg
dG8gc2F0aXNmeSB0aGUgc2FtZSByZXF1aXJlbWVudHMgdGhlCisvLyBDKysgc3RhbmRhcmQgaW1w
b3NlcyBvbiBoYXNoIGZ1bmN0aW9ucyBhbmQgZXF1YWxpdHkgb3BlcmF0b3JzLiBUaGF0IGlzOgor
Ly8KKy8vICAgaWYgaGFzaF9kZWZhdWx0X2VxPFQ+KGEsIGIpIHJldHVybnMgdHJ1ZSBmb3IgYW55
IGEgYW5kIGIgb2YgdHlwZSBULCB0aGVuCisvLyAgIGhhc2hfZGVmYXVsdF9oYXNoPFQ+KGEpIG11
c3QgZXF1YWwgaGFzaF9kZWZhdWx0X2hhc2g8VD4oYikKKy8vCisvLyBGb3IgU3dpc3NUYWJsZSBj
b250YWluZXJzIHRoaXMgcmVxdWlyZW1lbnQgaXMgcmVsYXhlZCB0byBhbGxvdyBhIGFuZCBiIG9m
CisvLyBhbnkgYW5kIHBvc3NpYmx5IGRpZmZlcmVudCB0eXBlcy4gTm90ZSB0aGF0IGxpa2UgdGhl
IHN0YW5kYXJkIHRoZSBoYXNoIGFuZAorLy8gZXF1YWwgZnVuY3Rpb25zIGFyZSBzdGlsbCBib3Vu
ZCB0byBULiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgdHlwZSBVCisvLyBjYW4gYmUg
aGFzaGVkIGJ5L3Rlc3RlZCBmb3IgZXF1YWxpdHkgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIFQu
IEEgbm90YWJsZQorLy8gZXhhbXBsZSBpcyBgY29uc3QgY2hhcipgLiBgY29uc3QgY2hhcipgIGlz
IHRyZWF0ZWQgYXMgYSBjLXN0eWxlIHN0cmluZyB3aGVuCisvLyB0aGUgaGFzaCBmdW5jdGlvbiBp
cyBoYXNoPHN0cmluZz4gYnV0IGFzIGEgcG9pbnRlciB3aGVuIHRoZSBoYXNoIGZ1bmN0aW9uIGlz
CisvLyBoYXNoPHZvaWQqPi4KKy8vCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hB
U0hfRlVOQ1RJT05fREVGQVVMVFNfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxf
SEFTSF9GVU5DVElPTl9ERUZBVUxUU19IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVk
ZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2NvbmZpZy5oIgorI2luY2x1
ZGUgImFic2wvaGFzaC9oYXNoLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3
LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewor
CisvLyBUaGUgaGFzaCBvZiBhbiBvYmplY3Qgb2YgdHlwZSBUIGlzIGNvbXB1dGVkIGJ5IHVzaW5n
IGFic2w6Okhhc2guCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRSA9IHZvaWQ+CitzdHJ1Y3Qg
SGFzaEVxIHsKKyAgdXNpbmcgSGFzaCA9IGFic2w6Okhhc2g8VD47CisgIHVzaW5nIEVxID0gc3Rk
OjplcXVhbF90bzxUPjsKK307CisKK3N0cnVjdCBTdHJpbmdIYXNoIHsKKyAgdXNpbmcgaXNfdHJh
bnNwYXJlbnQgPSB2b2lkOworCisgIHNpemVfdCBvcGVyYXRvcigpKGFic2w6OnN0cmluZ192aWV3
IHYpIGNvbnN0IHsKKyAgICByZXR1cm4gYWJzbDo6SGFzaDxhYnNsOjpzdHJpbmdfdmlldz57fSh2
KTsKKyAgfQorfTsKKworLy8gU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAgZm9yIHN0cmlu
Zy1saWtlIGVsZW1lbnRzLgorc3RydWN0IFN0cmluZ0hhc2hFcSB7CisgIHVzaW5nIEhhc2ggPSBT
dHJpbmdIYXNoOworICBzdHJ1Y3QgRXEgeworICAgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9p
ZDsKKyAgICBib29sIG9wZXJhdG9yKCkoYWJzbDo6c3RyaW5nX3ZpZXcgbGhzLCBhYnNsOjpzdHJp
bmdfdmlldyByaHMpIGNvbnN0IHsKKyAgICAgIHJldHVybiBsaHMgPT0gcmhzOworICAgIH0KKyAg
fTsKK307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEhhc2hFcTxzdGQ6OnN0cmluZz4gOiBTdHJpbmdI
YXNoRXEge307Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IEhhc2hFcTxhYnNsOjpzdHJpbmdfdmlldz4g
OiBTdHJpbmdIYXNoRXEge307CisKKy8vIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwIGZv
ciBwb2ludGVycyBhbmQgc21hcnQgcG9pbnRlcnMuCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVj
dCBIYXNoRXE8VCo+IHsKKyAgc3RydWN0IEhhc2ggeworICAgIHVzaW5nIGlzX3RyYW5zcGFyZW50
ID0gdm9pZDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKyAgICBzaXplX3Qgb3BlcmF0b3IoKShj
b25zdCBVJiBwdHIpIGNvbnN0IHsKKyAgICAgIHJldHVybiBhYnNsOjpIYXNoPGNvbnN0IFQqPnt9
KEhhc2hFcTo6VG9QdHIocHRyKSk7CisgICAgfQorICB9OworICBzdHJ1Y3QgRXEgeworICAgIHVz
aW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQSwgY2xhc3Mg
Qj4KKyAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgQSYgYSwgY29uc3QgQiYgYikgY29uc3Qgewor
ICAgICAgcmV0dXJuIEhhc2hFcTo6VG9QdHIoYSkgPT0gSGFzaEVxOjpUb1B0cihiKTsKKyAgICB9
CisgIH07CisKKyBwcml2YXRlOgorICBzdGF0aWMgY29uc3QgVCogVG9QdHIoY29uc3QgVCogcHRy
KSB7IHJldHVybiBwdHI7IH0KKyAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzIEQ+CisgIHN0YXRp
YyBjb25zdCBUKiBUb1B0cihjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VSwgRD4mIHB0cikgeworICAg
IHJldHVybiBwdHIuZ2V0KCk7CisgIH0KKyAgdGVtcGxhdGUgPGNsYXNzIFU+CisgIHN0YXRpYyBj
b25zdCBUKiBUb1B0cihjb25zdCBzdGQ6OnNoYXJlZF9wdHI8VT4mIHB0cikgeworICAgIHJldHVy
biBwdHIuZ2V0KCk7CisgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEPgorc3Ry
dWN0IEhhc2hFcTxzdGQ6OnVuaXF1ZV9wdHI8VCwgRD4+IDogSGFzaEVxPFQqPiB7fTsKK3RlbXBs
YXRlIDxjbGFzcyBUPgorc3RydWN0IEhhc2hFcTxzdGQ6OnNoYXJlZF9wdHI8VD4+IDogSGFzaEVx
PFQqPiB7fTsKKworLy8gVGhpcyBoZWFkZXIncyB2aXNpYmlsaXR5IGlzIHJlc3RyaWN0ZWQuICBJ
ZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIGRlZmF1bHQKKy8vIGhhc2hlciBwbGVhc2UgdXNlIHRo
ZSBjb250YWluZXIncyA6Omhhc2hlciBhbGlhcyBpbnN0ZWFkLgorLy8KKy8vIEV4YW1wbGU6IHR5
cGVuYW1lIEhhc2ggPSB0eXBlbmFtZSBhYnNsOjpmbGF0X2hhc2hfbWFwPEssIFY+OjpoYXNoZXIK
K3RlbXBsYXRlIDxjbGFzcyBUPgordXNpbmcgaGFzaF9kZWZhdWx0X2hhc2ggPSB0eXBlbmFtZSBj
b250YWluZXJfaW50ZXJuYWw6Okhhc2hFcTxUPjo6SGFzaDsKKworLy8gVGhpcyBoZWFkZXIncyB2
aXNpYmlsaXR5IGlzIHJlc3RyaWN0ZWQuICBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIGRlZmF1
bHQKKy8vIGtleSBlcXVhbCBwbGVhc2UgdXNlIHRoZSBjb250YWluZXIncyA6OmtleV9lcXVhbCBh
bGlhcyBpbnN0ZWFkLgorLy8KKy8vIEV4YW1wbGU6IHR5cGVuYW1lIEVxID0gdHlwZW5hbWUgYWJz
bDo6ZmxhdF9oYXNoX21hcDxLLCBWLCBIYXNoPjo6a2V5X2VxdWFsCit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KK3VzaW5nIGhhc2hfZGVmYXVsdF9lcSA9IHR5cGVuYW1lIGNvbnRhaW5lcl9pbnRlcm5hbDo6
SGFzaEVxPFQ+OjpFcTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9I
QVNIX0ZVTkNUSU9OX0RFRkFVTFRTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjRiYWFl
MDJjZGRiMGM0MWU2MTJlNTk3ODhkODM3ZDU5ZjkxN2ZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVzdC5jYwpAQCAt
MCwwICsxLDI5OSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwor
I2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMu
aCIKKworI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5j
bHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJz
bC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBj
b250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKwordXNpbmcgOjp0ZXN0aW5nOjpUeXBl
czsKKworVEVTVChFcSwgSW50MzIpIHsKKyAgaGFzaF9kZWZhdWx0X2VxPGludDMyX3Q+IGVxOwor
ICBFWFBFQ1RfVFJVRShlcSgxLCAxdSkpOworICBFWFBFQ1RfVFJVRShlcSgxLCBjaGFyezF9KSk7
CisgIEVYUEVDVF9UUlVFKGVxKDEsIHRydWUpKTsKKyAgRVhQRUNUX1RSVUUoZXEoMSwgZG91Ymxl
ezEuMX0pKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKDEsIGNoYXJ7Mn0pKTsKKyAgRVhQRUNUX0ZBTFNF
KGVxKDEsIDJ1KSk7CisgIEVYUEVDVF9GQUxTRShlcSgxLCBmYWxzZSkpOworICBFWFBFQ1RfRkFM
U0UoZXEoMSwgMi4pKTsKK30KKworVEVTVChIYXNoLCBJbnQzMikgeworICBoYXNoX2RlZmF1bHRf
aGFzaDxpbnQzMl90PiBoYXNoOworICBhdXRvIGggPSBoYXNoKDEpOworICBFWFBFQ1RfRVEoaCwg
aGFzaCgxdSkpOworICBFWFBFQ1RfRVEoaCwgaGFzaChjaGFyezF9KSk7CisgIEVYUEVDVF9FUSho
LCBoYXNoKHRydWUpKTsKKyAgRVhQRUNUX0VRKGgsIGhhc2goZG91YmxlezEuMX0pKTsKKyAgRVhQ
RUNUX05FKGgsIGhhc2goMnUpKTsKKyAgRVhQRUNUX05FKGgsIGhhc2goY2hhcnsyfSkpOworICBF
WFBFQ1RfTkUoaCwgaGFzaChmYWxzZSkpOworICBFWFBFQ1RfTkUoaCwgaGFzaCgyLikpOworfQor
CitlbnVtIGNsYXNzIE15RW51bSB7IEEsIEIsIEMsIEQgfTsKKworVEVTVChFcSwgRW51bSkgewor
ICBoYXNoX2RlZmF1bHRfZXE8TXlFbnVtPiBlcTsKKyAgRVhQRUNUX1RSVUUoZXEoTXlFbnVtOjpB
LCBNeUVudW06OkEpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKE15RW51bTo6QSwgTXlFbnVtOjpCKSk7
Cit9CisKK1RFU1QoSGFzaCwgRW51bSkgeworICBoYXNoX2RlZmF1bHRfaGFzaDxNeUVudW0+IGhh
c2g7CisKKyAgZm9yIChNeUVudW0gZSA6IHtNeUVudW06OkEsIE15RW51bTo6QiwgTXlFbnVtOjpD
fSkgeworICAgIGF1dG8gaCA9IGhhc2goZSk7CisgICAgRVhQRUNUX0VRKGgsIGhhc2hfZGVmYXVs
dF9oYXNoPGludD57fShzdGF0aWNfY2FzdDxpbnQ+KGUpKSk7CisgICAgRVhQRUNUX05FKGgsIGhh
c2goTXlFbnVtOjpEKSk7CisgIH0KK30KKwordXNpbmcgU3RyaW5nVHlwZXMgPSA6OnRlc3Rpbmc6
OlR5cGVzPHN0ZDo6c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldz47CisKK3RlbXBsYXRlIDxjbGFz
cyBUPgorc3RydWN0IEVxU3RyaW5nIDogOjp0ZXN0aW5nOjpUZXN0IHsKKyAgaGFzaF9kZWZhdWx0
X2VxPFQ+IGtleV9lcTsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShFcVN0cmluZywgU3RyaW5nVHlw
ZXMpOworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBIYXNoU3RyaW5nIDogOjp0ZXN0aW5n
OjpUZXN0IHsKKyAgaGFzaF9kZWZhdWx0X2hhc2g8VD4gaGFzaGVyOworfTsKKworVFlQRURfVEVT
VF9DQVNFKEhhc2hTdHJpbmcsIFN0cmluZ1R5cGVzKTsKKworVFlQRURfVEVTVChFcVN0cmluZywg
V29ya3MpIHsKKyAgYXV0byBlcSA9IHRoaXMtPmtleV9lcTsKKyAgRVhQRUNUX1RSVUUoZXEoImEi
LCAiYSIpKTsKKyAgRVhQRUNUX1RSVUUoZXEoImEiLCBhYnNsOjpzdHJpbmdfdmlldygiYSIpKSk7
CisgIEVYUEVDVF9UUlVFKGVxKCJhIiwgc3RkOjpzdHJpbmcoImEiKSkpOworICBFWFBFQ1RfRkFM
U0UoZXEoImEiLCAiYiIpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKCJhIiwgYWJzbDo6c3RyaW5nX3Zp
ZXcoImIiKSkpOworICBFWFBFQ1RfRkFMU0UoZXEoImEiLCBzdGQ6OnN0cmluZygiYiIpKSk7Cit9
CisKK1RZUEVEX1RFU1QoSGFzaFN0cmluZywgV29ya3MpIHsKKyAgYXV0byBoYXNoID0gdGhpcy0+
aGFzaGVyOworICBhdXRvIGggPSBoYXNoKCJhIik7CisgIEVYUEVDVF9FUShoLCBoYXNoKGFic2w6
OnN0cmluZ192aWV3KCJhIikpKTsKKyAgRVhQRUNUX0VRKGgsIGhhc2goc3RkOjpzdHJpbmcoImEi
KSkpOworICBFWFBFQ1RfTkUoaCwgaGFzaChhYnNsOjpzdHJpbmdfdmlldygiYiIpKSk7CisgIEVY
UEVDVF9ORShoLCBoYXNoKHN0ZDo6c3RyaW5nKCJiIikpKTsKK30KKworc3RydWN0IE5vRGVsZXRl
ciB7CisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICB2b2lkIG9wZXJhdG9yKCkoY29uc3QgVCogcHRy
KSBjb25zdCB7fQorfTsKKwordXNpbmcgUG9pbnRlclR5cGVzID0KKyAgICA6OnRlc3Rpbmc6OlR5
cGVzPGNvbnN0IGludCosIGludCosIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBpbnQ+LAorICAgICAg
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IGludCwgTm9EZWxldGVyPiwKKyAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBzdGQ6OnVuaXF1ZV9wdHI8
aW50LCBOb0RlbGV0ZXI+LAorICAgICAgICAgICAgICAgICAgICAgc3RkOjpzaGFyZWRfcHRyPGNv
bnN0IGludD4sIHN0ZDo6c2hhcmVkX3B0cjxpbnQ+PjsKKwordGVtcGxhdGUgPGNsYXNzIFQ+Citz
dHJ1Y3QgRXFQb2ludGVyIDogOjp0ZXN0aW5nOjpUZXN0IHsKKyAgaGFzaF9kZWZhdWx0X2VxPFQ+
IGtleV9lcTsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShFcVBvaW50ZXIsIFBvaW50ZXJUeXBlcyk7
CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IEhhc2hQb2ludGVyIDogOjp0ZXN0aW5nOjpU
ZXN0IHsKKyAgaGFzaF9kZWZhdWx0X2hhc2g8VD4gaGFzaGVyOworfTsKKworVFlQRURfVEVTVF9D
QVNFKEhhc2hQb2ludGVyLCBQb2ludGVyVHlwZXMpOworCitUWVBFRF9URVNUKEVxUG9pbnRlciwg
V29ya3MpIHsKKyAgaW50IGR1bW15OworICBhdXRvIGVxID0gdGhpcy0+a2V5X2VxOworICBhdXRv
IHNwdHIgPSBzdGQ6Om1ha2Vfc2hhcmVkPGludD4oKTsKKyAgc3RkOjpzaGFyZWRfcHRyPGNvbnN0
IGludD4gY3NwdHIgPSBzcHRyOworICBpbnQqIHB0ciA9IHNwdHIuZ2V0KCk7CisgIGNvbnN0IGlu
dCogY3B0ciA9IHB0cjsKKyAgc3RkOjp1bmlxdWVfcHRyPGludCwgTm9EZWxldGVyPiB1cHRyKHB0
cik7CisgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBpbnQsIE5vRGVsZXRlcj4gY3VwdHIocHRyKTsK
KworICBFWFBFQ1RfVFJVRShlcShwdHIsIGNwdHIpKTsKKyAgRVhQRUNUX1RSVUUoZXEocHRyLCBz
cHRyKSk7CisgIEVYUEVDVF9UUlVFKGVxKHB0ciwgdXB0cikpOworICBFWFBFQ1RfVFJVRShlcShw
dHIsIGNzcHRyKSk7CisgIEVYUEVDVF9UUlVFKGVxKHB0ciwgY3VwdHIpKTsKKyAgRVhQRUNUX0ZB
TFNFKGVxKCZkdW1teSwgY3B0cikpOworICBFWFBFQ1RfRkFMU0UoZXEoJmR1bW15LCBzcHRyKSk7
CisgIEVYUEVDVF9GQUxTRShlcSgmZHVtbXksIHVwdHIpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKCZk
dW1teSwgY3NwdHIpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKCZkdW1teSwgY3VwdHIpKTsKK30KKwor
VEVTVChIYXNoLCBEZXJpdmVkQW5kQmFzZSkgeworICBzdHJ1Y3QgQmFzZSB7fTsKKyAgc3RydWN0
IERlcml2ZWQgOiBCYXNlIHt9OworCisgIGhhc2hfZGVmYXVsdF9oYXNoPEJhc2UqPiBoYXNoZXI7
CisKKyAgQmFzZSBiYXNlOworICBEZXJpdmVkIGRlcml2ZWQ7CisgIEVYUEVDVF9ORShoYXNoZXIo
JmJhc2UpLCBoYXNoZXIoJmRlcml2ZWQpKTsKKyAgRVhQRUNUX0VRKGhhc2hlcihzdGF0aWNfY2Fz
dDxCYXNlKj4oJmRlcml2ZWQpKSwgaGFzaGVyKCZkZXJpdmVkKSk7CisKKyAgYXV0byBkcCA9IHN0
ZDo6bWFrZV9zaGFyZWQ8RGVyaXZlZD4oKTsKKyAgRVhQRUNUX0VRKGhhc2hlcihzdGF0aWNfY2Fz
dDxCYXNlKj4oZHAuZ2V0KCkpKSwgaGFzaGVyKGRwKSk7Cit9CisKK1RFU1QoSGFzaCwgRnVuY3Rp
b25Qb2ludGVyKSB7CisgIHVzaW5nIEZ1bmMgPSBpbnQgKCopKCk7CisgIGhhc2hfZGVmYXVsdF9o
YXNoPEZ1bmM+IGhhc2hlcjsKKyAgaGFzaF9kZWZhdWx0X2VxPEZ1bmM+IGVxOworCisgIEZ1bmMg
cDEgPSBbXSB7IHJldHVybiAxOyB9LCBwMiA9IFtdIHsgcmV0dXJuIDI7IH07CisgIEVYUEVDVF9F
UShoYXNoZXIocDEpLCBoYXNoZXIocDEpKTsKKyAgRVhQRUNUX1RSVUUoZXEocDEsIHAxKSk7CisK
KyAgRVhQRUNUX05FKGhhc2hlcihwMSksIGhhc2hlcihwMikpOworICBFWFBFQ1RfRkFMU0UoZXEo
cDEsIHAyKSk7Cit9CisKK1RZUEVEX1RFU1QoSGFzaFBvaW50ZXIsIFdvcmtzKSB7CisgIGludCBk
dW1teTsKKyAgYXV0byBoYXNoID0gdGhpcy0+aGFzaGVyOworICBhdXRvIHNwdHIgPSBzdGQ6Om1h
a2Vfc2hhcmVkPGludD4oKTsKKyAgc3RkOjpzaGFyZWRfcHRyPGNvbnN0IGludD4gY3NwdHIgPSBz
cHRyOworICBpbnQqIHB0ciA9IHNwdHIuZ2V0KCk7CisgIGNvbnN0IGludCogY3B0ciA9IHB0cjsK
KyAgc3RkOjp1bmlxdWVfcHRyPGludCwgTm9EZWxldGVyPiB1cHRyKHB0cik7CisgIHN0ZDo6dW5p
cXVlX3B0cjxjb25zdCBpbnQsIE5vRGVsZXRlcj4gY3VwdHIocHRyKTsKKworICBFWFBFQ1RfRVEo
aGFzaChwdHIpLCBoYXNoKGNwdHIpKTsKKyAgRVhQRUNUX0VRKGhhc2gocHRyKSwgaGFzaChzcHRy
KSk7CisgIEVYUEVDVF9FUShoYXNoKHB0ciksIGhhc2godXB0cikpOworICBFWFBFQ1RfRVEoaGFz
aChwdHIpLCBoYXNoKGNzcHRyKSk7CisgIEVYUEVDVF9FUShoYXNoKHB0ciksIGhhc2goY3VwdHIp
KTsKKyAgRVhQRUNUX05FKGhhc2goJmR1bW15KSwgaGFzaChjcHRyKSk7CisgIEVYUEVDVF9ORSho
YXNoKCZkdW1teSksIGhhc2goc3B0cikpOworICBFWFBFQ1RfTkUoaGFzaCgmZHVtbXkpLCBoYXNo
KHVwdHIpKTsKKyAgRVhQRUNUX05FKGhhc2goJmR1bW15KSwgaGFzaChjc3B0cikpOworICBFWFBF
Q1RfTkUoaGFzaCgmZHVtbXkpLCBoYXNoKGN1cHRyKSk7Cit9CisKKy8vIENhcnRlc2lhbiBwcm9k
dWN0IG9mIChzdHJpbmcsIHN0ZDo6c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldykKKy8vIHdpdGgg
KHN0cmluZywgc3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3LCBjb25zdCBjaGFyKikuCit1
c2luZyBTdHJpbmdUeXBlc0NhcnRlc2lhblByb2R1Y3QgPSBUeXBlczwKKyAgICAvLyBjbGFuZy1m
b3JtYXQgb2ZmCisKKyAgICBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiwKKyAg
ICBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3PiwKKyAgICBzdGQ6OnBh
aXI8c3RkOjpzdHJpbmcsIGNvbnN0IGNoYXIqPiwKKworICAgIHN0ZDo6cGFpcjxhYnNsOjpzdHJp
bmdfdmlldywgc3RkOjpzdHJpbmc+LAorICAgIHN0ZDo6cGFpcjxhYnNsOjpzdHJpbmdfdmlldywg
YWJzbDo6c3RyaW5nX3ZpZXc+LAorICAgIHN0ZDo6cGFpcjxhYnNsOjpzdHJpbmdfdmlldywgY29u
c3QgY2hhcio+PjsKKy8vIGNsYW5nLWZvcm1hdCBvbgorCitjb25zdGV4cHIgY2hhciBrRmlyc3RT
dHJpbmdbXSA9ICJhYmMxMjMiOworY29uc3RleHByIGNoYXIga1NlY29uZFN0cmluZ1tdID0gImlq
azQ1NiI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFN0cmluZ0xpa2VUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgIHR5cGVuYW1lIFQ6OmZpcnN0X3R5cGUgYTF7a0Zp
cnN0U3RyaW5nfTsKKyAgdHlwZW5hbWUgVDo6c2Vjb25kX3R5cGUgYjF7a0ZpcnN0U3RyaW5nfTsK
KyAgdHlwZW5hbWUgVDo6Zmlyc3RfdHlwZSBhMntrU2Vjb25kU3RyaW5nfTsKKyAgdHlwZW5hbWUg
VDo6c2Vjb25kX3R5cGUgYjJ7a1NlY29uZFN0cmluZ307CisgIGhhc2hfZGVmYXVsdF9lcTx0eXBl
bmFtZSBUOjpmaXJzdF90eXBlPiBlcTsKKyAgaGFzaF9kZWZhdWx0X2hhc2g8dHlwZW5hbWUgVDo6
Zmlyc3RfdHlwZT4gaGFzaDsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKFN0cmluZ0xpa2VUZXN0
KTsKKworVFlQRURfVEVTVF9QKFN0cmluZ0xpa2VUZXN0LCBFcSkgeworICBFWFBFQ1RfVFJVRSh0
aGlzLT5lcSh0aGlzLT5hMSwgdGhpcy0+YjEpKTsKKyAgRVhQRUNUX1RSVUUodGhpcy0+ZXEodGhp
cy0+YjEsIHRoaXMtPmExKSk7Cit9CisKK1RZUEVEX1RFU1RfUChTdHJpbmdMaWtlVGVzdCwgTm90
RXEpIHsKKyAgRVhQRUNUX0ZBTFNFKHRoaXMtPmVxKHRoaXMtPmExLCB0aGlzLT5iMikpOworICBF
WFBFQ1RfRkFMU0UodGhpcy0+ZXEodGhpcy0+YjIsIHRoaXMtPmExKSk7Cit9CisKK1RZUEVEX1RF
U1RfUChTdHJpbmdMaWtlVGVzdCwgSGFzaEVxKSB7CisgIEVYUEVDVF9FUSh0aGlzLT5oYXNoKHRo
aXMtPmExKSwgdGhpcy0+aGFzaCh0aGlzLT5iMSkpOworICBFWFBFQ1RfRVEodGhpcy0+aGFzaCh0
aGlzLT5hMiksIHRoaXMtPmhhc2godGhpcy0+YjIpKTsKKyAgLy8gSXQgd291bGQgYmUgYSBwb29y
IGhhc2ggZnVuY3Rpb24gd2hpY2ggY29sbGlkZXMgb24gdGhlc2Ugc3RyaW5ncy4KKyAgRVhQRUNU
X05FKHRoaXMtPmhhc2godGhpcy0+YTEpLCB0aGlzLT5oYXNoKHRoaXMtPmIyKSk7Cit9CisKK1RZ
UEVEX1RFU1RfQ0FTRShTdHJpbmdMaWtlVGVzdCwgU3RyaW5nVHlwZXNDYXJ0ZXNpYW5Qcm9kdWN0
KTsKKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
Cit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCitlbnVtIEhhc2ggOiBzaXplX3QgeworICBrU3RkID0g
MHgyLCAgICAgICAvLyBzdGQ6Omhhc2gKKyNpZmRlZiBfTVNDX1ZFUgorICBrRXh0ZW5zaW9uID0g
a1N0ZCwgIC8vIEluIE1TVkMsIHN0ZDo6aGFzaCA9PSA6Omhhc2gKKyNlbHNlICAgICAgICAgICAg
ICAgICAvLyBfTVNDX1ZFUgorICBrRXh0ZW5zaW9uID0gMHg0LCAgLy8gOjpoYXNoIChHQ0MgZXh0
ZW5zaW9uKQorI2VuZGlmICAgICAgICAgICAgICAgIC8vIF9NU0NfVkVSCit9OworCisvLyBIIGlz
IGEgYml0bWFzayBvZiBIYXNoIGVudW1lcmF0aW9ucy4KKy8vIEhhc2hhYmxlPEg+IGlzIGhhc2hh
YmxlIHZpYSBhbGwgbWVhbnMgc3BlY2lmaWVkIGluIEguCit0ZW1wbGF0ZSA8aW50IEg+CitzdHJ1
Y3QgSGFzaGFibGUgeworICBzdGF0aWMgY29uc3RleHByIGJvb2wgSGFzaGFibGVCeShIYXNoIGgp
IHsgcmV0dXJuIGggJiBIOyB9Cit9OworCituYW1lc3BhY2Ugc3RkIHsKK3RlbXBsYXRlIDxpbnQg
SD4KK3N0cnVjdCBoYXNoPEhhc2hhYmxlPEg+PiB7CisgIHRlbXBsYXRlIDxjbGFzcyBFID0gSGFz
aGFibGU8SD4sCisgICAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEU6
Okhhc2hhYmxlQnkoa1N0ZCk+Ojp0eXBlPgorICBzaXplX3Qgb3BlcmF0b3IoKShFKSBjb25zdCB7
CisgICAgcmV0dXJuIGtTdGQ7CisgIH0KK307Cit9ICAvLyBuYW1lc3BhY2Ugc3RkCisKK25hbWVz
cGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsK
KwordGVtcGxhdGUgPGNsYXNzIFQ+CitzaXplX3QgSGFzaChjb25zdCBUJiB2KSB7CisgIHJldHVy
biBoYXNoX2RlZmF1bHRfaGFzaDxUPigpKHYpOworfQorCitURVNUKERlbGVnYXRlLCBIYXNoRGlz
cGF0Y2gpIHsKKyAgRVhQRUNUX0VRKEhhc2goa1N0ZCksIEhhc2goSGFzaGFibGU8a1N0ZD4oKSkp
OworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJu
YWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNmE5ZGYxNmY4YTMzNmMx
NDNhZmFlZWMyMDY5MTQyMzYxYjg4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5jYwpAQCAtMCwwICsxLDcyIEBACisv
LyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgorCisjaW5jbHVkZSA8
ZGVxdWU+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwg
eworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworY2xhc3MgUmFuZG9t
RGV2aWNlU2VlZFNlcSB7CisgcHVibGljOgorICB1c2luZyByZXN1bHRfdHlwZSA9IHR5cGVuYW1l
IHN0ZDo6cmFuZG9tX2RldmljZTo6cmVzdWx0X3R5cGU7CisKKyAgdGVtcGxhdGUgPGNsYXNzIEl0
ZXJhdG9yPgorICB2b2lkIGdlbmVyYXRlKEl0ZXJhdG9yIHN0YXJ0LCBJdGVyYXRvciBlbmQpIHsK
KyAgICB3aGlsZSAoc3RhcnQgIT0gZW5kKSB7CisgICAgICAqc3RhcnQgPSBnZW5fKCk7CisgICAg
ICArK3N0YXJ0OworICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpyYW5kb21fZGV2aWNl
IGdlbl87Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworc3RkOjptdDE5OTM3XzY0KiBHZXRUaHJl
YWRMb2NhbFJuZygpIHsKKyAgUmFuZG9tRGV2aWNlU2VlZFNlcSBzZWVkX3NlcTsKKyAgdGhyZWFk
X2xvY2FsIGF1dG8qIHJuZyA9IG5ldyBzdGQ6Om10MTk5MzdfNjQoc2VlZF9zZXEpOworICByZXR1
cm4gcm5nOworfQorCitzdGQ6OnN0cmluZyBHZW5lcmF0b3I8c3RkOjpzdHJpbmc+OjpvcGVyYXRv
cigpKCkgY29uc3QgeworICAvLyBOT0xJTlRORVhUTElORShydW50aW1lL2ludCkKKyAgc3RkOjp1
bmlmb3JtX2ludF9kaXN0cmlidXRpb248c2hvcnQ+IGNoYXJzKDB4MjAsIDB4N0UpOworICBzdGQ6
OnN0cmluZyByZXM7CisgIHJlcy5yZXNpemUoMzIpOworICBzdGQ6OmdlbmVyYXRlKHJlcy5iZWdp
bigpLCByZXMuZW5kKCksCisgICAgICAgICAgICAgICAgWyZdKCkgeyByZXR1cm4gY2hhcnMoKkdl
dFRocmVhZExvY2FsUm5nKCkpOyB9KTsKKyAgcmV0dXJuIHJlczsKK30KKworYWJzbDo6c3RyaW5n
X3ZpZXcgR2VuZXJhdG9yPGFic2w6OnN0cmluZ192aWV3Pjo6b3BlcmF0b3IoKSgpIGNvbnN0IHsK
KyAgc3RhdGljIGF1dG8qIGFyZW5hID0gbmV3IHN0ZDo6ZGVxdWU8c3RkOjpzdHJpbmc+KCk7Cisg
IC8vIE5PTElOVE5FWFRMSU5FKHJ1bnRpbWUvaW50KQorICBzdGQ6OnVuaWZvcm1faW50X2Rpc3Ry
aWJ1dGlvbjxzaG9ydD4gY2hhcnMoMHgyMCwgMHg3RSk7CisgIGFyZW5hLT5lbXBsYWNlX2JhY2so
KTsKKyAgYXV0byYgcmVzID0gYXJlbmEtPmJhY2soKTsKKyAgcmVzLnJlc2l6ZSgzMik7CisgIHN0
ZDo6Z2VuZXJhdGUocmVzLmJlZ2luKCksIHJlcy5lbmQoKSwKKyAgICAgICAgICAgICAgICBbJl0o
KSB7IHJldHVybiBjaGFycygqR2V0VGhyZWFkTG9jYWxSbmcoKSk7IH0pOworICByZXR1cm4gcmVz
OworfQorCit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGNv
bnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwZDc3
MTAyNmM3YjUwMDUxMzVkMjg2MzE2NWEwMDljYjRkYmNhOTgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oCkBAIC0wLDAg
KzEsMTUwIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8v
IEdlbmVyYXRlcyByYW5kb20gdmFsdWVzIGZvciB0ZXN0aW5nLiBTcGVjaWFsaXplZCBvbmx5IGZv
ciB0aGUgZmV3IHR5cGVzIHdlCisvLyBjYXJlIGFib3V0LgorCisjaWZuZGVmIEFCU0xfQ09OVEFJ
TkVSX0lOVEVSTkFMX0hBU0hfR0VORVJBVE9SX1RFU1RJTkdfSF8KKyNkZWZpbmUgQUJTTF9DT05U
QUlORVJfSU5URVJOQUxfSEFTSF9HRU5FUkFUT1JfVEVTVElOR19IXworCisjaW5jbHVkZSA8c3Rk
aW50Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGlvc2Z3ZD4KKyNpbmNsdWRl
IDxyYW5kb20+CisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5j
bHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hf
cG9saWN5X3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNp
bmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKworbmFtZXNwYWNlIGFic2wgewor
bmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgaGFzaF9pbnRlcm5hbCB7
CituYW1lc3BhY2UgZ2VuZXJhdG9yX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIENvbnRh
aW5lciwgY2xhc3MgPSB2b2lkPgorc3RydWN0IElzTWFwIDogc3RkOjpmYWxzZV90eXBlIHt9Owor
Cit0ZW1wbGF0ZSA8Y2xhc3MgTWFwPgorc3RydWN0IElzTWFwPE1hcCwgYWJzbDo6dm9pZF90PHR5
cGVuYW1lIE1hcDo6bWFwcGVkX3R5cGU+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCit9ICAvLyBu
YW1lc3BhY2UgZ2VuZXJhdG9yX2ludGVybmFsCisKK3N0ZDo6bXQxOTkzN182NCogR2V0VGhyZWFk
TG9jYWxSbmcoKTsKKworZW51bSBFbnVtIHsKKyAga0VudW1FbXB0eSwKKyAga0VudW1EZWxldGVk
LAorfTsKKworZW51bSBjbGFzcyBFbnVtQ2xhc3MgOiB1aW50NjRfdCB7CisgIGtFbXB0eSwKKyAg
a0RlbGV0ZWQsCit9OworCitpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0
cmVhbSYgbywgY29uc3QgRW51bUNsYXNzJiBlYykgeworICByZXR1cm4gbyA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oZWMpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRSA9IHZvaWQ+
CitzdHJ1Y3QgR2VuZXJhdG9yOworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBHZW5lcmF0
b3I8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+
Ojp0eXBlPiB7CisgIFQgb3BlcmF0b3IoKSgpIGNvbnN0IHsKKyAgICBzdGQ6OnVuaWZvcm1faW50
X2Rpc3RyaWJ1dGlvbjxUPiBkaXN0OworICAgIHJldHVybiBkaXN0KCpHZXRUaHJlYWRMb2NhbFJu
ZygpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBHZW5lcmF0b3I8RW51bT4gewor
ICBFbnVtIG9wZXJhdG9yKCkoKSBjb25zdCB7CisgICAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmli
dXRpb248dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bT46OnR5cGU+CisgICAgICAg
IGRpc3Q7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIGF1dG8gdmFyaWF0ZSA9IGRpc3QoKkdl
dFRocmVhZExvY2FsUm5nKCkpOworICAgICAgaWYgKHZhcmlhdGUgIT0ga0VudW1FbXB0eSAmJiB2
YXJpYXRlICE9IGtFbnVtRGVsZXRlZCkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudW0+
KHZhcmlhdGUpOworICAgIH0KKyAgfQorfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBHZW5lcmF0
b3I8RW51bUNsYXNzPiB7CisgIEVudW1DbGFzcyBvcGVyYXRvcigpKCkgY29uc3QgeworICAgIHN0
ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPAorICAgICAgICB0eXBlbmFtZSBzdGQ6OnVuZGVy
bHlpbmdfdHlwZTxFbnVtQ2xhc3M+Ojp0eXBlPgorICAgICAgICBkaXN0OworICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICBFbnVtQ2xhc3MgdmFyaWF0ZSA9IHN0YXRpY19jYXN0PEVudW1DbGFzcz4o
ZGlzdCgqR2V0VGhyZWFkTG9jYWxSbmcoKSkpOworICAgICAgaWYgKHZhcmlhdGUgIT0gRW51bUNs
YXNzOjprRW1wdHkgJiYgdmFyaWF0ZSAhPSBFbnVtQ2xhc3M6OmtEZWxldGVkKQorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RW51bUNsYXNzPih2YXJpYXRlKTsKKyAgICB9CisgIH0KK307CisK
K3RlbXBsYXRlIDw+CitzdHJ1Y3QgR2VuZXJhdG9yPHN0ZDo6c3RyaW5nPiB7CisgIHN0ZDo6c3Ry
aW5nIG9wZXJhdG9yKCkoKSBjb25zdDsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgR2VuZXJh
dG9yPGFic2w6OnN0cmluZ192aWV3PiB7CisgIGFic2w6OnN0cmluZ192aWV3IG9wZXJhdG9yKCko
KSBjb25zdDsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgR2VuZXJhdG9yPE5vblN0YW5kYXJk
TGF5b3V0PiB7CisgIE5vblN0YW5kYXJkTGF5b3V0IG9wZXJhdG9yKCkoKSBjb25zdCB7CisgICAg
cmV0dXJuIE5vblN0YW5kYXJkTGF5b3V0KEdlbmVyYXRvcjxzdGQ6OnN0cmluZz4oKSgpKTsKKyAg
fQorfTsKKwordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+CitzdHJ1Y3QgR2VuZXJhdG9yPHN0
ZDo6cGFpcjxLLCBWPj4geworICBzdGQ6OnBhaXI8SywgVj4gb3BlcmF0b3IoKSgpIGNvbnN0IHsK
KyAgICByZXR1cm4gc3RkOjpwYWlyPEssIFY+KEdlbmVyYXRvcjx0eXBlbmFtZSBzdGQ6OmRlY2F5
PEs+Ojp0eXBlPigpKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3I8dHlw
ZW5hbWUgc3RkOjpkZWNheTxWPjo6dHlwZT4oKSgpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPGNs
YXNzLi4uIFRzPgorc3RydWN0IEdlbmVyYXRvcjxzdGQ6OnR1cGxlPFRzLi4uPj4geworICBzdGQ6
OnR1cGxlPFRzLi4uPiBvcGVyYXRvcigpKCkgY29uc3QgeworICAgIHJldHVybiBzdGQ6OnR1cGxl
PFRzLi4uPihHZW5lcmF0b3I8dHlwZW5hbWUgc3RkOjpkZWNheTxUcz46OnR5cGU+KCkoKS4uLik7
CisgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBVPgorc3RydWN0IEdlbmVyYXRvcjxVLCBhYnNs
Ojp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFUmPigpLmtleSgpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFUmPigpLnZhbHVlKCkp
Pj4KKyAgICA6IEdlbmVyYXRvcjxzdGQ6OnBhaXI8CisgICAgICAgICAgdHlwZW5hbWUgc3RkOjpk
ZWNheTxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VSY+KCkua2V5KCkpPjo6dHlwZSwKKyAgICAgICAg
ICB0eXBlbmFtZSBzdGQ6OmRlY2F5PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxVJj4oKS52YWx1ZSgp
KT46OnR5cGU+PiB7fTsKKwordGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lcj4KK3VzaW5nIEdlbmVy
YXRlZFR5cGUgPSBkZWNsdHlwZSgKKyAgICBzdGQ6OmRlY2x2YWw8Y29uc3QgR2VuZXJhdG9yPAor
ICAgICAgICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPGdlbmVyYXRvcl9pbnRlcm5hbDo6SXNN
YXA8Q29udGFpbmVyPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVuYW1lIENvbnRhaW5lcjo6a2V5X3R5cGU+Ojp0eXBlPiY+KCkoKSk7CisK
K30gIC8vIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVy
X2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJ
TkVSX0lOVEVSTkFMX0hBU0hfR0VORVJBVE9SX1RFU1RJTkdfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmYzc2ZWFkN2E2
ODQyZTlmY2JjZjMyMDQyZjEyZjdlYWM2ZTlmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oCkBAIC0wLDAgKzEsMTc4IEBA
CisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIFV0aWxpdGll
cyB0byBoZWxwIHRlc3RzIHZlcmlmeSB0aGF0IGhhc2ggdGFibGVzIHByb3Blcmx5IGhhbmRsZSBz
dGF0ZWZ1bAorLy8gYWxsb2NhdG9ycyBhbmQgaGFzaCBmdW5jdGlvbnMuCisKKyNpZm5kZWYgQUJT
TF9DT05UQUlORVJfSU5URVJOQUxfSEFTSF9QT0xJQ1lfVEVTVElOR19IXworI2RlZmluZSBBQlNM
X0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIX1BPTElDWV9URVNUSU5HX0hfCisKKyNpbmNsdWRlIDxj
c3RkbGliPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8
b3N0cmVhbT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2lu
Y2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvaGFzaC9oYXNoLmgiCisjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFj
ZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIGhhc2hfdGVzdGluZ19pbnRlcm5hbCB7
CisKK3RlbXBsYXRlIDxjbGFzcyBEZXJpdmVkPgorc3RydWN0IFdpdGhJZCB7CisgIFdpdGhJZCgp
IDogaWRfKG5leHRfaWQ8RGVyaXZlZD4oKSkge30KKyAgV2l0aElkKGNvbnN0IFdpdGhJZCYgdGhh
dCkgOiBpZF8odGhhdC5pZF8pIHt9CisgIFdpdGhJZChXaXRoSWQmJiB0aGF0KSA6IGlkXyh0aGF0
LmlkXykgeyB0aGF0LmlkXyA9IDA7IH0KKyAgV2l0aElkJiBvcGVyYXRvcj0oY29uc3QgV2l0aElk
JiB0aGF0KSB7CisgICAgaWRfID0gdGhhdC5pZF87CisgICAgcmV0dXJuICp0aGlzOworICB9Cisg
IFdpdGhJZCYgb3BlcmF0b3I9KFdpdGhJZCYmIHRoYXQpIHsKKyAgICBpZF8gPSB0aGF0LmlkXzsK
KyAgICB0aGF0LmlkXyA9IDA7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgc2l6ZV90IGlk
KCkgY29uc3QgeyByZXR1cm4gaWRfOyB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBXaXRoSWQmIGEsIGNvbnN0IFdpdGhJZCYgYikgeworICAgIHJldHVybiBhLmlkXyA9PSBiLmlk
XzsKKyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdpdGhJZCYgYSwgY29uc3Qg
V2l0aElkJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KKworIHByb3RlY3RlZDoKKyAgZXhwbGlj
aXQgV2l0aElkKHNpemVfdCBpZCkgOiBpZF8oaWQpIHt9CisKKyBwcml2YXRlOgorICBzaXplX3Qg
aWRfOworCisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICBzdGF0aWMgc2l6ZV90IG5leHRfaWQoKSB7
CisgICAgLy8gMCBpcyByZXNlcnZlZCBmb3IgbW92ZWQgZnJvbSBzdGF0ZS4KKyAgICBzdGF0aWMg
c2l6ZV90IGdJZCA9IDE7CisgICAgcmV0dXJuIGdJZCsrOworICB9Cit9OworCit9ICAvLyBuYW1l
c3BhY2UgaGFzaF90ZXN0aW5nX2ludGVybmFsCisKK3N0cnVjdCBOb25TdGFuZGFyZExheW91dCB7
CisgIE5vblN0YW5kYXJkTGF5b3V0KCkge30KKyAgZXhwbGljaXQgTm9uU3RhbmRhcmRMYXlvdXQo
c3RkOjpzdHJpbmcgcykgOiB2YWx1ZShzdGQ6Om1vdmUocykpIHt9CisgIHZpcnR1YWwgfk5vblN0
YW5kYXJkTGF5b3V0KCkge30KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vblN0
YW5kYXJkTGF5b3V0JiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5vblN0YW5k
YXJkTGF5b3V0JiBiKSB7CisgICAgcmV0dXJuIGEudmFsdWUgPT0gYi52YWx1ZTsKKyAgfQorICBm
cmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vblN0YW5kYXJkTGF5b3V0JiBhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IE5vblN0YW5kYXJkTGF5b3V0JiBiKSB7CisgICAgcmV0
dXJuIGEudmFsdWUgIT0gYi52YWx1ZTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgor
ICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgY29uc3QgTm9uU3RhbmRhcmRMYXlvdXQmIHYp
IHsKKyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIHYudmFsdWUpOworICB9CisK
KyAgc3RkOjpzdHJpbmcgdmFsdWU7Cit9OworCitzdHJ1Y3QgU3RhdGVmdWxUZXN0aW5nSGFzaAor
ICAgIDogYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX3Rlc3RpbmdfaW50ZXJuYWw6Oldp
dGhJZDwKKyAgICAgICAgICBTdGF0ZWZ1bFRlc3RpbmdIYXNoPiB7CisgIHRlbXBsYXRlIDxjbGFz
cyBUPgorICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBUJiB0KSBjb25zdCB7CisgICAgcmV0dXJu
IGFic2w6Okhhc2g8VD57fSh0KTsKKyAgfQorfTsKKworc3RydWN0IFN0YXRlZnVsVGVzdGluZ0Vx
dWFsCisgICAgOiBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfdGVzdGluZ19pbnRlcm5h
bDo6V2l0aElkPAorICAgICAgICAgIFN0YXRlZnVsVGVzdGluZ0VxdWFsPiB7CisgIHRlbXBsYXRl
IDxjbGFzcyBULCBjbGFzcyBVPgorICBib29sIG9wZXJhdG9yKCkoY29uc3QgVCYgdCwgY29uc3Qg
VSYgdSkgY29uc3QgeworICAgIHJldHVybiB0ID09IHU7CisgIH0KK307CisKKy8vIEl0IGlzIGV4
cGVjdGVkIHRoYXQgQWxsb2MoKSA9PSBBbGxvYygpIGZvciBhbGwgYWxsb2NhdG9ycyBzbyB3ZSBj
YW5ub3QgdXNlCisvLyBXaXRoSWQgYmFzZS4gV2UgbmVlZCB0byBleHBsaWNpdGx5IGFzc2lnbiBp
ZHMuCit0ZW1wbGF0ZSA8Y2xhc3MgVCA9IGludD4KK3N0cnVjdCBBbGxvYyA6IHN0ZDo6YWxsb2Nh
dG9yPFQ+IHsKKyAgdXNpbmcgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwID0gc3RkOjp0cnVl
X3R5cGU7CisKKyAgLy8gVXNpbmcgb2xkIHBhcmFkaWdtIGZvciB0aGlzIHRvIGVuc3VyZSBjb21w
YXRpYmlsaXR5LgorICBleHBsaWNpdCBBbGxvYyhzaXplX3QgaWQgPSAwKSA6IGlkXyhpZCkge30K
KworICBBbGxvYyhjb25zdCBBbGxvYyYpID0gZGVmYXVsdDsKKyAgQWxsb2MmIG9wZXJhdG9yPShj
b25zdCBBbGxvYyYpID0gZGVmYXVsdDsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKyAgQWxsb2Mo
Y29uc3QgQWxsb2M8VT4mIHRoYXQpIDogc3RkOjphbGxvY2F0b3I8VD4odGhhdCksIGlkXyh0aGF0
LmlkKCkpIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFU+CisgIHN0cnVjdCByZWJpbmQgeworICAg
IHVzaW5nIG90aGVyID0gQWxsb2M8VT47CisgIH07CisKKyAgc2l6ZV90IGlkKCkgY29uc3QgeyBy
ZXR1cm4gaWRfOyB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbGxvYyYgYSwg
Y29uc3QgQWxsb2MmIGIpIHsKKyAgICByZXR1cm4gYS5pZF8gPT0gYi5pZF87CisgIH0KKyAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBbGxvYyYgYSwgY29uc3QgQWxsb2MmIGIpIHsgcmV0
dXJuICEoYSA9PSBiKTsgfQorCisgcHJpdmF0ZToKKyAgc2l6ZV90IGlkXyA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgTWFwPgorYXV0
byBpdGVtcyhjb25zdCBNYXAmIG0pIC0+IHN0ZDo6dmVjdG9yPAorICAgIHN0ZDo6cGFpcjx0eXBl
bmFtZSBNYXA6OmtleV90eXBlLCB0eXBlbmFtZSBNYXA6Om1hcHBlZF90eXBlPj4geworICB1c2lu
ZyBzdGQ6OmdldDsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHR5cGVuYW1lIE1hcDo6a2V5X3R5
cGUsIHR5cGVuYW1lIE1hcDo6bWFwcGVkX3R5cGU+PiByZXM7CisgIHJlcy5yZXNlcnZlKG0uc2l6
ZSgpKTsKKyAgZm9yIChjb25zdCBhdXRvJiB2IDogbSkgcmVzLmVtcGxhY2VfYmFjayhnZXQ8MD4o
diksIGdldDwxPih2KSk7CisgIHJldHVybiByZXM7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBTZXQ+
CithdXRvIGtleXMoY29uc3QgU2V0JiBzKQorICAgIC0+IHN0ZDo6dmVjdG9yPHR5cGVuYW1lIHN0
ZDo6ZGVjYXk8dHlwZW5hbWUgU2V0OjprZXlfdHlwZT46OnR5cGU+IHsKKyAgc3RkOjp2ZWN0b3I8
dHlwZW5hbWUgc3RkOjpkZWNheTx0eXBlbmFtZSBTZXQ6OmtleV90eXBlPjo6dHlwZT4gcmVzOwor
ICByZXMucmVzZXJ2ZShzLnNpemUoKSk7CisgIGZvciAoY29uc3QgYXV0byYgdiA6IHMpIHJlcy5l
bXBsYWNlX2JhY2sodik7CisgIHJldHVybiByZXM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBjb250
YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKy8vIEFCU0xfVU5PUkRFUkVE
X1NVUFBPUlRTX0FMTE9DX0NUT1JTIGlzIGZhbHNlIGZvciBnbGliY3h4IHZlcnNpb25zCisvLyB3
aGVyZSB0aGUgdW5vcmRlcmVkIGNvbnRhaW5lcnMgYXJlIG1pc3NpbmcgY2VydGFpbiBjb25zdHJ1
Y3RvcnMgdGhhdAorLy8gdGFrZSBhbGxvY2F0b3IgYXJndW1lbnRzLiBUaGlzIHRlc3QgaXMgZGVm
aW5lZCBhZC1ob2MgZm9yIHRoZSBwbGF0Zm9ybXMKKy8vIHdlIGNhcmUgYWJvdXQgKG5vdGFibHkg
Q3Jvc3N0b29sIDE3KSBiZWNhdXNlIGxpYnN0ZGN4eCdzIHVzZWxlc3MKKy8vIHZlcnNpb25pbmcg
c2NoZW1lIHByZWNsdWRlcyBhIG1vcmUgcHJpbmNpcGxlZCBzb2x1dGlvbi4KKyNpZiBkZWZpbmVk
KF9fR0xJQkNYWF9fKSAmJiBfX0dMSUJDWFhfXyA8PSAyMDE0MDQyNQorI2RlZmluZSBBQlNMX1VO
T1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUyAwCisjZWxzZQorI2RlZmluZSBBQlNMX1VOT1JE
RVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUyAxCisjZW5kaWYKKworI2VuZGlmICAvLyBBQlNMX0NP
TlRBSU5FUl9JTlRFUk5BTF9IQVNIX1BPTElDWV9URVNUSU5HX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZ190ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmdfdGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjE1YzQyMzdhZTU1MTY4NmRkODI0ZDQyZGE3Y2ZiOTNiMGNlOTE1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmdfdGVzdC5j
YwpAQCAtMCwwICsxLDQzIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGlu
Zy5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFt
ZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCitURVNUKF8sIEhhc2gp
IHsKKyAgU3RhdGVmdWxUZXN0aW5nSGFzaCBoMTsKKyAgRVhQRUNUX0VRKDEsIGgxLmlkKCkpOwor
ICBTdGF0ZWZ1bFRlc3RpbmdIYXNoIGgyOworICBFWFBFQ1RfRVEoMiwgaDIuaWQoKSk7CisgIFN0
YXRlZnVsVGVzdGluZ0hhc2ggaDFjKGgxKTsKKyAgRVhQRUNUX0VRKDEsIGgxYy5pZCgpKTsKKyAg
U3RhdGVmdWxUZXN0aW5nSGFzaCBoMm0oc3RkOjptb3ZlKGgyKSk7CisgIEVYUEVDVF9FUSgyLCBo
Mm0uaWQoKSk7CisgIEVYUEVDVF9FUSgwLCBoMi5pZCgpKTsKKyAgU3RhdGVmdWxUZXN0aW5nSGFz
aCBoMzsKKyAgRVhQRUNUX0VRKDMsIGgzLmlkKCkpOworICBoMyA9IFN0YXRlZnVsVGVzdGluZ0hh
c2goKTsKKyAgRVhQRUNUX0VRKDQsIGgzLmlkKCkpOworICBoMyA9IHN0ZDo6bW92ZShoMSk7Cisg
IEVYUEVDVF9FUSgxLCBoMy5pZCgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyOWU0
N2UxNzVjOWRmYWUzNTI0YjdjYjE1MzkzMTAyNmRlNWJmOTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdHJhaXRzLmgKQEAgLTAsMCArMSwx
ODkgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYg
QUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSF9QT0xJQ1lfVFJBSVRTX0hfCisjZGVmaW5lIEFC
U0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hfUE9MSUNZX1RSQUlUU19IXworCisjaW5jbHVkZSA8
Y3N0ZGRlZj4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5j
bHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorCitu
YW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKworLy8gRGVm
aW5lcyBob3cgc2xvdHMgYXJlIGluaXRpYWxpemVkL2Rlc3Ryb3llZC9tb3ZlZC4KK3RlbXBsYXRl
IDxjbGFzcyBQb2xpY3ksIGNsYXNzID0gdm9pZD4KK3N0cnVjdCBoYXNoX3BvbGljeV90cmFpdHMg
eworIHByaXZhdGU6CisgIHN0cnVjdCBSZXR1cm5LZXkgeworICAgIC8vIFdlIHJldHVybiBgS2V5
YCBoZXJlLgorICAgIC8vIFdoZW4gS2V5PVQmLCB3ZSBmb3J3YXJkIHRoZSBsdmFsdWUgcmVmZXJl
bmNlLgorICAgIC8vIFdoZW4gS2V5PVQsIHdlIHJldHVybiBieSB2YWx1ZSB0byBhdm9pZCBhIGRh
bmdsaW5nIHJlZmVyZW5jZS4KKyAgICAvLyBlZywgZm9yIHN0cmluZ19oYXNoX21hcC4KKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcy4uLiBBcmdzPgorICAgIEtleSBvcGVyYXRvcigpKEtl
eSYmIGssIGNvbnN0IEFyZ3MmLi4uKSBjb25zdCB7CisgICAgICByZXR1cm4gc3RkOjpmb3J3YXJk
PEtleT4oayk7CisgICAgfQorICB9OworCisgIHRlbXBsYXRlIDxjbGFzcyBQID0gUG9saWN5LCBj
bGFzcyA9IHZvaWQ+CisgIHN0cnVjdCBDb25zdGFudEl0ZXJhdG9yc0ltcGwgOiBzdGQ6OmZhbHNl
X3R5cGUge307CisKKyAgdGVtcGxhdGUgPGNsYXNzIFA+CisgIHN0cnVjdCBDb25zdGFudEl0ZXJh
dG9yc0ltcGw8UCwgYWJzbDo6dm9pZF90PHR5cGVuYW1lIFA6OmNvbnN0YW50X2l0ZXJhdG9ycz4+
CisgICAgICA6IFA6OmNvbnN0YW50X2l0ZXJhdG9ycyB7fTsKKworIHB1YmxpYzoKKyAgLy8gVGhl
IGFjdHVhbCBvYmplY3Qgc3RvcmVkIGluIHRoZSBoYXNoIHRhYmxlLgorICB1c2luZyBzbG90X3R5
cGUgPSB0eXBlbmFtZSBQb2xpY3k6OnNsb3RfdHlwZTsKKworICAvLyBUaGUgdHlwZSBvZiB0aGUg
a2V5cyBzdG9yZWQgaW4gdGhlIGhhc2h0YWJsZS4KKyAgdXNpbmcga2V5X3R5cGUgPSB0eXBlbmFt
ZSBQb2xpY3k6OmtleV90eXBlOworCisgIC8vIFRoZSBhcmd1bWVudCB0eXBlIGZvciBpbnNlcnRp
b25zIGludG8gdGhlIGhhc2h0YWJsZS4gVGhpcyBpcyBkaWZmZXJlbnQKKyAgLy8gZnJvbSB2YWx1
ZV90eXBlIGZvciBpbmNyZWFzZWQgcGVyZm9ybWFuY2UuIFNlZSBpbml0aWFsaXplcl9saXN0IGNv
bnN0cnVjdG9yCisgIC8vIGFuZCBpbnNlcnQoKSBtZW1iZXIgZnVuY3Rpb25zIGZvciBtb3JlIGRl
dGFpbHMuCisgIHVzaW5nIGluaXRfdHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6aW5pdF90eXBlOwor
CisgIHVzaW5nIHJlZmVyZW5jZSA9IGRlY2x0eXBlKFBvbGljeTo6ZWxlbWVudChzdGQ6OmRlY2x2
YWw8c2xvdF90eXBlKj4oKSkpOworICB1c2luZyBwb2ludGVyID0gdHlwZW5hbWUgc3RkOjpyZW1v
dmVfcmVmZXJlbmNlPHJlZmVyZW5jZT46OnR5cGUqOworICB1c2luZyB2YWx1ZV90eXBlID0gdHlw
ZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPHJlZmVyZW5jZT46OnR5cGU7CisKKyAgLy8gUG9s
aWNpZXMgY2FuIHNldCB0aGlzIHZhcmlhYmxlIHRvIHRlbGwgcmF3X2hhc2hfc2V0IHRoYXQgYWxs
IGl0ZXJhdG9ycworICAvLyBzaG91bGQgYmUgY29uc3RhbnQsIGV2ZW4gYGl0ZXJhdG9yYC4gVGhp
cyBpcyB1c2VmdWwgZm9yIHNldC1saWtlCisgIC8vIGNvbnRhaW5lcnMuCisgIC8vIERlZmF1bHRz
IHRvIGZhbHNlIGlmIG5vdCBwcm92aWRlZCBieSB0aGUgcG9saWN5LgorICB1c2luZyBjb25zdGFu
dF9pdGVyYXRvcnMgPSBDb25zdGFudEl0ZXJhdG9yc0ltcGw8PjsKKworICAvLyBQUkVDT05ESVRJ
T046IGBzbG90YCBpcyBVTklOSVRJQUxJWkVECisgIC8vIFBPU1RDT05ESVRJT046IGBzbG90YCBp
cyBJTklUSUFMSVpFRAorICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2MsIGNsYXNzLi4uIEFyZ3M+Cisg
IHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvYyogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCwgQXJn
cyYmLi4uIGFyZ3MpIHsKKyAgICBQb2xpY3k6OmNvbnN0cnVjdChhbGxvYywgc2xvdCwgc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIC8vIFBSRUNPTkRJVElPTjogYHNsb3Rg
IGlzIElOSVRJQUxJWkVECisgIC8vIFBPU1RDT05ESVRJT046IGBzbG90YCBpcyBVTklOSVRJQUxJ
WkVECisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvYz4KKyAgc3RhdGljIHZvaWQgZGVzdHJveShBbGxv
YyogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCkgeworICAgIFBvbGljeTo6ZGVzdHJveShhbGxvYywg
c2xvdCk7CisgIH0KKworICAvLyBUcmFuc2ZlcnMgdGhlIGBvbGRfc2xvdGAgdG8gYG5ld19zbG90
YC4gQW55IG1lbW9yeSBhbGxvY2F0ZWQgYnkgdGhlCisgIC8vIGFsbG9jYXRvciBpbnNpZGUgYG9s
ZF9zbG90YCB0byBgbmV3X3Nsb3RgIGNhbiBiZSB0cmFuc2ZlcmVkLgorICAvLworICAvLyBPUFRJ
T05BTDogZGVmYXVsdHMgdG86CisgIC8vCisgIC8vICAgICBjbG9uZShuZXdfc2xvdCwgc3RkOjpt
b3ZlKCpvbGRfc2xvdCkpOworICAvLyAgICAgZGVzdHJveShvbGRfc2xvdCk7CisgIC8vCisgIC8v
IFBSRUNPTkRJVElPTjogYG5ld19zbG90YCBpcyBVTklOSVRJQUxJWkVEIGFuZCBgb2xkX3Nsb3Rg
IGlzIElOSVRJQUxJWkVECisgIC8vIFBPU1RDT05ESVRJT046IGBuZXdfc2xvdGAgaXMgSU5JVElB
TElaRUQgYW5kIGBvbGRfc2xvdGAgaXMKKyAgLy8gICAgICAgICAgICAgICAgVU5JTklUSUFMSVpF
RAorICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2M+CisgIHN0YXRpYyB2b2lkIHRyYW5zZmVyKEFsbG9j
KiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwgc2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAg
IHRyYW5zZmVyX2ltcGwoYWxsb2MsIG5ld19zbG90LCBvbGRfc2xvdCwgMCk7CisgIH0KKworICAv
LyBQUkVDT05ESVRJT046IGBzbG90YCBpcyBJTklUSUFMSVpFRAorICAvLyBQT1NUQ09ORElUSU9O
OiBgc2xvdGAgaXMgSU5JVElBTElaRUQKKyAgdGVtcGxhdGUgPGNsYXNzIFAgPSBQb2xpY3k+Cisg
IHN0YXRpYyBhdXRvIGVsZW1lbnQoc2xvdF90eXBlKiBzbG90KSAtPiBkZWNsdHlwZShQOjplbGVt
ZW50KHNsb3QpKSB7CisgICAgcmV0dXJuIFA6OmVsZW1lbnQoc2xvdCk7CisgIH0KKworICAvLyBS
ZXR1cm5zIHRoZSBhbW91bnQgb2YgbWVtb3J5IG93bmVkIGJ5IGBzbG90YCwgZXhjbHVzaXZlIG9m
IGBzaXplb2YoKnNsb3QpYC4KKyAgLy8KKyAgLy8gSWYgYHNsb3RgIGlzIG51bGxwdHIsIHJldHVy
bnMgdGhlIGNvbnN0YW50IGFtb3VudCBvZiBtZW1vcnkgb3duZWQgYnkgYW55CisgIC8vIGZ1bGwg
c2xvdCBvciAtMSBpZiBzbG90cyBvd24gdmFyaWFibGUgYW1vdW50cyBvZiBtZW1vcnkuCisgIC8v
CisgIC8vIFBSRUNPTkRJVElPTjogYHNsb3RgIGlzIElOSVRJQUxJWkVEIG9yIG51bGxwdHIKKyAg
dGVtcGxhdGUgPGNsYXNzIFAgPSBQb2xpY3k+CisgIHN0YXRpYyBzaXplX3Qgc3BhY2VfdXNlZChj
b25zdCBzbG90X3R5cGUqIHNsb3QpIHsKKyAgICByZXR1cm4gUDo6c3BhY2VfdXNlZChzbG90KTsK
KyAgfQorCisgIC8vIFByb3ZpZGVzIGdlbmVyYWxpemVkIGFjY2VzcyB0byB0aGUga2V5IGZvciBl
bGVtZW50cywgYm90aCBmb3IgZWxlbWVudHMgaW4KKyAgLy8gdGhlIHRhYmxlIGFuZCBmb3IgZWxl
bWVudHMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBpbnNlcnRlZCAob3IgZXZlbgorICAvLyBjb25z
dHJ1Y3RlZCkuICBXZSB3b3VsZCBsaWtlIGFuIEFQSSB0aGF0IGFsbG93cyB1cyB0byBzYXk6IGBr
ZXkoYXJncy4uLilgCisgIC8vIGJ1dCB3ZSBjYW5ub3QgZG8gdGhhdCBmb3IgYWxsIGNhc2VzLCBz
byB3ZSB1c2UgdGhpcyBtb3JlIGdlbmVyYWwgQVBJIHRoYXQKKyAgLy8gY2FuIGJlIHVzZWQgZm9y
IG1hbnkgdGhpbmdzLCBpbmNsdWRpbmcgdGhlIGZvbGxvd2luZzoKKyAgLy8KKyAgLy8gICAtIEdp
dmVuIGFuIGVsZW1lbnQgaW4gYSB0YWJsZSwgZ2V0IGl0cyBrZXkuCisgIC8vICAgLSBHaXZlbiBh
biBlbGVtZW50IGluaXRpYWxpemVyLCBnZXQgaXRzIGtleS4KKyAgLy8gICAtIEdpdmVuIGBlbXBs
YWNlKClgIGFyZ3VtZW50cywgZ2V0IHRoZSBlbGVtZW50IGtleS4KKyAgLy8KKyAgLy8gSW1wbGVt
ZW50YXRpb25zIG9mIHRoaXMgbXVzdCBhZGhlcmUgdG8gYSB2ZXJ5IHN0cmljdCB0ZWNobmljYWwK
KyAgLy8gc3BlY2lmaWNhdGlvbiBhcm91bmQgYWxpYXNpbmcgYW5kIGNvbnN1bWluZyBhcmd1bWVu
dHM6CisgIC8vCisgIC8vIExldCBgdmFsdWVfdHlwZWAgYmUgdGhlIHJlc3VsdCB0eXBlIG9mIGBl
bGVtZW50KClgIHdpdGhvdXQgcmVmLSBhbmQKKyAgLy8gY3YtcXVhbGlmaWVycy4gVGhlIGZpcnN0
IGFyZ3VtZW50IGlzIGEgZnVuY3RvciwgdGhlIHJlc3QgYXJlIGNvbnN0cnVjdG9yCisgIC8vIGFy
Z3VtZW50cyBmb3IgYHZhbHVlX3R5cGVgLiBSZXR1cm5zIGBzdGQ6OmZvcndhcmQ8Rj4oZikoaywg
eHMuLi4pYCwgd2hlcmUKKyAgLy8gYGtgIGlzIHRoZSBlbGVtZW50IGtleSwgYW5kIGB4cy4uLmAg
YXJlIHRoZSBuZXcgY29uc3RydWN0b3IgYXJndW1lbnRzIGZvcgorICAvLyBgdmFsdWVfdHlwZWAu
IEl0J3MgYWxsb3dlZCBmb3IgYGtgIHRvIGFsaWFzIGB4cy4uLmAsIGFuZCBmb3IgYm90aCB0byBh
bGlhcworICAvLyBgdHMuLi5gLiBUaGUga2V5IHdvbid0IGJlIHRvdWNoZWQgb25jZSBgeHMuLi5g
IGFyZSB1c2VkIHRvIGNvbnN0cnVjdCBhbgorICAvLyBlbGVtZW50OyBgdHMuLi5gIHdvbid0IGJl
IHRvdWNoZWQgYXQgYWxsLCB3aGljaCBhbGxvd3MgYGFwcGx5KClgIHRvIGNvbnN1bWUKKyAgLy8g
YW55IHJ2YWx1ZXMgYW1vbmcgdGhlbS4KKyAgLy8KKyAgLy8gSWYgYHZhbHVlX3R5cGVgIGlzIGNv
bnN0cnVjdGlibGUgZnJvbSBgVHMmJi4uLmAsIGBQb2xpY3k6OmFwcGx5KClgIG11c3Qgbm90Cisg
IC8vIHRyaWdnZXIgYSBoYXJkIGNvbXBpbGUgZXJyb3IgdW5sZXNzIGl0IG9yaWdpbmF0ZXMgZnJv
bSBgZmAuIEluIG90aGVyIHdvcmRzLAorICAvLyBgUG9saWN5OjphcHBseSgpYCBtdXN0IGJlIFNG
SU5BRS1mcmllbmRseS4gSWYgYHZhbHVlX3R5cGVgIGlzIG5vdAorICAvLyBjb25zdHJ1Y3RpYmxl
IGZyb20gYFRzJiYuLi5gLCBlaXRoZXIgU0ZJTkFFIG9yIGEgaGFyZCBjb21waWxlIGVycm9yIGlz
IE9LLgorICAvLworICAvLyBJZiBgVHMuLi5gIGlzIGBbY3ZdIHZhbHVlX3R5cGVbJl1gIG9yIGBb
Y3ZdIGluaXRfdHlwZVsmXWAsCisgIC8vIGBQb2xpY3k6OmFwcGx5KClgIG11c3Qgd29yay4gQSBj
b21waWxlIGVycm9yIGlzIG5vdCBhbGxvd2VkLCBTRklOQUUgb3Igbm90LgorICB0ZW1wbGF0ZSA8
Y2xhc3MgRiwgY2xhc3MuLi4gVHMsIGNsYXNzIFAgPSBQb2xpY3k+CisgIHN0YXRpYyBhdXRvIGFw
cGx5KEYmJiBmLCBUcyYmLi4uIHRzKQorICAgICAgLT4gZGVjbHR5cGUoUDo6YXBwbHkoc3RkOjpm
b3J3YXJkPEY+KGYpLCBzdGQ6OmZvcndhcmQ8VHM+KHRzKS4uLikpIHsKKyAgICByZXR1cm4gUDo6
YXBwbHkoc3RkOjpmb3J3YXJkPEY+KGYpLCBzdGQ6OmZvcndhcmQ8VHM+KHRzKS4uLik7CisgIH0K
KworICAvLyBSZXR1cm5zIHRoZSAia2V5IiBwb3J0aW9uIG9mIHRoZSBzbG90LgorICAvLyBVc2Vk
IGZvciBub2RlIGhhbmRsZSBtYW5pcHVsYXRpb24uCisgIHRlbXBsYXRlIDxjbGFzcyBQID0gUG9s
aWN5PgorICBzdGF0aWMgYXV0byBrZXkoc2xvdF90eXBlKiBzbG90KQorICAgICAgLT4gZGVjbHR5
cGUoUDo6YXBwbHkoUmV0dXJuS2V5KCksIGVsZW1lbnQoc2xvdCkpKSB7CisgICAgcmV0dXJuIFA6
OmFwcGx5KFJldHVybktleSgpLCBlbGVtZW50KHNsb3QpKTsKKyAgfQorCisgIC8vIFJldHVybnMg
dGhlICJ2YWx1ZSIgKGFzIG9wcG9zZWQgdG8gdGhlICJrZXkiKSBwb3J0aW9uIG9mIHRoZSBlbGVt
ZW50LiBVc2VkCisgIC8vIGJ5IG1hcHMgdG8gaW1wbGVtZW50IGBvcGVyYXRvcltdYCwgYGF0KClg
IGFuZCBgaW5zZXJ0X29yX2Fzc2lnbigpYC4KKyAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFAg
PSBQb2xpY3k+CisgIHN0YXRpYyBhdXRvIHZhbHVlKFQqIGVsZW0pIC0+IGRlY2x0eXBlKFA6OnZh
bHVlKGVsZW0pKSB7CisgICAgcmV0dXJuIFA6OnZhbHVlKGVsZW0pOworICB9CisKKyBwcml2YXRl
OgorICAvLyBVc2UgYXV0byAtPiBkZWNsdHlwZSBhcyBhbiBlbmFibGVyLgorICB0ZW1wbGF0ZSA8
Y2xhc3MgQWxsb2MsIGNsYXNzIFAgPSBQb2xpY3k+CisgIHN0YXRpYyBhdXRvIHRyYW5zZmVyX2lt
cGwoQWxsb2MqIGFsbG9jLCBzbG90X3R5cGUqIG5ld19zbG90LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3RfdHlwZSogb2xkX3Nsb3QsIGludCkKKyAgICAgIC0+IGRlY2x0eXBlKCh2
b2lkKVA6OnRyYW5zZmVyKGFsbG9jLCBuZXdfc2xvdCwgb2xkX3Nsb3QpKSB7CisgICAgUDo6dHJh
bnNmZXIoYWxsb2MsIG5ld19zbG90LCBvbGRfc2xvdCk7CisgIH0KKyAgdGVtcGxhdGUgPGNsYXNz
IEFsbG9jPgorICBzdGF0aWMgdm9pZCB0cmFuc2Zlcl9pbXBsKEFsbG9jKiBhbGxvYywgc2xvdF90
eXBlKiBuZXdfc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG90X3R5cGUqIG9s
ZF9zbG90LCBjaGFyKSB7CisgICAgY29uc3RydWN0KGFsbG9jLCBuZXdfc2xvdCwgc3RkOjptb3Zl
KGVsZW1lbnQob2xkX3Nsb3QpKSk7CisgICAgZGVzdHJveShhbGxvYywgb2xkX3Nsb3QpOworICB9
Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3Bh
Y2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hfUE9MSUNZ
X1RSQUlUU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9s
aWN5X3RyYWl0c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5
X3RyYWl0c190ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyM2YxNTQ4ZTdjYTEzOGVlNWFjYTA5MjQyYWZk
M2JjNGY5NzJiMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
aGFzaF9wb2xpY3lfdHJhaXRzX3Rlc3QuY2MKQEAgLTAsMCArMSwxNDIgQEAKKy8vIENvcHlyaWdo
dCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaCIKKworI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Cisj
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPG5ldz4KKworI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNw
YWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCit1c2luZyA6OnRlc3Rpbmc6
Ok1vY2tGdW5jdGlvbjsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwordXNpbmcgOjp0ZXN0aW5n
OjpSZXR1cm5SZWY7CisKK3VzaW5nIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8aW50PjsKK3VzaW5n
IFNsb3QgPSBpbnQ7CisKK3N0cnVjdCBQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHMgeworICB1c2lu
ZyBzbG90X3R5cGUgPSBTbG90OworICB1c2luZyBrZXlfdHlwZSA9IFNsb3Q7CisgIHVzaW5nIGlu
aXRfdHlwZSA9IFNsb3Q7CisKKyAgc3RhdGljIHN0ZDo6ZnVuY3Rpb248dm9pZCh2b2lkKiwgU2xv
dCosIFNsb3QpPiBjb25zdHJ1Y3Q7CisgIHN0YXRpYyBzdGQ6OmZ1bmN0aW9uPHZvaWQodm9pZCos
IFNsb3QqKT4gZGVzdHJveTsKKworICBzdGF0aWMgc3RkOjpmdW5jdGlvbjxTbG90JihTbG90Kik+
IGVsZW1lbnQ7CisgIHN0YXRpYyBpbnQgYXBwbHkoaW50IHYpIHsgcmV0dXJuIGFwcGx5X2ltcGwo
dik7IH0KKyAgc3RhdGljIHN0ZDo6ZnVuY3Rpb248aW50KGludCk+IGFwcGx5X2ltcGw7CisgIHN0
YXRpYyBzdGQ6OmZ1bmN0aW9uPFNsb3QmKFNsb3QqKT4gdmFsdWU7Cit9OworCitzdGQ6OmZ1bmN0
aW9uPHZvaWQodm9pZCosIFNsb3QqLCBTbG90KT4gUG9saWN5V2l0aG91dE9wdGlvbmFsT3BzOjpj
b25zdHJ1Y3Q7CitzdGQ6OmZ1bmN0aW9uPHZvaWQodm9pZCosIFNsb3QqKT4gUG9saWN5V2l0aG91
dE9wdGlvbmFsT3BzOjpkZXN0cm95OworCitzdGQ6OmZ1bmN0aW9uPFNsb3QmKFNsb3QqKT4gUG9s
aWN5V2l0aG91dE9wdGlvbmFsT3BzOjplbGVtZW50Oworc3RkOjpmdW5jdGlvbjxpbnQoaW50KT4g
UG9saWN5V2l0aG91dE9wdGlvbmFsT3BzOjphcHBseV9pbXBsOworc3RkOjpmdW5jdGlvbjxTbG90
JihTbG90Kik+IFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6dmFsdWU7CisKK3N0cnVjdCBQb2xp
Y3lXaXRoT3B0aW9uYWxPcHMgOiBQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHMgeworICBzdGF0aWMg
c3RkOjpmdW5jdGlvbjx2b2lkKHZvaWQqLCBTbG90KiwgU2xvdCopPiB0cmFuc2ZlcjsKK307CisK
K3N0ZDo6ZnVuY3Rpb248dm9pZCh2b2lkKiwgU2xvdCosIFNsb3QqKT4gUG9saWN5V2l0aE9wdGlv
bmFsT3BzOjp0cmFuc2ZlcjsKKworc3RydWN0IFRlc3QgOiA6OnRlc3Rpbmc6OlRlc3QgeworICBU
ZXN0KCkgeworICAgIFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6Y29uc3RydWN0ID0gWyZdKHZv
aWQqIGExLCBTbG90KiBhMiwgU2xvdCBhMykgeworICAgICAgY29uc3RydWN0LkNhbGwoYTEsIGEy
LCBzdGQ6Om1vdmUoYTMpKTsKKyAgICB9OworICAgIFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6
ZGVzdHJveSA9IFsmXSh2b2lkKiBhMSwgU2xvdCogYTIpIHsKKyAgICAgIGRlc3Ryb3kuQ2FsbChh
MSwgYTIpOworICAgIH07CisKKyAgICBQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHM6OmVsZW1lbnQg
PSBbJl0oU2xvdCogYTEpIC0+IFNsb3QmIHsKKyAgICAgIHJldHVybiBlbGVtZW50LkNhbGwoYTEp
OworICAgIH07CisgICAgUG9saWN5V2l0aG91dE9wdGlvbmFsT3BzOjphcHBseV9pbXBsID0gWyZd
KGludCBhMSkgLT4gaW50IHsKKyAgICAgIHJldHVybiBhcHBseS5DYWxsKGExKTsKKyAgICB9Owor
ICAgIFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6dmFsdWUgPSBbJl0oU2xvdCogYTEpIC0+IFNs
b3QmIHsKKyAgICAgIHJldHVybiB2YWx1ZS5DYWxsKGExKTsKKyAgICB9OworCisgICAgUG9saWN5
V2l0aE9wdGlvbmFsT3BzOjp0cmFuc2ZlciA9IFsmXSh2b2lkKiBhMSwgU2xvdCogYTIsIFNsb3Qq
IGEzKSB7CisgICAgICByZXR1cm4gdHJhbnNmZXIuQ2FsbChhMSwgYTIsIGEzKTsKKyAgICB9Owor
ICB9CisKKyAgc3RkOjphbGxvY2F0b3I8aW50PiBhbGxvYzsKKyAgaW50IGEgPSA1MzsKKworICBN
b2NrRnVuY3Rpb248dm9pZCh2b2lkKiwgU2xvdCosIFNsb3QpPiBjb25zdHJ1Y3Q7CisgIE1vY2tG
dW5jdGlvbjx2b2lkKHZvaWQqLCBTbG90Kik+IGRlc3Ryb3k7CisKKyAgTW9ja0Z1bmN0aW9uPFNs
b3QmKFNsb3QqKT4gZWxlbWVudDsKKyAgTW9ja0Z1bmN0aW9uPGludChpbnQpPiBhcHBseTsKKyAg
TW9ja0Z1bmN0aW9uPFNsb3QmKFNsb3QqKT4gdmFsdWU7CisKKyAgTW9ja0Z1bmN0aW9uPHZvaWQo
dm9pZCosIFNsb3QqLCBTbG90Kik+IHRyYW5zZmVyOworfTsKKworVEVTVF9GKFRlc3QsIGNvbnN0
cnVjdCkgeworICBFWFBFQ1RfQ0FMTChjb25zdHJ1Y3QsIENhbGwoJmFsbG9jLCAmYSwgNTMpKTsK
KyAgaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeVdpdGhvdXRPcHRpb25hbE9wcz46OmNvbnN0cnVj
dCgmYWxsb2MsICZhLCA1Myk7Cit9CisKK1RFU1RfRihUZXN0LCBkZXN0cm95KSB7CisgIEVYUEVD
VF9DQUxMKGRlc3Ryb3ksIENhbGwoJmFsbG9jLCAmYSkpOworICBoYXNoX3BvbGljeV90cmFpdHM8
UG9saWN5V2l0aG91dE9wdGlvbmFsT3BzPjo6ZGVzdHJveSgmYWxsb2MsICZhKTsKK30KKworVEVT
VF9GKFRlc3QsIGVsZW1lbnQpIHsKKyAgaW50IGIgPSAwOworICBFWFBFQ1RfQ0FMTChlbGVtZW50
LCBDYWxsKCZhKSkuV2lsbE9uY2UoUmV0dXJuUmVmKGIpKTsKKyAgRVhQRUNUX0VRKCZiLCAmaGFz
aF9wb2xpY3lfdHJhaXRzPFBvbGljeVdpdGhvdXRPcHRpb25hbE9wcz46OmVsZW1lbnQoJmEpKTsK
K30KKworVEVTVF9GKFRlc3QsIGFwcGx5KSB7CisgIEVYUEVDVF9DQUxMKGFwcGx5LCBDYWxsKDQy
KSkuV2lsbE9uY2UoUmV0dXJuKDEzMzcpKTsKKyAgRVhQRUNUX0VRKDEzMzcsIChoYXNoX3BvbGlj
eV90cmFpdHM8UG9saWN5V2l0aG91dE9wdGlvbmFsT3BzPjo6YXBwbHkoNDIpKSk7Cit9CisKK1RF
U1RfRihUZXN0LCB2YWx1ZSkgeworICBpbnQgYiA9IDA7CisgIEVYUEVDVF9DQUxMKHZhbHVlLCBD
YWxsKCZhKSkuV2lsbE9uY2UoUmV0dXJuUmVmKGIpKTsKKyAgRVhQRUNUX0VRKCZiLCAmaGFzaF9w
b2xpY3lfdHJhaXRzPFBvbGljeVdpdGhvdXRPcHRpb25hbE9wcz46OnZhbHVlKCZhKSk7Cit9CisK
K1RFU1RfRihUZXN0LCB3aXRob3V0X3RyYW5zZmVyKSB7CisgIGludCBiID0gNDI7CisgIEVYUEVD
VF9DQUxMKGVsZW1lbnQsIENhbGwoJmIpKS5XaWxsT25jZSg6OnRlc3Rpbmc6OlJldHVyblJlZihi
KSk7CisgIEVYUEVDVF9DQUxMKGNvbnN0cnVjdCwgQ2FsbCgmYWxsb2MsICZhLCBiKSk7CisgIEVY
UEVDVF9DQUxMKGRlc3Ryb3ksIENhbGwoJmFsbG9jLCAmYikpOworICBoYXNoX3BvbGljeV90cmFp
dHM8UG9saWN5V2l0aG91dE9wdGlvbmFsT3BzPjo6dHJhbnNmZXIoJmFsbG9jLCAmYSwgJmIpOwor
fQorCitURVNUX0YoVGVzdCwgd2l0aF90cmFuc2ZlcikgeworICBpbnQgYiA9IDQyOworICBFWFBF
Q1RfQ0FMTCh0cmFuc2ZlciwgQ2FsbCgmYWxsb2MsICZhLCAmYikpOworICBoYXNoX3BvbGljeV90
cmFpdHM8UG9saWN5V2l0aE9wdGlvbmFsT3BzPjo6dHJhbnNmZXIoJmFsbG9jLCAmYSwgJmIpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwK
K30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvaGFzaHRhYmxlX2RlYnVnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxl
X2RlYnVnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNiZDY1YzljNGVjNTJkNWY0YTc5NmY3NmIxOGRiY2RhNzI5
MmIzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFi
bGVfZGVidWcuaApAQCAtMCwwICsxLDEwOCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLyBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgQVBJcyB0byBkZWJ1ZyB0
aGUgcHJvYmluZyBiZWhhdmlvciBvZiBoYXNoIHRhYmxlcy4KKy8vCisvLyBJbiBnZW5lcmFsLCB0
aGUgcHJvYmluZyBiZWhhdmlvciBpcyBhIGJsYWNrIGJveCBmb3IgdXNlcnMgYW5kIG9ubHkgdGhl
CisvLyBzaWRlIGVmZmVjdHMgY2FuIGJlIG1lYXN1cmVkIGluIHRoZSBmb3JtIG9mIHBlcmZvcm1h
bmNlIGRpZmZlcmVuY2VzLgorLy8gVGhlc2UgQVBJcyBnaXZlIGEgZ2xpbXBzZSBvbiB0aGUgYWN0
dWFsIGJlaGF2aW9yIG9mIHRoZSBwcm9iaW5nIGFsZ29yaXRobXMgaW4KKy8vIHRoZXNlIGhhc2h0
YWJsZXMgZ2l2ZW4gYSBzcGVjaWZpZWQgaGFzaCBmdW5jdGlvbiBhbmQgYSBzZXQgb2YgZWxlbWVu
dHMuCisvLworLy8gVGhlIHByb2JlIGNvdW50IGRpc3RyaWJ1dGlvbiBjYW4gYmUgdXNlZCB0byBh
c3Nlc3MgdGhlIHF1YWxpdHkgb2YgdGhlIGhhc2gKKy8vIGZ1bmN0aW9uIGZvciB0aGF0IHBhcnRp
Y3VsYXIgaGFzaCB0YWJsZS4gTm90ZSB0aGF0IGEgaGFzaCBmdW5jdGlvbiB0aGF0CisvLyBwZXJm
b3JtcyB3ZWxsIGluIG9uZSBoYXNoIHRhYmxlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IG5lY2Vz
c2FyaWx5IHBlcmZvcm1zCisvLyB3ZWxsIGluIGEgZGlmZmVyZW50IG9uZS4KKy8vCisvLyBUaGlz
IGxpYnJhcnkgc3VwcG9ydHMgc3RkOjp1bm9yZGVyZWRfe3NldCxtYXB9LCBkZW5zZV9oYXNoX3tz
ZXQsbWFwfSBhbmQKKy8vIGFic2w6OntmbGF0LG5vZGUsc3RyaW5nfV9oYXNoX3tzZXQsbWFwfS4K
KworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIVEFCTEVfREVCVUdfSF8KKyNk
ZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSFRBQkxFX0RFQlVHX0hfCisKKyNpbmNs
dWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNodGFibGVfZGVidWdfaG9va3MuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNl
IGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKKy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBwcm9iZXMg
cmVxdWlyZWQgdG8gbG9va3VwIGBrZXlgLiAgUmV0dXJucyAwIGZvciBhCisvLyBzZWFyY2ggd2l0
aCBubyBjb2xsaXNpb25zLiAgSGlnaGVyIHZhbHVlcyBtZWFuIG1vcmUgaGFzaCBjb2xsaXNpb25z
IG9jY3VycmVkOworLy8gaG93ZXZlciwgdGhlIGV4YWN0IG1lYW5pbmcgb2YgdGhpcyBudW1iZXIg
dmFyaWVzIGFjY29yZGluZyB0byB0aGUgY29udGFpbmVyCisvLyB0eXBlLgordGVtcGxhdGUgPHR5
cGVuYW1lIEM+CitzaXplX3QgR2V0SGFzaHRhYmxlRGVidWdOdW1Qcm9iZXMoCisgICAgY29uc3Qg
QyYgYywgY29uc3QgdHlwZW5hbWUgQzo6a2V5X3R5cGUmIGtleSkgeworICByZXR1cm4gYWJzbDo6
Y29udGFpbmVyX2ludGVybmFsOjpoYXNodGFibGVfZGVidWdfaW50ZXJuYWw6OgorICAgICAgSGFz
aHRhYmxlRGVidWdBY2Nlc3M8Qz46OkdldE51bVByb2JlcyhjLCBrZXkpOworfQorCisvLyBHZXRz
IGEgaGlzdG9ncmFtIG9mIHRoZSBudW1iZXIgb2YgcHJvYmVzIGZvciBlYWNoIGVsZW1lbnRzIGlu
IHRoZSBjb250YWluZXIuCisvLyBUaGUgc3VtIG9mIGFsbCB0aGUgdmFsdWVzIGluIHRoZSB2ZWN0
b3IgaXMgZXF1YWwgdG8gY29udGFpbmVyLnNpemUoKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDPgor
c3RkOjp2ZWN0b3I8c2l6ZV90PiBHZXRIYXNodGFibGVEZWJ1Z051bVByb2Jlc0hpc3RvZ3JhbShj
b25zdCBDJiBjb250YWluZXIpIHsKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiB2OworICBmb3IgKGF1
dG8gaXQgPSBjb250YWluZXIuYmVnaW4oKTsgaXQgIT0gY29udGFpbmVyLmVuZCgpOyArK2l0KSB7
CisgICAgc2l6ZV90IG51bV9wcm9iZXMgPSBHZXRIYXNodGFibGVEZWJ1Z051bVByb2JlcygKKyAg
ICAgICAgY29udGFpbmVyLAorICAgICAgICBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2h0
YWJsZV9kZWJ1Z19pbnRlcm5hbDo6R2V0S2V5PEM+KCppdCwgMCkpOworICAgIHYucmVzaXplKHN0
ZDo6bWF4KHYuc2l6ZSgpLCBudW1fcHJvYmVzICsgMSkpOworICAgIHZbbnVtX3Byb2Jlc10rKzsK
KyAgfQorICByZXR1cm4gdjsKK30KKworc3RydWN0IEhhc2h0YWJsZURlYnVnUHJvYmVTdW1tYXJ5
IHsKKyAgc2l6ZV90IHRvdGFsX2VsZW1lbnRzOworICBzaXplX3QgdG90YWxfbnVtX3Byb2JlczsK
KyAgZG91YmxlIG1lYW47Cit9OworCisvLyBHZXRzIGEgc3VtbWFyeSBvZiB0aGUgcHJvYmUgY291
bnQgZGlzdHJpYnV0aW9uIGZvciB0aGUgZWxlbWVudHMgaW4gdGhlCisvLyBjb250YWluZXIuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK0hhc2h0YWJsZURlYnVnUHJvYmVTdW1tYXJ5IEdldEhhc2h0
YWJsZURlYnVnUHJvYmVTdW1tYXJ5KGNvbnN0IEMmIGNvbnRhaW5lcikgeworICBhdXRvIHByb2Jl
cyA9IEdldEhhc2h0YWJsZURlYnVnTnVtUHJvYmVzSGlzdG9ncmFtKGNvbnRhaW5lcik7CisgIEhh
c2h0YWJsZURlYnVnUHJvYmVTdW1tYXJ5IHN1bW1hcnkgPSB7fTsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcm9iZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBzdW1tYXJ5LnRvdGFsX2VsZW1lbnRz
ICs9IHByb2Jlc1tpXTsKKyAgICBzdW1tYXJ5LnRvdGFsX251bV9wcm9iZXMgKz0gcHJvYmVzW2ld
ICogaTsKKyAgfQorICBzdW1tYXJ5Lm1lYW4gPSAxLjAgKiBzdW1tYXJ5LnRvdGFsX251bV9wcm9i
ZXMgLyBzdW1tYXJ5LnRvdGFsX2VsZW1lbnRzOworICByZXR1cm4gc3VtbWFyeTsKK30KKworLy8g
UmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVlc3RlZCBmcm9tIHRoZSBhbGxvY2F0b3Ig
YnkgdGhlIGNvbnRhaW5lcgorLy8gYW5kIG5vdCBmcmVlZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBD
Pgorc2l6ZV90IEFsbG9jYXRlZEJ5dGVTaXplKGNvbnN0IEMmIGMpIHsKKyAgcmV0dXJuIGFic2w6
OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaHRhYmxlX2RlYnVnX2ludGVybmFsOjoKKyAgICAgIEhh
c2h0YWJsZURlYnVnQWNjZXNzPEM+OjpBbGxvY2F0ZWRCeXRlU2l6ZShjKTsKK30KKworLy8gUmV0
dXJucyBhIHRpZ2h0IGxvd2VyIGJvdW5kIGZvciBBbGxvY2F0ZWRCeXRlU2l6ZShjKSB3aGVyZSBg
Y2AgaXMgb2YgdHlwZSBgQ2AKKy8vIGFuZCBgYy5zaXplKClgIGlzIGVxdWFsIHRvIGBudW1fZWxl
bWVudHNgLgordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzaXplX3QgTG93ZXJCb3VuZEFsbG9jYXRl
ZEJ5dGVTaXplKHNpemVfdCBudW1fZWxlbWVudHMpIHsKKyAgcmV0dXJuIGFic2w6OmNvbnRhaW5l
cl9pbnRlcm5hbDo6aGFzaHRhYmxlX2RlYnVnX2ludGVybmFsOjoKKyAgICAgIEhhc2h0YWJsZURl
YnVnQWNjZXNzPEM+OjpMb3dlckJvdW5kQWxsb2NhdGVkQnl0ZVNpemUobnVtX2VsZW1lbnRzKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNl
IGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIVEFCTEVfREVC
VUdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVi
dWdfaG9va3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWdfaG9v
a3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZjIxOTcyNmJlZTAxZmU5N2E4ZjEwZTMzMDY0OTQ4NjgwOTRlOTJi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZV9k
ZWJ1Z19ob29rcy5oCkBAIC0wLDAgKzEsODEgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNl
aWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisvLworLy8gUHJvdmlkZXMgdGhlIGludGVybmFsIEFQSSBmb3IgaGFzaHRh
YmxlX2RlYnVnLmguCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSFRBQkxF
X0RFQlVHX0hPT0tTX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hUQUJM
RV9ERUJVR19IT09LU19IXworCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKworI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVz
cGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIGhh
c2h0YWJsZV9kZWJ1Z19pbnRlcm5hbCB7CisKKy8vIElmIGl0IGlzIGEgbWFwLCBjYWxsIGdldDww
PigpLgordXNpbmcgc3RkOjpnZXQ7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0
eXBlbmFtZSBUOjptYXBwZWRfdHlwZT4KK2F1dG8gR2V0S2V5KGNvbnN0IHR5cGVuYW1lIFQ6OnZh
bHVlX3R5cGUmIHBhaXIsIGludCkgLT4gZGVjbHR5cGUoZ2V0PDA+KHBhaXIpKSB7CisgIHJldHVy
biBnZXQ8MD4ocGFpcik7Cit9CisKKy8vIElmIGl0IGlzIG5vdCBhIG1hcCwgcmV0dXJuIHRoZSB2
YWx1ZSBkaXJlY3RseS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgdHlwZW5hbWUgVDo6
a2V5X3R5cGUmIEdldEtleShjb25zdCB0eXBlbmFtZSBUOjprZXlfdHlwZSYga2V5LCBjaGFyKSB7
CisgIHJldHVybiBrZXk7Cit9CisKKy8vIENvbnRhaW5lcnMgc2hvdWxkIHNwZWNpYWxpemUgdGhp
cyB0byBwcm92aWRlIGRlYnVnIGluZm9ybWF0aW9uIGZvciB0aGF0CisvLyBjb250YWluZXIuCit0
ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSBFbmFibGVyID0gdm9pZD4KK3N0cnVj
dCBIYXNodGFibGVEZWJ1Z0FjY2VzcyB7CisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBwcm9i
ZXMgcmVxdWlyZWQgdG8gZmluZCBga2V5YCBpbiBgY2AuICBUaGUgIm51bWJlciBvZgorICAvLyBw
cm9iZXMiIGlzIGEgY29uY2VwdCB0aGF0IGNhbiB2YXJ5IGJ5IGNvbnRhaW5lci4gIEltcGxlbWVu
dGF0aW9ucyBzaG91bGQKKyAgLy8gcmV0dXJuIDAgd2hlbiBga2V5YCB3YXMgZm91bmQgaW4gdGhl
IG1pbmltdW0gbnVtYmVyIG9mIG9wZXJhdGlvbnMgYW5kCisgIC8vIHNob3VsZCBpbmNyZW1lbnQg
dGhlIHJlc3VsdCBmb3IgZWFjaCBub24tdHJpdmlhbCBvcGVyYXRpb24gcmVxdWlyZWQgdG8gZmlu
ZAorICAvLyBga2V5YC4KKyAgLy8KKyAgLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gdXNl
cyB0aGUgYnVja2V0IGFwaSBmcm9tIHRoZSBzdGFuZGFyZCBhbmQgdGh1cworICAvLyB3b3JrcyBm
b3IgYHN0ZDo6dW5vcmRlcmVkXypgIGNvbnRhaW5lcnMuCisgIHN0YXRpYyBzaXplX3QgR2V0TnVt
UHJvYmVzKGNvbnN0IENvbnRhaW5lciYgYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdHlwZW5hbWUgQ29udGFpbmVyOjprZXlfdHlwZSYga2V5KSB7CisgICAgaWYgKCFjLmJ1
Y2tldF9jb3VudCgpKSByZXR1cm4ge307CisgICAgc2l6ZV90IG51bV9wcm9iZXMgPSAwOworICAg
IHNpemVfdCBidWNrZXQgPSBjLmJ1Y2tldChrZXkpOworICAgIGZvciAoYXV0byBpdCA9IGMuYmVn
aW4oYnVja2V0KSwgZSA9IGMuZW5kKGJ1Y2tldCk7OyArK2l0LCArK251bV9wcm9iZXMpIHsKKyAg
ICAgIGlmIChpdCA9PSBlKSByZXR1cm4gbnVtX3Byb2JlczsKKyAgICAgIGlmIChjLmtleV9lcSgp
KGtleSwgR2V0S2V5PENvbnRhaW5lcj4oKml0LCAwKSkpIHJldHVybiBudW1fcHJvYmVzOworICAg
IH0KKyAgfQorCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZXF1ZXN0ZWQgZnJv
bSB0aGUgYWxsb2NhdG9yIGJ5IHRoZSBjb250YWluZXIKKyAgLy8gYW5kIG5vdCBmcmVlZC4KKyAg
Ly8KKyAgLy8gc3RhdGljIHNpemVfdCBBbGxvY2F0ZWRCeXRlU2l6ZShjb25zdCBDb250YWluZXIm
IGMpOworCisgIC8vIFJldHVybnMgYSB0aWdodCBsb3dlciBib3VuZCBmb3IgQWxsb2NhdGVkQnl0
ZVNpemUoYykgd2hlcmUgYGNgIGlzIG9mIHR5cGUKKyAgLy8gYENvbnRhaW5lcmAgYW5kIGBjLnNp
emUoKWAgaXMgZXF1YWwgdG8gYG51bV9lbGVtZW50c2AuCisgIC8vCisgIC8vIHN0YXRpYyBzaXpl
X3QgTG93ZXJCb3VuZEFsbG9jYXRlZEJ5dGVTaXplKHNpemVfdCBudW1fZWxlbWVudHMpOworfTsK
KworfSAgLy8gbmFtZXNwYWNlIGhhc2h0YWJsZV9kZWJ1Z19pbnRlcm5hbAorfSAgLy8gbmFtZXNw
YWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAv
LyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIVEFCTEVfREVCVUdfSE9PS1NfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9sYXlvdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzZjN2Q2N2VlNjhkY2Q1NjZlMTcwOTRk
NDk1OGUzNzQ3NTQ3ZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL2xheW91dC5oCkBAIC0wLDAgKzEsNzMyIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJz
ZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgTU9USVZBVElP
TiBBTkQgVFVUT1JJQUwKKy8vCisvLyBJZiB5b3Ugd2FudCB0byBwdXQgaW4gYSBzaW5nbGUgaGVh
cCBhbGxvY2F0aW9uIE4gZG91YmxlcyBmb2xsb3dlZCBieSBNIGludHMsCisvLyBpdCdzIGVhc3kg
aWYgTiBhbmQgTSBhcmUga25vd24gYXQgY29tcGlsZSB0aW1lLgorLy8KKy8vICAgc3RydWN0IFMg
eworLy8gICAgIGRvdWJsZSBhW05dOworLy8gICAgIGludCBiW01dOworLy8gICB9OworLy8KKy8v
ICAgUyogcCA9IG5ldyBTOworLy8KKy8vIEJ1dCB3aGF0IGlmIE4gYW5kIE0gYXJlIGtub3duIG9u
bHkgaW4gcnVuIHRpbWU/IENsYXNzIHRlbXBsYXRlIExheW91dCB0byB0aGUKKy8vIHJlc2N1ZSEg
SXQncyBhIHBvcnRhYmxlIGdlbmVyYWxpemF0aW9uIG9mIHRoZSB0ZWNobmlxdWUga25vd24gYXMg
c3RydWN0IGhhY2suCisvLworLy8gICAvLyBUaGlzIG9iamVjdCB3aWxsIHRlbGwgdXMgZXZlcnl0
aGluZyB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgdGhlIG1lbW9yeQorLy8gICAvLyBsYXlvdXQgb2Yg
ZG91YmxlW05dIGZvbGxvd2VkIGJ5IGludFtNXS4gSXQncyBzdHJ1Y3R1cmFsbHkgaWRlbnRpY2Fs
IHRvCisvLyAgIC8vIHNpemVfdFsyXSB0aGF0IHN0b3JlcyBOIGFuZCBNLiBJdCdzIHZlcnkgY2hl
YXAgdG8gY3JlYXRlLgorLy8gICBjb25zdCBMYXlvdXQ8ZG91YmxlLCBpbnQ+IGxheW91dChOLCBN
KTsKKy8vCisvLyAgIC8vIEFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIGJvdGggYXJyYXlzLiBg
QWxsb2NTaXplKClgIHRlbGxzIHVzIGhvdyBtdWNoCisvLyAgIC8vIG1lbW9yeSBpcyBuZWVkZWQu
IFdlIGFyZSBmcmVlIHRvIHVzZSBhbnkgYWxsb2NhdGlvbiBmdW5jdGlvbiB3ZSB3YW50IGFzCisv
LyAgIC8vIGxvbmcgYXMgaXQgcmV0dXJucyBhbGlnbmVkIG1lbW9yeS4KKy8vICAgc3RkOjp1bmlx
dWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gcChuZXcgdW5zaWduZWQgY2hhcltsYXlvdXQuQWxsb2NT
aXplKCldKTsKKy8vCisvLyAgIC8vIE9idGFpbiB0aGUgcG9pbnRlciB0byB0aGUgYXJyYXkgb2Yg
ZG91Ymxlcy4KKy8vICAgLy8gRXF1aXZhbGVudCB0byBgcmVpbnRlcnByZXRfY2FzdDxkb3VibGUq
PihwLmdldCgpKWAuCisvLyAgIC8vCisvLyAgIC8vIFdlIGNvdWxkIGhhdmUgd3JpdHRlbiBsYXlv
dXQuUG9pbnRlcjwwPihwKSBpbnN0ZWFkLiBJZiBhbGwgdGhlIHR5cGVzIGFyZQorLy8gICAvLyB1
bmlxdWUgeW91IGNhbiB1c2UgZWl0aGVyIGZvcm0sIGJ1dCBpZiBzb21lIHR5cGVzIGFyZSByZXBl
YXRlZCB5b3UgbXVzdAorLy8gICAvLyB1c2UgdGhlIGluZGV4IGZvcm0uCisvLyAgIGRvdWJsZSog
YSA9IGxheW91dC5Qb2ludGVyPGRvdWJsZT4ocC5nZXQoKSk7CisvLworLy8gICAvLyBPYnRhaW4g
dGhlIHBvaW50ZXIgdG8gdGhlIGFycmF5IG9mIGludHMuCisvLyAgIC8vIEVxdWl2YWxlbnQgdG8g
YHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4ocC5nZXQoKSArIE4gKiA4KWAuCisvLyAgIGludCogYiA9
IGxheW91dC5Qb2ludGVyPGludD4ocCk7CisvLworLy8gSWYgd2UgYXJlIHVuYWJsZSB0byBzcGVj
aWZ5IHNpemVzIG9mIGFsbCBmaWVsZHMsIHdlIGNhbiBwYXNzIGFzIG1hbnkgc2l6ZXMgYXMKKy8v
IHdlIGNhbiB0byBgUGFydGlhbCgpYC4gSW4gcmV0dXJuLCBpdCdsbCBhbGxvdyB1cyB0byBhY2Nl
c3MgdGhlIGZpZWxkcyB3aG9zZQorLy8gbG9jYXRpb25zIGFuZCBzaXplcyBjYW4gYmUgY29tcHV0
ZWQgZnJvbSB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24uCisvLyBgUGFydGlhbCgpYCBjb21lcyBp
biBoYW5keSB3aGVuIHRoZSBhcnJheSBzaXplcyBhcmUgZW1iZWRkZWQgaW50byB0aGUKKy8vIGFs
bG9jYXRpb24uCisvLworLy8gICAvLyBzaXplX3RbMV0gY29udGFpbmluZyBOLCBzaXplX3RbMV0g
Y29udGFpbmluZyBNLCBkb3VibGVbTl0sIGludFtNXS4KKy8vICAgdXNpbmcgTCA9IExheW91dDxz
aXplX3QsIHNpemVfdCwgZG91YmxlLCBpbnQ+OworLy8KKy8vICAgdW5zaWduZWQgY2hhciogQWxs
b2NhdGUoc2l6ZV90IG4sIHNpemVfdCBtKSB7CisvLyAgICAgY29uc3QgTCBsYXlvdXQoMSwgMSwg
biwgbSk7CisvLyAgICAgdW5zaWduZWQgY2hhciogcCA9IG5ldyB1bnNpZ25lZCBjaGFyW2xheW91
dC5BbGxvY1NpemUoKV07CisvLyAgICAgKmxheW91dC5Qb2ludGVyPDA+KHApID0gbjsKKy8vICAg
ICAqbGF5b3V0LlBvaW50ZXI8MT4ocCkgPSBtOworLy8gICAgIHJldHVybiBwOworLy8gICB9Cisv
LworLy8gICB2b2lkIFVzZSh1bnNpZ25lZCBjaGFyKiBwKSB7CisvLyAgICAgLy8gRmlyc3QsIGV4
dHJhY3QgTiBhbmQgTS4KKy8vICAgICAvLyBTcGVjaWZ5IHRoYXQgdGhlIGZpcnN0IGFycmF5IGhh
cyBvbmx5IG9uZSBlbGVtZW50LiBVc2luZyBgcHJlZml4YCB3ZQorLy8gICAgIC8vIGNhbiBhY2Nl
c3MgdGhlIGZpcnN0IHR3byBhcnJheXMgYnV0IG5vdCBtb3JlLgorLy8gICAgIGNvbnN0ZXhwciBh
dXRvIHByZWZpeCA9IEw6OlBhcnRpYWwoMSk7CisvLyAgICAgc2l6ZV90IG4gPSAqcHJlZml4LlBv
aW50ZXI8MD4ocCk7CisvLyAgICAgc2l6ZV90IG0gPSAqcHJlZml4LlBvaW50ZXI8MT4ocCk7Cisv
LworLy8gICAgIC8vIE5vdyB3ZSBjYW4gZ2V0IHBvaW50ZXJzIHRvIHRoZSBwYXlsb2FkLgorLy8g
ICAgIGNvbnN0IEwgbGF5b3V0KDEsIDEsIG4sIG0pOworLy8gICAgIGRvdWJsZSogYSA9IGxheW91
dC5Qb2ludGVyPGRvdWJsZT4ocCk7CisvLyAgICAgaW50KiBiID0gbGF5b3V0LlBvaW50ZXI8aW50
PihwKTsKKy8vICAgfQorLy8KKy8vIFRoZSBsYXlvdXQgd2UgdXNlZCBhYm92ZSBjb21iaW5lcyBm
aXhlZC1zaXplIHdpdGggZHluYW1pY2FsbHktc2l6ZWQgZmllbGRzLgorLy8gVGhpcyBpcyBxdWl0
ZSBjb21tb24uIExheW91dCBpcyBvcHRpbWl6ZWQgZm9yIHRoaXMgdXNlIGNhc2UgYW5kIGdlbmVy
YXRlcworLy8gb3B0aW1hbCBjb2RlLiBBbGwgY29tcHV0YXRpb25zIHRoYXQgY2FuIGJlIHBlcmZv
cm1lZCBhdCBjb21waWxlIHRpbWUgYXJlCisvLyBpbmRlZWQgcGVyZm9ybWVkIGF0IGNvbXBpbGUg
dGltZS4KKy8vCisvLyBFZmZpY2llbmN5IHRpcDogVGhlIG9yZGVyIG9mIGZpZWxkcyBtYXR0ZXJz
LiBJbiBgTGF5b3V0PFQxLCAuLi4sIFROPmAgdHJ5IHRvCisvLyBlbnN1cmUgdGhhdCBgYWxpZ25v
ZihUMSkgPj0gLi4uID49IGFsaWdub2YoVE4pYC4gVGhpcyB3YXkgeW91J2xsIGhhdmUgbm8KKy8v
IHBhZGRpbmcgaW4gYmV0d2VlbiBhcnJheXMuCisvLworLy8gWW91IGNhbiBtYW51YWxseSBvdmVy
cmlkZSB0aGUgYWxpZ25tZW50IG9mIGFuIGFycmF5IGJ5IHdyYXBwaW5nIHRoZSB0eXBlIGluCisv
LyBgQWxpZ25lZDxULCBOPmAuIGBMYXlvdXQ8Li4uLCBBbGlnbmVkPFQsIE4+LCAuLi4+YCBoYXMg
ZXhhY3RseSB0aGUgc2FtZSBBUEkKKy8vIGFuZCBiZWhhdmlvciBhcyBgTGF5b3V0PC4uLiwgVCwg
Li4uPmAgZXhjZXB0IHRoYXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlCisvLyBhcnJheSBvZiBg
VGAgaXMgYWxpZ25lZCB0byBgTmAgKHRoZSByZXN0IG9mIHRoZSBlbGVtZW50cyBmb2xsb3cgd2l0
aG91dAorLy8gcGFkZGluZykuIGBOYCBjYW5ub3QgYmUgbGVzcyB0aGFuIGBhbGlnbm9mKFQpYC4K
Ky8vCisvLyBgQWxsb2NTaXplKClgIGFuZCBgUG9pbnRlcigpYCBhcmUgdGhlIG1vc3QgYmFzaWMg
bWV0aG9kcyBmb3IgZGVhbGluZyB3aXRoCisvLyBtZW1vcnkgbGF5b3V0cy4gQ2hlY2sgb3V0IHRo
ZSByZWZlcmVuY2Ugb3IgY29kZSBiZWxvdyB0byBkaXNjb3ZlciBtb3JlLgorLy8KKy8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVYQU1QTEUKKy8vCisvLyAgIC8vIEltbXV0YWJsZSBtb3Zl
LW9ubHkgc3RyaW5nIHdpdGggc2l6ZW9mIGVxdWFsIHRvIHNpemVvZih2b2lkKikuIFRoZQorLy8g
ICAvLyBzdHJpbmcgc2l6ZSBhbmQgdGhlIGNoYXJhY3RlcnMgYXJlIGtlcHQgaW4gdGhlIHNhbWUg
aGVhcCBhbGxvY2F0aW9uLgorLy8gICBjbGFzcyBDb21wYWN0U3RyaW5nIHsKKy8vICAgIHB1Ymxp
YzoKKy8vICAgICBDb21wYWN0U3RyaW5nKGNvbnN0IGNoYXIqIHMgPSAiIikgeworLy8gICAgICAg
Y29uc3Qgc2l6ZV90IHNpemUgPSBzdHJsZW4ocyk7CisvLyAgICAgICAvLyBzaXplX3RbMV0gZm9s
bG93ZWQgYnkgY2hhcltzaXplICsgMV0uCisvLyAgICAgICBjb25zdCBMIGxheW91dCgxLCBzaXpl
ICsgMSk7CisvLyAgICAgICBwXy5yZXNldChuZXcgdW5zaWduZWQgY2hhcltsYXlvdXQuQWxsb2NT
aXplKCldKTsKKy8vICAgICAgIC8vIElmIHJ1bm5pbmcgdW5kZXIgQVNBTiwgbWFyayB0aGUgcGFk
ZGluZyBieXRlcywgaWYgYW55LCB0byBjYXRjaAorLy8gICAgICAgLy8gbWVtb3J5IGVycm9ycy4K
Ky8vICAgICAgIGxheW91dC5Qb2lzb25QYWRkaW5nKHBfLmdldCgpKTsKKy8vICAgICAgIC8vIFN0
b3JlIHRoZSBzaXplIGluIHRoZSBhbGxvY2F0aW9uLgorLy8gICAgICAgKmxheW91dC5Qb2ludGVy
PHNpemVfdD4ocF8uZ2V0KCkpID0gc2l6ZTsKKy8vICAgICAgIC8vIFN0b3JlIHRoZSBjaGFyYWN0
ZXJzIGluIHRoZSBhbGxvY2F0aW9uLgorLy8gICAgICAgbWVtY3B5KGxheW91dC5Qb2ludGVyPGNo
YXI+KHBfLmdldCgpKSwgcywgc2l6ZSArIDEpOworLy8gICAgIH0KKy8vCisvLyAgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7CisvLyAgICAgICAvLyBFcXVpdmFsZW50IHRvIHJlaW50ZXJwcmV0X2Nh
c3Q8c2l6ZV90Jj4oKnApLgorLy8gICAgICAgcmV0dXJuICpMOjpQYXJ0aWFsKCkuUG9pbnRlcjxz
aXplX3Q+KHBfLmdldCgpKTsKKy8vICAgICB9CisvLworLy8gICAgIGNvbnN0IGNoYXIqIGNfc3Ry
KCkgY29uc3QgeworLy8gICAgICAgLy8gRXF1aXZhbGVudCB0byByZWludGVycHJldF9jYXN0PGNo
YXIqPihwLmdldCgpICsgc2l6ZW9mKHNpemVfdCkpLgorLy8gICAgICAgLy8gVGhlIGFyZ3VtZW50
IGluIFBhcnRpYWwoMSkgc3BlY2lmaWVzIHRoYXQgd2UgaGF2ZSBzaXplX3RbMV0gaW4gZnJvbnQK
Ky8vICAgICAgIC8vIG9mIHRoZSBjaGFyYWN0ZXJzLgorLy8gICAgICAgcmV0dXJuIEw6OlBhcnRp
YWwoMSkuUG9pbnRlcjxjaGFyPihwXy5nZXQoKSk7CisvLyAgICAgfQorLy8KKy8vICAgIHByaXZh
dGU6CisvLyAgICAgLy8gT3VyIGhlYXAgYWxsb2NhdGlvbiBjb250YWlucyBhIHNpemVfdCBmb2xs
b3dlZCBieSBhbiBhcnJheSBvZiBjaGFycy4KKy8vICAgICB1c2luZyBMID0gTGF5b3V0PHNpemVf
dCwgY2hhcj47CisvLyAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gcF87Cisv
LyAgIH07CisvLworLy8gICBpbnQgbWFpbigpIHsKKy8vICAgICBDb21wYWN0U3RyaW5nIHMgPSAi
aGVsbG8iOworLy8gICAgIGFzc2VydChzLnNpemUoKSA9PSA1KTsKKy8vICAgICBhc3NlcnQoc3Ry
Y21wKHMuY19zdHIoKSwgImhlbGxvIikgPT0gMCk7CisvLyAgIH0KKy8vCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBET0NVTUVOVEFUSU9OCisvLworLy8gVGhlIGludGVyZmFjZSBl
eHBvcnRlZCBieSB0aGlzIGZpbGUgY29uc2lzdHMgb2Y6CisvLyAtIGNsYXNzIGBMYXlvdXQ8PmAg
YW5kIGl0cyBwdWJsaWMgbWVtYmVycy4KKy8vIC0gVGhlIHB1YmxpYyBtZW1iZXJzIG9mIGNsYXNz
IGBpbnRlcm5hbF9sYXlvdXQ6OkxheW91dEltcGw8PmAuIFRoYXQgY2xhc3MKKy8vICAgaXNuJ3Qg
aW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSwgYW5kIGl0cyBuYW1lIGFuZCB0ZW1wbGF0ZSBw
YXJhbWV0ZXIKKy8vICAgbGlzdCBhcmUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscywg
YnV0IHRoZSBjbGFzcyBpdHNlbGYgcHJvdmlkZXMKKy8vICAgbW9zdCBvZiB0aGUgZnVuY3Rpb25h
bGl0eSBpbiB0aGlzIGZpbGUuIFNlZSBjb21tZW50cyBvbiBpdHMgbWVtYmVycyBmb3IKKy8vICAg
ZGV0YWlsZWQgZG9jdW1lbnRhdGlvbi4KKy8vCisvLyBgTGF5b3V0PFQxLC4uLiBUbj46OlBhcnRp
YWwoY291bnQxLC4uLiwgY291bnRtKWAgKHdoZXJlIGBtYCA8PSBgbmApIHJldHVybnMgYQorLy8g
YExheW91dEltcGw8PmAgb2JqZWN0LiBgTGF5b3V0PFQxLC4uLiwgVG4+IGxheW91dChjb3VudDEs
Li4uLCBjb3VudG4pYAorLy8gY3JlYXRlcyBhIGBMYXlvdXRgIG9iamVjdCwgd2hpY2ggZXhwb3Nl
cyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGJ5IGluaGVyaXRpbmcKKy8vIGZyb20gYExheW91dElt
cGw8PmAuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfTEFZT1VUX0hfCisjZGVm
aW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0xBWU9VVF9IXworCisjaW5jbHVkZSA8YXNzZXJ0
Lmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8
b3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dHlwZWluZm8+CisjaW5jbHVkZSA8dXRpbGl0eT4KKwor
I2lmZGVmIEFERFJFU1NfU0FOSVRJWkVSCisjaW5jbHVkZSA8c2FuaXRpemVyL2FzYW5faW50ZXJm
YWNlLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorI2lu
Y2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9zcGFu
LmgiCisjaW5jbHVkZSAiYWJzbC91dGlsaXR5L3V0aWxpdHkuaCIKKworI2lmIGRlZmluZWQoX19H
WFhfUlRUSSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9IQVNfQ1hBX0RFTUFOR0xFCisjZW5kaWYK
KworI2lmZGVmIEFCU0xfSU5URVJOQUxfSEFTX0NYQV9ERU1BTkdMRQorI2luY2x1ZGUgPGN4eGFi
aS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50
ZXJuYWwgeworCisvLyBBIHR5cGUgd3JhcHBlciB0aGF0IGluc3RydWN0cyBgTGF5b3V0YCB0byB1
c2UgdGhlIHNwZWNpZmljIGFsaWdubWVudCBmb3IgdGhlCisvLyBhcnJheS4gYExheW91dDwuLi4s
IEFsaWduZWQ8VCwgTj4sIC4uLj5gIGhhcyBleGFjdGx5IHRoZSBzYW1lIEFQSQorLy8gYW5kIGJl
aGF2aW9yIGFzIGBMYXlvdXQ8Li4uLCBULCAuLi4+YCBleGNlcHQgdGhhdCB0aGUgZmlyc3QgZWxl
bWVudCBvZiB0aGUKKy8vIGFycmF5IG9mIGBUYCBpcyBhbGlnbmVkIHRvIGBOYCAodGhlIHJlc3Qg
b2YgdGhlIGVsZW1lbnRzIGZvbGxvdyB3aXRob3V0CisvLyBwYWRkaW5nKS4KKy8vCisvLyBSZXF1
aXJlczogYE4gPj0gYWxpZ25vZihUKWAgYW5kIGBOYCBpcyBhIHBvd2VyIG9mIDIuCit0ZW1wbGF0
ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+CitzdHJ1Y3QgQWxpZ25lZDsKKworbmFtZXNwYWNlIGludGVy
bmFsX2xheW91dCB7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IE5vdEFsaWduZWQge307
CisKK3RlbXBsYXRlIDxjbGFzcyBULCBzaXplX3QgTj4KK3N0cnVjdCBOb3RBbGlnbmVkPGNvbnN0
IEFsaWduZWQ8VCwgTj4+IHsKKyAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gMCwgIkFsaWdu
ZWQ8VCwgTj4gY2Fubm90IGJlIGNvbnN0LXF1YWxpZmllZCIpOworfTsKKwordGVtcGxhdGUgPHNp
emVfdD4KK3VzaW5nIEludFRvU2l6ZSA9IHNpemVfdDsKKwordGVtcGxhdGUgPGNsYXNzPgordXNp
bmcgVHlwZVRvU2l6ZSA9IHNpemVfdDsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgVHlw
ZSA6IE5vdEFsaWduZWQ8VD4geworICB1c2luZyB0eXBlID0gVDsKK307CisKK3RlbXBsYXRlIDxj
bGFzcyBULCBzaXplX3QgTj4KK3N0cnVjdCBUeXBlPEFsaWduZWQ8VCwgTj4+IHsKKyAgdXNpbmcg
dHlwZSA9IFQ7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBTaXplT2YgOiBOb3RB
bGlnbmVkPFQ+LCBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgc2l6ZW9mKFQpPiB7fTsK
KwordGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgorc3RydWN0IFNpemVPZjxBbGlnbmVkPFQs
IE4+PiA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBzaXplb2YoVCk+IHt9OworCit0
ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBBbGlnbk9mIDogTm90QWxpZ25lZDxUPiwgc3RkOjpp
bnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIGFsaWdub2YoVCk+IHt9OworCit0ZW1wbGF0ZSA8Y2xh
c3MgVCwgc2l6ZV90IE4+CitzdHJ1Y3QgQWxpZ25PZjxBbGlnbmVkPFQsIE4+PiA6IHN0ZDo6aW50
ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBOPiB7CisgIHN0YXRpY19hc3NlcnQoTiAlIGFsaWdub2Yo
VCkgPT0gMCwKKyAgICAgICAgICAgICAgICAiQ3VzdG9tIGFsaWdubWVudCBjYW4ndCBiZSBsb3dl
ciB0aGFuIHRoZSB0eXBlJ3MgYWxpZ25tZW50Iik7Cit9OworCisvLyBEb2VzIGBUcy4uLmAgY29u
dGFpbiBgVGA/Cit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MuLi4gVHM+Cit1c2luZyBDb250YWlu
cyA9IGFic2w6OmRpc2p1bmN0aW9uPHN0ZDo6aXNfc2FtZTxULCBUcz4uLi4+OworCit0ZW1wbGF0
ZSA8Y2xhc3MgRnJvbSwgY2xhc3MgVG8+Cit1c2luZyBDb3B5Q29uc3QgPQorICAgIHR5cGVuYW1l
IHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxGcm9tPjo6dmFsdWUsIGNvbnN0IFRvLCBU
bz46OnR5cGU7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgordXNpbmcgU2xpY2VUeXBlID0gYWJzbDo6
U3BhbjxUPjsKKworLy8gVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgbm8gdHlwZXMuIEl0IHByZXZl
bnRzIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGl0IGZyb20KKy8vIGJlaW5nIGZvdW5kIGJ5IEFETC4K
K25hbWVzcGFjZSBhZGxfYmFycmllciB7CisKK3RlbXBsYXRlIDxjbGFzcyBOZWVkbGUsIGNsYXNz
Li4uIFRzPgorY29uc3RleHByIHNpemVfdCBGaW5kKE5lZWRsZSwgTmVlZGxlLCBUcy4uLikgewor
ICBzdGF0aWNfYXNzZXJ0KCFDb250YWluczxOZWVkbGUsIFRzLi4uPigpLCAiRHVwbGljYXRlIGVs
ZW1lbnQgdHlwZSIpOworICByZXR1cm4gMDsKK30KKwordGVtcGxhdGUgPGNsYXNzIE5lZWRsZSwg
Y2xhc3MgVCwgY2xhc3MuLi4gVHM+Citjb25zdGV4cHIgc2l6ZV90IEZpbmQoTmVlZGxlLCBULCBU
cy4uLikgeworICByZXR1cm4gYWRsX2JhcnJpZXI6OkZpbmQoTmVlZGxlKCksIFRzKCkuLi4pICsg
MTsKK30KKworY29uc3RleHByIGJvb2wgSXNQb3cyKHNpemVfdCBuKSB7IHJldHVybiAhKG4gJiAo
biAtIDEpKTsgfQorCisvLyBSZXR1cm5zIGBxICogbWAgZm9yIHRoZSBzbWFsbGVzdCBgcWAgc3Vj
aCB0aGF0IGBxICogbSA+PSBuYC4KKy8vIFJlcXVpcmVzOiBgbWAgaXMgYSBwb3dlciBvZiB0d28u
IEl0J3MgZW5mb3JjZWQgYnkgSXNMZWdhbEVsZW1lbnRUeXBlIGJlbG93LgorY29uc3RleHByIHNp
emVfdCBBbGlnbihzaXplX3Qgbiwgc2l6ZV90IG0pIHsgcmV0dXJuIChuICsgbSAtIDEpICYgfiht
IC0gMSk7IH0KKworY29uc3RleHByIHNpemVfdCBNaW4oc2l6ZV90IGEsIHNpemVfdCBiKSB7IHJl
dHVybiBiIDwgYSA/IGIgOiBhOyB9CisKK2NvbnN0ZXhwciBzaXplX3QgTWF4KHNpemVfdCBhKSB7
IHJldHVybiBhOyB9CisKK3RlbXBsYXRlIDxjbGFzcy4uLiBUcz4KK2NvbnN0ZXhwciBzaXplX3Qg
TWF4KHNpemVfdCBhLCBzaXplX3QgYiwgVHMuLi4gcmVzdCkgeworICByZXR1cm4gYWRsX2JhcnJp
ZXI6Ok1heChiIDwgYSA/IGEgOiBiLCByZXN0Li4uKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+
CitzdGQ6OnN0cmluZyBUeXBlTmFtZSgpIHsKKyAgc3RkOjpzdHJpbmcgb3V0OworICBpbnQgc3Rh
dHVzID0gMDsKKyAgY2hhciogZGVtYW5nbGVkID0gbnVsbHB0cjsKKyNpZmRlZiBBQlNMX0lOVEVS
TkFMX0hBU19DWEFfREVNQU5HTEUKKyAgZGVtYW5nbGVkID0gYWJpOjpfX2N4YV9kZW1hbmdsZSh0
eXBlaWQoVCkubmFtZSgpLCBudWxscHRyLCBudWxscHRyLCAmc3RhdHVzKTsKKyNlbmRpZgorICBp
ZiAoc3RhdHVzID09IDAgJiYgZGVtYW5nbGVkICE9IG51bGxwdHIpIHsgIC8vIERlbWFuZ2xpbmcg
c3VjY2VlZWRlZC4KKyAgICBhYnNsOjpTdHJBcHBlbmQoJm91dCwgIjwiLCBkZW1hbmdsZWQsICI+
Iik7CisgICAgZnJlZShkZW1hbmdsZWQpOworICB9IGVsc2UgeworI2lmIGRlZmluZWQoX19HWFhf
UlRUSSkgfHwgZGVmaW5lZChfQ1BQUlRUSSkKKyAgICBhYnNsOjpTdHJBcHBlbmQoJm91dCwgIjwi
LCB0eXBlaWQoVCkubmFtZSgpLCAiPiIpOworI2VuZGlmCisgIH0KKyAgcmV0dXJuIG91dDsKK30K
KworfSAgLy8gbmFtZXNwYWNlIGFkbF9iYXJyaWVyCisKK3RlbXBsYXRlIDxib29sIEM+Cit1c2lu
ZyBFbmFibGVJZiA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEMsIGludD46OnR5cGU7CisKKy8v
IENhbiBgVGAgYmUgYSB0ZW1wbGF0ZSBhcmd1bWVudCBvZiBgTGF5b3V0YD8KK3RlbXBsYXRlIDxj
bGFzcyBUPgordXNpbmcgSXNMZWdhbEVsZW1lbnRUeXBlID0gc3RkOjppbnRlZ3JhbF9jb25zdGFu
dDwKKyAgICBib29sLCAhc3RkOjppc19yZWZlcmVuY2U8VD46OnZhbHVlICYmICFzdGQ6OmlzX3Zv
bGF0aWxlPFQ+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAhc3RkOjppc19yZWZlcmVuY2U8dHlw
ZW5hbWUgVHlwZTxUPjo6dHlwZT46OnZhbHVlICYmCisgICAgICAgICAgICAgICFzdGQ6OmlzX3Zv
bGF0aWxlPHR5cGVuYW1lIFR5cGU8VD46OnR5cGU+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICBh
ZGxfYmFycmllcjo6SXNQb3cyKEFsaWduT2Y8VD46OnZhbHVlKT47CisKK3RlbXBsYXRlIDxjbGFz
cyBFbGVtZW50cywgY2xhc3MgU2l6ZVNlcSwgY2xhc3MgT2Zmc2V0U2VxPgorY2xhc3MgTGF5b3V0
SW1wbDsKKworLy8gUHVibGljIGJhc2UgY2xhc3Mgb2YgYExheW91dGAgYW5kIHRoZSByZXN1bHQg
dHlwZSBvZiBgTGF5b3V0OjpQYXJ0aWFsKClgLgorLy8KKy8vIGBFbGVtZW50cy4uLmAgY29udGFp
bnMgYWxsIHRlbXBsYXRlIGFyZ3VtZW50cyBvZiBgTGF5b3V0YCB0aGF0IGNyZWF0ZWQgdGhpcwor
Ly8gaW5zdGFuY2UuCisvLworLy8gYFNpemVTZXEuLi5gIGlzIGBbMCwgTnVtU2l6ZXMpYCB3aGVy
ZSBgTnVtU2l6ZXNgIGlzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCisvLyBwYXNzZWQgdG8gYExh
eW91dDo6UGFydGlhbCgpYCBvciBgTGF5b3V0OjpMYXlvdXQoKWAuCisvLworLy8gYE9mZnNldFNl
cS4uLmAgaXMgYFswLCBOdW1PZmZzZXRzKWAgd2hlcmUgYE51bU9mZnNldHNgIGlzCisvLyBgTWlu
KHNpemVvZi4uLihFbGVtZW50cyksIE51bVNpemVzICsgMSlgICh0aGUgbnVtYmVyIG9mIGFycmF5
cyBmb3Igd2hpY2ggd2UKKy8vIGNhbiBjb21wdXRlIG9mZnNldHMpLgordGVtcGxhdGUgPGNsYXNz
Li4uIEVsZW1lbnRzLCBzaXplX3QuLi4gU2l6ZVNlcSwgc2l6ZV90Li4uIE9mZnNldFNlcT4KK2Ns
YXNzIExheW91dEltcGw8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4sIGFic2w6OmluZGV4X3NlcXVl
bmNlPFNpemVTZXEuLi4+LAorICAgICAgICAgICAgICAgICBhYnNsOjppbmRleF9zZXF1ZW5jZTxP
ZmZzZXRTZXEuLi4+PiB7CisgcHJpdmF0ZToKKyAgc3RhdGljX2Fzc2VydChzaXplb2YuLi4oRWxl
bWVudHMpID4gMCwgIkF0IGxlYXN0IG9uZSBmaWVsZCBpcyByZXF1aXJlZCIpOworICBzdGF0aWNf
YXNzZXJ0KGFic2w6OmNvbmp1bmN0aW9uPElzTGVnYWxFbGVtZW50VHlwZTxFbGVtZW50cz4uLi4+
Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiSW52YWxpZCBlbGVtZW50IHR5cGUgKHNlZSBJc0xl
Z2FsRWxlbWVudFR5cGUpIik7CisKKyAgZW51bSB7CisgICAgTnVtVHlwZXMgPSBzaXplb2YuLi4o
RWxlbWVudHMpLAorICAgIE51bVNpemVzID0gc2l6ZW9mLi4uKFNpemVTZXEpLAorICAgIE51bU9m
ZnNldHMgPSBzaXplb2YuLi4oT2Zmc2V0U2VxKSwKKyAgfTsKKworICAvLyBUaGVzZSBhcmUgZ3Vh
cmFudGVlZCBieSBgTGF5b3V0YC4KKyAgc3RhdGljX2Fzc2VydChOdW1PZmZzZXRzID09IGFkbF9i
YXJyaWVyOjpNaW4oTnVtVHlwZXMsIE51bVNpemVzICsgMSksCisgICAgICAgICAgICAgICAgIklu
dGVybmFsIGVycm9yIik7CisgIHN0YXRpY19hc3NlcnQoTnVtVHlwZXMgPiAwLCAiSW50ZXJuYWwg
ZXJyb3IiKTsKKworICAvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiBgVGAgaW4gYEVsZW1lbnRzLi4u
YC4gUmVzdWx0cyBpbiBhIGNvbXBpbGF0aW9uIGVycm9yCisgIC8vIGlmIGBFbGVtZW50cy4uLmAg
ZG9lc24ndCBjb250YWluIGV4YWN0bHkgb25lIGluc3RhbmNlIG9mIGBUYC4KKyAgdGVtcGxhdGUg
PGNsYXNzIFQ+CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IEVsZW1lbnRJbmRleCgpIHsKKyAg
ICBzdGF0aWNfYXNzZXJ0KENvbnRhaW5zPFR5cGU8VD4sIFR5cGU8dHlwZW5hbWUgVHlwZTxFbGVt
ZW50cz46OnR5cGU+Li4uPigpLAorICAgICAgICAgICAgICAgICAgIlR5cGUgbm90IGZvdW5kIik7
CisgICAgcmV0dXJuIGFkbF9iYXJyaWVyOjpGaW5kKFR5cGU8VD4oKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVHlwZTx0eXBlbmFtZSBUeXBlPEVsZW1lbnRzPjo6dHlwZT4oKS4uLik7
CisgIH0KKworICB0ZW1wbGF0ZSA8c2l6ZV90IE4+CisgIHVzaW5nIEVsZW1lbnRBbGlnbm1lbnQg
PQorICAgICAgQWxpZ25PZjx0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8Tiwgc3RkOjp0dXBs
ZTxFbGVtZW50cy4uLj4+Ojp0eXBlPjsKKworIHB1YmxpYzoKKyAgLy8gRWxlbWVudCB0eXBlcyBv
ZiBhbGwgYXJyYXlzIHBhY2tlZCBpbiBhIHR1cGxlLgorICB1c2luZyBFbGVtZW50VHlwZXMgPSBz
dGQ6OnR1cGxlPHR5cGVuYW1lIFR5cGU8RWxlbWVudHM+Ojp0eXBlLi4uPjsKKworICAvLyBFbGVt
ZW50IHR5cGUgb2YgdGhlIE50aCBhcnJheS4KKyAgdGVtcGxhdGUgPHNpemVfdCBOPgorICB1c2lu
ZyBFbGVtZW50VHlwZSA9IHR5cGVuYW1lIHN0ZDo6dHVwbGVfZWxlbWVudDxOLCBFbGVtZW50VHlw
ZXM+Ojp0eXBlOworCisgIGNvbnN0ZXhwciBleHBsaWNpdCBMYXlvdXRJbXBsKEludFRvU2l6ZTxT
aXplU2VxPi4uLiBzaXplcykKKyAgICAgIDogc2l6ZV97c2l6ZXMuLi59IHt9CisKKyAgLy8gQWxp
Z25tZW50IG9mIHRoZSBsYXlvdXQsIGVxdWFsIHRvIHRoZSBzdHJpY3Rlc3QgYWxpZ25tZW50IG9m
IGFsbCBlbGVtZW50cy4KKyAgLy8gQWxsIHBvaW50ZXJzIHBhc3NlZCB0byB0aGUgbWV0aG9kcyBv
ZiBsYXlvdXQgbXVzdCBiZSBhbGlnbmVkIHRvIHRoaXMgdmFsdWUuCisgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IEFsaWdubWVudCgpIHsKKyAgICByZXR1cm4gYWRsX2JhcnJpZXI6Ok1heChBbGln
bk9mPEVsZW1lbnRzPjo6dmFsdWUuLi4pOworICB9CisKKyAgLy8gT2Zmc2V0IGluIGJ5dGVzIG9m
IHRoZSBOdGggYXJyYXkuCisgIC8vCisgIC8vICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRp
bmcsIGRvdWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+IHgoMywgNCk7CisgIC8v
ICAgYXNzZXJ0KHguT2Zmc2V0PDA+KCkgPT0gMCk7ICAgLy8gVGhlIGludHMgc3RhcnRzIGZyb20g
MC4KKyAgLy8gICBhc3NlcnQoeC5PZmZzZXQ8MT4oKSA9PSAxNik7ICAvLyBUaGUgZG91YmxlcyBz
dGFydHMgZnJvbSAxNi4KKyAgLy8KKyAgLy8gUmVxdWlyZXM6IGBOIDw9IE51bVNpemVzICYmIE4g
PCBzaXplb2YuLi4oVHMpYC4KKyAgdGVtcGxhdGUgPHNpemVfdCBOLCBFbmFibGVJZjxOID09IDA+
ID0gMD4KKyAgY29uc3RleHByIHNpemVfdCBPZmZzZXQoKSBjb25zdCB7CisgICAgcmV0dXJuIDA7
CisgIH0KKworICB0ZW1wbGF0ZSA8c2l6ZV90IE4sIEVuYWJsZUlmPE4gIT0gMD4gPSAwPgorICBj
b25zdGV4cHIgc2l6ZV90IE9mZnNldCgpIGNvbnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KE4gPCBO
dW1PZmZzZXRzLCAiSW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAgIHJldHVybiBhZGxfYmFycmll
cjo6QWxpZ24oCisgICAgICAgIE9mZnNldDxOIC0gMT4oKSArIFNpemVPZjxFbGVtZW50VHlwZTxO
IC0gMT4+KCkgKiBzaXplX1tOIC0gMV0sCisgICAgICAgIEVsZW1lbnRBbGlnbm1lbnQ8Tj4oKSk7
CisgIH0KKworICAvLyBPZmZzZXQgaW4gYnl0ZXMgb2YgdGhlIGFycmF5IHdpdGggdGhlIHNwZWNp
ZmllZCBlbGVtZW50IHR5cGUuIFRoZXJlIG11c3QKKyAgLy8gYmUgZXhhY3RseSBvbmUgc3VjaCBh
cnJheSBhbmQgaXRzIHplcm8tYmFzZWQgaW5kZXggbXVzdCBiZSBhdCBtb3N0CisgIC8vIGBOdW1T
aXplc2AuCisgIC8vCisgIC8vICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGRvdWJs
ZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+IHgoMywgNCk7CisgIC8vICAgYXNzZXJ0
KHguT2Zmc2V0PGludD4oKSA9PSAwKTsgICAgICAvLyBUaGUgaW50cyBzdGFydHMgZnJvbSAwLgor
ICAvLyAgIGFzc2VydCh4Lk9mZnNldDxkb3VibGU+KCkgPT0gMTYpOyAgLy8gVGhlIGRvdWJsZXMg
c3RhcnRzIGZyb20gMTYuCisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICBjb25zdGV4cHIgc2l6ZV90
IE9mZnNldCgpIGNvbnN0IHsKKyAgICByZXR1cm4gT2Zmc2V0PEVsZW1lbnRJbmRleDxUPigpPigp
OworICB9CisKKyAgLy8gT2Zmc2V0cyBpbiBieXRlcyBvZiBhbGwgYXJyYXlzIGZvciB3aGljaCB0
aGUgb2Zmc2V0cyBhcmUga25vd24uCisgIGNvbnN0ZXhwciBzdGQ6OmFycmF5PHNpemVfdCwgTnVt
T2Zmc2V0cz4gT2Zmc2V0cygpIGNvbnN0IHsKKyAgICByZXR1cm4ge3tPZmZzZXQ8T2Zmc2V0U2Vx
PigpLi4ufX07CisgIH0KKworICAvLyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBOdGgg
YXJyYXkuIFRoaXMgaXMgdGhlIE50aCBhcmd1bWVudCBvZgorICAvLyBgTGF5b3V0OjpQYXJ0aWFs
KClgIG9yIGBMYXlvdXQ6OkxheW91dCgpYCAoemVyby1iYXNlZCkuCisgIC8vCisgIC8vICAgLy8g
aW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGRvdWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50
LCBkb3VibGU+IHgoMywgNCk7CisgIC8vICAgYXNzZXJ0KHguU2l6ZTwwPigpID09IDMpOworICAv
LyAgIGFzc2VydCh4LlNpemU8MT4oKSA9PSA0KTsKKyAgLy8KKyAgLy8gUmVxdWlyZXM6IGBOIDwg
TnVtU2l6ZXNgLgorICB0ZW1wbGF0ZSA8c2l6ZV90IE4+CisgIGNvbnN0ZXhwciBzaXplX3QgU2l6
ZSgpIGNvbnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KE4gPCBOdW1TaXplcywgIkluZGV4IG91dCBv
ZiBib3VuZHMiKTsKKyAgICByZXR1cm4gc2l6ZV9bTl07CisgIH0KKworICAvLyBUaGUgbnVtYmVy
IG9mIGVsZW1lbnRzIGluIHRoZSBhcnJheSB3aXRoIHRoZSBzcGVjaWZpZWQgZWxlbWVudCB0eXBl
LgorICAvLyBUaGVyZSBtdXN0IGJlIGV4YWN0bHkgb25lIHN1Y2ggYXJyYXkgYW5kIGl0cyB6ZXJv
LWJhc2VkIGluZGV4IG11c3QgYmUKKyAgLy8gYXQgbW9zdCBgTnVtU2l6ZXNgLgorICAvLworICAv
LyAgIC8vIGludFszXSwgNCBieXRlcyBvZiBwYWRkaW5nLCBkb3VibGVbNF0uCisgIC8vICAgTGF5
b3V0PGludCwgZG91YmxlPiB4KDMsIDQpOworICAvLyAgIGFzc2VydCh4LlNpemU8aW50PigpID09
IDMpOworICAvLyAgIGFzc2VydCh4LlNpemU8ZG91YmxlPigpID09IDQpOworICB0ZW1wbGF0ZSA8
Y2xhc3MgVD4KKyAgY29uc3RleHByIHNpemVfdCBTaXplKCkgY29uc3QgeworICAgIHJldHVybiBT
aXplPEVsZW1lbnRJbmRleDxUPigpPigpOworICB9CisKKyAgICAvLyBUaGUgbnVtYmVyIG9mIGVs
ZW1lbnRzIG9mIGFsbCBhcnJheXMgZm9yIHdoaWNoIHRoZXkgYXJlIGtub3duLgorICBjb25zdGV4
cHIgc3RkOjphcnJheTxzaXplX3QsIE51bVNpemVzPiBTaXplcygpIGNvbnN0IHsKKyAgICByZXR1
cm4ge3tTaXplPFNpemVTZXE+KCkuLi59fTsKKyAgfQorCisgIC8vIFBvaW50ZXIgdG8gdGhlIGJl
Z2lubmluZyBvZiB0aGUgTnRoIGFycmF5LgorICAvLworICAvLyBgQ2hhcmAgbXVzdCBiZSBgW2Nv
bnN0XSBbc2lnbmVkfHVuc2lnbmVkXSBjaGFyYC4KKyAgLy8KKyAgLy8gICAvLyBpbnRbM10sIDQg
Ynl0ZXMgb2YgcGFkZGluZywgZG91YmxlWzRdLgorICAvLyAgIExheW91dDxpbnQsIGRvdWJsZT4g
eCgzLCA0KTsKKyAgLy8gICB1bnNpZ25lZCBjaGFyKiBwID0gbmV3IHVuc2lnbmVkIGNoYXJbeC5B
bGxvY1NpemUoKV07CisgIC8vICAgaW50KiBpbnRzID0geC5Qb2ludGVyPDA+KHApOworICAvLyAg
IGRvdWJsZSogZG91YmxlcyA9IHguUG9pbnRlcjwxPihwKTsKKyAgLy8KKyAgLy8gUmVxdWlyZXM6
IGBOIDw9IE51bVNpemVzICYmIE4gPCBzaXplb2YuLi4oVHMpYC4KKyAgLy8gUmVxdWlyZXM6IGBw
YCBpcyBhbGlnbmVkIHRvIGBBbGlnbm1lbnQoKWAuCisgIHRlbXBsYXRlIDxzaXplX3QgTiwgY2xh
c3MgQ2hhcj4KKyAgQ29weUNvbnN0PENoYXIsIEVsZW1lbnRUeXBlPE4+PiogUG9pbnRlcihDaGFy
KiBwKSBjb25zdCB7CisgICAgdXNpbmcgQyA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PENo
YXI+Ojp0eXBlOworICAgIHN0YXRpY19hc3NlcnQoCisgICAgICAgIHN0ZDo6aXNfc2FtZTxDLCBj
aGFyPigpIHx8IHN0ZDo6aXNfc2FtZTxDLCB1bnNpZ25lZCBjaGFyPigpIHx8CisgICAgICAgICAg
ICBzdGQ6OmlzX3NhbWU8Qywgc2lnbmVkIGNoYXI+KCksCisgICAgICAgICJUaGUgYXJndW1lbnQg
bXVzdCBiZSBhIHBvaW50ZXIgdG8gW2NvbnN0XSBbc2lnbmVkfHVuc2lnbmVkXSBjaGFyIik7Cisg
ICAgY29uc3RleHByIHNpemVfdCBhbGlnbm1lbnQgPSBBbGlnbm1lbnQoKTsKKyAgICAodm9pZClh
bGlnbm1lbnQ7CisgICAgYXNzZXJ0KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwKSAlIGFs
aWdubWVudCA9PSAwKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb3B5Q29uc3Q8Q2hh
ciwgRWxlbWVudFR5cGU8Tj4+Kj4ocCArIE9mZnNldDxOPigpKTsKKyAgfQorCisgIC8vIFBvaW50
ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkgd2l0aCB0aGUgc3BlY2lmaWVkIGVsZW1l
bnQgdHlwZS4KKyAgLy8gVGhlcmUgbXVzdCBiZSBleGFjdGx5IG9uZSBzdWNoIGFycmF5IGFuZCBp
dHMgemVyby1iYXNlZCBpbmRleCBtdXN0IGJlIGF0CisgIC8vIG1vc3QgYE51bVNpemVzYC4KKyAg
Ly8KKyAgLy8gYENoYXJgIG11c3QgYmUgYFtjb25zdF0gW3NpZ25lZHx1bnNpZ25lZF0gY2hhcmAu
CisgIC8vCisgIC8vICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGRvdWJsZVs0XS4K
KyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+IHgoMywgNCk7CisgIC8vICAgdW5zaWduZWQgY2hh
ciogcCA9IG5ldyB1bnNpZ25lZCBjaGFyW3guQWxsb2NTaXplKCldOworICAvLyAgIGludCogaW50
cyA9IHguUG9pbnRlcjxpbnQ+KHApOworICAvLyAgIGRvdWJsZSogZG91YmxlcyA9IHguUG9pbnRl
cjxkb3VibGU+KHApOworICAvLworICAvLyBSZXF1aXJlczogYHBgIGlzIGFsaWduZWQgdG8gYEFs
aWdubWVudCgpYC4KKyAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIENoYXI+CisgIENvcHlDb25z
dDxDaGFyLCBUPiogUG9pbnRlcihDaGFyKiBwKSBjb25zdCB7CisgICAgcmV0dXJuIFBvaW50ZXI8
RWxlbWVudEluZGV4PFQ+KCk+KHApOworICB9CisKKyAgLy8gUG9pbnRlcnMgdG8gYWxsIGFycmF5
cyBmb3Igd2hpY2ggcG9pbnRlcnMgYXJlIGtub3duLgorICAvLworICAvLyBgQ2hhcmAgbXVzdCBi
ZSBgW2NvbnN0XSBbc2lnbmVkfHVuc2lnbmVkXSBjaGFyYC4KKyAgLy8KKyAgLy8gICAvLyBpbnRb
M10sIDQgYnl0ZXMgb2YgcGFkZGluZywgZG91YmxlWzRdLgorICAvLyAgIExheW91dDxpbnQsIGRv
dWJsZT4geCgzLCA0KTsKKyAgLy8gICB1bnNpZ25lZCBjaGFyKiBwID0gbmV3IHVuc2lnbmVkIGNo
YXJbeC5BbGxvY1NpemUoKV07CisgIC8vCisgIC8vICAgaW50KiBpbnRzOworICAvLyAgIGRvdWJs
ZSogZG91YmxlczsKKyAgLy8gICBzdGQ6OnRpZShpbnRzLCBkb3VibGVzKSA9IHguUG9pbnRlcnMo
cCk7CisgIC8vCisgIC8vIFJlcXVpcmVzOiBgcGAgaXMgYWxpZ25lZCB0byBgQWxpZ25tZW50KClg
LgorICAvLworICAvLyBOb3RlOiBXZSdyZSBub3QgdXNpbmcgRWxlbWVudFR5cGUgYWxpYXMgaGVy
ZSBiZWNhdXNlIGl0IGRvZXMgbm90IGNvbXBpbGUKKyAgLy8gdW5kZXIgTVNWQy4KKyAgdGVtcGxh
dGUgPGNsYXNzIENoYXI+CisgIHN0ZDo6dHVwbGU8Q29weUNvbnN0PAorICAgICAgQ2hhciwgdHlw
ZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PE9mZnNldFNlcSwgRWxlbWVudFR5cGVzPjo6dHlwZT4q
Li4uPgorICBQb2ludGVycyhDaGFyKiBwKSBjb25zdCB7CisgICAgcmV0dXJuIHN0ZDo6dHVwbGU8
Q29weUNvbnN0PENoYXIsIEVsZW1lbnRUeXBlPE9mZnNldFNlcT4+Ki4uLj4oCisgICAgICAgIFBv
aW50ZXI8T2Zmc2V0U2VxPihwKS4uLik7CisgIH0KKworICAvLyBUaGUgTnRoIGFycmF5LgorICAv
LworICAvLyBgQ2hhcmAgbXVzdCBiZSBgW2NvbnN0XSBbc2lnbmVkfHVuc2lnbmVkXSBjaGFyYC4K
KyAgLy8KKyAgLy8gICAvLyBpbnRbM10sIDQgYnl0ZXMgb2YgcGFkZGluZywgZG91YmxlWzRdLgor
ICAvLyAgIExheW91dDxpbnQsIGRvdWJsZT4geCgzLCA0KTsKKyAgLy8gICB1bnNpZ25lZCBjaGFy
KiBwID0gbmV3IHVuc2lnbmVkIGNoYXJbeC5BbGxvY1NpemUoKV07CisgIC8vICAgU3BhbjxpbnQ+
IGludHMgPSB4LlNsaWNlPDA+KHApOworICAvLyAgIFNwYW48ZG91YmxlPiBkb3VibGVzID0geC5T
bGljZTwxPihwKTsKKyAgLy8KKyAgLy8gUmVxdWlyZXM6IGBOIDwgTnVtU2l6ZXNgLgorICAvLyBS
ZXF1aXJlczogYHBgIGlzIGFsaWduZWQgdG8gYEFsaWdubWVudCgpYC4KKyAgdGVtcGxhdGUgPHNp
emVfdCBOLCBjbGFzcyBDaGFyPgorICBTbGljZVR5cGU8Q29weUNvbnN0PENoYXIsIEVsZW1lbnRU
eXBlPE4+Pj4gU2xpY2UoQ2hhciogcCkgY29uc3QgeworICAgIHJldHVybiBTbGljZVR5cGU8Q29w
eUNvbnN0PENoYXIsIEVsZW1lbnRUeXBlPE4+Pj4oUG9pbnRlcjxOPihwKSwgU2l6ZTxOPigpKTsK
KyAgfQorCisgIC8vIFRoZSBhcnJheSB3aXRoIHRoZSBzcGVjaWZpZWQgZWxlbWVudCB0eXBlLiBU
aGVyZSBtdXN0IGJlIGV4YWN0bHkgb25lCisgIC8vIHN1Y2ggYXJyYXkgYW5kIGl0cyB6ZXJvLWJh
c2VkIGluZGV4IG11c3QgYmUgbGVzcyB0aGFuIGBOdW1TaXplc2AuCisgIC8vCisgIC8vIGBDaGFy
YCBtdXN0IGJlIGBbY29uc3RdIFtzaWduZWR8dW5zaWduZWRdIGNoYXJgLgorICAvLworICAvLyAg
IC8vIGludFszXSwgNCBieXRlcyBvZiBwYWRkaW5nLCBkb3VibGVbNF0uCisgIC8vICAgTGF5b3V0
PGludCwgZG91YmxlPiB4KDMsIDQpOworICAvLyAgIHVuc2lnbmVkIGNoYXIqIHAgPSBuZXcgdW5z
aWduZWQgY2hhclt4LkFsbG9jU2l6ZSgpXTsKKyAgLy8gICBTcGFuPGludD4gaW50cyA9IHguU2xp
Y2U8aW50PihwKTsKKyAgLy8gICBTcGFuPGRvdWJsZT4gZG91YmxlcyA9IHguU2xpY2U8ZG91Ymxl
PihwKTsKKyAgLy8KKyAgLy8gUmVxdWlyZXM6IGBwYCBpcyBhbGlnbmVkIHRvIGBBbGlnbm1lbnQo
KWAuCisgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBDaGFyPgorICBTbGljZVR5cGU8Q29weUNv
bnN0PENoYXIsIFQ+PiBTbGljZShDaGFyKiBwKSBjb25zdCB7CisgICAgcmV0dXJuIFNsaWNlPEVs
ZW1lbnRJbmRleDxUPigpPihwKTsKKyAgfQorCisgIC8vIEFsbCBhcnJheXMgd2l0aCBrbm93biBz
aXplcy4KKyAgLy8KKyAgLy8gYENoYXJgIG11c3QgYmUgYFtjb25zdF0gW3NpZ25lZHx1bnNpZ25l
ZF0gY2hhcmAuCisgIC8vCisgIC8vICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGRv
dWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+IHgoMywgNCk7CisgIC8vICAgdW5z
aWduZWQgY2hhciogcCA9IG5ldyB1bnNpZ25lZCBjaGFyW3guQWxsb2NTaXplKCldOworICAvLwor
ICAvLyAgIFNwYW48aW50PiBpbnRzOworICAvLyAgIFNwYW48ZG91YmxlPiBkb3VibGVzOworICAv
LyAgIHN0ZDo6dGllKGludHMsIGRvdWJsZXMpID0geC5TbGljZXMocCk7CisgIC8vCisgIC8vIFJl
cXVpcmVzOiBgcGAgaXMgYWxpZ25lZCB0byBgQWxpZ25tZW50KClgLgorICAvLworICAvLyBOb3Rl
OiBXZSdyZSBub3QgdXNpbmcgRWxlbWVudFR5cGUgYWxpYXMgaGVyZSBiZWNhdXNlIGl0IGRvZXMg
bm90IGNvbXBpbGUKKyAgLy8gdW5kZXIgTVNWQy4KKyAgdGVtcGxhdGUgPGNsYXNzIENoYXI+Cisg
IHN0ZDo6dHVwbGU8U2xpY2VUeXBlPENvcHlDb25zdDwKKyAgICAgIENoYXIsIHR5cGVuYW1lIHN0
ZDo6dHVwbGVfZWxlbWVudDxTaXplU2VxLCBFbGVtZW50VHlwZXM+Ojp0eXBlPj4uLi4+CisgIFNs
aWNlcyhDaGFyKiBwKSBjb25zdCB7CisgICAgLy8gV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9nY2Mu
Z251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjM4NzUgKGZpeGVkCisgICAgLy8gaW4g
Ni4xKS4KKyAgICAodm9pZClwOworICAgIHJldHVybiBzdGQ6OnR1cGxlPFNsaWNlVHlwZTxDb3B5
Q29uc3Q8Q2hhciwgRWxlbWVudFR5cGU8U2l6ZVNlcT4+Pi4uLj4oCisgICAgICAgIFNsaWNlPFNp
emVTZXE+KHApLi4uKTsKKyAgfQorCisgIC8vIFRoZSBzaXplIG9mIHRoZSBhbGxvY2F0aW9uIHRo
YXQgZml0cyBhbGwgYXJyYXlzLgorICAvLworICAvLyAgIC8vIGludFszXSwgNCBieXRlcyBvZiBw
YWRkaW5nLCBkb3VibGVbNF0uCisgIC8vICAgTGF5b3V0PGludCwgZG91YmxlPiB4KDMsIDQpOwor
ICAvLyAgIHVuc2lnbmVkIGNoYXIqIHAgPSBuZXcgdW5zaWduZWQgY2hhclt4LkFsbG9jU2l6ZSgp
XTsgIC8vIDQ4IGJ5dGVzCisgIC8vCisgIC8vIFJlcXVpcmVzOiBgTnVtU2l6ZXMgPT0gc2l6ZW9m
Li4uKFRzKWAuCisgIGNvbnN0ZXhwciBzaXplX3QgQWxsb2NTaXplKCkgY29uc3QgeworICAgIHN0
YXRpY19hc3NlcnQoTnVtVHlwZXMgPT0gTnVtU2l6ZXMsICJZb3UgbXVzdCBzcGVjaWZ5IHNpemVz
IG9mIGFsbCBmaWVsZHMiKTsKKyAgICByZXR1cm4gT2Zmc2V0PE51bVR5cGVzIC0gMT4oKSArCisg
ICAgICAgICAgIFNpemVPZjxFbGVtZW50VHlwZTxOdW1UeXBlcyAtIDE+PigpICogc2l6ZV9bTnVt
VHlwZXMgLSAxXTsKKyAgfQorCisgIC8vIElmIGJ1aWx0IHdpdGggLS1jb25maWc9YXNhbiwgcG9p
c29ucyBwYWRkaW5nIGJ5dGVzIChpZiBhbnkpIGluIHRoZQorICAvLyBhbGxvY2F0aW9uLiBUaGUg
cG9pbnRlciBtdXN0IHBvaW50IHRvIGEgbWVtb3J5IGJsb2NrIGF0IGxlYXN0CisgIC8vIGBBbGxv
Y1NpemUoKWAgYnl0ZXMgaW4gbGVuZ3RoLgorICAvLworICAvLyBgQ2hhcmAgbXVzdCBiZSBgW2Nv
bnN0XSBbc2lnbmVkfHVuc2lnbmVkXSBjaGFyYC4KKyAgLy8KKyAgLy8gUmVxdWlyZXM6IGBwYCBp
cyBhbGlnbmVkIHRvIGBBbGlnbm1lbnQoKWAuCisgIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBzaXpl
X3QgTiA9IE51bU9mZnNldHMgLSAxLCBFbmFibGVJZjxOID09IDA+ID0gMD4KKyAgdm9pZCBQb2lz
b25QYWRkaW5nKGNvbnN0IENoYXIqIHApIGNvbnN0IHsKKyAgICBQb2ludGVyPDA+KHApOyAgLy8g
dmVyaWZ5IHRoZSByZXF1aXJlbWVudHMgb24gYENoYXJgIGFuZCBgcGAKKyAgfQorCisgIHRlbXBs
YXRlIDxjbGFzcyBDaGFyLCBzaXplX3QgTiA9IE51bU9mZnNldHMgLSAxLCBFbmFibGVJZjxOICE9
IDA+ID0gMD4KKyAgdm9pZCBQb2lzb25QYWRkaW5nKGNvbnN0IENoYXIqIHApIGNvbnN0IHsKKyAg
ICBzdGF0aWNfYXNzZXJ0KE4gPCBOdW1PZmZzZXRzLCAiSW5kZXggb3V0IG9mIGJvdW5kcyIpOwor
ICAgICh2b2lkKXA7CisjaWZkZWYgQUREUkVTU19TQU5JVElaRVIKKyAgICBQb2lzb25QYWRkaW5n
PENoYXIsIE4gLSAxPihwKTsKKyAgICAvLyBUaGUgYGlmYCBpcyBhbiBvcHRpbWl6YXRpb24uIEl0
IGRvZXNuJ3QgYWZmZWN0IHRoZSBvYnNlcnZhYmxlIGJlaGF2aW91ci4KKyAgICBpZiAoRWxlbWVu
dEFsaWdubWVudDxOIC0gMT4oKSAlIEVsZW1lbnRBbGlnbm1lbnQ8Tj4oKSkgeworICAgICAgc2l6
ZV90IHN0YXJ0ID0KKyAgICAgICAgICBPZmZzZXQ8TiAtIDE+KCkgKyBTaXplT2Y8RWxlbWVudFR5
cGU8TiAtIDE+PigpICogc2l6ZV9bTiAtIDFdOworICAgICAgQVNBTl9QT0lTT05fTUVNT1JZX1JF
R0lPTihwICsgc3RhcnQsIE9mZnNldDxOPigpIC0gc3RhcnQpOworICAgIH0KKyNlbmRpZgorICB9
CisKKyAgLy8gSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIG1lbW9yeSBsYXlvdXQu
IFVzZWZ1bCBmb3IgZGVidWdnaW5nLgorICAvLyBTbG93LgorICAvLworICAvLyAgIC8vIGNoYXJb
NV0sIDMgYnl0ZXMgb2YgcGFkZGluZywgaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGZvbGxv
d2VkCisgIC8vICAgLy8gYnkgYW4gdW5rbm93biBudW1iZXIgb2YgZG91Ymxlcy4KKyAgLy8gICBh
dXRvIHggPSBMYXlvdXQ8Y2hhciwgaW50LCBkb3VibGU+OjpQYXJ0aWFsKDUsIDMpOworICAvLyAg
IGFzc2VydCh4LkRlYnVnU3RyaW5nKCkgPT0KKyAgLy8gICAgICAgICAgIkAwPGNoYXI+KDEpWzVd
OyBAODxpbnQ+KDQpWzNdOyBAMjQ8ZG91YmxlPig4KSIpOworICAvLworICAvLyBFYWNoIGZpZWxk
IGlzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OiBAb2Zmc2V0PHR5cGU+KHNpemVvZilbc2l6ZV0g
KDx0eXBlPgorICAvLyBtYXkgYmUgbWlzc2luZyBkZXBlbmRpbmcgb24gdGhlIHRhcmdldCBwbGF0
Zm9ybSkuIEZvciBleGFtcGxlLAorICAvLyBAODxpbnQ+KDQpWzNdIG1lYW5zIHRoYXQgYXQgb2Zm
c2V0IDggd2UgaGF2ZSBhbiBhcnJheSBvZiBpbnRzLCB3aGVyZSBlYWNoCisgIC8vIGludCBpcyA0
IGJ5dGVzLCBhbmQgd2UgaGF2ZSAzIG9mIHRob3NlIGludHMuIFRoZSBzaXplIG9mIHRoZSBsYXN0
IGZpZWxkIG1heQorICAvLyBiZSBtaXNzaW5nIChhcyBpbiB0aGUgZXhhbXBsZSBhYm92ZSkuIE9u
bHkgZmllbGRzIHdpdGgga25vd24gb2Zmc2V0cyBhcmUKKyAgLy8gZGVzY3JpYmVkLiBUeXBlIG5h
bWVzIG1heSBkaWZmZXIgYWNyb3NzIHBsYXRmb3Jtczogb25lIGNvbXBpbGVyIG1pZ2h0CisgIC8v
IHByb2R1Y2UgInVuc2lnbmVkKiIgd2hlcmUgYW5vdGhlciBwcm9kdWNlcyAidW5zaWduZWQgaW50
ICoiLgorICBzdGQ6OnN0cmluZyBEZWJ1Z1N0cmluZygpIGNvbnN0IHsKKyAgICBjb25zdCBhdXRv
IG9mZnNldHMgPSBPZmZzZXRzKCk7CisgICAgY29uc3Qgc2l6ZV90IHNpemVzW10gPSB7U2l6ZU9m
PEVsZW1lbnRUeXBlPE9mZnNldFNlcT4+KCkuLi59OworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHR5
cGVzW10gPSB7YWRsX2JhcnJpZXI6OlR5cGVOYW1lPEVsZW1lbnRUeXBlPE9mZnNldFNlcT4+KCku
Li59OworICAgIHN0ZDo6c3RyaW5nIHJlcyA9IGFic2w6OlN0ckNhdCgiQDAiLCB0eXBlc1swXSwg
IigiLCBzaXplc1swXSwgIikiKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBOdW1PZmZz
ZXRzIC0gMTsgKytpKSB7CisgICAgICBhYnNsOjpTdHJBcHBlbmQoJnJlcywgIlsiLCBzaXplX1tp
XSwgIl07IEAiLCBvZmZzZXRzW2kgKyAxXSwgdHlwZXNbaSArIDFdLAorICAgICAgICAgICAgICAg
ICAgICAgICIoIiwgc2l6ZXNbaSArIDFdLCAiKSIpOworICAgIH0KKyAgICAvLyBOdW1TaXplcyBp
cyBhIGNvbnN0YW50IHRoYXQgbWF5IGJlIHplcm8uIFNvbWUgY29tcGlsZXJzIGNhbm5vdCBzZWUg
dGhhdAorICAgIC8vIGluc2lkZSB0aGUgaWYgc3RhdGVtZW50ICJzaXplX1tOdW1TaXplcyAtIDFd
IiBtdXN0IGJlIHZhbGlkLgorICAgIGludCBsYXN0ID0gc3RhdGljX2Nhc3Q8aW50PihOdW1TaXpl
cykgLSAxOworICAgIGlmIChOdW1UeXBlcyA9PSBOdW1TaXplcyAmJiBsYXN0ID49IDApIHsKKyAg
ICAgIGFic2w6OlN0ckFwcGVuZCgmcmVzLCAiWyIsIHNpemVfW2xhc3RdLCAiXSIpOworICAgIH0K
KyAgICByZXR1cm4gcmVzOworICB9CisKKyBwcml2YXRlOgorICAvLyBBcmd1bWVudHMgb2YgYExh
eW91dDo6UGFydGlhbCgpYCBvciBgTGF5b3V0OjpMYXlvdXQoKWAuCisgIHNpemVfdCBzaXplX1tO
dW1TaXplcyA+IDAgPyBOdW1TaXplcyA6IDFdOworfTsKKwordGVtcGxhdGUgPHNpemVfdCBOdW1T
aXplcywgY2xhc3MuLi4gVHM+Cit1c2luZyBMYXlvdXRUeXBlID0gTGF5b3V0SW1wbDwKKyAgICBz
dGQ6OnR1cGxlPFRzLi4uPiwgYWJzbDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxOdW1TaXplcz4sCisg
ICAgYWJzbDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxhZGxfYmFycmllcjo6TWluKHNpemVvZi4uLihU
cyksIE51bVNpemVzICsgMSk+PjsKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsX2xheW91dAor
CisvLyBEZXNjcmlwdG9yIG9mIGFycmF5cyBvZiB2YXJpb3VzIHR5cGVzIGFuZCBzaXplcyBsYWlk
IG91dCBpbiBtZW1vcnkgb25lIGFmdGVyCisvLyBhbm90aGVyLiBTZWUgdGhlIHRvcCBvZiB0aGUg
ZmlsZSBmb3IgZG9jdW1lbnRhdGlvbi4KKy8vCisvLyBDaGVjayBvdXQgdGhlIHB1YmxpYyBBUEkg
b2YgaW50ZXJuYWxfbGF5b3V0OjpMYXlvdXRJbXBsIGFib3ZlLiBUaGUgdHlwZSBpcworLy8gaW50
ZXJuYWwgdG8gdGhlIGxpYnJhcnkgYnV0IGl0cyBtZXRob2RzIGFyZSBwdWJsaWMsIGFuZCB0aGV5
IGFyZSBpbmhlcml0ZWQKKy8vIGJ5IGBMYXlvdXRgLgordGVtcGxhdGUgPGNsYXNzLi4uIFRzPgor
Y2xhc3MgTGF5b3V0IDogcHVibGljIGludGVybmFsX2xheW91dDo6TGF5b3V0VHlwZTxzaXplb2Yu
Li4oVHMpLCBUcy4uLj4geworIHB1YmxpYzoKKyAgc3RhdGljX2Fzc2VydChzaXplb2YuLi4oVHMp
ID4gMCwgIkF0IGxlYXN0IG9uZSBmaWVsZCBpcyByZXF1aXJlZCIpOworICBzdGF0aWNfYXNzZXJ0
KAorICAgICAgYWJzbDo6Y29uanVuY3Rpb248aW50ZXJuYWxfbGF5b3V0OjpJc0xlZ2FsRWxlbWVu
dFR5cGU8VHM+Li4uPjo6dmFsdWUsCisgICAgICAiSW52YWxpZCBlbGVtZW50IHR5cGUgKHNlZSBJ
c0xlZ2FsRWxlbWVudFR5cGUpIik7CisKKyAgLy8gVGhlIHJlc3VsdCB0eXBlIG9mIGBQYXJ0aWFs
KClgIHdpdGggYE51bVNpemVzYCBhcmd1bWVudHMuCisgIHRlbXBsYXRlIDxzaXplX3QgTnVtU2l6
ZXM+CisgIHVzaW5nIFBhcnRpYWxUeXBlID0gaW50ZXJuYWxfbGF5b3V0OjpMYXlvdXRUeXBlPE51
bVNpemVzLCBUcy4uLj47CisKKyAgLy8gYExheW91dGAga25vd3MgdGhlIGVsZW1lbnQgdHlwZXMg
b2YgdGhlIGFycmF5cyB3ZSB3YW50IHRvIGxheSBvdXQgaW4KKyAgLy8gbWVtb3J5IGJ1dCBub3Qg
dGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBlYWNoIGFycmF5LgorICAvLyBgUGFydGlhbChzaXpl
MSwgLi4uLCBzaXplTilgIGFsbG93cyB1cyB0byBzcGVjaWZ5IHRoZSBsYXR0ZXIuIFRoZQorICAv
LyByZXN1bHRpbmcgaW1tdXRhYmxlIG9iamVjdCBjYW4gYmUgdXNlZCB0byBvYnRhaW4gcG9pbnRl
cnMgdG8gdGhlCisgIC8vIGluZGl2aWR1YWwgYXJyYXlzLgorICAvLworICAvLyBJdCdzIGFsbG93
ZWQgdG8gcGFzcyBmZXdlciBhcnJheSBzaXplcyB0aGFuIHRoZSBudW1iZXIgb2YgYXJyYXlzLiBF
LmcuLAorICAvLyBpZiBhbGwgeW91IG5lZWQgaXMgdG8gdGhlIG9mZnNldCBvZiB0aGUgc2Vjb25k
IGFycmF5LCB5b3Ugb25seSBuZWVkIHRvCisgIC8vIHBhc3Mgb25lIGFyZ3VtZW50IC0tIHRoZSBu
dW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGZpcnN0IGFycmF5cy4KKyAgLy8KKyAgLy8gICAvLyBp
bnRbM10gZm9sbG93ZWQgYnkgNCBieXRlcyBvZiBwYWRkaW5nIGFuZCBhbiB1bmtub3duIG51bWJl
ciBvZgorICAvLyAgIC8vIGRvdWJsZXMuCisgIC8vICAgYXV0byB4ID0gTGF5b3V0PGludCwgZG91
YmxlPjo6UGFydGlhbCgzKTsKKyAgLy8gICAvLyBkb3VibGVzIHN0YXJ0IGF0IGJ5dGUgMTYuCisg
IC8vICAgYXNzZXJ0KHguT2Zmc2V0PDE+KCkgPT0gMTYpOworICAvLworICAvLyBJZiB5b3Uga25v
dyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFsbCBhcnJheXMsIHlvdSBjYW4gc3RpbGwgY2Fs
bAorICAvLyBgUGFydGlhbCgpYCBidXQgaXQncyBtb3JlIGNvbnZlbmllbnQgdG8gdXNlIHRoZSBj
b25zdHJ1Y3RvciBvZiBgTGF5b3V0YC4KKyAgLy8KKyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+
IHgoMywgNSk7CisgIC8vCisgIC8vIE5vdGU6IFRoZSBzaXplcyBvZiB0aGUgYXJyYXlzIG11c3Qg
YmUgc3BlY2lmaWVkIGluIG51bWJlciBvZiBlbGVtZW50cywKKyAgLy8gbm90IGluIGJ5dGVzLgor
ICAvLworICAvLyBSZXF1aXJlczogYHNpemVvZi4uLihTaXplcykgPD0gc2l6ZW9mLi4uKFRzKWAu
CisgIC8vIFJlcXVpcmVzOiBhbGwgYXJndW1lbnRzIGFyZSBjb252ZXJ0aWJsZSB0byBgc2l6ZV90
YC4KKyAgdGVtcGxhdGUgPGNsYXNzLi4uIFNpemVzPgorICBzdGF0aWMgY29uc3RleHByIFBhcnRp
YWxUeXBlPHNpemVvZi4uLihTaXplcyk+IFBhcnRpYWwoU2l6ZXMmJi4uLiBzaXplcykgeworICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mLi4uKFNpemVzKSA8PSBzaXplb2YuLi4oVHMpLCAiIik7Cisg
ICAgcmV0dXJuIFBhcnRpYWxUeXBlPHNpemVvZi4uLihTaXplcyk+KGFic2w6OmZvcndhcmQ8U2l6
ZXM+KHNpemVzKS4uLik7CisgIH0KKworICAvLyBDcmVhdGVzIGEgbGF5b3V0IHdpdGggdGhlIHNp
emVzIG9mIGFsbCBhcnJheXMgc3BlY2lmaWVkLiBJZiB5b3Uga25vdworICAvLyBvbmx5IHRoZSBz
aXplcyBvZiB0aGUgZmlyc3QgTiBhcnJheXMgKHdoZXJlIE4gY2FuIGJlIHplcm8pLCB5b3UgY2Fu
IHVzZQorICAvLyBgUGFydGlhbCgpYCBkZWZpbmVkIGFib3ZlLiBUaGUgY29uc3RydWN0b3IgaXMg
ZXNzZW50aWFsbHkgZXF1aXZhbGVudCB0bworICAvLyBjYWxsaW5nIGBQYXJ0aWFsKClgIGFuZCBw
YXNzaW5nIGluIGFsbCBhcnJheSBzaXplczsgdGhlIGNvbnN0cnVjdG9yIGlzCisgIC8vIHByb3Zp
ZGVkIGFzIGEgY29udmVuaWVudCBhYmJyZXZpYXRpb24uCisgIC8vCisgIC8vIE5vdGU6IFRoZSBz
aXplcyBvZiB0aGUgYXJyYXlzIG11c3QgYmUgc3BlY2lmaWVkIGluIG51bWJlciBvZiBlbGVtZW50
cywKKyAgLy8gbm90IGluIGJ5dGVzLgorICBjb25zdGV4cHIgZXhwbGljaXQgTGF5b3V0KGludGVy
bmFsX2xheW91dDo6VHlwZVRvU2l6ZTxUcz4uLi4gc2l6ZXMpCisgICAgICA6IGludGVybmFsX2xh
eW91dDo6TGF5b3V0VHlwZTxzaXplb2YuLi4oVHMpLCBUcy4uLj4oc2l6ZXMuLi4pIHt9Cit9Owor
Cit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJz
bAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0xBWU9VVF9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dF90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL2xheW91dF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzNTE1N2EzYmQ4NTIx
OTg4Njk0NmZkMDYyNjkxYzU3MDUzYjJlZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvbGF5b3V0X3Rlc3QuY2MKQEAgLTAsMCArMSwxNTUyIEBACisvLyBDb3B5
cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvbGF5b3V0LmgiCisKKy8vIFdlIG5lZWQgOjptYXhfYWxpZ25fdCBiZWNhdXNl
IHNvbWUgbGlic3RkYysrIHZlcnNpb25zIGRvbid0IHByb3ZpZGUKKy8vIHN0ZDo6bWF4X2FsaWdu
X3QKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPG1l
bW9yeT4KKyNpbmNsdWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5j
bHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
ImFic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMv
c3Bhbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
IHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6YWJzbDo6U3BhbjsKK3VzaW5nIDo6dGVzdGluZzo6
RWxlbWVudHNBcmU7CisKK3NpemVfdCBEaXN0YW5jZShjb25zdCB2b2lkKiBmcm9tLCBjb25zdCB2
b2lkKiB0bykgeworICBBQlNMX1JBV19DSEVDSyhmcm9tIDw9IHRvLCAiRGlzdGFuY2UgbXVzdCBi
ZSBub24tbmVnYXRpdmUiKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih0bykg
LSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZnJvbSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBF
eHBlY3RlZCwgY2xhc3MgQWN0dWFsPgorRXhwZWN0ZWQgVHlwZShBY3R1YWwgdmFsKSB7CisgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEV4cGVjdGVkLCBBY3R1YWw+KCksICIiKTsKKyAgcmV0
dXJuIHZhbDsKK30KKwordXNpbmcgSW50MTI4ID0gaW50NjRfdFsyXTsKKworLy8gUHJvcGVydGll
cyBvZiB0eXBlcyB0aGF0IHRoaXMgdGVzdCByZWxpZXMgb24uCitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihpbnQ4X3QpID09IDEsICIiKTsKK3N0YXRpY19hc3NlcnQoYWxpZ25vZihpbnQ4X3QpID09IDEs
ICIiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKGludDE2X3QpID09IDIsICIiKTsKK3N0YXRpY19h
c3NlcnQoYWxpZ25vZihpbnQxNl90KSA9PSAyLCAiIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihp
bnQzMl90KSA9PSA0LCAiIik7CitzdGF0aWNfYXNzZXJ0KGFsaWdub2YoaW50MzJfdCkgPT0gNCwg
IiIpOworc3RhdGljX2Fzc2VydChzaXplb2YoSW50MTI4KSA9PSAxNiwgIiIpOworc3RhdGljX2Fz
c2VydChhbGlnbm9mKEludDEyOCkgPT0gOCwgIiIpOworCit0ZW1wbGF0ZSA8Y2xhc3MgRXhwZWN0
ZWQsIGNsYXNzIEFjdHVhbD4KK3ZvaWQgU2FtZVR5cGUoKSB7CisgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lPEV4cGVjdGVkLCBBY3R1YWw+KCksICIiKTsKK30KKworVEVTVChMYXlvdXQsIEVs
ZW1lbnRUeXBlKSB7CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIFNh
bWVUeXBlPGludDMyX3QsIEw6OkVsZW1lbnRUeXBlPDA+PigpOworICAgIFNhbWVUeXBlPGludDMy
X3QsIGRlY2x0eXBlKEw6OlBhcnRpYWwoKSk6OkVsZW1lbnRUeXBlPDA+PigpOworICAgIFNhbWVU
eXBlPGludDMyX3QsIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCkpOjpFbGVtZW50VHlwZTwwPj4oKTsK
KyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90LCBpbnQzMl90PjsKKyAgICBT
YW1lVHlwZTxpbnQzMl90LCBMOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1lVHlwZTxpbnQz
Ml90LCBMOjpFbGVtZW50VHlwZTwxPj4oKTsKKyAgICBTYW1lVHlwZTxpbnQzMl90LCBkZWNsdHlw
ZShMOjpQYXJ0aWFsKCkpOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1lVHlwZTxpbnQzMl90
LCBkZWNsdHlwZShMOjpQYXJ0aWFsKCkpOjpFbGVtZW50VHlwZTwxPj4oKTsKKyAgICBTYW1lVHlw
ZTxpbnQzMl90LCBkZWNsdHlwZShMOjpQYXJ0aWFsKDApKTo6RWxlbWVudFR5cGU8MD4+KCk7Cisg
ICAgU2FtZVR5cGU8aW50MzJfdCwgZGVjbHR5cGUoTDo6UGFydGlhbCgwKSk6OkVsZW1lbnRUeXBl
PDE+PigpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwg
SW50MTI4PjsKKyAgICBTYW1lVHlwZTxpbnQ4X3QsIEw6OkVsZW1lbnRUeXBlPDA+PigpOworICAg
IFNhbWVUeXBlPGludDMyX3QsIEw6OkVsZW1lbnRUeXBlPDE+PigpOworICAgIFNhbWVUeXBlPElu
dDEyOCwgTDo6RWxlbWVudFR5cGU8Mj4+KCk7CisgICAgU2FtZVR5cGU8aW50OF90LCBkZWNsdHlw
ZShMOjpQYXJ0aWFsKCkpOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1lVHlwZTxpbnQ4X3Qs
IGRlY2x0eXBlKEw6OlBhcnRpYWwoMCkpOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1lVHlw
ZTxpbnQzMl90LCBkZWNsdHlwZShMOjpQYXJ0aWFsKDApKTo6RWxlbWVudFR5cGU8MT4+KCk7Cisg
ICAgU2FtZVR5cGU8aW50OF90LCBkZWNsdHlwZShMOjpQYXJ0aWFsKDAsIDApKTo6RWxlbWVudFR5
cGU8MD4+KCk7CisgICAgU2FtZVR5cGU8aW50MzJfdCwgZGVjbHR5cGUoTDo6UGFydGlhbCgwLCAw
KSk6OkVsZW1lbnRUeXBlPDE+PigpOworICAgIFNhbWVUeXBlPEludDEyOCwgZGVjbHR5cGUoTDo6
UGFydGlhbCgwLCAwKSk6OkVsZW1lbnRUeXBlPDI+PigpOworICAgIFNhbWVUeXBlPGludDhfdCwg
ZGVjbHR5cGUoTDo6UGFydGlhbCgwLCAwLCAwKSk6OkVsZW1lbnRUeXBlPDA+PigpOworICAgIFNh
bWVUeXBlPGludDMyX3QsIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCwgMCwgMCkpOjpFbGVtZW50VHlw
ZTwxPj4oKTsKKyAgICBTYW1lVHlwZTxJbnQxMjgsIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCwgMCwg
MCkpOjpFbGVtZW50VHlwZTwyPj4oKTsKKyAgfQorfQorCitURVNUKExheW91dCwgRWxlbWVudFR5
cGVzKSB7CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIFNhbWVUeXBl
PHN0ZDo6dHVwbGU8aW50MzJfdD4sIEw6OkVsZW1lbnRUeXBlcz4oKTsKKyAgICBTYW1lVHlwZTxz
dGQ6OnR1cGxlPGludDMyX3Q+LCBkZWNsdHlwZShMOjpQYXJ0aWFsKCkpOjpFbGVtZW50VHlwZXM+
KCk7CisgICAgU2FtZVR5cGU8c3RkOjp0dXBsZTxpbnQzMl90PiwgZGVjbHR5cGUoTDo6UGFydGlh
bCgwKSk6OkVsZW1lbnRUeXBlcz4oKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxp
bnQzMl90LCBpbnQzMl90PjsKKyAgICBTYW1lVHlwZTxzdGQ6OnR1cGxlPGludDMyX3QsIGludDMy
X3Q+LCBMOjpFbGVtZW50VHlwZXM+KCk7CisgICAgU2FtZVR5cGU8c3RkOjp0dXBsZTxpbnQzMl90
LCBpbnQzMl90PiwgZGVjbHR5cGUoTDo6UGFydGlhbCgpKTo6RWxlbWVudFR5cGVzPigpOworICAg
IFNhbWVUeXBlPHN0ZDo6dHVwbGU8aW50MzJfdCwgaW50MzJfdD4sIGRlY2x0eXBlKEw6OlBhcnRp
YWwoMCkpOjpFbGVtZW50VHlwZXM+KCk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8
aW50OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIFNhbWVUeXBlPHN0ZDo6dHVwbGU8aW50OF90
LCBpbnQzMl90LCBJbnQxMjg+LCBMOjpFbGVtZW50VHlwZXM+KCk7CisgICAgU2FtZVR5cGU8c3Rk
Ojp0dXBsZTxpbnQ4X3QsIGludDMyX3QsIEludDEyOD4sCisgICAgICAgICAgICAgZGVjbHR5cGUo
TDo6UGFydGlhbCgpKTo6RWxlbWVudFR5cGVzPigpOworICAgIFNhbWVUeXBlPHN0ZDo6dHVwbGU8
aW50OF90LCBpbnQzMl90LCBJbnQxMjg+LAorICAgICAgICAgICAgIGRlY2x0eXBlKEw6OlBhcnRp
YWwoMCkpOjpFbGVtZW50VHlwZXM+KCk7CisgICAgU2FtZVR5cGU8c3RkOjp0dXBsZTxpbnQ4X3Qs
IGludDMyX3QsIEludDEyOD4sCisgICAgICAgICAgICAgZGVjbHR5cGUoTDo6UGFydGlhbCgwLCAw
KSk6OkVsZW1lbnRUeXBlcz4oKTsKKyAgICBTYW1lVHlwZTxzdGQ6OnR1cGxlPGludDhfdCwgaW50
MzJfdCwgSW50MTI4PiwKKyAgICAgICAgICAgICBkZWNsdHlwZShMOjpQYXJ0aWFsKDAsIDAsIDAp
KTo6RWxlbWVudFR5cGVzPigpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBPZmZzZXRCeUluZGV4
KSB7CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgw
LCBMOjpQYXJ0aWFsKCkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFs
KDMpLk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTCgzKS5PZmZzZXQ8MD4oKSk7Cisg
IH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAgRVhQ
RUNUX0VRKDAsIEw6OlBhcnRpYWwoKS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6
OlBhcnRpYWwoMykuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSgxMiwgTDo6UGFydGlhbCgz
KS5PZmZzZXQ8MT4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMywgNSkuT2Zmc2V0
PDA+KCkpOworICAgIEVYUEVDVF9FUSgxMiwgTDo6UGFydGlhbCgzLCA1KS5PZmZzZXQ8MT4oKSk7
CisgICAgRVhQRUNUX0VRKDAsIEwoMywgNSkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSgx
MiwgTCgzLCA1KS5PZmZzZXQ8MT4oKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8
aW50OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKCku
T2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDApLk9mZnNldDwwPigp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5PZmZzZXQ8MT4oKSk7CisgICAgRVhQ
RUNUX0VRKDAsIEw6OlBhcnRpYWwoMSkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSg0LCBM
OjpQYXJ0aWFsKDEpLk9mZnNldDwxPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCg1
KS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEw6OlBhcnRpYWwoNSkuT2Zmc2V0PDE+
KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDApLk9mZnNldDwwPigpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwLCAwKS5PZmZzZXQ8MT4oKSk7CisgICAgRVhQRUNU
X0VRKDAsIEw6OlBhcnRpYWwoMCwgMCkuT2Zmc2V0PDI+KCkpOworICAgIEVYUEVDVF9FUSgwLCBM
OjpQYXJ0aWFsKDEsIDApLk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoNCwgTDo6UGFydGlh
bCgxLCAwKS5PZmZzZXQ8MT4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEw6OlBhcnRpYWwoMSwgMCku
T2Zmc2V0PDI+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDUsIDMpLk9mZnNldDww
PigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCg1LCAzKS5PZmZzZXQ8MT4oKSk7Cisg
ICAgRVhQRUNUX0VRKDI0LCBMOjpQYXJ0aWFsKDUsIDMpLk9mZnNldDwyPigpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgTDo6UGFydGlhbCgwLCAwLCAwKS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VR
KDAsIEw6OlBhcnRpYWwoMCwgMCwgMCkuT2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSgwLCBM
OjpQYXJ0aWFsKDAsIDAsIDApLk9mZnNldDwyPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFy
dGlhbCgxLCAwLCAwKS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDQsIEw6OlBhcnRpYWwo
MSwgMCwgMCkuT2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFsKDEsIDAs
IDApLk9mZnNldDwyPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCg1LCAzLCAxKS5P
ZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDI0LCBMOjpQYXJ0aWFsKDUsIDMsIDEpLk9mZnNl
dDwyPigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCg1LCAzLCAxKS5PZmZzZXQ8MT4o
KSk7CisgICAgRVhQRUNUX0VRKDAsIEwoNSwgMywgMSkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVD
VF9FUSgyNCwgTCg1LCAzLCAxKS5PZmZzZXQ8Mj4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEwoNSwg
MywgMSkuT2Zmc2V0PDE+KCkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBPZmZzZXRCeVR5cGUp
IHsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdD47CisgICAgRVhQRUNUX0VRKDAs
IEw6OlBhcnRpYWwoKS5PZmZzZXQ8aW50MzJfdD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBh
cnRpYWwoMykuT2Zmc2V0PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMKDMpLk9mZnNl
dDxpbnQzMl90PigpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGlu
dDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoKS5PZmZzZXQ8aW50
OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5PZmZzZXQ8aW50OF90Pigp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5PZmZzZXQ8aW50MzJfdD4oKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMSkuT2Zmc2V0PGludDhfdD4oKSk7CisgICAgRVhQ
RUNUX0VRKDQsIEw6OlBhcnRpYWwoMSkuT2Zmc2V0PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9F
USgwLCBMOjpQYXJ0aWFsKDUpLk9mZnNldDxpbnQ4X3Q+KCkpOworICAgIEVYUEVDVF9FUSg4LCBM
OjpQYXJ0aWFsKDUpLk9mZnNldDxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFy
dGlhbCgwLCAwKS5PZmZzZXQ8aW50OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlh
bCgwLCAwKS5PZmZzZXQ8aW50MzJfdD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwo
MCwgMCkuT2Zmc2V0PEludDEyOD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMSwg
MCkuT2Zmc2V0PGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDQsIEw6OlBhcnRpYWwoMSwgMCku
T2Zmc2V0PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFsKDEsIDApLk9m
ZnNldDxJbnQxMjg+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDUsIDMpLk9mZnNl
dDxpbnQ4X3Q+KCkpOworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFsKDUsIDMpLk9mZnNldDxp
bnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoMjQsIEw6OlBhcnRpYWwoNSwgMykuT2Zmc2V0PElu
dDEyOD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCwgMCwgMCkuT2Zmc2V0PGlu
dDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCwgMCwgMCkuT2Zmc2V0PGlu
dDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDAsIDApLk9mZnNldDxJ
bnQxMjg+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDEsIDAsIDApLk9mZnNldDxp
bnQ4X3Q+KCkpOworICAgIEVYUEVDVF9FUSg0LCBMOjpQYXJ0aWFsKDEsIDAsIDApLk9mZnNldDxp
bnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCgxLCAwLCAwKS5PZmZzZXQ8
SW50MTI4PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCg1LCAzLCAxKS5PZmZzZXQ8
aW50OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoMjQsIEw6OlBhcnRpYWwoNSwgMywgMSkuT2Zmc2V0
PEludDEyOD4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEw6OlBhcnRpYWwoNSwgMywgMSkuT2Zmc2V0
PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMKDUsIDMsIDEpLk9mZnNldDxpbnQ4X3Q+
KCkpOworICAgIEVYUEVDVF9FUSgyNCwgTCg1LCAzLCAxKS5PZmZzZXQ8SW50MTI4PigpKTsKKyAg
ICBFWFBFQ1RfRVEoOCwgTCg1LCAzLCAxKS5PZmZzZXQ8aW50MzJfdD4oKSk7CisgIH0KK30KKwor
VEVTVChMYXlvdXQsIE9mZnNldHMpIHsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJf
dD47CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgpLk9mZnNldHMoKSwgRWxlbWVudHNBcmUo
MCkpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoMykuT2Zmc2V0cygpLCBFbGVtZW50c0Fy
ZSgwKSk7CisgICAgRVhQRUNUX1RIQVQoTCgzKS5PZmZzZXRzKCksIEVsZW1lbnRzQXJlKDApKTsK
KyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90LCBpbnQzMl90PjsKKyAgICBF
WFBFQ1RfVEhBVChMOjpQYXJ0aWFsKCkuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgwKSk7CisgICAg
RVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzKS5PZmZzZXRzKCksIEVsZW1lbnRzQXJlKDAsIDEyKSk7
CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzLCA1KS5PZmZzZXRzKCksIEVsZW1lbnRzQXJl
KDAsIDEyKSk7CisgICAgRVhQRUNUX1RIQVQoTCgzLCA1KS5PZmZzZXRzKCksIEVsZW1lbnRzQXJl
KDAsIDEyKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90
LCBJbnQxMjg+OworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoKS5PZmZzZXRzKCksIEVsZW1l
bnRzQXJlKDApKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDEpLk9mZnNldHMoKSwgRWxl
bWVudHNBcmUoMCwgNCkpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoNSkuT2Zmc2V0cygp
LCBFbGVtZW50c0FyZSgwLCA4KSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgwLCAwKS5P
ZmZzZXRzKCksIEVsZW1lbnRzQXJlKDAsIDAsIDApKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0
aWFsKDEsIDApLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCwgNCwgOCkpOworICAgIEVYUEVDVF9U
SEFUKEw6OlBhcnRpYWwoNSwgMykuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgwLCA4LCAyNCkpOwor
ICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoMCwgMCwgMCkuT2Zmc2V0cygpLCBFbGVtZW50c0Fy
ZSgwLCAwLCAwKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgxLCAwLCAwKS5PZmZzZXRz
KCksIEVsZW1lbnRzQXJlKDAsIDQsIDgpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDUs
IDMsIDEpLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCwgOCwgMjQpKTsKKyAgICBFWFBFQ1RfVEhB
VChMKDUsIDMsIDEpLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCwgOCwgMjQpKTsKKyAgfQorfQor
CitURVNUKExheW91dCwgQWxsb2NTaXplKSB7CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGlu
dDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDApLkFsbG9jU2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoMTIsIEw6OlBhcnRpYWwoMykuQWxsb2NTaXplKCkpOworICAgIEVYUEVDVF9F
USgxMiwgTCgzKS5BbGxvY1NpemUoKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8
aW50MzJfdCwgaW50MzJfdD47CisgICAgRVhQRUNUX0VRKDMyLCBMOjpQYXJ0aWFsKDMsIDUpLkFs
bG9jU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzIsIEwoMywgNSkuQWxsb2NTaXplKCkpOworICB9
CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAg
ICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwLCAwLCAwKS5BbGxvY1NpemUoKSk7CisgICAgRVhQ
RUNUX0VRKDgsIEw6OlBhcnRpYWwoMSwgMCwgMCkuQWxsb2NTaXplKCkpOworICAgIEVYUEVDVF9F
USg4LCBMOjpQYXJ0aWFsKDAsIDEsIDApLkFsbG9jU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMTYs
IEw6OlBhcnRpYWwoMCwgMCwgMSkuQWxsb2NTaXplKCkpOworICAgIEVYUEVDVF9FUSgyNCwgTDo6
UGFydGlhbCgxLCAxLCAxKS5BbGxvY1NpemUoKSk7CisgICAgRVhQRUNUX0VRKDEzNiwgTDo6UGFy
dGlhbCgzLCA1LCA3KS5BbGxvY1NpemUoKSk7CisgICAgRVhQRUNUX0VRKDEzNiwgTCgzLCA1LCA3
KS5BbGxvY1NpemUoKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFNpemVCeUluZGV4KSB7Cisg
IHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBMOjpQ
YXJ0aWFsKDApLlNpemU8MD4oKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2l6
ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzKS5TaXplPDA+KCkpOworICB9CisgIHsKKyAg
ICB1c2luZyBMID0gTGF5b3V0PGludDMyX3QsIGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBM
OjpQYXJ0aWFsKDApLlNpemU8MD4oKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMyku
U2l6ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1KS5TaXplPDA+KCkp
OworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNpemU8MT4oKSk7CisgICAgRVhQ
RUNUX0VRKDMsIEwoMywgNSkuU2l6ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTCgzLCA1KS5T
aXplPDE+KCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJf
dCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TaXplPDA+KCkpOwor
ICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUpLlNpemU8MD4oKSk7CisgICAgRVhQRUNU
X0VRKDUsIEw6OlBhcnRpYWwoMywgNSkuU2l6ZTwxPigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6
UGFydGlhbCgzLCA1LCA3KS5TaXplPDA+KCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFs
KDMsIDUsIDcpLlNpemU8MT4oKSk7CisgICAgRVhQRUNUX0VRKDcsIEw6OlBhcnRpYWwoMywgNSwg
NykuU2l6ZTwyPigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzLCA1LCA3KS5TaXplPDA+KCkpOwor
ICAgIEVYUEVDVF9FUSg1LCBMKDMsIDUsIDcpLlNpemU8MT4oKSk7CisgICAgRVhQRUNUX0VRKDcs
IEwoMywgNSwgNykuU2l6ZTwyPigpKTsKKyAgfQorfQorCitURVNUKExheW91dCwgU2l6ZUJ5VHlw
ZSkgeworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEo
MCwgTDo6UGFydGlhbCgwKS5TaXplPGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQ
YXJ0aWFsKDMpLlNpemU8aW50MzJfdD4oKSk7CisgICAgRVhQRUNUX0VRKDMsIEwoMykuU2l6ZTxp
bnQzMl90PigpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMy
X3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2l6ZTxpbnQ4X3Q+
KCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUpLlNpemU8aW50OF90PigpKTsK
KyAgICBFWFBFQ1RfRVEoNSwgTDo6UGFydGlhbCgzLCA1KS5TaXplPGludDMyX3Q+KCkpOworICAg
IEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNpemU8aW50OF90PigpKTsKKyAgICBF
WFBFQ1RfRVEoNSwgTDo6UGFydGlhbCgzLCA1LCA3KS5TaXplPGludDMyX3Q+KCkpOworICAgIEVY
UEVDVF9FUSg3LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNpemU8SW50MTI4PigpKTsKKyAgICBFWFBF
Q1RfRVEoMywgTCgzLCA1LCA3KS5TaXplPGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDUsIEwo
MywgNSwgNykuU2l6ZTxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoNywgTCgzLCA1LCA3KS5T
aXplPEludDEyOD4oKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFNpemVzKSB7CisgIHsKKyAg
ICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwo
KS5TaXplcygpLCBFbGVtZW50c0FyZSgpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDMp
LlNpemVzKCksIEVsZW1lbnRzQXJlKDMpKTsKKyAgICBFWFBFQ1RfVEhBVChMKDMpLlNpemVzKCks
IEVsZW1lbnRzQXJlKDMpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90
LCBpbnQzMl90PjsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKCkuU2l6ZXMoKSwgRWxlbWVu
dHNBcmUoKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzKS5TaXplcygpLCBFbGVtZW50
c0FyZSgzKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzLCA1KS5TaXplcygpLCBFbGVt
ZW50c0FyZSgzLCA1KSk7CisgICAgRVhQRUNUX1RIQVQoTCgzLCA1KS5TaXplcygpLCBFbGVtZW50
c0FyZSgzLCA1KSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQz
Ml90LCBJbnQxMjg+OworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoKS5TaXplcygpLCBFbGVt
ZW50c0FyZSgpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDMpLlNpemVzKCksIEVsZW1l
bnRzQXJlKDMpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDMsIDUpLlNpemVzKCksIEVs
ZW1lbnRzQXJlKDMsIDUpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDMsIDUsIDcpLlNp
emVzKCksIEVsZW1lbnRzQXJlKDMsIDUsIDcpKTsKKyAgICBFWFBFQ1RfVEhBVChMKDMsIDUsIDcp
LlNpemVzKCksIEVsZW1lbnRzQXJlKDMsIDUsIDcpKTsKKyAgfQorfQorCitURVNUKExheW91dCwg
UG9pbnRlckJ5SW5kZXgpIHsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgY29uc3QgdW5zaWduZWQg
Y2hhciBwWzEwMF0gPSB7fTsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdD47Cisg
ICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRp
YWwoKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBl
PGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQ
RUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEwoMykuUG9pbnRlcjww
PihwKSkpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90LCBpbnQzMl90
PjsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6
UGFydGlhbCgpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAs
IFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMykuUG9pbnRlcjwwPihwKSkpKTsKKyAg
ICBFWFBFQ1RfRVEoMTIsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRp
YWwoMykuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAg
RGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgzLCA1KS5Qb2ludGVy
PDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgxMiwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwg
VHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgzLCA1KS5Qb2ludGVyPDE+KHApKSkpOwor
ICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMKDMsIDUp
LlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDEyLCBEaXN0YW5jZShwLCBUeXBlPGNv
bnN0IGludDMyX3QqPihMKDMsIDUpLlBvaW50ZXI8MT4ocCkpKSk7CisgIH0KKyAgeworICAgIHVz
aW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgw
LCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwoKS5Qb2ludGVyPDA+
KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+
KEw6OlBhcnRpYWwoMCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFu
Y2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgwKS5Qb2ludGVyPDE+KHApKSkp
OworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBh
cnRpYWwoMSkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoNCwgRGlzdGFuY2UocCwg
VHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgxKS5Qb2ludGVyPDE+KHApKSkpOworICAg
IEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwo
NSkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxj
b25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCg1KS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVD
VF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6
OlBhcnRpYWwoMCwgMCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAg
ICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgwLCAw
KS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0
YW5jZShwLCBUeXBlPGNvbnN0IEludDEyOCo+KEw6OlBhcnRpYWwoMCwgMCkuUG9pbnRlcjwyPihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxj
b25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDEsIDApLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQ
RUNUX0VRKDQsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+
KEw6OlBhcnRpYWwoMSwgMCkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwKKyAg
ICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPihMOjpQYXJ0aWFsKDEs
IDApLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERp
c3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPDA+
KHApKSkpOworICAgIEVYUEVDVF9FUSg4LAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBl
PGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8MT4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDI0LAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IEludDEy
OCo+KEw6OlBhcnRpYWwoNSwgMykuUG9pbnRlcjwyPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisg
ICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCgwLCAw
LCAwKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFu
Y2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPDE+
KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxjb25z
dCBJbnQxMjgqPihMOjpQYXJ0aWFsKDAsIDAsIDApLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQ
RUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBh
cnRpYWwoMSwgMCwgMCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAg
IDQsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMSwgMCwgMCku
UG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsIERpc3RhbmNlKHAs
IFR5cGU8Y29uc3QgSW50MTI4Kj4oTDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVyPDI+KHApKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4
X3QqPihMOjpQYXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VR
KAorICAgICAgICAyNCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPihM
OjpQYXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAg
ICAgICA4LCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDUsIDMs
IDEpLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8
Y29uc3QgaW50OF90Kj4oTCg1LCAzLCAxKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9F
USgyNCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPihMKDUsIDMsIDEpLlBvaW50ZXI8
Mj4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJf
dCo+KEwoNSwgMywgMSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgfQorfQorCitURVNUKExheW91dCwg
UG9pbnRlckJ5VHlwZSkgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBj
aGFyIHBbMTAwXSA9IHt9OworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAg
ICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQz
Ml90Kj4oTDo6UGFydGlhbCgpLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VR
KDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBh
cnRpYWwoMykuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFu
Y2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTCgzKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOwor
ICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsK
KyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0
aWFsKCkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAg
ICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwoMCkuUG9pbnRl
cjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5j
ZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDApLlBvaW50ZXI8aW50MzJfdD4o
cCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCgxKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDQsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJf
dCo+KEw6OlBhcnRpYWwoMSkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
MCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0
aWFsKDUpLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwKKyAgICAgICAg
ICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCg1KS5Qb2lu
dGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2Uo
cCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8aW50OF90Pihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3Qg
aW50MzJfdCo+KEw6OlBhcnRpYWwoMCwgMCkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBF
WFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50
MTI4Kj4oTDo6UGFydGlhbCgwLCAwKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNU
X0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRp
YWwoMSwgMCkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAg
NCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2lu
dGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwKKyAgICAgICAg
RGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPihMOjpQYXJ0aWFsKDEsIDApLlBvaW50ZXI8
SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5
cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7
CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMy
X3QqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNU
X0VRKAorICAgICAgICAyNCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgq
PihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
CisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6
UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAor
ICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQ
YXJ0aWFsKDAsIDAsIDApLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAs
IERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMOjpQYXJ0aWFsKDAsIDAsIDApLlBvaW50ZXI8SW50MTI4PihwKSkpKTsKKyAg
ICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3Qg
aW50OF90Kj4oTDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKAorICAgICAgICA0LAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGlu
dDMyX3QqPihMOjpQYXJ0aWFsKDEsIDAsIDApLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMOjpQYXJ0aWFsKDEsIDAsIDApLlBvaW50ZXI8SW50MTI4
PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAs
IFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCg1LCAzLCAxKS5Qb2ludGVyPGludDhfdD4o
cCkpKSk7CisgICAgRVhQRUNUX0VRKDI0LCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IEludDEyOCo+
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw6OlBhcnRpYWwoNSwgMywgMSku
UG9pbnRlcjxJbnQxMjg+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwKKyAgICAg
ICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCg1LCAzLCAxKS5Q
b2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgyNCwKKyAgICAgICAgICAgICAg
RGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPihMKDUsIDMsIDEpLlBvaW50ZXI8SW50MTI4
PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90
Kj4oTCg1LCAzLCAxKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICB9Cit9CisKK1RFU1QoTGF5
b3V0LCBNdXRhYmxlUG9pbnRlckJ5SW5kZXgpIHsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgdW5z
aWduZWQgY2hhciBwWzEwMF07CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+Owor
ICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKCku
UG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQz
Ml90Kj4oTDo6UGFydGlhbCgzKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBE
aXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMKDMpLlBvaW50ZXI8MD4ocCkpKSk7CisgIH0KKyAg
eworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAgRVhQRUNUX0VR
KDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoKS5Qb2ludGVyPDA+KHAp
KSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0
aWFsKDMpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDEyLCBEaXN0YW5jZShwLCBU
eXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNU
X0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMywgNSkuUG9pbnRl
cjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMTIsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+
KEw6OlBhcnRpYWwoMywgNSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlz
dGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTCgzLCA1KS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVY
UEVDVF9FUSgxMiwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTCgzLCA1KS5Qb2ludGVyPDE+
KHApKSkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwg
SW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQ
YXJ0aWFsKCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwg
VHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDApLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNU
X0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMCkuUG9pbnRlcjwx
PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQ
YXJ0aWFsKDEpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDQsIERpc3RhbmNlKHAs
IFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDUpLlBvaW50ZXI8
MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6
OlBhcnRpYWwoNSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2Uo
cCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8MD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMCwgMCku
UG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxJbnQx
MjgqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAs
IERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2ludGVyPDA+KHAp
KSkpOworICAgIEVYUEVDVF9FUSg0LCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0
aWFsKDEsIDApLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAs
IFR5cGU8SW50MTI4Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVY
UEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEw6OlBhcnRpYWwoNSwgMykuUG9p
bnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90
Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSgyNCwg
RGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8Mj4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlh
bCgwLCAwLCAwKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShw
LCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDAsIDAsIDApLlBvaW50ZXI8MT4ocCkpKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6UGFydGlhbCgwLCAw
LCAwKS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBl
PGludDhfdCo+KEw6OlBhcnRpYWwoMSwgMCwgMCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBF
Q1RfRVEoNCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgxLCAwLCAwKS5Q
b2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPEludDEy
OCo+KEw6OlBhcnRpYWwoMSwgMCwgMCkuUG9pbnRlcjwyPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8
MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDI0LAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBU
eXBlPEludDEyOCo+KEw6OlBhcnRpYWwoNSwgMywgMSkuUG9pbnRlcjwyPihwKSkpKTsKKyAgICBF
WFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCg1LCAzLCAx
KS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGlu
dDhfdCo+KEwoNSwgMywgMSkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMjQsIERp
c3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTCg1LCAzLCAxKS5Qb2ludGVyPDI+KHApKSkpOworICAg
IEVYUEVDVF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMKDUsIDMsIDEpLlBvaW50
ZXI8MT4ocCkpKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIE11dGFibGVQb2ludGVyQnlUeXBl
KSB7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIHVuc2lnbmVkIGNoYXIgcFsxMDBdOworICB7Cisg
ICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2Uo
cCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgpLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMyku
UG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlw
ZTxpbnQzMl90Kj4oTCgzKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICB9CisgIHsKKyAgICB1
c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEo
MCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKCkuUG9pbnRlcjxpbnQ4X3Q+
KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEw6OlBh
cnRpYWwoMCkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5j
ZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDApLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7
CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgx
KS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDQsIERpc3RhbmNlKHAsIFR5
cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMSkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBF
WFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDUpLlBvaW50
ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxpbnQz
Ml90Kj4oTDo6UGFydGlhbCg1KS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9F
USgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEw6OlBhcnRpYWwoMCwgMCkuUG9pbnRlcjxp
bnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3Qq
PihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VR
KDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6UGFydGlhbCgw
LCAwKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAs
IFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7Cisg
ICAgRVhQRUNUX0VRKDQsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMSwg
MCkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwKKyAgICAgICAgICAg
ICAgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDEsIDApLlBvaW50ZXI8SW50
MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihM
OjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwg
RGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPGludDMy
X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgyNCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwg
VHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8SW50MTI4PihwKSkpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihM
OjpQYXJ0aWFsKDAsIDAsIDApLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
MCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgw
LCAwLCAwKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAg
MCwgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDAsIDAsIDApLlBvaW50ZXI8
SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2Uo
cCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDEsIDAsIDApLlBvaW50ZXI8aW50OF90PihwKSkp
KTsKKyAgICBFWFBFQ1RfRVEoNCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxpbnQz
Ml90Kj4oTDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVY
UEVDVF9FUSgKKyAgICAgICAgOCwgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFs
KDEsIDAsIDApLlBvaW50ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAg
ICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDUsIDMsIDEpLlBv
aW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDI0LCBEaXN0YW5j
ZShwLCBUeXBlPEludDEyOCo+KEw6OlBhcnRpYWwoNSwgMywgMSkuUG9pbnRlcjxJbnQxMjg+KHAp
KSkpOworICAgIEVYUEVDVF9FUSg4LAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGlu
dDMyX3QqPihMOjpQYXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTCg1LCAzLCAxKS5Qb2ludGVy
PGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDI0LCBEaXN0YW5jZShwLCBUeXBlPEludDEy
OCo+KEwoNSwgMywgMSkuUG9pbnRlcjxJbnQxMjg+KHApKSkpOworICAgIEVYUEVDVF9FUSg4LCBE
aXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMKDUsIDMsIDEpLlBvaW50ZXI8aW50MzJfdD4ocCkp
KSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFBvaW50ZXJzKSB7CisgIGFsaWduYXMobWF4X2Fs
aWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgcFsxMDBdID0ge307CisgIHVzaW5nIEwgPSBMYXlv
dXQ8aW50OF90LCBpbnQ4X3QsIEludDEyOD47CisgIHsKKyAgICBjb25zdCBhdXRvIHggPSBMOjpQ
YXJ0aWFsKCk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50ZXI8MD4ocCkp
LAorICAgICAgICAgICAgICBUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50OF90Kj4+KHguUG9pbnRl
cnMocCkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgxKTsKKyAg
ICBFWFBFQ1RfRVEoc3RkOjptYWtlX3R1cGxlKHguUG9pbnRlcjwwPihwKSwgeC5Qb2ludGVyPDE+
KHApKSwKKyAgICAgICAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxjb25zdCBpbnQ4X3QqLCBjb25z
dCBpbnQ4X3QqPj4oeC5Qb2ludGVycyhwKSkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4
ID0gTDo6UGFydGlhbCgxLCAyKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIHN0ZDo6bWFrZV90
dXBsZSh4LlBvaW50ZXI8MD4ocCksIHguUG9pbnRlcjwxPihwKSwgeC5Qb2ludGVyPDI+KHApKSwK
KyAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxjb25zdCBpbnQ4X3QqLCBjb25zdCBpbnQ4X3QqLCBj
b25zdCBJbnQxMjgqPj4oCisgICAgICAgICAgICB4LlBvaW50ZXJzKHApKSkpOworICB9CisgIHsK
KyAgICBjb25zdCBhdXRvIHggPSBMOjpQYXJ0aWFsKDEsIDIsIDMpOworICAgIEVYUEVDVF9FUSgK
KyAgICAgICAgc3RkOjptYWtlX3R1cGxlKHguUG9pbnRlcjwwPihwKSwgeC5Qb2ludGVyPDE+KHAp
LCB4LlBvaW50ZXI8Mj4ocCkpLAorICAgICAgICAoVHlwZTxzdGQ6OnR1cGxlPGNvbnN0IGludDhf
dCosIGNvbnN0IGludDhfdCosIGNvbnN0IEludDEyOCo+PigKKyAgICAgICAgICAgIHguUG9pbnRl
cnMocCkpKSk7CisgIH0KKyAgeworICAgIGNvbnN0IEwgeCgxLCAyLCAzKTsKKyAgICBFWFBFQ1Rf
RVEoCisgICAgICAgIHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50ZXI8MD4ocCksIHguUG9pbnRlcjwx
PihwKSwgeC5Qb2ludGVyPDI+KHApKSwKKyAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxjb25zdCBp
bnQ4X3QqLCBjb25zdCBpbnQ4X3QqLCBjb25zdCBJbnQxMjgqPj4oCisgICAgICAgICAgICB4LlBv
aW50ZXJzKHApKSkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBNdXRhYmxlUG9pbnRlcnMpIHsK
KyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgdW5zaWduZWQgY2hhciBwWzEwMF07CisgIHVzaW5nIEwg
PSBMYXlvdXQ8aW50OF90LCBpbnQ4X3QsIEludDEyOD47CisgIHsKKyAgICBjb25zdCBhdXRvIHgg
PSBMOjpQYXJ0aWFsKCk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50ZXI8
MD4ocCkpLAorICAgICAgICAgICAgICBUeXBlPHN0ZDo6dHVwbGU8aW50OF90Kj4+KHguUG9pbnRl
cnMocCkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgxKTsKKyAg
ICBFWFBFQ1RfRVEoc3RkOjptYWtlX3R1cGxlKHguUG9pbnRlcjwwPihwKSwgeC5Qb2ludGVyPDE+
KHApKSwKKyAgICAgICAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxpbnQ4X3QqLCBpbnQ4X3QqPj4o
eC5Qb2ludGVycyhwKSkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlh
bCgxLCAyKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50
ZXI8MD4ocCksIHguUG9pbnRlcjwxPihwKSwgeC5Qb2ludGVyPDI+KHApKSwKKyAgICAgICAgKFR5
cGU8c3RkOjp0dXBsZTxpbnQ4X3QqLCBpbnQ4X3QqLCBJbnQxMjgqPj4oeC5Qb2ludGVycyhwKSkp
KTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgxLCAyLCAzKTsKKyAg
ICBFWFBFQ1RfRVEoCisgICAgICAgIHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50ZXI8MD4ocCksIHgu
UG9pbnRlcjwxPihwKSwgeC5Qb2ludGVyPDI+KHApKSwKKyAgICAgICAgKFR5cGU8c3RkOjp0dXBs
ZTxpbnQ4X3QqLCBpbnQ4X3QqLCBJbnQxMjgqPj4oeC5Qb2ludGVycyhwKSkpKTsKKyAgfQorICB7
CisgICAgY29uc3QgTCB4KDEsIDIsIDMpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgc3RkOjpt
YWtlX3R1cGxlKHguUG9pbnRlcjwwPihwKSwgeC5Qb2ludGVyPDE+KHApLCB4LlBvaW50ZXI8Mj4o
cCkpLAorICAgICAgICAoVHlwZTxzdGQ6OnR1cGxlPGludDhfdCosIGludDhfdCosIEludDEyOCo+
Pih4LlBvaW50ZXJzKHApKSkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBTbGljZUJ5SW5kZXhT
aXplKSB7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgcFsxMDBd
ID0ge307CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9F
USgwLCBMOjpQYXJ0aWFsKDApLlNsaWNlPDA+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMs
IEw6OlBhcnRpYWwoMykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgz
KS5TbGljZTwwPihwKS5zaXplKCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGlu
dDMyX3QsIGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNsaWNlPDA+
KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8MT4o
cCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTCgzLCA1KS5TbGljZTwxPihwKS5zaXplKCkp
OworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4
PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTwwPihwKS5zaXplKCkpOwor
ICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDA+KHApLnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8MT4ocCkuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1LCA3KS5TbGljZTwwPihwKS5zaXplKCkpOwor
ICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNsaWNlPDE+KHApLnNpemUoKSk7
CisgICAgRVhQRUNUX0VRKDcsIEw6OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8Mj4ocCkuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzLCA1LCA3KS5TbGljZTwwPihwKS5zaXplKCkpOworICAg
IEVYUEVDVF9FUSg1LCBMKDMsIDUsIDcpLlNsaWNlPDE+KHApLnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKDcsIEwoMywgNSwgNykuU2xpY2U8Mj4ocCkuc2l6ZSgpKTsKKyAgfQorfQorCitURVNUKExh
eW91dCwgU2xpY2VCeVR5cGVTaXplKSB7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVu
c2lnbmVkIGNoYXIgcFsxMDBdID0ge307CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMy
X3Q+OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDApLlNsaWNlPGludDMyX3Q+KHApLnNp
emUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8aW50MzJfdD4ocCku
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzKS5TbGljZTxpbnQzMl90PihwKS5zaXplKCkp
OworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4
PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTxpbnQ4X3Q+KHApLnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8aW50OF90PihwKS5z
aXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPGludDMyX3Q+
KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8
aW50OF90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUsIDcp
LlNsaWNlPGludDMyX3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDcsIEw6OlBhcnRpYWwo
MywgNSwgNykuU2xpY2U8SW50MTI4PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzLCBMKDMs
IDUsIDcpLlNsaWNlPGludDhfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTCgzLCA1
LCA3KS5TbGljZTxpbnQzMl90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg3LCBMKDMsIDUs
IDcpLlNsaWNlPEludDEyOD4ocCkuc2l6ZSgpKTsKKyAgfQorfQorCitURVNUKExheW91dCwgTXV0
YWJsZVNsaWNlQnlJbmRleFNpemUpIHsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgdW5zaWduZWQg
Y2hhciBwWzEwMF07CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVY
UEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDApLlNsaWNlPDA+KHApLnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
MywgTCgzKS5TbGljZTwwPihwKS5zaXplKCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5
b3V0PGludDMyX3QsIGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNs
aWNlPDA+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSkuU2xp
Y2U8MT4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTCgzLCA1KS5TbGljZTwxPihwKS5z
aXplKCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwg
SW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTwwPihwKS5zaXpl
KCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDA+KHApLnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8MT4ocCkuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1LCA3KS5TbGljZTwwPihwKS5zaXpl
KCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNsaWNlPDE+KHApLnNp
emUoKSk7CisgICAgRVhQRUNUX0VRKDcsIEw6OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8Mj4ocCku
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzLCA1LCA3KS5TbGljZTwwPihwKS5zaXplKCkp
OworICAgIEVYUEVDVF9FUSg1LCBMKDMsIDUsIDcpLlNsaWNlPDE+KHApLnNpemUoKSk7CisgICAg
RVhQRUNUX0VRKDcsIEwoMywgNSwgNykuU2xpY2U8Mj4ocCkuc2l6ZSgpKTsKKyAgfQorfQorCitU
RVNUKExheW91dCwgTXV0YWJsZVNsaWNlQnlUeXBlU2l6ZSkgeworICBhbGlnbmFzKG1heF9hbGln
bl90KSB1bnNpZ25lZCBjaGFyIHBbMTAwXTsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50
MzJfdD47CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCkuU2xpY2U8aW50MzJfdD4ocCku
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTxpbnQzMl90Pihw
KS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzLCBMKDMpLlNsaWNlPGludDMyX3Q+KHApLnNpemUo
KSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBJbnQx
Mjg+OworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNsaWNlPGludDhfdD4ocCkuc2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1KS5TbGljZTxpbnQ4X3Q+KHAp
LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8aW50MzJf
dD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzLCA1LCA3KS5TbGlj
ZTxpbnQ4X3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBhcnRpYWwoMywgNSwg
NykuU2xpY2U8aW50MzJfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNywgTDo6UGFydGlh
bCgzLCA1LCA3KS5TbGljZTxJbnQxMjg+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEwo
MywgNSwgNykuU2xpY2U8aW50OF90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBMKDMs
IDUsIDcpLlNsaWNlPGludDMyX3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDcsIEwoMywg
NSwgNykuU2xpY2U8SW50MTI4PihwKS5zaXplKCkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBT
bGljZUJ5SW5kZXhEYXRhKSB7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVk
IGNoYXIgcFsxMDBdID0ge307CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+Owor
ICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFu
PGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDApLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAg
ICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxj
b25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgzKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAg
RVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTCgzKS5T
bGljZTwwPihwKSkuZGF0YSgpKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50
MzJfdCwgaW50MzJfdD47CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0
YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMykuU2xpY2U8MD4o
cCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFu
Y2UocCwKKyAgICAgICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0
aWFsKDMsIDUpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAg
IDEyLAorICAgICAgICBEaXN0YW5jZShwLAorICAgICAgICAgICAgICAgICBUeXBlPFNwYW48Y29u
c3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOworICAg
IEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3Qg
aW50MzJfdD4+KEwoMywgNSkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgx
MiwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihM
KDMsIDUpLlNsaWNlPDE+KHApKS5kYXRhKCkpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExh
eW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKAorICAgICAgICAw
LAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlh
bCgwKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAor
ICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCgx
KS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAg
ICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCg1KS5T
bGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5j
ZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFs
KDAsIDApLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAs
CisgICAgICAgIERpc3RhbmNlKHAsCisgICAgICAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBp
bnQzMl90Pj4oTDo6UGFydGlhbCgwLCAwKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQ
RUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3Bh
bjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDApLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsK
KyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDQsCisgICAgICAgIERpc3RhbmNlKHAsCisgICAgICAg
ICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgxLCAwKS5TbGlj
ZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZSgK
KyAgICAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDUs
IDMpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsCisg
ICAgICAgIERpc3RhbmNlKHAsCisgICAgICAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQz
Ml90Pj4oTDo6UGFydGlhbCg1LCAzKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNU
X0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsIFR5cGU8
U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPDA+KHApKS5kYXRh
KCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAg
ICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFy
dGlhbCgwLCAwLCAwKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAg
ICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsCisgICAgICAgICAgICBU
eXBlPFNwYW48Y29uc3QgSW50MTI4Pj4oTDo6UGFydGlhbCgwLCAwLCAwKS5TbGljZTwyPihwKSku
ZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgK
KyAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDAs
IDApLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDQsCisg
ICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3Bhbjxj
b25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgxLCAwLCAwKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7
CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAg
ICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgSW50MTI4Pj4oTDo6UGFydGlhbCgx
LCAwLCAwKS5TbGljZTwyPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAw
LAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4
X3Q+PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDI0LAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsCisg
ICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgSW50MTI4Pj4oTDo6UGFydGlhbCg1LCAzLCAxKS5T
bGljZTwyPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LAorICAgICAg
ICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3Qg
aW50MzJfdD4+KEw6OlBhcnRpYWwoNSwgMywgMSkuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOworICAg
IEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDhf
dD4+KEwoNSwgMywgMSkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAg
ICAgICAgMjQsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBJbnQxMjg+PihM
KDUsIDMsIDEpLlNsaWNlPDI+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAg
IDgsIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTCg1LCAzLCAxKS5TbGlj
ZTwxPihwKSkuZGF0YSgpKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFNsaWNlQnlUeXBlRGF0
YSkgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIHBbMTAwXSA9
IHt9OworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEo
CisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwgVHlwZTxTcGFu
PGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDApLlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAgICAg
ICAgICAgcCwgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDMpLlNsaWNlPGlu
dDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNl
KHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTCgzKS5TbGljZTxpbnQzMl90PihwKSkuZGF0
YSgpKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBJ
bnQxMjg+OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UoCisgICAgICAgICAg
ICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCgwKS5TbGljZTxpbnQ4
X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKAor
ICAgICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6OlBhcnRpYWwoMSku
U2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBE
aXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQ
YXJ0aWFsKDUpLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAg
ICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLCBUeXBlPFNwYW48Y29u
c3QgaW50OF90Pj4oTDo6UGFydGlhbCgwLCAwKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsK
KyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAg
ICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgw
LCAwKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAg
ICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBp
bnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDApLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAg
IEVYUEVDVF9FUSgKKyAgICAgICAgNCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBw
LAorICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDEsIDAp
LlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAs
CisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGNvbnN0IGludDhf
dD4+KEw6OlBhcnRpYWwoNSwgMykuU2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQ
RUNUX0VRKAorICAgICAgICA4LAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsCisg
ICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoNSwgMykuU2xp
Y2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAg
ICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLAorICAgICAgICAgICAgVHlwZTxTcGFuPGNv
bnN0IGludDhfdD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgp
KSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBl
PFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8aW50MzJfdD4o
cCkpCisgICAgICAgICAgICAgICAgICAgICAgICAuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDAs
IERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBJbnQxMjg+PigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8SW50MTI4PihwKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEo
CisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwKKyAgICAgICAg
ICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDAsIDApLlNsaWNlPGlu
dDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgNCwKKyAgICAgICAg
RGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDEsIDAsIDAp
LlNsaWNlPGludDMyX3Q+KHApKQorICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEoKSkpOwor
ICAgIEVYUEVDVF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgSW50MTI4Pj4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOjpQYXJ0aWFsKDEsIDAsIDApLlNsaWNl
PEludDEyOD4ocCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGF0YSgpKSk7
CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAg
ICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCg1
LCAzLCAxKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoMjQsIERp
c3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBJbnQxMjg+PigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPEludDEyOD4ocCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgK
KyAgICAgICAgOCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+
PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPGludDMyX3Q+KHApKQorICAgICAgICAgICAgICAg
ICAgICAgICAgLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAg
RGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEwoNSwgMywgMSkuU2xpY2U8aW50
OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAyNCwKKyAgICAgICAg
RGlzdGFuY2UocCwKKyAgICAgICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IEludDEyOD4+KEwo
NSwgMywgMSkuU2xpY2U8SW50MTI4PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAg
ICAgICA4LCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQz
Ml90Pj4oTCg1LCAzLCAxKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7CisgIH0KK30KKwor
VEVTVChMYXlvdXQsIE11dGFibGVTbGljZUJ5SW5kZXhEYXRhKSB7CisgIGFsaWduYXMobWF4X2Fs
aWduX3QpIHVuc2lnbmVkIGNoYXIgcFsxMDBdOworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxp
bnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlw
ZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDApLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDMy
X3Q+PihMOjpQYXJ0aWFsKDMpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMKDMpLlNsaWNlPDA+KHApKS5kYXRh
KCkpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90LCBpbnQzMl90PjsK
KyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGlu
dDMyX3Q+PihMOjpQYXJ0aWFsKDMpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1Rf
RVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlh
bCgzLCA1KS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAx
MiwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDMs
IDUpLlNsaWNlPDE+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwg
VHlwZTxTcGFuPGludDMyX3Q+PihMKDMsIDUpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBF
WFBFQ1RfRVEoMTIsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTCgzLCA1KS5TbGlj
ZTwxPihwKSkuZGF0YSgpKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90
LCBpbnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0
YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCgwKS5TbGljZTwwPihwKSkuZGF0
YSgpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBF
WFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+
KEw6OlBhcnRpYWwoNSkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAg
ICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoMCwgMCku
U2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFu
Y2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDAsIDApLlNsaWNlPDE+KHApKS5k
YXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8U3Bh
bjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDApLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBF
WFBFQ1RfRVEoCisgICAgICAgIDQsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6
UGFydGlhbCgxLCAwKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAg
ICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCg1LCAzKS5T
bGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LCBEaXN0YW5j
ZShwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoNSwgMykuU2xpY2U8MT4ocCkpLmRh
dGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwg
VHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8MD4ocCkpLmRhdGEo
KSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlw
ZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPDE+KHApKS5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKAorICAgICAgICAgICAgICAg
cCwgVHlwZTxTcGFuPEludDEyOD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8Mj4ocCkpLmRh
dGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwg
VHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoMSwgMCwgMCkuU2xpY2U8MD4ocCkpLmRhdGEo
KSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgNCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlw
ZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDEsIDAsIDApLlNsaWNlPDE+KHApKS5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsIERpc3RhbmNlKAorICAgICAgICAgICAgICAg
cCwgVHlwZTxTcGFuPEludDEyOD4+KEw6OlBhcnRpYWwoMSwgMCwgMCkuU2xpY2U8Mj4ocCkpLmRh
dGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwg
VHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoNSwgMywgMSkuU2xpY2U8MD4ocCkpLmRhdGEo
KSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMjQsIERpc3RhbmNlKAorICAgICAgICAgICAg
ICAgIHAsIFR5cGU8U3BhbjxJbnQxMjg+PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPDI+KHAp
KS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsCisgICAgICAgIERpc3RhbmNl
KHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCg1LCAzLCAxKS5TbGljZTwxPihwKSku
ZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+
PihMKDUsIDMsIDEpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoMjQsCisg
ICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxJbnQxMjg+PihMKDUsIDMsIDEpLlNs
aWNlPDI+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxT
cGFuPGludDMyX3Q+PihMKDUsIDMsIDEpLlNsaWNlPDE+KHApKS5kYXRhKCkpKTsKKyAgfQorfQor
CitURVNUKExheW91dCwgTXV0YWJsZVNsaWNlQnlUeXBlRGF0YSkgeworICBhbGlnbmFzKG1heF9h
bGlnbl90KSB1bnNpZ25lZCBjaGFyIHBbMTAwXTsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8
aW50MzJfdD47CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShw
LCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoMCkuU2xpY2U8aW50MzJfdD4ocCkpLmRh
dGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwg
VHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDMpLlNsaWNlPGludDMyX3Q+KHApKS5kYXRh
KCkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDMyX3Q+PihM
KDMpLlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9
IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKAorICAgICAg
ICAwLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCgwKS5TbGljZTxp
bnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNl
KHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEpLlNsaWNlPGludDhfdD4ocCkpLmRh
dGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwgVHlwZTxTcGFu
PGludDhfdD4+KEw6OlBhcnRpYWwoNSkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7CisgICAg
RVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50
OF90Pj4oTDo6UGFydGlhbCgwLCAwKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBF
WFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKAorICAgICAgICAgICAgICAgcCwgVHlwZTxT
cGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDAsIDApLlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDApLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgNCwgRGlzdGFuY2UoCisgICAgICAgICAgICAgICBw
LCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoMSwgMCkuU2xpY2U8aW50MzJfdD4ocCkp
LmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2Uo
cCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoNSwgMykuU2xpY2U8aW50OF90PihwKSku
ZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LCBEaXN0YW5jZSgKKyAgICAgICAg
ICAgICAgIHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCg1LCAzKS5TbGljZTxpbnQz
Ml90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZSgK
KyAgICAgICAgICAgICAgIHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDAsIDAsIDAp
LlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwK
KyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6
OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVD
VF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLAorICAg
ICAgICAgICAgVHlwZTxTcGFuPEludDEyOD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8SW50
MTI4PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZSgK
KyAgICAgICAgICAgICAgIHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEsIDAsIDAp
LlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgNCwK
KyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6
OlBhcnRpYWwoMSwgMCwgMCkuU2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVD
VF9FUSgKKyAgICAgICAgOCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLAorICAg
ICAgICAgICAgVHlwZTxTcGFuPEludDEyOD4+KEw6OlBhcnRpYWwoMSwgMCwgMCkuU2xpY2U8SW50
MTI4PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZSgK
KyAgICAgICAgICAgICAgIHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDUsIDMsIDEp
LlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMjQs
CisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3Bh
bjxJbnQxMjg+PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPEludDEyOD4ocCkpLmRhdGEoKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAg
ICAgICBwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoNSwgMywgMSkuU2xpY2U8aW50
MzJfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0
YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTCg1LCAzLCAxKS5TbGljZTxpbnQ4X3Q+KHApKS5k
YXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDI0LAorICAgICAgICBEaXN0YW5jZShw
LCBUeXBlPFNwYW48SW50MTI4Pj4oTCg1LCAzLCAxKS5TbGljZTxJbnQxMjg+KHApKS5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQz
Ml90Pj4oTCg1LCAzLCAxKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7CisgIH0KK30KKwor
TUFUQ0hFUl9QKElzU2FtZVNsaWNlLCBzbGljZSwgIiIpIHsKKyAgcmV0dXJuIGFyZy5zaXplKCkg
PT0gc2xpY2Uuc2l6ZSgpICYmIGFyZy5kYXRhKCkgPT0gc2xpY2UuZGF0YSgpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUuLi4gTT4KK2NsYXNzIFR1cGxlTWF0Y2hlciB7CisgcHVibGljOgorICBl
eHBsaWNpdCBUdXBsZU1hdGNoZXIoTS4uLiBtYXRjaGVycykgOiBtYXRjaGVyc18oc3RkOjptb3Zl
KG1hdGNoZXJzKS4uLikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CisgIGJvb2wg
TWF0Y2hBbmRFeHBsYWluKGNvbnN0IFR1cGxlJiBwLAorICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3QgeworICAg
IHN0YXRpY19hc3NlcnQoc3RkOjp0dXBsZV9zaXplPFR1cGxlPjo6dmFsdWUgPT0gc2l6ZW9mLi4u
KE0pLCAiIik7CisgICAgcmV0dXJuIE1hdGNoQW5kRXhwbGFpbkltcGwoCisgICAgICAgIHAsIGFi
c2w6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPFR1cGxlPjo6dmFsdWU+e30p
OworICB9CisKKyAgLy8gRm9yIHRoZSBtYXRjaGVyIGNvbmNlcHQuIExlZnQgZW1wdHkgYXMgd2Ug
ZG9uJ3QgcmVhbGx5IG5lZWQgdGhlIGRpYWdub3N0aWNzCisgIC8vIHJpZ2h0IG5vdy4KKyAgdm9p
ZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Qge30KKyAgdm9pZCBEZXNjcmli
ZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7fQorCisgcHJpdmF0ZToKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlLCBzaXplX3QuLi4gSXM+CisgIGJvb2wgTWF0Y2hBbmRF
eHBsYWluSW1wbChjb25zdCBUdXBsZSYgcCwgYWJzbDo6aW5kZXhfc2VxdWVuY2U8SXMuLi4+KSBj
b25zdCB7CisgICAgLy8gVXNpbmcgc3RkOjptaW4gYXMgYSBzaW1wbGUgdmFyaWFkaWMgImFuZCIu
CisgICAgcmV0dXJuIHN0ZDo6bWluKAorICAgICAgICB7dHJ1ZSwgdGVzdGluZzo6U2FmZU1hdGNo
ZXJDYXN0PAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIHN0ZDo6dHVwbGVfZWxl
bWVudDxJcywgVHVwbGU+Ojp0eXBlJj4oCisgICAgICAgICAgICAgICAgICAgc3RkOjpnZXQ8SXM+
KG1hdGNoZXJzXykpCisgICAgICAgICAgICAgICAgICAgLk1hdGNoZXMoc3RkOjpnZXQ8SXM+KHAp
KS4uLn0pOworICB9CisKKyAgc3RkOjp0dXBsZTxNLi4uPiBtYXRjaGVyc187Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUuLi4gTT4KK3Rlc3Rpbmc6OlBvbHltb3JwaGljTWF0Y2hlcjxUdXBsZU1h
dGNoZXI8TS4uLj4+IFR1cGxlKE0uLi4gbWF0Y2hlcnMpIHsKKyAgcmV0dXJuIHRlc3Rpbmc6Ok1h
a2VQb2x5bW9ycGhpY01hdGNoZXIoCisgICAgICBUdXBsZU1hdGNoZXI8TS4uLj4oc3RkOjptb3Zl
KG1hdGNoZXJzKS4uLikpOworfQorCitURVNUKExheW91dCwgU2xpY2VzKSB7CisgIGFsaWduYXMo
bWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgcFsxMDBdID0ge307CisgIHVzaW5nIEwg
PSBMYXlvdXQ8aW50OF90LCBpbnQ4X3QsIEludDEyOD47CisgIHsKKyAgICBjb25zdCBhdXRvIHgg
PSBMOjpQYXJ0aWFsKCk7CisgICAgRVhQRUNUX1RIQVQoVHlwZTxzdGQ6OnR1cGxlPD4+KHguU2xp
Y2VzKHApKSwgVHVwbGUoKSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRp
YWwoMSk7CisgICAgRVhQRUNUX1RIQVQoVHlwZTxzdGQ6OnR1cGxlPFNwYW48Y29uc3QgaW50OF90
Pj4+KHguU2xpY2VzKHApKSwKKyAgICAgICAgICAgICAgICBUdXBsZShJc1NhbWVTbGljZSh4LlNs
aWNlPDA+KHApKSkpOworICB9CisgIHsKKyAgICBjb25zdCBhdXRvIHggPSBMOjpQYXJ0aWFsKDEs
IDIpOworICAgIEVYUEVDVF9USEFUKAorICAgICAgICAoVHlwZTxzdGQ6OnR1cGxlPFNwYW48Y29u
c3QgaW50OF90PiwgU3Bhbjxjb25zdCBpbnQ4X3Q+Pj4oeC5TbGljZXMocCkpKSwKKyAgICAgICAg
VHVwbGUoSXNTYW1lU2xpY2UoeC5TbGljZTwwPihwKSksIElzU2FtZVNsaWNlKHguU2xpY2U8MT4o
cCkpKSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRpYWwoMSwgMiwgMyk7
CisgICAgRVhQRUNUX1RIQVQoKFR5cGU8c3RkOjp0dXBsZTxTcGFuPGNvbnN0IGludDhfdD4sIFNw
YW48Y29uc3QgaW50OF90PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwYW48
Y29uc3QgSW50MTI4Pj4+KHguU2xpY2VzKHApKSksCisgICAgICAgICAgICAgICAgVHVwbGUoSXNT
YW1lU2xpY2UoeC5TbGljZTwwPihwKSksIElzU2FtZVNsaWNlKHguU2xpY2U8MT4ocCkpLAorICAg
ICAgICAgICAgICAgICAgICAgIElzU2FtZVNsaWNlKHguU2xpY2U8Mj4ocCkpKSk7CisgIH0KKyAg
eworICAgIGNvbnN0IEwgeCgxLCAyLCAzKTsKKyAgICBFWFBFQ1RfVEhBVCgoVHlwZTxzdGQ6OnR1
cGxlPFNwYW48Y29uc3QgaW50OF90PiwgU3Bhbjxjb25zdCBpbnQ4X3Q+LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3Bhbjxjb25zdCBJbnQxMjg+Pj4oeC5TbGljZXMocCkpKSwK
KyAgICAgICAgICAgICAgICBUdXBsZShJc1NhbWVTbGljZSh4LlNsaWNlPDA+KHApKSwgSXNTYW1l
U2xpY2UoeC5TbGljZTwxPihwKSksCisgICAgICAgICAgICAgICAgICAgICAgSXNTYW1lU2xpY2Uo
eC5TbGljZTwyPihwKSkpKTsKKyAgfQorfQorCitURVNUKExheW91dCwgTXV0YWJsZVNsaWNlcykg
eworICBhbGlnbmFzKG1heF9hbGlnbl90KSB1bnNpZ25lZCBjaGFyIHBbMTAwXSA9IHt9OworICB1
c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50OF90LCBJbnQxMjg+OworICB7CisgICAgY29uc3Qg
YXV0byB4ID0gTDo6UGFydGlhbCgpOworICAgIEVYUEVDVF9USEFUKFR5cGU8c3RkOjp0dXBsZTw+
Pih4LlNsaWNlcyhwKSksIFR1cGxlKCkpOworICB9CisgIHsKKyAgICBjb25zdCBhdXRvIHggPSBM
OjpQYXJ0aWFsKDEpOworICAgIEVYUEVDVF9USEFUKFR5cGU8c3RkOjp0dXBsZTxTcGFuPGludDhf
dD4+Pih4LlNsaWNlcyhwKSksCisgICAgICAgICAgICAgICAgVHVwbGUoSXNTYW1lU2xpY2UoeC5T
bGljZTwwPihwKSkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgx
LCAyKTsKKyAgICBFWFBFQ1RfVEhBVCgoVHlwZTxzdGQ6OnR1cGxlPFNwYW48aW50OF90PiwgU3Bh
bjxpbnQ4X3Q+Pj4oeC5TbGljZXMocCkpKSwKKyAgICAgICAgICAgICAgICBUdXBsZShJc1NhbWVT
bGljZSh4LlNsaWNlPDA+KHApKSwgSXNTYW1lU2xpY2UoeC5TbGljZTwxPihwKSkpKTsKKyAgfQor
ICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgxLCAyLCAzKTsKKyAgICBFWFBFQ1Rf
VEhBVCgKKyAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxTcGFuPGludDhfdD4sIFNwYW48aW50OF90
PiwgU3BhbjxJbnQxMjg+Pj4oeC5TbGljZXMocCkpKSwKKyAgICAgICAgVHVwbGUoSXNTYW1lU2xp
Y2UoeC5TbGljZTwwPihwKSksIElzU2FtZVNsaWNlKHguU2xpY2U8MT4ocCkpLAorICAgICAgICAg
ICAgICBJc1NhbWVTbGljZSh4LlNsaWNlPDI+KHApKSkpOworICB9CisgIHsKKyAgICBjb25zdCBM
IHgoMSwgMiwgMyk7CisgICAgRVhQRUNUX1RIQVQoCisgICAgICAgIChUeXBlPHN0ZDo6dHVwbGU8
U3BhbjxpbnQ4X3Q+LCBTcGFuPGludDhfdD4sIFNwYW48SW50MTI4Pj4+KHguU2xpY2VzKHApKSks
CisgICAgICAgIFR1cGxlKElzU2FtZVNsaWNlKHguU2xpY2U8MD4ocCkpLCBJc1NhbWVTbGljZSh4
LlNsaWNlPDE+KHApKSwKKyAgICAgICAgICAgICAgSXNTYW1lU2xpY2UoeC5TbGljZTwyPihwKSkp
KTsKKyAgfQorfQorCitURVNUKExheW91dCwgVW5hbGlnbmVkVHlwZXMpIHsKKyAgY29uc3RleHBy
IExheW91dDx1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyPiB4KDEs
IDIsIDMpOworICBhbGlnbmFzKG1heF9hbGlnbl90KSB1bnNpZ25lZCBjaGFyIHBbeC5BbGxvY1Np
emUoKSArIDFdOworICBFWFBFQ1RfVEhBVCh4LlBvaW50ZXJzKHAgKyAxKSwgVHVwbGUocCArIDEs
IHAgKyAyLCBwICsgNCkpOworfQorCitURVNUKExheW91dCwgQ3VzdG9tQWxpZ25tZW50KSB7Cisg
IGNvbnN0ZXhwciBMYXlvdXQ8dW5zaWduZWQgY2hhciwgQWxpZ25lZDx1bnNpZ25lZCBjaGFyLCA4
Pj4geCgxLCAyKTsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgdW5zaWduZWQgY2hhciBwW3guQWxs
b2NTaXplKCldOworICBFWFBFQ1RfRVEoMTAsIHguQWxsb2NTaXplKCkpOworICBFWFBFQ1RfVEhB
VCh4LlBvaW50ZXJzKHApLCBUdXBsZShwICsgMCwgcCArIDgpKTsKK30KKworVEVTVChMYXlvdXQs
IE92ZXJBbGlnbmVkKSB7CisgIGNvbnN0ZXhwciBzaXplX3QgTSA9IGFsaWdub2YobWF4X2FsaWdu
X3QpOworICBjb25zdGV4cHIgTGF5b3V0PHVuc2lnbmVkIGNoYXIsIEFsaWduZWQ8dW5zaWduZWQg
Y2hhciwgMiAqIE0+PiB4KDEsIDMpOworICBhbGlnbmFzKDIgKiBNKSB1bnNpZ25lZCBjaGFyIHBb
eC5BbGxvY1NpemUoKV07CisgIEVYUEVDVF9FUSgyICogTSArIDMsIHguQWxsb2NTaXplKCkpOwor
ICBFWFBFQ1RfVEhBVCh4LlBvaW50ZXJzKHApLCBUdXBsZShwICsgMCwgcCArIDIgKiBNKSk7Cit9
CisKK1RFU1QoTGF5b3V0LCBBbGlnbm1lbnQpIHsKKyAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50
OF90Pjo6QWxpZ25tZW50KCkgPT0gMSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQz
Ml90Pjo6QWxpZ25tZW50KCkgPT0gNCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQ2
NF90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBzdGF0aWNfYXNzZXJ0KExheW91dDxBbGln
bmVkPGludDhfdCwgNjQ+Pjo6QWxpZ25tZW50KCkgPT0gNjQsICIiKTsKKyAgc3RhdGljX2Fzc2Vy
dChMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBpbnQ2NF90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIp
OworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQ4X3QsIGludDY0X3QsIGludDMyX3Q+OjpBbGln
bm1lbnQoKSA9PSA4LCAiIik7CisgIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDMyX3QsIGludDhf
dCwgaW50NjRfdD46OkFsaWdubWVudCgpID09IDgsICIiKTsKKyAgc3RhdGljX2Fzc2VydChMYXlv
dXQ8aW50MzJfdCwgaW50NjRfdCwgaW50OF90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBz
dGF0aWNfYXNzZXJ0KExheW91dDxpbnQ2NF90LCBpbnQ4X3QsIGludDMyX3Q+OjpBbGlnbm1lbnQo
KSA9PSA4LCAiIik7CisgIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDY0X3QsIGludDMyX3QsIGlu
dDhfdD46OkFsaWdubWVudCgpID09IDgsICIiKTsKK30KKworVEVTVChMYXlvdXQsIENvbnN0ZXhw
clBhcnRpYWwpIHsKKyAgY29uc3RleHByIHNpemVfdCBNID0gYWxpZ25vZihtYXhfYWxpZ25fdCk7
CisgIGNvbnN0ZXhwciBMYXlvdXQ8dW5zaWduZWQgY2hhciwgQWxpZ25lZDx1bnNpZ25lZCBjaGFy
LCAyICogTT4+IHgoMSwgMyk7CisgIHN0YXRpY19hc3NlcnQoeC5QYXJ0aWFsKDEpLnRlbXBsYXRl
IE9mZnNldDwxPigpID09IDIgKiBNLCAiIik7Cit9CisvLyBbZnJvbSwgdG8pCitzdHJ1Y3QgUmVn
aW9uIHsKKyAgc2l6ZV90IGZyb207CisgIHNpemVfdCB0bzsKK307CisKK3ZvaWQgRXhwZWN0UmVn
aW9uUG9pc29uZWQoY29uc3QgdW5zaWduZWQgY2hhciogcCwgc2l6ZV90IG4sIGJvb2wgcG9pc29u
ZWQpIHsKKyNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgorICBmb3IgKHNpemVfdCBpID0gMDsgaSAh
PSBuOyArK2kpIHsKKyAgICBFWFBFQ1RfRVEocG9pc29uZWQsIF9fYXNhbl9hZGRyZXNzX2lzX3Bv
aXNvbmVkKHAgKyBpKSk7CisgIH0KKyNlbmRpZgorfQorCit0ZW1wbGF0ZSA8c2l6ZV90IE4+Cit2
b2lkIEV4cGVjdFBvaXNvbmVkKGNvbnN0IHVuc2lnbmVkIGNoYXIgKCZidWYpW05dLAorICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVnaW9uPiByZWcpIHsKKyAgc2l6
ZV90IHByZXYgPSAwOworICBmb3IgKGNvbnN0IFJlZ2lvbiYgciA6IHJlZykgeworICAgIEV4cGVj
dFJlZ2lvblBvaXNvbmVkKGJ1ZiArIHByZXYsIHIuZnJvbSAtIHByZXYsIGZhbHNlKTsKKyAgICBF
eHBlY3RSZWdpb25Qb2lzb25lZChidWYgKyByLmZyb20sIHIudG8gLSByLmZyb20sIHRydWUpOwor
ICAgIHByZXYgPSByLnRvOworICB9CisgIEV4cGVjdFJlZ2lvblBvaXNvbmVkKGJ1ZiArIHByZXYs
IE4gLSBwcmV2LCBmYWxzZSk7Cit9CisKK1RFU1QoTGF5b3V0LCBQb2lzb25QYWRkaW5nKSB7Cisg
IHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQ2NF90LCBpbnQzMl90LCBJbnQxMjg+OworCisg
IGNvbnN0ZXhwciBzaXplX3QgbiA9IEw6OlBhcnRpYWwoMSwgMiwgMywgNCkuQWxsb2NTaXplKCk7
CisgIHsKKyAgICBjb25zdGV4cHIgYXV0byB4ID0gTDo6UGFydGlhbCgpOworICAgIGFsaWduYXMo
bWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgY1tuXSA9IHt9OworICAgIHguUG9pc29u
UGFkZGluZyhjKTsKKyAgICBFWFBFQ1RfRVEoeC5TbGljZXMoYyksIHguU2xpY2VzKGMpKTsKKyAg
ICBFeHBlY3RQb2lzb25lZChjLCB7fSk7CisgIH0KKyAgeworICAgIGNvbnN0ZXhwciBhdXRvIHgg
PSBMOjpQYXJ0aWFsKDEpOworICAgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVk
IGNoYXIgY1tuXSA9IHt9OworICAgIHguUG9pc29uUGFkZGluZyhjKTsKKyAgICBFWFBFQ1RfRVEo
eC5TbGljZXMoYyksIHguU2xpY2VzKGMpKTsKKyAgICBFeHBlY3RQb2lzb25lZChjLCB7ezEsIDh9
fSk7CisgIH0KKyAgeworICAgIGNvbnN0ZXhwciBhdXRvIHggPSBMOjpQYXJ0aWFsKDEsIDIpOwor
ICAgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgY1tuXSA9IHt9Owor
ICAgIHguUG9pc29uUGFkZGluZyhjKTsKKyAgICBFWFBFQ1RfRVEoeC5TbGljZXMoYyksIHguU2xp
Y2VzKGMpKTsKKyAgICBFeHBlY3RQb2lzb25lZChjLCB7ezEsIDh9fSk7CisgIH0KKyAgeworICAg
IGNvbnN0ZXhwciBhdXRvIHggPSBMOjpQYXJ0aWFsKDEsIDIsIDMpOworICAgIGFsaWduYXMobWF4
X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgY1tuXSA9IHt9OworICAgIHguUG9pc29uUGFk
ZGluZyhjKTsKKyAgICBFWFBFQ1RfRVEoeC5TbGljZXMoYyksIHguU2xpY2VzKGMpKTsKKyAgICBF
eHBlY3RQb2lzb25lZChjLCB7ezEsIDh9LCB7MzYsIDQwfX0pOworICB9CisgIHsKKyAgICBjb25z
dGV4cHIgYXV0byB4ID0gTDo6UGFydGlhbCgxLCAyLCAzLCA0KTsKKyAgICBhbGlnbmFzKG1heF9h
bGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIGNbbl0gPSB7fTsKKyAgICB4LlBvaXNvblBhZGRp
bmcoYyk7CisgICAgRVhQRUNUX0VRKHguU2xpY2VzKGMpLCB4LlNsaWNlcyhjKSk7CisgICAgRXhw
ZWN0UG9pc29uZWQoYywge3sxLCA4fSwgezM2LCA0MH19KTsKKyAgfQorICB7CisgICAgY29uc3Rl
eHByIEwgeCgxLCAyLCAzLCA0KTsKKyAgICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNp
Z25lZCBjaGFyIGNbbl0gPSB7fTsKKyAgICB4LlBvaXNvblBhZGRpbmcoYyk7CisgICAgRVhQRUNU
X0VRKHguU2xpY2VzKGMpLCB4LlNsaWNlcyhjKSk7CisgICAgRXhwZWN0UG9pc29uZWQoYywge3sx
LCA4fSwgezM2LCA0MH19KTsKKyAgfQorfQorCitURVNUKExheW91dCwgRGVidWdTdHJpbmcpIHsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgaW50NjRfdHlwZSA9CisjaWZkZWYgX01TQ19WRVIKKyAgIl9f
aW50NjQiOworI2Vsc2UgICAvLyBfTVNDX1ZFUgorICBzdGQ6OmlzX3NhbWU8aW50NjRfdCwgbG9u
ZyBsb25nPjo6dmFsdWUgPyAibG9uZyBsb25nIiA6ICJsb25nIjsgIC8vIE5PTElOVAorI2VuZGlm
ICAvLyBfTVNDX1ZFUgorICB7CisgICAgY29uc3RleHByIGF1dG8geCA9IExheW91dDxpbnQ4X3Qs
IGludDMyX3QsIGludDhfdCwgSW50MTI4Pjo6UGFydGlhbCgpOworICAgIEVYUEVDVF9FUSgiQDA8
c2lnbmVkIGNoYXI+KDEpIiwgeC5EZWJ1Z1N0cmluZygpKTsKKyAgfQorICB7CisgICAgY29uc3Rl
eHByIGF1dG8geCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIGludDhfdCwgSW50MTI4Pjo6UGFy
dGlhbCgxKTsKKyAgICBFWFBFQ1RfRVEoIkAwPHNpZ25lZCBjaGFyPigxKVsxXTsgQDQ8aW50Pig0
KSIsIHguRGVidWdTdHJpbmcoKSk7CisgIH0KKyAgeworICAgIGNvbnN0ZXhwciBhdXRvIHggPSBM
YXlvdXQ8aW50OF90LCBpbnQzMl90LCBpbnQ4X3QsIEludDEyOD46OlBhcnRpYWwoMSwgMik7Cisg
ICAgRVhQRUNUX0VRKCJAMDxzaWduZWQgY2hhcj4oMSlbMV07IEA0PGludD4oNClbMl07IEAxMjxz
aWduZWQgY2hhcj4oMSkiLAorICAgICAgICAgICAgICB4LkRlYnVnU3RyaW5nKCkpOworICB9Cisg
IHsKKyAgICBjb25zdGV4cHIgYXV0byB4ID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgaW50OF90
LCBJbnQxMjg+OjpQYXJ0aWFsKDEsIDIsIDMpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgIkAw
PHNpZ25lZCBjaGFyPigxKVsxXTsgQDQ8aW50Pig0KVsyXTsgQDEyPHNpZ25lZCBjaGFyPigxKVsz
XTsgIgorICAgICAgICAiQDE2PCIgKworICAgICAgICAgICAgaW50NjRfdHlwZSArICIgWzJdPigx
NikiLAorICAgICAgICB4LkRlYnVnU3RyaW5nKCkpOworICB9CisgIHsKKyAgICBjb25zdGV4cHIg
YXV0byB4ID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgaW50OF90LCBJbnQxMjg+OjpQYXJ0aWFs
KDEsIDIsIDMsIDQpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgIkAwPHNpZ25lZCBjaGFyPigx
KVsxXTsgQDQ8aW50Pig0KVsyXTsgQDEyPHNpZ25lZCBjaGFyPigxKVszXTsgIgorICAgICAgICAi
QDE2PCIgKworICAgICAgICAgICAgaW50NjRfdHlwZSArICIgWzJdPigxNilbNF0iLAorICAgICAg
ICB4LkRlYnVnU3RyaW5nKCkpOworICB9CisgIHsKKyAgICBjb25zdGV4cHIgTGF5b3V0PGludDhf
dCwgaW50MzJfdCwgaW50OF90LCBJbnQxMjg+IHgoMSwgMiwgMywgNCk7CisgICAgRVhQRUNUX0VR
KAorICAgICAgICAiQDA8c2lnbmVkIGNoYXI+KDEpWzFdOyBANDxpbnQ+KDQpWzJdOyBAMTI8c2ln
bmVkIGNoYXI+KDEpWzNdOyAiCisgICAgICAgICJAMTY8IiArCisgICAgICAgICAgICBpbnQ2NF90
eXBlICsgIiBbMl0+KDE2KVs0XSIsCisgICAgICAgIHguRGVidWdTdHJpbmcoKSk7CisgIH0KK30K
KworVEVTVChMYXlvdXQsIENoYXJUeXBlcykgeworICBjb25zdGV4cHIgTGF5b3V0PGludDMyX3Q+
IHgoMSk7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNoYXIgY1t4LkFsbG9jU2l6ZSgpXSA9IHt9
OworICBhbGlnbmFzKG1heF9hbGlnbl90KSB1bnNpZ25lZCBjaGFyIHVjW3guQWxsb2NTaXplKCld
ID0ge307CisgIGFsaWduYXMobWF4X2FsaWduX3QpIHNpZ25lZCBjaGFyIHNjW3guQWxsb2NTaXpl
KCldID0ge307CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IGNoYXIgY2NbeC5BbGxvY1Np
emUoKV0gPSB7fTsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgY29uc3QgdW5zaWduZWQgY2hhciBj
dWNbeC5BbGxvY1NpemUoKV0gPSB7fTsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgY29uc3Qgc2ln
bmVkIGNoYXIgY3NjW3guQWxsb2NTaXplKCldID0ge307CisKKyAgVHlwZTxpbnQzMl90Kj4oeC5Q
b2ludGVyPDA+KGMpKTsKKyAgVHlwZTxpbnQzMl90Kj4oeC5Qb2ludGVyPDA+KHVjKSk7CisgIFR5
cGU8aW50MzJfdCo+KHguUG9pbnRlcjwwPihzYykpOworICBUeXBlPGNvbnN0IGludDMyX3QqPih4
LlBvaW50ZXI8MD4oY2MpKTsKKyAgVHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2ludGVyPDA+KGN1
YykpOworICBUeXBlPGNvbnN0IGludDMyX3QqPih4LlBvaW50ZXI8MD4oY3NjKSk7CisKKyAgVHlw
ZTxpbnQzMl90Kj4oeC5Qb2ludGVyPGludDMyX3Q+KGMpKTsKKyAgVHlwZTxpbnQzMl90Kj4oeC5Q
b2ludGVyPGludDMyX3Q+KHVjKSk7CisgIFR5cGU8aW50MzJfdCo+KHguUG9pbnRlcjxpbnQzMl90
PihzYykpOworICBUeXBlPGNvbnN0IGludDMyX3QqPih4LlBvaW50ZXI8aW50MzJfdD4oY2MpKTsK
KyAgVHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2ludGVyPGludDMyX3Q+KGN1YykpOworICBUeXBl
PGNvbnN0IGludDMyX3QqPih4LlBvaW50ZXI8aW50MzJfdD4oY3NjKSk7CisKKyAgVHlwZTxzdGQ6
OnR1cGxlPGludDMyX3QqPj4oeC5Qb2ludGVycyhjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxpbnQz
Ml90Kj4+KHguUG9pbnRlcnModWMpKTsKKyAgVHlwZTxzdGQ6OnR1cGxlPGludDMyX3QqPj4oeC5Q
b2ludGVycyhzYykpOworICBUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50MzJfdCo+Pih4LlBvaW50
ZXJzKGNjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxjb25zdCBpbnQzMl90Kj4+KHguUG9pbnRlcnMo
Y3VjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxjb25zdCBpbnQzMl90Kj4+KHguUG9pbnRlcnMoY3Nj
KSk7CisKKyAgVHlwZTxTcGFuPGludDMyX3Q+Pih4LlNsaWNlPDA+KGMpKTsKKyAgVHlwZTxTcGFu
PGludDMyX3Q+Pih4LlNsaWNlPDA+KHVjKSk7CisgIFR5cGU8U3BhbjxpbnQzMl90Pj4oeC5TbGlj
ZTwwPihzYykpOworICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KHguU2xpY2U8MD4oY2MpKTsK
KyAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+Pih4LlNsaWNlPDA+KGN1YykpOworICBUeXBlPFNw
YW48Y29uc3QgaW50MzJfdD4+KHguU2xpY2U8MD4oY3NjKSk7CisKKyAgVHlwZTxzdGQ6OnR1cGxl
PFNwYW48aW50MzJfdD4+Pih4LlNsaWNlcyhjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxTcGFuPGlu
dDMyX3Q+Pj4oeC5TbGljZXModWMpKTsKKyAgVHlwZTxzdGQ6OnR1cGxlPFNwYW48aW50MzJfdD4+
Pih4LlNsaWNlcyhzYykpOworICBUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4+
KHguU2xpY2VzKGNjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxTcGFuPGNvbnN0IGludDMyX3Q+Pj4o
eC5TbGljZXMoY3VjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxTcGFuPGNvbnN0IGludDMyX3Q+Pj4o
eC5TbGljZXMoY3NjKSk7Cit9CisKK1RFU1QoTGF5b3V0LCBDb25zdEVsZW1lbnRUeXBlKSB7Cisg
IGNvbnN0ZXhwciBMYXlvdXQ8Y29uc3QgaW50MzJfdD4geCgxKTsKKyAgYWxpZ25hcyhpbnQzMl90
KSBjaGFyIGNbeC5BbGxvY1NpemUoKV0gPSB7fTsKKyAgY29uc3QgY2hhciogY2MgPSBjOworICBj
b25zdCBpbnQzMl90KiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oY2MpOwor
CisgIEVYUEVDVF9FUShhbGlnbm9mKGludDMyX3QpLCB4LkFsaWdubWVudCgpKTsKKworICBFWFBF
Q1RfRVEoMCwgeC5PZmZzZXQ8MD4oKSk7CisgIEVYUEVDVF9FUSgwLCB4Lk9mZnNldDxjb25zdCBp
bnQzMl90PigpKTsKKworICBFWFBFQ1RfVEhBVCh4Lk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCkp
OworCisgIEVYUEVDVF9FUSgxLCB4LlNpemU8MD4oKSk7CisgIEVYUEVDVF9FUSgxLCB4LlNpemU8
Y29uc3QgaW50MzJfdD4oKSk7CisKKyAgRVhQRUNUX1RIQVQoeC5TaXplcygpLCBFbGVtZW50c0Fy
ZSgxKSk7CisKKyAgRVhQRUNUX0VRKHNpemVvZihpbnQzMl90KSwgeC5BbGxvY1NpemUoKSk7CisK
KyAgRVhQRUNUX0VRKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KHguUG9pbnRlcjwwPihjKSkpOwor
ICBFWFBFQ1RfRVEocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2ludGVyPDA+KGNjKSkpOwor
CisgIEVYUEVDVF9FUShwLCBUeXBlPGNvbnN0IGludDMyX3QqPih4LlBvaW50ZXI8Y29uc3QgaW50
MzJfdD4oYykpKTsKKyAgRVhQRUNUX0VRKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KHguUG9pbnRl
cjxjb25zdCBpbnQzMl90PihjYykpKTsKKworICBFWFBFQ1RfVEhBVChUeXBlPHN0ZDo6dHVwbGU8
Y29uc3QgaW50MzJfdCo+Pih4LlBvaW50ZXJzKGMpKSwgVHVwbGUocCkpOworICBFWFBFQ1RfVEhB
VChUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50MzJfdCo+Pih4LlBvaW50ZXJzKGNjKSksIFR1cGxl
KHApKTsKKworICBFWFBFQ1RfVEhBVChUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KHguU2xpY2U8
MD4oYykpLAorICAgICAgICAgICAgICBJc1NhbWVTbGljZShTcGFuPGNvbnN0IGludDMyX3Q+KHAs
IDEpKSk7CisgIEVYUEVDVF9USEFUKFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oeC5TbGljZTww
PihjYykpLAorICAgICAgICAgICAgICBJc1NhbWVTbGljZShTcGFuPGNvbnN0IGludDMyX3Q+KHAs
IDEpKSk7CisKKyAgRVhQRUNUX1RIQVQoVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+Pih4LlNsaWNl
PGNvbnN0IGludDMyX3Q+KGMpKSwKKyAgICAgICAgICAgICAgSXNTYW1lU2xpY2UoU3Bhbjxjb25z
dCBpbnQzMl90PihwLCAxKSkpOworICBFWFBFQ1RfVEhBVChUeXBlPFNwYW48Y29uc3QgaW50MzJf
dD4+KHguU2xpY2U8Y29uc3QgaW50MzJfdD4oY2MpKSwKKyAgICAgICAgICAgICAgSXNTYW1lU2xp
Y2UoU3Bhbjxjb25zdCBpbnQzMl90PihwLCAxKSkpOworCisgIEVYUEVDVF9USEFUKFR5cGU8c3Rk
Ojp0dXBsZTxTcGFuPGNvbnN0IGludDMyX3Q+Pj4oeC5TbGljZXMoYykpLAorICAgICAgICAgICAg
ICBUdXBsZShJc1NhbWVTbGljZShTcGFuPGNvbnN0IGludDMyX3Q+KHAsIDEpKSkpOworICBFWFBF
Q1RfVEhBVChUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4+KHguU2xpY2VzKGNj
KSksCisgICAgICAgICAgICAgIFR1cGxlKElzU2FtZVNsaWNlKFNwYW48Y29uc3QgaW50MzJfdD4o
cCwgMSkpKSk7Cit9CisKK25hbWVzcGFjZSBleGFtcGxlIHsKKworLy8gSW1tdXRhYmxlIG1vdmUt
b25seSBzdHJpbmcgd2l0aCBzaXplb2YgZXF1YWwgdG8gc2l6ZW9mKHZvaWQqKS4gVGhlIHN0cmlu
ZworLy8gc2l6ZSBhbmQgdGhlIGNoYXJhY3RlcnMgYXJlIGtlcHQgaW4gdGhlIHNhbWUgaGVhcCBh
bGxvY2F0aW9uLgorY2xhc3MgQ29tcGFjdFN0cmluZyB7CisgcHVibGljOgorICBDb21wYWN0U3Ry
aW5nKGNvbnN0IGNoYXIqIHMgPSAiIikgeyAgLy8gTk9MSU5UCisgICAgY29uc3Qgc2l6ZV90IHNp
emUgPSBzdHJsZW4ocyk7CisgICAgLy8gc2l6ZV90WzFdLCBmb2xsb3dlZCBieSBjaGFyW3NpemUg
KyAxXS4KKyAgICAvLyBUaGlzIHN0YXRlbWVudCBkb2Vzbid0IGFsbG9jYXRlIG1lbW9yeS4KKyAg
ICBjb25zdCBMIGxheW91dCgxLCBzaXplICsgMSk7CisgICAgLy8gQWxsb2NTaXplKCkgdGVsbHMg
dXMgaG93IG11Y2ggbWVtb3J5IHdlIG5lZWQgdG8gYWxsb2NhdGUgZm9yIGFsbCBvdXIKKyAgICAv
LyBkYXRhLgorICAgIHBfLnJlc2V0KG5ldyB1bnNpZ25lZCBjaGFyW2xheW91dC5BbGxvY1NpemUo
KV0pOworICAgIC8vIElmIHJ1bm5pbmcgdW5kZXIgQVNBTiwgbWFyayB0aGUgcGFkZGluZyBieXRl
cywgaWYgYW55LCB0byBjYXRjaCBtZW1vcnkKKyAgICAvLyBlcnJvcnMuCisgICAgbGF5b3V0LlBv
aXNvblBhZGRpbmcocF8uZ2V0KCkpOworICAgIC8vIFN0b3JlIHRoZSBzaXplIGluIHRoZSBhbGxv
Y2F0aW9uLgorICAgIC8vIFBvaW50ZXI8c2l6ZV90PigpIGlzIGEgc3lub255bSBmb3IgUG9pbnRl
cjwwPigpLgorICAgICpsYXlvdXQuUG9pbnRlcjxzaXplX3Q+KHBfLmdldCgpKSA9IHNpemU7Cisg
ICAgLy8gU3RvcmUgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIGFsbG9jYXRpb24uCisgICAgbWVtY3B5
KGxheW91dC5Qb2ludGVyPGNoYXI+KHBfLmdldCgpKSwgcywgc2l6ZSArIDEpOworICB9CisKKyAg
c2l6ZV90IHNpemUoKSBjb25zdCB7CisgICAgLy8gRXF1aXZhbGVudCB0byByZWludGVycHJldF9j
YXN0PHNpemVfdCY+KCpwKS4KKyAgICByZXR1cm4gKkw6OlBhcnRpYWwoKS5Qb2ludGVyPHNpemVf
dD4ocF8uZ2V0KCkpOworICB9CisKKyAgY29uc3QgY2hhciogY19zdHIoKSBjb25zdCB7CisgICAg
Ly8gRXF1aXZhbGVudCB0byByZWludGVycHJldF9jYXN0PGNoYXIqPihwLmdldCgpICsgc2l6ZW9m
KHNpemVfdCkpLgorICAgIC8vIFRoZSBhcmd1bWVudCBpbiBQYXJ0aWFsKDEpIHNwZWNpZmllcyB0
aGF0IHdlIGhhdmUgc2l6ZV90WzFdIGluIGZyb250IG9mCisgICAgLy8gdGhlCisgICAgLy8gY2hh
cmFjdGVycy4KKyAgICByZXR1cm4gTDo6UGFydGlhbCgxKS5Qb2ludGVyPGNoYXI+KHBfLmdldCgp
KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gT3VyIGhlYXAgYWxsb2NhdGlvbiBjb250YWlucyBh
IHNpemVfdCBmb2xsb3dlZCBieSBhbiBhcnJheSBvZiBjaGFycy4KKyAgdXNpbmcgTCA9IExheW91
dDxzaXplX3QsIGNoYXI+OworICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQgY2hhcltdPiBwXzsK
K307CisKK1RFU1QoQ29tcGFjdFN0cmluZywgV29ya3MpIHsKKyAgQ29tcGFjdFN0cmluZyBzID0g
ImhlbGxvIjsKKyAgRVhQRUNUX0VRKDUsIHMuc2l6ZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJoZWxs
byIsIHMuY19zdHIoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBleGFtcGxlCisKK30gIC8vIG5h
bWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNw
YWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hf
cG9saWN5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA2NWU3MDA5ZTdlN2U0YzViMDMzYTVkMjU4Y2FkOTM1NzJjZmRhNWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5o
CkBAIC0wLDAgKzEsODggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisvLworLy8gQWRhcHRzIGEgcG9saWN5IGZvciBub2Rlcy4KKy8vCisvLyBUaGUgbm9kZSBwb2xp
Y3kgc2hvdWxkIG1vZGVsOgorLy8KKy8vIHN0cnVjdCBQb2xpY3kgeworLy8gICAvLyBSZXR1cm5z
IGEgbmV3IG5vZGUgYWxsb2NhdGVkIGFuZCBjb25zdHJ1Y3RlZCB1c2luZyB0aGUgYWxsb2NhdG9y
LCB1c2luZworLy8gICAvLyB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KKy8vICAgdGVtcGxhdGUg
PGNsYXNzIEFsbG9jLCBjbGFzcy4uLiBBcmdzPgorLy8gICB2YWx1ZV90eXBlKiBuZXdfZWxlbWVu
dChBbGxvYyogYWxsb2MsIEFyZ3MmJi4uLiBhcmdzKSBjb25zdDsKKy8vCisvLyAgIC8vIERlc3Ry
b3lzIGFuZCBkZWFsbG9jYXRlcyBub2RlIHVzaW5nIHRoZSBhbGxvY2F0b3IuCisvLyAgIHRlbXBs
YXRlIDxjbGFzcyBBbGxvYz4KKy8vICAgdm9pZCBkZWxldGVfZWxlbWVudChBbGxvYyogYWxsb2Ms
IHZhbHVlX3R5cGUqIG5vZGUpIGNvbnN0OworLy8gfTsKKy8vCisvLyBJdCBtYXkgYWxzbyBvcHRp
b25hbGx5IGRlZmluZSBgdmFsdWUoKWAgYW5kIGBhcHBseSgpYC4gRm9yIGRvY3VtZW50YXRpb24g
b24KKy8vIHRoZXNlLCBzZWUgaGFzaF9wb2xpY3lfdHJhaXRzLmguCisKKyNpZm5kZWYgQUJTTF9D
T05UQUlORVJfSU5URVJOQUxfTk9ERV9IQVNIX1BPTElDWV9IXworI2RlZmluZSBBQlNMX0NPTlRB
SU5FUl9JTlRFUk5BTF9OT0RFX0hBU0hfUE9MSUNZX0hfCisKKyNpbmNsdWRlIDxjYXNzZXJ0Pgor
I2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBj
b250YWluZXJfaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xhc3MgUmVmZXJlbmNlLCBjbGFzcyBQ
b2xpY3k+CitzdHJ1Y3Qgbm9kZV9oYXNoX3BvbGljeSB7CisgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19sdmFsdWVfcmVmZXJlbmNlPFJlZmVyZW5jZT46OnZhbHVlLCAiIik7CisKKyAgdXNpbmcgc2xv
dF90eXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8CisgICAgICB0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9yZWZlcmVuY2U8UmVmZXJlbmNlPjo6dHlwZT46OnR5cGUqOworCisgIHRlbXBsYXRlIDxj
bGFzcyBBbGxvYywgY2xhc3MuLi4gQXJncz4KKyAgc3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9j
KiBhbGxvYywgc2xvdF90eXBlKiBzbG90LCBBcmdzJiYuLi4gYXJncykgeworICAgICpzbG90ID0g
UG9saWN5OjpuZXdfZWxlbWVudChhbGxvYywgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
KyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvYz4KKyAgc3RhdGljIHZvaWQgZGVzdHJveShB
bGxvYyogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCkgeworICAgIFBvbGljeTo6ZGVsZXRlX2VsZW1l
bnQoYWxsb2MsICpzbG90KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvYz4KKyAgc3Rh
dGljIHZvaWQgdHJhbnNmZXIoQWxsb2MqLCBzbG90X3R5cGUqIG5ld19zbG90LCBzbG90X3R5cGUq
IG9sZF9zbG90KSB7CisgICAgKm5ld19zbG90ID0gKm9sZF9zbG90OworICB9CisKKyAgc3RhdGlj
IHNpemVfdCBzcGFjZV91c2VkKGNvbnN0IHNsb3RfdHlwZSogc2xvdCkgeworICAgIGlmIChzbG90
ID09IG51bGxwdHIpIHJldHVybiBQb2xpY3k6OmVsZW1lbnRfc3BhY2VfdXNlZChudWxscHRyKTsK
KyAgICByZXR1cm4gUG9saWN5OjplbGVtZW50X3NwYWNlX3VzZWQoKnNsb3QpOworICB9CisKKyAg
c3RhdGljIFJlZmVyZW5jZSBlbGVtZW50KHNsb3RfdHlwZSogc2xvdCkgeyByZXR1cm4gKipzbG90
OyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFAgPSBQb2xpY3k+CisgIHN0YXRpYyBh
dXRvIHZhbHVlKFQqIGVsZW0pIC0+IGRlY2x0eXBlKFA6OnZhbHVlKGVsZW0pKSB7CisgICAgcmV0
dXJuIFA6OnZhbHVlKGVsZW0pOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzLi4uIFRzLCBjbGFz
cyBQID0gUG9saWN5PgorICBzdGF0aWMgYXV0byBhcHBseShUcyYmLi4uIHRzKSAtPiBkZWNsdHlw
ZShQOjphcHBseShzdGQ6OmZvcndhcmQ8VHM+KHRzKS4uLikpIHsKKyAgICByZXR1cm4gUDo6YXBw
bHkoc3RkOjpmb3J3YXJkPFRzPih0cykuLi4pOworICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
Y29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFC
U0xfQ09OVEFJTkVSX0lOVEVSTkFMX05PREVfSEFTSF9QT0xJQ1lfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQz
ZDI4N2UzYzRhMDRlYmQ2MThjMzA1YTE1Yjc2MzA1ZjcyYTc0OTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0LmNjCkBAIC0w
LDAgKzEsNjcgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5LmgiCisKKyNp
bmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xp
Y3lfdHJhaXRzLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50
ZXJuYWwgeworbmFtZXNwYWNlIHsKKwordXNpbmcgOjp0ZXN0aW5nOjpQb2ludGVlOworCitzdHJ1
Y3QgUG9saWN5IDogbm9kZV9oYXNoX3BvbGljeTxpbnQmLCBQb2xpY3k+IHsKKyAgdXNpbmcga2V5
X3R5cGUgPSBpbnQ7CisgIHVzaW5nIGluaXRfdHlwZSA9IGludDsKKworICB0ZW1wbGF0ZSA8Y2xh
c3MgQWxsb2M+CisgIHN0YXRpYyBpbnQqIG5ld19lbGVtZW50KEFsbG9jKiBhbGxvYywgaW50IHZh
bHVlKSB7CisgICAgcmV0dXJuIG5ldyBpbnQodmFsdWUpOworICB9CisKKyAgdGVtcGxhdGUgPGNs
YXNzIEFsbG9jPgorICBzdGF0aWMgdm9pZCBkZWxldGVfZWxlbWVudChBbGxvYyogYWxsb2MsIGlu
dCogZWxlbSkgeworICAgIGRlbGV0ZSBlbGVtOworICB9Cit9OworCit1c2luZyBOb2RlUG9saWN5
ID0gaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeT47CisKK3N0cnVjdCBOb2RlVGVzdCA6IDo6dGVz
dGluZzo6VGVzdCB7CisgIHN0ZDo6YWxsb2NhdG9yPGludD4gYWxsb2M7CisgIGludCBuID0gNTM7
CisgIGludCogYSA9ICZuOworfTsKKworVEVTVF9GKE5vZGVUZXN0LCBDb25zdHJ1Y3REZXN0cm95
KSB7CisgIE5vZGVQb2xpY3k6OmNvbnN0cnVjdCgmYWxsb2MsICZhLCA0Mik7CisgIEVYUEVDVF9U
SEFUKGEsIFBvaW50ZWUoNDIpKTsKKyAgTm9kZVBvbGljeTo6ZGVzdHJveSgmYWxsb2MsICZhKTsK
K30KKworVEVTVF9GKE5vZGVUZXN0LCB0cmFuc2ZlcikgeworICBpbnQgcyA9IDQyOworICBpbnQq
IGIgPSAmczsKKyAgTm9kZVBvbGljeTo6dHJhbnNmZXIoJmFsbG9jLCAmYSwgJmIpOworICBFWFBF
Q1RfRVEoJnMsIGEpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250
YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvcmF3X2hhc2hfbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVkYzAwNzFlN2RlODI5ZGUyZGRjNzk2NzU4
NDY2MzJmNjYwNGM0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9yYXdfaGFzaF9tYXAuaApAQCAtMCwwICsxLDE4MiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9SQVdf
SEFTSF9NQVBfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfUkFXX0hBU0hfTUFQ
X0hfCisKKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRl
IDx1dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVy
X21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3Nl
dC5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3Bh
Y2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFBvbGljeSwgY2xhc3Mg
SGFzaCwgY2xhc3MgRXEsIGNsYXNzIEFsbG9jPgorY2xhc3MgcmF3X2hhc2hfbWFwIDogcHVibGlj
IHJhd19oYXNoX3NldDxQb2xpY3ksIEhhc2gsIEVxLCBBbGxvYz4geworICAvLyBQIGlzIFBvbGlj
eS4gSXQncyBwYXNzZWQgYXMgYSB0ZW1wbGF0ZSBhcmd1bWVudCB0byBzdXBwb3J0IG1hcHMgdGhh
dCBoYXZlCisgIC8vIGluY29tcGxldGUgdHlwZXMgYXMgdmFsdWVzLCBhcyBpbiB1bm9yZGVyZWRf
bWFwPEssIEluY29tcGxldGVUeXBlPi4KKyAgLy8gTWFwcGVkUmVmZXJlbmNlPD4gbWF5IGJlIGEg
bm9uLXJlZmVyZW5jZSB0eXBlLgorICB0ZW1wbGF0ZSA8Y2xhc3MgUD4KKyAgdXNpbmcgTWFwcGVk
UmVmZXJlbmNlID0gZGVjbHR5cGUoUDo6dmFsdWUoCisgICAgICBzdGQ6OmFkZHJlc3NvZihzdGQ6
OmRlY2x2YWw8dHlwZW5hbWUgcmF3X2hhc2hfbWFwOjpyZWZlcmVuY2U+KCkpKSk7CisKKyAgLy8g
TWFwcGVkQ29uc3RSZWZlcmVuY2U8PiBtYXkgYmUgYSBub24tcmVmZXJlbmNlIHR5cGUuCisgIHRl
bXBsYXRlIDxjbGFzcyBQPgorICB1c2luZyBNYXBwZWRDb25zdFJlZmVyZW5jZSA9IGRlY2x0eXBl
KFA6OnZhbHVlKAorICAgICAgc3RkOjphZGRyZXNzb2Yoc3RkOjpkZWNsdmFsPHR5cGVuYW1lIHJh
d19oYXNoX21hcDo6Y29uc3RfcmVmZXJlbmNlPigpKSkpOworCisgcHVibGljOgorICB1c2luZyBr
ZXlfdHlwZSA9IHR5cGVuYW1lIFBvbGljeTo6a2V5X3R5cGU7CisgIHVzaW5nIG1hcHBlZF90eXBl
ID0gdHlwZW5hbWUgUG9saWN5OjptYXBwZWRfdHlwZTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEs+
CisgIHVzaW5nIGtleV9hcmcgPSB0eXBlbmFtZSByYXdfaGFzaF9tYXA6OnJhd19oYXNoX3NldDo6
dGVtcGxhdGUga2V5X2FyZzxLPjsKKworICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3JlZmVyZW5j
ZTxrZXlfdHlwZT46OnZhbHVlLCAiIik7CisgIC8vIFRPRE8oYWxraXMpOiByZW1vdmUgdGhpcyBh
c3NlcnRpb24gYW5kIHZlcmlmeSB0aGF0IHJlZmVyZW5jZSBtYXBwZWRfdHlwZSBpcworICAvLyBz
dXBwb3J0ZWQuCisgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfcmVmZXJlbmNlPG1hcHBlZF90eXBl
Pjo6dmFsdWUsICIiKTsKKworICB1c2luZyBpdGVyYXRvciA9IHR5cGVuYW1lIHJhd19oYXNoX21h
cDo6cmF3X2hhc2hfc2V0OjppdGVyYXRvcjsKKyAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSB0eXBl
bmFtZSByYXdfaGFzaF9tYXA6OnJhd19oYXNoX3NldDo6Y29uc3RfaXRlcmF0b3I7CisKKyAgcmF3
X2hhc2hfbWFwKCkge30KKyAgdXNpbmcgcmF3X2hhc2hfbWFwOjpyYXdfaGFzaF9zZXQ6OnJhd19o
YXNoX3NldDsKKworICAvLyBUaGUgbGFzdCB0d28gdGVtcGxhdGUgcGFyYW1ldGVycyBlbnN1cmUg
dGhhdCBib3RoIGFyZ3VtZW50cyBhcmUgcnZhbHVlcworICAvLyAobHZhbHVlIGFyZ3VtZW50cyBh
cmUgaGFuZGxlZCBieSB0aGUgb3ZlcmxvYWRzIGJlbG93KS4gVGhpcyBpcyBuZWNlc3NhcnkKKyAg
Ly8gZm9yIHN1cHBvcnRpbmcgYml0ZmllbGQgYXJndW1lbnRzLgorICAvLworICAvLyAgIHVuaW9u
IHsgaW50IG4gOiAxOyB9OworICAvLyAgIGZsYXRfaGFzaF9tYXA8aW50LCBpbnQ+IG07CisgIC8v
ICAgbS5pbnNlcnRfb3JfYXNzaWduKG4sIG4pOworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90
eXBlLCBjbGFzcyBWID0gbWFwcGVkX3R5cGUsIEsqID0gbnVsbHB0ciwKKyAgICAgICAgICAgIFYq
ID0gbnVsbHB0cj4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnRfb3JfYXNzaWdu
KGtleV9hcmc8Sz4mJiBrLCBWJiYgdikgeworICAgIHJldHVybiBpbnNlcnRfb3JfYXNzaWduX2lt
cGwoc3RkOjpmb3J3YXJkPEs+KGspLCBzdGQ6OmZvcndhcmQ8Vj4odikpOworICB9CisKKyAgdGVt
cGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MgViA9IG1hcHBlZF90eXBlLCBLKiA9IG51
bGxwdHI+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fzc2lnbihrZXlf
YXJnPEs+JiYgaywgY29uc3QgViYgdikgeworICAgIHJldHVybiBpbnNlcnRfb3JfYXNzaWduX2lt
cGwoc3RkOjpmb3J3YXJkPEs+KGspLCB2KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0g
a2V5X3R5cGUsIGNsYXNzIFYgPSBtYXBwZWRfdHlwZSwgViogPSBudWxscHRyPgorICBzdGQ6OnBh
aXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydF9vcl9hc3NpZ24oY29uc3Qga2V5X2FyZzxLPiYgaywg
ViYmIHYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X29yX2Fzc2lnbl9pbXBsKGssIHN0ZDo6Zm9yd2Fy
ZDxWPih2KSk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBW
ID0gbWFwcGVkX3R5cGU+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fz
c2lnbihjb25zdCBrZXlfYXJnPEs+JiBrLCBjb25zdCBWJiB2KSB7CisgICAgcmV0dXJuIGluc2Vy
dF9vcl9hc3NpZ25faW1wbChrLCB2KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5
X3R5cGUsIGNsYXNzIFYgPSBtYXBwZWRfdHlwZSwgSyogPSBudWxscHRyLAorICAgICAgICAgICAg
ViogPSBudWxscHRyPgorICBpdGVyYXRvciBpbnNlcnRfb3JfYXNzaWduKGNvbnN0X2l0ZXJhdG9y
LCBrZXlfYXJnPEs+JiYgaywgViYmIHYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X29yX2Fzc2lnbihz
dGQ6OmZvcndhcmQ8Sz4oayksIHN0ZDo6Zm9yd2FyZDxWPih2KSkuZmlyc3Q7CisgIH0KKworICB0
ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBWID0gbWFwcGVkX3R5cGUsIEsqID0g
bnVsbHB0cj4KKyAgaXRlcmF0b3IgaW5zZXJ0X29yX2Fzc2lnbihjb25zdF9pdGVyYXRvciwga2V5
X2FyZzxLPiYmIGssIGNvbnN0IFYmIHYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X29yX2Fzc2lnbihz
dGQ6OmZvcndhcmQ8Sz4oayksIHYpLmZpcnN0OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsg
PSBrZXlfdHlwZSwgY2xhc3MgViA9IG1hcHBlZF90eXBlLCBWKiA9IG51bGxwdHI+CisgIGl0ZXJh
dG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3RfaXRlcmF0b3IsIGNvbnN0IGtleV9hcmc8Sz4mIGss
IFYmJiB2KSB7CisgICAgcmV0dXJuIGluc2VydF9vcl9hc3NpZ24oaywgc3RkOjpmb3J3YXJkPFY+
KHYpKS5maXJzdDsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNz
IFYgPSBtYXBwZWRfdHlwZT4KKyAgaXRlcmF0b3IgaW5zZXJ0X29yX2Fzc2lnbihjb25zdF9pdGVy
YXRvciwgY29uc3Qga2V5X2FyZzxLPiYgaywgY29uc3QgViYgdikgeworICAgIHJldHVybiBpbnNl
cnRfb3JfYXNzaWduKGssIHYpLmZpcnN0OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBr
ZXlfdHlwZSwgY2xhc3MuLi4gQXJncywKKyAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPAorICAgICAgICAgICAgICAgICFzdGQ6OmlzX2NvbnZlcnRpYmxlPEssIGNvbnN0X2l0ZXJh
dG9yPjo6dmFsdWUsIGludD46OnR5cGUgPSAwLAorICAgICAgICAgICAgSyogPSBudWxscHRyPgor
ICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHRyeV9lbXBsYWNlKGtleV9hcmc8Sz4mJiBrLCBB
cmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiB0cnlfZW1wbGFjZV9pbXBsKHN0ZDo6Zm9yd2Fy
ZDxLPihrKSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIHRlbXBsYXRl
IDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzLi4uIEFyZ3MsCisgICAgICAgICAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICAhc3RkOjppc19jb252ZXJ0aWJsZTxL
LCBjb25zdF9pdGVyYXRvcj46OnZhbHVlLCBpbnQ+Ojp0eXBlID0gMD4KKyAgc3RkOjpwYWlyPGl0
ZXJhdG9yLCBib29sPiB0cnlfZW1wbGFjZShjb25zdCBrZXlfYXJnPEs+JiBrLCBBcmdzJiYuLi4g
YXJncykgeworICAgIHJldHVybiB0cnlfZW1wbGFjZV9pbXBsKGssIHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFz
cy4uLiBBcmdzLCBLKiA9IG51bGxwdHI+CisgIGl0ZXJhdG9yIHRyeV9lbXBsYWNlKGNvbnN0X2l0
ZXJhdG9yLCBrZXlfYXJnPEs+JiYgaywgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICByZXR1cm4gdHJ5
X2VtcGxhY2Uoc3RkOjpmb3J3YXJkPEs+KGspLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
LmZpcnN0OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MuLi4g
QXJncz4KKyAgaXRlcmF0b3IgdHJ5X2VtcGxhY2UoY29uc3RfaXRlcmF0b3IsIGNvbnN0IGtleV9h
cmc8Sz4mIGssIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgcmV0dXJuIHRyeV9lbXBsYWNlKGssIHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikuZmlyc3Q7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xh
c3MgSyA9IGtleV90eXBlLCBjbGFzcyBQID0gUG9saWN5PgorICBNYXBwZWRSZWZlcmVuY2U8UD4g
YXQoY29uc3Qga2V5X2FyZzxLPiYga2V5KSB7CisgICAgYXV0byBpdCA9IHRoaXMtPmZpbmQoa2V5
KTsKKyAgICBpZiAoaXQgPT0gdGhpcy0+ZW5kKCkpIHN0ZDo6YWJvcnQoKTsKKyAgICByZXR1cm4g
UG9saWN5Ojp2YWx1ZSgmKml0KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5
cGUsIGNsYXNzIFAgPSBQb2xpY3k+CisgIE1hcHBlZENvbnN0UmVmZXJlbmNlPFA+IGF0KGNvbnN0
IGtleV9hcmc8Sz4mIGtleSkgY29uc3QgeworICAgIGF1dG8gaXQgPSB0aGlzLT5maW5kKGtleSk7
CisgICAgaWYgKGl0ID09IHRoaXMtPmVuZCgpKSBzdGQ6OmFib3J0KCk7CisgICAgcmV0dXJuIFBv
bGljeTo6dmFsdWUoJippdCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBl
LCBjbGFzcyBQID0gUG9saWN5LCBLKiA9IG51bGxwdHI+CisgIE1hcHBlZFJlZmVyZW5jZTxQPiBv
cGVyYXRvcltdKGtleV9hcmc8Sz4mJiBrZXkpIHsKKyAgICByZXR1cm4gUG9saWN5Ojp2YWx1ZSgm
KnRyeV9lbXBsYWNlKHN0ZDo6Zm9yd2FyZDxLPihrZXkpKS5maXJzdCk7CisgIH0KKworICB0ZW1w
bGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBQID0gUG9saWN5PgorICBNYXBwZWRSZWZl
cmVuY2U8UD4gb3BlcmF0b3JbXShjb25zdCBrZXlfYXJnPEs+JiBrZXkpIHsKKyAgICByZXR1cm4g
UG9saWN5Ojp2YWx1ZSgmKnRyeV9lbXBsYWNlKGtleSkuZmlyc3QpOworICB9CisKKyBwcml2YXRl
OgorICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVj4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBi
b29sPiBpbnNlcnRfb3JfYXNzaWduX2ltcGwoSyYmIGssIFYmJiB2KSB7CisgICAgYXV0byByZXMg
PSB0aGlzLT5maW5kX29yX3ByZXBhcmVfaW5zZXJ0KGspOworICAgIGlmIChyZXMuc2Vjb25kKQor
ICAgICAgdGhpcy0+ZW1wbGFjZV9hdChyZXMuZmlyc3QsIHN0ZDo6Zm9yd2FyZDxLPihrKSwgc3Rk
Ojpmb3J3YXJkPFY+KHYpKTsKKyAgICBlbHNlCisgICAgICBQb2xpY3k6OnZhbHVlKCYqdGhpcy0+
aXRlcmF0b3JfYXQocmVzLmZpcnN0KSkgPSBzdGQ6OmZvcndhcmQ8Vj4odik7CisgICAgcmV0dXJu
IHt0aGlzLT5pdGVyYXRvcl9hdChyZXMuZmlyc3QpLCByZXMuc2Vjb25kfTsKKyAgfQorCisgIHRl
bXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzLi4uIEFyZ3M+CisgIHN0ZDo6cGFpcjxp
dGVyYXRvciwgYm9vbD4gdHJ5X2VtcGxhY2VfaW1wbChLJiYgaywgQXJncyYmLi4uIGFyZ3MpIHsK
KyAgICBhdXRvIHJlcyA9IHRoaXMtPmZpbmRfb3JfcHJlcGFyZV9pbnNlcnQoayk7CisgICAgaWYg
KHJlcy5zZWNvbmQpCisgICAgICB0aGlzLT5lbXBsYWNlX2F0KHJlcy5maXJzdCwgc3RkOjpwaWVj
ZXdpc2VfY29uc3RydWN0LAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfYXNf
dHVwbGUoc3RkOjpmb3J3YXJkPEs+KGspKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpm
b3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIHJldHVy
biB7dGhpcy0+aXRlcmF0b3JfYXQocmVzLmZpcnN0KSwgcmVzLnNlY29uZH07CisgIH0KK307CisK
K30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNs
CisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfUkFXX0hBU0hfTUFQX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDE1MzEy
OWZkMWU2ZWJlNzUxMzAwOWVhODQyM2ZkZWM0NWUzNjM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5jYwpAQCAtMCwwICsxLDQ1IEBACisv
LyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiCisKKyNpbmNsdWRlIDxjc3RkZGVmPgor
CisjaW5jbHVkZSAiYWJzbC9iYXNlL2NvbmZpZy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKworY29uc3RleHByIHNpemVfdCBHcm91cDo6a1dp
ZHRoOworCisvLyBSZXR1cm5zICJyYW5kb20iIHNlZWQuCitpbmxpbmUgc2l6ZV90IFJhbmRvbVNl
ZWQoKSB7CisjaWYgQUJTTF9IQVZFX1RIUkVBRF9MT0NBTAorICBzdGF0aWMgdGhyZWFkX2xvY2Fs
IHNpemVfdCBjb3VudGVyID0gMDsKKyAgc2l6ZV90IHZhbHVlID0gKytjb3VudGVyOworI2Vsc2Ug
ICAvLyBBQlNMX0hBVkVfVEhSRUFEX0xPQ0FMCisgIHN0YXRpYyBzdGQ6OmF0b21pYzxzaXplX3Q+
IGNvdW50ZXI7CisgIHNpemVfdCB2YWx1ZSA9IGNvdW50ZXIuZmV0Y2hfYWRkKDEsIHN0ZDo6bWVt
b3J5X29yZGVyX3JlbGF4ZWQpOworI2VuZGlmICAvLyBBQlNMX0hBVkVfVEhSRUFEX0xPQ0FMCisg
IHJldHVybiB2YWx1ZSBeIHN0YXRpY19jYXN0PHNpemVfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KCZjb3VudGVyKSk7Cit9CisKK2Jvb2wgU2hvdWxkSW5zZXJ0QmFja3dhcmRzKHNpemVf
dCBoYXNoLCBjdHJsX3QqIGN0cmwpIHsKKyAgLy8gVG8gYXZvaWQgcHJvYmxlbXMgd2l0aCB3ZWFr
IGhhc2hlcyBhbmQgc2luZ2xlIGJpdCB0ZXN0cywgd2UgdXNlICUgMTMuCisgIC8vIFRPRE8oa2Zt
LHNiZW56YSk6IHJldmlzaXQgYWZ0ZXIgd2UgZG8gdW5jb25kaXRpb25hbCBtaXhpbmcKKyAgcmV0
dXJuIChIMShoYXNoLCBjdHJsKSBeIFJhbmRvbVNlZWQoKSkgJSAxMyA+IDY7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBkYTkwZjc5YTRm
YzYzYTk2NzY1ODI3MjdjZmVjYzdlZDhjMmJlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuaApAQCAtMCwwICsxLDE5MTUgQEAKKy8vIENv
cHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gQW4gb3Blbi1hZGRyZXNz
aW5nCisvLyBoYXNodGFibGUgd2l0aCBxdWFkcmF0aWMgcHJvYmluZy4KKy8vCisvLyBUaGlzIGlz
IGEgbG93IGxldmVsIGhhc2h0YWJsZSBvbiB0b3Agb2Ygd2hpY2ggZGlmZmVyZW50IGludGVyZmFj
ZXMgY2FuIGJlCisvLyBpbXBsZW1lbnRlZCwgbGlrZSBmbGF0X2hhc2hfc2V0LCBub2RlX2hhc2hf
c2V0LCBzdHJpbmdfaGFzaF9zZXQsIGV0Yy4KKy8vCisvLyBUaGUgdGFibGUgaW50ZXJmYWNlIGlz
IHNpbWlsYXIgdG8gdGhhdCBvZiBzdGQ6OnVub3JkZXJlZF9zZXQuIE5vdGFibGUKKy8vIGRpZmZl
cmVuY2VzIGFyZSB0aGF0IG1vc3QgbWVtYmVyIGZ1bmN0aW9ucyBzdXBwb3J0IGhldGVyb2dlbmVv
dXMga2V5cyB3aGVuCisvLyBCT1RIIHRoZSBoYXNoIGFuZCBlcSBmdW5jdGlvbnMgYXJlIG1hcmtl
ZCBhcyB0cmFuc3BhcmVudC4gVGhleSBkbyBzbyBieQorLy8gcHJvdmlkaW5nIGEgdHlwZWRlZiBj
YWxsZWQgYGlzX3RyYW5zcGFyZW50YC4KKy8vCisvLyBXaGVuIGhldGVyb2dlbmVvdXMgbG9va3Vw
IGlzIGVuYWJsZWQsIGZ1bmN0aW9ucyB0aGF0IHRha2Uga2V5X3R5cGUgYWN0IGFzIGlmCisvLyB0
aGV5IGhhdmUgYW4gb3ZlcmxvYWQgc2V0IGxpa2U6CisvLworLy8gICBpdGVyYXRvciBmaW5kKGNv
bnN0IGtleV90eXBlJiBrZXkpOworLy8gICB0ZW1wbGF0ZSA8Y2xhc3MgSz4KKy8vICAgaXRlcmF0
b3IgZmluZChjb25zdCBLJiBrZXkpOworLy8KKy8vICAgc2l6ZV90eXBlIGVyYXNlKGNvbnN0IGtl
eV90eXBlJiBrZXkpOworLy8gICB0ZW1wbGF0ZSA8Y2xhc3MgSz4KKy8vICAgc2l6ZV90eXBlIGVy
YXNlKGNvbnN0IEsmIGtleSk7CisvLworLy8gICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGl0ZXJhdG9y
PiBlcXVhbF9yYW5nZShjb25zdCBrZXlfdHlwZSYga2V5KTsKKy8vICAgdGVtcGxhdGUgPGNsYXNz
IEs+CisvLyAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+IGVxdWFsX3JhbmdlKGNvbnN0
IEsmIGtleSk7CisvLworLy8gV2hlbiBoZXRlcm9nZW5lb3VzIGxvb2t1cCBpcyBkaXNhYmxlZCwg
b25seSB0aGUgZXhwbGljaXQgYGtleV90eXBlYCBvdmVybG9hZHMKKy8vIGV4aXN0LgorLy8KKy8v
IGZpbmQoKSBhbHNvIHN1cHBvcnRzIHBhc3NpbmcgdGhlIGhhc2ggZXhwbGljaXRseToKKy8vCisv
LyAgIGl0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X3R5cGUmIGtleSwgc2l6ZV90IGhhc2gpOworLy8g
ICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKy8vICAgaXRlcmF0b3IgZmluZChjb25zdCBVJiBrZXksIHNp
emVfdCBoYXNoKTsKKy8vCisvLyBJbiBhZGRpdGlvbiB0aGUgcG9pbnRlciB0byBlbGVtZW50IGFu
ZCBpdGVyYXRvciBzdGFiaWxpdHkgZ3VhcmFudGVlcyBhcmUKKy8vIHdlYWtlcjogYWxsIGl0ZXJh
dG9ycyBhbmQgcG9pbnRlcnMgYXJlIGludmFsaWRhdGVkIGFmdGVyIGEgbmV3IGVsZW1lbnQgaXMK
Ky8vIGluc2VydGVkLgorLy8KKy8vIElNUExFTUVOVEFUSU9OIERFVEFJTFMKKy8vCisvLyBUaGUg
dGFibGUgc3RvcmVzIGVsZW1lbnRzIGlubGluZSBpbiBhIHNsb3QgYXJyYXkuIEluIGFkZGl0aW9u
IHRvIHRoZSBzbG90CisvLyBhcnJheSB0aGUgdGFibGUgbWFpbnRhaW5zIHNvbWUgY29udHJvbCBz
dGF0ZSBwZXIgc2xvdC4gVGhlIGV4dHJhIHN0YXRlIGlzIG9uZQorLy8gYnl0ZSBwZXIgc2xvdCBh
bmQgc3RvcmVzIGVtcHR5IG9yIGRlbGV0ZWQgbWFya3MsIG9yIGFsdGVybmF0aXZlbHkgNyBiaXRz
IGZyb20KKy8vIHRoZSBoYXNoIG9mIGFuIG9jY3VwaWVkIHNsb3QuIFRoZSB0YWJsZSBpcyBzcGxp
dCBpbnRvIGxvZ2ljYWwgZ3JvdXBzIG9mCisvLyBzbG90cywgbGlrZSBzbzoKKy8vCisvLyAgICAg
IEdyb3VwIDEgICAgICAgICBHcm91cCAyICAgICAgICBHcm91cCAzCisvLyArLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCisvLyB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8CisvLyArLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCisvLworLy8gT24gbG9va3VwIHRoZSBoYXNo
IGlzIHNwbGl0IGludG8gdHdvIHBhcnRzOgorLy8gLSBIMjogNyBiaXRzICh0aG9zZSBzdG9yZWQg
aW4gdGhlIGNvbnRyb2wgYnl0ZXMpCisvLyAtIEgxOiB0aGUgcmVzdCBvZiB0aGUgYml0cworLy8g
VGhlIGdyb3VwcyBhcmUgcHJvYmVkIHVzaW5nIEgxLiBGb3IgZWFjaCBncm91cCB0aGUgc2xvdHMg
YXJlIG1hdGNoZWQgdG8gSDIgaW4KKy8vIHBhcmFsbGVsLiBCZWNhdXNlIEgyIGlzIDcgYml0cyAo
MTI4IHN0YXRlcykgYW5kIHRoZSBudW1iZXIgb2Ygc2xvdHMgcGVyIGdyb3VwCisvLyBpcyBsb3cg
KDggb3IgMTYpIGluIGFsbW9zdCBhbGwgY2FzZXMgYSBtYXRjaCBpbiBIMiBpcyBhbHNvIGEgbG9v
a3VwIGhpdC4KKy8vCisvLyBPbiBpbnNlcnQsIG9uY2UgdGhlIHJpZ2h0IGdyb3VwIGlzIGZvdW5k
IChhcyBpbiBsb29rdXApLCBpdHMgc2xvdHMgYXJlCisvLyBmaWxsZWQgaW4gb3JkZXIuCisvLwor
Ly8gT24gZXJhc2UgYSBzbG90IGlzIGNsZWFyZWQuIEluIGNhc2UgdGhlIGdyb3VwIGRpZCBub3Qg
aGF2ZSBhbnkgZW1wdHkgc2xvdHMKKy8vIGJlZm9yZSB0aGUgZXJhc2UsIHRoZSBlcmFzZWQgc2xv
dCBpcyBtYXJrZWQgYXMgZGVsZXRlZC4KKy8vCisvLyBHcm91cHMgd2l0aG91dCBlbXB0eSBzbG90
cyAoYnV0IG1heWJlIHdpdGggZGVsZXRlZCBzbG90cykgZXh0ZW5kIHRoZSBwcm9iZQorLy8gc2Vx
dWVuY2UuIFRoZSBwcm9iaW5nIGFsZ29yaXRobSBpcyBxdWFkcmF0aWMuIEdpdmVuIE4gdGhlIG51
bWJlciBvZiBncm91cHMsCisvLyB0aGUgcHJvYmluZyBmdW5jdGlvbiBmb3IgdGhlIGkndGggcHJv
YmUgaXM6CisvLworLy8gICBQKDApID0gSDEgJSBOCisvLworLy8gICBQKGkpID0gKFAoaSAtIDEp
ICsgaSkgJSBOCisvLworLy8gVGhpcyBwcm9iaW5nIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCBh
ZnRlciBOIHByb2JlcywgYWxsIHRoZSBncm91cHMgb2YgdGhlCisvLyB0YWJsZSB3aWxsIGJlIHBy
b2JlZCBleGFjdGx5IG9uY2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfUkFX
X0hBU0hfU0VUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1JBV19IQVNIX1NF
VF9IXworCisjaWZuZGVmIFNXSVNTVEFCTEVfSEFWRV9TU0UyCisjaWZkZWYgX19TU0UyX18KKyNk
ZWZpbmUgU1dJU1NUQUJMRV9IQVZFX1NTRTIgMQorI2Vsc2UKKyNkZWZpbmUgU1dJU1NUQUJMRV9I
QVZFX1NTRTIgMAorI2VuZGlmCisjZW5kaWYKKworI2lmbmRlZiBTV0lTU1RBQkxFX0hBVkVfU1NT
RTMKKyNpZmRlZiBfX1NTU0UzX18KKyNkZWZpbmUgU1dJU1NUQUJMRV9IQVZFX1NTU0UzIDEKKyNl
bHNlCisjZGVmaW5lIFNXSVNTVEFCTEVfSEFWRV9TU1NFMyAwCisjZW5kaWYKKyNlbmRpZgorCisj
aWYgU1dJU1NUQUJMRV9IQVZFX1NTU0UzICYmICFTV0lTU1RBQkxFX0hBVkVfU1NFMgorI2Vycm9y
ICJCYWQgY29uZmlndXJhdGlvbiEiCisjZW5kaWYKKworI2lmIFNXSVNTVEFCTEVfSEFWRV9TU0Uy
CisjaW5jbHVkZSA8eDg2aW50cmluLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGNzdHJpbmc+
CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1
dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaCIKKyNpbmNsdWRl
ICJhYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL3BvcnQu
aCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb21wcmVzc2VkX3R1cGxlLmgi
CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIgor
I2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oIgor
I2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZV9kZWJ1Z19ob29rcy5o
IgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91dC5oIgorI2luY2x1ZGUg
ImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5o
IgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhYnNsL3V0aWxp
dHkvdXRpbGl0eS5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2lu
dGVybmFsIHsKKwordGVtcGxhdGUgPHNpemVfdCBXaWR0aD4KK2NsYXNzIHByb2JlX3NlcSB7Cisg
cHVibGljOgorICBwcm9iZV9zZXEoc2l6ZV90IGhhc2gsIHNpemVfdCBtYXNrKSB7CisgICAgYXNz
ZXJ0KCgobWFzayArIDEpICYgbWFzaykgPT0gMCAmJiAibm90IGEgbWFzayIpOworICAgIG1hc2tf
ID0gbWFzazsKKyAgICBvZmZzZXRfID0gaGFzaCAmIG1hc2tfOworICB9CisgIHNpemVfdCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBvZmZzZXRfOyB9CisgIHNpemVfdCBvZmZzZXQoc2l6ZV90IGkp
IGNvbnN0IHsgcmV0dXJuIChvZmZzZXRfICsgaSkgJiBtYXNrXzsgfQorCisgIHZvaWQgbmV4dCgp
IHsKKyAgICBpbmRleF8gKz0gV2lkdGg7CisgICAgb2Zmc2V0XyArPSBpbmRleF87CisgICAgb2Zm
c2V0XyAmPSBtYXNrXzsKKyAgfQorICAvLyAwLWJhc2VkIHByb2JlIGluZGV4LiBUaGUgaS10aCBw
cm9iZSBpbiB0aGUgcHJvYmUgc2VxdWVuY2UuCisgIHNpemVfdCBpbmRleCgpIGNvbnN0IHsgcmV0
dXJuIGluZGV4XzsgfQorCisgcHJpdmF0ZToKKyAgc2l6ZV90IG1hc2tfOworICBzaXplX3Qgb2Zm
c2V0XzsKKyAgc2l6ZV90IGluZGV4XyA9IDA7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFp
bmVyS2V5LCBjbGFzcyBIYXNoLCBjbGFzcyBFcT4KK3N0cnVjdCBSZXF1aXJlVXNhYmxlS2V5IHsK
KyAgdGVtcGxhdGUgPGNsYXNzIFBhc3NlZEtleSwgY2xhc3MuLi4gQXJncz4KKyAgc3RkOjpwYWly
PAorICAgICAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPGNvbnN0IEhhc2gmPigpKHN0ZDo6ZGVjbHZh
bDxjb25zdCBQYXNzZWRLZXkmPigpKSksCisgICAgICBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Y29u
c3QgRXEmPigpKHN0ZDo6ZGVjbHZhbDxjb25zdCBDb250YWluZXJLZXkmPigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8Y29uc3QgUGFzc2Vk
S2V5Jj4oKSkpPioKKyAgb3BlcmF0b3IoKShjb25zdCBQYXNzZWRLZXkmLCBjb25zdCBBcmdzJi4u
LikgY29uc3Q7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgRSwgY2xhc3MgUG9saWN5LCBjbGFzcyBI
YXNoLCBjbGFzcyBFcSwgY2xhc3MuLi4gVHM+CitzdHJ1Y3QgSXNEZWNvbXBvc2FibGUgOiBzdGQ6
OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBQb2xpY3ksIGNsYXNzIEhhc2gsIGNs
YXNzIEVxLCBjbGFzcy4uLiBUcz4KK3N0cnVjdCBJc0RlY29tcG9zYWJsZTwKKyAgICBhYnNsOjp2
b2lkX3Q8ZGVjbHR5cGUoCisgICAgICAgIFBvbGljeTo6YXBwbHkoUmVxdWlyZVVzYWJsZUtleTx0
eXBlbmFtZSBQb2xpY3k6OmtleV90eXBlLCBIYXNoLCBFcT4oKSwKKyAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmRlY2x2YWw8VHM+KCkuLi4pKT4sCisgICAgUG9saWN5LCBIYXNoLCBFcSwgVHMu
Li4+IDogc3RkOjp0cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcywgY2xhc3MgPSB2b2lk
Pgorc3RydWN0IElzVHJhbnNwYXJlbnQgOiBzdGQ6OmZhbHNlX3R5cGUge307Cit0ZW1wbGF0ZSA8
Y2xhc3MgVD4KK3N0cnVjdCBJc1RyYW5zcGFyZW50PFQsIGFic2w6OnZvaWRfdDx0eXBlbmFtZSBU
Ojppc190cmFuc3BhcmVudD4+CisgICAgOiBzdGQ6OnRydWVfdHlwZSB7fTsKKworLy8gVE9ETyhh
bGtpcyk6IFN3aXRjaCB0byBzdGQ6OmlzX25vdGhyb3dfc3dhcHBhYmxlIHdoZW4gZ2NjL2NsYW5n
IHN1cHBvcnRzIGl0LgordGVtcGxhdGUgPGNsYXNzIFQ+Citjb25zdGV4cHIgYm9vbCBJc05vVGhy
b3dTd2FwcGFibGUoKSB7CisgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgcmV0dXJuIG5vZXhjZXB0KHN3
YXAoc3RkOjpkZWNsdmFsPFQmPigpLCBzdGQ6OmRlY2x2YWw8VCY+KCkpKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitpbnQgVHJhaWxpbmdaZXJvcyhUIHgpIHsKKyAgcmV0dXJuIHNpemVv
ZihUKSA9PSA4ID8gYmFzZV9pbnRlcm5hbDo6Q291bnRUcmFpbGluZ1plcm9zTm9uWmVybzY0KHgp
CisgICAgICAgICAgICAgICAgICAgICAgICA6IGJhc2VfaW50ZXJuYWw6OkNvdW50VHJhaWxpbmda
ZXJvc05vblplcm8zMih4KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbnQgTGVhZGlu
Z1plcm9zKFQgeCkgeworICByZXR1cm4gc2l6ZW9mKFQpID09IDggPyBiYXNlX2ludGVybmFsOjpD
b3VudExlYWRpbmdaZXJvczY0KHgpCisgICAgICAgICAgICAgICAgICAgICAgICA6IGJhc2VfaW50
ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zMzIoeCk7Cit9CisKKy8vIEFuIGFic3RyYWN0aW9uIG92
ZXIgYSBiaXRtYXNrLiBJdCBwcm92aWRlcyBhbiBlYXN5IHdheSB0byBpdGVyYXRlIHRocm91Z2gg
dGhlCisvLyBpbmRleGVzIG9mIHRoZSBzZXQgYml0cyBvZiBhIGJpdG1hc2suICBXaGVuIFNoaWZ0
PTAgKHBsYXRmb3JtcyB3aXRoIFNTRSksCisvLyB0aGlzIGlzIGEgdHJ1ZSBiaXRtYXNrLiAgT24g
bm9uLVNTRSwgcGxhdGZvcm1zIHRoZSBhcml0aGVtYXRpYyB1c2VkIHRvCisvLyBlbXVsYXRlIHRo
ZSBTU0UgYmVoYXZpb3Igd29ya3MgaW4gYnl0ZXMgKFNoaWZ0PTMpIGFuZCBsZWF2ZXMgZWFjaCBi
eXRlcyBhcworLy8gZWl0aGVyIDB4MDAgb3IgMHg4MC4KKy8vCisvLyBGb3IgZXhhbXBsZToKKy8v
ICAgZm9yIChpbnQgaSA6IEJpdE1hc2s8dWludDMyX3QsIDE2PigweDUpKSAtPiB5aWVsZHMgMCwg
MgorLy8gICBmb3IgKGludCBpIDogQml0TWFzazx1aW50NjRfdCwgOCwgMz4oMHgwMDAwMDAwMDgw
ODAwMDAwKSkgLT4geWllbGRzIDIsIDMKK3RlbXBsYXRlIDxjbGFzcyBULCBpbnQgU2lnbmlmaWNh
bnRCaXRzLCBpbnQgU2hpZnQgPSAwPgorY2xhc3MgQml0TWFzayB7CisgIHN0YXRpY19hc3NlcnQo
c3RkOjppc191bnNpZ25lZDxUPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydChTaGlmdCA9
PSAwIHx8IFNoaWZ0ID09IDMsICIiKTsKKworIHB1YmxpYzoKKyAgLy8gVGhlc2UgYXJlIHVzZWZ1
bCBmb3IgdW5pdCB0ZXN0cyAoZ3VuaXQpLgorICB1c2luZyB2YWx1ZV90eXBlID0gaW50OworICB1
c2luZyBpdGVyYXRvciA9IEJpdE1hc2s7CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gQml0TWFz
azsKKworICBleHBsaWNpdCBCaXRNYXNrKFQgbWFzaykgOiBtYXNrXyhtYXNrKSB7fQorICBCaXRN
YXNrJiBvcGVyYXRvcisrKCkgeworICAgIG1hc2tfICY9IChtYXNrXyAtIDEpOworICAgIHJldHVy
biAqdGhpczsKKyAgfQorICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
bWFza18gIT0gMDsgfQorICBpbnQgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gTG93ZXN0Qml0
U2V0KCk7IH0KKyAgaW50IExvd2VzdEJpdFNldCgpIGNvbnN0IHsKKyAgICByZXR1cm4gY29udGFp
bmVyX2ludGVybmFsOjpUcmFpbGluZ1plcm9zKG1hc2tfKSA+PiBTaGlmdDsKKyAgfQorICBpbnQg
SGlnaGVzdEJpdFNldCgpIGNvbnN0IHsKKyAgICByZXR1cm4gKHNpemVvZihUKSAqIENIQVJfQklU
IC0gY29udGFpbmVyX2ludGVybmFsOjpMZWFkaW5nWmVyb3MobWFza18pIC0KKyAgICAgICAgICAg
IDEpID4+CisgICAgICAgICAgIFNoaWZ0OworICB9CisKKyAgQml0TWFzayBiZWdpbigpIGNvbnN0
IHsgcmV0dXJuICp0aGlzOyB9CisgIEJpdE1hc2sgZW5kKCkgY29uc3QgeyByZXR1cm4gQml0TWFz
aygwKTsgfQorCisgIGludCBUcmFpbGluZ1plcm9zKCkgY29uc3QgeworICAgIHJldHVybiBjb250
YWluZXJfaW50ZXJuYWw6OlRyYWlsaW5nWmVyb3MobWFza18pID4+IFNoaWZ0OworICB9CisKKyAg
aW50IExlYWRpbmdaZXJvcygpIGNvbnN0IHsKKyAgICBjb25zdGV4cHIgaW50IHRvdGFsX3NpZ25p
ZmljYW50X2JpdHMgPSBTaWduaWZpY2FudEJpdHMgPDwgU2hpZnQ7CisgICAgY29uc3RleHByIGlu
dCBleHRyYV9iaXRzID0gc2l6ZW9mKFQpICogOCAtIHRvdGFsX3NpZ25pZmljYW50X2JpdHM7Cisg
ICAgcmV0dXJuIGNvbnRhaW5lcl9pbnRlcm5hbDo6TGVhZGluZ1plcm9zKG1hc2tfIDw8IGV4dHJh
X2JpdHMpID4+IFNoaWZ0OworICB9CisKKyBwcml2YXRlOgorICBmcmllbmQgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEJpdE1hc2smIGEsIGNvbnN0IEJpdE1hc2smIGIpIHsKKyAgICByZXR1cm4gYS5t
YXNrXyA9PSBiLm1hc2tfOworICB9CisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0
TWFzayYgYSwgY29uc3QgQml0TWFzayYgYikgeworICAgIHJldHVybiBhLm1hc2tfICE9IGIubWFz
a187CisgIH0KKworICBUIG1hc2tfOworfTsKKwordXNpbmcgY3RybF90ID0gc2lnbmVkIGNoYXI7
Cit1c2luZyBoMl90ID0gdWludDhfdDsKKworLy8gVGhlIHZhbHVlcyBoZXJlIGFyZSBzZWxlY3Rl
ZCBmb3IgbWF4aW11bSBwZXJmb3JtYW5jZS4gU2VlIHRoZSBzdGF0aWMgYXNzZXJ0cworLy8gYmVs
b3cgZm9yIGRldGFpbHMuCitlbnVtIEN0cmwgOiBjdHJsX3QgeworICBrRW1wdHkgPSAtMTI4LCAg
IC8vIDBiMTAwMDAwMDAKKyAga0RlbGV0ZWQgPSAtMiwgICAvLyAwYjExMTExMTEwCisgIGtTZW50
aW5lbCA9IC0xLCAgLy8gMGIxMTExMTExMQorfTsKK3N0YXRpY19hc3NlcnQoCisgICAga0VtcHR5
ICYga0RlbGV0ZWQgJiBrU2VudGluZWwgJiAweDgwLAorICAgICJTcGVjaWFsIG1hcmtlcnMgbmVl
ZCB0byBoYXZlIHRoZSBNU0IgdG8gbWFrZSBjaGVja2luZyBmb3IgdGhlbSBlZmZpY2llbnQiKTsK
K3N0YXRpY19hc3NlcnQoa0VtcHR5IDwga1NlbnRpbmVsICYmIGtEZWxldGVkIDwga1NlbnRpbmVs
LAorICAgICAgICAgICAgICAia0VtcHR5IGFuZCBrRGVsZXRlZCBtdXN0IGJlIHNtYWxsZXIgdGhh
biBrU2VudGluZWwgdG8gbWFrZSB0aGUgIgorICAgICAgICAgICAgICAiU0lNRCB0ZXN0IG9mIElz
RW1wdHlPckRlbGV0ZWQoKSBlZmZpY2llbnQiKTsKK3N0YXRpY19hc3NlcnQoa1NlbnRpbmVsID09
IC0xLAorICAgICAgICAgICAgICAia1NlbnRpbmVsIG11c3QgYmUgLTEgdG8gZWxpZGUgbG9hZGlu
ZyBpdCBmcm9tIG1lbW9yeSBpbnRvIFNJTUQgIgorICAgICAgICAgICAgICAicmVnaXN0ZXJzIChw
Y21wZXFkIHhtbSwgeG1tKSIpOworc3RhdGljX2Fzc2VydChrRW1wdHkgPT0gLTEyOCwKKyAgICAg
ICAgICAgICAgImtFbXB0eSBtdXN0IGJlIC0xMjggdG8gbWFrZSB0aGUgU0lNRCBjaGVjayBmb3Ig
aXRzICIKKyAgICAgICAgICAgICAgImV4aXN0ZW5jZSBlZmZpY2llbnQgKHBzaWduYiB4bW0sIHht
bSkiKTsKK3N0YXRpY19hc3NlcnQofmtFbXB0eSAmIH5rRGVsZXRlZCAmIGtTZW50aW5lbCAmIDB4
N0YsCisgICAgICAgICAgICAgICJrRW1wdHkgYW5kIGtEZWxldGVkIG11c3Qgc2hhcmUgYW4gdW5z
ZXQgYml0IHRoYXQgaXMgbm90IHNoYXJlZCAiCisgICAgICAgICAgICAgICJieSBrU2VudGluZWwg
dG8gbWFrZSB0aGUgc2NhbGFyIHRlc3QgZm9yIE1hdGNoRW1wdHlPckRlbGV0ZWQoKSAiCisgICAg
ICAgICAgICAgICJlZmZpY2llbnQiKTsKK3N0YXRpY19hc3NlcnQoa0RlbGV0ZWQgPT0gLTIsCisg
ICAgICAgICAgICAgICJrRGVsZXRlZCBtdXN0IGJlIC0yIHRvIG1ha2UgdGhlIGltcGxlbWVudGF0
aW9uIG9mICIKKyAgICAgICAgICAgICAgIkNvbnZlcnRTcGVjaWFsVG9FbXB0eUFuZEZ1bGxUb0Rl
bGV0ZWQgZWZmaWNpZW50Iik7CisKKy8vIEEgc2luZ2xlIGJsb2NrIG9mIGVtcHR5IGNvbnRyb2wg
Ynl0ZXMgZm9yIHRhYmxlcyB3aXRob3V0IGFueSBzbG90cyBhbGxvY2F0ZWQuCisvLyBUaGlzIGVu
YWJsZXMgcmVtb3ZpbmcgYSBicmFuY2ggaW4gdGhlIGhvdCBwYXRoIG9mIGZpbmQoKS4KK2lubGlu
ZSBjdHJsX3QqIEVtcHR5R3JvdXAoKSB7CisgIGFsaWduYXMoMTYpIHN0YXRpYyBjb25zdGV4cHIg
Y3RybF90IGVtcHR5X2dyb3VwW10gPSB7CisgICAgICBrU2VudGluZWwsIGtFbXB0eSwga0VtcHR5
LCBrRW1wdHksIGtFbXB0eSwga0VtcHR5LCBrRW1wdHksIGtFbXB0eSwKKyAgICAgIGtFbXB0eSwg
ICAga0VtcHR5LCBrRW1wdHksIGtFbXB0eSwga0VtcHR5LCBrRW1wdHksIGtFbXB0eSwga0VtcHR5
fTsKKyAgcmV0dXJuIGNvbnN0X2Nhc3Q8Y3RybF90Kj4oZW1wdHlfZ3JvdXApOworfQorCisvLyBN
aXhlcyBhIHJhbmRvbWx5IGdlbmVyYXRlZCBwZXItcHJvY2VzcyBzZWVkIHdpdGggYGhhc2hgIGFu
ZCBgY3RybGAgdG8KKy8vIHJhbmRvbWl6ZSBpbnNlcnRpb24gb3JkZXIgd2l0aGluIGdyb3Vwcy4K
K2Jvb2wgU2hvdWxkSW5zZXJ0QmFja3dhcmRzKHNpemVfdCBoYXNoLCBjdHJsX3QqIGN0cmwpOwor
CisvLyBSZXR1cm5zIGEgaGFzaCBzZWVkLgorLy8KKy8vIFRoZSBzZWVkIGNvbnNpc3RzIG9mIHRo
ZSBjdHJsXyBwb2ludGVyLCB3aGljaCBhZGRzIGVub3VnaCBlbnRyb3B5IHRvIGVuc3VyZQorLy8g
bm9uLWRldGVybWluaXNtIG9mIGl0ZXJhdGlvbiBvcmRlciBpbiBtb3N0IGNhc2VzLgoraW5saW5l
IHNpemVfdCBIYXNoU2VlZChjb25zdCBjdHJsX3QqIGN0cmwpIHsKKyAgLy8gVGhlIGxvdyBiaXRz
IG9mIHRoZSBwb2ludGVyIGhhdmUgbGl0dGxlIG9yIG5vIGVudHJvcHkgYmVjYXVzZSBvZgorICAv
LyBhbGlnbm1lbnQuIFdlIHNoaWZ0IHRoZSBwb2ludGVyIHRvIHRyeSB0byB1c2UgaGlnaGVyIGVu
dHJvcHkgYml0cy4gQQorICAvLyBnb29kIG51bWJlciBzZWVtcyB0byBiZSAxMiBiaXRzLCBiZWNh
dXNlIHRoYXQgYWxpZ25zIHdpdGggcGFnZSBzaXplLgorICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KGN0cmwpID4+IDEyOworfQorCitpbmxpbmUgc2l6ZV90IEgxKHNpemVfdCBo
YXNoLCBjb25zdCBjdHJsX3QqIGN0cmwpIHsKKyAgcmV0dXJuIChoYXNoID4+IDcpIF4gSGFzaFNl
ZWQoY3RybCk7Cit9CitpbmxpbmUgY3RybF90IEgyKHNpemVfdCBoYXNoKSB7IHJldHVybiBoYXNo
ICYgMHg3RjsgfQorCitpbmxpbmUgYm9vbCBJc0VtcHR5KGN0cmxfdCBjKSB7IHJldHVybiBjID09
IGtFbXB0eTsgfQoraW5saW5lIGJvb2wgSXNGdWxsKGN0cmxfdCBjKSB7IHJldHVybiBjID49IDA7
IH0KK2lubGluZSBib29sIElzRGVsZXRlZChjdHJsX3QgYykgeyByZXR1cm4gYyA9PSBrRGVsZXRl
ZDsgfQoraW5saW5lIGJvb2wgSXNFbXB0eU9yRGVsZXRlZChjdHJsX3QgYykgeyByZXR1cm4gYyA8
IGtTZW50aW5lbDsgfQorCisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTRTIKK3N0cnVjdCBHcm91cCB7
CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtXaWR0aCA9IDE2OyAgLy8gdGhlIG51bWJlciBv
ZiBzbG90cyBwZXIgZ3JvdXAKKworICBleHBsaWNpdCBHcm91cChjb25zdCBjdHJsX3QqIHBvcykg
eworICAgIGN0cmwgPSBfbW1fbG9hZHVfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBfX20x
MjhpKj4ocG9zKSk7CisgIH0KKworICAvLyBSZXR1cm5zIGEgYml0bWFzayByZXByZXNlbnRpbmcg
dGhlIHBvc2l0aW9ucyBvZiBzbG90cyB0aGF0IG1hdGNoIGhhc2guCisgIEJpdE1hc2s8dWludDMy
X3QsIGtXaWR0aD4gTWF0Y2goaDJfdCBoYXNoKSBjb25zdCB7CisgICAgYXV0byBtYXRjaCA9IF9t
bV9zZXQxX2VwaTgoaGFzaCk7CisgICAgcmV0dXJuIEJpdE1hc2s8dWludDMyX3QsIGtXaWR0aD4o
CisgICAgICAgIF9tbV9tb3ZlbWFza19lcGk4KF9tbV9jbXBlcV9lcGk4KG1hdGNoLCBjdHJsKSkp
OworICB9CisKKyAgLy8gUmV0dXJucyBhIGJpdG1hc2sgcmVwcmVzZW50aW5nIHRoZSBwb3NpdGlv
bnMgb2YgZW1wdHkgc2xvdHMuCisgIEJpdE1hc2s8dWludDMyX3QsIGtXaWR0aD4gTWF0Y2hFbXB0
eSgpIGNvbnN0IHsKKyNpZiBTV0lTU1RBQkxFX0hBVkVfU1NTRTMKKyAgICAvLyBUaGlzIG9ubHkg
d29ya3MgYmVjYXVzZSBrRW1wdHkgaXMgLTEyOC4KKyAgICByZXR1cm4gQml0TWFzazx1aW50MzJf
dCwga1dpZHRoPigKKyAgICAgICAgX21tX21vdmVtYXNrX2VwaTgoX21tX3NpZ25fZXBpOChjdHJs
LCBjdHJsKSkpOworI2Vsc2UKKyAgICByZXR1cm4gTWF0Y2goa0VtcHR5KTsKKyNlbmRpZgorICB9
CisKKyAgLy8gUmV0dXJucyBhIGJpdG1hc2sgcmVwcmVzZW50aW5nIHRoZSBwb3NpdGlvbnMgb2Yg
ZW1wdHkgb3IgZGVsZXRlZCBzbG90cy4KKyAgQml0TWFzazx1aW50MzJfdCwga1dpZHRoPiBNYXRj
aEVtcHR5T3JEZWxldGVkKCkgY29uc3QgeworICAgIGF1dG8gc3BlY2lhbCA9IF9tbV9zZXQxX2Vw
aTgoa1NlbnRpbmVsKTsKKyAgICByZXR1cm4gQml0TWFzazx1aW50MzJfdCwga1dpZHRoPigKKyAg
ICAgICAgX21tX21vdmVtYXNrX2VwaTgoX21tX2NtcGd0X2VwaTgoc3BlY2lhbCwgY3RybCkpKTsK
KyAgfQorCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0cmFpbGluZyBlbXB0eSBvciBkZWxl
dGVkIGVsZW1lbnRzIGluIHRoZSBncm91cC4KKyAgdWludDMyX3QgQ291bnRMZWFkaW5nRW1wdHlP
ckRlbGV0ZWQoKSBjb25zdCB7CisgICAgYXV0byBzcGVjaWFsID0gX21tX3NldDFfZXBpOChrU2Vu
dGluZWwpOworICAgIHJldHVybiBUcmFpbGluZ1plcm9zKF9tbV9tb3ZlbWFza19lcGk4KF9tbV9j
bXBndF9lcGk4KHNwZWNpYWwsIGN0cmwpKSArIDEpOworICB9CisKKyAgdm9pZCBDb252ZXJ0U3Bl
Y2lhbFRvRW1wdHlBbmRGdWxsVG9EZWxldGVkKGN0cmxfdCogZHN0KSBjb25zdCB7CisgICAgYXV0
byBtc2JzID0gX21tX3NldDFfZXBpOCgweDgwKTsKKyAgICBhdXRvIHgxMjYgPSBfbW1fc2V0MV9l
cGk4KDEyNik7CisjaWYgU1dJU1NUQUJMRV9IQVZFX1NTU0UzCisgICAgYXV0byByZXMgPSBfbW1f
b3Jfc2kxMjgoX21tX3NodWZmbGVfZXBpOCh4MTI2LCBjdHJsKSwgbXNicyk7CisjZWxzZQorICAg
IGF1dG8gemVybyA9IF9tbV9zZXR6ZXJvX3NpMTI4KCk7CisgICAgYXV0byBzcGVjaWFsX21hc2sg
PSBfbW1fY21wZ3RfZXBpOCh6ZXJvLCBjdHJsKTsKKyAgICBhdXRvIHJlcyA9IF9tbV9vcl9zaTEy
OChtc2JzLCBfbW1fYW5kbm90X3NpMTI4KHNwZWNpYWxfbWFzaywgeDEyNikpOworI2VuZGlmCisg
ICAgX21tX3N0b3JldV9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkqPihkc3QpLCByZXMp
OworICB9CisKKyAgX19tMTI4aSBjdHJsOworfTsKKyNlbHNlCitzdHJ1Y3QgR3JvdXAgeworICBz
dGF0aWMgY29uc3RleHByIHNpemVfdCBrV2lkdGggPSA4OworCisgIGV4cGxpY2l0IEdyb3VwKGNv
bnN0IGN0cmxfdCogcG9zKSA6IGN0cmwobGl0dGxlX2VuZGlhbjo6TG9hZDY0KHBvcykpIHt9CisK
KyAgQml0TWFzazx1aW50NjRfdCwga1dpZHRoLCAzPiBNYXRjaChoMl90IGhhc2gpIGNvbnN0IHsK
KyAgICAvLyBGb3IgdGhlIHRlY2huaXF1ZSwgc2VlOgorICAgIC8vIGh0dHA6Ly9ncmFwaGljcy5z
dGFuZm9yZC5lZHUvfnNlYW5kZXIvYml0aGFja3MuaHRtbCMjVmFsdWVJbldvcmQKKyAgICAvLyAo
RGV0ZXJtaW5lIGlmIGEgd29yZCBoYXMgYSBieXRlIGVxdWFsIHRvIG4pLgorICAgIC8vCisgICAg
Ly8gQ2F2ZWF0OiB0aGVyZSBhcmUgZmFsc2UgcG9zaXRpdmVzIGJ1dDoKKyAgICAvLyAtIHRoZXkg
b25seSBvY2N1ciBpZiB0aGVyZSBpcyBhIHJlYWwgbWF0Y2gKKyAgICAvLyAtIHRoZXkgbmV2ZXIg
b2NjdXIgb24ga0VtcHR5LCBrRGVsZXRlZCwga1NlbnRpbmVsCisgICAgLy8gLSB0aGV5IHdpbGwg
YmUgaGFuZGxlZCBncmFjZWZ1bGx5IGJ5IHN1YnNlcXVlbnQgY2hlY2tzIGluIGNvZGUKKyAgICAv
LworICAgIC8vIEV4YW1wbGU6CisgICAgLy8gICB2ID0gMHgxNzE2MTUxNDEzMTIxMTEwCisgICAg
Ly8gICBoYXNoID0gMHgxMgorICAgIC8vICAgcmV0dmFsID0gKHYgLSBsc2JzKSAmIH52ICYgbXNi
cyA9IDB4MDAwMDAwMDA4MDgwMDAwMAorICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtc2JzID0gMHg4
MDgwODA4MDgwODA4MDgwVUxMOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBsc2JzID0gMHgwMTAx
MDEwMTAxMDEwMTAxVUxMOworICAgIGF1dG8geCA9IGN0cmwgXiAobHNicyAqIGhhc2gpOworICAg
IHJldHVybiBCaXRNYXNrPHVpbnQ2NF90LCBrV2lkdGgsIDM+KCh4IC0gbHNicykgJiB+eCAmIG1z
YnMpOworICB9CisKKyAgQml0TWFzazx1aW50NjRfdCwga1dpZHRoLCAzPiBNYXRjaEVtcHR5KCkg
Y29uc3QgeworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtc2JzID0gMHg4MDgwODA4MDgwODA4MDgw
VUxMOworICAgIHJldHVybiBCaXRNYXNrPHVpbnQ2NF90LCBrV2lkdGgsIDM+KChjdHJsICYgKH5j
dHJsIDw8IDYpKSAmIG1zYnMpOworICB9CisKKyAgQml0TWFzazx1aW50NjRfdCwga1dpZHRoLCAz
PiBNYXRjaEVtcHR5T3JEZWxldGVkKCkgY29uc3QgeworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBt
c2JzID0gMHg4MDgwODA4MDgwODA4MDgwVUxMOworICAgIHJldHVybiBCaXRNYXNrPHVpbnQ2NF90
LCBrV2lkdGgsIDM+KChjdHJsICYgKH5jdHJsIDw8IDcpKSAmIG1zYnMpOworICB9CisKKyAgdWlu
dDMyX3QgQ291bnRMZWFkaW5nRW1wdHlPckRlbGV0ZWQoKSBjb25zdCB7CisgICAgY29uc3RleHBy
IHVpbnQ2NF90IGdhcHMgPSAweDAwRkVGRUZFRkVGRUZFRkVVTEw7CisgICAgcmV0dXJuIChUcmFp
bGluZ1plcm9zKCgofmN0cmwgJiAoY3RybCA+PiA3KSkgfCBnYXBzKSArIDEpICsgNykgPj4gMzsK
KyAgfQorCisgIHZvaWQgQ29udmVydFNwZWNpYWxUb0VtcHR5QW5kRnVsbFRvRGVsZXRlZChjdHJs
X3QqIGRzdCkgY29uc3QgeworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtc2JzID0gMHg4MDgwODA4
MDgwODA4MDgwVUxMOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBsc2JzID0gMHgwMTAxMDEwMTAx
MDEwMTAxVUxMOworICAgIGF1dG8geCA9IGN0cmwgJiBtc2JzOworICAgIGF1dG8gcmVzID0gKH54
ICsgKHggPj4gNykpICYgfmxzYnM7CisgICAgbGl0dGxlX2VuZGlhbjo6U3RvcmU2NChkc3QsIHJl
cyk7CisgIH0KKworICB1aW50NjRfdCBjdHJsOworfTsKKyNlbmRpZiAgLy8gU1dJU1NUQUJMRV9I
QVZFX1NTRTIKKwordGVtcGxhdGUgPGNsYXNzIFBvbGljeSwgY2xhc3MgSGFzaCwgY2xhc3MgRXEs
IGNsYXNzIEFsbG9jPgorY2xhc3MgcmF3X2hhc2hfc2V0OworCisKK2lubGluZSBib29sIElzVmFs
aWRDYXBhY2l0eShzaXplX3QgbikgeworICByZXR1cm4gKChuICsgMSkgJiBuKSA9PSAwICYmIG4g
Pj0gR3JvdXA6OmtXaWR0aCAtIDE7Cit9CisKKy8vIFBSRUNPTkRJVElPTjoKKy8vICAgSXNWYWxp
ZENhcGFjaXR5KGNhcGFjaXR5KQorLy8gICBjdHJsW2NhcGFjaXR5XSA9PSBrU2VudGluZWwKKy8v
ICAgY3RybFtpXSAhPSBrU2VudGluZWwgZm9yIGFsbCBpIDwgY2FwYWNpdHkKKy8vIEFwcGxpZXMg
bWFwcGluZyBmb3IgZXZlcnkgYnl0ZSBpbiBjdHJsOgorLy8gICBERUxFVEVEIC0+IEVNUFRZCisv
LyAgIEVNUFRZIC0+IEVNUFRZCisvLyAgIEZVTEwgLT4gREVMRVRFRAoraW5saW5lIHZvaWQgQ29u
dmVydERlbGV0ZWRUb0VtcHR5QW5kRnVsbFRvRGVsZXRlZCgKKyAgICBjdHJsX3QqIGN0cmwsIHNp
emVfdCBjYXBhY2l0eSkgeworICBhc3NlcnQoY3RybFtjYXBhY2l0eV0gPT0ga1NlbnRpbmVsKTsK
KyAgYXNzZXJ0KElzVmFsaWRDYXBhY2l0eShjYXBhY2l0eSkpOworICBmb3IgKGN0cmxfdCogcG9z
ID0gY3RybDsgcG9zICE9IGN0cmwgKyBjYXBhY2l0eSArIDE7IHBvcyArPSBHcm91cDo6a1dpZHRo
KSB7CisgICAgR3JvdXB7cG9zfS5Db252ZXJ0U3BlY2lhbFRvRW1wdHlBbmRGdWxsVG9EZWxldGVk
KHBvcyk7CisgIH0KKyAgLy8gQ29weSB0aGUgY2xvbmVkIGN0cmwgYnl0ZXMuCisgIHN0ZDo6bWVt
Y3B5KGN0cmwgKyBjYXBhY2l0eSArIDEsIGN0cmwsIEdyb3VwOjprV2lkdGgpOworICBjdHJsW2Nh
cGFjaXR5XSA9IGtTZW50aW5lbDsKK30KKworLy8gUm91bmRzIHVwIHRoZSBjYXBhY2l0eSB0byB0
aGUgbmV4dCBwb3dlciBvZiAyIG1pbnVzIDEgYW5kIGVuc3VyZXMgaXQgaXMKKy8vIGdyZWF0ZXIg
b3IgZXF1YWwgdG8gR3JvdXA6OmtXaWR0aCAtIDEuCitpbmxpbmUgc2l6ZV90IE5vcm1hbGl6ZUNh
cGFjaXR5KHNpemVfdCBuKSB7CisgIGNvbnN0ZXhwciBzaXplX3Qga01pbkNhcGFjaXR5ID0gR3Jv
dXA6OmtXaWR0aCAtIDE7CisgIHJldHVybiBuIDw9IGtNaW5DYXBhY2l0eQorICAgICAgICAgICAg
ID8ga01pbkNhcGFjaXR5CisgICAgICAgICAgICAgOiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpID4+IExlYWRpbmdaZXJvcyhuKTsKK30KKworLy8gVGhlIG5vZGVfaGFuZGxlIGNv
bmNlcHQgZnJvbSBDKysxNy4KKy8vIFdlIHNwZWNpYWxpemUgbm9kZV9oYW5kbGUgZm9yIHNldHMg
YW5kIG1hcHMuIG5vZGVfaGFuZGxlX2Jhc2UgaG9sZHMgdGhlCisvLyBjb21tb24gQVBJIG9mIGJv
dGguCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUG9saWN5LCB0eXBlbmFtZSBBbGxvYz4KK2NsYXNzIG5v
ZGVfaGFuZGxlX2Jhc2UgeworIHByb3RlY3RlZDoKKyAgdXNpbmcgUG9saWN5VHJhaXRzID0gaGFz
aF9wb2xpY3lfdHJhaXRzPFBvbGljeT47CisgIHVzaW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1lIFBv
bGljeVRyYWl0czo6c2xvdF90eXBlOworCisgcHVibGljOgorICB1c2luZyBhbGxvY2F0b3JfdHlw
ZSA9IEFsbG9jOworCisgIGNvbnN0ZXhwciBub2RlX2hhbmRsZV9iYXNlKCkge30KKyAgbm9kZV9o
YW5kbGVfYmFzZShub2RlX2hhbmRsZV9iYXNlJiYgb3RoZXIpIG5vZXhjZXB0IHsKKyAgICAqdGhp
cyA9IHN0ZDo6bW92ZShvdGhlcik7CisgIH0KKyAgfm5vZGVfaGFuZGxlX2Jhc2UoKSB7IGRlc3Ry
b3koKTsgfQorICBub2RlX2hhbmRsZV9iYXNlJiBvcGVyYXRvcj0obm9kZV9oYW5kbGVfYmFzZSYm
IG90aGVyKSB7CisgICAgZGVzdHJveSgpOworICAgIGlmICghb3RoZXIuZW1wdHkoKSkgeworICAg
ICAgYWxsb2NfID0gb3RoZXIuYWxsb2NfOworICAgICAgUG9saWN5VHJhaXRzOjp0cmFuc2Zlcihh
bGxvYygpLCBzbG90KCksIG90aGVyLnNsb3QoKSk7CisgICAgICBvdGhlci5yZXNldCgpOworICAg
IH0KKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBib29sIGVtcHR5KCkgY29uc3Qgbm9leGNl
cHQgeyByZXR1cm4gIWFsbG9jXzsgfQorICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
bm9leGNlcHQgeyByZXR1cm4gIWVtcHR5KCk7IH0KKyAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9j
YXRvcigpIGNvbnN0IHsgcmV0dXJuICphbGxvY187IH0KKworIHByb3RlY3RlZDoKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lPgorICBmcmllbmQgY2xh
c3MgcmF3X2hhc2hfc2V0OworCisgIG5vZGVfaGFuZGxlX2Jhc2UoY29uc3QgYWxsb2NhdG9yX3R5
cGUmIGEsIHNsb3RfdHlwZSogcykgOiBhbGxvY18oYSkgeworICAgIFBvbGljeVRyYWl0czo6dHJh
bnNmZXIoYWxsb2MoKSwgc2xvdCgpLCBzKTsKKyAgfQorCisgIHZvaWQgZGVzdHJveSgpIHsKKyAg
ICBpZiAoIWVtcHR5KCkpIHsKKyAgICAgIFBvbGljeVRyYWl0czo6ZGVzdHJveShhbGxvYygpLCBz
bG90KCkpOworICAgICAgcmVzZXQoKTsKKyAgICB9CisgIH0KKworICB2b2lkIHJlc2V0KCkgewor
ICAgIGFzc2VydChhbGxvY18uaGFzX3ZhbHVlKCkpOworICAgIGFsbG9jXyA9IGFic2w6Om51bGxv
cHQ7CisgIH0KKworICBzbG90X3R5cGUqIHNsb3QoKSBjb25zdCB7CisgICAgYXNzZXJ0KCFlbXB0
eSgpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxzbG90X3R5cGUqPihzdGQ6OmFkZHJl
c3NvZihzbG90X3NwYWNlXykpOworICB9CisgIGFsbG9jYXRvcl90eXBlKiBhbGxvYygpIHsgcmV0
dXJuIHN0ZDo6YWRkcmVzc29mKCphbGxvY18pOyB9CisKKyBwcml2YXRlOgorICBhYnNsOjpvcHRp
b25hbDxhbGxvY2F0b3JfdHlwZT4gYWxsb2NfOworICBtdXRhYmxlIGFic2w6OmFsaWduZWRfc3Rv
cmFnZV90PHNpemVvZihzbG90X3R5cGUpLCBhbGlnbm9mKHNsb3RfdHlwZSk+CisgICAgICBzbG90
X3NwYWNlXzsKK307CisKKy8vIEZvciBzZXRzLgordGVtcGxhdGUgPHR5cGVuYW1lIFBvbGljeSwg
dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lID0gdm9pZD4KK2NsYXNzIG5vZGVfaGFuZGxlIDogcHVi
bGljIG5vZGVfaGFuZGxlX2Jhc2U8UG9saWN5LCBBbGxvYz4geworICB1c2luZyBCYXNlID0gdHlw
ZW5hbWUgbm9kZV9oYW5kbGU6Om5vZGVfaGFuZGxlX2Jhc2U7CisKKyBwdWJsaWM6CisgIHVzaW5n
IHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBCYXNlOjpQb2xpY3lUcmFpdHM6OnZhbHVlX3R5cGU7CisK
KyAgY29uc3RleHByIG5vZGVfaGFuZGxlKCkge30KKworICB2YWx1ZV90eXBlJiB2YWx1ZSgpIGNv
bnN0IHsKKyAgICByZXR1cm4gQmFzZTo6UG9saWN5VHJhaXRzOjplbGVtZW50KHRoaXMtPnNsb3Qo
KSk7CisgIH0KKworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5
cGVuYW1lLCB0eXBlbmFtZT4KKyAgZnJpZW5kIGNsYXNzIHJhd19oYXNoX3NldDsKKworICBub2Rl
X2hhbmRsZShjb25zdCBBbGxvYyYgYSwgdHlwZW5hbWUgQmFzZTo6c2xvdF90eXBlKiBzKSA6IEJh
c2UoYSwgcykge30KK307CisKKy8vIEZvciBtYXBzLgordGVtcGxhdGUgPHR5cGVuYW1lIFBvbGlj
eSwgdHlwZW5hbWUgQWxsb2M+CitjbGFzcyBub2RlX2hhbmRsZTxQb2xpY3ksIEFsbG9jLCBhYnNs
Ojp2b2lkX3Q8dHlwZW5hbWUgUG9saWN5OjptYXBwZWRfdHlwZT4+CisgICAgOiBwdWJsaWMgbm9k
ZV9oYW5kbGVfYmFzZTxQb2xpY3ksIEFsbG9jPiB7CisgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBu
b2RlX2hhbmRsZTo6bm9kZV9oYW5kbGVfYmFzZTsKKworIHB1YmxpYzoKKyAgdXNpbmcga2V5X3R5
cGUgPSB0eXBlbmFtZSBQb2xpY3k6OmtleV90eXBlOworICB1c2luZyBtYXBwZWRfdHlwZSA9IHR5
cGVuYW1lIFBvbGljeTo6bWFwcGVkX3R5cGU7CisKKyAgY29uc3RleHByIG5vZGVfaGFuZGxlKCkg
e30KKworICBhdXRvIGtleSgpIGNvbnN0IC0+IGRlY2x0eXBlKEJhc2U6OlBvbGljeVRyYWl0czo6
a2V5KHRoaXMtPnNsb3QoKSkpIHsKKyAgICByZXR1cm4gQmFzZTo6UG9saWN5VHJhaXRzOjprZXko
dGhpcy0+c2xvdCgpKTsKKyAgfQorCisgIG1hcHBlZF90eXBlJiBtYXBwZWQoKSBjb25zdCB7Cisg
ICAgcmV0dXJuIEJhc2U6OlBvbGljeVRyYWl0czo6dmFsdWUoCisgICAgICAgICZCYXNlOjpQb2xp
Y3lUcmFpdHM6OmVsZW1lbnQodGhpcy0+c2xvdCgpKSk7CisgIH0KKworIHByaXZhdGU6CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4KKyAgZnJpZW5k
IGNsYXNzIHJhd19oYXNoX3NldDsKKworICBub2RlX2hhbmRsZShjb25zdCBBbGxvYyYgYSwgdHlw
ZW5hbWUgQmFzZTo6c2xvdF90eXBlKiBzKSA6IEJhc2UoYSwgcykge30KK307CisKKy8vIEltcGxl
bWVudCB0aGUgaW5zZXJ0X3JldHVybl90eXBlPD4gY29uY2VwdCBvZiBDKysxNy4KK3RlbXBsYXRl
IDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgTm9kZVR5cGU+CitzdHJ1Y3QgaW5zZXJ0X3JldHVybl90
eXBlIHsKKyAgSXRlcmF0b3IgcG9zaXRpb247CisgIGJvb2wgaW5zZXJ0ZWQ7CisgIE5vZGVUeXBl
IG5vZGU7Cit9OworCisvLyBIZWxwZXIgdHJhaXQgdG8gYWxsb3cgb3IgZGlzYWxsb3cgYXJiaXRy
YXJ5IGtleXMgd2hlbiB0aGUgaGFzaCBhbmQKKy8vIGVxIGZ1bmN0aW9ucyBhcmUgdHJhbnNwYXJl
bnQuCisvLyBJdCBpcyB2ZXJ5IGltcG9ydGFudCB0aGF0IHRoZSBpbm5lciB0ZW1wbGF0ZSBpcyBh
biBhbGlhcyBhbmQgdGhhdCB0aGUgdHlwZSBpdAorLy8gcHJvZHVjZXMgaXMgbm90IGEgZGVwZW5k
ZW50IHR5cGUuIE90aGVyd2lzZSwgdHlwZSBkZWR1Y3Rpb24gd291bGQgZmFpbC4KK3RlbXBsYXRl
IDxib29sIGlzX3RyYW5zcGFyZW50Pgorc3RydWN0IEtleUFyZyB7CisgIC8vIFRyYW5zcGFyZW50
LiBGb3J3YXJkIGBLYC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIGtleV90eXBl
PgorICB1c2luZyB0eXBlID0gSzsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgS2V5QXJnPGZh
bHNlPiB7CisgIC8vIE5vdCB0cmFuc3BhcmVudC4gQWx3YXlzIHVzZSBga2V5X3R5cGVgLgorICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUga2V5X3R5cGU+CisgIHVzaW5nIHR5cGUgPSBr
ZXlfdHlwZTsKK307CisKKy8vIFBvbGljeTogYSBwb2xpY3kgZGVmaW5lcyBob3cgdG8gcGVyZm9y
bSBkaWZmZXJlbnQgb3BlcmF0aW9ucyBvbgorLy8gdGhlIHNsb3RzIG9mIHRoZSBoYXNodGFibGUg
KHNlZSBoYXNoX3BvbGljeV90cmFpdHMuaCBmb3IgdGhlIGZ1bGwgaW50ZXJmYWNlCisvLyBvZiBw
b2xpY3kpLgorLy8KKy8vIEhhc2g6IGEgKHBvc3NpYmx5IHBvbHltb3JwaGljKSBmdW5jdG9yIHRo
YXQgaGFzaGVzIGtleXMgb2YgdGhlIGhhc2h0YWJsZS4gVGhlCisvLyBmdW5jdG9yIHNob3VsZCBh
Y2NlcHQgYSBrZXkgYW5kIHJldHVybiBzaXplX3QgYXMgaGFzaC4gRm9yIGJlc3QgcGVyZm9ybWFu
Y2UKKy8vIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSBoYXNoIGZ1bmN0aW9uIHByb3ZpZGVzIGhp
Z2ggZW50cm9weSBhY3Jvc3MgYWxsIGJpdHMKKy8vIG9mIHRoZSBoYXNoLgorLy8KKy8vIEVxOiBh
IChwb3NzaWJseSBwb2x5bW9ycGhpYykgZnVuY3RvciB0aGF0IGNvbXBhcmVzIHR3byBrZXlzIGZv
ciBlcXVhbGl0eS4gSXQKKy8vIHNob3VsZCBhY2NlcHQgdHdvIChvZiBwb3NzaWJseSBkaWZmZXJl
bnQgdHlwZSkga2V5cyBhbmQgcmV0dXJuIGEgYm9vbDogdHJ1ZQorLy8gaWYgdGhleSBhcmUgZXF1
YWwsIGZhbHNlIGlmIHRoZXkgYXJlIG5vdC4gSWYgdHdvIGtleXMgY29tcGFyZSBlcXVhbCwgdGhl
bgorLy8gdGhlaXIgaGFzaCB2YWx1ZXMgYXMgZGVmaW5lZCBieSBIYXNoIE1VU1QgYmUgZXF1YWwu
CisvLworLy8gQWxsb2NhdG9yOiBhbiBBbGxvY2F0b3IgW2h0dHA6Ly9kZXZkb2NzLmlvL2NwcC9j
b25jZXB0L2FsbG9jYXRvcl0gd2l0aCB3aGljaAorLy8gdGhlIHN0b3JhZ2Ugb2YgdGhlIGhhc2h0
YWJsZSB3aWxsIGJlIGFsbG9jYXRlZCBhbmQgdGhlIGVsZW1lbnRzIHdpbGwgYmUKKy8vIGNvbnN0
cnVjdGVkIGFuZCBkZXN0cm95ZWQuCit0ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5LCBjbGFzcyBIYXNo
LCBjbGFzcyBFcSwgY2xhc3MgQWxsb2M+CitjbGFzcyByYXdfaGFzaF9zZXQgeworICB1c2luZyBQ
b2xpY3lUcmFpdHMgPSBoYXNoX3BvbGljeV90cmFpdHM8UG9saWN5PjsKKyAgdXNpbmcgS2V5QXJn
SW1wbCA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6S2V5QXJnPElzVHJhbnNwYXJlbnQ8RXE+Ojp2YWx1
ZSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNU
cmFuc3BhcmVudDxIYXNoPjo6dmFsdWU+OworCisgcHVibGljOgorICB1c2luZyBpbml0X3R5cGUg
PSB0eXBlbmFtZSBQb2xpY3lUcmFpdHM6OmluaXRfdHlwZTsKKyAgdXNpbmcga2V5X3R5cGUgPSB0
eXBlbmFtZSBQb2xpY3lUcmFpdHM6OmtleV90eXBlOworICAvLyBUT0RPKHNiZW56YSk6IEhpZGUg
c2xvdF90eXBlIGFzIGl0IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gTmVlZHMgdXNlcgor
ICAvLyBjb2RlIGZpeGVzIQorICB1c2luZyBzbG90X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3lUcmFp
dHM6OnNsb3RfdHlwZTsKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSBBbGxvYzsKKyAgdXNpbmcg
c2l6ZV90eXBlID0gc2l6ZV90OworICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBwdHJkaWZmX3Q7
CisgIHVzaW5nIGhhc2hlciA9IEhhc2g7CisgIHVzaW5nIGtleV9lcXVhbCA9IEVxOworICB1c2lu
ZyBwb2xpY3lfdHlwZSA9IFBvbGljeTsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIFBv
bGljeVRyYWl0czo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgcmVmZXJlbmNlID0gdmFsdWVfdHlwZSY7
CisgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IGNvbnN0IHZhbHVlX3R5cGUmOworICB1c2luZyBw
b2ludGVyID0gdHlwZW5hbWUgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czwKKyAgICAgIGFsbG9jYXRv
cl90eXBlPjo6dGVtcGxhdGUgcmViaW5kX3RyYWl0czx2YWx1ZV90eXBlPjo6cG9pbnRlcjsKKyAg
dXNpbmcgY29uc3RfcG9pbnRlciA9IHR5cGVuYW1lIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8Cisg
ICAgICBhbGxvY2F0b3JfdHlwZT46OnRlbXBsYXRlIHJlYmluZF90cmFpdHM8dmFsdWVfdHlwZT46
OmNvbnN0X3BvaW50ZXI7CisKKyAgLy8gQWxpYXMgdXNlZCBmb3IgaGV0ZXJvZ2VuZW91cyBsb29r
dXAgZnVuY3Rpb25zLgorICAvLyBga2V5X2FyZzxLPmAgZXZhbHVhdGVzIHRvIGBLYCB3aGVuIHRo
ZSBmdW5jdG9ycyBhcmUgdHJhbnBhcmVudCBhbmQgdG8KKyAgLy8gYGtleV90eXBlYCBvdGhlcndp
c2UuIEl0IHBlcm1pdHMgdGVtcGxhdGUgYXJndW1lbnQgZGVkdWN0aW9uIG9uIGBLYCBmb3IgdGhl
CisgIC8vIHRyYW5zcGFyZW50IGNhc2UuCisgIHRlbXBsYXRlIDxjbGFzcyBLPgorICB1c2luZyBr
ZXlfYXJnID0gdHlwZW5hbWUgS2V5QXJnSW1wbDo6dGVtcGxhdGUgdHlwZTxLLCBrZXlfdHlwZT47
CisKKyBwcml2YXRlOgorICAvLyBHaXZlIGFuIGVhcmx5IGVycm9yIHdoZW4ga2V5X3R5cGUgaXMg
bm90IGhhc2hhYmxlL2VxLgorICBhdXRvIEtleVR5cGVDYW5CZUhhc2hlZChjb25zdCBIYXNoJiBo
LCBjb25zdCBrZXlfdHlwZSYgaykgLT4gZGVjbHR5cGUoaChrKSk7CisgIGF1dG8gS2V5VHlwZUNh
bkJlRXEoY29uc3QgRXEmIGVxLCBjb25zdCBrZXlfdHlwZSYgaykgLT4gZGVjbHR5cGUoZXEoaywg
aykpOworCisgIHVzaW5nIExheW91dCA9IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6TGF5b3V0
PGN0cmxfdCwgc2xvdF90eXBlPjsKKworICBzdGF0aWMgTGF5b3V0IE1ha2VMYXlvdXQoc2l6ZV90
IGNhcGFjaXR5KSB7CisgICAgYXNzZXJ0KElzVmFsaWRDYXBhY2l0eShjYXBhY2l0eSkpOworICAg
IHJldHVybiBMYXlvdXQoY2FwYWNpdHkgKyBHcm91cDo6a1dpZHRoICsgMSwgY2FwYWNpdHkpOwor
ICB9CisKKyAgdXNpbmcgQWxsb2NUcmFpdHMgPSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9j
YXRvcl90eXBlPjsKKyAgdXNpbmcgU2xvdEFsbG9jID0gdHlwZW5hbWUgYWJzbDo6YWxsb2NhdG9y
X3RyYWl0czwKKyAgICAgIGFsbG9jYXRvcl90eXBlPjo6dGVtcGxhdGUgcmViaW5kX2FsbG9jPHNs
b3RfdHlwZT47CisgIHVzaW5nIFNsb3RBbGxvY1RyYWl0cyA9IHR5cGVuYW1lIGFic2w6OmFsbG9j
YXRvcl90cmFpdHM8CisgICAgICBhbGxvY2F0b3JfdHlwZT46OnRlbXBsYXRlIHJlYmluZF90cmFp
dHM8c2xvdF90eXBlPjsKKworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbHZhbHVlX3JlZmVyZW5j
ZTxyZWZlcmVuY2U+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiUG9saWN5OjplbGVtZW50KCkg
bXVzdCByZXR1cm4gYSByZWZlcmVuY2UiKTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
c3RydWN0IFNhbWVBc0VsZW1lbnRSZWZlcmVuY2UKKyAgICAgIDogc3RkOjppc19zYW1lPHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX2N2PAorICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3JlZmVyZW5jZTxyZWZlcmVuY2U+Ojp0eXBlPjo6dHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZT46OnR5cGU+IHt9Owor
CisgIC8vIEFuIGVuYWJsZXIgZm9yIGluc2VydChUJiYpOiBUIG11c3QgYmUgY29udmVydGlibGUg
dG8gaW5pdF90eXBlIG9yIGJlIHRoZQorICAvLyBzYW1lIGFzIFtjdl0gdmFsdWVfdHlwZSBbcmVm
XS4KKyAgLy8gTm90ZTogd2Ugc2VwYXJhdGUgU2FtZUFzRWxlbWVudFJlZmVyZW5jZSBpbnRvIGl0
cyBvd24gdHlwZSB0byBhdm9pZCB1c2luZworICAvLyByZWZlcmVuY2UgdW5sZXNzIHdlIG5lZWQg
dG8uIE1TVkMgZG9lc24ndCBzZWVtIHRvIGxpa2UgaXQgaW4gc29tZQorICAvLyBjYXNlcy4KKyAg
dGVtcGxhdGUgPGNsYXNzIFQ+CisgIHVzaW5nIFJlcXVpcmVzSW5zZXJ0YWJsZSA9IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgYWJzbDo6ZGlzanVuY3Rpb248c3RkOjppc19jb252ZXJ0
aWJsZTxULCBpbml0X3R5cGU+LAorICAgICAgICAgICAgICAgICAgICAgICAgU2FtZUFzRWxlbWVu
dFJlZmVyZW5jZTxUPj46OnZhbHVlLAorICAgICAgaW50Pjo6dHlwZTsKKworICAvLyBSZXF1aXJl
c05vdEluaXQgaXMgYSB3b3JrYXJvdW5kIGZvciBnY2MgcHJpb3IgdG8gNy4xLgorICAvLyBTZWUg
aHR0cHM6Ly9nb2Rib2x0Lm9yZy9nL1k0eHNVaC4KKyAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgIHVz
aW5nIFJlcXVpcmVzTm90SW5pdCA9CisgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3Rk
Ojppc19zYW1lPFQsIGluaXRfdHlwZT46OnZhbHVlLCBpbnQ+Ojp0eXBlOworCisgIHRlbXBsYXRl
IDxjbGFzcy4uLiBUcz4KKyAgdXNpbmcgSXNEZWNvbXBvc2FibGUgPSBJc0RlY29tcG9zYWJsZTx2
b2lkLCBQb2xpY3lUcmFpdHMsIEhhc2gsIEVxLCBUcy4uLj47CisKKyBwdWJsaWM6CisgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lPHBvaW50ZXIsIHZhbHVlX3R5cGUqPjo6dmFsdWUsCisgICAg
ICAgICAgICAgICAgIkFsbG9jYXRvcnMgd2l0aCBjdXN0b20gcG9pbnRlciB0eXBlcyBhcmUgbm90
IHN1cHBvcnRlZCIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxjb25zdF9wb2ludGVy
LCBjb25zdCB2YWx1ZV90eXBlKj46OnZhbHVlLAorICAgICAgICAgICAgICAgICJBbGxvY2F0b3Jz
IHdpdGggY3VzdG9tIHBvaW50ZXIgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKTsKKworICBjbGFz
cyBpdGVyYXRvciB7CisgICAgZnJpZW5kIGNsYXNzIHJhd19oYXNoX3NldDsKKworICAgcHVibGlj
OgorICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3Rh
ZzsKKyAgICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgcmF3X2hhc2hfc2V0Ojp2YWx1ZV90
eXBlOworICAgIHVzaW5nIHJlZmVyZW5jZSA9CisgICAgICAgIGFic2w6OmNvbmRpdGlvbmFsX3Q8
UG9saWN5VHJhaXRzOjpjb25zdGFudF9pdGVyYXRvcnM6OnZhbHVlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUmLCB2YWx1ZV90eXBlJj47CisgICAgdXNpbmcg
cG9pbnRlciA9IGFic2w6OnJlbW92ZV9yZWZlcmVuY2VfdDxyZWZlcmVuY2U+KjsKKyAgICB1c2lu
ZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSByYXdfaGFzaF9zZXQ6OmRpZmZlcmVuY2VfdHlw
ZTsKKworICAgIGl0ZXJhdG9yKCkge30KKworICAgIC8vIFBSRUNPTkRJVElPTjogbm90IGFuIGVu
ZCgpIGl0ZXJhdG9yLgorICAgIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBQ
b2xpY3lUcmFpdHM6OmVsZW1lbnQoc2xvdF8pOyB9CisKKyAgICAvLyBQUkVDT05ESVRJT046IG5v
dCBhbiBlbmQoKSBpdGVyYXRvci4KKyAgICBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiAmb3BlcmF0b3IqKCk7IH0KKworICAgIC8vIFBSRUNPTkRJVElPTjogbm90IGFuIGVuZCgp
IGl0ZXJhdG9yLgorICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeworICAgICAgKytjdHJsXzsK
KyAgICAgICsrc2xvdF87CisgICAgICBza2lwX2VtcHR5X29yX2RlbGV0ZWQoKTsKKyAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisgICAgLy8gUFJFQ09ORElUSU9OOiBub3QgYW4gZW5kKCkgaXRl
cmF0b3IuCisgICAgaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpIHsKKyAgICAgIGF1dG8gdG1wID0g
KnRoaXM7CisgICAgICArKyp0aGlzOworICAgICAgcmV0dXJuIHRtcDsKKyAgICB9CisKKyAgICBm
cmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBhLCBjb25zdCBpdGVyYXRvciYg
YikgeworICAgICAgcmV0dXJuIGEuY3RybF8gPT0gYi5jdHJsXzsKKyAgICB9CisgICAgZnJpZW5k
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgYSwgY29uc3QgaXRlcmF0b3ImIGIpIHsK
KyAgICAgIHJldHVybiAhKGEgPT0gYik7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGl0ZXJh
dG9yKGN0cmxfdCogY3RybCkgOiBjdHJsXyhjdHJsKSB7fSAgLy8gZm9yIGVuZCgpCisgICAgaXRl
cmF0b3IoY3RybF90KiBjdHJsLCBzbG90X3R5cGUqIHNsb3QpIDogY3RybF8oY3RybCksIHNsb3Rf
KHNsb3QpIHt9CisKKyAgICB2b2lkIHNraXBfZW1wdHlfb3JfZGVsZXRlZCgpIHsKKyAgICAgIHdo
aWxlIChJc0VtcHR5T3JEZWxldGVkKCpjdHJsXykpIHsKKyAgICAgICAgLy8gY3RybCBpcyBub3Qg
bmVjZXNzYXJpbHkgYWxpZ25lZCB0byBHcm91cDo6a1dpZHRoLiBJdCBpcyBhbHNvIGxpa2VseQor
ICAgICAgICAvLyB0byByZWFkIHBhc3QgdGhlIHNwYWNlIGZvciBjdHJsIGJ5dGVzIGFuZCBpbnRv
IHNsb3RzLiBUaGlzIGlzIG9rCisgICAgICAgIC8vIGJlY2F1c2UgY3RybCBoYXMgc2l6ZW9mKCkg
PT0gMSBhbmQgc2xvdCBoYXMgc2l6ZW9mKCkgPj0gMSBzbyB0aGVyZQorICAgICAgICAvLyBpcyBu
byB3YXkgdG8gcmVhZCBvdXRzaWRlIHRoZSBjb21iaW5lZCBzbG90IGFycmF5LgorICAgICAgICB1
aW50MzJfdCBzaGlmdCA9IEdyb3Vwe2N0cmxffS5Db3VudExlYWRpbmdFbXB0eU9yRGVsZXRlZCgp
OworICAgICAgICBjdHJsXyArPSBzaGlmdDsKKyAgICAgICAgc2xvdF8gKz0gc2hpZnQ7CisgICAg
ICB9CisgICAgfQorCisgICAgY3RybF90KiBjdHJsXyA9IG51bGxwdHI7CisgICAgc2xvdF90eXBl
KiBzbG90XzsKKyAgfTsKKworICBjbGFzcyBjb25zdF9pdGVyYXRvciB7CisgICAgZnJpZW5kIGNs
YXNzIHJhd19oYXNoX3NldDsKKworICAgcHVibGljOgorICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVn
b3J5ID0gdHlwZW5hbWUgaXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5OworICAgIHVzaW5nIHZh
bHVlX3R5cGUgPSB0eXBlbmFtZSByYXdfaGFzaF9zZXQ6OnZhbHVlX3R5cGU7CisgICAgdXNpbmcg
cmVmZXJlbmNlID0gdHlwZW5hbWUgcmF3X2hhc2hfc2V0Ojpjb25zdF9yZWZlcmVuY2U7CisgICAg
dXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIHJhd19oYXNoX3NldDo6Y29uc3RfcG9pbnRlcjsKKyAg
ICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSByYXdfaGFzaF9zZXQ6OmRpZmZlcmVu
Y2VfdHlwZTsKKworICAgIGNvbnN0X2l0ZXJhdG9yKCkge30KKyAgICAvLyBJbXBsaWNpdCBjb25z
dHJ1Y3Rpb24gZnJvbSBpdGVyYXRvci4KKyAgICBjb25zdF9pdGVyYXRvcihpdGVyYXRvciBpKSA6
IGlubmVyXyhzdGQ6Om1vdmUoaSkpIHt9CisKKyAgICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29u
c3QgeyByZXR1cm4gKmlubmVyXzsgfQorICAgIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuIGlubmVyXy5vcGVyYXRvci0+KCk7IH0KKworICAgIGNvbnN0X2l0ZXJhdG9yJiBvcGVy
YXRvcisrKCkgeworICAgICAgKytpbm5lcl87CisgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
ICAgIGNvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiBpbm5lcl8rKzsgfQor
CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciYgYSwgY29u
c3QgY29uc3RfaXRlcmF0b3ImIGIpIHsKKyAgICAgIHJldHVybiBhLmlubmVyXyA9PSBiLmlubmVy
XzsKKyAgICB9CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRv
ciYgYSwgY29uc3QgY29uc3RfaXRlcmF0b3ImIGIpIHsKKyAgICAgIHJldHVybiAhKGEgPT0gYik7
CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0X2l0ZXJhdG9yKGNvbnN0IGN0cmxfdCog
Y3RybCwgY29uc3Qgc2xvdF90eXBlKiBzbG90KQorICAgICAgICA6IGlubmVyXyhjb25zdF9jYXN0
PGN0cmxfdCo+KGN0cmwpLCBjb25zdF9jYXN0PHNsb3RfdHlwZSo+KHNsb3QpKSB7fQorCisgICAg
aXRlcmF0b3IgaW5uZXJfOworICB9OworCisgIHVzaW5nIG5vZGVfdHlwZSA9IGNvbnRhaW5lcl9p
bnRlcm5hbDo6bm9kZV9oYW5kbGU8UG9saWN5LCBBbGxvYz47CisKKyAgcmF3X2hhc2hfc2V0KCkg
bm9leGNlcHQoCisgICAgICBzdGQ6OmlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPGhh
c2hlcj46OnZhbHVlJiYKKyAgICAgICAgICBzdGQ6OmlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1
Y3RpYmxlPGtleV9lcXVhbD46OnZhbHVlJiYKKyAgICAgICAgICAgICAgc3RkOjppc19ub3Rocm93
X2RlZmF1bHRfY29uc3RydWN0aWJsZTxhbGxvY2F0b3JfdHlwZT46OnZhbHVlKSB7fQorCisgIGV4
cGxpY2l0IHJhd19oYXNoX3NldChzaXplX3QgYnVja2V0X2NvdW50LCBjb25zdCBoYXNoZXImIGhh
c2ggPSBoYXNoZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCYg
ZXEgPSBrZXlfZXF1YWwoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRv
cl90eXBlJiBhbGxvYyA9IGFsbG9jYXRvcl90eXBlKCkpCisgICAgICA6IGN0cmxfKEVtcHR5R3Jv
dXAoKSksIHNldHRpbmdzXygwLCBoYXNoLCBlcSwgYWxsb2MpIHsKKyAgICBpZiAoYnVja2V0X2Nv
dW50KSB7CisgICAgICBjYXBhY2l0eV8gPSBOb3JtYWxpemVDYXBhY2l0eShidWNrZXRfY291bnQp
OworICAgICAgZ3Jvd3RoX2xlZnQoKSA9IHN0YXRpY19jYXN0PHNpemVfdD4oY2FwYWNpdHlfICog
a01heExvYWRGYWN0b3IpOworICAgICAgaW5pdGlhbGl6ZV9zbG90cygpOworICAgIH0KKyAgfQor
CisgIHJhd19oYXNoX3NldChzaXplX3QgYnVja2V0X2NvdW50LCBjb25zdCBoYXNoZXImIGhhc2gs
CisgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IHJh
d19oYXNoX3NldChidWNrZXRfY291bnQsIGhhc2gsIGtleV9lcXVhbCgpLCBhbGxvYykge30KKwor
ICByYXdfaGFzaF9zZXQoc2l6ZV90IGJ1Y2tldF9jb3VudCwgY29uc3QgYWxsb2NhdG9yX3R5cGUm
IGFsbG9jKQorICAgICAgOiByYXdfaGFzaF9zZXQoYnVja2V0X2NvdW50LCBoYXNoZXIoKSwga2V5
X2VxdWFsKCksIGFsbG9jKSB7fQorCisgIGV4cGxpY2l0IHJhd19oYXNoX3NldChjb25zdCBhbGxv
Y2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNoX3NldCgwLCBoYXNoZXIoKSwga2V5
X2VxdWFsKCksIGFsbG9jKSB7fQorCisgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXI+CisgIHJh
d19oYXNoX3NldChJbnB1dEl0ZXIgZmlyc3QsIElucHV0SXRlciBsYXN0LCBzaXplX3QgYnVja2V0
X2NvdW50ID0gMCwKKyAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYgaGFzaCA9IGhhc2hlcigp
LCBjb25zdCBrZXlfZXF1YWwmIGVxID0ga2V5X2VxdWFsKCksCisgICAgICAgICAgICAgICBjb25z
dCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBhbGxvY2F0b3JfdHlwZSgpKQorICAgICAgOiByYXdf
aGFzaF9zZXQoYnVja2V0X2NvdW50LCBoYXNoLCBlcSwgYWxsb2MpIHsKKyAgICBpbnNlcnQoZmly
c3QsIGxhc3QpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcj4KKyAgcmF3X2hh
c2hfc2V0KElucHV0SXRlciBmaXJzdCwgSW5wdXRJdGVyIGxhc3QsIHNpemVfdCBidWNrZXRfY291
bnQsCisgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImIGhhc2gsIGNvbnN0IGFsbG9jYXRvcl90
eXBlJiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hfc2V0KGZpcnN0LCBsYXN0LCBidWNrZXRfY291
bnQsIGhhc2gsIGtleV9lcXVhbCgpLCBhbGxvYykge30KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSW5w
dXRJdGVyPgorICByYXdfaGFzaF9zZXQoSW5wdXRJdGVyIGZpcnN0LCBJbnB1dEl0ZXIgbGFzdCwg
c2l6ZV90IGJ1Y2tldF9jb3VudCwKKyAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBl
JiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hfc2V0KGZpcnN0LCBsYXN0LCBidWNrZXRfY291bnQs
IGhhc2hlcigpLCBrZXlfZXF1YWwoKSwgYWxsb2MpIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIElu
cHV0SXRlcj4KKyAgcmF3X2hhc2hfc2V0KElucHV0SXRlciBmaXJzdCwgSW5wdXRJdGVyIGxhc3Qs
IGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hfc2V0KGZpcnN0
LCBsYXN0LCAwLCBoYXNoZXIoKSwga2V5X2VxdWFsKCksIGFsbG9jKSB7fQorCisgIC8vIEluc3Rl
YWQgb2YgYWNjZXB0aW5nIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBhcyB0aGUg
Zmlyc3QKKyAgLy8gYXJndW1lbnQgbGlrZSBzdGQ6OnVub3JkZXJlZF9zZXQ8dmFsdWVfdHlwZT4g
ZG9lcywgd2UgaGF2ZSB0d28gb3ZlcmxvYWRzCisgIC8vIHRoYXQgYWNjZXB0IHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxUPiBhbmQgc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4uCisgIC8v
IFRoaXMgaXMgYWR2YW50YWdlb3VzIGZvciBwZXJmb3JtYW5jZS4KKyAgLy8KKyAgLy8gICAvLyBU
dXJucyB7ImFiYyIsICJkZWYifSBpbnRvIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnN0cmlu
Zz4sIHRoZW4gY29waWVzCisgIC8vICAgLy8gdGhlIHN0cmluZ3MgaW50byB0aGUgc2V0LgorICAv
LyAgIHN0ZDo6dW5vcmRlcmVkX3NldDxzdGQ6OnN0cmluZz4gcyA9IHsiYWJjIiwgImRlZiJ9Owor
ICAvLworICAvLyAgIC8vIFR1cm5zIHsiYWJjIiwgImRlZiJ9IGludG8gc3RkOjppbml0aWFsaXpl
cl9saXN0PGNvbnN0IGNoYXIqPiwgdGhlbgorICAvLyAgIC8vIGNvcGllcyB0aGUgc3RyaW5ncyBp
bnRvIHRoZSBzZXQuCisgIC8vICAgYWJzbDo6ZmxhdF9oYXNoX3NldDxzdGQ6OnN0cmluZz4gcyA9
IHsiYWJjIiwgImRlZiJ9OworICAvLworICAvLyBUaGUgc2FtZSB0cmljayBpcyB1c2VkIGluIGlu
c2VydCgpLgorICAvLworICAvLyBUaGUgZW5hYmxlciBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCB0
aGlzIGNvbnN0cnVjdG9yIGZyb20gdHJpZ2dlcmluZyB3aGVyZQorICAvLyB0aGUgY29weSBjb25z
dHJ1Y3RvciBpcyBtZWFudCB0byBiZSBjYWxsZWQuCisgIC8vCisgIC8vICAgYWJzbDo6ZmxhdF9o
YXNoX3NldDxpbnQ+IGEsIGJ7YX07CisgIC8vCisgIC8vIFJlcXVpcmVzTm90SW5pdDxUPiBpcyBh
IHdvcmthcm91bmQgZm9yIGdjYyBwcmlvciB0byA3LjEuCisgIHRlbXBsYXRlIDxjbGFzcyBULCBS
ZXF1aXJlc05vdEluaXQ8VD4gPSAwLCBSZXF1aXJlc0luc2VydGFibGU8VD4gPSAwPgorICByYXdf
aGFzaF9zZXQoc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGluaXQsIHNpemVfdCBidWNrZXRfY291
bnQgPSAwLAorICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiBoYXNoID0gaGFzaGVyKCksIGNv
bnN0IGtleV9lcXVhbCYgZXEgPSBrZXlfZXF1YWwoKSwKKyAgICAgICAgICAgICAgIGNvbnN0IGFs
bG9jYXRvcl90eXBlJiBhbGxvYyA9IGFsbG9jYXRvcl90eXBlKCkpCisgICAgICA6IHJhd19oYXNo
X3NldChpbml0LmJlZ2luKCksIGluaXQuZW5kKCksIGJ1Y2tldF9jb3VudCwgaGFzaCwgZXEsIGFs
bG9jKSB7fQorCisgIHJhd19oYXNoX3NldChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW5pdF90eXBl
PiBpbml0LCBzaXplX3QgYnVja2V0X2NvdW50ID0gMCwKKyAgICAgICAgICAgICAgIGNvbnN0IGhh
c2hlciYgaGFzaCA9IGhhc2hlcigpLCBjb25zdCBrZXlfZXF1YWwmIGVxID0ga2V5X2VxdWFsKCks
CisgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBhbGxvY2F0b3Jf
dHlwZSgpKQorICAgICAgOiByYXdfaGFzaF9zZXQoaW5pdC5iZWdpbigpLCBpbml0LmVuZCgpLCBi
dWNrZXRfY291bnQsIGhhc2gsIGVxLCBhbGxvYykge30KKworICB0ZW1wbGF0ZSA8Y2xhc3MgVCwg
UmVxdWlyZXNOb3RJbml0PFQ+ID0gMCwgUmVxdWlyZXNJbnNlcnRhYmxlPFQ+ID0gMD4KKyAgcmF3
X2hhc2hfc2V0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbml0LCBzaXplX3QgYnVja2V0X2Nv
dW50LAorICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiBoYXNoLCBjb25zdCBhbGxvY2F0b3Jf
dHlwZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNoX3NldChpbml0LCBidWNrZXRfY291bnQsIGhh
c2gsIGtleV9lcXVhbCgpLCBhbGxvYykge30KKworICByYXdfaGFzaF9zZXQoc3RkOjppbml0aWFs
aXplcl9saXN0PGluaXRfdHlwZT4gaW5pdCwgc2l6ZV90IGJ1Y2tldF9jb3VudCwKKyAgICAgICAg
ICAgICAgIGNvbnN0IGhhc2hlciYgaGFzaCwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jKQor
ICAgICAgOiByYXdfaGFzaF9zZXQoaW5pdCwgYnVja2V0X2NvdW50LCBoYXNoLCBrZXlfZXF1YWwo
KSwgYWxsb2MpIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFQsIFJlcXVpcmVzTm90SW5pdDxUPiA9
IDAsIFJlcXVpcmVzSW5zZXJ0YWJsZTxUPiA9IDA+CisgIHJhd19oYXNoX3NldChzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8VD4gaW5pdCwgc2l6ZV90IGJ1Y2tldF9jb3VudCwKKyAgICAgICAgICAgICAg
IGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hfc2V0KGluaXQs
IGJ1Y2tldF9jb3VudCwgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBhbGxvYykge30KKworICByYXdf
aGFzaF9zZXQoc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaW5pdCwgc2l6ZV90IGJ1
Y2tldF9jb3VudCwKKyAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYykK
KyAgICAgIDogcmF3X2hhc2hfc2V0KGluaXQsIGJ1Y2tldF9jb3VudCwgaGFzaGVyKCksIGtleV9l
cXVhbCgpLCBhbGxvYykge30KKworICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgUmVxdWlyZXNOb3RJbml0
PFQ+ID0gMCwgUmVxdWlyZXNJbnNlcnRhYmxlPFQ+ID0gMD4KKyAgcmF3X2hhc2hfc2V0KHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbml0LCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisg
ICAgICA6IHJhd19oYXNoX3NldChpbml0LCAwLCBoYXNoZXIoKSwga2V5X2VxdWFsKCksIGFsbG9j
KSB7fQorCisgIHJhd19oYXNoX3NldChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW5pdF90eXBlPiBp
bml0LAorICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jKQorICAgICAg
OiByYXdfaGFzaF9zZXQoaW5pdCwgMCwgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBhbGxvYykge30K
KworICByYXdfaGFzaF9zZXQoY29uc3QgcmF3X2hhc2hfc2V0JiB0aGF0KQorICAgICAgOiByYXdf
aGFzaF9zZXQodGhhdCwgQWxsb2NUcmFpdHM6OnNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25z
dHJ1Y3Rpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hbGxvY19yZWYo
KSkpIHt9CisKKyAgcmF3X2hhc2hfc2V0KGNvbnN0IHJhd19oYXNoX3NldCYgdGhhdCwgY29uc3Qg
YWxsb2NhdG9yX3R5cGUmIGEpCisgICAgICA6IHJhd19oYXNoX3NldCgwLCB0aGF0Lmhhc2hfcmVm
KCksIHRoYXQuZXFfcmVmKCksIGEpIHsKKyAgICByZXNlcnZlKHRoYXQuc2l6ZSgpKTsKKyAgICAv
LyBCZWNhdXNlIHRoZSB0YWJsZSBpcyBndWFyYW50ZWVkIHRvIGJlIGVtcHR5LCB3ZSBjYW4gZG8g
c29tZXRoaW5nIGZhc3RlcgorICAgIC8vIHRoYW4gYSBmdWxsIGBpbnNlcnRgLgorICAgIGZvciAo
Y29uc3QgYXV0byYgdiA6IHRoYXQpIHsKKyAgICAgIGNvbnN0IHNpemVfdCBoYXNoID0gUG9saWN5
VHJhaXRzOjphcHBseShIYXNoRWxlbWVudHtoYXNoX3JlZigpfSwgdik7CisgICAgICBjb25zdCBz
aXplX3QgaSA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAgICBzZXRfY3RybChpLCBI
MihoYXNoKSk7CisgICAgICBlbXBsYWNlX2F0KGksIHYpOworICAgIH0KKyAgICBzaXplXyA9IHRo
YXQuc2l6ZSgpOworICAgIGdyb3d0aF9sZWZ0KCkgLT0gdGhhdC5zaXplKCk7CisgIH0KKworICBy
YXdfaGFzaF9zZXQocmF3X2hhc2hfc2V0JiYgdGhhdCkgbm9leGNlcHQoCisgICAgICBzdGQ6Omlz
X25vdGhyb3dfY29weV9jb25zdHJ1Y3RpYmxlPGhhc2hlcj46OnZhbHVlJiYKKyAgICAgICAgICBz
dGQ6OmlzX25vdGhyb3dfY29weV9jb25zdHJ1Y3RpYmxlPGtleV9lcXVhbD46OnZhbHVlJiYKKyAg
ICAgICAgICAgICAgc3RkOjppc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxhbGxvY2F0b3Jf
dHlwZT46OnZhbHVlKQorICAgICAgOiBjdHJsXyhhYnNsOjpleGNoYW5nZSh0aGF0LmN0cmxfLCBF
bXB0eUdyb3VwKCkpKSwKKyAgICAgICAgc2xvdHNfKGFic2w6OmV4Y2hhbmdlKHRoYXQuc2xvdHNf
LCBudWxscHRyKSksCisgICAgICAgIHNpemVfKGFic2w6OmV4Y2hhbmdlKHRoYXQuc2l6ZV8sIDAp
KSwKKyAgICAgICAgY2FwYWNpdHlfKGFic2w6OmV4Y2hhbmdlKHRoYXQuY2FwYWNpdHlfLCAwKSks
CisgICAgICAgIC8vIEhhc2gsIGVxdWFsaXR5IGFuZCBhbGxvY2F0b3IgYXJlIGNvcGllZCBpbnN0
ZWFkIG9mIG1vdmVkIGJlY2F1c2UKKyAgICAgICAgLy8gYHRoYXRgIG11c3QgYmUgbGVmdCB2YWxp
ZC4gSWYgSGFzaCBpcyBzdGQ6OmZ1bmN0aW9uPEtleT4sIG1vdmluZyBpdAorICAgICAgICAvLyB3
b3VsZCBjcmVhdGUgYSBudWxscHRyIGZ1bmN0b3IgdGhhdCBjYW5ub3QgYmUgY2FsbGVkLgorICAg
ICAgICBzZXR0aW5nc18odGhhdC5zZXR0aW5nc18pIHsKKyAgICAvLyBncm93dGhfbGVmdCB3YXMg
Y29waWVkIGFib3ZlLCByZXNldCB0aGUgb25lIGZyb20gYHRoYXRgLgorICAgIHRoYXQuZ3Jvd3Ro
X2xlZnQoKSA9IDA7CisgIH0KKworICByYXdfaGFzaF9zZXQocmF3X2hhc2hfc2V0JiYgdGhhdCwg
Y29uc3QgYWxsb2NhdG9yX3R5cGUmIGEpCisgICAgICA6IGN0cmxfKEVtcHR5R3JvdXAoKSksCisg
ICAgICAgIHNsb3RzXyhudWxscHRyKSwKKyAgICAgICAgc2l6ZV8oMCksCisgICAgICAgIGNhcGFj
aXR5XygwKSwKKyAgICAgICAgc2V0dGluZ3NfKDAsIHRoYXQuaGFzaF9yZWYoKSwgdGhhdC5lcV9y
ZWYoKSwgYSkgeworICAgIGlmIChhID09IHRoYXQuYWxsb2NfcmVmKCkpIHsKKyAgICAgIHN0ZDo6
c3dhcChjdHJsXywgdGhhdC5jdHJsXyk7CisgICAgICBzdGQ6OnN3YXAoc2xvdHNfLCB0aGF0LnNs
b3RzXyk7CisgICAgICBzdGQ6OnN3YXAoc2l6ZV8sIHRoYXQuc2l6ZV8pOworICAgICAgc3RkOjpz
d2FwKGNhcGFjaXR5XywgdGhhdC5jYXBhY2l0eV8pOworICAgICAgc3RkOjpzd2FwKGdyb3d0aF9s
ZWZ0KCksIHRoYXQuZ3Jvd3RoX2xlZnQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJlc2VydmUo
dGhhdC5zaXplKCkpOworICAgICAgLy8gTm90ZTogdGhpcyB3aWxsIGNvcHkgZWxlbWVudHMgb2Yg
ZGVuc2Vfc2V0IGFuZCB1bm9yZGVyZWRfc2V0IGluc3RlYWQgb2YKKyAgICAgIC8vIG1vdmluZyB0
aGVtLiBUaGlzIGNhbiBiZSBmaXhlZCBpZiBpdCBldmVyIGJlY29tZXMgYW4gaXNzdWUuCisgICAg
ICBmb3IgKGF1dG8mIGVsZW0gOiB0aGF0KSBpbnNlcnQoc3RkOjptb3ZlKGVsZW0pKTsKKyAgICB9
CisgIH0KKworICByYXdfaGFzaF9zZXQmIG9wZXJhdG9yPShjb25zdCByYXdfaGFzaF9zZXQmIHRo
YXQpIHsKKyAgICByYXdfaGFzaF9zZXQgdG1wKHRoYXQsCisgICAgICAgICAgICAgICAgICAgICBB
bGxvY1RyYWl0czo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnQ6OnZhbHVl
CisgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGF0LmFsbG9jX3JlZigpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBhbGxvY19yZWYoKSk7CisgICAgc3dhcCh0bXApOworICAgIHJldHVy
biAqdGhpczsKKyAgfQorCisgIHJhd19oYXNoX3NldCYgb3BlcmF0b3I9KHJhd19oYXNoX3NldCYm
IHRoYXQpIG5vZXhjZXB0KAorICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3Jf
dHlwZT46OmlzX2Fsd2F5c19lcXVhbDo6dmFsdWUmJgorICAgICAgICAgIHN0ZDo6aXNfbm90aHJv
d19tb3ZlX2Fzc2lnbmFibGU8aGFzaGVyPjo6dmFsdWUmJgorICAgICAgICAgICAgICBzdGQ6Omlz
X25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPGtleV9lcXVhbD46OnZhbHVlKSB7CisgICAgLy8gVE9E
TyhzYmVuemEpOiBXZSBzaG91bGQgb25seSB1c2UgdGhlIG9wZXJhdGlvbnMgZnJvbSB0aGUgbm9l
eGNlcHQgY2xhdXNlCisgICAgLy8gdG8gbWFrZSBzdXJlIHdlIGFjdHVhbGx5IGFkaGVyZSB0byB0
aGF0IGNvbnRyYWN0LgorICAgIHJldHVybiBtb3ZlX2Fzc2lnbigKKyAgICAgICAgc3RkOjptb3Zl
KHRoYXQpLAorICAgICAgICB0eXBlbmFtZSBBbGxvY1RyYWl0czo6cHJvcGFnYXRlX29uX2NvbnRh
aW5lcl9tb3ZlX2Fzc2lnbm1lbnQoKSk7CisgIH0KKworICB+cmF3X2hhc2hfc2V0KCkgeyBkZXN0
cm95X3Nsb3RzKCk7IH0KKworICBpdGVyYXRvciBiZWdpbigpIHsKKyAgICBhdXRvIGl0ID0gaXRl
cmF0b3JfYXQoMCk7CisgICAgaXQuc2tpcF9lbXB0eV9vcl9kZWxldGVkKCk7CisgICAgcmV0dXJu
IGl0OworICB9CisgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIHtjdHJsXyArIGNhcGFjaXR5X307
IH0KKworICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3Rf
Y2FzdDxyYXdfaGFzaF9zZXQqPih0aGlzKS0+YmVnaW4oKTsKKyAgfQorICBjb25zdF9pdGVyYXRv
ciBlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PHJhd19oYXNoX3NldCo+KHRoaXMpLT5l
bmQoKTsgfQorICBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCB7IHJldHVybiBiZWdpbigp
OyB9CisgIGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCB7IHJldHVybiBlbmQoKTsgfQorCisg
IGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisgIHNpemVfdCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gc2l6ZV87IH0KKyAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gY2FwYWNpdHlfOyB9CisgIHNpemVfdCBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7IH0KKworICB2b2lkIGNsZWFyKCkgeworICAg
IC8vIEl0ZXJhdGluZyBvdmVyIHRoaXMgY29udGFpbmVyIGlzIE8oYnVja2V0X2NvdW50KCkpLiBX
aGVuIGJ1Y2tldF9jb3VudCgpCisgICAgLy8gaXMgbXVjaCBncmVhdGVyIHRoYW4gc2l6ZSgpLCBp
dGVyYXRpb24gYmVjb21lcyBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZS4KKyAgICAvLyBGb3IgY2xl
YXIoKSBpdCBpcyBtb3JlIGltcG9ydGFudCB0byByZXVzZSB0aGUgYWxsb2NhdGVkIGFycmF5IHdo
ZW4gdGhlCisgICAgLy8gY29udGFpbmVyIGlzIHNtYWxsIGJlY2F1c2UgYWxsb2NhdGlvbiB0YWtl
cyBjb21wYXJhdGl2ZWx5IGxvbmcgdGltZQorICAgIC8vIGNvbXBhcmVkIHRvIGRlc3RydWN0aW9u
IG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgY29udGFpbmVyLiBTbyB3ZSBwaWNrIHRoZQorICAgIC8v
IGxhcmdlc3QgYnVja2V0X2NvdW50KCkgdGhyZXNob2xkIGZvciB3aGljaCBpdGVyYXRpb24gaXMg
c3RpbGwgZmFzdCBhbmQKKyAgICAvLyBwYXN0IHRoYXQgd2Ugc2ltcGx5IGRlYWxsb2NhdGUgdGhl
IGFycmF5LgorICAgIGlmIChjYXBhY2l0eV8gPiAxMjcpIHsKKyAgICAgIGRlc3Ryb3lfc2xvdHMo
KTsKKyAgICB9IGVsc2UgaWYgKGNhcGFjaXR5XykgeworICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgIT0gY2FwYWNpdHlfOyArK2kpIHsKKyAgICAgICAgaWYgKElzRnVsbChjdHJsX1tpXSkpIHsK
KyAgICAgICAgICBQb2xpY3lUcmFpdHM6OmRlc3Ryb3koJmFsbG9jX3JlZigpLCBzbG90c18gKyBp
KTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgc2l6ZV8gPSAwOworICAgICAgcmVzZXRfY3Ry
bCgpOworICAgICAgZ3Jvd3RoX2xlZnQoKSA9IHN0YXRpY19jYXN0PHNpemVfdD4oY2FwYWNpdHlf
ICoga01heExvYWRGYWN0b3IpOworICAgIH0KKyAgICBhc3NlcnQoZW1wdHkoKSk7CisgIH0KKwor
ICAvLyBUaGlzIG92ZXJsb2FkIGtpY2tzIGluIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGFuIHJ2YWx1
ZSBvZiBpbnNlcnRhYmxlIGFuZAorICAvLyBkZWNvbXBvc2FibGUgdHlwZSBvdGhlciB0aGFuIGlu
aXRfdHlwZS4KKyAgLy8KKyAgLy8gICBmbGF0X2hhc2hfbWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IG07
CisgIC8vICAgbS5pbnNlcnQoc3RkOjptYWtlX3BhaXIoImFiYyIsIDQyKSk7CisgIHRlbXBsYXRl
IDxjbGFzcyBULCBSZXF1aXJlc0luc2VydGFibGU8VD4gPSAwLAorICAgICAgICAgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNEZWNvbXBvc2FibGU8VD46OnZhbHVlLCBpbnQ+Ojp0eXBlID0g
MCwKKyAgICAgICAgICAgIFQqID0gbnVsbHB0cj4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29s
PiBpbnNlcnQoVCYmIHZhbHVlKSB7CisgICAgcmV0dXJuIGVtcGxhY2Uoc3RkOjpmb3J3YXJkPFQ+
KHZhbHVlKSk7CisgIH0KKworICAvLyBUaGlzIG92ZXJsb2FkIGtpY2tzIGluIHdoZW4gdGhlIGFy
Z3VtZW50IGlzIGEgYml0ZmllbGQgb3IgYW4gbHZhbHVlIG9mCisgIC8vIGluc2VydGFibGUgYW5k
IGRlY29tcG9zYWJsZSB0eXBlLgorICAvLworICAvLyAgIHVuaW9uIHsgaW50IG4gOiAxOyB9Owor
ICAvLyAgIGZsYXRfaGFzaF9zZXQ8aW50PiBzOworICAvLyAgIHMuaW5zZXJ0KG4pOworICAvLwor
ICAvLyAgIGZsYXRfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+IHM7CisgIC8vICAgY29uc3QgY2hhciog
cCA9ICJoZWxsbyI7CisgIC8vICAgcy5pbnNlcnQocCk7CisgIC8vCisgIC8vIFRPRE8ocm9tYW5w
KTogT25jZSB3ZSBzdG9wIHN1cHBvcnRpbmcgZ2NjIDUuMSBhbmQgYmVsb3csIHJlcGxhY2UKKyAg
Ly8gUmVxdWlyZXNJbnNlcnRhYmxlPFQ+IHdpdGggUmVxdWlyZXNJbnNlcnRhYmxlPGNvbnN0IFQm
Pi4KKyAgLy8gV2UgYXJlIGhpdHRpbmcgdGhpcyBidWc6IGh0dHBzOi8vZ29kYm9sdC5vcmcvZy8x
Vmh0NGYuCisgIHRlbXBsYXRlIDwKKyAgICAgIGNsYXNzIFQsIFJlcXVpcmVzSW5zZXJ0YWJsZTxU
PiA9IDAsCisgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc0RlY29tcG9zYWJsZTxjb25z
dCBUJj46OnZhbHVlLCBpbnQ+Ojp0eXBlID0gMD4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29s
PiBpbnNlcnQoY29uc3QgVCYgdmFsdWUpIHsKKyAgICByZXR1cm4gZW1wbGFjZSh2YWx1ZSk7Cisg
IH0KKworICAvLyBUaGlzIG92ZXJsb2FkIGtpY2tzIGluIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGFu
IHJ2YWx1ZSBvZiBpbml0X3R5cGUuIEl0cworICAvLyBwdXJwb3NlIGlzIHRvIGhhbmRsZSBicmFj
ZS1pbml0LWxpc3QgYXJndW1lbnRzLgorICAvLworICAvLyAgIGZsYXRfaGFzaF9zZXQ8c3RkOjpz
dHJpbmcsIGludD4gczsKKyAgLy8gICBzLmluc2VydCh7ImFiYyIsIDQyfSk7CisgIHN0ZDo6cGFp
cjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0KGluaXRfdHlwZSYmIHZhbHVlKSB7CisgICAgcmV0dXJu
IGVtcGxhY2Uoc3RkOjptb3ZlKHZhbHVlKSk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgVCwg
UmVxdWlyZXNJbnNlcnRhYmxlPFQ+ID0gMCwKKyAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPElzRGVjb21wb3NhYmxlPFQ+Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9IDAsCisgICAgICAg
ICAgICBUKiA9IG51bGxwdHI+CisgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciwgVCYm
IHZhbHVlKSB7CisgICAgcmV0dXJuIGluc2VydChzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKS5maXJz
dDsKKyAgfQorCisgIC8vIFRPRE8ocm9tYW5wKTogT25jZSB3ZSBzdG9wIHN1cHBvcnRpbmcgZ2Nj
IDUuMSBhbmQgYmVsb3csIHJlcGxhY2UKKyAgLy8gUmVxdWlyZXNJbnNlcnRhYmxlPFQ+IHdpdGgg
UmVxdWlyZXNJbnNlcnRhYmxlPGNvbnN0IFQmPi4KKyAgLy8gV2UgYXJlIGhpdHRpbmcgdGhpcyBi
dWc6IGh0dHBzOi8vZ29kYm9sdC5vcmcvZy8xVmh0NGYuCisgIHRlbXBsYXRlIDwKKyAgICAgIGNs
YXNzIFQsIFJlcXVpcmVzSW5zZXJ0YWJsZTxUPiA9IDAsCisgICAgICB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxJc0RlY29tcG9zYWJsZTxjb25zdCBUJj46OnZhbHVlLCBpbnQ+Ojp0eXBlID0gMD4K
KyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yLCBjb25zdCBUJiB2YWx1ZSkgeworICAg
IHJldHVybiBpbnNlcnQodmFsdWUpLmZpcnN0OworICB9CisKKyAgaXRlcmF0b3IgaW5zZXJ0KGNv
bnN0X2l0ZXJhdG9yLCBpbml0X3R5cGUmJiB2YWx1ZSkgeworICAgIHJldHVybiBpbnNlcnQoc3Rk
Ojptb3ZlKHZhbHVlKSkuZmlyc3Q7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4K
KyAgdm9pZCBpbnNlcnQoSW5wdXRJdCBmaXJzdCwgSW5wdXRJdCBsYXN0KSB7CisgICAgZm9yICg7
IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpIGluc2VydCgqZmlyc3QpOworICB9CisKKyAgdGVtcGxh
dGUgPGNsYXNzIFQsIFJlcXVpcmVzTm90SW5pdDxUPiA9IDAsIFJlcXVpcmVzSW5zZXJ0YWJsZTxj
b25zdCBUJj4gPSAwPgorICB2b2lkIGluc2VydChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaWxp
c3QpIHsKKyAgICBpbnNlcnQoaWxpc3QuYmVnaW4oKSwgaWxpc3QuZW5kKCkpOworICB9CisKKyAg
dm9pZCBpbnNlcnQoc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaWxpc3QpIHsKKyAg
ICBpbnNlcnQoaWxpc3QuYmVnaW4oKSwgaWxpc3QuZW5kKCkpOworICB9CisKKyAgaW5zZXJ0X3Jl
dHVybl90eXBlPGl0ZXJhdG9yLCBub2RlX3R5cGU+IGluc2VydChub2RlX3R5cGUmJiBub2RlKSB7
CisgICAgaWYgKCFub2RlKSByZXR1cm4ge2VuZCgpLCBmYWxzZSwgbm9kZV90eXBlKCl9OworICAg
IGNvbnN0IGF1dG8mIGVsZW0gPSBQb2xpY3lUcmFpdHM6OmVsZW1lbnQobm9kZS5zbG90KCkpOwor
ICAgIGF1dG8gcmVzID0gUG9saWN5VHJhaXRzOjphcHBseSgKKyAgICAgICAgSW5zZXJ0U2xvdDxm
YWxzZT57KnRoaXMsIHN0ZDo6bW92ZSgqbm9kZS5zbG90KCkpfSwgZWxlbSk7CisgICAgaWYgKHJl
cy5zZWNvbmQpIHsKKyAgICAgIG5vZGUucmVzZXQoKTsKKyAgICAgIHJldHVybiB7cmVzLmZpcnN0
LCB0cnVlLCBub2RlX3R5cGUoKX07CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB7cmVzLmZp
cnN0LCBmYWxzZSwgc3RkOjptb3ZlKG5vZGUpfTsKKyAgICB9CisgIH0KKworICBpdGVyYXRvciBp
bnNlcnQoY29uc3RfaXRlcmF0b3IsIG5vZGVfdHlwZSYmIG5vZGUpIHsKKyAgICByZXR1cm4gaW5z
ZXJ0KHN0ZDo6bW92ZShub2RlKSkuZmlyc3Q7CisgIH0KKworICAvLyBUaGlzIG92ZXJsb2FkIGtp
Y2tzIGluIGlmIHdlIGNhbiBkZWR1Y2UgdGhlIGtleSBmcm9tIGFyZ3MuIFRoaXMgZW5hYmxlcyB1
cworICAvLyB0byBhdm9pZCBjb25zdHJ1Y3RpbmcgdmFsdWVfdHlwZSBpZiBhbiBlbnRyeSB3aXRo
IHRoZSBzYW1lIGtleSBhbHJlYWR5CisgIC8vIGV4aXN0cy4KKyAgLy8KKyAgLy8gRm9yIGV4YW1w
bGU6CisgIC8vCisgIC8vICAgZmxhdF9oYXNoX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+
IG0gPSB7eyJhYmMiLCAiZGVmIn19OworICAvLyAgIC8vIENyZWF0ZXMgbm8gc3RkOjpzdHJpbmcg
Y29waWVzIGFuZCBtYWtlcyBubyBoZWFwIGFsbG9jYXRpb25zLgorICAvLyAgIG0uZW1wbGFjZSgi
YWJjIiwgInh5eiIpOworICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncywgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNEZWNvbXBvc2FibGU8
QXJncy4uLj46OnZhbHVlLCBpbnQ+Ojp0eXBlID0gMD4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBi
b29sPiBlbXBsYWNlKEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgcmV0dXJuIFBvbGljeVRyYWl0czo6
YXBwbHkoRW1wbGFjZURlY29tcG9zYWJsZXsqdGhpc30sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIC8vIFRoaXMg
b3ZlcmxvYWQga2lja3MgaW4gaWYgd2UgY2Fubm90IGRlZHVjZSB0aGUga2V5IGZyb20gYXJncy4g
SXQgY29uc3RydWN0cworICAvLyB2YWx1ZV90eXBlIHVuY29uZGl0aW9uYWxseSBhbmQgdGhlbiBl
aXRoZXIgbW92ZXMgaXQgaW50byB0aGUgdGFibGUgb3IKKyAgLy8gZGVzdHJveXMuCisgIHRlbXBs
YXRlIDxjbGFzcy4uLiBBcmdzLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAhSXNEZWNvbXBvc2FibGU8QXJncy4uLj46OnZhbHVlLCBpbnQ+
Ojp0eXBlID0gMD4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlKEFyZ3MmJi4u
LiBhcmdzKSB7CisgICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKHNsb3Rf
dHlwZSksIGFsaWdub2Yoc2xvdF90eXBlKT46OnR5cGUKKyAgICAgICAgcmF3OworICAgIHNsb3Rf
dHlwZSogc2xvdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2xvdF90eXBlKj4oJnJhdyk7CisKKyAgICBQ
b2xpY3lUcmFpdHM6OmNvbnN0cnVjdCgmYWxsb2NfcmVmKCksIHNsb3QsIHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7CisgICAgY29uc3QgYXV0byYgZWxlbSA9IFBvbGljeVRyYWl0czo6ZWxl
bWVudChzbG90KTsKKyAgICByZXR1cm4gUG9saWN5VHJhaXRzOjphcHBseShJbnNlcnRTbG90PHRy
dWU+eyp0aGlzLCBzdGQ6Om1vdmUoKnNsb3QpfSwgZWxlbSk7CisgIH0KKworICB0ZW1wbGF0ZSA8
Y2xhc3MuLi4gQXJncz4KKyAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLCBB
cmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiBlbXBsYWNlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLikuZmlyc3Q7CisgIH0KKworICAvLyBFeHRlbnNpb24gQVBJOiBzdXBwb3J0IGZvciBs
YXp5IGVtcGxhY2UuCisgIC8vCisgIC8vIExvb2tzIHVwIGtleSBpbiB0aGUgdGFibGUuIElmIGZv
dW5kLCByZXR1cm5zIHRoZSBpdGVyYXRvciB0byB0aGUgZWxlbWVudC4KKyAgLy8gT3RoZXJ3aXNl
IGNhbGxzIGYgd2l0aCBvbmUgYXJndW1lbnQgb2YgdHlwZSByYXdfaGFzaF9zZXQ6OmNvbnN0cnVj
dG9yLiBmCisgIC8vIE1VU1QgY2FsbCByYXdfaGFzaF9zZXQ6OmNvbnN0cnVjdG9yIHdpdGggYXJn
dW1lbnRzIGFzIGlmIGEKKyAgLy8gcmF3X2hhc2hfc2V0Ojp2YWx1ZV90eXBlIGlzIGNvbnN0cnVj
dGVkLCBvdGhlcndpc2UgdGhlIGJlaGF2aW9yIGlzCisgIC8vIHVuZGVmaW5lZC4KKyAgLy8KKyAg
Ly8gRm9yIGV4YW1wbGU6CisgIC8vCisgIC8vICAgc3RkOjp1bm9yZGVyZWRfc2V0PEFyZW5hU3Ry
aW5nPiBzOworICAvLyAgIC8vIE1ha2VzIEFyZW5hU3RyIGV2ZW4gaWYgImFiYyIgaXMgaW4gdGhl
IG1hcC4KKyAgLy8gICBzLmluc2VydChBcmVuYVN0cmluZygmYXJlbmEsICJhYmMiKSk7CisgIC8v
CisgIC8vICAgZmxhdF9oYXNoX3NldDxBcmVuYVN0cj4gczsKKyAgLy8gICAvLyBNYWtlcyBBcmVu
YVN0ciBvbmx5IGlmICJhYmMiIGlzIG5vdCBpbiB0aGUgbWFwLgorICAvLyAgIHMubGF6eV9lbXBs
YWNlKCJhYmMiLCBbJl0oY29uc3QgY29uc3RydWN0b3ImIGN0b3IpIHsKKyAgLy8gICAgIGN0b3Io
JmFyZW5hLCAiYWJjIik7CisgIC8vICAgfSk7CisgIC8vCisgIC8vIFdBUk5JTkc6IFRoaXMgQVBJ
IGlzIGN1cnJlbnRseSBleHBlcmltZW50YWwuIElmIHRoZXJlIGlzIGEgd2F5IHRvIGltcGxlbWVu
dAorICAvLyB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSByZXN0IG9mIHRoZSBBUEksIHByZWZlciB0
aGF0LgorICBjbGFzcyBjb25zdHJ1Y3RvciB7CisgICAgZnJpZW5kIGNsYXNzIHJhd19oYXNoX3Nl
dDsKKworICAgcHVibGljOgorICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICAgIHZvaWQg
b3BlcmF0b3IoKShBcmdzJiYuLi4gYXJncykgY29uc3QgeworICAgICAgYXNzZXJ0KCpzbG90Xyk7
CisgICAgICBQb2xpY3lUcmFpdHM6OmNvbnN0cnVjdChhbGxvY18sICpzbG90Xywgc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICpzbG90XyA9IG51bGxwdHI7CisgICAgfQorCisg
ICBwcml2YXRlOgorICAgIGNvbnN0cnVjdG9yKGFsbG9jYXRvcl90eXBlKiBhLCBzbG90X3R5cGUq
KiBzbG90KSA6IGFsbG9jXyhhKSwgc2xvdF8oc2xvdCkge30KKworICAgIGFsbG9jYXRvcl90eXBl
KiBhbGxvY187CisgICAgc2xvdF90eXBlKiogc2xvdF87CisgIH07CisKKyAgdGVtcGxhdGUgPGNs
YXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MgRj4KKyAgaXRlcmF0b3IgbGF6eV9lbXBsYWNlKGNvbnN0
IGtleV9hcmc8Sz4mIGtleSwgRiYmIGYpIHsKKyAgICBhdXRvIHJlcyA9IGZpbmRfb3JfcHJlcGFy
ZV9pbnNlcnQoa2V5KTsKKyAgICBpZiAocmVzLnNlY29uZCkgeworICAgICAgc2xvdF90eXBlKiBz
bG90ID0gc2xvdHNfICsgcmVzLmZpcnN0OworICAgICAgc3RkOjpmb3J3YXJkPEY+KGYpKGNvbnN0
cnVjdG9yKCZhbGxvY19yZWYoKSwgJnNsb3QpKTsKKyAgICAgIGFzc2VydCghc2xvdCk7CisgICAg
fQorICAgIHJldHVybiBpdGVyYXRvcl9hdChyZXMuZmlyc3QpOworICB9CisKKyAgLy8gRXh0ZW5z
aW9uIEFQSTogc3VwcG9ydCBmb3IgaGV0ZXJvZ2VuZW91cyBrZXlzLgorICAvLworICAvLyAgIHN0
ZDo6dW5vcmRlcmVkX3NldDxzdGQ6OnN0cmluZz4gczsKKyAgLy8gICAvLyBUdXJucyAiYWJjIiBp
bnRvIHN0ZDo6c3RyaW5nLgorICAvLyAgIHMuZXJhc2UoImFiYyIpOworICAvLworICAvLyAgIGZs
YXRfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+IHM7CisgIC8vICAgLy8gVXNlcyAiYWJjIiBkaXJlY3Rs
eSB3aXRob3V0IGNvcHlpbmcgaXQgaW50byBzdGQ6OnN0cmluZy4KKyAgLy8gICBzLmVyYXNlKCJh
YmMiKTsKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZT4KKyAgc2l6ZV90eXBlIGVyYXNl
KGNvbnN0IGtleV9hcmc8Sz4mIGtleSkgeworICAgIGF1dG8gaXQgPSBmaW5kKGtleSk7CisgICAg
aWYgKGl0ID09IGVuZCgpKSByZXR1cm4gMDsKKyAgICBlcmFzZShpdCk7CisgICAgcmV0dXJuIDE7
CisgIH0KKworICAvLyBFcmFzZXMgdGhlIGVsZW1lbnQgcG9pbnRlZCB0byBieSBgaXRgLiAgVW5s
aWtlIGBzdGQ6OnVub3JkZXJlZF9zZXQ6OmVyYXNlYCwKKyAgLy8gdGhpcyBtZXRob2QgcmV0dXJu
cyB2b2lkIHRvIHJlZHVjZSBhbGdvcml0aG1pYyBjb21wbGV4aXR5IHRvIE8oMSkuICBJbgorICAv
LyBvcmRlciB0byBlcmFzZSB3aGlsZSBpdGVyYXRpbmcgYWNyb3NzIGEgbWFwLCB1c2UgdGhlIGZv
bGxvd2luZyBpZGlvbSAod2hpY2gKKyAgLy8gYWxzbyB3b3JrcyBmb3Igc3RhbmRhcmQgY29udGFp
bmVycyk6CisgIC8vCisgIC8vIGZvciAoYXV0byBpdCA9IG0uYmVnaW4oKSwgZW5kID0gbS5lbmQo
KTsgaXQgIT0gZW5kOykgeworICAvLyAgIGlmICg8cHJlZD4pIHsKKyAgLy8gICAgIG0uZXJhc2Uo
aXQrKyk7CisgIC8vICAgfSBlbHNlIHsKKyAgLy8gICAgICsraXQ7CisgIC8vICAgfQorICAvLyB9
CisgIHZvaWQgZXJhc2UoY29uc3RfaXRlcmF0b3IgY2l0KSB7IGVyYXNlKGNpdC5pbm5lcl8pOyB9
CisKKyAgLy8gVGhpcyBvdmVybG9hZCBpcyBuZWNlc3NhcnkgYmVjYXVzZSBvdGhlcndpc2UgZXJh
c2U8Sz4oY29uc3QgSyYpIHdvdWxkIGJlCisgIC8vIGEgYmV0dGVyIG1hdGNoIGlmIG5vbi1jb25z
dCBpdGVyYXRvciBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQuCisgIHZvaWQgZXJhc2UoaXRlcmF0
b3IgaXQpIHsKKyAgICBhc3NlcnQoaXQgIT0gZW5kKCkpOworICAgIFBvbGljeVRyYWl0czo6ZGVz
dHJveSgmYWxsb2NfcmVmKCksIGl0LnNsb3RfKTsKKyAgICBlcmFzZV9tZXRhX29ubHkoaXQpOwor
ICB9CisKKyAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJh
dG9yIGxhc3QpIHsKKyAgICB3aGlsZSAoZmlyc3QgIT0gbGFzdCkgeworICAgICAgZXJhc2UoZmly
c3QrKyk7CisgICAgfQorICAgIHJldHVybiBsYXN0LmlubmVyXzsKKyAgfQorCisgIC8vIE1vdmVz
IGVsZW1lbnRzIGZyb20gYHNyY2AgaW50byBgdGhpc2AuCisgIC8vIElmIHRoZSBlbGVtZW50IGFs
cmVhZHkgZXhpc3RzIGluIGB0aGlzYCwgaXQgaXMgbGVmdCB1bm1vZGlmaWVkIGluIGBzcmNgLgor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgRT4KKyAgdm9pZCBtZXJnZShyYXdfaGFz
aF9zZXQ8UG9saWN5LCBILCBFLCBBbGxvYz4mIHNyYykgeyAgLy8gTk9MSU5UCisgICAgYXNzZXJ0
KHRoaXMgIT0gJnNyYyk7CisgICAgZm9yIChhdXRvIGl0ID0gc3JjLmJlZ2luKCksIGUgPSBzcmMu
ZW5kKCk7IGl0ICE9IGU7ICsraXQpIHsKKyAgICAgIGlmIChQb2xpY3lUcmFpdHM6OmFwcGx5KElu
c2VydFNsb3Q8ZmFsc2U+eyp0aGlzLCBzdGQ6Om1vdmUoKml0LnNsb3RfKX0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQb2xpY3lUcmFpdHM6OmVsZW1lbnQoaXQuc2xvdF8pKQorICAg
ICAgICAgICAgICAuc2Vjb25kKSB7CisgICAgICAgIHNyYy5lcmFzZV9tZXRhX29ubHkoaXQpOwor
ICAgICAgfQorICAgIH0KKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBF
PgorICB2b2lkIG1lcmdlKHJhd19oYXNoX3NldDxQb2xpY3ksIEgsIEUsIEFsbG9jPiYmIHNyYykg
eworICAgIG1lcmdlKHNyYyk7CisgIH0KKworICBub2RlX3R5cGUgZXh0cmFjdChjb25zdF9pdGVy
YXRvciBwb3NpdGlvbikgeworICAgIG5vZGVfdHlwZSBub2RlKGFsbG9jX3JlZigpLCBwb3NpdGlv
bi5pbm5lcl8uc2xvdF8pOworICAgIGVyYXNlX21ldGFfb25seShwb3NpdGlvbik7CisgICAgcmV0
dXJuIG5vZGU7CisgIH0KKworICB0ZW1wbGF0ZSA8CisgICAgICBjbGFzcyBLID0ga2V5X3R5cGUs
CisgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPEssIGl0ZXJhdG9y
Pjo6dmFsdWUsIGludD46OnR5cGUgPSAwPgorICBub2RlX3R5cGUgZXh0cmFjdChjb25zdCBrZXlf
YXJnPEs+JiBrZXkpIHsKKyAgICBhdXRvIGl0ID0gZmluZChrZXkpOworICAgIHJldHVybiBpdCA9
PSBlbmQoKSA/IG5vZGVfdHlwZSgpIDogZXh0cmFjdChjb25zdF9pdGVyYXRvcntpdH0pOworICB9
CisKKyAgdm9pZCBzd2FwKHJhd19oYXNoX3NldCYgdGhhdCkgbm9leGNlcHQoCisgICAgICBJc05v
VGhyb3dTd2FwcGFibGU8aGFzaGVyPigpICYmIElzTm9UaHJvd1N3YXBwYWJsZTxrZXlfZXF1YWw+
KCkgJiYKKyAgICAgICghQWxsb2NUcmFpdHM6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6
dmFsdWUgfHwKKyAgICAgICBJc05vVGhyb3dTd2FwcGFibGU8YWxsb2NhdG9yX3R5cGU+KCkpKSB7
CisgICAgdXNpbmcgc3RkOjpzd2FwOworICAgIHN3YXAoY3RybF8sIHRoYXQuY3RybF8pOworICAg
IHN3YXAoc2xvdHNfLCB0aGF0LnNsb3RzXyk7CisgICAgc3dhcChzaXplXywgdGhhdC5zaXplXyk7
CisgICAgc3dhcChjYXBhY2l0eV8sIHRoYXQuY2FwYWNpdHlfKTsKKyAgICBzd2FwKGdyb3d0aF9s
ZWZ0KCksIHRoYXQuZ3Jvd3RoX2xlZnQoKSk7CisgICAgc3dhcChoYXNoX3JlZigpLCB0aGF0Lmhh
c2hfcmVmKCkpOworICAgIHN3YXAoZXFfcmVmKCksIHRoYXQuZXFfcmVmKCkpOworICAgIGlmIChB
bGxvY1RyYWl0czo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZSkgeworICAgICAg
c3dhcChhbGxvY19yZWYoKSwgdGhhdC5hbGxvY19yZWYoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
IC8vIElmIHRoZSBhbGxvY2F0b3JzIGRvIG5vdCBjb21wYXJlIGVxdWFsIGl0IGlzIG9mZmljaWFs
bHkgdW5kZWZpbmVkCisgICAgICAvLyBiZWhhdmlvci4gV2UgY2hvb3NlIHRvIGRvIG5vdGhpbmcu
CisgICAgfQorICB9CisKKyAgdm9pZCByZWhhc2goc2l6ZV90IG4pIHsKKyAgICBpZiAobiA9PSAw
ICYmIGNhcGFjaXR5XyA9PSAwKSByZXR1cm47CisgICAgaWYgKG4gPT0gMCAmJiBzaXplXyA9PSAw
KSByZXR1cm4gZGVzdHJveV9zbG90cygpOworICAgIGF1dG8gbSA9IE5vcm1hbGl6ZUNhcGFjaXR5
KHN0ZDo6bWF4KG4sIE51bVNsb3RzRmFzdChzaXplKCkpKSk7CisgICAgLy8gbiA9PSAwIHVuY29u
ZGl0aW9uYWxseSByZWhhc2hlcyBhcyBwZXIgdGhlIHN0YW5kYXJkLgorICAgIGlmIChuID09IDAg
fHwgbSA+IGNhcGFjaXR5XykgeworICAgICAgcmVzaXplKG0pOworICAgIH0KKyAgfQorCisgIHZv
aWQgcmVzZXJ2ZShzaXplX3QgbikgeworICAgIHJlaGFzaChOdW1TbG90c0Zhc3QobikpOworICB9
CisKKyAgLy8gRXh0ZW5zaW9uIEFQSTogc3VwcG9ydCBmb3IgaGV0ZXJvZ2VuZW91cyBrZXlzLgor
ICAvLworICAvLyAgIHN0ZDo6dW5vcmRlcmVkX3NldDxzdGQ6OnN0cmluZz4gczsKKyAgLy8gICAv
LyBUdXJucyAiYWJjIiBpbnRvIHN0ZDo6c3RyaW5nLgorICAvLyAgIHMuY291bnQoImFiYyIpOwor
ICAvLworICAvLyAgIGNoX3NldDxzdGQ6OnN0cmluZz4gczsKKyAgLy8gICAvLyBVc2VzICJhYmMi
IGRpcmVjdGx5IHdpdGhvdXQgY29weWluZyBpdCBpbnRvIHN0ZDo6c3RyaW5nLgorICAvLyAgIHMu
Y291bnQoImFiYyIpOworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlPgorICBzaXplX3Qg
Y291bnQoY29uc3Qga2V5X2FyZzxLPiYga2V5KSBjb25zdCB7CisgICAgcmV0dXJuIGZpbmQoa2V5
KSA9PSBlbmQoKSA/IDAgOiAxOworICB9CisKKyAgLy8gSXNzdWVzIENQVSBwcmVmZXRjaCBpbnN0
cnVjdGlvbnMgZm9yIHRoZSBtZW1vcnkgbmVlZGVkIHRvIGZpbmQgb3IgaW5zZXJ0CisgIC8vIGEg
a2V5LiAgTGlrZSBhbGwgbG9va3VwIGZ1bmN0aW9ucywgdGhpcyBzdXBwb3J0IGhldGVyb2dlbmVv
dXMga2V5cy4KKyAgLy8KKyAgLy8gTk9URTogVGhpcyBpcyBhIHZlcnkgbG93IGxldmVsIG9wZXJh
dGlvbiBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIHdpdGhvdXQKKyAgLy8gc3BlY2lmaWMgYmVuY2ht
YXJrcyBpbmRpY2F0aW5nIGl0cyBpbXBvcnRhbmNlLgorICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtl
eV90eXBlPgorICB2b2lkIHByZWZldGNoKGNvbnN0IGtleV9hcmc8Sz4mIGtleSkgY29uc3Qgewor
ICAgICh2b2lkKWtleTsKKyNpZiBkZWZpbmVkKF9fR05VQ19fKQorICAgIGF1dG8gc2VxID0gcHJv
YmUoaGFzaF9yZWYoKShrZXkpKTsKKyAgICBfX2J1aWx0aW5fcHJlZmV0Y2goc3RhdGljX2Nhc3Q8
Y29uc3Qgdm9pZCo+KGN0cmxfICsgc2VxLm9mZnNldCgpKSk7CisgICAgX19idWlsdGluX3ByZWZl
dGNoKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihzbG90c18gKyBzZXEub2Zmc2V0KCkpKTsKKyNl
bmRpZiAgLy8gX19HTlVDX18KKyAgfQorCisgIC8vIFRoZSBBUEkgb2YgZmluZCgpIGhhcyB0d28g
ZXh0ZW5zaW9ucy4KKyAgLy8KKyAgLy8gMS4gVGhlIGhhc2ggY2FuIGJlIHBhc3NlZCBieSB0aGUg
dXNlci4gSXQgbXVzdCBiZSBlcXVhbCB0byB0aGUgaGFzaCBvZiB0aGUKKyAgLy8ga2V5LgorICAv
LworICAvLyAyLiBUaGUgdHlwZSBvZiB0aGUga2V5IGFyZ3VtZW50IGRvZXNuJ3QgaGF2ZSB0byBi
ZSBrZXlfdHlwZS4gVGhpcyBpcyBzbworICAvLyBjYWxsZWQgaGV0ZXJvZ2VuZW91cyBrZXkgc3Vw
cG9ydC4KKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZT4KKyAgaXRlcmF0b3IgZmluZChj
b25zdCBrZXlfYXJnPEs+JiBrZXksIHNpemVfdCBoYXNoKSB7CisgICAgYXV0byBzZXEgPSBwcm9i
ZShoYXNoKTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgR3JvdXAgZ3tjdHJsXyArIHNlcS5v
ZmZzZXQoKX07CisgICAgICBmb3IgKGludCBpIDogZy5NYXRjaChIMihoYXNoKSkpIHsKKyAgICAg
ICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKFBvbGljeVRyYWl0czo6YXBwbHkoCisgICAgICAgICAg
ICAgICAgRXF1YWxFbGVtZW50PEs+e2tleSwgZXFfcmVmKCl9LAorICAgICAgICAgICAgICAgIFBv
bGljeVRyYWl0czo6ZWxlbWVudChzbG90c18gKyBzZXEub2Zmc2V0KGkpKSkpKQorICAgICAgICAg
IHJldHVybiBpdGVyYXRvcl9hdChzZXEub2Zmc2V0KGkpKTsKKyAgICAgIH0KKyAgICAgIGlmIChB
QlNMX1BSRURJQ1RfVFJVRShnLk1hdGNoRW1wdHkoKSkpIHJldHVybiBlbmQoKTsKKyAgICAgIHNl
cS5uZXh0KCk7CisgICAgfQorICB9CisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGU+Cisg
IGl0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X2FyZzxLPiYga2V5KSB7CisgICAgcmV0dXJuIGZpbmQo
a2V5LCBoYXNoX3JlZigpKGtleSkpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlf
dHlwZT4KKyAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBrZXlfYXJnPEs+JiBrZXksIHNpemVf
dCBoYXNoKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8cmF3X2hhc2hfc2V0Kj4odGhp
cyktPmZpbmQoa2V5LCBoYXNoKTsKKyAgfQorICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBl
PgorICBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IGtleV9hcmc8Sz4mIGtleSkgY29uc3Qgewor
ICAgIHJldHVybiBmaW5kKGtleSwgaGFzaF9yZWYoKShrZXkpKTsKKyAgfQorCisgIHRlbXBsYXRl
IDxjbGFzcyBLID0ga2V5X3R5cGU+CisgIGJvb2wgY29udGFpbnMoY29uc3Qga2V5X2FyZzxLPiYg
a2V5KSBjb25zdCB7CisgICAgcmV0dXJuIGZpbmQoa2V5KSAhPSBlbmQoKTsKKyAgfQorCisgIHRl
bXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGU+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0
b3I+IGVxdWFsX3JhbmdlKGNvbnN0IGtleV9hcmc8Sz4mIGtleSkgeworICAgIGF1dG8gaXQgPSBm
aW5kKGtleSk7CisgICAgaWYgKGl0ICE9IGVuZCgpKSByZXR1cm4ge2l0LCBzdGQ6Om5leHQoaXQp
fTsKKyAgICByZXR1cm4ge2l0LCBpdH07CisgIH0KKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlf
dHlwZT4KKyAgc3RkOjpwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gZXF1YWxf
cmFuZ2UoCisgICAgICBjb25zdCBrZXlfYXJnPEs+JiBrZXkpIGNvbnN0IHsKKyAgICBhdXRvIGl0
ID0gZmluZChrZXkpOworICAgIGlmIChpdCAhPSBlbmQoKSkgcmV0dXJuIHtpdCwgc3RkOjpuZXh0
KGl0KX07CisgICAgcmV0dXJuIHtpdCwgaXR9OworICB9CisKKyAgc2l6ZV90IGJ1Y2tldF9jb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIGNhcGFjaXR5XzsgfQorICBmbG9hdCBsb2FkX2ZhY3RvcigpIGNv
bnN0IHsKKyAgICByZXR1cm4gY2FwYWNpdHlfID8gc3RhdGljX2Nhc3Q8ZG91YmxlPihzaXplKCkp
IC8gY2FwYWNpdHlfIDogMC4wOworICB9CisgIGZsb2F0IG1heF9sb2FkX2ZhY3RvcigpIGNvbnN0
IHsgcmV0dXJuIDEuMGY7IH0KKyAgdm9pZCBtYXhfbG9hZF9mYWN0b3IoZmxvYXQpIHsKKyAgICAv
LyBEb2VzIG5vdGhpbmcuCisgIH0KKworICBoYXNoZXIgaGFzaF9mdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGhhc2hfcmVmKCk7IH0KKyAga2V5X2VxdWFsIGtleV9lcSgpIGNvbnN0IHsgcmV0dXJu
IGVxX3JlZigpOyB9CisgIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJl
dHVybiBhbGxvY19yZWYoKTsgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgcmF3
X2hhc2hfc2V0JiBhLCBjb25zdCByYXdfaGFzaF9zZXQmIGIpIHsKKyAgICBpZiAoYS5zaXplKCkg
IT0gYi5zaXplKCkpIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCByYXdfaGFzaF9zZXQqIG91dGVy
ID0gJmE7CisgICAgY29uc3QgcmF3X2hhc2hfc2V0KiBpbm5lciA9ICZiOworICAgIGlmIChvdXRl
ci0+Y2FwYWNpdHkoKSA+IGlubmVyLT5jYXBhY2l0eSgpKSBzdGQ6OnN3YXAob3V0ZXIsIGlubmVy
KTsKKyAgICBmb3IgKGNvbnN0IHZhbHVlX3R5cGUmIGVsZW0gOiAqb3V0ZXIpCisgICAgICBpZiAo
IWlubmVyLT5oYXNfZWxlbWVudChlbGVtKSkgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OworICB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCByYXdfaGFzaF9zZXQmIGEs
IGNvbnN0IHJhd19oYXNoX3NldCYgYikgeworICAgIHJldHVybiAhKGEgPT0gYik7CisgIH0KKwor
ICBmcmllbmQgdm9pZCBzd2FwKHJhd19oYXNoX3NldCYgYSwKKyAgICAgICAgICAgICAgICAgICBy
YXdfaGFzaF9zZXQmIGIpIG5vZXhjZXB0KG5vZXhjZXB0KGEuc3dhcChiKSkpIHsKKyAgICBhLnN3
YXAoYik7CisgIH0KKworIHByaXZhdGU6CisgIHRlbXBsYXRlIDxjbGFzcyBDb250YWluZXIsIHR5
cGVuYW1lIEVuYWJsZXI+CisgIGZyaWVuZCBzdHJ1Y3QgYWJzbDo6Y29udGFpbmVyX2ludGVybmFs
OjpoYXNodGFibGVfZGVidWdfaW50ZXJuYWw6OgorICAgICAgSGFzaHRhYmxlRGVidWdBY2Nlc3M7
CisKKyAgc3RydWN0IEZpbmRFbGVtZW50IHsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3Mu
Li4gQXJncz4KKyAgICBjb25zdF9pdGVyYXRvciBvcGVyYXRvcigpKGNvbnN0IEsmIGtleSwgQXJn
cyYmLi4uKSBjb25zdCB7CisgICAgICByZXR1cm4gcy5maW5kKGtleSk7CisgICAgfQorICAgIGNv
bnN0IHJhd19oYXNoX3NldCYgczsKKyAgfTsKKworICBzdHJ1Y3QgSGFzaEVsZW1lbnQgeworICAg
IHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcy4uLiBBcmdzPgorICAgIHNpemVfdCBvcGVyYXRvcigp
KGNvbnN0IEsmIGtleSwgQXJncyYmLi4uKSBjb25zdCB7CisgICAgICByZXR1cm4gaChrZXkpOwor
ICAgIH0KKyAgICBjb25zdCBoYXNoZXImIGg7CisgIH07CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsx
PgorICBzdHJ1Y3QgRXF1YWxFbGVtZW50IHsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgSzIsIGNsYXNz
Li4uIEFyZ3M+CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEsyJiBsaHMsIEFyZ3MmJi4uLikg
Y29uc3QgeworICAgICAgcmV0dXJuIGVxKGxocywgcmhzKTsKKyAgICB9CisgICAgY29uc3QgSzEm
IHJoczsKKyAgICBjb25zdCBrZXlfZXF1YWwmIGVxOworICB9OworCisgIHN0cnVjdCBFbXBsYWNl
RGVjb21wb3NhYmxlIHsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MuLi4gQXJncz4KKyAg
ICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IG9wZXJhdG9yKCkoY29uc3QgSyYga2V5LCBBcmdz
JiYuLi4gYXJncykgY29uc3QgeworICAgICAgYXV0byByZXMgPSBzLmZpbmRfb3JfcHJlcGFyZV9p
bnNlcnQoa2V5KTsKKyAgICAgIGlmIChyZXMuc2Vjb25kKSB7CisgICAgICAgIHMuZW1wbGFjZV9h
dChyZXMuZmlyc3QsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICB9CisgICAg
ICByZXR1cm4ge3MuaXRlcmF0b3JfYXQocmVzLmZpcnN0KSwgcmVzLnNlY29uZH07CisgICAgfQor
ICAgIHJhd19oYXNoX3NldCYgczsKKyAgfTsKKworICB0ZW1wbGF0ZSA8Ym9vbCBkb19kZXN0cm95
PgorICBzdHJ1Y3QgSW5zZXJ0U2xvdCB7CisgICAgdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzLi4u
IEFyZ3M+CisgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBvcGVyYXRvcigpKGNvbnN0IEsm
IGtleSwgQXJncyYmLi4uKSAmJiB7CisgICAgICBhdXRvIHJlcyA9IHMuZmluZF9vcl9wcmVwYXJl
X2luc2VydChrZXkpOworICAgICAgaWYgKHJlcy5zZWNvbmQpIHsKKyAgICAgICAgUG9saWN5VHJh
aXRzOjp0cmFuc2Zlcigmcy5hbGxvY19yZWYoKSwgcy5zbG90c18gKyByZXMuZmlyc3QsICZzbG90
KTsKKyAgICAgIH0gZWxzZSBpZiAoZG9fZGVzdHJveSkgeworICAgICAgICBQb2xpY3lUcmFpdHM6
OmRlc3Ryb3koJnMuYWxsb2NfcmVmKCksICZzbG90KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB7
cy5pdGVyYXRvcl9hdChyZXMuZmlyc3QpLCByZXMuc2Vjb25kfTsKKyAgICB9CisgICAgcmF3X2hh
c2hfc2V0JiBzOworICAgIC8vIENvbnN0cnVjdGVkIHNsb3QuIEVpdGhlciBtb3ZlZCBpbnRvIHBs
YWNlIG9yIGRlc3Ryb3llZC4KKyAgICBzbG90X3R5cGUmJiBzbG90OworICB9OworCisgIC8vIENv
bXB1dGVzIHN0ZDo6Y2VpbChuIC8ga01heExvYWRGYWN0b3IpLiBGYXN0ZXIgdGhhbiBjYWxsaW5n
IHN0ZDo6Y2VpbC4KKyAgc3RhdGljIGlubGluZSBzaXplX3QgTnVtU2xvdHNGYXN0KHNpemVfdCBu
KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oCisgICAgICAgIChuICoga01heExv
YWRGYWN0b3JEZW5vbWluYXRvciArIChrTWF4TG9hZEZhY3Rvck51bWVyYXRvciAtIDEpKSAvCisg
ICAgICAgIGtNYXhMb2FkRmFjdG9yTnVtZXJhdG9yKTsKKyAgfQorCisgIC8vICJlcmFzZXMiIHRo
ZSBvYmplY3QgZnJvbSB0aGUgY29udGFpbmVyLCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFjdHVh
bGx5CisgIC8vIGRlc3Ryb3kgdGhlIG9iamVjdC4gSXQgb25seSB1cGRhdGVzIGFsbCB0aGUgbWV0
YWRhdGEgb2YgdGhlIGNsYXNzLgorICAvLyBUaGlzIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9u
IHdpdGggUG9saWN5Ojp0cmFuc2ZlciB0byBtb3ZlIHRoZSBvYmplY3QgdG8KKyAgLy8gYW5vdGhl
ciBwbGFjZS4KKyAgdm9pZCBlcmFzZV9tZXRhX29ubHkoY29uc3RfaXRlcmF0b3IgaXQpIHsKKyAg
ICBhc3NlcnQoSXNGdWxsKCppdC5pbm5lcl8uY3RybF8pICYmICJlcmFzaW5nIGEgZGFuZ2xpbmcg
aXRlcmF0b3IiKTsKKyAgICAtLXNpemVfOworICAgIGNvbnN0IHNpemVfdCBpbmRleCA9IGl0Lmlu
bmVyXy5jdHJsXyAtIGN0cmxfOworICAgIGNvbnN0IHNpemVfdCBpbmRleF9iZWZvcmUgPSAoaW5k
ZXggLSBHcm91cDo6a1dpZHRoKSAmIGNhcGFjaXR5XzsKKyAgICBjb25zdCBhdXRvIGVtcHR5X2Fm
dGVyID0gR3JvdXAoaXQuaW5uZXJfLmN0cmxfKS5NYXRjaEVtcHR5KCk7CisgICAgY29uc3QgYXV0
byBlbXB0eV9iZWZvcmUgPSBHcm91cChjdHJsXyArIGluZGV4X2JlZm9yZSkuTWF0Y2hFbXB0eSgp
OworCisgICAgLy8gV2UgY291bnQgaG93IG1hbnkgY29uc2VjdXRpdmUgbm9uIGVtcHRpZXMgd2Ug
aGF2ZSB0byB0aGUgcmlnaHQgYW5kIHRvIHRoZQorICAgIC8vIGxlZnQgb2YgYGl0YC4gSWYgdGhl
IHN1bSBpcyA+PSBrV2lkdGggdGhlbiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcHJvYmUKKyAgICAv
LyB3aW5kb3cgdGhhdCBtaWdodCBoYXZlIHNlZW4gYSBmdWxsIGdyb3VwLgorICAgIGJvb2wgd2Fz
X25ldmVyX2Z1bGwgPQorICAgICAgICBlbXB0eV9iZWZvcmUgJiYgZW1wdHlfYWZ0ZXIgJiYKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihlbXB0eV9hZnRlci5UcmFpbGluZ1plcm9zKCkgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5X2JlZm9yZS5MZWFkaW5nWmVyb3MoKSkg
PCBHcm91cDo6a1dpZHRoOworCisgICAgc2V0X2N0cmwoaW5kZXgsIHdhc19uZXZlcl9mdWxsID8g
a0VtcHR5IDoga0RlbGV0ZWQpOworICAgIGdyb3d0aF9sZWZ0KCkgKz0gd2FzX25ldmVyX2Z1bGw7
CisgIH0KKworICB2b2lkIGluaXRpYWxpemVfc2xvdHMoKSB7CisgICAgYXNzZXJ0KGNhcGFjaXR5
Xyk7CisgICAgYXV0byBsYXlvdXQgPSBNYWtlTGF5b3V0KGNhcGFjaXR5Xyk7CisgICAgY2hhciog
bWVtID0gc3RhdGljX2Nhc3Q8Y2hhcio+KAorICAgICAgICBBbGxvY2F0ZTxMYXlvdXQ6OkFsaWdu
bWVudCgpPigmYWxsb2NfcmVmKCksIGxheW91dC5BbGxvY1NpemUoKSkpOworICAgIGN0cmxfID0g
cmVpbnRlcnByZXRfY2FzdDxjdHJsX3QqPihsYXlvdXQudGVtcGxhdGUgUG9pbnRlcjwwPihtZW0p
KTsKKyAgICBzbG90c18gPSBsYXlvdXQudGVtcGxhdGUgUG9pbnRlcjwxPihtZW0pOworICAgIHJl
c2V0X2N0cmwoKTsKKyAgICBncm93dGhfbGVmdCgpID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihjYXBh
Y2l0eV8gKiBrTWF4TG9hZEZhY3RvcikgLSBzaXplXzsKKyAgfQorCisgIHZvaWQgZGVzdHJveV9z
bG90cygpIHsKKyAgICBpZiAoIWNhcGFjaXR5XykgcmV0dXJuOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpICE9IGNhcGFjaXR5XzsgKytpKSB7CisgICAgICBpZiAoSXNGdWxsKGN0cmxfW2ldKSkg
eworICAgICAgICBQb2xpY3lUcmFpdHM6OmRlc3Ryb3koJmFsbG9jX3JlZigpLCBzbG90c18gKyBp
KTsKKyAgICAgIH0KKyAgICB9CisgICAgYXV0byBsYXlvdXQgPSBNYWtlTGF5b3V0KGNhcGFjaXR5
Xyk7CisgICAgLy8gVW5wb2lzb24gYmVmb3JlIHJldHVybmluZyB0aGUgbWVtb3J5IHRvIHRoZSBh
bGxvY2F0b3IuCisgICAgU2FuaXRpemVyVW5wb2lzb25NZW1vcnlSZWdpb24oc2xvdHNfLCBzaXpl
b2Yoc2xvdF90eXBlKSAqIGNhcGFjaXR5Xyk7CisgICAgRGVhbGxvY2F0ZTxMYXlvdXQ6OkFsaWdu
bWVudCgpPigmYWxsb2NfcmVmKCksIGN0cmxfLCBsYXlvdXQuQWxsb2NTaXplKCkpOworICAgIGN0
cmxfID0gRW1wdHlHcm91cCgpOworICAgIHNsb3RzXyA9IG51bGxwdHI7CisgICAgc2l6ZV8gPSAw
OworICAgIGNhcGFjaXR5XyA9IDA7CisgICAgZ3Jvd3RoX2xlZnQoKSA9IDA7CisgIH0KKworICB2
b2lkIHJlc2l6ZShzaXplX3QgbmV3X2NhcGFjaXR5KSB7CisgICAgYXNzZXJ0KElzVmFsaWRDYXBh
Y2l0eShuZXdfY2FwYWNpdHkpKTsKKyAgICBhdXRvKiBvbGRfY3RybCA9IGN0cmxfOworICAgIGF1
dG8qIG9sZF9zbG90cyA9IHNsb3RzXzsKKyAgICBjb25zdCBzaXplX3Qgb2xkX2NhcGFjaXR5ID0g
Y2FwYWNpdHlfOworICAgIGNhcGFjaXR5XyA9IG5ld19jYXBhY2l0eTsKKyAgICBpbml0aWFsaXpl
X3Nsb3RzKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBvbGRfY2FwYWNpdHk7ICsr
aSkgeworICAgICAgaWYgKElzRnVsbChvbGRfY3RybFtpXSkpIHsKKyAgICAgICAgc2l6ZV90IGhh
c2ggPSBQb2xpY3lUcmFpdHM6OmFwcGx5KEhhc2hFbGVtZW50e2hhc2hfcmVmKCl9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9saWN5VHJhaXRzOjplbGVtZW50
KG9sZF9zbG90cyArIGkpKTsKKyAgICAgICAgc2l6ZV90IG5ld19pID0gZmluZF9maXJzdF9ub25f
ZnVsbChoYXNoKTsKKyAgICAgICAgc2V0X2N0cmwobmV3X2ksIEgyKGhhc2gpKTsKKyAgICAgICAg
UG9saWN5VHJhaXRzOjp0cmFuc2ZlcigmYWxsb2NfcmVmKCksIHNsb3RzXyArIG5ld19pLCBvbGRf
c2xvdHMgKyBpKTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKG9sZF9jYXBhY2l0eSkgeworICAg
ICAgU2FuaXRpemVyVW5wb2lzb25NZW1vcnlSZWdpb24ob2xkX3Nsb3RzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNsb3RfdHlwZSkgKiBvbGRfY2FwYWNpdHkp
OworICAgICAgYXV0byBsYXlvdXQgPSBNYWtlTGF5b3V0KG9sZF9jYXBhY2l0eSk7CisgICAgICBE
ZWFsbG9jYXRlPExheW91dDo6QWxpZ25tZW50KCk+KCZhbGxvY19yZWYoKSwgb2xkX2N0cmwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC5BbGxvY1NpemUoKSk7
CisgICAgfQorICB9CisKKyAgdm9pZCBkcm9wX2RlbGV0ZXNfd2l0aG91dF9yZXNpemUoKSBBQlNM
X0FUVFJJQlVURV9OT0lOTElORSB7CisgICAgYXNzZXJ0KElzVmFsaWRDYXBhY2l0eShjYXBhY2l0
eV8pKTsKKyAgICAvLyBBbGdvcml0aG06CisgICAgLy8gLSBtYXJrIGFsbCBERUxFVEVEIHNsb3Rz
IGFzIEVNUFRZCisgICAgLy8gLSBtYXJrIGFsbCBGVUxMIHNsb3RzIGFzIERFTEVURUQKKyAgICAv
LyAtIGZvciBlYWNoIHNsb3QgbWFya2VkIGFzIERFTEVURUQKKyAgICAvLyAgICAgaGFzaCA9IEhh
c2goZWxlbWVudCkKKyAgICAvLyAgICAgdGFyZ2V0ID0gZmluZF9maXJzdF9ub25fZnVsbChoYXNo
KQorICAgIC8vICAgICBpZiB0YXJnZXQgaXMgaW4gdGhlIHNhbWUgZ3JvdXAKKyAgICAvLyAgICAg
ICBtYXJrIHNsb3QgYXMgRlVMTAorICAgIC8vICAgICBlbHNlIGlmIHRhcmdldCBpcyBFTVBUWQor
ICAgIC8vICAgICAgIHRyYW5zZmVyIGVsZW1lbnQgdG8gdGFyZ2V0CisgICAgLy8gICAgICAgbWFy
ayBzbG90IGFzIEVNUFRZCisgICAgLy8gICAgICAgbWFyayB0YXJnZXQgYXMgRlVMTAorICAgIC8v
ICAgICBlbHNlIGlmIHRhcmdldCBpcyBERUxFVEVECisgICAgLy8gICAgICAgc3dhcCBjdXJyZW50
IGVsZW1lbnQgd2l0aCB0YXJnZXQgZWxlbWVudAorICAgIC8vICAgICAgIG1hcmsgdGFyZ2V0IGFz
IEZVTEwKKyAgICAvLyAgICAgICByZXBlYXQgcHJvY2VkdXJlIGZvciBjdXJyZW50IHNsb3Qgd2l0
aCBtb3ZlZCBmcm9tIGVsZW1lbnQgKHRhcmdldCkKKyAgICBDb252ZXJ0RGVsZXRlZFRvRW1wdHlB
bmRGdWxsVG9EZWxldGVkKGN0cmxfLCBjYXBhY2l0eV8pOworICAgIHR5cGVuYW1lIHN0ZDo6YWxp
Z25lZF9zdG9yYWdlPHNpemVvZihzbG90X3R5cGUpLCBhbGlnbm9mKHNsb3RfdHlwZSk+Ojp0eXBl
CisgICAgICAgIHJhdzsKKyAgICBzbG90X3R5cGUqIHNsb3QgPSByZWludGVycHJldF9jYXN0PHNs
b3RfdHlwZSo+KCZyYXcpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNhcGFjaXR5Xzsg
KytpKSB7CisgICAgICBpZiAoIUlzRGVsZXRlZChjdHJsX1tpXSkpIGNvbnRpbnVlOworICAgICAg
c2l6ZV90IGhhc2ggPSBQb2xpY3lUcmFpdHM6OmFwcGx5KEhhc2hFbGVtZW50e2hhc2hfcmVmKCl9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGljeVRyYWl0czo6
ZWxlbWVudChzbG90c18gKyBpKSk7CisgICAgICBzaXplX3QgbmV3X2kgPSBmaW5kX2ZpcnN0X25v
bl9mdWxsKGhhc2gpOworCisgICAgICAvLyBWZXJpZnkgaWYgdGhlIG9sZCBhbmQgbmV3IGkgZmFs
bCB3aXRoaW4gdGhlIHNhbWUgZ3JvdXAgd3J0IHRoZSBoYXNoLgorICAgICAgLy8gSWYgdGhleSBk
bywgd2UgZG9uJ3QgbmVlZCB0byBtb3ZlIHRoZSBvYmplY3QgYXMgaXQgZmFsbHMgYWxyZWFkeSBp
biB0aGUKKyAgICAgIC8vIGJlc3QgcHJvYmUgd2UgY2FuLgorICAgICAgY29uc3QgYXV0byBwcm9i
ZV9pbmRleCA9IFsmXShzaXplX3QgcG9zKSB7CisgICAgICAgIHJldHVybiAoKHBvcyAtIHByb2Jl
KGhhc2gpLm9mZnNldCgpKSAmIGNhcGFjaXR5XykgLyBHcm91cDo6a1dpZHRoOworICAgICAgfTsK
KworICAgICAgLy8gRWxlbWVudCBkb2Vzbid0IG1vdmUuCisgICAgICBpZiAoQUJTTF9QUkVESUNU
X1RSVUUocHJvYmVfaW5kZXgobmV3X2kpID09IHByb2JlX2luZGV4KGkpKSkgeworICAgICAgICBz
ZXRfY3RybChpLCBIMihoYXNoKSk7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAg
aWYgKElzRW1wdHkoY3RybF9bbmV3X2ldKSkgeworICAgICAgICAvLyBUcmFuc2ZlciBlbGVtZW50
IHRvIHRoZSBlbXB0eSBzcG90LgorICAgICAgICAvLyBzZXRfY3RybCBwb2lzb25zL3VucG9pc29u
cyB0aGUgc2xvdHMgc28gd2UgaGF2ZSB0byBjYWxsIGl0IGF0IHRoZQorICAgICAgICAvLyByaWdo
dCB0aW1lLgorICAgICAgICBzZXRfY3RybChuZXdfaSwgSDIoaGFzaCkpOworICAgICAgICBQb2xp
Y3lUcmFpdHM6OnRyYW5zZmVyKCZhbGxvY19yZWYoKSwgc2xvdHNfICsgbmV3X2ksIHNsb3RzXyAr
IGkpOworICAgICAgICBzZXRfY3RybChpLCBrRW1wdHkpOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgYXNzZXJ0KElzRGVsZXRlZChjdHJsX1tuZXdfaV0pKTsKKyAgICAgICAgc2V0X2N0cmwobmV3
X2ksIEgyKGhhc2gpKTsKKyAgICAgICAgLy8gVW50aWwgd2UgYXJlIGRvbmUgcmVoYXNoaW5nLCBE
RUxFVEVEIG1hcmtzIHByZXZpb3VzbHkgRlVMTCBzbG90cy4KKyAgICAgICAgLy8gU3dhcCBpIGFu
ZCBuZXdfaSBlbGVtZW50cy4KKyAgICAgICAgUG9saWN5VHJhaXRzOjp0cmFuc2ZlcigmYWxsb2Nf
cmVmKCksIHNsb3QsIHNsb3RzXyArIGkpOworICAgICAgICBQb2xpY3lUcmFpdHM6OnRyYW5zZmVy
KCZhbGxvY19yZWYoKSwgc2xvdHNfICsgaSwgc2xvdHNfICsgbmV3X2kpOworICAgICAgICBQb2xp
Y3lUcmFpdHM6OnRyYW5zZmVyKCZhbGxvY19yZWYoKSwgc2xvdHNfICsgbmV3X2ksIHNsb3QpOwor
ICAgICAgICAtLWk7ICAvLyByZXBlYXQKKyAgICAgIH0KKyAgICB9CisgICAgZ3Jvd3RoX2xlZnQo
KSA9IHN0YXRpY19jYXN0PHNpemVfdD4oY2FwYWNpdHlfICoga01heExvYWRGYWN0b3IpIC0gc2l6
ZV87CisgIH0KKworICB2b2lkIHJlaGFzaF9hbmRfZ3Jvd19pZl9uZWNlc3NhcnkoKSB7CisgICAg
aWYgKGNhcGFjaXR5XyA9PSAwKSB7CisgICAgICByZXNpemUoR3JvdXA6OmtXaWR0aCAtIDEpOwor
ICAgIH0gZWxzZSBpZiAoc2l6ZSgpIDw9IGtNYXhMb2FkRmFjdG9yIC8gMiAqIGNhcGFjaXR5Xykg
eworICAgICAgLy8gU3F1YXNoIERFTEVURUQgd2l0aG91dCBncm93aW5nIGlmIHRoZXJlIGlzIGVu
b3VnaCBjYXBhY2l0eS4KKyAgICAgIGRyb3BfZGVsZXRlc193aXRob3V0X3Jlc2l6ZSgpOworICAg
IH0gZWxzZSB7CisgICAgICAvLyBPdGhlcndpc2UgZ3JvdyB0aGUgY29udGFpbmVyLgorICAgICAg
cmVzaXplKGNhcGFjaXR5XyAqIDIgKyAxKTsKKyAgICB9CisgIH0KKworICBib29sIGhhc19lbGVt
ZW50KGNvbnN0IHZhbHVlX3R5cGUmIGVsZW0pIGNvbnN0IHsKKyAgICBzaXplX3QgaGFzaCA9IFBv
bGljeVRyYWl0czo6YXBwbHkoSGFzaEVsZW1lbnR7aGFzaF9yZWYoKX0sIGVsZW0pOworICAgIGF1
dG8gc2VxID0gcHJvYmUoaGFzaCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIEdyb3VwIGd7
Y3RybF8gKyBzZXEub2Zmc2V0KCl9OworICAgICAgZm9yIChpbnQgaSA6IGcuTWF0Y2goSDIoaGFz
aCkpKSB7CisgICAgICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShQb2xpY3lUcmFpdHM6OmVsZW1l
bnQoc2xvdHNfICsgc2VxLm9mZnNldChpKSkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW0pKQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgICAgaWYgKEFC
U0xfUFJFRElDVF9UUlVFKGcuTWF0Y2hFbXB0eSgpKSkgcmV0dXJuIGZhbHNlOworICAgICAgc2Vx
Lm5leHQoKTsKKyAgICAgIGFzc2VydChzZXEuaW5kZXgoKSA8IGNhcGFjaXR5XyAmJiAiZnVsbCB0
YWJsZSEiKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgLy8gUHJvYmVzIHRo
ZSByYXdfaGFzaF9zZXQgd2l0aCB0aGUgcHJvYmUgc2VxdWVuY2UgZm9yIGhhc2ggYW5kIHJldHVy
bnMgdGhlCisgIC8vIHBvaW50ZXIgdG8gdGhlIGZpcnN0IGVtcHR5IG9yIGRlbGV0ZWQgc2xvdC4K
KyAgLy8gTk9URTogdGhpcyBmdW5jdGlvbiBtdXN0IHdvcmsgd2l0aCB0YWJsZXMgaGF2aW5nIGJv
dGgga0VtcHR5IGFuZCBrRGVsZXRlCisgIC8vIGluIG9uZSBncm91cC4gU3VjaCB0YWJsZXMgYXBw
ZWFycyBkdXJpbmcgZHJvcF9kZWxldGVzX3dpdGhvdXRfcmVzaXplLgorICAvLworICAvLyBUaGlz
IGZ1bmN0aW9uIGlzIHZlcnkgdXNlZnVsIHdoZW4gaW5zZXJ0aW9ucyBoYXBwZW4gYW5kOgorICAv
LyAtIHRoZSBpbnB1dCBpcyBhbHJlYWR5IGEgc2V0CisgIC8vIC0gdGhlcmUgYXJlIGVub3VnaCBz
bG90cworICAvLyAtIHRoZSBlbGVtZW50IHdpdGggdGhlIGhhc2ggaXMgbm90IGluIHRoZSB0YWJs
ZQorICBzaXplX3QgZmluZF9maXJzdF9ub25fZnVsbChzaXplX3QgaGFzaCkgeworICAgIGF1dG8g
c2VxID0gcHJvYmUoaGFzaCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIEdyb3VwIGd7Y3Ry
bF8gKyBzZXEub2Zmc2V0KCl9OworICAgICAgYXV0byBtYXNrID0gZy5NYXRjaEVtcHR5T3JEZWxl
dGVkKCk7CisgICAgICBpZiAobWFzaykgeworI2lmICFkZWZpbmVkKE5ERUJVRykKKyAgICAgICAg
Ly8gV2Ugd2FudCB0byBmb3JjZSBzbWFsbCB0YWJsZXMgdG8gaGF2ZSByYW5kb20gZW50cmllcyB0
b28sIHNvCisgICAgICAgIC8vIGluIGRlYnVnIGJ1aWxkIHdlIHdpbGwgcmFuZG9tbHkgaW5zZXJ0
IGluIGVpdGhlciB0aGUgZnJvbnQgb3IgYmFjayBvZgorICAgICAgICAvLyB0aGUgZ3JvdXAuCisg
ICAgICAgIC8vIFRPRE8oa2ZtLHNiZW56YSk6IHJldmlzaXQgYWZ0ZXIgd2UgZG8gdW5jb25kaXRp
b25hbCBtaXhpbmcKKyAgICAgICAgaWYgKFNob3VsZEluc2VydEJhY2t3YXJkcyhoYXNoLCBjdHJs
XykpCisgICAgICAgICAgcmV0dXJuIHNlcS5vZmZzZXQobWFzay5IaWdoZXN0Qml0U2V0KCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgcmV0dXJuIHNlcS5vZmZzZXQobWFzay5Mb3dlc3RCaXRT
ZXQoKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gc2VxLm9mZnNldChtYXNrLkxvd2VzdEJpdFNl
dCgpKTsKKyNlbmRpZgorICAgICAgfQorICAgICAgYXNzZXJ0KHNlcS5pbmRleCgpIDwgY2FwYWNp
dHlfICYmICJmdWxsIHRhYmxlISIpOworICAgICAgc2VxLm5leHQoKTsKKyAgICB9CisgIH0KKwor
ICAvLyBUT0RPKGFsa2lzKTogT3B0aW1pemUgdGhpcyBhc3N1bWluZyAqdGhpcyBhbmQgdGhhdCBk
b24ndCBvdmVybGFwLgorICByYXdfaGFzaF9zZXQmIG1vdmVfYXNzaWduKHJhd19oYXNoX3NldCYm
IHRoYXQsIHN0ZDo6dHJ1ZV90eXBlKSB7CisgICAgcmF3X2hhc2hfc2V0IHRtcChzdGQ6Om1vdmUo
dGhhdCkpOworICAgIHN3YXAodG1wKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKyAgcmF3X2hh
c2hfc2V0JiBtb3ZlX2Fzc2lnbihyYXdfaGFzaF9zZXQmJiB0aGF0LCBzdGQ6OmZhbHNlX3R5cGUp
IHsKKyAgICByYXdfaGFzaF9zZXQgdG1wKHN0ZDo6bW92ZSh0aGF0KSwgYWxsb2NfcmVmKCkpOwor
ICAgIHN3YXAodG1wKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworIHByb3RlY3RlZDoKKyAg
dGVtcGxhdGUgPGNsYXNzIEs+CisgIHN0ZDo6cGFpcjxzaXplX3QsIGJvb2w+IGZpbmRfb3JfcHJl
cGFyZV9pbnNlcnQoY29uc3QgSyYga2V5KSB7CisgICAgYXV0byBoYXNoID0gaGFzaF9yZWYoKShr
ZXkpOworICAgIGF1dG8gc2VxID0gcHJvYmUoaGFzaCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgIEdyb3VwIGd7Y3RybF8gKyBzZXEub2Zmc2V0KCl9OworICAgICAgZm9yIChpbnQgaSA6IGcu
TWF0Y2goSDIoaGFzaCkpKSB7CisgICAgICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShQb2xpY3lU
cmFpdHM6OmFwcGx5KAorICAgICAgICAgICAgICAgIEVxdWFsRWxlbWVudDxLPntrZXksIGVxX3Jl
ZigpfSwKKyAgICAgICAgICAgICAgICBQb2xpY3lUcmFpdHM6OmVsZW1lbnQoc2xvdHNfICsgc2Vx
Lm9mZnNldChpKSkpKSkKKyAgICAgICAgICByZXR1cm4ge3NlcS5vZmZzZXQoaSksIGZhbHNlfTsK
KyAgICAgIH0KKyAgICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShnLk1hdGNoRW1wdHkoKSkpIGJy
ZWFrOworICAgICAgc2VxLm5leHQoKTsKKyAgICB9CisgICAgcmV0dXJuIHtwcmVwYXJlX2luc2Vy
dChoYXNoKSwgdHJ1ZX07CisgIH0KKworICBzaXplX3QgcHJlcGFyZV9pbnNlcnQoc2l6ZV90IGhh
c2gpIEFCU0xfQVRUUklCVVRFX05PSU5MSU5FIHsKKyAgICBzaXplX3QgdGFyZ2V0ID0gZmluZF9m
aXJzdF9ub25fZnVsbChoYXNoKTsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGdyb3d0aF9s
ZWZ0KCkgPT0gMCAmJiAhSXNEZWxldGVkKGN0cmxfW3RhcmdldF0pKSkgeworICAgICAgcmVoYXNo
X2FuZF9ncm93X2lmX25lY2Vzc2FyeSgpOworICAgICAgdGFyZ2V0ID0gZmluZF9maXJzdF9ub25f
ZnVsbChoYXNoKTsKKyAgICB9CisgICAgKytzaXplXzsKKyAgICBncm93dGhfbGVmdCgpIC09IElz
RW1wdHkoY3RybF9bdGFyZ2V0XSk7CisgICAgc2V0X2N0cmwodGFyZ2V0LCBIMihoYXNoKSk7Cisg
ICAgcmV0dXJuIHRhcmdldDsKKyAgfQorCisgIC8vIENvbnN0cnVjdHMgdGhlIHZhbHVlIGluIHRo
ZSBzcGFjZSBwb2ludGVkIGJ5IHRoZSBpdGVyYXRvci4gVGhpcyBvbmx5IHdvcmtzCisgIC8vIGFm
dGVyIGFuIHVuc3VjY2Vzc2Z1bCBmaW5kX29yX3ByZXBhcmVfaW5zZXJ0KCkgYW5kIGJlZm9yZSBh
bnkgb3RoZXIKKyAgLy8gbW9kaWZpY2F0aW9ucyBoYXBwZW4gaW4gdGhlIHJhd19oYXNoX3NldC4K
KyAgLy8KKyAgLy8gUFJFQ09ORElUSU9OOiBpIGlzIGFuIGluZGV4IHJldHVybmVkIGZyb20gZmlu
ZF9vcl9wcmVwYXJlX2luc2VydChrKSwgd2hlcmUKKyAgLy8gayBpcyB0aGUga2V5IGRlY29tcG9z
ZWQgZnJvbSBgZm9yd2FyZDxBcmdzPihhcmdzKS4uLmAsIGFuZCB0aGUgYm9vbAorICAvLyByZXR1
cm5lZCBieSBmaW5kX29yX3ByZXBhcmVfaW5zZXJ0KGspIHdhcyB0cnVlLgorICAvLyBQT1NUQ09O
RElUSU9OOiAqbS5pdGVyYXRvcl9hdChpKSA9PSB2YWx1ZV90eXBlKGZvcndhcmQ8QXJncz4oYXJn
cykuLi4pLgorICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgdm9pZCBlbXBsYWNlX2F0KHNp
emVfdCBpLCBBcmdzJiYuLi4gYXJncykgeworICAgIFBvbGljeVRyYWl0czo6Y29uc3RydWN0KCZh
bGxvY19yZWYoKSwgc2xvdHNfICsgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworCisgICAgYXNzZXJ0KFBvbGljeVRyYWl0czo6YXBw
bHkoRmluZEVsZW1lbnR7KnRoaXN9LCAqaXRlcmF0b3JfYXQoaSkpID09CisgICAgICAgICAgICAg
ICBpdGVyYXRvcl9hdChpKSAmJgorICAgICAgICAgICAiY29uc3RydWN0ZWQgdmFsdWUgZG9lcyBu
b3QgbWF0Y2ggdGhlIGxvb2t1cCBrZXkiKTsKKyAgfQorCisgIGl0ZXJhdG9yIGl0ZXJhdG9yX2F0
KHNpemVfdCBpKSB7IHJldHVybiB7Y3RybF8gKyBpLCBzbG90c18gKyBpfTsgfQorICBjb25zdF9p
dGVyYXRvciBpdGVyYXRvcl9hdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4ge2N0cmxfICsgaSwg
c2xvdHNfICsgaX07IH0KKworIHByaXZhdGU6CisgIGZyaWVuZCBzdHJ1Y3QgUmF3SGFzaFNldFRl
c3RPbmx5QWNjZXNzOworCisgIHByb2JlX3NlcTxHcm91cDo6a1dpZHRoPiBwcm9iZShzaXplX3Qg
aGFzaCkgY29uc3QgeworICAgIHJldHVybiBwcm9iZV9zZXE8R3JvdXA6OmtXaWR0aD4oSDEoaGFz
aCwgY3RybF8pLCBjYXBhY2l0eV8pOworICB9CisKKyAgLy8gUmVzZXQgYWxsIGN0cmwgYnl0ZXMg
YmFjayB0byBrRW1wdHksIGV4Y2VwdCB0aGUgc2VudGluZWwuCisgIHZvaWQgcmVzZXRfY3RybCgp
IHsKKyAgICBzdGQ6Om1lbXNldChjdHJsXywga0VtcHR5LCBjYXBhY2l0eV8gKyBHcm91cDo6a1dp
ZHRoKTsKKyAgICBjdHJsX1tjYXBhY2l0eV9dID0ga1NlbnRpbmVsOworICAgIFNhbml0aXplclBv
aXNvbk1lbW9yeVJlZ2lvbihzbG90c18sIHNpemVvZihzbG90X3R5cGUpICogY2FwYWNpdHlfKTsK
KyAgfQorCisgIC8vIFNldHMgdGhlIGNvbnRyb2wgYnl0ZSwgYW5kIGlmIGBpIDwgR3JvdXA6OmtX
aWR0aGAsIHNldCB0aGUgY2xvbmVkIGJ5dGUgYXQKKyAgLy8gdGhlIGVuZCB0b28uCisgIHZvaWQg
c2V0X2N0cmwoc2l6ZV90IGksIGN0cmxfdCBoKSB7CisgICAgYXNzZXJ0KGkgPCBjYXBhY2l0eV8p
OworCisgICAgaWYgKElzRnVsbChoKSkgeworICAgICAgU2FuaXRpemVyVW5wb2lzb25PYmplY3Qo
c2xvdHNfICsgaSk7CisgICAgfSBlbHNlIHsKKyAgICAgIFNhbml0aXplclBvaXNvbk9iamVjdChz
bG90c18gKyBpKTsKKyAgICB9CisKKyAgICBjdHJsX1tpXSA9IGg7CisgICAgY3RybF9bKChpIC0g
R3JvdXA6OmtXaWR0aCkgJiBjYXBhY2l0eV8pICsgR3JvdXA6OmtXaWR0aF0gPSBoOworICB9CisK
KyAgc2l6ZV90JiBncm93dGhfbGVmdCgpIHsgcmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8
MD4oKTsgfQorCisgIGhhc2hlciYgaGFzaF9yZWYoKSB7IHJldHVybiBzZXR0aW5nc18udGVtcGxh
dGUgZ2V0PDE+KCk7IH0KKyAgY29uc3QgaGFzaGVyJiBoYXNoX3JlZigpIGNvbnN0IHsgcmV0dXJu
IHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8MT4oKTsgfQorICBrZXlfZXF1YWwmIGVxX3JlZigpIHsg
cmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8Mj4oKTsgfQorICBjb25zdCBrZXlfZXF1YWwm
IGVxX3JlZigpIGNvbnN0IHsgcmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8Mj4oKTsgfQor
ICBhbGxvY2F0b3JfdHlwZSYgYWxsb2NfcmVmKCkgeyByZXR1cm4gc2V0dGluZ3NfLnRlbXBsYXRl
IGdldDwzPigpOyB9CisgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvY19yZWYoKSBjb25zdCB7
CisgICAgcmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8Mz4oKTsKKyAgfQorCisgIC8vIE9u
IGF2ZXJhZ2UgZWFjaCBncm91cCBoYXMgMiBlbXB0eSBzbG90IChmb3IgdGhlIHZlY3Rvcml6ZWQg
Y2FzZSkuCisgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBrTWF4TG9hZEZhY3Rvck51bWVyYXRv
ciA9IDE0OworICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qga01heExvYWRGYWN0b3JEZW5vbWlu
YXRvciA9IDE2OworICBzdGF0aWMgY29uc3RleHByIGZsb2F0IGtNYXhMb2FkRmFjdG9yID0KKyAg
ICAgIDEuMCAqIGtNYXhMb2FkRmFjdG9yTnVtZXJhdG9yIC8ga01heExvYWRGYWN0b3JEZW5vbWlu
YXRvcjsKKworICAvLyBUT0RPKGFsa2lzKTogSW52ZXN0aWdhdGUgcmVtb3Zpbmcgc29tZSBvZiB0
aGVzZSBmaWVsZHM6CisgIC8vIC0gY3RybC9zbG90cyBjYW4gYmUgZGVyaXZlZCBmcm9tIGVhY2gg
b3RoZXIKKyAgLy8gLSBzaXplIGNhbiBiZSBtb3ZlZCBpbnRvIHRoZSBzbG90IGFycmF5CisgIGN0
cmxfdCogY3RybF8gPSBFbXB0eUdyb3VwKCk7ICAgIC8vIFsoY2FwYWNpdHkgKyAxKSAqIGN0cmxf
dF0KKyAgc2xvdF90eXBlKiBzbG90c18gPSBudWxscHRyOyAgICAgLy8gW2NhcGFjaXR5ICogc2xv
dF90eXBlXQorICBzaXplX3Qgc2l6ZV8gPSAwOyAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2Yg
ZnVsbCBzbG90cworICBzaXplX3QgY2FwYWNpdHlfID0gMDsgICAgICAgICAgICAvLyB0b3RhbCBu
dW1iZXIgb2Ygc2xvdHMKKyAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpDb21wcmVzc2VkVHVw
bGU8c2l6ZV90IC8qIGdyb3d0aF9sZWZ0ICovLCBoYXNoZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9lcXVhbCwgYWxsb2NhdG9yX3R5cGU+CisgICAg
ICBzZXR0aW5nc197MCwgaGFzaGVye30sIGtleV9lcXVhbHt9LCBhbGxvY2F0b3JfdHlwZXt9fTsK
K307CisKK25hbWVzcGFjZSBoYXNodGFibGVfZGVidWdfaW50ZXJuYWwgewordGVtcGxhdGUgPHR5
cGVuYW1lIFNldD4KK3N0cnVjdCBIYXNodGFibGVEZWJ1Z0FjY2VzczxTZXQsIGFic2w6OnZvaWRf
dDx0eXBlbmFtZSBTZXQ6OnJhd19oYXNoX3NldD4+IHsKKyAgdXNpbmcgVHJhaXRzID0gdHlwZW5h
bWUgU2V0OjpQb2xpY3lUcmFpdHM7CisgIHVzaW5nIFNsb3QgPSB0eXBlbmFtZSBUcmFpdHM6OnNs
b3RfdHlwZTsKKworICBzdGF0aWMgc2l6ZV90IEdldE51bVByb2Jlcyhjb25zdCBTZXQmIHNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZW5hbWUgU2V0OjprZXlfdHlw
ZSYga2V5KSB7CisgICAgc2l6ZV90IG51bV9wcm9iZXMgPSAwOworICAgIHNpemVfdCBoYXNoID0g
c2V0Lmhhc2hfcmVmKCkoa2V5KTsKKyAgICBhdXRvIHNlcSA9IHNldC5wcm9iZShoYXNoKTsKKyAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgY29udGFpbmVyX2ludGVybmFsOjpHcm91cCBne3NldC5j
dHJsXyArIHNlcS5vZmZzZXQoKX07CisgICAgICBmb3IgKGludCBpIDogZy5NYXRjaChjb250YWlu
ZXJfaW50ZXJuYWw6OkgyKGhhc2gpKSkgeworICAgICAgICBpZiAoVHJhaXRzOjphcHBseSgKKyAg
ICAgICAgICAgICAgICB0eXBlbmFtZSBTZXQ6OnRlbXBsYXRlIEVxdWFsRWxlbWVudDx0eXBlbmFt
ZSBTZXQ6OmtleV90eXBlPnsKKyAgICAgICAgICAgICAgICAgICAga2V5LCBzZXQuZXFfcmVmKCl9
LAorICAgICAgICAgICAgICAgIFRyYWl0czo6ZWxlbWVudChzZXQuc2xvdHNfICsgc2VxLm9mZnNl
dChpKSkpKQorICAgICAgICAgIHJldHVybiBudW1fcHJvYmVzOworICAgICAgICArK251bV9wcm9i
ZXM7CisgICAgICB9CisgICAgICBpZiAoZy5NYXRjaEVtcHR5KCkpIHJldHVybiBudW1fcHJvYmVz
OworICAgICAgc2VxLm5leHQoKTsKKyAgICAgICsrbnVtX3Byb2JlczsKKyAgICB9CisgIH0KKwor
ICBzdGF0aWMgc2l6ZV90IEFsbG9jYXRlZEJ5dGVTaXplKGNvbnN0IFNldCYgYykgeworICAgIHNp
emVfdCBjYXBhY2l0eSA9IGMuY2FwYWNpdHlfOworICAgIGlmIChjYXBhY2l0eSA9PSAwKSByZXR1
cm4gMDsKKyAgICBhdXRvIGxheW91dCA9IFNldDo6TWFrZUxheW91dChjYXBhY2l0eSk7CisgICAg
c2l6ZV90IG0gPSBsYXlvdXQuQWxsb2NTaXplKCk7CisKKyAgICBzaXplX3QgcGVyX3Nsb3QgPSBU
cmFpdHM6OnNwYWNlX3VzZWQoc3RhdGljX2Nhc3Q8Y29uc3QgU2xvdCo+KG51bGxwdHIpKTsKKyAg
ICBpZiAocGVyX3Nsb3QgIT0gfnNpemVfdHt9KSB7CisgICAgICBtICs9IHBlcl9zbG90ICogYy5z
aXplKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNhcGFj
aXR5OyArK2kpIHsKKyAgICAgICAgaWYgKGNvbnRhaW5lcl9pbnRlcm5hbDo6SXNGdWxsKGMuY3Ry
bF9baV0pKSB7CisgICAgICAgICAgbSArPSBUcmFpdHM6OnNwYWNlX3VzZWQoYy5zbG90c18gKyBp
KTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbTsKKyAgfQorCisgIHN0
YXRpYyBzaXplX3QgTG93ZXJCb3VuZEFsbG9jYXRlZEJ5dGVTaXplKHNpemVfdCBzaXplKSB7Cisg
ICAgc2l6ZV90IGNhcGFjaXR5ID0gY29udGFpbmVyX2ludGVybmFsOjpOb3JtYWxpemVDYXBhY2l0
eSgKKyAgICAgICAgc3RkOjpjZWlsKHNpemUgLyBTZXQ6OmtNYXhMb2FkRmFjdG9yKSk7CisgICAg
aWYgKGNhcGFjaXR5ID09IDApIHJldHVybiAwOworICAgIGF1dG8gbGF5b3V0ID0gU2V0OjpNYWtl
TGF5b3V0KGNhcGFjaXR5KTsKKyAgICBzaXplX3QgbSA9IGxheW91dC5BbGxvY1NpemUoKTsKKyAg
ICBzaXplX3QgcGVyX3Nsb3QgPSBUcmFpdHM6OnNwYWNlX3VzZWQoc3RhdGljX2Nhc3Q8Y29uc3Qg
U2xvdCo+KG51bGxwdHIpKTsKKyAgICBpZiAocGVyX3Nsb3QgIT0gfnNpemVfdHt9KSB7CisgICAg
ICBtICs9IHBlcl9zbG90ICogc2l6ZTsKKyAgICB9CisgICAgcmV0dXJuIG07CisgIH0KK307CisK
K30gIC8vIG5hbWVzcGFjZSBoYXNodGFibGVfZGVidWdfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFj
ZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8g
QUJTTF9DT05UQUlORVJfSU5URVJOQUxfUkFXX0hBU0hfU0VUX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldF9hbGxvY2F0b3JfdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44OTFmYTQ1MGZlMDhjMjIzZTIwMmI1OGZjMzhhMDJiOGJmNzc4MjJiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldF9hbGxvY2F0
b3JfdGVzdC5jYwpAQCAtMCwwICsxLDQyOCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzY29wZWRfYWxsb2Nh
dG9yPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC90cmFja2VkLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJf
aW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworZW51bSBBbGxvY1NwZWMgeworICBrUHJvcGFnYXRl
T25Db3B5ID0gMSwKKyAga1Byb3BhZ2F0ZU9uTW92ZSA9IDIsCisgIGtQcm9wYWdhdGVPblN3YXAg
PSA0LAorfTsKKworc3RydWN0IEFsbG9jU3RhdGUgeworICBzaXplX3QgbnVtX2FsbG9jcyA9IDA7
CisgIHN0ZDo6c2V0PHZvaWQqPiBvd25lZDsKK307CisKK3RlbXBsYXRlIDxjbGFzcyBULAorICAg
ICAgICAgIGludCBTcGVjID0ga1Byb3BhZ2F0ZU9uQ29weSB8IGtQcm9wYWdhdGVPbk1vdmUgfCBr
UHJvcGFnYXRlT25Td2FwPgorY2xhc3MgQ2hlY2tlZEFsbG9jIHsKKyBwdWJsaWM6CisgIHRlbXBs
YXRlIDxjbGFzcywgaW50PgorICBmcmllbmQgY2xhc3MgQ2hlY2tlZEFsbG9jOworCisgIHVzaW5n
IHZhbHVlX3R5cGUgPSBUOworCisgIENoZWNrZWRBbGxvYygpIHt9CisgIGV4cGxpY2l0IENoZWNr
ZWRBbGxvYyhzaXplX3QgaWQpIDogaWRfKGlkKSB7fQorICBDaGVja2VkQWxsb2MoY29uc3QgQ2hl
Y2tlZEFsbG9jJikgPSBkZWZhdWx0OworICBDaGVja2VkQWxsb2MmIG9wZXJhdG9yPShjb25zdCBD
aGVja2VkQWxsb2MmKSA9IGRlZmF1bHQ7CisKKyAgdGVtcGxhdGUgPGNsYXNzIFU+CisgIENoZWNr
ZWRBbGxvYyhjb25zdCBDaGVja2VkQWxsb2M8VSwgU3BlYz4mIHRoYXQpCisgICAgICA6IGlkXyh0
aGF0LmlkXyksIHN0YXRlXyh0aGF0LnN0YXRlXykge30KKworICB0ZW1wbGF0ZSA8Y2xhc3MgVT4K
KyAgc3RydWN0IHJlYmluZCB7CisgICAgdXNpbmcgb3RoZXIgPSBDaGVja2VkQWxsb2M8VSwgU3Bl
Yz47CisgIH07CisKKyAgdXNpbmcgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1l
bnQgPQorICAgICAgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAoU3BlYyAmIGtQcm9wYWdh
dGVPbkNvcHkpICE9IDA+OworCisgIHVzaW5nIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9h
c3NpZ25tZW50ID0KKyAgICAgIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKFNwZWMgJiBr
UHJvcGFnYXRlT25Nb3ZlKSAhPSAwPjsKKworICB1c2luZyBwcm9wYWdhdGVfb25fY29udGFpbmVy
X3N3YXAgPQorICAgICAgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAoU3BlYyAmIGtQcm9w
YWdhdGVPblN3YXApICE9IDA+OworCisgIENoZWNrZWRBbGxvYyBzZWxlY3Rfb25fY29udGFpbmVy
X2NvcHlfY29uc3RydWN0aW9uKCkgY29uc3QgeworICAgIGlmIChTcGVjICYga1Byb3BhZ2F0ZU9u
Q29weSkgcmV0dXJuICp0aGlzOworICAgIHJldHVybiB7fTsKKyAgfQorCisgIFQqIGFsbG9jYXRl
KHNpemVfdCBuKSB7CisgICAgVCogcHRyID0gc3RkOjphbGxvY2F0b3I8VD4oKS5hbGxvY2F0ZShu
KTsKKyAgICB0cmFja19hbGxvYyhwdHIpOworICAgIHJldHVybiBwdHI7CisgIH0KKyAgdm9pZCBk
ZWFsbG9jYXRlKFQqIHB0ciwgc2l6ZV90IG4pIHsKKyAgICBtZW1zZXQocHRyLCAwLCBuICogc2l6
ZW9mKFQpKTsgIC8vIFRoZSBmcmVlZCBtZW1vcnkgbXVzdCBiZSB1bnBvaXNvbmVkLgorICAgIHRy
YWNrX2RlYWxsb2MocHRyKTsKKyAgICByZXR1cm4gc3RkOjphbGxvY2F0b3I8VD4oKS5kZWFsbG9j
YXRlKHB0ciwgbik7CisgIH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENoZWNr
ZWRBbGxvYyYgYSwgY29uc3QgQ2hlY2tlZEFsbG9jJiBiKSB7CisgICAgcmV0dXJuIGEuaWRfID09
IGIuaWRfOworICB9CisgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2hlY2tlZEFsbG9j
JiBhLCBjb25zdCBDaGVja2VkQWxsb2MmIGIpIHsKKyAgICByZXR1cm4gIShhID09IGIpOworICB9
CisKKyAgc2l6ZV90IG51bV9hbGxvY3MoKSBjb25zdCB7IHJldHVybiBzdGF0ZV8tPm51bV9hbGxv
Y3M7IH0KKworICB2b2lkIHN3YXAoQ2hlY2tlZEFsbG9jJiB0aGF0KSB7CisgICAgdXNpbmcgc3Rk
Ojpzd2FwOworICAgIHN3YXAoaWRfLCB0aGF0LmlkXyk7CisgICAgc3dhcChzdGF0ZV8sIHRoYXQu
c3RhdGVfKTsKKyAgfQorCisgIGZyaWVuZCB2b2lkIHN3YXAoQ2hlY2tlZEFsbG9jJiBhLCBDaGVj
a2VkQWxsb2MmIGIpIHsgYS5zd2FwKGIpOyB9CisKKyAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3I8PChzdGQ6Om9zdHJlYW0mIG8sIGNvbnN0IENoZWNrZWRBbGxvYyYgYSkgeworICAgIHJl
dHVybiBvIDw8ICJhbGxvYygiIDw8IGEuaWRfIDw8ICIpIjsKKyAgfQorCisgcHJpdmF0ZToKKyAg
dm9pZCB0cmFja19hbGxvYyh2b2lkKiBwdHIpIHsKKyAgICBBbGxvY1N0YXRlKiBzdGF0ZSA9IHN0
YXRlXy5nZXQoKTsKKyAgICArK3N0YXRlLT5udW1fYWxsb2NzOworICAgIGlmICghc3RhdGUtPm93
bmVkLmluc2VydChwdHIpLnNlY29uZCkKKyAgICAgIEFERF9GQUlMVVJFKCkgPDwgKnRoaXMgPDwg
IiBnb3QgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5OiAiIDw8IHB0cjsKKyAgfQorICB2b2lk
IHRyYWNrX2RlYWxsb2Modm9pZCogcHRyKSB7CisgICAgaWYgKHN0YXRlXy0+b3duZWQuZXJhc2Uo
cHRyKSAhPSAxKQorICAgICAgQUREX0ZBSUxVUkUoKSA8PCAqdGhpcworICAgICAgICAgICAgICAg
ICAgICA8PCAiIGRlbGV0aW5nIG1lbW9yeSBvd25lZCBieSBhbm90aGVyIGFsbG9jYXRvcjogIiA8
PCBwdHI7CisgIH0KKworICBzaXplX3QgaWRfID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKTsKKworICBzdGQ6OnNoYXJlZF9wdHI8QWxsb2NTdGF0ZT4gc3RhdGVfID0gc3RkOjpt
YWtlX3NoYXJlZDxBbGxvY1N0YXRlPigpOworfTsKKworc3RydWN0IElkZW50aXR5IHsKKyAgaW50
MzJfdCBvcGVyYXRvcigpKGludDMyX3QgdikgY29uc3QgeyByZXR1cm4gdjsgfQorfTsKKworc3Ry
dWN0IFBvbGljeSB7CisgIHVzaW5nIHNsb3RfdHlwZSA9IFRyYWNrZWQ8aW50MzJfdD47CisgIHVz
aW5nIGluaXRfdHlwZSA9IFRyYWNrZWQ8aW50MzJfdD47CisgIHVzaW5nIGtleV90eXBlID0gaW50
MzJfdDsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgYWxsb2NhdG9yX3R5cGUsIGNsYXNzLi4uIEFyZ3M+
CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChhbGxvY2F0b3JfdHlwZSogYWxsb2MsIHNsb3RfdHlw
ZSogc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAg
c3RkOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcl90eXBlPjo6Y29uc3RydWN0KAorICAgICAg
ICAqYWxsb2MsIHNsb3QsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICB0
ZW1wbGF0ZSA8Y2xhc3MgYWxsb2NhdG9yX3R5cGU+CisgIHN0YXRpYyB2b2lkIGRlc3Ryb3koYWxs
b2NhdG9yX3R5cGUqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QpIHsKKyAgICBzdGQ6OmFsbG9jYXRv
cl90cmFpdHM8YWxsb2NhdG9yX3R5cGU+OjpkZXN0cm95KCphbGxvYywgc2xvdCk7CisgIH0KKwor
ICB0ZW1wbGF0ZSA8Y2xhc3MgYWxsb2NhdG9yX3R5cGU+CisgIHN0YXRpYyB2b2lkIHRyYW5zZmVy
KGFsbG9jYXRvcl90eXBlKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgc2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAgIGNvbnN0cnVjdChhbGxvYywg
bmV3X3Nsb3QsIHN0ZDo6bW92ZSgqb2xkX3Nsb3QpKTsKKyAgICBkZXN0cm95KGFsbG9jLCBvbGRf
c2xvdCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgRj4KKyAgc3RhdGljIGF1dG8gYXBwbHko
RiYmIGYsIGludDMyX3QgdikgLT4gZGVjbHR5cGUoc3RkOjpmb3J3YXJkPEY+KGYpKHYsIHYpKSB7
CisgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihmKSh2LCB2KTsKKyAgfQorCisgIHRlbXBsYXRl
IDxjbGFzcyBGPgorICBzdGF0aWMgYXV0byBhcHBseShGJiYgZiwgY29uc3Qgc2xvdF90eXBlJiB2
KQorICAgICAgLT4gZGVjbHR5cGUoc3RkOjpmb3J3YXJkPEY+KGYpKHYudmFsKCksIHYpKSB7Cisg
ICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihmKSh2LnZhbCgpLCB2KTsKKyAgfQorCisgIHRlbXBs
YXRlIDxjbGFzcyBGPgorICBzdGF0aWMgYXV0byBhcHBseShGJiYgZiwgc2xvdF90eXBlJiYgdikK
KyAgICAgIC0+IGRlY2x0eXBlKHN0ZDo6Zm9yd2FyZDxGPihmKSh2LnZhbCgpLCBzdGQ6Om1vdmUo
dikpKSB7CisgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihmKSh2LnZhbCgpLCBzdGQ6Om1vdmUo
dikpOworICB9CisKKyAgc3RhdGljIHNsb3RfdHlwZSYgZWxlbWVudChzbG90X3R5cGUqIHNsb3Qp
IHsgcmV0dXJuICpzbG90OyB9Cit9OworCit0ZW1wbGF0ZSA8aW50IFNwZWM+CitzdHJ1Y3QgUHJv
cGFnYXRlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICB1c2luZyBBbGxvYyA9IENo
ZWNrZWRBbGxvYzxUcmFja2VkPGludDMyX3Q+LCBTcGVjPjsKKworICB1c2luZyBUYWJsZSA9IHJh
d19oYXNoX3NldDxQb2xpY3ksIElkZW50aXR5LCBzdGQ6OmVxdWFsX3RvPGludDMyX3Q+LCBBbGxv
Yz47CisKKyAgUHJvcGFnYXRlVGVzdCgpIHsKKyAgICBFWFBFQ1RfRVEoYTEsIHQxLmdldF9hbGxv
Y2F0b3IoKSk7CisgICAgRVhQRUNUX05FKGEyLCB0MS5nZXRfYWxsb2NhdG9yKCkpOworICB9CisK
KyAgQWxsb2MgYTEgPSBBbGxvYygxKTsKKyAgVGFibGUgdDEgPSBUYWJsZSgwLCBhMSk7CisgIEFs
bG9jIGEyID0gQWxsb2MoMik7Cit9OworCit1c2luZyBQcm9wYWdhdGVPbkFsbCA9CisgICAgUHJv
cGFnYXRlVGVzdDxrUHJvcGFnYXRlT25Db3B5IHwga1Byb3BhZ2F0ZU9uTW92ZSB8IGtQcm9wYWdh
dGVPblN3YXA+OwordXNpbmcgTm9Qcm9wYWdhdGVPbkNvcHkgPSBQcm9wYWdhdGVUZXN0PGtQcm9w
YWdhdGVPbk1vdmUgfCBrUHJvcGFnYXRlT25Td2FwPjsKK3VzaW5nIE5vUHJvcGFnYXRlT25Nb3Zl
ID0gUHJvcGFnYXRlVGVzdDxrUHJvcGFnYXRlT25Db3B5IHwga1Byb3BhZ2F0ZU9uU3dhcD47CisK
K1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgRW1wdHkpIHsgRVhQRUNUX0VRKDAsIGExLm51bV9hbGxv
Y3MoKSk7IH0KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBJbnNlcnRBbGxvY2F0ZXMpIHsKKyAg
YXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxv
Y3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMCwg
aXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgSW5zZXJ0RGVj
b21wb3NlcykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBFWFBFQ1RfRVEo
MSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7Cisg
IEVYUEVDVF9FUSgwLCBpdC0+bnVtX2NvcGllcygpKTsKKworICBFWFBFQ1RfRkFMU0UodDEuaW5z
ZXJ0KDApLnNlY29uZCk7CisgIEVYUEVDVF9FUSgxLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBF
Q1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVz
KCkpOworfQorCitURVNUX0YoUHJvcGFnYXRlT25BbGwsIFJlaGFzaE1vdmVzKSB7CisgIGF1dG8g
aXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkp
OworICB0MS5yZWhhc2goMiAqIHQxLmNhcGFjaXR5KCkpOworICBFWFBFQ1RfRVEoMiwgYTEubnVt
X2FsbG9jcygpKTsKKyAgaXQgPSB0MS5maW5kKDApOworICBFWFBFQ1RfRVEoMSwgaXQtPm51bV9t
b3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0Yo
UHJvcGFnYXRlT25BbGwsIENvcHlDb25zdHJ1Y3RvcikgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0
KDApLmZpcnN0OworICBUYWJsZSB1KHQxKTsKKyAgRVhQRUNUX0VRKDIsIGExLm51bV9hbGxvY3Mo
KSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMSwgaXQt
Pm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihOb1Byb3BhZ2F0ZU9uQ29weSwgQ29weUNvbnN0
cnVjdG9yKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUodDEp
OworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDEsIHUuZ2V0
X2FsbG9jYXRvcigpLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVz
KCkpOworICBFWFBFQ1RfRVEoMSwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9w
YWdhdGVPbkFsbCwgQ29weUNvbnN0cnVjdG9yV2l0aFNhbWVBbGxvYykgeworICBhdXRvIGl0ID0g
dDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KHQxLCBhMSk7CisgIEVYUEVDVF9FUSgyLCBh
MS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQ
RUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVPbkNv
cHksIENvcHlDb25zdHJ1Y3RvcldpdGhTYW1lQWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2Vy
dCgwKS5maXJzdDsKKyAgVGFibGUgdSh0MSwgYTEpOworICBFWFBFQ1RfRVEoMiwgYTEubnVtX2Fs
bG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgx
LCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBDb3B5Q29u
c3RydWN0b3JXaXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5m
aXJzdDsKKyAgVGFibGUgdSh0MSwgYTIpOworICBFWFBFQ1RfRVEoYTIsIHUuZ2V0X2FsbG9jYXRv
cigpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgxLCBh
Mi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQ
RUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVPbkNv
cHksIENvcHlDb25zdHJ1Y3RvcldpdGhEaWZmZXJlbnRBbGxvYykgeworICBhdXRvIGl0ID0gdDEu
aW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KHQxLCBhMik7CisgIEVYUEVDVF9FUShhMiwgdS5n
ZXRfYWxsb2NhdG9yKCkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQ
RUNUX0VRKDEsIGEyLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVz
KCkpOworICBFWFBFQ1RfRVEoMSwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9w
YWdhdGVPbkFsbCwgTW92ZUNvbnN0cnVjdG9yKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCku
Zmlyc3Q7CisgIFRhYmxlIHUoc3RkOjptb3ZlKHQxKSk7CisgIEVYUEVDVF9FUSgxLCBhMS5udW1f
YWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VR
KDAsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVPbk1vdmUsIE1v
dmVDb25zdHJ1Y3RvcikgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJs
ZSB1KHN0ZDo6bW92ZSh0MSkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAg
RVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX2Nv
cGllcygpKTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBNb3ZlQ29uc3RydWN0b3JXaXRo
U2FtZUFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUo
c3RkOjptb3ZlKHQxKSwgYTEpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAg
RVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX2Nv
cGllcygpKTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRlT25Nb3ZlLCBNb3ZlQ29uc3RydWN0b3JX
aXRoU2FtZUFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxl
IHUoc3RkOjptb3ZlKHQxKSwgYTEpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsK
KyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVt
X2NvcGllcygpKTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBNb3ZlQ29uc3RydWN0b3JX
aXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAg
VGFibGUgdShzdGQ6Om1vdmUodDEpLCBhMik7CisgIGl0ID0gdS5maW5kKDApOworICBFWFBFQ1Rf
RVEoYTIsIHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3Mo
KSk7CisgIEVYUEVDVF9FUSgxLCBhMi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMSwgaXQt
Pm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkpOworfQorCitU
RVNUX0YoTm9Qcm9wYWdhdGVPbk1vdmUsIE1vdmVDb25zdHJ1Y3RvcldpdGhEaWZmZXJlbnRBbGxv
YykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KHN0ZDo6bW92
ZSh0MSksIGEyKTsKKyAgaXQgPSB1LmZpbmQoMCk7CisgIEVYUEVDVF9FUShhMiwgdS5nZXRfYWxs
b2NhdG9yKCkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VR
KDEsIGEyLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+bnVtX21vdmVzKCkpOwor
ICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVP
bkFsbCwgQ29weUFzc2lnbm1lbnRXaXRoU2FtZUFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNl
cnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUoMCwgYTEpOworICB1ID0gdDE7CisgIEVYUEVDVF9FUSgy
LCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAg
RVhQRUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVP
bkNvcHksIENvcHlBc3NpZ25tZW50V2l0aFNhbWVBbGxvYykgeworICBhdXRvIGl0ID0gdDEuaW5z
ZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KDAsIGExKTsKKyAgdSA9IHQxOworICBFWFBFQ1RfRVEo
MiwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7Cisg
IEVYUEVDVF9FUSgxLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9u
QWxsLCBDb3B5QXNzaWdubWVudFdpdGhEaWZmZXJlbnRBbGxvYykgeworICBhdXRvIGl0ID0gdDEu
aW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KDAsIGEyKTsKKyAgdSA9IHQxOworICBFWFBFQ1Rf
RVEoYTEsIHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKDIsIGExLm51bV9hbGxvY3Mo
KSk7CisgIEVYUEVDVF9FUSgwLCBhMi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQt
Pm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitU
RVNUX0YoTm9Qcm9wYWdhdGVPbkNvcHksIENvcHlBc3NpZ25tZW50V2l0aERpZmZlcmVudEFsbG9j
KSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUoMCwgYTIpOwor
ICB1ID0gdDE7CisgIEVYUEVDVF9FUShhMiwgdS5nZXRfYWxsb2NhdG9yKCkpOworICBFWFBFQ1Rf
RVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDEsIGEyLm51bV9hbGxvY3MoKSk7
CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMSwgaXQtPm51
bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgTW92ZUFzc2lnbm1lbnRX
aXRoU2FtZUFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxl
IHUoMCwgYTEpOworICB1ID0gc3RkOjptb3ZlKHQxKTsKKyAgRVhQRUNUX0VRKGExLCB1LmdldF9h
bGxvY2F0b3IoKSk7CisgIEVYUEVDVF9FUSgxLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1Rf
RVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkp
OworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVPbk1vdmUsIE1vdmVBc3NpZ25tZW50V2l0aFNhbWVB
bGxvYykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KDAsIGEx
KTsKKyAgdSA9IHN0ZDo6bW92ZSh0MSk7CisgIEVYUEVDVF9FUShhMSwgdS5nZXRfYWxsb2NhdG9y
KCkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0
LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKwor
VEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBNb3ZlQXNzaWdubWVudFdpdGhEaWZmZXJlbnRBbGxvYykg
eworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KDAsIGEyKTsKKyAg
dSA9IHN0ZDo6bW92ZSh0MSk7CisgIEVYUEVDVF9FUShhMSwgdS5nZXRfYWxsb2NhdG9yKCkpOwor
ICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGEyLm51bV9h
bGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEo
MCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihOb1Byb3BhZ2F0ZU9uTW92ZSwgTW92
ZUFzc2lnbm1lbnRXaXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgw
KS5maXJzdDsKKyAgVGFibGUgdSgwLCBhMik7CisgIHUgPSBzdGQ6Om1vdmUodDEpOworICBpdCA9
IHUuZmluZCgwKTsKKyAgRVhQRUNUX0VRKGEyLCB1LmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVD
VF9FUSgxLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMSwgYTIubnVtX2FsbG9jcygp
KTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+
bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBTd2FwKSB7CisgIGF1
dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUoMCwgYTIpOworICB1LnN3YXAo
dDEpOworICBFWFBFQ1RfRVEoYTEsIHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKGEy
LCB0MS5nZXRfYWxsb2NhdG9yKCkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsK
KyAgRVhQRUNUX0VRKDAsIGEyLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVt
X21vdmVzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFt
ZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFz
aF9zZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXRfdGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZDMzYTNhY2I5MTc4ODg4ODU1ZmY5MWRlOTQxNDY5MzRjODM3NTU2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3Nl
dF90ZXN0LmNjCkBAIC0wLDAgKzEsMTk2MSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNo
X3NldC5oIgorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8
Y3N0ZGludD4KKyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxudW1lcmljPgorI2luY2x1ZGUgPHJhbmRvbT4KKyNpbmNs
dWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvaW50ZXJuYWwvY3ljbGVjbG9jay5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRl
cm5hbC9yYXdfbG9nZ2luZy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2Nv
bnRhaW5lcl9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
X2Z1bmN0aW9uX2RlZmF1bHRzLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
aGFzaF9wb2xpY3lfdGVzdGluZy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L2hhc2h0YWJsZV9kZWJ1Zy5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5o
IgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwor
c3RydWN0IFJhd0hhc2hTZXRUZXN0T25seUFjY2VzcyB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
PgorICBzdGF0aWMgYXV0byBHZXRTbG90cyhjb25zdCBDJiBjKSAtPiBkZWNsdHlwZShjLnNsb3Rz
XykgeworICAgIHJldHVybiBjLnNsb3RzXzsKKyAgfQorfTsKKworbmFtZXNwYWNlIHsKKwordXNp
bmcgOjp0ZXN0aW5nOjpEb3VibGVOZWFyOwordXNpbmcgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZTsK
K3VzaW5nIDo6dGVzdGluZzo6T3B0aW9uYWw7Cit1c2luZyA6OnRlc3Rpbmc6OlBhaXI7Cit1c2lu
ZyA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlOworCitURVNUKFV0aWwsIE5vcm1hbGl6
ZUNhcGFjaXR5KSB7CisgIGNvbnN0ZXhwciBzaXplX3Qga01pbkNhcGFjaXR5ID0gR3JvdXA6OmtX
aWR0aCAtIDE7CisgIEVYUEVDVF9FUShrTWluQ2FwYWNpdHksIE5vcm1hbGl6ZUNhcGFjaXR5KDAp
KTsKKyAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSwgTm9ybWFsaXplQ2FwYWNpdHkoMSkpOworICBF
WFBFQ1RfRVEoa01pbkNhcGFjaXR5LCBOb3JtYWxpemVDYXBhY2l0eSgyKSk7CisgIEVYUEVDVF9F
UShrTWluQ2FwYWNpdHksIE5vcm1hbGl6ZUNhcGFjaXR5KGtNaW5DYXBhY2l0eSkpOworICBFWFBF
Q1RfRVEoa01pbkNhcGFjaXR5ICogMiArIDEsIE5vcm1hbGl6ZUNhcGFjaXR5KGtNaW5DYXBhY2l0
eSArIDEpKTsKKyAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0eSAqIDIgKyAxLCBOb3JtYWxpemVDYXBh
Y2l0eShrTWluQ2FwYWNpdHkgKyAyKSk7Cit9CisKK1RFU1QoVXRpbCwgcHJvYmVfc2VxKSB7Cisg
IHByb2JlX3NlcTwxNj4gc2VxKDAsIDEyNyk7CisgIGF1dG8gZ2VuID0gWyZdKCkgeworICAgIHNp
emVfdCByZXMgPSBzZXEub2Zmc2V0KCk7CisgICAgc2VxLm5leHQoKTsKKyAgICByZXR1cm4gcmVz
OworICB9OworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IG9mZnNldHMoOCk7CisgIHN0ZDo6Z2VuZXJh
dGVfbihvZmZzZXRzLmJlZ2luKCksIDgsIGdlbik7CisgIEVYUEVDVF9USEFUKG9mZnNldHMsIEVs
ZW1lbnRzQXJlKDAsIDE2LCA0OCwgOTYsIDMyLCAxMTIsIDgwLCA2NCkpOworICBzZXEgPSBwcm9i
ZV9zZXE8MTY+KDEyOCwgMTI3KTsKKyAgc3RkOjpnZW5lcmF0ZV9uKG9mZnNldHMuYmVnaW4oKSwg
OCwgZ2VuKTsKKyAgRVhQRUNUX1RIQVQob2Zmc2V0cywgRWxlbWVudHNBcmUoMCwgMTYsIDQ4LCA5
NiwgMzIsIDExMiwgODAsIDY0KSk7Cit9CisKK1RFU1QoQml0TWFzaywgU21va2UpIHsKKyAgRVhQ
RUNUX0ZBTFNFKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDApKSk7CisgIEVYUEVDVF9UUlVFKChCaXRN
YXNrPHVpbnQ4X3QsIDg+KDUpKSk7CisKKyAgRVhQRUNUX1RIQVQoKEJpdE1hc2s8dWludDhfdCwg
OD4oMCkpLCBFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX1RIQVQoKEJpdE1hc2s8dWludDhfdCwg
OD4oMHgxKSksIEVsZW1lbnRzQXJlKDApKTsKKyAgRVhQRUNUX1RIQVQoKEJpdE1hc2s8dWludDhf
dCwgOD4oMHgyKSksIEVsZW1lbnRzQXJlKDEpKTsKKyAgRVhQRUNUX1RIQVQoKEJpdE1hc2s8dWlu
dDhfdCwgOD4oMHgzKSksIEVsZW1lbnRzQXJlKDAsIDEpKTsKKyAgRVhQRUNUX1RIQVQoKEJpdE1h
c2s8dWludDhfdCwgOD4oMHg0KSksIEVsZW1lbnRzQXJlKDIpKTsKKyAgRVhQRUNUX1RIQVQoKEJp
dE1hc2s8dWludDhfdCwgOD4oMHg1KSksIEVsZW1lbnRzQXJlKDAsIDIpKTsKKyAgRVhQRUNUX1RI
QVQoKEJpdE1hc2s8dWludDhfdCwgOD4oMHg1NSkpLCBFbGVtZW50c0FyZSgwLCAyLCA0LCA2KSk7
CisgIEVYUEVDVF9USEFUKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDB4QUEpKSwgRWxlbWVudHNBcmUo
MSwgMywgNSwgNykpOworfQorCitURVNUKEJpdE1hc2ssIFdpdGhTaGlmdCkgeworICAvLyBTZWUg
dGhlIG5vbi1TU0UgdmVyc2lvbiBvZiBHcm91cCBmb3IgZGV0YWlscyBvbiB3aGF0IHRoaXMgbWF0
aCBpcyBmb3IuCisgIHVpbnQ2NF90IGN0cmwgPSAweDE3MTYxNTE0MTMxMjExMTA7CisgIHVpbnQ2
NF90IGhhc2ggPSAweDEyOworICBjb25zdGV4cHIgdWludDY0X3QgbXNicyA9IDB4ODA4MDgwODA4
MDgwODA4MFVMTDsKKyAgY29uc3RleHByIHVpbnQ2NF90IGxzYnMgPSAweDAxMDEwMTAxMDEwMTAx
MDFVTEw7CisgIGF1dG8geCA9IGN0cmwgXiAobHNicyAqIGhhc2gpOworICB1aW50NjRfdCBtYXNr
ID0gKHggLSBsc2JzKSAmIH54ICYgbXNiczsKKyAgRVhQRUNUX0VRKDB4MDAwMDAwMDA4MDgwMDAw
MCwgbWFzayk7CisKKyAgQml0TWFzazx1aW50NjRfdCwgOCwgMz4gYihtYXNrKTsKKyAgRVhQRUNU
X0VRKCpiLCAyKTsKK30KKworVEVTVChCaXRNYXNrLCBMZWFkaW5nVHJhaWxpbmcpIHsKKyAgRVhQ
RUNUX0VRKChCaXRNYXNrPHVpbnQzMl90LCAxNj4oMGIwMDAxMTAxMDAxMDAwMDAwKS5MZWFkaW5n
WmVyb3MoKSksIDMpOworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMyX3QsIDE2PigwYjAwMDEx
MDEwMDEwMDAwMDApLlRyYWlsaW5nWmVyb3MoKSksIDYpOworCisgIEVYUEVDVF9FUSgoQml0TWFz
azx1aW50MzJfdCwgMTY+KDBiMDAwMDAwMDAwMDAwMDAwMSkuTGVhZGluZ1plcm9zKCkpLCAxNSk7
CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDBiMDAwMDAwMDAwMDAwMDAwMSku
VHJhaWxpbmdaZXJvcygpKSwgMCk7CisKKyAgRVhQRUNUX0VRKChCaXRNYXNrPHVpbnQzMl90LCAx
Nj4oMGIxMDAwMDAwMDAwMDAwMDAwKS5MZWFkaW5nWmVyb3MoKSksIDApOworICBFWFBFQ1RfRVEo
KEJpdE1hc2s8dWludDMyX3QsIDE2PigwYjEwMDAwMDAwMDAwMDAwMDApLlRyYWlsaW5nWmVyb3Mo
KSksIDE1KTsKKworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDY0X3QsIDgsIDM+KDB4MDAwMDAw
ODA4MDgwODAwMCkuTGVhZGluZ1plcm9zKCkpLCAzKTsKKyAgRVhQRUNUX0VRKChCaXRNYXNrPHVp
bnQ2NF90LCA4LCAzPigweDAwMDAwMDgwODA4MDgwMDApLlRyYWlsaW5nWmVyb3MoKSksIDEpOwor
CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50NjRfdCwgOCwgMz4oMHgwMDAwMDAwMDAwMDAwMDgw
KS5MZWFkaW5nWmVyb3MoKSksIDcpOworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDY0X3QsIDgs
IDM+KDB4MDAwMDAwMDAwMDAwMDA4MCkuVHJhaWxpbmdaZXJvcygpKSwgMCk7CisKKyAgRVhQRUNU
X0VRKChCaXRNYXNrPHVpbnQ2NF90LCA4LCAzPigweDgwMDAwMDAwMDAwMDAwMDApLkxlYWRpbmda
ZXJvcygpKSwgMCk7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50NjRfdCwgOCwgMz4oMHg4MDAw
MDAwMDAwMDAwMDAwKS5UcmFpbGluZ1plcm9zKCkpLCA3KTsKK30KKworVEVTVChHcm91cCwgRW1w
dHlHcm91cCkgeworICBmb3IgKGgyX3QgaCA9IDA7IGggIT0gMTI4OyArK2gpIEVYUEVDVF9GQUxT
RShHcm91cHtFbXB0eUdyb3VwKCl9Lk1hdGNoKGgpKTsKK30KKworI2lmIFNXSVNTVEFCTEVfSEFW
RV9TU0UyCitURVNUKEdyb3VwLCBNYXRjaCkgeworICBjdHJsX3QgZ3JvdXBbXSA9IHtrRW1wdHks
IDEsIGtEZWxldGVkLCAzLCBrRW1wdHksIDUsIGtTZW50aW5lbCwgNywKKyAgICAgICAgICAgICAg
ICAgICAgNywgICAgICA1LCAzLCAgICAgICAgMSwgMSwgICAgICAxLCAxLCAgICAgICAgIDF9Owor
ICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMCksIEVsZW1lbnRzQXJlKCkpOworICBF
WFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMSksIEVsZW1lbnRzQXJlKDEsIDExLCAxMiwg
MTMsIDE0LCAxNSkpOworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMyksIEVsZW1l
bnRzQXJlKDMsIDEwKSk7CisgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaCg1KSwgRWxl
bWVudHNBcmUoNSwgOSkpOworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goNyksIEVs
ZW1lbnRzQXJlKDcsIDgpKTsKK30KKworVEVTVChHcm91cCwgTWF0Y2hFbXB0eSkgeworICBjdHJs
X3QgZ3JvdXBbXSA9IHtrRW1wdHksIDEsIGtEZWxldGVkLCAzLCBrRW1wdHksIDUsIGtTZW50aW5l
bCwgNywKKyAgICAgICAgICAgICAgICAgICAgNywgICAgICA1LCAzLCAgICAgICAgMSwgMSwgICAg
ICAxLCAxLCAgICAgICAgIDF9OworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2hFbXB0
eSgpLCBFbGVtZW50c0FyZSgwLCA0KSk7Cit9CisKK1RFU1QoR3JvdXAsIE1hdGNoRW1wdHlPckRl
bGV0ZWQpIHsKKyAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCBrRGVsZXRlZCwgMywga0Vt
cHR5LCA1LCBrU2VudGluZWwsIDcsCisgICAgICAgICAgICAgICAgICAgIDcsICAgICAgNSwgMywg
ICAgICAgIDEsIDEsICAgICAgMSwgMSwgICAgICAgICAxfTsKKyAgRVhQRUNUX1RIQVQoR3JvdXB7
Z3JvdXB9Lk1hdGNoRW1wdHlPckRlbGV0ZWQoKSwgRWxlbWVudHNBcmUoMCwgMiwgNCkpOworfQor
I2Vsc2UKK1RFU1QoR3JvdXAsIE1hdGNoKSB7CisgIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwg
MSwgMiwga0RlbGV0ZWQsIDIsIDEsIGtTZW50aW5lbCwgMX07CisgIEVYUEVDVF9USEFUKEdyb3Vw
e2dyb3VwfS5NYXRjaCgwKSwgRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9USEFUKEdyb3Vwe2dy
b3VwfS5NYXRjaCgxKSwgRWxlbWVudHNBcmUoMSwgNSwgNykpOworICBFWFBFQ1RfVEhBVChHcm91
cHtncm91cH0uTWF0Y2goMiksIEVsZW1lbnRzQXJlKDIsIDQpKTsKK30KK1RFU1QoR3JvdXAsIE1h
dGNoRW1wdHkpIHsKKyAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCAyLCBrRGVsZXRlZCwg
MiwgMSwga1NlbnRpbmVsLCAxfTsKKyAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoRW1w
dHkoKSwgRWxlbWVudHNBcmUoMCkpOworfQorCitURVNUKEdyb3VwLCBNYXRjaEVtcHR5T3JEZWxl
dGVkKSB7CisgIGN0cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwgMiwga0RlbGV0ZWQsIDIsIDEs
IGtTZW50aW5lbCwgMX07CisgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaEVtcHR5T3JE
ZWxldGVkKCksIEVsZW1lbnRzQXJlKDAsIDMpKTsKK30KKyNlbmRpZgorCitURVNUKEJhdGNoLCBE
cm9wRGVsZXRlcykgeworICBjb25zdGV4cHIgc2l6ZV90IGtDYXBhY2l0eSA9IDYzOworICBjb25z
dGV4cHIgc2l6ZV90IGtHcm91cFdpZHRoID0gY29udGFpbmVyX2ludGVybmFsOjpHcm91cDo6a1dp
ZHRoOworICBzdGQ6OnZlY3RvcjxjdHJsX3Q+IGN0cmwoa0NhcGFjaXR5ICsgMSArIGtHcm91cFdp
ZHRoKTsKKyAgY3RybFtrQ2FwYWNpdHldID0ga1NlbnRpbmVsOworICBzdGQ6OnZlY3RvcjxjdHJs
X3Q+IHBhdHRlcm4gPSB7a0VtcHR5LCAyLCBrRGVsZXRlZCwgMiwga0VtcHR5LCAxLCBrRGVsZXRl
ZH07CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGtDYXBhY2l0eTsgKytpKSB7CisgICAgY3Ry
bFtpXSA9IHBhdHRlcm5baSAlIHBhdHRlcm4uc2l6ZSgpXTsKKyAgICBpZiAoaSA8IGtHcm91cFdp
ZHRoIC0gMSkKKyAgICAgIGN0cmxbaSArIGtDYXBhY2l0eSArIDFdID0gcGF0dGVybltpICUgcGF0
dGVybi5zaXplKCldOworICB9CisgIENvbnZlcnREZWxldGVkVG9FbXB0eUFuZEZ1bGxUb0RlbGV0
ZWQoY3RybC5kYXRhKCksIGtDYXBhY2l0eSk7CisgIEFTU0VSVF9FUShjdHJsW2tDYXBhY2l0eV0s
IGtTZW50aW5lbCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga0NhcGFjaXR5ICsgMSArIGtH
cm91cFdpZHRoOyArK2kpIHsKKyAgICBjdHJsX3QgZXhwZWN0ZWQgPSBwYXR0ZXJuW2kgJSAoa0Nh
cGFjaXR5ICsgMSkgJSBwYXR0ZXJuLnNpemUoKV07CisgICAgaWYgKGkgPT0ga0NhcGFjaXR5KSBl
eHBlY3RlZCA9IGtTZW50aW5lbDsKKyAgICBpZiAoZXhwZWN0ZWQgPT0ga0RlbGV0ZWQpIGV4cGVj
dGVkID0ga0VtcHR5OworICAgIGlmIChJc0Z1bGwoZXhwZWN0ZWQpKSBleHBlY3RlZCA9IGtEZWxl
dGVkOworICAgIEVYUEVDVF9FUShjdHJsW2ldLCBleHBlY3RlZCkKKyAgICAgICAgPDwgaSA8PCAi
ICIgPDwgaW50e3BhdHRlcm5baSAlIHBhdHRlcm4uc2l6ZSgpXX07CisgIH0KK30KKworVEVTVChH
cm91cCwgQ291bnRMZWFkaW5nRW1wdHlPckRlbGV0ZWQpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8
Y3RybF90PiBlbXB0eV9leGFtcGxlcyA9IHtrRW1wdHksIGtEZWxldGVkfTsKKyAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8Y3RybF90PiBmdWxsX2V4YW1wbGVzID0gezAsIDEsIDIsIDMsIDUsIDksIDEyNywg
a1NlbnRpbmVsfTsKKworICBmb3IgKGN0cmxfdCBlbXB0eSA6IGVtcHR5X2V4YW1wbGVzKSB7Cisg
ICAgc3RkOjp2ZWN0b3I8Y3RybF90PiBlKEdyb3VwOjprV2lkdGgsIGVtcHR5KTsKKyAgICBFWFBF
Q1RfRVEoR3JvdXA6OmtXaWR0aCwgR3JvdXB7ZS5kYXRhKCl9LkNvdW50TGVhZGluZ0VtcHR5T3JE
ZWxldGVkKCkpOworICAgIGZvciAoY3RybF90IGZ1bGwgOiBmdWxsX2V4YW1wbGVzKSB7CisgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBHcm91cDo6a1dpZHRoOyArK2kpIHsKKyAgICAgICAg
c3RkOjp2ZWN0b3I8Y3RybF90PiBmKEdyb3VwOjprV2lkdGgsIGVtcHR5KTsKKyAgICAgICAgZltp
XSA9IGZ1bGw7CisgICAgICAgIEVYUEVDVF9FUShpLCBHcm91cHtmLmRhdGEoKX0uQ291bnRMZWFk
aW5nRW1wdHlPckRlbGV0ZWQoKSk7CisgICAgICB9CisgICAgICBzdGQ6OnZlY3RvcjxjdHJsX3Q+
IGYoR3JvdXA6OmtXaWR0aCwgZW1wdHkpOworICAgICAgZltHcm91cDo6a1dpZHRoICogMiAvIDNd
ID0gZnVsbDsKKyAgICAgIGZbR3JvdXA6OmtXaWR0aCAvIDJdID0gZnVsbDsKKyAgICAgIEVYUEVD
VF9FUSgKKyAgICAgICAgICBHcm91cDo6a1dpZHRoIC8gMiwgR3JvdXB7Zi5kYXRhKCl9LkNvdW50
TGVhZGluZ0VtcHR5T3JEZWxldGVkKCkpOworICAgIH0KKyAgfQorfQorCitzdHJ1Y3QgSW50UG9s
aWN5IHsKKyAgdXNpbmcgc2xvdF90eXBlID0gaW50NjRfdDsKKyAgdXNpbmcga2V5X3R5cGUgPSBp
bnQ2NF90OworICB1c2luZyBpbml0X3R5cGUgPSBpbnQ2NF90OworCisgIHN0YXRpYyB2b2lkIGNv
bnN0cnVjdCh2b2lkKiwgaW50NjRfdCogc2xvdCwgaW50NjRfdCB2KSB7ICpzbG90ID0gdjsgfQor
ICBzdGF0aWMgdm9pZCBkZXN0cm95KHZvaWQqLCBpbnQ2NF90Kikge30KKyAgc3RhdGljIHZvaWQg
dHJhbnNmZXIodm9pZCosIGludDY0X3QqIG5ld19zbG90LCBpbnQ2NF90KiBvbGRfc2xvdCkgewor
ICAgICpuZXdfc2xvdCA9ICpvbGRfc2xvdDsKKyAgfQorCisgIHN0YXRpYyBpbnQ2NF90JiBlbGVt
ZW50KHNsb3RfdHlwZSogc2xvdCkgeyByZXR1cm4gKnNsb3Q7IH0KKworICB0ZW1wbGF0ZSA8Y2xh
c3MgRj4KKyAgc3RhdGljIGF1dG8gYXBwbHkoRiYmIGYsIGludDY0X3QgeCkgLT4gZGVjbHR5cGUo
c3RkOjpmb3J3YXJkPEY+KGYpKHgsIHgpKSB7CisgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihm
KSh4LCB4KTsKKyAgfQorfTsKKworY2xhc3MgU3RyaW5nUG9saWN5IHsKKyAgdGVtcGxhdGUgPGNs
YXNzIEYsIGNsYXNzIEssIGNsYXNzIFYsCisgICAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGU8Y29uc3Qg
SyYsIGFic2w6OnN0cmluZ192aWV3Pjo6dmFsdWU+Ojp0eXBlPgorICBkZWNsdHlwZShzdGQ6OmRl
Y2x2YWw8Rj4oKSgKKyAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCBhYnNsOjpzdHJpbmdfdmlldyY+
KCksIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwKKyAgICAgIHN0ZDo6ZGVjbHZhbDxzdGQ6OnR1
cGxlPEs+PigpLAorICAgICAgc3RkOjpkZWNsdmFsPFY+KCkpKSBzdGF0aWMgYXBwbHlfaW1wbChG
JiYgZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpw
YWlyPHN0ZDo6dHVwbGU8Sz4sIFY+IHApIHsKKyAgICBjb25zdCBhYnNsOjpzdHJpbmdfdmlldyYg
a2V5ID0gc3RkOjpnZXQ8MD4ocC5maXJzdCk7CisgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihm
KShrZXksIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjptb3ZlKHAuZmlyc3QpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHAuc2Vjb25kKSk7CisgIH0KKwor
IHB1YmxpYzoKKyAgc3RydWN0IHNsb3RfdHlwZSB7CisgICAgc3RydWN0IGN0b3Ige307CisKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gVHM+CisgICAgc2xvdF90eXBlKGN0b3IsIFRzJiYuLi4gdHMp
IDogcGFpcihzdGQ6OmZvcndhcmQ8VHM+KHRzKS4uLikge30KKworICAgIHN0ZDo6cGFpcjxzdGQ6
OnN0cmluZywgc3RkOjpzdHJpbmc+IHBhaXI7CisgIH07CisKKyAgdXNpbmcga2V5X3R5cGUgPSBz
dGQ6OnN0cmluZzsKKyAgdXNpbmcgaW5pdF90eXBlID0gc3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBz
dGQ6OnN0cmluZz47CisKKyAgdGVtcGxhdGUgPGNsYXNzIGFsbG9jYXRvcl90eXBlLCBjbGFzcy4u
LiBBcmdzPgorICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoYWxsb2NhdG9yX3R5cGUqIGFsbG9jLCBz
bG90X3R5cGUqIHNsb3QsIEFyZ3MuLi4gYXJncykgeworICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0
czxhbGxvY2F0b3JfdHlwZT46OmNvbnN0cnVjdCgKKyAgICAgICAgKmFsbG9jLCBzbG90LCB0eXBl
bmFtZSBzbG90X3R5cGU6OmN0b3IoKSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAg
fQorCisgIHRlbXBsYXRlIDxjbGFzcyBhbGxvY2F0b3JfdHlwZT4KKyAgc3RhdGljIHZvaWQgZGVz
dHJveShhbGxvY2F0b3JfdHlwZSogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCkgeworICAgIHN0ZDo6
YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT46OmRlc3Ryb3koKmFsbG9jLCBzbG90KTsK
KyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBhbGxvY2F0b3JfdHlwZT4KKyAgc3RhdGljIHZvaWQg
dHJhbnNmZXIoYWxsb2NhdG9yX3R5cGUqIGFsbG9jLCBzbG90X3R5cGUqIG5ld19zbG90LAorICAg
ICAgICAgICAgICAgICAgICAgICBzbG90X3R5cGUqIG9sZF9zbG90KSB7CisgICAgY29uc3RydWN0
KGFsbG9jLCBuZXdfc2xvdCwgc3RkOjptb3ZlKG9sZF9zbG90LT5wYWlyKSk7CisgICAgZGVzdHJv
eShhbGxvYywgb2xkX3Nsb3QpOworICB9CisKKyAgc3RhdGljIHN0ZDo6cGFpcjxzdGQ6OnN0cmlu
Zywgc3RkOjpzdHJpbmc+JiBlbGVtZW50KHNsb3RfdHlwZSogc2xvdCkgeworICAgIHJldHVybiBz
bG90LT5wYWlyOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzLi4uIEFyZ3M+Cisg
IHN0YXRpYyBhdXRvIGFwcGx5KEYmJiBmLCBBcmdzJiYuLi4gYXJncykKKyAgICAgIC0+IGRlY2x0
eXBlKGFwcGx5X2ltcGwoc3RkOjpmb3J3YXJkPEY+KGYpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYWlyQXJncyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSkgeworICAgIHJl
dHVybiBhcHBseV9pbXBsKHN0ZDo6Zm9yd2FyZDxGPihmKSwKKyAgICAgICAgICAgICAgICAgICAg
ICBQYWlyQXJncyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgfQorfTsKKworc3Ry
dWN0IFN0cmluZ0hhc2ggOiBhYnNsOjpIYXNoPGFic2w6OnN0cmluZ192aWV3PiB7CisgIHVzaW5n
IGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKK307CitzdHJ1Y3QgU3RyaW5nRXEgOiBzdGQ6OmVxdWFs
X3RvPGFic2w6OnN0cmluZ192aWV3PiB7CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsK
K307CisKK3N0cnVjdCBTdHJpbmdUYWJsZQorICAgIDogcmF3X2hhc2hfc2V0PFN0cmluZ1BvbGlj
eSwgU3RyaW5nSGFzaCwgU3RyaW5nRXEsIHN0ZDo6YWxsb2NhdG9yPGludD4+IHsKKyAgdXNpbmcg
QmFzZSA9IHR5cGVuYW1lIFN0cmluZ1RhYmxlOjpyYXdfaGFzaF9zZXQ7CisgIFN0cmluZ1RhYmxl
KCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKK307CisKK3N0cnVjdCBJbnRUYWJsZQorICAgIDog
cmF3X2hhc2hfc2V0PEludFBvbGljeSwgY29udGFpbmVyX2ludGVybmFsOjpoYXNoX2RlZmF1bHRf
aGFzaDxpbnQ2NF90PiwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OmVxdWFsX3RvPGludDY0X3Q+
LCBzdGQ6OmFsbG9jYXRvcjxpbnQ2NF90Pj4geworICB1c2luZyBCYXNlID0gdHlwZW5hbWUgSW50
VGFibGU6OnJhd19oYXNoX3NldDsKKyAgSW50VGFibGUoKSB7fQorICB1c2luZyBCYXNlOjpCYXNl
OworfTsKKworc3RydWN0IEJhZEZhc3RIYXNoIHsKKyAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgIHNp
emVfdCBvcGVyYXRvcigpKGNvbnN0IFQmKSBjb25zdCB7CisgICAgcmV0dXJuIDA7CisgIH0KK307
CisKK3N0cnVjdCBCYWRUYWJsZSA6IHJhd19oYXNoX3NldDxJbnRQb2xpY3ksIEJhZEZhc3RIYXNo
LCBzdGQ6OmVxdWFsX3RvPGludD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjphbGxvY2F0b3I8aW50Pj4geworICB1c2luZyBCYXNlID0gdHlwZW5hbWUgQmFkVGFibGU6OnJh
d19oYXNoX3NldDsKKyAgQmFkVGFibGUoKSB7fQorICB1c2luZyBCYXNlOjpCYXNlOworfTsKKwor
VEVTVChUYWJsZSwgRW1wdHlGdW5jdG9yT3B0aW1pemF0aW9uKSB7CisgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19lbXB0eTxzdGQ6OmVxdWFsX3RvPGFic2w6OnN0cmluZ192aWV3Pj46OnZhbHVlLCAi
Iik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19lbXB0eTxzdGQ6OmFsbG9jYXRvcjxpbnQ+Pjo6
dmFsdWUsICIiKTsKKworICBzdHJ1Y3QgTW9ja1RhYmxlIHsKKyAgICB2b2lkKiBjdHJsOworICAg
IHZvaWQqIHNsb3RzOworICAgIHNpemVfdCBzaXplOworICAgIHNpemVfdCBjYXBhY2l0eTsKKyAg
ICBzaXplX3QgZ3Jvd3RoX2xlZnQ7CisgIH07CisgIHN0cnVjdCBTdGF0ZWxlc3NIYXNoIHsKKyAg
ICBzaXplX3Qgb3BlcmF0b3IoKShhYnNsOjpzdHJpbmdfdmlldykgY29uc3QgeyByZXR1cm4gMDsg
fQorICB9OworICBzdHJ1Y3QgU3RhdGVmdWxIYXNoIDogU3RhdGVsZXNzSGFzaCB7CisgICAgc2l6
ZV90IGR1bW15OworICB9OworCisgIEVYUEVDVF9FUSgKKyAgICAgIHNpemVvZihNb2NrVGFibGUp
LAorICAgICAgc2l6ZW9mKAorICAgICAgICAgIHJhd19oYXNoX3NldDxTdHJpbmdQb2xpY3ksIFN0
YXRlbGVzc0hhc2gsCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZXF1YWxfdG88YWJzbDo6
c3RyaW5nX3ZpZXc+LCBzdGQ6OmFsbG9jYXRvcjxpbnQ+PikpOworCisgIEVYUEVDVF9FUSgKKyAg
ICAgIHNpemVvZihNb2NrVGFibGUpICsgc2l6ZW9mKFN0YXRlZnVsSGFzaCksCisgICAgICBzaXpl
b2YoCisgICAgICAgICAgcmF3X2hhc2hfc2V0PFN0cmluZ1BvbGljeSwgU3RhdGVmdWxIYXNoLAor
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVxdWFsX3RvPGFic2w6OnN0cmluZ192aWV3Piwg
c3RkOjphbGxvY2F0b3I8aW50Pj4pKTsKK30KKworVEVTVChUYWJsZSwgRW1wdHkpIHsKKyAgSW50
VGFibGUgdDsKKyAgRVhQRUNUX0VRKDAsIHQuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUodC5lbXB0
eSgpKTsKK30KKworI2lmZGVmIF9fR05VQ19fCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK0FCU0xfQVRU
UklCVVRFX0FMV0FZU19JTkxJTkUgaW5saW5lIHZvaWQgRG9Ob3RPcHRpbWl6ZShjb25zdCBUJiB2
KSB7CisgIGFzbSB2b2xhdGlsZSgiIiA6IDogInIsbSIodikgOiAibWVtb3J5Iik7Cit9CisjZW5k
aWYKKworVEVTVChUYWJsZSwgUHJlZmV0Y2gpIHsKKyAgSW50VGFibGUgdDsKKyAgdC5lbXBsYWNl
KDEpOworICAvLyBXb3JrcyBmb3IgYm90aCBwcmVzZW50IGFuZCBhYnNlbnQga2V5cy4KKyAgdC5w
cmVmZXRjaCgxKTsKKyAgdC5wcmVmZXRjaCgyKTsKKworICAvLyBEbyBub3QgcnVuIGluIGRlYnVn
IG1vZGUsIHdoZW4gcHJlZmV0Y2ggaXMgbm90IGltcGxlbWVudGVkLCBvciB3aGVuCisgIC8vIHNh
bml0aXplcnMgYXJlIGVuYWJsZWQuCisjaWYgZGVmaW5lZChOREVCVUcpICYmIGRlZmluZWQoX19H
TlVDX18pICYmICFkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVSKSAmJiBcCisgICAgIWRlZmluZWQo
TUVNT1JZX1NBTklUSVpFUikgJiYgIWRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikgJiYgICAgICAg
ICAgICBcCisgICAgIWRlZmluZWQoVU5ERUZJTkVEX0JFSEFWSU9SX1NBTklUSVpFUikKKyAgY29u
c3QgYXV0byBub3cgPSBbXSB7IHJldHVybiBhYnNsOjpiYXNlX2ludGVybmFsOjpDeWNsZUNsb2Nr
OjpOb3coKTsgfTsKKworICBzdGF0aWMgY29uc3RleHByIGludCBzaXplID0gMTAwMDAwMDsKKyAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHQuaW5zZXJ0KGkpOworCisgIGludDY0X3Qg
bm9fcHJlZmV0Y2ggPSAwLCBwcmVmZXRjaCA9IDA7CisgIGZvciAoaW50IGl0ZXIgPSAwOyBpdGVy
IDwgMTA7ICsraXRlcikgeworICAgIGludDY0X3QgdGltZSA9IG5vdygpOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICBEb05vdE9wdGltaXplKHQuZmluZChpKSk7
CisgICAgfQorICAgIG5vX3ByZWZldGNoICs9IG5vdygpIC0gdGltZTsKKworICAgIHRpbWUgPSBu
b3coKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgdC5wcmVm
ZXRjaChpICsgMjApOworICAgICAgRG9Ob3RPcHRpbWl6ZSh0LmZpbmQoaSkpOworICAgIH0KKyAg
ICBwcmVmZXRjaCArPSBub3coKSAtIHRpbWU7CisgIH0KKworICAvLyBub19wcmVmZXRjaCBpcyBh
dCBsZWFzdCAzMCUgc2xvd2VyLgorICBFWFBFQ1RfR0UoMS4wICogbm9fcHJlZmV0Y2ggLyBwcmVm
ZXRjaCwgMS4zKTsKKyNlbmRpZgorfQorCitURVNUKFRhYmxlLCBMb29rdXBFbXB0eSkgeworICBJ
bnRUYWJsZSB0OworICBhdXRvIGl0ID0gdC5maW5kKDApOworICBFWFBFQ1RfVFJVRShpdCA9PSB0
LmVuZCgpKTsKK30KKworVEVTVChUYWJsZSwgSW5zZXJ0MSkgeworICBJbnRUYWJsZSB0OworICBF
WFBFQ1RfVFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7CisgIGF1dG8gcmVzID0gdC5lbXBsYWNl
KDApOworICBFWFBFQ1RfVFJVRShyZXMuc2Vjb25kKTsKKyAgRVhQRUNUX1RIQVQoKnJlcy5maXJz
dCwgMCk7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIEVYUEVDVF9USEFUKCp0LmZpbmQo
MCksIDApOworfQorCitURVNUKFRhYmxlLCBJbnNlcnQyKSB7CisgIEludFRhYmxlIHQ7CisgIEVY
UEVDVF9UUlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsKKyAgYXV0byByZXMgPSB0LmVtcGxhY2Uo
MCk7CisgIEVYUEVDVF9UUlVFKHJlcy5zZWNvbmQpOworICBFWFBFQ1RfVEhBVCgqcmVzLmZpcnN0
LCAwKTsKKyAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDEp
ID09IHQuZW5kKCkpOworICByZXMgPSB0LmVtcGxhY2UoMSk7CisgIEVYUEVDVF9UUlVFKHJlcy5z
ZWNvbmQpOworICBFWFBFQ1RfVEhBVCgqcmVzLmZpcnN0LCAxKTsKKyAgRVhQRUNUX0VRKDIsIHQu
c2l6ZSgpKTsKKyAgRVhQRUNUX1RIQVQoKnQuZmluZCgwKSwgMCk7CisgIEVYUEVDVF9USEFUKCp0
LmZpbmQoMSksIDEpOworfQorCitURVNUKFRhYmxlLCBJbnNlcnRDb2xsaXNpb24pIHsKKyAgQmFk
VGFibGUgdDsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDEpID09IHQuZW5kKCkpOworICBhdXRvIHJl
cyA9IHQuZW1wbGFjZSgxKTsKKyAgRVhQRUNUX1RSVUUocmVzLnNlY29uZCk7CisgIEVYUEVDVF9U
SEFUKCpyZXMuZmlyc3QsIDEpOworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworCisgIEVYUEVD
VF9UUlVFKHQuZmluZCgyKSA9PSB0LmVuZCgpKTsKKyAgcmVzID0gdC5lbXBsYWNlKDIpOworICBF
WFBFQ1RfVEhBVCgqcmVzLmZpcnN0LCAyKTsKKyAgRVhQRUNUX1RSVUUocmVzLnNlY29uZCk7Cisg
IEVYUEVDVF9FUSgyLCB0LnNpemUoKSk7CisKKyAgRVhQRUNUX1RIQVQoKnQuZmluZCgxKSwgMSk7
CisgIEVYUEVDVF9USEFUKCp0LmZpbmQoMiksIDIpOworfQorCisvLyBUZXN0IHRoYXQgd2UgZG8g
bm90IGFkZCBleGlzdGVudCBlbGVtZW50IGluIGNhc2Ugd2UgbmVlZCB0byBzZWFyY2ggdGhyb3Vn
aAorLy8gbWFueSBncm91cHMgd2l0aCBkZWxldGVkIGVsZW1lbnRzCitURVNUKFRhYmxlLCBJbnNl
cnRDb2xsaXNpb25BbmRGaW5kQWZ0ZXJEZWxldGUpIHsKKyAgQmFkVGFibGUgdDsgIC8vIGFsbCBl
bGVtZW50cyBnbyB0byB0aGUgc2FtZSBncm91cC4KKyAgLy8gSGF2ZSBhdCBsZWFzdCAyIGdyb3Vw
cyB3aXRoIEdyb3VwOjprV2lkdGggY29sbGlzaW9ucworICAvLyBwbHVzIHNvbWUgZXh0cmEgY29s
bGlzaW9ucyBpbiB0aGUgbGFzdCBncm91cC4KKyAgY29uc3RleHByIHNpemVfdCBrTnVtSW5zZXJ0
cyA9IEdyb3VwOjprV2lkdGggKiAyICsgNTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVt
SW5zZXJ0czsgKytpKSB7CisgICAgYXV0byByZXMgPSB0LmVtcGxhY2UoaSk7CisgICAgRVhQRUNU
X1RSVUUocmVzLnNlY29uZCk7CisgICAgRVhQRUNUX1RIQVQoKnJlcy5maXJzdCwgaSk7CisgICAg
RVhQRUNUX0VRKGkgKyAxLCB0LnNpemUoKSk7CisgIH0KKworICAvLyBSZW1vdmUgZWxlbWVudHMg
b25lIGJ5IG9uZSBhbmQgY2hlY2sKKyAgLy8gdGhhdCB3ZSBzdGlsbCBjYW4gZmluZCBhbGwgb3Ro
ZXIgZWxlbWVudHMuCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUluc2VydHM7ICsraSkg
eworICAgIEVYUEVDVF9FUSgxLCB0LmVyYXNlKGkpKSA8PCBpOworICAgIGZvciAoc2l6ZV90IGog
PSBpICsgMTsgaiA8IGtOdW1JbnNlcnRzOyArK2opIHsKKyAgICAgIEVYUEVDVF9USEFUKCp0LmZp
bmQoaiksIGopOworICAgICAgYXV0byByZXMgPSB0LmVtcGxhY2Uoaik7CisgICAgICBFWFBFQ1Rf
RkFMU0UocmVzLnNlY29uZCkgPDwgaSA8PCAiICIgPDwgajsKKyAgICAgIEVYUEVDVF9USEFUKCpy
ZXMuZmlyc3QsIGopOworICAgICAgRVhQRUNUX0VRKGtOdW1JbnNlcnRzIC0gaSAtIDEsIHQuc2l6
ZSgpKTsKKyAgICB9CisgIH0KKyAgRVhQRUNUX1RSVUUodC5lbXB0eSgpKTsKK30KKworVEVTVChU
YWJsZSwgTGF6eUVtcGxhY2UpIHsKKyAgU3RyaW5nVGFibGUgdDsKKyAgYm9vbCBjYWxsZWQgPSBm
YWxzZTsKKyAgYXV0byBpdCA9IHQubGF6eV9lbXBsYWNlKCJhYmMiLCBbJl0oY29uc3QgU3RyaW5n
VGFibGU6OmNvbnN0cnVjdG9yJiBmKSB7CisgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICBmKCJhYmMi
LCAiQUJDIik7CisgIH0pOworICBFWFBFQ1RfVFJVRShjYWxsZWQpOworICBFWFBFQ1RfVEhBVCgq
aXQsIFBhaXIoImFiYyIsICJBQkMiKSk7CisgIGNhbGxlZCA9IGZhbHNlOworICBpdCA9IHQubGF6
eV9lbXBsYWNlKCJhYmMiLCBbJl0oY29uc3QgU3RyaW5nVGFibGU6OmNvbnN0cnVjdG9yJiBmKSB7
CisgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICBmKCJhYmMiLCAiREVGIik7CisgIH0pOworICBFWFBF
Q1RfRkFMU0UoY2FsbGVkKTsKKyAgRVhQRUNUX1RIQVQoKml0LCBQYWlyKCJhYmMiLCAiQUJDIikp
OworfQorCitURVNUKFRhYmxlLCBDb250YWluc0VtcHR5KSB7CisgIEludFRhYmxlIHQ7CisKKyAg
RVhQRUNUX0ZBTFNFKHQuY29udGFpbnMoMCkpOworfQorCitURVNUKFRhYmxlLCBDb250YWluczEp
IHsKKyAgSW50VGFibGUgdDsKKworICBFWFBFQ1RfVFJVRSh0Lmluc2VydCgwKS5zZWNvbmQpOwor
ICBFWFBFQ1RfVFJVRSh0LmNvbnRhaW5zKDApKTsKKyAgRVhQRUNUX0ZBTFNFKHQuY29udGFpbnMo
MSkpOworCisgIEVYUEVDVF9FUSgxLCB0LmVyYXNlKDApKTsKKyAgRVhQRUNUX0ZBTFNFKHQuY29u
dGFpbnMoMCkpOworfQorCitURVNUKFRhYmxlLCBDb250YWluczIpIHsKKyAgSW50VGFibGUgdDsK
KworICBFWFBFQ1RfVFJVRSh0Lmluc2VydCgwKS5zZWNvbmQpOworICBFWFBFQ1RfVFJVRSh0LmNv
bnRhaW5zKDApKTsKKyAgRVhQRUNUX0ZBTFNFKHQuY29udGFpbnMoMSkpOworCisgIHQuY2xlYXIo
KTsKKyAgRVhQRUNUX0ZBTFNFKHQuY29udGFpbnMoMCkpOworfQorCitpbnQgZGVjb21wb3NlX2Nv
bnN0cnVjdGVkOworc3RydWN0IERlY29tcG9zZVR5cGUgeworICBEZWNvbXBvc2VUeXBlKGludCBp
KSA6IGkoaSkgeyAgLy8gTk9MSU5UCisgICAgKytkZWNvbXBvc2VfY29uc3RydWN0ZWQ7CisgIH0K
KworICBleHBsaWNpdCBEZWNvbXBvc2VUeXBlKGNvbnN0IGNoYXIqIGQpIDogRGVjb21wb3NlVHlw
ZSgqZCkge30KKworICBpbnQgaTsKK307CisKK3N0cnVjdCBEZWNvbXBvc2VIYXNoIHsKKyAgdXNp
bmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworICBzaXplX3Qgb3BlcmF0b3IoKShEZWNvbXBvc2VU
eXBlIGEpIGNvbnN0IHsgcmV0dXJuIGEuaTsgfQorICBzaXplX3Qgb3BlcmF0b3IoKShpbnQgYSkg
Y29uc3QgeyByZXR1cm4gYTsgfQorICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBjaGFyKiBhKSBj
b25zdCB7IHJldHVybiAqYTsgfQorfTsKKworc3RydWN0IERlY29tcG9zZUVxIHsKKyAgdXNpbmcg
aXNfdHJhbnNwYXJlbnQgPSB2b2lkOworICBib29sIG9wZXJhdG9yKCkoRGVjb21wb3NlVHlwZSBh
LCBEZWNvbXBvc2VUeXBlIGIpIGNvbnN0IHsgcmV0dXJuIGEuaSA9PSBiLmk7IH0KKyAgYm9vbCBv
cGVyYXRvcigpKERlY29tcG9zZVR5cGUgYSwgaW50IGIpIGNvbnN0IHsgcmV0dXJuIGEuaSA9PSBi
OyB9CisgIGJvb2wgb3BlcmF0b3IoKShEZWNvbXBvc2VUeXBlIGEsIGNvbnN0IGNoYXIqIGIpIGNv
bnN0IHsgcmV0dXJuIGEuaSA9PSAqYjsgfQorfTsKKworc3RydWN0IERlY29tcG9zZVBvbGljeSB7
CisgIHVzaW5nIHNsb3RfdHlwZSA9IERlY29tcG9zZVR5cGU7CisgIHVzaW5nIGtleV90eXBlID0g
RGVjb21wb3NlVHlwZTsKKyAgdXNpbmcgaW5pdF90eXBlID0gRGVjb21wb3NlVHlwZTsKKworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHZvaWQgY29uc3RydWN0KHZvaWQqLCBEZWNv
bXBvc2VUeXBlKiBzbG90LCBUJiYgdikgeworICAgICpzbG90ID0gRGVjb21wb3NlVHlwZShzdGQ6
OmZvcndhcmQ8VD4odikpOworICB9CisgIHN0YXRpYyB2b2lkIGRlc3Ryb3kodm9pZCosIERlY29t
cG9zZVR5cGUqKSB7fQorICBzdGF0aWMgRGVjb21wb3NlVHlwZSYgZWxlbWVudChzbG90X3R5cGUq
IHNsb3QpIHsgcmV0dXJuICpzbG90OyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIFQ+
CisgIHN0YXRpYyBhdXRvIGFwcGx5KEYmJiBmLCBjb25zdCBUJiB4KSAtPiBkZWNsdHlwZShzdGQ6
OmZvcndhcmQ8Rj4oZikoeCwgeCkpIHsKKyAgICByZXR1cm4gc3RkOjpmb3J3YXJkPEY+KGYpKHgs
IHgpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaCwgdHlwZW5hbWUgRXE+Cit2
b2lkIFRlc3REZWNvbXBvc2UoYm9vbCBjb25zdHJ1Y3RfdGhyZWUpIHsKKyAgRGVjb21wb3NlVHlw
ZSBlbGVtezB9OworICBjb25zdCBpbnQgb25lID0gMTsKKyAgY29uc3QgY2hhciogdGhyZWVfcCA9
ICIzIjsKKyAgY29uc3QgYXV0byYgdGhyZWUgPSB0aHJlZV9wOworCisgIHJhd19oYXNoX3NldDxE
ZWNvbXBvc2VQb2xpY3ksIEhhc2gsIEVxLCBzdGQ6OmFsbG9jYXRvcjxpbnQ+PiBzZXQxOworCisg
IGRlY29tcG9zZV9jb25zdHJ1Y3RlZCA9IDA7CisgIGludCBleHBlY3RlZF9jb25zdHJ1Y3RlZCA9
IDA7CisgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVj
dGVkKTsKKyAgc2V0MS5pbnNlcnQoZWxlbSk7CisgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1
Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKyAgc2V0MS5pbnNlcnQoMSk7CisgIEVYUEVD
VF9FUSgrK2V4cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBvc2VfY29uc3RydWN0ZWQpOworICBz
ZXQxLmVtcGxhY2UoIjMiKTsKKyAgRVhQRUNUX0VRKCsrZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRl
Y29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwg
ZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKworICB7ICAvLyBpbnNlcnQoVCYmKQorICAgIHNldDEu
aW5zZXJ0KDEpOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3Nl
X2NvbnN0cnVjdGVkKTsKKyAgfQorCisgIHsgIC8vIGluc2VydChjb25zdCBUJikKKyAgICBzZXQx
Lmluc2VydChvbmUpOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21w
b3NlX2NvbnN0cnVjdGVkKTsKKyAgfQorCisgIHsgIC8vIGluc2VydChoaW50LCBUJiYpCisgICAg
c2V0MS5pbnNlcnQoc2V0MS5iZWdpbigpLCAxKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29u
c3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgIH0KKworICB7ICAvLyBpbnNlcnQo
aGludCwgY29uc3QgVCYpCisgICAgc2V0MS5pbnNlcnQoc2V0MS5iZWdpbigpLCBvbmUpOworICAg
IEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsK
KyAgfQorCisgIHsgIC8vIGVtcGxhY2UoLi4uKQorICAgIHNldDEuZW1wbGFjZSgxKTsKKyAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7Cisg
ICAgc2V0MS5lbXBsYWNlKCIzIik7CisgICAgZXhwZWN0ZWRfY29uc3RydWN0ZWQgKz0gY29uc3Ry
dWN0X3RocmVlOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3Nl
X2NvbnN0cnVjdGVkKTsKKyAgICBzZXQxLmVtcGxhY2Uob25lKTsKKyAgICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgICAgc2V0MS5lbXBs
YWNlKHRocmVlKTsKKyAgICBleHBlY3RlZF9jb25zdHJ1Y3RlZCArPSBjb25zdHJ1Y3RfdGhyZWU7
CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBvc2VfY29uc3RydWN0
ZWQpOworICB9CisKKyAgeyAgLy8gZW1wbGFjZV9oaW50KC4uLikKKyAgICBzZXQxLmVtcGxhY2Vf
aGludChzZXQxLmJlZ2luKCksIDEpOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3Rl
ZCwgZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKyAgICBzZXQxLmVtcGxhY2VfaGludChzZXQxLmJl
Z2luKCksICIzIik7CisgICAgZXhwZWN0ZWRfY29uc3RydWN0ZWQgKz0gY29uc3RydWN0X3RocmVl
OworICAgIEVYUEVDVF9FUShleHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVj
dGVkKTsKKyAgICBzZXQxLmVtcGxhY2VfaGludChzZXQxLmJlZ2luKCksIG9uZSk7CisgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBvc2VfY29uc3RydWN0ZWQpOworICAg
IHNldDEuZW1wbGFjZV9oaW50KHNldDEuYmVnaW4oKSwgdGhyZWUpOworICAgIGV4cGVjdGVkX2Nv
bnN0cnVjdGVkICs9IGNvbnN0cnVjdF90aHJlZTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29u
c3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgIH0KK30KKworVEVTVChUYWJsZSwg
RGVjb21wb3NlKSB7CisgIFRlc3REZWNvbXBvc2U8RGVjb21wb3NlSGFzaCwgRGVjb21wb3NlRXE+
KGZhbHNlKTsKKworICBzdHJ1Y3QgVHJhbnNwYXJlbnRIYXNoSW50T3ZlcmxvYWQgeworICAgIHNp
emVfdCBvcGVyYXRvcigpKERlY29tcG9zZVR5cGUgYSkgY29uc3QgeyByZXR1cm4gYS5pOyB9Cisg
ICAgc2l6ZV90IG9wZXJhdG9yKCkoaW50IGEpIGNvbnN0IHsgcmV0dXJuIGE7IH0KKyAgfTsKKyAg
c3RydWN0IFRyYW5zcGFyZW50RXFJbnRPdmVybG9hZCB7CisgICAgYm9vbCBvcGVyYXRvcigpKERl
Y29tcG9zZVR5cGUgYSwgRGVjb21wb3NlVHlwZSBiKSBjb25zdCB7CisgICAgICByZXR1cm4gYS5p
ID09IGIuaTsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvcigpKERlY29tcG9zZVR5cGUgYSwgaW50
IGIpIGNvbnN0IHsgcmV0dXJuIGEuaSA9PSBiOyB9CisgIH07CisgIFRlc3REZWNvbXBvc2U8VHJh
bnNwYXJlbnRIYXNoSW50T3ZlcmxvYWQsIERlY29tcG9zZUVxPih0cnVlKTsKKyAgVGVzdERlY29t
cG9zZTxUcmFuc3BhcmVudEhhc2hJbnRPdmVybG9hZCwgVHJhbnNwYXJlbnRFcUludE92ZXJsb2Fk
Pih0cnVlKTsKKyAgVGVzdERlY29tcG9zZTxEZWNvbXBvc2VIYXNoLCBUcmFuc3BhcmVudEVxSW50
T3ZlcmxvYWQ+KHRydWUpOworfQorCisvLyBSZXR1cm5zIHRoZSBsYXJnZXN0IG0gc3VjaCB0aGF0
IGEgdGFibGUgd2l0aCBtIGVsZW1lbnRzIGhhcyB0aGUgc2FtZSBudW1iZXIKKy8vIG9mIGJ1Y2tl
dHMgYXMgYSB0YWJsZSB3aXRoIG4gZWxlbWVudHMuCitzaXplX3QgTWF4RGVuc2l0eVNpemUoc2l6
ZV90IG4pIHsKKyAgSW50VGFibGUgdDsKKyAgdC5yZXNlcnZlKG4pOworICBmb3IgKHNpemVfdCBp
ID0gMDsgaSAhPSBuOyArK2kpIHQuZW1wbGFjZShpKTsKKyAgY29uc3Qgc2l6ZV90IGMgPSB0LmJ1
Y2tldF9jb3VudCgpOworICB3aGlsZSAoYyA9PSB0LmJ1Y2tldF9jb3VudCgpKSB0LmVtcGxhY2Uo
bisrKTsKKyAgcmV0dXJuIHQuc2l6ZSgpIC0gMTsKK30KKworc3RydWN0IE1vZHVsbzEwMDBIYXNo
IHsKKyAgc2l6ZV90IG9wZXJhdG9yKCkoaW50IHgpIGNvbnN0IHsgcmV0dXJuIHggJSAxMDAwOyB9
Cit9OworCitzdHJ1Y3QgTW9kdWxvMTAwMEhhc2hUYWJsZQorICAgIDogcHVibGljIHJhd19oYXNo
X3NldDxJbnRQb2xpY3ksIE1vZHVsbzEwMDBIYXNoLCBzdGQ6OmVxdWFsX3RvPGludD4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPGludD4+IHt9OworCisvLyBUZXN0
IHRoYXQgcmVoYXNoIHdpdGggbm8gcmVzaXplIGhhcHBlbiBpbiBjYXNlIG9mIG1hbnkgZGVsZXRl
ZCBzbG90cy4KK1RFU1QoVGFibGUsIFJlaGFzaFdpdGhOb1Jlc2l6ZSkgeworICBNb2R1bG8xMDAw
SGFzaFRhYmxlIHQ7CisgIC8vIEFkZGluZyB0aGUgc2FtZSBsZW5ndGggKGFuZCB0aGUgc2FtZSBo
YXNoKSBzdHJpbmdzCisgIC8vIHRvIGhhdmUgYXQgbGVhc3Qga01pbkZ1bGxHcm91cHMgZ3JvdXBz
CisgIC8vIHdpdGggR3JvdXA6OmtXaWR0aCBjb2xsaXNpb25zLiBUaGVuIGZlZWwgdXB0byBNYXhE
ZW5zaXR5U2l6ZTsKKyAgY29uc3Qgc2l6ZV90IGtNaW5GdWxsR3JvdXBzID0gNzsKKyAgc3RkOjp2
ZWN0b3I8aW50PiBrZXlzOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE1heERlbnNpdHlTaXpl
KEdyb3VwOjprV2lkdGggKiBrTWluRnVsbEdyb3Vwcyk7ICsraSkgeworICAgIGludCBrID0gaSAq
IDEwMDA7CisgICAgdC5lbXBsYWNlKGspOworICAgIGtleXMucHVzaF9iYWNrKGspOworICB9Cisg
IGNvbnN0IHNpemVfdCBjYXBhY2l0eSA9IHQuY2FwYWNpdHkoKTsKKworICAvLyBSZW1vdmUgZWxl
bWVudHMgZnJvbSBhbGwgZ3JvdXBzIGV4Y2VwdCB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IG9uZS4K
KyAgLy8gQWxsIGVsZW1lbnRzIHJlbW92ZWQgZnJvbSBmdWxsIGdyb3VwcyB3aWxsIGJlIG1hcmtl
ZCBhcyBrRGVsZXRlZC4KKyAgY29uc3Qgc2l6ZV90IGVyYXNlX2JlZ2luID0gR3JvdXA6OmtXaWR0
aCAvIDI7CisgIGNvbnN0IHNpemVfdCBlcmFzZV9lbmQgPSAodC5zaXplKCkgLyBHcm91cDo6a1dp
ZHRoIC0gMSkgKiBHcm91cDo6a1dpZHRoOworICBmb3IgKHNpemVfdCBpID0gZXJhc2VfYmVnaW47
IGkgPCBlcmFzZV9lbmQ7ICsraSkgeworICAgIEVYUEVDVF9FUSgxLCB0LmVyYXNlKGtleXNbaV0p
KSA8PCBpOworICB9CisgIGtleXMuZXJhc2Uoa2V5cy5iZWdpbigpICsgZXJhc2VfYmVnaW4sIGtl
eXMuYmVnaW4oKSArIGVyYXNlX2VuZCk7CisKKyAgYXV0byBsYXN0X2tleSA9IGtleXMuYmFjaygp
OworICBzaXplX3QgbGFzdF9rZXlfbnVtX3Byb2JlcyA9IEdldEhhc2h0YWJsZURlYnVnTnVtUHJv
YmVzKHQsIGxhc3Rfa2V5KTsKKworICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBoYXZlIHRvIG1ha2Ug
YSBsb3Qgb2YgcHJvYmVzIGZvciBsYXN0IGtleS4KKyAgQVNTRVJUX0dUKGxhc3Rfa2V5X251bV9w
cm9iZXMsIGtNaW5GdWxsR3JvdXBzKTsKKworICBpbnQgeCA9IDE7CisgIC8vIEluc2VydCBhbmQg
ZXJhc2Ugb25lIGVsZW1lbnQsIGJlZm9yZSBpbnBsYWNlIHJlaGFzaCBoYXBwZW4uCisgIHdoaWxl
IChsYXN0X2tleV9udW1fcHJvYmVzID09IEdldEhhc2h0YWJsZURlYnVnTnVtUHJvYmVzKHQsIGxh
c3Rfa2V5KSkgeworICAgIHQuZW1wbGFjZSh4KTsKKyAgICBBU1NFUlRfRVEoY2FwYWNpdHksIHQu
Y2FwYWNpdHkoKSk7CisgICAgLy8gQWxsIGVsZW1lbnRzIHNob3VsZCBiZSB0aGVyZS4KKyAgICBB
U1NFUlRfVFJVRSh0LmZpbmQoeCkgIT0gdC5lbmQoKSkgPDwgeDsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGsgOiBrZXlzKSB7CisgICAgICBBU1NFUlRfVFJVRSh0LmZpbmQoaykgIT0gdC5lbmQoKSkg
PDwgazsKKyAgICB9CisgICAgdC5lcmFzZSh4KTsKKyAgICArK3g7CisgIH0KK30KKworVEVTVChU
YWJsZSwgSW5zZXJ0RXJhc2VTdHJlc3NUZXN0KSB7CisgIEludFRhYmxlIHQ7CisgIGNvbnN0IHNp
emVfdCBrTWluRWxlbWVudENvdW50ID0gMjUwOworICBzdGQ6OmRlcXVlPGludD4ga2V5czsKKyAg
c2l6ZV90IGkgPSAwOworICBmb3IgKDsgaSA8IE1heERlbnNpdHlTaXplKGtNaW5FbGVtZW50Q291
bnQpOyArK2kpIHsKKyAgICB0LmVtcGxhY2UoaSk7CisgICAga2V5cy5wdXNoX2JhY2soaSk7Cisg
IH0KKyAgY29uc3Qgc2l6ZV90IGtOdW1JdGVyYXRpb25zID0gMTAwMDAwMDsKKyAgZm9yICg7IGkg
PCBrTnVtSXRlcmF0aW9uczsgKytpKSB7CisgICAgQVNTRVJUX0VRKDEsIHQuZXJhc2Uoa2V5cy5m
cm9udCgpKSk7CisgICAga2V5cy5wb3BfZnJvbnQoKTsKKyAgICB0LmVtcGxhY2UoaSk7CisgICAg
a2V5cy5wdXNoX2JhY2soaSk7CisgIH0KK30KKworVEVTVChUYWJsZSwgSW5zZXJ0T3ZlcmxvYWRz
KSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIC8vIFRoZXNlIHNob3VsZCBhbGwgdHJpZ2dlciB0aGUg
aW5zZXJ0KGluaXRfdHlwZSkgb3ZlcmxvYWQuCisgIHQuaW5zZXJ0KHt7fSwge319KTsKKyAgdC5p
bnNlcnQoeyJBQkMiLCB7fX0pOworICB0Lmluc2VydCh7IkRFRiIsICIhISEifSk7CisKKyAgRVhQ
RUNUX1RIQVQodCwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigiIiwgIiIpLCBQYWlyKCJBQkMi
LCAiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIoIkRFRiIs
ICIhISEiKSkpOworfQorCitURVNUKFRhYmxlLCBMYXJnZVRhYmxlKSB7CisgIEludFRhYmxlIHQ7
CisgIGZvciAoaW50NjRfdCBpID0gMDsgaSAhPSAxMDAwMDA7ICsraSkgdC5lbXBsYWNlKGkgPDwg
NDApOworICBmb3IgKGludDY0X3QgaSA9IDA7IGkgIT0gMTAwMDAwOyArK2kpIEFTU0VSVF9FUShp
IDw8IDQwLCAqdC5maW5kKGkgPDwgNDApKTsKK30KKworLy8gVGltZW91dCBpZiBjb3B5IGlzIHF1
YWRyYXRpYyBhcyBpdCB3YXMgaW4gUnVzdC4KK1RFU1QoVGFibGUsIEVuc3VyZU5vblF1YWRyYXRp
Y0FzSW5SdXN0KSB7CisgIHN0YXRpYyBjb25zdCBzaXplX3Qga0xhcmdlU2l6ZSA9IDEgPDwgMTU7
CisKKyAgSW50VGFibGUgdDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0ga0xhcmdlU2l6ZTsg
KytpKSB7CisgICAgdC5pbnNlcnQoaSk7CisgIH0KKworICAvLyBJZiB0aGlzIGlzIHF1YWRyYXRp
YywgdGhlIHRlc3Qgd2lsbCB0aW1lb3V0LgorICBJbnRUYWJsZSB0MjsKKyAgZm9yIChjb25zdCBh
dXRvJiBlbnRyeSA6IHQpIHQyLmluc2VydChlbnRyeSk7Cit9CisKK1RFU1QoVGFibGUsIENsZWFy
QnVnKSB7CisgIEludFRhYmxlIHQ7CisgIGNvbnN0ZXhwciBzaXplX3QgY2FwYWNpdHkgPSBjb250
YWluZXJfaW50ZXJuYWw6Okdyb3VwOjprV2lkdGggLSAxOworICBjb25zdGV4cHIgc2l6ZV90IG1h
eF9zaXplID0gY2FwYWNpdHkgLyAyOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heF9zaXpl
OyArK2kpIHsKKyAgICB0Lmluc2VydChpKTsKKyAgfQorICBBU1NFUlRfRVEoY2FwYWNpdHksIHQu
Y2FwYWNpdHkoKSk7CisgIGludHB0cl90IG9yaWdpbmFsID0gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oJip0LmZpbmQoMikpOworICB0LmNsZWFyKCk7CisgIEFTU0VSVF9FUShjYXBhY2l0eSwg
dC5jYXBhY2l0eSgpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhfc2l6ZTsgKytpKSB7
CisgICAgdC5pbnNlcnQoaSk7CisgIH0KKyAgQVNTRVJUX0VRKGNhcGFjaXR5LCB0LmNhcGFjaXR5
KCkpOworICBpbnRwdHJfdCBzZWNvbmQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90PigmKnQu
ZmluZCgyKSk7CisgIC8vIFdlIGFyZSBjaGVja2luZyB0aGF0IG9yaWdpbmFsIGFuZCBzZWNvbmQg
YXJlIGNsb3NlIGVub3VnaCB0byBlYWNoIG90aGVyCisgIC8vIHRoYXQgdGhleSBhcmUgcHJvYmFi
bHkgc3RpbGwgaW4gdGhlIHNhbWUgZ3JvdXAuICBUaGlzIGlzIG5vdCBzdHJpY3RseQorICAvLyBn
dWFyYW50ZWVkLgorICBFWFBFQ1RfTFQoc3RkOjphYnMob3JpZ2luYWwgLSBzZWNvbmQpLAorICAg
ICAgICAgICAgY2FwYWNpdHkgKiBzaXplb2YoSW50VGFibGU6OnZhbHVlX3R5cGUpKTsKK30KKwor
VEVTVChUYWJsZSwgRXJhc2UpIHsKKyAgSW50VGFibGUgdDsKKyAgRVhQRUNUX1RSVUUodC5maW5k
KDApID09IHQuZW5kKCkpOworICBhdXRvIHJlcyA9IHQuZW1wbGFjZSgwKTsKKyAgRVhQRUNUX1RS
VUUocmVzLnNlY29uZCk7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIHQuZXJhc2UocmVz
LmZpcnN0KTsKKyAgRVhQRUNUX0VRKDAsIHQuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUodC5maW5k
KDApID09IHQuZW5kKCkpOworfQorCisvLyBDb2xsZWN0IE4gYmFkIGtleXMgYnkgZm9sbG93aW5n
IGFsZ29yaXRobToKKy8vIDEuIENyZWF0ZSBhbiBlbXB0eSB0YWJsZSBhbmQgcmVzZXJ2ZSBpdCB0
byAyICogTi4KKy8vIDIuIEluc2VydCBOIHJhbmRvbSBlbGVtZW50cy4KKy8vIDMuIFRha2UgZmly
c3QgR3JvdXA6OmtXaWR0aCAtIDEgdG8gYmFkX2tleXMgYXJyYXkuCisvLyA0LiBDbGVhciB0aGUg
dGFibGUgd2l0aG91dCByZXNpemUuCisvLyA1LiBHbyB0byBwb2ludCAyIHdoaWxlIE4ga2V5cyBu
b3QgY29sbGVjdGVkCitzdGQ6OnZlY3RvcjxpbnQ2NF90PiBDb2xsZWN0QmFkTWVyZ2VLZXlzKHNp
emVfdCBOKSB7CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtHcm91cFNpemUgPSBHcm91cDo6a1dp
ZHRoIC0gMTsKKworICBhdXRvIHRvcGtfcmFuZ2UgPSBbXShzaXplX3QgYiwgc2l6ZV90IGUsIElu
dFRhYmxlKiB0KSAtPiBzdGQ6OnZlY3RvcjxpbnQ2NF90PiB7CisgICAgZm9yIChzaXplX3QgaSA9
IGI7IGkgIT0gZTsgKytpKSB7CisgICAgICB0LT5lbXBsYWNlKGkpOworICAgIH0KKyAgICBzdGQ6
OnZlY3RvcjxpbnQ2NF90PiByZXM7CisgICAgcmVzLnJlc2VydmUoa0dyb3VwU2l6ZSk7CisgICAg
YXV0byBpdCA9IHQtPmJlZ2luKCk7CisgICAgZm9yIChzaXplX3QgaSA9IGI7IGkgIT0gZSAmJiBp
ICE9IGIgKyBrR3JvdXBTaXplOyArK2ksICsraXQpIHsKKyAgICAgIHJlcy5wdXNoX2JhY2soKml0
KTsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKKyAgfTsKKworICBzdGQ6OnZlY3RvcjxpbnQ2NF90
PiBiYWRfa2V5czsKKyAgYmFkX2tleXMucmVzZXJ2ZShOKTsKKyAgSW50VGFibGUgdDsKKyAgdC5y
ZXNlcnZlKE4gKiAyKTsKKworICBmb3IgKHNpemVfdCBiID0gMDsgYmFkX2tleXMuc2l6ZSgpIDwg
TjsgYiArPSBOKSB7CisgICAgYXV0byBrZXlzID0gdG9wa19yYW5nZShiLCBiICsgTiwgJnQpOwor
ICAgIGJhZF9rZXlzLmluc2VydChiYWRfa2V5cy5lbmQoKSwga2V5cy5iZWdpbigpLCBrZXlzLmVu
ZCgpKTsKKyAgICB0LmVyYXNlKHQuYmVnaW4oKSwgdC5lbmQoKSk7CisgICAgRVhQRUNUX1RSVUUo
dC5lbXB0eSgpKTsKKyAgfQorICByZXR1cm4gYmFkX2tleXM7Cit9CisKK3N0cnVjdCBQcm9iZVN0
YXRzIHsKKyAgLy8gTnVtYmVyIG9mIGVsZW1lbnRzIHdpdGggc3BlY2lmaWMgcHJvYmUgbGVuZ3Ro
IG92ZXIgYWxsIHRlc3RlZCB0YWJsZXMuCisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gYWxsX3Byb2Jl
c19oaXN0b2dyYW07CisgIC8vIFJhdGlvcyB0b3RhbF9wcm9iZV9sZW5ndGgvc2l6ZSBmb3IgZXZl
cnkgdGVzdGVkIHRhYmxlLgorICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHNpbmdsZV90YWJsZV9yYXRp
b3M7CisKKyAgZnJpZW5kIFByb2JlU3RhdHMgb3BlcmF0b3IrKGNvbnN0IFByb2JlU3RhdHMmIGEs
IGNvbnN0IFByb2JlU3RhdHMmIGIpIHsKKyAgICBQcm9iZVN0YXRzIHJlcyA9IGE7CisgICAgcmVz
LmFsbF9wcm9iZXNfaGlzdG9ncmFtLnJlc2l6ZShzdGQ6Om1heChyZXMuYWxsX3Byb2Jlc19oaXN0
b2dyYW0uc2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYi5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5zaXplKCkpKTsKKyAgICBzdGQ6OnRyYW5zZm9ybShi
LmFsbF9wcm9iZXNfaGlzdG9ncmFtLmJlZ2luKCksIGIuYWxsX3Byb2Jlc19oaXN0b2dyYW0uZW5k
KCksCisgICAgICAgICAgICAgICAgICAgcmVzLmFsbF9wcm9iZXNfaGlzdG9ncmFtLmJlZ2luKCks
CisgICAgICAgICAgICAgICAgICAgcmVzLmFsbF9wcm9iZXNfaGlzdG9ncmFtLmJlZ2luKCksIHN0
ZDo6cGx1czxzaXplX3Q+KCkpOworICAgIHJlcy5zaW5nbGVfdGFibGVfcmF0aW9zLmluc2VydChy
ZXMuc2luZ2xlX3RhYmxlX3JhdGlvcy5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYi5zaW5nbGVfdGFibGVfcmF0aW9zLmJlZ2luKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGIuc2luZ2xlX3RhYmxlX3JhdGlvcy5lbmQoKSk7CisgICAgcmV0
dXJuIHJlczsKKyAgfQorCisgIC8vIEF2ZXJhZ2UgcmF0aW8gdG90YWxfcHJvYmVfbGVuZ3RoL3Np
emUgb3ZlciB0YWJsZXMuCisgIGRvdWJsZSBBdmdSYXRpbygpIGNvbnN0IHsKKyAgICByZXR1cm4g
c3RkOjphY2N1bXVsYXRlKHNpbmdsZV90YWJsZV9yYXRpb3MuYmVnaW4oKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpbmdsZV90YWJsZV9yYXRpb3MuZW5kKCksIDAuMCkgLworICAgICAg
ICAgICBzaW5nbGVfdGFibGVfcmF0aW9zLnNpemUoKTsKKyAgfQorCisgIC8vIE1heGltdW0gcmF0
aW8gdG90YWxfcHJvYmVfbGVuZ3RoL3NpemUgb3ZlciB0YWJsZXMuCisgIGRvdWJsZSBNYXhSYXRp
bygpIGNvbnN0IHsKKyAgICByZXR1cm4gKnN0ZDo6bWF4X2VsZW1lbnQoc2luZ2xlX3RhYmxlX3Jh
dGlvcy5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVfdGFibGVf
cmF0aW9zLmVuZCgpKTsKKyAgfQorCisgIC8vIFBlcmNlbnRpbGUgcmF0aW8gdG90YWxfcHJvYmVf
bGVuZ3RoL3NpemUgb3ZlciB0YWJsZXMuCisgIGRvdWJsZSBQZXJjZW50aWxlUmF0aW8oZG91Ymxl
IFBlcmNlbnRpbGUgPSAwLjk1KSBjb25zdCB7CisgICAgYXV0byByID0gc2luZ2xlX3RhYmxlX3Jh
dGlvczsKKyAgICBhdXRvIG1pZCA9IHIuYmVnaW4oKSArIHN0YXRpY19jYXN0PHNpemVfdD4oci5z
aXplKCkgKiBQZXJjZW50aWxlKTsKKyAgICBpZiAobWlkICE9IHIuZW5kKCkpIHsKKyAgICAgIHN0
ZDo6bnRoX2VsZW1lbnQoci5iZWdpbigpLCBtaWQsIHIuZW5kKCkpOworICAgICAgcmV0dXJuICpt
aWQ7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBNYXhSYXRpbygpOworICAgIH0KKyAgfQor
CisgIC8vIE1heGltdW0gcHJvYmUgbGVuZ3RoIG92ZXIgYWxsIGVsZW1lbnRzIGFuZCBhbGwgdGFi
bGVzLgorICBzaXplX3QgTWF4UHJvYmUoKSBjb25zdCB7IHJldHVybiBhbGxfcHJvYmVzX2hpc3Rv
Z3JhbS5zaXplKCk7IH0KKworICAvLyBGcmFjdGlvbiBvZiBlbGVtZW50cyB3aXRoIHNwZWNpZmll
ZCBwcm9iZSBsZW5ndGguCisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gUHJvYmVOb3JtYWxpemVkSGlz
dG9ncmFtKCkgY29uc3QgeworICAgIGRvdWJsZSB0b3RhbF9lbGVtZW50cyA9IHN0ZDo6YWNjdW11
bGF0ZShhbGxfcHJvYmVzX2hpc3RvZ3JhbS5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbGxfcHJvYmVzX2hpc3RvZ3JhbS5lbmQoKSwgMHVsbCk7
CisgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiByZXM7CisgICAgZm9yIChzaXplX3QgcCA6IGFsbF9w
cm9iZXNfaGlzdG9ncmFtKSB7CisgICAgICByZXMucHVzaF9iYWNrKHAgLyB0b3RhbF9lbGVtZW50
cyk7CisgICAgfQorICAgIHJldHVybiByZXM7CisgIH0KKworICBzaXplX3QgUGVyY2VudGlsZVBy
b2JlKGRvdWJsZSBQZXJjZW50aWxlID0gMC45OSkgY29uc3QgeworICAgIHNpemVfdCBpZHggPSAw
OworICAgIGZvciAoZG91YmxlIHAgOiBQcm9iZU5vcm1hbGl6ZWRIaXN0b2dyYW0oKSkgeworICAg
ICAgaWYgKFBlcmNlbnRpbGUgPiBwKSB7CisgICAgICAgIFBlcmNlbnRpbGUgLT0gcDsKKyAgICAg
ICAgKytpZHg7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gaWR4OworICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gaWR4OworICB9CisKKyAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3I8PChzdGQ6Om9zdHJlYW0mIG91dCwgY29uc3QgUHJvYmVTdGF0cyYgcykgeworICAgIG91
dCA8PCAie0F2Z1JhdGlvOiIgPDwgcy5BdmdSYXRpbygpIDw8ICIsIE1heFJhdGlvOiIgPDwgcy5N
YXhSYXRpbygpCisgICAgICAgIDw8ICIsIFBlcmNlbnRpbGVSYXRpbzoiIDw8IHMuUGVyY2VudGls
ZVJhdGlvKCkKKyAgICAgICAgPDwgIiwgTWF4UHJvYmU6IiA8PCBzLk1heFByb2JlKCkgPDwgIiwg
UHJvYmVzPVsiOworICAgIGZvciAoZG91YmxlIHAgOiBzLlByb2JlTm9ybWFsaXplZEhpc3RvZ3Jh
bSgpKSB7CisgICAgICBvdXQgPDwgcCA8PCAiLCI7CisgICAgfQorICAgIG91dCA8PCAiXX0iOwor
CisgICAgcmV0dXJuIG91dDsKKyAgfQorfTsKKworc3RydWN0IEV4cGVjdGVkU3RhdHMgeworICBk
b3VibGUgYXZnX3JhdGlvOworICBkb3VibGUgbWF4X3JhdGlvOworICBzdGQ6OnZlY3RvcjxzdGQ6
OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBwZWNlbnRpbGVfcmF0aW9zOworICBzdGQ6OnZlY3Rvcjxz
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBwZWNlbnRpbGVfcHJvYmVzOworCisgIGZyaWVuZCBz
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0IEV4cGVjdGVk
U3RhdHMmIHMpIHsKKyAgICBvdXQgPDwgIntBdmdSYXRpbzoiIDw8IHMuYXZnX3JhdGlvIDw8ICIs
IE1heFJhdGlvOiIgPDwgcy5tYXhfcmF0aW8KKyAgICAgICAgPDwgIiwgUGVyY2VudGlsZVJhdGlv
czogWyI7CisgICAgZm9yIChhdXRvIGVsIDogcy5wZWNlbnRpbGVfcmF0aW9zKSB7CisgICAgICBv
dXQgPDwgZWwuZmlyc3QgPDwgIjoiIDw8IGVsLnNlY29uZCA8PCAiLCAiOworICAgIH0KKyAgICBv
dXQgPDwgIl0sIFBlcmNlbnRpbGVQcm9iZXM6IFsiOworICAgIGZvciAoYXV0byBlbCA6IHMucGVj
ZW50aWxlX3Byb2JlcykgeworICAgICAgb3V0IDw8IGVsLmZpcnN0IDw8ICI6IiA8PCBlbC5zZWNv
bmQgPDwgIiwgIjsKKyAgICB9CisgICAgb3V0IDw8ICJdfSI7CisKKyAgICByZXR1cm4gb3V0Owor
ICB9Cit9OworCit2b2lkIFZlcmlmeVN0YXRzKHNpemVfdCBzaXplLCBjb25zdCBFeHBlY3RlZFN0
YXRzJiBleHAsCisgICAgICAgICAgICAgICAgIGNvbnN0IFByb2JlU3RhdHMmIHN0YXRzKSB7Cisg
IEVYUEVDVF9MVChzdGF0cy5BdmdSYXRpbygpLCBleHAuYXZnX3JhdGlvKSA8PCBzaXplIDw8ICIg
IiA8PCBzdGF0czsKKyAgRVhQRUNUX0xUKHN0YXRzLk1heFJhdGlvKCksIGV4cC5tYXhfcmF0aW8p
IDw8IHNpemUgPDwgIiAiIDw8IHN0YXRzOworICBmb3IgKGF1dG8gcHIgOiBleHAucGVjZW50aWxl
X3JhdGlvcykgeworICAgIEVYUEVDVF9MRShzdGF0cy5QZXJjZW50aWxlUmF0aW8ocHIuZmlyc3Qp
LCBwci5zZWNvbmQpCisgICAgICAgIDw8IHNpemUgPDwgIiAiIDw8IHByLmZpcnN0IDw8ICIgIiA8
PCBzdGF0czsKKyAgfQorCisgIGZvciAoYXV0byBwciA6IGV4cC5wZWNlbnRpbGVfcHJvYmVzKSB7
CisgICAgRVhQRUNUX0xFKHN0YXRzLlBlcmNlbnRpbGVQcm9iZShwci5maXJzdCksIHByLnNlY29u
ZCkKKyAgICAgICAgPDwgc2l6ZSA8PCAiICIgPDwgcHIuZmlyc3QgPDwgIiAiIDw8IHN0YXRzOwor
ICB9Cit9CisKK3VzaW5nIFByb2JlU3RhdHNQZXJTaXplID0gc3RkOjptYXA8c2l6ZV90LCBQcm9i
ZVN0YXRzPjsKKworLy8gQ29sbGVjdCB0b3RhbCBQcm9iZVN0YXRzIG9uIG51bV9pdGVycyBpdGVy
YXRpb25zIG9mIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOgorLy8gMS4gQ3JlYXRlIG5ldyB0YWJs
ZSBhbmQgcmVzZXJ2ZSBpdCB0byBrZXlzLnNpemUoKSAqIDIKKy8vIDIuIEluc2VydCBhbGwga2V5
cyB4b3JlZCB3aXRoIHNlZWQKKy8vIDMuIENvbGxlY3QgUHJvYmVTdGF0cyBmcm9tIGZpbmFsIHRh
YmxlLgorUHJvYmVTdGF0cyBDb2xsZWN0UHJvYmVTdGF0c09uS2V5c1hvcmVkV2l0aFNlZWQoY29u
c3Qgc3RkOjp2ZWN0b3I8aW50NjRfdD4mIGtleXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2l0ZXJzKSB7CisgIGNvbnN0IHNpemVf
dCByZXNlcnZlX3NpemUgPSBrZXlzLnNpemUoKSAqIDI7CisKKyAgUHJvYmVTdGF0cyBzdGF0czsK
KworICBpbnQ2NF90IHNlZWQgPSAweDcxYjFhMTliOTA3ZDZlMzM7CisgIHdoaWxlIChudW1faXRl
cnMtLSkgeworICAgIHNlZWQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGF0aWNfY2FzdDx1aW50
NjRfdD4oc2VlZCkgKiAxNyArIDEzKTsKKyAgICBJbnRUYWJsZSB0MTsKKyAgICB0MS5yZXNlcnZl
KHJlc2VydmVfc2l6ZSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBrZXlzKSB7CisgICAg
ICB0MS5lbXBsYWNlKGtleSBeIHNlZWQpOworICAgIH0KKworICAgIGF1dG8gcHJvYmVfaGlzdG9n
cmFtID0gR2V0SGFzaHRhYmxlRGVidWdOdW1Qcm9iZXNIaXN0b2dyYW0odDEpOworICAgIHN0YXRz
LmFsbF9wcm9iZXNfaGlzdG9ncmFtLnJlc2l6ZSgKKyAgICAgICAgc3RkOjptYXgoc3RhdHMuYWxs
X3Byb2Jlc19oaXN0b2dyYW0uc2l6ZSgpLCBwcm9iZV9oaXN0b2dyYW0uc2l6ZSgpKSk7CisgICAg
c3RkOjp0cmFuc2Zvcm0ocHJvYmVfaGlzdG9ncmFtLmJlZ2luKCksIHByb2JlX2hpc3RvZ3JhbS5l
bmQoKSwKKyAgICAgICAgICAgICAgICAgICBzdGF0cy5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5iZWdp
bigpLAorICAgICAgICAgICAgICAgICAgIHN0YXRzLmFsbF9wcm9iZXNfaGlzdG9ncmFtLmJlZ2lu
KCksIHN0ZDo6cGx1czxzaXplX3Q+KCkpOworCisgICAgc2l6ZV90IHRvdGFsX3Byb2JlX3NlcV9s
ZW5ndGggPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvYmVfaGlzdG9ncmFtLnNp
emUoKTsgKytpKSB7CisgICAgICB0b3RhbF9wcm9iZV9zZXFfbGVuZ3RoICs9IGkgKiBwcm9iZV9o
aXN0b2dyYW1baV07CisgICAgfQorICAgIHN0YXRzLnNpbmdsZV90YWJsZV9yYXRpb3MucHVzaF9i
YWNrKHRvdGFsX3Byb2JlX3NlcV9sZW5ndGggKiAxLjAgLworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtleXMuc2l6ZSgpKTsKKyAgICB0MS5lcmFzZSh0MS5iZWdpbigp
LCB0MS5lbmQoKSk7CisgIH0KKyAgcmV0dXJuIHN0YXRzOworfQorCitFeHBlY3RlZFN0YXRzIFhv
clNlZWRFeHBlY3RlZFN0YXRzKCkgeworICBjb25zdGV4cHIgYm9vbCBrUmFuZG9taXplc0luc2Vy
dHMgPQorI2lmIE5ERUJVRworICAgICAgZmFsc2U7CisjZWxzZSAgIC8vIE5ERUJVRworICAgICAg
dHJ1ZTsKKyNlbmRpZiAgLy8gTkRFQlVHCisKKyAgLy8gVGhlIGVmZmVjdGl2ZSBsb2FkIGZhY3Rv
ciBpcyBsYXJnZXIgaW4gbm9uLW9wdCBtb2RlIGJlY2F1c2Ugd2UgaW5zZXJ0CisgIC8vIGVsZW1l
bnRzIG91dCBvZiBvcmRlci4KKyAgc3dpdGNoIChjb250YWluZXJfaW50ZXJuYWw6Okdyb3VwOjpr
V2lkdGgpIHsKKyAgICBjYXNlIDg6CisgICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7Cisg
IHJldHVybiB7MC4wNSwKKyAgICAgICAgICAxLjAsCisgICAgICAgICAge3swLjk1LCAwLjV9fSwK
KyAgICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgMn0sIHswLjk5OSwgNH0sIHswLjk5OTksIDEw
fX19OworICAgICAgfSBlbHNlIHsKKyAgcmV0dXJuIHswLjA1LAorICAgICAgICAgIDIuMCwKKyAg
ICAgICAgICB7ezAuOTUsIDAuMX19LAorICAgICAgICAgIHt7MC45NSwgMH0sIHswLjk5LCAyfSwg
ezAuOTk5LCA0fSwgezAuOTk5OSwgMTB9fX07CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBj
YXNlIDE2OgorICAgICAgaWYgKGtSYW5kb21pemVzSW5zZXJ0cykgeworICAgICAgICByZXR1cm4g
ezAuMSwKKyAgICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgICAge3swLjk1LCAwLjF9
fSwKKyAgICAgICAgICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgMX0sIHswLjk5OSwgOH0sIHsw
Ljk5OTksIDE1fX19OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHswLjA1LAorICAg
ICAgICAgICAgICAgIDEuMCwKKyAgICAgICAgICAgICAgICB7ezAuOTUsIDAuMDV9fSwKKyAgICAg
ICAgICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgMX0sIHswLjk5OSwgNH0sIHswLjk5OTksIDEw
fX19OworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEFCU0xfUkFX
X0xPRyhGQVRBTCwgIiVzIiwgIlVua25vd24gR3JvdXAgd2lkdGgiKTsKKyAgfQorICByZXR1cm4g
e307Cit9CitURVNUKFRhYmxlLCBESVNBQkxFRF9FbnN1cmVOb25RdWFkcmF0aWNUb3BOWG9yU2Vl
ZEJ5UHJvYmVTZXFMZW5ndGgpIHsKKyAgUHJvYmVTdGF0c1BlclNpemUgc3RhdHM7CisgIHN0ZDo6
dmVjdG9yPHNpemVfdD4gc2l6ZXMgPSB7R3JvdXA6OmtXaWR0aCA8PCA1LCBHcm91cDo6a1dpZHRo
IDw8IDEwfTsKKyAgZm9yIChzaXplX3Qgc2l6ZSA6IHNpemVzKSB7CisgICAgc3RhdHNbc2l6ZV0g
PQorICAgICAgICBDb2xsZWN0UHJvYmVTdGF0c09uS2V5c1hvcmVkV2l0aFNlZWQoQ29sbGVjdEJh
ZE1lcmdlS2V5cyhzaXplKSwgMjAwKTsKKyAgfQorICBhdXRvIGV4cGVjdGVkID0gWG9yU2VlZEV4
cGVjdGVkU3RhdHMoKTsKKyAgZm9yIChzaXplX3Qgc2l6ZSA6IHNpemVzKSB7CisgICAgYXV0byYg
c3RhdCA9IHN0YXRzW3NpemVdOworICAgIFZlcmlmeVN0YXRzKHNpemUsIGV4cGVjdGVkLCBzdGF0
KTsKKyAgfQorfQorCisvLyBDb2xsZWN0IHRvdGFsIFByb2JlU3RhdHMgb24gbnVtX2l0ZXJzIGl0
ZXJhdGlvbnMgb2YgdGhlIGZvbGxvd2luZyBhbGdvcml0aG06CisvLyAxLiBDcmVhdGUgbmV3IHRh
YmxlCisvLyAyLiBTZWxlY3QgMTAlIG9mIGtleXMgYW5kIGluc2VydCAxMCBlbGVtZW50cyBrZXkg
KiAxNyArIGogKiAxMworLy8gMy4gQ29sbGVjdCBQcm9iZVN0YXRzIGZyb20gZmluYWwgdGFibGUK
K1Byb2JlU3RhdHMgQ29sbGVjdFByb2JlU3RhdHNPbkxpbmVhcmx5VHJhbnNmb3JtZWRLZXlzKAor
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGludDY0X3Q+JiBrZXlzLCBzaXplX3QgbnVtX2l0ZXJzKSB7
CisgIFByb2JlU3RhdHMgc3RhdHM7CisKKyAgc3RkOjpyYW5kb21fZGV2aWNlIHJkOworICBzdGQ6
Om10MTk5Mzcgcm5nKHJkKCkpOworICBhdXRvIGxpbmVhcl90cmFuc2Zvcm0gPSBbXShzaXplX3Qg
eCwgc2l6ZV90IHkpIHsgcmV0dXJuIHggKiAxNyArIHkgKiAxMzsgfTsKKyAgc3RkOjp1bmlmb3Jt
X2ludF9kaXN0cmlidXRpb248c2l6ZV90PiBkaXN0KDAsIGtleXMuc2l6ZSgpLTEpOworICB3aGls
ZSAobnVtX2l0ZXJzLS0pIHsKKyAgICBJbnRUYWJsZSB0MTsKKyAgICBzaXplX3QgbnVtX2tleXMg
PSBrZXlzLnNpemUoKSAvIDEwOworICAgIHNpemVfdCBzdGFydCA9IGRpc3Qocm5nKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSAhPSBudW1fa2V5czsgKytpKSB7CisgICAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiAhPSAxMDsgKytqKSB7CisgICAgICAgIHQxLmVtcGxhY2UobGluZWFyX3RyYW5z
Zm9ybShrZXlzWyhpICsgc3RhcnQpICUga2V5cy5zaXplKCldLCBqKSk7CisgICAgICB9CisgICAg
fQorCisgICAgYXV0byBwcm9iZV9oaXN0b2dyYW0gPSBHZXRIYXNodGFibGVEZWJ1Z051bVByb2Jl
c0hpc3RvZ3JhbSh0MSk7CisgICAgc3RhdHMuYWxsX3Byb2Jlc19oaXN0b2dyYW0ucmVzaXplKAor
ICAgICAgICBzdGQ6Om1heChzdGF0cy5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5zaXplKCksIHByb2Jl
X2hpc3RvZ3JhbS5zaXplKCkpKTsKKyAgICBzdGQ6OnRyYW5zZm9ybShwcm9iZV9oaXN0b2dyYW0u
YmVnaW4oKSwgcHJvYmVfaGlzdG9ncmFtLmVuZCgpLAorICAgICAgICAgICAgICAgICAgIHN0YXRz
LmFsbF9wcm9iZXNfaGlzdG9ncmFtLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgc3RhdHMu
YWxsX3Byb2Jlc19oaXN0b2dyYW0uYmVnaW4oKSwgc3RkOjpwbHVzPHNpemVfdD4oKSk7CisKKyAg
ICBzaXplX3QgdG90YWxfcHJvYmVfc2VxX2xlbmd0aCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcm9iZV9oaXN0b2dyYW0uc2l6ZSgpOyArK2kpIHsKKyAgICAgIHRvdGFsX3Byb2Jl
X3NlcV9sZW5ndGggKz0gaSAqIHByb2JlX2hpc3RvZ3JhbVtpXTsKKyAgICB9CisgICAgc3RhdHMu
c2luZ2xlX3RhYmxlX3JhdGlvcy5wdXNoX2JhY2sodG90YWxfcHJvYmVfc2VxX2xlbmd0aCAqIDEu
MCAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDEuc2l6ZSgpKTsK
KyAgICB0MS5lcmFzZSh0MS5iZWdpbigpLCB0MS5lbmQoKSk7CisgIH0KKyAgcmV0dXJuIHN0YXRz
OworfQorCitFeHBlY3RlZFN0YXRzIExpbmVhclRyYW5zZm9ybUV4cGVjdGVkU3RhdHMoKSB7Cisg
IGNvbnN0ZXhwciBib29sIGtSYW5kb21pemVzSW5zZXJ0cyA9CisjaWYgTkRFQlVHCisgICAgICBm
YWxzZTsKKyNlbHNlICAgLy8gTkRFQlVHCisgICAgICB0cnVlOworI2VuZGlmICAvLyBOREVCVUcK
KworICAvLyBUaGUgZWZmZWN0aXZlIGxvYWQgZmFjdG9yIGlzIGxhcmdlciBpbiBub24tb3B0IG1v
ZGUgYmVjYXVzZSB3ZSBpbnNlcnQKKyAgLy8gZWxlbWVudHMgb3V0IG9mIG9yZGVyLgorICBzd2l0
Y2ggKGNvbnRhaW5lcl9pbnRlcm5hbDo6R3JvdXA6OmtXaWR0aCkgeworICAgIGNhc2UgODoKKyAg
ICAgIGlmIChrUmFuZG9taXplc0luc2VydHMpIHsKKyAgICAgICAgcmV0dXJuIHswLjEsCisgICAg
ICAgICAgICAgICAgMC41LAorICAgICAgICAgICAgICAgIHt7MC45NSwgMC4zfX0sCisgICAgICAg
ICAgICAgICAge3swLjk1LCAwfSwgezAuOTksIDF9LCB7MC45OTksIDh9LCB7MC45OTk5LCAxNX19
fTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiB7MC4xNSwKKyAgICAgICAgICAgICAg
ICAwLjUsCisgICAgICAgICAgICAgICAge3swLjk1LCAwLjN9fSwKKyAgICAgICAgICAgICAgICB7
ezAuOTUsIDB9LCB7MC45OSwgM30sIHswLjk5OSwgMTV9LCB7MC45OTk5LCAyNX19fTsKKyAgICAg
IH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNl
cnRzKSB7CisgICAgICAgIHJldHVybiB7MC4xLAorICAgICAgICAgICAgICAgIDAuNCwKKyAgICAg
ICAgICAgICAgICB7ezAuOTUsIDAuM319LAorICAgICAgICAgICAgICAgIHt7MC45NSwgMH0sIHsw
Ljk5LCAxfSwgezAuOTk5LCA4fSwgezAuOTk5OSwgMTV9fX07CisgICAgICB9IGVsc2UgeworICAg
ICAgICByZXR1cm4gezAuMDUsCisgICAgICAgICAgICAgICAgMC4yLAorICAgICAgICAgICAgICAg
IHt7MC45NSwgMC4xfX0sCisgICAgICAgICAgICAgICAge3swLjk1LCAwfSwgezAuOTksIDF9LCB7
MC45OTksIDZ9LCB7MC45OTk5LCAxMH19fTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICBBQlNMX1JBV19MT0coRkFUQUwsICIlcyIsICJVbmtub3duIEdyb3VwIHdp
ZHRoIik7CisgIH0KKyAgcmV0dXJuIHt9OworfQorVEVTVChUYWJsZSwgRElTQUJMRURfRW5zdXJl
Tm9uUXVhZHJhdGljVG9wTkxpbmVhclRyYW5zZm9ybUJ5UHJvYmVTZXFMZW5ndGgpIHsKKyAgUHJv
YmVTdGF0c1BlclNpemUgc3RhdHM7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gc2l6ZXMgPSB7R3Jv
dXA6OmtXaWR0aCA8PCA1LCBHcm91cDo6a1dpZHRoIDw8IDEwfTsKKyAgZm9yIChzaXplX3Qgc2l6
ZSA6IHNpemVzKSB7CisgICAgc3RhdHNbc2l6ZV0gPSBDb2xsZWN0UHJvYmVTdGF0c09uTGluZWFy
bHlUcmFuc2Zvcm1lZEtleXMoCisgICAgICAgIENvbGxlY3RCYWRNZXJnZUtleXMoc2l6ZSksIDMw
MCk7CisgIH0KKyAgYXV0byBleHBlY3RlZCA9IExpbmVhclRyYW5zZm9ybUV4cGVjdGVkU3RhdHMo
KTsKKyAgZm9yIChzaXplX3Qgc2l6ZSA6IHNpemVzKSB7CisgICAgYXV0byYgc3RhdCA9IHN0YXRz
W3NpemVdOworICAgIFZlcmlmeVN0YXRzKHNpemUsIGV4cGVjdGVkLCBzdGF0KTsKKyAgfQorfQor
CitURVNUKFRhYmxlLCBFcmFzZUNvbGxpc2lvbikgeworICBCYWRUYWJsZSB0OworCisgIC8vIDEg
MiAzCisgIHQuZW1wbGFjZSgxKTsKKyAgdC5lbXBsYWNlKDIpOworICB0LmVtcGxhY2UoMyk7Cisg
IEVYUEVDVF9USEFUKCp0LmZpbmQoMSksIDEpOworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDIpLCAy
KTsKKyAgRVhQRUNUX1RIQVQoKnQuZmluZCgzKSwgMyk7CisgIEVYUEVDVF9FUSgzLCB0LnNpemUo
KSk7CisKKyAgLy8gMSBERUxFVEVEIDMKKyAgdC5lcmFzZSh0LmZpbmQoMikpOworICBFWFBFQ1Rf
VEhBVCgqdC5maW5kKDEpLCAxKTsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDIpID09IHQuZW5kKCkp
OworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDMpLCAzKTsKKyAgRVhQRUNUX0VRKDIsIHQuc2l6ZSgp
KTsKKworICAvLyBERUxFVEVEIERFTEVURUQgMworICB0LmVyYXNlKHQuZmluZCgxKSk7CisgIEVY
UEVDVF9UUlVFKHQuZmluZCgxKSA9PSB0LmVuZCgpKTsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDIp
ID09IHQuZW5kKCkpOworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDMpLCAzKTsKKyAgRVhQRUNUX0VR
KDEsIHQuc2l6ZSgpKTsKKworICAvLyBERUxFVEVEIERFTEVURUQgREVMRVRFRAorICB0LmVyYXNl
KHQuZmluZCgzKSk7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgxKSA9PSB0LmVuZCgpKTsKKyAgRVhQ
RUNUX1RSVUUodC5maW5kKDIpID09IHQuZW5kKCkpOworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMykg
PT0gdC5lbmQoKSk7CisgIEVYUEVDVF9FUSgwLCB0LnNpemUoKSk7Cit9CisKK1RFU1QoVGFibGUs
IEVyYXNlSW5zZXJ0UHJvYmluZykgeworICBCYWRUYWJsZSB0KDEwMCk7CisKKyAgLy8gMSAyIDMg
NAorICB0LmVtcGxhY2UoMSk7CisgIHQuZW1wbGFjZSgyKTsKKyAgdC5lbXBsYWNlKDMpOworICB0
LmVtcGxhY2UoNCk7CisKKyAgLy8gMSBERUxFVEVEIDMgREVMRVRFRAorICB0LmVyYXNlKHQuZmlu
ZCgyKSk7CisgIHQuZXJhc2UodC5maW5kKDQpKTsKKworICAvLyAxIDEwIDMgMTEgMTIKKyAgdC5l
bXBsYWNlKDEwKTsKKyAgdC5lbXBsYWNlKDExKTsKKyAgdC5lbXBsYWNlKDEyKTsKKworICBFWFBF
Q1RfRVEoNSwgdC5zaXplKCkpOworICBFWFBFQ1RfVEhBVCh0LCBVbm9yZGVyZWRFbGVtZW50c0Fy
ZSgxLCAxMCwgMywgMTEsIDEyKSk7Cit9CisKK1RFU1QoVGFibGUsIENsZWFyKSB7CisgIEludFRh
YmxlIHQ7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsKKyAgdC5jbGVhcigp
OworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7CisgIGF1dG8gcmVzID0gdC5l
bXBsYWNlKDApOworICBFWFBFQ1RfVFJVRShyZXMuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKDEsIHQu
c2l6ZSgpKTsKKyAgdC5jbGVhcigpOworICBFWFBFQ1RfRVEoMCwgdC5zaXplKCkpOworICBFWFBF
Q1RfVFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7Cit9CisKK1RFU1QoVGFibGUsIFN3YXApIHsK
KyAgSW50VGFibGUgdDsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDApID09IHQuZW5kKCkpOworICBh
dXRvIHJlcyA9IHQuZW1wbGFjZSgwKTsKKyAgRVhQRUNUX1RSVUUocmVzLnNlY29uZCk7CisgIEVY
UEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIEludFRhYmxlIHU7CisgIHQuc3dhcCh1KTsKKyAgRVhQ
RUNUX0VRKDAsIHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAgRVhQRUNU
X1RSVUUodC5maW5kKDApID09IHQuZW5kKCkpOworICBFWFBFQ1RfVEhBVCgqdS5maW5kKDApLCAw
KTsKK30KKworVEVTVChUYWJsZSwgUmVoYXNoKSB7CisgIEludFRhYmxlIHQ7CisgIEVYUEVDVF9U
UlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsKKyAgdC5lbXBsYWNlKDApOworICB0LmVtcGxhY2Uo
MSk7CisgIEVYUEVDVF9FUSgyLCB0LnNpemUoKSk7CisgIHQucmVoYXNoKDEyOCk7CisgIEVYUEVD
VF9FUSgyLCB0LnNpemUoKSk7CisgIEVYUEVDVF9USEFUKCp0LmZpbmQoMCksIDApOworICBFWFBF
Q1RfVEhBVCgqdC5maW5kKDEpLCAxKTsKK30KKworVEVTVChUYWJsZSwgUmVoYXNoRG9lc05vdFJl
aGFzaFdoZW5Ob3ROZWNlc3NhcnkpIHsKKyAgSW50VGFibGUgdDsKKyAgdC5lbXBsYWNlKDApOwor
ICB0LmVtcGxhY2UoMSk7CisgIGF1dG8qIHAgPSAmKnQuZmluZCgwKTsKKyAgdC5yZWhhc2goMSk7
CisgIEVYUEVDVF9FUShwLCAmKnQuZmluZCgwKSk7Cit9CisKK1RFU1QoVGFibGUsIFJlaGFzaFpl
cm9Eb2VzTm90QWxsb2NhdGVPbkVtcHR5VGFibGUpIHsKKyAgSW50VGFibGUgdDsKKyAgdC5yZWhh
c2goMCk7CisgIEVYUEVDVF9FUSgwLCB0LmJ1Y2tldF9jb3VudCgpKTsKK30KKworVEVTVChUYWJs
ZSwgUmVoYXNoWmVyb0RlYWxsb2NhdGVzRW1wdHlUYWJsZSkgeworICBJbnRUYWJsZSB0OworICB0
LmVtcGxhY2UoMCk7CisgIHQuY2xlYXIoKTsKKyAgRVhQRUNUX05FKDAsIHQuYnVja2V0X2NvdW50
KCkpOworICB0LnJlaGFzaCgwKTsKKyAgRVhQRUNUX0VRKDAsIHQuYnVja2V0X2NvdW50KCkpOwor
fQorCitURVNUKFRhYmxlLCBSZWhhc2haZXJvRm9yY2VzUmVoYXNoKSB7CisgIEludFRhYmxlIHQ7
CisgIHQuZW1wbGFjZSgwKTsKKyAgdC5lbXBsYWNlKDEpOworICBhdXRvKiBwID0gJip0LmZpbmQo
MCk7CisgIHQucmVoYXNoKDApOworICBFWFBFQ1RfTkUocCwgJip0LmZpbmQoMCkpOworfQorCitU
RVNUKFRhYmxlLCBDb25zdHJ1Y3RGcm9tSW5pdExpc3QpIHsKKyAgdXNpbmcgUCA9IHN0ZDo6cGFp
cjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+OworICBzdHJ1Y3QgUSB7CisgICAgb3BlcmF0b3Ig
UCgpIGNvbnN0IHsgcmV0dXJuIHt9OyB9CisgIH07CisgIFN0cmluZ1RhYmxlIHQgPSB7UCgpLCBR
KCksIHt9LCB7e30sIHt9fX07Cit9CisKK1RFU1QoVGFibGUsIENvcHlDb25zdHJ1Y3QpIHsKKyAg
SW50VGFibGUgdDsKKyAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOworICB0LmVtcGxhY2UoMCk7
CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIHsKKyAgICBJbnRUYWJsZSB1KHQpOworICAg
IEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKHQubWF4X2xvYWRfZmFjdG9y
KCksIHUubWF4X2xvYWRfZmFjdG9yKCkpOworICAgIEVYUEVDVF9USEFUKCp1LmZpbmQoMCksIDAp
OworICB9CisgIHsKKyAgICBJbnRUYWJsZSB1e3R9OworICAgIEVYUEVDVF9FUSgxLCB1LnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKHQubWF4X2xvYWRfZmFjdG9yKCksIHUubWF4X2xvYWRfZmFjdG9y
KCkpOworICAgIEVYUEVDVF9USEFUKCp1LmZpbmQoMCksIDApOworICB9CisgIHsKKyAgICBJbnRU
YWJsZSB1ID0gdDsKKyAgICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOworICAgIEVYUEVDVF9FUSh0
Lm1heF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKKyAgICBFWFBFQ1RfVEhB
VCgqdS5maW5kKDApLCAwKTsKKyAgfQorfQorCitURVNUKFRhYmxlLCBDb3B5Q29uc3RydWN0V2l0
aEFsbG9jKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIHQubWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsK
KyAgdC5lbXBsYWNlKCJhIiwgImIiKTsKKyAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsKKyAgU3Ry
aW5nVGFibGUgdSh0LCBBbGxvYzxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4o
KSk7CisgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7CisgIEVYUEVDVF9FUSh0Lm1heF9sb2FkX2Zh
Y3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKKyAgRVhQRUNUX1RIQVQoKnUuZmluZCgiYSIp
LCBQYWlyKCJhIiwgImIiKSk7Cit9CisKK3N0cnVjdCBFeHBsaWNpdEFsbG9jSW50VGFibGUKKyAg
ICA6IHJhd19oYXNoX3NldDxJbnRQb2xpY3ksIGNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZh
dWx0X2hhc2g8aW50NjRfdD4sCisgICAgICAgICAgICAgICAgICAgc3RkOjplcXVhbF90bzxpbnQ2
NF90PiwgQWxsb2M8aW50NjRfdD4+IHsKKyAgRXhwbGljaXRBbGxvY0ludFRhYmxlKCkge30KK307
CisKK1RFU1QoVGFibGUsIEFsbG9jV2l0aEV4cGxpY2l0Q3RvcikgeworICBFeHBsaWNpdEFsbG9j
SW50VGFibGUgdDsKKyAgRVhQRUNUX0VRKDAsIHQuc2l6ZSgpKTsKK30KKworVEVTVChUYWJsZSwg
TW92ZUNvbnN0cnVjdCkgeworICB7CisgICAgU3RyaW5nVGFibGUgdDsKKyAgICB0Lm1heF9sb2Fk
X2ZhY3RvciguMzIxZik7CisgICAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9sb2FkX2ZhY3Rvcigp
OworICAgIHQuZW1wbGFjZSgiYSIsICJiIik7CisgICAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsK
KworICAgIFN0cmluZ1RhYmxlIHUoc3RkOjptb3ZlKHQpKTsKKyAgICBFWFBFQ1RfRVEoMSwgdS5z
aXplKCkpOworICAgIEVYUEVDVF9FUShsZiwgdS5tYXhfbG9hZF9mYWN0b3IoKSk7CisgICAgRVhQ
RUNUX1RIQVQoKnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7CisgIH0KKyAgeworICAgIFN0
cmluZ1RhYmxlIHQ7CisgICAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOworICAgIGNvbnN0IGZs
b2F0IGxmID0gdC5tYXhfbG9hZF9mYWN0b3IoKTsKKyAgICB0LmVtcGxhY2UoImEiLCAiYiIpOwor
ICAgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisKKyAgICBTdHJpbmdUYWJsZSB1e3N0ZDo6bW92
ZSh0KX07CisgICAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGYsIHUu
bWF4X2xvYWRfZmFjdG9yKCkpOworICAgIEVYUEVDVF9USEFUKCp1LmZpbmQoImEiKSwgUGFpcigi
YSIsICJiIikpOworICB9CisgIHsKKyAgICBTdHJpbmdUYWJsZSB0OworICAgIHQubWF4X2xvYWRf
ZmFjdG9yKC4zMjFmKTsKKyAgICBjb25zdCBmbG9hdCBsZiA9IHQubWF4X2xvYWRfZmFjdG9yKCk7
CisgICAgdC5lbXBsYWNlKCJhIiwgImIiKTsKKyAgICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOwor
CisgICAgU3RyaW5nVGFibGUgdSA9IHN0ZDo6bW92ZSh0KTsKKyAgICBFWFBFQ1RfRVEoMSwgdS5z
aXplKCkpOworICAgIEVYUEVDVF9FUShsZiwgdS5tYXhfbG9hZF9mYWN0b3IoKSk7CisgICAgRVhQ
RUNUX1RIQVQoKnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7CisgIH0KK30KKworVEVTVChU
YWJsZSwgTW92ZUNvbnN0cnVjdFdpdGhBbGxvYykgeworICBTdHJpbmdUYWJsZSB0OworICB0Lm1h
eF9sb2FkX2ZhY3RvciguMzIxZik7CisgIGNvbnN0IGZsb2F0IGxmID0gdC5tYXhfbG9hZF9mYWN0
b3IoKTsKKyAgdC5lbXBsYWNlKCJhIiwgImIiKTsKKyAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsK
KyAgU3RyaW5nVGFibGUgdShzdGQ6Om1vdmUodCksIEFsbG9jPHN0ZDo6cGFpcjxzdGQ6OnN0cmlu
Zywgc3RkOjpzdHJpbmc+PigpKTsKKyAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAgRVhQRUNU
X0VRKGxmLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKKyAgRVhQRUNUX1RIQVQoKnUuZmluZCgiYSIp
LCBQYWlyKCJhIiwgImIiKSk7Cit9CisKK1RFU1QoVGFibGUsIENvcHlBc3NpZ24pIHsKKyAgU3Ry
aW5nVGFibGUgdDsKKyAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOworICB0LmVtcGxhY2UoImEi
LCAiYiIpOworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworICBTdHJpbmdUYWJsZSB1OworICB1
ID0gdDsKKyAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKHQubWF4X2xvYWRf
ZmFjdG9yKCksIHUubWF4X2xvYWRfZmFjdG9yKCkpOworICBFWFBFQ1RfVEhBVCgqdS5maW5kKCJh
IiksIFBhaXIoImEiLCAiYiIpKTsKK30KKworVEVTVChUYWJsZSwgQ29weVNlbGZBc3NpZ24pIHsK
KyAgU3RyaW5nVGFibGUgdDsKKyAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOworICBjb25zdCBm
bG9hdCBsZiA9IHQubWF4X2xvYWRfZmFjdG9yKCk7CisgIHQuZW1wbGFjZSgiYSIsICJiIik7Cisg
IEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIHQgPSAqJnQ7CisgIEVYUEVDVF9FUSgxLCB0LnNp
emUoKSk7CisgIEVYUEVDVF9FUShsZiwgdC5tYXhfbG9hZF9mYWN0b3IoKSk7CisgIEVYUEVDVF9U
SEFUKCp0LmZpbmQoImEiKSwgUGFpcigiYSIsICJiIikpOworfQorCitURVNUKFRhYmxlLCBNb3Zl
QXNzaWduKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIHQubWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsK
KyAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9sb2FkX2ZhY3RvcigpOworICB0LmVtcGxhY2UoImEi
LCAiYiIpOworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworICBTdHJpbmdUYWJsZSB1OworICB1
ID0gc3RkOjptb3ZlKHQpOworICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOworICBFWFBFQ1RfRVEo
bGYsIHUubWF4X2xvYWRfZmFjdG9yKCkpOworICBFWFBFQ1RfVEhBVCgqdS5maW5kKCJhIiksIFBh
aXIoImEiLCAiYiIpKTsKK30KKworVEVTVChUYWJsZSwgRXF1YWxpdHkpIHsKKyAgU3RyaW5nVGFi
bGUgdDsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+
IHYgPSB7eyJhIiwgImIifSwgeyJhYSIsICJiYiJ9fTsKKyAgdC5pbnNlcnQoc3RkOjpiZWdpbih2
KSwgc3RkOjplbmQodikpOworICBTdHJpbmdUYWJsZSB1ID0gdDsKKyAgRVhQRUNUX0VRKHUsIHQp
OworfQorCitURVNUKFRhYmxlLCBFcXVhbGl0eTIpIHsKKyAgU3RyaW5nVGFibGUgdDsKKyAgc3Rk
Ojp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYxID0ge3siYSIs
ICJiIn0sIHsiYWEiLCAiYmIifX07CisgIHQuaW5zZXJ0KHN0ZDo6YmVnaW4odjEpLCBzdGQ6OmVu
ZCh2MSkpOworICBTdHJpbmdUYWJsZSB1OworICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpz
dHJpbmcsIHN0ZDo6c3RyaW5nPj4gdjIgPSB7eyJhIiwgImEifSwgeyJhYSIsICJhYSJ9fTsKKyAg
dS5pbnNlcnQoc3RkOjpiZWdpbih2MiksIHN0ZDo6ZW5kKHYyKSk7CisgIEVYUEVDVF9ORSh1LCB0
KTsKK30KKworVEVTVChUYWJsZSwgRXF1YWxpdHkzKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIHN0
ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PiB2MSA9IHt7ImIi
LCAiYiJ9LCB7ImJiIiwgImJiIn19OworICB0Lmluc2VydChzdGQ6OmJlZ2luKHYxKSwgc3RkOjpl
bmQodjEpKTsKKyAgU3RyaW5nVGFibGUgdTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6
c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHYyID0ge3siYSIsICJhIn0sIHsiYWEiLCAiYWEifX07Cisg
IHUuaW5zZXJ0KHN0ZDo6YmVnaW4odjIpLCBzdGQ6OmVuZCh2MikpOworICBFWFBFQ1RfTkUodSwg
dCk7Cit9CisKK1RFU1QoVGFibGUsIE51bURlbGV0ZWRSZWdyZXNzaW9uKSB7CisgIEludFRhYmxl
IHQ7CisgIHQuZW1wbGFjZSgwKTsKKyAgdC5lcmFzZSh0LmZpbmQoMCkpOworICAvLyBjb25zdHJ1
Y3Qgb3ZlciBhIGRlbGV0ZWQgc2xvdC4KKyAgdC5lbXBsYWNlKDApOworICB0LmNsZWFyKCk7Cit9
CisKK1RFU1QoVGFibGUsIEZpbmRGdWxsRGVsZXRlZFJlZ3Jlc3Npb24pIHsKKyAgSW50VGFibGUg
dDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB0LmVtcGxhY2UoaSk7
CisgICAgdC5lcmFzZSh0LmZpbmQoaSkpOworICB9CisgIEVYUEVDVF9FUSgwLCB0LnNpemUoKSk7
Cit9CisKK1RFU1QoVGFibGUsIFJlcGxhY2luZ0RlbGV0ZWRTbG90RG9lc05vdFJlaGFzaCkgewor
ICBzaXplX3QgbjsKKyAgeworICAgIC8vIENvbXB1dGUgbiBzdWNoIHRoYXQgbiBpcyB0aGUgbWF4
aW11bSBudW1iZXIgb2YgZWxlbWVudHMgYmVmb3JlIHJlaGFzaC4KKyAgICBJbnRUYWJsZSB0Owor
ICAgIHQuZW1wbGFjZSgwKTsKKyAgICBzaXplX3QgYyA9IHQuYnVja2V0X2NvdW50KCk7CisgICAg
Zm9yIChuID0gMTsgYyA9PSB0LmJ1Y2tldF9jb3VudCgpOyArK24pIHQuZW1wbGFjZShuKTsKKyAg
ICAtLW47CisgIH0KKyAgSW50VGFibGUgdDsKKyAgdC5yZWhhc2gobik7CisgIGNvbnN0IHNpemVf
dCBjID0gdC5idWNrZXRfY291bnQoKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbjsgKytp
KSB0LmVtcGxhY2UoaSk7CisgIEVYUEVDVF9FUShjLCB0LmJ1Y2tldF9jb3VudCgpKSA8PCAicmVo
YXNoaW5nIHRocmVzaG9sZCA9ICIgPDwgbjsKKyAgdC5lcmFzZSgwKTsKKyAgdC5lbXBsYWNlKDAp
OworICBFWFBFQ1RfRVEoYywgdC5idWNrZXRfY291bnQoKSkgPDwgInJlaGFzaGluZyB0aHJlc2hv
bGQgPSAiIDw8IG47Cit9CisKK1RFU1QoVGFibGUsIE5vVGhyb3dNb3ZlQ29uc3RydWN0KSB7Cisg
IEFTU0VSVF9UUlVFKAorICAgICAgc3RkOjppc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxh
YnNsOjpIYXNoPGFic2w6OnN0cmluZ192aWV3Pj46OnZhbHVlKTsKKyAgQVNTRVJUX1RSVUUoc3Rk
Ojppc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTwKKyAgICAgICAgICAgICAgc3RkOjplcXVh
bF90bzxhYnNsOjpzdHJpbmdfdmlldz4+Ojp2YWx1ZSk7CisgIEFTU0VSVF9UUlVFKHN0ZDo6aXNf
bm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8c3RkOjphbGxvY2F0b3I8aW50Pj46OnZhbHVlKTsK
KyAgRVhQRUNUX1RSVUUoc3RkOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxTdHJpbmdU
YWJsZT46OnZhbHVlKTsKK30KKworVEVTVChUYWJsZSwgTm9UaHJvd01vdmVBc3NpZ24pIHsKKyAg
QVNTRVJUX1RSVUUoCisgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPGFic2w6
Okhhc2g8YWJzbDo6c3RyaW5nX3ZpZXc+Pjo6dmFsdWUpOworICBBU1NFUlRfVFJVRSgKKyAgICAg
IHN0ZDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8c3RkOjplcXVhbF90bzxhYnNsOjpzdHJp
bmdfdmlldz4+Ojp2YWx1ZSk7CisgIEFTU0VSVF9UUlVFKHN0ZDo6aXNfbm90aHJvd19tb3ZlX2Fz
c2lnbmFibGU8c3RkOjphbGxvY2F0b3I8aW50Pj46OnZhbHVlKTsKKyAgQVNTRVJUX1RSVUUoCisg
ICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPHN0ZDo6YWxsb2NhdG9yPGludD4+Ojppc19hbHdh
eXNfZXF1YWw6OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc19ub3Rocm93X21vdmVfYXNz
aWduYWJsZTxTdHJpbmdUYWJsZT46OnZhbHVlKTsKK30KKworVEVTVChUYWJsZSwgTm9UaHJvd1N3
YXBwYWJsZSkgeworICBBU1NFUlRfVFJVRSgKKyAgICAgIGNvbnRhaW5lcl9pbnRlcm5hbDo6SXNO
b1Rocm93U3dhcHBhYmxlPGFic2w6Okhhc2g8YWJzbDo6c3RyaW5nX3ZpZXc+PigpKTsKKyAgQVNT
RVJUX1RSVUUoY29udGFpbmVyX2ludGVybmFsOjpJc05vVGhyb3dTd2FwcGFibGU8CisgICAgICAg
ICAgICAgIHN0ZDo6ZXF1YWxfdG88YWJzbDo6c3RyaW5nX3ZpZXc+PigpKTsKKyAgQVNTRVJUX1RS
VUUoY29udGFpbmVyX2ludGVybmFsOjpJc05vVGhyb3dTd2FwcGFibGU8c3RkOjphbGxvY2F0b3I8
aW50Pj4oKSk7CisgIEVYUEVDVF9UUlVFKGNvbnRhaW5lcl9pbnRlcm5hbDo6SXNOb1Rocm93U3dh
cHBhYmxlPFN0cmluZ1RhYmxlPigpKTsKK30KKworVEVTVChUYWJsZSwgSGV0ZXJvZ2VuZW91c0xv
b2t1cCkgeworICBzdHJ1Y3QgSGFzaCB7CisgICAgc2l6ZV90IG9wZXJhdG9yKCkoaW50NjRfdCBp
KSBjb25zdCB7IHJldHVybiBpOyB9CisgICAgc2l6ZV90IG9wZXJhdG9yKCkoZG91YmxlIGkpIGNv
bnN0IHsKKyAgICAgIEFERF9GQUlMVVJFKCk7CisgICAgICByZXR1cm4gaTsKKyAgICB9CisgIH07
CisgIHN0cnVjdCBFcSB7CisgICAgYm9vbCBvcGVyYXRvcigpKGludDY0X3QgYSwgaW50NjRfdCBi
KSBjb25zdCB7IHJldHVybiBhID09IGI7IH0KKyAgICBib29sIG9wZXJhdG9yKCkoZG91YmxlIGEs
IGludDY0X3QgYikgY29uc3QgeworICAgICAgQUREX0ZBSUxVUkUoKTsKKyAgICAgIHJldHVybiBh
ID09IGI7CisgICAgfQorICAgIGJvb2wgb3BlcmF0b3IoKShpbnQ2NF90IGEsIGRvdWJsZSBiKSBj
b25zdCB7CisgICAgICBBRERfRkFJTFVSRSgpOworICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9
CisgICAgYm9vbCBvcGVyYXRvcigpKGRvdWJsZSBhLCBkb3VibGUgYikgY29uc3QgeworICAgICAg
QUREX0ZBSUxVUkUoKTsKKyAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorICB9OworCisgIHN0
cnVjdCBUSGFzaCB7CisgICAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworICAgIHNpemVf
dCBvcGVyYXRvcigpKGludDY0X3QgaSkgY29uc3QgeyByZXR1cm4gaTsgfQorICAgIHNpemVfdCBv
cGVyYXRvcigpKGRvdWJsZSBpKSBjb25zdCB7IHJldHVybiBpOyB9CisgIH07CisgIHN0cnVjdCBU
RXEgeworICAgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKyAgICBib29sIG9wZXJhdG9y
KCkoaW50NjRfdCBhLCBpbnQ2NF90IGIpIGNvbnN0IHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIGJv
b2wgb3BlcmF0b3IoKShkb3VibGUgYSwgaW50NjRfdCBiKSBjb25zdCB7IHJldHVybiBhID09IGI7
IH0KKyAgICBib29sIG9wZXJhdG9yKCkoaW50NjRfdCBhLCBkb3VibGUgYikgY29uc3QgeyByZXR1
cm4gYSA9PSBiOyB9CisgICAgYm9vbCBvcGVyYXRvcigpKGRvdWJsZSBhLCBkb3VibGUgYikgY29u
c3QgeyByZXR1cm4gYSA9PSBiOyB9CisgIH07CisKKyAgcmF3X2hhc2hfc2V0PEludFBvbGljeSwg
SGFzaCwgRXEsIEFsbG9jPGludDY0X3Q+PiBzezAsIDEsIDJ9OworICAvLyBJdCB3aWxsIGNvbnZl
cnQgdG8gaW50NjRfdCBiZWZvcmUgdGhlIHF1ZXJ5LgorICBFWFBFQ1RfRVEoMSwgKnMuZmluZChk
b3VibGV7MS4xfSkpOworCisgIHJhd19oYXNoX3NldDxJbnRQb2xpY3ksIFRIYXNoLCBURXEsIEFs
bG9jPGludDY0X3Q+PiB0c3swLCAxLCAyfTsKKyAgLy8gSXQgd2lsbCB0cnkgdG8gdXNlIHRoZSBk
b3VibGUsIGFuZCBmYWlsIHRvIGZpbmQgdGhlIG9iamVjdC4KKyAgRVhQRUNUX1RSVUUodHMuZmlu
ZCgxLjEpID09IHRzLmVuZCgpKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFRhYmxlPgordXNpbmcg
Q2FsbEZpbmQgPSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VGFibGUmPigpLmZpbmQoMTcpKTsKKwor
dGVtcGxhdGUgPGNsYXNzIFRhYmxlPgordXNpbmcgQ2FsbEVyYXNlID0gZGVjbHR5cGUoc3RkOjpk
ZWNsdmFsPFRhYmxlJj4oKS5lcmFzZSgxNykpOworCit0ZW1wbGF0ZSA8Y2xhc3MgVGFibGU+Cit1
c2luZyBDYWxsRXh0cmFjdCA9IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUYWJsZSY+KCkuZXh0cmFj
dCgxNykpOworCit0ZW1wbGF0ZSA8Y2xhc3MgVGFibGU+Cit1c2luZyBDYWxsUHJlZmV0Y2ggPSBk
ZWNsdHlwZShzdGQ6OmRlY2x2YWw8VGFibGUmPigpLnByZWZldGNoKDE3KSk7CisKK3RlbXBsYXRl
IDxjbGFzcyBUYWJsZT4KK3VzaW5nIENhbGxDb3VudCA9IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxU
YWJsZSY+KCkuY291bnQoMTcpKTsKKwordGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBlbmFtZT4gY2xh
c3MgQywgY2xhc3MgVGFibGUsIGNsYXNzID0gdm9pZD4KK3N0cnVjdCBWZXJpZnlSZXN1bHRPZiA6
IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBlbmFtZT4gY2xh
c3MgQywgY2xhc3MgVGFibGU+CitzdHJ1Y3QgVmVyaWZ5UmVzdWx0T2Y8QywgVGFibGUsIGFic2w6
OnZvaWRfdDxDPFRhYmxlPj4+IDogc3RkOjp0cnVlX3R5cGUge307CisKK1RFU1QoVGFibGUsIEhl
dGVyb2dlbmVvdXNMb29rdXBPdmVybG9hZHMpIHsKKyAgdXNpbmcgTm9uVHJhbnNwYXJlbnRUYWJs
ZSA9CisgICAgICByYXdfaGFzaF9zZXQ8U3RyaW5nUG9saWN5LCBhYnNsOjpIYXNoPGFic2w6OnN0
cmluZ192aWV3PiwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OmVxdWFsX3RvPGFic2w6OnN0cmlu
Z192aWV3Piwgc3RkOjphbGxvY2F0b3I8aW50Pj47CisKKyAgRVhQRUNUX0ZBTFNFKChWZXJpZnlS
ZXN1bHRPZjxDYWxsRmluZCwgTm9uVHJhbnNwYXJlbnRUYWJsZT4oKSkpOworICBFWFBFQ1RfRkFM
U0UoKFZlcmlmeVJlc3VsdE9mPENhbGxFcmFzZSwgTm9uVHJhbnNwYXJlbnRUYWJsZT4oKSkpOwor
ICBFWFBFQ1RfRkFMU0UoKFZlcmlmeVJlc3VsdE9mPENhbGxFeHRyYWN0LCBOb25UcmFuc3BhcmVu
dFRhYmxlPigpKSk7CisgIEVYUEVDVF9GQUxTRSgoVmVyaWZ5UmVzdWx0T2Y8Q2FsbFByZWZldGNo
LCBOb25UcmFuc3BhcmVudFRhYmxlPigpKSk7CisgIEVYUEVDVF9GQUxTRSgoVmVyaWZ5UmVzdWx0
T2Y8Q2FsbENvdW50LCBOb25UcmFuc3BhcmVudFRhYmxlPigpKSk7CisKKyAgdXNpbmcgVHJhbnNw
YXJlbnRUYWJsZSA9IHJhd19oYXNoX3NldDwKKyAgICAgIFN0cmluZ1BvbGljeSwKKyAgICAgIGFi
c2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZhdWx0X2hhc2g8YWJzbDo6c3RyaW5nX3Zp
ZXc+LAorICAgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2RlZmF1bHRfZXE8YWJz
bDo6c3RyaW5nX3ZpZXc+LAorICAgICAgc3RkOjphbGxvY2F0b3I8aW50Pj47CisKKyAgRVhQRUNU
X1RSVUUoKFZlcmlmeVJlc3VsdE9mPENhbGxGaW5kLCBUcmFuc3BhcmVudFRhYmxlPigpKSk7Cisg
IEVYUEVDVF9UUlVFKChWZXJpZnlSZXN1bHRPZjxDYWxsRXJhc2UsIFRyYW5zcGFyZW50VGFibGU+
KCkpKTsKKyAgRVhQRUNUX1RSVUUoKFZlcmlmeVJlc3VsdE9mPENhbGxFeHRyYWN0LCBUcmFuc3Bh
cmVudFRhYmxlPigpKSk7CisgIEVYUEVDVF9UUlVFKChWZXJpZnlSZXN1bHRPZjxDYWxsUHJlZmV0
Y2gsIFRyYW5zcGFyZW50VGFibGU+KCkpKTsKKyAgRVhQRUNUX1RSVUUoKFZlcmlmeVJlc3VsdE9m
PENhbGxDb3VudCwgVHJhbnNwYXJlbnRUYWJsZT4oKSkpOworfQorCisvLyBUT0RPKGFsa2lzKTog
RXhwYW5kIGl0ZXJhdG9yIHRlc3RzLgorVEVTVChJdGVyYXRvciwgSXNEZWZhdWx0Q29uc3RydWN0
aWJsZSkgeworICBTdHJpbmdUYWJsZTo6aXRlcmF0b3IgaTsKKyAgRVhQRUNUX1RSVUUoaSA9PSBT
dHJpbmdUYWJsZTo6aXRlcmF0b3IoKSk7Cit9CisKK1RFU1QoQ29uc3RJdGVyYXRvciwgSXNEZWZh
dWx0Q29uc3RydWN0aWJsZSkgeworICBTdHJpbmdUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaTsKKyAg
RVhQRUNUX1RSVUUoaSA9PSBTdHJpbmdUYWJsZTo6Y29uc3RfaXRlcmF0b3IoKSk7Cit9CisKK1RF
U1QoSXRlcmF0b3IsIENvbnZlcnRzVG9Db25zdEl0ZXJhdG9yKSB7CisgIFN0cmluZ1RhYmxlOjpp
dGVyYXRvciBpOworICBFWFBFQ1RfVFJVRShpID09IFN0cmluZ1RhYmxlOjpjb25zdF9pdGVyYXRv
cigpKTsKK30KKworVEVTVChJdGVyYXRvciwgSXRlcmF0ZXMpIHsKKyAgSW50VGFibGUgdDsKKyAg
Zm9yIChzaXplX3QgaSA9IDM7IGkgIT0gNjsgKytpKSBFWFBFQ1RfVFJVRSh0LmVtcGxhY2UoaSku
c2Vjb25kKTsKKyAgRVhQRUNUX1RIQVQodCwgVW5vcmRlcmVkRWxlbWVudHNBcmUoMywgNCwgNSkp
OworfQorCitURVNUKFRhYmxlLCBNZXJnZSkgeworICBTdHJpbmdUYWJsZSB0MSwgdDI7CisgIHQx
LmVtcGxhY2UoIjAiLCAiLTAiKTsKKyAgdDEuZW1wbGFjZSgiMSIsICItMSIpOworICB0Mi5lbXBs
YWNlKCIwIiwgIn4wIik7CisgIHQyLmVtcGxhY2UoIjIiLCAifjIiKTsKKworICBFWFBFQ1RfVEhB
VCh0MSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigiMCIsICItMCIpLCBQYWlyKCIxIiwgIi0x
IikpKTsKKyAgRVhQRUNUX1RIQVQodDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoIjAiLCAi
fjAiKSwgUGFpcigiMiIsICJ+MiIpKSk7CisKKyAgdDEubWVyZ2UodDIpOworICBFWFBFQ1RfVEhB
VCh0MSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigiMCIsICItMCIpLCBQYWlyKCIxIiwgIi0x
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKCIyIiwgIn4y
IikpKTsKKyAgRVhQRUNUX1RIQVQodDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoIjAiLCAi
fjAiKSkpOworfQorCitURVNUKE5vZGVzLCBFbXB0eU5vZGVUeXBlKSB7CisgIHVzaW5nIG5vZGVf
dHlwZSA9IFN0cmluZ1RhYmxlOjpub2RlX3R5cGU7CisgIG5vZGVfdHlwZSBuOworICBFWFBFQ1Rf
RkFMU0Uobik7CisgIEVYUEVDVF9UUlVFKG4uZW1wdHkoKSk7CisKKyAgRVhQRUNUX1RSVUUoKHN0
ZDo6aXNfc2FtZTxub2RlX3R5cGU6OmFsbG9jYXRvcl90eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0cmluZ1RhYmxlOjphbGxvY2F0b3JfdHlwZT46OnZhbHVlKSk7Cit9CisKK1RF
U1QoTm9kZXMsIEV4dHJhY3RJbnNlcnQpIHsKKyAgY29uc3RleHByIGNoYXIgazBbXSA9ICJWZXJ5
IGxvbmcgc3RkOjpzdHJpbmcgemVyby4iOworICBjb25zdGV4cHIgY2hhciBrMVtdID0gIlZlcnkg
bG9uZyBzdGQ6OnN0cmluZyBvbmUuIjsKKyAgY29uc3RleHByIGNoYXIgazJbXSA9ICJWZXJ5IGxv
bmcgc3RkOjpzdHJpbmcgdHdvLiI7CisgIFN0cmluZ1RhYmxlIHQgPSB7e2swLCAiIn0sIHtrMSwg
IiJ9LCB7azIsICIifX07CisgIEVYUEVDVF9USEFUKHQsCisgICAgICAgICAgICAgIFVub3JkZXJl
ZEVsZW1lbnRzQXJlKFBhaXIoazAsICIiKSwgUGFpcihrMSwgIiIpLCBQYWlyKGsyLCAiIikpKTsK
KworICBhdXRvIG5vZGUgPSB0LmV4dHJhY3QoazApOworICBFWFBFQ1RfVEhBVCh0LCBVbm9yZGVy
ZWRFbGVtZW50c0FyZShQYWlyKGsxLCAiIiksIFBhaXIoazIsICIiKSkpOworICBFWFBFQ1RfVFJV
RShub2RlKTsKKyAgRVhQRUNUX0ZBTFNFKG5vZGUuZW1wdHkoKSk7CisKKyAgU3RyaW5nVGFibGUg
dDI7CisgIGF1dG8gcmVzID0gdDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7CisgIEVYUEVDVF9U
UlVFKHJlcy5pbnNlcnRlZCk7CisgIEVYUEVDVF9USEFUKCpyZXMucG9zaXRpb24sIFBhaXIoazAs
ICIiKSk7CisgIEVYUEVDVF9GQUxTRShyZXMubm9kZSk7CisgIEVYUEVDVF9USEFUKHQyLCBVbm9y
ZGVyZWRFbGVtZW50c0FyZShQYWlyKGswLCAiIikpKTsKKworICAvLyBOb3QgdGhlcmUuCisgIEVY
UEVDVF9USEFUKHQsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoazEsICIiKSwgUGFpcihrMiwg
IiIpKSk7CisgIG5vZGUgPSB0LmV4dHJhY3QoIk5vdCB0aGVyZSEiKTsKKyAgRVhQRUNUX1RIQVQo
dCwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcihrMSwgIiIpLCBQYWlyKGsyLCAiIikpKTsKKyAg
RVhQRUNUX0ZBTFNFKG5vZGUpOworCisgIC8vIEluc2VydGluZyBub3RoaW5nLgorICByZXMgPSB0
Mi5pbnNlcnQoc3RkOjptb3ZlKG5vZGUpKTsKKyAgRVhQRUNUX0ZBTFNFKHJlcy5pbnNlcnRlZCk7
CisgIEVYUEVDVF9FUShyZXMucG9zaXRpb24sIHQyLmVuZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHJl
cy5ub2RlKTsKKyAgRVhQRUNUX1RIQVQodDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBhaXIoazAs
ICIiKSkpOworCisgIHQuZW1wbGFjZShrMCwgIjEiKTsKKyAgbm9kZSA9IHQuZXh0cmFjdChrMCk7
CisKKyAgLy8gSW5zZXJ0IGR1cGxpY2F0ZS4KKyAgcmVzID0gdDIuaW5zZXJ0KHN0ZDo6bW92ZShu
b2RlKSk7CisgIEVYUEVDVF9GQUxTRShyZXMuaW5zZXJ0ZWQpOworICBFWFBFQ1RfVEhBVCgqcmVz
LnBvc2l0aW9uLCBQYWlyKGswLCAiIikpOworICBFWFBFQ1RfVFJVRShyZXMubm9kZSk7CisgIEVY
UEVDVF9GQUxTRShub2RlKTsKK30KKworU3RyaW5nVGFibGUgTWFrZVNpbXBsZVRhYmxlKHNpemVf
dCBzaXplKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB0LmVtcGxhY2Uoc3RkOjpzdHJpbmcoMSwgJ0EnICsgaSksICIiKTsKKyAgcmV0dXJu
IHQ7Cit9CisKK3N0ZDo6c3RyaW5nIE9yZGVyT2ZJdGVyYXRpb24oY29uc3QgU3RyaW5nVGFibGUm
IHQpIHsKKyAgc3RkOjpzdHJpbmcgb3JkZXI7CisgIGZvciAoYXV0byYgcCA6IHQpIG9yZGVyICs9
IHAuZmlyc3Q7CisgIHJldHVybiBvcmRlcjsKK30KKworVEVTVChUYWJsZSwgSXRlcmF0aW9uT3Jk
ZXJDaGFuZ2VzQnlJbnN0YW5jZSkgeworICAvLyBOZWVkcyB0byBiZSBtb3JlIHRoYW4ga1dpZHRo
IGVsZW1lbnRzIHRvIGJlIGFibGUgdG8gYWZmZWN0IG9yZGVyLgorICBjb25zdCBTdHJpbmdUYWJs
ZSByZWZlcmVuY2UgPSBNYWtlU2ltcGxlVGFibGUoMjApOworCisgIC8vIFNpbmNlIG9yZGVyIGlz
IG5vbi1kZXRlcm1pbmlzdGljIHdlIGNhbid0IGp1c3QgdHJ5IG9uY2UgYW5kIHZlcmlmeS4KKyAg
Ly8gV2UnbGwgdHJ5IHVudGlsIHdlIGZpbmQgdGhhdCBvcmRlciBjaGFuZ2VkLiBJdCBzaG91bGQg
bm90IHRha2UgbWFueSB0cmllcworICAvLyBmb3IgdGhhdC4KKyAgLy8gSW1wb3J0YW50OiB3ZSBo
YXZlIHRvIGtlZXAgdGhlIG9sZCB0YWJsZXMgYXJvdW5kLiBPdGhlcndpc2UgdGNtYWxsb2Mgd2ls
bAorICAvLyBqdXN0IGdpdmUgdXMgdGhlIHNhbWUgYmxvY2tzIGFuZCB3ZSB3b3VsZCBiZSBkb2lu
ZyB0aGUgc2FtZSBvcmRlciBhZ2Fpbi4KKyAgc3RkOjp2ZWN0b3I8U3RyaW5nVGFibGU+IGdhcmJh
Z2U7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgIGF1dG8gdHJpYWwgPSBN
YWtlU2ltcGxlVGFibGUoMjApOworICAgIGlmIChPcmRlck9mSXRlcmF0aW9uKHRyaWFsKSAhPSBP
cmRlck9mSXRlcmF0aW9uKHJlZmVyZW5jZSkpIHsKKyAgICAgIC8vIFdlIGFyZSBkb25lLgorICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBnYXJiYWdlLnB1c2hfYmFjayhzdGQ6Om1vdmUodHJpYWwp
KTsKKyAgfQorICBGQUlMKCk7Cit9CisKK1RFU1QoVGFibGUsIEl0ZXJhdGlvbk9yZGVyQ2hhbmdl
c09uUmVoYXNoKSB7CisgIC8vIFNpbmNlIG9yZGVyIGlzIG5vbi1kZXRlcm1pbmlzdGljIHdlIGNh
bid0IGp1c3QgdHJ5IG9uY2UgYW5kIHZlcmlmeS4KKyAgLy8gV2UnbGwgdHJ5IHVudGlsIHdlIGZp
bmQgdGhhdCBvcmRlciBjaGFuZ2VkLiBJdCBzaG91bGQgbm90IHRha2UgbWFueSB0cmllcworICAv
LyBmb3IgdGhhdC4KKyAgLy8gSW1wb3J0YW50OiB3ZSBoYXZlIHRvIGtlZXAgdGhlIG9sZCB0YWJs
ZXMgYXJvdW5kLiBPdGhlcndpc2UgdGNtYWxsb2Mgd2lsbAorICAvLyBqdXN0IGdpdmUgdXMgdGhl
IHNhbWUgYmxvY2tzIGFuZCB3ZSB3b3VsZCBiZSBkb2luZyB0aGUgc2FtZSBvcmRlciBhZ2Fpbi4K
KyAgc3RkOjp2ZWN0b3I8U3RyaW5nVGFibGU+IGdhcmJhZ2U7CisgIGZvciAoaW50IGkgPSAwOyBp
IDwgMTA7ICsraSkgeworICAgIC8vIE5lZWRzIHRvIGJlIG1vcmUgdGhhbiBrV2lkdGggZWxlbWVu
dHMgdG8gYmUgYWJsZSB0byBhZmZlY3Qgb3JkZXIuCisgICAgU3RyaW5nVGFibGUgdCA9IE1ha2VT
aW1wbGVUYWJsZSgyMCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgcmVmZXJlbmNlID0gT3JkZXJP
Zkl0ZXJhdGlvbih0KTsKKyAgICAvLyBGb3JjZSByZWhhc2ggdG8gdGhlIHNhbWUgc2l6ZS4KKyAg
ICB0LnJlaGFzaCgwKTsKKyAgICBzdGQ6OnN0cmluZyB0cmlhbCA9IE9yZGVyT2ZJdGVyYXRpb24o
dCk7CisgICAgaWYgKHRyaWFsICE9IHJlZmVyZW5jZSkgeworICAgICAgLy8gV2UgYXJlIGRvbmUu
CisgICAgICByZXR1cm47CisgICAgfQorICAgIGdhcmJhZ2UucHVzaF9iYWNrKHN0ZDo6bW92ZSh0
KSk7CisgIH0KKyAgRkFJTCgpOworfQorCitURVNUKFRhYmxlLCBJdGVyYXRpb25PcmRlckNoYW5n
ZXNGb3JTbWFsbFRhYmxlcykgeworICAvLyBTaW5jZSBvcmRlciBpcyBub24tZGV0ZXJtaW5pc3Rp
YyB3ZSBjYW4ndCBqdXN0IHRyeSBvbmNlIGFuZCB2ZXJpZnkuCisgIC8vIFdlJ2xsIHRyeSB1bnRp
bCB3ZSBmaW5kIHRoYXQgb3JkZXIgY2hhbmdlZC4KKyAgLy8gSW1wb3J0YW50OiB3ZSBoYXZlIHRv
IGtlZXAgdGhlIG9sZCB0YWJsZXMgYXJvdW5kLiBPdGhlcndpc2UgdGNtYWxsb2Mgd2lsbAorICAv
LyBqdXN0IGdpdmUgdXMgdGhlIHNhbWUgYmxvY2tzIGFuZCB3ZSB3b3VsZCBiZSBkb2luZyB0aGUg
c2FtZSBvcmRlciBhZ2Fpbi4KKyAgU3RyaW5nVGFibGUgcmVmZXJlbmNlX3RhYmxlID0gTWFrZVNp
bXBsZVRhYmxlKDUpOworICBjb25zdCBzdGQ6OnN0cmluZyByZWZlcmVuY2UgPSBPcmRlck9mSXRl
cmF0aW9uKHJlZmVyZW5jZV90YWJsZSk7CisgIHN0ZDo6dmVjdG9yPFN0cmluZ1RhYmxlPiBnYXJi
YWdlOworICBmb3IgKGludCBpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICBTdHJpbmdUYWJsZSB0
ID0gTWFrZVNpbXBsZVRhYmxlKDUpOworICAgIHN0ZDo6c3RyaW5nIHRyaWFsID0gT3JkZXJPZkl0
ZXJhdGlvbih0KTsKKyAgICBpZiAodHJpYWwgIT0gcmVmZXJlbmNlKSB7CisgICAgICAvLyBXZSBh
cmUgZG9uZS4KKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgZ2FyYmFnZS5wdXNoX2JhY2soc3Rk
Ojptb3ZlKHQpKTsKKyAgfQorICBGQUlMKCkgPDwgIkl0ZXJhdGlvbiBvcmRlciByZW1haW5lZCB0
aGUgc2FtZSBhY3Jvc3MgbWFueSBhdHRlbXB0cy4iOworfQorCisvLyBGaWxsIHRoZSB0YWJsZSB0
byAzIGRpZmZlcmVudCBsb2FkIGZhY3RvcnMgKG1pbiwgbWVkaWFuLCBtYXgpIGFuZCBldmFsdWF0
ZQorLy8gdGhlIHBlcmNlbnRhZ2Ugb2YgcGVyZmVjdCBoaXRzIHVzaW5nIHRoZSBkZWJ1ZyBBUEku
Cit0ZW1wbGF0ZSA8Y2xhc3MgVGFibGUsIGNsYXNzIEFkZEZuPgorc3RkOjp2ZWN0b3I8ZG91Ymxl
PiBDb2xsZWN0UGVyZmVjdFJhdGlvcyhUYWJsZSB0LCBBZGRGbiBhZGQpIHsKKyAgdXNpbmcgS2V5
ID0gdHlwZW5hbWUgVGFibGU6OmtleV90eXBlOworCisgIC8vIEZpcnN0LCBmaWxsIGVub3VnaCB0
byBoYXZlIGEgZ29vZCBkaXN0cmlidXRpb24uCisgIGNvbnN0ZXhwciBzaXplX3Qga01pblNpemUg
PSAxMDAwMDsKKyAgc3RkOjp2ZWN0b3I8S2V5PiBrZXlzOworICB3aGlsZSAodC5zaXplKCkgPCBr
TWluU2l6ZSkga2V5cy5wdXNoX2JhY2soYWRkKHQpKTsKKyAgLy8gVGhlbiwgaW5zZXJ0IHVudGls
IHdlIHJlYWNoIG1pbiBsb2FkIGZhY3Rvci4KKyAgZG91YmxlIGxmID0gdC5sb2FkX2ZhY3Rvcigp
OworICB3aGlsZSAobGYgPD0gdC5sb2FkX2ZhY3RvcigpKSBrZXlzLnB1c2hfYmFjayhhZGQodCkp
OworCisgIC8vIFdlIGFyZSBub3cgYXQgbWluIGxvYWQgZmFjdG9yLiBUYWtlIGEgc25hcHNob3Qu
CisgIHNpemVfdCBwZXJmZWN0ID0gMDsKKyAgYXV0byB1cGRhdGVfcGVyZmVjdCA9IFsmXShLZXkg
aykgeworICAgIHBlcmZlY3QgKz0gR2V0SGFzaHRhYmxlRGVidWdOdW1Qcm9iZXModCwgaykgPT0g
MDsKKyAgfTsKKyAgZm9yIChjb25zdCBhdXRvJiBrIDoga2V5cykgdXBkYXRlX3BlcmZlY3Qoayk7
CisKKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBwZXJmZWN0X3JhdGlvczsKKyAgLy8gS2VlcCBnb2lu
ZyB1bnRpbCB3ZSBoaXQgbWF4IGxvYWQgZmFjdG9yLgorICB3aGlsZSAodC5sb2FkX2ZhY3Rvcigp
IDwgLjYpIHsKKyAgICBwZXJmZWN0X3JhdGlvcy5wdXNoX2JhY2soMS4wICogcGVyZmVjdCAvIHQu
c2l6ZSgpKTsKKyAgICB1cGRhdGVfcGVyZmVjdChhZGQodCkpOworICB9CisgIHdoaWxlICh0Lmxv
YWRfZmFjdG9yKCkgPiAuNSkgeworICAgIHBlcmZlY3RfcmF0aW9zLnB1c2hfYmFjaygxLjAgKiBw
ZXJmZWN0IC8gdC5zaXplKCkpOworICAgIHVwZGF0ZV9wZXJmZWN0KGFkZCh0KSk7CisgIH0KKyAg
cmV0dXJuIHBlcmZlY3RfcmF0aW9zOworfQorCitzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8ZG91Ymxl
LCBkb3VibGU+PiBTdHJpbmdUYWJsZVBlZmVjdFJhdGlvcygpIHsKKyAgY29uc3RleHByIGJvb2wg
a1JhbmRvbWl6ZXNJbnNlcnRzID0KKyNpZiBOREVCVUcKKyAgICAgIGZhbHNlOworI2Vsc2UgICAv
LyBOREVCVUcKKyAgICAgIHRydWU7CisjZW5kaWYgIC8vIE5ERUJVRworCisgIC8vIFRoZSBlZmZl
Y3RpdmUgbG9hZCBmYWN0b3IgaXMgbGFyZ2VyIGluIG5vbi1vcHQgbW9kZSBiZWNhdXNlIHdlIGlu
c2VydAorICAvLyBlbGVtZW50cyBvdXQgb2Ygb3JkZXIuCisgIHN3aXRjaCAoY29udGFpbmVyX2lu
dGVybmFsOjpHcm91cDo6a1dpZHRoKSB7CisgICAgY2FzZSA4OgorICAgICAgaWYgKGtSYW5kb21p
emVzSW5zZXJ0cykgeworICAgICAgICByZXR1cm4ge3swLjk4NiwgMC4wMn0sIHswLjk1LCAwLjAy
fSwgezAuODksIDAuMDJ9fTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiB7ezAuOTk1
LCAwLjAxfSwgezAuOTcsIDAuMDF9LCB7MC44OSwgMC4wMn19OworICAgICAgfQorICAgICAgYnJl
YWs7CisgICAgY2FzZSAxNjoKKyAgICAgIGlmIChrUmFuZG9taXplc0luc2VydHMpIHsKKyAgICAg
ICAgcmV0dXJuIHt7MC45NzMsIDAuMDF9LCB7MC45NjUsIDAuMDF9LCB7MC45MiwgMC4wMn19Owor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHt7MC45OTUsIDAuMDA1fSwgezAuOTksIDAu
MDA1fSwgezAuOTQsIDAuMDF9fTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAvLyBJZ25vcmUgYW55dGhpbmcgZWxzZS4KKyAgICAgIHJldHVybiB7fTsKKyAgfQor
fQorCisvLyBUaGlzIGlzIGFsbW9zdCBhIGNoYW5nZSBkZXRlY3RvciwgYnV0IGl0IGFsbG93cyB1
cyB0byBrbm93IGhvdyB3ZSBhcmUKKy8vIGFmZmVjdGluZyB0aGUgcHJvYmUgZGlzdHJpYnV0aW9u
LgorVEVTVChUYWJsZSwgRWZmZWN0aXZlTG9hZEZhY3RvclN0cmluZ3MpIHsKKyAgc3RkOjp2ZWN0
b3I8ZG91YmxlPiBwZXJmZWN0X3JhdGlvcyA9CisgICAgICBDb2xsZWN0UGVyZmVjdFJhdGlvcyhT
dHJpbmdUYWJsZSgpLCBbXShTdHJpbmdUYWJsZSYgdCkgeworICAgICAgICByZXR1cm4gdC5lbXBs
YWNlKHN0ZDo6dG9fc3RyaW5nKHQuc2l6ZSgpKSwgIiIpLmZpcnN0LT5maXJzdDsKKyAgICAgIH0p
OworCisgIGF1dG8gcmF0aW9zID0gU3RyaW5nVGFibGVQZWZlY3RSYXRpb3MoKTsKKyAgaWYgKHJh
dGlvcy5lbXB0eSgpKSByZXR1cm47CisKKyAgRVhQRUNUX1RIQVQocGVyZmVjdF9yYXRpb3MuZnJv
bnQoKSwKKyAgICAgICAgICAgICAgRG91YmxlTmVhcihyYXRpb3NbMF0uZmlyc3QsIHJhdGlvc1sw
XS5zZWNvbmQpKTsKKyAgRVhQRUNUX1RIQVQocGVyZmVjdF9yYXRpb3NbcGVyZmVjdF9yYXRpb3Mu
c2l6ZSgpIC8gMl0sCisgICAgICAgICAgICAgIERvdWJsZU5lYXIocmF0aW9zWzFdLmZpcnN0LCBy
YXRpb3NbMV0uc2Vjb25kKSk7CisgIEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zLmJhY2soKSwK
KyAgICAgICAgICAgICAgRG91YmxlTmVhcihyYXRpb3NbMl0uZmlyc3QsIHJhdGlvc1syXS5zZWNv
bmQpKTsKK30KKworc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gSW50VGFi
bGVQZWZlY3RSYXRpb3MoKSB7CisgIGNvbnN0ZXhwciBib29sIGtSYW5kb21pemVzSW5zZXJ0cyA9
CisjaWZkZWYgTkRFQlVHCisgICAgICBmYWxzZTsKKyNlbHNlICAgLy8gTkRFQlVHCisgICAgICB0
cnVlOworI2VuZGlmICAvLyBOREVCVUcKKworICAvLyBUaGUgZWZmZWN0aXZlIGxvYWQgZmFjdG9y
IGlzIGxhcmdlciBpbiBub24tb3B0IG1vZGUgYmVjYXVzZSB3ZSBpbnNlcnQKKyAgLy8gZWxlbWVu
dHMgb3V0IG9mIG9yZGVyLgorICBzd2l0Y2ggKGNvbnRhaW5lcl9pbnRlcm5hbDo6R3JvdXA6OmtX
aWR0aCkgeworICAgIGNhc2UgODoKKyAgICAgIGlmIChrUmFuZG9taXplc0luc2VydHMpIHsKKyAg
ICAgICAgcmV0dXJuIHt7MC45OSwgMC4wMn0sIHswLjk4NSwgMC4wMn0sIHswLjk1LCAwLjA1fX07
CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4ge3swLjk5LCAwLjAxfSwgezAuOTksIDAu
MDF9LCB7MC45NSwgMC4wMn19OworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSAxNjoK
KyAgICAgIGlmIChrUmFuZG9taXplc0luc2VydHMpIHsKKyAgICAgICAgcmV0dXJuIHt7MC45OCwg
MC4wMn0sIHswLjk3OCwgMC4wMn0sIHswLjk2LCAwLjAyfX07CisgICAgICB9IGVsc2UgeworICAg
ICAgICByZXR1cm4ge3swLjk5OCwgMC4wMDN9LCB7MC45OTUsIDAuMDF9LCB7MC45NzUsIDAuMDJ9
fTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAvLyBJZ25vcmUg
YW55dGhpbmcgZWxzZS4KKyAgICAgIHJldHVybiB7fTsKKyAgfQorfQorCisvLyBUaGlzIGlzIGFs
bW9zdCBhIGNoYW5nZSBkZXRlY3RvciwgYnV0IGl0IGFsbG93cyB1cyB0byBrbm93IGhvdyB3ZSBh
cmUKKy8vIGFmZmVjdGluZyB0aGUgcHJvYmUgZGlzdHJpYnV0aW9uLgorVEVTVChUYWJsZSwgRWZm
ZWN0aXZlTG9hZEZhY3RvckludHMpIHsKKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBwZXJmZWN0X3Jh
dGlvcyA9IENvbGxlY3RQZXJmZWN0UmF0aW9zKAorICAgICAgSW50VGFibGUoKSwgW10oSW50VGFi
bGUmIHQpIHsgcmV0dXJuICp0LmVtcGxhY2UodC5zaXplKCkpLmZpcnN0OyB9KTsKKworICBhdXRv
IHJhdGlvcyA9IEludFRhYmxlUGVmZWN0UmF0aW9zKCk7CisgIGlmIChyYXRpb3MuZW1wdHkoKSkg
cmV0dXJuOworCisgIEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zLmZyb250KCksCisgICAgICAg
ICAgICAgIERvdWJsZU5lYXIocmF0aW9zWzBdLmZpcnN0LCByYXRpb3NbMF0uc2Vjb25kKSk7Cisg
IEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zW3BlcmZlY3RfcmF0aW9zLnNpemUoKSAvIDJdLAor
ICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1sxXS5maXJzdCwgcmF0aW9zWzFdLnNlY29u
ZCkpOworICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlvcy5iYWNrKCksCisgICAgICAgICAgICAg
IERvdWJsZU5lYXIocmF0aW9zWzJdLmZpcnN0LCByYXRpb3NbMl0uc2Vjb25kKSk7Cit9CisKKy8v
IENvbmZpcm0gdGhhdCB3ZSBhc3NlcnQgaWYgd2UgdHJ5IHRvIGVyYXNlKCkgZW5kKCkuCitURVNU
KFRhYmxlRGVhdGhUZXN0LCBFcmFzZU9mRW5kQXNzZXJ0cykgeworICAvLyBVc2UgYW4gYXNzZXJ0
IHdpdGggc2lkZS1lZmZlY3RzIHRvIGZpZ3VyZSBvdXQgaWYgdGhleSBhcmUgYWN0dWFsbHkgZW5h
YmxlZC4KKyAgYm9vbCBhc3NlcnRfZW5hYmxlZCA9IGZhbHNlOworICBhc3NlcnQoWyZdKCkgewor
ICAgIGFzc2VydF9lbmFibGVkID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSgpKTsKKyAg
aWYgKCFhc3NlcnRfZW5hYmxlZCkgcmV0dXJuOworCisgIEludFRhYmxlIHQ7CisgIC8vIEV4dHJh
IHNpbXBsZSAicmVnZXhwIiBhcyByZWdleHAgc3VwcG9ydCBpcyBoaWdobHkgdmFyaWVkIGFjcm9z
cyBwbGF0Zm9ybXMuCisgIGNvbnN0ZXhwciBjaGFyIGtEZWF0aE1zZ1tdID0gIml0ICE9IGVuZCI7
CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQodC5lcmFzZSh0LmVuZCgpKSwga0RlYXRoTXNn
KTsKK30KKworI2lmZGVmIEFERFJFU1NfU0FOSVRJWkVSCitURVNUKFNhbml0aXplciwgUG9pc29u
aW5nVW51c2VkKSB7CisgIEludFRhYmxlIHQ7CisgIC8vIEluc2VydCBzb21ldGhpbmcgdG8gZm9y
Y2UgYW4gYWxsb2NhdGlvbi4KKyAgaW50NjRfdCYgdjEgPSAqdC5pbnNlcnQoMCkuZmlyc3Q7CisK
KyAgLy8gTWFrZSBzdXJlIHRoZXJlIGlzIHNvbWV0aGluZyB0byB0ZXN0LgorICBBU1NFUlRfR1Qo
dC5jYXBhY2l0eSgpLCAxKTsKKworICBpbnQ2NF90KiBzbG90cyA9IFJhd0hhc2hTZXRUZXN0T25s
eUFjY2Vzczo6R2V0U2xvdHModCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC5jYXBhY2l0
eSgpOyArK2kpIHsKKyAgICBFWFBFQ1RfRVEoc2xvdHMgKyBpICE9ICZ2MSwgX19hc2FuX2FkZHJl
c3NfaXNfcG9pc29uZWQoc2xvdHMgKyBpKSk7CisgIH0KK30KKworVEVTVChTYW5pdGl6ZXIsIFBv
aXNvbmluZ09uRXJhc2UpIHsKKyAgSW50VGFibGUgdDsKKyAgaW50NjRfdCYgdiA9ICp0Lmluc2Vy
dCgwKS5maXJzdDsKKworICBFWFBFQ1RfRkFMU0UoX19hc2FuX2FkZHJlc3NfaXNfcG9pc29uZWQo
JnYpKTsKKyAgdC5lcmFzZSgwKTsKKyAgRVhQRUNUX1RSVUUoX19hc2FuX2FkZHJlc3NfaXNfcG9p
c29uZWQoJnYpKTsKK30KKyNlbmRpZiAgLy8gQUREUkVTU19TQU5JVElaRVIKKworfSAgLy8gbmFt
ZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3Bh
Y2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFu
Y2VfdHJhY2tlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNlX3Ry
YWNrZXIuY2MKaW5kZXggZmUwMGFjYThmYjk4ZjEyMGYyMzUyMDIzNjliMGI1YmU4NzZkNDc0Ny4u
YjE4ZTBiYjdhMWVhNWZmZmRjOTYxOGYxZTc5M2I4ZmY5MmVkOTAzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmNjCkBAIC0yMSw2ICsy
MSw3IEBAIGludCBCYXNlQ291bnRlZEluc3RhbmNlOjpudW1fbGl2ZV9pbnN0YW5jZXNfID0gMDsK
IGludCBCYXNlQ291bnRlZEluc3RhbmNlOjpudW1fbW92ZXNfID0gMDsKIGludCBCYXNlQ291bnRl
ZEluc3RhbmNlOjpudW1fY29waWVzXyA9IDA7CiBpbnQgQmFzZUNvdW50ZWRJbnN0YW5jZTo6bnVt
X3N3YXBzXyA9IDA7CitpbnQgQmFzZUNvdW50ZWRJbnN0YW5jZTo6bnVtX2NvbXBhcmlzb25zXyA9
IDA7CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0X2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJz
bApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJh
Y2tlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5o
CmluZGV4IGNmOGYzYTUzMWU2MjEyZmNhYTEzZDY1MzUxNzBhZjg2YmZmYTY5OGEuLmVjNDVmNTc0
MDM3ZmM4ZTBiNjkzN2JjZDhmYzFmNDI3NTZlMDgxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmgKQEAgLTIyLDggKzIyLDggQEAgbmFt
ZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHRlc3RfaW50ZXJuYWwgewogCiAvLyBBIHR5cGUgdGhh
dCBjb3VudHMgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgdGhlIHR5cGUsIHRoZSBsaXZlIG9jY3Vy
cmVuY2VzIG9mCi0vLyB0aGUgdHlwZSwgYXMgd2VsbCBhcyB0aGUgbnVtYmVyIG9mIGNvcGllcywg
bW92ZXMsIGFuZCBzd2FwcyB0aGF0IGhhdmUKLS8vIG9jY3VycmVkIG9uIHRoZSB0eXBlLiBUaGlz
IGlzIHVzZWQgYXMgYSBiYXNlIGNsYXNzIGZvciB0aGUgY29weWFibGUsCisvLyB0aGUgdHlwZSwg
YXMgd2VsbCBhcyB0aGUgbnVtYmVyIG9mIGNvcGllcywgbW92ZXMsIHN3YXBzLCBhbmQgY29tcGFy
aXNvbnMgdGhhdAorLy8gaGF2ZSBvY2N1cnJlZCBvbiB0aGUgdHlwZS4gVGhpcyBpcyB1c2VkIGFz
IGEgYmFzZSBjbGFzcyBmb3IgdGhlIGNvcHlhYmxlLAogLy8gY29weWFibGUrbW92YWJsZSwgYW5k
IG1vdmFibGUgdHlwZXMgYmVsb3cgdGhhdCBhcmUgdXNlZCBpbiBhY3R1YWwgdGVzdHMuIFVzZQog
Ly8gSW5zdGFuY2VUcmFja2VyIGluIHRlc3RzIHRvIHRyYWNrIHRoZSBudW1iZXIgb2YgaW5zdGFu
Y2VzLgogY2xhc3MgQmFzZUNvdW50ZWRJbnN0YW5jZSB7CkBAIC02Niw2ICs2NiwzNiBAQCBjbGFz
cyBCYXNlQ291bnRlZEluc3RhbmNlIHsKICAgICByZXR1cm4gKnRoaXM7CiAgIH0KIAorICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQmFzZUNvdW50ZWRJbnN0YW5jZSYgeCkgY29uc3QgeworICAgICsr
bnVtX2NvbXBhcmlzb25zXzsKKyAgICByZXR1cm4gdmFsdWVfID09IHgudmFsdWVfOworICB9CisK
KyAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJhc2VDb3VudGVkSW5zdGFuY2UmIHgpIGNvbnN0IHsK
KyAgICArK251bV9jb21wYXJpc29uc187CisgICAgcmV0dXJuIHZhbHVlXyAhPSB4LnZhbHVlXzsK
KyAgfQorCisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEJhc2VDb3VudGVkSW5zdGFuY2UmIHgpIGNv
bnN0IHsKKyAgICArK251bV9jb21wYXJpc29uc187CisgICAgcmV0dXJuIHZhbHVlXyA8IHgudmFs
dWVfOworICB9CisKKyAgYm9vbCBvcGVyYXRvcj4oY29uc3QgQmFzZUNvdW50ZWRJbnN0YW5jZSYg
eCkgY29uc3QgeworICAgICsrbnVtX2NvbXBhcmlzb25zXzsKKyAgICByZXR1cm4gdmFsdWVfID4g
eC52YWx1ZV87CisgIH0KKworICBib29sIG9wZXJhdG9yPD0oY29uc3QgQmFzZUNvdW50ZWRJbnN0
YW5jZSYgeCkgY29uc3QgeworICAgICsrbnVtX2NvbXBhcmlzb25zXzsKKyAgICByZXR1cm4gdmFs
dWVfIDw9IHgudmFsdWVfOworICB9CisKKyAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IEJhc2VDb3Vu
dGVkSW5zdGFuY2UmIHgpIGNvbnN0IHsKKyAgICArK251bV9jb21wYXJpc29uc187CisgICAgcmV0
dXJuIHZhbHVlXyA+PSB4LnZhbHVlXzsKKyAgfQorCiAgIGludCB2YWx1ZSgpIGNvbnN0IHsKICAg
ICBpZiAoIWlzX2xpdmVfKSBzdGQ6OmFib3J0KCk7CiAgICAgcmV0dXJuIHZhbHVlXzsKQEAgLTEw
OCw2ICsxMzgsOSBAQCBjbGFzcyBCYXNlQ291bnRlZEluc3RhbmNlIHsKIAogICAvLyBOdW1iZXIg
b2YgdGltZXMgdGhhdCBCYXNlQ291bnRlZEluc3RhbmNlIG9iamVjdHMgd2VyZSBzd2FwcGVkLgog
ICBzdGF0aWMgaW50IG51bV9zd2Fwc187CisKKyAgLy8gTnVtYmVyIG9mIHRpbWVzIHRoYXQgQmFz
ZUNvdW50ZWRJbnN0YW5jZSBvYmplY3RzIHdlcmUgY29tcGFyZWQuCisgIHN0YXRpYyBpbnQgbnVt
X2NvbXBhcmlzb25zXzsKIH07CiAKIC8vIEhlbHBlciB0byB0cmFjayB0aGUgQmFzZUNvdW50ZWRJ
bnN0YW5jZSBpbnN0YW5jZSBjb3VudGVycy4gRXhwZWN0cyB0aGF0IHRoZQpAQCAtMTUyLDEzICsx
ODUsMjEgQEAgY2xhc3MgSW5zdGFuY2VUcmFja2VyIHsKICAgLy8gY29uc3RydWN0aW9uIG9yIHRo
ZSBsYXN0IGNhbGwgdG8gUmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCkuCiAgIGludCBzd2FwcygpIGNv
bnN0IHsgcmV0dXJuIEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9zd2Fwc18gLSBzdGFydF9zd2Fw
c187IH0KIAotICAvLyBSZXNldHMgdGhlIGJhc2UgdmFsdWVzIGZvciBtb3ZlcywgY29waWVzIGFu
ZCBzd2FwcyB0byB0aGUgY3VycmVudCB2YWx1ZXMsCi0gIC8vIHNvIHRoYXQgc3Vic2VxdWVudCBH
ZXQqKCkgY2FsbHMgZm9yIG1vdmVzLCBjb3BpZXMgYW5kIHN3YXBzIHdpbGwgY29tcGFyZSB0bwot
ICAvLyB0aGUgc2l0dWF0aW9uIGF0IHRoZSBwb2ludCBvZiB0aGlzIGNhbGwuCisgIC8vIFJldHVy
bnMgdGhlIG51bWJlciBvZiBjb21wYXJpc29ucyBvbiBCYXNlQ291bnRlZEluc3RhbmNlIG9iamVj
dHMgc2luY2UKKyAgLy8gY29uc3RydWN0aW9uIG9yIHRoZSBsYXN0IGNhbGwgdG8gUmVzZXRDb3Bp
ZXNNb3Zlc1N3YXBzKCkuCisgIGludCBjb21wYXJpc29ucygpIGNvbnN0IHsKKyAgICByZXR1cm4g
QmFzZUNvdW50ZWRJbnN0YW5jZTo6bnVtX2NvbXBhcmlzb25zXyAtIHN0YXJ0X2NvbXBhcmlzb25z
XzsKKyAgfQorCisgIC8vIFJlc2V0cyB0aGUgYmFzZSB2YWx1ZXMgZm9yIG1vdmVzLCBjb3BpZXMs
IGNvbXBhcmlzb25zLCBhbmQgc3dhcHMgdG8gdGhlCisgIC8vIGN1cnJlbnQgdmFsdWVzLCBzbyB0
aGF0IHN1YnNlcXVlbnQgR2V0KigpIGNhbGxzIGZvciBtb3ZlcywgY29waWVzLAorICAvLyBjb21w
YXJpc29ucywgYW5kIHN3YXBzIHdpbGwgY29tcGFyZSB0byB0aGUgc2l0dWF0aW9uIGF0IHRoZSBw
b2ludCBvZiB0aGlzCisgIC8vIGNhbGwuCiAgIHZvaWQgUmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCkg
ewogICAgIHN0YXJ0X21vdmVzXyA9IEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9tb3Zlc187CiAg
ICAgc3RhcnRfY29waWVzXyA9IEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9jb3BpZXNfOwogICAg
IHN0YXJ0X3N3YXBzXyA9IEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9zd2Fwc187CisgICAgc3Rh
cnRfY29tcGFyaXNvbnNfID0gQmFzZUNvdW50ZWRJbnN0YW5jZTo6bnVtX2NvbXBhcmlzb25zXzsK
ICAgfQogCiAgcHJpdmF0ZToKQEAgLTE2Nyw2ICsyMDgsNyBAQCBjbGFzcyBJbnN0YW5jZVRyYWNr
ZXIgewogICBpbnQgc3RhcnRfbW92ZXNfOwogICBpbnQgc3RhcnRfY29waWVzXzsKICAgaW50IHN0
YXJ0X3N3YXBzXzsKKyAgaW50IHN0YXJ0X2NvbXBhcmlzb25zXzsKIH07CiAKIC8vIENvcHlhYmxl
LCBub3QgbW92YWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0
X2luc3RhbmNlX3RyYWNrZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0
X2luc3RhbmNlX3RyYWNrZXJfdGVzdC5jYwppbmRleCA5ZWZiNjc3MWNmMDg2ZGIxNmZlZjM5NDYw
YzU5MTkyMWVjZDVmNjkxLi4wYWU1NzYzNmRmMjEzMzg5NzkyMTAzOTViYjM5OTZiYmQ4Yzk3Yjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFj
a2VyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2Vf
dHJhY2tlcl90ZXN0LmNjCkBAIC0xNTcsNCArMTU3LDI2IEBAIFRFU1QoVGVzdEluc3RhbmNlVHJh
Y2tlciwgRXhpc3RpbmdJbnN0YW5jZXMpIHsKICAgRVhQRUNUX0VRKDEsIHRyYWNrZXIubW92ZXMo
KSk7CiB9CiAKK1RFU1QoVGVzdEluc3RhbmNlVHJhY2tlciwgQ29tcGFyaXNvbnMpIHsKKyAgSW5z
dGFuY2VUcmFja2VyIHRyYWNrZXI7CisgIE1vdmFibGVPbmx5SW5zdGFuY2Ugb25lKDEpLCB0d28o
Mik7CisKKyAgRVhQRUNUX0VRKDAsIHRyYWNrZXIuY29tcGFyaXNvbnMoKSk7CisgIEVYUEVDVF9G
QUxTRShvbmUgPT0gdHdvKTsKKyAgRVhQRUNUX0VRKDEsIHRyYWNrZXIuY29tcGFyaXNvbnMoKSk7
CisgIEVYUEVDVF9UUlVFKG9uZSAhPSB0d28pOworICBFWFBFQ1RfRVEoMiwgdHJhY2tlci5jb21w
YXJpc29ucygpKTsKKyAgRVhQRUNUX1RSVUUob25lIDwgdHdvKTsKKyAgRVhQRUNUX0VRKDMsIHRy
YWNrZXIuY29tcGFyaXNvbnMoKSk7CisgIEVYUEVDVF9GQUxTRShvbmUgPiB0d28pOworICBFWFBF
Q1RfRVEoNCwgdHJhY2tlci5jb21wYXJpc29ucygpKTsKKyAgRVhQRUNUX1RSVUUob25lIDw9IHR3
byk7CisgIEVYUEVDVF9FUSg1LCB0cmFja2VyLmNvbXBhcmlzb25zKCkpOworICBFWFBFQ1RfRkFM
U0Uob25lID49IHR3byk7CisgIEVYUEVDVF9FUSg2LCB0cmFja2VyLmNvbXBhcmlzb25zKCkpOwor
CisgIHRyYWNrZXIuUmVzZXRDb3BpZXNNb3Zlc1N3YXBzKCk7CisgIEVYUEVDVF9FUSgwLCB0cmFj
a2VyLmNvbXBhcmlzb25zKCkpOworfQorCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC90cmFja2VkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvdHJhY2tlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkMTRhZjAzMTM4ZDNlZmQ2NjIzN2I3OTdmM2VmNzNj
MDAzYzg4MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdHJh
Y2tlZC5oCkBAIC0wLDAgKzEsNzggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVFJBQ0tFRF9IXworI2Rl
ZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9UUkFDS0VEX0hfCisKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworbmFtZXNwYWNl
IGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKKy8vIEEgY2xhc3MgdGhh
dCB0cmFja3MgaXRzIGNvcGllcyBhbmQgbW92ZXMgc28gdGhhdCBpdCBjYW4gYmUgcXVlcmllZCBp
biB0ZXN0cy4KK3RlbXBsYXRlIDxjbGFzcyBUPgorY2xhc3MgVHJhY2tlZCB7CisgcHVibGljOgor
ICBUcmFja2VkKCkge30KKyAgLy8gTk9MSU5UTkVYVExJTkUocnVudGltZS9leHBsaWNpdCkKKyAg
VHJhY2tlZChjb25zdCBUJiB2YWwpIDogdmFsXyh2YWwpIHt9CisgIFRyYWNrZWQoY29uc3QgVHJh
Y2tlZCYgdGhhdCkKKyAgICAgIDogdmFsXyh0aGF0LnZhbF8pLAorICAgICAgICBudW1fbW92ZXNf
KHRoYXQubnVtX21vdmVzXyksCisgICAgICAgIG51bV9jb3BpZXNfKHRoYXQubnVtX2NvcGllc18p
IHsKKyAgICArKygqbnVtX2NvcGllc18pOworICB9CisgIFRyYWNrZWQoVHJhY2tlZCYmIHRoYXQp
CisgICAgICA6IHZhbF8oc3RkOjptb3ZlKHRoYXQudmFsXykpLAorICAgICAgICBudW1fbW92ZXNf
KHN0ZDo6bW92ZSh0aGF0Lm51bV9tb3Zlc18pKSwKKyAgICAgICAgbnVtX2NvcGllc18oc3RkOjpt
b3ZlKHRoYXQubnVtX2NvcGllc18pKSB7CisgICAgKysoKm51bV9tb3Zlc18pOworICB9CisgIFRy
YWNrZWQmIG9wZXJhdG9yPShjb25zdCBUcmFja2VkJiB0aGF0KSB7CisgICAgdmFsXyA9IHRoYXQu
dmFsXzsKKyAgICBudW1fbW92ZXNfID0gdGhhdC5udW1fbW92ZXNfOworICAgIG51bV9jb3BpZXNf
ID0gdGhhdC5udW1fY29waWVzXzsKKyAgICArKygqbnVtX2NvcGllc18pOworICB9CisgIFRyYWNr
ZWQmIG9wZXJhdG9yPShUcmFja2VkJiYgdGhhdCkgeworICAgIHZhbF8gPSBzdGQ6Om1vdmUodGhh
dC52YWxfKTsKKyAgICBudW1fbW92ZXNfID0gc3RkOjptb3ZlKHRoYXQubnVtX21vdmVzXyk7Cisg
ICAgbnVtX2NvcGllc18gPSBzdGQ6Om1vdmUodGhhdC5udW1fY29waWVzXyk7CisgICAgKysoKm51
bV9tb3Zlc18pOworICB9CisKKyAgY29uc3QgVCYgdmFsKCkgY29uc3QgeyByZXR1cm4gdmFsXzsg
fQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhY2tlZCYgYSwgY29uc3QgVHJh
Y2tlZCYgYikgeworICAgIHJldHVybiBhLnZhbF8gPT0gYi52YWxfOworICB9CisgIGZyaWVuZCBi
b29sIG9wZXJhdG9yIT0oY29uc3QgVHJhY2tlZCYgYSwgY29uc3QgVHJhY2tlZCYgYikgeworICAg
IHJldHVybiAhKGEgPT0gYik7CisgIH0KKworICBzaXplX3QgbnVtX2NvcGllcygpIHsgcmV0dXJu
ICpudW1fY29waWVzXzsgfQorICBzaXplX3QgbnVtX21vdmVzKCkgeyByZXR1cm4gKm51bV9tb3Zl
c187IH0KKworIHByaXZhdGU6CisgIFQgdmFsXzsKKyAgc3RkOjpzaGFyZWRfcHRyPHNpemVfdD4g
bnVtX21vdmVzXyA9IHN0ZDo6bWFrZV9zaGFyZWQ8c2l6ZV90PigwKTsKKyAgc3RkOjpzaGFyZWRf
cHRyPHNpemVfdD4gbnVtX2NvcGllc18gPSBzdGQ6Om1ha2Vfc2hhcmVkPHNpemVfdD4oMCk7Cit9
OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1RSQUNLRURfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0cnVj
dG9yX3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0
cnVjdG9yX3Rlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmZiNjQ2Y2IyNjRhNjVlZmE0YmVjY2RlZjJjYTI4
ZTE0ZTlhNWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vu
b3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oCkBAIC0wLDAgKzEsNDA0IEBACisvLyBDb3B5
cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVS
X0lOVEVSTkFMX1VOT1JERVJFRF9NQVBfQ09OU1RSVUNUT1JfVEVTVF9IXworI2RlZmluZSBBQlNM
X0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfTUFQX0NPTlNUUlVDVE9SX1RFU1RfSF8KKwor
I2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJnbW9j
ay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgorI2luY2x1ZGUgImFic2wv
Y29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBV
bm9yZE1hcD4KK2NsYXNzIENvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
e307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKENvbnN0cnVjdG9yVGVzdCk7CisKK1RZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIE5vQXJncykgeworICBUeXBlUGFyYW0gbTsKKyAgRVhQRUNUX1RS
VUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVt
ZW50c0FyZSgpKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291
bnQpIHsKKyAgVHlwZVBhcmFtIG0oMTIzKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAg
RVhQRUNUX1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQ
RUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1
Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaCkgeworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjpoYXNoZXI7CisgIEggaGFzaGVyOworICBUeXBlUGFyYW0gbSgxMjMsIGhhc2hlcik7Cisg
IEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX1RSVUUobS5l
bXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0Fy
ZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisKK1RZUEVEX1RF
U1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaEVxdWFsKSB7CisgIHVzaW5nIEgg
PSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQ
YXJhbTo6a2V5X2VxdWFsOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgVHlwZVBhcmFtIG0o
MTIzLCBoYXNoZXIsIGVxdWFsKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBoYXNo
ZXIpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgZXF1YWwpOworICBFWFBFQ1RfVFJVRShtLmVt
cHR5KCkpOworICBFWFBFQ1RfVEhBVChtLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJl
KCkpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKK30KKworVFlQRURfVEVT
VF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRIYXNoRXF1YWxBbGxvYykgeworICB1c2lu
ZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBU
eXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxs
b2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBU
eXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uaGFz
aF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgZXF1YWwpOwor
ICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUobS5l
bXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0Fy
ZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisKK1RZUEVEX1RF
U1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50QWxsb2MpIHsKKyNpZiBkZWZpbmVkKFVO
T1JERVJFRF9NQVBfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNykKKyAgdXNp
bmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEEgYWxsb2MoMCk7
CisgIFR5cGVQYXJhbSBtKDEyMywgYWxsb2MpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9y
KCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQobSwg
Ojp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0
X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVz
dCwgQnVja2V0Q291bnRIYXNoQWxsb2MpIHsKKyNpZiBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hY
MTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNykKKyAgdXNpbmcgSCA9IHR5cGVuYW1l
IFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxv
Y2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKDEy
MywgaGFzaGVyLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVy
KTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9UUlVF
KG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVu
dHNBcmUoKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9
CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldEFsbG9jKSB7CisjaWYgQUJT
TF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKGFs
bG9jKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9U
UlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxl
bWVudHNBcmUoKSk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwg
SW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hFcXVhbEFsbG9jKSB7CisgIHVzaW5nIFQgPSBoYXNoX2lu
dGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBlbmFtZSBU
eXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2Vx
dWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAg
SCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIHN0ZDo6dmVjdG9yPFQ+IHZh
bHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwK
KyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlw
ZVBhcmFtIG0odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSwgMTIzLCBoYXNoZXIsIGVxdWFs
LCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQ
RUNUX0VRKG0ua2V5X2VxKCksIGVxdWFsKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigp
LCBhbGxvYyk7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVs
ZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAx
MjMpOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJhdG9yQnVj
a2V0QWxsb2MpIHsKKyNpZiBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTQpIHx8IGRlZmluZWQo
VU5PUkRFUkVEX01BUF9DWFgxNykKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRl
ZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2Nh
dG9yX3R5cGU7CisgIEEgYWxsb2MoMCk7CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3Rk
OjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAg
ICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG0odmFs
dWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSwgMTIzLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmdl
dF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5n
OjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBFWFBFQ1RfR0UobS5idWNr
ZXRfY291bnQoKSwgMTIzKTsKKyNlbmRpZgorfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jKSB7CisjaWYgZGVmaW5lZChVTk9SREVS
RURfTUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCisgIHVzaW5nIFQg
PSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0
eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJh
bTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBBIGFsbG9jKDApOworICBzdGQ6OnZl
Y3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFs
dWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4o
KSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCksIDEyMywgaGFz
aGVyLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAg
RVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9USEFUKGl0ZW1z
KG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CisgIEVY
UEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3RvcikgeworICB1c2luZyBUID0gaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUg
VHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9l
cXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7Cisg
IEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgxMjMs
IGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gMTA7ICsr
aSkgbS5pbnNlcnQoaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKSk7CisgIFR5cGVQYXJh
bSBuKG0pOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIG4uaGFzaF9mdW5jdGlvbigp
KTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkpOworICBFWFBFQ1RfRVEobS5n
ZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKG0sIG4pOwor
fQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3JBbGxvYykg
eworI2lmIEFCU0xfVU5PUkRFUkVEX1NVUFBPUlRTX0FMTE9DX0NUT1JTCisgIHVzaW5nIFQgPSBo
YXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBl
bmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlw
ZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBt
KDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSAx
MDsgKytpKSBtLmluc2VydChoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpKTsKKyAgVHlw
ZVBhcmFtIG4obSwgQSgxMSkpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIG4uaGFz
aF9mdW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkpOworICBF
WFBFQ1RfTkUobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNU
X0VRKG0sIG4pOworI2VuZGlmCit9CisKKy8vIFRPRE8oYWxraXMpOiBUZXN0IG5vbi1wcm9wYWdh
dGluZyBhbGxvY2F0b3JzIG9uIGNvcHkgY29uc3RydWN0b3JzLgorCitUWVBFRF9URVNUX1AoQ29u
c3RydWN0b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3IpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJu
YWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQ
YXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7
CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhh
c2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNo
ZXIsIGVxdWFsLCBhbGxvYyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IDEwOyArK2kpIG0u
aW5zZXJ0KGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkpOworICBUeXBlUGFyYW0gdCht
KTsKKyAgVHlwZVBhcmFtIG4oc3RkOjptb3ZlKHQpKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5j
dGlvbigpLCBuLmhhc2hfZnVuY3Rpb24oKSk7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBuLmtl
eV9lcSgpKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBuLmdldF9hbGxvY2F0b3Io
KSk7CisgIEVYUEVDVF9FUShtLCBuKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVz
dCwgTW92ZUNvbnN0cnVjdG9yQWxsb2MpIHsKKyNpZiBBQlNMX1VOT1JERVJFRF9TVVBQT1JUU19B
TExPQ19DVE9SUworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBl
UGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5n
IEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1l
IFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBB
IGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgIT0gMTA7ICsraSkgbS5pbnNlcnQoaGFzaF9pbnRlcm5hbDo6
R2VuZXJhdG9yPFQ+KCkoKSk7CisgIFR5cGVQYXJhbSB0KG0pOworICBUeXBlUGFyYW0gbihzdGQ6
Om1vdmUodCksIEEoMSkpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIG4uaGFzaF9m
dW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkpOworICBFWFBF
Q1RfTkUobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VR
KG0sIG4pOworI2VuZGlmCit9CisKKy8vIFRPRE8oYWxraXMpOiBUZXN0IG5vbi1wcm9wYWdhdGlu
ZyBhbGxvY2F0b3JzIG9uIG1vdmUgY29uc3RydWN0b3JzLgorCitUWVBFRF9URVNUX1AoQ29uc3Ry
dWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoRXF1YWxBbGxvYykgeworICB1c2lu
ZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBoYXNoX2lu
dGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gdmFs
dWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIHVzaW5nIEggPSB0
eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJh
bTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3Jf
dHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJh
bSBtKHZhbHVlcywgMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhh
c2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIGVxdWFsKTsK
KyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9USEFUKGl0
ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7Cisg
IEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworfQorCitUWVBFRF9URVNUX1AoQ29u
c3RydWN0b3JUZXN0LCBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxvYykgeworI2lmIGRlZmluZWQo
VU5PUkRFUkVEX01BUF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE3KQorICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2lu
ZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgaGFzaF9pbnRlcm5h
bDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcyA9
IHtnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCl9OworICBBIGFsbG9jKDApOworICBU
eXBlUGFyYW0gbSh2YWx1ZXMsIDEyMywgYWxsb2MpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2Nh
dG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRl
cmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50
KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5p
dGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jKSB7CisjaWYgZGVmaW5lZChVTk9SREVSRURfTUFQ
X0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCisgIHVzaW5nIFQgPSBoYXNo
X2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBlbmFt
ZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxs
b2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBBIGFsbG9jKDApOworICBoYXNoX2ludGVybmFs
OjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gdmFsdWVzID0g
e2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIFR5cGVQYXJhbSBtKHZhbHVl
cywgMTIzLCBoYXNoZXIsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBo
YXNoZXIpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNU
X1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1
ZXMpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKwor
VFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudCkgeworICB1c2luZyBUID0g
aGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlw
ZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06
OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5
cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBoYXNoX2ludGVy
bmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBUeXBlUGFyYW0gbSh7Z2VuKCksIGdlbigpLCBnZW4o
KX0sIDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBUeXBlUGFyYW0gbjsKKyAgbiA9IG07
CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgbi5oYXNoX2Z1bmN0aW9uKCkpOworICBF
WFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CisgIEVYUEVDVF9FUShtLCBuKTsKK30K
KworLy8gVE9ETyhhbGtpcyk6IFRlc3QgW25vbi1dcHJvcGFnYXRpbmcgYWxsb2NhdG9ycyBvbiBt
b3ZlL2NvcHkgYXNzaWdubWVudHMKKy8vIChpdCBkZXBlbmRzIG9uIHRyYWl0cykuCisKK1RZUEVE
X1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIE1vdmVBc3NpZ25tZW50KSB7CisgIHVzaW5nIFQgPSBo
YXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBl
bmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlw
ZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIGhhc2hfaW50ZXJu
YWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIFR5cGVQYXJhbSBtKHtnZW4oKSwgZ2VuKCksIGdlbigp
fSwgMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIFR5cGVQYXJhbSB0KG0pOworICBUeXBl
UGFyYW0gbjsKKyAgbiA9IHN0ZDo6bW92ZSh0KTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlv
bigpLCBuLmhhc2hfZnVuY3Rpb24oKSk7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBuLmtleV9l
cSgpKTsKKyAgRVhQRUNUX0VRKG0sIG4pOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdCkgeworICB1c2luZyBUID0gaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBoYXNoX2ludGVybmFsOjpHZW5l
cmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gdmFsdWVzID0ge2dlbigp
LCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIFR5cGVQYXJhbSBtOworICBtID0gdmFs
dWVzOworICBFWFBFQ1RfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50
c0FyZUFycmF5KHZhbHVlcykpOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBB
c3NpZ25tZW50T3ZlcndyaXRlc0V4aXN0aW5nKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFs
OjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxU
PiBnZW47CisgIFR5cGVQYXJhbSBtKHtnZW4oKSwgZ2VuKCksIGdlbigpfSk7CisgIFR5cGVQYXJh
bSBuKHtnZW4oKX0pOworICBuID0gbTsKKyAgRVhQRUNUX0VRKG0sIG4pOworfQorCitUWVBFRF9U
RVNUX1AoQ29uc3RydWN0b3JUZXN0LCBNb3ZlQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGluZykg
eworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+Owor
ICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBUeXBlUGFyYW0gbSh7Z2VuKCks
IGdlbigpLCBnZW4oKX0pOworICBUeXBlUGFyYW0gdChtKTsKKyAgVHlwZVBhcmFtIG4oe2dlbigp
fSk7CisgIG4gPSBzdGQ6Om1vdmUodCk7CisgIEVYUEVDVF9FUShtLCBuKTsKK30KKworVFlQRURf
VEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudEZyb21Jbml0aWFsaXplckxpc3RPdmVy
d3JpdGVzRXhpc3RpbmcpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5
cGU8VHlwZVBhcmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgc3Rk
Ojppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcyA9IHtnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4o
KSwgZ2VuKCl9OworICBUeXBlUGFyYW0gbTsKKyAgbSA9IHZhbHVlczsKKyAgRVhQRUNUX1RIQVQo
aXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsK
K30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudE9uU2VsZikgewor
ICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBo
YXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
VD4gdmFsdWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIFR5cGVQ
YXJhbSBtKHZhbHVlcyk7CisgIG0gPSAqJm07ICAvLyBBdm9pZCAtV3NlbGYtYXNzaWduCisgIEVY
UEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
dmFsdWVzKSk7Cit9CisKKy8vIFdlIGNhbm5vdCB0ZXN0IHNlbGYgbW92ZSBhcyBzdGFuZGFyZCBz
dGF0ZXMgdGhhdCBpdCBsZWF2ZXMgc3RhbmRhcmQKKy8vIGNvbnRhaW5lcnMgaW4gdW5zcGVjaWZp
ZWQgc3RhdGUgKGFuZCBpbiBwcmFjdGljZSBpbiBjYXVzZXMgbWVtb3J5LWxlYWsKKy8vIGFjY29y
ZGluZyB0byBoZWFwLWNoZWNrZXIhKS4KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoCisg
ICAgQ29uc3RydWN0b3JUZXN0LCBOb0FyZ3MsIEJ1Y2tldENvdW50LCBCdWNrZXRDb3VudEhhc2gs
IEJ1Y2tldENvdW50SGFzaEVxdWFsLAorICAgIEJ1Y2tldENvdW50SGFzaEVxdWFsQWxsb2MsIEJ1
Y2tldENvdW50QWxsb2MsIEJ1Y2tldENvdW50SGFzaEFsbG9jLAorICAgIEJ1Y2tldEFsbG9jLCBJ
bnB1dEl0ZXJhdG9yQnVja2V0SGFzaEVxdWFsQWxsb2MsIElucHV0SXRlcmF0b3JCdWNrZXRBbGxv
YywKKyAgICBJbnB1dEl0ZXJhdG9yQnVja2V0SGFzaEFsbG9jLCBDb3B5Q29uc3RydWN0b3IsIENv
cHlDb25zdHJ1Y3RvckFsbG9jLAorICAgIE1vdmVDb25zdHJ1Y3RvciwgTW92ZUNvbnN0cnVjdG9y
QWxsb2MsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hFcXVhbEFsbG9jLAorICAgIEluaXRpYWxp
emVyTGlzdEJ1Y2tldEFsbG9jLCBJbml0aWFsaXplckxpc3RCdWNrZXRIYXNoQWxsb2MsIEFzc2ln
bm1lbnQsCisgICAgTW92ZUFzc2lnbm1lbnQsIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0
LAorICAgIEFzc2lnbm1lbnRPdmVyd3JpdGVzRXhpc3RpbmcsIE1vdmVBc3NpZ25tZW50T3Zlcndy
aXRlc0V4aXN0aW5nLAorICAgIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0T3ZlcndyaXRl
c0V4aXN0aW5nLCBBc3NpZ25tZW50T25TZWxmKTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5l
cl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlO
RVJfSU5URVJOQUxfVU5PUkRFUkVEX01BUF9DT05TVFJVQ1RPUl9URVNUX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZjFiNmI0ODliMzAxZWI5ZmFkZDFiZjg0OTE5Y2FkNjM3YzlhYjhiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3Vw
X3Rlc3QuaApAQCAtMCwwICsxLDExNCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBB
dXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfTUFQ
X0xPT0tVUF9URVNUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJF
RF9NQVBfTE9PS1VQX1RFU1RfSF8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNo
X2dlbmVyYXRvcl90ZXN0aW5nLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
aGFzaF9wb2xpY3lfdGVzdGluZy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29u
dGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFVub3JkTWFwPgorY2xhc3MgTG9v
a3VwVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK1RZUEVEX1RFU1RfQ0FTRV9Q
KExvb2t1cFRlc3QpOworCitUWVBFRF9URVNUX1AoTG9va3VwVGVzdCwgQXQpIHsKKyAgdXNpbmcg
VCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0
b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVl
cyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkp
OworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgZm9yIChj
b25zdCBhdXRvJiBwIDogdmFsdWVzKSB7CisgICAgY29uc3QgYXV0byYgdmFsID0gbS5hdChwLmZp
cnN0KTsKKyAgICBFWFBFQ1RfRVEocC5zZWNvbmQsIHZhbCkgPDwgOjp0ZXN0aW5nOjpQcmludFRv
U3RyaW5nKHAuZmlyc3QpOworICB9Cit9CisKK1RZUEVEX1RFU1RfUChMb29rdXBUZXN0LCBPcGVy
YXRvckJyYWNrZXQpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8
VHlwZVBhcmFtPjsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6bWFwcGVkX3R5cGU7
CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19p
bnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6Okdl
bmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG07CisgIGZvciAoY29uc3QgYXV0byYgcCA6IHZh
bHVlcykgeworICAgIGF1dG8mIHZhbCA9IG1bcC5maXJzdF07CisgICAgRVhQRUNUX0VRKFYoKSwg
dmFsKSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcocC5maXJzdCk7CisgICAgdmFsID0gcC5z
ZWNvbmQ7CisgIH0KKyAgZm9yIChjb25zdCBhdXRvJiBwIDogdmFsdWVzKQorICAgIEVYUEVDVF9F
UShwLnNlY29uZCwgbVtwLmZpcnN0XSkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHAuZmly
c3QpOworfQorCitUWVBFRF9URVNUX1AoTG9va3VwVGVzdCwgQ291bnQpIHsKKyAgdXNpbmcgVCA9
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8
VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyks
IDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOwor
ICBUeXBlUGFyYW0gbTsKKyAgZm9yIChjb25zdCBhdXRvJiBwIDogdmFsdWVzKQorICAgIEVYUEVD
VF9FUSgwLCBtLmNvdW50KHAuZmlyc3QpKSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcocC5m
aXJzdCk7CisgIG0uaW5zZXJ0KHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBmb3Ig
KGNvbnN0IGF1dG8mIHAgOiB2YWx1ZXMpCisgICAgRVhQRUNUX0VRKDEsIG0uY291bnQocC5maXJz
dCkpIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhwLmZpcnN0KTsKK30KKworVFlQRURfVEVT
VF9QKExvb2t1cFRlc3QsIEZpbmQpIHsKKyAgdXNpbmcgc3RkOjpnZXQ7CisgIHVzaW5nIFQgPSBo
YXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+
IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAx
MCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAg
VHlwZVBhcmFtIG07CisgIGZvciAoY29uc3QgYXV0byYgcCA6IHZhbHVlcykKKyAgICBFWFBFQ1Rf
VFJVRShtLmVuZCgpID09IG0uZmluZChwLmZpcnN0KSkKKyAgICAgICAgPDwgOjp0ZXN0aW5nOjpQ
cmludFRvU3RyaW5nKHAuZmlyc3QpOworICBtLmluc2VydCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVz
LmVuZCgpKTsKKyAgZm9yIChjb25zdCBhdXRvJiBwIDogdmFsdWVzKSB7CisgICAgYXV0byBpdCA9
IG0uZmluZChwLmZpcnN0KTsKKyAgICBFWFBFQ1RfVFJVRShtLmVuZCgpICE9IGl0KSA8PCA6OnRl
c3Rpbmc6OlByaW50VG9TdHJpbmcocC5maXJzdCk7CisgICAgRVhQRUNUX0VRKHAuc2Vjb25kLCBn
ZXQ8MT4oKml0KSkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHAuZmlyc3QpOworICB9Cit9
CisKK1RZUEVEX1RFU1RfUChMb29rdXBUZXN0LCBFcXVhbFJhbmdlKSB7CisgIHVzaW5nIHN0ZDo6
Z2V0OworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+
OworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tf
aW5zZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtOworICBmb3IgKGNvbnN0IGF1dG8mIHAgOiB2
YWx1ZXMpIHsKKyAgICBhdXRvIHIgPSBtLmVxdWFsX3JhbmdlKHAuZmlyc3QpOworICAgIEFTU0VS
VF9FUSgwLCBzdGQ6OmRpc3RhbmNlKHIuZmlyc3QsIHIuc2Vjb25kKSk7CisgIH0KKyAgbS5pbnNl
cnQodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIGZvciAoY29uc3QgYXV0byYgcCA6
IHZhbHVlcykgeworICAgIGF1dG8gciA9IG0uZXF1YWxfcmFuZ2UocC5maXJzdCk7CisgICAgQVNT
RVJUX0VRKDEsIHN0ZDo6ZGlzdGFuY2Uoci5maXJzdCwgci5zZWNvbmQpKTsKKyAgICBFWFBFQ1Rf
RVEocC5zZWNvbmQsIGdldDwxPigqci5maXJzdCkpIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmlu
ZyhwLmZpcnN0KTsKKyAgfQorfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChMb29rdXBU
ZXN0LCBBdCwgT3BlcmF0b3JCcmFja2V0LCBDb3VudCwgRmluZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVxdWFsUmFuZ2UpOworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVy
bmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRF
Uk5BTF9VTk9SREVSRURfTUFQX0xPT0tVUF9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNmM2MzNhZTI3MzU3YzE0NWU2ZTFmMjA2YmEyZDJjYzI0Yzg4NTRhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rl
c3QuaApAQCAtMCwwICsxLDI3MiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRo
b3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfTUFQX01P
RElGSUVSU19URVNUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJF
RF9NQVBfTU9ESUZJRVJTX1RFU1RfSF8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9o
YXNoX2dlbmVyYXRvcl90ZXN0aW5nLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
Y29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFVub3JkTWFwPgorY2xhc3Mg
TW9kaWZpZXJzVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK1RZUEVEX1RFU1Rf
Q0FTRV9QKE1vZGlmaWVyc1Rlc3QpOworCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgQ2xl
YXIpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFt
PjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNr
X2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6
R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVu
ZCgpKTsKKyAgQVNTRVJUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgbS5jbGVhcigpOworICBFWFBFQ1RfVEhBVChpdGVtcyht
KSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX1RSVUUobS5l
bXB0eSgpKTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEluc2VydCkgeworICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2lu
ZyBWID0gdHlwZW5hbWUgVHlwZVBhcmFtOjptYXBwZWRfdHlwZTsKKyAgVCB2YWwgPSBoYXNoX2lu
dGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpOworICBUeXBlUGFyYW0gbTsKKyAgYXV0byBwID0gbS5p
bnNlcnQodmFsKTsKKyAgRVhQRUNUX1RSVUUocC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAq
cC5maXJzdCk7CisgIFQgdmFsMiA9IHt2YWwuZmlyc3QsIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRv
cjxWPigpKCl9OworICBwID0gbS5pbnNlcnQodmFsMik7CisgIEVYUEVDVF9GQUxTRShwLnNlY29u
ZCk7CisgIEVYUEVDVF9FUSh2YWwsICpwLmZpcnN0KTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlm
aWVyc1Rlc3QsIEluc2VydEhpbnQpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVy
YXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6bWFw
cGVkX3R5cGU7CisgIFQgdmFsID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKTsKKyAg
VHlwZVBhcmFtIG07CisgIGF1dG8gaXQgPSBtLmluc2VydChtLmVuZCgpLCB2YWwpOworICBFWFBF
Q1RfVFJVRShpdCAhPSBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKHZhbCwgKml0KTsKKyAgVCB2YWwy
ID0ge3ZhbC5maXJzdCwgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+KCkoKX07CisgIGl0ID0g
bS5pbnNlcnQoaXQsIHZhbDIpOworICBFWFBFQ1RfVFJVRShpdCAhPSBtLmVuZCgpKTsKKyAgRVhQ
RUNUX0VRKHZhbCwgKml0KTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEluc2Vy
dFJhbmdlKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQ
YXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6
YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJu
YWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG07CisgIG0uaW5zZXJ0KHZhbHVlcy5i
ZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBBU1NFUlRfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5n
OjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworfQorCitUWVBFRF9URVNUX1Ao
TW9kaWZpZXJzVGVzdCwgSW5zZXJ0T3JBc3NpZ24pIHsKKyNpZmRlZiBVTk9SREVSRURfTUFQX0NY
WDE3CisgIHVzaW5nIHN0ZDo6Z2V0OworICB1c2luZyBLID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpr
ZXlfdHlwZTsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6bWFwcGVkX3R5cGU7Cisg
IEsgayA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxLPigpKCk7CisgIFYgdmFsID0gaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdG9yPFY+KCkoKTsKKyAgVHlwZVBhcmFtIG07CisgIGF1dG8gcCA9IG0u
aW5zZXJ0X29yX2Fzc2lnbihrLCB2YWwpOworICBFWFBFQ1RfVFJVRShwLnNlY29uZCk7CisgIEVY
UEVDVF9FUShrLCBnZXQ8MD4oKnAuZmlyc3QpKTsKKyAgRVhQRUNUX0VRKHZhbCwgZ2V0PDE+KCpw
LmZpcnN0KSk7CisgIFYgdmFsMiA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxWPigpKCk7Cisg
IHAgPSBtLmluc2VydF9vcl9hc3NpZ24oaywgdmFsMik7CisgIEVYUEVDVF9GQUxTRShwLnNlY29u
ZCk7CisgIEVYUEVDVF9FUShrLCBnZXQ8MD4oKnAuZmlyc3QpKTsKKyAgRVhQRUNUX0VRKHZhbDIs
IGdldDwxPigqcC5maXJzdCkpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNU
ZXN0LCBJbnNlcnRPckFzc2lnbkhpbnQpIHsKKyNpZmRlZiBVTk9SREVSRURfTUFQX0NYWDE3Cisg
IHVzaW5nIHN0ZDo6Z2V0OworICB1c2luZyBLID0gdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfdHlw
ZTsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6bWFwcGVkX3R5cGU7CisgIEsgayA9
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxLPigpKCk7CisgIFYgdmFsID0gaGFzaF9pbnRlcm5h
bDo6R2VuZXJhdG9yPFY+KCkoKTsKKyAgVHlwZVBhcmFtIG07CisgIGF1dG8gaXQgPSBtLmluc2Vy
dF9vcl9hc3NpZ24obS5lbmQoKSwgaywgdmFsKTsKKyAgRVhQRUNUX1RSVUUoaXQgIT0gbS5lbmQo
KSk7CisgIEVYUEVDVF9FUShrLCBnZXQ8MD4oKml0KSk7CisgIEVYUEVDVF9FUSh2YWwsIGdldDwx
PigqaXQpKTsKKyAgViB2YWwyID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+KCkoKTsKKyAg
aXQgPSBtLmluc2VydF9vcl9hc3NpZ24oaXQsIGssIHZhbDIpOworICBFWFBFQ1RfRVEoaywgZ2V0
PDA+KCppdCkpOworICBFWFBFQ1RfRVEodmFsMiwgZ2V0PDE+KCppdCkpOworI2VuZGlmCit9CisK
K1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBFbXBsYWNlKSB7CisgIHVzaW5nIFQgPSBoYXNo
X2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIFYgPSB0eXBlbmFt
ZSBUeXBlUGFyYW06Om1hcHBlZF90eXBlOworICBUIHZhbCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVy
YXRvcjxUPigpKCk7CisgIFR5cGVQYXJhbSBtOworICAvLyBUT0RPKGFsa2lzKTogV2UgbmVlZCBh
IHdheSB0byBydW4gZW1wbGFjZSBpbiBhIG1vcmUgbWVhbmluZ2Z1bCB3YXkuIFBlcmhhcHMKKyAg
Ly8gd2l0aCB0ZXN0IHRyYWl0cy9wb2xpY3kuCisgIGF1dG8gcCA9IG0uZW1wbGFjZSh2YWwpOwor
ICBFWFBFQ1RfVFJVRShwLnNlY29uZCk7CisgIEVYUEVDVF9FUSh2YWwsICpwLmZpcnN0KTsKKyAg
VCB2YWwyID0ge3ZhbC5maXJzdCwgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+KCkoKX07Cisg
IHAgPSBtLmVtcGxhY2UodmFsMik7CisgIEVYUEVDVF9GQUxTRShwLnNlY29uZCk7CisgIEVYUEVD
VF9FUSh2YWwsICpwLmZpcnN0KTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEVt
cGxhY2VIaW50KSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5
cGVQYXJhbT47CisgIHVzaW5nIFYgPSB0eXBlbmFtZSBUeXBlUGFyYW06Om1hcHBlZF90eXBlOwor
ICBUIHZhbCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCk7CisgIFR5cGVQYXJhbSBt
OworICAvLyBUT0RPKGFsa2lzKTogV2UgbmVlZCBhIHdheSB0byBydW4gZW1wbGFjZSBpbiBhIG1v
cmUgbWVhbmluZ2Z1bCB3YXkuIFBlcmhhcHMKKyAgLy8gd2l0aCB0ZXN0IHRyYWl0cy9wb2xpY3ku
CisgIGF1dG8gaXQgPSBtLmVtcGxhY2VfaGludChtLmVuZCgpLCB2YWwpOworICBFWFBFQ1RfRVEo
dmFsLCAqaXQpOworICBUIHZhbDIgPSB7dmFsLmZpcnN0LCBoYXNoX2ludGVybmFsOjpHZW5lcmF0
b3I8Vj4oKSgpfTsKKyAgaXQgPSBtLmVtcGxhY2VfaGludChpdCwgdmFsMik7CisgIEVYUEVDVF9F
USh2YWwsICppdCk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBUcnlFbXBsYWNl
KSB7CisjaWZkZWYgVU5PUkRFUkVEX01BUF9DWFgxNworICB1c2luZyBUID0gaGFzaF9pbnRlcm5h
bDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBWID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjptYXBwZWRfdHlwZTsKKyAgVCB2YWwgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4o
KSgpOworICBUeXBlUGFyYW0gbTsKKyAgLy8gVE9ETyhhbGtpcyk6IFdlIG5lZWQgYSB3YXkgdG8g
cnVuIGVtcGxhY2UgaW4gYSBtb3JlIG1lYW5pbmdmdWwgd2F5LiBQZXJoYXBzCisgIC8vIHdpdGgg
dGVzdCB0cmFpdHMvcG9saWN5LgorICBhdXRvIHAgPSBtLnRyeV9lbXBsYWNlKHZhbC5maXJzdCwg
dmFsLnNlY29uZCk7CisgIEVYUEVDVF9UUlVFKHAuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKHZhbCwg
KnAuZmlyc3QpOworICBUIHZhbDIgPSB7dmFsLmZpcnN0LCBoYXNoX2ludGVybmFsOjpHZW5lcmF0
b3I8Vj4oKSgpfTsKKyAgcCA9IG0udHJ5X2VtcGxhY2UodmFsMi5maXJzdCwgdmFsMi5zZWNvbmQp
OworICBFWFBFQ1RfRkFMU0UocC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqcC5maXJzdCk7
CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIFRyeUVtcGxhY2VIaW50
KSB7CisjaWZkZWYgVU5PUkRFUkVEX01BUF9DWFgxNworICB1c2luZyBUID0gaGFzaF9pbnRlcm5h
bDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBWID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjptYXBwZWRfdHlwZTsKKyAgVCB2YWwgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4o
KSgpOworICBUeXBlUGFyYW0gbTsKKyAgLy8gVE9ETyhhbGtpcyk6IFdlIG5lZWQgYSB3YXkgdG8g
cnVuIGVtcGxhY2UgaW4gYSBtb3JlIG1lYW5pbmdmdWwgd2F5LiBQZXJoYXBzCisgIC8vIHdpdGgg
dGVzdCB0cmFpdHMvcG9saWN5LgorICBhdXRvIGl0ID0gbS50cnlfZW1wbGFjZShtLmVuZCgpLCB2
YWwuZmlyc3QsIHZhbC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqaXQpOworICBUIHZhbDIg
PSB7dmFsLmZpcnN0LCBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8Vj4oKSgpfTsKKyAgaXQgPSBt
LnRyeV9lbXBsYWNlKGl0LCB2YWwyLmZpcnN0LCB2YWwyLnNlY29uZCk7CisgIEVYUEVDVF9FUSh2
YWwsICppdCk7CisjZW5kaWYKK30KKwordGVtcGxhdGUgPGNsYXNzIFY+Cit1c2luZyBJZk5vdFZv
aWQgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc192b2lkPFY+Ojp2YWx1ZSwgVj46
OnR5cGU7CisKKy8vIEluIG9wZW5tYXAgd2UgY2hvc2Ugbm90IHRvIHJldHVybiB0aGUgaXRlcmF0
b3IgZnJvbSBlcmFzZSBiZWNhdXNlIHRoYXQncworLy8gbW9yZSBleHBlbnNpdmUuIEFzIHN1Y2gg
d2UgYWRhcHQgZXJhc2UgdG8gcmV0dXJuIGFuIGl0ZXJhdG9yIGhlcmUuCitzdHJ1Y3QgRXJhc2VG
aXJzdCB7CisgIHRlbXBsYXRlIDxjbGFzcyBNYXA+CisgIGF1dG8gb3BlcmF0b3IoKShNYXAqIG0s
IGludCkgY29uc3QKKyAgICAgIC0+IElmTm90Vm9pZDxkZWNsdHlwZShtLT5lcmFzZShtLT5iZWdp
bigpKSk+IHsKKyAgICByZXR1cm4gbS0+ZXJhc2UobS0+YmVnaW4oKSk7CisgIH0KKyAgdGVtcGxh
dGUgPGNsYXNzIE1hcD4KKyAgdHlwZW5hbWUgTWFwOjppdGVyYXRvciBvcGVyYXRvcigpKE1hcCog
bSwgLi4uKSBjb25zdCB7CisgICAgYXV0byBpdCA9IG0tPmJlZ2luKCk7CisgICAgbS0+ZXJhc2Uo
aXQrKyk7CisgICAgcmV0dXJuIGl0OworICB9Cit9OworCitUWVBFRF9URVNUX1AoTW9kaWZpZXJz
VGVzdCwgRXJhc2UpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8
VHlwZVBhcmFtPjsKKyAgdXNpbmcgc3RkOjpnZXQ7CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsK
KyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAg
ICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFt
IG0odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIEFTU0VSVF9USEFUKGl0ZW1zKG0p
LCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CisgIGF1dG8m
IGZpcnN0ID0gKm0uYmVnaW4oKTsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzMjsKKyAgZm9yIChj
b25zdCBhdXRvJiB2YWwgOiB2YWx1ZXMpCisgICAgaWYgKGdldDwwPih2YWwpICE9IGdldDwwPihm
aXJzdCkpIHZhbHVlczIucHVzaF9iYWNrKHZhbCk7CisgIGF1dG8gaXQgPSBFcmFzZUZpcnN0KCko
Jm0sIDApOworICBBU1NFUlRfVFJVRShpdCAhPSBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKDEsIHN0
ZDo6Y291bnQodmFsdWVzMi5iZWdpbigpLCB2YWx1ZXMyLmVuZCgpLCAqaXQpKTsKKyAgRVhQRUNU
X1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1
ZXMyLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsdWVzMi5lbmQoKSkpOworfQorCitUWVBFRF9URVNUX1AoTW9k
aWZpZXJzVGVzdCwgRXJhc2VSYW5nZSkgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6
Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAg
ICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVl
cy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBBU1NFUlRfVEhBVChpdGVtcyhtKSwgOjp0ZXN0
aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBhdXRvIGl0ID0gbS5l
cmFzZShtLmJlZ2luKCksIG0uZW5kKCkpOworICBFWFBFQ1RfVEhBVChpdGVtcyhtKSwgOjp0ZXN0
aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX1RSVUUoaXQgPT0gbS5lbmQo
KSk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBFcmFzZUtleSkgeworICB1c2lu
ZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZl
Y3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFs
dWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4o
KSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBBU1NF
UlRfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZh
bHVlcykpOworICBFWFBFQ1RfRVEoMSwgbS5lcmFzZSh2YWx1ZXNbMF0uZmlyc3QpKTsKKyAgRVhQ
RUNUX0VRKDAsIHN0ZDo6Y291bnQobS5iZWdpbigpLCBtLmVuZCgpLCB2YWx1ZXNbMF0pKTsKKyAg
RVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJh
eSh2YWx1ZXMuYmVnaW4oKSArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmVuZCgpKSk7Cit9CisKK1RZUEVEX1RF
U1RfUChNb2RpZmllcnNUZXN0LCBTd2FwKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+IHYxOworICBzdGQ6OnZl
Y3RvcjxUPiB2MjsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2MSksIDUs
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6
YmFja19pbnNlcnRlcih2MiksIDUsIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAg
VHlwZVBhcmFtIG0xKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKKyAgVHlwZVBhcmFtIG0yKHYyLmJl
Z2luKCksIHYyLmVuZCgpKTsKKyAgRVhQRUNUX1RIQVQoaXRlbXMobTEpLCA6OnRlc3Rpbmc6OlVu
b3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodjEpKTsKKyAgRVhQRUNUX1RIQVQoaXRlbXMobTIpLCA6
OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodjIpKTsKKyAgbTEuc3dhcChtMik7
CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0xKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0Fy
ZUFycmF5KHYyKSk7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0yKSwgOjp0ZXN0aW5nOjpVbm9yZGVy
ZWRFbGVtZW50c0FyZUFycmF5KHYxKSk7Cit9CisKKy8vIFRPRE8oYWxraXMpOiBXcml0ZSB0ZXN0
cyBmb3IgZXh0cmFjdC4KKy8vIFRPRE8oYWxraXMpOiBXcml0ZSB0ZXN0cyBmb3IgbWVyZ2UuCisK
K1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE1vZGlmaWVyc1Rlc3QsIENsZWFyLCBJbnNlcnQs
IEluc2VydEhpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnRSYW5nZSwgSW5z
ZXJ0T3JBc3NpZ24sIEluc2VydE9yQXNzaWduSGludCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVtcGxhY2UsIEVtcGxhY2VIaW50LCBUcnlFbXBsYWNlLCBUcnlFbXBsYWNlSGludCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVyYXNlLCBFcmFzZVJhbmdlLCBFcmFzZUtleSwgU3dh
cCk7CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFj
ZSBhYnNsCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9NQVBf
TU9ESUZJRVJTX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91
bm9yZGVyZWRfbWFwX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVk
X21hcF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwZTc5OWNkYTg5YzNjOTA1NTNiMzhkYjdhYjMyYTJj
MTRlZDAyODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5v
cmRlcmVkX21hcF90ZXN0LmNjCkBAIC0wLDAgKzEsMzggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRo
ZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorCisjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0
LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9sb29r
dXBfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9t
YXBfbW9kaWZpZXJzX3Rlc3QuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRh
aW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2UgeworCit1c2luZyBNYXBUeXBlcyA9IDo6dGVzdGlu
Zzo6VHlwZXM8CisgICAgc3RkOjp1bm9yZGVyZWRfbWFwPGludCwgaW50LCBTdGF0ZWZ1bFRlc3Rp
bmdIYXNoLCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgQWxs
b2M8c3RkOjpwYWlyPGNvbnN0IGludCwgaW50Pj4+LAorICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmcsIFN0YXRlZnVsVGVzdGluZ0hhc2gsCisgICAgICAgICAg
ICAgICAgICAgICAgIFN0YXRlZnVsVGVzdGluZ0VxdWFsLAorICAgICAgICAgICAgICAgICAgICAg
ICBBbGxvYzxzdGQ6OnBhaXI8Y29uc3Qgc3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4+PjsKKwor
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVW5vcmRlcmVkTWFwLCBDb25zdHJ1Y3RvclRl
c3QsIE1hcFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVub3JkZXJlZE1h
cCwgTG9va3VwVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
VW5vcmRlcmVkTWFwLCBNb2RpZmllcnNUZXN0LCBNYXBUeXBlcyk7CisKK30gIC8vIG5hbWVzcGFj
ZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFi
c2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2Nv
bnN0cnVjdG9yX3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0
X2NvbnN0cnVjdG9yX3Rlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjU5MzcwNDY4NWM0N2ZhYmExMzAzZTJj
NTM5N2JjMTU1MjQ0ZTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oCkBAIC0wLDAgKzEsNDA4IEBACisv
LyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfQ09O
VEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9TRVRfQ09OU1RSVUNUT1JfVEVTVF9IXworI2RlZmlu
ZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0NPTlNUUlVDVE9SX1RFU1Rf
SF8KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRl
ICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgorI2luY2x1ZGUg
ImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIKKworbmFtZXNw
YWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxj
bGFzcyBVbm9yZE1hcD4KK2NsYXNzIENvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3Qge307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKENvbnN0cnVjdG9yVGVzdCk7CisKK1RZUEVE
X1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIE5vQXJncykgeworICBUeXBlUGFyYW0gbTsKKyAgRVhQ
RUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpV
bm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVz
dCwgQnVja2V0Q291bnQpIHsKKyAgVHlwZVBhcmFtIG0oMTIzKTsKKyAgRVhQRUNUX1RSVUUobS5l
bXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVt
ZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisKK1RZ
UEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaCkgeworICB1c2luZyBI
ID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIEggaGFzaGVyOworICBUeXBlUGFyYW0g
bSgxMjMsIGhhc2hlcik7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsK
KyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0
aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50
KCksIDEyMyk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50
SGFzaEVxdWFsKSB7CisgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAg
dXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICBIIGhhc2hlcjsKKyAg
RSBlcXVhbDsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsKTsKKyAgRVhQRUNUX0VR
KG0uaGFzaF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgZXF1
YWwpOworICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6
OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOworICBFWFBFQ1RfR0UobS5idWNrZXRf
Y291bnQoKSwgMTIzKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0
Q291bnRIYXNoRXF1YWxBbGxvYykgeworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpo
YXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNp
bmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOwor
ICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgZXF1
YWwsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBF
WFBFQ1RfRVEobS5rZXlfZXEoKSwgZXF1YWwpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9y
KCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5
cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0u
YnVja2V0X2NvdW50KCksIDEyMyk7CisKKyAgY29uc3QgYXV0byYgY20gPSBtOworICBFWFBFQ1Rf
RVEoY20uaGFzaF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEoY20ua2V5X2VxKCks
IGVxdWFsKTsKKyAgRVhQRUNUX0VRKGNtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBF
Q1RfVFJVRShjbS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhjbSksIDo6dGVzdGluZzo6
VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShjbS5idWNrZXRfY291bnQoKSwg
MTIzKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQnVja2V0Q291bnRBbGxv
YykgeworI2lmIGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVS
RURfU0VUX0NYWDE3KQorICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3Jf
dHlwZTsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBhbGxvYyk7CisgIEVYUEVD
VF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkp
OworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJl
KCkpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKKyNlbmRpZgorfQorCitU
WVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2hBbGxvYykgeworI2lm
IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfU0VUX0NY
WDE3KQorICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEEg
PSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgQSBh
bGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGFsbG9jKTsKKyAgRVhQRUNUX0VR
KG0uaGFzaF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9y
KCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5
cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0u
YnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVj
dG9yVGVzdCwgQnVja2V0QWxsb2MpIHsKKyNpZiBBQlNMX1VOT1JERVJFRF9TVVBQT1JUU19BTExP
Q19DVE9SUworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsK
KyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oYWxsb2MpOworICBFWFBFQ1RfRVEobS5nZXRf
YWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNU
X1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyNlbmRp
ZgorfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0
SGFzaEVxdWFsQWxsb2MpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5
cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOwor
ICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0
eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVh
bDsKKyAgQSBhbGxvYygwKTsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBmb3IgKHNpemVf
dCBpID0gMDsgaSAhPSAxMDsgKytpKQorICAgIHZhbHVlcy5wdXNoX2JhY2soaGFzaF9pbnRlcm5h
bDo6R2VuZXJhdG9yPFQ+KCkoKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1
ZXMuZW5kKCksIDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBFWFBFQ1RfRVEobS5oYXNo
X2Z1bmN0aW9uKCksIGhhc2hlcik7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBlcXVhbCk7Cisg
IEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVEhBVChrZXlz
KG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CisgIEVY
UEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworfQorCitUWVBFRF9URVNUX1AoQ29uc3Ry
dWN0b3JUZXN0LCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2MpIHsKKyNpZiBkZWZpbmVkKFVOT1JE
RVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNykKKyAgdXNpbmcg
VCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgQSA9
IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEEgYWxsb2MoMCk7CisgIHN0
ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gMTA7ICsraSkK
KyAgICB2YWx1ZXMucHVzaF9iYWNrKGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkpOwor
ICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpLCAxMjMsIGFsbG9jKTsK
KyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9USEFUKGtl
eXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAg
RVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVT
VF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvYykgeworI2lm
IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNCkgfHwgZGVmaW5lZChVTk9SREVSRURfU0VUX0NY
WDE3KQorICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+
OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEEgPSB0
eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgQSBhbGxv
YygwKTsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBmb3IgKHNpemVfdCBpID0gMDsgaSAh
PSAxMDsgKytpKQorICAgIHZhbHVlcy5wdXNoX2JhY2soaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9y
PFQ+KCkoKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCksIDEy
MywgaGFzaGVyLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVy
KTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9USEFU
KGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsK
KyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURf
VEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7CisgIHVzaW5nIFQgPSBo
YXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBl
bmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlw
ZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBt
KDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSAx
MDsgKytpKSBtLmluc2VydChoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpKTsKKyAgVHlw
ZVBhcmFtIG4obSk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgbi5oYXNoX2Z1bmN0
aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CisgIEVYUEVDVF9F
UShtLmdldF9hbGxvY2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkpOworICBFWFBFQ1RfRVEobSwg
bik7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3RvckFs
bG9jKSB7CisjaWYgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMKKyAgdXNpbmcg
VCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9
IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRv
cl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBh
cmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IDEwOyArK2kpIG0uaW5zZXJ0KGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkpOwor
ICBUeXBlUGFyYW0gbihtLCBBKDExKSk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwg
bi5oYXNoX2Z1bmN0aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7
CisgIEVYUEVDVF9ORShtLmdldF9hbGxvY2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkpOworICBF
WFBFQ1RfRVEobSwgbik7CisjZW5kaWYKK30KKworLy8gVE9ETyhhbGtpcyk6IFRlc3Qgbm9uLXBy
b3BhZ2F0aW5nIGFsbG9jYXRvcnMgb24gY29weSBjb25zdHJ1Y3RvcnMuCisKK1RZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIE1vdmVDb25zdHJ1Y3RvcikgeworICB1c2luZyBUID0gaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUg
VHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9l
cXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7Cisg
IEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgxMjMs
IGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gMTA7ICsr
aSkgbS5pbnNlcnQoaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKSk7CisgIFR5cGVQYXJh
bSB0KG0pOworICBUeXBlUGFyYW0gbihzdGQ6Om1vdmUodCkpOworICBFWFBFQ1RfRVEobS5oYXNo
X2Z1bmN0aW9uKCksIG4uaGFzaF9mdW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCks
IG4ua2V5X2VxKCkpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9j
YXRvcigpKTsKKyAgRVhQRUNUX0VRKG0sIG4pOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0
b3JUZXN0LCBNb3ZlQ29uc3RydWN0b3JBbGxvYykgeworI2lmIEFCU0xfVU5PUkRFUkVEX1NVUFBP
UlRTX0FMTE9DX0NUT1JTCisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBl
PFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAg
dXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlw
ZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7
CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2Mp
OworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSAxMDsgKytpKSBtLmluc2VydChoYXNoX2ludGVy
bmFsOjpHZW5lcmF0b3I8VD4oKSgpKTsKKyAgVHlwZVBhcmFtIHQobSk7CisgIFR5cGVQYXJhbSBu
KHN0ZDo6bW92ZSh0KSwgQSgxKSk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgbi5o
YXNoX2Z1bmN0aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7Cisg
IEVYUEVDVF9ORShtLmdldF9hbGxvY2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkpOworICBFWFBF
Q1RfRVEobSwgbik7CisjZW5kaWYKK30KKworLy8gVE9ETyhhbGtpcyk6IFRlc3Qgbm9uLXByb3Bh
Z2F0aW5nIGFsbG9jYXRvcnMgb24gbW92ZSBjb25zdHJ1Y3RvcnMuCisKK1RZUEVEX1RFU1RfUChD
b25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tldEhhc2hFcXVhbEFsbG9jKSB7Cisg
IHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxU
PiB2YWx1ZXMgPSB7Z2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpfTsKKyAgdXNpbmcg
SCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlw
ZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9j
YXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlw
ZVBhcmFtIG0odmFsdWVzLCAxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgRVhQRUNUX0VR
KG0uaGFzaF9mdW5jdGlvbigpLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgZXF1
YWwpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RI
QVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykp
OworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKK30KKworVFlQRURfVEVTVF9Q
KENvbnN0cnVjdG9yVGVzdCwgSW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2MpIHsKKyNpZiBkZWZp
bmVkKFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNykK
KyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAg
dXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIGhhc2hfaW50
ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1
ZXMgPSB7Z2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpfTsKKyAgQSBhbGxvYygwKTsK
KyAgVHlwZVBhcmFtIG0odmFsdWVzLCAxMjMsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2Fs
bG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5v
cmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2Nv
dW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwg
SW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jKSB7CisjaWYgZGVmaW5lZChVTk9SREVSRURf
U0VUX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTcpCisgIHVzaW5nIFQgPSBo
YXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBl
bmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBBIGFsbG9jKDApOworICBoYXNoX2ludGVy
bmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gdmFsdWVz
ID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIFR5cGVQYXJhbSBtKHZh
bHVlcywgMTIzLCBoYXNoZXIsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigp
LCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQ
RUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZh
bHVlcykpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKKyNlbmRpZgorfQor
CitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBBc3NpZ25tZW50KSB7CisgIHVzaW5nIFQg
PSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0
eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJh
bTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3Jf
dHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIGhhc2hfaW50
ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIFR5cGVQYXJhbSBtKHtnZW4oKSwgZ2VuKCksIGdl
bigpfSwgMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIFR5cGVQYXJhbSBuOworICBuID0g
bTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBuLmhhc2hfZnVuY3Rpb24oKSk7Cisg
IEVYUEVDVF9FUShtLmtleV9lcSgpLCBuLmtleV9lcSgpKTsKKyAgRVhQRUNUX0VRKG0sIG4pOwor
fQorCisvLyBUT0RPKGFsa2lzKTogVGVzdCBbbm9uLV1wcm9wYWdhdGluZyBhbGxvY2F0b3JzIG9u
IG1vdmUvY29weSBhc3NpZ25tZW50cworLy8gKGl0IGRlcGVuZHMgb24gdHJhaXRzKS4KKworVFlQ
RURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92ZUFzc2lnbm1lbnQpIHsKKyAgdXNpbmcgVCA9
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9IHR5
cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFt
OjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90
eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgaGFzaF9pbnRl
cm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgVHlwZVBhcmFtIG0oe2dlbigpLCBnZW4oKSwgZ2Vu
KCl9LCAxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgVHlwZVBhcmFtIHQobSk7CisgIFR5
cGVQYXJhbSBuOworICBuID0gc3RkOjptb3ZlKHQpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0
aW9uKCksIG4uaGFzaF9mdW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5
X2VxKCkpOworICBFWFBFQ1RfRVEobSwgbik7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3Rv
clRlc3QsIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0KSB7CisgIHVzaW5nIFQgPSBoYXNo
X2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIGhhc2hfaW50ZXJuYWw6Okdl
bmVyYXRvcjxUPiBnZW47CisgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1ZXMgPSB7Z2Vu
KCksIGdlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpfTsKKyAgVHlwZVBhcmFtIG07CisgIG0gPSB2
YWx1ZXM7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheSh2YWx1ZXMpKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwg
QXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGluZykgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5h
bDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8
VD4gZ2VuOworICBUeXBlUGFyYW0gbSh7Z2VuKCksIGdlbigpLCBnZW4oKX0pOworICBUeXBlUGFy
YW0gbih7Z2VuKCl9KTsKKyAgbiA9IG07CisgIEVYUEVDVF9FUShtLCBuKTsKK30KKworVFlQRURf
VEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92ZUFzc2lnbm1lbnRPdmVyd3JpdGVzRXhpc3Rpbmcp
IHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsK
KyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgVHlwZVBhcmFtIG0oe2dlbigp
LCBnZW4oKSwgZ2VuKCl9KTsKKyAgVHlwZVBhcmFtIHQobSk7CisgIFR5cGVQYXJhbSBuKHtnZW4o
KX0pOworICBuID0gc3RkOjptb3ZlKHQpOworICBFWFBFQ1RfRVEobSwgbik7Cit9CisKK1RZUEVE
X1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0T3Zl
cndyaXRlc0V4aXN0aW5nKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRU
eXBlPFR5cGVQYXJhbT47CisgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1ZXMgPSB7Z2VuKCksIGdlbigpLCBnZW4oKSwgZ2Vu
KCksIGdlbigpfTsKKyAgVHlwZVBhcmFtIG07CisgIG0gPSB2YWx1ZXM7CisgIEVYUEVDVF9USEFU
KGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsK
K30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudE9uU2VsZikgewor
ICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBo
YXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
VD4gdmFsdWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIFR5cGVQ
YXJhbSBtKHZhbHVlcyk7CisgIG0gPSAqJm07ICAvLyBBdm9pZCAtV3NlbGYtYXNzaWduLgorICBF
WFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
dmFsdWVzKSk7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKAorICAgIENvbnN0cnVj
dG9yVGVzdCwgTm9BcmdzLCBCdWNrZXRDb3VudCwgQnVja2V0Q291bnRIYXNoLCBCdWNrZXRDb3Vu
dEhhc2hFcXVhbCwKKyAgICBCdWNrZXRDb3VudEhhc2hFcXVhbEFsbG9jLCBCdWNrZXRDb3VudEFs
bG9jLCBCdWNrZXRDb3VudEhhc2hBbGxvYywKKyAgICBCdWNrZXRBbGxvYywgSW5wdXRJdGVyYXRv
ckJ1Y2tldEhhc2hFcXVhbEFsbG9jLCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2MsCisgICAgSW5w
dXRJdGVyYXRvckJ1Y2tldEhhc2hBbGxvYywgQ29weUNvbnN0cnVjdG9yLCBDb3B5Q29uc3RydWN0
b3JBbGxvYywKKyAgICBNb3ZlQ29uc3RydWN0b3IsIE1vdmVDb25zdHJ1Y3RvckFsbG9jLCBJbml0
aWFsaXplckxpc3RCdWNrZXRIYXNoRXF1YWxBbGxvYywKKyAgICBJbml0aWFsaXplckxpc3RCdWNr
ZXRBbGxvYywgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jLCBBc3NpZ25tZW50LAorICAg
IE1vdmVBc3NpZ25tZW50LCBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdCwKKyAgICBBc3Np
Z25tZW50T3ZlcndyaXRlc0V4aXN0aW5nLCBNb3ZlQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGlu
ZywKKyAgICBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdE92ZXJ3cml0ZXNFeGlzdGluZywg
QXNzaWdubWVudE9uU2VsZik7CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwK
K30gIC8vIG5hbWVzcGFjZSBhYnNsCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFM
X1VOT1JERVJFRF9TRVRfQ09OU1RSVUNUT1JfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNh
OWM2YTVkZjdiNzI1YzE3NTk5M2Y0NzA2OWRhNGU5MjE3MjlkMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgKQEAg
LTAsMCArMSw4OCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwor
I2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0xPT0tVUF9URVNU
X0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9TRVRfTE9PS1VQ
X1RFU1RfSF8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90
ZXN0aW5nLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lf
dGVzdGluZy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVy
bmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIFVub3JkU2V0PgorY2xhc3MgTG9va3VwVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKExvb2t1cFRlc3Qp
OworCitUWVBFRF9URVNUX1AoTG9va3VwVGVzdCwgQ291bnQpIHsKKyAgdXNpbmcgVCA9IGhhc2hf
aW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFs
dWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAor
ICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBl
UGFyYW0gbTsKKyAgZm9yIChjb25zdCBhdXRvJiB2IDogdmFsdWVzKQorICAgIEVYUEVDVF9FUSgw
LCBtLmNvdW50KHYpKSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodik7CisgIG0uaW5zZXJ0
KHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBmb3IgKGNvbnN0IGF1dG8mIHYgOiB2
YWx1ZXMpCisgICAgRVhQRUNUX0VRKDEsIG0uY291bnQodikpIDw8IDo6dGVzdGluZzo6UHJpbnRU
b1N0cmluZyh2KTsKK30KKworVFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIEZpbmQpIHsKKyAgdXNp
bmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2
ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZh
bHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+
KCkpOworICBUeXBlUGFyYW0gbTsKKyAgZm9yIChjb25zdCBhdXRvJiB2IDogdmFsdWVzKQorICAg
IEVYUEVDVF9UUlVFKG0uZW5kKCkgPT0gbS5maW5kKHYpKSA8PCA6OnRlc3Rpbmc6OlByaW50VG9T
dHJpbmcodik7CisgIG0uaW5zZXJ0KHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBm
b3IgKGNvbnN0IGF1dG8mIHYgOiB2YWx1ZXMpIHsKKyAgICB0eXBlbmFtZSBUeXBlUGFyYW06Oml0
ZXJhdG9yIGl0ID0gbS5maW5kKHYpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGNv
bnN0IHR5cGVuYW1lIFR5cGVQYXJhbTo6dmFsdWVfdHlwZSYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVjbHR5cGUoKml0KT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgIiIp
OworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGNvbnN0IHR5cGVuYW1lIFR5cGVQYXJh
bTo6dmFsdWVfdHlwZSosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbHR5cGUo
aXQub3BlcmF0b3ItPigpKT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgIiIpOworICAgIEVY
UEVDVF9UUlVFKG0uZW5kKCkgIT0gaXQpIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2KTsK
KyAgICBFWFBFQ1RfRVEodiwgKml0KSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodik7Cisg
IH0KK30KKworVFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIEVxdWFsUmFuZ2UpIHsKKyAgdXNpbmcg
VCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0
b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVl
cyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkp
OworICBUeXBlUGFyYW0gbTsKKyAgZm9yIChjb25zdCBhdXRvJiB2IDogdmFsdWVzKSB7CisgICAg
YXV0byByID0gbS5lcXVhbF9yYW5nZSh2KTsKKyAgICBBU1NFUlRfRVEoMCwgc3RkOjpkaXN0YW5j
ZShyLmZpcnN0LCByLnNlY29uZCkpOworICB9CisgIG0uaW5zZXJ0KHZhbHVlcy5iZWdpbigpLCB2
YWx1ZXMuZW5kKCkpOworICBmb3IgKGNvbnN0IGF1dG8mIHYgOiB2YWx1ZXMpIHsKKyAgICBhdXRv
IHIgPSBtLmVxdWFsX3JhbmdlKHYpOworICAgIEFTU0VSVF9FUSgxLCBzdGQ6OmRpc3RhbmNlKHIu
Zmlyc3QsIHIuc2Vjb25kKSk7CisgICAgRVhQRUNUX0VRKHYsICpyLmZpcnN0KTsKKyAgfQorfQor
CitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChMb29rdXBUZXN0LCBDb3VudCwgRmluZCwgRXF1
YWxSYW5nZSk7CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5h
bWVzcGFjZSBhYnNsCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJF
RF9TRVRfTE9PS1VQX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZWFjZjMzMTY5
NzNkZDdiY2RjYjkzODJhMTM2YzE4ZDBhOGM3NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oCkBAIC0wLDAg
KzEsMTg3IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZu
ZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9TRVRfTU9ESUZJRVJTX1RFU1Rf
SF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NFVF9NT0RJRklF
UlNfVEVTVF9IXworCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9y
X3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGlj
eV90ZXN0aW5nLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50
ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xhc3MgVW5vcmRTZXQ+CitjbGFzcyBNb2RpZmllcnNUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworVFlQRURfVEVTVF9DQVNFX1AoTW9kaWZp
ZXJzVGVzdCk7CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBDbGVhcikgeworICB1c2lu
ZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZl
Y3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFs
dWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4o
KSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBBU1NF
UlRfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFs
dWVzKSk7CisgIG0uY2xlYXIoKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpV
bm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKK30KKwor
VFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEluc2VydCkgeworICB1c2luZyBUID0gaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBUIHZhbCA9IGhhc2hfaW50ZXJu
YWw6OkdlbmVyYXRvcjxUPigpKCk7CisgIFR5cGVQYXJhbSBtOworICBhdXRvIHAgPSBtLmluc2Vy
dCh2YWwpOworICBFWFBFQ1RfVFJVRShwLnNlY29uZCk7CisgIEVYUEVDVF9FUSh2YWwsICpwLmZp
cnN0KTsKKyAgcCA9IG0uaW5zZXJ0KHZhbCk7CisgIEVYUEVDVF9GQUxTRShwLnNlY29uZCk7Cit9
CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBJbnNlcnRIaW50KSB7CisgIHVzaW5nIFQg
PSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIFQgdmFsID0gaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKTsKKyAgVHlwZVBhcmFtIG07CisgIGF1dG8gaXQg
PSBtLmluc2VydChtLmVuZCgpLCB2YWwpOworICBFWFBFQ1RfVFJVRShpdCAhPSBtLmVuZCgpKTsK
KyAgRVhQRUNUX0VRKHZhbCwgKml0KTsKKyAgaXQgPSBtLmluc2VydChpdCwgdmFsKTsKKyAgRVhQ
RUNUX1RSVUUoaXQgIT0gbS5lbmQoKSk7CisgIEVYUEVDVF9FUSh2YWwsICppdCk7Cit9CisKK1RZ
UEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBJbnNlcnRSYW5nZSkgeworICB1c2luZyBUID0gaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZlY3RvcjxUPiB2
YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwgMTAs
CisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5
cGVQYXJhbSBtOworICBtLmluc2VydCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAg
QVNTRVJUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5
KHZhbHVlcykpOworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgRW1wbGFjZSkgewor
ICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBU
IHZhbCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCk7CisgIFR5cGVQYXJhbSBtOwor
ICAvLyBUT0RPKGFsa2lzKTogV2UgbmVlZCBhIHdheSB0byBydW4gZW1wbGFjZSBpbiBhIG1vcmUg
bWVhbmluZ2Z1bCB3YXkuIFBlcmhhcHMKKyAgLy8gd2l0aCB0ZXN0IHRyYWl0cy9wb2xpY3kuCisg
IGF1dG8gcCA9IG0uZW1wbGFjZSh2YWwpOworICBFWFBFQ1RfVFJVRShwLnNlY29uZCk7CisgIEVY
UEVDVF9FUSh2YWwsICpwLmZpcnN0KTsKKyAgcCA9IG0uZW1wbGFjZSh2YWwpOworICBFWFBFQ1Rf
RkFMU0UocC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqcC5maXJzdCk7Cit9CisKK1RZUEVE
X1RFU1RfUChNb2RpZmllcnNUZXN0LCBFbXBsYWNlSGludCkgeworICB1c2luZyBUID0gaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBUIHZhbCA9IGhhc2hfaW50ZXJu
YWw6OkdlbmVyYXRvcjxUPigpKCk7CisgIFR5cGVQYXJhbSBtOworICAvLyBUT0RPKGFsa2lzKTog
V2UgbmVlZCBhIHdheSB0byBydW4gZW1wbGFjZSBpbiBhIG1vcmUgbWVhbmluZ2Z1bCB3YXkuIFBl
cmhhcHMKKyAgLy8gd2l0aCB0ZXN0IHRyYWl0cy9wb2xpY3kuCisgIGF1dG8gaXQgPSBtLmVtcGxh
Y2VfaGludChtLmVuZCgpLCB2YWwpOworICBFWFBFQ1RfRVEodmFsLCAqaXQpOworICBpdCA9IG0u
ZW1wbGFjZV9oaW50KGl0LCB2YWwpOworICBFWFBFQ1RfRVEodmFsLCAqaXQpOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgVj4KK3VzaW5nIElmTm90Vm9pZCA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PCFzdGQ6OmlzX3ZvaWQ8Vj46OnZhbHVlLCBWPjo6dHlwZTsKKworLy8gSW4gb3Blbm1hcCB3ZSBj
aG9zZSBub3QgdG8gcmV0dXJuIHRoZSBpdGVyYXRvciBmcm9tIGVyYXNlIGJlY2F1c2UgdGhhdCdz
CisvLyBtb3JlIGV4cGVuc2l2ZS4gQXMgc3VjaCB3ZSBhZGFwdCBlcmFzZSB0byByZXR1cm4gYW4g
aXRlcmF0b3IgaGVyZS4KK3N0cnVjdCBFcmFzZUZpcnN0IHsKKyAgdGVtcGxhdGUgPGNsYXNzIE1h
cD4KKyAgYXV0byBvcGVyYXRvcigpKE1hcCogbSwgaW50KSBjb25zdAorICAgICAgLT4gSWZOb3RW
b2lkPGRlY2x0eXBlKG0tPmVyYXNlKG0tPmJlZ2luKCkpKT4geworICAgIHJldHVybiBtLT5lcmFz
ZShtLT5iZWdpbigpKTsKKyAgfQorICB0ZW1wbGF0ZSA8Y2xhc3MgTWFwPgorICB0eXBlbmFtZSBN
YXA6Oml0ZXJhdG9yIG9wZXJhdG9yKCkoTWFwKiBtLCAuLi4pIGNvbnN0IHsKKyAgICBhdXRvIGl0
ID0gbS0+YmVnaW4oKTsKKyAgICBtLT5lcmFzZShpdCsrKTsKKyAgICByZXR1cm4gaXQ7CisgIH0K
K307CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBFcmFzZSkgeworICB1c2luZyBUID0g
aGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZlY3RvcjxU
PiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwg
MTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7Cisg
IFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBBU1NFUlRfVEhB
VChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7
CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczI7CisgIGZvciAoY29uc3QgYXV0byYgdmFsIDogdmFs
dWVzKQorICAgIGlmICh2YWwgIT0gKm0uYmVnaW4oKSkgdmFsdWVzMi5wdXNoX2JhY2sodmFsKTsK
KyAgYXV0byBpdCA9IEVyYXNlRmlyc3QoKSgmbSwgMCk7CisgIEFTU0VSVF9UUlVFKGl0ICE9IG0u
ZW5kKCkpOworICBFWFBFQ1RfRVEoMSwgc3RkOjpjb3VudCh2YWx1ZXMyLmJlZ2luKCksIHZhbHVl
czIuZW5kKCksICppdCkpOworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3Jk
ZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzMi5iZWdpbigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzMi5lbmQoKSkp
OworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgRXJhc2VSYW5nZSkgeworICB1c2lu
ZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZl
Y3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFs
dWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4o
KSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworICBBU1NF
UlRfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFs
dWVzKSk7CisgIGF1dG8gaXQgPSBtLmVyYXNlKG0uYmVnaW4oKSwgbS5lbmQoKSk7CisgIEVYUEVD
VF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVY
UEVDVF9UUlVFKGl0ID09IG0uZW5kKCkpOworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVz
dCwgRXJhc2VLZXkpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8
VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24o
c3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwg
dmFsdWVzLmVuZCgpKTsKKyAgQVNTRVJUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVy
ZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBFWFBFQ1RfRVEoMSwgbS5lcmFzZSh2YWx1
ZXNbMF0pKTsKKyAgRVhQRUNUX0VRKDAsIHN0ZDo6Y291bnQobS5iZWdpbigpLCBtLmVuZCgpLCB2
YWx1ZXNbMF0pKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRF
bGVtZW50c0FyZUFycmF5KHZhbHVlcy5iZWdpbigpICsgMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5lbmQoKSkpOwor
fQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgU3dhcCkgeworICB1c2luZyBUID0gaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZlY3RvcjxUPiB2
MTsKKyAgc3RkOjp2ZWN0b3I8VD4gdjI7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5z
ZXJ0ZXIodjEpLCA1LCBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIHN0ZDo6Z2Vu
ZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodjIpLCA1LCBoYXNoX2ludGVybmFsOjpHZW5lcmF0
b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtMSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7CisgIFR5cGVQ
YXJhbSBtMih2Mi5iZWdpbigpLCB2Mi5lbmQoKSk7CisgIEVYUEVDVF9USEFUKGtleXMobTEpLCA6
OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodjEpKTsKKyAgRVhQRUNUX1RIQVQo
a2V5cyhtMiksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2MikpOworICBt
MS5zd2FwKG0yKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtMSksIDo6dGVzdGluZzo6VW5vcmRlcmVk
RWxlbWVudHNBcmVBcnJheSh2MikpOworICBFWFBFQ1RfVEhBVChrZXlzKG0yKSwgOjp0ZXN0aW5n
OjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHYxKSk7Cit9CisKKy8vIFRPRE8oYWxraXMpOiBX
cml0ZSB0ZXN0cyBmb3IgZXh0cmFjdC4KKy8vIFRPRE8oYWxraXMpOiBXcml0ZSB0ZXN0cyBmb3Ig
bWVyZ2UuCisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE1vZGlmaWVyc1Rlc3QsIENsZWFy
LCBJbnNlcnQsIEluc2VydEhpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnRS
YW5nZSwgRW1wbGFjZSwgRW1wbGFjZUhpbnQsIEVyYXNlLCBFcmFzZVJhbmdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRXJhc2VLZXksIFN3YXApOworCit9ICAvLyBuYW1lc3BhY2UgY29u
dGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNMX0NP
TlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX01PRElGSUVSU19URVNUX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfdGVzdC5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
MjgxY2U1M2Q1ZTJlNDA3MjhmYjZjYThkZDkwYzBjOTQ5OGFlZmEzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfdGVzdC5jYwpAQCAtMCww
ICsxLDM3IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5j
bHVkZSA8dW5vcmRlcmVkX3NldD4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFp
bmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmgiCisKK25h
bWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNl
IHsKKwordXNpbmcgU2V0VHlwZXMgPQorICAgIDo6dGVzdGluZzo6VHlwZXM8c3RkOjp1bm9yZGVy
ZWRfc2V0PGludCwgU3RhdGVmdWxUZXN0aW5nSGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwgQWxsb2M8aW50Pj4sCisgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnVub3JkZXJlZF9zZXQ8c3RkOjpzdHJpbmcsIFN0YXRlZnVs
VGVzdGluZ0hhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Rh
dGVmdWxUZXN0aW5nRXF1YWwsIEFsbG9jPHN0ZDo6c3RyaW5nPj4+OworCitJTlNUQU5USUFURV9U
WVBFRF9URVNUX0NBU0VfUChVbm9yZGVyZWRTZXQsIENvbnN0cnVjdG9yVGVzdCwgU2V0VHlwZXMp
OworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVW5vcmRlcmVkU2V0LCBMb29rdXBUZXN0
LCBTZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbm9yZGVyZWRTZXQs
IE1vZGlmaWVyc1Rlc3QsIFNldFR5cGVzKTsKKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9tYXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2Rl
X2hhc2hfbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM2OWVjM2FkNjQzMWE0N2U2NDMxNjU4OGU0NjcxNDMx
N2U2MWQ5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfbWFw
LmgKQEAgLTAsMCArMSw1MzAgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IG5vZGVfaGFzaF9tYXAu
aAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBBbiBgYWJzbDo6bm9kZV9oYXNoX21h
cDxLLCBWPmAgaXMgYW4gdW5vcmRlcmVkIGFzc29jaWF0aXZlIGNvbnRhaW5lciBvZgorLy8gdW5p
cXVlIGtleXMgYW5kIGFzc29jaWF0ZWQgdmFsdWVzIGRlc2lnbmVkIHRvIGJlIGEgbW9yZSBlZmZp
Y2llbnQgcmVwbGFjZW1lbnQKKy8vIGZvciBgc3RkOjp1bm9yZGVyZWRfbWFwYC4gTGlrZSBgdW5v
cmRlcmVkX21hcGAsIHNlYXJjaCwgaW5zZXJ0aW9uLCBhbmQKKy8vIGRlbGV0aW9uIG9mIG1hcCBl
bGVtZW50cyBjYW4gYmUgZG9uZSBhcyBhbiBgTygxKWAgb3BlcmF0aW9uLiBIb3dldmVyLAorLy8g
YG5vZGVfaGFzaF9tYXBgIChhbmQgb3RoZXIgdW5vcmRlcmVkIGFzc29jaWF0aXZlIGNvbnRhaW5l
cnMga25vd24gYXMgdGhlCisvLyBjb2xsZWN0aW9uIG9mIEFic2VpbCAiU3dpc3MgdGFibGVzIikg
Y29udGFpbiBvdGhlciBvcHRpbWl6YXRpb25zIHRoYXQgcmVzdWx0CisvLyBpbiBib3RoIG1lbW9y
eSBhbmQgY29tcHV0YXRpb24gYWR2YW50YWdlcy4KKy8vCisvLyBJbiBtb3N0IGNhc2VzLCB5b3Vy
IGRlZmF1bHQgY2hvaWNlIGZvciBhIGhhc2ggbWFwIHNob3VsZCBiZSBhIG1hcCBvZiB0eXBlCisv
LyBgZmxhdF9oYXNoX21hcGAuIEhvd2V2ZXIsIGlmIHlvdSBuZWVkIHBvaW50ZXIgc3RhYmlsaXR5
IGFuZCBjYW5ub3Qgc3RvcmUKKy8vIGEgYGZsYXRfaGFzaF9tYXBgIHdpdGggYHVuaXF1ZV9wdHJg
IGVsZW1lbnRzLCBhIGBub2RlX2hhc2hfbWFwYCBtYXkgYmUgYQorLy8gdmFsaWQgYWx0ZXJuYXRp
dmUuIEFzIHdlbGwsIGlmIHlvdSBhcmUgbWlncmF0aW5nIHlvdXIgY29kZSBmcm9tIHVzaW5nCisv
LyBgc3RkOjp1bm9yZGVyZWRfbWFwYCwgYSBgbm9kZV9oYXNoX21hcGAgcHJvdmlkZXMgYSBtb3Jl
IHN0cmFpZ2h0Zm9yd2FyZAorLy8gbWlncmF0aW9uLCBiZWNhdXNlIGl0IGd1YXJhbnRlZXMgcG9p
bnRlciBzdGFiaWxpdHkuIENvbnNpZGVyIG1pZ3JhdGluZyB0bworLy8gYG5vZGVfaGFzaF9tYXBg
IGFuZCBwZXJoYXBzIGNvbnZlcnRpbmcgdG8gYSBtb3JlIGVmZmljaWVudCBgZmxhdF9oYXNoX21h
cGAKKy8vIHVwb24gZnVydGhlciByZXZpZXcuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfTk9E
RV9IQVNIX01BUF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9OT0RFX0hBU0hfTUFQX0hfCisK
KyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1dGls
aXR5PgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVyX21lbW9y
eS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rpb25fZGVm
YXVsdHMuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0CisjaW5jbHVk
ZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBj
b250YWluZXJfaW50ZXJuYWwgewordGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVmFsdWU+Citj
bGFzcyBOb2RlSGFzaE1hcFBvbGljeTsKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJu
YWwKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6Om5vZGVfaGFzaF9tYXAKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQW4gYGFic2w6Om5vZGVfaGFzaF9tYXA8Sywg
Vj5gIGlzIGFuIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgd2hpY2gKKy8vIGhhcyBi
ZWVuIG9wdGltaXplZCBmb3IgYm90aCBzcGVlZCBhbmQgbWVtb3J5IGZvb3RwcmludCBpbiBtb3N0
IGNvbW1vbiB1c2UKKy8vIGNhc2VzLiBJdHMgaW50ZXJmYWNlIGlzIHNpbWlsYXIgdG8gdGhhdCBv
ZiBgc3RkOjp1bm9yZGVyZWRfbWFwPEssIFY+YCB3aXRoCisvLyB0aGUgZm9sbG93aW5nIG5vdGFi
bGUgZGlmZmVyZW5jZXM6CisvLworLy8gKiBTdXBwb3J0cyBoZXRlcm9nZW5lb3VzIGxvb2t1cCwg
dGhyb3VnaCBgZmluZCgpYCwgYG9wZXJhdG9yW10oKWAgYW5kCisvLyAgIGBpbnNlcnQoKWAsIHBy
b3ZpZGVkIHRoYXQgdGhlIG1hcCBpcyBwcm92aWRlZCBhIGNvbXBhdGlibGUgaGV0ZXJvZ2VuZW91
cworLy8gICBoYXNoaW5nIGZ1bmN0aW9uIGFuZCBlcXVhbGl0eSBvcGVyYXRvci4KKy8vICogQ29u
dGFpbnMgYSBgY2FwYWNpdHkoKWAgbWVtYmVyIGZ1bmN0aW9uIGluZGljYXRpbmcgdGhlIG51bWJl
ciBvZiBlbGVtZW50CisvLyAgIHNsb3RzIChvcGVuLCBkZWxldGVkLCBhbmQgZW1wdHkpIHdpdGhp
biB0aGUgaGFzaCBtYXAuCisvLyAqIFJldHVybnMgYHZvaWRgIGZyb20gdGhlIGBlcmFzZShpdGVy
YXRvcilgIG92ZXJsb2FkLgorLy8KKy8vIEJ5IGRlZmF1bHQsIGBub2RlX2hhc2hfbWFwYCB1c2Vz
IHRoZSBgYWJzbDo6SGFzaGAgaGFzaGluZyBmcmFtZXdvcmsuCisvLyBBbGwgZnVuZGFtZW50YWwg
YW5kIEFic2VpbCB0eXBlcyB0aGF0IHN1cHBvcnQgdGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdvcmsg
aGF2ZQorLy8gYSBjb21wYXRpYmxlIGVxdWFsaXR5IG9wZXJhdG9yIGZvciBjb21wYXJpbmcgaW5z
ZXJ0aW9ucyBpbnRvIGBub2RlX2hhc2hfbWFwYC4KKy8vIElmIHlvdXIgdHlwZSBpcyBub3QgeWV0
IHN1cHBvcnRlZCBieSB0aGUgYGFzYmw6Okhhc2hgIGZyYW1ld29yaywgc2VlCisvLyBhYnNsL2hh
c2gvaGFzaC5oIGZvciBpbmZvcm1hdGlvbiBvbiBleHRlbmRpbmcgQWJzZWlsIGhhc2hpbmcgdG8g
dXNlci1kZWZpbmVkCisvLyB0eXBlcy4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8gQ3Jl
YXRlIGEgbm9kZSBoYXNoIG1hcCBvZiB0aHJlZSBzdHJpbmdzICh0aGF0IG1hcCB0byBzdHJpbmdz
KQorLy8gICBhYnNsOjpub2RlX2hhc2hfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gZHVj
a3MgPQorLy8gICAgIHt7ImEiLCAiaHVleSJ9LCB7ImIiLCAiZGV3ZXkifSwgeyJjIiwgImxvdWll
In19OworLy8KKy8vICAvLyBJbnNlcnQgYSBuZXcgZWxlbWVudCBpbnRvIHRoZSBub2RlIGhhc2gg
bWFwCisvLyAgZHVja3MuaW5zZXJ0KHsiZCIsICJkb25hbGQifX07CisvLworLy8gIC8vIEZvcmNl
IGEgcmVoYXNoIG9mIHRoZSBub2RlIGhhc2ggbWFwCisvLyAgZHVja3MucmVoYXNoKDApOworLy8K
Ky8vICAvLyBGaW5kIHRoZSBlbGVtZW50IHdpdGggdGhlIGtleSAiYiIKKy8vICBzdGQ6OnN0cmlu
ZyBzZWFyY2hfa2V5ID0gImIiOworLy8gIGF1dG8gcmVzdWx0ID0gZHVja3MuZmluZChzZWFyY2hf
a2V5KTsKKy8vICBpZiAocmVzdWx0ICE9IGR1Y2tzLmVuZCgpKSB7CisvLyAgICBzdGQ6OmNvdXQg
PDwgIlJlc3VsdDogIiA8PCBzZWFyY2hfa2V5LT5zZWNvbmQgPDwgc3RkOjplbmRsOworLy8gIH0K
K3RlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIFZhbHVlLAorICAgICAgICAgIGNsYXNzIEhhc2gg
PSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfZGVmYXVsdF9oYXNoPEtleT4sCisgICAg
ICAgICAgY2xhc3MgRXEgPSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfZGVmYXVsdF9l
cTxLZXk+LAorICAgICAgICAgIGNsYXNzIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8c3RkOjpwYWly
PGNvbnN0IEtleSwgVmFsdWU+Pj4KK2NsYXNzIG5vZGVfaGFzaF9tYXAKKyAgICA6IHB1YmxpYyBh
YnNsOjpjb250YWluZXJfaW50ZXJuYWw6OnJhd19oYXNoX21hcDwKKyAgICAgICAgICBhYnNsOjpj
b250YWluZXJfaW50ZXJuYWw6Ok5vZGVIYXNoTWFwUG9saWN5PEtleSwgVmFsdWU+LCBIYXNoLCBF
cSwKKyAgICAgICAgICBBbGxvYz4geworICB1c2luZyBCYXNlID0gdHlwZW5hbWUgbm9kZV9oYXNo
X21hcDo6cmF3X2hhc2hfbWFwOworCisgcHVibGljOgorICBub2RlX2hhc2hfbWFwKCkge30KKyAg
dXNpbmcgQmFzZTo6QmFzZTsKKworICAvLyBub2RlX2hhc2hfbWFwOjpiZWdpbigpCisgIC8vCisg
IC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYG5vZGVfaGFz
aF9tYXBgLgorICB1c2luZyBCYXNlOjpiZWdpbjsKKworICAvLyBub2RlX2hhc2hfbWFwOjpjYmVn
aW4oKQorICAvLworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgYG5vZGVfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpjYmVnaW47CisKKyAgLy8g
bm9kZV9oYXNoX21hcDo6Y2VuZCgpCisgIC8vCisgIC8vIFJldHVybnMgYSBjb25zdCBpdGVyYXRv
ciB0byB0aGUgZW5kIG9mIHRoZSBgbm9kZV9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmNlbmQ7
CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6ZW5kKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhbiBpdGVy
YXRvciB0byB0aGUgZW5kIG9mIHRoZSBgbm9kZV9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmVu
ZDsKKworICAvLyBub2RlX2hhc2hfbWFwOjpjYXBhY2l0eSgpCisgIC8vCisgIC8vIFJldHVybnMg
dGhlIG51bWJlciBvZiBlbGVtZW50IHNsb3RzIChhc3NpZ25lZCwgZGVsZXRlZCwgYW5kIGVtcHR5
KQorICAvLyBhdmFpbGFibGUgd2l0aGluIHRoZSBgbm9kZV9oYXNoX21hcGAuCisgIC8vCisgIC8v
IE5PVEU6IHRoaXMgbWVtYmVyIGZ1bmN0aW9uIGlzIHBhcnRpY3VsYXIgdG8gYGFic2w6Om5vZGVf
aGFzaF9tYXBgIGFuZCBpcworICAvLyBub3QgcHJvdmlkZWQgaW4gdGhlIGBzdGQ6OnVub3JkZXJl
ZF9tYXBgIEFQSS4KKyAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CisKKyAgLy8gbm9kZV9oYXNoX21h
cDo6ZW1wdHkoKQorICAvLworICAvLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBgbm9kZV9o
YXNoX21hcGAgaXMgZW1wdHkuCisgIHVzaW5nIEJhc2U6OmVtcHR5OworCisgIC8vIG5vZGVfaGFz
aF9tYXA6Om1heF9zaXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbGFyZ2VzdCB0aGVvcmV0
aWNhbCBwb3NzaWJsZSBudW1iZXIgb2YgZWxlbWVudHMgd2l0aGluIGEKKyAgLy8gYG5vZGVfaGFz
aF9tYXBgIHVuZGVyIGN1cnJlbnQgbWVtb3J5IGNvbnN0cmFpbnRzLiBUaGlzIHZhbHVlIGNhbiBi
ZSB0aG91Z2h0CisgIC8vIG9mIGFzIHRoZSBsYXJnZXN0IHZhbHVlIG9mIGBzdGQ6OmRpc3RhbmNl
KGJlZ2luKCksIGVuZCgpKWAgZm9yIGEKKyAgLy8gYG5vZGVfaGFzaF9tYXA8SywgVj5gLgorICB1
c2luZyBCYXNlOjptYXhfc2l6ZTsKKworICAvLyBub2RlX2hhc2hfbWFwOjpzaXplKCkKKyAgLy8K
KyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGN1cnJlbnRseSB3aXRoaW4gdGhl
IGBub2RlX2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6c2l6ZTsKKworICAvLyBub2RlX2hhc2hf
bWFwOjpjbGVhcigpCisgIC8vCisgIC8vIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGBu
b2RlX2hhc2hfbWFwYC4gSW52YWxpZGF0ZXMgYW55IHJlZmVyZW5jZXMsCisgIC8vIHBvaW50ZXJz
LCBvciBpdGVyYXRvcnMgcmVmZXJyaW5nIHRvIGNvbnRhaW5lZCBlbGVtZW50cy4KKyAgLy8KKyAg
Ly8gTk9URTogdGhpcyBvcGVyYXRpb24gbWF5IHNocmluayB0aGUgdW5kZXJseWluZyBidWZmZXIu
IFRvIGF2b2lkIHNocmlua2luZworICAvLyB0aGUgdW5kZXJseWluZyBidWZmZXIgY2FsbCBgZXJh
c2UoYmVnaW4oKSwgZW5kKCkpYC4KKyAgdXNpbmcgQmFzZTo6Y2xlYXI7CisKKyAgLy8gbm9kZV9o
YXNoX21hcDo6ZXJhc2UoKQorICAvLworICAvLyBFcmFzZXMgZWxlbWVudHMgd2l0aGluIHRoZSBg
bm9kZV9oYXNoX21hcGAuIEVyYXNpbmcgZG9lcyBub3QgdHJpZ2dlciBhCisgIC8vIHJlaGFzaC4g
T3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIHZvaWQgZXJhc2UoY29uc3Rf
aXRlcmF0b3IgcG9zKToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnQgYXQgYHBvc2l0
aW9uYCBvZiB0aGUgYG5vZGVfaGFzaF9tYXBgLCByZXR1cm5pbmcKKyAgLy8gICBgdm9pZGAuCisg
IC8vCisgIC8vICAgTk9URTogdGhpcyByZXR1cm4gYmVoYXZpb3IgaXMgZGlmZmVyZW50IHRoYW4g
dGhhdCBvZiBTVEwgY29udGFpbmVycyBpbgorICAvLyAgIGdlbmVyYWwgYW5kIGBzdGQ6OnVub3Jk
ZXJlZF9tYXBgIGluIHBhcnRpY3VsYXIuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGVyYXNlKGNvbnN0
X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KToKKyAgLy8KKyAgLy8gICBFcmFz
ZXMgdGhlIGVsZW1lbnRzIGluIHRoZSBvcGVuIGludGVydmFsIFtgZmlyc3RgLCBgbGFzdGApLCBy
ZXR1cm5pbmcgYW4KKyAgLy8gICBpdGVyYXRvciBwb2ludGluZyB0byBgbGFzdGAuCisgIC8vCisg
IC8vIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYga2V5KToKKyAgLy8KKyAgLy8gICBF
cmFzZXMgdGhlIGVsZW1lbnQgd2l0aCB0aGUgbWF0Y2hpbmcga2V5LCBpZiBpdCBleGlzdHMuCisg
IHVzaW5nIEJhc2U6OmVyYXNlOworCisgIC8vIG5vZGVfaGFzaF9tYXA6Omluc2VydCgpCisgIC8v
CisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGludG8gdGhl
IGBub2RlX2hhc2hfbWFwYCwKKyAgLy8gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRv
IHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50LCBwcm92aWRlZCB0aGF0CisgIC8vIGFuIGVsZW1l
bnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuIElmIHJlaGFzaGlu
ZyBvY2N1cnMKKyAgLy8gZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGlu
dmFsaWRhdGVkLiBPdmVybG9hZHMgYXJlIGxpc3RlZAorICAvLyBiZWxvdy4KKyAgLy8KKyAgLy8g
c3RkOjpwYWlyPGl0ZXJhdG9yLGJvb2w+IGluc2VydChjb25zdCBpbml0X3R5cGUmIHZhbHVlKToK
KyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUgYG5vZGVfaGFzaF9tYXBgLiBS
ZXR1cm5zIGEgcGFpciBjb25zaXN0aW5nIG9mIGFuCisgIC8vICAgaXRlcmF0b3IgdG8gdGhlIGlu
c2VydGVkIGVsZW1lbnQgKG9yIHRvIHRoZSBlbGVtZW50IHRoYXQgcHJldmVudGVkIHRoZQorICAv
LyAgIGluc2VydGlvbikgYW5kIGEgYGJvb2xgIGRlbm90aW5nIHdoZXRoZXIgdGhlIGluc2VydGlv
biB0b29rIHBsYWNlLgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0
KFQmJiB2YWx1ZSk6CisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQoaW5pdF90
eXBlJiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSBtb3ZlYWJsZSB2YWx1ZSBpbnRv
IHRoZSBgbm9kZV9oYXNoX21hcGAuIFJldHVybnMgYSBgc3RkOjpwYWlyYAorICAvLyAgIGNvbnNp
c3Rpbmcgb2YgYW4gaXRlcmF0b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9yIHRvIHRoZSBl
bGVtZW50IHRoYXQKKyAgLy8gICBwcmV2ZW50ZWQgdGhlIGluc2VydGlvbikgYW5kIGEgYGJvb2xg
IGRlbm90aW5nIHdoZXRoZXIgdGhlIGluc2VydGlvbiB0b29rCisgIC8vICAgcGxhY2UuCisgIC8v
CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBjb25zdCBpbml0X3R5
cGUmIHZhbHVlKToKKyAgLy8gaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIFQm
JiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBpbml0
X3R5cGUmJiB2YWx1ZSk7CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIHZhbHVlLCB1c2luZyB0aGUg
cG9zaXRpb24gb2YgYGhpbnRgIGFzIGEgbm9uLWJpbmRpbmcgc3VnZ2VzdGlvbgorICAvLyAgIGZv
ciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaC4gUmV0dXJucyBhbiBpdGVyYXRv
ciB0byB0aGUKKyAgLy8gICBpbnNlcnRlZCBlbGVtZW50LCBvciB0byB0aGUgZXhpc3RpbmcgZWxl
bWVudCB0aGF0IHByZXZlbnRlZCB0aGUKKyAgLy8gICBpbnNlcnRpb24uCisgIC8vCisgIC8vIHZv
aWQgaW5zZXJ0KElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCk6CisgIC8v
CisgIC8vICAgSW5zZXJ0cyBhIHJhbmdlIG9mIHZhbHVlcyBbYGZpcnN0YCwgYGxhc3RgKS4KKyAg
Ly8KKyAgLy8gICBOT1RFOiBBbHRob3VnaCB0aGUgU1RMIGRvZXMgbm90IHNwZWNpZnkgd2hpY2gg
ZWxlbWVudCBtYXkgYmUgaW5zZXJ0ZWQgaWYKKyAgLy8gICBtdWx0aXBsZSBrZXlzIGNvbXBhcmUg
ZXF1aXZhbGVudGx5LCBmb3IgYG5vZGVfaGFzaF9tYXBgIHdlIGd1YXJhbnRlZSB0aGUKKyAgLy8g
ICBmaXJzdCBtYXRjaCBpcyBpbnNlcnRlZC4KKyAgLy8KKyAgLy8gdm9pZCBpbnNlcnQoc3RkOjpp
bml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaWxpc3QpOgorICAvLworICAvLyAgIEluc2VydHMg
dGhlIGVsZW1lbnRzIHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBgaWxpc3RgLgorICAvLwor
ICAvLyAgIE5PVEU6IEFsdGhvdWdoIHRoZSBTVEwgZG9lcyBub3Qgc3BlY2lmeSB3aGljaCBlbGVt
ZW50IG1heSBiZSBpbnNlcnRlZCBpZgorICAvLyAgIG11bHRpcGxlIGtleXMgY29tcGFyZSBlcXVp
dmFsZW50bHkgd2l0aGluIHRoZSBpbml0aWFsaXplciBsaXN0LCBmb3IKKyAgLy8gICBgbm9kZV9o
YXNoX21hcGAgd2UgZ3VhcmFudGVlIHRoZSBmaXJzdCBtYXRjaCBpcyBpbnNlcnRlZC4KKyAgdXNp
bmcgQmFzZTo6aW5zZXJ0OworCisgIC8vIG5vZGVfaGFzaF9tYXA6Omluc2VydF9vcl9hc3NpZ24o
KQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBp
bnRvIHRoZSBgbm9kZV9oYXNoX21hcGAgcHJvdmlkZWQKKyAgLy8gdGhhdCBhIHZhbHVlIHdpdGgg
dGhlIGdpdmVuIGtleSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LCBvciByZXBsYWNlcyBpdCB3aXRo
CisgIC8vIHRoZSBlbGVtZW50IHZhbHVlIGlmIGEga2V5IGZvciB0aGF0IHZhbHVlIGFscmVhZHkg
ZXhpc3RzLCByZXR1cm5pbmcgYW4KKyAgLy8gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIG5ld2x5
IGluc2VydGVkIGVsZW1lbnQuIElmIHJlaGFzaGluZyBvY2N1cnMgZHVlIHRvCisgIC8vIHRoZSBp
bnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLiBPdmVybG9hZHMgYXJlIGxp
c3RlZAorICAvLyBiZWxvdy4KKyAgLy8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBp
bnNlcnRfb3JfYXNzaWduKGNvbnN0IGluaXRfdHlwZSYgaywgVCYmIG9iaik6CisgIC8vIHN0ZDo6
cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fzc2lnbihpbml0X3R5cGUmJiBrLCBUJiYg
b2JqKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzL0Fzc2lnbnMgKG9yIG1vdmVzKSB0aGUgZWxlbWVu
dCBvZiB0aGUgc3BlY2lmaWVkIGtleSBpbnRvIHRoZQorICAvLyAgIGBub2RlX2hhc2hfbWFwYC4K
KyAgLy8KKyAgLy8gaXRlcmF0b3IgaW5zZXJ0X29yX2Fzc2lnbihjb25zdF9pdGVyYXRvciBoaW50
LAorICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaXRfdHlwZSYgaywgVCYm
IG9iaik6CisgIC8vIGl0ZXJhdG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3RfaXRlcmF0b3IgaGlu
dCwgaW5pdF90eXBlJiYgaywgVCYmIG9iaik6CisgIC8vCisgIC8vICAgSW5zZXJ0cy9Bc3NpZ25z
IChvciBtb3ZlcykgdGhlIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW50byB0aGUKKyAg
Ly8gICBgbm9kZV9oYXNoX21hcGAgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5v
bi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2Vy
dGlvbiBzZWFyY2guCisgIHVzaW5nIEJhc2U6Omluc2VydF9vcl9hc3NpZ247CisKKyAgLy8gbm9k
ZV9oYXNoX21hcDo6ZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0
aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRo
aW4gdGhlIGBub2RlX2hhc2hfbWFwYCwgcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50IHdpdGggdGhl
IGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8gVGhlIGVsZW1lbnQg
bWF5IGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBlbGVtZW50IHdp
dGggdGhlCisgIC8vIGtleSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIHRoZSBuZXds
eSBjb25zdHJ1Y3RlZCBlbGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5
LiBQcmVmZXIgYHRyeV9lbXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBub3QKKyAgLy8gY29w
eWFibGUgb3IgbW92ZWFibGUuCisgIC8vCisgIC8vIElmIHJlaGFzaGluZyBvY2N1cnMgZHVlIHRv
IHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLgorICB1c2luZyBC
YXNlOjplbXBsYWNlOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmVtcGxhY2VfaGludCgpCisgIC8v
CisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0
cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBub2RlX2hhc2hfbWFwYCwgdXNp
bmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nCisgIC8vIHN1Z2dlc3Rp
b24gZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLCBhbmQgb25seSBpbnNl
cnRzCisgIC8vIHByb3ZpZGVkIHRoYXQgbm8gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkgYWxy
ZWFkeSBleGlzdHMuCisgIC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25zdHJ1Y3RlZCBl
dmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQorICAvLyBrZXkgaW4g
dGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0ZWQgZWxlbWVu
dCB3aWxsIGJlCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJlZmVyIGB0cnlfZW1wbGFj
ZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90CisgIC8vIGNvcHlhYmxlIG9yIG1vdmVhYmxlLgor
ICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwg
aXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZV9oaW50Owor
CisgIC8vIG5vZGVfaGFzaF9tYXA6OnRyeV9lbXBsYWNlKCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBh
biBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29uc3RydWN0aW5nIGl0IGluLXBs
YWNlCisgIC8vIHdpdGhpbiB0aGUgYG5vZGVfaGFzaF9tYXBgLCBwcm92aWRlZCB0aGF0IG5vIGVs
ZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8vIGFscmVhZHkgZXhpc3RzLiBVbmxpa2UgYGVt
cGxhY2UoKWAsIGlmIGFuIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5CisgIC8vIGFscmVhZHkg
ZXhpc3RzLCB3ZSBndWFyYW50ZWUgdGhhdCBubyBlbGVtZW50IGlzIGNvbnN0cnVjdGVkLgorICAv
LworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRl
cmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgLy8gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cu
CisgIC8vCisgIC8vICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiB0cnlfZW1wbGFjZShjb25z
dCBrZXlfdHlwZSYgaywgQXJncyYmLi4uIGFyZ3MpOgorICAvLyAgIHN0ZDo6cGFpcjxpdGVyYXRv
ciwgYm9vbD4gdHJ5X2VtcGxhY2Uoa2V5X3R5cGUmJiBrLCBBcmdzJiYuLi4gYXJncyk6CisgIC8v
CisgIC8vIEluc2VydHMgKHZpYSBjb3B5IG9yIG1vdmUpIHRoZSBlbGVtZW50IG9mIHRoZSBzcGVj
aWZpZWQga2V5IGludG8gdGhlCisgIC8vIGBub2RlX2hhc2hfbWFwYC4KKyAgLy8KKyAgLy8gICBp
dGVyYXRvciB0cnlfZW1wbGFjZShjb25zdF9pdGVyYXRvciBoaW50LAorICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGluaXRfdHlwZSYgaywgQXJncyYmLi4uIGFyZ3MpOgorICAvLyAg
IGl0ZXJhdG9yIHRyeV9lbXBsYWNlKGNvbnN0X2l0ZXJhdG9yIGhpbnQsIGluaXRfdHlwZSYmIGss
IEFyZ3MmJi4uLiBhcmdzKToKKyAgLy8KKyAgLy8gSW5zZXJ0cyAodmlhIGNvcHkgb3IgbW92ZSkg
dGhlIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW50byB0aGUKKyAgLy8gYG5vZGVfaGFz
aF9tYXBgIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZyBzdWdn
ZXN0aW9uCisgIC8vIGZvciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaC4KKyAg
dXNpbmcgQmFzZTo6dHJ5X2VtcGxhY2U7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6ZXh0cmFjdCgp
CisgIC8vCisgIC8vIEV4dHJhY3RzIHRoZSBpbmRpY2F0ZWQgZWxlbWVudCwgZXJhc2luZyBpdCBp
biB0aGUgcHJvY2VzcywgYW5kIHJldHVybnMgaXQKKyAgLy8gYXMgYSBDKysxNy1jb21wYXRpYmxl
IG5vZGUgaGFuZGxlLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gbm9k
ZV90eXBlIGV4dHJhY3QoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24pOgorICAvLworICAvLyAgIEV4
dHJhY3RzIHRoZSBrZXksdmFsdWUgcGFpciBvZiB0aGUgZWxlbWVudCBhdCB0aGUgaW5kaWNhdGVk
IHBvc2l0aW9uIGFuZAorICAvLyAgIHJldHVybnMgYSBub2RlIGhhbmRsZSBvd25pbmcgdGhhdCBl
eHRyYWN0ZWQgZGF0YS4KKyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3QoY29uc3Qga2V5X3R5
cGUmIHgpOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBrZXksdmFsdWUgcGFpciBvZiB0aGUg
ZWxlbWVudCB3aXRoIGEga2V5IG1hdGNoaW5nIHRoZSBwYXNzZWQKKyAgLy8gICBrZXkgdmFsdWUg
YW5kIHJldHVybnMgYSBub2RlIGhhbmRsZSBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4gSWYg
dGhlCisgIC8vICAgYG5vZGVfaGFzaF9tYXBgIGRvZXMgbm90IGNvbnRhaW4gYW4gZWxlbWVudCB3
aXRoIGEgbWF0Y2hpbmcga2V5LCB0aGlzCisgIC8vICAgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0
eSBub2RlIGhhbmRsZS4KKyAgdXNpbmcgQmFzZTo6ZXh0cmFjdDsKKworICAvLyBub2RlX2hhc2hf
bWFwOjptZXJnZSgpCisgIC8vCisgIC8vIEV4dHJhY3RzIGVsZW1lbnRzIGZyb20gYSBnaXZlbiBg
c291cmNlYCBub2RlIGhhc2ggbWFwIGludG8gdGhpcworICAvLyBgbm9kZV9oYXNoX21hcGAuIElm
IHRoZSBkZXN0aW5hdGlvbiBgbm9kZV9oYXNoX21hcGAgYWxyZWFkeSBjb250YWlucyBhbgorICAv
LyBlbGVtZW50IHdpdGggYW4gZXF1aXZhbGVudCBrZXksIHRoYXQgZWxlbWVudCBpcyBub3QgZXh0
cmFjdGVkLgorICB1c2luZyBCYXNlOjptZXJnZTsKKworICAvLyBub2RlX2hhc2hfbWFwOjpzd2Fw
KG5vZGVfaGFzaF9tYXAmIG90aGVyKQorICAvLworICAvLyBFeGNoYW5nZXMgdGhlIGNvbnRlbnRz
IG9mIHRoaXMgYG5vZGVfaGFzaF9tYXBgIHdpdGggdGhvc2Ugb2YgdGhlIGBvdGhlcmAKKyAgLy8g
bm9kZSBoYXNoIG1hcCwgYXZvaWRpbmcgaW52b2NhdGlvbiBvZiBhbnkgbW92ZSwgY29weSwgb3Ig
c3dhcCBvcGVyYXRpb25zIG9uCisgIC8vIGluZGl2aWR1YWwgZWxlbWVudHMuCisgIC8vCisgIC8v
IEFsbCBpdGVyYXRvcnMgYW5kIHJlZmVyZW5jZXMgb24gdGhlIGBub2RlX2hhc2hfbWFwYCByZW1h
aW4gdmFsaWQsIGV4Y2VwdGluZworICAvLyBmb3IgdGhlIHBhc3QtdGhlLWVuZCBpdGVyYXRvciwg
d2hpY2ggaXMgaW52YWxpZGF0ZWQuCisgIC8vCisgIC8vIGBzd2FwKClgIHJlcXVpcmVzIHRoYXQg
dGhlIG5vZGUgaGFzaCBtYXAncyBoYXNoaW5nIGFuZCBrZXkgZXF1aXZhbGVuY2UKKyAgLy8gZnVu
Y3Rpb25zIGJlIFN3YXBwYWJsZSwgYW5kIGFyZSBleGNoYWdlZCB1c2luZyB1bnF1YWxpZmllZCBj
YWxscyB0bworICAvLyBub24tbWVtYmVyIGBzd2FwKClgLiBJZiB0aGUgbWFwJ3MgYWxsb2NhdG9y
IGhhcworICAvLyBgc3RkOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcl90eXBlPjo6cHJvcGFn
YXRlX29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZWAKKyAgLy8gc2V0IHRvIGB0cnVlYCwgdGhlIGFs
bG9jYXRvcnMgYXJlIGFsc28gZXhjaGFuZ2VkIHVzaW5nIGFuIHVucXVhbGlmaWVkIGNhbGwKKyAg
Ly8gdG8gbm9uLW1lbWJlciBgc3dhcCgpYDsgb3RoZXJ3aXNlLCB0aGUgYWxsb2NhdG9ycyBhcmUg
bm90IHN3YXBwZWQuCisgIHVzaW5nIEJhc2U6OnN3YXA7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6
cmVoYXNoKGNvdW50KQorICAvLworICAvLyBSZWhhc2hlcyB0aGUgYG5vZGVfaGFzaF9tYXBgLCBz
ZXR0aW5nIHRoZSBudW1iZXIgb2Ygc2xvdHMgdG8gYmUgYXQgbGVhc3QKKyAgLy8gdGhlIHBhc3Nl
ZCB2YWx1ZS4gSWYgdGhlIG5ldyBudW1iZXIgb2Ygc2xvdHMgaW5jcmVhc2VzIHRoZSBsb2FkIGZh
Y3RvciBtb3JlCisgIC8vIHRoYW4gdGhlIGN1cnJlbnQgbWF4aW11bSBsb2FkIGZhY3RvcgorICAv
LyAoYGNvdW50YCA8IGBzaXplKClgIC8gYG1heF9sb2FkX2ZhY3RvcigpYCksIHRoZW4gdGhlIG5l
dyBudW1iZXIgb2Ygc2xvdHMKKyAgLy8gd2lsbCBiZSBhdCBsZWFzdCBgc2l6ZSgpYCAvIGBtYXhf
bG9hZF9mYWN0b3IoKWAuCisgIC8vCisgIC8vIFRvIGZvcmNlIGEgcmVoYXNoLCBwYXNzIHJlaGFz
aCgwKS4KKyAgdXNpbmcgQmFzZTo6cmVoYXNoOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OnJlc2Vy
dmUoY291bnQpCisgIC8vCisgIC8vIFNldHMgdGhlIG51bWJlciBvZiBzbG90cyBpbiB0aGUgYG5v
ZGVfaGFzaF9tYXBgIHRvIHRoZSBudW1iZXIgbmVlZGVkIHRvCisgIC8vIGFjY29tbW9kYXRlIGF0
IGxlYXN0IGBjb3VudGAgdG90YWwgZWxlbWVudHMgd2l0aG91dCBleGNlZWRpbmcgdGhlIGN1cnJl
bnQKKyAgLy8gbWF4aW11bSBsb2FkIGZhY3RvciwgYW5kIG1heSByZWhhc2ggdGhlIGNvbnRhaW5l
ciBpZiBuZWVkZWQuCisgIHVzaW5nIEJhc2U6OnJlc2VydmU7CisKKyAgLy8gbm9kZV9oYXNoX21h
cDo6YXQoKQorICAvLworICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBtYXBwZWQgdmFs
dWUgb2YgdGhlIGVsZW1lbnQgd2l0aCBrZXkgZXF1aXZhbGVudAorICAvLyB0byB0aGUgcGFzc2Vk
IGtleS4KKyAgdXNpbmcgQmFzZTo6YXQ7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6Y29udGFpbnMo
KQorICAvLworICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxlbWVudCB3aXRoIGEga2V5IGNv
bXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4gYGtleWAKKyAgLy8gZXhpc3RzIHdpdGhpbiB0aGUg
YG5vZGVfaGFzaF9tYXBgLCByZXR1cm5pbmcgYHRydWVgIGlmIHNvIG9yIGBmYWxzZWAKKyAgLy8g
b3RoZXJ3aXNlLgorICB1c2luZyBCYXNlOjpjb250YWluczsKKworICAvLyBub2RlX2hhc2hfbWFw
Ojpjb3VudChjb25zdCBLZXkmIGtleSkgY29uc3QKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVt
YmVyIG9mIGVsZW1lbnRzIHdpdGggYSBrZXkgY29tcGFyaW5nIGVxdWFsIHRvIHRoZSBnaXZlbgor
ICAvLyBga2V5YCB3aXRoaW4gdGhlIGBub2RlX2hhc2hfbWFwYC4gbm90ZSB0aGF0IHRoaXMgZnVu
Y3Rpb24gd2lsbCByZXR1cm4KKyAgLy8gZWl0aGVyIGAxYCBvciBgMGAgc2luY2UgZHVwbGljYXRl
IGtleXMgYXJlIG5vdCBhbGxvd2VkIHdpdGhpbiBhCisgIC8vIGBub2RlX2hhc2hfbWFwYC4KKyAg
dXNpbmcgQmFzZTo6Y291bnQ7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6ZXF1YWxfcmFuZ2UoKQor
ICAvLworICAvLyBSZXR1cm5zIGEgY2xvc2VkIHJhbmdlIFtmaXJzdCwgbGFzdF0sIGRlZmluZWQg
YnkgYSBgc3RkOjpwYWlyYCBvZiB0d28KKyAgLy8gaXRlcmF0b3JzLCBjb250YWluaW5nIGFsbCBl
bGVtZW50cyB3aXRoIHRoZSBwYXNzZWQga2V5IGluIHRoZQorICAvLyBgbm9kZV9oYXNoX21hcGAu
CisgIHVzaW5nIEJhc2U6OmVxdWFsX3JhbmdlOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmZpbmQo
KQorICAvLworICAvLyBGaW5kcyBhbiBlbGVtZW50IHdpdGggdGhlIHBhc3NlZCBga2V5YCB3aXRo
aW4gdGhlIGBub2RlX2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6ZmluZDsKKworICAvLyBub2Rl
X2hhc2hfbWFwOjpvcGVyYXRvcltdKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0
byB0aGUgdmFsdWUgbWFwcGVkIHRvIHRoZSBwYXNzZWQga2V5IHdpdGhpbiB0aGUKKyAgLy8gYG5v
ZGVfaGFzaF9tYXBgLCBwZXJmb3JtaW5nIGFuIGBpbnNlcnQoKWAgaWYgdGhlIGtleSBkb2VzIG5v
dCBhbHJlYWR5CisgIC8vIGV4aXN0LiBJZiBhbiBpbnNlcnRpb24gb2NjdXJzIGFuZCByZXN1bHRz
IGluIGEgcmVoYXNoaW5nIG9mIHRoZSBjb250YWluZXIsCisgIC8vIGFsbCBpdGVyYXRvcnMgYXJl
IGludmFsaWRhdGVkLiBPdGhlcndpc2UgaXRlcmF0b3JzIGFyZSBub3QgYWZmZWN0ZWQgYW5kCisg
IC8vIHJlZmVyZW5jZXMgYXJlIG5vdCBpbnZhbGlkYXRlZC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQg
YmVsb3cuCisgIC8vCisgIC8vIFQmIG9wZXJhdG9yW10oY29uc3QgS2V5JiBrZXkpOgorICAvLwor
ICAvLyAgIEluc2VydHMgYW4gaW5pdF90eXBlIG9iamVjdCBjb25zdHJ1Y3RlZCBpbi1wbGFjZSBp
ZiB0aGUgZWxlbWVudCB3aXRoIHRoZQorICAvLyAgIGdpdmVuIGtleSBkb2VzIG5vdCBleGlzdC4K
KyAgLy8KKyAgLy8gVCYgb3BlcmF0b3JbXShLZXkmJiBrZXkpOgorICAvLworICAvLyAgIEluc2Vy
dHMgYW4gaW5pdF90eXBlIG9iamVjdCBjb25zdHJ1Y3RlZCBpbi1wbGFjZSBwcm92aWRlZCB0aGF0
IGFuIGVsZW1lbnQKKyAgLy8gICB3aXRoIHRoZSBnaXZlbiBrZXkgZG9lcyBub3QgZXhpc3QuCisg
IHVzaW5nIEJhc2U6Om9wZXJhdG9yW107CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6YnVja2V0X2Nv
dW50KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mICJidWNrZXRzIiB3aXRoaW4g
dGhlIGBub2RlX2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6YnVja2V0X2NvdW50OworCisgIC8v
IG5vZGVfaGFzaF9tYXA6OmxvYWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgY3Vy
cmVudCBsb2FkIGZhY3RvciBvZiB0aGUgYG5vZGVfaGFzaF9tYXBgICh0aGUgYXZlcmFnZSBudW1i
ZXIKKyAgLy8gb2Ygc2xvdHMgb2NjdXBpZWQgd2l0aCBhIHZhbHVlIHdpdGhpbiB0aGUgaGFzaCBt
YXApLgorICB1c2luZyBCYXNlOjpsb2FkX2ZhY3RvcjsKKworICAvLyBub2RlX2hhc2hfbWFwOjpt
YXhfbG9hZF9mYWN0b3IoKQorICAvLworICAvLyBNYW5hZ2VzIHRoZSBtYXhpbXVtIGxvYWQgZmFj
dG9yIG9mIHRoZSBgbm9kZV9oYXNoX21hcGAuIE92ZXJsb2FkcyBhcmUKKyAgLy8gbGlzdGVkIGJl
bG93LgorICAvLworICAvLyBmbG9hdCBub2RlX2hhc2hfbWFwOjptYXhfbG9hZF9mYWN0b3IoKQor
ICAvLworICAvLyAgIFJldHVybnMgdGhlIGN1cnJlbnQgbWF4aW11bSBsb2FkIGZhY3RvciBvZiB0
aGUgYG5vZGVfaGFzaF9tYXBgLgorICAvLworICAvLyB2b2lkIG5vZGVfaGFzaF9tYXA6Om1heF9s
b2FkX2ZhY3RvcihmbG9hdCBtbCkKKyAgLy8KKyAgLy8gICBTZXRzIHRoZSBtYXhpbXVtIGxvYWQg
ZmFjdG9yIG9mIHRoZSBgbm9kZV9oYXNoX21hcGAgdG8gdGhlIHBhc3NlZCB2YWx1ZS4KKyAgLy8K
KyAgLy8gICBOT1RFOiBUaGlzIG92ZXJsb2FkIGlzIHByb3ZpZGVkIG9ubHkgZm9yIEFQSSBjb21w
YXRpYmlsaXR5IHdpdGggdGhlIFNUTDsKKyAgLy8gICBgbm9kZV9oYXNoX21hcGAgd2lsbCBpZ25v
cmUgYW55IHNldCBsb2FkIGZhY3RvciBhbmQgbWFuYWdlIGl0cyByZWhhc2hpbmcKKyAgLy8gICBp
bnRlcm5hbGx5IGFzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KKyAgdXNpbmcgQmFzZTo6bWF4
X2xvYWRfZmFjdG9yOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmdldF9hbGxvY2F0b3IoKQorICAv
LworICAvLyBSZXR1cm5zIHRoZSBhbGxvY2F0b3IgZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRo
aXMgYG5vZGVfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpnZXRfYWxsb2NhdG9yOworCisgIC8v
IG5vZGVfaGFzaF9tYXA6Omhhc2hfZnVuY3Rpb24oKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBo
YXNoaW5nIGZ1bmN0aW9uIHVzZWQgdG8gaGFzaCB0aGUga2V5cyB3aXRoaW4gdGhpcworICAvLyBg
bm9kZV9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6Omhhc2hfZnVuY3Rpb247CisKKyAgLy8gbm9k
ZV9oYXNoX21hcDo6a2V5X2VxKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgZnVuY3Rpb24gdXNl
ZCBmb3IgY29tcGFyaW5nIGtleXMgZXF1YWxpdHkuCisgIHVzaW5nIEJhc2U6OmtleV9lcTsKKwor
ICBBQlNMX0RFUFJFQ0FURUQoIkNhbGwgYGhhc2hfZnVuY3Rpb24oKWAgaW5zdGVhZC4iKQorICB0
eXBlbmFtZSBCYXNlOjpoYXNoZXIgaGFzaF9mdW5jdCgpIHsgcmV0dXJuIHRoaXMtPmhhc2hfZnVu
Y3Rpb24oKTsgfQorCisgIEFCU0xfREVQUkVDQVRFRCgiQ2FsbCBgcmVoYXNoKClgIGluc3RlYWQu
IikKKyAgdm9pZCByZXNpemUodHlwZW5hbWUgQmFzZTo6c2l6ZV90eXBlIGhpbnQpIHsgdGhpcy0+
cmVoYXNoKGhpbnQpOyB9Cit9OworCituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwor
dGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVmFsdWU+CitjbGFzcyBOb2RlSGFzaE1hcFBvbGlj
eQorICAgIDogcHVibGljIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6bm9kZV9oYXNoX3BvbGlj
eTwKKyAgICAgICAgICBzdGQ6OnBhaXI8Y29uc3QgS2V5LCBWYWx1ZT4mLCBOb2RlSGFzaE1hcFBv
bGljeTxLZXksIFZhbHVlPj4geworICB1c2luZyB2YWx1ZV90eXBlID0gc3RkOjpwYWlyPGNvbnN0
IEtleSwgVmFsdWU+OworCisgcHVibGljOgorICB1c2luZyBrZXlfdHlwZSA9IEtleTsKKyAgdXNp
bmcgbWFwcGVkX3R5cGUgPSBWYWx1ZTsKKyAgdXNpbmcgaW5pdF90eXBlID0gc3RkOjpwYWlyPC8q
bm9uIGNvbnN0Ki8ga2V5X3R5cGUsIG1hcHBlZF90eXBlPjsKKworICB0ZW1wbGF0ZSA8Y2xhc3Mg
QWxsb2NhdG9yLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgdmFsdWVfdHlwZSogbmV3X2VsZW1l
bnQoQWxsb2NhdG9yKiBhbGxvYywgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICB1c2luZyBQYWlyQWxs
b2MgPSB0eXBlbmFtZSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPAorICAgICAgICBBbGxvY2F0b3I+
Ojp0ZW1wbGF0ZSByZWJpbmRfYWxsb2M8dmFsdWVfdHlwZT47CisgICAgUGFpckFsbG9jIHBhaXJf
YWxsb2MoKmFsbG9jKTsKKyAgICB2YWx1ZV90eXBlKiByZXMgPQorICAgICAgICBhYnNsOjphbGxv
Y2F0b3JfdHJhaXRzPFBhaXJBbGxvYz46OmFsbG9jYXRlKHBhaXJfYWxsb2MsIDEpOworICAgIGFi
c2w6OmFsbG9jYXRvcl90cmFpdHM8UGFpckFsbG9jPjo6Y29uc3RydWN0KHBhaXJfYWxsb2MsIHJl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHJldHVybiByZXM7CisgIH0KKworICB0ZW1w
bGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgorICBzdGF0aWMgdm9pZCBkZWxldGVfZWxlbWVudChBbGxv
Y2F0b3IqIGFsbG9jLCB2YWx1ZV90eXBlKiBwYWlyKSB7CisgICAgdXNpbmcgUGFpckFsbG9jID0g
dHlwZW5hbWUgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czwKKyAgICAgICAgQWxsb2NhdG9yPjo6dGVt
cGxhdGUgcmViaW5kX2FsbG9jPHZhbHVlX3R5cGU+OworICAgIFBhaXJBbGxvYyBwYWlyX2FsbG9j
KCphbGxvYyk7CisgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxQYWlyQWxsb2M+OjpkZXN0cm95
KHBhaXJfYWxsb2MsIHBhaXIpOworICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8UGFpckFsbG9j
Pjo6ZGVhbGxvY2F0ZShwYWlyX2FsbG9jLCBwYWlyLCAxKTsKKyAgfQorCisgIHRlbXBsYXRlIDxj
bGFzcyBGLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgZGVjbHR5cGUoYWJzbDo6Y29udGFpbmVy
X2ludGVybmFsOjpEZWNvbXBvc2VQYWlyKAorICAgICAgc3RkOjpkZWNsdmFsPEY+KCksIHN0ZDo6
ZGVjbHZhbDxBcmdzPigpLi4uKSkKKyAgYXBwbHkoRiYmIGYsIEFyZ3MmJi4uLiBhcmdzKSB7Cisg
ICAgcmV0dXJuIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6RGVjb21wb3NlUGFpcihzdGQ6OmZv
cndhcmQ8Rj4oZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAgc3RhdGljIHNp
emVfdCBlbGVtZW50X3NwYWNlX3VzZWQoY29uc3QgdmFsdWVfdHlwZSopIHsKKyAgICByZXR1cm4g
c2l6ZW9mKHZhbHVlX3R5cGUpOworICB9CisKKyAgc3RhdGljIFZhbHVlJiB2YWx1ZSh2YWx1ZV90
eXBlKiBlbGVtKSB7IHJldHVybiBlbGVtLT5zZWNvbmQ7IH0KKyAgc3RhdGljIGNvbnN0IFZhbHVl
JiB2YWx1ZShjb25zdCB2YWx1ZV90eXBlKiBlbGVtKSB7IHJldHVybiBlbGVtLT5zZWNvbmQ7IH0K
K307Cit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbAorI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9OT0RFX0hBU0hfTUFQX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNoX21hcF90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL25vZGVfaGFzaF9tYXBfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDc4OTY0NGMyNGU4YzgxNzQx
NDkzZTU1YmYwYjYxZTJmMzU2NjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L25vZGVfaGFzaF9tYXBfdGVzdC5jYwpAQCAtMCwwICsxLDIxOCBAQAorLy8gQ29weXJpZ2h0IDIw
MTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL25vZGVf
aGFzaF9tYXAuaCIKKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3RyYWNrZWQu
aCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0
cnVjdG9yX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVy
ZWRfbWFwX2xvb2t1cF90ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
dW5vcmRlcmVkX21hcF9tb2RpZmllcnNfdGVzdC5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6dGVzdGlu
Zzo6RmllbGQ7Cit1c2luZyA6OnRlc3Rpbmc6OlBhaXI7Cit1c2luZyA6OnRlc3Rpbmc6OlVub3Jk
ZXJlZEVsZW1lbnRzQXJlOworCit1c2luZyBNYXBUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8Cisg
ICAgYWJzbDo6bm9kZV9oYXNoX21hcDxpbnQsIGludCwgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3Rh
dGVmdWxUZXN0aW5nRXF1YWwsCisgICAgICAgICAgICAgICAgICAgICAgICBBbGxvYzxzdGQ6OnBh
aXI8Y29uc3QgaW50LCBpbnQ+Pj4sCisgICAgYWJzbDo6bm9kZV9oYXNoX21hcDxzdGQ6OnN0cmlu
Zywgc3RkOjpzdHJpbmcsIFN0YXRlZnVsVGVzdGluZ0hhc2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9j
PHN0ZDo6cGFpcjxjb25zdCBzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+Pj4+OworCitJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChOb2RlSGFzaE1hcCwgQ29uc3RydWN0b3JUZXN0LCBNYXBU
eXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChOb2RlSGFzaE1hcCwgTG9va3Vw
VGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTm9kZUhhc2hN
YXAsIE1vZGlmaWVyc1Rlc3QsIE1hcFR5cGVzKTsKKwordXNpbmcgTSA9IGFic2w6Om5vZGVfaGFz
aF9tYXA8c3RkOjpzdHJpbmcsIFRyYWNrZWQ8aW50Pj47CisKK1RFU1QoTm9kZUhhc2hNYXAsIEVt
cGxhY2UpIHsKKyAgTSBtOworICBUcmFja2VkPGludD4gdCg1Myk7CisgIG0uZW1wbGFjZSgiYSIs
IHQpOworICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSgxLCB0Lm51
bV9jb3BpZXMoKSk7CisKKyAgbS5lbXBsYWNlKHN0ZDo6c3RyaW5nKCJhIiksIHQpOworICBBU1NF
UlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSgxLCB0Lm51bV9jb3BpZXMoKSk7
CisKKyAgc3RkOjpzdHJpbmcgYSgiYSIpOworICBtLmVtcGxhY2UoYSwgdCk7CisgIEFTU0VSVF9F
USgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDEsIHQubnVtX2NvcGllcygpKTsKKwor
ICBjb25zdCBzdGQ6OnN0cmluZyBjYSgiYSIpOworICBtLmVtcGxhY2UoYSwgdCk7CisgIEFTU0VS
VF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDEsIHQubnVtX2NvcGllcygpKTsK
KworICBtLmVtcGxhY2Uoc3RkOjptYWtlX3BhaXIoImEiLCB0KSk7CisgIEFTU0VSVF9FUSgwLCB0
Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDIsIHQubnVtX2NvcGllcygpKTsKKworICBtLmVt
cGxhY2Uoc3RkOjptYWtlX3BhaXIoc3RkOjpzdHJpbmcoImEiKSwgdCkpOworICBBU1NFUlRfRVEo
MCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSgzLCB0Lm51bV9jb3BpZXMoKSk7CisKKyAg
c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBUcmFja2VkPGludD4+IHAoImEiLCB0KTsKKyAgQVNTRVJU
X0VRKDAsIHQubnVtX21vdmVzKCkpOworICBBU1NFUlRfRVEoNCwgdC5udW1fY29waWVzKCkpOwor
ICBtLmVtcGxhY2UocCk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJU
X0VRKDQsIHQubnVtX2NvcGllcygpKTsKKworICBjb25zdCBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcs
IFRyYWNrZWQ8aW50Pj4gY3AoImEiLCB0KTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21vdmVzKCkp
OworICBBU1NFUlRfRVEoNSwgdC5udW1fY29waWVzKCkpOworICBtLmVtcGxhY2UoY3ApOworICBB
U1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSg1LCB0Lm51bV9jb3BpZXMo
KSk7CisKKyAgc3RkOjpwYWlyPGNvbnN0IHN0ZDo6c3RyaW5nLCBUcmFja2VkPGludD4+IHBjKCJh
IiwgdCk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDYsIHQu
bnVtX2NvcGllcygpKTsKKyAgbS5lbXBsYWNlKHBjKTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21v
dmVzKCkpOworICBBU1NFUlRfRVEoNiwgdC5udW1fY29waWVzKCkpOworCisgIGNvbnN0IHN0ZDo6
cGFpcjxjb25zdCBzdGQ6OnN0cmluZywgVHJhY2tlZDxpbnQ+PiBjcGMoImEiLCB0KTsKKyAgQVNT
RVJUX0VRKDAsIHQubnVtX21vdmVzKCkpOworICBBU1NFUlRfRVEoNywgdC5udW1fY29waWVzKCkp
OworICBtLmVtcGxhY2UoY3BjKTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21vdmVzKCkpOworICBB
U1NFUlRfRVEoNywgdC5udW1fY29waWVzKCkpOworCisgIG0uZW1wbGFjZShzdGQ6OnBpZWNld2lz
ZV9jb25zdHJ1Y3QsIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgiYSIpLAorICAgICAgICAgICAgc3Rk
Ojpmb3J3YXJkX2FzX3R1cGxlKHQpKTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21vdmVzKCkpOwor
ICBBU1NFUlRfRVEoNywgdC5udW1fY29waWVzKCkpOworCisgIG0uZW1wbGFjZShzdGQ6OnBpZWNl
d2lzZV9jb25zdHJ1Y3QsIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShzdGQ6OnN0cmluZygiYSIpKSwK
KyAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSh0KSk7CisgIEFTU0VSVF9FUSgwLCB0
Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDcsIHQubnVtX2NvcGllcygpKTsKK30KKworVEVT
VChOb2RlSGFzaE1hcCwgQXNzaWduUmVjdXJzaXZlKSB7CisgIHN0cnVjdCBUcmVlIHsKKyAgICAv
LyBWZXJpZnkgdGhhdCB1bm9yZGVyZWRfbWFwPEssIEluY29tcGxldGVUeXBlPiBjYW4gYmUgaW5z
dGFudGlhdGVkLgorICAgIGFic2w6Om5vZGVfaGFzaF9tYXA8aW50LCBUcmVlPiBjaGlsZHJlbjsK
KyAgfTsKKyAgVHJlZSByb290OworICBjb25zdCBUcmVlJiBjaGlsZCA9IHJvb3QuY2hpbGRyZW4u
ZW1wbGFjZSgpLmZpcnN0LT5zZWNvbmQ7CisgIC8vIFZlcmlmeSB0aGF0IGBsaHMgPSByaHNgIGRv
ZXNuJ3QgcmVhZCByaHMgYWZ0ZXIgY2xlYXJpbmcgbGhzLgorICByb290ID0gY2hpbGQ7Cit9CisK
K1RFU1QoRmxhdEhhc2hNYXAsIE1vdmVPbmx5S2V5KSB7CisgIHN0cnVjdCBLZXkgeworICAgIEtl
eSgpID0gZGVmYXVsdDsKKyAgICBLZXkoS2V5JiYpID0gZGVmYXVsdDsKKyAgICBLZXkmIG9wZXJh
dG9yPShLZXkmJikgPSBkZWZhdWx0OworICB9OworICBzdHJ1Y3QgRXEgeworICAgIGJvb2wgb3Bl
cmF0b3IoKShjb25zdCBLZXkmLCBjb25zdCBLZXkmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cisg
IH07CisgIHN0cnVjdCBIYXNoIHsKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBLZXkmKSBj
b25zdCB7IHJldHVybiAwOyB9CisgIH07CisgIGFic2w6Om5vZGVfaGFzaF9tYXA8S2V5LCBpbnQs
IEhhc2gsIEVxPiBtOworICBtW0tleSgpXTsKK30KKworc3RydWN0IE5vbk1vdmFibGVLZXkgewor
ICBleHBsaWNpdCBOb25Nb3ZhYmxlS2V5KGludCBpKSA6IGkoaSkge30KKyAgTm9uTW92YWJsZUtl
eShOb25Nb3ZhYmxlS2V5JiYpID0gZGVsZXRlOworICBpbnQgaTsKK307CitzdHJ1Y3QgTm9uTW92
YWJsZUtleUhhc2ggeworICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7CisgIHNpemVfdCBv
cGVyYXRvcigpKGNvbnN0IE5vbk1vdmFibGVLZXkmIGspIGNvbnN0IHsgcmV0dXJuIGsuaTsgfQor
ICBzaXplX3Qgb3BlcmF0b3IoKShpbnQgaykgY29uc3QgeyByZXR1cm4gazsgfQorfTsKK3N0cnVj
dCBOb25Nb3ZhYmxlS2V5RXEgeworICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7CisgIGJv
b2wgb3BlcmF0b3IoKShjb25zdCBOb25Nb3ZhYmxlS2V5JiBhLCBjb25zdCBOb25Nb3ZhYmxlS2V5
JiBiKSBjb25zdCB7CisgICAgcmV0dXJuIGEuaSA9PSBiLmk7CisgIH0KKyAgYm9vbCBvcGVyYXRv
cigpKGNvbnN0IE5vbk1vdmFibGVLZXkmIGEsIGludCBiKSBjb25zdCB7IHJldHVybiBhLmkgPT0g
YjsgfQorfTsKKworVEVTVChOb2RlSGFzaE1hcCwgTWVyZ2VFeHRyYWN0SW5zZXJ0KSB7CisgIGFi
c2w6Om5vZGVfaGFzaF9tYXA8Tm9uTW92YWJsZUtleSwgaW50LCBOb25Nb3ZhYmxlS2V5SGFzaCwg
Tm9uTW92YWJsZUtleUVxPgorICAgICAgc2V0MSwgc2V0MjsKKyAgc2V0MS5lbXBsYWNlKHN0ZDo6
cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjptYWtlX3R1cGxlKDcpLAorICAgICAgICAgICAgICAg
c3RkOjptYWtlX3R1cGxlKC03KSk7CisgIHNldDEuZW1wbGFjZShzdGQ6OnBpZWNld2lzZV9jb25z
dHJ1Y3QsIHN0ZDo6bWFrZV90dXBsZSgxNyksCisgICAgICAgICAgICAgICBzdGQ6Om1ha2VfdHVw
bGUoLTE3KSk7CisKKyAgc2V0Mi5lbXBsYWNlKHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3Rk
OjptYWtlX3R1cGxlKDcpLAorICAgICAgICAgICAgICAgc3RkOjptYWtlX3R1cGxlKC03MCkpOwor
ICBzZXQyLmVtcGxhY2Uoc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6Om1ha2VfdHVwbGUo
MTkpLAorICAgICAgICAgICAgICAgc3RkOjptYWtlX3R1cGxlKC0xOTApKTsKKworICBhdXRvIEVs
ZW0gPSBbXShpbnQga2V5LCBpbnQgdmFsdWUpIHsKKyAgICByZXR1cm4gUGFpcihGaWVsZCgmTm9u
TW92YWJsZUtleTo6aSwga2V5KSwgdmFsdWUpOworICB9OworCisgIEVYUEVDVF9USEFUKHNldDEs
IFVub3JkZXJlZEVsZW1lbnRzQXJlKEVsZW0oNywgLTcpLCBFbGVtKDE3LCAtMTcpKSk7CisgIEVY
UEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKEVsZW0oNywgLTcwKSwgRWxlbSgx
OSwgLTE5MCkpKTsKKworICAvLyBOb25Nb3ZhYmxlS2V5IGlzIG5laXRoZXIgY29weWFibGUgbm9y
IG1vdmFibGUuIFdlIHNob3VsZCBzdGlsbCBiZSBhYmxlIHRvCisgIC8vIG1vdmUgbm9kZXMgYXJv
dW5kLgorICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxOb25Nb3Zh
YmxlS2V5Pjo6dmFsdWUsICIiKTsKKyAgc2V0MS5tZXJnZShzZXQyKTsKKworICBFWFBFQ1RfVEhB
VChzZXQxLAorICAgICAgICAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShFbGVtKDcsIC03KSwg
RWxlbSgxNywgLTE3KSwgRWxlbSgxOSwgLTE5MCkpKTsKKyAgRVhQRUNUX1RIQVQoc2V0MiwgVW5v
cmRlcmVkRWxlbWVudHNBcmUoRWxlbSg3LCAtNzApKSk7CisKKyAgYXV0byBub2RlID0gc2V0MS5l
eHRyYWN0KDcpOworICBFWFBFQ1RfVFJVRShub2RlKTsKKyAgRVhQRUNUX0VRKG5vZGUua2V5KCku
aSwgNyk7CisgIEVYUEVDVF9FUShub2RlLm1hcHBlZCgpLCAtNyk7CisgIEVYUEVDVF9USEFUKHNl
dDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKEVsZW0oMTcsIC0xNyksIEVsZW0oMTksIC0xOTApKSk7
CisKKyAgYXV0byBpbnNlcnRfcmVzdWx0ID0gc2V0Mi5pbnNlcnQoc3RkOjptb3ZlKG5vZGUpKTsK
KyAgRVhQRUNUX0ZBTFNFKG5vZGUpOworICBFWFBFQ1RfRkFMU0UoaW5zZXJ0X3Jlc3VsdC5pbnNl
cnRlZCk7CisgIEVYUEVDVF9UUlVFKGluc2VydF9yZXN1bHQubm9kZSk7CisgIEVYUEVDVF9FUShp
bnNlcnRfcmVzdWx0Lm5vZGUua2V5KCkuaSwgNyk7CisgIEVYUEVDVF9FUShpbnNlcnRfcmVzdWx0
Lm5vZGUubWFwcGVkKCksIC03KTsKKyAgRVhQRUNUX1RIQVQoKmluc2VydF9yZXN1bHQucG9zaXRp
b24sIEVsZW0oNywgLTcwKSk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVsZW1lbnRz
QXJlKEVsZW0oNywgLTcwKSkpOworCisgIG5vZGUgPSBzZXQxLmV4dHJhY3QoMTcpOworICBFWFBF
Q1RfVFJVRShub2RlKTsKKyAgRVhQRUNUX0VRKG5vZGUua2V5KCkuaSwgMTcpOworICBFWFBFQ1Rf
RVEobm9kZS5tYXBwZWQoKSwgLTE3KTsKKyAgRVhQRUNUX1RIQVQoc2V0MSwgVW5vcmRlcmVkRWxl
bWVudHNBcmUoRWxlbSgxOSwgLTE5MCkpKTsKKworICBub2RlLm1hcHBlZCgpID0gMjM7CisKKyAg
aW5zZXJ0X3Jlc3VsdCA9IHNldDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7CisgIEVYUEVDVF9G
QUxTRShub2RlKTsKKyAgRVhQRUNUX1RSVUUoaW5zZXJ0X3Jlc3VsdC5pbnNlcnRlZCk7CisgIEVY
UEVDVF9GQUxTRShpbnNlcnRfcmVzdWx0Lm5vZGUpOworICBFWFBFQ1RfVEhBVCgqaW5zZXJ0X3Jl
c3VsdC5wb3NpdGlvbiwgRWxlbSgxNywgMjMpKTsKKyAgRVhQRUNUX1RIQVQoc2V0MiwgVW5vcmRl
cmVkRWxlbWVudHNBcmUoRWxlbSg3LCAtNzApLCBFbGVtKDE3LCAyMykpKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1l
c3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBkNGNlMGMxNjMx
ZDc4Y2ZlY2ZjZDhmYzI5YTFjNDg0YWU5ZjYzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9ub2RlX2hhc2hfc2V0LmgKQEAgLTAsMCArMSw0MzkgQEAKKy8vIENvcHlyaWdodCAy
MDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IEZpbGU6IG5vZGVfaGFzaF9zZXQuaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBB
biBgYWJzbDo6bm9kZV9oYXNoX3NldDxUPmAgaXMgYW4gdW5vcmRlcmVkIGFzc29jaWF0aXZlIGNv
bnRhaW5lciBkZXNpZ25lZCB0bworLy8gYmUgYSBtb3JlIGVmZmljaWVudCByZXBsYWNlbWVudCBm
b3IgYHN0ZDo6dW5vcmRlcmVkX3NldGAuIExpa2UKKy8vIGB1bm9yZGVyZWRfc2V0YCwgc2VhcmNo
LCBpbnNlcnRpb24sIGFuZCBkZWxldGlvbiBvZiBtYXAgZWxlbWVudHMgY2FuIGJlIGRvbmUKKy8v
IGFzIGFuIGBPKDEpYCBvcGVyYXRpb24uIEhvd2V2ZXIsIGBub2RlX2hhc2hfc2V0YCAoYW5kIG90
aGVyIHVub3JkZXJlZAorLy8gYXNzb2NpYXRpdmUgY29udGFpbmVycyBrbm93biBhcyB0aGUgY29s
bGVjdGlvbiBvZiBBYnNlaWwgIlN3aXNzIHRhYmxlcyIpCisvLyBjb250YWluIG90aGVyIG9wdGlt
aXphdGlvbnMgdGhhdCByZXN1bHQgaW4gYm90aCBtZW1vcnkgYW5kIGNvbXB1dGF0aW9uCisvLyBh
ZHZhbnRhZ2VzLgorLy8KKy8vIEluIG1vc3QgY2FzZXMsIHlvdXIgZGVmYXVsdCBjaG9pY2UgZm9y
IGEgaGFzaCB0YWJsZSBzaG91bGQgYmUgYSBtYXAgb2YgdHlwZQorLy8gYGZsYXRfaGFzaF9tYXBg
IG9yIGEgc2V0IG9mIHR5cGUgYGZsYXRfaGFzaF9zZXRgLiBIb3dldmVyLCBpZiB5b3UgbmVlZAor
Ly8gcG9pbnRlciBzdGFiaWxpdHksIGEgYG5vZGVfaGFzaF9zZXRgIHNob3VsZCBiZSB5b3VyIHBy
ZWZlcnJlZCBjaG9pY2UuIEFzCisvLyB3ZWxsLCBpZiB5b3UgYXJlIG1pZ3JhdGluZyB5b3VyIGNv
ZGUgZnJvbSB1c2luZyBgc3RkOjp1bm9yZGVyZWRfc2V0YCwgYQorLy8gYG5vZGVfaGFzaF9zZXRg
IHNob3VsZCBiZSBhbiBlYXN5IG1pZ3JhdGlvbi4gQ29uc2lkZXIgbWlncmF0aW5nIHRvCisvLyBg
bm9kZV9oYXNoX3NldGAgYW5kIHBlcmhhcHMgY29udmVydGluZyB0byBhIG1vcmUgZWZmaWNpZW50
IGBmbGF0X2hhc2hfc2V0YAorLy8gdXBvbiBmdXJ0aGVyIHJldmlldy4KKworI2lmbmRlZiBBQlNM
X0NPTlRBSU5FUl9OT0RFX0hBU0hfU0VUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX05PREVf
SEFTSF9TRVRfSF8KKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisjaW5jbHVkZSAiYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiAgLy8gSVdZVSBwcmFn
bWE6IGV4cG9ydAorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL25vZGVfaGFzaF9w
b2xpY3kuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQu
aCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnku
aCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBOb2RlSGFzaFNldFBvbGljeTsKK30gIC8vIG5h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IGFic2w6Om5vZGVfaGFzaF9zZXQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQW4g
YGFic2w6Om5vZGVfaGFzaF9zZXQ8VD5gIGlzIGFuIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250
YWluZXIgd2hpY2gKKy8vIGhhcyBiZWVuIG9wdGltaXplZCBmb3IgYm90aCBzcGVlZCBhbmQgbWVt
b3J5IGZvb3RwcmludCBpbiBtb3N0IGNvbW1vbiB1c2UKKy8vIGNhc2VzLiBJdHMgaW50ZXJmYWNl
IGlzIHNpbWlsYXIgdG8gdGhhdCBvZiBgc3RkOjp1bm9yZGVyZWRfc2V0PFQ+YCB3aXRoIHRoZQor
Ly8gZm9sbG93aW5nIG5vdGFibGUgZGlmZmVyZW5jZXM6CisvLworLy8gKiBTdXBwb3J0cyBoZXRl
cm9nZW5lb3VzIGxvb2t1cCwgdGhyb3VnaCBgZmluZCgpYCwgYG9wZXJhdG9yW10oKWAgYW5kCisv
LyAgIGBpbnNlcnQoKWAsIHByb3ZpZGVkIHRoYXQgdGhlIG1hcCBpcyBwcm92aWRlZCBhIGNvbXBh
dGlibGUgaGV0ZXJvZ2VuZW91cworLy8gICBoYXNoaW5nIGZ1bmN0aW9uIGFuZCBlcXVhbGl0eSBv
cGVyYXRvci4KKy8vICogQ29udGFpbnMgYSBgY2FwYWNpdHkoKWAgbWVtYmVyIGZ1bmN0aW9uIGlu
ZGljYXRpbmcgdGhlIG51bWJlciBvZiBlbGVtZW50CisvLyAgIHNsb3RzIChvcGVuLCBkZWxldGVk
LCBhbmQgZW1wdHkpIHdpdGhpbiB0aGUgaGFzaCBzZXQuCisvLyAqIFJldHVybnMgYHZvaWRgIGZy
b20gdGhlIGBlcmFzZShpdGVyYXRvcilgIG92ZXJsb2FkLgorLy8KKy8vIEJ5IGRlZmF1bHQsIGBu
b2RlX2hhc2hfc2V0YCB1c2VzIHRoZSBgYWJzbDo6SGFzaGAgaGFzaGluZyBmcmFtZXdvcmsuCisv
LyBBbGwgZnVuZGFtZW50YWwgYW5kIEFic2VpbCB0eXBlcyB0aGF0IHN1cHBvcnQgdGhlIGBhYnNs
OjpIYXNoYCBmcmFtZXdvcmsgaGF2ZQorLy8gYSBjb21wYXRpYmxlIGVxdWFsaXR5IG9wZXJhdG9y
IGZvciBjb21wYXJpbmcgaW5zZXJ0aW9ucyBpbnRvIGBub2RlX2hhc2hfc2V0YC4KKy8vIElmIHlv
dXIgdHlwZSBpcyBub3QgeWV0IHN1cHBvcnRlZCBieSB0aGUgYGFzYmw6Okhhc2hgIGZyYW1ld29y
aywgc2VlCisvLyBhYnNsL2hhc2gvaGFzaC5oIGZvciBpbmZvcm1hdGlvbiBvbiBleHRlbmRpbmcg
QWJzZWlsIGhhc2hpbmcgdG8gdXNlci1kZWZpbmVkCisvLyB0eXBlcy4KKy8vCisvLyBFeGFtcGxl
OgorLy8KKy8vICAgLy8gQ3JlYXRlIGEgbm9kZSBoYXNoIHNldCBvZiB0aHJlZSBzdHJpbmdzCisv
LyAgIGFic2w6Om5vZGVfaGFzaF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBkdWNrcyA9
CisvLyAgICAgeyJodWV5IiwgImRld2V5In0sICJsb3VpZSJ9OworLy8KKy8vICAvLyBJbnNlcnQg
YSBuZXcgZWxlbWVudCBpbnRvIHRoZSBub2RlIGhhc2ggbWFwCisvLyAgZHVja3MuaW5zZXJ0KCJk
b25hbGQifTsKKy8vCisvLyAgLy8gRm9yY2UgYSByZWhhc2ggb2YgdGhlIG5vZGUgaGFzaCBtYXAK
Ky8vICBkdWNrcy5yZWhhc2goMCk7CisvLworLy8gIC8vIFNlZSBpZiAiZGV3ZXkiIGlzIHByZXNl
bnQKKy8vICBpZiAoZHVja3MuY29udGFpbnMoImRld2V5IikpIHsKKy8vICAgIHN0ZDo6Y291dCA8
PCAiV2UgZm91bmQgZGV3ZXkhIiA8PCBzdGQ6OmVuZGw7CisvLyAgfQordGVtcGxhdGUgPGNsYXNz
IFQsIGNsYXNzIEhhc2ggPSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfZGVmYXVsdF9o
YXNoPFQ+LAorICAgICAgICAgIGNsYXNzIEVxID0gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpo
YXNoX2RlZmF1bHRfZXE8VD4sCisgICAgICAgICAgY2xhc3MgQWxsb2MgPSBzdGQ6OmFsbG9jYXRv
cjxUPj4KK2NsYXNzIG5vZGVfaGFzaF9zZXQKKyAgICA6IHB1YmxpYyBhYnNsOjpjb250YWluZXJf
aW50ZXJuYWw6OnJhd19oYXNoX3NldDwKKyAgICAgICAgICBhYnNsOjpjb250YWluZXJfaW50ZXJu
YWw6Ok5vZGVIYXNoU2V0UG9saWN5PFQ+LCBIYXNoLCBFcSwgQWxsb2M+IHsKKyAgdXNpbmcgQmFz
ZSA9IHR5cGVuYW1lIG5vZGVfaGFzaF9zZXQ6OnJhd19oYXNoX3NldDsKKworIHB1YmxpYzoKKyAg
bm9kZV9oYXNoX3NldCgpIHt9CisgIHVzaW5nIEJhc2U6OkJhc2U7CisKKyAgLy8gbm9kZV9oYXNo
X3NldDo6YmVnaW4oKQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGBub2RlX2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6YmVnaW47CisKKyAg
Ly8gbm9kZV9oYXNoX3NldDo6Y2JlZ2luKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNvbnN0IGl0
ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBub2RlX2hhc2hfc2V0YC4KKyAgdXNpbmcg
QmFzZTo6Y2JlZ2luOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmNlbmQoKQorICAvLworICAvLyBS
ZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0aGUgYG5vZGVfaGFzaF9zZXRg
LgorICB1c2luZyBCYXNlOjpjZW5kOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmVuZCgpCisgIC8v
CisgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0aGUgYG5vZGVfaGFzaF9z
ZXRgLgorICB1c2luZyBCYXNlOjplbmQ7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6Y2FwYWNpdHko
KQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudCBzbG90cyAoYXNzaWdu
ZWQsIGRlbGV0ZWQsIGFuZCBlbXB0eSkKKyAgLy8gYXZhaWxhYmxlIHdpdGhpbiB0aGUgYG5vZGVf
aGFzaF9zZXRgLgorICAvLworICAvLyBOT1RFOiB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBwYXJ0
aWN1bGFyIHRvIGBhYnNsOjpub2RlX2hhc2hfc2V0YCBhbmQgaXMKKyAgLy8gbm90IHByb3ZpZGVk
IGluIHRoZSBgc3RkOjp1bm9yZGVyZWRfbWFwYCBBUEkuCisgIHVzaW5nIEJhc2U6OmNhcGFjaXR5
OworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmVtcHR5KCkKKyAgLy8KKyAgLy8gUmV0dXJucyB3aGV0
aGVyIG9yIG5vdCB0aGUgYG5vZGVfaGFzaF9zZXRgIGlzIGVtcHR5LgorICB1c2luZyBCYXNlOjpl
bXB0eTsKKworICAvLyBub2RlX2hhc2hfc2V0OjptYXhfc2l6ZSgpCisgIC8vCisgIC8vIFJldHVy
bnMgdGhlIGxhcmdlc3QgdGhlb3JldGljYWwgcG9zc2libGUgbnVtYmVyIG9mIGVsZW1lbnRzIHdp
dGhpbiBhCisgIC8vIGBub2RlX2hhc2hfc2V0YCB1bmRlciBjdXJyZW50IG1lbW9yeSBjb25zdHJh
aW50cy4gVGhpcyB2YWx1ZSBjYW4gYmUgdGhvdWdodAorICAvLyBvZiB0aGUgbGFyZ2VzdCB2YWx1
ZSBvZiBgc3RkOjpkaXN0YW5jZShiZWdpbigpLCBlbmQoKSlgIGZvciBhCisgIC8vIGBub2RlX2hh
c2hfc2V0PFQ+YC4KKyAgdXNpbmcgQmFzZTo6bWF4X3NpemU7CisKKyAgLy8gbm9kZV9oYXNoX3Nl
dDo6c2l6ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjdXJy
ZW50bHkgd2l0aGluIHRoZSBgbm9kZV9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OnNpemU7CisK
KyAgLy8gbm9kZV9oYXNoX3NldDo6Y2xlYXIoKQorICAvLworICAvLyBSZW1vdmVzIGFsbCBlbGVt
ZW50cyBmcm9tIHRoZSBgbm9kZV9oYXNoX3NldGAuIEludmFsaWRhdGVzIGFueSByZWZlcmVuY2Vz
LAorICAvLyBwb2ludGVycywgb3IgaXRlcmF0b3JzIHJlZmVycmluZyB0byBjb250YWluZWQgZWxl
bWVudHMuCisgIC8vCisgIC8vIE5PVEU6IHRoaXMgb3BlcmF0aW9uIG1heSBzaHJpbmsgdGhlIHVu
ZGVybHlpbmcgYnVmZmVyLiBUbyBhdm9pZCBzaHJpbmtpbmcKKyAgLy8gdGhlIHVuZGVybHlpbmcg
YnVmZmVyIGNhbGwgYGVyYXNlKGJlZ2luKCksIGVuZCgpKWAuCisgIHVzaW5nIEJhc2U6OmNsZWFy
OworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmVyYXNlKCkKKyAgLy8KKyAgLy8gRXJhc2VzIGVsZW1l
bnRzIHdpdGhpbiB0aGUgYG5vZGVfaGFzaF9zZXRgLiBFcmFzaW5nIGRvZXMgbm90IHRyaWdnZXIg
YQorICAvLyByZWhhc2guIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyB2
b2lkIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIHBvcyk6CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBl
bGVtZW50IGF0IGBwb3NpdGlvbmAgb2YgdGhlIGBub2RlX2hhc2hfc2V0YCwgcmV0dXJuaW5nCisg
IC8vICAgYHZvaWRgLgorICAvLworICAvLyAgIE5PVEU6IHRoaXMgcmV0dXJuIGJlaGF2aW9yIGlz
IGRpZmZlcmVudCB0aGFuIHRoYXQgb2YgU1RMIGNvbnRhaW5lcnMgaW4KKyAgLy8gICBnZW5lcmFs
IGFuZCBgc3RkOjp1bm9yZGVyZWRfbWFwYCBpbiBwYXJ0aWN1bGFyLgorICAvLworICAvLyBpdGVy
YXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCk6Cisg
IC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50cyBpbiB0aGUgb3BlbiBpbnRlcnZhbCBbYGZp
cnN0YCwgYGxhc3RgKSwgcmV0dXJuaW5nIGFuCisgIC8vICAgaXRlcmF0b3IgcG9pbnRpbmcgdG8g
YGxhc3RgLgorICAvLworICAvLyBzaXplX3R5cGUgZXJhc2UoY29uc3Qga2V5X3R5cGUmIGtleSk6
CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50IHdpdGggdGhlIG1hdGNoaW5nIGtleSwg
aWYgaXQgZXhpc3RzLgorICB1c2luZyBCYXNlOjplcmFzZTsKKworICAvLyBub2RlX2hhc2hfc2V0
OjppbnNlcnQoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmll
ZCB2YWx1ZSBpbnRvIHRoZSBgbm9kZV9oYXNoX3NldGAsCisgIC8vIHJldHVybmluZyBhbiBpdGVy
YXRvciBwb2ludGluZyB0byB0aGUgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudCwgcHJvdmlkZWQgdGhh
dAorICAvLyBhbiBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleSBkb2VzIG5vdCBhbHJlYWR5IGV4
aXN0LiBJZiByZWhhc2hpbmcgb2NjdXJzCisgIC8vIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwg
aXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQKKyAgLy8gYmVs
b3cuCisgIC8vCisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQoY29uc3QgVCYg
dmFsdWUpOgorICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSBpbnRvIHRoZSBgbm9kZV9oYXNo
X3NldGAuIFJldHVybnMgYSBwYWlyIGNvbnNpc3Rpbmcgb2YgYW4KKyAgLy8gICBpdGVyYXRvciB0
byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3IgdG8gdGhlIGVsZW1lbnQgdGhhdCBwcmV2ZW50ZWQg
dGhlCisgIC8vICAgaW5zZXJ0aW9uKSBhbmQgYSBib29sIGRlbm90aW5nIHdoZXRoZXIgdGhlIGlu
c2VydGlvbiB0b29rIHBsYWNlLgorICAvLworICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4g
aW5zZXJ0KFQmJiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBhIG1vdmVhYmxlIHZhbHVl
IGludG8gdGhlIGBub2RlX2hhc2hfc2V0YC4gUmV0dXJucyBhIHBhaXIKKyAgLy8gICBjb25zaXN0
aW5nIG9mIGFuIGl0ZXJhdG9yIHRvIHRoZSBpbnNlcnRlZCBlbGVtZW50IChvciB0byB0aGUgZWxl
bWVudCB0aGF0CisgIC8vICAgcHJldmVudGVkIHRoZSBpbnNlcnRpb24pIGFuZCBhIGJvb2wgZGVu
b3Rpbmcgd2hldGhlciB0aGUgaW5zZXJ0aW9uIHRvb2sKKyAgLy8gICBwbGFjZS4KKyAgLy8KKyAg
Ly8gaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIGNvbnN0IFQmIHZhbHVlKToK
KyAgLy8gaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIFQmJiB2YWx1ZSk6Cisg
IC8vCisgIC8vICAgSW5zZXJ0cyBhIHZhbHVlLCB1c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRg
IGFzIGEgbm9uLWJpbmRpbmcgc3VnZ2VzdGlvbgorICAvLyAgIGZvciB3aGVyZSB0byBiZWdpbiB0
aGUgaW5zZXJ0aW9uIHNlYXJjaC4gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUKKyAgLy8gICBp
bnNlcnRlZCBlbGVtZW50LCBvciB0byB0aGUgZXhpc3RpbmcgZWxlbWVudCB0aGF0IHByZXZlbnRl
ZCB0aGUKKyAgLy8gICBpbnNlcnRpb24uCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0KElucHV0SXRl
cmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCk6CisgIC8vCisgIC8vICAgSW5zZXJ0cyBh
IHJhbmdlIG9mIHZhbHVlcyBbYGZpcnN0YCwgYGxhc3RgKS4KKyAgLy8KKyAgLy8gICBOT1RFOiBB
bHRob3VnaCB0aGUgU1RMIGRvZXMgbm90IHNwZWNpZnkgd2hpY2ggZWxlbWVudCBtYXkgYmUgaW5z
ZXJ0ZWQgaWYKKyAgLy8gICBtdWx0aXBsZSBrZXlzIGNvbXBhcmUgZXF1aXZhbGVudGx5LCBmb3Ig
YG5vZGVfaGFzaF9zZXRgIHdlIGd1YXJhbnRlZSB0aGUKKyAgLy8gICBmaXJzdCBtYXRjaCBpcyBp
bnNlcnRlZC4KKyAgLy8KKyAgLy8gdm9pZCBpbnNlcnQoc3RkOjppbml0aWFsaXplcl9saXN0PFQ+
IGlsaXN0KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIHRoZSBlbGVtZW50cyB3aXRoaW4gdGhlIGlu
aXRpYWxpemVyIGxpc3QgYGlsaXN0YC4KKyAgLy8KKyAgLy8gICBOT1RFOiBBbHRob3VnaCB0aGUg
U1RMIGRvZXMgbm90IHNwZWNpZnkgd2hpY2ggZWxlbWVudCBtYXkgYmUgaW5zZXJ0ZWQgaWYKKyAg
Ly8gICBtdWx0aXBsZSBrZXlzIGNvbXBhcmUgZXF1aXZhbGVudGx5IHdpdGhpbiB0aGUgaW5pdGlh
bGl6ZXIgbGlzdCwgZm9yCisgIC8vICAgYG5vZGVfaGFzaF9zZXRgIHdlIGd1YXJhbnRlZSB0aGUg
Zmlyc3QgbWF0Y2ggaXMgaW5zZXJ0ZWQuCisgIHVzaW5nIEJhc2U6Omluc2VydDsKKworICAvLyBu
b2RlX2hhc2hfc2V0OjplbXBsYWNlKCkKKyAgLy8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9m
IHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29uc3RydWN0aW5nIGl0IGluLXBsYWNlCisgIC8vIHdp
dGhpbiB0aGUgYG5vZGVfaGFzaF9zZXRgLCBwcm92aWRlZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0
aGUgZ2l2ZW4ga2V5CisgIC8vIGFscmVhZHkgZXhpc3RzLgorICAvLworICAvLyBUaGUgZWxlbWVu
dCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQg
d2l0aCB0aGUKKyAgLy8ga2V5IGluIHRoZSBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5l
d2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQorICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRl
bHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlvdXIga2V5IGlzIG5vdAorICAvLyBj
b3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8KKyAgLy8gSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUg
dG8gdGhlIGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIHVzaW5n
IEJhc2U6OmVtcGxhY2U7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6ZW1wbGFjZV9oaW50KCkKKyAg
Ly8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgYnkgY29u
c3RydWN0aW5nIGl0IGluLXBsYWNlCisgIC8vIHdpdGhpbiB0aGUgYG5vZGVfaGFzaF9zZXRgLCB1
c2luZyB0aGUgcG9zaXRpb24gb2YgYGhpbnRgIGFzIGEgbm9uLWJpbmRpbmcKKyAgLy8gc3VnZ2Vz
dGlvbiBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2gsIGFuZCBvbmx5IGlu
c2VydHMKKyAgLy8gcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleSBh
bHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8gVGhlIGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVjdGVk
IGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBlbGVtZW50IHdpdGggdGhlCisgIC8vIGtleSBp
biB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBlbGVt
ZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9lbXBs
YWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBub3QKKyAgLy8gY29weWFibGUgb3IgbW92ZWFibGUu
CisgIC8vCisgIC8vIElmIHJlaGFzaGluZyBvY2N1cnMgZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFs
bCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjplbXBsYWNlX2hpbnQ7
CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6ZXh0cmFjdCgpCisgIC8vCisgIC8vIEV4dHJhY3RzIHRo
ZSBpbmRpY2F0ZWQgZWxlbWVudCwgZXJhc2luZyBpdCBpbiB0aGUgcHJvY2VzcywgYW5kIHJldHVy
bnMgaXQKKyAgLy8gYXMgYSBDKysxNy1jb21wYXRpYmxlIG5vZGUgaGFuZGxlLiBPdmVybG9hZHMg
YXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3QoY29uc3RfaXRl
cmF0b3IgcG9zaXRpb24pOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBlbGVtZW50IGF0IHRo
ZSBpbmRpY2F0ZWQgcG9zaXRpb24gYW5kIHJldHVybnMgYSBub2RlIGhhbmRsZQorICAvLyAgIG93
bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLgorICAvLworICAvLyBub2RlX3R5cGUgZXh0cmFjdChj
b25zdCBrZXlfdHlwZSYgeCk6CisgIC8vCisgIC8vICAgRXh0cmFjdHMgdGhlIGVsZW1lbnQgd2l0
aCB0aGUga2V5IG1hdGNoaW5nIHRoZSBwYXNzZWQga2V5IHZhbHVlIGFuZAorICAvLyAgIHJldHVy
bnMgYSBub2RlIGhhbmRsZSBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4gSWYgdGhlIGBub2Rl
X2hhc2hfc2V0YAorICAvLyAgIGRvZXMgbm90IGNvbnRhaW4gYW4gZWxlbWVudCB3aXRoIGEgbWF0
Y2hpbmcga2V5LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4KKyAgLy8gZW1wdHkgbm9kZSBoYW5k
bGUuCisgIHVzaW5nIEJhc2U6OmV4dHJhY3Q7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6bWVyZ2Uo
KQorICAvLworICAvLyBFeHRyYWN0cyBlbGVtZW50cyBmcm9tIGEgZ2l2ZW4gYHNvdXJjZWAgZmxh
dCBoYXNoIG1hcCBpbnRvIHRoaXMKKyAgLy8gYG5vZGVfaGFzaF9zZXRgLiBJZiB0aGUgZGVzdGlu
YXRpb24gYG5vZGVfaGFzaF9zZXRgIGFscmVhZHkgY29udGFpbnMgYW4KKyAgLy8gZWxlbWVudCB3
aXRoIGFuIGVxdWl2YWxlbnQga2V5LCB0aGF0IGVsZW1lbnQgaXMgbm90IGV4dHJhY3RlZC4KKyAg
dXNpbmcgQmFzZTo6bWVyZ2U7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6c3dhcChub2RlX2hhc2hf
c2V0JiBvdGhlcikKKyAgLy8KKyAgLy8gRXhjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiB0aGlzIGBu
b2RlX2hhc2hfc2V0YCB3aXRoIHRob3NlIG9mIHRoZSBgb3RoZXJgCisgIC8vIGZsYXQgaGFzaCBt
YXAsIGF2b2lkaW5nIGludm9jYXRpb24gb2YgYW55IG1vdmUsIGNvcHksIG9yIHN3YXAgb3BlcmF0
aW9ucyBvbgorICAvLyBpbmRpdmlkdWFsIGVsZW1lbnRzLgorICAvLworICAvLyBBbGwgaXRlcmF0
b3JzIGFuZCByZWZlcmVuY2VzIG9uIHRoZSBgbm9kZV9oYXNoX3NldGAgcmVtYWluIHZhbGlkLCBl
eGNlcHRpbmcKKyAgLy8gZm9yIHRoZSBwYXN0LXRoZS1lbmQgaXRlcmF0b3IsIHdoaWNoIGlzIGlu
dmFsaWRhdGVkLgorICAvLworICAvLyBgc3dhcCgpYCByZXF1aXJlcyB0aGF0IHRoZSBmbGF0IGhh
c2ggc2V0J3MgaGFzaGluZyBhbmQga2V5IGVxdWl2YWxlbmNlCisgIC8vIGZ1bmN0aW9ucyBiZSBT
d2FwcGFibGUsIGFuZCBhcmUgZXhjaGFnZWQgdXNpbmcgdW5xdWFsaWZpZWQgY2FsbHMgdG8KKyAg
Ly8gbm9uLW1lbWJlciBgc3dhcCgpYC4gSWYgdGhlIG1hcCdzIGFsbG9jYXRvciBoYXMKKyAgLy8g
YHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT46OnByb3BhZ2F0ZV9vbl9jb250
YWluZXJfc3dhcDo6dmFsdWVgCisgIC8vIHNldCB0byBgdHJ1ZWAsIHRoZSBhbGxvY2F0b3JzIGFy
ZSBhbHNvIGV4Y2hhbmdlZCB1c2luZyBhbiB1bnF1YWxpZmllZCBjYWxsCisgIC8vIHRvIG5vbi1t
ZW1iZXIgYHN3YXAoKWA7IG90aGVyd2lzZSwgdGhlIGFsbG9jYXRvcnMgYXJlIG5vdCBzd2FwcGVk
LgorICB1c2luZyBCYXNlOjpzd2FwOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OnJlaGFzaChjb3Vu
dCkKKyAgLy8KKyAgLy8gUmVoYXNoZXMgdGhlIGBub2RlX2hhc2hfc2V0YCwgc2V0dGluZyB0aGUg
bnVtYmVyIG9mIHNsb3RzIHRvIGJlIGF0IGxlYXN0CisgIC8vIHRoZSBwYXNzZWQgdmFsdWUuIElm
IHRoZSBuZXcgbnVtYmVyIG9mIHNsb3RzIGluY3JlYXNlcyB0aGUgbG9hZCBmYWN0b3IgbW9yZQor
ICAvLyB0aGFuIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBmYWN0b3IKKyAgLy8gKGBjb3VudGAg
PCBgc2l6ZSgpYCAvIGBtYXhfbG9hZF9mYWN0b3IoKWApLCB0aGVuIHRoZSBuZXcgbnVtYmVyIG9m
IHNsb3RzCisgIC8vIHdpbGwgYmUgYXQgbGVhc3QgYHNpemUoKWAgLyBgbWF4X2xvYWRfZmFjdG9y
KClgLgorICAvLworICAvLyBUbyBmb3JjZSBhIHJlaGFzaCwgcGFzcyByZWhhc2goMCkuCisgIC8v
CisgIC8vIE5PVEU6IHVubGlrZSBiZWhhdmlvciBpbiBgc3RkOjp1bm9yZGVyZWRfc2V0YCwgcmVm
ZXJlbmNlcyBhcmUgYWxzbworICAvLyBpbnZhbGlkYXRlZCB1cG9uIGEgYHJlaGFzaCgpYC4KKyAg
dXNpbmcgQmFzZTo6cmVoYXNoOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OnJlc2VydmUoY291bnQp
CisgIC8vCisgIC8vIFNldHMgdGhlIG51bWJlciBvZiBzbG90cyBpbiB0aGUgYG5vZGVfaGFzaF9z
ZXRgIHRvIHRoZSBudW1iZXIgbmVlZGVkIHRvCisgIC8vIGFjY29tbW9kYXRlIGF0IGxlYXN0IGBj
b3VudGAgdG90YWwgZWxlbWVudHMgd2l0aG91dCBleGNlZWRpbmcgdGhlIGN1cnJlbnQKKyAgLy8g
bWF4aW11bSBsb2FkIGZhY3RvciwgYW5kIG1heSByZWhhc2ggdGhlIGNvbnRhaW5lciBpZiBuZWVk
ZWQuCisgIHVzaW5nIEJhc2U6OnJlc2VydmU7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6Y29udGFp
bnMoKQorICAvLworICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZWxlbWVudCBjb21wYXJpbmcg
ZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgIGV4aXN0cworICAvLyB3aXRoaW4gdGhlIGBub2RlX2hh
c2hfc2V0YCwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzbyBvciBgZmFsc2VgIG90aGVyd2lzZS4KKyAg
dXNpbmcgQmFzZTo6Y29udGFpbnM7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6Y291bnQoY29uc3Qg
S2V5JiBrZXkpIGNvbnN0CisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50
cyBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuIGBrZXlgIHdpdGhpbgorICAvLyB0aGUgYG5v
ZGVfaGFzaF9zZXRgLiBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBlaXRoZXIg
YDFgIG9yIGAwYAorICAvLyBzaW5jZSBkdXBsaWNhdGUgZWxlbWVudHMgYXJlIG5vdCBhbGxvd2Vk
IHdpdGhpbiBhIGBub2RlX2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Y291bnQ7CisKKyAgLy8g
bm9kZV9oYXNoX3NldDo6ZXF1YWxfcmFuZ2UoKQorICAvLworICAvLyBSZXR1cm5zIGEgY2xvc2Vk
IHJhbmdlIFtmaXJzdCwgbGFzdF0sIGRlZmluZWQgYnkgYSBgc3RkOjpwYWlyYCBvZiB0d28KKyAg
Ly8gaXRlcmF0b3JzLCBjb250YWluaW5nIGFsbCBlbGVtZW50cyB3aXRoIHRoZSBwYXNzZWQga2V5
IGluIHRoZQorICAvLyBgbm9kZV9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmVxdWFsX3Jhbmdl
OworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmZpbmQoKQorICAvLworICAvLyBGaW5kcyBhbiBlbGVt
ZW50IHdpdGggdGhlIHBhc3NlZCBga2V5YCB3aXRoaW4gdGhlIGBub2RlX2hhc2hfc2V0YC4KKyAg
dXNpbmcgQmFzZTo6ZmluZDsKKworICAvLyBub2RlX2hhc2hfc2V0OjpidWNrZXRfY291bnQoKQor
ICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgImJ1Y2tldHMiIHdpdGhpbiB0aGUgYG5v
ZGVfaGFzaF9zZXRgLiBOb3RlIHRoYXQKKyAgLy8gYmVjYXVzZSBhIGZsYXQgaGFzaCBtYXAgY29u
dGFpbnMgYWxsIGVsZW1lbnRzIHdpdGhpbiBpdHMgaW50ZXJuYWwgc3RvcmFnZSwKKyAgLy8gdGhp
cyB2YWx1ZSBzaW1wbHkgZXF1YWxzIHRoZSBjdXJyZW50IGNhcGFjaXR5IG9mIHRoZSBgbm9kZV9o
YXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmJ1Y2tldF9jb3VudDsKKworICAvLyBub2RlX2hhc2hf
c2V0Ojpsb2FkX2ZhY3RvcigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgbG9hZCBm
YWN0b3Igb2YgdGhlIGBub2RlX2hhc2hfc2V0YCAodGhlIGF2ZXJhZ2UgbnVtYmVyCisgIC8vIG9m
IHNsb3RzIG9jY3VwaWVkIHdpdGggYSB2YWx1ZSB3aXRoaW4gdGhlIGhhc2ggbWFwKS4KKyAgdXNp
bmcgQmFzZTo6bG9hZF9mYWN0b3I7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6bWF4X2xvYWRfZmFj
dG9yKCkKKyAgLy8KKyAgLy8gTWFuYWdlcyB0aGUgbWF4aW11bSBsb2FkIGZhY3RvciBvZiB0aGUg
YG5vZGVfaGFzaF9zZXRgLiBPdmVybG9hZHMgYXJlCisgIC8vIGxpc3RlZCBiZWxvdy4KKyAgLy8K
KyAgLy8gZmxvYXQgbm9kZV9oYXNoX3NldDo6bWF4X2xvYWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8g
ICBSZXR1cm5zIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBmYWN0b3Igb2YgdGhlIGBub2RlX2hh
c2hfc2V0YC4KKyAgLy8KKyAgLy8gdm9pZCBub2RlX2hhc2hfc2V0OjptYXhfbG9hZF9mYWN0b3Io
ZmxvYXQgbWwpCisgIC8vCisgIC8vICAgU2V0cyB0aGUgbWF4aW11bSBsb2FkIGZhY3RvciBvZiB0
aGUgYG5vZGVfaGFzaF9zZXRgIHRvIHRoZSBwYXNzZWQgdmFsdWUuCisgIC8vCisgIC8vICAgTk9U
RTogVGhpcyBvdmVybG9hZCBpcyBwcm92aWRlZCBvbmx5IGZvciBBUEkgY29tcGF0aWJpbGl0eSB3
aXRoIHRoZSBTVEw7CisgIC8vICAgYG5vZGVfaGFzaF9zZXRgIHdpbGwgaWdub3JlIGFueSBzZXQg
bG9hZCBmYWN0b3IgYW5kIG1hbmFnZSBpdHMgcmVoYXNoaW5nCisgIC8vICAgaW50ZXJuYWxseSBh
cyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgIHVzaW5nIEJhc2U6Om1heF9sb2FkX2ZhY3Rv
cjsKKworICAvLyBub2RlX2hhc2hfc2V0OjpnZXRfYWxsb2NhdG9yKCkKKyAgLy8KKyAgLy8gUmV0
dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBub2RlX2hh
c2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6Z2V0X2FsbG9jYXRvcjsKKworICAvLyBub2RlX2hhc2hf
c2V0OjpoYXNoX2Z1bmN0aW9uKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgaGFzaGluZyBmdW5j
dGlvbiB1c2VkIHRvIGhhc2ggdGhlIGtleXMgd2l0aGluIHRoaXMKKyAgLy8gYG5vZGVfaGFzaF9z
ZXRgLgorICB1c2luZyBCYXNlOjpoYXNoX2Z1bmN0aW9uOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6
OmtleV9lcSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGZ1bmN0aW9uIHVzZWQgZm9yIGNvbXBh
cmluZyBrZXlzIGVxdWFsaXR5LgorICB1c2luZyBCYXNlOjprZXlfZXE7CisKKyAgQUJTTF9ERVBS
RUNBVEVEKCJDYWxsIGBoYXNoX2Z1bmN0aW9uKClgIGluc3RlYWQuIikKKyAgdHlwZW5hbWUgQmFz
ZTo6aGFzaGVyIGhhc2hfZnVuY3QoKSB7IHJldHVybiB0aGlzLT5oYXNoX2Z1bmN0aW9uKCk7IH0K
KworICBBQlNMX0RFUFJFQ0FURUQoIkNhbGwgYHJlaGFzaCgpYCBpbnN0ZWFkLiIpCisgIHZvaWQg
cmVzaXplKHR5cGVuYW1lIEJhc2U6OnNpemVfdHlwZSBoaW50KSB7IHRoaXMtPnJlaGFzaChoaW50
KTsgfQorfTsKKworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxj
bGFzcyBUPgorc3RydWN0IE5vZGVIYXNoU2V0UG9saWN5CisgICAgOiBhYnNsOjpjb250YWluZXJf
aW50ZXJuYWw6Om5vZGVfaGFzaF9wb2xpY3k8VCYsIE5vZGVIYXNoU2V0UG9saWN5PFQ+PiB7Cisg
IHVzaW5nIGtleV90eXBlID0gVDsKKyAgdXNpbmcgaW5pdF90eXBlID0gVDsKKyAgdXNpbmcgY29u
c3RhbnRfaXRlcmF0b3JzID0gc3RkOjp0cnVlX3R5cGU7CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFs
bG9jYXRvciwgY2xhc3MuLi4gQXJncz4KKyAgc3RhdGljIFQqIG5ld19lbGVtZW50KEFsbG9jYXRv
ciogYWxsb2MsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgdXNpbmcgVmFsdWVBbGxvYyA9CisgICAg
ICAgIHR5cGVuYW1lIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6dGVtcGxhdGUg
cmViaW5kX2FsbG9jPFQ+OworICAgIFZhbHVlQWxsb2MgdmFsdWVfYWxsb2MoKmFsbG9jKTsKKyAg
ICBUKiByZXMgPSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPFZhbHVlQWxsb2M+OjphbGxvY2F0ZSh2
YWx1ZV9hbGxvYywgMSk7CisgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxWYWx1ZUFsbG9jPjo6
Y29uc3RydWN0KHZhbHVlX2FsbG9jLCByZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAg
cmV0dXJuIHJlczsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0YXRp
YyB2b2lkIGRlbGV0ZV9lbGVtZW50KEFsbG9jYXRvciogYWxsb2MsIFQqIGVsZW0pIHsKKyAgICB1
c2luZyBWYWx1ZUFsbG9jID0KKyAgICAgICAgdHlwZW5hbWUgYWJzbDo6YWxsb2NhdG9yX3RyYWl0
czxBbGxvY2F0b3I+Ojp0ZW1wbGF0ZSByZWJpbmRfYWxsb2M8VD47CisgICAgVmFsdWVBbGxvYyB2
YWx1ZV9hbGxvYygqYWxsb2MpOworICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8VmFsdWVBbGxv
Yz46OmRlc3Ryb3kodmFsdWVfYWxsb2MsIGVsZW0pOworICAgIGFic2w6OmFsbG9jYXRvcl90cmFp
dHM8VmFsdWVBbGxvYz46OmRlYWxsb2NhdGUodmFsdWVfYWxsb2MsIGVsZW0sIDEpOworICB9CisK
KyAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRpYyBkZWNsdHlwZShh
YnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkRlY29tcG9zZVZhbHVlKAorICAgICAgc3RkOjpkZWNs
dmFsPEY+KCksIHN0ZDo6ZGVjbHZhbDxBcmdzPigpLi4uKSkKKyAgYXBwbHkoRiYmIGYsIEFyZ3Mm
Ji4uLiBhcmdzKSB7CisgICAgcmV0dXJuIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6RGVjb21w
b3NlVmFsdWUoCisgICAgICAgIHN0ZDo6Zm9yd2FyZDxGPihmKSwgc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKKyAgfQorCisgIHN0YXRpYyBzaXplX3QgZWxlbWVudF9zcGFjZV91c2VkKGNv
bnN0IFQqKSB7IHJldHVybiBzaXplb2YoVCk7IH0KK307Cit9ICAvLyBuYW1lc3BhY2UgY29udGFp
bmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNMX0NPTlRB
SU5FUl9OT0RFX0hBU0hfU0VUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9o
YXNoX3NldF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXRfdGVzdC5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZTQ5OGYwZjc3OWI0ZDZlNzY0ZWNhZmNhNjJiMWNiMDhjY2ZkNWFlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXRfdGVzdC5jYwpAQCAt
MCwwICsxLDEwMyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwor
I2luY2x1ZGUgImFic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXQuaCIKKworI2luY2x1ZGUgImFi
c2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdC5oIgor
I2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rl
c3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X21v
ZGlmaWVyc190ZXN0LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJf
aW50ZXJuYWwgeworbmFtZXNwYWNlIHsKK3VzaW5nIDo6YWJzbDo6Y29udGFpbmVyX2ludGVybmFs
OjpoYXNoX2ludGVybmFsOjpFbnVtOwordXNpbmcgOjphYnNsOjpjb250YWluZXJfaW50ZXJuYWw6
Omhhc2hfaW50ZXJuYWw6OkVudW1DbGFzczsKK3VzaW5nIDo6dGVzdGluZzo6UG9pbnRlZTsKK3Vz
aW5nIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmU7CisKK3VzaW5nIFNldFR5cGVzID0g
Ojp0ZXN0aW5nOjpUeXBlczwKKyAgICBub2RlX2hhc2hfc2V0PGludCwgU3RhdGVmdWxUZXN0aW5n
SGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFsbG9jPGludD4+LAorICAgIG5vZGVfaGFzaF9z
ZXQ8c3RkOjpzdHJpbmcsIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRlZnVsVGVzdGluZ0VxdWFs
LAorICAgICAgICAgICAgICAgICAgQWxsb2M8aW50Pj4sCisgICAgbm9kZV9oYXNoX3NldDxFbnVt
LCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwgQWxsb2M8RW51bT4+
LAorICAgIG5vZGVfaGFzaF9zZXQ8RW51bUNsYXNzLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLCBTdGF0
ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAgICAgIEFsbG9jPEVudW1DbGFzcz4+PjsK
KworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTm9kZUhhc2hTZXQsIENvbnN0cnVjdG9y
VGVzdCwgU2V0VHlwZXMpOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTm9kZUhhc2hT
ZXQsIExvb2t1cFRlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KE5vZGVIYXNoU2V0LCBNb2RpZmllcnNUZXN0LCBTZXRUeXBlcyk7CisKK1RFU1QoTm9kZUhhc2hT
ZXQsIE1vdmVhYmxlTm90Q29weWFibGVDb21waWxlcykgeworICBub2RlX2hhc2hfc2V0PHN0ZDo6
dW5pcXVlX3B0cjx2b2lkKj4+IHQ7CisgIG5vZGVfaGFzaF9zZXQ8c3RkOjp1bmlxdWVfcHRyPHZv
aWQqPj4gdTsKKyAgdSA9IHN0ZDo6bW92ZSh0KTsKK30KKworVEVTVChOb2RlSGFzaFNldCwgTWVy
Z2VFeHRyYWN0SW5zZXJ0KSB7CisgIHN0cnVjdCBIYXNoIHsKKyAgICBzaXplX3Qgb3BlcmF0b3Io
KShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8aW50PiYgcCkgY29uc3QgeyByZXR1cm4gKnA7IH0KKyAg
fTsKKyAgc3RydWN0IEVxIHsKKyAgICBib29sIG9wZXJhdG9yKCkoY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPGludD4mIGEsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxp
bnQ+JiBiKSBjb25zdCB7CisgICAgICByZXR1cm4gKmEgPT0gKmI7CisgICAgfQorICB9OworICBh
YnNsOjpub2RlX2hhc2hfc2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBIYXNoLCBFcT4gc2V0MSwg
c2V0MjsKKyAgc2V0MS5pbnNlcnQoYWJzbDo6bWFrZV91bmlxdWU8aW50Pig3KSk7CisgIHNldDEu
aW5zZXJ0KGFic2w6Om1ha2VfdW5pcXVlPGludD4oMTcpKTsKKworICBzZXQyLmluc2VydChhYnNs
OjptYWtlX3VuaXF1ZTxpbnQ+KDcpKTsKKyAgc2V0Mi5pbnNlcnQoYWJzbDo6bWFrZV91bmlxdWU8
aW50PigxOSkpOworCisgIEVYUEVDVF9USEFUKHNldDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBv
aW50ZWUoNyksIFBvaW50ZWUoMTcpKSk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVs
ZW1lbnRzQXJlKFBvaW50ZWUoNyksIFBvaW50ZWUoMTkpKSk7CisKKyAgc2V0MS5tZXJnZShzZXQy
KTsKKworICBFWFBFQ1RfVEhBVChzZXQxLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQb2ludGVlKDcp
LCBQb2ludGVlKDE3KSwgUG9pbnRlZSgxOSkpKTsKKyAgRVhQRUNUX1RIQVQoc2V0MiwgVW5vcmRl
cmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSkpOworCisgIGF1dG8gbm9kZSA9IHNldDEuZXh0cmFj
dChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDcpKTsKKyAgRVhQRUNUX1RSVUUobm9kZSk7CisgIEVY
UEVDVF9USEFUKG5vZGUudmFsdWUoKSwgUG9pbnRlZSg3KSk7CisgIEVYUEVDVF9USEFUKHNldDEs
IFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoMTcpLCBQb2ludGVlKDE5KSkpOworCisgIGF1
dG8gaW5zZXJ0X3Jlc3VsdCA9IHNldDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7CisgIEVYUEVD
VF9GQUxTRShub2RlKTsKKyAgRVhQRUNUX0ZBTFNFKGluc2VydF9yZXN1bHQuaW5zZXJ0ZWQpOwor
ICBFWFBFQ1RfVFJVRShpbnNlcnRfcmVzdWx0Lm5vZGUpOworICBFWFBFQ1RfVEhBVChpbnNlcnRf
cmVzdWx0Lm5vZGUudmFsdWUoKSwgUG9pbnRlZSg3KSk7CisgIEVYUEVDVF9FUSgqKmluc2VydF9y
ZXN1bHQucG9zaXRpb24sIDcpOworICBFWFBFQ1RfTkUoaW5zZXJ0X3Jlc3VsdC5wb3NpdGlvbi0+
Z2V0KCksIGluc2VydF9yZXN1bHQubm9kZS52YWx1ZSgpLmdldCgpKTsKKyAgRVhQRUNUX1RIQVQo
c2V0MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSkpOworCisgIG5vZGUgPSBzZXQx
LmV4dHJhY3QoYWJzbDo6bWFrZV91bmlxdWU8aW50PigxNykpOworICBFWFBFQ1RfVFJVRShub2Rl
KTsKKyAgRVhQRUNUX1RIQVQobm9kZS52YWx1ZSgpLCBQb2ludGVlKDE3KSk7CisgIEVYUEVDVF9U
SEFUKHNldDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoMTkpKSk7CisKKyAgbm9kZS52
YWx1ZSgpID0gYWJzbDo6bWFrZV91bmlxdWU8aW50PigyMyk7CisKKyAgaW5zZXJ0X3Jlc3VsdCA9
IHNldDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7CisgIEVYUEVDVF9GQUxTRShub2RlKTsKKyAg
RVhQRUNUX1RSVUUoaW5zZXJ0X3Jlc3VsdC5pbnNlcnRlZCk7CisgIEVYUEVDVF9GQUxTRShpbnNl
cnRfcmVzdWx0Lm5vZGUpOworICBFWFBFQ1RfRVEoKippbnNlcnRfcmVzdWx0LnBvc2l0aW9uLCAy
Myk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoNyks
IFBvaW50ZWUoMjMpKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNv
bnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvcHRzLmJ6bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzLmJ6bAppbmRleCAwMTY4YWM1YWJkZGMzOWZmN2M0Nzgx
ZmY1ZTNlMmU5YmUwYTIwNTdlLi41YzUwOGYxN2RmOTc0NzYxOGNhNTJjNWU0YjkzM2Y4MThlZTli
OWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy5iemwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29wdHMuYnpsCkBA
IC0zNSw3ICszNSw2IEBAIEdDQ19URVNUX0ZMQUdTID0gWwogIyBEb2NzIG9uIGdyb3VwcyBvZiBm
bGFncyBpcyBwcmVjZWRlZCBieSAjIyMuCiAKIExMVk1fRkxBR1MgPSBbCi0gICAgIyBBbGwgd2Fy
bmluZ3MgYXJlIHRyZWF0ZWQgYXMgZXJyb3JzIGJ5IGltcGxpY2l0IC1XZXJyb3IgZmxhZwogICAg
ICItV2FsbCIsCiAgICAgIi1XZXh0cmEiLAogICAgICItV2V2ZXJ5dGhpbmciLApAQCAtNTQsNiAr
NTMsMTAgQEAgTExWTV9GTEFHUyA9IFsKICAgICAiLVduby1wYWNrZWQiLAogICAgICItV25vLXBh
ZGRlZCIsCiAgICAgIyMjCisgICAgIyBHb29nbGUgc3R5bGUgZG9lcyBub3QgdXNlIHVuc2lnbmVk
IGludGVnZXJzLCB0aG91Z2ggU1RMIGNvbnRhaW5lcnMKKyAgICAjIGhhdmUgdW5zaWduZWQgdHlw
ZXMuCisgICAgIi1Xbm8tc2lnbi1jb21wYXJlIiwKKyAgICAjIyMKICAgICAiLVduby1mbG9hdC1j
b252ZXJzaW9uIiwKICAgICAiLVduby1mbG9hdC1lcXVhbCIsCiAgICAgIi1Xbm8tZm9ybWF0LW5v
bmxpdGVyYWwiLApAQCAtMTAxLDYgKzEwNCw3IEBAIExMVk1fVEVTVF9GTEFHUyA9IFsKICAgICAi
LVduby1jOTktZXh0ZW5zaW9ucyIsCiAgICAgIi1Xbm8tbWlzc2luZy1ub3JldHVybiIsCiAgICAg
Ii1Xbm8tbWlzc2luZy1wcm90b3R5cGVzIiwKKyAgICAiLVduby1taXNzaW5nLXZhcmlhYmxlLWRl
Y2xhcmF0aW9ucyIsCiAgICAgIi1Xbm8tbnVsbC1jb252ZXJzaW9uIiwKICAgICAiLVduby1zaGFk
b3ciLAogICAgICItV25vLXNoaWZ0LXNpZ24tb3ZlcmZsb3ciLApAQCAtMTEyLDEzICsxMTYsMTUg
QEAgTExWTV9URVNUX0ZMQUdTID0gWwogICAgICItV25vLXVudXNlZC10ZW1wbGF0ZSIsCiAgICAg
Ii1Xbm8tdXNlZC1idXQtbWFya2VkLXVudXNlZCIsCiAgICAgIi1Xbm8temVyby1hcy1udWxsLXBv
aW50ZXItY29uc3RhbnQiLAorICAgICMgZ3Rlc3QgZGVwZW5kcyBvbiB0aGlzIEdOVSBleHRlbnNp
b24gYmVpbmcgb2ZmZXJlZC4KKyAgICAiLVduby1nbnUtemVyby12YXJpYWRpYy1tYWNyby1hcmd1
bWVudHMiLAogXQogCiBNU1ZDX0ZMQUdTID0gWwogICAgICIvVzMiLAotICAgICIvV1giLAogICAg
ICIvd2Q0MDA1IiwgICMgbWFjcm8tcmVkZWZpbml0aW9uCiAgICAgIi93ZDQwNjgiLCAgIyB1bmtu
b3duIHByYWdtYQorICAgICIvd2Q0MTgwIiwgICMgcXVhbGlmaWVyIGFwcGxpZWQgdG8gZnVuY3Rp
b24gdHlwZSBoYXMgbm8gbWVhbmluZzsgaWdub3JlZAogICAgICIvd2Q0MjQ0IiwgICMgY29udmVy
c2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9zc2libGUgbG9zcyBvZiBkYXRhCiAgICAg
Ii93ZDQyNjciLCAgIyBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUnLCBwb3NzaWJs
ZSBsb3NzIG9mIGRhdGEKICAgICAiL3dkNDgwMCIsICAjIGZvcmNpbmcgdmFsdWUgdG8gYm9vbCAn
dHJ1ZScgb3IgJ2ZhbHNlJyAocGVyZm9ybWFuY2Ugd2FybmluZykKQEAgLTE1MiwzICsxNTgsNyBA
QCBBQlNMX0VYQ0VQVElPTlNfRkxBRyA9IHNlbGVjdCh7CiAgICAgIi8vYWJzbDp3aW5kb3dzIjog
WyIvVV9IQVNfRVhDRVBUSU9OUyIsICIvRF9IQVNfRVhDRVBUSU9OUz0xIiwgIi9FSHNjIl0sCiAg
ICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItZmV4Y2VwdGlvbnMiXSwKIH0pCisKK0FCU0xf
RVhDRVBUSU9OU19GTEFHX0xJTktPUFRTID0gc2VsZWN0KHsKKyAgICAiLy9jb25kaXRpb25zOmRl
ZmF1bHQiOiBbXSwKK30pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9kZWJ1Z2dpbmcvQlVJTEQuZ24KaW5kZXggYjUwYjBhNmRkYzgzMjE5NjhlYjFmYTE3NjMy
MWJjOGUxZjk3NDI1NC4uZDM1ODJkNmE0MjZmNzc1NzE2ZWIxMTc2MmQ1N2ExOTkxYjA0Y2IzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2lu
Zy9CVUlMRC5nbgpAQCAtOTIsMTAgKzkyLDEwIEBAIHNvdXJjZV9zZXQoImZhaWx1cmVfc2lnbmFs
X2hhbmRsZXIiKSB7CiAgIF0KICAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQogICBzb3VyY2VzID0gWwotICAgICJmYWls
dXJlX3NpZ25hbF9oYW5kbGVyLmNjIgorICAgICJmYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmNjIiwK
ICAgXQogICBwdWJsaWMgPSBbCi0gICAgImZhaWx1cmVfc2lnbmFsX2hhbmRsZXIuaCIKKyAgICAi
ZmFpbHVyZV9zaWduYWxfaGFuZGxlci5oIiwKICAgXQogICBkZXBzID0gWwogICAgICI6ZXhhbWlu
ZV9zdGFjayIsCkBAIC0xMjYsNiArMTI2LDcgQEAgc291cmNlX3NldCgiZGVidWdnaW5nX2ludGVy
bmFsIikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uL2Jhc2UiLAorICAgICIuLi9iYXNlOmNv
cmVfaGVhZGVycyIsCiAgICAgIi4uL2Jhc2U6ZHluYW1pY19hbm5vdGF0aW9ucyIsCiAgIF0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9pbnRlcm5hbC9kZW1hbmdsZS5jYwppbmRleCBjOWNhMmYzYmRiMTcwZTc3ZDI4
ZGVjMTU3OTViYTU4ODI5ZmI4NjhhLi40ODM1NDQ1OWJjODVmODZkZmEwZDMxOWU5NzQxMTg4YjNl
OWQ2NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZGVtYW5nbGUuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlLmNjCkBAIC0zNDAsNyArMzQw
LDcgQEAgc3RhdGljIGJvb2wgWmVyb09yTW9yZShQYXJzZUZ1bmMgcGFyc2VfZnVuYywgU3RhdGUg
KnN0YXRlKSB7CiB9CiAKIC8vIEFwcGVuZCAic3RyIiBhdCAib3V0X2N1cl9pZHgiLiAgSWYgdGhl
cmUgaXMgYW4gb3ZlcmZsb3csIG91dF9jdXJfaWR4IGlzCi0vLyBzZXQgdG8gb3V0X2VuZF9pZHgr
MS4gIFRoZSBvdXRwdXQgc3RkOjpzdHJpbmcgaXMgZW5zdXJlZCB0bworLy8gc2V0IHRvIG91dF9l
bmRfaWR4KzEuICBUaGUgb3V0cHV0IHN0cmluZyBpcyBlbnN1cmVkIHRvCiAvLyBhbHdheXMgdGVy
bWluYXRlIHdpdGggJ1wwJyBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIG92ZXJmbG93Lgogc3RhdGlj
IHZvaWQgQXBwZW5kKFN0YXRlICpzdGF0ZSwgY29uc3QgY2hhciAqY29uc3Qgc3RyLCBjb25zdCBp
bnQgbGVuZ3RoKSB7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKQEAgLTg0
MCw3ICs4NDAsNyBAQCBzdGF0aWMgYm9vbCBQYXJzZU51bWJlcihTdGF0ZSAqc3RhdGUsIGludCAq
bnVtYmVyX291dCkgewogfQogCiAvLyBGbG9hdGluZy1wb2ludCBsaXRlcmFscyBhcmUgZW5jb2Rl
ZCB1c2luZyBhIGZpeGVkLWxlbmd0aCBsb3dlcmNhc2UKLS8vIGhleGFkZWNpbWFsIHN0ZDo6c3Ry
aW5nLgorLy8gaGV4YWRlY2ltYWwgc3RyaW5nLgogc3RhdGljIGJvb2wgUGFyc2VGbG9hdE51bWJl
cihTdGF0ZSAqc3RhdGUpIHsKICAgQ29tcGxleGl0eUd1YXJkIGd1YXJkKHN0YXRlKTsKICAgaWYg
KGd1YXJkLklzVG9vQ29tcGxleCgpKSByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9k
ZWJ1Z2dpbmcvc3RhY2t0cmFjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zdGFja3RyYWNlLmNjCmlu
ZGV4IDYxZmVlNjE5MGY1NDU4NDJhZGMzNjJjOGZjZmNlYzVjMGU3NTY1OGEuLjQ2M2ZhZDI2OWMx
NmFmYmEzZTM4M2VlZDEyOTA2YzU0ODg0OWYzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2lu
Zy9zdGFja3RyYWNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zdGFja3RyYWNlLmNjCkBAIC04
MCwxMSArODAsMTMgQEAgQUJTTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBpbmxpbmUgaW50IFVu
d2luZCh2b2lkKiogcmVzdWx0LCBpbnQqIHNpemVzLAogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCiAKK0FCU0xfQVRUUklCVVRFX05PSU5MSU5FCiBpbnQgR2V0U3RhY2tGcmFtZXModm9pZCoq
IHJlc3VsdCwgaW50KiBzaXplcywgaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpIHsKICAg
cmV0dXJuIFVud2luZDx0cnVlLCBmYWxzZT4ocmVzdWx0LCBzaXplcywgbWF4X2RlcHRoLCBza2lw
X2NvdW50LCBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
IH0KIAorQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUKIGludCBHZXRTdGFja0ZyYW1lc1dpdGhDb250
ZXh0KHZvaWQqKiByZXN1bHQsIGludCogc2l6ZXMsIGludCBtYXhfZGVwdGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2tpcF9jb3VudCwgY29uc3Qgdm9pZCogdWMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1pbl9kcm9wcGVkX2ZyYW1lcykgewpAQCAt
OTIsMTEgKzk0LDEzIEBAIGludCBHZXRTdGFja0ZyYW1lc1dpdGhDb250ZXh0KHZvaWQqKiByZXN1
bHQsIGludCogc2l6ZXMsIGludCBtYXhfZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWluX2Ryb3BwZWRfZnJhbWVzKTsKIH0KIAorQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUKIGlu
dCBHZXRTdGFja1RyYWNlKHZvaWQqKiByZXN1bHQsIGludCBtYXhfZGVwdGgsIGludCBza2lwX2Nv
dW50KSB7CiAgIHJldHVybiBVbndpbmQ8ZmFsc2UsIGZhbHNlPihyZXN1bHQsIG51bGxwdHIsIG1h
eF9kZXB0aCwgc2tpcF9jb3VudCwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwogfQogCitBQlNMX0FUVFJJQlVURV9OT0lOTElORQogaW50IEdldFN0YWNr
VHJhY2VXaXRoQ29udGV4dCh2b2lkKiogcmVzdWx0LCBpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9j
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogdWMsIGludCog
bWluX2Ryb3BwZWRfZnJhbWVzKSB7CiAgIHJldHVybiBVbndpbmQ8ZmFsc2UsIHRydWU+KHJlc3Vs
dCwgbnVsbHB0ciwgbWF4X2RlcHRoLCBza2lwX2NvdW50LCB1YywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9zeW1ib2xpemVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVf
dGVzdC5jYwppbmRleCA1ZjJhZjQ3ZWU0NWQ2NTRiNDIyZDBlODY0ZmJmMDYwY2I1YzUxMDc1Li44
MDI5ZmJlOWQyZTZmYjcyMDgxNmVmMDQzNWUwNzA5OWNjMzg3MjkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvc3ltYm9saXplX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJv
bGl6ZV90ZXN0LmNjCkBAIC0zMjEsNyArMzIxLDcgQEAgVEVTVChTeW1ib2xpemUsIFN5bWJvbGl6
ZVdpdGhNdWx0aXBsZU1hcHMpIHsKICAgfQogfQogCi0vLyBBcHBlbmRzIHN0ZDo6c3RyaW5nKCph
cmdzLT5hcmcpIHRvIGFyZ3MtPnN5bWJvbF9idWYuCisvLyBBcHBlbmRzIHN0cmluZygqYXJncy0+
YXJnKSB0byBhcmdzLT5zeW1ib2xfYnVmLgogc3RhdGljIHZvaWQgRHVtbXlTeW1ib2xEZWNvcmF0
b3IoCiAgICAgY29uc3QgYWJzbDo6ZGVidWdnaW5nX2ludGVybmFsOjpTeW1ib2xEZWNvcmF0b3JB
cmdzICphcmdzKSB7CiAgIHN0ZDo6c3RyaW5nICptZXNzYWdlID0gc3RhdGljX2Nhc3Q8c3RkOjpz
dHJpbmcgKj4oYXJncy0+YXJnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQlVJTEQuYmF6ZWwg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9oYXNoL0JVSUxELmJhemVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwYWE1NTA2YzExYzg3ZWQwYjRh
MDY0MmI5NTBiYTE2MGY4YTJmNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxE
LmJhemVsCkBAIC0wLDAgKzEsMTE0IEBACisjCisjIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisj
CisKK2xvYWQoCisgICAgIi8vYWJzbDpjb3B0cy5iemwiLAorICAgICJBQlNMX0RFRkFVTFRfQ09Q
VFMiLAorICAgICJBQlNMX1RFU1RfQ09QVFMiLAorKQorCitwYWNrYWdlKGRlZmF1bHRfdmlzaWJp
bGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdKQorCitsaWNlbnNlcyhbIm5vdGljZSJdKSAg
IyBBcGFjaGUgMi4wCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJoYXNoIiwKKyAgICBzcmNz
ID0gWworICAgICAgICAiaW50ZXJuYWwvaGFzaC5jYyIsCisgICAgICAgICJpbnRlcm5hbC9oYXNo
LmgiLAorICAgIF0sCisgICAgaGRycyA9IFsiaGFzaC5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RF
RkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpjaXR5IiwKKyAgICAgICAgIi8v
YWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvYmFzZTplbmRpYW4iLAor
ICAgICAgICAiLy9hYnNsL2NvbnRhaW5lcjpmaXhlZF9hcnJheSIsCisgICAgICAgICIvL2Fic2wv
bWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wvbnVtZXJpYzppbnQxMjgiLAorICAg
ICAgICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOm9wdGlvbmFsIiwK
KyAgICAgICAgIi8vYWJzbC90eXBlczp2YXJpYW50IiwKKyAgICAgICAgIi8vYWJzbC91dGlsaXR5
IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFzaF90ZXN0aW5nIiwK
KyAgICB0ZXN0b25seSA9IDEsCisgICAgaGRycyA9IFsiaGFzaF90ZXN0aW5nLmgiXSwKKyAgICBk
ZXBzID0gWworICAgICAgICAiOnNweV9oYXNoX3N0YXRlIiwKKyAgICAgICAgIi8vYWJzbC9tZXRh
OnR5cGVfdHJhaXRzIiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIi8vYWJz
bC90eXBlczp2YXJpYW50IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVz
dCIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImhhc2hfdGVzdCIsCisgICAg
c3JjcyA9IFsiaGFzaF90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisg
ICAgZGVwcyA9IFsKKyAgICAgICAgIjpoYXNoIiwKKyAgICAgICAgIjpoYXNoX3Rlc3RpbmciLAor
ICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9jb250
YWluZXI6ZmxhdF9oYXNoX3NldCIsCisgICAgICAgICIvL2Fic2wvaGFzaDpzcHlfaGFzaF9zdGF0
ZSIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgICAgICIvL2Fic2wv
bnVtZXJpYzppbnQxMjgiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0
X21haW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJzcHlfaGFzaF9z
dGF0ZSIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBbImludGVybmFsL3NweV9oYXNo
X3N0YXRlLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICB2aXNpYmls
aXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6
aGFzaCIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5n
czpzdHJfZm9ybWF0IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiY2l0
eSIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvY2l0eS5jYyJdLAorICAgIGhkcnMgPSBbCisgICAg
ICAgICJpbnRlcm5hbC9jaXR5LmgiLAorICAgICAgICAiaW50ZXJuYWwvY2l0eV9jcmMuaCIsCisg
ICAgXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBzID0gWworICAg
ICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVh
ZGVycyIsCisgICAgICAgICIvL2Fic2wvYmFzZTplbmRpYW4iLAorICAgIF0sCispCisKK2NjX3Rl
c3QoCisgICAgbmFtZSA9ICJjaXR5X3Rlc3QiLAorICAgIHNyY3MgPSBbImludGVybmFsL2NpdHlf
dGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisg
ICAgICAgICI6Y2l0eSIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3Rf
bWFpbiIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQlVJTEQuZ24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9oYXNoL0JVSUxELmduCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYjZiM2EyMmIzNzEzMmJiNmVmOTJhYmNjZmJh
MWY2NjljZmU0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxELmduCkBAIC0w
LDAgKzEsMTA0IEBACisjIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisKK2ltcG9ydCgiLy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pIikKKworaWYgKGJ1
aWxkX3dpdGhfY2hyb21pdW0pIHsKKyAgdmlzaWJpbGl0eSA9IFsKKyAgICAiLy90aGlyZF9wYXJ0
eS93ZWJydGMvKiIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC8qIiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKKyAgXQorfSBlbHNlIHsKKyAgdmlzaWJpbGl0
eSA9IFsgIioiIF0KK30KKworc291cmNlX3NldCgiaGFzaCIpIHsKKyAgY29uZmlncyAtPSBbICIv
L2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWwor
ICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1
YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9j
b25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaC5jYyIsCisgICAgImlu
dGVybmFsL2hhc2guaCIsCisgIF0KKyAgcHVibGljID0gWworICAgICJoYXNoLmgiLAorICBdCisg
IGRlcHMgPSBbCisgICAgIjpjaXR5IiwKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAorICAg
ICIuLi9iYXNlOmVuZGlhbiIsCisgICAgIi4uL2NvbnRhaW5lcjpmaXhlZF9hcnJheSIsCisgICAg
Ii4uL21ldGE6dHlwZV90cmFpdHMiLAorICAgICIuLi9udW1lcmljOmludDEyOCIsCisgICAgIi4u
L3N0cmluZ3MiLAorICAgICIuLi90eXBlczpvcHRpb25hbCIsCisgICAgIi4uL3R5cGVzOnZhcmlh
bnQiLAorICAgICIuLi91dGlsaXR5IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJoYXNoX3Rlc3Rp
bmciKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmln
L2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQv
Y29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3Mg
PSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBw
dWJsaWMgPSBbCisgICAgImhhc2hfdGVzdGluZy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6
c3B5X2hhc2hfc3RhdGUiLAorICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAiLi4vc3Ry
aW5ncyIsCisgICAgIi4uL3R5cGVzOnZhcmlhbnQiLAorICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAor
ICBdCit9CisKK3NvdXJjZV9zZXQoInNweV9oYXNoX3N0YXRlIikgeworICB0ZXN0b25seSA9IHRy
dWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2Rl
IiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJv
bWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9j
ZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5h
bC9zcHlfaGFzaF9zdGF0ZS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6aGFzaCIsCisgICAg
Ii4uL3N0cmluZ3MiLAorICAgICIuLi9zdHJpbmdzOnN0cl9mb3JtYXQiLAorICBdCisgIHZpc2li
aWxpdHkgPSBbXQorICB2aXNpYmlsaXR5ICs9IFsgIi4uLyoiIF0KK30KKworc291cmNlX3NldCgi
Y2l0eSIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1
bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpu
b19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVm
YXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJp
bnRlcm5hbC9jaXR5LmgiLAorICAgICJpbnRlcm5hbC9jaXR5X2NyYy5oIiwKKyAgXQorICBzb3Vy
Y2VzID0gWworICAgICJpbnRlcm5hbC9jaXR5LmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICIu
Li9iYXNlOmNvbmZpZyIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vYmFz
ZTplbmRpYW4iLAorICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvaGFzaC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTA4MWUzNzc0ZjhmMzIy
YTlkNzVkYTk0OGVmMjdhMjIxM2QyMjdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9D
TWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDgwIEBACisjCisjIENvcHlyaWdodCAyMDE4IFRoZSBB
YnNlaWwgQXV0aG9ycy4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisjCisKK2xpc3QoQVBQRU5EIEhBU0hfUFVCTElDX0hFQURFUlMKKyAgImhhc2guaCIKKykK
KworbGlzdChBUFBFTkQgSEFTSF9JTlRFUk5BTF9IRUFERVJTCisgICJpbnRlcm5hbC9jaXR5Lmgi
CisgICJpbnRlcm5hbC9jaXR5X2NyYy5oIgorICAiaW50ZXJuYWwvaGFzaC5oIgorKQorCisjIGFi
c2xfaGFzaCBsaWJyYXJ5CitsaXN0KEFQUEVORCBIQVNIX1NSQworICAiaW50ZXJuYWwvY2l0eS5j
YyIKKyAgImludGVybmFsL2hhc2guY2MiCisgICR7SEFTSF9QVUJMSUNfSEVBREVSU30KKyAgJHtI
QVNIX0lOVEVSTkFMX0hFQURFUlN9CispCisKK3NldChIQVNIX1BVQkxJQ19MSUJSQVJJRVMgYWJz
bDo6aGFzaCBhYnNsOjpjb250YWluZXIgYWJzbDo6c3RyaW5ncyBhYnNsOjpzdHJfZm9ybWF0IGFi
c2w6OnV0aWxpdHkpCisKK2Fic2xfbGlicmFyeSgKKyAgVEFSR0VUCisgICAgYWJzbF9oYXNoCisg
IFNPVVJDRVMKKyAgICAke0hBU0hfU1JDfQorICBQVUJMSUNfTElCUkFSSUVTCisgICAgJHtIQVNI
X1BVQkxJQ19MSUJSQVJJRVN9CisgIEVYUE9SVF9OQU1FCisgICAgaGFzaAorKQorCisjCisjIyBU
RVNUUworIworCisjIHRlc3Rpbmcgc3VwcG9ydAorc2V0KEhBU0hfVEVTVF9IRUFERVJTIGhhc2hf
dGVzdGluZy5oIGludGVybmFsL3NweV9oYXNoX3N0YXRlLmgpCitzZXQoSEFTSF9URVNUX1BVQkxJ
Q19MSUJSQVJJRVMgYWJzbDo6aGFzaCBhYnNsOjpjb250YWluZXIgYWJzbDo6bnVtZXJpYyBhYnNs
OjpzdHJpbmdzIGFic2w6OnN0cl9mb3JtYXQpCisKKyMgaGFzaF90ZXN0CitzZXQoSEFTSF9URVNU
X1NSQyAiaGFzaF90ZXN0LmNjIiAke0hBU0hfVEVTVF9IRUFERVJTfSkKKworYWJzbF90ZXN0KAor
ICBUQVJHRVQKKyAgICBoYXNoX3Rlc3QKKyAgU09VUkNFUworICAgICR7SEFTSF9URVNUX1NSQ30K
KyAgUFVCTElDX0xJQlJBUklFUworICAgICR7SEFTSF9URVNUX1BVQkxJQ19MSUJSQVJJRVN9Cisp
CisKKyMgaGFzaF90ZXN0CitzZXQoQ0lUWV9URVNUX1NSQyAiaW50ZXJuYWwvY2l0eV90ZXN0LmNj
IikKKworYWJzbF90ZXN0KAorICBUQVJHRVQKKyAgICBjaXR5X3Rlc3QKKyAgU09VUkNFUworICAg
ICR7Q0lUWV9URVNUX1NSQ30KKyAgUFVCTElDX0xJQlJBUklFUworICAgICR7SEFTSF9URVNUX1BV
QkxJQ19MSUJSQVJJRVN9CispCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9oYXNoL2hhc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2JhNGMyYjdhNWMxOThmNzRjZTI3MzkxMGJh
Yzg4MWM0NTU5Zjg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoLmgKQEAgLTAs
MCArMSwzMTIgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6IGhhc2guaAorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vCisvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIEFic2VpbCBgaGFz
aGAgbGlicmFyeSBhbmQgdGhlIEFic2VpbCBoYXNoaW5nCisvLyBmcmFtZXdvcmsuIFRoaXMgZnJh
bWV3b3JrIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmc6CisvLworLy8gICAqIFRoZSBgYWJzbDo6
SGFzaGAgZnVuY3Rvciwgd2hpY2ggaXMgdXNlZCB0byBpbnZva2UgdGhlIGhhc2hlciB3aXRoaW4g
dGhlCisvLyAgICAgQWJzZWlsIGhhc2hpbmcgZnJhbWV3b3JrLiBgYWJzbDo6SGFzaDxUPmAgc3Vw
cG9ydHMgbW9zdCBiYXNpYyB0eXBlcyBhbmQKKy8vICAgICBhIG51bWJlciBvZiBBYnNlaWwgdHlw
ZXMgb3V0IG9mIHRoZSBib3guCisvLyAgICogYEFic2xIYXNoVmFsdWVgLCBhbiBleHRlbnNpb24g
cG9pbnQgdGhhdCBhbGxvd3MgeW91IHRvIGV4dGVuZCB0eXBlcyB0bworLy8gICAgIHN1cHBvcnQg
QWJzZWlsIGhhc2hpbmcgd2l0aG91dCByZXF1aXJpbmcgeW91IHRvIGRlZmluZSBhIGhhc2hpbmcK
Ky8vICAgICBhbGdvcml0aG0uCisvLyAgICogYEhhc2hTdGF0ZWAsIGEgdHlwZS1lcmFzZWQgY2xh
c3Mgd2hpY2ggaW1wbGVtZW50IHRoZSBtYW5pcHVsYXRpb24gb2YgdGhlCisvLyAgICAgaGFzaCBz
dGF0ZSAoSCkgaXRzZWxmLiBjb250YWluaW5nIG1lbWJlciBmdW5jdGlvbnMgYGNvbWJpbmUoKWAg
YW5kCisvLyAgICAgYGNvbWJpbmVfY29udGlndW91cygpYCwgd2hpY2ggeW91IGNhbiB1c2UgdG8g
Y29udHJpYnV0ZSB0byBhbiBleGlzdGluZworLy8gICAgIGhhc2ggc3RhdGUgd2hlbiBoYXNoaW5n
IHlvdXIgdHlwZXMuCisvLworLy8gVW5saWtlIGBzdGQ6Omhhc2hgIG9yIG90aGVyIGhhc2hpbmcg
ZnJhbWV3b3JrcywgdGhlIEFic2VpbCBoYXNoaW5nIGZyYW1ld29yaworLy8gcHJvdmlkZXMgbW9z
dCBvZiBpdHMgdXRpbGl0eSBieSBhYnN0cmFjdGluZyBhd2F5IHRoZSBoYXNoIGFsZ29yaXRobSAo
YW5kIGl0cworLy8gaW1wbGVtZW50YXRpb24pIGVudGlyZWx5LiBJbnN0ZWFkLCBhIHR5cGUgaW52
b2tlcyB0aGUgQWJzZWlsIGhhc2hpbmcKKy8vIGZyYW1ld29yayBieSBzaW1wbHkgY29tYmluaW5n
IGl0cyBzdGF0ZSB3aXRoIHRoZSBzdGF0ZSBvZiBrbm93biwgaGFzaGFibGUKKy8vIHR5cGVzLiBI
YXNoaW5nIG9mIHRoYXQgY29tYmluZWQgc3RhdGUgaXMgc2VwYXJhdGVseSBkb25lIGJ5IGBhYnNs
OjpIYXNoYC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8gU3VwcG9zZSB3ZSBoYXZlIGEg
Y2xhc3MgYENpcmNsZWAgZm9yIHdoaWNoIHdlIHdhbnQgdG8gYWRkIGhhc2hpbmcKKy8vICAgY2xh
c3MgQ2lyY2xlIHsKKy8vICAgICBwdWJsaWM6CisvLyAgICAgICAuLi4KKy8vICAgICBwcml2YXRl
OgorLy8gICAgICAgc3RkOjpwYWlyPGludCwgaW50PiBjZW50ZXJfOworLy8gICAgICAgaW50IHJh
ZGl1c187CisvLyAgICAgfTsKKy8vCisvLyAgIC8vIFRvIGFkZCBoYXNoaW5nIHN1cHBvcnQgdG8g
YENpcmNsZWAsIHdlIHNpbXBseSBuZWVkIHRvIGFkZCBhbiBvcmRpbmFyeQorLy8gICAvLyBmdW5j
dGlvbiBgQWJzbEhhc2hWYWx1ZSgpYCwgYW5kIHJldHVybiB0aGUgY29tYmluZWQgaGFzaCBzdGF0
ZSBvZiB0aGUKKy8vICAgLy8gZXhpc3RpbmcgaGFzaCBzdGF0ZSBhbmQgdGhlIGNsYXNzIHN0YXRl
OgorLy8KKy8vICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKy8vICAgICBmcmllbmQgSCBBYnNs
SGFzaFZhbHVlKEggaCwgY29uc3QgQ2lyY2xlJiBjKSB7CisvLyAgICAgICByZXR1cm4gSDo6Y29t
YmluZShzdGQ6Om1vdmUoaCksIGMuY2VudGVyXywgYy5yYWRpdXNfKTsKKy8vICAgICB9CisvLwor
Ly8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBBZGRpbmcgVHlwZSBTdXBwb3J0IHRvIGBhYnNs
OjpIYXNoYCBiZWxvdy4KKy8vCisjaWZuZGVmIEFCU0xfSEFTSF9IQVNIX0hfCisjZGVmaW5lIEFC
U0xfSEFTSF9IQVNIX0hfCisKKyNpbmNsdWRlICJhYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5oIgor
CituYW1lc3BhY2UgYWJzbCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBgYWJzbDo6
SGFzaGAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gYGFic2w6Okhhc2g8VD5gIGlz
IGEgY29udmVuaWVudCBnZW5lcmFsLXB1cnBvc2UgaGFzaCBmdW5jdG9yIGZvciBhIHR5cGUgYFRg
CisvLyBzYXRpc2Z5aW5nIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgKGluIG9yZGVy
KToKKy8vCisvLyAgKiBUIGlzIGFuIGFyaXRobWV0aWMgb3IgcG9pbnRlciB0eXBlCisvLyAgKiBU
IGRlZmluZXMgYW4gb3ZlcmxvYWQgZm9yIGBBYnNsSGFzaFZhbHVlKEgsIGNvbnN0IFQmKWAgZm9y
IGFuIGFyYml0cmFyeQorLy8gICAgaGFzaCBzdGF0ZSBgSGAuCisvLyAgLSBUIGRlZmluZXMgYSBz
cGVjaWFsaXphdGlvbiBvZiBgSEFTSF9OQU1FU1BBQ0U6Omhhc2g8VD5gCisvLyAgLSBUIGRlZmlu
ZXMgYSBzcGVjaWFsaXphdGlvbiBvZiBgc3RkOjpoYXNoPFQ+YAorLy8KKy8vIGBhYnNsOjpIYXNo
YCBpbnRyaW5zaWNhbGx5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgdHlwZXM6CisvLworLy8gICAq
IEFsbCBpbnRlZ3JhbCB0eXBlcyAoaW5jbHVkaW5nIGJvb2wpCisvLyAgICogQWxsIGVudW0gdHlw
ZXMKKy8vICAgKiBBbGwgZmxvYXRpbmctcG9pbnQgdHlwZXMgKGFsdGhvdWdoIGhhc2hpbmcgdGhl
bSBpcyBkaXNjb3VyYWdlZCkKKy8vICAgKiBBbGwgcG9pbnRlciB0eXBlcywgaW5jbHVkaW5nIG51
bGxwdHJfdAorLy8gICAqIHN0ZDo6cGFpcjxUMSwgVDI+LCBpZiBUMSBhbmQgVDIgYXJlIGhhc2hh
YmxlCisvLyAgICogc3RkOjp0dXBsZTxUcy4uLj4sIGlmIGFsbCB0aGUgVHMuLi4gYXJlIGhhc2hh
YmxlCisvLyAgICogc3RkOjp1bmlxdWVfcHRyIGFuZCBzdGQ6OnNoYXJlZF9wdHIKKy8vICAgKiBB
bGwgc3RyaW5nLWxpa2UgdHlwZXMgaW5jbHVkaW5nOgorLy8gICAgICogc3RkOjpzdHJpbmcKKy8v
ICAgICAqIHN0ZDo6c3RyaW5nX3ZpZXcgKGFzIHdlbGwgYXMgYW55IGluc3RhbmNlIG9mIHN0ZDo6
YmFzaWNfc3RyaW5nIHRoYXQKKy8vICAgICAgIHVzZXMgY2hhciBhbmQgc3RkOjpjaGFyX3RyYWl0
cykKKy8vICAqIEFsbCB0aGUgc3RhbmRhcmQgc2VxdWVuY2UgY29udGFpbmVycyAocHJvdmlkZWQg
dGhlIGVsZW1lbnRzIGFyZSBoYXNoYWJsZSkKKy8vICAqIEFsbCB0aGUgc3RhbmRhcmQgb3JkZXJl
ZCBhc3NvY2lhdGl2ZSBjb250YWluZXJzIChwcm92aWRlZCB0aGUgZWxlbWVudHMgYXJlCisvLyAg
ICBoYXNoYWJsZSkKKy8vICAqIGFic2wgdHlwZXMgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgorLy8g
ICAgKiBhYnNsOjpzdHJpbmdfdmlldworLy8gICAgKiBhYnNsOjpJbmxpbmVkVmVjdG9yCisvLyAg
ICAqIGFic2w6OkZpeGVkQXJyYXkKKy8vICAgICogYWJzbDo6dW5pdDEyOAorLy8gICAgKiBhYnNs
OjpUaW1lLCBhYnNsOjpEdXJhdGlvbiwgYW5kIGFic2w6OlRpbWVab25lCisvLworLy8gTm90ZTog
dGhlIGxpc3QgYWJvdmUgaXMgbm90IG1lYW50IHRvIGJlIGV4aGF1c3RpdmUuIEFkZGl0aW9uYWwg
dHlwZSBzdXBwb3J0CisvLyBtYXkgYmUgYWRkZWQsIGluIHdoaWNoIGNhc2UgdGhlIGFib3ZlIGxp
c3Qgd2lsbCBiZSB1cGRhdGVkLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNs
OjpIYXNoIEludm9jYXRpb24gRXZhbHVhdGlvbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
CisvLyBXaGVuIGludm9rZWQsIGBhYnNsOjpIYXNoPFQ+YCBzZWFyY2hlcyBmb3Igc3VwcGxpZWQg
aGFzaCBmdW5jdGlvbnMgaW4gdGhlCisvLyBmb2xsb3dpbmcgb3JkZXI6CisvLworLy8gICAqIE5h
dGl2ZWx5IHN1cHBvcnRlZCB0eXBlcyBvdXQgb2YgdGhlIGJveCAoc2VlIGFib3ZlKQorLy8gICAq
IFR5cGVzIGZvciB3aGljaCBhbiBgQWJzbEhhc2hWYWx1ZSgpYCBvdmVybG9hZCBpcyBwcm92aWRl
ZCAoc3VjaCBhcworLy8gICAgIHVzZXItZGVmaW5lZCB0eXBlcykuIFNlZSAiQWRkaW5nIFR5cGUg
U3VwcG9ydCB0byBgYWJzbDo6SGFzaGAiIGJlbG93LgorLy8gICAqIFR5cGVzIHdoaWNoIGRlZmlu
ZSBhIGBIQVNIX05BTUVTUEFDRTo6aGFzaDxUPmAgc3BlY2lhbGl6YXRpb24gKGFrYQorLy8gICAg
IGBfX2dudV9jeHg6Omhhc2g8VD5gIGZvciBnY2MvQ2xhbmcgb3IgYHN0ZGV4dDo6aGFzaDxUPmAg
Zm9yIE1TVkMpCisvLyAgICogVHlwZXMgd2hpY2ggZGVmaW5lIGEgYHN0ZDo6aGFzaDxUPmAgc3Bl
Y2lhbGl6YXRpb24KKy8vCisvLyBUaGUgZmFsbGJhY2sgdG8gbGVnYWN5IGhhc2ggZnVuY3Rpb25z
IGV4aXN0cyBtYWlubHkgZm9yIGJhY2t3YXJkcworLy8gY29tcGF0aWJpbGl0eS4gSWYgeW91IGhh
dmUgYSBjaG9pY2UsIHByZWZlciBkZWZpbmluZyBhbiBgQWJzbEhhc2hWYWx1ZWAKKy8vIG92ZXJs
b2FkIGluc3RlYWQgb2Ygc3BlY2lhbGl6aW5nIGFueSBsZWdhY3kgaGFzaCBmdW5jdG9ycy4KKy8v
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gVGhlIEhhc2ggU3RhdGUgQ29uY2VwdCwgYW5k
IHVzaW5nIGBIYXNoU3RhdGVgIGZvciBUeXBlIEVyYXN1cmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gVGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdvcmsgcmVsaWVzIG9uIHRoZSBDb25j
ZXB0IG9mIGEgImhhc2ggc3RhdGUuIiBTdWNoIGEKKy8vIGhhc2ggc3RhdGUgaXMgdXNlZCBpbiBz
ZXZlcmFsIHBsYWNlczoKKy8vCisvLyAqIFdpdGhpbiBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMg
b2YgYGFic2w6Okhhc2g8VD5gIHRvIHN0b3JlIHRoZSBoYXNoZWQKKy8vICAgc3RhdGUgb2YgYW4g
b2JqZWN0LiBOb3RlIHRoYXQgaXQgaXMgdXAgdG8gdGhlIGltcGxlbWVudGF0aW9uIGhvdyBpdCBz
dG9yZXMKKy8vICAgc3VjaCBzdGF0ZS4gQSBoYXNoIHRhYmxlLCBmb3IgZXhhbXBsZSwgbWF5IG1p
eCB0aGUgc3RhdGUgdG8gcHJvZHVjZSBhbgorLy8gICBpbnRlZ2VyIHZhbHVlOyBhIHRlc3Rpbmcg
ZnJhbWV3b3JrIG1heSBzaW1wbHkgaG9sZCBhIHZlY3RvciBvZiB0aGF0IHN0YXRlLgorLy8gKiBX
aXRoaW4gaW1wbGVtZW50YXRpb25zIG9mIGBBYnNsSGFzaFZhbHVlKClgIHVzZWQgdG8gZXh0ZW5k
IHVzZXItZGVmaW5lZAorLy8gICB0eXBlcy4gKFNlZSAiQWRkaW5nIFR5cGUgU3VwcG9ydCB0byBh
YnNsOjpIYXNoIiBiZWxvdy4pCisvLyAqIEluc2lkZSBhIGBIYXNoU3RhdGVgLCBwcm92aWRpbmcg
dHlwZSBlcmFzdXJlIGZvciB0aGUgY29uY2VwdCBvZiBhIGhhc2gKKy8vICAgc3RhdGUsIHdoaWNo
IHlvdSBjYW4gdXNlIHRvIGV4dGVuZCB0aGUgYGFic2w6Okhhc2hgIGZyYW1ld29yayBmb3IgdHlw
ZXMKKy8vICAgdGhhdCBhcmUgb3RoZXJ3aXNlIGRpZmZpY3VsdCB0byBleHRlbmQgdXNpbmcgYEFi
c2xIYXNoVmFsdWUoKWAuIChTZWUgdGhlCisvLyAgIGBIYXNoU3RhdGVgIGNsYXNzIGJlbG93LikK
Ky8vCisvLyBUaGUgImhhc2ggc3RhdGUiIGNvbmNlcHQgY29udGFpbnMgdHdvIG1lbWJlciBmdW5j
dGlvbnMgZm9yIG1peGluZyBoYXNoIHN0YXRlOgorLy8KKy8vICogYEg6OmNvbWJpbmUoKWAKKy8v
CisvLyAgIENvbWJpbmVzIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdmFsdWVzIGludG8gYSBoYXNo
IHN0YXRlLCByZXR1cm5pbmcgdGhlCisvLyAgIHVwZGF0ZWQgc3RhdGUuIE5vdGUgdGhhdCB0aGUg
ZXhpc3RpbmcgaGFzaCBzdGF0ZSBpcyBtb3ZlLW9ubHkgYW5kIG11c3QgYmUKKy8vICAgcGFzc2Vk
IGJ5IHZhbHVlLgorLy8KKy8vICAgRWFjaCBvZiB0aGUgdmFsdWUgdHlwZXMgVCBtdXN0IGJlIGhh
c2hhYmxlIGJ5IEguCisvLworLy8gICBOT1RFOgorLy8KKy8vICAgICBzdGF0ZSA9IEg6OmNvbWJp
bmUoc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUxLCB2YWx1ZTIsIHZhbHVlMyk7CisvLworLy8gICBt
dXN0IGJlIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSB0aGUgc2FtZSBoYXNoIGV4cGFuc2lvbiBhcwor
Ly8KKy8vICAgICBzdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUxKTsK
Ky8vICAgICBzdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUyKTsKKy8v
ICAgICBzdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUzKTsKKy8vCisv
LyAqIGBIOjpjb21iaW5lX2NvbnRpZ3VvdXMoKWAKKy8vCisvLyAgICBDb21iaW5lcyBhIGNvbnRp
Z3VvdXMgYXJyYXkgb2YgYHNpemVgIGVsZW1lbnRzIGludG8gYSBoYXNoIHN0YXRlLAorLy8gICAg
cmV0dXJuaW5nIHRoZSB1cGRhdGVkIHN0YXRlLiBOb3RlIHRoYXQgdGhlIGV4aXN0aW5nIGhhc2gg
c3RhdGUgaXMKKy8vICAgIG1vdmUtb25seSBhbmQgbXVzdCBiZSBwYXNzZWQgYnkgdmFsdWUuCisv
LworLy8gICAgTk9URToKKy8vCisvLyAgICAgIHN0YXRlID0gSDo6Y29tYmluZV9jb250aWd1b3Vz
KHN0ZDo6bW92ZShzdGF0ZSksIGRhdGEsIHNpemUpOworLy8KKy8vICAgIG5lZWQgTk9UIGJlIGd1
YXJhbnRlZWQgdG8gcHJvZHVjZSB0aGUgc2FtZSBoYXNoIGV4cGFuc2lvbiBhcyBhIGxvb3AKKy8v
ICAgIChpdCBtYXkgcGVyZm9ybSBpbnRlcm5hbCBvcHRpbWl6YXRpb25zKS4gSWYgeW91IG5lZWQg
dGhpcyBndWFyYW50ZWUsIHVzZSBhCisvLyAgICBsb29wIGluc3RlYWQuCisvLworLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vIEFkZGluZyBUeXBlIFN1cHBvcnQgdG8gYGFic2w6Okhhc2hgCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRvIGFkZCBzdXBwb3J0IGZvciB5b3VyIHVz
ZXItZGVmaW5lZCB0eXBlLCBhZGQgYSBwcm9wZXIgYEFic2xIYXNoVmFsdWUoKWAKKy8vIG92ZXJs
b2FkIGFzIGEgZnJlZSAobm9uLW1lbWJlcikgZnVuY3Rpb24uIFRoZSBvdmVybG9hZCB3aWxsIHRh
a2UgYW4KKy8vIGV4aXN0aW5nIGhhc2ggc3RhdGUgYW5kIHNob3VsZCBjb21iaW5lIHRoYXQgc3Rh
dGUgd2l0aCBzdGF0ZSBmcm9tIHRoZSB0eXBlLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKy8vICAgSCBBYnNsSGFzaFZhbHVlKEggc3RhdGUsIGNvbnN0
IE15VHlwZSYgdikgeworLy8gICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSks
IHYuZmllbGQxLCAuLi4sIHYuZmllbGROKTsKKy8vICAgfQorLy8KKy8vIHdoZXJlIGAoZmllbGQx
LCAuLi4sIGZpZWxkTilgIGFyZSB0aGUgbWVtYmVycyB5b3Ugd291bGQgdXNlIG9uIHlvdXIKKy8v
IGBvcGVyYXRvcj09YCB0byBkZWZpbmUgZXF1YWxpdHkuCisvLworLy8gTm90aWNlIHRoYXQgYEFi
c2xIYXNoVmFsdWVgIGlzIG5vdCBhIGNsYXNzIG1lbWJlciwgYnV0IGFuIG9yZGluYXJ5IGZ1bmN0
aW9uLgorLy8gQW4gYEFic2xIYXNoVmFsdWVgIG92ZXJsb2FkIGZvciBhIHR5cGUgc2hvdWxkIG9u
bHkgYmUgZGVjbGFyZWQgaW4gdGhlIHNhbWUKKy8vIGZpbGUgYW5kIG5hbWVzcGFjZSBhcyBzYWlk
IHR5cGUuIFRoZSBwcm9wZXIgYEFic2xIYXNoVmFsdWVgIGltcGxlbWVudGF0aW9uCisvLyBmb3Ig
YSBnaXZlbiB0eXBlIHdpbGwgYmUgZGlzY292ZXJlZCB2aWEgQURMLgorLy8KKy8vIE5vdGU6IHVu
bGlrZSBgc3RkOjpoYXNoJywgYGFic2w6Okhhc2hgIHNob3VsZCBuZXZlciBiZSBzcGVjaWFsaXpl
ZC4gSXQgbXVzdAorLy8gb25seSBiZSBleHRlbmRlZCBieSBhZGRpbmcgYEFic2xIYXNoVmFsdWUo
KWAgb3ZlcmxvYWRzLgorLy8KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgSGFzaCA9IGFi
c2w6Omhhc2hfaW50ZXJuYWw6Okhhc2g8VD47CisKKy8vIEhhc2hTdGF0ZQorLy8KKy8vIEEgdHlw
ZSBlcmFzZWQgdmVyc2lvbiBvZiB0aGUgaGFzaCBzdGF0ZSBjb25jZXB0LCBmb3IgdXNlIGluIHVz
ZXItZGVmaW5lZAorLy8gYEFic2xIYXNoVmFsdWVgIGltcGxlbWVudGF0aW9ucyB0aGF0IGNhbid0
IHVzZSB0ZW1wbGF0ZXMgKHN1Y2ggYXMgUEltcGwKKy8vIGNsYXNzZXMsIHZpcnR1YWwgZnVuY3Rp
b25zLCBldGMuKS4gVGhlIHR5cGUgZXJhc3VyZSBhZGRzIG92ZXJoZWFkIHNvIGl0CisvLyBzaG91
bGQgYmUgYXZvaWRlZCB1bmxlc3MgbmVjZXNzYXJ5LgorLy8KKy8vIE5vdGU6IFRoaXMgd3JhcHBl
ciB3aWxsIG9ubHkgZXJhc2UgY2FsbHMgdG86CisvLyAgICAgY29tYmluZV9jb250aWd1b3VzKEgs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpCisvLworLy8gQWxsIG90aGVyIGNhbGxzIHdp
bGwgYmUgaGFuZGxlZCBpbnRlcm5hbGx5IGFuZCB3aWxsIG5vdCBpbnZva2Ugb3ZlcmxvYWRzCisv
LyBwcm92aWRlZCBieSB0aGUgd3JhcHBlZCBjbGFzcy4KKy8vCisvLyBVc2VycyBvZiB0aGlzIGNs
YXNzIHNob3VsZCBzdGlsbCBkZWZpbmUgYSB0ZW1wbGF0ZSBgQWJzbEhhc2hWYWx1ZWAgZnVuY3Rp
b24sCisvLyBidXQgY2FuIHVzZSBgYWJzbDo6SGFzaFN0YXRlOjpDcmVhdGUoJnN0YXRlKWAgdG8g
ZXJhc2UgdGhlIHR5cGUgb2YgdGhlIGhhc2gKKy8vIHN0YXRlIGFuZCBkaXNwYXRjaCB0byB0aGVp
ciBwcml2YXRlIGhhc2hpbmcgbG9naWMuCisvLworLy8gVGhpcyBzdGF0ZSBjYW4gYmUgdXNlZCBs
aWtlIGFueSBvdGhlciBoYXNoIHN0YXRlLiBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuIGNhbGwKKy8v
IGBIYXNoU3RhdGU6OmNvbWJpbmUoKWAgYW5kIGBIYXNoU3RhdGU6OmNvbWJpbmVfY29udGlndW91
cygpYCBvbiBpdC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgY2xhc3MgSW50ZXJmYWNlIHsK
Ky8vICAgIHB1YmxpYzoKKy8vICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKy8vICAgICBmcmll
bmQgSCBBYnNsSGFzaFZhbHVlKEggc3RhdGUsIGNvbnN0IEludGVyZmFjZSYgdmFsdWUpIHsKKy8v
ICAgICAgIHN0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUoc3RhdGUpLCBzdGQ6OnR5cGVfaW5k
ZXgodHlwZWlkKCp0aGlzKSkpOworLy8gICAgICAgdmFsdWUuSGFzaFZhbHVlKGFic2w6Okhhc2hT
dGF0ZTo6Q3JlYXRlKCZzdGF0ZSkpOworLy8gICAgICAgcmV0dXJuIHN0YXRlOworLy8gICAgIH0K
Ky8vICAgIHByaXZhdGU6CisvLyAgICAgdmlydHVhbCB2b2lkIEhhc2hWYWx1ZShhYnNsOjpIYXNo
U3RhdGUgc3RhdGUpIGNvbnN0ID0gMDsKKy8vICB9OworLy8KKy8vICAgY2xhc3MgSW1wbCA6IElu
dGVyZmFjZSB7CisvLyAgICBwcml2YXRlOgorLy8gICAgIHZvaWQgSGFzaFZhbHVlKGFic2w6Okhh
c2hTdGF0ZSBzdGF0ZSkgY29uc3Qgb3ZlcnJpZGUgeworLy8gICAgICAgYWJzbDo6SGFzaFN0YXRl
Ojpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHYxXywgdjJfKTsKKy8vICAgICB9CisvLyAgICAg
aW50IHYxXzsKKy8vICAgICBzdHJpbmcgdjJfOworLy8gICB9OworY2xhc3MgSGFzaFN0YXRlIDog
cHVibGljIGhhc2hfaW50ZXJuYWw6Okhhc2hTdGF0ZUJhc2U8SGFzaFN0YXRlPiB7CisgcHVibGlj
OgorICAvLyBIYXNoU3RhdGU6OkNyZWF0ZSgpCisgIC8vCisgIC8vIENyZWF0ZSBhIG5ldyBgSGFz
aFN0YXRlYCBpbnN0YW5jZSB0aGF0IHdyYXBzIGBzdGF0ZWAuIEFsbCBjYWxscyB0bworICAvLyBg
Y29tYmluZSgpYCBhbmQgYGNvbWJpbmVfY29udGlndW91cygpYCBvbiB0aGUgbmV3IGluc3RhbmNl
IHdpbGwgYmUKKyAgLy8gcmVkaXJlY3RlZCB0byB0aGUgb3JpZ2luYWwgYHN0YXRlYCBvYmplY3Qu
IFRoZSBgc3RhdGVgIG9iamVjdCBtdXN0IG91dGxpdmUKKyAgLy8gdGhlIGBIYXNoU3RhdGVgIGlu
c3RhbmNlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIEhhc2hTdGF0ZSBDcmVh
dGUoVCogc3RhdGUpIHsKKyAgICBIYXNoU3RhdGUgczsKKyAgICBzLkluaXQoc3RhdGUpOworICAg
IHJldHVybiBzOworICB9CisKKyAgSGFzaFN0YXRlKGNvbnN0IEhhc2hTdGF0ZSYpID0gZGVsZXRl
OworICBIYXNoU3RhdGUmIG9wZXJhdG9yPShjb25zdCBIYXNoU3RhdGUmKSA9IGRlbGV0ZTsKKyAg
SGFzaFN0YXRlKEhhc2hTdGF0ZSYmKSA9IGRlZmF1bHQ7CisgIEhhc2hTdGF0ZSYgb3BlcmF0b3I9
KEhhc2hTdGF0ZSYmKSA9IGRlZmF1bHQ7CisKKyAgLy8gSGFzaFN0YXRlOjpjb21iaW5lKCkKKyAg
Ly8KKyAgLy8gQ29tYmluZXMgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB2YWx1ZXMgaW50byBhIGhh
c2ggc3RhdGUsIHJldHVybmluZyB0aGUKKyAgLy8gdXBkYXRlZCBzdGF0ZS4KKyAgdXNpbmcgSGFz
aFN0YXRlOjpIYXNoU3RhdGVCYXNlOjpjb21iaW5lOworCisgIC8vIEhhc2hTdGF0ZTo6Y29tYmlu
ZV9jb250aWd1b3VzKCkKKyAgLy8KKyAgLy8gQ29tYmluZXMgYSBjb250aWd1b3VzIGFycmF5IG9m
IGBzaXplYCBlbGVtZW50cyBpbnRvIGEgaGFzaCBzdGF0ZSwgcmV0dXJuaW5nCisgIC8vIHRoZSB1
cGRhdGVkIHN0YXRlLgorICBzdGF0aWMgSGFzaFN0YXRlIGNvbWJpbmVfY29udGlndW91cyhIYXNo
U3RhdGUgaGFzaF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdW5zaWduZWQgY2hhciogZmlyc3QsIHNpemVfdCBzaXplKSB7CisgICAgaGFzaF9zdGF0
ZS5jb21iaW5lX2NvbnRpZ3VvdXNfKGhhc2hfc3RhdGUuc3RhdGVfLCBmaXJzdCwgc2l6ZSk7Cisg
ICAgcmV0dXJuIGhhc2hfc3RhdGU7CisgIH0KKyAgdXNpbmcgSGFzaFN0YXRlOjpIYXNoU3RhdGVC
YXNlOjpjb21iaW5lX2NvbnRpZ3VvdXM7CisKKyBwcml2YXRlOgorICBIYXNoU3RhdGUoKSA9IGRl
ZmF1bHQ7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyB2b2lkIENvbWJpbmVD
b250aWd1b3VzSW1wbCh2b2lkKiBwLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBmaXJzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKSB7CisgICAgVCYgc3Rh
dGUgPSAqc3RhdGljX2Nhc3Q8VCo+KHApOworICAgIHN0YXRlID0gVDo6Y29tYmluZV9jb250aWd1
b3VzKHN0ZDo6bW92ZShzdGF0ZSksIGZpcnN0LCBzaXplKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgorICB2b2lkIEluaXQoVCogc3RhdGUpIHsKKyAgICBzdGF0ZV8gPSBzdGF0ZTsK
KyAgICBjb21iaW5lX2NvbnRpZ3VvdXNfID0gJkNvbWJpbmVDb250aWd1b3VzSW1wbDxUPjsKKyAg
fQorCisgIC8vIERvIG5vdCBlcmFzZSBhbiBhbHJlYWR5IGVyYXNlZCBzdGF0ZS4KKyAgdm9pZCBJ
bml0KEhhc2hTdGF0ZSogc3RhdGUpIHsKKyAgICBzdGF0ZV8gPSBzdGF0ZS0+c3RhdGVfOworICAg
IGNvbWJpbmVfY29udGlndW91c18gPSBzdGF0ZS0+Y29tYmluZV9jb250aWd1b3VzXzsKKyAgfQor
CisgIHZvaWQqIHN0YXRlXzsKKyAgdm9pZCAoKmNvbWJpbmVfY29udGlndW91c18pKHZvaWQqLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhYnNs
CisjZW5kaWYgIC8vIEFCU0xfSEFTSF9IQVNIX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hh
c2hfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNmZiMmU3
YWMxY2IwOTMxYzVlNmI5ODMzZGVmNjRlYWNlMmFjNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9oYXNoL2hhc2hfdGVzdC5jYwpAQCAtMCwwICsxLDQyNSBAQAorLy8gQ29weXJpZ2h0IDIwMTgg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvaGFzaC9oYXNoLmgiCisKKyNp
bmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPGRlcXVlPgorI2lu
Y2x1ZGUgPGZvcndhcmRfbGlzdD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPGl0
ZXJhdG9yPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPG1h
cD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxyYW5k
b20+CisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0dXBsZT4K
KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorI2luY2x1
ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2su
aCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2Zs
YXRfaGFzaF9zZXQuaCIKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgiCisjaW5j
bHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL3NweV9oYXNoX3N0YXRlLmgiCisjaW5jbHVkZSAiYWJz
bC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9udW1lcmljL2ludDEyOC5oIgor
CituYW1lc3BhY2UgeworCit1c2luZyBhYnNsOjpIYXNoOwordXNpbmcgYWJzbDo6aGFzaF9pbnRl
cm5hbDo6U3B5SGFzaFN0YXRlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEhhc2hW
YWx1ZUludFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworVFlQRURfVEVTVF9DQVNF
X1AoSGFzaFZhbHVlSW50VGVzdCk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorU3B5SGFzaFN0
YXRlIFNweUhhc2goY29uc3QgVCYgdmFsdWUpIHsKKyAgcmV0dXJuIFNweUhhc2hTdGF0ZTo6Y29t
YmluZShTcHlIYXNoU3RhdGUoKSwgdmFsdWUpOworfQorCisvLyBIZWxwZXIgdHJhaXQgdG8gdmVy
aWZ5IGlmIFQgaXMgaGFzaGFibGUuIFdlIHVzZSBhYnNsOjpIYXNoJ3MgcG9pc29uIHN0YXR1cyB0
bworLy8gZGV0ZWN0IGl0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBpc19oYXNoYWJs
ZSA9IHN0ZDo6aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPGFic2w6Okhhc2g8VD4+OworCitUWVBF
RF9URVNUX1AoSGFzaFZhbHVlSW50VGVzdCwgQmFzaWNVc2FnZSkgeworICBFWFBFQ1RfVFJVRSgo
aXNfaGFzaGFibGU8VHlwZVBhcmFtPjo6dmFsdWUpKTsKKworICBUeXBlUGFyYW0gbiA9IDQyOwor
ICBFWFBFQ1RfRVEoU3B5SGFzaChuKSwgU3B5SGFzaChUeXBlUGFyYW17NDJ9KSk7CisgIEVYUEVD
VF9ORShTcHlIYXNoKG4pLCBTcHlIYXNoKFR5cGVQYXJhbXswfSkpOworICBFWFBFQ1RfTkUoU3B5
SGFzaChzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1heCgpKSwKKyAgICAgICAgICAg
IFNweUhhc2goc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSkpOworfQorCitU
WVBFRF9URVNUX1AoSGFzaFZhbHVlSW50VGVzdCwgRmFzdFBhdGgpIHsKKyAgLy8gVGVzdCB0aGUg
ZmFzdC1wYXRoIHRvIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIGFyZSB0aGUgc2FtZS4KKyAgVHlwZVBh
cmFtIG4gPSA0MjsKKyAgRVhQRUNUX0VRKGFic2w6Okhhc2g8VHlwZVBhcmFtPnt9KG4pLAorICAg
ICAgICAgICAgYWJzbDo6SGFzaDxzdGQ6OnR1cGxlPFR5cGVQYXJhbT4+e30oc3RkOjp0dXBsZTxU
eXBlUGFyYW0+KG4pKSk7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEhhc2hWYWx1
ZUludFRlc3QsIEJhc2ljVXNhZ2UsIEZhc3RQYXRoKTsKK3VzaW5nIEludFR5cGVzID0gdGVzdGlu
Zzo6VHlwZXM8dW5zaWduZWQgY2hhciwgY2hhciwgaW50LCBpbnQzMl90LCBpbnQ2NF90LCB1aW50
MzJfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QsIHNpemVfdD47
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgSGFzaFZhbHVlSW50VGVzdCwgSW50
VHlwZXMpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPgorc3RydWN0
IElzSGFzaENhbGxibGUgOiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorc3RydWN0IElzSGFzaENhbGxibGU8VCwgYWJzbDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6
ZGVjbHZhbDxhYnNsOjpIYXNoPFQ+PigpKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6ZGVjbHZhbDxjb25zdCBUJj4oKSkpPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4KK3N0cnVjdCBJc0FnZ3JlZ2F0ZUluaXRp
YWxpemFibGUgOiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
c3RydWN0IElzQWdncmVnYXRlSW5pdGlhbGl6YWJsZTxULCBhYnNsOjp2b2lkX3Q8ZGVjbHR5cGUo
VHt9KT4+CisgICAgOiBzdGQ6OnRydWVfdHlwZSB7fTsKKworVEVTVChJc0hhc2hhYmxlVGVzdCwg
VmFsaWRIYXNoKSB7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxpbnQ+Ojp2YWx1ZSkpOwor
ICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxhYnNsOjpIYXNoPGlu
dD4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPGFi
c2w6Okhhc2g8aW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjppc19tb3ZlX2NvbnN0
cnVjdGlibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjpp
c19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJV
RShhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOworICBF
WFBFQ1RfVFJVRShJc0hhc2hDYWxsYmxlPGludD46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoSXNB
Z2dyZWdhdGVJbml0aWFsaXphYmxlPGFic2w6Okhhc2g8aW50Pj46OnZhbHVlKTsKK30KKyNpZiBB
QlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8gJiYgIWRlZmluZWQoX19BUFBMRV9fKQorVEVT
VChJc0hhc2hhYmxlVGVzdCwgUG9pc29uSGFzaCkgeworICBzdHJ1Y3QgWCB7fTsKKyAgRVhQRUNU
X0ZBTFNFKChpc19oYXNoYWJsZTxYPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNf
ZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPGFic2w6Okhhc2g8WD4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9G
QUxTRShzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxhYnNsOjpIYXNoPFg+Pjo6dmFsdWUpOwor
ICBFWFBFQ1RfRkFMU0Uoc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8YWJzbDo6SGFzaDxYPj46
OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpI
YXNoPFg+Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxl
PGFic2w6Okhhc2g8WD4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShJc0hhc2hDYWxsYmxlPFg+
Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShJc0FnZ3JlZ2F0ZUluaXRpYWxpemFibGU8YWJzbDo6
SGFzaDxYPj46OnZhbHVlKTsKK30KKyNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX0NBTl9Q
T0lTT05fCisKKy8vIEhhc2hhYmxlIHR5cGVzCisvLworLy8gVGhlc2UgdHlwZXMgZXhpc3Qgc2lt
cGx5IHRvIGV4ZXJjaXNlIHZhcmlvdXMgQWJzbEhhc2hWYWx1ZSBiZWhhdmlvcnMsIHNvCisvLyB0
aGV5IGFyZSBuYW1lZCBieSB3aGF0IHRoZWlyIEFic2xIYXNoVmFsdWUgb3ZlcmxvYWQgZG9lcy4K
K3N0cnVjdCBOb09wIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hDb2RlPgorICBmcmllbmQg
SGFzaENvZGUgQWJzbEhhc2hWYWx1ZShIYXNoQ29kZSBoLCBOb09wIG4pIHsKKyAgICByZXR1cm4g
c3RkOjptb3ZlKGgpOworICB9Cit9OworCitzdHJ1Y3QgRW1wdHlDb21iaW5lIHsKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIEhhc2hDb2RlPgorICBmcmllbmQgSGFzaENvZGUgQWJzbEhhc2hWYWx1ZShI
YXNoQ29kZSBoLCBFbXB0eUNvbWJpbmUgZSkgeworICAgIHJldHVybiBIYXNoQ29kZTo6Y29tYmlu
ZShzdGQ6Om1vdmUoaCkpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50Pgorc3Ry
dWN0IENvbWJpbmVJdGVyYXRpdmUgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaENvZGU+Cisg
IGZyaWVuZCBIYXNoQ29kZSBBYnNsSGFzaFZhbHVlKEhhc2hDb2RlIGgsIENvbWJpbmVJdGVyYXRp
dmUgYykgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgICBoID0gSGFz
aENvZGU6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBJbnQoaSkpOworICAgIH0KKyAgICByZXR1cm4g
aDsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEludD4KK3N0cnVjdCBDb21iaW5lVmFy
aWFkaWMgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaENvZGU+CisgIGZyaWVuZCBIYXNoQ29k
ZSBBYnNsSGFzaFZhbHVlKEhhc2hDb2RlIGgsIENvbWJpbmVWYXJpYWRpYyBjKSB7CisgICAgcmV0
dXJuIEhhc2hDb2RlOjpjb21iaW5lKHN0ZDo6bW92ZShoKSwgSW50KDApLCBJbnQoMSksIEludCgy
KSwgSW50KDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQoNCkpOworICB9Cit9
OworCit1c2luZyBJbnZva2VUYWcgPSBhYnNsOjpoYXNoX2ludGVybmFsOjpJbnZva2VIYXNoVGFn
OwordGVtcGxhdGUgPEludm9rZVRhZyBUPgordXNpbmcgSW52b2tlVGFnQ29uc3RhbnQgPSBzdGQ6
OmludGVncmFsX2NvbnN0YW50PEludm9rZVRhZywgVD47CisKK3RlbXBsYXRlIDxJbnZva2VUYWcu
Li4gVGFncz4KK3N0cnVjdCBNaW5UYWc7CisKK3RlbXBsYXRlIDxJbnZva2VUYWcgYSwgSW52b2tl
VGFnIGIsIEludm9rZVRhZy4uLiBUYWdzPgorc3RydWN0IE1pblRhZzxhLCBiLCBUYWdzLi4uPiA6
IE1pblRhZzwoYSA8IGIgPyBhIDogYiksIFRhZ3MuLi4+IHt9OworCit0ZW1wbGF0ZSA8SW52b2tl
VGFnIGE+CitzdHJ1Y3QgTWluVGFnPGE+IDogSW52b2tlVGFnQ29uc3RhbnQ8YT4ge307CisKK3Rl
bXBsYXRlIDxJbnZva2VUYWcuLi4gVGFncz4KK3N0cnVjdCBDdXN0b21IYXNoVHlwZSB7CisgIHNp
emVfdCB2YWx1ZTsKK307CisKK3RlbXBsYXRlIDxJbnZva2VUYWcgYWxsb3dlZCwgSW52b2tlVGFn
Li4uIHRhZ3M+CitzdHJ1Y3QgRW5hYmxlSWZDb250YWluZWQKKyAgICA6IHN0ZDo6ZW5hYmxlX2lm
PGFic2w6OmRpc2p1bmN0aW9uPAorICAgICAgICAgIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9v
bCwgYWxsb3dlZCA9PSB0YWdzPi4uLj46OnZhbHVlPiB7fTsKKwordGVtcGxhdGUgPAorICAgIHR5
cGVuYW1lIEgsIEludm9rZVRhZy4uLiBUYWdzLAorICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgRW5h
YmxlSWZDb250YWluZWQ8SW52b2tlVGFnOjprSGFzaFZhbHVlLCBUYWdzLi4uPjo6dHlwZT4KK0gg
QWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBDdXN0b21IYXNoVHlwZTxUYWdzLi4uPiB0KSB7CisgIHN0
YXRpY19hc3NlcnQoTWluVGFnPFRhZ3MuLi4+Ojp2YWx1ZSA9PSBJbnZva2VUYWc6OmtIYXNoVmFs
dWUsICIiKTsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwKKyAgICAgICAg
ICAgICAgICAgICAgdC52YWx1ZSArIHN0YXRpY19jYXN0PGludD4oSW52b2tlVGFnOjprSGFzaFZh
bHVlKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3Bh
Y2UgaGFzaF9pbnRlcm5hbCB7Cit0ZW1wbGF0ZSA8SW52b2tlVGFnLi4uIFRhZ3M+CitzdHJ1Y3Qg
aXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8CisgICAgQ3VzdG9tSGFzaFR5cGU8VGFncy4uLj4sCisg
ICAgdHlwZW5hbWUgRW5hYmxlSWZDb250YWluZWQ8SW52b2tlVGFnOjprVW5pcXVlbHlSZXByZXNl
bnRlZCwgVGFncy4uLj46OnR5cGU+CisgICAgOiBzdGQ6OnRydWVfdHlwZSB7fTsKK30gIC8vIG5h
bWVzcGFjZSBoYXNoX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjaWYgQUJTTF9I
QVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCituYW1lc3BhY2UgQUJTTF9JTlRFUk5B
TF9MRUdBQ1lfSEFTSF9OQU1FU1BBQ0UgewordGVtcGxhdGUgPEludm9rZVRhZy4uLiBUYWdzPgor
c3RydWN0IGhhc2g8Q3VzdG9tSGFzaFR5cGU8VGFncy4uLj4+IHsKKyAgdGVtcGxhdGUgPEludm9r
ZVRhZy4uLiBUYWdzSW4sIHR5cGVuYW1lID0gdHlwZW5hbWUgRW5hYmxlSWZDb250YWluZWQ8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52b2tlVGFnOjprTGVnYWN5SGFz
aCwgVGFnc0luLi4uPjo6dHlwZT4KKyAgc2l6ZV90IG9wZXJhdG9yKCkoQ3VzdG9tSGFzaFR5cGU8
VGFnc0luLi4uPiB0KSBjb25zdCB7CisgICAgc3RhdGljX2Fzc2VydChNaW5UYWc8VGFncy4uLj46
OnZhbHVlID09IEludm9rZVRhZzo6a0xlZ2FjeUhhc2gsICIiKTsKKyAgICByZXR1cm4gdC52YWx1
ZSArIHN0YXRpY19jYXN0PGludD4oSW52b2tlVGFnOjprTGVnYWN5SGFzaCk7CisgIH0KK307Cit9
ICAvLyBuYW1lc3BhY2UgQUJTTF9JTlRFUk5BTF9MRUdBQ1lfSEFTSF9OQU1FU1BBQ0UKKyNlbmRp
ZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCisKK25hbWVzcGFj
ZSBzdGQgewordGVtcGxhdGUgPEludm9rZVRhZy4uLiBUYWdzPiAgLy8gTk9MSU5UCitzdHJ1Y3Qg
aGFzaDxDdXN0b21IYXNoVHlwZTxUYWdzLi4uPj4geworICB0ZW1wbGF0ZSA8SW52b2tlVGFnLi4u
IFRhZ3NJbiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBFbmFibGVJZkNvbnRhaW5lZDwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZva2VUYWc6OmtTdGRIYXNoLCBUYWdzSW4u
Li4+Ojp0eXBlPgorICBzaXplX3Qgb3BlcmF0b3IoKShDdXN0b21IYXNoVHlwZTxUYWdzSW4uLi4+
IHQpIGNvbnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KE1pblRhZzxUYWdzLi4uPjo6dmFsdWUgPT0g
SW52b2tlVGFnOjprU3RkSGFzaCwgIiIpOworICAgIHJldHVybiB0LnZhbHVlICsgc3RhdGljX2Nh
c3Q8aW50PihJbnZva2VUYWc6OmtTdGRIYXNoKTsKKyAgfQorfTsKK30gIC8vIG5hbWVzcGFjZSBz
dGQKKworbmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQ+Cit2b2lkIFRlc3RD
dXN0b21IYXNoVHlwZShJbnZva2VUYWdDb25zdGFudDxJbnZva2VUYWc6OmtOb25lPiwgVC4uLikg
eworICB1c2luZyB0eXBlID0gQ3VzdG9tSGFzaFR5cGU8VDo6dmFsdWUuLi4+OworICBTQ09QRURf
VFJBQ0UodGVzdGluZzo6UHJpbnRUb1N0cmluZyhzdGQ6OnZlY3RvcjxJbnZva2VUYWc+e1Q6OnZh
bHVlLi4ufSkpOworICBFWFBFQ1RfVFJVRShpc19oYXNoYWJsZTx0eXBlPigpKTsKKyAgRVhQRUNU
X1RSVUUoaXNfaGFzaGFibGU8Y29uc3QgdHlwZT4oKSk7CisgIEVYUEVDVF9UUlVFKGlzX2hhc2hh
YmxlPGNvbnN0IHR5cGUmPigpKTsKKworICBjb25zdCBzaXplX3Qgb2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8aW50PihzdGQ6Om1pbih7VDo6dmFsdWUuLi59KSk7CisgIEVYUEVDVF9FUShTcHlIYXNoKHR5
cGV7N30pLCBTcHlIYXNoKHNpemVfdHs3ICsgb2Zmc2V0fSkpOworfQorCit2b2lkIFRlc3RDdXN0
b21IYXNoVHlwZShJbnZva2VUYWdDb25zdGFudDxJbnZva2VUYWc6OmtOb25lPikgeworI2lmIEFC
U0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXworICAvLyBpc19oYXNoYWJsZSBpcyBmYWxzZSBp
ZiB3ZSBkb24ndCBzdXBwb3J0IGFueSBvZiB0aGUgaG9va3MuCisgIHVzaW5nIHR5cGUgPSBDdXN0
b21IYXNoVHlwZTw+OworICBFWFBFQ1RfRkFMU0UoaXNfaGFzaGFibGU8dHlwZT4oKSk7CisgIEVY
UEVDVF9GQUxTRShpc19oYXNoYWJsZTxjb25zdCB0eXBlPigpKTsKKyAgRVhQRUNUX0ZBTFNFKGlz
X2hhc2hhYmxlPGNvbnN0IHR5cGUmPigpKTsKKyNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFM
X0NBTl9QT0lTT05fCit9CisKK3RlbXBsYXRlIDxJbnZva2VUYWcgVGFnLCB0eXBlbmFtZS4uLiBU
Pgordm9pZCBUZXN0Q3VzdG9tSGFzaFR5cGUoSW52b2tlVGFnQ29uc3RhbnQ8VGFnPiB0YWcsIFQu
Li4gdCkgeworICBjb25zdGV4cHIgYXV0byBuZXh0ID0gc3RhdGljX2Nhc3Q8SW52b2tlVGFnPihz
dGF0aWNfY2FzdDxpbnQ+KFRhZykgKyAxKTsKKyAgVGVzdEN1c3RvbUhhc2hUeXBlKEludm9rZVRh
Z0NvbnN0YW50PG5leHQ+KCksIHRhZywgdC4uLik7CisgIFRlc3RDdXN0b21IYXNoVHlwZShJbnZv
a2VUYWdDb25zdGFudDxuZXh0PigpLCB0Li4uKTsKK30KKworVEVTVChIYXNoVGVzdCwgQ3VzdG9t
SGFzaFR5cGUpIHsKKyAgVGVzdEN1c3RvbUhhc2hUeXBlKEludm9rZVRhZ0NvbnN0YW50PEludm9r
ZVRhZ3t9PigpKTsKK30KKworVEVTVChIYXNoVGVzdCwgTm9PcHNBcmVFcXVpdmFsZW50KSB7Cisg
IEVYUEVDVF9FUShIYXNoPE5vT3A+KCkoe30pLCBIYXNoPE5vT3A+KCkoe30pKTsKKyAgRVhQRUNU
X0VRKEhhc2g8Tm9PcD4oKSh7fSksIEhhc2g8RW1wdHlDb21iaW5lPigpKHt9KSk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgSGFzaEludFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Cit9OworVFlQRURfVEVTVF9DQVNFX1AoSGFzaEludFRlc3QpOworCitUWVBFRF9URVNU
X1AoSGFzaEludFRlc3QsIEJhc2ljVXNhZ2UpIHsKKyAgRVhQRUNUX05FKEhhc2g8Tm9PcD4oKSh7
fSksIEhhc2g8VHlwZVBhcmFtPigpKDApKTsKKyAgRVhQRUNUX05FKEhhc2g8Tm9PcD4oKSh7fSks
CisgICAgICAgICAgICBIYXNoPFR5cGVQYXJhbT4oKShzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQ
YXJhbT46Om1heCgpKSk7CisgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVQYXJhbT46Om1p
bigpICE9IDApIHsKKyAgICBFWFBFQ1RfTkUoSGFzaDxOb09wPigpKHt9KSwKKyAgICAgICAgICAg
ICAgSGFzaDxUeXBlUGFyYW0+KCkoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4o
KSkpOworICB9CisKKyAgRVhQRUNUX0VRKEhhc2g8Q29tYmluZUl0ZXJhdGl2ZTxUeXBlUGFyYW0+
PigpKHt9KSwKKyAgICAgICAgICAgIEhhc2g8Q29tYmluZVZhcmlhZGljPFR5cGVQYXJhbT4+KCko
e30pKTsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoSGFzaEludFRlc3QsIEJhc2lj
VXNhZ2UpOwordXNpbmcgSW50VHlwZXMgPSB0ZXN0aW5nOjpUeXBlczx1bnNpZ25lZCBjaGFyLCBj
aGFyLCBpbnQsIGludDMyX3QsIGludDY0X3QsIHVpbnQzMl90LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50NjRfdCwgc2l6ZV90PjsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1Rf
Q0FTRV9QKE15LCBIYXNoSW50VGVzdCwgSW50VHlwZXMpOworCitzdHJ1Y3QgU3RydWN0V2l0aFBh
ZGRpbmcgeworICBjaGFyIGM7CisgIGludCBpOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgor
ICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgY29uc3QgU3RydWN0V2l0aFBh
ZGRpbmcmIHMpIHsKKyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSks
IHMuYywgcy5pKTsKKyAgfQorfTsKKworc3RhdGljX2Fzc2VydChzaXplb2YoU3RydWN0V2l0aFBh
ZGRpbmcpID4gc2l6ZW9mKGNoYXIpICsgc2l6ZW9mKGludCksCisgICAgICAgICAgICAgICJTdHJ1
Y3RXaXRoUGFkZGluZyBkb2Vzbid0IGhhdmUgcGFkZGluZyIpOworc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3N0YW5kYXJkX2xheW91dDxTdHJ1Y3RXaXRoUGFkZGluZz46OnZhbHVlLCAiIik7CisKKy8v
IFRoaXMgY2hlY2sgaGFzIHRvIGJlIGRpc2FibGVkIGJlY2F1c2UgbGlic3RkYysrIGRvZXNuJ3Qg
c3VwcG9ydCBpdC4KKy8vIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfY29uc3RydWN0
aWJsZTxTdHJ1Y3RXaXRoUGFkZGluZz46OnZhbHVlLCAiIik7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorc3RydWN0IEFycmF5U2xpY2UgeworICBUKiBiZWdpbjsKKyAgVCogZW5kOworCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0
ZSwgY29uc3QgQXJyYXlTbGljZSYgc2xpY2UpIHsKKyAgICBmb3IgKGF1dG8gdCA9IHNsaWNlLmJl
Z2luOyB0ICE9IHNsaWNlLmVuZDsgKyt0KSB7CisgICAgICBoYXNoX3N0YXRlID0gSDo6Y29tYmlu
ZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksICp0KTsKKyAgICB9CisgICAgcmV0dXJuIGhhc2hfc3Rh
dGU7CisgIH0KK307CisKK1RFU1QoSGFzaFRlc3QsIEhhc2hOb25VbmlxdWVseVJlcHJlc2VudGVk
VHlwZSkgeworICAvLyBDcmVhdGUgZXF1YWwgU3RydWN0V2l0aFBhZGRpbmcgb2JqZWN0cyB0aGF0
IGFyZSBrbm93biB0byBoYXZlIG5vbi1lcXVhbAorICAvLyBwYWRkaW5nIGJ5dGVzLgorICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGtOdW1TdHJ1Y3RzID0gMTA7CisgIHVuc2lnbmVkIGNoYXIgYnVmZmVy
MVtrTnVtU3RydWN0cyAqIHNpemVvZihTdHJ1Y3RXaXRoUGFkZGluZyldOworICBzdGQ6Om1lbXNl
dChidWZmZXIxLCAwLCBzaXplb2YoYnVmZmVyMSkpOworICBhdXRvKiBzMSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8U3RydWN0V2l0aFBhZGRpbmcqPihidWZmZXIxKTsKKworICB1bnNpZ25lZCBjaGFyIGJ1
ZmZlcjJba051bVN0cnVjdHMgKiBzaXplb2YoU3RydWN0V2l0aFBhZGRpbmcpXTsKKyAgc3RkOjpt
ZW1zZXQoYnVmZmVyMiwgMjU1LCBzaXplb2YoYnVmZmVyMikpOworICBhdXRvKiBzMiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8U3RydWN0V2l0aFBhZGRpbmcqPihidWZmZXIyKTsKKyAgZm9yIChpbnQgaSA9
IDA7IGkgPCBrTnVtU3RydWN0czsgKytpKSB7CisgICAgU0NPUEVEX1RSQUNFKGkpOworICAgIHMx
W2ldLmMgPSBzMltpXS5jID0gJzAnICsgaTsKKyAgICBzMVtpXS5pID0gczJbaV0uaSA9IGk7Cisg
ICAgQVNTRVJUX0ZBTFNFKG1lbWNtcChidWZmZXIxICsgaSAqIHNpemVvZihTdHJ1Y3RXaXRoUGFk
ZGluZyksCisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIyICsgaSAqIHNpemVvZihTdHJ1
Y3RXaXRoUGFkZGluZyksCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoU3RydWN0V2l0
aFBhZGRpbmcpKSA9PSAwKQorICAgICAgICA8PCAiQnVnIGluIHRlc3QgY29kZTogb2JqZWN0cyBk
byBub3QgaGF2ZSB1bmVxdWFsIgorICAgICAgICA8PCAiIG9iamVjdCByZXByZXNlbnRhdGlvbnMi
OworICB9CisKKyAgRVhQRUNUX0VRKEhhc2g8U3RydWN0V2l0aFBhZGRpbmc+KCkoczFbMF0pLCBI
YXNoPFN0cnVjdFdpdGhQYWRkaW5nPigpKHMyWzBdKSk7CisgIEVYUEVDVF9FUShIYXNoPEFycmF5
U2xpY2U8U3RydWN0V2l0aFBhZGRpbmc+PigpKHtzMSwgczEgKyBrTnVtU3RydWN0c30pLAorICAg
ICAgICAgICAgSGFzaDxBcnJheVNsaWNlPFN0cnVjdFdpdGhQYWRkaW5nPj4oKSh7czIsIHMyICsg
a051bVN0cnVjdHN9KSk7Cit9CisKK1RFU1QoSGFzaFRlc3QsIFN0YW5kYXJkSGFzaENvbnRhaW5l
clVzYWdlKSB7CisgIHN0ZDo6dW5vcmRlcmVkX21hcDxpbnQsIHN0ZDo6c3RyaW5nLCBIYXNoPGlu
dD4+IG1hcCA9IHt7MCwgImZvbyJ9LCB7IDQyLCAiYmFyIiB9fTsKKworICBFWFBFQ1RfTkUobWFw
LmZpbmQoMCksIG1hcC5lbmQoKSk7CisgIEVYUEVDVF9FUShtYXAuZmluZCgxKSwgbWFwLmVuZCgp
KTsKKyAgRVhQRUNUX05FKG1hcC5maW5kKDB1KSwgbWFwLmVuZCgpKTsKK30KKworc3RydWN0IENv
bnZlcnRpYmxlRnJvbU5vT3AgeworICBDb252ZXJ0aWJsZUZyb21Ob09wKE5vT3ApIHt9ICAvLyBO
T0xJTlQocnVudGltZS9leHBsaWNpdCkKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJp
ZW5kIEggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIENvbnZlcnRpYmxlRnJvbU5vT3ApIHsK
KyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIDEpOworICB9Cit9
OworCitURVNUKEhhc2hUZXN0LCBIZXRlcm9nZW5lb3VzQ2FsbCkgeworICBFWFBFQ1RfTkUoSGFz
aDxDb252ZXJ0aWJsZUZyb21Ob09wPigpKE5vT3AoKSksCisgICAgICAgICAgICBIYXNoPE5vT3A+
KCkoTm9PcCgpKSk7Cit9CisKK1RFU1QoSXNVbmlxdWVseVJlcHJlc2VudGVkVGVzdCwgU2FuaXR5
VGVzdCkgeworICB1c2luZyBhYnNsOjpoYXNoX2ludGVybmFsOjppc191bmlxdWVseV9yZXByZXNl
bnRlZDsKKworICBFWFBFQ1RfVFJVRShpc191bmlxdWVseV9yZXByZXNlbnRlZDx1bnNpZ25lZCBj
aGFyPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShpc191bmlxdWVseV9yZXByZXNlbnRlZDxpbnQ+
Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShpc191bmlxdWVseV9yZXByZXNlbnRlZDxib29sPjo6
dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8aW50Kj46OnZh
bHVlKTsKK30KKworc3RydWN0IEludEFuZFN0cmluZyB7CisgIGludCBpOworICBzdGQ6OnN0cmlu
ZyBzOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVl
KEggaGFzaF9zdGF0ZSwgSW50QW5kU3RyaW5nIGludF9hbmRfc3RyaW5nKSB7CisgICAgcmV0dXJu
IEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBpbnRfYW5kX3N0cmluZy5zLAorICAg
ICAgICAgICAgICAgICAgICAgIGludF9hbmRfc3RyaW5nLmkpOworICB9Cit9OworCitURVNUKEhh
c2hUZXN0LCBTbWFsbFZhbHVlT242NEJ5dGVCb3VuZGFyeSkgeworICBIYXNoPEludEFuZFN0cmlu
Zz4oKShJbnRBbmRTdHJpbmd7MCwgc3RkOjpzdHJpbmcoNjMsICcwJyl9KTsKK30KKworc3RydWN0
IFR5cGVFcmFzZWQgeworICBzaXplX3QgbjsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAg
ZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIGNvbnN0IFR5cGVFcmFzZWQmIHYp
IHsKKyAgICB2Lkhhc2hWYWx1ZShhYnNsOjpIYXNoU3RhdGU6OkNyZWF0ZSgmaGFzaF9zdGF0ZSkp
OworICAgIHJldHVybiBoYXNoX3N0YXRlOworICB9CisKKyAgdm9pZCBIYXNoVmFsdWUoYWJzbDo6
SGFzaFN0YXRlIHN0YXRlKSBjb25zdCB7CisgICAgYWJzbDo6SGFzaFN0YXRlOjpjb21iaW5lKHN0
ZDo6bW92ZShzdGF0ZSksIG4pOworICB9Cit9OworCitURVNUKEhhc2hUZXN0LCBUeXBlRXJhc2Vk
KSB7CisgIEVYUEVDVF9UUlVFKChpc19oYXNoYWJsZTxUeXBlRXJhc2VkPjo6dmFsdWUpKTsKKyAg
RVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPHN0ZDo6cGFpcjxUeXBlRXJhc2VkLCBpbnQ+Pjo6dmFs
dWUpKTsKKworICBFWFBFQ1RfRVEoU3B5SGFzaChUeXBlRXJhc2Vkezd9KSwgU3B5SGFzaChzaXpl
X3R7N30pKTsKKyAgRVhQRUNUX05FKFNweUhhc2goVHlwZUVyYXNlZHs3fSksIFNweUhhc2goc2l6
ZV90ezEzfSkpOworCisgIEVYUEVDVF9FUShTcHlIYXNoKHN0ZDo6bWFrZV9wYWlyKFR5cGVFcmFz
ZWR7N30sIDE3KSksCisgICAgICAgICAgICBTcHlIYXNoKHN0ZDo6bWFrZV9wYWlyKHNpemVfdHs3
fSwgMTcpKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9o
YXNoX3Rlc3RpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWUz
Y2RhNjQ0NjdkZmFiMGVlMTY2MWMwNzVmNjNjMDZiYzIxODAwZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgKQEAgLTAsMCArMSwzNzIgQEAKKy8vIENvcHlyaWdo
dCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9IQVNIX0hBU0hfVEVT
VElOR19IXworI2RlZmluZSBBQlNMX0hBU0hfSEFTSF9URVNUSU5HX0hfCisKKyNpbmNsdWRlIDxp
bml0aWFsaXplcl9saXN0PgorI2luY2x1ZGUgPHR1cGxlPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2hhc2gvaW50ZXJuYWwvc3B5X2hhc2hf
c3RhdGUuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvdmFyaWFudC5oIgor
CituYW1lc3BhY2UgYWJzbCB7CisKKy8vIFJ1biB0aGUgYWJzbDo6SGFzaCBhbGdvcml0aG0gb3Zl
ciBhbGwgdGhlIGVsZW1lbnRzIHBhc3NlZCBpbiBhbmQgdmVyaWZ5IHRoYXQKKy8vIHRoZWlyIGhh
c2ggZXhwYW5zaW9uIGlzIGNvbmdydWVudCB3aXRoIHRoZWlyIGA9PWAgb3BlcmF0b3IuCisvLwor
Ly8gSXQgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIEVYUEVDVF9UUlVFLiBGYWlsdXJlcyB3
aWxsIG91dHB1dCBpbmZvcm1hdGlvbgorLy8gb24gd2hhdCByZXF1aXJlbWVudCBmYWlsZWQgYW5k
IG9uIHdoaWNoIG9iamVjdHMuCisvLworLy8gVXNlcnMgc2hvdWxkIHBhc3MgYSBjb2xsZWN0aW9u
IG9mIHR5cGVzIGFzIGVpdGhlciBhbiBpbml0aWFsaXplciBsaXN0IG9yIGEKKy8vIGNvbnRhaW5l
ciBvZiBjYXNlcy4KKy8vCisvLyAgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1l
bnRzQWJzbEhhc2hDb3JyZWN0bHkoCisvLyAgICAgICB7djEsIHYyLCAuLi4sIHZOfSkpOworLy8K
Ky8vICAgc3RkOjp2ZWN0b3I8TXlUeXBlPiBjYXNlczsKKy8vICAgLy8gRmlsbCBjYXNlcy4uLgor
Ly8gICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVj
dGx5KGNhc2VzKSk7CisvLworLy8gVXNlcnMgY2FuIHBhc3MgYSB2YXJpZXR5IG9mIHR5cGVzIGZv
ciB0ZXN0aW5nIGhldGVyb2dlbmVvdXMgbG9va3VwIHdpdGgKKy8vIGBzdGQ6Om1ha2VfdHVwbGVg
OgorLy8KKy8vICAgRVhQRUNUX1RSVUUoYWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFz
aENvcnJlY3RseSgKKy8vICAgICAgIHN0ZDo6bWFrZV90dXBsZSh2MSwgdjIsIC4uLiwgdk4pKSk7
CisvLworLy8KKy8vIElkZWFsbHksIHRoZSB2YWx1ZXMgcGFzc2VkIHNob3VsZCBwcm92aWRlIGVu
b3VnaCBjb3ZlcmFnZSBvZiB0aGUgYD09YAorLy8gb3BlcmF0b3IgYW5kIHRoZSBBYnNsSGFzaFZh
bHVlIGltcGxlbWVudGF0aW9ucy4KKy8vIEZvciBkeW5hbWljYWxseSBzaXplZCB0eXBlcywgdGhl
IGVtcHR5IHN0YXRlIHNob3VsZCB1c3VhbGx5IGJlIGluY2x1ZGVkIGluCisvLyB0aGUgdmFsdWVz
LgorLy8KKy8vIFRoZSBmdW5jdGlvbiBhY2NlcHRzIGFuIG9wdGlvbmFsIGNvbXBhcmF0b3IgZnVu
Y3Rpb24sIGluIGNhc2UgdGhhdCBgPT1gIGlzCisvLyBub3QgZW5vdWdoIGZvciB0aGUgdmFsdWVz
IHByb3ZpZGVkLgorLy8KKy8vIFVzYWdlOgorLy8KKy8vICAgRVhQRUNUX1RSVUUoYWJzbDo6VmVy
aWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKy8vICAgICAgIHN0ZDo6bWFrZV90
dXBsZSh2MSwgdjIsIC4uLiwgdk4pLCBNeUN1c3RvbUVxe30pKTsKKy8vCisvLyBJdCBjaGVja3Mg
dGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHM6CisvLyAgIDEuIFRoZSBleHBhbnNpb24gZm9yIGEg
dmFsdWUgaXMgZGV0ZXJtaW5pc3RpYy4KKy8vICAgMi4gRm9yIGFueSB0d28gb2JqZWN0cyBgYWAg
YW5kIGBiYCBpbiB0aGUgc2VxdWVuY2UsIGlmIGBhID09IGJgIGV2YWx1YXRlcworLy8gICAgICB0
byB0cnVlLCB0aGVuIHRoZWlyIGhhc2ggZXhwYW5zaW9uIG11c3QgYmUgZXF1YWwuCisvLyAgIDMu
IElmIGBhID09IGJgIGV2YWx1YXRlcyB0byBmYWxzZSB0aGVpciBoYXNoIGV4cGFuc2lvbiBtdXN0
IGJlIHVuZXF1YWwuCisvLyAgIDQuIElmIGBhID09IGJgIGV2YWx1YXRlcyB0byBmYWxzZSBuZWl0
aGVyIGhhc2ggZXhwYW5zaW9uIGNhbiBiZSBhCisvLyAgICAgIHN1ZmZpeCBvZiB0aGUgb3RoZXIu
CisvLyAgIDUuIEFic2xIYXNoVmFsdWUgb3ZlcmxvYWRzIHNob3VsZCBub3QgYmUgY2FsbGVkIGJ5
IHRoZSB1c2VyLiBUaGV5IGFyZSBvbmx5CisvLyAgICAgIG1lYW50IHRvIGJlIGNhbGxlZCBieSB0
aGUgZnJhbWV3b3JrLiBVc2VycyBzaG91bGQgY2FsbCBIOjpjb21iaW5lKCkgYW5kCisvLyAgICAg
IEg6OmNvbWJpbmVfY29udGlndW91cygpLgorLy8gICA2LiBObyBtb3ZlZC1mcm9tIGluc3RhbmNl
IG9mIHRoZSBoYXNoIHN0YXRlIGlzIHVzZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uCisvLyAgICAg
IG9mIEFic2xIYXNoVmFsdWUuCisvLworLy8gVGhlIHZhbHVlcyBkbyBub3QgaGF2ZSB0byBoYXZl
IHRoZSBzYW1lIHR5cGUuIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IKKy8vIGVxdWl2YWxlbnQgdHlw
ZXMgdGhhdCBzdXBwb3J0IGhldGVyb2dlbmVvdXMgbG9va3VwLgorLy8KKy8vIEEgcG9zc2libGUg
cmVhc29uIGZvciBicmVha2luZyAoMikgaXMgY29tYmluaW5nIHN0YXRlIGluIHRoZSBoYXNoIGV4
cGFuc2lvbgorLy8gdGhhdCB3YXMgbm90IHVzZWQgaW4gYD09YC4KKy8vIEZvciBleGFtcGxlOgor
Ly8KKy8vIHN0cnVjdCBCYWQyIHsKKy8vICAgaW50IGEsIGI7CisvLyAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBIPgorLy8gICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggc3RhdGUsIEJhZDIgeCkgewor
Ly8gICAgIC8vIFVzZXMgYSBhbmQgYi4KKy8vICAgICByZXR1cm4gSDo6Y29tYmluZSh4LmEsIHgu
Yik7CisvLyAgIH0KKy8vICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShCYWQyIHgsIEJhZDIgeSkg
eworLy8gICAgIC8vIE9ubHkgdXNlcyBhLgorLy8gICAgIHJldHVybiB4LmEgPT0geS5hOworLy8g
ICB9CisvLyB9OworLy8KKy8vIEFzIGZvciAoMyksIGJyZWFraW5nIHRoaXMgdXN1YWxseSBtZWFu
cyB0aGF0IHRoZXJlIGlzIHN0YXRlIGJlaW5nIHBhc3NlZCB0bworLy8gdGhlIGA9PWAgb3BlcmF0
b3IgdGhhdCBpcyBub3QgdXNlZCBpbiB0aGUgaGFzaCBleHBhbnNpb24uCisvLyBGb3IgZXhhbXBs
ZToKKy8vCisvLyBzdHJ1Y3QgQmFkMyB7CisvLyAgIGludCBhLCBiOworLy8gICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSD4KKy8vICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBCYWQzIHgp
IHsKKy8vICAgICAvLyBPbmx5IHVzZXMgYS4KKy8vICAgICByZXR1cm4gSDo6Y29tYmluZSh4LmEp
OworLy8gICB9CisvLyAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oQmFkMyB4LCBCYWQzIHkpIHsK
Ky8vICAgICAvLyBVc2VzIGEgYW5kIGIuCisvLyAgICAgcmV0dXJuIHguYSA9PSB5LmEgJiYgeC5i
ID09IHkuYjsKKy8vICAgfQorLy8gfTsKKy8vCisvLyBGaW5hbGx5LCBhIGNvbW1vbiB3YXkgdG8g
YnJlYWsgNCBpcyBieSBjb21iaW5pbmcgZHluYW1pYyByYW5nZXMgd2l0aG91dAorLy8gY29tYmlu
aW5nIHRoZSBzaXplIG9mIHRoZSByYW5nZS4KKy8vIEZvciBleGFtcGxlOgorLy8KKy8vIHN0cnVj
dCBCYWQ0IHsKKy8vICAgaW50ICpwLCBzaXplOworLy8gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4K
Ky8vICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBCYWQ0IHgpIHsKKy8vICAgICBy
ZXR1cm4gSDo6Y29tYmluZV9yYW5nZSh4LnAsIHgucCArIHguc2l6ZSk7CisvLyAgIH0KKy8vICAg
ZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShCYWQ0IHgsIEJhZDQgeSkgeworLy8gICAgIHJldHVybiBz
dGQ6OmVxdWFsKHgucCwgeC5wICsgeC5zaXplLCB5LnAsIHkucCArIHkuc2l6ZSk7CisvLyAgIH0K
Ky8vIH07CisvLworLy8gQW4gZWFzeSBzb2x1dGlvbiB0byB0aGlzIGlzIHRvIGNvbWJpbmUgdGhl
IHNpemUgYWZ0ZXIgY29tYmluaW5nIHRoZSByYW5nZSwKKy8vIGxpa2Ugc286CisvLyAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBIPgorLy8gICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggc3RhdGUsIEJh
ZDQgeCkgeworLy8gICAgIHJldHVybiBIOjpjb21iaW5lKEg6OmNvbWJpbmVfcmFuZ2UoeC5wLCB4
LnAgKyB4LnNpemUpLCB4LnNpemUpOworLy8gICB9CisvLwordGVtcGxhdGUgPGludCYuLi4gRXhw
bGljaXRCYXJyaWVyLCB0eXBlbmFtZSBDb250YWluZXI+CitBQlNMX01VU1RfVVNFX1JFU1VMVCB0
ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQKK1ZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3Jy
ZWN0bHkoY29uc3QgQ29udGFpbmVyJiB2YWx1ZXMpOworCit0ZW1wbGF0ZSA8aW50Ji4uLiBFeHBs
aWNpdEJhcnJpZXIsIHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgRXE+CitBQlNMX01VU1Rf
VVNFX1JFU1VMVCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQKK1ZlcmlmeVR5cGVJbXBsZW1lbnRz
QWJzbEhhc2hDb3JyZWN0bHkoY29uc3QgQ29udGFpbmVyJiB2YWx1ZXMsIEVxIGVxdWFscyk7CisK
K3RlbXBsYXRlIDxpbnQmLi4uLCB0eXBlbmFtZSBUPgorQUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVj
dGx5KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1ZXMpOworCit0ZW1wbGF0ZSA8aW50Ji4u
LiwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXE+CitBQlNMX01VU1RfVVNFX1JFU1VMVCB0ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHQKK1ZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHko
c3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRXEgZXF1YWxzKTsKKworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgewor
CitzdHJ1Y3QgUHJpbnRWaXNpdG9yIHsKKyAgc2l6ZV90IGluZGV4OworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyAgc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25zdCBUKiB2YWx1ZSkgY29uc3Qg
eworICAgIHJldHVybiBhYnNsOjpTdHJDYXQoIiMiLCBpbmRleCwgIigiLCB0ZXN0aW5nOjpQcmlu
dFRvU3RyaW5nKCp2YWx1ZSksICIpIik7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBF
cT4KK3N0cnVjdCBFcVZpc2l0b3IgeworICBFcSBlcTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUKiB0LCBjb25zdCBVKiB1KSBj
b25zdCB7CisgICAgcmV0dXJuIGVxKCp0LCAqdSk7CisgIH0KK307CisKK3N0cnVjdCBFeHBhbmRW
aXNpdG9yIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIFNweUhhc2hTdGF0ZSBvcGVyYXRv
cigpKGNvbnN0IFQqIHZhbHVlKSBjb25zdCB7CisgICAgcmV0dXJuIFNweUhhc2hTdGF0ZTo6Y29t
YmluZShTcHlIYXNoU3RhdGUoKSwgKnZhbHVlKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIENvbnRhaW5lciwgdHlwZW5hbWUgRXE+CitBQlNMX01VU1RfVVNFX1JFU1VMVCB0ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHQKK1ZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHko
Y29uc3QgQ29udGFpbmVyJiB2YWx1ZXMsIEVxIGVxdWFscykgeworICB1c2luZyBWID0gdHlwZW5h
bWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlOworCisgIHN0cnVjdCBJbmZvIHsKKyAgICBjb25zdCBW
JiB2YWx1ZTsKKyAgICBzaXplX3QgaW5kZXg7CisgICAgc3RkOjpzdHJpbmcgVG9TdHJpbmcoKSBj
b25zdCB7IHJldHVybiBhYnNsOjp2aXNpdChQcmludFZpc2l0b3J7aW5kZXh9LCB2YWx1ZSk7IH0K
KyAgICBTcHlIYXNoU3RhdGUgZXhwYW5kKCkgY29uc3QgeyByZXR1cm4gYWJzbDo6dmlzaXQoRXhw
YW5kVmlzaXRvcnt9LCB2YWx1ZSk7IH0KKyAgfTsKKworICB1c2luZyBFcUNsYXNzID0gc3RkOjp2
ZWN0b3I8SW5mbz47CisgIHN0ZDo6dmVjdG9yPEVxQ2xhc3M+IGNsYXNzZXM7CisKKyAgLy8gR2F0
aGVyIHRoZSB2YWx1ZXMgaW4gZXF1aXZhbGVuY2UgY2xhc3Nlcy4KKyAgc2l6ZV90IGkgPSAwOwor
ICBmb3IgKGNvbnN0IGF1dG8mIHZhbHVlIDogdmFsdWVzKSB7CisgICAgRXFDbGFzcyogYyA9IG51
bGxwdHI7CisgICAgZm9yIChhdXRvJiBlcWNsYXNzIDogY2xhc3NlcykgeworICAgICAgaWYgKGFi
c2w6OnZpc2l0KEVxVmlzaXRvcjxFcT57ZXF1YWxzfSwgdmFsdWUsIGVxY2xhc3NbMF0udmFsdWUp
KSB7CisgICAgICAgIGMgPSAmZXFjbGFzczsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAg
fQorICAgIGlmIChjID09IG51bGxwdHIpIHsKKyAgICAgIGNsYXNzZXMuZW1wbGFjZV9iYWNrKCk7
CisgICAgICBjID0gJmNsYXNzZXMuYmFjaygpOworICAgIH0KKyAgICBjLT5wdXNoX2JhY2soe3Zh
bHVlLCBpfSk7CisgICAgKytpOworCisgICAgLy8gVmVyaWZ5IHBvdGVudGlhbCBlcnJvcnMgY2Fw
dHVyZWQgYnkgU3B5SGFzaFN0YXRlLgorICAgIGlmIChhdXRvIGVycm9yID0gYy0+YmFjaygpLmV4
cGFuZCgpLmVycm9yKCkpIHsKKyAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJl
KCkgPDwgKmVycm9yOworICAgIH0KKyAgfQorCisgIGlmIChjbGFzc2VzLnNpemUoKSA8IDIpIHsK
KyAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICAgICAgIDw8ICJB
dCBsZWFzdCB0d28gZXF1aXZhbGVuY2UgY2xhc3NlcyBhcmUgZXhwZWN0ZWQuIjsKKyAgfQorCisg
IC8vIFdlIGFzc3VtZSB0aGF0IGVxdWFsaXR5IGlzIGNvcnJlY3RseSBpbXBsZW1lbnRlZC4KKyAg
Ly8gTm93IHdlIHZlcmlmeSB0aGF0IEFic2xIYXNoVmFsdWUgaXMgYWxzbyBjb3JyZWN0bHkgaW1w
bGVtZW50ZWQuCisKKyAgZm9yIChjb25zdCBhdXRvJiBjIDogY2xhc3NlcykgeworICAgIC8vIEFs
bCBlbGVtZW50cyBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3MgbXVzdCBoYXZlIHRoZSBzYW1lIGhh
c2ggZXhwYW5zaW9uLgorICAgIGNvbnN0IFNweUhhc2hTdGF0ZSBleHBlY3RlZCA9IGNbMF0uZXhw
YW5kKCk7CisgICAgZm9yIChjb25zdCBJbmZvJiB2IDogYykgeworICAgICAgaWYgKHYuZXhwYW5k
KCkgIT0gdi5leHBhbmQoKSkgeworICAgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFp
bHVyZSgpCisgICAgICAgICAgICAgICA8PCAiSGFzaCBleHBhbnNpb24gZm9yICIgPDwgdi5Ub1N0
cmluZygpCisgICAgICAgICAgICAgICA8PCAiIGlzIG5vbi1kZXRlcm1pbmlzdGljLiI7CisgICAg
ICB9CisgICAgICBpZiAodi5leHBhbmQoKSAhPSBleHBlY3RlZCkgeworICAgICAgICByZXR1cm4g
dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICAgICAgICAgICA8PCAiVmFsdWVzICIg
PDwgY1swXS5Ub1N0cmluZygpIDw8ICIgYW5kICIgPDwgdi5Ub1N0cmluZygpCisgICAgICAgICAg
ICAgICA8PCAiIGV2YWx1YXRlIGFzIGVxdWFsIGJ1dCBoYXZlIGFuIHVuZXF1YWwgaGFzaCBleHBh
bnNpb24uIjsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbGVtZW50cyBmcm9tIG90aGVyIGNs
YXNzZXMgbXVzdCBoYXZlIGRpZmZlcmVudCBoYXNoIGV4cGFuc2lvbi4KKyAgICBmb3IgKGNvbnN0
IGF1dG8mIGMyIDogY2xhc3NlcykgeworICAgICAgaWYgKCZjID09ICZjMikgY29udGludWU7Cisg
ICAgICBjb25zdCBTcHlIYXNoU3RhdGUgYzJfaGFzaCA9IGMyWzBdLmV4cGFuZCgpOworICAgICAg
c3dpdGNoIChTcHlIYXNoU3RhdGU6OkNvbXBhcmUoZXhwZWN0ZWQsIGMyX2hhc2gpKSB7CisgICAg
ICAgIGNhc2UgU3B5SGFzaFN0YXRlOjpDb21wYXJlUmVzdWx0OjprRXF1YWw6CisgICAgICAgICAg
cmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgICAgICAgICAgICA8PCAi
VmFsdWVzICIgPDwgY1swXS5Ub1N0cmluZygpIDw8ICIgYW5kICIgPDwgYzJbMF0uVG9TdHJpbmco
KQorICAgICAgICAgICAgICAgICA8PCAiIGV2YWx1YXRlIGFzIHVuZXF1YWwgYnV0IGhhdmUgYW4g
ZXF1YWwgaGFzaCBleHBhbnNpb24uIjsKKyAgICAgICAgY2FzZSBTcHlIYXNoU3RhdGU6OkNvbXBh
cmVSZXN1bHQ6OmtCU3VmZml4QToKKyAgICAgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9u
RmFpbHVyZSgpCisgICAgICAgICAgICAgICAgIDw8ICJIYXNoIGV4cGFuc2lvbiBvZiAiIDw8IGMy
WzBdLlRvU3RyaW5nKCkKKyAgICAgICAgICAgICAgICAgPDwgIiBpcyBhIHN1ZmZpeCBvZiB0aGUg
aGFzaCBleHBhbnNpb24gb2YgIiA8PCBjWzBdLlRvU3RyaW5nKCkKKyAgICAgICAgICAgICAgICAg
PDwgIi4iOworICAgICAgICBjYXNlIFNweUhhc2hTdGF0ZTo6Q29tcGFyZVJlc3VsdDo6a0FTdWZm
aXhCOgorICAgICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAg
ICAgICAgICAgICAgPDwgIkhhc2ggZXhwYW5zaW9uIG9mICIgPDwgY1swXS5Ub1N0cmluZygpCisg
ICAgICAgICAgICAgICAgIDw8ICIgaXMgYSBzdWZmaXggb2YgdGhlIGhhc2ggZXhwYW5zaW9uIG9m
ICIgPDwgYzJbMF0uVG9TdHJpbmcoKQorICAgICAgICAgICAgICAgICA8PCAiLiI7CisgICAgICAg
IGNhc2UgU3B5SGFzaFN0YXRlOjpDb21wYXJlUmVzdWx0OjprVW5lcXVhbDoKKyAgICAgICAgICBi
cmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1
Y2Nlc3MoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQ+CitzdHJ1Y3QgVHlwZVNldCB7
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCBib29sID0gZGlzanVuY3Rpb248c3RkOjppc19zYW1l
PFQsIFU+Li4uPjo6dmFsdWU+CisgIHN0cnVjdCBJbnNlcnQgeworICAgIHVzaW5nIHR5cGUgPSBU
eXBlU2V0PFUsIFQuLi4+OworICB9OworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc3RydWN0
IEluc2VydDxVLCB0cnVlPiB7CisgICAgdXNpbmcgdHlwZSA9IFR5cGVTZXQ7CisgIH07CisKKyAg
dGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBlbmFtZS4uLj4gY2xhc3MgQz4KKyAgdXNpbmcgYXBwbHkg
PSBDPFQuLi4+OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQ+CitzdHJ1Y3QgTWFrZVR5
cGVTZXQgOiBUeXBlU2V0PD57fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBU
cz4KK3N0cnVjdCBNYWtlVHlwZVNldDxULCBUcy4uLj4gOiBNYWtlVHlwZVNldDxUcy4uLj46OnRl
bXBsYXRlIEluc2VydDxUPjo6dHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQ+Cit1
c2luZyBWYXJpYW50Rm9yVHlwZXMgPSB0eXBlbmFtZSBNYWtlVHlwZVNldDwKKyAgICBjb25zdCB0
eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlKi4uLj46OnRlbXBsYXRlIGFwcGx5PGFic2w6OnZh
cmlhbnQ+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgorc3RydWN0IENvbnRhaW5l
ckFzVmVjdG9yIHsKKyAgdXNpbmcgViA9IGFic2w6OnZhcmlhbnQ8Y29uc3QgdHlwZW5hbWUgQ29u
dGFpbmVyOjp2YWx1ZV90eXBlKj47CisgIHVzaW5nIE91dCA9IHN0ZDo6dmVjdG9yPFY+OworCisg
IHN0YXRpYyBPdXQgRG8oY29uc3QgQ29udGFpbmVyJiB2YWx1ZXMpIHsKKyAgICBPdXQgb3V0Owor
ICAgIGZvciAoY29uc3QgYXV0byYgdiA6IHZhbHVlcykgb3V0LnB1c2hfYmFjaygmdik7CisgICAg
cmV0dXJuIG91dDsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQ+CitzdHJ1Y3Qg
Q29udGFpbmVyQXNWZWN0b3I8c3RkOjp0dXBsZTxULi4uPj4geworICB1c2luZyBWID0gVmFyaWFu
dEZvclR5cGVzPFQuLi4+OworICB1c2luZyBPdXQgPSBzdGQ6OnZlY3RvcjxWPjsKKworICB0ZW1w
bGF0ZSA8c2l6ZV90Li4uIEk+CisgIHN0YXRpYyBPdXQgRG9JbXBsKGNvbnN0IHN0ZDo6dHVwbGU8
VC4uLj4mIHR1cGxlLCBhYnNsOjppbmRleF9zZXF1ZW5jZTxJLi4uPikgeworICAgIHJldHVybiBP
dXR7JnN0ZDo6Z2V0PEk+KHR1cGxlKS4uLn07CisgIH0KKworICBzdGF0aWMgT3V0IERvKGNvbnN0
IHN0ZDo6dHVwbGU8VC4uLj4mIHZhbHVlcykgeworICAgIHJldHVybiBEb0ltcGwodmFsdWVzLCBh
YnNsOjppbmRleF9zZXF1ZW5jZV9mb3I8VC4uLj4oKSk7CisgIH0KK307CisKK3RlbXBsYXRlIDw+
CitzdHJ1Y3QgQ29udGFpbmVyQXNWZWN0b3I8c3RkOjp0dXBsZTw+PiB7CisgIHN0YXRpYyBzdGQ6
OnZlY3RvcjxWYXJpYW50Rm9yVHlwZXM8aW50Pj4gRG8oc3RkOjp0dXBsZTw+KSB7IHJldHVybiB7
fTsgfQorfTsKKworc3RydWN0IERlZmF1bHRFcXVhbHMgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFQmIHQsIGNvbnN0IFUmIHUp
IGNvbnN0IHsKKyAgICByZXR1cm4gdCA9PSB1OworICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
aGFzaF9pbnRlcm5hbAorCit0ZW1wbGF0ZSA8aW50Ji4uLiwgdHlwZW5hbWUgQ29udGFpbmVyPgor
QUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBl
SW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KGNvbnN0IENvbnRhaW5lciYgdmFsdWVzKSB7Cisg
IHJldHVybiBoYXNoX2ludGVybmFsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVj
dGx5KAorICAgICAgaGFzaF9pbnRlcm5hbDo6Q29udGFpbmVyQXNWZWN0b3I8Q29udGFpbmVyPjo6
RG8odmFsdWVzKSwKKyAgICAgIGhhc2hfaW50ZXJuYWw6OkRlZmF1bHRFcXVhbHN7fSk7Cit9CisK
K3RlbXBsYXRlIDxpbnQmLi4uLCB0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIEVxPgorQUJT
TF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBlSW1w
bGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KGNvbnN0IENvbnRhaW5lciYgdmFsdWVzLCBFcSBlcXVh
bHMpIHsKKyAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhh
c2hDb3JyZWN0bHkoCisgICAgICBoYXNoX2ludGVybmFsOjpDb250YWluZXJBc1ZlY3RvcjxDb250
YWluZXI+OjpEbyh2YWx1ZXMpLAorICAgICAgZXF1YWxzKTsKK30KKwordGVtcGxhdGUgPGludCYu
Li4sIHR5cGVuYW1lIFQ+CitBQlNMX01VU1RfVVNFX1JFU1VMVCB0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQKK1ZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoc3RkOjppbml0aWFs
aXplcl9saXN0PFQ+IHZhbHVlcykgeworICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6VmVyaWZ5VHlw
ZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIGhhc2hfaW50ZXJuYWw6OkNvbnRh
aW5lckFzVmVjdG9yPHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPj46OkRvKHZhbHVlcyksCisgICAg
ICBoYXNoX2ludGVybmFsOjpEZWZhdWx0RXF1YWxze30pOworfQorCit0ZW1wbGF0ZSA8aW50Ji4u
LiwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXE+CitBQlNMX01VU1RfVVNFX1JFU1VMVCB0ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHQKK1ZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHko
c3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRXEgZXF1YWxzKSB7CisgIHJldHVybiBoYXNoX2ludGVybmFsOjpWZXJp
ZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAgICAgaGFzaF9pbnRlcm5hbDo6
Q29udGFpbmVyQXNWZWN0b3I8c3RkOjppbml0aWFsaXplcl9saXN0PFQ+Pjo6RG8odmFsdWVzKSwK
KyAgICAgIGVxdWFscyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8g
QUJTTF9IQVNIX0hBU0hfVEVTVElOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5h
bC9jaXR5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmNzJk
ZDFiN2QwYzlmNTM4ZDkxZDYyN2RmZjA2NjJlNGUwYzliMmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9oYXNoL2ludGVybmFsL2NpdHkuY2MKQEAgLTAsMCArMSw1OTAgQEAKKy8vIENvcHlyaWdo
dCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gVGhpcyBmaWxlIHByb3ZpZGVzIENp
dHlIYXNoNjQoKSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCisvLworLy8gSXQncyBwcm9iYWJseSBw
b3NzaWJsZSB0byBjcmVhdGUgZXZlbiBmYXN0ZXIgaGFzaCBmdW5jdGlvbnMgYnkKKy8vIHdyaXRp
bmcgYSBwcm9ncmFtIHRoYXQgc3lzdGVtYXRpY2FsbHkgZXhwbG9yZXMgc29tZSBvZiB0aGUgc3Bh
Y2Ugb2YKKy8vIHBvc3NpYmxlIGhhc2ggZnVuY3Rpb25zLCBieSB1c2luZyBTSU1EIGluc3RydWN0
aW9ucywgb3IgYnkKKy8vIGNvbXByb21pc2luZyBvbiBoYXNoIHF1YWxpdHkuCisKKyNpbmNsdWRl
ICJhYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBm
b3IgbWVtY3B5IGFuZCBtZW1zZXQKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKKyNpbmNsdWRlICJh
YnNsL2Jhc2UvY29uZmlnLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2VuZGlhbi5o
IgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC91bmFsaWduZWRfYWNjZXNzLmgiCisjaW5j
bHVkZSAiYWJzbC9iYXNlL29wdGltaXphdGlvbi5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1l
c3BhY2UgaGFzaF9pbnRlcm5hbCB7CisKKyNpZmRlZiBBQlNMX0lTX0JJR19FTkRJQU4KKyNkZWZp
bmUgdWludDMyX2luX2V4cGVjdGVkX29yZGVyKHgpIChhYnNsOjpnYnN3YXBfMzIoeCkpCisjZGVm
aW5lIHVpbnQ2NF9pbl9leHBlY3RlZF9vcmRlcih4KSAoYWJzbDo6Z2Jzd2FwXzY0KHgpKQorI2Vs
c2UKKyNkZWZpbmUgdWludDMyX2luX2V4cGVjdGVkX29yZGVyKHgpICh4KQorI2RlZmluZSB1aW50
NjRfaW5fZXhwZWN0ZWRfb3JkZXIoeCkgKHgpCisjZW5kaWYKKworc3RhdGljIHVpbnQ2NF90IEZl
dGNoNjQoY29uc3QgY2hhciAqcCkgeworICByZXR1cm4gdWludDY0X2luX2V4cGVjdGVkX29yZGVy
KEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQ2NChwKSk7Cit9CisKK3N0YXRpYyB1aW50MzJf
dCBGZXRjaDMyKGNvbnN0IGNoYXIgKnApIHsKKyAgcmV0dXJuIHVpbnQzMl9pbl9leHBlY3RlZF9v
cmRlcihBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMzIocCkpOworfQorCisvLyBTb21lIHBy
aW1lcyBiZXR3ZWVuIDJeNjMgYW5kIDJeNjQgZm9yIHZhcmlvdXMgdXNlcy4KK3N0YXRpYyBjb25z
dCB1aW50NjRfdCBrMCA9IDB4YzNhNWM4NWM5N2NiMzEyN1VMTDsKK3N0YXRpYyBjb25zdCB1aW50
NjRfdCBrMSA9IDB4YjQ5MmI2NmZiZTk4ZjI3M1VMTDsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBr
MiA9IDB4OWFlMTZhM2IyZjkwNDA0ZlVMTDsKKworLy8gTWFnaWMgbnVtYmVycyBmb3IgMzItYml0
IGhhc2hpbmcuICBDb3BpZWQgZnJvbSBNdXJtdXIzLgorc3RhdGljIGNvbnN0IHVpbnQzMl90IGMx
ID0gMHhjYzllMmQ1MTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBjMiA9IDB4MWI4NzM1OTM7CisK
Ky8vIEEgMzItYml0IHRvIDMyLWJpdCBpbnRlZ2VyIGhhc2ggY29waWVkIGZyb20gTXVybXVyMy4K
K3N0YXRpYyB1aW50MzJfdCBmbWl4KHVpbnQzMl90IGgpIHsKKyAgaCBePSBoID4+IDE2OworICBo
ICo9IDB4ODVlYmNhNmI7CisgIGggXj0gaCA+PiAxMzsKKyAgaCAqPSAweGMyYjJhZTM1OworICBo
IF49IGggPj4gMTY7CisgIHJldHVybiBoOworfQorCitzdGF0aWMgdWludDMyX3QgUm90YXRlMzIo
dWludDMyX3QgdmFsLCBpbnQgc2hpZnQpIHsKKyAgLy8gQXZvaWQgc2hpZnRpbmcgYnkgMzI6IGRv
aW5nIHNvIHlpZWxkcyBhbiB1bmRlZmluZWQgcmVzdWx0LgorICByZXR1cm4gc2hpZnQgPT0gMCA/
IHZhbCA6ICgodmFsID4+IHNoaWZ0KSB8ICh2YWwgPDwgKDMyIC0gc2hpZnQpKSk7Cit9CisKKyN1
bmRlZiBQRVJNVVRFMworI2RlZmluZSBQRVJNVVRFMyhhLCBiLCBjKSBcCisgIGRvIHsgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBzdGQ6OnN3YXAoYSwgYik7ICAgICAgXAorICAgIHN0ZDo6c3dh
cChhLCBjKTsgICAgICBcCisgIH0gd2hpbGUgKDApCisKK3N0YXRpYyB1aW50MzJfdCBNdXIodWlu
dDMyX3QgYSwgdWludDMyX3QgaCkgeworICAvLyBIZWxwZXIgZnJvbSBNdXJtdXIzIGZvciBjb21i
aW5pbmcgdHdvIDMyLWJpdCB2YWx1ZXMuCisgIGEgKj0gYzE7CisgIGEgPSBSb3RhdGUzMihhLCAx
Nyk7CisgIGEgKj0gYzI7CisgIGggXj0gYTsKKyAgaCA9IFJvdGF0ZTMyKGgsIDE5KTsKKyAgcmV0
dXJuIGggKiA1ICsgMHhlNjU0NmI2NDsKK30KKworc3RhdGljIHVpbnQzMl90IEhhc2gzMkxlbjEz
dG8yNChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7CisgIHVpbnQzMl90IGEgPSBGZXRjaDMy
KHMgLSA0ICsgKGxlbiA+PiAxKSk7CisgIHVpbnQzMl90IGIgPSBGZXRjaDMyKHMgKyA0KTsKKyAg
dWludDMyX3QgYyA9IEZldGNoMzIocyArIGxlbiAtIDgpOworICB1aW50MzJfdCBkID0gRmV0Y2gz
MihzICsgKGxlbiA+PiAxKSk7CisgIHVpbnQzMl90IGUgPSBGZXRjaDMyKHMpOworICB1aW50MzJf
dCBmID0gRmV0Y2gzMihzICsgbGVuIC0gNCk7CisgIHVpbnQzMl90IGggPSBsZW47CisKKyAgcmV0
dXJuIGZtaXgoTXVyKGYsIE11cihlLCBNdXIoZCwgTXVyKGMsIE11cihiLCBNdXIoYSwgaCkpKSkp
KSk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBIYXNoMzJMZW4wdG80KGNvbnN0IGNoYXIgKnMsIHNp
emVfdCBsZW4pIHsKKyAgdWludDMyX3QgYiA9IDA7CisgIHVpbnQzMl90IGMgPSA5OworICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgc2lnbmVkIGNoYXIgdiA9IHNbaV07
CisgICAgYiA9IGIgKiBjMSArIHY7CisgICAgYyBePSBiOworICB9CisgIHJldHVybiBmbWl4KE11
cihiLCBNdXIobGVuLCBjKSkpOworfQorCitzdGF0aWMgdWludDMyX3QgSGFzaDMyTGVuNXRvMTIo
Y29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikgeworICB1aW50MzJfdCBhID0gbGVuLCBiID0gbGVu
ICogNSwgYyA9IDksIGQgPSBiOworICBhICs9IEZldGNoMzIocyk7CisgIGIgKz0gRmV0Y2gzMihz
ICsgbGVuIC0gNCk7CisgIGMgKz0gRmV0Y2gzMihzICsgKChsZW4gPj4gMSkgJiA0KSk7CisgIHJl
dHVybiBmbWl4KE11cihjLCBNdXIoYiwgTXVyKGEsIGQpKSkpOworfQorCit1aW50MzJfdCBDaXR5
SGFzaDMyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pIHsKKyAgaWYgKGxlbiA8PSAyNCkgewor
ICAgIHJldHVybiBsZW4gPD0gMTIKKyAgICAgICAgICAgICAgID8gKGxlbiA8PSA0ID8gSGFzaDMy
TGVuMHRvNChzLCBsZW4pIDogSGFzaDMyTGVuNXRvMTIocywgbGVuKSkKKyAgICAgICAgICAgICAg
IDogSGFzaDMyTGVuMTN0bzI0KHMsIGxlbik7CisgIH0KKworICAvLyBsZW4gPiAyNAorICB1aW50
MzJfdCBoID0gbGVuLCBnID0gYzEgKiBsZW4sIGYgPSBnOworCisgIHVpbnQzMl90IGEwID0gUm90
YXRlMzIoRmV0Y2gzMihzICsgbGVuIC0gNCkgKiBjMSwgMTcpICogYzI7CisgIHVpbnQzMl90IGEx
ID0gUm90YXRlMzIoRmV0Y2gzMihzICsgbGVuIC0gOCkgKiBjMSwgMTcpICogYzI7CisgIHVpbnQz
Ml90IGEyID0gUm90YXRlMzIoRmV0Y2gzMihzICsgbGVuIC0gMTYpICogYzEsIDE3KSAqIGMyOwor
ICB1aW50MzJfdCBhMyA9IFJvdGF0ZTMyKEZldGNoMzIocyArIGxlbiAtIDEyKSAqIGMxLCAxNykg
KiBjMjsKKyAgdWludDMyX3QgYTQgPSBSb3RhdGUzMihGZXRjaDMyKHMgKyBsZW4gLSAyMCkgKiBj
MSwgMTcpICogYzI7CisgIGggXj0gYTA7CisgIGggPSBSb3RhdGUzMihoLCAxOSk7CisgIGggPSBo
ICogNSArIDB4ZTY1NDZiNjQ7CisgIGggXj0gYTI7CisgIGggPSBSb3RhdGUzMihoLCAxOSk7Cisg
IGggPSBoICogNSArIDB4ZTY1NDZiNjQ7CisgIGcgXj0gYTE7CisgIGcgPSBSb3RhdGUzMihnLCAx
OSk7CisgIGcgPSBnICogNSArIDB4ZTY1NDZiNjQ7CisgIGcgXj0gYTM7CisgIGcgPSBSb3RhdGUz
MihnLCAxOSk7CisgIGcgPSBnICogNSArIDB4ZTY1NDZiNjQ7CisgIGYgKz0gYTQ7CisgIGYgPSBS
b3RhdGUzMihmLCAxOSk7CisgIGYgPSBmICogNSArIDB4ZTY1NDZiNjQ7CisgIHNpemVfdCBpdGVy
cyA9IChsZW4gLSAxKSAvIDIwOworICBkbyB7CisgICAgdWludDMyX3QgYjAgPSBSb3RhdGUzMihG
ZXRjaDMyKHMpICogYzEsIDE3KSAqIGMyOworICAgIHVpbnQzMl90IGIxID0gRmV0Y2gzMihzICsg
NCk7CisgICAgdWludDMyX3QgYjIgPSBSb3RhdGUzMihGZXRjaDMyKHMgKyA4KSAqIGMxLCAxNykg
KiBjMjsKKyAgICB1aW50MzJfdCBiMyA9IFJvdGF0ZTMyKEZldGNoMzIocyArIDEyKSAqIGMxLCAx
NykgKiBjMjsKKyAgICB1aW50MzJfdCBiNCA9IEZldGNoMzIocyArIDE2KTsKKyAgICBoIF49IGIw
OworICAgIGggPSBSb3RhdGUzMihoLCAxOCk7CisgICAgaCA9IGggKiA1ICsgMHhlNjU0NmI2NDsK
KyAgICBmICs9IGIxOworICAgIGYgPSBSb3RhdGUzMihmLCAxOSk7CisgICAgZiA9IGYgKiBjMTsK
KyAgICBnICs9IGIyOworICAgIGcgPSBSb3RhdGUzMihnLCAxOCk7CisgICAgZyA9IGcgKiA1ICsg
MHhlNjU0NmI2NDsKKyAgICBoIF49IGIzICsgYjE7CisgICAgaCA9IFJvdGF0ZTMyKGgsIDE5KTsK
KyAgICBoID0gaCAqIDUgKyAweGU2NTQ2YjY0OworICAgIGcgXj0gYjQ7CisgICAgZyA9IGFic2w6
Omdic3dhcF8zMihnKSAqIDU7CisgICAgaCArPSBiNCAqIDU7CisgICAgaCA9IGFic2w6Omdic3dh
cF8zMihoKTsKKyAgICBmICs9IGIwOworICAgIFBFUk1VVEUzKGYsIGgsIGcpOworICAgIHMgKz0g
MjA7CisgIH0gd2hpbGUgKC0taXRlcnMgIT0gMCk7CisgIGcgPSBSb3RhdGUzMihnLCAxMSkgKiBj
MTsKKyAgZyA9IFJvdGF0ZTMyKGcsIDE3KSAqIGMxOworICBmID0gUm90YXRlMzIoZiwgMTEpICog
YzE7CisgIGYgPSBSb3RhdGUzMihmLCAxNykgKiBjMTsKKyAgaCA9IFJvdGF0ZTMyKGggKyBnLCAx
OSk7CisgIGggPSBoICogNSArIDB4ZTY1NDZiNjQ7CisgIGggPSBSb3RhdGUzMihoLCAxNykgKiBj
MTsKKyAgaCA9IFJvdGF0ZTMyKGggKyBmLCAxOSk7CisgIGggPSBoICogNSArIDB4ZTY1NDZiNjQ7
CisgIGggPSBSb3RhdGUzMihoLCAxNykgKiBjMTsKKyAgcmV0dXJuIGg7Cit9CisKKy8vIEJpdHdp
c2UgcmlnaHQgcm90YXRlLiAgTm9ybWFsbHkgdGhpcyB3aWxsIGNvbXBpbGUgdG8gYSBzaW5nbGUK
Ky8vIGluc3RydWN0aW9uLCBlc3BlY2lhbGx5IGlmIHRoZSBzaGlmdCBpcyBhIG1hbmlmZXN0IGNv
bnN0YW50Lgorc3RhdGljIHVpbnQ2NF90IFJvdGF0ZSh1aW50NjRfdCB2YWwsIGludCBzaGlmdCkg
eworICAvLyBBdm9pZCBzaGlmdGluZyBieSA2NDogZG9pbmcgc28geWllbGRzIGFuIHVuZGVmaW5l
ZCByZXN1bHQuCisgIHJldHVybiBzaGlmdCA9PSAwID8gdmFsIDogKCh2YWwgPj4gc2hpZnQpIHwg
KHZhbCA8PCAoNjQgLSBzaGlmdCkpKTsKK30KKworc3RhdGljIHVpbnQ2NF90IFNoaWZ0TWl4KHVp
bnQ2NF90IHZhbCkgeyByZXR1cm4gdmFsIF4gKHZhbCA+PiA0Nyk7IH0KKworc3RhdGljIHVpbnQ2
NF90IEhhc2hMZW4xNih1aW50NjRfdCB1LCB1aW50NjRfdCB2KSB7CisgIHJldHVybiBIYXNoMTI4
dG82NCh1aW50MTI4KHUsIHYpKTsKK30KKworc3RhdGljIHVpbnQ2NF90IEhhc2hMZW4xNih1aW50
NjRfdCB1LCB1aW50NjRfdCB2LCB1aW50NjRfdCBtdWwpIHsKKyAgLy8gTXVybXVyLWluc3BpcmVk
IGhhc2hpbmcuCisgIHVpbnQ2NF90IGEgPSAodSBeIHYpICogbXVsOworICBhIF49IChhID4+IDQ3
KTsKKyAgdWludDY0X3QgYiA9ICh2IF4gYSkgKiBtdWw7CisgIGIgXj0gKGIgPj4gNDcpOworICBi
ICo9IG11bDsKKyAgcmV0dXJuIGI7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBIYXNoTGVuMHRvMTYo
Y29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikgeworICBpZiAobGVuID49IDgpIHsKKyAgICB1aW50
NjRfdCBtdWwgPSBrMiArIGxlbiAqIDI7CisgICAgdWludDY0X3QgYSA9IEZldGNoNjQocykgKyBr
MjsKKyAgICB1aW50NjRfdCBiID0gRmV0Y2g2NChzICsgbGVuIC0gOCk7CisgICAgdWludDY0X3Qg
YyA9IFJvdGF0ZShiLCAzNykgKiBtdWwgKyBhOworICAgIHVpbnQ2NF90IGQgPSAoUm90YXRlKGEs
IDI1KSArIGIpICogbXVsOworICAgIHJldHVybiBIYXNoTGVuMTYoYywgZCwgbXVsKTsKKyAgfQor
ICBpZiAobGVuID49IDQpIHsKKyAgICB1aW50NjRfdCBtdWwgPSBrMiArIGxlbiAqIDI7CisgICAg
dWludDY0X3QgYSA9IEZldGNoMzIocyk7CisgICAgcmV0dXJuIEhhc2hMZW4xNihsZW4gKyAoYSA8
PCAzKSwgRmV0Y2gzMihzICsgbGVuIC0gNCksIG11bCk7CisgIH0KKyAgaWYgKGxlbiA+IDApIHsK
KyAgICB1aW50OF90IGEgPSBzWzBdOworICAgIHVpbnQ4X3QgYiA9IHNbbGVuID4+IDFdOworICAg
IHVpbnQ4X3QgYyA9IHNbbGVuIC0gMV07CisgICAgdWludDMyX3QgeSA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PihhKSArIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYikgPDwgOCk7CisgICAgdWludDMy
X3QgeiA9IGxlbiArIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYykgPDwgMik7CisgICAgcmV0dXJu
IFNoaWZ0TWl4KHkgKiBrMiBeIHogKiBrMCkgKiBrMjsKKyAgfQorICByZXR1cm4gazI7Cit9CisK
Ky8vIFRoaXMgcHJvYmFibHkgd29ya3Mgd2VsbCBmb3IgMTYtYnl0ZSBzdHJpbmdzIGFzIHdlbGws
IGJ1dCBpdCBtYXkgYmUgb3ZlcmtpbGwKKy8vIGluIHRoYXQgY2FzZS4KK3N0YXRpYyB1aW50NjRf
dCBIYXNoTGVuMTd0bzMyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pIHsKKyAgdWludDY0X3Qg
bXVsID0gazIgKyBsZW4gKiAyOworICB1aW50NjRfdCBhID0gRmV0Y2g2NChzKSAqIGsxOworICB1
aW50NjRfdCBiID0gRmV0Y2g2NChzICsgOCk7CisgIHVpbnQ2NF90IGMgPSBGZXRjaDY0KHMgKyBs
ZW4gLSA4KSAqIG11bDsKKyAgdWludDY0X3QgZCA9IEZldGNoNjQocyArIGxlbiAtIDE2KSAqIGsy
OworICByZXR1cm4gSGFzaExlbjE2KFJvdGF0ZShhICsgYiwgNDMpICsgUm90YXRlKGMsIDMwKSAr
IGQsCisgICAgICAgICAgICAgICAgICAgYSArIFJvdGF0ZShiICsgazIsIDE4KSArIGMsIG11bCk7
Cit9CisKKy8vIFJldHVybiBhIDE2LWJ5dGUgaGFzaCBmb3IgNDggYnl0ZXMuICBRdWljayBhbmQg
ZGlydHkuCisvLyBDYWxsZXJzIGRvIGJlc3QgdG8gdXNlICJyYW5kb20tbG9va2luZyIgdmFsdWVz
IGZvciBhIGFuZCBiLgorc3RhdGljIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IFdlYWtI
YXNoTGVuMzJXaXRoU2VlZHModWludDY0X3QgdywgdWludDY0X3QgeCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgeSwgdWlu
dDY0X3QgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDY0X3QgYSwgdWludDY0X3QgYikgeworICBhICs9IHc7CisgIGIgPSBSb3Rh
dGUoYiArIGEgKyB6LCAyMSk7CisgIHVpbnQ2NF90IGMgPSBhOworICBhICs9IHg7CisgIGEgKz0g
eTsKKyAgYiArPSBSb3RhdGUoYSwgNDQpOworICByZXR1cm4gc3RkOjptYWtlX3BhaXIoYSArIHos
IGIgKyBjKTsKK30KKworLy8gUmV0dXJuIGEgMTYtYnl0ZSBoYXNoIGZvciBzWzBdIC4uLiBzWzMx
XSwgYSwgYW5kIGIuICBRdWljayBhbmQgZGlydHkuCitzdGF0aWMgc3RkOjpwYWlyPHVpbnQ2NF90
LCB1aW50NjRfdD4gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhjb25zdCBjaGFyICpzLCB1aW50NjRf
dCBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50NjRfdCBiKSB7CisgIHJldHVybiBXZWFrSGFzaExlbjMyV2l0aFNlZWRzKEZldGNo
NjQocyksIEZldGNoNjQocyArIDgpLCBGZXRjaDY0KHMgKyAxNiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZldGNoNjQocyArIDI0KSwgYSwgYik7Cit9CisKKy8vIFJldHVybiBh
biA4LWJ5dGUgaGFzaCBmb3IgMzMgdG8gNjQgYnl0ZXMuCitzdGF0aWMgdWludDY0X3QgSGFzaExl
bjMzdG82NChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7CisgIHVpbnQ2NF90IG11bCA9IGsy
ICsgbGVuICogMjsKKyAgdWludDY0X3QgYSA9IEZldGNoNjQocykgKiBrMjsKKyAgdWludDY0X3Qg
YiA9IEZldGNoNjQocyArIDgpOworICB1aW50NjRfdCBjID0gRmV0Y2g2NChzICsgbGVuIC0gMjQp
OworICB1aW50NjRfdCBkID0gRmV0Y2g2NChzICsgbGVuIC0gMzIpOworICB1aW50NjRfdCBlID0g
RmV0Y2g2NChzICsgMTYpICogazI7CisgIHVpbnQ2NF90IGYgPSBGZXRjaDY0KHMgKyAyNCkgKiA5
OworICB1aW50NjRfdCBnID0gRmV0Y2g2NChzICsgbGVuIC0gOCk7CisgIHVpbnQ2NF90IGggPSBG
ZXRjaDY0KHMgKyBsZW4gLSAxNikgKiBtdWw7CisgIHVpbnQ2NF90IHUgPSBSb3RhdGUoYSArIGcs
IDQzKSArIChSb3RhdGUoYiwgMzApICsgYykgKiA5OworICB1aW50NjRfdCB2ID0gKChhICsgZykg
XiBkKSArIGYgKyAxOworICB1aW50NjRfdCB3ID0gYWJzbDo6Z2Jzd2FwXzY0KCh1ICsgdikgKiBt
dWwpICsgaDsKKyAgdWludDY0X3QgeCA9IFJvdGF0ZShlICsgZiwgNDIpICsgYzsKKyAgdWludDY0
X3QgeSA9IChhYnNsOjpnYnN3YXBfNjQoKHYgKyB3KSAqIG11bCkgKyBnKSAqIG11bDsKKyAgdWlu
dDY0X3QgeiA9IGUgKyBmICsgYzsKKyAgYSA9IGFic2w6Omdic3dhcF82NCgoeCArIHopICogbXVs
ICsgeSkgKyBiOworICBiID0gU2hpZnRNaXgoKHogKyBhKSAqIG11bCArIGQgKyBoKSAqIG11bDsK
KyAgcmV0dXJuIGIgKyB4OworfQorCit1aW50NjRfdCBDaXR5SGFzaDY0KGNvbnN0IGNoYXIgKnMs
IHNpemVfdCBsZW4pIHsKKyAgaWYgKGxlbiA8PSAzMikgeworICAgIGlmIChsZW4gPD0gMTYpIHsK
KyAgICAgIHJldHVybiBIYXNoTGVuMHRvMTYocywgbGVuKTsKKyAgICB9IGVsc2UgeworICAgICAg
cmV0dXJuIEhhc2hMZW4xN3RvMzIocywgbGVuKTsKKyAgICB9CisgIH0gZWxzZSBpZiAobGVuIDw9
IDY0KSB7CisgICAgcmV0dXJuIEhhc2hMZW4zM3RvNjQocywgbGVuKTsKKyAgfQorCisgIC8vIEZv
ciBzdHJpbmdzIG92ZXIgNjQgYnl0ZXMgd2UgaGFzaCB0aGUgZW5kIGZpcnN0LCBhbmQgdGhlbiBh
cyB3ZQorICAvLyBsb29wIHdlIGtlZXAgNTYgYnl0ZXMgb2Ygc3RhdGU6IHYsIHcsIHgsIHksIGFu
ZCB6LgorICB1aW50NjRfdCB4ID0gRmV0Y2g2NChzICsgbGVuIC0gNDApOworICB1aW50NjRfdCB5
ID0gRmV0Y2g2NChzICsgbGVuIC0gMTYpICsgRmV0Y2g2NChzICsgbGVuIC0gNTYpOworICB1aW50
NjRfdCB6ID0gSGFzaExlbjE2KEZldGNoNjQocyArIGxlbiAtIDQ4KSArIGxlbiwgRmV0Y2g2NChz
ICsgbGVuIC0gMjQpKTsKKyAgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gdiA9IFdlYWtI
YXNoTGVuMzJXaXRoU2VlZHMocyArIGxlbiAtIDY0LCBsZW4sIHopOworICBzdGQ6OnBhaXI8dWlu
dDY0X3QsIHVpbnQ2NF90PiB3ID0gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhzICsgbGVuIC0gMzIs
IHkgKyBrMSwgeCk7CisgIHggPSB4ICogazEgKyBGZXRjaDY0KHMpOworCisgIC8vIERlY3JlYXNl
IGxlbiB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiA2NCwgYW5kIG9wZXJhdGUgb24gNjQtYnl0
ZSBjaHVua3MuCisgIGxlbiA9IChsZW4gLSAxKSAmIH5zdGF0aWNfY2FzdDxzaXplX3Q+KDYzKTsK
KyAgZG8geworICAgIHggPSBSb3RhdGUoeCArIHkgKyB2LmZpcnN0ICsgRmV0Y2g2NChzICsgOCks
IDM3KSAqIGsxOworICAgIHkgPSBSb3RhdGUoeSArIHYuc2Vjb25kICsgRmV0Y2g2NChzICsgNDgp
LCA0MikgKiBrMTsKKyAgICB4IF49IHcuc2Vjb25kOworICAgIHkgKz0gdi5maXJzdCArIEZldGNo
NjQocyArIDQwKTsKKyAgICB6ID0gUm90YXRlKHogKyB3LmZpcnN0LCAzMykgKiBrMTsKKyAgICB2
ID0gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhzLCB2LnNlY29uZCAqIGsxLCB4ICsgdy5maXJzdCk7
CisgICAgdyA9IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMocyArIDMyLCB6ICsgdy5zZWNvbmQsIHkg
KyBGZXRjaDY0KHMgKyAxNikpOworICAgIHN0ZDo6c3dhcCh6LCB4KTsKKyAgICBzICs9IDY0Owor
ICAgIGxlbiAtPSA2NDsKKyAgfSB3aGlsZSAobGVuICE9IDApOworICByZXR1cm4gSGFzaExlbjE2
KEhhc2hMZW4xNih2LmZpcnN0LCB3LmZpcnN0KSArIFNoaWZ0TWl4KHkpICogazEgKyB6LAorICAg
ICAgICAgICAgICAgICAgIEhhc2hMZW4xNih2LnNlY29uZCwgdy5zZWNvbmQpICsgeCk7Cit9CisK
K3VpbnQ2NF90IENpdHlIYXNoNjRXaXRoU2VlZChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1
aW50NjRfdCBzZWVkKSB7CisgIHJldHVybiBDaXR5SGFzaDY0V2l0aFNlZWRzKHMsIGxlbiwgazIs
IHNlZWQpOworfQorCit1aW50NjRfdCBDaXR5SGFzaDY0V2l0aFNlZWRzKGNvbnN0IGNoYXIgKnMs
IHNpemVfdCBsZW4sIHVpbnQ2NF90IHNlZWQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDY0X3Qgc2VlZDEpIHsKKyAgcmV0dXJuIEhhc2hMZW4xNihDaXR5SGFzaDY0KHMsIGxlbikg
LSBzZWVkMCwgc2VlZDEpOworfQorCisvLyBBIHN1YnJvdXRpbmUgZm9yIENpdHlIYXNoMTI4KCku
ICBSZXR1cm5zIGEgZGVjZW50IDEyOC1iaXQgaGFzaCBmb3Igc3RyaW5ncworLy8gb2YgYW55IGxl
bmd0aCByZXByZXNlbnRhYmxlIGluIHNpZ25lZCBsb25nLiAgQmFzZWQgb24gQ2l0eSBhbmQgTXVy
bXVyLgorc3RhdGljIHVpbnQxMjggQ2l0eU11cm11cihjb25zdCBjaGFyICpzLCBzaXplX3QgbGVu
LCB1aW50MTI4IHNlZWQpIHsKKyAgdWludDY0X3QgYSA9IFVpbnQxMjhMb3c2NChzZWVkKTsKKyAg
dWludDY0X3QgYiA9IFVpbnQxMjhIaWdoNjQoc2VlZCk7CisgIHVpbnQ2NF90IGMgPSAwOworICB1
aW50NjRfdCBkID0gMDsKKyAgaW50NjRfdCBsID0gbGVuIC0gMTY7CisgIGlmIChsIDw9IDApIHsg
IC8vIGxlbiA8PSAxNgorICAgIGEgPSBTaGlmdE1peChhICogazEpICogazE7CisgICAgYyA9IGIg
KiBrMSArIEhhc2hMZW4wdG8xNihzLCBsZW4pOworICAgIGQgPSBTaGlmdE1peChhICsgKGxlbiA+
PSA4ID8gRmV0Y2g2NChzKSA6IGMpKTsKKyAgfSBlbHNlIHsgIC8vIGxlbiA+IDE2CisgICAgYyA9
IEhhc2hMZW4xNihGZXRjaDY0KHMgKyBsZW4gLSA4KSArIGsxLCBhKTsKKyAgICBkID0gSGFzaExl
bjE2KGIgKyBsZW4sIGMgKyBGZXRjaDY0KHMgKyBsZW4gLSAxNikpOworICAgIGEgKz0gZDsKKyAg
ICBkbyB7CisgICAgICBhIF49IFNoaWZ0TWl4KEZldGNoNjQocykgKiBrMSkgKiBrMTsKKyAgICAg
IGEgKj0gazE7CisgICAgICBiIF49IGE7CisgICAgICBjIF49IFNoaWZ0TWl4KEZldGNoNjQocyAr
IDgpICogazEpICogazE7CisgICAgICBjICo9IGsxOworICAgICAgZCBePSBjOworICAgICAgcyAr
PSAxNjsKKyAgICAgIGwgLT0gMTY7CisgICAgfSB3aGlsZSAobCA+IDApOworICB9CisgIGEgPSBI
YXNoTGVuMTYoYSwgYyk7CisgIGIgPSBIYXNoTGVuMTYoZCwgYik7CisgIHJldHVybiB1aW50MTI4
KGEgXiBiLCBIYXNoTGVuMTYoYiwgYSkpOworfQorCit1aW50MTI4IENpdHlIYXNoMTI4V2l0aFNl
ZWQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDEyOCBzZWVkKSB7CisgIGlmIChsZW4g
PCAxMjgpIHsKKyAgICByZXR1cm4gQ2l0eU11cm11cihzLCBsZW4sIHNlZWQpOworICB9CisKKyAg
Ly8gV2UgZXhwZWN0IGxlbiA+PSAxMjggdG8gYmUgdGhlIGNvbW1vbiBjYXNlLiAgS2VlcCA1NiBi
eXRlcyBvZiBzdGF0ZToKKyAgLy8gdiwgdywgeCwgeSwgYW5kIHouCisgIHN0ZDo6cGFpcjx1aW50
NjRfdCwgdWludDY0X3Q+IHYsIHc7CisgIHVpbnQ2NF90IHggPSBVaW50MTI4TG93NjQoc2VlZCk7
CisgIHVpbnQ2NF90IHkgPSBVaW50MTI4SGlnaDY0KHNlZWQpOworICB1aW50NjRfdCB6ID0gbGVu
ICogazE7CisgIHYuZmlyc3QgPSBSb3RhdGUoeSBeIGsxLCA0OSkgKiBrMSArIEZldGNoNjQocyk7
CisgIHYuc2Vjb25kID0gUm90YXRlKHYuZmlyc3QsIDQyKSAqIGsxICsgRmV0Y2g2NChzICsgOCk7
CisgIHcuZmlyc3QgPSBSb3RhdGUoeSArIHosIDM1KSAqIGsxICsgeDsKKyAgdy5zZWNvbmQgPSBS
b3RhdGUoeCArIEZldGNoNjQocyArIDg4KSwgNTMpICogazE7CisKKyAgLy8gVGhpcyBpcyB0aGUg
c2FtZSBpbm5lciBsb29wIGFzIENpdHlIYXNoNjQoKSwgbWFudWFsbHkgdW5yb2xsZWQuCisgIGRv
IHsKKyAgICB4ID0gUm90YXRlKHggKyB5ICsgdi5maXJzdCArIEZldGNoNjQocyArIDgpLCAzNykg
KiBrMTsKKyAgICB5ID0gUm90YXRlKHkgKyB2LnNlY29uZCArIEZldGNoNjQocyArIDQ4KSwgNDIp
ICogazE7CisgICAgeCBePSB3LnNlY29uZDsKKyAgICB5ICs9IHYuZmlyc3QgKyBGZXRjaDY0KHMg
KyA0MCk7CisgICAgeiA9IFJvdGF0ZSh6ICsgdy5maXJzdCwgMzMpICogazE7CisgICAgdiA9IFdl
YWtIYXNoTGVuMzJXaXRoU2VlZHMocywgdi5zZWNvbmQgKiBrMSwgeCArIHcuZmlyc3QpOworICAg
IHcgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRzKHMgKyAzMiwgeiArIHcuc2Vjb25kLCB5ICsgRmV0
Y2g2NChzICsgMTYpKTsKKyAgICBzdGQ6OnN3YXAoeiwgeCk7CisgICAgcyArPSA2NDsKKyAgICB4
ID0gUm90YXRlKHggKyB5ICsgdi5maXJzdCArIEZldGNoNjQocyArIDgpLCAzNykgKiBrMTsKKyAg
ICB5ID0gUm90YXRlKHkgKyB2LnNlY29uZCArIEZldGNoNjQocyArIDQ4KSwgNDIpICogazE7Cisg
ICAgeCBePSB3LnNlY29uZDsKKyAgICB5ICs9IHYuZmlyc3QgKyBGZXRjaDY0KHMgKyA0MCk7Cisg
ICAgeiA9IFJvdGF0ZSh6ICsgdy5maXJzdCwgMzMpICogazE7CisgICAgdiA9IFdlYWtIYXNoTGVu
MzJXaXRoU2VlZHMocywgdi5zZWNvbmQgKiBrMSwgeCArIHcuZmlyc3QpOworICAgIHcgPSBXZWFr
SGFzaExlbjMyV2l0aFNlZWRzKHMgKyAzMiwgeiArIHcuc2Vjb25kLCB5ICsgRmV0Y2g2NChzICsg
MTYpKTsKKyAgICBzdGQ6OnN3YXAoeiwgeCk7CisgICAgcyArPSA2NDsKKyAgICBsZW4gLT0gMTI4
OworICB9IHdoaWxlIChBQlNMX1BSRURJQ1RfVFJVRShsZW4gPj0gMTI4KSk7CisgIHggKz0gUm90
YXRlKHYuZmlyc3QgKyB6LCA0OSkgKiBrMDsKKyAgeSA9IHkgKiBrMCArIFJvdGF0ZSh3LnNlY29u
ZCwgMzcpOworICB6ID0geiAqIGswICsgUm90YXRlKHcuZmlyc3QsIDI3KTsKKyAgdy5maXJzdCAq
PSA5OworICB2LmZpcnN0ICo9IGswOworICAvLyBJZiAwIDwgbGVuIDwgMTI4LCBoYXNoIHVwIHRv
IDQgY2h1bmtzIG9mIDMyIGJ5dGVzIGVhY2ggZnJvbSB0aGUgZW5kIG9mIHMuCisgIGZvciAoc2l6
ZV90IHRhaWxfZG9uZSA9IDA7IHRhaWxfZG9uZSA8IGxlbjspIHsKKyAgICB0YWlsX2RvbmUgKz0g
MzI7CisgICAgeSA9IFJvdGF0ZSh4ICsgeSwgNDIpICogazAgKyB2LnNlY29uZDsKKyAgICB3LmZp
cnN0ICs9IEZldGNoNjQocyArIGxlbiAtIHRhaWxfZG9uZSArIDE2KTsKKyAgICB4ID0geCAqIGsw
ICsgdy5maXJzdDsKKyAgICB6ICs9IHcuc2Vjb25kICsgRmV0Y2g2NChzICsgbGVuIC0gdGFpbF9k
b25lKTsKKyAgICB3LnNlY29uZCArPSB2LmZpcnN0OworICAgIHYgPSBXZWFrSGFzaExlbjMyV2l0
aFNlZWRzKHMgKyBsZW4gLSB0YWlsX2RvbmUsIHYuZmlyc3QgKyB6LCB2LnNlY29uZCk7CisgICAg
di5maXJzdCAqPSBrMDsKKyAgfQorICAvLyBBdCB0aGlzIHBvaW50IG91ciA1NiBieXRlcyBvZiBz
dGF0ZSBzaG91bGQgY29udGFpbiBtb3JlIHRoYW4KKyAgLy8gZW5vdWdoIGluZm9ybWF0aW9uIGZv
ciBhIHN0cm9uZyAxMjgtYml0IGhhc2guICBXZSB1c2UgdHdvCisgIC8vIGRpZmZlcmVudCA1Ni1i
eXRlLXRvLTgtYnl0ZSBoYXNoZXMgdG8gZ2V0IGEgMTYtYnl0ZSBmaW5hbCByZXN1bHQuCisgIHgg
PSBIYXNoTGVuMTYoeCwgdi5maXJzdCk7CisgIHkgPSBIYXNoTGVuMTYoeSArIHosIHcuZmlyc3Qp
OworICByZXR1cm4gdWludDEyOChIYXNoTGVuMTYoeCArIHYuc2Vjb25kLCB3LnNlY29uZCkgKyB5
LAorICAgICAgICAgICAgICAgICBIYXNoTGVuMTYoeCArIHcuc2Vjb25kLCB5ICsgdi5zZWNvbmQp
KTsKK30KKwordWludDEyOCBDaXR5SGFzaDEyOChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7
CisgIHJldHVybiBsZW4gPj0gMTYKKyAgICAgICAgICAgICA/IENpdHlIYXNoMTI4V2l0aFNlZWQo
cyArIDE2LCBsZW4gLSAxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDEyOChGZXRjaDY0KHMpLCBGZXRjaDY0KHMgKyA4KSArIGswKSkKKyAgICAgICAgICAgICA6IENp
dHlIYXNoMTI4V2l0aFNlZWQocywgbGVuLCB1aW50MTI4KGswLCBrMSkpOworfQorfSAgLy8gbmFt
ZXNwYWNlIGhhc2hfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNpZmRlZiBfX1NT
RTRfMl9fCisjaW5jbHVkZSA8bm1taW50cmluLmg+CisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVy
bmFsL2NpdHlfY3JjLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBoYXNoX2ludGVy
bmFsIHsKKworLy8gUmVxdWlyZXMgbGVuID49IDI0MC4KK3N0YXRpYyB2b2lkIENpdHlIYXNoQ3Jj
MjU2TG9uZyhjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50MzJfdCBzZWVkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpyZXN1bHQpIHsKKyAgdWludDY0X3Qg
YSA9IEZldGNoNjQocyArIDU2KSArIGswOworICB1aW50NjRfdCBiID0gRmV0Y2g2NChzICsgOTYp
ICsgazA7CisgIHVpbnQ2NF90IGMgPSByZXN1bHRbMF0gPSBIYXNoTGVuMTYoYiwgbGVuKTsKKyAg
dWludDY0X3QgZCA9IHJlc3VsdFsxXSA9IEZldGNoNjQocyArIDEyMCkgKiBrMCArIGxlbjsKKyAg
dWludDY0X3QgZSA9IEZldGNoNjQocyArIDE4NCkgKyBzZWVkOworICB1aW50NjRfdCBmID0gMDsK
KyAgdWludDY0X3QgZyA9IDA7CisgIHVpbnQ2NF90IGggPSBjICsgZDsKKyAgdWludDY0X3QgeCA9
IHNlZWQ7CisgIHVpbnQ2NF90IHkgPSAwOworICB1aW50NjRfdCB6ID0gMDsKKworICAvLyAyNDAg
Ynl0ZXMgb2YgaW5wdXQgcGVyIGl0ZXIuCisgIHNpemVfdCBpdGVycyA9IGxlbiAvIDI0MDsKKyAg
bGVuIC09IGl0ZXJzICogMjQwOworICBkbyB7CisjdW5kZWYgQ0hVTksKKyNkZWZpbmUgQ0hVTkso
cikgICAgICAgICAgICAgICBcCisgIFBFUk1VVEUzKHgsIHosIHkpOyAgICAgICAgICAgXAorICBi
ICs9IEZldGNoNjQocyk7ICAgICAgICAgICAgIFwKKyAgYyArPSBGZXRjaDY0KHMgKyA4KTsgICAg
ICAgICBcCisgIGQgKz0gRmV0Y2g2NChzICsgMTYpOyAgICAgICAgXAorICBlICs9IEZldGNoNjQo
cyArIDI0KTsgICAgICAgIFwKKyAgZiArPSBGZXRjaDY0KHMgKyAzMik7ICAgICAgICBcCisgIGEg
Kz0gYjsgICAgICAgICAgICAgICAgICAgICAgXAorICBoICs9IGY7ICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgYiArPSBjOyAgICAgICAgICAgICAgICAgICAgICBcCisgIGYgKz0gZDsgICAgICAg
ICAgICAgICAgICAgICAgXAorICBnICs9IGU7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZSAr
PSB6OyAgICAgICAgICAgICAgICAgICAgICBcCisgIGcgKz0geDsgICAgICAgICAgICAgICAgICAg
ICAgXAorICB6ID0gX21tX2NyYzMyX3U2NCh6LCBiICsgZyk7IFwKKyAgeSA9IF9tbV9jcmMzMl91
NjQoeSwgZSArIGgpOyBcCisgIHggPSBfbW1fY3JjMzJfdTY0KHgsIGYgKyBhKTsgXAorICBlID0g
Um90YXRlKGUsIHIpOyAgICAgICAgICAgIFwKKyAgYyArPSBlOyAgICAgICAgICAgICAgICAgICAg
ICBcCisgIHMgKz0gNDAKKworICAgIENIVU5LKDApOworICAgIFBFUk1VVEUzKGEsIGgsIGMpOwor
ICAgIENIVU5LKDMzKTsKKyAgICBQRVJNVVRFMyhhLCBoLCBmKTsKKyAgICBDSFVOSygwKTsKKyAg
ICBQRVJNVVRFMyhiLCBoLCBmKTsKKyAgICBDSFVOSyg0Mik7CisgICAgUEVSTVVURTMoYiwgaCwg
ZCk7CisgICAgQ0hVTksoMCk7CisgICAgUEVSTVVURTMoYiwgaCwgZSk7CisgICAgQ0hVTksoMzMp
OworICAgIFBFUk1VVEUzKGEsIGgsIGUpOworICB9IHdoaWxlICgtLWl0ZXJzID4gMCk7CisKKyAg
d2hpbGUgKGxlbiA+PSA0MCkgeworICAgIENIVU5LKDI5KTsKKyAgICBlIF49IFJvdGF0ZShhLCAy
MCk7CisgICAgaCArPSBSb3RhdGUoYiwgMzApOworICAgIGcgXj0gUm90YXRlKGMsIDQwKTsKKyAg
ICBmICs9IFJvdGF0ZShkLCAzNCk7CisgICAgUEVSTVVURTMoYywgaCwgZyk7CisgICAgbGVuIC09
IDQwOworICB9CisgIGlmIChsZW4gPiAwKSB7CisgICAgcyA9IHMgKyBsZW4gLSA0MDsKKyAgICBD
SFVOSygzMyk7CisgICAgZSBePSBSb3RhdGUoYSwgNDMpOworICAgIGggKz0gUm90YXRlKGIsIDQy
KTsKKyAgICBnIF49IFJvdGF0ZShjLCA0MSk7CisgICAgZiArPSBSb3RhdGUoZCwgNDApOworICB9
CisgIHJlc3VsdFswXSBePSBoOworICByZXN1bHRbMV0gXj0gZzsKKyAgZyArPSBoOworICBhID0g
SGFzaExlbjE2KGEsIGcgKyB6KTsKKyAgeCArPSB5IDw8IDMyOworICBiICs9IHg7CisgIGMgPSBI
YXNoTGVuMTYoYywgeikgKyBoOworICBkID0gSGFzaExlbjE2KGQsIGUgKyByZXN1bHRbMF0pOwor
ICBnICs9IGU7CisgIGggKz0gSGFzaExlbjE2KHgsIGYpOworICBlID0gSGFzaExlbjE2KGEsIGQp
ICsgZzsKKyAgeiA9IEhhc2hMZW4xNihiLCBjKSArIGE7CisgIHkgPSBIYXNoTGVuMTYoZywgaCkg
KyBjOworICByZXN1bHRbMF0gPSBlICsgeiArIHkgKyB4OworICBhID0gU2hpZnRNaXgoKGEgKyB5
KSAqIGswKSAqIGswICsgYjsKKyAgcmVzdWx0WzFdICs9IGEgKyByZXN1bHRbMF07CisgIGEgPSBT
aGlmdE1peChhICogazApICogazAgKyBjOworICByZXN1bHRbMl0gPSBhICsgcmVzdWx0WzFdOwor
ICBhID0gU2hpZnRNaXgoKGEgKyBlKSAqIGswKSAqIGswOworICByZXN1bHRbM10gPSBhICsgcmVz
dWx0WzJdOworfQorCisvLyBSZXF1aXJlcyBsZW4gPCAyNDAuCitzdGF0aWMgdm9pZCBDaXR5SGFz
aENyYzI1NlNob3J0KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90ICpyZXN1bHQp
IHsKKyAgY2hhciBidWZbMjQwXTsKKyAgbWVtY3B5KGJ1ZiwgcywgbGVuKTsKKyAgbWVtc2V0KGJ1
ZiArIGxlbiwgMCwgMjQwIC0gbGVuKTsKKyAgQ2l0eUhhc2hDcmMyNTZMb25nKGJ1ZiwgMjQwLCB+
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxlbiksIHJlc3VsdCk7Cit9CisKK3ZvaWQgQ2l0eUhhc2hD
cmMyNTYoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDY0X3QgKnJlc3VsdCkgeworICBp
ZiAoQUJTTF9QUkVESUNUX1RSVUUobGVuID49IDI0MCkpIHsKKyAgICBDaXR5SGFzaENyYzI1Nkxv
bmcocywgbGVuLCAwLCByZXN1bHQpOworICB9IGVsc2UgeworICAgIENpdHlIYXNoQ3JjMjU2U2hv
cnQocywgbGVuLCByZXN1bHQpOworICB9Cit9CisKK3VpbnQxMjggQ2l0eUhhc2hDcmMxMjhXaXRo
U2VlZChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50MTI4IHNlZWQpIHsKKyAgaWYgKGxl
biA8PSA5MDApIHsKKyAgICByZXR1cm4gQ2l0eUhhc2gxMjhXaXRoU2VlZChzLCBsZW4sIHNlZWQp
OworICB9IGVsc2UgeworICAgIHVpbnQ2NF90IHJlc3VsdFs0XTsKKyAgICBDaXR5SGFzaENyYzI1
NihzLCBsZW4sIHJlc3VsdCk7CisgICAgdWludDY0X3QgdSA9IFVpbnQxMjhIaWdoNjQoc2VlZCkg
KyByZXN1bHRbMF07CisgICAgdWludDY0X3QgdiA9IFVpbnQxMjhMb3c2NChzZWVkKSArIHJlc3Vs
dFsxXTsKKyAgICByZXR1cm4gdWludDEyOChIYXNoTGVuMTYodSwgdiArIHJlc3VsdFsyXSksCisg
ICAgICAgICAgICAgICAgICAgSGFzaExlbjE2KFJvdGF0ZSh2LCAzMiksIHUgKiBrMCArIHJlc3Vs
dFszXSkpOworICB9Cit9CisKK3VpbnQxMjggQ2l0eUhhc2hDcmMxMjgoY29uc3QgY2hhciAqcywg
c2l6ZV90IGxlbikgeworICBpZiAobGVuIDw9IDkwMCkgeworICAgIHJldHVybiBDaXR5SGFzaDEy
OChzLCBsZW4pOworICB9IGVsc2UgeworICAgIHVpbnQ2NF90IHJlc3VsdFs0XTsKKyAgICBDaXR5
SGFzaENyYzI1NihzLCBsZW4sIHJlc3VsdCk7CisgICAgcmV0dXJuIHVpbnQxMjgocmVzdWx0WzJd
LCByZXN1bHRbM10pOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsCit9
ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50
ZXJuYWwvY2l0eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVi
MzdiODc1ZjBiM2ZkODQ2N2RhOTlkYmVkNDI5N2FjODlmMTgxOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5oCkBAIC0wLDAgKzEsMTA4IEBACisvLyBDb3B5cmln
aHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9jaXR5aGFzaC8KKy8vCisvLyBUaGlzIGZpbGUgcHJvdmlkZXMgYSBmZXcgZnVuY3Rpb25z
IGZvciBoYXNoaW5nIHN0cmluZ3MuICBBbGwgb2YgdGhlbSBhcmUKKy8vIGhpZ2gtcXVhbGl0eSBm
dW5jdGlvbnMgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSBwYXNzIHN0YW5kYXJkIHRlc3RzIHN1Y2gK
Ky8vIGFzIEF1c3RpbiBBcHBsZWJ5J3MgU01IYXNoZXIuICBUaGV5IGFyZSBhbHNvIGZhc3QuCisv
LworLy8gRm9yIDY0LWJpdCB4ODYgY29kZSwgb24gc2hvcnQgc3RyaW5ncywgd2UgZG9uJ3Qga25v
dyBvZiBhbnl0aGluZyBmYXN0ZXIgdGhhbgorLy8gQ2l0eUhhc2g2NCB0aGF0IGlzIG9mIGNvbXBh
cmFibGUgcXVhbGl0eS4gIFdlIGJlbGlldmUgb3VyIG5lYXJlc3QgY29tcGV0aXRvcgorLy8gaXMg
TXVybXVyMy4gIEZvciA2NC1iaXQgeDg2IGNvZGUsIENpdHlIYXNoNjQgaXMgYW4gZXhjZWxsZW50
IGNob2ljZSBmb3IgaGFzaAorLy8gdGFibGVzIGFuZCBtb3N0IG90aGVyIGhhc2hpbmcgKGV4Y2x1
ZGluZyBjcnlwdG9ncmFwaHkpLgorLy8KKy8vIEZvciA2NC1iaXQgeDg2IGNvZGUsIG9uIGxvbmcg
c3RyaW5ncywgdGhlIHBpY3R1cmUgaXMgbW9yZSBjb21wbGljYXRlZC4KKy8vIE9uIG1hbnkgcmVj
ZW50IEludGVsIENQVXMsIHN1Y2ggYXMgTmVoYWxlbSwgV2VzdG1lcmUsIFNhbmR5IEJyaWRnZSwg
ZXRjLiwKKy8vIENpdHlIYXNoQ3JjMTI4IGFwcGVhcnMgdG8gYmUgZmFzdGVyIHRoYW4gYWxsIGNv
bXBldGl0b3JzIG9mIGNvbXBhcmFibGUKKy8vIHF1YWxpdHkuICBDaXR5SGFzaDEyOCBpcyBhbHNv
IGdvb2QgYnV0IG5vdCBxdWl0ZSBhcyBmYXN0LiAgV2UgYmVsaWV2ZSBvdXIKKy8vIG5lYXJlc3Qg
Y29tcGV0aXRvciBpcyBCb2IgSmVua2lucycgU3Bvb2t5LiAgV2UgZG9uJ3QgaGF2ZSBncmVhdCBk
YXRhIGZvcgorLy8gb3RoZXIgNjQtYml0IENQVXMsIGJ1dCBmb3IgbG9uZyBzdHJpbmdzIHdlIGtu
b3cgdGhhdCBTcG9va3kgaXMgc2xpZ2h0bHkKKy8vIGZhc3RlciB0aGFuIENpdHlIYXNoIG9uIHNv
bWUgcmVsYXRpdmVseSByZWNlbnQgQU1EIHg4Ni02NCBDUFVzLCBmb3IgZXhhbXBsZS4KKy8vIE5v
dGUgdGhhdCBDaXR5SGFzaENyYzEyOCBpcyBkZWNsYXJlZCBpbiBjaXR5Y3JjLmguCisvLworLy8g
Rm9yIDMyLWJpdCB4ODYgY29kZSwgd2UgZG9uJ3Qga25vdyBvZiBhbnl0aGluZyBmYXN0ZXIgdGhh
biBDaXR5SGFzaDMyIHRoYXQKKy8vIGlzIG9mIGNvbXBhcmFibGUgcXVhbGl0eS4gIFdlIGJlbGll
dmUgb3VyIG5lYXJlc3QgY29tcGV0aXRvciBpcyBNdXJtdXIzQS4KKy8vIChPbiA2NC1iaXQgQ1BV
cywgaXQgaXMgdHlwaWNhbGx5IGZhc3RlciB0byB1c2UgdGhlIG90aGVyIENpdHlIYXNoIHZhcmlh
bnRzLikKKy8vCisvLyBGdW5jdGlvbnMgaW4gdGhlIENpdHlIYXNoIGZhbWlseSBhcmUgbm90IHN1
aXRhYmxlIGZvciBjcnlwdG9ncmFwaHkuCisvLworLy8gUGxlYXNlIHNlZSBDaXR5SGFzaCdzIFJF
QURNRSBmaWxlIGZvciBtb3JlIGRldGFpbHMgb24gb3VyIHBlcmZvcm1hbmNlCisvLyBtZWFzdXJl
bWVudHMgYW5kIHNvIG9uLgorLy8KKy8vIFdBUk5JTkc6IFRoaXMgY29kZSBoYXMgYmVlbiBvbmx5
IGxpZ2h0bHkgdGVzdGVkIG9uIGJpZy1lbmRpYW4gcGxhdGZvcm1zIQorLy8gSXQgaXMga25vd24g
dG8gd29yayB3ZWxsIG9uIGxpdHRsZS1lbmRpYW4gcGxhdGZvcm1zIHRoYXQgaGF2ZSBhIHNtYWxs
IHBlbmFsdHkKKy8vIGZvciB1bmFsaWduZWQgcmVhZHMsIHN1Y2ggYXMgY3VycmVudCBJbnRlbCBh
bmQgQU1EIG1vZGVyYXRlLXRvLWhpZ2gtZW5kIENQVXMuCisvLyBJdCBzaG91bGQgd29yayBvbiBh
bGwgMzItYml0IGFuZCA2NC1iaXQgcGxhdGZvcm1zIHRoYXQgYWxsb3cgdW5hbGlnbmVkIHJlYWRz
OworLy8gYnVnIHJlcG9ydHMgYXJlIHdlbGNvbWUuCisvLworLy8gQnkgdGhlIHdheSwgZm9yIHNv
bWUgaGFzaCBmdW5jdGlvbnMsIGdpdmVuIHN0cmluZ3MgYSBhbmQgYiwgdGhlIGhhc2gKKy8vIG9m
IGErYiBpcyBlYXNpbHkgZGVyaXZlZCBmcm9tIHRoZSBoYXNoZXMgb2YgYSBhbmQgYi4gIFRoaXMg
cHJvcGVydHkKKy8vIGRvZXNuJ3QgaG9sZCBmb3IgYW55IGhhc2ggZnVuY3Rpb25zIGluIHRoaXMg
ZmlsZS4KKworI2lmbmRlZiBBQlNMX0hBU0hfSU5URVJOQUxfQ0lUWV9IXworI2RlZmluZSBBQlNM
X0hBU0hfSU5URVJOQUxfQ0lUWV9IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8
c3RkbGliLmg+ICAvLyBmb3Igc2l6ZV90LgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKworbmFtZXNw
YWNlIGFic2wgeworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgeworCit0eXBlZGVmIHN0ZDo6cGFp
cjx1aW50NjRfdCwgdWludDY0X3Q+IHVpbnQxMjg7CisKK2lubGluZSB1aW50NjRfdCBVaW50MTI4
TG93NjQoY29uc3QgdWludDEyOCAmeCkgeyByZXR1cm4geC5maXJzdDsgfQoraW5saW5lIHVpbnQ2
NF90IFVpbnQxMjhIaWdoNjQoY29uc3QgdWludDEyOCAmeCkgeyByZXR1cm4geC5zZWNvbmQ7IH0K
KworLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LgordWludDY0X3QgQ2l0eUhhc2g2
NChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKTsKKworLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBi
eXRlIGFycmF5LiAgRm9yIGNvbnZlbmllbmNlLCBhIDY0LWJpdCBzZWVkIGlzIGFsc28KKy8vIGhh
c2hlZCBpbnRvIHRoZSByZXN1bHQuCit1aW50NjRfdCBDaXR5SGFzaDY0V2l0aFNlZWQoY29uc3Qg
Y2hhciAqcywgc2l6ZV90IGxlbiwgdWludDY0X3Qgc2VlZCk7CisKKy8vIEhhc2ggZnVuY3Rpb24g
Zm9yIGEgYnl0ZSBhcnJheS4gIEZvciBjb252ZW5pZW5jZSwgdHdvIHNlZWRzIGFyZSBhbHNvCisv
LyBoYXNoZWQgaW50byB0aGUgcmVzdWx0LgordWludDY0X3QgQ2l0eUhhc2g2NFdpdGhTZWVkcyhj
b25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50NjRfdCBzZWVkMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ2NF90IHNlZWQxKTsKKworLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBi
eXRlIGFycmF5LgordWludDEyOCBDaXR5SGFzaDEyOChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVu
KTsKKworLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LiAgRm9yIGNvbnZlbmllbmNl
LCBhIDEyOC1iaXQgc2VlZCBpcyBhbHNvCisvLyBoYXNoZWQgaW50byB0aGUgcmVzdWx0LgordWlu
dDEyOCBDaXR5SGFzaDEyOFdpdGhTZWVkKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQx
Mjggc2VlZCk7CisKKy8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4gIE1vc3QgdXNl
ZnVsIGluIDMyLWJpdCBiaW5hcmllcy4KK3VpbnQzMl90IENpdHlIYXNoMzIoY29uc3QgY2hhciAq
cywgc2l6ZV90IGxlbik7CisKKy8vIEhhc2ggMTI4IGlucHV0IGJpdHMgZG93biB0byA2NCBiaXRz
IG9mIG91dHB1dC4KKy8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgYSByZWFzb25hYmx5IGdvb2Qg
aGFzaCBmdW5jdGlvbi4KK2lubGluZSB1aW50NjRfdCBIYXNoMTI4dG82NChjb25zdCB1aW50MTI4
ICZ4KSB7CisgIC8vIE11cm11ci1pbnNwaXJlZCBoYXNoaW5nLgorICBjb25zdCB1aW50NjRfdCBr
TXVsID0gMHg5ZGRmZWEwOGViMzgyZDY5VUxMOworICB1aW50NjRfdCBhID0gKFVpbnQxMjhMb3c2
NCh4KSBeIFVpbnQxMjhIaWdoNjQoeCkpICoga011bDsKKyAgYSBePSAoYSA+PiA0Nyk7CisgIHVp
bnQ2NF90IGIgPSAoVWludDEyOEhpZ2g2NCh4KSBeIGEpICoga011bDsKKyAgYiBePSAoYiA+PiA0
Nyk7CisgIGIgKj0ga011bDsKKyAgcmV0dXJuIGI7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBoYXNo
X2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfSEFTSF9J
TlRFUk5BTF9DSVRZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfY3Jj
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHlfY3JjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJlNjU1N2Qy
MTNmMmI0MGE4YzQ3NGM2YTBjMjc5ZjBhNmJjYWYyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2hhc2gvaW50ZXJuYWwvY2l0eV9jcmMuaApAQCAtMCwwICsxLDQxIEBACisvLyBDb3B5cmlnaHQg
MjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIFRoaXMgZmlsZSBkZWNsYXJlcyB0aGUg
c3Vic2V0IG9mIHRoZSBDaXR5SGFzaCBmdW5jdGlvbnMgdGhhdCByZXF1aXJlCisvLyBfbW1fY3Jj
MzJfdTY0KCkuICBTZWUgdGhlIENpdHlIYXNoIFJFQURNRSBmb3IgZGV0YWlscy4KKy8vCisvLyBG
dW5jdGlvbnMgaW4gdGhlIENpdHlIYXNoIGZhbWlseSBhcmUgbm90IHN1aXRhYmxlIGZvciBjcnlw
dG9ncmFwaHkuCisKKyNpZm5kZWYgQUJTTF9IQVNIX0lOVEVSTkFMX0NJVFlfQ1JDX0hfCisjZGVm
aW5lIEFCU0xfSEFTSF9JTlRFUk5BTF9DSVRZX0NSQ19IXworCisjaW5jbHVkZSAiYWJzbC9oYXNo
L2ludGVybmFsL2NpdHkuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGhhc2hfaW50
ZXJuYWwgeworCisvLyBIYXNoIGZ1bmN0aW9uIGZvciBhIGJ5dGUgYXJyYXkuCit1aW50MTI4IENp
dHlIYXNoQ3JjMTI4KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pOworCisvLyBIYXNoIGZ1bmN0
aW9uIGZvciBhIGJ5dGUgYXJyYXkuICBGb3IgY29udmVuaWVuY2UsIGEgMTI4LWJpdCBzZWVkIGlz
IGFsc28KKy8vIGhhc2hlZCBpbnRvIHRoZSByZXN1bHQuCit1aW50MTI4IENpdHlIYXNoQ3JjMTI4
V2l0aFNlZWQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDEyOCBzZWVkKTsKKworLy8g
SGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LiAgU2V0cyByZXN1bHRbMF0gLi4uIHJlc3Vs
dFszXS4KK3ZvaWQgQ2l0eUhhc2hDcmMyNTYoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWlu
dDY0X3QgKnJlc3VsdCk7CisKK30gIC8vIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsCit9ICAvLyBu
YW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9DSVRZX0NSQ19I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9o
YXNoL2ludGVybmFsL2NpdHlfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzhkYTUzZDM0ZDA0ZDYwMTFm
ZTg3YjA2YTdlMjY2MTNiZGJlZjk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRl
cm5hbC9jaXR5X3Rlc3QuY2MKQEAgLTAsMCArMSwxODEyIEBACisvLyBDb3B5cmlnaHQgMjAxOCBU
aGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL2NpdHku
aCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDxp
b3N0cmVhbT4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lmZGVmIF9fU1NFNF8yX18KKyNp
bmNsdWRlICJhYnNsL2hhc2gvaW50ZXJuYWwvY2l0eV9jcmMuaCIKKyNlbmRpZgorCituYW1lc3Bh
Y2UgYWJzbCB7CituYW1lc3BhY2UgaGFzaF9pbnRlcm5hbCB7CisKK3N0YXRpYyBjb25zdCB1aW50
NjRfdCBrMCA9IDB4YzNhNWM4NWM5N2NiMzEyN1VMTDsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBr
U2VlZDAgPSAxMjM0NTY3Oworc3RhdGljIGNvbnN0IHVpbnQ2NF90IGtTZWVkMSA9IGswOworc3Rh
dGljIGNvbnN0IHVpbnQxMjgga1NlZWQxMjgoa1NlZWQwLCBrU2VlZDEpOworc3RhdGljIGNvbnN0
IGludCBrRGF0YVNpemUgPSAxIDw8IDIwOworc3RhdGljIGNvbnN0IGludCBrVGVzdFNpemUgPSAz
MDA7CisKK3N0YXRpYyBjaGFyIGRhdGFba0RhdGFTaXplXTsKKworLy8gSW5pdGlhbGl6ZSBkYXRh
IHRvIHBzZXVkb3JhbmRvbSB2YWx1ZXMuCit2b2lkIHNldHVwKCkgeworICB1aW50NjRfdCBhID0g
OTsKKyAgdWludDY0X3QgYiA9IDc3NzsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrRGF0YVNpemU7
IGkrKykgeworICAgIGEgKz0gYjsKKyAgICBiICs9IGE7CisgICAgYSA9IChhIF4gKGEgPj4gNDEp
KSAqIGswOworICAgIGIgPSAoYiBeIChiID4+IDQxKSkgKiBrMCArIGk7CisgICAgdWludDhfdCB1
ID0gYiA+PiAzNzsKKyAgICBtZW1jcHkoZGF0YSArIGksICZ1LCAxKTsgIC8vIHVpbnQ4X3QgLT4g
Y2hhcgorICB9Cit9CisKKyNkZWZpbmUgQyh4KSAweCMjeCMjVUxMCitzdGF0aWMgY29uc3QgdWlu
dDY0X3QgdGVzdGRhdGFba1Rlc3RTaXplXVsxNl0gPSB7CisgICAge0MoOWFlMTZhM2IyZjkwNDA0
ZiksIEMoNzUxMDZkYjg5MDIzN2E0YSksIEMoM2ZlYWM1ZjYzNjAzOTc2NiksCisgICAgIEMoM2Rm
MDlkZmM2NGMwOWEyYiksIEMoM2NiNTQwYzM5MmU1MWUyOSksIEMoNmI1NjM0M2ZlYWMwNjYzKSwK
KyAgICAgQyg1YjdiYzUwZmQ4ZThhZDkyKSwgQygzZGYwOWRmYzY0YzA5YTJiKSwgQygzY2I1NDBj
MzkyZTUxZTI5KSwKKyAgICAgQyg2YjU2MzQzZmVhYzA2NjMpLCBDKDViN2JjNTBmZDhlOGFkOTIp
LCBDKDk1MTYyZjI0ZTZhNWY5MzApLAorICAgICBDKDY4MDhiZGY0ZjFlYjA2ZTApLCBDKGIzYjFm
M2E2N2I2MjRkODIpLCBDKGM5YTYyZjEyYmQ0Y2Q4MGIpLAorICAgICBDKGRjNTZkMTdhKX0sCisg
ICAge0MoNTQxMTUwZTg3ZjQxNWU5NiksIEMoMWFlZjBkMjRiMzE0OGExYSksIEMoYmFjYzMwMGUx
ZTgyMzQ1YSksCisgICAgIEMoYzNjZGM0MWUxZGYzMzUxMyksIEMoMmMxMzhmZjI1OTZkNDJmNiks
IEMoZjU4ZTkwODJhZWQzMDU1ZiksCisgICAgIEMoMTYyZTE5MmIyOTU3MTYzZCksIEMoYzNjZGM0
MWUxZGYzMzUxMyksIEMoMmMxMzhmZjI1OTZkNDJmNiksCisgICAgIEMoZjU4ZTkwODJhZWQzMDU1
ZiksIEMoMTYyZTE5MmIyOTU3MTYzZCksIEMoZmI5OWU4NWUwZDE2ZjkwYyksCisgICAgIEMoNjA4
NDYyYzE1YmRmMjdlOCksIEMoZTdkMmM1Yzk0MzU3MmI2MiksIEMoMWJhYWE5MzI3NjQyNzk4Yyks
CisgICAgIEMoOTk5MjkzMzQpfSwKKyAgICB7QyhmMzc4NmE0YjI1ODI3YzEpLCBDKDM0ZWUxYTJi
Zjc2N2JkMWMpLCBDKDJmMTVjYTJlYmZiNjMxZjIpLAorICAgICBDKDMxNDliYTFkYWM3NzI3MGQp
LCBDKDcwZTJlMDc2ZTMwNzAzYyksIEMoNTliY2M5NjU5YmM1Mjk2KSwKKyAgICAgQyg5ZWNiYzgx
MzJhZTJmMWQ3KSwgQygzMTQ5YmExZGFjNzcyNzBkKSwgQyg3MGUyZTA3NmUzMDcwM2MpLAorICAg
ICBDKDU5YmNjOTY1OWJjNTI5NiksIEMoOWVjYmM4MTMyYWUyZjFkNyksIEMoYTAxZDMwNzg5YmFk
N2NmMiksCisgICAgIEMoYWUwM2ZlMzcxOTgxYTBlMCksIEMoMTI3ZTM4ODNiODc4ODkzNCksIEMo
ZDBhYzNkNGMwYTZmY2EzMiksCisgICAgIEMoNDI1MmVkYjcpfSwKKyAgICB7QyhlZjkyM2E3YTFh
Zjc4ZWFiKSwgQyg3OTE2M2IxZTFlOWE5YjE4KSwgQyhkZjNiMmFjYTZlMWU0YTMwKSwKKyAgICAg
QygyMTkzZmI3NjIwY2JmMjNiKSwgQyg4YjZhOGZmMDZjZGE4MzAyKSwgQygxYTQ0NDY5YWZkM2Uw
OTFmKSwKKyAgICAgQyg4YjA0NDkzNzY2MTI1MDYpLCBDKDIxOTNmYjc2MjBjYmYyM2IpLCBDKDhi
NmE4ZmYwNmNkYTgzMDIpLAorICAgICBDKDFhNDQ0NjlhZmQzZTA5MWYpLCBDKDhiMDQ0OTM3NjYx
MjUwNiksIEMoZTlkOWQ0MWMzMmFkOTFkMSksCisgICAgIEMoYjQ0YWIwOWY1OGUzYzYwOCksIEMo
MTllOTE3NWY5ZmNmNzg0KSwgQyg4MzliM2M5NTgxYjRhNDgwKSwgQyhlYmMzNGYzYyl9LAorICAg
IHtDKDExZGY1OTI1OTZmNDFkODgpLCBDKDg0M2VjMGJjZTkwNDJmOWMpLCBDKGNjZTJlYTFlMDhi
MWViMzApLAorICAgICBDKDRkMDllNDJmMDljYzM0OTUpLCBDKDY2NjIzNjYzMWI5ZjI1M2IpLCBD
KGQyOGIzNzYzY2QwMmI2YTMpLAorICAgICBDKDQzYjI0OWU1N2M0ZDBjMWIpLCBDKDRkMDllNDJm
MDljYzM0OTUpLCBDKDY2NjIzNjYzMWI5ZjI1M2IpLAorICAgICBDKGQyOGIzNzYzY2QwMmI2YTMp
LCBDKDQzYjI0OWU1N2M0ZDBjMWIpLCBDKDM4ODcxMDFjOGFkZWExMDEpLAorICAgICBDKDhhOTM1
NWQ0ZWZjOTFkZjApLCBDKDNlNjEwOTQ0Y2M5ZmVjZmQpLCBDKDViZjllYjYwYjA4YWMwY2UpLAor
ICAgICBDKDI2ZjJiNDYzKX0sCisgICAge0MoODMxZjQ0OGJkYzU2MDBiMyksIEMoNjJhMjRiZTMx
MjBhNjkxOSksIEMoMWI0NDA5OGE0MWUwMTBkYSksCisgICAgIEMoZGMwN2RmNTNiOTQ5YzZiKSwg
QyhkMmIxMWIyMDgxYWViMDAyKSwgQyhkMjEyYjAyYzFiMTNmNzcyKSwKKyAgICAgQyhjMGJlZDI5
N2I0YmUxOTEyKSwgQyhkYzA3ZGY1M2I5NDljNmIpLCBDKGQyYjExYjIwODFhZWIwMDIpLAorICAg
ICBDKGQyMTJiMDJjMWIxM2Y3NzIpLCBDKGMwYmVkMjk3YjRiZTE5MTIpLCBDKDY4MmQzZDJhZDMw
NGU0YWYpLAorICAgICBDKDQwZTkxMTJhNjU1NDM3YTEpLCBDKDI2OGIwOWY3ZWUwOTg0M2YpLCBD
KDZiOTY5OGQ0Mzg1OWNhNDcpLAorICAgICBDKGIwNDJjMDQ3KX0sCisgICAge0MoM2VjYTgwM2U3
MDMwNDg5NCksIEMoZDgwZGU3NjdlNGE5MjBhKSwgQyhhNTFjZmJiMjkyZWZkNTNkKSwKKyAgICAg
QyhkMTgzZGNkYTVmNzNlZGZhKSwgQygzYTkzY2JmNDBmMzAxMjhjKSwgQygxYTkyNTQ0ZDBiNDFk
YmRhKSwKKyAgICAgQyhhZWMyYzRiZWU4MTk3NWUxKSwgQyhkMTgzZGNkYTVmNzNlZGZhKSwgQygz
YTkzY2JmNDBmMzAxMjhjKSwKKyAgICAgQygxYTkyNTQ0ZDBiNDFkYmRhKSwgQyhhZWMyYzRiZWU4
MTk3NWUxKSwgQyg1ZjkxODE0ZDExMjZiYTRiKSwKKyAgICAgQyhmOGFjNTdlZWU4N2ZjZjFmKSwg
QyhjNTVjNjQ0YTVkMDAyM2NkKSwgQyhhZGI3NjFlODI3ODI1ZmYyKSwKKyAgICAgQyhlNzNiYjBh
OCl9LAorICAgIHtDKDFiNWEwNjNmYjRjN2Y5ZjEpLCBDKDMxOGRiYzI0YWY2NmRlZTkpLCBDKDEw
ZWY3YjMyZDVjNzE5YWYpLAorICAgICBDKGIxNDBhMDJlZjVjOTc3MTIpLCBDKGI3ZDAwZWYwNjVi
NTFiMzMpLCBDKDYzNTEyMWQ1MzI4OTdkOTgpLAorICAgICBDKDUzMmRhZjIxYjMxMmE2ZDYpLCBD
KGIxNDBhMDJlZjVjOTc3MTIpLCBDKGI3ZDAwZWYwNjViNTFiMzMpLAorICAgICBDKDYzNTEyMWQ1
MzI4OTdkOTgpLCBDKDUzMmRhZjIxYjMxMmE2ZDYpLCBDKGMwYjA5Yjc1ZDk0MzkxMCksCisgICAg
IEMoOGM4NGRmYjVlZjJhOGU5NiksIEMoZTVjMDYwMzRiMDM1MzQzMyksIEMoMzE3MGZhZjFjMzNh
NDVkZCksCisgICAgIEMoOTFkZmRkNzUpfSwKKyAgICB7QyhhMGYxMDE0OWEwZTUzOGQ2KSwgQyg2
OWQwMDhjMjBmODc0MTlmKSwgQyg0MWIzNjM3NjE4NWIzZTllKSwKKyAgICAgQygyNmI2Njg5OTYw
Y2NmODFkKSwgQyg1NWYyM2IyN2JiOWVmZDk0KSwgQygzYTE3ZjYxNjZkZDc2NWRiKSwKKyAgICAg
QyhjODkxYThhNjI5MzFlNzgyKSwgQygyNmI2Njg5OTYwY2NmODFkKSwgQyg1NWYyM2IyN2JiOWVm
ZDk0KSwKKyAgICAgQygzYTE3ZjYxNjZkZDc2NWRiKSwgQyhjODkxYThhNjI5MzFlNzgyKSwgQygy
Mzg1MmRjMzdkZGQyNjA3KSwKKyAgICAgQyg4YjdmMWIxZWM4OTc4MjllKSwgQyhkMWQ2OTQ1MmE1
NGVlZDhhKSwgQyg1NjQzMWYyYmQ3NjZlYzI0KSwKKyAgICAgQyhjODdmOTVkZSl9LAorICAgIHtD
KGZiOGQ5YzcwNjYwYjkxMGIpLCBDKGE0NWIwY2MzNDc2YmZmMWIpLCBDKGIyOGQxOTk2MTQ0ZjAy
MDcpLAorICAgICBDKDk4ZWMzMTExM2U1ZTM1ZDIpLCBDKDVlNGFlYjg1M2YxYjlhYTcpLCBDKGJj
ZjVjOGZlNDQ2NWI3YzgpLAorICAgICBDKGIxZWEzYTgyNDM5OTZmMTUpLCBDKDk4ZWMzMTExM2U1
ZTM1ZDIpLCBDKDVlNGFlYjg1M2YxYjlhYTcpLAorICAgICBDKGJjZjVjOGZlNDQ2NWI3YzgpLCBD
KGIxZWEzYTgyNDM5OTZmMTUpLCBDKGNhYmJjY2VkYjY0MDc1NzEpLAorICAgICBDKGQxZTQwYTg0
YzQ0NWVjM2EpLCBDKDMzMzAyYWE5MDhjZjQwMzkpLCBDKDlmMTVmNzkyMTFiNWNkZjgpLAorICAg
ICBDKDNmNTUzOGVmKX0sCisgICAge0MoMjM2ODI3YmVhZTI4MmE0NiksIEMoZTQzOTcwMjIxMTM5
Yzk0NiksIEMoNGYzYWM2ZmFhODM3YTNhYSksCisgICAgIEMoNzFmZWMwZjk3MjI0ODkxNSksIEMo
MjE3MGVjMjA2MWYyNDU3NCksIEMoOWViMzQ2YjZjYWEzNmU4MiksCisgICAgIEMoMjkwOGYwZmRi
Y2E0OGU3MyksIEMoNzFmZWMwZjk3MjI0ODkxNSksIEMoMjE3MGVjMjA2MWYyNDU3NCksCisgICAg
IEMoOWViMzQ2YjZjYWEzNmU4MiksIEMoMjkwOGYwZmRiY2E0OGU3MyksIEMoODEwMWM5OWYwN2M2
NGFiYiksCisgICAgIEMoYjlmNGIwMmIxYjZhOTZhNyksIEMoNTgzYTJiMTBjZDIyMmY4OCksIEMo
MTk5ZGFlNGNmOWRiMjRjKSwgQyg3MGViMWExZil9LAorICAgIHtDKGMzODVlNDM1MTM2ZWNmN2Mp
LCBDKGQ5ZDE3MzY4ZmY2YzRhMDgpLCBDKDFiMzFlZWQ0ZTUyNTFhNjcpLAorICAgICBDKGRmMDFh
MzIyYzQzYTYyMDApLCBDKDI5OGI2NWExNzE0YjVhN2UpLCBDKDkzM2I4M2YwYWVkZjIzYyksCisg
ICAgIEMoMTU3YmNiNDRkNjNmNzY1YSksIEMoZGYwMWEzMjJjNDNhNjIwMCksIEMoMjk4YjY1YTE3
MTRiNWE3ZSksCisgICAgIEMoOTMzYjgzZjBhZWRmMjNjKSwgQygxNTdiY2I0NGQ2M2Y3NjVhKSwg
QyhkNmU5ZmM3YTI3MmQ4YjUxKSwKKyAgICAgQygzZWU1MDczZWYxYTliNzc3KSwgQyg2MzE0OWUz
MWZhYzAyYzU5KSwgQygyZjc5NzlmZjYzNmJhMWQ4KSwKKyAgICAgQyhjZmQ2M2I4Myl9LAorICAg
IHtDKGUzZjY4MjhiNjAxNzA4NmQpLCBDKDIxYjRkMTkwMDU1NGIzYjApLCBDKGJlZjM4YmUxODA5
ZTI0ZjEpLAorICAgICBDKGQ5MzI1MTc1ODk4NWVlNmMpLCBDKDMyYTllOWY4MmJhMmE5MzIpLCBD
KDM4MjJhYWNhYTk1ZjMzMjkpLAorICAgICBDKGRiMzQ5YjJmOTBhNDkwZDgpLCBDKGQ5MzI1MTc1
ODk4NWVlNmMpLCBDKDMyYTllOWY4MmJhMmE5MzIpLAorICAgICBDKDM4MjJhYWNhYTk1ZjMzMjkp
LCBDKGRiMzQ5YjJmOTBhNDkwZDgpLCBDKDhkNDkxOTRhODk0YTE5Y2EpLAorICAgICBDKDc5YTc4
YjA2ZTQyNzM4ZTYpLCBDKDdlMGYxZWRhM2QzOTBjNjYpLCBDKDFjMjkxZDdlNjQxMTAwYTUpLAor
ICAgICBDKDg5NGE1MmVmKX0sCisgICAge0MoODUxZmZmMjg1NTYxZGNhMCksIEMoNGQxMjc3ZDcz
Y2RmNDE2ZiksIEMoMjhjY2ZmYTYxMDEwZWJlMiksCisgICAgIEMoNzdhNGNjYWNkMTMxZDllZSks
IEMoZTFkMDhlZWIyZjBlMjlhYSksIEMoNzBiOWUzMDUxMzgzZmE0NSksCisgICAgIEMoNTgyZDAx
MjA0MjVjYWJhKSwgQyg3N2E0Y2NhY2QxMzFkOWVlKSwgQyhlMWQwOGVlYjJmMGUyOWFhKSwKKyAg
ICAgQyg3MGI5ZTMwNTEzODNmYTQ1KSwgQyg1ODJkMDEyMDQyNWNhYmEpLCBDKGE3NDBlZWYxODQ2
ZTQ1NjQpLAorICAgICBDKDU3MmRkZGI3NGFjM2FlMDApLCBDKGZkYjVjYTk1NzkxNjNiYmQpLCBD
KGE2NDliOWI3OTljNjE1ZDIpLAorICAgICBDKDljZGU2YTU0KX0sCisgICAge0MoNjExNTJhNjM1
OTVhOTZkOSksIEMoZDFhM2E5MWVmM2E3YmE0NSksIEMoNDQzYjZiYjRhNDkzYWQwYyksCisgICAg
IEMoYTE1NDI5NmQxMTM2MmQwNiksIEMoZDBmMGJmMWYxY2IwMmZjMSksIEMoY2NiODdlMDkzMDlm
OTBkMSksCisgICAgIEMoYjI0YThlNDg4MTkxMTEwMSksIEMoYTE1NDI5NmQxMTM2MmQwNiksIEMo
ZDBmMGJmMWYxY2IwMmZjMSksCisgICAgIEMoY2NiODdlMDkzMDlmOTBkMSksIEMoYjI0YThlNDg4
MTkxMTEwMSksIEMoMWE0ODFiNDUyODU1OWY1OCksCisgICAgIEMoYmY4MzdhMzE1MDg5Njk5NSks
IEMoNDk4OWVmNmI5NDFhMzc1NyksIEMoMmU3MjVhYjcyZDBiMjk0OCksCisgICAgIEMoNmM0ODk4
ZDUpfSwKKyAgICB7Qyg0NDQ3M2UwM2JlMzA2Yzg4KSwgQygzMDA5Nzc2MWY4NzI0NzJhKSwgQyg5
ZmQxYjY2OWJmYWQ4MmQ3KSwKKyAgICAgQygzYmFiMThiMTY0Mzk2NzgzKSwgQyg0N2UzODVmZjlk
NGMwNmYpLCBDKDE4MDYyMDgxYmY1NThkZiksCisgICAgIEMoNjM0MTZlYjY4ZjEwNGEzNiksIEMo
M2JhYjE4YjE2NDM5Njc4MyksIEMoNDdlMzg1ZmY5ZDRjMDZmKSwKKyAgICAgQygxODA2MjA4MWJm
NTU4ZGYpLCBDKDYzNDE2ZWI2OGYxMDRhMzYpLCBDKDRhYmRhMTU2MGM0N2FjODApLAorICAgICBD
KDFlYTBlNjNkYzY1ODdhZWUpLCBDKDMzZWM3OWQ5MmViYzFkZSksIEMoOTRmOWRjY2VmNzcxZTA0
OCksIEMoMTNlMTk3OGUpfSwKKyAgICB7QygzZWFkNWYyMWQzNDQwNTYpLCBDKGZiNjQyMDM5M2Nm
YjA1YzMpLCBDKDQwNzkzMjM5NGNiYmQzMDMpLAorICAgICBDKGFjMDU5NjE3ZjU5MDY2NzMpLCBD
KDk0ZDUwZDNkY2QzMDY5YTcpLCBDKDJiMjZjM2I5MmRlYTBmMCksCisgICAgIEMoOTliNzM3NGNj
NzhmYzNmYiksIEMoYWMwNTk2MTdmNTkwNjY3MyksIEMoOTRkNTBkM2RjZDMwNjlhNyksCisgICAg
IEMoMmIyNmMzYjkyZGVhMGYwKSwgQyg5OWI3Mzc0Y2M3OGZjM2ZiKSwgQygxYThlM2M3M2NkZDQw
ZWU4KSwKKyAgICAgQyhjYmI1ZmNhMDY3NDdmNDViKSwgQyhjZWVjNDQyMzhiMjkxODQxKSwgQygy
OGJmMzVjY2U5YzkwYTI1KSwgQyg1MWI0YmE4KX0sCisgICAge0MoNmFiYmZkZTM3ZWUwM2I1Yiks
IEMoODNmZWJmMTg4ZDJjYzExMyksIEMoY2RhN2I2MmQ5NGQ1YjhlZSksCisgICAgIEMoYTQzNzU1
OTBiOGFlN2M4MiksIEMoMTY4ZmQ0MmY5ZWNhZTRmZiksIEMoMjNiYmRlNDNkZTJjYjIxNCksCisg
ICAgIEMoYThjMzMzMTEyYTI0M2M4YyksIEMoYTQzNzU1OTBiOGFlN2M4MiksIEMoMTY4ZmQ0MmY5
ZWNhZTRmZiksCisgICAgIEMoMjNiYmRlNDNkZTJjYjIxNCksIEMoYThjMzMzMTEyYTI0M2M4Yyks
IEMoMTBhYzAxMmU4YzUxOGI0OSksCisgICAgIEMoNjRhNDQ2MDVkOGIyOTQ1OCksIEMoYTY3ZTcw
MWQyYTY3OTA3NSksIEMoM2EzYTIwZjQzZWM5MjMwMyksCisgICAgIEMoYjZiMDZlNDApfSwKKyAg
ICB7Qyg5NDNlN2VkNjNiM2MwODApLCBDKDFlZjIwN2U5NDQ0ZWY3ZjgpLCBDKGVmNGE5ZjlmOGM2
ZjliNGEpLAorICAgICBDKDZiNTRmYzM4ZDZhODQxMDgpLCBDKDMyZjQyMTJhNDdhNDY2NSksIEMo
NmI1YTlhOGY2NGVlMWRhNiksCisgICAgIEMoOWY3NGU4NmM2ZGE2OTQyMSksIEMoNmI1NGZjMzhk
NmE4NDEwOCksIEMoMzJmNDIxMmE0N2E0NjY1KSwKKyAgICAgQyg2YjVhOWE4ZjY0ZWUxZGE2KSwg
Qyg5Zjc0ZTg2YzZkYTY5NDIxKSwgQyg5NDZkZDBjYjMwYzFhMDhlKSwKKyAgICAgQyhmZGYzNzY5
NTY5MDdlYWFhKSwgQyhhNTkwNzRjNmVlYzAzMDI4KSwgQyhiMWEzYWJjZjI4M2YzNGFjKSwgQygy
NDBhMmYyKX0sCisgICAge0MoZDcyY2UwNTE3MWVmOGExYSksIEMoYzZiZDZiZDg2OTIwMzg5NCks
IEMoYzc2MGU2Mzk2NDU1ZDIzYSksCisgICAgIEMoZjg2YWYwYjQwZGNjZTdiKSwgQyg4ZDNjMTVk
NjEzMzk0ZDNjKSwgQyg0OTFlNDAwNDkxY2Q0ZWNlKSwKKyAgICAgQyg3YzE5ZDM1MzBlYTM1NDdm
KSwgQyhmODZhZjBiNDBkY2NlN2IpLCBDKDhkM2MxNWQ2MTMzOTRkM2MpLAorICAgICBDKDQ5MWU0
MDA0OTFjZDRlY2UpLCBDKDdjMTlkMzUzMGVhMzU0N2YpLCBDKDEzNjI5NjNhMWRjMzJhZjkpLAor
ICAgICBDKGZiOWJjMTE3NjJlMTM4NWMpLCBDKDllMTY0ZWYxZjUzNzYwODMpLCBDKDZjMTU4MTli
NWU4MjhhN2UpLAorICAgICBDKDVkY2VmYzMwKX0sCisgICAge0MoNDE4MjgzMmI1MmQ2MzczNSks
IEMoMzM3MDk3ZTEyM2VlYTQxNCksIEMoYjVhNzJjYTA0NTZkZjkxMCksCisgICAgIEMoN2ViYzAz
NDIzNWJjMTIyZiksIEMoZDlhNzc4M2Q0ZWRkODA0OSksIEMoNWY4YjA0YTE1YWU0MjM2MSksCisg
ICAgIEMoZmMxOTMzNjMzMzY0NTNkZCksIEMoN2ViYzAzNDIzNWJjMTIyZiksIEMoZDlhNzc4M2Q0
ZWRkODA0OSksCisgICAgIEMoNWY4YjA0YTE1YWU0MjM2MSksIEMoZmMxOTMzNjMzMzY0NTNkZCks
IEMoOWI2YzUwMjI0ZWY4YzRmOCksCisgICAgIEMoYmEyMjVjNzk0MmQxNmMzZiksIEMoNmY2ZDU1
MjI2YTczYzQxMiksIEMoYWJjYTA2MWZlMDcyMTUyYSksCisgICAgIEMoN2E0OGIxMDUpfSwKKyAg
ICB7QyhkNmNkYWU4OTI1ODRhMmNiKSwgQyg1OGRlMGZhNGVjYTE3ZGNkKSwgQyg0M2RmMzBiOGY1
ZjFjYjAwKSwKKyAgICAgQyg5ZTRlYTVhNDk0MWUwOTdkKSwgQyg1NDdlMDQ4ZDVhOWRhYWJhKSwg
QyhlYjZlY2JiMGI4MzFkMTg1KSwKKyAgICAgQyhlMDE2OGRmNWZhZDBjNjcwKSwgQyg5ZTRlYTVh
NDk0MWUwOTdkKSwgQyg1NDdlMDQ4ZDVhOWRhYWJhKSwKKyAgICAgQyhlYjZlY2JiMGI4MzFkMTg1
KSwgQyhlMDE2OGRmNWZhZDBjNjcwKSwgQyhhZmE5NzA1Zjk4YzJjOTZhKSwKKyAgICAgQyg3NDk0
MzZmNDgxMzdhOTZiKSwgQyg3NTljMDQxZmMyMWRmNDg2KSwgQyhiMjNiZjQwMDEwN2FhMmVjKSwK
KyAgICAgQyhmZDU1MDA3Yil9LAorICAgIHtDKDVjOGU5MGJjMjY3YzVlZTQpLCBDKGU5YWUwNDQw
NzVkOTkyZDkpLCBDKGYyMzRjYmZkMWYwYTFlNTkpLAorICAgICBDKGNlMjc0NDUyMTk0NGYxNGMp
LCBDKDEwNGY4MDMyZjk5ZGMxNTIpLCBDKDRlN2Y0MjViZmFjNjdjYTcpLAorICAgICBDKDk0NjFi
OTExYTFjNmQ1ODkpLCBDKGNlMjc0NDUyMTk0NGYxNGMpLCBDKDEwNGY4MDMyZjk5ZGMxNTIpLAor
ICAgICBDKDRlN2Y0MjViZmFjNjdjYTcpLCBDKDk0NjFiOTExYTFjNmQ1ODkpLCBDKDVlNWVjYzcy
NmRiOGI2MGQpLAorICAgICBDKGNjZTY4YjA1ODYwODNiNTEpLCBDKDhhN2Y4ZTU0YTljYmEwZmMp
LCBDKDQyZjAxMDE4MWQxNmYwNDkpLAorICAgICBDKDZiOTU4OTRjKX0sCisgICAge0MoYmJkN2Yz
MGFjMzEwYTZmMyksIEMoYjIzYjU3MGQyNjY2Njg1ZiksIEMoZmIxM2ZiMDhjOTgxNGZlNyksCisg
ICAgIEMoNGVlMTA3MDQyZTUxMjM3NCksIEMoMWUyYzhjMGQxNjA5N2UxMyksIEMoMjEwYzc1MDA5
OTVhYTBlNiksCisgICAgIEMoNmMxMzE5MDU1NzEwNjQ1NyksIEMoNGVlMTA3MDQyZTUxMjM3NCks
IEMoMWUyYzhjMGQxNjA5N2UxMyksCisgICAgIEMoMjEwYzc1MDA5OTVhYTBlNiksIEMoNmMxMzE5
MDU1NzEwNjQ1NyksIEMoYTk5YjMxYzk2Nzc3ZjM4MSksCisgICAgIEMoODMxMmFlODMwMWQzODZj
MCksIEMoZWQ1MDQyYjJhNGZhOTZhMyksIEMoZDcxZDFiYjIzOTA3ZmU5NyksCisgICAgIEMoMzM2
MGU4MjcpfSwKKyAgICB7QygzNmEwOTdhYTQ5NTE5ZDk3KSwgQyg4MjA0MzgwYTczYzQwNjUpLCBD
KDc3YzIwMDRiZGQ5ZTI3NmEpLAorICAgICBDKDZlZTFmODE3Y2UwYjdhZWUpLCBDKGU5ZGNiMzUw
N2YwNTk2Y2EpLCBDKDZiYzYzYzY2NmI1MTAwZTIpLAorICAgICBDKGUwYjA1NmYxODIxNzUyYWYp
LCBDKDZlZTFmODE3Y2UwYjdhZWUpLCBDKGU5ZGNiMzUwN2YwNTk2Y2EpLAorICAgICBDKDZiYzYz
YzY2NmI1MTAwZTIpLCBDKGUwYjA1NmYxODIxNzUyYWYpLCBDKDhlYTExMTRlNjAyOTI2NzgpLAor
ICAgICBDKDkwNGI4MGI0NmJlY2M3NyksIEMoNDZjZDliYjZlOWRmZjUyZiksIEMoNGM5MWUzYjY5
ODM1NTU0MCksIEMoNDUxNzdlMGIpfSwKKyAgICB7QyhkYzc4Y2IwMzJjNDkyMTcpLCBDKDExMjQ2
NDA4M2Y4M2UwM2EpLCBDKDk2YWU1M2UyODE3MGMwZjUpLAorICAgICBDKGQzNjdmZjU0OTUyYTk1
OCksIEMoY2RhZDkzMDY1NzM3MTE0NyksIEMoYWEyNGRjMmE5NTczZDVmZSksCisgICAgIEMoZWIx
MzZkYWE4OWRhNTExMCksIEMoZDM2N2ZmNTQ5NTJhOTU4KSwgQyhjZGFkOTMwNjU3MzcxMTQ3KSwK
KyAgICAgQyhhYTI0ZGMyYTk1NzNkNWZlKSwgQyhlYjEzNmRhYTg5ZGE1MTEwKSwgQyhkZTYyMzAw
NWY2ZDQ2MDU3KSwKKyAgICAgQyhiNTBjMGM5MmI5NWU5YjdmKSwgQyhhOGFhNTQwNTBiODFjOTc4
KSwgQyg1NzNmYjVjNzg5NWFmOWI1KSwKKyAgICAgQyg3YzZmZmZlNCl9LAorICAgIHtDKDQ0MTU5
M2UwZGE5MjJkZmUpLCBDKDkzNmVmNDYwNjE0NjliMzIpLCBDKDIwNGExOTIxMTk3ZGRkODcpLAor
ICAgICBDKDUwZDhhNzBlN2E4ZDhmNTYpLCBDKDI1NmQxNTBhZTc1ZGFiNzYpLCBDKGU4MWY0YzRh
MTk4OTAzNmEpLAorICAgICBDKGQwZjhkYjM2NWY5ZDdlMDApLCBDKDUwZDhhNzBlN2E4ZDhmNTYp
LCBDKDI1NmQxNTBhZTc1ZGFiNzYpLAorICAgICBDKGU4MWY0YzRhMTk4OTAzNmEpLCBDKGQwZjhk
YjM2NWY5ZDdlMDApLCBDKDc1M2Q2ODY2NzdiMTQ1MjIpLAorICAgICBDKDlmNzZlMGNiNmYyZDBh
NjYpLCBDKGFiMTRmOTU5ODhlYzBkMzkpLCBDKDk3NjIxZDlkYTljOTgxMmYpLAorICAgICBDKGJi
Yzc4ZGE0KX0sCisgICAge0MoMmJhMzg4M2Q3MWNjMjEzMyksIEMoNzJmMmJiYjMyYmVkMWEzYyks
IEMoMjdlMWJkOTZkNDg0MzI1MSksCisgICAgIEMoYTkwZjc2MWU4ZGIxNTQzYSksIEMoYzMzOWUy
M2MwOTcwM2NkOCksIEMoZjBjNjYyNGM0YjA5OGZkMyksCisgICAgIEMoMWJhZTIwNTNlNDFmYTRk
OSksIEMoYTkwZjc2MWU4ZGIxNTQzYSksIEMoYzMzOWUyM2MwOTcwM2NkOCksCisgICAgIEMoZjBj
NjYyNGM0YjA5OGZkMyksIEMoMWJhZTIwNTNlNDFmYTRkOSksIEMoMzU4OWUyNzNjMjJiYTA1OSks
CisgICAgIEMoNjM3OTgyNDZlNTkxMWEwYiksIEMoMThlNzEwZWMyNjhmYzVkYyksIEMoNzE0YTEy
MmRlMWQwNzRmMyksCisgICAgIEMoYzVjMjVkMzkpfSwKKyAgICB7QyhmMmI2ZDJhZGY4NDIzNjAw
KSwgQyg3NTE0ZTJmMDE2YTQ4NzIyKSwgQyg0MzA0NTc0M2E1MDM5NmJhKSwKKyAgICAgQygyM2Rh
Y2I4MTE2NTJhZDRmKSwgQyhjOTgyZGE0ODBlMGQ0YzdkKSwgQygzYTljOGVkNWEzOTlkMGE5KSwK
KyAgICAgQyg5NTFiOGQwODQ2OTFkNGU0KSwgQygyM2RhY2I4MTE2NTJhZDRmKSwgQyhjOTgyZGE0
ODBlMGQ0YzdkKSwKKyAgICAgQygzYTljOGVkNWEzOTlkMGE5KSwgQyg5NTFiOGQwODQ2OTFkNGU0
KSwgQyhkOWY4N2I0OTg4Y2ZmMmY3KSwKKyAgICAgQygyMTdhMTkxZDk4NmFhM2JjKSwgQyg2YWQy
M2M1NmI0ODAzNTApLCBDKGRkNzg2NzM5MzhjZWIyZTcpLCBDKGI2ZTVkMDZlKX0sCisgICAge0Mo
MzhmZmZlN2YzNjgwZDYzYyksIEMoZDUxMzMyNTI1NWE3YTZkMSksIEMoMzFlZDQ3NzkwZjZjYTYy
ZiksCisgICAgIEMoYzgwMWZhYWEwYTJlMzMxZiksIEMoNDkxZGJjNTgyNzljN2Y4OCksIEMoOWMw
MTc4ODQ4MzIxYzk3YSksCisgICAgIEMoOWQ5MzRmODE0ZjRkNmEzYyksIEMoYzgwMWZhYWEwYTJl
MzMxZiksIEMoNDkxZGJjNTgyNzljN2Y4OCksCisgICAgIEMoOWMwMTc4ODQ4MzIxYzk3YSksIEMo
OWQ5MzRmODE0ZjRkNmEzYyksIEMoNjA2YTNlNGZjODc2MzE5MiksCisgICAgIEMoYmMxNWNiMzZh
Njc3ZWU4NCksIEMoNTJkNTkwNDE1N2UxZmU3MSksIEMoMTU4OGRkOGIxMTQ1Yjc5YiksCisgICAg
IEMoNjE3ODUwNGUpfSwKKyAgICB7QyhiNzQ3N2JmMGI5Y2UzN2M2KSwgQyg2M2IxYzU4MGE3ZmQw
MmE0KSwgQyhmNjQzM2I5ZjEwYTVkYWMpLAorICAgICBDKDY4ZGQ3NmRiOWQ2NGVjYTcpLCBDKDM2
Mjk3NjgyYjY0YjY3KSwgQyg0MmIxOTJkNzFmNDE0YjdhKSwKKyAgICAgQyg3OTY5MmNlZjQ0ZmEw
MjA2KSwgQyg2OGRkNzZkYjlkNjRlY2E3KSwgQygzNjI5NzY4MmI2NGI2NyksCisgICAgIEMoNDJi
MTkyZDcxZjQxNGI3YSksIEMoNzk2OTJjZWY0NGZhMDIwNiksIEMoZjA5NzkyNTJmNDc3NmQwNyks
CisgICAgIEMoNGI4N2NkNGYxYzliYmY1MiksIEMoNTFiODRiYmM2MzEyYzcxMCksIEMoMTUwNzIw
ZmJmODU0MjhhNyksCisgICAgIEMoYmQ0YzM2MzcpfSwKKyAgICB7Qyg1NWJkYjBlNzFlM2VkZWJk
KSwgQyhjN2FiNTYyYmNmMDU2OGJjKSwgQyg0MzE2NjMzMmY5ZWU2ODRmKSwKKyAgICAgQyhiMmUy
NTk2NGNkNDA5MTE3KSwgQyhhMDEwNTk5ZDYyODdjNDEyKSwgQyhmYTVkNjQ2MWU3NjhkZGEyKSwK
KyAgICAgQyhjYjNjZTc0ZThlYzRmOTA2KSwgQyhiMmUyNTk2NGNkNDA5MTE3KSwgQyhhMDEwNTk5
ZDYyODdjNDEyKSwKKyAgICAgQyhmYTVkNjQ2MWU3NjhkZGEyKSwgQyhjYjNjZTc0ZThlYzRmOTA2
KSwgQyg2MTIwYWJmZDU0MWEyNjEwKSwKKyAgICAgQyhhYTg4YjE0OGNjOTU3OTRkKSwgQygyNjg2
Y2EzNWRmNjU5MGUzKSwgQyhjNmIwMmQxODYxNmNlOTRkKSwKKyAgICAgQyg2ZTdhYzQ3NCl9LAor
ICAgIHtDKDc4MmZhMWIwOGI0NzVlNyksIEMoZmI3MTM4OTUxYzYxYjIzYiksIEMoOTgyOTEwNWUy
MzRmYjExZSksCisgICAgIEMoOWE4YzQzMWY1MDBlZjA2ZSksIEMoZDg0ODU4MWE1ODBiNmMxMiks
IEMoZmVjZmUxMWUxM2EyYmRiNCksCisgICAgIEMoNmM0ZmEwMjczZDdkYjA4YyksIEMoOWE4YzQz
MWY1MDBlZjA2ZSksIEMoZDg0ODU4MWE1ODBiNmMxMiksCisgICAgIEMoZmVjZmUxMWUxM2EyYmRi
NCksIEMoNmM0ZmEwMjczZDdkYjA4YyksIEMoNDgyZjQzYmY1YWU1OWZjYiksCisgICAgIEMoZjY1
MWZiY2ExMDVkNzllNiksIEMoZjA5Zjc4Njk1ZDg2NTgxNyksIEMoN2E5OWQwMDkyMDg1Y2Y0Nyks
CisgICAgIEMoMWZiNGI1MTgpfSwKKyAgICB7QyhjNWRjMTliODc2ZDM3YTgwKSwgQygxNWZmY2Zm
NjY2Y2ZkNzEwKSwgQyhlOGMzMGM3MjAwMzEwM2UyKSwKKyAgICAgQyg3ODcwNzY1YjQ3MGIyYzVk
KSwgQyg3OGE5MTAzZmY5NjBkODIpLCBDKDdiYjUwZmZjOWZhYzc0YjMpLAorICAgICBDKDQ3N2U3
MGFiMmIzNDdkYjIpLCBDKDc4NzA3NjViNDcwYjJjNWQpLCBDKDc4YTkxMDNmZjk2MGQ4MiksCisg
ICAgIEMoN2JiNTBmZmM5ZmFjNzRiMyksIEMoNDc3ZTcwYWIyYjM0N2RiMiksIEMoYTYyNTIzOGJk
ZjdjMDdjZiksCisgICAgIEMoMTEyOGQ1MTUxNzQ4MDlmNSksIEMoYjBmMTY0N2U4MmY0NTg3Myks
IEMoMTc3OTJkMWM0ZjIyMmMzOSksCisgICAgIEMoMzFkMTNkNmQpfSwKKyAgICB7Qyg1ZTExNDE3
MTFkMmQ2NzA2KSwgQyhiNTM3ZjZkZWU4ZGU2OTMzKSwgQygzYWYwYTFmYmJlMDI3YzU0KSwKKyAg
ICAgQyhlYTM0OWRiYzE2YzJlNDQxKSwgQygzOGE3NDU1YjZhODc3NTQ3KSwgQyg1Zjk3Yjk3NTBl
MzY1NDExKSwKKyAgICAgQyhlOGNkZTdmOTNhZjQ5YTMpLCBDKGVhMzQ5ZGJjMTZjMmU0NDEpLCBD
KDM4YTc0NTViNmE4Nzc1NDcpLAorICAgICBDKDVmOTdiOTc1MGUzNjU0MTEpLCBDKGU4Y2RlN2Y5
M2FmNDlhMyksIEMoYmExMDE5MjVlYzFmN2UyNiksCisgICAgIEMoZDVlODRjYWI4MTkyYzcxZSks
IEMoZTI1NjQyNzcyNmZkZDYzMyksIEMoYTRmMzhlMmM2MTE2ODkwZCksCisgICAgIEMoMjZmYTcy
ZTMpfSwKKyAgICB7Qyg3ODJlZGY2ZGEwMDEyMzRmKSwgQyhmNDhjYmQ1YzY2YzQ4ZjMpLCBDKDgw
ODc1NGQxZTY0ZTJhMzIpLAorICAgICBDKDVkOWRkZTc3MzUzYjFhNmQpLCBDKDExZjU4YzU0NTgx
ZmE4YjEpLCBDKGRhOTBmYTdjMjhjMzc0NzgpLAorICAgICBDKDVlOWEyZWFmYzY3MGE4OGEpLCBD
KDVkOWRkZTc3MzUzYjFhNmQpLCBDKDExZjU4YzU0NTgxZmE4YjEpLAorICAgICBDKGRhOTBmYTdj
MjhjMzc0NzgpLCBDKDVlOWEyZWFmYzY3MGE4OGEpLCBDKGUzNWUxYmMxNzJlMDExZWYpLAorICAg
ICBDKGJmOTI1NWE0NDUwYWU3ZmUpLCBDKDU1Zjg1MTk0ZTI2YmM1NWYpLCBDKDRmMzI3ODczZTE0
ZDBlNTQpLAorICAgICBDKDZhNzQzM2JmKX0sCisgICAge0MoZDI2Mjg1ODQyZmYwNGQ0NCksIEMo
OGYzOGQ3MTM0MWVhY2NhOSksIEMoNWNhNDM2ZjRkYjdhODgzYyksCisgICAgIEMoYmY0MWU1Mzc2
YjlmMGVlYyksIEMoMjI1MmQyMWViN2UxYzBlOSksIEMoZjRiNzBhOTcxODU1ZTczMiksCisgICAg
IEMoNDBjNzY5NWFhMzY2MmFmZCksIEMoYmY0MWU1Mzc2YjlmMGVlYyksIEMoMjI1MmQyMWViN2Ux
YzBlOSksCisgICAgIEMoZjRiNzBhOTcxODU1ZTczMiksIEMoNDBjNzY5NWFhMzY2MmFmZCksIEMo
NzcwZmUxOWUxNmFiNzNiYiksCisgICAgIEMoZDYwM2ViZGE2MzkzZDc0OSksIEMoZTU4YzYyNDM5
YWE1MGRiZCksIEMoOTZkNTFlNWEwMmQyZDdjZiksCisgICAgIEMoNGU2ZGY3NTgpfSwKKyAgICB7
QyhjNmFiODMwODY1YTZiYWU2KSwgQyg2YWE4ZThkZDRiOTg4MTVjKSwgQyhlZmUzODQ2NzEzYzM3
MWU1KSwKKyAgICAgQyhhMTkyNGNiZjBiNWY5MjIyKSwgQyg3ZjQ4NzIzNjljMmI0MjU4KSwgQyhj
ZDZkYTMwNTMwZjNlYTg5KSwKKyAgICAgQyhiN2Y4YjlhNzA0ZTZjZWExKSwgQyhhMTkyNGNiZjBi
NWY5MjIyKSwgQyg3ZjQ4NzIzNjljMmI0MjU4KSwKKyAgICAgQyhjZDZkYTMwNTMwZjNlYTg5KSwg
QyhiN2Y4YjlhNzA0ZTZjZWExKSwgQyhmYTA2ZmY0MDQzM2ZkNTM1KSwKKyAgICAgQyhmYjFjMzZm
ZThmMDczN2YxKSwgQyhiYjcwNTA1NjExNzFmODApLCBDKGIxYmMyMzIzNTkzNWQ4OTcpLCBDKGQ1
N2Y2M2VhKX0sCisgICAge0MoNDRiM2ExOTI5MjMyODkyKSwgQyg2MWRjYTBlOTE0ZmMyMTcpLCBD
KGE2MDdjYzE0MjA5NmI5NjQpLAorICAgICBDKGY3ZGJjODQzM2M4OWIyNzQpLCBDKDJmNWY3MDU4
MWM5YjdkMzIpLCBDKDM5YmY1ZTVmZWM4MmRjY2EpLAorICAgICBDKDhhZGU1NjM4ODkwMWE2MTkp
LCBDKGY3ZGJjODQzM2M4OWIyNzQpLCBDKDJmNWY3MDU4MWM5YjdkMzIpLAorICAgICBDKDM5YmY1
ZTVmZWM4MmRjY2EpLCBDKDhhZGU1NjM4ODkwMWE2MTkpLCBDKGMxYzZhNzI1Y2FhYjNlYTkpLAor
ICAgICBDKGMxYzc5MDZjMmY4MGI4OTgpLCBDKDljMzg3MWEwNGNjODg0ZTYpLCBDKGRmMDE4MTNj
YmJkZjIxN2YpLAorICAgICBDKDUyZWY3M2IzKX0sCisgICAge0MoNGI2MDNkNzkzMmE4ZGU0Ziks
IEMoZmFlNjRjNDY0YjhhOGY0NSksIEMoOGZhZmFiNzU2NjFkNjAyYSksCisgICAgIEMoOGZmZTg3
MGVmNGFkYzA4NyksIEMoNjViZWEyYmU0MWY1NWI1NCksIEMoODJmMzUwM2Y2MzZhZWYxKSwKKyAg
ICAgQyg1Zjc4YTI4MjM3OGI2YmIwKSwgQyg4ZmZlODcwZWY0YWRjMDg3KSwgQyg2NWJlYTJiZTQx
ZjU1YjU0KSwKKyAgICAgQyg4MmYzNTAzZjYzNmFlZjEpLCBDKDVmNzhhMjgyMzc4YjZiYjApLCBD
KDdiZjI0MjJjMGJlY2VkZGIpLAorICAgICBDKDlkMjM4ZDQ3ODAxMTRiZCksIEMoN2FkMTk4MzEx
OTA2NTk3ZiksIEMoZWM4Zjg5MmMwNDIyYWNhMyksIEMoM2NiMzZjMyl9LAorICAgIHtDKDRlYzBi
NTRjZjE1NjZhZmYpLCBDKDMwZDJjNzI2OWIyMDZiZjQpLCBDKDc3YzIyZTgyMjk1ZTEwNjEpLAor
ICAgICBDKDNkZjliMDQ0MzQ3NzE1NDIpLCBDKGZlZGRjZTc4NWNjYjY2MWYpLCBDKGE2NDRhZmY3
MTY5MjgyOTcpLAorICAgICBDKGRkNDZhZWU3MzgyNGI0ZWQpLCBDKDNkZjliMDQ0MzQ3NzE1NDIp
LCBDKGZlZGRjZTc4NWNjYjY2MWYpLAorICAgICBDKGE2NDRhZmY3MTY5MjgyOTcpLCBDKGRkNDZh
ZWU3MzgyNGI0ZWQpLCBDKGJmOGQ3MTg3OWRhMjliMDIpLAorICAgICBDKGZjODJkY2NiZmM4MDIy
YTApLCBDKDMxYmZjZDBkOWY0OGQxZDMpLCBDKGM2NGVlMjRkMGU3YjVmOGIpLAorICAgICBDKDcy
YzM5YmVhKX0sCisgICAge0MoZWQ4YjdhNGIzNDk1NGZmNyksIEMoNTY0MzJkZTMxZjRlZTc1Nyks
IEMoODViZDNhYmFhNTcyYjE1NSksCisgICAgIEMoN2QyYzM4YTkyNmRjMWI4OCksIEMoNTI0NWI5
ZWI0Y2Q2NzkxZCksIEMoZmI1M2FiMDNiOWFkMDg1NSksCisgICAgIEMoMzY2NDAyNmM4ZmM2Njlk
NyksIEMoN2QyYzM4YTkyNmRjMWI4OCksIEMoNTI0NWI5ZWI0Y2Q2NzkxZCksCisgICAgIEMoZmI1
M2FiMDNiOWFkMDg1NSksIEMoMzY2NDAyNmM4ZmM2NjlkNyksIEMoNDUwMjRkNTA4MGJjMTk2KSwK
KyAgICAgQyhiMjM2ZWJlYzJjYzI3NDApLCBDKDI3MjMxYWQwZTM0NDNiZTQpLCBDKDE0NTc4MGI2
M2Y4MDkyNTApLCBDKGE2NWFhMjVjKX0sCisgICAge0MoNWQyOGI0MzY5NDE3NmMyNiksIEMoNzE0
Y2M4YmMxMmQwNjBhZSksIEMoMzQzNzcyNjI3M2E4M2ZlNiksCisgICAgIEMoODY0YjFiMjhlYzE2
ZWE4NiksIEMoNmE3OGE1YTQwMzllYzJiOSksIEMoOGU5NTk1MzNlMzVhNzY2KSwKKyAgICAgQygz
NDdiN2MyMmI3NWFlNjVmKSwgQyg4NjRiMWIyOGVjMTZlYTg2KSwgQyg2YTc4YTVhNDAzOWVjMmI5
KSwKKyAgICAgQyg4ZTk1OTUzM2UzNWE3NjYpLCBDKDM0N2I3YzIyYjc1YWU2NWYpLCBDKDUwMDU4
OTJiYjYxZTY0N2MpLAorICAgICBDKGZlNjQ2NTE5YjRhMTg5NGQpLCBDKGNkODAxMDI2Zjc0YThh
NTMpLCBDKDg3MTM0NjNlOWExYWI5Y2UpLAorICAgICBDKDc0NzQwNTM5KX0sCisgICAge0MoNmEx
ZWYzNjM5ZTFkMjAyZSksIEMoOTE5YmMxYmQxNDVhZDkyOCksIEMoMzBmM2Y3ZTQ4YzI4YTc3Myks
CisgICAgIEMoMmU4YzQ5ZDdjN2FhYTUyNyksIEMoNWUyMzI4ZmM4NzAxZGI3YyksIEMoODllZjFh
ZmNhODFmN2RlOCksCisgICAgIEMoYjE4NTdkYjExOTg1ZDI5NiksIEMoMmU4YzQ5ZDdjN2FhYTUy
NyksIEMoNWUyMzI4ZmM4NzAxZGI3YyksCisgICAgIEMoODllZjFhZmNhODFmN2RlOCksIEMoYjE4
NTdkYjExOTg1ZDI5NiksIEMoMTc3NjNkNjk1ZjYxNjExNSksCisgICAgIEMoYjhmN2JmMWZjZGM4
MzIyYyksIEMoY2YwYzYxOTM4YWIwN2EyNyksIEMoMTEyMmQzZTZlZGI0ZTg2NiksCisgICAgIEMo
YzNhZTNjMjYpfSwKKyAgICB7QygxNTlmNGQ5ZTAzMDdiMTExKSwgQygzZTE3OTE0YTU2NzVhMGMp
LCBDKGFmODQ5YmQ0MjUwNDdiNTEpLAorICAgICBDKDNiNjllZGFkZjM1NzQzMmIpLCBDKDNhMmUz
MTFjMTIxZTZiZjIpLCBDKDM4MGZhZDFlMjg4ZDU3ZTUpLAorICAgICBDKGJmN2M3ZThlZjBlM2I4
M2EpLCBDKDNiNjllZGFkZjM1NzQzMmIpLCBDKDNhMmUzMTFjMTIxZTZiZjIpLAorICAgICBDKDM4
MGZhZDFlMjg4ZDU3ZTUpLCBDKGJmN2M3ZThlZjBlM2I4M2EpLCBDKDkyOTY2ZDVmNDM1NmFlOWIp
LAorICAgICBDKDJhMDNmYzY2YzRkNmMwMzYpLCBDKDI1MTZkOGJkZGIwZDUyNTkpLCBDKGIzZmZl
OTczN2ZmNTA5MCksIEMoZjI5ZGI4YTIpfSwKKyAgICB7QyhjYzBhODQwNzI1YTdlMjViKSwgQyg1
N2M2OTQ1NDM5NmUxOTNhKSwgQyg5NzZlYWY3ZWVlMGI0NTQwKSwKKyAgICAgQyhjZDdhNDY4NTBi
OTVlOTAxKSwgQyhjNTdmN2QwNjBkZGEyNDZmKSwgQyg2Yjk0MDZlYWQ2NDA3OWJmKSwKKyAgICAg
QygxMWIyOGUyMGE1NzNiN2JkKSwgQyhjZDdhNDY4NTBiOTVlOTAxKSwgQyhjNTdmN2QwNjBkZGEy
NDZmKSwKKyAgICAgQyg2Yjk0MDZlYWQ2NDA3OWJmKSwgQygxMWIyOGUyMGE1NzNiN2JkKSwgQygy
ZDZkYjM1NmU5MzY5YWNlKSwKKyAgICAgQyhkYzBhZmUxMGZiYTE5MyksIEMoNWNkYjEwODg1ZGJi
ZmNlKSwgQyg1YzcwMGUyMDU3ODJlMzVhKSwgQygxZWY0Y2JmNCl9LAorICAgIHtDKGEyYjI3ZWUy
MmY2M2MzZjEpLCBDKDllYmRlMGNlMWIzOTc2YjIpLCBDKDJmZTZhOTJhMjU3YWYzMDgpLAorICAg
ICBDKDhjMWRmOTI3YTkzMGFmNTkpLCBDKGE0NjJmNDQyM2M5ZTM4NGUpLCBDKDIzNjU0MjI1NWIy
YWQ4ZDkpLAorICAgICBDKDU5NWQyMDFhMmMxOWQ1YmMpLCBDKDhjMWRmOTI3YTkzMGFmNTkpLCBD
KGE0NjJmNDQyM2M5ZTM4NGUpLAorICAgICBDKDIzNjU0MjI1NWIyYWQ4ZDkpLCBDKDU5NWQyMDFh
MmMxOWQ1YmMpLCBDKDIyYzg3ZDQ2MDRhNjdmMyksCisgICAgIEMoNTg1YTA2ZWI0YmM0NGM0Ziks
IEMoYjQxNzVhN2FjN2VhYmNkOCksIEMoYTQ1N2QzZWViYTE0YWI4YyksCisgICAgIEMoYTliZTZj
NDEpfSwKKyAgICB7QyhkOGYyZjIzNDg5OWJjYWIzKSwgQyhiMTBiMDM3Mjk3YzNhMTY4KSwgQyhk
ZWJlYTJjNTEwY2VkYTdmKSwKKyAgICAgQyg5NDk4ZmVmYjg5MDI4N2NlKSwgQyhhZTY4YzJiZTVi
MWE2OWE2KSwgQyg2MTg5ZGZiYTM0ZWQ2NTZjKSwKKyAgICAgQyg5MTY1OGY5NTgzNmU1MjA2KSwg
Qyg5NDk4ZmVmYjg5MDI4N2NlKSwgQyhhZTY4YzJiZTViMWE2OWE2KSwKKyAgICAgQyg2MTg5ZGZi
YTM0ZWQ2NTZjKSwgQyg5MTY1OGY5NTgzNmU1MjA2KSwgQyhjMGJiNGZmZjMyYWVjZDRkKSwKKyAg
ICAgQyg5NDEyNWY1MDVhNTBlZWY5KSwgQyg2YWM0MDZlN2NmYmNlNWJiKSwgQygzNDRhNGIxZGNk
YjdmNWQ4KSwgQyhmYTMxODAxKX0sCisgICAge0MoNTg0ZjI4NTQzODY0ODQ0ZiksIEMoZDdjZWU5
ZmMyZDQ2ZjIwZCksIEMoYTM4ZGNhNTY1NzM4NzIwNSksCisgICAgIEMoN2EwYjZkYmFiOWExNGU2
OSksIEMoYzZkMGE5ZDZiMGUzMWFjNCksIEMoYTY3NGQ4NTgxMmM3Y2Y2KSwKKyAgICAgQyg2MzUz
OGMwMzUxMDQ5OTQwKSwgQyg3YTBiNmRiYWI5YTE0ZTY5KSwgQyhjNmQwYTlkNmIwZTMxYWM0KSwK
KyAgICAgQyhhNjc0ZDg1ODEyYzdjZjYpLCBDKDYzNTM4YzAzNTEwNDk5NDApLCBDKDk3MTBlNWYw
YmM5M2QxZCksCisgICAgIEMoYzJiZWE1YmQ3YzU0ZGRkNCksIEMoNDg3MzlhZjJiZWQwZDMyZCks
IEMoYmEyYzRlMDllMjFmYmE4NSksCisgICAgIEMoODMzMWM1ZDgpfSwKKyAgICB7QyhhOTRiZTQ2
ZGQ5YWE0MWFmKSwgQyhhNTdlNWI3NzIzZDNmOWJkKSwgQygzNGJmODQ1YTUyZmQyZiksCisgICAg
IEMoODQzYjU4NDYzYzhkZjBhZSksIEMoNzRiMjU4MzI0ZTkxNjA0NSksIEMoYmRkNzM1MzIzMGVi
MmIzOCksCisgICAgIEMoZmFkMzFmY2VkN2FiYWRlNSksIEMoODQzYjU4NDYzYzhkZjBhZSksIEMo
NzRiMjU4MzI0ZTkxNjA0NSksCisgICAgIEMoYmRkNzM1MzIzMGViMmIzOCksIEMoZmFkMzFmY2Vk
N2FiYWRlNSksIEMoMjQzNmFlYWZiMDA0NmY4NSksCisgICAgIEMoNjViYzlhZjllNWUzMzE2MSks
IEMoOTI3MzNiMWIzYWU5MDYyOCksIEMoZjQ4MTQzZWFmNzhhN2E4OSksCisgICAgIEMoZTk4NzZk
YjgpfSwKKyAgICB7Qyg5YTg3YmVhMjI3NDkxZDIwKSwgQyhhNDY4NjU3ZTJiOWM0M2U3KSwgQyhh
ZjliYTYwZGI4ZDg5ZWY3KSwKKyAgICAgQyhjYzc2ZjQyOWVhN2ExMmJiKSwgQyg1ZjMwZWFmMmJi
MTQ4NzBhKSwgQyg0MzRlODI0Y2IzZTBjZDExKSwKKyAgICAgQyg0MzFhNGQzODJlMzlkMTZlKSwg
QyhjYzc2ZjQyOWVhN2ExMmJiKSwgQyg1ZjMwZWFmMmJiMTQ4NzBhKSwKKyAgICAgQyg0MzRlODI0
Y2IzZTBjZDExKSwgQyg0MzFhNGQzODJlMzlkMTZlKSwgQyg5ZTUxZjkxM2M0NzczYTgpLAorICAg
ICBDKDMyYWIxOTI1ODIzZDBhZGQpLCBDKDk5YzYxYjU0YzFkOGY2OWQpLCBDKDM4Y2ZiODBmMDJi
NDNiMWYpLAorICAgICBDKDI3YjA2MDRlKX0sCisgICAge0MoMjc2ODhjMjQ5NThkMWE1YyksIEMo
ZTNiNGExYzk0MjljZjI1MyksIEMoNDhhOTU4MTFmNzBkNjRiYyksCisgICAgIEMoMzI4MDYzMjI5
ZGIyMjg4NCksIEMoNjdlOWM5NWY4YmE5NjAyOCksIEMoN2M2YmYwMWM2MDQzNjA3NSksCisgICAg
IEMoZmE1NTE2MWU3ZDkwMzBiMiksIEMoMzI4MDYzMjI5ZGIyMjg4NCksIEMoNjdlOWM5NWY4YmE5
NjAyOCksCisgICAgIEMoN2M2YmYwMWM2MDQzNjA3NSksIEMoZmE1NTE2MWU3ZDkwMzBiMiksIEMo
ZGFkYmMyZjBkYWI5MTY4MSksCisgICAgIEMoZGEzOWQ3YTQ5MzRjYTExKSwgQygxNjJlODQ1ZDI0
YzFiNDVjKSwgQyhlYjViOWRjZDhjNmVkMzFiKSwgQyhkY2VjMDdmMil9LAorICAgIHtDKDVkMWQz
Nzc5MGExODczYWQpLCBDKGVkOWNkNGJjYzVmYTEwOTApLCBDKGNlNTFjZGUwNWQ4Y2Q5NmEpLAor
ICAgICBDKGY3MmMyNmU2MjQ0MDdlNjYpLCBDKGEwZWI1NDFiZGJjNmQ0MDkpLCBDKGMzZjQwYTJm
NDBiM2IyMTMpLAorICAgICBDKDZhNzg0ZGU2ODc5NDQ5MmQpLCBDKGY3MmMyNmU2MjQ0MDdlNjYp
LCBDKGEwZWI1NDFiZGJjNmQ0MDkpLAorICAgICBDKGMzZjQwYTJmNDBiM2IyMTMpLCBDKDZhNzg0
ZGU2ODc5NDQ5MmQpLCBDKDEwYTM4YTIzZGJlZjc5MzcpLAorICAgICBDKDZhNTU2MGY4NTMyNTIy
NzgpLCBDKGMzMzg3YmJmM2M3YjgyYmEpLCBDKGZiZWU3YzEyZWIwNzI4MDUpLAorICAgICBDKGNm
ZjBhODJhKX0sCisgICAge0MoMWYwM2ZkMThiNzExZWVhOSksIEMoNTY2ZDg5YjE5NDZkMzgxYSks
IEMoNmU5NmU4M2ZjOTI1NjNhYiksCisgICAgIEMoNDA1ZjY2Y2Y4Y2FlMWEzMiksIEMoZDcyNjE3
NDBkOGYxOGNlNiksIEMoZmVhM2FmNjRhNDEzZDBiMiksCisgICAgIEMoZDY0ZDE4MTBlODM1MjBm
ZSksIEMoNDA1ZjY2Y2Y4Y2FlMWEzMiksIEMoZDcyNjE3NDBkOGYxOGNlNiksCisgICAgIEMoZmVh
M2FmNjRhNDEzZDBiMiksIEMoZDY0ZDE4MTBlODM1MjBmZSksIEMoZTEzMzRhMDBhNTgwYzZlOCks
CisgICAgIEMoNDU0MDQ5ZTFiNTJjMTVmKSwgQyg4ODk1ZDgyM2Q5Nzc4MjQ3KSwgQyhlZmE3ZjJl
ODhiODI2NjE4KSwgQyhmZWM4MzYyMSl9LAorICAgIHtDKGYwMzE2ZjI4NmNmNTI3YjYpLCBDKGY4
NGMyOTUzOGRlMWFhNWEpLCBDKDc2MTJlZDNjOTIzZDRhNzEpLAorICAgICBDKGQ0ZWNjZWJlOTM5
M2VlOGEpLCBDKDJlYjc4NjdjMjMxOGNjNTkpLCBDKDFjZTYyMWZkNzAwZmUzOTYpLAorICAgICBD
KDY4NjQ1MGQ3YTM0Njg3OGEpLCBDKGQ0ZWNjZWJlOTM5M2VlOGEpLCBDKDJlYjc4NjdjMjMxOGNj
NTkpLAorICAgICBDKDFjZTYyMWZkNzAwZmUzOTYpLCBDKDY4NjQ1MGQ3YTM0Njg3OGEpLCBDKDc1
YTVmMzc1NzlmOGI0Y2IpLAorICAgICBDKDUwMGNjMTZlYjY1NDFkYzcpLCBDKGI3YjAyMzE3YjUz
OWQ5YTYpLCBDKDM1MTlkZGZmNWJjMjBhMjkpLCBDKDc0M2Q4ZGMpfSwKKyAgICB7QygyOTcwMDhi
Y2IzZTM0MDFkKSwgQyg2MWE4ZTQwN2Y4MmIwYzY5KSwgQyhhNGEzNWJmZjA1MjRmYTBlKSwKKyAg
ICAgQyg3YTYxZDhmNTUyYTUzNDQyKSwgQyg4MjFkMWQ4ZDhjZmFjZjM1KSwgQyg3Y2MwNjM2MWI4
NmQwNTU5KSwKKyAgICAgQygxMTliNjE3YThjMmJlMTk5KSwgQyg3YTYxZDhmNTUyYTUzNDQyKSwg
Qyg4MjFkMWQ4ZDhjZmFjZjM1KSwKKyAgICAgQyg3Y2MwNjM2MWI4NmQwNTU5KSwgQygxMTliNjE3
YThjMmJlMTk5KSwgQygyOTk2NDg3ZGE2NzIxNzU5KSwKKyAgICAgQyg2MWE5MDEzNzYwNzBiOTFk
KSwgQyhkODhkZWUxMmFlOWM5YjNjKSwgQyg1NjY1NDkxYmUxZmE1M2E3KSwKKyAgICAgQyg2NGQ0
MWQyNil9LAorICAgIHtDKDQzYzYyNTI0MTFlZTNiZSksIEMoYjRjYTFiODA3Nzc3NzE2OCksIEMo
Mjc0NmRjM2Y3ZGExNzM3ZiksCisgICAgIEMoMjI0N2E0YjIwNThkMWM1MCksIEMoMWIzZmExODRi
MWQ3YmNjMCksIEMoZGViODU2MTM5OTVjMDZlZCksCisgICAgIEMoY2JlMWQ5NTc0ODVhM2NjZCks
IEMoMjI0N2E0YjIwNThkMWM1MCksIEMoMWIzZmExODRiMWQ3YmNjMCksCisgICAgIEMoZGViODU2
MTM5OTVjMDZlZCksIEMoY2JlMWQ5NTc0ODVhM2NjZCksIEMoZGZlMjQxZjhmMzNjOTZiNiksCisg
ICAgIEMoNjU5N2ViMDUwMTljMjEwOSksIEMoZGEzNDRiMmE2M2EyMTljZiksIEMoNzliOGUzODg3
NjEyMzc4YSksCisgICAgIEMoYWNkOTBjODEpfSwKKyAgICB7QyhjZTM4YTlhNTRmYWQ2NTk5KSwg
Qyg2ZDZmNGE5MGI5ZTg3NTVlKSwgQyhjM2VjYzc5ZmYxMDVkZTNmKSwKKyAgICAgQyhlOGI5ZWU5
NmVmYTJkMGUpLCBDKDkwMTIyOTA1YzRhYjUzNTgpLCBDKDg0ZjgwYzgzMmQ3MTk3OWMpLAorICAg
ICBDKDIyOTMxMGYzZmZiYmY0YzYpLCBDKGU4YjllZTk2ZWZhMmQwZSksIEMoOTAxMjI5MDVjNGFi
NTM1OCksCisgICAgIEMoODRmODBjODMyZDcxOTc5YyksIEMoMjI5MzEwZjNmZmJiZjRjNiksIEMo
Y2M5ZWI0MjEwMGNkNjNhNyksCisgICAgIEMoN2EyODNmMmYzZGE3YjlmKSwgQygzNTliMDYxZDMx
NGU3YTcyKSwgQyhkMGQ5NTk3MjAwMjg4NjIpLCBDKDdjNzQ2YTRiKX0sCisgICAge0MoMjcwYTkz
MDVmZWY3MGNmKSwgQyg2MDAxOTM5OTlkODg0ZjNhKSwgQyhmNGQ0OWVhZTA5ZWQ4YTEpLAorICAg
ICBDKDJlMDkxYjg1NjYwZjEyOTgpLCBDKGJmZTM3ZmFlMWNkZDY0YzkpLCBDKDhkZGRmYmFiOTMw
ZjY0OTQpLAorICAgICBDKDJjY2Y0YjA4ZjVkNDE3YSksIEMoMmUwOTFiODU2NjBmMTI5OCksIEMo
YmZlMzdmYWUxY2RkNjRjOSksCisgICAgIEMoOGRkZGZiYWI5MzBmNjQ5NCksIEMoMmNjZjRiMDhm
NWQ0MTdhKSwgQygzNjVjMmVlODU1ODJmZTYpLAorICAgICBDKGRlZTAyN2JjZDM2ZGI2MmEpLCBD
KGIxNTA5OTRkM2M3ZTU4MzgpLCBDKGZkZmQxYTBlNjkyZTQzNmQpLAorICAgICBDKGIxMDQ3ZTk5
KX0sCisgICAge0MoZTcxYmU3YzI4ZTg0ZDExOSksIEMoZWI2YWNlNTk5MzI3MzZlNiksIEMoNzBj
NDM5NzgwN2JhMTJjNSksCisgICAgIEMoN2E5ZDc3NzgxYWM1MzUwOSksIEMoNDQ4OWMzY2NmZGEz
YjM5YyksIEMoZmE3MjJkNGYyNDNiNDk2NCksCisgICAgIEMoMjVmMTU4MDBiZmZkZDEyMiksIEMo
N2E5ZDc3NzgxYWM1MzUwOSksIEMoNDQ4OWMzY2NmZGEzYjM5YyksCisgICAgIEMoZmE3MjJkNGYy
NDNiNDk2NCksIEMoMjVmMTU4MDBiZmZkZDEyMiksIEMoZWQ4NWU0MTU3ZmJkMzI5NyksCisgICAg
IEMoYWFiMTk2NzIyN2Q1OWVmZCksIEMoMjE5OTYzMTIxMmViMzgzOSksIEMoM2U0YzE5MzU5YWFl
MWNjMiksCisgICAgIEMoZDFmZDEwNjgpfSwKKyAgICB7QyhiNWI1OGMyNGI1M2FhYTE5KSwgQyhk
MmE2YWIwNzczZGQ4OTdmKSwgQyhlZjc2MmZlMDFlY2I1Yjk3KSwKKyAgICAgQyg5ZGVlZmJjZmE0
Y2FiMWYxKSwgQyhiNThmNTk0M2NkMjQ5MmJhKSwgQyhhOTZkY2M0ZDFmNDc4MmE3KSwKKyAgICAg
QygxMDJiNjJhODIzMDlkZGU1KSwgQyg5ZGVlZmJjZmE0Y2FiMWYxKSwgQyhiNThmNTk0M2NkMjQ5
MmJhKSwKKyAgICAgQyhhOTZkY2M0ZDFmNDc4MmE3KSwgQygxMDJiNjJhODIzMDlkZGU1KSwgQygz
NWZlNTI2ODQ3NjNiMzM4KSwKKyAgICAgQyhhZmUyNjE2NjUxZWFhZDFmKSwgQyg0M2UzODcxNWJk
ZmEwNWU3KSwgQyg4M2M5YmE4M2I1ZWM0YTQwKSwKKyAgICAgQyg1NjQ4NjA3Nyl9LAorICAgIHtD
KDQ0ZGQ1OWJkMzAxOTk1Y2YpLCBDKDNjY2FiZDc2NDkzYWRhMWEpLCBDKDU0MGRiNGM4N2Q1NWVm
MjMpLAorICAgICBDKGNmYzZkN2FkZGEzNTc5NyksIEMoMTRjN2QxZjMyMzMyY2YwMyksIEMoMmQ1
NTNmZmJmZjNiZTk5ZCksCisgICAgIEMoYzkxYzRlZTBjYjU2MzE4MiksIEMoY2ZjNmQ3YWRkYTM1
Nzk3KSwgQygxNGM3ZDFmMzIzMzJjZjAzKSwKKyAgICAgQygyZDU1M2ZmYmZmM2JlOTlkKSwgQyhj
OTFjNGVlMGNiNTYzMTgyKSwgQyg5YWE1ZTUwN2Y0OTEzNmYwKSwKKyAgICAgQyg3NjBjNWRkMWE4
MmM0ODg4KSwgQyhiZWVhN2U5NzRhMWNmYjVjKSwgQyg2NDBiMjQ3Nzc0ZmU0YmY3KSwKKyAgICAg
Qyg2MDY5YmU4MCl9LAorICAgIHtDKGI0ZDQ3ODllYjZmMjYzMGIpLCBDKGJmNjk3MzI2M2NlOGVm
MGUpLCBDKGQxYzc1YzUwODQ0YjlkMyksCisgICAgIEMoYmNlOTA1OTAwYzFlYzZlYSksIEMoYzMw
ZjMwNGY0MDQ1NDg3ZCksIEMoYTVjNTUwMTY2YjNhMTQyYiksCisgICAgIEMoMmY0ODJiNGUzNTMy
NzI4NyksIEMoYmNlOTA1OTAwYzFlYzZlYSksIEMoYzMwZjMwNGY0MDQ1NDg3ZCksCisgICAgIEMo
YTVjNTUwMTY2YjNhMTQyYiksIEMoMmY0ODJiNGUzNTMyNzI4NyksIEMoMTViMjFkZGRkZjM1NTQz
OCksCisgICAgIEMoNDk2NDcxZmEzMDA2YmFiKSwgQygyYThmZDQ1OGQwNmMxYTMyKSwgQyhkYjkx
ZThhZTgxMmYwYjhkKSwgQygyMDc4MzU5Yil9LAorICAgIHtDKDEyODA3ODMzYzQ2MzczN2MpLCBD
KDU4ZTkyN2VhM2IzNzc2YjQpLCBDKDcyZGQyMGVmMWMyZjhhZDApLAorICAgICBDKDkxMGI2MTBk
ZTdhOTY3YmYpLCBDKDgwMWJjODYyMTIwZjZiZjUpLCBDKDk2NTNlZmVlZDU4OTc2ODEpLAorICAg
ICBDKGY1MzY3ZmY4M2U5ZWJiYjMpLCBDKDkxMGI2MTBkZTdhOTY3YmYpLCBDKDgwMWJjODYyMTIw
ZjZiZjUpLAorICAgICBDKDk2NTNlZmVlZDU4OTc2ODEpLCBDKGY1MzY3ZmY4M2U5ZWJiYjMpLCBD
KGNmNTZkNDg5YWZkMWIwYmYpLAorICAgICBDKGM3Yzc5MzcxNWNhZTNkZTgpLCBDKDYzMWY5MWQ2
NGFiYWU0N2MpLCBDKDVmMWY0MmZiMTRhNDQ0YTIpLAorICAgICBDKDllYTIxMDA0KX0sCisgICAg
e0MoZTg4NDE5OTIyYjg3MTc2ZiksIEMoYmNmMzJmNDFhN2RkYmY2ZiksIEMoZDZlYmVmZDgwODVj
MWEwZiksCisgICAgIEMoZDFkNDRmZTk5NDUxZWY3MiksIEMoZWM5NTFiYThlNTFlMzU0NSksIEMo
YzBjYTg2YjM2MDc0NmU5NiksCisgICAgIEMoYWE2NzljYzA2NmE4MDQwYiksIEMoZDFkNDRmZTk5
NDUxZWY3MiksIEMoZWM5NTFiYThlNTFlMzU0NSksCisgICAgIEMoYzBjYTg2YjM2MDc0NmU5Niks
IEMoYWE2NzljYzA2NmE4MDQwYiksIEMoNTEwNjU4NjFlY2U2ZmZjMSksCisgICAgIEMoNzY3Nzcz
NjhhMjk5N2UxMSksIEMoODdmMjc4ZjQ2NzMxMTAwYyksIEMoYmJhYTQxNDBiZGJhNDUyNyksCisg
ICAgIEMoOWM5Y2ZlODgpfSwKKyAgICB7QygxMDUxOTFlMGVjOGY3ZjYwKSwgQyg1OTE4ZGJmY2Nh
OTcxZTc5KSwgQyg2YjI4NWM4YTk0NDc2N2I5KSwKKyAgICAgQyhkM2U4NmFjNGY1ZWNjZmE0KSwg
QyhlNTM5OWRmMmIxMDZjYTEpLCBDKDgxNGFhZGZhY2QyMTdmMWQpLAorICAgICBDKDI3NTRlM2Rl
ZjFjNDA1YTkpLCBDKGQzZTg2YWM0ZjVlY2NmYTQpLCBDKGU1Mzk5ZGYyYjEwNmNhMSksCisgICAg
IEMoODE0YWFkZmFjZDIxN2YxZCksIEMoMjc1NGUzZGVmMWM0MDVhOSksIEMoOTkyOTAzMjNiOWYw
NmU3NCksCisgICAgIEMoYTk3ODJlMDQzZjI3MTQ2MSksIEMoMTNjOGIzYjhjMjc1YTg2MCksIEMo
NjAzOGQ2MjBlNTgxZTllNyksCisgICAgIEMoYjcwYTZkZGQpfSwKKyAgICB7QyhhNWI4OGJmNzM5
OWE5ZjA3KSwgQyhmY2EzZGRmZDk2NDYxY2M0KSwgQyhlYmU3MzhmZGMwMjgyZmM2KSwKKyAgICAg
Qyg2OWFmYmM4MDA2MDZkMGZiKSwgQyg2MTA0Yjk3YTlkYjEyZGY3KSwgQyhmY2MwOTE5OGJiOTBi
ZjlmKSwKKyAgICAgQyhjNWUwNzdlNDFhNjViYTkxKSwgQyg2OWFmYmM4MDA2MDZkMGZiKSwgQyg2
MTA0Yjk3YTlkYjEyZGY3KSwKKyAgICAgQyhmY2MwOTE5OGJiOTBiZjlmKSwgQyhjNWUwNzdlNDFh
NjViYTkxKSwgQyhkYjI2MTgzNWVlOGFhMDhlKSwKKyAgICAgQyhkYjBlZTY2MmU1Nzk2ZGM5KSwg
QyhmYzE4ODBlY2VjNDk5ZTVmKSwgQyg2NDg4NjZmYmUxNTAyMDM0KSwKKyAgICAgQyhkZWEzNzI5
OCl9LAorICAgIHtDKGQwOGMzZjU3NDdkODRmNTApLCBDKDRlNzA4YjI3ZDFiNmY4YWMpLCBDKDcw
ZjcwZmQ3MzQ4ODg2MDYpLAorICAgICBDKDkwOWFlMDE5ZDc2MWQwMTkpLCBDKDM2OGJmNGFhYjFi
ODZlZjkpLCBDKDMwOGJkNjE2ZDU0NjAyMzkpLAorICAgICBDKDRmZDMzMjY5Zjc2NzgzZWEpLCBD
KDkwOWFlMDE5ZDc2MWQwMTkpLCBDKDM2OGJmNGFhYjFiODZlZjkpLAorICAgICBDKDMwOGJkNjE2
ZDU0NjAyMzkpLCBDKDRmZDMzMjY5Zjc2NzgzZWEpLCBDKDdkNTNiMzdjMTk3MTNlYWIpLAorICAg
ICBDKDZiYmE2ZWFiZGE1OGE4OTcpLCBDKDkxYWJiNTBlZmMxMTYwNDcpLCBDKDRlOTAyZjM0N2Uw
ZTBlMzUpLAorICAgICBDKDhmNDgwODE5KX0sCisgICAge0MoMmY3MmQxMmE0MDA0NGI0YiksIEMo
ODg5Njg5MzUyZmVjNTNkZSksIEMoZjAzZTZhZDg3ZWIyZjM2KSwKKyAgICAgQyhlZjc5ZjI4ZDg3
NGI5ZTJkKSwgQyhiNTEyMDg5ZThlNjNiNzZjKSwgQygyNGRjMDY4MzNiZjE5M2E5KSwKKyAgICAg
QygzYzIzMzA4YmE4ZTk5ZDdlKSwgQyhlZjc5ZjI4ZDg3NGI5ZTJkKSwgQyhiNTEyMDg5ZThlNjNi
NzZjKSwKKyAgICAgQygyNGRjMDY4MzNiZjE5M2E5KSwgQygzYzIzMzA4YmE4ZTk5ZDdlKSwgQyg1
Y2VmZjdiODVjYWNlZmI3KSwKKyAgICAgQyhlZjM5MDMzODg5OGNkNzMpLCBDKGIxMjk2N2Q3ZDIy
NTRmNTQpLCBDKGRlODc0Y2JkOGFlZjdiNzUpLCBDKDMwYjNiMTYpfSwKKyAgICB7QyhhYTFmNjFm
ZGM1YzJlMTFlKSwgQyhjMmM1NmNkMTEyNzdhYjI3KSwgQyhhMWU3MzA2OWZkZjFmOTRmKSwKKyAg
ICAgQyg4MTg0YmFiMzZiYjc5ZGYwKSwgQyhjODE5MjljZTg2NTViOTQwKSwgQygzMDFiMTFiZjhh
NGQ4Y2U4KSwKKyAgICAgQyg3MzEyNmZkNDVhYjc1ZGU5KSwgQyg4MTg0YmFiMzZiYjc5ZGYwKSwg
QyhjODE5MjljZTg2NTViOTQwKSwKKyAgICAgQygzMDFiMTFiZjhhNGQ4Y2U4KSwgQyg3MzEyNmZk
NDVhYjc1ZGU5KSwgQyg0YmQ2Zjc2ZTQ4ODgyMjlhKSwKKyAgICAgQyg5YWFlMzU1YjU0YTc1NmQ1
KSwgQyhjYTNkZTk3MjZmNmU5OWQ1KSwgQyg4M2Y4MGNhYzViYzM2ODUyKSwKKyAgICAgQyhmMzFi
YzRlOCl9LAorICAgIHtDKDk0ODliMzZmZTIyNDYyNDQpLCBDKDMzNTUzNjcwMzNiZTc0YjgpLCBD
KDVmNTdjMjI3N2NiY2U1MTYpLAorICAgICBDKGJjNjE0MTRmOTgwMmVjYWYpLCBDKDhlZGQxZTdh
NTA1NjI5MjQpLCBDKDQ4ZjRhYjc0YTM1ZTk1ZjIpLAorICAgICBDKGNjMWFmY2ZkOTlhMTgwZTcp
LCBDKGJjNjE0MTRmOTgwMmVjYWYpLCBDKDhlZGQxZTdhNTA1NjI5MjQpLAorICAgICBDKDQ4ZjRh
Yjc0YTM1ZTk1ZjIpLCBDKGNjMWFmY2ZkOTlhMTgwZTcpLCBDKDUxN2RkNWUzYWNmNjYxMTApLAor
ICAgICBDKDdkZDNhZDllODk3OGIzMGQpLCBDKDFmNmQ1ZGZjNzBkZTgxMmIpLCBDKDk0N2RhYWJh
NjQ0MWFhZjMpLAorICAgICBDKDQxOWY5NTNiKX0sCisgICAge0MoMzU4ZDdjMDQ3NmEwNDRjZCks
IEMoZTBiN2I0N2JjYmQ4ODU0ZiksIEMoZmZiNDJlYzY5NjcwNTUxOSksCisgICAgIEMoZDQ1ZTQ0
YzI2M2U5NWMzOCksIEMoZGY2MWRiNTM5MjNhZTNiMSksIEMoZjJiYzk0OGNjNGZjMDI3YyksCisg
ICAgIEMoOGE4MDAwYzYwNjY3NzJhMyksIEMoZDQ1ZTQ0YzI2M2U5NWMzOCksIEMoZGY2MWRiNTM5
MjNhZTNiMSksCisgICAgIEMoZjJiYzk0OGNjNGZjMDI3YyksIEMoOGE4MDAwYzYwNjY3NzJhMyks
IEMoOWZkOTNjOTQyZDMxZmExNyksCisgICAgIEMoZDc2NTFlY2ViZTA5Y2JkMyksIEMoNjg2ODJj
ZWZiNmE2ZjE2NSksIEMoNTQxZWI5OWEyZGNlZTQwZSksCisgICAgIEMoMjBlOWU3NmQpfSwKKyAg
ICB7QyhiMGM0OGRmMTQyNzUyNjVhKSwgQyg5ZGE0NDQ4OTc1OTA1ZWZhKSwgQyhkNzE2NjE4ZTQx
NGNlYjZkKSwKKyAgICAgQygzMGU4ODhhZjcwZGYxZTU2KSwgQyg0YmVlNTRiZDQ3Mjc0ZjY5KSwg
QygxNzhiNDA1OWUxYTBhZmU1KSwKKyAgICAgQyg2ZTJjOTZiN2Y1OGU1MTc4KSwgQygzMGU4ODhh
ZjcwZGYxZTU2KSwgQyg0YmVlNTRiZDQ3Mjc0ZjY5KSwKKyAgICAgQygxNzhiNDA1OWUxYTBhZmU1
KSwgQyg2ZTJjOTZiN2Y1OGU1MTc4KSwgQyhiYjQyOWQzYjkyNzVlOWJjKSwKKyAgICAgQyhjMTk4
MDEzZjA5Y2FmZGM2KSwgQyhlYzBhNmVlNGZiNWRlMzQ4KSwgQyg3NDRlMWU4ZWQyZWIxZWIwKSwK
KyAgICAgQyg2NDZmMGZmOCl9LAorICAgIHtDKGRhYTcwYmIzMDA5NTY1ODgpLCBDKDQxMGVhNjg4
M2EyNDBjNmQpLCBDKGY1YzgyMzlmYjU2NzNlYjMpLAorICAgICBDKDhiMWQ3YmI0OTAzYzEwNWYp
LCBDKGNmYjFjMzIyYjczODkxZDQpLCBDKDVmM2I3OTJiMjJmMDcyOTcpLAorICAgICBDKGZkNjQw
NjFmOGJlODY4MTEpLCBDKDhiMWQ3YmI0OTAzYzEwNWYpLCBDKGNmYjFjMzIyYjczODkxZDQpLAor
ICAgICBDKDVmM2I3OTJiMjJmMDcyOTcpLCBDKGZkNjQwNjFmOGJlODY4MTEpLCBDKDFkMmRiNzEy
OTIxY2ZjMmIpLAorICAgICBDKGNkMWIyYjJmMmNlZTE4YWUpLCBDKDZiNmY4NzkwZGM3ZmViMDkp
LCBDKDQ2YzE3OWVmYTNmMGY1MTgpLAorICAgICBDKGVlYjdlY2E4KX0sCisgICAge0MoNGVjOTdh
MjBiNmM0YzdjMiksIEMoNTkxM2IxY2Q0NTRmMjlmZCksIEMoYTk2MjlmOWRhZjA2ZDY4NSksCisg
ICAgIEMoODUyYzk0OTkxNTZhOGYzKSwgQygzYTE4MGE2YWJmYjc5MDE2KSwgQyg5ZmMzYzQ3NjQw
MzdjM2M5KSwKKyAgICAgQygyODkwYzQyZmMwZDk3MmNmKSwgQyg4NTJjOTQ5OTE1NmE4ZjMpLCBD
KDNhMTgwYTZhYmZiNzkwMTYpLAorICAgICBDKDlmYzNjNDc2NDAzN2MzYzkpLCBDKDI4OTBjNDJm
YzBkOTcyY2YpLCBDKDFmOTIyMzFkNGU1Mzc2NTEpLAorICAgICBDKGZhYjhiYjA3YWE1NGI3Yjkp
LCBDKGUwNWQyZDc3MWM0ODVlZDQpLCBDKGQ1MGIzNGJmODA4Y2E3MzEpLCBDKDgxMTJiYjkpfSwK
KyAgICB7Qyg1YzMzMjM2Mjg0MzVhMmU4KSwgQygxYmVhNDVjZTllNzJhNmUzKSwgQyg5MDRmMGE3
MDI3ZGRiNTJlKSwKKyAgICAgQyg5MzlmMzFkZTE0ZGNkYzdiKSwgQyhhNjhmZGY0Mzc5ZGYwNjgp
LCBDKGYxNjllMWYwYjgzNTI3OWQpLAorICAgICBDKDc0OThlNDMyZjk2MTliMjcpLCBDKDkzOWYz
MWRlMTRkY2RjN2IpLCBDKGE2OGZkZjQzNzlkZjA2OCksCisgICAgIEMoZjE2OWUxZjBiODM1Mjc5
ZCksIEMoNzQ5OGU0MzJmOTYxOWIyNyksIEMoMWFhMmExZjExMDg4ZTc4NSksCisgICAgIEMoZDZh
ZDcyZjQ1NzI5ZGU3OCksIEMoOWE2MzgxNDE1N2M4MDI2NyksIEMoNTU1MzhlMzVjNjQ4ZTQzNSks
CisgICAgIEMoODVhNmQ0NzcpfSwKKyAgICB7QyhjMWVmMjZiZWEyNjBhYmRiKSwgQyg2ZWU0MjNm
MjEzN2Y5MjgwKSwgQyhkZjIxMThiOTQ2ZWQwYjQzKSwKKyAgICAgQygxMWI4N2ZiMWI5MDBjYzM5
KSwgQyhlMzNlNTliOTBkZDgxNWIxKSwgQyhhYTZjYjVjNGJhZmFlNzQxKSwKKyAgICAgQyg3Mzk2
OTk5NTFjYThjNzEzKSwgQygxMWI4N2ZiMWI5MDBjYzM5KSwgQyhlMzNlNTliOTBkZDgxNWIxKSwK
KyAgICAgQyhhYTZjYjVjNGJhZmFlNzQxKSwgQyg3Mzk2OTk5NTFjYThjNzEzKSwgQygyYjQzODlh
OTY3MzEwMDc3KSwKKyAgICAgQygxZDUzODI1NjhhMzFjMmM5KSwgQyg1NWQxZTc4N2ZiZTY4OTkx
KSwgQygyNzdjMjU0YmMzMTMwMWU3KSwKKyAgICAgQyg1NmY3NmM4NCl9LAorICAgIHtDKDZiZTcz
ODFiMTE1ZDY1M2EpLCBDKGVkMDQ2MTkwNzU4ZWE1MTEpLCBDKGRlNmE0NWZmYzNlZDExNTkpLAor
ICAgICBDKGE2NDc2MGU0MDQxNDQ3ZDApLCBDKGUzZWFjNDlmM2UwYzUxMDkpLCBDKGRkODZjNGQ0
Y2I2MjU4ZTIpLAorICAgICBDKGVmYTk4NTdhZmQwNDZjN2YpLCBDKGE2NDc2MGU0MDQxNDQ3ZDAp
LCBDKGUzZWFjNDlmM2UwYzUxMDkpLAorICAgICBDKGRkODZjNGQ0Y2I2MjU4ZTIpLCBDKGVmYTk4
NTdhZmQwNDZjN2YpLCBDKGZhYjc5M2RhZTgyNDZmMTYpLAorICAgICBDKGM5ZTNiMTIxYjMxZDA5
NGMpLCBDKGEyYTBmNTU4NTg0NjUyMjYpLCBDKGRiYTZmMGZmMzk0MzYzNDQpLAorICAgICBDKDlh
ZjQ1ZDU1KX0sCisgICAge0MoYWUzZWVjZTE3MTFiMjEwNSksIEMoMTRmZDNmNDAyN2Y4MWE0YSks
IEMoYWJiN2U0NTE3N2QxNTFkYiksCisgICAgIEMoNTAxZjNlOWIxODg2MWU0NCksIEMoNDY1MjAx
MTcwMDc0ZTdkOCksIEMoOTZkNWM5MTk3MGYyY2IxMiksCisgICAgIEMoNDBmZDI4YzQzNTA2Yzk1
ZCksIEMoNTAxZjNlOWIxODg2MWU0NCksIEMoNDY1MjAxMTcwMDc0ZTdkOCksCisgICAgIEMoOTZk
NWM5MTk3MGYyY2IxMiksIEMoNDBmZDI4YzQzNTA2Yzk1ZCksIEMoZTg2YzRiMDc4MDJhYWZmMyks
CisgICAgIEMoZjMxN2QxNDExMjM3MmE3MCksIEMoNjQxYjEzZTU4NzcxMTY1MCksIEMoNDkxNTQy
MWFiMTA5MGVhYSksCisgICAgIEMoZDFjMzM3NjApfSwKKyAgICB7QygzNzZjMjg1ODhiOGZiMzg5
KSwgQyg2YjA0NWU4NGQ4NDkxZWQyKSwgQyg0ZTg1N2VmZmI3ZDRlN2RjKSwKKyAgICAgQygxNTRk
ZDc5ZmQyZjk4NGI0KSwgQyhmMTExNzE3NzU2MjJjMWMzKSwgQygxZmJlMzA5ODJlNzhlNmYwKSwK
KyAgICAgQyhhNDYwYTE1ZGNmMzI3ZTQ0KSwgQygxNTRkZDc5ZmQyZjk4NGI0KSwgQyhmMTExNzE3
NzU2MjJjMWMzKSwKKyAgICAgQygxZmJlMzA5ODJlNzhlNmYwKSwgQyhhNDYwYTE1ZGNmMzI3ZTQ0
KSwgQyhmMzU5ZTA5MDBjYzNkNTgyKSwKKyAgICAgQyg3ZTExMDcwNDQ3OTc2ZDAwKSwgQygzMjRl
NmRhZjI3NmVhNGI1KSwgQyg3YWE2ZTJkZjBjYzk0ZmEyKSwKKyAgICAgQyhjNTZiYmY2OSl9LAor
ICAgIHtDKDU4ZDk0MzUwM2JiNjc0OGYpLCBDKDQxOWM2YzhlODhhYzcwZjYpLCBDKDU4Njc2MGNi
ZjNkM2QzNjgpLAorICAgICBDKGI3ZTE2NDk3OWQ1Y2NmYzEpLCBDKDEyY2I0MjMwZDI2YmYyODYp
LCBDKGYxYmY5MTBkNDRiZDg0Y2IpLAorICAgICBDKGIzMmMyNGM2YTQwMjcyKSwgQyhiN2UxNjQ5
NzlkNWNjZmMxKSwgQygxMmNiNDIzMGQyNmJmMjg2KSwKKyAgICAgQyhmMWJmOTEwZDQ0YmQ4NGNi
KSwgQyhiMzJjMjRjNmE0MDI3MiksIEMoMTFlZDEyZTM0YzQ4YzAzOSksCisgICAgIEMoYjBjMjUz
OGU1MWQwYTZhYyksIEMoNDI2OWJiNzczZTFkNTUzYSksIEMoZTM1YTlkYmFiZDM0ODY3KSwgQyhh
YmVjZmI5Yil9LAorICAgIHtDKGRmZmY1OTg5ZjVjZmQ5YTEpLCBDKGJjZWUyZTdlYTNhOTZmODMp
LCBDKDY4MWM3ODc0YWRiMjkwMTcpLAorICAgICBDKDNmZjZjOGFjN2MzNmI2M2EpLCBDKDQ4YmM4
ODMxZDg0OWUzMjYpLCBDKDMwYjA3OGU3NmIwMjE0ZTIpLAorICAgICBDKDQyOTU0ZTZhZDcyMWI5
MjApLCBDKDNmZjZjOGFjN2MzNmI2M2EpLCBDKDQ4YmM4ODMxZDg0OWUzMjYpLAorICAgICBDKDMw
YjA3OGU3NmIwMjE0ZTIpLCBDKDQyOTU0ZTZhZDcyMWI5MjApLCBDKGY5YWViMzNkMTY0YjQ0NzIp
LAorICAgICBDKDdiMzUzYjExMDgzMWRiZGMpLCBDKDE2ZjY0YzgyZjQ0YWUxN2IpLCBDKGI3MTI0
NGNjMTY0YjNiMmIpLAorICAgICBDKDhkZTEzMjU1KX0sCisgICAge0MoN2ZiMTllYjFhNDk2ZThm
NSksIEMoZDQ5ZTVkZmRiNWMwODMzZiksIEMoYzBkNWQ3YjJmN2M0OGRjNyksCisgICAgIEMoMWE1
NzMxM2EzMmYyMmRkZSksIEMoMzBhZjQ2ZTQ5ODUwYmY4YiksIEMoYWEwZmU4ZDEyZjgwOGY4Myks
CisgICAgIEMoNDQzZTMxZDcwODczYmI2YiksIEMoMWE1NzMxM2EzMmYyMmRkZSksIEMoMzBhZjQ2
ZTQ5ODUwYmY4YiksCisgICAgIEMoYWEwZmU4ZDEyZjgwOGY4MyksIEMoNDQzZTMxZDcwODczYmI2
YiksIEMoYmJlYjY3YzQ5YzlmZGMxMyksCisgICAgIEMoMThmMWUyYTg4ZjU5ZjlkNSksIEMoZmIx
YjA1MDM4ZTVkZWYxMSksIEMoZDA0NTBiNWNlNGMzOWM1MiksCisgICAgIEMoYTk4ZWUyOTkpfSwK
KyAgICB7Qyg1ZGJhNWIwZGFkY2NkYmFhKSwgQyg0YmE4ZGE4ZGVkODdmY2RjKSwgQyhmNjkzZmRk
MjViYWRmMmYwKSwKKyAgICAgQyhlOTAyOWU2MzY0Mjg2NTg3KSwgQyhhZTY5ZjQ5ZWNiNDY3MjZj
KSwgQygxOGUwMDI2NzkyMTdjNDA1KSwKKyAgICAgQyhiZDZkNjZlODUzMzJhZTlmKSwgQyhlOTAy
OWU2MzY0Mjg2NTg3KSwgQyhhZTY5ZjQ5ZWNiNDY3MjZjKSwKKyAgICAgQygxOGUwMDI2NzkyMTdj
NDA1KSwgQyhiZDZkNjZlODUzMzJhZTlmKSwgQyg2YmYzMzBiMWMzNTNkZDJhKSwKKyAgICAgQyg3
NGU5ZjJlNzFlM2E0MTUyKSwgQygzZjg1NTYwYjUwZjZjNDEzKSwgQyhkMzNhNTJhNDdlYWVkMmI0
KSwKKyAgICAgQygzMDE1ZjU1Nil9LAorICAgIHtDKDY4OGJlZjRiMTM1YTY4MjkpLCBDKDhkMzFk
ODJhYmNkNTRlOGUpLCBDKGY5NWY4YTMwZDU1MDM2ZDcpLAorICAgICBDKDNkOGM5MGUyN2FhMmUx
NDcpLCBDKDJlYzkzN2NlMGFhMjM2YjQpLCBDKDg5YjU2Mzk5NmQzYTBiNzgpLAorICAgICBDKDM5
YjAyNDEzYjIzYzNmMDgpLCBDKDNkOGM5MGUyN2FhMmUxNDcpLCBDKDJlYzkzN2NlMGFhMjM2YjQp
LAorICAgICBDKDg5YjU2Mzk5NmQzYTBiNzgpLCBDKDM5YjAyNDEzYjIzYzNmMDgpLCBDKDhkNDc1
YTJlNjRmYWYyZDIpLAorICAgICBDKDQ4NTY3ZjdkY2E0NmVjYWYpLCBDKDI1NGNkYTA4ZDVmODdh
NmQpLCBDKGVjNmFlOWY3MjljNDcwMzkpLAorICAgICBDKDVhNDMwZTI5KX0sCisgICAge0MoZDgz
MjNiZTA1NDMzYTQxMiksIEMoOGQ0OGZhMmIyYjc2MTQxZCksIEMoM2QzNDZmMjM5NzgzMzZhNSks
CisgICAgIEMoNGQ1MGM3NTM3NTYyMDMzZiksIEMoNTdkYzc2MjViNjFkZmU4OSksIEMoOTcyM2E5
ZjRjMDhhZDkzYSksCisgICAgIEMoNTMwOTU5NmY0OGFiNDU2YiksIEMoNGQ1MGM3NTM3NTYyMDMz
ZiksIEMoNTdkYzc2MjViNjFkZmU4OSksCisgICAgIEMoOTcyM2E5ZjRjMDhhZDkzYSksIEMoNTMw
OTU5NmY0OGFiNDU2YiksIEMoN2U0NTMwODgwMTlkMjIwZiksCisgICAgIEMoODc3NjA2N2JhNmFi
OTcxNCksIEMoNjdlMWQwNmJkMTk1ZGUzOSksIEMoNzRhMWEzMmY4OTk0YjkxOCksCisgICAgIEMo
Mjc5N2FkZDApfSwKKyAgICB7QygzYjU0MDQyNzhhNTVhN2ZjKSwgQygyM2NhMGIzMjdjMmQwYTgx
KSwgQyhhNmQ2NTMyOTU3MWM4OTJjKSwKKyAgICAgQyg0NTUwNDgwMWUwZTYwNjZiKSwgQyg4NmU2
YzZkNjE1MmEzZDA0KSwgQyg0ZjNkYjFjNTNlY2EyOTUyKSwKKyAgICAgQyhkMjRkNjliM2U5ZWYx
MGYzKSwgQyg0NTUwNDgwMWUwZTYwNjZiKSwgQyg4NmU2YzZkNjE1MmEzZDA0KSwKKyAgICAgQyg0
ZjNkYjFjNTNlY2EyOTUyKSwgQyhkMjRkNjliM2U5ZWYxMGYzKSwgQyg5M2EwZGUyMjE5ZTY2YTcw
KSwKKyAgICAgQyg4OTMyYzcxMTVjY2IxZjhhKSwgQyg1ZWY1MDNmZGYyODQxYThjKSwgQygzODA2
NGRkOWVmYTgwYTQxKSwKKyAgICAgQygyN2Q1NTAxNil9LAorICAgIHtDKDJhOTZhM2Y5NmM1ZTli
YmMpLCBDKDhjYWY4NTY2ZTIxMmRkYTgpLCBDKDkwNGRlNTU5Y2ExNmU0NWUpLAorICAgICBDKGYx
M2JjMmQ5YzJmZTIyMmUpLCBDKGJlNGNjZWM5YTZjZGNjZmQpLCBDKDM3YjJjYmRkOTczYTNhYzkp
LAorICAgICBDKDdiMzIyM2NkOWM5NDk3YmUpLCBDKGYxM2JjMmQ5YzJmZTIyMmUpLCBDKGJlNGNj
ZWM5YTZjZGNjZmQpLAorICAgICBDKDM3YjJjYmRkOTczYTNhYzkpLCBDKDdiMzIyM2NkOWM5NDk3
YmUpLCBDKGQ1OTA0NDQwZjM3NmY4ODkpLAorICAgICBDKDYyYjEzMTg3Njk5YzQ3M2MpLCBDKDQ3
NTFiODkyNTFmMjY3MjYpLCBDKDk1MDBkODRmYTNhNjFiYTgpLAorICAgICBDKDg0OTQ1YTgyKX0s
CisgICAge0MoMjJiZWJmZGNjMjZkMThmZiksIEMoNGI0ZDhkY2IxMDgwN2JhMSksIEMoNDAyNjVl
ZWUzMGM2Yjg5NiksCisgICAgIEMoMzc1MmI0MjMwNzNiMTE5YSksIEMoMzc3ZGM1ZWI3YzY2MmJk
YiksIEMoMmI5ZjA3ZjkzYTZjMjViOSksCisgICAgIEMoOTZmMjRlZGUyYmRjMDcxOCksIEMoMzc1
MmI0MjMwNzNiMTE5YSksIEMoMzc3ZGM1ZWI3YzY2MmJkYiksCisgICAgIEMoMmI5ZjA3ZjkzYTZj
MjViOSksIEMoOTZmMjRlZGUyYmRjMDcxOCksIEMoZjc2OTliMTJjMzE0MTdiZCksCisgICAgIEMo
MTdiMzY2ZjQwMWM1OGIyKSwgQyhiZjYwMTg4ZDVmNDM3YjM3KSwgQyg0ODQ0MzZlNTZkZjE3ZjA0
KSwgQygzZWY3ZTIyNCl9LAorICAgIHtDKDYyN2EyMjQ5ZWM2YmJjYzIpLCBDKGMwNTc4YjQ2MmE0
NjczNWEpLCBDKDQ5NzRiOGVlMWMyZDRmMWYpLAorICAgICBDKGViZGJiOTE4ZWI2ZDgzN2YpLCBD
KDhmYjVmMjE4ZGQ4NDE0N2MpLCBDKGM3N2RkMWY4ODFkZjJjNTQpLAorICAgICBDKDYyZWFjMjk4
ZWMyMjZkYzMpLCBDKGViZGJiOTE4ZWI2ZDgzN2YpLCBDKDhmYjVmMjE4ZGQ4NDE0N2MpLAorICAg
ICBDKGM3N2RkMWY4ODFkZjJjNTQpLCBDKDYyZWFjMjk4ZWMyMjZkYzMpLCBDKDQzZWRlZDgzYzRi
NjBiZDApLAorICAgICBDKDlhMGE0MDNiNTQ4NzUwM2IpLCBDKDI1ZjMwNWQ5MTQ3ZjBiZGEpLCBD
KDNhZDQxN2Y1MTFiYzFlNjQpLAorICAgICBDKDM1ZWQ4ZGM4KX0sCisgICAge0MoM2FiYWYxNjY3
YmEyZjNlMCksIEMoZWU3ODQ3NmI1ZWVhZGMxKSwgQyg3ZTU2YWMwYTZjYTRmM2Y0KSwKKyAgICAg
QyhmMWI5YjQxM2RmOWQ3OWVkKSwgQyhhNzYyMWI2ZmQwMmRiNTAzKSwgQyhkOTJmN2JhOTkyOGE0
ZmZlKSwKKyAgICAgQyg1M2Y1NmJhYmRjYWU5NmE2KSwgQyhmMWI5YjQxM2RmOWQ3OWVkKSwgQyhh
NzYyMWI2ZmQwMmRiNTAzKSwKKyAgICAgQyhkOTJmN2JhOTkyOGE0ZmZlKSwgQyg1M2Y1NmJhYmRj
YWU5NmE2KSwgQyg1MzAyYjg5ZmM0ODcxM2FiKSwKKyAgICAgQyhkMDNlM2IwNGRiZTdhMmYyKSwg
QyhmYTc0ZWY4YWY2ZDM3NmE3KSwgQygxMDNjOGNkZWExMDUwZWYyKSwKKyAgICAgQyg2YTc1ZTQz
ZCl9LAorICAgIHtDKDM5MzFhYzY4YzVmMWIyYzkpLCBDKGVmZTM4OTIzNjNhYjBmYjApLCBDKDQw
YjcwNzI2ODMzN2NkMzYpLAorICAgICBDKGE1M2E2YjY0YjFhYzg1YzkpLCBDKGQ1MGU3Zjg2ZWUx
YjgzMmIpLCBDKDdiYWIwOGZkZDI2YmEwYTQpLAorICAgICBDKDc1ODc3NDNjMThmZTI0NzUpLCBD
KGE1M2E2YjY0YjFhYzg1YzkpLCBDKGQ1MGU3Zjg2ZWUxYjgzMmIpLAorICAgICBDKDdiYWIwOGZk
ZDI2YmEwYTQpLCBDKDc1ODc3NDNjMThmZTI0NzUpLCBDKGUzYjVkNWQ0OTBjZjU3NjEpLAorICAg
ICBDKGRmYzA1M2Y3ZDA2NWVkZDUpLCBDKDQyZmZkOGQ1ZmI3MDEyOWYpLCBDKDU5OWNhMzg2Nzdj
Y2NkYzMpLAorICAgICBDKDIzNWQ5ODA1KX0sCisgICAge0MoYjk4ZmIwNjA2ZjQxNjc1NCksIEMo
NDZhNmU1NTQ3YmE5OWMxZSksIEMoYzkwOWQ4MjExMmE4ZWQyKSwKKyAgICAgQyhkYmZhYWU5NjQy
YjMyMDVhKSwgQyhmNjc2YTEzMzk0MDJiY2I5KSwgQyhmNGYxMmE1YjFhYzExZjI5KSwKKyAgICAg
Qyg3ZGI4YmFkODEyNDlkZWU0KSwgQyhkYmZhYWU5NjQyYjMyMDVhKSwgQyhmNjc2YTEzMzk0MDJi
Y2I5KSwKKyAgICAgQyhmNGYxMmE1YjFhYzExZjI5KSwgQyg3ZGI4YmFkODEyNDlkZWU0KSwgQyhi
MjZlNDZmMmRhOTU5MjJlKSwKKyAgICAgQygyYWFlZGQ1ZTEyZTNjNjExKSwgQyhhMGUyZDkwODI5
NjYwNzQpLCBDKGM2NGRhOGExNjdhZGQ2M2QpLCBDKGY3ZDY5NTcyKX0sCisgICAge0MoN2Y3NzI5
YTMzZTU4ZmNjNCksIEMoMmU0YmMxZTdhMDIzZWFkNCksIEMoZTcwNzAwOGVhN2NhNjIyMiksCisg
ICAgIEMoNDc0MThhNzE4MDAzMzRhMCksIEMoZDEwMzk1ZDhmYzY0ZDhhNCksIEMoODI1N2EzMDA2
MmNiNjZmKSwKKyAgICAgQyg2Nzg2ZjliMmRjMWZmMThhKSwgQyg0NzQxOGE3MTgwMDMzNGEwKSwg
QyhkMTAzOTVkOGZjNjRkOGE0KSwKKyAgICAgQyg4MjU3YTMwMDYyY2I2NmYpLCBDKDY3ODZmOWIy
ZGMxZmYxOGEpLCBDKDU2MzNmNDM3YmIyZjE4MGYpLAorICAgICBDKGU1YTNhNDA1NzM3ZDIyZDYp
LCBDKGNhMGZmMWVmNmY3ZjBiNzQpLCBDKGQwYWU2MDA2ODRiMTZkZjgpLAorICAgICBDKGJhY2Qw
MTk5KX0sCisgICAge0MoNDJhMGFhOWNlODI4NDhiMyksIEMoNTcyMzI3MzBlNmJlZTE3NSksIEMo
Zjg5YmIzZjM3MDc4MjAzMSksCisgICAgIEMoY2FhMzNjZjliNGY2NjE5YyksIEMoYjJjODY0OGFk
NDljMjA5ZiksIEMoOWU4OWVjZTA3MTJkYjFjMCksCisgICAgIEMoMTAxZDgyNzRhNzExYTU0Yiks
IEMoY2FhMzNjZjliNGY2NjE5YyksIEMoYjJjODY0OGFkNDljMjA5ZiksCisgICAgIEMoOWU4OWVj
ZTA3MTJkYjFjMCksIEMoMTAxZDgyNzRhNzExYTU0YiksIEMoNTM4ZTc5ZjFlNzAxMzVjZCksCisg
ICAgIEMoZTFmNWE3NmY5ODNjODQ0ZSksIEMoNjUzYzA4MmZkNjYwODhmYyksIEMoMWI5YzliNDY0
YjY1NDk1OCksCisgICAgIEMoZTQyOGY1MGUpfSwKKyAgICB7Qyg2YjJjNmQzODQwOGE0ODg5KSwg
QyhkZTNlZjZmNjhmYjI1ODg1KSwgQygyMDc1NGY0NTZjMjAzMzYxKSwKKyAgICAgQyg5NDFmNTAy
M2MwYzk0M2Y5KSwgQyhkZmRlYjk1NjRmZDY2ZjI0KSwgQygyMTQwY2VjNzA2YjlkNDA2KSwKKyAg
ICAgQyg3YjIyNDI5YjEzMWU5YzcyKSwgQyg5NDFmNTAyM2MwYzk0M2Y5KSwgQyhkZmRlYjk1NjRm
ZDY2ZjI0KSwKKyAgICAgQygyMTQwY2VjNzA2YjlkNDA2KSwgQyg3YjIyNDI5YjEzMWU5YzcyKSwg
Qyg5NDIxNWMyMmViOTQwZjQ1KSwKKyAgICAgQyhkMjhiOWVkNDc0ZjcyNDlhKSwgQyg2ZjI1ZTg4
ZjJmYmY5ZjU2KSwgQyhiNjcxOGY5ZTYwNWIzOGFjKSwKKyAgICAgQyg4MWVhYWFkMyl9LAorICAg
IHtDKDkzMDM4MGEzNzQxZTg2MmEpLCBDKDM0OGQyODYzOGRjNzE2NTgpLCBDKDg5ZGVkY2ZkMTY1
NGVhMGQpLAorICAgICBDKDdlN2Y2MTY4NDA4MDEwNiksIEMoODM3YWNlOTc5NDU4Mjk3NiksIEMo
NWFjOGNhNzZhMzU3ZWIxYiksCisgICAgIEMoMzJiNTgzMDg2MjU2NjFmYiksIEMoN2U3ZjYxNjg0
MDgwMTA2KSwgQyg4MzdhY2U5Nzk0NTgyOTc2KSwKKyAgICAgQyg1YWM4Y2E3NmEzNTdlYjFiKSwg
QygzMmI1ODMwODYyNTY2MWZiKSwgQyhjMDk3MDVjNDU3MjAyNWQ5KSwKKyAgICAgQyhmOTE4N2Y2
YWYwMjkxMzAzKSwgQygxYzBlZGQ4ZWU0YjAyNTM4KSwgQyhlNmNiMTA1ZGFhMDU3OGEpLCBDKGFk
ZGJkM2UzKX0sCisgICAge0MoOTQ4MDhiNWQyYWEyNWY5YSksIEMoY2VjNzI5NjgxMjgxOTVlMCks
IEMoZDlmNGRhMmJkYzFlMTMwZiksCisgICAgIEMoMjcyZDhkZDc0ZjMwMDZjYyksIEMoZWM2YzJh
ZDFlYzAzZjU1NCksIEMoNGFkMjc2YjI0OWE1ZDVkZCksCisgICAgIEMoNTQ5YTIyYTE3YzBjZGUx
MiksIEMoMjcyZDhkZDc0ZjMwMDZjYyksIEMoZWM2YzJhZDFlYzAzZjU1NCksCisgICAgIEMoNGFk
Mjc2YjI0OWE1ZDVkZCksIEMoNTQ5YTIyYTE3YzBjZGUxMiksIEMoNjAyMTE5Y2I4MjRkN2NkZSks
CisgICAgIEMoZjRkM2NlZjI0MGVmMzVmYSksIEMoZTg4OTg5NWUwMTkxMWJjNyksIEMoNzg1YTdl
NWFjMjBlODUyYiksCisgICAgIEMoZTY2ZGJjYTApfSwKKyAgICB7QyhiMzFhYmIwOGFlNmUzZDM4
KSwgQyg5ZWI5YTk1Y2JkOWU4MjIzKSwgQyg4MDE5ZTc5YjdlZTk0ZWE5KSwKKyAgICAgQyg3YjIy
NzFhN2EzMjQ4ZTIyKSwgQygzYjRmNzAwZTVhMGJhNTIzKSwgQyg4ZWJjNTIwYzIyNzIwNmZlKSwK
KyAgICAgQyhkYTNmODYxNDkwZjVkMjkxKSwgQyg3YjIyNzFhN2EzMjQ4ZTIyKSwgQygzYjRmNzAw
ZTVhMGJhNTIzKSwKKyAgICAgQyg4ZWJjNTIwYzIyNzIwNmZlKSwgQyhkYTNmODYxNDkwZjVkMjkx
KSwgQyhkMDhhNjg5ZjlmM2FhNjBlKSwKKyAgICAgQyg1NDdjMWI5N2EwNjg2NjFmKSwgQyg0YjE1
YTY3ZmEyOTE3MmYwKSwgQyhlYWY0MGMwODUxOTFkODBmKSwKKyAgICAgQyhhZmUxMWZkNSl9LAor
ICAgIHtDKGRjY2I1NTM0YTg5M2VhMWEpLCBDKGNlNzFjMzk4NzA4YzYxMzEpLCBDKGZlMjM5NjMx
NTQ1N2MxNjQpLAorICAgICBDKDNmMTIyOWY0ZDBmZDk2ZmIpLCBDKDMzMTMwYWE1ZmE5ZDQzZjIp
LCBDKGU0MjY5M2Q1YjM0ZTYzYWIpLAorICAgICBDKDJmNGVmMmJlNjdmNjIxMDQpLCBDKDNmMTIy
OWY0ZDBmZDk2ZmIpLCBDKDMzMTMwYWE1ZmE5ZDQzZjIpLAorICAgICBDKGU0MjY5M2Q1YjM0ZTYz
YWIpLCBDKDJmNGVmMmJlNjdmNjIxMDQpLCBDKDM3MmU1MTUzNTE2ZTM3YjkpLAorICAgICBDKGFm
OWVjMTQyYWIxMmNjODYpLCBDKDc3NzkyMGMwOTM0NWUzNTkpLCBDKGU3YzRhMzgzYmVmOGFkYzYp
LAorICAgICBDKGE3MWE0MDZmKX0sCisgICAge0MoNjM2OTE2MzU2NTgxNGRlNiksIEMoOGZlYjg2
ZmIzOGQwOGMyZiksIEMoNDk3NjkzMzQ4NWNjOWEyMCksCisgICAgIEMoN2QzZTgyZDViYTI5YTkw
ZCksIEMoZDU5ODNjYzkzYTlkMTI2YSksIEMoMzdlOWRmZDk1MGU3YjY5MiksCisgICAgIEMoODA2
NzNiZTZhNzg4OGI4NyksIEMoN2QzZTgyZDViYTI5YTkwZCksIEMoZDU5ODNjYzkzYTlkMTI2YSks
CisgICAgIEMoMzdlOWRmZDk1MGU3YjY5MiksIEMoODA2NzNiZTZhNzg4OGI4NyksIEMoNTdmNzMy
ZGM2MDA4MDhiYyksCisgICAgIEMoNTk0NzcxOTk4MDJjYzc4YiksIEMoZjgyNDgxMGViOGYyYzJk
ZSksIEMoYzRhMzQzN2YwNWIzYjYxYyksCisgICAgIEMoOWQ5MGVhZjUpfSwKKyAgICB7QyhlZGVl
NGZmMjUzZDlmOWIzKSwgQyg5NmVmNzZmYjI3OWVmMGFkKSwgQyhhNGQyMDRkMTc5ZGIyNDYwKSwK
KyAgICAgQygxZjNkY2RmYTUxMzUxMmQ2KSwgQyg0ZGM3ZWMwNzI4MzExN2U0KSwgQyg0NDM4YmFl
ODhhZTI4YmY5KSwKKyAgICAgQyhhYTdlYWU3MmM5MjQ0YTBkKSwgQygxZjNkY2RmYTUxMzUxMmQ2
KSwgQyg0ZGM3ZWMwNzI4MzExN2U0KSwKKyAgICAgQyg0NDM4YmFlODhhZTI4YmY5KSwgQyhhYTdl
YWU3MmM5MjQ0YTBkKSwgQyhiOWFlZGM4ZDNlY2M3MmRmKSwKKyAgICAgQyhiNzVhOGViMDkwYTc3
ZDYyKSwgQyg2YjE1Njc3ZjljZDkxNTA3KSwgQyg1MWQ4MjgyY2IzYTlkZGJmKSwKKyAgICAgQyg2
NjY1ZGIxMCl9LAorICAgIHtDKDk0MTk5M2RmNmU2MzMyMTQpLCBDKDkyOWJjMWJlY2E1YjcyYzYp
LCBDKDE0MWZjNTJiOGQ1NTU3MmQpLAorICAgICBDKGIzYjc4MmFkMzA4ZjIxZWQpLCBDKDRmMjY3
NjQ4NTA0MWRlZTApLCBDKGJmZTI3OWFlZDVjYjRiYzgpLAorICAgICBDKDJhNjI1MDhhNDY3YTIy
ZmYpLCBDKGIzYjc4MmFkMzA4ZjIxZWQpLCBDKDRmMjY3NjQ4NTA0MWRlZTApLAorICAgICBDKGJm
ZTI3OWFlZDVjYjRiYzgpLCBDKDJhNjI1MDhhNDY3YTIyZmYpLCBDKGU3NGQyOWVhYjc0MjM4NWQp
LAorICAgICBDKDU2YjA1Y2Q5MGVjZmMyOTMpLCBDKGM2MDM3MjhlYTczZjg4NDQpLCBDKDg2Mzhm
Y2QyMWJjNjkyYzQpLAorICAgICBDKDljOTc3Y2JmKX0sCisgICAge0MoODU5ODM4MjkzZjY0Y2Q0
YyksIEMoNDg0NDAzYjM5ZDQ0YWQ3OSksIEMoYmY2NzRlNjRkNjRiOTMzOSksCisgICAgIEMoNDRk
NjhhZmRhOTU2OGYwOCksIEMoNDc4NTY4ZWQ1MWNhMWQ2NSksIEMoNjc5YzIwNGFkM2Q5ZTc2Niks
CisgICAgIEMoYjI4ZTc4ODg3ODQ4OGRjMSksIEMoNDRkNjhhZmRhOTU2OGYwOCksIEMoNDc4NTY4
ZWQ1MWNhMWQ2NSksCisgICAgIEMoNjc5YzIwNGFkM2Q5ZTc2NiksIEMoYjI4ZTc4ODg3ODQ4OGRj
MSksIEMoZDAwMWE4NGQzYTg0ZmFlNiksCisgICAgIEMoZDM3Njk1OGZlNGNiOTEzZSksIEMoMTc0
MzUyNzdlMzZjODZmMCksIEMoMjM2NTdiMjYzYzM0N2FhNiksCisgICAgIEMoZWU4M2RkZDQpfSwK
KyAgICB7QyhjMTliNTY0OGUwZDlmNTU1KSwgQygzMjhlNDdiMmI3NTYyOTkzKSwgQyhlNzU2Yjky
YmE0YmQ2YTUxKSwKKyAgICAgQyhjMzMxNGUzNjI3NjRkZGI4KSwgQyg2NDgxYzA4NGVlOWVjNmI1
KSwgQyhlZGUyM2ZiOWEyNTE3NzEpLAorICAgICBDKGJkNjE3ZjI2NDMzMjQ1OTApLCBDKGMzMzE0
ZTM2Mjc2NGRkYjgpLCBDKDY0ODFjMDg0ZWU5ZWM2YjUpLAorICAgICBDKGVkZTIzZmI5YTI1MTc3
MSksIEMoYmQ2MTdmMjY0MzMyNDU5MCksIEMoZDJkMzBjOWI5NWUwMzBmNSksCisgICAgIEMoOGE1
MTczMTJmZmM1Nzk1ZSksIEMoOGIxZjMyNTAzM2JkNTM1ZSksIEMoM2VlNmU4NjdlMDNmMjg5Miks
IEMoMjY1MTljYyl9LAorICAgIHtDKGY5NjNiNjNiOTAwNmMyNDgpLCBDKDllOWJmNzI3ZmZhYTAw
YmMpLCBDKGM3M2JhY2M3NWI5MTdlM2EpLAorICAgICBDKDJjNmFhNzA2MTI5Y2M1NGMpLCBDKDE3
YTcwNmY1OWE0OWYwODYpLCBDKGM3YzFlZWM0NTUyMTcxNDUpLAorICAgICBDKDZhZGZkYzZlMDc2
MDJkNDIpLCBDKDJjNmFhNzA2MTI5Y2M1NGMpLCBDKDE3YTcwNmY1OWE0OWYwODYpLAorICAgICBD
KGM3YzFlZWM0NTUyMTcxNDUpLCBDKDZhZGZkYzZlMDc2MDJkNDIpLCBDKGZiNzVmY2EzMGQ4NDhk
ZDIpLAorICAgICBDKDUyMjhjOWVkMTQ2NTNlZDQpLCBDKDk1Mzk1ODkxMDE1M2IxYTIpLCBDKGE0
MzAxMDNhMjRmNDJhNWQpLAorICAgICBDKGE0ODVhNTNmKX0sCisgICAge0MoNmE4YWEwODUyYThj
MWYzYiksIEMoYzhmMWU1ZTIwNmEyMTAxNiksIEMoMmFhNTU0YWVkMWViYjUyNCksCisgICAgIEMo
ZmMzZTNjMzIyY2Q1ZDg5YiksIEMoYjdlMzkxMWRjMmJkNGViYiksIEMoZmNkNmRhNWU1ZmFlODMz
YSksCisgICAgIEMoNTFlZDNjNDFmODdmOTExOCksIEMoZmMzZTNjMzIyY2Q1ZDg5YiksIEMoYjdl
MzkxMWRjMmJkNGViYiksCisgICAgIEMoZmNkNmRhNWU1ZmFlODMzYSksIEMoNTFlZDNjNDFmODdm
OTExOCksIEMoZjMxNzUwY2JjMTljNDIwYSksCisgICAgIEMoMTg2ZGFiMWFiYWRhMWQ4NiksIEMo
Y2E3Zjg4Y2I4OTRiM2NkNyksIEMoMjg1OWVlYjFjMzczNzkwYyksCisgICAgIEMoZjYyYmM0MTIp
fSwKKyAgICB7Qyg3NDA0MjhiNGQ0NWU1ZmI4KSwgQyg0Yzk1YTRjZTkyMmNiMGE1KSwgQyhlOTlj
M2JhNzhmZWFlNzk2KSwKKyAgICAgQyg5MTRmMWVhMmZkY2ViZjVjKSwgQyg5NTY2NDUzYzA3Y2Qw
NjAxKSwgQyg5ODQxYmY2NmQwNDYyY2QpLAorICAgICBDKDc5MTQwYzFjMTg1MzZhZWIpLCBDKDkx
NGYxZWEyZmRjZWJmNWMpLCBDKDk1NjY0NTNjMDdjZDA2MDEpLAorICAgICBDKDk4NDFiZjY2ZDA0
NjJjZCksIEMoNzkxNDBjMWMxODUzNmFlYiksIEMoYTk2M2I5MzBiMDU4MjBjMiksCisgICAgIEMo
NmE3ZDlmYTBjOGM0NTE1MyksIEMoNjQyMTRjNDBkMDdjZjM5YiksIEMoNzA1N2RhZjFkODA2YzAx
NCksCisgICAgIEMoODk3NWE0MzYpfSwKKyAgICB7Qyg2NThiODgzYjNhODcyYjg2KSwgQygyZjBl
MzAzZjBmNjQ4MjdhKSwgQyg5NzUzMzdlMjNkYzQ1ZTEpLAorICAgICBDKDk5NDY4YTkxNzk4NjE2
MmIpLCBDKDdiMzE0MzRhYWM2ZTBhZjApLCBDKGY2OTE1YzE1NjJjN2Q4MmYpLAorICAgICBDKGU0
MDcxZDgyYTZkZDcxZGIpLCBDKDk5NDY4YTkxNzk4NjE2MmIpLCBDKDdiMzE0MzRhYWM2ZTBhZjAp
LAorICAgICBDKGY2OTE1YzE1NjJjN2Q4MmYpLCBDKGU0MDcxZDgyYTZkZDcxZGIpLCBDKDVmNTMz
MWYwNzdiNWQ5OTYpLAorICAgICBDKDdiMzE0YmEyMWI3NDdhNGYpLCBDKDVhNzNjYjk1MjFkYTE3
ZjUpLCBDKDEyZWQ0MzVmYWUyODZkODYpLAorICAgICBDKDk0ZmY3ZjQxKX0sCisgICAge0MoNmRm
MGE5NzdkYTVkMjdkNCksIEMoODkxZGQwZTdjYjE5NTA4KSwgQyhmZDY1NDM0YTBiNzFlNjgwKSwK
KyAgICAgQyg4Nzk5ZTQ3NDBlNTczYzUwKSwgQyg5ZTczOWI1MmQwZjM0MWU4KSwgQyhjZGZkMzRi
YTdkN2IwM2ViKSwKKyAgICAgQyg1MDYxODEyY2U2Yzg4NDk5KSwgQyg4Nzk5ZTQ3NDBlNTczYzUw
KSwgQyg5ZTczOWI1MmQwZjM0MWU4KSwKKyAgICAgQyhjZGZkMzRiYTdkN2IwM2ViKSwgQyg1MDYx
ODEyY2U2Yzg4NDk5KSwgQyg2MTJiOGQ4ZjI0MTFkYzVjKSwKKyAgICAgQyg4NzhiZDg4M2QyOWM3
Nzg3KSwgQyg0N2E4NDY3MjcxODJiYiksIEMoZWM0OTQ5NTA4YzhiM2I5YSksIEMoNzYwYWEwMzEp
fSwKKyAgICB7QyhhOTAwMjc1NDY0YWUwN2VmKSwgQygxMWYyY2ZkYTM0YmViNGEzKSwgQyg5YWJm
OTFlNWExYzM4ZTQpLAorICAgICBDKDgwNjNkODBhYjI2ZjNkNmQpLCBDKDQxNzdiNGI5YjRmMDM5
M2YpLCBDKDZkZTQyYmE4NjcyYjk2NDApLAorICAgICBDKGQwYmNjZGI3MmM1MWMxOCksIEMoODA2
M2Q4MGFiMjZmM2Q2ZCksIEMoNDE3N2I0YjliNGYwMzkzZiksCisgICAgIEMoNmRlNDJiYTg2NzJi
OTY0MCksIEMoZDBiY2NkYjcyYzUxYzE4KSwgQyhhZjNmNjExYjdmMjJjZjEyKSwKKyAgICAgQygz
ODYzYzQxNDkyNjQ1NzU1KSwgQyg5MjhjN2E2MTZhOGYxNGY5KSwgQyhhODJjNzhlYjJlYWRjNThi
KSwKKyAgICAgQygzYmRhNzZkZil9LAorICAgIHtDKDgxMGJjOGFhMGM0MGJjYjApLCBDKDQ0OGEw
MTk1NjhkMDE0NDEpLCBDKGY2MGVjNTJmNjBkM2FlYWUpLAorICAgICBDKDUyYzQ0ODM3YWE2ZGZj
NzcpLCBDKDE1ZDhkOGZjY2RkNmRjNWIpLCBDKDM0NWI3OTNjY2ZhOTMwNTUpLAorICAgICBDKDkz
MjE2MGZlODAyY2E5NzUpLCBDKDUyYzQ0ODM3YWE2ZGZjNzcpLCBDKDE1ZDhkOGZjY2RkNmRjNWIp
LAorICAgICBDKDM0NWI3OTNjY2ZhOTMwNTUpLCBDKDkzMjE2MGZlODAyY2E5NzUpLCBDKGE2MjRi
MGRkOTNmYzE4Y2QpLAorICAgICBDKGQ5NTViMjU0YzIwMzdmMWUpLCBDKGU1NDA1MzNkMzcwYTY2
NGMpLCBDKDJiYTRlYzEyNTE0ZTlkNyksIEMoNDk4ZTJlNjUpfSwKKyAgICB7QygyMjAzNjMyN2Rl
YjU5ZWQ3KSwgQyhhZGMwNWNlYjk3MDI2YTAyKSwgQyg0OGJmZjA2NTQyNjI2NzJiKSwKKyAgICAg
QyhjNzkxYjMxM2FiYTNmMjU4KSwgQyg0NDNjNzc1N2E0NzI3YmVlKSwgQyhlMzBlNGIyMzcyMTcx
YmRmKSwKKyAgICAgQyhmM2RiOTg2YzQxNTZmM2NiKSwgQyhjNzkxYjMxM2FiYTNmMjU4KSwgQyg0
NDNjNzc1N2E0NzI3YmVlKSwKKyAgICAgQyhlMzBlNGIyMzcyMTcxYmRmKSwgQyhmM2RiOTg2YzQx
NTZmM2NiKSwgQyhhOTM5YWVmYWI5N2M2ZTE1KSwKKyAgICAgQyhkYmViOGFjZjFkNWIwZTZjKSwg
QygxZTBlYWI2NjdhNzk1YmJhKSwgQyg4MGRkNTM5OTAyZGY0ZDUwKSwKKyAgICAgQyhkMzhkZWI0
OCl9LAorICAgIHtDKDdkMTRkZmE5NzcyYjAwYzgpLCBDKDU5NTczNWVmYzdlZWFlZDcpLCBDKDI5
ODcyODU0Zjk0YzM1MDcpLAorICAgICBDKGJjMjQxNTc5ZDgzNDg0MDEpLCBDKDE2ZGM4MzI4MDRk
NzI4ZjApLCBDKGU5Y2M3MWFlNjRlM2YwOWUpLAorICAgICBDKGJlZjYzNGJjOTc4YmFjMzEpLCBD
KGJjMjQxNTc5ZDgzNDg0MDEpLCBDKDE2ZGM4MzI4MDRkNzI4ZjApLAorICAgICBDKGU5Y2M3MWFl
NjRlM2YwOWUpLCBDKGJlZjYzNGJjOTc4YmFjMzEpLCBDKDdmNjRiMWZhMmE5MTI5ZSksCisgICAg
IEMoNzFkODMxYmQ1MzBhYzdmMyksIEMoYzdhZDBhOGE2ZDViZTZmMSksIEMoODJhN2QzYTgxNWM3
YWFhYiksCisgICAgIEMoODJiM2ZiNmIpfSwKKyAgICB7QygyZDc3N2NkZGI5MTI2NzVkKSwgQygy
NzhkN2IxMDcyMmExM2Y5KSwgQyhmNWMwMmJmYjdjYzA3OGFmKSwKKyAgICAgQyg0MjgzMDAxMjM5
ODg4ODM2KSwgQyhmNDRjYTM5YTZmNzlkYjg5KSwgQyhlZDE4NjEyMmQ3MWJjYzlmKSwKKyAgICAg
Qyg4NjIwMDE3YWI1ZjNiYTNiKSwgQyg0MjgzMDAxMjM5ODg4ODM2KSwgQyhmNDRjYTM5YTZmNzlk
Yjg5KSwKKyAgICAgQyhlZDE4NjEyMmQ3MWJjYzlmKSwgQyg4NjIwMDE3YWI1ZjNiYTNiKSwgQyhl
Nzg3NDcyMTg3ZjE3NmMpLAorICAgICBDKDI2N2U2NGM0NzI4Y2YxODEpLCBDKGYxYmE0YjMwMDdj
MTVlMzApLCBDKDhlM2E3NWQ1YjAyZWNmYzApLAorICAgICBDKGU1MDBlMjVmKX0sCisgICAge0Mo
ZjJlYzk4ODI0ZThhYTYxMyksIEMoNWViN2UzZmI1M2ZlM2JlZCksIEMoMTJjMjI4NjA0NjZlMWRk
NCksCisgICAgIEMoMzc0ZGQ0Mjg4ZTBiNzJlNSksIEMoZmY4OTE2ZGI3MDZjMGRmNCksIEMoY2Ix
YTllODVkZTVlNGI4ZCksCisgICAgIEMoZDRkMTJhZmI2N2EyNzY1OSksIEMoMzc0ZGQ0Mjg4ZTBi
NzJlNSksIEMoZmY4OTE2ZGI3MDZjMGRmNCksCisgICAgIEMoY2IxYTllODVkZTVlNGI4ZCksIEMo
ZDRkMTJhZmI2N2EyNzY1OSksIEMoZmViNjkwOTVkMWJhMTc1YSksCisgICAgIEMoZTIwMDNhYWIy
M2E0N2ZhZCksIEMoODE2M2EzZWNhYjg5NGI0OSksIEMoNDZkMzU2Njc0Y2UwNDFmNiksCisgICAg
IEMoYmQyYmIwN2MpfSwKKyAgICB7Qyg1ZTc2Mzk4OGUyMWY0ODdmKSwgQygyNDE4OWRlODA2NWQ4
ZGM1KSwgQyhkMTUxOWQyNDAzYjYyYWEwKSwKKyAgICAgQyg5MTM2NDU2NzQwMTE5ODE1KSwgQyg0
ZDhmZjc3MzNiMjdlYjgzKSwgQyhlYTMwNDBiYzBjNzE3ZWY4KSwKKyAgICAgQyg3NjE3YWI0MDBk
ZmFkYmMpLCBDKDkxMzY0NTY3NDAxMTk4MTUpLCBDKDRkOGZmNzczM2IyN2ViODMpLAorICAgICBD
KGVhMzA0MGJjMGM3MTdlZjgpLCBDKDc2MTdhYjQwMGRmYWRiYyksIEMoZmIzMzY3NzBjMTBiMTdh
MSksCisgICAgIEMoNjEyM2I2OGI1YjMxZjE1MSksIEMoMWUxNDdkNWYyOTVlY2NmMiksIEMoOWVj
YmIxMzMzNTU2Zjk3NyksCisgICAgIEMoM2EyYjQzMWQpfSwKKyAgICB7Qyg0ODk0OWRjMzI3YmI5
NmFkKSwgQyhlMWZkMjE2MzZjNWM1MGI0KSwgQygzZjZlYjdmMTNhODcxMmI0KSwKKyAgICAgQygx
NGNmN2YwMmRhYjBlZWU4KSwgQyg2ZDAxNzUwNjA1ZTg5NDQ1KSwgQyg0ZjFjZjQwMDZlNjEzYjc4
KSwKKyAgICAgQyg1N2M0MGM0ZGIzMmJlYzNiKSwgQygxNGNmN2YwMmRhYjBlZWU4KSwgQyg2ZDAx
NzUwNjA1ZTg5NDQ1KSwKKyAgICAgQyg0ZjFjZjQwMDZlNjEzYjc4KSwgQyg1N2M0MGM0ZGIzMmJl
YzNiKSwgQygxZmRlNWEzNDdmNGEzMjZlKSwKKyAgICAgQyhjYjVhNTQzMDhhZGIwZTNmKSwgQygx
NDk5NGIyYmE0NDdhMjNjKSwgQyg3MDY3ZDBhYmI0MjU3YjY4KSwKKyAgICAgQyg3MzIyYTgzZCl9
LAorICAgIHtDKGI3YzQyMDlmYjI0YTg1YzUpLCBDKGIzNWZlYjMxOWM3OWNlMTApLCBDKGYwZDNk
ZTE5MTgzM2I5MjIpLAorICAgICBDKDU3MGQ2Mjc1OGRkZjYzOTcpLCBDKDVlMDIwNGZiNjhhN2I4
MDApLCBDKDQzODNhOTIzNmY4YjVhMmIpLAorICAgICBDKDdiYzFhNjQ2NDFkODAzYTQpLCBDKDU3
MGQ2Mjc1OGRkZjYzOTcpLCBDKDVlMDIwNGZiNjhhN2I4MDApLAorICAgICBDKDQzODNhOTIzNmY4
YjVhMmIpLCBDKDdiYzFhNjQ2NDFkODAzYTQpLCBDKDU0MzRkNjEyODUwOTlmN2EpLAorICAgICBD
KGQ0OTQ0OWFhY2RkNWRkNjcpLCBDKDk3ODU1YmEwZTlhN2Q3NWQpLCBDKGRhNjczMjgwNjJmM2E2
MmYpLAorICAgICBDKGE2NDVjYTFjKX0sCisgICAge0MoOWM5ZTViZTA5NDNkNGIwNSksIEMoYjcz
ZGM2OWU0NTIwMWNiYiksIEMoYWFiMTcxODBiZmU1MDgzZCksCisgICAgIEMoYzczOGE3N2E5YTU1
ZjBlMiksIEMoNzA1MjIxYWRkZWRkODFkZiksIEMoZmQ5YmQ4ZDM5N2FiY2ZhMyksCisgICAgIEMo
OGNjZjAwMDRhYTg2Yjc5NSksIEMoYzczOGE3N2E5YTU1ZjBlMiksIEMoNzA1MjIxYWRkZWRkODFk
ZiksCisgICAgIEMoZmQ5YmQ4ZDM5N2FiY2ZhMyksIEMoOGNjZjAwMDRhYTg2Yjc5NSksIEMoMmJi
NWRiMjI4MDA2ODIwNiksCisgICAgIEMoOGMyMmQyOWYzMDdhMDFkKSwgQygyNzRhMjJkZTAyZjQ3
M2M4KSwgQyhiODc5MTg3MGY0MjY4MTgyKSwgQyg4OTA5YTQ1YSl9LAorICAgIHtDKDM4OThiY2E0
ZGZkNjYzOGQpLCBDKGY5MTFmZjM1ZWZlZjAxNjcpLCBDKDI0YmRmNjllNTA5MWZjODgpLAorICAg
ICBDKDliODI1NjdhYjY1NjA3OTYpLCBDKDg5MWI2OTQ2MmI0MWMyMjQpLCBDKDhlY2NjN2U0ZjNh
ZjNiNTEpLAorICAgICBDKDM4MWU1NGMzYzhmMWM3ZDApLCBDKDliODI1NjdhYjY1NjA3OTYpLCBD
KDg5MWI2OTQ2MmI0MWMyMjQpLAorICAgICBDKDhlY2NjN2U0ZjNhZjNiNTEpLCBDKDM4MWU1NGMz
YzhmMWM3ZDApLCBDKGM4MGZiYzQ4OWE1NThhNTUpLAorICAgICBDKDFiYTg4ZTA2MmE2NjNhZjcp
LCBDKGFmN2IxZWYxYzAxMTYzMDMpLCBDKGJkMjBlMWE1YTZiMWEwY2QpLAorICAgICBDKGJkMzAw
NzRjKX0sCisgICAge0MoNWI1ZDI1NTc0MDBlNjhlNyksIEMoOThkNjEwMDMzNTc0Y2VlKSwgQyhk
ZmQwODc3MmNlMzg1ZGViKSwKKyAgICAgQygzYzEzZTg5NDM2NWRjNmMyKSwgQygyNmZjN2JiY2Rh
M2YwZWYpLCBDKGRiYjcxMTA2Y2RiZmVhMzYpLAorICAgICBDKDc4NTIzOWE3NDJjNmQyNmQpLCBD
KDNjMTNlODk0MzY1ZGM2YzIpLCBDKDI2ZmM3YmJjZGEzZjBlZiksCisgICAgIEMoZGJiNzExMDZj
ZGJmZWEzNiksIEMoNzg1MjM5YTc0MmM2ZDI2ZCksIEMoZjgxMGM0MTVhZTA1YjJmNCksCisgICAg
IEMoYmI5YjllNzM5ODUyNjA4OCksIEMoNzAxMjhmMWJmODMwYTMyYiksIEMoYmNjNzNmODJiNjQx
MDg5OSksCisgICAgIEMoYzE3Y2YwMDEpfSwKKyAgICB7QyhhOTI3ZWQ4YjJiZjA5YmI2KSwgQyg2
MDZlNTJmMTBhZTk0ZWNhKSwgQyg3MWMyMjAzZmViMzVhOWVlKSwKKyAgICAgQyg2ZTY1ZWMxNGE4
ZmI1NjUpLCBDKDM0YmZmNmYyZWU1YTdmNzkpLCBDKDJlMzI5YTViZTJjMDExYiksCisgICAgIEMo
NzMxNjFjOTMzMzFiMTRmOSksIEMoNmU2NWVjMTRhOGZiNTY1KSwgQygzNGJmZjZmMmVlNWE3Zjc5
KSwKKyAgICAgQygyZTMyOWE1YmUyYzAxMWIpLCBDKDczMTYxYzkzMzMxYjE0ZjkpLCBDKDE1ZDEz
ZjI0MDhhZWNmODgpLAorICAgICBDKDlmNWI2MWI4YTRiNTViMzEpLCBDKDhmZTI1YTQzYjI5NmRi
YTYpLCBDKGJkYWQwM2I3MzAwZjI4NGUpLAorICAgICBDKDI2ZmZkMjVhKX0sCisgICAge0MoOGQy
NTc0NjQxNGFlZGYyOCksIEMoMzRiMTYyOWQyOGIzM2QzYSksIEMoNGQ1Mzk0YWVhNWY4MmQ3Yiks
CisgICAgIEMoMzc5Zjc2NDU4YTNjODk1NyksIEMoNzlkZDA4MGY5ODQzYWY3NyksIEMoYzQ2ZjBh
Nzg0N2Y2MGMxZCksCisgICAgIEMoYWYxNTc5YzU3OTc3MDNjYyksIEMoMzc5Zjc2NDU4YTNjODk1
NyksIEMoNzlkZDA4MGY5ODQzYWY3NyksCisgICAgIEMoYzQ2ZjBhNzg0N2Y2MGMxZCksIEMoYWYx
NTc5YzU3OTc3MDNjYyksIEMoOGI3ZDMxZjMzODc1NWMxNCksCisgICAgIEMoMmVmZjk3Njc5NTEy
YWFhOCksIEMoZGYwN2Q2OGUwNzUxNzllZCksIEMoYzhmYTZjN2E3MjllN2YxZiksCisgICAgIEMo
ZjFkOGNlM2MpfSwKKyAgICB7QyhiNWJiZGI3MzQ1ODcxMmYyKSwgQygxZmY4ODdiM2MyYTM1MTM3
KSwgQyg3ZjcyMzFmNzAyZDBhY2U5KSwKKyAgICAgQygxZTZmMDkxMGMzZDI1YmQ4KSwgQyhhZDll
MjUwODYyMTAyNDY3KSwgQygxYzg0MmEwN2FiYWIzMGNkKSwKKyAgICAgQyhjZDgxMjQxNzZiYWMw
MWFjKSwgQygxZTZmMDkxMGMzZDI1YmQ4KSwgQyhhZDllMjUwODYyMTAyNDY3KSwKKyAgICAgQygx
Yzg0MmEwN2FiYWIzMGNkKSwgQyhjZDgxMjQxNzZiYWMwMWFjKSwgQyhlYTZlYmU3YTc5YjY3ZWRj
KSwKKyAgICAgQyg3M2Y1OThhYzlkYjI2NzEzKSwgQyg0ZjRlNzJkNzQ2MGI4ZmMpLCBDKDM2NWRj
NGI5ZmRmMTNmMjEpLCBDKDNlZThmYjE3KX0sCisgICAge0MoM2QzMmEyNmUzYWI5ZDI1NCksIEMo
ZmM0MDcwNTc0ZGMzMGQzYSksIEMoZjAyNjI5NTc5YzJiMjdjOSksCisgICAgIEMoYjFjZjA5YjAx
ODRhNDgzNCksIEMoNWMwM2RiNDhlYjZjYzE1OSksIEMoZjE4YzdmY2YzNGQxZGY0NyksCisgICAg
IEMoZGZiMDQzNDE5ZWNmMWZhOSksIEMoYjFjZjA5YjAxODRhNDgzNCksIEMoNWMwM2RiNDhlYjZj
YzE1OSksCisgICAgIEMoZjE4YzdmY2YzNGQxZGY0NyksIEMoZGZiMDQzNDE5ZWNmMWZhOSksIEMo
ZGNkNzhkMTNmOWNhNjU4ZiksCisgICAgIEMoNDM1NWQ0MDhmZmU4ZTQ5ZiksIEMoODFlZWZlZTkw
OGI1OTNiNCksIEMoNTkwYzIxM2MyMGU5ODFhMyksCisgICAgIEMoYTc3YWNjMmEpfSwKKyAgICB7
Qyg5MzcxZDNjMzVmYTVlOWE1KSwgQyg0Mjk2N2NmNGQwMWYzMCksIEMoNjUyZDFlZWFlNzA0MTQ1
YyksCisgICAgIEMoY2VhZjFhMGQxNTIzNGYxNSksIEMoMTQ1MGE1NGU0NWJhOWI5KSwgQyg2NWU5
YzFmZDg4NWFhOTMyKSwKKyAgICAgQygzNTRkNGJjMDM0YmE4Y2JlKSwgQyhjZWFmMWEwZDE1MjM0
ZjE1KSwgQygxNDUwYTU0ZTQ1YmE5YjkpLAorICAgICBDKDY1ZTljMWZkODg1YWE5MzIpLCBDKDM1
NGQ0YmMwMzRiYThjYmUpLCBDKDhmZDRmZjQ4NGMwOGZiNGIpLAorICAgICBDKGJmNDY3NDk4NjZm
NjliYTApLCBDKGNmMWMyMWVkZTgyYzk0NzcpLCBDKDQyMTc1NDhjNDNkYTEwOSksIEMoZjQ1NTZk
ZWUpfSwKKyAgICB7QyhjYmFhM2NiOGY2NGY1NGUwKSwgQyg3NmMzYjQ4ZWU1YzA4NDE3KSwgQyg5
ZjdkMjRlODdlNjFjZTkpLAorICAgICBDKDg1YjhlNTNmMjJlMTk1MDcpLCBDKGJiNTcxMzc3Mzlj
YTQ4NmIpLCBDKGM3N2YxMzFjY2EzOGY3NjEpLAorICAgICBDKGM1NmFjM2NmMjc1YmUxMjEpLCBD
KDg1YjhlNTNmMjJlMTk1MDcpLCBDKGJiNTcxMzc3MzljYTQ4NmIpLAorICAgICBDKGM3N2YxMzFj
Y2EzOGY3NjEpLCBDKGM1NmFjM2NmMjc1YmUxMjEpLCBDKDllYzFhNmM5MTA5ZDI2ODUpLAorICAg
ICBDKDNkYWQwOTIyZTc2YWZkYjApLCBDKGZkNThjYmY5NTI5NTgxMDMpLCBDKDdiMDRjOTA4ZTc4
NjM5YTEpLAorICAgICBDKGRlMjg3YTY0KX0sCisgICAge0MoYjJlMjNlODExNmMyYmE5ZiksIEMo
N2U0ZDljMDA2MDEwMTE1MSksIEMoMzMxMGRhNWU1MDI4ZjM2NyksCisgICAgIEMoYWRjNTJkZGRi
NzZmNmU1ZSksIEMoNGFhZDRlOTI1YTk2MmI2OCksIEMoMjA0Yjc5YjdmNzE2OGU2NCksCisgICAg
IEMoZGYyOWVkNjY3MWMzNjk1MiksIEMoYWRjNTJkZGRiNzZmNmU1ZSksIEMoNGFhZDRlOTI1YTk2
MmI2OCksCisgICAgIEMoMjA0Yjc5YjdmNzE2OGU2NCksIEMoZGYyOWVkNjY3MWMzNjk1MiksIEMo
ZTAyOTI3Y2FjMzk2ZDIxMCksCisgICAgIEMoNWQ1MDBlNzE3NDJiNjM4YSksIEMoNWM5OTk4YWY3
ZjI3YjEyNCksIEMoM2ZiYTlhMjU3M2RjMmY3KSwgQyg4NzhlNTViOSl9LAorICAgIHtDKDhhYTc3
ZjUyZDc4NjhlYjkpLCBDKDRkNTViZDU4NzU4NGU2ZTIpLCBDKGQyZGIzNzA0MWY0OTVmNSksCisg
ICAgIEMoY2UwMzBkMTViNWZlMmY0KSwgQyg4NmI0YTdhMDc4MGMyNDMxKSwgQyhlZTA3MGE5YWU1
YjUxZGI3KSwKKyAgICAgQyhlZGMyOTNkOTU5NWJlNWQ4KSwgQyhjZTAzMGQxNWI1ZmUyZjQpLCBD
KDg2YjRhN2EwNzgwYzI0MzEpLAorICAgICBDKGVlMDcwYTlhZTViNTFkYjcpLCBDKGVkYzI5M2Q5
NTk1YmU1ZDgpLCBDKDNkZmM1ZWMxMDgyNjBhMmIpLAorICAgICBDKDhhZmUyOGM3MTIzYmY0ZTIp
LCBDKGRhODJlZjM4MDIzYTdhNWYpLCBDKDNlMWY3N2IwMTc0Yjc3YzMpLCBDKDc2NDg0ODYpfSwK
KyAgICB7Qyg4NThmZWE5MjJjN2ZlMGMzKSwgQyhjZmU4MzI2YmY3MzNiYzZmKSwgQyg0ZTVlMjAx
OGNmOGY3ZGZjKSwKKyAgICAgQyg2NGZkMWJjMDExZTViYWI3KSwgQyg1YzllODU4NzI4MDE1NTY4
KSwgQyg5N2FjNDJjMmIwMGIyOWIxKSwKKyAgICAgQyg3Zjg5Y2FmMDhjMTA5YWVlKSwgQyg2NGZk
MWJjMDExZTViYWI3KSwgQyg1YzllODU4NzI4MDE1NTY4KSwKKyAgICAgQyg5N2FjNDJjMmIwMGIy
OWIxKSwgQyg3Zjg5Y2FmMDhjMTA5YWVlKSwgQyg5YThhZjM0ZmQwZTlkYWNmKSwKKyAgICAgQyhi
YmM1NDE2MWFhMTUwN2UwKSwgQyg3Y2RhNzIzY2NiYmZlNWVlKSwgQygyYzI4OWQ4MzlmYjkzZjU4
KSwKKyAgICAgQyg1N2FjMGZiMSl9LAorICAgIHtDKDQ2ZWYyNWZkZWM4MzkyYjEpLCBDKGU0OGQ3
YjZkNDJhNWNkMzUpLCBDKDU2YTZmZTFjMTc1Mjk5Y2EpLAorICAgICBDKGZkZmE4MzZiNDFkY2Vm
NjIpLCBDKDJmOGRiODAzMGU4NDdlMWIpLCBDKDViYTBhNDlhYzRmOWIwZjgpLAorICAgICBDKGRh
ZTg5N2VkM2UzZmNlNDQpLCBDKGZkZmE4MzZiNDFkY2VmNjIpLCBDKDJmOGRiODAzMGU4NDdlMWIp
LAorICAgICBDKDViYTBhNDlhYzRmOWIwZjgpLCBDKGRhZTg5N2VkM2UzZmNlNDQpLCBDKDljNDMy
ZTMxYWVmNjI2ZTcpLAorICAgICBDKDlhMzZlMWM2Y2Q2ZTNkZCksIEMoNTA5NWExNjdjMzRkMTlk
KSwgQyhhNzAwMDVjZmE2YmFiYmVhKSwgQyhkMDE5NjdjYSl9LAorICAgIHtDKDhkMDc4ZjcyNmIy
ZGY0NjQpLCBDKGI1MGVlNzFjZGNhYmIyOTkpLCBDKGY0YWYzMDAxMDZmOWM3YmEpLAorICAgICBD
KDdkMjIyY2FhZTAyNTE1OGEpLCBDKGNjMDI4ZDVmZDQwMjQxYjkpLCBDKGRkNDI1MTViNjM5ZTZm
OTcpLAorICAgICBDKGUwOGU4NjUzMWE1OGY4N2YpLCBDKDdkMjIyY2FhZTAyNTE1OGEpLCBDKGNj
MDI4ZDVmZDQwMjQxYjkpLAorICAgICBDKGRkNDI1MTViNjM5ZTZmOTcpLCBDKGUwOGU4NjUzMWE1
OGY4N2YpLCBDKGQ5MzYxMmM4MzViMzdkN2IpLAorICAgICBDKDkxZGQ2MTcyOWIyZmE3ZjQpLCBD
KGJhNzY1YTFiZGRhMDlkYjcpLCBDKDU1MjU4YjQ1MWIyYjEyOTcpLAorICAgICBDKDk2ZWNkZjc0
KX0sCisgICAge0MoMzVlYTg2ZTY5NjBjYTk1MCksIEMoMzRmZTFmZTIzNGZjNWM3NiksIEMoYTAw
MjA3YTNkYzJhNzJiNyksCisgICAgIEMoODAzOTVlNDg3MzllMWE2NyksIEMoNzRhNjdkOGY3ZjQz
YzNkNyksIEMoZGQyYmRkMWQ2MjI0NmM2ZSksCisgICAgIEMoYTFmNDQyOThiYTgwYWNmNiksIEMo
ODAzOTVlNDg3MzllMWE2NyksIEMoNzRhNjdkOGY3ZjQzYzNkNyksCisgICAgIEMoZGQyYmRkMWQ2
MjI0NmM2ZSksIEMoYTFmNDQyOThiYTgwYWNmNiksIEMoYWQ4NmQ4NmMxODdiZjM4KSwKKyAgICAg
QygyNmZlZWExZjJlZWUyNDBkKSwgQyhlZDdmMWZkMDY2YjIzODk3KSwgQyhhNzY4Y2YxZTBmYmI1
MDIpLCBDKDc3OWY1NTA2KX0sCisgICAge0MoOGFlZTllZGJjMTVkZDAxMSksIEMoNTFmNTgzOWRj
ODQ2MjY5NSksIEMoYjIyMTNlMTdjMzdkY2EyZCksCisgICAgIEMoMTMzYjI5OWE5Mzk3NDVjNSks
IEMoNzk2ZTJhYWMwNTNmNTJiMyksIEMoZThkOWZlMTUyMWE0YTIyMiksCisgICAgIEMoODE5YTg4
NjNlNWQxYzI5MCksIEMoMTMzYjI5OWE5Mzk3NDVjNSksIEMoNzk2ZTJhYWMwNTNmNTJiMyksCisg
ICAgIEMoZThkOWZlMTUyMWE0YTIyMiksIEMoODE5YTg4NjNlNWQxYzI5MCksIEMoYzA3MzdmMGZl
MzRkMzZhZCksCisgICAgIEMoZTZkNmQ0YTI2N2E1Y2MzMSksIEMoOTgzMDBhNzkxMTY3NGMyMyks
IEMoYmVmMTg5NjYxYzI1NzA5OCksCisgICAgIEMoM2M5NGMyZGUpfSwKKyAgICB7QyhjM2UxNDJi
YTk4NDMyZGRhKSwgQyg5MTFkMDYwY2FiMTI2MTg4KSwgQyhiNzUzZmJmYTgzNjViODQ0KSwKKyAg
ICAgQyhmZDFhOWJhNWU3MWIwOGEyKSwgQyg3YWMwZGMyZWQ3Nzc4NTMzKSwgQyhiNTQzMTYxZmYx
NzcxODhhKSwKKyAgICAgQyg0OTJmYzA4YTYxODZmM2Y0KSwgQyhmZDFhOWJhNWU3MWIwOGEyKSwg
Qyg3YWMwZGMyZWQ3Nzc4NTMzKSwKKyAgICAgQyhiNTQzMTYxZmYxNzcxODhhKSwgQyg0OTJmYzA4
YTYxODZmM2Y0KSwgQyhmYzQ3NDVmNTE2YWZkM2I2KSwKKyAgICAgQyg4OGMzMDM3MGE1MzA4MGUp
LCBDKDY1YTFiYjM0YWJjNDY1ZTIpLCBDKGFiYmQxNDY2MjkxMWM4YjMpLCBDKDM5Zjk4ZmFmKX0s
CisgICAge0MoMTIzYmE2Yjk5YzhjZDhkYiksIEMoNDQ4ZTU4MjY3MmVlMDdjNCksIEMoY2ViZTM3
OTI5MmRiOWU2NSksCisgICAgIEMoOTM4ZjViYmFiNTQ0ZDNkNiksIEMoZDJhOTVmOWYyZDM3NmQ3
MyksIEMoNjhiMmYxNjE0OWU4MWFhMyksCisgICAgIEMoYWQ3ZTMyZjgyZDg2Yzc5ZCksIEMoOTM4
ZjViYmFiNTQ0ZDNkNiksIEMoZDJhOTVmOWYyZDM3NmQ3MyksCisgICAgIEMoNjhiMmYxNjE0OWU4
MWFhMyksIEMoYWQ3ZTMyZjgyZDg2Yzc5ZCksIEMoNDU3NDAxNWFlODYyNmNlMiksCisgICAgIEMo
NDU1YWE2MTM3Mzg2YTU4MiksIEMoNjU4YWQyNTQyZThlYzIwKSwgQyhlMzFkN2JlMmNhMzVkMDAp
LCBDKDdhZjMxMTk5KX0sCisgICAge0MoYmE4N2FjZWY3OWQxNGY1MyksIEMoYjNlMGZjYWU2M2Ex
MTU1OCksIEMoZDVhYzMxM2E1OTNhOWY0NSksCisgICAgIEMoZWVhNWY1YTlmNzRhZjU5MSksIEMo
NTc4NzEwYmNjMzZmYmVhMiksIEMoN2E4MzkzNDMyMTg4OTMxZCksCisgICAgIEMoNzA1Y2ZjNWVj
N2NjMTcyKSwgQyhlZWE1ZjVhOWY3NGFmNTkxKSwgQyg1Nzg3MTBiY2MzNmZiZWEyKSwKKyAgICAg
Qyg3YTgzOTM0MzIxODg5MzFkKSwgQyg3MDVjZmM1ZWM3Y2MxNzIpLCBDKGRhODVlYmU1ZmM0Mjc5
NzYpLAorICAgICBDKGJmYTVjN2E0NTRkZjU0YzgpLCBDKDQ2MzJiNzJhODFiZjY2ZDIpLCBDKDVk
ZDcyODc3ZGI1MzllZTIpLAorICAgICBDKGUzNDFhOWQ2KX0sCisgICAge0MoYmNkMzk1N2Q1NzE3
ZGMzKSwgQygyZGE3NDY3NDFiMDNhMDA3KSwgQyg4NzM4MTZmNGIxZWNlNDcyKSwKKyAgICAgQygy
YjgyNmYxYTJjMDhjMjg5KSwgQyhkYTUwZjU2ODYzYjU1ZTc0KSwgQyhiMTg3MTJmNmIzZWVkODNi
KSwKKyAgICAgQyhiZGM3Y2MwNWFiNGM2ODVmKSwgQygyYjgyNmYxYTJjMDhjMjg5KSwgQyhkYTUw
ZjU2ODYzYjU1ZTc0KSwKKyAgICAgQyhiMTg3MTJmNmIzZWVkODNiKSwgQyhiZGM3Y2MwNWFiNGM2
ODVmKSwgQyg5ZTQ1ZmI4MzNkMWIwYWYpLAorICAgICBDKGQ3MjEzMDgxZGIyOWQ4MmUpLCBDKGQy
YTZiNmM2YTA5ZWQ1NWUpLCBDKDk4YTc2ODZjYmEzMjNjYTkpLAorICAgICBDKGNhMjRhZWViKX0s
CisgICAge0MoNjE0NDJmZjU1NjA5MTY4ZSksIEMoNjQ0N2M1ZmM3NmU4YzljZiksIEMoNmE4NDZk
ZTgzYWUxNTcyOCksCisgICAgIEMoZWZmYzI2NjNjZmZjNzc3ZiksIEMoOTMyMTRmOGY0NjNhZmJl
ZCksIEMoYTE1NmVmMDYwNjZmNGU0ZSksCisgICAgIEMoYTQwN2I2ZWQ4NzY5ZDUxZSksIEMoZWZm
YzI2NjNjZmZjNzc3ZiksIEMoOTMyMTRmOGY0NjNhZmJlZCksCisgICAgIEMoYTE1NmVmMDYwNjZm
NGU0ZSksIEMoYTQwN2I2ZWQ4NzY5ZDUxZSksIEMoYmIyZjllZDI5NzQ1YzAyYSksCisgICAgIEMo
OTgxZWVjZDQzNWIzNmFkOSksIEMoNDYxYTVhMDVmYjljZGZmNCksIEMoYmQ2Y2IyYTg3YjlmOTEw
YyksCisgICAgIEMoYjIyNTJiNTcpfSwKKyAgICB7QyhkYmU0YjFiMmQxNzQ3NTdmKSwgQyg1MDY1
MTJkYTE4NzEyNjU2KSwgQyg2ODU3ZjNlMGI4ZGQ5NWYpLAorICAgICBDKDVhNGZjMjcyOGE5YmI2
NzEpLCBDKGViYjk3MTUyMmVjMzg3NTkpLCBDKDFhNWEwOTNlNmNmMWY3MmIpLAorICAgICBDKDcy
OWIwNTdmZTc4NGY1MDQpLCBDKDVhNGZjMjcyOGE5YmI2NzEpLCBDKGViYjk3MTUyMmVjMzg3NTkp
LAorICAgICBDKDFhNWEwOTNlNmNmMWY3MmIpLCBDKDcyOWIwNTdmZTc4NGY1MDQpLCBDKDcxZmNi
ZjQyYTc2N2Y5Y2YpLAorICAgICBDKDExNGNmZTc3MmRhNmNkZCksIEMoNjBjZGY5Y2I2MjlkOWQ3
YSksIEMoZTI3MGQxMGFkMDg4YjI0ZSksIEMoNzJjODFkYTEpfSwKKyAgICB7Qyg1MzFlOGU3N2Iz
NjMxNjFjKSwgQyhlZWNlMGI0M2UyZGFlMDMwKSwgQyg4Mjk0YjgyYzc4ZjM0ZWQxKSwKKyAgICAg
QyhlNzc3YjFmZDU4MDU4MmYyKSwgQyg3Yjg4MGY1OGRhMTEyNjk5KSwgQyg1NjJjNmIxODlhNjMz
M2Y0KSwKKyAgICAgQygxMzlkNjRmODhhNjExZDQpLCBDKGU3NzdiMWZkNTgwNTgyZjIpLCBDKDdi
ODgwZjU4ZGExMTI2OTkpLAorICAgICBDKDU2MmM2YjE4OWE2MzMzZjQpLCBDKDEzOWQ2NGY4OGE2
MTFkNCksIEMoNTNkOGVmMTdlZGE2NGZhNCksCisgICAgIEMoYmYzZWRlZDE0ZGM2MGEwNCksIEMo
MmI1YzU1OWNmNWVjMDdjNSksIEMoODg5NWY3MzM5ZDAzYTQ4YSksCisgICAgIEMoNmI5ZmNlOTUp
fSwKKyAgICB7QyhmNzFlOWM5MjZkNzExZTJiKSwgQyhkNzdhZjI4NTNhNGNlYWExKSwgQyg5YWEw
ZDZkNzZhMzZmYWU3KSwKKyAgICAgQyhkZDE2Y2QwZmJjMDgzOTMpLCBDKDI5YTQxNGE1ZDhjNTg5
NjIpLCBDKDcyNzkzZDhkMTAyMmI1YjIpLAorICAgICBDKDJlOGU2OWNmN2NiZmZkZjApLCBDKGRk
MTZjZDBmYmMwODM5MyksIEMoMjlhNDE0YTVkOGM1ODk2MiksCisgICAgIEMoNzI3OTNkOGQxMDIy
YjViMiksIEMoMmU4ZTY5Y2Y3Y2JmZmRmMCksIEMoMzcyMWMwNDczYWE5OWM5YSksCisgICAgIEMo
MWNmZjRlZDljMzFjZDkxYyksIEMoNDk5MDczNTAzM2NjNDgyYiksIEMoN2ZkZjhjNzAxYzcyZjU3
NyksCisgICAgIEMoMTkzOTk4NTcpfSwKKyAgICB7QyhjYjIwYWMyOGY1MmRmMzY4KSwgQyhlNjcw
NWVlNzg4MDk5NmRlKSwgQyg5YjY2NWNjM2VjNjk3MmYyKSwKKyAgICAgQyg0MjYwZThjMjU0ZTk5
MjRiKSwgQyhmMTk3YTZlYjQ1OTE1NzJkKSwgQyg4ZTg2N2ZmMGZiN2FiMjdjKSwKKyAgICAgQyhm
OTU1MDJmYjUwM2VmYWYzKSwgQyg0MjYwZThjMjU0ZTk5MjRiKSwgQyhmMTk3YTZlYjQ1OTE1NzJk
KSwKKyAgICAgQyg4ZTg2N2ZmMGZiN2FiMjdjKSwgQyhmOTU1MDJmYjUwM2VmYWYzKSwgQygzMGM0
MTg3NmIwOGUzZTIyKSwKKyAgICAgQyg5NThlMjQxOWUzY2QyMmY0KSwgQyhmMGYzYWExZmUxMTlh
MTA3KSwgQyg0ODE2NjIzMTBhMzc5MTAwKSwKKyAgICAgQygzYzU3YTk5NCl9LAorICAgIHtDKGU0
YTc5NGI0YWNiOTRiNTUpLCBDKDg5Nzk1MzU4MDU3YjY2MWIpLCBDKDljNGNkY2VjMTc2ZDdhNzAp
LAorICAgICBDKDQ4OTBhODNlZTQzNWJjOGIpLCBDKGQ4YzFjMDBmY2ViMDA5MTQpLCBDKDllNzEx
MWJhMjM0ZjkwMGYpLAorICAgICBDKGViOGRiYWIzNjRkOGI2MDQpLCBDKDQ4OTBhODNlZTQzNWJj
OGIpLCBDKGQ4YzFjMDBmY2ViMDA5MTQpLAorICAgICBDKDllNzExMWJhMjM0ZjkwMGYpLCBDKGVi
OGRiYWIzNjRkOGI2MDQpLCBDKGIzMjYxNDUyOTYzZWViYiksCisgICAgIEMoNmNmOTRiMDI3OTJj
NGY5NSksIEMoZDg4ZmE4MTVlZjFlOGZjKSwgQygyZDY4N2FmNjY2MDRjNzMpLCBDKGMwNTNlNzI5
KX0sCisgICAge0MoY2I5NDJlOTE0NDNlNzIwOCksIEMoZTMzNWRlODEyNTU2N2MyYSksIEMoZDRk
NzRkMjY4Yjg2ZGYxZiksCisgICAgIEMoOGJhMGZkZDJmZmM4YjIzOSksIEMoZjQxM2IzNjZjMWZm
ZTAyZiksIEMoYzA1YjI3MTdjNTlhOGEyOCksCisgICAgIEMoOTgxMTg4ZWFiNGZjYzhmYiksIEMo
OGJhMGZkZDJmZmM4YjIzOSksIEMoZjQxM2IzNjZjMWZmZTAyZiksCisgICAgIEMoYzA1YjI3MTdj
NTlhOGEyOCksIEMoOTgxMTg4ZWFiNGZjYzhmYiksIEMoZTU2M2Y0OWExZDkwNzJiYSksCisgICAg
IEMoM2M2YTNhYTRhMjYzNjdkYyksIEMoYmEwZGIxMzQ0ODY1M2YzNCksIEMoMzEwNjVkNzU2MDc0
ZDdkNiksCisgICAgIEMoNTFjYmJiYTcpfSwKKyAgICB7QyhlY2NhNzU2M2MyMDNmN2JhKSwgQygx
NzdhZTI0MjNlZjM0YmIyKSwgQyhmNjBiNzI0MzQwMGM1NzMxKSwKKyAgICAgQyhjZjFlZGJmZTcz
MzBlOTRlKSwgQyg4ODE5NDU5MDZiY2IzY2M2KSwgQyg0YWNmMDI5MzI0NDg1NWRhKSwKKyAgICAg
Qyg2NWFlMDQyYzFjMmEyOGMyKSwgQyhjZjFlZGJmZTczMzBlOTRlKSwgQyg4ODE5NDU5MDZiY2Iz
Y2M2KSwKKyAgICAgQyg0YWNmMDI5MzI0NDg1NWRhKSwgQyg2NWFlMDQyYzFjMmEyOGMyKSwgQyhi
MjVmYTBhMWNhYjMzNTU5KSwKKyAgICAgQyhkOThlOGRhYTI4MTI0MTMxKSwgQyhmY2UxN2Y1MGI5
YzM1MWIzKSwgQygzZjk5NWNjZjczODY4NjRiKSwKKyAgICAgQygxYWNkZTc5YSl9LAorICAgIHtD
KDE2NTJjYjk0MDE3N2M4YjUpLCBDKDhjNGZlN2Q4NWQyYTZkNmQpLCBDKGY2MjE2YWQwOTdlNTRl
NzIpLAorICAgICBDKGY2NTIxYjkxMmIzNjhhZTYpLCBDKGE5ZmU0ZWZmODFkMDNlNzMpLCBDKGQ2
ZjYyMzYyOWY4MGQxYTMpLAorICAgICBDKDJiOTYwNGYzMmNiN2RjMzQpLCBDKGY2NTIxYjkxMmIz
NjhhZTYpLCBDKGE5ZmU0ZWZmODFkMDNlNzMpLAorICAgICBDKGQ2ZjYyMzYyOWY4MGQxYTMpLCBD
KDJiOTYwNGYzMmNiN2RjMzQpLCBDKDJhNDNkODRkY2Y1OWM3ZTIpLAorICAgICBDKGQwYTE5N2M3
MGM1ZGFlMGIpLCBDKDZlODRkNGJiYzcxZDc2YTApLCBDKGM3ZTk0NjIwMzc4YzZjYjIpLAorICAg
ICBDKDJkMTYwZDEzKX0sCisgICAge0MoMzFmZWQwZmMwNGMxM2NlOCksIEMoM2Q1ZDAzZGJmN2Zm
MjQwYSksIEMoNzI3YzVjOWI1MTU4MTIwMyksCisgICAgIEMoNmI1ZmZjMWY1NGZlY2IyOSksIEMo
YThlOGU3YWQ1YjlhMjFkOSksIEMoYzRkNWEzMmNkNmFhYzIyZCksCisgICAgIEMoZDdlMjc0YWQy
MmQ0YTc5YSksIEMoNmI1ZmZjMWY1NGZlY2IyOSksIEMoYThlOGU3YWQ1YjlhMjFkOSksCisgICAg
IEMoYzRkNWEzMmNkNmFhYzIyZCksIEMoZDdlMjc0YWQyMmQ0YTc5YSksIEMoMzY4ODQxZWE1NzMx
YTExMiksCisgICAgIEMoZmVhZjdiYzJlNzNjYTQ4ZiksIEMoNjM2ZmIyNzJlOWVhMWY2KSwgQyg1
ZDljYjc1ODBjM2Y2MjA3KSwgQyg3ODdmNTgwMSl9LAorICAgIHtDKGU3YjY2ODk0NzU5MGI5YjMp
LCBDKGJhYTQxYWQzMjkzOGQzZmEpLCBDKGFiY2JjOGQ0Y2E0YjM5ZTQpLAorICAgICBDKDM4MWVl
MWI3ZWE1MzRmNGUpLCBDKGRhMzc1OTgyOGUzZGU0MjkpLCBDKDNlMDE1ZDc2NzI5Zjk5NTUpLAor
ICAgICBDKGNiYmVjNTFhNjQ4NWZiZGUpLCBDKDM4MWVlMWI3ZWE1MzRmNGUpLCBDKGRhMzc1OTgy
OGUzZGU0MjkpLAorICAgICBDKDNlMDE1ZDc2NzI5Zjk5NTUpLCBDKGNiYmVjNTFhNjQ4NWZiZGUp
LCBDKDliODY2MDUyODFmMjA3MjcpLAorICAgICBDKGZjNmZjZjUwODY3Njk4MmEpLCBDKDNiMTM1
ZjdhODEzYTEwNDApLCBDKGQzYTQ3MDZiZWExZGI5YzkpLAorICAgICBDKGM5NjI5ODI4KX0sCisg
ICAge0MoMWRlMjExOTkyM2U4ZWYzYyksIEMoNmFiMjdjMDk2Y2YyZmUxNCksIEMoOGMzNjU4ZWRj
YTk1ODg5MSksCisgICAgIEMoNGNjOGVkM2FkYTVmMGYyKSwgQyg0YTQ5NmI3N2MxZjFjMDRlKSwg
Qyg5MDg1YjBhODYyMDg0MjAxKSwKKyAgICAgQyhhMTg5NGJkZTllM2RlZTIxKSwgQyg0Y2M4ZWQz
YWRhNWYwZjIpLCBDKDRhNDk2Yjc3YzFmMWMwNGUpLAorICAgICBDKDkwODViMGE4NjIwODQyMDEp
LCBDKGExODk0YmRlOWUzZGVlMjEpLCBDKDM2N2ZiNDcyZGM1YjI3N2QpLAorICAgICBDKDdkMzlj
Y2NhMTZmYzY3NDUpLCBDKDc2M2Y5ODhkNzBkYjkxMDYpLCBDKGE4YjY2ZjdmZWNiNzBmMDIpLAor
ICAgICBDKGJlMTM5MjMxKX0sCisgICAge0MoMTI2OWRmMWU2OWUxNGZhNyksIEMoOTkyZjlkNThh
YzUwNDFiNyksIEMoZTk3ZmNmNjk1YTdjYmJiNCksCisgICAgIEMoZTVkMDU0OTgwMmQxNTAwOCks
IEMoNDI0YzEzNGVjZDBkYjgzNCksIEMoNmZjNDRmZDkxYmUxNWM2YyksCisgICAgIEMoYTFhNWVm
OTVkNTBlNTM3ZCksIEMoZTVkMDU0OTgwMmQxNTAwOCksIEMoNDI0YzEzNGVjZDBkYjgzNCksCisg
ICAgIEMoNmZjNDRmZDkxYmUxNWM2YyksIEMoYTFhNWVmOTVkNTBlNTM3ZCksIEMoZDFlM2RhZjVk
MDVmNTMwOCksCisgICAgIEMoNGM3ZjgxNjAwZWFhMTMyNyksIEMoMTA5ZDFiOGQxZjlkMGQyYiks
IEMoODcxZTg2OTllMGFlYjg2MiksCisgICAgIEMoN2RmNjk5ZWYpfSwKKyAgICB7Qyg4MjA4MjZk
N2FiYTU2N2ZmKSwgQygxZjczZDI4ZTAzNmE1MmYzKSwgQyg0MWM0YzVhNzNmM2IwODkzKSwKKyAg
ICAgQyhhYTBkNzRkNGE5OGRiODliKSwgQygzNmZkNDg2ZDA3YzU2ZTFkKSwgQyhkMGFkMjNjYmI2
NjYwZDhhKSwKKyAgICAgQygxMjY0YTg0NjY1YjM1ZTE5KSwgQyhhYTBkNzRkNGE5OGRiODliKSwg
QygzNmZkNDg2ZDA3YzU2ZTFkKSwKKyAgICAgQyhkMGFkMjNjYmI2NjYwZDhhKSwgQygxMjY0YTg0
NjY1YjM1ZTE5KSwgQyg3ODk2ODJiZjdkNzgxYjMzKSwKKyAgICAgQyg2YmZhNmFiZDJmYjU3MjJk
KSwgQyg2Nzc5Y2IzNjIzZDMzOTAwKSwgQyg0MzVjYTUyMTRlMWVlNWYwKSwKKyAgICAgQyg4Y2U2
Yjk2ZCl9LAorICAgIHtDKGZmZTA1NDdlNDkyM2NlZjkpLCBDKDM1MzRlZDQ5YjlkYTViMDIpLCBD
KDU0OGEyNzM3MDBmYmEwM2QpLAorICAgICBDKDI4YWM4NGNhNzA5NThmN2UpLCBDKGQ4YWU1NzVh
NjhmYWE3MzEpLCBDKDJhYWFlZTliOWRjZmZkNGMpLAorICAgICBDKDZjN2ZhYWI1YzI4NWM2ZGEp
LCBDKDI4YWM4NGNhNzA5NThmN2UpLCBDKGQ4YWU1NzVhNjhmYWE3MzEpLAorICAgICBDKDJhYWFl
ZTliOWRjZmZkNGMpLCBDKDZjN2ZhYWI1YzI4NWM2ZGEpLCBDKDQ1ZDk0MjM1Zjk5YmE3OGYpLAor
ICAgICBDKGFiNWVhMTZmMzk0OTdmNWIpLCBDKGZiNGQ2Yzg2ZmNjYmRjYTMpLCBDKDgxMDRlNjMx
MGE1ZmQyYzcpLAorICAgICBDKDZmOWVkOTljKX0sCisgICAge0MoNzJkYThkMWIxMWQ4YmM4Yiks
IEMoYmE5NGI1NmI5MWI2ODFjNiksIEMoNGU4Y2M1MWJkOWIwZmM4YyksCisgICAgIEMoNDM1MDVl
ZDEzM2JlNjcyYSksIEMoZThmMmY5ZDk3M2MyNzc0ZSksIEMoNjc3YjliOWM3Y2FkNmQ5NyksCisg
ICAgIEMoNGUxZjVkNTZlZjE3YjkwNiksIEMoNDM1MDVlZDEzM2JlNjcyYSksIEMoZThmMmY5ZDk3
M2MyNzc0ZSksCisgICAgIEMoNjc3YjliOWM3Y2FkNmQ5NyksIEMoNGUxZjVkNTZlZjE3YjkwNiks
IEMoZWVhM2E2MDM4Zjk4Mzc2NyksCisgICAgIEMoODcxMDlmMDc3Zjg2ZGIwMSksIEMoZWNjMWNh
NDFmNzRkNjFjYyksIEMoMzRhODdlODZlODNiZWQxNyksCisgICAgIEMoZTAyNDQ3OTYpfSwKKyAg
ICB7QyhkNjJhYjRlM2Y4OGZjNzk3KSwgQyhlYTg2YzdhZWI2MjgzYWU0KSwgQyhiNWI5M2UwOWE3
ZmU0NjUpLAorICAgICBDKDQzNDRhMWEwMTM0YWZlMiksIEMoZmY1YzE3ZjAyYjYyMzQxZCksIEMo
MzIxNGM2YTU4N2NlNDY0NCksCisgICAgIEMoYTkwNWU3ZWQwNjI5ZDA1YyksIEMoNDM0NGExYTAx
MzRhZmUyKSwgQyhmZjVjMTdmMDJiNjIzNDFkKSwKKyAgICAgQygzMjE0YzZhNTg3Y2U0NjQ0KSwg
QyhhOTA1ZTdlZDA2MjlkMDVjKSwgQyhiNWM3MjY5MGNkNzE2ZTgyKSwKKyAgICAgQyg3YzYwOTc2
NDllNmViZTdiKSwgQyg3Y2VlZThjNmU1NmE0ZGNkKSwgQyg4MGNhODQ5ZGM1M2ViOWU0KSwKKyAg
ICAgQyg0Y2NmN2U3NSl9LAorICAgIHtDKGQwZjA2YzI4YzdiMzY4MjMpLCBDKDEwMDhjYjA4NzRk
ZTRiYjgpLCBDKGQ2YzdmZjgxNmM3YTczN2IpLAorICAgICBDKDQ4OWI2OTdmZTMwYWE2NWYpLCBD
KDRkYTBmYjYyMWZkYzc4MTcpLCBDKGRjNDM1ODNiODJjNTgxMDcpLAorICAgICBDKDRiMDI2MWRl
YmRlYzNjZDYpLCBDKDQ4OWI2OTdmZTMwYWE2NWYpLCBDKDRkYTBmYjYyMWZkYzc4MTcpLAorICAg
ICBDKGRjNDM1ODNiODJjNTgxMDcpLCBDKDRiMDI2MWRlYmRlYzNjZDYpLCBDKGE5NzQ4ZDdiNmMw
ZTAxNmMpLAorICAgICBDKDdlODgyOGY3YmE0YjAzNGIpLCBDKGRhMGZhNTQzNDhhMjUxMmEpLCBD
KGViZjk3NDVjMDk2MmY5YWQpLAorICAgICBDKDkxNWNlZjg2KX0sCisgICAge0MoOTliNzA0MjQ2
MGQ3MmVjNiksIEMoMmE1M2U1ZTJiOGU3OTVjMiksIEMoNTNhNzgxMzJkOWUxYjNlMyksCisgICAg
IEMoYzA0M2U2N2U2ZmM2NDExOCksIEMoZmYwYWJmZTkyNmQ4NDRkMyksIEMoZjJhOWZlNWRiMmU5
MTBmZSksCisgICAgIEMoY2UzNTJjZGM4NGE5NjRkZCksIEMoYzA0M2U2N2U2ZmM2NDExOCksIEMo
ZmYwYWJmZTkyNmQ4NDRkMyksCisgICAgIEMoZjJhOWZlNWRiMmU5MTBmZSksIEMoY2UzNTJjZGM4
NGE5NjRkZCksIEMoYjg5YmMwMjhhYTVlNjA2MyksCisgICAgIEMoYTM1NGU3ZmRhYzA0NDU5Yyks
IEMoNjhkNjU0N2U2ZTk4MDE4OSksIEMoYzk2OGRkZGZkNTczNzczZSksCisgICAgIEMoNWNiNTk0
ODIpfSwKKyAgICB7Qyg0ZjRkZmNmYzBlYzJiYWU1KSwgQyg4NDEyMzMxNDgyNjhhMWI4KSwgQyg5
MjQ4YTc2YWI4YmUwZDMpLAorICAgICBDKDMzNGM1YTI1YjU5MDNhOGMpLCBDKDRjOTRmZWY0NDMx
MjIxMjgpLCBDKDc0M2U3ZDg0NTQ2NTVjNDApLAorICAgICBDKDFhYjFlNmQxNDUyYWUyY2QpLCBD
KDMzNGM1YTI1YjU5MDNhOGMpLCBDKDRjOTRmZWY0NDMxMjIxMjgpLAorICAgICBDKDc0M2U3ZDg0
NTQ2NTVjNDApLCBDKDFhYjFlNmQxNDUyYWUyY2QpLCBDKGZlYzc2NmRlNGE4ZTQ3NmMpLAorICAg
ICBDKGNjMDkyOWRhOTU2N2U3MWIpLCBDKDVmOWVmNWI1ZjE1MGMzNWEpLCBDKDg3NjU5Y2FiZDY0
OTc2OGYpLAorICAgICBDKDZjYTNmNTMyKX0sCisgICAge0MoZmU4NmJmOWQ0NDIyYjlhZSksIEMo
ZWJjZTg5YzkwNjQxZWY5YyksIEMoMWM4NGUyMjkyYzBiNTY1OSksCisgICAgIEMoOGJkZTYyNWEx
MGE4YzUwZCksIEMoZWI4MjcxZGVkMWY3OWEwYiksIEMoMTRkYzY4NDRmMGRlN2EzYyksCisgICAg
IEMoZjg1YjJmOTU0MWU3ZTZkYSksIEMoOGJkZTYyNWExMGE4YzUwZCksIEMoZWI4MjcxZGVkMWY3
OWEwYiksCisgICAgIEMoMTRkYzY4NDRmMGRlN2EzYyksIEMoZjg1YjJmOTU0MWU3ZTZkYSksIEMo
MmZlMjJjZmQxNjgzYjk2MSksCisgICAgIEMoZWExZDc1YzViN2FhMDFjYSksIEMoOWVlZjYwYTQ0
ODc2YmI5NSksIEMoOTUwYzgxOGU1MDVjNmY3ZiksCisgICAgIEMoZTI0ZjM4NTkpfSwKKyAgICB7
QyhhOTBkODEwNjA5MzJkYmIwKSwgQyg4YWNmYWE4OGM1ZmJlOTJiKSwgQyg3YzZmMzQ0N2U5MGY3
ZjNmKSwKKyAgICAgQyhkZDUyZmMxNGM4ZGQzMTQzKSwgQygxYmM3NTA4NTE2ZTQwNjI4KSwgQygz
MDU5NzMwMjY2YWRlNjI2KSwKKyAgICAgQyhmZmE1MjY4MjJmMzkxYzIpLCBDKGRkNTJmYzE0Yzhk
ZDMxNDMpLCBDKDFiYzc1MDg1MTZlNDA2MjgpLAorICAgICBDKDMwNTk3MzAyNjZhZGU2MjYpLCBD
KGZmYTUyNjgyMmYzOTFjMiksIEMoZTI1MjMyZDdhZmM4YTQwNiksCisgICAgIEMoZDJiOGE1YTNm
M2I1ZjY3MCksIEMoNjYzMGYzM2VkYjdkZmUzMiksIEMoYzcxMjUwYmE2OGM0ZWE4NiksCisgICAg
IEMoYWRmNWE5YzcpfSwKKyAgICB7QygxNzkzOGExYjBlN2Y1OTUyKSwgQygyMmNhZGQyZjU2Zjhh
NGJlKSwgQyg4NGIwZDExODNkNWVkN2MxKSwKKyAgICAgQyhjMTMzNmI5MmZlZjkxYmY2KSwgQyg4
MDMzMmEzOTQ1ZjMzZmE5KSwgQyhhMGY2OGI4NmY3MjZmZjkyKSwKKyAgICAgQyhhM2RiNTI4MmNm
NWY0YzBiKSwgQyhjMTMzNmI5MmZlZjkxYmY2KSwgQyg4MDMzMmEzOTQ1ZjMzZmE5KSwKKyAgICAg
QyhhMGY2OGI4NmY3MjZmZjkyKSwgQyhhM2RiNTI4MmNmNWY0YzBiKSwgQyg4MjY0MGI2ZmM0OTE2
NjA3KSwKKyAgICAgQygyZGMyYTNhYTFhODk0MTc1KSwgQyg4YjRjODUyYmRlZTdjYzkpLCBDKDEw
YjlkMGEwOGI1NWZmODMpLCBDKDMyMjY0Yjc1KX0sCisgICAge0MoZGU5ZTBjYjBlMTZmNmU2ZCks
IEMoMjM4ZTYyODNhYTRmNjU5NCksIEMoNGZiOWM5MTRjMmYwYTEzYiksCisgICAgIEMoNDk3Y2I5
MTJiNjcwZjNiKSwgQyhkOTYzYTNmMDJmZjRhNWI2KSwgQyg0ZmNjZWZhZTExYjUwMzkxKSwKKyAg
ICAgQyg0MmJhNDdkYjNmNzY3MmYpLCBDKDQ5N2NiOTEyYjY3MGYzYiksIEMoZDk2M2EzZjAyZmY0
YTViNiksCisgICAgIEMoNGZjY2VmYWUxMWI1MDM5MSksIEMoNDJiYTQ3ZGIzZjc2NzJmKSwgQygx
ZDZiNjU1YTE4ODlmZWVmKSwKKyAgICAgQyg1ZjMxOWFiZjhmYWZhMTlmKSwgQyg3MTVjMmU0OWRl
YjE0NjIwKSwgQyg4ZDkxNTMwODJlY2RjZWE0KSwKKyAgICAgQyhhNjRiMzM3Nil9LAorICAgIHtD
KDZkNGI4NzZkOWIxNDZkMWEpLCBDKGFhYjJkNjRjZThmMjY3MzkpLCBDKGQzMTVmOTM2MDBlODNm
ZTUpLAorICAgICBDKDJmZTlmYWJkYmU3ZmRkNCksIEMoNzU1ZGIyNDlhMmQ4MWE2OSksIEMoZjI3
OTI5ZjM2MDQ0NmQ3MSksCisgICAgIEMoNzlhMWJmOTU3YzBjMWI5MiksIEMoMmZlOWZhYmRiZTdm
ZGQ0KSwgQyg3NTVkYjI0OWEyZDgxYTY5KSwKKyAgICAgQyhmMjc5MjlmMzYwNDQ2ZDcxKSwgQyg3
OWExYmY5NTdjMGMxYjkyKSwgQygzYzhhMjhkNGM5MzZjOWNkKSwKKyAgICAgQyhkZjBkM2QxM2Iy
YzZhOTAyKSwgQyhjNzY3MDJkZDk3Y2QyZWRkKSwgQygxYWEyMjBmN2JlMTY1MTcpLCBDKGQzMzg5
MGUpfSwKKyAgICB7QyhlNjk4ZmEzZjU0ZTZlYTIyKSwgQyhiZDI4ZTIwZTc0NTUzNThjKSwgQyg5
YWNlMTYxZjZlYTc2ZTY2KSwKKyAgICAgQyhkNTNmYjdlM2M5M2E5ZTQpLCBDKDczN2FlNzFiMDUx
YmYxMDgpLCBDKDdhYzcxZmViODRjMmRmNDIpLAorICAgICBDKDNkODA3NWNkMjkzYTE1YjQpLCBD
KGQ1M2ZiN2UzYzkzYTllNCksIEMoNzM3YWU3MWIwNTFiZjEwOCksCisgICAgIEMoN2FjNzFmZWI4
NGMyZGY0MiksIEMoM2Q4MDc1Y2QyOTNhMTViNCksIEMoYmY4Y2VlNWUwOTVkOGE3YyksCisgICAg
IEMoZTcwODZiM2M3NjA4MTQzYSksIEMoZTU1YjBjMmZhOTM4ZDcwYyksIEMoZmZmYjVmNThlNjQz
NjQ5YyksCisgICAgIEMoOTI2ZDRiNjMpfSwKKyAgICB7Qyg3YmMwZGVlZDRmYjM0OWY3KSwgQygx
NzcxYWZmMjVkYzcyMmZhKSwgQygxOWZmMDY0NGQ5NjgxOTE3KSwKKyAgICAgQyhjZjdkN2YyNWJk
NzBjZDJjKSwgQyg5NDY0ZWQ5YmFlYjQxYjRmKSwgQyhiOTA2NGY1YzNjYjExYjcxKSwKKyAgICAg
QygyMzdlMzkyMjliMDEyYjIwKSwgQyhjZjdkN2YyNWJkNzBjZDJjKSwgQyg5NDY0ZWQ5YmFlYjQx
YjRmKSwKKyAgICAgQyhiOTA2NGY1YzNjYjExYjcxKSwgQygyMzdlMzkyMjliMDEyYjIwKSwgQyhk
ZDU0ZDNmNWQ5ODJkZmZlKSwKKyAgICAgQyg3ZmM3NTYyZGJmYzgxZGJmKSwgQyg1YjBkZDE5MjRm
NzA5NDUpLCBDKGYxNzYwNTM3ZDgyNjExMzUpLCBDKGQ1MWJhNTM5KX0sCisgICAge0MoZGI0YjE1
ZTg4NTMzZjYyMiksIEMoMjU2ZDZkMjQxOWI0MWNlOSksIEMoOWQ3YzUzNzgzOTY3NjVkNSksCisg
ICAgIEMoOTA0MGU1YjkzNmI4NjYxYiksIEMoMjc2ZTA4ZmE1M2FjMjdmZCksIEMoOGM5NDRkMzlj
MmJkZDJjYyksCisgICAgIEMoZTI1MTRjOTgwMmE1NzQzYyksIEMoOTA0MGU1YjkzNmI4NjYxYiks
IEMoMjc2ZTA4ZmE1M2FjMjdmZCksCisgICAgIEMoOGM5NDRkMzljMmJkZDJjYyksIEMoZTI1MTRj
OTgwMmE1NzQzYyksIEMoZTgyMTA3YjExYWM5MDM4NiksCisgICAgIEMoN2Q2YTIyYmMzNTA1NWU2
KSwgQyhmZDZlYTlkMWM0MzhkOGFlKSwgQyhiZTYwMTUxNDllOTgxNTUzKSwgQyg3ZjM3NjM2ZCl9
LAorICAgIHtDKDkyMjgzNDczNWU4NmVjYjIpLCBDKDM2MzM4MjY4NWI4ODMyOGUpLCBDKGU5Yzky
OTYwZDcxNDQ2MzApLAorICAgICBDKDg0MzFiMWJmZDBhMjM3OWMpLCBDKDkwMzgzOTEzYWVhMjgz
ZjkpLCBDKGE2MTYzODMxZWI0OTI0ZDIpLAorICAgICBDKDVmMzkyMWI0ZjkwODRhZWUpLCBDKDg0
MzFiMWJmZDBhMjM3OWMpLCBDKDkwMzgzOTEzYWVhMjgzZjkpLAorICAgICBDKGE2MTYzODMxZWI0
OTI0ZDIpLCBDKDVmMzkyMWI0ZjkwODRhZWUpLCBDKDdhNzAwNjFhMTQ3M2U1NzkpLAorICAgICBD
KDViMTlkODBkY2QyYzYzMzEpLCBDKDYxOTZiOTc5MzFmYWFkMjcpLCBDKDg2OWJmNjgyOGUyMzdj
M2YpLAorICAgICBDKGI5ODAyNmMwKX0sCisgICAge0MoMzBmMWQ3MmM4MTJmMWViOCksIEMoYjU2
N2NkNGE2OWNkODk4OSksIEMoODIwYjZjOTkyYTUxZjBiYyksCisgICAgIEMoYzU0Njc3YTgwMzY3
MTI1ZSksIEMoMzIwNGZiZGJhNDYyZTYwNiksIEMoODU2MzI3OGFmYzllYWU2OSksCisgICAgIEMo
MjYyMTQ3ZGQ0YmY3ZTU2NiksIEMoYzU0Njc3YTgwMzY3MTI1ZSksIEMoMzIwNGZiZGJhNDYyZTYw
NiksCisgICAgIEMoODU2MzI3OGFmYzllYWU2OSksIEMoMjYyMTQ3ZGQ0YmY3ZTU2NiksIEMoMjE3
OGI2M2U3ZWUyZDIzMCksCisgICAgIEMoZTljNjFhZDgxZjViZmYyNiksIEMoOWFmN2E4MWIzYzUw
MWVjYSksIEMoNDQxMDRhMzg1OWYwMjM4ZiksCisgICAgIEMoYjg3Nzc2N2UpfSwKKyAgICB7Qygx
Njg4ODQyNjdmMzgxN2U5KSwgQyg1YjM3NmUwNTBmNjM3NjQ1KSwgQygxYzE4MzE0YWJkMzQ0OTdh
KSwKKyAgICAgQyg5NTk4ZjZhYjA2ODNmY2MyKSwgQygxYzgwNWFiZjdiODBlMWVlKSwgQyhkZWM5
YWM0MmVlMGQwZjMyKSwKKyAgICAgQyg4Y2Q3MmUzOTEyZDI0NjYzKSwgQyg5NTk4ZjZhYjA2ODNm
Y2MyKSwgQygxYzgwNWFiZjdiODBlMWVlKSwKKyAgICAgQyhkZWM5YWM0MmVlMGQwZjMyKSwgQyg4
Y2Q3MmUzOTEyZDI0NjYzKSwgQygxZjAyNWQ0MDVmMWMxZDg3KSwKKyAgICAgQyhiZjdiNjIyMWUx
NjY4ZjhmKSwgQyg1MjMxNmY2NGU2OTJkYmIwKSwgQyg3YmY0M2RmNjFlYzUxYjM5KSwgQyhhZWZh
ZTc3KX0sCisgICAge0MoODJlNzg1OTZlZTNlNTZhNyksIEMoMjU2OTdkOWM4N2YzMGQ5OCksIEMo
NzYwMGE4MzQyODM0OTI0ZCksCisgICAgIEMoNmJhMzcyZjRiN2FiMjY4YiksIEMoOGMzMjM3Y2Yx
ZmUyNDNkZiksIEMoMzgzM2ZjNTEwMTI5MDNkZiksCisgICAgIEMoOGUzMTMxMDEwOGM1NjgzZiks
IEMoNmJhMzcyZjRiN2FiMjY4YiksIEMoOGMzMjM3Y2YxZmUyNDNkZiksCisgICAgIEMoMzgzM2Zj
NTEwMTI5MDNkZiksIEMoOGUzMTMxMDEwOGM1NjgzZiksIEMoMTI2NTkzNzE1YzJkZTQyOSksCisg
ICAgIEMoNDhjYThmMzVhM2Y1NGI5MCksIEMoYjkzMjJiNjMyZjRmOGIwKSwgQyg5MjZiYjE2OWI3
MzM3NjkzKSwgQyhmNjg2OTExKX0sCisgICAge0MoYWEyZDZjZjIyZTNjYzI1MiksIEMoOWI0ZGVj
NGY1ZTE3OWYxNiksIEMoNzZmYjBmYmExZDk5YTk5YSksCisgICAgIEMoOWE2MmFmM2RiYmExNDBk
YSksIEMoMjc4NTdlYTA0NGU5ZGZjMSksIEMoMzNhYmNlOWRhMjI3MjY0NyksCisgICAgIEMoYjIy
YTc5OTNhYWYzMjU1NiksIEMoOWE2MmFmM2RiYmExNDBkYSksIEMoMjc4NTdlYTA0NGU5ZGZjMSks
CisgICAgIEMoMzNhYmNlOWRhMjI3MjY0NyksIEMoYjIyYTc5OTNhYWYzMjU1NiksIEMoYmY4Zjg4
ZjgwMTliZWRmMCksCisgICAgIEMoZWQyZDdmMDFmYjI3MzkwNSksIEMoNmI0NWYxNTkwMWI0ODFj
ZCksIEMoZjg4ZWJiNDEzYmE2YThkNSksCisgICAgIEMoM2RlYWRmMTIpfSwKKyAgICB7Qyg3YmY1
ZmZkN2Y2OTM4NWM3KSwgQyhmYzA3N2IxZDhiYzgyODc5KSwgQyg5YzA0ZTM2ZjllZDgzYTI0KSwK
KyAgICAgQyg4MjA2NWM2MmU2NTgyMTg4KSwgQyg4ZWY3ODdmZDM1NmY1ZTQzKSwgQygyOTIyZTUz
ZTM2ZTE3ZGZhKSwKKyAgICAgQyg5ODA1ZjIyM2QzODUwMTBiKSwgQyg4MjA2NWM2MmU2NTgyMTg4
KSwgQyg4ZWY3ODdmZDM1NmY1ZTQzKSwKKyAgICAgQygyOTIyZTUzZTM2ZTE3ZGZhKSwgQyg5ODA1
ZjIyM2QzODUwMTBiKSwgQyg2OTIxNTRmMzQ5MWI3ODdkKSwKKyAgICAgQyhlN2U2NDcwMGU0MTRm
YmYpLCBDKDc1N2Q0ZDRhYjY1MDY5YTApLCBDKGNkMDI5NDQ2YThlMzQ4ZTIpLCBDKGNjZjAyYTRl
KX0sCisgICAge0MoZTg5YzhmZjlmOWM2ZTM0YiksIEMoZjU0YzBmNjY5YTQ5ZjZjNCksIEMoZmMz
ZTQ2ZjVkODQ2YWRlZiksCisgICAgIEMoMjJmMmFhM2RmMjIyMWNjKSwgQyhmNjZmZWE5MGY1ZDYy
MTc0KSwgQyhiNzVkZWZhZWFhMWRkMmE3KSwKKyAgICAgQyg5Yjk5NGNkOWE3MjE0ZmQ1KSwgQygy
MmYyYWEzZGYyMjIxY2MpLCBDKGY2NmZlYTkwZjVkNjIxNzQpLAorICAgICBDKGI3NWRlZmFlYWEx
ZGQyYTcpLCBDKDliOTk0Y2Q5YTcyMTRmZDUpLCBDKGZhYzY3NWEzMTgwNGI3NzMpLAorICAgICBD
KDk4YmNiM2I4MjBjNTBmYzYpLCBDKGUxNGFmNjRkMjhjZjA4ODUpLCBDKDI3NDY2ZmJkMmIzNjBl
YjUpLAorICAgICBDKDE3NmMxNzIyKX0sCisgICAge0MoYTE4ZmJjZGNjZDExZTFmNCksIEMoODI0
ODIxNjc1MWRmZDY1ZSksIEMoNDBjMDg5ZjIwOGQ4OWQ3YyksCisgICAgIEMoMjI5Yjc5YWI2OWFl
OTdkKSwgQyhhODdhYWJjMmVjMjZlNTgyKSwgQyhiZTJiMDUzNzIxZWIyNmQyKSwKKyAgICAgQygx
MGZlYmQ3ZjBjM2Q2ZmNiKSwgQygyMjliNzlhYjY5YWU5N2QpLCBDKGE4N2FhYmMyZWMyNmU1ODIp
LAorICAgICBDKGJlMmIwNTM3MjFlYjI2ZDIpLCBDKDEwZmViZDdmMGMzZDZmY2IpLCBDKDljYzVi
OWIyZjZlM2JmN2IpLAorICAgICBDKDY1NWQ4NDk1ZmU2MjRhODYpLCBDKDYzODFhOWYzZDFmMmJk
N2UpLCBDKDc5ZWJhYmJmYzI1YzgzZTIpLCBDKDI2ZjgyYWQpfSwKKyAgICB7QygyZDU0ZjQwY2M0
MDg4YjE3KSwgQyg1OWQxNTYzM2IwY2QxMzk5KSwgQyhhOGNjMDRiYjFiZmZkMTViKSwKKyAgICAg
QyhkMzMyY2RiMDczZDhkYzQ2KSwgQygyNzJjNTY0NjY4NjhjYjQ2KSwgQyg3ZTdmY2JlMzVjYTZj
M2YzKSwKKyAgICAgQyhlZThmNTFlNWE3MDM5OWQ0KSwgQyhkMzMyY2RiMDczZDhkYzQ2KSwgQygy
NzJjNTY0NjY4NjhjYjQ2KSwKKyAgICAgQyg3ZTdmY2JlMzVjYTZjM2YzKSwgQyhlZThmNTFlNWE3
MDM5OWQ0KSwgQygxNjczN2E5Yzc1ODFmZTdiKSwKKyAgICAgQyhlZDA0YmY1MmY0Yjc1ZGNiKSwg
Qyg5NzA3ZmZiMzZiZDMwYzFhKSwgQygxMzkwZjIzNmZkYzBkZTNlKSwKKyAgICAgQyhiNTI0NGY0
Mil9LAorICAgIHtDKDY5Mjc2OTQ2Y2I0ZTg3YzcpLCBDKDYyYmRiZTYxODNiZTZmYTkpLCBDKDNi
YTk3NzNkYWM0NDJhMWEpLAorICAgICBDKDcwMmUyYWZjN2Y1YTE4MjUpLCBDKDhjNDliMTFlYTgx
NTFmZGMpLCBDKGNhZjNmZWY2MWY1YTg2ZmEpLAorICAgICBDKGVmMGIyZWU4NjQ5ZDcyNzIpLCBD
KDcwMmUyYWZjN2Y1YTE4MjUpLCBDKDhjNDliMTFlYTgxNTFmZGMpLAorICAgICBDKGNhZjNmZWY2
MWY1YTg2ZmEpLCBDKGVmMGIyZWU4NjQ5ZDcyNzIpLCBDKDllMzRhNGUwOGQ5NDQxZTEpLAorICAg
ICBDKDdiZGMwY2Q2NGQ1YWY1MzMpLCBDKGE5MjZiMTRkOTllM2Q4NjgpLCBDKGZjYTkyM2ExNzc4
OGNjZTQpLAorICAgICBDKDQ5YTY4OWU1KX0sCisgICAge0MoNjY4MTc0YTNmNDQzZGYxZCksIEMo
NDA3Mjk5MzkyZGExY2U4NiksIEMoYzJhM2Y3ZDdmMmM1YmUyOCksCisgICAgIEMoYTU5MGIyMDJh
N2E1ODA3YiksIEMoOTY4ZDI1OTNmN2NjYjU0ZSksIEMoOWRkOGQ2NjllM2U5NWRlYyksCisgICAg
IEMoZWUwY2M1ZGQ1OGI2ZTkzYSksIEMoYTU5MGIyMDJhN2E1ODA3YiksIEMoOTY4ZDI1OTNmN2Nj
YjU0ZSksCisgICAgIEMoOWRkOGQ2NjllM2U5NWRlYyksIEMoZWUwY2M1ZGQ1OGI2ZTkzYSksIEMo
YWM2NWQ1YTk0NjZmYjQ4MyksCisgICAgIEMoMjIxYmU1MzhiMmM5ZDgwNiksIEMoNWNiZTk0NDE3
ODRmOWZkOSksIEMoZDRjN2Q1ZDZlM2MxMjJiOCksIEMoNTlmY2RkMyl9LAorICAgIHtDKDVlMjli
ZTg0N2JkNTA0NiksIEMoYjU2MWM3ZjE5YzhmODBjMyksIEMoNWU1YWJkNTAyMWNjYWVhZiksCisg
ICAgIEMoNzQzMmQ2Mzg4OGUwYzMwNiksIEMoNzRiYmNlZWVkNDc5Y2I3MSksIEMoNjQ3MTU4NjU5
OTU3NWZkZiksCisgICAgIEMoNmE4NTlhZDIzMzY1Y2JhMiksIEMoNzQzMmQ2Mzg4OGUwYzMwNiks
IEMoNzRiYmNlZWVkNDc5Y2I3MSksCisgICAgIEMoNjQ3MTU4NjU5OTU3NWZkZiksIEMoNmE4NTlh
ZDIzMzY1Y2JhMiksIEMoZjljZWVjODRhY2QxOGRjYyksCisgICAgIEMoNzRhMjQyZmYxOTA3NDM3
YyksIEMoZjcwODkwMTk0ZTFlZTkxMyksIEMoNzc3ZGZjYjRiYjAxZjBiYSksCisgICAgIEMoNGY0
YjA0ZTkpfSwKKyAgICB7QyhjZDBkNzlmMjE2NGRhMDE0KSwgQyg0YzM4NmJiNWM1ZDZjYTBjKSwg
Qyg4ZTc3MWIwMzY0N2MzYjYzKSwKKyAgICAgQyg2OWRiMjM4NzVjYjBiNzE1KSwgQyhhZGE4ZGQ5
MTUwNGFlMzdmKSwgQyg0NmJmMThkYmYwNDVlZDZhKSwKKyAgICAgQyhlMWI1ZjY3YjA2NDVhYjYz
KSwgQyg2OWRiMjM4NzVjYjBiNzE1KSwgQyhhZGE4ZGQ5MTUwNGFlMzdmKSwKKyAgICAgQyg0NmJm
MThkYmYwNDVlZDZhKSwgQyhlMWI1ZjY3YjA2NDVhYjYzKSwgQyg4NzdiZThmNWRjZGRmZjQpLAor
ICAgICBDKDZkNDcxYjVmOWNhMmUyZDEpLCBDKDgwMmM4NmQ2ZjQ5NWI5YmIpLCBDKGExZjliOWIy
MmIzYmU3MDQpLAorICAgICBDKDhiMDBmODkxKX0sCisgICAge0MoZTBlNmZjMGIxNjI4YWYxZCks
IEMoMjliZTVmYjRjMjdhMjk0OSksIEMoMWMzZjc4MWE2MDRkMzYzMCksCisgICAgIEMoYzRhZjdm
YWY4ODMwMzNhYSksIEMoOWJkMjk2YzRlOTQ1M2NhYyksIEMoY2E0NTQyNmMxZjdlMzNmOSksCisg
ICAgIEMoYTZiYmRjZjcwNzRkNDBjNSksIEMoYzRhZjdmYWY4ODMwMzNhYSksIEMoOWJkMjk2YzRl
OTQ1M2NhYyksCisgICAgIEMoY2E0NTQyNmMxZjdlMzNmOSksIEMoYTZiYmRjZjcwNzRkNDBjNSks
IEMoZTEzYTAwNWQ3MTQyNzMzYiksCisgICAgIEMoYzAyYjc5MjVjNWVlZWZhZiksIEMoZDM5MTE5
YTYwNDQxZTJkNSksIEMoM2MyNGM3MTBkZjhmNGQ0MyksCisgICAgIEMoMTZlMTE0ZjMpfSwKKyAg
ICB7QygyMDU4OTI3NjY0YWRmZDkzKSwgQyg2ZThmOTY4Yzc5NjNiYWE1KSwgQyhhZjNkY2VkNmZm
ZjdjMzk0KSwKKyAgICAgQyg0MmUzNGNmM2Q1M2M3ODc2KSwgQyg5Y2RkYmIyNjQyNGRjNWUpLCBD
KDY0ZjYzNDBhNmQ4ZWRkYWQpLAorICAgICBDKDIxOTZlNDg4ZWIyYTNhNGIpLCBDKDQyZTM0Y2Yz
ZDUzYzc4NzYpLCBDKDljZGRiYjI2NDI0ZGM1ZSksCisgICAgIEMoNjRmNjM0MGE2ZDhlZGRhZCks
IEMoMjE5NmU0ODhlYjJhM2E0YiksIEMoYzllOWRhMjU5MTFhMTZmZCksCisgICAgIEMoZTIxYjQ2
ODNmM2UxOTZhOCksIEMoY2I4MGJmMWE0YzZmZGJiNCksIEMoNTM3OTJlOWIzYzNlNjdmOCksCisg
ICAgIEMoZDZiNmRhZGMpfSwKKyAgICB7QyhkYzEwNzI4NWZkOGUxYWY3KSwgQyhhODY0MWEwNjA5
MzIxZjNmKSwgQyhkYjA2ZTg5ZmZkYzU0NDY2KSwKKyAgICAgQyhiY2M3YTgxZWQ1NDMyNDI5KSwg
QyhiNmQ3YmRjNmFkMmU4MWYxKSwgQyg5MzYwNWVjNDcxYWEzN2RiKSwKKyAgICAgQyhhMmE3M2Y4
YTg1YThlMzk3KSwgQyhiY2M3YTgxZWQ1NDMyNDI5KSwgQyhiNmQ3YmRjNmFkMmU4MWYxKSwKKyAg
ICAgQyg5MzYwNWVjNDcxYWEzN2RiKSwgQyhhMmE3M2Y4YTg1YThlMzk3KSwgQygxMGEwMTJiOGNh
N2FjMjRiKSwKKyAgICAgQyhhYWM1ZmQ2MzM1MTU5NWNmKSwgQyg1YmI0YzY0OGEyMjZkZWEwKSwg
Qyg5ZDExZWNiMmI1YzA1YzVmKSwKKyAgICAgQyg4OTdlMjBhYyl9LAorICAgIHtDKGZiYmExYWZl
MmUzMjgwZjEpLCBDKDc1NWE1ZjM5MmYwN2ZjZSksIEMoOWU0NGE5YTE1NDAyODA5YSksCisgICAg
IEMoNjIyNmEzMmUyNTA5OTg0OCksIEMoZWE4OTU2NjFlY2Y1MzAwNCksIEMoNGQ3ZTAxNThkYjIy
MjhiOSksCisgICAgIEMoZTVhN2Q4MjkyMmY2OTg0MiksIEMoNjIyNmEzMmUyNTA5OTg0OCksIEMo
ZWE4OTU2NjFlY2Y1MzAwNCksCisgICAgIEMoNGQ3ZTAxNThkYjIyMjhiOSksIEMoZTVhN2Q4Mjky
MmY2OTg0MiksIEMoMmNlYTc3MTNiNjk4NDBjYSksCisgICAgIEMoMThkZTdiOWFlOTM4Mzc1Yiks
IEMoZjEyN2NjYTA4ZjNjYzY2NSksIEMoYjFjMjJkNzI3NjY1YWQyKSwgQyhmOTk2ZTA1ZCl9LAor
ICAgIHtDKGJmYTEwNzg1ZGRjMTAxMWIpLCBDKGI2ZTFjNGQyZjY3MGY3ZGUpLCBDKDUxN2Q5NTYw
NGU0ZmNjMWYpLAorICAgICBDKGNhNjU1MmEwZGZiODJjNzMpLCBDKGIwMjRjZGYwOWUzNGJhMDcp
LCBDKDY2Y2Q4YzVhOTVkNzM5M2IpLAorICAgICBDKGUzOTM5YWNmNzkwZDRhNzQpLCBDKGNhNjU1
MmEwZGZiODJjNzMpLCBDKGIwMjRjZGYwOWUzNGJhMDcpLAorICAgICBDKDY2Y2Q4YzVhOTVkNzM5
M2IpLCBDKGUzOTM5YWNmNzkwZDRhNzQpLCBDKDk3ODI3NTQxYTFlZjA1MWUpLAorICAgICBDKGFj
MmZjZTQ3ZWJlNjUwMGMpLCBDKGIzZjA2ZDNiZGRmM2JkNmEpLCBDKDFkNzRhZmIyNWUxY2U1ZmUp
LAorICAgICBDKGM0MzA2YWY2KX0sCisgICAge0MoNTM0Y2MzNWYwZWUxZWI0ZSksIEMoYjcwMzgy
MGYxZjNiM2RjZSksIEMoODg0YWExNjRjZjIyMzYzKSwKKyAgICAgQyhmMTRlZjdmNDdkOGE1N2Ez
KSwgQyg4MGQxZjg2ZjJlMDYxZDdjKSwgQyg0MDFkNmMyZjE1MWI1YTYyKSwKKyAgICAgQyhlOTg4
NDYwMjI0MTA4OTQ0KSwgQyhmMTRlZjdmNDdkOGE1N2EzKSwgQyg4MGQxZjg2ZjJlMDYxZDdjKSwK
KyAgICAgQyg0MDFkNmMyZjE1MWI1YTYyKSwgQyhlOTg4NDYwMjI0MTA4OTQ0KSwgQyg3ODA0ZDQx
MzVmNjhjZDE5KSwKKyAgICAgQyg1NDg3YjRiMzllNjlmZThlKSwgQyg4Y2M1OTk5MDE1MzU4YTI3
KSwgQyg4ZjM3MjliNjFjMmQ1NjAxKSwKKyAgICAgQyg2ZGNhZDQzMyl9LAorICAgIHtDKDdjYTZl
MzkzMzk5NWRhYyksIEMoZmQxMThjNzdkYWE4MTg4KSwgQygzYWNlYjdiNWU3ZGE2NTQ1KSwKKyAg
ICAgQyhjODM4OTc5OTQ0NTQ4MGRiKSwgQyg1Mzg5ZjVkZjhhYWNkNTBkKSwgQyhkMTM2NTgxZjIy
ZmFiNWYpLAorICAgICBDKGMyZjMxZjg1OTkxZGE0MTcpLCBDKGM4Mzg5Nzk5NDQ1NDgwZGIpLCBD
KDUzODlmNWRmOGFhY2Q1MGQpLAorICAgICBDKGQxMzY1ODFmMjJmYWI1ZiksIEMoYzJmMzFmODU5
OTFkYTQxNyksIEMoYWVmYmY5ZmY4NDAzNWE0MyksCisgICAgIEMoOGFjY2JhZjQ0YWRhZGQ3Yyks
IEMoZTU3ZjM2NTczNDRiNjdmNSksIEMoMjE0OTBlNWU4YWJkZWM1MSksCisgICAgIEMoM2MwNzM3
NGQpfSwKKyAgICB7QyhmMGQ2MDQ0ZjZlZmQ3NTk4KSwgQyhlMDQ0ZDZiYTQzNjk4NTZlKSwgQyg5
MTk2OGU0ZjhjOGExYTRjKSwKKyAgICAgQyg3MGJkMTk2ODk5NmJmZmMyKSwgQyg0YzYxM2RlNWQ4
YWIzMmFjKSwgQyhmZTFmNGY5NzIwNmY3OWQ4KSwKKyAgICAgQyhhYzA0MzRmMmM0ZTIxM2E5KSwg
Qyg3MGJkMTk2ODk5NmJmZmMyKSwgQyg0YzYxM2RlNWQ4YWIzMmFjKSwKKyAgICAgQyhmZTFmNGY5
NzIwNmY3OWQ4KSwgQyhhYzA0MzRmMmM0ZTIxM2E5KSwgQyg3NDkwZTlkODJjZmUyMmNhKSwKKyAg
ICAgQyg1ZmJiZjdmOTg3NDU0MjM4KSwgQyhjMzllMGRjODM2OGNlOTQ5KSwgQygyMjIwMWQzODk0
Njc2YzcxKSwKKyAgICAgQyhmMGY0NjAyYyl9LAorICAgIHtDKDNkNjllNTIwNDk4NzlkNjEpLCBD
KDc2NjEwNjM2ZWE5Zjc0ZmUpLCBDKGU5YmY1NjAyZjg5MzEwYzApLAorICAgICBDKDhlZWIxNzdh
ODYwNTNjMTEpLCBDKGUzOTAxMjJjMzQ1ZjM0YTIpLCBDKDFlMzBlNDdhZmJhYWY4ZDYpLAorICAg
ICBDKDdiODkyZjY4ZTVmOTE3MzIpLCBDKDhlZWIxNzdhODYwNTNjMTEpLCBDKGUzOTAxMjJjMzQ1
ZjM0YTIpLAorICAgICBDKDFlMzBlNDdhZmJhYWY4ZDYpLCBDKDdiODkyZjY4ZTVmOTE3MzIpLCBD
KGI4NzkyMjUyNWZhNDQxNTgpLAorICAgICBDKGY0NDBhMWVlMWExYTc2NmIpLCBDKGVlOGVmYWQy
NzlkMDhjNWMpLCBDKDQyMWY5MTBjNWI2MDIxNmUpLAorICAgICBDKDNlMWVhMDcxKX0sCisgICAg
e0MoNzlkYTI0MmExNmFjYWUzMSksIEMoMTgzYzVmNDM4ZTI5ZDQwKSwgQyg2ZDM1MTcxMGFlOTJm
M2RlKSwKKyAgICAgQygyNzIzM2IyOGI1YjExZTliKSwgQyhjN2RmZTg5ODhhOTQyNzAwKSwgQyg1
NzBlZDExYzRhYmFkOTg0KSwKKyAgICAgQyg0YjRjMDQ2MzJmNDgzMTFhKSwgQygyNzIzM2IyOGI1
YjExZTliKSwgQyhjN2RmZTg5ODhhOTQyNzAwKSwKKyAgICAgQyg1NzBlZDExYzRhYmFkOTg0KSwg
Qyg0YjRjMDQ2MzJmNDgzMTFhKSwgQygxMmYzMzIzNTQ0MmNiZjkpLAorICAgICBDKGEzNTMxNWNh
MGI1YjhjZGIpLCBDKGQ4YWJkZTYyZWFkNTUwNmIpLCBDKGZjMGZjZjg0NzhhZDUyNjYpLAorICAg
ICBDKDY3NTgwZjBjKX0sCisgICAge0MoNDYxYzgyNjU2YTc0ZmI1NyksIEMoZDg0YjQ5MWIyNzVh
YTBmNyksIEMoOGYyNjJjYjI5YTZlYjhiMiksCisgICAgIEMoNDlmYTMwNzBiYzdiMDZkMCksIEMo
ZjEyZWQ0NDZiZDBjMDUzOSksIEMoNmQ0M2FjNWQxZGQ0YjI0MCksCisgICAgIEMoNzYwOTUyNGZl
OTBiZWM5MyksIEMoNDlmYTMwNzBiYzdiMDZkMCksIEMoZjEyZWQ0NDZiZDBjMDUzOSksCisgICAg
IEMoNmQ0M2FjNWQxZGQ0YjI0MCksIEMoNzYwOTUyNGZlOTBiZWM5MyksIEMoMzkxYzJiMmUwNzZl
YzI0MSksCisgICAgIEMoZjVlNjJkZWRhNzgzOWY3YiksIEMoM2M3YjMxODZhMTBkODcwZiksIEMo
NzdlZjRmMmNiYTRmMTAwNSksCisgICAgIEMoNGUxMDk0NTQpfSwKKyAgICB7Qyg1M2MxYTY2ZDBi
MTMwMDMpLCBDKDczMWYwNjBlNmZlNzk3ZmMpLCBDKGRhYTU2ODExNzkxMzcxZTMpLAorICAgICBD
KDU3NDY2MDQ2Y2Y2ODk2ZWQpLCBDKDhhYzM3ZTBlOGIyNWIwYzYpLCBDKDNlNjA3NGI1MmFkM2Nm
MTgpLAorICAgICBDKGFhNDkxY2U3YjQ1ZGIyOTcpLCBDKDU3NDY2MDQ2Y2Y2ODk2ZWQpLCBDKDhh
YzM3ZTBlOGIyNWIwYzYpLAorICAgICBDKDNlNjA3NGI1MmFkM2NmMTgpLCBDKGFhNDkxY2U3YjQ1
ZGIyOTcpLCBDKGY3YTkyMjdjNWU1ZTIyYzMpLAorICAgICBDKDNkOTJlMDg0MWUyOWNlMjgpLCBD
KDJkMzBkYTViMjg1OWU1OWQpLCBDKGZmMzdmYTFjOWNiZmFmYzIpLAorICAgICBDKDg4YTQ3NGE3
KX0sCisgICAge0MoZDNhMmVmZWMwZjA0N2U5KSwgQygxY2FiY2U1ODg1M2U1OGVhKSwgQyg3YTE3
YjJlYWUzMjU2YmU0KSwKKyAgICAgQyhjMmRjYzk3NThjOTEwMTcxKSwgQyhjYjVjZGRhZWZmNGRk
YjQwKSwgQyg1ZDdjYzU4NjliYWVmZWYxKSwKKyAgICAgQyg5NjQ0YzU4NTNhZjljZmViKSwgQyhj
MmRjYzk3NThjOTEwMTcxKSwgQyhjYjVjZGRhZWZmNGRkYjQwKSwKKyAgICAgQyg1ZDdjYzU4Njli
YWVmZWYxKSwgQyg5NjQ0YzU4NTNhZjljZmViKSwgQygyNTVjOTY4MTg0Njk0ZWUxKSwKKyAgICAg
Qyg0ZTRkNzI2ZWRhMzYwOTI3KSwgQyg3ZDI3ZGQ1YjZkMTAwMzc3KSwgQyg5YTMwMGUyMDIwZGRl
YTJjKSwgQyg1YjViZWRkKX0sCisgICAge0MoNDNjNjRkNzQ4NGY3ZjliMiksIEMoNWRhMDAyYjY0
YWFmYWViNyksIEMoYjU3NmMxZTQ1ODAwYTcxNiksCisgICAgIEMoM2VlODRkM2Q1YjRjYTAwYiks
IEMoNWNiYzZkNzAxODk0YzNmOSksIEMoZDllOTQ2ZjVhZTFjYTk1KSwKKyAgICAgQygyNGNhMDZl
NjdmMGIxODMzKSwgQygzZWU4NGQzZDViNGNhMDBiKSwgQyg1Y2JjNmQ3MDE4OTRjM2Y5KSwKKyAg
ICAgQyhkOWU5NDZmNWFlMWNhOTUpLCBDKDI0Y2EwNmU2N2YwYjE4MzMpLCBDKDM0MTNkNDZiNDE1
MjY1MGUpLAorICAgICBDKGNiZGZkYmMyYWI1MTZmOWMpLCBDKDJhYWQ4YWNiNzM5ZTBjNmMpLCBD
KDJiZmM5NTBkOWY5ZmE5NzcpLAorICAgICBDKDFhYWRkZmE3KX0sCisgICAge0MoYTdkZWM2YWQ4
MWNmN2ZhMSksIEMoMTgwYzFhYjcwODY4MzA2MyksIEMoOTVlMGZkNzAwOGQ2N2NmZiksCisgICAg
IEMoNmIxMWM1MDczNjg3MjA4KSwgQyg3ZTBhNTdkZTBkNDUzZjMpLCBDKGU0OGMyNjdkNGY2NDY4
NjcpLAorICAgICBDKDIxNjhlOTEzNjM3NWY5Y2IpLCBDKDZiMTFjNTA3MzY4NzIwOCksIEMoN2Uw
YTU3ZGUwZDQ1M2YzKSwKKyAgICAgQyhlNDhjMjY3ZDRmNjQ2ODY3KSwgQygyMTY4ZTkxMzYzNzVm
OWNiKSwgQyg2NGRhMTk0YWVlZWE3ZmRmKSwKKyAgICAgQyhhM2I5ZjAxZmE1ODg1Njc4KSwgQyhj
MzE2ZjhlZTJlYjJiZDE3KSwgQyhhN2U0ZDgwZjgzZTQ0MjdmKSwKKyAgICAgQyg1YmUwN2ZkOCl9
LAorICAgIHtDKDU0MDhhMWRmOTlkNGFmZiksIEMoYjk1NjVlNTg4NzQwZjZiZCksIEMoYWJmMjQx
ODEzYjA4MDA2ZSksCisgICAgIEMoN2RhOWU4MWQ4OWZkYTdhZCksIEMoMjc0MTU3Y2FiZTcxNDQw
ZCksIEMoMmMyMmQ5YTQ4MGIzMzFmNyksCisgICAgIEMoZTgzNWM4YWM3NDY0NzJkNSksIEMoN2Rh
OWU4MWQ4OWZkYTdhZCksIEMoMjc0MTU3Y2FiZTcxNDQwZCksCisgICAgIEMoMmMyMmQ5YTQ4MGIz
MzFmNyksIEMoZTgzNWM4YWM3NDY0NzJkNSksIEMoMjAzOGNlODE3YTIwMWFlNCksCisgICAgIEMo
NDZmMzI4OWRmZTFjNWU0MCksIEMoNDM1NTc4YTQyZDRiN2M1NiksIEMoZjk2ZDlmNDA5ZmNmNTYx
KSwgQyhjYmNhODYwNil9LAorICAgIHtDKGE4YjI3YTZiY2FlZWVkNGIpLCBDKGFlYzFlZWRlZDZh
ODdlMzkpLCBDKDlkYWYyNDZkNmZlZDgzMjYpLAorICAgICBDKGQ0NWE5MzhiNzlmNTRlOGYpLCBD
KDM2NmIyMTlkNmQxMzNlNDgpLCBDKDViMTRiZTNjMjVjNDk0MDUpLAorICAgICBDKGZkZDc5MWQ0
ODgxMWE1NzIpLCBDKGQ0NWE5MzhiNzlmNTRlOGYpLCBDKDM2NmIyMTlkNmQxMzNlNDgpLAorICAg
ICBDKDViMTRiZTNjMjVjNDk0MDUpLCBDKGZkZDc5MWQ0ODgxMWE1NzIpLCBDKDNkZTY3YjhkOWU5
NWQzMzUpLAorICAgICBDKDkwM2MwMTMwN2NmYmVlZDUpLCBDKGFmN2Q2NWYzMjI3NGYxZDEpLCBD
KDRkYmExNDFiNWZjMDNjNDIpLAorICAgICBDKGJkZTY0ZDAxKX0sCisgICAge0MoOWE5NTJhODI0
NmZkYzI2OSksIEMoZDBkY2ZjYWM3NGVmMjc4YyksIEMoMjUwZjcxMzk4MzZmMGYxZiksCisgICAg
IEMoYzgzZDNjNWY0ZTVmMDMyMCksIEMoNjk0ZTdhZGViMmJmMzJlNSksIEMoN2FkMDk1MzhhM2Rh
MjdmNSksCisgICAgIEMoMmI1YzE4ZjkzNGFhNTMwMyksIEMoYzgzZDNjNWY0ZTVmMDMyMCksIEMo
Njk0ZTdhZGViMmJmMzJlNSksCisgICAgIEMoN2FkMDk1MzhhM2RhMjdmNSksIEMoMmI1YzE4Zjkz
NGFhNTMwMyksIEMoYzRkYWQ3NzAzZDM0MzI2ZSksCisgICAgIEMoODI1NTY5ZTJiY2RjNmEyNSks
IEMoYjgzZDI2NzcwOWNhOTAwZCksIEMoNDRlZDA1MTUxZjVkNzRlNiksCisgICAgIEMoZWU5MGNm
MzMpfSwKKyAgICB7QyhjOTMwODQxZDFkODg2ODRmKSwgQyg1ZWI2NmViMThiN2Y5NjcyKSwgQyhl
NDU1ZDQxMzAwOGEyNTQ2KSwKKyAgICAgQyhiYzI3MWJjMGRmMTRkNjQ3KSwgQyhiMDcxMTAwYTlm
ZjJlZGJiKSwgQygyYjFhNGMxY2MzMWExMTlhKSwKKyAgICAgQyhiNWQ3Y2FhMWJkOTQ2Y2VmKSwg
QyhiYzI3MWJjMGRmMTRkNjQ3KSwgQyhiMDcxMTAwYTlmZjJlZGJiKSwKKyAgICAgQygyYjFhNGMx
Y2MzMWExMTlhKSwgQyhiNWQ3Y2FhMWJkOTQ2Y2VmKSwgQyhlMDI2MjNhZTEwZjRhYWRkKSwKKyAg
ICAgQyhkNzlmNjAwMzg5Y2QwNmZkKSwgQygxZThkYTc5NjUzMDNlNjJiKSwgQyg4NmY1MGUxMGVl
YWIwOTI1KSwKKyAgICAgQyg0MzA1YzNjZSl9LAorICAgIHtDKDk0ZGM2OTcxZTNjZjA3MWEpLCBD
KDk5NGM3MDAzYjczYjJiMzQpLCBDKGVhMTZlODU5Nzg2OTRlNSksCisgICAgIEMoMzM2YzFiNTlh
MWZjMTlmNiksIEMoYzE3M2FjYWVjYzQ3MTMwNSksIEMoZGIxMjY3ZDI0ZjNmM2YzNiksCisgICAg
IEMoZTlhNWVlOTg2MjdhNmU3OCksIEMoMzM2YzFiNTlhMWZjMTlmNiksIEMoYzE3M2FjYWVjYzQ3
MTMwNSksCisgICAgIEMoZGIxMjY3ZDI0ZjNmM2YzNiksIEMoZTlhNWVlOTg2MjdhNmU3OCksIEMo
NzE4ZjMzNDIwNDMwNWFlNSksCisgICAgIEMoZTNiNTNjMTQ4Zjk4ZDIyYyksIEMoYTE4NDAxMmRm
ODQ4OTI2KSwgQyg2ZTk2Mzg2MTI3ZDUxMTgzKSwgQyg0YjNhMWQ3Nil9LAorICAgIHtDKDdmYzk4
MDA2ZTI1Y2FjOSksIEMoNzdmZWUwNDg0Y2RhODZhNyksIEMoMzc2ZWMzZDQ0NzA2MDQ1NiksCisg
ICAgIEMoODQwNjRhNmRjZjkxNjM0MCksIEMoZmJmNTVhMjY3OTBlMGViYiksIEMoMmU3Zjg0MTUx
YzMxYTVjMiksCisgICAgIEMoOWY3ZjZkNzZiOTUwZjliZiksIEMoODQwNjRhNmRjZjkxNjM0MCks
IEMoZmJmNTVhMjY3OTBlMGViYiksCisgICAgIEMoMmU3Zjg0MTUxYzMxYTVjMiksIEMoOWY3ZjZk
NzZiOTUwZjliZiksIEMoMTI1ZTA5NGZiZWUyYjE0NiksCisgICAgIEMoNTcwNmFhNzJiMmVlZjdj
MiksIEMoMWM0YTJkYWE5MDVlZTY2ZSksIEMoODNkNDgwMjliNTQ1MTY5NCksCisgICAgIEMoYThi
YjZkODApfSwKKyAgICB7QyhiZDc4MWM0NDU0MTAzZjYpLCBDKDYxMjE5NzMyMmY0OWM5MzEpLCBD
KGI5Y2YxN2ZkN2U1NDYyZDUpLAorICAgICBDKGUzOGU1MjZjZDMzMjQzNjQpLCBDKDg1ZjJiNjNh
NWI1ZTg0MGEpLCBDKDQ4NWQ3Y2VmNWFhYWRkODcpLAorICAgICBDKGQyYjgzN2E0NjJmNmRiNmQp
LCBDKGUzOGU1MjZjZDMzMjQzNjQpLCBDKDg1ZjJiNjNhNWI1ZTg0MGEpLAorICAgICBDKDQ4NWQ3
Y2VmNWFhYWRkODcpLCBDKGQyYjgzN2E0NjJmNmRiNmQpLCBDKDNlNDFjZWYwMzE1MjBkOWEpLAor
ICAgICBDKDgyZGY3MzkwMmQ3ZjY3ZSksIEMoM2JhNmZkNTRjMTUyNTdjYiksIEMoMjJmOTFmMDc5
YmU0MmQ0MCksIEMoMWY5ZmE2MDcpfSwKKyAgICB7QyhkYTYwZTZiMTQ0NzlmOWRmKSwgQygzYmRj
Y2Y2OWVjZTE2NzkyKSwgQygxOGViZjQ1YzRmZWNmZGM5KSwKKyAgICAgQygxNjgxOGVlOWQzOGM2
NjY0KSwgQyg1NTE5ZmE5YTFlMzVhMzI5KSwgQyhjYmQwMDAxZTRiMDhlZDgpLAorICAgICBDKDQx
YTk2NWUzN2EwYzczMWIpLCBDKDE2ODE4ZWU5ZDM4YzY2NjQpLCBDKDU1MTlmYTlhMWUzNWEzMjkp
LAorICAgICBDKGNiZDAwMDFlNGIwOGVkOCksIEMoNDFhOTY1ZTM3YTBjNzMxYiksIEMoNjZlN2I1
ZGNjYTFjYTI4ZiksCisgICAgIEMoOTYzYjJkOTkzNjE0MzQ3ZCksIEMoOWI2ZmM2ZjQxZDQxMTEw
NiksIEMoYWFhZWNhY2NmNzg0OGMwYyksCisgICAgIEMoOGQwZTRlZDIpfSwKKyAgICB7Qyg0Y2E1
NmEzNDhiNmM0ZDMpLCBDKDYwNjE4NTM3YzM4NzI1MTQpLCBDKDJmYmI5ZjBlNjU4NzFiMDkpLAor
ICAgICBDKDMwMjc4MDE2ODMwZGRkNDMpLCBDKGYwNDY2NDZkOTAxMmUwNzQpLCBDKGM2MmE1ODA0
ZjZlN2M5ZGEpLAorICAgICBDKDk4ZDUxZjU4MzBlMmJjMWUpLCBDKDMwMjc4MDE2ODMwZGRkNDMp
LCBDKGYwNDY2NDZkOTAxMmUwNzQpLAorICAgICBDKGM2MmE1ODA0ZjZlN2M5ZGEpLCBDKDk4ZDUx
ZjU4MzBlMmJjMWUpLCBDKDdiMmNiZTVkMzdlM2YyOWUpLAorICAgICBDKDdiOGMzZWQ1MGJkYTRh
YTApLCBDKDNlYTYwY2MyNDYzOWUwMzgpLCBDKGY3NzA2ZGU5ZmIwYjU4MDEpLAorICAgICBDKDFi
ZjMxMzQ3KX0sCisgICAge0MoZWJkMjJkNGI3MDk0NjQwMSksIEMoNjg2MzYwMmJmNzEzOTAxNyks
IEMoYzBiMWFjNGUxMWIwMDY2NiksCisgICAgIEMoN2QyNzgyYjgyYmQ0OTRiNiksIEMoOTcxNTli
YTFjMjZiMzA0YiksIEMoNDJiM2IwZmQ0MzFiMmFjMiksCisgICAgIEMoZmFhODFmODI2OTFjODMw
YyksIEMoN2QyNzgyYjgyYmQ0OTRiNiksIEMoOTcxNTliYTFjMjZiMzA0YiksCisgICAgIEMoNDJi
M2IwZmQ0MzFiMmFjMiksIEMoZmFhODFmODI2OTFjODMwYyksIEMoN2NjNjQ0OTIzNGM3ZTE4NSks
CisgICAgIEMoYWVhYTZmYTY0M2NhODZhNSksIEMoMTQxMmRiMWMwZjJlMDEzMyksIEMoNGRmMmZl
M2U0MDcyOTM0ZiksCisgICAgIEMoMWFlM2ZjNWIpfSwKKyAgICB7QygzY2M0NjkzZDZjYmNiMGMp
LCBDKDUwMTY4OWVhMWM3MGZmYSksIEMoMTBhNDM1M2U5Yzg5ZTM2NCksCisgICAgIEMoNThjOGFi
YTc0NzVlMmQ5NSksIEMoM2UyZjI5MTY5OGM5NDI3YSksIEMoZTg3MTBkMTljOWRlOWU0MSksCisg
ICAgIEMoNjVkZGEyMmViMDRjZjk1MyksIEMoNThjOGFiYTc0NzVlMmQ5NSksIEMoM2UyZjI5MTY5
OGM5NDI3YSksCisgICAgIEMoZTg3MTBkMTljOWRlOWU0MSksIEMoNjVkZGEyMmViMDRjZjk1Myks
IEMoZDc3MjljNDhjMjUwY2ZmYSksCisgICAgIEMoZWY3NjE2MmIyZGRmYmE0YiksIEMoNTIzNzFl
MTdmNGQ1MWY2ZCksIEMoZGRkMDAyMTEyZmYwYzgzMyksCisgICAgIEMoNDU5YzM5MzApfSwKKyAg
ICB7QygzODkwOGU0M2Y3YmE1ZWYwKSwgQygxYWIwMzVkNGU3NzgxZTc2KSwgQyg0MWQxMzNlOGMw
YTY4ZmY3KSwKKyAgICAgQyhkMTA5MDg5M2FmYWFiOGJjKSwgQyg5NmM0ZmU2OTIyNzcyODA3KSwg
Qyg0NTIyNDI2YzJiNDIwNWViKSwKKyAgICAgQyhlZmFkOTlhMTI2MmU3ZTBkKSwgQyhkMTA5MDg5
M2FmYWFiOGJjKSwgQyg5NmM0ZmU2OTIyNzcyODA3KSwKKyAgICAgQyg0NTIyNDI2YzJiNDIwNWVi
KSwgQyhlZmFkOTlhMTI2MmU3ZTBkKSwgQyhjNzY5NjAyOWFiZGI0NjVlKSwKKyAgICAgQyg0ZTE4
ZWFmMDNkNTE3NjUxKSwgQyhkMDA2YmNlZDU0Yzg2YWM4KSwgQyg0MzMwMzI2ZDEwMjE4NjBjKSwK
KyAgICAgQyhlMDBjNDE4NCl9LAorICAgIHtDKDM0OTgzY2NjNmFhNDAyMDUpLCBDKDIxODAyY2Fk
MzRlNzJiYzQpLCBDKDE5NDNlOGZiM2MxN2JiOCksCisgICAgIEMoZmM5NDcxNjdmNjljMGRhNSks
IEMoYWU3OWNmZGI5MWI2ZjZjMSksIEMoN2IyNTFkMDRjMjZjYmRhMyksCisgICAgIEMoMTI4YTMz
YTc5MDYwZDI1ZSksIEMoZmM5NDcxNjdmNjljMGRhNSksIEMoYWU3OWNmZGI5MWI2ZjZjMSksCisg
ICAgIEMoN2IyNTFkMDRjMjZjYmRhMyksIEMoMTI4YTMzYTc5MDYwZDI1ZSksIEMoMWVjYTg0MmRi
ZmUwMThkZCksCisgICAgIEMoNTBhNGNkMmVlMGJhOWM2MyksIEMoYzJmNWM5N2Q4Mzk5NjgyZiks
IEMoM2Y5MjlmYzdjYmU4ZWNiYiksCisgICAgIEMoZmZjN2E3ODEpfSwKKyAgICB7Qyg4NjIxNWM0
NWRjYWM5OTA1KSwgQyhlYTU0NmFmZTg1MWNhZTRiKSwgQyhkODViNjQ1N2U0ODllMzc0KSwKKyAg
ICAgQyhiNzYwOWM4ZTcwMzg2ZDY2KSwgQygzNmU2Y2NjMjc4ZDE2MzZkKSwgQygyZjg3MzMwN2Mw
OGU2YTFjKSwKKyAgICAgQygxMGYyNTJhNzU4NTA1Mjg5KSwgQyhiNzYwOWM4ZTcwMzg2ZDY2KSwg
QygzNmU2Y2NjMjc4ZDE2MzZkKSwKKyAgICAgQygyZjg3MzMwN2MwOGU2YTFjKSwgQygxMGYyNTJh
NzU4NTA1Mjg5KSwgQyhjODk3NzY0NmU4MWFiNGI2KSwKKyAgICAgQyg4MDE3Yjc0NWNkODAyMTNi
KSwgQyg5NjA2ODdkYjM1OWJlYTApLCBDKGVmNGE0NzA2NjA3OTk0ODgpLCBDKDZhMTI1NDgwKX0s
CisgICAge0MoNDIwZmMyNTVjMzhkYjE3NSksIEMoZDUwM2NkMGYzYzEyMDhkMSksIEMoZDQ2ODRl
NzRjODI1YTBiYyksCisgICAgIEMoNGMxMDUzNzQ0MzE1MmYzZCksIEMoNzIwNDUxZDNjODk1ZTI1
ZCksIEMoYWZmNjBjNGQxMWY1MTNmZCksCisgICAgIEMoODgxZThkNmQyZDVmYjk1MyksIEMoNGMx
MDUzNzQ0MzE1MmYzZCksIEMoNzIwNDUxZDNjODk1ZTI1ZCksCisgICAgIEMoYWZmNjBjNGQxMWY1
MTNmZCksIEMoODgxZThkNmQyZDVmYjk1MyksIEMoOWRlYzAzNGEwNDNmMWY1NSksCisgICAgIEMo
ZTI3YTBjMjJlN2JmYjM5ZCksIEMoMjIyMGI5NTkxMjgzMjQpLCBDKDUzMjQwMjcyMTUyZGJkOGIp
LCBDKDg4YTE1MTJiKX0sCisgICAge0MoMWQ3YTMxZjViYzhmZTJmOSksIEMoNDc2Mzk5MTA5MmRj
ZjgzNiksIEMoZWQ2OTVmNTViOTc0MTZmNCksCisgICAgIEMoZjI2NWVkYjBjMWM0MTFkNyksIEMo
MzBlMWU5ZWM1MjYyYjdlNiksIEMoYzJjM2JhMDYxY2U3OTU3YSksCisgICAgIEMoZDk3NWY5M2I4
OWExNjQwOSksIEMoZjI2NWVkYjBjMWM0MTFkNyksIEMoMzBlMWU5ZWM1MjYyYjdlNiksCisgICAg
IEMoYzJjM2JhMDYxY2U3OTU3YSksIEMoZDk3NWY5M2I4OWExNjQwOSksIEMoZTlkNzAzMTIzZjQz
NDUwYSksCisgICAgIEMoNDEzODNmZWRmZWQ2N2M4MiksIEMoNmU5ZjQzZWNiYmJkNjAwNCksIEMo
YzdjY2QyM2EyNGU3N2I4KSwgQyg1NDliYmJlNSl9LAorICAgIHtDKDk0MTI5YTg0YzM3NmEyNmUp
LCBDKGMyNDVlODU5ZGMyMzE5MzMpLCBDKDFiOGY3NGZlY2Y5MTc0NTMpLAorICAgICBDKGU5MzY5
ZDJlOTAwN2U3NGIpLCBDKGIxMzc1OTE1ZDExMzYwNTIpLCBDKDkyNmMyMDIxZmUxZDIzNTEpLAor
ICAgICBDKDFkOTQzYWRkYWFhMmU3ZTYpLCBDKGU5MzY5ZDJlOTAwN2U3NGIpLCBDKGIxMzc1OTE1
ZDExMzYwNTIpLAorICAgICBDKDkyNmMyMDIxZmUxZDIzNTEpLCBDKDFkOTQzYWRkYWFhMmU3ZTYp
LCBDKGY1ZjUxNTg2OWMyNDY3MzgpLAorICAgICBDKDdlMzA5Y2QwZTFjMGYyYTApLCBDKDE1M2Mz
YzM2Y2Y1MjNlM2IpLCBDKDQ5MzFjNjY4NzJlYTY3NTgpLAorICAgICBDKGMxMzNkMzhjKX0sCisg
ICAge0MoMWQzYTk4MDlkYWIwNWM4ZCksIEMoYWRkZGViNGY3MWM5M2U4KSwgQyhlZjM0MmViMzY2
MzFlZGIpLAorICAgICBDKDMwMWQ3YTYxYzRiM2RiY2EpLCBDKDg2MTMzNmMzZjA1NTJkNjEpLCBD
KDEyYzZkYjk0NzQ3MTMwMGYpLAorICAgICBDKGE2NzllZjBlZDc2MWRlYjkpLCBDKDMwMWQ3YTYx
YzRiM2RiY2EpLCBDKDg2MTMzNmMzZjA1NTJkNjEpLAorICAgICBDKDEyYzZkYjk0NzQ3MTMwMGYp
LCBDKGE2NzllZjBlZDc2MWRlYjkpLCBDKDVmNzEzYjcyMGVmY2QxNDcpLAorICAgICBDKDM3YWMz
MzBhMzMzYWE2YiksIEMoMzMwOWRjOWVjMTYxNmVlZiksIEMoNTIzMDFkN2E5MDgwMjZiNSksIEMo
ZmNhY2UzNDgpfSwKKyAgICB7Qyg5MGZhM2NjYmQ2MDg0OGRhKSwgQyhkZmE2ZTA1OTViNTY5ZTEx
KSwgQyhlNTg1ZDA2N2ExZjUxMzVkKSwKKyAgICAgQyg2Y2VmODY2ZWMyOTVhYmVhKSwgQyhjNDg2
YzBkOTIxNGJlYjJkKSwgQyhkNmU0OTA5NDRkNWZlMTAwKSwKKyAgICAgQyg1OWRmMzE3NWQ3MmM5
ZjM4KSwgQyg2Y2VmODY2ZWMyOTVhYmVhKSwgQyhjNDg2YzBkOTIxNGJlYjJkKSwKKyAgICAgQyhk
NmU0OTA5NDRkNWZlMTAwKSwgQyg1OWRmMzE3NWQ3MmM5ZjM4KSwgQygzZjIzYWViNGMwNGQxNDQz
KSwKKyAgICAgQyg5YmYwNTE1Y2Q4ZDI0NzcwKSwgQyg5NTg1NTRmNjBjY2FhZGUyKSwgQyg1MTgy
ODYzYzkwMTMyZmU4KSwKKyAgICAgQyhlZDdiNmY5YSl9LAorICAgIHtDKDJkYmI0ZmM3MWI1NTQ1
MTQpLCBDKDk2NTBlMDRiODZiZTBmODIpLCBDKDYwZjIzMDRmYmE5Mjc0ZDMpLAorICAgICBDKGZj
ZmI5NDQzZTk5N2NhYiksIEMoZjEzMzEwZDk2ZGVjMjc3MiksIEMoNzA5Y2FkMjA0NTI1MWFmMiks
CisgICAgIEMoYWZkMGQzMGNjNjM3NmRhZCksIEMoZmNmYjk0NDNlOTk3Y2FiKSwgQyhmMTMzMTBk
OTZkZWMyNzcyKSwKKyAgICAgQyg3MDljYWQyMDQ1MjUxYWYyKSwgQyhhZmQwZDMwY2M2Mzc2ZGFk
KSwgQyg1OWQ0YmVkMzBkNTUwZDBkKSwKKyAgICAgQyg1ODAwNmQ0ZTIyZDhhYWQxKSwgQyhlZWUx
MmQyMzYyZDFmMTNiKSwgQygzNWNmMWQ3ZmFhZjFkMjI4KSwKKyAgICAgQyg2ZDkwN2RkYSl9LAor
ICAgIHtDKGI5OGJmNDI3NGQxODM3NGEpLCBDKDFiNjY5ZmQ0YzdmOWExOWEpLCBDKGIxZjU5NzJi
ODhiYTJiN2EpLAorICAgICBDKDczMTE5Yzk5ZTZkNTA4YmUpLCBDKDVkNDAzNmExODc3MzUzODUp
LCBDKDhmYTY2ZTE5MmZkODM4MzEpLAorICAgICBDKDJhYmY2NGI2YjU5MmVkNTcpLCBDKDczMTE5
Yzk5ZTZkNTA4YmUpLCBDKDVkNDAzNmExODc3MzUzODUpLAorICAgICBDKDhmYTY2ZTE5MmZkODM4
MzEpLCBDKDJhYmY2NGI2YjU5MmVkNTcpLCBDKGQ0NTAxZjk1ZGQ4NGIwOGMpLAorICAgICBDKGJm
MTU1MjQzOWM4YmVhMDIpLCBDKDRmNTZmZTc1M2JhN2UwYmEpLCBDKDRjYThkMzVjYzA1OGNmY2Qp
LAorICAgICBDKDdhNGQ0OGQ1KX0sCisgICAge0MoZDY3ODFkMGI1ZTE4ZWI2OCksIEMoYjk5Mjkx
M2NhZTA5YjUzMyksIEMoNThmNjAyMWNhYWVlM2E0MCksCisgICAgIEMoYWFmY2I3NzQ5N2I1YTIw
YiksIEMoNDExODE5ZTVlNzliNzdhMyksIEMoYmQ3Nzk1NzljNTFjNzdjZSksCisgICAgIEMoNThk
MTFmNWRjZjVkMDc1ZCksIEMoYWFmY2I3NzQ5N2I1YTIwYiksIEMoNDExODE5ZTVlNzliNzdhMyks
CisgICAgIEMoYmQ3Nzk1NzljNTFjNzdjZSksIEMoNThkMTFmNWRjZjVkMDc1ZCksIEMoOWVhZTc2
Y2RlMWNiNDIzMyksCisgICAgIEMoMzJmZTI1YTliZjY1Nzk3MCksIEMoMWMwYzgwNzk0OGVkYjA2
YSksIEMoYjhmMjlhM2RmYWVlMjU0ZCksCisgICAgIEMoZTY4NmYzZGIpfSwKKyAgICB7QygyMjY2
NTFjZjE4ZjQ4ODRjKSwgQyg1OTUwNTJhODc0ZjBmNTFjKSwgQyhjOWI3NTE2MmIyM2JhYjQyKSwK
KyAgICAgQygzZjQ0Zjg3M2JlNDgxMmVjKSwgQyg0Mjc2NjJjMWRiZmFhN2IyKSwgQyhhMjA3ZmY5
NjM4ZmI2NTU4KSwKKyAgICAgQyhhNzM4ZDkxOWU0NWY1NTBmKSwgQygzZjQ0Zjg3M2JlNDgxMmVj
KSwgQyg0Mjc2NjJjMWRiZmFhN2IyKSwKKyAgICAgQyhhMjA3ZmY5NjM4ZmI2NTU4KSwgQyhhNzM4
ZDkxOWU0NWY1NTBmKSwgQyhjYjE4NmVhMDU3MTdlN2Q2KSwKKyAgICAgQygxY2E3ZDY4YTU4NzFm
ZGMxKSwgQyg1ZDRjMTE5ZWE4ZWYzNzUwKSwgQyg3MmI2YTEwZmEyZmY5NDA2KSwgQyhjY2U3YzU1
KX0sCisgICAge0MoYTczNGZiMDQ3ZDMxNjJkNiksIEMoZTUyMzE3MGQyNDBiYTNhNSksIEMoMTI1
YTY5NzI4MDk3MzBlOCksCisgICAgIEMoZDM5NmEyOTc3OTljMjRhMSksIEMoOGZlZTk5MmUzMDY5
YmFkNSksIEMoMmUzYTAxYjA2OTdjY2Y1NyksCisgICAgIEMoZWU5YzczOTBiZDkwMWNmYSksIEMo
ZDM5NmEyOTc3OTljMjRhMSksIEMoOGZlZTk5MmUzMDY5YmFkNSksCisgICAgIEMoMmUzYTAxYjA2
OTdjY2Y1NyksIEMoZWU5YzczOTBiZDkwMWNmYSksIEMoNTZmMmQ5ZGEwYWYyOGFmMiksCisgICAg
IEMoM2ZkZDM3YjJmZTg0MzdjYiksIEMoM2QxM2VlZWI2MGQ2YWVjMCksIEMoMjQzMmFlNjJlODAw
YTVjZSksIEMoZjU4Yjk2Yil9LAorICAgIHtDKGM2ZGY2MzY0YTI0Zjc1YTMpLCBDKGMyOTRlMmM4
NGM0ZjVkZjgpLCBDKGE4OGRmNjVjNmE4OTMxM2IpLAorICAgICBDKDg5NWZlODQ0MzE4M2RhNzQp
LCBDKGM3ZjJmNmY4OTVhNjczMzQpLCBDKGEwZDZiNmE1MDY2OTFkMzEpLAorICAgICBDKDI0ZjUx
NzEyYjQ1OWE5ZjApLCBDKDg5NWZlODQ0MzE4M2RhNzQpLCBDKGM3ZjJmNmY4OTVhNjczMzQpLAor
ICAgICBDKGEwZDZiNmE1MDY2OTFkMzEpLCBDKDI0ZjUxNzEyYjQ1OWE5ZjApLCBDKDE3M2E2OTk0
ODFiOWUwODgpLAorICAgICBDKDFkZWU5Yjc3YmNiZjQ1ZDMpLCBDKDMyYjk4YTY0NmE4NjY3ZDAp
LCBDKDNhZGNkNGVlMjhmNDJhMGUpLAorICAgICBDKDFiYmY2ZjYwKX0sCisgICAge0MoZDhkMTM2
NGMxZmJjZDEwKSwgQygyZDdjYzdmNTQ4MzJkZWFhKSwgQyg0ZTIyYzg3NmE3YzU3NjI1KSwKKyAg
ICAgQyhhM2Q1ZDExMzdkMzBjNGJkKSwgQygxZTdkNzA2YTQ5YmRmYjllKSwgQyhjNjMyODJiMjBh
ZDg2ZGIyKSwKKyAgICAgQyhhZWM5N2ZhMDc5MTZiZmQ2KSwgQyhhM2Q1ZDExMzdkMzBjNGJkKSwg
QygxZTdkNzA2YTQ5YmRmYjllKSwKKyAgICAgQyhjNjMyODJiMjBhZDg2ZGIyKSwgQyhhZWM5N2Zh
MDc5MTZiZmQ2KSwgQyg3YzliYTNlNTJkNDRmNzNlKSwKKyAgICAgQyhhZjYyZmQyNDU4MTExODVk
KSwgQyg4YTlkMmRhY2Q4NzM3NjUyKSwgQyhiZDJjY2UyNzdkNWZiZWMwKSwKKyAgICAgQyhjZTVl
MGNjMil9LAorICAgIHtDKGFhZTA2ZjkxNDZkYjg4NWYpLCBDKDM1OTg3MzY0NDFlMjgwZDkpLCBD
KGZiYTMzOWIxMTcwODNlNTUpLAorICAgICBDKGIyMmJmMDhkOWY4YWVjZjcpLCBDKGMxODI3MzBk
ZTMzN2I5MjIpLCBDKDJiOWFkYzg3YTA0NTBhNDYpLAorICAgICBDKDE5MmMyOWE5Y2ZjMDBhYWQp
LCBDKGIyMmJmMDhkOWY4YWVjZjcpLCBDKGMxODI3MzBkZTMzN2I5MjIpLAorICAgICBDKDJiOWFk
Yzg3YTA0NTBhNDYpLCBDKDE5MmMyOWE5Y2ZjMDBhYWQpLCBDKDlmZDczM2YxZDg0YTU5ZDkpLAor
ICAgICBDKGQ4NmJkNWM5ODM5YWNlMTUpLCBDKGFmMjBiNTczMDMxNzI4NzYpLCBDKDlmNjNjYjcx
NjFiNTM2NGMpLAorICAgICBDKDU4NGNmZDZmKX0sCisgICAge0MoODk1NWVmMDc2MzFlM2JjYyks
IEMoN2Q3MDk2NWVhMzkyNmY4MyksIEMoMzlhZWQ0MTM0ZjhiMmRiNiksCisgICAgIEMoODgyZWZj
MjU2MTcxNWE5YyksIEMoZWY4MTMyYTE4YTU0MDIyMSksIEMoYjIwYTNjODdhOGMyNTdjMSksCisg
ICAgIEMoZjU0MWI4NjI4ZmFkNmMyMyksIEMoODgyZWZjMjU2MTcxNWE5YyksIEMoZWY4MTMyYTE4
YTU0MDIyMSksCisgICAgIEMoYjIwYTNjODdhOGMyNTdjMSksIEMoZjU0MWI4NjI4ZmFkNmMyMyks
IEMoOTU1MmFlZDU3YTZlMDQ2NyksCisgICAgIEMoNGQ5ZmRkNTY4Njc2MTFhNyksIEMoYzMzMDI3
OWJmMjNiOWVhYiksIEMoNDRkYmJhZWEyZmNiOGViYSksCisgICAgIEMoOGY5YmJjMzMpfSwKKyAg
ICB7QyhhZDYxMWM2MDljZmJlNDEyKSwgQyhkM2MwMGIxOGJmMjUzODc3KSwgQyg5MGIyMTcyZTFm
M2QwYmZkKSwKKyAgICAgQygzNzFhOThiMmNiMDg0ODgzKSwgQygzM2EyODg2ZWU5ZjAwNjYzKSwg
QyhiZTk1Njg4MThlZDZlNmJkKSwKKyAgICAgQyhmMjQ0YTBmYTI2NzM0NjlhKSwgQygzNzFhOThi
MmNiMDg0ODgzKSwgQygzM2EyODg2ZWU5ZjAwNjYzKSwKKyAgICAgQyhiZTk1Njg4MThlZDZlNmJk
KSwgQyhmMjQ0YTBmYTI2NzM0NjlhKSwgQyhiNDQ3MDUwYmQzZTU1OWU5KSwKKyAgICAgQyhkM2I2
OTVkYWU3YTEzMzgzKSwgQyhkZWQwYmI2NWJlNDcxMTg4KSwgQyhjYTNjN2EyYjc4OTIyY2FlKSwK
KyAgICAgQyhkNzY0MGQ5NSl9LAorICAgIHtDKGQ1MzM5YWRjMjk1ZDVkNjkpLCBDKGI2MzNjYzFk
Y2I4YjU4NmEpLCBDKGVlODQxODRjZjViMWFlYWYpLAorICAgICBDKDg5ZjNhYWI5OWFmYmQ2MzYp
LCBDKGY0MjBlMDA0ZjgxNDhiOWEpLCBDKDY4MTgwNzNmYWE3OTdjN2MpLAorICAgICBDKGRkM2I0
ZTIxY2JiZjQyY2EpLCBDKDg5ZjNhYWI5OWFmYmQ2MzYpLCBDKGY0MjBlMDA0ZjgxNDhiOWEpLAor
ICAgICBDKDY4MTgwNzNmYWE3OTdjN2MpLCBDKGRkM2I0ZTIxY2JiZjQyY2EpLCBDKDZhMmI3ZGIy
NjExNjQ4NDQpLAorICAgICBDKGNiZWFkNjNkMTg5NTg1MmEpLCBDKDkzZDM3ZTFlYWUwNWUyZjkp
LCBDKDVkMDZkYjI3MDNmYmMzYWUpLCBDKDNkMTJhMmIpfSwKKyAgICB7Qyg0MGQwYWVmZjUyMTM3
NWE4KSwgQyg3N2JhMWFkN2VjZWJkNTA2KSwgQyg1NDdjNmYxYTdkOWRmNDI3KSwKKyAgICAgQygy
MWMyYmUwOTgzMjdmNDliKSwgQyg3ZTAzNTA2NWFjN2JiZWY1KSwgQyg2ZDczNDhlNjMwMjNmYjM1
KSwKKyAgICAgQyg5ZDQyN2RjMWI2N2MzODMwKSwgQygyMWMyYmUwOTgzMjdmNDliKSwgQyg3ZTAz
NTA2NWFjN2JiZWY1KSwKKyAgICAgQyg2ZDczNDhlNjMwMjNmYjM1KSwgQyg5ZDQyN2RjMWI2N2Mz
ODMwKSwgQyg0ZTNkMDE4YTQzODU4MzQxKSwKKyAgICAgQyhjZjkyNGJiNDRkNmI0M2M1KSwgQyg0
NjE4YjZhMjZlMzQ0NmFlKSwgQyg1NGQzMDEzZmFjM2VkNDY5KSwKKyAgICAgQyhhYWVhZmVkMCl9
LAorICAgIHtDKDhiMmQ1NGFlMWEzZGY3NjkpLCBDKDExZTdhZGFlZTMyMTY2NzkpLCBDKDM0ODM3
ODFlZmM1NjNlMDMpLAorICAgICBDKDlkMDk3ZGQzMTUyYWIxMDcpLCBDKDUxZTIxZDI0MTI2ZTg1
NjMpLCBDKGNiYTU2Y2FjODg0YTEzNTQpLAorICAgICBDKDM5YWJiMWI1OTVmMGE5NzcpLCBDKDlk
MDk3ZGQzMTUyYWIxMDcpLCBDKDUxZTIxZDI0MTI2ZTg1NjMpLAorICAgICBDKGNiYTU2Y2FjODg0
YTEzNTQpLCBDKDM5YWJiMWI1OTVmMGE5NzcpLCBDKDgxZTZkZDFjMTEwOTg0OGYpLAorICAgICBD
KDE2NDRiMjA5ODI2ZDdiMTUpLCBDKDZhYzY3ZTRlNGI0ODEyZjApLCBDKGIzYTlmNTYyMmM5MzVi
ZjcpLAorICAgICBDKDk1YjliODE0KX0sCisgICAge0MoOTljMTc1ODE5YjRlYWUyOCksIEMoOTMy
ZThmZjlmN2E0MDA0MyksIEMoZWM3OGRjYWIwN2NhOWY3YyksCisgICAgIEMoYzFhNzhiODJiYTgx
NWI3NCksIEMoNDU4Y2JkZmM4MmViMzIyYSksIEMoMTdmNGExOTIzNzZlZDhkNyksCisgICAgIEMo
NmY5ZTkyOTY4YmM4Y2NlZiksIEMoYzFhNzhiODJiYTgxNWI3NCksIEMoNDU4Y2JkZmM4MmViMzIy
YSksCisgICAgIEMoMTdmNGExOTIzNzZlZDhkNyksIEMoNmY5ZTkyOTY4YmM4Y2NlZiksIEMoOTNl
MDk4YzMzM2IzOTkwNSksCisgICAgIEMoZDU5YjFjYWNlNDRiN2ZkYyksIEMoZjdhNjRlZDc4YzY0
YzdjNSksIEMoN2M2ZWNhNWRkODdlYzFjZSksCisgICAgIEMoNDVmYmU2NmUpfSwKKyAgICB7Qygy
YTQxODMzNTc3OWI4MmZjKSwgQyhhZjAyOTU5ODc4NDlhNzZiKSwgQyhjMTJiYzVmZjAyMTNmNDZl
KSwKKyAgICAgQyg1YWVlYWQ4ZDZjYjI1YmI5KSwgQyg3MzkzMTVmNzc0M2VjM2ZmKSwgQyg5YWI0
OGQyNzExMWQyZGNjKSwKKyAgICAgQyg1Yjg3YmQzNWE5NzU5MjliKSwgQyg1YWVlYWQ4ZDZjYjI1
YmI5KSwgQyg3MzkzMTVmNzc0M2VjM2ZmKSwKKyAgICAgQyg5YWI0OGQyNzExMWQyZGNjKSwgQyg1
Yjg3YmQzNWE5NzU5MjliKSwgQyhjM2RkOGQ2ZDk1YTQ2YmIzKSwKKyAgICAgQyg3YmY5MDkzMjE1
YTRmNDgzKSwgQyhjYjU1N2Q2ZWQ4NDI4NWJkKSwgQyhkYWY1ODQyMmYyNjFmZGI1KSwKKyAgICAg
QyhiNGJhYTdhOCl9LAorICAgIHtDKDNiMWZjNmEzZDI3OWU2N2QpLCBDKDcwZWExZTQ5YzIyNjM5
NiksIEMoMjU1MDVhZGNmMTA0Njk3YyksCisgICAgIEMoYmExZmZiYTI5ZjAzNjdhYSksIEMoYTIw
YmVjMWRkMTVhOGI2YyksIEMoZTliZjYxZDJkYWIwZjc3NCksCisgICAgIEMoZjRmMzViZjU4NzBh
MDQ5YyksIEMoYmExZmZiYTI5ZjAzNjdhYSksIEMoYTIwYmVjMWRkMTVhOGI2YyksCisgICAgIEMo
ZTliZjYxZDJkYWIwZjc3NCksIEMoZjRmMzViZjU4NzBhMDQ5YyksIEMoMjY3ODdlZmE1YjkyMzg1
KSwKKyAgICAgQygzZDk1MzM1OTBjZTMwYjU5KSwgQyhhNGRhM2U0MDUzMGEwMWQ0KSwgQyg2Mzk1
ZGVhZWZiNzAwNjdjKSwKKyAgICAgQyg4M2U5NjJmZSl9LAorICAgIHtDKGQ5N2VhY2RmMTBmMWMz
YzkpLCBDKGI1NGY0NjU0MDQzYTM2ZTApLCBDKGIxMjhmNmViMDlkMTIzNCksCisgICAgIEMoZDhh
ZDdlYzg0YTljOWFhMiksIEMoZTI1NmNmZmVkMTFmNjllNiksIEMoMmNmNjVlNDk1OGFkNWJkYSks
CisgICAgIEMoY2ZiZjliMDMyNDU5ODlhNyksIEMoZDhhZDdlYzg0YTljOWFhMiksIEMoZTI1NmNm
ZmVkMTFmNjllNiksCisgICAgIEMoMmNmNjVlNDk1OGFkNWJkYSksIEMoY2ZiZjliMDMyNDU5ODlh
NyksIEMoOWZhNTFlNjY4NmNmNDQ0NCksCisgICAgIEMoOTQyNWMxMTdhMzQ2MDlkNSksIEMoYjI1
ZjdlMmM2ZjMwZTk2KSwgQyhlYTU0NzdjM2YyYjVhZmQxKSwgQyhhYWMzNTMxYyl9LAorICAgIHtD
KDI5M2E1YzFjNGUyMDNjZDQpLCBDKDZiMzMyOWYxYzEzMGNlZmUpLCBDKGYyZTMyZjhlYzc2YWFj
OTEpLAorICAgICBDKDM2MWUwYTYyYzgxODdiZmYpLCBDKDYwODk5NzFiYjg0ZDcxMzMpLCBDKDkz
ZGY3NzQxNTg4ZGQ1MGIpLAorICAgICBDKGMyYTliNmFiY2QxZDgwYjEpLCBDKDM2MWUwYTYyYzgx
ODdiZmYpLCBDKDYwODk5NzFiYjg0ZDcxMzMpLAorICAgICBDKDkzZGY3NzQxNTg4ZGQ1MGIpLCBD
KGMyYTliNmFiY2QxZDgwYjEpLCBDKDRkMmY4Njg2OWQ3OWJjNTkpLAorICAgICBDKDg1Y2QyNGQ4
YWE1NzBmZiksIEMoYjBkY2Y2ZWYwZTk0YmJiNSksIEMoMjAzN2M2OWFhN2E3ODQyMSksIEMoMmIx
ZGI3Y2MpfSwKKyAgICB7Qyg0MjkwZTAxOGZmYWVkZGU3KSwgQyhhMTQ5NDg1NDU0MThlYjVlKSwg
Qyg3MmQ4NTFiMjAyMjg0NjM2KSwKKyAgICAgQyg0ZWMwMmYzZDJmMmIyM2YyKSwgQyhhYjM1ODA3
MDhhYTdjMzM5KSwgQyhjZGNlMDY2ZmJhYjNmNjUpLAorICAgICBDKGQ4ZWQzZWNmM2M3NjQ3Yjkp
LCBDKDRlYzAyZjNkMmYyYjIzZjIpLCBDKGFiMzU4MDcwOGFhN2MzMzkpLAorICAgICBDKGNkY2Uw
NjZmYmFiM2Y2NSksIEMoZDhlZDNlY2YzYzc2NDdiOSksIEMoNmQyMjA0YjNlMzFmMzQ0YSksCisg
ICAgIEMoNjFhNGQ4N2Y4MGVlNjFkNyksIEMoNDQ2YzQzZGJlZDRiNzI4ZiksIEMoNzMxMzBhYzk0
ZjU4NzQ3ZSksCisgICAgIEMoY2YwMGNkMzEpfSwKKyAgICB7QyhmOTE5YTU5Y2JkZThiZjJmKSwg
QyhhNTZkMDQyMDNiMmRjNWE1KSwgQygzOGIwNjc1M2FjODcxZTQ4KSwKKyAgICAgQyhjMmM5ZmM2
MzdkYmRmY2ZhKSwgQygyOTJhYjgzMDZkMTQ5ZDc1KSwgQyg3ZjQzNmI4NzRiOWZmYzA3KSwKKyAg
ICAgQyhhNWI1NmIwMTI5MjE4YjgwKSwgQyhjMmM5ZmM2MzdkYmRmY2ZhKSwgQygyOTJhYjgzMDZk
MTQ5ZDc1KSwKKyAgICAgQyg3ZjQzNmI4NzRiOWZmYzA3KSwgQyhhNWI1NmIwMTI5MjE4YjgwKSwg
Qyg5MTg4ZjdiZGM0N2VjMDUwKSwKKyAgICAgQyhjZmU5MzQ1ZDAzYTE1YWRlKSwgQyg0MGI1MjBm
YjI3NTBjNDllKSwgQyhjMmU4M2QzNDM5NjhhZjJlKSwKKyAgICAgQyg3ZDNjNDNiOCl9LAorICAg
IHtDKDFkNzBhM2Y1NTIxZDdmYTQpLCBDKGZiOTdiM2ZkYzU4OTE5NjUpLCBDKDI5OWQ0OWJiYmUz
NTM1YWYpLAorICAgICBDKGUxYTgyODZhN2Q2Nzk0NmUpLCBDKDUyYmQ5NTZmMDQ3YjI5OCksIEMo
Y2JkNzQzMzJkZDQyMDRhYyksCisgICAgIEMoMTJiNWJlNzc1MjcyMTk3NiksIEMoZTFhODI4NmE3
ZDY3OTQ2ZSksIEMoNTJiZDk1NmYwNDdiMjk4KSwKKyAgICAgQyhjYmQ3NDMzMmRkNDIwNGFjKSwg
QygxMmI1YmU3NzUyNzIxOTc2KSwgQygyNzg0MjZlMjdmNjIwNGI2KSwKKyAgICAgQyg5MzJjYTdh
N2NkNjEwMTgxKSwgQyg0MTY0NzMyMWYwYTU5MTRkKSwgQyg0OGY0YWE2MWEwYWU4MGRiKSwKKyAg
ICAgQyhjYmQ1ZmFjNil9LAorICAgIHtDKDZhZjk4ZDdiNjU2ZDBkN2MpLCBDKGQyZTk5YWU5NmQ2
YjVjMGMpLCBDKGY2M2JkMTYwM2VmODA2MjcpLAorICAgICBDKGJkZTUxMDMzYWMwNDEzZjgpLCBD
KGJjMDI3MmY2OTFhZWM2MjkpLCBDKDYyMDQzMzI2NTFiZWJjNDQpLAorICAgICBDKDFjYmYwMGRl
MDI2ZWE5YmQpLCBDKGJkZTUxMDMzYWMwNDEzZjgpLCBDKGJjMDI3MmY2OTFhZWM2MjkpLAorICAg
ICBDKDYyMDQzMzI2NTFiZWJjNDQpLCBDKDFjYmYwMGRlMDI2ZWE5YmQpLCBDKGI5YzdlZDZhNzVm
M2ZmMWUpLAorICAgICBDKDdlMzEwYjc2YTU4MDhlNGYpLCBDKGFjYmJkMWFhZDU1MzE4ODUpLCBD
KGZjMjQ1ZjI0NzNhZGViOWMpLAorICAgICBDKDc2ZDBmZWM0KX0sCisgICAge0MoMzk1YjdhOGFk
Yjk2YWI3NSksIEMoNTgyZGY3MTY1YjIwZjRhKSwgQyhlNTJiZDMwZTlmZjY1N2Y5KSwKKyAgICAg
Qyg2YzcxMDY0OTk2Y2JlYzhiKSwgQygzNTJjNTM1ZWRlZWZjYjg5KSwgQyhhYzdmMGFiYTE1Y2Q1
ZWNkKSwKKyAgICAgQygzYWJhMWNhODM1M2U1YzYwKSwgQyg2YzcxMDY0OTk2Y2JlYzhiKSwgQygz
NTJjNTM1ZWRlZWZjYjg5KSwKKyAgICAgQyhhYzdmMGFiYTE1Y2Q1ZWNkKSwgQygzYWJhMWNhODM1
M2U1YzYwKSwgQyg1YzMwYTI4OGE4MGNlNjQ2KSwKKyAgICAgQyhjMjk0MDQ4OGI2NjE3Njc0KSwg
Qyg5MjVmOGNjNjZiMzcwNTc1KSwgQyhhYTY1ZDEyODNiOWJiMGVmKSwKKyAgICAgQyg0MDVlMzQw
Mil9LAorICAgIHtDKDM4MjJkZDgyYzdkZjAxMmYpLCBDKGI5MDI5YjQwYmQ5ZjEyMmIpLCBDKGZk
MjViOTg4NDY4MjY2YzQpLAorICAgICBDKDQzZTQ3YmQ1YmFiMWUwZWYpLCBDKDRhNzFmMzYzNDIx
ZjI4MmYpLCBDKDg4MGIyZjMyYTJiNGUyODkpLAorICAgICBDKDEyOTlkNGVkYTlkM2VhZGYpLCBD
KDQzZTQ3YmQ1YmFiMWUwZWYpLCBDKDRhNzFmMzYzNDIxZjI4MmYpLAorICAgICBDKDg4MGIyZjMy
YTJiNGUyODkpLCBDKDEyOTlkNGVkYTlkM2VhZGYpLCBDKGQ3MTNhNDAyMjZmNTU2NCksCisgICAg
IEMoNGQ4ZDM0ZmVkYzc2OTQwNiksIEMoYTg1MDAxYjI5Y2Q5Y2FjMyksIEMoY2FlOTIzNTJhNDFm
ZDJiMCksCisgICAgIEMoYzczMmM0ODEpfSwKKyAgICB7Qyg3OWY3ZWZlNGE4MGI5NTFhKSwgQyhk
ZDNhM2ZkZGZjNmM5YzQxKSwgQyhhYjRjODEyZjllMjdhYTQwKSwKKyAgICAgQyg4MzI5NTRlYzlk
MGRlMzMzKSwgQyg5NGMzOTBhYTliY2I2YjhhKSwgQyhmM2IzMmFmZGMxZjA0ZjgyKSwKKyAgICAg
QyhkMjI5YzNiNzJlNGI5YTc0KSwgQyg4MzI5NTRlYzlkMGRlMzMzKSwgQyg5NGMzOTBhYTliY2I2
YjhhKSwKKyAgICAgQyhmM2IzMmFmZGMxZjA0ZjgyKSwgQyhkMjI5YzNiNzJlNGI5YTc0KSwgQygx
ZDExODYwZDdlZDYyNGE2KSwKKyAgICAgQyhjYWRlZTIwYjM0NDFiOTg0KSwgQyg3NTMwNzA3OWJm
MzA2ZjdiKSwgQyg4NzkwMmFhM2I5NzUzYmE0KSwKKyAgICAgQyhhOGQxMjNjOSl9LAorICAgIHtD
KGFlNmU1OWY1ZjA1NTkyMWEpLCBDKGU5ZDliN2JmNjhlODIpLCBDKDVjZTRlNGE1YjI2OWNjNTkp
LAorICAgICBDKDQ5NjAxMTE3ODk3Mjc1NjcpLCBDKDE0OWI4YTM3YzcxMjVhYjYpLCBDKDc4Yzdh
MTNhYjk3NDkzODIpLAorICAgICBDKDFjNjExMzEyNjBjYTE1MWEpLCBDKDQ5NjAxMTE3ODk3Mjc1
NjcpLCBDKDE0OWI4YTM3YzcxMjVhYjYpLAorICAgICBDKDc4YzdhMTNhYjk3NDkzODIpLCBDKDFj
NjExMzEyNjBjYTE1MWEpLCBDKDFlOTMyNzZiMzVjMzA5YTApLAorICAgICBDKDI2MThmNTYyMzBh
Y2RlNTgpLCBDKGFmNjExMzBhMThlNGZlYmYpLCBDKDcxNDVkZWIxOGU4OWJlZmUpLAorICAgICBD
KDFlODBhZDdkKX0sCisgICAge0MoODk1OWRiYmYwNzM4N2QzNiksIEMoYjQ2NThhZmNlNDhlYTM1
ZCksIEMoOGYzZjgyNDM3ZDhjYjhkNiksCisgICAgIEMoNjU2NmQ3NDk1NDk4NmJhNSksIEMoOTlk
NTIzNWNjODI1MTlhNyksIEMoMjU3YTIzODA1YzJkODI1KSwKKyAgICAgQyhhZDc1Y2NiOTY4ZTkz
NDAzKSwgQyg2NTY2ZDc0OTU0OTg2YmE1KSwgQyg5OWQ1MjM1Y2M4MjUxOWE3KSwKKyAgICAgQygy
NTdhMjM4MDVjMmQ4MjUpLCBDKGFkNzVjY2I5NjhlOTM0MDMpLCBDKGI0NWJkNGNmNzhlMTFmN2Yp
LAorICAgICBDKDgwYzU1MzZiZGM0ODc5ODMpLCBDKGE0ZmQ3NmVjYmYwMThjOGEpLCBDKDNiOWRh
Yzc4YTdhNzBkNDMpLAorICAgICBDKDUyYWViODYzKX0sCisgICAge0MoNDczOTYxMzIzNDI3OGE0
OSksIEMoOTllYTViY2QzNDBiZjY2MyksIEMoMjU4NjQwOTEyZTcxMmIxMiksCisgICAgIEMoYzhh
MjgyNzQwNDk5MTQwMiksIEMoN2VlNWU3ODU1MGYwMjY3NSksIEMoMmVjNTM5NTJkYjVhYzY2Miks
CisgICAgIEMoMTUyNjQwNWE5ZGY2Nzk0YiksIEMoYzhhMjgyNzQwNDk5MTQwMiksIEMoN2VlNWU3
ODU1MGYwMjY3NSksCisgICAgIEMoMmVjNTM5NTJkYjVhYzY2MiksIEMoMTUyNjQwNWE5ZGY2Nzk0
YiksIEMoZWRkYzYyNzExNzBjNWUxZiksCisgICAgIEMoZjVhODVmOTg2MDAxZDlkNiksIEMoOTU0
MjdjNjc3YmY1OGQ1OCksIEMoNTNlZDY2NmRmYTg1Y2IyOSksCisgICAgIEMoZWY3YzBjMTgpfSwK
KyAgICB7Qyg0MjBlNmM5MjZiYzU0ODQxKSwgQyg5NmRiYmY2ZjRlN2M3NWNkKSwgQyhkOGQ0MGZh
NzBjM2M2N2JiKSwKKyAgICAgQygzZWRiYzEwZTRiZmVlOTFiKSwgQyhmMGQ2ODEzMDRjMjhlZjY4
KSwgQyg3N2VhNjAyMDI5YWFhZjljKSwKKyAgICAgQyg5MGYwNzBiZDI0Yzg0ODNjKSwgQygzZWRi
YzEwZTRiZmVlOTFiKSwgQyhmMGQ2ODEzMDRjMjhlZjY4KSwKKyAgICAgQyg3N2VhNjAyMDI5YWFh
ZjljKSwgQyg5MGYwNzBiZDI0Yzg0ODNjKSwgQygyOGJjOGU0MWUwOGNlYjg2KSwKKyAgICAgQygx
ZWI1NmU0OGE2NTY5MWVmKSwgQyg5ZmVhNTMwMWM5MjAyZjBlKSwgQygzZmNiNjUwOTFhYTlmMTM1
KSwKKyAgICAgQyhiNmFkNGI2OCl9LAorICAgIHtDKGM4NjAxYmFiNTYxYmMxYjcpLCBDKDcyYjI2
MjcyYTBmZjg2OWEpLCBDKDU2ZmRmYzk4NmQ2YmMzYzQpLAorICAgICBDKDgzNzA3NzMwY2FkNzI1
ZDQpLCBDKGM5Y2E4OGMzYTc3OTY3NGEpLCBDKGUxYzY5NmZiYmQ5YWE5MzMpLAorICAgICBDKDcy
M2YzYmFhYjFjMTdhNDUpLCBDKDgzNzA3NzMwY2FkNzI1ZDQpLCBDKGM5Y2E4OGMzYTc3OTY3NGEp
LAorICAgICBDKGUxYzY5NmZiYmQ5YWE5MzMpLCBDKDcyM2YzYmFhYjFjMTdhNDUpLCBDKGY4MmFi
YzdhMWQ4NTE2ODIpLAorICAgICBDKDMwNjgzODM2ODE4ZTg1N2QpLCBDKDc4YmZhM2U4OWE1YWIy
M2YpLCBDKDY5MjgyMzQ0ODJiMzE4MTcpLAorICAgICBDKGMxZTQ2YjE3KX0sCisgICAge0MoYjJk
Mjk0OTMxYTBlMjBlYiksIEMoMjg0ZmZkOWEwODE1YmMzOCksIEMoMWY4YTEwM2FhYzliYmU2KSwK
KyAgICAgQygxZWY4ZTk4ZTFlYTU3MjY5KSwgQyg1OTcxMTE2MjcyZjQ1YThiKSwgQygxODdhZDY4
Y2U5NWQ4ZWFjKSwKKyAgICAgQyhlOTRlOTNlZTRlOGVjYWE2KSwgQygxZWY4ZTk4ZTFlYTU3MjY5
KSwgQyg1OTcxMTE2MjcyZjQ1YThiKSwKKyAgICAgQygxODdhZDY4Y2U5NWQ4ZWFjKSwgQyhlOTRl
OTNlZTRlOGVjYWE2KSwgQyhhMGZmMmE1ODYxMTgzOGI1KSwKKyAgICAgQyhiMDFlMDM4NDliZmJh
ZTZmKSwgQyhkMDgxZTIwMmUyOGVhM2FiKSwgQyg1MTgzNmJjZWU3NjJiZjEzKSwKKyAgICAgQyg1
N2I4ZGYyNSl9LAorICAgIHtDKDc5NjZmNTNjMzdiNmM2ZDcpLCBDKDhlNmFiY2ZiM2FhMmI4OGYp
LCBDKDdmMmU1ZTA3MjRlNWYzNDUpLAorICAgICBDKDNlZWI2MGMzZjVmODE0M2QpLCBDKGEyNWFl
YzA1YzQyMmEyNGYpLCBDKGIwMjZiMDNhZDNjY2E0ZGIpLAorICAgICBDKGU2ZTAzMDAyOGNjMDJh
MDIpLCBDKDNlZWI2MGMzZjVmODE0M2QpLCBDKGEyNWFlYzA1YzQyMmEyNGYpLAorICAgICBDKGIw
MjZiMDNhZDNjY2E0ZGIpLCBDKGU2ZTAzMDAyOGNjMDJhMDIpLCBDKDE2ZmU2NzkzMzhiMzRiZmMp
LAorICAgICBDKGMxYmUzODViNWM4YTlkZTQpLCBDKDY1YWY1ZGY2NTY3NTMwZWIpLCBDKGVkM2Iz
MDNkZjRkYzYzMzUpLAorICAgICBDKGU5ZmEzNmQ2KX0sCisgICAge0MoYmU5YmIwYWJkMDNiNzM2
OCksIEMoMTNiY2E5M2EzMDMxYmU1NSksIEMoZTg2NGY0ZjUyYjU1YjQ3MiksCisgICAgIEMoMzZh
OGQxM2EyY2JiMDkzOSksIEMoMjU0YWM3MzkwNzQxMzIzMCksIEMoNzM1MjBkMTUyMjMxNWE3MCks
CisgICAgIEMoOGM5ZmRiNWNmMWUxYTUwNyksIEMoMzZhOGQxM2EyY2JiMDkzOSksIEMoMjU0YWM3
MzkwNzQxMzIzMCksCisgICAgIEMoNzM1MjBkMTUyMjMxNWE3MCksIEMoOGM5ZmRiNWNmMWUxYTUw
NyksIEMoYjM2NDA1NzBiOTI2ODg2KSwKKyAgICAgQyhmYmEyMzQ0ZWU4N2Y3YmFiKSwgQyhkZTU3
MzQxYWI0NDhkZjA1KSwgQygzODU2MTJlZTA5NGZhOTc3KSwKKyAgICAgQyg4ZjhkYWVmYyl9LAor
ICAgIHtDKGEwOGQxMjhjNWYxNjQ5YmUpLCBDKGE4MTY2YzNkYmJlMTlhYWQpLCBDKGNiOWY5MTRm
ODI5ZWM2MmMpLAorICAgICBDKDViMmI3Y2E4NTZmYWQxYzMpLCBDKDgwOTMwMjJkNjgyZTM3NWQp
LCBDKGVhNWQxNjNiYTdlYTIzMWYpLAorICAgICBDKGQ2MTgxZDAxMmMwZGU2NDEpLCBDKDViMmI3
Y2E4NTZmYWQxYzMpLCBDKDgwOTMwMjJkNjgyZTM3NWQpLAorICAgICBDKGVhNWQxNjNiYTdlYTIz
MWYpLCBDKGQ2MTgxZDAxMmMwZGU2NDEpLCBDKGU3ZDQwZDBhYjhiMDgxNTkpLAorICAgICBDKDJl
ODIzMjBmNTFiM2E2N2UpLCBDKDI3YzJlMzU2ZWEwYjYzYTMpLCBDKDU4ODQyZDAxYTJiMWQwNzcp
LCBDKDZlMWJiN2UpfSwKKyAgICB7Qyg3YzM4NmYwZmZlMDQ2NWFjKSwgQyg1MzA0MTljOWQ4NDNk
YmYzKSwgQyg3NDUwZTNhNGY3MmI4ZDhjKSwKKyAgICAgQyg0OGIyMThlM2I3MjE4MTBkKSwgQyhk
Mzc1N2FjODYwOWJjN2ZjKSwgQygxMTFiYTAyYTg4YWVmYzgpLAorICAgICBDKGU4NjM0MzEzN2Qz
YmZjMmEpLCBDKDQ4YjIxOGUzYjcyMTgxMGQpLCBDKGQzNzU3YWM4NjA5YmM3ZmMpLAorICAgICBD
KDExMWJhMDJhODhhZWZjOCksIEMoZTg2MzQzMTM3ZDNiZmMyYSksIEMoNDRhZDI2YjUxNjYxYjUw
NyksCisgICAgIEMoZGIxMjY4NjcwMjc0ZjUxZSksIEMoNjJhNWU3NWJlYWU4NzVmMyksIEMoZTI2
NmU3YTQ0YzVmMjhjNiksCisgICAgIEMoZmQwMDc2ZjApfSwKKyAgICB7QyhiYjM2MjA5NGU3ZWY0
ZjgpLCBDKGZmM2MyYTQ4OTY2Zjk3MjUpLCBDKDU1MTUyODAzYWNkNGE3ZmUpLAorICAgICBDKDE1
NzQ3ZDhjNTA1ZmZkMDApLCBDKDQzOGExNWYzOTEzMTJjZDYpLCBDKGU0NmNhNjJjMjZkODIxZjUp
LAorICAgICBDKGJlNzhkNzRjOWY3OWNiNDQpLCBDKDE1NzQ3ZDhjNTA1ZmZkMDApLCBDKDQzOGEx
NWYzOTEzMTJjZDYpLAorICAgICBDKGU0NmNhNjJjMjZkODIxZjUpLCBDKGJlNzhkNzRjOWY3OWNi
NDQpLCBDKGE4YWExOWYzYWE1OWYwOWEpLAorICAgICBDKGVmZmIzY2RkYWIyYzkyNjcpLCBDKGQ3
OGU0MWFkOTdjYjE2YTUpLCBDKGFjZTY4MjE1MTM1MjdkMzIpLAorICAgICBDKDg5OWIxN2I2KX0s
CisgICAge0MoY2Q4MGRlYTI0MzIxZWVhNCksIEMoNTJiNGZkYzgxMzBjMmIxNSksIEMoZjNlYTEw
MGIxNTRiZmI4MiksCisgICAgIEMoZDljY2VmMWQ0YmU0Njk4OCksIEMoNWVkZTBjNGUzODNhNWU2
NiksIEMoZGE2OTY4MzcxNmE1NGQxZSksCisgICAgIEMoYmZjM2ZkZjAyZDI0MmQyNCksIEMoZDlj
Y2VmMWQ0YmU0Njk4OCksIEMoNWVkZTBjNGUzODNhNWU2NiksCisgICAgIEMoZGE2OTY4MzcxNmE1
NGQxZSksIEMoYmZjM2ZkZjAyZDI0MmQyNCksIEMoMjBlZDMwMjc0NjUxYjNmNSksCisgICAgIEMo
NGM2NTk4MjQxNjllODZjNiksIEMoNjM3MjI2ZGFlNWI1MmEwZSksIEMoN2UwNTBkYmQxYzcxZGM3
ZiksCisgICAgIEMoZTNlODRlMzEpfSwKKyAgICB7QyhkNTk5YTA0MTI1MzcyYzNhKSwgQygzMTMx
MzZjNTZhNTZmMzYzKSwgQygxZTk5M2MzNjc3NjI1ODMyKSwKKyAgICAgQygyODcwYTk5Yzc2YTU4
N2E0KSwgQyg5OWY3NGNjMGIxODJkZGE0KSwgQyg4YTVlODk1YjJmMGNhN2I2KSwKKyAgICAgQygz
ZDc4ODgyZDVlMGJiMWRjKSwgQygyODcwYTk5Yzc2YTU4N2E0KSwgQyg5OWY3NGNjMGIxODJkZGE0
KSwKKyAgICAgQyg4YTVlODk1YjJmMGNhN2I2KSwgQygzZDc4ODgyZDVlMGJiMWRjKSwgQyhmNDY2
MTIzNzMyYTNlMjVlKSwKKyAgICAgQyhhY2E1ZTU5NzE2YTQwZTUwKSwgQygyNjFkMmU3MzgzZDBl
Njg2KSwgQyhjZTkzNjJkNmE0MmMxNWE3KSwKKyAgICAgQyhlZWY3OWI2Yil9LAorICAgIHtDKGRi
YmY1NDFlOWRmZGEwYSksIEMoMTQ3OWZjZWI2ZGI0Zjg0NCksIEMoMzFhYjU3NmI1OTA2MjUzNCks
CisgICAgIEMoYTMzMzVjNDE3Njg3Y2YzYSksIEMoOTJmZjExNGFjNDVjZGE3NSksIEMoYzNiOGE2
MjczODRmMTNiNSksCisgICAgIEMoYzRmMjVkZTMzZGU4YjNmNyksIEMoYTMzMzVjNDE3Njg3Y2Yz
YSksIEMoOTJmZjExNGFjNDVjZGE3NSksCisgICAgIEMoYzNiOGE2MjczODRmMTNiNSksIEMoYzRm
MjVkZTMzZGU4YjNmNyksIEMoZWFjYmY1MjA1NzhjNTk2NCksCisgICAgIEMoNGNiMTljNWFiMjRm
MzIxNSksIEMoZTdkOGE2ZjY3ZjBjNmU3KSwgQygzMjVjMjQxM2ViNzcwYWRhKSwgQyg4NjhlMzMx
NSl9LAorICAgIHtDKGMyZWUzMjg4YmU0ZmUyYmYpLCBDKGM2NWQyZjVkZGYzMmI5MiksIEMoYWY2
ZWNkZjEyMWJhNTQ4NSksCisgICAgIEMoYzdjZDQ4ZjdhYmYxZmU1OSksIEMoY2U2MDA2NTZhY2U2
ZjUzYSksIEMoOGE5NGE0MzgxYjEwOGIzNCksCisgICAgIEMoZjlkMTI3NmM2NGJmNTlmYiksIEMo
YzdjZDQ4ZjdhYmYxZmU1OSksIEMoY2U2MDA2NTZhY2U2ZjUzYSksCisgICAgIEMoOGE5NGE0Mzgx
YjEwOGIzNCksIEMoZjlkMTI3NmM2NGJmNTlmYiksIEMoMjE5Y2U3MGZmNWExMTJhNSksCisgICAg
IEMoZTYwMjZjNTc2ZTJkMjhkNyksIEMoYjhlNDY3ZjI1MDE1ZTNhNiksIEMoOTUwY2I5MDRmMzdh
ZjcxMCksCisgICAgIEMoNDYzOWE0MjYpfSwKKyAgICB7QyhkODY2MDNjZWQxZWQ0NzMwKSwgQyhm
OWRlNzE4YWFhZGE3NzA5KSwgQyhkYjhiOTc1NTE5NGM2NTM1KSwKKyAgICAgQyhkODAzZTFlZWFk
NDc2MDRjKSwgQyhhZDAwZjc2MTE5NzBhNzFiKSwgQyhiYzUwMDM2YjE2Y2U3MWY1KSwKKyAgICAg
QyhhZmJhOTYyMTBhMmNhN2Q2KSwgQyhkODAzZTFlZWFkNDc2MDRjKSwgQyhhZDAwZjc2MTE5NzBh
NzFiKSwKKyAgICAgQyhiYzUwMDM2YjE2Y2U3MWY1KSwgQyhhZmJhOTYyMTBhMmNhN2Q2KSwgQygy
OGY3YTdiZTFkNjc2NWYwKSwKKyAgICAgQyg5N2JkODg4YjkzOTM4YzY4KSwgQyg2YWQ0MWQxYjQw
N2RlZDQ5KSwgQyhiOWJmZWMwOThkYzU0M2U0KSwKKyAgICAgQyhmMzIxMzY0Nil9LAorICAgIHtD
KDkxNTI2M2M2NzFiMjg4MDkpLCBDKGE4MTUzNzhlN2FkNzYyZmQpLCBDKGFiZWM2ZGM5YjY2OWY1
NTkpLAorICAgICBDKGQxN2M5MjhjNTM0MjQ3N2YpLCBDKDc0NTEzMGI3OTUyNTRhZDUpLCBDKDhj
NWRiOTI2ZmU4OGY4YmEpLAorICAgICBDKDc0MmE5NWM5NTNlNmQ5NzQpLCBDKGQxN2M5MjhjNTM0
MjQ3N2YpLCBDKDc0NTEzMGI3OTUyNTRhZDUpLAorICAgICBDKDhjNWRiOTI2ZmU4OGY4YmEpLCBD
KDc0MmE5NWM5NTNlNmQ5NzQpLCBDKDI3OWRiODA1N2I1ZDNlOTYpLAorICAgICBDKDk4MTY4NDEx
NTY1YjRlYzQpLCBDKDUwYTcyYzU0ZmExMTI1ZmEpLCBDKDI3NzY2YTYzNWRiNzM2MzgpLAorICAg
ICBDKDE3ZjE0OGU5KX0sCisgICAge0MoMmI2N2NkZDM4YzMwN2E1ZSksIEMoY2IxZDQ1YmI1Yzlm
ZTFjKSwgQyg4MDBiYWYyYTAyZWMxOGFkKSwKKyAgICAgQyg2NTMxYzFmZTMyYmNiNDE3KSwgQyg4
Yzk3MGQ4ZGY4Y2RiZWI0KSwgQyg5MTdiYTVmYzY3ZTcyYjQwKSwKKyAgICAgQyg0YjY1ZTRlMjYz
ZTBhNDI2KSwgQyg2NTMxYzFmZTMyYmNiNDE3KSwgQyg4Yzk3MGQ4ZGY4Y2RiZWI0KSwKKyAgICAg
Qyg5MTdiYTVmYzY3ZTcyYjQwKSwgQyg0YjY1ZTRlMjYzZTBhNDI2KSwgQyhlMGRlMzNjZTg4YThi
M2E5KSwKKyAgICAgQyhmOGVmOThhNDM3ZTE2YjA4KSwgQyhhNTE2MmMwYzdjNWY3YjYyKSwgQyhk
YmRhYzQzMzYxYjJiODgxKSwKKyAgICAgQyhiZmQ5NDg4MCl9LAorICAgIHtDKDJkMTA3NDE5MDcz
YjljZDApLCBDKGE5NmRiMDc0MGNlZjhmNTQpLCBDKGVjNDFlZTkxYjNlY2RjMWIpLAorICAgICBD
KGZmZTMxOTY1NGM4ZTdlYmMpLCBDKDZhNjdiOGYxM2VhZDVhNzIpLCBDKDZkZDEwYTM0ZjgwZDUz
MmYpLAorICAgICBDKDZlOWNmYWVjZTlmYmNhNCksIEMoZmZlMzE5NjU0YzhlN2ViYyksIEMoNmE2
N2I4ZjEzZWFkNWE3MiksCisgICAgIEMoNmRkMTBhMzRmODBkNTMyZiksIEMoNmU5Y2ZhZWNlOWZi
Y2E0KSwgQyhiNDQ2OGViNmEzMGFhN2U5KSwKKyAgICAgQyhlODc5OTViZWU0ODMyMjJhKSwgQyhk
MDM2YzJjOTBjNjA5MzkxKSwgQyg4NTMzMDZlODJmYTMyMjQ3KSwKKyAgICAgQyhiYjFmYTdmMyl9
LAorICAgIHtDKGYzZTk0ODdlYzBlMjZkZmMpLCBDKDFhYjFmNjMyMjRlODM3ZmEpLCBDKDExOTk4
M2JiNWE4MTI1ZDgpLAorICAgICBDKDg5NTBjZmNmNGJkZjYyMmMpLCBDKDg4NDdkY2E4MmVmZWVm
MmYpLCBDKDY0NmI3NWIwMjY3MDgxNjkpLAorICAgICBDKDIxY2FiNGIxNjg3YmQ4YiksIEMoODk1
MGNmY2Y0YmRmNjIyYyksIEMoODg0N2RjYTgyZWZlZWYyZiksCisgICAgIEMoNjQ2Yjc1YjAyNjcw
ODE2OSksIEMoMjFjYWI0YjE2ODdiZDhiKSwgQygyNDNiNDg5YTllYWU2MjMxKSwKKyAgICAgQyg1
ZjNlNjM0YzRiNzc5ODc2KSwgQyhmZjhhYmQxNTQ4ZWFmNjQ2KSwgQyhjNzk2MmY1ZjAxNTE5MTRi
KSwgQyg4ODgxNmIxKX0sCisgICAge0MoMTE2MDk4N2M4ZmU4NmY3ZCksIEMoODc5ZTZkYjE0ODFl
YjkxYiksIEMoZDdkY2I4MDJiZmU2ODg1ZCksCisgICAgIEMoMTQ0NTNiNWNjM2Q4MjM5NiksIEMo
NGVmNzAwYzMzZWQyNzhiYyksIEMoMTYzOWM3MmZmYzAwZDEyZSksCisgICAgIEMoZmIxNDBlZTYx
NTVmNzAwZCksIEMoMTQ0NTNiNWNjM2Q4MjM5NiksIEMoNGVmNzAwYzMzZWQyNzhiYyksCisgICAg
IEMoMTYzOWM3MmZmYzAwZDEyZSksIEMoZmIxNDBlZTYxNTVmNzAwZCksIEMoMmU2YjVjOTZhNjYy
MDg2MiksCisgICAgIEMoYTFmMTM2OTk4Y2JlMTljKSwgQyg3NGUwNThhM2I2YzVhNzEyKSwgQyg5
M2RjZjZiZDMzOTI4YjE3KSwgQyg1YzJmYWViMyl9LAorICAgIHtDKGVhYjgxMTJjNTYwYjk2N2Ip
LCBDKDk3ZjU1MGI1OGU4OWRiYWUpLCBDKDg0NmVkNTA2ZDMwNDA1MWYpLAorICAgICBDKDI3NmFh
Mzc3NDRiNWEwMjgpLCBDKDhjMTA4MDBlZTkwZWE1NzMpLCBDKGU2ZTU3ZDJiMzNhMWUwYjcpLAor
ICAgICBDKDkxZjgzNTYzY2QzYjlkZGEpLCBDKDI3NmFhMzc3NDRiNWEwMjgpLCBDKDhjMTA4MDBl
ZTkwZWE1NzMpLAorICAgICBDKGU2ZTU3ZDJiMzNhMWUwYjcpLCBDKDkxZjgzNTYzY2QzYjlkZGEp
LCBDKGFmYmI0NzM5NTcwNzM4YTEpLAorICAgICBDKDQ0MGJhOThkYTVkOGY2OSksIEMoZmRlNGU5
YjBlZGEyMDM1MCksIEMoZTY3ZGZhNWEyMTM4ZmExKSwgQyg1MWI1ZmM2Zil9LAorICAgIHtDKDFh
ZGRjZjAzODZkMzUzNTEpLCBDKGI1ZjQzNjU2MWY4ZjE0ODQpLCBDKDg1ZDM4ZTIyMTgxYzliYjEp
LAorICAgICBDKGZmNWMwM2YwMDNjMWZlZmUpLCBDKGUxMDk4NjcwYWZlN2ZmNiksIEMoZWE0NDUw
MzBjZjg2ZGUxOSksCisgICAgIEMoZjE1NWM2OGI1YzI5NjdmOCksIEMoZmY1YzAzZjAwM2MxZmVm
ZSksIEMoZTEwOTg2NzBhZmU3ZmY2KSwKKyAgICAgQyhlYTQ0NTAzMGNmODZkZTE5KSwgQyhmMTU1
YzY4YjVjMjk2N2Y4KSwgQyg5NWQzMWIxNDVkYmIyZTllKSwKKyAgICAgQyg5MTRmZTFjYTNkZWIz
MjY1KSwgQyg2MDY2MDIwYjEzNThjY2MxKSwgQyhjNzRiYjdlMmRlZTE1MDM2KSwKKyAgICAgQygz
M2Q5NDc1Mil9LAorICAgIHtDKGQ0NDViYTg0YmY4MDNlMDkpLCBDKDEyMTZjMjQ5NzAzOGY4MDQp
LCBDKDIyOTMyMTZlYTIyMzcyMDcpLAorICAgICBDKGUyMTY0NDUxYzY1MWFkZmIpLCBDKGIyNTM0
ZTY1NDc3Zjk4MjMpLCBDKDRkNzA2OTFhNjk2NzFlMzQpLAorICAgICBDKDE1YmU0OTYzZGJkZTgx
NDMpLCBDKGUyMTY0NDUxYzY1MWFkZmIpLCBDKGIyNTM0ZTY1NDc3Zjk4MjMpLAorICAgICBDKDRk
NzA2OTFhNjk2NzFlMzQpLCBDKDE1YmU0OTYzZGJkZTgxNDMpLCBDKDc2MmU3NWM0MDZjNWU5YTMp
LAorICAgICBDKDdiNzU3OWY3ZTAzNTY4NDEpLCBDKDQ4MDUzM2ViMDY2ZGZjZTUpLCBDKDkwYWUx
NGVhNmJmZWI0YWUpLAorICAgICBDKGIwYzkyOTQ4KX0sCisgICAge0MoMzcyMzVhMDk2YThiZTQz
NSksIEMoZDliNzMxMzA0OTM1ODljMiksIEMoM2IxMDI0ZjU5Mzc4ZDNiZSksCisgICAgIEMoYWQx
NTlmNTQyZDgxZjA0ZSksIEMoNDk2MjZhOTdhOTQ2MDk2KSwgQyhkOGQzOTk4YmYwOWZkMzA0KSwK
KyAgICAgQyhkMTI3YTQxMWVhZTY5NDU5KSwgQyhhZDE1OWY1NDJkODFmMDRlKSwgQyg0OTYyNmE5
N2E5NDYwOTYpLAorICAgICBDKGQ4ZDM5OThiZjA5ZmQzMDQpLCBDKGQxMjdhNDExZWFlNjk0NTkp
LCBDKDhmMzI1M2M0ZWI3ODVhN2IpLAorICAgICBDKDQwNDkwNjJmMzdlNjIzOTcpLCBDKGI5ZmEw
NGQzYjY3MGU1YzEpLCBDKDEyMTFhNzk2N2FjOTM1MGYpLAorICAgICBDKGM3MTcxNTkwKX0sCisg
ICAge0MoNzYzYWQ2ZWEyZmUxYzk5ZCksIEMoY2Y3YWY1MzY4YWMxZTI2YiksIEMoNGQ1ZTQ1MWIz
YmI4ZDNkNCksCisgICAgIEMoMzcxMmViOTEzZDA0ZTJmMiksIEMoMmY5NTAwZDMxOWM4NGQ4OSks
IEMoNGFjNmViMjFhOGNmMDZmOSksCisgICAgIEMoN2QxOTE3YWZjZGU0Mjc0NCksIEMoMzcxMmVi
OTEzZDA0ZTJmMiksIEMoMmY5NTAwZDMxOWM4NGQ4OSksCisgICAgIEMoNGFjNmViMjFhOGNmMDZm
OSksIEMoN2QxOTE3YWZjZGU0Mjc0NCksIEMoNmI1ODYwNGI1ZGQxMDkwMyksCisgICAgIEMoYzQy
ODhkZmJjMWUzMTlmYyksIEMoMjMwZjc1Y2E5NjgxN2M2ZSksIEMoODg5NGNiYTNiNzYzNzU2Yyks
CisgICAgIEMoMjQwYTY3ZmIpfSwKKyAgICB7QyhlYTYyN2ZjODRjZDFiODU3KSwgQyg4NWUzNzI0
OTQ1MjAwNzFmKSwgQyg2OWVjNjE4MDA4NDU3ODBiKSwKKyAgICAgQyhhM2MxYzVjYTFiMDM2Nyks
IEMoZWI2OTMzOTk3MjcyYmIzZCksIEMoNzZhNzJjYjYyNjkyYTY1NSksCisgICAgIEMoMTQwYmI1
NTMxZWRmNzU2ZSksIEMoYTNjMWM1Y2ExYjAzNjcpLCBDKGViNjkzMzk5NzI3MmJiM2QpLAorICAg
ICBDKDc2YTcyY2I2MjY5MmE2NTUpLCBDKDE0MGJiNTUzMWVkZjc1NmUpLCBDKDhkMGQ4MDY3ZDFj
OTI1ZjQpLAorICAgICBDKDdiM2ZhNTZkOGQ3N2ExMGMpLCBDKDJiZDAwMjg3YjA5NDZkODgpLCBD
KGYwOGM4ZTRiZDY1Yjg5NzApLAorICAgICBDKGUxODQzY2Q1KX0sCisgICAge0MoMWYyZmZkNzlm
MmNkYzBjOCksIEMoNzI2YTFiYzMxYjMzN2FhYSksIEMoNjc4YjdmMjc1ZWY5NjQzNCksCisgICAg
IEMoNWFhODJiZmFhOTlkMzk3OCksIEMoYzE4Zjk2Y2FkZTVjZTE4ZCksIEMoMzg0MDQ0OTFmOWUz
NGMwMyksCisgICAgIEMoODkxZmI4OTI2YmEwNDE4YyksIEMoNWFhODJiZmFhOTlkMzk3OCksIEMo
YzE4Zjk2Y2FkZTVjZTE4ZCksCisgICAgIEMoMzg0MDQ0OTFmOWUzNGMwMyksIEMoODkxZmI4OTI2
YmEwNDE4YyksIEMoZTVmNjlhNjM5ODExNGMxNSksCisgICAgIEMoN2I4ZGVkMzYyM2JjNmIxZCks
IEMoMmYzZTVjNWRhNWZmNzBlOCksIEMoMWFiMTQyYWRkZWE2YTllYyksCisgICAgIEMoZmRhMTQ1
MmIpfSwKKyAgICB7QygzOWE5ZTE0NmVjNGIzMjEwKSwgQyhmNjNmNzU4MDJhNzhiMWFjKSwgQyhl
MmUyMjUzOWM5NDc0MWMzKSwKKyAgICAgQyg4YjMwNWQ1MzJlNjEyMjZlKSwgQyhjYWVhZTgwZGEy
ZWEyZSksIEMoODhhNjI4OWE3NmFjNjg0ZSksCisgICAgIEMoOGNlNWI1ZjlkZjFjYmQ4NSksIEMo
OGIzMDVkNTMyZTYxMjI2ZSksIEMoY2FlYWU4MGRhMmVhMmUpLAorICAgICBDKDg4YTYyODlhNzZh
YzY4NGUpLCBDKDhjZTViNWY5ZGYxY2JkODUpLCBDKDhhZTFmYzQ3OThlMDBkNTcpLAorICAgICBD
KGU3MTY0YjhmYjM2NGZjNDYpLCBDKDZhOTc4YzliZDNhNjY5NDMpLCBDKGVmMTBkNWFlNGRkMDhk
YyksIEMoYTJjYWQzMzApfSwKKyAgICB7Qyg3NGNiYTMwM2UyZGQ5ZDZkKSwgQyg2OTI2OTliODMy
ODlmYWQxKSwgQyhkZmI5YWE3ODc0Njc4NDgwKSwKKyAgICAgQyg3NTEzOTBhOGE1YzQxYmRjKSwg
Qyg2ZWU1ZmJmODc2MDVkMzQpLCBDKDZjYTczZjYxMGYzYThmN2MpLAorICAgICBDKGU4OThiM2M5
OTY1NzBhZCksIEMoNzUxMzkwYThhNWM0MWJkYyksIEMoNmVlNWZiZjg3NjA1ZDM0KSwKKyAgICAg
Qyg2Y2E3M2Y2MTBmM2E4ZjdjKSwgQyhlODk4YjNjOTk2NTcwYWQpLCBDKDk4MTY4YTU4NThmYzcx
MTApLAorICAgICBDKDZmOTg3ZmEyN2FhMGRhYTIpLCBDKGYyNWUzZTE4MGQ0YjM2YTMpLCBDKGQw
YjAzNDk1YWViMWJlOGEpLAorICAgICBDKDUzNDY3ZTE2KX0sCisgICAge0MoNGNiYzJiNzNhNDMw
NzFlMCksIEMoNTZjNWRiNGM0Y2E0ZTBiNyksIEMoMWIyNzVhMTYyZjQ2YmQzZCksCisgICAgIEMo
Yjg3YTMyNmU0MTM2MDRiZiksIEMoZDhmOWE1ZmEyMTRiMDNhYiksIEMoOGE4YmI4MjY1NzcxY2Y4
OCksCisgICAgIEMoYTY1NTMxOTA1NGY2ZTcwZiksIEMoYjg3YTMyNmU0MTM2MDRiZiksIEMoZDhm
OWE1ZmEyMTRiMDNhYiksCisgICAgIEMoOGE4YmI4MjY1NzcxY2Y4OCksIEMoYTY1NTMxOTA1NGY2
ZTcwZiksIEMoYjQ5OWNiOGU2NWE5YWY0NCksCisgICAgIEMoYmVlN2ZhZmNjODMwNzQ5MSksIEMo
NWQyZTU1ZmE5YjI3Y2RhMiksIEMoNjNiMTIwZjVmYjJkNmVlNSksCisgICAgIEMoZGExNGE4ZDAp
fSwKKyAgICB7Qyg4NzU2MzhiOTcxNWQyMjIxKSwgQyhkOWJhMDYxNWMwYzU4NzQwKSwgQyg2MTZk
NGJlMmRmZTgyNWFhKSwKKyAgICAgQyg1ZGYyNWYxM2VhN2JjMjg0KSwgQygxNjVlZGZhYWZkMjU5
OGZiKSwgQyhhZjcyMTVjNWM3MThjNjk2KSwKKyAgICAgQyhlOWYyZjljYTY1NWU3NjkpLCBDKDVk
ZjI1ZjEzZWE3YmMyODQpLCBDKDE2NWVkZmFhZmQyNTk4ZmIpLAorICAgICBDKGFmNzIxNWM1Yzcx
OGM2OTYpLCBDKGU5ZjJmOWNhNjU1ZTc2OSksIEMoZTQ1OWNmY2I1NjVkM2QyZCksCisgICAgIEMo
NDFkMDMyNjMxYmUyNDE4YSksIEMoYzUwNWRiMDVmZDk0NmY2MCksIEMoNTQ5OTAzOTRhNzE0ZjVk
ZSksCisgICAgIEMoNjczMzM1NTEpfSwKKyAgICB7QyhmYjY4NmIyNzgyOTk0YThkKSwgQyhlZGVl
NjA2OTM3NTZiYjQ4KSwgQyhlNmJjM2NhZTBkZWQyZWY1KSwKKyAgICAgQyg1OGViNGQwM2IyYzNk
ZGY1KSwgQyg2ZDI1NDI5OTVmOTE4OWYxKSwgQyhjMGJlZWM1OGE1ZjVmZWEyKSwKKyAgICAgQyhl
ZDY3NDM2ZjQyZTJhNzhiKSwgQyg1OGViNGQwM2IyYzNkZGY1KSwgQyg2ZDI1NDI5OTVmOTE4OWYx
KSwKKyAgICAgQyhjMGJlZWM1OGE1ZjVmZWEyKSwgQyhlZDY3NDM2ZjQyZTJhNzhiKSwgQyhkZmVj
NzYzY2RiMmI1MTkzKSwKKyAgICAgQyg3MjRhOGQ1MzQ1YmQyZDYpLCBDKDk0ZDRmZDFiODE0NTdj
MjMpLCBDKDI4ZTg3YzUwY2RlZGU0NTMpLCBDKGEwZWJkNjZlKX0sCisgICAge0MoYWIyMWQ4MWE5
MTFlNjcyMyksIEMoNGMzMWIwNzM1NDg1MmY1OSksIEMoODM1ZGEzODRjOTM4NDc0NCksCisgICAg
IEMoN2Y3NTlkZGRjNmU4NTQ5YSksIEMoNjE2ZGQwY2EwMjJjODczNSksIEMoOTQ3MTdhZDRiYzE1
Y2ViMyksCisgICAgIEMoZjY2YzdiZTgwOGFiMzZlKSwgQyg3Zjc1OWRkZGM2ZTg1NDlhKSwgQyg2
MTZkZDBjYTAyMmM4NzM1KSwKKyAgICAgQyg5NDcxN2FkNGJjMTVjZWIzKSwgQyhmNjZjN2JlODA4
YWIzNmUpLCBDKGFmODI4NmI1NTBiMmY0YjcpLAorICAgICBDKDc0NWJkMjE3ZDIwYTlmNDApLCBD
KGM3M2JmYjljNTQzMGYwMTUpLCBDKDU1ZTY1OTIyNjY2ZTNmYzIpLAorICAgICBDKDRiNzY5NTkz
KX0sCisgICAge0MoMzNkMDEzY2MwY2Q0NmVjZiksIEMoM2RlNzI2NDIzYWVhMTIyYyksIEMoMTE2
YWY1MTExN2ZlMjFhOSksCisgICAgIEMoZjI3MWJhNDc0ZWRjNTYyZCksIEMoZTY1OTZlNjdmOWRk
M2ViZCksIEMoYzBhMjg4ZWRmODA4ZjM4MyksCisgICAgIEMoYjNkZWY3MDY4MWM2YmFiYyksIEMo
ZjI3MWJhNDc0ZWRjNTYyZCksIEMoZTY1OTZlNjdmOWRkM2ViZCksCisgICAgIEMoYzBhMjg4ZWRm
ODA4ZjM4MyksIEMoYjNkZWY3MDY4MWM2YmFiYyksIEMoN2RhNzg2NGU5OTg5YjA5NSksCisgICAg
IEMoYmYyZjg3MTg2OTNjZDhhMSksIEMoMjY0YTkxNDQxNjZkYTc3NiksIEMoNjFhZDkwNjc2ODcw
YmViNiksCisgICAgIEMoNmFhNzU2MjQpfSwKKyAgICB7Qyg4Y2E5MmM3Y2QzOWZhZTVkKSwgQygz
MTdlNjIwZTFiZjIwZjEpLCBDKDRmMGIzM2JmMjE5NGI5N2YpLAorICAgICBDKDQ1NzQ0YWZjZjEz
MWRiZWUpLCBDKDk3MjIyMzkyYzI1NTkzNTApLCBDKDQ5OGExOWIyODBjNmQ2ZWQpLAorICAgICBD
KDgzYWMyYzM2YWNkYjhkNDkpLCBDKDQ1NzQ0YWZjZjEzMWRiZWUpLCBDKDk3MjIyMzkyYzI1NTkz
NTApLAorICAgICBDKDQ5OGExOWIyODBjNmQ2ZWQpLCBDKDgzYWMyYzM2YWNkYjhkNDkpLCBDKDdh
Njk2NDVjMjk0ZGFhNjIpLAorICAgICBDKGFiZTlkMmJlODI3NWIzZDIpLCBDKDM5NTQyMDE5ZGUz
NzEwODUpLCBDKDdmNGVmYWM4NDg4Y2Q2YWQpLAorICAgICBDKDYwMmEzZjk2KX0sCisgICAge0Mo
ZmRkZTNiMDNmMDE4ZjQzZSksIEMoMzhmOTMyOTQ2Yzc4NjYwKSwgQyhjODQwODRjZTk0Njg1MWVl
KSwKKyAgICAgQyhiNmRkMDliYTc4NTFjN2FmKSwgQyg1NzBkZTRlMWJiMTNiMTMzKSwgQyhjNGU3
ODRlYjk3MjExNjQyKSwKKyAgICAgQyg4Mjg1YTdmY2RjYzdjNThkKSwgQyhiNmRkMDliYTc4NTFj
N2FmKSwgQyg1NzBkZTRlMWJiMTNiMTMzKSwKKyAgICAgQyhjNGU3ODRlYjk3MjExNjQyKSwgQyg4
Mjg1YTdmY2RjYzdjNThkKSwgQyhkNDIxZjQ3OTkwZGE4OTliKSwKKyAgICAgQyg4YWVkNDA5Yzk5
N2VhYTEzKSwgQyg3YTA0NTkyOWMyZTI5Y2NmKSwgQyhiMzczNjgyYTYyMDJjODZiKSwKKyAgICAg
QyhjZDE4M2M0ZCl9LAorICAgIHtDKDljODUwMjA1MGU5Yzk0NTgpLCBDKGQ2ZDJhMWE2OTk2NGJl
YjkpLCBDKDE2NzU3NjZmNDgwMjI5YjUpLAorICAgICBDKDIxNmUxZDZjODZjYjUyNGMpLCBDKGQw
MWNmNmZkNGY0MDY1YzApLCBDKGZmZmE0ZWM1YjQ4MmVhMGYpLAorICAgICBDKGEwZTIwZWU2YTU0
MDRhYzEpLCBDKDIxNmUxZDZjODZjYjUyNGMpLCBDKGQwMWNmNmZkNGY0MDY1YzApLAorICAgICBD
KGZmZmE0ZWM1YjQ4MmVhMGYpLCBDKGEwZTIwZWU2YTU0MDRhYzEpLCBDKGMxYjAzN2U0ZWViYWY4
NWUpLAorICAgICBDKDYzNGUzZDdjM2ViZjg5ZWIpLCBDKGJjZGE5NzIzNThjNjdkMSksIEMoZmQx
MzUyMTgxZTViODU3OCksIEMoOTYwYTRkMDcpfSwKKyAgICB7QygzNDgxNzZjYTJmYTJmZGQyKSwg
QygzYTg5YzUxNGNjMzYwYzJkKSwgQyg5ZjkwYjhhZmIzMThkNmQwKSwKKyAgICAgQyhiY2VlZTA3
YzExYTlhYzMwKSwgQygyZTJkNDdkZmY4ZTc3ZWI3KSwgQygxMWEzOTRjZDdiNmQ2MTRhKSwKKyAg
ICAgQygxZDdjNDFkNTRlMTVjYjRhKSwgQyhiY2VlZTA3YzExYTlhYzMwKSwgQygyZTJkNDdkZmY4
ZTc3ZWI3KSwKKyAgICAgQygxMWEzOTRjZDdiNmQ2MTRhKSwgQygxZDdjNDFkNTRlMTVjYjRhKSwg
QygxNWJhYTVhZTczMTJiMGZjKSwKKyAgICAgQyhmMzk4ZjU5NmNjOTg0NjM1KSwgQyg4YWI4ZmRm
ODdhNjc4OGU4KSwgQyhiMmI1YzEyMzRhYjQ3ZTIpLCBDKDlhZTk5OGM0KX0sCisgICAge0MoNGEz
ZDNkZmJiYWVhMTMwYiksIEMoNGUyMjFjOTIwZjYxZWQwMSksIEMoNTUzZmQ2Y2QxMzA0NTMxZiks
CisgICAgIEMoYmQyYjMxYjU2MDgxNDNmZSksIEMoYWI3MTdhMTBmMjU1NDg1MyksIEMoMjkzODU3
ZjA0ZDE5NGQyMiksCisgICAgIEMoZDUxYmU4ZmE4NmYyNTRmMCksIEMoYmQyYjMxYjU2MDgxNDNm
ZSksIEMoYWI3MTdhMTBmMjU1NDg1MyksCisgICAgIEMoMjkzODU3ZjA0ZDE5NGQyMiksIEMoZDUx
YmU4ZmE4NmYyNTRmMCksIEMoMWVlZTM5ZTA3Njg2OTA3ZSksCisgICAgIEMoNjM5MDM5ZmUwZThk
MzA1MiksIEMoZDZlYzE0NzBjZWY5N2ZmKSwgQygzNzBjODJiODYwMDM0ZjBmKSwgQyg3NGUyMTc5
ZCl9LAorICAgIHtDKGIzNzFmNzY4Y2RmNGVkYjkpLCBDKGJkZWYyYWNlNmQyZGUwZjApLCBDKGUw
NWI0MTAwZjdmMWJhZWMpLAorICAgICBDKGI5ZTBkNDE1YjRlYmQ1MzQpLCBDKGM5N2MyYTI3ZWZh
YTMzZDcpLCBDKDU5MWNkYjM1Zjg0ZWY5ZGEpLAorICAgICBDKGE1N2QwMmQwZThlMzc1NmMpLCBD
KGI5ZTBkNDE1YjRlYmQ1MzQpLCBDKGM5N2MyYTI3ZWZhYTMzZDcpLAorICAgICBDKDU5MWNkYjM1
Zjg0ZWY5ZGEpLCBDKGE1N2QwMmQwZThlMzc1NmMpLCBDKDIzZjU1ZjEyZDdjNWM4N2IpLAorICAg
ICBDKDRjN2NhMGZlMjMyMjExMDEpLCBDKGRiYzMwMjA0ODAzMzQ1NjQpLCBDKGQ5ODU5OTJmMzJj
MjM2YjEpLAorICAgICBDKGVlOWJhZTI1KX0sCisgICAge0MoN2ExZDJlOTY5MzRmNjFmKSwgQyhl
YjE3NjBhZTZhZjdkOTYxKSwgQyg4ODdlYjBkYTA2MzAwNWRmKSwKKyAgICAgQygyMjI4ZDY3MjVl
MzFiOGFiKSwgQyg5Yjk4ZjdlNGQwMTQyZTcwKSwgQyhiNmE4YzIxMTViOGUwZmU3KSwKKyAgICAg
QyhiNTkxZTJmNWFiOWI5NGIxKSwgQygyMjI4ZDY3MjVlMzFiOGFiKSwgQyg5Yjk4ZjdlNGQwMTQy
ZTcwKSwKKyAgICAgQyhiNmE4YzIxMTViOGUwZmU3KSwgQyhiNTkxZTJmNWFiOWI5NGIxKSwgQyg2
YzFmZWFhODA2NTMxOGUwKSwKKyAgICAgQyg0ZTdlMmNhMjFjMmU4MWZiKSwgQyhlOWZlNWQ4Y2U3
OTkzYzQ1KSwgQyhlZTQxMWZhMmYxMmNmOGRmKSwKKyAgICAgQyhiNjZlZGYxMCl9LAorICAgIHtD
KDhiZTUzZDQ2NmQ0NzI4ZjIpLCBDKDg2YTVhYzhlMGQ0MTY2NDApLCBDKDk4NGFhNDY0Y2RiNWM4
YmIpLAorICAgICBDKDg3MDQ5ZTY4ZjVkMzhlNTkpLCBDKDdkOGNlNDRlYzZiZDc3NTEpLCBDKGNj
MjhkMDhhYjQxNDgzOWMpLAorICAgICBDKDZjOGYwYmQzNGZlODQzZTMpLCBDKDg3MDQ5ZTY4ZjVk
MzhlNTkpLCBDKDdkOGNlNDRlYzZiZDc3NTEpLAorICAgICBDKGNjMjhkMDhhYjQxNDgzOWMpLCBD
KDZjOGYwYmQzNGZlODQzZTMpLCBDKGI4NDk2ZGNkYzAxZjNlNDcpLAorICAgICBDKDJmMDMxMjVj
MjgyYWMyNiksIEMoODJhODc5N2JhM2Y1ZWYwNyksIEMoN2M5NzdhNGQxMGJmNTJiOCksIEMoZDYy
MDk3MzcpfSwKKyAgICB7Qyg4Mjk2NzdlYjAzYWJmMDQyKSwgQyg0M2NhZDAwNGI2YmMyYzApLCBD
KGYyZjIyNDc1NjgwMzk3MWEpLAorICAgICBDKDk4ZDBkYmY3OTY0ODAxODcpLCBDKGZiY2I1ZjNl
MWJlZjU3NDIpLCBDKDVhZjJhMDQ2M2JmNmU5MjEpLAorICAgICBDKGFkOTU1NWJmMDEyMGIzYTMp
LCBDKDk4ZDBkYmY3OTY0ODAxODcpLCBDKGZiY2I1ZjNlMWJlZjU3NDIpLAorICAgICBDKDVhZjJh
MDQ2M2JmNmU5MjEpLCBDKGFkOTU1NWJmMDEyMGIzYTMpLCBDKDI4M2UzOWIzZGM5OWY0NDcpLAor
ICAgICBDKGJlZGFhMWE0YTAyNTBjMjgpLCBDKDlkNTA1NDY2MjRmZjlhNTcpLCBDKDRhYmFmNTIz
ZDFjMDkwZjYpLCBDKGI5OTRhODgpfSwKKyAgICB7Qyg3NTQ0MzViYWUzNDk2ZmMpLCBDKDU3MDdm
YzAwNmYwOTRkY2YpLCBDKDg5NTFjODZhYjE5ZDhlNDApLAorICAgICBDKDU3YzUyMDhlOGYwMjFh
NzcpLCBDKGY3NjUzZmJiNjljZDkyNzYpLCBDKGE0ODQ0MTBhZjIxZDc1Y2IpLAorICAgICBDKGYx
OWI2ODQ0YjNkNjI3ZTgpLCBDKDU3YzUyMDhlOGYwMjFhNzcpLCBDKGY3NjUzZmJiNjljZDkyNzYp
LAorICAgICBDKGE0ODQ0MTBhZjIxZDc1Y2IpLCBDKGYxOWI2ODQ0YjNkNjI3ZTgpLCBDKGYzNzQw
MGZjM2ZmZDk1MTQpLAorICAgICBDKDM2YWUwZDgyMTczNGVkZmQpLCBDKDVmMzc4MjBhZjFmMWYz
MDYpLCBDKGJlNjM3ZDQwZTZhNWFkMCksIEMoYTA1ZDQzYzApfSwKKyAgICB7QyhmZGE5ODc3ZWE4
ZTM4MDVmKSwgQygzMWU4NjhiNmZmZDUyMWI3KSwgQyhiMDhjOTA2ODFmYjZhMGZkKSwKKyAgICAg
Qyg2ODExMGE3ZjgzZjVkM2ZmKSwgQyg2ZDc3ZTA0NTkwMWI4NWE4KSwgQyg4NGVmNjgxMTEzMDM2
ZDhiKSwKKyAgICAgQygzYjlmOGUzOTI4ZjU2MTYwKSwgQyg2ODExMGE3ZjgzZjVkM2ZmKSwgQyg2
ZDc3ZTA0NTkwMWI4NWE4KSwKKyAgICAgQyg4NGVmNjgxMTEzMDM2ZDhiKSwgQygzYjlmOGUzOTI4
ZjU2MTYwKSwgQyhmYzhiN2Y1NmMxMzA4MzUpLAorICAgICBDKGExMWYzZTgwMDYzOGU4NDEpLCBD
KGQ5NTcyMjY3ZjVjZjI4YzEpLCBDKDc4OTdjODE0OTgwM2YyYWEpLAorICAgICBDKGM3OWY3M2E4
KX0sCisgICAge0MoMmUzNmY1MjNjYThmNWViNSksIEMoOGIyMjkzMmY4OWIyNzUxMyksIEMoMzMx
Y2Q2ZWNiZmFkYzFiYiksCisgICAgIEMoZDFiZmU0ZGYxMmIwNGNiZiksIEMoZjU4YzE3MjQzZmQ2
Mzg0MiksIEMoM2E0NTNjZGJhODBhNjBhZiksCisgICAgIEMoNTczN2IyY2E3NDcwZWE5NSksIEMo
ZDFiZmU0ZGYxMmIwNGNiZiksIEMoZjU4YzE3MjQzZmQ2Mzg0MiksCisgICAgIEMoM2E0NTNjZGJh
ODBhNjBhZiksIEMoNTczN2IyY2E3NDcwZWE5NSksIEMoNTRkNDRhM2Y0NDc3MDMwYyksCisgICAg
IEMoODE2OGUwMmQ0ODY5YWE3ZiksIEMoNzdmMzgzYTE3Nzc4NTU5ZCksIEMoOTVlMTczN2Q3N2Ey
NjhmYyksCisgICAgIEMoYTQ5MGFmZjUpfSwKKyAgICB7QygyMWEzNzhlZjc2ODI4MjA4KSwgQyhh
NWMxMzAzN2ZhODQxZGEyKSwgQyg1MDZkMjJhNTNmYmU5ODEyKSwKKyAgICAgQyg2MWM5Yzk1ZDkx
MDE3ZGE1KSwgQygxNmY3YzgzYmE2OGY1Mjc5KSwgQyg5YzA2MTliMDgwOGQwNWY3KSwKKyAgICAg
Qyg4M2MxMTdjZTRlNmI3MGEzKSwgQyg2MWM5Yzk1ZDkxMDE3ZGE1KSwgQygxNmY3YzgzYmE2OGY1
Mjc5KSwKKyAgICAgQyg5YzA2MTliMDgwOGQwNWY3KSwgQyg4M2MxMTdjZTRlNmI3MGEzKSwgQyhj
ZmI0YzhhZjdmZDAxNDEzKSwKKyAgICAgQyhmZGVmMDRlNjAyZTcyMjk2KSwgQyhlZDYxMjRkMzM3
ODg5YjEpLCBDKDQ5MTljODY3MDdiODMwZGEpLCBDKGRmYWQ2NWI0KX0sCisgICAge0MoY2NkZDU2
MDAwNTRiMTZjYSksIEMoZjc4ODQ2ZTg0MjA0Y2I3YiksIEMoMWY5ZmFlYzgyYzI0ZWFjOSksCisg
ICAgIEMoNTg2MzQwMDRjN2IyZDE5YSksIEMoMjRiYjVmNTFlZDNiOTA3MyksIEMoNDY0MDlkZTAx
ODAzM2QwMCksCisgICAgIEMoNGE5ODA1ZWVkNWFjODAyZSksIEMoNTg2MzQwMDRjN2IyZDE5YSks
IEMoMjRiYjVmNTFlZDNiOTA3MyksCisgICAgIEMoNDY0MDlkZTAxODAzM2QwMCksIEMoNGE5ODA1
ZWVkNWFjODAyZSksIEMoZTE4ZGU4ZGIzMDZiYWY4MiksCisgICAgIEMoNDZiYmY3NWYxZmEwMjVm
ZiksIEMoNWZhZjJmYjA5YmUwOTQ4NyksIEMoM2ZiYzYyYmQ0ZTU1OGZiMyksIEMoMWQwN2RmYil9
LAorICAgIHtDKDc4NTQ0NjhmNGUwY2FiZDApLCBDKDNhM2Y2YjRmMDk4ZDA2OTIpLCBDKGFlMjQy
M2VjNzc5OWQzMGQpLAorICAgICBDKDI5YzM1MjllYjE2NWVlYmEpLCBDKDQ0M2RlMzcwM2I2NTdj
MzUpLCBDKDY2YWNiY2UzMWFlMWJjOGQpLAorICAgICBDKDFhY2M5OWVmZmUxZDU0N2UpLCBDKDI5
YzM1MjllYjE2NWVlYmEpLCBDKDQ0M2RlMzcwM2I2NTdjMzUpLAorICAgICBDKDY2YWNiY2UzMWFl
MWJjOGQpLCBDKDFhY2M5OWVmZmUxZDU0N2UpLCBDKGNmMDdmOGE1NzkwNjU3M2QpLAorICAgICBD
KDMxYmFmYjBiYmI5YTg2ZTcpLCBDKDQwYzY5NDkyNzAyYTkzNDYpLCBDKDdkZjYxZmRhYTBiODU4
YWYpLAorICAgICBDKDQxNmRmOWEwKX0sCisgICAge0MoN2Y4OGRiNTM0NmQ4Zjk5NyksIEMoODhl
YWM5YWFjYzY1Mzc5OCksIEMoNjhhNGQwMjk1ZjhlZWZhMSksCisgICAgIEMoYWU1OWNhODZmNGMz
MzIzZCksIEMoMjU5MDZjMDk5MDZkNWM0YyksIEMoOGRkMmFhMGMwYTY1ODRhZSksCisgICAgIEMo
MjMyYTdkOTZiMzhmNDBlOSksIEMoYWU1OWNhODZmNGMzMzIzZCksIEMoMjU5MDZjMDk5MDZkNWM0
YyksCisgICAgIEMoOGRkMmFhMGMwYTY1ODRhZSksIEMoMjMyYTdkOTZiMzhmNDBlOSksIEMoODk4
NmVlMDBhMmVkMDA0MiksCisgICAgIEMoYzQ5YWU3ZTQyOGM4YTdkMSksIEMoYjdkZDgyODA3MTNh
YzljMiksIEMoZTAxODcyMGFlZDFlYmMyOCksCisgICAgIEMoMWY4ZmI5Y2MpfSwKKyAgICB7Qyhi
YjNmYjVmYjAxZDYwZmNmKSwgQygxYjdjYzA4NDdhMjE1ZWI2KSwgQygxMjQ2Yzk5NDQzNzk5MGEx
KSwKKyAgICAgQyhkNGVkYzk1NGMwN2NkOGYzKSwgQygyMjRmNDdlN2MwMGEzMGFiKSwgQyhkNWFk
N2FkN2Y0MWVmMGM2KSwKKyAgICAgQyg1OWUwODkyODFkODY5ZmQ3KSwgQyhkNGVkYzk1NGMwN2Nk
OGYzKSwgQygyMjRmNDdlN2MwMGEzMGFiKSwKKyAgICAgQyhkNWFkN2FkN2Y0MWVmMGM2KSwgQyg1
OWUwODkyODFkODY5ZmQ3KSwgQyhmMjkzNDBkMDdhMTRiNmYxKSwKKyAgICAgQyhjODdjNWVmNzZk
OWM0ZWYzKSwgQyg0NjMxMTg3OTQxOTNhOWEpLCBDKDI5MjJkY2IwNTQwZjBkYmMpLCBDKDdhYmY0
OGUzKX0sCisgICAge0MoMmU3ODNlMTc2MWFjZDg0ZCksIEMoMzkxNTgwNDJiYWM5NzVhMCksIEMo
MWNkMjFjNWE4MDcxMTg4ZCksCisgICAgIEMoYjFiN2VjNDRmOTMwMjE3NiksIEMoNWNiNDc2NDUw
ZGMwYzI5NyksIEMoZGM1ZWY2NTI1MjFlZjZhMiksCisgICAgIEMoM2NjNzlhOWUzMzRlMWY4NCks
IEMoYjFiN2VjNDRmOTMwMjE3NiksIEMoNWNiNDc2NDUwZGMwYzI5NyksCisgICAgIEMoZGM1ZWY2
NTI1MjFlZjZhMiksIEMoM2NjNzlhOWUzMzRlMWY4NCksIEMoNzY5ZTJhMjgzZGJjYzY1MSksCisg
ICAgIEMoOWYyNGIxMDVjODUxMWQzZiksIEMoYzMxYzE1NTc1ZGUyZjI3ZSksIEMoZWNmZWNmMzJj
M2FlMmQ2NiksCisgICAgIEMoZGVhNGUzZGQpfSwKKyAgICB7QygzOTIwNTgyNTFjZjIyYWNjKSwg
Qyg5NDRlYzQ0NzVlYWQ0NjIwKSwgQyhiMzMwYTEwYjVjYjk0MTY2KSwKKyAgICAgQyg1NGJjOWJl
ZTdjYmUxNzY3KSwgQyg0ODU4MjBiZGJlNDQyNDMxKSwgQyg1NGQ2MTIwZWEyOTcyZTkwKSwKKyAg
ICAgQyhmNDM3YTAzNDFmMjliNzJhKSwgQyg1NGJjOWJlZTdjYmUxNzY3KSwgQyg0ODU4MjBiZGJl
NDQyNDMxKSwKKyAgICAgQyg1NGQ2MTIwZWEyOTcyZTkwKSwgQyhmNDM3YTAzNDFmMjliNzJhKSwg
Qyg4ZjMwODg1Yzc4NGQ1NzA0KSwKKyAgICAgQyhhYTk1Mzc2YjE2Yzc5MDZhKSwgQyhlODI2OTI4
Y2ZhZjkzZGMzKSwgQygyMGU4ZjU0ZDFjMTZkN2Q4KSwKKyAgICAgQyhjNjA2NGYyMil9LAorICAg
IHtDKGFkZjVjMWU1ZDY0MTk5NDcpLCBDKDJhOTc0N2JjNjU5ZDI4YWEpLCBDKDk1YzViOGNiMWY1
ZDYyYyksCisgICAgIEMoODA5NzNlYTUzMmIwZjMxMCksIEMoYTQ3MTgyOWFhOWMxN2RkOSksIEMo
YzJmZjM0NzkzOTQ4MDRhYiksCisgICAgIEMoNmJmNDRmODYwNjc1MzYzNiksIEMoODA5NzNlYTUz
MmIwZjMxMCksIEMoYTQ3MTgyOWFhOWMxN2RkOSksCisgICAgIEMoYzJmZjM0NzkzOTQ4MDRhYiks
IEMoNmJmNDRmODYwNjc1MzYzNiksIEMoNTE4NGQyOTczZTZkZDgyNyksCisgICAgIEMoMTIxYjk2
MzY5YTMzMmQ5YSksIEMoNWMyNWQzNDc1YWI2OWU1MCksIEMoMjZkMjk2MWQ2Mjg4NDE2OCksCisg
ICAgIEMoNzQzYmVkOWMpfSwKKyAgICB7Qyg2YmMxZGIyYzJiZWU1YWJhKSwgQyhlNjNiMGVkNjM1
MzA3Mzk4KSwgQyg3YjJlY2ExMTFmMzBkYmJjKSwKKyAgICAgQygyMzBkMmIzZTQ3ZjA5ODMwKSwg
QyhlYzg2MjRhODIxYzFjYWY0KSwgQyhlYTZlYzQxMWNkYmYxY2IxKSwKKyAgICAgQyg1ZjM4YWU4
MmFmMzY0ZTI3KSwgQygyMzBkMmIzZTQ3ZjA5ODMwKSwgQyhlYzg2MjRhODIxYzFjYWY0KSwKKyAg
ICAgQyhlYTZlYzQxMWNkYmYxY2IxKSwgQyg1ZjM4YWU4MmFmMzY0ZTI3KSwgQyhhNTE5ZWY1MTVl
YTcxODdjKSwKKyAgICAgQyg2YmFkNWVmYTdlYmFlMDVmKSwgQyg3NDhhYmFjYjExYTc0YTYzKSwg
QyhhMjhlZWY5NjNkMTM5NmViKSwKKyAgICAgQyhmY2UyNTRkNSl9LAorICAgIHtDKGIwMGY4OTgy
MjllZmE1MDgpLCBDKDgzYjc1OTBhZDdmNjk4NWMpLCBDKDI3ODBlNzBhMDU5MmU0MWQpLAorICAg
ICBDKDcxMjI0MTNiZGJjOTQwMzUpLCBDKGU3ZjkwZmFlMzNiZjc3NjMpLCBDKDRiNmJkMGZiMzBi
MTIzODcpLAorICAgICBDKDU1NzM1OWMwYzQ0ZjQ4Y2EpLCBDKDcxMjI0MTNiZGJjOTQwMzUpLCBD
KGU3ZjkwZmFlMzNiZjc3NjMpLAorICAgICBDKDRiNmJkMGZiMzBiMTIzODcpLCBDKDU1NzM1OWMw
YzQ0ZjQ4Y2EpLCBDKGQ1NjU2YzNkNmJjNWYwZCksCisgICAgIEMoOTgzZmY4ZTVlNzg0ZGE5OSks
IEMoNjI4NDc5NjcxYjQ0NWJmKSwgQyhlMTc5YTFlMjdjZTY4ZjVkKSwgQyhlNDdlYzlkMSl9LAor
ICAgIHtDKGI1NmViNzY5Y2UwZDlhOGMpLCBDKGNlMTk2MTE3YmZiY2FmMDQpLCBDKGIyNmMzYzM3
OTdkNjYxNjUpLAorICAgICBDKDVlZDEyMzM4ZjYzMGFiNzYpLCBDKGZhYjE5ZmNiMzE5MTE2ZCks
IEMoMTY3ZjVmNDJiNTIxNzI0YiksCisgICAgIEMoYzRhYTU2YzQwOTU2OGQ3NCksIEMoNWVkMTIz
MzhmNjMwYWI3NiksIEMoZmFiMTlmY2IzMTkxMTZkKSwKKyAgICAgQygxNjdmNWY0MmI1MjE3MjRi
KSwgQyhjNGFhNTZjNDA5NTY4ZDc0KSwgQyg3NWZmZjRiNDJmOGU5Nzc4KSwKKyAgICAgQyg5NDIx
OGY5NDcxMGMxZWEzKSwgQyhiN2IwNWVmYjczOGIwNmE2KSwgQyg4M2ZmZjJkZWFiZjljZDMpLCBD
KDMzNGExNDVjKX0sCisgICAge0MoNzBjMDYzNzY3NWI5NDE1MCksIEMoMjU5ZTE2NjkzMDViMGEx
NSksIEMoNDZlMWRkOWZkMzg3YTU4ZCksCisgICAgIEMoZmNhNGU1YmM5MjkyNzg4ZSksIEMoY2Q1
MDlkYzFmYWNjZTQxYyksIEMoYmJiYTU3NWE1OWQ4MmZlKSwKKyAgICAgQyg0ZTJlNzFjMTViNDVk
NGQzKSwgQyhmY2E0ZTViYzkyOTI3ODhlKSwgQyhjZDUwOWRjMWZhY2NlNDFjKSwKKyAgICAgQyhi
YmJhNTc1YTU5ZDgyZmUpLCBDKDRlMmU3MWMxNWI0NWQ0ZDMpLCBDKDVkYzU0NTgyZWFkOTk5Yyks
CisgICAgIEMoNzI2MTJkMTU3MTk2M2M2ZiksIEMoMzAzMThhOWQyZDNkMTgyOSksIEMoNzg1ZGQw
MGY0Y2M5YzlhMCksCisgICAgIEMoYWRlYzFlM2MpfSwKKyAgICB7Qyg3NGMwYjhhNjgyMWZhYWZl
KSwgQyhhYmFjMzlkNzQ5MTM3MGU3KSwgQyhmYWYwYjJhNDhhNGU2YWVkKSwKKyAgICAgQyg5Njdl
OTcwZGY5NjczZDJhKSwgQyhkNDY1MjQ3Y2ZmYTQxNWMwKSwgQygzM2ExZGYwY2ExMTA3NzIyKSwK
KyAgICAgQyg0OWZjMmExMGFkY2U0YTMyKSwgQyg5NjdlOTcwZGY5NjczZDJhKSwgQyhkNDY1MjQ3
Y2ZmYTQxNWMwKSwKKyAgICAgQygzM2ExZGYwY2ExMTA3NzIyKSwgQyg0OWZjMmExMGFkY2U0YTMy
KSwgQyhjNTcwN2UwNzlhMjg0MzA4KSwKKyAgICAgQyg1NzMwMjgyNjY2MzVkZGE2KSwgQyhmNzg2
ZjVlZWU2MTI3ZmEwKSwgQyhiMzBkNzljZWJmYjUxMjY2KSwKKyAgICAgQyhmNmE5ZmJmOCl9LAor
ICAgIHtDKDVmYjVlNDhhYzdiN2ZhNGYpLCBDKGE5NjE3MGYwOGY1YWNiYzcpLCBDKGJiZjVjNjNk
NGY1MmExZTUpLAorICAgICBDKDZjYzA5ZTYwNzAwNTYzZTkpLCBDKGQxOGYyMzIyMWU5NjQ3OTEp
LCBDKGZmYzIzZWVlZjdhZjI2ZWIpLAorICAgICBDKDY5M2E5NTRhMzYyMmEzMTUpLCBDKDgxNTMw
OGEzMmE5YjBkYWYpLCBDKGVmYjJhYjI3YmY2ZmQwYmQpLAorICAgICBDKDlmMWZmYzA5ODYxMTEx
MTgpLCBDKGY5YTNhYTE3NzhlYTM5ODUpLCBDKDY5OGZlNTRiMmI5MzkzM2IpLAorICAgICBDKGRh
Y2MyYjI4NDA0ZDBmMTApLCBDKDgxNTMwOGEzMmE5YjBkYWYpLCBDKGVmYjJhYjI3YmY2ZmQwYmQp
LAorICAgICBDKDUzOTgyMTBjKX0sCit9OworCit2b2lkIFRlc3RVbmNoYW5naW5nKGNvbnN0IHVp
bnQ2NF90KiBleHBlY3RlZCwgaW50IG9mZnNldCwgaW50IGxlbikgeworICBjb25zdCB1aW50MTI4
IHUgPSBDaXR5SGFzaDEyOChkYXRhICsgb2Zmc2V0LCBsZW4pOworICBjb25zdCB1aW50MTI4IHYg
PSBDaXR5SGFzaDEyOFdpdGhTZWVkKGRhdGEgKyBvZmZzZXQsIGxlbiwga1NlZWQxMjgpOworICBF
WFBFQ1RfRVEoZXhwZWN0ZWRbMF0sIENpdHlIYXNoNjQoZGF0YSArIG9mZnNldCwgbGVuKSk7Cisg
IEVYUEVDVF9FUShleHBlY3RlZFsxNV0sIENpdHlIYXNoMzIoZGF0YSArIG9mZnNldCwgbGVuKSk7
CisgIEVYUEVDVF9FUShleHBlY3RlZFsxXSwgQ2l0eUhhc2g2NFdpdGhTZWVkKGRhdGEgKyBvZmZz
ZXQsIGxlbiwga1NlZWQwKSk7CisgIEVYUEVDVF9FUShleHBlY3RlZFsyXSwKKyAgICAgICAgICAg
IENpdHlIYXNoNjRXaXRoU2VlZHMoZGF0YSArIG9mZnNldCwgbGVuLCBrU2VlZDAsIGtTZWVkMSkp
OworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbM10sIFVpbnQxMjhMb3c2NCh1KSk7CisgIEVYUEVDVF9F
UShleHBlY3RlZFs0XSwgVWludDEyOEhpZ2g2NCh1KSk7CisgIEVYUEVDVF9FUShleHBlY3RlZFs1
XSwgVWludDEyOExvdzY0KHYpKTsKKyAgRVhQRUNUX0VRKGV4cGVjdGVkWzZdLCBVaW50MTI4SGln
aDY0KHYpKTsKKyNpZmRlZiBfX1NTRTRfMl9fCisgIGNvbnN0IHVpbnQxMjggeSA9IENpdHlIYXNo
Q3JjMTI4KGRhdGEgKyBvZmZzZXQsIGxlbik7CisgIGNvbnN0IHVpbnQxMjggeiA9IENpdHlIYXNo
Q3JjMTI4V2l0aFNlZWQoZGF0YSArIG9mZnNldCwgbGVuLCBrU2VlZDEyOCk7CisgIHVpbnQ2NF90
IGNyYzI1Nl9yZXN1bHRzWzRdOworICBDaXR5SGFzaENyYzI1NihkYXRhICsgb2Zmc2V0LCBsZW4s
IGNyYzI1Nl9yZXN1bHRzKTsKKyAgRVhQRUNUX0VRKGV4cGVjdGVkWzddLCBVaW50MTI4TG93NjQo
eSkpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbOF0sIFVpbnQxMjhIaWdoNjQoeSkpOworICBFWFBF
Q1RfRVEoZXhwZWN0ZWRbOV0sIFVpbnQxMjhMb3c2NCh6KSk7CisgIEVYUEVDVF9FUShleHBlY3Rl
ZFsxMF0sIFVpbnQxMjhIaWdoNjQoeikpOworICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykg
eworICAgIEVYUEVDVF9FUShleHBlY3RlZFsxMSArIGldLCBjcmMyNTZfcmVzdWx0c1tpXSk7Cisg
IH0KKyNlbmRpZgorfQorCitURVNUKENpdHlIYXNoVGVzdCwgVW5jaGFuZ2luZykgeworICBzZXR1
cCgpOworICBpbnQgaSA9IDA7CisgIGZvciAoOyBpIDwga1Rlc3RTaXplIC0gMTsgaSsrKSB7Cisg
ICAgVGVzdFVuY2hhbmdpbmcodGVzdGRhdGFbaV0sIGkgKiBpLCBpKTsKKyAgfQorICBUZXN0VW5j
aGFuZ2luZyh0ZXN0ZGF0YVtpXSwgMCwga0RhdGFTaXplKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IGhhc2hfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9o
YXNoL2ludGVybmFsL2hhc2guY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2hhc2guY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGJmNjQwOTZlN2VhYTNiMzQ2ZWQyZjJhMjJkZjJjZDJhOGU3MTU3NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5jYwpAQCAtMCwwICsxLDIzIEBACisv
LyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9o
YXNoL2ludGVybmFsL2hhc2guaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGhhc2hf
aW50ZXJuYWwgeworCitBQlNMX0NPTlNUX0lOSVQgY29uc3Qgdm9pZCogY29uc3QgQ2l0eUhhc2hT
dGF0ZTo6a1NlZWQgPSAma1NlZWQ7CisKK30gIC8vIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsCit9
ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNo
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2hhc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODIxN2QyZmU3NjAw
MDNjYjgzZThhMzE3YTU5MTg1ZTgyYTczMGY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFz
aC9pbnRlcm5hbC9oYXNoLmgKQEAgLTAsMCArMSw4ODcgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRo
ZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpbGU6
IGhhc2guaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisjaWZuZGVmIEFCU0xfSEFTSF9J
TlRFUk5BTF9IQVNIX0hfCisjZGVmaW5lIEFCU0xfSEFTSF9JTlRFUk5BTF9IQVNIX0hfCisKKyNp
bmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Y21hdGg+Cisj
aW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxmb3J3YXJkX2xp
c3Q+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRl
IDxsaW1pdHM+CisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHVwbGU+
CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvZW5kaWFuLmgiCisjaW5jbHVk
ZSAiYWJzbC9iYXNlL3BvcnQuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9maXhlZF9hcnJh
eS5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgorI2luY2x1ZGUgImFic2wv
bnVtZXJpYy9pbnQxMjguaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIK
KyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy92
YXJpYW50LmgiCisjaW5jbHVkZSAiYWJzbC91dGlsaXR5L3V0aWxpdHkuaCIKKyNpbmNsdWRlICJh
YnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2Ug
aGFzaF9pbnRlcm5hbCB7CisKKy8vIEhhc2hTdGF0ZUJhc2UKKy8vCisvLyBBIGhhc2ggc3RhdGUg
b2JqZWN0IHJlcHJlc2VudHMgYW4gaW50ZXJtZWRpYXRlIHN0YXRlIGluIHRoZSBjb21wdXRhdGlv
bgorLy8gb2YgYW4gdW5zcGVjaWZpZWQgaGFzaCBhbGdvcml0aG0uIGBIYXNoU3RhdGVCYXNlYCBw
cm92aWRlcyBhIENSVFAgc3R5bGUKKy8vIGJhc2UgY2xhc3MgZm9yIGhhc2ggc3RhdGUgaW1wbGVt
ZW50YXRpb25zLiBEZXZlbG9wZXJzIGFkZGluZyB0eXBlIHN1cHBvcnQKKy8vIGZvciBgYWJzbDo6
SGFzaGAgc2hvdWxkIG5vdCByZWx5IG9uIGFueSBwYXJ0cyBvZiB0aGUgc3RhdGUgb2JqZWN0IG90
aGVyIHRoYW4KKy8vIHRoZSBmb2xsb3dpbmcgbWVtYmVyIGZ1bmN0aW9uczoKKy8vCisvLyAgICog
SGFzaFN0YXRlQmFzZTo6Y29tYmluZSgpCisvLyAgICogSGFzaFN0YXRlQmFzZTo6Y29tYmluZV9j
b250aWd1b3VzKCkKKy8vCisvLyBBIGRlcml2ZWQgaGFzaCBzdGF0ZSBjbGFzcyBvZiB0eXBlIGBI
YCBtdXN0IHByb3ZpZGUgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uCisvLyB3aXRoIGEgc2lnbmF0
dXJlIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzoKKy8vCisvLyAgICBgc3RhdGljIEggY29tYmlu
ZV9jb250aWd1b3VzKEggc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpYC4KKy8v
CisvLyBgSGFzaFN0YXRlQmFzZWAgd2lsbCBwcm92aWRlIGEgY29tcGxldGUgaW1wbGVtZW50YXRp
b25zIGZvciBhIGhhc2ggc3RhdGUKKy8vIG9iamVjdCBpbiB0ZXJtcyBvZiB0aGlzIG1ldGhvZC4K
Ky8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8gVXNlIENSVFAgdG8gZGVmaW5lIHlvdXIgZGVy
aXZlZCBjbGFzcy4KKy8vICAgc3RydWN0IE15SGFzaFN0YXRlIDogSGFzaFN0YXRlQmFzZTxNeUhh
c2hTdGF0ZT4geworLy8gICAgICAgc3RhdGljIEggY29tYmluZV9jb250aWd1b3VzKEggc3RhdGUs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpOworLy8gICAgICAgdXNpbmcgTXlIYXNoU3Rh
dGU6Okhhc2hTdGF0ZUJhc2U6OmNvbWJpbmU7CisvLyAgICAgICB1c2luZyBNeUhhc2hTdGF0ZTo6
SGFzaFN0YXRlQmFzZTo6Y29tYmluZV9jb250aWd1b3VzOworLy8gICB9OwordGVtcGxhdGUgPHR5
cGVuYW1lIEg+CitjbGFzcyBIYXNoU3RhdGVCYXNlIHsKKyBwdWJsaWM6CisgIC8vIEhhc2hTdGF0
ZUJhc2U6OmNvbWJpbmUoKQorICAvLworICAvLyBDb21iaW5lcyBhbiBhcmJpdHJhcnkgbnVtYmVy
IG9mIHZhbHVlcyBpbnRvIGEgaGFzaCBzdGF0ZSwgcmV0dXJuaW5nIHRoZQorICAvLyB1cGRhdGVk
IHN0YXRlLgorICAvLworICAvLyBFYWNoIG9mIHRoZSB2YWx1ZSB0eXBlcyBgVGAgbXVzdCBiZSBz
ZXBhcmF0ZWx5IGhhc2hhYmxlIGJ5IHRoZSBBYnNlaWwKKyAgLy8gaGFzaGluZyBmcmFtZXdvcmsu
CisgIC8vCisgIC8vIE5PVEU6CisgIC8vCisgIC8vICAgc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6
bW92ZShzdGF0ZSksIHZhbHVlMSwgdmFsdWUyLCB2YWx1ZTMpOworICAvLworICAvLyBpcyBndWFy
YW50ZWVkIHRvIHByb2R1Y2UgdGhlIHNhbWUgaGFzaCBleHBhbnNpb24gYXM6CisgIC8vCisgIC8v
ICAgc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMSk7CisgIC8vICAg
c3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMik7CisgIC8vICAgc3Rh
dGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMyk7CisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBUcz4KKyAgc3RhdGljIEggY29tYmluZShIIHN0YXRlLCBj
b25zdCBUJiB2YWx1ZSwgY29uc3QgVHMmLi4uIHZhbHVlcyk7CisgIHN0YXRpYyBIIGNvbWJpbmUo
SCBzdGF0ZSkgeyByZXR1cm4gc3RhdGU7IH0KKworICAvLyBIYXNoU3RhdGVCYXNlOjpjb21iaW5l
X2NvbnRpZ3VvdXMoKQorICAvLworICAvLyBDb21iaW5lcyBhIGNvbnRpZ3VvdXMgYXJyYXkgb2Yg
YHNpemVgIGVsZW1lbnRzIGludG8gYSBoYXNoIHN0YXRlLCByZXR1cm5pbmcKKyAgLy8gdGhlIHVw
ZGF0ZWQgc3RhdGUuCisgIC8vCisgIC8vIE5PVEU6CisgIC8vCisgIC8vICAgc3RhdGUgPSBIOjpj
b21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3ZlKHN0YXRlKSwgZGF0YSwgc2l6ZSk7CisgIC8vCisg
IC8vIGlzIE5PVCBndWFyYW50ZWVkIHRvIHByb2R1Y2UgdGhlIHNhbWUgaGFzaCBleHBhbnNpb24g
YXMgYSBmb3ItbG9vcCAoaXQgbWF5CisgIC8vIHBlcmZvcm0gaW50ZXJuYWwgb3B0aW1pemF0aW9u
cykuICBJZiB5b3UgbmVlZCB0aGlzIGd1YXJhbnRlZSwgdXNlIHRoZQorICAvLyBmb3ItbG9vcCBp
bnN0ZWFkLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIEggY29tYmluZV9jb250
aWd1b3VzKEggc3RhdGUsIGNvbnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKTsKK307CisKKy8vIGlz
X3VuaXF1ZWx5X3JlcHJlc2VudGVkCisvLworLy8gYGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkPFQ+
YCBpcyBhIHRyYWl0IGNsYXNzIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgYFRgCisvLyBpcyB1bmlx
dWVseSByZXByZXNlbnRlZC4KKy8vCisvLyBBIHR5cGUgaXMgInVuaXF1ZWx5IHJlcHJlc2VudGVk
IiBpZiB0d28gZXF1YWwgdmFsdWVzIG9mIHRoYXQgdHlwZSBhcmUKKy8vIGd1YXJhbnRlZWQgdG8g
aGF2ZSB0aGUgc2FtZSBieXRlcyBpbiB0aGVpciB1bmRlcmx5aW5nIHN0b3JhZ2UuIEluIG90aGVy
CisvLyB3b3JkcywgaWYgYGEgPT0gYmAsIHRoZW4gYG1lbWNtcCgmYSwgJmIsIHNpemVvZihUKSlg
IGlzIGd1YXJhbnRlZWQgdG8gYmUKKy8vIHplcm8uIFRoaXMgcHJvcGVydHkgY2Fubm90IGJlIGRl
dGVjdGVkIGF1dG9tYXRpY2FsbHksIHNvIHRoaXMgdHJhaXQgaXMgZmFsc2UKKy8vIGJ5IGRlZmF1
bHQsIGJ1dCBjYW4gYmUgc3BlY2lhbGl6ZWQgYnkgdHlwZXMgdGhhdCB3aXNoIHRvIGFzc2VydCB0
aGF0IHRoZXkgYXJlCisvLyB1bmlxdWVseSByZXByZXNlbnRlZC4gVGhpcyBtYWtlcyB0aGVtIGVs
aWdpYmxlIGZvciBjZXJ0YWluIG9wdGltaXphdGlvbnMuCisvLworLy8gSWYgeW91IGhhdmUgYW55
IGRvdWJ0IHdoYXRzb2V2ZXIsIGRvIG5vdCBzcGVjaWFsaXplIHRoaXMgdGVtcGxhdGUuCisvLyBU
aGUgZGVmYXVsdCBpcyBjb21wbGV0ZWx5IHNhZmUsIGFuZCBtZXJlbHkgZGlzYWJsZXMgc29tZSBv
cHRpbWl6YXRpb25zCisvLyB0aGF0IHdpbGwgbm90IG1hdHRlciBmb3IgbW9zdCB0eXBlcy4gU3Bl
Y2lhbGl6aW5nIHRoaXMgdGVtcGxhdGUsCisvLyBvbiB0aGUgb3RoZXIgaGFuZCwgY2FuIGJlIHZl
cnkgaGF6YXJkb3VzLgorLy8KKy8vIFRvIGJlIHVuaXF1ZWx5IHJlcHJlc2VudGVkLCBhIHR5cGUg
bXVzdCBub3QgaGF2ZSBtdWx0aXBsZSB3YXlzIG9mCisvLyByZXByZXNlbnRpbmcgdGhlIHNhbWUg
dmFsdWU7IGZvciBleGFtcGxlLCBmbG9hdCBhbmQgZG91YmxlIGFyZSBub3QKKy8vIHVuaXF1ZWx5
IHJlcHJlc2VudGVkLCBiZWNhdXNlIHRoZXkgaGF2ZSBkaXN0aW5jdCByZXByZXNlbnRhdGlvbnMg
Zm9yCisvLyArMCBhbmQgLTAuIEZ1cnRoZXJtb3JlLCB0aGUgdHlwZSdzIGJ5dGUgcmVwcmVzZW50
YXRpb24gbXVzdCBjb25zaXN0CisvLyBzb2xlbHkgb2YgdXNlci1jb250cm9sbGVkIGRhdGEsIHdp
dGggbm8gcGFkZGluZyBiaXRzIGFuZCBubyBjb21waWxlci0KKy8vIGNvbnRyb2xsZWQgZGF0YSBz
dWNoIGFzIHZwdHJzIG9yIHNhbml0aXplciBtZXRhZGF0YS4gVGhpcyBpcyB1c3VhbGx5CisvLyB2
ZXJ5IGRpZmZpY3VsdCB0byBndWFyYW50ZWUsIGJlY2F1c2UgaW4gbW9zdCBjYXNlcyB0aGUgY29t
cGlsZXIgY2FuCisvLyBpbnNlcnQgZGF0YSBhbmQgcGFkZGluZyBiaXRzIGF0IGl0cyBvd24gZGlz
Y3JldGlvbi4KKy8vCisvLyBJZiB5b3Ugc3BlY2lhbGl6ZSB0aGlzIHRlbXBsYXRlIGZvciBhIHR5
cGUgYFRgLCB5b3UgbXVzdCBkbyBzbyBpbiB0aGUgZmlsZQorLy8gdGhhdCBkZWZpbmVzIHRoYXQg
dHlwZSAob3IgaW4gdGhpcyBmaWxlKS4gSWYgeW91IGRlZmluZSB0aGF0IHNwZWNpYWxpemF0aW9u
CisvLyBhbnl3aGVyZSBlbHNlLCBgaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8VD5gIGNvdWxkIGhh
dmUgZGlmZmVyZW50IG1lYW5pbmdzCisvLyBpbiBkaWZmZXJlbnQgcGxhY2VzLgorLy8KKy8vIFRo
ZSBFbmFibGUgcGFyYW1ldGVyIGlzIG1lYW5pbmdsZXNzOyBpdCBpcyBwcm92aWRlZCBhcyBhIGNv
bnZlbmllbmNlLAorLy8gdG8gc3VwcG9ydCBjZXJ0YWluIFNGSU5BRSB0ZWNobmlxdWVzIHdoZW4g
ZGVmaW5pbmcgc3BlY2lhbGl6YXRpb25zLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEVuYWJsZSA9IHZvaWQ+CitzdHJ1Y3QgaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQgOiBzdGQ6OmZh
bHNlX3R5cGUge307CisKKy8vIGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkPHVuc2lnbmVkIGNoYXI+
CisvLworLy8gdW5zaWduZWQgY2hhciBpcyBhIHN5bm9ueW0gZm9yICJieXRlIiwgc28gaXQgaXMg
Z3VhcmFudGVlZCB0byBiZQorLy8gdW5pcXVlbHkgcmVwcmVzZW50ZWQuCit0ZW1wbGF0ZSA8Pgor
c3RydWN0IGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkPHVuc2lnbmVkIGNoYXI+IDogc3RkOjp0cnVl
X3R5cGUge307CisKKy8vIGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkIGZvciBub24tc3RhbmRhcmQg
aW50ZWdyYWwgdHlwZXMKKy8vCisvLyBJbnRlZ3JhbCB0eXBlcyBvdGhlciB0aGFuIGJvb2wgc2hv
dWxkIGJlIHVuaXF1ZWx5IHJlcHJlc2VudGVkIG9uIGFueQorLy8gcGxhdGZvcm0gdGhhdCB0aGlz
IHdpbGwgcGxhdXNpYmx5IGJlIHBvcnRlZCB0by4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRlZ3Jh
bD4KK3N0cnVjdCBpc191bmlxdWVseV9yZXByZXNlbnRlZDwKKyAgICBJbnRlZ3JhbCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxJbnRlZ3JhbD46OnZhbHVlPjo6dHlw
ZT4KKyAgICA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCisvLyBpc191bmlxdWVseV9yZXByZXNlbnRl
ZDxib29sPgorLy8KKy8vCit0ZW1wbGF0ZSA8Pgorc3RydWN0IGlzX3VuaXF1ZWx5X3JlcHJlc2Vu
dGVkPGJvb2w+IDogc3RkOjpmYWxzZV90eXBlIHt9OworCisvLyBoYXNoX2J5dGVzKCkKKy8vCisv
LyBDb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNvbWJpbmVzIGBoYXNoX3N0YXRlYCB3aXRoIHRo
ZSBieXRlIHJlcHJlc2VudGF0aW9uCisvLyBvZiBgdmFsdWVgLgordGVtcGxhdGUgPHR5cGVuYW1l
IEgsIHR5cGVuYW1lIFQ+CitIIGhhc2hfYnl0ZXMoSCBoYXNoX3N0YXRlLCBjb25zdCBUJiB2YWx1
ZSkgeworICBjb25zdCB1bnNpZ25lZCBjaGFyKiBzdGFydCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KCZ2YWx1ZSk7CisgIHJldHVybiBIOjpjb21iaW5lX2NvbnRpZ3Vv
dXMoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBzdGFydCwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsSGFzaFZhbHVlIGZvciBCYXNpYyBUeXBlcwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gTm90ZTogRGVmYXVsdCBgQWJzbEhhc2hWYWx1
ZWAgaW1wbGVtZW50YXRpb25zIGxpdmUgaW4gYGhhc2hfaW50ZXJuYWxgLiBUaGlzCisvLyBhbGxv
d3MgdXMgdG8gYmxvY2sgbGV4aWNhbCBzY29wZSBsb29rdXAgd2hlbiBkb2luZyBhbiB1bnF1YWxp
ZmllZCBjYWxsIHRvCisvLyBgQWJzbEhhc2hWYWx1ZWAgYmVsb3cuIFVzZXItZGVmaW5lZCBpbXBs
ZW1lbnRhdGlvbnMgb2YgYEFic2xIYXNoVmFsdWVgIGNhbgorLy8gb25seSBiZSBmb3VuZCB2aWEg
QURMLgorCisvLyBBYnNsSGFzaFZhbHVlKCkgZm9yIGhhc2hpbmcgYm9vbCB2YWx1ZXMKKy8vCisv
LyBXZSB1c2UgU0ZJTkFFIHRvIGVuc3VyZSB0aGF0IHRoaXMgb3ZlcmxvYWQgb25seSBhY2NlcHRz
IGJvb2wsIG5vdCB0eXBlcyB0aGF0CisvLyBhcmUgY29udmVydGlibGUgdG8gYm9vbC4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBCPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19zYW1lPEIsIGJvb2w+Ojp2YWx1ZSwgSD46OnR5cGUgQWJzbEhhc2hWYWx1ZSgKKyAgICBI
IGhhc2hfc3RhdGUsIEIgdmFsdWUpIHsKKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhh
c2hfc3RhdGUpLAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Pih2YWx1ZSA/IDEgOiAwKSk7Cit9CisKKy8vIEFic2xIYXNoVmFsdWUoKSBmb3IgaGFzaGluZyBl
bnVtIHZhbHVlcwordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIEVudW0+Cit0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2VudW08RW51bT46OnZhbHVlLCBIPjo6dHlwZSBBYnNs
SGFzaFZhbHVlKAorICAgIEggaGFzaF9zdGF0ZSwgRW51bSBlKSB7CisgIC8vIEluIHByYWN0aWNl
LCB3ZSBjb3VsZCBhbG1vc3QgY2VydGFpbmx5IGp1c3QgaW52b2tlIGhhc2hfYnl0ZXMgZGlyZWN0
bHksCisgIC8vIGJ1dCBpdCdzIHBvc3NpYmxlIHRoYXQgYSBzYW5pdGl6ZXIgbWlnaHQgb25lIGRh
eSB3YW50IHRvCisgIC8vIHN0b3JlIGRhdGEgaW4gdGhlIHVudXNlZCBiaXRzIG9mIGFuIGVudW0u
IFRvIGF2b2lkIHRoYXQgcmlzaywgd2UKKyAgLy8gY29udmVydCB0byB0aGUgdW5kZXJseWluZyB0
eXBlIGJlZm9yZSBoYXNoaW5nLiBIb3BlZnVsbHkgdGhpcyB3aWxsIGdldAorICAvLyBvcHRpbWl6
ZWQgYXdheTsgaWYgbm90LCB3ZSBjYW4gcmVvcGVuIGRpc2N1c3Npb24gd2l0aCBjLXRvb2xjaGFp
bi10ZWFtLgorICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksCisgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBl
PEVudW0+Ojp0eXBlPihlKSk7Cit9CisvLyBBYnNsSGFzaFZhbHVlKCkgZm9yIGhhc2hpbmcgZmxv
YXRpbmctcG9pbnQgdmFsdWVzCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgRmxvYXQ+
Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PEZsb2F0Pjo6
dmFsdWUsIEg+Ojp0eXBlCitBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgRmxvYXQgdmFsdWUp
IHsKKyAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoc3RkOjptb3ZlKGhhc2hfc3Rh
dGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9PSAwID8gMCA6
IHZhbHVlKTsKK30KKworLy8gTG9uZyBkb3VibGUgaGFzIHRoZSBwcm9wZXJ0eSB0aGF0IGl0IG1p
Z2h0IGhhdmUgZXh0cmEgdW51c2VkIGJ5dGVzIGluIGl0LgorLy8gRm9yIGV4YW1wbGUsIGluIHg4
NiBzaXplb2YobG9uZyBkb3VibGUpPT0xNiBidXQgaXQgb25seSByZWFsbHkgdXNlcyA4MC1iaXRz
CisvLyBvZiBpdC4gVGhpcyBtZWFucyB3ZSBjYW4ndCB1c2UgaGFzaF9ieXRlcyBvbiBhIGxvbmcg
ZG91YmxlIGFuZCBoYXZlIHRvCisvLyBjb252ZXJ0IGl0IHRvIHNvbWV0aGluZyBlbHNlIGZpcnN0
LgordGVtcGxhdGUgPHR5cGVuYW1lIEg+CitIIEFic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBs
b25nIGRvdWJsZSB2YWx1ZSkgeworICBjb25zdCBpbnQgY2F0ZWdvcnkgPSBzdGQ6OmZwY2xhc3Np
ZnkodmFsdWUpOworICBzd2l0Y2ggKGNhdGVnb3J5KSB7CisgICAgY2FzZSBGUF9JTkZJTklURToK
KyAgICAgIC8vIEFkZCB0aGUgc2lnbiBiaXQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuICtJbmYg
YW5kIC1JbmYKKyAgICAgIGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0
YXRlKSwgc3RkOjpzaWduYml0KHZhbHVlKSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgRlBf
TkFOOgorICAgIGNhc2UgRlBfWkVSTzoKKyAgICBkZWZhdWx0OgorICAgICAgLy8gQ2F0ZWdvcnkg
aXMgZW5vdWdoIGZvciB0aGVzZS4KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBGUF9OT1JNQUw6
CisgICAgY2FzZSBGUF9TVUJOT1JNQUw6CisgICAgICAvLyBXZSBjYW4ndCBjb252ZXJ0IGB2YWx1
ZWAgZGlyZWN0bHkgdG8gZG91YmxlIGJlY2F1c2UgdGhpcyB3b3VsZCBoYXZlCisgICAgICAvLyB1
bmRlZmluZWQgYmVoYXZpb3IgaWYgdGhlIHZhbHVlIGlzIG91dCBvZiByYW5nZS4KKyAgICAgIC8v
IHN0ZDo6ZnJleHAgZ2l2ZXMgdXMgYSB2YWx1ZSBpbiB0aGUgcmFuZ2UgKC0xLCAtLjVdIG9yIFsu
NSwgMSkgdGhhdCBpcworICAgICAgLy8gZ3VhcmFudGVlZCB0byBiZSBpbiByYW5nZSBmb3IgYGRv
dWJsZWAuIFRoZSB0cnVuY2F0aW9uIGlzCisgICAgICAvLyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVk
LCBidXQgdGhhdCB3b3JrcyBhcyBsb25nIGFzIGl0IGlzIGRldGVybWluaXN0aWMuCisgICAgICBp
bnQgZXhwOworICAgICAgYXV0byBtYW50aXNzYSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpm
cmV4cCh2YWx1ZSwgJmV4cCkpOworICAgICAgaGFzaF9zdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjpt
b3ZlKGhhc2hfc3RhdGUpLCBtYW50aXNzYSwgZXhwKTsKKyAgfQorCisgIHJldHVybiBIOjpjb21i
aW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgY2F0ZWdvcnkpOworfQorCisvLyBBYnNsSGFzaFZh
bHVlKCkgZm9yIGhhc2hpbmcgcG9pbnRlcnMKK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFt
ZSBUPgorSCBBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgVCogcHRyKSB7CisgIHJldHVybiBo
YXNoX2ludGVybmFsOjpoYXNoX2J5dGVzKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgcHRyKTsKK30K
KworLy8gQWJzbEhhc2hWYWx1ZSgpIGZvciBoYXNoaW5nIG51bGxwdHJfdAordGVtcGxhdGUgPHR5
cGVuYW1lIEg+CitIIEFic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBzdGQ6Om51bGxwdHJfdCkg
eworICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHN0YXRpY19jYXN0
PHZvaWQqPihudWxscHRyKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNs
SGFzaFZhbHVlIGZvciBDb21wb3NpdGUgVHlwZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
Ky8vIGlzX2hhc2hhYmxlKCkKKy8vCisvLyBUcmFpdCBjbGFzcyB3aGljaCByZXR1cm5zIHRydWUg
aWYgVCBpcyBoYXNoYWJsZSBieSB0aGUgYWJzbDo6SGFzaCBmcmFtZXdvcmsuCisvLyBVc2VkIGZv
ciB0aGUgQWJzbEhhc2hWYWx1ZSBpbXBsZW1lbnRhdGlvbnMgZm9yIGNvbXBvc2l0ZSB0eXBlcyBi
ZWxvdy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX2hhc2hhYmxlOworCisvLyBB
YnNsSGFzaFZhbHVlKCkgZm9yIGhhc2hpbmcgcGFpcnMKK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxpc19oYXNo
YWJsZTxUMT46OnZhbHVlICYmIGlzX2hhc2hhYmxlPFQyPjo6dmFsdWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICBIPjo6dHlwZQorQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIGNvbnN0IHN0
ZDo6cGFpcjxUMSwgVDI+JiBwKSB7CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNo
X3N0YXRlKSwgcC5maXJzdCwgcC5zZWNvbmQpOworfQorCisvLyBoYXNoX3R1cGxlKCkKKy8vCisv
LyBIZWxwZXIgZnVuY3Rpb24gZm9yIGhhc2hpbmcgYSB0dXBsZS4gVGhlIHRoaXJkIGFyZ3VtZW50
IHNob3VsZAorLy8gYmUgYW4gaW5kZXhfc2VxdWVuY2UgcnVubmluZyBmcm9tIDAgdG8gdHVwbGVf
c2l6ZTxUdXBsZT4gLSAxLgordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFR1cGxlLCBz
aXplX3QuLi4gSXM+CitIIGhhc2hfdHVwbGUoSCBoYXNoX3N0YXRlLCBjb25zdCBUdXBsZSYgdCwg
YWJzbDo6aW5kZXhfc2VxdWVuY2U8SXMuLi4+KSB7CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6
bW92ZShoYXNoX3N0YXRlKSwgc3RkOjpnZXQ8SXM+KHQpLi4uKTsKK30KKworLy8gQWJzbEhhc2hW
YWx1ZSBmb3IgaGFzaGluZyB0dXBsZXMKK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZS4u
LiBUcz4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorLy8gVGhpcyBTRklOQUUgZ2V0cyBNU1ZDIGNv
bmZ1c2VkIHVuZGVyIHNvbWUgY29uZGl0aW9ucy4gTGV0J3MganVzdCBkaXNhYmxlIGl0CisvLyBm
b3Igbm93LgorSAorI2Vsc2UgIC8vIF9NU0NfVkVSCit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxh
YnNsOjpjb25qdW5jdGlvbjxpc19oYXNoYWJsZTxUcz4uLi4+Ojp2YWx1ZSwgSD46OnR5cGUKKyNl
bmRpZiAgLy8gX01TQ19WRVIKK0Fic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBjb25zdCBzdGQ6
OnR1cGxlPFRzLi4uPiYgdCkgeworICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6aGFzaF90dXBsZShz
dGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFic2w6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c2l6ZW9mLi4uKFRzKT4oKSk7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsSGFzaFZhbHVlIGZvciBQb2ludGVycworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFzaGluZyB1bmlx
dWVfcHRyCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRD4KK0gg
QWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxULCBEPiYg
cHRyKSB7CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgcHRyLmdl
dCgpKTsKK30KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFzaGluZyBzaGFyZWRfcHRyCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KK0ggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3Rh
dGUsIGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxUPiYgcHRyKSB7CisgIHJldHVybiBIOjpjb21iaW5l
KHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgcHRyLmdldCgpKTsKK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vIEFic2xIYXNoVmFsdWUgZm9yIFN0cmluZy1MaWtlIFR5cGVzCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0cmluZ3MK
Ky8vCisvLyBBbGwgdGhlIHN0cmluZy1saWtlIHR5cGVzIHN1cHBvcnRlZCBoZXJlIHByb3ZpZGUg
dGhlIHNhbWUgaGFzaCBleHBhbnNpb24gZm9yCisvLyB0aGUgc2FtZSBjaGFyYWN0ZXIgc2VxdWVu
Y2UuIFRoZXNlIHR5cGVzIGFyZToKKy8vCisvLyAgLSBgc3RkOjpzdHJpbmdgIChhbmQgc3RkOjpi
YXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgQT4gZm9yCisvLyAgICAg
IGFueSBhbGxvY2F0b3IgQSkKKy8vICAtIGBhYnNsOjpzdHJpbmdfdmlld2AgYW5kIGBzdGQ6OnN0
cmluZ192aWV3YAorLy8KKy8vIEZvciBzaW1wbGljaXR5LCB3ZSBjdXJyZW50bHkgc3VwcG9ydCBv
bmx5IGBjaGFyYCBzdHJpbmdzLiBUaGlzIHN1cHBvcnQgbWF5CisvLyBiZSBicm9hZGVuZWQsIGlm
IG5lY2Vzc2FyeSwgYnV0IHdpdGggc29tZSBjYXV0aW9uIC0gdGhpcyBvdmVybG9hZCB3b3VsZAor
Ly8gbWlzYmVoYXZlIGluIGNhc2VzIHdoZXJlIHRoZSB0cmFpdHMnIGBlcSgpYCBtZW1iZXIgaXNu
J3QgZXF1aXZhbGVudCB0byBgPT1gCisvLyBvbiB0aGUgdW5kZXJseWluZyBjaGFyYWN0ZXIgdHlw
ZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBIPgorSCBBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwg
YWJzbDo6c3RyaW5nX3ZpZXcgc3RyKSB7CisgIHJldHVybiBIOjpjb21iaW5lKAorICAgICAgSDo6
Y29tYmluZV9jb250aWd1b3VzKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgc3RyLmRhdGEoKSwgc3Ry
LnNpemUoKSksCisgICAgICBzdHIuc2l6ZSgpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vIEFic2xIYXNoVmFsdWUgZm9yIFNlcXVlbmNlIENvbnRhaW5lcnMKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgc3RkOjphcnJheQor
dGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQsIHNpemVfdCBOPgordHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8aXNfaGFzaGFibGU8VD46OnZhbHVlLCBIPjo6dHlwZSBBYnNsSGFzaFZhbHVl
KAorICAgIEggaGFzaF9zdGF0ZSwgY29uc3Qgc3RkOjphcnJheTxULCBOPiYgYXJyYXkpIHsKKyAg
cmV0dXJuIEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIGFycmF5
LmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5zaXplKCkpOwor
fQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6ZGVxdWUKK3RlbXBsYXRlIDx0
eXBlbmFtZSBILCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBbGxvY2F0b3I+Cit0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxpc19oYXNoYWJsZTxUPjo6dmFsdWUsIEg+Ojp0eXBlIEFic2xIYXNoVmFsdWUo
CisgICAgSCBoYXNoX3N0YXRlLCBjb25zdCBzdGQ6OmRlcXVlPFQsIEFsbG9jYXRvcj4mIGRlcXVl
KSB7CisgIC8vIFRPRE8oZ3JvbWVyKTogaW52ZXN0aWdhdGUgYSBtb3JlIGVmZmljaWVudCBpbXBs
ZW1lbnRhdGlvbiB0YWtpbmcKKyAgLy8gYWR2YW50YWdlIG9mIHRoZSBjaHVuayBzdHJ1Y3R1cmUu
CisgIGZvciAoY29uc3QgYXV0byYgdCA6IGRlcXVlKSB7CisgICAgaGFzaF9zdGF0ZSA9IEg6OmNv
bWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB0KTsKKyAgfQorICByZXR1cm4gSDo6Y29tYmlu
ZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIGRlcXVlLnNpemUoKSk7Cit9CisKKy8vIEFic2xIYXNo
VmFsdWUgZm9yIGhhc2hpbmcgc3RkOjpmb3J3YXJkX2xpc3QKK3RlbXBsYXRlIDx0eXBlbmFtZSBI
LCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBbGxvY2F0b3I+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
Zjxpc19oYXNoYWJsZTxUPjo6dmFsdWUsIEg+Ojp0eXBlIEFic2xIYXNoVmFsdWUoCisgICAgSCBo
YXNoX3N0YXRlLCBjb25zdCBzdGQ6OmZvcndhcmRfbGlzdDxULCBBbGxvY2F0b3I+JiBsaXN0KSB7
CisgIHNpemVfdCBzaXplID0gMDsKKyAgZm9yIChjb25zdCBUJiB0IDogbGlzdCkgeworICAgIGhh
c2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgdCk7CisgICAgKytz
aXplOworICB9CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgc2l6
ZSk7Cit9CisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgc3RkOjpsaXN0Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQWxsb2NhdG9yPgordHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8aXNfaGFzaGFibGU8VD46OnZhbHVlLCBIPjo6dHlwZSBBYnNsSGFzaFZh
bHVlKAorICAgIEggaGFzaF9zdGF0ZSwgY29uc3Qgc3RkOjpsaXN0PFQsIEFsbG9jYXRvcj4mIGxp
c3QpIHsKKyAgZm9yIChjb25zdCBhdXRvJiB0IDogbGlzdCkgeworICAgIGhhc2hfc3RhdGUgPSBI
Ojpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgdCk7CisgIH0KKyAgcmV0dXJuIEg6OmNv
bWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBsaXN0LnNpemUoKSk7Cit9CisKKy8vIEFic2xI
YXNoVmFsdWUgZm9yIGhhc2hpbmcgc3RkOjp2ZWN0b3IKKy8vCisvLyBEbyBub3QgdXNlIHRoaXMg
Zm9yIHZlY3Rvcjxib29sPi4gSXQgZG9lcyBub3QgaGF2ZSBhIC5kYXRhKCksIGFuZCBhIGZhbGxi
YWNrCisvLyBmb3Igc3RkOjpoYXNoPD4gaXMgbW9zdCBsaWtlbHkgZmFzdGVyLgordGVtcGxhdGUg
PHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFsbG9jYXRvcj4KK3R5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPGlzX2hhc2hhYmxlPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPFQsIGJv
b2w+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEg+Ojp0eXBlCitBYnNsSGFzaFZh
bHVlKEggaGFzaF9zdGF0ZSwgY29uc3Qgc3RkOjp2ZWN0b3I8VCwgQWxsb2NhdG9yPiYgdmVjdG9y
KSB7CisgIHJldHVybiBIOjpjb21iaW5lKEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6Om1vdmUo
aGFzaF9zdGF0ZSksIHZlY3Rvci5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ZWN0b3Iuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9y
LnNpemUoKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsSGFzaFZhbHVl
IGZvciBPcmRlcmVkIEFzc29jaWF0aXZlIENvbnRhaW5lcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgc3RkOjptYXAKK3RlbXBsYXRlIDx0
eXBlbmFtZSBILCB0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbXBhcmUsCisg
ICAgICAgICAgdHlwZW5hbWUgQWxsb2NhdG9yPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8aXNf
aGFzaGFibGU8S2V5Pjo6dmFsdWUgJiYgaXNfaGFzaGFibGU8VD46OnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgSD46OnR5cGUKK0Fic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBjb25z
dCBzdGQ6Om1hcDxLZXksIFQsIENvbXBhcmUsIEFsbG9jYXRvcj4mIG1hcCkgeworICBmb3IgKGNv
bnN0IGF1dG8mIHQgOiBtYXApIHsKKyAgICBoYXNoX3N0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1v
dmUoaGFzaF9zdGF0ZSksIHQpOworICB9CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZSho
YXNoX3N0YXRlKSwgbWFwLnNpemUoKSk7Cit9CisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hp
bmcgc3RkOjptdWx0aW1hcAordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVCwgdHlwZW5hbWUgQ29tcGFyZSwKKyAgICAgICAgICB0eXBlbmFtZSBBbGxvY2F0b3I+
Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxpc19oYXNoYWJsZTxLZXk+Ojp2YWx1ZSAmJiBpc19o
YXNoYWJsZTxUPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBIPjo6dHlwZQorQWJz
bEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsCisgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6bXVsdGlt
YXA8S2V5LCBULCBDb21wYXJlLCBBbGxvY2F0b3I+JiBtYXApIHsKKyAgZm9yIChjb25zdCBhdXRv
JiB0IDogbWFwKSB7CisgICAgaGFzaF9zdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hf
c3RhdGUpLCB0KTsKKyAgfQorICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0
ZSksIG1hcC5zaXplKCkpOworfQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6
c2V0Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBDb21wYXJl
LCB0eXBlbmFtZSBBbGxvY2F0b3I+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxpc19oYXNoYWJs
ZTxLZXk+Ojp2YWx1ZSwgSD46OnR5cGUgQWJzbEhhc2hWYWx1ZSgKKyAgICBIIGhhc2hfc3RhdGUs
IGNvbnN0IHN0ZDo6c2V0PEtleSwgQ29tcGFyZSwgQWxsb2NhdG9yPiYgc2V0KSB7CisgIGZvciAo
Y29uc3QgYXV0byYgdCA6IHNldCkgeworICAgIGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6
bW92ZShoYXNoX3N0YXRlKSwgdCk7CisgIH0KKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3Zl
KGhhc2hfc3RhdGUpLCBzZXQuc2l6ZSgpKTsKK30KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFz
aGluZyBzdGQ6Om11bHRpc2V0Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBDb21wYXJlLCB0eXBlbmFtZSBBbGxvY2F0b3I+Cit0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxpc19oYXNoYWJsZTxLZXk+Ojp2YWx1ZSwgSD46OnR5cGUgQWJzbEhhc2hWYWx1ZSgKKyAg
ICBIIGhhc2hfc3RhdGUsIGNvbnN0IHN0ZDo6bXVsdGlzZXQ8S2V5LCBDb21wYXJlLCBBbGxvY2F0
b3I+JiBzZXQpIHsKKyAgZm9yIChjb25zdCBhdXRvJiB0IDogc2V0KSB7CisgICAgaGFzaF9zdGF0
ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB0KTsKKyAgfQorICByZXR1cm4g
SDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHNldC5zaXplKCkpOworfQorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWJzbEhhc2hWYWx1ZSBmb3IgV3JhcHBlciBUeXBlcwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFzaGluZyBh
YnNsOjpvcHRpb25hbAordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+Cit0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxpc19oYXNoYWJsZTxUPjo6dmFsdWUsIEg+Ojp0eXBlIEFic2xIYXNo
VmFsdWUoCisgICAgSCBoYXNoX3N0YXRlLCBjb25zdCBhYnNsOjpvcHRpb25hbDxUPiYgb3B0KSB7
CisgIGlmIChvcHQpIGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRl
KSwgKm9wdCk7CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgb3B0
Lmhhc192YWx1ZSgpKTsKK30KKworLy8gVmFyaWFudFZpc2l0b3IKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBIPgorc3RydWN0IFZhcmlhbnRWaXNpdG9yIHsKKyAgSCYmIGhhc2hfc3RhdGU7CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBIIG9wZXJhdG9yKCkoY29uc3QgVCYgdCkgY29uc3QgeworICAg
IHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgdCk7CisgIH0KK307CisK
Ky8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgYWJzbDo6dmFyaWFudAordGVtcGxhdGUgPHR5
cGVuYW1lIEgsIHR5cGVuYW1lLi4uIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxjb25qdW5j
dGlvbjxpc19oYXNoYWJsZTxUPi4uLj46OnZhbHVlLCBIPjo6dHlwZQorQWJzbEhhc2hWYWx1ZShI
IGhhc2hfc3RhdGUsIGNvbnN0IGFic2w6OnZhcmlhbnQ8VC4uLj4mIHYpIHsKKyAgaWYgKCF2LnZh
bHVlbGVzc19ieV9leGNlcHRpb24oKSkgeworICAgIGhhc2hfc3RhdGUgPSBhYnNsOjp2aXNpdChW
YXJpYW50VmlzaXRvcjxIPntzdGQ6Om1vdmUoaGFzaF9zdGF0ZSl9LCB2KTsKKyAgfQorICByZXR1
cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHYuaW5kZXgoKSk7Cit9CisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBoYXNoX3JhbmdlX29yX2J5dGVzKCkKKy8vCisvLyBN
aXhlcyBhbGwgdmFsdWVzIGluIHRoZSByYW5nZSBbZGF0YSwgZGF0YStzaXplKSBpbnRvIHRoZSBo
YXNoIHN0YXRlLgorLy8gVGhpcyBvdmVybG9hZCBhY2NlcHRzIG9ubHkgdW5pcXVlbHktcmVwcmVz
ZW50ZWQgdHlwZXMsIGFuZCBoYXNoZXMgdGhlbSBieQorLy8gaGFzaGluZyB0aGUgZW50aXJlIHJh
bmdlIG9mIGJ5dGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+Cit0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxpc191bmlxdWVseV9yZXByZXNlbnRlZDxUPjo6dmFsdWUsIEg+Ojp0
eXBlCitoYXNoX3JhbmdlX29yX2J5dGVzKEggaGFzaF9zdGF0ZSwgY29uc3QgVCogZGF0YSwgc2l6
ZV90IHNpemUpIHsKKyAgY29uc3QgYXV0byogYnl0ZXMgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihkYXRhKTsKKyAgcmV0dXJuIEg6OmNvbWJpbmVfY29udGlndW91cyhz
dGQ6Om1vdmUoaGFzaF9zdGF0ZSksIGJ5dGVzLCBzaXplb2YoVCkgKiBzaXplKTsKK30KKworLy8g
aGFzaF9yYW5nZV9vcl9ieXRlcygpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4K
K3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFpc191bmlxdWVseV9yZXByZXNlbnRlZDxUPjo6dmFs
dWUsIEg+Ojp0eXBlCitoYXNoX3JhbmdlX29yX2J5dGVzKEggaGFzaF9zdGF0ZSwgY29uc3QgVCog
ZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgZm9yIChjb25zdCBhdXRvIGVuZCA9IGRhdGEgKyBzaXpl
OyBkYXRhIDwgZW5kOyArK2RhdGEpIHsKKyAgICBoYXNoX3N0YXRlID0gSDo6Y29tYmluZShzdGQ6
Om1vdmUoaGFzaF9zdGF0ZSksICpkYXRhKTsKKyAgfQorICByZXR1cm4gaGFzaF9zdGF0ZTsKK30K
KworLy8gSW52b2tlSGFzaFRhZworLy8KKy8vIEludm9rZUhhc2goSCwgY29uc3QgVCYpIGludm9r
ZXMgdGhlIGFwcHJvcHJpYXRlIGhhc2ggaW1wbGVtZW50YXRpb24gZm9yIGEKKy8vIGhhc2hlciBv
ZiB0eXBlIGBIYCBhbmQgYSB2YWx1ZSBvZiB0eXBlIGBUYC4gSWYgYFRgIGlzIG5vdCBoYXNoYWJs
ZSwgdGhlcmUKKy8vIHdpbGwgYmUgbm8gbWF0Y2hpbmcgb3ZlcmxvYWQgb2YgSW52b2tlSGFzaCgp
LgorLy8gTm90ZTogU29tZSBwbGF0Zm9ybXMgKGVnIE1TVkMpIGRvIG5vdCBzdXBwb3J0IHRoZSBk
ZXRlY3QgaWRpb20gb24KKy8vIHN0ZDo6aGFzaC4gSW4gdGhvc2UgcGxhdGZvcm1zIHRoZSBsYXN0
IGZhbGxiYWNrIHdpbGwgYmUgc3RkOjpoYXNoIGFuZAorLy8gSW52b2tlSGFzaCgpIHdpbGwgYWx3
YXlzIGhhdmUgYSB2YWxpZCBvdmVybG9hZCBldmVuIGlmIHN0ZDo6aGFzaDxUPiBpcyBub3QKKy8v
IHZhbGlkLgorLy8KKy8vIFdlIHRyeSB0aGUgZm9sbG93aW5nIG9wdGlvbnMgaW4gb3JkZXI6Cisv
LyAgICogSWYgaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQsIGhhc2ggYnl0ZXMgZGlyZWN0bHkuCisv
LyAgICogQURMIEFic2xIYXNoVmFsdWUoSCwgY29uc3QgVCYpIGNhbGwuCisvLyAgICogc3RkOjpo
YXNoPFQ+CisKKy8vIEluIE1TVkMgd2UgY2FuJ3QgcHJvYmUgc3RkOjpoYXNoIG9yIHN0ZGV4dDo6
aGFzaCBiZWNhdXNlIGl0IHRyaWdnZXJzIGEKKy8vIHN0YXRpY19hc3NlcnQgaW5zdGVhZCBvZiBm
YWlsaW5nIHN1YnN0aXR1dGlvbi4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2RlZmluZSBBQlNM
X0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8gMAorI2Vsc2UgICAvLyBfTVNDX1ZFUgorI2RlZmlu
ZSBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8gMQorI2VuZGlmICAvLyBfTVNDX1ZFUgor
CisjaWYgZGVmaW5lZChBQlNMX0lOVEVSTkFMX0xFR0FDWV9IQVNIX05BTUVTUEFDRSkgJiYgXAor
ICAgIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXworI2RlZmluZSBBQlNMX0hBU0hfSU5U
RVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8gMQorI2Vsc2UKKyNkZWZpbmUgQUJTTF9IQVNIX0lO
VEVSTkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfIDAKKyNlbmRpZgorCitlbnVtIGNsYXNzIEludm9r
ZUhhc2hUYWcgeworICBrVW5pcXVlbHlSZXByZXNlbnRlZCwKKyAga0hhc2hWYWx1ZSwKKyNpZiBB
QlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8KKyAga0xlZ2FjeUhhc2gsCisj
ZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworICBrU3Rk
SGFzaCwKKyAga05vbmUKK307CisKKy8vIEhhc2hTZWxlY3QKKy8vCisvLyBUeXBlIHRyYWl0IHRv
IHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgaGFzaCBpbXBsZW1lbnRhdGlvbiB0byB1c2UuCisvLyBI
YXNoU2VsZWN0PFQ+Ojp2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBJbnZva2VIYXNoVGFnIHRoYXQg
aW5kaWNhdGVzIHRoZSBiZXN0CisvLyBhdmFpbGFibGUgaGFzaGluZyBtZWNoYW5pc20uCisvLyBT
ZWUgYE5vdGVgIGFib3ZlIGFib3V0IE1TVkMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBIYXNoU2VsZWN0IHsKKyBwcml2YXRlOgorICBzdHJ1Y3QgU3RhdGUgOiBIYXNoU3RhdGVCYXNl
PFN0YXRlPiB7CisgICAgc3RhdGljIFN0YXRlIGNvbWJpbmVfY29udGlndW91cyhTdGF0ZSBoYXNo
X3N0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCk7CisgICAgdXNpbmcgU3RhdGU6Okhhc2hTdGF0ZUJhc2U6OmNvbWJp
bmVfY29udGlndW91czsKKyAgfTsKKworICAvLyBgUHJvYmU8ViwgVGFnPjo6dmFsdWVgIGV2YWx1
YXRlcyB0byBgVjxUPjo6dmFsdWVgIGlmIGl0IGlzIGEgdmFsaWQKKyAgLy8gZXhwcmVzc2lvbiwg
YW5kIGBmYWxzZWAgb3RoZXJ3aXNlLgorICAvLyBgUHJvYmU8ViwgVGFnPjo6dGFnYCBhbHdheXMg
ZXZhbHVhdGVzIHRvIGBUYWdgLgorICB0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFz
cyBWLCBJbnZva2VIYXNoVGFnIFRhZz4KKyAgc3RydWN0IFByb2JlIHsKKyAgIHByaXZhdGU6Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFY8VT46OnZh
bHVlLCBpbnQ+Ojp0eXBlID0gMD4KKyAgICBzdGF0aWMgc3RkOjp0cnVlX3R5cGUgVGVzdChpbnQp
OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBzdGQ6OmZhbHNlX3R5cGUg
VGVzdChjaGFyKTsKKworICAgcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgSW52b2tlSGFz
aFRhZyBrVGFnID0gVGFnOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IGRlY2x0
eXBlKAorICAgICAgICBUZXN0PGFic2w6OnJlbW92ZV9jb25zdF90PGFic2w6OnJlbW92ZV9yZWZl
cmVuY2VfdDxUPj4+KDApKTo6dmFsdWU7CisgIH07CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+
CisgIHVzaW5nIFByb2JlVW5pcXVlbHlSZXByZXNlbnRlZCA9IGlzX3VuaXF1ZWx5X3JlcHJlc2Vu
dGVkPFU+OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICB1c2luZyBQcm9iZUhhc2hWYWx1
ZSA9CisgICAgICBzdGQ6OmlzX3NhbWU8U3RhdGUsIGRlY2x0eXBlKEFic2xIYXNoVmFsdWUoc3Rk
OjpkZWNsdmFsPFN0YXRlPigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCBVJj4oKSkpPjsKKworI2lmIEFCU0xfSEFT
SF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4K
KyAgdXNpbmcgUHJvYmVMZWdhY3lIYXNoID0KKyAgICAgIHN0ZDo6aXNfY29udmVydGlibGU8ZGVj
bHR5cGUoQUJTTF9JTlRFUk5BTF9MRUdBQ1lfSEFTSF9OQU1FU1BBQ0U6Omhhc2g8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU+KCkoc3RkOjpkZWNsdmFsPGNvbnN0IFUmPigp
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdD47CisjZW5kaWYgIC8vIEFCU0xf
SEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVPgorICB1c2luZyBQcm9iZVN0ZEhhc2ggPQorI2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5f
UE9JU09OXworICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxkZWNsdHlwZShzdGQ6Omhhc2g8VT4o
KShzdGQ6OmRlY2x2YWw8Y29uc3QgVSY+KCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90PjsKKyNlbHNlICAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX0NBTl9QT0lTT05fCisgICAg
ICBzdGQ6OnRydWVfdHlwZTsKKyNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX0NBTl9QT0lT
T05fCisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHVzaW5nIFByb2JlTm9uZSA9IHN0ZDo6
dHJ1ZV90eXBlOworCisgcHVibGljOgorICAvLyBQcm9iZSBlYWNoIGltcGxlbWVudGF0aW9uIGlu
IG9yZGVyLgorICAvLyBkaXNqdW5jdGlvbiBwcm92aWRlcyBzaG9ydCBjaXJjdXRpbmcgd3J0IGlu
c3RhbnRpYXRpb24uCisgIHN0YXRpYyBjb25zdGV4cHIgSW52b2tlSGFzaFRhZyB2YWx1ZSA9IGFi
c2w6OmRpc2p1bmN0aW9uPAorICAgICAgUHJvYmU8UHJvYmVVbmlxdWVseVJlcHJlc2VudGVkLCBJ
bnZva2VIYXNoVGFnOjprVW5pcXVlbHlSZXByZXNlbnRlZD4sCisgICAgICBQcm9iZTxQcm9iZUhh
c2hWYWx1ZSwgSW52b2tlSGFzaFRhZzo6a0hhc2hWYWx1ZT4sCisjaWYgQUJTTF9IQVNIX0lOVEVS
TkFMX1NVUFBPUlRfTEVHQUNZX0hBU0hfCisgICAgICBQcm9iZTxQcm9iZUxlZ2FjeUhhc2gsIElu
dm9rZUhhc2hUYWc6OmtMZWdhY3lIYXNoPiwKKyNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFM
X1NVUFBPUlRfTEVHQUNZX0hBU0hfCisgICAgICBQcm9iZTxQcm9iZVN0ZEhhc2gsIEludm9rZUhh
c2hUYWc6OmtTdGRIYXNoPiwKKyAgICAgIFByb2JlPFByb2JlTm9uZSwgSW52b2tlSGFzaFRhZzo6
a05vbmU+Pjo6a1RhZzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX2hh
c2hhYmxlIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBIYXNoU2VsZWN0PFQ+Ojp2YWx1
ZSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW52b2tlSGFzaFRhZzo6a05vbmU+IHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlw
ZW5hbWUgVD4KK2Fic2w6OmVuYWJsZV9pZl90PEhhc2hTZWxlY3Q8VD46OnZhbHVlID09IEludm9r
ZUhhc2hUYWc6OmtVbmlxdWVseVJlcHJlc2VudGVkLAorICAgICAgICAgICAgICAgICAgSD4KK0lu
dm9rZUhhc2goSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUpIHsKKyAgcmV0dXJuIGhhc2hfaW50ZXJu
YWw6Omhhc2hfYnl0ZXMoc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KK2Fic2w6OmVuYWJsZV9pZl90PEhhc2hTZWxlY3Q8VD46
OnZhbHVlID09IEludm9rZUhhc2hUYWc6OmtIYXNoVmFsdWUsIEg+CitJbnZva2VIYXNoKEggc3Rh
dGUsIGNvbnN0IFQmIHZhbHVlKSB7CisgIHJldHVybiBBYnNsSGFzaFZhbHVlKHN0ZDo6bW92ZShz
dGF0ZSksIHZhbHVlKTsKK30KKworI2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FD
WV9IQVNIXwordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+CithYnNsOjplbmFibGVf
aWZfdDxIYXNoU2VsZWN0PFQ+Ojp2YWx1ZSA9PSBJbnZva2VIYXNoVGFnOjprTGVnYWN5SGFzaCwg
SD4KK0ludm9rZUhhc2goSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUpIHsKKyAgcmV0dXJuIGhhc2hf
aW50ZXJuYWw6Omhhc2hfYnl0ZXMoCisgICAgICBzdGQ6Om1vdmUoc3RhdGUpLCBBQlNMX0lOVEVS
TkFMX0xFR0FDWV9IQVNIX05BTUVTUEFDRTo6aGFzaDxUPnt9KHZhbHVlKSk7Cit9CisjZW5kaWYg
IC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KK2Fic2w6OmVuYWJsZV9pZl90PEhhc2hTZWxlY3Q8VD46
OnZhbHVlID09IEludm9rZUhhc2hUYWc6OmtTdGRIYXNoLCBIPgorSW52b2tlSGFzaChIIHN0YXRl
LCBjb25zdCBUJiB2YWx1ZSkgeworICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6aGFzaF9ieXRlcyhz
dGQ6Om1vdmUoc3RhdGUpLCBzdGQ6Omhhc2g8VD57fSh2YWx1ZSkpOworfQorCisvLyBDaXR5SGFz
aFN0YXRlCitjbGFzcyBDaXR5SGFzaFN0YXRlIDogcHVibGljIEhhc2hTdGF0ZUJhc2U8Q2l0eUhh
c2hTdGF0ZT4geworICAvLyBhYnNsOjp1aW50MTI4IGlzIG5vdCBhbiBhbGlhcyBvciBhIHRoaW4g
d3JhcHBlciBhcm91bmQgdGhlIGludHJpbnNpYy4KKyAgLy8gV2UgdXNlIHRoZSBpbnRyaW5zaWMg
d2hlbiBhdmFpbGFibGUgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KKyNpZmRlZiBBQlNMX0hBVkVf
SU5UUklOU0lDX0lOVDEyOAorICB1c2luZyB1aW50MTI4ID0gX191aW50MTI4X3Q7CisjZWxzZSAg
IC8vIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4CisgIHVzaW5nIHVpbnQxMjggPSBhYnNsOjp1
aW50MTI4OworI2VuZGlmICAvLyBBQlNMX0hBVkVfSU5UUklOU0lDX0lOVDEyOAorCisgIHN0YXRp
YyBjb25zdGV4cHIgdWludDY0X3Qga011bCA9CisgICAgICBzaXplb2Yoc2l6ZV90KSA9PSA0ID8g
dWludDY0X3R7MHhjYzllMmQ1MX0gOiB1aW50NjRfdHsweDlkZGZlYTA4ZWIzODJkNjl9OworCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICB1c2luZyBJbnRlZ3JhbEZhc3RQYXRoID0KKyAgICAg
IGNvbmp1bmN0aW9uPHN0ZDo6aXNfaW50ZWdyYWw8VD4sIGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVk
PFQ+PjsKKworIHB1YmxpYzoKKyAgLy8gTW92ZSBvbmx5CisgIENpdHlIYXNoU3RhdGUoQ2l0eUhh
c2hTdGF0ZSYmKSA9IGRlZmF1bHQ7CisgIENpdHlIYXNoU3RhdGUmIG9wZXJhdG9yPShDaXR5SGFz
aFN0YXRlJiYpID0gZGVmYXVsdDsKKworICAvLyBDaXR5SGFzaFN0YXRlOjpjb21iaW5lX2NvbnRp
Z3VvdXMoKQorICAvLworICAvLyBGdW5kYW1lbnRhbCBiYXNlIGNhc2UgZm9yIGhhc2ggcmVjdXJz
aW9uOiBtaXhlcyB0aGUgZ2l2ZW4gcmFuZ2Ugb2YgYnl0ZXMKKyAgLy8gaW50byB0aGUgaGFzaCBz
dGF0ZS4KKyAgc3RhdGljIENpdHlIYXNoU3RhdGUgY29tYmluZV9jb250aWd1b3VzKENpdHlIYXNo
U3RhdGUgaGFzaF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpIHsKKyAgICByZXR1cm4gQ2l0eUhhc2hTdGF0
ZSgKKyAgICAgICAgQ29tYmluZUNvbnRpZ3VvdXNJbXBsKGhhc2hfc3RhdGUuc3RhdGVfLCBmaXJz
dCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aW50ZWdyYWxfY29u
c3RhbnQ8aW50LCBzaXplb2Yoc2l6ZV90KT57fSkpOworICB9CisgIHVzaW5nIENpdHlIYXNoU3Rh
dGU6Okhhc2hTdGF0ZUJhc2U6OmNvbWJpbmVfY29udGlndW91czsKKworICAvLyBDaXR5SGFzaFN0
YXRlOjpoYXNoKCkKKyAgLy8KKyAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgaW4gbm9uLW9w
dCBtb2RlLCB3ZSBzcGVjaWFsaXplIHRoaXMgZm9yCisgIC8vIGludGVncmFsIHR5cGVzLgorICAv
LyBPdGhlcndpc2Ugd2Ugd291bGQgYmUgaW5zdGFudGlhdGluZyBhbmQgY2FsbGluZyBkb3plbnMg
b2YgZnVuY3Rpb25zIGZvcgorICAvLyBzb21ldGhpbmcgdGhhdCBpcyBqdXN0IG9uZSBtdWx0aXBs
aWNhdGlvbiBhbmQgYSBjb3VwbGUgeG9yJ3MuCisgIC8vIFRoZSByZXN1bHQgc2hvdWxkIGJlIHRo
ZSBzYW1lIGFzIHJ1bm5pbmcgdGhlIHdob2xlIGFsZ29yaXRobSwgYnV0IGZhc3Rlci4KKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIGFic2w6OmVuYWJsZV9pZl90PEludGVncmFsRmFzdFBhdGg8VD46
OnZhbHVlLCBpbnQ+ID0gMD4KKyAgc3RhdGljIHNpemVfdCBoYXNoKFQgdmFsdWUpIHsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihNaXgoU2VlZCgpLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4odmFsdWUpKSk7CisgIH0KKworICAvLyBPdmVybG9hZCBvZiBDaXR5SGFzaFN0YXRlOjpoYXNo
KCkKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGFic2w6OmVuYWJsZV9pZl90PCFJbnRlZ3JhbEZh
c3RQYXRoPFQ+Ojp2YWx1ZSwgaW50PiA9IDA+CisgIHN0YXRpYyBzaXplX3QgaGFzaChjb25zdCBU
JiB2YWx1ZSkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbWJpbmUoQ2l0eUhh
c2hTdGF0ZXt9LCB2YWx1ZSkuc3RhdGVfKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gSW52b2tl
ZCBvbmx5IG9uY2UgZm9yIGEgZ2l2ZW4gYXJndW1lbnQ7IHRoYXQgcGx1cyB0aGUgZmFjdCB0aGF0
IHRoaXMgaXMKKyAgLy8gbW92ZS1vbmx5IGVuc3VyZXMgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSBu
b24tbW92ZWQtZnJvbSBvYmplY3QuCisgIENpdHlIYXNoU3RhdGUoKSA6IHN0YXRlXyhTZWVkKCkp
IHt9CisKKyAgLy8gV29ya2Fyb3VuZCBmb3IgTVNWQyBidWcuCisgIC8vIFdlIG1ha2UgdGhlIHR5
cGUgY29weWFibGUgdG8gZml4IHRoZSBjYWxsaW5nIGNvbnZlbnRpb24sIGV2ZW4gdGhvdWdoIHdl
CisgIC8vIG5ldmVyIGFjdHVhbGx5IGNvcHkgaXQuIEtlZXAgaXQgcHJpdmF0ZSB0byBub3QgYWZm
ZWN0IHRoZSBwdWJsaWMgQVBJIG9mIHRoZQorICAvLyB0eXBlLgorICBDaXR5SGFzaFN0YXRlKGNv
bnN0IENpdHlIYXNoU3RhdGUmKSA9IGRlZmF1bHQ7CisKKyAgZXhwbGljaXQgQ2l0eUhhc2hTdGF0
ZSh1aW50NjRfdCBzdGF0ZSkgOiBzdGF0ZV8oc3RhdGUpIHt9CisKKyAgLy8gSW1wbGVtZW50YXRp
b24gb2YgdGhlIGJhc2UgY2FzZSBmb3IgY29tYmluZV9jb250aWd1b3VzIHdoZXJlIHdlIGFjdHVh
bGx5CisgIC8vIG1peCB0aGUgYnl0ZXMgaW50byB0aGUgc3RhdGUuCisgIC8vIERpc3BhdGNoIHRv
IGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGNvbWJpbmVfY29udGlndW91cyBkZXBl
bmRpbmcKKyAgLy8gb24gdGhlIHZhbHVlIG9mIGBzaXplb2Yoc2l6ZV90KWAuCisgIHN0YXRpYyB1
aW50NjRfdCBDb21iaW5lQ29udGlndW91c0ltcGwodWludDY0X3Qgc3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogZmlyc3Qs
IHNpemVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjppbnRlZ3JhbF9jb25zdGFudDxpbnQsIDQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogc2l6ZW9mX3NpemVfdCAqLyk7CisgIHN0YXRpYyB1aW50NjRfdCBDb21i
aW5lQ29udGlndW91c0ltcGwodWludDY0X3Qgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogZmlyc3QsIHNpemVfdCBsZW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxpbnQsIDg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Lyogc2l6ZW9mX3NpemVfdCovKTsKKworICAvLyBSZWFkcyA5IHRvIDE2IGJ5dGVzIGZyb20gcC4K
KyAgLy8gVGhlIGZpcnN0IDggYnl0ZXMgYXJlIGluIC5maXJzdCwgdGhlIHJlc3QgKHplcm8gcGFk
ZGVkKSBieXRlcyBhcmUgaW4KKyAgLy8gLnNlY29uZC4KKyAgc3RhdGljIHN0ZDo6cGFpcjx1aW50
NjRfdCwgdWludDY0X3Q+IFJlYWQ5VG8xNihjb25zdCB1bnNpZ25lZCBjaGFyKiBwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pIHsK
KyAgICB1aW50NjRfdCBoaWdoID0gbGl0dGxlX2VuZGlhbjo6TG9hZDY0KHAgKyBsZW4gLSA4KTsK
KyAgICByZXR1cm4ge2xpdHRsZV9lbmRpYW46OkxvYWQ2NChwKSwgaGlnaCA+PiAoMTI4IC0gbGVu
ICogOCl9OworICB9CisKKyAgLy8gUmVhZHMgNCB0byA4IGJ5dGVzIGZyb20gcC4gWmVybyBwYWRz
IHRvIGZpbGwgdWludDY0X3QuCisgIHN0YXRpYyB1aW50NjRfdCBSZWFkNFRvOChjb25zdCB1bnNp
Z25lZCBjaGFyKiBwLCBzaXplX3QgbGVuKSB7CisgICAgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50
NjRfdD4obGl0dGxlX2VuZGlhbjo6TG9hZDMyKHAgKyBsZW4gLSA0KSkKKyAgICAgICAgICAgIDw8
IChsZW4gLSA0KSAqIDgpIHwKKyAgICAgICAgICAgbGl0dGxlX2VuZGlhbjo6TG9hZDMyKHApOwor
ICB9CisKKyAgLy8gUmVhZHMgMSB0byAzIGJ5dGVzIGZyb20gcC4gWmVybyBwYWRzIHRvIGZpbGwg
dWludDMyX3QuCisgIHN0YXRpYyB1aW50MzJfdCBSZWFkMVRvMyhjb25zdCB1bnNpZ25lZCBjaGFy
KiBwLCBzaXplX3QgbGVuKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90PigocFsw
XSkgfCAgICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHBbbGVuIC8gMl0gPDwgKGxlbiAvIDIgKiA4KSkgfCAgLy8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChwW2xlbiAtIDFdIDw8ICgobGVuIC0gMSkgKiA4KSkpOwor
ICB9CisKKyAgQUJTTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDY0X3QgTWl4
KHVpbnQ2NF90IHN0YXRlLCB1aW50NjRfdCB2KSB7CisgICAgdXNpbmcgTXVsdFR5cGUgPQorICAg
ICAgICBhYnNsOjpjb25kaXRpb25hbF90PHNpemVvZihzaXplX3QpID09IDQsIHVpbnQ2NF90LCB1
aW50MTI4PjsKKyAgICAvLyBXZSBkbyB0aGUgYWRkaXRpb24gaW4gNjQtYml0IHNwYWNlIHRvIG1h
a2Ugc3VyZSB0aGUgMTI4LWJpdAorICAgIC8vIG11bHRpcGxpY2F0aW9uIGlzIGZhc3QuIElmIHdl
IHdlcmUgdG8gZG8gaXQgYXMgTXVsdFR5cGUgdGhlIGNvbXBpbGVyIGhhcworICAgIC8vIHRvIGFz
c3VtZSB0aGF0IHRoZSBoaWdoIHdvcmQgaXMgbm9uLXplcm8gYW5kIG5lZWRzIHRvIHBlcmZvcm0g
MgorICAgIC8vIG11bHRpcGxpY2F0aW9ucyBpbnN0ZWFkIG9mIG9uZS4KKyAgICBNdWx0VHlwZSBt
ID0gc3RhdGUgKyB2OworICAgIG0gKj0ga011bDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG0gXiAobSA+PiAoc2l6ZW9mKG0pICogOCAvIDIpKSk7CisgIH0KKworICAvLyBTZWVk
KCkKKyAgLy8KKyAgLy8gQSBub24tZGV0ZXJtaW5pc3RpYyBzZWVkLgorICAvLworICAvLyBUaGUg
Y3VycmVudCBwdXJwb3NlIG9mIHRoaXMgc2VlZCBpcyB0byBnZW5lcmF0ZSBub24tZGV0ZXJtaW5p
c3RpYyByZXN1bHRzCisgIC8vIGFuZCBwcmV2ZW50IGhhdmluZyB1c2VycyBkZXBlbmQgb24gdGhl
IHBhcnRpY3VsYXIgaGFzaCB2YWx1ZXMuCisgIC8vIEl0IGlzIG5vdCBtZWFudCBhcyBhIHNlY3Vy
aXR5IGZlYXR1cmUgcmlnaHQgbm93LCBidXQgaXQgbGVhdmVzIHRoZSBkb29yCisgIC8vIG9wZW4g
dG8gdXBncmFkZSBpdCB0byBhIHRydWUgcGVyLXByb2Nlc3MgcmFuZG9tIHNlZWQuIEEgdHJ1ZSBy
YW5kb20gc2VlZAorICAvLyBjb3N0cyBtb3JlIGFuZCB3ZSBkb24ndCBuZWVkIHRvIHBheSBmb3Ig
dGhhdCByaWdodCBub3cuCisgIC8vCisgIC8vIE9uIHBsYXRmb3JtcyB3aXRoIEFTTFIsIHdlIHRh
a2UgYWR2YW50YWdlIG9mIGl0IHRvIG1ha2UgYSBwZXItcHJvY2VzcworICAvLyByYW5kb20gdmFs
dWUuCisgIC8vIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZGRyZXNzX3NwYWNl
X2xheW91dF9yYW5kb21pemF0aW9uCisgIC8vCisgIC8vIE9uIG90aGVyIHBsYXRmb3JtcyB0aGlz
IGlzIHN0aWxsIGdvaW5nIHRvIGJlIG5vbi1kZXRlcm1pbmlzdGljIGJ1dCBtb3N0CisgIC8vIHBy
b2JhYmx5IHBlci1idWlsZCBhbmQgbm90IHBlci1wcm9jZXNzLgorICBBQlNMX0FUVFJJQlVURV9B
TFdBWVNfSU5MSU5FIHN0YXRpYyB1aW50NjRfdCBTZWVkKCkgeworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGtTZWVkKSk7CisgIH0K
KyAgc3RhdGljIGNvbnN0IHZvaWQqIGNvbnN0IGtTZWVkOworCisgIHVpbnQ2NF90IHN0YXRlXzsK
K307CisKKy8vIENpdHlIYXNoU3RhdGU6OkNvbWJpbmVDb250aWd1b3VzSW1wbCgpCitpbmxpbmUg
dWludDY0X3QgQ2l0eUhhc2hTdGF0ZTo6Q29tYmluZUNvbnRpZ3VvdXNJbXBsKAorICAgIHVpbnQ2
NF90IHN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBmaXJzdCwgc2l6ZV90IGxlbiwKKyAgICBz
dGQ6OmludGVncmFsX2NvbnN0YW50PGludCwgND4gLyogc2l6ZW9mX3NpemVfdCAqLykgeworICAv
LyBGb3IgbGFyZ2UgdmFsdWVzIHdlIHVzZSBDaXR5SGFzaCwgZm9yIHNtYWxsIG9uZXMgd2UganVz
dCB1c2UgYQorICAvLyBtdWx0aXBsaWNhdGl2ZSBoYXNoLgorICB1aW50NjRfdCB2OworICBpZiAo
bGVuID4gOCkgeworICAgIHYgPSBhYnNsOjpoYXNoX2ludGVybmFsOjpDaXR5SGFzaDMyKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGZpcnN0KSwgbGVuKTsKKyAgfSBlbHNlIGlmIChsZW4g
Pj0gNCkgeworICAgIHYgPSBSZWFkNFRvOChmaXJzdCwgbGVuKTsKKyAgfSBlbHNlIGlmIChsZW4g
PiAwKSB7CisgICAgdiA9IFJlYWQxVG8zKGZpcnN0LCBsZW4pOworICB9IGVsc2UgeworICAgIC8v
IEVtcHR5IHJhbmdlcyBoYXZlIG5vIGVmZmVjdC4KKyAgICByZXR1cm4gc3RhdGU7CisgIH0KKyAg
cmV0dXJuIE1peChzdGF0ZSwgdik7Cit9CisKKy8vIE92ZXJsb2FkIG9mIENpdHlIYXNoU3RhdGU6
OkNvbWJpbmVDb250aWd1b3VzSW1wbCgpCitpbmxpbmUgdWludDY0X3QgQ2l0eUhhc2hTdGF0ZTo6
Q29tYmluZUNvbnRpZ3VvdXNJbXBsKAorICAgIHVpbnQ2NF90IHN0YXRlLCBjb25zdCB1bnNpZ25l
ZCBjaGFyKiBmaXJzdCwgc2l6ZV90IGxlbiwKKyAgICBzdGQ6OmludGVncmFsX2NvbnN0YW50PGlu
dCwgOD4gLyogc2l6ZW9mX3NpemVfdCAqLykgeworICAvLyBGb3IgbGFyZ2UgdmFsdWVzIHdlIHVz
ZSBDaXR5SGFzaCwgZm9yIHNtYWxsIG9uZXMgd2UganVzdCB1c2UgYQorICAvLyBtdWx0aXBsaWNh
dGl2ZSBoYXNoLgorICB1aW50NjRfdCB2OworICBpZiAobGVuID4gMTYpIHsKKyAgICB2ID0gYWJz
bDo6aGFzaF9pbnRlcm5hbDo6Q2l0eUhhc2g2NChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihmaXJzdCksIGxlbik7CisgIH0gZWxzZSBpZiAobGVuID4gOCkgeworICAgIGF1dG8gcCA9IFJl
YWQ5VG8xNihmaXJzdCwgbGVuKTsKKyAgICBzdGF0ZSA9IE1peChzdGF0ZSwgcC5maXJzdCk7Cisg
ICAgdiA9IHAuc2Vjb25kOworICB9IGVsc2UgaWYgKGxlbiA+PSA0KSB7CisgICAgdiA9IFJlYWQ0
VG84KGZpcnN0LCBsZW4pOworICB9IGVsc2UgaWYgKGxlbiA+IDApIHsKKyAgICB2ID0gUmVhZDFU
bzMoZmlyc3QsIGxlbik7CisgIH0gZWxzZSB7CisgICAgLy8gRW1wdHkgcmFuZ2VzIGhhdmUgbm8g
ZWZmZWN0LgorICAgIHJldHVybiBzdGF0ZTsKKyAgfQorICByZXR1cm4gTWl4KHN0YXRlLCB2KTsK
K30KKworCitzdHJ1Y3QgQWdncmVnYXRlQmFycmllciB7fTsKKworLy8gSGFzaEltcGwKKworLy8g
QWRkIGEgcHJpdmF0ZSBiYXNlIGNsYXNzIHRvIG1ha2Ugc3VyZSB0aGlzIHR5cGUgaXMgbm90IGFu
IGFnZ3JlZ2F0ZS4KKy8vIEFnZ3JlZ2F0ZXMgY2FuIGJlIGFnZ3JlZ2F0ZSBpbml0aWFsaXplZCBl
dmVuIGlmIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGlzCisvLyBkZWxldGVkLgorc3RydWN0IFBv
aXNvbmVkSGFzaCA6IHByaXZhdGUgQWdncmVnYXRlQmFycmllciB7CisgIFBvaXNvbmVkSGFzaCgp
ID0gZGVsZXRlOworICBQb2lzb25lZEhhc2goY29uc3QgUG9pc29uZWRIYXNoJikgPSBkZWxldGU7
CisgIFBvaXNvbmVkSGFzaCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSGFzaCYpID0gZGVsZXRl
OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSGFzaEltcGwgeworICBzaXpl
X3Qgb3BlcmF0b3IoKShjb25zdCBUJiB2YWx1ZSkgY29uc3QgeyByZXR1cm4gQ2l0eUhhc2hTdGF0
ZTo6aGFzaCh2YWx1ZSk7IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEhh
c2gKKyAgICA6IGFic2w6OmNvbmRpdGlvbmFsX3Q8aXNfaGFzaGFibGU8VD46OnZhbHVlLCBIYXNo
SW1wbDxUPiwgUG9pc29uZWRIYXNoPiB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEg+Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gVHM+CitIIEhhc2hTdGF0ZUJhc2U8SD46OmNv
bWJpbmUoSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUsIGNvbnN0IFRzJi4uLiB2YWx1ZXMpIHsKKyAg
cmV0dXJuIEg6OmNvbWJpbmUoaGFzaF9pbnRlcm5hbDo6SW52b2tlSGFzaChzdGQ6Om1vdmUoc3Rh
dGUpLCB2YWx1ZSksCisgICAgICAgICAgICAgICAgICAgIHZhbHVlcy4uLik7Cit9CisKKy8vIEhh
c2hTdGF0ZUJhc2U6OmNvbWJpbmVfY29udGlndW91cygpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorSCBIYXNoU3RhdGVCYXNlPEg+Ojpjb21iaW5lX2NvbnRp
Z3VvdXMoSCBzdGF0ZSwgY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgcmV0dXJuIGhh
c2hfaW50ZXJuYWw6Omhhc2hfcmFuZ2Vfb3JfYnl0ZXMoc3RkOjptb3ZlKHN0YXRlKSwgZGF0YSwg
c2l6ZSk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNl
IGFic2wKKworI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfSEFTSF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9wcmludF9oYXNoX29mLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRl
cm5hbC9wcmludF9oYXNoX29mLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZGYzMWNjNWU4NWI5MDQ2ZTBhNTRl
YmNiZTgzOWJjNjA0MDIxNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFs
L3ByaW50X2hhc2hfb2YuY2MKQEAgLTAsMCArMSwyMyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgPGNzdGRsaWI+CisKKyNpbmNsdWRlICJhYnNs
L2hhc2gvaGFzaC5oIgorCisvLyBQcmludHMgdGhlIGhhc2ggb2YgYXJndlsxXS4KK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikgeworICBpZiAoYXJnYyA8IDIpIHJldHVybiAxOworICBw
cmludGYoIiV6dVxuIiwgYWJzbDo6SGFzaDxpbnQ+e30oc3RkOjphdG9pKGFyZ3ZbMV0pKSk7ICAv
LyBOT0xJTlQKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvc3B5X2hhc2hfc3Rh
dGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvc3B5X2hhc2hfc3RhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
M2Q3OTViMDkwMDFlM2RjMzAzMDEzNzM4ZjYyNDZhYTJkZTBhYzVmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9zcHlfaGFzaF9zdGF0ZS5oCkBAIC0wLDAgKzEsMjE4IEBA
CisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xf
SEFTSF9JTlRFUk5BTF9TUFlfSEFTSF9TVEFURV9IXworI2RlZmluZSBBQlNMX0hBU0hfSU5URVJO
QUxfU1BZX0hBU0hfU1RBVEVfSF8KKworI2luY2x1ZGUgPG9zdHJlYW0+CisjaW5jbHVkZSA8c3Ry
aW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvaGFzaC9oYXNoLmgiCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0
cl9mb3JtYXQuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2pvaW4uaCIKKworbmFtZXNw
YWNlIGFic2wgeworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgeworCisvLyBTcHlIYXNoU3RhdGUg
aXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIEhhc2hTdGF0ZSBBUEkgdGhhdCBzaW1wbHkKKy8v
IGFjY3VtdWxhdGVzIGFsbCBpbnB1dCBieXRlcyBpbiBhbiBpbnRlcm5hbCBidWZmZXIuIFRoaXMg
bWFrZXMgaXQgdXNlZnVsCisvLyBmb3IgdGVzdGluZyBBYnNsSGFzaFZhbHVlIG92ZXJsb2FkcyAo
c28gbG9uZyBhcyB0aGV5IGFyZSB0ZW1wbGF0ZWQgb24gdGhlCisvLyBIYXNoU3RhdGUgcGFyYW1l
dGVyKSwgc2luY2UgaXQgY2FuIHJlcG9ydCB0aGUgZXhhY3QgaGFzaCByZXByZXNlbnRhdGlvbgor
Ly8gdGhhdCB0aGUgQWJzbEhhc2hWYWx1ZSBvdmVybG9hZCBwcm9kdWNlcy4KKy8vCisvLyBTYW1w
bGUgdXNhZ2U6CisvLyBFWFBFQ1RfRVEoU3B5SGFzaFN0YXRlOjpjb21iaW5lKFNweUhhc2hTdGF0
ZSgpLCBmb28pLAorLy8gICAgICAgICAgIFNweUhhc2hTdGF0ZTo6Y29tYmluZShTcHlIYXNoU3Rh
dGUoKSwgYmFyKSk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFNweUhhc2hTdGF0ZUlt
cGwgOiBwdWJsaWMgSGFzaFN0YXRlQmFzZTxTcHlIYXNoU3RhdGVJbXBsPFQ+PiB7CisgcHVibGlj
OgorICBTcHlIYXNoU3RhdGVJbXBsKCkKKyAgICAgIDogZXJyb3JfKHN0ZDo6bWFrZV9zaGFyZWQ8
YWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+PigpKSB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3ZvaWQ8VD46OnZhbHVlLCAiIik7CisgIH0KKworICAvLyBNb3ZlLW9ubHkKKyAgU3B5SGFz
aFN0YXRlSW1wbChjb25zdCBTcHlIYXNoU3RhdGVJbXBsJikgPSBkZWxldGU7CisgIFNweUhhc2hT
dGF0ZUltcGwmIG9wZXJhdG9yPShjb25zdCBTcHlIYXNoU3RhdGVJbXBsJikgPSBkZWxldGU7CisK
KyAgU3B5SGFzaFN0YXRlSW1wbChTcHlIYXNoU3RhdGVJbXBsJiYgb3RoZXIpIG5vZXhjZXB0IHsK
KyAgICAqdGhpcyA9IHN0ZDo6bW92ZShvdGhlcik7CisgIH0KKworICBTcHlIYXNoU3RhdGVJbXBs
JiBvcGVyYXRvcj0oU3B5SGFzaFN0YXRlSW1wbCYmIG90aGVyKSBub2V4Y2VwdCB7CisgICAgaGFz
aF9yZXByZXNlbnRhdGlvbl8gPSBzdGQ6Om1vdmUob3RoZXIuaGFzaF9yZXByZXNlbnRhdGlvbl8p
OworICAgIGVycm9yXyA9IG90aGVyLmVycm9yXzsKKyAgICBtb3ZlZF9mcm9tXyA9IG90aGVyLm1v
dmVkX2Zyb21fOworICAgIG90aGVyLm1vdmVkX2Zyb21fID0gdHJ1ZTsKKyAgICByZXR1cm4gKnRo
aXM7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgU3B5SGFzaFN0YXRlSW1wbChT
cHlIYXNoU3RhdGVJbXBsPFU+JiYgb3RoZXIpIHsgIC8vIE5PTElOVAorICAgIGhhc2hfcmVwcmVz
ZW50YXRpb25fID0gc3RkOjptb3ZlKG90aGVyLmhhc2hfcmVwcmVzZW50YXRpb25fKTsKKyAgICBl
cnJvcl8gPSBvdGhlci5lcnJvcl87CisgICAgbW92ZWRfZnJvbV8gPSBvdGhlci5tb3ZlZF9mcm9t
XzsKKyAgICBvdGhlci5tb3ZlZF9mcm9tXyA9IHRydWU7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgc3RhdGljIFNweUhhc2hTdGF0ZUltcGwgY29t
YmluZShTcHlIYXNoU3RhdGVJbXBsIHMsIGNvbnN0IEEmIGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQXJncyYuLi4gYXJncykgeworICAgIC8vIFBhc3MgYW4gaW5z
dGFuY2Ugb2YgU3B5SGFzaFN0YXRlSW1wbDxBPiB3aGVuIHRyeWluZyB0byBjb21iaW5lIGBBYC4g
VGhpcworICAgIC8vIGFsbG93cyB1cyB0byB0ZXN0IHRoYXQgdGhlIHVzZXIgb25seSB1c2VzIHRo
aXMgaW5zdGFuY2UgZm9yIGNvbWJpbmUgY2FsbHMKKyAgICAvLyBhbmQgZG9lcyBub3QgY2FsbCBB
YnNsSGFzaFZhbHVlIGRpcmVjdGx5LgorICAgIC8vIFNlZSBBYnNsSGFzaFZhbHVlIGltcGxlbWVu
dGF0aW9uIGF0IHRoZSBib3R0b20uCisgICAgcyA9IFNweUhhc2hTdGF0ZUltcGw8QT46Okhhc2hT
dGF0ZUJhc2U6OmNvbWJpbmUoc3RkOjptb3ZlKHMpLCBhKTsKKyAgICByZXR1cm4gU3B5SGFzaFN0
YXRlSW1wbDo6Y29tYmluZShzdGQ6Om1vdmUocyksIGFyZ3MuLi4pOworICB9CisgIHN0YXRpYyBT
cHlIYXNoU3RhdGVJbXBsIGNvbWJpbmUoU3B5SGFzaFN0YXRlSW1wbCBzKSB7CisgICAgaWYgKGRp
cmVjdF9hYnNsX2hhc2hfdmFsdWVfZXJyb3JfKSB7CisgICAgICAqcy5lcnJvcl8gPSAiQWJzbEhh
c2hWYWx1ZSBzaG91bGQgbm90IGJlIGludm9rZWQgZGlyZWN0bHkuIjsKKyAgICB9IGVsc2UgaWYg
KHMubW92ZWRfZnJvbV8pIHsKKyAgICAgICpzLmVycm9yXyA9ICJVc2VkIG1vdmVkLWZyb20gaW5z
dGFuY2Ugb2YgdGhlIGhhc2ggc3RhdGUgb2JqZWN0LiI7CisgICAgfQorICAgIHJldHVybiBzOwor
ICB9CisKKyAgc3RhdGljIHZvaWQgU2V0RGlyZWN0QWJzbEhhc2hWYWx1ZUVycm9yKCkgeworICAg
IGRpcmVjdF9hYnNsX2hhc2hfdmFsdWVfZXJyb3JfID0gdHJ1ZTsKKyAgfQorCisgIC8vIFR3byBT
cHlIYXNoU3RhdGVJbXBsIG9iamVjdHMgYXJlIGVxdWFsIGlmIHRoZXkgaG9sZCBlcXVhbCBoYXNo
CisgIC8vIHJlcHJlc2VudGF0aW9ucy4KKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
cHlIYXNoU3RhdGVJbXBsJiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3B5
SGFzaFN0YXRlSW1wbCYgcmhzKSB7CisgICAgcmV0dXJuIGxocy5oYXNoX3JlcHJlc2VudGF0aW9u
XyA9PSByaHMuaGFzaF9yZXByZXNlbnRhdGlvbl87CisgIH0KKworICBmcmllbmQgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFNweUhhc2hTdGF0ZUltcGwmIGxocywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTcHlIYXNoU3RhdGVJbXBsJiByaHMpIHsKKyAgICByZXR1cm4gIShsaHMgPT0g
cmhzKTsKKyAgfQorCisgIGVudW0gY2xhc3MgQ29tcGFyZVJlc3VsdCB7CisgICAga0VxdWFsLAor
ICAgIGtBU3VmZml4QiwKKyAgICBrQlN1ZmZpeEEsCisgICAga1VuZXF1YWwsCisgIH07CisKKyAg
c3RhdGljIENvbXBhcmVSZXN1bHQgQ29tcGFyZShjb25zdCBTcHlIYXNoU3RhdGVJbXBsJiBhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNweUhhc2hTdGF0ZUltcGwmIGIp
IHsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBhX2ZsYXQgPSBhYnNsOjpTdHJKb2luKGEuaGFzaF9y
ZXByZXNlbnRhdGlvbl8sICIiKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBiX2ZsYXQgPSBhYnNs
OjpTdHJKb2luKGIuaGFzaF9yZXByZXNlbnRhdGlvbl8sICIiKTsKKyAgICBpZiAoYV9mbGF0ID09
IGJfZmxhdCkgcmV0dXJuIENvbXBhcmVSZXN1bHQ6OmtFcXVhbDsKKyAgICBpZiAoYWJzbDo6RW5k
c1dpdGgoYV9mbGF0LCBiX2ZsYXQpKSByZXR1cm4gQ29tcGFyZVJlc3VsdDo6a0JTdWZmaXhBOwor
ICAgIGlmIChhYnNsOjpFbmRzV2l0aChiX2ZsYXQsIGFfZmxhdCkpIHJldHVybiBDb21wYXJlUmVz
dWx0OjprQVN1ZmZpeEI7CisgICAgcmV0dXJuIENvbXBhcmVSZXN1bHQ6OmtVbmVxdWFsOworICB9
CisKKyAgLy8gb3BlcmF0b3I8PCBwcmludHMgdGhlIGhhc2ggcmVwcmVzZW50YXRpb24gYXMgYSBo
ZXggYW5kIEFTQ0lJIGR1bXAsIHRvCisgIC8vIGZhY2lsaXRhdGUgZGVidWdnaW5nLgorICBmcmll
bmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNweUhhc2hTdGF0ZUltcGwmIGhhc2hfc3Rh
dGUpIHsKKyAgICBvdXQgPDwgIltcbiI7CisgICAgZm9yIChhdXRvJiBzIDogaGFzaF9zdGF0ZS5o
YXNoX3JlcHJlc2VudGF0aW9uXykgeworICAgICAgc2l6ZV90IG9mZnNldCA9IDA7CisgICAgICBm
b3IgKGNoYXIgYyA6IHMpIHsKKyAgICAgICAgaWYgKG9mZnNldCAlIDE2ID09IDApIHsKKyAgICAg
ICAgICBvdXQgPDwgYWJzbDo6U3RyZWFtRm9ybWF0KCJcbjB4JTA0eDogIiwgb2Zmc2V0KTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAob2Zmc2V0ICUgMiA9PSAwKSB7CisgICAgICAgICAgb3V0IDw8
ICIgIjsKKyAgICAgICAgfQorICAgICAgICBvdXQgPDwgYWJzbDo6U3RyZWFtRm9ybWF0KCIlMDJ4
IiwgYyk7CisgICAgICAgICsrb2Zmc2V0OworICAgICAgfQorICAgICAgb3V0IDw8ICJcbiI7Cisg
ICAgfQorICAgIHJldHVybiBvdXQgPDwgIl0iOworICB9CisKKyAgLy8gVGhlIGJhc2UgY2FzZSBv
ZiB0aGUgY29tYmluZSByZWN1cnNpb24sIHdoaWNoIHdyaXRlcyByYXcgYnl0ZXMgaW50byB0aGUK
KyAgLy8gaW50ZXJuYWwgYnVmZmVyLgorICBzdGF0aWMgU3B5SGFzaFN0YXRlSW1wbCBjb21iaW5l
X2NvbnRpZ3VvdXMoU3B5SGFzaFN0YXRlSW1wbCBoYXNoX3N0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYmVnaW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSkgeworICAgIGhhc2hfc3RhdGUuaGFzaF9yZXByZXNlbnRhdGlvbl8uZW1wbGFjZV9iYWNrKAor
ICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihiZWdpbiksIHNpemUpOworICAg
IHJldHVybiBoYXNoX3N0YXRlOworICB9CisKKyAgdXNpbmcgU3B5SGFzaFN0YXRlSW1wbDo6SGFz
aFN0YXRlQmFzZTo6Y29tYmluZV9jb250aWd1b3VzOworCisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6
c3RyaW5nPiBlcnJvcigpIGNvbnN0IHsKKyAgICBpZiAobW92ZWRfZnJvbV8pIHsKKyAgICAgIHJl
dHVybiAiUmV0dXJuZWQgYSBtb3ZlZC1mcm9tIGluc3RhbmNlIG9mIHRoZSBoYXNoIHN0YXRlIG9i
amVjdC4iOworICAgIH0KKyAgICByZXR1cm4gKmVycm9yXzsKKyAgfQorCisgcHJpdmF0ZToKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIGZyaWVuZCBjbGFzcyBTcHlIYXNoU3RhdGVJbXBsOwor
CisgIC8vIFRoaXMgaXMgdHJ1ZSBpZiBTcHlIYXNoU3RhdGVJbXBsPFQ+IGhhcyBiZWVuIHBhc3Nl
ZCB0byBhIGNhbGwgb2YKKyAgLy8gQWJzbEhhc2hWYWx1ZSB3aXRoIHRoZSB3cm9uZyB0eXBlLiBU
aGlzIGRldGVjdHMgdGhhdCB0aGUgdXNlciBjYWxsZWQKKyAgLy8gQWJzbEhhc2hWYWx1ZSBkaXJl
Y3RseSAoYmVjYXVzZSB0aGUgaGFzaCBzdGF0ZSB0eXBlIGRvZXMgbm90IG1hdGNoKS4KKyAgc3Rh
dGljIGJvb2wgZGlyZWN0X2Fic2xfaGFzaF92YWx1ZV9lcnJvcl87CisKKworICBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4gaGFzaF9yZXByZXNlbnRhdGlvbl87CisgIC8vIFRoaXMgaXMgYSBzaGFy
ZWRfcHRyIGJlY2F1c2Ugd2Ugd2FudCBhbGwgaW5zdGFuY2VzIG9mIHRoZSBwYXJ0aWN1bGFyCisg
IC8vIFNweUhhc2hTdGF0ZSBydW4gdG8gc2hhcmUgdGhlIGZpZWxkLiBUaGlzIHdheSB3ZSBjYW4g
c2V0IHRoZSBlcnJvciBmb3IKKyAgLy8gdXNlLWFmdGVyLW1vdmUgYW5kIGFsbCB0aGUgY29waWVz
IHdpbGwgc2VlIGl0LgorICBzdGQ6OnNoYXJlZF9wdHI8YWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJp
bmc+PiBlcnJvcl87CisgIGJvb2wgbW92ZWRfZnJvbV8gPSBmYWxzZTsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorYm9vbCBTcHlIYXNoU3RhdGVJbXBsPFQ+OjpkaXJlY3RfYWJzbF9oYXNo
X3ZhbHVlX2Vycm9yXzsKKwordGVtcGxhdGUgPGJvb2wmIEI+CitzdHJ1Y3QgT2RyVXNlIHsKKyAg
Y29uc3RleHByIE9kclVzZSgpIHt9CisgIGJvb2wmIGIgPSBCOworfTsKKwordGVtcGxhdGUgPHZv
aWQgKCopKCk+CitzdHJ1Y3QgUnVuT25TdGFydHVwIHsKKyAgc3RhdGljIGJvb2wgcnVuOworICBz
dGF0aWMgY29uc3RleHByIE9kclVzZTxydW4+IGtPZHJVc2V7fTsKK307CisKK3RlbXBsYXRlIDx2
b2lkICgqZikoKT4KK2Jvb2wgUnVuT25TdGFydHVwPGY+OjpydW4gPSAoZigpLCB0cnVlKTsKKwor
dGVtcGxhdGUgPAorICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsCisgICAgLy8gT25seSB0cmln
Z2VyIGZvciB3aGVuIChUICE9IFUpLAorICAgIGFic2w6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3Nh
bWU8VCwgVT46OnZhbHVlLCBpbnQ+ID0gMCwKKyAgICAvLyBUaGlzIHN0YXRlbWVudCB3b3JrcyBp
biB0d28gd2F5czoKKyAgICAvLyAgLSBGaXJzdCwgaXQgaW5zdGFudGlhdGVzIFJ1bk9uU3RhcnR1
cCBhbmQgZm9yY2VzIHRoZSBpbml0aWFsaXphdGlvbiBvZgorICAgIC8vICAgIGBydW5gLCB3aGlj
aCBzZXQgdGhlIGdsb2JhbCB2YXJpYWJsZS4KKyAgICAvLyAgLSBTZWNvbmQsIGl0IHRyaWdnZXJz
IGEgU0ZJTkFFIGVycm9yIGRpc2FibGluZyB0aGUgb3ZlcmxvYWQgdG8gcHJldmVudAorICAgIC8v
ICAgIGNvbXBpbGUgdGltZSBlcnJvcnMuIElmIHdlIGRpZG4ndCBkaXNhYmxlIHRoZSBvdmVybG9h
ZCB3ZSB3b3VsZCBnZXQKKyAgICAvLyAgICBhbWJpZ3VvdXMgb3ZlcmxvYWQgZXJyb3JzLCB3aGlj
aCB3ZSBkb24ndCB3YW50LgorICAgIGludCA9IFJ1bk9uU3RhcnR1cDxTcHlIYXNoU3RhdGVJbXBs
PFQ+OjpTZXREaXJlY3RBYnNsSGFzaFZhbHVlRXJyb3I+OjpydW4+Cit2b2lkIEFic2xIYXNoVmFs
dWUoU3B5SGFzaFN0YXRlSW1wbDxUPiwgY29uc3QgVSYpOworCit1c2luZyBTcHlIYXNoU3RhdGUg
PSBTcHlIYXNoU3RhdGVJbXBsPHZvaWQ+OworCit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5h
bAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxf
U1BZX0hBU0hfU1RBVEVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9CVUlMRC5iYXplbCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL21lbW9yeS9CVUlMRC5iYXplbAppbmRleCA0NmY0N2IxMmJiMmFkYjJmNjcyZmIwNTBm
YjQwZDc3ZWNmODViYzIxLi44OWEzMTJlYWM0YjE5YmY4OGJhMWYyMTAwY2EwNDVkMWNjMzI3ODVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5
L0JVSUxELmJhemVsCkBAIC0xOSw2ICsxOSw3IEBAIGxvYWQoCiAgICAgIkFCU0xfREVGQVVMVF9D
T1BUUyIsCiAgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiAgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFH
IiwKKyAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMiLAogKQogCiBwYWNrYWdlKGRl
ZmF1bHRfdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnB1YmxpYyJdKQpAQCAtNTMsNiArNTQs
NyBAQCBjY190ZXN0KAogICAgICAgICAibWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyIs
CiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19G
TEFHLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAg
ZGVwcyA9IFsKICAgICAgICAgIjptZW1vcnkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0
aW9uX3NhZmV0eV90ZXN0aW5nIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnkuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL21lbW9yeS9tZW1vcnkuaAppbmRleCBjN2NhZjhiOTRkYzkxYjI4MzhkMTNlYjQ4OTA0
ZDE3MmQyYTMwZjczLi4xZWFlYzBmNDBhZWFkNTdkNjkyZTRiODU4ZTY0MjE0MDQ1NjQ1ZjgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9y
eS5oCkBAIC0zOSwxNiArMzksMzAgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gRnVuY3Rpb24gVGVt
cGxhdGU6IFdyYXBVbmlxdWUoKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0vLyAgQWRv
cHRzIG93bmVyc2hpcCBmcm9tIGEgcmF3IHBvaW50ZXIgYW5kIHRyYW5zZmVycyBpdCB0byB0aGUg
cmV0dXJuZWQKLS8vICBgc3RkOjp1bmlxdWVfcHRyYCwgd2hvc2UgdHlwZSBpcyBkZWR1Y2VkLiBE
TyBOT1Qgc3BlY2lmeSB0aGUgdGVtcGxhdGUgdHlwZSBUCi0vLyAgd2hlbiBjYWxsaW5nIFdyYXBV
bmlxdWUuCisvLyBBZG9wdHMgb3duZXJzaGlwIGZyb20gYSByYXcgcG9pbnRlciBhbmQgdHJhbnNm
ZXJzIGl0IHRvIHRoZSByZXR1cm5lZAorLy8gYHN0ZDo6dW5pcXVlX3B0cmAsIHdob3NlIHR5cGUg
aXMgZGVkdWNlZC4gQmVjYXVzZSBvZiB0aGlzIGRlZHVjdGlvbiwgKmRvIG5vdCoKKy8vIHNwZWNp
ZnkgdGhlIHRlbXBsYXRlIHR5cGUgYFRgIHdoZW4gY2FsbGluZyBgV3JhcFVuaXF1ZWAuCiAvLwog
Ly8gRXhhbXBsZToKIC8vICAgWCogTmV3WChpbnQsIGludCk7CiAvLyAgIGF1dG8geCA9IFdyYXBV
bmlxdWUoTmV3WCgxLCAyKSk7ICAvLyAneCcgaXMgc3RkOjp1bmlxdWVfcHRyPFg+LgogLy8KLS8v
IGBhYnNsOjpXcmFwVW5pcXVlYCBpcyB1c2VmdWwgZm9yIGNhcHR1cmluZyB0aGUgb3V0cHV0IG9m
IGEgcmF3IHBvaW50ZXIKLS8vIGZhY3RvcnkuIEhvd2V2ZXIsIHByZWZlciAnYWJzbDo6bWFrZV91
bmlxdWU8VD4oYXJncy4uLikgb3ZlcgorLy8gVGhlIHB1cnBvc2Ugb2YgV3JhcFVuaXF1ZSBpcyB0
byBhdXRvbWF0aWNhbGx5IGRlZHVjZSB0aGUgcG9pbnRlciB0eXBlLiBJZiB5b3UKKy8vIHdpc2gg
dG8gbWFrZSB0aGUgdHlwZSBleHBsaWNpdCwgZm9yIHJlYWRhYmlsaXR5IHJlYXNvbnMgb3IgYmVj
YXVzZSB5b3UgcHJlZmVyCisvLyB0byB1c2UgYSBiYXNlLWNsYXNzIHBvaW50ZXIgcmF0aGVyIHRo
YW4gYSBkZXJpdmVkIG9uZSwganVzdCB1c2UKKy8vIGBzdGQ6OnVuaXF1ZV9wdHJgIGRpcmVjdGx5
LgorLy8KKy8vIEV4YW1wbGU6CisvLyAgIFgqIEZhY3RvcnkoaW50LCBpbnQpOworLy8gICBhdXRv
IHggPSBzdGQ6OnVuaXF1ZV9wdHI8WD4oRmFjdG9yeSgxLCAyKSk7CisvLyAgICAgICAgICAgICAg
ICAgIC0gb3IgLQorLy8gICBzdGQ6OnVuaXF1ZV9wdHI8WD4geChGYWN0b3J5KDEsIDIpKTsKKy8v
CisvLyBUaGlzIGhhcyB0aGUgYWRkZWQgYWR2YW50YWdlIG9mIHdvcmtpbmcgd2hldGhlciBGYWN0
b3J5IHJldHVybnMgYSByYXcKKy8vIHBvaW50ZXIgb3IgYSBgc3RkOjp1bmlxdWVfcHRyYC4KKy8v
CisvLyBXaGlsZSBgYWJzbDo6V3JhcFVuaXF1ZWAgaXMgdXNlZnVsIGZvciBjYXB0dXJpbmcgdGhl
IG91dHB1dCBvZiBhIHJhdworLy8gcG9pbnRlciBmYWN0b3J5LCBwcmVmZXIgJ2Fic2w6Om1ha2Vf
dW5pcXVlPFQ+KGFyZ3MuLi4pJyBvdmVyCiAvLyAnYWJzbDo6V3JhcFVuaXF1ZShuZXcgVChhcmdz
Li4uKSknLgogLy8KIC8vICAgYXV0byB4ID0gV3JhcFVuaXF1ZShuZXcgWCgxLCAyKSk7ICAvLyB3
b3JrcywgYnV0IG5vbmlkZWFsLgpAQCAtNjQxLDU1ICs2NTUsNTkgQEAgc3RydWN0IGRlZmF1bHRf
YWxsb2NhdG9yX2lzX25vdGhyb3cgOiBzdGQ6OmZhbHNlX3R5cGUge307CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIG1lbW9yeV9pbnRlcm5hbCB7Ci0jaWZkZWYgQUJTTF9IQVZFX0VYQ0VQVElPTlMKLXRl
bXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIFN0b3JhZ2VFbGVtZW50LCB0eXBl
bmFtZS4uLiBBcmdzPgotdm9pZCBDb25zdHJ1Y3RTdG9yYWdlKEFsbG9jYXRvciogYWxsb2MsIFN0
b3JhZ2VFbGVtZW50KiBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlRWxlbWVu
dCogbGFzdCwgY29uc3QgQXJncyYuLi4gYXJncykgewotICBmb3IgKFN0b3JhZ2VFbGVtZW50KiBj
dXIgPSBmaXJzdDsgY3VyICE9IGxhc3Q7ICsrY3VyKSB7CisjaWZkZWYgQUJTTF9IQVZFX0VYQ0VQ
VElPTlMgIC8vIENvbnN0cnVjdFJhbmdlCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yLCB0
eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUuLi4gQXJncz4KK3ZvaWQgQ29uc3RydWN0UmFuZ2Uo
QWxsb2NhdG9yJiBhbGxvYywgSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QsCisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKKyAgZm9yIChJdGVyYXRvciBjdXIg
PSBmaXJzdDsgY3VyICE9IGxhc3Q7ICsrY3VyKSB7CiAgICAgdHJ5IHsKLSAgICAgIHN0ZDo6YWxs
b2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoKmFsbG9jLCBjdXIsIGFyZ3MuLi4p
OworICAgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdChhbGxv
YywgY3VyLCBhcmdzLi4uKTsKICAgICB9IGNhdGNoICguLi4pIHsKICAgICAgIHdoaWxlIChjdXIg
IT0gZmlyc3QpIHsKICAgICAgICAgLS1jdXI7Ci0gICAgICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0
czxBbGxvY2F0b3I+OjpkZXN0cm95KCphbGxvYywgY3VyKTsKKyAgICAgICAgc3RkOjphbGxvY2F0
b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koYWxsb2MsIGN1cik7CiAgICAgICB9CiAgICAg
ICB0aHJvdzsKICAgICB9CiAgIH0KIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvY2F0b3IsIHR5
cGVuYW1lIFN0b3JhZ2VFbGVtZW50LCB0eXBlbmFtZSBJdGVyYXRvcj4KLXZvaWQgQ29weVRvU3Rv
cmFnZUZyb21SYW5nZShBbGxvY2F0b3IqIGFsbG9jLCBTdG9yYWdlRWxlbWVudCogZGVzdGluYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9y
IGxhc3QpIHsKLSAgZm9yIChTdG9yYWdlRWxlbWVudCogY3VyID0gZGVzdGluYXRpb247IGZpcnN0
ICE9IGxhc3Q7CisjZWxzZSAgIC8vIEFCU0xfSEFWRV9FWENFUFRJT05TICAvLyBDb25zdHJ1Y3RS
YW5nZQordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvciwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5
cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIENvbnN0cnVjdFJhbmdlKEFsbG9jYXRvciYgYWxsb2MsIEl0
ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBB
cmdzJi4uLiBhcmdzKSB7CisgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KSB7CisgICAg
c3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdChhbGxvYywgZmlyc3Qs
IGFyZ3MuLi4pOworICB9Cit9CisjZW5kaWYgIC8vIEFCU0xfSEFWRV9FWENFUFRJT05TICAvLyBD
b25zdHJ1Y3RSYW5nZQorCisjaWZkZWYgQUJTTF9IQVZFX0VYQ0VQVElPTlMgIC8vIENvcHlSYW5n
ZQordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvciwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVu
YW1lIElucHV0SXRlcmF0b3I+Cit2b2lkIENvcHlSYW5nZShBbGxvY2F0b3ImIGFsbG9jLCBJdGVy
YXRvciBkZXN0aW5hdGlvbiwgSW5wdXRJdGVyYXRvciBmaXJzdCwKKyAgICAgICAgICAgICAgIElu
cHV0SXRlcmF0b3IgbGFzdCkgeworICBmb3IgKEl0ZXJhdG9yIGN1ciA9IGRlc3RpbmF0aW9uOyBm
aXJzdCAhPSBsYXN0OwogICAgICAgIHN0YXRpY19jYXN0PHZvaWQ+KCsrY3VyKSwgc3RhdGljX2Nh
c3Q8dm9pZD4oKytmaXJzdCkpIHsKICAgICB0cnkgewotICAgICAgc3RkOjphbGxvY2F0b3JfdHJh
aXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdCgqYWxsb2MsIGN1ciwgKmZpcnN0KTsKKyAgICAgIHN0
ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoYWxsb2MsIGN1ciwgKmZp
cnN0KTsKICAgICB9IGNhdGNoICguLi4pIHsKICAgICAgIHdoaWxlIChjdXIgIT0gZGVzdGluYXRp
b24pIHsKICAgICAgICAgLS1jdXI7Ci0gICAgICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxv
Y2F0b3I+OjpkZXN0cm95KCphbGxvYywgY3VyKTsKKyAgICAgICAgc3RkOjphbGxvY2F0b3JfdHJh
aXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koYWxsb2MsIGN1cik7CiAgICAgICB9CiAgICAgICB0aHJv
dzsKICAgICB9CiAgIH0KIH0KLSNlbHNlICAgLy8gQUJTTF9IQVZFX0VYQ0VQVElPTlMKLXRlbXBs
YXRlIDx0eXBlbmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIFN0b3JhZ2VFbGVtZW50LCB0eXBlbmFt
ZS4uLiBBcmdzPgotdm9pZCBDb25zdHJ1Y3RTdG9yYWdlKEFsbG9jYXRvciogYWxsb2MsIFN0b3Jh
Z2VFbGVtZW50KiBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlRWxlbWVudCog
bGFzdCwgY29uc3QgQXJncyYuLi4gYXJncykgewotICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytm
aXJzdCkgewotICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3Qo
KmFsbG9jLCBmaXJzdCwgYXJncy4uLik7Ci0gIH0KLX0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBbGxv
Y2F0b3IsIHR5cGVuYW1lIFN0b3JhZ2VFbGVtZW50LCB0eXBlbmFtZSBJdGVyYXRvcj4KLXZvaWQg
Q29weVRvU3RvcmFnZUZyb21SYW5nZShBbGxvY2F0b3IqIGFsbG9jLCBTdG9yYWdlRWxlbWVudCog
ZGVzdGluYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgZmlyc3Qs
IEl0ZXJhdG9yIGxhc3QpIHsKKyNlbHNlICAgLy8gQUJTTF9IQVZFX0VYQ0VQVElPTlMgIC8vIENv
cHlSYW5nZQordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvciwgdHlwZW5hbWUgSXRlcmF0b3Is
IHR5cGVuYW1lIElucHV0SXRlcmF0b3I+Cit2b2lkIENvcHlSYW5nZShBbGxvY2F0b3ImIGFsbG9j
LCBJdGVyYXRvciBkZXN0aW5hdGlvbiwgSW5wdXRJdGVyYXRvciBmaXJzdCwKKyAgICAgICAgICAg
ICAgIElucHV0SXRlcmF0b3IgbGFzdCkgewogICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsKICAgICAg
ICBzdGF0aWNfY2FzdDx2b2lkPigrK2Rlc3RpbmF0aW9uKSwgc3RhdGljX2Nhc3Q8dm9pZD4oKytm
aXJzdCkpIHsKLSAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0
KCphbGxvYywgZGVzdGluYXRpb24sICpmaXJzdCk7CisgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRz
PEFsbG9jYXRvcj46OmNvbnN0cnVjdChhbGxvYywgZGVzdGluYXRpb24sICpmaXJzdCk7CiAgIH0K
IH0KLSNlbmRpZiAgLy8gQUJTTF9IQVZFX0VYQ0VQVElPTlMKKyNlbmRpZiAgLy8gQUJTTF9IQVZF
X0VYQ0VQVElPTlMgIC8vIENvcHlSYW5nZQogfSAgLy8gbmFtZXNwYWNlIG1lbW9yeV9pbnRlcm5h
bAogfSAgLy8gbmFtZXNwYWNlIGFic2wKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9y
eV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5X2V4Y2VwdGlv
bl9zYWZldHlfdGVzdC5jYwppbmRleCBkMWY2ZTg0ZjEwZjhhNjY4YWMyNWZiNmQ5MGNjYzVhNzgz
MjAyMjE5Li4wMGQyYjE5MmNmYzMyZGY2MjQzNjNjYTg2M2VjNzlmOTBmNjE4NWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnkvbWVtb3J5X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwpAQCAtMzIsNyArMzIs
NyBAQCBURVNUKE1ha2VVbmlxdWUsIENoZWNrRm9yTGVha3MpIHsKICAgICAgICAgICAgICAgICAg
ICAgLldpdGhJbml0aWFsVmFsdWUoVGhyb3dlcihrVmFsdWUpKQogICAgICAgICAgICAgICAgICAg
ICAvLyBFbnN1cmVzIG1ha2VfdW5pcXVlIGRvZXMgbm90IG1vZGlmeSB0aGUgaW5wdXQuIFRoZSBy
ZWFsCiAgICAgICAgICAgICAgICAgICAgIC8vIHRlc3QsIHRob3VnaCwgaXMgQ29uc3RydWN0b3JU
cmFja2VyIGNoZWNraW5nIGZvciBsZWFrcy4KLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZh
cmlhbnRzKHRlc3Rpbmc6OnN0cm9uZ19ndWFyYW50ZWUpOworICAgICAgICAgICAgICAgICAgICAu
V2l0aENvbnRyYWN0cyh0ZXN0aW5nOjpzdHJvbmdfZ3VhcmFudGVlKTsKIAogICBFWFBFQ1RfVFJV
RSh0ZXN0ZXIuVGVzdChbXShUaHJvd2VyKiB0aHJvd2VyKSB7CiAgICAgc3RhdGljX2Nhc3Q8dm9p
ZD4oYWJzbDo6bWFrZV91bmlxdWU8VGhyb3dlcj4oKnRocm93ZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21lbW9yeS9tZW1vcnlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnlfdGVzdC5jYwpp
bmRleCBkZWU5YjQ4NmEzMGQzMGQyNTU3MDVhYzM4MTRmMTlmNzgxOTk0MDUzLi4yZTQ1M2UyMmJh
NWJhMzljZmQ2OTBmYzU5MWU0YWZlNDg3Y2I3OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkv
bWVtb3J5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV90ZXN0LmNjCkBAIC0xNDks
NyArMTQ5LDYgQEAgVEVTVChNYWtlX1VuaXF1ZVRlc3QsIE5vdEFtYmlndW91c1dpdGhTdGRNYWtl
VW5pcXVlKSB7CiB9CiAKICNpZiAwCi0vLyBUT0RPKGJpbGx5ZG9uYWh1ZSk6IE1ha2UgYSBwcm9w
ZXIgTkMgdGVzdC4KIC8vIFRoZXNlIHRlc3RzIHNob3VsZG4ndCBjb21waWxlLgogVEVTVChNYWtl
VW5pcXVlVGVzdE5DLCBBY2NlcHRNb3ZlT25seUx2YWx1ZSkgewogICBhdXRvIG0gPSBNb3ZlT25s
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90eXBlX3RyYWl0cy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90
eXBlX3RyYWl0cy5oCmluZGV4IDQ1N2I4OTA4NDFhNjRmYjRlZDM2Y2RlODYyMWQ3ODIyMTkwYjc5
OGQuLjIzZWJkNmVkMDk5MGZkM2Q5NTEwZDRkOTEwNjZmMDc0Y2ZlMTExMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL21ldGEvdHlwZV90cmFpdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgK
QEAgLTEwNSw4ICsxMDUsMjUgQEAgdGVtcGxhdGUgPGNsYXNzIFRvLCB0ZW1wbGF0ZSA8Y2xhc3Mu
Li4+IGNsYXNzIE9wLCBjbGFzcy4uLiBBcmdzPgogc3RydWN0IGlzX2RldGVjdGVkX2NvbnZlcnRp
YmxlCiAgICAgOiBpc19kZXRlY3RlZF9jb252ZXJ0aWJsZV9pbXBsPHZvaWQsIFRvLCBPcCwgQXJn
cy4uLj46OnR5cGUge307CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgSXNDb3B5QXNz
aWduYWJsZUltcGwgPQorICAgIGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUJj4oKSA9IHN0ZDo6ZGVj
bHZhbDxjb25zdCBUJj4oKSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgSXNNb3Zl
QXNzaWduYWJsZUltcGwgPSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VCY+KCkgPSBzdGQ6OmRlY2x2
YWw8VCYmPigpKTsKKwogfSAgLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzX2ludGVybmFsCiAKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX2NvcHlfYXNzaWduYWJsZSA6IHR5cGVfdHJh
aXRzX2ludGVybmFsOjppc19kZXRlY3RlZDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZV90cmFpdHNfaW50ZXJuYWw6OklzQ29weUFzc2lnbmFibGVJbXBsLCBUPiB7Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19tb3ZlX2Fzc2lnbmFibGUgOiB0eXBl
X3RyYWl0c19pbnRlcm5hbDo6aXNfZGV0ZWN0ZWQ8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGVfdHJhaXRzX2ludGVybmFsOjpJc01vdmVBc3NpZ25hYmxlSW1wbCwgVD4gewor
fTsKKwogLy8gdm9pZF90KCkKIC8vCiAvLyBJZ25vcmVzIHRoZSB0eXBlIG9mIGFueSBpdHMgYXJn
dW1lbnRzIGFuZCByZXR1cm5zIGB2b2lkYC4gSW4gZ2VuZXJhbCwgdGhpcwpAQCAtMzA5LDcgKzMy
Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlzX3RyaXZpYWxseV9jb3B5X2Fz
c2lnbmFibGUKICAgICA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8CiAgICAgICAgICAgYm9vbCwg
X19oYXNfdHJpdmlhbF9hc3NpZ24odHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0
eXBlKSAmJgotICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxUPjo6
dmFsdWU+IHsKKyAgICAgICAgICAgICAgICAgICAgYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPFQ+
Ojp2YWx1ZT4gewogI2lmZGVmIEFCU0xfSEFWRV9TVERfSVNfVFJJVklBTExZX0FTU0lHTkFCTEUK
ICBwcml2YXRlOgogICBzdGF0aWMgY29uc3RleHByIGJvb2wgY29tcGxpYW50ID0KQEAgLTQwOSwx
MSArNDI2LDExIEBAIHN0cnVjdCBJc0hhc2hFbmFibGVkCiAgICAgOiBhYnNsOjpjb25qdW5jdGlv
bjxzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxzdGQ6Omhhc2g8S2V5Pj4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxzdGQ6Omhhc2g8S2V5
Pj4sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Rlc3RydWN0aWJsZTxzdGQ6Omhh
c2g8S2V5Pj4sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvcHlfYXNzaWduYWJs
ZTxzdGQ6Omhhc2g8S2V5Pj4sCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjppc19jb3B5
X2Fzc2lnbmFibGU8c3RkOjpoYXNoPEtleT4+LAogICAgICAgICAgICAgICAgICAgICAgICAgSXNI
YXNoYWJsZTxLZXk+PiB7fTsKKwogfSAgLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzX2ludGVybmFs
CiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKLQogI2VuZGlmICAvLyBBQlNMX01FVEFfVFlQRV9U
UkFJVFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFpdHNfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21ldGEvdHlwZV90cmFpdHNfdGVzdC5jYwppbmRleCA4MWI0YmQzMjM5NzdlNWUzY2QyNzY2
MGM1MGNjZWQ4NmFiMjI1MDE3Li5mNTFmNWRlZGVlNDM1ZDY4M2I0YjJmNWViMzAxMmJkNjFiNWUy
YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzX3Rlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWV0YS90eXBlX3RyYWl0c190ZXN0LmNjCkBAIC04NzcsNCArODc3LDgwIEBAIFRFU1QoVHlw
ZVRyYWl0c1Rlc3QsIFRlc3RSZXN1bHRPZikgewogICBFWFBFQ1RfRVEoVHlwZUVudW06OkQsIEdl
dFR5cGVFeHQoV3JhcDxUeXBlRD4oKSkpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jv
b2wgVGVzdENvcHlBc3NpZ24oKSB7CisgIHJldHVybiBhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8
VD46OnZhbHVlID09CisgICAgICAgICBzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxUPjo6dmFsdWU7
Cit9CisKK1RFU1QoVHlwZVRyYWl0c1Rlc3QsIElzQ29weUFzc2lnbmFibGUpIHsKKyAgRVhQRUNU
X1RSVUUoVGVzdENvcHlBc3NpZ248aW50PigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdENvcHlBc3Np
Z248aW50Jj4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPGludCYmPigpKTsKKwor
ICBzdHJ1Y3QgUyB7fTsKKyAgRVhQRUNUX1RSVUUoVGVzdENvcHlBc3NpZ248Uz4oKSk7CisgIEVY
UEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPFMmPigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdENvcHlB
c3NpZ248UyYmPigpKTsKKworICBjbGFzcyBDIHsKKyAgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBD
KEMqIGMpIDogY18oYykge30KKyAgICB+QygpIHsgZGVsZXRlIGNfOyB9CisKKyAgIHByaXZhdGU6
CisgICAgQyogY187CisgIH07CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPEM+KCkpOwor
ICBFWFBFQ1RfVFJVRShUZXN0Q29weUFzc2lnbjxDJj4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RD
b3B5QXNzaWduPEMmJj4oKSk7CisKKyAgLy8gUmVhc29uIGZvciBpZm5kZWY6IGFkZF9sdmFsdWVf
cmVmZXJlbmNlPFQ+IGluIGxpYmMrKyBicmVha3MgZm9yIHRoZXNlIGNhc2VzCisjaWZuZGVmIF9M
SUJDUFBfVkVSU0lPTgorICBFWFBFQ1RfVFJVRShUZXN0Q29weUFzc2lnbjxpbnQoKT4oKSk7Cisg
IEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPGludChpbnQpIGNvbnN0PigpKTsKKyAgRVhQRUNU
X1RSVUUoVGVzdENvcHlBc3NpZ248aW50KC4uLikgdm9sYXRpbGUmPigpKTsKKyAgRVhQRUNUX1RS
VUUoVGVzdENvcHlBc3NpZ248aW50KGludCwgLi4uKSBjb25zdCB2b2xhdGlsZSYmPigpKTsKKyNl
bmRpZiAgLy8gX0xJQkNQUF9WRVJTSU9OCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorYm9v
bCBUZXN0TW92ZUFzc2lnbigpIHsKKyAgcmV0dXJuIGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxU
Pjo6dmFsdWUgPT0KKyAgICAgICAgIHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZTsK
K30KKworVEVTVChUeXBlVHJhaXRzVGVzdCwgSXNNb3ZlQXNzaWduYWJsZSkgeworICBFWFBFQ1Rf
VFJVRShUZXN0TW92ZUFzc2lnbjxpbnQ+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFzc2ln
bjxpbnQmPigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248aW50JiY+KCkpOworCisg
IHN0cnVjdCBTIHt9OworICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFzc2lnbjxTPigpKTsKKyAgRVhQ
RUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248UyY+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFz
c2lnbjxTJiY+KCkpOworCisgIGNsYXNzIEMgeworICAgcHVibGljOgorICAgIGV4cGxpY2l0IEMo
QyogYykgOiBjXyhjKSB7fQorICAgIH5DKCkgeyBkZWxldGUgY187IH0KKyAgICB2b2lkIG9wZXJh
dG9yPShjb25zdCBDJikgPSBkZWxldGU7CisgICAgdm9pZCBvcGVyYXRvcj0oQyYmKSA9IGRlbGV0
ZTsKKworICAgcHJpdmF0ZToKKyAgICBDKiBjXzsKKyAgfTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1v
dmVBc3NpZ248Qz4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RNb3ZlQXNzaWduPEMmPigpKTsKKyAg
RVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248QyYmPigpKTsKKworICAvLyBSZWFzb24gZm9yIGlm
bmRlZjogYWRkX2x2YWx1ZV9yZWZlcmVuY2U8VD4gaW4gbGliYysrIGJyZWFrcyBmb3IgdGhlc2Ug
Y2FzZXMKKyNpZm5kZWYgX0xJQkNQUF9WRVJTSU9OCisgIEVYUEVDVF9UUlVFKFRlc3RNb3ZlQXNz
aWduPGludCgpPigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248aW50KGludCkgY29u
c3Q+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFzc2lnbjxpbnQoLi4uKSB2b2xhdGlsZSY+
KCkpOworICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFzc2lnbjxpbnQoaW50LCAuLi4pIGNvbnN0IHZv
bGF0aWxlJiY+KCkpOworI2VuZGlmICAvLyBfTElCQ1BQX1ZFUlNJT04KK30KKwogfSAgLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL0JVSUxELmJhemVsIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVt
ZXJpYy9CVUlMRC5iYXplbAppbmRleCBmNDk1NzFlYmIzZTEwNDI0MzQxNTFhMjIzNzEyN2E5OWRm
MWFkMzAxLi4zMjRjZTY2OTVlNDAyYzg5NzNmYzViNWRmMjU3YWE1ZjI2NTIwM2RkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9udW1lcmljL0JVSUxELmJhemVsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvQlVJTEQu
YmF6ZWwKQEAgLTQ5LDYgKzQ5LDcgQEAgY2NfdGVzdCgKICAgICAgICAgIjppbnQxMjgiLAogICAg
ICAgICAiLy9hYnNsL2Jhc2UiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwK
KyAgICAgICAgIi8vYWJzbC9oYXNoOmhhc2hfdGVzdGluZyIsCiAgICAgICAgICIvL2Fic2wvbWV0
YTp0eXBlX3RyYWl0cyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3Rf
bWFpbiIsCiAgICAgXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9udW1lcmljL2ludDEyOC5oCmluZGV4IDJkMTMxYjhiZGExYzM0OGQ5MTc0M2U3YzQyZDM4YTU3
OTY4YzMzMGIuLjc5YjYyYTc1ODY2OTVkNWIyZjQzMWQzOGFmNTJhMGFiMjI3NGFlMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjgu
aApAQCAtMTkyLDYgKzE5MiwxMiBAQCBjbGFzcwogICAvLyBSZXR1cm5zIHRoZSBoaWdoZXN0IHZh
bHVlIGZvciBhIDEyOC1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgZnJpZW5kIGNvbnN0ZXhwciB1
aW50MTI4IFVpbnQxMjhNYXgoKTsKIAorICAvLyBTdXBwb3J0IGZvciBhYnNsOjpIYXNoLgorICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIHVpbnQx
MjggdikgeworICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoKSwgVWludDEyOEhpZ2g2
NCh2KSwgVWludDEyOExvdzY0KHYpKTsKKyAgfQorCiAgcHJpdmF0ZToKICAgY29uc3RleHByIHVp
bnQxMjgodWludDY0X3QgaGlnaCwgdWludDY0X3QgbG93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bnVtZXJpYy9pbnQxMjhfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3Rlc3QuY2MKaW5k
ZXggMWViM2UwZWM4OTYxYzFjNmM4ODc1NmVmMWYyMDFmMDIwM2FlZTBhMi4uZGZlMzQ3NWFjYTA2
MjdiMjllNjMzY2MyZjg1Y2U4NDZiNjFiYzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9p
bnQxMjhfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF90ZXN0LmNjCkBAIC0yMyw2
ICsyMyw3IEBACiAKICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgImFic2wvYmFz
ZS9pbnRlcm5hbC9jeWNsZWNsb2NrLmgiCisjaW5jbHVkZSAiYWJzbC9oYXNoL2hhc2hfdGVzdGlu
Zy5oIgogI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgogCiAjaWYgZGVmaW5lZChf
TVNDX1ZFUikgJiYgX01TQ19WRVIgPT0gMTkwMApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9C
VUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuYmF6ZWwKaW5kZXggM2E1ZjEzMzJjZGEw
ZTFmNzA0MGVmMGRiZGFlNTU3YjAxODIxMzg1NC4uNmQ3YzI2MTlhNTMwZTAwMGY3NGVhMzExNWRm
ZDc5N2Q3MDIwNTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9CVUlMRC5iYXplbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL0JVSUxELmJhemVsCkBAIC0xOSw2ICsxOSw3IEBAIGxvYWQoCiAgICAg
IkFCU0xfREVGQVVMVF9DT1BUUyIsCiAgICAgIkFCU0xfVEVTVF9DT1BUUyIsCiAgICAgIkFCU0xf
RVhDRVBUSU9OU19GTEFHIiwKKyAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMiLAog
KQogCiBwYWNrYWdlKApAQCAtNjksNiArNzAsNyBAQCBjY19saWJyYXJ5KAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6aW50ZXJuYWwiLAogICAgICAgICAiLy9hYnNsL2Jhc2UiLAorICAgICAgICAi
Ly9hYnNsL2Jhc2U6Yml0cyIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLAogICAgICAg
ICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmVuZGlh
biIsCkBAIC04Niw3ICs4OCw2IEBAIGNjX2xpYnJhcnkoCiAgICAgICAgICJpbnRlcm5hbC91dGY4
LmNjIiwKICAgICBdLAogICAgIGhkcnMgPSBbCi0gICAgICAgICJpbnRlcm5hbC9iaXRzLmgiLAog
ICAgICAgICAiaW50ZXJuYWwvY2hhcl9tYXAuaCIsCiAgICAgICAgICJpbnRlcm5hbC9vc3RyaW5n
c3RyZWFtLmgiLAogICAgICAgICAiaW50ZXJuYWwvcmVzaXplX3VuaW5pdGlhbGl6ZWQuaCIsCkBA
IC0yMTIsNyArMjEzLDYgQEAgY2NfdGVzdCgKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxp
dHk6cHJpdmF0ZSJdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6aW50ZXJuYWwiLAotICAgICAg
ICAiOnN0cmluZ3MiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKICAgICAg
ICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAgICBdLApAQCAtMjM3
LDYgKzIzNyw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIsCiAgICAgc3JjcyA9IFsi
c3RyaW5nX3ZpZXdfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJT
TF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19M
SU5LT1BUUywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICI6c3RyaW5ncyIsCkBAIC0zNzMsNyArMzc0LDYgQEAgY2NfdGVz
dCgKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAogICAgIGRlcHMg
PSBbCiAgICAgICAgICI6c3RyaW5ncyIsCi0gICAgICAgICIvL2Fic2wvbWVtb3J5IiwKICAgICAg
ICAgIkBjb21fZ2l0aHViX2dvb2dsZV9iZW5jaG1hcmsvLzpiZW5jaG1hcmtfbWFpbiIsCiAgICAg
XSwKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L0JVSUxELmduCmluZGV4IDlhOGExMGQwZTcxMDhlNzllNDJjOWM1YjM2MzU1Y2Y4NzkwMTZiOTUu
LjIwYWY4M2MwZTUxOGI2NTBlYjJlODk5ZDNlN2IzYzllZmU3YzEwOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9CVUlMRC5nbgpAQCAtNTks
NiArNTksNyBAQCBzb3VyY2Vfc2V0KCJzdHJpbmdzIikgewogICBkZXBzID0gWwogICAgICI6aW50
ZXJuYWwiLAogICAgICIuLi9iYXNlIiwKKyAgICAiLi4vYmFzZTpiaXRzIiwKICAgICAiLi4vYmFz
ZTpjb25maWciLAogICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgIi4uL2Jhc2U6ZW5k
aWFuIiwKQEAgLTgxLDcgKzgyLDYgQEAgc291cmNlX3NldCgiaW50ZXJuYWwiKSB7CiAgICAgImlu
dGVybmFsL3V0ZjguY2MiLAogICBdCiAgIHB1YmxpYyA9IFsKLSAgICAiaW50ZXJuYWwvYml0cy5o
IiwKICAgICAiaW50ZXJuYWwvY2hhcl9tYXAuaCIsCiAgICAgImludGVybmFsL29zdHJpbmdzdHJl
YW0uaCIsCiAgICAgImludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkLmgiLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQ01ha2VMaXN0
cy50eHQKaW5kZXggY2QxMjIxMzQ3MjlmYTY4NmU5ODYxMDI2OWYxOGFjYjE4ZjhkMzAwNy4uZjNl
NDE2MjM4N2YxNWM4MzJkNzUwNjJhZGNjNmI3ZWQ1ZDVkYTE3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0NNYWtlTGlzdHMudHh0
CkBAIC0zMiw3ICszMiw2IEBAIGxpc3QoQVBQRU5EIFNUUklOR1NfUFVCTElDX0hFQURFUlMKIAog
CiBsaXN0KEFQUEVORCBTVFJJTkdTX0lOVEVSTkFMX0hFQURFUlMKLSAgImludGVybmFsL2JpdHMu
aCIKICAgImludGVybmFsL2NoYXJfbWFwLmgiCiAgICJpbnRlcm5hbC9jaGFyY29udl9iaWdpbnQu
aCIKICAgImludGVybmFsL2NoYXJjb252X3BhcnNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2FzY2lpLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpLmgKaW5kZXggOTZhNjQ1NDFjMzIxYTcx
MGQyOWVmYzhkOTI2Mzg2MmYxYjk5NjBlNy4uNDhhOWRhMjJlNzY5YTg1MTI4YTY5Y2YyZGZjMzMy
OTgwYWZlZDQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvYXNjaWkuaApAQCAtMTY1LDcgKzE2NSw3IEBAIGlubGluZSBjaGFyIGFzY2lpX3Rv
bG93ZXIodW5zaWduZWQgY2hhciBjKSB7CiAvLyBDb252ZXJ0cyB0aGUgY2hhcmFjdGVycyBpbiBg
c2AgdG8gbG93ZXJjYXNlLCBjaGFuZ2luZyB0aGUgY29udGVudHMgb2YgYHNgLgogdm9pZCBBc2Np
aVN0clRvTG93ZXIoc3RkOjpzdHJpbmcqIHMpOwogCi0vLyBDcmVhdGVzIGEgbG93ZXJjYXNlIHN0
ZDo6c3RyaW5nIGZyb20gYSBnaXZlbiBhYnNsOjpzdHJpbmdfdmlldy4KKy8vIENyZWF0ZXMgYSBs
b3dlcmNhc2Ugc3RyaW5nIGZyb20gYSBnaXZlbiBhYnNsOjpzdHJpbmdfdmlldy4KIEFCU0xfTVVT
VF9VU0VfUkVTVUxUIGlubGluZSBzdGQ6OnN0cmluZyBBc2NpaVN0clRvTG93ZXIoYWJzbDo6c3Ry
aW5nX3ZpZXcgcykgewogICBzdGQ6OnN0cmluZyByZXN1bHQocyk7CiAgIGFic2w6OkFzY2lpU3Ry
VG9Mb3dlcigmcmVzdWx0KTsKQEAgLTE4Myw3ICsxODMsNyBAQCBpbmxpbmUgY2hhciBhc2NpaV90
b3VwcGVyKHVuc2lnbmVkIGNoYXIgYykgewogLy8gQ29udmVydHMgdGhlIGNoYXJhY3RlcnMgaW4g
YHNgIHRvIHVwcGVyY2FzZSwgY2hhbmdpbmcgdGhlIGNvbnRlbnRzIG9mIGBzYC4KIHZvaWQgQXNj
aWlTdHJUb1VwcGVyKHN0ZDo6c3RyaW5nKiBzKTsKIAotLy8gQ3JlYXRlcyBhbiB1cHBlcmNhc2Ug
c3RkOjpzdHJpbmcgZnJvbSBhIGdpdmVuIGFic2w6OnN0cmluZ192aWV3LgorLy8gQ3JlYXRlcyBh
biB1cHBlcmNhc2Ugc3RyaW5nIGZyb20gYSBnaXZlbiBhYnNsOjpzdHJpbmdfdmlldy4KIEFCU0xf
TVVTVF9VU0VfUkVTVUxUIGlubGluZSBzdGQ6OnN0cmluZyBBc2NpaVN0clRvVXBwZXIoYWJzbDo6
c3RyaW5nX3ZpZXcgcykgewogICBzdGQ6OnN0cmluZyByZXN1bHQocyk7CiAgIGFic2w6OkFzY2lp
U3RyVG9VcHBlcigmcmVzdWx0KTsKQEAgLTE5NSwxMCArMTk1LDEwIEBAIEFCU0xfTVVTVF9VU0Vf
UkVTVUxUIGlubGluZSBzdGQ6OnN0cmluZyBBc2NpaVN0clRvVXBwZXIoYWJzbDo6c3RyaW5nX3Zp
ZXcgcykgewogQUJTTF9NVVNUX1VTRV9SRVNVTFQgaW5saW5lIGFic2w6OnN0cmluZ192aWV3IFN0
cmlwTGVhZGluZ0FzY2lpV2hpdGVzcGFjZSgKICAgICBhYnNsOjpzdHJpbmdfdmlldyBzdHIpIHsK
ICAgYXV0byBpdCA9IHN0ZDo6ZmluZF9pZl9ub3Qoc3RyLmJlZ2luKCksIHN0ci5lbmQoKSwgYWJz
bDo6YXNjaWlfaXNzcGFjZSk7Ci0gIHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyhpdCwgc3RyLmVu
ZCgpIC0gaXQpOworICByZXR1cm4gc3RyLnN1YnN0cihpdCAtIHN0ci5iZWdpbigpKTsKIH0KIAot
Ly8gU3RyaXBzIGluIHBsYWNlIHdoaXRlc3BhY2UgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBn
aXZlbiBzdGQ6OnN0cmluZy4KKy8vIFN0cmlwcyBpbiBwbGFjZSB3aGl0ZXNwYWNlIGZyb20gdGhl
IGJlZ2lubmluZyBvZiB0aGUgZ2l2ZW4gc3RyaW5nLgogaW5saW5lIHZvaWQgU3RyaXBMZWFkaW5n
QXNjaWlXaGl0ZXNwYWNlKHN0ZDo6c3RyaW5nKiBzdHIpIHsKICAgYXV0byBpdCA9IHN0ZDo6Zmlu
ZF9pZl9ub3Qoc3RyLT5iZWdpbigpLCBzdHItPmVuZCgpLCBhYnNsOjphc2NpaV9pc3NwYWNlKTsK
ICAgc3RyLT5lcmFzZShzdHItPmJlZ2luKCksIGl0KTsKQEAgLTIwOSwxMCArMjA5LDEwIEBAIGlu
bGluZSB2b2lkIFN0cmlwTGVhZGluZ0FzY2lpV2hpdGVzcGFjZShzdGQ6OnN0cmluZyogc3RyKSB7
CiBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgYWJzbDo6c3RyaW5nX3ZpZXcgU3RyaXBUcmFp
bGluZ0FzY2lpV2hpdGVzcGFjZSgKICAgICBhYnNsOjpzdHJpbmdfdmlldyBzdHIpIHsKICAgYXV0
byBpdCA9IHN0ZDo6ZmluZF9pZl9ub3Qoc3RyLnJiZWdpbigpLCBzdHIucmVuZCgpLCBhYnNsOjph
c2NpaV9pc3NwYWNlKTsKLSAgcmV0dXJuIGFic2w6OnN0cmluZ192aWV3KHN0ci5iZWdpbigpLCBz
dHIucmVuZCgpIC0gaXQpOworICByZXR1cm4gc3RyLnN1YnN0cigwLCBzdHIucmVuZCgpIC0gaXQp
OwogfQogCi0vLyBTdHJpcHMgaW4gcGxhY2Ugd2hpdGVzcGFjZSBmcm9tIHRoZSBlbmQgb2YgdGhl
IGdpdmVuIHN0ZDo6c3RyaW5nCisvLyBTdHJpcHMgaW4gcGxhY2Ugd2hpdGVzcGFjZSBmcm9tIHRo
ZSBlbmQgb2YgdGhlIGdpdmVuIHN0cmluZwogaW5saW5lIHZvaWQgU3RyaXBUcmFpbGluZ0FzY2lp
V2hpdGVzcGFjZShzdGQ6OnN0cmluZyogc3RyKSB7CiAgIGF1dG8gaXQgPSBzdGQ6OmZpbmRfaWZf
bm90KHN0ci0+cmJlZ2luKCksIHN0ci0+cmVuZCgpLCBhYnNsOjphc2NpaV9pc3NwYWNlKTsKICAg
c3RyLT5lcmFzZShzdHItPnJlbmQoKSAtIGl0KTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBBQlNMX01V
U1RfVVNFX1JFU1VMVCBpbmxpbmUgYWJzbDo6c3RyaW5nX3ZpZXcgU3RyaXBBc2NpaVdoaXRlc3Bh
Y2UoCiAgIHJldHVybiBTdHJpcFRyYWlsaW5nQXNjaWlXaGl0ZXNwYWNlKFN0cmlwTGVhZGluZ0Fz
Y2lpV2hpdGVzcGFjZShzdHIpKTsKIH0KIAotLy8gU3RyaXBzIGluIHBsYWNlIHdoaXRlc3BhY2Ug
ZnJvbSBib3RoIGVuZHMgb2YgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nCisvLyBTdHJpcHMgaW4gcGxh
Y2Ugd2hpdGVzcGFjZSBmcm9tIGJvdGggZW5kcyBvZiB0aGUgZ2l2ZW4gc3RyaW5nCiBpbmxpbmUg
dm9pZCBTdHJpcEFzY2lpV2hpdGVzcGFjZShzdGQ6OnN0cmluZyogc3RyKSB7CiAgIFN0cmlwVHJh
aWxpbmdBc2NpaVdoaXRlc3BhY2Uoc3RyKTsKICAgU3RyaXBMZWFkaW5nQXNjaWlXaGl0ZXNwYWNl
KHN0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9jaGFyY29udi5jYwppbmRleCAwOGMzOTQ3ZWNjZDQ3NWRlZTMzMzEwZDI0N2JmODc0MDAz
OTk4MGM4Li5jN2I4Yzk4YjFiNDQ1OWM1NmVhODUxZTkyODFlMzVhOTI2MTNjNjBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNv
bnYuY2MKQEAgLTIwLDggKzIwLDggQEAKICNpbmNsdWRlIDxjc3RyaW5nPgogCiAjaW5jbHVkZSAi
YWJzbC9iYXNlL2Nhc3RzLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaCIK
ICNpbmNsdWRlICJhYnNsL251bWVyaWMvaW50MTI4LmgiCi0jaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L2ludGVybmFsL2JpdHMuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNv
bnZfYmlnaW50LmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3Bh
cnNlLmgiCiAKQEAgLTI0Myw5ICsyNDMsOSBAQCBzdHJ1Y3QgQ2FsY3VsYXRlZEZsb2F0IHsKIC8v
IG1pbnVzIHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvIGJpdHMuKQogaW50IEJpdFdpZHRoKHVp
bnQxMjggdmFsdWUpIHsKICAgaWYgKFVpbnQxMjhIaWdoNjQodmFsdWUpID09IDApIHsKLSAgICBy
ZXR1cm4gNjQgLSBzdHJpbmdzX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0KFVpbnQxMjhM
b3c2NCh2YWx1ZSkpOworICAgIHJldHVybiA2NCAtIGJhc2VfaW50ZXJuYWw6OkNvdW50TGVhZGlu
Z1plcm9zNjQoVWludDEyOExvdzY0KHZhbHVlKSk7CiAgIH0KLSAgcmV0dXJuIDEyOCAtIHN0cmlu
Z3NfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQoVWludDEyOEhpZ2g2NCh2YWx1ZSkpOwor
ICByZXR1cm4gMTI4IC0gYmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChVaW50MTI4
SGlnaDY0KHZhbHVlKSk7CiB9CiAKIC8vIENhbGN1bGF0ZXMgaG93IGZhciB0byB0aGUgcmlnaHQg
YSBtYW50aXNzYSBuZWVkcyB0byBiZSBzaGlmdGVkIHRvIGNyZWF0ZSBhCkBAIC01MTgsNyArNTE4
LDcgQEAgQ2FsY3VsYXRlZEZsb2F0IENhbGN1bGF0ZUZyb21QYXJzZWRIZXhhZGVjaW1hbCgKICAg
ICBjb25zdCBzdHJpbmdzX2ludGVybmFsOjpQYXJzZWRGbG9hdCYgcGFyc2VkX2hleCkgewogICB1
aW50NjRfdCBtYW50aXNzYSA9IHBhcnNlZF9oZXgubWFudGlzc2E7CiAgIGludCBleHBvbmVudCA9
IHBhcnNlZF9oZXguZXhwb25lbnQ7Ci0gIGludCBtYW50aXNzYV93aWR0aCA9IDY0IC0gc3RyaW5n
c19pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChtYW50aXNzYSk7CisgIGludCBtYW50aXNz
YV93aWR0aCA9IDY0IC0gYmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChtYW50aXNz
YSk7CiAgIGNvbnN0IGludCBzaGlmdCA9IE5vcm1hbGl6ZWRTaGlmdFNpemU8RmxvYXRUeXBlPiht
YW50aXNzYV93aWR0aCwgZXhwb25lbnQpOwogICBib29sIHJlc3VsdF9leGFjdDsKICAgZXhwb25l
bnQgKz0gc2hpZnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2NoYXJjb252LmgKaW5kZXggM2UzMTM2NzljOTYxOGFhODhkYzllOGI1NWU4OGU5
NmEwZjdmNjk2Yi4uMDczNTM4Mjk2MjM1NmNmZjdiZmI1ZjNlYmQzYTAzOTNkMmQyODEwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hh
cmNvbnYuaApAQCAtMjIsNyArMjIsNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyBXb3JrYWxpa2Ug
Y29tcGF0aWJpbHR5IHZlcnNpb24gb2Ygc3RkOjpjaGFyc19mb3JtYXQgZnJvbSBDKysxNy4KIC8v
CiAvLyBUaGlzIGlzIGFuIGJpdGZpZWxkIGVudW1lcmF0b3Igd2hpY2ggY2FuIGJlIHBhc3NlZCB0
byBhYnNsOjpmcm9tX2NoYXJzIHRvCi0vLyBjb25maWd1cmUgdGhlIHN0ZDo6c3RyaW5nLXRvLWZs
b2F0IGNvbnZlcnNpb24uCisvLyBjb25maWd1cmUgdGhlIHN0cmluZy10by1mbG9hdCBjb252ZXJz
aW9uLgogZW51bSBjbGFzcyBjaGFyc19mb3JtYXQgewogICBzY2llbnRpZmljID0gMSwKICAgZml4
ZWQgPSAyLApAQCAtMzAsNyArMzAsNyBAQCBlbnVtIGNsYXNzIGNoYXJzX2Zvcm1hdCB7CiAgIGdl
bmVyYWwgPSBmaXhlZCB8IHNjaWVudGlmaWMsCiB9OwogCi0vLyBUaGUgcmV0dXJuIHJlc3VsdCBv
ZiBhIHN0ZDo6c3RyaW5nLXRvLW51bWJlciBjb252ZXJzaW9uLgorLy8gVGhlIHJldHVybiByZXN1
bHQgb2YgYSBzdHJpbmctdG8tbnVtYmVyIGNvbnZlcnNpb24uCiAvLwogLy8gYGVjYCB3aWxsIGJl
IHNldCB0byBgaW52YWxpZF9hcmd1bWVudGAgaWYgYSB3ZWxsLWZvcm1lZCBudW1iZXIgd2FzIG5v
dCBmb3VuZAogLy8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dCByYW5nZSwgYHJlc3VsdF9vdXRf
b2ZfcmFuZ2VgIGlmIGEgd2VsbC1mb3JtZWQKQEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IGZyb21f
Y2hhcnNfcmVzdWx0IHsKIC8vIElmIGBmbXRgIGlzIHNldCwgaXQgbXVzdCBiZSBvbmUgb2YgdGhl
IGVudW1lcmF0b3IgdmFsdWVzIG9mIHRoZSBjaGFyc19mb3JtYXQuCiAvLyAoVGhpcyBpcyBkZXNw
aXRlIHRoZSBmYWN0IHRoYXQgY2hhcnNfZm9ybWF0IGlzIGEgYml0bWFzayB0eXBlLikgIElmIHNl
dCB0bwogLy8gYHNjaWVudGlmaWNgLCBhIG1hdGNoaW5nIG51bWJlciBtdXN0IGNvbnRhaW4gYW4g
ZXhwb25lbnQuICBJZiBzZXQgdG8gYGZpeGVkYCwKLS8vIHRoZW4gYW4gZXhwb25lbnQgd2lsbCBu
ZXZlciBtYXRjaC4gIChGb3IgZXhhbXBsZSwgdGhlIHN0ZDo6c3RyaW5nICIxZTUiIHdpbGwgYmUK
Ky8vIHRoZW4gYW4gZXhwb25lbnQgd2lsbCBuZXZlciBtYXRjaC4gIChGb3IgZXhhbXBsZSwgdGhl
IHN0cmluZyAiMWU1IiB3aWxsIGJlCiAvLyBwYXJzZWQgYXMgIjEiLikgIElmIHNldCB0byBgaGV4
YCwgdGhlbiBhIGhleGFkZWNpbWFsIGZsb2F0IGlzIHBhcnNlZCBpbiB0aGUKIC8vIGZvcm1hdCB0
aGF0IHN0cnRvZCgpIGFjY2VwdHMsIGV4Y2VwdCB0aGF0IGEgIjB4IiBwcmVmaXggaXMgTk9UIG1h
dGNoZWQuCiAvLyAoSW4gcGFydGljdWxhciwgaW4gYGhleGAgbW9kZSwgdGhlIGlucHV0ICIweGZm
IiByZXN1bHRzIGluIHRoZSBsYXJnZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJj
b252X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252X3Rlc3QuY2MKaW5kZXggZjhkNzFj
YzZjNDQ4YzdhM2U3ZjBjYWY5ODA5OGZjN2I0ZDJkNTY0Mi4uODk0MThmZTk0OGZmZWRjNGI3NWFj
MmZhODEwZmQ0NDE2NjA1YzNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udl90
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnZfdGVzdC5jYwpAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgewogCiAjaWYgQUJTTF9DT01QSUxFUl9ET0VTX0VYQUNUX1JPVU5ESU5H
CiAKLS8vIFRlc3RzIHRoYXQgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nIGlzIGFjY2VwdGVkIGJ5IGFi
c2w6OmZyb21fY2hhcnMsIGFuZCB0aGF0IGl0CisvLyBUZXN0cyB0aGF0IHRoZSBnaXZlbiBzdHJp
bmcgaXMgYWNjZXB0ZWQgYnkgYWJzbDo6ZnJvbV9jaGFycywgYW5kIHRoYXQgaXQKIC8vIGNvbnZl
cnRzIGV4YWN0bHkgZXF1YWwgdG8gdGhlIGdpdmVuIG51bWJlci4KIHZvaWQgVGVzdERvdWJsZVBh
cnNlKGFic2w6OnN0cmluZ192aWV3IHN0ciwgZG91YmxlIGV4cGVjdGVkX251bWJlcikgewogICBT
Q09QRURfVFJBQ0Uoc3RyKTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBURVNUKEZyb21DaGFycywgTmVh
clJvdW5kaW5nQ2FzZXNFeHBsaWNpdCkgewogICBFWFBFQ1RfRVEoVG9GbG9hdCgiNDU5OTI2NjAx
MDExLmUxNSIpLCBsZGV4cGYoMTI0NjYzMzYsIDY1KSk7CiB9CiAKLS8vIENvbW1vbiB0ZXN0IGxv
Z2ljIGZvciBjb252ZXJ0aW5nIGEgc3RkOjpzdHJpbmcgd2hpY2ggbGllcyBleGFjdGx5IGhhbGZ3
YXkgYmV0d2VlbgorLy8gQ29tbW9uIHRlc3QgbG9naWMgZm9yIGNvbnZlcnRpbmcgYSBzdHJpbmcg
d2hpY2ggbGllcyBleGFjdGx5IGhhbGZ3YXkgYmV0d2VlbgogLy8gdHdvIHRhcmdldCBmbG9hdHMu
CiAvLwogLy8gbWFudGlzc2EgYW5kIGV4cG9uZW50IHJlcHJlc2VudCB0aGUgcHJlY2lzZSB2YWx1
ZSBiZXR3ZWVuIHR3byBmbG9hdGluZyBwb2ludApAQCAtNjU1LDcgKzY1NSw3IEBAIGludCBOZXh0
U3RlcChpbnQgc3RlcCkgewogLy8gaXMgY29ycmVjdCBmb3IgaW4tYm91bmRzIHZhbHVlcywgYW5k
IHRoYXQgb3ZlcmZsb3cgYW5kIHVuZGVyZmxvdyBhcmUgZG9uZQogLy8gY29ycmVjdGx5IGZvciBv
dXQtb2YtYm91bmRzIHZhbHVlcy4KIC8vCi0vLyBpbnB1dF9nZW5lcmF0b3IgbWFwcyBmcm9tIGFu
IGludGVnZXIgaW5kZXggdG8gYSBzdGQ6OnN0cmluZyB0byB0ZXN0LgorLy8gaW5wdXRfZ2VuZXJh
dG9yIG1hcHMgZnJvbSBhbiBpbnRlZ2VyIGluZGV4IHRvIGEgc3RyaW5nIHRvIHRlc3QuCiAvLyBl
eHBlY3RlZF9nZW5lcmF0b3IgbWFwcyBmcm9tIGFuIGludGVnZXIgaW5kZXggdG8gYW4gZXhwZWN0
ZWQgRmxvYXQgdmFsdWUuCiAvLyBmcm9tX2NoYXJzIGNvbnZlcnNpb24gb2YgaW5wdXRfZ2VuZXJh
dG9yKGkpIHNob3VsZCByZXN1bHQgaW4KIC8vIGV4cGVjdGVkX2dlbmVyYXRvcihpKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5n
LmNjCmluZGV4IGZiYzlmNzU2MzE1ZmE3ZmU5YTdiYjAyNWQ0OGMzZmIyODRiOWU4ZmIuLjhkOGIw
MGIyMDAxY2U4MzA3YjQ4Nzg4MDA3Y2M1NjU1YTc1ZjU0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvZXNjYXBpbmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZy5jYwpAQCAtODks
NyArODksNyBAQCBpbmxpbmUgYm9vbCBJc1N1cnJvZ2F0ZShjaGFyMzJfdCBjLCBhYnNsOjpzdHJp
bmdfdmlldyBzcmMsIHN0ZDo6c3RyaW5nKiBlcnJvcikgewogLy8KIC8vICAgIFVuZXNjYXBlcyBD
IGVzY2FwZSBzZXF1ZW5jZXMgYW5kIGlzIHRoZSByZXZlcnNlIG9mIENFc2NhcGUoKS4KIC8vCi0v
LyAgICBJZiAnc291cmNlJyBpcyB2YWxpZCwgc3RvcmVzIHRoZSB1bmVzY2FwZWQgc3RkOjpzdHJp
bmcgYW5kIGl0cyBzaXplIGluCisvLyAgICBJZiAnc291cmNlJyBpcyB2YWxpZCwgc3RvcmVzIHRo
ZSB1bmVzY2FwZWQgc3RyaW5nIGFuZCBpdHMgc2l6ZSBpbgogLy8gICAgJ2Rlc3QnIGFuZCAnZGVz
dF9sZW4nIHJlc3BlY3RpdmVseSwgYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlCiAvLyAgICBy
ZXR1cm5zIGZhbHNlIGFuZCBvcHRpb25hbGx5IHN0b3JlcyB0aGUgZXJyb3IgZGVzY3JpcHRpb24g
aW4KIC8vICAgICdlcnJvcicuIFNldCAnZXJyb3InIHRvIG51bGxwdHIgdG8gZGlzYWJsZSBlcnJv
ciByZXBvcnRpbmcuCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBDVW5lc2NhcGVJbnRlcm5hbChh
YnNsOjpzdHJpbmdfdmlldyBzb3VyY2UsIGJvb2wgbGVhdmVfbnVsbHNfZXNjYXBlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciogZGVzdCwgcHRyZGlmZl90KiBkZXN0X2xlbiwgc3RkOjpz
dHJpbmcqIGVycm9yKSB7CiAgIGNoYXIqIGQgPSBkZXN0OwogICBjb25zdCBjaGFyKiBwID0gc291
cmNlLmRhdGEoKTsKLSAgY29uc3QgY2hhciogZW5kID0gc291cmNlLmVuZCgpOworICBjb25zdCBj
aGFyKiBlbmQgPSBwICsgc291cmNlLnNpemUoKTsKICAgY29uc3QgY2hhciogbGFzdF9ieXRlID0g
ZW5kIC0gMTsKIAogICAvLyBTbWFsbCBvcHRpbWl6YXRpb24gZm9yIGNhc2Ugd2hlcmUgc291cmNl
ID0gZGVzdCBhbmQgdGhlcmUncyBubyBlc2NhcGluZwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wg
Q1VuZXNjYXBlSW50ZXJuYWwoYWJzbDo6c3RyaW5nX3ZpZXcgc291cmNlLCBib29sIGxlYXZlX251
bGxzX2VzY2FwZWQsCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBDVW5lc2NhcGVJbnRlcm5hbCgpCiAv
LwotLy8gICAgU2FtZSBhcyBhYm92ZSBidXQgdXNlcyBhIEMrKyBzdGQ6OnN0cmluZyBmb3Igb3V0
cHV0LiAnc291cmNlJyBhbmQgJ2Rlc3QnCisvLyAgICBTYW1lIGFzIGFib3ZlIGJ1dCB1c2VzIGEg
QysrIHN0cmluZyBmb3Igb3V0cHV0LiAnc291cmNlJyBhbmQgJ2Rlc3QnCiAvLyAgICBtYXkgYmUg
dGhlIHNhbWUuCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBib29sIENVbmVzY2FwZUludGVybmFsKGFic2w6
OnN0cmluZ192aWV3IHNvdXJjZSwgYm9vbCBsZWF2ZV9udWxsc19lc2NhcGVkLApAQCAtMzA0LDcg
KzMwNCw3IEBAIGJvb2wgQ1VuZXNjYXBlSW50ZXJuYWwoYWJzbDo6c3RyaW5nX3ZpZXcgc291cmNl
LCBib29sIGxlYXZlX251bGxzX2VzY2FwZWQsCiAgIHB0cmRpZmZfdCBkZXN0X3NpemU7CiAgIGlm
ICghQ1VuZXNjYXBlSW50ZXJuYWwoc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxl
YXZlX251bGxzX2VzY2FwZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxj
aGFyKj4oZGVzdC0+ZGF0YSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmKCpkZXN0KVsw
XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVzdF9zaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yKSkgewogICAgIHJldHVybiBmYWxzZTsKQEAgLTY4NCw3ICs2ODQsNyBA
QCBib29sIEJhc2U2NFVuZXNjYXBlSW50ZXJuYWwoY29uc3QgY2hhciogc3JjX3BhcmFtLCBzaXpl
X3Qgc3pzcmMsIGNoYXIqIGRlc3QsCiAvLyBUaGUgYXJyYXlzIGJlbG93IHdlcmUgZ2VuZXJhdGVk
IGJ5IHRoZSBmb2xsb3dpbmcgY29kZQogLy8gI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAvLyAjaW5j
bHVkZSA8c3RkbGliLmg+Ci0vLyAjaW5jbHVkZSA8c3RkOjpzdHJpbmcuaD4KKy8vICNpbmNsdWRl
IDxzdHJpbmcuaD4KIC8vIG1haW4oKQogLy8gewogLy8gICBzdGF0aWMgY29uc3QgY2hhciBCYXNl
NjRbXSA9CkBAIC05MzksNyArOTM5LDggQEAgY29uc3RleHByIGNoYXIga0Jhc2U2NENoYXJzW10g
PQogY29uc3RleHByIGNoYXIga1dlYlNhZmVCYXNlNjRDaGFyc1tdID0KICAgICAiQUJDREVGR0hJ
SktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXyI7
CiAKLXZvaWQgQmFzZTY0RXNjYXBlSW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBz
aXplX3Qgc3pzcmMsIHN0ZDo6c3RyaW5nKiBkZXN0LAordGVtcGxhdGUgPHR5cGVuYW1lIFN0cmlu
Zz4KK3ZvaWQgQmFzZTY0RXNjYXBlSW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBz
aXplX3Qgc3pzcmMsIFN0cmluZyogZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBkb19wYWRkaW5nLCBjb25zdCBjaGFyKiBiYXNlNjRfY2hhcnMpIHsKICAgY29uc3Qgc2l6ZV90
IGNhbGNfZXNjYXBlZF9zaXplID0KICAgICAgIENhbGN1bGF0ZUJhc2U2NEVzY2FwZWRMZW5JbnRl
cm5hbChzenNyYywgZG9fcGFkZGluZyk7CkBAIC05NTEsNyArOTUyLDggQEAgdm9pZCBCYXNlNjRF
c2NhcGVJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmMsIHNpemVfdCBzenNyYywgc3Rk
OjpzdHJpbmcqIGQKICAgZGVzdC0+ZXJhc2UoZXNjYXBlZF9sZW4pOwogfQogCi1ib29sIEJhc2U2
NFVuZXNjYXBlSW50ZXJuYWwoY29uc3QgY2hhciogc3JjLCBzaXplX3Qgc2xlbiwgc3RkOjpzdHJp
bmcqIGRlc3QsCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nPgorYm9vbCBCYXNlNjRVbmVzY2Fw
ZUludGVybmFsKGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IHNsZW4sIFN0cmluZyogZGVzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaWduZWQgY2hhciogdW5iYXNlNjQpIHsK
ICAgLy8gRGV0ZXJtaW5lIHRoZSBzaXplIG9mIHRoZSBvdXRwdXQgc3RkOjpzdHJpbmcuICBCYXNl
NjQgZW5jb2RlcyBldmVyeSAzIGJ5dGVzIGludG8KICAgLy8gNCBjaGFyYWN0ZXJzLiAgYW55IGxl
ZnRvdmVyIGNoYXJzIGFyZSBhZGRlZCBkaXJlY3RseSBmb3IgZ29vZCBtZWFzdXJlLgpAQCAtOTk5
LDcgKzEwMDEsNyBAQCBjb25zdGV4cHIgY2hhciBrSGV4VmFsdWVbMjU2XSA9IHsKIC8qIGNsYW5n
LWZvcm1hdCBvbiAqLwogCiAvLyBUaGlzIGlzIGEgdGVtcGxhdGVkIGZ1bmN0aW9uIHNvIHRoYXQg
VCBjYW4gYmUgZWl0aGVyIGEgY2hhcioKLS8vIG9yIGEgc3RkOjpzdHJpbmcuICBUaGlzIHdvcmtz
IGJlY2F1c2Ugd2UgdXNlIHRoZSBbXSBvcGVyYXRvciB0byBhY2Nlc3MKKy8vIG9yIGEgc3RyaW5n
LiAgVGhpcyB3b3JrcyBiZWNhdXNlIHdlIHVzZSB0aGUgW10gb3BlcmF0b3IgdG8gYWNjZXNzCiAv
LyBpbmRpdmlkdWFsIGNoYXJhY3RlcnMgYXQgYSB0aW1lLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiB2b2lkIEhleFN0cmluZ1RvQnl0ZXNJbnRlcm5hbChjb25zdCBjaGFyKiBmcm9tLCBUIHRvLCBw
dHJkaWZmX3QgbnVtKSB7CkBAIC0xMDA5LDcgKzEwMTEsNyBAQCB2b2lkIEhleFN0cmluZ1RvQnl0
ZXNJbnRlcm5hbChjb25zdCBjaGFyKiBmcm9tLCBUIHRvLCBwdHJkaWZmX3QgbnVtKSB7CiAgIH0K
IH0KIAotLy8gVGhpcyBpcyBhIHRlbXBsYXRlZCBmdW5jdGlvbiBzbyB0aGF0IFQgY2FuIGJlIGVp
dGhlciBhIGNoYXIqIG9yIGEgc3RkOjpzdHJpbmcuCisvLyBUaGlzIGlzIGEgdGVtcGxhdGVkIGZ1
bmN0aW9uIHNvIHRoYXQgVCBjYW4gYmUgZWl0aGVyIGEgY2hhciogb3IgYSBzdHJpbmcuCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KIHZvaWQgQnl0ZXNUb0hleFN0cmluZ0ludGVybmFsKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIHNyYywgVCBkZXN0LCBwdHJkaWZmX3QgbnVtKSB7CiAgIGF1dG8gZGVzdF9w
dHIgPSAmZGVzdFswXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvZXNjYXBpbmcuaAppbmRleCA3ZjFhYjk2ZDhmZjE1ZDU2MDQyYjQ2NTlkNjYx
NDgyMTQ3MDVmMGE1Li4yOTY1OTczMDRlNmNlM2Y1ODY1ZGMwM2E5NjdmMzQzMThlNjliOTFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9l
c2NhcGluZy5oCkBAIC0xNyw3ICsxNyw3IEBACiAvLyBGaWxlOiBlc2NhcGluZy5oCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogLy8KLS8vIFRoaXMgaGVhZGVyIGZpbGUgY29udGFpbnMgc3RkOjpz
dHJpbmcgdXRpbGl0aWVzIGludm9sdmVkIGluIGVzY2FwaW5nIGFuZAorLy8gVGhpcyBoZWFkZXIg
ZmlsZSBjb250YWlucyBzdHJpbmcgdXRpbGl0aWVzIGludm9sdmVkIGluIGVzY2FwaW5nIGFuZAog
Ly8gdW5lc2NhcGluZyBzdHJpbmdzIGluIHZhcmlvdXMgd2F5cy4KIC8vCiAKQEAgLTM3LDcgKzM3
LDcgQEAgbmFtZXNwYWNlIGFic2wgewogCiAvLyBDVW5lc2NhcGUoKQogLy8KLS8vIFVuZXNjYXBl
cyBhIGBzb3VyY2VgIHN0ZDo6c3RyaW5nIGFuZCBjb3BpZXMgaXQgaW50byBgZGVzdGAsIHJld3Jp
dGluZyBDLXN0eWxlCisvLyBVbmVzY2FwZXMgYSBgc291cmNlYCBzdHJpbmcgYW5kIGNvcGllcyBp
dCBpbnRvIGBkZXN0YCwgcmV3cml0aW5nIEMtc3R5bGUKIC8vIGVzY2FwZSBzZXF1ZW5jZXMgKGh0
dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2xhbmd1YWdlL2VzY2FwZSkgaW50bwogLy8g
dGhlaXIgcHJvcGVyIGNvZGUgcG9pbnQgZXF1aXZhbGVudHMsIHJldHVybmluZyBgdHJ1ZWAgaWYg
c3VjY2Vzc2Z1bC4KIC8vCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLyAg
ICAgMHg5OSkuCiAvLwogLy8KLS8vIElmIGFueSBlcnJvcnMgYXJlIGVuY291bnRlcmVkLCB0aGlz
IGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCBhbmQgc3RvcmVzIHRoZQotLy8gZmlyc3QgZW5jb3Vu
dGVyZWQgZXJyb3IgaW4gYGVycm9yYC4gVG8gZGlzYWJsZSBlcnJvciByZXBvcnRpbmcsIHNldCBg
ZXJyb3JgCi0vLyB0byBgbnVsbHB0cmAgb3IgdXNlIHRoZSBvdmVybG9hZCB3aXRoIG5vIGVycm9y
IHJlcG9ydGluZyBiZWxvdy4KKy8vIElmIGFueSBlcnJvcnMgYXJlIGVuY291bnRlcmVkLCB0aGlz
IGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCwgbGVhdmluZyB0aGUKKy8vIGBkZXN0YCBvdXRwdXQg
cGFyYW1ldGVyIGluIGFuIHVuc3BlY2lmaWVkIHN0YXRlLCBhbmQgc3RvcmVzIHRoZSBmaXJzdAor
Ly8gZW5jb3VudGVyZWQgZXJyb3IgaW4gYGVycm9yYC4gVG8gZGlzYWJsZSBlcnJvciByZXBvcnRp
bmcsIHNldCBgZXJyb3JgIHRvCisvLyBgbnVsbHB0cmAgb3IgdXNlIHRoZSBvdmVybG9hZCB3aXRo
IG5vIGVycm9yIHJlcG9ydGluZyBiZWxvdy4KIC8vCiAvLyBFeGFtcGxlOgogLy8KQEAgLTc4LDcg
Kzc5LDcgQEAgaW5saW5lIGJvb2wgQ1VuZXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNvdXJjZSwg
c3RkOjpzdHJpbmcqIGRlc3QpIHsKIAogLy8gQ0VzY2FwZSgpCiAvLwotLy8gRXNjYXBlcyBhICdz
cmMnIHN0ZDo6c3RyaW5nIHVzaW5nIEMtc3R5bGUgZXNjYXBlcyBzZXF1ZW5jZXMKKy8vIEVzY2Fw
ZXMgYSAnc3JjJyBzdHJpbmcgdXNpbmcgQy1zdHlsZSBlc2NhcGVzIHNlcXVlbmNlcwogLy8gKGh0
dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2xhbmd1YWdlL2VzY2FwZSksIGVzY2FwaW5n
IG90aGVyCiAvLyBub24tcHJpbnRhYmxlL25vbi13aGl0ZXNwYWNlIGJ5dGVzIGFzIG9jdGFsIHNl
cXVlbmNlcyAoZS5nLiAiXDM3NyIpLgogLy8KQEAgLTkxLDcgKzkyLDcgQEAgc3RkOjpzdHJpbmcg
Q0VzY2FwZShhYnNsOjpzdHJpbmdfdmlldyBzcmMpOwogCiAvLyBDSGV4RXNjYXBlKCkKIC8vCi0v
LyBFc2NhcGVzIGEgJ3NyYycgc3RkOjpzdHJpbmcgdXNpbmcgQy1zdHlsZSBlc2NhcGUgc2VxdWVu
Y2VzLCBlc2NhcGluZworLy8gRXNjYXBlcyBhICdzcmMnIHN0cmluZyB1c2luZyBDLXN0eWxlIGVz
Y2FwZSBzZXF1ZW5jZXMsIGVzY2FwaW5nCiAvLyBvdGhlciBub24tcHJpbnRhYmxlL25vbi13aGl0
ZXNwYWNlIGJ5dGVzIGFzIGhleGFkZWNpbWFsIHNlcXVlbmNlcyAoZS5nLgogLy8gIlx4RkYiKS4K
IC8vCkBAIC0xMDQsNyArMTA1LDcgQEAgc3RkOjpzdHJpbmcgQ0hleEVzY2FwZShhYnNsOjpzdHJp
bmdfdmlldyBzcmMpOwogCiAvLyBVdGY4U2FmZUNFc2NhcGUoKQogLy8KLS8vIEVzY2FwZXMgYSAn
c3JjJyBzdGQ6OnN0cmluZyB1c2luZyBDLXN0eWxlIGVzY2FwZSBzZXF1ZW5jZXMsIGVzY2FwaW5n
IGJ5dGVzIGFzCisvLyBFc2NhcGVzIGEgJ3NyYycgc3RyaW5nIHVzaW5nIEMtc3R5bGUgZXNjYXBl
IHNlcXVlbmNlcywgZXNjYXBpbmcgYnl0ZXMgYXMKIC8vIG9jdGFsIHNlcXVlbmNlcywgYW5kIHBh
c3NpbmcgdGhyb3VnaCBVVEYtOCBjaGFyYWN0ZXJzIHdpdGhvdXQgY29udmVyc2lvbi4KIC8vIEku
ZS4sIHdoZW4gZW5jb3VudGVyaW5nIGFueSBieXRlcyB3aXRoIHRoZWlyIGhpZ2ggYml0IHNldCwg
dGhpcyBmdW5jdGlvbgogLy8gd2lsbCBub3QgZXNjYXBlIHRob3NlIHZhbHVlcywgd2hldGhlciBv
ciBub3QgdGhleSBhcmUgdmFsaWQgVVRGLTguCkBAIC0xMTIsNDcgKzExMyw0NyBAQCBzdGQ6OnN0
cmluZyBVdGY4U2FmZUNFc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjKTsKIAogLy8gVXRmOFNh
ZmVDSGV4RXNjYXBlKCkKIC8vCi0vLyBFc2NhcGVzIGEgJ3NyYycgc3RkOjpzdHJpbmcgdXNpbmcg
Qy1zdHlsZSBlc2NhcGUgc2VxdWVuY2VzLCBlc2NhcGluZyBieXRlcyBhcworLy8gRXNjYXBlcyBh
ICdzcmMnIHN0cmluZyB1c2luZyBDLXN0eWxlIGVzY2FwZSBzZXF1ZW5jZXMsIGVzY2FwaW5nIGJ5
dGVzIGFzCiAvLyBoZXhhZGVjaW1hbCBzZXF1ZW5jZXMsIGFuZCBwYXNzaW5nIHRocm91Z2ggVVRG
LTggY2hhcmFjdGVycyB3aXRob3V0CiAvLyBjb252ZXJzaW9uLgogc3RkOjpzdHJpbmcgVXRmOFNh
ZmVDSGV4RXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYyk7CiAKIC8vIEJhc2U2NFVuZXNjYXBl
KCkKIC8vCi0vLyBDb252ZXJ0cyBhIGBzcmNgIHN0ZDo6c3RyaW5nIGVuY29kZWQgaW4gQmFzZTY0
IHRvIGl0cyBiaW5hcnkgZXF1aXZhbGVudCwgd3JpdGluZworLy8gQ29udmVydHMgYSBgc3JjYCBz
dHJpbmcgZW5jb2RlZCBpbiBCYXNlNjQgdG8gaXRzIGJpbmFyeSBlcXVpdmFsZW50LCB3cml0aW5n
CiAvLyBpdCB0byBhIGBkZXN0YCBidWZmZXIsIHJldHVybmluZyBgdHJ1ZWAgb24gc3VjY2Vzcy4g
SWYgYHNyY2AgY29udGFpbnMgaW52YWxpZAogLy8gY2hhcmFjdGVycywgYGRlc3RgIGlzIGNsZWFy
ZWQgYW5kIHJldHVybnMgYGZhbHNlYC4KIGJvb2wgQmFzZTY0VW5lc2NhcGUoYWJzbDo6c3RyaW5n
X3ZpZXcgc3JjLCBzdGQ6OnN0cmluZyogZGVzdCk7CiAKLS8vIFdlYlNhZmVCYXNlNjRVbmVzY2Fw
ZShhYnNsOjpzdHJpbmdfdmlldywgc3RkOjpzdHJpbmcqKQorLy8gV2ViU2FmZUJhc2U2NFVuZXNj
YXBlKCkKIC8vCi0vLyBDb252ZXJ0cyBhIGBzcmNgIHN0ZDo6c3RyaW5nIGVuY29kZWQgaW4gQmFz
ZTY0IHRvIGl0cyBiaW5hcnkgZXF1aXZhbGVudCwgd3JpdGluZworLy8gQ29udmVydHMgYSBgc3Jj
YCBzdHJpbmcgZW5jb2RlZCBpbiBCYXNlNjQgdG8gaXRzIGJpbmFyeSBlcXVpdmFsZW50LCB3cml0
aW5nCiAvLyBpdCB0byBhIGBkZXN0YCBidWZmZXIsIGJ1dCB1c2luZyAnLScgaW5zdGVhZCBvZiAn
KycsIGFuZCAnXycgaW5zdGVhZCBvZiAnLycuCiAvLyBJZiBgc3JjYCBjb250YWlucyBpbnZhbGlk
IGNoYXJhY3RlcnMsIGBkZXN0YCBpcyBjbGVhcmVkIGFuZCByZXR1cm5zIGBmYWxzZWAuCiBib29s
IFdlYlNhZmVCYXNlNjRVbmVzY2FwZShhYnNsOjpzdHJpbmdfdmlldyBzcmMsIHN0ZDo6c3RyaW5n
KiBkZXN0KTsKIAogLy8gQmFzZTY0RXNjYXBlKCkKIC8vCi0vLyBFbmNvZGVzIGEgYHNyY2Agc3Rk
OjpzdHJpbmcgaW50byBhIGBkZXN0YCBidWZmZXIgdXNpbmcgYmFzZTY0IGVuY29kaW5nLCB3aXRo
CisvLyBFbmNvZGVzIGEgYHNyY2Agc3RyaW5nIGludG8gYSBgZGVzdGAgYnVmZmVyIHVzaW5nIGJh
c2U2NCBlbmNvZGluZywgd2l0aAogLy8gcGFkZGluZyBjaGFyYWN0ZXJzLiBUaGlzIGZ1bmN0aW9u
IGNvbmZvcm1zIHdpdGggUkZDIDQ2NDggc2VjdGlvbiA0IChiYXNlNjQpLgogdm9pZCBCYXNlNjRF
c2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjLCBzdGQ6OnN0cmluZyogZGVzdCk7CiAKIC8vIFdl
YlNhZmVCYXNlNjRFc2NhcGUoKQogLy8KLS8vIEVuY29kZXMgYSBgc3JjYCBzdGQ6OnN0cmluZyBp
bnRvIGEgYGRlc3RgIGJ1ZmZlciB1c2luZyAnLScgaW5zdGVhZCBvZiAnKycgYW5kCisvLyBFbmNv
ZGVzIGEgYHNyY2Agc3RyaW5nIGludG8gYSBgZGVzdGAgYnVmZmVyIHVzaW5nICctJyBpbnN0ZWFk
IG9mICcrJyBhbmQKIC8vICdfJyBpbnN0ZWFkIG9mICcvJywgYW5kIHdpdGhvdXQgcGFkZGluZy4g
VGhpcyBmdW5jdGlvbiBjb25mb3JtcyB3aXRoIFJGQyA0NjQ4CiAvLyBzZWN0aW9uIDUgKGJhc2U2
NHVybCkuCiB2b2lkIFdlYlNhZmVCYXNlNjRFc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjLCBz
dGQ6OnN0cmluZyogZGVzdCk7CiAKIC8vIEhleFN0cmluZ1RvQnl0ZXMoKQogLy8KLS8vIENvbnZl
cnRzIGFuIEFTQ0lJIGhleCBzdGQ6OnN0cmluZyBpbnRvIGJ5dGVzLCByZXR1cm5pbmcgYmluYXJ5
IGRhdGEgb2YgbGVuZ3RoCisvLyBDb252ZXJ0cyBhbiBBU0NJSSBoZXggc3RyaW5nIGludG8gYnl0
ZXMsIHJldHVybmluZyBiaW5hcnkgZGF0YSBvZiBsZW5ndGgKIC8vIGBmcm9tLnNpemUoKS8yYC4K
IHN0ZDo6c3RyaW5nIEhleFN0cmluZ1RvQnl0ZXMoYWJzbDo6c3RyaW5nX3ZpZXcgZnJvbSk7CiAK
IC8vIEJ5dGVzVG9IZXhTdHJpbmcoKQogLy8KLS8vIENvbnZlcnRzIGJpbmFyeSBkYXRhIGludG8g
YW4gQVNDSUkgdGV4dCBzdGQ6OnN0cmluZywgcmV0dXJuaW5nIGEgc3RkOjpzdHJpbmcgb2Ygc2l6
ZQorLy8gQ29udmVydHMgYmluYXJ5IGRhdGEgaW50byBhbiBBU0NJSSB0ZXh0IHN0cmluZywgcmV0
dXJuaW5nIGEgc3RyaW5nIG9mIHNpemUKIC8vIGAyKmZyb20uc2l6ZSgpYC4KIHN0ZDo6c3RyaW5n
IEJ5dGVzVG9IZXhTdHJpbmcoYWJzbDo6c3RyaW5nX3ZpZXcgZnJvbSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvZXNjYXBpbmdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmdf
dGVzdC5jYwppbmRleCAzZjY1ZWMxMDdmNDU1NWM5NTBmZjc3N2U4OWU5M2QyM2U0MzM3OGU1Li45
ZGMyN2YzZjhmYTc2OGEyYTkxY2RhZjk1MDM3ZDc0Y2ZmMDFhZWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2VzY2FwaW5nX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZ190
ZXN0LmNjCkBAIC01NDMsMTggKzU0MywxOSBAQCBzdGF0aWMgc3RydWN0IHsKICAgICB7ImFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwgIllXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0
ZVhvPSJ9LAogfTsKIAotVEVTVChCYXNlNjQsIEVzY2FwZUFuZFVuZXNjYXBlKSB7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4KK3ZvaWQgVGVzdEVzY2FwZUFuZFVuZXNjYXBlKCkgewog
ICAvLyBDaGVjayB0aGUgc2hvcnQgc3RyaW5nczsgdGhpcyB0ZXN0cyB0aGUgbWF0aCAoYW5kIGJv
dW5kYXJpZXMpCiAgIGZvciAoY29uc3QgYXV0byYgdGMgOiBiYXNlNjRfdGVzdHMpIHsKLSAgICBz
dGQ6OnN0cmluZyBlbmNvZGVkKCJ0aGlzIGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQiKTsKKyAgICBT
dHJpbmdUeXBlIGVuY29kZWQoInRoaXMganVuayBzaG91bGQgYmUgaWdub3JlZCIpOwogICAgIGFi
c2w6OkJhc2U2NEVzY2FwZSh0Yy5wbGFpbnRleHQsICZlbmNvZGVkKTsKICAgICBFWFBFQ1RfRVEo
ZW5jb2RlZCwgdGMuY3lwaGVydGV4dCk7CiAKLSAgICBzdGQ6OnN0cmluZyBkZWNvZGVkKCJ0aGlz
IGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQiKTsKKyAgICBTdHJpbmdUeXBlIGRlY29kZWQoInRoaXMg
anVuayBzaG91bGQgYmUgaWdub3JlZCIpOwogICAgIEVYUEVDVF9UUlVFKGFic2w6OkJhc2U2NFVu
ZXNjYXBlKGVuY29kZWQsICZkZWNvZGVkKSk7CiAgICAgRVhQRUNUX0VRKGRlY29kZWQsIHRjLnBs
YWludGV4dCk7CiAKLSAgICBzdGQ6OnN0cmluZyB3ZWJzYWZlKHRjLmN5cGhlcnRleHQpOworICAg
IFN0cmluZ1R5cGUgd2Vic2FmZSh0Yy5jeXBoZXJ0ZXh0KTsKICAgICBmb3IgKGludCBjID0gMDsg
YyA8IHdlYnNhZmUuc2l6ZSgpOyArK2MpIHsKICAgICAgIGlmICgnKycgPT0gd2Vic2FmZVtjXSkg
d2Vic2FmZVtjXSA9ICctJzsKICAgICAgIGlmICgnLycgPT0gd2Vic2FmZVtjXSkgd2Vic2FmZVtj
XSA9ICdfJzsKQEAgLTU3Niw3ICs1NzcsNyBAQCBURVNUKEJhc2U2NCwgRXNjYXBlQW5kVW5lc2Nh
cGUpIHsKIAogICAvLyBOb3cgdHJ5IHRoZSBsb25nIHN0cmluZ3MsIHRoaXMgdGVzdHMgdGhlIHN0
cmVhbWluZwogICBmb3IgKGNvbnN0IGF1dG8mIHRjIDogYWJzbDo6c3RyaW5nc19pbnRlcm5hbDo6
YmFzZTY0X3N0cmluZ3MoKSkgewotICAgIHN0ZDo6c3RyaW5nIGJ1ZmZlcjsKKyAgICBTdHJpbmdU
eXBlIGJ1ZmZlcjsKICAgICBhYnNsOjpXZWJTYWZlQmFzZTY0RXNjYXBlKHRjLnBsYWludGV4dCwg
JmJ1ZmZlcik7CiAgICAgRVhQRUNUX0VRKHRjLmN5cGhlcnRleHQsIGJ1ZmZlcik7CiAgIH0KQEAg
LTU4Niw3ICs1ODcsNyBAQCBURVNUKEJhc2U2NCwgRXNjYXBlQW5kVW5lc2NhcGUpIHsKICAgICBh
YnNsOjpzdHJpbmdfdmlldyBkYXRhX3NldFtdID0geyJhYi0vIiwgYWJzbDo6c3RyaW5nX3ZpZXco
IlwwYmNkIiwgNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpz
dHJpbmdfdmlldygiYWJjLlwwIiwgNSl9OwogICAgIGZvciAoYWJzbDo6c3RyaW5nX3ZpZXcgYmFk
X2RhdGEgOiBkYXRhX3NldCkgewotICAgICAgc3RkOjpzdHJpbmcgYnVmOworICAgICAgU3RyaW5n
VHlwZSBidWY7CiAgICAgICBFWFBFQ1RfRkFMU0UoYWJzbDo6QmFzZTY0VW5lc2NhcGUoYmFkX2Rh
dGEsICZidWYpKTsKICAgICAgIEVYUEVDVF9GQUxTRShhYnNsOjpXZWJTYWZlQmFzZTY0VW5lc2Nh
cGUoYmFkX2RhdGEsICZidWYpKTsKICAgICAgIEVYUEVDVF9UUlVFKGJ1Zi5lbXB0eSgpKTsKQEAg
LTU5NCw2ICs1OTUsMTAgQEAgVEVTVChCYXNlNjQsIEVzY2FwZUFuZFVuZXNjYXBlKSB7CiAgIH0K
IH0KIAorVEVTVChCYXNlNjQsIEVzY2FwZUFuZFVuZXNjYXBlKSB7CisgIFRlc3RFc2NhcGVBbmRV
bmVzY2FwZTxzdGQ6OnN0cmluZz4oKTsKK30KKwogVEVTVChCYXNlNjQsIERJU0FCTEVEX0h1Z2VE
YXRhKSB7CiAgIGNvbnN0IHNpemVfdCBrU2l6ZSA9IHNpemVfdCgzKSAqIDEwMDAgKiAxMDAwICog
MTAwMDsKICAgc3RhdGljX2Fzc2VydChrU2l6ZSAlIDMgPT0gMCwgImtTaXplIG11c3QgYmUgZGl2
aXNpYmxlIGJ5IDMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvYml0cy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9iaXRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDkwMTA4MmNjZGRmY2E3ODQ1N2M3NDZmYmUyMmVlNTcwOTkzM2JmYWYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9iaXRzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCi0vLwotLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0vLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0vLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLS8vCi0vLyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotLy8KLS8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
LS8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCi0vLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLS8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLS8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0jaWZuZGVmIEFCU0xfU1RSSU5HU19JTlRFUk5B
TF9CSVRTX0hfCi0jZGVmaW5lIEFCU0xfU1RSSU5HU19JTlRFUk5BTF9CSVRTX0hfCi0KLSNpbmNs
dWRlIDxjc3RkaW50PgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfTV9YNjQp
Ci0jaW5jbHVkZSA8aW50cmluLmg+Ci0jcHJhZ21hIGludHJpbnNpYyhfQml0U2NhblJldmVyc2U2
NCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgYWJzbCB7Ci1uYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5h
bCB7Ci0KLS8vIFJldHVybnMgdGhlIG51bWJlciBvZiBsZWFkaW5nIDAgYml0cyBpbiBhIDY0LWJp
dCB2YWx1ZS4KLWlubGluZSBpbnQgQ291bnRMZWFkaW5nWmVyb3M2NCh1aW50NjRfdCBuKSB7Ci0j
aWYgZGVmaW5lZChfX0dOVUNfXykKLSAgc3RhdGljX2Fzc2VydChzaXplb2YodW5zaWduZWQgbG9u
ZyBsb25nKSA9PSBzaXplb2YobiksICAvLyBOT0xJTlQocnVudGltZS9pbnQpCi0gICAgICAgICAg
ICAgICAgIl9fYnVpbHRpbl9jbHpsbCBkb2VzIG5vdCB0YWtlIDY0Yml0IGFyZyIpOwotICByZXR1
cm4gbiA9PSAwID8gNjQgOiBfX2J1aWx0aW5fY2x6bGwobik7Ci0jZWxpZiBkZWZpbmVkKF9NU0Nf
VkVSKSAmJiBkZWZpbmVkKF9NX1g2NCkKLSAgdW5zaWduZWQgbG9uZyByZXN1bHQ7ICAvLyBOT0xJ
TlQocnVudGltZS9pbnQpCi0gIGlmIChfQml0U2NhblJldmVyc2U2NCgmcmVzdWx0LCBuKSkgewot
ICAgIHJldHVybiA2MyAtIHJlc3VsdDsKLSAgfQotICByZXR1cm4gNjQ7Ci0jZWxzZQotICBpbnQg
emVyb2VzID0gNjA7Ci0gIGlmIChuID4+IDMyKSB6ZXJvZXMgLT0gMzIsIG4gPj49IDMyOwotICBp
ZiAobiA+PiAxNikgemVyb2VzIC09IDE2LCBuID4+PSAxNjsKLSAgaWYgKG4gPj4gOCkgemVyb2Vz
IC09IDgsIG4gPj49IDg7Ci0gIGlmIChuID4+IDQpIHplcm9lcyAtPSA0LCBuID4+PSA0OwotICBy
ZXR1cm4gIlw0XDNcMlwyXDFcMVwxXDFcMFwwXDBcMFwwXDBcMFwwIltuXSArIHplcm9lczsKLSNl
bmRpZgotfQotCi19ICAvLyBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbAotfSAgLy8gbmFtZXNw
YWNlIGFic2wKLQotI2VuZGlmICAvLyBBQlNMX1NUUklOR1NfSU5URVJOQUxfQklUU19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuY2MKaW5kZXggYTA0Y2M2NzY2OWE3Zjc1
ZjkzNmE3NjdjNWYyMjNjYjM1OTJkOWViYi4uN2U0ZGFiYzIyNjJlZmY3NzI2YjcyZjU0ODAzMTU0
YTA0MmFhYTcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9w
YXJzZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3BhcnNlLmNjCkBA
IC05MSw3ICs5MSw3IEBAIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+Ojpk
aWdpdHMxMCA+PSBrRGVjaW1hbEV4cG9uZW50RGlnaXRzTWF4LAogCiAvLyBUbyBhdm9pZCBpbmNy
ZWRpYmx5IGxhcmdlIGlucHV0cyBjYXVzaW5nIGludGVnZXIgb3ZlcmZsb3cgZm9yIG91ciBleHBv
bmVudCwKIC8vIHdlIGltcG9zZSBhbiBhcmJpdHJhcnkgYnV0IHZlcnkgbGFyZ2UgbGltaXQgb24g
dGhlIG51bWJlciBvZiBzaWduaWZpY2FudAotLy8gZGlnaXRzIHdlIHdpbGwgYWNjZXB0LiAgVGhl
IGltcGxlbWVudGF0aW9uIHJlZnVzZXMgdG8gbWF0Y2ggYSBzdGQ6OnN0cmluZyB3aXRoCisvLyBk
aWdpdHMgd2Ugd2lsbCBhY2NlcHQuICBUaGUgaW1wbGVtZW50YXRpb24gcmVmdXNlcyB0byBtYXRj
aCBhIHN0cmluZyB3aXRoCiAvLyBtb3JlIGNvbnNlY3V0aXZlIHNpZ25pZmljYW50IG1hbnRpc3Nh
IGRpZ2l0cyB0aGFuIHRoaXMuCiBjb25zdGV4cHIgaW50IGtEZWNpbWFsRGlnaXRMaW1pdCA9IDUw
MDAwMDAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3Bh
cnNlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X3BhcnNlX3Rlc3Qu
Y2MKaW5kZXggMWZmODYwMDQ5NzNhODJmY2Q3MGUzMDFjODA4YTk0MzQ5ZWQzYmJiMS4uZjQ4Yjlh
ZWUxYTVlODRkYjNiMWNjMjk2YWFiMzYzZjJjMzNkYjM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvY2hhcmNvbnZfcGFyc2VfdGVzdC5jYwpAQCAtMjksMTYgKzI5LDE2IEBAIHVzaW5n
IGFic2w6OnN0cmluZ3NfaW50ZXJuYWw6OlBhcnNlRmxvYXQ7CiAKIG5hbWVzcGFjZSB7CiAKLS8v
IENoZWNrIHRoYXQgYSBnaXZlbiBzdGQ6OnN0cmluZyBpbnB1dCBpcyBwYXJzZWQgdG8gdGhlIGV4
cGVjdGVkIG1hbnRpc3NhIGFuZAorLy8gQ2hlY2sgdGhhdCBhIGdpdmVuIHN0cmluZyBpbnB1dCBp
cyBwYXJzZWQgdG8gdGhlIGV4cGVjdGVkIG1hbnRpc3NhIGFuZAogLy8gZXhwb25lbnQuCiAvLwot
Ly8gSW5wdXQgc3RkOjpzdHJpbmcgYHNgIG11c3QgY29udGFpbiBhICckJyBjaGFyYWN0ZXIuICBJ
dCBtYXJrcyB0aGUgZW5kIG9mIHRoZQorLy8gSW5wdXQgc3RyaW5nIGBzYCBtdXN0IGNvbnRhaW4g
YSAnJCcgY2hhcmFjdGVyLiAgSXQgbWFya3MgdGhlIGVuZCBvZiB0aGUKIC8vIGNoYXJhY3RlcnMg
dGhhdCBzaG91bGQgYmUgY29uc3VtZWQgYnkgdGhlIG1hdGNoLiAgSXQgaXMgc3RyaXBwZWQgZnJv
bSB0aGUKIC8vIGlucHV0IHRvIFBhcnNlRmxvYXQuCiAvLwotLy8gSWYgaW5wdXQgc3RkOjpzdHJp
bmcgYHNgIGNvbnRhaW5zICdbJyBhbmQgJ10nIGNoYXJhY3RlcnMsIHRoZXNlIG1hcmsgdGhlIHJl
Z2lvbgorLy8gSWYgaW5wdXQgc3RyaW5nIGBzYCBjb250YWlucyAnWycgYW5kICddJyBjaGFyYWN0
ZXJzLCB0aGVzZSBtYXJrIHRoZSByZWdpb24KIC8vIG9mIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQg
YmUgbWFya2VkIGFzIHRoZSAic3VicmFuZ2UiLiAgRm9yIE5hTnMsIHRoaXMgaXMKLS8vIHRoZSBs
b2NhdGlvbiBvZiB0aGUgZXh0ZW5kZWQgTmFOIHN0ZDo6c3RyaW5nLiAgRm9yIG51bWJlcnMsIHRo
aXMgaXMgdGhlIGxvY2F0aW9uCisvLyB0aGUgbG9jYXRpb24gb2YgdGhlIGV4dGVuZGVkIE5hTiBz
dHJpbmcuICBGb3IgbnVtYmVycywgdGhpcyBpcyB0aGUgbG9jYXRpb24KIC8vIG9mIHRoZSBmdWxs
LCBvdmVyLWxhcmdlIG1hbnRpc3NhLgogdGVtcGxhdGUgPGludCBiYXNlPgogdm9pZCBFeHBlY3RQ
YXJzZWRGbG9hdChzdGQ6OnN0cmluZyBzLCBhYnNsOjpjaGFyc19mb3JtYXQgZm9ybWF0X2ZsYWdz
LApAQCAtOTIsMTAgKzkyLDEwIEBAIHZvaWQgRXhwZWN0UGFyc2VkRmxvYXQoc3RkOjpzdHJpbmcg
cywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZvcm1hdF9mbGFncywKICAgRVhQRUNUX0VRKGNoYXJhY3Rl
cnNfbWF0Y2hlZCwgZXhwZWN0ZWRfY2hhcmFjdGVyc19tYXRjaGVkKTsKIH0KIAotLy8gQ2hlY2sg
dGhhdCBhIGdpdmVuIHN0ZDo6c3RyaW5nIGlucHV0IGlzIHBhcnNlZCB0byB0aGUgZXhwZWN0ZWQg
bWFudGlzc2EgYW5kCisvLyBDaGVjayB0aGF0IGEgZ2l2ZW4gc3RyaW5nIGlucHV0IGlzIHBhcnNl
ZCB0byB0aGUgZXhwZWN0ZWQgbWFudGlzc2EgYW5kCiAvLyBleHBvbmVudC4KIC8vCi0vLyBJbnB1
dCBzdGQ6OnN0cmluZyBgc2AgbXVzdCBjb250YWluIGEgJyQnIGNoYXJhY3Rlci4gIEl0IG1hcmtz
IHRoZSBlbmQgb2YgdGhlCisvLyBJbnB1dCBzdHJpbmcgYHNgIG11c3QgY29udGFpbiBhICckJyBj
aGFyYWN0ZXIuICBJdCBtYXJrcyB0aGUgZW5kIG9mIHRoZQogLy8gY2hhcmFjdGVycyB0aGF0IHdl
cmUgY29uc3VtZWQgYnkgdGhlIG1hdGNoLgogdGVtcGxhdGUgPGludCBiYXNlPgogdm9pZCBFeHBl
Y3ROdW1iZXIoc3RkOjpzdHJpbmcgcywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZvcm1hdF9mbGFncywK
QEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEV4cGVjdE51bWJlcihzdGQ6OnN0cmluZyBzLCBhYnNs
OjpjaGFyc19mb3JtYXQgZm9ybWF0X2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9saXRlcmFsX2V4cG9uZW50KTsKIH0KIAotLy8gQ2hlY2sgdGhhdCBhIGdpdmVuIHN0
ZDo6c3RyaW5nIGlucHV0IGlzIHBhcnNlZCB0byB0aGUgZ2l2ZW4gc3BlY2lhbCB2YWx1ZS4KKy8v
IENoZWNrIHRoYXQgYSBnaXZlbiBzdHJpbmcgaW5wdXQgaXMgcGFyc2VkIHRvIHRoZSBnaXZlbiBz
cGVjaWFsIHZhbHVlLgogLy8KIC8vIFRoaXMgdGVzdHMgYWdhaW5zdCBib3RoIG51bWJlciBiYXNl
cywgc2luY2UgaW5maW5pdGllcyBhbmQgTmFOcyBoYXZlCiAvLyBpZGVudGljYWwgcmVwcmVzZW50
YXRpb25zIGluIGJvdGggbW9kZXMuCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBFeHBlY3RTcGVj
aWFsKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBhYnNsOjpjaGFyc19mb3JtYXQgZm9ybWF0X2ZsYWdz
LAogICBFeHBlY3RQYXJzZWRGbG9hdDwxNj4ocywgZm9ybWF0X2ZsYWdzLCB0eXBlLCAwLCAwKTsK
IH0KIAotLy8gQ2hlY2sgdGhhdCBhIGdpdmVuIGlucHV0IHN0ZDo6c3RyaW5nIGlzIG5vdCBtYXRj
aGVkIGJ5IEZsb2F0LgorLy8gQ2hlY2sgdGhhdCBhIGdpdmVuIGlucHV0IHN0cmluZyBpcyBub3Qg
bWF0Y2hlZCBieSBGbG9hdC4KIHRlbXBsYXRlIDxpbnQgYmFzZT4KIHZvaWQgRXhwZWN0RmFpbGVk
UGFyc2UoYWJzbDo6c3RyaW5nX3ZpZXcgcywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZvcm1hdF9mbGFn
cykgewogICBQYXJzZWRGbG9hdCBwYXJzZWQgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9tZW11dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0aWwuaAppbmRl
eCBhNmYxYzY5MTM4ZTM4NzJmMTI3ZTcwYWViMjZlMTU5YTgyOTI1YTBjLi43ZGUzODNiMTllYzNm
YzBmNmM5MzMxYTQxZDk0MTczYzU1MWFlY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2lu
dGVybmFsL21lbXV0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL21lbXV0aWwuaApA
QCAtMTQsNyArMTQsNyBAQAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAvLwog
Ci0vLyBUaGVzZSByb3V0aW5lcyBwcm92aWRlIG1lbSB2ZXJzaW9ucyBvZiBzdGFuZGFyZCBDIHN0
ZDo6c3RyaW5nIHJvdXRpbmVzLAorLy8gVGhlc2Ugcm91dGluZXMgcHJvdmlkZSBtZW0gdmVyc2lv
bnMgb2Ygc3RhbmRhcmQgQyBzdHJpbmcgcm91dGluZXMsCiAvLyBzdWNoIGFzIHN0cnBicmsuICBU
aGV5IGZ1bmN0aW9uIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIHN0ciB2ZXJzaW9ucywKIC8vIHNv
IGlmIHlvdSB3b25kZXIgd2hhdCB0aGV5IGFyZSwgcmVwbGFjZSB0aGUgd29yZCAibWVtIiBieQog
Ly8gInN0ciIgYW5kIGNoZWNrIG91dCB0aGUgbWFuIHBhZ2UuICBJIGNvdWxkIHJldHVybiB2b2lk
KiwgYXMgdGhlCkBAIC0yMiwxNCArMjIsMTQgQEAKIC8vIHNpbmNlIHRoaXMgaXMgYnkgZmFyIHRo
ZSBtb3N0IGNvbW1vbiB3YXkgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQuCiAvLwogLy8gVGhl
IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbWVtIGFuZCBzdHIgdmVyc2lvbnMgaXMgdGhlIG1lbSB2
ZXJzaW9uCi0vLyB0YWtlcyBhIHBvaW50ZXIgYW5kIGEgbGVuZ3RoLCByYXRoZXIgdGhhbiBhICdc
MCctdGVybWluYXRlZCBzdGQ6OnN0cmluZy4KKy8vIHRha2VzIGEgcG9pbnRlciBhbmQgYSBsZW5n
dGgsIHJhdGhlciB0aGFuIGEgJ1wwJy10ZXJtaW5hdGVkIHN0cmluZy4KIC8vIFRoZSBtZW1jYXNl
KiByb3V0aW5lcyBkZWZpbmVkIGhlcmUgYXNzdW1lIHRoZSBsb2NhbGUgaXMgIkMiCiAvLyAodGhl
eSB1c2UgYWJzbDo6YXNjaWlfdG9sb3dlciBpbnN0ZWFkIG9mIHRvbG93ZXIpLgogLy8KIC8vIFRo
ZXNlIHJvdXRpbmVzIGFyZSBiYXNlZCBvbiB0aGUgQlNEIGxpYnJhcnkuCiAvLwotLy8gSGVyZSdz
IGEgbGlzdCBvZiByb3V0aW5lcyBmcm9tIHN0ZDo6c3RyaW5nLmgsIGFuZCB0aGVpciBtZW0gYW5h
bG9ndWVzLgotLy8gRnVuY3Rpb25zIGluIGxvd2VyY2FzZSBhcmUgZGVmaW5lZCBpbiBzdGQ6OnN0
cmluZy5oOyB0aG9zZSBpbiBVUFBFUkNBU0UKKy8vIEhlcmUncyBhIGxpc3Qgb2Ygcm91dGluZXMg
ZnJvbSBzdHJpbmcuaCwgYW5kIHRoZWlyIG1lbSBhbmFsb2d1ZXMuCisvLyBGdW5jdGlvbnMgaW4g
bG93ZXJjYXNlIGFyZSBkZWZpbmVkIGluIHN0cmluZy5oOyB0aG9zZSBpbiBVUFBFUkNBU0UKIC8v
IGFyZSBkZWZpbmVkIGhlcmU6CiAvLwogLy8gc3RybGVuICAgICAgICAgICAgICAgICAgLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmgKaW5kZXggNmUxMzI1YjkxNDBmOGEwYzNl
ZWRiNmY1YTEzZTIxZDhkNmUwYWFmNi4uZTgxYTg5YWZmZWEyNWJlMjZiYmNkMzEyMGNjNzA5NDUw
MmEyZDgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFt
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmgKQEAgLTI1LDE4
ICsyNSwxOCBAQAogbmFtZXNwYWNlIGFic2wgewogbmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwg
ewogCi0vLyBUaGUgc2FtZSBhcyBzdGQ6Om9zdHJpbmdzdHJlYW0gYnV0IGFwcGVuZHMgdG8gYSB1
c2VyLXNwZWNpZmllZCBzdGQ6OnN0cmluZywKKy8vIFRoZSBzYW1lIGFzIHN0ZDo6b3N0cmluZ3N0
cmVhbSBidXQgYXBwZW5kcyB0byBhIHVzZXItc3BlY2lmaWVkIHN0cmluZywKIC8vIGFuZCBpcyBm
YXN0ZXIuIEl0IGlzIH43MCUgZmFzdGVyIHRvIGNyZWF0ZSwgfjUwJSBmYXN0ZXIgdG8gd3JpdGUg
dG8sIGFuZAotLy8gY29tcGxldGVseSBmcmVlIHRvIGV4dHJhY3QgdGhlIHJlc3VsdCBzdGQ6OnN0
cmluZy4KKy8vIGNvbXBsZXRlbHkgZnJlZSB0byBleHRyYWN0IHRoZSByZXN1bHQgc3RyaW5nLgog
Ly8KLS8vICAgc3RkOjpzdHJpbmcgczsKKy8vICAgc3RyaW5nIHM7CiAvLyAgIE9TdHJpbmdTdHJl
YW0gc3RybSgmcyk7CiAvLyAgIHN0cm0gPDwgNDIgPDwgJyAnIDw8IDMuMTQ7ICAvLyBhcHBlbmRz
IHRvIGBzYAogLy8KIC8vIFRoZSBzdHJlYW0gb2JqZWN0IGRvZXNuJ3QgaGF2ZSB0byBiZSBuYW1l
ZC4gU3RhcnRpbmcgZnJvbSBDKysxMSBvcGVyYXRvcjw8CiAvLyB3b3JrcyB3aXRoIHJ2YWx1ZXMg
b2Ygc3RkOjpvc3RyZWFtLgogLy8KLS8vICAgc3RkOjpzdHJpbmcgczsKKy8vICAgc3RyaW5nIHM7
CiAvLyAgIE9TdHJpbmdTdHJlYW0oJnMpIDw8IDQyIDw8ICcgJyA8PCAzLjE0OyAgLy8gYXBwZW5k
cyB0byBgc2AKIC8vCiAvLyBPU3RyaW5nU3RyZWFtIGlzIGZhc3RlciB0byBjcmVhdGUgdGhhbiBz
dGQ6Om9zdHJpbmdzdHJlYW0gYnV0IGl0J3Mgc3RpbGwKQEAgLTQ1LDE0ICs0NSwxNCBAQCBuYW1l
c3BhY2Ugc3RyaW5nc19pbnRlcm5hbCB7CiAvLwogLy8gQ3JlYXRlcyB1bm5lY2Vzc2FyeSBpbnN0
YW5jZXMgb2YgT1N0cmluZ1N0cmVhbTogc2xvdy4KIC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHM7Cisv
LyAgIHN0cmluZyBzOwogLy8gICBPU3RyaW5nU3RyZWFtKCZzKSA8PCA0MjsKIC8vICAgT1N0cmlu
Z1N0cmVhbSgmcykgPDwgJyAnOwogLy8gICBPU3RyaW5nU3RyZWFtKCZzKSA8PCAzLjE0OwogLy8K
IC8vIENyZWF0ZXMgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgT1N0cmluZ1N0cmVhbSBhbmQgcmV1c2Vz
IGl0OiBmYXN0LgogLy8KLS8vICAgc3RkOjpzdHJpbmcgczsKKy8vICAgc3RyaW5nIHM7CiAvLyAg
IE9TdHJpbmdTdHJlYW0gc3RybSgmcyk7CiAvLyAgIHN0cm0gPDwgNDI7CiAvLyAgIHN0cm0gPDwg
JyAnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVfdW5pbml0aWFs
aXplZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVfdW5pbml0aWFsaXplZC5oCmlu
ZGV4IDAxNTdjYTAyNDVmMzUwYmVjZTZkY2JlMTk4N2JkYjgwYjRhNTQ1NTEuLmE5NGUwNTQ3YjUw
ZjE1NDIzNDM3NGU4ZTYwODA0MmE2YzcwMzNiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvcmVzaXplX3VuaW5pdGlhbGl6ZWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkLmgKQEAgLTQ0LDggKzQ0LDggQEAgdm9pZCBSZXNpemVV
bmluaXQoc3RyaW5nX3R5cGUqIHMsIHNpemVfdCBuZXdfc2l6ZSwgc3RkOjpmYWxzZV90eXBlKSB7
CiAgIHMtPnJlc2l6ZShuZXdfc2l6ZSk7CiB9CiAKLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3Rk
OjpzdHJpbmcgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgYSByZXNpemUgd2hlcmUKLS8vIHRoZSBu
ZXcgY2hhcmFjdGVycyBhZGRlZCB0byB0aGUgc3RkOjpzdHJpbmcgYXJlIGxlZnQgdW50b3VjaGVk
LgorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzdHJpbmcgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMg
YSByZXNpemUgd2hlcmUKKy8vIHRoZSBuZXcgY2hhcmFjdGVycyBhZGRlZCB0byB0aGUgc3RyaW5n
IGFyZSBsZWZ0IHVudG91Y2hlZC4KIC8vCiAvLyAoQSBiZXR0ZXIgbmFtZSBtaWdodCBiZSAiU1RM
U3RyaW5nU3VwcG9ydHNVbmluaXRpYWxpemVkUmVzaXplIiwgYWxsdWRpbmcgdG8KIC8vIHRoZSBw
cmV2aW91cyBmdW5jdGlvbi4pCkBAIC01Nyw3ICs1Nyw3IEBAIGlubGluZSBjb25zdGV4cHIgYm9v
bCBTVExTdHJpbmdTdXBwb3J0c05vbnRyYXNoaW5nUmVzaXplKHN0cmluZ190eXBlKikgewogLy8g
TGlrZSBzdHItPnJlc2l6ZShuZXdfc2l6ZSksIGV4Y2VwdCBhbnkgbmV3IGNoYXJhY3RlcnMgYWRk
ZWQgdG8gIipzdHIiIGFzIGEKIC8vIHJlc3VsdCBvZiByZXNpemluZyBtYXkgYmUgbGVmdCB1bmlu
aXRpYWxpemVkLCByYXRoZXIgdGhhbiBiZWluZyBmaWxsZWQgd2l0aAogLy8gJzAnIGJ5dGVzLiBU
eXBpY2FsbHkgdXNlZCB3aGVuIGNvZGUgaXMgdGhlbiBnb2luZyB0byBvdmVyd3JpdGUgdGhlIGJh
Y2tpbmcKLS8vIHN0b3JlIG9mIHRoZSBzdGQ6OnN0cmluZyB3aXRoIGtub3duIGRhdGEuIFVzZXMg
YSBHb29nbGUgZXh0ZW5zaW9uIHRvIHN0ZDo6c3RyaW5nLgorLy8gc3RvcmUgb2YgdGhlIHN0cmlu
ZyB3aXRoIGtub3duIGRhdGEuIFVzZXMgYSBHb29nbGUgZXh0ZW5zaW9uIHRvIDo6c3RyaW5nLgog
dGVtcGxhdGUgPHR5cGVuYW1lIHN0cmluZ190eXBlLCB0eXBlbmFtZSA9IHZvaWQ+CiBpbmxpbmUg
dm9pZCBTVExTdHJpbmdSZXNpemVVbmluaXRpYWxpemVkKHN0cmluZ190eXBlKiBzLCBzaXplX3Qg
bmV3X3NpemUpIHsKICAgUmVzaXplVW5pbml0KHMsIG5ld19zaXplLCBIYXNSZXNpemVVbmluaXRp
YWxpemVkPHN0cmluZ190eXBlPigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvc3RyX2Zvcm1hdC9hcmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQv
YXJnLmNjCmluZGV4IGVhZmIwNjhmZTI4Njc0NDYyNzBmMjI4YTY0NDllMGRiNWE0Y2NhYjUuLmI0
MGJlOGZmMzgyNGU5YzY2YjRmN2MxZWNjMDg1NmU0MTc4ZmRkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5jYwpAQCAtMTEyLDcgKzExMiw3IEBAIGNsYXNzIENvbnZl
cnRlZEludEluZm8gewogLy8gTm90ZTogJ28nIGNvbnZlcnNpb25zIGRvIG5vdCBoYXZlIGEgYmFz
ZSBpbmRpY2F0b3IsIGl0J3MganVzdCB0aGF0CiAvLyB0aGUgJyMnIGZsYWcgaXMgc3BlY2lmaWVk
IHRvIG1vZGlmeSB0aGUgcHJlY2lzaW9uIGZvciAnbycgY29udmVyc2lvbnMuCiBzdHJpbmdfdmll
dyBCYXNlSW5kaWNhdG9yKGNvbnN0IENvbnZlcnRlZEludEluZm8gJmluZm8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYpIHsKICAgYm9vbCBhbHQg
PSBjb252LmZsYWdzKCkuYWx0OwogICBpbnQgcmFkaXggPSBjb252LmNvbnYoKS5yYWRpeCgpOwog
ICBpZiAoY29udi5jb252KCkuaWQoKSA9PSBDb252ZXJzaW9uQ2hhcjo6cCkKQEAgLTEyNyw3ICsx
MjcsNyBAQCBzdHJpbmdfdmlldyBCYXNlSW5kaWNhdG9yKGNvbnN0IENvbnZlcnRlZEludEluZm8g
JmluZm8sCiAgIHJldHVybiB7fTsKIH0KIAotc3RyaW5nX3ZpZXcgU2lnbkNvbHVtbihib29sIG5l
ZywgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYpIHsKK3N0cmluZ192aWV3IFNpZ25Db2x1bW4o
Ym9vbCBuZWcsIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYpIHsKICAgaWYgKGNvbnYuY29udigp
LmlzX3NpZ25lZCgpKSB7CiAgICAgaWYgKG5lZykgcmV0dXJuICItIjsKICAgICBpZiAoY29udi5m
bGFncygpLnNob3dfcG9zKSByZXR1cm4gIisiOwpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0cmluZ192
aWV3IFNpZ25Db2x1bW4oYm9vbCBuZWcsIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252KSB7CiAg
IHJldHVybiB7fTsKIH0KIAotYm9vbCBDb252ZXJ0Q2hhckltcGwodW5zaWduZWQgY2hhciB2LCBj
b25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKK2Jvb2wgQ29udmVydENoYXJJbXBsKHVuc2lnbmVk
IGNoYXIgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAg
IEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHNpemVfdCBmaWxsID0gMDsKICAgaWYgKGNvbnYu
d2lkdGgoKSA+PSAwKSBmaWxsID0gY29udi53aWR0aCgpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIGJv
b2wgQ29udmVydENoYXJJbXBsKHVuc2lnbmVkIGNoYXIgdiwgY29uc3QgQ29udmVyc2lvblNwZWMg
JmNvbnYsCiB9CiAKIGJvb2wgQ29udmVydEludEltcGxJbm5lcihjb25zdCBDb252ZXJ0ZWRJbnRJ
bmZvICZpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVj
ICZjb252LCBGb3JtYXRTaW5rSW1wbCAqc2luaykgeworICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIC8v
IFByaW50IGFzIGEgc2VxdWVuY2Ugb2YgU3Vic3RyaW5nczoKICAgLy8gICBbbGVmdF9zcGFjZXNd
W3NpZ25dW2Jhc2VfaW5kaWNhdG9yXVt6ZXJvZXNdW2Zvcm1hdHRlZF1bcmlnaHRfc3BhY2VzXQog
ICBzaXplX3QgZmlsbCA9IDA7CkBAIC0yMDIsOCArMjAyLDcgQEAgYm9vbCBDb252ZXJ0SW50SW1w
bElubmVyKGNvbnN0IENvbnZlcnRlZEludEluZm8gJmluZm8sCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotYm9vbCBDb252ZXJ0SW50SW1wbElubmVyKFQgdiwgY29uc3QgQ29udmVyc2lvblNw
ZWMgJmNvbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmsp
IHsKK2Jvb2wgQ29udmVydEludEltcGxJbm5lcihUIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjIGNv
bnYsIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIENvbnZlcnRlZEludEluZm8gaW5mbyh2LCBj
b252LmNvbnYoKSk7CiAgIGlmIChjb252LmZsYWdzKCkuYmFzaWMgJiYgY29udi5jb252KCkuaWQo
KSAhPSBDb252ZXJzaW9uQ2hhcjo6cCkgewogICAgIGlmIChpbmZvLmlzX25lZygpKSBzaW5rLT5B
cHBlbmQoMSwgJy0nKTsKQEAgLTIxOCw3ICsyMTcsNyBAQCBib29sIENvbnZlcnRJbnRJbXBsSW5u
ZXIoVCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1ib29sIENvbnZlcnRJbnRBcmcoVCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29u
diwgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKK2Jvb2wgQ29udmVydEludEFyZyhUIHYsIGNvbnN0
IENvbnZlcnNpb25TcGVjIGNvbnYsIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIGlmIChjb252
LmNvbnYoKS5pc19mbG9hdCgpKSB7CiAgICAgcmV0dXJuIEZvcm1hdENvbnZlcnRJbXBsKHN0YXRp
Y19jYXN0PGRvdWJsZT4odiksIGNvbnYsIHNpbmspLnZhbHVlOwogICB9CkBAIC0yMzQsMTEgKzIz
MywxMSBAQCBib29sIENvbnZlcnRJbnRBcmcoVCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29u
diwgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1i
b29sIENvbnZlcnRGbG9hdEFyZyhUIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LCBGb3Jt
YXRTaW5rSW1wbCAqc2luaykgeworYm9vbCBDb252ZXJ0RmxvYXRBcmcoVCB2LCBjb25zdCBDb252
ZXJzaW9uU3BlYyBjb252LCBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICByZXR1cm4gY29udi5j
b252KCkuaXNfZmxvYXQoKSAmJiBDb252ZXJ0RmxvYXRJbXBsKHYsIGNvbnYsIHNpbmspOwogfQog
Ci1pbmxpbmUgYm9vbCBDb252ZXJ0U3RyaW5nQXJnKHN0cmluZ192aWV3IHYsIGNvbnN0IENvbnZl
cnNpb25TcGVjICZjb252LAoraW5saW5lIGJvb2wgQ29udmVydFN0cmluZ0FyZyhzdHJpbmdfdmll
dyB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICBpZiAoY29udi5jb252KCkuaWQoKSAhPSBD
b252ZXJzaW9uQ2hhcjo6cykKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTQsMTkgKzI1MywxOSBA
QCBpbmxpbmUgYm9vbCBDb252ZXJ0U3RyaW5nQXJnKHN0cmluZ192aWV3IHYsIGNvbnN0IENvbnZl
cnNpb25TcGVjICZjb252LAogCiAvLyA9PT09PT09PT09PT09PT09PT09PSBTdHJpbmdzID09PT09
PT09PT09PT09PT09PT09CiBDb252ZXJ0UmVzdWx0PENvbnY6OnM+IEZvcm1hdENvbnZlcnRJbXBs
KGNvbnN0IHN0ZDo6c3RyaW5nICZ2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsK
ICAgcmV0dXJuIHtDb252ZXJ0U3RyaW5nQXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIAogQ29udmVy
dFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChzdHJpbmdfdmlldyB2LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAm
Y29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29u
dmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0U3RyaW5nQXJnKHYs
IGNvbnYsIHNpbmspfTsKIH0KIAogQ29udmVydFJlc3VsdDxDb252OjpzIHwgQ29udjo6cD4gRm9y
bWF0Q29udmVydEltcGwoY29uc3QgY2hhciAqdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29u
dmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIGlmIChjb252LmNvbnYoKS5p
ZCgpID09IENvbnZlcnNpb25DaGFyOjpwKQogICAgIHJldHVybiB7Rm9ybWF0Q29udmVydEltcGwo
Vm9pZFB0cih2KSwgY29udiwgc2luaykudmFsdWV9OwpAQCAtMjgzLDcgKzI4Miw3IEBAIENvbnZl
cnRSZXN1bHQ8Q29udjo6cyB8IENvbnY6OnA+IEZvcm1hdENvbnZlcnRJbXBsKGNvbnN0IGNoYXIg
KnYsCiB9CiAKIC8vID09PT09PT09PT09PT09PT09PT09IFJhdyBwb2ludGVycyA9PT09PT09PT09
PT09PT09PT09PQotQ29udmVydFJlc3VsdDxDb252OjpwPiBGb3JtYXRDb252ZXJ0SW1wbChWb2lk
UHRyIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorQ29udmVydFJlc3VsdDxDb252Ojpw
PiBGb3JtYXRDb252ZXJ0SW1wbChWb2lkUHRyIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBs
ICpzaW5rKSB7CiAgIGlmIChjb252LmNvbnYoKS5pZCgpICE9IENvbnZlcnNpb25DaGFyOjpwKQog
ICAgIHJldHVybiB7ZmFsc2V9OwpAQCAtMjk1LDEwNCArMjk0LDgzIEBAIENvbnZlcnRSZXN1bHQ8
Q29udjo6cD4gRm9ybWF0Q29udmVydEltcGwoVm9pZFB0ciB2LCBjb25zdCBDb252ZXJzaW9uU3Bl
YyAmY29udiwKIH0KIAogLy8gPT09PT09PT09PT09PT09PT09PT0gRmxvYXRzID09PT09PT09PT09
PT09PT09PT09Ci1GbG9hdGluZ0NvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoZmxvYXQg
diwgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCitGbG9hdGluZ0NvbnZlcnRSZXN1bHQgRm9y
bWF0Q29udmVydEltcGwoZmxvYXQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykg
ewogICByZXR1cm4ge0NvbnZlcnRGbG9hdEFyZyh2LCBjb252LCBzaW5rKX07CiB9Ci1GbG9hdGlu
Z0NvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoZG91YmxlIHYsIGNvbnN0IENvbnZlcnNp
b25TcGVjICZjb252LAorRmxvYXRpbmdDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGRv
dWJsZSB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29u
dmVydEZsb2F0QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIEZsb2F0aW5nQ29udmVydFJlc3VsdCBG
b3JtYXRDb252ZXJ0SW1wbChsb25nIGRvdWJsZSB2LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNp
bmspIHsKICAgcmV0dXJuIHtDb252ZXJ0RmxvYXRBcmcodiwgY29udiwgc2luayl9OwogfQogCiAv
LyA9PT09PT09PT09PT09PT09PT09PSBDaGFycyA9PT09PT09PT09PT09PT09PT09PQotSW50ZWdy
YWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGNoYXIgdiwgY29uc3QgQ29udmVyc2lv
blNwZWMgJmNvbnYsCitJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoY2hh
ciB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVy
dEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0
Q29udmVydEltcGwoc2lnbmVkIGNoYXIgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7
CiAgIHJldHVybiB7Q29udmVydEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBJbnRlZ3JhbENv
bnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwodW5zaWduZWQgY2hhciB2LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNp
b25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9y
bWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0SW50QXJnKHYsIGNvbnYsIHNp
bmspfTsKIH0KIAogLy8gPT09PT09PT09PT09PT09PT09PT0gSW50cyA9PT09PT09PT09PT09PT09
PT09PQogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHNob3J0IHYsICAv
LyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
b252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVy
dEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0
Q29udmVydEltcGwodW5zaWduZWQgc2hvcnQgdiwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVj
IGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lu
a0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0SW50QXJnKHYsIGNvbnYsIHNpbmspfTsK
IH0KLUludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChpbnQgdiwgY29uc3Qg
Q29udmVyc2lvblNwZWMgJmNvbnYsCitJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVy
dEltcGwoaW50IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJu
IHtDb252ZXJ0SW50QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KLUludGVncmFsQ29udmVydFJlc3Vs
dCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25lZCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29u
diwKK0ludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25lZCB2LCBj
b25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydEludEFy
Zyh2LCBjb252LCBzaW5rKX07CiB9CiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVy
dEltcGwobG9uZyB2LCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewog
ICByZXR1cm4ge0NvbnZlcnRJbnRBcmcodiwgY29udiwgc2luayl9OwogfQogSW50ZWdyYWxDb252
ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2lnbmVkIGxvbmcgdiwgIC8vIE5PTElOVAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25T
cGVjICZjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0SW50QXJnKHYs
IGNvbnYsIHNpbmspfTsKIH0KIEludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1w
bChsb25nIGxvbmcgdiwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsK
ICAgcmV0dXJuIHtDb252ZXJ0SW50QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIEludGVncmFsQ29u
dmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25lZCBsb25nIGxvbmcgdiwgIC8vIE5P
TElOVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZl
cnNpb25TcGVjICZjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0SW50
QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIEludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252
ZXJ0SW1wbChhYnNsOjp1aW50MTI4IHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewog
ICByZXR1cm4ge0NvbnZlcnRJbnRBcmcodiwgY29udiwgc2luayl9OwogfQogCi10ZW1wbGF0ZSBz
dHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c3RyX2Zvcm1hdF9pbnRlcm5hbDo6Vm9p
ZFB0cj47Ci0KLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxib29s
PjsKLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxjaGFyPjsKLXRl
bXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxzaWduZWQgY2hhcj47Ci10
ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8dW5zaWduZWQgY2hhcj47
Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c2hvcnQ+OyAgICAg
ICAgICAgLy8gTk9MSU5UCi10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFi
bGU8dW5zaWduZWQgc2hvcnQ+OyAgLy8gTk9MSU5UCi10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJn
SW1wbDo6VHlwZWRWVGFibGU8aW50PjsKLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpU
eXBlZFZUYWJsZTx1bnNpZ25lZD47Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlw
ZWRWVGFibGU8bG9uZz47ICAgICAgICAgICAgICAgIC8vIE5PTElOVAotdGVtcGxhdGUgc3RydWN0
IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVuc2lnbmVkIGxvbmc+OyAgICAgICAvLyBOT0xJ
TlQKLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxsb25nIGxvbmc+
OyAgICAgICAgICAgLy8gTk9MSU5UCi10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlw
ZWRWVGFibGU8dW5zaWduZWQgbG9uZyBsb25nPjsgIC8vIE5PTElOVAotdGVtcGxhdGUgc3RydWN0
IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGFic2w6OnVpbnQxMjg+OwotCi10ZW1wbGF0ZSBz
dHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8ZmxvYXQ+OwotdGVtcGxhdGUgc3RydWN0
IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGRvdWJsZT47Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9y
bWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8bG9uZyBkb3VibGU+OwotCi10ZW1wbGF0ZSBzdHJ1Y3Qg
Rm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8Y29uc3QgY2hhciAqPjsKLXRlbXBsYXRlIHN0cnVj
dCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxzdGQ6OnN0cmluZz47Ci10ZW1wbGF0ZSBzdHJ1
Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c3RyaW5nX3ZpZXc+OworQUJTTF9JTlRFUk5B
TF9GT1JNQVRfRElTUEFUQ0hfT1ZFUkxPQURTX0VYUEFORF8oKTsKKwogCiB9ICAvLyBuYW1lc3Bh
Y2Ugc3RyX2Zvcm1hdF9pbnRlcm5hbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVy
bmFsL3N0cl9mb3JtYXQvYXJnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQv
YXJnLmgKaW5kZXggYTk1NjIxODhlYTkxOTczYTYyOTgyOGUwZGVjODJiZDQ3MGM5YzA3YS4uMzM3
NmQ0OGFmZGEyMGZmMjMzYTFkMWI3ZjQxYjMwMDc4YWUxY2NlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvc3RyX2Zvcm1hdC9hcmcuaApAQCAtMzMsNyArMzMsNyBAQCBzdHJ1Y3QgSGFzVXNlckRl
ZmluZWRDb252ZXJ0IDogc3RkOjpmYWxzZV90eXBlIHt9OwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiBzdHJ1Y3QgSGFzVXNlckRlZmluZWRDb252ZXJ0PAogICAgIFQsIHZvaWRfdDxkZWNsdHlwZShB
YnNsRm9ybWF0Q29udmVydCgKLSAgICAgICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IFQmPigpLCBz
dGQ6OmRlY2x2YWw8Y29uc3QgQ29udmVyc2lvblNwZWMmPigpLAorICAgICAgICAgICBzdGQ6OmRl
Y2x2YWw8Y29uc3QgVCY+KCksIHN0ZDo6ZGVjbHZhbDxDb252ZXJzaW9uU3BlYz4oKSwKICAgICAg
ICAgICAgc3RkOjpkZWNsdmFsPEZvcm1hdFNpbmsqPigpKSk+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9
OwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBTdHJlYW1lZFdyYXBwZXI7CkBAIC01MCwy
NSArNTAsMjMgQEAgc3RydWN0IFZvaWRQdHIgewogICAgICAgOiB2YWx1ZShwdHIgPyByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSA6IDApIHt9CiAgIHVpbnRwdHJfdCB2YWx1ZTsKIH07
Ci1Db252ZXJ0UmVzdWx0PENvbnY6OnA+IEZvcm1hdENvbnZlcnRJbXBsKFZvaWRQdHIgdiwgY29u
c3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitDb252ZXJ0UmVzdWx0PENvbnY6OnA+IEZvcm1hdENv
bnZlcnRJbXBsKFZvaWRQdHIgdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogCiAvLyBT
dHJpbmdzLgotQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChjb25zdCBz
dGQ6OnN0cmluZyYgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitDb252ZXJ0UmVzdWx0PENvbnY6OnM+IEZvcm1h
dENvbnZlcnRJbXBsKGNvbnN0IHN0ZDo6c3RyaW5nJiB2LCBDb252ZXJzaW9uU3BlYyBjb252LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCog
c2luayk7Ci1Db252ZXJ0UmVzdWx0PENvbnY6OnM+IEZvcm1hdENvbnZlcnRJbXBsKHN0cmluZ192
aWV3IHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
bnZlcnNpb25TcGVjJiBjb252LAorQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0
SW1wbChzdHJpbmdfdmlldyB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7CiBDb252ZXJ0
UmVzdWx0PENvbnY6OnMgfCBDb252OjpwPiBGb3JtYXRDb252ZXJ0SW1wbChjb25zdCBjaGFyKiB2
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmsp
OwogdGVtcGxhdGUgPGNsYXNzIEFic2xDb3JkLAogICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPAogICAgICAgICAgICAgICBzdGQ6OmlzX3NhbWU8QWJzbENvcmQsIDo6Q29yZD46OnZh
bHVlPjo6dHlwZSogPSBudWxscHRyLAogICAgICAgICAgIGNsYXNzIEFic2xDb3JkUmVhZGVyID0g
OjpDb3JkUmVhZGVyPgogQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChj
b25zdCBBYnNsQ29yZCYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luaykgewogICBpZiAo
Y29udi5jb252KCkuaWQoKSAhPSBDb252ZXJzaW9uQ2hhcjo6cykgcmV0dXJuIHtmYWxzZX07CiAK
QEAgLTEwNCw1MSArMTAyLDQ4IEBAIHVzaW5nIEludGVncmFsQ29udmVydFJlc3VsdCA9CiB1c2lu
ZyBGbG9hdGluZ0NvbnZlcnRSZXN1bHQgPSBDb252ZXJ0UmVzdWx0PENvbnY6OmZsb2F0aW5nPjsK
IAogLy8gRmxvYXRzLgotRmxvYXRpbmdDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGZs
b2F0IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorRmxvYXRpbmdDb252ZXJ0UmVzdWx0
IEZvcm1hdENvbnZlcnRJbXBsKGZsb2F0IHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwot
RmxvYXRpbmdDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGRvdWJsZSB2LCBjb25zdCBD
b252ZXJzaW9uU3BlYyYgY29udiwKK0Zsb2F0aW5nQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0
SW1wbChkb3VibGUgdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7Ci1GbG9hdGluZ0NvbnZl
cnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwobG9uZyBkb3VibGUgdiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKK0Zs
b2F0aW5nQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChsb25nIGRvdWJsZSB2LCBDb252
ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKIAogLy8gQ2hhcnMuCi1JbnRlZ3JhbENvbnZlcnRSZXN1
bHQgRm9ybWF0Q29udmVydEltcGwoY2hhciB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwK
K0ludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChjaGFyIHYsIENvbnZlcnNp
b25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9y
bWF0U2lua0ltcGwqIHNpbmspOwotSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJ
bXBsKHNpZ25lZCBjaGFyIHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9y
bWF0Q29udmVydEltcGwoc2lnbmVkIGNoYXIgdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7
Ci1JbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwodW5zaWduZWQgY2hhciB2
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNp
b25TcGVjJiBjb252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVu
c2lnbmVkIGNoYXIgdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7CiAKIC8vIEludHMuCiBJ
bnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoc2hvcnQgdiwgIC8vIE5PTElO
VAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNp
b25TcGVjJiBjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENv
bnZlcnRJbXBsKHVuc2lnbmVkIHNob3J0IHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBz
aW5rKTsKLUludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChpbnQgdiwgY29u
c3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29u
dmVydEltcGwoaW50IHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwotSW50ZWdyYWxDb252
ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2lnbmVkIHYsIGNvbnN0IENvbnZlcnNpb25T
cGVjJiBjb252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2ln
bmVkIHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogSW50ZWdyYWxDb252ZXJ0UmVzdWx0
IEZvcm1hdENvbnZlcnRJbXBsKGxvbmcgdiwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25TcGVjIGNvbnYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNp
bmspOwogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2lnbmVkIGxv
bmcgdiwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogSW50ZWdyYWxDb252ZXJ0
UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGxvbmcgbG9uZyB2LCAgLy8gTk9MSU5UCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMmIGNv
bnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblNw
ZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRT
aW5rSW1wbCogc2luayk7CiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwo
dW5zaWduZWQgbG9uZyBsb25nIHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsK
LUludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1aW50MTI4IHYsIGNvbnN0
IENvbnZlcnNpb25TcGVjJiBjb252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZl
cnRJbXBsKHVpbnQxMjggdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPFQsIGJvb2w+Ojp2YWx1ZSwgaW50
PiA9IDA+Ci1JbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoVCB2LCBjb25z
dCBDb252ZXJzaW9uU3BlYyYgY29udiwKK0ludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252
ZXJ0SW1wbChUIHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspIHsKICAgcmV0dXJuIEZvcm1h
dENvbnZlcnRJbXBsKHN0YXRpY19jYXN0PGludD4odiksIGNvbnYsIHNpbmspOwogfQpAQCAtMTU5
LDExICsxNTQsMTEgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIUhhc1VzZXJEZWZpbmVkQ29udmVydDxUPjo6dmFsdWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnRlZ3JhbENvbnZlcnRSZXN1bHQ+Ojp0eXBlCi1Gb3JtYXRDb252ZXJ0SW1wbChUIHYs
IGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LCBGb3JtYXRTaW5rSW1wbCogc2luayk7CitGb3Jt
YXRDb252ZXJ0SW1wbChUIHYsIENvbnZlcnNpb25TcGVjIGNvbnYsIEZvcm1hdFNpbmtJbXBsKiBz
aW5rKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBDb252ZXJ0UmVzdWx0PENvbnY6OnM+IEZv
cm1hdENvbnZlcnRJbXBsKGNvbnN0IFN0cmVhbWVkV3JhcHBlcjxUPiYgdiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25TcGVj
IGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNp
bmtJbXBsKiBvdXQpIHsKICAgc3RkOjpvc3RyaW5nc3RyZWFtIG9zczsKICAgb3NzIDw8IHYudl87
CkBAIC0xNzYsNyArMTcxLDcgQEAgQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0
SW1wbChjb25zdCBTdHJlYW1lZFdyYXBwZXI8VD4mIHYsCiBzdHJ1Y3QgRm9ybWF0Q291bnRDYXB0
dXJlSGVscGVyIHsKICAgdGVtcGxhdGUgPGNsYXNzIFQgPSBpbnQ+CiAgIHN0YXRpYyBDb252ZXJ0
UmVzdWx0PENvbnY6Om4+IENvbnZlcnRIZWxwZXIoY29uc3QgRm9ybWF0Q291bnRDYXB0dXJlJiB2
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
bnZlcnNpb25TcGVjJiBjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspIHsKICAgICBjb25zdCBh
YnNsOjplbmFibGVfaWZfdDxzaXplb2YoVCkgIT0gMCwgRm9ybWF0Q291bnRDYXB0dXJlPiYgdjIg
PSB2OwogCkBAIC0xODksNyArMTg0LDcgQEAgc3RydWN0IEZvcm1hdENvdW50Q2FwdHVyZUhlbHBl
ciB7CiAKIHRlbXBsYXRlIDxjbGFzcyBUID0gaW50PgogQ29udmVydFJlc3VsdDxDb252OjpuPiBG
b3JtYXRDb252ZXJ0SW1wbChjb25zdCBGb3JtYXRDb3VudENhcHR1cmUmIHYsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3Bl
YyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRT
aW5rSW1wbCogc2luaykgewogICByZXR1cm4gRm9ybWF0Q291bnRDYXB0dXJlSGVscGVyOjpDb252
ZXJ0SGVscGVyKHYsIGNvbnYsIHNpbmspOwogfQpAQCAtMTk5LDIwICsxOTQsMjAgQEAgQ29udmVy
dFJlc3VsdDxDb252OjpuPiBGb3JtYXRDb252ZXJ0SW1wbChjb25zdCBGb3JtYXRDb3VudENhcHR1
cmUmIHYsCiBzdHJ1Y3QgRm9ybWF0QXJnSW1wbEZyaWVuZCB7CiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBBcmc+CiAgIHN0YXRpYyBib29sIFRvSW50KEFyZyBhcmcsIGludCogb3V0KSB7Ci0gICAgaWYg
KCFhcmcudnRibF8tPnRvX2ludCkgcmV0dXJuIGZhbHNlOwotICAgICpvdXQgPSBhcmcudnRibF8t
PnRvX2ludChhcmcuZGF0YV8pOwotICAgIHJldHVybiB0cnVlOworICAgIC8vIEEgdmFsdWUgaW5p
dGlhbGl6ZWQgQ29udmVyc2lvblNwZWMgaGFzIGEgYG5vbmVgIGNvbnYsIHdoaWNoIHRlbGxzIHRo
ZQorICAgIC8vIGRpc3BhdGNoZXIgdG8gcnVuIHRoZSBgaW50YCBjb252ZXJzaW9uLgorICAgIHJl
dHVybiBhcmcuZGlzcGF0Y2hlcl8oYXJnLmRhdGFfLCB7fSwgb3V0KTsKICAgfQogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBBcmc+Ci0gIHN0YXRpYyBib29sIENvbnZlcnQoQXJnIGFyZywgY29uc3Qg
c3RyX2Zvcm1hdF9pbnRlcm5hbDo6Q29udmVyc2lvblNwZWMmIGNvbnYsCisgIHN0YXRpYyBib29s
IENvbnZlcnQoQXJnIGFyZywgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6Q29udmVyc2lvblNwZWMgY29u
diwKICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogb3V0KSB7Ci0gICAgcmV0
dXJuIGFyZy52dGJsXy0+Y29udmVydChhcmcuZGF0YV8sIGNvbnYsIG91dCk7CisgICAgcmV0dXJu
IGFyZy5kaXNwYXRjaGVyXyhhcmcuZGF0YV8sIGNvbnYsIG91dCk7CiAgIH0KIAogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQXJnPgotICBzdGF0aWMgY29uc3Qgdm9pZCogR2V0VlRhYmxlUHRyRm9yVGVz
dChBcmcgYXJnKSB7Ci0gICAgcmV0dXJuIGFyZy52dGJsXzsKKyAgc3RhdGljIHR5cGVuYW1lIEFy
Zzo6RGlzcGF0Y2hlciBHZXRWVGFibGVQdHJGb3JUZXN0KEFyZyBhcmcpIHsKKyAgICByZXR1cm4g
YXJnLmRpc3BhdGNoZXJfOwogICB9CiB9OwogCkBAIC0yMjksMTEgKzIyNCw3IEBAIGNsYXNzIEZv
cm1hdEFyZ0ltcGwgewogICAgIGNoYXIgYnVmW2tJbmxpbmVkU3BhY2VdOwogICB9OwogCi0gIHN0
cnVjdCBWVGFibGUgewotICAgIGJvb2wgKCpjb252ZXJ0KShEYXRhLCBjb25zdCBzdHJfZm9ybWF0
X2ludGVybmFsOjpDb252ZXJzaW9uU3BlYyYgY29udiwKLSAgICAgICAgICAgICAgICAgICAgRm9y
bWF0U2lua0ltcGwqIG91dCk7Ci0gICAgaW50ICgqdG9faW50KShEYXRhKTsKLSAgfTsKKyAgdXNp
bmcgRGlzcGF0Y2hlciA9IGJvb2wgKCopKERhdGEsIENvbnZlcnNpb25TcGVjLCB2b2lkKiBvdXQp
OwogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBzdHJ1Y3Qgc3RvcmVfYnlfdmFsdWUKQEAg
LTI1MywxMCArMjQ0LDYgQEAgY2xhc3MgRm9ybWF0QXJnSW1wbCB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBCeVBvaW50
ZXIpKT4gewogICB9OwogCi0gIC8vIEFuIGluc3RhbmNlIG9mIGFuIEZvcm1hdEFyZ0ltcGw6OlZU
YWJsZSBzdWl0YWJsZSBmb3IgJ1QnLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgc3RydWN0
IFR5cGVkVlRhYmxlOwotCiAgIC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHZ0YWJsZXMgd2Ug
d2lsbCBkZWNheSB2YWx1ZXMgYmVmb3JlIGhhbmQuCiAgIC8vIEFueXRoaW5nIHdpdGggYSB1c2Vy
LWRlZmluZWQgQ29udmVydCB3aWxsIGdldCBpdHMgb3duIHZ0YWJsZS4KICAgLy8gRm9yIGV2ZXJ5
dGhpbmcgZWxzZToKQEAgLTMzOCw3ICszMjUsMTAgQEAgY2xhc3MgRm9ybWF0QXJnSW1wbCB7CiAg
IH07CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIHZvaWQgSW5pdChjb25zdCBUJiB2YWx1
ZSk7CisgIHZvaWQgSW5pdChjb25zdCBUJiB2YWx1ZSkgeworICAgIGRhdGFfID0gTWFuYWdlcjxU
Pjo6U2V0VmFsdWUodmFsdWUpOworICAgIGRpc3BhdGNoZXJfID0gJkRpc3BhdGNoPFQ+OworICB9
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIHN0YXRpYyBpbnQgVG9JbnRWYWwoY29uc3Qg
VCYgdmFsKSB7CkBAIC0zNTUsNzkgKzM0NSw3NSBAQCBjbGFzcyBGb3JtYXRBcmdJbXBsIHsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWwpOwogICB9CiAKLSAgRGF0YSBkYXRhXzsKLSAg
Y29uc3QgVlRhYmxlKiB2dGJsXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0
IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlIHsKLSBwcml2YXRlOgotICBzdGF0aWMgYm9vbCBD
b252ZXJ0SW1wbChEYXRhIGFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
X2Zvcm1hdF9pbnRlcm5hbDo6Q29udmVyc2lvblNwZWMmIGNvbnYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBvdXQpIHsKLSAgICByZXR1cm4gc3RyX2Zvcm1hdF9p
bnRlcm5hbDo6Rm9ybWF0Q29udmVydEltcGwoTWFuYWdlcjxUPjo6VmFsdWUoYXJnKSwgY29udiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0KQot
ICAgICAgICAudmFsdWU7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgYm9vbCBU
b0ludChEYXRhIGFyZywgaW50KiBvdXQsIHN0ZDo6dHJ1ZV90eXBlIC8qIGlzX2ludGVncmFsICov
LAorICAgICAgICAgICAgICAgICAgICBzdGQ6OmZhbHNlX3R5cGUpIHsKKyAgICAqb3V0ID0gVG9J
bnRWYWwoTWFuYWdlcjxUPjo6VmFsdWUoYXJnKSk7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSA9IFQsIHR5cGVuYW1lID0gdm9pZD4KLSAgc3RydWN0IFRv
SW50SW1wbCB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgKCp2YWx1ZSkoRGF0YSkgPSBudWxs
cHRyOwotICB9OworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIGJvb2wgVG9JbnQo
RGF0YSBhcmcsIGludCogb3V0LCBzdGQ6OmZhbHNlX3R5cGUsCisgICAgICAgICAgICAgICAgICAg
IHN0ZDo6dHJ1ZV90eXBlIC8qIGlzX2VudW0gKi8pIHsKKyAgICAqb3V0ID0gVG9JbnRWYWwoc3Rh
dGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGU+KAorICAgICAg
ICBNYW5hZ2VyPFQ+OjpWYWx1ZShhcmcpKSk7CisgICAgcmV0dXJuIHRydWU7CisgIH0KIAotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgc3RydWN0IFRvSW50SW1wbDxVLAotICAgICAgICAgICAg
ICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VT46OnZhbHVl
Pjo6dHlwZT4gewotICAgIHN0YXRpYyBpbnQgSW52b2tlKERhdGEgYXJnKSB7IHJldHVybiBUb0lu
dFZhbChNYW5hZ2VyPFQ+OjpWYWx1ZShhcmcpKTsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
ICgqdmFsdWUpKERhdGEpID0gJkludm9rZTsKLSAgfTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgIHN0YXRpYyBib29sIFRvSW50KERhdGEsIGludCosIHN0ZDo6ZmFsc2VfdHlwZSwgc3RkOjpm
YWxzZV90eXBlKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CiAKLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIFU+Ci0gIHN0cnVjdCBUb0ludEltcGw8VSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19lbnVtPFU+Ojp2YWx1ZT46OnR5cGU+IHsKLSAgICBzdGF0aWMgaW50IEludm9rZShEYXRh
IGFyZykgewotICAgICAgcmV0dXJuIFRvSW50VmFsKHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6
dW5kZXJseWluZ190eXBlPFQ+Ojp0eXBlPigKLSAgICAgICAgICBNYW5hZ2VyPFQ+OjpWYWx1ZShh
cmcpKSk7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgYm9vbCBEaXNwYXRjaChE
YXRhIGFyZywgQ29udmVyc2lvblNwZWMgc3BlYywgdm9pZCogb3V0KSB7CisgICAgLy8gQSBgbm9u
ZWAgY29udiBpbmRpY2F0ZXMgdGhhdCB3ZSB3YW50IHRoZSBgaW50YCBjb252ZXJzaW9uLgorICAg
IGlmIChBQlNMX1BSRURJQ1RfRkFMU0Uoc3BlYy5jb252KCkuaWQoKSA9PSBDb252ZXJzaW9uQ2hh
cjo6bm9uZSkpIHsKKyAgICAgIHJldHVybiBUb0ludDxUPihhcmcsIHN0YXRpY19jYXN0PGludCo+
KG91dCksIHN0ZDo6aXNfaW50ZWdyYWw8VD4oKSwKKyAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OmlzX2VudW08VD4oKSk7CiAgICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50ICgqdmFsdWUp
KERhdGEpID0gJkludm9rZTsKLSAgfTsKIAotIHB1YmxpYzoKLSAgc3RhdGljIGNvbnN0ZXhwciBW
VGFibGUgdmFsdWV7JkNvbnZlcnRJbXBsLCBUb0ludEltcGw8Pjo6dmFsdWV9OwotfTsKKyAgICBy
ZXR1cm4gc3RyX2Zvcm1hdF9pbnRlcm5hbDo6Rm9ybWF0Q29udmVydEltcGwoCisgICAgICAgICAg
ICAgICBNYW5hZ2VyPFQ+OjpWYWx1ZShhcmcpLCBzcGVjLCBzdGF0aWNfY2FzdDxGb3JtYXRTaW5r
SW1wbCo+KG91dCkpCisgICAgICAgIC52YWx1ZTsKKyAgfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLWNvbnN0ZXhwciBGb3JtYXRBcmdJbXBsOjpWVGFibGUgRm9ybWF0QXJnSW1wbDo6VHlwZWRW
VGFibGU8VD46OnZhbHVlOworICBEYXRhIGRhdGFfOworICBEaXNwYXRjaGVyIGRpc3BhdGNoZXJf
OworfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIEZvcm1hdEFyZ0ltcGw6OkluaXQo
Y29uc3QgVCYgdmFsdWUpIHsKLSAgZGF0YV8gPSBNYW5hZ2VyPFQ+OjpTZXRWYWx1ZSh2YWx1ZSk7
Ci0gIHZ0YmxfID0gJlR5cGVkVlRhYmxlPFQ+Ojp2YWx1ZTsKLX0KKyNkZWZpbmUgQUJTTF9JTlRF
Uk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKFQsIEUpIFwKKyAgRSB0ZW1wbGF0ZSBi
b29sIEZvcm1hdEFyZ0ltcGw6OkRpc3BhdGNoPFQ+KERhdGEsIENvbnZlcnNpb25TcGVjLCB2b2lk
KikKKworI2RlZmluZSBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9PVkVSTE9BRFNfRVhQ
QU5EXyguLi4pICAgICAgICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElT
UEFUQ0hfSU5TVEFOVElBVEVfKHN0cl9mb3JtYXRfaW50ZXJuYWw6OlZvaWRQdHIsICAgICBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1ZBX0FSR1NfXyk7
ICAgICAgICAgICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9J
TlNUQU5USUFURV8oYm9vbCwgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgIFwKKyAgQUJTTF9J
TlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGNoYXIsIF9fVkFfQVJHU19fKTsg
ICAgICAgICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJ
QVRFXyhzaWduZWQgY2hhciwgX19WQV9BUkdTX18pOyAgICAgICAgXAorICBBQlNMX0lOVEVSTkFM
X0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8odW5zaWduZWQgY2hhciwgX19WQV9BUkdTX18p
OyAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKHNo
b3J0LCBfX1ZBX0FSR1NfXyk7IC8qIE5PTElOVCAqLyBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFU
X0RJU1BBVENIX0lOU1RBTlRJQVRFXyh1bnNpZ25lZCBzaG9ydCwgICAgICAvKiBOT0xJTlQgKi8g
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19WQV9BUkdT
X18pOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFU
Q0hfSU5TVEFOVElBVEVfKGludCwgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgICBcCisgIEFC
U0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyh1bnNpZ25lZCBpbnQsIF9f
VkFfQVJHU19fKTsgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNU
QU5USUFURV8obG9uZywgX19WQV9BUkdTX18pOyAvKiBOT0xJTlQgKi8gIFwKKyAgQUJTTF9JTlRF
Uk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKHVuc2lnbmVkIGxvbmcsICAgICAgLyog
Tk9MSU5UICovICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZP
Uk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8obG9uZyBsb25nLCAvKiBOT0xJTlQgKi8gICAgICAg
ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkFf
QVJHU19fKTsgICAgICAgICAgICAgICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJ
U1BBVENIX0lOU1RBTlRJQVRFXyh1bnNpZ25lZCBsb25nIGxvbmcsIC8qIE5PTElOVCAqLyAgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19WQV9BUkdTX18p
OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hf
SU5TVEFOVElBVEVfKHVpbnQxMjgsIF9fVkFfQVJHU19fKTsgICAgICAgICAgICBcCisgIEFCU0xf
SU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyhmbG9hdCwgX19WQV9BUkdTX18p
OyAgICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5U
SUFURV8oZG91YmxlLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5B
TF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGxvbmcgZG91YmxlLCBfX1ZBX0FSR1NfXyk7
ICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyhj
b25zdCBjaGFyKiwgX19WQV9BUkdTX18pOyAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1B
VF9ESVNQQVRDSF9JTlNUQU5USUFURV8oc3RkOjpzdHJpbmcsIF9fVkFfQVJHU19fKTsgICAgICAg
ICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8oc3Ry
aW5nX3ZpZXcsIF9fVkFfQVJHU19fKQorCitBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9P
VkVSTE9BRFNfRVhQQU5EXyhleHRlcm4pOwogCi1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1h
dEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHN0cl9mb3JtYXRfaW50ZXJuYWw6OlZvaWRQdHI+OwotCi1l
eHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGJvb2w+Owot
ZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxjaGFyPjsK
LWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c2lnbmVk
IGNoYXI+OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJs
ZTx1bnNpZ25lZCBjaGFyPjsKLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6
VHlwZWRWVGFibGU8c2hvcnQ+OyAgICAgICAgICAgLy8gTk9MSU5UCi1leHRlcm4gdGVtcGxhdGUg
c3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVuc2lnbmVkIHNob3J0PjsgIC8vIE5P
TElOVAotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxp
bnQ+OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTx1
bnNpZ25lZD47Ci1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRh
YmxlPGxvbmc+OyAgICAgICAgICAgLy8gTk9MSU5UCi1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZv
cm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVuc2lnbmVkIGxvbmc+OyAgLy8gTk9MSU5UCi1leHRl
cm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGxvbmcgbG9uZz47
ICAgICAgLy8gTk9MSU5UCi1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5
cGVkVlRhYmxlPAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZz47ICAvLyBOT0xJTlQKLWV4dGVybiB0
ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8dWludDEyOD47Ci0KLWV4
dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8ZmxvYXQ+Owot
ZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxkb3VibGU+
OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxsb25n
IGRvdWJsZT47Ci0KLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRW
VGFibGU8Y29uc3QgY2hhcio+OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBs
OjpUeXBlZFZUYWJsZTxzdGQ6OnN0cmluZz47Ci1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1h
dEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHN0cmluZ192aWV3PjsKIH0gIC8vIG5hbWVzcGFjZSBzdHJf
Zm9ybWF0X2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmNjCmluZGV4IDMzZTg2NDE1NThhYjg2ZjNlODkyYWRkZWVj
ZDlhNmRlZjhiNDBhOTcuLmM0ZWRkZDE3ZGRiZTU2YTc2YzVlYzFhNTE4NDA3OWJmMTA3MTY2YmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmNjCkBAIC0xMDMsMTUg
KzEwMywxNSBAQCBjbGFzcyBDb252ZXJ0ZXJDb25zdW1lciB7CiB9OwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29udmVydGVyPgotYm9vbCBDb252ZXJ0QWxsKGNvbnN0IFVudHlwZWRGb3JtYXRTcGVj
SW1wbCYgZm9ybWF0LAotICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJn
SW1wbD4gYXJncywKLSAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJ0ZXImIGNvbnZlcnRlcikg
ewotICBjb25zdCBQYXJzZWRGb3JtYXRCYXNlKiBwYyA9IGZvcm1hdC5wYXJzZWRfY29udmVyc2lv
bigpOwotICBpZiAocGMpCi0gICAgcmV0dXJuIHBjLT5Qcm9jZXNzRm9ybWF0KENvbnZlcnRlckNv
bnN1bWVyPENvbnZlcnRlcj4oY29udmVydGVyLCBhcmdzKSk7Ci0KLSAgcmV0dXJuIFBhcnNlRm9y
bWF0U3RyaW5nKGZvcm1hdC5zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZl
cnRlckNvbnN1bWVyPENvbnZlcnRlcj4oY29udmVydGVyLCBhcmdzKSk7Citib29sIENvbnZlcnRB
bGwoY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKKyAgICAgICAgICAgICAgICBh
YnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MsIENvbnZlcnRlciBjb252ZXJ0ZXIp
IHsKKyAgaWYgKGZvcm1hdC5oYXNfcGFyc2VkX2NvbnZlcnNpb24oKSkgeworICAgIHJldHVybiBm
b3JtYXQucGFyc2VkX2NvbnZlcnNpb24oKS0+UHJvY2Vzc0Zvcm1hdCgKKyAgICAgICAgQ29udmVy
dGVyQ29uc3VtZXI8Q29udmVydGVyPihjb252ZXJ0ZXIsIGFyZ3MpKTsKKyAgfSBlbHNlIHsKKyAg
ICByZXR1cm4gUGFyc2VGb3JtYXRTdHJpbmcoZm9ybWF0LnN0cigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb252ZXJ0ZXJDb25zdW1lcjxDb252ZXJ0ZXI+KGNvbnZlcnRlciwgYXJn
cykpOworICB9CiB9CiAKIGNsYXNzIERlZmF1bHRDb252ZXJ0ZXIgewpAQCAtMTU4LDcgKzE1OCw3
IEBAIGJvb2wgQmluZFdpdGhQYWNrKGNvbnN0IFVuYm91bmRDb252ZXJzaW9uKiBwcm9wcywKICAg
cmV0dXJuIEFyZ0NvbnRleHQocGFjaykuQmluZChwcm9wcywgYm91bmQpOwogfQogCi1zdGQ6OnN0
cmluZyBTdW1tYXJpemUoY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsJiBmb3JtYXQsCitzdGQ6
OnN0cmluZyBTdW1tYXJpemUoY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7CiAg
IHR5cGVkZWYgU3VtbWFyaXppbmdDb252ZXJ0ZXIgQ29udmVydGVyOwogICBzdGQ6OnN0cmluZyBv
dXQ7CkBAIC0xNjcsMjMgKzE2NywxOCBAQCBzdGQ6OnN0cmluZyBTdW1tYXJpemUoY29uc3QgVW50
eXBlZEZvcm1hdFNwZWNJbXBsJiBmb3JtYXQsCiAgICAgLy8gZmx1c2guCiAgICAgRm9ybWF0U2lu
a0ltcGwgc2luaygmb3V0KTsKICAgICBpZiAoIUNvbnZlcnRBbGwoZm9ybWF0LCBhcmdzLCBDb252
ZXJ0ZXIoJnNpbmspKSkgewotICAgICAgc2luay5GbHVzaCgpOwotICAgICAgb3V0LmNsZWFyKCk7
CisgICAgICByZXR1cm4gIiI7CiAgICAgfQogICB9CiAgIHJldHVybiBvdXQ7CiB9CiAKIGJvb2wg
Rm9ybWF0VW50eXBlZChGb3JtYXRSYXdTaW5rSW1wbCByYXdfc2luaywKLSAgICAgICAgICAgICAg
ICAgICBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncykgewogICBGb3JtYXRTaW5r
SW1wbCBzaW5rKHJhd19zaW5rKTsKICAgdXNpbmcgQ29udmVydGVyID0gRGVmYXVsdENvbnZlcnRl
cjsKLSAgaWYgKCFDb252ZXJ0QWxsKGZvcm1hdCwgYXJncywgQ29udmVydGVyKCZzaW5rKSkpIHsK
LSAgICBzaW5rLkZsdXNoKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHJldHVybiB0cnVl
OworICByZXR1cm4gQ29udmVydEFsbChmb3JtYXQsIGFyZ3MsIENvbnZlcnRlcigmc2luaykpOwog
fQogCiBzdGQ6Om9zdHJlYW0mIFN0cmVhbWFibGU6OlByaW50KHN0ZDo6b3N0cmVhbSYgb3MpIGNv
bnN0IHsKQEAgLTE5MSwxNCArMTg2LDE2IEBAIHN0ZDo6b3N0cmVhbSYgU3RyZWFtYWJsZTo6UHJp
bnQoc3RkOjpvc3RyZWFtJiBvcykgY29uc3QgewogICByZXR1cm4gb3M7CiB9CiAKLXN0ZDo6c3Ry
aW5nJiBBcHBlbmRQYWNrKHN0ZDo6c3RyaW5nKiBvdXQsIGNvbnN0IFVudHlwZWRGb3JtYXRTcGVj
SW1wbCYgZm9ybWF0LAorc3RkOjpzdHJpbmcmIEFwcGVuZFBhY2soc3RkOjpzdHJpbmcqIG91dCwg
Y29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICBh
YnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpIHsKICAgc2l6ZV90IG9yaWcgPSBv
dXQtPnNpemUoKTsKLSAgaWYgKCFGb3JtYXRVbnR5cGVkKG91dCwgZm9ybWF0LCBhcmdzKSkgb3V0
LT5yZXNpemUob3JpZyk7CisgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoIUZvcm1hdFVudHlwZWQo
b3V0LCBmb3JtYXQsIGFyZ3MpKSkgeworICAgIG91dC0+ZXJhc2Uob3JpZyk7CisgIH0KICAgcmV0
dXJuICpvdXQ7CiB9CiAKLWludCBGcHJpbnRGKHN0ZDo6RklMRSogb3V0cHV0LCBjb25zdCBVbnR5
cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKK2ludCBGcHJpbnRGKHN0ZDo6RklMRSogb3V0cHV0
LCBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAgICAgICAgYWJzbDo6
U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7CiAgIEZJTEVSYXdTaW5rIHNpbmsob3V0
cHV0KTsKICAgaWYgKCFGb3JtYXRVbnR5cGVkKCZzaW5rLCBmb3JtYXQsIGFyZ3MpKSB7CkBAIC0y
MTYsNyArMjEzLDcgQEAgaW50IEZwcmludEYoc3RkOjpGSUxFKiBvdXRwdXQsIGNvbnN0IFVudHlw
ZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzaW5r
LmNvdW50KCkpOwogfQogCi1pbnQgU25wcmludEYoY2hhciogb3V0cHV0LCBzaXplX3Qgc2l6ZSwg
Y29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsJiBmb3JtYXQsCitpbnQgU25wcmludEYoY2hhciog
b3V0cHV0LCBzaXplX3Qgc2l6ZSwgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwK
ICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpIHsKICAg
QnVmZmVyUmF3U2luayBzaW5rKG91dHB1dCwgc2l6ZSA/IHNpemUgLSAxIDogMCk7CiAgIGlmICgh
Rm9ybWF0VW50eXBlZCgmc2luaywgZm9ybWF0LCBhcmdzKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvc3RyX2Zvcm1hdC9iaW5kLmgKaW5kZXggNDAwODYxMTIxMWNmZTYwNTNjNTFhZjA2NDhhMDUx
MzU0YmRmODFhMi4uMWI1MmRmOWM3ZjU2NTVmMWQ3OGRhZGM1MDgyNWM0ZDIzZTQyNjBmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2JpbmQuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5oCkBAIC0zMywxMyArMzMsMjEg
QEAgY2xhc3MgVW50eXBlZEZvcm1hdFNwZWNJbXBsIHsKICBwdWJsaWM6CiAgIFVudHlwZWRGb3Jt
YXRTcGVjSW1wbCgpID0gZGVsZXRlOwogCi0gIGV4cGxpY2l0IFVudHlwZWRGb3JtYXRTcGVjSW1w
bChzdHJpbmdfdmlldyBzKSA6IHN0cl8ocyksIHBjXygpIHt9CisgIGV4cGxpY2l0IFVudHlwZWRG
b3JtYXRTcGVjSW1wbChzdHJpbmdfdmlldyBzKQorICAgICAgOiBkYXRhXyhzLmRhdGEoKSksIHNp
emVfKHMuc2l6ZSgpKSB7fQogICBleHBsaWNpdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwoCiAgICAg
ICBjb25zdCBzdHJfZm9ybWF0X2ludGVybmFsOjpQYXJzZWRGb3JtYXRCYXNlKiBwYykKLSAgICAg
IDogcGNfKHBjKSB7fQotICBzdHJpbmdfdmlldyBzdHIoKSBjb25zdCB7IHJldHVybiBzdHJfOyB9
CisgICAgICA6IGRhdGFfKHBjKSwgc2l6ZV8ofnNpemVfdHt9KSB7fQorCisgIGJvb2wgaGFzX3Bh
cnNlZF9jb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc2l6ZV8gPT0gfnNpemVfdHt9OyB9CisK
KyAgc3RyaW5nX3ZpZXcgc3RyKCkgY29uc3QgeworICAgIGFzc2VydCghaGFzX3BhcnNlZF9jb252
ZXJzaW9uKCkpOworICAgIHJldHVybiBzdHJpbmdfdmlldyhzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YV8pLCBzaXplXyk7CisgIH0KICAgY29uc3Qgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6UGFy
c2VkRm9ybWF0QmFzZSogcGFyc2VkX2NvbnZlcnNpb24oKSBjb25zdCB7Ci0gICAgcmV0dXJuIHBj
XzsKKyAgICBhc3NlcnQoaGFzX3BhcnNlZF9jb252ZXJzaW9uKCkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBzdHJfZm9ybWF0X2ludGVybmFsOjpQYXJzZWRGb3JtYXRCYXNlKj4oZGF0
YV8pOwogICB9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC00OCw4ICs1Niw4IEBAIGNs
YXNzIFVudHlwZWRGb3JtYXRTcGVjSW1wbCB7CiAgIH0KIAogIHByaXZhdGU6Ci0gIHN0cmluZ192
aWV3IHN0cl87Ci0gIGNvbnN0IHN0cl9mb3JtYXRfaW50ZXJuYWw6OlBhcnNlZEZvcm1hdEJhc2Uq
IHBjXzsKKyAgY29uc3Qgdm9pZCogZGF0YV87CisgIHNpemVfdCBzaXplXzsKIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLj4KQEAgLTE0NCwzMSArMTUyLDMxIEBAIGNsYXNz
IFN0cmVhbWFibGUgewogfTsKIAogLy8gZm9yIHRlc3RpbmcKLXN0ZDo6c3RyaW5nIFN1bW1hcml6
ZShjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKK3N0ZDo6c3RyaW5nIFN1bW1h
cml6ZShVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAgICAgICAgICAgICBhYnNs
OjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpOwogYm9vbCBCaW5kV2l0aFBhY2soY29u
c3QgVW5ib3VuZENvbnZlcnNpb24qIHByb3BzLAogICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bh
bjxjb25zdCBGb3JtYXRBcmdJbXBsPiBwYWNrLCBCb3VuZENvbnZlcnNpb24qIGJvdW5kKTsKIAog
Ym9vbCBGb3JtYXRVbnR5cGVkKEZvcm1hdFJhd1NpbmtJbXBsIHJhd19zaW5rLAotICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgIFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKTsKIAotc3RkOjpzdHJpbmcm
IEFwcGVuZFBhY2soc3RkOjpzdHJpbmcqIG91dCwgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBs
JiBmb3JtYXQsCitzdGQ6OnN0cmluZyYgQXBwZW5kUGFjayhzdGQ6OnN0cmluZyogb3V0LCBVbnR5
cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48
Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncyk7CiAKLWlubGluZSBzdGQ6OnN0cmluZyBGb3JtYXRQ
YWNrKGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAoraW5saW5lIHN0ZDo6c3Ry
aW5nIEZvcm1hdFBhY2soY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3Mp
IHsKICAgc3RkOjpzdHJpbmcgb3V0OwogICBBcHBlbmRQYWNrKCZvdXQsIGZvcm1hdCwgYXJncyk7
CiAgIHJldHVybiBvdXQ7CiB9CiAKLWludCBGcHJpbnRGKHN0ZDo6RklMRSogb3V0cHV0LCBjb25z
dCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKK2ludCBGcHJpbnRGKHN0ZDo6RklMRSog
b3V0cHV0LCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAgICAgICAgYWJzbDo6
U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKTsKLWludCBTbnByaW50RihjaGFyKiBvdXRw
dXQsIHNpemVfdCBzaXplLCBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKK2lu
dCBTbnByaW50RihjaGFyKiBvdXRwdXQsIHNpemVfdCBzaXplLCBVbnR5cGVkRm9ybWF0U3BlY0lt
cGwgZm9ybWF0LAogICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4g
YXJncyk7CiAKLS8vIFJldHVybmVkIGJ5IFN0cmVhbWVkKHYpLiBDb252ZXJ0cyB2aWEgJyVzJyB0
byB0aGUgc3RkOjpzdHJpbmcgY3JlYXRlZAorLy8gUmV0dXJuZWQgYnkgU3RyZWFtZWQodikuIENv
bnZlcnRzIHZpYSAnJXMnIHRvIHRoZSBzdHJpbmcgY3JlYXRlZAogLy8gYnkgc3RkOjpvc3RyZWFt
IDw8IHYuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIFN0cmVhbWVkV3JhcHBlciB7CkBA
IC0xNzgsNyArMTg2LDcgQEAgY2xhc3MgU3RyZWFtZWRXcmFwcGVyIHsKICBwcml2YXRlOgogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgUz4KICAgZnJpZW5kIENvbnZlcnRSZXN1bHQ8Q29udjo6cz4gRm9y
bWF0Q29udmVydEltcGwoY29uc3QgU3RyZWFtZWRXcmFwcGVyPFM+JiB2LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3Bl
YyYgY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIG91dCk7CiAgIGNvbnN0IFQmIHZfOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNp
b24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRlbnNpb24uaAppbmRl
eCA4MTAzMzBiOWQ3MWJkMTg4YzI2ZWFlMjE1YWJkNjFkNDhlZDRiZDc4Li4xMWI5OTZhZWZkMzdk
MTU3YTNmMDhkYWE1YTIyZGMwMWMwYTJkMDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2lu
dGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9zdHJfZm9ybWF0L2V4dGVuc2lvbi5oCkBAIC0xOCw2ICsxOCw3IEBACiAjZGVmaW5lIEFCU0xf
U1RSSU5HU19JTlRFUk5BTF9TVFJfRk9STUFUX0VYVEVOU0lPTl9IXwogCiAjaW5jbHVkZSA8bGlt
aXRzLmg+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUg
PG9zdHJlYW0+CiAKQEAgLTU3LDcgKzU4LDcgQEAgY2xhc3MgRm9ybWF0UmF3U2lua0ltcGwgewog
ICB2b2lkICgqd3JpdGVfKSh2b2lkKiwgc3RyaW5nX3ZpZXcpOwogfTsKIAotLy8gQW4gYWJzdHJh
Y3Rpb24gdG8gd2hpY2ggY29udmVyc2lvbnMgd3JpdGUgdGhlaXIgc3RkOjpzdHJpbmcgZGF0YS4K
Ky8vIEFuIGFic3RyYWN0aW9uIHRvIHdoaWNoIGNvbnZlcnNpb25zIHdyaXRlIHRoZWlyIHN0cmlu
ZyBkYXRhLgogY2xhc3MgRm9ybWF0U2lua0ltcGwgewogIHB1YmxpYzoKICAgZXhwbGljaXQgRm9y
bWF0U2lua0ltcGwoRm9ybWF0UmF3U2lua0ltcGwgcmF3KSA6IHJhd18ocmF3KSB7fQpAQCAtMzA3
LDcgKzMwOCwxMiBAQCBjbGFzcyBDb252ZXJzaW9uU3BlYyB7CiAgcHVibGljOgogICBGbGFncyBm
bGFncygpIGNvbnN0IHsgcmV0dXJuIGZsYWdzXzsgfQogICBMZW5ndGhNb2QgbGVuZ3RoX21vZCgp
IGNvbnN0IHsgcmV0dXJuIGxlbmd0aF9tb2RfOyB9Ci0gIENvbnZlcnNpb25DaGFyIGNvbnYoKSBj
b25zdCB7IHJldHVybiBjb252XzsgfQorICBDb252ZXJzaW9uQ2hhciBjb252KCkgY29uc3Qgewor
ICAgIC8vIEtlZXAgdGhpcyBmaWVsZCBmaXJzdCBpbiB0aGUgc3RydWN0IC4gSXQgZ2VuZXJhdGVz
IGJldHRlciBjb2RlIHdoZW4KKyAgICAvLyBhY2Nlc3NpbmcgaXQgd2hlbiBDb252ZXJzaW9uU3Bl
YyBpcyBwYXNzZWQgYnkgdmFsdWUgaW4gcmVnaXN0ZXJzLgorICAgIHN0YXRpY19hc3NlcnQob2Zm
c2V0b2YoQ29udmVyc2lvblNwZWMsIGNvbnZfKSA9PSAwLCAiIik7CisgICAgcmV0dXJuIGNvbnZf
OworICB9CiAKICAgLy8gUmV0dXJucyB0aGUgc3BlY2lmaWVkIHdpZHRoLiBJZiB3aWR0aCBpcyB1
bnNwZWNmaWVkLCBpdCByZXR1cm5zIGEgbmVnYXRpdmUKICAgLy8gdmFsdWUuCkBAIC0zMjQsOSAr
MzMwLDkgQEAgY2xhc3MgQ29udmVyc2lvblNwZWMgewogICB2b2lkIHNldF9sZWZ0KGJvb2wgYikg
eyBmbGFnc18ubGVmdCA9IGI7IH0KIAogIHByaXZhdGU6CisgIENvbnZlcnNpb25DaGFyIGNvbnZf
OwogICBGbGFncyBmbGFnc187CiAgIExlbmd0aE1vZCBsZW5ndGhfbW9kXzsKLSAgQ29udmVyc2lv
bkNoYXIgY29udl87CiAgIGludCB3aWR0aF87CiAgIGludCBwcmVjaXNpb25fOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuaAppbmRleCAzYjBhYTVlNzE1N2Vj
YmRhZjhmMjQzZTQ0YTEzYTc1MTYzOGI1NzVkLi4xMmVjZDk5ZTY4MGQxZWJkNjc5ZDNjODgyZjdm
MjZmM2U5ZmI2ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3Jt
YXQvb3V0cHV0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L291dHB1
dC5oCkBAIC02OSwxMCArNjksMTAgQEAgY2xhc3MgRklMRVJhd1NpbmsgewogCiAvLyBQcm92aWRl
IFJhd1NpbmsgaW50ZWdyYXRpb24gd2l0aCBjb21tb24gdHlwZXMgZnJvbSB0aGUgU1RMLgogaW5s
aW5lIHZvaWQgQWJzbEZvcm1hdEZsdXNoKHN0ZDo6c3RyaW5nKiBvdXQsIHN0cmluZ192aWV3IHMp
IHsKLSAgb3V0LT5hcHBlbmQocy5iZWdpbigpLCBzLnNpemUoKSk7CisgIG91dC0+YXBwZW5kKHMu
ZGF0YSgpLCBzLnNpemUoKSk7CiB9CiBpbmxpbmUgdm9pZCBBYnNsRm9ybWF0Rmx1c2goc3RkOjpv
c3RyZWFtKiBvdXQsIHN0cmluZ192aWV3IHMpIHsKLSAgb3V0LT53cml0ZShzLmJlZ2luKCksIHMu
c2l6ZSgpKTsKKyAgb3V0LT53cml0ZShzLmRhdGEoKSwgcy5zaXplKCkpOwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgQWJzbENvcmQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5jYwppbmRleCAxMDExNGY0
ODljMDE4OWYwNTg2MTQ5Njg1Mzc4ZTEzYThkZjk0Njg0Li41ZTNkMGQwNTQ3ZDFkYmFkNDdiM2E1
MDNiNjg1MDc2Mzc0MzczMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0
cl9mb3JtYXQvcGFyc2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1h
dC9wYXJzZXIuY2MKQEAgLTgxLDE5ICs4MSwyNyBAQCBzdGF0aWMgY29uc3RleHByIHN0ZDo6aW50
OF90IGtJZHNbXSA9IHsKIHRlbXBsYXRlIDxib29sIGlzX3Bvc2l0aW9uYWw+CiBib29sIENvbnN1
bWVDb252ZXJzaW9uKHN0cmluZ192aWV3ICpzcmMsIFVuYm91bmRDb252ZXJzaW9uICpjb252LAog
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm5leHRfYXJnKSB7Ci0gIGNvbnN0IGNoYXIgKnBv
cyA9IHNyYy0+YmVnaW4oKTsKLSAgY29uc3QgY2hhciAqY29uc3QgZW5kID0gc3JjLT5lbmQoKTsK
KyAgY29uc3QgY2hhciAqcG9zID0gc3JjLT5kYXRhKCk7CisgIGNvbnN0IGNoYXIgKmNvbnN0IGVu
ZCA9IHBvcyArIHNyYy0+c2l6ZSgpOwogICBjaGFyIGM7Ci0gIC8vIFJlYWQgdGhlIG5leHQgY2hh
ciBpbnRvIGBjYCBhbmQgdXBkYXRlIGBwb3NgLiBSZWFkcyAnXDAnIGlmIGF0IGVuZC4KLSAgY29u
c3QgYXV0byBnZXRfY2hhciA9IFsmXSB7IGMgPSBwb3MgPT0gZW5kID8gJ1wwJyA6ICpwb3MrKzsg
fTsKKyAgLy8gUmVhZCB0aGUgbmV4dCBjaGFyIGludG8gYGNgIGFuZCB1cGRhdGUgYHBvc2AuIFJl
dHVybnMgZmFsc2UgaWYgdGhlcmUgYXJlCisgIC8vIG5vIG1vcmUgY2hhcnMgdG8gcmVhZC4KKyNk
ZWZpbmUgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFSKCkgICAgICAgIFwKKyAg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHBvcyA9PSBlbmQpKSByZXR1cm4gZmFsc2U7IFwKKyAg
ICBjID0gKnBvcysrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
fSB3aGlsZSAoMCkKIAogICBjb25zdCBhdXRvIHBhcnNlX2RpZ2l0cyA9IFsmXSB7CiAgICAgaW50
IGRpZ2l0cyA9IGMgLSAnMCc7Ci0gICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gb3ZlcmZsb3cgYGRp
Z2l0c2Agc28gd2UgY29uc3VtZSBhdCBtb3N0IGRpZ2l0czEwLTEKKyAgICAvLyBXZSBkbyBub3Qg
d2FudCB0byBvdmVyZmxvdyBgZGlnaXRzYCBzbyB3ZSBjb25zdW1lIGF0IG1vc3QgZGlnaXRzMTAK
ICAgICAvLyBkaWdpdHMuIElmIHRoZXJlIGFyZSBtb3JlIGRpZ2l0cyB0aGUgcGFyc2luZyB3aWxs
IGZhaWwgbGF0ZXIgb24gd2hlbiB0aGUKICAgICAvLyBkaWdpdCBkb2Vzbid0IG1hdGNoIHRoZSBl
eHBlY3RlZCBjaGFyYWN0ZXJzLgotICAgIGludCBudW1fZGlnaXRzID0gc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ+OjpkaWdpdHMxMCAtIDI7Ci0gICAgZm9yIChnZXRfY2hhcigpOyBudW1fZGlnaXRz
ICYmIHN0ZDo6aXNkaWdpdChjKTsgZ2V0X2NoYXIoKSkgeworICAgIGludCBudW1fZGlnaXRzID0g
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjpkaWdpdHMxMDsKKyAgICBmb3IgKDs7KSB7CisgICAg
ICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHBvcyA9PSBlbmQgfHwgIW51bV9kaWdpdHMpKSBicmVh
azsKKyAgICAgIGMgPSAqcG9zKys7CisgICAgICBpZiAoIXN0ZDo6aXNkaWdpdChjKSkgYnJlYWs7
CiAgICAgICAtLW51bV9kaWdpdHM7CiAgICAgICBkaWdpdHMgPSAxMCAqIGRpZ2l0cyArIGMgLSAn
MCc7CiAgICAgfQpAQCAtMTAxLDE0ICsxMDksMTQgQEAgYm9vbCBDb25zdW1lQ29udmVyc2lvbihz
dHJpbmdfdmlldyAqc3JjLCBVbmJvdW5kQ29udmVyc2lvbiAqY29udiwKICAgfTsKIAogICBpZiAo
aXNfcG9zaXRpb25hbCkgewotICAgIGdldF9jaGFyKCk7Ci0gICAgaWYgKGMgPCAnMScgfHwgYyA+
ICc5JykgcmV0dXJuIGZhbHNlOworICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRf
Q0hBUigpOworICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoYyA8ICcxJyB8fCBjID4gJzknKSkg
cmV0dXJuIGZhbHNlOwogICAgIGNvbnYtPmFyZ19wb3NpdGlvbiA9IHBhcnNlX2RpZ2l0cygpOwog
ICAgIGFzc2VydChjb252LT5hcmdfcG9zaXRpb24gPiAwKTsKLSAgICBpZiAoYyAhPSAnJCcpIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGMgIT0gJyQnKSkgcmV0dXJu
IGZhbHNlOwogICB9CiAKLSAgZ2V0X2NoYXIoKTsKKyAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVS
TkFMX0dFVF9DSEFSKCk7CiAKICAgLy8gV2Ugc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGJhc2ljIGZs
YWcgb24uCiAgIGFzc2VydChjb252LT5mbGFncy5iYXNpYyk7CkBAIC0xMTksMzIgKzEyNywzOSBA
QCBib29sIENvbnN1bWVDb252ZXJzaW9uKHN0cmluZ192aWV3ICpzcmMsIFVuYm91bmRDb252ZXJz
aW9uICpjb252LAogICBpZiAoYyA8ICdBJykgewogICAgIGNvbnYtPmZsYWdzLmJhc2ljID0gZmFs
c2U7CiAKLSAgICBmb3IgKDsgYyA8PSAnMCc7IGdldF9jaGFyKCkpIHsKKyAgICBmb3IgKDsgYyA8
PSAnMCc7KSB7CisgICAgICAvLyBGSVhNRTogV2UgbWlnaHQgYmUgYWJsZSB0byBzcGVlZCB0aGlz
IHVwIHJldXNpbmcgdGhlIGtJZHMgbG9va3VwIHRhYmxlCisgICAgICAvLyBmcm9tIGFib3ZlLgor
ICAgICAgLy8gSXQgbWlnaHQgcmVxdWlyZSBjaGFuZ2luZyBGbGFncyB0byBiZSBhIHBsYWluIGlu
dGVnZXIgd2hlcmUgd2UgY2FuIHw9IGEKKyAgICAgIC8vIHZhbHVlLgogICAgICAgc3dpdGNoIChj
KSB7CiAgICAgICAgIGNhc2UgJy0nOgogICAgICAgICAgIGNvbnYtPmZsYWdzLmxlZnQgPSB0cnVl
OwotICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICcr
JzoKICAgICAgICAgICBjb252LT5mbGFncy5zaG93X3BvcyA9IHRydWU7Ci0gICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJyAnOgogICAgICAgICAgIGNv
bnYtPmZsYWdzLnNpZ25fY29sID0gdHJ1ZTsKLSAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSAnIyc6CiAgICAgICAgICAgY29udi0+ZmxhZ3MuYWx0ID0g
dHJ1ZTsKLSAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSAnMCc6CiAgICAgICAgICAgY29udi0+ZmxhZ3MuemVybyA9IHRydWU7Ci0gICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgZ290
byBmbGFnc19kb25lOwogICAgICAgfQotICAgICAgYnJlYWs7CisgICAgICBBQlNMX0ZPUk1BVF9Q
QVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICB9CitmbGFnc19kb25lOgogCiAgICAgaWYg
KGMgPD0gJzknKSB7CiAgICAgICBpZiAoYyA+PSAnMCcpIHsKICAgICAgICAgaW50IG1heWJlX3dp
ZHRoID0gcGFyc2VfZGlnaXRzKCk7CiAgICAgICAgIGlmICghaXNfcG9zaXRpb25hbCAmJiBjID09
ICckJykgewotICAgICAgICAgIGlmICgqbmV4dF9hcmcgIT0gMCkgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoKm5leHRfYXJnICE9IDApKSByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgLy8gUG9zaXRpb25hbCBjb252ZXJzaW9uLgogICAgICAgICAgICpuZXh0
X2FyZyA9IC0xOwogICAgICAgICAgIGNvbnYtPmZsYWdzID0gRmxhZ3MoKTsKQEAgLTE1MywxMiAr
MTY4LDEyIEBAIGJvb2wgQ29uc3VtZUNvbnZlcnNpb24oc3RyaW5nX3ZpZXcgKnNyYywgVW5ib3Vu
ZENvbnZlcnNpb24gKmNvbnYsCiAgICAgICAgIH0KICAgICAgICAgY29udi0+d2lkdGguc2V0X3Zh
bHVlKG1heWJlX3dpZHRoKTsKICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnKicpIHsKLSAgICAgICAg
Z2V0X2NoYXIoKTsKKyAgICAgICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFS
KCk7CiAgICAgICAgIGlmIChpc19wb3NpdGlvbmFsKSB7Ci0gICAgICAgICAgaWYgKGMgPCAnMScg
fHwgYyA+ICc5JykgcmV0dXJuIGZhbHNlOworICAgICAgICAgIGlmIChBQlNMX1BSRURJQ1RfRkFM
U0UoYyA8ICcxJyB8fCBjID4gJzknKSkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgIGNvbnYtPndp
ZHRoLnNldF9mcm9tX2FyZyhwYXJzZV9kaWdpdHMoKSk7Ci0gICAgICAgICAgaWYgKGMgIT0gJyQn
KSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZ2V0X2NoYXIoKTsKKyAgICAgICAgICBpZiAoQUJT
TF9QUkVESUNUX0ZBTFNFKGMgIT0gJyQnKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgIEFCU0xf
Rk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgIGNvbnYtPndpZHRoLnNldF9mcm9tX2FyZygrKypuZXh0X2FyZyk7CiAgICAgICAgIH0K
QEAgLTE2NiwxNiArMTgxLDE2IEBAIGJvb2wgQ29uc3VtZUNvbnZlcnNpb24oc3RyaW5nX3ZpZXcg
KnNyYywgVW5ib3VuZENvbnZlcnNpb24gKmNvbnYsCiAgICAgfQogCiAgICAgaWYgKGMgPT0gJy4n
KSB7Ci0gICAgICBnZXRfY2hhcigpOworICAgICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFM
X0dFVF9DSEFSKCk7CiAgICAgICBpZiAoc3RkOjppc2RpZ2l0KGMpKSB7CiAgICAgICAgIGNvbnYt
PnByZWNpc2lvbi5zZXRfdmFsdWUocGFyc2VfZGlnaXRzKCkpOwogICAgICAgfSBlbHNlIGlmIChj
ID09ICcqJykgewotICAgICAgICBnZXRfY2hhcigpOworICAgICAgICBBQlNMX0ZPUk1BVF9QQVJT
RVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICAgICAgaWYgKGlzX3Bvc2l0aW9uYWwpIHsKLSAg
ICAgICAgICBpZiAoYyA8ICcxJyB8fCBjID4gJzknKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
aWYgKEFCU0xfUFJFRElDVF9GQUxTRShjIDwgJzEnIHx8IGMgPiAnOScpKSByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgY29udi0+cHJlY2lzaW9uLnNldF9mcm9tX2FyZyhwYXJzZV9kaWdpdHMoKSk7
CiAgICAgICAgICAgaWYgKGMgIT0gJyQnKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZ2V0X2No
YXIoKTsKKyAgICAgICAgICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICBjb252LT5wcmVjaXNpb24uc2V0X2Zyb21fYXJn
KCsrKm5leHRfYXJnKTsKICAgICAgICAgfQpAQCAtMTg4LDIzICsyMDMsMjMgQEAgYm9vbCBDb25z
dW1lQ29udmVyc2lvbihzdHJpbmdfdmlldyAqc3JjLCBVbmJvdW5kQ29udmVyc2lvbiAqY29udiwK
ICAgc3RkOjppbnQ4X3QgaWQgPSBrSWRzW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXTsK
IAogICBpZiAoaWQgPCAwKSB7Ci0gICAgaWYgKGlkID09IG5vbmUpIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGlkID09IG5vbmUpKSByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBJdCBpcyBhIGxlbmd0aCBtb2RpZmllci4KICAgICB1c2luZyBzdHJfZm9ybWF0X2ludGVy
bmFsOjpMZW5ndGhNb2Q7CiAgICAgTGVuZ3RoTW9kIGxlbmd0aF9tb2QgPSBMZW5ndGhNb2Q6OkZy
b21JZChzdGF0aWNfY2FzdDxMTT4ofmlkKSk7Ci0gICAgZ2V0X2NoYXIoKTsKKyAgICBBQlNMX0ZP
Uk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICBpZiAoYyA9PSAnaCcgJiYgbGVu
Z3RoX21vZC5pZCgpID09IExlbmd0aE1vZDo6aCkgewogICAgICAgY29udi0+bGVuZ3RoX21vZCA9
IExlbmd0aE1vZDo6RnJvbUlkKExlbmd0aE1vZDo6aGgpOwotICAgICAgZ2V0X2NoYXIoKTsKKyAg
ICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwogICAgIH0gZWxzZSBp
ZiAoYyA9PSAnbCcgJiYgbGVuZ3RoX21vZC5pZCgpID09IExlbmd0aE1vZDo6bCkgewogICAgICAg
Y29udi0+bGVuZ3RoX21vZCA9IExlbmd0aE1vZDo6RnJvbUlkKExlbmd0aE1vZDo6bGwpOwotICAg
ICAgZ2V0X2NoYXIoKTsKKyAgICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hB
UigpOwogICAgIH0gZWxzZSB7CiAgICAgICBjb252LT5sZW5ndGhfbW9kID0gbGVuZ3RoX21vZDsK
ICAgICB9CiAgICAgaWQgPSBrSWRzW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXTsKLSAg
ICBpZiAoaWQgPCAwKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShp
ZCA8IDApKSByZXR1cm4gZmFsc2U7CiAgIH0KIAogICBhc3NlcnQoQ2hlY2tGYXN0UGF0aFNldHRp
bmcoKmNvbnYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1h
dC9wYXJzZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIuaApp
bmRleCA1YmViYzk1NTQwZTZjMjhkMzlkMDg0NzMwNTM2Njc0MmNlZDllZGZhLi4xMDIyZjA2Mjk3
YTc0YTU4NGU4MmU0MWNhNGI4MjRmYmJmNjMzOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9zdHJfZm9ybWF0L3BhcnNlci5oCkBAIC03NSwxNCArNzUsMTQgQEAgc3RydWN0IFVuYm91bmRD
b252ZXJzaW9uIHsKIGJvb2wgQ29uc3VtZVVuYm91bmRDb252ZXJzaW9uKHN0cmluZ192aWV3KiBz
cmMsIFVuYm91bmRDb252ZXJzaW9uKiBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50KiBuZXh0X2FyZyk7CiAKLS8vIFBhcnNlIHRoZSBmb3JtYXQgc3RkOjpzdHJpbmcgcHJv
dmlkZWQgaW4gJ3NyYycgYW5kIHBhc3MgdGhlIGlkZW50aWZpZWQgaXRlbXMgaW50bworLy8gUGFy
c2UgdGhlIGZvcm1hdCBzdHJpbmcgcHJvdmlkZWQgaW4gJ3NyYycgYW5kIHBhc3MgdGhlIGlkZW50
aWZpZWQgaXRlbXMgaW50bwogLy8gJ2NvbnN1bWVyJy4KIC8vIFRleHQgcnVucyB3aWxsIGJlIHBh
c3NlZCBieSBjYWxsaW5nCiAvLyAgIENvbnN1bWVyOjpBcHBlbmQoc3RyaW5nX3ZpZXcpOwogLy8g
Q29udmVyc2lvbkl0ZW1zIHdpbGwgYmUgcGFzc2VkIGJ5IGNhbGxpbmcKIC8vICAgQ29uc3VtZXI6
OkNvbnZlcnRPbmUoVW5ib3VuZENvbnZlcnNpb24sIHN0cmluZ192aWV3KTsKIC8vIEluIHRoZSBj
YXNlIG9mIENvbnZlcnRPbmUsIHRoZSBzdHJpbmdfdmlldyB0aGF0IGlzIHBhc3NlZCBpcyB0aGUK
LS8vIHBvcnRpb24gb2YgdGhlIGZvcm1hdCBzdGQ6OnN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRo
ZSBjb252ZXJzaW9uLCBub3QgaW5jbHVkaW5nCisvLyBwb3J0aW9uIG9mIHRoZSBmb3JtYXQgc3Ry
aW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnZlcnNpb24sIG5vdCBpbmNsdWRpbmcKIC8vIHRo
ZSBsZWFkaW5nICUuIE9uIHN1Y2Nlc3MsIGl0IHJldHVybnMgdHJ1ZS4gT24gZmFpbHVyZSwgaXQg
c3RvcHMgYW5kIHJldHVybnMKIC8vIGZhbHNlLgogdGVtcGxhdGUgPHR5cGVuYW1lIENvbnN1bWVy
PgpAQCAtOTAsNyArOTAsNyBAQCBib29sIFBhcnNlRm9ybWF0U3RyaW5nKHN0cmluZ192aWV3IHNy
YywgQ29uc3VtZXIgY29uc3VtZXIpIHsKICAgaW50IG5leHRfYXJnID0gMDsKICAgd2hpbGUgKCFz
cmMuZW1wdHkoKSkgewogICAgIGNvbnN0IGNoYXIqIHBlcmNlbnQgPQotICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4obWVtY2hyKHNyYy5iZWdpbigpLCAnJScsIHNyYy5zaXplKCkpKTsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbWNocihzcmMuZGF0YSgpLCAnJScs
IHNyYy5zaXplKCkpKTsKICAgICBpZiAoIXBlcmNlbnQpIHsKICAgICAgIC8vIFdlIGZvdW5kIHRo
ZSBsYXN0IHN1YnN0cmluZy4KICAgICAgIHJldHVybiBjb25zdW1lci5BcHBlbmQoc3JjKTsKQEAg
LTk4LDcgKzk4LDcgQEAgYm9vbCBQYXJzZUZvcm1hdFN0cmluZyhzdHJpbmdfdmlldyBzcmMsIENv
bnN1bWVyIGNvbnN1bWVyKSB7CiAgICAgLy8gV2UgZm91bmQgYSBwZXJjZW50LCBzbyBwdXNoIHRo
ZSB0ZXh0IHJ1biB0aGVuIHByb2Nlc3MgdGhlIHBlcmNlbnQuCiAgICAgc2l6ZV90IHBlcmNlbnRf
bG9jID0gcGVyY2VudCAtIHNyYy5kYXRhKCk7CiAgICAgaWYgKCFjb25zdW1lci5BcHBlbmQoc3Ry
aW5nX3ZpZXcoc3JjLmRhdGEoKSwgcGVyY2VudF9sb2MpKSkgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChwZXJjZW50ICsgMSA+PSBzcmMuZW5kKCkpIHJldHVybiBmYWxzZTsKKyAgICBpZiAocGVyY2Vu
dCArIDEgPj0gc3JjLmRhdGEoKSArIHNyYy5zaXplKCkpIHJldHVybiBmYWxzZTsKIAogICAgIFVu
Ym91bmRDb252ZXJzaW9uIGNvbnY7CiAKQEAgLTE3OCw3ICsxNzgsOCBAQCBjbGFzcyBQYXJzZWRG
b3JtYXRCYXNlIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBiYXNlID0gZGF0YV8uZ2V0KCk7CiAg
ICAgc3RyaW5nX3ZpZXcgdGV4dChiYXNlLCAwKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0g
OiBpdGVtc18pIHsKLSAgICAgIHRleHQgPSBzdHJpbmdfdmlldyh0ZXh0LmVuZCgpLCAoYmFzZSAr
IGl0ZW0udGV4dF9lbmQpIC0gdGV4dC5lbmQoKSk7CisgICAgICBjb25zdCBjaGFyKiBjb25zdCBl
bmQgPSB0ZXh0LmRhdGEoKSArIHRleHQuc2l6ZSgpOworICAgICAgdGV4dCA9IHN0cmluZ192aWV3
KGVuZCwgKGJhc2UgKyBpdGVtLnRleHRfZW5kKSAtIGVuZCk7CiAgICAgICBpZiAoaXRlbS5pc19j
b252ZXJzaW9uKSB7CiAgICAgICAgIGlmICghY29uc3VtZXIuQ29udmVydE9uZShpdGVtLmNvbnYs
IHRleHQpKSByZXR1cm4gZmFsc2U7CiAgICAgICB9IGVsc2UgewpAQCAtMjM3LDcgKzIzOCw3IEBA
IGNsYXNzIFBhcnNlZEZvcm1hdEJhc2UgewogLy8gVGhpcyBjbGFzcyBhbHNvIHN1cHBvcnRzIHJ1
bnRpbWUgZm9ybWF0IGNoZWNraW5nIHdpdGggdGhlIDo6TmV3KCkgYW5kCiAvLyA6Ok5ld0FsbG93
SWdub3JlZCgpIGZhY3RvcnkgZnVuY3Rpb25zLgogLy8gVGhpcyBpcyB0aGUgb25seSBBUEkgdGhh
dCBhbGxvd3MgdGhlIHVzZXIgdG8gcGFzcyBhIHJ1bnRpbWUgc3BlY2lmaWVkIGZvcm1hdAotLy8g
c3RkOjpzdHJpbmcuIFRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zIHdpbGwgcmV0dXJuIE5VTEwgaWYg
dGhlIGZvcm1hdCBkb2VzIG5vdCBtYXRjaAorLy8gc3RyaW5nLiBUaGVzZSBmYWN0b3J5IGZ1bmN0
aW9ucyB3aWxsIHJldHVybiBOVUxMIGlmIHRoZSBmb3JtYXQgZG9lcyBub3QgbWF0Y2gKIC8vIHRo
ZSBjb252ZXJzaW9ucyByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuCiB0ZW1wbGF0ZSA8c3RyX2Zvcm1h
dF9pbnRlcm5hbDo6Q29udi4uLiBDPgogY2xhc3MgRXh0ZW5kZWRQYXJzZWRGb3JtYXQgOiBwdWJs
aWMgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6UGFyc2VkRm9ybWF0QmFzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyX3Rlc3QuY2MKaW5kZXggZTY5ODAyMGIx
YWJhMzg0NTJjN2I4ODk5ZmQzZWQyNzY5YjBjM2U1MS4uYWU0MDIwMzE5MWI5N2Y5YzNjNGYwYzRi
ZTI4MWEyMjkyMWRiNmU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJf
Zm9ybWF0L3BhcnNlcl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zv
cm1hdC9wYXJzZXJfdGVzdC5jYwpAQCAtNjYsMTAgKzY2LDEwIEBAIGNsYXNzIENvbnN1bWVVbmJv
dW5kQ29udmVyc2lvblRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgdHlwZWRlZiBV
bmJvdW5kQ29udmVyc2lvbiBQcm9wczsKICAgc3RyaW5nX3ZpZXcgQ29uc3VtZShzdHJpbmdfdmll
dyogc3JjKSB7CiAgICAgaW50IG5leHQgPSAwOwotICAgIGNvbnN0IGNoYXIqIHByZXZfYmVnaW4g
PSBzcmMtPmJlZ2luKCk7CisgICAgY29uc3QgY2hhciogcHJldl9iZWdpbiA9IHNyYy0+ZGF0YSgp
OwogICAgIG8gPSBVbmJvdW5kQ29udmVyc2lvbigpOyAgLy8gcmVmcmVzaAogICAgIENvbnN1bWVV
bmJvdW5kQ29udmVyc2lvbihzcmMsICZvLCAmbmV4dCk7Ci0gICAgcmV0dXJuIHtwcmV2X2JlZ2lu
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyYy0+YmVnaW4oKSAtIHByZXZfYmVnaW4pfTsKKyAgICBy
ZXR1cm4ge3ByZXZfYmVnaW4sIHN0YXRpY19jYXN0PHNpemVfdD4oc3JjLT5kYXRhKCkgLSBwcmV2
X2JlZ2luKX07CiAgIH0KIAogICBib29sIFJ1bihjb25zdCBjaGFyICpmbXQsIGJvb2wgZm9yY2Vf
cG9zaXRpb25hbCA9IGZhbHNlKSB7CkBAIC04NCw5ICs4NCw5IEBAIGNsYXNzIENvbnN1bWVVbmJv
dW5kQ29udmVyc2lvblRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIFRFU1RfRihDb25z
dW1lVW5ib3VuZENvbnZlcnNpb25UZXN0LCBDb25zdW1lU3BlY2lmaWNhdGlvbikgewogICBzdHJ1
Y3QgRXhwZWN0YXRpb24gewogICAgIGludCBsaW5lOwotICAgIGNvbnN0IGNoYXIgKnNyYzsKLSAg
ICBjb25zdCBjaGFyICpvdXQ7Ci0gICAgY29uc3QgY2hhciAqc3JjX3Bvc3Q7CisgICAgc3RyaW5n
X3ZpZXcgc3JjOworICAgIHN0cmluZ192aWV3IG91dDsKKyAgICBzdHJpbmdfdmlldyBzcmNfcG9z
dDsKICAgfTsKICAgY29uc3QgRXhwZWN0YXRpb24ga0V4cGVjdFtdID0gewogICAgIHtfX0xJTkVf
XywgIiIsICAgICAiIiwgICAgICIiICB9LApAQCAtMjM2LDYgKzIzNiwxNiBAQCBURVNUX0YoQ29u
c3VtZVVuYm91bmRDb252ZXJzaW9uVGVzdCwgV2lkdGhBbmRQcmVjaXNpb24pIHsKICAgRVhQRUNU
X0VRKDksIG8ucHJlY2lzaW9uLmdldF9mcm9tX2FyZygpKTsKIAogICBFWFBFQ1RfRkFMU0UoUnVu
KCIuKjAkZCIpKSA8PCAibm8gYXJnIDAiOworCisgIC8vIExhcmdlIHZhbHVlcworICBFWFBFQ1Rf
VFJVRShSdW4oIjk5OTk5OTk5OS45OTk5OTk5OTlkIikpOworICBFWFBFQ1RfRkFMU0Uoby53aWR0
aC5pc19mcm9tX2FyZygpKTsKKyAgRVhQRUNUX0VRKDk5OTk5OTk5OSwgby53aWR0aC52YWx1ZSgp
KTsKKyAgRVhQRUNUX0ZBTFNFKG8ucHJlY2lzaW9uLmlzX2Zyb21fYXJnKCkpOworICBFWFBFQ1Rf
RVEoOTk5OTk5OTk5LCBvLnByZWNpc2lvbi52YWx1ZSgpKTsKKworICBFWFBFQ1RfRkFMU0UoUnVu
KCIxMDAwMDAwMDAwLjk5OTk5OTk5OWQiKSk7CisgIEVYUEVDVF9GQUxTRShSdW4oIjk5OTk5OTk5
OS4xMDAwMDAwMDAwZCIpKTsKIH0KIAogVEVTVF9GKENvbnN1bWVVbmJvdW5kQ29udmVyc2lvblRl
c3QsIEZsYWdzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9qb2lu
X2ludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9qb2luX2ludGVybmFsLmgK
aW5kZXggYTczNDc1OGMyMWVlMzA5NTFmNzdhMmM2OWM5NmVjNzVkNzFlZTk2YS4uMDA1OGZjOGFh
NGQ1YTgxMjEwYTk4ZjJkMWJiMTFiYzBjNjVhOTY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9pbnRlcm5hbC9zdHJfam9pbl9pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJu
YWwvc3RyX2pvaW5faW50ZXJuYWwuaApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0cnVjdCBEZWZhdWx0
Rm9ybWF0dGVyPHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZVR5cGU+PgogLy8KIAogLy8gVGhlIG1haW4g
am9pbmluZyBhbGdvcml0aG0uIFRoaXMgc2ltcGx5IGpvaW5zIHRoZSBlbGVtZW50cyBpbiB0aGUg
Z2l2ZW4KLS8vIGl0ZXJhdG9yIHJhbmdlLCBlYWNoIHNlcGFyYXRlZCBieSB0aGUgZ2l2ZW4gc2Vw
YXJhdG9yLCBpbnRvIGFuIG91dHB1dCBzdGQ6OnN0cmluZywKKy8vIGl0ZXJhdG9yIHJhbmdlLCBl
YWNoIHNlcGFyYXRlZCBieSB0aGUgZ2l2ZW4gc2VwYXJhdG9yLCBpbnRvIGFuIG91dHB1dCBzdHJp
bmcsCiAvLyBhbmQgZm9ybWF0cyBlYWNoIGVsZW1lbnQgdXNpbmcgdGhlIHByb3ZpZGVkIEZvcm1h
dHRlciBvYmplY3QuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIEZvcm1h
dHRlcj4KIHN0ZDo6c3RyaW5nIEpvaW5BbGdvcml0aG0oSXRlcmF0b3Igc3RhcnQsIEl0ZXJhdG9y
IGVuZCwgYWJzbDo6c3RyaW5nX3ZpZXcgcywKQEAgLTIwNSwyMCArMjA1LDIwIEBAIHN0ZDo6c3Ry
aW5nIEpvaW5BbGdvcml0aG0oSXRlcmF0b3Igc3RhcnQsIEl0ZXJhdG9yIGVuZCwgYWJzbDo6c3Ry
aW5nX3ZpZXcgcywKIH0KIAogLy8gQSBqb2luaW5nIGFsZ29yaXRobSB0aGF0J3Mgb3B0aW1pemVk
IGZvciBhIGZvcndhcmQgaXRlcmF0b3IgcmFuZ2Ugb2YKLS8vIHN0ZDo6c3RyaW5nLWxpa2Ugb2Jq
ZWN0cyB0aGF0IGRvIG5vdCBuZWVkIGFueSBhZGRpdGlvbmFsIGZvcm1hdHRpbmcuIFRoaXMgaXMg
dG8KLS8vIG9wdGltaXplIHRoZSBjb21tb24gY2FzZSBvZiBqb2luaW5nLCBzYXksIGEgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+IG9yIGEKKy8vIHN0cmluZy1saWtlIG9iamVjdHMgdGhhdCBkbyBu
b3QgbmVlZCBhbnkgYWRkaXRpb25hbCBmb3JtYXR0aW5nLiBUaGlzIGlzIHRvCisvLyBvcHRpbWl6
ZSB0aGUgY29tbW9uIGNhc2Ugb2Ygam9pbmluZywgc2F5LCBhIHN0ZDo6dmVjdG9yPHN0cmluZz4g
b3IgYQogLy8gc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+LgogLy8KIC8vIFRoaXMgaXMg
YW4gb3ZlcmxvYWQgb2YgdGhlIHByZXZpb3VzIEpvaW5BbGdvcml0aG0oKSBmdW5jdGlvbi4gSGVy
ZSB0aGUKIC8vIEZvcm1hdHRlciBhcmd1bWVudCBpcyBvZiB0eXBlIE5vRm9ybWF0dGVyLiBTaW5j
ZSBOb0Zvcm1hdHRlciBpcyBhbiBpbnRlcm5hbAogLy8gdHlwZSwgdGhpcyBvdmVybG9hZCBpcyBv
bmx5IGludm9rZWQgd2hlbiBzdHJpbmdzOjpKb2luKCkgaXMgY2FsbGVkIHdpdGggYQotLy8gcmFu
Z2Ugb2Ygc3RkOjpzdHJpbmctbGlrZSBvYmplY3RzIChlLmcuLCBzdGQ6OnN0cmluZywgYWJzbDo6
c3RyaW5nX3ZpZXcpLCBhbmQgYW4KKy8vIHJhbmdlIG9mIHN0cmluZy1saWtlIG9iamVjdHMgKGUu
Zy4sIHN0cmluZywgYWJzbDo6c3RyaW5nX3ZpZXcpLCBhbmQgYW4KIC8vIGV4cGxpY2l0IEZvcm1h
dHRlciBhcmd1bWVudCB3YXMgTk9UIHNwZWNpZmllZC4KIC8vCiAvLyBUaGUgb3B0aW1pemF0aW9u
IGlzIHRoYXQgdGhlIG5lZWRlZCBzcGFjZSB3aWxsIGJlIHJlc2VydmVkIGluIHRoZSBvdXRwdXQK
LS8vIHN0ZDo6c3RyaW5nIHRvIGF2b2lkIHRoZSBuZWVkIHRvIHJlc2l6ZSB3aGlsZSBhcHBlbmRp
bmcuIFRvIGRvIHRoaXMsIHRoZSBpdGVyYXRvcgorLy8gc3RyaW5nIHRvIGF2b2lkIHRoZSBuZWVk
IHRvIHJlc2l6ZSB3aGlsZSBhcHBlbmRpbmcuIFRvIGRvIHRoaXMsIHRoZSBpdGVyYXRvcgogLy8g
cmFuZ2Ugd2lsbCBiZSB0cmF2ZXJzZWQgdHdpY2U6IG9uY2UgdG8gY2FsY3VsYXRlIHRoZSB0b3Rh
bCBuZWVkZWQgc2l6ZSwgYW5kCi0vLyB0aGVuIGFnYWluIHRvIGNvcHkgdGhlIGVsZW1lbnRzIGFu
ZCBkZWxpbWl0ZXJzIHRvIHRoZSBvdXRwdXQgc3RkOjpzdHJpbmcuCisvLyB0aGVuIGFnYWluIHRv
IGNvcHkgdGhlIGVsZW1lbnRzIGFuZCBkZWxpbWl0ZXJzIHRvIHRoZSBvdXRwdXQgc3RyaW5nLgog
dGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yLAogICAgICAgICAgIHR5cGVuYW1lID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTwKICAgICAgICAgICAgICAgdHlw
ZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX3NwbGl0X2ludGVybmFsLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9zcGxpdF9pbnRlcm5hbC5oCmluZGV4IDljZjA4
MzNmNDkwMjhhYjAzOWM3YzQyMjUwNGE5OTZkOTllOTQzZGMuLjgxZThkNTU1NDQ2ODBkNjcxZTU2
ZWIwMjU0OTk1YjQyYmQ1NDhkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
c3RyX3NwbGl0X2ludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfc3Bs
aXRfaW50ZXJuYWwuaApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5h
bCB7CiAKIC8vIFRoaXMgY2xhc3MgaXMgaW1wbGljaXRseSBjb25zdHJ1Y3RpYmxlIGZyb20gZXZl
cnl0aGluZyB0aGF0IGFic2w6OnN0cmluZ192aWV3CiAvLyBpcyBpbXBsaWNpdGx5IGNvbnN0cnVj
dGlibGUgZnJvbS4gSWYgaXQncyBjb25zdHJ1Y3RlZCBmcm9tIGEgdGVtcG9yYXJ5Ci0vLyBzdGQ6
OnN0cmluZywgdGhlIGRhdGEgaXMgbW92ZWQgaW50byBhIGRhdGEgbWVtYmVyIHNvIGl0cyBsaWZl
dGltZSBtYXRjaGVzIHRoYXQgb2YKKy8vIHN0cmluZywgdGhlIGRhdGEgaXMgbW92ZWQgaW50byBh
IGRhdGEgbWVtYmVyIHNvIGl0cyBsaWZldGltZSBtYXRjaGVzIHRoYXQgb2YKIC8vIHRoZSBDb252
ZXJ0aWJsZVRvU3RyaW5nVmlldyBpbnN0YW5jZS4KIGNsYXNzIENvbnZlcnRpYmxlVG9TdHJpbmdW
aWV3IHsKICBwdWJsaWM6CkBAIC0xMDIsNyArMTAyLDcgQEAgQ29udmVydGlibGVUb1N0cmluZ1Zp
ZXcoc3RkOjpzdHJpbmcmJiBzKSAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCiAgIGFic2w6
OnN0cmluZ192aWV3IHZhbHVlXzsKIH07CiAKLS8vIEFuIGl0ZXJhdG9yIHRoYXQgZW51bWVyYXRl
cyB0aGUgcGFydHMgb2YgYSBzdGQ6OnN0cmluZyBmcm9tIGEgU3BsaXR0ZXIuIFRoZSB0ZXh0Cisv
LyBBbiBpdGVyYXRvciB0aGF0IGVudW1lcmF0ZXMgdGhlIHBhcnRzIG9mIGEgc3RyaW5nIGZyb20g
YSBTcGxpdHRlci4gVGhlIHRleHQKIC8vIHRvIGJlIHNwbGl0LCB0aGUgRGVsaW1pdGVyLCBhbmQg
dGhlIFByZWRpY2F0ZSBhcmUgYWxsIHRha2VuIGZyb20gdGhlIGdpdmVuCiAvLyBTcGxpdHRlciBv
YmplY3QuIEl0ZXJhdG9ycyBtYXkgb25seSBiZSBjb21wYXJlZCBpZiB0aGV5IHJlZmVyIHRvIHRo
ZSBzYW1lCiAvLyBTcGxpdHRlciBpbnN0YW5jZS4KQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBT
cGxpdEl0ZXJhdG9yIHsKICAgICAgIH0KICAgICAgIGNvbnN0IGFic2w6OnN0cmluZ192aWV3IHRl
eHQgPSBzcGxpdHRlcl8tPnRleHQoKTsKICAgICAgIGNvbnN0IGFic2w6OnN0cmluZ192aWV3IGQg
PSBkZWxpbWl0ZXJfLkZpbmQodGV4dCwgcG9zXyk7Ci0gICAgICBpZiAoZC5kYXRhKCkgPT0gdGV4
dC5lbmQoKSkgc3RhdGVfID0ga0xhc3RTdGF0ZTsKKyAgICAgIGlmIChkLmRhdGEoKSA9PSB0ZXh0
LmRhdGEoKSArIHRleHQuc2l6ZSgpKSBzdGF0ZV8gPSBrTGFzdFN0YXRlOwogICAgICAgY3Vycl8g
PSB0ZXh0LnN1YnN0cihwb3NfLCBkLmRhdGEoKSAtICh0ZXh0LmRhdGEoKSArIHBvc18pKTsKICAg
ICAgIHBvc18gKz0gY3Vycl8uc2l6ZSgpICsgZC5zaXplKCk7CiAgICAgfSB3aGlsZSAoIXByZWRp
Y2F0ZV8oY3Vycl8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL21hdGNoLmNjCmluZGV4IDI1YmQ3ZjBiODI4YmZkZWM3MmNhNTg3ZDQ4NzFiZmZi
NjkyODYyZTMuLjNkMTBjNTc3ODRlYmU5MjU0OTg1NWJjZmIwNzc2Nzk5OTY2ZjE3MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaC5j
YwpAQCAtMjcsNiArMjcsMTMgQEAgYm9vbCBDYXNlRXF1YWwoYWJzbDo6c3RyaW5nX3ZpZXcgcGll
Y2UxLCBhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTIpIHsKIH0KIH0gIC8vIG5hbWVzcGFjZQogCiti
b29sIEVxdWFsc0lnbm9yZUNhc2UoYWJzbDo6c3RyaW5nX3ZpZXcgcGllY2UxLCBhYnNsOjpzdHJp
bmdfdmlldyBwaWVjZTIpIHsKKyAgcmV0dXJuIChwaWVjZTEuc2l6ZSgpID09IHBpZWNlMi5zaXpl
KCkgJiYKKyAgICAgICAgICAwID09IGFic2w6OnN0cmluZ3NfaW50ZXJuYWw6Om1lbWNhc2VjbXAo
cGllY2UxLmRhdGEoKSwgcGllY2UyLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGllY2UxLnNpemUoKSkpOworICAvLyBtZW1jYXNlY21w
IHVzZXMgYWJzbDo6YXNjaWlfdG9sb3dlcigpLgorfQorCiBib29sIFN0YXJ0c1dpdGhJZ25vcmVD
YXNlKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGFic2w6OnN0cmluZ192aWV3IHByZWZpeCkgewog
ICByZXR1cm4gKHRleHQuc2l6ZSgpID49IHByZWZpeC5zaXplKCkpICYmCiAgICAgICAgICBDYXNl
RXF1YWwodGV4dC5zdWJzdHIoMCwgcHJlZml4LnNpemUoKSksIHByZWZpeCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL21hdGNoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmgKaW5kZXggMTA4
YjYwNDhiMDQ4ZWMyNjVmNTE4YWEzYTZlZTA0ZDEwMTlmMzQzNi4uNmU4ZWQxMGZjNTBmZWI2Zjcx
OTZkYjQxOWM0YTM4YTQyNDBiNGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guaApAQCAtMTcsNyArMTcsNyBAQAogLy8gRmlsZTog
bWF0Y2guaAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0vLyBUaGlzIGZpbGUgY29udGFp
bnMgc2ltcGxlIHV0aWxpdGllcyBmb3IgcGVyZm9ybWluZyBzdGQ6OnN0cmluZyBtYXRjaGluZyBj
aGVja3MuCisvLyBUaGlzIGZpbGUgY29udGFpbnMgc2ltcGxlIHV0aWxpdGllcyBmb3IgcGVyZm9y
bWluZyBzdHJpbmcgbWF0Y2hpbmcgY2hlY2tzLgogLy8gQWxsIG9mIHRoZXNlIGZ1bmN0aW9uIHBh
cmFtZXRlcnMgYXJlIHNwZWNpZmllZCBhcyBgYWJzbDo6c3RyaW5nX3ZpZXdgLAogLy8gbWVhbmlu
ZyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBjYW4gYWNjZXB0IGBzdGQ6OnN0cmluZ2AsIGBhYnNsOjpz
dHJpbmdfdmlld2Agb3IKIC8vIG51bC10ZXJtaW5hdGVkIEMtc3R5bGUgc3RyaW5ncy4KQEAgLTQx
LDE0ICs0MSwxNCBAQCBuYW1lc3BhY2UgYWJzbCB7CiAKIC8vIFN0ckNvbnRhaW5zKCkKIC8vCi0v
LyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZlbiBzdGQ6OnN0cmluZyBgaGF5c3RhY2tgIGNvbnRhaW5z
IHRoZSBzdWJzdHJpbmcgYG5lZWRsZWAuCisvLyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZlbiBzdHJp
bmcgYGhheXN0YWNrYCBjb250YWlucyB0aGUgc3Vic3RyaW5nIGBuZWVkbGVgLgogaW5saW5lIGJv
b2wgU3RyQ29udGFpbnMoYWJzbDo6c3RyaW5nX3ZpZXcgaGF5c3RhY2ssIGFic2w6OnN0cmluZ192
aWV3IG5lZWRsZSkgewogICByZXR1cm4gaGF5c3RhY2suZmluZChuZWVkbGUsIDApICE9IGhheXN0
YWNrLm5wb3M7CiB9CiAKIC8vIFN0YXJ0c1dpdGgoKQogLy8KLS8vIFJldHVybnMgd2hldGhlciBh
IGdpdmVuIHN0ZDo6c3RyaW5nIGB0ZXh0YCBiZWdpbnMgd2l0aCBgcHJlZml4YC4KKy8vIFJldHVy
bnMgd2hldGhlciBhIGdpdmVuIHN0cmluZyBgdGV4dGAgYmVnaW5zIHdpdGggYHByZWZpeGAuCiBp
bmxpbmUgYm9vbCBTdGFydHNXaXRoKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGFic2w6OnN0cmlu
Z192aWV3IHByZWZpeCkgewogICByZXR1cm4gcHJlZml4LmVtcHR5KCkgfHwKICAgICAgICAgICh0
ZXh0LnNpemUoKSA+PSBwcmVmaXguc2l6ZSgpICYmCkBAIC01Nyw3ICs1Nyw3IEBAIGlubGluZSBi
b29sIFN0YXJ0c1dpdGgoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgYWJzbDo6c3RyaW5nX3ZpZXcg
cHJlZml4KSB7CiAKIC8vIEVuZHNXaXRoKCkKIC8vCi0vLyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZl
biBzdGQ6OnN0cmluZyBgdGV4dGAgZW5kcyB3aXRoIGBzdWZmaXhgLgorLy8gUmV0dXJucyB3aGV0
aGVyIGEgZ2l2ZW4gc3RyaW5nIGB0ZXh0YCBlbmRzIHdpdGggYHN1ZmZpeGAuCiBpbmxpbmUgYm9v
bCBFbmRzV2l0aChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmlldyBzdWZm
aXgpIHsKICAgcmV0dXJuIHN1ZmZpeC5lbXB0eSgpIHx8CiAgICAgICAgICAodGV4dC5zaXplKCkg
Pj0gc3VmZml4LnNpemUoKSAmJgpAQCAtNjYsMTYgKzY2LDIyIEBAIGlubGluZSBib29sIEVuZHNX
aXRoKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGFic2w6OnN0cmluZ192aWV3IHN1ZmZpeCkgewog
ICAgICAgICAgKTsKIH0KIAotLy8gU3RhcnRzV2l0aElnbm9yZUNhc2UoKQorLy8gRXF1YWxzSWdu
b3JlQ2FzZSgpCiAvLwotLy8gUmV0dXJucyB3aGV0aGVyIGEgZ2l2ZW4gc3RkOjpzdHJpbmcgYHRl
eHRgIHN0YXJ0cyB3aXRoIGBzdGFydHNfd2l0aGAsIGlnbm9yaW5nCisvLyBSZXR1cm5zIHdoZXRo
ZXIgZ2l2ZW4gQVNDSUkgc3RyaW5ncyBgcGllY2UxYCBhbmQgYHBpZWNlMmAgYXJlIGVxdWFsLCBp
Z25vcmluZwogLy8gY2FzZSBpbiB0aGUgY29tcGFyaXNvbi4KK2Jvb2wgRXF1YWxzSWdub3JlQ2Fz
ZShhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTEsIGFic2w6OnN0cmluZ192aWV3IHBpZWNlMik7CisK
Ky8vIFN0YXJ0c1dpdGhJZ25vcmVDYXNlKCkKKy8vCisvLyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZl
biBBU0NJSSBzdHJpbmcgYHRleHRgIHN0YXJ0cyB3aXRoIGBzdGFydHNfd2l0aGAsCisvLyBpZ25v
cmluZyBjYXNlIGluIHRoZSBjb21wYXJpc29uLgogYm9vbCBTdGFydHNXaXRoSWdub3JlQ2FzZShh
YnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmlldyBwcmVmaXgpOwogCiAvLyBF
bmRzV2l0aElnbm9yZUNhc2UoKQogLy8KLS8vIFJldHVybnMgd2hldGhlciBhIGdpdmVuIHN0ZDo6
c3RyaW5nIGB0ZXh0YCBlbmRzIHdpdGggYGVuZHNfd2l0aGAsIGlnbm9yaW5nIGNhc2UKLS8vIGlu
IHRoZSBjb21wYXJpc29uLgorLy8gUmV0dXJucyB3aGV0aGVyIGEgZ2l2ZW4gQVNDSUkgc3RyaW5n
IGB0ZXh0YCBlbmRzIHdpdGggYGVuZHNfd2l0aGAsIGlnbm9yaW5nCisvLyBjYXNlIGluIHRoZSBj
b21wYXJpc29uLgogYm9vbCBFbmRzV2l0aElnbm9yZUNhc2UoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4
dCwgYWJzbDo6c3RyaW5nX3ZpZXcgc3VmZml4KTsKIAogfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2hfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0
Y2hfdGVzdC5jYwppbmRleCBkMTk0ZjBlNjg5YmY2ZTAwMTY1NmM1MmUzNTdiNWQ3NzhhNjdiNTVk
Li5jMjFlMDBiZjgwN2M5NGY3ZjdjNWE4OGYyNjVmMjA2OTRjZGYxMTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL21hdGNoX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaF90ZXN0
LmNjCkBAIC04MCw2ICs4MCwxNyBAQCBURVNUKE1hdGNoVGVzdCwgQ29udGFpbnNOdWxsKSB7CiAg
IEVYUEVDVF9GQUxTRShhYnNsOjpTdHJDb250YWlucyhjcywgc3YyKSk7CiB9CiAKK1RFU1QoTWF0
Y2hUZXN0LCBFcXVhbHNJZ25vcmVDYXNlKSB7CisgIHN0ZDo6c3RyaW5nIHRleHQgPSAidGhlIjsK
KyAgYWJzbDo6c3RyaW5nX3ZpZXcgZGF0YSh0ZXh0KTsKKworICBFWFBFQ1RfVFJVRShhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKGRhdGEsICJUaGUiKSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OkVxdWFs
c0lnbm9yZUNhc2UoZGF0YSwgIlRIRSIpKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6RXF1YWxzSWdu
b3JlQ2FzZShkYXRhLCAidGhlIikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6RXF1YWxzSWdub3Jl
Q2FzZShkYXRhLCAiUXVpY2siKSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjpFcXVhbHNJZ25vcmVD
YXNlKGRhdGEsICJ0aGVuIikpOworfQorCiBURVNUKE1hdGNoVGVzdCwgU3RhcnRzV2l0aElnbm9y
ZUNhc2UpIHsKICAgRVhQRUNUX1RSVUUoYWJzbDo6U3RhcnRzV2l0aElnbm9yZUNhc2UoImZvbyIs
ICJmb28iKSk7CiAgIEVYUEVDVF9UUlVFKGFic2w6OlN0YXJ0c1dpdGhJZ25vcmVDYXNlKCJmb28i
LCAiRm8iKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL251bWJlcnMuY2MKaW5kZXggZjg0MmVkODVlOWY1OTVlZmI4ZGExZWMwNTAyNzVkZDM2
OGEyNmU5Ny4uOTMwOWY5ZGE5ZGNjNWM5MDdlNjgzNWVjYTZkMDQ3YzkwZjJjNmYzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVy
cy5jYwpAQCAtMTIsNyArMTIsNyBAQAogLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogLy8gbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCiAKLS8vIFRoaXMgZmlsZSBjb250YWlucyBzdGQ6OnN0cmluZyBwcm9j
ZXNzaW5nIGZ1bmN0aW9ucyByZWxhdGVkIHRvCisvLyBUaGlzIGZpbGUgY29udGFpbnMgc3RyaW5n
IHByb2Nlc3NpbmcgZnVuY3Rpb25zIHJlbGF0ZWQgdG8KIC8vIG51bWVyaWMgdmFsdWVzLgogCiAj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL251bWJlcnMuaCIKQEAgLTMwLDEwICszMCwxMCBAQAogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC9iYXNl
L2ludGVybmFsL2JpdHMuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dp
bmcuaCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3MvYXNjaWkuaCIKICNpbmNsdWRlICJhYnNsL3N0
cmluZ3MvY2hhcmNvbnYuaCIKLSNpbmNsdWRlICJhYnNsL3N0cmluZ3MvaW50ZXJuYWwvYml0cy5o
IgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmgiCiAjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKIApAQCAtMTYxLDggKzE2MSw4IEBAIGJvb2wgU2ltcGxl
QXRvYihhYnNsOjpzdHJpbmdfdmlldyBzdHIsIGJvb2wqIHZhbHVlKSB7CiAvLyB0aGVpciBvdXRw
dXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyLiAgVGhlIGNhbGxlciBpcyByZXNwb25z
aWJsZQogLy8gZm9yIGVuc3VyaW5nIHRoYXQgdGhlIGJ1ZmZlciBoYXMgZW5vdWdoIHNwYWNlIHRv
IGhvbGQgdGhlIG91dHB1dC4KIC8vCi0vLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZW5kIG9m
IHRoZSBzdGQ6OnN0cmluZyAoaS5lLiB0aGUgbnVsbCBjaGFyYWN0ZXIKLS8vIHRlcm1pbmF0aW5n
IHRoZSBzdGQ6OnN0cmluZykuCisvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZW5kIG9mIHRo
ZSBzdHJpbmcgKGkuZS4gdGhlIG51bGwgY2hhcmFjdGVyCisvLyB0ZXJtaW5hdGluZyB0aGUgc3Ry
aW5nKS4KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogbmFtZXNwYWNlIHsKQEAgLTM0NCw3ICszNDQsNyBA
QCBzdGF0aWMgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gTXVsMzIoc3RkOjpwYWlyPHVp
bnQ2NF90LCB1aW50NjRfdD4gbnVtLAogICB1aW50NjRfdCBiaXRzMTI4X3VwID0gKGJpdHM5Nl8x
MjcgPj4gMzIpICsgKGJpdHM2NF8xMjcgPCBiaXRzNjRfOTUpOwogICBpZiAoYml0czEyOF91cCA9
PSAwKSByZXR1cm4ge2JpdHM2NF8xMjcsIGJpdHMwXzYzfTsKIAotICBpbnQgc2hpZnQgPSA2NCAt
IHN0cmluZ3NfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQoYml0czEyOF91cCk7CisgIGlu
dCBzaGlmdCA9IDY0IC0gYmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChiaXRzMTI4
X3VwKTsKICAgdWludDY0X3QgbG8gPSAoYml0czBfNjMgPj4gc2hpZnQpICsgKGJpdHM2NF8xMjcg
PDwgKDY0IC0gc2hpZnQpKTsKICAgdWludDY0X3QgaGkgPSAoYml0czY0XzEyNyA+PiBzaGlmdCkg
KyAoYml0czEyOF91cCA8PCAoNjQgLSBzaGlmdCkpOwogICByZXR1cm4ge2hpLCBsb307CkBAIC0z
NzUsNyArMzc1LDcgQEAgc3RhdGljIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IFBvd0Zp
dmUodWludDY0X3QgbnVtLCBpbnQgZXhwZml2ZSkgewogICAgICAgNSAqIDUgKiA1ICogNSAqIDUg
KiA1ICogNSAqIDUgKiA1ICogNSAqIDUsCiAgICAgICA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1
ICogNSAqIDUgKiA1ICogNSAqIDV9OwogICByZXN1bHQgPSBNdWwzMihyZXN1bHQsIHBvd2Vyc19v
Zl9maXZlW2V4cGZpdmUgJiAxNV0pOwotICBpbnQgc2hpZnQgPSBzdHJpbmdzX2ludGVybmFsOjpD
b3VudExlYWRpbmdaZXJvczY0KHJlc3VsdC5maXJzdCk7CisgIGludCBzaGlmdCA9IGJhc2VfaW50
ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQocmVzdWx0LmZpcnN0KTsKICAgaWYgKHNoaWZ0ICE9
IDApIHsKICAgICByZXN1bHQuZmlyc3QgPSAocmVzdWx0LmZpcnN0IDw8IHNoaWZ0KSArIChyZXN1
bHQuc2Vjb25kID4+ICg2NCAtIHNoaWZ0KSk7CiAgICAgcmVzdWx0LnNlY29uZCA9IChyZXN1bHQu
c2Vjb25kIDw8IHNoaWZ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVycy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9udW1iZXJzLmgKaW5kZXggY2YzYzU5NzI2NmNmNzE0NzRkNDA1ZGQwY2Zk
ZWE1Y2RlYjU4YmFkYy4uZjliMmNjZWY5NGQ4YmQ1NWIxYmQ4MmRlNTgyZTU4OWNiZDIxMmY1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9u
dW1iZXJzLmgKQEAgLTQxLDMyICs0MSwzMiBAQCBuYW1lc3BhY2UgYWJzbCB7CiAKIC8vIFNpbXBs
ZUF0b2koKQogLy8KLS8vIENvbnZlcnRzIHRoZSBnaXZlbiBzdGQ6OnN0cmluZyBpbnRvIGFuIGlu
dGVnZXIgdmFsdWUsIHJldHVybmluZyBgdHJ1ZWAgaWYKLS8vIHN1Y2Nlc3NmdWwuIFRoZSBzdGQ6
OnN0cmluZyBtdXN0IHJlZmxlY3QgYSBiYXNlLTEwIGludGVnZXIgKG9wdGlvbmFsbHkgZm9sbG93
ZWQgb3IKKy8vIENvbnZlcnRzIHRoZSBnaXZlbiBzdHJpbmcgaW50byBhbiBpbnRlZ2VyIHZhbHVl
LCByZXR1cm5pbmcgYHRydWVgIGlmCisvLyBzdWNjZXNzZnVsLiBUaGUgc3RyaW5nIG11c3QgcmVm
bGVjdCBhIGJhc2UtMTAgaW50ZWdlciAob3B0aW9uYWxseSBmb2xsb3dlZCBvcgogLy8gcHJlY2Vk
ZWQgYnkgQVNDSUkgd2hpdGVzcGFjZSkgd2hvc2UgdmFsdWUgZmFsbHMgd2l0aGluIHRoZSByYW5n
ZSBvZiB0aGUKLS8vIGludGVnZXIgdHlwZSwKKy8vIGludGVnZXIgdHlwZS4KIHRlbXBsYXRlIDx0
eXBlbmFtZSBpbnRfdHlwZT4KIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGJvb2wgU2ltcGxlQXRvaShh
YnNsOjpzdHJpbmdfdmlldyBzLCBpbnRfdHlwZSogb3V0KTsKIAogLy8gU2ltcGxlQXRvZigpCiAv
LwotLy8gQ29udmVydHMgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nIChvcHRpb25hbGx5IGZvbGxvd2Vk
IG9yIHByZWNlZGVkIGJ5IEFTQ0lJCisvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3RyaW5nIChvcHRp
b25hbGx5IGZvbGxvd2VkIG9yIHByZWNlZGVkIGJ5IEFTQ0lJCiAvLyB3aGl0ZXNwYWNlKSBpbnRv
IGEgZmxvYXQsIHdoaWNoIG1heSBiZSByb3VuZGVkIG9uIG92ZXJmbG93IG9yIHVuZGVyZmxvdy4K
LS8vIFNlZSBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2Mvc3RkOjpzdHJpbmcvYnl0ZS9z
dHJ0b2YgZm9yIGRldGFpbHMgYWJvdXQgdGhlCisvLyBTZWUgaHR0cDovL2VuLmNwcHJlZmVyZW5j
ZS5jb20vdy9jL3N0cmluZy9ieXRlL3N0cnRvZiBmb3IgZGV0YWlscyBhYm91dCB0aGUKIC8vIGFs
bG93ZWQgZm9ybWF0cyBmb3IgYHN0cmAuCiBBQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNpbXBs
ZUF0b2YoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBmbG9hdCogdmFsdWUpOwogCiAvLyBTaW1wbGVB
dG9kKCkKIC8vCi0vLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcgKG9wdGlvbmFsbHkg
Zm9sbG93ZWQgb3IgcHJlY2VkZWQgYnkgQVNDSUkKKy8vIENvbnZlcnRzIHRoZSBnaXZlbiBzdHJp
bmcgKG9wdGlvbmFsbHkgZm9sbG93ZWQgb3IgcHJlY2VkZWQgYnkgQVNDSUkKIC8vIHdoaXRlc3Bh
Y2UpIGludG8gYSBkb3VibGUsIHdoaWNoIG1heSBiZSByb3VuZGVkIG9uIG92ZXJmbG93IG9yIHVu
ZGVyZmxvdy4KLS8vIFNlZSBodHRwOi8vZW4uY3BwcmVmZXJlbmNlLmNvbS93L2Mvc3RkOjpzdHJp
bmcvYnl0ZS9zdHJ0b2YgZm9yIGRldGFpbHMgYWJvdXQgdGhlCisvLyBTZWUgaHR0cDovL2VuLmNw
cHJlZmVyZW5jZS5jb20vdy9jL3N0cmluZy9ieXRlL3N0cnRvZiBmb3IgZGV0YWlscyBhYm91dCB0
aGUKIC8vIGFsbG93ZWQgZm9ybWF0cyBmb3IgYHN0cmAuCiBBQlNMX01VU1RfVVNFX1JFU1VMVCBi
b29sIFNpbXBsZUF0b2QoYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBkb3VibGUqIHZhbHVlKTsKIAog
Ly8gU2ltcGxlQXRvYigpCiAvLwotLy8gQ29udmVydHMgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nIGlu
dG8gYSBib29sZWFuLCByZXR1cm5pbmcgYHRydWVgIGlmIHN1Y2Nlc3NmdWwuCisvLyBDb252ZXJ0
cyB0aGUgZ2l2ZW4gc3RyaW5nIGludG8gYSBib29sZWFuLCByZXR1cm5pbmcgYHRydWVgIGlmIHN1
Y2Nlc3NmdWwuCiAvLyBUaGUgZm9sbG93aW5nIGNhc2UtaW5zZW5zaXRpdmUgc3RyaW5ncyBhcmUg
aW50ZXJwcmV0ZWQgYXMgYm9vbGVhbiBgdHJ1ZWA6CiAvLyAidHJ1ZSIsICJ0IiwgInllcyIsICJ5
IiwgIjEiLiBUaGUgZm9sbG93aW5nIGNhc2UtaW5zZW5zaXRpdmUgc3RyaW5ncwogLy8gYXJlIGlu
dGVycHJldGVkIGFzIGJvb2xlYW4gYGZhbHNlYDogImZhbHNlIiwgImYiLCAibm8iLCAibiIsICIw
Ii4KQEAgLTE2OSw5ICsxNjksOSBAQCBBQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIHNhZmVfc3Ry
dG9pX2Jhc2UoYWJzbDo6c3RyaW5nX3ZpZXcgcywgaW50X3R5cGUqIG91dCwKIAogLy8gU2ltcGxl
QXRvaSgpCiAvLwotLy8gQ29udmVydHMgYSBzdGQ6OnN0cmluZyB0byBhbiBpbnRlZ2VyLCB1c2lu
ZyBgc2FmZV9zdHJ0bz8oKWAgZnVuY3Rpb25zIGZvciBhY3R1YWwKKy8vIENvbnZlcnRzIGEgc3Ry
aW5nIHRvIGFuIGludGVnZXIsIHVzaW5nIGBzYWZlX3N0cnRvPygpYCBmdW5jdGlvbnMgZm9yIGFj
dHVhbAogLy8gcGFyc2luZywgcmV0dXJuaW5nIGB0cnVlYCBpZiBzdWNjZXNzZnVsLiBUaGUgYHNh
ZmVfc3RydG8/KClgIGZ1bmN0aW9ucyBhcHBseQotLy8gc3RyaWN0IGNoZWNraW5nOyB0aGUgc3Rk
OjpzdHJpbmcgbXVzdCBiZSBhIGJhc2UtMTAgaW50ZWdlciwgb3B0aW9uYWxseSBmb2xsb3dlZCBv
cgorLy8gc3RyaWN0IGNoZWNraW5nOyB0aGUgc3RyaW5nIG11c3QgYmUgYSBiYXNlLTEwIGludGVn
ZXIsIG9wdGlvbmFsbHkgZm9sbG93ZWQgb3IKIC8vIHByZWNlZGVkIGJ5IEFTQ0lJIHdoaXRlc3Bh
Y2UsIHdpdGggYSB2YWx1ZSBpbiB0aGUgcmFuZ2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcKIC8vIGlu
dGVnZXIgdHlwZS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBpbnRfdHlwZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MvbnVtYmVyc19iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNf
YmVuY2htYXJrLmNjCmluZGV4IDhlZjY1MGI5YTNlY2NkZDc5NjY0ZGM3OWQyZDZmMjYxYTY2ODZh
MzIuLjA1NzBiNzU4NjMzZWUwNDA2ZDEyMTdlOWU3MDAxMmIyOGMxODBjNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvbnVtYmVyc19iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9u
dW1iZXJzX2JlbmNobWFyay5jYwpAQCAtMTU4LDcgKzE1OCw3IEBAIEJFTkNITUFSSyhCTV9zYWZl
X3N0cnRvdTY0X3N0cmluZykKICAgICAtPkFyZ1BhaXIoMTYsIDEwKQogICAgIC0+QXJnUGFpcigx
NiwgMTYpOwogCi0vLyBSZXR1cm5zIGEgdmVjdG9yIG9mIGBudW1fc3RyaW5nc2Agc3RyaW5ncy4g
RWFjaCBzdGQ6OnN0cmluZyByZXByZXNlbnRzIGEKKy8vIFJldHVybnMgYSB2ZWN0b3Igb2YgYG51
bV9zdHJpbmdzYCBzdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIGEKIC8vIGZsb2F0aW5n
IHBvaW50IG51bWJlciB3aXRoIGBudW1fZGlnaXRzYCBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFs
IHBvaW50IGFuZAogLy8gYW5vdGhlciBgbnVtX2RpZ2l0c2AgZGlnaXRzIGFmdGVyLgogc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+IE1ha2VGbG9hdFN0cmluZ3MoaW50IG51bV9zdHJpbmdzLCBpbnQg
bnVtX2RpZ2l0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzX3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL251bWJlcnNfdGVzdC5jYwppbmRleCAyN2NjMDQ3OWUzNDEyYzgzOGI0
Nzg1ZGZhZmI4ODk1ZWZlMDk2ZjYzLi4zNmZjMGQ2NGZkNTEzMDUwN2IxZTgxMWIzOGRmZTU3ZTMy
NDkzYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnNfdGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL251bWJlcnNfdGVzdC5jYwpAQCAtMTIsNyArMTIsNyBAQAogLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAogLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKLS8vIFRoaXMgZmlsZSB0
ZXN0cyBzdGQ6OnN0cmluZyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyByZWxhdGVkIHRvIG51bWVyaWMg
dmFsdWVzLgorLy8gVGhpcyBmaWxlIHRlc3RzIHN0cmluZyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyBy
ZWxhdGVkIHRvIG51bWVyaWMgdmFsdWVzLgogCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL251bWJl
cnMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9zdHJfY2F0LmNjCmluZGV4IDNmZThjOTVlY2E5ZWY5Nzk0OTE2OTM2Mzg5MDA4NThiMDg3
MjVkMGIuLmVmYTRmZDczZGJhYzc3MDQ4NzQ3ZWNjNGE3ZjFmY2IwZTY3ZDc3MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXQu
Y2MKQEAgLTc5LDcgKzc5LDcgQEAgQWxwaGFOdW06OkFscGhhTnVtKERlYyBkZWMpIHsKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIC8vIFN0ckNhdCgpCiAvLyAgICBUaGlzIG1lcmdlcyB0aGUgZ2l2ZW4gc3Ry
aW5ncyBvciBpbnRlZ2Vycywgd2l0aCBubyBkZWxpbWl0ZXIuICBUaGlzCi0vLyAgICBpcyBkZXNp
Z25lZCB0byBiZSB0aGUgZmFzdGVzdCBwb3NzaWJsZSB3YXkgdG8gY29uc3RydWN0IGEgc3RkOjpz
dHJpbmcgb3V0CisvLyAgICBpcyBkZXNpZ25lZCB0byBiZSB0aGUgZmFzdGVzdCBwb3NzaWJsZSB3
YXkgdG8gY29uc3RydWN0IGEgc3RyaW5nIG91dAogLy8gICAgb2YgYSBtaXggb2YgcmF3IEMgc3Ry
aW5ncywgU3RyaW5nUGllY2VzLCBzdHJpbmdzLCBhbmQgaW50ZWdlciB2YWx1ZXMuCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKQEAgLTE1NCwxMCArMTU0LDEwIEBAIHN0ZDo6c3RyaW5nIENhdFBpZWNlcyhz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8YWJzbDo6c3RyaW5nX3ZpZXc+IHBpZWNlcykgewogfQogCiAv
LyBJdCdzIHBvc3NpYmxlIHRvIGNhbGwgU3RyQXBwZW5kIHdpdGggYW4gYWJzbDo6c3RyaW5nX3Zp
ZXcgdGhhdCBpcyBpdHNlbGYgYQotLy8gZnJhZ21lbnQgb2YgdGhlIHN0ZDo6c3RyaW5nIHdlJ3Jl
IGFwcGVuZGluZyB0by4gIEhvd2V2ZXIgdGhlIHJlc3VsdHMgb2YgdGhpcyBhcmUKKy8vIGZyYWdt
ZW50IG9mIHRoZSBzdHJpbmcgd2UncmUgYXBwZW5kaW5nIHRvLiAgSG93ZXZlciB0aGUgcmVzdWx0
cyBvZiB0aGlzIGFyZQogLy8gcmFuZG9tLiBUaGVyZWZvcmUsIGNoZWNrIGZvciB0aGlzIGluIGRl
YnVnIG1vZGUuICBVc2UgdW5zaWduZWQgbWF0aCBzbyB3ZQogLy8gb25seSBoYXZlIHRvIGRvIG9u
ZSBjb21wYXJpc29uLiBOb3RlLCB0aGVyZSdzIGFuIGV4Y2VwdGlvbiBjYXNlOiBhcHBlbmRpbmcg
YW4KLS8vIGVtcHR5IHN0ZDo6c3RyaW5nIGlzIGFsd2F5cyBhbGxvd2VkLgorLy8gZW1wdHkgc3Ry
aW5nIGlzIGFsd2F5cyBhbGxvd2VkLgogI2RlZmluZSBBU1NFUlRfTk9fT1ZFUkxBUChkZXN0LCBz
cmMpIFwKICAgYXNzZXJ0KCgoc3JjKS5zaXplKCkgPT0gMCkgfHwgICAgICBcCiAgICAgICAgICAo
dWludHB0cl90KChzcmMpLmRhdGEoKSAtIChkZXN0KS5kYXRhKCkpID4gdWludHB0cl90KChkZXN0
KS5zaXplKCkpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJfY2F0LmgKaW5kZXggZTU1MDFhNTAxMmVlOGQ5Y2Y3OWNiZTZiNTBiMDQ3NTZk
MTkxYmY5ZS4uZGE5ZWQ5YTI2OWU5OTBiODc5MjJmZjJkMTlhYTk3MTdlNWUwZDcyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0
LmgKQEAgLTIzLDcgKzIzLDcgQEAKIC8vIGRlc2lnbmVkIHRvIGJlIHVzZWQgYXMgYSBwYXJhbWV0
ZXIgdHlwZSB0aGF0IGVmZmljaWVudGx5IG1hbmFnZXMgY29udmVyc2lvbgogLy8gdG8gc3RyaW5n
cyBhbmQgYXZvaWRzIGNvcGllcyBpbiB0aGUgYWJvdmUgb3BlcmF0aW9ucy4KIC8vCi0vLyBBbnkg
cm91dGluZSBhY2NlcHRpbmcgZWl0aGVyIGEgc3RkOjpzdHJpbmcgb3IgYSBudW1iZXIgbWF5IGFj
Y2VwdCBgQWxwaGFOdW1gLgorLy8gQW55IHJvdXRpbmUgYWNjZXB0aW5nIGVpdGhlciBhIHN0cmlu
ZyBvciBhIG51bWJlciBtYXkgYWNjZXB0IGBBbHBoYU51bWAuCiAvLyBUaGUgYmFzaWMgaWRlYSBp
cyB0aGF0IGJ5IGFjY2VwdGluZyBhIGBjb25zdCBBbHBoYU51bSAmYCBhcyBhbiBhcmd1bWVudAog
Ly8gdG8geW91ciBmdW5jdGlvbiwgeW91ciBjYWxsZXJzIHdpbGwgYXV0b21hZ2ljYWxseSBjb252
ZXJ0IGJvb2xzLCBpbnRlZ2VycywKIC8vIGFuZCBmbG9hdGluZyBwb2ludCB2YWx1ZXMgdG8gc3Ry
aW5ncyBmb3IgeW91LgpAQCAtNjUsNyArNjUsNyBAQAogbmFtZXNwYWNlIGFic2wgewogCiBuYW1l
c3BhY2Ugc3RyaW5nc19pbnRlcm5hbCB7Ci0vLyBBbHBoYU51bUJ1ZmZlciBhbGxvd3MgYSB3YXkg
dG8gcGFzcyBhIHN0ZDo6c3RyaW5nIHRvIFN0ckNhdCB3aXRob3V0IGhhdmluZyB0byBkbworLy8g
QWxwaGFOdW1CdWZmZXIgYWxsb3dzIGEgd2F5IHRvIHBhc3MgYSBzdHJpbmcgdG8gU3RyQ2F0IHdp
dGhvdXQgaGF2aW5nIHRvIGRvCiAvLyBtZW1vcnkgYWxsb2NhdGlvbi4gIEl0IGlzIHNpbXBseSBh
IHBhaXIgb2YgYSBmaXhlZC1zaXplIGNoYXJhY3RlciBhcnJheSwgYW5kCiAvLyBhIHNpemUuICBQ
bGVhc2UgZG9uJ3QgdXNlIG91dHNpZGUgb2YgYWJzbCwgeWV0LgogdGVtcGxhdGUgPHNpemVfdCBt
YXhfc2l6ZT4KQEAgLTExOSw4ICsxMTksOCBAQCBlbnVtIFBhZFNwZWMgOiB1aW50OF90IHsKIC8v
IEhleAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0vLyBgSGV4YCBzdG9yZXMgYSBzZXQg
b2YgaGV4YWRlY2ltYWwgc3RkOjpzdHJpbmcgY29udmVyc2lvbiBwYXJhbWV0ZXJzIGZvciB1c2UK
LS8vIHdpdGhpbiBgQWxwaGFOdW1gIHN0ZDo6c3RyaW5nIGNvbnZlcnNpb25zLgorLy8gYEhleGAg
c3RvcmVzIGEgc2V0IG9mIGhleGFkZWNpbWFsIHN0cmluZyBjb252ZXJzaW9uIHBhcmFtZXRlcnMg
Zm9yIHVzZQorLy8gd2l0aGluIGBBbHBoYU51bWAgc3RyaW5nIGNvbnZlcnNpb25zLgogc3RydWN0
IEhleCB7CiAgIHVpbnQ2NF90IHZhbHVlOwogICB1aW50OF90IHdpZHRoOwpAQCAtMTY4LDggKzE2
OCw4IEBAIHN0cnVjdCBIZXggewogLy8gRGVjCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8K
LS8vIGBEZWNgIHN0b3JlcyBhIHNldCBvZiBkZWNpbWFsIHN0ZDo6c3RyaW5nIGNvbnZlcnNpb24g
cGFyYW1ldGVycyBmb3IgdXNlCi0vLyB3aXRoaW4gYEFscGhhTnVtYCBzdGQ6OnN0cmluZyBjb252
ZXJzaW9ucy4gIERlYyBpcyBzbG93ZXIgdGhhbiB0aGUgZGVmYXVsdAorLy8gYERlY2Agc3RvcmVz
IGEgc2V0IG9mIGRlY2ltYWwgc3RyaW5nIGNvbnZlcnNpb24gcGFyYW1ldGVycyBmb3IgdXNlCisv
LyB3aXRoaW4gYEFscGhhTnVtYCBzdHJpbmcgY29udmVyc2lvbnMuICBEZWMgaXMgc2xvd2VyIHRo
YW4gdGhlIGRlZmF1bHQKIC8vIGludGVnZXIgY29udmVyc2lvbiwgc28gdXNlIGl0IG9ubHkgaWYg
eW91IG5lZWQgcGFkZGluZy4KIHN0cnVjdCBEZWMgewogICB1aW50NjRfdCB2YWx1ZTsKQEAgLTI3
MSw3ICsyNzEsNyBAQCBjbGFzcyBBbHBoYU51bSB7CiAvLwogLy8gTWVyZ2VzIGdpdmVuIHN0cmlu
Z3Mgb3IgbnVtYmVycywgdXNpbmcgbm8gZGVsaW1pdGVyKHMpLgogLy8KLS8vIGBTdHJDYXQoKWAg
aXMgZGVzaWduZWQgdG8gYmUgdGhlIGZhc3Rlc3QgcG9zc2libGUgd2F5IHRvIGNvbnN0cnVjdCBh
IHN0ZDo6c3RyaW5nCisvLyBgU3RyQ2F0KClgIGlzIGRlc2lnbmVkIHRvIGJlIHRoZSBmYXN0ZXN0
IHBvc3NpYmxlIHdheSB0byBjb25zdHJ1Y3QgYSBzdHJpbmcKIC8vIG91dCBvZiBhIG1peCBvZiBy
YXcgQyBzdHJpbmdzLCBzdHJpbmdfdmlld3MsIHN0cmluZ3MsIGJvb2wgdmFsdWVzLAogLy8gYW5k
IG51bWVyaWMgdmFsdWVzLgogLy8KQEAgLTI3OSw3ICsyNzksNyBAQCBjbGFzcyBBbHBoYU51bSB7
CiAvLyB3b3JrcyBwb29ybHkgb24gc3RyaW5ncyBidWlsdCB1cCBvdXQgb2YgZnJhZ21lbnRzLgog
Ly8KIC8vIEZvciBjbGFyaXR5IGFuZCBwZXJmb3JtYW5jZSwgZG9uJ3QgdXNlIGBTdHJDYXQoKWAg
d2hlbiBhcHBlbmRpbmcgdG8gYQotLy8gc3RkOjpzdHJpbmcuIFVzZSBgU3RyQXBwZW5kKClgIGlu
c3RlYWQuIEluIHBhcnRpY3VsYXIsIGF2b2lkIHVzaW5nIGFueSBvZiB0aGVzZQorLy8gc3RyaW5n
LiBVc2UgYFN0ckFwcGVuZCgpYCBpbnN0ZWFkLiBJbiBwYXJ0aWN1bGFyLCBhdm9pZCB1c2luZyBh
bnkgb2YgdGhlc2UKIC8vIChhbnRpLSlwYXR0ZXJuczoKIC8vCiAvLyAgIHN0ci5hcHBlbmQoU3Ry
Q2F0KC4uLikpCkBAIC0zMjgsMjYgKzMyOCwyNiBAQCBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxp
bmUgc3RkOjpzdHJpbmcgU3RyQ2F0KGNvbnN0IEFscGhhTnVtJiBhLCBjb25zdCBBbHBoYU51bQog
Ly8gU3RyQXBwZW5kKCkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwotLy8gQXBwZW5kcyBh
IHN0ZDo6c3RyaW5nIG9yIHNldCBvZiBzdHJpbmdzIHRvIGFuIGV4aXN0aW5nIHN0ZDo6c3RyaW5n
LCBpbiBhIHNpbWlsYXIKKy8vIEFwcGVuZHMgYSBzdHJpbmcgb3Igc2V0IG9mIHN0cmluZ3MgdG8g
YW4gZXhpc3Rpbmcgc3RyaW5nLCBpbiBhIHNpbWlsYXIKIC8vIGZhc2hpb24gdG8gYFN0ckNhdCgp
YC4KIC8vCiAvLyBXQVJOSU5HOiBgU3RyQXBwZW5kKCZzdHIsIGEsIGIsIGMsIC4uLilgIHJlcXVp
cmVzIHRoYXQgbm9uZSBvZiB0aGUKIC8vIGEsIGIsIGMsIHBhcmFtZXRlcnMgYmUgYSByZWZlcmVu
Y2UgaW50byBzdHIuIEZvciBzcGVlZCwgYFN0ckFwcGVuZCgpYCBkb2VzCiAvLyBub3QgdHJ5IHRv
IGNoZWNrIGVhY2ggb2YgaXRzIGlucHV0IGFyZ3VtZW50cyB0byBiZSBzdXJlIHRoYXQgdGhleSBh
cmUgbm90Ci0vLyBhIHN1YnNldCBvZiB0aGUgc3RkOjpzdHJpbmcgYmVpbmcgYXBwZW5kZWQgdG8u
IFRoYXQgaXMsIHdoaWxlIHRoaXMgd2lsbCB3b3JrOgorLy8gYSBzdWJzZXQgb2YgdGhlIHN0cmlu
ZyBiZWluZyBhcHBlbmRlZCB0by4gVGhhdCBpcywgd2hpbGUgdGhpcyB3aWxsIHdvcms6CiAvLwot
Ly8gICBzdGQ6OnN0cmluZyBzID0gImZvbyI7CisvLyAgIHN0cmluZyBzID0gImZvbyI7CiAvLyAg
IHMgKz0gczsKIC8vCiAvLyBUaGlzIG91dHB1dCBpcyB1bmRlZmluZWQ6CiAvLwotLy8gICBzdGQ6
OnN0cmluZyBzID0gImZvbyI7CisvLyAgIHN0cmluZyBzID0gImZvbyI7CiAvLyAgIFN0ckFwcGVu
ZCgmcywgcyk7CiAvLwogLy8gVGhpcyBvdXRwdXQgaXMgdW5kZWZpbmVkIGFzIHdlbGwsIHNpbmNl
IGBhYnNsOjpzdHJpbmdfdmlld2AgZG9lcyBub3Qgb3duIGl0cwogLy8gZGF0YToKIC8vCi0vLyAg
IHN0ZDo6c3RyaW5nIHMgPSAiZm9vYmFyIjsKKy8vICAgc3RyaW5nIHMgPSAiZm9vYmFyIjsKIC8v
ICAgYWJzbDo6c3RyaW5nX3ZpZXcgcCA9IHM7CiAvLyAgIFN0ckFwcGVuZCgmcywgcCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9z
dHJfY2F0X3Rlc3QuY2MKaW5kZXggZTlkNjc2OTA2MzgyNzE5MjBkMjYyMzRkOTczOTA1M2MzMGIy
NzQ4OS4uNTU1ZDhkYjNlYjg1NDM4YmU1ZjhjYzdmNTlkZDU1MDdkNmQ1YmE1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJf
Y2F0X3Rlc3QuY2MKQEAgLTI4LDcgKzI4LDggQEAKICNkZWZpbmUgQUJTTF9FWFBFQ1RfREVCVUdf
REVBVEgoc3RhdGVtZW50LCByZWdleCkgXAogICBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50
LCAiLioiKQogI2Vsc2UKLSNkZWZpbmUgQUJTTF9FWFBFQ1RfREVCVUdfREVBVEggRVhQRUNUX0RF
QlVHX0RFQVRICisjZGVmaW5lIEFCU0xfRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVn
ZXgpIFwKKyAgRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCiAjZW5kaWYKIAog
bmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9zdHJfZm9ybWF0LmgKaW5kZXggNzBhODExYjc1ZTJmZjg4NjNjOWUzNjg3YzZj
MjgyZjkwYzIzMTdmOS4uMmQwNzcyNWRlMjFmY2Y3OTA2OTUwZjAyZDIwNjE1YjVhZDEwOThhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfZm9ybWF0LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdHJfZm9ybWF0LmgKQEAgLTE4LDIwICsxOCwyMCBAQAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIC8vCiAvLyBUaGUgYHN0cl9mb3JtYXRgIGxpYnJhcnkgaXMgYSB0eXBlc2FmZSByZXBsYWNl
bWVudCBmb3IgdGhlIGZhbWlseSBvZgotLy8gYHByaW50ZigpYCBzdGQ6OnN0cmluZyBmb3JtYXR0
aW5nIHJvdXRpbmVzIHdpdGhpbiB0aGUgYDxjc3RkaW8+YCBzdGFuZGFyZCBsaWJyYXJ5CisvLyBg
cHJpbnRmKClgIHN0cmluZyBmb3JtYXR0aW5nIHJvdXRpbmVzIHdpdGhpbiB0aGUgYDxjc3RkaW8+
YCBzdGFuZGFyZCBsaWJyYXJ5CiAvLyBoZWFkZXIuIExpa2UgdGhlIGBwcmludGZgIGZhbWlseSwg
dGhlIGBzdHJfZm9ybWF0YCB1c2VzIGEgImZvcm1hdCBzdHJpbmciIHRvCiAvLyBwZXJmb3JtIGFy
Z3VtZW50IHN1YnN0aXR1dGlvbnMgYmFzZWQgb24gdHlwZXMuCiAvLwogLy8gRXhhbXBsZToKIC8v
Ci0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoIiVzICVzIFlvdSBoYXZlICQl
ZCEiLCAiSGVsbG8iLCBuYW1lLCBkb2xsYXJzKTsKKy8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJG
b3JtYXQoIiVzICVzIFlvdSBoYXZlICQlZCEiLCAiSGVsbG8iLCBuYW1lLCBkb2xsYXJzKTsKIC8v
CiAvLyBUaGUgbGlicmFyeSBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIGJhc2ljIHV0aWxpdGll
czoKIC8vCiAvLyAgICogYGFic2w6OlN0ckZvcm1hdCgpYCwgYSB0eXBlLXNhZmUgcmVwbGFjZW1l
bnQgZm9yIGBzdGQ6OnNwcmludGYoKWAsIHRvCi0vLyAgICAgd3JpdGUgYSBmb3JtYXQgc3RkOjpz
dHJpbmcgdG8gYSBgc3RyaW5nYCB2YWx1ZS4KLS8vICAgKiBgYWJzbDo6U3RyQXBwZW5kRm9ybWF0
KClgIHRvIGFwcGVuZCBhIGZvcm1hdCBzdGQ6OnN0cmluZyB0byBhIGBzdHJpbmdgCi0vLyAgICog
YGFic2w6OlN0cmVhbUZvcm1hdCgpYCB0byBtb3JlIGVmZmljaWVudGx5IHdyaXRlIGEgZm9ybWF0
IHN0ZDo6c3RyaW5nIHRvIGEKKy8vICAgICB3cml0ZSBhIGZvcm1hdCBzdHJpbmcgdG8gYSBgc3Ry
aW5nYCB2YWx1ZS4KKy8vICAgKiBgYWJzbDo6U3RyQXBwZW5kRm9ybWF0KClgIHRvIGFwcGVuZCBh
IGZvcm1hdCBzdHJpbmcgdG8gYSBgc3RyaW5nYAorLy8gICAqIGBhYnNsOjpTdHJlYW1Gb3JtYXQo
KWAgdG8gbW9yZSBlZmZpY2llbnRseSB3cml0ZSBhIGZvcm1hdCBzdHJpbmcgdG8gYQogLy8gICAg
IHN0cmVhbSwgc3VjaCBhc2BzdGQ6OmNvdXRgLgogLy8gICAqIGBhYnNsOjpQcmludEYoKWAsIGBh
YnNsOjpGUHJpbnRGKClgIGFuZCBgYWJzbDo6U05QcmludEYoKWAgYXMKIC8vICAgICByZXBsYWNl
bWVudHMgZm9yIGBzdGQ6OnByaW50ZigpYCwgYHN0ZDo6ZnByaW50ZigpYCBhbmQgYHN0ZDo6c25w
cmludGYoKWAuCkBAIC0zOSwxNSArMzksMTUgQEAKIC8vICAgICBOb3RlOiBhIHZlcnNpb24gb2Yg
YHN0ZDo6c3ByaW50ZigpYCBpcyBub3Qgc3VwcG9ydGVkIGFzIGl0IGlzCiAvLyAgICAgZ2VuZXJh
bGx5IHVuc2FmZSBkdWUgdG8gYnVmZmVyIG92ZXJmbG93cy4KIC8vCi0vLyBBZGRpdGlvbmFsbHks
IHlvdSBjYW4gcHJvdmlkZSBhIGZvcm1hdCBzdGQ6OnN0cmluZyAoYW5kIGl0cyBhc3NvY2lhdGVk
IGFyZ3VtZW50cykKKy8vIEFkZGl0aW9uYWxseSwgeW91IGNhbiBwcm92aWRlIGEgZm9ybWF0IHN0
cmluZyAoYW5kIGl0cyBhc3NvY2lhdGVkIGFyZ3VtZW50cykKIC8vIHVzaW5nIG9uZSBvZiB0aGUg
Zm9sbG93aW5nIGFic3RyYWN0aW9uczoKIC8vCi0vLyAgICogQSBgRm9ybWF0U3BlY2AgY2xhc3Mg
dGVtcGxhdGUgZnVsbHkgZW5jYXBzdWxhdGVzIGEgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCBpdHMK
Ky8vICAgKiBBIGBGb3JtYXRTcGVjYCBjbGFzcyB0ZW1wbGF0ZSBmdWxseSBlbmNhcHN1bGF0ZXMg
YSBmb3JtYXQgc3RyaW5nIGFuZCBpdHMKIC8vICAgICB0eXBlIGFyZ3VtZW50cyBhbmQgaXMgdXN1
YWxseSBwcm92aWRlZCB0byBgc3RyX2Zvcm1hdGAgZnVuY3Rpb25zIGFzIGEKIC8vICAgICB2YXJp
YWRpYyBhcmd1bWVudCBvZiB0eXBlIGBGb3JtYXRTcGVjPEFyZy4uLj5gLiBUaGUgYEZvcm1hdFNw
ZWM8QXJncy4uLj5gCiAvLyAgICAgdGVtcGxhdGUgaXMgZXZhbHVhdGVkIGF0IGNvbXBpbGUtdGlt
ZSwgcHJvdmlkaW5nIHR5cGUgc2FmZXR5LgogLy8gICAqIEEgYFBhcnNlZEZvcm1hdGAgaW5zdGFu
Y2UsIHdoaWNoIGVuY2Fwc3VsYXRlcyBhIHNwZWNpZmljLCBwcmUtY29tcGlsZWQKLS8vICAgICBm
b3JtYXQgc3RkOjpzdHJpbmcgZm9yIGEgc3BlY2lmaWMgc2V0IG9mIHR5cGUocyksIGFuZCB3aGlj
aCBjYW4gYmUgcGFzc2VkCisvLyAgICAgZm9ybWF0IHN0cmluZyBmb3IgYSBzcGVjaWZpYyBzZXQg
b2YgdHlwZShzKSwgYW5kIHdoaWNoIGNhbiBiZSBwYXNzZWQKIC8vICAgICBiZXR3ZWVuIEFQSSBi
b3VuZGFyaWVzLiAoVGhlIGBGb3JtYXRTcGVjYCB0eXBlIHNob3VsZCBub3QgYmUgdXNlZAogLy8g
ICAgIGRpcmVjdGx5LikKIC8vCkBAIC02MCw3ICs2MCw3IEBACiAvLwogLy8gICAqIEEgYEZvcm1h
dFVudHlwZWQoKWAgZnVuY3Rpb24gdGhhdCBpcyBzaW1pbGFyIHRvIGBGb3JtYXQoKWAgZXhjZXB0
IGl0IGlzCiAvLyAgICAgbG9vc2VseSB0eXBlZC4gYEZvcm1hdFVudHlwZWQoKWAgaXMgbm90IGEg
dGVtcGxhdGUgYW5kIGRvZXMgbm90IHBlcmZvcm0KLS8vICAgICBhbnkgY29tcGlsZS10aW1lIGNo
ZWNraW5nIG9mIHRoZSBmb3JtYXQgc3RkOjpzdHJpbmc7IGluc3RlYWQsIGl0IHJldHVybnMgYQor
Ly8gICAgIGFueSBjb21waWxlLXRpbWUgY2hlY2tpbmcgb2YgdGhlIGZvcm1hdCBzdHJpbmc7IGlu
c3RlYWQsIGl0IHJldHVybnMgYQogLy8gICAgIGJvb2xlYW4gZnJvbSBhIHJ1bnRpbWUgY2hlY2su
CiAvLwogLy8gSW4gYWRkaXRpb24sIHRoZSBgc3RyX2Zvcm1hdGAgbGlicmFyeSBwcm92aWRlcyBl
eHRlbnNpb24gcG9pbnRzIGZvcgpAQCAtODksNyArODksNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAv
LyBFeGFtcGxlOgogLy8KIC8vICAgYWJzbDo6VW50eXBlZEZvcm1hdFNwZWMgZm9ybWF0KCIlZCIp
OwotLy8gICBzdGQ6OnN0cmluZyBvdXQ7CisvLyAgIHN0cmluZyBvdXQ7CiAvLyAgIENIRUNLKGFi
c2w6OkZvcm1hdFVudHlwZWQoJm91dCwgZm9ybWF0LCB7YWJzbDo6Rm9ybWF0QXJnKDEpfSkpOwog
Y2xhc3MgVW50eXBlZEZvcm1hdFNwZWMgewogIHB1YmxpYzoKQEAgLTEzNSw3ICsxMzUsNyBAQCBz
dHJfZm9ybWF0X2ludGVybmFsOjpTdHJlYW1lZFdyYXBwZXI8VD4gRm9ybWF0U3RyZWFtZWQoY29u
c3QgVCYgdikgewogLy8gRXhhbXBsZToKIC8vCiAvLyAgIGludCBuID0gMDsKLS8vICAgc3RkOjpz
dHJpbmcgcyA9IGFic2w6OlN0ckZvcm1hdCgiJXMlZCVuIiwgImhlbGxvIiwgMTIzLAorLy8gICBz
dHJpbmcgcyA9IGFic2w6OlN0ckZvcm1hdCgiJXMlZCVuIiwgImhlbGxvIiwgMTIzLAogLy8gICAg
ICAgICAgICAgICAgICAgYWJzbDo6Rm9ybWF0Q291bnRDYXB0dXJlKCZuKSk7CiAvLyAgIEVYUEVD
VF9FUSg4LCBuKTsKIGNsYXNzIEZvcm1hdENvdW50Q2FwdHVyZSB7CkBAIC0xNTUsMTAgKzE1NSwx
MCBAQCBjbGFzcyBGb3JtYXRDb3VudENhcHR1cmUgewogCiAvLyBGb3JtYXRTcGVjCiAvLwotLy8g
VGhlIGBGb3JtYXRTcGVjYCB0eXBlIGRlZmluZXMgdGhlIG1ha2V1cCBvZiBhIGZvcm1hdCBzdGQ6
OnN0cmluZyB3aXRoaW4gdGhlCisvLyBUaGUgYEZvcm1hdFNwZWNgIHR5cGUgZGVmaW5lcyB0aGUg
bWFrZXVwIG9mIGEgZm9ybWF0IHN0cmluZyB3aXRoaW4gdGhlCiAvLyBgc3RyX2Zvcm1hdGAgbGli
cmFyeS4gWW91IHNob3VsZCBub3QgbmVlZCB0byB1c2Ugb3IgbWFuaXB1bGF0ZSB0aGlzIHR5cGUK
IC8vIGRpcmVjdGx5LiBBIGBGb3JtYXRTcGVjYCBpcyBhIHZhcmlhZGljIGNsYXNzIHRlbXBsYXRl
IHRoYXQgaXMgZXZhbHVhdGVkIGF0Ci0vLyBjb21waWxlLXRpbWUsIGFjY29yZGluZyB0byB0aGUg
Zm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2VkCisvLyBjb21w
aWxlLXRpbWUsIGFjY29yZGluZyB0byB0aGUgZm9ybWF0IHN0cmluZyBhbmQgYXJndW1lbnRzIHRo
YXQgYXJlIHBhc3NlZAogLy8gdG8gaXQuCiAvLwogLy8gRm9yIGEgYEZvcm1hdFNwZWNgIHRvIGJl
IHZhbGlkIGF0IGNvbXBpbGUtdGltZSwgaXQgbXVzdCBiZSBwcm92aWRlZCBhcwpAQCAtMTY2LDEy
ICsxNjYsMTIgQEAgY2xhc3MgRm9ybWF0Q291bnRDYXB0dXJlIHsKIC8vCiAvLyAqIEEgYGNvbnN0
ZXhwcmAgbGl0ZXJhbCBvciBgYWJzbDo6c3RyaW5nX3ZpZXdgLCB3aGljaCBpcyBob3cgaXQgbW9z
dCBvZnRlbgogLy8gICB1c2VkLgotLy8gKiBBIGBQYXJzZWRGb3JtYXRgIGluc3RhbnRpYXRpb24s
IHdoaWNoIGVuc3VyZXMgdGhlIGZvcm1hdCBzdGQ6OnN0cmluZyBpcworLy8gKiBBIGBQYXJzZWRG
b3JtYXRgIGluc3RhbnRpYXRpb24sIHdoaWNoIGVuc3VyZXMgdGhlIGZvcm1hdCBzdHJpbmcgaXMK
IC8vICAgdmFsaWQgYmVmb3JlIHVzZS4gKFNlZSBiZWxvdy4pCiAvLwogLy8gRXhhbXBsZToKIC8v
Ci0vLyAgIC8vIFByb3ZpZGVkIGFzIGEgc3RkOjpzdHJpbmcgbGl0ZXJhbC4KKy8vICAgLy8gUHJv
dmlkZWQgYXMgYSBzdHJpbmcgbGl0ZXJhbC4KIC8vICAgYWJzbDo6U3RyRm9ybWF0KCJXZWxjb21l
IHRvICVzLCBOdW1iZXIgJWQhIiwgIlRoZSBWaWxsYWdlIiwgNik7CiAvLwogLy8gICAvLyBQcm92
aWRlZCBhcyBhIGNvbnN0ZXhwciBhYnNsOjpzdHJpbmdfdmlldy4KQEAgLTE4Myw3ICsxODMsNyBA
QCBjbGFzcyBGb3JtYXRDb3VudENhcHR1cmUgewogLy8gICBhYnNsOjpQYXJzZWRGb3JtYXQ8J3Mn
LCAnZCc+IGZvcm1hdFN0cmluZygiV2VsY29tZSB0byAlcywgTnVtYmVyICVkISIpOwogLy8gICBh
YnNsOjpTdHJGb3JtYXQoZm9ybWF0U3RyaW5nLCAiVGhlVmlsbGFnZSIsIDYpOwogLy8KLS8vIEEg
Zm9ybWF0IHN0ZDo6c3RyaW5nIGdlbmVyYWxseSBmb2xsb3dzIHRoZSBQT1NJWCBzeW50YXggYXMg
dXNlZCB3aXRoaW4gdGhlIFBPU0lYCisvLyBBIGZvcm1hdCBzdHJpbmcgZ2VuZXJhbGx5IGZvbGxv
d3MgdGhlIFBPU0lYIHN5bnRheCBhcyB1c2VkIHdpdGhpbiB0aGUgUE9TSVgKIC8vIGBwcmludGZg
IHNwZWNpZmljYXRpb24uCiAvLwogLy8gKFNlZSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29u
bGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvcHJpbnRmLmh0bWwuKQpAQCAtMjIzLDcgKzIy
Myw3IEBAIGNsYXNzIEZvcm1hdENvdW50Q2FwdHVyZSB7CiAvLyAgICAgIiVwIiwgKmludCAgICAg
ICAgICAgICAgIC0+ICIweDdmZmRlYjZhZDJhNCIKIC8vCiAvLyAgICAgaW50IG4gPSAwOwotLy8g
ICAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoCisvLyAgICAgc3RyaW5nIHMgPSBh
YnNsOjpTdHJGb3JtYXQoCiAvLyAgICAgICAgICIlcyVkJW4iLCAiaGVsbG8iLCAxMjMsIGFic2w6
OkZvcm1hdENvdW50Q2FwdHVyZSgmbikpOwogLy8gICAgIEVYUEVDVF9FUSg4LCBuKTsKIC8vCkBA
IC0yMzYsNyArMjM2LDcgQEAgY2xhc3MgRm9ybWF0Q291bnRDYXB0dXJlIHsKIC8vCiAvLyBIb3dl
dmVyLCBpbiB0aGUgYHN0cl9mb3JtYXRgIGxpYnJhcnksIGEgZm9ybWF0IGNvbnZlcnNpb24gc3Bl
Y2lmaWVzIGEgYnJvYWRlcgogLy8gQysrIGNvbmNlcHR1YWwgY2F0ZWdvcnkgaW5zdGVhZCBvZiBh
biBleGFjdCB0eXBlLiBGb3IgZXhhbXBsZSwgYCVzYCBiaW5kcyB0bwotLy8gYW55IHN0ZDo6c3Ry
aW5nLWxpa2UgYXJndW1lbnQsIHNvIGBzdGQ6OnN0cmluZ2AsIGBhYnNsOjpzdHJpbmdfdmlld2As
IGFuZAorLy8gYW55IHN0cmluZy1saWtlIGFyZ3VtZW50LCBzbyBgc3RkOjpzdHJpbmdgLCBgYWJz
bDo6c3RyaW5nX3ZpZXdgLCBhbmQKIC8vIGBjb25zdCBjaGFyKmAgYXJlIGFsbCBhY2NlcHRlZC4g
TGlrZXdpc2UsIGAlZGAgYWNjZXB0cyBhbnkgaW50ZWdlci1saWtlCiAvLyBhcmd1bWVudCwgZXRj
LgogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdXNpbmcgRm9ybWF0U3BlYyA9CiAvLwogLy8gQSBgUGFy
c2VkRm9ybWF0YCBpcyBhIGNsYXNzIHRlbXBsYXRlIHJlcHJlc2VudGluZyBhIHByZXBhcnNlZCBg
Rm9ybWF0U3BlY2AsCiAvLyB3aXRoIHRlbXBsYXRlIGFyZ3VtZW50cyBzcGVjaWZ5aW5nIHRoZSBj
b252ZXJzaW9uIGNoYXJhY3RlcnMgdXNlZCB3aXRoaW4gdGhlCi0vLyBmb3JtYXQgc3RkOjpzdHJp
bmcuIFN1Y2ggY2hhcmFjdGVycyBtdXN0IGJlIHZhbGlkIGZvcm1hdCB0eXBlIHNwZWNpZmllcnMs
IGFuZAorLy8gZm9ybWF0IHN0cmluZy4gU3VjaCBjaGFyYWN0ZXJzIG11c3QgYmUgdmFsaWQgZm9y
bWF0IHR5cGUgc3BlY2lmaWVycywgYW5kCiAvLyB0aGVzZSB0eXBlIHNwZWNpZmllcnMgYXJlIGNo
ZWNrZWQgYXQgY29tcGlsZS10aW1lLgogLy8KIC8vIEluc3RhbmNlcyBvZiBgUGFyc2VkRm9ybWF0
YCBjYW4gYmUgY3JlYXRlZCwgY29waWVkLCBhbmQgcmV1c2VkIHRvIHNwZWVkIHVwCkBAIC0yNzUs
MjYgKzI3NSwyNiBAQCB1c2luZyBQYXJzZWRGb3JtYXQgPSBzdHJfZm9ybWF0X2ludGVybmFsOjpF
eHRlbmRlZFBhcnNlZEZvcm1hdDwKIAogLy8gU3RyRm9ybWF0KCkKIC8vCi0vLyBSZXR1cm5zIGEg
YHN0cmluZ2AgZ2l2ZW4gYSBgcHJpbnRmKClgLXN0eWxlIGZvcm1hdCBzdGQ6OnN0cmluZyBhbmQg
emVybyBvciBtb3JlCisvLyBSZXR1cm5zIGEgYHN0cmluZ2AgZ2l2ZW4gYSBgcHJpbnRmKClgLXN0
eWxlIGZvcm1hdCBzdHJpbmcgYW5kIHplcm8gb3IgbW9yZQogLy8gYWRkaXRpb25hbCBhcmd1bWVu
dHMuIFVzZSBpdCBhcyB5b3Ugd291bGQgYHNwcmludGYoKWAuIGBTdHJGb3JtYXQoKWAgaXMgdGhl
CiAvLyBwcmltYXJ5IGZvcm1hdHRpbmcgZnVuY3Rpb24gd2l0aGluIHRoZSBgc3RyX2Zvcm1hdGAg
bGlicmFyeSwgYW5kIHNob3VsZCBiZQogLy8gdXNlZCBpbiBtb3N0IGNhc2VzIHdoZXJlIHlvdSBu
ZWVkIHR5cGUtc2FmZSBjb252ZXJzaW9uIG9mIHR5cGVzIGludG8KIC8vIGZvcm1hdHRlZCBzdHJp
bmdzLgogLy8KLS8vIFRoZSBmb3JtYXQgc3RkOjpzdHJpbmcgZ2VuZXJhbGx5IGNvbnNpc3RzIG9m
IG9yZGluYXJ5IGNoYXJhY3RlciBkYXRhIGFsb25nIHdpdGgKKy8vIFRoZSBmb3JtYXQgc3RyaW5n
IGdlbmVyYWxseSBjb25zaXN0cyBvZiBvcmRpbmFyeSBjaGFyYWN0ZXIgZGF0YSBhbG9uZyB3aXRo
CiAvLyBvbmUgb3IgbW9yZSBmb3JtYXQgY29udmVyc2lvbiBzcGVjaWZpZXJzIChkZW5vdGVkIGJ5
IHRoZSBgJWAgY2hhcmFjdGVyKS4KLS8vIE9yZGluYXJ5IGNoYXJhY3RlciBkYXRhIGlzIHJldHVy
bmVkIHVuY2hhbmdlZCBpbnRvIHRoZSByZXN1bHQgc3RkOjpzdHJpbmcsIHdoaWxlCisvLyBPcmRp
bmFyeSBjaGFyYWN0ZXIgZGF0YSBpcyByZXR1cm5lZCB1bmNoYW5nZWQgaW50byB0aGUgcmVzdWx0
IHN0cmluZywgd2hpbGUKIC8vIGVhY2ggY29udmVyc2lvbiBzcGVjaWZpY2F0aW9uIHBlcmZvcm1z
IGEgdHlwZSBzdWJzdGl0dXRpb24gZnJvbQogLy8gYFN0ckZvcm1hdCgpYCdzIG90aGVyIGFyZ3Vt
ZW50cy4gU2VlIHRoZSBjb21tZW50cyBmb3IgYEZvcm1hdFNwZWNgIGZvciBmdWxsCi0vLyBpbmZv
cm1hdGlvbiBvbiB0aGUgbWFrZXVwIG9mIHRoaXMgZm9ybWF0IHN0ZDo6c3RyaW5nLgorLy8gaW5m
b3JtYXRpb24gb24gdGhlIG1ha2V1cCBvZiB0aGlzIGZvcm1hdCBzdHJpbmcuCiAvLwogLy8gRXhh
bXBsZToKIC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJGb3JtYXQoCisvLyAgIHN0
cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KAogLy8gICAgICAgIldlbGNvbWUgdG8gJXMsIE51bWJl
ciAlZCEiLCAiVGhlIFZpbGxhZ2UiLCA2KTsKIC8vICAgRVhQRUNUX0VRKCJXZWxjb21lIHRvIFRo
ZSBWaWxsYWdlLCBOdW1iZXIgNiEiLCBzKTsKIC8vCi0vLyBSZXR1cm5zIGFuIGVtcHR5IHN0ZDo6
c3RyaW5nIGluIGNhc2Ugb2YgZXJyb3IuCisvLyBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpbiBj
YXNlIG9mIGVycm9yLgogdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiBBQlNMX01VU1RfVVNF
X1JFU1VMVCBzdGQ6OnN0cmluZyBTdHJGb3JtYXQoY29uc3QgRm9ybWF0U3BlYzxBcmdzLi4uPiYg
Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBcmdz
Ji4uLiBhcmdzKSB7CkBAIC0zMDUsMTMgKzMwNSwxMyBAQCBBQlNMX01VU1RfVVNFX1JFU1VMVCBz
dGQ6OnN0cmluZyBTdHJGb3JtYXQoY29uc3QgRm9ybWF0U3BlYzxBcmdzLi4uPiYgZm9ybWF0LAog
CiAvLyBTdHJBcHBlbmRGb3JtYXQoKQogLy8KLS8vIEFwcGVuZHMgdG8gYSBgZHN0YCBzdGQ6OnN0
cmluZyBnaXZlbiBhIGZvcm1hdCBzdGQ6OnN0cmluZywgYW5kIHplcm8gb3IgbW9yZSBhZGRpdGlv
bmFsCisvLyBBcHBlbmRzIHRvIGEgYGRzdGAgc3RyaW5nIGdpdmVuIGEgZm9ybWF0IHN0cmluZywg
YW5kIHplcm8gb3IgbW9yZSBhZGRpdGlvbmFsCiAvLyBhcmd1bWVudHMsIHJldHVybmluZyBgKmRz
dGAgYXMgYSBjb252ZW5pZW5jZSBmb3IgY2hhaW5pbmcgcHVycG9zZXMuIEFwcGVuZHMKIC8vIG5v
dGhpbmcgaW4gY2FzZSBvZiBlcnJvciAoYnV0IHBvc3NpYmx5IGFsdGVycyBpdHMgY2FwYWNpdHkp
LgogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBzdGQ6OnN0cmluZyBvcmlnKCJGb3IgZXhhbXBs
ZSBQSSBpcyBhcHByb3hpbWF0ZWx5ICIpOworLy8gICBzdHJpbmcgb3JpZygiRm9yIGV4YW1wbGUg
UEkgaXMgYXBwcm94aW1hdGVseSAiKTsKIC8vICAgc3RkOjpjb3V0IDw8IFN0ckFwcGVuZEZvcm1h
dCgmb3JpZywgIiUxMi42ZiIsIDMuMTQpOwogdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiBz
dGQ6OnN0cmluZyYgU3RyQXBwZW5kRm9ybWF0KHN0ZDo6c3RyaW5nKiBkc3QsIGNvbnN0IEZvcm1h
dFNwZWM8QXJncy4uLj4mIGZvcm1hdCwKQEAgLTMyMyw3ICszMjMsNyBAQCBzdGQ6OnN0cmluZyYg
U3RyQXBwZW5kRm9ybWF0KHN0ZDo6c3RyaW5nKiBkc3QsIGNvbnN0IEZvcm1hdFNwZWM8QXJncy4u
Lj4mIGZvcm1hdAogCiAvLyBTdHJlYW1Gb3JtYXQoKQogLy8KLS8vIFdyaXRlcyB0byBhbiBvdXRw
dXQgc3RyZWFtIGdpdmVuIGEgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCB6ZXJvIG9yIG1vcmUgYXJn
dW1lbnRzLAorLy8gV3JpdGVzIHRvIGFuIG91dHB1dCBzdHJlYW0gZ2l2ZW4gYSBmb3JtYXQgc3Ry
aW5nIGFuZCB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAogLy8gZ2VuZXJhbGx5IGluIGEgbWFubmVy
IHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBzdHJlYW1pbmcgdGhlIHJlc3VsdCBvZgogLy8g
YGFic2w6OiBTdHJGb3JtYXQoKWAuIFRoZSByZXR1cm5lZCBvYmplY3QgbXVzdCBiZSBzdHJlYW1l
ZCBiZWZvcmUgdGhlIGZ1bGwKIC8vIGV4cHJlc3Npb24gZW5kcy4KQEAgLTM0MSw3ICszNDEsNyBA
QCBBQlNMX01VU1RfVVNFX1JFU1VMVCBzdHJfZm9ybWF0X2ludGVybmFsOjpTdHJlYW1hYmxlIFN0
cmVhbUZvcm1hdCgKIAogLy8gUHJpbnRGKCkKIC8vCi0vLyBXcml0ZXMgdG8gc3Rkb3V0IGdpdmVu
IGEgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLiBUaGlzCisv
LyBXcml0ZXMgdG8gc3Rkb3V0IGdpdmVuIGEgZm9ybWF0IHN0cmluZyBhbmQgemVybyBvciBtb3Jl
IGFyZ3VtZW50cy4gVGhpcwogLy8gZnVuY3Rpb24gaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQg
dG8gYHN0ZDo6cHJpbnRmKClgIChhbmQgdHlwZS1zYWZlKTsKIC8vIHByZWZlciBgYWJzbDo6UHJp
bnRGKClgIG92ZXIgYHN0ZDo6cHJpbnRmKClgLgogLy8KQEAgLTM2MSwxNCArMzYxLDE0IEBAIGlu
dCBQcmludEYoY29uc3QgRm9ybWF0U3BlYzxBcmdzLi4uPiYgZm9ybWF0LCBjb25zdCBBcmdzJi4u
LiBhcmdzKSB7CiAKIC8vIEZQcmludEYoKQogLy8KLS8vIFdyaXRlcyB0byBhIGZpbGUgZ2l2ZW4g
YSBmb3JtYXQgc3RkOjpzdHJpbmcgYW5kIHplcm8gb3IgbW9yZSBhcmd1bWVudHMuIFRoaXMKKy8v
IFdyaXRlcyB0byBhIGZpbGUgZ2l2ZW4gYSBmb3JtYXQgc3RyaW5nIGFuZCB6ZXJvIG9yIG1vcmUg
YXJndW1lbnRzLiBUaGlzCiAvLyBmdW5jdGlvbiBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0
byBgc3RkOjpmcHJpbnRmKClgIChhbmQgdHlwZS1zYWZlKTsKIC8vIHByZWZlciBgYWJzbDo6RlBy
aW50RigpYCBvdmVyIGBzdGQ6OmZwcmludGYoKWAuCiAvLwogLy8gRXhhbXBsZToKIC8vCiAvLyAg
IHN0ZDo6c3RyaW5nX3ZpZXcgcyA9ICJVbGFhbmJhYXRhciI7Ci0vLyAgIGFic2w6OkZQcmludEYo
IlRoZSBjYXBpdGFsIG9mIE1vbmdvbGlhIGlzICVzIiwgcyk7CisvLyAgIGFic2w6OkZQcmludEYo
c3Rkb3V0LCAiVGhlIGNhcGl0YWwgb2YgTW9uZ29saWEgaXMgJXMiLCBzKTsKIC8vCiAvLyAgIE91
dHB1dHM6ICJUaGUgY2FwaXRhbCBvZiBNb25nb2xpYSBpcyBVbGFhbmJhYXRhciIKIC8vCkBAIC0z
ODIsNyArMzgyLDcgQEAgaW50IEZQcmludEYoc3RkOjpGSUxFKiBvdXRwdXQsIGNvbnN0IEZvcm1h
dFNwZWM8QXJncy4uLj4mIGZvcm1hdCwKIAogLy8gU05QcmludEYoKQogLy8KLS8vIFdyaXRlcyB0
byBhIHNpemVkIGJ1ZmZlciBnaXZlbiBhIGZvcm1hdCBzdGQ6OnN0cmluZyBhbmQgemVybyBvciBt
b3JlIGFyZ3VtZW50cy4KKy8vIFdyaXRlcyB0byBhIHNpemVkIGJ1ZmZlciBnaXZlbiBhIGZvcm1h
dCBzdHJpbmcgYW5kIHplcm8gb3IgbW9yZSBhcmd1bWVudHMuCiAvLyBUaGlzIGZ1bmN0aW9uIGlz
IGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIGBzdGQ6OnNucHJpbnRmKClgIChhbmQKIC8vIHR5
cGUtc2FmZSk7IHByZWZlciBgYWJzbDo6U05QcmludEYoKWAgb3ZlciBgc3RkOjpzbnByaW50Zigp
YC4KIC8vCkBAIC00MzAsMTQgKzQzMCwxNCBAQCBjbGFzcyBGb3JtYXRSYXdTaW5rIHsKIAogLy8g
Rm9ybWF0KCkKIC8vCi0vLyBXcml0ZXMgYSBmb3JtYXR0ZWQgc3RkOjpzdHJpbmcgdG8gYW4gYXJi
aXRyYXJ5IHNpbmsgb2JqZWN0IChpbXBsZW1lbnRpbmcgdGhlCi0vLyBgYWJzbDo6Rm9ybWF0UmF3
U2lua2AgaW50ZXJmYWNlKSwgdXNpbmcgYSBmb3JtYXQgc3RkOjpzdHJpbmcgYW5kIHplcm8gb3Ig
bW9yZQorLy8gV3JpdGVzIGEgZm9ybWF0dGVkIHN0cmluZyB0byBhbiBhcmJpdHJhcnkgc2luayBv
YmplY3QgKGltcGxlbWVudGluZyB0aGUKKy8vIGBhYnNsOjpGb3JtYXRSYXdTaW5rYCBpbnRlcmZh
Y2UpLCB1c2luZyBhIGZvcm1hdCBzdHJpbmcgYW5kIHplcm8gb3IgbW9yZQogLy8gYWRkaXRpb25h
bCBhcmd1bWVudHMuCiAvLwogLy8gQnkgZGVmYXVsdCwgYHN0cmluZ2AgYW5kIGBzdGQ6Om9zdHJl
YW1gIGFyZSBzdXBwb3J0ZWQgYXMgZGVzdGluYXRpb24gb2JqZWN0cy4KIC8vCiAvLyBgYWJzbDo6
Rm9ybWF0KClgIGlzIGEgZ2VuZXJpYyB2ZXJzaW9uIG9mIGBhYnNsOjpTdHJGb3JtYXQoKSwgZm9y
IGN1c3RvbQotLy8gc2lua3MuIFRoZSBmb3JtYXQgc3RkOjpzdHJpbmcsIGxpa2UgZm9ybWF0IHN0
cmluZ3MgZm9yIGBTdHJGb3JtYXQoKWAsIGlzIGNoZWNrZWQKKy8vIHNpbmtzLiBUaGUgZm9ybWF0
IHN0cmluZywgbGlrZSBmb3JtYXQgc3RyaW5ncyBmb3IgYFN0ckZvcm1hdCgpYCwgaXMgY2hlY2tl
ZAogLy8gYXQgY29tcGlsZS10aW1lLgogLy8KIC8vIE9uIGZhaWx1cmUsIHRoaXMgZnVuY3Rpb24g
cmV0dXJucyBgZmFsc2VgIGFuZCB0aGUgc3RhdGUgb2YgdGhlIHNpbmsgaXMKQEAgLTQ2MywxMyAr
NDYzLDEzIEBAIHVzaW5nIEZvcm1hdEFyZyA9IHN0cl9mb3JtYXRfaW50ZXJuYWw6OkZvcm1hdEFy
Z0ltcGw7CiAKIC8vIEZvcm1hdFVudHlwZWQoKQogLy8KLS8vIFdyaXRlcyBhIGZvcm1hdHRlZCBz
dGQ6OnN0cmluZyB0byBhbiBhcmJpdHJhcnkgc2luayBvYmplY3QgKGltcGxlbWVudGluZyB0aGUK
Ky8vIFdyaXRlcyBhIGZvcm1hdHRlZCBzdHJpbmcgdG8gYW4gYXJiaXRyYXJ5IHNpbmsgb2JqZWN0
IChpbXBsZW1lbnRpbmcgdGhlCiAvLyBgYWJzbDo6Rm9ybWF0UmF3U2lua2AgaW50ZXJmYWNlKSwg
dXNpbmcgYW4gYFVudHlwZWRGb3JtYXRTcGVjYCBhbmQgemVybyBvcgogLy8gbW9yZSBhZGRpdGlv
bmFsIGFyZ3VtZW50cy4KIC8vCiAvLyBUaGlzIGZ1bmN0aW9uIGFjdHMgYXMgdGhlIG1vc3QgZ2Vu
ZXJpYyBmb3JtYXR0aW5nIGZ1bmN0aW9uIGluIHRoZQogLy8gYHN0cl9mb3JtYXRgIGxpYnJhcnku
IFRoZSBjYWxsZXIgcHJvdmlkZXMgYSByYXcgc2luaywgYW4gdW5jaGVja2VkIGZvcm1hdAotLy8g
c3RkOjpzdHJpbmcsIGFuZCAodXN1YWxseSkgYSBydW50aW1lIHNwZWNpZmllZCBsaXN0IG9mIGFy
Z3VtZW50czsgbm8gY29tcGlsZS10aW1lCisvLyBzdHJpbmcsIGFuZCAodXN1YWxseSkgYSBydW50
aW1lIHNwZWNpZmllZCBsaXN0IG9mIGFyZ3VtZW50czsgbm8gY29tcGlsZS10aW1lCiAvLyBjaGVj
a2luZyBvZiBmb3JtYXR0aW5nIGlzIHBlcmZvcm1lZCB3aXRoaW4gdGhpcyBmdW5jdGlvbi4gQXMg
YSByZXN1bHQsIGEKIC8vIGNhbGxlciBzaG91bGQgY2hlY2sgdGhlIHJldHVybiB2YWx1ZSB0byB2
ZXJpZnkgdGhhdCBubyBlcnJvciBvY2N1cnJlZC4KIC8vIE9uIGZhaWx1cmUsIHRoaXMgZnVuY3Rp
b24gcmV0dXJucyBgZmFsc2VgIGFuZCB0aGUgc3RhdGUgb2YgdGhlIHNpbmsgaXMKQEAgLTQ4Myw5
ICs0ODMsOSBAQCB1c2luZyBGb3JtYXRBcmcgPSBzdHJfZm9ybWF0X2ludGVybmFsOjpGb3JtYXRB
cmdJbXBsOwogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBzdGQ6Om9wdGlvbmFsPHN0ZDo6c3Ry
aW5nPiBGb3JtYXREeW5hbWljKGNvbnN0IHN0ZDo6c3RyaW5nJiBpbl9mb3JtYXQsCi0vLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3RvcjxzdGQ6OnN0cmlu
Zz4mIGluX2FyZ3MpIHsKLS8vICAgICBzdGQ6OnN0cmluZyBvdXQ7CisvLyAgIHN0ZDo6b3B0aW9u
YWw8c3RyaW5nPiBGb3JtYXREeW5hbWljKGNvbnN0IHN0cmluZyYgaW5fZm9ybWF0LAorLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3I8c3RyaW5nPiYg
aW5fYXJncykgeworLy8gICAgIHN0cmluZyBvdXQ7CiAvLyAgICAgc3RkOjp2ZWN0b3I8YWJzbDo6
Rm9ybWF0QXJnPiBhcmdzOwogLy8gICAgIGZvciAoY29uc3QgYXV0byYgdiA6IGluX2FyZ3MpIHsK
IC8vICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0aGF0ICd2JyBpcyBhIHJlZmVyZW5jZSB0byB0
aGUgb2JqZWN0cyBpbiBpbl9hcmdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfZm9y
bWF0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXRfdGVzdC5jYwppbmRleCBmZWQ3
NWZhZmI1YzY1YzExYjkyZjhlZGJjYTUzOGE0YWNkZDExNzdjLi5hYTE0ZTIxMTcwOWFiNzM5Mzc5
NmEzMjA4MzBjNzU1OTE2YWNjODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3Jt
YXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXRfdGVzdC5jYwpAQCAtMzkx
LDcgKzM5MSw3IEBAIFRFU1QoU3RyRm9ybWF0LCBCZWhhdmVzQXNEb2N1bWVudGVkKSB7CiAjZW5k
aWYKIAogICAvLyBPdGhlciBjb252ZXJzaW9uCi0gIGludDY0X3QgdmFsdWUgPSAweDdmZmRlYjY7
CisgIGludDY0X3QgdmFsdWUgPSAweDdmZmRlYjQ7CiAgIGF1dG8gcHRyX3ZhbHVlID0gc3RhdGlj
X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSk7CiAgIGNvbnN0IGludCYgc29tZXRoaW5nID0gKnJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50Kj4ocHRyX3ZhbHVlKTsKICAgRVhQRUNUX0VRKFN0ckZvcm1h
dCgiJXAiLCAmc29tZXRoaW5nKSwgU3RyRm9ybWF0KCIweCV4IiwgcHRyX3ZhbHVlKSk7CkBAIC02
MDEsMyArNjAxLDM5IEBAIFRFU1RfRihQYXJzZWRGb3JtYXRUZXN0LCBSZWdyZXNzaW9uTWl4UG9z
aXRpb25hbCkgewogCiB9ICAvLyBuYW1lc3BhY2UKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCisKKy8v
IFNvbWUgY29kZWdlbiB0aHVua3MgdGhhdCB3ZSBjYW4gdXNlIHRvIGVhc2lseSBkdW1wIHRoZSBn
ZW5lcmF0ZWQgYXNzZW1ibHkgZm9yCisvLyBkaWZmZXJlbnQgU3RyRm9ybWF0IGNhbGxzLgorCitp
bmxpbmUgc3RkOjpzdHJpbmcgQ29kZWdlbkFic2xTdHJGb3JtYXRJbnQoaW50IGkpIHsKKyAgcmV0
dXJuIGFic2w6OlN0ckZvcm1hdCgiJWQiLCBpKTsKK30KKworaW5saW5lIHN0ZDo6c3RyaW5nIENv
ZGVnZW5BYnNsU3RyRm9ybWF0SW50U3RyaW5nSW50NjQoaW50IGksIGNvbnN0IHN0ZDo6c3RyaW5n
JiBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDY0X3QgaTY0KSB7CisgIHJldHVybiBhYnNsOjpTdHJGb3JtYXQoIiVkICVzICVkIiwgaSwgcywg
aTY0KTsKK30KKworaW5saW5lIHZvaWQgQ29kZWdlbkFic2xTdHJBcHBlbmRGb3JtYXRJbnQoc3Rk
OjpzdHJpbmcqIG91dCwgaW50IGkpIHsKKyAgYWJzbDo6U3RyQXBwZW5kRm9ybWF0KG91dCwgIiVk
IiwgaSk7Cit9CisKK2lubGluZSB2b2lkIENvZGVnZW5BYnNsU3RyQXBwZW5kRm9ybWF0SW50U3Ry
aW5nSW50NjQoc3RkOjpzdHJpbmcqIG91dCwgaW50IGksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IGk2NCkgeworICBhYnNsOjpTdHJBcHBlbmRGb3JtYXQob3V0LCAiJWQgJXMgJWQiLCBpLCBzLCBp
NjQpOworfQorCithdXRvIGFic2xfaW50ZXJuYWxfc3RyX2Zvcm1hdF9mb3JjZV9jb2RlZ2VuX2Z1
bmNzID0gc3RkOjptYWtlX3R1cGxlKAorICAgIENvZGVnZW5BYnNsU3RyRm9ybWF0SW50LCBDb2Rl
Z2VuQWJzbFN0ckZvcm1hdEludFN0cmluZ0ludDY0LAorICAgIENvZGVnZW5BYnNsU3RyQXBwZW5k
Rm9ybWF0SW50LCBDb2RlZ2VuQWJzbFN0ckFwcGVuZEZvcm1hdEludFN0cmluZ0ludDY0KTsKKwor
Ym9vbCBhYnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29kZWdlbl9hbHdheXNfZmFsc2U7
CisvLyBGb3JjZSB0aGUgY29tcGlsZXIgdG8gZ2VuZXJhdGUgdGhlIGZ1bmN0aW9ucyBieSBtYWtp
bmcgaXQgbG9vayBsaWtlIHdlCisvLyBlc2NhcGUgdGhlIGZ1bmN0aW9uIHBvaW50ZXJzLgorLy8g
SXQgY2FuJ3Qgc3RhdGljYWxseSBrbm93IHRoYXQKKy8vIGFic2xfaW50ZXJuYWxfc3RyX2Zvcm1h
dF9mb3JjZV9jb2RlZ2VuX2Fsd2F5c19mYWxzZSBpcyBub3QgY2hhbmdlZCBieSBzb21lb25lCisv
LyBlbHNlLgorYm9vbCBhYnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29kZWdlbiA9Cisg
ICAgYWJzbF9pbnRlcm5hbF9zdHJfZm9ybWF0X2ZvcmNlX2NvZGVnZW5fYWx3YXlzX2ZhbHNlICYm
CisgICAgcHJpbnRmKCIlcCIsICZhYnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29kZWdl
bl9mdW5jcykgPT0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW4uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3Mvc3RyX2pvaW4uaAppbmRleCBiZDRkMGUxZDkzMjRjYzcyOTIxNDQ0OTkzNWI1
NzMzN2E2NzE2ZmI3Li5mOTYxMWFkM2I0N2Q3MmQwZDk5MmJkMmJlZjkwNzVjODYwOGZkMjVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9z
dHJfam9pbi5oCkBAIC0xOCwxMCArMTgsMTAgQEAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAv
LwogLy8gVGhpcyBoZWFkZXIgZmlsZSBjb250YWlucyBmdW5jdGlvbnMgZm9yIGpvaW5pbmcgYSBy
YW5nZSBvZiBlbGVtZW50cyBhbmQKLS8vIHJldHVybmluZyB0aGUgcmVzdWx0IGFzIGEgc3RkOjpz
dHJpbmcuIFN0ckpvaW4gb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVkIGJ5IHBhc3NpbmcKLS8vIGEg
cmFuZ2UsIGEgc2VwYXJhdG9yIHN0ZDo6c3RyaW5nIHRvIHVzZSBiZXR3ZWVuIHRoZSBlbGVtZW50
cyBqb2luZWQsIGFuZCBhbgorLy8gcmV0dXJuaW5nIHRoZSByZXN1bHQgYXMgYSBzdHJpbmcuIFN0
ckpvaW4gb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVkIGJ5IHBhc3NpbmcKKy8vIGEgcmFuZ2UsIGEg
c2VwYXJhdG9yIHN0cmluZyB0byB1c2UgYmV0d2VlbiB0aGUgZWxlbWVudHMgam9pbmVkLCBhbmQg
YW4KIC8vIG9wdGlvbmFsIEZvcm1hdHRlciByZXNwb25zaWJsZSBmb3IgY29udmVydGluZyBlYWNo
IGFyZ3VtZW50IGluIHRoZSByYW5nZSB0byBhCi0vLyBzdGQ6OnN0cmluZy4gSWYgb21pdHRlZCwg
YSBkZWZhdWx0IGBBbHBoYU51bUZvcm1hdHRlcigpYCBpcyBjYWxsZWQgb24gdGhlIGVsZW1lbnRz
CisvLyBzdHJpbmcuIElmIG9taXR0ZWQsIGEgZGVmYXVsdCBgQWxwaGFOdW1Gb3JtYXR0ZXIoKWAg
aXMgY2FsbGVkIG9uIHRoZSBlbGVtZW50cwogLy8gdG8gYmUgam9pbmVkLCB1c2luZyB0aGUgc2Ft
ZSBmb3JtYXR0aW5nIHRoYXQgYGFic2w6OlN0ckNhdCgpYCB1c2VzLiBUaGlzCiAvLyBwYWNrYWdl
IGRlZmluZXMgYSBudW1iZXIgb2YgZGVmYXVsdCBmb3JtYXR0ZXJzLCBhbmQgeW91IGNhbiBkZWZp
bmUgeW91ciBvd24KIC8vIGltcGxlbWVudGF0aW9ucy4KQEAgLTI5LDcgKzI5LDcgQEAKIC8vIFJh
bmdlcyBhcmUgc3BlY2lmaWVkIGJ5IHBhc3NpbmcgYSBjb250YWluZXIgd2l0aCBgc3RkOjpiZWdp
bigpYCBhbmQKIC8vIGBzdGQ6OmVuZCgpYCBpdGVyYXRvcnMsIGNvbnRhaW5lci1zcGVjaWZpYyBg
YmVnaW4oKWAgYW5kIGBlbmQoKWAgaXRlcmF0b3JzLCBhCiAvLyBicmFjZS1pbml0aWFsaXplZCBg
c3RkOjppbml0aWFsaXplcl9saXN0YCwgb3IgYSBgc3RkOjp0dXBsZWAgb2YgaGV0ZXJvZ2VuZW91
cwotLy8gb2JqZWN0cy4gVGhlIHNlcGFyYXRvciBzdGQ6OnN0cmluZyBpcyBzcGVjaWZpZWQgYXMg
YW4gYGFic2w6OnN0cmluZ192aWV3YC4KKy8vIG9iamVjdHMuIFRoZSBzZXBhcmF0b3Igc3RyaW5n
IGlzIHNwZWNpZmllZCBhcyBhbiBgYWJzbDo6c3RyaW5nX3ZpZXdgLgogLy8KIC8vIEJlY2F1c2Ug
dGhlIGRlZmF1bHQgZm9ybWF0dGVyIHVzZXMgdGhlIGBhYnNsOjpBbHBoYU51bWAgY2xhc3MsCiAv
LyBgYWJzbDo6U3RySm9pbigpYCwgbGlrZSBgYWJzbDo6U3RyQ2F0KClgLCB3aWxsIHdvcmsgb3V0
LW9mLXRoZS1ib3ggb24KQEAgLTM3LDggKzM3LDggQEAKIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8v
ICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSB7ImZvbyIsICJiYXIiLCAiYmF6In07Ci0v
LyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CisvLyAgIHN0ZDo6dmVj
dG9yPHN0cmluZz4gdiA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKKy8vICAgc3RyaW5nIHMgPSBh
YnNsOjpTdHJKb2luKHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiZm9vLWJhci1iYXoiLCBzKTsK
IC8vCiAvLyBTZWUgY29tbWVudHMgb24gdGhlIGBhYnNsOjpTdHJKb2luKClgIGZ1bmN0aW9uIGZv
ciBtb3JlIGV4YW1wbGVzLgpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgPGl0ZXJhdG9yPgog
I2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgpA
QCAtNjUsMTYgKzY2LDE2IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAvLwogLy8gQSBGb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvYmplY3QgdGhhdCBpcyByZXNw
b25zaWJsZSBmb3IgZm9ybWF0dGluZyBpdHMKLS8vIGFyZ3VtZW50IGFzIGEgc3RkOjpzdHJpbmcg
YW5kIGFwcGVuZGluZyBpdCB0byBhIGdpdmVuIG91dHB1dCBzdGQ6OnN0cmluZy4gRm9ybWF0dGVy
cworLy8gYXJndW1lbnQgYXMgYSBzdHJpbmcgYW5kIGFwcGVuZGluZyBpdCB0byBhIGdpdmVuIG91
dHB1dCBzdHJpbmcuIEZvcm1hdHRlcnMKIC8vIG1heSBiZSBpbXBsZW1lbnRlZCBhcyBmdW5jdGlv
biBvYmplY3RzLCBsYW1iZGFzLCBvciBub3JtYWwgZnVuY3Rpb25zLiBZb3UgbWF5CiAvLyBwcm92
aWRlIHlvdXIgb3duIEZvcm1hdHRlciB0byBlbmFibGUgYGFic2w6OlN0ckpvaW4oKWAgdG8gd29y
ayB3aXRoIGFyYml0cmFyeQogLy8gdHlwZXMuCiAvLwogLy8gVGhlIGZvbGxvd2luZyBpcyBhbiBl
eGFtcGxlIG9mIGEgY3VzdG9tIEZvcm1hdHRlciB0aGF0IHNpbXBseSB1c2VzCi0vLyBgc3RkOjp0
b19zdHJpbmcoKWAgdG8gZm9ybWF0IGFuIGludGVnZXIgYXMgYSBzdGQ6OnN0cmluZy4KKy8vIGBz
dGQ6OnRvX3N0cmluZygpYCB0byBmb3JtYXQgYW4gaW50ZWdlciBhcyBhIHN0cmluZy4KIC8vCiAv
LyAgIHN0cnVjdCBNeUZvcm1hdHRlciB7Ci0vLyAgICAgdm9pZCBvcGVyYXRvcigpKHN0ZDo6c3Ry
aW5nKiBvdXQsIGludCBpKSBjb25zdCB7CisvLyAgICAgdm9pZCBvcGVyYXRvcigpKHN0cmluZyog
b3V0LCBpbnQgaSkgY29uc3QgewogLy8gICAgICAgb3V0LT5hcHBlbmQoc3RkOjp0b19zdHJpbmco
aSkpOwogLy8gICAgIH0KIC8vICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgbmFtZXNwYWNlIGFic2wg
ewogLy8gYXJndW1lbnQgdG8gYGFic2w6OlN0ckpvaW4oKWA6CiAvLwogLy8gICBzdGQ6OnZlY3Rv
cjxpbnQ+IHYgPSB7MSwgMiwgMywgNH07Ci0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJK
b2luKHYsICItIiwgTXlGb3JtYXR0ZXIoKSk7CisvLyAgIHN0cmluZyBzID0gYWJzbDo6U3RySm9p
bih2LCAiLSIsIE15Rm9ybWF0dGVyKCkpOwogLy8gICBFWFBFQ1RfRVEoIjEtMi0zLTQiLCBzKTsK
IC8vCiAvLyBUaGUgZm9sbG93aW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXJlIHByb3ZpZGVkIHdp
dGhpbiB0aGlzIGZpbGU6CkBAIC0xNTUsMTAgKzE1NiwxMCBAQCBEZXJlZmVyZW5jZUZvcm1hdHRl
cigpIHsKIC8vIFN0ckpvaW4oKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0vLyBKb2lu
cyBhIHJhbmdlIG9mIGVsZW1lbnRzIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgYSBzdGQ6OnN0
cmluZy4KLS8vIGBhYnNsOjpTdHJKb2luKClgIHRha2VzIGEgcmFuZ2UsIGEgc2VwYXJhdG9yIHN0
ZDo6c3RyaW5nIHRvIHVzZSBiZXR3ZWVuIHRoZQorLy8gSm9pbnMgYSByYW5nZSBvZiBlbGVtZW50
cyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIGEgc3RyaW5nLgorLy8gYGFic2w6OlN0ckpvaW4o
KWAgdGFrZXMgYSByYW5nZSwgYSBzZXBhcmF0b3Igc3RyaW5nIHRvIHVzZSBiZXR3ZWVuIHRoZQog
Ly8gZWxlbWVudHMgam9pbmVkLCBhbmQgYW4gb3B0aW9uYWwgRm9ybWF0dGVyIHJlc3BvbnNpYmxl
IGZvciBjb252ZXJ0aW5nIGVhY2gKLS8vIGFyZ3VtZW50IGluIHRoZSByYW5nZSB0byBhIHN0ZDo6
c3RyaW5nLgorLy8gYXJndW1lbnQgaW4gdGhlIHJhbmdlIHRvIGEgc3RyaW5nLgogLy8KIC8vIElm
IG9taXR0ZWQsIHRoZSBkZWZhdWx0IGBBbHBoYU51bUZvcm1hdHRlcigpYCBpcyBjYWxsZWQgb24g
dGhlIGVsZW1lbnRzIHRvIGJlCiAvLyBqb2luZWQuCkBAIC0xNjYsMjIgKzE2NywyMiBAQCBEZXJl
ZmVyZW5jZUZvcm1hdHRlcigpIHsKIC8vIEV4YW1wbGUgMToKIC8vICAgLy8gSm9pbnMgYSBjb2xs
ZWN0aW9uIG9mIHN0cmluZ3MuIFRoaXMgcGF0dGVybiBhbHNvIHdvcmtzIHdpdGggYSBjb2xsZWN0
aW9uCiAvLyAgIC8vIG9mIGBhYnNsOjpzdHJpbmdfdmlld2Agb3IgZXZlbiBgY29uc3QgY2hhcipg
LgotLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IHsiZm9vIiwgImJhciIsICJiYXoi
fTsKLS8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3Rk
Ojp2ZWN0b3I8c3RyaW5nPiB2ID0geyJmb28iLCAiYmFyIiwgImJheiJ9OworLy8gICBzdHJpbmcg
cyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCJmb28tYmFyLWJheiIs
IHMpOwogLy8KIC8vIEV4YW1wbGUgMjoKIC8vICAgLy8gSm9pbnMgdGhlIHZhbHVlcyBpbiB0aGUg
Z2l2ZW4gYHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDw+YCBzcGVjaWZpZWQgdXNpbmcKIC8vICAgLy8g
YnJhY2UgaW5pdGlhbGl6YXRpb24uIFRoaXMgcGF0dGVybiBhbHNvIHdvcmtzIHdpdGggYW4gaW5p
dGlhbGl6ZXJfbGlzdAogLy8gICAvLyBvZiBpbnRzIG9yIGBhYnNsOjpzdHJpbmdfdmlld2AgLS0g
YW55IGBBbHBoYU51bWAtY29tcGF0aWJsZSB0eXBlLgotLy8gICBzdGQ6OnN0cmluZyBzID0gYWJz
bDo6U3RySm9pbih7ImZvbyIsICJiYXIiLCAiYmF6In0sICItIik7CisvLyAgIHN0cmluZyBzID0g
YWJzbDo6U3RySm9pbih7ImZvbyIsICJiYXIiLCAiYmF6In0sICItIik7CiAvLyAgIEVYUEVDVF9F
USgiZm9vLWJhci1iYXoiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDM6CiAvLyAgIC8vIEpvaW5zIGEg
Y29sbGVjdGlvbiBvZiBpbnRzLiBUaGlzIHBhdHRlcm4gYWxzbyB3b3JrcyB3aXRoIGZsb2F0cywK
IC8vICAgLy8gZG91YmxlcywgaW50NjRzIC0tIGFueSBgU3RyQ2F0KClgLWNvbXBhdGlibGUgdHlw
ZS4KIC8vICAgc3RkOjp2ZWN0b3I8aW50PiB2ID0gezEsIDIsIDMsIC00fTsKLS8vICAgc3RkOjpz
dHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iKTsKKy8vICAgc3RyaW5nIHMgPSBhYnNsOjpT
dHJKb2luKHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiMS0yLTMtLTQiLCBzKTsKIC8vCiAvLyBF
eGFtcGxlIDQ6CkBAIC0xOTIsNyArMTkzLDcgQEAgRGVyZWZlcmVuY2VGb3JtYXR0ZXIoKSB7CiAv
LyAgIC8vIGBzdGQ6OnZlY3RvcjxpbnQqPmAuCiAvLyAgIGludCB4ID0gMSwgeSA9IDIsIHogPSAz
OwogLy8gICBzdGQ6OnZlY3RvcjxpbnQqPiB2ID0geyZ4LCAmeSwgJnp9OwotLy8gICBzdGQ6OnN0
cmluZyBzID0gYWJzbDo6U3RySm9pbih2LCAiLSIpOworLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0
ckpvaW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxLTItMyIsIHMpOwogLy8KIC8vIEV4YW1w
bGUgNToKQEAgLTIwMSw0MiArMjAyLDQyIEBAIERlcmVmZXJlbmNlRm9ybWF0dGVyKCkgewogLy8g
ICB2LmVtcGxhY2VfYmFjayhuZXcgaW50KDEpKTsKIC8vICAgdi5lbXBsYWNlX2JhY2sobmV3IGlu
dCgyKSk7CiAvLyAgIHYuZW1wbGFjZV9iYWNrKG5ldyBpbnQoMykpOwotLy8gICBzdGQ6OnN0cmlu
ZyBzID0gYWJzbDo6U3RySm9pbih2LCAiLSIpOworLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckpv
aW4odiwgIi0iKTsKIC8vICAgRVhQRUNUX0VRKCIxLTItMyIsIHMpOwogLy8KIC8vIEV4YW1wbGUg
NjoKIC8vICAgLy8gSm9pbnMgYSBgc3RkOjptYXBgLCB3aXRoIGVhY2gga2V5LXZhbHVlIHBhaXIg
c2VwYXJhdGVkIGJ5IGFuIGVxdWFscwogLy8gICAvLyBzaWduLiBUaGlzIHBhdHRlcm4gd291bGQg
YWxzbyB3b3JrIHdpdGgsIHNheSwgYQogLy8gICAvLyBgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPD4+
YC4KLS8vICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIGludD4gbSA9IHsKKy8vICAgc3RkOjptYXA8
c3RyaW5nLCBpbnQ+IG0gPSB7CiAvLyAgICAgICBzdGQ6Om1ha2VfcGFpcigiYSIsIDEpLAogLy8g
ICAgICAgc3RkOjptYWtlX3BhaXIoImIiLCAyKSwKIC8vICAgICAgIHN0ZDo6bWFrZV9wYWlyKCJj
IiwgMyl9OwotLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RySm9pbihtLCAiLCIsIGFic2w6
OlBhaXJGb3JtYXR0ZXIoIj0iKSk7CisvLyAgIHN0cmluZyBzID0gYWJzbDo6U3RySm9pbihtLCAi
LCIsIGFic2w6OlBhaXJGb3JtYXR0ZXIoIj0iKSk7CiAvLyAgIEVYUEVDVF9FUSgiYT0xLGI9Mixj
PTMiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDc6CiAvLyAgIC8vIFRoZXNlIGV4YW1wbGVzIHNob3cg
aG93IGBhYnNsOjpTdHJKb2luKClgIGhhbmRsZXMgYSBmZXcgY29tbW9uIGVkZ2UKIC8vICAgLy8g
Y2FzZXM6Ci0vLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2X2VtcHR5OworLy8gICBzdGQ6
OnZlY3RvcjxzdHJpbmc+IHZfZW1wdHk7CiAvLyAgIEVYUEVDVF9FUSgiIiwgYWJzbDo6U3RySm9p
bih2X2VtcHR5LCAiLSIpKTsKIC8vCi0vLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2X29u
ZV9pdGVtID0geyJmb28ifTsKKy8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiB2X29uZV9pdGVtID0g
eyJmb28ifTsKIC8vICAgRVhQRUNUX0VRKCJmb28iLCBhYnNsOjpTdHJKb2luKHZfb25lX2l0ZW0s
ICItIikpOwogLy8KLS8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHZfZW1wdHlfc3RyaW5n
ID0geyIifTsKKy8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiB2X2VtcHR5X3N0cmluZyA9IHsiIn07
CiAvLyAgIEVYUEVDVF9FUSgiIiwgYWJzbDo6U3RySm9pbih2X2VtcHR5X3N0cmluZywgIi0iKSk7
CiAvLwotLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdl9vbmVfaXRlbV9lbXB0eV9zdHJp
bmcgPSB7ImEiLCAiIn07CisvLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdl9vbmVfaXRlbV9lbXB0
eV9zdHJpbmcgPSB7ImEiLCAiIn07CiAvLyAgIEVYUEVDVF9FUSgiYS0iLCBhYnNsOjpTdHJKb2lu
KHZfb25lX2l0ZW1fZW1wdHlfc3RyaW5nLCAiLSIpKTsKIC8vCi0vLyAgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiB2X3R3b19lbXB0eV9zdHJpbmcgPSB7IiIsICIifTsKKy8vICAgc3RkOjp2ZWN0
b3I8c3RyaW5nPiB2X3R3b19lbXB0eV9zdHJpbmcgPSB7IiIsICIifTsKIC8vICAgRVhQRUNUX0VR
KCItIiwgYWJzbDo6U3RySm9pbih2X3R3b19lbXB0eV9zdHJpbmcsICItIikpOwogLy8KIC8vIEV4
YW1wbGUgODoKIC8vICAgLy8gSm9pbnMgYSBgc3RkOjp0dXBsZTxULi4uPmAgb2YgaGV0ZXJvZ2Vu
ZW91cyB0eXBlcywgY29udmVydGluZyBlYWNoIHRvCi0vLyAgIC8vIGEgc3RkOjpzdHJpbmcgdXNp
bmcgdGhlIGBhYnNsOjpBbHBoYU51bWAgY2xhc3MuCi0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNs
OjpTdHJKb2luKHN0ZDo6bWFrZV90dXBsZSgxMjMsICJhYmMiLCAwLjQ1NiksICItIik7CisvLyAg
IC8vIGEgc3RyaW5nIHVzaW5nIHRoZSBgYWJzbDo6QWxwaGFOdW1gIGNsYXNzLgorLy8gICBzdHJp
bmcgcyA9IGFic2w6OlN0ckpvaW4oc3RkOjptYWtlX3R1cGxlKDEyMywgImFiYyIsIDAuNDU2KSwg
Ii0iKTsKIC8vICAgRVhQRUNUX0VRKCIxMjMtYWJjLTAuNDU2Iiwgcyk7CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgRm9ybWF0dGVyPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJfcmVwbGFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZS5oCmluZGV4
IGY0ZDliYjk1NDVkNjg5NzYyMTgwYTFhNDMwZTY0YjUwNjViY2YyN2MuLjNiZmU0YzYxZWJkMTUw
NGQzYzhlYjhlNTBiYTg3MGZhOGZhNjg5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3Ry
X3JlcGxhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmgKQEAgLTE3LDE5ICsx
NywxOSBAQAogLy8gRmlsZTogc3RyX3JlcGxhY2UuaAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IC8vCi0vLyBUaGlzIGZpbGUgZGVmaW5lcyBgYWJzbDo6U3RyUmVwbGFjZUFsbCgpYCwgYSBnZW5l
cmFsLXB1cnBvc2Ugc3RkOjpzdHJpbmcKKy8vIFRoaXMgZmlsZSBkZWZpbmVzIGBhYnNsOjpTdHJS
ZXBsYWNlQWxsKClgLCBhIGdlbmVyYWwtcHVycG9zZSBzdHJpbmcKIC8vIHJlcGxhY2VtZW50IGZ1
bmN0aW9uIGRlc2lnbmVkIGZvciBsYXJnZSwgYXJiaXRyYXJ5IHRleHQgc3Vic3RpdHV0aW9ucywK
IC8vIGVzcGVjaWFsbHkgb24gc3RyaW5ncyB3aGljaCB5b3UgYXJlIHJlY2VpdmluZyBmcm9tIHNv
bWUgb3RoZXIgc3lzdGVtIGZvcgogLy8gZnVydGhlciBwcm9jZXNzaW5nIChlLmcuIHByb2Nlc3Np
bmcgcmVndWxhciBleHByZXNzaW9ucywgZXNjYXBpbmcgSFRNTAotLy8gZW50aXRpZXMsIGV0Yy4g
YFN0clJlcGxhY2VBbGxgIGlzIGRlc2lnbmVkIHRvIGJlIGVmZmljaWVudCBldmVuIHdoZW4gb25s
eQorLy8gZW50aXRpZXMsIGV0Yy4pLiBgU3RyUmVwbGFjZUFsbGAgaXMgZGVzaWduZWQgdG8gYmUg
ZWZmaWNpZW50IGV2ZW4gd2hlbiBvbmx5CiAvLyBvbmUgc3Vic3RpdHV0aW9uIGlzIGJlaW5nIHBl
cmZvcm1lZCwgb3Igd2hlbiBzdWJzdGl0dXRpb24gaXMgcmFyZS4KIC8vCi0vLyBJZiB0aGUgc3Rk
OjpzdHJpbmcgYmVpbmcgbW9kaWZpZWQgaXMga25vd24gYXQgY29tcGlsZS10aW1lLCBhbmQgdGhl
IHN1YnN0aXR1dGlvbnMKKy8vIElmIHRoZSBzdHJpbmcgYmVpbmcgbW9kaWZpZWQgaXMga25vd24g
YXQgY29tcGlsZS10aW1lLCBhbmQgdGhlIHN1YnN0aXR1dGlvbnMKIC8vIHZhcnksIGBhYnNsOjpT
dWJzdGl0dXRlKClgIG1heSBiZSBhIGJldHRlciBjaG9pY2UuCiAvLwogLy8gRXhhbXBsZToKIC8v
Ci0vLyBzdGQ6OnN0cmluZyBodG1sX2VzY2FwZWQgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKHVzZXJf
aW5wdXQsIHsKKy8vIHN0cmluZyBodG1sX2VzY2FwZWQgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKHVz
ZXJfaW5wdXQsIHsKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsiJiIsICImYW1wOyJ9LAogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyI8IiwgIiZsdDsifSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsiPiIsICImZ3Q7In0sCkBAIC00OSwxNiArNDksMTYgQEAgbmFtZXNwYWNlIGFi
c2wgewogCiAvLyBTdHJSZXBsYWNlQWxsKCkKIC8vCi0vLyBSZXBsYWNlcyBjaGFyYWN0ZXIgc2Vx
dWVuY2VzIHdpdGhpbiBhIGdpdmVuIHN0ZDo6c3RyaW5nIHdpdGggcmVwbGFjZW1lbnRzIHByb3Zp
ZGVkCisvLyBSZXBsYWNlcyBjaGFyYWN0ZXIgc2VxdWVuY2VzIHdpdGhpbiBhIGdpdmVuIHN0cmlu
ZyB3aXRoIHJlcGxhY2VtZW50cyBwcm92aWRlZAogLy8gd2l0aGluIGFuIGluaXRpYWxpemVyIGxp
c3Qgb2Yga2V5L3ZhbHVlIHBhaXJzLiBDYW5kaWRhdGUgcmVwbGFjZW1lbnRzIGFyZQotLy8gY29u
c2lkZXJlZCBpbiBvcmRlciBhcyB0aGV5IG9jY3VyIHdpdGhpbiB0aGUgc3RkOjpzdHJpbmcsIHdp
dGggZWFybGllciBtYXRjaGVzCisvLyBjb25zaWRlcmVkIGluIG9yZGVyIGFzIHRoZXkgb2NjdXIg
d2l0aGluIHRoZSBzdHJpbmcsIHdpdGggZWFybGllciBtYXRjaGVzCiAvLyB0YWtpbmcgcHJlY2Vk
ZW5jZSwgYW5kIGxvbmdlciBtYXRjaGVzIHRha2luZyBwcmVjZWRlbmNlIGZvciBjYW5kaWRhdGVz
Ci0vLyBzdGFydGluZyBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgc3RkOjpzdHJpbmcuIE9u
Y2UgYSBzdWJzdGl0dXRpb24gaXMgbWFkZSwgdGhlCisvLyBzdGFydGluZyBhdCB0aGUgc2FtZSBw
b3NpdGlvbiBpbiB0aGUgc3RyaW5nLiBPbmNlIGEgc3Vic3RpdHV0aW9uIGlzIG1hZGUsIHRoZQog
Ly8gcmVwbGFjZWQgdGV4dCBpcyBub3QgY29uc2lkZXJlZCBmb3IgYW55IGZ1cnRoZXIgc3Vic3Rp
dHV0aW9ucy4KIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6
OlN0clJlcGxhY2VBbGwoIiR3aG8gYm91Z2h0ICRjb3VudCAjTm91bi4gVGhhbmtzICR3aG8hIiwK
Ky8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCIkd2hvIGJvdWdodCAkY291bnQg
I05vdW4uIFRoYW5rcyAkd2hvISIsCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7eyIkY291bnQiLCBhYnNsOjpTdHJDYXQoNSl9LAogLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsiJHdobyIsICJCb2IifSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7IiNOb3VuIiwgIkFwcGxlcyJ9fSk7CkBAIC03OCwyOCArNzgsMjggQEAgQUJT
TF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpzdHJpbmcgU3RyUmVwbGFjZUFsbCgKIC8vICAgcmVwbGFj
ZW1lbnRzWyIkd2hvIl0gPSAiQm9iIjsKIC8vICAgcmVwbGFjZW1lbnRzWyIkY291bnQiXSA9ICI1
IjsKIC8vICAgcmVwbGFjZW1lbnRzWyIjTm91biJdID0gIkFwcGxlcyI7Ci0vLyAgIHN0ZDo6c3Ry
aW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCIkd2hvIGJvdWdodCAkY291bnQgI05vdW4uIFRo
YW5rcyAkd2hvISIsCisvLyAgIHN0cmluZyBzID0gYWJzbDo6U3RyUmVwbGFjZUFsbCgiJHdobyBi
b3VnaHQgJGNvdW50ICNOb3VuLiBUaGFua3MgJHdobyEiLAogLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzKTsKIC8vICAgRVhQRUNUX0VRKCJCb2IgYm91Z2h0
IDUgQXBwbGVzLiBUaGFua3MgQm9iISIsIHMpOwogLy8KIC8vICAgLy8gQSBzdGQ6OnZlY3RvciBv
ZiBzdGQ6OnBhaXIgZWxlbWVudHMgY2FuIGJlIG1vcmUgZWZmaWNpZW50LgotLy8gICBzdGQ6OnZl
Y3RvcjxzdGQ6OnBhaXI8Y29uc3QgYWJzbDo6c3RyaW5nX3ZpZXcsIHN0ZDo6c3RyaW5nPj4gcmVw
bGFjZW1lbnRzOworLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8Y29uc3QgYWJzbDo6c3RyaW5n
X3ZpZXcsIHN0cmluZz4+IHJlcGxhY2VtZW50czsKIC8vICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFj
ayh7IiYiLCAiJmFtcDsifSk7CiAvLyAgIHJlcGxhY2VtZW50cy5wdXNoX2JhY2soeyI8IiwgIiZs
dDsifSk7CiAvLyAgIHJlcGxhY2VtZW50cy5wdXNoX2JhY2soeyI+IiwgIiZndDsifSk7Ci0vLyAg
IHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCJpZiAocHRyIDwgJmZvbykiLAor
Ly8gICBzdHJpbmcgcyA9IGFic2w6OlN0clJlcGxhY2VBbGwoImlmIChwdHIgPCAmZm9vKSIsCiAv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMpOwogLy8gICBF
WFBFQ1RfRVEoImlmIChwdHIgJmx0OyAmYW1wO2ZvbykiLCBzKTsKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBTdHJUb1N0ck1hcHBpbmc+CiBzdGQ6OnN0cmluZyBTdHJSZXBsYWNlQWxsKGFic2w6OnN0cmlu
Z192aWV3IHMsIGNvbnN0IFN0clRvU3RyTWFwcGluZyYgcmVwbGFjZW1lbnRzKTsKIAogLy8gT3Zl
cmxvYWQgb2YgYFN0clJlcGxhY2VBbGwoKWAgdG8gcmVwbGFjZSBjaGFyYWN0ZXIgc2VxdWVuY2Vz
IHdpdGhpbiBhIGdpdmVuCi0vLyBvdXRwdXQgc3RkOjpzdHJpbmcgKmluIHBsYWNlKiB3aXRoIHJl
cGxhY2VtZW50cyBwcm92aWRlZCB3aXRoaW4gYW4gaW5pdGlhbGl6ZXIKKy8vIG91dHB1dCBzdHJp
bmcgKmluIHBsYWNlKiB3aXRoIHJlcGxhY2VtZW50cyBwcm92aWRlZCB3aXRoaW4gYW4gaW5pdGlh
bGl6ZXIKIC8vIGxpc3Qgb2Yga2V5L3ZhbHVlIHBhaXJzLCByZXR1cm5pbmcgdGhlIG51bWJlciBv
ZiBzdWJzdGl0dXRpb25zIHRoYXQgb2NjdXJyZWQuCiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAg
IHN0ZDo6c3RyaW5nIHMgPSBzdGQ6OnN0cmluZygiJHdobyBib3VnaHQgJGNvdW50ICNOb3VuLiBU
aGFua3MgJHdobyEiKTsKKy8vICAgc3RyaW5nIHMgPSBzdGQ6OnN0cmluZygiJHdobyBib3VnaHQg
JGNvdW50ICNOb3VuLiBUaGFua3MgJHdobyEiKTsKIC8vICAgaW50IGNvdW50OwogLy8gICBjb3Vu
dCA9IGFic2w6OlN0clJlcGxhY2VBbGwoe3siJGNvdW50IiwgYWJzbDo6U3RyQ2F0KDUpfSwKIC8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiJHdobyIsICJCb2IifSwKQEAgLTExMiwx
MiArMTEyLDEyIEBAIGludCBTdHJSZXBsYWNlQWxsKAogICAgIHN0ZDo6c3RyaW5nKiB0YXJnZXQp
OwogCiAvLyBPdmVybG9hZCBvZiBgU3RyUmVwbGFjZUFsbCgpYCB0byByZXBsYWNlIHBhdHRlcm5z
IHdpdGhpbiBhIGdpdmVuIG91dHB1dAotLy8gc3RkOjpzdHJpbmcgKmluIHBsYWNlKiB3aXRoIHJl
cGxhY2VtZW50cyBwcm92aWRlZCB3aXRoaW4gYSBjb250YWluZXIgb2Yga2V5L3ZhbHVlCisvLyBz
dHJpbmcgKmluIHBsYWNlKiB3aXRoIHJlcGxhY2VtZW50cyBwcm92aWRlZCB3aXRoaW4gYSBjb250
YWluZXIgb2Yga2V5L3ZhbHVlCiAvLyBwYWlycy4KIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAg
c3RkOjpzdHJpbmcgcyA9IHN0ZDo6c3RyaW5nKCJpZiAocHRyIDwgJmZvbykiKTsKKy8vICAgc3Ry
aW5nIHMgPSBzdGQ6OnN0cmluZygiaWYgKHB0ciA8ICZmb28pIik7CiAvLyAgIGludCBjb3VudCA9
IGFic2w6OlN0clJlcGxhY2VBbGwoe3siJiIsICImYW1wOyJ9LAogLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7IjwiLCAiJmx0OyJ9LAogLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7Ij4iLCAiJmd0OyJ9fSwgJnMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJfcmVwbGFjZV9iZW5jaG1hcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBs
YWNlX2JlbmNobWFyay5jYwppbmRleCBlNjA4ZGU4ZDE5ZTQxYmE3M2MzZDU0ZmZhMzc2NDNjNzJi
ZTgwMmRiLi44Mzg2ZjJlNmJmMTBlY2U0NmJhNDc5YWUyNTNkODc5NjY3YzVlMWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlX2JlbmNobWFyay5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL3N0cl9yZXBsYWNlX2JlbmNobWFyay5jYwpAQCAtMzgsMTYgKzM4LDE2IEBAIHN0cnVj
dCBSZXBsYWNlbWVudCB7CiAgICAgeyJsaXF1b3IiLCAic2hha2VzIn0sICAgIC8vCiB9OwogCi0v
LyBIZXJlLCB3ZSBzZXQgdXAgYSBzdGQ6OnN0cmluZyBmb3IgdXNlIGluIGdsb2JhbC1yZXBsYWNl
IGJlbmNobWFya3MuCisvLyBIZXJlLCB3ZSBzZXQgdXAgYSBzdHJpbmcgZm9yIHVzZSBpbiBnbG9i
YWwtcmVwbGFjZSBiZW5jaG1hcmtzLgogLy8gV2Ugc3RhcnRlZCB3aXRoIGEgbWlsbGlvbiBibGFu
a3MsIGFuZCB0aGVuIGRldGVybWluaXN0aWNhbGx5IGluc2VydAotLy8gMTAsMDAwIGNvcGllcyBl
YWNoIG9mIHR3byBwYW5ncmFtcy4gIFRoZSByZXN1bHQgaXMgYSBzdGQ6OnN0cmluZyB0aGF0IGlz
CisvLyAxMCwwMDAgY29waWVzIGVhY2ggb2YgdHdvIHBhbmdyYW1zLiAgVGhlIHJlc3VsdCBpcyBh
IHN0cmluZyB0aGF0IGlzCiAvLyA0MCUgYmxhbmsgc3BhY2UgYW5kIDYwJSB0aGVzZSB3b3Jkcy4g
ICd0aGUnIG9jY3VycyAxOCwyNDcgdGltZXMgYW5kCiAvLyBhbGwgdGhlIHN1YnN0aXR1dGlvbnMg
dG9nZXRoZXIgb2NjdXIgNDksMDA0IHRpbWVzLgogLy8KLS8vIFdlIHRoZW4gY3JlYXRlICJhZnRl
cl9yZXBsYWNpbmdfdGhlIiB0byBiZSBhIHN0ZDo6c3RyaW5nIHRoYXQgaXMgYSByZXN1bHQgb2YK
Ky8vIFdlIHRoZW4gY3JlYXRlICJhZnRlcl9yZXBsYWNpbmdfdGhlIiB0byBiZSBhIHN0cmluZyB0
aGF0IGlzIGEgcmVzdWx0IG9mCiAvLyByZXBsYWNpbmcgInRoZSIgd2l0aCAiYm94IiBpbiBiaWdf
c3RyaW5nLgogLy8KLS8vIEFuZCB0aGVuIHdlIGNyZWF0ZSAiYWZ0ZXJfcmVwbGFjaW5nX21hbnki
IHRvIGJlIGEgc3RkOjpzdHJpbmcgdGhhdCBpcyByZXN1bHQKKy8vIEFuZCB0aGVuIHdlIGNyZWF0
ZSAiYWZ0ZXJfcmVwbGFjaW5nX21hbnkiIHRvIGJlIGEgc3RyaW5nIHRoYXQgaXMgcmVzdWx0CiAv
LyBvZiBwcmVmZXJyaW5nIHNldmVyYWwgc3Vic3RpdHV0aW9ucy4KIHZvaWQgU2V0VXBTdHJpbmdz
KCkgewogICBpZiAoYmlnX3N0cmluZyA9PSBudWxscHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL3N0cl9zcGxpdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmNjCmluZGV4IDAy
MDcyMTNjMjZiYWY5MTNkOTk4MTQ5Nzk0M2Q3ODY3YTFjZGVlZWEuLjBhNjhjNTJkMTRmMTliODhk
M2FkZDJlMzcyMjdjNTEzYzU5ZDEyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3Nw
bGl0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmNjCkBAIC00MywxMCArNDMsMTEg
QEAgYWJzbDo6c3RyaW5nX3ZpZXcgR2VuZXJpY0ZpbmQoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwK
ICAgaWYgKGRlbGltaXRlci5lbXB0eSgpICYmIHRleHQubGVuZ3RoKCkgPiAwKSB7CiAgICAgLy8g
U3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdGQ6OnN0cmluZyBkZWxpbWl0ZXJzOiBhbHdheXMgcmV0
dXJuIGEgemVyby1sZW5ndGgKICAgICAvLyBhYnNsOjpzdHJpbmdfdmlldyByZWZlcnJpbmcgdG8g
dGhlIGl0ZW0gYXQgcG9zaXRpb24gMSBwYXN0IHBvcy4KLSAgICByZXR1cm4gYWJzbDo6c3RyaW5n
X3ZpZXcodGV4dC5iZWdpbigpICsgcG9zICsgMSwgMCk7CisgICAgcmV0dXJuIGFic2w6OnN0cmlu
Z192aWV3KHRleHQuZGF0YSgpICsgcG9zICsgMSwgMCk7CiAgIH0KICAgc2l6ZV90IGZvdW5kX3Bv
cyA9IGFic2w6OnN0cmluZ192aWV3OjpucG9zOwotICBhYnNsOjpzdHJpbmdfdmlldyBmb3VuZCh0
ZXh0LmVuZCgpLCAwKTsgIC8vIEJ5IGRlZmF1bHQsIG5vdCBmb3VuZAorICBhYnNsOjpzdHJpbmdf
dmlldyBmb3VuZCh0ZXh0LmRhdGEoKSArIHRleHQuc2l6ZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAwKTsgIC8vIEJ5IGRlZmF1bHQsIG5vdCBmb3VuZAogICBmb3VuZF9wb3MgPSBmaW5k
X3BvbGljeS5GaW5kKHRleHQsIGRlbGltaXRlciwgcG9zKTsKICAgaWYgKGZvdW5kX3BvcyAhPSBh
YnNsOjpzdHJpbmdfdmlldzo6bnBvcykgewogICAgIGZvdW5kID0gYWJzbDo6c3RyaW5nX3ZpZXco
dGV4dC5kYXRhKCkgKyBmb3VuZF9wb3MsCkBAIC04Nyw3ICs4OCw3IEBAIGFic2w6OnN0cmluZ192
aWV3IEJ5U3RyaW5nOjpGaW5kKGFic2w6OnN0cmluZ192aWV3IHRleHQsIHNpemVfdCBwb3MpIGNv
bnN0IHsKICAgICAvLyBhYnNsOjpzdHJpbmdfdmlldy4KICAgICBzaXplX3QgZm91bmRfcG9zID0g
dGV4dC5maW5kKGRlbGltaXRlcl9bMF0sIHBvcyk7CiAgICAgaWYgKGZvdW5kX3BvcyA9PSBhYnNs
OjpzdHJpbmdfdmlldzo6bnBvcykKLSAgICAgIHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyh0ZXh0
LmVuZCgpLCAwKTsKKyAgICAgIHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyh0ZXh0LmRhdGEoKSAr
IHRleHQuc2l6ZSgpLCAwKTsKICAgICByZXR1cm4gdGV4dC5zdWJzdHIoZm91bmRfcG9zLCAxKTsK
ICAgfQogICByZXR1cm4gR2VuZXJpY0ZpbmQodGV4dCwgZGVsaW1pdGVyXywgcG9zLCBMaXRlcmFs
UG9saWN5KCkpOwpAQCAtMTAwLDcgKzEwMSw3IEBAIGFic2w6OnN0cmluZ192aWV3IEJ5U3RyaW5n
OjpGaW5kKGFic2w6OnN0cmluZ192aWV3IHRleHQsIHNpemVfdCBwb3MpIGNvbnN0IHsKIGFic2w6
OnN0cmluZ192aWV3IEJ5Q2hhcjo6RmluZChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBzaXplX3Qg
cG9zKSBjb25zdCB7CiAgIHNpemVfdCBmb3VuZF9wb3MgPSB0ZXh0LmZpbmQoY18sIHBvcyk7CiAg
IGlmIChmb3VuZF9wb3MgPT0gYWJzbDo6c3RyaW5nX3ZpZXc6Om5wb3MpCi0gICAgcmV0dXJuIGFi
c2w6OnN0cmluZ192aWV3KHRleHQuZW5kKCksIDApOworICAgIHJldHVybiBhYnNsOjpzdHJpbmdf
dmlldyh0ZXh0LmRhdGEoKSArIHRleHQuc2l6ZSgpLCAwKTsKICAgcmV0dXJuIHRleHQuc3Vic3Ry
KGZvdW5kX3BvcywgMSk7CiB9CiAKQEAgLTEyOCw5ICsxMjksOSBAQCBhYnNsOjpzdHJpbmdfdmll
dyBCeUxlbmd0aDo6RmluZChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LAogICAvLyBJZiB0aGUgc3Rk
OjpzdHJpbmcgaXMgc2hvcnRlciB0aGFuIHRoZSBjaHVuayBzaXplIHdlIHNheSB3ZQogICAvLyAi
Y2FuJ3QgZmluZCB0aGUgZGVsaW1pdGVyIiBzbyB0aGlzIHdpbGwgYmUgdGhlIGxhc3QgY2h1bmsu
CiAgIGlmIChzdWJzdHIubGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGhfKSkK
LSAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcodGV4dC5lbmQoKSwgMCk7CisgICAgcmV0dXJu
IGFic2w6OnN0cmluZ192aWV3KHRleHQuZGF0YSgpICsgdGV4dC5zaXplKCksIDApOwogCi0gIHJl
dHVybiBhYnNsOjpzdHJpbmdfdmlldyhzdWJzdHIuYmVnaW4oKSArIGxlbmd0aF8sIDApOworICBy
ZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcoc3Vic3RyLmRhdGEoKSArIGxlbmd0aF8sIDApOwogfQog
CiB9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3Bs
aXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmgKaW5kZXggOWE3YmUyYjA1MzQ0MjU4NzJj
MjVlOTg2YWViYzIxZGI3ZTdmYjc1Ni4uYzdlYjI4MGM0MTEzMGFiODZlMzQzMzY5YzdlNWZjOTBj
ZDY5ZGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cl9zcGxpdC5oCkBAIC0xOSwxMyArMTksMTMgQEAKIC8vCiAvLyBUaGlzIGZp
bGUgY29udGFpbnMgZnVuY3Rpb25zIGZvciBzcGxpdHRpbmcgc3RyaW5ncy4gSXQgZGVmaW5lcyB0
aGUgbWFpbgogLy8gYFN0clNwbGl0KClgIGZ1bmN0aW9uLCBzZXZlcmFsIGRlbGltaXRlcnMgZm9y
IGRldGVybWluaW5nIHRoZSBib3VuZGFyaWVzIG9uCi0vLyB3aGljaCB0byBzcGxpdCB0aGUgc3Rk
OjpzdHJpbmcsIGFuZCBwcmVkaWNhdGVzIGZvciBmaWx0ZXJpbmcgZGVsaW1pdGVkIHJlc3VsdHMu
CisvLyB3aGljaCB0byBzcGxpdCB0aGUgc3RyaW5nLCBhbmQgcHJlZGljYXRlcyBmb3IgZmlsdGVy
aW5nIGRlbGltaXRlZCByZXN1bHRzLgogLy8gYFN0clNwbGl0KClgIGFkYXB0cyB0aGUgcmV0dXJu
ZWQgY29sbGVjdGlvbiB0byB0aGUgdHlwZSBzcGVjaWZpZWQgYnkgdGhlCiAvLyBjYWxsZXIuCiAv
LwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIC8vIFNwbGl0cyB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcg
b24gY29tbWFzLiBSZXR1cm5zIHRoZSByZXN1bHRzIGluIGEKKy8vICAgLy8gU3BsaXRzIHRoZSBn
aXZlbiBzdHJpbmcgb24gY29tbWFzLiBSZXR1cm5zIHRoZSByZXN1bHRzIGluIGEKIC8vICAgLy8g
dmVjdG9yIG9mIHN0cmluZ3MuCiAvLyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ID0gYWJz
bDo6U3RyU3BsaXQoImEsYixjIiwgJywnKTsKIC8vICAgLy8gQ2FuIGFsc28gdXNlICIsIgpAQCAt
NTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ly8KIC8vIGBTdHJTcGxpdCgpYCB1c2VzIGRlbGltaXRlcnMgdG8gZGVmaW5lIHRoZSBib3VuZGFy
aWVzIGJldHdlZW4gZWxlbWVudHMgaW4gdGhlCi0vLyBwcm92aWRlZCBpbnB1dC4gU2V2ZXJhbCBg
RGVsaW1pdGVyYCB0eXBlcyBhcmUgZGVmaW5lZCBiZWxvdy4gSWYgYSBzdGQ6OnN0cmluZworLy8g
cHJvdmlkZWQgaW5wdXQuIFNldmVyYWwgYERlbGltaXRlcmAgdHlwZXMgYXJlIGRlZmluZWQgYmVs
b3cuIElmIGEgc3RyaW5nCiAvLyAoYGNvbnN0IGNoYXIqYCwgYHN0ZDo6c3RyaW5nYCwgb3IgYGFi
c2w6OnN0cmluZ192aWV3YCkgaXMgcGFzc2VkIGluIHBsYWNlIG9mCiAvLyBhbiBleHBsaWNpdCBg
RGVsaW1pdGVyYCBvYmplY3QsIGBTdHJTcGxpdCgpYCB0cmVhdHMgaXQgdGhlIHNhbWUgd2F5IGFz
IGlmIGl0CiAvLyB3ZXJlIHBhc3NlZCBhIGBCeVN0cmluZ2AgZGVsaW1pdGVyLgpAQCAtNjUsNyAr
NjUsNyBAQCBuYW1lc3BhY2UgYWJzbCB7CiAvLwogLy8gVGhlIGZvbGxvd2luZyBgRGVsaW1pdGVy
YCB0eXBlcyBhcmUgYXZhaWxhYmxlIGZvciB1c2Ugd2l0aGluIGBTdHJTcGxpdCgpYDoKIC8vCi0v
LyAgIC0gYEJ5U3RyaW5nYCAoZGVmYXVsdCBmb3Igc3RkOjpzdHJpbmcgYXJndW1lbnRzKQorLy8g
ICAtIGBCeVN0cmluZ2AgKGRlZmF1bHQgZm9yIHN0cmluZyBhcmd1bWVudHMpCiAvLyAgIC0gYEJ5
Q2hhcmAgKGRlZmF1bHQgZm9yIGEgY2hhciBhcmd1bWVudCkKIC8vICAgLSBgQnlBbnlDaGFyYAog
Ly8gICAtIGBCeUxlbmd0aGAKQEAgLTc2LDE1ICs3NiwxNSBAQCBuYW1lc3BhY2UgYWJzbCB7CiAv
LyBiZSBzcGxpdCBhbmQgdGhlIHBvc2l0aW9uIHRvIGJlZ2luIHNlYXJjaGluZyBmb3IgdGhlIG5l
eHQgZGVsaW1pdGVyIGluIHRoZQogLy8gaW5wdXQgdGV4dC4gVGhlIHJldHVybmVkIGFic2w6OnN0
cmluZ192aWV3IHNob3VsZCByZWZlciB0byB0aGUgbmV4dAogLy8gb2NjdXJyZW5jZSAoYWZ0ZXIg
cG9zKSBvZiB0aGUgcmVwcmVzZW50ZWQgZGVsaW1pdGVyOyB0aGlzIHJldHVybmVkCi0vLyBhYnNs
OjpzdHJpbmdfdmlldyByZXByZXNlbnRzIHRoZSBuZXh0IGxvY2F0aW9uIHdoZXJlIHRoZSBpbnB1
dCBzdGQ6OnN0cmluZyBzaG91bGQKKy8vIGFic2w6OnN0cmluZ192aWV3IHJlcHJlc2VudHMgdGhl
IG5leHQgbG9jYXRpb24gd2hlcmUgdGhlIGlucHV0IHN0cmluZyBzaG91bGQKIC8vIGJlIGJyb2tl
bi4gVGhlIHJldHVybmVkIGFic2w6OnN0cmluZ192aWV3IG1heSBiZSB6ZXJvLWxlbmd0aCBpZiB0
aGUgRGVsaW1pdGVyCi0vLyBkb2VzIG5vdCByZXByZXNlbnQgYSBwYXJ0IG9mIHRoZSBzdGQ6OnN0
cmluZyAoZS5nLiwgYSBmaXhlZC1sZW5ndGggZGVsaW1pdGVyKS4gSWYKKy8vIGRvZXMgbm90IHJl
cHJlc2VudCBhIHBhcnQgb2YgdGhlIHN0cmluZyAoZS5nLiwgYSBmaXhlZC1sZW5ndGggZGVsaW1p
dGVyKS4gSWYKIC8vIG5vIGRlbGltaXRlciBpcyBmb3VuZCBpbiB0aGUgZ2l2ZW4gdGV4dCwgYSB6
ZXJvLWxlbmd0aCBhYnNsOjpzdHJpbmdfdmlldwogLy8gcmVmZXJyaW5nIHRvIHRleHQuZW5kKCkg
c2hvdWxkIGJlIHJldHVybmVkIChlLmcuLAogLy8gYWJzbDo6c3RyaW5nX3ZpZXcodGV4dC5lbmQo
KSwgMCkpLiBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgcmV0dXJuZWQKIC8vIGFic2w6OnN0cmlu
Z192aWV3IGFsd2F5cyBiZSB3aXRoaW4gdGhlIGJvdW5kcyBvZiBpbnB1dCB0ZXh0IGdpdmVuIGFz
IGFuCi0vLyBhcmd1bWVudC0taXQgbXVzdCBub3QgcmVmZXIgdG8gYSBzdGQ6OnN0cmluZyB0aGF0
IGlzIHBoeXNpY2FsbHkgbG9jYXRlZCBvdXRzaWRlIG9mCi0vLyB0aGUgZ2l2ZW4gc3RkOjpzdHJp
bmcuCisvLyBhcmd1bWVudC0taXQgbXVzdCBub3QgcmVmZXIgdG8gYSBzdHJpbmcgdGhhdCBpcyBw
aHlzaWNhbGx5IGxvY2F0ZWQgb3V0c2lkZSBvZgorLy8gdGhlIGdpdmVuIHN0cmluZy4KIC8vCiAv
LyBUaGUgZm9sbG93aW5nIGV4YW1wbGUgaXMgYSBzaW1wbGUgRGVsaW1pdGVyIG9iamVjdCB0aGF0
IGlzIGNyZWF0ZWQgd2l0aCBhCiAvLyBzaW5nbGUgY2hhciBhbmQgd2lsbCBsb29rIGZvciB0aGF0
IGNoYXIgaW4gdGhlIHRleHQgcGFzc2VkIHRvIHRoZSBGaW5kKCkKQEAgLTEwNCwxMyArMTA0LDEz
IEBAIG5hbWVzcGFjZSBhYnNsIHsKIAogLy8gQnlTdHJpbmcKIC8vCi0vLyBBIHN1Yi1zdGQ6OnN0
cmluZyBkZWxpbWl0ZXIuIElmIGBTdHJTcGxpdCgpYCBpcyBwYXNzZWQgYSBzdGQ6OnN0cmluZyBp
biBwbGFjZSBvZiBhCi0vLyBgRGVsaW1pdGVyYCBvYmplY3QsIHRoZSBzdGQ6OnN0cmluZyB3aWxs
IGJlIGltcGxpY2l0bHkgY29udmVydGVkIGludG8gYQorLy8gQSBzdWItc3RyaW5nIGRlbGltaXRl
ci4gSWYgYFN0clNwbGl0KClgIGlzIHBhc3NlZCBhIHN0cmluZyBpbiBwbGFjZSBvZiBhCisvLyBg
RGVsaW1pdGVyYCBvYmplY3QsIHRoZSBzdHJpbmcgd2lsbCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRl
ZCBpbnRvIGEKIC8vIGBCeVN0cmluZ2AgZGVsaW1pdGVyLgogLy8KIC8vIEV4YW1wbGU6CiAvLwot
Ly8gICAvLyBCZWNhdXNlIGEgc3RkOjpzdHJpbmcgbGl0ZXJhbCBpcyBjb252ZXJ0ZWQgdG8gYW4g
YGFic2w6OkJ5U3RyaW5nYCwKKy8vICAgLy8gQmVjYXVzZSBhIHN0cmluZyBsaXRlcmFsIGlzIGNv
bnZlcnRlZCB0byBhbiBgYWJzbDo6QnlTdHJpbmdgLAogLy8gICAvLyB0aGUgZm9sbG93aW5nIHR3
byBzcGxpdHMgYXJlIGVxdWl2YWxlbnQuCiAvLwogLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gdjEgPSBhYnNsOjpTdHJTcGxpdCgiYSwgYiwgYyIsICIsICIpOwpAQCAtMTMxLDcgKzEzMSw3
IEBAIGNsYXNzIEJ5U3RyaW5nIHsKIC8vIEJ5Q2hhcgogLy8KIC8vIEEgc2luZ2xlIGNoYXJhY3Rl
ciBkZWxpbWl0ZXIuIGBCeUNoYXJgIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIGEKLS8v
IDEtY2hhciBzdGQ6OnN0cmluZyB3aXRoaW4gYSBgQnlTdHJpbmdgIGRlbGltaXRlciwgYnV0IHNs
aWdodGx5IG1vcmUKKy8vIDEtY2hhciBzdHJpbmcgd2l0aGluIGEgYEJ5U3RyaW5nYCBkZWxpbWl0
ZXIsIGJ1dCBzbGlnaHRseSBtb3JlCiAvLyBlZmZpY2llbnQuCiAvLwogLy8gRXhhbXBsZToKQEAg
LTE2NCw5ICsxNjQsOSBAQCBjbGFzcyBCeUNoYXIgewogLy8gQnlBbnlDaGFyCiAvLwogLy8gQSBk
ZWxpbWl0ZXIgdGhhdCB3aWxsIG1hdGNoIGFueSBvZiB0aGUgZ2l2ZW4gYnl0ZS1zaXplZCBjaGFy
YWN0ZXJzIHdpdGhpbgotLy8gaXRzIHByb3ZpZGVkIHN0ZDo6c3RyaW5nLgorLy8gaXRzIHByb3Zp
ZGVkIHN0cmluZy4KIC8vCi0vLyBOb3RlOiB0aGlzIGRlbGltaXRlciB3b3JrcyB3aXRoIHNpbmds
ZS1ieXRlIHN0ZDo6c3RyaW5nIGRhdGEsIGJ1dCBkb2VzIG5vdCB3b3JrCisvLyBOb3RlOiB0aGlz
IGRlbGltaXRlciB3b3JrcyB3aXRoIHNpbmdsZS1ieXRlIHN0cmluZyBkYXRhLCBidXQgZG9lcyBu
b3Qgd29yawogLy8gd2l0aCB2YXJpYWJsZS13aWR0aCBlbmNvZGluZ3MsIHN1Y2ggYXMgVVRGLTgu
CiAvLwogLy8gRXhhbXBsZToKQEAgLTE3NSw4ICsxNzUsOCBAQCBjbGFzcyBCeUNoYXIgewogLy8g
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IGFic2w6OlN0clNwbGl0KCJhLGI9YyIsIEJ5
QW55Q2hhcigiLD0iKSk7CiAvLyAgIC8vIHZbMF0gPT0gImEiLCB2WzFdID09ICJiIiwgdlsyXSA9
PSAiYyIKIC8vCi0vLyBJZiBgQnlBbnlDaGFyYCBpcyBnaXZlbiB0aGUgZW1wdHkgc3RkOjpzdHJp
bmcsIGl0IGJlaGF2ZXMgZXhhY3RseSBsaWtlCi0vLyBgQnlTdHJpbmdgIGFuZCBtYXRjaGVzIGVh
Y2ggaW5kaXZpZHVhbCBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0IHN0ZDo6c3RyaW5nLgorLy8gSWYg
YEJ5QW55Q2hhcmAgaXMgZ2l2ZW4gdGhlIGVtcHR5IHN0cmluZywgaXQgYmVoYXZlcyBleGFjdGx5
IGxpa2UKKy8vIGBCeVN0cmluZ2AgYW5kIG1hdGNoZXMgZWFjaCBpbmRpdmlkdWFsIGNoYXJhY3Rl
ciBpbiB0aGUgaW5wdXQgc3RyaW5nLgogLy8KIGNsYXNzIEJ5QW55Q2hhciB7CiAgcHVibGljOgpA
QCAtMTkyLDcgKzE5Miw3IEBAIGNsYXNzIEJ5QW55Q2hhciB7CiAvLyBBIGRlbGltaXRlciBmb3Ig
c3BsaXR0aW5nIGludG8gZXF1YWwtbGVuZ3RoIHN0cmluZ3MuIFRoZSBsZW5ndGggYXJndW1lbnQg
dG8KIC8vIHRoZSBjb25zdHJ1Y3RvciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLgogLy8KLS8vIE5v
dGU6IHRoaXMgZGVsaW1pdGVyIHdvcmtzIHdpdGggc2luZ2xlLWJ5dGUgc3RkOjpzdHJpbmcgZGF0
YSwgYnV0IGRvZXMgbm90IHdvcmsKKy8vIE5vdGU6IHRoaXMgZGVsaW1pdGVyIHdvcmtzIHdpdGgg
c2luZ2xlLWJ5dGUgc3RyaW5nIGRhdGEsIGJ1dCBkb2VzIG5vdCB3b3JrCiAvLyB3aXRoIHZhcmlh
YmxlLXdpZHRoIGVuY29kaW5ncywgc3VjaCBhcyBVVEYtOC4KIC8vCiAvLyBFeGFtcGxlOgpAQCAt
MjAyLDcgKzIwMiw3IEBAIGNsYXNzIEJ5QW55Q2hhciB7CiAKIC8vICAgLy8gdlswXSA9PSAiMTIz
IiwgdlsxXSA9PSAiNDU2IiwgdlsyXSA9PSAiNzg5IgogLy8KLS8vIE5vdGUgdGhhdCB0aGUgc3Rk
OjpzdHJpbmcgZG9lcyBub3QgaGF2ZSB0byBiZSBhIG11bHRpcGxlIG9mIHRoZSBmaXhlZCBzcGxp
dAorLy8gTm90ZSB0aGF0IHRoZSBzdHJpbmcgZG9lcyBub3QgaGF2ZSB0byBiZSBhIG11bHRpcGxl
IG9mIHRoZSBmaXhlZCBzcGxpdAogLy8gbGVuZ3RoLiBJbiBzdWNoIGEgY2FzZSwgdGhlIGxhc3Qg
c3Vic3RyaW5nIHdpbGwgYmUgc2hvcnRlci4KIC8vCiAvLyAgIHVzaW5nIGFic2w6OkJ5TGVuZ3Ro
OwpAQCAtMjIzLDkgKzIyMyw5IEBAIG5hbWVzcGFjZSBzdHJpbmdzX2ludGVybmFsIHsKIC8vIEEg
dHJhaXRzLWxpa2UgbWV0YWZ1bmN0aW9uIGZvciBzZWxlY3RpbmcgdGhlIGRlZmF1bHQgRGVsaW1p
dGVyIG9iamVjdCB0eXBlCiAvLyBmb3IgYSBwYXJ0aWN1bGFyIERlbGltaXRlciB0eXBlLiBUaGUg
YmFzZSBjYXNlIHNpbXBseSBleHBvc2VzIHR5cGUgRGVsaW1pdGVyCiAvLyBpdHNlbGYgYXMgdGhl
IGRlbGltaXRlcidzIFR5cGUuIEhvd2V2ZXIsIHRoZXJlIGFyZSBzcGVjaWFsaXphdGlvbnMgZm9y
Ci0vLyBzdGQ6OnN0cmluZy1saWtlIG9iamVjdHMgdGhhdCBtYXAgdGhlbSB0byB0aGUgQnlTdHJp
bmcgZGVsaW1pdGVyIG9iamVjdC4KKy8vIHN0cmluZy1saWtlIG9iamVjdHMgdGhhdCBtYXAgdGhl
bSB0byB0aGUgQnlTdHJpbmcgZGVsaW1pdGVyIG9iamVjdC4KIC8vIFRoaXMgYWxsb3dzIGZ1bmN0
aW9ucyBsaWtlIGFic2w6OlN0clNwbGl0KCkgYW5kIGFic2w6Ok1heFNwbGl0cygpIHRvIGFjY2Vw
dAotLy8gc3RkOjpzdHJpbmctbGlrZSBvYmplY3RzIChlLmcuLCAnLCcpIGFzIGRlbGltaXRlciBh
cmd1bWVudHMgYnV0IHRoZXkgd2lsbCBiZQorLy8gc3RyaW5nLWxpa2Ugb2JqZWN0cyAoZS5nLiwg
JywnKSBhcyBkZWxpbWl0ZXIgYXJndW1lbnRzIGJ1dCB0aGV5IHdpbGwgYmUKIC8vIHRyZWF0ZWQg
YXMgaWYgYSBCeVN0cmluZyBkZWxpbWl0ZXIgd2FzIGdpdmVuLgogdGVtcGxhdGUgPHR5cGVuYW1l
IERlbGltaXRlcj4KIHN0cnVjdCBTZWxlY3REZWxpbWl0ZXIgewpAQCAtMjYxLDcgKzI2MSw4IEBA
IGNsYXNzIE1heFNwbGl0c0ltcGwgewogICAgICAgOiBkZWxpbWl0ZXJfKGRlbGltaXRlciksIGxp
bWl0XyhsaW1pdCksIGNvdW50XygwKSB7fQogICBhYnNsOjpzdHJpbmdfdmlldyBGaW5kKGFic2w6
OnN0cmluZ192aWV3IHRleHQsIHNpemVfdCBwb3MpIHsKICAgICBpZiAoY291bnRfKysgPT0gbGlt
aXRfKSB7Ci0gICAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcodGV4dC5lbmQoKSwgMCk7ICAv
LyBObyBtb3JlIG1hdGNoZXMuCisgICAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcodGV4dC5k
YXRhKCkgKyB0ZXh0LnNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsg
IC8vIE5vIG1vcmUgbWF0Y2hlcy4KICAgICB9CiAgICAgcmV0dXJuIGRlbGltaXRlcl8uRmluZCh0
ZXh0LCBwb3MpOwogICB9CkBAIC0zMzEsNyArMzMyLDcgQEAgc3RydWN0IEFsbG93RW1wdHkgewog
Ly8gU2tpcEVtcHR5KCkKIC8vCiAvLyBSZXR1cm5zIGBmYWxzZWAgaWYgdGhlIGdpdmVuIGBhYnNs
OjpzdHJpbmdfdmlld2AgaXMgZW1wdHksIGluZGljYXRpbmcgdGhhdAotLy8gYFN0clNwbGl0KClg
IHNob3VsZCBvbWl0IHRoZSBlbXB0eSBzdGQ6OnN0cmluZy4KKy8vIGBTdHJTcGxpdCgpYCBzaG91
bGQgb21pdCB0aGUgZW1wdHkgc3RyaW5nLgogLy8KIC8vIEV4YW1wbGU6CiAvLwpAQCAtMzM5LDcg
KzM0MCw3IEBAIHN0cnVjdCBBbGxvd0VtcHR5IHsKIC8vCiAvLyAgIC8vIHZbMF0gPT0gImEiLCB2
WzFdID09ICJiIgogLy8KLS8vIE5vdGU6IGBTa2lwRW1wdHkoKWAgZG9lcyBub3QgY29uc2lkZXIg
YSBzdGQ6OnN0cmluZyBjb250YWluaW5nIG9ubHkgd2hpdGVzcGFjZQorLy8gTm90ZTogYFNraXBF
bXB0eSgpYCBkb2VzIG5vdCBjb25zaWRlciBhIHN0cmluZyBjb250YWluaW5nIG9ubHkgd2hpdGVz
cGFjZQogLy8gdG8gYmUgZW1wdHkuIFRvIHNraXAgc3VjaCB3aGl0ZXNwYWNlIGFzIHdlbGwsIHVz
ZSB0aGUgYFNraXBXaGl0ZXNwYWNlKClgCiAvLyBwcmVkaWNhdGUuCiBzdHJ1Y3QgU2tpcEVtcHR5
IHsKQEAgLTM0OSw3ICszNTAsNyBAQCBzdHJ1Y3QgU2tpcEVtcHR5IHsKIC8vIFNraXBXaGl0ZXNw
YWNlKCkKIC8vCiAvLyBSZXR1cm5zIGBmYWxzZWAgaWYgdGhlIGdpdmVuIGBhYnNsOjpzdHJpbmdf
dmlld2AgaXMgZW1wdHkgKm9yKiBjb250YWlucyBvbmx5Ci0vLyB3aGl0ZXNwYWNlLCBpbmRpY2F0
aW5nIHRoYXQgYFN0clNwbGl0KClgIHNob3VsZCBvbWl0IHRoZSBzdGQ6OnN0cmluZy4KKy8vIHdo
aXRlc3BhY2UsIGluZGljYXRpbmcgdGhhdCBgU3RyU3BsaXQoKWAgc2hvdWxkIG9taXQgdGhlIHN0
cmluZy4KIC8vCiAvLyBFeGFtcGxlOgogLy8KQEAgLTM3Myw3ICszNzQsNyBAQCBzdHJ1Y3QgU2tp
cFdoaXRlc3BhY2UgewogCiAvLyBTdHJTcGxpdCgpCiAvLwotLy8gU3BsaXRzIGEgZ2l2ZW4gc3Rk
OjpzdHJpbmcgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGBEZWxpbWl0ZXJgIG9iamVjdCwgcmV0dXJu
aW5nIHRoZQorLy8gU3BsaXRzIGEgZ2l2ZW4gc3RyaW5nIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBg
RGVsaW1pdGVyYCBvYmplY3QsIHJldHVybmluZyB0aGUKIC8vIGVsZW1lbnRzIHdpdGhpbiB0aGUg
dHlwZSBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlci4gT3B0aW9uYWxseSwgeW91IG1heSBwYXNzIGEK
IC8vIGBQcmVkaWNhdGVgIHRvIGBTdHJTcGxpdCgpYCBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gaW5j
bHVkZSBvciBleGNsdWRlIHRoZQogLy8gcmVzdWx0aW5nIGVsZW1lbnQgd2l0aGluIHRoZSBmaW5h
bCByZXN1bHQgc2V0LiAoU2VlIHRoZSBvdmVydmlld3MgZm9yCkBAIC00MTIsNyArNDEzLDcgQEAg
c3RydWN0IFNraXBXaGl0ZXNwYWNlIHsKIC8vCiAvLyBUaGUgYFN0clNwbGl0KClgIGZ1bmN0aW9u
IGFkYXB0cyB0aGUgcmV0dXJuZWQgY29sbGVjdGlvbiB0byB0aGUgY29sbGVjdGlvbgogLy8gc3Bl
Y2lmaWVkIGJ5IHRoZSBjYWxsZXIgKGUuZy4gYHN0ZDo6dmVjdG9yYCBhYm92ZSkuIFRoZSByZXR1
cm5lZCBjb2xsZWN0aW9ucwotLy8gbWF5IGNvbnRhaW4gYHN0cmluZ2AsIGBhYnNsOjpzdHJpbmdf
dmlld2AgKGluIHdoaWNoIGNhc2UgdGhlIG9yaWdpbmFsIHN0ZDo6c3RyaW5nCisvLyBtYXkgY29u
dGFpbiBgc3RyaW5nYCwgYGFic2w6OnN0cmluZ192aWV3YCAoaW4gd2hpY2ggY2FzZSB0aGUgb3Jp
Z2luYWwgc3RyaW5nCiAvLyBiZWluZyBzcGxpdCBtdXN0IGVuc3VyZSB0aGF0IGl0IG91dGxpdmVz
IHRoZSBjb2xsZWN0aW9uKSwgb3IgYW55IG9iamVjdCB0aGF0CiAvLyBjYW4gYmUgZXhwbGljaXRs
eSBjcmVhdGVkIGZyb20gYW4gYGFic2w6OnN0cmluZ192aWV3YC4gVGhpcyBiZWhhdmlvciB3b3Jr
cwogLy8gZm9yOgpAQCAtNDI0LDcgKzQyNSw3IEBAIHN0cnVjdCBTa2lwV2hpdGVzcGFjZSB7CiAv
LyBFeGFtcGxlOgogLy8KIC8vICAgLy8gVGhlIHJlc3VsdHMgYXJlIHJldHVybmVkIGFzIGBhYnNs
OjpzdHJpbmdfdmlld2Agb2JqZWN0cy4gTm90ZSB0aGF0IHdlCi0vLyAgIC8vIGhhdmUgdG8gZW5z
dXJlIHRoYXQgdGhlIGlucHV0IHN0ZDo6c3RyaW5nIG91dGxpdmVzIGFueSByZXN1bHRzLgorLy8g
ICAvLyBoYXZlIHRvIGVuc3VyZSB0aGF0IHRoZSBpbnB1dCBzdHJpbmcgb3V0bGl2ZXMgYW55IHJl
c3VsdHMuCiAvLyAgIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PiB2ID0gYWJzbDo6U3Ry
U3BsaXQoImEsYixjIiwgJywnKTsKIC8vCiAvLyAgIC8vIFN0b3JlcyByZXN1bHRzIGluIGEgc3Rk
OjpzZXQ8c3RkOjpzdHJpbmc+LCB3aGljaCBhbHNvIHBlcmZvcm1zCkBAIC00NDQsNyArNDQ1LDcg
QEAgc3RydWN0IFNraXBXaGl0ZXNwYWNlIHsKIC8vICAgLy8gaXMgcHJvdmlkZWQgYXMgYSBzZXJp
ZXMgb2Yga2V5L3ZhbHVlIHBhaXJzLiBGb3IgZXhhbXBsZSwgdGhlIDB0aCBlbGVtZW50CiAvLyAg
IC8vIHJlc3VsdGluZyBmcm9tIHRoZSBzcGxpdCB3aWxsIGJlIHN0b3JlZCBhcyBhIGtleSB0byB0
aGUgMXN0IGVsZW1lbnQuIElmCiAvLyAgIC8vIGFuIG9kZCBudW1iZXIgb2YgZWxlbWVudHMgYXJl
IHJlc29sdmVkLCB0aGUgbGFzdCBlbGVtZW50IGlzIHBhaXJlZCB3aXRoCi0vLyAgIC8vIGEgZGVm
YXVsdC1jb25zdHJ1Y3RlZCB2YWx1ZSAoZS5nLiwgZW1wdHkgc3RkOjpzdHJpbmcpLgorLy8gICAv
LyBhIGRlZmF1bHQtY29uc3RydWN0ZWQgdmFsdWUgKGUuZy4sIGVtcHR5IHN0cmluZykuCiAvLyAg
IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gbSA9IGFic2w6OlN0clNwbGl0KCJh
LGIsYyIsICcsJyk7CiAvLyAgIC8vIG1bImEiXSA9PSAiYiIsIG1bImMiXSA9PSAiIiAgICAgLy8g
bGFzdCBjb21wb25lbnQgdmFsdWUgZXF1YWxzICIiCiAvLwpAQCAtNDUyLDE0ICs0NTMsMTQgQEAg
c3RydWN0IFNraXBXaGl0ZXNwYWNlIHsKIC8vIGVsZW1lbnRzIGFuZCBpcyBub3QgYSBjb2xsZWN0
aW9uIHR5cGUuIFdoZW4gc3BsaXR0aW5nIHRvIGEgYHN0ZDo6cGFpcmAgdGhlCiAvLyBmaXJzdCB0
d28gc3BsaXQgc3RyaW5ncyBiZWNvbWUgdGhlIGBzdGQ6OnBhaXJgIGAuZmlyc3RgIGFuZCBgLnNl
Y29uZGAKIC8vIG1lbWJlcnMsIHJlc3BlY3RpdmVseS4gVGhlIHJlbWFpbmluZyBzcGxpdCBzdWJz
dHJpbmdzIGFyZSBkaXNjYXJkZWQuIElmIHRoZXJlCi0vLyBhcmUgbGVzcyB0aGFuIHR3byBzcGxp
dCBzdWJzdHJpbmdzLCB0aGUgZW1wdHkgc3RkOjpzdHJpbmcgaXMgdXNlZCBmb3IgdGhlCisvLyBh
cmUgbGVzcyB0aGFuIHR3byBzcGxpdCBzdWJzdHJpbmdzLCB0aGUgZW1wdHkgc3RyaW5nIGlzIHVz
ZWQgZm9yIHRoZQogLy8gY29ycmVzcG9uZGluZwogLy8gYHN0ZDo6cGFpcmAgbWVtYmVyLgogLy8K
IC8vIEV4YW1wbGU6CiAvLwogLy8gICAvLyBTdG9yZXMgZmlyc3QgdHdvIHNwbGl0IHN0cmluZ3Mg
YXMgdGhlIG1lbWJlcnMgaW4gYSBzdGQ6OnBhaXIuCi0vLyAgIHN0ZDo6cGFpcjxzdGQ6OnN0cmlu
Zywgc3RkOjpzdHJpbmc+IHAgPSBhYnNsOjpTdHJTcGxpdCgiYSxiLGMiLCAnLCcpOworLy8gICBz
dGQ6OnBhaXI8c3RyaW5nLCBzdHJpbmc+IHAgPSBhYnNsOjpTdHJTcGxpdCgiYSxiLGMiLCAnLCcp
OwogLy8gICAvLyBwLmZpcnN0ID09ICJhIiwgcC5zZWNvbmQgPT0gImIiICAgICAgIC8vICJjIiBp
cyBvbWl0dGVkLgogLy8KIC8vIFRoZSBgU3RyU3BsaXQoKWAgZnVuY3Rpb24gY2FuIGJlIHVzZWQg
bXVsdGlwbGUgdGltZXMgdG8gcGVyZm9ybSBtb3JlCkBAIC00NjcsOSArNDY4LDkgQEAgc3RydWN0
IFNraXBXaGl0ZXNwYWNlIHsKIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgLy8gVGhlIGlucHV0
IHN0ZDo6c3RyaW5nICJhPWI9YyxkPWUsZj0sZyIgYmVjb21lcworLy8gICAvLyBUaGUgaW5wdXQg
c3RyaW5nICJhPWI9YyxkPWUsZj0sZyIgYmVjb21lcwogLy8gICAvLyB7ICJhIiA9PiAiYj1jIiwg
ImQiID0+ICJlIiwgImYiID0+ICIiLCAiZyIgPT4gIiIgfQotLy8gICBzdGQ6Om1hcDxzdGQ6OnN0
cmluZywgc3RkOjpzdHJpbmc+IG07CisvLyAgIHN0ZDo6bWFwPHN0cmluZywgc3RyaW5nPiBtOwog
Ly8gICBmb3IgKGFic2w6OnN0cmluZ192aWV3IHNwIDogYWJzbDo6U3RyU3BsaXQoImE9Yj1jLGQ9
ZSxmPSxnIiwgJywnKSkgewogLy8gICAgIG0uaW5zZXJ0KGFic2w6OlN0clNwbGl0KHNwLCBhYnNs
OjpNYXhTcGxpdHMoJz0nLCAxKSkpOwogLy8gICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cl9zcGxpdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXRfdGVzdC5jYwppbmRl
eCAyOWE2ODA0N2M5OWFlZjMxYmM3ZDM2NzNhMzJiNzIyODU0MmM3OWEzLi40MTNhZDMxOGJmOWIy
OTMzN2I3ZTg4Nzg4YTU1MGE5ZGIzZTUwZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0
cl9zcGxpdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0X3Rlc3QuY2MKQEAg
LTI3Niw3ICsyNzYsNyBAQCBURVNUKFNwbGl0SXRlcmF0b3IsIEJhc2ljcykgewogICBFWFBFQ1Rf
RVEoaXQsIGVuZCk7CiB9CiAKLS8vIFNpbXBsZSBQcmVkaWNhdGUgdG8gc2tpcCBhIHBhcnRpY3Vs
YXIgc3RkOjpzdHJpbmcuCisvLyBTaW1wbGUgUHJlZGljYXRlIHRvIHNraXAgYSBwYXJ0aWN1bGFy
IHN0cmluZy4KIGNsYXNzIFNraXAgewogIHB1YmxpYzoKICAgZXhwbGljaXQgU2tpcChjb25zdCBz
dGQ6OnN0cmluZyYgcykgOiBzXyhzKSB7fQpAQCAtNzYzLDEyICs3NjMsMTIgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIERlbGltaXRlcj4KIHN0YXRpYyBib29sIElzRm91bmRBdFN0YXJ0aW5nUG9zKGFi
c2w6OnN0cmluZ192aWV3IHRleHQsIERlbGltaXRlciBkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHN0YXJ0aW5nX3BvcywgaW50IGV4cGVjdGVkX3BvcykgewogICBh
YnNsOjpzdHJpbmdfdmlldyBmb3VuZCA9IGQuRmluZCh0ZXh0LCBzdGFydGluZ19wb3MpOwotICBy
ZXR1cm4gZm91bmQuZGF0YSgpICE9IHRleHQuZW5kKCkgJiYKKyAgcmV0dXJuIGZvdW5kLmRhdGEo
KSAhPSB0ZXh0LmRhdGEoKSArIHRleHQuc2l6ZSgpICYmCiAgICAgICAgICBleHBlY3RlZF9wb3Mg
PT0gZm91bmQuZGF0YSgpIC0gdGV4dC5kYXRhKCk7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbiBm
b3IgdGVzdGluZyBEZWxpbWl0ZXIgb2JqZWN0cy4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbgot
Ly8gRGVsaW1pdGVyIGlzIGZvdW5kIGluIHRoZSBnaXZlbiBzdGQ6OnN0cmluZyBhdCB0aGUgZ2l2
ZW4gcG9zaXRpb24uIFRoaXMgZnVuY3Rpb24KKy8vIERlbGltaXRlciBpcyBmb3VuZCBpbiB0aGUg
Z2l2ZW4gc3RyaW5nIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4gVGhpcyBmdW5jdGlvbgogLy8gdGVz
dHMgdHdvIGNhc2VzOgogLy8gICAxLiBUaGUgYWN0dWFsIHRleHQgZ2l2ZW4sIHN0YXJpbmcgYXQg
cG9zaXRpb24gMAogLy8gICAyLiBUaGUgdGV4dCBnaXZlbiB3aXRoIGxlYWRpbmcgcGFkZGluZyB0
aGF0IHNob3VsZCBiZSBpZ25vcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192
aWV3LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgKaW5kZXggMWI4ZjhhMzc0NzQ1Y2I2
NDY2YjFjZDYyMjE5N2ZkYzJmNmRjZDlkNS4uZWM5ZjYyYmUxNTczM2UzY2RlODI1NmRmMWNmYzUy
MGMyMmUxMWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaApAQCAtMTksNyArMTksNyBAQAogLy8KIC8vIFRo
aXMgZmlsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYGFic2w6OnN0cmluZ192aWV3
YCBjbGFzcy4gQQogLy8gYHN0cmluZ192aWV3YCBwb2ludHMgdG8gYSBjb250aWd1b3VzIHNwYW4g
b2YgY2hhcmFjdGVycywgb2Z0ZW4gcGFydCBvciBhbGwgb2YKLS8vIGFub3RoZXIgYHN0ZDo6c3Ry
aW5nYCwgZG91YmxlLXF1b3RlZCBzdGQ6OnN0cmluZyBsaXRlcmFsLCBjaGFyYWN0ZXIgYXJyYXks
IG9yIGV2ZW4KKy8vIGFub3RoZXIgYHN0ZDo6c3RyaW5nYCwgZG91YmxlLXF1b3RlZCBzdHJpbmcg
bGl0ZXJhbCwgY2hhcmFjdGVyIGFycmF5LCBvciBldmVuCiAvLyBhbm90aGVyIGBzdHJpbmdfdmll
d2AuCiAvLwogLy8gVGhpcyBgYWJzbDo6c3RyaW5nX3ZpZXdgIGFic3RyYWN0aW9uIGlzIGRlc2ln
bmVkIHRvIGJlIGEgZHJvcC1pbgpAQCAtNTYsMTUgKzU2LDE1IEBAIG5hbWVzcGFjZSBhYnNsIHsK
IAogLy8gYWJzbDo6c3RyaW5nX3ZpZXcKIC8vCi0vLyBBIGBzdHJpbmdfdmlld2AgcHJvdmlkZXMg
YSBsaWdodHdlaWdodCB2aWV3IGludG8gdGhlIHN0ZDo6c3RyaW5nIGRhdGEgcHJvdmlkZWQgYnkK
LS8vIGEgYHN0ZDo6c3RyaW5nYCwgZG91YmxlLXF1b3RlZCBzdGQ6OnN0cmluZyBsaXRlcmFsLCBj
aGFyYWN0ZXIgYXJyYXksIG9yIGV2ZW4KLS8vIGFub3RoZXIgYHN0cmluZ192aWV3YC4gQSBgc3Ry
aW5nX3ZpZXdgIGRvZXMgKm5vdCogb3duIHRoZSBzdGQ6OnN0cmluZyB0byB3aGljaCBpdAorLy8g
QSBgc3RyaW5nX3ZpZXdgIHByb3ZpZGVzIGEgbGlnaHR3ZWlnaHQgdmlldyBpbnRvIHRoZSBzdHJp
bmcgZGF0YSBwcm92aWRlZCBieQorLy8gYSBgc3RkOjpzdHJpbmdgLCBkb3VibGUtcXVvdGVkIHN0
cmluZyBsaXRlcmFsLCBjaGFyYWN0ZXIgYXJyYXksIG9yIGV2ZW4KKy8vIGFub3RoZXIgYHN0cmlu
Z192aWV3YC4gQSBgc3RyaW5nX3ZpZXdgIGRvZXMgKm5vdCogb3duIHRoZSBzdHJpbmcgdG8gd2hp
Y2ggaXQKIC8vIHBvaW50cywgYW5kIHRoYXQgZGF0YSBjYW5ub3QgYmUgbW9kaWZpZWQgdGhyb3Vn
aCB0aGUgdmlldy4KIC8vCiAvLyBZb3UgY2FuIHVzZSBgc3RyaW5nX3ZpZXdgIGFzIGEgZnVuY3Rp
b24gb3IgbWV0aG9kIHBhcmFtZXRlciBhbnl3aGVyZSBhCi0vLyBwYXJhbWV0ZXIgY2FuIHJlY2Vp
dmUgYSBkb3VibGUtcXVvdGVkIHN0ZDo6c3RyaW5nIGxpdGVyYWwsIGBjb25zdCBjaGFyKmAsCisv
LyBwYXJhbWV0ZXIgY2FuIHJlY2VpdmUgYSBkb3VibGUtcXVvdGVkIHN0cmluZyBsaXRlcmFsLCBg
Y29uc3QgY2hhcipgLAogLy8gYHN0ZDo6c3RyaW5nYCwgb3IgYW5vdGhlciBgYWJzbDo6c3RyaW5n
X3ZpZXdgIGFyZ3VtZW50IHdpdGggbm8gbmVlZCB0byBjb3B5Ci0vLyB0aGUgc3RkOjpzdHJpbmcg
ZGF0YS4gU3lzdGVtYXRpYyB1c2Ugb2YgYHN0cmluZ192aWV3YCB3aXRoaW4gZnVuY3Rpb24gYXJn
dW1lbnRzCisvLyB0aGUgc3RyaW5nIGRhdGEuIFN5c3RlbWF0aWMgdXNlIG9mIGBzdHJpbmdfdmll
d2Agd2l0aGluIGZ1bmN0aW9uIGFyZ3VtZW50cwogLy8gcmVkdWNlcyBkYXRhIGNvcGllcyBhbmQg
YHN0cmxlbigpYCBjYWxscy4KIC8vCiAvLyBCZWNhdXNlIG9mIGl0cyBzbWFsbCBzaXplLCBwcmVm
ZXIgcGFzc2luZyBgc3RyaW5nX3ZpZXdgIGJ5IHZhbHVlOgpAQCAtOTcsOCArOTcsOCBAQCBuYW1l
c3BhY2UgYWJzbCB7CiAvLyBgc3RyaW5nX3ZpZXdgIHRoaXMgd2F5LCBpdCBpcyB5b3VyIHJlc3Bv
bnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBvYmplY3QKIC8vIHBvaW50ZWQgdG8gYnkgdGhl
IGBzdHJpbmdfdmlld2Agb3V0bGl2ZXMgdGhlIGBzdHJpbmdfdmlld2AuCiAvLwotLy8gQSBgc3Ry
aW5nX3ZpZXdgIG1heSByZXByZXNlbnQgYSB3aG9sZSBzdGQ6OnN0cmluZyBvciBqdXN0IHBhcnQg
b2YgYSBzdGQ6OnN0cmluZy4gRm9yCi0vLyBleGFtcGxlLCB3aGVuIHNwbGl0dGluZyBhIHN0ZDo6
c3RyaW5nLCBgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+YCBpcyBhCisvLyBBIGBzdHJp
bmdfdmlld2AgbWF5IHJlcHJlc2VudCBhIHdob2xlIHN0cmluZyBvciBqdXN0IHBhcnQgb2YgYSBz
dHJpbmcuIEZvcgorLy8gZXhhbXBsZSwgd2hlbiBzcGxpdHRpbmcgYSBzdHJpbmcsIGBzdGQ6OnZl
Y3RvcjxhYnNsOjpzdHJpbmdfdmlldz5gIGlzIGEKIC8vIG5hdHVyYWwgZGF0YSB0eXBlIGZvciB0
aGUgb3V0cHV0LgogLy8KIC8vCkBAIC0xNDEsNyArMTQxLDcgQEAgbmFtZXNwYWNlIGFic2wgewog
Ly8gQWxsIGVtcHR5IGBzdHJpbmdfdmlld2Agb2JqZWN0cyB3aGV0aGVyIG51bGwgb3Igbm90LCBh
cmUgZXF1YWw6CiAvLwogLy8gICBhYnNsOjpzdHJpbmdfdmlldygpID09IGFic2w6OnN0cmluZ192
aWV3KCIiLCAwKQotLy8gICBhYnNsOjpzdHJpbmdfdmlldyhudWxscHRyLCAwKSA9PSBhYnNsOjog
c3RyaW5nX3ZpZXcoImFiY2RlZiIrNiwgMCkKKy8vICAgYWJzbDo6c3RyaW5nX3ZpZXcobnVsbHB0
ciwgMCkgPT0gYWJzbDo6c3RyaW5nX3ZpZXcoImFiY2RlZiIrNiwgMCkKIGNsYXNzIHN0cmluZ192
aWV3IHsKICBwdWJsaWM6CiAgIHVzaW5nIHRyYWl0c190eXBlID0gc3RkOjpjaGFyX3RyYWl0czxj
aGFyPjsKQEAgLTE3Myw4ICsxNzMsMTkgQEAgY2xhc3Mgc3RyaW5nX3ZpZXcgewogICAvLyBJbXBs
aWNpdCBjb25zdHJ1Y3RvciBvZiBhIGBzdHJpbmdfdmlld2AgZnJvbSBudWwtdGVybWluYXRlZCBg
c3RyYC4gV2hlbgogICAvLyBhY2NlcHRpbmcgcG9zc2libHkgbnVsbCBzdHJpbmdzLCB1c2UgYGFi
c2w6Ok51bGxTYWZlU3RyaW5nVmlldyhzdHIpYAogICAvLyBpbnN0ZWFkIChzZWUgYmVsb3cpLgor
I2lmIEFCU0xfSEFWRV9CVUlMVElOKF9fYnVpbHRpbl9zdHJsZW4pIHx8IFwKKyAgICAoZGVmaW5l
ZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19jbGFuZ19fKSkKKyAgLy8gR0NDIGhhcyBfX2J1aWx0
aW5fc3RybGVuIGFjY29yZGluZyB0bworICAvLyBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRv
Y3MvZ2NjLTQuNy4wL2djYy9PdGhlci1CdWlsdGlucy5odG1sLCBidXQKKyAgLy8gQUJTTF9IQVZF
X0JVSUxUSU4gZG9lc24ndCBkZXRlY3QgdGhhdCwgc28gd2UgdXNlIHRoZSBleHRyYSBjaGVja3Mg
YWJvdmUuCisgIC8vIF9fYnVpbHRpbl9zdHJsZW4gaXMgY29uc3RleHByLgorICBjb25zdGV4cHIg
c3RyaW5nX3ZpZXcoY29uc3QgY2hhciogc3RyKSAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQp
CisgICAgICA6IHB0cl8oc3RyKSwKKyAgICAgICAgbGVuZ3RoXyhDaGVja0xlbmd0aEludGVybmFs
KHN0ciA/IF9fYnVpbHRpbl9zdHJsZW4oc3RyKSA6IDApKSB7fQorI2Vsc2UKICAgY29uc3RleHBy
IHN0cmluZ192aWV3KGNvbnN0IGNoYXIqIHN0cikgIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0
KQotICAgICAgOiBwdHJfKHN0ciksIGxlbmd0aF8oQ2hlY2tMZW5ndGhJbnRlcm5hbChTdHJMZW5J
bnRlcm5hbChzdHIpKSkge30KKyAgICAgIDogcHRyXyhzdHIpLCBsZW5ndGhfKENoZWNrTGVuZ3Ro
SW50ZXJuYWwoc3RyID8gc3RybGVuKHN0cikgOiAwKSkge30KKyNlbmRpZgogCiAgIC8vIEltcGxp
Y2l0IGNvbnN0cnVjdG9yIG9mIGEgYHN0cmluZ192aWV3YCBmcm9tIGEgYGNvbnN0IGNoYXIqYCBh
bmQgbGVuZ3RoLgogICBjb25zdGV4cHIgc3RyaW5nX3ZpZXcoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90eXBlIGxlbikKQEAgLTM0MCw3ICszNTEsNyBAQCBjbGFzcyBzdHJpbmdfdmlldyB7CiAgIC8v
CiAgIC8vIFJldHVybnMgYSAic3Vic3RyaW5nIiBvZiB0aGUgYHN0cmluZ192aWV3YCAoYXQgb2Zm
c2V0IGBwb3NgIGFuZCBsZW5ndGgKICAgLy8gYG5gKSBhcyBhbm90aGVyIHN0cmluZ192aWV3LiBU
aGlzIGZ1bmN0aW9uIHRocm93cyBgc3RkOjpvdXRfb2ZfYm91bmRzYCBpZgotICAvLyBgcG9zID4g
c2l6ZScuCisgIC8vIGBwb3MgPiBzaXplYC4KICAgc3RyaW5nX3ZpZXcgc3Vic3RyKHNpemVfdHlw
ZSBwb3MsIHNpemVfdHlwZSBuID0gbnBvcykgY29uc3QgewogICAgIGlmIChBQlNMX1BSRURJQ1Rf
RkFMU0UocG9zID4gbGVuZ3RoXykpCiAgICAgICBiYXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9m
UmFuZ2UoImFic2w6OnN0cmluZ192aWV3OjpzdWJzdHIiKTsKQEAgLTM1MSw3ICszNjIsNyBAQCBj
bGFzcyBzdHJpbmdfdmlldyB7CiAgIC8vIHN0cmluZ192aWV3Ojpjb21wYXJlKCkKICAgLy8KICAg
Ly8gUGVyZm9ybXMgYSBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZSBgc3Ry
aW5nX3ZpZXdgIGFuZAotICAvLyBhbm90aGVyIGBhYnNsOjpzdHJpbmdfdmlldyksIHJldHVybmlu
ZyAtMSBpZiBgdGhpc2AgaXMgbGVzcyB0aGFuLCAwIGlmCisgIC8vIGFub3RoZXIgYGFic2w6OnN0
cmluZ192aWV3YCwgcmV0dXJuaW5nIC0xIGlmIGB0aGlzYCBpcyBsZXNzIHRoYW4sIDAgaWYKICAg
Ly8gYHRoaXNgIGlzIGVxdWFsIHRvLCBhbmQgMSBpZiBgdGhpc2AgaXMgZ3JlYXRlciB0aGFuIHRo
ZSBwYXNzZWQgc3RkOjpzdHJpbmcKICAgLy8gdmlldy4gTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9m
IGRhdGEgZXF1YWxpdHksIGEgZnVydGhlciBjb21wYXJpc29uIGlzIG1hZGUKICAgLy8gb24gdGhl
IHJlc3BlY3RpdmUgc2l6ZXMgb2YgdGhlIHR3byBgc3RyaW5nX3ZpZXdgcyB0byBkZXRlcm1pbmUg
d2hpY2ggaXMKQEAgLTQ4MSwyMiArNDkyLDYgQEAgY2xhc3Mgc3RyaW5nX3ZpZXcgewogICBzdGF0
aWMgY29uc3RleHByIHNpemVfdHlwZSBrTWF4U2l6ZSA9CiAgICAgICBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRpZmZlcmVuY2VfdHlwZT46Om1heCgpOwogCi0gIC8vIGNoZWNrIHdoZXRoZXIgX19idWls
dGluX3N0cmxlbiBpcyBwcm92aWRlZCBieSB0aGUgY29tcGlsZXIuCi0gIC8vIEdDQyBkb2Vzbid0
IGhhdmUgX19oYXNfYnVpbHRpbigpCi0gIC8vIChodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxh
L3Nob3dfYnVnLmNnaT9pZD02Njk3MCksCi0gIC8vIGJ1dCBoYXMgX19idWlsdGluX3N0cmxlbiBh
Y2NvcmRpbmcgdG8KLSAgLy8gaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy00Ljcu
MC9nY2MvT3RoZXItQnVpbHRpbnMuaHRtbC4KLSNpZiBBQlNMX0hBVkVfQlVJTFRJTihfX2J1aWx0
aW5fc3RybGVuKSB8fCBcCi0gICAgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fY2xh
bmdfXykpCi0gIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90eXBlIFN0ckxlbkludGVybmFsKGNvbnN0
IGNoYXIqIHN0cikgewotICAgIHJldHVybiBzdHIgPyBfX2J1aWx0aW5fc3RybGVuKHN0cikgOiAw
OwotICB9Ci0jZWxzZQotICBzdGF0aWMgY29uc3RleHByIHNpemVfdHlwZSBTdHJMZW5JbnRlcm5h
bChjb25zdCBjaGFyKiBzdHIpIHsKLSAgICByZXR1cm4gc3RyID8gc3RybGVuKHN0cikgOiAwOwot
ICB9Ci0jZW5kaWYKLQogICBzdGF0aWMgY29uc3RleHByIHNpemVfdHlwZSBDaGVja0xlbmd0aElu
dGVybmFsKHNpemVfdHlwZSBsZW4pIHsKICAgICByZXR1cm4gbGVuOwogICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlu
Z192aWV3X3Rlc3QuY2MKaW5kZXggYjE5ZDA3YzdmZDYxZDgyMTIyM2JmYzBiZjk3YjJhMmE2MjM0
ZDM4Yy4uYTk0ZTgyMjU0ZWU0NTIxZGZjMTFiMDVhYTg5ZDBlNzQxY2E1YjdjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlld190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3RyaW5nX3ZpZXdfdGVzdC5jYwpAQCAtMzUsNyArMzUsOCBAQAogI2RlZmluZSBBQlNMX0VYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAogICBFWFBFQ1RfREVBVEhf
SUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgIi4qIikKICNlbHNlCi0jZGVmaW5lIEFCU0xfRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRCBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVECisjZGVmaW5lIEFC
U0xfRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgIEVYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgewpAQCAtMjgzLDcgKzI4NCw3IEBAIFRFU1QoU3RyaW5nVmlld1Rlc3QsIENvbXBhcmlzb25P
cGVyYXRvcnNCeUNoYXJhY3RlclBvc2l0aW9uKSB7CiB9CiAjdW5kZWYgQ09NUEFSRQogCi0vLyBT
YWRseSwgb3VyIHVzZXJzIG9mdGVuIGNvbmZ1c2Ugc3RkOjpzdHJpbmc6Om5wb3Mgd2l0aCBhYnNs
OjpzdHJpbmdfdmlldzo6bnBvczsKKy8vIFNhZGx5LCBvdXIgdXNlcnMgb2Z0ZW4gY29uZnVzZSBz
dHJpbmc6Om5wb3Mgd2l0aCBhYnNsOjpzdHJpbmdfdmlldzo6bnBvczsKIC8vIFNvIG11Y2ggc28g
dGhhdCB3ZSB0ZXN0IGhlcmUgdGhhdCB0aGV5IGFyZSB0aGUgc2FtZS4gIFRoZXkgbmVlZCB0bwog
Ly8gYm90aCBiZSB1bnNpZ25lZCwgYW5kIGJvdGggYmUgdGhlIG1heGltdW0tdmFsdWVkIGludGVn
ZXIgb2YgdGhlaXIgdHlwZS4KIApAQCAtODExLDE1ICs4MTIsMTggQEAgVEVTVChTdHJpbmdWaWV3
VGVzdCwgRnJvbnRCYWNrU2luZ2xlQ2hhcikgewogfQogCiAvLyBgc3RkOjpzdHJpbmdfdmlldzo6
c3RyaW5nX3ZpZXcoY29uc3QgY2hhciopYCBjYWxscwotLy8gYHN0ZDo6Y2hhcl90cmFpdHM8Y2hh
cj46Omxlbmd0aChjb25zdCBjaGFyKilgIHRvIGdldCB0aGUgc3RkOjpzdHJpbmcgbGVuZ3RoLiBJ
bgorLy8gYHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj46Omxlbmd0aChjb25zdCBjaGFyKilgIHRvIGdl
dCB0aGUgc3RyaW5nIGxlbmd0aC4gSW4KIC8vIGxpYmMrKywgaXQgZG9lc24ndCBhbGxvdyBgbnVs
bHB0cmAgaW4gdGhlIGNvbnN0ZXhwciBjb250ZXh0LCB3aXRoIHRoZSBlcnJvcgogLy8gInJlYWQg
b2YgZGVyZWZlcmVuY2VkIG51bGwgcG9pbnRlciBpcyBub3QgYWxsb3dlZCBpbiBhIGNvbnN0YW50
IGV4cHJlc3Npb24iLgogLy8gQXQgcnVuIHRpbWUsIHRoZSBiZWhhdmlvciBvZiBgc3RkOjpjaGFy
X3RyYWl0czo6bGVuZ3RoKClgIG9uIGBudWxscHRyYCBpcwotLy8gdW5kZWZpbmVkIGJ5IHRoZSBz
dGFuZGFyZCBhbmQgdXN1YWxseSByZXN1bHRzIGluIGNyYXNoIHdpdGggbGliYysrLiBUaGlzCi0v
LyBjb25mb3JtcyB0byB0aGUgc3RhbmRhcmQsIGJ1dCBgYWJzbDo6c3RyaW5nX3ZpZXdgIGltcGxl
bWVudHMgYSBkaWZmZXJlbnQKKy8vIHVuZGVmaW5lZCBieSB0aGUgc3RhbmRhcmQgYW5kIHVzdWFs
bHkgcmVzdWx0cyBpbiBjcmFzaCB3aXRoIGxpYmMrKy4KKy8vIEluIE1TVkMsIGNyZWF0aW5nIGEg
Y29uc3RleHByIHN0cmluZ192aWV3IGZyb20gbnVsbHB0ciBhbHNvIHRyaWdnZXJzIGFuCisvLyAi
dW5ldmFsdWFibGUgcG9pbnRlciB2YWx1ZSIgZXJyb3IuIFRoaXMgY29tcGlsZXIgaW1wbGVtZW50
YXRpb24gY29uZm9ybXMKKy8vIHRvIHRoZSBzdGFuZGFyZCwgYnV0IGBhYnNsOjpzdHJpbmdfdmll
d2AgaW1wbGVtZW50cyBhIGRpZmZlcmVudAogLy8gYmVoYXZpb3IgZm9yIGhpc3RvcmljYWwgcmVh
c29ucy4gV2Ugd29yayBhcm91bmQgdGVzdHMgdGhhdCBjb25zdHJ1Y3QKIC8vIGBzdHJpbmdfdmll
d2AgZnJvbSBgbnVsbHB0cmAgd2hlbiB1c2luZyBsaWJjKysuCi0jaWYgIWRlZmluZWQoQUJTTF9I
QVZFX1NURF9TVFJJTkdfVklFVykgfHwgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKQorI2lmICFk
ZWZpbmVkKEFCU0xfSEFWRV9TVERfU1RSSU5HX1ZJRVcpIHx8IFwKKyAgICAoIWRlZmluZWQoX0xJ
QkNQUF9WRVJTSU9OKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikpCiAjZGVmaW5lIEFCU0xfSEFWRV9T
VFJJTkdfVklFV19GUk9NX05VTExQVFIgMQogI2VuZGlmICAvLyAhZGVmaW5lZChBQlNMX0hBVkVf
U1REX1NUUklOR19WSUVXKSB8fCAhZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaXAuaAppbmRleCAy
ZjhkMjFmN2RlYjlmY2EwMjkzOGNhN2E5MjQwYTBlMTc3NTZmMjExLi44ZDBkN2M2YmZjMTIzMGYw
YzM5YTE1MTIxOGUxY2M5MjdiODgzNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlw
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcC5oCkBAIC0xNyw3ICsxNyw3IEBACiAvLyBGaWxl
OiBzdHJpcC5oCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KLS8vIFRoaXMgZmlsZSBjb250
YWlucyB2YXJpb3VzIGZ1bmN0aW9ucyBmb3Igc3RyaXBwaW5nIHN1YnN0cmluZ3MgZnJvbSBhIHN0
ZDo6c3RyaW5nLgorLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHZhcmlvdXMgZnVuY3Rpb25zIGZvciBz
dHJpcHBpbmcgc3Vic3RyaW5ncyBmcm9tIGEgc3RyaW5nLgogI2lmbmRlZiBBQlNMX1NUUklOR1Nf
U1RSSVBfSF8KICNkZWZpbmUgQUJTTF9TVFJJTkdTX1NUUklQX0hfCiAKQEAgLTMzLDcgKzMzLDcg
QEAgbmFtZXNwYWNlIGFic2wgewogCiAvLyBDb25zdW1lUHJlZml4KCkKIC8vCi0vLyBTdHJpcHMg
dGhlIGBleHBlY3RlZGAgcHJlZml4IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBnaXZlbiBzdGQ6OnN0
cmluZywgcmV0dXJuaW5nCisvLyBTdHJpcHMgdGhlIGBleHBlY3RlZGAgcHJlZml4IGZyb20gdGhl
IHN0YXJ0IG9mIHRoZSBnaXZlbiBzdHJpbmcsIHJldHVybmluZwogLy8gYHRydWVgIGlmIHRoZSBz
dHJpcCBvcGVyYXRpb24gc3VjY2VlZGVkIG9yIGZhbHNlIG90aGVyd2lzZS4KIC8vCiAvLyBFeGFt
cGxlOgpAQCAtNDgsNyArNDgsNyBAQCBpbmxpbmUgYm9vbCBDb25zdW1lUHJlZml4KGFic2w6OnN0
cmluZ192aWV3KiBzdHIsIGFic2w6OnN0cmluZ192aWV3IGV4cGVjdGVkKSB7CiB9CiAvLyBDb25z
dW1lU3VmZml4KCkKIC8vCi0vLyBTdHJpcHMgdGhlIGBleHBlY3RlZGAgc3VmZml4IGZyb20gdGhl
IGVuZCBvZiB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcsIHJldHVybmluZworLy8gU3RyaXBzIHRoZSBg
ZXhwZWN0ZWRgIHN1ZmZpeCBmcm9tIHRoZSBlbmQgb2YgdGhlIGdpdmVuIHN0cmluZywgcmV0dXJu
aW5nCiAvLyBgdHJ1ZWAgaWYgdGhlIHN0cmlwIG9wZXJhdGlvbiBzdWNjZWVkZWQgb3IgZmFsc2Ug
b3RoZXJ3aXNlLgogLy8KIC8vIEV4YW1wbGU6CkBAIC02NCw5ICs2NCw5IEBAIGlubGluZSBib29s
IENvbnN1bWVTdWZmaXgoYWJzbDo6c3RyaW5nX3ZpZXcqIHN0ciwgYWJzbDo6c3RyaW5nX3ZpZXcg
ZXhwZWN0ZWQpIHsKIAogLy8gU3RyaXBQcmVmaXgoKQogLy8KLS8vIFJldHVybnMgYSB2aWV3IGlu
dG8gdGhlIGlucHV0IHN0ZDo6c3RyaW5nICdzdHInIHdpdGggdGhlIGdpdmVuICdwcmVmaXgnIHJl
bW92ZWQsCi0vLyBidXQgbGVhdmluZyB0aGUgb3JpZ2luYWwgc3RkOjpzdHJpbmcgaW50YWN0LiBJ
ZiB0aGUgcHJlZml4IGRvZXMgbm90IG1hdGNoIGF0IHRoZQotLy8gc3RhcnQgb2YgdGhlIHN0ZDo6
c3RyaW5nLCByZXR1cm5zIHRoZSBvcmlnaW5hbCBzdGQ6OnN0cmluZyBpbnN0ZWFkLgorLy8gUmV0
dXJucyBhIHZpZXcgaW50byB0aGUgaW5wdXQgc3RyaW5nICdzdHInIHdpdGggdGhlIGdpdmVuICdw
cmVmaXgnIHJlbW92ZWQsCisvLyBidXQgbGVhdmluZyB0aGUgb3JpZ2luYWwgc3RyaW5nIGludGFj
dC4gSWYgdGhlIHByZWZpeCBkb2VzIG5vdCBtYXRjaCBhdCB0aGUKKy8vIHN0YXJ0IG9mIHRoZSBz
dHJpbmcsIHJldHVybnMgdGhlIG9yaWdpbmFsIHN0cmluZyBpbnN0ZWFkLgogQUJTTF9NVVNUX1VT
RV9SRVNVTFQgaW5saW5lIGFic2w6OnN0cmluZ192aWV3IFN0cmlwUHJlZml4KAogICAgIGFic2w6
OnN0cmluZ192aWV3IHN0ciwgYWJzbDo6c3RyaW5nX3ZpZXcgcHJlZml4KSB7CiAgIGlmIChhYnNs
OjpTdGFydHNXaXRoKHN0ciwgcHJlZml4KSkgc3RyLnJlbW92ZV9wcmVmaXgocHJlZml4LnNpemUo
KSk7CkBAIC03NSw5ICs3NSw5IEBAIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGlubGluZSBhYnNsOjpz
dHJpbmdfdmlldyBTdHJpcFByZWZpeCgKIAogLy8gU3RyaXBTdWZmaXgoKQogLy8KLS8vIFJldHVy
bnMgYSB2aWV3IGludG8gdGhlIGlucHV0IHN0ZDo6c3RyaW5nICdzdHInIHdpdGggdGhlIGdpdmVu
ICdzdWZmaXgnIHJlbW92ZWQsCi0vLyBidXQgbGVhdmluZyB0aGUgb3JpZ2luYWwgc3RkOjpzdHJp
bmcgaW50YWN0LiBJZiB0aGUgc3VmZml4IGRvZXMgbm90IG1hdGNoIGF0IHRoZQotLy8gZW5kIG9m
IHRoZSBzdGQ6OnN0cmluZywgcmV0dXJucyB0aGUgb3JpZ2luYWwgc3RkOjpzdHJpbmcgaW5zdGVh
ZC4KKy8vIFJldHVybnMgYSB2aWV3IGludG8gdGhlIGlucHV0IHN0cmluZyAnc3RyJyB3aXRoIHRo
ZSBnaXZlbiAnc3VmZml4JyByZW1vdmVkLAorLy8gYnV0IGxlYXZpbmcgdGhlIG9yaWdpbmFsIHN0
cmluZyBpbnRhY3QuIElmIHRoZSBzdWZmaXggZG9lcyBub3QgbWF0Y2ggYXQgdGhlCisvLyBlbmQg
b2YgdGhlIHN0cmluZywgcmV0dXJucyB0aGUgb3JpZ2luYWwgc3RyaW5nIGluc3RlYWQuCiBBQlNM
X01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgYWJzbDo6c3RyaW5nX3ZpZXcgU3RyaXBTdWZmaXgoCiAg
ICAgYWJzbDo6c3RyaW5nX3ZpZXcgc3RyLCBhYnNsOjpzdHJpbmdfdmlldyBzdWZmaXgpIHsKICAg
aWYgKGFic2w6OkVuZHNXaXRoKHN0ciwgc3VmZml4KSkgc3RyLnJlbW92ZV9zdWZmaXgoc3VmZml4
LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwX3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cmlwX3Rlc3QuY2MKaW5kZXggMjA1YzE2MGMxOTI5MjYzNzk2YTU5MzIzYWM1
OTUwOWU4YWI2NTg5ZS4uNDBjNGM2MDcxMjExMjA4MTA0YzdkZGIyZmRjZjM3NjUxOTkyNDM0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyaXBfdGVzdC5jYwpAQCAtMTIsOCArMTIsOCBAQAogLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKLS8vIFRoaXMgZmlsZSBjb250YWlucyBmdW5j
dGlvbnMgdGhhdCByZW1vdmUgYSBkZWZpbmVkIHBhcnQgZnJvbSB0aGUgc3RkOjpzdHJpbmcsCi0v
LyBpLmUuLCBzdHJpcCB0aGUgc3RkOjpzdHJpbmcuCisvLyBUaGlzIGZpbGUgY29udGFpbnMgZnVu
Y3Rpb25zIHRoYXQgcmVtb3ZlIGEgZGVmaW5lZCBwYXJ0IGZyb20gdGhlIHN0cmluZywKKy8vIGku
ZS4sIHN0cmlwIHRoZSBzdHJpbmcuCiAKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaXAuaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N1YnN0aXR1dGUuaAppbmRleCBjNGIyNWJhNzA5NTJjMTlkNjRlYmM4NDliN2UzYzA5Y2FmYmM1
MmNmLi40ZGU3YjRlNzVmZjIzYjQxMzQxZmQ2MzVjZjIyMWRhNjY5YmQ1MWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1dGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N1YnN0aXR1
dGUuaApAQCAtMTcsNDYgKzE3LDQ2IEBACiAvLyBGaWxlOiBzdWJzdGl0dXRlLmgKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAvLwotLy8gVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGZ1bmN0aW9ucyBm
b3IgZWZmaWNpZW50bHkgcGVyZm9ybWluZyBzdGQ6OnN0cmluZwotLy8gc3Vic3RpdHV0aW9ucyB1
c2luZyBhIGZvcm1hdCBzdGQ6OnN0cmluZyB3aXRoIHBvc2l0aW9uYWwgbm90YXRpb246CisvLyBU
aGlzIHBhY2thZ2UgY29udGFpbnMgZnVuY3Rpb25zIGZvciBlZmZpY2llbnRseSBwZXJmb3JtaW5n
IHN0cmluZworLy8gc3Vic3RpdHV0aW9ucyB1c2luZyBhIGZvcm1hdCBzdHJpbmcgd2l0aCBwb3Np
dGlvbmFsIG5vdGF0aW9uOgogLy8gYFN1YnN0aXR1dGUoKWAgYW5kIGBTdWJzdGl0dXRlQW5kQXBw
ZW5kKClgLgogLy8KIC8vIFVubGlrZSBwcmludGYtc3R5bGUgZm9ybWF0IHNwZWNpZmllcnMsIGBT
dWJzdGl0dXRlKClgIGZ1bmN0aW9ucyBkbyBub3QgbmVlZAogLy8gdG8gc3BlY2lmeSB0aGUgdHlw
ZSBvZiB0aGUgc3Vic3RpdHV0aW9uIGFyZ3VtZW50cy4gU3VwcG9ydGVkIGFyZ3VtZW50cwotLy8g
Zm9sbG93aW5nIHRoZSBmb3JtYXQgc3RkOjpzdHJpbmcsIHN1Y2ggYXMgc3RyaW5ncywgc3RyaW5n
X3ZpZXdzLCBpbnRzLAorLy8gZm9sbG93aW5nIHRoZSBmb3JtYXQgc3RyaW5nLCBzdWNoIGFzIHN0
cmluZ3MsIHN0cmluZ192aWV3cywgaW50cywKIC8vIGZsb2F0cywgYW5kIGJvb2xzLCBhcmUgYXV0
b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gc3RyaW5ncyBkdXJpbmcgdGhlCiAvLyBzdWJzdGl0dXRp
b24gcHJvY2Vzcy4gKFNlZSBiZWxvdyBmb3IgYSBmdWxsIGxpc3Qgb2Ygc3VwcG9ydGVkIHR5cGVz
LikKIC8vCiAvLyBgU3Vic3RpdHV0ZSgpYCBkb2VzIG5vdCBhbGxvdyB5b3UgdG8gc3BlY2lmeSAq
aG93KiB0byBmb3JtYXQgYSB2YWx1ZSwgYmV5b25kCi0vLyB0aGUgZGVmYXVsdCBjb252ZXJzaW9u
IHRvIHN0ZDo6c3RyaW5nLiBGb3IgZXhhbXBsZSwgeW91IGNhbm5vdCBmb3JtYXQgYW4gaW50ZWdl
cgorLy8gdGhlIGRlZmF1bHQgY29udmVyc2lvbiB0byBzdHJpbmcuIEZvciBleGFtcGxlLCB5b3Ug
Y2Fubm90IGZvcm1hdCBhbiBpbnRlZ2VyCiAvLyBpbiBoZXguCiAvLwotLy8gVGhlIGZvcm1hdCBz
dGQ6OnN0cmluZyB1c2VzIHBvc2l0aW9uYWwgaWRlbnRpZmllcnMgaW5kaWNhdGVkIGJ5IGEgZG9s
bGFyIHNpZ24gKCQpCisvLyBUaGUgZm9ybWF0IHN0cmluZyB1c2VzIHBvc2l0aW9uYWwgaWRlbnRp
ZmllcnMgaW5kaWNhdGVkIGJ5IGEgZG9sbGFyIHNpZ24gKCQpCiAvLyBhbmQgc2luZ2xlIGRpZ2l0
IHBvc2l0aW9uYWwgaWRzIHRvIGluZGljYXRlIHdoaWNoIHN1YnN0aXR1dGlvbiBhcmd1bWVudHMg
dG8KLS8vIHVzZSBhdCB0aGF0IGxvY2F0aW9uIHdpdGhpbiB0aGUgZm9ybWF0IHN0ZDo6c3RyaW5n
LgorLy8gdXNlIGF0IHRoYXQgbG9jYXRpb24gd2l0aGluIHRoZSBmb3JtYXQgc3RyaW5nLgogLy8K
IC8vIEV4YW1wbGUgMToKLS8vICAgc3RkOjpzdHJpbmcgcyA9IFN1YnN0aXR1dGUoIiQxIHB1cmNo
YXNlZCAkMCAkMi4gVGhhbmtzICQxISIsCisvLyAgIHN0cmluZyBzID0gU3Vic3RpdHV0ZSgiJDEg
cHVyY2hhc2VkICQwICQyLiBUaGFua3MgJDEhIiwKIC8vICAgICAgICAgICAgICAgICAgICAgICAg
IDUsICJCb2IiLCAiQXBwbGVzIik7CiAvLyAgIEVYUEVDVF9FUSgiQm9iIHB1cmNoYXNlZCA1IEFw
cGxlcy4gVGhhbmtzIEJvYiEiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDI6Ci0vLyAgIHN0ZDo6c3Ry
aW5nIHMgPSAiSGkuICI7CisvLyAgIHN0cmluZyBzID0gIkhpLiAiOwogLy8gICBTdWJzdGl0dXRl
QW5kQXBwZW5kKCZzLCAiTXkgbmFtZSBpcyAkMCBhbmQgSSBhbSAkMSB5ZWFycyBvbGQuIiwgIkJv
YiIsIDUpOwogLy8gICBFWFBFQ1RfRVEoIkhpLiBNeSBuYW1lIGlzIEJvYiBhbmQgSSBhbSA1IHll
YXJzIG9sZC4iLCBzKTsKIC8vCiAvLwogLy8gU3VwcG9ydGVkIHR5cGVzOgotLy8gICAqIGFic2w6
OnN0cmluZ192aWV3LCBzdGQ6OnN0cmluZywgY29uc3QgY2hhciogKG51bGwgaXMgZXF1aXZhbGVu
dCB0byAiIikKKy8vICAgKiBhYnNsOjpzdHJpbmdfdmlldywgc3RyaW5nLCBjb25zdCBjaGFyKiAo
bnVsbCBpcyBlcXVpdmFsZW50IHRvICIiKQogLy8gICAqIGludDMyX3QsIGludDY0X3QsIHVpbnQz
Ml90LCB1aW50NjQKIC8vICAgKiBmbG9hdCwgZG91YmxlCiAvLyAgICogYm9vbCAoUHJpbnRlZCBh
cyAidHJ1ZSIgb3IgImZhbHNlIikKLS8vICAgKiBwb2ludGVyIHR5cGVzIG90aGVyIHRoYW4gY2hh
ciogKFByaW50ZWQgYXMgIjB4PGxvd2VyIGNhc2UgaGV4IHN0ZDo6c3RyaW5nPiIsCisvLyAgICog
cG9pbnRlciB0eXBlcyBvdGhlciB0aGFuIGNoYXIqIChQcmludGVkIGFzICIweDxsb3dlciBjYXNl
IGhleCBzdHJpbmc+IiwKIC8vICAgICBleGNlcHQgdGhhdCBudWxsIGlzIHByaW50ZWQgYXMgIk5V
TEwiKQogLy8KLS8vIElmIGFuIGludmFsaWQgZm9ybWF0IHN0ZDo6c3RyaW5nIGlzIHByb3ZpZGVk
LCBTdWJzdGl0dXRlIHJldHVybnMgYW4gZW1wdHkgc3RkOjpzdHJpbmcKLS8vIGFuZCBTdWJzdGl0
dXRlQW5kQXBwZW5kIGRvZXMgbm90IGNoYW5nZSB0aGUgcHJvdmlkZWQgb3V0cHV0IHN0ZDo6c3Ry
aW5nLgotLy8gQSBmb3JtYXQgc3RkOjpzdHJpbmcgaXMgaW52YWxpZCBpZiBpdDoKKy8vIElmIGFu
IGludmFsaWQgZm9ybWF0IHN0cmluZyBpcyBwcm92aWRlZCwgU3Vic3RpdHV0ZSByZXR1cm5zIGFu
IGVtcHR5IHN0cmluZworLy8gYW5kIFN1YnN0aXR1dGVBbmRBcHBlbmQgZG9lcyBub3QgY2hhbmdl
IHRoZSBwcm92aWRlZCBvdXRwdXQgc3RyaW5nLgorLy8gQSBmb3JtYXQgc3RyaW5nIGlzIGludmFs
aWQgaWYgaXQ6CiAvLyAgICogZW5kcyBpbiBhbiB1bmVzY2FwZWQgJCBjaGFyYWN0ZXIsCiAvLyAg
ICAgZS5nLiAiSGVsbG8gJCIsIG9yCiAvLyAgICogY2FsbHMgZm9yIGEgcG9zaXRpb24gYXJndW1l
bnQgd2hpY2ggaXMgbm90IHByb3ZpZGVkLApAQCAtODgsNyArODgsNyBAQCBuYW1lc3BhY2Ugc3Vi
c3RpdHV0ZV9pbnRlcm5hbCB7CiAvLwogLy8gVGhpcyBjbGFzcyBwcm92aWRlcyBhbiBhcmd1bWVu
dCB0eXBlIGZvciBgYWJzbDo6U3Vic3RpdHV0ZSgpYCBhbmQKIC8vIGBhYnNsOjpTdWJzdGl0dXRl
QW5kQXBwZW5kKClgLiBgQXJnYCBoYW5kbGVzIGltcGxpY2l0IGNvbnZlcnNpb24gb2YgdmFyaW91
cwotLy8gdHlwZXMgdG8gYSBzdGQ6OnN0cmluZy4gKGBBcmdgIGlzIHZlcnkgc2ltaWxhciB0byB0
aGUgYEFscGhhTnVtYCBjbGFzcyBpbgorLy8gdHlwZXMgdG8gYSBzdHJpbmcuIChgQXJnYCBpcyB2
ZXJ5IHNpbWlsYXIgdG8gdGhlIGBBbHBoYU51bWAgY2xhc3MgaW4KIC8vIGBTdHJDYXQoKWAuKQog
Ly8KIC8vIFRoaXMgY2xhc3MgaGFzIGltcGxpY2l0IGNvbnN0cnVjdG9ycy4KQEAgLTE5Nyw4ICsx
OTcsOCBAQCBjb25zdGV4cHIgaW50IFBsYWNlaG9sZGVyQml0bWFzayhjb25zdCBjaGFyKiBmb3Jt
YXQpIHsKIAogLy8gU3Vic3RpdHV0ZUFuZEFwcGVuZCgpCiAvLwotLy8gU3Vic3RpdHV0ZXMgdmFy
aWFibGVzIGludG8gYSBnaXZlbiBmb3JtYXQgc3RkOjpzdHJpbmcgYW5kIGFwcGVuZHMgdG8gYSBn
aXZlbgotLy8gb3V0cHV0IHN0ZDo6c3RyaW5nLiBTZWUgZmlsZSBjb21tZW50cyBhYm92ZSBmb3Ig
dXNhZ2UuCisvLyBTdWJzdGl0dXRlcyB2YXJpYWJsZXMgaW50byBhIGdpdmVuIGZvcm1hdCBzdHJp
bmcgYW5kIGFwcGVuZHMgdG8gYSBnaXZlbgorLy8gb3V0cHV0IHN0cmluZy4gU2VlIGZpbGUgY29t
bWVudHMgYWJvdmUgZm9yIHVzYWdlLgogLy8KIC8vIFRoZSBkZWNsYXJhdGlvbnMgb2YgYFN1YnN0
aXR1dGVBbmRBcHBlbmQoKWAgYmVsb3cgY29uc2lzdCBvZiBvdmVybG9hZHMKIC8vIGZvciBwYXNz
aW5nIDAgdG8gMTAgYXJndW1lbnRzLCByZXNwZWN0aXZlbHkuCkBAIC00NDQsNyArNDQ0LDcgQEAg
dm9pZCBTdWJzdGl0dXRlQW5kQXBwZW5kKAogCiAvLyBTdWJzdGl0dXRlKCkKIC8vCi0vLyBTdWJz
dGl0dXRlcyB2YXJpYWJsZXMgaW50byBhIGdpdmVuIGZvcm1hdCBzdGQ6OnN0cmluZy4gU2VlIGZp
bGUgY29tbWVudHMgYWJvdmUKKy8vIFN1YnN0aXR1dGVzIHZhcmlhYmxlcyBpbnRvIGEgZ2l2ZW4g
Zm9ybWF0IHN0cmluZy4gU2VlIGZpbGUgY29tbWVudHMgYWJvdmUKIC8vIGZvciB1c2FnZS4KIC8v
CiAvLyBUaGUgZGVjbGFyYXRpb25zIG9mIGBTdWJzdGl0dXRlKClgIGJlbG93IGNvbnNpc3Qgb2Yg
b3ZlcmxvYWRzIGZvciBwYXNzaW5nIDAKQEAgLTQ1Niw3ICs0NTYsNyBAQCB2b2lkIFN1YnN0aXR1
dGVBbmRBcHBlbmQoCiAvLyBFeGFtcGxlOgogLy8gIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdz
PgogLy8gIHZvaWQgVmFyTXNnKGFic2w6OnN0cmluZ192aWV3IGZvcm1hdCwgY29uc3QgQXJncyYu
Li4gYXJncykgewotLy8gICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN1YnN0aXR1dGUoZm9ybWF0
LCBhcmdzLi4uKTsKKy8vICAgIHN0cmluZyBzID0gYWJzbDo6U3Vic3RpdHV0ZShmb3JtYXQsIGFy
Z3MuLi4pOwogCiBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgc3RkOjpzdHJpbmcgU3Vic3Rp
dHV0ZShhYnNsOjpzdHJpbmdfdmlldyBmb3JtYXQpIHsKICAgc3RkOjpzdHJpbmcgcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0JVSUxELmJhemVsIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3lu
Y2hyb25pemF0aW9uL0JVSUxELmJhemVsCmluZGV4IDhkMzAyZTAxMjIzYjQ1YmQ5MmEyMTY3MGEx
MWY1NTkyZjliMTVjNjQuLmY1MmU5ZDQxNjQ0YThkOTMxYmYzOWZhZTdlYzg0MzI3YmVhZjQxZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlMRC5iYXplbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vQlVJTEQuYmF6ZWwKQEAgLTg4LDYgKzg4LDkgQEAgY2NfdGVzdCgK
ICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJiYXJyaWVyX3Rlc3QuY2MiXSwKICAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0gWworICAgICAgICAibm9fdGVz
dF93YXNtIiwKKyAgICBdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3luY2hyb25pemF0aW9u
IiwKICAgICAgICAgIi8vYWJzbC90aW1lIiwKQEAgLTEwMCw2ICsxMDMsOSBAQCBjY190ZXN0KAog
ICAgIHNpemUgPSAic21hbGwiLAogICAgIHNyY3MgPSBbImJsb2NraW5nX2NvdW50ZXJfdGVzdC5j
YyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIHRhZ3MgPSBbCisgICAgICAg
ICJub190ZXN0X3dhc20iLAorICAgIF0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpzeW5jaHJv
bml6YXRpb24iLAogICAgICAgICAiLy9hYnNsL3RpbWUiLApAQCAtMTM4LDYgKzE0NCw5IEBAIGNj
X2xpYnJhcnkoCiAgICAgbmFtZSA9ICJ0aHJlYWRfcG9vbCIsCiAgICAgdGVzdG9ubHkgPSAxLAog
ICAgIGhkcnMgPSBbImludGVybmFsL3RocmVhZF9wb29sLmgiXSwKKyAgICB2aXNpYmlsaXR5ID0g
WworICAgICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNfXyIsCisgICAgXSwKICAgICBkZXBzID0g
WwogICAgICAgICAiOnN5bmNocm9uaXphdGlvbiIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb3Jl
X2hlYWRlcnMiLApAQCAtMTQ5LDYgKzE1OCw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJsYXJn
ZSIsCiAgICAgc3JjcyA9IFsibXV0ZXhfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTLAorICAgIHNoYXJkX2NvdW50ID0gMjUsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpz
eW5jaHJvbml6YXRpb24iLAogICAgICAgICAiOnRocmVhZF9wb29sIiwKQEAgLTIwNSw2ICsyMTUs
NyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAicGVyX3RocmVhZF9zZW1fdGVzdCIsCiAgICAgc2l6
ZSA9ICJtZWRpdW0iLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIHRhZ3MgPSBb
Im5vX3Rlc3Rfd2FzbSJdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6cGVyX3RocmVhZF9zZW1f
dGVzdF9jb21tb24iLAogICAgICAgICAiOnN5bmNocm9uaXphdGlvbiIsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zeW5jaHJvbml6YXRpb24vQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQlVJ
TEQuZ24KaW5kZXggMzY2NGFhMTMyNzRmNDA0MGY5MzY5Yjk1ZjQwZGVlZjJiNTkwZGI4Zi4uZTZm
NzYzYTA2MGJhOWNlMGFhZWU5YzE0MTgxMGZmZjZiNGU3OGMxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3luY2hyb25pemF0aW9uL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlM
RC5nbgpAQCAtNTAsOCArNTAsOCBAQCBzb3VyY2Vfc2V0KCJzeW5jaHJvbml6YXRpb24iKSB7CiAg
ICAgImludGVybmFsL2NyZWF0ZV90aHJlYWRfaWRlbnRpdHkuY2MiLAogICAgICJpbnRlcm5hbC9w
ZXJfdGhyZWFkX3NlbS5jYyIsCiAgICAgImludGVybmFsL3dhaXRlci5jYyIsCisgICAgIm11dGV4
LmNjIiwKICAgICAibm90aWZpY2F0aW9uLmNjIiwKLSAgICAibXV0ZXguY2MiCiAgIF0KICAgcHVi
bGljID0gWwogICAgICJiYXJyaWVyLmgiLApAQCAtOTMsNiArOTMsOCBAQCBzb3VyY2Vfc2V0KCJ0
aHJlYWRfcG9vbCIpIHsKICAgICAiOnN5bmNocm9uaXphdGlvbiIsCiAgICAgIi4uL2Jhc2U6Y29y
ZV9oZWFkZXJzIiwKICAgXQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlzaWJpbGl0eSArPSBbICIu
Li8qIiBdCiB9CiAKIHNvdXJjZV9zZXQoInBlcl90aHJlYWRfc2VtX3Rlc3RfY29tbW9uIikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVzLmNjCmluZGV4IGFi
MWYzZjg0ZTc0YzFkN2VkZWY2Mzc5ZTAyNjg0YjAwYjUzYTdlMzQuLmQzODc4ZGUyYjY4ZjIxOTI5
ZjAwYjg2MzRiY2I5Nzk0YTBlNGYwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlv
bi9pbnRlcm5hbC9ncmFwaGN5Y2xlcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50
ZXJuYWwvZ3JhcGhjeWNsZXMuY2MKQEAgLTIwNCw4ICsyMDQsNyBAQCBjbGFzcyBOb2RlU2V0IHsK
ICAgfQogCiAgcHJpdmF0ZToKLSAgc3RhdGljIGNvbnN0IGludDMyX3Qga0VtcHR5OwotICBzdGF0
aWMgY29uc3QgaW50MzJfdCBrRGVsOworICBlbnVtIDogaW50MzJfdCB7IGtFbXB0eSA9IC0xLCBr
RGVsID0gLTIgfTsKICAgVmVjPGludDMyX3Q+IHRhYmxlXzsKICAgdWludDMyX3Qgb2NjdXBpZWRf
OyAgICAgLy8gQ291bnQgb2Ygbm9uLWVtcHR5IHNsb3RzIChpbmNsdWRlcyBkZWxldGVkIHNsb3Rz
KQogCkBAIC0yNTUsOSArMjU0LDYgQEAgY2xhc3MgTm9kZVNldCB7CiAgIE5vZGVTZXQmIG9wZXJh
dG9yPShjb25zdCBOb2RlU2V0JikgPSBkZWxldGU7CiB9OwogCi1jb25zdCBpbnQzMl90IE5vZGVT
ZXQ6OmtFbXB0eSA9IC0xOwotY29uc3QgaW50MzJfdCBOb2RlU2V0OjprRGVsID0gLTI7Ci0KIC8v
IFdlIGVuY29kZSBhIG5vZGUgaW5kZXggYW5kIGEgbm9kZSB2ZXJzaW9uIGluIEdyYXBoSWQuICBU
aGUgdmVyc2lvbgogLy8gbnVtYmVyIGlzIGluY3JlbWVudGVkIHdoZW4gdGhlIEdyYXBoSWQgaXMg
ZnJlZWQgd2hpY2ggYXV0b21hdGljYWxseQogLy8gaW52YWxpZGF0ZXMgYWxsIGNvcGllcyBvZiB0
aGUgR3JhcGhJZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9w
ZXJfdGhyZWFkX3NlbV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3Bl
cl90aHJlYWRfc2VtX3Rlc3QuY2MKaW5kZXggMmI1MmVhNzZhYjBlOTQyNjAxZWI1MGYxNjBmZTg0
NWI5YjA2ODVjZi4uYzI5ZDg0MDNkZjQzZmJjM2Q4ZDJjNWM3Y2NkYWYzYWVlZDJmMmFkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3Blcl90aHJlYWRfc2VtX3Rl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL3Blcl90aHJlYWRfc2Vt
X3Rlc3QuY2MKQEAgLTE1MywxMiArMTUzLDE1IEBAIFRFU1RfRihQZXJUaHJlYWRTZW1UZXN0LCBX
aXRoVGltZW91dCkgewogCiBURVNUX0YoUGVyVGhyZWFkU2VtVGVzdCwgVGltZW91dHMpIHsKICAg
YWJzbDo6VGltZSB0aW1lb3V0ID0gYWJzbDo6Tm93KCkgKyBhYnNsOjpNaWxsaXNlY29uZHMoNTAp
OworICAvLyBBbGxvdyBmb3IgYSBzbGlnaHQgZWFybHkgcmV0dXJuLCB0byBhY2NvdW50IGZvciBx
dWFsaXR5IG9mIGltcGxlbWVudGF0aW9uCisgIC8vIGlzc3VlcyBvbiB2YXJpb3VzIHBsYXRmb3Jt
cy4KKyAgY29uc3QgYWJzbDo6RHVyYXRpb24gc2xvcCA9IGFic2w6Ok1pY3Jvc2Vjb25kcygyMDAp
OwogICBFWFBFQ1RfRkFMU0UoV2FpdCh0aW1lb3V0KSk7Ci0gIEVYUEVDVF9MRSh0aW1lb3V0LCBh
YnNsOjpOb3coKSk7CisgIEVYUEVDVF9MRSh0aW1lb3V0LCBhYnNsOjpOb3coKSArIHNsb3ApOwog
CiAgIGFic2w6OlRpbWUgbmVnYXRpdmVfdGltZW91dCA9IGFic2w6OlVuaXhFcG9jaCgpIC0gYWJz
bDo6TWlsbGlzZWNvbmRzKDEwMCk7CiAgIEVYUEVDVF9GQUxTRShXYWl0KG5lZ2F0aXZlX3RpbWVv
dXQpKTsKLSAgRVhQRUNUX0xFKG5lZ2F0aXZlX3RpbWVvdXQsIGFic2w6Ok5vdygpKTsgIC8vIHRy
aXZpYWxseSB0cnVlIDopCisgIEVYUEVDVF9MRShuZWdhdGl2ZV90aW1lb3V0LCBhYnNsOjpOb3co
KSArIHNsb3ApOyAgLy8gdHJpdmlhbGx5IHRydWUgOikKIAogICBQb3N0KEdldE9yQ3JlYXRlQ3Vy
cmVudFRocmVhZElkZW50aXR5KCkpOwogICAvLyBUaGUgd2FpdCBoZXJlIGhhcyBhbiBleHBpcmVk
IHRpbWVvdXQsIGJ1dCB3ZSBoYXZlIGEgd2FrZSB0byBjb25zdW1lLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3luY2hyb25pemF0aW9uL211dGV4LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4
LmNjCmluZGV4IDgwZjM0ZjAzNWZjNmI2NzllZWIwYjE0ZDg5Y2ZhZWFhMWY4MGYwNTEuLjlkNTlh
NzlkOTJkOWY3OTI4ZjNkZmUyYTczMDQzNGUxNTRhY2VjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9tdXRleC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXgu
Y2MKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgc3RydWN0IFN5bmNoRXZlbnQgeyAgICAgLy8g
dGhpcyBpcyBhIHRyaXZpYWwgaGFzaCB0YWJsZSBmb3IgdGhlIGV2ZW50cwogLy8gc2V0ICJiaXRz
IiBpbiB0aGUgd29yZCB0aGVyZSAod2FpdGluZyB1bnRpbCBsb2NrYml0IGlzIGNsZWFyIGJlZm9y
ZSBkb2luZwogLy8gc28pLCBhbmQgcmV0dXJuIGEgcmVmY291bnRlZCByZWZlcmVuY2UgdGhhdCB3
aWxsIHJlbWFpbiB2YWxpZCB1bnRpbAogLy8gVW5yZWZTeW5jaEV2ZW50KCkgaXMgY2FsbGVkLiAg
SWYgYSBuZXcgU3luY2hFdmVudCBpcyBhbGxvY2F0ZWQsCi0vLyB0aGUgc3RkOjpzdHJpbmcgbmFt
ZSBpcyBjb3BpZWQgaW50byBpdC4KKy8vIHRoZSBzdHJpbmcgbmFtZSBpcyBjb3BpZWQgaW50byBp
dC4KIC8vIFdoZW4gdXNlZCB3aXRoIGEgbXV0ZXgsIHRoZSBjYWxsZXIgc2hvdWxkIGFsc28gZW5z
dXJlIHRoYXQga011RXZlbnQKIC8vIGlzIHNldCBpbiB0aGUgbXV0ZXggd29yZCwgYW5kIHNpbWls
YXJseSBmb3IgY29uZGl0aW9uIHZhcmlhYmxlcyBhbmQga0NWRXZlbnQuCiBzdGF0aWMgU3luY2hF
dmVudCAqRW5zdXJlU3luY2hFdmVudChzdGQ6OmF0b21pYzxpbnRwdHJfdD4gKmFkZHIsCkBAIC0x
ODI3LDggKzE4MjcsOCBAQCBib29sIE11dGV4OjpMb2NrU2xvd1dpdGhEZWFkbGluZShNdUhvdyBo
b3csIGNvbnN0IENvbmRpdGlvbiAqY29uZCwKICAgICAgICAgIGNvbmQgPT0gbnVsbHB0ciB8fCBF
dmFsQ29uZGl0aW9uQW5ub3RhdGVkKGNvbmQsIHRoaXMsIHRydWUsIGhvdyk7CiB9CiAKLS8vIFJB
V19DSEVDS19GTVQoKSB0YWtlcyBhIGNvbmRpdGlvbiwgYSBwcmludGYtc3R5bGUgZm9ybWF0IHN0
ZDo6c3RyaW5nLCBhbmQKLS8vIHRoZSBwcmludGYtc3R5bGUgYXJndW1lbnQgbGlzdC4gICBUaGUg
Zm9ybWF0IHN0ZDo6c3RyaW5nIG11c3QgYmUgYSBsaXRlcmFsLgorLy8gUkFXX0NIRUNLX0ZNVCgp
IHRha2VzIGEgY29uZGl0aW9uLCBhIHByaW50Zi1zdHlsZSBmb3JtYXQgc3RyaW5nLCBhbmQKKy8v
IHRoZSBwcmludGYtc3R5bGUgYXJndW1lbnQgbGlzdC4gICBUaGUgZm9ybWF0IHN0cmluZyBtdXN0
IGJlIGEgbGl0ZXJhbC4KIC8vIEFyZ3VtZW50cyBhZnRlciB0aGUgZmlyc3QgYXJlIG5vdCBldmFs
dWF0ZWQgdW5sZXNzIHRoZSBjb25kaXRpb24gaXMgdHJ1ZS4KICNkZWZpbmUgUkFXX0NIRUNLX0ZN
VChjb25kLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIGRvIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXApAQCAtMTk3NSw3ICsxOTc1LDcgQEAgdm9pZCBNdXRleDo6TG9ja1Nsb3dMb29wKFN5bmNo
V2FpdFBhcmFtcyAqd2FpdHAsIGludCBmbGFncykgewogLy8gVW5sb2NrIHRoaXMgbXV0ZXgsIHdo
aWNoIGlzIGhlbGQgYnkgdGhlIGN1cnJlbnQgdGhyZWFkLgogLy8gSWYgd2FpdHAgaXMgbm9uLXpl
cm8sIGl0IG11c3QgYmUgdGhlIHdhaXQgcGFyYW1ldGVycyBmb3IgdGhlIGN1cnJlbnQgdGhyZWFk
CiAvLyB3aGljaCBob2xkcyB0aGUgbG9jayBidXQgaXMgbm90IHJ1bm5hYmxlIGJlY2F1c2UgaXRz
IGNvbmRpdGlvbiBpcyBmYWxzZQotLy8gb3IgaXQgbiB0aGUgcHJvY2VzcyBvZiBibG9ja2luZyBv
biBhIGNvbmRpdGlvbiB2YXJpYWJsZTsgaXQgbXVzdCByZXF1ZXVlCisvLyBvciBpdCBpcyBpbiB0
aGUgcHJvY2VzcyBvZiBibG9ja2luZyBvbiBhIGNvbmRpdGlvbiB2YXJpYWJsZTsgaXQgbXVzdCBy
ZXF1ZXVlCiAvLyBpdHNlbGYgb24gdGhlIG11dGV4L2NvbmR2YXIgdG8gd2FpdCBmb3IgaXRzIGNv
bmRpdGlvbiB0byBiZWNvbWUgdHJ1ZS4KIHZvaWQgTXV0ZXg6OlVubG9ja1Nsb3coU3luY2hXYWl0
UGFyYW1zICp3YWl0cCkgewogICBpbnRwdHJfdCB2ID0gbXVfLmxvYWQoc3RkOjptZW1vcnlfb3Jk
ZXJfcmVsYXhlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oCmluZGV4IDgzYzIxNDg2N2FjNTNhOTEyMmRk
NGU5NzUzZmM4YmY3MmUxMjhiZTUuLmEzNzgxOTA1MzhlMmQyMzZlYWYzOTkzMTUwMDdkMDA4NzJl
MjA4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5oCkBAIC05NjIsNyArOTYyLDcgQEAgdm9pZCBSZWdp
c3Rlck11dGV4VHJhY2VyKHZvaWQgKCpmbikoY29uc3QgY2hhciAqbXNnLCBjb25zdCB2b2lkICpv
YmosCiAvLwogLy8gVGhlIGZ1bmN0aW9uIHBvaW50ZXIgcmVnaXN0ZXJlZCBoZXJlIHdpbGwgYmUg
Y2FsbGVkIGhlcmUgb24gdmFyaW91cyBDb25kVmFyCiAvLyBldmVudHMuICBUaGUgY2FsbGJhY2sg
aXMgZ2l2ZW4gYW4gb3BhcXVlIGhhbmRsZSB0byB0aGUgQ29uZFZhciBvYmplY3QgYW5kCi0vLyBh
IHN0ZDo6c3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBldmVudC4gIFRoaXMgaXMgdGhyZWFkLXNhZmUs
IGJ1dCBvbmx5IGEgc2luZ2xlCisvLyBhIHN0cmluZyBpZGVudGlmeWluZyB0aGUgZXZlbnQuICBU
aGlzIGlzIHRocmVhZC1zYWZlLCBidXQgb25seSBhIHNpbmdsZQogLy8gdHJhY2VyIGNhbiBiZSBy
ZWdpc3RlcmVkLgogLy8KIC8vIEV2ZW50cyB0aGF0IGNhbiBiZSBzZW50IGFyZSAiV2FpdCIsICJV
bndhaXQiLCAiU2lnbmFsIHdha2V1cCIsIGFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25p
emF0aW9uL25vdGlmaWNhdGlvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL25vdGlm
aWNhdGlvbl90ZXN0LmNjCmluZGV4IDliM2I2YTVhOWU4NGVjMWEzNjU1YTJjOGY0M2ViOGZiYzU4
MzJlZjYuLmQ4NzA4ZDU1MWExNTc1NzQ2ZWEyYTg1NDI2OTcyZmQ5ODE5MTEwMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb25fdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vbm90aWZpY2F0aW9uX3Rlc3QuY2MKQEAgLTcxLDEwICs3MSwxMyBA
QCBzdGF0aWMgdm9pZCBCYXNpY1Rlc3RzKGJvb2wgbm90aWZ5X2JlZm9yZV93YWl0aW5nLCBOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikgewogICAgICAgbm90aWZpY2F0aW9uLT5XYWl0Rm9yTm90
aWZpY2F0aW9uV2l0aFRpbWVvdXQoYWJzbDo6TWlsbGlzZWNvbmRzKDApKSk7CiAgIEVYUEVDVF9G
QUxTRShub3RpZmljYXRpb24tPldhaXRGb3JOb3RpZmljYXRpb25XaXRoRGVhZGxpbmUoYWJzbDo6
Tm93KCkpKTsKIAorICBjb25zdCBhYnNsOjpEdXJhdGlvbiBkZWxheSA9IGFic2w6Ok1pbGxpc2Vj
b25kcyg1MCk7CisgIC8vIEFsbG93IGZvciBhIHNsaWdodCBlYXJseSByZXR1cm4sIHRvIGFjY291
bnQgZm9yIHF1YWxpdHkgb2YgaW1wbGVtZW50YXRpb24KKyAgLy8gaXNzdWVzIG9uIHZhcmlvdXMg
cGxhdGZvcm1zLgorICBjb25zdCBhYnNsOjpEdXJhdGlvbiBzbG9wID0gYWJzbDo6TWljcm9zZWNv
bmRzKDIwMCk7CiAgIGFic2w6OlRpbWUgc3RhcnQgPSBhYnNsOjpOb3coKTsKLSAgRVhQRUNUX0ZB
TFNFKAotICAgICAgbm90aWZpY2F0aW9uLT5XYWl0Rm9yTm90aWZpY2F0aW9uV2l0aFRpbWVvdXQo
YWJzbDo6TWlsbGlzZWNvbmRzKDUwKSkpOwotICBFWFBFQ1RfTEUoc3RhcnQgKyBhYnNsOjpNaWxs
aXNlY29uZHMoNTApLCBhYnNsOjpOb3coKSk7CisgIEVYUEVDVF9GQUxTRShub3RpZmljYXRpb24t
PldhaXRGb3JOb3RpZmljYXRpb25XaXRoVGltZW91dChkZWxheSkpOworICBFWFBFQ1RfTEUoc3Rh
cnQgKyBkZWxheSwgYWJzbDo6Tm93KCkgKyBzbG9wKTsKIAogICBUaHJlYWRTYWZlQ291bnRlciBy
ZWFkeV9jb3VudGVyOwogICBUaHJlYWRTYWZlQ291bnRlciBkb25lX2NvdW50ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9CVUlMRC5nbgppbmRleCA5OTI3
YWY4MzQzY2IxNjA5OWUwMjJjZDM3ODBmNDg2ZTdhZmE0MTFkLi41NzU4ZTlkYzFlM2MzZGM0NWYy
OGE1MjVmZmU2MDEzYTgzMzE0NzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0JVSUxELmduCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvQlVJTEQuZ24KQEAgLTYyLDggKzYyLDkgQEAgc291cmNlX3NldCgidGVz
dF91dGlsIikgewogICAgICI6dGltZSIsCiAgICAgIi4uL2Jhc2UiLAogICAgICIuLi90aW1lL2lu
dGVybmFsL2NjdHo6dGltZV96b25lIiwKLSAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICAiLy90
ZXN0aW5nL2dtb2NrIiwKKyAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0LzpnbW9jayIsCiAgIF0KICAgdmlzaWJpbGl0eSA9IFtdCiAgIHZpc2liaWxp
dHkgKz0gWyAiLi4vdGltZToqIiBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2R1cmF0aW9uLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9kdXJhdGlvbi5jYwppbmRleCBmNDAyMTM3YjBhNjUwZDJiN2VkNjA1MjYy
ZmQ5NTQwNjJhYWIyOWEwLi4yOTUwYzdjZGM2MzIwYjRkM2Y4NDM0YjFlMmIwMWFkNTZkNzJkYjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2R1cmF0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVy
YXRpb24uY2MKQEAgLTY2Niw3ICs2NjYsNyBAQCBzdGQ6OmNocm9ubzo6aG91cnMgVG9DaHJvbm9I
b3VycyhEdXJhdGlvbiBkKSB7CiB9CiAKIC8vCi0vLyBUby9Gcm9tIHN0ZDo6c3RyaW5nIGZvcm1h
dHRpbmcuCisvLyBUby9Gcm9tIHN0cmluZyBmb3JtYXR0aW5nLgogLy8KIAogbmFtZXNwYWNlIHsK
QEAgLTc0NCw3ICs3NDQsNyBAQCB2b2lkIEFwcGVuZE51bWJlclVuaXQoc3RkOjpzdHJpbmcqIG91
dCwgZG91YmxlIG4sIERpc3BsYXlVbml0IHVuaXQpIHsKIH0gIC8vIG5hbWVzcGFjZQogCiAvLyBG
cm9tIEdvJ3MgZG9jIGF0IGh0dHA6Ly9nb2xhbmcub3JnL3BrZy90aW1lLyNEdXJhdGlvbi5TdHJp
bmcKLS8vICAgW0Zvcm1hdER1cmF0aW9uXSByZXR1cm5zIGEgc3RkOjpzdHJpbmcgcmVwcmVzZW50
aW5nIHRoZSBkdXJhdGlvbiBpbiB0aGUKKy8vICAgW0Zvcm1hdER1cmF0aW9uXSByZXR1cm5zIGEg
c3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZHVyYXRpb24gaW4gdGhlCiAvLyAgIGZvcm0gIjcyaDNt
MC41cyIuICBMZWFkaW5nIHplcm8gdW5pdHMgYXJlIG9taXR0ZWQuICBBcyBhIHNwZWNpYWwKIC8v
ICAgY2FzZSwgZHVyYXRpb25zIGxlc3MgdGhhbiBvbmUgc2Vjb25kIGZvcm1hdCB1c2UgYSBzbWFs
bGVyIHVuaXQKIC8vICAgKG1pbGxpLSwgbWljcm8tLCBvciBuYW5vc2Vjb25kcykgdG8gZW5zdXJl
IHRoYXQgdGhlIGxlYWRpbmcgZGlnaXQKQEAgLTc4Nyw4ICs3ODcsOCBAQCBzdGQ6OnN0cmluZyBG
b3JtYXREdXJhdGlvbihEdXJhdGlvbiBkKSB7CiBuYW1lc3BhY2UgewogCiAvLyBBIGhlbHBlciBm
b3IgUGFyc2VEdXJhdGlvbigpIHRoYXQgcGFyc2VzIGEgbGVhZGluZyBudW1iZXIgZnJvbSB0aGUg
Z2l2ZW4KLS8vIHN0ZDo6c3RyaW5nIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCBpbiAqaW50X3BhcnQv
KmZyYWNfcGFydC8qZnJhY19zY2FsZS4gIFRoZQotLy8gZ2l2ZW4gc3RkOjpzdHJpbmcgcG9pbnRl
ciBpcyBtb2RpZmllZCB0byBwb2ludCB0byB0aGUgZmlyc3QgdW5jb25zdW1lZCBjaGFyLgorLy8g
c3RyaW5nIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCBpbiAqaW50X3BhcnQvKmZyYWNfcGFydC8qZnJh
Y19zY2FsZS4gIFRoZQorLy8gZ2l2ZW4gc3RyaW5nIHBvaW50ZXIgaXMgbW9kaWZpZWQgdG8gcG9p
bnQgdG8gdGhlIGZpcnN0IHVuY29uc3VtZWQgY2hhci4KIGJvb2wgQ29uc3VtZUR1cmF0aW9uTnVt
YmVyKGNvbnN0IGNoYXIqKiBkcHAsIGludDY0X3QqIGludF9wYXJ0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCogZnJhY19wYXJ0LCBpbnQ2NF90KiBmcmFjX3NjYWxlKSB7CiAg
ICppbnRfcGFydCA9IDA7CkBAIC04MTYsOCArODE2LDggQEAgYm9vbCBDb25zdW1lRHVyYXRpb25O
dW1iZXIoY29uc3QgY2hhcioqIGRwcCwgaW50NjRfdCogaW50X3BhcnQsCiB9CiAKIC8vIEEgaGVs
cGVyIGZvciBQYXJzZUR1cmF0aW9uKCkgdGhhdCBwYXJzZXMgYSBsZWFkaW5nIHVuaXQgZGVzaWdu
YXRvciAoZS5nLiwKLS8vIG5zLCB1cywgbXMsIHMsIG0sIGgpIGZyb20gdGhlIGdpdmVuIHN0ZDo6
c3RyaW5nIGFuZCBzdG9yZXMgdGhlIHJlc3VsdGluZyB1bml0Ci0vLyBpbiAiKnVuaXQiLiAgVGhl
IGdpdmVuIHN0ZDo6c3RyaW5nIHBvaW50ZXIgaXMgbW9kaWZpZWQgdG8gcG9pbnQgdG8gdGhlIGZp
cnN0CisvLyBucywgdXMsIG1zLCBzLCBtLCBoKSBmcm9tIHRoZSBnaXZlbiBzdHJpbmcgYW5kIHN0
b3JlcyB0aGUgcmVzdWx0aW5nIHVuaXQKKy8vIGluICIqdW5pdCIuICBUaGUgZ2l2ZW4gc3RyaW5n
IHBvaW50ZXIgaXMgbW9kaWZpZWQgdG8gcG9pbnQgdG8gdGhlIGZpcnN0CiAvLyB1bmNvbnN1bWVk
IGNoYXIuCiBib29sIENvbnN1bWVEdXJhdGlvblVuaXQoY29uc3QgY2hhcioqIHN0YXJ0LCBEdXJh
dGlvbiogdW5pdCkgewogICBjb25zdCBjaGFyICpzID0gKnN0YXJ0OwpAQCAtODUwLDcgKzg1MCw3
IEBAIGJvb2wgQ29uc3VtZUR1cmF0aW9uVW5pdChjb25zdCBjaGFyKiogc3RhcnQsIER1cmF0aW9u
KiB1bml0KSB7CiB9ICAvLyBuYW1lc3BhY2UKIAogLy8gRnJvbSBHbydzIGRvYyBhdCBodHRwOi8v
Z29sYW5nLm9yZy9wa2cvdGltZS8jUGFyc2VEdXJhdGlvbgotLy8gICBbUGFyc2VEdXJhdGlvbl0g
cGFyc2VzIGEgZHVyYXRpb24gc3RkOjpzdHJpbmcuICBBIGR1cmF0aW9uIHN0ZDo6c3RyaW5nIGlz
CisvLyAgIFtQYXJzZUR1cmF0aW9uXSBwYXJzZXMgYSBkdXJhdGlvbiBzdHJpbmcuICBBIGR1cmF0
aW9uIHN0cmluZyBpcwogLy8gICBhIHBvc3NpYmx5IHNpZ25lZCBzZXF1ZW5jZSBvZiBkZWNpbWFs
IG51bWJlcnMsIGVhY2ggd2l0aCBvcHRpb25hbAogLy8gICBmcmFjdGlvbiBhbmQgYSB1bml0IHN1
ZmZpeCwgc3VjaCBhcyAiMzAwbXMiLCAiLTEuNWgiIG9yICIyaDQ1bSIuCiAvLyAgIFZhbGlkIHRp
bWUgdW5pdHMgYXJlICJucyIsICJ1cyIgIm1zIiwgInMiLCAibSIsICJoIi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvZm9ybWF0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXQuY2MKaW5kZXggZTk4ZTYw
YTM3MmJmYzNhNDQ3MmM4YTE3YWM3YTUzODM3ODJiODg3YS4uZWU1OTdlNDA3YTlkZGQyMjZhOGY4
ODA2NTlmMmQ1MDQyN2Y5MTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9mb3JtYXQuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9mb3JtYXQuY2MKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBQYXJzZVRpbWUo
Y29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LCBhYnNs
OjpUaW1lKgogICByZXR1cm4gYWJzbDo6UGFyc2VUaW1lKGZvcm1hdCwgaW5wdXQsIGFic2w6OlVU
Q1RpbWVab25lKCksIHRpbWUsIGVycik7CiB9CiAKLS8vIElmIHRoZSBpbnB1dCBzdGQ6OnN0cmlu
ZyBkb2VzIG5vdCBjb250YWluIGFuIGV4cGxpY2l0IFVUQyBvZmZzZXQsIGludGVycHJldAorLy8g
SWYgdGhlIGlucHV0IHN0cmluZyBkb2VzIG5vdCBjb250YWluIGFuIGV4cGxpY2l0IFVUQyBvZmZz
ZXQsIGludGVycHJldAogLy8gdGhlIGZpZWxkcyB3aXRoIHJlc3BlY3QgdG8gdGhlIGdpdmVuIFRp
bWVab25lLgogYm9vbCBQYXJzZVRpbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qg
c3RkOjpzdHJpbmcmIGlucHV0LCBhYnNsOjpUaW1lWm9uZSB0eiwKICAgICAgICAgICAgICAgIGFi
c2w6OlRpbWUqIHRpbWUsIHN0ZDo6c3RyaW5nKiBlcnIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3Rp
bWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGltZS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lLmgKaW5kZXggODk4MjIyYjRjN2Fm
Mjk4MzBlYTIwNTA3ZDljMjk0ZjJkMGVmOTY5Yy4uMDg0MmZhNGE0Njg5NTJmYmI3MWZlOWU5OGI4
ODNlMmZhNDdkOTZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1
ZGUvY2N0ei9jaXZpbF90aW1lLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1
ZGUvY2N0ei9jaXZpbF90aW1lLmgKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIGNjdHogewog
Ly8gaW5mZXJpb3IgZmllbGRzIHRvIHRoZWlyIG1pbmltdW0gdmFsaWQgdmFsdWUgKGFzIGRlc2Ny
aWJlZCBhYm92ZSkuIFRoZQogLy8gZm9sbG93aW5nIGFyZSBleGFtcGxlcyBvZiBob3cgZWFjaCBv
ZiB0aGUgc2l4IHR5cGVzIHdvdWxkIGFsaWduIHRoZSBmaWVsZHMKIC8vIHJlcHJlc2VudGluZyBO
b3ZlbWJlciAyMiwgMjAxNSBhdCAxMjozNDo1NiBpbiB0aGUgYWZ0ZXJub29uLiAoTm90ZTogdGhl
Ci0vLyBzdGQ6OnN0cmluZyBmb3JtYXQgdXNlZCBoZXJlIGlzIG5vdCBpbXBvcnRhbnQ7IGl0J3Mg
anVzdCBhIHNob3J0aGFuZCB3YXkgb2YKKy8vIHN0cmluZyBmb3JtYXQgdXNlZCBoZXJlIGlzIG5v
dCBpbXBvcnRhbnQ7IGl0J3MganVzdCBhIHNob3J0aGFuZCB3YXkgb2YKIC8vIHNob3dpbmcgdGhl
IHNpeCBZTURITVMgZmllbGRzLikKIC8vCiAvLyAgIGNpdmlsX3NlY29uZCAgMjAxNS0xMS0yMiAx
MjozNDo1NgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0
ei9jaXZpbF90aW1lX2RldGFpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUv
Y2N0ei9jaXZpbF90aW1lX2RldGFpbC5oCmluZGV4IDIzNjJhNGY0ZmJjOTU4ZmEzMGRjZmU3YTE0
MTg3Njg4ZGY0NjJhZGYuLmQ3ZjcyNzE3ZWNlMjU0MDg4NzQwZTczNzU4Mjg1OTZjOTYzZmIwMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2aWxf
dGltZV9kZXRhaWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6
L2NpdmlsX3RpbWVfZGV0YWlsLmgKQEAgLTM1NSwxMSArMzU1LDExIEBAIGNsYXNzIGNpdmlsX3Rp
bWUgewogICAgICAgOiBjaXZpbF90aW1lKGN0LmZfKSB7fQogCiAgIC8vIEZhY3RvcmllcyBmb3Ig
dGhlIG1heGltdW0vbWluaW11bSByZXByZXNlbnRhYmxlIGNpdmlsX3RpbWUuCi0gIHN0YXRpYyBj
aXZpbF90aW1lIG1heCgpIHsKKyAgc3RhdGljIENPTlNURVhQUl9GIGNpdmlsX3RpbWUgbWF4KCkg
ewogICAgIGNvbnN0IGF1dG8gbWF4X3llYXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6aW50
X2xlYXN0NjRfdD46Om1heCgpOwogICAgIHJldHVybiBjaXZpbF90aW1lKG1heF95ZWFyLCAxMiwg
MzEsIDIzLCA1OSwgNTkpOwogICB9Ci0gIHN0YXRpYyBjaXZpbF90aW1lIG1pbigpIHsKKyAgc3Rh
dGljIENPTlNURVhQUl9GIGNpdmlsX3RpbWUgbWluKCkgewogICAgIGNvbnN0IGF1dG8gbWluX3ll
YXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6aW50X2xlYXN0NjRfdD46Om1pbigpOwogICAg
IHJldHVybiBjaXZpbF90aW1lKG1pbl95ZWFyLCAxLCAxLCAwLCAwLCAwKTsKICAgfQpAQCAtNDE2
LDYgKzQxNiwxMiBAQCBjbGFzcyBjaXZpbF90aW1lIHsKICAgICByZXR1cm4gZGlmZmVyZW5jZShU
e30sIGxocy5mXywgcmhzLmZfKTsKICAgfQogCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBm
cmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgY2l2aWxfdGltZSBhKSB7CisgICAgcmV0dXJuIEg6
OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBhLmZfLnksIGEuZl8ubSwgYS5mXy5kLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5mXy5oaCwgYS5mXy5tbSwgYS5mXy5zcyk7Cisg
IH0KKwogIHByaXZhdGU6CiAgIC8vIEFsbCBpbnN0YW50aWF0aW9ucyBvZiB0aGlzIHRlbXBsYXRl
IGFyZSBhbGxvd2VkIHRvIGNhbGwgdGhlIGZvbGxvd2luZwogICAvLyBwcml2YXRlIGNvbnN0cnVj
dG9yIGFuZCBhY2Nlc3MgdGhlIHByaXZhdGUgZmllbGRzIG1lbWJlci4KQEAgLTUwOCwxMiArNTE0
LDggQEAgQ09OU1RFWFBSX0Ygd2Vla2RheSBnZXRfd2Vla2RheShjb25zdCBjaXZpbF9kYXkmIGNk
KSBub2V4Y2VwdCB7CiAgIENPTlNURVhQUl9EIGludCBrX3dlZWtkYXlfb2Zmc2V0c1sxICsgMTJd
ID0gewogICAgICAgLTEsIDAsIDMsIDIsIDUsIDAsIDMsIDUsIDEsIDQsIDYsIDIsIDQsCiAgIH07
Ci0gIHllYXJfdCB3ZCA9IGNkLnllYXIoKSAtIChjZC5tb250aCgpIDwgMyk7Ci0gIGlmICh3ZCA+
PSAwKSB7Ci0gICAgd2QgKz0gd2QgLyA0IC0gd2QgLyAxMDAgKyB3ZCAvIDQwMDsKLSAgfSBlbHNl
IHsKLSAgICB3ZCArPSAod2QgLSAzKSAvIDQgLSAod2QgLSA5OSkgLyAxMDAgKyAod2QgLSAzOTkp
IC8gNDAwOwotICB9CisgIHllYXJfdCB3ZCA9IDI0MDAgKyAoY2QueWVhcigpICUgNDAwKSAtIChj
ZC5tb250aCgpIDwgMyk7CisgIHdkICs9IHdkIC8gNCAtIHdkIC8gMTAwICsgd2QgLyA0MDA7CiAg
IHdkICs9IGtfd2Vla2RheV9vZmZzZXRzW2NkLm1vbnRoKCldICsgY2QuZGF5KCk7CiAgIHJldHVy
biBrX3dlZWtkYXlfYnlfc3VuX29mZlsod2QgJSA3ICsgNykgJSA3XTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGltZV96b25lLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3RpbWVfem9uZS5oCmluZGV4IDBiOTc2
NGVhNzJhOWNhYTNlNWYyZjdmZWUwNDI3MzU3YWVkMjg4MDguLmYyOGRhZDE3NTUwNjU5YjA3ZjBj
MjAwMzhiYzQ3ZjI1YTAyZjYyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei9pbmNsdWRlL2NjdHovdGltZV96b25lLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L2luY2x1ZGUvY2N0ei90aW1lX3pvbmUuaApAQCAtMjI0LDYgKzIyNCwxMSBAQCBjbGFzcyB0aW1l
X3pvbmUgewogICAgIHJldHVybiAhKGxocyA9PSByaHMpOwogICB9CiAKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCB0aW1lX3pvbmUgdHopIHsK
KyAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksICZ0ei5lZmZlY3RpdmVfaW1wbCgp
KTsKKyAgfQorCiAgIGNsYXNzIEltcGw7CiAKICBwcml2YXRlOgpAQCAtMjc5LDcgKzI4NCw3IEBA
IGJvb2wgcGFyc2UoY29uc3Qgc3RkOjpzdHJpbmcmLCBjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0
IHRpbWVfem9uZSYsCiB9ICAvLyBuYW1lc3BhY2UgZGV0YWlsCiAKIC8vIEZvcm1hdHMgdGhlIGdp
dmVuIHRpbWVfcG9pbnQgaW4gdGhlIGdpdmVuIGNjdHo6OnRpbWVfem9uZSBhY2NvcmRpbmcgdG8K
LS8vIHRoZSBwcm92aWRlZCBmb3JtYXQgc3RkOjpzdHJpbmcuIFVzZXMgc3RyZnRpbWUoKS1saWtl
IGZvcm1hdHRpbmcgb3B0aW9ucywKKy8vIHRoZSBwcm92aWRlZCBmb3JtYXQgc3RyaW5nLiBVc2Vz
IHN0cmZ0aW1lKCktbGlrZSBmb3JtYXR0aW5nIG9wdGlvbnMsCiAvLyB3aXRoIHRoZSBmb2xsb3dp
bmcgZXh0ZW5zaW9uczoKIC8vCiAvLyAgIC0gJUV6ICAtIFJGQzMzMzktY29tcGF0aWJsZSBudW1l
cmljIFVUQyBvZmZzZXQgKCtoaDptbSBvciAtaGg6bW0pCkBAIC0yOTgsNyArMzAzLDcgQEAgYm9v
bCBwYXJzZShjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0IHN0ZDo6c3RyaW5nJiwgY29uc3QgdGlt
ZV96b25lJiwKIC8vIG1vcmUgdGhhbiBmb3VyIGNoYXJhY3RlcnMsIGp1c3QgbGlrZSAlWS4KIC8v
CiAvLyBUaXA6IEZvcm1hdCBzdHJpbmdzIHNob3VsZCBpbmNsdWRlIHRoZSBVVEMgb2Zmc2V0IChl
LmcuLCAleiwgJUV6LCBvciAlRSp6KQotLy8gc28gdGhhdCB0aGUgcmVzdWx0aW5nIHN0ZDo6c3Ry
aW5nIHVuaXF1ZWx5IGlkZW50aWZpZXMgYW4gYWJzb2x1dGUgdGltZS4KKy8vIHNvIHRoYXQgdGhl
IHJlc3VsdGluZyBzdHJpbmcgdW5pcXVlbHkgaWRlbnRpZmllcyBhbiBhYnNvbHV0ZSB0aW1lLgog
Ly8KIC8vIEV4YW1wbGU6CiAvLyAgIGNjdHo6OnRpbWVfem9uZSBsYXg7CkBAIC0zMTQsNyArMzE5
LDcgQEAgaW5saW5lIHN0ZDo6c3RyaW5nIGZvcm1hdChjb25zdCBzdGQ6OnN0cmluZyYgZm10LCBj
b25zdCB0aW1lX3BvaW50PEQ+JiB0cCwKICAgcmV0dXJuIGRldGFpbDo6Zm9ybWF0KGZtdCwgcC5m
aXJzdCwgbiwgdHopOwogfQogCi0vLyBQYXJzZXMgYW4gaW5wdXQgc3RkOjpzdHJpbmcgYWNjb3Jk
aW5nIHRvIHRoZSBwcm92aWRlZCBmb3JtYXQgc3RkOjpzdHJpbmcgYW5kCisvLyBQYXJzZXMgYW4g
aW5wdXQgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgZm9ybWF0IHN0cmluZyBhbmQK
IC8vIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgdGltZV9wb2ludC4gVXNlcyBzdHJmdGltZSgp
LWxpa2UgZm9ybWF0dGluZwogLy8gb3B0aW9ucywgd2l0aCB0aGUgc2FtZSBleHRlbnNpb25zIGFz
IGNjdHo6OmZvcm1hdCgpLCBidXQgd2l0aCB0aGUKIC8vIGV4Y2VwdGlvbnMgdGhhdCAlRSNTIGlz
IGludGVycHJldGVkIGFzICVFKlMsIGFuZCAlRSNmIGFzICVFKmYuICVFegpAQCAtMzI4LDcgKzMz
Myw3IEBAIGlubGluZSBzdGQ6OnN0cmluZyBmb3JtYXQoY29uc3Qgc3RkOjpzdHJpbmcmIGZtdCwg
Y29uc3QgdGltZV9wb2ludDxEPiYgdHAsCiAvLwogLy8gICAiMTk3MC0wMS0wMSAwMDowMDowMC4w
ICswMDAwIgogLy8KLS8vIEZvciBleGFtcGxlLCBwYXJzaW5nIGEgc3RkOjpzdHJpbmcgb2YgIjE1
OjQ1IiAoJUg6JU0pIHdpbGwgcmV0dXJuIGEgdGltZV9wb2ludAorLy8gRm9yIGV4YW1wbGUsIHBh
cnNpbmcgYSBzdHJpbmcgb2YgIjE1OjQ1IiAoJUg6JU0pIHdpbGwgcmV0dXJuIGEgdGltZV9wb2lu
dAogLy8gdGhhdCByZXByZXNlbnRzICIxOTcwLTAxLTAxIDE1OjQ1OjAwLjAgKzAwMDAiLgogLy8K
IC8vIE5vdGUgdGhhdCBwYXJzZSgpIHJldHVybnMgdGltZSBpbnN0YW50cywgc28gaXQgbWFrZXMg
bW9zdCBzZW5zZSB0byBwYXJzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3NyYy9jY3R6X2JlbmNobWFyay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2N0
el9iZW5jaG1hcmsuY2MKaW5kZXggYzk3ZGY3OGMwOWM4Mzk0NWU2OGY1NTExYjdiOTJlNGFmMzE3
NzBjNC4uNDQ5OGQ3ZDBiNmI3ZTBjNGE2ZmRiOTIxNDljNzg3OTZkM2QwOGI2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jY3R6X2JlbmNobWFyay5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2NjdHpfYmVuY2htYXJrLmNjCkBAIC03NzgsMTMg
Kzc3OCwxMyBAQCB2b2lkIEJNX1pvbmVfVVRDVGltZVpvbmUoYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKIH0KIEJFTkNITUFSSyhCTV9ab25lX1VUQ1RpbWVab25lKTsKIAotLy8gSW4gZWFjaCAi
VG9EYXRlVGltZSIgYmVuY2htYXJrIHdlIHN3aXRjaCBiZXR3ZWVuIHR3byBpbnN0YW50cwotLy8g
c2VwYXJhdGVkIGJ5IGF0IGxlYXN0IG9uZSB0cmFuc2l0aW9uIGluIG9yZGVyIHRvIGRlZmVhdCBh
bnkKLS8vIGludGVybmFsIGNhY2hpbmcgb2YgcHJldmlvdXMgcmVzdWx0cyAoZS5nLiwgc2VlIGxv
Y2FsX3RpbWVfaGludF8pLgorLy8gSW4gZWFjaCAiVG9DaXZpbCIgYmVuY2htYXJrIHdlIHN3aXRj
aCBiZXR3ZWVuIHR3byBpbnN0YW50cyBzZXBhcmF0ZWQKKy8vIGJ5IGF0IGxlYXN0IG9uZSB0cmFu
c2l0aW9uIGluIG9yZGVyIHRvIGRlZmVhdCBhbnkgaW50ZXJuYWwgY2FjaGluZyBvZgorLy8gcHJl
dmlvdXMgcmVzdWx0cyAoZS5nLiwgc2VlIGxvY2FsX3RpbWVfaGludF8pLgogLy8KIC8vIFRoZSAi
VVRDIiB2YXJpYW50cyB1c2UgVVRDIGluc3RlYWQgb2YgdGhlIEdvb2dsZS9sb2NhbCB0aW1lIHpv
bmUuCiAKLXZvaWQgQk1fVGltZV9Ub0RhdGVUaW1lX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKK3ZvaWQgQk1fVGltZV9Ub0NpdmlsX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUp
IHsKICAgY29uc3QgY2N0ejo6dGltZV96b25lIHR6ID0gVGVzdFRpbWVab25lKCk7CiAgIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdHAgPQogICAgICAgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoMTM4NDU2OTAyNyk7CkBAIC03OTYsOSArNzk2LDkg
QEAgdm9pZCBCTV9UaW1lX1RvRGF0ZVRpbWVfQ0NUWihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkg
ewogICAgIGJlbmNobWFyazo6RG9Ob3RPcHRpbWl6ZShjY3R6Ojpjb252ZXJ0KHRwLCB0eikpOwog
ICB9CiB9Ci1CRU5DSE1BUksoQk1fVGltZV9Ub0RhdGVUaW1lX0NDVFopOworQkVOQ0hNQVJLKEJN
X1RpbWVfVG9DaXZpbF9DQ1RaKTsKIAotdm9pZCBCTV9UaW1lX1RvRGF0ZVRpbWVfTGliYyhiZW5j
aG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9pZCBCTV9UaW1lX1RvQ2l2aWxfTGliYyhiZW5jaG1h
cms6OlN0YXRlJiBzdGF0ZSkgewogICAvLyBObyB0aW1lem9uZSBzdXBwb3J0LCBzbyBqdXN0IHVz
ZSBsb2NhbHRpbWUuCiAgIHRpbWVfdCB0ID0gMTM4NDU2OTAyNzsKICAgdGltZV90IHQyID0gMTQx
ODk2MjU3ODsKQEAgLTgxMyw5ICs4MTMsOSBAQCB2b2lkIEJNX1RpbWVfVG9EYXRlVGltZV9MaWJj
KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAjZW5kaWYKICAgfQogfQotQkVOQ0hNQVJLKEJN
X1RpbWVfVG9EYXRlVGltZV9MaWJjKTsKK0JFTkNITUFSSyhCTV9UaW1lX1RvQ2l2aWxfTGliYyk7
CiAKLXZvaWQgQk1fVGltZV9Ub0RhdGVUaW1lVVRDX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKK3ZvaWQgQk1fVGltZV9Ub0NpdmlsVVRDX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKICAgY29uc3QgY2N0ejo6dGltZV96b25lIHR6ID0gY2N0ejo6dXRjX3RpbWVfem9uZSgp
OwogICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRwID0KICAgICAgIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGltZV90KDEzODQ1NjkwMjcpOwpAQCAtODI0
LDkgKzgyNCw5IEBAIHZvaWQgQk1fVGltZV9Ub0RhdGVUaW1lVVRDX0NDVFooYmVuY2htYXJrOjpT
dGF0ZSYgc3RhdGUpIHsKICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoY2N0ejo6Y29udmVy
dCh0cCwgdHopKTsKICAgfQogfQotQkVOQ0hNQVJLKEJNX1RpbWVfVG9EYXRlVGltZVVUQ19DQ1Ra
KTsKK0JFTkNITUFSSyhCTV9UaW1lX1RvQ2l2aWxVVENfQ0NUWik7CiAKLXZvaWQgQk1fVGltZV9U
b0RhdGVUaW1lVVRDX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fVGlt
ZV9Ub0NpdmlsVVRDX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgdGltZV90IHQg
PSAxMzg0NTY5MDI3OwogICBzdHJ1Y3QgdG0gdG07CiAgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmlu
ZygpKSB7CkBAIC04MzgsMTYgKzgzOCwxNiBAQCB2b2lkIEJNX1RpbWVfVG9EYXRlVGltZVVUQ19M
aWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAjZW5kaWYKICAgfQogfQotQkVOQ0hNQVJL
KEJNX1RpbWVfVG9EYXRlVGltZVVUQ19MaWJjKTsKK0JFTkNITUFSSyhCTV9UaW1lX1RvQ2l2aWxV
VENfTGliYyk7CiAKLS8vIEluIGVhY2ggIkZyb21EYXRlVGltZSIgYmVuY2htYXJrIHdlIHN3aXRj
aCBiZXR3ZWVuIHR3byBZTURobXMKLS8vIHZhbHVlcyBzZXBhcmF0ZWQgYnkgYXQgbGVhc3Qgb25l
IHRyYW5zaXRpb24gaW4gb3JkZXIgdG8gZGVmZWF0IGFueQotLy8gaW50ZXJuYWwgY2FjaGluZyBv
ZiBwcmV2aW91cyByZXN1bHRzIChlLmcuLCBzZWUgdGltZV9sb2NhbF9oaW50XykuCisvLyBJbiBl
YWNoICJGcm9tQ2l2aWwiIGJlbmNobWFyayB3ZSBzd2l0Y2ggYmV0d2VlbiB0d28gWU1EaG1zIHZh
bHVlcworLy8gc2VwYXJhdGVkIGJ5IGF0IGxlYXN0IG9uZSB0cmFuc2l0aW9uIGluIG9yZGVyIHRv
IGRlZmVhdCBhbnkgaW50ZXJuYWwKKy8vIGNhY2hpbmcgb2YgcHJldmlvdXMgcmVzdWx0cyAoZS5n
Liwgc2VlIHRpbWVfbG9jYWxfaGludF8pLgogLy8KIC8vIFRoZSAiVVRDIiB2YXJpYW50cyB1c2Ug
VVRDIGluc3RlYWQgb2YgdGhlIEdvb2dsZS9sb2NhbCB0aW1lIHpvbmUuCiAvLyBUaGUgIkRheTAi
IHZhcmlhbnRzIHJlcXVpcmUgbm9ybWFsaXphdGlvbiBvZiB0aGUgZGF5IG9mIG1vbnRoLgogCi12
b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsK
K3ZvaWQgQk1fVGltZV9Gcm9tQ2l2aWxfQ0NUWihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewog
ICBjb25zdCBjY3R6Ojp0aW1lX3pvbmUgdHogPSBUZXN0VGltZVpvbmUoKTsKICAgaW50IGkgPSAw
OwogICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewpAQCAtODYwLDkgKzg2MCw5IEBAIHZv
aWQgQk1fVGltZV9Gcm9tRGF0ZVRpbWVfQ0NUWihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewog
ICAgIH0KICAgfQogfQotQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbURhdGVUaW1lX0NDVFopOworQkVO
Q0hNQVJLKEJNX1RpbWVfRnJvbUNpdmlsX0NDVFopOwogCi12b2lkIEJNX1RpbWVfRnJvbURhdGVU
aW1lX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fVGltZV9Gcm9tQ2l2
aWxfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICAvLyBObyB0aW1lem9uZSBzdXBw
b3J0LCBzbyBqdXN0IHVzZSBsb2NhbHRpbWUuCiAgIGludCBpID0gMDsKICAgd2hpbGUgKHN0YXRl
LktlZXBSdW5uaW5nKCkpIHsKQEAgLTg4NiwyMCArODg2LDIwIEBAIHZvaWQgQk1fVGltZV9Gcm9t
RGF0ZVRpbWVfTGliYyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICAgIGJlbmNobWFyazo6
RG9Ob3RPcHRpbWl6ZShta3RpbWUoJnRtKSk7CiAgIH0KIH0KLUJFTkNITUFSSyhCTV9UaW1lX0Zy
b21EYXRlVGltZV9MaWJjKTsKK0JFTkNITUFSSyhCTV9UaW1lX0Zyb21DaXZpbF9MaWJjKTsKIAot
dm9pZCBCTV9UaW1lX0Zyb21EYXRlVGltZVVUQ19DQ1RaKGJlbmNobWFyazo6U3RhdGUmIHN0YXRl
KSB7Cit2b2lkIEJNX1RpbWVfRnJvbUNpdmlsVVRDX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKICAgY29uc3QgY2N0ejo6dGltZV96b25lIHR6ID0gY2N0ejo6dXRjX3RpbWVfem9uZSgp
OwogICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewogICAgIGJlbmNobWFyazo6RG9Ob3RP
cHRpbWl6ZSgKICAgICAgICAgY2N0ejo6Y29udmVydChjY3R6OjpjaXZpbF9zZWNvbmQoMjAxNCwg
MTIsIDE4LCAyMCwgMTYsIDE4KSwgdHopKTsKICAgfQogfQotQkVOQ0hNQVJLKEJNX1RpbWVfRnJv
bURhdGVUaW1lVVRDX0NDVFopOworQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbUNpdmlsVVRDX0NDVFop
OwogCi0vLyBUaGVyZSBpcyBubyBCTV9UaW1lX0Zyb21EYXRlVGltZVVUQ19MaWJjLgorLy8gVGhl
cmUgaXMgbm8gQk1fVGltZV9Gcm9tQ2l2aWxVVENfTGliYy4KIAotdm9pZCBCTV9UaW1lX0Zyb21E
YXRlVGltZURheTBfQ0NUWihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9pZCBCTV9UaW1l
X0Zyb21DaXZpbERheTBfQ0NUWihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICBjb25zdCBj
Y3R6Ojp0aW1lX3pvbmUgdHogPSBUZXN0VGltZVpvbmUoKTsKICAgaW50IGkgPSAwOwogICB3aGls
ZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewpAQCAtOTEyLDkgKzkxMiw5IEBAIHZvaWQgQk1fVGlt
ZV9Gcm9tRGF0ZVRpbWVEYXkwX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgICB9
CiAgIH0KIH0KLUJFTkNITUFSSyhCTV9UaW1lX0Zyb21EYXRlVGltZURheTBfQ0NUWik7CitCRU5D
SE1BUksoQk1fVGltZV9Gcm9tQ2l2aWxEYXkwX0NDVFopOwogCi12b2lkIEJNX1RpbWVfRnJvbURh
dGVUaW1lRGF5MF9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX1RpbWVf
RnJvbUNpdmlsRGF5MF9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIC8vIE5vIHRp
bWV6b25lIHN1cHBvcnQsIHNvIGp1c3QgdXNlIGxvY2FsdGltZS4KICAgaW50IGkgPSAwOwogICB3
aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewpAQCAtOTM4LDcgKzkzOCw3IEBAIHZvaWQgQk1f
VGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAg
ICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUobWt0aW1lKCZ0bSkpOwogICB9CiB9Ci1CRU5DSE1B
UksoQk1fVGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0xpYmMpOworQkVOQ0hNQVJLKEJNX1RpbWVfRnJv
bUNpdmlsRGF5MF9MaWJjKTsKIAogY29uc3QgY2hhciogY29uc3Qga0Zvcm1hdHNbXSA9IHsKICAg
ICBSRkMxMTIzX2Z1bGwsICAgICAgICAgLy8gMApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRl
cm5hbC9jY3R6L3NyYy9jaXZpbF90aW1lX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovc3JjL2NpdmlsX3RpbWVfdGVzdC5jYwppbmRleCBmNjY0OGM4ZjFmMjFmMzIwN2FiYTFiNWU0
YmIwNjYwNjFiMDY0YjY1Li5mYWZmZGU0NzBhZjRmNDVjM2I4YTRiYWEwYzBkMmJjZmEzMTg4MDRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVfdGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2NpdmlsX3RpbWVfdGVzdC5j
YwpAQCAtNjIwLDcgKzYyMCw3IEBAIFRFU1QoQ2l2aWxUaW1lLCBSZWxhdGlvbmFsKSB7CiAgIFRF
U1RfUkVMQVRJT05BTChjaXZpbF9zZWNvbmQoMjAxNCwgMSwgMSwgMSwgMSwgMCksCiAgICAgICAg
ICAgICAgICAgICBjaXZpbF9zZWNvbmQoMjAxNCwgMSwgMSwgMSwgMSwgMSkpOwogCi0gIC8vIFRl
c3RzIHRoZSByZWxhdGlvbmFsIG9wZXJhdG9ycyBvZiB0d28gZGlmZmVyZW50IENpdmlsVGltZSB0
eXBlcy4KKyAgLy8gVGVzdHMgdGhlIHJlbGF0aW9uYWwgb3BlcmF0b3JzIG9mIHR3byBkaWZmZXJl
bnQgY2l2aWwtdGltZSB0eXBlcy4KICAgVEVTVF9SRUxBVElPTkFMKGNpdmlsX2RheSgyMDE0LCAx
LCAxKSwgY2l2aWxfbWludXRlKDIwMTQsIDEsIDEsIDEsIDEpKTsKICAgVEVTVF9SRUxBVElPTkFM
KGNpdmlsX2RheSgyMDE0LCAxLCAxKSwgY2l2aWxfbW9udGgoMjAxNCwgMikpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2ZpeGVkLmNjCmluZGV4IDU5OGIw
OGZkZTQyMjM2Y2YxMzdlMGU4MmQwOWQ5ZjJjMWYxYjIyZjAuLmRiOWE0NzVhOWI0OTA0Y2IyYzRk
YTZiNWNmMjgwY2E4Y2E0MzcyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei9zcmMvdGltZV96b25lX2ZpeGVkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9z
cmMvdGltZV96b25lX2ZpeGVkLmNjCkBAIC0xNSw4ICsxNSw4IEBACiAjaW5jbHVkZSAidGltZV96
b25lX2ZpeGVkLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y2Fzc2VydD4K
ICNpbmNsdWRlIDxjaHJvbm8+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPGNzdHJpbmc+
CiAjaW5jbHVkZSA8c3RyaW5nPgogCkBAIC0yOSw4ICsyOSwxNSBAQCBuYW1lc3BhY2UgewogLy8g
VGhlIHByZWZpeCB1c2VkIGZvciB0aGUgaW50ZXJuYWwgbmFtZXMgb2YgZml4ZWQtb2Zmc2V0IHpv
bmVzLgogY29uc3QgY2hhciBrRml4ZWRPZmZzZXRQcmVmaXhbXSA9ICJGaXhlZC9VVEMiOwogCitj
b25zdCBjaGFyIGtEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5IjsKKworY2hhciogRm9ybWF0MDJkKGNo
YXIqIHAsIGludCB2KSB7CisgICpwKysgPSBrRGlnaXRzWyh2IC8gMTApICUgMTBdOworICAqcCsr
ID0ga0RpZ2l0c1t2ICUgMTBdOworICByZXR1cm4gcDsKK30KKwogaW50IFBhcnNlMDJkKGNvbnN0
IGNoYXIqIHApIHsKLSAgc3RhdGljIGNvbnN0IGNoYXIga0RpZ2l0c1tdID0gIjAxMjM0NTY3ODki
OwogICBpZiAoY29uc3QgY2hhciogYXAgPSBzdGQ6OnN0cmNocihrRGlnaXRzLCAqcCkpIHsKICAg
ICBpbnQgdiA9IHN0YXRpY19jYXN0PGludD4oYXAgLSBrRGlnaXRzKTsKICAgICBpZiAoY29uc3Qg
Y2hhciogYnAgPSBzdGQ6OnN0cmNocihrRGlnaXRzLCAqKytwKSkgewpAQCAtOTUsOSArMTAyLDE3
IEBAIHN0ZDo6c3RyaW5nIEZpeGVkT2Zmc2V0VG9OYW1lKGNvbnN0IHNlY29uZHMmIG9mZnNldCkg
ewogICB9CiAgIGludCBob3VycyA9IG1pbnV0ZXMgLyA2MDsKICAgbWludXRlcyAlPSA2MDsKLSAg
Y2hhciBidWZbc2l6ZW9mKGtGaXhlZE9mZnNldFByZWZpeCkgKyBzaXplb2YoIi0yNDowMDowMCIp
XTsKLSAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVzJWMlMDJkOiUwMmQ6JTAyZCIsCi0g
ICAgICAgICAgIGtGaXhlZE9mZnNldFByZWZpeCwgc2lnbiwgaG91cnMsIG1pbnV0ZXMsIHNlY29u
ZHMpOworICBjaGFyIGJ1ZltzaXplb2Yoa0ZpeGVkT2Zmc2V0UHJlZml4KSAtIDEgKyBzaXplb2Yo
Ii0yNDowMDowMCIpXTsKKyAgc3RkOjpzdHJjcHkoYnVmLCBrRml4ZWRPZmZzZXRQcmVmaXgpOwor
ICBjaGFyKiBlcCA9IGJ1ZiArIHNpemVvZihrRml4ZWRPZmZzZXRQcmVmaXgpIC0gMTsKKyAgKmVw
KysgPSBzaWduOworICBlcCA9IEZvcm1hdDAyZChlcCwgaG91cnMpOworICAqZXArKyA9ICc6JzsK
KyAgZXAgPSBGb3JtYXQwMmQoZXAsIG1pbnV0ZXMpOworICAqZXArKyA9ICc6JzsKKyAgZXAgPSBG
b3JtYXQwMmQoZXAsIHNlY29uZHMpOworICAqZXArKyA9ICdcMCc7CisgIGFzc2VydChlcCA9PSBi
dWYgKyBzaXplb2YoYnVmKSk7CiAgIHJldHVybiBidWY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUv
aW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdC5jYwppbmRleCAxYjAyMzg0OGVmYTE4
ZTgxNTYyZDU3YjM5NTVhYzEyMGRmODU1NDc0Li5hMDJiMWUzNDFhYzBjY2VmZDYwZTBmYTg1OTAx
NGU4ZDBhZDA1YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3Rp
bWVfem9uZV9mb3JtYXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1l
X3pvbmVfZm9ybWF0LmNjCkBAIC01MzMsNyArNTMzLDcgQEAgY29uc3QgY2hhciogUGFyc2VTdWJT
ZWNvbmRzKGNvbnN0IGNoYXIqIGRwLCBkZXRhaWw6OmZlbXRvc2Vjb25kcyogc3Vic2Vjb25kcykg
ewogICByZXR1cm4gZHA7CiB9CiAKLS8vIFBhcnNlcyBhIHN0ZDo6c3RyaW5nIGludG8gYSBzdGQ6
OnRtIHVzaW5nIHN0cnB0aW1lKDMpLgorLy8gUGFyc2VzIGEgc3RyaW5nIGludG8gYSBzdGQ6OnRt
IHVzaW5nIHN0cnB0aW1lKDMpLgogY29uc3QgY2hhciogUGFyc2VUTShjb25zdCBjaGFyKiBkcCwg
Y29uc3QgY2hhciogZm10LCBzdGQ6OnRtKiB0bSkgewogICBpZiAoZHAgIT0gbnVsbHB0cikgewog
ICAgIGRwID0gc3RycHRpbWUoZHAsIGZtdCwgdG0pOwpAQCAtNzQzLDcgKzc0Myw3IEBAIGJvb2wg
cGFyc2UoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0
LAogICAgIGRhdGEgPSBQYXJzZVRNKGRhdGEsIHNwZWMuY19zdHIoKSwgJnRtKTsKIAogICAgIC8v
IElmIHdlIHN1Y2Nlc3NmdWxseSBwYXJzZWQgJXAgd2UgbmVlZCB0byByZW1lbWJlciB3aGV0aGVy
IHRoZSByZXN1bHQKLSAgICAvLyB3YXMgQU0gb3IgUE0gc28gdGhhdCB3ZSBjYW4gYWRqdXN0IHRt
X2hvdXIgYmVmb3JlIENvbnZlcnREYXRlVGltZSgpLgorICAgIC8vIHdhcyBBTSBvciBQTSBzbyB0
aGF0IHdlIGNhbiBhZGp1c3QgdG1faG91ciBiZWZvcmUgdGltZV96b25lOjpsb29rdXAoKS4KICAg
ICAvLyBTbyByZXBhcnNlIHRoZSBpbnB1dCB3aXRoIGEga25vd24gQU0gaG91ciwgYW5kIGNoZWNr
IGlmIGl0IGlzIHNoaWZ0ZWQKICAgICAvLyB0byBhIFBNIGhvdXIuCiAgICAgaWYgKHNwZWMgPT0g
IiVwIiAmJiBkYXRhICE9IG51bGxwdHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJu
YWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3NyYy90aW1lX3pvbmVfZm9ybWF0X3Rlc3QuY2MKaW5kZXggYTkwZGRhNzYwM2E4YTEw
ZTM3YjNiNThkOTY2NTk2OGI1ODM5NjJiZS4uNmI5OTI4ZWQzMmY0MzEwMjdjNGI5MmE0OWMzMmU5
YTA4YTE4ZDg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1l
X3pvbmVfZm9ybWF0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90
aW1lX3pvbmVfZm9ybWF0X3Rlc3QuY2MKQEAgLTY2OSwxMyArNjY5LDEzIEBAIFRFU1QoUGFyc2Us
IFdpdGhUaW1lWm9uZSkgewogICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV96b25lKCksICZ0
cCkpOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMjAxMywgNiwgMjgsIDE5IC0gOCAtIDcsIDgsIDks
IC03ICogNjAgKiA2MCwgdHJ1ZSwgIlBEVCIpOwogCi0gIC8vIENoZWNrIGEgc2tpcHBlZCB0aW1l
IChhIFNwcmluZyBEU1QgdHJhbnNpdGlvbikuICBwYXJzZSgpIHJldHVybnMKLSAgLy8gdGhlIHBy
ZWZlcnJlZC1vZmZzZXQgcmVzdWx0LCBhcyBkZWZpbmVkIGZvciBDb252ZXJ0RGF0ZVRpbWUoKS4K
KyAgLy8gQ2hlY2sgYSBza2lwcGVkIHRpbWUgKGEgU3ByaW5nIERTVCB0cmFuc2l0aW9uKS4gcGFy
c2UoKSB1c2VzIHRoZQorICAvLyBwcmUtdHJhbnNpdGlvbiBvZmZzZXQuCiAgIEVYUEVDVF9UUlVF
KHBhcnNlKCIlWS0lbS0lZCAlSDolTTolUyIsICIyMDExLTAzLTEzIDAyOjE1OjAwIiwgdHosICZ0
cCkpOwogICBFeHBlY3RUaW1lKHRwLCB0eiwgMjAxMSwgMywgMTMsIDMsIDE1LCAwLCAtNyAqIDYw
ICogNjAsIHRydWUsICJQRFQiKTsKIAotICAvLyBDaGVjayBhIHJlcGVhdGVkIHRpbWUgKGEgRmFs
bCBEU1QgdHJhbnNpdGlvbikuICBwYXJzZSgpIHJldHVybnMKLSAgLy8gdGhlIHByZWZlcnJlZC1v
ZmZzZXQgcmVzdWx0LCBhcyBkZWZpbmVkIGZvciBDb252ZXJ0RGF0ZVRpbWUoKS4KKyAgLy8gQ2hl
Y2sgYSByZXBlYXRlZCB0aW1lIChhIEZhbGwgRFNUIHRyYW5zaXRpb24pLiAgcGFyc2UoKSB1c2Vz
IHRoZQorICAvLyBwcmUtdHJhbnNpdGlvbiBvZmZzZXQuCiAgIEVYUEVDVF9UUlVFKHBhcnNlKCIl
WS0lbS0lZCAlSDolTTolUyIsICIyMDExLTExLTA2IDAxOjE1OjAwIiwgdHosICZ0cCkpOwogICBF
eHBlY3RUaW1lKHRwLCB0eiwgMjAxMSwgMTEsIDYsIDEsIDE1LCAwLCAtNyAqIDYwICogNjAsIHRy
dWUsICJQRFQiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMv
dGltZV96b25lX2luZm8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9u
ZV9pbmZvLmNjCmluZGV4IGJmNzM2MzVkNGM2YThjMDMzYjZlNDg3OTI1YzQxYTJlYWI4MDUxODQu
LjJjYjM1OGQwNDhlMmQ4MjE5MWRlOGJjZjIwMjgyOWM3ZWEyY2I4ODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2luZm8uY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW5mby5jYwpAQCAtMjg2LDcgKzI4Niw3
IEBAIGJvb2wgVGltZVpvbmVJbmZvOjpFcXVpdlRyYW5zaXRpb25zKHN0ZDo6dWludF9mYXN0OF90
IHR0MV9pbmRleCwKICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIFVzZSB0aGUgUE9TSVgtVFotZW52
aXJvbm1lbnQtdmFyaWFibGUtc3R5bGUgc3RkOjpzdHJpbmcgdG8gaGFuZGxlIHRpbWVzCisvLyBV
c2UgdGhlIFBPU0lYLVRaLWVudmlyb25tZW50LXZhcmlhYmxlLXN0eWxlIHN0cmluZyB0byBoYW5k
bGUgdGltZXMKIC8vIGluIHllYXJzIGFmdGVyIHRoZSBsYXN0IHRyYW5zaXRpb24gc3RvcmVkIGlu
IHRoZSB6b25laW5mbyBkYXRhLgogdm9pZCBUaW1lWm9uZUluZm86OkV4dGVuZFRyYW5zaXRpb25z
KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEhlYWRlciYgaGRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6
L3NyYy90aW1lX3pvbmVfcG9zaXguaAppbmRleCA2NjE5ZjI3ZWRjZjYzODk1YWJlYjIzZjNkZGI0
OGVmZjRmOWYyYWM4Li45Y2NkNGE4YjY4YmQ1NzYxZjU2ZTMxNGI5ZDhhMjUwMTcxYjQ4ZDY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX3Bvc2l4LmgKQEAg
LTg5LDcgKzg5LDcgQEAgc3RydWN0IFBvc2l4VHJhbnNpdGlvbiB7CiAgIH0gdGltZTsKIH07CiAK
LS8vIFRoZSBlbnRpcmV0eSBvZiBhIFBPU0lYLXN0ZDo6c3RyaW5nIHNwZWNpZmllZCB0aW1lLXpv
bmUgcnVsZS4gVGhlIHN0YW5kYXJkCisvLyBUaGUgZW50aXJldHkgb2YgYSBQT1NJWC1zdHJpbmcg
c3BlY2lmaWVkIHRpbWUtem9uZSBydWxlLiBUaGUgc3RhbmRhcmQKIC8vIGFiYnJldmlhdGlvbiBh
bmQgb2Zmc2V0IGFyZSBhbHdheXMgZ2l2ZW4uIElmIHRoZSB0aW1lIHpvbmUgaW5jbHVkZXMKIC8v
IGRheWxpZ2h0IHNhdmluZywgdGhlbiB0aGUgZGF5bGlnaHQgYWJicmV2YXRpb24gaXMgbm9uLWVt
cHR5IGFuZCB0aGUKIC8vIHJlbWFpbmluZyBmaWVsZHMgYXJlIGFsc28gdmFsaWQuIE5vdGUgdGhh
dCB0aGUgc3RhcnQvZW5kIHRyYW5zaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWUu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvdGltZS5oCmluZGV4IGM0MWNiODljNWVmZjFkNGRhZjhlY2IxNmM1YjE1
NjM5NzAyZjY0NjIuLjUwYmY5NzFkZjBhMjljYjQ3NTBhZWY3MGMxMWU3MDU0NDc2NDZhMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvdGltZS5oCkBAIC0y
NSwxMSArMjUsMTIgQEAKIC8vICAqIGBhYnNsOjpUaW1lWm9uZWAgZGVmaW5lcyBnZW9wb2xpdGlj
YWwgdGltZSB6b25lIHJlZ2lvbnMgKGFzIGNvbGxlY3RlZAogLy8gICAgIHdpdGhpbiB0aGUgSUFO
QSBUaW1lIFpvbmUgZGF0YWJhc2UgKGh0dHBzOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMpKS4K
IC8vCisvLwogLy8gRXhhbXBsZToKIC8vCiAvLyAgIGFic2w6OlRpbWVab25lIG55YzsKIC8vCi0v
LyAgIC8vIExvYWRUaW1lWm9uZSBtYXkgZmFpbCBzbyBpdCdzIGFsd2F5cyBiZXR0ZXIgdG8gY2hl
Y2sgZm9yIHN1Y2Nlc3MuCisvLyAgIC8vIExvYWRUaW1lWm9uZSgpIG1heSBmYWlsIHNvIGl0J3Mg
YWx3YXlzIGJldHRlciB0byBjaGVjayBmb3Igc3VjY2Vzcy4KIC8vICAgaWYgKCFhYnNsOjpMb2Fk
VGltZVpvbmUoIkFtZXJpY2EvTmV3X1lvcmsiLCAmbnljKSkgewogLy8gICAgICAvLyBoYW5kbGUg
ZXJyb3IgY2FzZQogLy8gICB9CkBAIC0xNjIsNiArMTYzLDExIEBAIGNsYXNzIER1cmF0aW9uIHsK
ICAgRHVyYXRpb24mIG9wZXJhdG9yKj0oZmxvYXQgcikgeyByZXR1cm4gKnRoaXMgKj0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihyKTsgfQogICBEdXJhdGlvbiYgb3BlcmF0b3IvPShmbG9hdCByKSB7IHJl
dHVybiAqdGhpcyAvPSBzdGF0aWNfY2FzdDxkb3VibGU+KHIpOyB9CiAKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCBEdXJhdGlvbiBkKSB7Cisg
ICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCBkLnJlcF9oaV8sIGQucmVwX2xvXyk7
CisgIH0KKwogIHByaXZhdGU6CiAgIGZyaWVuZCBjb25zdGV4cHIgaW50NjRfdCB0aW1lX2ludGVy
bmFsOjpHZXRSZXBIaShEdXJhdGlvbiBkKTsKICAgZnJpZW5kIGNvbnN0ZXhwciB1aW50MzJfdCB0
aW1lX2ludGVybmFsOjpHZXRSZXBMbyhEdXJhdGlvbiBkKTsKQEAgLTMyMSw2ICszMjcsOSBAQCBE
dXJhdGlvbiBDZWlsKER1cmF0aW9uIGQsIER1cmF0aW9uIHVuaXQpOwogLy8gICAwID09IGQgLyBp
bmYKIC8vICAgSU5UNjRfTUFYID09IGluZiAvIGQKIC8vCisvLyAgIGQgPCBpbmYKKy8vICAgLWlu
ZiA8IGQKKy8vCiAvLyAgIC8vIERpdmlzaW9uIGJ5IHplcm8gcmV0dXJucyBpbmZpbml0eSwgb3Ig
SU5UNjRfTUlOL01BWCB3aGVyZSBhcHByb3ByaWF0ZS4KIC8vICAgaW5mID09IGQgLyAwCiAvLyAg
IElOVDY0X01BWCA9PSBkIC8gYWJzbDo6WmVyb0R1cmF0aW9uKCkKQEAgLTQ4MSw3ICs0OTAsNyBA
QCBzdGQ6OmNocm9ubzo6aG91cnMgVG9DaHJvbm9Ib3VycyhEdXJhdGlvbiBkKTsKIAogLy8gRm9y
bWF0RHVyYXRpb24oKQogLy8KLS8vIFJldHVybnMgYSBzdGQ6OnN0cmluZyByZXByZXNlbnRpbmcg
dGhlIGR1cmF0aW9uIGluIHRoZSBmb3JtICI3MmgzbTAuNXMiLgorLy8gUmV0dXJucyBhIHN0cmlu
ZyByZXByZXNlbnRpbmcgdGhlIGR1cmF0aW9uIGluIHRoZSBmb3JtICI3MmgzbTAuNXMiLgogLy8g
UmV0dXJucyAiaW5mIiBvciAiLWluZiIgZm9yICsvLSBgSW5maW5pdGVEdXJhdGlvbigpYC4KIHN0
ZDo6c3RyaW5nIEZvcm1hdER1cmF0aW9uKER1cmF0aW9uIGQpOwogCkBAIC00OTIsMTEgKzUwMSwx
MSBAQCBpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIER1
cmF0aW9uIGQpIHsKIAogLy8gUGFyc2VEdXJhdGlvbigpCiAvLwotLy8gUGFyc2VzIGEgZHVyYXRp
b24gc3RkOjpzdHJpbmcgY29uc2lzdGluZyBvZiBhIHBvc3NpYmx5IHNpZ25lZCBzZXF1ZW5jZSBv
ZgorLy8gUGFyc2VzIGEgZHVyYXRpb24gc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYSBwb3NzaWJseSBz
aWduZWQgc2VxdWVuY2Ugb2YKIC8vIGRlY2ltYWwgbnVtYmVycywgZWFjaCB3aXRoIGFuIG9wdGlv
bmFsIGZyYWN0aW9uYWwgcGFydCBhbmQgYSB1bml0CiAvLyBzdWZmaXguICBUaGUgdmFsaWQgc3Vm
Zml4ZXMgYXJlICJucyIsICJ1cyIgIm1zIiwgInMiLCAibSIsIGFuZCAiaCIuCiAvLyBTaW1wbGUg
ZXhhbXBsZXMgaW5jbHVkZSAiMzAwbXMiLCAiLTEuNWgiLCBhbmQgIjJoNDVtIi4gIFBhcnNlcyAi
MCIgYXMKLS8vIGBaZXJvRHVyYXRpb24oKWAuICBQYXJzZXMgImluZiIgYW5kICItaW5mIiBhcyAr
Ly0gYEluZmluaXRlRHVyYXRpb24oKWAuCisvLyBgWmVyb0R1cmF0aW9uKClgLiBQYXJzZXMgImlu
ZiIgYW5kICItaW5mIiBhcyArLy0gYEluZmluaXRlRHVyYXRpb24oKWAuCiBib29sIFBhcnNlRHVy
YXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGR1cl9zdHJpbmcsIER1cmF0aW9uKiBkKTsKIAogLy8g
U3VwcG9ydCBmb3IgZmxhZyB2YWx1ZXMgb2YgdHlwZSBEdXJhdGlvbi4gRHVyYXRpb24gZmxhZ3Mg
bXVzdCBiZSBzcGVjaWZpZWQKQEAgLTYwNyw2ICs2MTYsMTEgQEAgY2xhc3MgVGltZSB7CiAgIC8v
IFJldHVybnMgdGhlIGJyZWFrZG93biBvZiB0aGlzIGluc3RhbnQgaW4gdGhlIGdpdmVuIFRpbWVa
b25lLgogICBCcmVha2Rvd24gSW4oVGltZVpvbmUgdHopIGNvbnN0OwogCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgVGltZSB0KSB7CisgICAg
cmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCB0LnJlcF8pOworICB9CisKICBwcml2YXRl
OgogICBmcmllbmQgY29uc3RleHByIFRpbWUgdGltZV9pbnRlcm5hbDo6RnJvbVVuaXhEdXJhdGlv
bihEdXJhdGlvbiBkKTsKICAgZnJpZW5kIGNvbnN0ZXhwciBEdXJhdGlvbiB0aW1lX2ludGVybmFs
OjpUb1VuaXhEdXJhdGlvbihUaW1lIHQpOwpAQCAtNjg5LDcgKzcwMyw5IEBAIGNvbnN0ZXhwciBU
aW1lIEluZmluaXRlUGFzdCgpIHsKIC8vIEV4YW1wbGVzOgogLy8KIC8vICAgYWJzbDo6VGltZVpv
bmUgbGF4OwotLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxl
cyIsICZsYXgpKSB7IC4uLiB9CisvLyAgIGlmICghYWJzbDo6TG9hZFRpbWVab25lKCJBbWVyaWNh
L0xvc19BbmdlbGVzIiwgJmxheCkpIHsKKy8vICAgICAvLyBoYW5kbGUgZXJyb3IgY2FzZQorLy8g
ICB9CiAvLwogLy8gICAvLyBBIHVuaXF1ZSBjaXZpbCB0aW1lCiAvLyAgIGFic2w6OlRpbWVDb252
ZXJzaW9uIGphbjAxID0KQEAgLTc1OSw3ICs3NzUsOSBAQCBUaW1lQ29udmVyc2lvbiBDb252ZXJ0
RGF0ZVRpbWUoaW50NjRfdCB5ZWFyLCBpbnQgbW9uLCBpbnQgZGF5LCBpbnQgaG91ciwKIC8vIEV4
YW1wbGU6CiAvLwogLy8gICBhYnNsOjpUaW1lWm9uZSBzZWF0dGxlOwotLy8gICBpZiAoIWFic2w6
OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZzZWF0dGxlKSkgeyAuLi4gfQor
Ly8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZzZWF0
dGxlKSkgeworLy8gICAgIC8vIGhhbmRsZSBlcnJvciBjYXNlCisvLyAgIH0KIC8vICAgYWJzbDo6
VGltZSB0ID0gIGFic2w6OkZyb21EYXRlVGltZSgyMDE3LCA5LCAyNiwgOSwgMzAsIDAsIHNlYXR0
bGUpOwogVGltZSBGcm9tRGF0ZVRpbWUoaW50NjRfdCB5ZWFyLCBpbnQgbW9uLCBpbnQgZGF5LCBp
bnQgaG91ciwgaW50IG1pbiwgaW50IHNlYywKICAgICAgICAgICAgICAgICAgIFRpbWVab25lIHR6
KTsKQEAgLTg3MSw4ICs4ODksMTAgQEAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBUb0Nocm9ub1RpbWUoVGltZSk7CiAvLyBGb3JtYXRUaW1lKCkvUGFyc2VUaW1lKCkgZm9y
bWF0IHNwZWNpZmllcnMgZm9yIFJGQzMzMzkgZGF0ZS90aW1lIHN0cmluZ3MsCiAvLyB3aXRoIHRy
YWlsaW5nIHplcm9zIHRyaW1tZWQgb3Igd2l0aCBmcmFjdGlvbmFsIHNlY29uZHMgb21pdHRlZCBh
bHRvZ2V0aGVyLgogLy8KLS8vIE5vdGUgdGhhdCBSRkMzMzM5X3NlY1tdIG1hdGNoZXMgYW4gSVNP
IDg2MDEgZXh0ZW5kZWQgZm9ybWF0IGZvciBkYXRlCi0vLyBhbmQgdGltZSB3aXRoIFVUQyBvZmZz
ZXQuCisvLyBOb3RlIHRoYXQgUkZDMzMzOV9zZWNbXSBtYXRjaGVzIGFuIElTTyA4NjAxIGV4dGVu
ZGVkIGZvcm1hdCBmb3IgZGF0ZSBhbmQKKy8vIHRpbWUgd2l0aCBVVEMgb2Zmc2V0LiAgQWxzbyBu
b3RlIHRoZSB1c2Ugb2YgIiVZIjogUkZDMzMzOSBtYW5kYXRlcyB0aGF0CisvLyB5ZWFycyBoYXZl
IGV4YWN0bHkgZm91ciBkaWdpdHMsIGJ1dCB3ZSBhbGxvdyB0aGVtIHRvIHRha2UgdGhlaXIgbmF0
dXJhbAorLy8gd2lkdGguCiBleHRlcm4gY29uc3QgY2hhciBSRkMzMzM5X2Z1bGxbXTsgIC8vICVZ
LSVtLSVkVCVIOiVNOiVFKlMlRXoKIGV4dGVybiBjb25zdCBjaGFyIFJGQzMzMzlfc2VjW107ICAg
Ly8gJVktJW0tJWRUJUg6JU06JVMlRXoKIApAQCAtODg2LDcgKzkwNiw3IEBAIGV4dGVybiBjb25z
dCBjaGFyIFJGQzExMjNfbm9fd2RheVtdOyAgLy8gJWQgJWIgJUU0WSAlSDolTTolUyAlegogLy8g
Rm9ybWF0VGltZSgpCiAvLwogLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gYGFic2w6OlRpbWVgIGluIHRo
ZSBgYWJzbDo6VGltZVpvbmVgIGFjY29yZGluZyB0byB0aGUKLS8vIHByb3ZpZGVkIGZvcm1hdCBz
dGQ6OnN0cmluZy4gVXNlcyBzdHJmdGltZSgpLWxpa2UgZm9ybWF0dGluZyBvcHRpb25zLCB3aXRo
CisvLyBwcm92aWRlZCBmb3JtYXQgc3RyaW5nLiBVc2VzIHN0cmZ0aW1lKCktbGlrZSBmb3JtYXR0
aW5nIG9wdGlvbnMsIHdpdGgKIC8vIHRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9uczoKIC8vCiAvLyAg
IC0gJUV6ICAtIFJGQzMzMzktY29tcGF0aWJsZSBudW1lcmljIFVUQyBvZmZzZXQgKCtoaDptbSBv
ciAtaGg6bW0pCkBAIC05MTAsMTYgKzkzMCwxOCBAQCBleHRlcm4gY29uc3QgY2hhciBSRkMxMTIz
X25vX3dkYXlbXTsgIC8vICVkICViICVFNFkgJUg6JU06JVMgJXoKIC8vIEV4YW1wbGU6CiAvLwog
Ly8gICBhYnNsOjpUaW1lWm9uZSBsYXg7Ci0vLyAgIGlmICghYWJzbDo6TG9hZFRpbWVab25lKCJB
bWVyaWNhL0xvc19BbmdlbGVzIiwgJmxheCkpIHsgLi4uIH0KKy8vICAgaWYgKCFhYnNsOjpMb2Fk
VGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCAmbGF4KSkgeworLy8gICAgIC8vIGhhbmRs
ZSBlcnJvciBjYXNlCisvLyAgIH0KIC8vICAgYWJzbDo6VGltZSB0ID0gYWJzbDo6RnJvbURhdGVU
aW1lKDIwMTMsIDEsIDIsIDMsIDQsIDUsIGxheCk7CiAvLwotLy8gICBzdGQ6OnN0cmluZyBmID0g
YWJzbDo6Rm9ybWF0VGltZSgiJUg6JU06JVMiLCB0LCBsYXgpOyAgLy8gIjAzOjA0OjA1IgorLy8g
ICBzdHJpbmcgZiA9IGFic2w6OkZvcm1hdFRpbWUoIiVIOiVNOiVTIiwgdCwgbGF4KTsgIC8vICIw
MzowNDowNSIKIC8vICAgZiA9IGFic2w6OkZvcm1hdFRpbWUoIiVIOiVNOiVFM1MiLCB0LCBsYXgp
OyAgLy8gIjAzOjA0OjA1LjAwMCIKIC8vCiAvLyBOb3RlOiBJZiB0aGUgZ2l2ZW4gYGFic2w6OlRp
bWVgIGlzIGBhYnNsOjpJbmZpbml0ZUZ1dHVyZSgpYCwgdGhlIHJldHVybmVkCi0vLyBzdGQ6OnN0
cmluZyB3aWxsIGJlIGV4YWN0bHkgImluZmluaXRlLWZ1dHVyZSIuIElmIHRoZSBnaXZlbiBgYWJz
bDo6VGltZWAgaXMKLS8vIGBhYnNsOjpJbmZpbml0ZVBhc3QoKWAsIHRoZSByZXR1cm5lZCBzdGQ6
OnN0cmluZyB3aWxsIGJlIGV4YWN0bHkgImluZmluaXRlLXBhc3QiLgotLy8gSW4gYm90aCBjYXNl
cyB0aGUgZ2l2ZW4gZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCBgYWJzbDo6VGltZVpvbmVgIGFyZSBp
Z25vcmVkLgorLy8gc3RyaW5nIHdpbGwgYmUgZXhhY3RseSAiaW5maW5pdGUtZnV0dXJlIi4gSWYg
dGhlIGdpdmVuIGBhYnNsOjpUaW1lYCBpcworLy8gYGFic2w6OkluZmluaXRlUGFzdCgpYCwgdGhl
IHJldHVybmVkIHN0cmluZyB3aWxsIGJlIGV4YWN0bHkgImluZmluaXRlLXBhc3QiLgorLy8gSW4g
Ym90aCBjYXNlcyB0aGUgZ2l2ZW4gZm9ybWF0IHN0cmluZyBhbmQgYGFic2w6OlRpbWVab25lYCBh
cmUgaWdub3JlZC4KIC8vCiBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lKGNvbnN0IHN0ZDo6c3RyaW5n
JiBmb3JtYXQsIFRpbWUgdCwgVGltZVpvbmUgdHopOwogCkBAIC05MzYsNyArOTU4LDcgQEAgaW5s
aW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBUaW1lIHQpIHsK
IAogLy8gUGFyc2VUaW1lKCkKIC8vCi0vLyBQYXJzZXMgYW4gaW5wdXQgc3RkOjpzdHJpbmcgYWNj
b3JkaW5nIHRvIHRoZSBwcm92aWRlZCBmb3JtYXQgc3RkOjpzdHJpbmcgYW5kCisvLyBQYXJzZXMg
YW4gaW5wdXQgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgZm9ybWF0IHN0cmluZyBh
bmQKIC8vIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgYGFic2w6OlRpbWVgLiBVc2VzIHN0cmZ0
aW1lKCktbGlrZSBmb3JtYXR0aW5nCiAvLyBvcHRpb25zLCB3aXRoIHRoZSBzYW1lIGV4dGVuc2lv
bnMgYXMgRm9ybWF0VGltZSgpLCBidXQgd2l0aCB0aGUKIC8vIGV4Y2VwdGlvbnMgdGhhdCAlRSNT
IGlzIGludGVycHJldGVkIGFzICVFKlMsIGFuZCAlRSNmIGFzICVFKmYuICAlRXoKQEAgLTk1MCw3
ICs5NzIsNyBAQCBpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYg
b3MsIFRpbWUgdCkgewogLy8KIC8vICAgIjE5NzAtMDEtMDEgMDA6MDA6MDAuMCArMDAwMCIKIC8v
Ci0vLyBGb3IgZXhhbXBsZSwgcGFyc2luZyBhIHN0ZDo6c3RyaW5nIG9mICIxNTo0NSIgKCVIOiVN
KSB3aWxsIHJldHVybiBhbiBhYnNsOjpUaW1lCisvLyBGb3IgZXhhbXBsZSwgcGFyc2luZyBhIHN0
cmluZyBvZiAiMTU6NDUiICglSDolTSkgd2lsbCByZXR1cm4gYW4gYWJzbDo6VGltZQogLy8gdGhh
dCByZXByZXNlbnRzICIxOTcwLTAxLTAxIDE1OjQ1OjAwLjAgKzAwMDAiLgogLy8KIC8vIE5vdGUg
dGhhdCBzaW5jZSBQYXJzZVRpbWUoKSByZXR1cm5zIHRpbWUgaW5zdGFudHMsIGl0IG1ha2VzIHRo
ZSBtb3N0IHNlbnNlCkBAIC05NzcsMTUgKzk5OSwxNSBAQCBpbmxpbmUgc3RkOjpvc3RyZWFtJiBv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIFRpbWUgdCkgewogLy8gRXJyb3JzIGFyZSBpbmRp
Y2F0ZWQgYnkgcmV0dXJuaW5nIGZhbHNlIGFuZCBhc3NpZ25pbmcgYW4gZXJyb3IgbWVzc2FnZQog
Ly8gdG8gdGhlICJlcnIiIG91dCBwYXJhbSBpZiBpdCBpcyBub24tbnVsbC4KIC8vCi0vLyBOb3Rl
OiBJZiB0aGUgaW5wdXQgc3RkOjpzdHJpbmcgaXMgZXhhY3RseSAiaW5maW5pdGUtZnV0dXJlIiwg
dGhlIHJldHVybmVkCisvLyBOb3RlOiBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGV4YWN0bHkgImlu
ZmluaXRlLWZ1dHVyZSIsIHRoZSByZXR1cm5lZAogLy8gYGFic2w6OlRpbWVgIHdpbGwgYmUgYGFi
c2w6OkluZmluaXRlRnV0dXJlKClgIGFuZCBgdHJ1ZWAgd2lsbCBiZSByZXR1cm5lZC4KLS8vIElm
IHRoZSBpbnB1dCBzdGQ6OnN0cmluZyBpcyAiaW5maW5pdGUtcGFzdCIsIHRoZSByZXR1cm5lZCBg
YWJzbDo6VGltZWAgd2lsbCBiZQorLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyAiaW5maW5pdGUt
cGFzdCIsIHRoZSByZXR1cm5lZCBgYWJzbDo6VGltZWAgd2lsbCBiZQogLy8gYGFic2w6OkluZmlu
aXRlUGFzdCgpYCBhbmQgYHRydWVgIHdpbGwgYmUgcmV0dXJuZWQuCiAvLwogYm9vbCBQYXJzZVRp
bWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZvcm1hdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LCBU
aW1lKiB0aW1lLAogICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIGVycik7CiAKLS8vIExpa2Ug
UGFyc2VUaW1lKCkgYWJvdmUsIGJ1dCBpZiB0aGUgZm9ybWF0IHN0ZDo6c3RyaW5nIGRvZXMgbm90
IGNvbnRhaW4gYSBVVEMKKy8vIExpa2UgUGFyc2VUaW1lKCkgYWJvdmUsIGJ1dCBpZiB0aGUgZm9y
bWF0IHN0cmluZyBkb2VzIG5vdCBjb250YWluIGEgVVRDCiAvLyBvZmZzZXQgc3BlY2lmaWNhdGlv
biAoJXovJUV6LyVFKnopIHRoZW4gdGhlIGlucHV0IGlzIGludGVycHJldGVkIGluIHRoZQogLy8g
Z2l2ZW4gVGltZVpvbmUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGlucHV0LCBieSBpdHNlbGYsIGRv
ZXMgbm90IGlkZW50aWZ5IGEKIC8vIHVuaXF1ZSBpbnN0YW50LiAgQmVpbmcgdGltZS16b25lIGRl
cGVuZGVudCwgaXQgYWxzbyBhZG1pdHMgdGhlIHBvc3NpYmlsaXR5CkBAIC0xMDI4LDcgKzEwNTAs
OSBAQCBzdGQ6OnN0cmluZyBVbnBhcnNlRmxhZyhUaW1lIHQpOwogLy8gICBhYnNsOjpUaW1lWm9u
ZSBwc3QgPSBhYnNsOjpGaXhlZFRpbWVab25lKC04ICogNjAgKiA2MCk7CiAvLyAgIGFic2w6OlRp
bWVab25lIGxvYyA9IGFic2w6OkxvY2FsVGltZVpvbmUoKTsKIC8vICAgYWJzbDo6VGltZVpvbmUg
bGF4OwotLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIs
ICZsYXgpKSB7IC4uLiB9CisvLyAgIGlmICghYWJzbDo6TG9hZFRpbWVab25lKCJBbWVyaWNhL0xv
c19BbmdlbGVzIiwgJmxheCkpIHsKKy8vICAgICAvLyBoYW5kbGUgZXJyb3IgY2FzZQorLy8gICB9
CiAvLwogLy8gU2VlIGFsc286CiAvLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2N0egpA
QCAtMTA0NSw2ICsxMDY5LDExIEBAIGNsYXNzIFRpbWVab25lIHsKIAogICBzdGQ6OnN0cmluZyBu
YW1lKCkgY29uc3QgeyByZXR1cm4gY3pfLm5hbWUoKTsgfQogCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgVGltZVpvbmUgdHopIHsKKyAgICBy
ZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIHR6LmN6Xyk7CisgIH0KKwogIHByaXZhdGU6
CiAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oVGltZVpvbmUgYSwgVGltZVpvbmUgYikgeyByZXR1
cm4gYS5jel8gPT0gYi5jel87IH0KICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShUaW1lWm9uZSBh
LCBUaW1lWm9uZSBiKSB7IHJldHVybiBhLmN6XyAhPSBiLmN6XzsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXMvQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5iYXplbAppbmRleCAwOTZj
MTE5ZTYzOGNiZDM1MDQwNTUwYmVkMTBiMTkyZTdiNDY3NDAxLi4zMmY2OTBjOTRjMWQzNDdjMTQz
NzI4M2I4MDg4ZDJiMTk1ZjUxY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5iYXpl
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5iYXplbApAQCAtMTksNiArMTksNyBAQCBsb2FkKAog
ICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAogICAgICJB
QlNMX0VYQ0VQVElPTlNfRkxBRyIsCisgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRT
IiwKICkKIAogcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwdWJs
aWMiXSkKQEAgLTU1LDYgKzU2LDcgQEAgY2NfbGlicmFyeSgKICAgICAgICAgImJhZF9hbnlfY2Fz
dC5oIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUcgKyBBQlNMX0RF
RkFVTFRfQ09QVFMsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BU
UywKICAgICB2aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAogICAgIGRlcHMg
PSBbCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCkBAIC02OSw2ICs3MSw3IEBAIGNjX3Rlc3QoCiAg
ICAgICAgICJhbnlfdGVzdC5jYyIsCiAgICAgXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05T
X0ZMQUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjphbnkiLAogICAgICAgICAi
Ly9hYnNsL2Jhc2UiLApAQCAtMTAwLDYgKzEwMyw3IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJh
bnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0IiwKICAgICBzcmNzID0gWyJhbnlfZXhjZXB0aW9uX3Nh
ZmV0eV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQ
VElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRT
LAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6YW55IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4
Y2VwdGlvbl9zYWZldHlfdGVzdGluZyIsCkBAIC0xMjQsNiArMTI4LDcgQEAgY2NfdGVzdCgKICAg
ICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJzcGFuX3Rlc3QuY2MiXSwKICAgICBjb3B0
cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFHLAorICAgIGxpbmtvcHRz
ID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAg
IjpzcGFuIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIsCkBAIC0xMzEsNiArMTM2LDcg
QEAgY2NfdGVzdCgKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4Y2VwdGlvbl90ZXN0aW5nIiwKICAg
ICAgICAgIi8vYWJzbC9jb250YWluZXI6Zml4ZWRfYXJyYXkiLAogICAgICAgICAiLy9hYnNsL2Nv
bnRhaW5lcjppbmxpbmVkX3ZlY3RvciIsCisgICAgICAgICIvL2Fic2wvaGFzaDpoYXNoX3Rlc3Rp
bmciLAogICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29v
Z2xldGVzdC8vOmd0ZXN0X21haW4iLAogICAgIF0sCkBAIC0xNDgsNiArMTU0LDcgQEAgY2NfdGVz
dCgKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4Y2VwdGlvbl90ZXN0aW5nIiwKICAgICAgICAgIi8v
YWJzbC9jb250YWluZXI6Zml4ZWRfYXJyYXkiLAogICAgICAgICAiLy9hYnNsL2NvbnRhaW5lcjpp
bmxpbmVkX3ZlY3RvciIsCisgICAgICAgICIvL2Fic2wvaGFzaDpoYXNoX3Rlc3RpbmciLAogICAg
ICAgICAiLy9hYnNsL3N0cmluZ3MiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8v
Omd0ZXN0X21haW4iLAogICAgIF0sCkBAIC0xNzIsNiArMTc5LDcgQEAgY2NfbGlicmFyeSgKICAg
ICBzcmNzID0gWyJiYWRfb3B0aW9uYWxfYWNjZXNzLmNjIl0sCiAgICAgaGRycyA9IFsiYmFkX29w
dGlvbmFsX2FjY2Vzcy5oIl0sCiAgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMgKyBBQlNM
X0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJ
TktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCiAgICAgICAgICIv
L2Fic2wvYmFzZTpjb25maWciLApAQCAtMTgzLDYgKzE5MSw3IEBAIGNjX2xpYnJhcnkoCiAgICAg
c3JjcyA9IFsiYmFkX3ZhcmlhbnRfYWNjZXNzLmNjIl0sCiAgICAgaGRycyA9IFsiYmFkX3Zhcmlh
bnRfYWNjZXNzLmgiXSwKICAgICBjb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHICsgQUJTTF9E
RUZBVUxUX0NPUFRTLAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09Q
VFMsCiAgICAgZGVwcyA9IFsKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKICAgICAgICAgIi8vYWJz
bC9iYXNlOmNvbmZpZyIsCkBAIC0xOTYsNiArMjA1LDcgQEAgY2NfdGVzdCgKICAgICAgICAgIm9w
dGlvbmFsX3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBB
QlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFH
X0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6b3B0aW9uYWwiLAogICAgICAgICAi
Ly9hYnNsL2Jhc2UiLApAQCAtMjEyLDYgKzIyMiw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICJvcHRp
b25hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNM
X1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xf
RVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6b3B0aW9u
YWwiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nIiwKQEAg
LTIzOSw2ICsyNTAsNyBAQCBjY190ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAogICAgIHNyY3Mg
PSBbInZhcmlhbnRfdGVzdC5jYyJdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJT
TF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19M
SU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnZhcmlhbnQiLAogICAgICAgICAiLy9h
YnNsL2Jhc2U6Y29uZmlnIiwKQEAgLTI3MSw2ICsyODMsNyBAQCBjY190ZXN0KAogICAgICAgICAi
dmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBB
QlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFC
U0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6dmFy
aWFudCIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fc2FmZXR5X3Rlc3RpbmciLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5nbgpp
bmRleCBmZDdlODlkZWUzNGMzYjMyOTA1YTdmYTc4ZmJmYmZlMmFiYjAxZTU1Li5iZmRhZmIzMTdl
M2I0YmYxZDNmZWMyNTJjZDBjZDFkMTkzZWMxOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9C
VUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9CVUlMRC5nbgpAQCAtMTA0LDYgKzEwNCw3IEBAIHNv
dXJjZV9zZXQoIm9wdGlvbmFsIikgewogICBkZXBzID0gWwogICAgICI6YmFkX29wdGlvbmFsX2Fj
Y2VzcyIsCiAgICAgIi4uL2Jhc2U6Y29uZmlnIiwKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMi
LAogICAgICIuLi9tZW1vcnkiLAogICAgICIuLi9tZXRhOnR5cGVfdHJhaXRzIiwKICAgICAiLi4v
dXRpbGl0eSIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9hbnlfZXhjZXB0aW9uX3NhZmV0eV90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwppbmRleCAz
Njk1NWY2YzVjMzc2ZDMyZmIxMWE1NTg5NWJhNGJhMDZmZTVhNzhlLi5mOWRkOGM0ODJjMjU1NDNi
OTE0MmU0MmJhMTc1YThjMDE0OWMzNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9hbnlfZXhj
ZXB0aW9uX3NhZmV0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL2FueV9leGNlcHRpb25fc2Fm
ZXR5X3Rlc3QuY2MKQEAgLTYyLDcgKzYyLDcgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IEFu
eUludmFyaWFudHMoYWJzbDo6YW55KiBhKSB7CiAgICAgc3RhdGljX2Nhc3Q8dm9pZD4odW51c2Vk
KTsKICAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCiAgICAgICAgICAgIDw8ICJBIHJlc2V0
IGBhbnlgIHNob3VsZCBub3QgYmUgYWJsZSB0byBiZSBhbnlfY2FzdCI7Ci0gIH0gY2F0Y2ggKGFi
c2w6OmJhZF9hbnlfY2FzdCkgeworICB9IGNhdGNoIChjb25zdCBhYnNsOjpiYWRfYW55X2Nhc3Qm
KSB7CiAgIH0gY2F0Y2ggKC4uLikgewogICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKICAg
ICAgICAgICAgPDwgIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIHRocm93biBmcm9tIGFic2w6OmFueV9j
YXN0IjsKQEAgLTEwNyw3ICsxMDcsNyBAQCBURVNUKEFueUV4Y2VwdGlvblNhZmV0eSwgQXNzaWdu
bWVudCkgewogICB9OwogICBhdXRvIGFueV9zdHJvbmdfdGVzdGVyID0gdGVzdGluZzo6TWFrZUV4
Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLldp
dGhJbml0aWFsVmFsdWUob3JpZ2luYWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LldpdGhJbnZhcmlhbnRzKEFueUludmFyaWFudHMsIGFueV9pc19zdHJvbmcpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKEFueUludmFyaWFudHMsIGFueV9p
c19zdHJvbmcpOwogCiAgIFRocm93ZXIgdmFsKDIpOwogICBhYnNsOjphbnkgYW55X3ZhbCh2YWwp
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIFRFU1QoQW55RXhjZXB0aW9uU2FmZXR5LCBBc3NpZ25tZW50
KSB7CiAgIGF1dG8gc3Ryb25nX2VtcHR5X2FueV90ZXN0ZXIgPQogICAgICAgdGVzdGluZzo6TWFr
ZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoYWJz
bDo6YW55e30pCi0gICAgICAgICAgLldpdGhJbnZhcmlhbnRzKEFueUludmFyaWFudHMsIGVtcHR5
X2FueV9pc19zdHJvbmcpOworICAgICAgICAgIC5XaXRoQ29udHJhY3RzKEFueUludmFyaWFudHMs
IGVtcHR5X2FueV9pc19zdHJvbmcpOwogCiAgIEVYUEVDVF9UUlVFKHN0cm9uZ19lbXB0eV9hbnlf
dGVzdGVyLlRlc3QoYXNzaWduX2FueSkpOwogICBFWFBFQ1RfVFJVRShzdHJvbmdfZW1wdHlfYW55
X3Rlc3Rlci5UZXN0KGFzc2lnbl92YWwpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBURVNUKEFueUV4
Y2VwdGlvblNhZmV0eSwgRW1wbGFjZSkgewogICAgICAgYWJzbDo6YW55e2Fic2w6OmluX3BsYWNl
X3R5cGVfdDxUaHJvd2VyPigpLCAxLCB0ZXN0aW5nOjpub3Rocm93X2N0b3J9OwogICBhdXRvIG9u
ZV90ZXN0ZXIgPSB0ZXN0aW5nOjpNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKGluaXRpYWxfdmFsKQotICAgICAgICAg
ICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKEFueUludmFyaWFudHMsIEFueUlzRW1wdHkp
OworICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoQW55SW52YXJpYW50cywg
QW55SXNFbXB0eSk7CiAKICAgYXV0byBlbXBfdGhyb3dlciA9IFtdKGFic2w6OmFueSogYXApIHsg
YXAtPmVtcGxhY2U8VGhyb3dlcj4oMik7IH07CiAgIGF1dG8gZW1wX3Rocm93ZXJ2ZWMgPSBbXShh
YnNsOjphbnkqIGFwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9pbnRlcm5hbC92YXJpYW50
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlcy9pbnRlcm5hbC92YXJpYW50LmgKaW5kZXggNzcwOGU2N2NiMTRmNDE2
YWRlMTY3MTllMjM2OWFhZjY0OGJiNjI4My4uZWZmNGZlZmVkNDA5ZDkyZDUwN2RiYTg2NjlmZTEy
MzFlZDRjYjE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvaW50ZXJuYWwvdmFyaWFudC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL3ZhcmlhbnQuaApAQCAtMSw0ICsxLDQgQEAKLS8vIENv
cHlyaWdodCAyMDE3IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vIENvcHlyaWdodCAyMDE4IFRoZSBB
YnNlaWwgQXV0aG9ycy4KIC8vCiAvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIC8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KQEAgLTM3LDYgKzM3LDgg
QEAKICNpbmNsdWRlICJhYnNsL3R5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5oIgogI2luY2x1ZGUg
ImFic2wvdXRpbGl0eS91dGlsaXR5LmgiCiAKKyNpZiAhZGVmaW5lZChBQlNMX0hBVkVfU1REX1ZB
UklBTlQpCisKIG5hbWVzcGFjZSBhYnNsIHsKIAogdGVtcGxhdGUgPGNsYXNzLi4uIFR5cGVzPgpA
QCAtOTA4LDYgKzkxMCwxMSBAQCBzdHJ1Y3QgUGVyZm9ybVZpc2l0YXRpb24gewogICB0ZW1wbGF0
ZSA8c3RkOjpzaXplX3QuLi4gVHVwSXMsIHN0ZDo6c2l6ZV90Li4uIElzPgogICBjb25zdGV4cHIg
UmV0dXJuVHlwZSBSdW4oc3RkOjpmYWxzZV90eXBlIC8qaGFzX3ZhbHVlbGVzcyovLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZXhfc2VxdWVuY2U8VHVwSXMuLi4+LCBTaXplVDxJcz4u
Li4pIGNvbnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KAorICAgICAgICBzdGQ6OmlzX3NhbWU8UmV0
dXJuVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6OnJlc3VsdF9vZl90PE9wKFZhcmlh
bnRBY2Nlc3NSZXN1bHQ8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJcywgUXVhbGlmaWVkVmFyaWFudHM+Li4uKT4+Ojp2YWx1ZSwKKyAgICAgICAgIkFsbCB2aXNp
dGF0aW9uIG92ZXJsb2FkcyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUuIik7CiAgICAg
cmV0dXJuIGFic2w6OmJhc2VfaW50ZXJuYWw6Okludm9rZSgKICAgICAgICAgYWJzbDo6Zm9yd2Fy
ZDxPcD4ob3ApLAogICAgICAgICBWYXJpYW50Q29yZUFjY2Vzczo6QWNjZXNzPElzPigKQEAgLTEy
MjcsMjMgKzEyMzQsMjMgQEAgdXNpbmcgVmFyaWFudENvcHlCYXNlID0gYWJzbDo6Y29uZGl0aW9u
YWxfdDwKIC8vIEJhc2UgdGhhdCBpcyBkZXBlbmRlbnQgb24gd2hldGhlciBvciBub3QgdGhlIG1v
dmUtYXNzaWduIGNhbiBiZSB0cml2aWFsLgogdGVtcGxhdGUgPGNsYXNzLi4uIFQ+CiB1c2luZyBW
YXJpYW50TW92ZUFzc2lnbkJhc2UgPSBhYnNsOjpjb25kaXRpb25hbF90PAotICAgIGFic2w6OmRp
c2p1bmN0aW9uPGFic2w6OmNvbmp1bmN0aW9uPHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPFVuaW9u
PFQuLi4+PiwKKyAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpjb25qdW5jdGlvbjxhYnNsOjpp
c19tb3ZlX2Fzc2lnbmFibGU8VW5pb248VC4uLj4+LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPFVuaW9uPFQuLi4+PiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Rlc3RydWN0
aWJsZTxVbmlvbjxULi4uPj4+LAogICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om5lZ2F0aW9u
PGFic2w6OmNvbmp1bmN0aW9uPAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX21v
dmVfY29uc3RydWN0aWJsZTxUPi4uLiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpp
c19tb3ZlX2Fzc2lnbmFibGU8VD4uLi4+Pj46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8VD4uLi4+Pj46OnZhbHVlLAogICAgIFZhcmlh
bnRDb3B5QmFzZTxULi4uPiwgVmFyaWFudE1vdmVBc3NpZ25CYXNlTm9udHJpdmlhbDxULi4uPj47
CiAKIC8vIEJhc2UgdGhhdCBpcyBkZXBlbmRlbnQgb24gd2hldGhlciBvciBub3QgdGhlIGNvcHkt
YXNzaWduIGNhbiBiZSB0cml2aWFsLgogdGVtcGxhdGUgPGNsYXNzLi4uIFQ+CiB1c2luZyBWYXJp
YW50Q29weUFzc2lnbkJhc2UgPSBhYnNsOjpjb25kaXRpb25hbF90PAotICAgIGFic2w6OmRpc2p1
bmN0aW9uPGFic2w6OmNvbmp1bmN0aW9uPHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPFVuaW9uPFQu
Li4+PiwKKyAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpjb25qdW5jdGlvbjxhYnNsOjppc19j
b3B5X2Fzc2lnbmFibGU8VW5pb248VC4uLj4+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPFVuaW9uPFQuLi4+PiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Rlc3RydWN0aWJs
ZTxVbmlvbjxULi4uPj4+LAogICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om5lZ2F0aW9uPGFi
c2w6OmNvbmp1bmN0aW9uPAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvcHlf
Y29uc3RydWN0aWJsZTxUPi4uLiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19j
b3B5X2Fzc2lnbmFibGU8VD4uLi4+Pj46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8VD4uLi4+Pj46OnZhbHVlLAogICAgIFZhcmlhbnRN
b3ZlQXNzaWduQmFzZTxULi4uPiwgVmFyaWFudENvcHlBc3NpZ25CYXNlTm9udHJpdmlhbDxULi4u
Pj47CiAKIHRlbXBsYXRlIDxjbGFzcy4uLiBUPgpAQCAtMTYxMiw0ICsxNjE5LDUgQEAgc3RydWN0
IFZhcmlhbnRIYXNoQmFzZTxWYXJpYW50LAogfSAgLy8gbmFtZXNwYWNlIHZhcmlhbnRfaW50ZXJu
YWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKKyNlbmRpZiAgLy8gIWRlZmluZWQoQUJTTF9IQVZF
X1NURF9WQVJJQU5UKQogI2VuZGlmICAvLyBBQlNMX1RZUEVTX3ZhcmlhbnRfaW50ZXJuYWxfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25h
bC5oCmluZGV4IGM4MzdjZGRlZWY0ODk0MjY0N2U3ZjgyOTJkMDE2Mzc1MDk0NmIyYjYuLjE0MjEw
MDE4ODE1YzRjNjYxMjA3ZmU0MGY0NTJiMDEzNWM5YTBhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5
cGVzL29wdGlvbmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwuaApAQCAtNTksNiArNTks
NyBAQCB1c2luZyBzdGQ6Om51bGxvcHQ7CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVk
ZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgiCiAjaW5jbHVk
ZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRz
LmgiCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9iYWRfb3B0aW9uYWxfYWNjZXNzLmgiCkBAIC00MTEs
MTAgKzQxMiwxMCBAQCBjb25zdGV4cHIgY29weV90cmFpdHMgZ2V0X2N0b3JfY29weV90cmFpdHMo
KSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY29uc3RleHByIGNvcHlfdHJhaXRzIGdldF9h
c3NpZ25fY29weV90cmFpdHMoKSB7Ci0gIHJldHVybiBzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxU
Pjo6dmFsdWUgJiYKKyAgcmV0dXJuIGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxUPjo6dmFsdWUg
JiYKICAgICAgICAgICAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8VD46OnZhbHVl
CiAgICAgICAgICAgICAgPyBjb3B5X3RyYWl0czo6Y29weWFibGUKLSAgICAgICAgICAgICA6IHN0
ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgIDogYWJzbDo6
aXNfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSAmJgogICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUKICAgICAgICAgICAgICAgICAgICA/
IGNvcHlfdHJhaXRzOjptb3ZhYmxlCiAgICAgICAgICAgICAgICAgICAgOiBjb3B5X3RyYWl0czo6
bm9uX21vdmFibGU7CkBAIC03MDAsNyArNzAxLDcgQEAgY2xhc3Mgb3B0aW9uYWwgOiBwcml2YXRl
IG9wdGlvbmFsX2ludGVybmFsOjpvcHRpb25hbF9kYXRhPFQ+LAogICAvLyBvcHRpb25hbDo6cmVz
ZXQoKQogICAvLwogICAvLyBEZXN0cm95cyB0aGUgaW5uZXIgYFRgIHZhbHVlIG9mIGFuIGBhYnNs
OjpvcHRpb25hbGAgaWYgb25lIGlzIHByZXNlbnQuCi0gIHZvaWQgcmVzZXQoKSBub2V4Y2VwdCB7
IHRoaXMtPmRlc3RydWN0KCk7IH0KKyAgQUJTTF9BVFRSSUJVVEVfUkVJTklUSUFMSVpFUyB2b2lk
IHJlc2V0KCkgbm9leGNlcHQgeyB0aGlzLT5kZXN0cnVjdCgpOyB9CiAKICAgLy8gb3B0aW9uYWw6
OmVtcGxhY2UoKQogICAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfZXhjZXB0
aW9uX3NhZmV0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfZXhjZXB0aW9uX3NhZmV0
eV90ZXN0LmNjCmluZGV4IGQyZWYwNGI4ZDFiMDgzYzc1NWMyMzA2ODU1NDYwYWE4ZjBkZTgxZGQu
LmQxMTdlZTUxODQ5MTlmZTZiMTJkMTIzM2RlMTZlOWFlZTgwZTgwM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3R5cGVzL29wdGlvbmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
eXBlcy9vcHRpb25hbF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKQEAgLTM4LDEyICszOCwxMiBA
QCBjb25zdGV4cHIgaW50IGtVcGRhdGVkSW50ZWdlciA9IDEwOwogdGVtcGxhdGUgPHR5cGVuYW1l
IE9wdGlvbmFsVD4KIGJvb2wgVmFsdWVUaHJvd3NCYWRPcHRpb25hbEFjY2Vzcyhjb25zdCBPcHRp
b25hbFQmIG9wdGlvbmFsKSB0cnkgewogICByZXR1cm4gKHN0YXRpY19jYXN0PHZvaWQ+KG9wdGlv
bmFsLnZhbHVlKCkpLCBmYWxzZSk7Ci19IGNhdGNoIChhYnNsOjpiYWRfb3B0aW9uYWxfYWNjZXNz
KSB7Cit9IGNhdGNoIChjb25zdCBhYnNsOjpiYWRfb3B0aW9uYWxfYWNjZXNzJikgewogICByZXR1
cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wdGlvbmFsVD4KLUFzc2VydGlvblJl
c3VsdCBDaGVja0ludmFyaWFudHMoT3B0aW9uYWxUKiBvcHRpb25hbF9wdHIpIHsKK0Fzc2VydGlv
blJlc3VsdCBPcHRpb25hbEludmFyaWFudHMoT3B0aW9uYWxUKiBvcHRpb25hbF9wdHIpIHsKICAg
Ly8gQ2hlY2sgdGhlIGN1cnJlbnQgc3RhdGUgcG9zdC10aHJvdyBmb3IgdmFsaWRpdHkKICAgYXV0
byYgb3B0aW9uYWwgPSAqb3B0aW9uYWxfcHRyOwogCkBAIC0xMjMsOCArMTIzLDggQEAgVEVTVChP
cHRpb25hbEV4Y2VwdGlvblNhZmV0eSwgTm90aHJvd0NvbnN0cnVjdG9ycykgewogVEVTVChPcHRp
b25hbEV4Y2VwdGlvblNhZmV0eSwgRW1wbGFjZSkgewogICAvLyBUZXN0IHRoZSBiYXNpYyBndWFy
YW50ZWUgcGx1cyB0ZXN0IHRoZSByZXN1bHQgb2Ygb3B0aW9uYWw6Omhhc192YWx1ZSgpCiAgIC8v
IGlzIGZhbHNlIGluIGFsbCBjYXNlcwotICBhdXRvIGRpc2VuZ2FnZWRfdGVzdCA9IE1ha2VFeGNl
cHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoSW52YXJpYW50cygKLSAgICAgIENoZWNrSW52YXJpYW50
czxPcHRpb25hbD4sIENoZWNrRGlzZW5nYWdlZDxPcHRpb25hbD4pOworICBhdXRvIGRpc2VuZ2Fn
ZWRfdGVzdCA9IE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoQ29udHJhY3RzKAorICAg
ICAgT3B0aW9uYWxJbnZhcmlhbnRzPE9wdGlvbmFsPiwgQ2hlY2tEaXNlbmdhZ2VkPE9wdGlvbmFs
Pik7CiAgIGF1dG8gZGlzZW5nYWdlZF90ZXN0X2VtcHR5ID0gZGlzZW5nYWdlZF90ZXN0LldpdGhJ
bml0aWFsVmFsdWUoT3B0aW9uYWwoKSk7CiAgIGF1dG8gZGlzZW5nYWdlZF90ZXN0X25vbmVtcHR5
ID0KICAgICAgIGRpc2VuZ2FnZWRfdGVzdC5XaXRoSW5pdGlhbFZhbHVlKE9wdGlvbmFsKGtJbml0
aWFsSW50ZWdlcikpOwpAQCAtMTQ3LDExICsxNDcsMTEgQEAgVEVTVChPcHRpb25hbEV4Y2VwdGlv
blNhZmV0eSwgRXZlcnl0aGluZ1Rocm93c1N3YXApIHsKICAgLy8gVGVzdCB0aGUgYmFzaWMgZ3Vh
cmFudGVlIHBsdXMgdGVzdCB0aGUgcmVzdWx0IG9mIG9wdGlvbmFsOjpoYXNfdmFsdWUoKQogICAv
LyByZW1haW5zIHRoZSBzYW1lCiAgIGF1dG8gdGVzdCA9Ci0gICAgICBNYWtlRXhjZXB0aW9uU2Fm
ZXR5VGVzdGVyKCkuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzPE9wdGlvbmFsPik7Cisg
ICAgICBNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aENvbnRyYWN0cyhPcHRpb25hbElu
dmFyaWFudHM8T3B0aW9uYWw+KTsKICAgYXV0byBkaXNlbmdhZ2VkX3Rlc3RfZW1wdHkgPSB0ZXN0
LldpdGhJbml0aWFsVmFsdWUoT3B0aW9uYWwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrRGlzZW5nYWdlZDxPcHRpb25hbD4pOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhDaGVja0Rpc2Vu
Z2FnZWQ8T3B0aW9uYWw+KTsKICAgYXV0byBlbmdhZ2VkX3Rlc3Rfbm9uZW1wdHkgPSB0ZXN0Lldp
dGhJbml0aWFsVmFsdWUoT3B0aW9uYWwoa0luaXRpYWxJbnRlZ2VyKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrRW5nYWdlZDxPcHRpb25h
bD4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhD
aGVja0VuZ2FnZWQ8T3B0aW9uYWw+KTsKIAogICBhdXRvIHN3YXBfZW1wdHkgPSBbXShPcHRpb25h
bCogb3B0aW9uYWxfcHRyKSB7CiAgICAgYXV0byBlbXB0eSA9IE9wdGlvbmFsKCk7CkBAIC0xOTIs
MTEgKzE5MiwxMSBAQCBURVNUKE9wdGlvbmFsRXhjZXB0aW9uU2FmZXR5LCBDb3B5QXNzaWduKSB7
CiAgIC8vIFRlc3QgdGhlIGJhc2ljIGd1YXJhbnRlZSBwbHVzIHRlc3QgdGhlIHJlc3VsdCBvZiBv
cHRpb25hbDo6aGFzX3ZhbHVlKCkKICAgLy8gcmVtYWlucyB0aGUgc2FtZQogICBhdXRvIHRlc3Qg
PQotICAgICAgTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpLldpdGhJbnZhcmlhbnRzKENoZWNr
SW52YXJpYW50czxPcHRpb25hbD4pOworICAgICAgTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3Rlcigp
LldpdGhDb250cmFjdHMoT3B0aW9uYWxJbnZhcmlhbnRzPE9wdGlvbmFsPik7CiAgIGF1dG8gZGlz
ZW5nYWdlZF90ZXN0X2VtcHR5ID0gdGVzdC5XaXRoSW5pdGlhbFZhbHVlKE9wdGlvbmFsKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0Rp
c2VuZ2FnZWQ8T3B0aW9uYWw+KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LldpdGhDb250cmFjdHMoQ2hlY2tEaXNlbmdhZ2VkPE9wdGlvbmFsPik7CiAgIGF1dG8gZW5nYWdl
ZF90ZXN0X25vbmVtcHR5ID0gdGVzdC5XaXRoSW5pdGlhbFZhbHVlKE9wdGlvbmFsKGtJbml0aWFs
SW50ZWdlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJp
YW50cyhDaGVja0VuZ2FnZWQ8T3B0aW9uYWw+KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLldpdGhDb250cmFjdHMoQ2hlY2tFbmdhZ2VkPE9wdGlvbmFsPik7CiAKICAgYXV0
byBjb3B5YXNzaWduX25vbmVtcHR5ID0gW10oT3B0aW9uYWwqIG9wdGlvbmFsX3B0cikgewogICAg
IGF1dG8gbm9uZW1wdHkgPQpAQCAtMjE4LDExICsyMTgsMTEgQEAgVEVTVChPcHRpb25hbEV4Y2Vw
dGlvblNhZmV0eSwgTW92ZUFzc2lnbikgewogICAvLyBUZXN0IHRoZSBiYXNpYyBndWFyYW50ZWUg
cGx1cyB0ZXN0IHRoZSByZXN1bHQgb2Ygb3B0aW9uYWw6Omhhc192YWx1ZSgpCiAgIC8vIHJlbWFp
bnMgdGhlIHNhbWUKICAgYXV0byB0ZXN0ID0KLSAgICAgIE1ha2VFeGNlcHRpb25TYWZldHlUZXN0
ZXIoKS5XaXRoSW52YXJpYW50cyhDaGVja0ludmFyaWFudHM8T3B0aW9uYWw+KTsKKyAgICAgIE1h
a2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoQ29udHJhY3RzKE9wdGlvbmFsSW52YXJpYW50
czxPcHRpb25hbD4pOwogICBhdXRvIGRpc2VuZ2FnZWRfdGVzdF9lbXB0eSA9IHRlc3QuV2l0aElu
aXRpYWxWYWx1ZShPcHRpb25hbCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAuV2l0aEludmFyaWFudHMoQ2hlY2tEaXNlbmdhZ2VkPE9wdGlvbmFsPik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKENoZWNrRGlzZW5nYWdlZDxP
cHRpb25hbD4pOwogICBhdXRvIGVuZ2FnZWRfdGVzdF9ub25lbXB0eSA9IHRlc3QuV2l0aEluaXRp
YWxWYWx1ZShPcHRpb25hbChrSW5pdGlhbEludGVnZXIpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tFbmdhZ2VkPE9wdGlvbmFsPik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKENoZWNrRW5n
YWdlZDxPcHRpb25hbD4pOwogCiAgIGF1dG8gbW92ZWFzc2lnbl9lbXB0eSA9IFtdKE9wdGlvbmFs
KiBvcHRpb25hbF9wdHIpIHsKICAgICBhdXRvIGVtcHR5ID0gT3B0aW9uYWwoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbF90
ZXN0LmNjCmluZGV4IDE3OWJmZDY2ZDJmZWUwZWI5MzIxYjA1NTliMmI5ZGMxODkxMGRiYjMuLmQ5
MGRiOWY4MjFiNTJkNGE5MzU1NTc3OTJlMjEyZTE0MTk5ZTc4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzL29wdGlvbmFsX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfdGVzdC5j
YwpAQCAtNjA3LDExICs2MDcsMTIgQEAgVEVTVChvcHRpb25hbFRlc3QsIENvcHlBc3NpZ25tZW50
KSB7CiAgIG9wdDJfdG9fZW1wdHkgPSBlbXB0eTsKICAgRVhQRUNUX0ZBTFNFKG9wdDJfdG9fZW1w
dHkpOwogCi0gIEVYUEVDVF9GQUxTRShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRp
b25hbDxjb25zdCBpbnQ+Pjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2NvcHlfYXNz
aWduYWJsZTxhYnNsOjpvcHRpb25hbDxDb3B5YWJsZT4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9GQUxT
RShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJsZVRocm93Pj46
OnZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPGFic2w6Om9w
dGlvbmFsPE1vdmVhYmxlTm9UaHJvdz4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9GQUxTRShzdGQ6Omlz
X2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxOb25Nb3ZhYmxlPj46OnZhbHVlKTsKKyAg
RVhQRUNUX0ZBTFNFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxjb25z
dCBpbnQ+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8
YWJzbDo6b3B0aW9uYWw8Q29weWFibGU+Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6
aXNfY29weV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPE1vdmVhYmxlVGhyb3c+Pjo6dmFsdWUp
OworICBFWFBFQ1RfRkFMU0UoCisgICAgICBhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6
b3B0aW9uYWw8TW92ZWFibGVOb1Rocm93Pj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6
OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxOb25Nb3ZhYmxlPj46OnZhbHVlKTsK
IAogICBFWFBFQ1RfVFJVRShhYnNsOjppc190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPGludD46
OnZhbHVlKTsKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJs
ZTx2b2xhdGlsZSBpbnQ+Ojp2YWx1ZSk7CkBAIC02MjUsOSArNjI2LDkgQEAgVEVTVChvcHRpb25h
bFRlc3QsIENvcHlBc3NpZ25tZW50KSB7CiAgIH07CiAKICAgRVhQRUNUX1RSVUUoYWJzbDo6aXNf
dHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTxUcml2aWFsPjo6dmFsdWUpOwotICBFWFBFQ1RfRkFM
U0Uoc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8Y29uc3QgVHJpdmlhbD46OnZhbHVlKTsKLSAgRVhQ
RUNUX0ZBTFNFKHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPHZvbGF0aWxlIFRyaXZpYWw+Ojp2YWx1
ZSk7Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPE5vblRyaXZpYWw+Ojp2
YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8Y29uc3QgVHJp
dmlhbD46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTx2
b2xhdGlsZSBUcml2aWFsPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc19jb3B5X2Fz
c2lnbmFibGU8Tm9uVHJpdmlhbD46OnZhbHVlKTsKICAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX3Ry
aXZpYWxseV9jb3B5X2Fzc2lnbmFibGU8Tm9uVHJpdmlhbD46OnZhbHVlKTsKIAogICAvLyBzdGQ6
Om9wdGlvbmFsIGRvZXNuJ3Qgc3VwcG9ydCB2b2xhdGlsZSBub250cml2aWFsIHR5cGVzLgpAQCAt
Njk1LDExICs2OTYsMTEgQEAgVEVTVChvcHRpb25hbFRlc3QsIE1vdmVBc3NpZ25tZW50KSB7CiAg
ICAgRVhQRUNUX0VRKDEsIGxpc3RlbmVyLnZvbGF0aWxlX21vdmVfYXNzaWduKTsKICAgfQogI2Vu
ZGlmICAvLyBBQlNMX0hBVkVfU1REX09QVElPTkFMCi0gIEVYUEVDVF9GQUxTRShzdGQ6OmlzX21v
dmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxjb25zdCBpbnQ+Pjo6dmFsdWUpOwotICBFWFBF
Q1RfVFJVRShzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxDb3B5YWJsZT4+
Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9w
dGlvbmFsPE1vdmVhYmxlVGhyb3c+Pjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX21v
dmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJsZU5vVGhyb3c+Pjo6dmFsdWUpOwot
ICBFWFBFQ1RfRkFMU0Uoc3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8Tm9u
TW92YWJsZT4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19tb3ZlX2Fzc2lnbmFi
bGU8YWJzbDo6b3B0aW9uYWw8Y29uc3QgaW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJz
bDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPENvcHlhYmxlPj46OnZhbHVlKTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPE1v
dmVhYmxlVGhyb3c+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc19tb3ZlX2Fzc2ln
bmFibGU8YWJzbDo6b3B0aW9uYWw8TW92ZWFibGVOb1Rocm93Pj46OnZhbHVlKTsKKyAgRVhQRUNU
X0ZBTFNFKGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxOb25Nb3ZhYmxl
Pj46OnZhbHVlKTsKIAogICBFWFBFQ1RfRkFMU0UoCiAgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92
ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPE1vdmVhYmxlVGhyb3c+Pjo6dmFsdWUpOwpAQCAt
MTYxOSw3ICsxNjIwLDcgQEAgVEVTVChvcHRpb25hbFRlc3QsIEFzc2lnbm1lbnRDb25zdHJhaW50
cykgewogICBFWFBFQ1RfVFJVRSgKICAgICAgIChzdGQ6OmlzX2Fzc2lnbmFibGU8YWJzbDo6b3B0
aW9uYWw8QW55TGlrZT4mLCBjb25zdCBBbnlMaWtlJj46OnZhbHVlKSk7CiAgIEVYUEVDVF9UUlVF
KHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPEFueUxpa2U+Pjo6dmFsdWUp
OwotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxB
bnlMaWtlPj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxl
PGFic2w6Om9wdGlvbmFsPEFueUxpa2U+Pjo6dmFsdWUpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW4uaAppbmRl
eCA3NmJlODE5ZWNjYTIxODZlNWRkNDlkYmEwYjJmZDRhNmQyN2ZmOWU4Li45MTFhZjBjNTdhNjFh
Njc4NTU1N2E5MWZiYjY5MmQ3ZDkwMTkxNDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFu
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvc3Bhbi5oCkBAIC04Nyw3ICs4Nyw3IEBAIGNvbnN0ZXhwciBh
dXRvIEdldERhdGFJbXBsKEMmIGMsIGNoYXIpIG5vZXhjZXB0ICAvLyBOT0xJTlQocnVudGltZS9y
ZWZlcmVuY2VzKQogICByZXR1cm4gYy5kYXRhKCk7CiB9CiAKLS8vIEJlZm9yZSBDKysxNywgc3Rk
OjpzdHJpbmc6OmRhdGEgcmV0dXJucyBhIGNvbnN0IGNoYXIqIGluIGFsbCBjYXNlcy4KKy8vIEJl
Zm9yZSBDKysxNywgc3RyaW5nOjpkYXRhIHJldHVybnMgYSBjb25zdCBjaGFyKiBpbiBhbGwgY2Fz
ZXMuCiBpbmxpbmUgY2hhciogR2V0RGF0YUltcGwoc3RkOjpzdHJpbmcmIHMsICAvLyBOT0xJTlQo
cnVudGltZS9yZWZlcmVuY2VzKQogICAgICAgICAgICAgICAgICAgICAgICAgIGludCkgbm9leGNl
cHQgewogICByZXR1cm4gJnNbMF07CkBAIC0zNzksNjQgKzM3OSw3MCBAQCBjbGFzcyBTcGFuIHsK
ICAgLy8KICAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgaSd0aCBlbGVtZW50IG9mIHRo
aXMgc3Bhbi4KICAgY29uc3RleHByIHJlZmVyZW5jZSBhdChzaXplX3R5cGUgaSkgY29uc3Qgewot
ICAgIHJldHVybiBBQlNMX1BSRURJQ1RfVFJVRShpIDwgc2l6ZSgpKQotICAgICAgICAgICAgICAg
PyBwdHJfW2ldCisgICAgcmV0dXJuIEFCU0xfUFJFRElDVF9UUlVFKGkgPCBzaXplKCkpICAvLwor
ICAgICAgICAgICAgICAgPyAqKGRhdGEoKSArIGkpCiAgICAgICAgICAgICAgICA6IChiYXNlX2lu
dGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoCiAgICAgICAgICAgICAgICAgICAgICAgIlNwYW46
OmF0IGZhaWxlZCBib3VuZHMgY2hlY2siKSwKLSAgICAgICAgICAgICAgICAgIHB0cl9baV0pOwor
ICAgICAgICAgICAgICAgICAgKihkYXRhKCkgKyBpKSk7CiAgIH0KIAogICAvLyBTcGFuOjpmcm9u
dCgpCiAgIC8vCiAgIC8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IGVsZW1lbnQg
b2YgdGhpcyBzcGFuLgotICByZWZlcmVuY2UgZnJvbnQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVy
biBBQlNMX0FTU0VSVChzaXplKCkgPiAwKSwgcHRyX1swXTsgfQorICBjb25zdGV4cHIgcmVmZXJl
bmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQgeworICAgIHJldHVybiBBQlNMX0FTU0VSVChzaXpl
KCkgPiAwKSwgKmRhdGEoKTsKKyAgfQogCiAgIC8vIFNwYW46OmJhY2soKQogICAvLwogICAvLyBS
ZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhpcyBzcGFuLgotICBy
ZWZlcmVuY2UgYmFjaygpIGNvbnN0IG5vZXhjZXB0IHsKLSAgICByZXR1cm4gQUJTTF9BU1NFUlQo
c2l6ZSgpID4gMCksIHB0cl9bc2l6ZSgpIC0gMV07CisgIGNvbnN0ZXhwciByZWZlcmVuY2UgYmFj
aygpIGNvbnN0IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gQUJTTF9BU1NFUlQoc2l6ZSgpID4gMCks
ICooZGF0YSgpICsgc2l6ZSgpIC0gMSk7CiAgIH0KIAogICAvLyBTcGFuOjpiZWdpbigpCiAgIC8v
CiAgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhpcyBz
cGFuLgotICBjb25zdGV4cHIgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVy
biBwdHJfOyB9CisgIGNvbnN0ZXhwciBpdGVyYXRvciBiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsg
cmV0dXJuIGRhdGEoKTsgfQogCiAgIC8vIFNwYW46OmNiZWdpbigpCiAgIC8vCiAgIC8vIFJldHVy
bnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGlzIHNwYW4uCi0g
IGNvbnN0ZXhwciBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVy
biBwdHJfOyB9CisgIGNvbnN0ZXhwciBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCBub2V4
Y2VwdCB7IHJldHVybiBiZWdpbigpOyB9CiAKICAgLy8gU3Bhbjo6ZW5kKCkKICAgLy8KICAgLy8g
UmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgbGFzdCBlbGVtZW50IG9mIHRoaXMgc3Bhbi4KLSAg
aXRlcmF0b3IgZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcHRyXyArIGxlbl87IH0KKyAg
Y29uc3RleHByIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGRhdGEoKSAr
IHNpemUoKTsgfQogCiAgIC8vIFNwYW46OmNlbmQoKQogICAvLwogICAvLyBSZXR1cm5zIGEgY29u
c3QgaXRlcmF0b3IgdG8gdGhlIGxhc3QgZWxlbWVudCBvZiB0aGlzIHNwYW4uCi0gIGNvbnN0X2l0
ZXJhdG9yIGNlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBlbmQoKTsgfQorICBjb25zdGV4
cHIgY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGVuZCgpOyB9
CiAKICAgLy8gU3Bhbjo6cmJlZ2luKCkKICAgLy8KICAgLy8gUmV0dXJucyBhIHJldmVyc2UgaXRl
cmF0b3Igc3RhcnRpbmcgYXQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGlzIHNwYW4uCi0gIHJldmVy
c2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVy
YXRvcihlbmQoKSk7IH0KKyAgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29u
c3Qgbm9leGNlcHQgeworICAgIHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsKKyAgfQog
CiAgIC8vIFNwYW46OmNyYmVnaW4oKQogICAvLwogICAvLyBSZXR1cm5zIGEgcmV2ZXJzZSBjb25z
dCBpdGVyYXRvciBzdGFydGluZyBhdCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoaXMgc3Bhbi4KLSAg
Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4g
cmJlZ2luKCk7IH0KKyAgY29uc3RleHByIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JiZWdpbigp
IGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJiZWdpbigpOyB9CiAKICAgLy8gU3Bhbjo6cmVuZCgp
CiAgIC8vCiAgIC8vIFJldHVybnMgYSByZXZlcnNlIGl0ZXJhdG9yIHN0YXJ0aW5nIGF0IHRoZSBm
aXJzdCBlbGVtZW50IG9mIHRoaXMgc3Bhbi4KLSAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29u
c3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQorICBjb25z
dGV4cHIgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3Qgbm9leGNlcHQgeworICAgIHJldHVy
biByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOworICB9CiAKICAgLy8gU3Bhbjo6Y3JlbmQoKQog
ICAvLwogICAvLyBSZXR1cm5zIGEgcmV2ZXJzZSBpdGVyYXRvciBzdGFydGluZyBhdCB0aGUgZmly
c3QgZWxlbWVudCBvZiB0aGlzIHNwYW4uCi0gIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JlbmQo
KSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByZW5kKCk7IH0KKyAgY29uc3RleHByIGNvbnN0X3Jl
dmVyc2VfaXRlcmF0b3IgY3JlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByZW5kKCk7IH0K
IAogICAvLyBTcGFuIG11dGF0aW9ucwogCkBAIC00NDQsNyArNDUwLDcgQEAgY2xhc3MgU3BhbiB7
CiAgIC8vCiAgIC8vIFJlbW92ZXMgdGhlIGZpcnN0IGBuYCBlbGVtZW50cyBmcm9tIHRoZSBzcGFu
LgogICB2b2lkIHJlbW92ZV9wcmVmaXgoc2l6ZV90eXBlIG4pIG5vZXhjZXB0IHsKLSAgICBhc3Nl
cnQobGVuXyA+PSBuKTsKKyAgICBhc3NlcnQoc2l6ZSgpID49IG4pOwogICAgIHB0cl8gKz0gbjsK
ICAgICBsZW5fIC09IG47CiAgIH0KQEAgLTQ1Myw3ICs0NTksNyBAQCBjbGFzcyBTcGFuIHsKICAg
Ly8KICAgLy8gUmVtb3ZlcyB0aGUgbGFzdCBgbmAgZWxlbWVudHMgZnJvbSB0aGUgc3Bhbi4KICAg
dm9pZCByZW1vdmVfc3VmZml4KHNpemVfdHlwZSBuKSBub2V4Y2VwdCB7Ci0gICAgYXNzZXJ0KGxl
bl8gPj0gbik7CisgICAgYXNzZXJ0KHNpemUoKSA+PSBuKTsKICAgICBsZW5fIC09IG47CiAgIH0K
IApAQCAtNDc0LDExICs0ODAsMTggQEAgY2xhc3MgU3BhbiB7CiAgIC8vICAgYWJzbDo6TWFrZVNw
YW4odmVjKS5zdWJzcGFuKDQpOyAgICAgLy8ge30KICAgLy8gICBhYnNsOjpNYWtlU3Bhbih2ZWMp
LnN1YnNwYW4oNSk7ICAgICAvLyB0aHJvd3Mgc3RkOjpvdXRfb2ZfcmFuZ2UKICAgY29uc3RleHBy
IFNwYW4gc3Vic3BhbihzaXplX3R5cGUgcG9zID0gMCwgc2l6ZV90eXBlIGxlbiA9IG5wb3MpIGNv
bnN0IHsKLSAgICByZXR1cm4gKHBvcyA8PSBsZW5fKQotICAgICAgICAgICAgICAgPyBTcGFuKHB0
cl8gKyBwb3MsIHNwYW5faW50ZXJuYWw6Ok1pbihsZW5fIC0gcG9zLCBsZW4pKQorICAgIHJldHVy
biAocG9zIDw9IHNpemUoKSkKKyAgICAgICAgICAgICAgID8gU3BhbihkYXRhKCkgKyBwb3MsIHNw
YW5faW50ZXJuYWw6Ok1pbihzaXplKCkgLSBwb3MsIGxlbikpCiAgICAgICAgICAgICAgICA6IChi
YXNlX2ludGVybmFsOjpUaHJvd1N0ZE91dE9mUmFuZ2UoInBvcyA+IHNpemUoKSIpLCBTcGFuKCkp
OwogICB9CiAKKyAgLy8gU3VwcG9ydCBmb3IgYWJzbDo6SGFzaC4KKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCBTcGFuIHYpIHsKKyAgICByZXR1
cm4gSDo6Y29tYmluZShIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3ZlKGgpLCB2LmRhdGEo
KSwgdi5zaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgIHYuc2l6ZSgpKTsKKyAgfQorCiAg
cHJpdmF0ZToKICAgcG9pbnRlciBwdHJfOwogICBzaXplX3R5cGUgbGVuXzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzL3NwYW5fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3NwYW5fdGVzdC5jYwppbmRl
eCBmYmNlN2U4NzQ3OTg0MWNmODkxMzgwMjY5OTMyMzhjMzk5ODYyMTY4Li5iZDczOWZmMmEwNzBh
NmZjZWMxYTY0ZWExMzNkMWI4MWYwMGNmYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFu
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvc3Bhbl90ZXN0LmNjCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl90ZXN0aW5nLmgiCiAjaW5j
bHVkZSAiYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXkuaCIKICNpbmNsdWRlICJhYnNsL2NvbnRh
aW5lci9pbmxpbmVkX3ZlY3Rvci5oIgorI2luY2x1ZGUgImFic2wvaGFzaC9oYXNoX3Rlc3Rpbmcu
aCIKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgogCiBuYW1lc3BhY2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudC5oCmlu
ZGV4IDE3ZTA2MzRkZTAzNzQ2NDMzNjc0ZTk5ZWMwNzdiNmY3NzNlOGIyZDkuLjJmNzg3MjJmOGI3
Yzk1NmQ2ZDE3NmU5MDJkNGUwMDljYTk2OTRhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3Zh
cmlhbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50LmgKQEAgLTQxNCw5ICs0MTQsOSBAQCBj
b25zdGV4cHIgYWJzbDo6YWRkX3BvaW50ZXJfdDxjb25zdCBUPiBnZXRfaWYoCiAvLyAgIH07CiAv
LwogLy8gICAvLyBEZWNsYXJlIG91ciB2YXJpYW50LCBhbmQgY2FsbCBgYWJzbDo6dmlzaXQoKWAg
b24gaXQuCi0vLyAgIHN0ZDo6dmFyaWFudDxpbnQsIHN0ZDo6c3RyaW5nPiBmb28gPSBzdGQ6OnN0
cmluZygiZm9vIik7CisvLyAgIGFic2w6OnZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZz4gZm9vID0g
c3RkOjpzdHJpbmcoImZvbyIpOwogLy8gICBHZXRWYXJpYW50IHZpc2l0b3I7Ci0vLyAgIHN0ZDo6
dmlzaXQodmlzaXRvciwgZm9vKTsgIC8vIFByaW50cyBgVGhlIHZhcmlhbnQncyB2YWx1ZSBpczog
Zm9vJworLy8gICBhYnNsOjp2aXNpdCh2aXNpdG9yLCBmb28pOyAgLy8gUHJpbnRzIGBUaGUgdmFy
aWFudCdzIHZhbHVlIGlzOiBmb28nCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRvciwgdHlwZW5h
bWUuLi4gVmFyaWFudHM+CiB2YXJpYW50X2ludGVybmFsOjpWaXNpdFJlc3VsdDxWaXNpdG9yLCBW
YXJpYW50cy4uLj4gdmlzaXQoVmlzaXRvciYmIHZpcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYW50cyYmLi4uIHZhcnMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXMvdmFyaWFudF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKaW5kZXggMjdj
MGI5NmNhNmYzNDA4NTBiMDI1MWJjNmU5MTZkMzdjZGYxMTY0NS4uNTg0MzZmMDdiODQzNzQ4ZTdh
NjNkMTFjODI5ZTE2ZjU1NTFhNmRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF9l
eGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF9leGNlcHRp
b25fc2FmZXR5X3Rlc3QuY2MKQEAgLTUzLDEzICs1MywxMyBAQCB2b2lkIFRvVmFsdWVsZXNzQnlF
eGNlcHRpb24oVGhyb3dpbmdWYXJpYW50JiB2KSB7ICAvLyBOT0xJTlQKICAgdHJ5IHsKICAgICB2
LmVtcGxhY2U8VGhyb3dlcj4oKTsKICAgICB2LmVtcGxhY2U8VGhyb3dlcj4oRXhjZXB0aW9uT25D
b252ZXJzaW9uPFRocm93ZXI+KCkpOwotICB9IGNhdGNoIChDb252ZXJzaW9uRXhjZXB0aW9uJiAv
KmUqLykgeworICB9IGNhdGNoIChjb25zdCBDb252ZXJzaW9uRXhjZXB0aW9uJikgewogICAgIC8v
IFRoaXMgc3BhY2UgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rLgogICB9CiB9CiAKIC8vIENoZWNr
IHRoYXQgdmFyaWFudCBpcyBzdGlsbCBpbiBhIHVzYWJsZSBzdGF0ZSBhZnRlciBhbiBleGNlcHRp
b24gaXMgdGhyb3duLgotdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IENoZWNrSW52YXJpYW50cyhU
aHJvd2luZ1ZhcmlhbnQqIHYpIHsKK3Rlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBWYXJpYW50SW52
YXJpYW50cyhUaHJvd2luZ1ZhcmlhbnQqIHYpIHsKICAgdXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9u
RmFpbHVyZTsKICAgdXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzczsKIApAQCAtMTAwLDcg
KzEwMCw3IEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBDaGVja0ludmFyaWFudHMoVGhyb3dp
bmdWYXJpYW50KiB2KSB7CiAgICAgYXV0byB1bnVzZWQgPSBhYnNsOjpnZXQ8VGhyb3dlcj4oKnYp
OwogICAgIHN0YXRpY19jYXN0PHZvaWQ+KHVudXNlZCk7CiAgICAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUoKSA8PCAiVmFyaWFudCBzaG91bGQgbm90IGNvbnRhaW4gVGhyb3dlciI7Ci0gIH0gY2F0
Y2ggKGFic2w6OmJhZF92YXJpYW50X2FjY2VzcykgeworICB9IGNhdGNoIChjb25zdCBhYnNsOjpi
YWRfdmFyaWFudF9hY2Nlc3MmKSB7CiAgIH0gY2F0Y2ggKC4uLikgewogICAgIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIHRocm93IGZyb20gYWJzbDo6
Z2V0IjsKICAgfQpAQCAtMjEzLDggKzIxMyw4IEBAIFRFU1QoVmFyaWFudEV4Y2VwdGlvblNhZmV0
eVRlc3QsIENvcHlBc3NpZ24pIHsKICAgICAgICAgTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3Rlcigp
CiAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShXaXRoVGhyb3dlcigpKQogICAgICAgICAg
ICAgLldpdGhPcGVyYXRpb24oWyZyaHNdKFRocm93aW5nVmFyaWFudCogbGhzKSB7ICpsaHMgPSBy
aHM7IH0pOwotICAgIEVYUEVDVF9UUlVFKHRlc3Rlci5XaXRoSW52YXJpYW50cyhDaGVja0ludmFy
aWFudHMpLlRlc3QoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRlc3Rlci5XaXRoSW52YXJpYW50cyhz
dHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3Rlci5XaXRoQ29u
dHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzKS5UZXN0KCkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0
ZXIuV2l0aENvbnRyYWN0cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOwogICB9CiAgIHsKICAg
ICBjb25zdCBUaHJvd2luZ1ZhcmlhbnQgcmhzKEV4cGVjdGVkVGhyb3dlclZlYygpKTsKQEAgLTIy
Miw4ICsyMjIsOCBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBDb3B5QXNzaWdu
KSB7CiAgICAgICAgIE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgLldp
dGhJbml0aWFsVmFsdWUoV2l0aFRocm93ZXJWZWMoKSkKICAgICAgICAgICAgIC5XaXRoT3BlcmF0
aW9uKFsmcmhzXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeyAqbGhzID0gcmhzOyB9KTsKLSAgICBF
WFBFQ1RfVFJVRSh0ZXN0ZXIuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzKS5UZXN0KCkp
OwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aEludmFyaWFudHMoc3Ryb25nX2d1YXJhbnRl
ZSkuVGVzdCgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuV2l0aENvbnRyYWN0cyhWYXJpYW50
SW52YXJpYW50cykuVGVzdCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdGVyLldpdGhDb250cmFj
dHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAgfQogICAvLyBsaWJzdGRjKysgc3RkOjp2
YXJpYW50IGhhcyBidWdzIG9uIGNvcHkgYXNzaWdubWVudCByZWdhcmRpbmcgZXhjZXB0aW9uCiAg
IC8vIHNhZmV0eS4KQEAgLTI1MSwxMiArMjUxLDEyIEBAIFRFU1QoVmFyaWFudEV4Y2VwdGlvblNh
ZmV0eVRlc3QsIENvcHlBc3NpZ24pIHsKICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFdp
dGhDb3B5Tm9UaHJvdygpKQogICAgICAgICAgICAgLldpdGhPcGVyYXRpb24oWyZyaHNdKFRocm93
aW5nVmFyaWFudCogbGhzKSB7ICpsaHMgPSByaHM7IH0pOwogICAgIEVYUEVDVF9UUlVFKHRlc3Rl
cgotICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiBs
aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxocy0+
dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoVmFyaWFudEludmFy
aWFudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFy
aWFudCogbGhzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxocy0+dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAuVGVzdCgpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UodGVzdGVyLldpdGhJbnZhcmlhbnRzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHRlc3Rlci5XaXRoQ29udHJhY3RzKHN0cm9uZ19ndWFyYW50ZWUpLlRl
c3QoKSk7CiAgIH0KICNlbmRpZiAgLy8gIShkZWZpbmVkKEFCU0xfSEFWRV9TVERfVkFSSUFOVCkg
JiYgZGVmaW5lZChfX0dMSUJDWFhfXykpCiAgIHsKQEAgLTI2OCw3ICsyNjgsNyBAQCBURVNUKFZh
cmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBDb3B5QXNzaWduKSB7CiAgICAgY29uc3QgVGhyb3dp
bmdWYXJpYW50IHJocyhNb3ZlTm90aHJvd3t9KTsKICAgICBFWFBFQ1RfVFJVRShNYWtlRXhjZXB0
aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUo
V2l0aFRocm93ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNr
SW52YXJpYW50cywgc3Ryb25nX2d1YXJhbnRlZSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhD
b250cmFjdHMoVmFyaWFudEludmFyaWFudHMsIHN0cm9uZ19ndWFyYW50ZWUpCiAgICAgICAgICAg
ICAgICAgICAgIC5UZXN0KFsmcmhzXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeyAqbGhzID0gcmhz
OyB9KSk7CiAgIH0KIH0KQEAgLTMwNCwxMSArMzA0LDExIEBAIFRFU1QoVmFyaWFudEV4Y2VwdGlv
blNhZmV0eVRlc3QsIE1vdmVBc3NpZ24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICpsaHMg
PSBzdGQ6Om1vdmUoY29weSk7CiAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgRVhQRUNU
X1RSVUUodGVzdGVyCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cygKLSAgICAg
ICAgICAgICAgICAgICAgICAgIENoZWNrSW52YXJpYW50cywKKyAgICAgICAgICAgICAgICAgICAg
LldpdGhDb250cmFjdHMoCisgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYW50SW52YXJpYW50
cywKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeyBy
ZXR1cm4gbGhzLT5pbmRleCgpID09IGo7IH0pCiAgICAgICAgICAgICAgICAgICAgIC5UZXN0KCkp
OwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aEludmFyaWFudHMoc3Ryb25nX2d1YXJhbnRl
ZSkuVGVzdCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdGVyLldpdGhDb250cmFjdHMoc3Ryb25n
X2d1YXJhbnRlZSkuVGVzdCgpKTsKICAgfQogICB7CiAgICAgLy8gLSBvdGhlcndpc2UgKGluZGV4
KCkgIT0gaiksIGVxdWl2YWxlbnQgdG8KQEAgLTMxOCwxMCArMzE4LDEwIEBAIFRFU1QoVmFyaWFu
dEV4Y2VwdGlvblNhZmV0eVRlc3QsIE1vdmVBc3NpZ24pIHsKICAgICBUaHJvd2luZ1ZhcmlhbnQg
cmhzKENvcHlOb3Rocm93e30pOwogICAgIEVYUEVDVF9UUlVFKE1ha2VFeGNlcHRpb25TYWZldHlU
ZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShXaXRoVGhyb3dl
cigpKQotICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50
KiBsaHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxo
cy0+dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoVmFyaWFudElu
dmFyaWFudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5n
VmFyaWFudCogbGhzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxocy0+dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAuVGVzdChbJl0oVGhyb3dpbmdW
YXJpYW50KiBsaHMpIHsKICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGNvcHkgPSByaHM7CiAg
ICAgICAgICAgICAgICAgICAgICAgKmxocyA9IHN0ZDo6bW92ZShjb3B5KTsKQEAgLTM0NywxMiAr
MzQ3LDEyIEBAIFRFU1QoVmFyaWFudEV4Y2VwdGlvblNhZmV0eVRlc3QsIFZhbHVlQXNzaWduKSB7
CiAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShXaXRoVGhyb3dlcigpKQogICAgICAgICAg
ICAgLldpdGhPcGVyYXRpb24oW3Joc10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsgKmxocyA9IHJo
czsgfSk7CiAgICAgRVhQRUNUX1RSVUUoY29weV90ZXN0ZXIKLSAgICAgICAgICAgICAgICAgICAg
LldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50cywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhbGhzLT52YWx1ZWxlc3NfYnlfZXhjZXB0aW9u
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAg
ICAgICAgICAuV2l0aENvbnRyYWN0cyhWYXJpYW50SW52YXJpYW50cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWxocy0+dmFsdWVsZXNzX2J5X2V4
Y2VwdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAg
ICAgICAgICAgICAgICAuVGVzdCgpKTsKLSAgICBFWFBFQ1RfRkFMU0UoY29weV90ZXN0ZXIuV2l0
aEludmFyaWFudHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Y29weV90ZXN0ZXIuV2l0aENvbnRyYWN0cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOwogICAg
IC8vIG1vdmUgYXNzaWduCiAgICAgYXV0byBtb3ZlX3Rlc3RlciA9IE1ha2VFeGNlcHRpb25TYWZl
dHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUo
V2l0aFRocm93ZXIoKSkKQEAgLTM2MSwxMyArMzYxLDEzIEBAIFRFU1QoVmFyaWFudEV4Y2VwdGlv
blNhZmV0eVRlc3QsIFZhbHVlQXNzaWduKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpsaHMgPSBzdGQ6Om1vdmUoY29weSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
ICAgICBFWFBFQ1RfVFJVRShtb3ZlX3Rlc3RlcgotICAgICAgICAgICAgICAgICAgICAuV2l0aElu
dmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICFsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRpb24oKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAg
IC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhbGhzLT52YWx1ZWxlc3NfYnlfZXhjZXB0aW9u
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAg
ICAgICAgIC5UZXN0KCkpOwogCi0gICAgRVhQRUNUX0ZBTFNFKG1vdmVfdGVzdGVyLldpdGhJbnZh
cmlhbnRzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAgRVhQRUNUX0ZBTFNFKG1vdmVf
dGVzdGVyLldpdGhDb250cmFjdHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAgfQogICAv
LyBPdGhlcndpc2UgKCp0aGlzIGhvbGRzIHNvbWV0aGluZyBlbHNlKSwgaWYgaXNfbm90aHJvd19j
b25zdHJ1Y3RpYmxlX3Y8VGosCiAgIC8vIFQ+IHx8ICFpc19ub3Rocm93X21vdmVfY29uc3RydWN0
aWJsZV92PFRqPiBpcyB0cnVlLCBlcXVpdmFsZW50IHRvCkBAIC00MDAsMTIgKzQwMCwxMiBAQCBU
RVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBWYWx1ZUFzc2lnbikgewogICAgICAgICAg
ICAgLldpdGhJbml0aWFsVmFsdWUoV2l0aENvcHlOb1Rocm93KCkpCiAgICAgICAgICAgICAuV2l0
aE9wZXJhdGlvbihbJnJoc10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsgKmxocyA9IHJoczsgfSk7
CiAgICAgRVhQRUNUX1RSVUUoY29weV90ZXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJ
bnZhcmlhbnRzKENoZWNrSW52YXJpYW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRpb24oKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAg
IC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRpb24o
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAg
ICAgICAgLlRlc3QoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGNvcHlfdGVzdGVyLldpdGhJbnZhcmlh
bnRzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNvcHlfdGVz
dGVyLldpdGhDb250cmFjdHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAgICAvLyBtb3Zl
CiAgICAgYXV0byBtb3ZlX3Rlc3RlciA9IE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoV2l0aENvcHlOb1Rocm93
KCkpCkBAIC00MTMsMTIgKzQxMywxMiBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0
LCBWYWx1ZUFzc2lnbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGhzID0gRXhw
ZWN0ZWRUaHJvd2VyKHRlc3Rpbmc6Om5vdGhyb3dfY3Rvcik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9KTsKICAgICBFWFBFQ1RfVFJVRShtb3ZlX3Rlc3RlcgotICAgICAgICAgICAgICAg
ICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxocy0+dmFsdWVsZXNzX2J5X2V4Y2Vw
dGlvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAg
ICAgICAgICAgICAgLldpdGhDb250cmFjdHMoVmFyaWFudEludmFyaWFudHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxocy0+dmFsdWVsZXNzX2J5
X2V4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAg
ICAgICAgICAgICAgICAgICAuVGVzdCgpKTsKLSAgICBFWFBFQ1RfRkFMU0UobW92ZV90ZXN0ZXIu
V2l0aEludmFyaWFudHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKKyAgICBFWFBFQ1RfRkFM
U0UobW92ZV90ZXN0ZXIuV2l0aENvbnRyYWN0cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOwog
ICB9CiAgIC8vIE90aGVyd2lzZSAoaWYgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlX3Y8VGosIFQ+
ID09IGZhbHNlICYmCiAgIC8vIGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFRqPiA9PSB0
cnVlKSwKQEAgLTQzMiw3ICs0MzIsNyBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0
LCBWYWx1ZUFzc2lnbikgewogICAgIE1vdmVOb3Rocm93IHJoczsKICAgICBFWFBFQ1RfVFJVRShN
YWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0
aWFsVmFsdWUoV2l0aFRocm93ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlh
bnRzKENoZWNrSW52YXJpYW50cywgc3Ryb25nX2d1YXJhbnRlZSkKKyAgICAgICAgICAgICAgICAg
ICAgLldpdGhDb250cmFjdHMoVmFyaWFudEludmFyaWFudHMsIHN0cm9uZ19ndWFyYW50ZWUpCiAg
ICAgICAgICAgICAgICAgICAgIC5UZXN0KFsmcmhzXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeyAq
bGhzID0gcmhzOyB9KSk7CiAgIH0KICNlbmRpZiAgLy8gIShkZWZpbmVkKEFCU0xfSEFWRV9TVERf
VkFSSUFOVCkgJiYgZGVmaW5lZChfX0dMSUJDWFhfXykpCkBAIC00NTAsMTIgKzQ1MCwxMiBAQCBU
RVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBFbXBsYWNlKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB2LT5lbXBsYWNlPFRocm93ZXI+KGFyZ3MpOwogICAgICAgICAgICAgICAgICAg
ICAgIH0pOwogICAgIEVYUEVDVF9UUlVFKHRlc3RlcgotICAgICAgICAgICAgICAgICAgICAuV2l0
aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiB2KSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB2LT52YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAu
V2l0aENvbnRyYWN0cyhWYXJpYW50SW52YXJpYW50cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW10oVGhyb3dpbmdWYXJpYW50KiB2KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHYtPnZhbHVlbGVzc19ieV9leGNlcHRpb24oKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAg
LlRlc3QoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRlc3Rlci5XaXRoSW52YXJpYW50cyhzdHJvbmdf
Z3VhcmFudGVlKS5UZXN0KCkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aENvbnRyYWN0
cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOwogICB9CiB9CiAKQEAgLTQ3Miw3ICs0NzIsNyBA
QCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBTd2FwKSB7CiAgICAgVGhyb3dpbmdW
YXJpYW50IHJocyA9IEV4cGVjdGVkVGhyb3dlcigpOwogICAgIEVYUEVDVF9UUlVFKE1ha2VFeGNl
cHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1
ZShXaXRoVGhyb3dlcigpKQotICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hl
Y2tJbnZhcmlhbnRzKQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhWYXJpYW50
SW52YXJpYW50cykKICAgICAgICAgICAgICAgICAgICAgLlRlc3QoWyZdKFRocm93aW5nVmFyaWFu
dCogbGhzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgYXV0byBjb3B5ID0gcmhzOwogICAgICAg
ICAgICAgICAgICAgICAgIGxocy0+c3dhcChjb3B5KTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBURVNU
KFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBTd2FwKSB7CiAgICAgVGhyb3dpbmdWYXJpYW50
IHJocyA9IEV4cGVjdGVkVGhyb3dlcigpOwogICAgIEVYUEVDVF9UUlVFKE1ha2VFeGNlcHRpb25T
YWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShXaXRo
Q29weU5vVGhyb3coKSkKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNr
SW52YXJpYW50cykKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoVmFyaWFudElu
dmFyaWFudHMpCiAgICAgICAgICAgICAgICAgICAgIC5UZXN0KFsmXShUaHJvd2luZ1ZhcmlhbnQq
IGxocykgewogICAgICAgICAgICAgICAgICAgICAgIGF1dG8gY29weSA9IHJoczsKICAgICAgICAg
ICAgICAgICAgICAgICBsaHMtPnN3YXAoY29weSk7CkBAIC00OTYsNyArNDk2LDcgQEAgVEVTVChW
YXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwgU3dhcCkgewogICAgIFRocm93aW5nVmFyaWFudCBy
aHMgPSBFeHBlY3RlZFRocm93ZXIoKTsKICAgICBFWFBFQ1RfVFJVRShNYWtlRXhjZXB0aW9uU2Fm
ZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoV2l0aENv
cHlOb1Rocm93KCkpCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0lu
dmFyaWFudHMpCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZh
cmlhbnRzKQogICAgICAgICAgICAgICAgICAgICAuVGVzdChbJl0oVGhyb3dpbmdWYXJpYW50KiBs
aHMpIHsKICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGNvcHkgPSByaHM7CiAgICAgICAgICAg
ICAgICAgICAgICAgY29weS5zd2FwKCpsaHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFy
aWFudF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvdmFyaWFudF90ZXN0LmNjCmluZGV4IDI2MmJkOTQ0
NmMxODQxYTU3MDcxNTc0NWMzNDM0ZWUxYjhlMTlmOTUuLmJmYjhiZDdhMDIyM2YzY2Q5ODM0ZTQ3
NjRkYzVhNzNiYzE2NjRkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfdGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X3Rlc3QuY2MKQEAgLTQwMyw3ICs0MDMsNyBAQCBz
dHJ1Y3QgaXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZQogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KIHN0cnVjdCBpc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlCi0gICAgOiBzdGQ6OmlzX21v
dmVfYXNzaWduYWJsZTxTaW5nbGVVbmlvbjxUPj46OnR5cGUge307CisgICAgOiBhYnNsOjppc19t
b3ZlX2Fzc2lnbmFibGU8U2luZ2xlVW5pb248VD4+Ojp0eXBlIHt9OwogCiBURVNUKFZhcmlhbnRU
ZXN0LCBOb3Rocm93TW92ZUNvbnN0cnVjdGlibGUpIHsKICAgLy8gVmVyaWZ5IHRoYXQgdmFyaWFu
dCBpcyBub3Rocm93IG1vdmUgY29uc3RydWN0aWJsZSBpZmYgaXRzIHRlbXBsYXRlCkBAIC0yNDM5
LDE0ICsyNDM5LDE0IEBAIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RNb3ZlQ29udmVyc2lvblZpYUNv
bnZlcnRWYXJpYW50VG8pIHsKIAogVEVTVChWYXJpYW50VGVzdCwgVGVzdENvcHlBbmRNb3ZlVHlw
ZVRyYWl0cykgewogICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTx2YXJp
YW50PHN0ZDo6c3RyaW5nPj46OnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUoc3RkOjppc19jb3B5X2Fz
c2lnbmFibGU8dmFyaWFudDxzdGQ6OnN0cmluZz4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX2NvcHlfYXNzaWduYWJsZTx2YXJpYW50PHN0ZDo6c3RyaW5nPj46OnZhbHVlKTsKICAg
RVhQRUNUX1RSVUUoc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8dmFyaWFudDxzdGQ6OnN0cmlu
Zz4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPHZhcmlh
bnQ8c3RkOjpzdHJpbmc+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc19tb3ZlX2Fz
c2lnbmFibGU8dmFyaWFudDxzdGQ6OnN0cmluZz4+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9UUlVFKHN0
ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPHZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPGludD4+Pjo6
dmFsdWUpOwotICBFWFBFQ1RfVFJVRShzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTx2YXJpYW50PHN0
ZDo6dW5pcXVlX3B0cjxpbnQ+Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfbW92
ZV9hc3NpZ25hYmxlPHZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPGludD4+Pjo6dmFsdWUpOwogICBF
WFBFQ1RfRkFMU0UoCiAgICAgICBzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTx2YXJpYW50PHN0
ZDo6dW5pcXVlX3B0cjxpbnQ+Pj46OnZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNfY29w
eV9hc3NpZ25hYmxlPHZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPGludD4+Pjo6dmFsdWUpOworICBF
WFBFQ1RfRkFMU0UoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPHZhcmlhbnQ8c3RkOjp1bmlxdWVf
cHRyPGludD4+Pjo6dmFsdWUpOwogCiAgIEVYUEVDVF9GQUxTRSgKICAgICAgIGFic2w6OmlzX3Ry
aXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGU8dmFyaWFudDxzdGQ6OnN0cmluZz4+Ojp2YWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxpdHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkvdXRp
bGl0eS5oCmluZGV4IGQ3MzYwMmM0N2QzYjZkYTE2NjM1N2ZiY2RjNWQ0MTUxOWQ2MjM1NjEuLmFl
ZjRiYWEwMmRjZDY3YWNlYjI1NGYwYTllNGJmZjAwZGE0Y2U1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3V0aWxpdHkvdXRpbGl0eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3V0aWxpdHkvdXRpbGl0eS5oCkBAIC0yMzUs
MTMgKzIzNSwxMyBAQCBhdXRvIGFwcGx5X2hlbHBlcihGdW5jdG9yJiYgZnVuY3RvciwgVHVwbGUm
JiB0LCBpbmRleF9zZXF1ZW5jZTxJbmRleGVzLi4uPikKIC8vIEV4YW1wbGU6CiAvLwogLy8gICBj
bGFzcyBGb297dm9pZCBCYXIoaW50KTt9OwotLy8gICB2b2lkIHVzZXJfZnVuY3Rpb24oaW50LCBz
dGQ6OnN0cmluZyk7CisvLyAgIHZvaWQgdXNlcl9mdW5jdGlvbihpbnQsIHN0cmluZyk7CiAvLyAg
IHZvaWQgdXNlcl9mdW5jdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Rm9vPik7CiAvLwogLy8gICBpbnQg
bWFpbigpCiAvLyAgIHsKLS8vICAgICAgIHN0ZDo6dHVwbGU8aW50LCBzdGQ6OnN0cmluZz4gdHVw
bGUxKDQyLCAiYmFyIik7Ci0vLyAgICAgICAvLyBJbnZva2VzIHRoZSB1c2VyIGZ1bmN0aW9uIG92
ZXJsb2FkIG9uIGludCwgc3RkOjpzdHJpbmcuCisvLyAgICAgICBzdGQ6OnR1cGxlPGludCwgc3Ry
aW5nPiB0dXBsZTEoNDIsICJiYXIiKTsKKy8vICAgICAgIC8vIEludm9rZXMgdGhlIHVzZXIgZnVu
Y3Rpb24gb3ZlcmxvYWQgb24gaW50LCBzdHJpbmcuCiAvLyAgICAgICBhYnNsOjphcHBseSgmdXNl
cl9mdW5jdGlvbiwgdHVwbGUxKTsKIC8vCiAvLyAgICAgICBhdXRvIGZvbyA9IGFic2w6Om1ha2Vf
dW5pcXVlPEZvbz4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL0FVVEhPUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9BVVRIT1JTCmluZGV4IDZiMGFmZDg2MTgxMGZhYmY1YjZkNTNmMzM1Yjg4NTc5ZTEz
N2Q2NDcuLjEyMTZiNDhkOTU5MDU1NjJjZDZlMWZmZTc5N2YwYzYzZWQyM2Q4YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0FVVEhPUlMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvQVVUSE9SUwpAQCAt
MTYsNiArMTYsNyBAQCBDb2R5IEJhcm5lcyA8Y29uY2VwdGdlbmVzaXNAZ21haWwuY29tPgogQ29s
aW4gUGx1bWIKIERhdmlkIFBvcnRlciA8ZGF2aWRAcG9ydGVyLm1lPgogRGF4IEJvb3lzZW4gPGRh
eEB5b3Vub3cuY29tPgorRGFuYWlsIEtpcm92IDxka2lyb3Zicm9hZHNvZnRAZ21haWwuY29tPgog
RG1pdHJ5IExpemluIDxzZGtkaW1vbkBnbWFpbC5jb20+CiBFcmljIFJlc2NvcmxhLCBSVEZNIElu
Yy4gPGVrckBydGZtLmNvbT4KIEZyZWRlcmlrIFJpZWRlbCwgRnJvZ2cgR21iSCA8ZnJlZGVyaWsu
cmllZGVsQGZyb2dnLmlvPgpAQCAtNDcsNiArNDgsNyBAQCBQZW5nIFl1IDx5dXBlbmczMjNAZ21h
aWwuY29tPgogUmFmYWVsIExvcGV6IERpZXogPHJhZmFsb3BlemRpZXpAZ21haWwuY29tPgogUmFs
cGggR2lsZXMgPGdpbGVzQGdob3N0c2NyaXB0LmNvbT4KIFJpa3UgVm9pcGlvIDxyaWt1LnZvaXBp
b0BsaW5hcm8ub3JnPgorUm9iZXJ0IEJhcmVzIDxyb2JlcnRAYmFyZXMubWU+CiBSb2JlcnQgTmFn
eSA8cm9iZXJ0Lm5hZ3lAZ21haWwuY29tPgogUnlhbiBZb2FrdW0gPHJ5b2FrdW1Ac2tvYmFsdC5j
b20+CiBTYXRlbmRlciBTYXJvaGEgPHNzYXJvaGFAeWFob28uY29tPgpAQCAtNTYsNiArNTgsNyBA
QCBTaWx2aXUgQ2FyYWdlYSA8c2lsdml1LmNwcEBnbWFpbC5jb20+CiBTdGVmYW4gR3VsYSA8c3Rl
d2VnQGdtYWlsLmNvbT4KIFN0ZXZlIFJlaWQgPHNyZWlkQHNlYS10by1za3kubmV0PgogVGFydW4g
Q2hhd2xhIDx0cm5rdW1hcmNoYXdsYUBnbWFpbC5jb20+CitVbGFkemlzbGF1IFN1c2hhIDxsYW5k
YnlAZ21haWwuY29tPgogVmxhZGltaXIgQmVsb2Jvcm9kb3YgPFZsYWRpbWlyVGVjaE1hbkBnbWFp
bC5jb20+CiBWaWNrZW4gU2ltb25pYW4gPHZzaW1vbkBnbWFpbC5jb20+CiBWaWN0b3IgQ29zdGFu
IDxjb3N0YW5AZ21haWwuY29tPgpAQCAtNzAsNiArNzMsMTAgQEAgU2VyZ2lvIEdhcmNpYSBNdXJp
bGxvIDxzZXJnaW8uZ2FyY2lhLm11cmlsbG9AZ21haWwuY29tPgogTWF4aW0gUGF2bG92IDxwYXZs
bG92bWF4QGdtYWlsLmNvbT4KIFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IFBpYXN5IFh1IDx4ejQyMTVAZ21haWwuY29tPgorVG9tYXMgUG9wZWxhIDx0b21hcy5wb3BlbGFA
Z21haWwuY29tPgorSmFuIEdydWxpY2ggPGdydWxqYUBnbWFpbC5jb20+CitFaWtlIFJhdGhrZSA8
ZXJhdGhrZUByZWRoYXQuY29tPgorTWljaGVsIFByb21vbmV0IDxtaWNoZWwucHJvbW9uZXQuMUBn
bWFpbC5jb20+CiAKICZ5ZXQgTExDIDwqQGFuZHlldC5jb20+CiBBZ29yYSBJTyA8KkBhZ29yYS5p
bz4KQEAgLTgwLDYgKzg3LDcgQEAgR29vZ2xlIEluYy4gPCpAZ29vZ2xlLmNvbT4KIEh5cGVyQ29u
bmVjdCBJbmMuIDwqQGhwY250LmNvbT4KIExpZmUgT24gQWlyIEluYy4gPCpAbGlmZW9uYWlyLmNv
bT4KIEludGVsIENvcnBvcmF0aW9uIDwqQGludGVsLmNvbT4KK01pY3Jvc29mdCBDb3Jwb3JhdGlv
biA8KkBtaWNyb3NvZnQuY29tPgogTUlQUyBUZWNobm9sb2dpZXMgPCpAbWlwcy5jb20+CiBNb3pp
bGxhIEZvdW5kYXRpb24gPCpAbW96aWxsYS5jb20+CiBPcGVyYSBTb2Z0d2FyZSBBU0EgPCpAb3Bl
cmEuY29tPgpAQCAtOTcsNCArMTA1LDUgQEAgV2lyZSBTd2lzcyBHbWJIIDwqQHdpcmUuY29tPgog
TWlndWVsIFBhcmlzIDxtcGFyaXNkaWF6QGdtYWlsLmNvbT4KIFZld2QgU29mdHdhcmUgQVMgPCpA
dmV3ZC5jb20+CiBIaWdoZml2ZSwgSW5jLiA8KkBoaWdoZml2ZS5jb20+Ci1Db1NNbyBTb2Z0d2Fy
ZSBDb25zdWx0aW5nLCBQdGUgTHRkIDwqQGNvc21vc29mdHdhcmUuaW8+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorQ29TTW8gU29mdHdhcmUgQ29uc3VsdGluZywgUHRlIEx0ZCA8KkBjb3Nt
b3NvZnR3YXJlLmlvPgorVHVwbGUsIExMQyA8KkB0dXBsZS5hcHA+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9CVUlMRC5nbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0JVSUxELmduCmluZGV4IDVhMTQ0NmQ5
NTYzMDYzMjE0ODQ3ZjQxOWYxMGUxNDBjMGZmMzI2NzMuLjI0OTA5NGJkZDZlZDg4MTA4MTBiYjZh
MGYzNzVlNDhhMDNkNzUzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL0JVSUxELmduCkBAIC00MCwxMiArNDAsMTQgQEAgaWYgKCFidWlsZF93
aXRoX2Nocm9taXVtKSB7CiAgICAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICBkZXBz
ICs9IFsKICAgICAgICAgIjpydGNfdW5pdHRlc3RzIiwKKyAgICAgICAgIjpzbG93X3Rlc3RzIiwK
ICAgICAgICAgIjp2aWRlb19lbmdpbmVfdGVzdHMiLAogICAgICAgICAiOndlYnJ0Y19ub25wYXJh
bGxlbF90ZXN0cyIsCiAgICAgICAgICI6d2VicnRjX3BlcmZfdGVzdHMiLAogICAgICAgICAiY2Fs
bDpmYWtlX25ldHdvcmtfdW5pdHRlc3RzIiwKICAgICAgICAgImNvbW1vbl9hdWRpbzpjb21tb25f
YXVkaW9fdW5pdHRlc3RzIiwKICAgICAgICAgImNvbW1vbl92aWRlbzpjb21tb25fdmlkZW9fdW5p
dHRlc3RzIiwKKyAgICAgICAgImV4YW1wbGVzOmV4YW1wbGVzX3VuaXR0ZXN0cyIsCiAgICAgICAg
ICJtZWRpYTpydGNfbWVkaWFfdW5pdHRlc3RzIiwKICAgICAgICAgIm1vZHVsZXM6bW9kdWxlc190
ZXN0cyIsCiAgICAgICAgICJtb2R1bGVzOm1vZHVsZXNfdW5pdHRlc3RzIiwKQEAgLTU0LDEwICs1
Niw4IEBAIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICAgICAgICAibW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3I6YndlX3NpbXVsYXRpb25zX3Rlc3RzIiwKICAgICAgICAgIm1v
ZHVsZXMvcnRwX3J0Y3A6dGVzdF9wYWNrZXRfbWFza3NfbWV0cmljcyIsCiAgICAgICAgICJtb2R1
bGVzL3ZpZGVvX2NhcHR1cmU6dmlkZW9fY2FwdHVyZV9pbnRlcm5hbF9pbXBsIiwKLSAgICAgICAg
Im9ydGM6b3J0Y191bml0dGVzdHMiLAogICAgICAgICAicGM6cGVlcmNvbm5lY3Rpb25fdW5pdHRl
c3RzIiwKICAgICAgICAgInBjOnJ0Y19wY191bml0dGVzdHMiLAotICAgICAgICAicnRjX2Jhc2U6
cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgICAic3RhdHM6cnRjX3N0YXRzX3VuaXR0ZXN0
cyIsCiAgICAgICAgICJzeXN0ZW1fd3JhcHBlcnM6c3lzdGVtX3dyYXBwZXJzX3VuaXR0ZXN0cyIs
CiAgICAgICAgICJ0ZXN0IiwKQEAgLTk4LDYgKzk4LDEwIEBAIGNvbmZpZygiY29tbW9uX2luaGVy
aXRlZF9jb25maWciKSB7CiAgIGNmbGFncyA9IFtdCiAgIGxkZmxhZ3MgPSBbXQogCisgIGlmIChy
dGNfZW5hYmxlX3N5bWJvbF9leHBvcnQpIHsKKyAgICBkZWZpbmVzID0gWyAiV0VCUlRDX0VOQUJM
RV9TWU1CT0xfRVhQT1JUIiBdCisgIH0KKwogICBpZiAoYnVpbGRfd2l0aF9tb3ppbGxhKSB7CiAg
ICAgZGVmaW5lcyArPSBbICJXRUJSVENfTU9aSUxMQV9CVUlMRCIgXQogICB9CkBAIC0yMTgsOCAr
MjIyLDggQEAgY29uZmlnKCJjb21tb25fY29uZmlnIikgewogICAgIGRlZmluZXMgKz0gWyAiV0VC
UlRDX0lOQ0xVREVfSU5URVJOQUxfQVVESU9fREVWSUNFIiBdCiAgIH0KIAotICBpZiAoIXJ0Y19s
aWJ2cHhfYnVpbGRfdnA5KSB7Ci0gICAgZGVmaW5lcyArPSBbICJSVENfRElTQUJMRV9WUDkiIF0K
KyAgaWYgKHJ0Y19saWJ2cHhfYnVpbGRfdnA5KSB7CisgICAgZGVmaW5lcyArPSBbICJSVENfRU5B
QkxFX1ZQOSIgXQogICB9CiAKICAgaWYgKHJ0Y19lbmFibGVfc2N0cCkgewpAQCAtMzc0LDI5ICsz
NzgsMzMgQEAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtKSB7CiAKICAgICBkZXBzID0gWwogICAg
ICAgIjp3ZWJydGNfY29tbW9uIiwKKyAgICAgICJhcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9u
X2FwaSIsCiAgICAgICAiYXBpOnRyYW5zcG9ydF9hcGkiLAogICAgICAgImF1ZGlvIiwKICAgICAg
ICJjYWxsIiwKICAgICAgICJjb21tb25fYXVkaW8iLAogICAgICAgImNvbW1vbl92aWRlbyIsCisg
ICAgICAibG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCisgICAgICAibG9nZ2luZzpydGNfZXZl
bnRfbG9nX2ltcGxfYmFzZSIsCiAgICAgICAibWVkaWEiLAogICAgICAgIm1vZHVsZXMiLAogICAg
ICAgIm1vZHVsZXMvdmlkZW9fY2FwdHVyZTp2aWRlb19jYXB0dXJlX2ludGVybmFsX2ltcGwiLAot
ICAgICAgIm9ydGMiLAorICAgICAgInAycDpydGNfcDJwIiwKKyAgICAgICJwYzpsaWJqaW5nbGVf
cGVlcmNvbm5lY3Rpb24iLAorICAgICAgInBjOnBlZXJjb25uZWN0aW9uIiwKKyAgICAgICJwYzpy
dGNfcGMiLAorICAgICAgInBjOnJ0Y19wY19iYXNlIiwKICAgICAgICJydGNfYmFzZSIsCiAgICAg
ICAic2RrIiwKICAgICAgICJ2aWRlbyIsCiAgICAgXQogCi0gICAgIyBBZGRpdGlvbmFsIGZhY3Rv
cnkgZnVuY3Rpb25zIHRvIGJlIGV4cG9zZWQuCi0gICAgIyBSYXRpb25hbDogVGhlc2UgZmFjdG9y
aWVzIGFyZSBzbWFsbCBlbm91Z2ggKDg5IEtpQiAvIDMyKyBNaUIpCi0gICAgIyAgICAgICAgICAg
dG8gYmUgdW5jb25kaXRpb25hbHkgaW5jbHVkZWQgZm9yIHVzZXIgY29udmVuaWVuY2UuCi0gICAg
IyBUaGF0IGJlZ2luIHNhaWQ6Ci0gICAgIyBUT0RPKHl2ZXNnKSBDb25zaWRlciBtYWtpbmcgYWxs
IG5vbi1jb3JlIEFQSXMgb3B0aW9uYWwsIHNvIHRoYXQgdXNlcnMKLSAgICAjICAgICAgICAgICAg
IGNhbiBidWlsZCBhIGN1c3RvbWl6ZWQgbGlicmFyeSB0YWlsb3JlZCB0byB0aGVpciBuZWVkcy4K
KyAgICAjIEluY2x1ZGUgYXVkaW8gYW5kIHZpZGVvIGNvZGVjcyBieSBkZWZhdWx0LgogICAgIGRl
cHMgKz0gWwogICAgICAgImFwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2Zh
Y3RvcnkiLAogICAgICAgImFwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2Zh
Y3RvcnkiLAorICAgICAgImFwaS92aWRlb19jb2RlY3M6YnVpbHRpbl92aWRlb19kZWNvZGVyX2Zh
Y3RvcnkiLAorICAgICAgImFwaS92aWRlb19jb2RlY3M6YnVpbHRpbl92aWRlb19lbmNvZGVyX2Zh
Y3RvcnkiLAogICAgIF0KIAogICAgIGlmIChidWlsZF93aXRoX21vemlsbGEpIHsKQEAgLTQzMCw5
ICs0MzgsOSBAQCBydGNfc291cmNlX3NldCgid2VicnRjX2NvbW1vbiIpIHsKICAgZGVwcyA9IFsK
ICAgICAiYXBpOmFycmF5X3ZpZXciLAogICAgICJhcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxv
Y2F0aW9uIiwKKyAgICAiYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAicnRjX2Jhc2U6Y2hl
Y2tzIiwKLSAgICAicnRjX2Jhc2U6ZGVwcmVjYXRpb24iLAotICAgICJydGNfYmFzZTpzdHJpbmd1
dGlscyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICBd
CiAKICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CkBAIC00NjcsNyAr
NDc1LDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAicDJwOnJ0Y19wMnBfdW5p
dHRlc3RzIiwKICAgICAgICJydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZF91bml0dGVzdHMiLAog
ICAgICAgInJ0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX21haW4iLAotICAgICAgInJ0Y19iYXNlOnJ0
Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICJydGNfYmFzZTpydGNfYmFzZV91bml0dGVzdHMi
LAogICAgICAgInJ0Y19iYXNlOnJ0Y19qc29uX3VuaXR0ZXN0cyIsCiAgICAgICAicnRjX2Jhc2U6
cnRjX251bWVyaWNzX3VuaXR0ZXN0cyIsCkBAIC00OTksNiArNTA2LDE3IEBAIGlmIChydGNfaW5j
bHVkZV90ZXN0cykgewogICAgIH0KICAgfQogCisgICMgVGhpcyBydW5zIHRlc3RzIHRoYXQgbXVz
dCBydW4gaW4gcmVhbCB0aW1lIGFuZCB0aGVyZWZvcmUgY2FuIHRha2Ugc29tZQorICAjIHRpbWUg
dG8gZXhlY3V0ZS4gVGhleSBhcmUgaW4gYSBzZXBhcmF0ZSBleGVjdXRhYmxlIHRvIGF2b2lkIG1h
a2luZyB0aGUKKyAgIyByZWd1bGFyIHVuaXR0ZXN0IHN1aXRlIHRvbyBzbG93IHRvIHJ1biBmcmVx
dWVudGx5LgorICBydGNfdGVzdCgic2xvd190ZXN0cyIpIHsKKyAgICB0ZXN0b25seSA9IHRydWUK
KyAgICBkZXBzID0gWworICAgICAgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2df
Y2M6Z29vZ19jY19zbG93X3Rlc3RzIiwKKyAgICAgICJ0ZXN0OnRlc3RfbWFpbiIsCisgICAgXQor
ICB9CisKICAgIyBUT0RPKHBib3MpOiBSZW5hbWUgdGVzdCBzdWl0ZSwgdGhpcyBpcyBubyBsb25n
ZXIgImp1c3QiIGZvciB2aWRlbyB0YXJnZXRzLgogICB2aWRlb19lbmdpbmVfdGVzdHNfcmVzb3Vy
Y2VzID0gWwogICAgICJyZXNvdXJjZXMvZm9yZW1hbl9jaWZfc2hvcnQueXV2IiwKQEAgLTUyNCw3
ICs1NDIsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICMgc2hvdWxkIG1vdmUg
dGhlbSB0byBhIG1vcmUgYXBwcm9wcmlhdGUgdGVzdCBzdWl0ZS4KICAgICAgICJjYWxsOmNhbGxf
dGVzdHMiLAogICAgICAgIm1vZHVsZXMvdmlkZW9fY2FwdHVyZSIsCi0gICAgICAicnRjX2Jhc2U6
cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgInRlc3Q6dGVzdF9jb21tb24iLAogICAgICAg
InRlc3Q6dGVzdF9tYWluIiwKICAgICAgICJ0ZXN0OnZpZGVvX3Rlc3RfY29tbW9uIiwKQEAgLTYx
Nyw2ICs2MzQsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICAgInNkay9hbmRy
b2lkL3Rlc3RzL3NyYy9vcmcvd2VicnRjL0dsR2VuZXJpY0RyYXdlclRlc3QuamF2YSIsCiAgICAg
ICAgICJzZGsvYW5kcm9pZC90ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9IYXJkd2FyZVZpZGVvRW5jb2Rl
clRlc3QuamF2YSIsCiAgICAgICAgICJzZGsvYW5kcm9pZC90ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9T
Y2FsaW5nU2V0dGluZ3NUZXN0LmphdmEiLAorICAgICAgICAic2RrL2FuZHJvaWQvdGVzdHMvc3Jj
L29yZy93ZWJydGMvQ3J5cHRvT3B0aW9uc1Rlc3QuamF2YSIsCiAgICAgICBdCiAKICAgICAgIGRl
cHMgPSBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ERVBTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvREVQ
UwppbmRleCA2N2FhNGE4MDNjMjA5MTljMjYzNTVjYTNmMDllOGMyNWJkZTFkNTFkLi41NTVjMjdm
MTBlN2UxOTk3MzAwMDZkNGRiOTdkMzYwZDJjMTU4Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ERVBTCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0RFUFMKQEAgLTcsMTYgKzcsMTYgQEAgdmFycyA9
IHsKICAgJ2NoZWNrb3V0X2NvbmZpZ3VyYXRpb24nOiAnZGVmYXVsdCcsCiAgICdjaGVja291dF9p
bnN0cnVtZW50ZWRfbGlicmFyaWVzJzogJ2NoZWNrb3V0X2xpbnV4IGFuZCBjaGVja291dF9jb25m
aWd1cmF0aW9uID09ICJkZWZhdWx0IicsCiAgICd3ZWJydGNfZ2l0JzogJ2h0dHBzOi8vd2VicnRj
Lmdvb2dsZXNvdXJjZS5jb20nLAotICAnY2hyb21pdW1fcmV2aXNpb24nOiAnY2NiODNkNGE1NTEy
ODAyZjExOTNhNTA2YjU0MzFlODVlMDEzODA0MycsCisgICdjaHJvbWl1bV9yZXZpc2lvbic6ICdi
MDRlNTEzZjgyNWQ2Y2UyMmUxNDc2MDFjYmZjNzVlYTIzZWI5MDczJywKICAgJ2JvcmluZ3NzbF9n
aXQnOiAnaHR0cHM6Ly9ib3Jpbmdzc2wuZ29vZ2xlc291cmNlLmNvbScsCiAgICMgVGhyZWUgbGlu
ZXMgb2Ygbm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUgY29tbWl0IHF1ZXVl
IGNhbiBoYW5kbGUgQ0xzIHJvbGxpbmcgc3dhcm1pbmdfY2xpZW50CiAgICMgYW5kIHdoYXRldmVy
IGVsc2Ugd2l0aG91dCBpbnRlcmZlcmVuY2UgZnJvbSBlYWNoIG90aGVyLgotICAnc3dhcm1pbmdf
cmV2aXNpb24nOiAnNDg2YzliNTNjNGQ1NGRkNGI5NWJiNmNlMGUzMTE2MGU2MDBkZmMxMScsCisg
ICdzd2FybWluZ19yZXZpc2lvbic6ICcxNTdiZWM4YTI1Y2M0ZWJkNmExNjA1MjUxMGQwOGIwNWI2
MTAyYWFkJywKICAgIyBUaHJlZSBsaW5lcyBvZiBub24tY2hhbmdpbmcgY29tbWVudHMgc28gdGhh
dAogICAjIHRoZSBjb21taXQgcXVldWUgY2FuIGhhbmRsZSBDTHMgcm9sbGluZyBCb3JpbmdTU0wK
ICAgIyBhbmQgd2hhdGV2ZXIgZWxzZSB3aXRob3V0IGludGVyZmVyZW5jZSBmcm9tIGVhY2ggb3Ro
ZXIuCi0gICdib3Jpbmdzc2xfcmV2aXNpb24nOiAnY2UwMDgyOGM4OWRmM2Q0YzQwZGU3ZDcxNWIx
YTAzMmViMDNjNTI1YycsCisgICdib3Jpbmdzc2xfcmV2aXNpb24nOiAnNjk2NWQyNTYwMjc1NGJj
NDE5YzVmNzU3ZDAwOGJhMWY0ZGE0OWFlNCcsCiAgICMgVGhyZWUgbGluZXMgb2Ygbm9uLWNoYW5n
aW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUgY29tbWl0IHF1ZXVlIGNhbiBoYW5kbGUgQ0xz
IHJvbGxpbmcgbHNzCiAgICMgYW5kIHdoYXRldmVyIGVsc2Ugd2l0aG91dCBpbnRlcmZlcmVuY2Ug
ZnJvbSBlYWNoIG90aGVyLgpAQCAtMjQsMjkgKzI0LDI5IEBAIHZhcnMgPSB7CiAgICMgVGhyZWUg
bGluZXMgb2Ygbm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUgY29tbWl0IHF1
ZXVlIGNhbiBoYW5kbGUgQ0xzIHJvbGxpbmcgY2F0YXB1bHQKICAgIyBhbmQgd2hhdGV2ZXIgZWxz
ZSB3aXRob3V0IGludGVyZmVyZW5jZSBmcm9tIGVhY2ggb3RoZXIuCi0gICdjYXRhcHVsdF9yZXZp
c2lvbic6ICc0ZmM0MjgxZDIxNTJhMzY3NjJhMGJmNDdiYTc2YmY4ZDRhNmVlMjM0JywKKyAgJ2Nh
dGFwdWx0X3JldmlzaW9uJzogJzE3MDc5YTVjYzFmMjdhMmRjNTc1NThhMDg5NzY2NmNhYzRhNWJj
NjQnLAogICAjIFRocmVlIGxpbmVzIG9mIG5vbi1jaGFuZ2luZyBjb21tZW50cyBzbyB0aGF0CiAg
ICMgdGhlIGNvbW1pdCBxdWV1ZSBjYW4gaGFuZGxlIENMcyByb2xsaW5nIGxpYkZ1enplcgogICAj
IGFuZCB3aGF0ZXZlciBlbHNlIHdpdGhvdXQgaW50ZXJmZXJlbmNlIGZyb20gZWFjaCBvdGhlci4K
LSAgJ2xpYmZ1enplcl9yZXZpc2lvbic6ICdhMzA1YTVlYjg1ZWQ0MmVkYzVjOTY1YzE0ZjMwOGY1
NzZjYjI0NWNhJywKKyAgJ2xpYmZ1enplcl9yZXZpc2lvbic6ICcyYTUzMDk4NTg0YzQ4YWY1MGFl
YzNmYjUxZmViZTVlNjUxNDg5Nzc0JywKICAgIyBUaHJlZSBsaW5lcyBvZiBub24tY2hhbmdpbmcg
Y29tbWVudHMgc28gdGhhdAogICAjIHRoZSBjb21taXQgcXVldWUgY2FuIGhhbmRsZSBDTHMgcm9s
bGluZyBmcmVldHlwZQogICAjIGFuZCB3aGF0ZXZlciBlbHNlIHdpdGhvdXQgaW50ZXJmZXJlbmNl
IGZyb20gZWFjaCBvdGhlci4KLSAgJ2ZyZWV0eXBlX3JldmlzaW9uJzogJ2FiZDk5N2FhN2NmMmJj
OTIxOTEzNjc4MmM3MzYzZDE0ZDMyNTE5OWMnLAorICAnZnJlZXR5cGVfcmV2aXNpb24nOiAnZmIw
ZDY2ZDA0YzRkZDhkN2Y5NjA0YWYxYTYwMDFiMjczN2NiNTA5OCcsCiAgICMgVGhyZWUgbGluZXMg
b2Ygbm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUgY29tbWl0IHF1ZXVlIGNh
biBoYW5kbGUgQ0xzIHJvbGxpbmcgSGFyZkJ1enoKICAgIyBhbmQgd2hhdGV2ZXIgZWxzZSB3aXRo
b3V0IGludGVyZmVyZW5jZSBmcm9tIGVhY2ggb3RoZXIuCi0gICdoYXJmYnV6el9yZXZpc2lvbic6
ICc1NGQzMzJkZDliMDI2MzgyMTM3NjE2MWNkZmZiNjBmZmIzYzc4NDdmJywKKyAgJ2hhcmZidXp6
X3JldmlzaW9uJzogJzU3NGQ4ODhjOGE0MDkyOTVhOTUyMzYxYTM5YzhlODNhNTJhMGZjM2QnLAog
fQogZGVwcyA9IHsKICAgIyBUT0RPKGtqZWxsYW5kZXIpOiBNb3ZlIHRoaXMgdG8gYmUgQW5kcm9p
ZC1vbmx5IG9uY2UgdGhlIGxpYmV2ZW50IGRlcGVuZGVuY3kKICAgIyBpbiBiYXNlL3RoaXJkX3Bh
cnR5L2xpYmV2ZW50IGlzIHNvbHZlZC4KICAgJ3NyYy9iYXNlJzoKLSAgICBWYXIoJ2Nocm9taXVt
X2dpdCcpICsgJy9jaHJvbWl1bS9zcmMvYmFzZScgKyAnQCcgKyAnMGRiNjEzNzlkOGY3NjgwN2U2
Zjc4YTM1Y2NmZjkyMjcyMDViNjE5NScsCisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hy
b21pdW0vc3JjL2Jhc2UnICsgJ0AnICsgJ2I5OTAxZjliYzViNjVhMTE2OWQ1ZGI2OTZlZjQ0Mjhh
NjVjZWM2MjInLAogICAnc3JjL2J1aWxkJzoKLSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9j
aHJvbWl1bS9zcmMvYnVpbGQnICsgJ0AnICsgJzhiYjlmZWY4NjJiZDc1NzBjNWI0NjU4NjBjNDI3
NzAxYzgxYzE1MzEnLAorICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy9i
dWlsZCcgKyAnQCcgKyAnYmJkNjdhMzUwZDc0NTIwMGU1Nzk4Y2FjZTExYTI4ZWRmZDlmYzNiMics
CiAgICdzcmMvYnVpbGR0b29scyc6Ci0gICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21p
dW0vYnVpbGR0b29scy5naXQnICsgJ0AnICsgJzJkZmY5YzljNzRlOWQ3MzJlNmZlNTdjODRlZjdm
ZDA0NGNjNDVkOTYnLAorICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL2J1aWxk
dG9vbHMuZ2l0JyArICdAJyArICcwNDE2MWVjOGQ3Yzc4MWU0NDk4YzY5OTI1NGM2OWJhMGRkOTU5
ZmRlJywKICAgIyBHcmFkbGUgNC4zLXJjNC4gVXNlZCBmb3IgdGVzdGluZyBBbmRyb2lkIFN0dWRp
byBwcm9qZWN0IGdlbmVyYXRpb24gZm9yIFdlYlJUQy4KICAgJ3NyYy9leGFtcGxlcy9hbmRyb2lk
dGVzdHMvdGhpcmRfcGFydHkvZ3JhZGxlJzogewogICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dp
dCcpICsgJy9leHRlcm5hbC9naXRodWIuY29tL2dyYWRsZS9ncmFkbGUuZ2l0JyArICdAJyArCkBA
IC01NCwyMSArNTQsNDQgQEAgZGVwcyA9IHsKICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2Fu
ZHJvaWQnLAogICB9LAogICAnc3JjL2lvcyc6IHsKLSAgICAndXJsJzogVmFyKCdjaHJvbWl1bV9n
aXQnKSArICcvY2hyb21pdW0vc3JjL2lvcycgKyAnQCcgKyAnZDRlMDEwNTE2MTU2YzJlZjJjY2Q5
NzRkNGFhMGFiZDllZjQ4YzY5OCcsCisgICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAn
L2Nocm9taXVtL3NyYy9pb3MnICsgJ0AnICsgJ2ViOWU4ZTA5ZGM0YjI4ZTY5MWNmZDcwMjQyYmE1
MGNlZWNiNmFiMjAnLAogICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRfaW9zJywKICAgfSwKICAg
J3NyYy90ZXN0aW5nJzoKLSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9zcmMv
dGVzdGluZycgKyAnQCcgKyAnNjc3ZTFlZjI2MjdjYTMyMjI2ZjVlODAxZWJlYzM5NjEzMDM1ODcz
YicsCisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vc3JjL3Rlc3RpbmcnICsg
J0AnICsgJzVhNzc2YmNhMDUwYWVkZmIwMjY5Y2RkODQwOGZmMDU1OWFjZGUyYWEnLAogICAnc3Jj
L3RoaXJkX3BhcnR5JzoKLSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9zcmMv
dGhpcmRfcGFydHknICsgJ0AnICsgJ2RjZmFjMWM1ZWRhNzNjOGZiZDA0NTFjOGU0MDQ1NGIyODRj
NjcxMTAnLAorICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy90aGlyZF9w
YXJ0eScgKyAnQCcgKyAnNzdmNmMxNjcyMGVmZjc3MjFiMGMwYjI0MzhjZTkxMjZmNTllMWYwYics
CiAgICdzcmMvdGhpcmRfcGFydHkvYW5kcm9pZF9uZGsnOiB7CiAgICAgICAndXJsJzogVmFyKCdj
aHJvbWl1bV9naXQnKSArICcvYW5kcm9pZF9uZGsuZ2l0JyArICdAJyArICc0ZTJjZWE0NDFiZmQ0
M2YwODYzZDE0ZjU3YjFlMTg0NDI2MGI5ODg0JywKICAgICAgICdjb25kaXRpb24nOiAnY2hlY2tv
dXRfYW5kcm9pZCcsCiAgIH0sCiAgICdzcmMvdGhpcmRfcGFydHkvYW5kcm9pZF90b29scyc6IHsK
LSAgICAndXJsJzogVmFyKCdjaHJvbWl1bV9naXQnKSArICcvYW5kcm9pZF90b29scy5naXQnICsg
J0AnICsgJzEzMDQ5OWUyNTI4NmY0ZDU2YWNhZmEyNTJmZWUwOWYzY2M1OTVjNDknLAorICAgICd1
cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9hbmRyb2lkX3Rvb2xzLmdpdCcgKyAnQCcgKyAn
NmZlY2FhNTQyZjczZGQ1YWVlZDE3MGQ5YTRjZjM0MDE1OWI0Mjk3NicsCiAgICAgJ2NvbmRpdGlv
bic6ICdjaGVja291dF9hbmRyb2lkJywKICAgfSwKKworICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJv
aWRfYnVpbGRfdG9vbHMvYWFwdDInOiB7CisgICAgICAncGFja2FnZXMnOiBbCisgICAgICAgICAg
eworICAgICAgICAgICAgICAncGFja2FnZSc6ICdjaHJvbWl1bS90aGlyZF9wYXJ0eS9hbmRyb2lk
X2J1aWxkX3Rvb2xzL2FhcHQyJywKKyAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAndmVyc2lvbjoz
LjMuMC1iZXRhMDEtNTAxMzAxMS1jcjAnLAorICAgICAgICAgIH0sCisgICAgICBdLAorICAgICAg
J2NvbmRpdGlvbic6ICdjaGVja291dF9hbmRyb2lkJywKKyAgICAgICdkZXBfdHlwZSc6ICdjaXBk
JywKKyAgfSwKKworICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJvaWRfYnVpbGRfdG9vbHMvYnVuZGxl
dG9vbCc6IHsKKyAgICAgICdwYWNrYWdlcyc6IFsKKyAgICAgICAgICB7CisgICAgICAgICAgICAg
ICdwYWNrYWdlJzogJ2Nocm9taXVtL3RoaXJkX3BhcnR5L2FuZHJvaWRfdG9vbHNfYnVuZGxldG9v
bCcsCisgICAgICAgICAgICAgICd2ZXJzaW9uJzogJ3ZlcnNpb246MC43LjEtY3IwJywKKyAgICAg
ICAgICB9LAorICAgICAgXSwKKyAgICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRfYW5kcm9pZCcs
CisgICAgICAnZGVwX3R5cGUnOiAnY2lwZCcsCisgIH0sCisKICAgJ3NyYy90aGlyZF9wYXJ0eS9h
dXRvL3NyYyc6IHsKICAgICAndXJsJzogVmFyKCdjaHJvbWl1bV9naXQnKSArICcvZXh0ZXJuYWwv
Z2l0aHViLmNvbS9nb29nbGUvYXV0by5naXQnICsgJ0AnICsgJzhhODFhODU4YWU3Yjc4YTFhZWY3
MWFjMzkwNWZhZGUwYmJkNjRlODInLAogICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRfYW5kcm9p
ZCcsCkBAIC04NCw3ICsxMDcsNyBAQCBkZXBzID0gewogICAnc3JjL3RoaXJkX3BhcnR5L2NvbG9y
YW1hL3NyYyc6CiAgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvZXh0ZXJuYWwvY29sb3JhbWEu
Z2l0JyArICdAJyArICc3OTk2MDRhMTA0MWU5YjNiYzVkMjc4OWVjYmQ3ZThkYjJlMThlNmI4JywK
ICAgJ3NyYy90aGlyZF9wYXJ0eS9kZXBvdF90b29scyc6Ci0gICAgVmFyKCdjaHJvbWl1bV9naXQn
KSArICcvY2hyb21pdW0vdG9vbHMvZGVwb3RfdG9vbHMuZ2l0JyArICdAJyArICc3MWUzYmU3YTUw
YzIxZmFlZWU5MWVkOTlhOGQ1YWRkZmI3NTk0ZTdjJywKKyAgICBWYXIoJ2Nocm9taXVtX2dpdCcp
ICsgJy9jaHJvbWl1bS90b29scy9kZXBvdF90b29scy5naXQnICsgJ0AnICsgJzQ0ZDRiMjkwODJm
MGQ4YmFjYWNkNjIzZjkxYzRkMjk2MzdiNGI5MDEnLAogICAnc3JjL3RoaXJkX3BhcnR5L2Vycm9y
cHJvbmUvbGliJzogewogICAgICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9t
aXVtL3RoaXJkX3BhcnR5L2Vycm9ycHJvbmUuZ2l0JyArICdAJyArICc5ODBkNDllODM5YWE0OTg0
MDE1ZWZlZDM0YjAxMzRkNGIyYzliNmQ3JywKICAgICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRf
YW5kcm9pZCcsCkBAIC0xMDEsNyArMTI0LDcgQEAgZGVwcyA9IHsKICAgICBWYXIoJ2Nocm9taXVt
X2dpdCcpICsgJy9leHRlcm5hbC9naXRodWIuY29tL2hhcmZidXp6L2hhcmZidXp6LmdpdCcgKyAn
QCcgKyBWYXIoJ2hhcmZidXp6X3JldmlzaW9uJyksCiAgICMgV2ViUlRDLW9ubHkgZGVwZW5kZW5j
eSAobm90IHByZXNlbnQgaW4gQ2hyb21pdW0pLgogICAnc3JjL3RoaXJkX3BhcnR5L2d0ZXN0LXBh
cmFsbGVsJzoKLSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9leHRlcm5hbC9naXRodWIuY29t
L2dvb2dsZS9ndGVzdC1wYXJhbGxlbCcgKyAnQCcgKyAnZmU3Zjc5MWYxNDc2OTM5MGQwYjEyNGVm
ODIzMWNkZTRkNTc1ZWIxMicsCisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvZXh0ZXJuYWwv
Z2l0aHViLmNvbS9nb29nbGUvZ3Rlc3QtcGFyYWxsZWwnICsgJ0AnICsgJ2U0NzIxODdkMTEyOWU1
MDg4OTBhYTIwYWM5MTRhZGVhYzJlN2Y3YjYnLAogICAnc3JjL3RoaXJkX3BhcnR5L2dvb2dsZS10
cnV0aCc6IHsKICAgICAgICdwYWNrYWdlcyc6IFsKICAgICAgICAgICB7CkBAIC0xMTMsOSArMTM2
LDkgQEAgZGVwcyA9IHsKICAgICAgICdkZXBfdHlwZSc6ICdjaXBkJywKICAgfSwKICAgJ3NyYy90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L3NyYyc6Ci0gICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcv
ZXh0ZXJuYWwvZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC5naXQnICsgJ0AnICsgJzJlNjg5
MjZhOWQ0OTI5ZTkyODkzNzNjZDQ5ZTQwZGRjYjlhNjI4ZjcnLAorICAgIFZhcignY2hyb21pdW1f
Z2l0JykgKyAnL2V4dGVybmFsL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QuZ2l0JyArICdA
JyArICc4NzlhYzA5MmZkZTBhMTllMWIzYTYxYjI1NDZiMmE0MjJiMTUyOGJjJywKICAgJ3NyYy90
aGlyZF9wYXJ0eS9pY3UnOiB7Ci0gICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2No
cm9taXVtL2RlcHMvaWN1LmdpdCcgKyAnQCcgKyAnYzUyYTJhMjUwZDZjNWY1Y2JkZDAxNWRmZjM2
YWY3YzVkMGFlMTE1MCcsCisgICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9t
aXVtL2RlcHMvaWN1LmdpdCcgKyAnQCcgKyAnNDA3YjM5MzAxZTcxMDA2YjY4YmQzOGU3NzBmMzVk
MzIzOThhN2IxNCcsCiAgIH0sCiAgICdzcmMvdGhpcmRfcGFydHkvanNyLTMwNS9zcmMnOiB7CiAg
ICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2V4dGVybmFsL2pzci0zMDUuZ2l0JyAr
ICdAJyArICc2NDJjNTA4MjM1NDcxZjcyMjBhZjZkNWRmMmQzMjEwZTNiZmMwOTE5JywKQEAgLTEz
NSw5ICsxNTgsOSBAQCBkZXBzID0gewogICAnc3JjL3RoaXJkX3BhcnR5L2xpYnNydHAnOgogICAg
IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL2RlcHMvbGlic3J0cC5naXQnICsgJ0An
ICsgJzY1MDYxMTcyMGVjYzIzZTBlNmIzMmIwZTMxMDBmOGI0ZGY5MTY5NmMnLAogICAnc3JjL3Ro
aXJkX3BhcnR5L2xpYnZweC9zb3VyY2UvbGlidnB4JzoKLSAgICBWYXIoJ2Nocm9taXVtX2dpdCcp
ICsgJy93ZWJtL2xpYnZweC5naXQnICsgJ0AnICsgICcyYmViNWM5ZjkxZTcxNjZjMmM5ZDAxYzk0
YmY4NDc2NzgxNTEyMWU0JywKKyAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy93ZWJtL2xpYnZw
eC5naXQnICsgJ0AnICsgICdhYzNlY2NkYzI0YmNjZWNlNWY3M2VlNjdiODgxNTRmM2JmNGE0ZTlh
JywKICAgJ3NyYy90aGlyZF9wYXJ0eS9saWJ5dXYnOgotICAgIFZhcignY2hyb21pdW1fZ2l0Jykg
KyAnL2xpYnl1di9saWJ5dXYuZ2l0JyArICdAJyArICc5YTA3MjE5ZGM4ZmJmMmI3N2UzOTBkMTZi
ZDI0ODA5NDQ0ODM4YTkxJywKKyAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9saWJ5dXYvbGli
eXV2LmdpdCcgKyAnQCcgKyAnYjM2Yzg2ZmRmZTc0NmQ3YmU5MDRjM2E1NjViMDQ3YjI0ZDU4MDg3
ZScsCiAgICdzcmMvdGhpcmRfcGFydHkvbHNzJzogewogICAgICd1cmwnOiBWYXIoJ2Nocm9taXVt
X2dpdCcpICsgJy9saW51eC1zeXNjYWxsLXN1cHBvcnQuZ2l0JyArICdAJyArIFZhcignbHNzX3Jl
dmlzaW9uJyksCiAgICAgJ2NvbmRpdGlvbic6ICdjaGVja291dF9hbmRyb2lkIG9yIGNoZWNrb3V0
X2xpbnV4JywKQEAgLTE0NiwxMyArMTY5LDIwIEBAIGRlcHMgPSB7CiAgICAgJ3VybCc6IFZhcign
Y2hyb21pdW1fZ2l0JykgKyAnL2V4dGVybmFsL21vY2tpdG8vbW9ja2l0by5naXQnICsgJ0AnICsg
JzA0YTJhMjg5YTQyMjJmODBhZDIwNzE3YzI1MTQ0OTgxMjEwZDJlYWMnLAogICAgICdjb25kaXRp
b24nOiAnY2hlY2tvdXRfYW5kcm9pZCcsCiAgIH0sCisKKyAgIyBVc2VkIGJ5IGJvcmluZ3NzbC4K
KyAgJ3NyYy90aGlyZF9wYXJ0eS9uYXNtJzogeworICAgICAgJ3VybCc6IFZhcignY2hyb21pdW1f
Z2l0JykgKyAnL2Nocm9taXVtL2RlcHMvbmFzbS5naXQnICsgJ0AnICsKKyAgICAgICdhMGE2OTUx
ZTI1OWJkMzQ3YzEzMzk2OTc0MDM0OGJiNWViYjQ2OGM0JworICB9LAorCiAgICdzcmMvdGhpcmRf
cGFydHkvb3BlbmgyNjQvc3JjJzoKICAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9leHRlcm5h
bC9naXRodWIuY29tL2Npc2NvL29wZW5oMjY0JyArICdAJyArICczYjUxZjE2YTRhNDFkZjcyOWY4
ZDY0N2YwM2U0OGM1ZjI3MjkxMWZmJywKICAgJ3NyYy90aGlyZF9wYXJ0eS9yOCc6IHsKICAgICAg
ICdwYWNrYWdlcyc6IFsKICAgICAgICAgICB7CiAgICAgICAgICAgICAgICdwYWNrYWdlJzogJ2No
cm9taXVtL3RoaXJkX3BhcnR5L3I4JywKLSAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAndmVyc2lv
bjoxLjIuNDgnLAorICAgICAgICAgICAgICAndmVyc2lvbic6ICd2ZXJzaW9uOjEuNC40LWNyMCcs
CiAgICAgICAgICAgfSwKICAgICAgIF0sCiAgICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2Fu
ZHJvaWQnLApAQCAtMTk1LDcgKzIyNSw3IEBAIGRlcHMgPSB7CiAgICdzcmMvdGhpcmRfcGFydHkv
eWFzbS9zb3VyY2UvcGF0Y2hlZC15YXNtJzoKICAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9j
aHJvbWl1bS9kZXBzL3lhc20vcGF0Y2hlZC15YXNtLmdpdCcgKyAnQCcgKyAnNzIwYjcwNTI0YTQ0
MjRiMTVmYzU3ZTgyMjYzNTY4YzhiYTA0OTZhZCcsCiAgICdzcmMvdG9vbHMnOgotICAgIFZhcign
Y2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy90b29scycgKyAnQCcgKyAnNzMxZjYzZjMx
MjZjZDZmNWNlYjJhYWZjZWFkZTgwODU3OTAwYTQwOScsCisgICAgVmFyKCdjaHJvbWl1bV9naXQn
KSArICcvY2hyb21pdW0vc3JjL3Rvb2xzJyArICdAJyArICdiNDdjNjMxNTg3OGVhYmQ3M2JmNzFj
MWFhMGNiZDliODE2NzE2Nzg5JywKICAgJ3NyYy90b29scy9zd2FybWluZ19jbGllbnQnOgogICAg
IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2luZnJhL2x1Y2kvY2xpZW50LXB5LmdpdCcgKyAnQCcg
KyAgVmFyKCdzd2FybWluZ19yZXZpc2lvbicpLAogCkBAIC04OTUsMTcgKzkyNSw2IEBAIGRlcHMg
PSB7CiAgICAgICAnZGVwX3R5cGUnOiAnY2lwZCcsCiAgIH0sCiAKLSAgJ3NyYy90aGlyZF9wYXJ0
eS9hbmRyb2lkX2RlcHMvbGlicy9jb21fZ29vZ2xlX2FuZHJvaWRfcGxheV9jb3JlJzogewotICAg
ICAgJ3BhY2thZ2VzJzogWwotICAgICAgICAgIHsKLSAgICAgICAgICAgICAgJ3BhY2thZ2UnOiAn
Y2hyb21pdW0vdGhpcmRfcGFydHkvYW5kcm9pZF9kZXBzL2xpYnMvY29tX2dvb2dsZV9hbmRyb2lk
X3BsYXlfY29yZScsCi0gICAgICAgICAgICAgICd2ZXJzaW9uJzogJ3ZlcnNpb246MS4zLjAtY3Iw
JywKLSAgICAgICAgICB9LAotICAgICAgXSwKLSAgICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRf
YW5kcm9pZCcsCi0gICAgICAnZGVwX3R5cGUnOiAnY2lwZCcsCi0gIH0sCi0KICAgJ3NyYy90aGly
ZF9wYXJ0eS9hbmRyb2lkX2RlcHMvbGlicy9jb21fZ29vZ2xlX2NvZGVfZmluZGJ1Z3NfanNyMzA1
JzogewogICAgICAgJ3BhY2thZ2VzJzogWwogICAgICAgICAgIHsKQEAgLTEwMTYsNiArMTAzNSwx
NyBAQCBkZXBzID0gewogICAgICAgJ2RlcF90eXBlJzogJ2NpcGQnLAogICB9LAogCisgICdzcmMv
dGhpcmRfcGFydHkvYW5kcm9pZF9kZXBzL2xpYnMvY29tX2dvb2dsZV9wcm90b2J1Zl9wcm90b2J1
Zl9saXRlJzogeworICAgICAgJ3BhY2thZ2VzJzogWworICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgJ3BhY2thZ2UnOiAnY2hyb21pdW0vdGhpcmRfcGFydHkvYW5kcm9pZF9kZXBzL2xpYnMvY29t
X2dvb2dsZV9wcm90b2J1Zl9wcm90b2J1Zl9saXRlJywKKyAgICAgICAgICAgICAgJ3ZlcnNpb24n
OiAndmVyc2lvbjozLjAuMS1jcjAnLAorICAgICAgICAgIH0sCisgICAgICBdLAorICAgICAgJ2Nv
bmRpdGlvbic6ICdjaGVja291dF9hbmRyb2lkJywKKyAgICAgICdkZXBfdHlwZSc6ICdjaXBkJywK
KyAgfSwKKwogICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJvaWRfZGVwcy9saWJzL2NvbV9zcXVhcmV1
cF9qYXZhcG9ldCc6IHsKICAgICAgICdwYWNrYWdlcyc6IFsKICAgICAgICAgICB7CkBAIC0xMzkz
LDggKzE0MjMsNiBAQCBob29rcyA9IFsKIHJlY3Vyc2VkZXBzID0gWwogICAjIGJ1aWxkdG9vbHMg
cHJvdmlkZXMgY2xhbmdfZm9ybWF0LCBsaWJjKyssIGFuZCBsaWJjKythYmkuCiAgICdzcmMvYnVp
bGR0b29scycsCi0gICMgYW5kcm9pZF90b29scyBtYW5hZ2VzIHRoZSBOREsuCi0gICdzcmMvdGhp
cmRfcGFydHkvYW5kcm9pZF90b29scycsCiBdCiAKICMgRGVmaW5lIHJ1bGVzIGZvciB3aGljaCBp
bmNsdWRlIHBhdGhzIGFyZSBhbGxvd2VkIGluIG91ciBzb3VyY2UuCkBAIC0xNDE2LDkgKzE0NDQs
MTIgQEAgaW5jbHVkZV9ydWxlcyA9IFsKICAgIit0ZXN0IiwKICAgIitydGNfdG9vbHMiLAogCi0g
ICMgQWJzZWlsIHdoaXRlbGlzdC4gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBhYnNlaWwtaW4td2Vi
cnRjLW1kLgorICAjIEFic2VpbCB3aGl0ZWxpc3QuIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggYWJz
ZWlsLWluLXdlYnJ0Yy5tZC4KICAgIithYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5oIiwK
ICAgIithYnNsL21lbW9yeS9tZW1vcnkuaCIsCisgICIrYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgi
LAorICAiK2Fic2wvc3RyaW5ncy9hc2NpaS5oIiwKKyAgIithYnNsL3N0cmluZ3MvbWF0Y2guaCIs
CiAgICIrYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiLAogICAiK2Fic2wvdHlwZXMvb3B0aW9u
YWwuaCIsCiAgICIrYWJzbC90eXBlcy92YXJpYW50LmgiLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvT1dORVJTIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvT1dORVJTCmluZGV4IGJmYTc4MDFiZDgyN2I4MjVl
NDMxZmEzNTlhZmRkZWNjOTBmMzQyMzQuLjI4OWI1YTNjN2VhMTgzOTMxOGJiNTJmZWU5NjM1NTE2
ZTg2MTU2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9PV05FUlMKQEAgLTQsMTkgKzQsMTQgQEAgbWZsb2RtYW5Ad2VicnRjLm9yZwogbmlrbGFz
LmVuYm9tQHdlYnJ0Yy5vcmcKIHBob2dsdW5kQHdlYnJ0Yy5vcmcKIHN0ZWZhbkB3ZWJydGMub3Jn
Ci10aW5hLmxlZ3JhbmRAd2VicnRjLm9yZwogdG9tbWlAd2VicnRjLm9yZwogcGVyLWZpbGUgLmdp
dGlnbm9yZT0qCiBwZXItZmlsZSAuZ249bWJvbmFkZWlAd2VicnRjLm9yZwogcGVyLWZpbGUgKi5n
bj1tYm9uYWRlaUB3ZWJydGMub3JnCiBwZXItZmlsZSAqLmduaT1tYm9uYWRlaUB3ZWJydGMub3Jn
Ci1wZXItZmlsZSAqLnB5PXBob2dsdW5kQHdlYnJ0Yy5vcmcKIHBlci1maWxlIEFVVEhPUlM9Kgot
cGVyLWZpbGUgQlVJTEQuZ249cGhvZ2x1bmRAd2VicnRjLm9yZwogcGVyLWZpbGUgREVQUz0qCiBw
ZXItZmlsZSBweWxpbnRyYz1waG9nbHVuZEB3ZWJydGMub3JnCi1wZXItZmlsZSBUSElSRF9QQVJU
WV9ERVBTPXBob2dsdW5kQHdlYnJ0Yy5vcmcKLXBlci1maWxlIFRISVJEX1BBUlRZX0RFUFM9dGl0
b3ZhcnRlbUB3ZWJydGMub3JnCiBwZXItZmlsZSBXQVRDSExJU1RTPSoKIHBlci1maWxlIGFic2Vp
bC1pbi13ZWJydGMubWQ9ZGFuaWxjaGFwQHdlYnJ0Yy5vcmcKIHBlci1maWxlIGFic2VpbC1pbi13
ZWJydGMubWQ9a3dpYmVyZ0B3ZWJydGMub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9QUkVTVUJNSVQucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9QUkVTVUJNSVQucHkKaW5kZXggYTdiNWNjMTRhNDhm
YTBiODA3MDI0NjJhYTljOTEwMWQ4YTAyNzU3MS4uMzRiNWFkZjc3NzgzODM5MGFhNTg4ZTk4NjUx
M2Y1MjBhMmUzMDVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvUFJFU1VCTUlULnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL1BSRVNVQk1JVC5weQpAQCAtNDgxLDcgKzQ4MSw4IEBAIGRlZiBDaGVj
a05vU3RyZWFtVXNhZ2VJc0FkZGVkKGlucHV0X2FwaSwgb3V0cHV0X2FwaSwKICAgZmlsZV9maWx0
ZXIgPSBsYW1iZGEgeDogKGlucHV0X2FwaS5GaWx0ZXJTb3VyY2VGaWxlKHgpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmQgc291cmNlX2ZpbGVfZmlsdGVyKHgpKQogICBmb3IgZiBpbiBp
bnB1dF9hcGkuQWZmZWN0ZWRTb3VyY2VGaWxlcyhmaWxlX2ZpbHRlcik6Ci0gICAgaWYgZi5Mb2Nh
bFBhdGgoKSA9PSAnUFJFU1VCTUlULnB5JzoKKyAgICAjIFVzYWdlIG9mIHN0cmluZ3N0cmVhbSBp
cyBhbGxvd2VkIHVuZGVyIGV4YW1wbGVzLy4KKyAgICBpZiBmLkxvY2FsUGF0aCgpID09ICdQUkVT
VUJNSVQucHknIG9yIGYuTG9jYWxQYXRoKCkuc3RhcnRzd2l0aCgnZXhhbXBsZXMnKToKICAgICAg
IGNvbnRpbnVlCiAgICAgZm9yIGxpbmVfbnVtLCBsaW5lIGluIGYuQ2hhbmdlZENvbnRlbnRzKCk6
CiAgICAgICBpZiAoKGluY2x1ZGVfcmUuc2VhcmNoKGxpbmUpIG9yIHVzYWdlX3JlLnNlYXJjaChs
aW5lKSkKQEAgLTg2Miw4ICs4NjMsODkgQEAgZGVmIENvbW1vbkNoZWNrcyhpbnB1dF9hcGksIG91
dHB1dF9hcGkpOgogICByZXN1bHRzLmV4dGVuZChDaGVja05vU3RyZWFtVXNhZ2VJc0FkZGVkKAog
ICAgICAgaW5wdXRfYXBpLCBvdXRwdXRfYXBpLCBub25fdGhpcmRfcGFydHlfc291cmNlcykpCiAg
IHJlc3VsdHMuZXh0ZW5kKENoZWNrQWRkZWREZXBzSGF2ZVRhcmdldEFwcHJvdmFscyhpbnB1dF9h
cGksIG91dHB1dF9hcGkpKQorICByZXN1bHRzLmV4dGVuZChDaGVja0FwaURlcHNGaWxlSXNVcFRv
RGF0ZShpbnB1dF9hcGksIG91dHB1dF9hcGkpKQorICByZXN1bHRzLmV4dGVuZChDaGVja0Fic2xN
ZW1vcnlJbmNsdWRlKAorICAgICAgaW5wdXRfYXBpLCBvdXRwdXRfYXBpLCBub25fdGhpcmRfcGFy
dHlfc291cmNlcykpCisgIHJldHVybiByZXN1bHRzCisKKworZGVmIENoZWNrQXBpRGVwc0ZpbGVJ
c1VwVG9EYXRlKGlucHV0X2FwaSwgb3V0cHV0X2FwaSk6CisgICIiIkNoZWNrIHRoYXQgJ2luY2x1
ZGVfcnVsZXMnIGluIGFwaS9ERVBTIGlzIHVwIHRvIGRhdGUuCisKKyAgVGhlIGZpbGUgYXBpL0RF
UFMgbXVzdCBiZSBrZXB0IHVwIHRvIGRhdGUgaW4gb3JkZXIgdG8gYXZvaWQgdG8gYXZvaWQgdG8K
KyAgaW5jbHVkZSBpbnRlcm5hbCBoZWFkZXIgZnJvbSBXZWJSVEMncyBhcGkvIGhlYWRlcnMuCisK
KyAgVGhpcyBjaGVjayBpcyBmb2N1c2VkIG9uIGVuc3VyaW5nIHRoYXQgJ2luY2x1ZGVfcnVsZXMn
IGNvbnRhaW5zIGEgZGVueQorICBydWxlIGZvciBlYWNoIHJvb3QgbGV2ZWwgZGlyZWN0b3J5LiBN
b3JlIGZvY3VzZWQgYWxsb3cgcnVsZXMgY2FuIGJlCisgIGFkZGVkIHRvICdzcGVjaWZpY19pbmNs
dWRlX3J1bGVzJy4KKyAgIiIiCisgIHJlc3VsdHMgPSBbXQorICBhcGlfZGVwcyA9IG9zLnBhdGgu
am9pbihpbnB1dF9hcGkuUHJlc3VibWl0TG9jYWxQYXRoKCksICdhcGknLCAnREVQUycpCisgIHdp
dGggb3BlbihhcGlfZGVwcykgYXMgZjoKKyAgICBkZXBzX2NvbnRlbnQgPSBfUGFyc2VEZXBzKGYu
cmVhZCgpKQorCisgIGluY2x1ZGVfcnVsZXMgPSBkZXBzX2NvbnRlbnQuZ2V0KCdpbmNsdWRlX3J1
bGVzJywgW10pCisKKyAgIyBPbmx5IGNoZWNrIHRvcCBsZXZlbCBkaXJlY3RvcmllcyBhZmZlY3Rl
ZCBieSB0aGUgY3VycmVudCBDTC4KKyAgZGlyc190b19jaGVjayA9IHNldCgpCisgIGZvciBmIGlu
IGlucHV0X2FwaS5BZmZlY3RlZEZpbGVzKCk6CisgICAgcGF0aF90b2tlbnMgPSBbdCBmb3IgdCBp
biBmLkxvY2FsUGF0aCgpLnNwbGl0KG9zLnNlcCkgaWYgdF0KKyAgICBpZiBsZW4ocGF0aF90b2tl
bnMpID4gMToKKyAgICAgIGlmIChwYXRoX3Rva2Vuc1swXSAhPSAnYXBpJyBhbmQKKyAgICAgICAg
ICBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihpbnB1dF9hcGkuUHJlc3VibWl0TG9jYWxQYXRo
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF90b2tlbnNbMF0p
KSk6CisgICAgICAgIGRpcnNfdG9fY2hlY2suYWRkKHBhdGhfdG9rZW5zWzBdKQorCisgIG1pc3Np
bmdfaW5jbHVkZV9ydWxlcyA9IHNldCgpCisgIGZvciBwIGluIGRpcnNfdG9fY2hlY2s6CisgICAg
cnVsZSA9ICctJXMnICUgcAorICAgIGlmIHJ1bGUgbm90IGluIGluY2x1ZGVfcnVsZXM6CisgICAg
ICBtaXNzaW5nX2luY2x1ZGVfcnVsZXMuYWRkKHJ1bGUpCisKKyAgaWYgbWlzc2luZ19pbmNsdWRl
X3J1bGVzOgorICAgIGVycm9yX21zZyA9IFsKKyAgICAgICdpbmNsdWRlX3J1bGVzID0gW1xuJywK
KyAgICAgICcgIC4uLlxuJywKKyAgICBdCisKKyAgICBmb3IgciBpbiBzb3J0ZWQobWlzc2luZ19p
bmNsdWRlX3J1bGVzKToKKyAgICAgIGVycm9yX21zZy5hcHBlbmQoJyAgIiVzIixcbicgJSBzdHIo
cikpCisKKyAgICBlcnJvcl9tc2cuYXBwZW5kKCcgIC4uLlxuJykKKyAgICBlcnJvcl9tc2cuYXBw
ZW5kKCddXG4nKQorCisgICAgcmVzdWx0cy5hcHBlbmQob3V0cHV0X2FwaS5QcmVzdWJtaXRFcnJv
cigKKyAgICAgICAgJ05ldyByb290IGxldmVsIGRpcmVjdG9yeSBkZXRlY3RlZCEgV2ViUlRDIGFw
aS8gaGVhZGVycyBzaG91bGQgJworICAgICAgICAnbm90ICNpbmNsdWRlIGhlYWRlcnMgZnJvbSBc
bicKKyAgICAgICAgJ3RoZSBuZXcgZGlyZWN0b3J5LCBzbyBwbGVhc2UgdXBkYXRlICJpbmNsdWRl
X3J1bGVzIiBpbiBmaWxlXG4nCisgICAgICAgICciJXMiLiBFeGFtcGxlOlxuJXNcbicgJSAoYXBp
X2RlcHMsICcnLmpvaW4oZXJyb3JfbXNnKSkpKQorCiAgIHJldHVybiByZXN1bHRzCiAKK2RlZiBD
aGVja0Fic2xNZW1vcnlJbmNsdWRlKGlucHV0X2FwaSwgb3V0cHV0X2FwaSwgc291cmNlX2ZpbGVf
ZmlsdGVyKToKKyAgcGF0dGVybiA9IGlucHV0X2FwaS5yZS5jb21waWxlKAorICAgICAgcideI2lu
Y2x1ZGVccyoiYWJzbC9tZW1vcnkvbWVtb3J5LmgiJywgaW5wdXRfYXBpLnJlLk1VTFRJTElORSkK
KyAgZmlsZV9maWx0ZXIgPSBsYW1iZGEgZjogKGYuTG9jYWxQYXRoKCkuZW5kc3dpdGgoKCcuY2Mn
LCAnLmgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzb3VyY2VfZmlsZV9maWx0
ZXIoZikpCisKKyAgZmlsZXMgPSBbXQorICBmb3IgZiBpbiBpbnB1dF9hcGkuQWZmZWN0ZWRGaWxl
cygKKyAgICAgIGluY2x1ZGVfZGVsZXRlcz1GYWxzZSwgZmlsZV9maWx0ZXI9ZmlsZV9maWx0ZXIp
OgorICAgIGNvbnRlbnRzID0gaW5wdXRfYXBpLlJlYWRGaWxlKGYpCisgICAgaWYgcGF0dGVybi5z
ZWFyY2goY29udGVudHMpOgorICAgICAgY29udGludWUKKyAgICBmb3IgXywgbGluZSBpbiBmLkNo
YW5nZWRDb250ZW50cygpOgorICAgICAgaWYgJ2Fic2w6Om1ha2VfdW5pcXVlJyBpbiBsaW5lOgor
ICAgICAgICBmaWxlcy5hcHBlbmQoZikKKyAgICAgICAgYnJlYWsKKworICBpZiBsZW4oZmlsZXMp
OgorICAgIHJldHVybiBbb3V0cHV0X2FwaS5QcmVzdWJtaXRFcnJvcigKKyAgICAgICAgJ1BsZWFz
ZSBpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIgaGVhZGVyIGZvcicKKyAgICAgICAgJyBh
YnNsOjptYWtlX3VuaXF1ZS5cblRoaXMgaGVhZGVyIG1heSBvciBtYXkgbm90IGJlIGluY2x1ZGVk
JworICAgICAgICAnIHRyYW5zaXRpdmVseSBkZXBlbmRzIG9uIHRoZSBDKysgc3RhbmRhcmQgdmVy
c2lvbi4nLAorICAgICAgICBmaWxlcyldCisgIHJldHVybiBbXQogCiBkZWYgQ2hlY2tDaGFuZ2VP
blVwbG9hZChpbnB1dF9hcGksIG91dHB1dF9hcGkpOgogICByZXN1bHRzID0gW10KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL1dBVENITElTVFMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9XQVRDSExJU1RTCmlu
ZGV4IGRjOGQ0OGM1MWY5NWJjOGM0M2NiZjBiZGIyZTZiYjBkYTE4ZjYyZTYuLjQyNjBiZjkxYmJj
NTk5NzMwZTA0Y2Q1MzI0ZTQ3NTQxOWQ4NDE5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL1dBVENITElTVFMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvV0FUQ0hMSVNUUwpAQCAtNzksNiArNzksOSBA
QAogICAgICdiaXRyYXRlX2NvbnRyb2xsZXInOiB7CiAgICAgICAnZmlsZXBhdGgnOiAnbW9kdWxl
cy9iaXRyYXRlX2NvbnRyb2xsZXIvLionCiAgICAgfSwKKyAgICAnY29uZ2VzdGlvbl9jb250cm9s
bGVyJzogeworICAgICAgJ2ZpbGVwYXRoJzogJ21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
Ly4qJworICAgIH0sCiAgICAgJ3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcic6IHsKICAgICAgICdm
aWxlcGF0aCc6ICdtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci8uKicKICAgICB9LApA
QCAtOTcsOCArMTAwLDggQEAKICAgfSwKIAogICAnV0FUQ0hMSVNUUyc6IHsKLSAgICAndGhpc19m
aWxlJzogWycnXSwKLSAgICAnYWxsX3dlYnJ0Yyc6IFsndHRlcnJpYmVycnlAbW96aWxsYS5jb20n
XSwKKyAgICAndGhpc19maWxlJzogW10sCisgICAgJ2FsbF93ZWJydGMnOiBbXSwKICAgICAncm9v
dF9maWxlcyc6IFsnbmlrbGFzLmVuYm9tQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAgICAg
ICdwZWFoQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAgICAgICdxaWFuZy5sdUBpbnRlbC5j
b20nLApAQCAtMTA2LDE2ICsxMDksMTQgQEAKICAgICAnYnVpbGRfZmlsZXMnOiBbJ21ib25hZGVp
QHdlYnJ0Yy5vcmcnXSwKICAgICAnY29tbW9uX2F1ZGlvJzogWydhbGVzc2lvYkB3ZWJydGMub3Jn
JywKICAgICAgICAgICAgICAgICAgICAgICdhbHVlYnNAd2VicnRjLm9yZycsCi0gICAgICAgICAg
ICAgICAgICAgICAnYW5kcmV3QHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAgICAgICAgJ2F1
ZGlvLXRlYW1AYWdvcmEuaW8nLAotICAgICAgICAgICAgICAgICAgICAgJ2Jqb3JudkB3ZWJydGMu
b3JnJywKICAgICAgICAgICAgICAgICAgICAgICdtaW55dWVAd2VicnRjLm9yZycsCiAgICAgICAg
ICAgICAgICAgICAgICAncGVhaEB3ZWJydGMub3JnJ10sCi0gICAgJ2F1ZGlvJzogWydzb2xlbmJl
cmdAd2VicnRjLm9yZycsCi0gICAgICAgICAgICAgICd0aW5hLmxlZ3JhbmRAd2VicnRjLm9yZydd
LAorICAgICdhdWRpbyc6IFsnc29sZW5iZXJnQHdlYnJ0Yy5vcmcnXSwKICAgICAnYXBpJzogWydr
d2liZXJnQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgJ3NvbGVuYmVyZ0B3ZWJydGMub3JnJ10s
Ci0gICAgJ2Jhc2UnOiBbJ2t3aWJlcmdAd2VicnRjLm9yZyddLAorICAgICdiYXNlJzogWydrd2li
ZXJnQHdlYnJ0Yy5vcmcnLAorICAgICAgICAgICAgICdiZW53cmlnaHRAd2VicnRjLm9yZyddLAog
ICAgICdjYWxsJzogWydtZmxvZG1hbkB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAnc29sZW5i
ZXJnQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICdzdGVmYW5Ad2VicnRjLm9yZyddLApAQCAt
MTM3LDggKzEzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAnaGVucmlrLmx1bmRpbkB3ZWJy
dGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICdrd2liZXJnQHdlYnJ0Yy5vcmcnLAogICAg
ICAgICAgICAgICAgICAgICAgJ21pbnl1ZUB3ZWJydGMub3JnJywKLSAgICAgICAgICAgICAgICAg
ICAgICdwZWFoQHdlYnJ0Yy5vcmcnLAotICAgICAgICAgICAgICAgICAgICAgJ3RpbmEubGVncmFu
ZEB3ZWJydGMub3JnJ10sCisgICAgICAgICAgICAgICAgICAgICAncGVhaEB3ZWJydGMub3JnJ10s
CiAgICAgJ25ldGVxJzogWydhbGVzc2lvYkB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgJ2F1
ZGlvLXRlYW1AYWdvcmEuaW8nLAogICAgICAgICAgICAgICAnaGVucmlrLmx1bmRpbkB3ZWJydGMu
b3JnJywKQEAgLTE0OSw5ICsxNDksNyBAQAogICAgICdhdWRpb19wcm9jZXNzaW5nJzogWydhbGVs
b2lAd2VicnRjLm9yZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsZXNzaW9iQHdlYnJ0
Yy5vcmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICdhbHVlYnNAd2VicnRjLm9yZycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZHJld0B3ZWJydGMub3JnJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAnYXVkaW8tdGVhbUBhZ29yYS5pbycsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgJ2Jqb3JudkB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVu
cmlrLmx1bmRpbkB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAna3dpYmVy
Z0B3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlueXVlQHdlYnJ0Yy5v
cmcnLApAQCAtMTY2LDExICsxNjQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnemhl
bmd6aG9uZ2hvdUBhZ29yYS5pbyddLAogICAgICdiaXRyYXRlX2NvbnRyb2xsZXInOiBbJ21mbG9k
bWFuQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZWZhbkB3ZWJy
dGMub3JnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcnRlQHdlYnJ0Yy5vcmcnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3podWFuZ3plc2VuQGFnb3JhLmlvJ10sCisgICAg
J2Nvbmdlc3Rpb25fY29udHJvbGxlcic6IFsnc3J0ZUB3ZWJydGMub3JnJ10sCiAgICAgJ3JlbW90
ZV9iaXRyYXRlX2VzdGltYXRvcic6IFsnbWZsb2RtYW5Ad2VicnRjLm9yZycsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnc3RlZmFuQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3podWFuZ3plc2VuQGFnb3JhLmlvJ10sCiAgICAgJ3BhY2lu
Zyc6IFsnbWZsb2RtYW5Ad2VicnRjLm9yZycsCisgICAgICAgICAgICAgICAnc3J0ZUB3ZWJydGMu
b3JnJywKICAgICAgICAgICAgICAgICdzdGVmYW5Ad2VicnRjLm9yZycsCiAgICAgICAgICAgICAg
ICAnemh1YW5nemVzZW5AYWdvcmEuaW8nXSwKICAgICAncnRwX3J0Y3AnOiBbJ21mbG9kbWFuQHdl
YnJ0Yy5vcmcnLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYWJzZWlsLWluLXdlYnJ0Yy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2Fic2VpbC1pbi13ZWJydGMubWQKaW5kZXggMDRhZThkMjhkZTEyYjc0
Y2NiYTVjZDUxYTZlNTIxZjM4NDMyOWQ0Ny4uMTA3NWFhOWI3OTYyMDE1ZTJlOTczYzM1NTBjNWU2
OWI1NWRhMjVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYWJzZWlsLWluLXdlYnJ0Yy5tZAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hYnNlaWwtaW4td2VicnRjLm1kCkBAIC0xNSw2ICsxNSwxMCBA
QCBhZGRzIHRoZSBmaXJzdCB1c2UuCiAqIGBhYnNsOjptYWtlX3VuaXF1ZWAgYW5kIGBhYnNsOjpX
cmFwVW5pcXVlYAogKiBgYWJzbDo6b3B0aW9uYWxgIGFuZCByZWxhdGVkIHN0dWZmIGZyb20gYGFi
c2wvdHlwZXMvb3B0aW9uYWwuaGAuCiAqIGBhYnNsOjpzdHJpbmdfdmlld2AKKyogVGhlIGZ1bmN0
aW9ucyBpbiBgYWJzbC9zdHJpbmdzL2FzY2lpLmhgIGFuZCBgYWJzbC9zdHJpbmdzL21hdGNoLmhg
CisqIGBhYnNsOjppc190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlYCwKKyAgYGFic2w6Omlz
X3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGVgLCBhbmQKKyAgYGFic2w6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGVgIGZyb20gYGFic2wvbWV0YS90eXBlX3RyYWl0cy5oYC4KICogYGFic2w6OnZh
cmlhbnRgIGFuZCByZWxhdGVkIHN0dWZmIGZyb20gYGFic2wvdHlwZXMvdmFyaWFudC5oYC4KIAog
IyMgKipEaXNhbGxvd2VkKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9CVUlMRC5nbgppbmRleCA1YjIxMzM0ZmU5ODU5ZTRlYjRkMDRh
ZmZiMzQ2MjUzZjg5YjdjN2JlLi5mZTI3YzdiODg4MGI4ZjJlYmExNTVmMzllZjdmYjQ5YTM2Mjli
YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL0JVSUxELmduCkBAIC00NCw2ICs0NCwzMyBAQCBydGNfc291cmNlX3NldCgiY2Fs
bGZhY3RvcnlfYXBpIikgewogICBdCiB9CiAKK3J0Y19zdGF0aWNfbGlicmFyeSgiY3JlYXRlX3Bl
ZXJjb25uZWN0aW9uX2ZhY3RvcnkiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIGFsbG93
X3BvaXNvbiA9IFsgInNvZnR3YXJlX3ZpZGVvX2NvZGVjcyIgXQorICBzb3VyY2VzID0gWworICAg
ICJjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5jYyIsCisgICAgImNyZWF0ZV9wZWVyY29u
bmVjdGlvbl9mYWN0b3J5LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjYWxsZmFjdG9yeV9h
cGkiLAorICAgICI6ZmVjX2NvbnRyb2xsZXJfYXBpIiwKKyAgICAiOmxpYmppbmdsZV9wZWVyY29u
bmVjdGlvbl9hcGkiLAorICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKKyAgICAi
Li4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2ltcGxfYmFzZSIsCisgICAgIi4uL21lZGlhOnJ0Y19h
dWRpb192aWRlbyIsCisgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZV9h
cGkiLAorICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKKyAgICAiLi4vcGM6
cGVlcmNvbm5lY3Rpb24iLAorICAgICIuLi9ydGNfYmFzZTpwdHJfdXRpbCIsCisgICAgIi4uL3J0
Y19iYXNlOnJ0Y19iYXNlIiwKKyAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAor
ICAgICJhdWRpbzphdWRpb19taXhlcl9hcGkiLAorICAgICJhdWRpb19jb2RlY3M6YXVkaW9fY29k
ZWNzX2FwaSIsCisgICAgInRyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAorICAgICJ2aWRlb19j
b2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCisgIF0KK30KKwogcnRjX3N0YXRpY19saWJyYXJ5KCJs
aWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQog
ICBjZmxhZ3MgPSBbXQpAQCAtNTIsNiArNzksOCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImxpYmpp
bmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiKSB7CiAgICAgImJpdHJhdGVfY29uc3RyYWludHMuaCIs
CiAgICAgImNhbmRpZGF0ZS5jYyIsCiAgICAgImNhbmRpZGF0ZS5oIiwKKyAgICAiY3J5cHRvL2Ny
eXB0b29wdGlvbnMuY2MiLAorICAgICJjcnlwdG8vY3J5cHRvb3B0aW9ucy5oIiwKICAgICAiY3J5
cHRvL2ZyYW1lZGVjcnlwdG9yaW50ZXJmYWNlLmgiLAogICAgICJjcnlwdG8vZnJhbWVlbmNyeXB0
b3JpbnRlcmZhY2UuaCIsCiAgICAgImNyeXB0b3BhcmFtcy5oIiwKQEAgLTYzLDYgKzkyLDcgQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIikgewogICAg
ICJqc2VwaWNlY2FuZGlkYXRlLmNjIiwKICAgICAianNlcGljZWNhbmRpZGF0ZS5oIiwKICAgICAi
anNlcHNlc3Npb25kZXNjcmlwdGlvbi5oIiwKKyAgICAibWVkaWFfdHJhbnNwb3J0X2ludGVyZmFj
ZS5jYyIsCiAgICAgIm1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIsCiAgICAgIm1lZGlhY29u
c3RyYWludHNpbnRlcmZhY2UuY2MiLAogICAgICJtZWRpYWNvbnN0cmFpbnRzaW50ZXJmYWNlLmgi
LApAQCAtMTA5LDYgKzEzOSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgibGliamluZ2xlX3BlZXJj
b25uZWN0aW9uX2FwaSIpIHsKICAgICAiYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAog
ICAgICJ0cmFuc3BvcnQ6Yml0cmF0ZV9zZXR0aW5ncyIsCiAgICAgInRyYW5zcG9ydDpuZXR3b3Jr
X2NvbnRyb2wiLAorICAgICJ2aWRlbzplbmNvZGVkX2ltYWdlIiwKICAgICAidmlkZW86dmlkZW9f
ZnJhbWUiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25h
bCIsCiAKQEAgLTEyNCw2ICsxNTUsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImxpYmppbmdsZV9w
ZWVyY29ubmVjdGlvbl9hcGkiKSB7CiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi9ydGNfYmFzZTpzdHJpbmd1
dGlscyIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgXQogCiAgIGlm
IChpc19uYWNsKSB7CkBAIC0xMzIsNiArMTY0LDEzIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgibGli
amluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIpIHsKICAgfQogfQogCitydGNfc291cmNlX3NldCgi
c2NvcGVkX3JlZnB0ciIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgc291cmNlcyA9IFsK
KyAgICAic2NvcGVkX3JlZnB0ci5oIiwKKyAgXQorfQorCiBydGNfc291cmNlX3NldCgidmlkZW9f
cXVhbGl0eV90ZXN0X2ZpeHR1cmVfYXBpIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICB0
ZXN0b25seSA9IHRydWUKQEAgLTE2NCw2ICsyMDMsNyBAQCBydGNfc291cmNlX3NldCgidGVzdF9k
ZXBlbmRlbmN5X2ZhY3RvcnkiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjp2aWRlb19xdWFsaXR5X3Rl
c3RfZml4dHVyZV9hcGkiLAogICAgICIuLi9ydGNfYmFzZTp0aHJlYWRfY2hlY2tlciIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KICAgaWYgKCFidWls
ZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CiAgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBm
cm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgpAQCAt
MjAzLDM0ICsyNDMsMTUgQEAgcnRjX3NvdXJjZV9zZXQoImxpYmppbmdsZV9sb2dnaW5nX2FwaSIp
IHsKIHJ0Y19zb3VyY2Vfc2V0KCJvcnRjX2FwaSIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0K
ICAgc291cmNlcyA9IFsKLSAgICAib3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmNjIiwKLSAgICAib3J0
Yy9tZWRpYWRlc2NyaXB0aW9uLmgiLAotICAgICJvcnRjL29ydGNmYWN0b3J5aW50ZXJmYWNlLmgi
LAotICAgICJvcnRjL29ydGNydHByZWNlaXZlcmludGVyZmFjZS5oIiwKLSAgICAib3J0Yy9vcnRj
cnRwc2VuZGVyaW50ZXJmYWNlLmgiLAogICAgICJvcnRjL3BhY2tldHRyYW5zcG9ydGludGVyZmFj
ZS5oIiwKLSAgICAib3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyaW50ZXJmYWNlLmgiLAogICAg
ICJvcnRjL3J0cHRyYW5zcG9ydGludGVyZmFjZS5oIiwKLSAgICAib3J0Yy9zZXNzaW9uZGVzY3Jp
cHRpb24uY2MiLAotICAgICJvcnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5oIiwKICAgICAib3J0Yy9z
cnRwdHJhbnNwb3J0aW50ZXJmYWNlLmgiLAotICAgICJvcnRjL3VkcHRyYW5zcG9ydGludGVyZmFj
ZS5oIiwKICAgXQogCi0gICMgRm9yIG1lZGlhc3RyZWFtaW50ZXJmYWNlLmgsIGV0Yy4KLSAgIyBU
T0RPKGRlYWRiZWVmKTogQ3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZvciB0aGUgY29tbW9uIHRo
aW5ncyBPUlRDIGFuZAotICAjIFBlZXJDb25uZWN0aW9uIGNvZGUgc2hhcmVzLCBzbyB0aGF0IG9y
dGNfYXBpIGNhbiBkZXBlbmQgb24gdGhhdCBpbnN0ZWFkIG9mCi0gICMgbGliamluZ2xlX3BlZXJj
b25uZWN0aW9uX2FwaS4KICAgZGVwcyA9IFsKICAgICAiOmxpYmppbmdsZV9wZWVyY29ubmVjdGlv
bl9hcGkiLAotICAgICIuLjp3ZWJydGNfY29tbW9uIiwKLSAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jh
c2UiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIs
CiAgIF0KLSAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7Ci0gICAgIyBT
dXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mud2Vi
cnRjLm9yZy8xNjMpLgotICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZp
Zy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCi0gIH0KIH0KIAogcnRjX3NvdXJjZV9zZXQo
InJ0Y19zdGF0c19hcGkiKSB7CkBAIC0yNDYsNiArMjY3LDcgQEAgcnRjX3NvdXJjZV9zZXQoInJ0
Y19zdGF0c19hcGkiKSB7CiAgIGRlcHMgPSBbCiAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAg
ICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vcnRjX2Jhc2Uvc3lz
dGVtOnJ0Y19leHBvcnQiLAogICBdCiB9CiAKQEAgLTI3MCw2ICsyOTIsMTcgQEAgcnRjX3NvdXJj
ZV9zZXQoInRyYW5zcG9ydF9hcGkiKSB7CiAgIF0KIH0KIAorcnRjX3NvdXJjZV9zZXQoImJpdHJh
dGVfYWxsb2NhdGlvbiIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgc291cmNlcyA9IFsK
KyAgICAiY2FsbC9iaXRyYXRlX2FsbG9jYXRpb24uaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAi
dW5pdHM6ZGF0YV9yYXRlIiwKKyAgICAidW5pdHM6dGltZV9kZWx0YSIsCisgIF0KK30KKwogcnRj
X3NvdXJjZV9zZXQoInNpbXVsYXRlZF9uZXR3b3JrX2FwaSIpIHsKICAgdmlzaWJpbGl0eSA9IFsg
IioiIF0KICAgc291cmNlcyA9IFsKQEAgLTM0Nyw2ICszODAsNyBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICAgIF0KIAogICAgICAgZGVwcyA9IFsKKyAgICAgICAgIi4uL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nOmF1ZGlvcHJvY19mX2ltcGwiLAogICAgICAgXQpAQCAtNDQ2LDExICs0ODAsMzMgQEAgaWYg
KHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgXQogICB9CiAKLSAgcnRjX3NvdXJjZV9zZXQoImZh
a2VfZnJhbWVfY3J5cHRvIikgeworICBydGNfc291cmNlX3NldCgibW9ja19mcmFtZV9lbmNyeXB0
b3IiKSB7CisgICAgdGVzdG9ubHkgPSB0cnVlCisgICAgc291cmNlcyA9IFsKKyAgICAgICJ0ZXN0
L21vY2tfZnJhbWVfZW5jcnlwdG9yLmNjIiwKKyAgICAgICJ0ZXN0L21vY2tfZnJhbWVfZW5jcnlw
dG9yLmgiLAorICAgIF0KKyAgICBkZXBzID0gWworICAgICAgIjpsaWJqaW5nbGVfcGVlcmNvbm5l
Y3Rpb25fYXBpIiwKKyAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgXQorICB9CisK
KyAgcnRjX3NvdXJjZV9zZXQoIm1vY2tfZnJhbWVfZGVjcnlwdG9yIikgeworICAgIHRlc3Rvbmx5
ID0gdHJ1ZQorICAgIHNvdXJjZXMgPSBbCisgICAgICAidGVzdC9tb2NrX2ZyYW1lX2RlY3J5cHRv
ci5jYyIsCisgICAgICAidGVzdC9tb2NrX2ZyYW1lX2RlY3J5cHRvci5oIiwKKyAgICBdCisgICAg
ZGVwcyA9IFsKKyAgICAgICI6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCisgICAgICAi
Li4vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgIF0KKyAgfQorCisgIHJ0Y19zb3VyY2Vfc2V0KCJm
YWtlX2ZyYW1lX2VuY3J5cHRvciIpIHsKICAgICB0ZXN0b25seSA9IHRydWUKICAgICBzb3VyY2Vz
ID0gWwotICAgICAgInRlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3IuY2MiLAotICAgICAgInRlc3Qv
ZmFrZV9mcmFtZV9kZWNyeXB0b3IuaCIsCiAgICAgICAidGVzdC9mYWtlX2ZyYW1lX2VuY3J5cHRv
ci5jYyIsCiAgICAgICAidGVzdC9mYWtlX2ZyYW1lX2VuY3J5cHRvci5oIiwKICAgICBdCkBAIC00
NjMsNiArNTE5LDIxIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIF0KICAgfQogCisg
IHJ0Y19zb3VyY2Vfc2V0KCJmYWtlX2ZyYW1lX2RlY3J5cHRvciIpIHsKKyAgICB0ZXN0b25seSA9
IHRydWUKKyAgICBzb3VyY2VzID0gWworICAgICAgInRlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3Iu
Y2MiLAorICAgICAgInRlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3IuaCIsCisgICAgXQorICAgIGRl
cHMgPSBbCisgICAgICAiOmFycmF5X3ZpZXciLAorICAgICAgIjpsaWJqaW5nbGVfcGVlcmNvbm5l
Y3Rpb25fYXBpIiwKKyAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwKKyAgICAgICIuLi9ydGNfYmFz
ZTpjaGVja3MiLAorICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICBd
CisgIH0KKwogICBydGNfc291cmNlX3NldCgibW9ja19wZWVyY29ubmVjdGlvbmludGVyZmFjZSIp
IHsKICAgICB0ZXN0b25seSA9IHRydWUKICAgICBzb3VyY2VzID0gWwpAQCAtNTAwLDYgKzU3MSwx
OCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBdCiAgIH0KIAorICBydGNfc291cmNl
X3NldCgibW9ja192aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IikgeworICAgIHRlc3Rv
bmx5ID0gdHJ1ZQorICAgIHNvdXJjZXMgPSBbCisgICAgICAidGVzdC9tb2NrX3ZpZGVvX2JpdHJh
dGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIsCisgICAgXQorCisgICAgZGVwcyA9IFsKKyAgICAgICIu
Li9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCisgICAgICAiLi4v
dGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgIF0KKyAgfQorCiAgIHJ0Y19zb3VyY2Vfc2V0KCJtb2Nr
X3ZpZGVvX2NvZGVjX2ZhY3RvcnkiKSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAgICAgc291cmNl
cyA9IFsKQEAgLTUxMywxNSArNTk2LDcyIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAg
IF0KICAgfQogCisgIHJ0Y19zb3VyY2Vfc2V0KCJtb2NrX3ZpZGVvX2RlY29kZXIiKSB7CisgICAg
dmlzaWJpbGl0eSA9IFsgIioiIF0KKworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAgIHNvdXJjZXMg
PSBbCisgICAgICAidGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuY2MiLAorICAgICAgInRlc3QvbW9j
a192aWRlb19kZWNvZGVyLmgiLAorICAgIF0KKworICAgIGRlcHMgPSBbCisgICAgICAiLi4vYXBp
L3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKKyAgICAgICIuLi90ZXN0OnRlc3Rfc3Vw
cG9ydCIsCisgICAgXQorICB9CisKKyAgcnRjX3NvdXJjZV9zZXQoIm1vY2tfdmlkZW9fZW5jb2Rl
ciIpIHsKKyAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorCisgICAgdGVzdG9ubHkgPSB0cnVlCisg
ICAgc291cmNlcyA9IFsKKyAgICAgICJ0ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5jYyIsCisgICAg
ICAidGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIuaCIsCisgICAgXQorCisgICAgZGVwcyA9IFsKKyAg
ICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAorICAgICAgIi4uL3Rl
c3Q6dGVzdF9zdXBwb3J0IiwKKyAgICBdCisgIH0KKworICBydGNfc291cmNlX3NldCgiZmFrZV9t
ZWRpYV90cmFuc3BvcnQiKSB7CisgICAgdGVzdG9ubHkgPSB0cnVlCisKKyAgICBzb3VyY2VzID0g
WworICAgICAgInRlc3QvZmFrZV9tZWRpYV90cmFuc3BvcnQuaCIsCisgICAgXQorCisgICAgZGVw
cyA9IFsKKyAgICAgICI6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCisgICAgICAiLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9t
ZW1vcnk6bWVtb3J5IiwKKyAgICBdCisgIH0KKworICBydGNfc291cmNlX3NldCgibG9vcGJhY2tf
bWVkaWFfdHJhbnNwb3J0IikgeworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorCisgICAgc291cmNlcyA9
IFsKKyAgICAgICJ0ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydC5oIiwKKyAgICBdCisKKyAg
ICBkZXBzID0gWworICAgICAgIjpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKKyAgICAg
ICIuLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKKyAg
ICBdCisgIH0KKwogICBydGNfc291cmNlX3NldCgicnRjX2FwaV91bml0dGVzdHMiKSB7CiAgICAg
dGVzdG9ubHkgPSB0cnVlCiAKICAgICBzb3VyY2VzID0gWwogICAgICAgImFycmF5X3ZpZXdfdW5p
dHRlc3QuY2MiLAotICAgICAgIm9ydGMvbWVkaWFkZXNjcmlwdGlvbl91bml0dGVzdC5jYyIsCi0g
ICAgICAib3J0Yy9zZXNzaW9uZGVzY3JpcHRpb25fdW5pdHRlc3QuY2MiLAogICAgICAgInJ0Y2Vy
cm9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICJydHBwYXJhbWV0ZXJzX3VuaXR0ZXN0LmNjIiwKKyAg
ICAgICJ0ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydF91bml0dGVzdC5jYyIsCiAgICAgXQog
CiAgICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CkBAIC01MzIsMTAg
KzY3MiwxMCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBkZXBzID0gWwogICAgICAg
IjphcnJheV92aWV3IiwKICAgICAgICI6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCi0g
ICAgICAiOm9ydGNfYXBpIiwKKyAgICAgICI6bG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0IiwKICAg
ICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICAgIi4uL3J0Y19iYXNlOmd1bml0X2hlbHBl
cnMiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi9y
dGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBv
cnQiLAogICAgICAgInVuaXRzOnVuaXRzX3VuaXR0ZXN0cyIsCiAgICAgXQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL0RFUFMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvREVQUwppbmRleCA4NDdj
Y2UyNTlmOWFlNjNhMDIwZTBkNjJhMjQyMDFiY2E3MjQ1N2EyLi4yODZkOGQxZTFlNmM3NzhiNDA0
NThmNzdkMDY1ZTg4MjIxMmE4YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvREVQUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvREVQUwpAQCAtMSwxNSArMSw1NSBAQAorIyBUaGlzIGlz
IHN1cHBvc2VkIHRvIGJlIGEgY29tcGxldGUgbGlzdCBvZiB0b3AtbGV2ZWwgZGlyZWN0b3JpZXMs
CisjIGV4Y2VwdGluZyBvbmx5IGFwaS8gaXRzZWxmLgogaW5jbHVkZV9ydWxlcyA9IFsKLSAgIit0
aGlyZF9wYXJ0eS9saWJ5dXYiLAotICAiK2NvbW1vbl92aWRlbyIsCi0gICIrbWVkaWEiLAotICAi
K3AycCIsCi0gICIrcGMiLAotICAiK2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9n
X2ZhY3RvcnlfaW50ZXJmYWNlLmgiLAotICAiK21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNs
dWRlIiwKLSAgIitzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZSIsCisgICItYXVkaW8iLAorICAiLWJh
c2UiLAorICAiLWJ1aWxkIiwKKyAgIi1idWlsZHRvb2xzIiwKKyAgIi1idWlsZF9vdmVycmlkZXMi
LAorICAiLWNhbGwiLAorICAiLWNvbW1vbl9hdWRpbyIsCisgICItY29tbW9uX3ZpZGVvIiwKKyAg
Ii1kYXRhIiwKKyAgIi1leGFtcGxlcyIsCisgICItaW9zIiwKKyAgIi1pbmZyYSIsCisgICItbG9n
Z2luZyIsCisgICItbWVkaWEiLAorICAiLW1vZHVsZXMiLAorICAiLW91dCIsCisgICItcDJwIiwK
KyAgIi1wYyIsCisgICItcmVzb3VyY2VzIiwKKyAgIi1ydGNfYmFzZSIsCisgICItcnRjX3Rvb2xz
IiwKKyAgIi1zZGsiLAorICAiLXN0YXRzIiwKKyAgIi1zdHlsZS1ndWlkZSIsCisgICItc3lzdGVt
X3dyYXBwZXJzIiwKKyAgIi10ZXN0IiwKKyAgIi10ZXN0aW5nIiwKKyAgIi10aGlyZF9wYXJ0eSIs
CisgICItdG9vbHMiLAorICAiLXRvb2xzX3dlYnJ0YyIsCisgICItdmlkZW8iLAorICAiLWV4dGVy
bmFsL3dlYnJ0Yy93ZWJydGMiLCAgIyBBbmRyb2lkIHBsYXRmb3JtIGJ1aWxkLgorICAiLWxpYnl1
diIsCisgICItY29tbW9uX3R5cGVzLmgiLAorICAiLVdlYlJUQyIsCiBdCiAKIHNwZWNpZmljX2lu
Y2x1ZGVfcnVsZXMgPSB7CisgICMgU29tZSBpbnRlcm5hbCBoZWFkZXJzIGFyZSBhbGxvd2VkIGV2
ZW4gaW4gQVBJIGhlYWRlcnM6CisgICIuKlwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2NoZWNrcy5o
IiwKKyAgICAiK3J0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiLAorICAgICIrcnRjX2Jhc2Uv
dW5pdHMvdW5pdF9iYXNlLmgiLAorICBdLAorCisgICJhcnJheV92aWV3XC5oIjogWworICAgICIr
cnRjX2Jhc2UvdHlwZV90cmFpdHMuaCIsCisgIF0sCisKICAgIyBOZWVkZWQgYmVjYXVzZSBBdWRp
b0VuY29kZXJPcHVzIGlzIGluIHRoZSB3cm9uZyBwbGFjZSBmb3IKICAgIyBiYWNrd2FyZHMgY29t
cGF0aWJpbHR5IHJlYXNvbnMuIFNlZQogICAjIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC93
ZWJydGMvaXNzdWVzL2RldGFpbD9pZD03ODQ3CkBAIC0xNywxMyArNTcsMjUyIEBAIHNwZWNpZmlj
X2luY2x1ZGVfcnVsZXMgPSB7CiAgICAgIittb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1
cy9hdWRpb19lbmNvZGVyX29wdXMuaCIsCiAgIF0sCiAKLSAgIyBXZSBhbGxvdyAuY2MgZmlsZXMg
aW4gd2VicnRjL2FwaS8gdG8gI2luY2x1ZGUgYSBidW5jaCBvZiBzdHVmZgotICAjIHRoYXQncyBv
ZmYtbGltaXRzIGZvciB0aGUgLmggZmlsZXMuIFRoYXQncyBiZWNhdXNlIC5oIGZpbGVzIGxlYWsK
LSAgIyB0aGVpciAjaW5jbHVkZXMgdG8gd2hvZXZlcidzICNpbmNsdWRpbmcgdGhlbSwgYnV0IC5j
YyBmaWxlcyBkbyBub3QKLSAgIyBzaW5jZSBubyBvbmUgI2luY2x1ZGVzIHRoZW0uCisgICJhc3lu
Y3Jlc29sdmVyZmFjdG9yeVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2FzeW5jcmVzb2x2ZXJpbnRl
cmZhY2UuaCIsCisgIF0sCisKKyAgImNhbmRpZGF0ZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL25l
dHdvcmtfY29uc3RhbnRzLmgiLAorICAgICIrcnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oIiwKKyAg
XSwKKworICAiY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnlcLmgiOiBbCisgICAgIitydGNf
YmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwKKworICAiZGF0YWNoYW5uZWxpbnRlcmZhY2Vc
LmgiOiBbCisgICAgIitydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIiwKKyAgICAiK3J0Y19i
YXNlL3JlZmNvdW50LmgiLAorICBdLAorCisgICJkdG1mc2VuZGVyaW50ZXJmYWNlXC5oIjogWwor
ICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgIF0sCisKKyAgImZlY19jb250cm9sbGVyXC5o
IjogWworICAgICIrbW9kdWxlcy9pbmNsdWRlL21vZHVsZV9mZWNfdHlwZXMuaCIsCisgIF0sCisK
KyAgImpzZXBcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgXSwKKworICAi
anNlcGljZWNhbmRpZGF0ZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIsCisgIF0sCisKKyAgImpzZXBzZXNzaW9uZGVzY3JpcHRpb25cLmgiOiBbCisgICAgIitydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiLAorICBdLAorCisgICJtZWRpYXN0cmVhbWludGVyZmFj
ZVwuaCI6IFsKKyAgICAiK21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3By
b2Nlc3Npbmdfc3RhdGlzdGljcy5oIiwKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAorICAg
ICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIsCisgIF0sCisKKyAgIm1lZGlhX3RyYW5zcG9y
dF9pbnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIiwg
ICMgQXMgdXNlZCBieSBkYXRhY2hhbm5lbGludGVyZmFjZS5oCisgICAgIitydGNfYmFzZS9uZXR3
b3Jrcm91dGUuaCIKKyAgXSwKKworICAicGVlcmNvbm5lY3Rpb25mYWN0b3J5cHJveHlcLmgiOiBb
CisgICAgIitydGNfYmFzZS9iaW5kLmgiLAorICBdLAorCisgICJyZWZjb3VudGVkYmFzZVwuaCI6
IFsKKyAgICAiK3J0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIsCisgICAgIitydGNfYmFzZS9y
ZWZjb3VudC5oIiwKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50ZXIuaCIsCisgIF0sCisKKyAgInJ0
Y2Vycm9yXC5oIjogWworICAgICIrcnRjX2Jhc2UvbG9nZ2luZy5oIiwKKyAgXSwKKworICAicnRw
cmVjZWl2ZXJpbnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAg
ICAiK3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiLAorICBdLAorCisgICJydHBzZW5kZXJpbnRl
cmZhY2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgICAiK3J0Y19iYXNl
L3Njb3BlZF9yZWZfcHRyLmgiLAorICBdLAorCisgICJydHB0cmFuc2NlaXZlcmludGVyZmFjZVwu
aCI6IFsKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAorICBdLAorCisgICJzZXRyZW1vdGVk
ZXNjcmlwdGlvbm9ic2VydmVyaW50ZXJmYWNlXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291
bnQuaCIsCisgIF0sCisKKyAgInN0YXRzdHlwZXNcLmgiOiBbCisgICAgIitydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiLAorICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgICAgIitydGNf
YmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgICAiK3J0Y19iYXNlL3N0cmluZ2VuY29kZS5oIiwK
KyAgICAiK3J0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiLAorICBdLAorCisgICJ1bWFtZXRyaWNz
XC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgIF0sCisKKyAgImF1ZGlvX2Zy
YW1lXC5oIjogWworICAgICIrcnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIiwKKyAgXSwKKwor
ICAiYXVkaW9fbWl4ZXJcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgXSwK
KworICAiYXVkaW9fZGVjb2RlclwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2J1ZmZlci5oIiwKKyAg
ICAiK3J0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIsCisgIF0sCisKKyAgImF1ZGlvX2RlY29k
ZXJfZmFjdG9yeVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAorICBdLAorCisg
ICJhdWRpb19kZWNvZGVyX2ZhY3RvcnlfdGVtcGxhdGVcLmgiOiBbCisgICAgIitydGNfYmFzZS9y
ZWZjb3VudGVkb2JqZWN0LmgiLAorICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIsCisg
IF0sCisKKyAgImF1ZGlvX2VuY29kZXJcLmgiOiBbCisgICAgIitydGNfYmFzZS9idWZmZXIuaCIs
CisgICAgIitydGNfYmFzZS9kZXByZWNhdGlvbi5oIiwKKyAgXSwKKworICAiYXVkaW9fZW5jb2Rl
cl9mYWN0b3J5XC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgIF0sCisKKyAg
ImF1ZGlvX2VuY29kZXJfZmFjdG9yeV90ZW1wbGF0ZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3Jl
ZmNvdW50ZWRvYmplY3QuaCIsCisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAg
XSwKKworICAiYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnlcLmgiOiBbCisgICAgIitydGNf
YmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwKKworICAiYnVpbHRpbl9hdWRpb19lbmNvZGVy
X2ZhY3RvcnlcLmgiOiBbCisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwK
KworICAiZnJhbWVkZWNyeXB0b3JpbnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZj
b3VudC5oIiwKKyAgXSwKKworICAiZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2VcLmgiOiBbCisgICAg
IitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgXSwKKworICAib3J0Y2ZhY3RvcnlpbnRlcmZhY2Vc
LmgiOiBbCisgICAgIitydGNfYmFzZS9uZXR3b3JrLmgiLAorICAgICIrcnRjX2Jhc2Uvc2NvcGVk
X3JlZl9wdHIuaCIsCisgICAgIitydGNfYmFzZS90aHJlYWQuaCIsCisgIF0sCisKKyAgInVkcHRy
YW5zcG9ydGludGVyZmFjZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIs
CisgIF0sCisKKyAgInJ0Y3N0YXRzY29sbGVjdG9yY2FsbGJhY2tcLmgiOiBbCisgICAgIitydGNf
YmFzZS9yZWZjb3VudC5oIiwKKyAgICAiK3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiLAorICBd
LAorCisgICJydGNzdGF0c3JlcG9ydFwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50Lmgi
LAorICAgICIrcnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIiwKKyAgICAiK3J0Y19iYXNlL3Nj
b3BlZF9yZWZfcHRyLmgiLAorICBdLAorCisgICJhdWRpb3Byb2NfZmxvYXRcLmgiOiBbCisgICAg
Iittb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiLAor
ICBdLAorCisgICJmYWtlX2ZyYW1lX2RlY3J5cHRvclwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3Jl
ZmNvdW50ZWRvYmplY3QuaCIsCisgIF0sCisKKyAgImZha2VfZnJhbWVfZW5jcnlwdG9yXC5oIjog
WworICAgICIrcnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIiwKKyAgXSwKKworICAiZmFrZWNv
bnN0cmFpbnRzXC5oIjogWworICAgICIrcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiLAorICBdLAor
CisgICJtb2NrLipcLmgiOiBbCisgICAgIit0ZXN0L2dtb2NrLmgiLAorICBdLAorCisgICJzaW11
bGF0ZWRfbmV0d29ya1wuaCI6IFsKKyAgICAiK3J0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIiwK
KyAgICAiK3J0Y19iYXNlL3JhbmRvbS5oIiwKKyAgICAiK3J0Y19iYXNlL3RocmVhZF9hbm5vdGF0
aW9ucy5oIiwKKyAgXSwKKworICAidGVzdF9kZXBlbmRlbmN5X2ZhY3RvcnlcLmgiOiBbCisgICAg
IitydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIiwKKyAgXSwKKworICAidmlkZW9jb2RlY190ZXN0
X2ZpeHR1cmVcLmgiOiBbCisgICAgIittb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVv
X2NvZGVjX2ludGVyZmFjZS5oIgorICBdLAorCisgICJpMDEwX2J1ZmZlclwuaCI6IFsKKyAgICAi
K3J0Y19iYXNlL21lbW9yeS9hbGlnbmVkX21hbGxvYy5oIgorICBdLAorCisgICJpNDIwX2J1ZmZl
clwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL21lbW9yeS9hbGlnbmVkX21hbGxvYy5oIiwKKyAgXSwK
KworICAidmlkZW9fZnJhbWVfYnVmZmVyXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQu
aCIsCisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwKKworICAidmlkZW9f
dGltaW5nXC5oIjogWworICAgICIrcnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5o
IiwKKyAgXSwKKworICAidmlkZW9fZW5jb2Rlcl9jb25maWdcLmgiOiBbCisgICAgIitydGNfYmFz
ZS9yZWZjb3VudC5oIiwKKyAgICAiK3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiLAorICBdLAor
CisgICMgLmNjIGZpbGVzIGluIGFwaS8gc2hvdWxkIG5vdCBiZSByZXN0cmljdGVkIGluIHdoYXQg
dGhleSBjYW4gI2luY2x1ZGUsCisgICMgc28gd2UgcmUtYWRkIGFsbCB0aGUgdG9wLWxldmVsIGRp
cmVjdG9yaWVzIGhlcmUuIChUaGF0J3MgYmVjYXVzZSAuaAorICAjIGZpbGVzIGxlYWsgdGhlaXIg
I2luY2x1ZGVzIHRvIHdob2V2ZXIncyAjaW5jbHVkaW5nIHRoZW0sIGJ1dCAuY2MgZmlsZXMKKyAg
IyBkbyBub3Qgc2luY2Ugbm8gb25lICNpbmNsdWRlcyB0aGVtLikKICAgIi4qXC5jYyI6IFsKLSAg
ICAiK21vZHVsZXMvYXVkaW9fY29kaW5nIiwKLSAgICAiK21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
ZyIsCi0gICAgIittb2R1bGVzL3ZpZGVvX2NvZGluZyIsCisgICAgIithdWRpbyIsCisgICAgIitj
YWxsIiwKKyAgICAiK2NvbW1vbl9hdWRpbyIsCisgICAgIitjb21tb25fdmlkZW8iLAorICAgICIr
ZXhhbXBsZXMiLAorICAgICIrbG9nZ2luZyIsCisgICAgIittZWRpYSIsCisgICAgIittb2R1bGVz
IiwKKyAgICAiK3AycCIsCisgICAgIitwYyIsCisgICAgIitydGNfYmFzZSIsCisgICAgIitydGNf
dG9vbHMiLAorICAgICIrc2RrIiwKKyAgICAiK3N0YXRzIiwKKyAgICAiK3N5c3RlbV93cmFwcGVy
cyIsCisgICAgIit0ZXN0IiwKKyAgICAiK3Rvb2xzIiwKKyAgICAiK3Rvb2xzX3dlYnJ0YyIsCisg
ICAgIit2aWRlbyIsCisgICAgIit0aGlyZF9wYXJ0eSIsCiAgIF0sCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvT1dORVJTIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL09XTkVSUwppbmRleCA1
OTNkZTIzMGQzNzg3OWEyNTk4ZjU4NTlkZjJkNDMyYWFjZmIzMmIyLi4xYWU1YzY0NmUyMzE3YWJh
ZTM1NDY0YmE4M2ZhM2ZmZTBiZTEyYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvT1dORVJTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9PV05FUlMKQEAgLTEzLDMgKzEzLDEwIEBAIHBl
ci1maWxlIHBlZXJjb25uZWN0aW9uKj1oYm9zQHdlYnJ0Yy5vcmcKIAogcGVyLWZpbGUgKi5nbj1w
aG9nbHVuZEB3ZWJydGMub3JnCiBwZXItZmlsZSAqLmduaT1waG9nbHVuZEB3ZWJydGMub3JnCisK
K3Blci1maWxlIERFUFM9bWJvbmFkZWlAd2VicnRjLm9yZworcGVyLWZpbGUgREVQUz1rd2liZXJn
QHdlYnJ0Yy5vcmcKKworcGVyLWZpbGUgbWVkaWFfdHJhbnNwb3J0Kj1zdWtoYW5vdkB3ZWJydGMu
b3JnCitwZXItZmlsZSBtZWRpYV90cmFuc3BvcnQqPXBzbGFAd2VicnRjLm9yZworcGVyLWZpbGUg
bWVkaWFfdHJhbnNwb3J0Kj1tZWxsZW1Ad2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL0JVSUxELmduIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL0JVSUxELmdu
CmluZGV4IDI4NmE1YTZmMWM2Y2Y1MjNmNDIwZmU0ZmY3YzkyN2I0MzliYzUwMTUuLmI2NmJlNzYz
NDMxZjcyYjMzZjAwMGY1NDFkY2MwYzFkYTE4Mzg5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9CVUlMRC5nbgorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vQlVJTEQu
Z24KQEAgLTM5LDYgKzM5LDI3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhZWMzX2NvbmZpZyIpIHsKICAg
ICAiZWNob19jYW5jZWxsZXIzX2NvbmZpZy5jYyIsCiAgICAgImVjaG9fY2FuY2VsbGVyM19jb25m
aWcuaCIsCiAgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAg
ICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFz
ZTpzYWZlX21pbm1heCIsCisgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwK
KyAgXQorfQorCitydGNfc291cmNlX3NldCgiYWVjM19jb25maWdfanNvbiIpIHsKKyAgdmlzaWJp
bGl0eSA9IFsgIioiIF0KKyAgc291cmNlcyA9IFsKKyAgICAiZWNob19jYW5jZWxsZXIzX2NvbmZp
Z19qc29uLmNjIiwKKyAgICAiZWNob19jYW5jZWxsZXIzX2NvbmZpZ19qc29uLmgiLAorICBdCisg
IGRlcHMgPSBbCisgICAgIjphZWMzX2NvbmZpZyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2pzb24iLAorICAgICIuLi8u
Li9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3M6c3RyaW5ncyIsCisgIF0KIH0KIAogcnRjX3NvdXJjZV9zZXQoImFl
YzNfZmFjdG9yeSIpIHsKQEAgLTU0LDYgKzc1LDcgQEAgcnRjX3NvdXJjZV9zZXQoImFlYzNfZmFj
dG9yeSIpIHsKICAgICAiOmVjaG9fY29udHJvbCIsCiAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNl
bGxlcjNfY29uZmlnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuY2MKaW5kZXggM2IwM2QxM2MxY2E1
MWQ5MTNlOWVlODQyOTg1OWE1ZTMxNTI5YzExMC4uM2ViMmE4ZDJhMDA5YjhmZTFhNGVmODcwZTc2
ZGNlNDcwOTE4OTI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2Fu
Y2VsbGVyM19jb25maWcuY2MKQEAgLTksNyArOSwzNiBAQAogICovCiAjaW5jbHVkZSAiYXBpL2F1
ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxjbWF0aD4KKworI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewor
bmFtZXNwYWNlIHsKK2Jvb2wgTGltaXQoZmxvYXQqIHZhbHVlLCBmbG9hdCBtaW4sIGZsb2F0IG1h
eCkgeworICBmbG9hdCBjbGFtcGVkID0gcnRjOjpTYWZlQ2xhbXAoKnZhbHVlLCBtaW4sIG1heCk7
CisgIGNsYW1wZWQgPSBzdGQ6OmlzZmluaXRlKGNsYW1wZWQpID8gY2xhbXBlZCA6IG1pbjsKKyAg
Ym9vbCByZXMgPSAqdmFsdWUgPT0gY2xhbXBlZDsKKyAgKnZhbHVlID0gY2xhbXBlZDsKKyAgcmV0
dXJuIHJlczsKK30KKworYm9vbCBMaW1pdChzaXplX3QqIHZhbHVlLCBzaXplX3QgbWluLCBzaXpl
X3QgbWF4KSB7CisgIHNpemVfdCBjbGFtcGVkID0gcnRjOjpTYWZlQ2xhbXAoKnZhbHVlLCBtaW4s
IG1heCk7CisgIGJvb2wgcmVzID0gKnZhbHVlID09IGNsYW1wZWQ7CisgICp2YWx1ZSA9IGNsYW1w
ZWQ7CisgIHJldHVybiByZXM7Cit9CisKK2Jvb2wgTGltaXQoaW50KiB2YWx1ZSwgaW50IG1pbiwg
aW50IG1heCkgeworICBpbnQgY2xhbXBlZCA9IHJ0Yzo6U2FmZUNsYW1wKCp2YWx1ZSwgbWluLCBt
YXgpOworICBib29sIHJlcyA9ICp2YWx1ZSA9PSBjbGFtcGVkOworICAqdmFsdWUgPSBjbGFtcGVk
OworICByZXR1cm4gcmVzOworfQorfSAgLy8gbmFtZXNwYWNlCiAKIEVjaG9DYW5jZWxsZXIzQ29u
ZmlnOjpFY2hvQ2FuY2VsbGVyM0NvbmZpZygpID0gZGVmYXVsdDsKIEVjaG9DYW5jZWxsZXIzQ29u
ZmlnOjpFY2hvQ2FuY2VsbGVyM0NvbmZpZyhjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgZSkg
PQpAQCAtMTgsOSArNDcsNiBAQCBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RGVsYXk6OkRlbGF5KCkg
PSBkZWZhdWx0OwogRWNob0NhbmNlbGxlcjNDb25maWc6OkRlbGF5OjpEZWxheShjb25zdCBFY2hv
Q2FuY2VsbGVyM0NvbmZpZzo6RGVsYXkmIGUpID0KICAgICBkZWZhdWx0OwogCi1FY2hvQ2FuY2Vs
bGVyM0NvbmZpZzo6TWFzazo6TWFzaygpID0gZGVmYXVsdDsKLUVjaG9DYW5jZWxsZXIzQ29uZmln
OjpNYXNrOjpNYXNrKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpNYXNrJiBtKSA9IGRlZmF1
bHQ7Ci0KIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpFY2hvTW9kZWw6OkVjaG9Nb2RlbCgpID0gZGVm
YXVsdDsKIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpFY2hvTW9kZWw6OkVjaG9Nb2RlbCgKICAgICBj
b25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RWNob01vZGVsJiBlKSA9IGRlZmF1bHQ7CkBAIC01
MSw0ICs3NywxNzkgQEAgRWNob0NhbmNlbGxlcjNDb25maWc6OlN1cHByZXNzb3I6OlR1bmluZzo6
VHVuaW5nKE1hc2tpbmdUaHJlc2hvbGRzIG1hc2tfbGYsCiBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6
U3VwcHJlc3Nvcjo6VHVuaW5nOjpUdW5pbmcoCiAgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25m
aWc6OlN1cHByZXNzb3I6OlR1bmluZyYgZSkgPSBkZWZhdWx0OwogCitib29sIEVjaG9DYW5jZWxs
ZXIzQ29uZmlnOjpWYWxpZGF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZyogY29uZmlnKSB7CisgIFJU
Q19EQ0hFQ0soY29uZmlnKTsKKyAgRWNob0NhbmNlbGxlcjNDb25maWcqIGMgPSBjb25maWc7Cisg
IGJvb2wgcmVzID0gdHJ1ZTsKKworICBpZiAoYy0+ZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3Ig
IT0gNCAmJgorICAgICAgYy0+ZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IgIT0gOCkgeworICAg
IGMtPmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9yID0gNDsKKyAgICByZXMgPSBmYWxzZTsKKyAg
fQorICBpZiAoYy0+ZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tzIDw9IDEgJiYKKyAgICAgIGMt
PmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MgPT0gMSkgeworICAgIGMtPmRlbGF5Lmh5
c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MgPSAwOworICAgIHJlcyA9IGZhbHNlOworICB9CisgIHJl
cyA9IHJlcyAmIExpbWl0KCZjLT5kZWxheS5kZWZhdWx0X2RlbGF5LCAwLCA1MDAwKTsKKyAgcmVz
ID0gcmVzICYgTGltaXQoJmMtPmRlbGF5Lm51bV9maWx0ZXJzLCAwLCA1MDAwKTsKKyAgcmVzID0g
cmVzICYgTGltaXQoJmMtPmRlbGF5LmFwaV9jYWxsX2ppdHRlcl9ibG9ja3MsIDEsIDUwMDApOwor
ICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZGVsYXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3Ms
IDAsIDUwMDApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZGVsYXkuZGVsYXlfaGVhZHJvb21f
YmxvY2tzLCAwLCA1MDAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmRlbGF5Lmh5c3RlcmVz
aXNfbGltaXRfMV9ibG9ja3MsIDAsIDUwMDApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZGVs
YXkuaHlzdGVyZXNpc19saW1pdF8yX2Jsb2NrcywgMCwgNTAwMCk7CisgIHJlcyA9IHJlcyAmIExp
bWl0KCZjLT5kZWxheS5za2V3X2h5c3RlcmVzaXNfYmxvY2tzLCAwLCA1MDAwKTsKKyAgcmVzID0g
cmVzICYgTGltaXQoJmMtPmRlbGF5LmZpeGVkX2NhcHR1cmVfZGVsYXlfc2FtcGxlcywgMCwgNTAw
MCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5kZWxheS5kZWxheV9lc3RpbWF0ZV9zbW9vdGhp
bmcsIDAuZiwgMS5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmRlbGF5LmRlbGF5X2NhbmRp
ZGF0ZV9kZXRlY3Rpb25fdGhyZXNob2xkLCAwLmYsIDEuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0
KCZjLT5kZWxheS5kZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcy5pbml0aWFsLCAxLCAyNTApOwor
ICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZGVsYXkuZGVsYXlfc2VsZWN0aW9uX3RocmVzaG9sZHMu
Y29udmVyZ2VkLCAxLCAyNTApOworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIubWFp
bi5sZW5ndGhfYmxvY2tzLCAxLCA1MCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIu
bWFpbi5sZWFrYWdlX2NvbnZlcmdlZCwgMC5mLCAxMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1p
dCgmYy0+ZmlsdGVyLm1haW4ubGVha2FnZV9kaXZlcmdlZCwgMC5mLCAxMDAwLmYpOworICByZXMg
PSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW4uZXJyb3JfZmxvb3IsIDAuZiwgMTAwMC5mKTsK
KyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5tYWluLmVycm9yX2NlaWwsIDAuZiwgMTAw
MDAwMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW4ubm9pc2VfZ2F0
ZSwgMC5mLCAxMDAwMDAwMDAuZik7CisKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5t
YWluX2luaXRpYWwubGVuZ3RoX2Jsb2NrcywgMSwgNTApOworICByZXMgPSByZXMgJiBMaW1pdCgm
Yy0+ZmlsdGVyLm1haW5faW5pdGlhbC5sZWFrYWdlX2NvbnZlcmdlZCwgMC5mLCAxMDAwLmYpOwor
ICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW5faW5pdGlhbC5sZWFrYWdlX2RpdmVy
Z2VkLCAwLmYsIDEwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIubWFpbl9p
bml0aWFsLmVycm9yX2Zsb29yLCAwLmYsIDEwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZj
LT5maWx0ZXIubWFpbl9pbml0aWFsLmVycm9yX2NlaWwsIDAuZiwgMTAwMDAwMDAwLmYpOworICBy
ZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW5faW5pdGlhbC5ub2lzZV9nYXRlLCAwLmYs
IDEwMDAwMDAwMC5mKTsKKworICBpZiAoYy0+ZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2NrcyA8IGMt
PmZpbHRlci5tYWluX2luaXRpYWwubGVuZ3RoX2Jsb2NrcykgeworICAgIGMtPmZpbHRlci5tYWlu
X2luaXRpYWwubGVuZ3RoX2Jsb2NrcyA9IGMtPmZpbHRlci5tYWluLmxlbmd0aF9ibG9ja3M7Cisg
ICAgcmVzID0gZmFsc2U7CisgIH0KKworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLnNo
YWRvdy5sZW5ndGhfYmxvY2tzLCAxLCA1MCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0
ZXIuc2hhZG93LnJhdGUsIDAuZiwgMS5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRl
ci5zaGFkb3cubm9pc2VfZ2F0ZSwgMC5mLCAxMDAwMDAwMDAuZik7CisKKyAgcmVzID0gcmVzICYg
TGltaXQoJmMtPmZpbHRlci5zaGFkb3dfaW5pdGlhbC5sZW5ndGhfYmxvY2tzLCAxLCA1MCk7Cisg
IHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIuc2hhZG93X2luaXRpYWwucmF0ZSwgMC5mLCAx
LmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLnNoYWRvd19pbml0aWFsLm5vaXNl
X2dhdGUsIDAuZiwgMTAwMDAwMDAwLmYpOworCisgIGlmIChjLT5maWx0ZXIuc2hhZG93Lmxlbmd0
aF9ibG9ja3MgPCBjLT5maWx0ZXIuc2hhZG93X2luaXRpYWwubGVuZ3RoX2Jsb2NrcykgeworICAg
IGMtPmZpbHRlci5zaGFkb3dfaW5pdGlhbC5sZW5ndGhfYmxvY2tzID0gYy0+ZmlsdGVyLnNoYWRv
dy5sZW5ndGhfYmxvY2tzOworICAgIHJlcyA9IGZhbHNlOworICB9CisKKyAgcmVzID0gcmVzICYg
TGltaXQoJmMtPmZpbHRlci5jb25maWdfY2hhbmdlX2R1cmF0aW9uX2Jsb2NrcywgMCwgMTAwMDAw
KTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5pbml0aWFsX3N0YXRlX3NlY29uZHMs
IDAuZiwgMTAwLmYpOworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lcmxlLm1pbiwgMS5mLCAx
MDAwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lcmxlLm1heF9sLCAxLmYsIDEwMDAw
MC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVybGUubWF4X2gsIDEuZiwgMTAwMDAwLmYp
OworICBpZiAoYy0+ZXJsZS5taW4gPiBjLT5lcmxlLm1heF9sIHx8IGMtPmVybGUubWluID4gYy0+
ZXJsZS5tYXhfaCkgeworICAgIGMtPmVybGUubWluID0gc3RkOjptaW4oYy0+ZXJsZS5tYXhfbCwg
Yy0+ZXJsZS5tYXhfaCk7CisgICAgcmVzID0gZmFsc2U7CisgIH0KKyAgcmVzID0gcmVzICYgTGlt
aXQoJmMtPmVybGUubnVtX3NlY3Rpb25zLCAxLCBjLT5maWx0ZXIubWFpbi5sZW5ndGhfYmxvY2tz
KTsKKworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZXBfc3RyZW5ndGgubGYsIDAuZiwgMTAwMDAw
MC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVwX3N0cmVuZ3RoLm1mLCAwLmYsIDEwMDAw
MDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lcF9zdHJlbmd0aC5oZiwgMC5mLCAxMDAw
MDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4s
IC0xLmYsIDEuZik7CisKKyAgcmVzID0KKyAgICAgIHJlcyAmIExpbWl0KCZjLT5lY2hvX2F1ZGli
aWxpdHkubG93X3JlbmRlcl9saW1pdCwgMC5mLCAzMjc2OC5mICogMzI3NjguZik7CisgIHJlcyA9
IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5lY2hvX2F1ZGliaWxpdHkubm9ybWFsX3JlbmRlcl9s
aW1pdCwgMC5mLCAzMjc2OC5mICogMzI3NjguZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5l
Y2hvX2F1ZGliaWxpdHkuZmxvb3JfcG93ZXIsIDAuZiwgMzI3NjguZiAqIDMyNzY4LmYpOworICBy
ZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19hdWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhyZXNob2xk
X2xmLCAwLmYsCisgICAgICAgICAgICAgICAgICAgIDMyNzY4LmYgKiAzMjc2OC5mKTsKKyAgcmVz
ID0gcmVzICYgTGltaXQoJmMtPmVjaG9fYXVkaWJpbGl0eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9t
ZiwgMC5mLAorICAgICAgICAgICAgICAgICAgICAzMjc2OC5mICogMzI3NjguZik7CisgIHJlcyA9
IHJlcyAmIExpbWl0KCZjLT5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfaGYs
IDAuZiwKKyAgICAgICAgICAgICAgICAgICAgMzI3NjguZiAqIDMyNzY4LmYpOworCisgIHJlcyA9
IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5yZW5kZXJfbGV2ZWxzLmFjdGl2ZV9yZW5kZXJfbGlt
aXQsIDAuZiwgMzI3NjguZiAqIDMyNzY4LmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+cmVu
ZGVyX2xldmVscy5wb29yX2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0LCAwLmYsCisgICAgICAgICAg
ICAgICAgICAgIDMyNzY4LmYgKiAzMjc2OC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPnJl
bmRlcl9sZXZlbHMucG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdF9kczgsIDAuZiwKKyAgICAg
ICAgICAgICAgICAgICAgMzI3NjguZiAqIDMyNzY4LmYpOworCisgIHJlcyA9CisgICAgICByZXMg
JiBMaW1pdCgmYy0+ZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuaW5pdGlhbF9nYWlu
LCAwLmYsIDEuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX3JlbW92YWxfY29udHJv
bC5nYWluX3JhbXB1cC5maXJzdF9ub25femVyb19nYWluLAorICAgICAgICAgICAgICAgICAgICAw
LmYsIDEuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX3JlbW92YWxfY29udHJvbC5n
YWluX3JhbXB1cC5ub25femVyb19nYWluX2Jsb2NrcywKKyAgICAgICAgICAgICAgICAgICAgMCwg
MTAwMDAwKTsKKyAgcmVzID0gcmVzICYKKyAgICAgICAgTGltaXQoJmMtPmVjaG9fcmVtb3ZhbF9j
b250cm9sLmdhaW5fcmFtcHVwLmZ1bGxfZ2Fpbl9ibG9ja3MsIDAsIDEwMDAwMCk7CisKKyAgcmVz
ID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9kZWwubm9pc2VfZmxvb3JfaG9sZCwgMCwgMTAwMCk7
CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX21vZGVsLm1pbl9ub2lzZV9mbG9vcl9wb3dl
ciwgMCwgMjAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9kZWwuc3Rh
dGlvbmFyeV9nYXRlX3Nsb3BlLCAwLCAxMDAwMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgm
Yy0+ZWNob19tb2RlbC5ub2lzZV9nYXRlX3Bvd2VyLCAwLCAxMDAwMDAwLmYpOworICByZXMgPSBy
ZXMgJiBMaW1pdCgmYy0+ZWNob19tb2RlbC5ub2lzZV9nYXRlX3Nsb3BlLCAwLCAxMDAwMDAwLmYp
OworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19tb2RlbC5yZW5kZXJfcHJlX3dpbmRvd19z
aXplLCAwLCAxMDApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19tb2RlbC5yZW5kZXJf
cG9zdF93aW5kb3dfc2l6ZSwgMCwgMTAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9f
bW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0LCAwLCAxMDApOworICByZXMgPSByZXMg
JiBMaW1pdCgmYy0+ZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6ZV9pbml0LCAwLCAx
MDApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19tb2RlbC5ub25saW5lYXJfaG9sZCwg
MCwgMTAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9kZWwubm9ubGluZWFyX3Jl
bGVhc2UsIDAsIDEuZik7CisKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPnN1cHByZXNzb3IubmVh
cmVuZF9hdmVyYWdlX2Jsb2NrcywgMSwgNTAwMCk7CisKKyAgcmVzID0gcmVzICYKKyAgICAgICAg
TGltaXQoJmMtPnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2xmLmVucl90cmFuc3BhcmVu
dCwgMC5mLCAxMDAuZik7CisgIHJlcyA9IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5zdXBwcmVz
c29yLm5vcm1hbF90dW5pbmcubWFza19sZi5lbnJfc3VwcHJlc3MsIDAuZiwgMTAwLmYpOworICBy
ZXMgPSByZXMgJgorICAgICAgICBMaW1pdCgmYy0+c3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1h
c2tfbGYuZW1yX3RyYW5zcGFyZW50LCAwLmYsIDEwMC5mKTsKKyAgcmVzID0gcmVzICYKKyAgICAg
ICAgTGltaXQoJmMtPnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2hmLmVucl90cmFuc3Bh
cmVudCwgMC5mLCAxMDAuZik7CisgIHJlcyA9IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5zdXBw
cmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5lbnJfc3VwcHJlc3MsIDAuZiwgMTAwLmYpOwor
ICByZXMgPSByZXMgJgorICAgICAgICBMaW1pdCgmYy0+c3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5n
Lm1hc2tfaGYuZW1yX3RyYW5zcGFyZW50LCAwLmYsIDEwMC5mKTsKKyAgcmVzID0gcmVzICYgTGlt
aXQoJmMtPnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXhfaW5jX2ZhY3RvciwgMC5mLCAxMDAu
Zik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWF4
X2RlY19mYWN0b3JfbGYsIDAuZiwgMTAwLmYpOworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5z
dXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfbGYuZW5yX3RyYW5zcGFyZW50LCAwLmYsCisg
ICAgICAgICAgICAgICAgICAgIDEwMC5mKTsKKyAgcmVzID0gcmVzICYKKyAgICAgICAgTGltaXQo
JmMtPnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZi5lbnJfc3VwcHJlc3MsIDAuZiwg
MTAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5uZWFyZW5kX3R1bmlu
Zy5tYXNrX2xmLmVtcl90cmFuc3BhcmVudCwgMC5mLAorICAgICAgICAgICAgICAgICAgICAxMDAu
Zik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1h
c2tfaGYuZW5yX3RyYW5zcGFyZW50LCAwLmYsCisgICAgICAgICAgICAgICAgICAgIDEwMC5mKTsK
KyAgcmVzID0gcmVzICYKKyAgICAgICAgTGltaXQoJmMtPnN1cHByZXNzb3IubmVhcmVuZF90dW5p
bmcubWFza19oZi5lbnJfc3VwcHJlc3MsIDAuZiwgMTAwLmYpOworICByZXMgPSByZXMgJiBMaW1p
dCgmYy0+c3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2hmLmVtcl90cmFuc3BhcmVudCwg
MC5mLAorICAgICAgICAgICAgICAgICAgICAxMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZj
LT5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1heF9pbmNfZmFjdG9yLCAwLmYsIDEwMC5mKTsK
KyAgcmVzID0KKyAgICAgIHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5n
Lm1heF9kZWNfZmFjdG9yX2xmLCAwLmYsIDEwMC5mKTsKKworICByZXMgPSByZXMgJiBMaW1pdCgm
Yy0+c3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5lbnJfdGhyZXNob2xkLAor
ICAgICAgICAgICAgICAgICAgICAwLmYsIDEwMDAwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0
KCZjLT5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLnNucl90aHJlc2hvbGQs
CisgICAgICAgICAgICAgICAgICAgIDAuZiwgMTAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGlt
aXQoJmMtPnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uaG9sZF9kdXJhdGlv
biwgMCwKKyAgICAgICAgICAgICAgICAgICAgMTAwMDApOworICByZXMgPSByZXMgJiBMaW1pdCgm
Yy0+c3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi50cmlnZ2VyX3RocmVzaG9s
ZCwKKyAgICAgICAgICAgICAgICAgICAgMCwgMTAwMDApOworCisgIHJlcyA9IHJlcyAmIExpbWl0
KCZjLT5zdXBwcmVzc29yLmhpZ2hfYmFuZHNfc3VwcHJlc3Npb24uZW5yX3RocmVzaG9sZCwgMC5m
LAorICAgICAgICAgICAgICAgICAgICAxMDAwMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgm
Yy0+c3VwcHJlc3Nvci5oaWdoX2JhbmRzX3N1cHByZXNzaW9uLm1heF9nYWluX2R1cmluZ19lY2hv
LAorICAgICAgICAgICAgICAgICAgICAwLmYsIDEuZik7CisKKyAgcmVzID0gcmVzICYgTGltaXQo
JmMtPnN1cHByZXNzb3IuZmxvb3JfZmlyc3RfaW5jcmVhc2UsIDAuZiwgMTAwMDAwMC5mKTsKKwor
ICBpZiAoYy0+ZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tzID4KKyAgICAgIGMtPmZpbHRlci5t
YWluX2luaXRpYWwubGVuZ3RoX2Jsb2NrcyAtIDEpIHsKKyAgICBjLT5kZWxheS5kZWxheV9oZWFk
cm9vbV9ibG9ja3MgPSBjLT5maWx0ZXIubWFpbl9pbml0aWFsLmxlbmd0aF9ibG9ja3MgLSAxOwor
ICAgIHJlcyA9IGZhbHNlOworICB9CisKKyAgcmV0dXJuIHJlczsKK30KIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2Nv
bmZpZy5oCmluZGV4IGU3Mzc2ZWQ3YmNkM2M0ZWI5YzgyNmM0MzQ0MTcyMDUxYWQ2ZWJkZDUuLmVh
NmU1MWJhZjljNTNkMTIzNmYwNzU5NTU2YjI2ZTJkOTIxYWM3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNl
bGxlcjNfY29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaApAQCAtMTMsMTggKzEzLDMx
IEBACiAKICNpbmNsdWRlIDxzdGRkZWYuaD4gIC8vIHNpemVfdAogCisjaW5jbHVkZSAicnRjX2Jh
c2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIENvbmZp
Z3VyYXRpb24gc3RydWN0IGZvciBFY2hvQ2FuY2VsbGVyMwotc3RydWN0IEVjaG9DYW5jZWxsZXIz
Q29uZmlnIHsKK3N0cnVjdCBSVENfRVhQT1JUIEVjaG9DYW5jZWxsZXIzQ29uZmlnIHsKKyAgLy8g
Q2hlY2tzIGFuZCB1cGRhdGVzIHRoZSBjb25maWcgcGFyYW1ldGVycyB0byBsaWUgd2l0aGluICht
b3N0bHkpIHJlYXNvbmFibGUKKyAgLy8gcmFuZ2VzLiBSZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkg
b2YgdGhlIGNvbmZpZyBkaWQgbm90IG5lZWQgdG8gYmUgY2hhbmdlZC4KKyAgc3RhdGljIGJvb2wg
VmFsaWRhdGUoRWNob0NhbmNlbGxlcjNDb25maWcqIGNvbmZpZyk7CisKICAgRWNob0NhbmNlbGxl
cjNDb25maWcoKTsKICAgRWNob0NhbmNlbGxlcjNDb25maWcoY29uc3QgRWNob0NhbmNlbGxlcjND
b25maWcmIGUpOworCisgIHN0cnVjdCBCdWZmZXJpbmcgeworICAgIGJvb2wgdXNlX25ld19yZW5k
ZXJfYnVmZmVyaW5nID0gdHJ1ZTsKKyAgICBzaXplX3QgZXhjZXNzX3JlbmRlcl9kZXRlY3Rpb25f
aW50ZXJ2YWxfYmxvY2tzID0gMjUwOworICAgIHNpemVfdCBtYXhfYWxsb3dlZF9leGNlc3NfcmVu
ZGVyX2Jsb2NrcyA9IDg7CisgIH0gYnVmZmVyaW5nOworCiAgIHN0cnVjdCBEZWxheSB7CiAgICAg
RGVsYXkoKTsKICAgICBEZWxheShjb25zdCBEZWxheSYgZSk7CiAgICAgc2l6ZV90IGRlZmF1bHRf
ZGVsYXkgPSA1OwogICAgIHNpemVfdCBkb3duX3NhbXBsaW5nX2ZhY3RvciA9IDQ7Ci0gICAgc2l6
ZV90IG51bV9maWx0ZXJzID0gNjsKKyAgICBzaXplX3QgbnVtX2ZpbHRlcnMgPSA1OwogICAgIHNp
emVfdCBhcGlfY2FsbF9qaXR0ZXJfYmxvY2tzID0gMjY7CiAgICAgc2l6ZV90IG1pbl9lY2hvX3Bh
dGhfZGVsYXlfYmxvY2tzID0gMDsKICAgICBzaXplX3QgZGVsYXlfaGVhZHJvb21fYmxvY2tzID0g
MjsKQEAgLTM3LDcgKzUwLDcgQEAgc3RydWN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnIHsKICAgICBz
dHJ1Y3QgRGVsYXlTZWxlY3Rpb25UaHJlc2hvbGRzIHsKICAgICAgIGludCBpbml0aWFsOwogICAg
ICAgaW50IGNvbnZlcmdlZDsKLSAgICB9IGRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzID0gezI1
LCAyNX07CisgICAgfSBkZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcyA9IHs1LCAyMH07CiAgIH0g
ZGVsYXk7CiAKICAgc3RydWN0IEZpbHRlciB7CkBAIC00Niw2ICs1OSw3IEBAIHN0cnVjdCBFY2hv
Q2FuY2VsbGVyM0NvbmZpZyB7CiAgICAgICBmbG9hdCBsZWFrYWdlX2NvbnZlcmdlZDsKICAgICAg
IGZsb2F0IGxlYWthZ2VfZGl2ZXJnZWQ7CiAgICAgICBmbG9hdCBlcnJvcl9mbG9vcjsKKyAgICAg
IGZsb2F0IGVycm9yX2NlaWw7CiAgICAgICBmbG9hdCBub2lzZV9nYXRlOwogICAgIH07CiAKQEAg
LTU1LDEwICs2OSwxMSBAQCBzdHJ1Y3QgRWNob0NhbmNlbGxlcjNDb25maWcgewogICAgICAgZmxv
YXQgbm9pc2VfZ2F0ZTsKICAgICB9OwogCi0gICAgTWFpbkNvbmZpZ3VyYXRpb24gbWFpbiA9IHsx
MywgMC4wMDAwNWYsIDAuMDFmLCAwLjFmLCAyMDA3NTM0NC5mfTsKKyAgICBNYWluQ29uZmlndXJh
dGlvbiBtYWluID0gezEzLCAwLjAwMDA1ZiwgMC4wNWYsIDAuMDAxZiwgMi5mLCAyMDA3NTM0NC5m
fTsKICAgICBTaGFkb3dDb25maWd1cmF0aW9uIHNoYWRvdyA9IHsxMywgMC43ZiwgMjAwNzUzNDQu
Zn07CiAKLSAgICBNYWluQ29uZmlndXJhdGlvbiBtYWluX2luaXRpYWwgPSB7MTIsIDAuMDA1Ziwg
MC41ZiwgMC4wMDFmLCAyMDA3NTM0NC5mfTsKKyAgICBNYWluQ29uZmlndXJhdGlvbiBtYWluX2lu
aXRpYWwgPSB7MTIsICAgICAwLjAwNWYsIDAuNWYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMDAxZiwgMi5mLCAgICAyMDA3NTM0NC5mfTsKICAgICBTaGFkb3dDb25m
aWd1cmF0aW9uIHNoYWRvd19pbml0aWFsID0gezEyLCAwLjlmLCAyMDA3NTM0NC5mfTsKIAogICAg
IHNpemVfdCBjb25maWdfY2hhbmdlX2R1cmF0aW9uX2Jsb2NrcyA9IDI1MDsKQEAgLTcyLDM4ICs4
NywxOSBAQCBzdHJ1Y3QgRWNob0NhbmNlbGxlcjNDb25maWcgewogICAgIGZsb2F0IG1heF9sID0g
NC5mOwogICAgIGZsb2F0IG1heF9oID0gMS41ZjsKICAgICBib29sIG9uc2V0X2RldGVjdGlvbiA9
IHRydWU7CisgICAgc2l6ZV90IG51bV9zZWN0aW9ucyA9IDE7CiAgIH0gZXJsZTsKIAogICBzdHJ1
Y3QgRXBTdHJlbmd0aCB7CiAgICAgZmxvYXQgbGYgPSAxLmY7CiAgICAgZmxvYXQgbWYgPSAxLmY7
CiAgICAgZmxvYXQgaGYgPSAxLmY7Ci0gICAgZmxvYXQgZGVmYXVsdF9sZW4gPSAwLjg4ZjsKKyAg
ICBmbG9hdCBkZWZhdWx0X2xlbiA9IDAuODNmOwogICAgIGJvb2wgcmV2ZXJiX2Jhc2VkX29uX3Jl
bmRlciA9IHRydWU7CiAgICAgYm9vbCBlY2hvX2Nhbl9zYXR1cmF0ZSA9IHRydWU7CiAgICAgYm9v
bCBib3VuZGVkX2VybCA9IGZhbHNlOwogICB9IGVwX3N0cmVuZ3RoOwogCi0gIHN0cnVjdCBNYXNr
IHsKLSAgICBNYXNrKCk7Ci0gICAgTWFzayhjb25zdCBNYXNrJiBtKTsKLSAgICBmbG9hdCBtMCA9
IDAuMWY7Ci0gICAgZmxvYXQgbTEgPSAwLjAxZjsKLSAgICBmbG9hdCBtMiA9IDAuMDAwMWY7Ci0g
ICAgZmxvYXQgbTMgPSAwLjAxZjsKLSAgICBmbG9hdCBtNSA9IDAuMDFmOwotICAgIGZsb2F0IG02
ID0gMC4wMDAxZjsKLSAgICBmbG9hdCBtNyA9IDAuMDFmOwotICAgIGZsb2F0IG04ID0gMC4wMDAx
ZjsKLSAgICBmbG9hdCBtOSA9IDAuMWY7Ci0KLSAgICBmbG9hdCBnYWluX2N1cnZlX29mZnNldCA9
IDEuNDVmOwotICAgIGZsb2F0IGdhaW5fY3VydmVfc2xvcGUgPSA1LmY7Ci0gICAgZmxvYXQgdGVt
cG9yYWxfbWFza2luZ19sZiA9IDAuOWY7Ci0gICAgZmxvYXQgdGVtcG9yYWxfbWFza2luZ19oZiA9
IDAuNmY7Ci0gICAgc2l6ZV90IHRlbXBvcmFsX21hc2tpbmdfbGZfYmFuZHMgPSAzOwotICB9IGdh
aW5fbWFzazsKLQogICBzdHJ1Y3QgRWNob0F1ZGliaWxpdHkgewogICAgIGZsb2F0IGxvd19yZW5k
ZXJfbGltaXQgPSA0ICogNjQuZjsKICAgICBmbG9hdCBub3JtYWxfcmVuZGVyX2xpbWl0ID0gNjQu
ZjsKQEAgLTExMSw3ICsxMDcsNyBAQCBzdHJ1Y3QgRWNob0NhbmNlbGxlcjNDb25maWcgewogICAg
IGZsb2F0IGF1ZGliaWxpdHlfdGhyZXNob2xkX2xmID0gMTA7CiAgICAgZmxvYXQgYXVkaWJpbGl0
eV90aHJlc2hvbGRfbWYgPSAxMDsKICAgICBmbG9hdCBhdWRpYmlsaXR5X3RocmVzaG9sZF9oZiA9
IDEwOwotICAgIGJvb2wgdXNlX3N0YXRpb25hcnlfcHJvcGVydGllcyA9IHRydWU7CisgICAgYm9v
bCB1c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVzID0gZmFsc2U7CiAgICAgYm9vbCB1c2Vfc3RhdGlv
bmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdCA9IGZhbHNlOwogICB9IGVjaG9fYXVkaWJpbGl0eTsK
IApAQCAtMTc2LDIwICsxNzIsMjIgQEAgc3RydWN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnIHsKICAg
ICAgIGZsb2F0IG1heF9kZWNfZmFjdG9yX2xmOwogICAgIH07CiAKLSAgICBUdW5pbmcgbm9ybWFs
X3R1bmluZyA9IFR1bmluZyhNYXNraW5nVGhyZXNob2xkcyguMmYsIC4zZiwgLjNmKSwKKyAgICBU
dW5pbmcgbm9ybWFsX3R1bmluZyA9IFR1bmluZyhNYXNraW5nVGhyZXNob2xkcyguM2YsIC40Ziwg
LjNmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXNraW5nVGhyZXNob2xk
cyguMDdmLCAuMWYsIC4zZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4w
ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI1Zik7Ci0gICAgVHVuaW5n
IG5lYXJlbmRfdHVuaW5nID0gVHVuaW5nKE1hc2tpbmdUaHJlc2hvbGRzKC4yZiwgLjNmLCAuM2Yp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXNraW5nVGhyZXNob2xkcygu
MDdmLCAuMWYsIC4zZiksCisgICAgVHVuaW5nIG5lYXJlbmRfdHVuaW5nID0gVHVuaW5nKE1hc2tp
bmdUaHJlc2hvbGRzKDEuMDlmLCAxLjFmLCAuM2YpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNYXNraW5nVGhyZXNob2xkcyguMWYsIC4zZiwgLjNmKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMi4wZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4yNWYpOwogCiAgICAgc3RydWN0IERvbWluYW50TmVhcmVuZERldGVjdGlvbiB7
Ci0gICAgICBmbG9hdCBlbnJfdGhyZXNob2xkID0gMTAuZjsKLSAgICAgIGZsb2F0IHNucl90aHJl
c2hvbGQgPSAxMC5mOwotICAgICAgaW50IGhvbGRfZHVyYXRpb24gPSAyNTsKLSAgICAgIGludCB0
cmlnZ2VyX3RocmVzaG9sZCA9IDE1OworICAgICAgZmxvYXQgZW5yX3RocmVzaG9sZCA9IDQuZjsK
KyAgICAgIGZsb2F0IGVucl9leGl0X3RocmVzaG9sZCA9IC4xZjsKKyAgICAgIGZsb2F0IHNucl90
aHJlc2hvbGQgPSAzMC5mOworICAgICAgaW50IGhvbGRfZHVyYXRpb24gPSA1MDsKKyAgICAgIGlu
dCB0cmlnZ2VyX3RocmVzaG9sZCA9IDEyOworICAgICAgYm9vbCB1c2VfZHVyaW5nX2luaXRpYWxf
cGhhc2UgPSB0cnVlOwogICAgIH0gZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb247CiAKICAgICBz
dHJ1Y3QgSGlnaEJhbmRzU3VwcHJlc3Npb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25m
aWdfanNvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb24uY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFhODMx
Y2I0Yzk5NjA4MmNjYTA4MjU1ZGY1ZGI4NGVmZmIxZWRmMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2Nh
bmNlbGxlcjNfY29uZmlnX2pzb24uY2MKQEAgLTAsMCArMSw1ODMgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KKyAqLworI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb24u
aCIKKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9qc29uLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgorCituYW1lc3BhY2Ug
d2VicnRjIHsKK25hbWVzcGFjZSB7Cit2b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpWYWx1ZSYg
cm9vdCwgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwgYm9vbCogcGFyYW0pIHsKKyAgUlRDX0RDSEVD
SyhwYXJhbSk7CisgIGJvb2wgdjsKKyAgaWYgKHJ0Yzo6R2V0Qm9vbEZyb21Kc29uT2JqZWN0KHJv
b3QsIHBhcmFtX25hbWUsICZ2KSkgeworICAgICpwYXJhbSA9IHY7CisgIH0KK30KKwordm9pZCBS
ZWFkUGFyYW0oY29uc3QgSnNvbjo6VmFsdWUmIHJvb3QsIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUs
IHNpemVfdCogcGFyYW0pIHsKKyAgUlRDX0RDSEVDSyhwYXJhbSk7CisgIGludCB2OworICBpZiAo
cnRjOjpHZXRJbnRGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmdikpIHsKKyAgICBS
VENfRENIRUNLX0dFKHYsIDApOworICAgICpwYXJhbSA9IHY7CisgIH0KK30KKwordm9pZCBSZWFk
UGFyYW0oY29uc3QgSnNvbjo6VmFsdWUmIHJvb3QsIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUsIGlu
dCogcGFyYW0pIHsKKyAgUlRDX0RDSEVDSyhwYXJhbSk7CisgIGludCB2OworICBpZiAocnRjOjpH
ZXRJbnRGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmdikpIHsKKyAgICAqcGFyYW0g
PSB2OworICB9Cit9CisKK3ZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVlJiByb290LCBz
dGQ6OnN0cmluZyBwYXJhbV9uYW1lLCBmbG9hdCogcGFyYW0pIHsKKyAgUlRDX0RDSEVDSyhwYXJh
bSk7CisgIGRvdWJsZSB2OworICBpZiAocnRjOjpHZXREb3VibGVGcm9tSnNvbk9iamVjdChyb290
LCBwYXJhbV9uYW1lLCAmdikpIHsKKyAgICAqcGFyYW0gPSBzdGF0aWNfY2FzdDxmbG9hdD4odik7
CisgIH0KK30KKwordm9pZCBSZWFkUGFyYW0oY29uc3QgSnNvbjo6VmFsdWUmIHJvb3QsCisgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLAorICAgICAgICAgICAgICAgRWNob0Nh
bmNlbGxlcjNDb25maWc6OkZpbHRlcjo6TWFpbkNvbmZpZ3VyYXRpb24qIHBhcmFtKSB7CisgIFJU
Q19EQ0hFQ0socGFyYW0pOworICBKc29uOjpWYWx1ZSBqc29uX2FycmF5OworICBpZiAocnRjOjpH
ZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsIHBhcmFtX25hbWUsICZqc29uX2FycmF5KSkgewor
ICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsKKyAgICBydGM6Okpzb25BcnJheVRvRG91YmxlVmVj
dG9yKGpzb25fYXJyYXksICZ2KTsKKyAgICBpZiAodi5zaXplKCkgIT0gNikgeworICAgICAgUlRD
X0xPRyhMU19FUlJPUikgPDwgIkluY29ycmVjdCBhcnJheSBzaXplIGZvciAiIDw8IHBhcmFtX25h
bWU7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHBhcmFtLT5sZW5ndGhfYmxvY2tzID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90Pih2WzBdKTsKKyAgICBwYXJhbS0+bGVha2FnZV9jb252ZXJnZWQgPSBz
dGF0aWNfY2FzdDxmbG9hdD4odlsxXSk7CisgICAgcGFyYW0tPmxlYWthZ2VfZGl2ZXJnZWQgPSBz
dGF0aWNfY2FzdDxmbG9hdD4odlsyXSk7CisgICAgcGFyYW0tPmVycm9yX2Zsb29yID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHZbM10pOworICAgIHBhcmFtLT5lcnJvcl9jZWlsID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHZbNF0pOworICAgIHBhcmFtLT5ub2lzZV9nYXRlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHZbNV0pOworICB9Cit9CisKK3ZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVlJiByb290
LAorICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwKKyAgICAgICAgICAgICAg
IEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpGaWx0ZXI6OlNoYWRvd0NvbmZpZ3VyYXRpb24qIHBhcmFt
KSB7CisgIFJUQ19EQ0hFQ0socGFyYW0pOworICBKc29uOjpWYWx1ZSBqc29uX2FycmF5OworICBp
ZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsIHBhcmFtX25hbWUsICZqc29uX2Fy
cmF5KSkgeworICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsKKyAgICBydGM6Okpzb25BcnJheVRv
RG91YmxlVmVjdG9yKGpzb25fYXJyYXksICZ2KTsKKyAgICBpZiAodi5zaXplKCkgIT0gMykgewor
ICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkluY29ycmVjdCBhcnJheSBzaXplIGZvciAiIDw8
IHBhcmFtX25hbWU7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHBhcmFtLT5sZW5ndGhfYmxv
Y2tzID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2WzBdKTsKKyAgICBwYXJhbS0+cmF0ZSA9IHN0YXRp
Y19jYXN0PGZsb2F0Pih2WzFdKTsKKyAgICBwYXJhbS0+bm9pc2VfZ2F0ZSA9IHN0YXRpY19jYXN0
PGZsb2F0Pih2WzJdKTsKKyAgfQorfQorCit2b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpWYWx1
ZSYgcm9vdCwKKyAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUsCisgICAgICAg
ICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6U3VwcHJlc3Nvcjo6TWFza2luZ1RocmVzaG9s
ZHMqIHBhcmFtKSB7CisgIFJUQ19EQ0hFQ0socGFyYW0pOworICBKc29uOjpWYWx1ZSBqc29uX2Fy
cmF5OworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsIHBhcmFtX25hbWUs
ICZqc29uX2FycmF5KSkgeworICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsKKyAgICBydGM6Okpz
b25BcnJheVRvRG91YmxlVmVjdG9yKGpzb25fYXJyYXksICZ2KTsKKyAgICBpZiAodi5zaXplKCkg
IT0gMykgeworICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkluY29ycmVjdCBhcnJheSBzaXpl
IGZvciAiIDw8IHBhcmFtX25hbWU7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHBhcmFtLT5l
bnJfdHJhbnNwYXJlbnQgPSBzdGF0aWNfY2FzdDxmbG9hdD4odlswXSk7CisgICAgcGFyYW0tPmVu
cl9zdXBwcmVzcyA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzFdKTsKKyAgICBwYXJhbS0+ZW1yX3Ry
YW5zcGFyZW50ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbMl0pOworICB9Cit9Cit9ICAvLyBuYW1l
c3BhY2UKKwordm9pZCBBZWMzQ29uZmlnRnJvbUpzb25TdHJpbmcoYWJzbDo6c3RyaW5nX3ZpZXcg
anNvbl9zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFY2hvQ2FuY2VsbGVy
M0NvbmZpZyogY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCogcGFy
c2luZ19zdWNjZXNzZnVsKSB7CisgIFJUQ19EQ0hFQ0soY29uZmlnKTsKKyAgUlRDX0RDSEVDSyhw
YXJzaW5nX3N1Y2Nlc3NmdWwpOworICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY2ZnID0gKmNvbmZp
ZzsKKyAgY2ZnID0gRWNob0NhbmNlbGxlcjNDb25maWcoKTsKKyAgKnBhcnNpbmdfc3VjY2Vzc2Z1
bCA9IHRydWU7CisKKyAgSnNvbjo6VmFsdWUgcm9vdDsKKyAgYm9vbCBzdWNjZXNzID0gSnNvbjo6
UmVhZGVyKCkucGFyc2Uoc3RkOjpzdHJpbmcoanNvbl9zdHJpbmcpLCByb290KTsKKyAgaWYgKCFz
dWNjZXNzKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkluY29ycmVjdCBKU09OIGZvcm1h
dDogIiA8PCBqc29uX3N0cmluZzsKKyAgICAqcGFyc2luZ19zdWNjZXNzZnVsID0gZmFsc2U7Cisg
ICAgcmV0dXJuOworICB9CisKKyAgSnNvbjo6VmFsdWUgYWVjM19yb290OworICBzdWNjZXNzID0g
cnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsICJhZWMzIiwgJmFlYzNfcm9vdCk7Cisg
IGlmICghc3VjY2VzcykgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJNaXNzaW5nIEFFQzMg
Y29uZmlnIGZpZWxkOiAiIDw8IGpzb25fc3RyaW5nOworICAgICpwYXJzaW5nX3N1Y2Nlc3NmdWwg
PSBmYWxzZTsKKyAgICByZXR1cm47CisgIH0KKworICBKc29uOjpWYWx1ZSBzZWN0aW9uOworICBp
ZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsICJidWZmZXJpbmciLCAmc2VjdGlv
bikpIHsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInVzZV9uZXdfcmVuZGVyX2J1ZmZlcmluZyIs
CisgICAgICAgICAgICAgICZjZmcuYnVmZmVyaW5nLnVzZV9uZXdfcmVuZGVyX2J1ZmZlcmluZyk7
CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJleGNlc3NfcmVuZGVyX2RldGVjdGlvbl9pbnRlcnZh
bF9ibG9ja3MiLAorICAgICAgICAgICAgICAmY2ZnLmJ1ZmZlcmluZy5leGNlc3NfcmVuZGVyX2Rl
dGVjdGlvbl9pbnRlcnZhbF9ibG9ja3MpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWF4X2Fs
bG93ZWRfZXhjZXNzX3JlbmRlcl9ibG9ja3MiLAorICAgICAgICAgICAgICAmY2ZnLmJ1ZmZlcmlu
Zy5tYXhfYWxsb3dlZF9leGNlc3NfcmVuZGVyX2Jsb2Nrcyk7CisgIH0KKworICBpZiAocnRjOjpH
ZXRWYWx1ZUZyb21Kc29uT2JqZWN0KGFlYzNfcm9vdCwgImRlbGF5IiwgJnNlY3Rpb24pKSB7Cisg
ICAgUmVhZFBhcmFtKHNlY3Rpb24sICJkZWZhdWx0X2RlbGF5IiwgJmNmZy5kZWxheS5kZWZhdWx0
X2RlbGF5KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImRvd25fc2FtcGxpbmdfZmFjdG9yIiwg
JmNmZy5kZWxheS5kb3duX3NhbXBsaW5nX2ZhY3Rvcik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJudW1fZmlsdGVycyIsICZjZmcuZGVsYXkubnVtX2ZpbHRlcnMpOworICAgIFJlYWRQYXJhbShz
ZWN0aW9uLCAiYXBpX2NhbGxfaml0dGVyX2Jsb2NrcyIsCisgICAgICAgICAgICAgICZjZmcuZGVs
YXkuYXBpX2NhbGxfaml0dGVyX2Jsb2Nrcyk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtaW5f
ZWNob19wYXRoX2RlbGF5X2Jsb2NrcyIsCisgICAgICAgICAgICAgICZjZmcuZGVsYXkubWluX2Vj
aG9fcGF0aF9kZWxheV9ibG9ja3MpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZGVsYXlfaGVh
ZHJvb21fYmxvY2tzIiwKKyAgICAgICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9oZWFkcm9vbV9i
bG9ja3MpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiaHlzdGVyZXNpc19saW1pdF8xX2Jsb2Nr
cyIsCisgICAgICAgICAgICAgICZjZmcuZGVsYXkuaHlzdGVyZXNpc19saW1pdF8xX2Jsb2Nrcyk7
CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzIiwKKyAg
ICAgICAgICAgICAgJmNmZy5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzKTsKKyAgICBS
ZWFkUGFyYW0oc2VjdGlvbiwgInNrZXdfaHlzdGVyZXNpc19ibG9ja3MiLAorICAgICAgICAgICAg
ICAmY2ZnLmRlbGF5LnNrZXdfaHlzdGVyZXNpc19ibG9ja3MpOworICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAiZml4ZWRfY2FwdHVyZV9kZWxheV9zYW1wbGVzIiwKKyAgICAgICAgICAgICAgJmNmZy5k
ZWxheS5maXhlZF9jYXB0dXJlX2RlbGF5X3NhbXBsZXMpOworICAgIFJlYWRQYXJhbShzZWN0aW9u
LCAiZGVsYXlfZXN0aW1hdGVfc21vb3RoaW5nIiwKKyAgICAgICAgICAgICAgJmNmZy5kZWxheS5k
ZWxheV9lc3RpbWF0ZV9zbW9vdGhpbmcpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZGVsYXlf
Y2FuZGlkYXRlX2RldGVjdGlvbl90aHJlc2hvbGQiLAorICAgICAgICAgICAgICAmY2ZnLmRlbGF5
LmRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rpb25fdGhyZXNob2xkKTsKKworICAgIEpzb246OlZhbHVl
IHN1YnNlY3Rpb247CisgICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChzZWN0aW9u
LCAiZGVsYXlfc2VsZWN0aW9uX3RocmVzaG9sZHMiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJnN1YnNlY3Rpb24pKSB7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwg
ImluaXRpYWwiLAorICAgICAgICAgICAgICAgICZjZmcuZGVsYXkuZGVsYXlfc2VsZWN0aW9uX3Ro
cmVzaG9sZHMuaW5pdGlhbCk7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgImNvbnZlcmdl
ZCIsCisgICAgICAgICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9zZWxlY3Rpb25fdGhyZXNob2xk
cy5jb252ZXJnZWQpOworICAgIH0KKyAgfQorCisgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25P
YmplY3QoYWVjM19yb290LCAiZmlsdGVyIiwgJnNlY3Rpb24pKSB7CisgICAgUmVhZFBhcmFtKHNl
Y3Rpb24sICJtYWluIiwgJmNmZy5maWx0ZXIubWFpbik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJzaGFkb3ciLCAmY2ZnLmZpbHRlci5zaGFkb3cpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAi
bWFpbl9pbml0aWFsIiwgJmNmZy5maWx0ZXIubWFpbl9pbml0aWFsKTsKKyAgICBSZWFkUGFyYW0o
c2VjdGlvbiwgInNoYWRvd19pbml0aWFsIiwgJmNmZy5maWx0ZXIuc2hhZG93X2luaXRpYWwpOwor
ICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiY29uZmlnX2NoYW5nZV9kdXJhdGlvbl9ibG9ja3MiLAor
ICAgICAgICAgICAgICAmY2ZnLmZpbHRlci5jb25maWdfY2hhbmdlX2R1cmF0aW9uX2Jsb2Nrcyk7
CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJpbml0aWFsX3N0YXRlX3NlY29uZHMiLAorICAgICAg
ICAgICAgICAmY2ZnLmZpbHRlci5pbml0aWFsX3N0YXRlX3NlY29uZHMpOworICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAiY29uc2VydmF0aXZlX2luaXRpYWxfcGhhc2UiLAorICAgICAgICAgICAgICAm
Y2ZnLmZpbHRlci5jb25zZXJ2YXRpdmVfaW5pdGlhbF9waGFzZSk7CisgICAgUmVhZFBhcmFtKHNl
Y3Rpb24sICJlbmFibGVfc2hhZG93X2ZpbHRlcl9vdXRwdXRfdXNhZ2UiLAorICAgICAgICAgICAg
ICAmY2ZnLmZpbHRlci5lbmFibGVfc2hhZG93X2ZpbHRlcl9vdXRwdXRfdXNhZ2UpOworICB9CisK
KyAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChhZWMzX3Jvb3QsICJlcmxlIiwgJnNl
Y3Rpb24pKSB7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtaW4iLCAmY2ZnLmVybGUubWluKTsK
KyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1heF9sIiwgJmNmZy5lcmxlLm1heF9sKTsKKyAgICBS
ZWFkUGFyYW0oc2VjdGlvbiwgIm1heF9oIiwgJmNmZy5lcmxlLm1heF9oKTsKKyAgICBSZWFkUGFy
YW0oc2VjdGlvbiwgIm9uc2V0X2RldGVjdGlvbiIsICZjZmcuZXJsZS5vbnNldF9kZXRlY3Rpb24p
OworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibnVtX3NlY3Rpb25zIiwgJmNmZy5lcmxlLm51bV9z
ZWN0aW9ucyk7CisgIH0KKworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KGFlYzNf
cm9vdCwgImVwX3N0cmVuZ3RoIiwgJnNlY3Rpb24pKSB7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJsZiIsICZjZmcuZXBfc3RyZW5ndGgubGYpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWYi
LCAmY2ZnLmVwX3N0cmVuZ3RoLm1mKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImhmIiwgJmNm
Zy5lcF9zdHJlbmd0aC5oZik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJkZWZhdWx0X2xlbiIs
ICZjZmcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4pOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAi
cmV2ZXJiX2Jhc2VkX29uX3JlbmRlciIsCisgICAgICAgICAgICAgICZjZmcuZXBfc3RyZW5ndGgu
cmV2ZXJiX2Jhc2VkX29uX3JlbmRlcik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJlY2hvX2Nh
bl9zYXR1cmF0ZSIsICZjZmcuZXBfc3RyZW5ndGguZWNob19jYW5fc2F0dXJhdGUpOworICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAiYm91bmRlZF9lcmwiLCAmY2ZnLmVwX3N0cmVuZ3RoLmJvdW5kZWRf
ZXJsKTsKKyAgfQorCisgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3QoYWVjM19yb290
LCAiZWNob19hdWRpYmlsaXR5IiwgJnNlY3Rpb24pKSB7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJsb3dfcmVuZGVyX2xpbWl0IiwKKyAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHku
bG93X3JlbmRlcl9saW1pdCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJub3JtYWxfcmVuZGVy
X2xpbWl0IiwKKyAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHkubm9ybWFsX3JlbmRl
cl9saW1pdCk7CisKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImZsb29yX3Bvd2VyIiwgJmNmZy5l
Y2hvX2F1ZGliaWxpdHkuZmxvb3JfcG93ZXIpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiYXVk
aWJpbGl0eV90aHJlc2hvbGRfbGYiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0
eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9sZik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJhdWRp
YmlsaXR5X3RocmVzaG9sZF9tZiIsCisgICAgICAgICAgICAgICZjZmcuZWNob19hdWRpYmlsaXR5
LmF1ZGliaWxpdHlfdGhyZXNob2xkX21mKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImF1ZGli
aWxpdHlfdGhyZXNob2xkX2hmIiwKKyAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHku
YXVkaWJpbGl0eV90aHJlc2hvbGRfaGYpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAidXNlX3N0
YXRpb25hcnlfcHJvcGVydGllcyIsCisgICAgICAgICAgICAgICZjZmcuZWNob19hdWRpYmlsaXR5
LnVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXMpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAidXNl
X3N0YXRpb25hcml0eV9wcm9wZXJ0aWVzX2F0X2luaXQiLAorICAgICAgICAgICAgICAmY2ZnLmVj
aG9fYXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdCk7CisgIH0K
KworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KGFlYzNfcm9vdCwgInJlbmRlcl9s
ZXZlbHMiLCAmc2VjdGlvbikpIHsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImFjdGl2ZV9yZW5k
ZXJfbGltaXQiLAorICAgICAgICAgICAgICAmY2ZnLnJlbmRlcl9sZXZlbHMuYWN0aXZlX3JlbmRl
cl9saW1pdCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJwb29yX2V4Y2l0YXRpb25fcmVuZGVy
X2xpbWl0IiwKKyAgICAgICAgICAgICAgJmNmZy5yZW5kZXJfbGV2ZWxzLnBvb3JfZXhjaXRhdGlv
bl9yZW5kZXJfbGltaXQpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAicG9vcl9leGNpdGF0aW9u
X3JlbmRlcl9saW1pdF9kczgiLAorICAgICAgICAgICAgICAmY2ZnLnJlbmRlcl9sZXZlbHMucG9v
cl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdF9kczgpOworICB9CisKKyAgaWYgKHJ0Yzo6R2V0VmFs
dWVGcm9tSnNvbk9iamVjdChhZWMzX3Jvb3QsICJlY2hvX3JlbW92YWxfY29udHJvbCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlY3Rpb24pKSB7CisgICAgSnNvbjo6VmFs
dWUgc3Vic2VjdGlvbjsKKyAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rp
b24sICJnYWluX3JhbXB1cCIsICZzdWJzZWN0aW9uKSkgeworICAgICAgUmVhZFBhcmFtKHN1YnNl
Y3Rpb24sICJpbml0aWFsX2dhaW4iLAorICAgICAgICAgICAgICAgICZjZmcuZWNob19yZW1vdmFs
X2NvbnRyb2wuZ2Fpbl9yYW1wdXAuaW5pdGlhbF9nYWluKTsKKyAgICAgIFJlYWRQYXJhbShzdWJz
ZWN0aW9uLCAiZmlyc3Rfbm9uX3plcm9fZ2FpbiIsCisgICAgICAgICAgICAgICAgJmNmZy5lY2hv
X3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5maXJzdF9ub25femVyb19nYWluKTsKKyAgICAg
IFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibm9uX3plcm9fZ2Fpbl9ibG9ja3MiLAorICAgICAgICAg
ICAgICAgICZjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAubm9uX3plcm9fZ2Fp
bl9ibG9ja3MpOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJmdWxsX2dhaW5fYmxvY2tz
IiwKKyAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVw
LmZ1bGxfZ2Fpbl9ibG9ja3MpOworICAgIH0KKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImhhc19j
bG9ja19kcmlmdCIsCisgICAgICAgICAgICAgICZjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuaGFz
X2Nsb2NrX2RyaWZ0KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImxpbmVhcl9hbmRfc3RhYmxl
X2VjaG9fcGF0aCIsCisgICAgICAgICAgICAgICZjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wubGlu
ZWFyX2FuZF9zdGFibGVfZWNob19wYXRoKTsKKyAgfQorCisgIGlmIChydGM6OkdldFZhbHVlRnJv
bUpzb25PYmplY3QoYWVjM19yb290LCAiZWNob19tb2RlbCIsICZzZWN0aW9uKSkgeworICAgIEpz
b246OlZhbHVlIHN1YnNlY3Rpb247CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJub2lzZV9mbG9v
cl9ob2xkIiwgJmNmZy5lY2hvX21vZGVsLm5vaXNlX2Zsb29yX2hvbGQpOworICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAibWluX25vaXNlX2Zsb29yX3Bvd2VyIiwKKyAgICAgICAgICAgICAgJmNmZy5l
Y2hvX21vZGVsLm1pbl9ub2lzZV9mbG9vcl9wb3dlcik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJzdGF0aW9uYXJ5X2dhdGVfc2xvcGUiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9fbW9kZWwu
c3RhdGlvbmFyeV9nYXRlX3Nsb3BlKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5vaXNlX2dh
dGVfcG93ZXIiLCAmY2ZnLmVjaG9fbW9kZWwubm9pc2VfZ2F0ZV9wb3dlcik7CisgICAgUmVhZFBh
cmFtKHNlY3Rpb24sICJub2lzZV9nYXRlX3Nsb3BlIiwgJmNmZy5lY2hvX21vZGVsLm5vaXNlX2dh
dGVfc2xvcGUpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAicmVuZGVyX3ByZV93aW5kb3dfc2l6
ZSIsCisgICAgICAgICAgICAgICZjZmcuZWNob19tb2RlbC5yZW5kZXJfcHJlX3dpbmRvd19zaXpl
KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRlcl9wb3N0X3dpbmRvd19zaXplIiwKKyAg
ICAgICAgICAgICAgJmNmZy5lY2hvX21vZGVsLnJlbmRlcl9wb3N0X3dpbmRvd19zaXplKTsKKyAg
ICBSZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRlcl9wcmVfd2luZG93X3NpemVfaW5pdCIsCisgICAg
ICAgICAgICAgICZjZmcuZWNob19tb2RlbC5yZW5kZXJfcHJlX3dpbmRvd19zaXplX2luaXQpOwor
ICAgIFJlYWRQYXJhbShzZWN0aW9uLCAicmVuZGVyX3Bvc3Rfd2luZG93X3NpemVfaW5pdCIsCisg
ICAgICAgICAgICAgICZjZmcuZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6ZV9pbml0
KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5vbmxpbmVhcl9ob2xkIiwgJmNmZy5lY2hvX21v
ZGVsLm5vbmxpbmVhcl9ob2xkKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5vbmxpbmVhcl9y
ZWxlYXNlIiwgJmNmZy5lY2hvX21vZGVsLm5vbmxpbmVhcl9yZWxlYXNlKTsKKyAgfQorCisgIEpz
b246OlZhbHVlIHN1YnNlY3Rpb247CisgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qo
YWVjM19yb290LCAic3VwcHJlc3NvciIsICZzZWN0aW9uKSkgeworICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAibmVhcmVuZF9hdmVyYWdlX2Jsb2NrcyIsCisgICAgICAgICAgICAgICZjZmcuc3VwcHJl
c3Nvci5uZWFyZW5kX2F2ZXJhZ2VfYmxvY2tzKTsKKworICAgIGlmIChydGM6OkdldFZhbHVlRnJv
bUpzb25PYmplY3Qoc2VjdGlvbiwgIm5vcm1hbF90dW5pbmciLCAmc3Vic2VjdGlvbikpIHsKKyAg
ICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWFza19sZiIsICZjZmcuc3VwcHJlc3Nvci5ub3Jt
YWxfdHVuaW5nLm1hc2tfbGYpOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJtYXNrX2hm
IiwgJmNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZik7CisgICAgICBSZWFkUGFy
YW0oc3Vic2VjdGlvbiwgIm1heF9pbmNfZmFjdG9yIiwKKyAgICAgICAgICAgICAgICAmY2ZnLnN1
cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXhfaW5jX2ZhY3Rvcik7CisgICAgICBSZWFkUGFyYW0o
c3Vic2VjdGlvbiwgIm1heF9kZWNfZmFjdG9yX2xmIiwKKyAgICAgICAgICAgICAgICAmY2ZnLnN1
cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXhfZGVjX2ZhY3Rvcl9sZik7CisgICAgfQorCisgICAg
aWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChzZWN0aW9uLCAibmVhcmVuZF90dW5pbmci
LCAmc3Vic2VjdGlvbikpIHsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWFza19sZiIs
ICZjZmcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2xmKTsKKyAgICAgIFJlYWRQYXJh
bShzdWJzZWN0aW9uLCAibWFza19oZiIsICZjZmcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5t
YXNrX2hmKTsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWF4X2luY19mYWN0b3IiLAor
ICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXhfaW5jX2Zh
Y3Rvcik7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9kZWNfZmFjdG9yX2xmIiwK
KyAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWF4X2RlY19m
YWN0b3JfbGYpOworICAgIH0KKworICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qo
c2VjdGlvbiwgImRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZzdWJzZWN0aW9uKSkgeworICAgICAgUmVhZFBhcmFtKHN1YnNl
Y3Rpb24sICJlbnJfdGhyZXNob2xkIiwKKyAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3Iu
ZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uZW5yX3RocmVzaG9sZCk7CisgICAgICBSZWFkUGFy
YW0oc3Vic2VjdGlvbiwgImVucl9leGl0X3RocmVzaG9sZCIsCisgICAgICAgICAgICAgICAgJmNm
Zy5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmVucl9leGl0X3RocmVzaG9s
ZCk7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgInNucl90aHJlc2hvbGQiLAorICAgICAg
ICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5zbnJf
dGhyZXNob2xkKTsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiaG9sZF9kdXJhdGlvbiIs
CisgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0
aW9uLmhvbGRfZHVyYXRpb24pOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJ0cmlnZ2Vy
X3RocmVzaG9sZCIsCisgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmRvbWluYW50X25l
YXJlbmRfZGV0ZWN0aW9uLnRyaWdnZXJfdGhyZXNob2xkKTsKKyAgICAgIFJlYWRQYXJhbSgKKyAg
ICAgICAgICBzdWJzZWN0aW9uLCAidXNlX2R1cmluZ19pbml0aWFsX3BoYXNlIiwKKyAgICAgICAg
ICAmY2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24udXNlX2R1cmluZ19p
bml0aWFsX3BoYXNlKTsKKyAgICB9CisKKyAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2Jq
ZWN0KHNlY3Rpb24sICJoaWdoX2JhbmRzX3N1cHByZXNzaW9uIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZzdWJzZWN0aW9uKSkgeworICAgICAgUmVhZFBhcmFtKHN1YnNl
Y3Rpb24sICJlbnJfdGhyZXNob2xkIiwKKyAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3Iu
aGlnaF9iYW5kc19zdXBwcmVzc2lvbi5lbnJfdGhyZXNob2xkKTsKKyAgICAgIFJlYWRQYXJhbShz
dWJzZWN0aW9uLCAibWF4X2dhaW5fZHVyaW5nX2VjaG8iLAorICAgICAgICAgICAgICAgICZjZmcu
c3VwcHJlc3Nvci5oaWdoX2JhbmRzX3N1cHByZXNzaW9uLm1heF9nYWluX2R1cmluZ19lY2hvKTsK
KyAgICB9CisKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImZsb29yX2ZpcnN0X2luY3JlYXNlIiwK
KyAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmZsb29yX2ZpcnN0X2luY3JlYXNlKTsKKyAg
ICBSZWFkUGFyYW0oc2VjdGlvbiwgImVuZm9yY2VfdHJhbnNwYXJlbnQiLAorICAgICAgICAgICAg
ICAmY2ZnLnN1cHByZXNzb3IuZW5mb3JjZV90cmFuc3BhcmVudCk7CisgICAgUmVhZFBhcmFtKHNl
Y3Rpb24sICJlbmZvcmNlX2VtcHR5X2hpZ2hlcl9iYW5kcyIsCisgICAgICAgICAgICAgICZjZmcu
c3VwcHJlc3Nvci5lbmZvcmNlX2VtcHR5X2hpZ2hlcl9iYW5kcyk7CisgIH0KK30KKworRWNob0Nh
bmNlbGxlcjNDb25maWcgQWVjM0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGFic2w6OnN0cmluZ192aWV3
IGpzb25fc3RyaW5nKSB7CisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNmZzsKKyAgYm9vbCBub3Rf
dXNlZDsKKyAgQWVjM0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGpzb25fc3RyaW5nLCAmY2ZnLCAmbm90
X3VzZWQpOworICByZXR1cm4gY2ZnOworfQorCitzdGQ6OnN0cmluZyBBZWMzQ29uZmlnVG9Kc29u
U3RyaW5nKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpIHsKKyAgcnRjOjpTdHJp
bmdCdWlsZGVyIG9zdDsKKyAgb3N0IDw8ICJ7IjsKKyAgb3N0IDw8ICJcImFlYzNcIjogeyI7Cisg
IG9zdCA8PCAiXCJkZWxheVwiOiB7IjsKKyAgb3N0IDw8ICJcImRlZmF1bHRfZGVsYXlcIjogIiA8
PCBjb25maWcuZGVsYXkuZGVmYXVsdF9kZWxheSA8PCAiLCI7CisgIG9zdCA8PCAiXCJkb3duX3Nh
bXBsaW5nX2ZhY3RvclwiOiAiIDw8IGNvbmZpZy5kZWxheS5kb3duX3NhbXBsaW5nX2ZhY3Rvcgor
ICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwibnVtX2ZpbHRlcnNcIjogIiA8PCBjb25maWcuZGVs
YXkubnVtX2ZpbHRlcnMgPDwgIiwiOworICBvc3QgPDwgIlwiYXBpX2NhbGxfaml0dGVyX2Jsb2Nr
c1wiOiAiIDw8IGNvbmZpZy5kZWxheS5hcGlfY2FsbF9qaXR0ZXJfYmxvY2tzCisgICAgICA8PCAi
LCI7CisgIG9zdCA8PCAiXCJtaW5fZWNob19wYXRoX2RlbGF5X2Jsb2Nrc1wiOiAiCisgICAgICA8
PCBjb25maWcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3MgPDwgIiwiOworICBvc3Qg
PDwgIlwiZGVsYXlfaGVhZHJvb21fYmxvY2tzXCI6ICIgPDwgY29uZmlnLmRlbGF5LmRlbGF5X2hl
YWRyb29tX2Jsb2NrcworICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwiaHlzdGVyZXNpc19saW1p
dF8xX2Jsb2Nrc1wiOiAiCisgICAgICA8PCBjb25maWcuZGVsYXkuaHlzdGVyZXNpc19saW1pdF8x
X2Jsb2NrcyA8PCAiLCI7CisgIG9zdCA8PCAiXCJoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzXCI6
ICIKKyAgICAgIDw8IGNvbmZpZy5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzIDw8ICIs
IjsKKyAgb3N0IDw8ICJcInNrZXdfaHlzdGVyZXNpc19ibG9ja3NcIjogIiA8PCBjb25maWcuZGVs
YXkuc2tld19oeXN0ZXJlc2lzX2Jsb2NrcworICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwiZml4
ZWRfY2FwdHVyZV9kZWxheV9zYW1wbGVzXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5kZWxheS5maXhl
ZF9jYXB0dXJlX2RlbGF5X3NhbXBsZXMgPDwgIiwiOworICBvc3QgPDwgIlwiZGVsYXlfZXN0aW1h
dGVfc21vb3RoaW5nXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5kZWxheS5kZWxheV9lc3RpbWF0ZV9z
bW9vdGhpbmcgPDwgIiwiOworICBvc3QgPDwgIlwiZGVsYXlfY2FuZGlkYXRlX2RldGVjdGlvbl90
aHJlc2hvbGRcIjogIgorICAgICAgPDwgY29uZmlnLmRlbGF5LmRlbGF5X2NhbmRpZGF0ZV9kZXRl
Y3Rpb25fdGhyZXNob2xkIDw8ICIsIjsKKworICBvc3QgPDwgIlwiZGVsYXlfc2VsZWN0aW9uX3Ro
cmVzaG9sZHNcIjogeyI7CisgIG9zdCA8PCAiXCJpbml0aWFsXCI6ICIgPDwgY29uZmlnLmRlbGF5
LmRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzLmluaXRpYWwKKyAgICAgIDw8ICIsIjsKKyAgb3N0
IDw8ICJcImNvbnZlcmdlZFwiOiAiIDw8IGNvbmZpZy5kZWxheS5kZWxheV9zZWxlY3Rpb25fdGhy
ZXNob2xkcy5jb252ZXJnZWQ7CisgIG9zdCA8PCAifSI7CisKKyAgb3N0IDw8ICJ9LCI7CisKKyAg
b3N0IDw8ICJcImZpbHRlclwiOiB7IjsKKyAgb3N0IDw8ICJcIm1haW5cIjogWyI7CisgIG9zdCA8
PCBjb25maWcuZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2NrcyA8PCAiLCI7CisgIG9zdCA8PCBjb25m
aWcuZmlsdGVyLm1haW4ubGVha2FnZV9jb252ZXJnZWQgPDwgIiwiOworICBvc3QgPDwgY29uZmln
LmZpbHRlci5tYWluLmxlYWthZ2VfZGl2ZXJnZWQgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLmZp
bHRlci5tYWluLmVycm9yX2Zsb29yIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIubWFp
bi5lcnJvcl9jZWlsIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIubWFpbi5ub2lzZV9n
YXRlOworICBvc3QgPDwgIl0sIjsKKworICBvc3QgPDwgIlwic2hhZG93XCI6IFsiOworICBvc3Qg
PDwgY29uZmlnLmZpbHRlci5zaGFkb3cubGVuZ3RoX2Jsb2NrcyA8PCAiLCI7CisgIG9zdCA8PCBj
b25maWcuZmlsdGVyLnNoYWRvdy5yYXRlIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIu
c2hhZG93Lm5vaXNlX2dhdGU7CisgIG9zdCA8PCAiXSwiOworCisgIG9zdCA8PCAiXCJtYWluX2lu
aXRpYWxcIjogWyI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLm1haW5faW5pdGlhbC5sZW5ndGhf
YmxvY2tzIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIubWFpbl9pbml0aWFsLmxlYWth
Z2VfY29udmVyZ2VkIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIubWFpbl9pbml0aWFs
LmxlYWthZ2VfZGl2ZXJnZWQgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLmZpbHRlci5tYWluX2lu
aXRpYWwuZXJyb3JfZmxvb3IgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLmZpbHRlci5tYWluX2lu
aXRpYWwuZXJyb3JfY2VpbCA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLm1haW5faW5p
dGlhbC5ub2lzZV9nYXRlOworICBvc3QgPDwgIl0sIjsKKworICBvc3QgPDwgIlwic2hhZG93X2lu
aXRpYWxcIjogWyI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLnNoYWRvd19pbml0aWFsLmxlbmd0
aF9ibG9ja3MgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLmZpbHRlci5zaGFkb3dfaW5pdGlhbC5y
YXRlIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIuc2hhZG93X2luaXRpYWwubm9pc2Vf
Z2F0ZTsKKyAgb3N0IDw8ICJdLCI7CisKKyAgb3N0IDw8ICJcImNvbmZpZ19jaGFuZ2VfZHVyYXRp
b25fYmxvY2tzXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5maWx0ZXIuY29uZmlnX2NoYW5nZV9kdXJh
dGlvbl9ibG9ja3MgPDwgIiwiOworICBvc3QgPDwgIlwiaW5pdGlhbF9zdGF0ZV9zZWNvbmRzXCI6
ICIgPDwgY29uZmlnLmZpbHRlci5pbml0aWFsX3N0YXRlX3NlY29uZHMKKyAgICAgIDw8ICIsIjsK
KyAgb3N0IDw8ICJcImNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlXCI6ICIKKyAgICAgIDw8IChj
b25maWcuZmlsdGVyLmNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlID8gInRydWUiIDogImZhbHNl
IikgPDwgIiwiOworICBvc3QgPDwgIlwiZW5hYmxlX3NoYWRvd19maWx0ZXJfb3V0cHV0X3VzYWdl
XCI6ICIKKyAgICAgIDw8IChjb25maWcuZmlsdGVyLmVuYWJsZV9zaGFkb3dfZmlsdGVyX291dHB1
dF91c2FnZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCisgIG9zdCA8PCAifSwiOworCisgIG9zdCA8
PCAiXCJlcmxlXCI6IHsiOworICBvc3QgPDwgIlwibWluXCI6ICIgPDwgY29uZmlnLmVybGUubWlu
IDw8ICIsIjsKKyAgb3N0IDw8ICJcIm1heF9sXCI6ICIgPDwgY29uZmlnLmVybGUubWF4X2wgPDwg
IiwiOworICBvc3QgPDwgIlwibWF4X2hcIjogIiA8PCBjb25maWcuZXJsZS5tYXhfaCA8PCAiLCI7
CisgIG9zdCA8PCAiXCJvbnNldF9kZXRlY3Rpb25cIjogIgorICAgICAgPDwgKGNvbmZpZy5lcmxl
Lm9uc2V0X2RldGVjdGlvbiA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8ICIsIjsKKyAgb3N0IDw8ICJc
Im51bV9zZWN0aW9uc1wiOiAiIDw8IGNvbmZpZy5lcmxlLm51bV9zZWN0aW9uczsKKyAgb3N0IDw8
ICJ9LCI7CisKKyAgb3N0IDw8ICJcImVwX3N0cmVuZ3RoXCI6IHsiOworICBvc3QgPDwgIlwibGZc
IjogIiA8PCBjb25maWcuZXBfc3RyZW5ndGgubGYgPDwgIiwiOworICBvc3QgPDwgIlwibWZcIjog
IiA8PCBjb25maWcuZXBfc3RyZW5ndGgubWYgPDwgIiwiOworICBvc3QgPDwgIlwiaGZcIjogIiA8
PCBjb25maWcuZXBfc3RyZW5ndGguaGYgPDwgIiwiOworICBvc3QgPDwgIlwiZGVmYXVsdF9sZW5c
IjogIiA8PCBjb25maWcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4gPDwgIiwiOworICBvc3QgPDwg
IlwicmV2ZXJiX2Jhc2VkX29uX3JlbmRlclwiOiAiCisgICAgICA8PCAoY29uZmlnLmVwX3N0cmVu
Z3RoLnJldmVyYl9iYXNlZF9vbl9yZW5kZXIgPyAidHJ1ZSIgOiAiZmFsc2UiKSA8PCAiLCI7Cisg
IG9zdCA8PCAiXCJlY2hvX2Nhbl9zYXR1cmF0ZVwiOiAiCisgICAgICA8PCAoY29uZmlnLmVwX3N0
cmVuZ3RoLmVjaG9fY2FuX3NhdHVyYXRlID8gInRydWUiIDogImZhbHNlIikgPDwgIiwiOworICBv
c3QgPDwgIlwiYm91bmRlZF9lcmxcIjogIgorICAgICAgPDwgKGNvbmZpZy5lcF9zdHJlbmd0aC5i
b3VuZGVkX2VybCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCisgIG9zdCA8PCAifSwiOworCisgIG9z
dCA8PCAiXCJlY2hvX2F1ZGliaWxpdHlcIjogeyI7CisgIG9zdCA8PCAiXCJsb3dfcmVuZGVyX2xp
bWl0XCI6ICIgPDwgY29uZmlnLmVjaG9fYXVkaWJpbGl0eS5sb3dfcmVuZGVyX2xpbWl0CisgICAg
ICA8PCAiLCI7CisgIG9zdCA8PCAiXCJub3JtYWxfcmVuZGVyX2xpbWl0XCI6ICIKKyAgICAgIDw8
IGNvbmZpZy5lY2hvX2F1ZGliaWxpdHkubm9ybWFsX3JlbmRlcl9saW1pdCA8PCAiLCI7CisgIG9z
dCA8PCAiXCJmbG9vcl9wb3dlclwiOiAiIDw8IGNvbmZpZy5lY2hvX2F1ZGliaWxpdHkuZmxvb3Jf
cG93ZXIgPDwgIiwiOworICBvc3QgPDwgIlwiYXVkaWJpbGl0eV90aHJlc2hvbGRfbGZcIjogIgor
ICAgICAgPDwgY29uZmlnLmVjaG9fYXVkaWJpbGl0eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9sZiA8
PCAiLCI7CisgIG9zdCA8PCAiXCJhdWRpYmlsaXR5X3RocmVzaG9sZF9tZlwiOiAiCisgICAgICA8
PCBjb25maWcuZWNob19hdWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhyZXNob2xkX21mIDw8ICIsIjsK
KyAgb3N0IDw8ICJcImF1ZGliaWxpdHlfdGhyZXNob2xkX2hmXCI6ICIKKyAgICAgIDw8IGNvbmZp
Zy5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfaGYgPDwgIiwiOworICBvc3Qg
PDwgIlwidXNlX3N0YXRpb25hcnlfcHJvcGVydGllc1wiOiAiCisgICAgICA8PCAoY29uZmlnLmVj
aG9fYXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVzID8gInRydWUiIDogImZhbHNl
IikKKyAgICAgIDw8ICIsIjsKKyAgb3N0IDw8ICJcInVzZV9zdGF0aW9uYXJpdHlfcHJvcGVydGll
c19hdF9pbml0XCI6ICIKKyAgICAgIDw8IChjb25maWcuZWNob19hdWRpYmlsaXR5LnVzZV9zdGF0
aW9uYXJpdHlfcHJvcGVydGllc19hdF9pbml0ID8gInRydWUiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJmYWxz
ZSIpOworICBvc3QgPDwgIn0sIjsKKworICBvc3QgPDwgIlwicmVuZGVyX2xldmVsc1wiOiB7IjsK
KyAgb3N0IDw8ICJcImFjdGl2ZV9yZW5kZXJfbGltaXRcIjogIiA8PCBjb25maWcucmVuZGVyX2xl
dmVscy5hY3RpdmVfcmVuZGVyX2xpbWl0CisgICAgICA8PCAiLCI7CisgIG9zdCA8PCAiXCJwb29y
X2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0XCI6ICIKKyAgICAgIDw8IGNvbmZpZy5yZW5kZXJfbGV2
ZWxzLnBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGltaXQgPDwgIiwiOworICBvc3QgPDwgIlwicG9v
cl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdF9kczhcIjogIgorICAgICAgPDwgY29uZmlnLnJlbmRl
cl9sZXZlbHMucG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdF9kczg7CisgIG9zdCA8PCAifSwi
OworCisgIG9zdCA8PCAiXCJlY2hvX3JlbW92YWxfY29udHJvbFwiOiB7IjsKKyAgb3N0IDw8ICJc
ImdhaW5fcmFtcHVwXCI6IHsiOworICBvc3QgPDwgIlwiaW5pdGlhbF9nYWluXCI6ICIKKyAgICAg
IDw8IGNvbmZpZy5lY2hvX3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5pbml0aWFsX2dhaW4g
PDwgIiwiOworICBvc3QgPDwgIlwiZmlyc3Rfbm9uX3plcm9fZ2FpblwiOiAiCisgICAgICA8PCBj
b25maWcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZmlyc3Rfbm9uX3plcm9fZ2Fp
biA8PCAiLCI7CisgIG9zdCA8PCAiXCJub25femVyb19nYWluX2Jsb2Nrc1wiOiAiCisgICAgICA8
PCBjb25maWcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAubm9uX3plcm9fZ2Fpbl9i
bG9ja3MgPDwgIiwiOworICBvc3QgPDwgIlwiZnVsbF9nYWluX2Jsb2Nrc1wiOiAiCisgICAgICA8
PCBjb25maWcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZnVsbF9nYWluX2Jsb2Nr
czsKKyAgb3N0IDw8ICJ9LCI7CisgIG9zdCA8PCAiXCJoYXNfY2xvY2tfZHJpZnRcIjogIgorICAg
ICAgPDwgKGNvbmZpZy5lY2hvX3JlbW92YWxfY29udHJvbC5oYXNfY2xvY2tfZHJpZnQgPyAidHJ1
ZSIgOiAiZmFsc2UiKQorICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwibGluZWFyX2FuZF9zdGFi
bGVfZWNob19wYXRoXCI6ICIKKyAgICAgIDw8IChjb25maWcuZWNob19yZW1vdmFsX2NvbnRyb2wu
bGluZWFyX2FuZF9zdGFibGVfZWNob19wYXRoID8gInRydWUiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJmYWxzZSIp
OworCisgIG9zdCA8PCAifSwiOworCisgIG9zdCA8PCAiXCJlY2hvX21vZGVsXCI6IHsiOworICBv
c3QgPDwgIlwibm9pc2VfZmxvb3JfaG9sZFwiOiAiIDw8IGNvbmZpZy5lY2hvX21vZGVsLm5vaXNl
X2Zsb29yX2hvbGQgPDwgIiwiOworICBvc3QgPDwgIlwibWluX25vaXNlX2Zsb29yX3Bvd2VyXCI6
ICIKKyAgICAgIDw8IGNvbmZpZy5lY2hvX21vZGVsLm1pbl9ub2lzZV9mbG9vcl9wb3dlciA8PCAi
LCI7CisgIG9zdCA8PCAiXCJzdGF0aW9uYXJ5X2dhdGVfc2xvcGVcIjogIgorICAgICAgPDwgY29u
ZmlnLmVjaG9fbW9kZWwuc3RhdGlvbmFyeV9nYXRlX3Nsb3BlIDw8ICIsIjsKKyAgb3N0IDw8ICJc
Im5vaXNlX2dhdGVfcG93ZXJcIjogIiA8PCBjb25maWcuZWNob19tb2RlbC5ub2lzZV9nYXRlX3Bv
d2VyIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm5vaXNlX2dhdGVfc2xvcGVcIjogIiA8PCBjb25maWcu
ZWNob19tb2RlbC5ub2lzZV9nYXRlX3Nsb3BlIDw8ICIsIjsKKyAgb3N0IDw8ICJcInJlbmRlcl9w
cmVfd2luZG93X3NpemVcIjogIgorICAgICAgPDwgY29uZmlnLmVjaG9fbW9kZWwucmVuZGVyX3By
ZV93aW5kb3dfc2l6ZSA8PCAiLCI7CisgIG9zdCA8PCAiXCJyZW5kZXJfcG9zdF93aW5kb3dfc2l6
ZVwiOiAiCisgICAgICA8PCBjb25maWcuZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6
ZSA8PCAiLCI7CisgIG9zdCA8PCAiXCJyZW5kZXJfcHJlX3dpbmRvd19zaXplX2luaXRcIjogIgor
ICAgICAgPDwgY29uZmlnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0IDw8
ICIsIjsKKyAgb3N0IDw8ICJcInJlbmRlcl9wb3N0X3dpbmRvd19zaXplX2luaXRcIjogIgorICAg
ICAgPDwgY29uZmlnLmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemVfaW5pdCA8PCAi
LCI7CisgIG9zdCA8PCAiXCJub25saW5lYXJfaG9sZFwiOiAiIDw8IGNvbmZpZy5lY2hvX21vZGVs
Lm5vbmxpbmVhcl9ob2xkIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm5vbmxpbmVhcl9yZWxlYXNlXCI6
ICIgPDwgY29uZmlnLmVjaG9fbW9kZWwubm9ubGluZWFyX3JlbGVhc2U7CisgIG9zdCA8PCAifSwi
OworCisgIG9zdCA8PCAiXCJzdXBwcmVzc29yXCI6IHsiOworICBvc3QgPDwgIlwibmVhcmVuZF9h
dmVyYWdlX2Jsb2Nrc1wiOiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nvci5uZWFyZW5kX2F2
ZXJhZ2VfYmxvY2tzIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm5vcm1hbF90dW5pbmdcIjogeyI7Cisg
IG9zdCA8PCAiXCJtYXNrX2xmXCI6IFsiOworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3Iubm9y
bWFsX3R1bmluZy5tYXNrX2xmLmVucl90cmFuc3BhcmVudCA8PCAiLCI7CisgIG9zdCA8PCBjb25m
aWcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfbGYuZW5yX3N1cHByZXNzIDw8ICIsIjsK
KyAgb3N0IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19sZi5lbXJfdHJh
bnNwYXJlbnQ7CisgIG9zdCA8PCAiXSwiOworICBvc3QgPDwgIlwibWFza19oZlwiOiBbIjsKKyAg
b3N0IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5lbnJfdHJhbnNw
YXJlbnQgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5t
YXNrX2hmLmVucl9zdXBwcmVzcyA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuc3VwcHJlc3Nvci5u
b3JtYWxfdHVuaW5nLm1hc2tfaGYuZW1yX3RyYW5zcGFyZW50OworICBvc3QgPDwgIl0sIjsKKyAg
b3N0IDw8ICJcIm1heF9pbmNfZmFjdG9yXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29y
Lm5vcm1hbF90dW5pbmcubWF4X2luY19mYWN0b3IgPDwgIiwiOworICBvc3QgPDwgIlwibWF4X2Rl
Y19mYWN0b3JfbGZcIjogIgorICAgICAgPDwgY29uZmlnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmlu
Zy5tYXhfZGVjX2ZhY3Rvcl9sZjsKKyAgb3N0IDw8ICJ9LCI7CisgIG9zdCA8PCAiXCJuZWFyZW5k
X3R1bmluZ1wiOiB7IjsKKyAgb3N0IDw8ICJcIm1hc2tfbGZcIjogWyI7CisgIG9zdCA8PCBjb25m
aWcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2xmLmVucl90cmFuc3BhcmVudCA8PCAi
LCI7CisgIG9zdCA8PCBjb25maWcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2xmLmVu
cl9zdXBwcmVzcyA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1
bmluZy5tYXNrX2xmLmVtcl90cmFuc3BhcmVudDsKKyAgb3N0IDw8ICJdLCI7CisgIG9zdCA8PCAi
XCJtYXNrX2hmXCI6IFsiOworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3IubmVhcmVuZF90dW5p
bmcubWFza19oZi5lbnJfdHJhbnNwYXJlbnQgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLnN1cHBy
ZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19oZi5lbnJfc3VwcHJlc3MgPDwgIiwiOworICBvc3Qg
PDwgY29uZmlnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19oZi5lbXJfdHJhbnNwYXJl
bnQ7CisgIG9zdCA8PCAiXSwiOworICBvc3QgPDwgIlwibWF4X2luY19mYWN0b3JcIjogIgorICAg
ICAgPDwgY29uZmlnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWF4X2luY19mYWN0b3IgPDwg
IiwiOworICBvc3QgPDwgIlwibWF4X2RlY19mYWN0b3JfbGZcIjogIgorICAgICAgPDwgY29uZmln
LnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWF4X2RlY19mYWN0b3JfbGY7CisgIG9zdCA8PCAi
fSwiOworICBvc3QgPDwgIlwiZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb25cIjogeyI7CisgIG9z
dCA8PCAiXCJlbnJfdGhyZXNob2xkXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29yLmRv
bWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmVucl90aHJlc2hvbGQgPDwgIiwiOworICBvc3QgPDwg
IlwiZW5yX2V4aXRfdGhyZXNob2xkXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29yLmRv
bWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmVucl9leGl0X3RocmVzaG9sZCA8PCAiLCI7CisgIG9z
dCA8PCAiXCJzbnJfdGhyZXNob2xkXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29yLmRv
bWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLnNucl90aHJlc2hvbGQgPDwgIiwiOworICBvc3QgPDwg
IlwiaG9sZF9kdXJhdGlvblwiOiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nvci5kb21pbmFu
dF9uZWFyZW5kX2RldGVjdGlvbi5ob2xkX2R1cmF0aW9uIDw8ICIsIjsKKyAgb3N0IDw8ICJcInRy
aWdnZXJfdGhyZXNob2xkXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29yLmRvbWluYW50
X25lYXJlbmRfZGV0ZWN0aW9uLnRyaWdnZXJfdGhyZXNob2xkIDw8ICIsIjsKKyAgb3N0IDw8ICJc
InVzZV9kdXJpbmdfaW5pdGlhbF9waGFzZVwiOiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nv
ci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi51c2VfZHVyaW5nX2luaXRpYWxfcGhhc2U7Cisg
IG9zdCA8PCAifSwiOworICBvc3QgPDwgIlwiaGlnaF9iYW5kc19zdXBwcmVzc2lvblwiOiB7IjsK
KyAgb3N0IDw8ICJcImVucl90aHJlc2hvbGRcIjogIgorICAgICAgPDwgY29uZmlnLnN1cHByZXNz
b3IuaGlnaF9iYW5kc19zdXBwcmVzc2lvbi5lbnJfdGhyZXNob2xkIDw8ICIsIjsKKyAgb3N0IDw8
ICJcIm1heF9nYWluX2R1cmluZ19lY2hvXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29y
LmhpZ2hfYmFuZHNfc3VwcHJlc3Npb24ubWF4X2dhaW5fZHVyaW5nX2VjaG87CisgIG9zdCA8PCAi
fSwiOworICBvc3QgPDwgIlwiZmxvb3JfZmlyc3RfaW5jcmVhc2VcIjogIiA8PCBjb25maWcuc3Vw
cHJlc3Nvci5mbG9vcl9maXJzdF9pbmNyZWFzZQorICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwi
ZW5mb3JjZV90cmFuc3BhcmVudFwiOiAiCisgICAgICA8PCAoY29uZmlnLnN1cHByZXNzb3IuZW5m
b3JjZV90cmFuc3BhcmVudCA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8ICIsIjsKKyAgb3N0IDw8ICJc
ImVuZm9yY2VfZW1wdHlfaGlnaGVyX2JhbmRzXCI6ICIKKyAgICAgIDw8IChjb25maWcuc3VwcHJl
c3Nvci5lbmZvcmNlX2VtcHR5X2hpZ2hlcl9iYW5kcyA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICBv
c3QgPDwgIn0iOworICBvc3QgPDwgIn0iOworICBvc3QgPDwgIn0iOworCisgIHJldHVybiBvc3Qu
UmVsZWFzZSgpOworfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2Vs
bGVyM19jb25maWdfanNvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg5NzM2NTBmODVjMWE2MTc1M2NiYzU5MWQ0ZjE2MjEyODZhOTgxZDQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8v
ZWNob19jYW5jZWxsZXIzX2NvbmZpZ19qc29uLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX0FVRElPX0VDSE9fQ0FOQ0VMTEVSM19DT05GSUdf
SlNPTl9IXworI2RlZmluZSBBUElfQVVESU9fRUNIT19DQU5DRUxMRVIzX0NPTkZJR19KU09OX0hf
CisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3Zp
ZXcuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworLy8gUGFyc2VzIGEgSlNPTi1lbmNvZGVkIHN0cmluZyBpbnRvIGFuIEFlYzMgY29uZmlnLiBG
aWVsZHMgY29ycmVzcG9uZHMgdG8KKy8vIHN1YnN0cnVjdCBuYW1lcywgd2l0aCB0aGUgYWRkaXRp
b24gdGhhdCB0aGVyZSBtdXN0IGJlIGEgdG9wLWxldmVsIG5vZGUKKy8vICJhZWMzIi4gUHJvZHVj
ZXMgZGVmYXVsdCBjb25maWcgdmFsdWVzIGZvciBhbnl0aGluZyB0aGF0IGNhbm5vdCBiZSBwYXJz
ZWQKKy8vIGZyb20gdGhlIHN0cmluZy4gSWYgYW55IGVycm9yIHdhcyBmb3VuZCBpbiB0aGUgcGFy
c2luZywgcGFyc2luZ19zdWNjZXNzZnVsIGlzCisvLyBzZXQgdG8gZmFsc2UuCitSVENfRVhQT1JU
IHZvaWQgQWVjM0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGFic2w6OnN0cmluZ192aWV3IGpzb25fc3Ry
aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZyogY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sKiBwYXJzaW5nX3N1Y2Nlc3NmdWwpOworCisvLyBUbyBiZSBkZXByZWNhdGVkLgor
Ly8gUGFyc2VzIGEgSlNPTi1lbmNvZGVkIHN0cmluZyBpbnRvIGFuIEFlYzMgY29uZmlnLiBGaWVs
ZHMgY29ycmVzcG9uZHMgdG8KKy8vIHN1YnN0cnVjdCBuYW1lcywgd2l0aCB0aGUgYWRkaXRpb24g
dGhhdCB0aGVyZSBtdXN0IGJlIGEgdG9wLWxldmVsIG5vZGUKKy8vICJhZWMzIi4gUmV0dXJucyBk
ZWZhdWx0IGNvbmZpZyB2YWx1ZXMgZm9yIGFueXRoaW5nIHRoYXQgY2Fubm90IGJlIHBhcnNlZCBm
cm9tCisvLyB0aGUgc3RyaW5nLgorUlRDX0VYUE9SVCBFY2hvQ2FuY2VsbGVyM0NvbmZpZworQWVj
M0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGFic2w6OnN0cmluZ192aWV3IGpzb25fc3RyaW5nKTsKKwor
Ly8gRW5jb2RlcyBhbiBBZWMzIGNvbmZpZyBpbiBKU09OIGZvcm1hdC4gRmllbGRzIGNvcnJlc3Bv
bmRzIHRvIHN1YnN0cnVjdCBuYW1lcywKKy8vIHdpdGggdGhlIGFkZGl0aW9uIHRoYXQgdGhlIHRv
cC1sZXZlbCBub2RlIGlzIG5hbWVkICJhZWMzIi4KK3N0ZDo6c3RyaW5nIEFlYzNDb25maWdUb0pz
b25TdHJpbmcoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZyk7CisKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfQVVESU9fRUNIT19DQU5DRUxMRVIzX0NP
TkZJR19KU09OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2ZhY3RvcnkuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxl
cjNfZmFjdG9yeS5oCmluZGV4IGY2ZGIxMTY4NTAzN2ExYTJjMzJkODRhNmY3NjVhMjg3ZmM0NzVi
N2YuLjkwNTJkOTliYjFlYjg5MWJkYzNjZWI5ZjlmZmE2YTkyMGFjMzI2MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hv
X2NhbmNlbGxlcjNfZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfZmFjdG9yeS5oCkBAIC0xNSwx
MCArMTUsMTEgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmln
LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY29udHJvbC5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBF
Y2hvQ2FuY2VsbGVyM0ZhY3RvcnkgOiBwdWJsaWMgRWNob0NvbnRyb2xGYWN0b3J5IHsKK2NsYXNz
IFJUQ19FWFBPUlQgRWNob0NhbmNlbGxlcjNGYWN0b3J5IDogcHVibGljIEVjaG9Db250cm9sRmFj
dG9yeSB7CiAgcHVibGljOgogICAvLyBGYWN0b3J5IHByb2R1Y2luZyBFY2hvQ2FuY2VsbGVyMyBp
bnN0YW5jZXMgd2l0aCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgogICBFY2hvQ2FuY2VsbGVy
M0ZhY3RvcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpby90ZXN0L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL3Rlc3QvQlVJTEQuZ24KaW5kZXggOWE3OTc3
ODhmNjhkY2VhNzJkZTkyMTIzYzFiNTUyNGE1MTQ0N2JhZC4uNGUwNGE4YTY0YTEwNDhhZjAzMzI0
MzFiNDZjMTU3ZmRhNmRkZGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL3Rlc3QvQlVJTEQuZ24KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL3Rlc3QvQlVJTEQuZ24K
QEAgLTE3LDggKzE3LDEyIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIHRlc3Rvbmx5
ID0gdHJ1ZQogICAgIHNvdXJjZXMgPSBbCiAgICAgICAiYXVkaW9fZnJhbWVfdW5pdHRlc3QuY2Mi
LAorICAgICAgImVjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbl91bml0dGVzdC5jYyIsCisgICAg
ICAiZWNob19jYW5jZWxsZXIzX2NvbmZpZ191bml0dGVzdC5jYyIsCiAgICAgXQogICAgIGRlcHMg
PSBbCisgICAgICAiLi46YWVjM19jb25maWciLAorICAgICAgIi4uOmFlYzNfY29uZmlnX2pzb24i
LAogICAgICAgIi4uOmF1ZGlvX2ZyYW1lX2FwaSIsCiAgICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uLy4uLy4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpby90ZXN0L2VjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbl91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby90ZXN0L2Vj
aG9fY2FuY2VsbGVyM19jb25maWdfanNvbl91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzNhNDQ1
YzYwYTM0MTJkMDNhMGEyY2VmMjk0N2RlMTRkMTU2YjVkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL3Rlc3QvZWNo
b19jYW5jZWxsZXIzX2NvbmZpZ19qc29uX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsNDEgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2Nv
bmZpZ19qc29uLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcu
aCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitURVNU
KEVjaG9DYW5jZWxsZXIzSnNvbkhlbHBlcnMsIFRvU3RyaW5nQW5kUGFyc2VKc29uKSB7CisgIEVj
aG9DYW5jZWxsZXIzQ29uZmlnIGNmZzsKKyAgY2ZnLmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9y
ID0gMXU7CisgIGNmZy5maWx0ZXIuc2hhZG93X2luaXRpYWwubGVuZ3RoX2Jsb2NrcyA9IDd1Owor
ICBjZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYuZW5yX3N1cHByZXNzID0gLjVm
OworICBzdGQ6OnN0cmluZyBqc29uX3N0cmluZyA9IEFlYzNDb25maWdUb0pzb25TdHJpbmcoY2Zn
KTsKKyAgRWNob0NhbmNlbGxlcjNDb25maWcgY2ZnX3RyYW5zZm9ybWVkID0gQWVjM0NvbmZpZ0Zy
b21Kc29uU3RyaW5nKGpzb25fc3RyaW5nKTsKKworICAvLyBFeHBlY3QgdW5jaGFuZ2VkIHZhbHVl
cyB0byByZW1haW4gZGVmYXVsdC4KKyAgRVhQRUNUX0VRKGNmZy5maWx0ZXIubWFpbi5lcnJvcl9m
bG9vciwKKyAgICAgICAgICAgIGNmZ190cmFuc2Zvcm1lZC5maWx0ZXIubWFpbi5lcnJvcl9mbG9v
cik7CisgIEVYUEVDVF9FUShjZmcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4sCisgICAgICAgICAg
ICBjZmdfdHJhbnNmb3JtZWQuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4pOworICBFWFBFQ1RfRVEo
Y2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2xmLmVucl9zdXBwcmVzcywKKyAgICAg
ICAgICAgIGNmZ190cmFuc2Zvcm1lZC5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19sZi5l
bnJfc3VwcHJlc3MpOworCisgIC8vIEV4cGVjdCBjaGFuZ2VkIHZhbHVlcyB0byBjYXJyeSB0aHJv
dWdoIHRoZSB0cmFuc2Zvcm1hdGlvbi4KKyAgRVhQRUNUX0VRKGNmZy5kZWxheS5kb3duX3NhbXBs
aW5nX2ZhY3RvciwKKyAgICAgICAgICAgIGNmZ190cmFuc2Zvcm1lZC5kZWxheS5kb3duX3NhbXBs
aW5nX2ZhY3Rvcik7CisgIEVYUEVDVF9FUShjZmcuZmlsdGVyLnNoYWRvd19pbml0aWFsLmxlbmd0
aF9ibG9ja3MsCisgICAgICAgICAgICBjZmdfdHJhbnNmb3JtZWQuZmlsdGVyLnNoYWRvd19pbml0
aWFsLmxlbmd0aF9ibG9ja3MpOworICBFWFBFQ1RfRVEoY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1
bmluZy5tYXNrX2hmLmVucl9zdXBwcmVzcywKKyAgICAgICAgICAgIGNmZ190cmFuc2Zvcm1lZC5z
dXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5lbnJfc3VwcHJlc3MpOworfQorfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL3Rlc3QvZWNob19jYW5jZWxsZXIzX2NvbmZpZ191bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpby90ZXN0L2VjaG9fY2FuY2VsbGVyM19jb25maWdfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmZlNzJhYzk1OGRmNTljNTU0ZTkxMDI5NzcwN2I1ZDdjYTE0YzMwZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby90
ZXN0L2VjaG9fY2FuY2VsbGVyM19jb25maWdfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUgImFwaS9h
dWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9f
Y2FuY2VsbGVyM19jb25maWdfanNvbi5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKK1RFU1QoRWNob0NhbmNlbGxlcjNDb25maWcsIFZhbGlkQ29uZmln
SXNOb3RNb2RpZmllZCkgeworICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CisgIEVYUEVD
VF9UUlVFKEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpWYWxpZGF0ZSgmY29uZmlnKSk7CisgIEVjaG9D
YW5jZWxsZXIzQ29uZmlnIGRlZmF1bHRfY29uZmlnOworICBFWFBFQ1RfRVEoQWVjM0NvbmZpZ1Rv
SnNvblN0cmluZyhjb25maWcpLAorICAgICAgICAgICAgQWVjM0NvbmZpZ1RvSnNvblN0cmluZyhk
ZWZhdWx0X2NvbmZpZykpOworfQorCitURVNUKEVjaG9DYW5jZWxsZXIzQ29uZmlnLCBJbnZhbGlk
Q29uZmlnSXNDb3JyZWN0ZWQpIHsKKyAgLy8gQ2hhbmdlIGEgcGFyYW1ldGVyIGFuZCB2YWxpZGF0
ZS4KKyAgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnOworICBjb25maWcuZWNob19tb2RlbC5t
aW5fbm9pc2VfZmxvb3JfcG93ZXIgPSAtMTYwMDAwMC5mOworICBFWFBFQ1RfRkFMU0UoRWNob0Nh
bmNlbGxlcjNDb25maWc6OlZhbGlkYXRlKCZjb25maWcpKTsKKyAgRVhQRUNUX0dFKGNvbmZpZy5l
Y2hvX21vZGVsLm1pbl9ub2lzZV9mbG9vcl9wb3dlciwgMC5mKTsKKyAgLy8gVmVyaWZ5IHJlbWFp
bmluZyBwYXJhbWV0ZXJzIGFyZSB1bmNoYW5nZWQuCisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGRl
ZmF1bHRfY29uZmlnOworICBjb25maWcuZWNob19tb2RlbC5taW5fbm9pc2VfZmxvb3JfcG93ZXIg
PQorICAgICAgZGVmYXVsdF9jb25maWcuZWNob19tb2RlbC5taW5fbm9pc2VfZmxvb3JfcG93ZXI7
CisgIEVYUEVDVF9FUShBZWMzQ29uZmlnVG9Kc29uU3RyaW5nKGNvbmZpZyksCisgICAgICAgICAg
ICBBZWMzQ29uZmlnVG9Kc29uU3RyaW5nKGRlZmF1bHRfY29uZmlnKSk7Cit9CisKK1RFU1QoRWNo
b0NhbmNlbGxlcjNDb25maWcsIFZhbGlkYXRlZENvbmZpZ3NBcmVWYWxpZCkgeworICBFY2hvQ2Fu
Y2VsbGVyM0NvbmZpZyBjb25maWc7CisgIGNvbmZpZy5kZWxheS5kb3duX3NhbXBsaW5nX2ZhY3Rv
ciA9IDk4MzsKKyAgRVhQRUNUX0ZBTFNFKEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpWYWxpZGF0ZSgm
Y29uZmlnKSk7CisgIEVYUEVDVF9UUlVFKEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpWYWxpZGF0ZSgm
Y29uZmlnKSk7Cit9Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0JVSUxE
LmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X2NvZGVjcy9CVUlMRC5nbgppbmRleCBhNzA2MGEyMjlhZGYwMTcxODE0NzI0MzMzYTY5ODM0M2Uy
Y2NhYWQ1Li4zMWZlMmJlYzU4YjAzYmU1M2UxNDI4NDk0YTI3MDJhMGU2MjU0Mzg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvQlVJTEQuZ24KQEAgLTMwLDExICszMCwxMyBAQCBydGNf
c291cmNlX3NldCgiYXVkaW9fY29kZWNzX2FwaSIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIu
LjphcnJheV92aWV3IiwKKyAgICAiLi46Yml0cmF0ZV9hbGxvY2F0aW9uIiwKICAgICAiLi4vLi46
d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4u
L3J0Y19iYXNlOmRlcHJlY2F0aW9uIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBw
cm92ZWQiLAogICAgICIuLi8uLi9ydGNfYmFzZTpzYW5pdGl6ZXIiLAorICAgICIuLi8uLi9ydGNf
YmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpv
cHRpb25hbCIsCiAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L0JVSUxELmduIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvQlVJTEQu
Z24KaW5kZXggOTcyNDgwNTAwMTI1ZmE5ZGNlMjczMDdiNDc1M2Q2MjExNjYxZmUwNC4uMzRlYzJl
NDIwOGVmMzQ4NTZiNTg1NGJhOWMwY2RlZjRiOTkzNzJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvQlVJ
TEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9MMTYvQlVJTEQuZ24KQEAgLTIxLDExICsyMSwxMiBAQCBydGNfc3RhdGlj
X2xpYnJhcnkoImF1ZGlvX2VuY29kZXJfTDE2IikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4u
OmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAi
Li4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6cGNtMTZiIiwKICAgICAiLi4vLi4vLi4vcnRj
X2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpzYWZlX21p
bm1heCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtMzksMTAgKzQwLDExIEBAIHJ0Y19z
dGF0aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rlcl9MMTYiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAg
ICAiLi46YXVkaW9fY29kZWNzX2FwaSIsCi0gICAgIi4uLy4uLy4uOndlYnJ0Y19jb21tb24iLAog
ICAgICIuLi8uLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpwY20xNmIiLAogICAgICIuLi8uLi8u
Li9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5
c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rlcl9MMTYuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19kZWNv
ZGVyX0wxNi5jYwppbmRleCBhNzFlMzA4NzAwN2RmM2ZkNzZmYTIzMmZjM2UzNDY4ZmEzODIxZTk5
Li5iZTBjNmI1NmIyNWI1NjllYWU1ZTY1YmM3Nzg1OTg3YzRjNTg2MjE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L0wxNi9hdWRpb19kZWNvZGVyX0wxNi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19kZWNvZGVyX0wxNi5j
YwpAQCAtMTEsNyArMTEsNyBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlv
X2RlY29kZXJfTDE2LmgiCiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNs
dWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9wY20xNmIvYXVkaW9fZGVjb2Rlcl9wY20xNmIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3BjbTE2Yl9jb21tb24uaCIKICNpbmNsdWRlICJydGNf
YmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCkBAIC0yMyw3ICsyMyw3IEBAIGFic2w6
Om9wdGlvbmFsPEF1ZGlvRGVjb2RlckwxNjo6Q29uZmlnPiBBdWRpb0RlY29kZXJMMTY6OlNkcFRv
Q29uZmlnKAogICBDb25maWcgY29uZmlnOwogICBjb25maWcuc2FtcGxlX3JhdGVfaHogPSBmb3Jt
YXQuY2xvY2tyYXRlX2h6OwogICBjb25maWcubnVtX2NoYW5uZWxzID0gcnRjOjpjaGVja2VkX2Nh
c3Q8aW50Pihmb3JtYXQubnVtX2NoYW5uZWxzKTsKLSAgcmV0dXJuIFNUUl9DQVNFX0NNUChmb3Jt
YXQubmFtZS5jX3N0cigpLCAiTDE2IikgPT0gMCAmJiBjb25maWcuSXNPaygpCisgIHJldHVybiBh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiTDE2IikgJiYgY29uZmlnLklzT2so
KQogICAgICAgICAgICAgID8gYWJzbDo6b3B0aW9uYWw8Q29uZmlnPihjb25maWcpCiAgICAgICAg
ICAgICAgOiBhYnNsOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rl
cl9MMTYuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvTDE2L2F1ZGlvX2RlY29kZXJfTDE2LmgKaW5kZXggMTg0ZWMyNGVkOTJmMWUy
MmQzMGM5YjJlNmJlN2YzZDdmNzdlMTVjOC4uZjBiZTAzNjU5YzU0OGMxYzQ3OGIzYWUwZTk1NjRl
NTU5NTMwMzEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rlcl9MMTYuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L0wxNi9hdWRpb19kZWNvZGVyX0wxNi5oCkBAIC0xOCwxNCArMTgsMTMgQEAKICNpbmNsdWRlICJh
cGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1
ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBMMTYgZGVjb2RlciBBUEkgZm9yIHVzZSBhcyBhIHRl
bXBsYXRlIHBhcmFtZXRlciB0bwogLy8gQ3JlYXRlQXVkaW9EZWNvZGVyRmFjdG9yeTwuLi4+KCku
Ci0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5k
IG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi1zdHJ1Y3QgQXVkaW9EZWNvZGVyTDE2IHsKK3N0
cnVjdCBSVENfRVhQT1JUIEF1ZGlvRGVjb2RlckwxNiB7CiAgIHN0cnVjdCBDb25maWcgewogICAg
IGJvb2wgSXNPaygpIGNvbnN0IHsKICAgICAgIHJldHVybiAoc2FtcGxlX3JhdGVfaHogPT0gODAw
MCB8fCBzYW1wbGVfcmF0ZV9oeiA9PSAxNjAwMCB8fApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9f
ZW5jb2Rlcl9MMTYuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5jYwppbmRleCBiNTE2ZjYy
ODYzZGEyNGZjZTM1ZWY1MmQ0NmEwZTA0YzJkNWM3OTdmLi4xYmI1NTJiYzVjMWU2ZTMyNTdiMTg1
NzJmOTdiMzM0NWZkYWUzYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5jYwpAQCAtMTEsNyArMTEsNyBAQAogI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2VuY29kZXJfTDE2LmgiCiAKICNpbmNs
dWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8v
IE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9fZW5jb2Rl
cl9wY20xNmIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZi
L3BjbTE2Yl9jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZl
cnNpb25zLmgiCkBAIC0zNSw3ICszNSw3IEBAIGFic2w6Om9wdGlvbmFsPEF1ZGlvRW5jb2Rlckwx
Njo6Q29uZmlnPiBBdWRpb0VuY29kZXJMMTY6OlNkcFRvQ29uZmlnKAogICAgICAgY29uZmlnLmZy
YW1lX3NpemVfbXMgPSBydGM6OlNhZmVDbGFtcCgxMCAqICgqcHRpbWUgLyAxMCksIDEwLCA2MCk7
CiAgICAgfQogICB9Ci0gIHJldHVybiBTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwg
IkwxNiIpID09IDAgJiYgY29uZmlnLklzT2soKQorICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3Jl
Q2FzZShmb3JtYXQubmFtZSwgIkwxNiIpICYmIGNvbmZpZy5Jc09rKCkKICAgICAgICAgICAgICA/
IGFic2w6Om9wdGlvbmFsPENvbmZpZz4oY29uZmlnKQogICAgICAgICAgICAgIDogYWJzbDo6bnVs
bG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2VuY29kZXJfTDE2LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9h
dWRpb19lbmNvZGVyX0wxNi5oCmluZGV4IDM0MGUzYWY0N2ZiYWY3N2NhYWViODQ0MzExYTc0Yjg5
NTA2ZWRmY2EuLmI0MTAyODY4MDJmZTc2ODlhY2M0Zjk4ODk3NzhiODhjYzhlZThhM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvTDE2L2F1ZGlvX2VuY29kZXJfTDE2LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZW5jb2Rl
cl9MMTYuaApAQCAtMTgsMTQgKzE4LDEzIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19l
bmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIAogLy8gTDE2IGVuY29kZXIgQVBJIGZvciB1c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIg
dG8KIC8vIENyZWF0ZUF1ZGlvRW5jb2RlckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRo
aXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhv
dXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRW5jb2RlckwxNiB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBB
dWRpb0VuY29kZXJMMTYgewogICBzdHJ1Y3QgQ29uZmlnIHsKICAgICBib29sIElzT2soKSBjb25z
dCB7CiAgICAgICByZXR1cm4gKHNhbXBsZV9yYXRlX2h6ID09IDgwMDAgfHwgc2FtcGxlX3JhdGVf
aHogPT0gMTYwMDAgfHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9pZC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
YXVkaW9fY29kZWNfcGFpcl9pZC5jYwppbmRleCBhYzg0MTA3ZWRhMTA4MjQ5ZDk0ZDMxYTg3MTc3
NjNlOWYwNGFmMTc4Li42Y2I1MWVkNmI3MmM3ZTRmNDY1MmRjNzI4YWEzM2FlM2UzOTUyNjE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19jb2RlY19w
YWlyX2lkLmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19jb2RlY19wYWlyX2lkLmgiCiAKICNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8Y3N0
ZGludD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1
ZGlvX2RlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oCmluZGV4IGIwMWE2NmEwNjRhNDRlYmY4
OWU1ZTg3ODkxYzliZDEzYmRkYTk4OTQuLjg4OWUyYzYyZDBlZDg5ZmEwNDg3OWY4YjdhODk3MWVi
YjNhNWZlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVj
b2Rlci5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIEFQSV9BVURJT19DT0RFQ1NfQVVESU9f
REVDT0RFUl9IXwogI2RlZmluZSBBUElfQVVESU9fQ09ERUNTX0FVRElPX0RFQ09ERVJfSF8KIAor
I2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oCmluZGV4IDkwZjkzZjBjZDVmYzkwOGU5
OTE4MzE5NmZhZDA2ZmRkZjc4ZWU0ZmIuLjU1ZTE5N2ExNGE5MjcwODIyNmQzZGZhYmMzNTdmMjNj
MGFhNzVmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19kZWNvZGVyX2ZhY3RvcnkuaApAQCAtMjMsNyArMjMsNiBAQAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKIC8vIEEgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgQXVkaW9EZWNvZGVycy4KLS8vIE5PVEU6
IFRoaXMgY2xhc3MgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0
aG91dCBub3RpY2UuCiBjbGFzcyBBdWRpb0RlY29kZXJGYWN0b3J5IDogcHVibGljIHJ0Yzo6UmVm
Q291bnRJbnRlcmZhY2UgewogIHB1YmxpYzoKICAgdmlydHVhbCBzdGQ6OnZlY3RvcjxBdWRpb0Nv
ZGVjU3BlYz4gR2V0U3VwcG9ydGVkRGVjb2RlcnMoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlv
X2RlY29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3RvcnlfdGVt
cGxhdGUuaAppbmRleCBjZGJlOGJkZTdhODQyZThlOGQ1YTJhODYzY2E4YWUxZThjZWNiMjg3Li4y
MmJiN2RlNDcyMTM2ZThjNGVlYWMyYjFkM2U4NjQxNDQ0MzYzMTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1
ZGlvX2RlY29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5X3RlbXBsYXRlLmgKQEAgLTExMiw4ICsxMTIsNiBAQCBjbGFzcyBBdWRpb0RlY29kZXJGYWN0
b3J5VCA6IHB1YmxpYyBBdWRpb0RlY29kZXJGYWN0b3J5IHsKIC8vIGRlY29kZXIgdHlwZXMgaW4g
dGhlIG9yZGVyIHRoZXkgd2VyZSBzcGVjaWZpZWQgaW4gdGhlIHRlbXBsYXRlIGFyZ3VtZW50CiAv
LyBsaXN0LCBzdG9wcGluZyBhdCB0aGUgZmlyc3Qgb25lIHRoYXQgY2xhaW1zIHRvIGJlIGFibGUg
dG8gZG8gdGhlIGpvYi4KIC8vCi0vLyBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIHN0aWxsIHVuZGVy
IGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotLy8KIC8vIFRPRE8o
a3dpYmVyZyk6IFBvaW50IGF0IENyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5KCkgZm9y
IGFuIGV4YW1wbGUgb2YKIC8vIGhvdyBpdCBpcyB1c2VkLgogdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IFRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmNj
CmluZGV4IDU5NWMxMTEzMWU3YzQxMDY2ZjM0ZWUyNDFlN2YxOWYzMjkwNjI3NGEuLjFkODg1Zjlj
ZWNmODRkODA5OGY0ZTRjMjQxMjcxZjA3ZDdlZmU1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5j
b2Rlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuY2MKQEAgLTkyLDYgKzkyLDExIEBAIHZvaWQg
QXVkaW9FbmNvZGVyOjpPblJlY2VpdmVkVXBsaW5rQmFuZHdpZHRoKAogICAgIGludCB0YXJnZXRf
YXVkaW9fYml0cmF0ZV9icHMsCiAgICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gYndlX3Blcmlv
ZF9tcykge30KIAordm9pZCBBdWRpb0VuY29kZXI6Ok9uUmVjZWl2ZWRVcGxpbmtBbGxvY2F0aW9u
KEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSkgeworICBPblJlY2VpdmVkVXBsaW5rQmFu
ZHdpZHRoKHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5icHMoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cGRhdGUuYndlX3BlcmlvZC5tcygpKTsKK30KKwogdm9pZCBBdWRpb0VuY29kZXI6
Ok9uUmVjZWl2ZWRSdHQoaW50IHJ0dF9tcykge30KIAogdm9pZCBBdWRpb0VuY29kZXI6Ok9uUmVj
ZWl2ZWRPdmVyaGVhZChzaXplX3Qgb3ZlcmhlYWRfYnl0ZXNfcGVyX3BhY2tldCkge30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgKaW5kZXggNmExZjY1
MzRiMjFhOGEzZmZiNmQyMDlkOTU1NzFjODlhZTIwOGExNi4uYzkwODUxODA2M2Q0ZGE3Yzk0YWEw
ZTkzNDZkYjdlZTNhY2JlZjFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9hdWRpb19lbmNvZGVyLmgKQEAgLTExLDEzICsxMSwxMyBAQAogI2lmbmRlZiBBUElfQVVESU9f
Q09ERUNTX0FVRElPX0VOQ09ERVJfSF8KICNkZWZpbmUgQVBJX0FVRElPX0NPREVDU19BVURJT19F
TkNPREVSX0hfCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkv
Y2FsbC9iaXRyYXRlX2FsbG9jYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgogCkBAIC0yMjIsNiArMjIyLDEwIEBA
IGNsYXNzIEF1ZGlvRW5jb2RlciB7CiAgIHZpcnR1YWwgdm9pZCBPblJlY2VpdmVkVXBsaW5rQmFu
ZHdpZHRoKGludCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGJ3ZV9wZXJpb2Rf
bXMpOwogCisgIC8vIFByb3ZpZGVzIHRhcmdldCBhdWRpbyBiaXRyYXRlIGFuZCBjb3JyZXNwb25k
aW5nIHByb2JpbmcgaW50ZXJ2YWwgb2YKKyAgLy8gdGhlIGJhbmR3aWR0aCBlc3RpbWF0b3IgdG8g
dGhpcyBlbmNvZGVyIHRvIGFsbG93IGl0IHRvIGFkYXB0LgorICB2aXJ0dWFsIHZvaWQgT25SZWNl
aXZlZFVwbGlua0FsbG9jYXRpb24oQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlKTsKKwog
ICAvLyBQcm92aWRlcyBSVFQgdG8gdGhpcyBlbmNvZGVyIHRvIGFsbG93IGl0IHRvIGFkYXB0Lgog
ICB2aXJ0dWFsIHZvaWQgT25SZWNlaXZlZFJ0dChpbnQgcnR0X21zKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgKaW5k
ZXggZmI0ZTIzZmZlNzhiNWIyMmM2N2UyMjg4OGEzMjcyYzY3YWQzYjliOS4uYjI5MDk2N2M3ODAz
ZmQ3NDdkOGI0N2IzNDY1ZjQ0OWU3NGJlYWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVy
X2ZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oCkBAIC0yMyw3ICsyMyw2
IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gQSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBBdWRp
b0VuY29kZXJzLgotLy8gTk9URTogVGhpcyBjbGFzcyBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVu
dCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIGNsYXNzIEF1ZGlvRW5jb2RlckZhY3Rv
cnkgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgcHVibGljOgogICAvLyBSZXR1
cm5zIGEgcHJpb3JpdGl6ZWQgbGlzdCBvZiBhdWRpbyBjb2RlY3MsIHRvIHVzZSBmb3Igc2lnbmFs
aW5nIGV0Yy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlcl9mYWN0b3J5X3RlbXBsYXRlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oCmluZGV4IDM3NmIzOWU0YzZmOWZj
OGVhYTNjN2VmMzdhZGNkZWU2MWM0MjgzODMuLjIwODg2MTkwMTk2MjYyYmEyNzc3Y2U2Y2JiYTc4
ZmVkZTY2OWU3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlcl9mYWN0b3J5X3RlbXBsYXRl
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnlfdGVtcGxhdGUuaApAQCAtMTMxLDggKzEz
MSw2IEBAIGNsYXNzIEF1ZGlvRW5jb2RlckZhY3RvcnlUIDogcHVibGljIEF1ZGlvRW5jb2RlckZh
Y3RvcnkgewogLy8gZW5jb2RlcnMgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBzcGVjaWZpZWQgaW4g
dGhlIHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QsCiAvLyBzdG9wcGluZyBhdCB0aGUgZmlyc3Qgb25l
IHRoYXQgY2xhaW1zIHRvIGJlIGFibGUgdG8gZG8gdGhlIGpvYi4KIC8vCi0vLyBOT1RFOiBUaGlz
IGZ1bmN0aW9uIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhv
dXQgbm90aWNlLgotLy8KIC8vIFRPRE8oa3dpYmVyZyk6IFBvaW50IGF0IENyZWF0ZUJ1aWx0aW5B
dWRpb0VuY29kZXJGYWN0b3J5KCkgZm9yIGFuIGV4YW1wbGUgb2YKIC8vIGhvdyBpdCBpcyB1c2Vk
LgogdGVtcGxhdGUgPHR5cGVuYW1lLi4uIFRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2Zvcm1hdC5jYwppbmRleCA4MWVkMjk5ZGRiNjZhYWY4MzY5NjdkNGY0NDZm
NzNlOTA4YmM3MjExLi4xMTc4OGI5MWU4MjkxOThiZjI3N2JjMzRkZmZlODBiOWZmNTM5ZjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5jYwpAQCAt
MTAsNyArMTAsNyBAQAogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQu
aCIKIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
CisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CkBAIC0zMiw3ICszMiw3IEBAIFNkcEF1ZGlvRm9ybWF0OjpTZHBBdWRpb0Zvcm1hdChhYnNsOjpz
dHJpbmdfdmlldyBuYW1lLAogICAgICAgcGFyYW1ldGVycyhwYXJhbSkge30KIAogYm9vbCBTZHBB
dWRpb0Zvcm1hdDo6TWF0Y2hlcyhjb25zdCBTZHBBdWRpb0Zvcm1hdCYgbykgY29uc3QgewotICBy
ZXR1cm4gU1RSX0NBU0VfQ01QKG5hbWUuY19zdHIoKSwgby5uYW1lLmNfc3RyKCkpID09IDAgJiYK
KyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwgby5uYW1lKSAmJgogICAgICAg
ICAgY2xvY2tyYXRlX2h6ID09IG8uY2xvY2tyYXRlX2h6ICYmIG51bV9jaGFubmVscyA9PSBvLm51
bV9jaGFubmVsczsKIH0KIApAQCAtNDEsMTkgKzQxLDExIEBAIFNkcEF1ZGlvRm9ybWF0JiBTZHBB
dWRpb0Zvcm1hdDo6b3BlcmF0b3I9KGNvbnN0IFNkcEF1ZGlvRm9ybWF0JikgPSBkZWZhdWx0Owog
U2RwQXVkaW9Gb3JtYXQmIFNkcEF1ZGlvRm9ybWF0OjpvcGVyYXRvcj0oU2RwQXVkaW9Gb3JtYXQm
JikgPSBkZWZhdWx0OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGEs
IGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBiKSB7Ci0gIHJldHVybiBTVFJfQ0FTRV9DTVAoYS5uYW1l
LmNfc3RyKCksIGIubmFtZS5jX3N0cigpKSA9PSAwICYmCisgIHJldHVybiBhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKGEubmFtZSwgYi5uYW1lKSAmJgogICAgICAgICAgYS5jbG9ja3JhdGVfaHogPT0g
Yi5jbG9ja3JhdGVfaHogJiYgYS5udW1fY2hhbm5lbHMgPT0gYi5udW1fY2hhbm5lbHMgJiYKICAg
ICAgICAgIGEucGFyYW1ldGVycyA9PSBiLnBhcmFtZXRlcnM7CiB9CiAKLXZvaWQgc3dhcChTZHBB
dWRpb0Zvcm1hdCYgYSwgU2RwQXVkaW9Gb3JtYXQmIGIpIHsKLSAgdXNpbmcgc3RkOjpzd2FwOwot
ICBzd2FwKGEubmFtZSwgYi5uYW1lKTsKLSAgc3dhcChhLmNsb2NrcmF0ZV9oeiwgYi5jbG9ja3Jh
dGVfaHopOwotICBzd2FwKGEubnVtX2NoYW5uZWxzLCBiLm51bV9jaGFubmVscyk7Ci0gIHN3YXAo
YS5wYXJhbWV0ZXJzLCBiLnBhcmFtZXRlcnMpOwotfQotCiBBdWRpb0NvZGVjSW5mbzo6QXVkaW9D
b2RlY0luZm8oaW50IHNhbXBsZV9yYXRlX2h6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBudW1fY2hhbm5lbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGJpdHJhdGVfYnBzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9f
Zm9ybWF0LmgKaW5kZXggYWE1ZGJiMTNiNjVkNzJlZDBmNGQ2ZDZlZTY4NmQ0NzIwMmZkNDc5Yy4u
YjhiMDQyMTc4YmExYTVlMjQyNzVlNTU5NTdkNzZhNTJkOGE0ODBhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19mb3JtYXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oCkBAIC0xMSwxOSArMTEsMTggQEAK
ICNpZm5kZWYgQVBJX0FVRElPX0NPREVDU19BVURJT19GT1JNQVRfSF8KICNkZWZpbmUgQVBJX0FV
RElPX0NPREVDU19BVURJT19GT1JNQVRfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1
ZGUgPG1hcD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1
ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gU0RQIHNw
ZWNpZmljYXRpb24gZm9yIGEgc2luZ2xlIGF1ZGlvIGNvZGVjLgotLy8gTk9URTogVGhpcyBjbGFz
cyBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGlj
ZS4KLXN0cnVjdCBTZHBBdWRpb0Zvcm1hdCB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBTZHBBdWRpb0Zv
cm1hdCB7CiAgIHVzaW5nIFBhcmFtZXRlcnMgPSBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpz
dHJpbmc+OwogCiAgIFNkcEF1ZGlvRm9ybWF0KGNvbnN0IFNkcEF1ZGlvRm9ybWF0Jik7CkBAIC01
NCw4ICs1Myw2IEBAIHN0cnVjdCBTZHBBdWRpb0Zvcm1hdCB7CiAgIFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKIH07CiAKLXZvaWQgc3dhcChTZHBBdWRpb0Zvcm1hdCYgYSwgU2RwQXVkaW9Gb3JtYXQm
IGIpOwotCiAvLyBJbmZvcm1hdGlvbiBhYm91dCBob3cgYW4gYXVkaW8gZm9ybWF0IGlzIHRyZWF0
ZWQgYnkgdGhlIGNvZGVjIGltcGxlbWVudGF0aW9uLgogLy8gQ29udGFpbnMgYmFzaWMgaW5mb3Jt
YXRpb24sIHN1Y2ggYXMgc2FtcGxlIHJhdGUgYW5kIG51bWJlciBvZiBjaGFubmVscywgd2hpY2gK
IC8vIGlzbid0IHVuaWZvcm1seSBwcmVzZW50ZWQgYnkgU0RQLiBBbHNvIGNvbnRhaW5zIGZsYWdz
IGluZGljYXRpbmcgc3VwcG9ydCBmb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNv
ZGVyX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaAppbmRleCAz
MTI3NDAzZTI0M2ZiOTAxODYzMTA1YTc2ZDk0ZGM2NmI5MzdkZDY4Li4zYWNjZDRhMzAyMGQyNDI5
OTE4MTQ5YTRiNmI5YmYzZTY4NWVjMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oCkBA
IC0xNyw3ICsxNyw2IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gQ3JlYXRlcyBhIG5ldyBm
YWN0b3J5IHRoYXQgY2FuIGNyZWF0ZSB0aGUgYnVpbHQtaW4gdHlwZXMgb2YgYXVkaW8gZGVjb2Rl
cnMuCi0vLyBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFu
ZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgogcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVj
b2RlckZhY3Rvcnk+IENyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5KCk7CiAKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2Zh
Y3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaAppbmRleCBkMzdmZjI1
N2U2ZTMyZTM5Y2M3Nzc4NDVmZThkMzk3MmViM2UxM2NjLi4zYzY3ZGQzMGU2NmIyMzUxZWQ0MGFj
ZWFjMTU0YjFiNDI4ZmJkNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oCkBAIC0xNyw3
ICsxNyw2IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gQ3JlYXRlcyBhIG5ldyBmYWN0b3J5
IHRoYXQgY2FuIGNyZWF0ZSB0aGUgYnVpbHQtaW4gdHlwZXMgb2YgYXVkaW8gZW5jb2RlcnMuCi0v
LyBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkg
Y2hhbmdlIHdpdGhvdXQgbm90aWNlLgogcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZh
Y3Rvcnk+IENyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCk7CiAKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9CVUlMRC5n
bgppbmRleCAxNjkxNzJhNjY4MjlhYjc5M2Y1MTgzMWFkNGM5YmE4ODg1MDc2NjZiLi4zYjhmMjNj
MWJjNmU3NDMwNzU1YWM1ZjcyZWU5MjhmZmE0MzQyYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvQlVJ
TEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9nNzExL0JVSUxELmduCkBAIC0yMSwxMSArMjEsMTIgQEAgcnRjX3N0YXRp
Y19saWJyYXJ5KCJhdWRpb19lbmNvZGVyX2c3MTEiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAi
Li46YXVkaW9fY29kZWNzX2FwaSIsCi0gICAgIi4uLy4uLy4uOndlYnJ0Y19jb21tb24iLAogICAg
ICIuLi8uLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpnNzExIiwKICAgICAiLi4vLi4vLi4vcnRj
X2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpzYWZlX21p
bm1heCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtMzksMTAgKzQwLDExIEBAIHJ0Y19z
dGF0aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rlcl9nNzExIikgewogICBdCiAgIGRlcHMgPSBbCiAg
ICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwK
ICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6ZzcxMSIsCiAgICAgIi4uLy4uLy4u
L3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2Uvc3lz
dGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1v
cnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9nNzExLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2Rl
Y29kZXJfZzcxMS5jYwppbmRleCBjYjE2NTg0Y2RlZTU0MDJlYjIwNWI0M2I0N2I5Mzk1MzFhNzdh
NjA5Li45MTU5OWM0MTZhZGY5M2M0NTk4OTVjMzAwM2NkZmRmMzI3ODliNmE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9nNzExLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVy
X2c3MTEuY2MKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRl
ICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2RlY29kZXJfcGNt
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogCkBA
IC0yMiw4ICsyMiw4IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBhYnNsOjpvcHRpb25hbDxBdWRp
b0RlY29kZXJHNzExOjpDb25maWc+IEF1ZGlvRGVjb2Rlckc3MTE6OlNkcFRvQ29uZmlnKAogICAg
IGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgY29uc3QgYm9vbCBpc19wY211ID0g
U1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJQQ01VIikgPT0gMDsKLSAgY29uc3Qg
Ym9vbCBpc19wY21hID0gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJQQ01BIikg
PT0gMDsKKyAgY29uc3QgYm9vbCBpc19wY211ID0gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3Jt
YXQubmFtZSwgIlBDTVUiKTsKKyAgY29uc3QgYm9vbCBpc19wY21hID0gYWJzbDo6RXF1YWxzSWdu
b3JlQ2FzZShmb3JtYXQubmFtZSwgIlBDTUEiKTsKICAgaWYgKGZvcm1hdC5jbG9ja3JhdGVfaHog
PT0gODAwMCAmJiBmb3JtYXQubnVtX2NoYW5uZWxzID49IDEgJiYKICAgICAgIChpc19wY211IHx8
IGlzX3BjbWEpKSB7CiAgICAgQ29uZmlnIGNvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRp
b19kZWNvZGVyX2c3MTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX2c3MTEuaAppbmRleCA4Mjc1
YThjN2ExNGJmZjRkZjRkMTRjNGM4YjM4NTkzNjczNzg5YzJlLi5jY2QxZWUwNDgwMDUyNzMzYjcx
NmM0NjgzZWZkNzkyNGQyYjUxOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9n
NzExLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2RlY29kZXJfZzcxMS5oCkBAIC0xOCwxNCArMTgsMTMg
QEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIKICNp
bmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJhcGkv
YXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9y
dGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBHNzExIGRlY29kZXIgQVBJ
IGZvciB1c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlvRGVjb2Rl
ckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVy
IGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlv
RGVjb2Rlckc3MTEgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9EZWNvZGVyRzcxMSB7CiAgIHN0
cnVjdCBDb25maWcgewogICAgIGVudW0gY2xhc3MgVHlwZSB7IGtQY21VLCBrUGNtQSB9OwogICAg
IGJvb2wgSXNPaygpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19lbmNvZGVyX2c3
MTEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9nNzExLmNjCmluZGV4IDFkNWU1NDEyNzZiOWFl
ZGQ4NmM2OGQwMWY1YzdjNzA3Y2MyOGZlM2MuLjBjYzhkYzRkZGQyOWVmNWI1NWVlMDcxOTI3YTY5
NDNlNjAzMzRkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19lbmNvZGVyX2c3MTEuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfZzcxMS5jYwpAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1
ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgotI2luY2x1ZGUg
ImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYWJz
bC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L2c3MTEvYXVkaW9fZW5jb2Rlcl9wY20uaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9z
YWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5t
YXguaCIKQEAgLTI0LDggKzI0LDggQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGFic2w6Om9wdGlv
bmFsPEF1ZGlvRW5jb2Rlckc3MTE6OkNvbmZpZz4gQXVkaW9FbmNvZGVyRzcxMTo6U2RwVG9Db25m
aWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBjb25zdCBib29sIGlz
X3BjbXUgPSBTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIlBDTVUiKSA9PSAwOwot
ICBjb25zdCBib29sIGlzX3BjbWEgPSBTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwg
IlBDTUEiKSA9PSAwOworICBjb25zdCBib29sIGlzX3BjbXUgPSBhYnNsOjpFcXVhbHNJZ25vcmVD
YXNlKGZvcm1hdC5uYW1lLCAiUENNVSIpOworICBjb25zdCBib29sIGlzX3BjbWEgPSBhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiUENNQSIpOwogICBpZiAoZm9ybWF0LmNsb2Nr
cmF0ZV9oeiA9PSA4MDAwICYmIGZvcm1hdC5udW1fY2hhbm5lbHMgPj0gMSAmJgogICAgICAgKGlz
X3BjbXUgfHwgaXNfcGNtYSkpIHsKICAgICBDb25maWcgY29uZmlnOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9n
NzExL2F1ZGlvX2VuY29kZXJfZzcxMS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfZzcxMS5oCmlu
ZGV4IDZiNmViNWZjZTBjZTU0ZmNiZDYwYzY0ZmVhNjdkOWJjZGExYjE2ODYuLjIzYWUxOGI1ZTNm
MDMyYjgzOWNmN2U5MDllMDg0NDVmM2I2OGUwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19l
bmNvZGVyX2c3MTEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9nNzExLmgKQEAgLTE4LDE0
ICsxOCwxMyBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9p
ZC5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oIgogI2luY2x1
ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
c3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEc3MTEgZW5j
b2RlciBBUEkgZm9yIHVzZSBhcyBhIHRlbXBsYXRlIHBhcmFtZXRlciB0bwogLy8gQ3JlYXRlQXVk
aW9FbmNvZGVyRmFjdG9yeTwuLi4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3Rp
bGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi1zdHJ1
Y3QgQXVkaW9FbmNvZGVyRzcxMSB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBBdWRpb0VuY29kZXJHNzEx
IHsKICAgc3RydWN0IENvbmZpZyB7CiAgICAgZW51bSBjbGFzcyBUeXBlIHsga1BjbVUsIGtQY21B
IH07CiAgICAgYm9vbCBJc09rKCkgY29uc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9nNzIyL0JVSUxELmduCmluZGV4IDUwYjEzOTZkMjkxNWViZmYyYzZkMTFjZTM1ZGNjNzg5
MWMzYjFjMzAuLmU0MzIxZDI5OTMxN2FmOGYwMWFkM2U1NjJhMDQzMDk2ZWUxZWYyMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvZzcyMi9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvQlVJTEQuZ24KQEAgLTI5LDExICsy
OSwxMiBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2VuY29kZXJfZzcyMiIpIHsKICAgZGVw
cyA9IFsKICAgICAiOmF1ZGlvX2VuY29kZXJfZzcyMl9jb25maWciLAogICAgICIuLjphdWRpb19j
b2RlY3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uLy4u
L21vZHVsZXMvYXVkaW9fY29kaW5nOmc3MjIiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKKyAg
ICAiLi4vLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXM6b3B0aW9uYWwiLAogICBdCiB9CkBAIC00NywxMCArNDgsMTEgQEAgcnRjX3N0YXRpY19saWJy
YXJ5KCJhdWRpb19kZWNvZGVyX2c3MjIiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiLi46YXVk
aW9fY29kZWNzX2FwaSIsCi0gICAgIi4uLy4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8u
Li8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpnNzIyIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4
cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2Rl
Y3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIy
LmNjCmluZGV4IGYxZTJhZmJhYjUwZDBmZjdkMDM4NjQ1ZTg0Y2Y3ZjI1NmIxOThlMWEuLjJjYzE2
YzM3ZDk0ZDY1MGI0ZWVhYmIyNmNkYzRkMjliODA0NTU4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9h
dWRpb19kZWNvZGVyX2c3MjIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5jYwpA
QCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVt
b3J5L21lbW9yeS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxk
L2luY2x1ZGUpCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogCkBAIC0yMiw3ICsy
Miw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBhYnNsOjpvcHRpb25hbDxBdWRpb0RlY29kZXJH
NzIyOjpDb25maWc+IEF1ZGlvRGVjb2Rlckc3MjI6OlNkcFRvQ29uZmlnKAogICAgIGNvbnN0IFNk
cEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgcmV0dXJuIFNUUl9DQVNFX0NNUChmb3JtYXQubmFt
ZS5jX3N0cigpLCAiRzcyMiIpID09IDAgJiYKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNh
c2UoZm9ybWF0Lm5hbWUsICJHNzIyIikgJiYKICAgICAgICAgICAgICAgICAgZm9ybWF0LmNsb2Nr
cmF0ZV9oeiA9PSA4MDAwICYmCiAgICAgICAgICAgICAgICAgIChmb3JtYXQubnVtX2NoYW5uZWxz
ID09IDEgfHwgZm9ybWF0Lm51bV9jaGFubmVscyA9PSAyKQogICAgICAgICAgICAgID8gYWJzbDo6
b3B0aW9uYWw8Q29uZmlnPigKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19j
b2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIuaAppbmRleCBiN2JiMDg5M2YzMzAzZTNhNGY5
OGE1N2U2ODdiZWU2MjA1MDRlYzllLi4yYTY3NDkyNmRiY2NmMWM3NmMwOTA1OTVkZWViMTM5MGMz
YTEzZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9n
NzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5oCkBAIC0xOCwxNCArMTgsMTMgQEAKICNpbmNsdWRlICJh
cGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1
ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBHNzIyIGRlY29kZXIgQVBJIGZvciB1c2UgYXMgYSB0
ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rvcnk8Li4uPigp
LgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFu
ZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRGVjb2Rlckc3MjIgewor
c3RydWN0IFJUQ19FWFBPUlQgQXVkaW9EZWNvZGVyRzcyMiB7CiAgIHN0cnVjdCBDb25maWcgewog
ICAgIGJvb2wgSXNPaygpIGNvbnN0IHsgcmV0dXJuIG51bV9jaGFubmVscyA9PSAxIHx8IG51bV9j
aGFubmVscyA9PSAyOyB9CiAgICAgaW50IG51bV9jaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcy
Mi9hdWRpb19lbmNvZGVyX2c3MjIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmNjCmlu
ZGV4IDBjZjcxNjM5YmYzMmY5MzdkMmZkNDUyNDcwYTQxYmU4N2Y4OWFiNGYuLjYzNzRhZTgwMmZh
YTg3NzQ4Y2NiYTQ2ZTE3Mjc1MmJiNzY2OGMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19l
bmNvZGVyX2c3MjIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5jYwpAQCAtMTQs
NyArMTQsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1
ZGUpCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L251bWVyaWNzL3NhZmVfbWlubWF4LmgiCkBAIC0yNCw3ICsyNCw3IEBAIG5hbWVzcGFjZSB3ZWJy
dGMgewogCiBhYnNsOjpvcHRpb25hbDxBdWRpb0VuY29kZXJHNzIyQ29uZmlnPiBBdWRpb0VuY29k
ZXJHNzIyOjpTZHBUb0NvbmZpZygKICAgICBjb25zdCBTZHBBdWRpb0Zvcm1hdCYgZm9ybWF0KSB7
Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgImc3MjIiKSAhPSAwIHx8
CisgIGlmICghYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgImc3MjIiKSB8fAog
ICAgICAgZm9ybWF0LmNsb2NrcmF0ZV9oeiAhPSA4MDAwKSB7CiAgICAgcmV0dXJuIGFic2w6Om51
bGxvcHQ7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
ZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuaAppbmRleCBiOTdmZTFiMTQ3ODkwZDA4NTQyNzZkMTMx
MTIwOGU5OWIxMGNjZjlhLi4zMjdjMGFmMDRhYTdjZTA0NTU4NDFmOTgxYzY2MmFiZjg2MmI2ZGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1
ZGlvX2VuY29kZXJfZzcyMi5oCkBAIC0xOSwxNCArMTksMTMgQEAKICNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1
ZGlvX2Zvcm1hdC5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19lbmNv
ZGVyX2c3MjJfY29uZmlnLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEc3MjIgZW5jb2RlciBBUEkgZm9yIHVzZSBh
cyBhIHRlbXBsYXRlIHBhcmFtZXRlciB0bwogLy8gQ3JlYXRlQXVkaW9FbmNvZGVyRmFjdG9yeTwu
Li4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1l
bnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi1zdHJ1Y3QgQXVkaW9FbmNvZGVyRzcy
MiB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBBdWRpb0VuY29kZXJHNzIyIHsKICAgdXNpbmcgQ29uZmln
ID0gQXVkaW9FbmNvZGVyRzcyMkNvbmZpZzsKICAgc3RhdGljIGFic2w6Om9wdGlvbmFsPEF1ZGlv
RW5jb2Rlckc3MjJDb25maWc+IFNkcFRvQ29uZmlnKAogICAgICAgY29uc3QgU2RwQXVkaW9Gb3Jt
YXQmIGF1ZGlvX2Zvcm1hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIy
X2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMl9jb25maWcuaAppbmRleCA3NzNl
NDMwY2UzYzBjOGMwNmFkMmU1YzU1YTA0NTM5MTQwMzgyNzRkLi4yODc4OTg1ODlmY2FhYTAyZmJi
ZDg5NWExY2ZiZmM5N2QzODkxYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9n
NzIyX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjJfY29uZmlnLmgKQEAg
LTEzLDcgKzEzLDYgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLS8vIE5PVEU6IFRoaXMgc3Ry
dWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90
aWNlLgogc3RydWN0IEF1ZGlvRW5jb2Rlckc3MjJDb25maWcgewogICBib29sIElzT2soKSBjb25z
dCB7CiAgICAgcmV0dXJuIGZyYW1lX3NpemVfbXMgPiAwICYmIGZyYW1lX3NpemVfbXMgJSAxMCA9
PSAwICYmIG51bV9jaGFubmVscyA+PSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL0JVSUxELmduIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9pbGJjL0JVSUxELmduCmluZGV4IGQ0ZjUwNGZkNGY5MTM3Y2JjZmZjNDI4MThlOGMwNGFhOWMy
MWRmYzcuLmQ3NjZmYTRhOTdhMTM4YzYyYWE0NDIwNmVlMTQ5NDRkMzBkYTRkY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19j
b2RlY3MvaWxiYy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvQlVJTEQuZ24KQEAgLTI5LDExICsyOSwx
MSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2VuY29kZXJfaWxiYyIpIHsKICAgZGVwcyA9
IFsKICAgICAiOmF1ZGlvX2VuY29kZXJfaWxiY19jb25maWciLAogICAgICIuLjphdWRpb19jb2Rl
Y3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uLy4uL21v
ZHVsZXMvYXVkaW9fY29kaW5nOmlsYmMiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFz
ZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtNDcsMTAgKzQ3LDEwIEBAIHJ0Y19z
dGF0aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rlcl9pbGJjIikgewogICBdCiAgIGRlcHMgPSBbCiAg
ICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwK
ICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aWxiYyIsCiAgICAgIi4uLy4uLy4u
L3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
aWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuY2MKaW5kZXggMWY0YzQ3NWM0MDY0MjhiNzcxNjM0Y2Rl
ZmMzNTQxZTY5MzdkZmM3Mi4uNGEwMGY4ZGJmMDA1NGM2YTNhNmExNjlhMWVhMWZhYTZlYWQxOWVi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMv
YXVkaW9fZGVjb2Rlcl9pbGJjLmNjCkBAIC0xNCwxNCArMTQsMTQgQEAKICNpbmNsdWRlIDx2ZWN0
b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25f
dHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5n
cy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1
ZGlvX2RlY29kZXJfaWxiYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogYWJzbDo6b3B0aW9u
YWw8QXVkaW9EZWNvZGVySWxiYzo6Q29uZmlnPiBBdWRpb0RlY29kZXJJbGJjOjpTZHBUb0NvbmZp
ZygKICAgICBjb25zdCBTZHBBdWRpb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIHJldHVybiBTVFJfQ0FT
RV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIklMQkMiKSA9PSAwICYmCisgIHJldHVybiBhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiSUxCQyIpICYmCiAgICAgICAgICAgICAg
ICAgIGZvcm1hdC5jbG9ja3JhdGVfaHogPT0gODAwMCAmJiBmb3JtYXQubnVtX2NoYW5uZWxzID09
IDEKICAgICAgICAgICAgICA/IGFic2w6Om9wdGlvbmFsPENvbmZpZz4oQ29uZmlnKCkpCiAgICAg
ICAgICAgICAgOiBhYnNsOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29k
ZXJfaWxiYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5oCmluZGV4IDIwZjZmZmQyODdm
OWM4ZjA5NzZiODUwODcyZTE2NGY2YTdlZDgyNTUuLjlhYjg0Nzk3N2Q4MTEyNzE2OTkwM2MwNjVi
YWIzZDlmNWIzNGFlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9pbGJjLmgKQEAgLTIzLDggKzIzLDYgQEAgbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKIC8vIElMQkMgZGVjb2RlciBBUEkgZm9yIHVzZSBhcyBhIHRlbXBsYXRl
IHBhcmFtZXRlciB0bwogLy8gQ3JlYXRlQXVkaW9EZWNvZGVyRmFjdG9yeTwuLi4+KCkuCi0vLwot
Ly8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBj
aGFuZ2Ugd2l0aG91dCBub3RpY2UuCiBzdHJ1Y3QgQXVkaW9EZWNvZGVySWxiYyB7CiAgIHN0cnVj
dCBDb25maWcge307ICAvLyBFbXB0eS0tLW5vIGNvbmZpZyB2YWx1ZXMgbmVlZGVkIQogICBzdGF0
aWMgYWJzbDo6b3B0aW9uYWw8Q29uZmlnPiBTZHBUb0NvbmZpZyhjb25zdCBTZHBBdWRpb0Zvcm1h
dCYgYXVkaW9fZm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCmluZGV4IDJhZTc1NDc0Y2NkOGRlYTlk
NTAzZGU3ZjgwYWY1NDFkMGQ4MDUwZTEuLjRkMDI4YzlhYWY0YzA4ODRjMzhiMTAzNGVhMDczMDBm
ZTcyMTI1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYwpAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgotI2luY2x1ZGUgImNv
bW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYWJzbC9z
dHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2ls
YmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2Fm
ZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4
LmgiCkBAIC00MCw3ICs0MCw3IEBAIGludCBHZXRJbGJjQml0cmF0ZShpbnQgcHRpbWUpIHsKIAog
YWJzbDo6b3B0aW9uYWw8QXVkaW9FbmNvZGVySWxiY0NvbmZpZz4gQXVkaW9FbmNvZGVySWxiYzo6
U2RwVG9Db25maWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBpZiAo
U1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJJTEJDIikgIT0gMCB8fAorICBpZiAo
IWFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIklMQkMiKSB8fAog
ICAgICAgZm9ybWF0LmNsb2NrcmF0ZV9oeiAhPSA4MDAwIHx8IGZvcm1hdC5udW1fY2hhbm5lbHMg
IT0gMSkgewogICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwogICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2ls
YmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmgKaW5k
ZXggMGE4NmIxNjJlODFjNjI4Y2NmYmZkZDkwN2EwMWRkOGE4OTVlNTMzYi4uZTRhZWNhNzBkZTg0
MGUxNzQ2MjEzOTg1NDFlOTU2MWIzNDI4NTAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2Vu
Y29kZXJfaWxiYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuaApAQCAtMjQsOCAr
MjQsNiBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gSUxCQyBlbmNvZGVyIEFQSSBmb3IgdXNl
IGFzIGEgdGVtcGxhdGUgcGFyYW1ldGVyIHRvCiAvLyBDcmVhdGVBdWRpb0VuY29kZXJGYWN0b3J5
PC4uLj4oKS4KLS8vCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9w
bWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIHN0cnVjdCBBdWRpb0VuY29kZXJJ
bGJjIHsKICAgdXNpbmcgQ29uZmlnID0gQXVkaW9FbmNvZGVySWxiY0NvbmZpZzsKICAgc3RhdGlj
IGFic2w6Om9wdGlvbmFsPEF1ZGlvRW5jb2RlcklsYmNDb25maWc+IFNkcFRvQ29uZmlnKApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiY19jb25maWcuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRp
b19lbmNvZGVyX2lsYmNfY29uZmlnLmgKaW5kZXggMjI5MDlhOTU3YmIyNTdiNjgzOTgzYzEyOWM3
NTcxODdjMGU4NjY2NC4uNGQ4MmY5OTAxY2RmZTE5M2E0ZGE1NDNkNTgzMGViYWQyMGY5OTQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiY19jb25maWcuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2ls
YmMvYXVkaW9fZW5jb2Rlcl9pbGJjX2NvbmZpZy5oCkBAIC0xMyw3ICsxMyw2IEBACiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZl
bG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIHN0cnVjdCBBdWRpb0VuY29k
ZXJJbGJjQ29uZmlnIHsKICAgYm9vbCBJc09rKCkgY29uc3QgewogICAgIHJldHVybiAoZnJhbWVf
c2l6ZV9tcyA9PSAyMCB8fCBmcmFtZV9zaXplX21zID09IDMwIHx8IGZyYW1lX3NpemVfbXMgPT0g
NDAgfHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9CVUlMRC5nbgppbmRl
eCBlZDlkOTYyMjU3N2NmNmFhMWNkYzQ2ZjY4ZDBkODA4MTQ3YTAxZDVjLi5jN2Q2ZTQzMjcxNTI5
MTEzY2YxZmQ1NmZkOGRjZDgwZmNkYWYwYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvQlVJTEQuZ24K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X2NvZGVjcy9pc2FjL0JVSUxELmduCkBAIC03NywxMCArNzcsMTAgQEAgcnRjX3N0YXRpY19saWJy
YXJ5KCJhdWRpb19lbmNvZGVyX2lzYWNfZml4IikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4u
OmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAi
Li4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aXNhY19maXgiLAogICAgICIuLi8uLi8uLi9y
dGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIs
CiAgIF0KIH0KQEAgLTk0LDEwICs5NCwxMCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2Rl
Y29kZXJfaXNhY19maXgiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiLi46YXVkaW9fY29kZWNz
X2FwaSIsCi0gICAgIi4uLy4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi8uLi9tb2R1
bGVzL2F1ZGlvX2NvZGluZzppc2FjX2ZpeCIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAt
MTExLDEwICsxMTEsMTEgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19lbmNvZGVyX2lzYWNf
ZmxvYXQiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiLi46YXVkaW9fY29kZWNzX2FwaSIsCi0g
ICAgIi4uLy4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi8uLi9tb2R1bGVzL2F1ZGlv
X2NvZGluZzppc2FjIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTEyOCwxMCArMTI5LDExIEBAIHJ0Y19zdGF0
aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rlcl9pc2FjX2Zsb2F0IikgewogICBdCiAgIGRlcHMgPSBb
CiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9u
IiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aXNhYyIsCiAgICAgIi4uLy4u
Ly4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2Uv
c3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9t
ZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9h
dWRpb19kZWNvZGVyX2lzYWNfZml4LmNjCmluZGV4IDQ0NjY0MGZmNzBjMDZiNDgwODUyOGJiZTcy
MGYzZWJiYzk2N2EzZTcuLjUxYWU1NzJmYTk4MmU1ZTQ5YmE5NzJlOTczZTE3MDllNThkMTA4N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZml4LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNh
Yy9hdWRpb19kZWNvZGVyX2lzYWNfZml4LmNjCkBAIC0xMSwxNCArMTEsMTQgQEAKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5oIgogCiAjaW5j
bHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAv
LyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvaW5jbHVkZS9h
dWRpb19kZWNvZGVyX2lzYWNmaXguaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGFic2w6Om9w
dGlvbmFsPEF1ZGlvRGVjb2RlcklzYWNGaXg6OkNvbmZpZz4gQXVkaW9EZWNvZGVySXNhY0ZpeDo6
U2RwVG9Db25maWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICByZXR1
cm4gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJJU0FDIikgPT0gMCAmJgorICBy
ZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIklTQUMiKSAmJgogICAg
ICAgICAgICAgICAgICBmb3JtYXQuY2xvY2tyYXRlX2h6ID09IDE2MDAwICYmIGZvcm1hdC5udW1f
Y2hhbm5lbHMgPT0gMQogICAgICAgICAgICAgID8gYWJzbDo6b3B0aW9uYWw8Q29uZmlnPihDb25m
aWcoKSkKICAgICAgICAgICAgICA6IGFic2w6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMv
YXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19maXgu
aAppbmRleCBhNGNlNjg1ODM4NTg1MmQxYzNiNmFkZWVjYTU0MTNiNmM0ZjZiZWM2Li5iN2E1Y2Vm
NmRjNWNkNzM2Mjk5NDllMTJmMDg2NjhlOTkyYjYwYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVk
aW9fZGVjb2Rlcl9pc2FjX2ZpeC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZml4
LmgKQEAgLTIzLDggKzIzLDYgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIGlTQUMgZGVjb2Rl
ciBBUEkgKGZpeGVkLXBvaW50IGltcGxlbWVudGF0aW9uKSBmb3IgdXNlIGFzIGEgdGVtcGxhdGUK
IC8vIHBhcmFtZXRlciB0byBDcmVhdGVBdWRpb0RlY29kZXJGYWN0b3J5PC4uLj4oKS4KLS8vCi0v
LyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNo
YW5nZSB3aXRob3V0IG5vdGljZS4KIHN0cnVjdCBBdWRpb0RlY29kZXJJc2FjRml4IHsKICAgc3Ry
dWN0IENvbmZpZyB7fTsgIC8vIEVtcHR5LS0tbm8gY29uZmlnIHZhbHVlcyBuZWVkZWQhCiAgIHN0
YXRpYyBhYnNsOjpvcHRpb25hbDxDb25maWc+IFNkcFRvQ29uZmlnKGNvbnN0IFNkcEF1ZGlvRm9y
bWF0JiBhdWRpb19mb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNh
Y19mbG9hdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZmxvYXQuY2MKaW5kZXggMWMx
OTI2ZjFhMWViZmJjMGFlOGMzNjQ3YWI0ZjJjYWQxOThjZGZhMS4uZDlkZTNhMDhiMzAxMjE4NDlm
OTljNjQ0YzMyMGU3MDQ5YTI1ZTAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJf
aXNhY19mbG9hdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Zsb2F0LmNjCkBA
IC0xMSwxNCArMTEsMTQgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9f
ZGVjb2Rlcl9pc2FjX2Zsb2F0LmgiCiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
LSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2lu
Y2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9pc2FjL21haW4vaW5jbHVkZS9hdWRpb19kZWNvZGVyX2lzYWMuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKIGFic2w6Om9wdGlvbmFsPEF1ZGlvRGVjb2RlcklzYWNGbG9hdDo6
Q29uZmlnPgogQXVkaW9EZWNvZGVySXNhY0Zsb2F0OjpTZHBUb0NvbmZpZyhjb25zdCBTZHBBdWRp
b0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIo
KSwgIklTQUMiKSA9PSAwICYmCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5u
YW1lLCAiSVNBQyIpICYmCiAgICAgICAoZm9ybWF0LmNsb2NrcmF0ZV9oeiA9PSAxNjAwMCB8fCBm
b3JtYXQuY2xvY2tyYXRlX2h6ID09IDMyMDAwKSAmJgogICAgICAgZm9ybWF0Lm51bV9jaGFubmVs
cyA9PSAxKSB7CiAgICAgQ29uZmlnIGNvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19k
ZWNvZGVyX2lzYWNfZmxvYXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZmxvYXQuaApp
bmRleCBjYzEzOTYzNDE5NmRkZjVlZTNkMmE0M2Y2NzI2ODM0ZDY2Mzg4ZWM4Li5lNzhmOGI4MWVl
MDFmZDYzNGEwNzcxMWEzNmZiNDVhNjRhNmQzZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9f
ZGVjb2Rlcl9pc2FjX2Zsb2F0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19mbG9h
dC5oCkBAIC0xOCwxNCArMTgsMTMgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlv
X2NvZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29k
ZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CiAvLyBpU0FDIGRlY29kZXIgQVBJIChmbG9hdGluZy1wb2ludCBpbXBsZW1lbnRhdGlvbikgZm9y
IHVzZSBhcyBhIHRlbXBsYXRlCiAvLyBwYXJhbWV0ZXIgdG8gQ3JlYXRlQXVkaW9EZWNvZGVyRmFj
dG9yeTwuLi4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIgZGV2
ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi1zdHJ1Y3QgQXVkaW9EZWNv
ZGVySXNhY0Zsb2F0IHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvRGVjb2RlcklzYWNGbG9hdCB7
CiAgIHN0cnVjdCBDb25maWcgewogICAgIGJvb2wgSXNPaygpIGNvbnN0IHsKICAgICAgIHJldHVy
biBzYW1wbGVfcmF0ZV9oeiA9PSAxNjAwMCB8fCBzYW1wbGVfcmF0ZV9oeiA9PSAzMjAwMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZml4LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlv
X2VuY29kZXJfaXNhY19maXguY2MKaW5kZXggY2Q4OTc1Mzk4YjQxNzhjOWU5ODU0OTVjYmM0YWQ3
YzA1NWQ1YzY2Yy4uYTEwZDFlZTYxYWU4Zjg5NmNkMmM0Y2FkNGIzNjhhZWM0ZDBhODY1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19maXguY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1
ZGlvX2VuY29kZXJfaXNhY19maXguY2MKQEAgLTExLDcgKzExLDcgQEAKICNpbmNsdWRlICJhcGkv
YXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2FjX2ZpeC5oIgogCiAjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJ
TlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvaW5jbHVkZS9hdWRpb19l
bmNvZGVyX2lzYWNmaXguaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmgi
CiAKQEAgLTE5LDcgKzE5LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGFic2w6Om9wdGlvbmFs
PEF1ZGlvRW5jb2RlcklzYWNGaXg6OkNvbmZpZz4gQXVkaW9FbmNvZGVySXNhY0ZpeDo6U2RwVG9D
b25maWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBpZiAoU1RSX0NB
U0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJJU0FDIikgPT0gMCAmJgorICBpZiAoYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIklTQUMiKSAmJgogICAgICAgZm9ybWF0LmNs
b2NrcmF0ZV9oeiA9PSAxNjAwMCAmJiBmb3JtYXQubnVtX2NoYW5uZWxzID09IDEpIHsKICAgICBD
b25maWcgY29uZmlnOwogICAgIGNvbnN0IGF1dG8gcHRpbWVfaXRlciA9IGZvcm1hdC5wYXJhbWV0
ZXJzLmZpbmQoInB0aW1lIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2Fj
X2ZpeC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19maXguaAppbmRleCA3MzFlNDhkMGMy
NzY2OGFhNzdjM2IwOGE1NmIxNjEwZWRiNmJjNWE2Li5jM2MzNjcyYjU4M2QxOTU5Y2QwYzAxYzJm
NDhmMjE2ODFkOWUxZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2FjX2Zp
eC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZml4LmgKQEAgLTIzLDggKzIzLDYg
QEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIGlTQUMgZW5jb2RlciBBUEkgKGZpeGVkLXBvaW50
IGltcGxlbWVudGF0aW9uKSBmb3IgdXNlIGFzIGEgdGVtcGxhdGUKIC8vIHBhcmFtZXRlciB0byBD
cmVhdGVBdWRpb0VuY29kZXJGYWN0b3J5PC4uLj4oKS4KLS8vCi0vLyBOT1RFOiBUaGlzIHN0cnVj
dCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGlj
ZS4KIHN0cnVjdCBBdWRpb0VuY29kZXJJc2FjRml4IHsKICAgc3RydWN0IENvbmZpZyB7CiAgICAg
Ym9vbCBJc09rKCkgY29uc3QgeyByZXR1cm4gZnJhbWVfc2l6ZV9tcyA9PSAzMCB8fCBmcmFtZV9z
aXplX21zID09IDYwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2FjX2Zs
b2F0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19mbG9hdC5jYwppbmRleCA4M2QxZmFm
ZjJmYzI0ZmYyMGJmZjQyYzUxZGQyMjYzNjRiYTMwMTAzLi4zNzk4MmIxZjE1ODcyZjczNDkwNTc4
YWE0YTM1YmYxMTQ2ODQ3MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2Fj
X2Zsb2F0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZmxvYXQuY2MKQEAgLTEx
LDcgKzExLDcgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rl
cl9pc2FjX2Zsb2F0LmgiCiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNs
dWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9pc2FjL21haW4vaW5jbHVkZS9hdWRpb19lbmNvZGVyX2lzYWMuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmgiCiAKQEAgLTE5LDcgKzE5LDcgQEAgbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKIGFic2w6Om9wdGlvbmFsPEF1ZGlvRW5jb2RlcklzYWNGbG9hdDo6Q29uZmln
PgogQXVkaW9FbmNvZGVySXNhY0Zsb2F0OjpTZHBUb0NvbmZpZyhjb25zdCBTZHBBdWRpb0Zvcm1h
dCYgZm9ybWF0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIklT
QUMiKSA9PSAwICYmCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAi
SVNBQyIpICYmCiAgICAgICAoZm9ybWF0LmNsb2NrcmF0ZV9oeiA9PSAxNjAwMCB8fCBmb3JtYXQu
Y2xvY2tyYXRlX2h6ID09IDMyMDAwKSAmJgogICAgICAgZm9ybWF0Lm51bV9jaGFubmVscyA9PSAx
KSB7CiAgICAgQ29uZmlnIGNvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVy
X2lzYWNfZmxvYXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZmxvYXQuaAppbmRleCA1
ZGYyZGQzZDZmNGIwNjVkNzRkMDY1ZmQyZTA2YmQzNWZhODViMzIwLi4wY2I5YzE3ZDcxMDVlZDM4
NjVjODJkYWI5MDlhMTEwNDE2ZWMyNTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rl
cl9pc2FjX2Zsb2F0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19mbG9hdC5oCkBA
IC0xOCwxNCArMTgsMTMgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVj
X3BhaXJfaWQuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuaCIK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBp
U0FDIGVuY29kZXIgQVBJIChmbG9hdGluZy1wb2ludCBpbXBsZW1lbnRhdGlvbikgZm9yIHVzZSBh
cyBhIHRlbXBsYXRlCiAvLyBwYXJhbWV0ZXIgdG8gQ3JlYXRlQXVkaW9FbmNvZGVyRmFjdG9yeTwu
Li4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1l
bnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi1zdHJ1Y3QgQXVkaW9FbmNvZGVySXNh
Y0Zsb2F0IHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvRW5jb2RlcklzYWNGbG9hdCB7CiAgIHN0
cnVjdCBDb25maWcgewogICAgIGJvb2wgSXNPaygpIGNvbnN0IHsKICAgICAgIHN3aXRjaCAoc2Ft
cGxlX3JhdGVfaHopIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9CVUlM
RC5nbgppbmRleCA4MDBhYmJlMjc5YmZlM2E2NWQxNmJiNjM3YmNkZmYwNTNmMDkyZTdhLi41NTUy
YzIxZmE1MTA3OTY3NmQ4OTcwNWEwOTkyYjEzZTk0ZmY3ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMv
QlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9vcHVzL0JVSUxELmduCkBAIC0yMCw2ICsyMCw3IEBAIHJ0Y19zdGF0
aWNfbGlicmFyeSgiYXVkaW9fZW5jb2Rlcl9vcHVzX2NvbmZpZyIpIHsKICAgXQogICBkZXBzID0g
WwogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4u
Ly4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiAgIGRlZmluZXMgPSBbXQpAQCAtNDQs
NiArNDUsOCBAQCBydGNfc291cmNlX3NldCgiYXVkaW9fZW5jb2Rlcl9vcHVzIikgewogICAgICIu
LjphdWRpb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6
d2VicnRjX29wdXMiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIs
CisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtNTcsMTAgKzYwLDExIEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rlcl9vcHVzIikgewogICBdCiAgIGRlcHMg
PSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29t
bW9uIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6d2VicnRjX29wdXMiLAog
ICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uLy4u
L3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
b3B1cy9hdWRpb19kZWNvZGVyX29wdXMuY2MKaW5kZXggNDEzOTdmMDRkMjAyNDg5M2UyNjkyMmNk
ZTBlZGI2MTU0MmIyMWY5Zi4uMmYxNjY4YjgyNWJjMDIwOTA4ZDk4Mzk4MWE1MTJiZjdmMzc2MGRk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMv
YXVkaW9fZGVjb2Rlcl9vcHVzLmNjCkBAIC0xNSw3ICsxNSw3IEBACiAjaW5jbHVkZSA8dmVjdG9y
PgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5
cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
bWF0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRp
b19kZWNvZGVyX29wdXMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zNSw3ICszNSw3IEBA
IGFic2w6Om9wdGlvbmFsPEF1ZGlvRGVjb2Rlck9wdXM6OkNvbmZpZz4gQXVkaW9EZWNvZGVyT3B1
czo6U2RwVG9Db25maWcoCiAgICAgfQogICAgIHJldHVybiAxOyAgLy8gRGVmYXVsdCB0byBtb25v
LgogICB9KCk7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIm9wdXMi
KSA9PSAwICYmCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAib3B1
cyIpICYmCiAgICAgICBmb3JtYXQuY2xvY2tyYXRlX2h6ID09IDQ4MDAwICYmIGZvcm1hdC5udW1f
Y2hhbm5lbHMgPT0gMiAmJgogICAgICAgbnVtX2NoYW5uZWxzKSB7CiAgICAgcmV0dXJuIENvbmZp
Z3sqbnVtX2NoYW5uZWxzfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19j
b2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuaAppbmRleCBkZTI2MDI2Yjc4MzM5NzliM2Zl
ZDdhZDliNTc0MGUzZWE3MjA2MDdhLi42ZmJiY2I1OThhMTRkNzdhZTZkYmYyNDZiYjM4N2U0Zjhi
OGI2ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9v
cHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5oCkBAIC0xOCwxNCArMTgsMTMgQEAKICNpbmNsdWRlICJh
cGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1
ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBPcHVzIGRlY29kZXIgQVBJIGZvciB1c2UgYXMgYSB0
ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rvcnk8Li4uPigp
LgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFu
ZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRGVjb2Rlck9wdXMgewor
c3RydWN0IFJUQ19FWFBPUlQgQXVkaW9EZWNvZGVyT3B1cyB7CiAgIHN0cnVjdCBDb25maWcgewog
ICAgIGludCBudW1fY2hhbm5lbHM7CiAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZW5j
b2Rlcl9vcHVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmgKaW5kZXggMjBhYWFmNzI2
ZjkzMTQ5NDkwMzIwZDA4MmUwMmZiYjBkZjMzZGRiYy4uMDNjYjBkNmIzOGM4MzM0NTY5ZmI2Njg4
NzJhZTRkOGU3NmE0ZDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXMuaApAQCAtMTksMTQgKzE5LDEzIEBACiAj
aW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBp
L2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzX2NvbmZpZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5
c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBPcHVzIGVuY29k
ZXIgQVBJIGZvciB1c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlv
RW5jb2RlckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxs
IHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0
IEF1ZGlvRW5jb2Rlck9wdXMgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9FbmNvZGVyT3B1cyB7
CiAgIHVzaW5nIENvbmZpZyA9IEF1ZGlvRW5jb2Rlck9wdXNDb25maWc7CiAgIHN0YXRpYyBhYnNs
OjpvcHRpb25hbDxBdWRpb0VuY29kZXJPcHVzQ29uZmlnPiBTZHBUb0NvbmZpZygKICAgICAgIGNv
bnN0IFNkcEF1ZGlvRm9ybWF0JiBhdWRpb19mb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1
ZGlvX2VuY29kZXJfb3B1c19jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXNfY29u
ZmlnLmgKaW5kZXggYzcwNjdiYjFjMzI0MTg2ZjJiNmRkYzU2NzMxYzVlYmJlMmFkMzU2Ny4uMGEz
ZWUyYzhkZmIwZDQwZDhhMmMxMjA4MGMwNTEzZjVkZDUwNjFjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVz
L2F1ZGlvX2VuY29kZXJfb3B1c19jb25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9v
cHVzX2NvbmZpZy5oCkBAIC0xNiwxMSArMTYsMTEgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNp
bmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVt
L3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLS8vIE5PVEU6IFRoaXMgc3Ry
dWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90
aWNlLgotc3RydWN0IEF1ZGlvRW5jb2Rlck9wdXNDb25maWcgeworc3RydWN0IFJUQ19FWFBPUlQg
QXVkaW9FbmNvZGVyT3B1c0NvbmZpZyB7CiAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtEZWZhdWx0
RnJhbWVTaXplTXMgPSAyMDsKIAogICAvLyBPcHVzIEFQSSBhbGxvd3MgYSBtaW4gYml0cmF0ZSBv
ZiA1MDBicHMsIGJ1dCBPcHVzIGRvY3VtZW50YXRpb24gc3VnZ2VzdHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19vcHRpb25z
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X29wdGlvbnMuY2MKaW5kZXggYTRhMzdkMjE5YTQzYzllYTI1NzY1ZWE1OWNjM2EzNzE2YTk1OTNm
YS4uZTMzMjE0YmFkMDRkNmNlOWJhNGY0ODJmY2M0NTBkOGVjYmJhNGY0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX29wdGlv
bnMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX29wdGlvbnMuY2MKQEAgLTQ5LDggKzQ5LDkgQEAgdm9pZCBBdWRpb09wdGlvbnM6OlNl
dEFsbChjb25zdCBBdWRpb09wdGlvbnMmIGNoYW5nZSkgewogICAgICAgICAgIGNoYW5nZS5hdWRp
b19qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzKTsKICAgU2V0RnJvbSgmYXVkaW9faml0dGVyX2J1
ZmZlcl9mYXN0X2FjY2VsZXJhdGUsCiAgICAgICAgICAgY2hhbmdlLmF1ZGlvX2ppdHRlcl9idWZm
ZXJfZmFzdF9hY2NlbGVyYXRlKTsKKyAgU2V0RnJvbSgmYXVkaW9faml0dGVyX2J1ZmZlcl9taW5f
ZGVsYXlfbXMsCisgICAgICAgICAgY2hhbmdlLmF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5
X21zKTsKICAgU2V0RnJvbSgmdHlwaW5nX2RldGVjdGlvbiwgY2hhbmdlLnR5cGluZ19kZXRlY3Rp
b24pOwotICBTZXRGcm9tKCZhZWNtX2dlbmVyYXRlX2NvbWZvcnRfbm9pc2UsIGNoYW5nZS5hZWNt
X2dlbmVyYXRlX2NvbWZvcnRfbm9pc2UpOwogICBTZXRGcm9tKCZleHBlcmltZW50YWxfYWdjLCBj
aGFuZ2UuZXhwZXJpbWVudGFsX2FnYyk7CiAgIFNldEZyb20oJmV4dGVuZGVkX2ZpbHRlcl9hZWMs
IGNoYW5nZS5leHRlbmRlZF9maWx0ZXJfYWVjKTsKICAgU2V0RnJvbSgmZGVsYXlfYWdub3N0aWNf
YWVjLCBjaGFuZ2UuZGVsYXlfYWdub3N0aWNfYWVjKTsKQEAgLTc3LDggKzc4LDkgQEAgYm9vbCBB
dWRpb09wdGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgQXVkaW9PcHRpb25zJiBvKSBjb25zdCB7CiAg
ICAgICAgICBhdWRpb19qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzID09IG8uYXVkaW9faml0dGVy
X2J1ZmZlcl9tYXhfcGFja2V0cyAmJgogICAgICAgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0
X2FjY2VsZXJhdGUgPT0KICAgICAgICAgICAgICBvLmF1ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9h
Y2NlbGVyYXRlICYmCisgICAgICAgICBhdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcyA9
PQorICAgICAgICAgICAgIG8uYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMgJiYKICAg
ICAgICAgIHR5cGluZ19kZXRlY3Rpb24gPT0gby50eXBpbmdfZGV0ZWN0aW9uICYmCi0gICAgICAg
ICBhZWNtX2dlbmVyYXRlX2NvbWZvcnRfbm9pc2UgPT0gby5hZWNtX2dlbmVyYXRlX2NvbWZvcnRf
bm9pc2UgJiYKICAgICAgICAgIGV4cGVyaW1lbnRhbF9hZ2MgPT0gby5leHBlcmltZW50YWxfYWdj
ICYmCiAgICAgICAgICBleHRlbmRlZF9maWx0ZXJfYWVjID09IG8uZXh0ZW5kZWRfZmlsdGVyX2Fl
YyAmJgogICAgICAgICAgZGVsYXlfYWdub3N0aWNfYWVjID09IG8uZGVsYXlfYWdub3N0aWNfYWVj
ICYmCkBAIC0xMDksOCArMTExLDkgQEAgc3RkOjpzdHJpbmcgQXVkaW9PcHRpb25zOjpUb1N0cmlu
ZygpIGNvbnN0IHsKICAgICAgICAgICAgICAgICBhdWRpb19qaXR0ZXJfYnVmZmVyX21heF9wYWNr
ZXRzKTsKICAgVG9TdHJpbmdJZlNldCgmcmVzdWx0LCAiYXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0
X2FjY2VsZXJhdGUiLAogICAgICAgICAgICAgICAgIGF1ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9h
Y2NlbGVyYXRlKTsKKyAgVG9TdHJpbmdJZlNldCgmcmVzdWx0LCAiYXVkaW9faml0dGVyX2J1ZmZl
cl9taW5fZGVsYXlfbXMiLAorICAgICAgICAgICAgICAgIGF1ZGlvX2ppdHRlcl9idWZmZXJfbWlu
X2RlbGF5X21zKTsKICAgVG9TdHJpbmdJZlNldCgmcmVzdWx0LCAidHlwaW5nIiwgdHlwaW5nX2Rl
dGVjdGlvbik7Ci0gIFRvU3RyaW5nSWZTZXQoJnJlc3VsdCwgImNvbWZvcnRfbm9pc2UiLCBhZWNt
X2dlbmVyYXRlX2NvbWZvcnRfbm9pc2UpOwogICBUb1N0cmluZ0lmU2V0KCZyZXN1bHQsICJleHBl
cmltZW50YWxfYWdjIiwgZXhwZXJpbWVudGFsX2FnYyk7CiAgIFRvU3RyaW5nSWZTZXQoJnJlc3Vs
dCwgImV4dGVuZGVkX2ZpbHRlcl9hZWMiLCBleHRlbmRlZF9maWx0ZXJfYWVjKTsKICAgVG9TdHJp
bmdJZlNldCgmcmVzdWx0LCAiZGVsYXlfYWdub3N0aWNfYWVjIiwgZGVsYXlfYWdub3N0aWNfYWVj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19vcHRpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvYXVkaW9fb3B0aW9ucy5oCmluZGV4IGFlY2ZmNDE0Mjk4Y2QyNDhlZTQyYzEw
NmYyZDUzMGU1M2U2MzI1NTEuLmMyZDFmNDQ4N2MzNjg3NGQ1Mzg5ZDZkNTRhOWIxZWE0MjE4YjU4
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19vcHRpb25zLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvX29wdGlvbnMuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRl
ZiBBUElfQVVESU9fT1BUSU9OU19IXwogI2RlZmluZSBBUElfQVVESU9fT1BUSU9OU19IXwogCisj
aW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgpAQCAtNTMsOSArNTQsMTAgQEAgc3RydWN0IEF1ZGlvT3B0aW9ucyB7
CiAgIGFic2w6Om9wdGlvbmFsPGludD4gYXVkaW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0czsK
ICAgLy8gQXVkaW8gcmVjZWl2ZXIgaml0dGVyIGJ1ZmZlciAoTmV0RXEpIGZhc3QgYWNjZWxlcmF0
ZSBtb2RlLgogICBhYnNsOjpvcHRpb25hbDxib29sPiBhdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3Rf
YWNjZWxlcmF0ZTsKKyAgLy8gQXVkaW8gcmVjZWl2ZXIgaml0dGVyIGJ1ZmZlciAoTmV0RXEpIG1p
bmltdW0gdGFyZ2V0IGRlbGF5IGluIG1pbGxpc2Vjb25kcy4KKyAgYWJzbDo6b3B0aW9uYWw8aW50
PiBhdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tczsKICAgLy8gQXVkaW8gcHJvY2Vzc2lu
ZyB0byBkZXRlY3QgdHlwaW5nLgogICBhYnNsOjpvcHRpb25hbDxib29sPiB0eXBpbmdfZGV0ZWN0
aW9uOwotICBhYnNsOjpvcHRpb25hbDxib29sPiBhZWNtX2dlbmVyYXRlX2NvbWZvcnRfbm9pc2U7
CiAgIGFic2w6Om9wdGlvbmFsPGJvb2w+IGV4cGVyaW1lbnRhbF9hZ2M7CiAgIGFic2w6Om9wdGlv
bmFsPGJvb2w+IGV4dGVuZGVkX2ZpbHRlcl9hZWM7CiAgIGFic2w6Om9wdGlvbmFsPGJvb2w+IGRl
bGF5X2Fnbm9zdGljX2FlYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYWxsL2JpdHJhdGVfYWxsb2NhdGlvbi5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbGwvYml0cmF0ZV9hbGxvY2F0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmQ3ZjIxYmMxZTk0MWNhNDliZjg1ZDBjN2QzNmZmMzYzMGExNjUx
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9jYWxsL2JpdHJhdGVfYWxsb2NhdGlvbi5oCkBAIC0wLDAgKzEsNDEgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisjaWZuZGVmIEFQSV9DQUxMX0JJVFJBVEVfQUxMT0NBVElPTl9IXwor
I2RlZmluZSBBUElfQ0FMTF9CSVRSQVRFX0FMTE9DQVRJT05fSF8KKworI2luY2x1ZGUgImFwaS91
bml0cy9kYXRhX3JhdGUuaCIKKyNpbmNsdWRlICJhcGkvdW5pdHMvdGltZV9kZWx0YS5oIgorCitu
YW1lc3BhY2Ugd2VicnRjIHsKKworLy8gQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgcHJvdmlkZXMg
aW5mb3JtYXRpb24gdG8gYWxsb2NhdGVkIHN0cmVhbXMgYWJvdXQgdGhlaXIKKy8vIGJpdHJhdGUg
YWxsb2NhdGlvbi4gSXQgb3JpZ2luYXRlcyBmcm9tIHRoZSBCaXRyYXRlQWxsb2NhdGVyIGNsYXNz
IGFuZCBpcworLy8gcHJvcGFnYXRlZCBmcm9tIHRoZXJlLgorc3RydWN0IEJpdHJhdGVBbGxvY2F0
aW9uVXBkYXRlIHsKKyAgLy8gVGhlIGFsbG9jYXRlZCB0YXJnZXQgYml0cmF0ZS4gTWVkaWEgc3Ry
ZWFtcyBzaG91bGQgcHJvZHVjZSB0aGlzIGFtb3VudCBvZgorICAvLyBkYXRhLiAoTm90ZSB0aGF0
IHRoaXMgbWF5IGluY2x1ZGUgcGFja2V0IG92ZXJoZWFkIGRlcGVuZGluZyBvbgorICAvLyBjb25m
aWd1cmF0aW9uLikKKyAgRGF0YVJhdGUgdGFyZ2V0X2JpdHJhdGUgPSBEYXRhUmF0ZTo6WmVybygp
OworICAvLyBUaGUgYWxsb2NhdGVkIHBhcnQgb2YgdGhlIGVzdGltYXRlZCBsaW5rIGNhcGFjaXR5
LiBUaGlzIGlzIG1vcmUgc3RhYmxlIHRoYW4KKyAgLy8gdGhlIHRhcmdldCBhcyBpdCBpcyBiYXNl
ZCBvbiB0aGUgdW5kZXJseWluZyBsaW5rIGNhcGFjaXR5IGVzdGltYXRlLiBUaGlzCisgIC8vIHNo
b3VsZCBiZSB1c2VkIHRvIGNoYW5nZSBlbmNvZGVyIGNvbmZpZ3VyYXRpb24gd2hlbiB0aGUgY29z
dCBvZiBjaGFuZ2UgaXMKKyAgLy8gaGlnaC4KKyAgRGF0YVJhdGUgbGlua19jYXBhY2l0eSA9IERh
dGFSYXRlOjpaZXJvKCk7CisgIC8vIFByZWRpY3RlZCBwYWNrZXQgbG9zcyByYXRpby4KKyAgZG91
YmxlIHBhY2tldF9sb3NzX3JhdGlvID0gMDsKKyAgLy8gUHJlZGljdGVkIHJvdW5kIHRyaXAgdGlt
ZS4KKyAgVGltZURlbHRhIHJvdW5kX3RyaXBfdGltZSA9IFRpbWVEZWx0YTo6UGx1c0luZmluaXR5
KCk7CisgIC8vIHxid2VfcGVyaW9kfCBpcyBkZXByZWNhdGVkLCB1c2UgdGhlIGxpbmsgY2FwYWNp
dHkgYWxsb2NhdGlvbiBpbnN0ZWFkLgorICBUaW1lRGVsdGEgYndlX3BlcmlvZCA9IFRpbWVEZWx0
YTo6UGx1c0luZmluaXR5KCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRp
ZiAgLy8gQVBJX0NBTExfQklUUkFURV9BTExPQ0FUSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FsbC90cmFuc3BvcnQuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FsbC90cmFu
c3BvcnQuY2MKaW5kZXggMGE5ZGQ1YmNjN2UxNTg1MWI0NDhmYzI3ODExZWI0YjVlMTcwN2RiYi4u
YmNhZGM3NjJkZTRkMTkzNGY0MDgzZGFjMThmMjVhYjhkZGEyMzdiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbGwvdHJhbnNwb3J0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9j
YWxsL3RyYW5zcG9ydC5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAiYXBpL2NhbGwv
dHJhbnNwb3J0LmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgorCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IAogUGFja2V0T3B0aW9uczo6UGFja2V0T3B0aW9ucygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYWxsL3RyYW5z
cG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2Nh
bGwvdHJhbnNwb3J0LmgKaW5kZXggMThkMjI3MDVjZDZkZjkxNWMxYzYyMzRlZmE4NGNmM2I1OWU5
OTc5Ni4uMzJlNWRkZjg3NGZiMWM0Y2MxMGI1ZjFiZmQ5MTNlZGUzMTE1MTg3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbGwvdHJh
bnNwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2NhbGwvdHJhbnNwb3J0LmgKQEAgLTMyLDYgKzMyLDggQEAgc3RydWN0IFBhY2tldE9wdGlv
bnMgewogICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBhcHBsaWNhdGlvbl9kYXRhOwogICAvLyBXaGV0
aGVyIHRoaXMgaXMgYSByZXRyYW5zbWlzc2lvbiBvZiBhbiBlYXJsaWVyIHBhY2tldC4KICAgYm9v
bCBpc19yZXRyYW5zbWl0ID0gZmFsc2U7CisgIGJvb2wgaW5jbHVkZWRfaW5fZmVlZGJhY2sgPSBm
YWxzZTsKKyAgYm9vbCBpbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0gZmFsc2U7CiB9OwogCiBjbGFz
cyBUcmFuc3BvcnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2NhbmRpZGF0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRhdGUuY2MKaW5kZXggYzJjNmM1MzAxNzJjY2UxYjVl
MTllNTBjZmZhNjAxYWI4MDcyODVmMy4uMjc1YjE3MzY2YzIxY2RjZDBlN2Q0ZTVlYTNjNzgwOGVl
NTQ3M2NhMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2NhbmRpZGF0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvY2FuZGlkYXRlLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNs
dWRlICJhcGkvY2FuZGlkYXRlLmgiCiAKKyNpbmNsdWRlICJydGNfYmFzZS9oZWxwZXJzLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvaXBhZGRyZXNzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
cy9zdHJpbmdfYnVpbGRlci5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FuZGlkYXRlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FuZGlkYXRl
LmgKaW5kZXggNmUwNTQ3YjVlMmZkODRlOGRmMDEzODg3ZjUwYWRmZDQxNzA0NDBmZi4uNGM2NTBk
OWJkYmQ1MmQzYzM0ZGUwZjM1NDA2ZDE3YjgwMmNmYWMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbmRpZGF0ZS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRhdGUuaApA
QCAtMTgsMTYgKzE4LDE2IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL25ldHdvcmtfY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRk
cmVzcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVz
cGFjZSBjcmlja2V0IHsKIAogLy8gQ2FuZGlkYXRlIGZvciBJQ0UgYmFzZWQgY29ubmVjdGlvbiBk
aXNjb3ZlcnkuCiAvLyBUT0RPKHBob2dsdW5kKTogcmVtb3ZlIHRoaW5ncyBpbiBoZXJlIHRoYXQg
YXJlIG5vdCBuZWVkZWQgaW4gdGhlIHB1YmxpYyBBUEkuCiAKLWNsYXNzIENhbmRpZGF0ZSB7Citj
bGFzcyBSVENfRVhQT1JUIENhbmRpZGF0ZSB7CiAgcHVibGljOgogICBDYW5kaWRhdGUoKTsKICAg
Ly8gVE9ETyhwdGhhdGNoZXIpOiBNYXRjaCB0aGUgb3JkZXJpbmcgYW5kIHBhcmFtIGxpc3QgYXMg
cGVyIFJGQyA1MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3JlYXRlX3BlZXJjb25uZWN0
aW9uX2ZhY3RvcnkuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE2ZDA4NmY2NjAwZDE3YzE1YzA2OWRhODYyMjBj
Mjk1NzhkNzBmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5jYwpAQCAt
MCwwICsxLDE4MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImFwaS9jcmVhdGVf
cGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIgorCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUg
PHV0aWxpdHk+CisKKyNpbmNsdWRlICJhcGkvY2FsbC9jYWxsZmFjdG9yeWludGVyZmFjZS5oIgor
I2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgorI2luY2x1ZGUgImFwaS92
aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19l
dmVudF9sb2cvcnRjX2V2ZW50X2xvZ19mYWN0b3J5LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfZmFjdG9yeV9pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJt
ZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9iaW5kLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS90aHJlYWQuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKyNpZiBkZWZpbmVk
KFVTRV9CVUlMVElOX1NXX0NPREVDUykKK3J0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnkpIHsKKyAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeVdpdGhB
dWRpb01peGVyKAorICAgICAgbnVsbHB0ciAvKm5ldHdvcmtfdGhyZWFkKi8sIG51bGxwdHIgLyp3
b3JrZXJfdGhyZWFkKi8sCisgICAgICBudWxscHRyIC8qc2lnbmFsaW5nX3RocmVhZCovLCBudWxs
cHRyIC8qZGVmYXVsdF9hZG0qLywKKyAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgbnVsbHB0ciAvKnZpZGVvX2VuY29kZXJfZmFjdG9yeSov
LCBudWxscHRyIC8qdmlkZW9fZGVjb2Rlcl9mYWN0b3J5Ki8sCisgICAgICBudWxscHRyIC8qYXVk
aW9fbWl4ZXIqLyk7Cit9CisKKy8vIE5vdGU6IGFsbCB0aGUgb3RoZXIgQ3JlYXRlUGVlckNvbm5l
Y3Rpb25GYWN0b3J5IHZhcmlhbnRzIGp1c3QgZW5kIHVwIGNhbGxpbmcKKy8vIHRoaXMsIHVsdGlt
YXRlbHkuCitydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNl
PiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCisgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtf
dGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFk
KiBzaWduYWxpbmdfdGhyZWFkLAorICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwK
KyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rl
cl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBh
dWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFj
dG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVj
b2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZw
dHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
UHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZykgeworICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nX3VzZSA9IGF1ZGlvX3Byb2Nlc3Npbmc7Cisg
IGlmICghYXVkaW9fcHJvY2Vzc2luZ191c2UpIHsKKyAgICBhdWRpb19wcm9jZXNzaW5nX3VzZSA9
IEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKTsKKyAgfQorCisgIHN0ZDo6dW5pcXVl
X3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5naW5lKAorICAgICAg
Y3JpY2tldDo6V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCisgICAgICAgICAgZGVm
YXVsdF9hZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAor
ICAgICAgICAgIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LCBh
dWRpb19taXhlciwKKyAgICAgICAgICBhdWRpb19wcm9jZXNzaW5nX3VzZSkpOworCisgIHN0ZDo6
dW5pcXVlX3B0cjxDYWxsRmFjdG9yeUludGVyZmFjZT4gY2FsbF9mYWN0b3J5ID0gQ3JlYXRlQ2Fs
bEZhY3RvcnkoKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dGYWN0b3J5SW50ZXJm
YWNlPiBldmVudF9sb2dfZmFjdG9yeSA9CisgICAgICBDcmVhdGVSdGNFdmVudExvZ0ZhY3Rvcnko
KTsKKworICByZXR1cm4gQ3JlYXRlTW9kdWxhclBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICAg
IG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBzdGQ6Om1v
dmUobWVkaWFfZW5naW5lKSwKKyAgICAgIHN0ZDo6bW92ZShjYWxsX2ZhY3RvcnkpLCBzdGQ6Om1v
dmUoZXZlbnRfbG9nX2ZhY3RvcnkpKTsKK30KKworcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25u
ZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAorICAg
IHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogd29ya2VyX3Ro
cmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBBdWRpb0Rldmlj
ZU1vZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2Rl
ckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8
QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6
OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBj
cmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3Rvcnks
CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAorICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcsCisgICAg
c3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlPiBmZWNfY29udHJv
bGxlcl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckZhY3Rv
cnlJbnRlcmZhY2U+CisgICAgICAgIG5ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5KSB7CisgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmdfdXNlID0g
YXVkaW9fcHJvY2Vzc2luZzsKKyAgaWYgKCFhdWRpb19wcm9jZXNzaW5nX3VzZSkgeworICAgIGF1
ZGlvX3Byb2Nlc3NpbmdfdXNlID0gQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpOwor
ICB9CisKKyAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBt
ZWRpYV9lbmdpbmUoCisgICAgICBjcmlja2V0OjpXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNy
ZWF0ZSgKKyAgICAgICAgICBkZWZhdWx0X2FkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRp
b19kZWNvZGVyX2ZhY3RvcnksCisgICAgICAgICAgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LCB2aWRl
b19kZWNvZGVyX2ZhY3RvcnksIGF1ZGlvX21peGVyLAorICAgICAgICAgIGF1ZGlvX3Byb2Nlc3Np
bmdfdXNlKSk7CisKKyAgc3RkOjp1bmlxdWVfcHRyPENhbGxGYWN0b3J5SW50ZXJmYWNlPiBjYWxs
X2ZhY3RvcnkgPSBDcmVhdGVDYWxsRmFjdG9yeSgpOworCisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudExvZ0ZhY3RvcnlJbnRlcmZhY2U+IGV2ZW50X2xvZ19mYWN0b3J5ID0KKyAgICAgIENyZWF0
ZVJ0Y0V2ZW50TG9nRmFjdG9yeSgpOworCisgIHJldHVybiBDcmVhdGVNb2R1bGFyUGVlckNvbm5l
Y3Rpb25GYWN0b3J5KAorICAgICAgbmV0d29ya190aHJlYWQsIHdvcmtlcl90aHJlYWQsIHNpZ25h
bGluZ190aHJlYWQsIHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpLAorICAgICAgc3RkOjptb3ZlKGNh
bGxfZmFjdG9yeSksIHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSksCisgICAgICBzdGQ6Om1v
dmUoZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSksIHN0ZDo6bW92ZShuZXR3b3JrX2NvbnRyb2xsZXJf
ZmFjdG9yeSkpOworfQorI2VuZGlmCisKK3J0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICBydGM6
OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQs
CisgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCisgICAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBkZWZhdWx0X2FkbSwKKyAgICBydGM6OnNjb3BlZF9yZWZw
dHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3Rvcnks
CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IHZpZGVvX2VuY29kZXJf
ZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9yeT4gdmlkZW9f
ZGVjb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01peGVyPiBhdWRp
b19taXhlciwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19w
cm9jZXNzaW5nKSB7CisgIGlmICghYXVkaW9fcHJvY2Vzc2luZykKKyAgICBhdWRpb19wcm9jZXNz
aW5nID0gQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpOworCisgIHN0ZDo6dW5pcXVl
X3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5naW5lID0KKyAgICAg
IGNyaWNrZXQ6OldlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAorICAgICAgICAgIGRl
ZmF1bHRfYWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwK
KyAgICAgICAgICBzdGQ6Om1vdmUodmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSwgc3RkOjptb3ZlKHZp
ZGVvX2RlY29kZXJfZmFjdG9yeSksCisgICAgICAgICAgYXVkaW9fbWl4ZXIsIGF1ZGlvX3Byb2Nl
c3NpbmcpOworCisgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRmFjdG9yeUludGVyZmFjZT4gY2FsbF9m
YWN0b3J5ID0gQ3JlYXRlQ2FsbEZhY3RvcnkoKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnRMb2dGYWN0b3J5SW50ZXJmYWNlPiBldmVudF9sb2dfZmFjdG9yeSA9CisgICAgICBDcmVhdGVS
dGNFdmVudExvZ0ZhY3RvcnkoKTsKKyAgUGVlckNvbm5lY3Rpb25GYWN0b3J5RGVwZW5kZW5jaWVz
IGRlcGVuZGVuY2llczsKKyAgZGVwZW5kZW5jaWVzLm5ldHdvcmtfdGhyZWFkID0gbmV0d29ya190
aHJlYWQ7CisgIGRlcGVuZGVuY2llcy53b3JrZXJfdGhyZWFkID0gd29ya2VyX3RocmVhZDsKKyAg
ZGVwZW5kZW5jaWVzLnNpZ25hbGluZ190aHJlYWQgPSBzaWduYWxpbmdfdGhyZWFkOworICBkZXBl
bmRlbmNpZXMubWVkaWFfZW5naW5lID0gc3RkOjptb3ZlKG1lZGlhX2VuZ2luZSk7CisgIGRlcGVu
ZGVuY2llcy5jYWxsX2ZhY3RvcnkgPSBzdGQ6Om1vdmUoY2FsbF9mYWN0b3J5KTsKKyAgZGVwZW5k
ZW5jaWVzLmV2ZW50X2xvZ19mYWN0b3J5ID0gc3RkOjptb3ZlKGV2ZW50X2xvZ19mYWN0b3J5KTsK
KyAgcmV0dXJuIENyZWF0ZU1vZHVsYXJQZWVyQ29ubmVjdGlvbkZhY3Rvcnkoc3RkOjptb3ZlKGRl
cGVuZGVuY2llcykpOworfQorCisjaWYgZGVmaW5lZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCity
dGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPgorQ3JlYXRl
UGVlckNvbm5lY3Rpb25GYWN0b3J5V2l0aEF1ZGlvTWl4ZXIoCisgICAgcnRjOjpUaHJlYWQqIG5l
dHdvcmtfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAorICAgIHJ0Yzo6
VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAorICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0
X2FkbSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0
b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNv
ZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1Zp
ZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIpIHsKKyAgcmV0dXJuIENyZWF0ZVBlZXJD
b25uZWN0aW9uRmFjdG9yeSgKKyAgICAgIG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLCBz
aWduYWxpbmdfdGhyZWFkLCBkZWZhdWx0X2FkbSwKKyAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9y
eSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICB2
aWRlb19kZWNvZGVyX2ZhY3RvcnksIGF1ZGlvX21peGVyLCBudWxscHRyKTsKK30KKworcnRjOjpz
Y29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNv
bm5lY3Rpb25GYWN0b3J5KAorICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBy
dGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3Ro
cmVhZCwKKyAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29w
ZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9m
YWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2Vu
Y29kZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2
aWRlb19kZWNvZGVyX2ZhY3RvcnkpIHsKKyAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeVdpdGhBdWRpb01peGVyKAorICAgICAgbmV0d29ya190aHJlYWQsIHdvcmtlcl90aHJlYWQs
IHNpZ25hbGluZ190aHJlYWQsIGRlZmF1bHRfYWRtLAorICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICAg
IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwgbnVsbHB0cik7Cit9CisjZW5kaWYKKworfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3JlYXRlX3BlZXJjb25uZWN0
aW9uX2ZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYWE1MGM3YmQ4MDYzZDU2MjM5NWUwMWY3ZjIzMzAy
MTJlZmFmNGUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgKQEAgLTAs
MCArMSwxNzkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX0NSRUFURV9QRUVS
Q09OTkVDVElPTl9GQUNUT1JZX0hfCisjZGVmaW5lIEFQSV9DUkVBVEVfUEVFUkNPTk5FQ1RJT05f
RkFDVE9SWV9IXworCisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1
ZGlvX21peGVyLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2Zh
Y3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9y
eS5oIgorI2luY2x1ZGUgImFwaS9mZWNfY29udHJvbGxlci5oIgorI2luY2x1ZGUgImFwaS9wZWVy
Y29ubmVjdGlvbmludGVyZmFjZS5oIgorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya19j
b250cm9sLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKKworbmFtZXNw
YWNlIHJ0YyB7CisvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85OTg3KTogTW92ZSBydGM6OlRocmVh
ZCB0byBhcGkvIG9yIGV4cG9zZSBhIGJldHRlcgorLy8gdHlwZS4gQXQgdGhlIG1vbWVudCwgcnRj
OjpUaHJlYWQgaXMgbm90IHBhcnQgb2YgYXBpLyBzbyBpdCBjYW5ub3QgYmUKKy8vIGluY2x1ZGVk
IGluIG9yZGVyIHRvIGF2b2lkIHRvIGxlYWsgaW50ZXJuYWwgdHlwZXMuCitjbGFzcyBUaHJlYWQ7
Cit9ICAvLyBuYW1lc3BhY2UgcnRjCisKK25hbWVzcGFjZSBjcmlja2V0IHsKK2NsYXNzIFdlYlJ0
Y1ZpZGVvRGVjb2RlckZhY3Rvcnk7CitjbGFzcyBXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5Owor
fSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIEF1
ZGlvRGV2aWNlTW9kdWxlOworY2xhc3MgQXVkaW9Qcm9jZXNzaW5nOworCisjaWYgZGVmaW5lZChV
U0VfQlVJTFRJTl9TV19DT0RFQ1MpCisvLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlLgorLy8KKy8vIFRoaXMgbWV0aG9kIHJlbGllcyBvbiB0
aGUgdGhyZWFkIGl0J3MgY2FsbGVkIG9uIGFzIHRoZSAic2lnbmFsaW5nIHRocmVhZCIKKy8vIGZv
ciB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5IGl0IGNyZWF0ZXMuCisvLworLy8gQXMgc3VjaCwg
aWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBhbHJlYWR5IHJ1bm5pbmcgYW4gcnRjOjpUaHJl
YWQgbWVzc2FnZQorLy8gbG9vcCwgYW4gYXBwbGljYXRpb24gdXNpbmcgdGhpcyBtZXRob2QgbXVz
dCBldmVudHVhbGx5IGVpdGhlciBjYWxsCisvLyBydGM6OlRocmVhZDo6Q3VycmVudCgpLT5SdW4o
KSwgb3IgY2FsbAorLy8gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKS0+UHJvY2Vzc01lc3NhZ2VzKCkg
d2l0aGluIHRoZSBhcHBsaWNhdGlvbidzIG93bgorLy8gbWVzc2FnZSBsb29wLgorUlRDX0VYUE9S
VCBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPgorQ3Jl
YXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0Vu
Y29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSk7CisKKy8vIENy
ZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UuCisv
LworLy8gfG5ldHdvcmtfdGhyZWFkfCwgfHdvcmtlcl90aHJlYWR8IGFuZCB8c2lnbmFsaW5nX3Ro
cmVhZHwgYXJlCisvLyB0aGUgb25seSBtYW5kYXRvcnkgcGFyYW1ldGVycy4KKy8vCisvLyBJZiBu
b24tbnVsbCwgYSByZWZlcmVuY2UgaXMgYWRkZWQgdG8gfGRlZmF1bHRfYWRtfCwgYW5kIG93bmVy
c2hpcCBvZgorLy8gfHZpZGVvX2VuY29kZXJfZmFjdG9yeXwgYW5kIHx2aWRlb19kZWNvZGVyX2Zh
Y3Rvcnl8IGlzIHRyYW5zZmVycmVkIHRvIHRoZQorLy8gcmV0dXJuZWQgZmFjdG9yeS4KKy8vIFRP
RE8oZGVhZGJlZWYpOiBVc2UgcnRjOjpzY29wZWRfcmVmcHRyPD4gYW5kIHN0ZDo6dW5pcXVlX3B0
cjw+IHRvIG1ha2UgdGhpcworLy8gb3duZXJzaGlwIHRyYW5zZmVyIGFuZCByZWYgY291bnRpbmcg
bW9yZSBvYnZpb3VzLgorUlRDX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rp
b25GYWN0b3J5SW50ZXJmYWNlPgorQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAorICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVh
ZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBBdWRpb0RldmljZU1v
ZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZh
Y3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6Oldl
YlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBjcmlj
a2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkpOwor
CisvLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJm
YWNlIHdpdGggb3B0aW9uYWwKKy8vIGV4dGVybmFsIGF1ZGlvIG1peGVkIGFuZCBhdWRpbyBwcm9j
ZXNzaW5nIG1vZHVsZXMuCisvLworLy8gSWYgfGF1ZGlvX21peGVyfCBpcyBudWxsLCBhbiBpbnRl
cm5hbCBhdWRpbyBtaXhlciB3aWxsIGJlIGNyZWF0ZWQgYW5kIHVzZWQuCisvLyBJZiB8YXVkaW9f
cHJvY2Vzc2luZ3wgaXMgbnVsbCwgYW4gaW50ZXJuYWwgYXVkaW8gcHJvY2Vzc2luZyBtb2R1bGUg
d2lsbCBiZQorLy8gY3JlYXRlZCBhbmQgdXNlZC4KK1JUQ19FWFBPUlQgcnRjOjpzY29wZWRfcmVm
cHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KK0NyZWF0ZVBlZXJDb25uZWN0aW9u
RmFjdG9yeSgKKyAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgcnRjOjpUaHJl
YWQqIHdvcmtlcl90aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCisg
ICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRtLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwK
KyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2Zh
Y3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVj
b2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01peGVyPiBhdWRpb19t
aXhlciwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9j
ZXNzaW5nKTsKKworLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25uZWN0aW9uRmFj
dG9yeUludGVyZmFjZSB3aXRoIG9wdGlvbmFsCisvLyBleHRlcm5hbCBhdWRpbyBtaXhlciwgYXVk
aW8gcHJvY2Vzc2luZywgYW5kIGZlYyBjb250cm9sbGVyIG1vZHVsZXMuCisvLworLy8gSWYgfGF1
ZGlvX21peGVyfCBpcyBudWxsLCBhbiBpbnRlcm5hbCBhdWRpbyBtaXhlciB3aWxsIGJlIGNyZWF0
ZWQgYW5kIHVzZWQuCisvLyBJZiB8YXVkaW9fcHJvY2Vzc2luZ3wgaXMgbnVsbCwgYW4gaW50ZXJu
YWwgYXVkaW8gcHJvY2Vzc2luZyBtb2R1bGUgd2lsbCBiZQorLy8gY3JlYXRlZCBhbmQgdXNlZC4K
Ky8vIElmIHxmZWNfY29udHJvbGxlcl9mYWN0b3J5fCBpcyBudWxsLCBhbiBpbnRlcm5hbCBmZWMg
Y29udHJvbGxlciBtb2R1bGUgd2lsbAorLy8gYmUgY3JlYXRlZCBhbmQgdXNlZC4KKy8vIElmIHxu
ZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeXwgaXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdXNlZCBp
ZiBlbmFibGVkIHZpYQorLy8gZmllbGQgdHJpYWwuCitSVENfRVhQT1JUIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+CitDcmVhdGVQZWVyQ29ubmVjdGlv
bkZhY3RvcnkoCisgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgIHJ0Yzo6VGhy
ZWFkKiB3b3JrZXJfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAor
ICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwKKyAgICBydGM6OnNjb3BlZF9yZWZw
dHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3Rvcnks
CisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2Rl
Y29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9f
bWl4ZXIsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJv
Y2Vzc2luZywKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3RvcnlJbnRlcmZh
Y2U+IGZlY19jb250cm9sbGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
b250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4KKyAgICAgICAgbmV0d29ya19jb250cm9sbGVyX2Zh
Y3RvcnkgPSBudWxscHRyKTsKKyNlbmRpZiAgLy8gZGVmaW5lZChVU0VfQlVJTFRJTl9TV19DT0RF
Q1MpCisKKy8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJ
bnRlcmZhY2Ugd2l0aCBvcHRpb25hbCB2aWRlbworLy8gY29kZWMgZmFjdG9yaWVzLiBUaGVzZSB2
aWRlbyBmYWN0b3JpZXMgcmVwcmVzZW50cyBhbGwgdmlkZW8gY29kZWNzLCBpLmUuIG5vCisvLyBl
eHRyYSBpbnRlcm5hbCB2aWRlbyBjb2RlY3Mgd2lsbCBiZSBhZGRlZC4KKy8vIFdoZW4gYnVpbGRp
bmcgV2ViUlRDIHdpdGggcnRjX3VzZV9idWlsdGluX3N3X2NvZGVjcyA9IGZhbHNlLCB0aGlzIGlz
IHRoZQorLy8gb25seSBhdmFpbGFibGUgQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5IG92ZXJs
b2FkLgorUlRDX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlPgorQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAorICAgIHJ0Yzo6VGhyZWFk
KiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKKyAgICBy
dGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9EZXZpY2VNb2R1bGU+IGRlZmF1bHRfYWRtLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
LAorICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRlb19kZWNvZGVy
X2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVy
LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3Np
bmcpOworCisjaWYgZGVmaW5lZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCisvLyBDcmVhdGUgYSBu
ZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHdpdGggZXh0ZXJu
YWwgYXVkaW8KKy8vIG1peGVyLgorLy8KKy8vIElmIHxhdWRpb19taXhlcnwgaXMgbnVsbCwgYW4g
aW50ZXJuYWwgYXVkaW8gbWl4ZXIgd2lsbCBiZSBjcmVhdGVkIGFuZCB1c2VkLgorUlRDX0VYUE9S
VCBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPgorQ3Jl
YXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5V2l0aEF1ZGlvTWl4ZXIoCisgICAgcnRjOjpUaHJlYWQq
IG5ldHdvcmtfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAorICAgIHJ0
Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAorICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZh
dWx0X2FkbSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVk
aW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJG
YWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9F
bmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0
Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIpOworCisvLyBDcmVhdGUgYSBuZXcg
aW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlLgorLy8gU2FtZSB0aHJl
YWQgaXMgdXNlZCBhcyB3b3JrZXIgYW5kIG5ldHdvcmsgdGhyZWFkLgorUlRDX0VYUE9SVCBpbmxp
bmUgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KK0Ny
ZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICBydGM6OlRocmVhZCogd29ya2VyX2FuZF9u
ZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBB
dWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1
ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAg
IGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9y
eSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVy
X2ZhY3RvcnkpIHsKKyAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICAg
IHdvcmtlcl9hbmRfbmV0d29ya190aHJlYWQsIHdvcmtlcl9hbmRfbmV0d29ya190aHJlYWQsIHNp
Z25hbGluZ190aHJlYWQsCisgICAgICBkZWZhdWx0X2FkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICB2aWRlb19lbmNvZGVyX2ZhY3RvcnksIHZp
ZGVvX2RlY29kZXJfZmFjdG9yeSk7Cit9CisjZW5kaWYgIC8vIGRlZmluZWQoVVNFX0JVSUxUSU5f
U1dfQ09ERUNTKQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX0NS
RUFURV9QRUVSQ09OTkVDVElPTl9GQUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvL2Ny
eXB0b29wdGlvbnMuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YzNGYxOWI1Mzg1NzIyZGMyYWJhZWZjOWI1MmYx
ZDA2ZmZiNDM1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5jYwpAQCAtMCwwICsxLDc4
IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL2NyeXB0by9jcnlwdG9vcHRp
b25zLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgorCituYW1lc3Bh
Y2Ugd2VicnRjIHsKKworQ3J5cHRvT3B0aW9uczo6Q3J5cHRvT3B0aW9ucygpIHt9CisKK0NyeXB0
b09wdGlvbnM6OkNyeXB0b09wdGlvbnMoY29uc3QgQ3J5cHRvT3B0aW9ucyYgb3RoZXIpIHsKKyAg
c3J0cCA9IG90aGVyLnNydHA7CisgIHNmcmFtZSA9IG90aGVyLnNmcmFtZTsKK30KKworQ3J5cHRv
T3B0aW9uczo6fkNyeXB0b09wdGlvbnMoKSB7fQorCisvLyBzdGF0aWMKK0NyeXB0b09wdGlvbnMg
Q3J5cHRvT3B0aW9uczo6Tm9HY20oKSB7CisgIENyeXB0b09wdGlvbnMgb3B0aW9uczsKKyAgb3B0
aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IGZhbHNlOworICByZXR1cm4gb3B0
aW9uczsKK30KKworc3RkOjp2ZWN0b3I8aW50PiBDcnlwdG9PcHRpb25zOjpHZXRTdXBwb3J0ZWRE
dGxzU3J0cENyeXB0b1N1aXRlcygpIGNvbnN0IHsKKyAgc3RkOjp2ZWN0b3I8aW50PiBjcnlwdG9f
c3VpdGVzOworICBpZiAoc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMpIHsKKyAgICBjcnlw
dG9fc3VpdGVzLnB1c2hfYmFjayhydGM6OlNSVFBfQUVBRF9BRVNfMjU2X0dDTSk7CisgICAgY3J5
cHRvX3N1aXRlcy5wdXNoX2JhY2socnRjOjpTUlRQX0FFQURfQUVTXzEyOF9HQ00pOworICB9Cisg
IC8vIE5vdGU6IFNSVFBfQUVTMTI4X0NNX1NIQTFfODAgaXMgd2hhdCBpcyByZXF1aXJlZCB0byBi
ZSBzdXBwb3J0ZWQgKGJ5CisgIC8vIGRyYWZ0LWlldGYtcnRjd2ViLXNlY3VyaXR5LWFyY2gpLCBi
dXQgU1JUUF9BRVMxMjhfQ01fU0hBMV8zMiBpcyBhbGxvd2VkIGFzCisgIC8vIHdlbGwsIGFuZCBz
YXZlcyBhIGZldyBieXRlcyBwZXIgcGFja2V0IGlmIGl0IGVuZHMgdXAgc2VsZWN0ZWQuCisgIC8v
IEFzIHRoZSBjaXBoZXIgc3VpdGUgaXMgcG90ZW50aWFsbHkgaW5zZWN1cmUsIGl0IHdpbGwgb25s
eSBiZSB1c2VkIGlmCisgIC8vIGVuYWJsZWQgYnkgYm90aCBwZWVycy4KKyAgaWYgKHNydHAuZW5h
YmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIpIHsKKyAgICBjcnlwdG9fc3VpdGVzLnB1
c2hfYmFjayhydGM6OlNSVFBfQUVTMTI4X0NNX1NIQTFfMzIpOworICB9CisgIGNyeXB0b19zdWl0
ZXMucHVzaF9iYWNrKHJ0Yzo6U1JUUF9BRVMxMjhfQ01fU0hBMV84MCk7CisgIHJldHVybiBjcnlw
dG9fc3VpdGVzOworfQorCitib29sIENyeXB0b09wdGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgQ3J5
cHRvT3B0aW9ucyYgb3RoZXIpIGNvbnN0IHsKKyAgc3RydWN0IGRhdGFfYmVpbmdfdGVzdGVkX2Zv
cl9lcXVhbGl0eSB7CisgICAgc3RydWN0IFNydHAgeworICAgICAgYm9vbCBlbmFibGVfZ2NtX2Ny
eXB0b19zdWl0ZXM7CisgICAgICBib29sIGVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lw
aGVyOworICAgICAgYm9vbCBlbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9uczsK
KyAgICB9IHNydHA7CisgICAgc3RydWN0IFNGcmFtZSB7CisgICAgICBib29sIHJlcXVpcmVfZnJh
bWVfZW5jcnlwdGlvbjsKKyAgICB9IHNmcmFtZTsKKyAgfTsKKyAgc3RhdGljX2Fzc2VydChzaXpl
b2YoZGF0YV9iZWluZ190ZXN0ZWRfZm9yX2VxdWFsaXR5KSA9PSBzaXplb2YoKnRoaXMpLAorICAg
ICAgICAgICAgICAgICJEaWQgeW91IGFkZCBzb21ldGhpbmcgdG8gQ3J5cHRvT3B0aW9ucyBhbmQg
Zm9yZ2V0IHRvICIKKyAgICAgICAgICAgICAgICAidXBkYXRlIG9wZXJhdG9yPT0/Iik7CisKKyAg
cmV0dXJuIHNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID09IG90aGVyLnNydHAuZW5hYmxl
X2djbV9jcnlwdG9fc3VpdGVzICYmCisgICAgICAgICBzcnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8z
Ml9jcnlwdG9fY2lwaGVyID09CisgICAgICAgICAgICAgb3RoZXIuc3J0cC5lbmFibGVfYWVzMTI4
X3NoYTFfMzJfY3J5cHRvX2NpcGhlciAmJgorICAgICAgICAgc3J0cC5lbmFibGVfZW5jcnlwdGVk
X3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9PQorICAgICAgICAgICAgIG90aGVyLnNydHAuZW5hYmxl
X2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMgJiYKKyAgICAgICAgIHNmcmFtZS5yZXF1
aXJlX2ZyYW1lX2VuY3J5cHRpb24gPT0KKyAgICAgICAgICAgICBvdGhlci5zZnJhbWUucmVxdWly
ZV9mcmFtZV9lbmNyeXB0aW9uOworfQorCitib29sIENyeXB0b09wdGlvbnM6Om9wZXJhdG9yIT0o
Y29uc3QgQ3J5cHRvT3B0aW9ucyYgb3RoZXIpIGNvbnN0IHsKKyAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvL2NyeXB0b29wdGlv
bnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jcnlw
dG8vY3J5cHRvb3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MzBhYjIwODk1OTgwMDcwMjg1N2Q5ZjQ2
OWM5NGQ2NTlhOGZiOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaApAQCAtMCwwICsx
LDY2IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9DUllQVE9fQ1JZUFRPT1BU
SU9OU19IXworI2RlZmluZSBBUElfQ1JZUFRPX0NSWVBUT09QVElPTlNfSF8KKworI2luY2x1ZGUg
PHZlY3Rvcj4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIENyeXB0b09wdGlvbnMgZGVmaW5l
cyBhZHZhbmNlZCBjcnlwdG9ncmFwaGljIHNldHRpbmdzIGZvciBuYXRpdmUgV2ViUlRDLgorLy8g
VGhlc2Ugc2V0dGluZ3MgbXVzdCBiZSBwYXNzZWQgaW50byBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJ
bnRlcmZhY2U6Ok9wdGlvbnMKKy8vIGFuZCBhcmUgb25seSBhcHBsaWNhYmxlIHRvIG5hdGl2ZSB1
c2UgY2FzZXMgb2YgV2ViUlRDLgorc3RydWN0IENyeXB0b09wdGlvbnMgeworICBDcnlwdG9PcHRp
b25zKCk7CisgIENyeXB0b09wdGlvbnMoY29uc3QgQ3J5cHRvT3B0aW9ucyYgb3RoZXIpOworICB+
Q3J5cHRvT3B0aW9ucygpOworCisgIC8vIEhlbHBlciBtZXRob2QgdG8gcmV0dXJuIGFuIGluc3Rh
bmNlIG9mIHRoZSBDcnlwdG9PcHRpb25zIHdpdGggR0NNIGNyeXB0bworICAvLyBzdWl0ZXMgZGlz
YWJsZWQuIFRoaXMgbWV0aG9kIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgZGVwZW5kaW5nIG9u
IGN1cnJlbnQKKyAgLy8gZGVmYXVsdCB2YWx1ZXMgc2V0IGJ5IHRoZSBjb25zdHJ1Y3Rvci4KKyAg
c3RhdGljIENyeXB0b09wdGlvbnMgTm9HY20oKTsKKworICAvLyBSZXR1cm5zIGEgbGlzdCBvZiB0
aGUgc3VwcG9ydGVkIERUTFMtU1JUUCBDcnlwdG8gc3VpdGVzIGJhc2VkIG9uIHRoaXMgc2V0Cisg
IC8vIG9mIGNyeXB0byBvcHRpb25zLgorICBzdGQ6OnZlY3RvcjxpbnQ+IEdldFN1cHBvcnRlZER0
bHNTcnRwQ3J5cHRvU3VpdGVzKCkgY29uc3Q7CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENy
eXB0b09wdGlvbnMmIG90aGVyKSBjb25zdDsKKyAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENyeXB0
b09wdGlvbnMmIG90aGVyKSBjb25zdDsKKworICAvLyBTUlRQIFJlbGF0ZWQgUGVlciBDb25uZWN0
aW9uIG9wdGlvbnMuCisgIHN0cnVjdCBTcnRwIHsKKyAgICAvLyBFbmFibGUgR0NNIGNyeXB0byBz
dWl0ZXMgZnJvbSBSRkMgNzcxNCBmb3IgU1JUUC4gR0NNIHdpbGwgb25seSBiZSB1c2VkCisgICAg
Ly8gaWYgYm90aCBzaWRlcyBlbmFibGUgaXQuCisgICAgYm9vbCBlbmFibGVfZ2NtX2NyeXB0b19z
dWl0ZXMgPSBmYWxzZTsKKworICAgIC8vIElmIHNldCB0byB0cnVlLCB0aGUgKHBvdGVudGlhbGx5
IGluc2VjdXJlKSBjcnlwdG8gY2lwaGVyCisgICAgLy8gU1JUUF9BRVMxMjhfQ01fU0hBMV8zMiB3
aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBjaXBoZXJzCisgICAgLy8g
ZHVyaW5nIG5lZ290aWF0aW9uLiBJdCB3aWxsIG9ubHkgYmUgdXNlZCBpZiBib3RoIHBlZXJzIHN1
cHBvcnQgaXQgYW5kIG5vCisgICAgLy8gb3RoZXIgY2lwaGVycyBnZXQgcHJlZmVycmVkLgorICAg
IGJvb2wgZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPSBmYWxzZTsKKworICAg
IC8vIElmIHNldCB0byB0cnVlLCBlbmNyeXB0ZWQgUlRQIGhlYWRlciBleHRlbnNpb25zIGFzIGRl
ZmluZWQgaW4gUkZDIDY5MDQKKyAgICAvLyB3aWxsIGJlIG5lZ290aWF0ZWQuIFRoZXkgd2lsbCBv
bmx5IGJlIHVzZWQgaWYgYm90aCBwZWVycyBzdXBwb3J0IHRoZW0uCisgICAgYm9vbCBlbmFibGVf
ZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9IGZhbHNlOworICB9IHNydHA7CisKKyAg
Ly8gT3B0aW9ucyB0byBiZSB1c2VkIHdoZW4gdGhlIEZyYW1lRW5jcnlwdG9yIC8gRnJhbWVEZWNy
eXB0b3IgQVBJcyBhcmUgdXNlZC4KKyAgc3RydWN0IFNGcmFtZSB7CisgICAgLy8gSWYgc2V0IGFs
bCBSdHBTZW5kZXJzIG11c3QgaGF2ZSBhbiBGcmFtZUVuY3J5cHRvciBhdHRhY2hlZCB0byB0aGVt
IGJlZm9yZQorICAgIC8vIHRoZXkgYXJlIGFsbG93ZWQgdG8gc2VuZCBwYWNrZXRzLiBBbGwgUnRw
UmVjZWl2ZXJzIG11c3QgaGF2ZSBhCisgICAgLy8gRnJhbWVEZWNyeXB0b3IgYXR0YWNoZWQgdG8g
dGhlbSBiZWZvcmUgdGhleSBhcmUgYWJsZSB0byByZWNlaXZlIHBhY2tldHMuCisgICAgYm9vbCBy
ZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24gPSBmYWxzZTsKKyAgfSBzZnJhbWU7Cit9OworCit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX0NSWVBUT19DUllQVE9PUFRJT05T
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvY3J5cHRvcGFyYW1zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvY3J5cHRvcGFyYW1zLmgKaW5kZXggMjM1MDUyODM1OGYyNmUwMTJiMzBmYTE2
MDU3NmMyMTI5NGUzMjVhMy4uYWJlOTA1NTQ2MjI5YzgzMjdlMmQ3YTljNjg1ZjhlZTQ0Njk4ZGIy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2NyeXB0b3BhcmFtcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9jcnlwdG9wYXJhbXMuaApAQCAtMTYsNiArMTYsOCBAQAogbmFtZXNwYWNl
IGNyaWNrZXQgewogCiAvLyBQYXJhbWV0ZXJzIGZvciBTUlRQIG5lZ290aWF0aW9uLCBhcyBkZXNj
cmliZWQgaW4gUkZDIDQ1NjguCisvLyBUT0RPKGJlbndyaWdodCkgLSBSZW5hbWUgdG8gU3J0cENy
eXB0b1BhcmFtcyBhcyB0aGVzZSBvbmx5IGFwcGx5IHRvIFNSVFAgYW5kCisvLyBub3QgZ2VuZXJp
YyBjcnlwdG8gcGFyYW1ldGVycyBmb3IgV2ViUlRDLgogc3RydWN0IENyeXB0b1BhcmFtcyB7CiAg
IENyeXB0b1BhcmFtcygpIDogdGFnKDApIHt9CiAgIENyeXB0b1BhcmFtcyhpbnQgdCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9kYXRh
Y2hhbm5lbGludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2RhdGFjaGFubmVsaW50ZXJmYWNlLmgKaW5kZXggYTBkMmIzYjUxYTU5ODU4YjFi
YTg0ZmRlYWU4YjY5MTMzZDE5Y2NlOS4uN2NiNTU4MjIzMzdmODA0NWIzZjA5OTg1NDYyMTNmMWFl
MTAzM2RjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2RhdGFjaGFubmVsaW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2RhdGFjaGFubmVsaW50ZXJmYWNlLmgKQEAgLTE0
LDYgKzE0LDggQEAKICNpZm5kZWYgQVBJX0RBVEFDSEFOTkVMSU5URVJGQUNFX0hfCiAjZGVmaW5l
IEFQSV9EQVRBQ0hBTk5FTElOVEVSRkFDRV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5j
bHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvanNlcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9qc2VwLmNjCmluZGV4IDUyYTYwZjk1ZTMyZTkwYWQyMTk2YjY3MWQ4MzdjMmE1
NDcxOGUwOGEuLjAxZjU3MjA1NjNkOTA4MzQ3ZjVkY2I1ZjQzODFiOWIyMWM0YmI5OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9qc2Vw
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9q
c2VwLmNjCkBAIC0zOCw0ICszOCwzMiBAQCB2b2lkIFNldFNlc3Npb25EZXNjcmlwdGlvbk9ic2Vy
dmVyOjpPbkZhaWx1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yKSB7CiAgIE9uRmFpbHVyZShS
VENFcnJvcihSVENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SLCBzdGQ6OnN0cmluZyhlcnJvcikp
KTsKIH0KIAorY29uc3QgY2hhciBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtPZmZlcltd
ID0gIm9mZmVyIjsKK2NvbnN0IGNoYXIgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprUHJB
bnN3ZXJbXSA9ICJwcmFuc3dlciI7Citjb25zdCBjaGFyIFNlc3Npb25EZXNjcmlwdGlvbkludGVy
ZmFjZTo6a0Fuc3dlcltdID0gImFuc3dlciI7CisKK2NvbnN0IGNoYXIqIFNkcFR5cGVUb1N0cmlu
ZyhTZHBUeXBlIHR5cGUpIHsKKyAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBTZHBUeXBlOjpr
T2ZmZXI6CisgICAgICByZXR1cm4gU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprT2ZmZXI7
CisgICAgY2FzZSBTZHBUeXBlOjprUHJBbnN3ZXI6CisgICAgICByZXR1cm4gU2Vzc2lvbkRlc2Ny
aXB0aW9uSW50ZXJmYWNlOjprUHJBbnN3ZXI7CisgICAgY2FzZSBTZHBUeXBlOjprQW5zd2VyOgor
ICAgICAgcmV0dXJuIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6a0Fuc3dlcjsKKyAgfQor
ICByZXR1cm4gIiI7Cit9CisKK2Fic2w6Om9wdGlvbmFsPFNkcFR5cGU+IFNkcFR5cGVGcm9tU3Ry
aW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlX3N0cikgeworICBpZiAodHlwZV9zdHIgPT0gU2Vz
c2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprT2ZmZXIpIHsKKyAgICByZXR1cm4gU2RwVHlwZTo6
a09mZmVyOworICB9IGVsc2UgaWYgKHR5cGVfc3RyID09IFNlc3Npb25EZXNjcmlwdGlvbkludGVy
ZmFjZTo6a1ByQW5zd2VyKSB7CisgICAgcmV0dXJuIFNkcFR5cGU6OmtQckFuc3dlcjsKKyAgfSBl
bHNlIGlmICh0eXBlX3N0ciA9PSBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtBbnN3ZXIp
IHsKKyAgICByZXR1cm4gU2RwVHlwZTo6a0Fuc3dlcjsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4g
YWJzbDo6bnVsbG9wdDsKKyAgfQorfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2pzZXAuaApp
bmRleCA0ZDRiY2MwYmZiNjJlZDAzNGI5Nzg2ODliZGRhYzdjM2I0ODI2MjY2Li4xYzUwNDU1ZDA0
ZGY5NzY0ZGZiZmE3NzcyOGIyMDVlNWRlNzY4MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9qc2VwLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL3J0Y2Vy
cm9yLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiBjbGFzcyBDYW5k
aWRhdGU7CkBAIC03MywxMyArNzQsMTMgQEAgY2xhc3MgSWNlQ2FuZGlkYXRlSW50ZXJmYWNlIHsK
IC8vIENyZWF0ZXMgYSBJY2VDYW5kaWRhdGVJbnRlcmZhY2UgYmFzZWQgb24gU0RQIHN0cmluZy4K
IC8vIFJldHVybnMgbnVsbCBpZiB0aGUgc2RwIHN0cmluZyBjYW4ndCBiZSBwYXJzZWQuCiAvLyB8
ZXJyb3J8IG1heSBiZSBudWxsLgotSWNlQ2FuZGlkYXRlSW50ZXJmYWNlKiBDcmVhdGVJY2VDYW5k
aWRhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIHNkcF9taWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2RwX21saW5lX2luZGV4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNkcCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFBhcnNlRXJyb3IqIGVycm9y
KTsKK1JUQ19FWFBPUlQgSWNlQ2FuZGlkYXRlSW50ZXJmYWNlKiBDcmVhdGVJY2VDYW5kaWRhdGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHNkcF9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZHBfbWxpbmVfaW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBzZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yKTsKIAogLy8gQ3JlYXRlcyBhbiBJY2VDYW5kaWRh
dGVJbnRlcmZhY2UgYmFzZWQgb24gYSBwYXJzZWQgY2FuZGlkYXRlIHN0cnVjdHVyZS4KLXN0ZDo6
dW5pcXVlX3B0cjxJY2VDYW5kaWRhdGVJbnRlcmZhY2U+IENyZWF0ZUljZUNhbmRpZGF0ZSgKK1JU
Q19FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEljZUNhbmRpZGF0ZUludGVyZmFjZT4gQ3JlYXRlSWNl
Q2FuZGlkYXRlKAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzZHBfbWlkLAogICAgIGludCBzZHBf
bWxpbmVfaW5kZXgsCiAgICAgY29uc3QgY3JpY2tldDo6Q2FuZGlkYXRlJiBjYW5kaWRhdGUpOwpA
QCAtMTIxLDcgKzEyMiw3IEBAIGFic2w6Om9wdGlvbmFsPFNkcFR5cGU+IFNkcFR5cGVGcm9tU3Ry
aW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlX3N0cik7CiAvLyBhbmQgaXMgdGhlcmVmb3JlIG5v
dCBleHBlY3RlZCB0byBiZSB0aHJlYWQgc2FmZS4KIC8vCiAvLyBBbiBpbnN0YW5jZSBjYW4gYmUg
Y3JlYXRlZCBieSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24uCi1jbGFzcyBTZXNzaW9uRGVzY3Jp
cHRpb25JbnRlcmZhY2UgeworY2xhc3MgUlRDX0VYUE9SVCBTZXNzaW9uRGVzY3JpcHRpb25JbnRl
cmZhY2UgewogIHB1YmxpYzoKICAgLy8gU3RyaW5nIHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgc3Vw
cG9ydGVkIFNEUCB0eXBlcy4KICAgc3RhdGljIGNvbnN0IGNoYXIga09mZmVyW107CkBAIC0xODEs
MjEgKzE4MiwyMSBAQCBjbGFzcyBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UgewogLy8gfGVy
cm9yfCBtYXkgYmUgbnVsbC4KIC8vIFRPRE8oc3RldmVhbnRvbik6IFRoaXMgZnVuY3Rpb24gaXMg
ZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0aGUgZnVuY3Rpb25zIGJlbG93CiAvLyB3aGljaCB0YWtl
IGFuIFNkcFR5cGUgZW51bSBpbnN0ZWFkLiBSZW1vdmUgdGhpcyBvbmNlIGl0IGlzIG5vIGxvbmdl
ciB1c2VkLgotU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlKiBDcmVhdGVTZXNzaW9uRGVzY3Jp
cHRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc2RwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwUGFy
c2VFcnJvciogZXJyb3IpOworUlRDX0VYUE9SVCBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2Uq
IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbigKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHlwZSwK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyYgc2RwLAorICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yKTsK
IAogLy8gQ3JlYXRlcyBhIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSBiYXNlZCBvbiB0aGUg
U0RQIHN0cmluZyBhbmQgdGhlIHR5cGUuCiAvLyBSZXR1cm5zIG51bGwgaWYgdGhlIFNEUCBzdHJp
bmcgY2Fubm90IGJlIHBhcnNlZC4KIC8vIElmIHVzaW5nIHRoZSBzaWduYXR1cmUgd2l0aCB8ZXJy
b3Jfb3V0fCwgZGV0YWlscyBvZiB0aGUgcGFyc2luZyBlcnJvciBtYXkgYmUKIC8vIHdyaXR0ZW4g
dG8gfGVycm9yX291dHwgaWYgaXQgaXMgbm90IG51bGwuCi1zdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lv
bkRlc2NyaXB0aW9uSW50ZXJmYWNlPiBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24oCi0gICAgU2Rw
VHlwZSB0eXBlLAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzZHApOwotc3RkOjp1bmlxdWVfcHRy
PFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZT4gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uKAot
ICAgIFNkcFR5cGUgdHlwZSwKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgc2RwLAotICAgIFNkcFBh
cnNlRXJyb3IqIGVycm9yX291dCk7CitSVENfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9u
RGVzY3JpcHRpb25JbnRlcmZhY2U+CitDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24oU2RwVHlwZSB0
eXBlLCBjb25zdCBzdGQ6OnN0cmluZyYgc2RwKTsKK1JUQ19FWFBPUlQgc3RkOjp1bmlxdWVfcHRy
PFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZT4KK0NyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbihT
ZHBUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHNkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTZHBQYXJzZUVycm9yKiBlcnJvcl9vdXQp
OwogCiAvLyBDcmVhdGVzIGEgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlIGJhc2VkIG9uIGEg
cGFyc2VkIFNEUCBzdHJ1Y3R1cmUgYW5kIHRoZQogLy8gZ2l2ZW4gdHlwZSwgSUQgYW5kIHZlcnNp
b24uCkBAIC0yMDYsNyArMjA3LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlv
bkludGVyZmFjZT4gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uKAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxjcmlja2V0OjpTZXNzaW9uRGVzY3JpcHRpb24+IGRlc2NyaXB0aW9uKTsKIAogLy8gQ3JlYXRl
T2ZmZXIgYW5kIENyZWF0ZUFuc3dlciBjYWxsYmFjayBpbnRlcmZhY2UuCi1jbGFzcyBDcmVhdGVT
ZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNl
IHsKK2NsYXNzIFJUQ19FWFBPUlQgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIKKyAg
ICA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIC8vIFRoaXMg
Y2FsbGJhY2sgdHJhbnNmZXJzIHRoZSBvd25lcnNoaXAgb2YgdGhlIHxkZXNjfC4KICAgLy8gVE9E
TyhkZWFkYmVlZik6IE1ha2UgdGhpcyB0YWtlIGFuIHN0ZDo6dW5pcXVlX3B0cjw+IHRvIGF2b2lk
IGNvbmZ1c2lvbgpAQCAtMjI3LDcgKzIyOSw3IEBAIGNsYXNzIENyZWF0ZVNlc3Npb25EZXNjcmlw
dGlvbk9ic2VydmVyIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogfTsKIAogLy8g
U2V0TG9jYWxEZXNjcmlwdGlvbiBhbmQgU2V0UmVtb3RlRGVzY3JpcHRpb24gY2FsbGJhY2sgaW50
ZXJmYWNlLgotY2xhc3MgU2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIgOiBwdWJsaWMgcnRj
OjpSZWZDb3VudEludGVyZmFjZSB7CitjbGFzcyBSVENfRVhQT1JUIFNldFNlc3Npb25EZXNjcmlw
dGlvbk9ic2VydmVyIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogIHB1YmxpYzoK
ICAgdmlydHVhbCB2b2lkIE9uU3VjY2VzcygpID0gMDsKICAgLy8gU2VlIGRlc2NyaXB0aW9uIGlu
IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIGZvciBPbkZhaWx1cmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcGlj
ZWNhbmRpZGF0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9qc2VwaWNlY2FuZGlkYXRlLmNjCmluZGV4IGI5YmEyZmVhMjlhYWFhZDYyYzBiY2Y4MzJi
YTg2ODNmYzcwMmVjMDQuLmVkMmY3OTI3ZjI3MmIzNGRlMzZkM2RjMDNmMGM2MzAwNDFlZGFhM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9qc2VwaWNlY2FuZGlkYXRlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9qc2VwaWNlY2FuZGlkYXRlLmNjCkBAIC0xMCw2ICsxMCw5IEBACiAK
ICNpbmNsdWRlICJhcGkvanNlcGljZWNhbmRpZGF0ZS5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPHV0aWxpdHk+CisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBzdGQ6OnN0cmlu
ZyBKc2VwSWNlQ2FuZGlkYXRlOjpzZHBfbWlkKCkgY29uc3QgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2pzZXBpY2VjYW5kaWRhdGUu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9qc2VwaWNl
Y2FuZGlkYXRlLmgKaW5kZXggNTA1MjBmZTcyNzliMmE2Njk2YzA1ZDNiZmNmZWEwMDFkZjAyNzk1
MS4uOWNjNzQ0M2YzZmJiZGM3ODRmZDdiNTFiZmRiYTljMTg3MWI0MzhmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2pzZXBpY2VjYW5k
aWRhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvanNlcGljZWNhbmRpZGF0ZS5oCkBAIC0xNCw4ICsxNCw4IEBACiAjaWZuZGVmIEFQSV9KU0VQ
SUNFQ0FORElEQVRFX0hfCiAjZGVmaW5lIEFQSV9KU0VQSUNFQ0FORElEQVRFX0hfCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KICNp
bmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvY2FuZGlkYXRlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFfdHJh
bnNwb3J0X2ludGVyZmFjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmMjIz
YWE3ODgwMjJlN2E3OWY4Yzk4NzBiN2JhOGRiNTFhODIwODgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFfdHJhbnNw
b3J0X2ludGVyZmFjZS5jYwpAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKwor
Ly8gVGhpcyBpcyBFWFBFUklNRU5UQUwgaW50ZXJmYWNlIGZvciBtZWRpYSB0cmFuc3BvcnQuCisv
LworLy8gVGhlIGdvYWwgaXMgdG8gcmVmYWN0b3IgV2ViUlRDIGNvZGUgc28gdGhhdCBhdWRpbyBh
bmQgdmlkZW8gZnJhbWVzCisvLyBhcmUgc2VudCAvIHJlY2VpdmVkIHRocm91Z2ggdGhlIG1lZGlh
IHRyYW5zcG9ydCBpbnRlcmZhY2UuIFRoaXMgd2lsbAorLy8gZW5hYmxlIGRpZmZlcmVudCBtZWRp
YSB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb25zLCBpbmNsdWRpbmcgUVVJQy1iYXNlZAorLy8gbWVk
aWEgdHJhbnNwb3J0LgorCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2Uu
aCIKKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworbmFtZXNwYWNl
IHdlYnJ0YyB7CisKK01lZGlhVHJhbnNwb3J0U2V0dGluZ3M6Ok1lZGlhVHJhbnNwb3J0U2V0dGlu
Z3MoKSA9IGRlZmF1bHQ7CitNZWRpYVRyYW5zcG9ydFNldHRpbmdzOjpNZWRpYVRyYW5zcG9ydFNl
dHRpbmdzKGNvbnN0IE1lZGlhVHJhbnNwb3J0U2V0dGluZ3MmKSA9CisgICAgZGVmYXVsdDsKK01l
ZGlhVHJhbnNwb3J0U2V0dGluZ3MmIE1lZGlhVHJhbnNwb3J0U2V0dGluZ3M6Om9wZXJhdG9yPSgK
KyAgICBjb25zdCBNZWRpYVRyYW5zcG9ydFNldHRpbmdzJikgPSBkZWZhdWx0OworTWVkaWFUcmFu
c3BvcnRTZXR0aW5nczo6fk1lZGlhVHJhbnNwb3J0U2V0dGluZ3MoKSA9IGRlZmF1bHQ7CisKK01l
ZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6On5NZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRp
b0ZyYW1lKCkge30KKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6TWVkaWFUcmFu
c3BvcnRFbmNvZGVkQXVkaW9GcmFtZSgKKyAgICBpbnQgc2FtcGxpbmdfcmF0ZV9oeiwKKyAgICBp
bnQgc3RhcnRpbmdfc2FtcGxlX2luZGV4LAorICAgIGludCBzYW1wbGVzX3Blcl9jaGFubmVsLAor
ICAgIGludCBzZXF1ZW5jZV9udW1iZXIsCisgICAgRnJhbWVUeXBlIGZyYW1lX3R5cGUsCisgICAg
dWludDhfdCBwYXlsb2FkX3R5cGUsCisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZW5jb2RlZF9k
YXRhKQorICAgIDogc2FtcGxpbmdfcmF0ZV9oel8oc2FtcGxpbmdfcmF0ZV9oeiksCisgICAgICBz
dGFydGluZ19zYW1wbGVfaW5kZXhfKHN0YXJ0aW5nX3NhbXBsZV9pbmRleCksCisgICAgICBzYW1w
bGVzX3Blcl9jaGFubmVsXyhzYW1wbGVzX3Blcl9jaGFubmVsKSwKKyAgICAgIHNlcXVlbmNlX251
bWJlcl8oc2VxdWVuY2VfbnVtYmVyKSwKKyAgICAgIGZyYW1lX3R5cGVfKGZyYW1lX3R5cGUpLAor
ICAgICAgcGF5bG9hZF90eXBlXyhwYXlsb2FkX3R5cGUpLAorICAgICAgZW5jb2RlZF9kYXRhXyhz
dGQ6Om1vdmUoZW5jb2RlZF9kYXRhKSkge30KKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9G
cmFtZSYgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6b3BlcmF0b3I9KAorICAgIGNv
bnN0IE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUmKSA9IGRlZmF1bHQ7CisKK01lZGlh
VHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUmIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJh
bWU6Om9wZXJhdG9yPSgKKyAgICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lJiYpID0g
ZGVmYXVsdDsKKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6TWVkaWFUcmFuc3Bv
cnRFbmNvZGVkQXVkaW9GcmFtZSgKKyAgICBjb25zdCBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRp
b0ZyYW1lJikgPSBkZWZhdWx0OworCitNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lOjpN
ZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lKAorICAgIE1lZGlhVHJhbnNwb3J0RW5jb2Rl
ZEF1ZGlvRnJhbWUmJikgPSBkZWZhdWx0OworCitNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0Zy
YW1lOjp+TWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSgpIHt9CisKK01lZGlhVHJhbnNw
b3J0RW5jb2RlZFZpZGVvRnJhbWU6Ok1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUoCisg
ICAgaW50NjRfdCBmcmFtZV9pZCwKKyAgICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiByZWZlcmVuY2Vk
X2ZyYW1lX2lkcywKKyAgICBWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlLAorICAgIGNvbnN0IHdl
YnJ0Yzo6RW5jb2RlZEltYWdlJiBlbmNvZGVkX2ltYWdlKQorICAgIDogY29kZWNfdHlwZV8oY29k
ZWNfdHlwZSksCisgICAgICBlbmNvZGVkX2ltYWdlXyhlbmNvZGVkX2ltYWdlKSwKKyAgICAgIGZy
YW1lX2lkXyhmcmFtZV9pZCksCisgICAgICByZWZlcmVuY2VkX2ZyYW1lX2lkc18oc3RkOjptb3Zl
KHJlZmVyZW5jZWRfZnJhbWVfaWRzKSkge30KKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9G
cmFtZSYgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZTo6b3BlcmF0b3I9KAorICAgIGNv
bnN0IE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmKSA9IGRlZmF1bHQ7CisKK01lZGlh
VHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmIE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJh
bWU6Om9wZXJhdG9yPSgKKyAgICBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJiYpID0g
ZGVmYXVsdDsKKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZTo6TWVkaWFUcmFuc3Bv
cnRFbmNvZGVkVmlkZW9GcmFtZSgKKyAgICBjb25zdCBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRl
b0ZyYW1lJikgPSBkZWZhdWx0OworCitNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lOjpN
ZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lKAorICAgIE1lZGlhVHJhbnNwb3J0RW5jb2Rl
ZFZpZGVvRnJhbWUmJikgPSBkZWZhdWx0OworCitTZW5kRGF0YVBhcmFtczo6U2VuZERhdGFQYXJh
bXMoKSA9IGRlZmF1bHQ7CisKK1JUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNw
b3J0SW50ZXJmYWNlPj4KK01lZGlhVHJhbnNwb3J0RmFjdG9yeTo6Q3JlYXRlTWVkaWFUcmFuc3Bv
cnQoCisgICAgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9ydCwK
KyAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgYm9vbCBpc19jYWxsZXIpIHsK
KyAgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyBzZXR0aW5nczsKKyAgc2V0dGluZ3MuaXNfY2FsbGVy
ID0gaXNfY2FsbGVyOworICByZXR1cm4gQ3JlYXRlTWVkaWFUcmFuc3BvcnQocGFja2V0X3RyYW5z
cG9ydCwgbmV0d29ya190aHJlYWQsIHNldHRpbmdzKTsKK30KKworUlRDRXJyb3JPcjxzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+PgorTWVkaWFUcmFuc3BvcnRGYWN0b3J5
OjpDcmVhdGVNZWRpYVRyYW5zcG9ydCgKKyAgICBydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFs
KiBwYWNrZXRfdHJhbnNwb3J0LAorICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAg
ICBjb25zdCBNZWRpYVRyYW5zcG9ydFNldHRpbmdzJiBzZXR0aW5ncykgeworICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPihudWxscHRyKTsKK30KKworYWJz
bDo6b3B0aW9uYWw8VGFyZ2V0VHJhbnNmZXJSYXRlPgorTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U6
OkdldExhdGVzdFRhcmdldFRyYW5zZmVyUmF0ZSgpIHsKKyAgcmV0dXJuIGFic2w6Om51bGxvcHQ7
Cit9CisKK3ZvaWQgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U6OlNldE5ldHdvcmtDaGFuZ2VDYWxs
YmFjaygKKyAgICBNZWRpYVRyYW5zcG9ydE5ldHdvcmtDaGFuZ2VDYWxsYmFjayogY2FsbGJhY2sp
IHt9CisKK3ZvaWQgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U6OlJlbW92ZVRhcmdldFRyYW5zZmVy
UmF0ZU9ic2VydmVyKAorICAgIHdlYnJ0Yzo6VGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIqIG9i
c2VydmVyKSB7fQorCit2b2lkIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlOjpBZGRUYXJnZXRUcmFu
c2ZlclJhdGVPYnNlcnZlcigKKyAgICB3ZWJydGM6OlRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVy
KiBvYnNlcnZlcikge30KKworc2l6ZV90IE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlOjpHZXRBdWRp
b1BhY2tldE92ZXJoZWFkKCkgY29uc3QgeworICByZXR1cm4gMDsKK30KKworfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNl
LmgKaW5kZXggMmM4OGNkNGNlNmExNTAyYTQ3MmU5NTVkYmM0MzlkYjUyMWRkMmJmMi4uYjEwZGQ2
M2E0NjVjNDVhOTgyZjg1ODk1NjVkZWU5OGQyM2FiZWE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oCkBAIC0xLDUgKzEsNCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKy8qIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCiAgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCkBAIC0xOCwxMiArMTcsMTgg
QEAKICNpZm5kZWYgQVBJX01FRElBX1RSQU5TUE9SVF9JTlRFUkZBQ0VfSF8KICNkZWZpbmUgQVBJ
X01FRElBX1RSQU5TUE9SVF9JTlRFUkZBQ0VfSF8KIAorI2luY2x1ZGUgPGFwaS90cmFuc3BvcnQv
bmV0d29ya19jb250cm9sLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0cmluZz4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUg
ImFwaS9ydGNlcnJvci5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1
aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL25l
dHdvcmtyb3V0ZS5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIGNsYXNzIFBhY2tldFRyYW5zcG9ydElu
dGVybmFsOwpAQCAtMzIsMTYgKzM3LDM2IEBAIGNsYXNzIFRocmVhZDsKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKKy8vIEEgY29sbGVjdGlvbiBvZiBzZXR0aW5ncyBmb3IgY3JlYXRpb24gb2YgbWVk
aWEgdHJhbnNwb3J0Lgorc3RydWN0IE1lZGlhVHJhbnNwb3J0U2V0dGluZ3MgZmluYWwgeworICBN
ZWRpYVRyYW5zcG9ydFNldHRpbmdzKCk7CisgIE1lZGlhVHJhbnNwb3J0U2V0dGluZ3MoY29uc3Qg
TWVkaWFUcmFuc3BvcnRTZXR0aW5ncyYpOworICBNZWRpYVRyYW5zcG9ydFNldHRpbmdzJiBvcGVy
YXRvcj0oY29uc3QgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyYpOworICB+TWVkaWFUcmFuc3BvcnRT
ZXR0aW5ncygpOworCisgIC8vIEdyb3VwIGNhbGxzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRl
ZCwgaW4gMToxIGNhbGwgb25lIHNpZGUgbXVzdCBzZXQKKyAgLy8gaXNfY2FsbGVyID0gdHJ1ZSBh
bmQgYW5vdGhlciBpc19jYWxsZXIgPSBmYWxzZS4KKyAgYm9vbCBpc19jYWxsZXI7CisKKyAgLy8g
TXVzdCBiZSBzZXQgaWYgYSBwcmUtc2hhcmVkIGtleSBpcyB1c2VkIGZvciB0aGUgY2FsbC4KKyAg
Ly8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTk0NCk6IFRoaXMgc2hvdWxkIGJlY29tZSB6ZXJvIGJ1
ZmZlciBpbiB0aGUgZGlzdGFudAorICAvLyBmdXR1cmUuCisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6
c3RyaW5nPiBwcmVfc2hhcmVkX2tleTsKK307CisKIC8vIFJlcHJlc2VudHMgZW5jb2RlZCBhdWRp
byBmcmFtZSBpbiBhbnkgZW5jb2RpbmcgKHR5cGUgb2YgZW5jb2RpbmcgaXMgb3BhcXVlKS4KIC8v
IFRvIGF2b2lkIGNvcHlpbmcgb2YgZW5jb2RlZCBkYXRhIHVzZSBtb3ZlIHNlbWFudGljcyB3aGVu
IHBhc3NpbmcgYnkgdmFsdWUuCi1jbGFzcyBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1l
IHsKK2NsYXNzIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgZmluYWwgewogIHB1Ymxp
YzoKICAgZW51bSBjbGFzcyBGcmFtZVR5cGUgewogICAgIC8vIE5vcm1hbCBhdWRpbyBmcmFtZSAo
ZXF1aXZhbGVudCB0byB3ZWJydGM6OmtBdWRpb0ZyYW1lU3BlZWNoKS4KICAgICBrU3BlZWNoLAog
CiAgICAgLy8gRFRYIGZyYW1lIChlcXVpdmFsZW50IHRvIHdlYnJ0Yzo6a0F1ZGlvRnJhbWVDTiku
Ci0gICAga0Rpc2NvdW50aW51b3VzVHJhbnNtaXNzaW9uLAorICAgIC8vIERUWCBmcmFtZSAoZXF1
aXZhbGVudCB0byB3ZWJydGM6OmtBdWRpb0ZyYW1lQ04pLgorICAgIGtEaXNjb250aW51b3VzVHJh
bnNtaXNzaW9uLAorICAgIC8vIFRPRE8obmlzc2UpOiBNaXMtc3BlbGxlZCB2ZXJzaW9uLCB1cGRh
dGUgdXNlcnMsIHRoZW4gZGVsZXRlLgorICAgIGtEaXNjb3VudGludW91c1RyYW5zbWlzc2lvbiA9
IGtEaXNjb250aW51b3VzVHJhbnNtaXNzaW9uLAogICB9OwogCiAgIE1lZGlhVHJhbnNwb3J0RW5j
b2RlZEF1ZGlvRnJhbWUoCkBAIC03NSwxNCArMTAwLDE1IEBAIGNsYXNzIE1lZGlhVHJhbnNwb3J0
RW5jb2RlZEF1ZGlvRnJhbWUgewogICAgICAgdWludDhfdCBwYXlsb2FkX3R5cGUsCiAKICAgICAg
IC8vIFZlY3RvciB3aXRoIG9wYXF1ZSBlbmNvZGVkIGRhdGEuCi0gICAgICBzdGQ6OnZlY3Rvcjx1
aW50OF90PiBlbmNvZGVkX2RhdGEpCi0gICAgICA6IHNhbXBsaW5nX3JhdGVfaHpfKHNhbXBsaW5n
X3JhdGVfaHopLAotICAgICAgICBzdGFydGluZ19zYW1wbGVfaW5kZXhfKHN0YXJ0aW5nX3NhbXBs
ZV9pbmRleCksCi0gICAgICAgIHNhbXBsZXNfcGVyX2NoYW5uZWxfKHNhbXBsZXNfcGVyX2NoYW5u
ZWwpLAotICAgICAgICBzZXF1ZW5jZV9udW1iZXJfKHNlcXVlbmNlX251bWJlciksCi0gICAgICAg
IGZyYW1lX3R5cGVfKGZyYW1lX3R5cGUpLAotICAgICAgICBwYXlsb2FkX3R5cGVfKHBheWxvYWRf
dHlwZSksCi0gICAgICAgIGVuY29kZWRfZGF0YV8oc3RkOjptb3ZlKGVuY29kZWRfZGF0YSkpIHt9
CisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBlbmNvZGVkX2RhdGEpOworCisgIH5NZWRpYVRy
YW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lKCk7CisgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlv
RnJhbWUoY29uc3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSYpOworICBNZWRpYVRy
YW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lJiBvcGVyYXRvcj0oCisgICAgICBjb25zdCBNZWRpYVRy
YW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lJiBvdGhlcik7CisgIE1lZGlhVHJhbnNwb3J0RW5jb2Rl
ZEF1ZGlvRnJhbWUmIG9wZXJhdG9yPSgKKyAgICAgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlv
RnJhbWUmJiBvdGhlcik7CisgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUoTWVkaWFU
cmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSYmKTsKIAogICAvLyBHZXR0ZXJzLgogICBpbnQgc2Ft
cGxpbmdfcmF0ZV9oeigpIGNvbnN0IHsgcmV0dXJuIHNhbXBsaW5nX3JhdGVfaHpfOyB9CkBAIC0x
MTMsNiArMTM5LDE2IEBAIGNsYXNzIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgewog
ICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBlbmNvZGVkX2RhdGFfOwogfTsKIAorLy8gQ2FsbGJhY2sg
dG8gbm90aWZ5IGFib3V0IG5ldHdvcmsgcm91dGUgY2hhbmdlcy4KK2NsYXNzIE1lZGlhVHJhbnNw
b3J0TmV0d29ya0NoYW5nZUNhbGxiYWNrIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfk1lZGlhVHJh
bnNwb3J0TmV0d29ya0NoYW5nZUNhbGxiYWNrKCkgPSBkZWZhdWx0OworCisgIC8vIENhbGxlZCB3
aGVuIHRoZSBuZXR3b3JrIHJvdXRlIGlzIGNoYW5nZWQsIHdpdGggdGhlIG5ldyBuZXR3b3JrIHJv
dXRlLgorICB2aXJ0dWFsIHZvaWQgT25OZXR3b3JrUm91dGVDaGFuZ2VkKAorICAgICAgY29uc3Qg
cnRjOjpOZXR3b3JrUm91dGUmIG5ld19uZXR3b3JrX3JvdXRlKSA9IDA7Cit9OworCiAvLyBJbnRl
cmZhY2UgZm9yIHJlY2VpdmluZyBlbmNvZGVkIGF1ZGlvIGZyYW1lcyBmcm9tIE1lZGlhVHJhbnNw
b3J0SW50ZXJmYWNlCiAvLyBpbXBsZW1lbnRhdGlvbnMuCiBjbGFzcyBNZWRpYVRyYW5zcG9ydEF1
ZGlvU2lua0ludGVyZmFjZSB7CkBAIC0xMjUsMTYgKzE2MSwxOSBAQCBjbGFzcyBNZWRpYVRyYW5z
cG9ydEF1ZGlvU2lua0ludGVyZmFjZSB7CiB9OwogCiAvLyBSZXByZXNlbnRzIGVuY29kZWQgdmlk
ZW8gZnJhbWUsIGFsb25nIHdpdGggdGhlIGNvZGVjIGluZm9ybWF0aW9uLgotY2xhc3MgTWVkaWFU
cmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSB7CitjbGFzcyBNZWRpYVRyYW5zcG9ydEVuY29kZWRW
aWRlb0ZyYW1lIGZpbmFsIHsKICBwdWJsaWM6CiAgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVv
RnJhbWUoaW50NjRfdCBmcmFtZV9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiByZWZlcmVuY2VkX2ZyYW1lX2lkcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6RW5jb2RlZEltYWdlJiBl
bmNvZGVkX2ltYWdlKQotICAgICAgOiBjb2RlY190eXBlXyhjb2RlY190eXBlKSwKLSAgICAgICAg
ZW5jb2RlZF9pbWFnZV8oZW5jb2RlZF9pbWFnZSksCi0gICAgICAgIGZyYW1lX2lkXyhmcmFtZV9p
ZCksCi0gICAgICAgIHJlZmVyZW5jZWRfZnJhbWVfaWRzXyhzdGQ6Om1vdmUocmVmZXJlbmNlZF9m
cmFtZV9pZHMpKSB7fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdl
YnJ0Yzo6RW5jb2RlZEltYWdlJiBlbmNvZGVkX2ltYWdlKTsKKyAgfk1lZGlhVHJhbnNwb3J0RW5j
b2RlZFZpZGVvRnJhbWUoKTsKKyAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZShjb25z
dCBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJik7CisgIE1lZGlhVHJhbnNwb3J0RW5j
b2RlZFZpZGVvRnJhbWUmIG9wZXJhdG9yPSgKKyAgICAgIGNvbnN0IE1lZGlhVHJhbnNwb3J0RW5j
b2RlZFZpZGVvRnJhbWUmIG90aGVyKTsKKyAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFt
ZSYgb3BlcmF0b3I9KAorICAgICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSYmIG90
aGVyKTsKKyAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZShNZWRpYVRyYW5zcG9ydEVu
Y29kZWRWaWRlb0ZyYW1lJiYpOwogCiAgIFZpZGVvQ29kZWNUeXBlIGNvZGVjX3R5cGUoKSBjb25z
dCB7IHJldHVybiBjb2RlY190eXBlXzsgfQogICBjb25zdCB3ZWJydGM6OkVuY29kZWRJbWFnZSYg
ZW5jb2RlZF9pbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGVuY29kZWRfaW1hZ2VfOyB9CkBAIC0xODMs
NiArMjIyLDg1IEBAIGNsYXNzIE1lZGlhVHJhbnNwb3J0VmlkZW9TaW5rSW50ZXJmYWNlIHsKICAg
dmlydHVhbCB2b2lkIE9uS2V5RnJhbWVSZXF1ZXN0ZWQodWludDY0X3QgY2hhbm5lbF9pZCkgPSAw
OwogfTsKIAorLy8gU3RhdGUgb2YgdGhlIG1lZGlhIHRyYW5zcG9ydC4gIE1lZGlhIHRyYW5zcG9y
dCBiZWdpbnMgaW4gdGhlIHBlbmRpbmcgc3RhdGUuCisvLyBJdCB0cmFuc2l0aW9ucyB0byB3cml0
YWJsZSB3aGVuIGl0IGlzIHJlYWR5IHRvIHNlbmQgbWVkaWEuICBJdCBtYXkgdHJhbnNpdGlvbgor
Ly8gYmFjayB0byBwZW5kaW5nIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJsb2NrZWQuICBJdCBtYXkg
dHJhbnNpdGlvbiB0byBjbG9zZWQgYXQKKy8vIGFueSB0aW1lLiAgQ2xvc2VkIGlzIHRlcm1pbmFs
OiBhIHRyYW5zcG9ydCB3aWxsIG5ldmVyIHJlLW9wZW4gb25jZSBjbG9zZWQuCitlbnVtIGNsYXNz
IE1lZGlhVHJhbnNwb3J0U3RhdGUgeworICBrUGVuZGluZywKKyAga1dyaXRhYmxlLAorICBrQ2xv
c2VkLAorfTsKKworLy8gQ2FsbGJhY2sgaW52b2tlZCB3aGVuZXZlciB0aGUgc3RhdGUgb2YgdGhl
IG1lZGlhIHRyYW5zcG9ydCBjaGFuZ2VzLgorY2xhc3MgTWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxi
YWNrIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfk1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjaygp
ID0gZGVmYXVsdDsKKworICAvLyBJbnZva2VkIHdoZW5ldmVyIHRoZSBzdGF0ZSBvZiB0aGUgbWVk
aWEgdHJhbnNwb3J0IGNoYW5nZXMuCisgIHZpcnR1YWwgdm9pZCBPblN0YXRlQ2hhbmdlZChNZWRp
YVRyYW5zcG9ydFN0YXRlIHN0YXRlKSA9IDA7Cit9OworCisvLyBTdXBwb3J0ZWQgdHlwZXMgb2Yg
YXBwbGljYXRpb24gZGF0YSBtZXNzYWdlcy4KK2VudW0gY2xhc3MgRGF0YU1lc3NhZ2VUeXBlIHsK
KyAgLy8gQXBwbGljYXRpb24gZGF0YSBidWZmZXIgd2l0aCB0aGUgYmluYXJ5IGJpdCB1bnNldC4K
KyAga1RleHQsCisKKyAgLy8gQXBwbGljYXRpb24gZGF0YSBidWZmZXIgd2l0aCB0aGUgYmluYXJ5
IGJpdCBzZXQuCisgIGtCaW5hcnksCisKKyAgLy8gVHJhbnNwb3J0LWFnbm9zdGljIGNvbnRyb2wg
bWVzc2FnZXMsIHN1Y2ggYXMgb3BlbiBvciBvcGVuLWFjayBtZXNzYWdlcy4KKyAga0NvbnRyb2ws
Cit9OworCisvLyBQYXJhbWV0ZXJzIGZvciBzZW5kaW5nIGRhdGEuICBUaGUgcGFyYW1ldGVycyBt
YXkgY2hhbmdlIGZyb20gbWVzc2FnZSB0bworLy8gbWVzc2FnZSwgZXZlbiB3aXRoaW4gYSBzaW5n
bGUgY2hhbm5lbC4gIEZvciBleGFtcGxlLCBjb250cm9sIG1lc3NhZ2VzIG1heSBiZQorLy8gc2Vu
dCByZWxpYWJseSBhbmQgaW4tb3JkZXIsIGV2ZW4gaWYgdGhlIGRhdGEgY2hhbm5lbCBpcyBjb25m
aWd1cmVkIGZvcgorLy8gdW5yZWxpYWJsZSBkZWxpdmVyeS4KK3N0cnVjdCBTZW5kRGF0YVBhcmFt
cyB7CisgIFNlbmREYXRhUGFyYW1zKCk7CisKKyAgRGF0YU1lc3NhZ2VUeXBlIHR5cGUgPSBEYXRh
TWVzc2FnZVR5cGU6OmtUZXh0OworCisgIC8vIFdoZXRoZXIgdG8gZGVsaXZlciB0aGUgbWVzc2Fn
ZSBpbiBvcmRlciB3aXRoIHJlc3BlY3QgdG8gb3RoZXIgb3JkZXJlZAorICAvLyBtZXNzYWdlcyB3
aXRoIHRoZSBzYW1lIGNoYW5uZWxfaWQuCisgIGJvb2wgb3JkZXJlZCA9IGZhbHNlOworCisgIC8v
IElmIHNldCwgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIHRoaXMgbWVzc2FnZSBtYXkgYmUK
KyAgLy8gcmV0cmFuc21pdHRlZCBieSB0aGUgdHJhbnNwb3J0IGJlZm9yZSBpdCBpcyBkcm9wcGVk
LgorICAvLyBTZXR0aW5nIHRoaXMgdmFsdWUgdG8gemVybyBkaXNhYmxlcyByZXRyYW5zbWlzc2lv
bi4KKyAgLy8gTXVzdCBiZSBub24tbmVnYXRpdmUuIHxtYXhfcnR4X2NvdW50fCBhbmQgfG1heF9y
dHhfbXN8IG1heSBub3QgYmUgc2V0CisgIC8vIHNpbXVsdGFuZW91c2x5LgorICBhYnNsOjpvcHRp
b25hbDxpbnQ+IG1heF9ydHhfY291bnQ7CisKKyAgLy8gSWYgc2V0LCB0aGUgbWF4aW11bSBudW1i
ZXIgb2YgbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0aGUgdHJhbnNwb3J0CisgIC8vIG1heSByZXRy
YW5zbWl0IHRoaXMgbWVzc2FnZSBiZWZvcmUgaXQgaXMgZHJvcHBlZC4KKyAgLy8gU2V0dGluZyB0
aGlzIHZhbHVlIHRvIHplcm8gZGlzYWJsZXMgcmV0cmFuc21pc3Npb24uCisgIC8vIE11c3QgYmUg
bm9uLW5lZ2F0aXZlLiB8bWF4X3J0eF9jb3VudHwgYW5kIHxtYXhfcnR4X21zfCBtYXkgbm90IGJl
IHNldAorICAvLyBzaW11bHRhbmVvdXNseS4KKyAgYWJzbDo6b3B0aW9uYWw8aW50PiBtYXhfcnR4
X21zOworfTsKKworLy8gU2luayBmb3IgY2FsbGJhY2tzIHJlbGF0ZWQgdG8gYSBkYXRhIGNoYW5u
ZWwuCitjbGFzcyBEYXRhQ2hhbm5lbFNpbmsgeworIHB1YmxpYzoKKyAgdmlydHVhbCB+RGF0YUNo
YW5uZWxTaW5rKCkgPSBkZWZhdWx0OworCisgIC8vIENhbGxiYWNrIGlzc3VlZCB3aGVuIGRhdGEg
aXMgcmVjZWl2ZWQgYnkgdGhlIHRyYW5zcG9ydC4KKyAgdmlydHVhbCB2b2lkIE9uRGF0YVJlY2Vp
dmVkKGludCBjaGFubmVsX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YU1l
c3NhZ2VUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIpID0gMDsKKworICAvLyBDYWxsYmFjayBpc3N1ZWQg
d2hlbiBhIHJlbW90ZSBkYXRhIGNoYW5uZWwgYmVnaW5zIHRoZSBjbG9zaW5nIHByb2NlZHVyZS4K
KyAgLy8gTWVzc2FnZXMgc2VudCBhZnRlciB0aGUgY2xvc2luZyBwcm9jZWR1cmUgYmVnaW5zIHdp
bGwgbm90IGJlIHRyYW5zbWl0dGVkLgorICB2aXJ0dWFsIHZvaWQgT25DaGFubmVsQ2xvc2luZyhp
bnQgY2hhbm5lbF9pZCkgPSAwOworCisgIC8vIENhbGxiYWNrIGlzc3VlZCB3aGVuIGEgKHJlbW90
ZSBvciBsb2NhbCkgZGF0YSBjaGFubmVsIGNvbXBsZXRlcyB0aGUgY2xvc2luZworICAvLyBwcm9j
ZWR1cmUuICBDbG9zaW5nIGNoYW5uZWxzIGJlY29tZSBjbG9zZWQgYWZ0ZXIgYWxsIHBlbmRpbmcg
ZGF0YSBoYXMgYmVlbgorICAvLyB0cmFuc21pdHRlZC4KKyAgdmlydHVhbCB2b2lkIE9uQ2hhbm5l
bENsb3NlZChpbnQgY2hhbm5lbF9pZCkgPSAwOworfTsKKwogLy8gTWVkaWEgdHJhbnNwb3J0IGlu
dGVyZmFjZSBmb3Igc2VuZGluZyAvIHJlY2VpdmluZyBlbmNvZGVkIGF1ZGlvL3ZpZGVvIGZyYW1l
cwogLy8gYW5kIHJlY2VpdmluZyBiYW5kd2lkdGggZXN0aW1hdGUgdXBkYXRlIGZyb20gY29uZ2Vz
dGlvbiBjb250cm9sLgogY2xhc3MgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UgewpAQCAtMjE3LDgg
KzMzNSw2MiBAQCBjbGFzcyBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSB7CiAgIC8vIHBhc3MgYSBu
dWxscHRyLgogICB2aXJ0dWFsIHZvaWQgU2V0UmVjZWl2ZVZpZGVvU2luayhNZWRpYVRyYW5zcG9y
dFZpZGVvU2lua0ludGVyZmFjZSogc2luaykgPSAwOwogCisgIC8vIEFkZHMgYSB0YXJnZXQgYml0
cmF0ZSBvYnNlcnZlci4gQmVmb3JlIG1lZGlhIHRyYW5zcG9ydCBpcyBkZXN0cnVjdGVkCisgIC8v
IHRoZSBvYnNlcnZlciBtdXN0IGJlIHVucmVnaXN0ZXJlZCAoYnkgY2FsbGluZworICAvLyBSZW1v
dmVUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlcikuCisgIC8vIEEgbmV3bHkgcmVnaXN0ZXJlZCBv
YnNlcnZlciB3aWxsIGJlIGNhbGxlZCBiYWNrIHdpdGggdGhlIGxhdGVzdCByZWNvcmRlZAorICAv
LyB0YXJnZXQgcmF0ZSwgaWYgYXZhaWxhYmxlLgorICB2aXJ0dWFsIHZvaWQgQWRkVGFyZ2V0VHJh
bnNmZXJSYXRlT2JzZXJ2ZXIoCisgICAgICB3ZWJydGM6OlRhcmdldFRyYW5zZmVyUmF0ZU9ic2Vy
dmVyKiBvYnNlcnZlcik7CisKKyAgLy8gUmVtb3ZlcyBhbiBleGlzdGluZyB8b2JzZXJ2ZXJ8IGZy
b20gb2JzZXJ2ZXJzLiBJZiBvYnNlcnZlciB3YXMgbmV2ZXIKKyAgLy8gcmVnaXN0ZXJlZCwgYW4g
ZXJyb3IgaXMgbG9nZ2VkIGFuZCBtZXRob2QgZG9lcyBub3RoaW5nLgorICB2aXJ0dWFsIHZvaWQg
UmVtb3ZlVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIoCisgICAgICB3ZWJydGM6OlRhcmdldFRy
YW5zZmVyUmF0ZU9ic2VydmVyKiBvYnNlcnZlcik7CisKKyAgLy8gUmV0dXJucyB0aGUgbGFzdCBr
bm93biB0YXJnZXQgdHJhbnNmZXIgcmF0ZSBhcyByZXBvcnRlZCB0byB0aGUgYWJvdmUKKyAgLy8g
b2JzZXJ2ZXJzLgorICB2aXJ0dWFsIGFic2w6Om9wdGlvbmFsPFRhcmdldFRyYW5zZmVyUmF0ZT4g
R2V0TGF0ZXN0VGFyZ2V0VHJhbnNmZXJSYXRlKCk7CisKKyAgLy8gR2V0cyB0aGUgYXVkaW8gcGFj
a2V0IG92ZXJoZWFkIGluIGJ5dGVzLiBSZXR1cm5lZCBvdmVyaGVhZCBkb2VzIG5vdCBpbmNsdWRl
CisgIC8vIHRyYW5zcG9ydCBvdmVyaGVhZCAoaXB2NC82LCB0dXJuIGNoYW5uZWxkYXRhLCB0Y3Av
dWRwLCBldGMuKS4KKyAgLy8gSWYgdGhlIHRyYW5zcG9ydCBpcyBjYXBhYmxlIG9mIGZ1c2luZyBw
YWNrZXRzIHRvZ2V0aGVyLCB0aGlzIG92ZXJoZWFkCisgIC8vIG1pZ2h0IG5vdCBiZSBhIHZlcnkg
YWNjdXJhdGUgbnVtYmVyLgorICB2aXJ0dWFsIHNpemVfdCBHZXRBdWRpb1BhY2tldE92ZXJoZWFk
KCkgY29uc3Q7CisKKyAgLy8gU2V0cyBhbiBvYnNlcnZlciBmb3IgbmV0d29yayBjaGFuZ2UgZXZl
bnRzLiBJZiB0aGUgbmV0d29yayByb3V0ZSBpcyBhbHJlYWR5CisgIC8vIGVzdGFibGlzaGVkIHdo
ZW4gdGhlIGNhbGxiYWNrIGlzIHNldCwgfGNhbGxiYWNrfCB3aWxsIGJlIGNhbGxlZCBpbW1lZGlh
dGVseQorICAvLyB3aXRoIHRoZSBjdXJyZW50IG5ldHdvcmsgcm91dGUuCisgIC8vIEJlZm9yZSBt
ZWRpYSB0cmFuc3BvcnQgaXMgZGVzdHJveWVkLCB0aGUgY2FsbGJhY2sgbXVzdCBiZSB1bnJlZ2lz
dGVyZWQgYnkKKyAgLy8gc2V0dGluZyBpdCB0byBudWxscHRyLgorICB2aXJ0dWFsIHZvaWQgU2V0
TmV0d29ya0NoYW5nZUNhbGxiYWNrKAorICAgICAgTWVkaWFUcmFuc3BvcnROZXR3b3JrQ2hhbmdl
Q2FsbGJhY2sqIGNhbGxiYWNrKTsKKworICAvLyBTZXRzIGEgc3RhdGUgb2JzZXJ2ZXIgY2FsbGJh
Y2suIEJlZm9yZSBtZWRpYSB0cmFuc3BvcnQgaXMgZGVzdHJveWVkLCB0aGUKKyAgLy8gY2FsbGJh
Y2sgbXVzdCBiZSB1bnJlZ2lzdGVyZWQgYnkgc2V0dGluZyBpdCB0byBudWxscHRyLgorICAvLyBB
IG5ld2x5IHJlZ2lzdGVyZWQgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgY3VycmVu
dCBzdGF0ZS4KKyAgLy8gTWVkaWEgdHJhbnNwb3J0IGRvZXMgbm90IGludm9rZSB0aGlzIGNhbGxi
YWNrIGNvbmN1cnJlbnRseS4KKyAgdmlydHVhbCB2b2lkIFNldE1lZGlhVHJhbnNwb3J0U3RhdGVD
YWxsYmFjaygKKyAgICAgIE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayogY2FsbGJhY2spID0g
MDsKKworICAvLyBTZW5kcyBhIGRhdGEgYnVmZmVyIHRvIHRoZSByZW1vdGUgZW5kcG9pbnQgdXNp
bmcgdGhlIGdpdmVuIHNlbmQgcGFyYW1ldGVycy4KKyAgLy8gfGJ1ZmZlcnwgbWF5IG5vdCBiZSBs
YXJnZXIgdGhhbiAyNTYgS2lCLiBSZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBzZW5kCisgIC8vIGZh
aWxzLgorICB2aXJ0dWFsIFJUQ0Vycm9yIFNlbmREYXRhKGludCBjaGFubmVsX2lkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlbmREYXRhUGFyYW1zJiBwYXJhbXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgYnVm
ZmVyKSA9IDA7CisKKyAgLy8gQ2xvc2VzIHxjaGFubmVsX2lkfCBncmFjZWZ1bGx5LiAgUmV0dXJu
cyBhbiBlcnJvciBpZiB8Y2hhbm5lbF9pZHwgaXMgbm90CisgIC8vIG9wZW4uICBEYXRhIHNlbnQg
YWZ0ZXIgdGhlIGNsb3NpbmcgcHJvY2VkdXJlIGJlZ2lucyB3aWxsIG5vdCBiZQorICAvLyB0cmFu
c21pdHRlZC4gVGhlIGNoYW5uZWwgYmVjb21lcyBjbG9zZWQgYWZ0ZXIgcGVuZGluZyBkYXRhIGlz
IHRyYW5zbWl0dGVkLgorICB2aXJ0dWFsIFJUQ0Vycm9yIENsb3NlQ2hhbm5lbChpbnQgY2hhbm5l
bF9pZCkgPSAwOworCisgIC8vIFNldHMgYSBzaW5rIGZvciBkYXRhIG1lc3NhZ2VzIGFuZCBjaGFu
bmVsIHN0YXRlIGNhbGxiYWNrcy4gQmVmb3JlIG1lZGlhCisgIC8vIHRyYW5zcG9ydCBpcyBkZXN0
cm95ZWQsIHRoZSBzaW5rIG11c3QgYmUgdW5yZWdpc3RlcmVkIGJ5IHNldHRpbmcgaXQgdG8KKyAg
Ly8gbnVsbHB0ci4KKyAgdmlydHVhbCB2b2lkIFNldERhdGFTaW5rKERhdGFDaGFubmVsU2luayog
c2luaykgPSAwOworCiAgIC8vIFRPRE8oc3VraGFub3YpOiBSdGNFdmVudExvZ3MuCi0gIC8vIFRP
RE8oc3VraGFub3YpOiBCYW5kd2lkdGggdXBkYXRlcy4KIH07CiAKIC8vIElmIG1lZGlhIHRyYW5z
cG9ydCBmYWN0b3J5IGlzIHNldCBpbiBwZWVyIGNvbm5lY3Rpb24gZmFjdG9yeSwgaXQgd2lsbCBi
ZQpAQCAtMjM2LDEwICs0MDgsMjEgQEAgY2xhc3MgTWVkaWFUcmFuc3BvcnRGYWN0b3J5IHsKICAg
Ly8gLSBEb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiBwYWNrZXRfdHJhbnNwb3J0IG9yIG5ldHdv
cmtfdGhyZWFkLgogICAvLyAtIERvZXMgbm90IHN1cHBvcnQgZ3JvdXAgY2FsbHMsIGluIDE6MSBj
YWxsIG9uZSBzaWRlIG11c3Qgc2V0CiAgIC8vICAgaXNfY2FsbGVyID0gdHJ1ZSBhbmQgYW5vdGhl
ciBpc19jYWxsZXIgPSBmYWxzZS4KKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTkzOCkgVGhp
cyBjb25zdHJ1Y3RvciB3aWxsIGJlIHJlbW92ZWQgYW5kIHJlcGxhY2VkCisgIC8vIHdpdGggdGhl
IG9uZSBiZWxvdy4KKyAgdmlydHVhbCBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRy
YW5zcG9ydEludGVyZmFjZT4+CisgIENyZWF0ZU1lZGlhVHJhbnNwb3J0KHJ0Yzo6UGFja2V0VHJh
bnNwb3J0SW50ZXJuYWwqIHBhY2tldF90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAg
IHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc19jYWxsZXIpOworCisgIC8vIENyZWF0ZXMgbWVkaWEgdHJhbnNwb3J0LgorICAvLyAtIERv
ZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mIHBhY2tldF90cmFuc3BvcnQgb3IgbmV0d29ya190aHJl
YWQuCisgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk5MzgpOiByZW1vdmUgZGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbiBvbmNlIGFsbCBjaGlsZHJlbgorICAvLyBvdmVycmlkZSBpdC4KICAgdmlydHVh
bCBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEludGVyZmFjZT4+CiAg
IENyZWF0ZU1lZGlhVHJhbnNwb3J0KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHBhY2tl
dF90cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3Jr
X3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19jYWxsZXIpID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyYgc2V0dGlu
Z3MpOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNpbnRl
cmZhY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
bWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5jYwppbmRleCA1NTY3Nzg2OWJlZGQ3YzMyMTI0MDBi
ODdjZmFlMzI3N2FjYzM0ZDMwLi5iNjZiYTA1MDNhYzdmNThmNzE3MGQ2NzU5MThkZTlhMjRjNmE2
OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5j
YwpAQCAtMTAsNyArMTAsOSBAQAogCiAjaW5jbHVkZSAiYXBpL21lZGlhY29uc3RyYWludHNpbnRl
cmZhY2UuaCIKIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJh
cGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlh
Y29uZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAKIG5hbWVzcGFj
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNpbnRlcmZhY2UuaAppbmRl
eCBjNmE5MTRhYTU2NGY5ODMxYjEyOGJhMzA4NmJhZWY3YTU4MGUzOTdjLi5jOWE2ZTFiMTg4NThk
ZjU5OWExM2IyY2QyMTAzNTY1YzA1OTcwZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRp
YWNvbnN0cmFpbnRzaW50ZXJmYWNlLmgKQEAgLTIxLDEwICsyMSwxMSBAQAogI2lmbmRlZiBBUElf
TUVESUFDT05TVFJBSU5UU0lOVEVSRkFDRV9IXwogI2RlZmluZSBBUElfTUVESUFDT05TVFJBSU5U
U0lOVEVSRkFDRV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgog
I2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNp
bmNsdWRlICJhcGkvYXVkaW9fb3B0aW9ucy5oIgogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlv
bmludGVyZmFjZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFj
ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRp
YXN0cmVhbWludGVyZmFjZS5jYwppbmRleCA2ZjA4YTBjYWYxYzFiMTIzNGFjNTE3NzlmMTNkNWNh
ZGE5OWM0NzRjLi45NTVlN2U0YzYwOGVlNTA1ZmMwZTBjOTBjZGEzNDE1ZjFiMGQxZDc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVk
aWFzdHJlYW1pbnRlcmZhY2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmNjCkBAIC0xNywzNCArMTcsNiBA
QCBuYW1lc3BhY2Ugd2VicnRjIHsKIGNvbnN0IGNoYXIgTWVkaWFTdHJlYW1UcmFja0ludGVyZmFj
ZTo6a1ZpZGVvS2luZFtdID0gInZpZGVvIjsKIGNvbnN0IGNoYXIgTWVkaWFTdHJlYW1UcmFja0lu
dGVyZmFjZTo6a0F1ZGlvS2luZFtdID0gImF1ZGlvIjsKIAotdm9pZCBBdWRpb1Byb2Nlc3Nvcklu
dGVyZmFjZTo6R2V0U3RhdHMoQXVkaW9Qcm9jZXNzb3JTdGF0cyogLypzdGF0cyovKSB7Ci0gIFJU
Q19OT1RSRUFDSEVEKCkgPDwgIk9sZC1zdHlsZSBHZXRTdGF0cygpIGlzIGNhbGxlZCBidXQgaXQg
aGFzIG5vICIKLSAgICAgICAgICAgICAgICAgICA8PCAiaW1wbGVtZW50YXRpb24uIjsKLSAgUlRD
X0xPRyhMU19FUlJPUikgPDwgIk9sZC1zdHlsZSBHZXRTdGF0cygpIGlzIGNhbGxlZCBidXQgaXQg
aGFzIG5vICIKLSAgICAgICAgICAgICAgICAgICAgPDwgImltcGxlbWVudGF0aW9uLiI7Ci19Ci0K
LS8vIFRPRE8oaXZvYyk6IFJlbW92ZSB0aGlzIHdoZW4gdGhlIGZ1bmN0aW9uIGJlY29tZXMgcHVy
ZSB2aXJ0dWFsLgotQXVkaW9Qcm9jZXNzb3JJbnRlcmZhY2U6OkF1ZGlvUHJvY2Vzc29yU3RhdGlz
dGljcwotQXVkaW9Qcm9jZXNzb3JJbnRlcmZhY2U6OkdldFN0YXRzKGJvb2wgLypoYXNfcmVtb3Rl
X3RyYWNrcyovKSB7Ci0gIEF1ZGlvUHJvY2Vzc29yU3RhdHMgc3RhdHM7Ci0gIEdldFN0YXRzKCZz
dGF0cyk7Ci0gIEF1ZGlvUHJvY2Vzc29yU3RhdGlzdGljcyBuZXdfc3RhdHM7Ci0gIG5ld19zdGF0
cy5hcG1fc3RhdGlzdGljcy5kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uID0KLSAgICAgIHN0YXRz
LmFlY19kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uOwotICBuZXdfc3RhdHMuYXBtX3N0YXRpc3Rp
Y3MuZGVsYXlfbWVkaWFuX21zID0gc3RhdHMuZWNob19kZWxheV9tZWRpYW5fbXM7Ci0gIG5ld19z
dGF0cy5hcG1fc3RhdGlzdGljcy5kZWxheV9zdGFuZGFyZF9kZXZpYXRpb25fbXMgPQotICAgICAg
c3RhdHMuZWNob19kZWxheV9zdGRfbXM7Ci0gIG5ld19zdGF0cy5hcG1fc3RhdGlzdGljcy5lY2hv
X3JldHVybl9sb3NzID0gc3RhdHMuZWNob19yZXR1cm5fbG9zczsKLSAgbmV3X3N0YXRzLmFwbV9z
dGF0aXN0aWNzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPQotICAgICAgc3RhdHMuZWNo
b19yZXR1cm5fbG9zc19lbmhhbmNlbWVudDsKLSAgbmV3X3N0YXRzLmFwbV9zdGF0aXN0aWNzLnJl
c2lkdWFsX2VjaG9fbGlrZWxpaG9vZCA9Ci0gICAgICBzdGF0cy5yZXNpZHVhbF9lY2hvX2xpa2Vs
aWhvb2Q7Ci0gIG5ld19zdGF0cy5hcG1fc3RhdGlzdGljcy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhv
b2RfcmVjZW50X21heCA9Ci0gICAgICBzdGF0cy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2RfcmVj
ZW50X21heDsKLSAgcmV0dXJuIG5ld19zdGF0czsKLX0KLQogVmlkZW9UcmFja0ludGVyZmFjZTo6
Q29udGVudEhpbnQgVmlkZW9UcmFja0ludGVyZmFjZTo6Y29udGVudF9oaW50KCkgY29uc3Qgewog
ICByZXR1cm4gQ29udGVudEhpbnQ6OmtOb25lOwogfQpAQCAtNTgsNCArMzAsOCBAQCBBdWRpb1Ry
YWNrSW50ZXJmYWNlOjpHZXRBdWRpb1Byb2Nlc3NvcigpIHsKICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKK2NvbnN0IGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucyBBdWRpb1NvdXJjZUludGVyZmFjZTo6b3B0
aW9ucygpIGNvbnN0IHsKKyAgcmV0dXJuIHt9OworfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oCmluZGV4IGI2NjEzNTFlOWZj
OTg1ZWQ2ZDE1NjIxYWZlMjc0ZGU4Y2UxYzQ3ZTcuLjZkOTY3NjYwYzU3M2FkYjhjNTk4YTM1MzRm
NjdmNWZjOGYyNzRhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5o
CkBAIC0yMywxOCArMjMsMTMgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX29wdGlvbnMuaCIKICNpbmNs
dWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCIKLS8vIFRPRE8oemhpaHVhbmcpOiBSZW1vdmUg
dW5yZWxhdGVkIGhlYWRlcnMgb25jZSBkb3duc3RyZWFtIGFwcGxpY2F0aW9ucyBzdG9wCi0vLyBy
ZWx5aW5nIG9uIHRoZW07IHRoZXkgd2VyZSBwcmV2aW91c2x5IHRyYW5zaXRpdmVseSBpbmNsdWRl
ZCBieQotLy8gbWVkaWFjaGFubmVsLmgsIHdoaWNoIGlzIG5vIGxvbmdlciBhIGRlcGVuZGVuY3kg
b2YgdGhpcyBmaWxlLgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19zaW5rX2ludGVyZmFjZS5o
IgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19zb3VyY2VfaW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZ19zdGF0
aXN0aWNzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZXRyYWNrZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9yZWZjb3VudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0
aWxzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yMTMsNTMgKzIwOCwyOCBAQCBjbGFz
cyBBdWRpb1NvdXJjZUludGVyZmFjZSA6IHB1YmxpYyBNZWRpYVNvdXJjZUludGVyZmFjZSB7CiAg
IC8vIFRPRE8odG9tbWkpOiBNYWtlIHB1cmUgdmlydHVhbC4KICAgdmlydHVhbCB2b2lkIEFkZFNp
bmsoQXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHt9CiAgIHZpcnR1YWwgdm9pZCBSZW1v
dmVTaW5rKEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7fQorCisgIC8vIFJldHVybnMg
b3B0aW9ucyBmb3IgdGhlIEF1ZGlvU291cmNlLgorICAvLyAoZm9yIHNvbWUgb2YgdGhlIHNldHRp
bmdzIHRoaXMgYXBwcm9hY2ggaXMgYnJva2VuLCBlLmcuIHNldHRpbmcKKyAgLy8gYXVkaW8gbmV0
d29yayBhZGFwdGF0aW9uIG9uIHRoZSBzb3VyY2UgaXMgdGhlIHdyb25nIGxheWVyIG9mIGFic3Ry
YWN0aW9uKS4KKyAgdmlydHVhbCBjb25zdCBjcmlja2V0OjpBdWRpb09wdGlvbnMgb3B0aW9ucygp
IGNvbnN0OwogfTsKIAogLy8gSW50ZXJmYWNlIG9mIHRoZSBhdWRpbyBwcm9jZXNzb3IgdXNlZCBi
eSB0aGUgYXVkaW8gdHJhY2sgdG8gY29sbGVjdAogLy8gc3RhdGlzdGljcy4KIGNsYXNzIEF1ZGlv
UHJvY2Vzc29ySW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogIHB1
YmxpYzoKLSAgLy8gRGVwcmVjYXRlZCwgdXNlIEF1ZGlvUHJvY2Vzc29yU3RhdGlzdGljcyBpbnN0
ZWFkLgotICAvLyBUT0RPKGl2b2MpOiBSZW1vdmUgdGhpcyB3aGVuIGFsbCBpbXBsZW1lbnRhdGlv
bnMgaGF2ZSBzd2l0Y2hlZCB0byB0aGUgbmV3Ci0gIC8vICAgICAgICAgICAgIEdldFN0YXRzIGZ1
bmN0aW9uLiBTZWUgYi82NzkyNjEzNS4KLSAgc3RydWN0IEF1ZGlvUHJvY2Vzc29yU3RhdHMgewot
ICAgIEF1ZGlvUHJvY2Vzc29yU3RhdHMoKQotICAgICAgICA6IHR5cGluZ19ub2lzZV9kZXRlY3Rl
ZChmYWxzZSksCi0gICAgICAgICAgZWNob19yZXR1cm5fbG9zcygwKSwKLSAgICAgICAgICBlY2hv
X3JldHVybl9sb3NzX2VuaGFuY2VtZW50KDApLAotICAgICAgICAgIGVjaG9fZGVsYXlfbWVkaWFu
X21zKDApLAotICAgICAgICAgIGVjaG9fZGVsYXlfc3RkX21zKDApLAotICAgICAgICAgIHJlc2lk
dWFsX2VjaG9fbGlrZWxpaG9vZCgwLjBmKSwKLSAgICAgICAgICByZXNpZHVhbF9lY2hvX2xpa2Vs
aWhvb2RfcmVjZW50X21heCgwLjBmKSwKLSAgICAgICAgICBhZWNfZGl2ZXJnZW50X2ZpbHRlcl9m
cmFjdGlvbigwLjApIHt9Ci0gICAgfkF1ZGlvUHJvY2Vzc29yU3RhdHMoKSB7fQotCi0gICAgYm9v
bCB0eXBpbmdfbm9pc2VfZGV0ZWN0ZWQ7Ci0gICAgaW50IGVjaG9fcmV0dXJuX2xvc3M7Ci0gICAg
aW50IGVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQ7Ci0gICAgaW50IGVjaG9fZGVsYXlfbWVk
aWFuX21zOwotICAgIGludCBlY2hvX2RlbGF5X3N0ZF9tczsKLSAgICBmbG9hdCByZXNpZHVhbF9l
Y2hvX2xpa2VsaWhvb2Q7Ci0gICAgZmxvYXQgcmVzaWR1YWxfZWNob19saWtlbGlob29kX3JlY2Vu
dF9tYXg7Ci0gICAgZmxvYXQgYWVjX2RpdmVyZ2VudF9maWx0ZXJfZnJhY3Rpb247Ci0gIH07Ci0g
IC8vIFRoaXMgc3RydWN0IG1haW50YWlucyB0aGUgb3B0aW9uYWxpdHkgb2YgdGhlIHN0YXRzLCBh
bmQgd2lsbCByZXBsYWNlIHRoZQotICAvLyByZWd1bGFyIHN0YXRzIHN0cnVjdCB3aGVuIGFsbCB1
c2VycyBoYXZlIGJlZW4gdXBkYXRlZC4KICAgc3RydWN0IEF1ZGlvUHJvY2Vzc29yU3RhdGlzdGlj
cyB7CiAgICAgYm9vbCB0eXBpbmdfbm9pc2VfZGV0ZWN0ZWQgPSBmYWxzZTsKICAgICBBdWRpb1By
b2Nlc3NpbmdTdGF0cyBhcG1fc3RhdGlzdGljczsKICAgfTsKIAotICAvLyBHZXQgYXVkaW8gcHJv
Y2Vzc29yIHN0YXRpc3RpY3MuCi0gIHZpcnR1YWwgdm9pZCBHZXRTdGF0cyhBdWRpb1Byb2Nlc3Nv
clN0YXRzKiBzdGF0cyk7Ci0KICAgLy8gR2V0IGF1ZGlvIHByb2Nlc3NvciBzdGF0aXN0aWNzLiBU
aGUgfGhhc19yZW1vdGVfdHJhY2tzfCBhcmd1bWVudCBzaG91bGQgYmUKICAgLy8gc2V0IGlmIHRo
ZXJlIGFyZSBhY3RpdmUgcmVtb3RlIHRyYWNrcyAodGhpcyB3b3VsZCB1c3VhbGx5IGJlIHRydWUg
ZHVyaW5nCiAgIC8vIGEgY2FsbCkuIElmIHRoZXJlIGFyZSBubyByZW1vdGUgdHJhY2tzIHNvbWUg
b2YgdGhlIHN0YXRzIHdpbGwgbm90IGJlIHNldCBieQogICAvLyB0aGUgQXVkaW9Qcm9jZXNzb3Is
IGJlY2F1c2UgdGhleSBvbmx5IG1ha2Ugc2Vuc2UgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lCiAg
IC8vIHJlbW90ZSB0cmFjay4KLSAgLy8gVE9ETyhpdm9jKTogTWFrZSBwdXJlIHZpcnR1YWwgd2hl
biBhbGwgaW1wbGVtZW50aW9ucyBhcmUgdXBkYXRlZC4KLSAgdmlydHVhbCBBdWRpb1Byb2Nlc3Nv
clN0YXRpc3RpY3MgR2V0U3RhdHMoYm9vbCBoYXNfcmVtb3RlX3RyYWNrcyk7CisgIHZpcnR1YWwg
QXVkaW9Qcm9jZXNzb3JTdGF0aXN0aWNzIEdldFN0YXRzKGJvb2wgaGFzX3JlbW90ZV90cmFja3Mp
ID0gMDsKIAogIHByb3RlY3RlZDoKICAgfkF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNlKCkgb3ZlcnJp
ZGUgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL29ydGMvbWVkaWFkZXNjcmlwdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL21lZGlhZGVzY3JpcHRpb24uY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MTU1ZjIyZmU5YTM1ODg1Y2RkNTM3MGFm
MjgyNzUzODYxZjMzN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMv
bWVkaWFkZXNjcmlwdGlvbi5jYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQot
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJhcGkvb3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmgiCi0K
LW5hbWVzcGFjZSB3ZWJydGMge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL21lZGlhZGVzY3JpcHRpb24uaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL21lZGlhZGVzY3JpcHRp
b24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNmMWQxYTY3YmUwMTg3NzAyYzU4
MTlkNmJmZjYyMTllZmFlMDI3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
b3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0v
KgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIEFQSV9PUlRDX01FRElBREVTQ1JJUFRJT05fSF8K
LSNkZWZpbmUgQVBJX09SVENfTUVESUFERVNDUklQVElPTl9IXwotCi0jaW5jbHVkZSA8c3RyaW5n
PgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgotI2luY2x1ZGUgImFwaS9jcnlwdG9wYXJhbXMuaCIKLQotbmFt
ZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIEEgc3RydWN0dXJlZCByZXByZXNlbnRhdGlvbiBvZiBhIG1l
ZGlhIGRlc2NyaXB0aW9uIHdpdGhpbiBhbiBTRFAgc2Vzc2lvbgotLy8gZGVzY3JpcHRpb24uCi1j
bGFzcyBNZWRpYURlc2NyaXB0aW9uIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IE1lZGlhRGVzY3Jp
cHRpb24oc3RkOjpzdHJpbmcgbWlkKSA6IG1pZF8oc3RkOjptb3ZlKG1pZCkpIHt9Ci0KLSAgfk1l
ZGlhRGVzY3JpcHRpb24oKSB7fQotCi0gIC8vIFRoZSBtaWQobWVkaWEgc3RyZWFtIGlkZW50aWZp
Y2F0aW9uKSBpcyB1c2VkIGZvciBpZGVudGlmeWluZyBtZWRpYSBzdHJlYW1zCi0gIC8vIHdpdGhp
biBhIHNlc3Npb24gZGVzY3JpcHRpb24uCi0gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRt
bC9yZmM1ODg4I3NlY3Rpb24tNgotICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gbWlkKCkg
Y29uc3QgeyByZXR1cm4gbWlkXzsgfQotICB2b2lkIHNldF9taWQoc3RkOjpzdHJpbmcgbWlkKSB7
IG1pZF8uZW1wbGFjZShzdGQ6Om1vdmUobWlkKSk7IH0KLQotICAvLyBTZWN1cml0eSBrZXlzIGFu
ZCBwYXJhbWV0ZXJzIGZvciB0aGlzIG1lZGlhIHN0cmVhbS4gQ2FuIGJlIHVzZWQgdG8KLSAgLy8g
bmVnb3RpYXRlIHBhcmFtZXRlcnMgZm9yIFNSVFAuCi0gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmM0NTY4I3BhZ2UtNQotICBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpDcnlwdG9QYXJh
bXM+JiBzZGVzX3BhcmFtcygpIHsgcmV0dXJuIHNkZXNfcGFyYW1zXzsgfQotICBjb25zdCBzdGQ6
OnZlY3Rvcjxjcmlja2V0OjpDcnlwdG9QYXJhbXM+JiBzZGVzX3BhcmFtcygpIGNvbnN0IHsKLSAg
ICByZXR1cm4gc2Rlc19wYXJhbXNfOwotICB9Ci0KLSBwcml2YXRlOgotICBhYnNsOjpvcHRpb25h
bDxzdGQ6OnN0cmluZz4gbWlkXzsKLQotICBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpDcnlwdG9QYXJh
bXM+IHNkZXNfcGFyYW1zXzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlm
ICAvLyBBUElfT1JUQ19NRURJQURFU0NSSVBUSU9OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9tZWRpYWRlc2NyaXB0aW9u
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL29ydGMvbWVkaWFkZXNjcmlwdGlvbl91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOWZmOTQzYWY2ZjQwNWZhOGNiZmNhMjI5ZTdiMDIzMzZiNDBiMzNjNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9tZWRpYWRlc2NyaXB0aW9uX3Vu
aXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0g
Ki8KLQotI2luY2x1ZGUgImFwaS9vcnRjL21lZGlhZGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlICJ0
ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1jbGFzcyBNZWRpYURlc2NyaXB0
aW9uVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHt9OwotCi1URVNUX0YoTWVkaWFEZXNjcmlw
dGlvblRlc3QsIENyZWF0ZU1lZGlhRGVzY3JpcHRpb24pIHsKLSAgTWVkaWFEZXNjcmlwdGlvbiBt
KCJhIik7Ci0gIEVYUEVDVF9FUSgiYSIsIG0ubWlkKCkpOwotfQotCi1URVNUX0YoTWVkaWFEZXNj
cmlwdGlvblRlc3QsIEFkZFNkZXNQYXJhbSkgewotICBNZWRpYURlc2NyaXB0aW9uIG0oImEiKTsK
LSAgbS5zZGVzX3BhcmFtcygpLnB1c2hfYmFjayhjcmlja2V0OjpDcnlwdG9QYXJhbXMoKSk7Ci0g
IGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OkNyeXB0b1BhcmFtcz4mIHBhcmFtcyA9IG0uc2Rl
c19wYXJhbXMoKTsKLSAgRVhQRUNUX0VRKDF1LCBwYXJhbXMuc2l6ZSgpKTsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL29ydGMvb3J0Y2ZhY3RvcnlpbnRlcmZhY2UuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL29ydGNmYWN0b3J5aW50
ZXJmYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5MzczNTI4MzE4Y2Q3YjI0
NjgzODk4NzU3MzE0YjQ5NmQ3YzMzMTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL29ydGMvb3J0Y2ZhY3RvcnlpbnRlcmZhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDIzMiAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIEFQSV9PUlRDX09SVENGQUNUT1JZ
SU5URVJGQUNFX0hfCi0jZGVmaW5lIEFQSV9PUlRDX09SVENGQUNUT1JZSU5URVJGQUNFX0hfCi0K
LSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+
ICAvLyBGb3Igc3RkOjptb3ZlLgotCi0jaW5jbHVkZSAiYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
LmgiCi0jaW5jbHVkZSAiYXBpL21lZGlhdHlwZXMuaCIKLSNpbmNsdWRlICJhcGkvb3J0Yy9vcnRj
cnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvb3J0Yy9vcnRjcnRwc2VuZGVy
aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvcGFja2V0dHJhbnNwb3J0aW50ZXJmYWNl
LmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcmludGVyZmFjZS5o
IgotI2luY2x1ZGUgImFwaS9vcnRjL3J0cHRyYW5zcG9ydGludGVyZmFjZS5oIgotI2luY2x1ZGUg
ImFwaS9vcnRjL3NydHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvb3J0Yy91
ZHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRl
cmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvcnRjZXJyb3IuaCIKLSNpbmNsdWRlICJhcGkvcnRwcGFy
YW1ldGVycy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdvcmsuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zY29wZWRfcmVmX3B0ci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgotCi1u
YW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVE9ETyhkZWFkYmVlZik6IFRoaXMgc2hvdWxkIGJlIHBh
cnQgb2YgL2FwaS8sIGJ1dCBjdXJyZW50bHkgaXQncyBub3QgYW5kCi0vLyBpbmNsdWRpbmcgaXRz
IGhlYWRlciB2aW9sYXRlcyBjaGVja2RlcHMgcnVsZXMuCi1jbGFzcyBBdWRpb0RldmljZU1vZHVs
ZTsKLQotLy8gV0FSTklORzogVGhpcyBpcyBleHBlcmltZW50YWwvdW5kZXIgZGV2ZWxvcG1lbnQs
IHNvIHVzZSBhdCB5b3VyIG93biByaXNrOyBubwotLy8gZ3VhcmFudGVlIGFib3V0IEFQSSBzdGFi
aWxpdHkgaXMgZ3VhcmFudGVlZCBoZXJlIHlldC4KLS8vCi0vLyBUaGlzIGNsYXNzIGlzIHRoZSBP
UlRDIGFuYWxvZyBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnkuIEl0IGFjdHMgYXMgYSBmYWN0b3J5
Ci0vLyBmb3IgT1JUQyBvYmplY3RzIHRoYXQgY2FuIGJlIGNvbm5lY3RlZCB0byBlYWNoIG90aGVy
LgotLy8KLS8vIFNvbWUgb2YgdGhlc2Ugb2JqZWN0cyBtYXkgbm90IGJlIHJlcHJlc2VudGVkIGJ5
IHRoZSBPUlRDIHNwZWNpZmljYXRpb24sIGJ1dAotLy8gZm9sbG93IHRoZSBzYW1lIGdlbmVyYWwg
cHJpbmNpcGxlcy4KLS8vCi0vLyBJZiBvbmUgb2YgdGhlIGZhY3RvcnkgbWV0aG9kcyB0YWtlcyBh
bm90aGVyIG9iamVjdCBhcyBhbiBhcmd1bWVudCwgaXQgTVVTVAotLy8gaGF2ZSBiZWVuIGNyZWF0
ZWQgYnkgdGhlIHNhbWUgT3J0Y0ZhY3RvcnkuCi0vLwotLy8gT24gb2JqZWN0IGxpZmV0aW1lczog
b2JqZWN0cyBzaG91bGQgYmUgZGVzdHJveWVkIGluIHRoaXMgb3JkZXI6Ci0vLyAxLiBPYmplY3Rz
IGNyZWF0ZWQgYnkgdGhlIGZhY3RvcnkuCi0vLyAyLiBUaGUgZmFjdG9yeSBpdHNlbGYuCi0vLyAz
LiBPYmplY3RzIHBhc3NlZCBpbnRvIE9ydGNGYWN0b3J5SW50ZXJmYWNlOjpDcmVhdGUuCi1jbGFz
cyBPcnRjRmFjdG9yeUludGVyZmFjZSB7Ci0gcHVibGljOgotICAvLyB8bmV0d29ya190aHJlYWR8
IGlzIHRoZSB0aHJlYWQgb24gd2hpY2ggcGFja2V0cyBhcmUgc2VudCBhbmQgcmVjZWl2ZWQuCi0g
IC8vIElmIG51bGwsIGEgbmV3IHJ0Yzo6VGhyZWFkIHdpdGggYSBkZWZhdWx0IHNvY2tldCBzZXJ2
ZXIgaXMgY3JlYXRlZC4KLSAgLy8KLSAgLy8gfHNpZ25hbGluZ190aHJlYWR8IGlzIHVzZWQgZm9y
IGNhbGxiYWNrcyB0byB0aGUgY29uc3VtZXIgb2YgdGhlIEFQSS4gSWYKLSAgLy8gbnVsbCwgdGhl
IGN1cnJlbnQgdGhyZWFkIHdpbGwgYmUgdXNlZCwgd2hpY2ggYXNzdW1lcyB0aGF0IHRoZSBBUEkg
Y29uc3VtZXIKLSAgLy8gaXMgcnVubmluZyBhIG1lc3NhZ2UgbG9vcCBvbiB0aGlzIHRocmVhZCAo
ZWl0aGVyIHVzaW5nIGFuIGV4aXN0aW5nCi0gIC8vIHJ0Yzo6VGhyZWFkLCBvciBieSBjYWxsaW5n
IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCktPlByb2Nlc3NNZXNzYWdlcykuCi0gIC8vCi0gIC8vIHxu
ZXR3b3JrX21hbmFnZXJ8IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIG5ldHdvcmsgaW50ZXJm
YWNlcyBhcmUKLSAgLy8gYXZhaWxhYmxlLiBUaGlzIGlzIHVzZWQgZm9yIElDRSwgZm9yIGV4YW1w
bGUuIElmIG51bGwsIGEgZGVmYXVsdAotICAvLyBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHVzZWQu
IE9ubHkgYWNjZXNzZWQgb24gfG5ldHdvcmtfdGhyZWFkfC4KLSAgLy8KLSAgLy8gfHNvY2tldF9m
YWN0b3J5fCBpcyB1c2VkIChvbiB0aGUgbmV0d29yayB0aHJlYWQpIGZvciBjcmVhdGluZyBzb2Nr
ZXRzLiBJZgotICAvLyBpdCdzIG51bGwsIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJl
IHVzZWQsIHdoaWNoIGFzc3VtZXMKLSAgLy8gfG5ldHdvcmtfdGhyZWFkfCBpcyBhIG5vcm1hbCBy
dGM6OlRocmVhZC4KLSAgLy8KLSAgLy8gfGFkbXwgaXMgb3B0aW9uYWwsIGFuZCBhbGxvd3MgYSBk
aWZmZXJlbnQgYXVkaW8gZGV2aWNlIGltcGxlbWVudGF0aW9uIHRvCi0gIC8vIGJlIGluamVjdGVk
OyBvdGhlcndpc2UgYSBwbGF0Zm9ybS1zcGVjaWZpYyBtb2R1bGUgd2lsbCBiZSB1c2VkIHRoYXQg
d2lsbAotICAvLyB1c2UgdGhlIGRlZmF1bHQgYXVkaW8gaW5wdXQuCi0gIC8vCi0gIC8vIHxhdWRp
b19lbmNvZGVyX2ZhY3Rvcnl8IGFuZCB8YXVkaW9fZGVjb2Rlcl9mYWN0b3J5fCBhcmUgdXNlZCB0
bwotICAvLyBpbnN0YW50aWF0ZSBhdWRpbyBjb2RlY3M7IHRoZXkgZGV0ZXJtaW5lIHdoYXQgY29k
ZWNzIGFyZSBzdXBwb3J0ZWQuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCB0aGUgT3J0Y0ZhY3RvcnlJ
bnRlcmZhY2UgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgYW55IG9mIHRoZQotICAvLyBvYmpl
Y3RzIHBhc3NlZCBpbiBieSByYXcgcG9pbnRlciwgYW5kIGFzIHByZXZpb3VzbHkgc3RhdGVkLCB0
aGVzZSBvYmplY3RzCi0gIC8vIGNhbid0IGJlIGRlc3Ryb3llZCBiZWZvcmUgdGhlIGZhY3Rvcnkg
aXMuCi0gIHN0YXRpYyBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUludGVy
ZmFjZT4+IENyZWF0ZSgKLSAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICAg
IHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgICAgcnRjOjpOZXR3b3JrTWFuYWdl
ciogbmV0d29ya19tYW5hZ2VyLAotICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2Nr
ZXRfZmFjdG9yeSwKLSAgICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG0sCi0gICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAot
ICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29k
ZXJfZmFjdG9yeSk7Ci0KLSAgLy8gQ29uc3RydWN0b3IgZm9yIGNvbnZlbmllbmNlIHdoaWNoIHVz
ZXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUKLSAgLy8gcG9zc2libGUgKHRob3VnaCBk
b2VzIHN0aWxsIHJlcXVpcmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgcnVucyBhIG1lc3NhZ2UK
LSAgLy8gbG9vcDsgc2VlIGFib3ZlKS4KLSAgc3RhdGljIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVf
cHRyPE9ydGNGYWN0b3J5SW50ZXJmYWNlPj4gQ3JlYXRlKAotICAgICAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3Rv
cnkpIHsKLSAgICByZXR1cm4gQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1
ZGlvX2RlY29kZXJfZmFjdG9yeSk7Ci0gIH0KLQotICB2aXJ0dWFsIH5PcnRjRmFjdG9yeUludGVy
ZmFjZSgpIHt9Ci0KLSAgLy8gQ3JlYXRlcyBhbiBSVFAgdHJhbnNwb3J0IGNvbnRyb2xsZXIsIHdo
aWNoIGlzIHVzZWQgaW4gY2FsbHMgdG8KLSAgLy8gQ3JlYXRlUnRwVHJhbnNwb3J0IG1ldGhvZHMu
IElmIHlvdXIgYXBwbGljYXRpb24gaGFzIHNvbWUgbm90aW9uIG9mIGEKLSAgLy8gImNhbGwiLCB5
b3Ugc2hvdWxkIGNyZWF0ZSBvbmUgdHJhbnNwb3J0IGNvbnRyb2xsZXIgcGVyIGNhbGwuCi0gIC8v
Ci0gIC8vIEhvd2V2ZXIsIGlmIHlvdSBvbmx5IGFyZSB1c2luZyBvbmUgUnRwVHJhbnNwb3J0IG9i
amVjdCwgdGhpcyBkb2Vzbid0IG5lZWQKLSAgLy8gdG8gYmUgY2FsbGVkIGV4cGxpY2l0bHk7IENy
ZWF0ZVJ0cFRyYW5zcG9ydCB3aWxsIGNyZWF0ZSBvbmUgYXV0b21hdGljYWxseQotICAvLyBpZiB8
cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyfCBpcyBudWxsLiBTZWUgYmVsb3cuCi0gIC8vCi0gIC8v
IFRPRE8oZGVhZGJlZWYpOiBBZGQgTWVkaWFDb25maWcgYW5kIFJ0Y0V2ZW50TG9nIGFyZ3VtZW50
cz8KLSAgdmlydHVhbCBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250
cm9sbGVySW50ZXJmYWNlPj4KLSAgQ3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcigpID0gMDsK
LQotICAvLyBDcmVhdGVzIGFuIFJUUCB0cmFuc3BvcnQgdXNpbmcgdGhlIHByb3ZpZGVkIHBhY2tl
dCB0cmFuc3BvcnRzIGFuZAotICAvLyB0cmFuc3BvcnQgY29udHJvbGxlci4KLSAgLy8KLSAgLy8g
fHJ0cHwgd2lsbCBiZSB1c2VkIGZvciBzZW5kaW5nIFJUUCBwYWNrZXRzLCBhbmQgfHJ0Y3B8IGZv
ciBSVENQIHBhY2tldHMuCi0gIC8vCi0gIC8vIHxydHB8IGNhbid0IGJlIG51bGwuIHxydGNwfCBt
dXN0IGJlIG5vbi1udWxsIGlmIGFuZCBvbmx5IGlmCi0gIC8vIHxydHBfcGFyYW1ldGVycy5ydGNw
Lm11eHwgaXMgZmFsc2UsIGluZGljYXRpbmcgdGhhdCBSVENQIG11eGluZyBpc24ndCB1c2VkLgot
ICAvLyBOb3RlIHRoYXQgaWYgUlRDUCBtdXhpbmcgaXNuJ3QgZW5hYmxlZCBpbml0aWFsbHksIGl0
IGNhbiBzdGlsbCBlbmFibGVkCi0gIC8vIGxhdGVyIHRocm91Z2ggU2V0UGFyYW1ldGVycy4KLSAg
Ly8KLSAgLy8gSWYgfHRyYW5zcG9ydF9jb250cm9sbGVyfCBpcyBudWxsLCBvbmUgd2lsbCBhdXRv
bWF0aWNhbGx5IGJlIGNyZWF0ZWQsIGFuZAotICAvLyBpdHMgbGlmZXRpbWUgbWFuYWdlZCBieSB0
aGUgcmV0dXJuZWQgUnRwVHJhbnNwb3J0LiBUaGlzIHNob3VsZCBvbmx5IGJlCi0gIC8vIGRvbmUg
aWYgYSBzaW5nbGUgUnRwVHJhbnNwb3J0IGlzIGJlaW5nIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0
aCB0aGUgcmVtb3RlCi0gIC8vIGVuZHBvaW50LgotICB2aXJ0dWFsIFJUQ0Vycm9yT3I8c3RkOjp1
bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVyZmFjZT4+IENyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAg
ICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHJ0cF9wYXJhbWV0ZXJzLAotICAgICAg
UGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRl
cmZhY2UqIHJ0Y3AsCi0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlKiB0cmFu
c3BvcnRfY29udHJvbGxlcikgPSAwOwotCi0gIC8vIENyZWF0ZXMgYW4gU3J0cFRyYW5zcG9ydCB3
aGljaCBpcyBhbiBSVFAgdHJhbnNwb3J0IHRoYXQgdXNlcyBTUlRQLgotICB2aXJ0dWFsIFJUQ0Vy
cm9yT3I8c3RkOjp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+PgotICBDcmVhdGVT
cnRwVHJhbnNwb3J0KAotICAgICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcnRwX3Bh
cmFtZXRlcnMsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwKLSAgICAgIFBh
Y2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJJbnRlcmZhY2UqIHRyYW5zcG9ydF9jb250cm9sbGVyKSA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0
aGUgY2FwYWJpbGl0aWVzIG9mIGFuIFJUUCBzZW5kZXIgb2YgdHlwZSB8a2luZHwuIFRoZXNlCi0g
IC8vIGNhcGFiaWxpdGllcyBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBSdHBQYXJhbWV0
ZXJzIHRvIHVzZSB0byBjcmVhdGUKLSAgLy8gYW4gUnRwU2VuZGVyLgotICAvLwotICAvLyBJZiBm
b3Igc29tZSByZWFzb24geW91IHBhc3MgaW4gTUVESUFfVFlQRV9EQVRBLCByZXR1cm5zIGFuIGVt
cHR5IHN0cnVjdHVyZS4KLSAgdmlydHVhbCBSdHBDYXBhYmlsaXRpZXMgR2V0UnRwU2VuZGVyQ2Fw
YWJpbGl0aWVzKAotICAgICAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQpIGNvbnN0ID0gMDsKLQot
ICAvLyBDcmVhdGVzIGFuIFJUUCBzZW5kZXIgd2l0aCB8dHJhY2t8LiBXaWxsIG5vdCBzdGFydCBz
ZW5kaW5nIHVudGlsIFNlbmQgaXMKLSAgLy8gY2FsbGVkLiBUaGlzIGlzIHByb3ZpZGVkIGFzIGEg
Y29udmVuaWVuY2U7IGl0J3MgZXF1aXZhbGVudCB0byBjYWxsaW5nCi0gIC8vIENyZWF0ZVJ0cFNl
bmRlciB3aXRoIGEga2luZCAoc2VlIGJlbG93KSwgZm9sbG93ZWQgYnkgU2V0VHJhY2suCi0gIC8v
Ci0gIC8vIHx0cmFja3wgYW5kIHx0cmFuc3BvcnR8IG11c3Qgbm90IGJlIG51bGwuCi0gIHZpcnR1
YWwgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVyZmFjZT4+IENy
ZWF0ZVJ0cFNlbmRlcigKLSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbVRyYWNr
SW50ZXJmYWNlPiB0cmFjaywKLSAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0
KSA9IDA7Ci0KLSAgLy8gT3ZlcmxvYWQgb2YgQ3JlYXRlUnRwU2VuZGVyIGFsbG93cyBjcmVhdGlu
ZyB0aGUgc2VuZGVyIHdpdGhvdXQgYSB0cmFjay4KLSAgLy8KLSAgLy8gfGtpbmR8IG11c3QgYmUg
TUVESUFfVFlQRV9BVURJTyBvciBNRURJQV9UWVBFX1ZJREVPLgotICB2aXJ0dWFsIFJUQ0Vycm9y
T3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PiBDcmVhdGVSdHBTZW5k
ZXIoCi0gICAgICBjcmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICAgIFJ0cFRyYW5zcG9ydElu
dGVyZmFjZSogdHJhbnNwb3J0KSA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0aGUgY2FwYWJpbGl0aWVz
IG9mIGFuIFJUUCByZWNlaXZlciBvZiB0eXBlIHxraW5kfC4gVGhlc2UKLSAgLy8gY2FwYWJpbGl0
aWVzIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGF0IFJ0cFBhcmFtZXRlcnMgdG8gdXNlIHRv
IGNyZWF0ZQotICAvLyBhbiBSdHBSZWNlaXZlci4KLSAgLy8KLSAgLy8gSWYgZm9yIHNvbWUgcmVh
c29uIHlvdSBwYXNzIGluIE1FRElBX1RZUEVfREFUQSwgcmV0dXJucyBhbiBlbXB0eSBzdHJ1Y3R1
cmUuCi0gIHZpcnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldFJ0cFJlY2VpdmVyQ2FwYWJpbGl0aWVz
KAotICAgICAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQpIGNvbnN0ID0gMDsKLQotICAvLyBDcmVh
dGVzIGFuIFJUUCByZWNlaXZlciBvZiB0eXBlIHxraW5kfC4gV2lsbCBub3Qgc3RhcnQgcmVjZWl2
aW5nIG1lZGlhCi0gIC8vIHVudGlsIFJlY2VpdmUgaXMgY2FsbGVkLgotICAvLwotICAvLyB8a2lu
ZHwgbXVzdCBiZSBNRURJQV9UWVBFX0FVRElPIG9yIE1FRElBX1RZUEVfVklERU8uCi0gIC8vCi0g
IC8vIHx0cmFuc3BvcnR8IG11c3Qgbm90IGJlIG51bGwuCi0gIHZpcnR1YWwgUlRDRXJyb3JPcjxz
dGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFJlY2VpdmVySW50ZXJmYWNlPj4KLSAgQ3JlYXRlUnRwUmVj
ZWl2ZXIoY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQsCi0gICAgICAgICAgICAgICAgICAgIFJ0cFRy
YW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0KSA9IDA7Ci0KLSAgLy8gQ3JlYXRlIGEgVURQIHRy
YW5zcG9ydCB3aXRoIElQIGFkZHJlc3MgZmFtaWx5IHxmYW1pbHl8LCB1c2luZyBhIHBvcnQKLSAg
Ly8gd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFuZ2UuCi0gIC8vCi0gIC8vIHxmYW1pbHl8IG11c3Qg
YmUgQUZfSU5FVCBvciBBRl9JTkVUNi4KLSAgLy8KLSAgLy8gfG1pbl9wb3J0fC98bWF4X3BvcnR8
IHZhbHVlcyBvZiAwIGluZGljYXRlIG5vIHJhbmdlIHJlc3RyaWN0aW9uLgotICAvLwotICAvLyBS
ZXR1cm5zIGFuIGVycm9yIGlmIHRoZSB0cmFuc3BvcnQgd2Fzbid0IHN1Y2Nlc3NmdWxseSBjcmVh
dGVkLgotICB2aXJ0dWFsIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFVkcFRyYW5zcG9ydElu
dGVyZmFjZT4+Ci0gIENyZWF0ZVVkcFRyYW5zcG9ydChpbnQgZmFtaWx5LCB1aW50MTZfdCBtaW5f
cG9ydCwgdWludDE2X3QgbWF4X3BvcnQpID0gMDsKLQotICAvLyBNZXRob2QgZm9yIGNvbnZlbmll
bmNlIHRoYXQgaGFzIG5vIHBvcnQgcmFuZ2UgcmVzdHJpY3Rpb25zLgotICBSVENFcnJvck9yPHN0
ZDo6dW5pcXVlX3B0cjxVZHBUcmFuc3BvcnRJbnRlcmZhY2U+PiBDcmVhdGVVZHBUcmFuc3BvcnQo
Ci0gICAgICBpbnQgZmFtaWx5KSB7Ci0gICAgcmV0dXJuIENyZWF0ZVVkcFRyYW5zcG9ydChmYW1p
bHksIDAsIDApOwotICB9Ci0KLSAgLy8gTk9URTogVGhlIG1ldGhvZHMgYmVsb3cgdG8gY3JlYXRl
IHRyYWNrcy9zb3VyY2VzIHJldHVybiBzY29wZWRfcmVmcHRycwotICAvLyByYXRoZXIgdGhhbiB1
bmlxdWVfcHRycywgYmVjYXVzZSB0aGVzZSBpbnRlcmZhY2VzIGFyZSBhbHNvIHVzZWQgd2l0aAot
ICAvLyBQZWVyQ29ubmVjdGlvbiwgd2hlcmUgZXZlcnl0aGluZyBpcyByZWYtY291bnRlZC4KLQot
ICAvLyBDcmVhdGVzIGEgYXVkaW8gc291cmNlIHJlcHJlc2VudGluZyB0aGUgZGVmYXVsdCBtaWNy
b3Bob25lIGlucHV0LgotICAvLyB8b3B0aW9uc3wgZGVjaWRlcyBhdWRpbyBwcm9jZXNzaW5nIHNl
dHRpbmdzLgotICB2aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1NvdXJjZUludGVyZmFj
ZT4gQ3JlYXRlQXVkaW9Tb3VyY2UoCi0gICAgICBjb25zdCBjcmlja2V0OjpBdWRpb09wdGlvbnMm
IG9wdGlvbnMpID0gMDsKLQotICAvLyBWZXJzaW9uIG9mIHRoZSBhYm92ZSBtZXRob2QgdGhhdCB1
c2VzIGRlZmF1bHQgb3B0aW9ucy4KLSAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvU291cmNlSW50
ZXJmYWNlPiBDcmVhdGVBdWRpb1NvdXJjZSgpIHsKLSAgICByZXR1cm4gQ3JlYXRlQXVkaW9Tb3Vy
Y2UoY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpOwotICB9Ci0KLSAgLy8gQ3JlYXRlcyBhIG5ldyBs
b2NhbCB2aWRlbyB0cmFjayB3cmFwcGluZyB8c291cmNlfC4gVGhlIHNhbWUgfHNvdXJjZXwgY2Fu
Ci0gIC8vIGJlIHVzZWQgaW4gc2V2ZXJhbCB0cmFja3MuCi0gIHZpcnR1YWwgcnRjOjpzY29wZWRf
cmVmcHRyPFZpZGVvVHJhY2tJbnRlcmZhY2U+IENyZWF0ZVZpZGVvVHJhY2soCi0gICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgaWQsCi0gICAgICBWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlKiBzb3Vy
Y2UpID0gMDsKLQotICAvLyBDcmVhdGVzIGFuIG5ldyBsb2NhbCBhdWRpbyB0cmFjayB3cmFwcGlu
ZyB8c291cmNlfC4KLSAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9UcmFja0ludGVy
ZmFjZT4gQ3JlYXRlQXVkaW9UcmFjaygKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwKLSAg
ICAgIEF1ZGlvU291cmNlSW50ZXJmYWNlKiBzb3VyY2UpID0gMDsKLX07Ci0KLX0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBBUElfT1JUQ19PUlRDRkFDVE9SWUlOVEVSRkFDRV9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL29ydGMvb3J0Y3J0cHJlY2VpdmVyaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJpbnRlcmZhY2Uu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTlmZjk3NzYyMTM1MzcyYTlmMWIyNTBj
MzliNWQ0NzdjYjhlMjBhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0
Yy9vcnRjcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
Ci0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgotICovCi0KLS8vIFRoaXMgZmlsZSBjb250YWlucyBpbnRlcmZhY2Vz
IGZvciBSdHBSZWNlaXZlcnM6Ci0vLyBodHRwOi8vcHVibGljYXRpb25zLm9ydGMub3JnLzIwMTYv
MjAxNjEyMDIvI3J0Y3J0cHJlY2VpdmVyKgotLy8KLS8vIEhvd2V2ZXIsIHVuZGVybmVhdGggdGhl
IFJ0cFJlY2VpdmVyIGlzIGFuIFJ0cFRyYW5zcG9ydCwgcmF0aGVyIHRoYW4gYQotLy8gRHRsc1Ry
YW5zcG9ydC4gVGhpcyBpcyB0byBhbGxvdyBkaWZmZXJlbnQgdHlwZXMgb2YgUlRQIHRyYW5zcG9y
dHMgKGJlc2lkZXMKLS8vIERUTFMtU1JUUCkgdG8gYmUgdXNlZC4KLQotI2lmbmRlZiBBUElfT1JU
Q19PUlRDUlRQUkVDRUlWRVJJTlRFUkZBQ0VfSF8KLSNkZWZpbmUgQVBJX09SVENfT1JUQ1JUUFJF
Q0VJVkVSSU5URVJGQUNFX0hfCi0KLSNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2Uu
aCIKLSNpbmNsdWRlICJhcGkvbWVkaWF0eXBlcy5oIgotI2luY2x1ZGUgImFwaS9vcnRjL3J0cHRy
YW5zcG9ydGludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgotI2luY2x1ZGUg
ImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBOb3RlOiBT
aW5jZSByZWNlaXZlciBjYXBhYmlsaXRpZXMgbWF5IGRlcGVuZCBvbiBob3cgdGhlIE9ydGNGYWN0
b3J5IHdhcwotLy8gY3JlYXRlZCwgaW5zdGVhZCBvZiBhIHN0YXRpYyAiR2V0Q2FwYWJpbGl0aWVz
IiBtZXRob2Qgb24gdGhpcyBpbnRlcmZhY2UsCi0vLyB0aGVyZSBpcyBhICJHZXRSdHBSZWNlaXZl
ckNhcGFiaWxpdGllcyIgbWV0aG9kIG9uIHRoZSBPcnRjRmFjdG9yeS4KLWNsYXNzIE9ydGNSdHBS
ZWNlaXZlckludGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5PcnRjUnRwUmVjZWl2ZXJJ
bnRlcmZhY2UoKSB7fQotCi0gIC8vIFJldHVybnMgYSB0cmFjayByZXByZXNlbnRpbmcgdGhlIG1l
ZGlhIHJlY2VpdmVkIGJ5IHRoaXMgcmVjZWl2ZXIuCi0gIC8vCi0gIC8vIEN1cnJlbnRseSwgdGhp
cyB3aWxsIHJldHVybiBudWxsIHVudGlsIFJlY2VpdmUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5Ci0g
IC8vIGNhbGxlZC4gQWxzbywgYSBuZXcgdHJhY2sgd2lsbCBiZSBjcmVhdGVkIGV2ZXJ5IHRpbWUg
dGhlIHByaW1hcnkgU1NSQwotICAvLyBjaGFuZ2VzLgotICAvLwotICAvLyBJZiBlbmNvZGluZ3Mg
YXJlIHJlbW92ZWQsIEdldFRyYWNrIHdpbGwgcmV0dXJuIG51bGwuIFRob3VnaCBkZWFjdGl2YXRp
bmcKLSAgLy8gYW4gZW5jb2RpbmcgKHNldHRpbmcgfGFjdGl2ZXwgdG8gZmFsc2UpIHdpbGwgbm90
IGRvIHRoaXMuCi0gIC8vCi0gIC8vIEluIHRoZSBmdXR1cmUsIHRoZXNlIGxpbWl0YXRpb25zIHdp
bGwgYmUgZml4ZWQsIGFuZCBHZXRUcmFjayB3aWxsIHJldHVybgotICAvLyB0aGUgc2FtZSB0cmFj
ayBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBSdHBSZWNlaXZlci4gU28gaXQncyBub3QKLSAgLy8g
cmVjb21tZW5kZWQgdG8gd3JpdGUgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhpcyBub24tc3RhbmRh
cmQgYmVoYXZpb3IuCi0gIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJh
Y2tJbnRlcmZhY2U+IEdldFRyYWNrKCkgY29uc3QgPSAwOwotCi0gIC8vIE9uY2Ugc3VwcG9ydGVk
LCB3aWxsIHN3aXRjaCB0byByZWNlaXZpbmcgbWVkaWEgb24gYSBuZXcgdHJhbnNwb3J0LgotICAv
LyBIb3dldmVyLCB0aGlzIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGFuZCB3aWxsIGFsd2F5
cyByZXR1cm4gYW4gZXJyb3IuCi0gIHZpcnR1YWwgUlRDRXJyb3IgU2V0VHJhbnNwb3J0KFJ0cFRy
YW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0KSA9IDA7Ci0gIC8vIFJldHVybnMgcHJldmlvdXNs
eSBzZXQgKG9yIGNvbnN0cnVjdGVkLXdpdGgpIHRyYW5zcG9ydC4KLSAgdmlydHVhbCBSdHBUcmFu
c3BvcnRJbnRlcmZhY2UqIEdldFRyYW5zcG9ydCgpIGNvbnN0ID0gMDsKLQotICAvLyBTdGFydCBy
ZWNlaXZpbmcgbWVkaWEgd2l0aCB8cGFyYW1ldGVyc3wgKGlmIHxwYXJhbWV0ZXJzfCBjb250YWlu
cyBhbgotICAvLyBhY3RpdmUgZW5jb2RpbmcpLgotICAvLwotICAvLyBUaGVyZSBhcmUgbm8gbGlt
aXRhdGlvbnMgdG8gaG93IHRoZSBwYXJhbWV0ZXJzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZQot
ICAvLyBpbml0aWFsIGNhbGwgdG8gUmVjZWl2ZSwgYXMgbG9uZyBhcyB0aGV5J3JlIHZhbGlkIChm
b3IgZXhhbXBsZSwgdGhleSBjYW4ndAotICAvLyB1c2UgdGhlIHNhbWUgcGF5bG9hZCB0eXBlIGZv
ciB0d28gY29kZWNzKS4KLSAgdmlydHVhbCBSVENFcnJvciBSZWNlaXZlKGNvbnN0IFJ0cFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpID0gMDsKLSAgLy8gUmV0dXJucyBwYXJhbWV0ZXJzIHRoYXQgd2Vy
ZSBsYXN0IHN1Y2Nlc3NmdWxseSBwYXNzZWQgaW50byBSZWNlaXZlLCBvcgotICAvLyBlbXB0eSBw
YXJhbWV0ZXJzIGlmIHRoYXQgaGFzbid0IHlldCBvY2N1cnJlZC4KLSAgLy8KLSAgLy8gTm90ZSB0
aGF0IGZvciBwYXJhbWV0ZXJzIHRoYXQgYXJlIGRlc2NyaWJlZCBhcyBoYXZpbmcgYW4gImltcGxl
bWVudGF0aW9uCi0gIC8vIGRlZmF1bHQiIHZhbHVlIGNob3NlbiwgR2V0UGFyYW1ldGVycygpIHdp
bGwgcmV0dXJuIHRob3NlIGNob3NlbiBkZWZhdWx0cywKLSAgLy8gd2l0aCB0aGUgZXhjZXB0aW9u
IG9mIFNTUkNzIHdoaWNoIGhhdmUgc3BlY2lhbCBiZWhhdmlvci4gU2VlCi0gIC8vIHJ0cHBhcmFt
ZXRlcnMuaCBmb3IgbW9yZSBkZXRhaWxzLgotICB2aXJ0dWFsIFJ0cFBhcmFtZXRlcnMgR2V0UGFy
YW1ldGVycygpIGNvbnN0ID0gMDsKLQotICAvLyBBdWRpbyBvciB2aWRlbyByZWNlaXZlcj8KLSAg
Ly8KLSAgLy8gT25jZSBHZXRUcmFjaygpIHN0YXJ0cyBhbHdheXMgcmV0dXJuaW5nIGEgdHJhY2ss
IHRoaXMgbWV0aG9kIHdpbGwgYmUKLSAgLy8gcmVkdW5kYW50LCBhcyBvbmUgY2FuIGNhbGwgIkdl
dFRyYWNrKCktPmtpbmQoKSIuIEhvd2V2ZXIsIGl0J3Mgc3RpbGwgYQotICAvLyBuaWNlIGNvbnZl
bmllbmNlLCBhbmQgaXMgc3ltbWV0cmljIHdpdGggT3J0Y1J0cFNlbmRlckludGVyZmFjZTo6R2V0
S2luZC4KLSAgdmlydHVhbCBjcmlja2V0OjpNZWRpYVR5cGUgR2V0S2luZCgpIGNvbnN0ID0gMDsK
LQotICAvLyBUT0RPKGRlYWRiZWVmKTogR2V0Q29udHJpYnV0aW5nU291cmNlcwotfTsKLQotfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIEFQSV9PUlRDX09SVENSVFBSRUNFSVZF
UklOVEVSRkFDRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL29ydGMvb3J0Y3J0cHNlbmRlcmludGVyZmFjZS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvb3J0Y3J0cHNlbmRlcmlu
dGVyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDRkZmFhNzkwN2ZmYzI4
Yzc3MTZjNmJlZDA3MjZlZWI0ZDhmZWM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9vcnRjL29ydGNydHBzZW5kZXJpbnRlcmZhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDc3
ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLS8vIFRoaXMgZmlsZSBjb250YWlucyBpbnRl
cmZhY2VzIGZvciBSdHBTZW5kZXJzOgotLy8gaHR0cDovL3B1YmxpY2F0aW9ucy5vcnRjLm9yZy8y
MDE2LzIwMTYxMjAyLyNydGNydHBzZW5kZXIqCi0vLwotLy8gSG93ZXZlciwgdW5kZXJuZWF0aCB0
aGUgUnRwU2VuZGVyIGlzIGFuIFJ0cFRyYW5zcG9ydCwgcmF0aGVyIHRoYW4gYQotLy8gRHRsc1Ry
YW5zcG9ydC4gVGhpcyBpcyB0byBhbGxvdyBkaWZmZXJlbnQgdHlwZXMgb2YgUlRQIHRyYW5zcG9y
dHMgKGJlc2lkZXMKLS8vIERUTFMtU1JUUCkgdG8gYmUgdXNlZC4KLQotI2lmbmRlZiBBUElfT1JU
Q19PUlRDUlRQU0VOREVSSU5URVJGQUNFX0hfCi0jZGVmaW5lIEFQSV9PUlRDX09SVENSVFBTRU5E
RVJJTlRFUkZBQ0VfSF8KLQotI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oIgot
I2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvcnRwdHJhbnNw
b3J0aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCi0jaW5jbHVkZSAiYXBp
L3J0cHBhcmFtZXRlcnMuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIE5vdGU6IFNpbmNl
IHNlbmRlciBjYXBhYmlsaXRpZXMgbWF5IGRlcGVuZCBvbiBob3cgdGhlIE9ydGNGYWN0b3J5IHdh
cwotLy8gY3JlYXRlZCwgaW5zdGVhZCBvZiBhIHN0YXRpYyAiR2V0Q2FwYWJpbGl0aWVzIiBtZXRo
b2Qgb24gdGhpcyBpbnRlcmZhY2UsCi0vLyB0aGVyZSBpcyBhICJHZXRSdHBTZW5kZXJDYXBhYmls
aXRpZXMiIG1ldGhvZCBvbiB0aGUgT3J0Y0ZhY3RvcnkuCi1jbGFzcyBPcnRjUnRwU2VuZGVySW50
ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfk9ydGNSdHBTZW5kZXJJbnRlcmZhY2UoKSB7
fQotCi0gIC8vIFNldHMgdGhlIHNvdXJjZSBvZiBtZWRpYSB0aGF0IHdpbGwgYmUgc2VudCBieSB0
aGlzIHNlbmRlci4KLSAgLy8KLSAgLy8gSWYgU2VuZCBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCwg
d2lsbCBpbW1lZGlhdGVseSBzd2l0Y2ggdG8gc2VuZGluZyB0aGlzCi0gIC8vIHRyYWNrLiBJZiB8
dHJhY2t8IGlzIG51bGwsIHdpbGwgc3RvcCBzZW5kaW5nIG1lZGlhLgotICAvLwotICAvLyBSZXR1
cm5zIElOVkFMSURfUEFSQU1FVEVSIGVycm9yIGlmIGFuIGF1ZGlvIHRyYWNrIGlzIHNldCBvbiBh
IHZpZGVvCi0gIC8vIFJ0cFNlbmRlciwgb3IgdmljZS12ZXJzYS4KLSAgdmlydHVhbCBSVENFcnJv
ciBTZXRUcmFjayhNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlKiB0cmFjaykgPSAwOwotICAvLyBS
ZXR1cm5zIHByZXZpb3VzbHkgc2V0IChvciBjb25zdHJ1Y3RlZC13aXRoKSB0cmFjay4KLSAgdmly
dHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4gR2V0VHJh
Y2soKSBjb25zdCA9IDA7Ci0KLSAgLy8gT25jZSBzdXBwb3J0ZWQsIHdpbGwgc3dpdGNoIHRvIHNl
bmRpbmcgbWVkaWEgb24gYSBuZXcgdHJhbnNwb3J0LiBIb3dldmVyLAotICAvLyB0aGlzIGlzIG5v
dCBjdXJyZW50bHkgc3VwcG9ydGVkIGFuZCB3aWxsIGFsd2F5cyByZXR1cm4gYW4gZXJyb3IuCi0g
IHZpcnR1YWwgUlRDRXJyb3IgU2V0VHJhbnNwb3J0KFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJh
bnNwb3J0KSA9IDA7Ci0gIC8vIFJldHVybnMgcHJldmlvdXNseSBzZXQgKG9yIGNvbnN0cnVjdGVk
LXdpdGgpIHRyYW5zcG9ydC4KLSAgdmlydHVhbCBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIEdldFRy
YW5zcG9ydCgpIGNvbnN0ID0gMDsKLQotICAvLyBTdGFydCBzZW5kaW5nIG1lZGlhIHdpdGggfHBh
cmFtZXRlcnN8IChpZiB8cGFyYW1ldGVyc3wgY29udGFpbnMgYW4gYWN0aXZlCi0gIC8vIGVuY29k
aW5nKS4KLSAgLy8KLSAgLy8gVGhlcmUgYXJlIG5vIGxpbWl0YXRpb25zIHRvIGhvdyB0aGUgcGFy
YW1ldGVycyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGUKLSAgLy8gaW5pdGlhbCBjYWxsIHRvIFNl
bmQsIGFzIGxvbmcgYXMgdGhleSdyZSB2YWxpZCAoZm9yIGV4YW1wbGUsIHRoZXkgY2FuJ3QKLSAg
Ly8gdXNlIHRoZSBzYW1lIHBheWxvYWQgdHlwZSBmb3IgdHdvIGNvZGVjcykuCi0gIHZpcnR1YWwg
UlRDRXJyb3IgU2VuZChjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSA9IDA7Ci0gIC8v
IFJldHVybnMgcGFyYW1ldGVycyB0aGF0IHdlcmUgbGFzdCBzdWNjZXNzZnVsbHkgcGFzc2VkIGlu
dG8gU2VuZCwgb3IgZW1wdHkKLSAgLy8gcGFyYW1ldGVycyBpZiB0aGF0IGhhc24ndCB5ZXQgb2Nj
dXJyZWQuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCBmb3IgcGFyYW1ldGVycyB0aGF0IGFyZSBkZXNj
cmliZWQgYXMgaGF2aW5nIGFuICJpbXBsZW1lbnRhdGlvbgotICAvLyBkZWZhdWx0IiB2YWx1ZSBj
aG9zZW4sIEdldFBhcmFtZXRlcnMoKSB3aWxsIHJldHVybiB0aG9zZSBjaG9zZW4gZGVmYXVsdHMs
Ci0gIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBTU1JDcyB3aGljaCBoYXZlIHNwZWNpYWwgYmVo
YXZpb3IuIFNlZQotICAvLyBydHBwYXJhbWV0ZXJzLmggZm9yIG1vcmUgZGV0YWlscy4KLSAgdmly
dHVhbCBSdHBQYXJhbWV0ZXJzIEdldFBhcmFtZXRlcnMoKSBjb25zdCA9IDA7Ci0KLSAgLy8gQXVk
aW8gb3IgdmlkZW8gc2VuZGVyPwotICB2aXJ0dWFsIGNyaWNrZXQ6Ok1lZGlhVHlwZSBHZXRLaW5k
KCkgY29uc3QgPSAwOwotCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBTU1JDIGNvbmZsaWN0IHNpZ25h
bC4KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBBUElfT1JUQ19P
UlRDUlRQU0VOREVSSU5URVJGQUNFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyaW50
ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
b3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyaW50ZXJmYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg1ZjM3ZmE3YTBkNWQyMDhkZDc2OWUzZDliY2MwMzc3Yjk5NzVjYWIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvcnRwdHJhbnNwb3J0Y29udHJv
bGxlcmludGVyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLQotI2lmbmRlZiBBUElfT1JUQ19SVFBUUkFOU1BPUlRDT05UUk9MTEVSSU5URVJG
QUNFX0hfCi0jZGVmaW5lIEFQSV9PUlRDX1JUUFRSQU5TUE9SVENPTlRST0xMRVJJTlRFUkZBQ0Vf
SF8KLQotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImFwaS9vcnRjL3J0cHRyYW5zcG9y
dGludGVyZmFjZS5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotY2xhc3MgUnRwVHJhbnNwb3J0
Q29udHJvbGxlckFkYXB0ZXI7Ci0KLS8vIFVzZWQgdG8gZ3JvdXAgUlRQIHRyYW5zcG9ydHMgYmV0
d2VlbiBhIGxvY2FsIGVuZHBvaW50IGFuZCB0aGUgc2FtZSByZW1vdGUKLS8vIGVuZHBvaW50LCBm
b3IgdGhlIHB1cnBvc2Ugb2Ygc2hhcmluZyBiYW5kd2lkdGggZXN0aW1hdGlvbiBhbmQgb3RoZXIg
dGhpbmdzLgotLy8KLS8vIENvbXBhcmluZyB0aGlzIHRvIHRoZSBQZWVyQ29ubmVjdGlvbiBtb2Rl
bCwgbm9uLWJ1ZGxlZCBhdWRpby92aWRlbyB3b3VsZCB1c2UKLS8vIHR3byBSdHBUcmFuc3BvcnRz
IHdpdGggYSBzaW5nbGUgUnRwVHJhbnNwb3J0Q29udHJvbGxlciwgd2hlcmVhcyBidW5kbGVkCi0v
LyBtZWRpYSB3b3VsZCB1c2UgYSBzaW5nbGUgUnRwVHJhbnNwb3J0LCBhbmQgdHdvIFBlZXJDb25u
ZWN0aW9ucyB3b3VsZCB1c2UKLS8vIGluZGVwZW5kZW50IFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJz
LgotLy8KLS8vIFJ0cFRyYW5zcG9ydHMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRyb2xs
ZXIgd2hlbiB0aGV5J3JlIGNyZWF0ZWQsIGJ5Ci0vLyBwYXNzaW5nIHRoZSBjb250cm9sbGVyIGlu
dG8gT3J0Y0ZhY3RvcnkncyByZWxldmFudCAiQ3JlYXRlUnRwVHJhbnNwb3J0IgotLy8gbWV0aG9k
LiBXaGVuIGEgdHJhbnNwb3J0IGlzIGRlc3Ryb3llZCwgaXQncyBhdXRvbWF0aWNhbGx5IGRpc2Fz
c29jaWF0ZWQuCi0vLyBHZXRUcmFuc3BvcnRzIHJldHVybnMgYWxsIGN1cnJlbnRseSBhc3NvY2lh
dGVkIHRyYW5zcG9ydHMuCi0vLwotLy8gVGhpcyBpcyB0aGUgUlRQIGVxdWl2YWxlbnQgb2YgIklj
ZVRyYW5zcG9ydENvbnRyb2xsZXIiIGluIE9SVEM7IFJ0cFRyYW5zcG9ydAotLy8gaXMgdG8gUnRw
VHJhbnNwb3J0Q29udHJvbGxlciBhcyBJY2VUcmFuc3BvcnQgaXMgdG8gSWNlVHJhbnNwb3J0Q29u
dHJvbGxlci4KLWNsYXNzIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UgewotIHB1Ymxp
YzoKLSAgdmlydHVhbCB+UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZSgpIHt9Ci0KLSAg
Ly8gUmV0dXJucyBhbGwgdHJhbnNwb3J0cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250cm9sbGVy
IChzZWUgZXhwbGFuYXRpb24KLSAgLy8gYWJvdmUpLiBObyBvcmRlcmluZyBpcyBndWFyYW50ZWVk
LgotICB2aXJ0dWFsIHN0ZDo6dmVjdG9yPFJ0cFRyYW5zcG9ydEludGVyZmFjZSo+IEdldFRyYW5z
cG9ydHMoKSBjb25zdCA9IDA7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIE9ubHkgZm9yIGludGVybmFs
IHVzZS4gUmV0dXJucyBhIHBvaW50ZXIgdG8gYW4gaW50ZXJuYWwgaW50ZXJmYWNlLCBmb3IgdXNl
Ci0gIC8vIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4KLSAgdmlydHVhbCBSdHBUcmFuc3BvcnRDb250
cm9sbGVyQWRhcHRlciogR2V0SW50ZXJuYWwoKSA9IDA7Ci0KLSAgLy8gQ2xhc3NlcyB0aGF0IGNh
biB1c2UgdGhpcyBpbnRlcm5hbCBpbnRlcmZhY2UuCi0gIGZyaWVuZCBjbGFzcyBPcnRjRmFjdG9y
eTsKLSAgZnJpZW5kIGNsYXNzIFJ0cFRyYW5zcG9ydEFkYXB0ZXI7Ci19OwotCi19ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVBJX09SVENfUlRQVFJBTlNQT1JUQ09OVFJPTExF
UklOVEVSRkFDRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL29ydGMvcnRwdHJhbnNwb3J0aW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9ydHB0cmFuc3BvcnRpbnRl
cmZhY2UuaAppbmRleCBiMGQzMGU4NTYwZTI3YTUyOGJhNjdhNTM1NGFmYjMyZGEwYTJkYjY0Li40
YjlkMTYxNThmNjVhMDQ4MWRjZjc2NTNmNmI0MmY0ZGU5ZDgyZWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9ydHB0cmFuc3Bv
cnRpbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvb3J0Yy9ydHB0cmFuc3BvcnRpbnRlcmZhY2UuaApAQCAtMTgsNyArMTgsNiBAQAog
I2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgogI2luY2x1ZGUgImFwaS9ydHBfaGVhZGVycy5oIgog
I2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgi
ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRj
L3Nlc3Npb25kZXNjcmlwdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTA3ODg4NGVjYjQ1YjIwNzg5NjUzNGE4OTAyOGExMTU3NTNmOWU3Ny4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9zZXNzaW9uZGVzY3JpcHRp
b24uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAy
MDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwot
Ci0jaW5jbHVkZSAiYXBpL29ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgiCi0KLW5hbWVzcGFjZSB3
ZWJydGMge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYmFhMjdkNmZmYzAwMTE0NTAzMjZlNTFjMTdj
OGIxN2RmOWY5NTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvc2Vz
c2lvbmRlc2NyaXB0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KLSAqLwotCi0jaWZuZGVmIEFQSV9PUlRDX1NFU1NJT05ERVNDUklQVElPTl9IXwotI2Rl
ZmluZSBBUElfT1JUQ19TRVNTSU9OREVTQ1JJUFRJT05fSF8KLQotI2luY2x1ZGUgPHN0cmluZz4K
LSNpbmNsdWRlIDx1dGlsaXR5PgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gQSBzdHJ1Y3R1
cmVkIHJlcHJlc2VudGF0aW9uIG9mIGFuIFNEUCBzZXNzaW9uIGRlc2NyaXB0aW9uLgotY2xhc3Mg
U2Vzc2lvbkRlc2NyaXB0aW9uIHsKLSBwdWJsaWM6Ci0gIFNlc3Npb25EZXNjcmlwdGlvbihpbnQ2
NF90IHNlc3Npb25faWQsIHN0ZDo6c3RyaW5nIHNlc3Npb25fdmVyc2lvbikKLSAgICAgIDogc2Vz
c2lvbl9pZF8oc2Vzc2lvbl9pZCksIHNlc3Npb25fdmVyc2lvbl8oc3RkOjptb3ZlKHNlc3Npb25f
dmVyc2lvbikpIHt9Ci0KLSAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ1NjYj
c2VjdGlvbi01LjIKLSAgLy8gbz08dXNlcm5hbWU+IDxzZXNzLWlkPiA8c2Vzcy12ZXJzaW9uPiA8
bmV0dHlwZT4gPGFkZHJ0eXBlPgotICAvLyAgIDx1bmljYXN0LWFkZHJlc3M+Ci0gIC8vIHNlc3Np
b25faWRfIGlzIHRoZSAic2Vzcy1pZCIgZmllbGQuCi0gIC8vIHNlc3Npb25fdmVyc2lvbl8gaXMg
dGhlICJzZXNzLXZlcnNpb24iIGZpZWxkLgotICBpbnQ2NF90IHNlc3Npb25faWQoKSB7IHJldHVy
biBzZXNzaW9uX2lkXzsgfQotICB2b2lkIHNldF9zZXNzaW9uX2lkKGludDY0X3Qgc2Vzc2lvbl9p
ZCkgeyBzZXNzaW9uX2lkXyA9IHNlc3Npb25faWQ7IH0KLQotICBjb25zdCBzdGQ6OnN0cmluZyYg
c2Vzc2lvbl92ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc2Vzc2lvbl92ZXJzaW9uXzsgfQotICB2
b2lkIHNldF9zZXNzaW9uX3ZlcnNpb24oc3RkOjpzdHJpbmcgc2Vzc2lvbl92ZXJzaW9uKSB7Ci0g
ICAgc2Vzc2lvbl92ZXJzaW9uXyA9IHN0ZDo6bW92ZShzZXNzaW9uX3ZlcnNpb24pOwotICB9Ci0K
LSBwcml2YXRlOgotICBpbnQ2NF90IHNlc3Npb25faWRfOwotICBzdGQ6OnN0cmluZyBzZXNzaW9u
X3ZlcnNpb25fOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIEFQ
SV9PUlRDX1NFU1NJT05ERVNDUklQVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L29ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlNDYxMWM2YzZiMmJmN2EwYmU0ZjVjOTIxNjZmNDA5MzRiMDVmNzA2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbl91
bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
ICovCi0KLSNpbmNsdWRlICJhcGkvb3J0Yy9zZXNzaW9uZGVzY3JpcHRpb24uaCIKLSNpbmNsdWRl
ICJ0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1jbGFzcyBTZXNzaW9uRGVz
Y3JpcHRpb25UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qge307Ci0KLVRFU1RfRihTZXNzaW9u
RGVzY3JpcHRpb25UZXN0LCBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24pIHsKLSAgU2Vzc2lvbkRl
c2NyaXB0aW9uIHMoLTEsICIwIik7Ci0gIEVYUEVDVF9FUSgtMSwgcy5zZXNzaW9uX2lkKCkpOwot
ICBFWFBFQ1RfRVEoIjAiLCBzLnNlc3Npb25fdmVyc2lvbigpKTsKLX0KLX0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9vcnRjL3VkcHRyYW5zcG9ydGludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvdWRwdHJhbnNwb3J0aW50ZXJmYWNl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNDZhMjVlOWRkZDBmNWVjYWZlMDA2
OWJjODYzZDAzMDhlZjJiODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29y
dGMvdWRwdHJhbnNwb3J0aW50ZXJmYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAot
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIEFQSV9PUlRDX1VEUFRSQU5TUE9SVElOVEVS
RkFDRV9IXwotI2RlZmluZSBBUElfT1JUQ19VRFBUUkFOU1BPUlRJTlRFUkZBQ0VfSF8KLQotI2lu
Y2x1ZGUgImFwaS9vcnRjL3BhY2tldHRyYW5zcG9ydGludGVyZmFjZS5oIgotI2luY2x1ZGUgImFw
aS9wcm94eS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKLQotbmFtZXNw
YWNlIHdlYnJ0YyB7Ci0KLS8vIEludGVyZmFjZSBmb3IgYSByYXcgVURQIHRyYW5zcG9ydCAobm90
IHVzaW5nIElDRSksIG1lYW5pbmcgYSBjb21iaW5hdGlvbiBvZgotLy8gYSBsb2NhbC9yZW1vdGUg
SVAgYWRkcmVzcy9wb3J0LgotLy8KLS8vIEFuIGluc3RhbmNlIGNhbiBiZSBpbnN0YW50aWF0ZWQg
dXNpbmcgT3J0Y0ZhY3RvcnkuCi0vLwotLy8gRWFjaCBpbnN0YW5jZSByZXNlcnZlcyBhIFVEUCBw
b3J0LCB3aGljaCB3aWxsIGJlIGZyZWVkIHdoZW4gdGhlCi0vLyBVZHBUcmFuc3BvcnRJbnRlcmZh
Y2UgZGVzdHJ1Y3RvciBpcyBjYWxsZWQuCi0vLwotLy8gQ2FsbGluZyBTZXRSZW1vdGVBZGRyZXNz
IHNldHMgdGhlIGRlc3RpbmF0aW9uIG9mIG91dGdvaW5nIHBhY2tldHM7IHdpdGhvdXQgYQotLy8g
ZGVzdGluYXRpb24sIHBhY2tldHMgY2FuJ3QgYmUgc2VudCwgYnV0IHRoZXkgY2FuIGJlIHJlY2Vp
dmVkLgotY2xhc3MgVWRwVHJhbnNwb3J0SW50ZXJmYWNlIDogcHVibGljIHZpcnR1YWwgUGFja2V0
VHJhbnNwb3J0SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC8vIEdldCB0aGUgYWRkcmVzcyBvZiB0
aGUgc29ja2V0IGFsbG9jYXRlZCBmb3IgdGhpcyB0cmFuc3BvcnQuCi0gIHZpcnR1YWwgcnRjOjpT
b2NrZXRBZGRyZXNzIEdldExvY2FsQWRkcmVzcygpIGNvbnN0ID0gMDsKLQotICAvLyBTZXRzIHRo
ZSBhZGRyZXNzIHRvIHdoaWNoIHBhY2tldHMgd2lsbCBiZSBkZWxpdmVyZWQuCi0gIC8vCi0gIC8v
IENhbGxpbmcgd2l0aCBhICJuaWwiIChkZWZhdWx0LWNvbnN0cnVjdGVkKSBhZGRyZXNzIGlzIGxl
Z2FsLCBhbmQgdW5zZXRzCi0gIC8vIGFueSBwcmV2aW91c2x5IHNldCBkZXN0aW5hdGlvbi4KLSAg
Ly8KLSAgLy8gSG93ZXZlciwgY2FsbGluZyB3aXRoIGFuIGluY29tcGxldGUgYWRkcmVzcyAocG9y
dCBvciBJUCBub3Qgc2V0KSB3aWxsCi0gIC8vIGZhaWwuCi0gIHZpcnR1YWwgYm9vbCBTZXRSZW1v
dGVBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgZGVzdCkgPSAwOwotICAvLyBTaW1w
bGUgZ2V0dGVyLiBJZiBuZXZlciBzZXQsIHJldHVybnMgbmlsIGFkZHJlc3MuCi0gIHZpcnR1YWwg
cnRjOjpTb2NrZXRBZGRyZXNzIEdldFJlbW90ZUFkZHJlc3MoKSBjb25zdCA9IDA7Ci19OwotCi19
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVBJX09SVENfVURQVFJBTlNQT1JU
SU5URVJGQUNFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2Uu
Y2MKaW5kZXggYjQxNDhkNzQ4MGFhYmU0NDNjYjk5ZTc0ZGY3NDJlMGQ1ODRhMTUwNy4uZjI5NTNi
NWIwYzI4YzYxMWZiMTBlZmJmODMwNmRlMjQ1ZTY3M2YyYiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJm
YWNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5jYwpAQCAtMTU5LDYgKzE1OSwxMSBAQCBSVENFcnJv
ciBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6U2V0Qml0cmF0ZSgKICAgcmV0dXJuIFNldEJpdHJh
dGUoYml0cmF0ZSk7CiB9CiAKK1BlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlv
blN0YXRlCitQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6cGVlcl9jb25uZWN0aW9uX3N0YXRlKCkg
eworICByZXR1cm4gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6
OmtOZXc7Cit9CisKIGJvb2wgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlN0YXJ0UnRjRXZlbnRM
b2cocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBtYXhfc2l6ZV9ieXRlcykgewogICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oCmluZGV4IDFj
MzJiNjk2OTJkMDBlNmVmYWI3ODJjNWJkYmExY2Q3YTgzMGUyYzguLjU0MTYxYjhkYTU5YjAyMjYw
ODNhNmFiZjk4Mjk2YWU4MzM5ZGY2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wZWVyY29ubmVj
dGlvbmludGVyZmFjZS5oCkBAIC02OSw3ICs2OSw2IEBACiAKICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgog
CiAjaW5jbHVkZSAiYXBpL2FzeW5jcmVzb2x2ZXJmYWN0b3J5LmgiCkBAIC03OCwxMCArNzcsMTEg
QEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgog
I2luY2x1ZGUgImFwaS9hdWRpb19vcHRpb25zLmgiCiAjaW5jbHVkZSAiYXBpL2NhbGwvY2FsbGZh
Y3RvcnlpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIK
ICNpbmNsdWRlICJhcGkvZGF0YWNoYW5uZWxpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvZHRt
ZnNlbmRlcmludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS9mZWNfY29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgImFwaS9qc2VwLmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJh
cGkvcnRjZXJyb3IuaCIKICNpbmNsdWRlICJhcGkvcnRjZXZlbnRsb2dvdXRwdXQuaCIKQEAgLTk0
LDcgKzk0LDYgQEAKICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L2JpdHJhdGVfc2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfY29udHJvbC5oIgogI2luY2x1ZGUgImFw
aS90dXJuY3VzdG9taXplci5oIgotI2luY2x1ZGUgImFwaS91bWFtZXRyaWNzLmgiCiAjaW5jbHVk
ZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfZmFjdG9yeV9pbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uZmlnLmgiCiAvLyBUT0RPKGJ1Z3Mud2Vi
cnRjLm9yZy82MzUzKTogY3JpY2tldDo6VmlkZW9DYXB0dXJlciBpcyBkZXByZWNhdGVkIGFuZCBz
aG91bGQKQEAgLTExNCw2ICsxMTMsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJl
c3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRj
X2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIGNsYXNzIFNTTElkZW50aXR5OwpAQCAtMTYw
LDcgKzE2MCw3IEBAIGVudW0gY2xhc3MgU2RwU2VtYW50aWNzIHsga1BsYW5CLCBrVW5pZmllZFBs
YW4gfTsKIAogY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZD
b3VudEludGVyZmFjZSB7CiAgcHVibGljOgotICAvLyBTZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3dlYnJ0Yy1wYy8jc3RhdGUtZGVmaW5pdGlvbnMKKyAgLy8gU2VlIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby93ZWJydGMtcGMvI2RvbS1ydGNzaWduYWxpbmdzdGF0ZQogICBlbnVtIFNpZ25hbGluZ1N0
YXRlIHsKICAgICBrU3RhYmxlLAogICAgIGtIYXZlTG9jYWxPZmZlciwKQEAgLTE3MCwxMiArMTcw
LDI0IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291
bnRJbnRlcmZhY2UgewogICAgIGtDbG9zZWQsCiAgIH07CiAKKyAgLy8gU2VlIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWJydGMtcGMvI2RvbS1ydGNpY2VnYXRoZXJpbmdzdGF0ZQogICBlbnVtIElj
ZUdhdGhlcmluZ1N0YXRlIHsKICAgICBrSWNlR2F0aGVyaW5nTmV3LAogICAgIGtJY2VHYXRoZXJp
bmdHYXRoZXJpbmcsCiAgICAga0ljZUdhdGhlcmluZ0NvbXBsZXRlCiAgIH07CiAKKyAgLy8gU2Vl
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvI2RvbS1ydGNwZWVyY29ubmVjdGlvbnN0
YXRlCisgIGVudW0gY2xhc3MgUGVlckNvbm5lY3Rpb25TdGF0ZSB7CisgICAga05ldywKKyAgICBr
Q29ubmVjdGluZywKKyAgICBrQ29ubmVjdGVkLAorICAgIGtEaXNjb25uZWN0ZWQsCisgICAga0Zh
aWxlZCwKKyAgICBrQ2xvc2VkLAorICB9OworCisgIC8vIFNlZSBodHRwczovL3czYy5naXRodWIu
aW8vd2VicnRjLXBjLyNkb20tcnRjaWNlY29ubmVjdGlvbnN0YXRlCiAgIGVudW0gSWNlQ29ubmVj
dGlvblN0YXRlIHsKICAgICBrSWNlQ29ubmVjdGlvbk5ldywKICAgICBrSWNlQ29ubmVjdGlvbkNo
ZWNraW5nLApAQCAtMjgyLDcgKzI5NCw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
IDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICAvLyBvcmdhbml6YXRpb24gb2Yg
dGhlIGltcGxlbWVudGF0aW9uLCB3aGljaCBpc24ndCBzdGFibGUuIFNvIHdlCiAgIC8vIG5lZWQg
Z2V0dGVycyBhbmQgc2V0dGVycyBhdCBsZWFzdCBmb3IgZmllbGRzIHdoaWNoIGFwcGxpY2F0aW9u
cwogICAvLyBhcmUgaW50ZXJlc3RlZCBpbi4KLSAgc3RydWN0IFJUQ0NvbmZpZ3VyYXRpb24gewor
ICBzdHJ1Y3QgUlRDX0VYUE9SVCBSVENDb25maWd1cmF0aW9uIHsKICAgICAvLyBUaGlzIHN0cnVj
dCBpcyBzdWJqZWN0IHRvIHJlb3JnYW5pemF0aW9uLCBib3RoIGZvciBuYW1pbmcKICAgICAvLyBj
b25zaXN0ZW5jeSwgYW5kIHRvIGdyb3VwIHNldHRpbmdzIHRvIG1hdGNoIHdoZXJlIHRoZXkgYXJl
IHVzZWQKICAgICAvLyBpbiB0aGUgaW1wbGVtZW50YXRpb24uIFRvIGRvIHRoYXQsIHdlIG5lZWQg
Z2V0dGVyIGFuZCBzZXR0ZXIKQEAgLTMyOCw2ICszNDAsMjIgQEAgY2xhc3MgUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgICAgICBtZWRp
YV9jb25maWcudmlkZW8uZXhwZXJpbWVudF9jcHVfbG9hZF9lc3RpbWF0b3IgPSBlbmFibGU7CiAg
ICAgfQogCisgICAgaW50IGF1ZGlvX3J0Y3BfcmVwb3J0X2ludGVydmFsX21zKCkgY29uc3Qgewor
ICAgICAgcmV0dXJuIG1lZGlhX2NvbmZpZy5hdWRpby5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tczsK
KyAgICB9CisgICAgdm9pZCBzZXRfYXVkaW9fcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMoaW50IGF1
ZGlvX3J0Y3BfcmVwb3J0X2ludGVydmFsX21zKSB7CisgICAgICBtZWRpYV9jb25maWcuYXVkaW8u
cnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPQorICAgICAgICAgIGF1ZGlvX3J0Y3BfcmVwb3J0X2lu
dGVydmFsX21zOworICAgIH0KKworICAgIGludCB2aWRlb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9t
cygpIGNvbnN0IHsKKyAgICAgIHJldHVybiBtZWRpYV9jb25maWcudmlkZW8ucnRjcF9yZXBvcnRf
aW50ZXJ2YWxfbXM7CisgICAgfQorICAgIHZvaWQgc2V0X3ZpZGVvX3J0Y3BfcmVwb3J0X2ludGVy
dmFsX21zKGludCB2aWRlb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcykgeworICAgICAgbWVkaWFf
Y29uZmlnLnZpZGVvLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0KKyAgICAgICAgICB2aWRlb19y
dGNwX3JlcG9ydF9pbnRlcnZhbF9tczsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgaW50IGtV
bmRlZmluZWQgPSAtMTsKICAgICAvLyBEZWZhdWx0IG1heGltdW0gbnVtYmVyIG9mIHBhY2tldHMg
aW4gdGhlIGF1ZGlvIGppdHRlciBidWZmZXIuCiAgICAgc3RhdGljIGNvbnN0IGludCBrQXVkaW9K
aXR0ZXJCdWZmZXJNYXhQYWNrZXRzID0gNTA7CkBAIC0zOTQsNiArNDIyLDcgQEAgY2xhc3MgUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAg
ICAgLy8gVXNlIG5ldyBjb21iaW5lZCBhdWRpby92aWRlbyBiYW5kd2lkdGggZXN0aW1hdGlvbj8K
ICAgICBhYnNsOjpvcHRpb25hbDxib29sPiBjb21iaW5lZF9hdWRpb192aWRlb19id2U7CiAKKyAg
ICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85ODkxKSAtIE1vdmUgdG8gY3J5cHRvX29wdGlvbnMK
ICAgICAvLyBDYW4gYmUgdXNlZCB0byBkaXNhYmxlIERUTFMtU1JUUC4gVGhpcyBzaG91bGQgbmV2
ZXIgYmUgZG9uZSwgYnV0IGNhbiBiZQogICAgIC8vIHVzZWZ1bCBmb3IgdGVzdGluZyBwdXJwb3Nl
cywgZm9yIGV4YW1wbGUgaW4gc2V0dGluZyB1cCBhIGxvb3BiYWNrIGNhbGwKICAgICAvLyB3aXRo
IGEgc2luZ2xlIFBlZXJDb25uZWN0aW9uLgpAQCAtNDIxLDYgKzQ1MCw5IEBAIGNsYXNzIFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICAg
IC8vIGlmIGl0IGZhbGxzIGJlaGluZC4KICAgICBib29sIGF1ZGlvX2ppdHRlcl9idWZmZXJfZmFz
dF9hY2NlbGVyYXRlID0gZmFsc2U7CiAKKyAgICAvLyBUaGUgbWluaW11bSBkZWxheSBpbiBtaWxs
aXNlY29uZHMgZm9yIHRoZSBhdWRpbyBqaXR0ZXIgYnVmZmVyLgorICAgIGludCBhdWRpb19qaXR0
ZXJfYnVmZmVyX21pbl9kZWxheV9tcyA9IDA7CisKICAgICAvLyBUaW1lb3V0IGluIG1pbGxpc2Vj
b25kcyBiZWZvcmUgYW4gSUNFIGNhbmRpZGF0ZSBwYWlyIGlzIGNvbnNpZGVyZWQgdG8gYmUKICAg
ICAvLyAibm90IHJlY2VpdmluZyIsIGFmdGVyIHdoaWNoIGEgbG93ZXIgcHJpb3JpdHkgY2FuZGlk
YXRlIHBhaXIgbWF5IGJlCiAgICAgLy8gc2VsZWN0ZWQuCkBAIC01NTYsNiArNTg4LDcgQEAgY2xh
c3MgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFj
ZSB7CiAgICAgLy8gRm9yIGFsbCBvdGhlciB1c2Vycywgc3BlY2lmeSBrVW5pZmllZFBsYW4uCiAg
ICAgU2RwU2VtYW50aWNzIHNkcF9zZW1hbnRpY3MgPSBTZHBTZW1hbnRpY3M6OmtQbGFuQjsKIAor
ICAgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk4OTEpIC0gTW92ZSB0byBjcnlwdG9fb3B0aW9u
cyBvciByZW1vdmUuCiAgICAgLy8gQWN0aXZlbHkgcmVzZXQgdGhlIFNSVFAgcGFyYW1ldGVycyB3
aGVuZXZlciB0aGUgRFRMUyB0cmFuc3BvcnRzCiAgICAgLy8gdW5kZXJuZWF0aCBhcmUgcmVzZXQg
Zm9yIGV2ZXJ5IG9mZmVyL2Fuc3dlciBuZWdvdGlhdGlvbi4KICAgICAvLyBUaGlzIGlzIG9ubHkg
aW50ZW5kZWQgdG8gYmUgYSB3b3JrYXJvdW5kIGZvciBjcmJ1Zy5jb20vODM1OTU4CkBAIC01NjMs
NiArNTk2LDM0IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6
UmVmQ291bnRJbnRlcmZhY2UgewogICAgIC8vIGNvcnJlY3RseS4gVGhpcyBmbGFnIHdpbGwgYmUg
ZGVwcmVjYXRlZCBzb29uLiBEbyBub3QgcmVseSBvbiBpdC4KICAgICBib29sIGFjdGl2ZV9yZXNl
dF9zcnRwX3BhcmFtcyA9IGZhbHNlOwogCisgICAgLy8gSWYgTWVkaWFUcmFuc3BvcnRGYWN0b3J5
IGlzIHByb3ZpZGVkIGluIFBlZXJDb25uZWN0aW9uRmFjdG9yeSwgdGhpcyBmbGFnCisgICAgLy8g
aW5mb3JtcyBQZWVyQ29ubmVjdGlvbiB0aGF0IGl0IHNob3VsZCB1c2UgdGhlIE1lZGlhVHJhbnNw
b3J0SW50ZXJmYWNlLgorICAgIC8vIEl0J3MgaW52YWxpZCB0byBzZXQgaXQgdG8gfHRydWV8IGlm
IHRoZSBNZWRpYVRyYW5zcG9ydEZhY3Rvcnkgd2Fzbid0CisgICAgLy8gcHJvdmlkZWQuCisgICAg
Ym9vbCB1c2VfbWVkaWFfdHJhbnNwb3J0ID0gZmFsc2U7CisKKyAgICAvLyBJZiBNZWRpYVRyYW5z
cG9ydEZhY3RvcnkgaXMgcHJvdmlkZWQgaW4gUGVlckNvbm5lY3Rpb25GYWN0b3J5LCB0aGlzIGZs
YWcKKyAgICAvLyBpbmZvcm1zIFBlZXJDb25uZWN0aW9uIHRoYXQgaXQgc2hvdWxkIHVzZSB0aGUg
TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UgZm9yCisgICAgLy8gZGF0YSBjaGFubmVscy4gIEl0J3Mg
aW52YWxpZCB0byBzZXQgaXQgdG8gfHRydWV8IGlmIHRoZQorICAgIC8vIE1lZGlhVHJhbnNwb3J0
RmFjdG9yeSB3YXNuJ3QgcHJvdmlkZWQuICBEYXRhIGNoYW5uZWxzIG92ZXIgbWVkaWEKKyAgICAv
LyB0cmFuc3BvcnQgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggUlRQIG9yIFNDVFAgZGF0YSBjaGFu
bmVscy4gIFNldHRpbmcKKyAgICAvLyBib3RoIHx1c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRh
X2NoYW5uZWxzfCBhbmQKKyAgICAvLyB8ZW5hYmxlX3J0cF9kYXRhX2NoYW5uZWx8IGlzIGludmFs
aWQuCisgICAgYm9vbCB1c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gZmFs
c2U7CisKKyAgICAvLyBEZWZpbmVzIGFkdmFuY2VkIG9wdGlvbmFsIGNyeXB0b2dyYXBoaWMgc2V0
dGluZ3MgcmVsYXRlZCB0byBTUlRQIGFuZAorICAgIC8vIGZyYW1lIGVuY3J5cHRpb24gZm9yIG5h
dGl2ZSBXZWJSVEMuIFNldHRpbmcgdGhpcyB3aWxsIG92ZXJ3cml0ZSBhbnkKKyAgICAvLyBzZXR0
aW5ncyBzZXQgaW4gUGVlckNvbm5lY3Rpb25GYWN0b3J5ICh3aGljaCBpcyBkZXByZWNhdGVkKS4K
KyAgICBhYnNsOjpvcHRpb25hbDxDcnlwdG9PcHRpb25zPiBjcnlwdG9fb3B0aW9uczsKKworICAg
IC8vIENvbmZpZ3VyZSBpZiB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgU0RQIGF0dHJpYnV0ZSBleHRt
YXAtYWxsb3ctbWl4ZWQgaW4KKyAgICAvLyBvdXIgb2ZmZXIuIEFsdGhvdWdoIHdlIGN1cnJlbnRs
eSBkbyBzdXBwb3J0IHRoaXMsIGl0J3Mgbm90IGluY2x1ZGVkIGluCisgICAgLy8gb3VyIG9mZmVy
IGJ5IGRlZmF1bHQgZHVlIHRvIGEgcHJldmlvdXMgYnVnIHRoYXQgY2F1c2VkIHRoZSBTRFAgcGFy
c2VyIHRvCisgICAgLy8gYWJvcnQgcGFyc2luZyBpZiB0aGlzIGF0dHJpYnV0ZSB3YXMgcHJlc2Vu
dC4gVGhpcyBpcyBmaXhlZCBpbiBDaHJvbWUgNzEuCisgICAgLy8gVE9ETyh3ZWJydGM6OTk4NSk6
IENoYW5nZSBkZWZhdWx0IHRvIHRydWUgb25jZSBzdWZmaWNpZW50IHRpbWUgaGFzCisgICAgLy8g
cGFzc2VkLgorICAgIGJvb2wgb2ZmZXJfZXh0bWFwX2FsbG93X21peGVkID0gZmFsc2U7CisKICAg
ICAvLwogICAgIC8vIERvbid0IGZvcmdldCB0byB1cGRhdGUgb3BlcmF0b3I9PSBpZiBhZGRpbmcg
c29tZXRoaW5nLgogICAgIC8vCkBAIC05NzIsMTEgKzEwMzMsMTMgQEAgY2xhc3MgUGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgIHZpcnR1
YWwgU2lnbmFsaW5nU3RhdGUgc2lnbmFsaW5nX3N0YXRlKCkgPSAwOwogCiAgIC8vIFJldHVybnMg
dGhlIGFnZ3JlZ2F0ZSBzdGF0ZSBvZiBhbGwgSUNFICphbmQqIERUTFMgdHJhbnNwb3J0cy4KLSAg
Ly8gVE9ETyhkZWFkYmVlZik6IEltcGxlbWVudCAiUGVlckNvbm5lY3Rpb25TdGF0ZSIgYWNjb3Jk
aW5nIHRvIHRoZSBzdGFuZGFyZCwKLSAgLy8gdG8gYWdncmVnYXRlIElDRStEVExTIHN0YXRlLCBh
bmQgY2hhbmdlIHRoZSBzY29wZSBvZiBJY2VDb25uZWN0aW9uU3RhdGUgdG8KLSAgLy8gYmUganVz
dCB0aGUgSUNFIGxheWVyLiBTZWU6IGNyYnVnLmNvbS93ZWJydGMvNjE0NQorICAvLyBUT0RPKGpv
bmFzb2xzc29uKTogUmVwbGFjZSB3aXRoIHN0YW5kYXJkaXplZF9pY2VfY29ubmVjdGlvbl9zdGF0
ZSBvbmNlIGl0CisgIC8vIGlzIHJlYWR5LCBzZWUgY3JidWcuY29tL3dlYnJ0Yy82MTQ1CiAgIHZp
cnR1YWwgSWNlQ29ubmVjdGlvblN0YXRlIGljZV9jb25uZWN0aW9uX3N0YXRlKCkgPSAwOwogCisg
IC8vIFJldHVybnMgdGhlIGFnZ3JlZ2F0ZWQgc3RhdGUgb2YgYWxsIElDRSBhbmQgRFRMUyB0cmFu
c3BvcnRzLgorICB2aXJ0dWFsIFBlZXJDb25uZWN0aW9uU3RhdGUgcGVlcl9jb25uZWN0aW9uX3N0
YXRlKCk7CisKICAgdmlydHVhbCBJY2VHYXRoZXJpbmdTdGF0ZSBpY2VfZ2F0aGVyaW5nX3N0YXRl
KCkgPSAwOwogCiAgIC8vIFN0YXJ0cyBSdGNFdmVudExvZyB1c2luZyBleGlzdGluZyBmaWxlLiBU
YWtlcyBvd25lcnNoaXAgb2YgfGZpbGV8IGFuZApAQCAtMTA0NSw2ICsxMTA4LDEwIEBAIGNsYXNz
IFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgewogICB2aXJ0dWFsIHZvaWQgT25JY2VDb25uZWN0aW9u
Q2hhbmdlKAogICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0
ZSBuZXdfc3RhdGUpID0gMDsKIAorICAvLyBDYWxsZWQgYW55IHRpbWUgdGhlIFBlZXJDb25uZWN0
aW9uU3RhdGUgY2hhbmdlcy4KKyAgdmlydHVhbCB2b2lkIE9uQ29ubmVjdGlvbkNoYW5nZSgKKyAg
ICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0
ZSkge30KKwogICAvLyBDYWxsZWQgYW55IHRpbWUgdGhlIEljZUdhdGhlcmluZ1N0YXRlIGNoYW5n
ZXMuCiAgIHZpcnR1YWwgdm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZSgKICAgICAgIFBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0ZSBuZXdfc3RhdGUpID0gMDsKQEAgLTEx
NTYsNiArMTIyMyw3IEBAIHN0cnVjdCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlEZXBlbmRlbmNpZXMg
ZmluYWwgewogICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dGYWN0b3J5SW50ZXJmYWNlPiBl
dmVudF9sb2dfZmFjdG9yeTsKICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXJGYWN0b3J5
SW50ZXJmYWNlPiBmZWNfY29udHJvbGxlcl9mYWN0b3J5OwogICBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlPiBuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9y
eTsKKyAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gbWVkaWFfdHJhbnNw
b3J0X2ZhY3Rvcnk7CiB9OwogCiAvLyBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UgaXMg
dGhlIGZhY3RvcnkgaW50ZXJmYWNlIHVzZWQgZm9yIGNyZWF0aW5nCkBAIC0xMTc1LDcgKzEyNDMs
NyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UgOiBwdWJsaWMgcnRjOjpS
ZWZDb3VudEludGVyZmFjZSB7CiAgcHVibGljOgogICBjbGFzcyBPcHRpb25zIHsKICAgIHB1Ymxp
YzoKLSAgICBPcHRpb25zKCkgOiBjcnlwdG9fb3B0aW9ucyhydGM6OkNyeXB0b09wdGlvbnM6Ok5v
R2NtKCkpIHt9CisgICAgT3B0aW9ucygpIHt9CiAKICAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgY3Jl
YXRlZCBQZWVyQ29ubmVjdGlvbnMgd29uJ3QgZW5mb3JjZSBhbnkgU1JUUAogICAgIC8vIHJlcXVp
cmVtZW50LCBhbGxvd2luZyB1bnNlY3VyZWQgbWVkaWEuIFNob3VsZCBvbmx5IGJlIHVzZWQgZm9y
CkBAIC0xMjA0LDcgKzEyNzIsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2UgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgICAgcnRjOjpTU0xQcm90b2Nv
bFZlcnNpb24gc3NsX21heF92ZXJzaW9uID0gcnRjOjpTU0xfUFJPVE9DT0xfRFRMU18xMjsKIAog
ICAgIC8vIFNldHMgY3J5cHRvIHJlbGF0ZWQgb3B0aW9ucywgZS5nLiBlbmFibGVkIGNpcGhlciBz
dWl0ZXMuCi0gICAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zOworICAgIENyeXB0
b09wdGlvbnMgY3J5cHRvX29wdGlvbnMgPSBDcnlwdG9PcHRpb25zOjpOb0djbSgpOwogICB9Owog
CiAgIC8vIFNldCB0aGUgb3B0aW9ucyB0byBiZSB1c2VkIGZvciBzdWJzZXF1ZW50bHkgY3JlYXRl
ZCBQZWVyQ29ubmVjdGlvbnMuCkBAIC0xMzA3LDEzNyArMTM3NSw2IEBAIGNsYXNzIFBlZXJDb25u
ZWN0aW9uRmFjdG9yeUludGVyZmFjZSA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsK
ICAgflBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSgpIG92ZXJyaWRlID0gZGVmYXVsdDsK
IH07CiAKLSNpZiBkZWZpbmVkKFVTRV9CVUlMVElOX1NXX0NPREVDUykKLS8vIENyZWF0ZSBhIG5l
dyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UuCi0vLwotLy8gVGhp
cyBtZXRob2QgcmVsaWVzIG9uIHRoZSB0aHJlYWQgaXQncyBjYWxsZWQgb24gYXMgdGhlICJzaWdu
YWxpbmcgdGhyZWFkIgotLy8gZm9yIHRoZSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkgaXQgY3JlYXRl
cy4KLS8vCi0vLyBBcyBzdWNoLCBpZiB0aGUgY3VycmVudCB0aHJlYWQgaXMgbm90IGFscmVhZHkg
cnVubmluZyBhbiBydGM6OlRocmVhZCBtZXNzYWdlCi0vLyBsb29wLCBhbiBhcHBsaWNhdGlvbiB1
c2luZyB0aGlzIG1ldGhvZCBtdXN0IGV2ZW50dWFsbHkgZWl0aGVyIGNhbGwKLS8vIHJ0Yzo6VGhy
ZWFkOjpDdXJyZW50KCktPlJ1bigpLCBvciBjYWxsCi0vLyBydGM6OlRocmVhZDo6Q3VycmVudCgp
LT5Qcm9jZXNzTWVzc2FnZXMoKSB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uJ3Mgb3duCi0vLyBtZXNz
YWdlIGxvb3AuCi1ydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJm
YWNlPiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCi0gICAgcnRjOjpzY29wZWRfcmVmcHRy
PEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KTsK
LQotLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVy
ZmFjZS4KLS8vCi0vLyB8bmV0d29ya190aHJlYWR8LCB8d29ya2VyX3RocmVhZHwgYW5kIHxzaWdu
YWxpbmdfdGhyZWFkfCBhcmUKLS8vIHRoZSBvbmx5IG1hbmRhdG9yeSBwYXJhbWV0ZXJzLgotLy8K
LS8vIElmIG5vbi1udWxsLCBhIHJlZmVyZW5jZSBpcyBhZGRlZCB0byB8ZGVmYXVsdF9hZG18LCBh
bmQgb3duZXJzaGlwIG9mCi0vLyB8dmlkZW9fZW5jb2Rlcl9mYWN0b3J5fCBhbmQgfHZpZGVvX2Rl
Y29kZXJfZmFjdG9yeXwgaXMgdHJhbnNmZXJyZWQgdG8gdGhlCi0vLyByZXR1cm5lZCBmYWN0b3J5
LgotLy8gVE9ETyhkZWFkYmVlZik6IFVzZSBydGM6OnNjb3BlZF9yZWZwdHI8PiBhbmQgc3RkOjp1
bmlxdWVfcHRyPD4gdG8gbWFrZSB0aGlzCi0vLyBvd25lcnNoaXAgdHJhbnNmZXIgYW5kIHJlZiBj
b3VudGluZyBtb3JlIG9idmlvdXMuCi1ydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25G
YWN0b3J5SW50ZXJmYWNlPiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCi0gICAgcnRjOjpU
aHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAot
ICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgIEF1ZGlvRGV2aWNlTW9kdWxl
KiBkZWZhdWx0X2FkbSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9y
eT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0Rl
Y29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRj
VmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6
OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSk7Ci0KLS8v
IENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2Ug
d2l0aCBvcHRpb25hbAotLy8gZXh0ZXJuYWwgYXVkaW8gbWl4ZWQgYW5kIGF1ZGlvIHByb2Nlc3Np
bmcgbW9kdWxlcy4KLS8vCi0vLyBJZiB8YXVkaW9fbWl4ZXJ8IGlzIG51bGwsIGFuIGludGVybmFs
IGF1ZGlvIG1peGVyIHdpbGwgYmUgY3JlYXRlZCBhbmQgdXNlZC4KLS8vIElmIHxhdWRpb19wcm9j
ZXNzaW5nfCBpcyBudWxsLCBhbiBpbnRlcm5hbCBhdWRpbyBwcm9jZXNzaW5nIG1vZHVsZSB3aWxs
IGJlCi0vLyBjcmVhdGVkIGFuZCB1c2VkLgotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0
aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVh
ZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBBdWRpb0RldmljZU1v
ZHVsZSogZGVmYXVsdF9hZG0sCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZh
Y3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6Oldl
YlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBjcmlj
a2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCi0g
ICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAotICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcpOwotCi0vLyBD
cmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHdp
dGggb3B0aW9uYWwKLS8vIGV4dGVybmFsIGF1ZGlvIG1peGVyLCBhdWRpbyBwcm9jZXNzaW5nLCBh
bmQgZmVjIGNvbnRyb2xsZXIgbW9kdWxlcy4KLS8vCi0vLyBJZiB8YXVkaW9fbWl4ZXJ8IGlzIG51
bGwsIGFuIGludGVybmFsIGF1ZGlvIG1peGVyIHdpbGwgYmUgY3JlYXRlZCBhbmQgdXNlZC4KLS8v
IElmIHxhdWRpb19wcm9jZXNzaW5nfCBpcyBudWxsLCBhbiBpbnRlcm5hbCBhdWRpbyBwcm9jZXNz
aW5nIG1vZHVsZSB3aWxsIGJlCi0vLyBjcmVhdGVkIGFuZCB1c2VkLgotLy8gSWYgfGZlY19jb250
cm9sbGVyX2ZhY3Rvcnl8IGlzIG51bGwsIGFuIGludGVybmFsIGZlYyBjb250cm9sbGVyIG1vZHVs
ZSB3aWxsCi0vLyBiZSBjcmVhdGVkIGFuZCB1c2VkLgotLy8gSWYgfG5ldHdvcmtfY29udHJvbGxl
cl9mYWN0b3J5fCBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSB1c2VkIGlmIGVuYWJsZWQgdmlhCi0v
LyBmaWVsZCB0cmlhbC4KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJ
bnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICBydGM6OlRocmVhZCog
bmV0d29ya190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgcnRj
OjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1
bHRfYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRp
b19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZh
Y3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0Vu
Y29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRj
VmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhlciwKLSAgICBydGM6OnNjb3BlZF9yZWZw
dHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nLAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxGZWNDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4gZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSwK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlPgot
ICAgICAgICBuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeSA9IG51bGxwdHIpOwotI2VuZGlmCi0K
LS8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2Ugd2l0aCBvcHRpb25hbCB2aWRlbwotLy8gY29kZWMgZmFjdG9yaWVzLiBUaGVzZSB2aWRlbyBm
YWN0b3JpZXMgcmVwcmVzZW50cyBhbGwgdmlkZW8gY29kZWNzLCBpLmUuIG5vCi0vLyBleHRyYSBp
bnRlcm5hbCB2aWRlbyBjb2RlY3Mgd2lsbCBiZSBhZGRlZC4KLS8vIFdoZW4gYnVpbGRpbmcgV2Vi
UlRDIHdpdGggcnRjX3VzZV9idWlsdGluX3N3X2NvZGVjcyA9IGZhbHNlLCB0aGlzIGlzIHRoZQot
Ly8gb25seSBhdmFpbGFibGUgQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5IG92ZXJsb2FkLgot
cnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRl
UGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwK
LSAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFs
aW5nX3RocmVhZCwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZXZpY2VNb2R1bGU+IGRl
ZmF1bHRfYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBh
dWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2Rl
ckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Vmlk
ZW9FbmNvZGVyRmFjdG9yeT4gdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAotICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcpOwotCi0jaWYgZGVmaW5l
ZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCi0vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVl
ckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHdpdGggZXh0ZXJuYWwgYXVkaW8KLS8vIG1peGVy
LgotLy8KLS8vIElmIHxhdWRpb19taXhlcnwgaXMgbnVsbCwgYW4gaW50ZXJuYWwgYXVkaW8gbWl4
ZXIgd2lsbCBiZSBjcmVhdGVkIGFuZCB1c2VkLgotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25u
ZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KLUNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeVdpdGhB
dWRpb01peGVyKAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRo
cmVhZCogd29ya2VyX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwK
LSAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCi0gICAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJf
ZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19k
ZWNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlv
X21peGVyKTsKLQotLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25uZWN0aW9uRmFj
dG9yeUludGVyZmFjZS4KLS8vIFNhbWUgdGhyZWFkIGlzIHVzZWQgYXMgd29ya2VyIGFuZCBuZXR3
b3JrIHRocmVhZC4KLWlubGluZSBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0
b3J5SW50ZXJmYWNlPgotQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgIHJ0Yzo6VGhy
ZWFkKiB3b3JrZXJfYW5kX25ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxp
bmdfdGhyZWFkLAotICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwKLSAgICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rv
cnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSkgewotICByZXR1cm4gQ3JlYXRlUGVlckNvbm5lY3Rp
b25GYWN0b3J5KAotICAgICAgd29ya2VyX2FuZF9uZXR3b3JrX3RocmVhZCwgd29ya2VyX2FuZF9u
ZXR3b3JrX3RocmVhZCwgc2lnbmFsaW5nX3RocmVhZCwKLSAgICAgIGRlZmF1bHRfYWRtLCBhdWRp
b19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICAgIHZpZGVvX2Vu
Y29kZXJfZmFjdG9yeSwgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KTsKLX0KLSNlbmRpZgotCiAvLyBU
aGlzIGlzIGEgbG93ZXItbGV2ZWwgdmVyc2lvbiBvZiB0aGUgQ3JlYXRlUGVlckNvbm5lY3Rpb25G
YWN0b3J5IGZ1bmN0aW9ucwogLy8gYWJvdmUuIEl0J3MgaW1wbGVtZW50ZWQgaW4gdGhlICJwZWVy
Y29ubmVjdGlvbiIgYnVpbGQgdGFyZ2V0LCB3aGVyZWFzIHRoZQogLy8gYWJvdmUgbWV0aG9kcyBh
cmUgb25seSBpbXBsZW1lbnRlZCBpbiB0aGUgYnJvYWRlciAibGliamluZ2xlX3BlZXJjb25uZWN0
aW9uIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3Byb3h5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3Byb3h5LmNjCmluZGV4IGM4NmJkZGZhOGIxYTk0NmQwMTBjM2VmOTJlN2VmYjQwZGY4
ODc3ZjAuLmU2NjgyODViYTI5YmE2MWQzYTcyNzU5OTBkZWE4OTBmNzZkMGUyN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wcm94eS5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcHJv
eHkuY2MKQEAgLTE0LDcgKzE0LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgaW50
ZXJuYWwgewogCiBTeW5jaHJvbm91c01ldGhvZENhbGw6OlN5bmNocm9ub3VzTWV0aG9kQ2FsbChy
dGM6Ok1lc3NhZ2VIYW5kbGVyKiBwcm94eSkKLSAgICA6IGVfKCksIHByb3h5Xyhwcm94eSkge30K
KyAgICA6IHByb3h5Xyhwcm94eSkge30KIAogU3luY2hyb25vdXNNZXRob2RDYWxsOjp+U3luY2hy
b25vdXNNZXRob2RDYWxsKCkgPSBkZWZhdWx0OwogCkBAIC0yMywxNSArMjMsMTQgQEAgdm9pZCBT
eW5jaHJvbm91c01ldGhvZENhbGw6Okludm9rZShjb25zdCBydGM6OkxvY2F0aW9uJiBwb3N0ZWRf
ZnJvbSwKICAgaWYgKHQtPklzQ3VycmVudCgpKSB7CiAgICAgcHJveHlfLT5Pbk1lc3NhZ2UobnVs
bHB0cik7CiAgIH0gZWxzZSB7Ci0gICAgZV8ucmVzZXQobmV3IHJ0Yzo6RXZlbnQoZmFsc2UsIGZh
bHNlKSk7CiAgICAgdC0+UG9zdChwb3N0ZWRfZnJvbSwgdGhpcywgMCk7Ci0gICAgZV8tPldhaXQo
cnRjOjpFdmVudDo6a0ZvcmV2ZXIpOworICAgIGVfLldhaXQocnRjOjpFdmVudDo6a0ZvcmV2ZXIp
OwogICB9CiB9CiAKIHZvaWQgU3luY2hyb25vdXNNZXRob2RDYWxsOjpPbk1lc3NhZ2UocnRjOjpN
ZXNzYWdlKikgewogICBwcm94eV8tPk9uTWVzc2FnZShudWxscHRyKTsKLSAgZV8tPlNldCgpOwor
ICBlXy5TZXQoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcHJveHkuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wcm94eS5oCmluZGV4
IGM4OTYyZWZlZDdjOGQyYzkwM2VlYmU3MGVjMGY1NTA5OTI3ZjE5N2UuLjk5MTYwNTE3ZGVlYmQ3
OWNkMzNkMzcxZmViZTIxYzRhNzcxMGNhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wcm94eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wcm94eS5oCkBAIC0xNDMsNyArMTQzLDcg
QEAgY2xhc3MgU3luY2hyb25vdXNNZXRob2RDYWxsIDogcHVibGljIHJ0Yzo6TWVzc2FnZURhdGEs
CiAgcHJpdmF0ZToKICAgdm9pZCBPbk1lc3NhZ2UocnRjOjpNZXNzYWdlKikgb3ZlcnJpZGU7CiAK
LSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6RXZlbnQ+IGVfOworICBydGM6OkV2ZW50IGVfOwogICBy
dGM6Ok1lc3NhZ2VIYW5kbGVyKiBwcm94eV87CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwX2hlYWRlcnMuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwX2hlYWRlcnMuY2MK
aW5kZXggZGE3ZjFlYTlmZDQwMDJmNzcyMzQyMzkwNTgxMTZlOWQ4NjdiZmRiYS4uYmY5NzNiNmZl
NTc3MWQ0MjM2MWFkYjgzNjliMzBjZDliMmIzNzJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cF9oZWFkZXJzLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBfaGVhZGVycy5j
YwpAQCAtMTAsMTQgKzEwLDYgQEAKIAogI2luY2x1ZGUgImFwaS9ydHBfaGVhZGVycy5oIgogCi0j
aW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGxpbWl0
cz4KLSNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLQotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCi0KIG5hbWVzcGFjZSB3ZWJydGMg
ewogCiBSVFBIZWFkZXJFeHRlbnNpb246OlJUUEhlYWRlckV4dGVuc2lvbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwX2hlYWRl
cnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBf
aGVhZGVycy5oCmluZGV4IDQxZjM5ODg4YjgwODFhNmJmYjkzNTkwN2YzYjJjZDRhNGQ3ODNkYmEu
LmM3NjY4OTliOWZkODhmNGEyYzJlZTkwOTBmN2Y4Y2I2OWU5NDYyYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBfaGVhZGVycy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBf
aGVhZGVycy5oCkBAIC0xMiwyMCArMTIsMTcgQEAKICNkZWZpbmUgQVBJX1JUUF9IRUFERVJTX0hf
CiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxz
dHJpbmcuaD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVk
ZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisj
aW5jbHVkZSAiYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3Zp
ZGVvX2NvbnRlbnRfdHlwZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZV9tYXJr
aW5nLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3JvdGF0aW9uLmgiCiAjaW5jbHVkZSAi
YXBpL3ZpZGVvL3ZpZGVvX3RpbWluZy5oIgotCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAv
LyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApA
QCAtMTMxLDYgKzEyOCw4IEBAIHN0cnVjdCBSVFBIZWFkZXJFeHRlbnNpb24gewogICAvLyBGb3Ig
aWRlbnRpZnlpbmcgdGhlIG1lZGlhIHNlY3Rpb24gdXNlZCB0byBpbnRlcnByZXQgdGhpcyBSVFAg
cGFja2V0LiBTZWUKICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYt
bW11c2ljLXNkcC1idW5kbGUtbmVnb3RpYXRpb24tMzgKICAgTWlkIG1pZDsKKworICBhYnNsOjpv
cHRpb25hbDxDb2xvclNwYWNlPiBjb2xvcl9zcGFjZTsKIH07CiAKIHN0cnVjdCBSVFBIZWFkZXIg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3J0cHBhcmFtZXRlcnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvcnRwcGFyYW1ldGVycy5jYwppbmRleCA5OGNlZDliM2VhZDM1YmVkOGY3Yzli
MzdkNGQyMTBjNWFlYTZiZmIwLi4wNjNkMTA2YTAwYTU5MDE0OTJhYjE3YWE4YTBmYWQwMTU3MWVm
ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvcnRwcGFyYW1ldGVycy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvcnRwcGFyYW1ldGVycy5jYwpAQCAtMTIsNyArMTIsNyBAQAogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRw
cGFyYW1ldGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3J0cHBhcmFtZXRlcnMuaAppbmRleCA2NzhhYzAyYzRiN2RhN2RjNWEzYmNhYTUwMTFlMzk0
NTJlN2VlMTk3Li5iYWRkYTA3NDU5OWE5M2JiNWRhMzI1YmJlZmRkNzgzYjA3ZmYxYjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRw
cGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9ydHBwYXJhbWV0ZXJzLmgKQEAgLTExLDEyICsxMSwxNCBAQAogI2lmbmRlZiBBUElf
UlRQUEFSQU1FVEVSU19IXwogI2RlZmluZSBBUElfUlRQUEFSQU1FVEVSU19IXwogCisjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgog
I2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0
Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTQwNCw2ICs0MDYsMTQgQEAg
c3RydWN0IFJ0cEVuY29kaW5nUGFyYW1ldGVycyB7CiAgIC8vIGJpdHJhdGUgcHJpb3JpdHkuCiAg
IGRvdWJsZSBiaXRyYXRlX3ByaW9yaXR5ID0ga0RlZmF1bHRCaXRyYXRlUHJpb3JpdHk7CiAKKyAg
Ly8gVGhlIHJlbGF0aXZlIERpZmZTZXJ2IENvZGUgUG9pbnQgcHJpb3JpdHkgZm9yIHRoaXMgZW5j
b2RpbmcsIGFsbG93aW5nCisgIC8vIHBhY2tldHMgdG8gYmUgbWFya2VkIHJlbGF0aXZlbHkgaGln
aGVyIG9yIGxvd2VyIHdpdGhvdXQgYWZmZWN0aW5nCisgIC8vIGJhbmR3aWR0aCBhbGxvY2F0aW9u
cy4gU2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtZHNjcC1leHAvIC4gTkIKKyAgLy8g
d2UgZm9sbG93IGNocm9taXVtJ3MgdHJhbnNsYXRpb24gb2YgdGhlIGFsbG93ZWQgc3RyaW5nIGVu
dW0gdmFsdWVzIGZvcgorICAvLyB0aGlzIGZpZWxkIHRvIDEuMCwgMC41LCBldCBjZXRlcmEsIHNp
bWlsYXIgdG8gYml0cmF0ZV9wcmlvcml0eSBhYm92ZS4KKyAgLy8gVE9ETyhodHRwOi8vY3JidWcu
Y29tL3dlYnJ0Yy84NjMwKTogSW1wbGVtZW50IHRoaXMgcGVyIGVuY29kaW5nIHBhcmFtZXRlci4K
KyAgZG91YmxlIG5ldHdvcmtfcHJpb3JpdHkgPSBrRGVmYXVsdEJpdHJhdGVQcmlvcml0eTsKKwog
ICAvLyBJbmRpY2F0ZXMgdGhlIHByZWZlcnJlZCBkdXJhdGlvbiBvZiBtZWRpYSByZXByZXNlbnRl
ZCBieSBhIHBhY2tldCBpbgogICAvLyBtaWxsaXNlY29uZHMgZm9yIHRoaXMgZW5jb2RpbmcuIElm
IHNldCwgdGhpcyB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZQogICAvLyBwdGltZSBzZXQg
aW4gdGhlIFJ0cENvZGVjUGFyYW1ldGVycy4gVGhpcyBjb3VsZCBoYXBwZW4gaWYgU0RQIG5lZ290
aWF0aW9uCkBAIC00NzEsNyArNDgxLDggQEAgc3RydWN0IFJ0cEVuY29kaW5nUGFyYW1ldGVycyB7
CiAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSdHBFbmNvZGluZ1BhcmFtZXRlcnMmIG8pIGNvbnN0
IHsKICAgICByZXR1cm4gc3NyYyA9PSBvLnNzcmMgJiYgY29kZWNfcGF5bG9hZF90eXBlID09IG8u
Y29kZWNfcGF5bG9hZF90eXBlICYmCiAgICAgICAgICAgIGZlYyA9PSBvLmZlYyAmJiBydHggPT0g
by5ydHggJiYgZHR4ID09IG8uZHR4ICYmCi0gICAgICAgICAgIGJpdHJhdGVfcHJpb3JpdHkgPT0g
by5iaXRyYXRlX3ByaW9yaXR5ICYmIHB0aW1lID09IG8ucHRpbWUgJiYKKyAgICAgICAgICAgYml0
cmF0ZV9wcmlvcml0eSA9PSBvLmJpdHJhdGVfcHJpb3JpdHkgJiYKKyAgICAgICAgICAgbmV0d29y
a19wcmlvcml0eSA9PSBvLm5ldHdvcmtfcHJpb3JpdHkgJiYgcHRpbWUgPT0gby5wdGltZSAmJgog
ICAgICAgICAgICBtYXhfYml0cmF0ZV9icHMgPT0gby5tYXhfYml0cmF0ZV9icHMgJiYKICAgICAg
ICAgICAgbWluX2JpdHJhdGVfYnBzID09IG8ubWluX2JpdHJhdGVfYnBzICYmCiAgICAgICAgICAg
IG1heF9mcmFtZXJhdGUgPT0gby5tYXhfZnJhbWVyYXRlICYmCkBAIC02MDcsNyArNjE4LDcgQEAg
c3RydWN0IFJ0Y3BQYXJhbWV0ZXJzIGZpbmFsIHsKICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJ0
Y3BQYXJhbWV0ZXJzJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiB9OwogCi1z
dHJ1Y3QgUnRwUGFyYW1ldGVycyB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBSdHBQYXJhbWV0ZXJzIHsK
ICAgUnRwUGFyYW1ldGVycygpOwogICBSdHBQYXJhbWV0ZXJzKGNvbnN0IFJ0cFBhcmFtZXRlcnMm
KTsKICAgflJ0cFBhcmFtZXRlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBzZW5kZXJpbnRlcmZhY2UuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBzZW5kZXJpbnRlcmZhY2Uu
aAppbmRleCA5NTU0YzFjNGRhNzk3MzU1NDdjYWViZDI4NDAxODE2OTk3NDIwZDhjLi43Yzk0YzIx
NmU2NGVmYmViNWM0NjI4YmViZTY5MjVhNmY1MDIzZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwc2VuZGVyaW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHNl
bmRlcmludGVyZmFjZS5oCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiYXBpL3Byb3h5Lmgi
CiAjaW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCiAjaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3JlZmNvdW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0
cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3J0cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmNjCmluZGV4IGQ4MzMzMzlm
YTY2NDY4NTBmYWE5YmUyMmU5OTgwNmFiZDgxYzNlYmUuLmU2MmIwMTRjNjU2NDMzNWY3MDY5NDEx
NWRmOTg4NjYwYWFjNDM1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVyZmFjZS5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwdHJhbnNjZWl2ZXJp
bnRlcmZhY2UuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgImFwaS9ydHB0cmFuc2Nl
aXZlcmludGVyZmFjZS5oIgogCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKIG5hbWVz
cGFjZSB3ZWJydGMgewogCiBSdHBUcmFuc2NlaXZlckluaXQ6OlJ0cFRyYW5zY2VpdmVySW5pdCgp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmgK
aW5kZXggMzAxYTM4MDlmOGI0ZGVmM2U3NmQ1Njk1MDgwNjRiNDAzZDI1OGE2Yi4uYzAxZmRhZmI4
MzIzY2Y5MWJiYjU1N2ZkMmJmMjcyYTQ1ZWU2MTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHRyYW5zY2VpdmVyaW50ZXJmYWNl
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0
cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmgKQEAgLTE2LDkgKzE2LDEyIEBACiAKICNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNs
dWRlICJhcGkvbWVkaWF0eXBlcy5oIgorI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSAiYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3J0cHNl
bmRlcmludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9z
Y29wZWRfcmVmcHRyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvc2NvcGVkX3JlZnB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5OTNlMDMyY2M3MjQ5YWUwNjBiYmY4
MzI5MjEzNWQyZTdmYzI5NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc2NvcGVkX3JlZnB0ci5oCkBAIC0wLDAgKzEsMTYy
IEBACisvKgorICogIENvcHlyaWdodCAyMDExIFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisvLyBPcmlnaW5hbGx5IHRoZXNlIGNsYXNzZXMgYXJl
IGZyb20gQ2hyb21pdW0uCisvLyBodHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21l
L3RydW5rL3NyYy9iYXNlL21lbW9yeS9yZWZfY291bnRlZC5oP3ZpZXc9bWFya3VwCisKKy8vCisv
LyBBIHNtYXJ0IHBvaW50ZXIgY2xhc3MgZm9yIHJlZmVyZW5jZSBjb3VudGVkIG9iamVjdHMuICBV
c2UgdGhpcyBjbGFzcyBpbnN0ZWFkCisvLyBvZiBjYWxsaW5nIEFkZFJlZiBhbmQgUmVsZWFzZSBt
YW51YWxseSBvbiBhIHJlZmVyZW5jZSBjb3VudGVkIG9iamVjdCB0bworLy8gYXZvaWQgY29tbW9u
IG1lbW9yeSBsZWFrcyBjYXVzZWQgYnkgZm9yZ2V0dGluZyB0byBSZWxlYXNlIGFuIG9iamVjdAor
Ly8gcmVmZXJlbmNlLiAgU2FtcGxlIHVzYWdlOgorLy8KKy8vICAgY2xhc3MgTXlGb28gOiBwdWJs
aWMgUmVmQ291bnRlZDxNeUZvbz4geworLy8gICAgLi4uCisvLyAgIH07CisvLworLy8gICB2b2lk
IHNvbWVfZnVuY3Rpb24oKSB7CisvLyAgICAgc2NvcGVkX3JlZnB0cjxNeUZvbz4gZm9vID0gbmV3
IE15Rm9vKCk7CisvLyAgICAgZm9vLT5NZXRob2QocGFyYW0pOworLy8gICAgIC8vIHxmb298IGlz
IHJlbGVhc2VkIHdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zCisvLyAgIH0KKy8vCisvLyAgIHZv
aWQgc29tZV9vdGhlcl9mdW5jdGlvbigpIHsKKy8vICAgICBzY29wZWRfcmVmcHRyPE15Rm9vPiBm
b28gPSBuZXcgTXlGb28oKTsKKy8vICAgICAuLi4KKy8vICAgICBmb28gPSBudWxscHRyOyAgLy8g
ZXhwbGljaXRseSByZWxlYXNlcyB8Zm9vfAorLy8gICAgIC4uLgorLy8gICAgIGlmIChmb28pCisv
LyAgICAgICBmb28tPk1ldGhvZChwYXJhbSk7CisvLyAgIH0KKy8vCisvLyBUaGUgYWJvdmUgZXhh
bXBsZXMgc2hvdyBob3cgc2NvcGVkX3JlZnB0cjxUPiBhY3RzIGxpa2UgYSBwb2ludGVyIHRvIFQu
CisvLyBHaXZlbiB0d28gc2NvcGVkX3JlZnB0cjxUPiBjbGFzc2VzLCBpdCBpcyBhbHNvIHBvc3Np
YmxlIHRvIGV4Y2hhbmdlCisvLyByZWZlcmVuY2VzIGJldHdlZW4gdGhlIHR3byBvYmplY3RzLCBs
aWtlIHNvOgorLy8KKy8vICAgeworLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+IGEgPSBuZXcg
TXlGb28oKTsKKy8vICAgICBzY29wZWRfcmVmcHRyPE15Rm9vPiBiOworLy8KKy8vICAgICBiLnN3
YXAoYSk7CisvLyAgICAgLy8gbm93LCB8YnwgcmVmZXJlbmNlcyB0aGUgTXlGb28gb2JqZWN0LCBh
bmQgfGF8IHJlZmVyZW5jZXMgbnVsbC4KKy8vICAgfQorLy8KKy8vIFRvIG1ha2UgYm90aCB8YXwg
YW5kIHxifCBpbiB0aGUgYWJvdmUgZXhhbXBsZSByZWZlcmVuY2UgdGhlIHNhbWUgTXlGb28KKy8v
IG9iamVjdCwgc2ltcGx5IHVzZSB0aGUgYXNzaWdubWVudCBvcGVyYXRvcjoKKy8vCisvLyAgIHsK
Ky8vICAgICBzY29wZWRfcmVmcHRyPE15Rm9vPiBhID0gbmV3IE15Rm9vKCk7CisvLyAgICAgc2Nv
cGVkX3JlZnB0cjxNeUZvbz4gYjsKKy8vCisvLyAgICAgYiA9IGE7CisvLyAgICAgLy8gbm93LCB8
YXwgYW5kIHxifCBlYWNoIG93biBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBNeUZvbyBvYmplY3Qu
CisvLyAgIH0KKy8vCisKKyNpZm5kZWYgQVBJX1NDT1BFRF9SRUZQVFJfSF8KKyNkZWZpbmUgQVBJ
X1NDT1BFRF9SRUZQVFJfSF8KKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1dGlsaXR5
PgorCituYW1lc3BhY2UgcnRjIHsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitjbGFzcyBzY29wZWRf
cmVmcHRyIHsKKyBwdWJsaWM6CisgIHNjb3BlZF9yZWZwdHIoKSA6IHB0cl8obnVsbHB0cikge30K
KworICBzY29wZWRfcmVmcHRyKFQqIHApIDogcHRyXyhwKSB7ICAvLyBOT0xJTlQocnVudGltZS9l
eHBsaWNpdCkKKyAgICBpZiAocHRyXykKKyAgICAgIHB0cl8tPkFkZFJlZigpOworICB9CisKKyAg
c2NvcGVkX3JlZnB0cihjb25zdCBzY29wZWRfcmVmcHRyPFQ+JiByKSA6IHB0cl8oci5wdHJfKSB7
CisgICAgaWYgKHB0cl8pCisgICAgICBwdHJfLT5BZGRSZWYoKTsKKyAgfQorCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBVPgorICBzY29wZWRfcmVmcHRyKGNvbnN0IHNjb3BlZF9yZWZwdHI8VT4mIHIp
IDogcHRyXyhyLmdldCgpKSB7CisgICAgaWYgKHB0cl8pCisgICAgICBwdHJfLT5BZGRSZWYoKTsK
KyAgfQorCisgIC8vIE1vdmUgY29uc3RydWN0b3JzLgorICBzY29wZWRfcmVmcHRyKHNjb3BlZF9y
ZWZwdHI8VD4mJiByKSA6IHB0cl8oci5yZWxlYXNlKCkpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIFU+CisgIHNjb3BlZF9yZWZwdHIoc2NvcGVkX3JlZnB0cjxVPiYmIHIpIDogcHRyXyhyLnJl
bGVhc2UoKSkge30KKworICB+c2NvcGVkX3JlZnB0cigpIHsKKyAgICBpZiAocHRyXykKKyAgICAg
IHB0cl8tPlJlbGVhc2UoKTsKKyAgfQorCisgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIHB0cl87
IH0KKyAgb3BlcmF0b3IgVCooKSBjb25zdCB7IHJldHVybiBwdHJfOyB9CisgIFQqIG9wZXJhdG9y
LT4oKSBjb25zdCB7IHJldHVybiBwdHJfOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgKHBvc3NpYmx5
IG51bGwpIHJhdyBwb2ludGVyLCBhbmQgbWFrZXMgdGhlIHNjb3BlZF9yZWZwdHIgaG9sZCBhCisg
IC8vIG51bGwgcG9pbnRlciwgYWxsIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHJlZmVyZW5jZSBjb3Vu
dCBvZiB0aGUgdW5kZXJseWluZworICAvLyBwb2ludGVkLXRvIG9iamVjdC4gVGhlIG9iamVjdCBp
cyBzdGlsbCByZWZlcmVuY2UgY291bnRlZCwgYW5kIHRoZSBjYWxsZXIgb2YKKyAgLy8gcmVsZWFz
ZSgpIGlzIG5vdyB0aGUgcHJvdWQgb3duZXIgb2Ygb25lIHJlZmVyZW5jZSwgc28gaXQgaXMgcmVz
cG9uc2libGUgZm9yCisgIC8vIGNhbGxpbmcgUmVsZWFzZSgpIG9uY2Ugb24gdGhlIG9iamVjdCB3
aGVuIG5vIGxvbmdlciB1c2luZyBpdC4KKyAgVCogcmVsZWFzZSgpIHsKKyAgICBUKiByZXRWYWwg
PSBwdHJfOworICAgIHB0cl8gPSBudWxscHRyOworICAgIHJldHVybiByZXRWYWw7CisgIH0KKwor
ICBzY29wZWRfcmVmcHRyPFQ+JiBvcGVyYXRvcj0oVCogcCkgeworICAgIC8vIEFkZFJlZiBmaXJz
dCBzbyB0aGF0IHNlbGYgYXNzaWdubWVudCBzaG91bGQgd29yaworICAgIGlmIChwKQorICAgICAg
cC0+QWRkUmVmKCk7CisgICAgaWYgKHB0cl8pCisgICAgICBwdHJfLT5SZWxlYXNlKCk7CisgICAg
cHRyXyA9IHA7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgc2NvcGVkX3JlZnB0cjxUPiYg
b3BlcmF0b3I9KGNvbnN0IHNjb3BlZF9yZWZwdHI8VD4mIHIpIHsKKyAgICByZXR1cm4gKnRoaXMg
PSByLnB0cl87CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc2NvcGVkX3JlZnB0
cjxUPiYgb3BlcmF0b3I9KGNvbnN0IHNjb3BlZF9yZWZwdHI8VT4mIHIpIHsKKyAgICByZXR1cm4g
KnRoaXMgPSByLmdldCgpOworICB9CisKKyAgc2NvcGVkX3JlZnB0cjxUPiYgb3BlcmF0b3I9KHNj
b3BlZF9yZWZwdHI8VD4mJiByKSB7CisgICAgc2NvcGVkX3JlZnB0cjxUPihzdGQ6Om1vdmUocikp
LnN3YXAoKnRoaXMpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBVPgorICBzY29wZWRfcmVmcHRyPFQ+JiBvcGVyYXRvcj0oc2NvcGVkX3JlZnB0cjxVPiYm
IHIpIHsKKyAgICBzY29wZWRfcmVmcHRyPFQ+KHN0ZDo6bW92ZShyKSkuc3dhcCgqdGhpcyk7Cisg
ICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgdm9pZCBzd2FwKFQqKiBwcCkgeworICAgIFQqIHAg
PSBwdHJfOworICAgIHB0cl8gPSAqcHA7CisgICAgKnBwID0gcDsKKyAgfQorCisgIHZvaWQgc3dh
cChzY29wZWRfcmVmcHRyPFQ+JiByKSB7IHN3YXAoJnIucHRyXyk7IH0KKworIHByb3RlY3RlZDoK
KyAgVCogcHRyXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAvLyBBUElf
U0NPUEVEX1JFRlBUUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc3RhdHMvcnRjc3RhdHMuaAppbmRleCAxNzA1ZjZh
YjU4ZWU3OWRkZjY5YTVhNTc2ZjY1ZjcyZDJlYWEwZjZlLi43ZmQwZDg0ZTBiYjE0NTU4MWI3OGM1
YjIwNTlmN2Q5ODBhNjU5NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvc3RhdHMvcnRjc3RhdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc3RhdHMvcnRjc3RhdHMuaApAQCAtMTgs
NiArMTgsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCkBAIC00Nyw3ICs0OCw3IEBAIGNsYXNzIFJUQ1N0YXRzTWVtYmVySW50ZXJm
YWNlOwogLy8gZm9yIChjb25zdCBSVENTdGF0c01lbWJlckludGVyZmFjZSogbWVtYmVyIDogZm9v
Lk1lbWJlcnMoKSkgewogLy8gICBwcmludGYoIiVzID0gJXNcbiIsIG1lbWJlci0+bmFtZSgpLCBt
ZW1iZXItPlZhbHVlVG9TdHJpbmcoKS5jX3N0cigpKTsKIC8vIH0KLWNsYXNzIFJUQ1N0YXRzIHsK
K2NsYXNzIFJUQ19FWFBPUlQgUlRDU3RhdHMgewogIHB1YmxpYzoKICAgUlRDU3RhdHMoY29uc3Qg
c3RkOjpzdHJpbmcmIGlkLCBpbnQ2NF90IHRpbWVzdGFtcF91cykKICAgICAgIDogaWRfKGlkKSwg
dGltZXN0YW1wX3VzXyh0aW1lc3RhbXBfdXMpIHt9CkBAIC0yNDcsNyArMjQ4LDcgQEAgY2xhc3Mg
UlRDU3RhdHNNZW1iZXJJbnRlcmZhY2UgewogLy8gKHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gfGtU
eXBlfCkuIFRoZSBzdXBwb3J0ZWQgdHlwZXMgYXJlIHRoZSBvbmVzIGRlc2NyaWJlZAogLy8gYnkg
fFJUQ1N0YXRzTWVtYmVySW50ZXJmYWNlOjpUeXBlfC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Y2xhc3MgUlRDU3RhdHNNZW1iZXIgOiBwdWJsaWMgUlRDU3RhdHNNZW1iZXJJbnRlcmZhY2Ugewor
Y2xhc3MgUlRDX0VYUE9SVCBSVENTdGF0c01lbWJlciA6IHB1YmxpYyBSVENTdGF0c01lbWJlcklu
dGVyZmFjZSB7CiAgcHVibGljOgogICBzdGF0aWMgY29uc3QgVHlwZSBrVHlwZTsKIApAQCAtMjk0
LDE1ICsyOTUsNiBAQCBjbGFzcyBSVENTdGF0c01lbWJlciA6IHB1YmxpYyBSVENTdGF0c01lbWJl
ckludGVyZmFjZSB7CiAgICAgaXNfZGVmaW5lZF8gPSB0cnVlOwogICAgIHJldHVybiB2YWx1ZV87
CiAgIH0KLSAgVCYgb3BlcmF0b3I9KGNvbnN0IFJUQ1N0YXRzTWVtYmVyPFQ+JiBvdGhlcikgewot
ICAgIFJUQ19EQ0hFQ0sob3RoZXIuaXNfZGVmaW5lZF8pOwotICAgIC8vIFNob3VsZG4ndCBiZSBh
dHRlbXB0aW5nIHRvIGFzc2lnbiBhbiBSVENOb25TdGFuZGFyZFN0YXRzTWVtYmVyIHRvIGFuCi0g
ICAgLy8gUlRDU3RhdHNNZW1iZXIgb3IgdmljZSB2ZXJzYS4KLSAgICBSVENfRENIRUNLKGlzX3N0
YW5kYXJkaXplZCgpID09IG90aGVyLmlzX3N0YW5kYXJkaXplZCgpKTsKLSAgICB2YWx1ZV8gPSBv
dGhlci52YWx1ZV87Ci0gICAgaXNfZGVmaW5lZF8gPSB0cnVlOwotICAgIHJldHVybiB2YWx1ZV87
Ci0gIH0KIAogICAvLyBWYWx1ZSBnZXR0ZXJzLgogICBUJiBvcGVyYXRvciooKSB7CkBAIC0zNDcs
NiArMzM5LDExIEBAIGNsYXNzIFJUQ05vblN0YW5kYXJkU3RhdHNNZW1iZXIgOiBwdWJsaWMgUlRD
U3RhdHNNZW1iZXI8VD4gewogICAgICAgOiBSVENTdGF0c01lbWJlcjxUPihzdGQ6Om1vdmUob3Ro
ZXIpKSB7fQogCiAgIGJvb2wgaXNfc3RhbmRhcmRpemVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKworICBUJiBvcGVyYXRvcj0oY29uc3QgVCYgdmFsdWUpIHsgcmV0dXJuIFJU
Q1N0YXRzTWVtYmVyPFQ+OjpvcGVyYXRvcj0odmFsdWUpOyB9CisgIFQmIG9wZXJhdG9yPShjb25z
dCBUJiYgdmFsdWUpIHsKKyAgICByZXR1cm4gUlRDU3RhdHNNZW1iZXI8VD46Om9wZXJhdG9yPShz
dGQ6Om1vdmUodmFsdWUpKTsKKyAgfQogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3N0
YXRzL3J0Y3N0YXRzX29iamVjdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9zdGF0cy9ydGNzdGF0c19vYmplY3RzLmgKaW5kZXggZjM3NzgwOWJhM2E3
MWRhNjI1MDU5ODdhMWI1Njk3Nzk3YzRmNTgwNC4uODM5MjIzMTIxODk1MzMzMWRhNTMyZWQ4ZDI5
MTRmYjU1NGU4MjE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzX29iamVjdHMuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc3RhdHMvcnRjc3RhdHNfb2JqZWN0
cy5oCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBp
L3N0YXRzL3J0Y3N0YXRzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTczLDcgKzc0LDcgQEAgc3RydWN0IFJUQ05l
dHdvcmtUeXBlIHsKIH07CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtc3RhdHMv
I2NlcnRpZmljYXRlc3RhdHMtZGljdCoKLWNsYXNzIFJUQ0NlcnRpZmljYXRlU3RhdHMgZmluYWwg
OiBwdWJsaWMgUlRDU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENDZXJ0aWZpY2F0ZVN0YXRz
IGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19E
RUNMKCk7CiAKQEAgLTg5LDcgKzkwLDcgQEAgY2xhc3MgUlRDQ2VydGlmaWNhdGVTdGF0cyBmaW5h
bCA6IHB1YmxpYyBSVENTdGF0cyB7CiB9OwogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2Vi
cnRjLXN0YXRzLyNjb2RlYy1kaWN0KgotY2xhc3MgUlRDQ29kZWNTdGF0cyBmaW5hbCA6IHB1Ymxp
YyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ0NvZGVjU3RhdHMgZmluYWwgOiBwdWJs
aWMgUlRDU3RhdHMgewogIHB1YmxpYzoKICAgV0VCUlRDX1JUQ1NUQVRTX0RFQ0woKTsKIApAQCAt
MTEwLDcgKzExMSw3IEBAIGNsYXNzIFJUQ0NvZGVjU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDU3Rh
dHMgewogfTsKIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jZGNzdGF0
cy1kaWN0KgotY2xhc3MgUlRDRGF0YUNoYW5uZWxTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0
cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ0RhdGFDaGFubmVsU3RhdHMgZmluYWwgOiBwdWJsaWMg
UlRDU3RhdHMgewogIHB1YmxpYzoKICAgV0VCUlRDX1JUQ1NUQVRTX0RFQ0woKTsKIApAQCAtMTMy
LDcgKzEzMyw3IEBAIGNsYXNzIFJUQ0RhdGFDaGFubmVsU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRD
U3RhdHMgewogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNjYW5kaWRh
dGVwYWlyLWRpY3QqCiAvLyBUT0RPKGhib3MpOiBUcmFja2luZyBidWcgaHR0cHM6Ly9idWdzLndl
YnJ0Yy5vcmcvNzA2MgotY2xhc3MgUlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRzIGZpbmFsIDogcHVi
bGljIFJUQ1N0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRz
IGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19E
RUNMKCk7CiAKQEAgLTE4Niw3ICsxODcsNyBAQCBjbGFzcyBSVENJY2VDYW5kaWRhdGVQYWlyU3Rh
dHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgewogLy8gY3JidWcuY29tLzYzMjcyMwogLy8gVE9E
TyhxaW5nc2kpOiBBZGQgdGhlIHN0YXRzIG9mIFNUVU4gYmluZGluZyByZXF1ZXN0cyAoa2VlcGFs
aXZlcykgYW5kIGNvbGxlY3QKIC8vIHRoZW0gaW4gdGhlIG5ldyBQZWVyQ29ubmVjdGlvbjo6R2V0
U3RhdHMuCi1jbGFzcyBSVENJY2VDYW5kaWRhdGVTdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7Citj
bGFzcyBSVENfRVhQT1JUIFJUQ0ljZUNhbmRpZGF0ZVN0YXRzIDogcHVibGljIFJUQ1N0YXRzIHsK
ICBwdWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19ERUNMKCk7CiAKQEAgLTIyMSw3ICsyMjIsNyBA
QCBjbGFzcyBSVENJY2VDYW5kaWRhdGVTdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7CiAvLyB8a1R5
cGV8IG5lZWQgdG8gYmUgZGlmZmVyZW50ICgiUlRDU3RhdHNUeXBlIHR5cGUiKSBpbiB0aGUgbG9j
YWwvcmVtb3RlIGNhc2UuCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNy
dGNzdGF0c3R5cGUtc3RyKgogLy8gVGhpcyBmb3JjZXMgdXMgdG8gaGF2ZSB0byBvdmVycmlkZSBj
b3B5KCkgYW5kIHR5cGUoKS4KLWNsYXNzIFJUQ0xvY2FsSWNlQ2FuZGlkYXRlU3RhdHMgZmluYWwg
OiBwdWJsaWMgUlRDSWNlQ2FuZGlkYXRlU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENMb2Nh
bEljZUNhbmRpZGF0ZVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ0ljZUNhbmRpZGF0ZVN0YXRzIHsK
ICBwdWJsaWM6CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtUeXBlW107CiAgIFJUQ0xvY2FsSWNlQ2Fu
ZGlkYXRlU3RhdHMoY29uc3Qgc3RkOjpzdHJpbmcmIGlkLCBpbnQ2NF90IHRpbWVzdGFtcF91cyk7
CkBAIC0yMzAsNyArMjMxLDggQEAgY2xhc3MgUlRDTG9jYWxJY2VDYW5kaWRhdGVTdGF0cyBmaW5h
bCA6IHB1YmxpYyBSVENJY2VDYW5kaWRhdGVTdGF0cyB7CiAgIGNvbnN0IGNoYXIqIHR5cGUoKSBj
b25zdCBvdmVycmlkZTsKIH07CiAKLWNsYXNzIFJUQ1JlbW90ZUljZUNhbmRpZGF0ZVN0YXRzIGZp
bmFsIDogcHVibGljIFJUQ0ljZUNhbmRpZGF0ZVN0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRD
UmVtb3RlSWNlQ2FuZGlkYXRlU3RhdHMgZmluYWwKKyAgICA6IHB1YmxpYyBSVENJY2VDYW5kaWRh
dGVTdGF0cyB7CiAgcHVibGljOgogICBzdGF0aWMgY29uc3QgY2hhciBrVHlwZVtdOwogICBSVENS
ZW1vdGVJY2VDYW5kaWRhdGVTdGF0cyhjb25zdCBzdGQ6OnN0cmluZyYgaWQsIGludDY0X3QgdGlt
ZXN0YW1wX3VzKTsKQEAgLTI0MSw3ICsyNDMsNyBAQCBjbGFzcyBSVENSZW1vdGVJY2VDYW5kaWRh
dGVTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENJY2VDYW5kaWRhdGVTdGF0cyB7CiAKIC8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtc3RhdHMvI21zc3RhdHMtZGljdCoKIC8vIFRPRE8oaGJv
cyk6IFRyYWNraW5nIGJ1ZyBjcmJ1Zy5jb20vNjYwODI3Ci1jbGFzcyBSVENNZWRpYVN0cmVhbVN0
YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDTWVkaWFT
dHJlYW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENf
UlRDU1RBVFNfREVDTCgpOwogCkBAIC0yNTYsNyArMjU4LDcgQEAgY2xhc3MgUlRDTWVkaWFTdHJl
YW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby93ZWJydGMtc3RhdHMvI21zdHN0YXRzLWRpY3QqCiAvLyBUT0RPKGhib3MpOiBUcmFja2lu
ZyBidWcgY3JidWcuY29tLzY1OTEzNwotY2xhc3MgUlRDTWVkaWFTdHJlYW1UcmFja1N0YXRzIGZp
bmFsIDogcHVibGljIFJUQ1N0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDTWVkaWFTdHJlYW1U
cmFja1N0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19S
VENTVEFUU19ERUNMKCk7CiAKQEAgLTMwNiwxMCArMzA4LDE0IEBAIGNsYXNzIFJUQ01lZGlhU3Ry
ZWFtVHJhY2tTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAgIFJUQ1N0YXRzTWVtYmVy
PGRvdWJsZT4gdG90YWxfc2FtcGxlc19kdXJhdGlvbjsKICAgUlRDU3RhdHNNZW1iZXI8dWludDY0
X3Q+IGNvbmNlYWxlZF9zYW1wbGVzOwogICBSVENTdGF0c01lbWJlcjx1aW50NjRfdD4gY29uY2Vh
bG1lbnRfZXZlbnRzOworICAvLyBOb24tc3RhbmRhcmQgYXVkaW8tb25seSBtZW1iZXIKKyAgLy8g
VE9ETyhrdWRkYWkpOiBBZGQgZGVzY3JpcHRpb24gdG8gc3RhbmRhcmQuIGNyYnVnLmNvbS93ZWJy
dGMvMTAwNDIKKyAgUlRDTm9uU3RhbmRhcmRTdGF0c01lbWJlcjx1aW50NjRfdD4gaml0dGVyX2J1
ZmZlcl9mbHVzaGVzOworICBSVENOb25TdGFuZGFyZFN0YXRzTWVtYmVyPHVpbnQ2NF90PiBkZWxh
eWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlczsKIH07CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by93ZWJydGMtc3RhdHMvI3Bjc3RhdHMtZGljdCoKLWNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uU3Rh
dHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENQZWVyQ29u
bmVjdGlvblN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJU
Q19SVENTVEFUU19ERUNMKCk7CiAKQEAgLTMyNCw3ICszMzAsNyBAQCBjbGFzcyBSVENQZWVyQ29u
bmVjdGlvblN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKIAogLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jc3RyZWFtc3RhdHMtZGljdCoKIC8vIFRPRE8oaGJvcyk6
IFRyYWNraW5nIGJ1ZyBjcmJ1Zy5jb20vNjU3ODU0Ci1jbGFzcyBSVENSVFBTdHJlYW1TdGF0cyA6
IHB1YmxpYyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ1JUUFN0cmVhbVN0YXRzIDog
cHVibGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19ERUNMKCk7CiAK
QEAgLTM2Miw3ICszNjgsNyBAQCBjbGFzcyBSVENSVFBTdHJlYW1TdGF0cyA6IHB1YmxpYyBSVENT
dGF0cyB7CiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNpbmJvdW5kcnRw
c3RhdHMtZGljdCoKIC8vIFRPRE8oaGJvcyk6IFN1cHBvcnQgdGhlIHJlbW90ZSBjYXNlIHxpc19y
ZW1vdGUgPSB0cnVlfC4KIC8vIGh0dHBzOi8vYnVncy53ZWJydGMub3JnLzcwNjUKLWNsYXNzIFJU
Q0luYm91bmRSVFBTdHJlYW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENSVFBTdHJlYW1TdGF0cyB7
CitjbGFzcyBSVENfRVhQT1JUIFJUQ0luYm91bmRSVFBTdHJlYW1TdGF0cyBmaW5hbCA6IHB1Ymxp
YyBSVENSVFBTdHJlYW1TdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgp
OwogCkBAIC00MDYsNyArNDEyLDcgQEAgY2xhc3MgUlRDSW5ib3VuZFJUUFN0cmVhbVN0YXRzIGZp
bmFsIDogcHVibGljIFJUQ1JUUFN0cmVhbVN0YXRzIHsKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by93ZWJydGMtc3RhdHMvI291dGJvdW5kcnRwc3RhdHMtZGljdCoKIC8vIFRPRE8oaGJvcyk6IFN1
cHBvcnQgdGhlIHJlbW90ZSBjYXNlIHxpc19yZW1vdGUgPSB0cnVlfC4KIC8vIGh0dHBzOi8vYnVn
cy53ZWJydGMub3JnLzcwNjYKLWNsYXNzIFJUQ091dGJvdW5kUlRQU3RyZWFtU3RhdHMgZmluYWwg
OiBwdWJsaWMgUlRDUlRQU3RyZWFtU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBSVENPdXRib3Vu
ZFJUUFN0cmVhbVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1JUUFN0cmVhbVN0YXRzIHsKICBwdWJs
aWM6CiAgIFdFQlJUQ19SVENTVEFUU19ERUNMKCk7CiAKQEAgLTQyMyw3ICs0MjksNyBAQCBjbGFz
cyBSVENPdXRib3VuZFJUUFN0cmVhbVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1JUUFN0cmVhbVN0
YXRzIHsKIH07CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtc3RhdHMvI3RyYW5z
cG9ydHN0YXRzLWRpY3QqCi1jbGFzcyBSVENUcmFuc3BvcnRTdGF0cyBmaW5hbCA6IHB1YmxpYyBS
VENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ1RyYW5zcG9ydFN0YXRzIGZpbmFsIDogcHVi
bGljIFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19ERUNMKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9z
dGF0cy9ydGNzdGF0c3JlcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzcmVwb3J0LmgKaW5kZXggZjc0MTBiMzlmNzlhZmZh
MjM3NjM2NmViY2Y5M2JlNjE0YWVjMzAyZi4uOGJmMWNiNTdkOWQ1NWFlNTA0MzJiMjU2MzU1ZGQy
MWYyODRmYjQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzcmVwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzcmVwb3J0LmgKQEAg
LTIwLDEyICsyMCwxMyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3Bl
ZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEEgY29sbGVjdGlvbiBvZiBzdGF0cy4KIC8vIFRoaXMg
aXMgYWNjZXNzaWJsZSBhcyBhIG1hcCBmcm9tIHxSVENTdGF0czo6aWR8IHRvIHxSVENTdGF0c3wu
Ci1jbGFzcyBSVENTdGF0c1JlcG9ydCA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsK
K2NsYXNzIFJUQ19FWFBPUlQgUlRDU3RhdHNSZXBvcnQgOiBwdWJsaWMgcnRjOjpSZWZDb3VudElu
dGVyZmFjZSB7CiAgcHVibGljOgogICB0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6
OnVuaXF1ZV9wdHI8Y29uc3QgUlRDU3RhdHM+PiBTdGF0c01hcDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvREVQUyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L0RFUFMKaW5k
ZXggOThiMWFkMzkxZmNhMmI2NDRjNjFhM2Y1MDMyOGRkNWVmZWRlMmVkZi4uOWMyOTNiMzIzZTcw
M2ZjNmNkNDlkNWQ5ODMwY2FiN2Y4ZjU0Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvREVQUworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9ERVBTCkBAIC01LDQgKzUs
MTAgQEAgc3BlY2lmaWNfaW5jbHVkZV9ydWxlcyA9IHsKICAgIi4qIjogWwogICAgICIrdmlkZW8i
CiAgIF0sCisgICJsb29wYmFja19tZWRpYV90cmFuc3BvcnRcLmgiOiBbCisgICAgIitydGNfYmFz
ZS9hc3luY2ludm9rZXIuaCIsCisgICAgIitydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIsCisg
ICAgIitydGNfYmFzZS90aHJlYWQuaCIsCisgICAgIitydGNfYmFzZS90aHJlYWRfY2hlY2tlci5o
IiwKKyAgXSwKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9kZWNyeXB0
b3IuY2MKaW5kZXggNDMyNjY0YTAzMDYzYzhiNThlZDI0MzY5NGUzY2RiMDJiNWNiOTNkYS4uYjc3
MDE3ZmRiNDM2ODQwMDNmZTU1MmYzYjg0NDZiYzA5MzYxYTkwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9k
ZWNyeXB0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3IuY2MKQEAgLTI1LDE5ICsyNSwyMCBAQCBp
bnQgRmFrZUZyYW1lRGVjcnlwdG9yOjpEZWNyeXB0KGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzx1aW50
OF90PiBmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBieXRl
c193cml0dGVuKSB7CiAgIGlmIChmYWlsX2RlY3J5cHRpb25fKSB7Ci0gICAgcmV0dXJuIDE7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRmFrZURlY3J5cHRTdGF0dXM6OkZPUkNFRF9GQUlM
VVJFKTsKICAgfQogCiAgIFJUQ19DSEVDS19FUShmcmFtZS5zaXplKCkgKyAxLCBlbmNyeXB0ZWRf
ZnJhbWUuc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5zaXplKCk7IGkr
KykgewotICAgIGZyYW1lW2ldIF49IGZha2Vfa2V5XzsKKyAgICBmcmFtZVtpXSA9IGVuY3J5cHRl
ZF9mcmFtZVtpXSBeIGZha2Vfa2V5XzsKICAgfQogCiAgIGlmIChlbmNyeXB0ZWRfZnJhbWVbZnJh
bWUuc2l6ZSgpXSAhPSBleHBlY3RlZF9wb3N0Zml4X2J5dGVfKSB7Ci0gICAgcmV0dXJuIDE7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRmFrZURlY3J5cHRTdGF0dXM6OklOVkFMSURfUE9T
VEZJWCk7CiAgIH0KIAotICByZXR1cm4gMDsKKyAgKmJ5dGVzX3dyaXR0ZW4gPSBmcmFtZS5zaXpl
KCk7CisgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZha2VEZWNyeXB0U3RhdHVzOjpPSyk7CiB9
CiAKIHNpemVfdCBGYWtlRnJhbWVEZWNyeXB0b3I6OkdldE1heFBsYWludGV4dEJ5dGVTaXplKApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3Rlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmgKaW5kZXggYjk0
NWRlZjU5YThiMGE1Yjc0NzQ1ZjUyYjc0MjA4YmYxNjVkZTVjMy4uYmNiODA4MGZkNGM4NGM2NmIz
MzUyNDJjMDkzMTQ4ZDI5ODNiNzA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3IuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9mYWtl
X2ZyYW1lX2RlY3J5cHRvci5oCkBAIC0yMiwzNCArMjIsNDAgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7
CiAvLyBGcmFtZURlY3J5cHRvckludGVyZmFjZS4gSXQgaXMgY29uc3RydWN0ZWQgd2l0aCBhIHNp
bXBsZSBzaW5nbGUgZGlnaXQga2V5IGFuZAogLy8gYSBmaXhlZCBwb3N0Zml4IGJ5dGUuIFRoaXMg
aXMganVzdCB0byB2YWxpZGF0ZSB0aGF0IHRoZSBjb3JlIGNvZGUgd29ya3MKIC8vIGFzIGV4cGVj
dGVkLgotY2xhc3MgRmFrZUZyYW1lRGVjcnlwdG9yCitjbGFzcyBGYWtlRnJhbWVEZWNyeXB0b3Ig
ZmluYWwKICAgICA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8RnJhbWVEZWNyeXB0b3JJ
bnRlcmZhY2U+IHsKICBwdWJsaWM6CiAgIC8vIFByb3ZpZGUgYSBrZXkgKDAsMjU1KSBhbmQgc29t
ZSBwb3N0Zml4IGJ5dGUgKDAsMjU1KSB0aGlzIHNob3VsZCBtYXRjaCB0aGUKICAgLy8gYnl0ZSB5
b3UgZXhwZWN0IGZyb20gdGhlIEZha2VGcmFtZUVuY3J5cHRvci4KLSAgZXhwbGljaXQgRmFrZUZy
YW1lRGVjcnlwdG9yKHVpbnQ4X3QgZmFrZV9rZXkgPSAxLAorICBleHBsaWNpdCBGYWtlRnJhbWVE
ZWNyeXB0b3IodWludDhfdCBmYWtlX2tleSA9IDB4QUEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90IGV4cGVjdGVkX3Bvc3RmaXhfYnl0ZSA9IDI1NSk7Ci0KLSAgLy8gRnJh
bWVEZWNyeXB0b3JJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24KKyAgLy8gRmFrZSBkZWNyeXB0aW9u
IHRoYXQganVzdCB4b3JzIHRoZSBwYXlsb2FkIHdpdGggdGhlIDEgYnl0ZSBrZXkgYW5kIGNoZWNr
cworICAvLyB0aGUgcG9zdGZpeCBieXRlLiBUaGlzIHdpbGwgYWx3YXlzIGZhaWwgaWYgZmFpbF9k
ZWNyeXB0aW9uXyBpcyBzZXQgdG8gdHJ1ZS4KICAgaW50IERlY3J5cHQoY3JpY2tldDo6TWVkaWFU
eXBlIG1lZGlhX3R5cGUsCiAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90
PiYgY3NyY3MsCiAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IGFk
ZGl0aW9uYWxfZGF0YSwKICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhf
dD4gZW5jcnlwdGVkX2ZyYW1lLAogICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzx1aW50OF90
PiBmcmFtZSwKICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc193cml0dGVuKSBvdmVycmlkZTsK
LQorICAvLyBBbHdheXMgcmV0dXJucyAxIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZW5jcnlw
dGVkIGZyYW1lLgogICBzaXplX3QgR2V0TWF4UGxhaW50ZXh0Qnl0ZVNpemUoY3JpY2tldDo6TWVk
aWFUeXBlIG1lZGlhX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZW5jcnlwdGVkX2ZyYW1lX3NpemUpIG92ZXJyaWRlOwotCisgIC8vIFNldHMgdGhlIGZha2Ug
a2V5IHRvIHVzZSBmb3IgZW5jcnlwdGlvbi4KICAgdm9pZCBTZXRGYWtlS2V5KHVpbnQ4X3QgZmFr
ZV9rZXkpOwotCisgIC8vIFJldHVybnMgdGhlIGZha2Uga2V5IHVzZWQgZm9yIGVuY3J5cHRpb24u
CiAgIHVpbnQ4X3QgR2V0RmFrZUtleSgpIGNvbnN0OwotCisgIC8vIFNldCB0aGUgUG9zdGZpeCBi
eXRlIHRoYXQgaXMgZXhwZWN0ZWQgaW4gdGhlIGVuY3J5cHRlZCBwYXlsb2FkLgogICB2b2lkIFNl
dEV4cGVjdGVkUG9zdGZpeEJ5dGUodWludDhfdCBleHBlY3RlZF9wb3N0Zml4X2J5dGUpOwotCisg
IC8vIFJldHVybnMgdGhlIHBvc3RmaXggYnl0ZSB0aGF0IHdpbGwgYmUgY2hlY2tlZCBmb3IgaW4g
dGhlIGVuY3J5cHRlZCBwYXlsb2FkLgogICB1aW50OF90IEdldEV4cGVjdGVkUG9zdGZpeEJ5dGUo
KSBjb25zdDsKLQorICAvLyBJZiBzZXQgdG8gdHJ1ZSB3aWxsIGZvcmNlIGFsbCBlbmNyeXB0aW9u
IHRvIGZhaWwuCiAgIHZvaWQgU2V0RmFpbERlY3J5cHRpb24oYm9vbCBmYWlsX2RlY3J5cHRpb24p
OworICAvLyBTaW1wbGUgZXJyb3IgY29kZXMgZm9yIHRlc3RzIHRvIHZhbGlkYXRlIGFnYWluc3Qu
CisgIGVudW0gY2xhc3MgRmFrZURlY3J5cHRTdGF0dXMgOiBpbnQgeworICAgIE9LID0gMCwKKyAg
ICBGT1JDRURfRkFJTFVSRSA9IDEsCisgICAgSU5WQUxJRF9QT1NURklYID0gMgorICB9OwogCiAg
cHJpdmF0ZToKICAgdWludDhfdCBmYWtlX2tleV8gPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9lbmNy
eXB0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dGVzdC9mYWtlX2ZyYW1lX2VuY3J5cHRvci5jYwppbmRleCAwMTMwNThmOTZhYTZkZmU5YjA2MTM5
MzhlNTdkYWVmNWRhMzhjMzZjLi5lZGYzY2MyMTM2YWQwMGY3ODVkNzZmN2E0OTBiMjg1NTRhZDJk
NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdGVzdC9mYWtlX2ZyYW1lX2VuY3J5cHRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9mYWtlX2ZyYW1lX2VuY3J5cHRvci5j
YwpAQCAtMjIsMTggKzIyLDE4IEBAIGludCBGYWtlRnJhbWVFbmNyeXB0b3I6OkVuY3J5cHQoY3Jp
Y2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IGZyYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzx1aW50OF90PiBlbmNyeXB0ZWRfZnJhbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfd3JpdHRlbikg
ewotICAvLyBVc2VmdWwgaWYgeW91IHdhbnQgdG8gdGVzdCBmYWlsdXJlIGNhc2VzLgogICBpZiAo
ZmFpbF9lbmNyeXB0aW9uXykgewotICAgIHJldHVybiAxOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KEZha2VFbmNyeXB0aW9uU3RhdHVzOjpGT1JDRURfRkFJTFVSRSk7CiAgIH0KIAogICBS
VENfQ0hFQ0tfRVEoZnJhbWUuc2l6ZSgpICsgMSwgZW5jcnlwdGVkX2ZyYW1lLnNpemUoKSk7CiAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWUuc2l6ZSgpOyBpKyspIHsKLSAgICBlbmNyeXB0
ZWRfZnJhbWVbaV0gXj0gZmFrZV9rZXlfOworICAgIGVuY3J5cHRlZF9mcmFtZVtpXSA9IGZyYW1l
W2ldIF4gZmFrZV9rZXlfOwogICB9CisKICAgZW5jcnlwdGVkX2ZyYW1lW2ZyYW1lLnNpemUoKV0g
PSBwb3N0Zml4X2J5dGVfOwogICAqYnl0ZXNfd3JpdHRlbiA9IGVuY3J5cHRlZF9mcmFtZS5zaXpl
KCk7Ci0gIHJldHVybiAwOworICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGYWtlRW5jcnlwdGlv
blN0YXR1czo6T0spOwogfQogCiBzaXplX3QgRmFrZUZyYW1lRW5jcnlwdG9yOjpHZXRNYXhDaXBo
ZXJ0ZXh0Qnl0ZVNpemUoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9mYWtlX2ZyYW1lX2VuY3J5cHRvci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9lbmNy
eXB0b3IuaAppbmRleCA2MWFlOTM4M2Y2YTU0MzkwOTk3YmIxNGMzYjA5NjgyMmZlZTBkNGU0Li4w
YmVjOTY3ZGMyMjk2NDZlYWFmZGIxYmM2ZWJjZjliNjY2MGE3YWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9mYWtlX2ZyYW1l
X2VuY3J5cHRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZW5jcnlwdG9yLmgKQEAgLTI0LDI5ICsyNCwzNSBAQCBj
bGFzcyBGYWtlRnJhbWVFbmNyeXB0b3IKICAgICA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRPYmpl
Y3Q8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IHsKICBwdWJsaWM6CiAgIC8vIFByb3ZpZGUgYSBr
ZXkgKDAsMjU1KSBhbmQgc29tZSBwb3N0Zml4IGJ5dGUgKDAsMjU1KS4KLSAgZXhwbGljaXQgRmFr
ZUZyYW1lRW5jcnlwdG9yKHVpbnQ4X3QgZmFrZV9rZXkgPSAxLCB1aW50OF90IHBvc3RmaXhfYnl0
ZSA9IDI1NSk7Ci0KLSAgLy8gRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24K
KyAgZXhwbGljaXQgRmFrZUZyYW1lRW5jcnlwdG9yKHVpbnQ4X3QgZmFrZV9rZXkgPSAweEFBLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBwb3N0Zml4X2J5dGUgPSAyNTUp
OworICAvLyBTaW1wbHkgeG9ycyBlYWNoIHBheWxvYWQgd2l0aCB0aGUgcHJvdmlkZWQgZmFrZSBr
ZXkgYW5kIGFkZHMgdGhlIHBvc3RmaXgKKyAgLy8gYml0IHRvIHRoZSBlbmQuIFRoaXMgd2lsbCBh
bHdheXMgZmFpbCBpZiBmYWlsX2VuY3J5cHRpb25fIGlzIHNldCB0byB0cnVlLgogICBpbnQgRW5j
cnlwdChjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSwKICAgICAgICAgICAgICAgdWludDMy
X3Qgc3NyYywKICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gYWRk
aXRpb25hbF9kYXRhLAogICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90
PiBmcmFtZSwKICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8dWludDhfdD4gZW5jcnlwdGVk
X2ZyYW1lLAogICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVzX3dyaXR0ZW4pIG92ZXJyaWRlOwot
CisgIC8vIEFsd2F5cyByZXR1cm5zIDEgbW9yZSB0aGFuIHRoZSBzaXplIG9mIHRoZSBmcmFtZS4K
ICAgc2l6ZV90IEdldE1heENpcGhlcnRleHRCeXRlU2l6ZShjcmlja2V0OjpNZWRpYVR5cGUgbWVk
aWFfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZnJhbWVf
c2l6ZSkgb3ZlcnJpZGU7Ci0KKyAgLy8gU2V0cyB0aGUgZmFrZSBrZXkgdG8gdXNlIGR1cmluZyBl
bmNyeXB0aW9uLgogICB2b2lkIFNldEZha2VLZXkodWludDhfdCBmYWtlX2tleSk7Ci0KKyAgLy8g
UmV0dXJucyB0aGUgZmFrZSBrZXkgdXNlZCBkdXJpbmcgZW5jcnlwdGlvbi4KICAgdWludDhfdCBH
ZXRGYWtlS2V5KCkgY29uc3Q7Ci0KKyAgLy8gU2V0IHRoZSBwb3N0Zml4IGJ5dGUgdG8gdXNlLgog
ICB2b2lkIFNldFBvc3RmaXhCeXRlKHVpbnQ4X3QgZXhwZWN0ZWRfcG9zdGZpeF9ieXRlKTsKLQor
ICAvLyBSZXR1cm4gYSBwb3N0Zml4IGJ5dGUgYWRkZWQgdG8gZWFjaCBvdXRnb2luZyBwYXlsb2Fk
LgogICB1aW50OF90IEdldFBvc3RmaXhCeXRlKCkgY29uc3Q7Ci0KKyAgLy8gRm9yY2UgYWxsIGVu
Y3J5cHRpb25zIHRvIGZhaWwuCiAgIHZvaWQgU2V0RmFpbEVuY3J5cHRpb24oYm9vbCBmYWlsX2Vu
Y3J5cHRpb24pOwogCisgIGVudW0gY2xhc3MgRmFrZUVuY3J5cHRpb25TdGF0dXMgOiBpbnQgewor
ICAgIE9LID0gMCwKKyAgICBGT1JDRURfRkFJTFVSRSA9IDEsCisgIH07CisKICBwcml2YXRlOgog
ICB1aW50OF90IGZha2Vfa2V5XyA9IDA7CiAgIHVpbnQ4X3QgcG9zdGZpeF9ieXRlXyA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dGVzdC9mYWtlX21lZGlhX3RyYW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9tZWRpYV90cmFuc3BvcnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYjZlYzkzYWUyYjc5MjJiODIyM2Q5ODkxYTFkMzU4ZDhhMjI1NTM0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qv
ZmFrZV9tZWRpYV90cmFuc3BvcnQuaApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqICBDb3B5cmln
aHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2lmbmRlZiBBUElfVEVTVF9GQUtFX01FRElBX1RSQU5TUE9SVF9IXworI2RlZmluZSBB
UElfVEVTVF9GQUtFX01FRElBX1RSQU5TUE9SVF9IXworCisjaW5jbHVkZSA8bWVtb3J5PgorI2lu
Y2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKwor
I2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFu
c3BvcnRfaW50ZXJmYWNlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBUT0RPKHN1a2hh
bm92KTogRm9yIG5vdyBmYWtlIG1lZGlhIHRyYW5zcG9ydCBkb2VzIG5vdGhpbmcgYW5kIGlzIHVz
ZWQgb25seQorLy8gaW4ganNlcGNvbnRyb2xsZXIgdW5pdHRlc3RzLiBJbiB0aGUgZnV0dXJlIHdl
IHNob3VsZCBpbXBsZW1lbnQgZmFrZSBtZWRpYQorLy8gdHJhbnNwb3J0LCB3aGljaCBmb3J3YXJk
cyBmcmFtZXMgdG8gYW5vdGhlciBmYWtlIG1lZGlhIHRyYW5zcG9ydCwgc28gd2UKKy8vIGNvdWxk
IHVuaXQgdGVzdCBhdWRpbyAvIHZpZGVvIGludGVncmF0aW9uLgorY2xhc3MgRmFrZU1lZGlhVHJh
bnNwb3J0IDogcHVibGljIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIGV4
cGxpY2l0IEZha2VNZWRpYVRyYW5zcG9ydChjb25zdCBNZWRpYVRyYW5zcG9ydFNldHRpbmdzJiBz
ZXR0aW5ncykKKyAgICAgIDogc2V0dGluZ3NfKHNldHRpbmdzKSB7fQorICB+RmFrZU1lZGlhVHJh
bnNwb3J0KCkgPSBkZWZhdWx0OworCisgIFJUQ0Vycm9yIFNlbmRBdWRpb0ZyYW1lKHVpbnQ2NF90
IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhVHJhbnNwb3J0RW5j
b2RlZEF1ZGlvRnJhbWUgZnJhbWUpIG92ZXJyaWRlIHsKKyAgICByZXR1cm4gUlRDRXJyb3I6Ok9L
KCk7CisgIH0KKworICBSVENFcnJvciBTZW5kVmlkZW9GcmFtZSgKKyAgICAgIHVpbnQ2NF90IGNo
YW5uZWxfaWQsCisgICAgICBjb25zdCBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJiBm
cmFtZSkgb3ZlcnJpZGUgeworICAgIHJldHVybiBSVENFcnJvcjo6T0soKTsKKyAgfQorCisgIFJU
Q0Vycm9yIFJlcXVlc3RLZXlGcmFtZSh1aW50NjRfdCBjaGFubmVsX2lkKSBvdmVycmlkZSB7Cisg
ICAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOworICB9OworCisgIHZvaWQgU2V0UmVjZWl2ZUF1ZGlv
U2luayhNZWRpYVRyYW5zcG9ydEF1ZGlvU2lua0ludGVyZmFjZSogc2luaykgb3ZlcnJpZGUge30K
KyAgdm9pZCBTZXRSZWNlaXZlVmlkZW9TaW5rKE1lZGlhVHJhbnNwb3J0VmlkZW9TaW5rSW50ZXJm
YWNlKiBzaW5rKSBvdmVycmlkZSB7fQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZiBmYWtlIG1lZGlh
IHRyYW5zcG9ydCB3YXMgY3JlYXRlZCBhcyBhIGNhbGxlci4KKyAgYm9vbCBpc19jYWxsZXIoKSBj
b25zdCB7IHJldHVybiBzZXR0aW5nc18uaXNfY2FsbGVyOyB9CisgIGFic2w6Om9wdGlvbmFsPHN0
ZDo6c3RyaW5nPiBwcmVfc2hhcmVkX2tleSgpIGNvbnN0IHsKKyAgICByZXR1cm4gc2V0dGluZ3Nf
LnByZV9zaGFyZWRfa2V5OworICB9CisKKyAgUlRDRXJyb3IgU2VuZERhdGEoaW50IGNoYW5uZWxf
aWQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlbmREYXRhUGFyYW1zJiBwYXJhbXMsCisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIGJ1ZmZlcikg
b3ZlcnJpZGUgeworICAgIHJldHVybiBSVENFcnJvcjo6T0soKTsKKyAgfQorCisgIFJUQ0Vycm9y
IENsb3NlQ2hhbm5lbChpbnQgY2hhbm5lbF9pZCkgb3ZlcnJpZGUgeyByZXR1cm4gUlRDRXJyb3I6
Ok9LKCk7IH0KKworICB2b2lkIFNldERhdGFTaW5rKERhdGFDaGFubmVsU2luayogc2luaykgb3Zl
cnJpZGUge30KKworICB2b2lkIFNldE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjaygKKyAgICAg
IE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlIHsKKyAgICBz
dGF0ZV9jYWxsYmFja18gPSBjYWxsYmFjazsKKyAgfQorCisgIHZvaWQgU2V0U3RhdGUod2VicnRj
OjpNZWRpYVRyYW5zcG9ydFN0YXRlIHN0YXRlKSB7CisgICAgaWYgKHN0YXRlX2NhbGxiYWNrXykg
eworICAgICAgc3RhdGVfY2FsbGJhY2tfLT5PblN0YXRlQ2hhbmdlZChzdGF0ZSk7CisgICAgfQor
ICB9CisKKyAgdm9pZCBBZGRUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlcigKKyAgICAgIHdlYnJ0
Yzo6VGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIqIG9ic2VydmVyKSBvdmVycmlkZSB7CisgICAg
UlRDX0NIRUNLKHN0ZDo6ZmluZCh0YXJnZXRfcmF0ZV9vYnNlcnZlcnNfLmJlZ2luKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcmF0ZV9vYnNlcnZlcnNfLmVuZCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIpID09IHRhcmdldF9yYXRlX29ic2VydmVyc18uZW5k
KCkpOworICAgIHRhcmdldF9yYXRlX29ic2VydmVyc18ucHVzaF9iYWNrKG9ic2VydmVyKTsKKyAg
fQorCisgIHZvaWQgUmVtb3ZlVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIoCisgICAgICB3ZWJy
dGM6OlRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKiBvYnNlcnZlcikgb3ZlcnJpZGUgeworICAg
IGF1dG8gaXQgPSBzdGQ6OmZpbmQodGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5iZWdpbigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5lbmQoKSwgb2JzZXJ2
ZXIpOworICAgIGlmIChpdCAhPSB0YXJnZXRfcmF0ZV9vYnNlcnZlcnNfLmVuZCgpKSB7CisgICAg
ICB0YXJnZXRfcmF0ZV9vYnNlcnZlcnNfLmVyYXNlKGl0KTsKKyAgICB9CisgIH0KKworICBpbnQg
dGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzX3NpemUoKSB7IHJldHVybiB0YXJnZXRfcmF0ZV9vYnNlcnZl
cnNfLnNpemUoKTsgfQorCisgcHJpdmF0ZToKKyAgY29uc3QgTWVkaWFUcmFuc3BvcnRTZXR0aW5n
cyBzZXR0aW5nc187CisgIE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayogc3RhdGVfY2FsbGJh
Y2tfOworICBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKj4g
dGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXzsKK307CisKKy8vIEZha2UgbWVkaWEgdHJhbnNwb3J0IGZh
Y3RvcnkgY3JlYXRlcyBmYWtlIG1lZGlhIHRyYW5zcG9ydC4KK2NsYXNzIEZha2VNZWRpYVRyYW5z
cG9ydEZhY3RvcnkgOiBwdWJsaWMgTWVkaWFUcmFuc3BvcnRGYWN0b3J5IHsKKyBwdWJsaWM6Cisg
IEZha2VNZWRpYVRyYW5zcG9ydEZhY3RvcnkoKSA9IGRlZmF1bHQ7CisgIH5GYWtlTWVkaWFUcmFu
c3BvcnRGYWN0b3J5KCkgPSBkZWZhdWx0OworCisgIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRy
PE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPj4gQ3JlYXRlTWVkaWFUcmFuc3BvcnQoCisgICAgICBy
dGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiBwYWNrZXRfdHJhbnNwb3J0LAorICAgICAgcnRj
OjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgICAgYm9vbCBpc19jYWxsZXIpIG92ZXJyaWRl
IHsKKyAgICBNZWRpYVRyYW5zcG9ydFNldHRpbmdzIHNldHRpbmdzOworICAgIHNldHRpbmdzLmlz
X2NhbGxlciA9IGlzX2NhbGxlcjsKKyAgICByZXR1cm4gQ3JlYXRlTWVkaWFUcmFuc3BvcnQocGFj
a2V0X3RyYW5zcG9ydCwgbmV0d29ya190aHJlYWQsIHNldHRpbmdzKTsKKyAgfQorCisgIFJUQ0Vy
cm9yT3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPj4gQ3JlYXRlTWVk
aWFUcmFuc3BvcnQoCisgICAgICBydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiBwYWNrZXRf
dHJhbnNwb3J0LAorICAgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgICAgY29u
c3QgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyYgc2V0dGluZ3MpIG92ZXJyaWRlIHsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+IG1lZGlhX3RyYW5zcG9ydCA9Cisg
ICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VNZWRpYVRyYW5zcG9ydD4oc2V0dGluZ3MpOwor
ICAgIHJldHVybiBzdGQ6Om1vdmUobWVkaWFfdHJhbnNwb3J0KTsKKyAgfQorfTsKKworfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9URVNUX0ZBS0VfTUVESUFfVFJBTlNQ
T1JUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5z
cG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ4MjU1YjEzNWU3NTA4Y2FiMDA0OTY2MzBhNTM3ZmRjMzc5YjQ3
M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnQuaApAQCAtMCwwICsxLDI5
MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVTVF9MT09QQkFDS19NRURJ
QV9UUkFOU1BPUlRfSF8KKyNkZWZpbmUgQVBJX1RFU1RfTE9PUEJBQ0tfTUVESUFfVFJBTlNQT1JU
X0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUg
ImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYXN5
bmNpbnZva2VyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNr
ZXIuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFdyYXBwZXIgdXNlZCB0byBoYW5kIG91
dCB1bmlxdWVfcHRycyB0byBsb29wYmFjayBtZWRpYSB0cmFuc3BvcnRzIHdpdGhvdXQKKy8vIG93
bmVyc2hpcCBjaGFuZ2VzLgorY2xhc3MgV3JhcHBlck1lZGlhVHJhbnNwb3J0IDogcHVibGljIE1l
ZGlhVHJhbnNwb3J0SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFdyYXBwZXJNZWRp
YVRyYW5zcG9ydChNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogd3JhcHBlZCkKKyAgICAgIDogd3Jh
cHBlZF8od3JhcHBlZCkge30KKworICBSVENFcnJvciBTZW5kQXVkaW9GcmFtZSh1aW50NjRfdCBj
aGFubmVsX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVRyYW5zcG9ydEVuY29k
ZWRBdWRpb0ZyYW1lIGZyYW1lKSBvdmVycmlkZSB7CisgICAgcmV0dXJuIHdyYXBwZWRfLT5TZW5k
QXVkaW9GcmFtZShjaGFubmVsX2lkLCBzdGQ6Om1vdmUoZnJhbWUpKTsKKyAgfQorCisgIFJUQ0Vy
cm9yIFNlbmRWaWRlb0ZyYW1lKAorICAgICAgdWludDY0X3QgY2hhbm5lbF9pZCwKKyAgICAgIGNv
bnN0IE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmIGZyYW1lKSBvdmVycmlkZSB7Cisg
ICAgcmV0dXJuIHdyYXBwZWRfLT5TZW5kVmlkZW9GcmFtZShjaGFubmVsX2lkLCBmcmFtZSk7Cisg
IH0KKworICBSVENFcnJvciBSZXF1ZXN0S2V5RnJhbWUodWludDY0X3QgY2hhbm5lbF9pZCkgb3Zl
cnJpZGUgeworICAgIHJldHVybiB3cmFwcGVkXy0+UmVxdWVzdEtleUZyYW1lKGNoYW5uZWxfaWQp
OworICB9CisKKyAgdm9pZCBTZXRSZWNlaXZlQXVkaW9TaW5rKE1lZGlhVHJhbnNwb3J0QXVkaW9T
aW5rSW50ZXJmYWNlKiBzaW5rKSBvdmVycmlkZSB7CisgICAgd3JhcHBlZF8tPlNldFJlY2VpdmVB
dWRpb1Npbmsoc2luayk7CisgIH0KKworICB2b2lkIFNldFJlY2VpdmVWaWRlb1NpbmsoTWVkaWFU
cmFuc3BvcnRWaWRlb1NpbmtJbnRlcmZhY2UqIHNpbmspIG92ZXJyaWRlIHsKKyAgICB3cmFwcGVk
Xy0+U2V0UmVjZWl2ZVZpZGVvU2luayhzaW5rKTsKKyAgfQorCisgIHZvaWQgU2V0TWVkaWFUcmFu
c3BvcnRTdGF0ZUNhbGxiYWNrKAorICAgICAgTWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrKiBj
YWxsYmFjaykgb3ZlcnJpZGUgeworICAgIHdyYXBwZWRfLT5TZXRNZWRpYVRyYW5zcG9ydFN0YXRl
Q2FsbGJhY2soY2FsbGJhY2spOworICB9CisKKyAgUlRDRXJyb3IgU2VuZERhdGEoaW50IGNoYW5u
ZWxfaWQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlbmREYXRhUGFyYW1zJiBwYXJhbXMs
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIGJ1ZmZl
cikgb3ZlcnJpZGUgeworICAgIHJldHVybiB3cmFwcGVkXy0+U2VuZERhdGEoY2hhbm5lbF9pZCwg
cGFyYW1zLCBidWZmZXIpOworICB9CisKKyAgUlRDRXJyb3IgQ2xvc2VDaGFubmVsKGludCBjaGFu
bmVsX2lkKSBvdmVycmlkZSB7CisgICAgcmV0dXJuIHdyYXBwZWRfLT5DbG9zZUNoYW5uZWwoY2hh
bm5lbF9pZCk7CisgIH0KKworICB2b2lkIFNldERhdGFTaW5rKERhdGFDaGFubmVsU2luayogc2lu
aykgb3ZlcnJpZGUgeworICAgIHdyYXBwZWRfLT5TZXREYXRhU2luayhzaW5rKTsKKyAgfQorCisg
cHJpdmF0ZToKKyAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIHdyYXBwZWRfOworfTsKKworY2xh
c3MgV3JhcHBlck1lZGlhVHJhbnNwb3J0RmFjdG9yeSA6IHB1YmxpYyBNZWRpYVRyYW5zcG9ydEZh
Y3RvcnkgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgV3JhcHBlck1lZGlhVHJhbnNwb3J0RmFjdG9y
eShNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogd3JhcHBlZCkKKyAgICAgIDogd3JhcHBlZF8od3Jh
cHBlZCkge30KKworICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydElu
dGVyZmFjZT4+IENyZWF0ZU1lZGlhVHJhbnNwb3J0KAorICAgICAgcnRjOjpQYWNrZXRUcmFuc3Bv
cnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9ydCwKKyAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3Jr
X3RocmVhZCwKKyAgICAgIGNvbnN0IE1lZGlhVHJhbnNwb3J0U2V0dGluZ3MmIHNldHRpbmdzKSBv
dmVycmlkZSB7CisgICAgcmV0dXJuIHthYnNsOjptYWtlX3VuaXF1ZTxXcmFwcGVyTWVkaWFUcmFu
c3BvcnQ+KHdyYXBwZWRfKX07CisgIH0KKworIHByaXZhdGU6CisgIE1lZGlhVHJhbnNwb3J0SW50
ZXJmYWNlKiB3cmFwcGVkXzsKK307CisKKy8vIENvbnRhaW5zIHR3byBNZWRpYVRyYW5zcG9ydHNJ
bnRlcmZhY2VzIHRoYXQgYXJlIGNvbm5lY3RlZCB0byBlYWNoIG90aGVyLgorLy8gQ3VycmVudGx5
IHN1cHBvcnRzIGF1ZGlvIG9ubHkuCitjbGFzcyBNZWRpYVRyYW5zcG9ydFBhaXIgeworIHB1Ymxp
YzoKKyAgc3RydWN0IFN0YXRzIHsKKyAgICBpbnQgc2VudF9hdWRpb19mcmFtZXMgPSAwOworICAg
IGludCByZWNlaXZlZF9hdWRpb19mcmFtZXMgPSAwOworICB9OworCisgIGV4cGxpY2l0IE1lZGlh
VHJhbnNwb3J0UGFpcihydGM6OlRocmVhZCogdGhyZWFkKQorICAgICAgOiBmaXJzdF8odGhyZWFk
LCAmc2Vjb25kXyksIHNlY29uZF8odGhyZWFkLCAmZmlyc3RfKSB7fQorCisgIC8vIE93bmVyc2hp
cCBzdGF5cyB3aXRoIE1lZGlhVHJhbnNwb3J0UGFpcgorICBNZWRpYVRyYW5zcG9ydEludGVyZmFj
ZSogZmlyc3QoKSB7IHJldHVybiAmZmlyc3RfOyB9CisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNl
KiBzZWNvbmQoKSB7IHJldHVybiAmc2Vjb25kXzsgfQorCisgIHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YVRyYW5zcG9ydEZhY3Rvcnk+IGZpcnN0X2ZhY3RvcnkoKSB7CisgICAgcmV0dXJuIGFic2w6Om1h
a2VfdW5pcXVlPFdyYXBwZXJNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+KCZmaXJzdF8pOworICB9CisK
KyAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gc2Vjb25kX2ZhY3Rvcnko
KSB7CisgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFdyYXBwZXJNZWRpYVRyYW5zcG9ydEZh
Y3Rvcnk+KCZzZWNvbmRfKTsKKyAgfQorCisgIHZvaWQgU2V0U3RhdGUoTWVkaWFUcmFuc3BvcnRT
dGF0ZSBzdGF0ZSkgeworICAgIGZpcnN0Xy5TZXRTdGF0ZShzdGF0ZSk7CisgICAgc2Vjb25kXy5T
ZXRTdGF0ZShzdGF0ZSk7CisgIH0KKworICB2b2lkIEZsdXNoQXN5bmNJbnZva2VzKCkgeworICAg
IGZpcnN0Xy5GbHVzaEFzeW5jSW52b2tlcygpOworICAgIHNlY29uZF8uRmx1c2hBc3luY0ludm9r
ZXMoKTsKKyAgfQorCisgIFN0YXRzIEZpcnN0U3RhdHMoKSB7IHJldHVybiBmaXJzdF8uR2V0U3Rh
dHMoKTsgfQorICBTdGF0cyBTZWNvbmRTdGF0cygpIHsgcmV0dXJuIHNlY29uZF8uR2V0U3RhdHMo
KTsgfQorCisgcHJpdmF0ZToKKyAgY2xhc3MgTG9vcGJhY2tNZWRpYVRyYW5zcG9ydCA6IHB1Ymxp
YyBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSB7CisgICBwdWJsaWM6CisgICAgTG9vcGJhY2tNZWRp
YVRyYW5zcG9ydChydGM6OlRocmVhZCogdGhyZWFkLCBMb29wYmFja01lZGlhVHJhbnNwb3J0KiBv
dGhlcikKKyAgICAgICAgOiB0aHJlYWRfKHRocmVhZCksIG90aGVyXyhvdGhlcikge30KKworICAg
IH5Mb29wYmFja01lZGlhVHJhbnNwb3J0KCkgeworICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygm
c2lua19sb2NrXyk7CisgICAgICBSVENfQ0hFQ0soc2lua18gPT0gbnVsbHB0cik7CisgICAgICBS
VENfQ0hFQ0soZGF0YV9zaW5rXyA9PSBudWxscHRyKTsKKyAgICB9CisKKyAgICBSVENFcnJvciBT
ZW5kQXVkaW9GcmFtZSh1aW50NjRfdCBjaGFubmVsX2lkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgZnJhbWUpIG92ZXJyaWRlIHsK
KyAgICAgIHsKKyAgICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc3RhdHNfbG9ja18pOworICAg
ICAgICArK3N0YXRzXy5zZW50X2F1ZGlvX2ZyYW1lczsKKyAgICAgIH0KKyAgICAgIGludm9rZXJf
LkFzeW5jSW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIHRocmVhZF8sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbdGhpcywgY2hhbm5lbF9pZCwgZnJhbWVdIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfLT5PbkRhdGEoY2hhbm5lbF9pZCwgc3Rk
Ojptb3ZlKGZyYW1lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgIHJldHVybiBSVENFcnJvcjo6T0soKTsKKyAgICB9OworCisgICAgUlRDRXJyb3IgU2VuZFZp
ZGVvRnJhbWUoCisgICAgICAgIHVpbnQ2NF90IGNoYW5uZWxfaWQsCisgICAgICAgIGNvbnN0IE1l
ZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmIGZyYW1lKSBvdmVycmlkZSB7CisgICAgICBy
ZXR1cm4gUlRDRXJyb3I6Ok9LKCk7CisgICAgfQorCisgICAgUlRDRXJyb3IgUmVxdWVzdEtleUZy
YW1lKHVpbnQ2NF90IGNoYW5uZWxfaWQpIG92ZXJyaWRlIHsKKyAgICAgIHJldHVybiBSVENFcnJv
cjo6T0soKTsKKyAgICB9CisKKyAgICB2b2lkIFNldFJlY2VpdmVBdWRpb1NpbmsoTWVkaWFUcmFu
c3BvcnRBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmspIG92ZXJyaWRlIHsKKyAgICAgIHJ0Yzo6Q3Jp
dFNjb3BlIGxvY2soJnNpbmtfbG9ja18pOworICAgICAgaWYgKHNpbmspIHsKKyAgICAgICAgUlRD
X0NIRUNLKHNpbmtfID09IG51bGxwdHIpOworICAgICAgfQorICAgICAgc2lua18gPSBzaW5rOwor
ICAgIH0KKworICAgIHZvaWQgU2V0UmVjZWl2ZVZpZGVvU2luayhNZWRpYVRyYW5zcG9ydFZpZGVv
U2lua0ludGVyZmFjZSogc2luaykgb3ZlcnJpZGUge30KKworICAgIHZvaWQgU2V0TWVkaWFUcmFu
c3BvcnRTdGF0ZUNhbGxiYWNrKAorICAgICAgICBNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sq
IGNhbGxiYWNrKSBvdmVycmlkZSB7CisgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZzaW5rX2xv
Y2tfKTsKKyAgICAgIHN0YXRlX2NhbGxiYWNrXyA9IGNhbGxiYWNrOworICAgICAgaW52b2tlcl8u
QXN5bmNJbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgdGhyZWFkXywgW3RoaXNdIHsKKyAgICAg
ICAgUlRDX0RDSEVDS19SVU5fT04odGhyZWFkXyk7CisgICAgICAgIE9uU3RhdGVDaGFuZ2VkKCk7
CisgICAgICB9KTsKKyAgICB9CisKKyAgICBSVENFcnJvciBTZW5kRGF0YShpbnQgY2hhbm5lbF9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTZW5kRGF0YVBhcmFtcyYgcGFyYW1zLAor
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIGJ1ZmZl
cikgb3ZlcnJpZGUgeworICAgICAgaW52b2tlcl8uQXN5bmNJbnZva2U8dm9pZD4oCisgICAgICAg
ICAgUlRDX0ZST01fSEVSRSwgdGhyZWFkXywgW3RoaXMsIGNoYW5uZWxfaWQsIHBhcmFtcywgYnVm
ZmVyXSB7CisgICAgICAgICAgICBvdGhlcl8tPk9uRGF0YShjaGFubmVsX2lkLCBwYXJhbXMudHlw
ZSwgYnVmZmVyKTsKKyAgICAgICAgICB9KTsKKyAgICAgIHJldHVybiBSVENFcnJvcjo6T0soKTsK
KyAgICB9CisKKyAgICBSVENFcnJvciBDbG9zZUNoYW5uZWwoaW50IGNoYW5uZWxfaWQpIG92ZXJy
aWRlIHsKKyAgICAgIGludm9rZXJfLkFzeW5jSW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIHRo
cmVhZF8sIFt0aGlzLCBjaGFubmVsX2lkXSB7CisgICAgICAgIG90aGVyXy0+T25SZW1vdGVDbG9z
ZUNoYW5uZWwoY2hhbm5lbF9pZCk7CisgICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNpbmtf
bG9ja18pOworICAgICAgICBpZiAoZGF0YV9zaW5rXykgeworICAgICAgICAgIGRhdGFfc2lua18t
Pk9uQ2hhbm5lbENsb3NlZChjaGFubmVsX2lkKTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAg
ICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7CisgICAgfQorCisgICAgdm9pZCBTZXREYXRhU2luayhE
YXRhQ2hhbm5lbFNpbmsqIHNpbmspIG92ZXJyaWRlIHsKKyAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxv
Y2soJnNpbmtfbG9ja18pOworICAgICAgZGF0YV9zaW5rXyA9IHNpbms7CisgICAgfQorCisgICAg
dm9pZCBTZXRTdGF0ZShNZWRpYVRyYW5zcG9ydFN0YXRlIHN0YXRlKSB7CisgICAgICBpbnZva2Vy
Xy5Bc3luY0ludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCB0aHJlYWRfLCBbdGhpcywgc3RhdGVd
IHsKKyAgICAgICAgUlRDX0RDSEVDS19SVU5fT04odGhyZWFkXyk7CisgICAgICAgIHN0YXRlXyA9
IHN0YXRlOworICAgICAgICBPblN0YXRlQ2hhbmdlZCgpOworICAgICAgfSk7CisgICAgfQorCisg
ICAgdm9pZCBGbHVzaEFzeW5jSW52b2tlcygpIHsgaW52b2tlcl8uRmx1c2godGhyZWFkXyk7IH0K
KworICAgIFN0YXRzIEdldFN0YXRzKCkgeworICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc3Rh
dHNfbG9ja18pOworICAgICAgcmV0dXJuIHN0YXRzXzsKKyAgICB9CisKKyAgIHByaXZhdGU6Cisg
ICAgdm9pZCBPbkRhdGEodWludDY0X3QgY2hhbm5lbF9pZCwgTWVkaWFUcmFuc3BvcnRFbmNvZGVk
QXVkaW9GcmFtZSBmcmFtZSkgeworICAgICAgeworICAgICAgICBydGM6OkNyaXRTY29wZSBsb2Nr
KCZzaW5rX2xvY2tfKTsKKyAgICAgICAgaWYgKHNpbmtfKSB7CisgICAgICAgICAgc2lua18tPk9u
RGF0YShjaGFubmVsX2lkLCBmcmFtZSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHsKKyAg
ICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc3RhdHNfbG9ja18pOworICAgICAgICArK3N0YXRz
Xy5yZWNlaXZlZF9hdWRpb19mcmFtZXM7CisgICAgICB9CisgICAgfQorCisgICAgdm9pZCBPbkRh
dGEoaW50IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAgICAgRGF0YU1lc3NhZ2VUeXBlIHR5cGUs
CisgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgYnVmZmVyKSB7
CisgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZzaW5rX2xvY2tfKTsKKyAgICAgIGlmIChkYXRh
X3NpbmtfKSB7CisgICAgICAgIGRhdGFfc2lua18tPk9uRGF0YVJlY2VpdmVkKGNoYW5uZWxfaWQs
IHR5cGUsIGJ1ZmZlcik7CisgICAgICB9CisgICAgfQorCisgICAgdm9pZCBPblJlbW90ZUNsb3Nl
Q2hhbm5lbChpbnQgY2hhbm5lbF9pZCkgeworICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2lu
a19sb2NrXyk7CisgICAgICBpZiAoZGF0YV9zaW5rXykgeworICAgICAgICBkYXRhX3NpbmtfLT5P
bkNoYW5uZWxDbG9zaW5nKGNoYW5uZWxfaWQpOworICAgICAgICBkYXRhX3NpbmtfLT5PbkNoYW5u
ZWxDbG9zZWQoY2hhbm5lbF9pZCk7CisgICAgICB9CisgICAgfQorCisgICAgdm9pZCBPblN0YXRl
Q2hhbmdlZCgpIFJUQ19SVU5fT04odGhyZWFkXykgeworICAgICAgcnRjOjpDcml0U2NvcGUgbG9j
aygmc2lua19sb2NrXyk7CisgICAgICBpZiAoc3RhdGVfY2FsbGJhY2tfKSB7CisgICAgICAgIHN0
YXRlX2NhbGxiYWNrXy0+T25TdGF0ZUNoYW5nZWQoc3RhdGVfKTsKKyAgICAgIH0KKyAgICB9CisK
KyAgICBydGM6OlRocmVhZCogY29uc3QgdGhyZWFkXzsKKyAgICBydGM6OkNyaXRpY2FsU2VjdGlv
biBzaW5rX2xvY2tfOworICAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHN0YXRzX2xvY2tfOworCisg
ICAgTWVkaWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmtfIFJUQ19HVUFSREVEX0JZ
KHNpbmtfbG9ja18pID0KKyAgICAgICAgbnVsbHB0cjsKKyAgICBEYXRhQ2hhbm5lbFNpbmsqIGRh
dGFfc2lua18gUlRDX0dVQVJERURfQlkoc2lua19sb2NrXykgPSBudWxscHRyOworICAgIE1lZGlh
VHJhbnNwb3J0U3RhdGVDYWxsYmFjayogc3RhdGVfY2FsbGJhY2tfIFJUQ19HVUFSREVEX0JZKHNp
bmtfbG9ja18pID0KKyAgICAgICAgbnVsbHB0cjsKKworICAgIE1lZGlhVHJhbnNwb3J0U3RhdGUg
c3RhdGVfIFJUQ19HVUFSREVEX0JZKHRocmVhZF8pID0KKyAgICAgICAgTWVkaWFUcmFuc3BvcnRT
dGF0ZTo6a1BlbmRpbmc7CisKKyAgICBMb29wYmFja01lZGlhVHJhbnNwb3J0KiBjb25zdCBvdGhl
cl87CisKKyAgICBTdGF0cyBzdGF0c18gUlRDX0dVQVJERURfQlkoc3RhdHNfbG9ja18pOworCisg
ICAgcnRjOjpBc3luY0ludm9rZXIgaW52b2tlcl87CisgIH07CisKKyAgTG9vcGJhY2tNZWRpYVRy
YW5zcG9ydCBmaXJzdF87CisgIExvb3BiYWNrTWVkaWFUcmFuc3BvcnQgc2Vjb25kXzsKK307CisK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVEVTVF9MT09QQkFDS19N
RURJQV9UUkFOU1BPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydF91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0
L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydF91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTc0MWEw
NWNhNzk4NjJkNjgzNDBlODI1ZDdjY2Q1MGRlYWYyN2I3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbG9vcGJhY2tf
bWVkaWFfdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogIENv
cHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KKyAqLworCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1
ZGUgImFwaS90ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgInRlc3Qv
Z21vY2suaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIE1v
Y2tNZWRpYVRyYW5zcG9ydEF1ZGlvU2lua0ludGVyZmFjZQorICAgIDogcHVibGljIE1lZGlhVHJh
bnNwb3J0QXVkaW9TaW5rSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMihPbkRh
dGEsIHZvaWQodWludDY0X3QsIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUpKTsKK307
CisKK2NsYXNzIE1vY2tEYXRhQ2hhbm5lbFNpbmsgOiBwdWJsaWMgRGF0YUNoYW5uZWxTaW5rIHsK
KyBwdWJsaWM6CisgIE1PQ0tfTUVUSE9EMyhPbkRhdGFSZWNlaXZlZCwKKyAgICAgICAgICAgICAg
IHZvaWQoaW50LCBEYXRhTWVzc2FnZVR5cGUsIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIm
KSk7CisgIE1PQ0tfTUVUSE9EMShPbkNoYW5uZWxDbG9zaW5nLCB2b2lkKGludCkpOworICBNT0NL
X01FVEhPRDEoT25DaGFubmVsQ2xvc2VkLCB2b2lkKGludCkpOworfTsKKworY2xhc3MgTW9ja1N0
YXRlQ2FsbGJhY2sgOiBwdWJsaWMgTWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrIHsKKyBwdWJs
aWM6CisgIE1PQ0tfTUVUSE9EMShPblN0YXRlQ2hhbmdlZCwgdm9pZChNZWRpYVRyYW5zcG9ydFN0
YXRlKSk7Cit9OworCisvLyBUZXN0IG9ubHkgdXNlcyB0aGUgc2VxdWVuY2UgbnVtYmVyLgorTWVk
aWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSBDcmVhdGVBdWRpb0ZyYW1lKGludCBzZXF1ZW5j
ZV9udW1iZXIpIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga1NhbXBsaW5nUmF0ZUh6ID0gNDgw
MDA7CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtTdGFydGluZ1NhbXBsZUluZGV4ID0gMDsKKyAg
c3RhdGljIGNvbnN0ZXhwciBpbnQga1NhbXBsZXNQZXJDaGFubmVsID0gNDgwOworICBzdGF0aWMg
Y29uc3RleHByIHVpbnQ4X3Qga1BheWxvYWRUeXBlID0gMTc7CisKKyAgcmV0dXJuIE1lZGlhVHJh
bnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUoCisgICAgICBrU2FtcGxpbmdSYXRlSHosIGtTdGFydGlu
Z1NhbXBsZUluZGV4LCBrU2FtcGxlc1BlckNoYW5uZWwsCisgICAgICBzZXF1ZW5jZV9udW1iZXIs
IE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6OkZyYW1lVHlwZTo6a1NwZWVjaCwKKyAg
ICAgIGtQYXlsb2FkVHlwZSwgc3RkOjp2ZWN0b3I8dWludDhfdD4oa1NhbXBsZXNQZXJDaGFubmVs
KSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitURVNUKExvb3BiYWNrTWVkaWFUcmFuc3BvcnQs
IEF1ZGlvV2l0aE5vU2lua1NpbGVudGx5SWdub3JlZCkgeworICBzdGQ6OnVuaXF1ZV9wdHI8cnRj
OjpUaHJlYWQ+IHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAgdGhyZWFkLT5TdGFy
dCgpOworICBNZWRpYVRyYW5zcG9ydFBhaXIgdHJhbnNwb3J0X3BhaXIodGhyZWFkLmdldCgpKTsK
KyAgdHJhbnNwb3J0X3BhaXIuZmlyc3QoKS0+U2VuZEF1ZGlvRnJhbWUoMSwgQ3JlYXRlQXVkaW9G
cmFtZSgwKSk7CisgIHRyYW5zcG9ydF9wYWlyLnNlY29uZCgpLT5TZW5kQXVkaW9GcmFtZSgyLCBD
cmVhdGVBdWRpb0ZyYW1lKDApKTsKKyAgdHJhbnNwb3J0X3BhaXIuRmx1c2hBc3luY0ludm9rZXMo
KTsKK30KKworVEVTVChMb29wYmFja01lZGlhVHJhbnNwb3J0LCBBdWRpb0RlbGl2ZXJlZFRvU2lu
aykgeworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHRocmVhZCA9IHJ0Yzo6VGhyZWFk
OjpDcmVhdGUoKTsKKyAgdGhyZWFkLT5TdGFydCgpOworICBNZWRpYVRyYW5zcG9ydFBhaXIgdHJh
bnNwb3J0X3BhaXIodGhyZWFkLmdldCgpKTsKKyAgdGVzdGluZzo6U3RyaWN0TW9jazxNb2NrTWVk
aWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2U+IHNpbms7CisgIEVYUEVDVF9DQUxMKHNpbmss
CisgICAgICAgICAgICAgIE9uRGF0YSgxLCB0ZXN0aW5nOjpQcm9wZXJ0eSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6c2VxdWVu
Y2VfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkVxKDEwKSkp
KTsKKyAgdHJhbnNwb3J0X3BhaXIuc2Vjb25kKCktPlNldFJlY2VpdmVBdWRpb1NpbmsoJnNpbmsp
OworICB0cmFuc3BvcnRfcGFpci5maXJzdCgpLT5TZW5kQXVkaW9GcmFtZSgxLCBDcmVhdGVBdWRp
b0ZyYW1lKDEwKSk7CisKKyAgdHJhbnNwb3J0X3BhaXIuRmx1c2hBc3luY0ludm9rZXMoKTsKKyAg
dHJhbnNwb3J0X3BhaXIuc2Vjb25kKCktPlNldFJlY2VpdmVBdWRpb1NpbmsobnVsbHB0cik7Cit9
CisKK1RFU1QoTG9vcGJhY2tNZWRpYVRyYW5zcG9ydCwgRGF0YURlbGl2ZXJlZFRvU2luaykgewor
ICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVh
dGUoKTsKKyAgdGhyZWFkLT5TdGFydCgpOworICBNZWRpYVRyYW5zcG9ydFBhaXIgdHJhbnNwb3J0
X3BhaXIodGhyZWFkLmdldCgpKTsKKworICBNb2NrRGF0YUNoYW5uZWxTaW5rIHNpbms7CisgIHRy
YW5zcG9ydF9wYWlyLmZpcnN0KCktPlNldERhdGFTaW5rKCZzaW5rKTsKKworICBjb25zdCBpbnQg
Y2hhbm5lbF9pZCA9IDE7CisgIEVYUEVDVF9DQUxMKHNpbmssCisgICAgICAgICAgICAgIE9uRGF0
YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgY2hhbm5lbF9pZCwgRGF0YU1lc3NhZ2VUeXBl
OjprVGV4dCwKKyAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlByb3BlcnR5PHJ0Yzo6Q29weU9u
V3JpdGVCdWZmZXIsIGNvbnN0IGNoYXIqPigKKyAgICAgICAgICAgICAgICAgICAgICAmcnRjOjpD
b3B5T25Xcml0ZUJ1ZmZlcjo6Y2RhdGEsIHRlc3Rpbmc6OlN0ckVxKCJmb28iKSkpKTsKKworICBT
ZW5kRGF0YVBhcmFtcyBwYXJhbXM7CisgIHBhcmFtcy50eXBlID0gRGF0YU1lc3NhZ2VUeXBlOjpr
VGV4dDsKKyAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBidWZmZXIoImZvbyIpOworICB0cmFuc3Bv
cnRfcGFpci5zZWNvbmQoKS0+U2VuZERhdGEoY2hhbm5lbF9pZCwgcGFyYW1zLCBidWZmZXIpOwor
CisgIHRyYW5zcG9ydF9wYWlyLkZsdXNoQXN5bmNJbnZva2VzKCk7CisgIHRyYW5zcG9ydF9wYWly
LmZpcnN0KCktPlNldERhdGFTaW5rKG51bGxwdHIpOworfQorCitURVNUKExvb3BiYWNrTWVkaWFU
cmFuc3BvcnQsIENsb3NlRGVsaXZlcmVkVG9TaW5rKSB7CisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6
OlRocmVhZD4gdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOworICB0aHJlYWQtPlN0YXJ0
KCk7CisgIE1lZGlhVHJhbnNwb3J0UGFpciB0cmFuc3BvcnRfcGFpcih0aHJlYWQuZ2V0KCkpOwor
CisgIE1vY2tEYXRhQ2hhbm5lbFNpbmsgZmlyc3Rfc2luazsKKyAgdHJhbnNwb3J0X3BhaXIuZmly
c3QoKS0+U2V0RGF0YVNpbmsoJmZpcnN0X3NpbmspOworCisgIE1vY2tEYXRhQ2hhbm5lbFNpbmsg
c2Vjb25kX3Npbms7CisgIHRyYW5zcG9ydF9wYWlyLnNlY29uZCgpLT5TZXREYXRhU2luaygmc2Vj
b25kX3NpbmspOworCisgIGNvbnN0IGludCBjaGFubmVsX2lkID0gMTsKKyAgeworICAgIHRlc3Rp
bmc6OkluU2VxdWVuY2UgczsKKyAgICBFWFBFQ1RfQ0FMTChzZWNvbmRfc2luaywgT25DaGFubmVs
Q2xvc2luZyhjaGFubmVsX2lkKSk7CisgICAgRVhQRUNUX0NBTEwoc2Vjb25kX3NpbmssIE9uQ2hh
bm5lbENsb3NlZChjaGFubmVsX2lkKSk7CisgICAgRVhQRUNUX0NBTEwoZmlyc3Rfc2luaywgT25D
aGFubmVsQ2xvc2VkKGNoYW5uZWxfaWQpKTsKKyAgfQorCisgIHRyYW5zcG9ydF9wYWlyLmZpcnN0
KCktPkNsb3NlQ2hhbm5lbChjaGFubmVsX2lkKTsKKworICB0cmFuc3BvcnRfcGFpci5GbHVzaEFz
eW5jSW52b2tlcygpOworICB0cmFuc3BvcnRfcGFpci5maXJzdCgpLT5TZXREYXRhU2luayhudWxs
cHRyKTsKKyAgdHJhbnNwb3J0X3BhaXIuc2Vjb25kKCktPlNldERhdGFTaW5rKG51bGxwdHIpOwor
fQorCitURVNUKExvb3BiYWNrTWVkaWFUcmFuc3BvcnQsIEluaXRpYWxTdGF0ZURlbGl2ZXJlZFdo
ZW5DYWxsYmFja1NldCkgeworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHRocmVhZCA9
IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAgdGhyZWFkLT5TdGFydCgpOworICBNZWRpYVRyYW5z
cG9ydFBhaXIgdHJhbnNwb3J0X3BhaXIodGhyZWFkLmdldCgpKTsKKworICBNb2NrU3RhdGVDYWxs
YmFjayBzdGF0ZV9jYWxsYmFjazsKKworICBFWFBFQ1RfQ0FMTChzdGF0ZV9jYWxsYmFjaywgT25T
dGF0ZUNoYW5nZWQoTWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1BlbmRpbmcpKTsKKyAgdHJhbnNwb3J0
X3BhaXIuZmlyc3QoKS0+U2V0TWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrKCZzdGF0ZV9jYWxs
YmFjayk7CisgIHRyYW5zcG9ydF9wYWlyLkZsdXNoQXN5bmNJbnZva2VzKCk7Cit9CisKK1RFU1Qo
TG9vcGJhY2tNZWRpYVRyYW5zcG9ydCwgQ2hhbmdlZFN0YXRlRGVsaXZlcmVkV2hlbkNhbGxiYWNr
U2V0KSB7CisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gdGhyZWFkID0gcnRjOjpUaHJl
YWQ6OkNyZWF0ZSgpOworICB0aHJlYWQtPlN0YXJ0KCk7CisgIE1lZGlhVHJhbnNwb3J0UGFpciB0
cmFuc3BvcnRfcGFpcih0aHJlYWQuZ2V0KCkpOworCisgIHRyYW5zcG9ydF9wYWlyLlNldFN0YXRl
KE1lZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJsZSk7CisgIHRyYW5zcG9ydF9wYWlyLkZsdXNo
QXN5bmNJbnZva2VzKCk7CisKKyAgTW9ja1N0YXRlQ2FsbGJhY2sgc3RhdGVfY2FsbGJhY2s7CisK
KyAgRVhQRUNUX0NBTEwoc3RhdGVfY2FsbGJhY2ssIE9uU3RhdGVDaGFuZ2VkKE1lZGlhVHJhbnNw
b3J0U3RhdGU6OmtXcml0YWJsZSkpOworICB0cmFuc3BvcnRfcGFpci5maXJzdCgpLT5TZXRNZWRp
YVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2soJnN0YXRlX2NhbGxiYWNrKTsKKyAgdHJhbnNwb3J0X3Bh
aXIuRmx1c2hBc3luY0ludm9rZXMoKTsKK30KKworVEVTVChMb29wYmFja01lZGlhVHJhbnNwb3J0
LCBTdGF0ZUNoYW5nZURlbGl2ZXJlZFRvQ2FsbGJhY2spIHsKKyAgc3RkOjp1bmlxdWVfcHRyPHJ0
Yzo6VGhyZWFkPiB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgIHRocmVhZC0+U3Rh
cnQoKTsKKyAgTWVkaWFUcmFuc3BvcnRQYWlyIHRyYW5zcG9ydF9wYWlyKHRocmVhZC5nZXQoKSk7
CisKKyAgTW9ja1N0YXRlQ2FsbGJhY2sgc3RhdGVfY2FsbGJhY2s7CisKKyAgRVhQRUNUX0NBTEwo
c3RhdGVfY2FsbGJhY2ssIE9uU3RhdGVDaGFuZ2VkKE1lZGlhVHJhbnNwb3J0U3RhdGU6OmtQZW5k
aW5nKSk7CisgIEVYUEVDVF9DQUxMKHN0YXRlX2NhbGxiYWNrLCBPblN0YXRlQ2hhbmdlZChNZWRp
YVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpKTsKKyAgdHJhbnNwb3J0X3BhaXIuZmlyc3QoKS0+
U2V0TWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrKCZzdGF0ZV9jYWxsYmFjayk7CisgIHRyYW5z
cG9ydF9wYWlyLlNldFN0YXRlKE1lZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJsZSk7CisgIHRy
YW5zcG9ydF9wYWlyLkZsdXNoQXN5bmNJbnZva2VzKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZGVjcnlwdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja19mcmFtZV9kZWNyeXB0b3IuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjRiNTRmOTY2Y2Q4YzA2MTU4NTY2YTRiNTA1NzM1Mjk1NDlmMGFlYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS90ZXN0L21vY2tfZnJhbWVfZGVjcnlwdG9yLmNjCkBAIC0wLDAgKzEsMTggQEAKKy8qCisg
KiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX2ZyYW1lX2RlY3J5cHRvci5o
IgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworTW9ja0ZyYW1lRGVjcnlwdG9yOjpNb2NrRnJhbWVE
ZWNyeXB0b3IoKSA9IGRlZmF1bHQ7CitNb2NrRnJhbWVEZWNyeXB0b3I6On5Nb2NrRnJhbWVEZWNy
eXB0b3IoKSA9IGRlZmF1bHQ7CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tf
ZnJhbWVfZGVjcnlwdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdGVzdC9tb2NrX2ZyYW1lX2RlY3J5cHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4MDM5NjU1
NGY0ZTA1YmY3MmM4ZjdjY2RkNjc4NjI5ODRhZDFkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX2ZyYW1l
X2RlY3J5cHRvci5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5k
ZWYgQVBJX1RFU1RfTU9DS19GUkFNRV9ERUNSWVBUT1JfSF8KKyNkZWZpbmUgQVBJX1RFU1RfTU9D
S19GUkFNRV9ERUNSWVBUT1JfSF8KKworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFw
aS9jcnlwdG8vZnJhbWVkZWNyeXB0b3JpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2Nr
LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBNb2NrRnJhbWVEZWNyeXB0b3IgOiBw
dWJsaWMgRnJhbWVEZWNyeXB0b3JJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgTW9ja0ZyYW1lRGVj
cnlwdG9yKCk7CisgIH5Nb2NrRnJhbWVEZWNyeXB0b3IoKSBvdmVycmlkZTsKKworICBNT0NLX01F
VEhPRDYoRGVjcnlwdCwKKyAgICAgICAgICAgICAgIGludChjcmlja2V0OjpNZWRpYVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDMyX3Q+JiwKKyAgICAgICAg
ICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiwKKyAgICAgICAgICAgICAg
ICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiwKKyAgICAgICAgICAgICAgICAgICBy
dGM6OkFycmF5Vmlldzx1aW50OF90PiwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QqKSk7CisK
KyAgTU9DS19NRVRIT0QyKEdldE1heFBsYWludGV4dEJ5dGVTaXplLAorICAgICAgICAgICAgICAg
c2l6ZV90KGNyaWNrZXQ6Ok1lZGlhVHlwZSwgc2l6ZV90IGVuY3J5cHRlZF9mcmFtZV9zaXplKSk7
Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1RFU1RfTU9D
S19GUkFNRV9ERUNSWVBUT1JfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9yLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja19mcmFt
ZV9lbmNyeXB0b3IuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk3MjI1OWYwNTdlYzcyYjQ3MWRmMDczMTJhMDRh
NDkxOGRlZTI2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9yLmNjCkBAIC0wLDAg
KzEsMTkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX2Zy
YW1lX2VuY3J5cHRvci5oIgorI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CisKK01vY2tGcmFtZUVuY3J5cHRvcjo6TW9ja0ZyYW1lRW5jcnlwdG9yKCkgPSBkZWZh
dWx0OworTW9ja0ZyYW1lRW5jcnlwdG9yOjp+TW9ja0ZyYW1lRW5jcnlwdG9yKCkgPSBkZWZhdWx0
OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX2ZyYW1lX2VuY3J5cHRvci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9j
a19mcmFtZV9lbmNyeXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGZiMWZkZTg3YjgyNWExN2E3M2ZkZjRl
NjA2MGRkYTZmMDFkYmMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja19mcmFtZV9lbmNyeXB0b3IuaApAQCAt
MCwwICsxLDM4IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9URVNUX01PQ0tf
RlJBTUVfRU5DUllQVE9SX0hfCisjZGVmaW5lIEFQSV9URVNUX01PQ0tfRlJBTUVfRU5DUllQVE9S
X0hfCisKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmgiCisj
aW5jbHVkZSAidGVzdC9nbW9jay5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgTW9j
a0ZyYW1lRW5jcnlwdG9yIDogcHVibGljIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlIHsKKyBwdWJs
aWM6CisgIE1vY2tGcmFtZUVuY3J5cHRvcigpOworICB+TW9ja0ZyYW1lRW5jcnlwdG9yKCkgb3Zl
cnJpZGU7CisKKyAgTU9DS19NRVRIT0Q2KEVuY3J5cHQsCisgICAgICAgICAgICAgICBpbnQoY3Jp
Y2tldDo6TWVkaWFUeXBlLAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90LAorICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+LAorICAgICAgICAgICAgICAg
ICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+LAorICAgICAgICAgICAgICAgICAgIHJ0
Yzo6QXJyYXlWaWV3PHVpbnQ4X3Q+LAorICAgICAgICAgICAgICAgICAgIHNpemVfdCopKTsKKwor
ICBNT0NLX01FVEhPRDIoR2V0TWF4Q2lwaGVydGV4dEJ5dGVTaXplLAorICAgICAgICAgICAgICAg
c2l6ZV90KGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlLCBzaXplX3QgZnJhbWVfc2l6ZSkp
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9URVNUX01P
Q0tfRlJBTUVfRU5DUllQVE9SX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90ZXN0L21vY2tfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBjYWUwNjFhYjc1ZGNkNjY3NTcwZGJiN2NmMzMzY2Y1NTA2ZjFmODQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9t
b2NrX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaApAQCAtMCwwICsxLDM3IEBACisv
KgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVTVF9NT0NLX1ZJREVPX0JJVFJB
VEVfQUxMT0NBVE9SX0ZBQ1RPUllfSF8KKyNkZWZpbmUgQVBJX1RFU1RfTU9DS19WSURFT19CSVRS
QVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRl
ICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgorI2luY2x1ZGUg
InRlc3QvZ21vY2suaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIE1vY2tWaWRlb0Jp
dHJhdGVBbGxvY2F0b3JGYWN0b3J5CisgICAgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0JpdHJhdGVB
bGxvY2F0b3JGYWN0b3J5IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvQml0cmF0ZUFsbG9jYXRvcj4gQ3JlYXRlVmlkZW9CaXRyYXRlQWxsb2NhdG9yKAorICAgICAg
Y29uc3QgVmlkZW9Db2RlYyYgY29kZWMpIHsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvQml0cmF0ZUFsbG9jYXRvcj4oCisgICAgICAgIENyZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRv
clByb3h5KGNvZGVjKSk7CisgIH0KKyAgfk1vY2tWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5
KCkgeyBEaWUoKTsgfQorICBNT0NLX01FVEhPRDEoQ3JlYXRlVmlkZW9CaXRyYXRlQWxsb2NhdG9y
UHJveHksCisgICAgICAgICAgICAgICBWaWRlb0JpdHJhdGVBbGxvY2F0b3IqKGNvbnN0IFZpZGVv
Q29kZWMmKSk7CisgIE1PQ0tfTUVUSE9EMChEaWUsIHZvaWQoKSk7Cit9OworCit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1RFU1RfTU9DS19WSURFT19CSVRSQVRFX0FM
TE9DQVRPUl9GQUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2Rl
Y29kZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODVlZDBlMTY3ODJhYTkwMzlhNGRlYTY2M2M5NTYxZmUzZTcx
NThkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5jYwpAQCAtMCwwICsxLDIwIEBA
CisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9f
ZGVjb2Rlci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworTW9ja0RlY29kZWRJbWFnZUNhbGxi
YWNrOjpNb2NrRGVjb2RlZEltYWdlQ2FsbGJhY2soKSA9IGRlZmF1bHQ7CitNb2NrRGVjb2RlZElt
YWdlQ2FsbGJhY2s6On5Nb2NrRGVjb2RlZEltYWdlQ2FsbGJhY2soKSA9IGRlZmF1bHQ7CitNb2Nr
VmlkZW9EZWNvZGVyOjpNb2NrVmlkZW9EZWNvZGVyKCkgPSBkZWZhdWx0OworTW9ja1ZpZGVvRGVj
b2Rlcjo6fk1vY2tWaWRlb0RlY29kZXIoKSA9IGRlZmF1bHQ7CisKK30gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192aWRlb19kZWNvZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTZmZjU0NjNmZGUxNDA3ZGJkODIxZGZhNGUzNWVhNDNjMzFhZDBmMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90
ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KKyAqLworCisjaWZuZGVmIEFQSV9URVNUX01PQ0tfVklERU9fREVDT0RFUl9IXworI2RlZmlu
ZSBBUElfVEVTVF9NT0NLX1ZJREVPX0RFQ09ERVJfSF8KKworI2luY2x1ZGUgImFwaS92aWRlb19j
b2RlY3MvdmlkZW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKKworbmFtZXNw
YWNlIHdlYnJ0YyB7CisKK2NsYXNzIE1vY2tEZWNvZGVkSW1hZ2VDYWxsYmFjayA6IHB1YmxpYyBE
ZWNvZGVkSW1hZ2VDYWxsYmFjayB7CisgcHVibGljOgorICBNb2NrRGVjb2RlZEltYWdlQ2FsbGJh
Y2soKTsKKyAgfk1vY2tEZWNvZGVkSW1hZ2VDYWxsYmFjaygpIG92ZXJyaWRlOworCisgIE1PQ0tf
TUVUSE9EMShEZWNvZGVkLCBpbnQzMl90KFZpZGVvRnJhbWUmIGRlY29kZWRJbWFnZSkpOyAgLy8g
Tk9MSU5UCisgIE1PQ0tfTUVUSE9EMihEZWNvZGVkLAorICAgICAgICAgICAgICAgaW50MzJfdChW
aWRlb0ZyYW1lJiBkZWNvZGVkSW1hZ2UsICAvLyBOT0xJTlQKKyAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBkZWNvZGVfdGltZV9tcykpOworICBNT0NLX01FVEhPRDMoRGVjb2RlZCwKKyAg
ICAgICAgICAgICAgIHZvaWQoVmlkZW9GcmFtZSYgZGVjb2RlZEltYWdlLCAgLy8gTk9MSU5UCisg
ICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGludDMyX3Q+IGRlY29kZV90aW1lX21z
LAorICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBxcCkpOworICBN
T0NLX01FVEhPRDEoUmVjZWl2ZWREZWNvZGVkUmVmZXJlbmNlRnJhbWUsCisgICAgICAgICAgICAg
ICBpbnQzMl90KGNvbnN0IHVpbnQ2NF90IHBpY3R1cmVJZCkpOworICBNT0NLX01FVEhPRDEoUmVj
ZWl2ZWREZWNvZGVkRnJhbWUsIGludDMyX3QoY29uc3QgdWludDY0X3QgcGljdHVyZUlkKSk7Cit9
OworCitjbGFzcyBNb2NrVmlkZW9EZWNvZGVyIDogcHVibGljIFZpZGVvRGVjb2RlciB7CisgcHVi
bGljOgorICBNb2NrVmlkZW9EZWNvZGVyKCk7CisgIH5Nb2NrVmlkZW9EZWNvZGVyKCkgb3ZlcnJp
ZGU7CisKKyAgTU9DS19NRVRIT0QyKEluaXREZWNvZGUsCisgICAgICAgICAgICAgICBpbnQzMl90
KGNvbnN0IFZpZGVvQ29kZWMqIGNvZGVjU2V0dGluZ3MsIGludDMyX3QgbnVtYmVyT2ZDb3Jlcykp
OworICBNT0NLX01FVEhPRDQoRGVjb2RlLAorICAgICAgICAgICAgICAgaW50MzJfdChjb25zdCBF
bmNvZGVkSW1hZ2UmIGlucHV0SW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWlz
c2luZ0ZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0lu
Zm8qIGNvZGVjU3BlY2lmaWNJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJl
bmRlclRpbWVNcykpOworICBNT0NLX01FVEhPRDEoUmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxi
YWNrLAorICAgICAgICAgICAgICAgaW50MzJfdChEZWNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJh
Y2spKTsKKyAgTU9DS19NRVRIT0QwKFJlbGVhc2UsIGludDMyX3QoKSk7CisgIE1PQ0tfTUVUSE9E
MChDb3B5LCBWaWRlb0RlY29kZXIqKCkpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywor
CisjZW5kaWYgIC8vIEFQSV9URVNUX01PQ0tfVklERU9fREVDT0RFUl9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192
aWRlb19lbmNvZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3Rlc3QvbW9ja192aWRlb19lbmNvZGVyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwZDgyYjFjMzNi
MWZjMjdlYmFlZTk0OGE2YjliYzhlM2NmMzllYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2Vu
Y29kZXIuY2MKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNs
dWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CisKK01vY2tFbmNvZGVkSW1hZ2VDYWxsYmFjazo6TW9ja0VuY29kZWRJbWFnZUNhbGxiYWNrKCkg
PSBkZWZhdWx0OworTW9ja0VuY29kZWRJbWFnZUNhbGxiYWNrOjp+TW9ja0VuY29kZWRJbWFnZUNh
bGxiYWNrKCkgPSBkZWZhdWx0OworTW9ja1ZpZGVvRW5jb2Rlcjo6TW9ja1ZpZGVvRW5jb2Rlcigp
ID0gZGVmYXVsdDsKK01vY2tWaWRlb0VuY29kZXI6On5Nb2NrVmlkZW9FbmNvZGVyKCkgPSBkZWZh
dWx0OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21v
Y2tfdmlkZW9fZW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyZjE3YmFiODg0MjU1YmU4ODkwZjU2NDhl
MWQ5YTc3ZDc4YTlmZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIuaApAQCAtMCww
ICsxLDU3IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVTVF9NT0NL
X1ZJREVPX0VOQ09ERVJfSF8KKyNkZWZpbmUgQVBJX1RFU1RfTU9DS19WSURFT19FTkNPREVSX0hf
CisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVv
X2VuY29kZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCitjbGFzcyBNb2NrRW5jb2RlZEltYWdlQ2FsbGJhY2sgOiBwdWJsaWMgRW5jb2RlZEltYWdl
Q2FsbGJhY2sgeworIHB1YmxpYzoKKyAgTW9ja0VuY29kZWRJbWFnZUNhbGxiYWNrKCk7CisgIH5N
b2NrRW5jb2RlZEltYWdlQ2FsbGJhY2soKTsKKyAgTU9DS19NRVRIT0QzKE9uRW5jb2RlZEltYWdl
LAorICAgICAgICAgICAgICAgUmVzdWx0KGNvbnN0IEVuY29kZWRJbWFnZSYgZW5jb2RlZEltYWdl
LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY1Nw
ZWNpZmljSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSVFBGcmFnbWVudGF0aW9u
SGVhZGVyKiBmcmFnbWVudGF0aW9uKSk7Cit9OworCitjbGFzcyBNb2NrVmlkZW9FbmNvZGVyIDog
cHVibGljIFZpZGVvRW5jb2RlciB7CisgcHVibGljOgorICBNb2NrVmlkZW9FbmNvZGVyKCk7Cisg
IH5Nb2NrVmlkZW9FbmNvZGVyKCk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMihWZXJzaW9uLCBpbnQz
Ml90KGludDhfdCogdmVyc2lvbiwgaW50MzJfdCBsZW5ndGgpKTsKKyAgTU9DS19NRVRIT0QzKElu
aXRFbmNvZGUsCisgICAgICAgICAgICAgICBpbnQzMl90KGNvbnN0IFZpZGVvQ29kZWMqIGNvZGVj
U2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbnVtYmVyT2ZDb3JlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1heFBheWxvYWRTaXplKSk7CisgIE1PQ0tf
TUVUSE9EMyhFbmNvZGUsCisgICAgICAgICAgICAgICBpbnQzMl90KGNvbnN0IFZpZGVvRnJhbWUm
IGlucHV0SW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJ
bmZvKiBjb2RlY1NwZWNpZmljSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8RnJhbWVUeXBlPiogZnJhbWVfdHlwZXMpKTsKKyAgTU9DS19NRVRIT0QxKFJlZ2lz
dGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaywKKyAgICAgICAgICAgICAgIGludDMyX3QoRW5jb2Rl
ZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSk7CisgIE1PQ0tfTUVUSE9EMChSZWxlYXNlLCBpbnQz
Ml90KCkpOworICBNT0NLX01FVEhPRDAoUmVzZXQsIGludDMyX3QoKSk7CisgIE1PQ0tfTUVUSE9E
MihTZXRSYXRlcywgaW50MzJfdCh1aW50MzJfdCBuZXdCaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJh
dGUpKTsKKyAgTU9DS19NRVRIT0QyKFNldFJhdGVBbGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
aW50MzJfdChjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBuZXdCaXRSYXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZVJhdGUpKTsKKyAgTU9DS19DT05TVF9NRVRI
T0QwKEdldEVuY29kZXJJbmZvLCBFbmNvZGVySW5mbyh2b2lkKSk7Cit9OworCit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1RFU1RfTU9DS19WSURFT19FTkNPREVSX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaAppbmRleCBhZWMzMDBj
YWEyYjNlNGZkOGViNmViMjk1NjliNTJjZjgxZWM2NTc0Li5jMDNiNGNhNGNiZjI4YjVhZGIxYjlk
NTYxNTNlZjljYmFjMTUyMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3NpbXVsYXRlZF9u
ZXR3b3JrLmgKQEAgLTQyLDExICs0MiwxMSBAQCBzdHJ1Y3QgUGFja2V0RGVsaXZlcnlJbmZvIHsK
ICAgdWludDY0X3QgcGFja2V0X2lkOwogfTsKIAotLy8gRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9u
Q29uZmlnIGlzIGEgZGVmYXVsdCBuZXR3b3JrIGJlaGF2aW9yIGNvbmZpZ3VyYXRpb24KLS8vIGZv
ciBkZWZhdWx0IG5ldHdvcmsgYmVoYXZpb3IgdGhhdCB3aWxsIGJlIHVzZWQgYnkgV2ViUlRDIGlm
IG5vIGN1c3RvbQorLy8gQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBpcyBhIGJ1aWx0LWlu
IG5ldHdvcmsgYmVoYXZpb3IgY29uZmlndXJhdGlvbgorLy8gZm9yIGJ1aWx0LWluIG5ldHdvcmsg
YmVoYXZpb3IgdGhhdCB3aWxsIGJlIHVzZWQgYnkgV2ViUlRDIGlmIG5vIGN1c3RvbQogLy8gTmV0
d29ya0JlaGF2aW9ySW50ZXJmYWNlIGlzIHByb3ZpZGVkLgotc3RydWN0IERlZmF1bHROZXR3b3Jr
U2ltdWxhdGlvbkNvbmZpZyB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpIHt9
CitzdHJ1Y3QgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyB7CisgIEJ1aWx0SW5OZXR3b3Jr
QmVoYXZpb3JDb25maWcoKSB7fQogICAvLyBRdWV1ZSBsZW5ndGggaW4gbnVtYmVyIG9mIHBhY2tl
dHMuCiAgIHNpemVfdCBxdWV1ZV9sZW5ndGhfcGFja2V0cyA9IDA7CiAgIC8vIERlbGF5IGluIGFk
ZGl0aW9uIHRvIGNhcGFjaXR5IGluZHVjZWQgZGVsYXkuCkBAIC03NSw5ICs3NSw2IEBAIGNsYXNz
IE5ldHdvcmtCZWhhdmlvckludGVyZmFjZSB7CiAgIHZpcnR1YWwgfk5ldHdvcmtCZWhhdmlvcklu
dGVyZmFjZSgpID0gZGVmYXVsdDsKIH07CiAKLS8vIERlcHJlY2F0ZWQuIERPIE5PVCBVU0UuIFVz
ZSBOZXR3b3JrQmVoYXZpb3JJbnRlcmZhY2UgaW5zdGVhZC4KLXVzaW5nIE5ldHdvcmtTaW11bGF0
aW9uSW50ZXJmYWNlID0gTmV0d29ya0JlaGF2aW9ySW50ZXJmYWNlOwotCiB9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCiAKICNlbmRpZiAgLy8gQVBJX1RFU1RfU0lNVUxBVEVEX05FVFdPUktfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90
ZXN0L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUuaAppbmRleCBl
N2VhYjI0MTM0OGRhMTgwY2E1YzgzZDU2NWEzMTE5MWNmODg5NDcyLi41MjcwZDEzMzA2NGEwZDE0
OTI4YjMxOGVkMGI4MjYwZTA4ZjQyOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9zaW11bGNhc3RfdGVzdF9maXh0dXJlLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qv
c2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFNpbXVsY2Fz
dFRlc3RGaXh0dXJlIHsKICAgdmlydHVhbCB2b2lkIFRlc3RTcGF0aW9UZW1wb3JhbExheWVyczMz
M1BhdHRlcm5FbmNvZGVyKCkgPSAwOwogICB2aXJ0dWFsIHZvaWQgVGVzdFNwYXRpb1RlbXBvcmFs
TGF5ZXJzMzIxUGF0dGVybkVuY29kZXIoKSA9IDA7CiAgIHZpcnR1YWwgdm9pZCBUZXN0U3RyaWRl
RW5jb2RlRGVjb2RlKCkgPSAwOworICB2aXJ0dWFsIHZvaWQgVGVzdERlY29kZVdpZHRoSGVpZ2h0
U2V0KCkgPSAwOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3Rlc3RfZGVwZW5k
ZW5jeV9mYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3Rlc3QvdGVzdF9kZXBlbmRlbmN5X2ZhY3RvcnkuY2MKaW5kZXggM2U1OWJjMDk1Yzg3
NDc0OTcwYjU0ZDg2MTcyNzcwZTU0NzkyZGUwNC4uMTc5YzYyMzk0MGYyYmY0ZmYwYmIwOTFkZDc5
Mzk5ZDliYzVkYWQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3Rlc3QvdGVzdF9kZXBlbmRlbmN5X2ZhY3RvcnkuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdGVzdF9kZXBl
bmRlbmN5X2ZhY3RvcnkuY2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2lu
Y2x1ZGUgImFwaS90ZXN0L3Rlc3RfZGVwZW5kZW5jeV9mYWN0b3J5LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW8vQlVJTEQuZ24gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlby9CVUlMRC5n
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YjYzYTRhY2IzZGEyZjRhNTllYTkyZDcwZmU3ZWEyZjgwNDJiNDRlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3Rlc3QvdmlkZW8vQlVJTEQuZ24KQEAgLTAsMCArMSwyNCBAQAorIyBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisjCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisjIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyMgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorIyBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKworaW1wb3J0KCIu
Li8uLi8uLi93ZWJydGMuZ25pIikKKworcnRjX3NvdXJjZV9zZXQoImZ1bmN0aW9uX3ZpZGVvX2Zh
Y3RvcnkiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBw
dWJsaWMgPSBbCisgICAgImZ1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIiwKKyAgICAi
ZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiLAorICBdCisKKyAgZGVwcyA9IFsKKyAg
ICAiLi4vLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vdmlkZW9fY29kZWNzOnZp
ZGVvX2NvZGVjc19hcGkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1v
cnkiLAorICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3Rvcnku
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3Zp
ZGVvL2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzYTQzMjM5
OTc2YTAxMTM5ZWY3MDllMjk0ZTAzOGYxOTkwNDkyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlby9mdW5j
dGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogIENv
cHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVTVF9WSURFT19GVU5DVElPTl9WSURFT19ERUNP
REVSX0ZBQ1RPUllfSF8KKyNkZWZpbmUgQVBJX1RFU1RfVklERU9fRlVOQ1RJT05fVklERU9fREVD
T0RFUl9GQUNUT1JZX0hfCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgorI2luY2x1ZGUgImFwaS92aWRlb19j
b2RlY3MvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCisvLyBBIGRlY29k
ZXIgZmFjdG9yeSBwcm9kdWNpbmcgZGVjb2RlcnMgYnkgY2FsbGluZyBhIHN1cHBsaWVkIGNyZWF0
ZSBmdW5jdGlvbi4KK2NsYXNzIEZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9yeSBmaW5hbCA6IHB1
YmxpYyBWaWRlb0RlY29kZXJGYWN0b3J5IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEZ1bmN0aW9u
VmlkZW9EZWNvZGVyRmFjdG9yeSgKKyAgICAgIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRy
PFZpZGVvRGVjb2Rlcj4oKT4gY3JlYXRlKQorICAgICAgOiBjcmVhdGVfKFtjcmVhdGVdKGNvbnN0
IFNkcFZpZGVvRm9ybWF0JikgeyByZXR1cm4gY3JlYXRlKCk7IH0pIHt9CisgIGV4cGxpY2l0IEZ1
bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9yeSgKKyAgICAgIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlx
dWVfcHRyPFZpZGVvRGVjb2Rlcj4oY29uc3QgU2RwVmlkZW9Gb3JtYXQmKT4KKyAgICAgICAgICBj
cmVhdGUpCisgICAgICA6IGNyZWF0ZV8oc3RkOjptb3ZlKGNyZWF0ZSkpIHt9CisKKyAgLy8gVW51
c2VkIGJ5IHRlc3RzLgorICBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gR2V0U3VwcG9ydGVk
Rm9ybWF0cygpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICBSVENfTk9UUkVBQ0hFRCgpOworICAgIHJl
dHVybiB7fTsKKyAgfQorCisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+IENyZWF0ZVZp
ZGVvRGVjb2RlcigKKyAgICAgIGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIG92ZXJyaWRl
IHsKKyAgICByZXR1cm4gY3JlYXRlXyhmb3JtYXQpOworICB9CisKKyBwcml2YXRlOgorICBjb25z
dCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+KGNvbnN0IFNkcFZp
ZGVvRm9ybWF0Jik+CisgICAgICBjcmVhdGVfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3QK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVEVTVF9WSURFT19GVU5D
VElPTl9WSURFT19ERUNPREVSX0ZBQ1RPUllfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVv
X2VuY29kZXJfZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODVmODQ4Y2QxZmRjODUzMjhhMjQwMmRiMmJhZDgxYWQwMTc4Y2MyOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oCkBAIC0wLDAgKzEs
NjUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9URVNUX1ZJREVPX0ZV
TkNUSU9OX1ZJREVPX0VOQ09ERVJfRkFDVE9SWV9IXworI2RlZmluZSBBUElfVEVTVF9WSURFT19G
VU5DVElPTl9WSURFT19FTkNPREVSX0ZBQ1RPUllfSF8KKworI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9y
PgorCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCisjaW5j
bHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVz
dCB7CisKKy8vIEFuIGVuY29kZXIgZmFjdG9yeSBwcm9kdWNpbmcgZW5jb2RlcnMgYnkgY2FsbGlu
ZyBhIHN1cHBsaWVkIGNyZWF0ZQorLy8gZnVuY3Rpb24uCitjbGFzcyBGdW5jdGlvblZpZGVvRW5j
b2RlckZhY3RvcnkgZmluYWwgOiBwdWJsaWMgVmlkZW9FbmNvZGVyRmFjdG9yeSB7CisgcHVibGlj
OgorICBleHBsaWNpdCBGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkoCisgICAgICBzdGQ6OmZ1
bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KCk+IGNyZWF0ZSkKKyAgICAgIDog
Y3JlYXRlXyhbY3JlYXRlXShjb25zdCBTZHBWaWRlb0Zvcm1hdCYpIHsgcmV0dXJuIGNyZWF0ZSgp
OyB9KSB7fQorICBleHBsaWNpdCBGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkoCisgICAgICBz
dGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KGNvbnN0IFNkcFZpZGVv
Rm9ybWF0Jik+CisgICAgICAgICAgY3JlYXRlKQorICAgICAgOiBjcmVhdGVfKHN0ZDo6bW92ZShj
cmVhdGUpKSB7fQorCisgIC8vIFVudXNlZCBieSB0ZXN0cy4KKyAgc3RkOjp2ZWN0b3I8U2RwVmlk
ZW9Gb3JtYXQ+IEdldFN1cHBvcnRlZEZvcm1hdHMoKSBjb25zdCBvdmVycmlkZSB7CisgICAgUlRD
X05PVFJFQUNIRUQoKTsKKyAgICByZXR1cm4ge307CisgIH0KKworICBDb2RlY0luZm8gUXVlcnlW
aWRlb0VuY29kZXIoCisgICAgICBjb25zdCBTZHBWaWRlb0Zvcm1hdCYgLyogZm9ybWF0ICovKSBj
b25zdCBvdmVycmlkZSB7CisgICAgQ29kZWNJbmZvIGNvZGVjX2luZm87CisgICAgY29kZWNfaW5m
by5pc19oYXJkd2FyZV9hY2NlbGVyYXRlZCA9IGZhbHNlOworICAgIGNvZGVjX2luZm8uaGFzX2lu
dGVybmFsX3NvdXJjZSA9IGZhbHNlOworICAgIHJldHVybiBjb2RlY19pbmZvOworICB9CisKKyAg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVyKAorICAgICAg
Y29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgb3ZlcnJpZGUgeworICAgIHJldHVybiBjcmVh
dGVfKGZvcm1hdCk7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4oY29uc3QgU2RwVmlkZW9Gb3JtYXQmKT4KKyAgICAg
IGNyZWF0ZV87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YworCisjZW5kaWYgIC8vIEFQSV9URVNUX1ZJREVPX0ZVTkNUSU9OX1ZJREVPX0VOQ09ERVJf
RkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW9fcXVhbGl0eV90ZXN0X2ZpeHR1cmUuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3ZpZGVvX3F1YWxpdHlf
dGVzdF9maXh0dXJlLmgKaW5kZXggZmYxNDcyZTlhNThlNjEzNTRlODA1MTkyNTI4ZjNlZjg3NWNl
YzkyMy4uMDY5YTI0MzUzZGU3ZWJjY2RlMzkyYzA2OGE1ZDRlMDVjYzYyN2NmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qvdmlk
ZW9fcXVhbGl0eV90ZXN0X2ZpeHR1cmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlb19xdWFsaXR5X3Rlc3RfZml4dHVyZS5oCkBA
IC04MiwxNSArODIsMTEgQEAgY2xhc3MgVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmVJbnRlcmZhY2Ug
ewogICAgICAgc3RkOjpzdHJpbmcgZ3JhcGhfZGF0YV9vdXRwdXRfZmlsZW5hbWU7CiAgICAgICBz
dGQ6OnN0cmluZyBncmFwaF90aXRsZTsKICAgICB9IGFuYWx5emVyOwotICAgIC8vIERlcHJlY2F0
ZWQuIERPIE5PVCBVU0UuIFVzZSBjb25maWcgaW5zdGVhZC4gVGhpcyBpcyBub3QgcGlwZSBhY3R1
YWxseSwKLSAgICAvLyBpdCBpcyBqdXN0IGNvbmZpZ3VyYXRpb24sIHRoYXQgd2lsbCBiZSBwYXNz
ZWQgdG8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgotICAgIC8vIG9mIHNpbXVsYXRpb24gbGF5ZXIu
Ci0gICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIHBpcGU7CiAgICAgLy8gQ29uZmln
IGZvciBkZWZhdWx0IHNpbXVsYXRpb24gaW1wbGVtZW50YXRpb24uIE11c3QgYmUgbnVsbG9wdCBp
ZgogICAgIC8vIGBzZW5kZXJfbmV0d29ya2AgYW5kIGByZWNlaXZlcl9uZXR3b3JrYCBpbiBJbmpl
Y3Rpb25Db21wb25lbnRzIGFyZQogICAgIC8vIG5vbi1udWxsLiBNYXkgYmUgbnVsbG9wdCBldmVu
IGlmIGBzZW5kZXJfbmV0d29ya2AgYW5kIGByZWNlaXZlcl9uZXR3b3JrYAogICAgIC8vIGFyZSBu
dWxsOyBpbiB0aGF0IGNhc2UsIGEgZGVmYXVsdCBjb25maWcgd2lsbCBiZSB1c2VkLgotICAgIGFi
c2w6Om9wdGlvbmFsPERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZz4gY29uZmlnOworICAg
IGFic2w6Om9wdGlvbmFsPEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWc+IGNvbmZpZzsKICAg
ICBzdHJ1Y3QgU1MgeyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3BhdGlhbCBzY2FsYWJp
bGl0eS4KICAgICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBzdHJlYW1zOyAgLy8gSWYgZW1w
dHksIG9uZSBzdHJlYW0gaXMgYXNzdW1lZC4KICAgICAgIHNpemVfdCBzZWxlY3RlZF9zdHJlYW07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdGVzdC92aWRlb2NvZGVjX3Rlc3RfZml4dHVyZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW9jb2RlY190ZXN0X2ZpeHR1cmUuaApp
bmRleCBhMGI4MDgzZDcyMzZjMzdhMDY4YmViNzAxMmRlMzZkNjYzN2JiZjU2Li45MjVjNjBjM2M5
MmM5ZjVlYmQxNDlkNTNmMTg4MzM1NzMxYTFlNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlb2NvZGVjX3Rlc3RfZml4
dHVyZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90ZXN0L3ZpZGVvY29kZWNfdGVzdF9maXh0dXJlLmgKQEAgLTEyMywxMCArMTIzLDYgQEAgY2xh
c3MgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlIHsKICAgICAgICAgICB3ZWJydGM6OkgyNjRQYWNrZXRp
emF0aW9uTW9kZTo6Tm9uSW50ZXJsZWF2ZWQ7CiAgICAgfSBoMjY0X2NvZGVjX3NldHRpbmdzOwog
Ci0gICAgLy8gU2hvdWxkIGhhcmR3YXJlIGFjY2VsZXJhdGVkIGNvZGVjcyBiZSB1c2VkPwotICAg
IGJvb2wgaHdfZW5jb2RlciA9IGZhbHNlOwotICAgIGJvb2wgaHdfZGVjb2RlciA9IGZhbHNlOwot
CiAgICAgLy8gQ3VzdG9tIGNoZWNrZXIgdGhhdCB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCBmcmFt
ZS4KICAgICBjb25zdCBFbmNvZGVkRnJhbWVDaGVja2VyKiBlbmNvZGVkX2ZyYW1lX2NoZWNrZXIg
PSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9CVUlMRC5nbgppbmRleCBmNDczMTc5
ZGQxNGFkZmE0ZmY2MWYxYzIyNGIwZWY5N2EyYzRhMmM4Li4zNTdmZjAwNTRiZDBkYjZkZTIzNGVl
NzNlY2I5NzhmZjY4ODY1YmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvQlVJTEQuZ24KQEAg
LTE5LDcgKzE5LDE1IEBAIHJ0Y19zb3VyY2Vfc2V0KCJiaXRyYXRlX3NldHRpbmdzIikgewogICBd
CiB9CiAKK3J0Y19zb3VyY2Vfc2V0KCJlbnVtcyIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0K
KyAgc291cmNlcyA9IFsKKyAgICAiZW51bXMuaCIsCisgIF0KK30KKwogcnRjX3N0YXRpY19saWJy
YXJ5KCJuZXR3b3JrX2NvbnRyb2wiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIHNvdXJj
ZXMgPSBbCiAgICAgIm5ldHdvcmtfY29udHJvbC5oIiwKICAgICAibmV0d29ya190eXBlcy5jYyIs
CkBAIC0zNSw2ICs0MywxOSBAQCBydGNfc3RhdGljX2xpYnJhcnkoIm5ldHdvcmtfY29udHJvbCIp
IHsKICAgXQogfQogCitydGNfc3RhdGljX2xpYnJhcnkoImdvb2dfY2MiKSB7CisgIHZpc2liaWxp
dHkgPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImdvb2dfY2NfZmFjdG9yeS5jYyIsCisg
ICAgImdvb2dfY2NfZmFjdG9yeS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6bmV0d29ya19j
b250cm9sIiwKKyAgICAiLi4vLi4vbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
YyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgIF0KK30K
KwogaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgIHJ0Y19zb3VyY2Vfc2V0KCJuZXR3b3JrX2Nv
bnRyb2xfdGVzdCIpIHsKICAgICB0ZXN0b25seSA9IHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvT1dORVJTIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9P
V05FUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTk5MWY2ZmM1NmEwNzlkNTZhOWM5MzEwYmE2Zjc4MjhkYjM0ZTEx
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90cmFuc3BvcnQvT1dORVJTCkBAIC0wLDAgKzEsMiBAQAorc3J0ZUB3ZWJydGMu
b3JnCit0ZXJlbGl1c0B3ZWJydGMub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2VudW1zLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2VudW1zLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjFkNTc3MGNiOTYyYWE3OTg3Zjg5MDQ4MTkzMWIwNjQ4MzAwZGVjNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90cmFuc3BvcnQvZW51bXMuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogIENvcHlyaWdodCAy
MDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaWZuZGVmIEFQSV9UUkFOU1BPUlRfRU5VTVNfSF8KKyNkZWZpbmUgQVBJX1RSQU5TUE9SVF9F
TlVNU19IXworCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gU2VlIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby93ZWJydGMtcGMvI3J0Y2ljZXRyYW5zcG9ydHN0YXRlCisvLyBOb3RlIHRoYXQga0ZhaWxl
ZCBpcyBjdXJyZW50bHkgbm90IGEgdGVybWluYWwgc3RhdGUsIGFuZCBhIHRyYW5zcG9ydCBtaWdo
dAorLy8gaW5jb3JyZWN0bHkgYmUgbWFya2VkIGFzIGZhaWxlZCB3aGlsZSBnYXRoZXJpbmcgY2Fu
ZGlkYXRlcywgc2VlCisvLyBidWdzLndlYnJ0Yy5vcmcvODgzMworZW51bSBjbGFzcyBJY2VUcmFu
c3BvcnRTdGF0ZSB7CisgIGtOZXcsCisgIGtDaGVja2luZywKKyAga0Nvbm5lY3RlZCwKKyAga0Nv
bXBsZXRlZCwKKyAga0ZhaWxlZCwKKyAga0Rpc2Nvbm5lY3RlZCwKKyAga0Nsb3NlZCwKK307CisK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVFJBTlNQT1JUX0VOVU1T
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdHJhbnNwb3J0L2dvb2dfY2NfZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvZ29vZ19jY19mYWN0b3J5LmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjExOWUyZGNmODRhYmNiOGQzZmZkYzY5NjM5MTliYjdkMjQ3MWUwODgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdHJhbnNwb3J0L2dvb2dfY2NfZmFjdG9yeS5jYwpAQCAtMCwwICsxLDQzIEBACisvKgorICog
IENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvZ29vZ19jY19mYWN0b3J5
LmgiCisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sLmgi
CituYW1lc3BhY2Ugd2VicnRjIHsKK0dvb2dDY05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6R29v
Z0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KAorICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2cp
CisgICAgOiBldmVudF9sb2dfKGV2ZW50X2xvZykge30KKworc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtDb250cm9sbGVySW50ZXJmYWNlPgorR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpD
cmVhdGUoTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSB7CisgIHJldHVybiBhYnNsOjpt
YWtlX3VuaXF1ZTxHb29nQ2NOZXR3b3JrQ29udHJvbGxlcj4oZXZlbnRfbG9nXywgY29uZmlnLCBm
YWxzZSk7Cit9CisKK1RpbWVEZWx0YSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3Rvcnk6Okdl
dFByb2Nlc3NJbnRlcnZhbCgpIGNvbnN0IHsKKyAgY29uc3QgaW50NjRfdCBrVXBkYXRlSW50ZXJ2
YWxNcyA9IDI1OworICByZXR1cm4gVGltZURlbHRhOjptcyhrVXBkYXRlSW50ZXJ2YWxNcyk7Cit9
CisKK0dvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpHb29nQ2NGZWVkYmFj
a05ldHdvcmtDb250cm9sbGVyRmFjdG9yeSgKKyAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nKQor
ICAgIDogZXZlbnRfbG9nXyhldmVudF9sb2cpIHt9CisKK3N0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
Q29udHJvbGxlckludGVyZmFjZT4KK0dvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0
b3J5OjpDcmVhdGUoTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSB7CisgIHJldHVybiBh
YnNsOjptYWtlX3VuaXF1ZTxHb29nQ2NOZXR3b3JrQ29udHJvbGxlcj4oZXZlbnRfbG9nXywgY29u
ZmlnLCB0cnVlKTsKK30KKworVGltZURlbHRhIEdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xs
ZXJGYWN0b3J5OjpHZXRQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdCB7CisgIGNvbnN0IGludDY0X3Qg
a1VwZGF0ZUludGVydmFsTXMgPSAyNTsKKyAgcmV0dXJuIFRpbWVEZWx0YTo6bXMoa1VwZGF0ZUlu
dGVydmFsTXMpOworfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9nb29nX2Nj
X2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90cmFuc3BvcnQvZ29vZ19jY19mYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUzYjMxNzJkMDJmZDZm
ZmEwYjFmM2ZmZTMzOGNlNTdlMmE1NzRkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvZ29vZ19jY19mYWN0
b3J5LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYg
QVBJX1RSQU5TUE9SVF9HT09HX0NDX0ZBQ1RPUllfSF8KKyNkZWZpbmUgQVBJX1RSQU5TUE9SVF9H
T09HX0NDX0ZBQ1RPUllfSF8KKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJhcGkvdHJh
bnNwb3J0L25ldHdvcmtfY29udHJvbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIFJ0
Y0V2ZW50TG9nOworCitjbGFzcyBHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3RvcnkKKyAgICA6
IHB1YmxpYyBOZXR3b3JrQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAg
ZXhwbGljaXQgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KFJ0Y0V2ZW50TG9nKik7Cisg
IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckludGVyZmFjZT4gQ3JlYXRlKAorICAg
ICAgTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSBvdmVycmlkZTsKKyAgVGltZURlbHRh
IEdldFByb2Nlc3NJbnRlcnZhbCgpIGNvbnN0IG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgUnRj
RXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187Cit9OworCisvLyBGYWN0b3J5IHRvIGNyZWF0ZSBw
YWNrZXQgZmVlZGJhY2sgb25seSBHb29nQ0MsIHRoaXMgY2FuIGJlIHVzZWQgZm9yCisvLyBjb25u
ZWN0aW9ucyBwcm92aWRpbmcgcGFja2V0IHJlY2VpdmUgdGltZSBmZWVkYmFjayBidXQgbm8gb3Ro
ZXIgcmVwb3J0cy4KK2NsYXNzIEdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5
CisgICAgOiBwdWJsaWMgTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlIHsKKyBwdWJs
aWM6CisgIGV4cGxpY2l0IEdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KFJ0
Y0V2ZW50TG9nKik7CisgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckludGVyZmFj
ZT4gQ3JlYXRlKAorICAgICAgTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSBvdmVycmlk
ZTsKKyAgVGltZURlbHRhIEdldFByb2Nlc3NJbnRlcnZhbCgpIGNvbnN0IG92ZXJyaWRlOworCisg
cHJpdmF0ZToKKyAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187Cit9OworfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9UUkFOU1BPUlRfR09PR19DQ19GQUNUT1JZ
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuY2MKaW5kZXgg
NDhiZGNhYjE2MmJiZTJhMDhmMmFmMjJkYjAyNWFmOTNiNzFmOGMzZC4uODAyMTRkZTFhMjM4MTI0
Nzg3NWJhMTNmMWMxYWFhZDZlMzBiMTg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3Bv
cnQvbmV0d29ya190eXBlcy5jYwpAQCAtMzgsNyArMzgsNyBAQCBzdGQ6OnZlY3RvcjxQYWNrZXRS
ZXN1bHQ+IFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjazo6UmVjZWl2ZWRXaXRoU2VuZEluZm8oKQog
ICAgIGNvbnN0IHsKICAgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiByZXM7CiAgIGZvciAoY29u
c3QgUGFja2V0UmVzdWx0JiBmYiA6IHBhY2tldF9mZWVkYmFja3MpIHsKLSAgICBpZiAoZmIucmVj
ZWl2ZV90aW1lLklzRmluaXRlKCkgJiYgZmIuc2VudF9wYWNrZXQuaGFzX3ZhbHVlKCkpIHsKKyAg
ICBpZiAoZmIucmVjZWl2ZV90aW1lLklzRmluaXRlKCkpIHsKICAgICAgIHJlcy5wdXNoX2JhY2so
ZmIpOwogICAgIH0KICAgfQpAQCAtNDgsNyArNDgsNyBAQCBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1
bHQ+IFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjazo6UmVjZWl2ZWRXaXRoU2VuZEluZm8oKQogc3Rk
Ojp2ZWN0b3I8UGFja2V0UmVzdWx0PiBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2s6Okxvc3RXaXRo
U2VuZEluZm8oKSBjb25zdCB7CiAgIHN0ZDo6dmVjdG9yPFBhY2tldFJlc3VsdD4gcmVzOwogICBm
b3IgKGNvbnN0IFBhY2tldFJlc3VsdCYgZmIgOiBwYWNrZXRfZmVlZGJhY2tzKSB7Ci0gICAgaWYg
KGZiLnJlY2VpdmVfdGltZS5Jc1BsdXNJbmZpbml0eSgpICYmIGZiLnNlbnRfcGFja2V0Lmhhc192
YWx1ZSgpKSB7CisgICAgaWYgKGZiLnJlY2VpdmVfdGltZS5Jc1BsdXNJbmZpbml0eSgpKSB7CiAg
ICAgICByZXMucHVzaF9iYWNrKGZiKTsKICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvbmV0d29ya190
eXBlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Ry
YW5zcG9ydC9uZXR3b3JrX3R5cGVzLmgKaW5kZXggYWQyMGFiYzUzZDcxMGY4MjBkODg0YWY2MmRj
ZjkxNTQ0MGI2Yjk4YS4uMGYxZDdhYjY4MzM0YzNkNDBlZjA5YTI5YmQzNzZmNzI3ZmM2ZmU3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmgKQEAgLTg4LDEy
ICs4OCwxMyBAQCBzdHJ1Y3QgUGFjZWRQYWNrZXRJbmZvIHsKIHN0cnVjdCBTZW50UGFja2V0IHsK
ICAgVGltZXN0YW1wIHNlbmRfdGltZSA9IFRpbWVzdGFtcDo6UGx1c0luZmluaXR5KCk7CiAgIERh
dGFTaXplIHNpemUgPSBEYXRhU2l6ZTo6WmVybygpOworICBEYXRhU2l6ZSBwcmlvcl91bmFja2Vk
X2RhdGEgPSBEYXRhU2l6ZTo6WmVybygpOwogICBQYWNlZFBhY2tldEluZm8gcGFjaW5nX2luZm87
CiAgIC8vIFRyYW5zcG9ydCBpbmRlcGVuZGVudCBzZXF1ZW5jZSBudW1iZXIsIGFueSB0cmFja2Vk
IHBhY2tldCBzaG91bGQgaGF2ZSBhCiAgIC8vIHNlcXVlbmNlIG51bWJlciB0aGF0IGlzIHVuaXF1
ZSBvdmVyIHRoZSB3aG9sZSBjYWxsIGFuZCBpbmNyZWFzaW5nIGJ5IDEgZm9yCiAgIC8vIGVhY2gg
cGFja2V0LgogICBpbnQ2NF90IHNlcXVlbmNlX251bWJlcjsKLSAgLy8gRGF0YSBpbiBmbGlnaHQg
d2hlbiB0aGUgcGFja2V0IHdhcyBzZW50LCBpbmNsdWRpbmcgdGhlIHBhY2tldC4KKyAgLy8gVHJh
Y2tlZCBkYXRhIGluIGZsaWdodCB3aGVuIHRoZSBwYWNrZXQgd2FzIHNlbnQsIGV4Y2x1ZGluZyB1
bmFja2VkIGRhdGEuCiAgIERhdGFTaXplIGRhdGFfaW5fZmxpZ2h0ID0gRGF0YVNpemU6Olplcm8o
KTsKIH07CiAKQEAgLTEyNSw3ICsxMjYsNyBAQCBzdHJ1Y3QgUGFja2V0UmVzdWx0IHsKICAgUGFj
a2V0UmVzdWx0KGNvbnN0IFBhY2tldFJlc3VsdCYpOwogICB+UGFja2V0UmVzdWx0KCk7CiAKLSAg
YWJzbDo6b3B0aW9uYWw8U2VudFBhY2tldD4gc2VudF9wYWNrZXQ7CisgIFNlbnRQYWNrZXQgc2Vu
dF9wYWNrZXQ7CiAgIFRpbWVzdGFtcCByZWNlaXZlX3RpbWUgPSBUaW1lc3RhbXA6OlBsdXNJbmZp
bml0eSgpOwogfTsKIApAQCAtMTM5LDYgKzE0MCw5IEBAIHN0cnVjdCBUcmFuc3BvcnRQYWNrZXRz
RmVlZGJhY2sgewogICBEYXRhU2l6ZSBwcmlvcl9pbl9mbGlnaHQgPSBEYXRhU2l6ZTo6WmVybygp
OwogICBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+IHBhY2tldF9mZWVkYmFja3M7CiAKKyAgLy8g
QXJyaXZhbCB0aW1lcyBmb3IgbWVzc2FnZXMgd2l0aG91dCBzZW5kIHRpbWUgaW5mb3JtYXRpb24u
CisgIHN0ZDo6dmVjdG9yPFRpbWVzdGFtcD4gc2VuZGxlc3NfYXJyaXZhbF90aW1lczsKKwogICBz
dGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+IFJlY2VpdmVkV2l0aFNlbmRJbmZvKCkgY29uc3Q7CiAg
IHN0ZDo6dmVjdG9yPFBhY2tldFJlc3VsdD4gTG9zdFdpdGhTZW5kSW5mbygpIGNvbnN0OwogICBz
dGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+IFBhY2tldHNXaXRoRmVlZGJhY2soKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90
cmFuc3BvcnQvdGVzdC9uZXR3b3JrX2NvbnRyb2xfdGVzdGVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC90ZXN0L25ldHdvcmtfY29u
dHJvbF90ZXN0ZXIuY2MKaW5kZXggMmVkYWJkMDcxN2U1OTQ5YTBiZTc3NDRhYzZjMDQzZGQ5ZTll
ZTAyOS4uYzU5MGFlODhiYzQxMzBhNzhjMTZkNWQwODMyMTZiN2M5NWIyYjAzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9y
dC90ZXN0L25ldHdvcmtfY29udHJvbF90ZXN0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC90ZXN0L25ldHdvcmtfY29udHJv
bF90ZXN0ZXIuY2MKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBOZXR3b3JrQ29udHJvbGxlclRlc3Rl
cjo6UnVuU2ltdWxhdGlvbihUaW1lRGVsdGEgZHVyYXRpb24sCiAgICAgaWYgKHN0YXRlXy5jb25n
ZXN0aW9uX3dpbmRvdyAmJiBzdGF0ZV8uY29uZ2VzdGlvbl93aW5kb3ctPklzRmluaXRlKCkpIHsK
ICAgICAgIERhdGFTaXplIGRhdGFfaW5fZmxpZ2h0ID0gRGF0YVNpemU6Olplcm8oKTsKICAgICAg
IGZvciAoUGFja2V0UmVzdWx0JiBwYWNrZXQgOiBvdXRzdGFuZGluZ19wYWNrZXRzXykKLSAgICAg
ICAgZGF0YV9pbl9mbGlnaHQgKz0gcGFja2V0LnNlbnRfcGFja2V0LT5zaXplOworICAgICAgICBk
YXRhX2luX2ZsaWdodCArPSBwYWNrZXQuc2VudF9wYWNrZXQuc2l6ZTsKICAgICAgIGlmIChkYXRh
X2luX2ZsaWdodCA+ICpzdGF0ZV8uY29uZ2VzdGlvbl93aW5kb3cpCiAgICAgICAgIHNlbmRfcGFj
a2V0ID0gZmFsc2U7CiAgICAgfQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIE5ldHdvcmtDb250cm9s
bGVyVGVzdGVyOjpSdW5TaW11bGF0aW9uKFRpbWVEZWx0YSBkdXJhdGlvbiwKICAgICAgIHNlbnRf
cGFja2V0LnNlcXVlbmNlX251bWJlciA9IHBhY2tldF9zZXF1ZW5jZV9udW1iZXJfKys7CiAgICAg
ICBzZW50X3BhY2tldC5kYXRhX2luX2ZsaWdodCA9IHNlbnRfcGFja2V0LnNpemU7CiAgICAgICBm
b3IgKFBhY2tldFJlc3VsdCYgcGFja2V0IDogb3V0c3RhbmRpbmdfcGFja2V0c18pCi0gICAgICAg
IHNlbnRfcGFja2V0LmRhdGFfaW5fZmxpZ2h0ICs9IHBhY2tldC5zZW50X3BhY2tldC0+c2l6ZTsK
KyAgICAgICAgc2VudF9wYWNrZXQuZGF0YV9pbl9mbGlnaHQgKz0gcGFja2V0LnNlbnRfcGFja2V0
LnNpemU7CiAgICAgICBVcGRhdGUoJnN0YXRlXywgY29udHJvbGxlcl8tPk9uU2VudFBhY2tldChz
ZW50X3BhY2tldCkpOwogCiAgICAgICBUaW1lRGVsdGEgdGltZV9pbl9mbGlnaHQgPSBzZW50X3Bh
Y2tldC5zaXplIC8gYWN0dWFsX2JhbmR3aWR0aDsKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIE5l
dHdvcmtDb250cm9sbGVyVGVzdGVyOjpSdW5TaW11bGF0aW9uKFRpbWVEZWx0YSBkdXJhdGlvbiwK
ICAgICAgIFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayBmZWVkYmFjazsKICAgICAgIGZlZWRiYWNr
LnByaW9yX2luX2ZsaWdodCA9IERhdGFTaXplOjpaZXJvKCk7CiAgICAgICBmb3IgKFBhY2tldFJl
c3VsdCYgcGFja2V0IDogb3V0c3RhbmRpbmdfcGFja2V0c18pCi0gICAgICAgIGZlZWRiYWNrLnBy
aW9yX2luX2ZsaWdodCArPSBwYWNrZXQuc2VudF9wYWNrZXQtPnNpemU7CisgICAgICAgIGZlZWRi
YWNrLnByaW9yX2luX2ZsaWdodCArPSBwYWNrZXQuc2VudF9wYWNrZXQuc2l6ZTsKICAgICAgIHdo
aWxlICghb3V0c3RhbmRpbmdfcGFja2V0c18uZW1wdHkoKSAmJgogICAgICAgICAgICAgIGN1cnJl
bnRfdGltZV8gPj0gb3V0c3RhbmRpbmdfcGFja2V0c18uZnJvbnQoKS5yZWNlaXZlX3RpbWUgKwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0aW9uX2RlbGF5KSB7CkBA
IC0xMzEsNyArMTMxLDcgQEAgdm9pZCBOZXR3b3JrQ29udHJvbGxlclRlc3Rlcjo6UnVuU2ltdWxh
dGlvbihUaW1lRGVsdGEgZHVyYXRpb24sCiAgICAgICAgICAgZmVlZGJhY2sucGFja2V0X2ZlZWRi
YWNrcy5iYWNrKCkucmVjZWl2ZV90aW1lICsgcHJvcGFnYXRpb25fZGVsYXk7CiAgICAgICBmZWVk
YmFjay5kYXRhX2luX2ZsaWdodCA9IERhdGFTaXplOjpaZXJvKCk7CiAgICAgICBmb3IgKFBhY2tl
dFJlc3VsdCYgcGFja2V0IDogb3V0c3RhbmRpbmdfcGFja2V0c18pCi0gICAgICAgIGZlZWRiYWNr
LmRhdGFfaW5fZmxpZ2h0ICs9IHBhY2tldC5zZW50X3BhY2tldC0+c2l6ZTsKKyAgICAgICAgZmVl
ZGJhY2suZGF0YV9pbl9mbGlnaHQgKz0gcGFja2V0LnNlbnRfcGFja2V0LnNpemU7CiAgICAgICBV
cGRhdGUoJnN0YXRlXywgY29udHJvbGxlcl8tPk9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKGZl
ZWRiYWNrKSk7CiAgICAgfQogICAgIGN1cnJlbnRfdGltZV8gKz0gcGFja2V0X2ludGVydmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3VuaXRzL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3VuaXRzL0JVSUxELmduCmluZGV4IDdkYmRkZjRlNjIyZjRlZDdmYmMxZjczZmNjOTUy
ZGUzNDI4ZmJlNmIuLjdlMTUwZjE3NjY3OWIyMzM0MzU3MWUxZDE0OGIyYjMwOTI5YmNlMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91
bml0cy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdW5pdHMvQlVJTEQuZ24KQEAgLTksNiArOSw3IEBACiBpbXBvcnQoIi4uLy4uL3dl
YnJ0Yy5nbmkiKQogCiBydGNfc291cmNlX3NldCgiZGF0YV9yYXRlIikgeworICB2aXNpYmlsaXR5
ID0gWyAiKiIgXQogICBzb3VyY2VzID0gWwogICAgICJkYXRhX3JhdGUuY2MiLAogICAgICJkYXRh
X3JhdGUuaCIsCkBAIC0xOCwxMSArMTksMTMgQEAgcnRjX3NvdXJjZV9zZXQoImRhdGFfcmF0ZSIp
IHsKICAgICAiOmRhdGFfc2l6ZSIsCiAgICAgIjp0aW1lX2RlbHRhIiwKICAgICAiLi4vLi4vcnRj
X2Jhc2U6Y2hlY2tzIiwKLSAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAor
ICAgICIuLi8uLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIsCisgICAgIi4uLy4uL3J0Y19iYXNlL3Vu
aXRzOnVuaXRfYmFzZSIsCiAgIF0KIH0KIAogcnRjX3NvdXJjZV9zZXQoImRhdGFfc2l6ZSIpIHsK
KyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgc291cmNlcyA9IFsKICAgICAiZGF0YV9zaXplLmNj
IiwKICAgICAiZGF0YV9zaXplLmgiLApAQCAtMzAsMTAgKzMzLDEzIEBAIHJ0Y19zb3VyY2Vfc2V0
KCJkYXRhX3NpemUiKSB7CiAKICAgZGVwcyA9IFsKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tz
IiwKLSAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9y
dGNfYmFzZTpzdHJpbmd1dGlscyIsCisgICAgIi4uLy4uL3J0Y19iYXNlL3VuaXRzOnVuaXRfYmFz
ZSIsCiAgIF0KIH0KKwogcnRjX3NvdXJjZV9zZXQoInRpbWVfZGVsdGEiKSB7CisgIHZpc2liaWxp
dHkgPSBbICIqIiBdCiAgIHNvdXJjZXMgPSBbCiAgICAgInRpbWVfZGVsdGEuY2MiLAogICAgICJ0
aW1lX2RlbHRhLmgiLApAQCAtNDEsMTEgKzQ3LDEzIEBAIHJ0Y19zb3VyY2Vfc2V0KCJ0aW1lX2Rl
bHRhIikgewogCiAgIGRlcHMgPSBbCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCi0gICAg
Ii4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6
c3RyaW5ndXRpbHMiLAorICAgICIuLi8uLi9ydGNfYmFzZS91bml0czp1bml0X2Jhc2UiLAogICBd
CiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJ0aW1lc3RhbXAiKSB7CisgIHZpc2liaWxpdHkgPSBbICIq
IiBdCiAgIHNvdXJjZXMgPSBbCiAgICAgInRpbWVzdGFtcC5jYyIsCiAgICAgInRpbWVzdGFtcC5o
IiwKQEAgLTU0LDcgKzYyLDggQEAgcnRjX3NvdXJjZV9zZXQoInRpbWVzdGFtcCIpIHsKICAgZGVw
cyA9IFsKICAgICAiOnRpbWVfZGVsdGEiLAogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAot
ICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3J0Y19i
YXNlOnN0cmluZ3V0aWxzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2UvdW5pdHM6dW5pdF9iYXNlIiwK
ICAgXQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfcmF0ZS5jYwppbmRleCA5MTcwNjI3NzE1
ODQ5ODA5ZmMwZGZjZDZjMzg1NWUwNzg3NzVlZWEyLi5kNzJkOTU4YzAyOGY5NzZiMmMxNTBmMmQ2
N2RmMGEzY2JkYzBmNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3JhdGUuY2MKQEAgLTE0
LDcgKzE0LDcgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLXN0ZDo6c3RyaW5nIFRvU3RyaW5n
KGNvbnN0IERhdGFSYXRlJiB2YWx1ZSkgeworc3RkOjpzdHJpbmcgVG9TdHJpbmcoRGF0YVJhdGUg
dmFsdWUpIHsKICAgY2hhciBidWZbNjRdOwogICBydGM6OlNpbXBsZVN0cmluZ0J1aWxkZXIgc2Io
YnVmKTsKICAgaWYgKHZhbHVlLklzSW5maW5pdGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfcmF0ZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFf
cmF0ZS5oCmluZGV4IDRiYjk4OGI2NTg4OGJiOTM0YWRkYWFkZmQwNjI5ZjYxOTYyNjJlOTIuLjcx
MTkyODQ4NzRlOTJiN2M1NGU4ZDJjZGE1NTU1ODkyYTVhM2JmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3JhdGUu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5p
dHMvZGF0YV9yYXRlLmgKQEAgLTE1LDIyICsxNSwxNyBAQAogI2luY2x1ZGUgPG9zdHJlYW0+ICAv
LyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKICNlbmRpZiAgICAgICAgICAg
ICAgLy8gVU5JVF9URVNUCiAKLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxhbGdvcml0
aG0+Ci0jaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmlu
Zz4KLQotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAogI2lu
Y2x1ZGUgImFwaS91bml0cy9kYXRhX3NpemUuaCIKICNpbmNsdWRlICJhcGkvdW5pdHMvdGltZV9k
ZWx0YS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3VuaXRzL3VuaXRfYmFzZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBkYXRh
X3JhdGVfaW1wbCB7Ci1jb25zdGV4cHIgaW50NjRfdCBrUGx1c0luZmluaXR5VmFsID0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7Ci0KIGlubGluZSBpbnQ2NF90IE1pY3JvYml0
cyhjb25zdCBEYXRhU2l6ZSYgc2l6ZSkgewogICBjb25zdGV4cHIgaW50NjRfdCBrTWF4QmVmb3Jl
Q29udmVyc2lvbiA9CiAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSAv
IDgwMDAwMDA7CkBAIC00MywxODQgKzM4LDY0IEBAIGlubGluZSBpbnQ2NF90IE1pY3JvYml0cyhj
b25zdCBEYXRhU2l6ZSYgc2l6ZSkgewogLy8gRGF0YVJhdGUgaXMgYSBjbGFzcyB0aGF0IHJlcHJl
c2VudHMgYSBnaXZlbiBkYXRhIHJhdGUuIFRoaXMgY2FuIGJlIHVzZWQgdG8KIC8vIHJlcHJlc2Vu
dCBiYW5kd2lkdGgsIGVuY29kaW5nIGJpdHJhdGUsIGV0Yy4gVGhlIGludGVybmFsIHN0b3JhZ2Ug
aXMgYml0cyBwZXIKIC8vIHNlY29uZCAoYnBzKS4KLWNsYXNzIERhdGFSYXRlIHsKK2NsYXNzIERh
dGFSYXRlIGZpbmFsIDogcHVibGljIHJ0Y191bml0c19pbXBsOjpSZWxhdGl2ZVVuaXQ8RGF0YVJh
dGU+IHsKICBwdWJsaWM6CiAgIERhdGFSYXRlKCkgPSBkZWxldGU7Ci0gIHN0YXRpYyBjb25zdGV4
cHIgRGF0YVJhdGUgWmVybygpIHsgcmV0dXJuIERhdGFSYXRlKDApOyB9Ci0gIHN0YXRpYyBjb25z
dGV4cHIgRGF0YVJhdGUgSW5maW5pdHkoKSB7Ci0gICAgcmV0dXJuIERhdGFSYXRlKGRhdGFfcmF0
ZV9pbXBsOjprUGx1c0luZmluaXR5VmFsKTsKLSAgfQorICBzdGF0aWMgY29uc3RleHByIERhdGFS
YXRlIEluZmluaXR5KCkgeyByZXR1cm4gUGx1c0luZmluaXR5KCk7IH0KICAgdGVtcGxhdGUgPGlu
dDY0X3QgYnBzPgogICBzdGF0aWMgY29uc3RleHByIERhdGFSYXRlIEJpdHNQZXJTZWMoKSB7Ci0g
ICAgc3RhdGljX2Fzc2VydChicHMgPj0gMCwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoYnBzIDwg
ZGF0YV9yYXRlX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwsICIiKTsKLSAgICByZXR1cm4gRGF0YVJh
dGUoYnBzKTsKKyAgICByZXR1cm4gRnJvbVN0YXRpY1ZhbHVlPGJwcz4oKTsKICAgfQogICB0ZW1w
bGF0ZSA8aW50NjRfdCBrYnBzPgogICBzdGF0aWMgY29uc3RleHByIERhdGFSYXRlIEtpbG9iaXRz
UGVyU2VjKCkgewotICAgIHN0YXRpY19hc3NlcnQoa2JwcyA+PSAwLCAiIik7Ci0gICAgc3RhdGlj
X2Fzc2VydChrYnBzIDwgZGF0YV9yYXRlX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwgLyAxMDAwLCAi
Iik7Ci0gICAgcmV0dXJuIERhdGFSYXRlKGticHMgKiAxMDAwKTsKKyAgICByZXR1cm4gRnJvbVN0
YXRpY0ZyYWN0aW9uPGticHMsIDEwMDA+KCk7CiAgIH0KLQotICB0ZW1wbGF0ZSA8Ci0gICAgICB0
eXBlbmFtZSBULAotICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3Jh
bDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gIHN0YXRpYyBEYXRhUmF0ZSBicHMoVCBi
aXRzX3Blcl9zZWNvbmQpIHsKLSAgICBSVENfRENIRUNLX0dFKGJpdHNfcGVyX3NlY29uZCwgMCk7
Ci0gICAgUlRDX0RDSEVDS19MVChiaXRzX3Blcl9zZWNvbmQsIGRhdGFfcmF0ZV9pbXBsOjprUGx1
c0luZmluaXR5VmFsKTsKLSAgICByZXR1cm4gRGF0YVJhdGUocnRjOjpkY2hlY2tlZF9jYXN0PGlu
dDY0X3Q+KGJpdHNfcGVyX3NlY29uZCkpOwotICB9Ci0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVu
YW1lIFQsCi0gICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+
Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgc3RhdGljIERhdGFSYXRlIGticHMoVCBraWxv
Yml0c19wZXJfc2VjKSB7Ci0gICAgUlRDX0RDSEVDS19HRShraWxvYml0c19wZXJfc2VjLCAwKTsK
LSAgICBSVENfRENIRUNLX0xUKGtpbG9iaXRzX3Blcl9zZWMsIGRhdGFfcmF0ZV9pbXBsOjprUGx1
c0luZmluaXR5VmFsIC8gMTAwMCk7Ci0gICAgcmV0dXJuIERhdGFSYXRlOjpicHMocnRjOjpkY2hl
Y2tlZF9jYXN0PGludDY0X3Q+KGtpbG9iaXRzX3Blcl9zZWMpICogMTAwMCk7Ci0gIH0KLQotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6dHlwZSogPQotICAgICAgICAgICAg
ICAgIG51bGxwdHI+Ci0gIHN0YXRpYyBEYXRhUmF0ZSBicHMoVCBiaXRzX3Blcl9zZWNvbmQpIHsK
LSAgICBpZiAoYml0c19wZXJfc2Vjb25kID09IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmlu
aXR5KCkpIHsKLSAgICAgIHJldHVybiBJbmZpbml0eSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICBS
VENfRENIRUNLKCFzdGQ6OmlzbmFuKGJpdHNfcGVyX3NlY29uZCkpOwotICAgICAgUlRDX0RDSEVD
S19HRShiaXRzX3Blcl9zZWNvbmQsIDApOwotICAgICAgUlRDX0RDSEVDS19MVChiaXRzX3Blcl9z
ZWNvbmQsIGRhdGFfcmF0ZV9pbXBsOjprUGx1c0luZmluaXR5VmFsKTsKLSAgICAgIHJldHVybiBE
YXRhUmF0ZShydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRfdD4oYml0c19wZXJfc2Vjb25kKSk7Ci0g
ICAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIGNvbnN0ZXhwciBEYXRhUmF0
ZSBicHMoVCBiaXRzX3Blcl9zZWNvbmQpIHsKKyAgICByZXR1cm4gRnJvbVZhbHVlKGJpdHNfcGVy
X3NlY29uZCk7CiAgIH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgICB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5
cGUqID0KLSAgICAgICAgICAgICAgICBudWxscHRyPgotICBzdGF0aWMgRGF0YVJhdGUga2JwcyhU
IGtpbG9iaXRzX3Blcl9zZWMpIHsKLSAgICByZXR1cm4gRGF0YVJhdGU6OmJwcyhraWxvYml0c19w
ZXJfc2VjICogMWUzKTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBjb25zdGV4
cHIgRGF0YVJhdGUga2JwcyhUIGtpbG9iaXRzX3Blcl9zZWMpIHsKKyAgICByZXR1cm4gRnJvbUZy
YWN0aW9uPDEwMDA+KGtpbG9iaXRzX3Blcl9zZWMpOwogICB9Ci0KICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQgPSBpbnQ2NF90PgotICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVn
cmFsPFQ+Ojp2YWx1ZSwgVD46OnR5cGUgYnBzKCkgY29uc3QgewotICAgIFJUQ19EQ0hFQ0soSXNG
aW5pdGUoKSk7Ci0gICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihiaXRzX3Blcl9zZWNf
KTsKKyAgY29uc3RleHByIFQgYnBzKCkgY29uc3QgeworICAgIHJldHVybiBUb1ZhbHVlPFQ+KCk7
CiAgIH0KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBpbnQ2NF90PgotICB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVD46OnR5cGUga2JwcygpIGNv
bnN0IHsKLSAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOwotICAgIHJldHVybiBydGM6OmRjaGVj
a2VkX2Nhc3Q8VD4oVW5zYWZlS2lsb2JpdHNQZXJTZWMoKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLSAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19w
b2ludDxUPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFQ+Ojp0eXBlIGNvbnN0
ZXhwciBicHMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIElzSW5maW5pdGUoKSA/IHN0ZDo6bnVtZXJp
Y19saW1pdHM8VD46OmluZmluaXR5KCkgOiBiaXRzX3Blcl9zZWNfOwotICB9Ci0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5n
X3BvaW50PFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVD46OnR5cGUgY29u
c3RleHByIGticHMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGJwczxUPigpICogMWUtMzsKKyAgVCBr
YnBzKCkgY29uc3QgeworICAgIHJldHVybiBUb0ZyYWN0aW9uPDEwMDAsIFQ+KCk7CiAgIH0KLQog
ICBjb25zdGV4cHIgaW50NjRfdCBicHNfb3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkgY29uc3Qg
ewotICAgIHJldHVybiBJc0Zpbml0ZSgpID8gYml0c19wZXJfc2VjXyA6IGZhbGxiYWNrX3ZhbHVl
OworICAgIHJldHVybiBUb1ZhbHVlT3IoZmFsbGJhY2tfdmFsdWUpOwogICB9CiAgIGNvbnN0ZXhw
ciBpbnQ2NF90IGticHNfb3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkgY29uc3QgewotICAgIHJl
dHVybiBJc0Zpbml0ZSgpID8gVW5zYWZlS2lsb2JpdHNQZXJTZWMoKSA6IGZhbGxiYWNrX3ZhbHVl
OwotICB9Ci0KLSAgY29uc3RleHByIGJvb2wgSXNaZXJvKCkgY29uc3QgeyByZXR1cm4gYml0c19w
ZXJfc2VjXyA9PSAwOyB9Ci0gIGNvbnN0ZXhwciBib29sIElzSW5maW5pdGUoKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIGJpdHNfcGVyX3NlY18gPT0gZGF0YV9yYXRlX2ltcGw6OmtQbHVzSW5maW5pdHlW
YWw7Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgSXNGaW5pdGUoKSBjb25zdCB7IHJldHVybiAhSXNJ
bmZpbml0ZSgpOyB9Ci0gIERhdGFSYXRlIENsYW1wZWQoRGF0YVJhdGUgbWluX3JhdGUsIERhdGFS
YXRlIG1heF9yYXRlKSBjb25zdCB7Ci0gICAgcmV0dXJuIHN0ZDo6bWF4KG1pbl9yYXRlLCBzdGQ6
Om1pbigqdGhpcywgbWF4X3JhdGUpKTsKLSAgfQotICB2b2lkIENsYW1wKERhdGFSYXRlIG1pbl9y
YXRlLCBEYXRhUmF0ZSBtYXhfcmF0ZSkgewotICAgICp0aGlzID0gQ2xhbXBlZChtaW5fcmF0ZSwg
bWF4X3JhdGUpOwotICB9Ci0gIERhdGFSYXRlIG9wZXJhdG9yLShjb25zdCBEYXRhUmF0ZSYgb3Ro
ZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gRGF0YVJhdGU6OmJwcyhicHMoKSAtIG90aGVyLmJwcygp
KTsKLSAgfQotICBEYXRhUmF0ZSBvcGVyYXRvcisoY29uc3QgRGF0YVJhdGUmIG90aGVyKSBjb25z
dCB7Ci0gICAgcmV0dXJuIERhdGFSYXRlOjpicHMoYnBzKCkgKyBvdGhlci5icHMoKSk7Ci0gIH0K
LSAgRGF0YVJhdGUmIG9wZXJhdG9yLT0oY29uc3QgRGF0YVJhdGUmIG90aGVyKSB7Ci0gICAgKnRo
aXMgPSAqdGhpcyAtIG90aGVyOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBEYXRhUmF0ZSYg
b3BlcmF0b3IrPShjb25zdCBEYXRhUmF0ZSYgb3RoZXIpIHsKLSAgICAqdGhpcyA9ICp0aGlzICsg
b3RoZXI7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0gIGNvbnN0ZXhwciBkb3VibGUgb3BlcmF0
b3IvKGNvbnN0IERhdGFSYXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBicHM8ZG91Ymxl
PigpIC8gb3RoZXIuYnBzPGRvdWJsZT4oKTsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IERhdGFSYXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBiaXRzX3Blcl9z
ZWNfID09IG90aGVyLmJpdHNfcGVyX3NlY187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBEYXRhUmF0ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gYml0c19wZXJf
c2VjXyAhPSBvdGhlci5iaXRzX3Blcl9zZWNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPD0oY29uc3QgRGF0YVJhdGUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIGJpdHNfcGVy
X3NlY18gPD0gb3RoZXIuYml0c19wZXJfc2VjXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj49KGNvbnN0IERhdGFSYXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBiaXRzX3Bl
cl9zZWNfID49IG90aGVyLmJpdHNfcGVyX3NlY187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I+KGNvbnN0IERhdGFSYXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBiaXRzX3Bl
cl9zZWNfID4gb3RoZXIuYml0c19wZXJfc2VjXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcjwoY29uc3QgRGF0YVJhdGUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIGJpdHNfcGVy
X3NlY18gPCBvdGhlci5iaXRzX3Blcl9zZWNfOworICAgIHJldHVybiBUb0ZyYWN0aW9uT3I8MTAw
MD4oZmFsbGJhY2tfdmFsdWUpOwogICB9CiAKICBwcml2YXRlOgogICAvLyBCaXRzIHBlciBzZWNv
bmQgdXNlZCBpbnRlcm5hbGx5IHRvIHNpbXBsaWZ5IGRlYnVnZ2luZyBieSBtYWtpbmcgdGhlIHZh
bHVlCiAgIC8vIG1vcmUgcmVjb2duaXphYmxlLgotICBleHBsaWNpdCBjb25zdGV4cHIgRGF0YVJh
dGUoaW50NjRfdCBiaXRzX3Blcl9zZWNvbmQpCi0gICAgICA6IGJpdHNfcGVyX3NlY18oYml0c19w
ZXJfc2Vjb25kKSB7fQotICBjb25zdGV4cHIgaW50NjRfdCBVbnNhZmVLaWxvYml0c1BlclNlYygp
IGNvbnN0IHsKLSAgICByZXR1cm4gKGJpdHNfcGVyX3NlY18gKyA1MDApIC8gMTAwMDsKLSAgfQot
ICBpbnQ2NF90IGJpdHNfcGVyX3NlY187CisgIGZyaWVuZCBjbGFzcyBydGNfdW5pdHNfaW1wbDo6
VW5pdEJhc2U8RGF0YVJhdGU+OworICB1c2luZyBSZWxhdGl2ZVVuaXQ6OlJlbGF0aXZlVW5pdDsK
KyAgc3RhdGljIGNvbnN0ZXhwciBib29sIG9uZV9zaWRlZCA9IHRydWU7CiB9OwogCi1pbmxpbmUg
RGF0YVJhdGUgb3BlcmF0b3IqKGNvbnN0IERhdGFSYXRlJiByYXRlLCBjb25zdCBkb3VibGUmIHNj
YWxhcikgewotICByZXR1cm4gRGF0YVJhdGU6OmJwcyhzdGQ6OnJvdW5kKHJhdGUuYnBzKCkgKiBz
Y2FsYXIpKTsKLX0KLWlubGluZSBEYXRhUmF0ZSBvcGVyYXRvciooY29uc3QgZG91YmxlJiBzY2Fs
YXIsIGNvbnN0IERhdGFSYXRlJiByYXRlKSB7Ci0gIHJldHVybiByYXRlICogc2NhbGFyOwotfQot
aW5saW5lIERhdGFSYXRlIG9wZXJhdG9yKihjb25zdCBEYXRhUmF0ZSYgcmF0ZSwgY29uc3QgaW50
NjRfdCYgc2NhbGFyKSB7Ci0gIHJldHVybiBEYXRhUmF0ZTo6YnBzKHJhdGUuYnBzKCkgKiBzY2Fs
YXIpOwotfQotaW5saW5lIERhdGFSYXRlIG9wZXJhdG9yKihjb25zdCBpbnQ2NF90JiBzY2FsYXIs
IGNvbnN0IERhdGFSYXRlJiByYXRlKSB7Ci0gIHJldHVybiByYXRlICogc2NhbGFyOwotfQotaW5s
aW5lIERhdGFSYXRlIG9wZXJhdG9yKihjb25zdCBEYXRhUmF0ZSYgcmF0ZSwgY29uc3QgaW50MzJf
dCYgc2NhbGFyKSB7Ci0gIHJldHVybiBEYXRhUmF0ZTo6YnBzKHJhdGUuYnBzKCkgKiBzY2FsYXIp
OwotfQotaW5saW5lIERhdGFSYXRlIG9wZXJhdG9yKihjb25zdCBpbnQzMl90JiBzY2FsYXIsIGNv
bnN0IERhdGFSYXRlJiByYXRlKSB7Ci0gIHJldHVybiByYXRlICogc2NhbGFyOwotfQotCi1pbmxp
bmUgRGF0YVJhdGUgb3BlcmF0b3IvKGNvbnN0IERhdGFTaXplJiBzaXplLCBjb25zdCBUaW1lRGVs
dGEmIGR1cmF0aW9uKSB7CitpbmxpbmUgRGF0YVJhdGUgb3BlcmF0b3IvKGNvbnN0IERhdGFTaXpl
IHNpemUsIGNvbnN0IFRpbWVEZWx0YSBkdXJhdGlvbikgewogICByZXR1cm4gRGF0YVJhdGU6OmJw
cyhkYXRhX3JhdGVfaW1wbDo6TWljcm9iaXRzKHNpemUpIC8gZHVyYXRpb24udXMoKSk7CiB9Ci1p
bmxpbmUgVGltZURlbHRhIG9wZXJhdG9yLyhjb25zdCBEYXRhU2l6ZSYgc2l6ZSwgY29uc3QgRGF0
YVJhdGUmIHJhdGUpIHsKK2lubGluZSBUaW1lRGVsdGEgb3BlcmF0b3IvKGNvbnN0IERhdGFTaXpl
IHNpemUsIGNvbnN0IERhdGFSYXRlIHJhdGUpIHsKICAgcmV0dXJuIFRpbWVEZWx0YTo6dXMoZGF0
YV9yYXRlX2ltcGw6Ok1pY3JvYml0cyhzaXplKSAvIHJhdGUuYnBzKCkpOwogfQotaW5saW5lIERh
dGFTaXplIG9wZXJhdG9yKihjb25zdCBEYXRhUmF0ZSYgcmF0ZSwgY29uc3QgVGltZURlbHRhJiBk
dXJhdGlvbikgeworaW5saW5lIERhdGFTaXplIG9wZXJhdG9yKihjb25zdCBEYXRhUmF0ZSByYXRl
LCBjb25zdCBUaW1lRGVsdGEgZHVyYXRpb24pIHsKICAgaW50NjRfdCBtaWNyb2JpdHMgPSByYXRl
LmJwcygpICogZHVyYXRpb24udXMoKTsKICAgcmV0dXJuIERhdGFTaXplOjpieXRlcygobWljcm9i
aXRzICsgNDAwMDAwMCkgLyA4MDAwMDAwKTsKIH0KLWlubGluZSBEYXRhU2l6ZSBvcGVyYXRvcioo
Y29uc3QgVGltZURlbHRhJiBkdXJhdGlvbiwgY29uc3QgRGF0YVJhdGUmIHJhdGUpIHsKK2lubGlu
ZSBEYXRhU2l6ZSBvcGVyYXRvciooY29uc3QgVGltZURlbHRhIGR1cmF0aW9uLCBjb25zdCBEYXRh
UmF0ZSByYXRlKSB7CiAgIHJldHVybiByYXRlICogZHVyYXRpb247CiB9CiAKLXN0ZDo6c3RyaW5n
IFRvU3RyaW5nKGNvbnN0IERhdGFSYXRlJiB2YWx1ZSk7CitzdGQ6OnN0cmluZyBUb1N0cmluZyhE
YXRhUmF0ZSB2YWx1ZSk7CiAKICNpZmRlZiBVTklUX1RFU1QKIGlubGluZSBzdGQ6Om9zdHJlYW0m
IG9wZXJhdG9yPDwoICAvLyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91
bml0cy9kYXRhX3JhdGVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRlX3VuaXR0ZXN0LmNjCmluZGV4IDhlNWI2
NjA1OTQ4ZmQ4OGZkYTUxNTMzYzE1ZWU1MzFlOGM5YjNkOWIuLjk5NjI5OGMxZmNlZThiZmY2N2Yw
Y2Y3OGRkMzUyNDFiMTY3MjFhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3JhdGVfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFf
cmF0ZV91bml0dGVzdC5jYwpAQCAtMTMwLDYgKzEzMCw5IEBAIFRFU1QoRGF0YVJhdGVUZXN0LCBN
YXRoT3BlcmF0aW9ucykgewogCiAgIEVYUEVDVF9FUShyYXRlX2EgLyByYXRlX2IsIHN0YXRpY19j
YXN0PGRvdWJsZT4oa1ZhbHVlQSkgLyBrVmFsdWVCKTsKIAorICBFWFBFQ1RfRVEoKHJhdGVfYSAv
IDEwKS5icHMoKSwga1ZhbHVlQSAvIDEwKTsKKyAgRVhQRUNUX05FQVIoKHJhdGVfYSAvIDAuNSku
YnBzKCksIGtWYWx1ZUEgKiAyLCAxKTsKKwogICBEYXRhUmF0ZSBtdXRhYmxlX3JhdGUgPSBEYXRh
UmF0ZTo6YnBzKGtWYWx1ZUEpOwogICBtdXRhYmxlX3JhdGUgKz0gcmF0ZV9iOwogICBFWFBFQ1Rf
RVEobXV0YWJsZV9yYXRlLmJwcygpLCBrVmFsdWVBICsga1ZhbHVlQik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9z
aXplLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Vu
aXRzL2RhdGFfc2l6ZS5jYwppbmRleCA0NDQwZjg5ZDAzYzJmZjg0YTFiNTBjZmFiYWU0M2YxZTk3
OWE5ZDRlLi44YTg3Nzg2Yzc3YTNlOTdlYWI0MzNiOTRhYjY1YWNjYTExNzU4OGE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMv
ZGF0YV9zaXplLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS91bml0cy9kYXRhX3NpemUuY2MKQEAgLTE0LDcgKzE0LDcgQEAKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKLXN0ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IERhdGFTaXplJiB2YWx1ZSkg
eworc3RkOjpzdHJpbmcgVG9TdHJpbmcoRGF0YVNpemUgdmFsdWUpIHsKICAgY2hhciBidWZbNjRd
OwogICBydGM6OlNpbXBsZVN0cmluZ0J1aWxkZXIgc2IoYnVmKTsKICAgaWYgKHZhbHVlLklzSW5m
aW5pdGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfc2l6ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfc2l6ZS5oCmluZGV4IDg5NThiMjQ2OTcz
MGNmMjAwZWZhNDgyNGE4OGU4NGM2ZmI0ZmZjNjUuLmI0Y2JiNjUyZjNjOTA3YzA5NzE5NmViNWY3
MjJlOTY0M2ExOWYzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3NpemUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9zaXplLmgKQEAgLTE1LDE0
MyArMTUsNDQgQEAKICNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gbm8tcHJlc3VibWl0LWNoZWNrIFRP
RE8od2VicnRjOjg5ODIpCiAjZW5kaWYgICAgICAgICAgICAgIC8vIFVOSVRfVEVTVAogCi0jaW5j
bHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0jaW5jbHVkZSA8bGltaXRzPgogI2lu
Y2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAotI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lv
bnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS91bml0cy91bml0X2Jhc2UuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7Ci1uYW1lc3BhY2UgZGF0YV9zaXplX2ltcGwgewotY29uc3RleHByIGludDY0X3Qg
a1BsdXNJbmZpbml0eVZhbCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOwot
fSAgLy8gbmFtZXNwYWNlIGRhdGFfc2l6ZV9pbXBsCi0KIC8vIERhdGFTaXplIGlzIGEgY2xhc3Mg
cmVwcmVzZXRpbmcgYSBjb3VudCBvZiBieXRlcy4KLWNsYXNzIERhdGFTaXplIHsKK2NsYXNzIERh
dGFTaXplIGZpbmFsIDogcHVibGljIHJ0Y191bml0c19pbXBsOjpSZWxhdGl2ZVVuaXQ8RGF0YVNp
emU+IHsKICBwdWJsaWM6CiAgIERhdGFTaXplKCkgPSBkZWxldGU7Ci0gIHN0YXRpYyBjb25zdGV4
cHIgRGF0YVNpemUgWmVybygpIHsgcmV0dXJuIERhdGFTaXplKDApOyB9Ci0gIHN0YXRpYyBjb25z
dGV4cHIgRGF0YVNpemUgSW5maW5pdHkoKSB7Ci0gICAgcmV0dXJuIERhdGFTaXplKGRhdGFfc2l6
ZV9pbXBsOjprUGx1c0luZmluaXR5VmFsKTsKLSAgfQorICBzdGF0aWMgY29uc3RleHByIERhdGFT
aXplIEluZmluaXR5KCkgeyByZXR1cm4gUGx1c0luZmluaXR5KCk7IH0KICAgdGVtcGxhdGUgPGlu
dDY0X3QgYnl0ZXM+CiAgIHN0YXRpYyBjb25zdGV4cHIgRGF0YVNpemUgQnl0ZXMoKSB7Ci0gICAg
c3RhdGljX2Fzc2VydChieXRlcyA+PSAwLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChieXRlcyA8
IGRhdGFfc2l6ZV9pbXBsOjprUGx1c0luZmluaXR5VmFsLCAiIik7Ci0gICAgcmV0dXJuIERhdGFT
aXplKGJ5dGVzKTsKKyAgICByZXR1cm4gRnJvbVN0YXRpY1ZhbHVlPGJ5dGVzPigpOwogICB9CiAK
ICAgdGVtcGxhdGUgPAogICAgICAgdHlwZW5hbWUgVCwKLSAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICBz
dGF0aWMgRGF0YVNpemUgYnl0ZXMoVCBieXRlcykgewotICAgIFJUQ19EQ0hFQ0tfR0UoYnl0ZXMs
IDApOwotICAgIFJUQ19EQ0hFQ0tfTFQoYnl0ZXMsIGRhdGFfc2l6ZV9pbXBsOjprUGx1c0luZmlu
aXR5VmFsKTsKLSAgICByZXR1cm4gRGF0YVNpemUocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+
KGJ5dGVzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKLSAgICAgICAgICAgIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6
dHlwZSogPQotICAgICAgICAgICAgICAgIG51bGxwdHI+CisgICAgICB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgog
ICBzdGF0aWMgRGF0YVNpemUgYnl0ZXMoVCBieXRlcykgewotICAgIGlmIChieXRlcyA9PSBzdGQ6
Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpKSB7Ci0gICAgICByZXR1cm4gSW5maW5pdHko
KTsKLSAgICB9IGVsc2UgewotICAgICAgUlRDX0RDSEVDSyghc3RkOjppc25hbihieXRlcykpOwot
ICAgICAgUlRDX0RDSEVDS19HRShieXRlcywgMCk7Ci0gICAgICBSVENfRENIRUNLX0xUKGJ5dGVz
LCBkYXRhX3NpemVfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCk7Ci0gICAgICByZXR1cm4gRGF0YVNp
emUocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KGJ5dGVzKSk7Ci0gICAgfQorICAgIHJldHVy
biBGcm9tVmFsdWUoYnl0ZXMpOwogICB9Ci0KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBpbnQ2
NF90PgotICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1
ZSwgVD46OnR5cGUgYnl0ZXMoKSBjb25zdCB7Ci0gICAgUlRDX0RDSEVDSyhJc0Zpbml0ZSgpKTsK
LSAgICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KGJ5dGVzXyk7Ci0gIH0KLQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLSAgY29uc3RleHByIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZQotICBieXRlcygpIGNvbnN0
IHsKLSAgICByZXR1cm4gSXNJbmZpbml0ZSgpID8gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5m
aW5pdHkoKSA6IGJ5dGVzXzsKKyAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19hcml0
aG1ldGljPFQ+Ojp2YWx1ZSwgVD46OnR5cGUgYnl0ZXMoKSBjb25zdCB7CisgICAgcmV0dXJuIFRv
VmFsdWU8VD4oKTsKICAgfQogCiAgIGNvbnN0ZXhwciBpbnQ2NF90IGJ5dGVzX29yKGludDY0X3Qg
ZmFsbGJhY2tfdmFsdWUpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNGaW5pdGUoKSA/IGJ5dGVzXyA6
IGZhbGxiYWNrX3ZhbHVlOwotICB9Ci0KLSAgY29uc3RleHByIGJvb2wgSXNaZXJvKCkgY29uc3Qg
eyByZXR1cm4gYnl0ZXNfID09IDA7IH0KLSAgY29uc3RleHByIGJvb2wgSXNJbmZpbml0ZSgpIGNv
bnN0IHsKLSAgICByZXR1cm4gYnl0ZXNfID09IGRhdGFfc2l6ZV9pbXBsOjprUGx1c0luZmluaXR5
VmFsOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIElzRmluaXRlKCkgY29uc3QgeyByZXR1cm4gIUlz
SW5maW5pdGUoKTsgfQotICBEYXRhU2l6ZSBvcGVyYXRvci0oY29uc3QgRGF0YVNpemUmIG90aGVy
KSBjb25zdCB7Ci0gICAgcmV0dXJuIERhdGFTaXplOjpieXRlcyhieXRlcygpIC0gb3RoZXIuYnl0
ZXMoKSk7Ci0gIH0KLSAgRGF0YVNpemUgb3BlcmF0b3IrKGNvbnN0IERhdGFTaXplJiBvdGhlcikg
Y29uc3QgewotICAgIHJldHVybiBEYXRhU2l6ZTo6Ynl0ZXMoYnl0ZXMoKSArIG90aGVyLmJ5dGVz
KCkpOwotICB9Ci0gIERhdGFTaXplJiBvcGVyYXRvci09KGNvbnN0IERhdGFTaXplJiBvdGhlcikg
ewotICAgICp0aGlzID0gKnRoaXMgLSBvdGhlcjsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSAg
RGF0YVNpemUmIG9wZXJhdG9yKz0oY29uc3QgRGF0YVNpemUmIG90aGVyKSB7Ci0gICAgKnRoaXMg
PSAqdGhpcyArIG90aGVyOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBjb25zdGV4cHIgZG91
YmxlIG9wZXJhdG9yLyhjb25zdCBEYXRhU2l6ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4g
Ynl0ZXM8ZG91YmxlPigpIC8gb3RoZXIuYnl0ZXM8ZG91YmxlPigpOwotICB9Ci0gIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgRGF0YVNpemUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0
dXJuIGJ5dGVzXyA9PSBvdGhlci5ieXRlc187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBEYXRhU2l6ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gYnl0ZXNfICE9
IG90aGVyLmJ5dGVzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IERh
dGFTaXplJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBieXRlc18gPD0gb3RoZXIuYnl0ZXNf
OwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgRGF0YVNpemUmIG90aGVy
KSBjb25zdCB7Ci0gICAgcmV0dXJuIGJ5dGVzXyA+PSBvdGhlci5ieXRlc187Ci0gIH0KLSAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IERhdGFTaXplJiBvdGhlcikgY29uc3QgewotICAg
IHJldHVybiBieXRlc18gPiBvdGhlci5ieXRlc187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I8KGNvbnN0IERhdGFTaXplJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBieXRlc18g
PCBvdGhlci5ieXRlc187CisgICAgcmV0dXJuIFRvVmFsdWVPcihmYWxsYmFja192YWx1ZSk7CiAg
IH0KIAogIHByaXZhdGU6Ci0gIGV4cGxpY2l0IGNvbnN0ZXhwciBEYXRhU2l6ZShpbnQ2NF90IGJ5
dGVzKSA6IGJ5dGVzXyhieXRlcykge30KLSAgaW50NjRfdCBieXRlc187CisgIGZyaWVuZCBjbGFz
cyBydGNfdW5pdHNfaW1wbDo6VW5pdEJhc2U8RGF0YVNpemU+OworICB1c2luZyBSZWxhdGl2ZVVu
aXQ6OlJlbGF0aXZlVW5pdDsKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIG9uZV9zaWRlZCA9IHRy
dWU7CiB9OwogCi1pbmxpbmUgRGF0YVNpemUgb3BlcmF0b3IqKGNvbnN0IERhdGFTaXplJiBzaXpl
LCBjb25zdCBkb3VibGUmIHNjYWxhcikgewotICByZXR1cm4gRGF0YVNpemU6OmJ5dGVzKHN0ZDo6
cm91bmQoc2l6ZS5ieXRlcygpICogc2NhbGFyKSk7Ci19Ci1pbmxpbmUgRGF0YVNpemUgb3BlcmF0
b3IqKGNvbnN0IGRvdWJsZSYgc2NhbGFyLCBjb25zdCBEYXRhU2l6ZSYgc2l6ZSkgewotICByZXR1
cm4gc2l6ZSAqIHNjYWxhcjsKLX0KLWlubGluZSBEYXRhU2l6ZSBvcGVyYXRvciooY29uc3QgRGF0
YVNpemUmIHNpemUsIGNvbnN0IGludDY0X3QmIHNjYWxhcikgewotICByZXR1cm4gRGF0YVNpemU6
OmJ5dGVzKHNpemUuYnl0ZXMoKSAqIHNjYWxhcik7Ci19Ci1pbmxpbmUgRGF0YVNpemUgb3BlcmF0
b3IqKGNvbnN0IGludDY0X3QmIHNjYWxhciwgY29uc3QgRGF0YVNpemUmIHNpemUpIHsKLSAgcmV0
dXJuIHNpemUgKiBzY2FsYXI7Ci19Ci1pbmxpbmUgRGF0YVNpemUgb3BlcmF0b3IqKGNvbnN0IERh
dGFTaXplJiBzaXplLCBjb25zdCBpbnQzMl90JiBzY2FsYXIpIHsKLSAgcmV0dXJuIERhdGFTaXpl
OjpieXRlcyhzaXplLmJ5dGVzKCkgKiBzY2FsYXIpOwotfQotaW5saW5lIERhdGFTaXplIG9wZXJh
dG9yKihjb25zdCBpbnQzMl90JiBzY2FsYXIsIGNvbnN0IERhdGFTaXplJiBzaXplKSB7Ci0gIHJl
dHVybiBzaXplICogc2NhbGFyOwotfQotaW5saW5lIERhdGFTaXplIG9wZXJhdG9yLyhjb25zdCBE
YXRhU2l6ZSYgc2l6ZSwgY29uc3QgaW50NjRfdCYgc2NhbGFyKSB7Ci0gIHJldHVybiBEYXRhU2l6
ZTo6Ynl0ZXMoc2l6ZS5ieXRlcygpIC8gc2NhbGFyKTsKLX0KLQotc3RkOjpzdHJpbmcgVG9TdHJp
bmcoY29uc3QgRGF0YVNpemUmIHZhbHVlKTsKK3N0ZDo6c3RyaW5nIFRvU3RyaW5nKERhdGFTaXpl
IHZhbHVlKTsKIAogI2lmZGVmIFVOSVRfVEVTVAogaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3I8PCggIC8vIG5vLXByZXN1Ym1pdC1jaGVjayBUT0RPKHdlYnJ0Yzo4OTgyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3Rp
bWVfZGVsdGEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdW5pdHMvdGltZV9kZWx0YS5jYwppbmRleCBkMzgzODdhNTY2OWFlZTRiOTUyYWRjY2NhNmQ4
ODRiZmVlN2JjMTNjLi5mOTA0NTFiNDI5YTdhMGIxZDk5ZDNiYTk2OGMzZDY2MTVjYmFkOTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dW5pdHMvdGltZV9kZWx0YS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZV9kZWx0YS5jYwpAQCAtMTQsNyArMTQsNyBAQAogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIAotc3RkOjpzdHJpbmcgVG9TdHJpbmcoY29uc3QgVGltZURlbHRh
JiB2YWx1ZSkgeworc3RkOjpzdHJpbmcgVG9TdHJpbmcoVGltZURlbHRhIHZhbHVlKSB7CiAgIGNo
YXIgYnVmWzY0XTsKICAgcnRjOjpTaW1wbGVTdHJpbmdCdWlsZGVyIHNiKGJ1Zik7CiAgIGlmICh2
YWx1ZS5Jc1BsdXNJbmZpbml0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZV9kZWx0YS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGEuaApp
bmRleCBlYzM2NDE3MmFhMThkZjNhODRmY2NkY2FmYTFmZmFhZjkyY2Q3ZGZkLi42NDU4MzY5ODkz
NzEyMGY5NGUyZjYxMTNkZDY4NTJjYmM5MjRkYjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZV9kZWx0YS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1l
X2RlbHRhLmgKQEAgLTE1LDIxICsxNSwxMyBAQAogI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBuby1w
cmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKICNlbmRpZiAgICAgICAgICAgICAgLy8g
VU5JVF9URVNUCiAKLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxjbWF0aD4KICNpbmNs
dWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdHJpbmc+CisjaW5j
bHVkZSA8dHlwZV90cmFpdHM+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNl
IHRpbWVkZWx0YV9pbXBsIHsKLWNvbnN0ZXhwciBpbnQ2NF90IGtQbHVzSW5maW5pdHlWYWwgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsKLWNvbnN0ZXhwciBpbnQ2NF90IGtN
aW51c0luZmluaXR5VmFsID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCk7Ci19
ICAvLyBuYW1lc3BhY2UgdGltZWRlbHRhX2ltcGwKLQogLy8gVGltZURlbHRhIHJlcHJlc2VudHMg
dGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gdGltZXN0YW1wcy4gQ29tbW9ubHkgdGhpcyBjYW4K
IC8vIGJlIGEgZHVyYXRpb24uIEhvd2V2ZXIgc2luY2UgdHdvIFRpbWVzdGFtcHMgYXJlIG5vdCBn
dWFyYW50ZWVkIHRvIGhhdmUgdGhlCiAvLyBzYW1lIGVwb2NoICh0aGV5IG1pZ2h0IGNvbWUgZnJv
bSBkaWZmZXJlbnQgY29tcHV0ZXJzLCBtYWtpbmcgZXhhY3QKQEAgLTM3LDI0NSArMjksNjkgQEAg
Y29uc3RleHByIGludDY0X3Qga01pbnVzSW5maW5pdHlWYWwgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDY0X3Q+OjptaW4oKTsKIC8vIHVuZGVmaW5lZC4gVG8gc2ltcGxpZnkgdXNhZ2UsIGl0IGNh
biBiZSBjb25zdHJ1Y3RlZCBhbmQgY29udmVydGVkIHRvCiAvLyBkaWZmZXJlbnQgdW5pdHMsIHNw
ZWNpZmljYWxseSBzZWNvbmRzIChzKSwgbWlsbGlzZWNvbmRzIChtcykgYW5kCiAvLyBtaWNyb3Nl
Y29uZHMgKHVzKS4KLWNsYXNzIFRpbWVEZWx0YSB7CitjbGFzcyBUaW1lRGVsdGEgZmluYWwgOiBw
dWJsaWMgcnRjX3VuaXRzX2ltcGw6OlJlbGF0aXZlVW5pdDxUaW1lRGVsdGE+IHsKICBwdWJsaWM6
CiAgIFRpbWVEZWx0YSgpID0gZGVsZXRlOwotICBzdGF0aWMgY29uc3RleHByIFRpbWVEZWx0YSBa
ZXJvKCkgeyByZXR1cm4gVGltZURlbHRhKDApOyB9Ci0gIHN0YXRpYyBjb25zdGV4cHIgVGltZURl
bHRhIFBsdXNJbmZpbml0eSgpIHsKLSAgICByZXR1cm4gVGltZURlbHRhKHRpbWVkZWx0YV9pbXBs
OjprUGx1c0luZmluaXR5VmFsKTsKLSAgfQotICBzdGF0aWMgY29uc3RleHByIFRpbWVEZWx0YSBN
aW51c0luZmluaXR5KCkgewotICAgIHJldHVybiBUaW1lRGVsdGEodGltZWRlbHRhX2ltcGw6OmtN
aW51c0luZmluaXR5VmFsKTsKLSAgfQogICB0ZW1wbGF0ZSA8aW50NjRfdCBzZWNvbmRzPgogICBz
dGF0aWMgY29uc3RleHByIFRpbWVEZWx0YSBTZWNvbmRzKCkgewotICAgIHN0YXRpY19hc3NlcnQo
c2Vjb25kcyA+IHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbCAvIDEwMDAwMDAsICIi
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNlY29uZHMgPCB0aW1lZGVsdGFfaW1wbDo6a1BsdXNJbmZp
bml0eVZhbCAvIDEwMDAwMDAsICIiKTsKLSAgICByZXR1cm4gVGltZURlbHRhKHNlY29uZHMgKiAx
MDAwMDAwKTsKKyAgICByZXR1cm4gRnJvbVN0YXRpY0ZyYWN0aW9uPHNlY29uZHMsIDEwMDAwMDA+
KCk7CiAgIH0KICAgdGVtcGxhdGUgPGludDY0X3QgbXM+CiAgIHN0YXRpYyBjb25zdGV4cHIgVGlt
ZURlbHRhIE1pbGxpcygpIHsKLSAgICBzdGF0aWNfYXNzZXJ0KG1zID4gdGltZWRlbHRhX2ltcGw6
OmtNaW51c0luZmluaXR5VmFsIC8gMTAwMCwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQobXMgPCB0
aW1lZGVsdGFfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCAvIDEwMDAsICIiKTsKLSAgICByZXR1cm4g
VGltZURlbHRhKG1zICogMTAwMCk7CisgICAgcmV0dXJuIEZyb21TdGF0aWNGcmFjdGlvbjxtcywg
MTAwMD4oKTsKICAgfQogICB0ZW1wbGF0ZSA8aW50NjRfdCB1cz4KICAgc3RhdGljIGNvbnN0ZXhw
ciBUaW1lRGVsdGEgTWljcm9zKCkgewotICAgIHN0YXRpY19hc3NlcnQodXMgPiB0aW1lZGVsdGFf
aW1wbDo6a01pbnVzSW5maW5pdHlWYWwsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHVzIDwgdGlt
ZWRlbHRhX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwsICIiKTsKLSAgICByZXR1cm4gVGltZURlbHRh
KHVzKTsKLSAgfQotCi0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVuYW1lIFQsCi0gICAgICB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0g
bnVsbHB0cj4KLSAgc3RhdGljIFRpbWVEZWx0YSBzZWNvbmRzKFQgc2Vjb25kcykgewotICAgIFJU
Q19EQ0hFQ0tfR1Qoc2Vjb25kcywgdGltZWRlbHRhX2ltcGw6OmtNaW51c0luZmluaXR5VmFsIC8g
MTAwMDAwMCk7Ci0gICAgUlRDX0RDSEVDS19MVChzZWNvbmRzLCB0aW1lZGVsdGFfaW1wbDo6a1Bs
dXNJbmZpbml0eVZhbCAvIDEwMDAwMDApOwotICAgIHJldHVybiBUaW1lRGVsdGEocnRjOjpkY2hl
Y2tlZF9jYXN0PGludDY0X3Q+KHNlY29uZHMpICogMTAwMDAwMCk7CisgICAgcmV0dXJuIEZyb21T
dGF0aWNWYWx1ZTx1cz4oKTsKICAgfQotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBlbmFtZSBULAot
ICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+
Ojp0eXBlKiA9IG51bGxwdHI+Ci0gIHN0YXRpYyBUaW1lRGVsdGEgbXMoVCBtaWxsaXNlY29uZHMp
IHsKLSAgICBSVENfRENIRUNLX0dUKG1pbGxpc2Vjb25kcywgdGltZWRlbHRhX2ltcGw6OmtNaW51
c0luZmluaXR5VmFsIC8gMTAwMCk7Ci0gICAgUlRDX0RDSEVDS19MVChtaWxsaXNlY29uZHMsIHRp
bWVkZWx0YV9pbXBsOjprUGx1c0luZmluaXR5VmFsIC8gMTAwMCk7Ci0gICAgcmV0dXJuIFRpbWVE
ZWx0YShydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRfdD4obWlsbGlzZWNvbmRzKSAqIDEwMDApOwot
ICB9Ci0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVuYW1lIFQsCi0gICAgICB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4K
LSAgc3RhdGljIFRpbWVEZWx0YSB1cyhUIG1pY3Jvc2Vjb25kcykgewotICAgIFJUQ19EQ0hFQ0tf
R1QobWljcm9zZWNvbmRzLCB0aW1lZGVsdGFfaW1wbDo6a01pbnVzSW5maW5pdHlWYWwpOwotICAg
IFJUQ19EQ0hFQ0tfTFQobWljcm9zZWNvbmRzLCB0aW1lZGVsdGFfaW1wbDo6a1BsdXNJbmZpbml0
eVZhbCk7Ci0gICAgcmV0dXJuIFRpbWVEZWx0YShydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRfdD4o
bWljcm9zZWNvbmRzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKLSAgICAgICAg
ICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZh
bHVlPjo6dHlwZSogPQotICAgICAgICAgICAgICAgIG51bGxwdHI+CisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICBzdGF0aWMgVGltZURlbHRhIHNlY29uZHMoVCBzZWNvbmRzKSB7Ci0gICAgcmV0
dXJuIFRpbWVEZWx0YTo6dXMoc2Vjb25kcyAqIDFlNik7CisgICAgcmV0dXJuIEZyb21GcmFjdGlv
bjwxMDAwMDAwPihzZWNvbmRzKTsKICAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKLSAgICAg
ICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46
OnZhbHVlPjo6dHlwZSogPQotICAgICAgICAgICAgICAgIG51bGxwdHI+CisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBzdGF0aWMgVGltZURlbHRhIG1zKFQgbWlsbGlzZWNvbmRzKSB7Ci0gICAg
cmV0dXJuIFRpbWVEZWx0YTo6dXMobWlsbGlzZWNvbmRzICogMWUzKTsKKyAgICByZXR1cm4gRnJv
bUZyYWN0aW9uPDEwMDA+KG1pbGxpc2Vjb25kcyk7CiAgIH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5n
X3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAgICAgICAgICAgICBudWxscHRyPgorICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgc3RhdGljIFRpbWVEZWx0YSB1cyhUIG1pY3Jvc2Vjb25k
cykgewotICAgIGlmIChtaWNyb3NlY29uZHMgPT0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5m
aW5pdHkoKSkgewotICAgICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOwotICAgIH0gZWxzZSBpZiAo
bWljcm9zZWNvbmRzID09IC1zdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpKSB7Ci0g
ICAgICByZXR1cm4gTWludXNJbmZpbml0eSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICBSVENfRENI
RUNLKCFzdGQ6OmlzbmFuKG1pY3Jvc2Vjb25kcykpOwotICAgICAgUlRDX0RDSEVDS19HVChtaWNy
b3NlY29uZHMsIHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbCk7Ci0gICAgICBSVENf
RENIRUNLX0xUKG1pY3Jvc2Vjb25kcywgdGltZWRlbHRhX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwp
OwotICAgICAgcmV0dXJuIFRpbWVEZWx0YShydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRfdD4obWlj
cm9zZWNvbmRzKSk7Ci0gICAgfQorICAgIHJldHVybiBGcm9tVmFsdWUobWljcm9zZWNvbmRzKTsK
ICAgfQotCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIHNlY29uZHMo
KSBjb25zdCB7Ci0gICAgUlRDX0RDSEVDSyhJc0Zpbml0ZSgpKTsKLSAgICByZXR1cm4gcnRjOjpk
Y2hlY2tlZF9jYXN0PFQ+KFVuc2FmZVNlY29uZHMoKSk7CisgIFQgc2Vjb25kcygpIGNvbnN0IHsK
KyAgICByZXR1cm4gVG9GcmFjdGlvbjwxMDAwMDAwLCBUPigpOwogICB9CiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUID0gaW50NjRfdD4KLSAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19p
bnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIG1zKCkgY29uc3QgewotICAgIFJUQ19EQ0hFQ0so
SXNGaW5pdGUoKSk7Ci0gICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihVbnNhZmVNaWxs
aXMoKSk7CisgIFQgbXMoKSBjb25zdCB7CisgICAgcmV0dXJuIFRvRnJhY3Rpb248MTAwMCwgVD4o
KTsKICAgfQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+Ci0gIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlwZSB1cygpIGNv
bnN0IHsKLSAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOwotICAgIHJldHVybiBydGM6OmRjaGVj
a2VkX2Nhc3Q8VD4obWljcm9zZWNvbmRzXyk7CisgIFQgdXMoKSBjb25zdCB7CisgICAgcmV0dXJu
IFRvVmFsdWU8VD4oKTsKICAgfQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+Ci0g
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6
dHlwZSBucygpIGNvbnN0IHsKLSAgICBSVENfRENIRUNLX0dFKHVzKCksIHN0ZDo6bnVtZXJpY19s
aW1pdHM8VD46Om1pbigpIC8gMTAwMCk7Ci0gICAgUlRDX0RDSEVDS19MRSh1cygpLCBzdGQ6Om51
bWVyaWNfbGltaXRzPFQ+OjptYXgoKSAvIDEwMDApOwotICAgIHJldHVybiBydGM6OmRjaGVja2Vk
X2Nhc3Q8VD4odXMoKSAqIDEwMDApOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
IGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50
PFQ+Ojp2YWx1ZSwgVD46OnR5cGUKLSAgc2Vjb25kcygpIGNvbnN0IHsKLSAgICByZXR1cm4gdXM8
VD4oKSAqIDFlLTY7Ci0gIH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGNvbnN0ZXhwciB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZSwg
VD46OnR5cGUKLSAgbXMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHVzPFQ+KCkgKiAxZS0zOwotICB9
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCi0gIHVzKCkg
Y29uc3QgewotICAgIHJldHVybiBJc1BsdXNJbmZpbml0eSgpCi0gICAgICAgICAgICAgICA/IHN0
ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkKLSAgICAgICAgICAgICAgIDogSXNNaW51
c0luZmluaXR5KCkgPyAtc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1pY3Jvc2Vjb25kc187Ci0gIH0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZSwgVD46OnR5cGUKLSAgbnMoKSBjb25zdCB7
Ci0gICAgcmV0dXJuIHVzPFQ+KCkgKiAxZTM7CisgIFQgbnMoKSBjb25zdCB7CisgICAgcmV0dXJu
IFRvTXVsdGlwbGU8MTAwMCwgVD4oKTsKICAgfQogCiAgIGNvbnN0ZXhwciBpbnQ2NF90IHNlY29u
ZHNfb3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkgY29uc3QgewotICAgIHJldHVybiBJc0Zpbml0
ZSgpID8gVW5zYWZlU2Vjb25kcygpIDogZmFsbGJhY2tfdmFsdWU7CisgICAgcmV0dXJuIFRvRnJh
Y3Rpb25PcjwxMDAwMDAwPihmYWxsYmFja192YWx1ZSk7CiAgIH0KICAgY29uc3RleHByIGludDY0
X3QgbXNfb3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkgY29uc3QgewotICAgIHJldHVybiBJc0Zp
bml0ZSgpID8gVW5zYWZlTWlsbGlzKCkgOiBmYWxsYmFja192YWx1ZTsKKyAgICByZXR1cm4gVG9G
cmFjdGlvbk9yPDEwMDA+KGZhbGxiYWNrX3ZhbHVlKTsKICAgfQogICBjb25zdGV4cHIgaW50NjRf
dCB1c19vcihpbnQ2NF90IGZhbGxiYWNrX3ZhbHVlKSBjb25zdCB7Ci0gICAgcmV0dXJuIElzRmlu
aXRlKCkgPyBtaWNyb3NlY29uZHNfIDogZmFsbGJhY2tfdmFsdWU7CisgICAgcmV0dXJuIFRvVmFs
dWVPcihmYWxsYmFja192YWx1ZSk7CiAgIH0KIAogICBUaW1lRGVsdGEgQWJzKCkgY29uc3QgeyBy
ZXR1cm4gVGltZURlbHRhOjp1cyhzdGQ6OmFicyh1cygpKSk7IH0KLSAgY29uc3RleHByIGJvb2wg
SXNaZXJvKCkgY29uc3QgeyByZXR1cm4gbWljcm9zZWNvbmRzXyA9PSAwOyB9Ci0gIGNvbnN0ZXhw
ciBib29sIElzRmluaXRlKCkgY29uc3QgeyByZXR1cm4gIUlzSW5maW5pdGUoKTsgfQotICBjb25z
dGV4cHIgYm9vbCBJc0luZmluaXRlKCkgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNf
ID09IHRpbWVkZWx0YV9pbXBsOjprUGx1c0luZmluaXR5VmFsIHx8Ci0gICAgICAgICAgIG1pY3Jv
c2Vjb25kc18gPT0gdGltZWRlbHRhX2ltcGw6OmtNaW51c0luZmluaXR5VmFsOwotICB9Ci0gIGNv
bnN0ZXhwciBib29sIElzUGx1c0luZmluaXR5KCkgY29uc3QgewotICAgIHJldHVybiBtaWNyb3Nl
Y29uZHNfID09IHRpbWVkZWx0YV9pbXBsOjprUGx1c0luZmluaXR5VmFsOwotICB9Ci0gIGNvbnN0
ZXhwciBib29sIElzTWludXNJbmZpbml0eSgpIGNvbnN0IHsKLSAgICByZXR1cm4gbWljcm9zZWNv
bmRzXyA9PSB0aW1lZGVsdGFfaW1wbDo6a01pbnVzSW5maW5pdHlWYWw7Ci0gIH0KLSAgVGltZURl
bHRhIG9wZXJhdG9yKyhjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAgaWYgKElz
UGx1c0luZmluaXR5KCkgfHwgb3RoZXIuSXNQbHVzSW5maW5pdHkoKSkgewotICAgICAgUlRDX0RD
SEVDSyghSXNNaW51c0luZmluaXR5KCkpOwotICAgICAgUlRDX0RDSEVDSyghb3RoZXIuSXNNaW51
c0luZmluaXR5KCkpOwotICAgICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOwotICAgIH0gZWxzZSBp
ZiAoSXNNaW51c0luZmluaXR5KCkgfHwgb3RoZXIuSXNNaW51c0luZmluaXR5KCkpIHsKLSAgICAg
IFJUQ19EQ0hFQ0soIUlzUGx1c0luZmluaXR5KCkpOwotICAgICAgUlRDX0RDSEVDSyghb3RoZXIu
SXNQbHVzSW5maW5pdHkoKSk7Ci0gICAgICByZXR1cm4gTWludXNJbmZpbml0eSgpOwotICAgIH0K
LSAgICByZXR1cm4gVGltZURlbHRhOjp1cyh1cygpICsgb3RoZXIudXMoKSk7Ci0gIH0KLSAgVGlt
ZURlbHRhIG9wZXJhdG9yLShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAgaWYg
KElzUGx1c0luZmluaXR5KCkgfHwgb3RoZXIuSXNNaW51c0luZmluaXR5KCkpIHsKLSAgICAgIFJU
Q19EQ0hFQ0soIUlzTWludXNJbmZpbml0eSgpKTsKLSAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklz
UGx1c0luZmluaXR5KCkpOwotICAgICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOwotICAgIH0gZWxz
ZSBpZiAoSXNNaW51c0luZmluaXR5KCkgfHwgb3RoZXIuSXNQbHVzSW5maW5pdHkoKSkgewotICAg
ICAgUlRDX0RDSEVDSyghSXNQbHVzSW5maW5pdHkoKSk7Ci0gICAgICBSVENfRENIRUNLKCFvdGhl
ci5Jc01pbnVzSW5maW5pdHkoKSk7Ci0gICAgICByZXR1cm4gTWludXNJbmZpbml0eSgpOwotICAg
IH0KLSAgICByZXR1cm4gVGltZURlbHRhOjp1cyh1cygpIC0gb3RoZXIudXMoKSk7Ci0gIH0KLSAg
VGltZURlbHRhJiBvcGVyYXRvci09KGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIpIHsKLSAgICAqdGhp
cyA9ICp0aGlzIC0gb3RoZXI7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0gIFRpbWVEZWx0YSYg
b3BlcmF0b3IrPShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSB7Ci0gICAgKnRoaXMgPSAqdGhpcyAr
IG90aGVyOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBjb25zdGV4cHIgZG91YmxlIG9wZXJh
dG9yLyhjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIHVzPGRvdWJs
ZT4oKSAvIG90aGVyLnVzPGRvdWJsZT4oKTsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gbWljcm9zZWNv
bmRzXyA9PSBvdGhlci5taWNyb3NlY29uZHNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yIT0oY29uc3QgVGltZURlbHRhJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3Nl
Y29uZHNfICE9IG90aGVyLm1pY3Jvc2Vjb25kc187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I8PShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jv
c2Vjb25kc18gPD0gb3RoZXIubWljcm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj49KGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gbWlj
cm9zZWNvbmRzXyA+PSBvdGhlci5taWNyb3NlY29uZHNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPihjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1p
Y3Jvc2Vjb25kc18gPiBvdGhlci5taWNyb3NlY29uZHNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChjb25zdCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1p
Y3Jvc2Vjb25kc18gPCBvdGhlci5taWNyb3NlY29uZHNfOwotICB9CiAKICBwcml2YXRlOgotICBl
eHBsaWNpdCBjb25zdGV4cHIgVGltZURlbHRhKGludDY0X3QgdXMpIDogbWljcm9zZWNvbmRzXyh1
cykge30KLSAgY29uc3RleHByIGludDY0X3QgVW5zYWZlU2Vjb25kcygpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gKG1pY3Jvc2Vjb25kc18gKyAobWljcm9zZWNvbmRzXyA+PSAwID8gNTAwMDAwIDogLTUw
MDAwMCkpIC8gMTAwMDAwMDsKLSAgfQotICBjb25zdGV4cHIgaW50NjRfdCBVbnNhZmVNaWxsaXMo
KSBjb25zdCB7Ci0gICAgcmV0dXJuIChtaWNyb3NlY29uZHNfICsgKG1pY3Jvc2Vjb25kc18gPj0g
MCA/IDUwMCA6IC01MDApKSAvIDEwMDA7Ci0gIH0KLSAgaW50NjRfdCBtaWNyb3NlY29uZHNfOwor
ICBmcmllbmQgY2xhc3MgcnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlPFRpbWVEZWx0YT47CisgIHVz
aW5nIFJlbGF0aXZlVW5pdDo6UmVsYXRpdmVVbml0OworICBzdGF0aWMgY29uc3RleHByIGJvb2wg
b25lX3NpZGVkID0gZmFsc2U7CiB9OwogCi1pbmxpbmUgVGltZURlbHRhIG9wZXJhdG9yKihjb25z
dCBUaW1lRGVsdGEmIGRlbHRhLCBjb25zdCBkb3VibGUmIHNjYWxhcikgewotICByZXR1cm4gVGlt
ZURlbHRhOjp1cyhzdGQ6OnJvdW5kKGRlbHRhLnVzKCkgKiBzY2FsYXIpKTsKLX0KLWlubGluZSBU
aW1lRGVsdGEgb3BlcmF0b3IqKGNvbnN0IGRvdWJsZSYgc2NhbGFyLCBjb25zdCBUaW1lRGVsdGEm
IGRlbHRhKSB7Ci0gIHJldHVybiBkZWx0YSAqIHNjYWxhcjsKLX0KLWlubGluZSBUaW1lRGVsdGEg
b3BlcmF0b3IqKGNvbnN0IFRpbWVEZWx0YSYgZGVsdGEsIGNvbnN0IGludDY0X3QmIHNjYWxhcikg
ewotICByZXR1cm4gVGltZURlbHRhOjp1cyhkZWx0YS51cygpICogc2NhbGFyKTsKLX0KLWlubGlu
ZSBUaW1lRGVsdGEgb3BlcmF0b3IqKGNvbnN0IGludDY0X3QmIHNjYWxhciwgY29uc3QgVGltZURl
bHRhJiBkZWx0YSkgewotICByZXR1cm4gZGVsdGEgKiBzY2FsYXI7Ci19Ci1pbmxpbmUgVGltZURl
bHRhIG9wZXJhdG9yKihjb25zdCBUaW1lRGVsdGEmIGRlbHRhLCBjb25zdCBpbnQzMl90JiBzY2Fs
YXIpIHsKLSAgcmV0dXJuIFRpbWVEZWx0YTo6dXMoZGVsdGEudXMoKSAqIHNjYWxhcik7Ci19Ci1p
bmxpbmUgVGltZURlbHRhIG9wZXJhdG9yKihjb25zdCBpbnQzMl90JiBzY2FsYXIsIGNvbnN0IFRp
bWVEZWx0YSYgZGVsdGEpIHsKLSAgcmV0dXJuIGRlbHRhICogc2NhbGFyOwotfQotCi1pbmxpbmUg
VGltZURlbHRhIG9wZXJhdG9yLyhjb25zdCBUaW1lRGVsdGEmIGRlbHRhLCBjb25zdCBpbnQ2NF90
JiBzY2FsYXIpIHsKLSAgcmV0dXJuIFRpbWVEZWx0YTo6dXMoZGVsdGEudXMoKSAvIHNjYWxhcik7
Ci19Ci1zdGQ6OnN0cmluZyBUb1N0cmluZyhjb25zdCBUaW1lRGVsdGEmIHZhbHVlKTsKK3N0ZDo6
c3RyaW5nIFRvU3RyaW5nKFRpbWVEZWx0YSB2YWx1ZSk7CiAKICNpZmRlZiBVTklUX1RFU1QKIGlu
bGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoICAvLyBuby1wcmVzdWJtaXQtY2hlY2sgVE9E
Tyh3ZWJydGM6ODk4MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lX2RlbHRhX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGFfdW5p
dHRlc3QuY2MKaW5kZXggYmY4YmJjZTY5YmVmZWQ2MTYyMjhkMWI0Y2U0NGMxNjNiYzQ0N2UzZi4u
YTQ2YmE4MzVjYjE4ZjRlNWJiNjJhOWEzOWE4NzNjZGVkMzdkZmYxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVs
dGFfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGFfdW5pdHRlc3QuY2MKQEAgLTEwLDYgKzEwLDggQEAK
IAogI2luY2x1ZGUgImFwaS91bml0cy90aW1lX2RlbHRhLmgiCiAKKyNpbmNsdWRlIDxsaW1pdHM+
CisKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMTA2
LDYgKzEwOCwyNyBAQCBURVNUKFRpbWVEZWx0YVRlc3QsIENvbXBhcmlzb25PcGVyYXRvcnMpIHsK
ICAgRVhQRUNUX0xUKFRpbWVEZWx0YTo6TWludXNJbmZpbml0eSgpLCBUaW1lRGVsdGE6Olplcm8o
KSk7CiB9CiAKK1RFU1QoVGltZURlbHRhVGVzdCwgQ2xhbXBpbmcpIHsKKyAgY29uc3QgVGltZURl
bHRhIHVwcGVyID0gVGltZURlbHRhOjptcyg4MDApOworICBjb25zdCBUaW1lRGVsdGEgbG93ZXIg
PSBUaW1lRGVsdGE6Om1zKDEwMCk7CisgIGNvbnN0IFRpbWVEZWx0YSB1bmRlciA9IFRpbWVEZWx0
YTo6bXMoMTAwKTsKKyAgY29uc3QgVGltZURlbHRhIGluc2lkZSA9IFRpbWVEZWx0YTo6bXMoNTAw
KTsKKyAgY29uc3QgVGltZURlbHRhIG92ZXIgPSBUaW1lRGVsdGE6Om1zKDEwMDApOworICBFWFBF
Q1RfRVEodW5kZXIuQ2xhbXBlZChsb3dlciwgdXBwZXIpLCBsb3dlcik7CisgIEVYUEVDVF9FUShp
bnNpZGUuQ2xhbXBlZChsb3dlciwgdXBwZXIpLCBpbnNpZGUpOworICBFWFBFQ1RfRVEob3Zlci5D
bGFtcGVkKGxvd2VyLCB1cHBlciksIHVwcGVyKTsKKworICBUaW1lRGVsdGEgbXV0YWJsZV9kZWx0
YSA9IGxvd2VyOworICBtdXRhYmxlX2RlbHRhLkNsYW1wKGxvd2VyLCB1cHBlcik7CisgIEVYUEVD
VF9FUShtdXRhYmxlX2RlbHRhLCBsb3dlcik7CisgIG11dGFibGVfZGVsdGEgPSBpbnNpZGU7Cisg
IG11dGFibGVfZGVsdGEuQ2xhbXAobG93ZXIsIHVwcGVyKTsKKyAgRVhQRUNUX0VRKG11dGFibGVf
ZGVsdGEsIGluc2lkZSk7CisgIG11dGFibGVfZGVsdGEgPSBvdmVyOworICBtdXRhYmxlX2RlbHRh
LkNsYW1wKGxvd2VyLCB1cHBlcik7CisgIEVYUEVDVF9FUShtdXRhYmxlX2RlbHRhLCB1cHBlcik7
Cit9CisKIFRFU1QoVGltZURlbHRhVGVzdCwgQ2FuQmVJbml0aXRpYWxpemVkRnJvbUxhcmdlSW50
KSB7CiAgIGNvbnN0IGludCBrTWF4SW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgo
KTsKICAgRVhQRUNUX0VRKFRpbWVEZWx0YTo6c2Vjb25kcyhrTWF4SW50KS51cygpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRz
L3RpbWVzdGFtcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS91bml0cy90aW1lc3RhbXAuY2MKaW5kZXggZmViMTQ0Nzg5Y2EyYjU5ZjAyNGRkOWI3MzUw
MTBiNDdkNGY1ZDFkMi4uZDM0MTdjZmIwNWIyZjI2NzNlNDQ3NzlmOTk0MWUzOTU1M2Q5YjM4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3VuaXRzL3RpbWVzdGFtcC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZXN0YW1wLmNjCkBAIC0xMyw3ICsxMyw3IEBACiAjaW5j
bHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKLXN0ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IFRpbWVzdGFtcCYgdmFsdWUpIHsKK3N0
ZDo6c3RyaW5nIFRvU3RyaW5nKFRpbWVzdGFtcCB2YWx1ZSkgewogICBjaGFyIGJ1Zls2NF07CiAg
IHJ0Yzo6U2ltcGxlU3RyaW5nQnVpbGRlciBzYihidWYpOwogICBpZiAodmFsdWUuSXNJbmZpbml0
ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdW5pdHMvdGltZXN0YW1wLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZXN0YW1wLmgKaW5kZXggMDI5OGY1ZGE5NzkzNDJi
ZGJjMjk5ODA4NzY2MjJiMmVhMDQwYWNmMS4uYTZlNDUwZjY4NTBmNTU5MzMyYzNkNTZhOWVhM2Vl
OTQwMmM1NWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVzdGFtcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lc3RhbXAuaApAQCAtMTUsMTg5ICsx
NSw5NCBAQAogI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3
ZWJydGM6ODk4MikKICNlbmRpZiAgICAgICAgICAgICAgLy8gVU5JVF9URVNUCiAKLSNpbmNsdWRl
IDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgogCiAjaW5jbHVkZSAiYXBpL3VuaXRzL3RpbWVfZGVsdGEuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9z
YWZlX2NvbnZlcnNpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIHRpbWVz
dGFtcF9pbXBsIHsKLWNvbnN0ZXhwciBpbnQ2NF90IGtQbHVzSW5maW5pdHlWYWwgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsKLWNvbnN0ZXhwciBpbnQ2NF90IGtNaW51c0lu
ZmluaXR5VmFsID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCk7Ci19ICAvLyBu
YW1lc3BhY2UgdGltZXN0YW1wX2ltcGwKLQogLy8gVGltZXN0YW1wIHJlcHJlc2VudHMgdGhlIHRp
bWUgdGhhdCBoYXMgcGFzc2VkIHNpbmNlIHNvbWUgdW5zcGVjaWZpZWQgZXBvY2guCiAvLyBUaGUg
ZXBvY2ggaXMgYXNzdW1lZCB0byBiZSBiZWZvcmUgYW55IHJlcHJlc2VudGVkIHRpbWVzdGFtcHMs
IHRoaXMgbWVhbnMgdGhhdAogLy8gbmVnYXRpdmUgdmFsdWVzIGFyZSBub3QgdmFsaWQuIFRoZSBt
b3N0IG5vdGFibGUgZmVhdHVyZSBpcyB0aGF0IHRoZQogLy8gZGlmZmVyZW5jZSBvZiB0d28gVGlt
ZXN0YW1wcyByZXN1bHRzIGluIGEgVGltZURlbHRhLgotY2xhc3MgVGltZXN0YW1wIHsKK2NsYXNz
IFRpbWVzdGFtcCBmaW5hbCA6IHB1YmxpYyBydGNfdW5pdHNfaW1wbDo6VW5pdEJhc2U8VGltZXN0
YW1wPiB7CiAgcHVibGljOgogICBUaW1lc3RhbXAoKSA9IGRlbGV0ZTsKLSAgc3RhdGljIGNvbnN0
ZXhwciBUaW1lc3RhbXAgUGx1c0luZmluaXR5KCkgewotICAgIHJldHVybiBUaW1lc3RhbXAodGlt
ZXN0YW1wX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwpOwotICB9Ci0gIHN0YXRpYyBjb25zdGV4cHIg
VGltZXN0YW1wIE1pbnVzSW5maW5pdHkoKSB7Ci0gICAgcmV0dXJuIFRpbWVzdGFtcCh0aW1lc3Rh
bXBfaW1wbDo6a01pbnVzSW5maW5pdHlWYWwpOwotICB9CisKICAgdGVtcGxhdGUgPGludDY0X3Qg
c2Vjb25kcz4KICAgc3RhdGljIGNvbnN0ZXhwciBUaW1lc3RhbXAgU2Vjb25kcygpIHsKLSAgICBz
dGF0aWNfYXNzZXJ0KHNlY29uZHMgPj0gMCwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoc2Vjb25k
cyA8IHRpbWVzdGFtcF9pbXBsOjprUGx1c0luZmluaXR5VmFsIC8gMTAwMDAwMCwgIiIpOwotICAg
IHJldHVybiBUaW1lc3RhbXAoc2Vjb25kcyAqIDEwMDAwMDApOworICAgIHJldHVybiBGcm9tU3Rh
dGljRnJhY3Rpb248c2Vjb25kcywgMTAwMDAwMD4oKTsKICAgfQogICB0ZW1wbGF0ZSA8aW50NjRf
dCBtcz4KICAgc3RhdGljIGNvbnN0ZXhwciBUaW1lc3RhbXAgTWlsbGlzKCkgewotICAgIHN0YXRp
Y19hc3NlcnQobXMgPj0gMCwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQobXMgPCB0aW1lc3RhbXBf
aW1wbDo6a1BsdXNJbmZpbml0eVZhbCAvIDEwMDAsICIiKTsKLSAgICByZXR1cm4gVGltZXN0YW1w
KG1zICogMTAwMCk7CisgICAgcmV0dXJuIEZyb21TdGF0aWNGcmFjdGlvbjxtcywgMTAwMD4oKTsK
ICAgfQogICB0ZW1wbGF0ZSA8aW50NjRfdCB1cz4KICAgc3RhdGljIGNvbnN0ZXhwciBUaW1lc3Rh
bXAgTWljcm9zKCkgewotICAgIHN0YXRpY19hc3NlcnQodXMgPj0gMCwgIiIpOwotICAgIHN0YXRp
Y19hc3NlcnQodXMgPCB0aW1lc3RhbXBfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCwgIiIpOwotICAg
IHJldHVybiBUaW1lc3RhbXAodXMpOwotICB9Ci0KLSAgdGVtcGxhdGUgPAotICAgICAgdHlwZW5h
bWUgVCwKLSAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46
OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICBzdGF0aWMgVGltZXN0YW1wIHNlY29uZHMoVCBz
ZWNvbmRzKSB7Ci0gICAgUlRDX0RDSEVDS19HRShzZWNvbmRzLCAwKTsKLSAgICBSVENfRENIRUNL
X0xUKHNlY29uZHMsIHRpbWVzdGFtcF9pbXBsOjprUGx1c0luZmluaXR5VmFsIC8gMTAwMDAwMCk7
Ci0gICAgcmV0dXJuIFRpbWVzdGFtcChydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRfdD4oc2Vjb25k
cykgKiAxMDAwMDAwKTsKLSAgfQotCi0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVuYW1lIFQsCi0g
ICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46
OnR5cGUqID0gbnVsbHB0cj4KLSAgc3RhdGljIFRpbWVzdGFtcCBtcyhUIG1pbGxpc2Vjb25kcykg
ewotICAgIFJUQ19EQ0hFQ0tfR0UobWlsbGlzZWNvbmRzLCAwKTsKLSAgICBSVENfRENIRUNLX0xU
KG1pbGxpc2Vjb25kcywgdGltZXN0YW1wX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwgLyAxMDAwKTsK
LSAgICByZXR1cm4gVGltZXN0YW1wKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90PihtaWxsaXNl
Y29uZHMpICogMTAwMCk7CisgICAgcmV0dXJuIEZyb21TdGF0aWNWYWx1ZTx1cz4oKTsKICAgfQog
Ci0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVuYW1lIFQsCi0gICAgICB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAg
c3RhdGljIFRpbWVzdGFtcCB1cyhUIG1pY3Jvc2Vjb25kcykgewotICAgIFJUQ19EQ0hFQ0tfR0Uo
bWljcm9zZWNvbmRzLCAwKTsKLSAgICBSVENfRENIRUNLX0xUKG1pY3Jvc2Vjb25kcywgdGltZXN0
YW1wX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwpOwotICAgIHJldHVybiBUaW1lc3RhbXAocnRjOjpk
Y2hlY2tlZF9jYXN0PGludDY0X3Q+KG1pY3Jvc2Vjb25kcykpOwotICB9Ci0KLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAgICAgICAgICAgICBudWxs
cHRyPgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgc3RhdGljIFRpbWVzdGFtcCBzZWNvbmRz
KFQgc2Vjb25kcykgewotICAgIHJldHVybiBUaW1lc3RhbXA6OnVzKHNlY29uZHMgKiAxZTYpOwor
ICAgIHJldHVybiBGcm9tRnJhY3Rpb248MTAwMDAwMD4oc2Vjb25kcyk7CiAgIH0KLQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6dHlwZSogPQotICAgICAgICAgICAgICAg
IG51bGxwdHI+CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBzdGF0aWMgVGltZXN0YW1wIG1z
KFQgbWlsbGlzZWNvbmRzKSB7Ci0gICAgcmV0dXJuIFRpbWVzdGFtcDo6dXMobWlsbGlzZWNvbmRz
ICogMWUzKTsKKyAgICByZXR1cm4gRnJvbUZyYWN0aW9uPDEwMDA+KG1pbGxpc2Vjb25kcyk7CiAg
IH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAg
ICAgICAgICAgICBudWxscHRyPgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgc3RhdGljIFRp
bWVzdGFtcCB1cyhUIG1pY3Jvc2Vjb25kcykgewotICAgIGlmIChtaWNyb3NlY29uZHMgPT0gc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSB7Ci0gICAgICByZXR1cm4gUGx1
c0luZmluaXR5KCk7Ci0gICAgfSBlbHNlIGlmIChtaWNyb3NlY29uZHMgPT0gLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkgewotICAgICAgcmV0dXJuIE1pbnVzSW5maW5p
dHkoKTsKLSAgICB9IGVsc2UgewotICAgICAgUlRDX0RDSEVDSyghc3RkOjppc25hbihtaWNyb3Nl
Y29uZHMpKTsKLSAgICAgIFJUQ19EQ0hFQ0tfR0UobWljcm9zZWNvbmRzLCAwKTsKLSAgICAgIFJU
Q19EQ0hFQ0tfTFQobWljcm9zZWNvbmRzLCB0aW1lc3RhbXBfaW1wbDo6a1BsdXNJbmZpbml0eVZh
bCk7Ci0gICAgICByZXR1cm4gVGltZXN0YW1wKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90Piht
aWNyb3NlY29uZHMpKTsKLSAgICB9CisgICAgcmV0dXJuIEZyb21WYWx1ZShtaWNyb3NlY29uZHMp
OwogICB9Ci0KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBpbnQ2NF90PgotICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVD46OnR5cGUgc2Vjb25k
cygpIGNvbnN0IHsKLSAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOwotICAgIHJldHVybiBydGM6
OmRjaGVja2VkX2Nhc3Q8VD4oVW5zYWZlU2Vjb25kcygpKTsKKyAgVCBzZWNvbmRzKCkgY29uc3Qg
eworICAgIHJldHVybiBUb0ZyYWN0aW9uPDEwMDAwMDAsIFQ+KCk7CiAgIH0KICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQgPSBpbnQ2NF90PgotICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X2ludGVncmFsPFQ+Ojp2YWx1ZSwgVD46OnR5cGUgbXMoKSBjb25zdCB7Ci0gICAgUlRDX0RDSEVD
SyhJc0Zpbml0ZSgpKTsKLSAgICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KFVuc2FmZU1p
bGxpcygpKTsKKyAgVCBtcygpIGNvbnN0IHsKKyAgICByZXR1cm4gVG9GcmFjdGlvbjwxMDAwLCBU
PigpOwogICB9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIHVzKCkg
Y29uc3QgewotICAgIFJUQ19EQ0hFQ0soSXNGaW5pdGUoKSk7Ci0gICAgcmV0dXJuIHJ0Yzo6ZGNo
ZWNrZWRfY2FzdDxUPihtaWNyb3NlY29uZHNfKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGlu
Z19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCi0gIHNlY29uZHMoKSBjb25zdCB7Ci0gICAgcmV0
dXJuIHVzPFQ+KCkgKiAxZS02OwotICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBjb25z
dGV4cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6
dmFsdWUsIFQ+Ojp0eXBlCi0gIG1zKCkgY29uc3QgewotICAgIHJldHVybiB1czxUPigpICogMWUt
MzsKLSAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgY29uc3RleHByIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZQot
ICB1cygpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNQbHVzSW5maW5pdHkoKQotICAgICAgICAgICAg
ICAgPyBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpCi0gICAgICAgICAgICAgICA6
IElzTWludXNJbmZpbml0eSgpID8gLXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtaWNyb3NlY29uZHNfOworICBU
IHVzKCkgY29uc3QgeworICAgIHJldHVybiBUb1ZhbHVlPFQ+KCk7CiAgIH0KIAogICBjb25zdGV4
cHIgaW50NjRfdCBzZWNvbmRzX29yKGludDY0X3QgZmFsbGJhY2tfdmFsdWUpIGNvbnN0IHsKLSAg
ICByZXR1cm4gSXNGaW5pdGUoKSA/IFVuc2FmZVNlY29uZHMoKSA6IGZhbGxiYWNrX3ZhbHVlOwor
ICAgIHJldHVybiBUb0ZyYWN0aW9uT3I8MTAwMDAwMD4oZmFsbGJhY2tfdmFsdWUpOwogICB9CiAg
IGNvbnN0ZXhwciBpbnQ2NF90IG1zX29yKGludDY0X3QgZmFsbGJhY2tfdmFsdWUpIGNvbnN0IHsK
LSAgICByZXR1cm4gSXNGaW5pdGUoKSA/IFVuc2FmZU1pbGxpcygpIDogZmFsbGJhY2tfdmFsdWU7
CisgICAgcmV0dXJuIFRvRnJhY3Rpb25PcjwxMDAwPihmYWxsYmFja192YWx1ZSk7CiAgIH0KICAg
Y29uc3RleHByIGludDY0X3QgdXNfb3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkgY29uc3Qgewot
ICAgIHJldHVybiBJc0Zpbml0ZSgpID8gbWljcm9zZWNvbmRzXyA6IGZhbGxiYWNrX3ZhbHVlOwor
ICAgIHJldHVybiBUb1ZhbHVlT3IoZmFsbGJhY2tfdmFsdWUpOwogICB9CiAKLSAgY29uc3RleHBy
IGJvb2wgSXNGaW5pdGUoKSBjb25zdCB7IHJldHVybiAhSXNJbmZpbml0ZSgpOyB9Ci0gIGNvbnN0
ZXhwciBib29sIElzSW5maW5pdGUoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jvc2Vjb25kc18g
PT0gdGltZWRlbHRhX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwgfHwKLSAgICAgICAgICAgbWljcm9z
ZWNvbmRzXyA9PSB0aW1lZGVsdGFfaW1wbDo6a01pbnVzSW5maW5pdHlWYWw7Ci0gIH0KLSAgY29u
c3RleHByIGJvb2wgSXNQbHVzSW5maW5pdHkoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jvc2Vj
b25kc18gPT0gdGltZWRlbHRhX2ltcGw6OmtQbHVzSW5maW5pdHlWYWw7Ci0gIH0KLSAgY29uc3Rl
eHByIGJvb2wgSXNNaW51c0luZmluaXR5KCkgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29u
ZHNfID09IHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbDsKLSAgfQotICBUaW1lc3Rh
bXAgb3BlcmF0b3IrKGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIpIGNvbnN0IHsKLSAgICBpZiAoSXNQ
bHVzSW5maW5pdHkoKSB8fCBvdGhlci5Jc1BsdXNJbmZpbml0eSgpKSB7CisgIFRpbWVzdGFtcCBv
cGVyYXRvcisoY29uc3QgVGltZURlbHRhIGRlbHRhKSBjb25zdCB7CisgICAgaWYgKElzUGx1c0lu
ZmluaXR5KCkgfHwgZGVsdGEuSXNQbHVzSW5maW5pdHkoKSkgewogICAgICAgUlRDX0RDSEVDSygh
SXNNaW51c0luZmluaXR5KCkpOwotICAgICAgUlRDX0RDSEVDSyghb3RoZXIuSXNNaW51c0luZmlu
aXR5KCkpOworICAgICAgUlRDX0RDSEVDSyghZGVsdGEuSXNNaW51c0luZmluaXR5KCkpOwogICAg
ICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOwotICAgIH0gZWxzZSBpZiAoSXNNaW51c0luZmluaXR5
KCkgfHwgb3RoZXIuSXNNaW51c0luZmluaXR5KCkpIHsKKyAgICB9IGVsc2UgaWYgKElzTWludXNJ
bmZpbml0eSgpIHx8IGRlbHRhLklzTWludXNJbmZpbml0eSgpKSB7CiAgICAgICBSVENfRENIRUNL
KCFJc1BsdXNJbmZpbml0eSgpKTsKLSAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklzUGx1c0luZmlu
aXR5KCkpOworICAgICAgUlRDX0RDSEVDSyghZGVsdGEuSXNQbHVzSW5maW5pdHkoKSk7CiAgICAg
ICByZXR1cm4gTWludXNJbmZpbml0eSgpOwogICAgIH0KLSAgICByZXR1cm4gVGltZXN0YW1wOjp1
cyh1cygpICsgb3RoZXIudXMoKSk7CisgICAgcmV0dXJuIFRpbWVzdGFtcDo6dXModXMoKSArIGRl
bHRhLnVzKCkpOwogICB9Ci0gIFRpbWVzdGFtcCBvcGVyYXRvci0oY29uc3QgVGltZURlbHRhJiBv
dGhlcikgY29uc3QgewotICAgIGlmIChJc1BsdXNJbmZpbml0eSgpIHx8IG90aGVyLklzTWludXNJ
bmZpbml0eSgpKSB7CisgIFRpbWVzdGFtcCBvcGVyYXRvci0oY29uc3QgVGltZURlbHRhIGRlbHRh
KSBjb25zdCB7CisgICAgaWYgKElzUGx1c0luZmluaXR5KCkgfHwgZGVsdGEuSXNNaW51c0luZmlu
aXR5KCkpIHsKICAgICAgIFJUQ19EQ0hFQ0soIUlzTWludXNJbmZpbml0eSgpKTsKLSAgICAgIFJU
Q19EQ0hFQ0soIW90aGVyLklzUGx1c0luZmluaXR5KCkpOworICAgICAgUlRDX0RDSEVDSyghZGVs
dGEuSXNQbHVzSW5maW5pdHkoKSk7CiAgICAgICByZXR1cm4gUGx1c0luZmluaXR5KCk7Ci0gICAg
fSBlbHNlIGlmIChJc01pbnVzSW5maW5pdHkoKSB8fCBvdGhlci5Jc1BsdXNJbmZpbml0eSgpKSB7
CisgICAgfSBlbHNlIGlmIChJc01pbnVzSW5maW5pdHkoKSB8fCBkZWx0YS5Jc1BsdXNJbmZpbml0
eSgpKSB7CiAgICAgICBSVENfRENIRUNLKCFJc1BsdXNJbmZpbml0eSgpKTsKLSAgICAgIFJUQ19E
Q0hFQ0soIW90aGVyLklzTWludXNJbmZpbml0eSgpKTsKKyAgICAgIFJUQ19EQ0hFQ0soIWRlbHRh
LklzTWludXNJbmZpbml0eSgpKTsKICAgICAgIHJldHVybiBNaW51c0luZmluaXR5KCk7CiAgICAg
fQotICAgIHJldHVybiBUaW1lc3RhbXA6OnVzKHVzKCkgLSBvdGhlci51cygpKTsKKyAgICByZXR1
cm4gVGltZXN0YW1wOjp1cyh1cygpIC0gZGVsdGEudXMoKSk7CiAgIH0KLSAgVGltZURlbHRhIG9w
ZXJhdG9yLShjb25zdCBUaW1lc3RhbXAmIG90aGVyKSBjb25zdCB7CisgIFRpbWVEZWx0YSBvcGVy
YXRvci0oY29uc3QgVGltZXN0YW1wIG90aGVyKSBjb25zdCB7CiAgICAgaWYgKElzUGx1c0luZmlu
aXR5KCkgfHwgb3RoZXIuSXNNaW51c0luZmluaXR5KCkpIHsKICAgICAgIFJUQ19EQ0hFQ0soIUlz
TWludXNJbmZpbml0eSgpKTsKICAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklzUGx1c0luZmluaXR5
KCkpOwpAQCAtMjA5LDQ1ICsxMTQsMjIgQEAgY2xhc3MgVGltZXN0YW1wIHsKICAgICB9CiAgICAg
cmV0dXJuIFRpbWVEZWx0YTo6dXModXMoKSAtIG90aGVyLnVzKCkpOwogICB9Ci0gIFRpbWVzdGFt
cCYgb3BlcmF0b3ItPShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSB7Ci0gICAgKnRoaXMgPSAqdGhp
cyAtIG90aGVyOworICBUaW1lc3RhbXAmIG9wZXJhdG9yLT0oY29uc3QgVGltZURlbHRhIGRlbHRh
KSB7CisgICAgKnRoaXMgPSAqdGhpcyAtIGRlbHRhOwogICAgIHJldHVybiAqdGhpczsKICAgfQot
ICBUaW1lc3RhbXAmIG9wZXJhdG9yKz0oY29uc3QgVGltZURlbHRhJiBvdGhlcikgewotICAgICp0
aGlzID0gKnRoaXMgKyBvdGhlcjsKKyAgVGltZXN0YW1wJiBvcGVyYXRvcis9KGNvbnN0IFRpbWVE
ZWx0YSBkZWx0YSkgeworICAgICp0aGlzID0gKnRoaXMgKyBkZWx0YTsKICAgICByZXR1cm4gKnRo
aXM7CiAgIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1lc3RhbXAmIG90
aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jvc2Vjb25kc18gPT0gb3RoZXIubWljcm9zZWNv
bmRzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRpbWVzdGFtcCYg
b3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyAhPSBvdGhlci5taWNyb3Nl
Y29uZHNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgVGltZXN0YW1w
JiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfIDw9IG90aGVyLm1pY3Jv
c2Vjb25kc187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUaW1lc3Rh
bXAmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jvc2Vjb25kc18gPj0gb3RoZXIubWlj
cm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVGltZXN0
YW1wJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfID4gb3RoZXIubWlj
cm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgVGltZXN0
YW1wJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfIDwgb3RoZXIubWlj
cm9zZWNvbmRzXzsKLSAgfQogCiAgcHJpdmF0ZToKLSAgZXhwbGljaXQgY29uc3RleHByIFRpbWVz
dGFtcChpbnQ2NF90IHVzKSA6IG1pY3Jvc2Vjb25kc18odXMpIHt9Ci0gIGNvbnN0ZXhwciBpbnQ2
NF90IFVuc2FmZVNlY29uZHMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIChtaWNyb3NlY29uZHNfICsg
NTAwMDAwKSAvIDEwMDAwMDA7Ci0gIH0KLSAgY29uc3RleHByIGludDY0X3QgVW5zYWZlTWlsbGlz
KCkgY29uc3QgewotICAgIHJldHVybiAobWljcm9zZWNvbmRzXyArIDUwMCkgLyAxMDAwOwotICB9
Ci0gIGludDY0X3QgbWljcm9zZWNvbmRzXzsKKyAgZnJpZW5kIGNsYXNzIHJ0Y191bml0c19pbXBs
OjpVbml0QmFzZTxUaW1lc3RhbXA+OworICB1c2luZyBVbml0QmFzZTo6VW5pdEJhc2U7CisgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBvbmVfc2lkZWQgPSB0cnVlOwogfTsKIAotc3RkOjpzdHJpbmcg
VG9TdHJpbmcoY29uc3QgVGltZXN0YW1wJiB2YWx1ZSk7CitzdGQ6OnN0cmluZyBUb1N0cmluZyhU
aW1lc3RhbXAgdmFsdWUpOwogCiAjaWZkZWYgVU5JVF9URVNUCiBpbmxpbmUgc3RkOjpvc3RyZWFt
JiBvcGVyYXRvcjw8KCAgLy8gbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dmlkZW8vQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdmlkZW8vQlVJTEQuZ24KaW5kZXggZDA0MTI2MDIxZGE1YTZjMWEyOTJjYzViNTI4OWM1
MDJlYWE1ZjgwMC4uNWVkNzA4OThmN2I3MDgxZGYwZDI3YjBmZGIxNzlhMmNlOGM5MWRkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Zp
ZGVvL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlby9CVUlMRC5nbgpAQCAtMTMsNiArMTMsOSBAQCBydGNfc291cmNlX3NldCgi
dmlkZW9fZnJhbWUiKSB7CiAgIHNvdXJjZXMgPSBbCiAgICAgImNvbG9yX3NwYWNlLmNjIiwKICAg
ICAiY29sb3Jfc3BhY2UuaCIsCisgICAgImhkcl9tZXRhZGF0YS5jYyIsCisgICAgImhkcl9tZXRh
ZGF0YS5oIiwKKyAgICAidmlkZW9fY29kZWNfdHlwZS5oIiwKICAgICAidmlkZW9fY29udGVudF90
eXBlLmNjIiwKICAgICAidmlkZW9fY29udGVudF90eXBlLmgiLAogICAgICJ2aWRlb19mcmFtZS5j
YyIsCkBAIC0zMSw2ICszNCw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ2aWRlb19mcmFtZSIpIHsKICAg
ZGVwcyA9IFsKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jh
c2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4
cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKICAgXQogfQpAQCAtNDYsNiArNTAsNyBAQCBydGNfc291cmNlX3NldCgidmlkZW9fZnJhbWVf
aTQyMCIpIHsKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jh
c2U6cnRjX2Jhc2UiLAogICAgICIuLi8uLi9ydGNfYmFzZS9tZW1vcnk6YWxpZ25lZF9tYWxsb2Mi
LAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRf
cGFydHkvbGlieXV2IiwKICAgXQogfQpAQCAtNjYsNiArNzEsMjQgQEAgcnRjX3NvdXJjZV9zZXQo
InZpZGVvX2ZyYW1lX2kwMTAiKSB7CiAgIF0KIH0KIAorcnRjX3NvdXJjZV9zZXQoImVuY29kZWRf
aW1hZ2UiKSB7CisgIHNvdXJjZXMgPSBbCisgICAgImVuY29kZWRfaW1hZ2UuY2MiLAorICAgICJl
bmNvZGVkX2ltYWdlLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjp2aWRlb19mcmFtZSIsCisg
ICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAorCisgICAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84
MzExKSBDbGVhbnVwIHdoZW4ga01heFNwYXRpYWxMYXllcnMgaXMgbW92ZWQgdG8gcHJvcGVyIGlu
Y2x1ZGUuCisgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRpb24iLAor
ICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFz
ZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICBdCit9
CisKIHJ0Y19zb3VyY2Vfc2V0KCJlbmNvZGVkX2ZyYW1lIikgewogICB2aXNpYmlsaXR5ID0gWyAi
KiIgXQogICBzb3VyY2VzID0gWwpAQCAtMTUyLDYgKzE3NSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ2
aWRlb19zdHJlYW1fZW5jb2RlciIpIHsKICAgXQogCiAgIGRlcHMgPSBbCisgICAgIjp2aWRlb19i
aXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAiOnZpZGVvX2ZyYW1lIiwKIAogICAgICMg
Rm9yIHJ0cHBhcmFtZXRlcnMuaApAQCAtMTgyLDMgKzIwNiwyMiBAQCBydGNfc291cmNlX3NldCgi
dmlkZW9fc3RyZWFtX2VuY29kZXJfY3JlYXRlIikgewogICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiB9CisKK3J0Y19zdGF0aWNfbGlicmFyeSgiYnVpbHRp
bl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IikgeworICB2aXNpYmlsaXR5ID0gWyAi
KiIgXQorICBzb3VyY2VzID0gWworICAgICJidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnkuY2MiLAorICAgICJidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rv
cnkuaCIsCisgIF0KKworICBkZXBzID0gWworICAgICI6dmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9u
IiwKKyAgICAiOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAorICAgICIuLi8uLi9t
ZWRpYTpydGNfbWVkaWFfYmFzZSIsCisgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZp
ZGVvX2NvZGluZ191dGlsaXR5IiwKKyAgICAiLi4vLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6d2Vi
cnRjX3ZwOV9oZWxwZXJzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6cHRyX3V0aWwiLAorICAgICIu
Li8uLi9ydGNfYmFzZS9zeXN0ZW06ZmFsbHRocm91Z2giLAorICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFj
dG9yeS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MGY2YWQwNGNiZTI1MjBkOTM0MmQ0OTc5Zjk1YTc0MDJhMjJk
NjUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9y
eS5jYwpAQCAtMCwwICsxLDU2IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUg
ImFwaS92aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKKwor
I2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29k
ZWMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19yYXRl
X2FsbG9jYXRvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvZGVm
YXVsdF92aWRlb19iaXRyYXRlX2FsbG9jYXRvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2Uvc3lzdGVtL2ZhbGx0aHJvdWdoLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1l
c3BhY2UgeworCitjbGFzcyBCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeQorICAg
IDogcHVibGljIFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkgeworIHB1YmxpYzoKKyAgQnVp
bHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSA9IGRlZmF1bHQ7CisgIH5CdWlsdGlu
VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworICBz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiBDcmVhdGVWaWRlb0JpdHJhdGVB
bGxvY2F0b3IoCisgICAgICBjb25zdCBWaWRlb0NvZGVjJiBjb2RlYykgb3ZlcnJpZGUgeworICAg
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+IHJhdGVfYWxsb2NhdG9yOwor
ICAgIHN3aXRjaCAoY29kZWMuY29kZWNUeXBlKSB7CisgICAgICBjYXNlIGtWaWRlb0NvZGVjVlA4
OgorICAgICAgICBSVENfRkFMTFRIUk9VR0goKTsKKyAgICAgIGNhc2Uga1ZpZGVvQ29kZWNIMjY0
OgorICAgICAgICByYXRlX2FsbG9jYXRvci5yZXNldChuZXcgU2ltdWxjYXN0UmF0ZUFsbG9jYXRv
cihjb2RlYykpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Uga1ZpZGVvQ29kZWNWUDk6Cisg
ICAgICAgIHJhdGVfYWxsb2NhdG9yLnJlc2V0KG5ldyBTdmNSYXRlQWxsb2NhdG9yKGNvZGVjKSk7
CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmF0ZV9hbGxvY2F0b3Iu
cmVzZXQobmV3IERlZmF1bHRWaWRlb0JpdHJhdGVBbGxvY2F0b3IoY29kZWMpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHJhdGVfYWxsb2NhdG9yOworICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKwor
c3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+CitDcmVhdGVCdWls
dGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpIHsKKyAgcmV0dXJuIGFic2w6Om1ha2Vf
dW5pcXVlPEJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PigpOworfQorCit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRv
cl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWM4ODBhMDg2M2U4Y2U0MmMxNDYzN2RlN2Q3YjBhNGIzOThkY2RiNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaApAQCAtMCwwICsx
LDI1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVklERU9fQlVJTFRJ
Tl9WSURFT19CSVRSQVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hfCisjZGVmaW5lIEFQSV9WSURFT19C
VUlMVElOX1ZJREVPX0JJVFJBVEVfQUxMT0NBVE9SX0ZBQ1RPUllfSF8KKworI2luY2x1ZGUgPG1l
bW9yeT4KKworI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0
b3J5LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRy
YXRlQWxsb2NhdG9yRmFjdG9yeT4KK0NyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JG
YWN0b3J5KCk7CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVklE
RU9fQlVJTFRJTl9WSURFT19CSVRSQVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vY29s
b3Jfc3BhY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW8vY29sb3Jfc3BhY2UuY2MKaW5kZXggYThiZTVjZDgyODAyMDJkNWZjZjkzYWM3YzU5
ODNiOTZkZTEyZGM2NC4uYWQxMzhhYmU4MDkzZDBkNmJlZmFmNTZkMjQ0MmY4OTk2NTFlNGM2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvL2NvbG9yX3NwYWNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlby9jb2xvcl9zcGFjZS5jYwpAQCAtMTAsMTggKzEwLDcyIEBA
CiAKICNpbmNsdWRlICJhcGkvdmlkZW8vY29sb3Jfc3BhY2UuaCIKIAorbmFtZXNwYWNlIHsKKy8v
IFRyeSB0byBjb252ZXJ0IHxlbnVtX3ZhbHVlfCBpbnRvIHRoZSBlbnVtIGNsYXNzIFQuIHxlbnVt
X2JpdG1hc2t8IGlzIGNyZWF0ZWQKKy8vIGJ5IHRoZSBmdW5jaXRvbiBiZWxvdy4gUmV0dXJucyB0
cnVlIGlmIGNvbnZlcnNpb24gd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlCisvLyBvdGhlcndpc2UuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgU2V0RnJvbVVpbnQ4KHVpbnQ4X3QgZW51bV92YWx1
ZSwgdWludDY0X3QgZW51bV9iaXRtYXNrLCBUKiBvdXQpIHsKKyAgaWYgKChlbnVtX3ZhbHVlIDwg
NjQpICYmICgoZW51bV9iaXRtYXNrID4+IGVudW1fdmFsdWUpICYgMSkpIHsKKyAgICAqb3V0ID0g
c3RhdGljX2Nhc3Q8VD4oZW51bV92YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgcmV0
dXJuIGZhbHNlOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIHNlcnZlcyBhcyBhbiBhc3NlcnQgZm9y
IHRoZSBjb25zdGV4cHIgZnVuY3Rpb24gYmVsb3cuIEl0J3Mgb24KKy8vIHB1cnBvc2Ugbm90IGRl
Y2xhcmVkIGFzIGNvbnN0ZXhwciBzbyB0aGF0IGl0IGNhdXNlcyBhIGJ1aWxkIHByb2JsZW0gaWYg
ZW51bQorLy8gdmFsdWVzIG9mIDY0IG9yIGFib3ZlIGFyZSB1c2VkLiBUaGUgYml0bWFzayBhbmQg
dGhlIGNvZGUgZ2VuZXJhdGluZyBpdCB3b3VsZAorLy8gaGF2ZSB0byBiZSBleHRlbmRlZCBpZiB0
aGUgc3RhbmRhcmQgaXMgdXBkYXRlZCB0byBpbmNsdWRlIGVudW0gdmFsdWVzID49IDY0LgoraW50
IEVudW1NdXN0QmVMZXNzVGhhbjY0KCkgeworICByZXR1cm4gLTE7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCBzaXplX3QgTj4KK2NvbnN0ZXhwciBpbnQgTWFrZU1hc2soY29uc3QgaW50IGlu
ZGV4LCBjb25zdCBpbnQgbGVuZ3RoLCBUICgmdmFsdWVzKVtOXSkgeworICByZXR1cm4gbGVuZ3Ro
ID4gMQorICAgICAgICAgICAgID8gKE1ha2VNYXNrKGluZGV4LCAxLCB2YWx1ZXMpICsKKyAgICAg
ICAgICAgICAgICBNYWtlTWFzayhpbmRleCArIDEsIGxlbmd0aCAtIDEsIHZhbHVlcykpCisgICAg
ICAgICAgICAgOiAoc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWVzW2luZGV4XSkgPCA2NAorICAg
ICAgICAgICAgICAgICAgICA/ICh1aW50NjRfdHsxfSA8PCBzdGF0aWNfY2FzdDx1aW50OF90Pih2
YWx1ZXNbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICAgICAgOiBFbnVtTXVzdEJlTGVzc1RoYW42
NCgpKTsKK30KKworLy8gQ3JlYXRlIGEgYml0bWFzayB3aGVyZSBlYWNoIGJpdCBjb3JyZXNwb25k
cyB0byBvbmUgcG90ZW50aWFsIGVudW0gdmFsdWUuCisvLyB8dmFsdWVzfCBzaG91bGQgYmUgYW4g
YXJyYXkgbGlzdGluZyBhbGwgcG9zc2libGUgZW51bSB2YWx1ZXMuIFRoZSBiaXQgaXMgc2V0Cisv
LyB0byBvbmUgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZW51bSBleGlzdHMuIE9ubHkgd29ya3MgZm9y
IGVudW1zIHdpdGggdmFsdWVzCisvLyBsZXNzIHRoYW4gNjQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgc2l6ZV90IE4+Citjb25zdGV4cHIgdWludDY0X3QgQ3JlYXRlRW51bUJpdG1hc2soVCAoJnZh
bHVlcylbTl0pIHsKKyAgcmV0dXJuIE1ha2VNYXNrKDAsIE4sIHZhbHVlcyk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZQorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogQ29sb3JTcGFjZTo6Q29sb3JTcGFj
ZSgpID0gZGVmYXVsdDsKK0NvbG9yU3BhY2U6OkNvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZSYg
b3RoZXIpID0gZGVmYXVsdDsKK0NvbG9yU3BhY2U6OkNvbG9yU3BhY2UoQ29sb3JTcGFjZSYmIG90
aGVyKSA9IGRlZmF1bHQ7CitDb2xvclNwYWNlJiBDb2xvclNwYWNlOjpvcGVyYXRvcj0oY29uc3Qg
Q29sb3JTcGFjZSYgb3RoZXIpID0gZGVmYXVsdDsKIAogQ29sb3JTcGFjZTo6Q29sb3JTcGFjZShQ
cmltYXJ5SUQgcHJpbWFyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2ZlcklEIHRy
YW5zZmVyLAogICAgICAgICAgICAgICAgICAgICAgICBNYXRyaXhJRCBtYXRyaXgsCiAgICAgICAg
ICAgICAgICAgICAgICAgIFJhbmdlSUQgcmFuZ2UpCisgICAgOiBDb2xvclNwYWNlKHByaW1hcmll
cywgdHJhbnNmZXIsIG1hdHJpeCwgcmFuZ2UsIG51bGxwdHIpIHt9CisKK0NvbG9yU3BhY2U6OkNv
bG9yU3BhY2UoUHJpbWFyeUlEIHByaW1hcmllcywKKyAgICAgICAgICAgICAgICAgICAgICAgVHJh
bnNmZXJJRCB0cmFuc2ZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgTWF0cml4SUQgbWF0cml4
LAorICAgICAgICAgICAgICAgICAgICAgICBSYW5nZUlEIHJhbmdlLAorICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBIZHJNZXRhZGF0YSogaGRyX21ldGFkYXRhKQogICAgIDogcHJpbWFyaWVz
XyhwcmltYXJpZXMpLAogICAgICAgdHJhbnNmZXJfKHRyYW5zZmVyKSwKICAgICAgIG1hdHJpeF8o
bWF0cml4KSwKLSAgICAgIHJhbmdlXyhyYW5nZSkge30KKyAgICAgIHJhbmdlXyhyYW5nZSksCisg
ICAgICBoZHJfbWV0YWRhdGFfKGhkcl9tZXRhZGF0YSA/IGFic2w6Om1ha2Vfb3B0aW9uYWwoKmhk
cl9tZXRhZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYWJzbDo6bnVs
bG9wdCkge30KIAogQ29sb3JTcGFjZTo6UHJpbWFyeUlEIENvbG9yU3BhY2U6OnByaW1hcmllcygp
IGNvbnN0IHsKICAgcmV0dXJuIHByaW1hcmllc187CkBAIC0zOSw0ICs5Myw2MSBAQCBDb2xvclNw
YWNlOjpSYW5nZUlEIENvbG9yU3BhY2U6OnJhbmdlKCkgY29uc3QgewogICByZXR1cm4gcmFuZ2Vf
OwogfQogCitjb25zdCBIZHJNZXRhZGF0YSogQ29sb3JTcGFjZTo6aGRyX21ldGFkYXRhKCkgY29u
c3QgeworICByZXR1cm4gaGRyX21ldGFkYXRhXyA/ICYqaGRyX21ldGFkYXRhXyA6IG51bGxwdHI7
Cit9CisKK2Jvb2wgQ29sb3JTcGFjZTo6c2V0X3ByaW1hcmllc19mcm9tX3VpbnQ4KHVpbnQ4X3Qg
ZW51bV92YWx1ZSkgeworICBjb25zdGV4cHIgUHJpbWFyeUlEIGtQcmltYXJ5SWRzW10gPSB7Cisg
ICAgICBQcmltYXJ5SUQ6OmtJbnZhbGlkLCAgICBQcmltYXJ5SUQ6OmtCVDcwOSwgICAgICBQcmlt
YXJ5SUQ6OmtVTlNQRUNJRklFRCwKKyAgICAgIFByaW1hcnlJRDo6a0JUNDcwTSwgICAgIFByaW1h
cnlJRDo6a0JUNDcwQkcsICAgIFByaW1hcnlJRDo6a1NNUFRFMTcwTSwKKyAgICAgIFByaW1hcnlJ
RDo6a1NNUFRFMjQwTSwgIFByaW1hcnlJRDo6a0ZJTE0sICAgICAgIFByaW1hcnlJRDo6a0JUMjAy
MCwKKyAgICAgIFByaW1hcnlJRDo6a1NNUFRFU1Q0MjgsIFByaW1hcnlJRDo6a1NNUFRFU1Q0MzEs
IFByaW1hcnlJRDo6a1NNUFRFU1Q0MzIsCisgICAgICBQcmltYXJ5SUQ6OmtKRURFQ1AyMn07Cisg
IGNvbnN0ZXhwciB1aW50NjRfdCBlbnVtX2JpdG1hc2sgPSBDcmVhdGVFbnVtQml0bWFzayhrUHJp
bWFyeUlkcyk7CisKKyAgcmV0dXJuIFNldEZyb21VaW50OChlbnVtX3ZhbHVlLCBlbnVtX2JpdG1h
c2ssICZwcmltYXJpZXNfKTsKK30KKworYm9vbCBDb2xvclNwYWNlOjpzZXRfdHJhbnNmZXJfZnJv
bV91aW50OCh1aW50OF90IGVudW1fdmFsdWUpIHsKKyAgY29uc3RleHByIFRyYW5zZmVySUQga1Ry
YW5zZmVySWRzW10gPSB7CisgICAgICBUcmFuc2ZlcklEOjprSW52YWxpZCwgICAgICBUcmFuc2Zl
cklEOjprQlQ3MDksCisgICAgICBUcmFuc2ZlcklEOjprVU5TUEVDSUZJRUQsICBUcmFuc2ZlcklE
OjprR0FNTUEyMiwKKyAgICAgIFRyYW5zZmVySUQ6OmtHQU1NQTI4LCAgICAgIFRyYW5zZmVySUQ6
OmtTTVBURTE3ME0sCisgICAgICBUcmFuc2ZlcklEOjprU01QVEUyNDBNLCAgICBUcmFuc2ZlcklE
OjprTElORUFSLAorICAgICAgVHJhbnNmZXJJRDo6a0xPRywgICAgICAgICAgVHJhbnNmZXJJRDo6
a0xPR19TUVJULAorICAgICAgVHJhbnNmZXJJRDo6a0lFQzYxOTY2XzJfNCwgVHJhbnNmZXJJRDo6
a0JUMTM2MV9FQ0csCisgICAgICBUcmFuc2ZlcklEOjprSUVDNjE5NjZfMl8xLCBUcmFuc2ZlcklE
OjprQlQyMDIwXzEwLAorICAgICAgVHJhbnNmZXJJRDo6a0JUMjAyMF8xMiwgICAgVHJhbnNmZXJJ
RDo6a1NNUFRFU1QyMDg0LAorICAgICAgVHJhbnNmZXJJRDo6a1NNUFRFU1Q0MjgsICAgVHJhbnNm
ZXJJRDo6a0FSSUJfU1REX0I2N307CisgIGNvbnN0ZXhwciB1aW50NjRfdCBlbnVtX2JpdG1hc2sg
PSBDcmVhdGVFbnVtQml0bWFzayhrVHJhbnNmZXJJZHMpOworCisgIHJldHVybiBTZXRGcm9tVWlu
dDgoZW51bV92YWx1ZSwgZW51bV9iaXRtYXNrLCAmdHJhbnNmZXJfKTsKK30KKworYm9vbCBDb2xv
clNwYWNlOjpzZXRfbWF0cml4X2Zyb21fdWludDgodWludDhfdCBlbnVtX3ZhbHVlKSB7CisgIGNv
bnN0ZXhwciBNYXRyaXhJRCBrTWF0cml4SWRzW10gPSB7CisgICAgICBNYXRyaXhJRDo6a1JHQiwg
ICAgICAgTWF0cml4SUQ6OmtCVDcwOSwgICAgICAgIE1hdHJpeElEOjprVU5TUEVDSUZJRUQsCisg
ICAgICBNYXRyaXhJRDo6a0ZDQywgICAgICAgTWF0cml4SUQ6OmtCVDQ3MEJHLCAgICAgIE1hdHJp
eElEOjprU01QVEUxNzBNLAorICAgICAgTWF0cml4SUQ6OmtTTVBURTI0ME0sIE1hdHJpeElEOjpr
WUNPQ0csICAgICAgICBNYXRyaXhJRDo6a0JUMjAyMF9OQ0wsCisgICAgICBNYXRyaXhJRDo6a0JU
MjAyMF9DTCwgTWF0cml4SUQ6OmtTTVBURTIwODUsICAgIE1hdHJpeElEOjprQ0ROQ0xTLAorICAg
ICAgTWF0cml4SUQ6OmtDRENMUywgICAgIE1hdHJpeElEOjprQlQyMTAwX0lDVENQLCBNYXRyaXhJ
RDo6a0ludmFsaWR9OworICBjb25zdGV4cHIgdWludDY0X3QgZW51bV9iaXRtYXNrID0gQ3JlYXRl
RW51bUJpdG1hc2soa01hdHJpeElkcyk7CisKKyAgcmV0dXJuIFNldEZyb21VaW50OChlbnVtX3Zh
bHVlLCBlbnVtX2JpdG1hc2ssICZtYXRyaXhfKTsKK30KKworYm9vbCBDb2xvclNwYWNlOjpzZXRf
cmFuZ2VfZnJvbV91aW50OCh1aW50OF90IGVudW1fdmFsdWUpIHsKKyAgY29uc3RleHByIFJhbmdl
SUQga1JhbmdlSWRzW10gPSB7UmFuZ2VJRDo6a0ludmFsaWQsIFJhbmdlSUQ6OmtMaW1pdGVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZUlEOjprRnVsbCwgUmFuZ2VJ
RDo6a0Rlcml2ZWR9OworICBjb25zdGV4cHIgdWludDY0X3QgZW51bV9iaXRtYXNrID0gQ3JlYXRl
RW51bUJpdG1hc2soa1JhbmdlSWRzKTsKKworICByZXR1cm4gU2V0RnJvbVVpbnQ4KGVudW1fdmFs
dWUsIGVudW1fYml0bWFzaywgJnJhbmdlXyk7Cit9CisKK3ZvaWQgQ29sb3JTcGFjZTo6c2V0X2hk
cl9tZXRhZGF0YShjb25zdCBIZHJNZXRhZGF0YSogaGRyX21ldGFkYXRhKSB7CisgIGhkcl9tZXRh
ZGF0YV8gPQorICAgICAgaGRyX21ldGFkYXRhID8gYWJzbDo6bWFrZV9vcHRpb25hbCgqaGRyX21l
dGFkYXRhKSA6IGFic2w6Om51bGxvcHQ7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlby9jb2xvcl9zcGFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgKaW5kZXggODEwMjY0N2I2ZmY4ODQ3YTA0OTAw
NGNiYjU5ODU4ZTA4YjRkODQ3MS4uNzlhMTVmNTliMzkzMjg3YmI4OWI5ODY1OGFjNjRiNDRlMTg2
YTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgKQEAgLTExLDk1ICsxMSwx
NDUgQEAKICNpZm5kZWYgQVBJX1ZJREVPX0NPTE9SX1NQQUNFX0hfCiAjZGVmaW5lIEFQSV9WSURF
T19DT0xPUl9TUEFDRV9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2hkcl9tZXRhZGF0YS5oIgor
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotLy8gVXNlZCB0byByZXByZXNlbnQgYSBjb2xvciBzcGFj
ZSBmb3IgdGhlIHB1cnBvc2Ugb2YgY29sb3IgY29udmVyc2lvbi4gVGhpcwotLy8gY2xhc3Mgb25s
eSByZXByZXNlbnRzIGNvbG9yIGluZm9ybWF0aW9uIHRoYXQgY2FuIGJlIHRyYW5zZmVycmVkIHRo
cm91Z2ggdGhlCi0vLyBiaXRzdHJlYW0gb2YgV2ViUlRDJ3MgaW50ZXJuYWwgc3VwcG9ydGVkIGNv
ZGVjczoKKy8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBjb2xvciBpbmZvcm1hdGlvbiBhcyBzcGVj
aWZpZWQgaW4gVC1SRUMgSC4yNzMsCisvLyBhdmFpbGFibGUgZnJvbSBodHRwczovL3d3dy5pdHUu
aW50L3JlYy9ULVJFQy1ILjI3My4KKy8vCisvLyBXZWJSVEMncyBzdXBwb3J0ZWQgY29kZWNzOgog
Ly8gLSBWUDkgc3VwcG9ydHMgY29sb3IgcHJvZmlsZXMsIHNlZSBWUDkgQml0c3RyZWFtICYgRGVj
b2RpbmcgUHJvY2VzcwogLy8gU3BlY2lmaWNhdGlvbiBWZXJzaW9uIDAuNiBTZWN0aW9uIDcuMi4y
ICJDb2xvciBjb25maWcgc2VtYW50aWNzIiBhdmFpbGFibGUKIC8vIGZyb20gaHR0cHM6Ly93d3cu
d2VibXByb2plY3Qub3JnLgotLy8gVE9ETyhlbWlyY2FuKTogRXh0cmFjdCB0aGVzZSB2YWx1ZXMg
ZnJvbSBkZWNvZGUgYW5kIGFkZCB0byB0aGUgZXhpc3Rpbmcgb25lcy4KIC8vIC0gVlA4IG9ubHkg
c3VwcG9ydHMgQlQuNjAxLCBzZWUKIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2
Mzg2I3NlY3Rpb24tOS4yCi0vLyAtIEgyNjQgc3VwcG9ydHMgZGlmZmVyZW50IGNvbG9yIHByaW1h
cmllcywgdHJhbnNmZXIgY2hhcmFjdGVyaXN0aWNzLCBtYXRyaXgKLS8vIGNvZWZmaWNpZW50cyBh
bmQgcmFuZ2UuIFNlZSBULVJFQy1ILjI2NCBFLjIuMSwgIlZVSSBwYXJhbWV0ZXJzIHNlbWFudGlj
cyIsCi0vLyBhdmFpbGFibGUgZnJvbSBodHRwczovL3d3dy5pdHUuaW50L3JlYy9ULVJFQy1ILjI2
NC4KKy8vIC0gSDI2NCB1c2VzIHRoZSBleGFjdCBzYW1lIHJlcHJlc2VudGF0aW9uIGFzIFQtUkVD
IEguMjczLiBTZWUgVC1SRUMtSC4yNjQKKy8vIEUuMi4xLCAiVlVJIHBhcmFtZXRlcnMgc2VtYW50
aWNzIiwgYXZhaWxhYmxlIGZyb20KKy8vIGh0dHBzOi8vd3d3Lml0dS5pbnQvcmVjL1QtUkVDLUgu
MjY0LgorCiBjbGFzcyBDb2xvclNwYWNlIHsKICBwdWJsaWM6Ci0gIGVudW0gY2xhc3MgUHJpbWFy
eUlEIHsKLSAgICBrSW52YWxpZCwKLSAgICBrQlQ3MDksCi0gICAga0JUNDcwTSwKLSAgICBrQlQ0
NzBCRywKLSAgICBrU01QVEUxNzBNLCAgLy8gSWRlbnRpY2FsIHRvIEJUNjAxCi0gICAga1NNUFRF
MjQwTSwKLSAgICBrRklMTSwKLSAgICBrQlQyMDIwLAotICAgIGtTTVBURVNUNDI4LAotICAgIGtT
TVBURVNUNDMxLAotICAgIGtTTVBURVNUNDMyLAotICAgIGtKRURFQ1AyMiwKKyAgZW51bSBjbGFz
cyBQcmltYXJ5SUQgOiB1aW50OF90IHsKKyAgICAvLyBUaGUgaW5kaWNlcyBhcmUgZXF1YWwgdG8g
dGhlIHZhbHVlcyBzcGVjaWZpZWQgaW4gVC1SRUMgSC4yNzMgVGFibGUgMi4KKyAgICBrSW52YWxp
ZCA9IDAsCisgICAga0JUNzA5ID0gMSwKKyAgICBrVU5TUEVDSUZJRUQgPSAyLAorICAgIGtCVDQ3
ME0gPSA0LAorICAgIGtCVDQ3MEJHID0gNSwKKyAgICBrU01QVEUxNzBNID0gNiwgIC8vIElkZW50
aWNhbCB0byBCVDYwMQorICAgIGtTTVBURTI0ME0gPSA3LAorICAgIGtGSUxNID0gOCwKKyAgICBr
QlQyMDIwID0gOSwKKyAgICBrU01QVEVTVDQyOCA9IDEwLAorICAgIGtTTVBURVNUNDMxID0gMTEs
CisgICAga1NNUFRFU1Q0MzIgPSAxMiwKKyAgICBrSkVERUNQMjIgPSAyMiwgIC8vIElkZW50aWNh
bCB0byBFQlUzMjEzLUUKKyAgICAvLyBXaGVuIGFkZGluZy9yZW1vdmluZyBlbnRyaWVzIGhlcmUs
IHBsZWFzZSBtYWtlIHN1cmUgdG8gZG8gdGhlCisgICAgLy8gY29ycmVzcG9uZGluZyBjaGFuZ2Ug
dG8ga1ByaW1hcnlJZHMuCiAgIH07CiAKLSAgZW51bSBjbGFzcyBUcmFuc2ZlcklEIHsKLSAgICBr
SW52YWxpZCwKLSAgICBrQlQ3MDksCi0gICAga0dBTU1BMjIsCi0gICAga0dBTU1BMjgsCi0gICAg
a1NNUFRFMTcwTSwKLSAgICBrU01QVEUyNDBNLAotICAgIGtMSU5FQVIsCi0gICAga0xPRywKLSAg
ICBrTE9HX1NRUlQsCi0gICAga0lFQzYxOTY2XzJfNCwKLSAgICBrQlQxMzYxX0VDRywKLSAgICBr
SUVDNjE5NjZfMl8xLAotICAgIGtCVDIwMjBfMTAsCi0gICAga0JUMjAyMF8xMiwKLSAgICBrU01Q
VEVTVDIwODQsCi0gICAga1NNUFRFU1Q0MjgsCi0gICAga0FSSUJfU1REX0I2NywKKyAgZW51bSBj
bGFzcyBUcmFuc2ZlcklEIDogdWludDhfdCB7CisgICAgLy8gVGhlIGluZGljZXMgYXJlIGVxdWFs
IHRvIHRoZSB2YWx1ZXMgc3BlY2lmaWVkIGluIFQtUkVDIEguMjczIFRhYmxlIDMuCisgICAga0lu
dmFsaWQgPSAwLAorICAgIGtCVDcwOSA9IDEsCisgICAga1VOU1BFQ0lGSUVEID0gMiwKKyAgICBr
R0FNTUEyMiA9IDQsCisgICAga0dBTU1BMjggPSA1LAorICAgIGtTTVBURTE3ME0gPSA2LAorICAg
IGtTTVBURTI0ME0gPSA3LAorICAgIGtMSU5FQVIgPSA4LAorICAgIGtMT0cgPSA5LAorICAgIGtM
T0dfU1FSVCA9IDEwLAorICAgIGtJRUM2MTk2Nl8yXzQgPSAxMSwKKyAgICBrQlQxMzYxX0VDRyA9
IDEyLAorICAgIGtJRUM2MTk2Nl8yXzEgPSAxMywKKyAgICBrQlQyMDIwXzEwID0gMTQsCisgICAg
a0JUMjAyMF8xMiA9IDE1LAorICAgIGtTTVBURVNUMjA4NCA9IDE2LAorICAgIGtTTVBURVNUNDI4
ID0gMTcsCisgICAga0FSSUJfU1REX0I2NyA9IDE4LAorICAgIC8vIFdoZW4gYWRkaW5nL3JlbW92
aW5nIGVudHJpZXMgaGVyZSwgcGxlYXNlIG1ha2Ugc3VyZSB0byBkbyB0aGUKKyAgICAvLyBjb3Jy
ZXNwb25kaW5nIGNoYW5nZSB0byBrVHJhbnNmZXJJZHMuCiAgIH07CiAKLSAgZW51bSBjbGFzcyBN
YXRyaXhJRCB7Ci0gICAga0ludmFsaWQsCi0gICAga1JHQiwKLSAgICBrQlQ3MDksCi0gICAga0ZD
QywKLSAgICBrQlQ0NzBCRywKLSAgICBrU01QVEUxNzBNLAotICAgIGtTTVBURTI0ME0sCi0gICAg
a1lDT0NHLAotICAgIGtCVDIwMjBfTkNMLAotICAgIGtCVDIwMjBfQ0wsCi0gICAga1NNUFRFMjA4
NSwKKyAgZW51bSBjbGFzcyBNYXRyaXhJRCA6IHVpbnQ4X3QgeworICAgIC8vIFRoZSBpbmRpY2Vz
IGFyZSBlcXVhbCB0byB0aGUgdmFsdWVzIHNwZWNpZmllZCBpbiBULVJFQyBILjI3MyBUYWJsZSA0
LgorICAgIGtSR0IgPSAwLAorICAgIGtCVDcwOSA9IDEsCisgICAga1VOU1BFQ0lGSUVEID0gMiwK
KyAgICBrRkNDID0gNCwKKyAgICBrQlQ0NzBCRyA9IDUsCisgICAga1NNUFRFMTcwTSA9IDYsCisg
ICAga1NNUFRFMjQwTSA9IDcsCisgICAga1lDT0NHID0gOCwKKyAgICBrQlQyMDIwX05DTCA9IDks
CisgICAga0JUMjAyMF9DTCA9IDEwLAorICAgIGtTTVBURTIwODUgPSAxMSwKKyAgICBrQ0ROQ0xT
ID0gMTIsCisgICAga0NEQ0xTID0gMTMsCisgICAga0JUMjEwMF9JQ1RDUCA9IDE0LAorICAgIGtJ
bnZhbGlkID0gNjMsCisgICAgLy8gV2hlbiBhZGRpbmcvcmVtb3ZpbmcgZW50cmllcyBoZXJlLCBw
bGVhc2UgbWFrZSBzdXJlIHRvIGRvIHRoZQorICAgIC8vIGNvcnJlc3BvbmRpbmcgY2hhbmdlIHRv
IGtNYXRyaXhJZHMuCiAgIH07CiAKICAgZW51bSBjbGFzcyBSYW5nZUlEIHsKLSAgICBrSW52YWxp
ZCwKKyAgICAvLyBUaGUgaW5kaWNlcyBhcmUgZXF1YWwgdG8gdGhlIHZhbHVlcyBzcGVjaWZpZWQg
YXQKKyAgICAvLyBodHRwczovL3d3dy53ZWJtcHJvamVjdC5vcmcvZG9jcy9jb250YWluZXIvI2Nv
bG91ciBmb3IgdGhlIGVsZW1lbnQgUmFuZ2UuCisgICAga0ludmFsaWQgPSAwLAogICAgIC8vIExp
bWl0ZWQgUmVjLiA3MDkgY29sb3IgcmFuZ2Ugd2l0aCBSR0IgdmFsdWVzIHJhbmdpbmcgZnJvbSAx
NiB0byAyMzUuCi0gICAga0xpbWl0ZWQsCisgICAga0xpbWl0ZWQgPSAxLAogICAgIC8vIEZ1bGwg
UkdCIGNvbG9yIHJhbmdlIHdpdGggUkdCIHZhbGVlcyBmcm9tIDAgdG8gMjU1LgotICAgIGtGdWxs
LAorICAgIGtGdWxsID0gMiwKKyAgICAvLyBSYW5nZSBpcyBkZWZpbmVkIGJ5IE1hdHJpeENvZWZm
aWNpZW50cy9UcmFuc2ZlckNoYXJhY3RlcmlzdGljcy4KKyAgICBrRGVyaXZlZCA9IDMsCisgICAg
Ly8gV2hlbiBhZGRpbmcvcmVtb3ZpbmcgZW50cmllcyBoZXJlLCBwbGVhc2UgbWFrZSBzdXJlIHRv
IGRvIHRoZQorICAgIC8vIGNvcnJlc3BvbmRpbmcgY2hhbmdlIHRvIGtSYW5nZUlkcy4KICAgfTsK
IAogICBDb2xvclNwYWNlKCk7CisgIENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZSYgb3RoZXIp
OworICBDb2xvclNwYWNlKENvbG9yU3BhY2UmJiBvdGhlcik7CisgIENvbG9yU3BhY2UmIG9wZXJh
dG9yPShjb25zdCBDb2xvclNwYWNlJiBvdGhlcik7CiAgIENvbG9yU3BhY2UoUHJpbWFyeUlEIHBy
aW1hcmllcywKICAgICAgICAgICAgICBUcmFuc2ZlcklEIHRyYW5zZmVyLAogICAgICAgICAgICAg
IE1hdHJpeElEIG1hdHJpeCwKICAgICAgICAgICAgICBSYW5nZUlEIGZ1bGxfcmFuZ2UpOworICBD
b2xvclNwYWNlKFByaW1hcnlJRCBwcmltYXJpZXMsCisgICAgICAgICAgICAgVHJhbnNmZXJJRCB0
cmFuc2ZlciwKKyAgICAgICAgICAgICBNYXRyaXhJRCBtYXRyaXgsCisgICAgICAgICAgICAgUmFu
Z2VJRCByYW5nZSwKKyAgICAgICAgICAgICBjb25zdCBIZHJNZXRhZGF0YSogaGRyX21ldGFkYXRh
KTsKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yU3BhY2UmIG90aGVyKSBjb25zdCB7Cisg
ICAgcmV0dXJuIHByaW1hcmllc18gPT0gb3RoZXIucHJpbWFyaWVzKCkgJiYgdHJhbnNmZXJfID09
IG90aGVyLnRyYW5zZmVyKCkgJiYKKyAgICAgICAgICAgbWF0cml4XyA9PSBvdGhlci5tYXRyaXgo
KSAmJiByYW5nZV8gPT0gb3RoZXIucmFuZ2UoKSAmJgorICAgICAgICAgICAoKGhkcl9tZXRhZGF0
YV8uaGFzX3ZhbHVlKCkgJiYgb3RoZXIuaGRyX21ldGFkYXRhKCkgJiYKKyAgICAgICAgICAgICAq
aGRyX21ldGFkYXRhXyA9PSAqb3RoZXIuaGRyX21ldGFkYXRhKCkpIHx8CisgICAgICAgICAgICAo
IWhkcl9tZXRhZGF0YV8uaGFzX3ZhbHVlKCkgJiYgb3RoZXIuaGRyX21ldGFkYXRhKCkgPT0gbnVs
bHB0cikpOworICB9CiAKICAgUHJpbWFyeUlEIHByaW1hcmllcygpIGNvbnN0OwogICBUcmFuc2Zl
cklEIHRyYW5zZmVyKCkgY29uc3Q7CiAgIE1hdHJpeElEIG1hdHJpeCgpIGNvbnN0OwogICBSYW5n
ZUlEIHJhbmdlKCkgY29uc3Q7CisgIGNvbnN0IEhkck1ldGFkYXRhKiBoZHJfbWV0YWRhdGEoKSBj
b25zdDsKKworICBib29sIHNldF9wcmltYXJpZXNfZnJvbV91aW50OCh1aW50OF90IGVudW1fdmFs
dWUpOworICBib29sIHNldF90cmFuc2Zlcl9mcm9tX3VpbnQ4KHVpbnQ4X3QgZW51bV92YWx1ZSk7
CisgIGJvb2wgc2V0X21hdHJpeF9mcm9tX3VpbnQ4KHVpbnQ4X3QgZW51bV92YWx1ZSk7CisgIGJv
b2wgc2V0X3JhbmdlX2Zyb21fdWludDgodWludDhfdCBlbnVtX3ZhbHVlKTsKKyAgdm9pZCBzZXRf
aGRyX21ldGFkYXRhKGNvbnN0IEhkck1ldGFkYXRhKiBoZHJfbWV0YWRhdGEpOwogCiAgcHJpdmF0
ZToKICAgUHJpbWFyeUlEIHByaW1hcmllc18gPSBQcmltYXJ5SUQ6OmtJbnZhbGlkOwogICBUcmFu
c2ZlcklEIHRyYW5zZmVyXyA9IFRyYW5zZmVySUQ6OmtJbnZhbGlkOwogICBNYXRyaXhJRCBtYXRy
aXhfID0gTWF0cml4SUQ6OmtJbnZhbGlkOwogICBSYW5nZUlEIHJhbmdlXyA9IFJhbmdlSUQ6OmtJ
bnZhbGlkOworICBhYnNsOjpvcHRpb25hbDxIZHJNZXRhZGF0YT4gaGRyX21ldGFkYXRhXzsKIH07
CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2ltYWdlLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2VuY29kZWRf
aW1hZ2UuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdjNmZhZGVlNzAzYzg5YWNjZTI0OTgxM2MxZDIyMjRhZWYy
MjM4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2ltYWdlLmNjCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2Uu
aCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gRkZt
cGVnJ3MgZGVjb2RlciwgdXNlZCBieSBIMjY0RGVjb2RlckltcGwsIHJlcXVpcmVzIHVwIHRvIDgg
Ynl0ZXMgcGFkZGluZyBkdWUKKy8vIHRvIG9wdGltaXplZCBiaXRzdHJlYW0gcmVhZGVycy4gU2Vl
IGF2Y29kZWNfZGVjb2RlX3ZpZGVvMi4KK2NvbnN0IHNpemVfdCBFbmNvZGVkSW1hZ2U6OmtCdWZm
ZXJQYWRkaW5nQnl0ZXNIMjY0ID0gODsKKworc2l6ZV90IEVuY29kZWRJbWFnZTo6R2V0QnVmZmVy
UGFkZGluZ0J5dGVzKFZpZGVvQ29kZWNUeXBlIGNvZGVjX3R5cGUpIHsKKyAgc3dpdGNoIChjb2Rl
Y190eXBlKSB7CisgICAgY2FzZSBrVmlkZW9Db2RlY0gyNjQ6CisgICAgICByZXR1cm4ga0J1ZmZl
clBhZGRpbmdCeXRlc0gyNjQ7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAwOworICB9Cit9
CisKK0VuY29kZWRJbWFnZTo6RW5jb2RlZEltYWdlKCkgOiBFbmNvZGVkSW1hZ2UobnVsbHB0ciwg
MCwgMCkge30KKworRW5jb2RlZEltYWdlOjpFbmNvZGVkSW1hZ2UoY29uc3QgRW5jb2RlZEltYWdl
JikgPSBkZWZhdWx0OworCitFbmNvZGVkSW1hZ2U6OkVuY29kZWRJbWFnZSh1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBsZW5ndGgsIHNpemVfdCBzaXplKQorICAgIDogX2J1ZmZlcihidWZmZXIpLCBf
bGVuZ3RoKGxlbmd0aCksIF9zaXplKHNpemUpIHt9CisKK3ZvaWQgRW5jb2RlZEltYWdlOjpTZXRF
bmNvZGVUaW1lKGludDY0X3QgZW5jb2RlX3N0YXJ0X21zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBlbmNvZGVfZmluaXNoX21zKSB7CisgIHRpbWluZ18uZW5jb2Rl
X3N0YXJ0X21zID0gZW5jb2RlX3N0YXJ0X21zOworICB0aW1pbmdfLmVuY29kZV9maW5pc2hfbXMg
PSBlbmNvZGVfZmluaXNoX21zOworfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2Vu
Y29kZWRfaW1hZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdjNzE5Y2UzYTU2NzhkNTFh
YzI0ZmM3MzIwMzllZWJkMWI5MGRmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgKQEAg
LTAsMCArMSwxMDkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9WSURF
T19FTkNPREVEX0lNQUdFX0hfCisjZGVmaW5lIEFQSV9WSURFT19FTkNPREVEX0lNQUdFX0hfCisK
KyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
KyNpbmNsdWRlICJhcGkvdmlkZW8vY29sb3Jfc3BhY2UuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8v
dmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2Nv
ZGVjX3R5cGUuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29udGVudF90eXBlLmgiCisj
aW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3JvdGF0aW9uLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVv
L3ZpZGVvX3RpbWluZy5oIgorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1
aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFRP
RE8oYnVnLndlYnJ0Yy5vcmcvOTM3OCk6IFRoaXMgaXMgYSBsZWdhY3kgYXBpIGNsYXNzLCB3aGlj
aCBpcyBzbG93bHkgYmVpbmcKKy8vIGNsZWFuZWQgdXAuIERpcmVjdCB1c2Ugb2YgaXRzIG1lbWJl
cnMgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQuCitjbGFzcyBSVENfRVhQT1JUIEVuY29kZWRJbWFn
ZSB7CisgcHVibGljOgorICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWZmZXJQYWRkaW5nQnl0ZXNI
MjY0OworCisgIC8vIFNvbWUgZGVjb2RlcnMgcmVxdWlyZSBlbmNvZGVkIGltYWdlIGJ1ZmZlcnMg
dG8gYmUgcGFkZGVkIHdpdGggYSBzbWFsbAorICAvLyBudW1iZXIgb2YgYWRkaXRpb25hbCBieXRl
cyAoZHVlIHRvIG92ZXItcmVhZGluZyBieXRlIHJlYWRlcnMpLgorICBzdGF0aWMgc2l6ZV90IEdl
dEJ1ZmZlclBhZGRpbmdCeXRlcyhWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlKTsKKworICBFbmNv
ZGVkSW1hZ2UoKTsKKyAgRW5jb2RlZEltYWdlKGNvbnN0IEVuY29kZWRJbWFnZSYpOworICBFbmNv
ZGVkSW1hZ2UodWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBzaXplX3Qgc2l6ZSk7CisK
KyAgLy8gVE9ETyhuaXNzZSk6IENoYW5nZSBzdHlsZSB0byB0aW1lc3RhbXAoKSwgc2V0X3RpbWVz
dGFtcCgpLCBmb3IgY29uc2lzdGVuY3kKKyAgLy8gd2l0aCB0aGUgVmlkZW9GcmFtZSBjbGFzcy4K
KyAgLy8gU2V0IGZyYW1lIHRpbWVzdGFtcCAoOTBrSHopLgorICB2b2lkIFNldFRpbWVzdGFtcCh1
aW50MzJfdCB0aW1lc3RhbXApIHsgdGltZXN0YW1wX3J0cF8gPSB0aW1lc3RhbXA7IH0KKworICAv
LyBHZXQgZnJhbWUgdGltZXN0YW1wICg5MGtIeikuCisgIHVpbnQzMl90IFRpbWVzdGFtcCgpIGNv
bnN0IHsgcmV0dXJuIHRpbWVzdGFtcF9ydHBfOyB9CisKKyAgdm9pZCBTZXRFbmNvZGVUaW1lKGlu
dDY0X3QgZW5jb2RlX3N0YXJ0X21zLCBpbnQ2NF90IGVuY29kZV9maW5pc2hfbXMpOworCisgIGFi
c2w6Om9wdGlvbmFsPGludD4gU3BhdGlhbEluZGV4KCkgY29uc3QgeworICAgIHJldHVybiBzcGF0
aWFsX2luZGV4XzsKKyAgfQorICB2b2lkIFNldFNwYXRpYWxJbmRleChhYnNsOjpvcHRpb25hbDxp
bnQ+IHNwYXRpYWxfaW5kZXgpIHsKKyAgICBSVENfRENIRUNLX0dFKHNwYXRpYWxfaW5kZXgudmFs
dWVfb3IoMCksIDApOworICAgIFJUQ19EQ0hFQ0tfTFQoc3BhdGlhbF9pbmRleC52YWx1ZV9vcigw
KSwga01heFNwYXRpYWxMYXllcnMpOworICAgIHNwYXRpYWxfaW5kZXhfID0gc3BhdGlhbF9pbmRl
eDsKKyAgfQorCisgIGNvbnN0IHdlYnJ0Yzo6Q29sb3JTcGFjZSogQ29sb3JTcGFjZSgpIGNvbnN0
IHsKKyAgICByZXR1cm4gY29sb3Jfc3BhY2VfID8gJipjb2xvcl9zcGFjZV8gOiBudWxscHRyOwor
ICB9CisgIHZvaWQgU2V0Q29sb3JTcGFjZShjb25zdCB3ZWJydGM6OkNvbG9yU3BhY2UqIGNvbG9y
X3NwYWNlKSB7CisgICAgY29sb3Jfc3BhY2VfID0KKyAgICAgICAgY29sb3Jfc3BhY2UgPyBhYnNs
OjptYWtlX29wdGlvbmFsKCpjb2xvcl9zcGFjZSkgOiBhYnNsOjpudWxsb3B0OworICB9CisKKyAg
dWludDMyX3QgX2VuY29kZWRXaWR0aCA9IDA7CisgIHVpbnQzMl90IF9lbmNvZGVkSGVpZ2h0ID0g
MDsKKyAgLy8gTlRQIHRpbWUgb2YgdGhlIGNhcHR1cmUgdGltZSBpbiBsb2NhbCB0aW1lYmFzZSBp
biBtaWxsaXNlY29uZHMuCisgIGludDY0X3QgbnRwX3RpbWVfbXNfID0gMDsKKyAgaW50NjRfdCBj
YXB0dXJlX3RpbWVfbXNfID0gMDsKKyAgRnJhbWVUeXBlIF9mcmFtZVR5cGUgPSBrVmlkZW9GcmFt
ZURlbHRhOworICB1aW50OF90KiBfYnVmZmVyOworICBzaXplX3QgX2xlbmd0aDsKKyAgc2l6ZV90
IF9zaXplOworICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uXyA9IGtWaWRlb1JvdGF0aW9uXzA7Cisg
IFZpZGVvQ29udGVudFR5cGUgY29udGVudF90eXBlXyA9IFZpZGVvQ29udGVudFR5cGU6OlVOU1BF
Q0lGSUVEOworICBib29sIF9jb21wbGV0ZUZyYW1lID0gZmFsc2U7CisgIGludCBxcF8gPSAtMTsg
IC8vIFF1YW50aXplciB2YWx1ZS4KKworICAvLyBXaGVuIGFuIGFwcGxpY2F0aW9uIGluZGljYXRl
cyBub24temVybyB2YWx1ZXMgaGVyZSwgaXQgaXMgdGFrZW4gYXMgYW4KKyAgLy8gaW5kaWNhdGlv
biB0aGF0IGFsbCBmdXR1cmUgZnJhbWVzIHdpbGwgYmUgY29uc3RyYWluZWQgd2l0aCB0aG9zZSBs
aW1pdHMKKyAgLy8gdW50aWwgdGhlIGFwcGxpY2F0aW9uIGluZGljYXRlcyBhIGNoYW5nZSBhZ2Fp
bi4KKyAgUGxheW91dERlbGF5IHBsYXlvdXRfZGVsYXlfID0gey0xLCAtMX07CisKKyAgc3RydWN0
IFRpbWluZyB7CisgICAgdWludDhfdCBmbGFncyA9IFZpZGVvU2VuZFRpbWluZzo6a0ludmFsaWQ7
CisgICAgaW50NjRfdCBlbmNvZGVfc3RhcnRfbXMgPSAwOworICAgIGludDY0X3QgZW5jb2RlX2Zp
bmlzaF9tcyA9IDA7CisgICAgaW50NjRfdCBwYWNrZXRpemF0aW9uX2ZpbmlzaF9tcyA9IDA7Cisg
ICAgaW50NjRfdCBwYWNlcl9leGl0X21zID0gMDsKKyAgICBpbnQ2NF90IG5ldHdvcmtfdGltZXN0
YW1wX21zID0gMDsKKyAgICBpbnQ2NF90IG5ldHdvcmsyX3RpbWVzdGFtcF9tcyA9IDA7CisgICAg
aW50NjRfdCByZWNlaXZlX3N0YXJ0X21zID0gMDsKKyAgICBpbnQ2NF90IHJlY2VpdmVfZmluaXNo
X21zID0gMDsKKyAgfSB0aW1pbmdfOworCisgcHJpdmF0ZToKKyAgdWludDMyX3QgdGltZXN0YW1w
X3J0cF8gPSAwOworICBhYnNsOjpvcHRpb25hbDxpbnQ+IHNwYXRpYWxfaW5kZXhfOworICBhYnNs
OjpvcHRpb25hbDx3ZWJydGM6OkNvbG9yU3BhY2U+IGNvbG9yX3NwYWNlXzsKK307CisKK30gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVklERU9fRU5DT0RFRF9JTUFHRV9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvL2hkcl9tZXRhZGF0YS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlby9oZHJfbWV0YWRhdGEuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJhNjY5
Yzk4YTNjMGYwNzlhZjVjMTc2OTQ1ZWMyOTgyOGJkMmRkZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9oZHJfbWV0
YWRhdGEuY2MKQEAgLTAsMCArMSwyMSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNs
dWRlICJhcGkvdmlkZW8vaGRyX21ldGFkYXRhLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitI
ZHJNYXN0ZXJpbmdNZXRhZGF0YTo6Q2hyb21hdGljaXR5OjpDaHJvbWF0aWNpdHkoKSA9IGRlZmF1
bHQ7CisKK0hkck1hc3RlcmluZ01ldGFkYXRhOjpIZHJNYXN0ZXJpbmdNZXRhZGF0YSgpID0gZGVm
YXVsdDsKKworSGRyTWV0YWRhdGE6Okhkck1ldGFkYXRhKCkgPSBkZWZhdWx0OworCit9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaGRyX21ldGFkYXRhLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaGRyX21ldGFkYXRhLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjc2YTkwMGM5OTQ4NjQyMTQzMGYwNGRiZWQyYjI4ODcxM2NlZTNiZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlby9oZHJfbWV0YWRhdGEuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogIENvcHlyaWdodCAo
YykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2lmbmRlZiBBUElfVklERU9fSERSX01FVEFEQVRBX0hfCisjZGVmaW5lIEFQSV9WSURF
T19IRFJfTUVUQURBVEFfSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworLy8gU01QVEUgU1QgMjA4NiBtYXN0ZXJpbmcgbWV0YWRhdGEsCisvLyBzZWUgaHR0
cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2RvY3VtZW50LzgzNTM4OTkuCitzdHJ1Y3QgSGRyTWFz
dGVyaW5nTWV0YWRhdGEgeworICBzdHJ1Y3QgQ2hyb21hdGljaXR5IHsKKyAgICAvLyB4eSBjaHJv
bWF0aWNpdHkgY29vcmRpbmF0ZXMgbXVzdCBiZSBjYWxjdWxhdGVkIGFzIHNwZWNpZmllZCBpbiBJ
U08KKyAgICAvLyAxMTY2NC0zOjIwMTIgU2VjdGlvbiA3LCBhbmQgbXVzdCBiZSBzcGVjaWZpZWQg
d2l0aCBmb3VyIGRlY2ltYWwgcGxhY2VzLgorICAgIC8vIFRoZSB4IGNvb3JkaW5hdGUgbXVzdCBi
ZSBpbiB0aGUgcmFuZ2UgWzAuMDAwMSwgMC43NDAwXSBhbmQgdGhlIHkKKyAgICAvLyBjb29yZGlu
YXRlIG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLjAwMDEsIDAuODQwMF0uCisgICAgZmxvYXQgeCA9
IDAuMGY7CisgICAgZmxvYXQgeSA9IDAuMGY7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENo
cm9tYXRpY2l0eSYgcmhzKSBjb25zdCB7CisgICAgICByZXR1cm4geCA9PSByaHMueCAmJiB5ID09
IHJocy55OworICAgIH0KKworICAgIENocm9tYXRpY2l0eSgpOworICB9OworCisgIC8vIFRoZSBu
b21pbmFsIHByaW1hcmllcyBvZiB0aGUgbWFzdGVyaW5nIGRpc3BsYXkuCisgIENocm9tYXRpY2l0
eSBwcmltYXJ5X3I7CisgIENocm9tYXRpY2l0eSBwcmltYXJ5X2c7CisgIENocm9tYXRpY2l0eSBw
cmltYXJ5X2I7CisKKyAgLy8gVGhlIG5vbWluYWwgY2hyb21hdGljaXR5IG9mIHRoZSB3aGl0ZSBw
b2ludCBvZiB0aGUgbWFzdGVyaW5nIGRpc3BsYXkuCisgIENocm9tYXRpY2l0eSB3aGl0ZV9wb2lu
dDsKKworICAvLyBUaGUgbm9taW5hbCBtYXhpbXVtIGRpc3BsYXkgbHVtaW5hbmNlIG9mIHRoZSBt
YXN0ZXJpbmcgZGlzcGxheS4gU3BlY2lmaWVkCisgIC8vIGluIHRoZSB1bml0IGNhbmRlbGEvbTIu
IFRoZSB2YWx1ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBbNSwgMTAwMDBdIHdpdGggemVybworICAv
LyBkZWNpbWFsIHBsYWNlcy4KKyAgZmxvYXQgbHVtaW5hbmNlX21heCA9IDAuMGY7CisKKyAgLy8g
VGhlIG5vbWluYWwgbWluaW11bSBkaXNwbGF5IGx1bWluYW5jZSBvZiB0aGUgbWFzdGVyaW5nIGRp
c3BsYXkuIFNwZWNpZmllZAorICAvLyBpbiB0aGUgdW5pdCBjYW5kZWxhL20yLiBUaGUgdmFsdWUg
bXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzAuMDAwMSwgNS4wMDAwXQorICAvLyB3aXRoIGZvdXIgZGVj
aW1hbCBwbGFjZXMuCisgIGZsb2F0IGx1bWluYW5jZV9taW4gPSAwLjBmOworCisgIEhkck1hc3Rl
cmluZ01ldGFkYXRhKCk7CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhkck1hc3RlcmluZ01l
dGFkYXRhJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gKChwcmltYXJ5X3IgPT0gcmhzLnByaW1h
cnlfcikgJiYgKHByaW1hcnlfZyA9PSByaHMucHJpbWFyeV9nKSAmJgorICAgICAgICAgICAgKHBy
aW1hcnlfYiA9PSByaHMucHJpbWFyeV9iKSAmJiAod2hpdGVfcG9pbnQgPT0gcmhzLndoaXRlX3Bv
aW50KSAmJgorICAgICAgICAgICAgKGx1bWluYW5jZV9tYXggPT0gcmhzLmx1bWluYW5jZV9tYXgp
ICYmCisgICAgICAgICAgICAobHVtaW5hbmNlX21pbiA9PSByaHMubHVtaW5hbmNlX21pbikpOwor
ICB9Cit9OworCisvLyBIaWdoIGR5bmFtaWMgcmFuZ2UgKEhEUikgbWV0YWRhdGEgY29tbW9uIGZv
ciBIRFIxMCBhbmQgV2ViTS9WUDktYmFzZWQgSERSCisvLyBmb3JtYXRzLiBUaGlzIHN0cnVjdCBy
ZXBsaWNhdGVzIHRoZSBIRFJNZXRhZGF0YSBzdHJ1Y3QgZGVmaW5lZCBpbgorLy8gaHR0cHM6Ly9j
cy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL21lZGlhL2Jhc2UvaGRyX21ldGFkYXRhLmgKK3N0
cnVjdCBIZHJNZXRhZGF0YSB7CisgIEhkck1hc3RlcmluZ01ldGFkYXRhIG1hc3RlcmluZ19tZXRh
ZGF0YTsKKyAgLy8gTWF4IGNvbnRlbnQgbGlnaHQgbGV2ZWwgKENMTCksIGkuZS4gbWF4aW11bSBi
cmlnaHRuZXNzIGxldmVsIHByZXNlbnQgaW4gdGhlCisgIC8vIHN0cmVhbSwgaW4gbml0cy4gMSBu
aXQgPSAxIGNhbmRlbGEvbTIuCisgIHVpbnQzMl90IG1heF9jb250ZW50X2xpZ2h0X2xldmVsID0g
MDsKKyAgLy8gTWF4IGZyYW1lLWF2ZXJhZ2UgbGlnaHQgbGV2ZWwgKEZBTEwpLCBpLmUuIG1heGlt
dW0gYXZlcmFnZSBicmlnaHRuZXNzIG9mCisgIC8vIHRoZSBicmlnaHRlc3QgZnJhbWUgaW4gdGhl
IHN0cmVhbSwgaW4gbml0cy4KKyAgdWludDMyX3QgbWF4X2ZyYW1lX2F2ZXJhZ2VfbGlnaHRfbGV2
ZWwgPSAwOworCisgIEhkck1ldGFkYXRhKCk7CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhk
ck1ldGFkYXRhJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gKAorICAgICAgICAobWF4X2NvbnRl
bnRfbGlnaHRfbGV2ZWwgPT0gcmhzLm1heF9jb250ZW50X2xpZ2h0X2xldmVsKSAmJgorICAgICAg
ICAobWF4X2ZyYW1lX2F2ZXJhZ2VfbGlnaHRfbGV2ZWwgPT0gcmhzLm1heF9mcmFtZV9hdmVyYWdl
X2xpZ2h0X2xldmVsKSAmJgorICAgICAgICAobWFzdGVyaW5nX21ldGFkYXRhID09IHJocy5tYXN0
ZXJpbmdfbWV0YWRhdGEpKTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisj
ZW5kaWYgIC8vIEFQSV9WSURFT19IRFJfTUVUQURBVEFfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9pNDIwX2J1ZmZlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2k0
MjBfYnVmZmVyLmgKaW5kZXggMjgyYjI0MjZjYTM2ZTE1OTIyOGVlNWIzZWU3MTgzNWM4YmY3NzEx
OS4uNjMxZTM5NGU1MzRmMGIyNzQ3OWMxYzZmNmRmNjFhMDUxY2M1NWY1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2k0MjBf
YnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgKQEAgLTExLDE2ICsxMSwxOSBAQAogI2lmbmRlZiBBUElf
VklERU9fSTQyMF9CVUZGRVJfSF8KICNkZWZpbmUgQVBJX1ZJREVPX0k0MjBfQlVGRkVSX0hfCiAK
KyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJhcGkv
dmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3Jv
dGF0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVtb3J5L2FsaWduZWRfbWFsbG9jLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9z
eXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gUGxhaW4gSTQy
MCBidWZmZXIgaW4gc3RhbmRhcmQgbWVtb3J5LgotY2xhc3MgSTQyMEJ1ZmZlciA6IHB1YmxpYyBJ
NDIwQnVmZmVySW50ZXJmYWNlIHsKK2NsYXNzIFJUQ19FWFBPUlQgSTQyMEJ1ZmZlciA6IHB1Ymxp
YyBJNDIwQnVmZmVySW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHN0YXRpYyBydGM6OnNjb3BlZF9y
ZWZwdHI8STQyMEJ1ZmZlcj4gQ3JlYXRlKGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgIHN0YXRp
YyBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlcj4gQ3JlYXRlKGludCB3aWR0aCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
by90ZXN0L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvL3Rlc3QvQlVJTEQuZ24KaW5kZXggY2JhNDI0NThkMjIxNWQxM2M1ZjUwZmU4
OTRhYzhmY2E0Yzc4ZmFkMi4uYzgyNjllZmRjMDc5YmJlMzdlZGUyNzdhYWE3ZjM5YjUxMjA1Yzg5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvL3Rlc3QvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3Rlc3QvQlVJTEQuZ24KQEAgLTExLDEwICsxMSwxMiBA
QCBpbXBvcnQoIi4uLy4uLy4uL3dlYnJ0Yy5nbmkiKQogcnRjX3NvdXJjZV9zZXQoInJ0Y19hcGlf
dmlkZW9fdW5pdHRlc3RzIikgewogICB0ZXN0b25seSA9IHRydWUKICAgc291cmNlcyA9IFsKKyAg
ICAiY29sb3Jfc3BhY2VfdW5pdHRlc3QuY2MiLAogICAgICJ2aWRlb19iaXRyYXRlX2FsbG9jYXRp
b25fdW5pdHRlc3QuY2MiLAogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uOnZpZGVvX2JpdHJhdGVf
YWxsb2NhdGlvbiIsCisgICAgIi4uOnZpZGVvX2ZyYW1lIiwKICAgICAiLi4vLi4vLi4vdGVzdDp0
ZXN0X3N1cHBvcnQiLAogICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdGVzdC9jb2xvcl9zcGFjZV91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby90
ZXN0L2NvbG9yX3NwYWNlX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3MWJjZWY4NmE2YmM1MmMx
ZDE2ZWQ5YjM5ZTY0NzYwN2JiMGI1ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdGVzdC9jb2xvcl9zcGFjZV91
bml0dGVzdC5jYwpAQCAtMCwwICsxLDU1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lu
Y2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmgiCisj
aW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK1RFU1QoQ29sb3JT
cGFjZSwgVGVzdFNldHRpbmdQcmltYXJpZXNGcm9tVWludDgpIHsKKyAgQ29sb3JTcGFjZSBjb2xv
cl9zcGFjZTsKKyAgRVhQRUNUX1RSVUUoY29sb3Jfc3BhY2Uuc2V0X3ByaW1hcmllc19mcm9tX3Vp
bnQ4KAorICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ29sb3JTcGFjZTo6UHJpbWFyeUlEOjpr
QlQ0NzBCRykpKTsKKyAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlByaW1hcnlJRDo6a0JUNDcwQkcs
IGNvbG9yX3NwYWNlLnByaW1hcmllcygpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbG9yX3NwYWNlLnNl
dF9wcmltYXJpZXNfZnJvbV91aW50OCgzKSk7CisgIEVYUEVDVF9GQUxTRShjb2xvcl9zcGFjZS5z
ZXRfcHJpbWFyaWVzX2Zyb21fdWludDgoMjMpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbG9yX3NwYWNl
LnNldF9wcmltYXJpZXNfZnJvbV91aW50OCg2NCkpOworfQorCitURVNUKENvbG9yU3BhY2UsIFRl
c3RTZXR0aW5nVHJhbnNmZXJGcm9tVWludDgpIHsKKyAgQ29sb3JTcGFjZSBjb2xvcl9zcGFjZTsK
KyAgRVhQRUNUX1RSVUUoY29sb3Jfc3BhY2Uuc2V0X3RyYW5zZmVyX2Zyb21fdWludDgoCisgICAg
ICBzdGF0aWNfY2FzdDx1aW50OF90PihDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjprQlQyMDIwXzEw
KSkpOworICBFWFBFQ1RfRVEoQ29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6a0JUMjAyMF8xMCwgY29s
b3Jfc3BhY2UudHJhbnNmZXIoKSk7CisgIEVYUEVDVF9GQUxTRShjb2xvcl9zcGFjZS5zZXRfdHJh
bnNmZXJfZnJvbV91aW50OCgzKSk7CisgIEVYUEVDVF9GQUxTRShjb2xvcl9zcGFjZS5zZXRfdHJh
bnNmZXJfZnJvbV91aW50OCgxOSkpOworICBFWFBFQ1RfRkFMU0UoY29sb3Jfc3BhY2Uuc2V0X3Ry
YW5zZmVyX2Zyb21fdWludDgoMTI4KSk7Cit9CisKK1RFU1QoQ29sb3JTcGFjZSwgVGVzdFNldHRp
bmdNYXRyaXhGcm9tVWludDgpIHsKKyAgQ29sb3JTcGFjZSBjb2xvcl9zcGFjZTsKKyAgRVhQRUNU
X1RSVUUoY29sb3Jfc3BhY2Uuc2V0X21hdHJpeF9mcm9tX3VpbnQ4KAorICAgICAgc3RhdGljX2Nh
c3Q8dWludDhfdD4oQ29sb3JTcGFjZTo6TWF0cml4SUQ6OmtDRE5DTFMpKSk7CisgIEVYUEVDVF9F
UShDb2xvclNwYWNlOjpNYXRyaXhJRDo6a0NETkNMUywgY29sb3Jfc3BhY2UubWF0cml4KCkpOwor
ICBFWFBFQ1RfRkFMU0UoY29sb3Jfc3BhY2Uuc2V0X21hdHJpeF9mcm9tX3VpbnQ4KDMpKTsKKyAg
RVhQRUNUX0ZBTFNFKGNvbG9yX3NwYWNlLnNldF9tYXRyaXhfZnJvbV91aW50OCgxNSkpOworICBF
WFBFQ1RfRkFMU0UoY29sb3Jfc3BhY2Uuc2V0X21hdHJpeF9mcm9tX3VpbnQ4KDI1NSkpOworfQor
CitURVNUKENvbG9yU3BhY2UsIFRlc3RTZXR0aW5nUmFuZ2VGcm9tVWludDgpIHsKKyAgQ29sb3JT
cGFjZSBjb2xvcl9zcGFjZTsKKyAgRVhQRUNUX1RSVUUoY29sb3Jfc3BhY2Uuc2V0X3JhbmdlX2Zy
b21fdWludDgoCisgICAgICBzdGF0aWNfY2FzdDx1aW50OF90PihDb2xvclNwYWNlOjpSYW5nZUlE
OjprRnVsbCkpKTsKKyAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlJhbmdlSUQ6OmtGdWxsLCBjb2xv
cl9zcGFjZS5yYW5nZSgpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbG9yX3NwYWNlLnNldF9yYW5nZV9m
cm9tX3VpbnQ4KDQpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVv
X2JpdHJhdGVfYWxsb2NhdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uY2MKaW5kZXggNmM1
YWQxZWFlNWZhYzE1MGQxMzQwNjgyYzMxMzY5ZjEzMmJmYzQ0OS4uMWIzNTY5MDQ3ZTBlNzgwOWMz
NGQzZWIwZDhiZTUxNDE4ZTM5OWY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlk
ZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmNjCkBAIC0xMCwxMiArMTAsMTEgQEAKIAogI2lu
Y2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uaCIKIAotI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlIDxjc3RkaW50PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVv
X2JpdHJhdGVfYWxsb2NhdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oCmluZGV4IDllMjUw
MWQ4NWEwOWFhY2I5MTllOWNiOGFmYWY3MGRhZTRlNDljOWIuLmQxNzcxYjQ0YTQzNWNiODNhMjll
YTk0YzYzMWQyODkwMzA3YTljZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8v
dmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgQVBJ
X1ZJREVPX1ZJREVPX0JJVFJBVEVfQUxMT0NBVElPTl9IXwogI2RlZmluZSBBUElfVklERU9fVklE
RU9fQklUUkFURV9BTExPQ0FUSU9OX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1
ZGUgPHZlY3Rvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19jb2RlY190eXBlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ0NzcyM2NmMDg4Y2RhYjI4MzJiZDFiNTFmYzI4ODEwYjEyMDkzNWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9WSURFT19WSURFT19DT0RFQ19UWVBFX0hfCisjZGVm
aW5lIEFQSV9WSURFT19WSURFT19DT0RFQ19UWVBFX0hfCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CisvLyBWaWRlbyBjb2RlYyB0eXBlcworZW51bSBWaWRlb0NvZGVjVHlwZSB7CisgIC8vIFRoZXJl
IGFyZSB2YXJpb3VzIG1lbXNldCguLi4sIDAsIC4uLikgY2FsbHMgaW4gdGhlIGNvZGUgdGhhdCBy
ZWx5IG9uCisgIC8vIGtWaWRlb0NvZGVjR2VuZXJpYyBiZWluZyB6ZXJvLgorICBrVmlkZW9Db2Rl
Y0dlbmVyaWMgPSAwLAorICBrVmlkZW9Db2RlY1ZQOCwKKyAga1ZpZGVvQ29kZWNWUDksCisgIGtW
aWRlb0NvZGVjSDI2NCwKKyAga1ZpZGVvQ29kZWNJNDIwLAorICBrVmlkZW9Db2RlY011bHRpcGxl
eCwKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVklERU9f
VklERU9fQ09ERUNfVFlQRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2NvbnRl
bnRfdHlwZS5oCmluZGV4IDhjNjQ2MDI4OGQ4MjFjYjY2ZWY3MTQwZDk4OTVlM2M1Njk4OTM0MjYu
LjJkMzhhNjIzNjZjNTc3NTc2YTgyYmZkMmQwYmQ0ODk0ZGJjMjM3MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19j
b250ZW50X3R5cGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdmlkZW8vdmlkZW9fY29udGVudF90eXBlLmgKQEAgLTEzLDggKzEzLDYgQEAKIAog
I2luY2x1ZGUgPHN0ZGludC5oPgogCi0jaW5jbHVkZSA8c3RyaW5nPgotCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIAogZW51bSBjbGFzcyBWaWRlb0NvbnRlbnRUeXBlIDogdWludDhfdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8v
dmlkZW9fZnJhbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuY2MKaW5kZXggNTUyMWFkOGE1ODc0NDEyMjM3NDNjMmY5
YThjOTFkNDM1OTAwNTBkOS4uZWFhZTMzYjJiM2ZmZDg0ZjVmNDJlNTU1M2UwNTNjMWQyYWFmYWQ3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19mcmFtZS5jYwpAQCAtNjQsNiArNjQsMTMg
QEAgVmlkZW9GcmFtZTo6QnVpbGRlciYgVmlkZW9GcmFtZTo6QnVpbGRlcjo6c2V0X2NvbG9yX3Nw
YWNlKAogICByZXR1cm4gKnRoaXM7CiB9CiAKK1ZpZGVvRnJhbWU6OkJ1aWxkZXImIFZpZGVvRnJh
bWU6OkJ1aWxkZXI6OnNldF9jb2xvcl9zcGFjZSgKKyAgICBjb25zdCBDb2xvclNwYWNlKiBjb2xv
cl9zcGFjZSkgeworICBjb2xvcl9zcGFjZV8gPQorICAgICAgY29sb3Jfc3BhY2UgPyBhYnNsOjpt
YWtlX29wdGlvbmFsKCpjb2xvcl9zcGFjZSkgOiBhYnNsOjpudWxsb3B0OworICByZXR1cm4gKnRo
aXM7Cit9CisKIFZpZGVvRnJhbWU6OlZpZGVvRnJhbWUoY29uc3QgcnRjOjpzY29wZWRfcmVmcHRy
PFZpZGVvRnJhbWVCdWZmZXI+JiBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0
Yzo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCB0aW1lc3RhbXBfdXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19mcmFtZS5oCmluZGV4IGRj
YjUzM2UyOWYwYzA5ZjJiYWU4Nzk3MzEzYmExOGQ1MmU3MTZmZmMuLjJjNWQwODFiYTYyMWRjNzZk
YmE2Y2VmOGZjYzEyOTYyMThlMzk5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19mcmFtZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19mcmFt
ZS5oCkBAIC0xNSwxMiArMTUsMTUgQEAKIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKICNpbmNsdWRlICJhcGkvdmlkZW8vY29sb3Jfc3BhY2UuaCIKKyNpbmNsdWRlICJhcGkvdmlk
ZW8vaGRyX21ldGFkYXRhLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZl
ci5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19yb3RhdGlvbi5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19l
eHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIFZpZGVvRnJhbWUgeworY2xh
c3MgUlRDX0VYUE9SVCBWaWRlb0ZyYW1lIHsKICBwdWJsaWM6CiAgIC8vIFByZWZlcnJlZCB3YXkg
b2YgYnVpbGRpbmcgVmlkZW9GcmFtZSBvYmplY3RzLgogICBjbGFzcyBCdWlsZGVyIHsKQEAgLTM3
LDYgKzQwLDcgQEAgY2xhc3MgVmlkZW9GcmFtZSB7CiAgICAgQnVpbGRlciYgc2V0X250cF90aW1l
X21zKGludDY0X3QgbnRwX3RpbWVfbXMpOwogICAgIEJ1aWxkZXImIHNldF9yb3RhdGlvbihWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uKTsKICAgICBCdWlsZGVyJiBzZXRfY29sb3Jfc3BhY2UoY29uc3Qg
Q29sb3JTcGFjZSYgY29sb3Jfc3BhY2UpOworICAgIEJ1aWxkZXImIHNldF9jb2xvcl9zcGFjZShj
b25zdCBDb2xvclNwYWNlKiBjb2xvcl9zcGFjZSk7CiAKICAgIHByaXZhdGU6CiAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gdmlkZW9fZnJhbWVfYnVmZmVy
XzsKQEAgLTExMCw4ICsxMTQsMTAgQEAgY2xhc3MgVmlkZW9GcmFtZSB7CiAgIFZpZGVvUm90YXRp
b24gcm90YXRpb24oKSBjb25zdCB7IHJldHVybiByb3RhdGlvbl87IH0KICAgdm9pZCBzZXRfcm90
YXRpb24oVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikgeyByb3RhdGlvbl8gPSByb3RhdGlvbjsgfQog
Ci0gIC8vIFNldCBDb2xvciBzcGFjZSB3aGVuIGF2YWlsYWJsZS4KLSAgYWJzbDo6b3B0aW9uYWw8
Q29sb3JTcGFjZT4gY29sb3Jfc3BhY2UoKSBjb25zdCB7IHJldHVybiBjb2xvcl9zcGFjZV87IH0K
KyAgLy8gR2V0IGNvbG9yIHNwYWNlIHdoZW4gYXZhaWxhYmxlLgorICBjb25zdCBDb2xvclNwYWNl
KiBjb2xvcl9zcGFjZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gY29sb3Jfc3BhY2VfID8gJipjb2xv
cl9zcGFjZV8gOiBudWxscHRyOworICB9CiAKICAgLy8gR2V0IHJlbmRlciB0aW1lIGluIG1pbGxp
c2Vjb25kcy4KICAgLy8gVE9ETyhuaXNzZSk6IERlcHJlY2F0ZWQuIE1pZ3JhdGUgYWxsIHVzZXJz
IHRvIHRpbWVzdGFtcF91cygpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX3NvdXJjZV9pbnRlcmZhY2UuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19z
b3VyY2VfaW50ZXJmYWNlLmgKaW5kZXggNGVlNDcxOTQ1NTI5ZGYxMzNjM2Q0ZDE4MzNmODA2OWU3
MGQ4ZTg4Ny4uMmJmNzM3MDRiZmFmMWFiMTNjNjU3Yjc1ZTdmNjU0NDExMmE1NTQxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVv
L3ZpZGVvX3NvdXJjZV9pbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc291cmNlX2ludGVyZmFjZS5oCkBAIC0x
NSwxMiArMTUsMTMgQEAKIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNs
dWRlICJhcGkvdmlkZW8vdmlkZW9fc2lua19pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIAogLy8gVmlkZW9TaW5r
V2FudHMgaXMgdXNlZCBmb3Igbm90aWZ5aW5nIHRoZSBzb3VyY2Ugb2YgcHJvcGVydGllcyBhIHZp
ZGVvIGZyYW1lCiAvLyBzaG91bGQgaGF2ZSB3aGVuIGl0IGlzIGRlbGl2ZXJlZCB0byBhIGNlcnRh
aW4gc2luay4KLXN0cnVjdCBWaWRlb1NpbmtXYW50cyB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBWaWRl
b1NpbmtXYW50cyB7CiAgIFZpZGVvU2lua1dhbnRzKCk7CiAgIFZpZGVvU2lua1dhbnRzKGNvbnN0
IFZpZGVvU2lua1dhbnRzJik7CiAgIH5WaWRlb1NpbmtXYW50cygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX3N0
cmVhbV9lbmNvZGVyX29ic2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJfb2JzZXJ2ZXIuaAppbmRl
eCBiOTQwZWZkZjExNTAwMzFmMTA0ZTJhMzk3MWQ4ZTczNDYwZWI1N2QzLi45OGI1Y2ZjYjJjZDMw
ZDlkZmVlMDRiM2ExODM5OTFmOTM2MWE1M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJf
b2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJfb2JzZXJ2ZXIuaApAQCAtMTEsNiArMTEs
NyBAQAogI2lmbmRlZiBBUElfVklERU9fVklERU9fU1RSRUFNX0VOQ09ERVJfT0JTRVJWRVJfSF8K
ICNkZWZpbmUgQVBJX1ZJREVPX1ZJREVPX1NUUkVBTV9FTkNPREVSX09CU0VSVkVSX0hfCiAKKyNp
bmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBl
cy9vcHRpb25hbC5oIgpAQCAtNjgsNiArNjksOSBAQCBjbGFzcyBWaWRlb1N0cmVhbUVuY29kZXJP
YnNlcnZlciA6IHB1YmxpYyBDcHVPdmVydXNlTWV0cmljc09ic2VydmVyIHsKICAgdmlydHVhbCB2
b2lkIE9uU2VuZEVuY29kZWRJbWFnZShjb25zdCBFbmNvZGVkSW1hZ2UmIGVuY29kZWRfaW1hZ2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0lu
Zm8qIGNvZGVjX2luZm8pID0gMDsKIAorICB2aXJ0dWFsIHZvaWQgT25FbmNvZGVySW1wbGVtZW50
YXRpb25DaGFuZ2VkKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGltcGxlbWVudGF0aW9uX25h
bWUpID0gMDsKKwogICB2aXJ0dWFsIHZvaWQgT25GcmFtZURyb3BwZWQoRHJvcFJlYXNvbiByZWFz
b24pID0gMDsKIAogICAvLyBVc2VkIHRvIGluZGljYXRlIGNoYW5nZSBpbiBjb250ZW50IHR5cGUs
IHdoaWNoIG1heSByZXF1aXJlIGEgY2hhbmdlIGluCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29k
ZXJfc2V0dGluZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlcl9zZXR0aW5ncy5oCmluZGV4IGI2N2YzM2M5
ODJkYmJlY2MwOGIxODc3NGI1NDhiZjBkODlmYzU4MzEuLjM3YzFkZTcwMTVmMjFiM2E4NWQ2OWJm
MjBiMDMzMGNiYWNjZmQ5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlcl9zZXR0aW5ncy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
by92aWRlb19zdHJlYW1fZW5jb2Rlcl9zZXR0aW5ncy5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZu
ZGVmIEFQSV9WSURFT19WSURFT19TVFJFQU1fRU5DT0RFUl9TRVRUSU5HU19IXwogI2RlZmluZSBB
UElfVklERU9fVklERU9fU1RSRUFNX0VOQ09ERVJfU0VUVElOR1NfSF8KIAorI2luY2x1ZGUgImFw
aS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBp
L3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CkBAIC0yNCw2ICsyNSw5IEBAIHN0cnVjdCBWaWRlb1N0cmVhbUVuY29kZXJTZXR0aW5ncyB7
CiAKICAgLy8gT3duZXJzaGlwIHN0YXlzIHdpdGggV2VicnRjVmlkZW9FbmdpbmUgKGRlbGVnYXRl
ZCBmcm9tIFBlZXJDb25uZWN0aW9uKS4KICAgVmlkZW9FbmNvZGVyRmFjdG9yeSogZW5jb2Rlcl9m
YWN0b3J5ID0gbnVsbHB0cjsKKworICAvLyBPd25lcnNoaXAgc3RheXMgd2l0aCBXZWJydGNWaWRl
b0VuZ2luZSAoZGVsZWdhdGVkIGZyb20gUGVlckNvbm5lY3Rpb24pLgorICBWaWRlb0JpdHJhdGVB
bGxvY2F0b3JGYWN0b3J5KiBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0gbnVsbHB0cjsKIH07
CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvQlVJTEQuZ24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL0JV
SUxELmduCmluZGV4IDU1Njc0ZDA5MDEwYTk4ZWRhOWEyMzZiNjZiOGM0MmVlNGRjZjJkYjYuLmQw
YjFiOWJhOGVhNDhiMzJmYzBkMWQ0MTA3ODcwMTM3NDA4OWQ5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvQlVJ
TEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvX2NvZGVjcy9CVUlMRC5nbgpAQCAtMjgsMTUgKzI4LDE4IEBAIHJ0Y19zb3VyY2Vfc2V0
KCJ2aWRlb19jb2RlY3NfYXBpIikgewogICAgICJ2aWRlb19lbmNvZGVyX2NvbmZpZy5jYyIsCiAg
ICAgInZpZGVvX2VuY29kZXJfY29uZmlnLmgiLAogICAgICJ2aWRlb19lbmNvZGVyX2ZhY3Rvcnku
aCIsCisgICAgInZwOF90ZW1wb3JhbF9sYXllcnMuaCIsCiAgIF0KIAogICBkZXBzID0gWwogICAg
ICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKLSAgICAiLi4vLi4vY29tbW9uX3ZpZGVvIiwKICAgICAi
Li4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBw
cm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCisgICAgIi4u
L3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICIuLi92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9j
YXRpb24iLAogICAgICIuLi92aWRlbzp2aWRlb19mcmFtZSIsCisgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTU2LDYgKzU5LDcgQEAgcnRjX3N0YXRp
Y19saWJyYXJ5KCJidWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeSIpIHsKICAgICAiOnZpZGVv
X2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9tZWRpYTpydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNz
IiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cHRyX3V0aWwiLAorICAgICIuLi8uLi9ydGNfYmFzZS9z
eXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21l
bW9yeSIsCiAgIF0KIH0KQEAgLTc1LDggKzc5LDI5IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYnVp
bHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkiKSB7CiAgICAgIjp2aWRlb19jb2RlY3NfYXBpIiwK
ICAgICAiLi4vLi4vbWVkaWE6cnRjX2ludGVybmFsX3ZpZGVvX2NvZGVjcyIsCiAgICAgIi4uLy4u
L21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKKyAgICAiLi4vLi4vbWVkaWE6cnRjX3ZwOF9lbmNvZGVy
X3NpbXVsY2FzdF9wcm94eSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnB0cl91dGlsIiwKKyAgICAi
Li4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzIiwKKyAgXQorfQorCitydGNfc3RhdGljX2xpYnJhcnkoImNyZWF0ZV92cDhfdGVt
cG9yYWxfbGF5ZXJzIikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICBhbGxvd19wb2lzb24g
PSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0KKyAgc291cmNlcyA9IFsKKyAgICAiY3JlYXRl
X3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MiLAorICAgICJjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVy
cy5oIiwKKyAgXQorCisgIGRlcHMgPSBbCisgICAgIjp2aWRlb19jb2RlY3NfYXBpIiwKKyAgICAi
Li4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZp
ZGVvX2NvZGVjX2ludGVyZmFjZSIsCisgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOndl
YnJ0Y192cDhfdGVtcG9yYWxfbGF5ZXJzIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOnN5
c3RlbV93cmFwcGVycyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9y
eTptZW1vcnkiLAogICBdCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvT1dORVJTIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9PV05FUlMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGE3MGJkZGQzNGQzYjgzNzVmYTExYjRiMzYwNDNmNTE4OWFiNzVhMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS92aWRlb19jb2RlY3MvT1dORVJTCkBAIC0wLDAgKzEsNCBAQAorbWFnamVkQHdlYnJ0Yy5vcmcK
K25pc3NlQHdlYnJ0Yy5vcmcKK3NwcmFuZ0B3ZWJydGMub3JnCiticmFuZHRyQHdlYnJ0Yy5vcmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVpbHRp
bl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaAppbmRleCAxZjhlNzVjOWFlN2Q1MmFkYTk1ZjMzYmEw
ZWM1NzI2MTJkMWI2NThiLi5kNTE2MDc3ZDk5OTFiYjE4YWY4YjAyY2Q3ZTZmZWU5ZTJkNzAwOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9i
dWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oCkBAIC0xNCwxMSArMTQsMTMgQEAKICNpbmNs
dWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJf
ZmFjdG9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCiAvLyBDcmVhdGVzIGEgbmV3IGZhY3RvcnkgdGhhdCBjYW4gY3Jl
YXRlIHRoZSBidWlsdC1pbiB0eXBlcyBvZiB2aWRlbyBkZWNvZGVycy4KLXN0ZDo6dW5pcXVlX3B0
cjxWaWRlb0RlY29kZXJGYWN0b3J5PiBDcmVhdGVCdWlsdGluVmlkZW9EZWNvZGVyRmFjdG9yeSgp
OworUlRDX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9yeT4KK0NyZWF0
ZUJ1aWx0aW5WaWRlb0RlY29kZXJGYWN0b3J5KCk7CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVp
bHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuY2MKaW5kZXggY2EzODliOTllM2I1NjEyZDkxY2M3
YTg1MjA2MGRjODZmZTFkY2I0Yy4uMWQwODI3Y2JjMGM0ZDk5NmY3MTQ5OTE0OTA4MGJhZTUzYTRk
YzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29k
ZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmNjCkBAIC0xMyw2ICsxMyw3IEBACiAj
aW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5j
bHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9z
ZHBfdmlkZW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5oIgogI2luY2x1
ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKQEAgLTU5LDcgKzYwLDcgQEAgY2xhc3Mg
QnVpbHRpblZpZGVvRW5jb2RlckZhY3RvcnkgOiBwdWJsaWMgVmlkZW9FbmNvZGVyRmFjdG9yeSB7
CiAgICAgaWYgKElzRm9ybWF0U3VwcG9ydGVkKGludGVybmFsX2VuY29kZXJfZmFjdG9yeV8tPkdl
dFN1cHBvcnRlZEZvcm1hdHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KSkg
ewogICAgICAgaW50ZXJuYWxfZW5jb2RlciA9Ci0gICAgICAgICAgY3JpY2tldDo6Q29kZWNOYW1l
c0VxKGZvcm1hdC5uYW1lLmNfc3RyKCksIGNyaWNrZXQ6OmtWcDhDb2RlY05hbWUpCisgICAgICAg
ICAgYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgY3JpY2tldDo6a1ZwOENvZGVj
TmFtZSkKICAgICAgICAgICAgICAgPyBhYnNsOjptYWtlX3VuaXF1ZTxWUDhFbmNvZGVyU2ltdWxj
YXN0UHJveHk+KAogICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbF9lbmNvZGVyX2ZhY3Rvcnlf
LmdldCgpLCBmb3JtYXQpCiAgICAgICAgICAgICAgIDogaW50ZXJuYWxfZW5jb2Rlcl9mYWN0b3J5
Xy0+Q3JlYXRlVmlkZW9FbmNvZGVyKGZvcm1hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgK
aW5kZXggNmE2NjE4ZmIzMjcyNGU0YTEzOGJkYTUxZDUxYmY5OWNmNDFjOWU2ZC4uMmM0NTM3MjA1
YzU5NDE4ZjUyYzEwMGYzMDViYWQ0MzY4YzQ2NDJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3Rv
cnkuaApAQCAtMTQsMTIgKzE0LDE0IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAi
YXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gQ3Jl
YXRlcyBhIG5ldyBmYWN0b3J5IHRoYXQgY2FuIGNyZWF0ZSB0aGUgYnVpbHQtaW4gdHlwZXMgb2Yg
dmlkZW8gZW5jb2RlcnMuCiAvLyBUaGUgZmFjdG9yeSBoYXMgc2ltdWxjYXN0IHN1cHBvcnQgZm9y
IFZQOC4KLXN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXJGYWN0b3J5PiBDcmVhdGVCdWlsdGlu
VmlkZW9FbmNvZGVyRmFjdG9yeSgpOworUlRDX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9F
bmNvZGVyRmFjdG9yeT4KK0NyZWF0ZUJ1aWx0aW5WaWRlb0VuY29kZXJGYWN0b3J5KCk7CiAKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFs
X2xheWVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS92aWRlb19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGQyOTBmMzlmZGQ0NzdlYmEwNWQ0NDk4YTA1YWVmOGNjMDQ1ODI1ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19j
b2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MKQEAgLTAsMCArMSwzMyBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2NyZWF0ZV92
cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisj
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCisjaW5jbHVk
ZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVy
cy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hh
cmVfbGF5ZXJzLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIK
KworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK3N0ZDo6dW5pcXVlX3B0cjxWcDhUZW1wb3JhbExheWVy
cz4gQ3JlYXRlVnA4VGVtcG9yYWxMYXllcnMoCisgICAgVnA4VGVtcG9yYWxMYXllcnNUeXBlIHR5
cGUsCisgICAgaW50IG51bV90ZW1wb3JhbF9sYXllcnMpIHsKKyAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgY2FzZSBWcDhUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBhdHRlcm46CisgICAgICByZXR1
cm4gYWJzbDo6bWFrZV91bmlxdWU8RGVmYXVsdFRlbXBvcmFsTGF5ZXJzPihudW1fdGVtcG9yYWxf
bGF5ZXJzKTsKKyAgICBjYXNlIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0JpdHJhdGVEeW5hbWlj
OgorICAgICAgLy8gQ29uZmVyZW5jZSBtb2RlIHRlbXBvcmFsIGxheWVyaW5nIGZvciBzY3JlZW4g
Y29udGVudCBpbiBiYXNlIHN0cmVhbS4KKyAgICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxT
Y3JlZW5zaGFyZUxheWVycz4obnVtX3RlbXBvcmFsX2xheWVycywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2so
KSk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9jcmVh
dGVfdnA4X3RlbXBvcmFsX2xheWVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjUyZjE0YzhlZGEzOWYzNGNlYTVjY2QzZjJkZGZlYTkzYTlkZGViMzUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdmlkZW9fY29kZWNzL2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmgKQEAgLTAsMCAr
MSwyNiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX1ZJREVPX0NPREVD
U19DUkVBVEVfVlA4X1RFTVBPUkFMX0xBWUVSU19IXworI2RlZmluZSBBUElfVklERU9fQ09ERUNT
X0NSRUFURV9WUDhfVEVNUE9SQUxfTEFZRVJTX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNp
bmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKKworbmFtZXNw
YWNlIHdlYnJ0YyB7CisKK3N0ZDo6dW5pcXVlX3B0cjxWcDhUZW1wb3JhbExheWVycz4gQ3JlYXRl
VnA4VGVtcG9yYWxMYXllcnMoCisgICAgVnA4VGVtcG9yYWxMYXllcnNUeXBlIHR5cGUsCisgICAg
aW50IG51bV90ZW1wb3JhbF9sYXllcnMpOworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNl
bmRpZiAgLy8gQVBJX1ZJREVPX0NPREVDU19DUkVBVEVfVlA4X1RFTVBPUkFMX0xBWUVSU19IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaApp
bmRleCBjMjViODU3ZmRlN2Y3MDVjMjc0MTQzNWNmMzcwZGQ5OWMzZWUxN2M4Li5lZGI3ODE5MWM3
NTMxOGZlYzVlYzNiNmMwZTYxYmNjYTZhNDViYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19m
b3JtYXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaApAQCAtMTQsMTEgKzE0LDEzIEBACiAj
aW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL3N5
c3RlbS9ydGNfZXhwb3J0LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBTRFAgc3BlY2lm
aWNhdGlvbiBmb3IgYSBzaW5nbGUgdmlkZW8gY29kZWMuCiAvLyBOT1RFOiBUaGlzIGNsYXNzIGlz
IHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgot
c3RydWN0IFNkcFZpZGVvRm9ybWF0IHsKK3N0cnVjdCBSVENfRVhQT1JUIFNkcFZpZGVvRm9ybWF0
IHsKICAgdXNpbmcgUGFyYW1ldGVycyA9IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmlu
Zz47CiAKICAgZXhwbGljaXQgU2RwVmlkZW9Gb3JtYXQoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvX2NvZGVjcy90ZXN0L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0L0JVSUxELmduCmluZGV4IGZh
MTkxNjI1YTFhNGMwMjFhNTQ0MmZmOTI0ZmY1ZThlYWQwMzE4MzYuLjZmOWRjYWEyZDhhMWRlZTFh
NWI3YjU4MjAyZTUxZjdjNTU3MDlkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdGVzdC9CVUlMRC5nbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29k
ZWNzL3Rlc3QvQlVJTEQuZ24KQEAgLTIxLDYgKzIxLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3Rz
KSB7CiAgICAgICAiLi46YnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkiLAogICAgICAgIi4u
OnJ0Y19zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVycyIsCiAgICAgICAiLi46dmlkZW9fY29kZWNz
X2FwaSIsCisgICAgICAiLi4vLi46bW9ja192aWRlb19lbmNvZGVyIiwKICAgICAgICIuLi8uLi8u
Li9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAogICAgICAgIi4u
Ly4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKICAgICAg
ICIuLi8uLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp3ZWJydGNfdnA4IiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2Rl
Y3MvdGVzdC9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeV91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdGVz
dC9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeV91bml0dGVzdC5jYwppbmRleCA3Mzk1N2M5
OTlmMDRkMzViNjEwMmUwMDdkZTAzMTQxM2E5NjE5Nzg3Li4zMDc1NGQ5YmRiZDFhMThiOThlM2Fl
MTlmN2Q2YmJjOGJkMzM5YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rlc3QvYnVpbHRpbl92aWRlb19lbmNv
ZGVyX2ZhY3RvcnlfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0L2J1aWx0aW5fdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5X3VuaXR0ZXN0LmNjCkBAIC0yNywxMSArMjcsMTEgQEAgVEVTVChCdWlsdGluVmlk
ZW9FbmNvZGVyRmFjdG9yeVRlc3QsIEFubm91bmNlc1ZwOUFjY29yZGluZ1RvQnVpbGRGbGFncykg
ewogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0jaWYgZGVmaW5lZChSVENfRElTQUJMRV9WUDkp
Ci0gIEVYUEVDVF9GQUxTRShjbGFpbXNfdnA5X3N1cHBvcnQpOwotI2Vsc2UKKyNpZiBkZWZpbmVk
KFJUQ19FTkFCTEVfVlA5KQogICBFWFBFQ1RfVFJVRShjbGFpbXNfdnA5X3N1cHBvcnQpOwotI2Vu
ZGlmICAvLyBkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyNlbHNlCisgIEVYUEVDVF9GQUxTRShj
bGFpbXNfdnA5X3N1cHBvcnQpOworI2VuZGlmICAvLyBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQog
fQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rlc3QvdmlkZW9fZW5j
b2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0L3ZpZGVv
X2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlcl91bml0dGVzdC5jYwppbmRleCA5OGVi
ZWQyMzA1MTFkODA3NWVlMjU2YmE4MGVkOTdmNWQxZDAyZDViLi5iMzc0ZjNkMWUxNjM4ZGE3ZjI0
OTA2ZjA2ZmE5NDI1MGY5ZGVmOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rlc3QvdmlkZW9fZW5jb2Rlcl9z
b2Z0d2FyZV9mYWxsYmFja193cmFwcGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdGVzdC92aWRlb19l
bmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXJfdW5pdHRlc3QuY2MKQEAgLTgsMjMgKzgs
MjYgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KICAqLwogCi0jaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19l
bmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuaCIKLQogI2luY2x1ZGUgPHV0aWxpdHk+
CiAKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIuaCIKICNpbmNsdWRlICJh
cGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0
ZV9hbGxvY2F0aW9uLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVy
X3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNz
L3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdnA4L2luY2x1ZGUvdnA4LmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fZXJyb3JfY29kZXMuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9j
YXRvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2Zha2VjbG9jay5oIgogI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKKyNpbmNsdWRlICJ0
ZXN0L2dtb2NrLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuOworCiBuYW1lc3BhY2UgewogY29uc3QgaW50IGtX
aWR0aCA9IDMyMDsKIGNvbnN0IGludCBrSGVpZ2h0ID0gMjQwOwpAQCAtMzQsNiArMzcsMTIgQEAg
Y29uc3Qgc2l6ZV90IGtNYXhQYXlsb2FkU2l6ZSA9IDgwMDsKIGNvbnN0IGludCBrRGVmYXVsdE1p
blBpeGVsc1BlckZyYW1lID0gMzIwICogMTgwOwogY29uc3QgaW50IGtMb3dUaHJlc2hvbGQgPSAx
MDsKIGNvbnN0IGludCBrSGlnaFRocmVzaG9sZCA9IDIwOworCitWaWRlb0VuY29kZXI6OkVuY29k
ZXJJbmZvIEdldEVuY29kZXJJbmZvKGJvb2wgdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIpIHsKKyAg
VmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBpbmZvOworICBpbmZvLmhhc190cnVzdGVkX3JhdGVf
Y29udHJvbGxlciA9IHRydXN0ZWRfcmF0ZV9jb250cm9sbGVyOworICByZXR1cm4gaW5mbzsKK30K
IH0gIC8vIG5hbWVzcGFjZQogCiBjbGFzcyBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3Jh
cHBlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKQEAgLTYyLDkgKzcxLDcgQEAgY2xh
c3MgVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiAgICAgICArK2VuY29kZV9jb3VudF87CiAgICAgICBpZiAoZW5jb2RlX2Nv
bXBsZXRlX2NhbGxiYWNrXyAmJgogICAgICAgICAgIGVuY29kZV9yZXR1cm5fY29kZV8gPT0gV0VC
UlRDX1ZJREVPX0NPREVDX09LKSB7Ci0gICAgICAgIENvZGVjU3BlY2lmaWNJbmZvIGluZm87Ci0g
ICAgICAgIGluZm8uY29kZWNfbmFtZSA9IEltcGxlbWVudGF0aW9uTmFtZSgpOwotICAgICAgICBl
bmNvZGVfY29tcGxldGVfY2FsbGJhY2tfLT5PbkVuY29kZWRJbWFnZShFbmNvZGVkSW1hZ2UoKSwg
JmluZm8sCisgICAgICAgIGVuY29kZV9jb21wbGV0ZV9jYWxsYmFja18tPk9uRW5jb2RlZEltYWdl
KEVuY29kZWRJbWFnZSgpLCBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgIH0KICAgICAgIHJldHVybiBlbmNv
ZGVfcmV0dXJuX2NvZGVfOwpAQCAtODEsMjYgKzg4LDE5IEBAIGNsYXNzIFZpZGVvRW5jb2RlclNv
ZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAg
ICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKICAgICB9CiAKLSAgICBpbnQzMl90IFNl
dENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3Zl
cnJpZGUgewotICAgICAgKytzZXRfY2hhbm5lbF9wYXJhbWV0ZXJzX2NvdW50XzsKLSAgICAgIHJl
dHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Ci0gICAgfQotCiAgICAgaW50MzJfdCBTZXRSYXRl
QWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlX2FsbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIG92
ZXJyaWRlIHsKICAgICAgICsrc2V0X3JhdGVzX2NvdW50XzsKICAgICAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfT0s7CiAgICAgfQogCi0gICAgYm9vbCBTdXBwb3J0c05hdGl2ZUhhbmRsZSgp
IGNvbnN0IG92ZXJyaWRlIHsKKyAgICBFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0
IG92ZXJyaWRlIHsKICAgICAgICsrc3VwcG9ydHNfbmF0aXZlX2hhbmRsZV9jb3VudF87Ci0gICAg
ICByZXR1cm4gc3VwcG9ydHNfbmF0aXZlX2hhbmRsZV87Ci0gICAgfQotCi0gICAgY29uc3QgY2hh
ciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gImZha2UtZW5j
b2RlciI7IH0KLQotICAgIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdT
ZXR0aW5ncygpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICAgIHJldHVybiBWaWRlb0VuY29kZXI6OlNj
YWxpbmdTZXR0aW5ncyhrTG93VGhyZXNob2xkLCBrSGlnaFRocmVzaG9sZCk7CisgICAgICBFbmNv
ZGVySW5mbyBpbmZvOworICAgICAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0gU2NhbGluZ1NldHRp
bmdzKGtMb3dUaHJlc2hvbGQsIGtIaWdoVGhyZXNob2xkKTsKKyAgICAgIGluZm8uc3VwcG9ydHNf
bmF0aXZlX2hhbmRsZSA9IHN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfOworICAgICAgaW5mby5pbXBs
ZW1lbnRhdGlvbl9uYW1lID0gImZha2UtZW5jb2RlciI7CisgICAgICByZXR1cm4gaW5mbzsKICAg
ICB9CiAKICAgICBpbnQgaW5pdF9lbmNvZGVfY291bnRfID0gMDsKQEAgLTEwOSw3ICsxMDksNiBA
QCBjbGFzcyBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlclRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKICAgICBpbnQgZW5jb2RlX2NvdW50XyA9IDA7CiAgICAgRW5jb2Rl
ZEltYWdlQ2FsbGJhY2sqIGVuY29kZV9jb21wbGV0ZV9jYWxsYmFja18gPSBudWxscHRyOwogICAg
IGludCByZWxlYXNlX2NvdW50XyA9IDA7Ci0gICAgaW50IHNldF9jaGFubmVsX3BhcmFtZXRlcnNf
Y291bnRfID0gMDsKICAgICBpbnQgc2V0X3JhdGVzX2NvdW50XyA9IDA7CiAgICAgbXV0YWJsZSBp
bnQgc3VwcG9ydHNfbmF0aXZlX2hhbmRsZV9jb3VudF8gPSAwOwogICAgIGJvb2wgc3VwcG9ydHNf
bmF0aXZlX2hhbmRsZV8gPSBmYWxzZTsKQEAgLTEyMiwxMSArMTIxLDkgQEAgY2xhc3MgVmlkZW9F
bmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7CiAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZv
LAogICAgICAgICBjb25zdCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKSBv
dmVycmlkZSB7CiAgICAgICArK2NhbGxiYWNrX2NvdW50XzsKLSAgICAgIGxhc3RfY29kZWNfbmFt
ZV8gPSBjb2RlY19zcGVjaWZpY19pbmZvLT5jb2RlY19uYW1lOwogICAgICAgcmV0dXJuIFJlc3Vs
dChSZXN1bHQ6Ok9LLCBjYWxsYmFja19jb3VudF8pOwogICAgIH0KICAgICBpbnQgY2FsbGJhY2tf
Y291bnRfID0gMDsKLSAgICBzdGQ6OnN0cmluZyBsYXN0X2NvZGVjX25hbWVfOwogICB9OwogCiAg
IHZvaWQgVXRpbGl6ZUZhbGxiYWNrRW5jb2RlcigpOwpAQCAtMTM0LDcgKzEzMSw4IEBAIGNsYXNz
IFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewogICB2b2lkIEVuY29kZUZyYW1lKCk7CiAgIHZvaWQgRW5jb2RlRnJhbWUoaW50
IGV4cGVjdGVkX3JldCk7CiAgIHZvaWQgQ2hlY2tMYXN0RW5jb2Rlck5hbWUoY29uc3QgY2hhciog
ZXhwZWN0ZWRfbmFtZSkgewotICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZF9uYW1lLCBjYWxsYmFj
a18ubGFzdF9jb2RlY19uYW1lXy5jX3N0cigpKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfbmFt
ZSwKKyAgICAgICAgICAgICAgZmFsbGJhY2tfd3JhcHBlcl8tPkdldEVuY29kZXJJbmZvKCkuaW1w
bGVtZW50YXRpb25fbmFtZSk7CiAgIH0KIAogICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVy
cmlkZV9maWVsZF90cmlhbHNfOwpAQCAtMjcxLDE1ICsyNjksNiBAQCBURVNUX0YoVmlkZW9FbmNv
ZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0LAogICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVP
X0NPREVDX09LLCBmYWxsYmFja193cmFwcGVyXy0+UmVsZWFzZSgpKTsKIH0KIAotVEVTVF9GKFZp
ZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCwKLSAgICAgICBTZXRDaGFubmVs
UGFyYW1ldGVyc0ZvcndhcmRlZER1cmluZ0ZhbGxiYWNrKSB7Ci0gIFV0aWxpemVGYWxsYmFja0Vu
Y29kZXIoKTsKLSAgRVhQRUNUX0VRKDAsIGZha2VfZW5jb2Rlcl8tPnNldF9jaGFubmVsX3BhcmFt
ZXRlcnNfY291bnRfKTsKLSAgZmFsbGJhY2tfd3JhcHBlcl8tPlNldENoYW5uZWxQYXJhbWV0ZXJz
KDEsIDEpOwotICBFWFBFQ1RfRVEoMSwgZmFrZV9lbmNvZGVyXy0+c2V0X2NoYW5uZWxfcGFyYW1l
dGVyc19jb3VudF8pOwotICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLCBmYWxsYmFj
a193cmFwcGVyXy0+UmVsZWFzZSgpKTsKLX0KLQogVEVTVF9GKFZpZGVvRW5jb2RlclNvZnR3YXJl
RmFsbGJhY2tXcmFwcGVyVGVzdCwKICAgICAgICBTZXRSYXRlc0ZvcndhcmRlZER1cmluZ0ZhbGxi
YWNrKSB7CiAgIFV0aWxpemVGYWxsYmFja0VuY29kZXIoKTsKQEAgLTI5MSwxNSArMjgwLDE5IEBA
IFRFU1RfRihWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlclRlc3QsCiAKIFRFU1Rf
RihWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlclRlc3QsCiAgICAgICAgU3VwcG9y
dHNOYXRpdmVIYW5kbGVGb3J3YXJkZWRXaXRob3V0RmFsbGJhY2spIHsKLSAgZmFsbGJhY2tfd3Jh
cHBlcl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCk7CisgIGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRF
bmNvZGVySW5mbygpOwogICBFWFBFQ1RfRVEoMSwgZmFrZV9lbmNvZGVyXy0+c3VwcG9ydHNfbmF0
aXZlX2hhbmRsZV9jb3VudF8pOwogfQogCiBURVNUX0YoVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxs
YmFja1dyYXBwZXJUZXN0LAogICAgICAgIFN1cHBvcnRzTmF0aXZlSGFuZGxlTm90Rm9yd2FyZGVk
RHVyaW5nRmFsbGJhY2spIHsKKyAgLy8gRmFrZSBlbmNvZGVyIHNpZ25hbHMgc3VwcG9ydCBmb3Ig
bmF0aXZlIGhhbmRsZSwgZGVmYXVsdCAobGlidnB4KSBkb2VzIG5vdC4KKyAgZmFrZV9lbmNvZGVy
Xy0+c3VwcG9ydHNfbmF0aXZlX2hhbmRsZV8gPSB0cnVlOworICBFWFBFQ1RfVFJVRShmYWxsYmFj
a193cmFwcGVyXy0+R2V0RW5jb2RlckluZm8oKS5zdXBwb3J0c19uYXRpdmVfaGFuZGxlKTsKICAg
VXRpbGl6ZUZhbGxiYWNrRW5jb2RlcigpOwotICBmYWxsYmFja193cmFwcGVyXy0+U3VwcG9ydHNO
YXRpdmVIYW5kbGUoKTsKLSAgRVhQRUNUX0VRKDAsIGZha2VfZW5jb2Rlcl8tPnN1cHBvcnRzX25h
dGl2ZV9oYW5kbGVfY291bnRfKTsKKyAgRVhQRUNUX0ZBTFNFKGZhbGxiYWNrX3dyYXBwZXJfLT5H
ZXRFbmNvZGVySW5mbygpLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUpOworICAvLyBCb3RoIHRpbWVz
LCBib3RoIGVuY29kZXJzIGFyZSBxdWVyaWVkLgorICBFWFBFQ1RfRVEoMiwgZmFrZV9lbmNvZGVy
Xy0+c3VwcG9ydHNfbmF0aXZlX2hhbmRsZV9jb3VudF8pOwogICBFWFBFQ1RfRVEoV0VCUlRDX1ZJ
REVPX0NPREVDX09LLCBmYWxsYmFja193cmFwcGVyXy0+UmVsZWFzZSgpKTsKIH0KIApAQCAtNDg5
LDcgKzQ4Miw3IEBAIFRFU1RfRihGb3JjZWRGYWxsYmFja1Rlc3REaXNhYmxlZCwgR2V0U2NhbGVT
ZXR0aW5ncykgewogICBFbmNvZGVGcmFtZUFuZFZlcmlmeUxhc3ROYW1lKCJmYWtlLWVuY29kZXIi
KTsKIAogICAvLyBEZWZhdWx0IG1pbiBwaXhlbHMgcGVyIGZyYW1lIHNob3VsZCBiZSB1c2VkLgot
ICBjb25zdCBhdXRvIHNldHRpbmdzID0gZmFsbGJhY2tfd3JhcHBlcl8tPkdldFNjYWxpbmdTZXR0
aW5ncygpOworICBjb25zdCBhdXRvIHNldHRpbmdzID0gZmFsbGJhY2tfd3JhcHBlcl8tPkdldEVu
Y29kZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5nczsKICAgRVhQRUNUX1RSVUUoc2V0dGluZ3MudGhy
ZXNob2xkcy5oYXNfdmFsdWUoKSk7CiAgIEVYUEVDVF9FUShrRGVmYXVsdE1pblBpeGVsc1BlckZy
YW1lLCBzZXR0aW5ncy5taW5fcGl4ZWxzX3Blcl9mcmFtZSk7CiB9CkBAIC01MDAsNyArNDkzLDcg
QEAgVEVTVF9GKEZvcmNlZEZhbGxiYWNrVGVzdEVuYWJsZWQsIEdldFNjYWxlU2V0dGluZ3NXaXRo
Tm9GYWxsYmFjaykgewogICBFbmNvZGVGcmFtZUFuZFZlcmlmeUxhc3ROYW1lKCJmYWtlLWVuY29k
ZXIiKTsKIAogICAvLyBDb25maWd1cmVkIG1pbiBwaXhlbHMgcGVyIGZyYW1lIHNob3VsZCBiZSB1
c2VkLgotICBjb25zdCBhdXRvIHNldHRpbmdzID0gZmFsbGJhY2tfd3JhcHBlcl8tPkdldFNjYWxp
bmdTZXR0aW5ncygpOworICBjb25zdCBhdXRvIHNldHRpbmdzID0gZmFsbGJhY2tfd3JhcHBlcl8t
PkdldEVuY29kZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5nczsKICAgRVhQRUNUX0VRKGtNaW5QaXhl
bHNQZXJGcmFtZSwgc2V0dGluZ3MubWluX3BpeGVsc19wZXJfZnJhbWUpOwogICBBU1NFUlRfVFJV
RShzZXR0aW5ncy50aHJlc2hvbGRzKTsKICAgRVhQRUNUX0VRKGtMb3dUaHJlc2hvbGQsIHNldHRp
bmdzLnRocmVzaG9sZHMtPmxvdyk7CkBAIC01MTMsNyArNTA2LDcgQEAgVEVTVF9GKEZvcmNlZEZh
bGxiYWNrVGVzdEVuYWJsZWQsIEdldFNjYWxlU2V0dGluZ3NXaXRoRmFsbGJhY2spIHsKICAgRW5j
b2RlRnJhbWVBbmRWZXJpZnlMYXN0TmFtZSgibGlidnB4Iik7CiAKICAgLy8gQ29uZmlndXJlZCBt
aW4gcGl4ZWxzIHBlciBmcmFtZSBzaG91bGQgYmUgdXNlZC4KLSAgY29uc3QgYXV0byBzZXR0aW5n
cyA9IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKKyAgY29uc3QgYXV0
byBzZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRFbmNvZGVySW5mbygpLnNjYWxpbmdf
c2V0dGluZ3M7CiAgIEVYUEVDVF9UUlVFKHNldHRpbmdzLnRocmVzaG9sZHMuaGFzX3ZhbHVlKCkp
OwogICBFWFBFQ1RfRVEoa01pblBpeGVsc1BlckZyYW1lLCBzZXR0aW5ncy5taW5fcGl4ZWxzX3Bl
cl9mcmFtZSk7CiB9CkBAIC01MjUsOCArNTE4LDc3IEBAIFRFU1RfRihGb3JjZWRGYWxsYmFja1Rl
c3RFbmFibGVkLCBTY2FsaW5nRGlzYWJsZWRJZlJlc2l6ZU9mZikgewogICBFbmNvZGVGcmFtZUFu
ZFZlcmlmeUxhc3ROYW1lKCJsaWJ2cHgiKTsKIAogICAvLyBTaG91bGQgYmUgZGlzYWJsZWQgZm9y
IGF1dG9tYXRpYyByZXNpemUgb2ZmLgotICBjb25zdCBhdXRvIHNldHRpbmdzID0gZmFsbGJhY2tf
d3JhcHBlcl8tPkdldFNjYWxpbmdTZXR0aW5ncygpOworICBjb25zdCBhdXRvIHNldHRpbmdzID0g
ZmFsbGJhY2tfd3JhcHBlcl8tPkdldEVuY29kZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5nczsKICAg
RVhQRUNUX0ZBTFNFKHNldHRpbmdzLnRocmVzaG9sZHMuaGFzX3ZhbHVlKCkpOwogfQogCitURVNU
KFNvZnR3YXJlRmFsbGJhY2tFbmNvZGVyVGVzdCwgQm90aFJhdGVDb250cm9sbGVyc05vdFRydXN0
ZWQpIHsKKyAgYXV0byogc3dfZW5jb2RlciA9IG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrVmlk
ZW9FbmNvZGVyPigpOworICBhdXRvKiBod19lbmNvZGVyID0gbmV3IHRlc3Rpbmc6Ok5pY2VNb2Nr
PE1vY2tWaWRlb0VuY29kZXI+KCk7CisKKyAgRVhQRUNUX0NBTEwoKnN3X2VuY29kZXIsIEdldEVu
Y29kZXJJbmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEdldEVuY29kZXJJbmZv
KGZhbHNlKSkpOworICBFWFBFQ1RfQ0FMTCgqaHdfZW5jb2RlciwgR2V0RW5jb2RlckluZm8oKSkK
KyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oR2V0RW5jb2RlckluZm8oZmFsc2UpKSk7CisK
KyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gd3JhcHBlciA9CisgICAgICBDcmVhdGVW
aWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcigKKyAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VmlkZW9FbmNvZGVyPihzd19lbmNvZGVyKSwKKyAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VmlkZW9FbmNvZGVyPihod19lbmNvZGVyKSk7CisgIEVYUEVDVF9GQUxTRSh3cmFwcGVyLT5H
ZXRFbmNvZGVySW5mbygpLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcik7Cit9CisKK1RFU1Qo
U29mdHdhcmVGYWxsYmFja0VuY29kZXJUZXN0LCBTd1JhdGVDb250cm9sbGVyVHJ1c3RlZCkgewor
ICBhdXRvKiBzd19lbmNvZGVyID0gbmV3IHRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tWaWRlb0VuY29k
ZXI+KCk7CisgIGF1dG8qIGh3X2VuY29kZXIgPSBuZXcgdGVzdGluZzo6TmljZU1vY2s8TW9ja1Zp
ZGVvRW5jb2Rlcj4oKTsKKyAgRVhQRUNUX0NBTEwoKnN3X2VuY29kZXIsIEdldEVuY29kZXJJbmZv
KCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEdldEVuY29kZXJJbmZvKHRydWUpKSk7
CisgIEVYUEVDVF9DQUxMKCpod19lbmNvZGVyLCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldp
bGxSZXBlYXRlZGx5KFJldHVybihHZXRFbmNvZGVySW5mbyhmYWxzZSkpKTsKKworICBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiB3cmFwcGVyID0KKyAgICAgIENyZWF0ZVZpZGVvRW5jb2Rl
clNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyKAorICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b0VuY29kZXI+KHN3X2VuY29kZXIpLAorICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Vu
Y29kZXI+KGh3X2VuY29kZXIpKTsKKyAgRVhQRUNUX0ZBTFNFKHdyYXBwZXItPkdldEVuY29kZXJJ
bmZvKCkuaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKTsKK30KKworVEVTVChTb2Z0d2FyZUZh
bGxiYWNrRW5jb2RlclRlc3QsIEh3UmF0ZUNvbnRyb2xsZXJUcnVzdGVkKSB7CisgIGF1dG8qIHN3
X2VuY29kZXIgPSBuZXcgdGVzdGluZzo6TmljZU1vY2s8TW9ja1ZpZGVvRW5jb2Rlcj4oKTsKKyAg
YXV0byogaHdfZW5jb2RlciA9IG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrVmlkZW9FbmNvZGVy
PigpOworICBFWFBFQ1RfQ0FMTCgqc3dfZW5jb2RlciwgR2V0RW5jb2RlckluZm8oKSkKKyAgICAg
IC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oR2V0RW5jb2RlckluZm8oZmFsc2UpKSk7CisgIEVYUEVD
VF9DQUxMKCpod19lbmNvZGVyLCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldpbGxSZXBlYXRl
ZGx5KFJldHVybihHZXRFbmNvZGVySW5mbyh0cnVlKSkpOworCisgIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0VuY29kZXI+IHdyYXBwZXIgPQorICAgICAgQ3JlYXRlVmlkZW9FbmNvZGVyU29mdHdhcmVG
YWxsYmFja1dyYXBwZXIoCisgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4o
c3dfZW5jb2RlciksCisgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4oaHdf
ZW5jb2RlcikpOworICBFWFBFQ1RfVFJVRSh3cmFwcGVyLT5HZXRFbmNvZGVySW5mbygpLmhhc190
cnVzdGVkX3JhdGVfY29udHJvbGxlcik7CisKKyAgLy8gVHJpZ2dlciBmYWxsYmFjayB0byBzb2Z0
d2FyZS4KKyAgRVhQRUNUX0NBTEwoKmh3X2VuY29kZXIsIEVuY29kZSkKKyAgICAgIC5XaWxsT25j
ZShSZXR1cm4oV0VCUlRDX1ZJREVPX0NPREVDX0ZBTExCQUNLX1NPRlRXQVJFKSk7CisgIFZpZGVv
RnJhbWUgZnJhbWUgPSBWaWRlb0ZyYW1lOjpCdWlsZGVyKCkuYnVpbGQoKTsKKyAgd3JhcHBlci0+
RW5jb2RlKGZyYW1lLCBudWxscHRyLCBudWxscHRyKTsKKworICBFWFBFQ1RfRkFMU0Uod3JhcHBl
ci0+R2V0RW5jb2RlckluZm8oKS5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIpOworfQorCitU
RVNUKFNvZnR3YXJlRmFsbGJhY2tFbmNvZGVyVGVzdCwgQm90aFJhdGVDb250cm9sbGVyc1RydXN0
ZWQpIHsKKyAgYXV0byogc3dfZW5jb2RlciA9IG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrVmlk
ZW9FbmNvZGVyPigpOworICBhdXRvKiBod19lbmNvZGVyID0gbmV3IHRlc3Rpbmc6Ok5pY2VNb2Nr
PE1vY2tWaWRlb0VuY29kZXI+KCk7CisgIEVYUEVDVF9DQUxMKCpzd19lbmNvZGVyLCBHZXRFbmNv
ZGVySW5mbygpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihHZXRFbmNvZGVySW5mbyh0
cnVlKSkpOworICBFWFBFQ1RfQ0FMTCgqaHdfZW5jb2RlciwgR2V0RW5jb2RlckluZm8oKSkKKyAg
ICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oR2V0RW5jb2RlckluZm8odHJ1ZSkpKTsKKworICBz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiB3cmFwcGVyID0KKyAgICAgIENyZWF0ZVZpZGVv
RW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyKAorICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb0VuY29kZXI+KHN3X2VuY29kZXIpLAorICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0VuY29kZXI+KGh3X2VuY29kZXIpKTsKKyAgRVhQRUNUX1RSVUUod3JhcHBlci0+R2V0RW5j
b2RlckluZm8oKS5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIpOworfQorCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2NvZGVjLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19jb2Rl
Yy5jYwppbmRleCBkMzY1MzViMzEwMDhkMzZkZWMzNDBjYjU1NTNmNzVkOWY4OTg5ZDJlLi4wODE5
YzgyMmEwNmRlNzk5YzEzZDdhNWQyZDgyMDZmNDcwZWQzNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVv
X2NvZGVjLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS92aWRlb19jb2RlY3MvdmlkZW9fY29kZWMuY2MKQEAgLTExLDEzICsxMSwxMCBAQAogI2lu
Y2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fY29kZWMuaCIKIAogI2luY2x1ZGUgPHN0cmlu
Zy5oPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8
c3RyaW5nPgotI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L21hdGNoLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0
aWxzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMTE4LDEwICsxMTUsNiBAQCBzdGF0aWMg
Y29uc3QgY2hhcioga1BheWxvYWROYW1lSTQyMCA9ICJJNDIwIjsKIHN0YXRpYyBjb25zdCBjaGFy
KiBrUGF5bG9hZE5hbWVHZW5lcmljID0gIkdlbmVyaWMiOwogc3RhdGljIGNvbnN0IGNoYXIqIGtQ
YXlsb2FkTmFtZU11bHRpcGxleCA9ICJNdWx0aXBsZXgiOwogCi1zdGF0aWMgYm9vbCBDb2RlY05h
bWVzRXEoY29uc3QgY2hhciogbmFtZTEsIGNvbnN0IGNoYXIqIG5hbWUyKSB7Ci0gIHJldHVybiBf
c3RyaWNtcChuYW1lMSwgbmFtZTIpID09IDA7Ci19Ci0KIGNvbnN0IGNoYXIqIENvZGVjVHlwZVRv
UGF5bG9hZFN0cmluZyhWaWRlb0NvZGVjVHlwZSB0eXBlKSB7CiAgIHN3aXRjaCAodHlwZSkgewog
ICAgIGNhc2Uga1ZpZGVvQ29kZWNWUDg6CkBAIC0xMzksMTUgKzEzMiwxNSBAQCBjb25zdCBjaGFy
KiBDb2RlY1R5cGVUb1BheWxvYWRTdHJpbmcoVmlkZW9Db2RlY1R5cGUgdHlwZSkgewogfQogCiBW
aWRlb0NvZGVjVHlwZSBQYXlsb2FkU3RyaW5nVG9Db2RlY1R5cGUoY29uc3Qgc3RkOjpzdHJpbmcm
IG5hbWUpIHsKLSAgaWYgKENvZGVjTmFtZXNFcShuYW1lLmNfc3RyKCksIGtQYXlsb2FkTmFtZVZw
OCkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUsIGtQYXlsb2FkTmFtZVZwOCkp
CiAgICAgcmV0dXJuIGtWaWRlb0NvZGVjVlA4OwotICBpZiAoQ29kZWNOYW1lc0VxKG5hbWUuY19z
dHIoKSwga1BheWxvYWROYW1lVnA5KSkKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFt
ZSwga1BheWxvYWROYW1lVnA5KSkKICAgICByZXR1cm4ga1ZpZGVvQ29kZWNWUDk7Ci0gIGlmIChD
b2RlY05hbWVzRXEobmFtZS5jX3N0cigpLCBrUGF5bG9hZE5hbWVIMjY0KSkKKyAgaWYgKGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwga1BheWxvYWROYW1lSDI2NCkpCiAgICAgcmV0dXJuIGtW
aWRlb0NvZGVjSDI2NDsKLSAgaWYgKENvZGVjTmFtZXNFcShuYW1lLmNfc3RyKCksIGtQYXlsb2Fk
TmFtZUk0MjApKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lLCBrUGF5bG9hZE5h
bWVJNDIwKSkKICAgICByZXR1cm4ga1ZpZGVvQ29kZWNJNDIwOwotICBpZiAoQ29kZWNOYW1lc0Vx
KG5hbWUuY19zdHIoKSwga1BheWxvYWROYW1lTXVsdGlwbGV4KSkKKyAgaWYgKGFic2w6OkVxdWFs
c0lnbm9yZUNhc2UobmFtZSwga1BheWxvYWROYW1lTXVsdGlwbGV4KSkKICAgICByZXR1cm4ga1Zp
ZGVvQ29kZWNNdWx0aXBsZXg7CiAgIHJldHVybiBrVmlkZW9Db2RlY0dlbmVyaWM7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlk
ZW9fY29kZWNzL3ZpZGVvX2NvZGVjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2NvZGVjLmgKaW5kZXggNWI0ZWJiMjVj
MDc0NjA0YmJlZWNlODEzYmRkNGY2YjY2MjFjNzY2MC4uOWZiYTYwYzRlODcyNzEwZmNjODU3OWVm
MjQwOTRmZWJkYmI0NzU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19jb2RlYy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3Mvdmlk
ZW9fY29kZWMuaApAQCAtMTEsOSArMTEsMTQgQEAKICNpZm5kZWYgQVBJX1ZJREVPX0NPREVDU19W
SURFT19DT0RFQ19IXwogI2RlZmluZSBBUElfVklERU9fQ09ERUNTX1ZJREVPX0NPREVDX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJp
bmc+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCisj
aW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvZGVjX3R5cGUuaCIKICNpbmNsdWRlICJjb21tb25f
dHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgInJ0Y19iYXNlL3N5
c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC04Niw4ICs5MSw4
IEBAIHN0cnVjdCBWaWRlb0NvZGVjSDI2NCB7CiB9OwogCiAvLyBUcmFuc2xhdGVzIGZyb20gbmFt
ZSBvZiBjb2RlYyB0byBjb2RlYyB0eXBlIGFuZCB2aWNlIHZlcnNhLgotY29uc3QgY2hhciogQ29k
ZWNUeXBlVG9QYXlsb2FkU3RyaW5nKFZpZGVvQ29kZWNUeXBlIHR5cGUpOwotVmlkZW9Db2RlY1R5
cGUgUGF5bG9hZFN0cmluZ1RvQ29kZWNUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKK1JU
Q19FWFBPUlQgY29uc3QgY2hhciogQ29kZWNUeXBlVG9QYXlsb2FkU3RyaW5nKFZpZGVvQ29kZWNU
eXBlIHR5cGUpOworUlRDX0VYUE9SVCBWaWRlb0NvZGVjVHlwZSBQYXlsb2FkU3RyaW5nVG9Db2Rl
Y1R5cGUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwogCiB1bmlvbiBWaWRlb0NvZGVjVW5pb24g
ewogICBWaWRlb0NvZGVjVlA4IFZQODsKQEAgLTk4LDcgKzEwMyw3IEBAIHVuaW9uIFZpZGVvQ29k
ZWNVbmlvbiB7CiBlbnVtIGNsYXNzIFZpZGVvQ29kZWNNb2RlIHsga1JlYWx0aW1lVmlkZW8sIGtT
Y3JlZW5zaGFyaW5nIH07CiAKIC8vIENvbW1vbiB2aWRlbyBjb2RlYyBwcm9wZXJ0aWVzCi1jbGFz
cyBWaWRlb0NvZGVjIHsKK2NsYXNzIFJUQ19FWFBPUlQgVmlkZW9Db2RlYyB7CiAgcHVibGljOgog
ICBWaWRlb0NvZGVjKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRl
b19kZWNvZGVyLmgKaW5kZXggNzk5NWZjY2IwNTYzZGE2ZTEwZTNjZTk2OWE1OWQyZWNlZTY2Nzk5
MS4uMzZjZjgwZmU4NGM3NjNkYjI1ZWYyYWU3Mzk4YjI0MDQyMTYzNDgwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVj
cy92aWRlb19kZWNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyLmgKQEAgLTE1LDkgKzE1LDEw
IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFw
aS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1l
LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19jb2RlYy5oIgotI2luY2x1ZGUg
ImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
c3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTI1LDcgKzI2
LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBzdHJ1Y3QgQ29kZWNTcGVjaWZpY0luZm87CiBjbGFz
cyBWaWRlb0NvZGVjOwogCi1jbGFzcyBEZWNvZGVkSW1hZ2VDYWxsYmFjayB7CitjbGFzcyBSVENf
RVhQT1JUIERlY29kZWRJbWFnZUNhbGxiYWNrIHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgfkRlY29k
ZWRJbWFnZUNhbGxiYWNrKCkge30KIApAQCAtNDcsNyArNDgsNyBAQCBjbGFzcyBEZWNvZGVkSW1h
Z2VDYWxsYmFjayB7CiAgIHZpcnR1YWwgaW50MzJfdCBSZWNlaXZlZERlY29kZWRGcmFtZShjb25z
dCB1aW50NjRfdCBwaWN0dXJlSWQpOwogfTsKIAotY2xhc3MgVmlkZW9EZWNvZGVyIHsKK2NsYXNz
IFJUQ19FWFBPUlQgVmlkZW9EZWNvZGVyIHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgflZpZGVvRGVj
b2RlcigpIHt9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5j
b2Rlci5jYwppbmRleCAwMDg3ODBlMzhjNGMxOWUyMDA3ZGYzNDQ0NDFkMWI3YWI0ZjE1YzY0Li4x
MzU2ODdjOTcwYjdiNmRiODkxYmQyNmY4ODRjMWE5NjgyZWIyNDczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Zp
ZGVvX2VuY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmNjCkBAIC0xMCw2ICsxMCwxMCBA
QAogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCiAKKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIAogLy8gVE9ETyhtZmxvZG1hbik6IEFkZCBkZWZhdWx0IGNvbXBsZXhpdHkg
Zm9yIFZQOSBhbmQgVlA5LgpAQCAtNzksNiArODMsMTQgQEAgVmlkZW9FbmNvZGVyOjpTY2FsaW5n
U2V0dGluZ3M6On5TY2FsaW5nU2V0dGluZ3MoKSB7fQogY29uc3RleHByIFZpZGVvRW5jb2Rlcjo6
U2NhbGluZ1NldHRpbmdzOjpLT2ZmCiAgICAgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6
OmtPZmY7CiAKK1ZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm86OkVuY29kZXJJbmZvKCkKKyAgICA6
IHNjYWxpbmdfc2V0dGluZ3MoVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtPZmYpLAor
ICAgICAgc3VwcG9ydHNfbmF0aXZlX2hhbmRsZShmYWxzZSksCisgICAgICBpbXBsZW1lbnRhdGlv
bl9uYW1lKCJ1bmtub3duIiksCisgICAgICBoYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIoZmFs
c2UpIHt9CisKK1ZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm86On5FbmNvZGVySW5mbygpID0gZGVm
YXVsdDsKKwogaW50MzJfdCBWaWRlb0VuY29kZXI6OlNldFJhdGVzKHVpbnQzMl90IGJpdHJhdGUs
IHVpbnQzMl90IGZyYW1lcmF0ZSkgewogICBSVENfTk9UUkVBQ0hFRCgpIDw8ICJTZXRSYXRlKHVp
bnQzMl90LCB1aW50MzJfdCkgaXMgZGVwcmVjYXRlZC4iOwogICByZXR1cm4gLTE7CkBAIC0xMDEs
NCArMTEzLDE0IEBAIGJvb2wgVmlkZW9FbmNvZGVyOjpTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNv
bnN0IHsKIGNvbnN0IGNoYXIqIFZpZGVvRW5jb2Rlcjo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29u
c3QgewogICByZXR1cm4gInVua25vd24iOwogfQorCisvLyBUT0RPKHdlYnJ0Yzo5NzIyKTogUmVt
b3ZlIGFuZCBtYWtlIHB1cmUgdmlydHVhbCB3aGVuIHRoZSB0aHJlZSBsZWdhY3kKKy8vIG1ldGhv
ZHMgY2FsbGVkIGhlcmUgYXJlIGdvbmUuCitWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIFZpZGVv
RW5jb2Rlcjo6R2V0RW5jb2RlckluZm8oKSBjb25zdCB7CisgIEVuY29kZXJJbmZvIGluZm87Cisg
IGluZm8uc2NhbGluZ19zZXR0aW5ncyA9IEdldFNjYWxpbmdTZXR0aW5ncygpOworICBpbmZvLnN1
cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBTdXBwb3J0c05hdGl2ZUhhbmRsZSgpOworICBpbmZvLmlt
cGxlbWVudGF0aW9uX25hbWUgPSBJbXBsZW1lbnRhdGlvbk5hbWUoKTsKKyAgcmV0dXJuIGluZm87
Cit9CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19j
b2RlY3MvdmlkZW9fZW5jb2Rlci5oCmluZGV4IDY4ZDliNDQ1NTgwZjM4ODI1M2QyNTY5MTVmOWI4
Zjk2OTY0YTFkYmQuLmU3ZGViN2RiYjljZGIyNjcwZTA0MjRjMmJhMmQ4YTIwZDIxMjkyYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oCkBAIC0x
NiwxMSArMTYsMTIgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNs
dWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiYXBp
L3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19j
b2RlYy5oIgotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0
Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTczLDcgKzc0LDcgQEAgY2xh
c3MgRW5jb2RlZEltYWdlQ2FsbGJhY2sgewogICB2aXJ0dWFsIHZvaWQgT25Ecm9wcGVkRnJhbWUo
RHJvcFJlYXNvbiByZWFzb24pIHt9CiB9OwogCi1jbGFzcyBWaWRlb0VuY29kZXIgeworY2xhc3Mg
UlRDX0VYUE9SVCBWaWRlb0VuY29kZXIgewogIHB1YmxpYzoKICAgc3RydWN0IFFwVGhyZXNob2xk
cyB7CiAgICAgUXBUaHJlc2hvbGRzKGludCBsLCBpbnQgaCkgOiBsb3cobCksIGhpZ2goaCkge30K
QEAgLTEwMiwxMyArMTAzLDEzIEBAIGNsYXNzIFZpZGVvRW5jb2RlciB7CiAgICAgU2NhbGluZ1Nl
dHRpbmdzKEtPZmYpOyAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCiAgICAgflNjYWxpbmdT
ZXR0aW5ncygpOwogCi0gICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8UXBUaHJlc2hvbGRzPiB0aHJl
c2hvbGRzOworICAgIGFic2w6Om9wdGlvbmFsPFFwVGhyZXNob2xkcz4gdGhyZXNob2xkczsKIAog
ICAgIC8vIFdlIHdpbGwgbmV2ZXIgYXNrIGZvciBhIHJlc29sdXRpb24gbG93ZXIgdGhhbiB0aGlz
LgogICAgIC8vIFRPRE8oa3RoZWxnYXNvbik6IExvd2VyIHRoaXMgbGltaXQgd2hlbiBiZXR0ZXIg
dGVzdGluZwogICAgIC8vIG9uIE1lZGlhQ29kZWMgYW5kIGZhbGxiYWNrIGltcGxlbWVudGF0aW9u
cyBhcmUgaW4gcGxhY2UuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC93
ZWJydGMvaXNzdWVzL2RldGFpbD9pZD03MjA2Ci0gICAgY29uc3QgaW50IG1pbl9waXhlbHNfcGVy
X2ZyYW1lID0gMzIwICogMTgwOworICAgIGludCBtaW5fcGl4ZWxzX3Blcl9mcmFtZSA9IDMyMCAq
IDE4MDsKIAogICAgcHJpdmF0ZToKICAgICAvLyBQcml2YXRlIGNvbnN0cnVjdG9yOyB0byBnZXQg
YW4gb2JqZWN0IHdpdGhvdXQgdGhyZXNob2xkcywgdXNlCkBAIC0xMTYsNiArMTE3LDM2IEBAIGNs
YXNzIFZpZGVvRW5jb2RlciB7CiAgICAgU2NhbGluZ1NldHRpbmdzKCk7CiAgIH07CiAKKyAgLy8g
U3RydWN0IGNvbnRhaW5pbmcgbWV0YWRhdGEgYWJvdXQgdGhlIGVuY29kZXIgaW1wbGVtZW50aW5n
IHRoaXMgaW50ZXJmYWNlLgorICBzdHJ1Y3QgRW5jb2RlckluZm8geworICAgIEVuY29kZXJJbmZv
KCk7CisgICAgfkVuY29kZXJJbmZvKCk7CisKKyAgICAvLyBBbnkgZW5jb2RlciBpbXBsZW1lbnRh
dGlvbiB3aXNoaW5nIHRvIHVzZSB0aGUgV2ViUlRDIHByb3ZpZGVkCisgICAgLy8gcXVhbGl0eSBz
Y2FsZXIgbXVzdCBwb3B1bGF0ZSB0aGlzIGZpZWxkLgorICAgIFNjYWxpbmdTZXR0aW5ncyBzY2Fs
aW5nX3NldHRpbmdzOworCisgICAgLy8gSWYgdHJ1ZSwgZW5jb2RlciBzdXBwb3J0cyB3b3JraW5n
IHdpdGggYSBuYXRpdmUgaGFuZGxlIChlLmcuIHRleHR1cmUKKyAgICAvLyBoYW5kbGUgZm9yIGh3
IGNvZGVjcykgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGEgcmF3IEk0MjAgYnVmZmVyLgorICAgIGJv
b2wgc3VwcG9ydHNfbmF0aXZlX2hhbmRsZTsKKworICAgIC8vIFRoZSBuYW1lIG9mIHRoaXMgcGFy
dGljdWxhciBlbmNvZGVyIGltcGxlbWVudGF0aW9uLCBlLmcuICJsaWJ2cHgiLgorICAgIHN0ZDo6
c3RyaW5nIGltcGxlbWVudGF0aW9uX25hbWU7CisKKyAgICAvLyBJZiB0aGlzIGZpZWxkIGlzIHRy
dWUsIHRoZSBlbmNvZGVyIHJhdGUgY29udHJvbGxlciBtdXN0IHBlcmZvcm0KKyAgICAvLyB3ZWxs
IGV2ZW4gaW4gZGlmZmljdWx0IHNpdHVhdGlvbnMsIGFuZCBwcm9kdWNlIGNsb3NlIHRvIHRoZSBz
cGVjaWZpZWQKKyAgICAvLyB0YXJnZXQgYml0cmF0ZSBzZWVuIG92ZXIgYSByZWFzb25hYmxlIHRp
bWUgd2luZG93LCBkcm9wIGZyYW1lcyBpZgorICAgIC8vIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBr
ZWVwIHRoZSByYXRlIGNvcnJlY3QsIGFuZCByZWFjdCBxdWlja2x5IHRvCisgICAgLy8gY2hhbmdp
bmcgYml0cmF0ZSB0YXJnZXRzLiBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUsIHdlIGRpc2Fi
bGUgdGhlCisgICAgLy8gZnJhbWUgZHJvcHBlciBpbiB0aGUgbWVkaWEgb3B0aW1pemF0aW9uIG1v
ZHVsZSBhbmQgcmVseSBlbnRpcmVseSBvbiB0aGUKKyAgICAvLyBlbmNvZGVyIHRvIHByb2R1Y2Ug
bWVkaWEgYXQgYSBiaXRyYXRlIHRoYXQgY2xvc2VseSBtYXRjaGVzIHRoZSB0YXJnZXQuCisgICAg
Ly8gQW55IG92ZXJzaG9vdGluZyBtYXkgcmVzdWx0IGluIGRlbGF5IGJ1aWxkdXAuIElmIHRoaXMg
bWV0aG9kIHJldHVybnMKKyAgICAvLyBmYWxzZSAoZGVmYXVsdCBiZWhhdmlvciksIHRoZSBtZWRp
YSBvcHQgZnJhbWUgZHJvcHBlciB3aWxsIGRyb3AgaW5wdXQKKyAgICAvLyBmcmFtZXMgaWYgaXQg
c3VzcGVjdCBlbmNvZGVyIG1pc2JlaGF2aW9yLiBNaXNiZWhhdmlvciBpcyBjb21tb24sCisgICAg
Ly8gZXNwZWNpYWxseSBpbiBoYXJkd2FyZSBjb2RlY3MuIERpc2FibGUgbWVkaWEgb3B0IGF0IHlv
dXIgb3duIHJpc2suCisgICAgYm9vbCBoYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXI7CisgIH07
CisKICAgc3RhdGljIFZpZGVvQ29kZWNWUDggR2V0RGVmYXVsdFZwOFNldHRpbmdzKCk7CiAgIHN0
YXRpYyBWaWRlb0NvZGVjVlA5IEdldERlZmF1bHRWcDlTZXR0aW5ncygpOwogICBzdGF0aWMgVmlk
ZW9Db2RlY0gyNjQgR2V0RGVmYXVsdEgyNjRTZXR0aW5ncygpOwpAQCAtMTcxLDE3ICsyMDIsNiBA
QCBjbGFzcyBWaWRlb0VuY29kZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
ZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZvLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1lVHlwZT4qIGZyYW1lX3R5cGVzKSA9IDA7CiAK
LSAgLy8gSW5mb3JtIHRoZSBlbmNvZGVyIG9mIHRoZSBuZXcgcGFja2V0IGxvc3MgcmF0ZSBhbmQg
dGhlIHJvdW5kLXRyaXAgdGltZSBvZgotICAvLyB0aGUgbmV0d29yay4KLSAgLy8KLSAgLy8gSW5w
dXQ6Ci0gIC8vICAgICAgICAgIC0gcGFja2V0X2xvc3MgOiBGcmFjdGlvbiBsb3N0Ci0gIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAobG9zcyByYXRlIGluIHBlcmNlbnQgPSAxMDAgKiBwYWNr
ZXRMb3NzIC8gMjU1KQotICAvLyAgICAgICAgICAtIHJ0dCAgICAgICAgIDogUm91bmQtdHJpcCB0
aW1lIGluIG1pbGxpc2Vjb25kcwotICAvLyBSZXR1cm4gdmFsdWUgICAgICAgICAgIDogV0VCUlRD
X1ZJREVPX0NPREVDX09LIGlmIE9LCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICA8MCAt
IEVycm9yczogV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SCi0gIHZpcnR1YWwgaW50MzJfdCBTZXRD
aGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpID0gMDsK
LQogICAvLyBJbmZvcm0gdGhlIGVuY29kZXIgYWJvdXQgdGhlIG5ldyB0YXJnZXQgYml0IHJhdGUu
CiAgIC8vCiAgIC8vIElucHV0OgpAQCAtMTk2LDEyICsyMTYsMTcgQEAgY2xhc3MgVmlkZW9FbmNv
ZGVyIHsKICAgdmlydHVhbCBpbnQzMl90IFNldFJhdGVBbGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0
cmF0ZUFsbG9jYXRpb24mIGFsbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBmcmFtZXJhdGUpOwogCi0gIC8vIEFueSBlbmNvZGVyIGltcGxlbWVu
dGF0aW9uIHdpc2hpbmcgdG8gdXNlIHRoZSBXZWJSVEMgcHJvdmlkZWQKLSAgLy8gcXVhbGl0eSBz
Y2FsZXIgbXVzdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QuCisgIC8vIEdldFNjYWxpbmdTZXR0aW5n
cygpLCBTdXBwb3J0c05hdGl2ZUhhbmRsZSgpLCBJbXBsZW1lbnRhdGlvbk5hbWUoKSBhcmUKKyAg
Ly8gZGVwcmVjYXRlZCwgdXNlIEdldEVuY29kZXJJbmZvKCkgaW5zdGVhZC4KICAgdmlydHVhbCBT
Y2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Q7Ci0KICAgdmlydHVhbCBi
b29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3Q7CiAgIHZpcnR1YWwgY29uc3QgY2hhciog
SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Q7CisKKyAgLy8gUmV0dXJucyBtZXRhLWRhdGEgYWJv
dXQgdGhlIGVuY29kZXIsIHN1Y2ggYXMgaW1wbGVtZW50YXRpb24gbmFtZS4KKyAgLy8gVGhlIG91
dHB1dCBvZiB0aGlzIG1ldGhvZCBtYXkgY2hhbmdlIGR1cmluZyBydW50aW1lLiBGb3IgaW5zdGFu
Y2UgaWYgYQorICAvLyBoYXJkd2FyZSBlbmNvZGVyIGZhaWxzLCBpdCBtYXkgZmFsbCBiYWNrIHRv
IGRvaW5nIHNvZnR3YXJlIGVuY29kaW5nIHVzaW5nCisgIC8vIGFuIGltcGxlbWVudGF0aW9uIHdp
dGggZGlmZmVyZW50IGNoYXJhY3RlcmlzdGljcy4KKyAgdmlydHVhbCBFbmNvZGVySW5mbyBHZXRF
bmNvZGVySW5mbygpIGNvbnN0OwogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKICNlbmRpZiAg
Ly8gQVBJX1ZJREVPX0NPREVDU19WSURFT19FTkNPREVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVv
X2VuY29kZXJfY29uZmlnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZpZy5jYwppbmRleCA3NDk3
N2VhZWEzZmRkNTlmYzU3M2MxYjE4MzA0NDIwOWQ3MWE4OWU5Li42NmZmN2M5NGViNDNiNzU2YTMz
NjIzYzU5OGQyYjA2M2E2ZTZmNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmln
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25maWcuY2MKQEAgLTksNyArOSw2IEBACiAgKi8K
ICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmlnLmgiCiAKLSNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmlnLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Zp
ZGVvX2VuY29kZXJfY29uZmlnLmgKaW5kZXggZTEwZjA4MTkwYzY4YTMzMmMzMWNjMmNkYWFkNDll
MmNhZWJmOGUzMi4uOWRkOGU0ZmE1ZDAyYzQ0OTVjZGJkOTgzNWM2M2EwY2I1NjMwYjljMCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9j
b25maWcuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBBUElfVklERU9fQ09ERUNTX1ZJREVP
X0VOQ09ERVJfQ09ORklHX0hfCiAjZGVmaW5lIEFQSV9WSURFT19DT0RFQ1NfVklERU9fRU5DT0RF
Ul9DT05GSUdfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNp
bmNsdWRlIDx2ZWN0b3I+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9m
YWxsYmFja193cmFwcGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dy
YXBwZXIuY2MKaW5kZXggOTlmMjk3MDdlNDQxYzAyOTI1MGI3ZWRkOWIwNWQ5ODNjMWQ5MjE5Yy4u
ZmQwNjc4NTQzYWJlZmFhM2Q3MzA4NTIzMjNkOWQ0MjUwODdmNmNjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92
aWRlb19lbmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19l
bmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuY2MKQEAgLTg3LDEyICs4Nyw5IEBAIGNs
YXNzIFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyIGZpbmFsIDogcHVibGljIFZp
ZGVvRW5jb2RlciB7CiAgIGludDMyX3QgRW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLAog
ICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNf
aW5mbywKICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiogZnJh
bWVfdHlwZXMpIG92ZXJyaWRlOwotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQz
Ml90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CiAgIGludDMyX3QgU2V0UmF0
ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZV9hbGxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgb3Zl
cnJpZGU7Ci0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
U2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IG92ZXJyaWRlOwotICBj
b25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgRW5jb2Rl
ckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZTsKIAogIHByaXZhdGU6CiAgIGJv
b2wgSW5pdEZhbGxiYWNrRW5jb2RlcigpOwpAQCAtMTYyLDcgKzE1OSw3IEBAIFZpZGVvRW5jb2Rl
clNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyOjpWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3Jh
cHBlcigKICAgaWYgKGZvcmNlZF9mYWxsYmFja19wb3NzaWJsZV8pIHsKICAgICBHZXRGb3JjZWRG
YWxsYmFja1BhcmFtc0Zyb21GaWVsZFRyaWFsR3JvdXAoCiAgICAgICAgICZmb3JjZWRfZmFsbGJh
Y2tfLm1pbl9waXhlbHNfLCAmZm9yY2VkX2ZhbGxiYWNrXy5tYXhfcGl4ZWxzXywKLSAgICAgICAg
ZW5jb2Rlcl8tPkdldFNjYWxpbmdTZXR0aW5ncygpLm1pbl9waXhlbHNfcGVyX2ZyYW1lIC0KKyAg
ICAgICAgZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5ncy5taW5fcGl4
ZWxzX3Blcl9mcmFtZSAtCiAgICAgICAgICAgICAxKTsgIC8vIE5vIEhXIGJlbG93LgogICB9CiB9
CkBAIC0xODUsOCArMTgyLDYgQEAgYm9vbCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3Jh
cHBlcjo6SW5pdEZhbGxiYWNrRW5jb2RlcigpIHsKICAgICBmYWxsYmFja19lbmNvZGVyXy0+UmVn
aXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKGNhbGxiYWNrXyk7CiAgIGlmIChyYXRlc19zZXRf
KQogICAgIGZhbGxiYWNrX2VuY29kZXJfLT5TZXRSYXRlQWxsb2NhdGlvbihiaXRyYXRlX2FsbG9j
YXRpb25fLCBmcmFtZXJhdGVfKTsKLSAgaWYgKGNoYW5uZWxfcGFyYW1ldGVyc19zZXRfKQotICAg
IGZhbGxiYWNrX2VuY29kZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRfbG9zc18sIHJ0
dF8pOwogCiAgIC8vIFNpbmNlIHdlJ3JlIHN3aXRjaGluZyB0byB0aGUgZmFsbGJhY2sgZW5jb2Rl
ciwgUmVsZWFzZSB0aGUgcmVhbCBlbmNvZGVyLiBJdAogICAvLyBtYXkgYmUgcmUtaW5pdGlhbGl6
ZWQgdmlhIEluaXRFbmNvZGUgbGF0ZXIsIGFuZCBpdCB3aWxsIGNvbnRpbnVlIHRvIGdldApAQCAt
MjA2LDcgKzIwMSw2IEBAIGludDMyX3QgVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBw
ZXI6OkluaXRFbmNvZGUoCiAgIG1heF9wYXlsb2FkX3NpemVfID0gbWF4X3BheWxvYWRfc2l6ZTsK
ICAgLy8gQ2xlYXIgc3RvcmVkIHJhdGUvY2hhbm5lbCBwYXJhbWV0ZXJzLgogICByYXRlc19zZXRf
ID0gZmFsc2U7Ci0gIGNoYW5uZWxfcGFyYW1ldGVyc19zZXRfID0gZmFsc2U7CiAgIFZhbGlkYXRl
U2V0dGluZ3NGb3JGb3JjZWRGYWxsYmFjaygpOwogCiAgIC8vIFRyeSB0byByZWluaXQgZm9yY2Vk
IHNvZnR3YXJlIGNvZGVjIGlmIGl0IGlzIGluIHVzZS4KQEAgLTI3MCwxOCArMjY0LDYgQEAgaW50
MzJfdCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcjo6RW5jb2RlKAogICByZXR1
cm4gcmV0OwogfQogCi1pbnQzMl90IFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVy
OjpTZXRDaGFubmVsUGFyYW1ldGVycygKLSAgICB1aW50MzJfdCBwYWNrZXRfbG9zcywKLSAgICBp
bnQ2NF90IHJ0dCkgewotICBjaGFubmVsX3BhcmFtZXRlcnNfc2V0XyA9IHRydWU7Ci0gIHBhY2tl
dF9sb3NzXyA9IHBhY2tldF9sb3NzOwotICBydHRfID0gcnR0OwotICBpbnQzMl90IHJldCA9IGVu
Y29kZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRfbG9zcywgcnR0KTsKLSAgaWYgKHVz
ZV9mYWxsYmFja19lbmNvZGVyXykKLSAgICByZXR1cm4gZmFsbGJhY2tfZW5jb2Rlcl8tPlNldENo
YW5uZWxQYXJhbWV0ZXJzKHBhY2tldF9sb3NzLCBydHQpOwotICByZXR1cm4gcmV0OwotfQotCiBp
bnQzMl90IFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyOjpTZXRSYXRlQWxsb2Nh
dGlvbigKICAgICBjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlX2FsbG9jYXRp
b24sCiAgICAgdWludDMyX3QgZnJhbWVyYXRlKSB7CkBAIC0yOTQsMjkgKzI3NiwyOSBAQCBpbnQz
Ml90IFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyOjpTZXRSYXRlQWxsb2NhdGlv
bigKICAgcmV0dXJuIHJldDsKIH0KIAotYm9vbCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNr
V3JhcHBlcjo6U3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCB7Ci0gIHJldHVybiB1c2VfZmFs
bGJhY2tfZW5jb2Rlcl8gPyBmYWxsYmFja19lbmNvZGVyXy0+U3VwcG9ydHNOYXRpdmVIYW5kbGUo
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZW5jb2Rlcl8tPlN1cHBvcnRzTmF0
aXZlSGFuZGxlKCk7Ci19CitWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIFZpZGVvRW5jb2RlclNv
ZnR3YXJlRmFsbGJhY2tXcmFwcGVyOjpHZXRFbmNvZGVySW5mbygpCisgICAgY29uc3QgeworICBF
bmNvZGVySW5mbyBmYWxsYmFja19lbmNvZGVyX2luZm8gPSBmYWxsYmFja19lbmNvZGVyXy0+R2V0
RW5jb2RlckluZm8oKTsKKyAgRW5jb2RlckluZm8gZGVmYXVsdF9lbmNvZGVyX2luZm8gPSBlbmNv
ZGVyXy0+R2V0RW5jb2RlckluZm8oKTsKKworICBFbmNvZGVySW5mbyBpbmZvID0KKyAgICAgIHVz
ZV9mYWxsYmFja19lbmNvZGVyXyA/IGZhbGxiYWNrX2VuY29kZXJfaW5mbyA6IGRlZmF1bHRfZW5j
b2Rlcl9pbmZvOwogCi1WaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncwotVmlkZW9FbmNvZGVy
U29mdHdhcmVGYWxsYmFja1dyYXBwZXI6OkdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IHsKICAg
aWYgKGZvcmNlZF9mYWxsYmFja19wb3NzaWJsZV8pIHsKICAgICBjb25zdCBhdXRvIHNldHRpbmdz
ID0gZm9yY2VkX2ZhbGxiYWNrXy5hY3RpdmVfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA/IGZhbGxiYWNrX2VuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiBlbmNvZGVyXy0+R2V0U2NhbGluZ1NldHRpbmdzKCk7Ci0gICAg
cmV0dXJuIHNldHRpbmdzLnRocmVzaG9sZHMKLSAgICAgICAgICAgICAgID8gVmlkZW9FbmNvZGVy
OjpTY2FsaW5nU2V0dGluZ3Moc2V0dGluZ3MudGhyZXNob2xkcy0+bG93LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy50aHJlc2hvbGRzLT5o
aWdoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Jj
ZWRfZmFsbGJhY2tfLm1pbl9waXhlbHNfKQotICAgICAgICAgICAgICAgOiBWaWRlb0VuY29kZXI6
OlNjYWxpbmdTZXR0aW5nczo6a09mZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8g
ZmFsbGJhY2tfZW5jb2Rlcl9pbmZvLnNjYWxpbmdfc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogZGVmYXVsdF9lbmNvZGVyX2luZm8uc2NhbGluZ19zZXR0aW5nczsKKyAg
ICBpbmZvLnNjYWxpbmdfc2V0dGluZ3MgPQorICAgICAgICBzZXR0aW5ncy50aHJlc2hvbGRzCisg
ICAgICAgICAgICA/IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzKHNldHRpbmdzLnRocmVz
aG9sZHMtPmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0dGluZ3MudGhyZXNob2xkcy0+aGlnaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yY2VkX2ZhbGxiYWNrXy5taW5fcGl4ZWxzXykKKyAgICAgICAgICAg
IDogVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtPZmY7CisgIH0gZWxzZSB7CisgICAg
aW5mby5zY2FsaW5nX3NldHRpbmdzID0gZGVmYXVsdF9lbmNvZGVyX2luZm8uc2NhbGluZ19zZXR0
aW5nczsKICAgfQotICByZXR1cm4gZW5jb2Rlcl8tPkdldFNjYWxpbmdTZXR0aW5ncygpOwotfQog
Ci1jb25zdCBjaGFyKiBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcjo6SW1wbGVt
ZW50YXRpb25OYW1lKCkgY29uc3QgewotICByZXR1cm4gdXNlX2ZhbGxiYWNrX2VuY29kZXJfID8g
ZmFsbGJhY2tfZW5jb2Rlcl8tPkltcGxlbWVudGF0aW9uTmFtZSgpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBlbmNvZGVyXy0+SW1wbGVtZW50YXRpb25OYW1lKCk7CisgIHJldHVy
biBpbmZvOwogfQogCiBib29sIFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyOjpJ
c0ZvcmNlZEZhbGxiYWNrQWN0aXZlKCkgY29uc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9y
YWxfbGF5ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDIyM2E0
MjA5NjU0NWFjODU3MjdlOGNjZTMxZWU3ODUwNzgzMDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92
cDhfdGVtcG9yYWxfbGF5ZXJzLmgKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaWZuZGVmIEFQSV9WSURFT19DT0RFQ1NfVlA4X1RFTVBPUkFMX0xBWUVSU19IXwor
I2RlZmluZSBBUElfVklERU9fQ09ERUNTX1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8KKworI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSB3ZWJydGMgeworCisv
LyBTb21lIG5vdGVzIG9uIHRoZSBwcmVyZXF1aXNpdGVzIG9mIHRoZSBUZW1wb3JhbExheWVycyBp
bnRlcmZhY2UuCisvLyAqIFZwOFRlbXBvcmFsTGF5ZXJzIGlzIG5vdCB0aHJlYWQgc2FmZSwgc3lu
Y2hyb25pemF0aW9uIGlzIHRoZSBjYWxsZXIncworLy8gICByZXNwb25zaWJpbGl0eS4KKy8vICog
VGhlIGVuY29kZXIgaXMgYXNzdW1lZCB0byBlbmNvZGUgYWxsIGZyYW1lcyBpbiBvcmRlciwgYW5k
IGNhbGxiYWNrcyB0bworLy8gICBQb3B1bGF0ZUNvZGVjU3BlY2lmaWMoKSAvIEZyYW1lRW5jb2Rl
ZCgpIG11c3QgaGFwcGVuIGluIHRoZSBzYW1lIG9yZGVyLgorLy8KKy8vIFRoaXMgbWVhbnMgdGhh
dCBpbiB0aGUgY2FzZSBvZiBwaXBlbGluaW5nIGVuY29kZXJzLCBpdCBpcyBPSyB0byBoYXZlIGEg
Y2hhaW4KKy8vIG9mIGNhbGxzIHN1Y2ggYXMgdGhpczoKKy8vIC0gVXBkYXRlTGF5ZXJDb25maWco
dGltZXN0YW1wQSkKKy8vIC0gVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wQikKKy8vIC0gUG9w
dWxhdGVDb2RlY1NwZWNpZmljKHRpbWVzdGFtcEEsIC4uLikKKy8vIC0gVXBkYXRlTGF5ZXJDb25m
aWcodGltZXN0YW1wQykKKy8vIC0gT25FbmNvZGVEb25lKHRpbWVzdGFtcEEsIDEyMzQsIC4uLikK
Ky8vIC0gVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wQykKKy8vIC0gT25FbmNvZGVEb25lKHRp
bWVzdGFtcEIsIDAsIC4uLikKKy8vIC0gT25FbmNvZGVEb25lKHRpbWVzdGFtcEMsIDEyMzQsIC4u
LikKKy8vIE5vdGUgdGhhdCBVcGRhdGVMYXllckNvbmZpZygpIGZvciBhIG5ldyBmcmFtZSBjYW4g
aGFwcGVuIGJlZm9yZQorLy8gRnJhbWVFbmNvZGVkKCkgZm9yIGEgcHJldmlvdXMgb25lLCBidXQg
Y2FsbHMgdGhlbXNlbHZlcyBtdXN0IGJlIGJvdGgKKy8vIHN5bmNocm9uaXplZCAoZS5nLiBydW4g
b24gYSB0YXNrIHF1ZXVlKSBhbmQgaW4gb3JkZXIgKHBlciB0eXBlKS4KKworLy8gVHdvIGRpZmZl
cmVudCBmbGF2b3JzIG9mIHRlbXBvcmFsIGxheWVycyBhcmUgY3VycmVudGx5IGF2YWlsYWJsZToK
Ky8vIGtGaXhlZFBhdHRlcm4gdXNlcyBhIGZpeGVkIHJlcGVhdGluZyBwYXR0ZXJuIG9mIDEtNCBs
YXllcnMuCisvLyBrQml0cmF0ZUR5bmFtaWMgY2FuIGFsbG9jYXRlIGZyYW1lcyBkeW5hbWljYWxs
eSB0byAxIG9yIDIgbGF5ZXJzLCBiYXNlZCBvbgorLy8gdGhlIGJpdHJhdGUgcHJvZHVjZWQuCitl
bnVtIGNsYXNzIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZSB7IGtGaXhlZFBhdHRlcm4sIGtCaXRyYXRl
RHluYW1pYyB9OworCitzdHJ1Y3QgQ29kZWNTcGVjaWZpY0luZm9WUDg7CisKK3N0cnVjdCBWcDhF
bmNvZGVyQ29uZmlnIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga01heFBlcmlvZGljaXR5
ID0gMTY7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtNYXhMYXllcnMgPSA1OworCisgIC8v
IE51bWJlciBvZiBhY3RpdmUgdGVtcG9yYWwgbGF5ZXJzLiBTZXQgdG8gMCBpZiBub3QgdXNlZC4K
KyAgdWludDMyX3QgdHNfbnVtYmVyX2xheWVyczsKKyAgLy8gQXJyYXlzIG9mIGxlbmd0aCB8dHNf
bnVtYmVyX2xheWVyc3wsIGluZGljYXRpbmcgKGN1bXVsYXRpdmUpIHRhcmdldCBiaXRyYXRlCisg
IC8vIGFuZCByYXRlIGRlY2ltYXRvciAoZS5nLiA0IGlmIGV2ZXJ5IDR0aCBmcmFtZSBpcyBpbiB0
aGUgZ2l2ZW4gbGF5ZXIpIGZvcgorICAvLyBlYWNoIGFjdGl2ZSB0ZW1wb3JhbCBsYXllciwgc3Rh
cnRpbmcgd2l0aCB0ZW1wb3JhbCBpZCAwLgorICB1aW50MzJfdCB0c190YXJnZXRfYml0cmF0ZVtr
TWF4TGF5ZXJzXTsKKyAgdWludDMyX3QgdHNfcmF0ZV9kZWNpbWF0b3Jba01heExheWVyc107CisK
KyAgLy8gVGhlIHBlcmlvZGljaXR5IG9mIHRoZSB0ZW1wb3JhbCBwYXR0ZXJuLiBTZXQgdG8gMCBp
ZiBub3QgdXNlZC4KKyAgdWludDMyX3QgdHNfcGVyaW9kaWNpdHk7CisgIC8vIEFycmF5IG9mIGxl
bmd0aCB8dHNfcGVyaW9kaWNpdHl8IGluZGljYXRpbmcgdGhlIHNlcXVlbmNlIG9mIHRlbXBvcmFs
IGlkJ3MKKyAgLy8gdG8gYXNzaWduIHRvIGluY29taW5nIGZyYW1lcy4KKyAgdWludDMyX3QgdHNf
bGF5ZXJfaWRba01heFBlcmlvZGljaXR5XTsKKworICAvLyBUYXJnZXQgYml0cmF0ZSwgaW4gYnBz
LgorICB1aW50MzJfdCByY190YXJnZXRfYml0cmF0ZTsKKworICAvLyBDbGFtcCBRUCB0byBtaW4v
bWF4LiBVc2UgMCB0byBkaXNhYmxlIGNsYW1waW5nLgorICB1aW50MzJfdCByY19taW5fcXVhbnRp
emVyOworICB1aW50MzJfdCByY19tYXhfcXVhbnRpemVyOworfTsKKworLy8gRGVmaW5lZCBiaXQt
bWFza2FibGUgcmVmZXJlbmNlIHRvIHRoZSB0aHJlZSBidWZmZXJzIGF2YWlsYWJsZSBpbiBWUDgu
CitlbnVtIGNsYXNzIFZwOEJ1ZmZlclJlZmVyZW5jZSA6IHVpbnQ4X3QgeworICBrTm9uZSA9IDAs
CisgIGtMYXN0ID0gMSwKKyAga0dvbGRlbiA9IDIsCisgIGtBbHRyZWYgPSA0Cit9OworCisvLyBU
aGlzIGludGVyZmFjZSBkZWZpbmVzIGEgd2F5IG9mIGdldHRpbmcgdGhlIGVuY29kZXIgc2V0dGlu
Z3MgbmVlZGVkIHRvCisvLyByZWFsaXplIGEgdGVtcG9yYWwgbGF5ZXIgc3RydWN0dXJlLgorY2xh
c3MgVnA4VGVtcG9yYWxMYXllcnMgeworIHB1YmxpYzoKKyAgZW51bSBCdWZmZXJGbGFncyA6IGlu
dCB7CisgICAga05vbmUgPSAwLAorICAgIGtSZWZlcmVuY2UgPSAxLAorICAgIGtVcGRhdGUgPSAy
LAorICAgIGtSZWZlcmVuY2VBbmRVcGRhdGUgPSBrUmVmZXJlbmNlIHwga1VwZGF0ZSwKKyAgfTsK
KyAgZW51bSBGcmVlemVFbnRyb3B5IHsga0ZyZWV6ZUVudHJvcHkgfTsKKworICBzdHJ1Y3QgRnJh
bWVDb25maWcgeworICAgIEZyYW1lQ29uZmlnKCk7CisKKyAgICBGcmFtZUNvbmZpZyhCdWZmZXJG
bGFncyBsYXN0LCBCdWZmZXJGbGFncyBnb2xkZW4sIEJ1ZmZlckZsYWdzIGFyZik7CisgICAgRnJh
bWVDb25maWcoQnVmZmVyRmxhZ3MgbGFzdCwKKyAgICAgICAgICAgICAgICBCdWZmZXJGbGFncyBn
b2xkZW4sCisgICAgICAgICAgICAgICAgQnVmZmVyRmxhZ3MgYXJmLAorICAgICAgICAgICAgICAg
IEZyZWV6ZUVudHJvcHkpOworCisgICAgYm9vbCBkcm9wX2ZyYW1lOworICAgIEJ1ZmZlckZsYWdz
IGxhc3RfYnVmZmVyX2ZsYWdzOworICAgIEJ1ZmZlckZsYWdzIGdvbGRlbl9idWZmZXJfZmxhZ3M7
CisgICAgQnVmZmVyRmxhZ3MgYXJmX2J1ZmZlcl9mbGFnczsKKworICAgIC8vIFRoZSBlbmNvZGVy
IGxheWVyIElEIGlzIHVzZWQgdG8gdXRpbGl6ZSB0aGUgY29ycmVjdCBiaXRyYXRlIGFsbG9jYXRv
cgorICAgIC8vIGluc2lkZSB0aGUgZW5jb2Rlci4gSXQgZG9lcyBub3QgY29udHJvbCByZWZlcmVu
Y2VzIG5vciBkZXRlcm1pbmUgd2hpY2gKKyAgICAvLyAiYWN0dWFsIiB0ZW1wb3JhbCBsYXllciB0
aGlzIGlzLiBUaGUgcGFja2V0aXplciB0ZW1wb3JhbCBpbmRleCBkZXRlcm1pbmVzCisgICAgLy8g
d2hpY2ggbGF5ZXIgdGhlIGVuY29kZWQgZnJhbWUgc2hvdWxkIGJlIHBhY2tldGl6ZWQgaW50by4K
KyAgICAvLyBOb3JtYWxseSB0aGVzZSBhcmUgdGhlIHNhbWUsIGJ1dCBjdXJyZW50IHRlbXBvcmFs
LWxheWVyIHN0cmF0ZWdpZXMgZm9yCisgICAgLy8gc2NyZWVuc2hhcmUgdXNlIG9uZSBiaXRyYXRl
IGFsbG9jYXRvciBmb3IgYWxsIGxheWVycywgYnV0IGF0dGVtcHQgdG8KKyAgICAvLyBwYWNrZXRp
emUgLyB1dGlsaXplIHJlZmVyZW5jZXMgdG8gc3BsaXQgYSBzdHJlYW0gaW50byBtdWx0aXBsZSBs
YXllcnMsCisgICAgLy8gd2l0aCBkaWZmZXJlbnQgcXVhbnRpemVyIHNldHRpbmdzLCB0byBoaXQg
dGFyZ2V0IGJpdHJhdGUuCisgICAgLy8gVE9ETyhwYm9zKTogU2NyZWVuc2hhcmUgbGF5ZXJzIGFy
ZSBiZWluZyByZWNvbnNpZGVyZWQgYXQgdGhlIHRpbWUgb2YKKyAgICAvLyB3cml0aW5nLCB3ZSBt
aWdodCBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIGRpc3RpbmN0aW9uLCBhbmQgaGF2ZSBhIHRlbXBv
cmFsCisgICAgLy8gbGF5ZXIgaW1wbHkgYm90aCAodGhlIG5vcm1hbCBjYXNlKS4KKyAgICBpbnQg
ZW5jb2Rlcl9sYXllcl9pZDsKKyAgICBpbnQgcGFja2V0aXplcl90ZW1wb3JhbF9pZHg7CisKKyAg
ICBib29sIGxheWVyX3N5bmM7CisKKyAgICBib29sIGZyZWV6ZV9lbnRyb3B5OworCisgICAgLy8g
SW5kaWNhdGVzIGluIHdoaWNoIG9yZGVyIHRoZSBlbmNvZGVyIHNob3VsZCBzZWFyY2ggdGhlIHJl
ZmVyZW5jZSBidWZmZXJzCisgICAgLy8gd2hlbiBkb2luZyBtb3Rpb24gcHJlZGljdGlvbi4gU2V0
IHRvIGtOb25lIHRvIHVzZSB1bnNwZWNpZmllZCBvcmRlci4gQW55CisgICAgLy8gYnVmZmVyIGlu
ZGljYXRlZCBoZXJlIG11c3Qgbm90IGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgbm9fcmVmIGJpdCBz
ZXQuCisgICAgLy8gSWYgYWxsIHRocmVlIGJ1ZmZlcnMgY2FuIGJlIHJlZmVyZW5jZSwgdGhlIG9u
ZSBub3QgbGlzdGVkIGhlcmUgc2hvdWxkIGJlCisgICAgLy8gc2VhcmNoZWQgbGFzdC4KKyAgICBW
cDhCdWZmZXJSZWZlcmVuY2UgZmlyc3RfcmVmZXJlbmNlOworICAgIFZwOEJ1ZmZlclJlZmVyZW5j
ZSBzZWNvbmRfcmVmZXJlbmNlOworCisgICBwcml2YXRlOgorICAgIEZyYW1lQ29uZmlnKEJ1ZmZl
ckZsYWdzIGxhc3QsCisgICAgICAgICAgICAgICAgQnVmZmVyRmxhZ3MgZ29sZGVuLAorICAgICAg
ICAgICAgICAgIEJ1ZmZlckZsYWdzIGFyZiwKKyAgICAgICAgICAgICAgICBib29sIGZyZWV6ZV9l
bnRyb3B5KTsKKyAgfTsKKworICB2aXJ0dWFsIH5WcDhUZW1wb3JhbExheWVycygpID0gZGVmYXVs
dDsKKworICAvLyBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUsIHRoZSBlbmNvZGVyIGlzIGZy
ZWUgdG8gZHJvcCBmcmFtZXMgZm9yCisgIC8vIGluc3RhbmNlIGluIGFuIGVmZm9ydCB0byB1cGhv
bGQgZW5jb2RpbmcgYml0cmF0ZS4KKyAgLy8gSWYgdGhpcyByZXR1cm4gZmFsc2UsIHRoZSBlbmNv
ZGVyIG11c3Qgbm90IGRyb3AgYW55IGZyYW1lcyB1bmxlc3M6CisgIC8vICAxLiBSZXF1ZXN0ZWQg
dG8gZG8gc28gdmlhIEZyYW1lQ29uZmlnLmRyb3BfZnJhbWUKKyAgLy8gIDIuIFRoZSBmcmFtZSB0
byBiZSBlbmNvZGVkIGlzIHJlcXVlc3RlZCB0byBiZSBhIGtleWZyYW1lCisgIC8vICAzLiBUaGUg
ZW5jb2RlZCBkZXRlY3RlZCBhIGxhcmdlIG92ZXJzaG9vdCBhbmQgZGVjaWRlZCB0byBkcm9wIGFu
ZCB0aGVuCisgIC8vICAgICByZS1lbmNvZGUgdGhlIGltYWdlIGF0IGEgbG93IGJpdHJhdGUuIElu
IHRoaXMgY2FzZSB0aGUgZW5jb2RlciBzaG91bGQKKyAgLy8gICAgIGNhbGwgT25FbmNvZGVEb25l
KCkgb25jZSB3aXRoIHNpemUgPSAwIHRvIGluZGljYXRlIGRyb3AsIGFuZCB0aGVuIGNhbGwKKyAg
Ly8gICAgIE9uRW5jb2RlRG9uZSgpIGFnYWluIHdoZW4gdGhlIGZyYW1lIGhhcyBhY3R1YWxseSBi
ZWVuIGVuY29kZWQuCisgIHZpcnR1YWwgYm9vbCBTdXBwb3J0c0VuY29kZXJGcmFtZURyb3BwaW5n
KCkgY29uc3QgPSAwOworCisgIC8vIE5ldyB0YXJnZXQgYml0cmF0ZSwgcGVyIHRlbXBvcmFsIGxh
eWVyLgorICB2aXJ0dWFsIHZvaWQgT25SYXRlc1VwZGF0ZWQoY29uc3Qgc3RkOjp2ZWN0b3I8dWlu
dDMyX3Q+JiBiaXRyYXRlc19icHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
ZnJhbWVyYXRlX2ZwcykgPSAwOworCisgIC8vIENhbGxlZCBieSB0aGUgZW5jb2RlciBiZWZvcmUg
ZW5jb2RpbmcgYSBmcmFtZS4gfGNmZ3wgY29udGFpbnMgdGhlIGN1cnJlbnQKKyAgLy8gY29uZmln
dXJhdGlvbi4gSWYgdGhlIFRlbXBvcmFsTGF5ZXJzIGluc3RhbmNlIHdpc2hlcyBhbnkgcGFydCBv
ZiB0aGF0CisgIC8vIHRvIGJlIGNoYW5nZWQgYmVmb3JlIHRoZSBlbmNvZGUgc3RlcCwgfGNmZ3wg
c2hvdWxkIGJlIGNoYW5nZWQgYW5kIHRoZW4KKyAgLy8gcmV0dXJuIHRydWUuIElmIGZhbHNlIGlz
IHJldHVybmVkLCB0aGUgZW5jb2RlciB3aWxsIHByb2NlZWQgd2l0aG91dAorICAvLyB1cGRhdGlu
ZyB0aGUgY29uZmlndXJhdGlvbi4KKyAgdmlydHVhbCBib29sIFVwZGF0ZUNvbmZpZ3VyYXRpb24o
VnA4RW5jb2RlckNvbmZpZyogY2ZnKSA9IDA7CisKKyAgLy8gUmV0dXJucyB0aGUgcmVjb21tZW5k
ZWQgVlA4IGVuY29kZSBmbGFncyBuZWVkZWQsIGFuZCBtb3ZlcyB0aGUgdGVtcG9yYWwKKyAgLy8g
cGF0dGVybiB0byB0aGUgbmV4dCBmcmFtZS4KKyAgLy8gVGhlIHRpbWVzdGFtcCBtYXkgYmUgdXNl
ZCBhcyBib3RoIGEgdGltZSBhbmQgYSB1bmlxdWUgaWRlbnRpZmllciwgYW5kIHNvCisgIC8vIHRo
ZSBjYWxsZXIgbXVzdCBtYWtlIHN1cmUgbm8gdHdvIGZyYW1lcyB1c2UgdGhlIHNhbWUgdGltZXN0
YW1wLgorICAvLyBUaGUgdGltZXN0YW1wIHVzZXMgYSA5MGtIeiBSVFAgY2xvY2suCisgIC8vIEFm
dGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGZpcnN0IGNhbGwgdGhlIGFjdHVhbCBlbmNvZGVyIHdp
dGggdGhlIHByb3ZpZGVkCisgIC8vIGZyYW1lIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGVuIE9uRW5j
b2RlRG9uZSgpIGJlbG93LgorICB2aXJ0dWFsIEZyYW1lQ29uZmlnIFVwZGF0ZUxheWVyQ29uZmln
KHVpbnQzMl90IHJ0cF90aW1lc3RhbXApID0gMDsKKworICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGVu
Y29kZSBzdGVwIGlzIGRvbmUuIHxydHBfdGltZXN0YW1wfCBtdXN0IG1hdGNoIHRoZQorICAvLyBw
YXJhbWV0ZXIgdXNlIGluIHRoZSBVcGRhdGVMYXllckNvbmZpZygpIGNhbGwuCisgIC8vIHxpc19r
ZXlmcmFtZXwgbXVzdCBiZSB0cnVlIGlmZiB0aGUgZW5jb2RlciBkZWNpZGVkIHRvIGVuY29kZSB0
aGlzIGZyYW1lIGFzCisgIC8vIGEga2V5ZnJhbWUuCisgIC8vIElmIHRoZSBlbmNvZGVyIGRlY2lk
ZWQgdG8gZHJvcCB0aGlzIGZyYW1lLCB8c2l6ZV9ieXRlc3wgbXVzdCBiZSBzZXQgdG8gMCwKKyAg
Ly8gb3RoZXJ3aXNlIGl0IHNob3VsZCBpbmRpY2F0ZSB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUg
ZW5jb2RlZCBmcmFtZS4KKyAgLy8gSWYgfHNpemVfYnl0ZXN8ID4gMCwgYW5kIHx2cDhfaW5mb3wg
aXMgbm90IG51bGwsIHRoZSBUZW1wb3JhbExheWVycworICAvLyBpbnN0YW5jZSBteSB1cGRhdGUg
fHZwOF9pbmZvfCB3aXRoIGNvZGVjIHNwZWNpZmljIGRhdGEgc3VjaCBhcyB0ZW1wb3JhbCBpZC4K
KyAgLy8gU29tZSBmaWVsZHMgb2YgdGhpcyBzdHJ1Y3QgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHBv
cHVsYXRlZCBieSB0aGUgZW5jb2RlciwKKyAgLy8gY2hlY2sgYmVmb3JlIG92ZXJ3cml0aW5nLgor
ICAvLyBJZiB8c2l6ZV9ieXRlc3wgPiAwLCB8cXB8IHNob3VsZCBpbmRpY2F0ZSB0aGUgZnJhbWUt
bGV2ZWwgUVAgdGhpcyBmcmFtZSB3YXMKKyAgLy8gZW5jb2RlZCBhdC4gSWYgdGhlIGVuY29kZXIg
ZG9lcyBub3Qgc3VwcG9ydCBleHRyYWN0aW5nIHRoaXMsIHxxcHwgc2hvdWxkIGJlCisgIC8vIHNl
dCB0byAwLgorICB2aXJ0dWFsIHZvaWQgT25FbmNvZGVEb25lKHVpbnQzMl90IHJ0cF90aW1lc3Rh
bXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemVfYnl0ZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19rZXlmcmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgcXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZWNT
cGVjaWZpY0luZm9WUDgqIHZwOF9pbmZvKSA9IDA7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCisKKyNlbmRpZiAgLy8gQVBJX1ZJREVPX0NPREVDU19WUDhfVEVNUE9SQUxfTEFZRVJTX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2F1ZGlvL0JVSUxELmduCmluZGV4IDkxY2VjZTkzY2I5YWFlNTBhYjUxYWJhNjQ1MzkxZGU1MzVk
MTUzZDEuLmMwNDVhZjYzNzY1MWQzN2U4ODFhZTMxYTg5ZDcyMzdiYmZlOTZiNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL0JVSUxE
LmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlv
L0JVSUxELmduCkBAIC0yNiwxOSArMjYsMTMgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpbyIp
IHsKICAgICAiYXVkaW9fdHJhbnNwb3J0X2ltcGwuaCIsCiAgICAgImNoYW5uZWxfcmVjZWl2ZS5j
YyIsCiAgICAgImNoYW5uZWxfcmVjZWl2ZS5oIiwKLSAgICAiY2hhbm5lbF9yZWNlaXZlX3Byb3h5
LmNjIiwKLSAgICAiY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmgiLAogICAgICJjaGFubmVsX3NlbmQu
Y2MiLAogICAgICJjaGFubmVsX3NlbmQuaCIsCi0gICAgImNoYW5uZWxfc2VuZF9wcm94eS5jYyIs
Ci0gICAgImNoYW5uZWxfc2VuZF9wcm94eS5oIiwKICAgICAiY29udmVyc2lvbi5oIiwKICAgICAi
bnVsbF9hdWRpb19wb2xsZXIuY2MiLAogICAgICJudWxsX2F1ZGlvX3BvbGxlci5oIiwKICAgICAi
cmVtaXhfcmVzYW1wbGUuY2MiLAogICAgICJyZW1peF9yZXNhbXBsZS5oIiwKLSAgICAidGltZV9p
bnRlcnZhbC5jYyIsCi0gICAgInRpbWVfaW50ZXJ2YWwuaCIsCiAgICAgInRyYW5zcG9ydF9mZWVk
YmFja19wYWNrZXRfbG9zc190cmFja2VyLmNjIiwKICAgICAidHJhbnNwb3J0X2ZlZWRiYWNrX3Bh
Y2tldF9sb3NzX3RyYWNrZXIuaCIsCiAgIF0KQEAgLTQ5LDcgKzQzLDYgQEAgcnRjX3N0YXRpY19s
aWJyYXJ5KCJhdWRpbyIpIHsKICAgfQogCiAgIGRlcHMgPSBbCi0gICAgIi4uOndlYnJ0Y19jb21t
b24iLAogICAgICIuLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uL2FwaTpjYWxsX2FwaSIsCiAg
ICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKQEAgLTY1LDEyICs1OCwx
NCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvIikgewogICAgICIuLi9jb21tb25fYXVkaW86
Y29tbW9uX2F1ZGlvX2MiLAogICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9hdWRpbyIsCiAgICAg
Ii4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAorICAgICIuLi9sb2dnaW5nOnJ0Y19zdHJl
YW1fY29uZmlnIiwKICAgICAiLi4vbW9kdWxlcy9hdWRpb19jb2RpbmciLAorICAgICIuLi9tb2R1
bGVzL2F1ZGlvX2NvZGluZzphdWRpb19lbmNvZGVyX2NuZyIsCiAgICAgIi4uL21vZHVsZXMvYXVk
aW9fY29kaW5nOmF1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uIiwKICAgICAiLi4vbW9kdWxlcy9hdWRp
b19jb2Rpbmc6YXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZyIsCi0gICAgIi4uL21vZHVsZXMv
YXVkaW9fY29kaW5nOmNuZyIsCiAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlIiwKICAgICAi
Li4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nIiwKKyAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nOmFwaSIsCiAgICAgIi4uL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyOmJpdHJhdGVf
Y29udHJvbGxlciIsCiAgICAgIi4uL21vZHVsZXMvcGFjaW5nOnBhY2luZyIsCiAgICAgIi4uL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yOnJlbW90ZV9iaXRyYXRlX2VzdGltYXRvciIs
CkBAIC0xMjgsMjIgKzEyMywzNCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJt
b2NrX3ZvZV9jaGFubmVsX3Byb3h5LmgiLAogICAgICAgInJlbWl4X3Jlc2FtcGxlX3VuaXR0ZXN0
LmNjIiwKICAgICAgICJ0ZXN0L2F1ZGlvX3N0YXRzX3Rlc3QuY2MiLAotICAgICAgInRpbWVfaW50
ZXJ2YWxfdW5pdHRlc3QuY2MiLAorICAgICAgInRlc3QvbWVkaWFfdHJhbnNwb3J0X3Rlc3QuY2Mi
LAogICAgICAgInRyYW5zcG9ydF9mZWVkYmFja19wYWNrZXRfbG9zc190cmFja2VyX3VuaXR0ZXN0
LmNjIiwKICAgICBdCiAgICAgZGVwcyA9IFsKICAgICAgICI6YXVkaW8iLAogICAgICAgIjphdWRp
b19lbmRfdG9fZW5kX3Rlc3QiLAorICAgICAgIi4uL2FwaTpsb29wYmFja19tZWRpYV90cmFuc3Bv
cnQiLAogICAgICAgIi4uL2FwaTptb2NrX2F1ZGlvX21peGVyIiwKKyAgICAgICIuLi9hcGk6bW9j
a19mcmFtZV9kZWNyeXB0b3IiLAorICAgICAgIi4uL2FwaTptb2NrX2ZyYW1lX2VuY3J5cHRvciIs
CiAgICAgICAiLi4vYXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCisgICAgICAiLi4vYXBpL2F1
ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKKyAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNz
L29wdXM6YXVkaW9fZGVjb2Rlcl9vcHVzIiwKKyAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzL29w
dXM6YXVkaW9fZW5jb2Rlcl9vcHVzIiwKICAgICAgICIuLi9hcGkvdW5pdHM6dGltZV9kZWx0YSIs
CisgICAgICAiLi4vY2FsbDptb2NrX2JpdHJhdGVfYWxsb2NhdG9yIiwKICAgICAgICIuLi9jYWxs
Om1vY2tfY2FsbF9pbnRlcmZhY2VzIiwKICAgICAgICIuLi9jYWxsOm1vY2tfcnRwX2ludGVyZmFj
ZXMiLAogICAgICAgIi4uL2NhbGw6cnRwX2ludGVyZmFjZXMiLAogICAgICAgIi4uL2NhbGw6cnRw
X3JlY2VpdmVyIiwKICAgICAgICIuLi9jb21tb25fYXVkaW8iLAogICAgICAgIi4uL2xvZ2dpbmc6
bW9ja3MiLAorICAgICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAogICAgICAgIi4u
L21vZHVsZXMvYXVkaW9fZGV2aWNlOm1vY2tfYXVkaW9fZGV2aWNlIiwKKyAgICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCisKKyAgICAgICMgRm9yIFRlc3RBdWRpb0Rldmlj
ZU1vZHVsZQorICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZV9pbXBs
IiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX21peGVyOmF1ZGlvX21peGVyX2ltcGwiLAogICAg
ICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nX3N0YXRpc3Rp
Y3MiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzptb2NrcyIsCkBAIC0xNTEs
OSArMTU4LDkgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vbW9kdWxlcy9w
YWNpbmc6cGFjaW5nIiwKICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOm1vY2tfcnRwX3J0Y3Ai
LAogICAgICAgIi4uL21vZHVsZXMvcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKKyAgICAgICIu
Li9tb2R1bGVzL3V0aWxpdHkiLAogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgICAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCiAg
ICAgICAiLi4vcnRjX2Jhc2U6c2FmZV9jb21wYXJlIiwKICAgICAgICIuLi9zeXN0ZW1fd3JhcHBl
cnM6c3lzdGVtX3dyYXBwZXJzIiwKQEAgLTI2NSw2ICsyNzIsNyBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICAgICIuLi90ZXN0OnNpbmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlIiwKICAg
ICAgICIuLi90ZXN0OnRlc3RfY29tbW9uIiwKICAgICAgICIuLi90ZXN0OnRlc3RfbWFpbiIsCisg
ICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCiAg
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgICBdCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9h
dWRpb19yZWNlaXZlX3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmNjCmluZGV4IDU2M2U4YTAzNmEz
MDNmZGU3ODc5Y2FlZGE2YzUyM2I4YzJkMDQzYjkuLjhkNGFmZTA4ZTM3NjdjYmViYjY0ZDZkYmRl
NGE3MmNkMjM2MzJhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3Ry
ZWFtLmNjCkBAIC0xMywxNCArMTMsMTcgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8
dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFw
aS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQu
aCIKICNpbmNsdWRlICJhcGkvY2FsbC9hdWRpb19zaW5rLmgiCisjaW5jbHVkZSAiYXBpL3J0cHBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19zZW5kX3N0cmVhbS5oIgogI2luY2x1
ZGUgImF1ZGlvL2F1ZGlvX3N0YXRlLmgiCi0jaW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9yZWNlaXZl
X3Byb3h5LmgiCisjaW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9yZWNlaXZlLmgiCiAjaW5jbHVkZSAi
YXVkaW8vY29udmVyc2lvbi5oIgorI2luY2x1ZGUgImNhbGwvcnRwX2NvbmZpZy5oIgogI2luY2x1
ZGUgImNhbGwvcnRwX3N0cmVhbV9yZWNlaXZlcl9jb250cm9sbGVyX2ludGVyZmFjZS5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvcmVtb3RlX2Jp
dHJhdGVfZXN0aW1hdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0
cF9ydGNwLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIu
aCIKQEAgLTUzLDYgKzU2LDcgQEAgc3RkOjpzdHJpbmcgQXVkaW9SZWNlaXZlU3RyZWFtOjpDb25m
aWc6OlRvU3RyaW5nKCkgY29uc3QgewogICBzcyA8PCAie3J0cDogIiA8PCBydHAuVG9TdHJpbmco
KTsKICAgc3MgPDwgIiwgcnRjcF9zZW5kX3RyYW5zcG9ydDogIgogICAgICA8PCAocnRjcF9zZW5k
X3RyYW5zcG9ydCA/ICIoVHJhbnNwb3J0KSIgOiAibnVsbCIpOworICBzcyA8PCAiLCBtZWRpYV90
cmFuc3BvcnQ6ICIgPDwgKG1lZGlhX3RyYW5zcG9ydCA/ICIoVHJhbnNwb3J0KSIgOiAibnVsbCIp
OwogICBpZiAoIXN5bmNfZ3JvdXAuZW1wdHkoKSkgewogICAgIHNzIDw8ICIsIHN5bmNfZ3JvdXA6
ICIgPDwgc3luY19ncm91cDsKICAgfQpAQCAtNjIsNyArNjYsNyBAQCBzdGQ6OnN0cmluZyBBdWRp
b1JlY2VpdmVTdHJlYW06OkNvbmZpZzo6VG9TdHJpbmcoKSBjb25zdCB7CiAKIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CiBuYW1lc3BhY2Ugewotc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFJlY2Vp
dmVQcm94eT4gQ3JlYXRlQ2hhbm5lbEFuZFByb3h5KAorc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hh
bm5lbFJlY2VpdmVJbnRlcmZhY2U+IENyZWF0ZUNoYW5uZWxSZWNlaXZlKAogICAgIHdlYnJ0Yzo6
QXVkaW9TdGF0ZSogYXVkaW9fc3RhdGUsCiAgICAgUHJvY2Vzc1RocmVhZCogbW9kdWxlX3Byb2Nl
c3NfdGhyZWFkLAogICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFtOjpDb25maWcm
IGNvbmZpZywKQEAgLTcwLDEzICs3NCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVs
UmVjZWl2ZVByb3h5PiBDcmVhdGVDaGFubmVsQW5kUHJveHkoCiAgIFJUQ19EQ0hFQ0soYXVkaW9f
c3RhdGUpOwogICBpbnRlcm5hbDo6QXVkaW9TdGF0ZSogaW50ZXJuYWxfYXVkaW9fc3RhdGUgPQog
ICAgICAgc3RhdGljX2Nhc3Q8aW50ZXJuYWw6OkF1ZGlvU3RhdGUqPihhdWRpb19zdGF0ZSk7Ci0g
IHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTx2b2U6OkNoYW5uZWxSZWNlaXZlUHJveHk+KAotICAg
ICAgYWJzbDo6bWFrZV91bmlxdWU8dm9lOjpDaGFubmVsUmVjZWl2ZT4oCi0gICAgICAgICAgbW9k
dWxlX3Byb2Nlc3NfdGhyZWFkLCBpbnRlcm5hbF9hdWRpb19zdGF0ZS0+YXVkaW9fZGV2aWNlX21v
ZHVsZSgpLAotICAgICAgICAgIGNvbmZpZy5ydGNwX3NlbmRfdHJhbnNwb3J0LCBldmVudF9sb2cs
IGNvbmZpZy5ydHAucmVtb3RlX3NzcmMsCi0gICAgICAgICAgY29uZmlnLmppdHRlcl9idWZmZXJf
bWF4X3BhY2tldHMsCi0gICAgICAgICAgY29uZmlnLmppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVy
YXRlLCBjb25maWcuZGVjb2Rlcl9mYWN0b3J5LAotICAgICAgICAgIGNvbmZpZy5jb2RlY19wYWly
X2lkLCBjb25maWcuZnJhbWVfZGVjcnlwdG9yKSk7CisgIHJldHVybiB2b2U6OkNyZWF0ZUNoYW5u
ZWxSZWNlaXZlKAorICAgICAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLCBpbnRlcm5hbF9hdWRpb19z
dGF0ZS0+YXVkaW9fZGV2aWNlX21vZHVsZSgpLAorICAgICAgY29uZmlnLm1lZGlhX3RyYW5zcG9y
dCwgY29uZmlnLnJ0Y3Bfc2VuZF90cmFuc3BvcnQsIGV2ZW50X2xvZywKKyAgICAgIGNvbmZpZy5y
dHAucmVtb3RlX3NzcmMsIGNvbmZpZy5qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzLAorICAgICAg
Y29uZmlnLmppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlLCBjb25maWcuaml0dGVyX2J1ZmZl
cl9taW5fZGVsYXlfbXMsCisgICAgICBjb25maWcuZGVjb2Rlcl9mYWN0b3J5LCBjb25maWcuY29k
ZWNfcGFpcl9pZCwgY29uZmlnLmZyYW1lX2RlY3J5cHRvciwKKyAgICAgIGNvbmZpZy5jcnlwdG9f
b3B0aW9ucyk7CiB9CiB9ICAvLyBuYW1lc3BhY2UKIApAQCAtOTIsMTAgKzk2LDEwIEBAIEF1ZGlv
UmVjZWl2ZVN0cmVhbTo6QXVkaW9SZWNlaXZlU3RyZWFtKAogICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBldmVudF9sb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAg
Q3JlYXRlQ2hhbm5lbEFuZFByb3h5KGF1ZGlvX3N0YXRlLmdldCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfbG9nKSkg
e30KKyAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVDaGFubmVsUmVjZWl2ZShhdWRpb19z
dGF0ZS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50X2xvZykpIHt9CiAKIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6QXVkaW9S
ZWNlaXZlU3RyZWFtKAogICAgIFJ0cFN0cmVhbVJlY2VpdmVyQ29udHJvbGxlckludGVyZmFjZSog
cmVjZWl2ZXJfY29udHJvbGxlciwKQEAgLTEwMywyNSArMTA3LDI2IEBAIEF1ZGlvUmVjZWl2ZVN0
cmVhbTo6QXVkaW9SZWNlaXZlU3RyZWFtKAogICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9SZWNlaXZl
U3RyZWFtOjpDb25maWcmIGNvbmZpZywKICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1N0YXRlPiYgYXVkaW9fc3RhdGUsCiAgICAgd2VicnRjOjpSdGNFdmVudExvZyog
ZXZlbnRfbG9nLAotICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxSZWNlaXZlUHJveHk+
IGNoYW5uZWxfcHJveHkpCi0gICAgOiBhdWRpb19zdGF0ZV8oYXVkaW9fc3RhdGUpLCBjaGFubmVs
X3Byb3h5XyhzdGQ6Om1vdmUoY2hhbm5lbF9wcm94eSkpIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
dm9lOjpDaGFubmVsUmVjZWl2ZUludGVyZmFjZT4gY2hhbm5lbF9yZWNlaXZlKQorICAgIDogYXVk
aW9fc3RhdGVfKGF1ZGlvX3N0YXRlKSwgY2hhbm5lbF9yZWNlaXZlXyhzdGQ6Om1vdmUoY2hhbm5l
bF9yZWNlaXZlKSkgewogICBSVENfTE9HKExTX0lORk8pIDw8ICJBdWRpb1JlY2VpdmVTdHJlYW06
ICIgPDwgY29uZmlnLnJ0cC5yZW1vdGVfc3NyYzsKLSAgUlRDX0RDSEVDSyhyZWNlaXZlcl9jb250
cm9sbGVyKTsKLSAgUlRDX0RDSEVDSyhwYWNrZXRfcm91dGVyKTsKICAgUlRDX0RDSEVDSyhjb25m
aWcuZGVjb2Rlcl9mYWN0b3J5KTsKICAgUlRDX0RDSEVDSyhjb25maWcucnRjcF9zZW5kX3RyYW5z
cG9ydCk7CiAgIFJUQ19EQ0hFQ0soYXVkaW9fc3RhdGVfKTsKLSAgUlRDX0RDSEVDSyhjaGFubmVs
X3Byb3h5Xyk7CisgIFJUQ19EQ0hFQ0soY2hhbm5lbF9yZWNlaXZlXyk7CiAKICAgbW9kdWxlX3By
b2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZyb21UaHJlYWQoKTsKIAotICAvLyBDb25maWd1
cmUgYmFuZHdpZHRoIGVzdGltYXRpb24uCi0gIGNoYW5uZWxfcHJveHlfLT5SZWdpc3RlclJlY2Vp
dmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKHBhY2tldF9yb3V0ZXIpOwotCi0gIC8vIFJlZ2lz
dGVyIHdpdGggdHJhbnNwb3J0LgotICBydHBfc3RyZWFtX3JlY2VpdmVyXyA9IHJlY2VpdmVyX2Nv
bnRyb2xsZXItPkNyZWF0ZVJlY2VpdmVyKAotICAgICAgY29uZmlnLnJ0cC5yZW1vdGVfc3NyYywg
Y2hhbm5lbF9wcm94eV8uZ2V0KCkpOworICBpZiAoIWNvbmZpZy5tZWRpYV90cmFuc3BvcnQpIHsK
KyAgICBSVENfRENIRUNLKHJlY2VpdmVyX2NvbnRyb2xsZXIpOworICAgIFJUQ19EQ0hFQ0socGFj
a2V0X3JvdXRlcik7CisgICAgLy8gQ29uZmlndXJlIGJhbmR3aWR0aCBlc3RpbWF0aW9uLgorICAg
IGNoYW5uZWxfcmVjZWl2ZV8tPlJlZ2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVj
dHMocGFja2V0X3JvdXRlcik7CiAKKyAgICAvLyBSZWdpc3RlciB3aXRoIHRyYW5zcG9ydC4KKyAg
ICBydHBfc3RyZWFtX3JlY2VpdmVyXyA9IHJlY2VpdmVyX2NvbnRyb2xsZXItPkNyZWF0ZVJlY2Vp
dmVyKAorICAgICAgICBjb25maWcucnRwLnJlbW90ZV9zc3JjLCBjaGFubmVsX3JlY2VpdmVfLmdl
dCgpKTsKKyAgfQogICBDb25maWd1cmVTdHJlYW0odGhpcywgY29uZmlnLCB0cnVlKTsKIH0KIApA
QCAtMTI5LDggKzEzNCwxMCBAQCBBdWRpb1JlY2VpdmVTdHJlYW06On5BdWRpb1JlY2VpdmVTdHJl
YW0oKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAg
UlRDX0xPRyhMU19JTkZPKSA8PCAifkF1ZGlvUmVjZWl2ZVN0cmVhbTogIiA8PCBjb25maWdfLnJ0
cC5yZW1vdGVfc3NyYzsKICAgU3RvcCgpOwotICBjaGFubmVsX3Byb3h5Xy0+RGlzYXNzb2NpYXRl
U2VuZENoYW5uZWwoKTsKLSAgY2hhbm5lbF9wcm94eV8tPlJlc2V0UmVjZWl2ZXJDb25nZXN0aW9u
Q29udHJvbE9iamVjdHMoKTsKKyAgY2hhbm5lbF9yZWNlaXZlXy0+U2V0QXNzb2NpYXRlZFNlbmRD
aGFubmVsKG51bGxwdHIpOworICBpZiAoIWNvbmZpZ18ubWVkaWFfdHJhbnNwb3J0KSB7CisgICAg
Y2hhbm5lbF9yZWNlaXZlXy0+UmVzZXRSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygp
OworICB9CiB9CiAKIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpSZWNvbmZpZ3VyZSgKQEAgLTE0
NCw3ICsxNTEsNyBAQCB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6U3RhcnQoKSB7CiAgIGlmIChw
bGF5aW5nXykgewogICAgIHJldHVybjsKICAgfQotICBjaGFubmVsX3Byb3h5Xy0+U3RhcnRQbGF5
b3V0KCk7CisgIGNoYW5uZWxfcmVjZWl2ZV8tPlN0YXJ0UGxheW91dCgpOwogICBwbGF5aW5nXyA9
IHRydWU7CiAgIGF1ZGlvX3N0YXRlKCktPkFkZFJlY2VpdmluZ1N0cmVhbSh0aGlzKTsKIH0KQEAg
LTE1NCw3ICsxNjEsNyBAQCB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6U3RvcCgpIHsKICAgaWYg
KCFwbGF5aW5nXykgewogICAgIHJldHVybjsKICAgfQotICBjaGFubmVsX3Byb3h5Xy0+U3RvcFBs
YXlvdXQoKTsKKyAgY2hhbm5lbF9yZWNlaXZlXy0+U3RvcFBsYXlvdXQoKTsKICAgcGxheWluZ18g
PSBmYWxzZTsKICAgYXVkaW9fc3RhdGUoKS0+UmVtb3ZlUmVjZWl2aW5nU3RyZWFtKHRoaXMpOwog
fQpAQCAtMTY1LDExICsxNzIsMTEgQEAgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OlN0YXRz
IEF1ZGlvUmVjZWl2ZVN0cmVhbTo6R2V0U3RhdHMoKSBjb25zdCB7CiAgIHN0YXRzLnJlbW90ZV9z
c3JjID0gY29uZmlnXy5ydHAucmVtb3RlX3NzcmM7CiAKICAgd2VicnRjOjpDYWxsUmVjZWl2ZVN0
YXRpc3RpY3MgY2FsbF9zdGF0cyA9Ci0gICAgICBjaGFubmVsX3Byb3h5Xy0+R2V0UlRDUFN0YXRp
c3RpY3MoKTsKKyAgICAgIGNoYW5uZWxfcmVjZWl2ZV8tPkdldFJUQ1BTdGF0aXN0aWNzKCk7CiAg
IC8vIFRPRE8oc29sZW5iZXJnKTogRG9uJ3QgcmV0dXJuIGhlcmUgaWYgd2UgY2FuJ3QgZ2V0IHRo
ZSBjb2RlYyAtIHJldHVybiB0aGUKICAgLy8gICAgICAgICAgICAgICAgICBzdGF0cyB3ZSAqY2Fu
KiBnZXQuCiAgIHdlYnJ0Yzo6Q29kZWNJbnN0IGNvZGVjX2luc3QgPSB7MH07Ci0gIGlmICghY2hh
bm5lbF9wcm94eV8tPkdldFJlY0NvZGVjKCZjb2RlY19pbnN0KSkgeworICBpZiAoIWNoYW5uZWxf
cmVjZWl2ZV8tPkdldFJlY0NvZGVjKCZjb2RlY19pbnN0KSkgewogICAgIHJldHVybiBzdGF0czsK
ICAgfQogCkBAIC0xODYsMTMgKzE5MywxMyBAQCB3ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0cmVhbTo6
U3RhdHMgQXVkaW9SZWNlaXZlU3RyZWFtOjpHZXRTdGF0cygpIGNvbnN0IHsKICAgaWYgKGNvZGVj
X2luc3QucGxmcmVxIC8gMTAwMCA+IDApIHsKICAgICBzdGF0cy5qaXR0ZXJfbXMgPSBjYWxsX3N0
YXRzLmppdHRlclNhbXBsZXMgLyAoY29kZWNfaW5zdC5wbGZyZXEgLyAxMDAwKTsKICAgfQotICBz
dGF0cy5kZWxheV9lc3RpbWF0ZV9tcyA9IGNoYW5uZWxfcHJveHlfLT5HZXREZWxheUVzdGltYXRl
KCk7Ci0gIHN0YXRzLmF1ZGlvX2xldmVsID0gY2hhbm5lbF9wcm94eV8tPkdldFNwZWVjaE91dHB1
dExldmVsRnVsbFJhbmdlKCk7Ci0gIHN0YXRzLnRvdGFsX291dHB1dF9lbmVyZ3kgPSBjaGFubmVs
X3Byb3h5Xy0+R2V0VG90YWxPdXRwdXRFbmVyZ3koKTsKLSAgc3RhdHMudG90YWxfb3V0cHV0X2R1
cmF0aW9uID0gY2hhbm5lbF9wcm94eV8tPkdldFRvdGFsT3V0cHV0RHVyYXRpb24oKTsKKyAgc3Rh
dHMuZGVsYXlfZXN0aW1hdGVfbXMgPSBjaGFubmVsX3JlY2VpdmVfLT5HZXREZWxheUVzdGltYXRl
KCk7CisgIHN0YXRzLmF1ZGlvX2xldmVsID0gY2hhbm5lbF9yZWNlaXZlXy0+R2V0U3BlZWNoT3V0
cHV0TGV2ZWxGdWxsUmFuZ2UoKTsKKyAgc3RhdHMudG90YWxfb3V0cHV0X2VuZXJneSA9IGNoYW5u
ZWxfcmVjZWl2ZV8tPkdldFRvdGFsT3V0cHV0RW5lcmd5KCk7CisgIHN0YXRzLnRvdGFsX291dHB1
dF9kdXJhdGlvbiA9IGNoYW5uZWxfcmVjZWl2ZV8tPkdldFRvdGFsT3V0cHV0RHVyYXRpb24oKTsK
IAogICAvLyBHZXQgaml0dGVyIGJ1ZmZlciBhbmQgdG90YWwgZGVsYXkgKGFsZyArIGppdHRlciAr
IHBsYXlvdXQpIHN0YXRzLgotICBhdXRvIG5zID0gY2hhbm5lbF9wcm94eV8tPkdldE5ldHdvcmtT
dGF0aXN0aWNzKCk7CisgIGF1dG8gbnMgPSBjaGFubmVsX3JlY2VpdmVfLT5HZXROZXR3b3JrU3Rh
dGlzdGljcygpOwogICBzdGF0cy5qaXR0ZXJfYnVmZmVyX21zID0gbnMuY3VycmVudEJ1ZmZlclNp
emU7CiAgIHN0YXRzLmppdHRlcl9idWZmZXJfcHJlZmVycmVkX21zID0gbnMucHJlZmVycmVkQnVm
ZmVyU2l6ZTsKICAgc3RhdHMudG90YWxfc2FtcGxlc19yZWNlaXZlZCA9IG5zLnRvdGFsU2FtcGxl
c1JlY2VpdmVkOwpAQCAtMjA3LDggKzIxNCwxMCBAQCB3ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0cmVh
bTo6U3RhdHMgQXVkaW9SZWNlaXZlU3RyZWFtOjpHZXRTdGF0cygpIGNvbnN0IHsKICAgc3RhdHMu
c2Vjb25kYXJ5X2Rpc2NhcmRlZF9yYXRlID0gUTE0VG9GbG9hdChucy5jdXJyZW50U2Vjb25kYXJ5
RGlzY2FyZGVkUmF0ZSk7CiAgIHN0YXRzLmFjY2VsZXJhdGVfcmF0ZSA9IFExNFRvRmxvYXQobnMu
Y3VycmVudEFjY2VsZXJhdGVSYXRlKTsKICAgc3RhdHMucHJlZW1wdGl2ZV9leHBhbmRfcmF0ZSA9
IFExNFRvRmxvYXQobnMuY3VycmVudFByZWVtcHRpdmVSYXRlKTsKKyAgc3RhdHMuaml0dGVyX2J1
ZmZlcl9mbHVzaGVzID0gbnMucGFja2V0QnVmZmVyRmx1c2hlczsKKyAgc3RhdHMuZGVsYXllZF9w
YWNrZXRfb3V0YWdlX3NhbXBsZXMgPSBucy5kZWxheWVkUGFja2V0T3V0YWdlU2FtcGxlczsKIAot
ICBhdXRvIGRzID0gY2hhbm5lbF9wcm94eV8tPkdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoKTsK
KyAgYXV0byBkcyA9IGNoYW5uZWxfcmVjZWl2ZV8tPkdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3Mo
KTsKICAgc3RhdHMuZGVjb2RpbmdfY2FsbHNfdG9fc2lsZW5jZV9nZW5lcmF0b3IgPSBkcy5jYWxs
c190b19zaWxlbmNlX2dlbmVyYXRvcjsKICAgc3RhdHMuZGVjb2RpbmdfY2FsbHNfdG9fbmV0ZXEg
PSBkcy5jYWxsc190b19uZXRlcTsKICAgc3RhdHMuZGVjb2Rpbmdfbm9ybWFsID0gZHMuZGVjb2Rl
ZF9ub3JtYWw7CkBAIC0yMjIsMjMgKzIzMSwyMyBAQCB3ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0cmVh
bTo6U3RhdHMgQXVkaW9SZWNlaXZlU3RyZWFtOjpHZXRTdGF0cygpIGNvbnN0IHsKIAogdm9pZCBB
dWRpb1JlY2VpdmVTdHJlYW06OlNldFNpbmsoQXVkaW9TaW5rSW50ZXJmYWNlKiBzaW5rKSB7CiAg
IFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKLSAgY2hhbm5lbF9w
cm94eV8tPlNldFNpbmsoc2luayk7CisgIGNoYW5uZWxfcmVjZWl2ZV8tPlNldFNpbmsoc2luayk7
CiB9CiAKIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpTZXRHYWluKGZsb2F0IGdhaW4pIHsKICAg
UlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwotICBjaGFubmVsX3By
b3h5Xy0+U2V0Q2hhbm5lbE91dHB1dFZvbHVtZVNjYWxpbmcoZ2Fpbik7CisgIGNoYW5uZWxfcmVj
ZWl2ZV8tPlNldENoYW5uZWxPdXRwdXRWb2x1bWVTY2FsaW5nKGdhaW4pOwogfQogCiBzdGQ6OnZl
Y3RvcjxSdHBTb3VyY2U+IEF1ZGlvUmVjZWl2ZVN0cmVhbTo6R2V0U291cmNlcygpIGNvbnN0IHsK
ICAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwotICByZXR1cm4g
Y2hhbm5lbF9wcm94eV8tPkdldFNvdXJjZXMoKTsKKyAgcmV0dXJuIGNoYW5uZWxfcmVjZWl2ZV8t
PkdldFNvdXJjZXMoKTsKIH0KIAogQXVkaW9NaXhlcjo6U291cmNlOjpBdWRpb0ZyYW1lSW5mbyBB
dWRpb1JlY2VpdmVTdHJlYW06OkdldEF1ZGlvRnJhbWVXaXRoSW5mbygKICAgICBpbnQgc2FtcGxl
X3JhdGVfaHosCiAgICAgQXVkaW9GcmFtZSogYXVkaW9fZnJhbWUpIHsKLSAgcmV0dXJuIGNoYW5u
ZWxfcHJveHlfLT5HZXRBdWRpb0ZyYW1lV2l0aEluZm8oc2FtcGxlX3JhdGVfaHosIGF1ZGlvX2Zy
YW1lKTsKKyAgcmV0dXJuIGNoYW5uZWxfcmVjZWl2ZV8tPkdldEF1ZGlvRnJhbWVXaXRoSW5mbyhz
YW1wbGVfcmF0ZV9oeiwgYXVkaW9fZnJhbWUpOwogfQogCiBpbnQgQXVkaW9SZWNlaXZlU3RyZWFt
OjpTc3JjKCkgY29uc3QgewpAQCAtMjQ2LDcgKzI1NSw3IEBAIGludCBBdWRpb1JlY2VpdmVTdHJl
YW06OlNzcmMoKSBjb25zdCB7CiB9CiAKIGludCBBdWRpb1JlY2VpdmVTdHJlYW06OlByZWZlcnJl
ZFNhbXBsZVJhdGUoKSBjb25zdCB7Ci0gIHJldHVybiBjaGFubmVsX3Byb3h5Xy0+UHJlZmVycmVk
U2FtcGxlUmF0ZSgpOworICByZXR1cm4gY2hhbm5lbF9yZWNlaXZlXy0+UHJlZmVycmVkU2FtcGxl
UmF0ZSgpOwogfQogCiBpbnQgQXVkaW9SZWNlaXZlU3RyZWFtOjppZCgpIGNvbnN0IHsKQEAgLTI1
NiwzMiArMjY1LDI5IEBAIGludCBBdWRpb1JlY2VpdmVTdHJlYW06OmlkKCkgY29uc3QgewogCiBh
YnNsOjpvcHRpb25hbDxTeW5jYWJsZTo6SW5mbz4gQXVkaW9SZWNlaXZlU3RyZWFtOjpHZXRJbmZv
KCkgY29uc3QgewogICBSVENfRENIRUNLX1JVTl9PTigmbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2No
ZWNrZXJfKTsKLSAgYWJzbDo6b3B0aW9uYWw8U3luY2FibGU6OkluZm8+IGluZm8gPSBjaGFubmVs
X3Byb3h5Xy0+R2V0U3luY0luZm8oKTsKKyAgYWJzbDo6b3B0aW9uYWw8U3luY2FibGU6OkluZm8+
IGluZm8gPSBjaGFubmVsX3JlY2VpdmVfLT5HZXRTeW5jSW5mbygpOwogCiAgIGlmICghaW5mbykK
ICAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKIAotICBpbmZvLT5jdXJyZW50X2RlbGF5X21zID0g
Y2hhbm5lbF9wcm94eV8tPkdldERlbGF5RXN0aW1hdGUoKTsKKyAgaW5mby0+Y3VycmVudF9kZWxh
eV9tcyA9IGNoYW5uZWxfcmVjZWl2ZV8tPkdldERlbGF5RXN0aW1hdGUoKTsKICAgcmV0dXJuIGlu
Zm87CiB9CiAKIHVpbnQzMl90IEF1ZGlvUmVjZWl2ZVN0cmVhbTo6R2V0UGxheW91dFRpbWVzdGFt
cCgpIGNvbnN0IHsKICAgLy8gQ2FsbGVkIG9uIHZpZGVvIGNhcHR1cmUgdGhyZWFkLgotICByZXR1
cm4gY2hhbm5lbF9wcm94eV8tPkdldFBsYXlvdXRUaW1lc3RhbXAoKTsKKyAgcmV0dXJuIGNoYW5u
ZWxfcmVjZWl2ZV8tPkdldFBsYXlvdXRUaW1lc3RhbXAoKTsKIH0KIAogdm9pZCBBdWRpb1JlY2Vp
dmVTdHJlYW06OlNldE1pbmltdW1QbGF5b3V0RGVsYXkoaW50IGRlbGF5X21zKSB7CiAgIFJUQ19E
Q0hFQ0tfUlVOX09OKCZtb2R1bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl8pOwotICByZXR1cm4g
Y2hhbm5lbF9wcm94eV8tPlNldE1pbmltdW1QbGF5b3V0RGVsYXkoZGVsYXlfbXMpOworICByZXR1
cm4gY2hhbm5lbF9yZWNlaXZlXy0+U2V0TWluaW11bVBsYXlvdXREZWxheShkZWxheV9tcyk7CiB9
CiAKIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpBc3NvY2lhdGVTZW5kU3RyZWFtKEF1ZGlvU2Vu
ZFN0cmVhbSogc2VuZF9zdHJlYW0pIHsKICAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJl
YWRfY2hlY2tlcl8pOwotICBpZiAoc2VuZF9zdHJlYW0pIHsKLSAgICBjaGFubmVsX3Byb3h5Xy0+
QXNzb2NpYXRlU2VuZENoYW5uZWwoc2VuZF9zdHJlYW0tPkdldENoYW5uZWxQcm94eSgpKTsKLSAg
fSBlbHNlIHsKLSAgICBjaGFubmVsX3Byb3h5Xy0+RGlzYXNzb2NpYXRlU2VuZENoYW5uZWwoKTsK
LSAgfQorICBjaGFubmVsX3JlY2VpdmVfLT5TZXRBc3NvY2lhdGVkU2VuZENoYW5uZWwoCisgICAg
ICBzZW5kX3N0cmVhbSA/IHNlbmRfc3RyZWFtLT5HZXRDaGFubmVsKCkgOiBudWxscHRyKTsKICAg
YXNzb2NpYXRlZF9zZW5kX3N0cmVhbV8gPSBzZW5kX3N0cmVhbTsKIH0KIApAQCAtMjk0LDcgKzMw
MCw3IEBAIGJvb2wgQXVkaW9SZWNlaXZlU3RyZWFtOjpEZWxpdmVyUnRjcChjb25zdCB1aW50OF90
KiBwYWNrZXQsIHNpemVfdCBsZW5ndGgpIHsKICAgLy8gY2FsbHMgb24gdGhlIHdvcmtlciB0aHJl
YWQuIFdlIHNob3VsZCBtb3ZlIHRvd2FyZHMgYWx3YXlzIHVzaW5nIGEgbmV0d29yawogICAvLyB0
aHJlYWQuIFRoZW4gdGhpcyBjaGVjayBjYW4gYmUgZW5hYmxlZC4KICAgLy8gUlRDX0RDSEVDSygh
dGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHJldHVybiBjaGFubmVs
X3Byb3h5Xy0+UmVjZWl2ZWRSVENQUGFja2V0KHBhY2tldCwgbGVuZ3RoKTsKKyAgcmV0dXJuIGNo
YW5uZWxfcmVjZWl2ZV8tPlJlY2VpdmVkUlRDUFBhY2tldChwYWNrZXQsIGxlbmd0aCk7CiB9CiAK
IHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpPblJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNl
aXZlZCYgcGFja2V0KSB7CkBAIC0zMDIsNyArMzA4LDcgQEAgdm9pZCBBdWRpb1JlY2VpdmVTdHJl
YW06Ok9uUnRwUGFja2V0KGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIHsKICAgLy8g
Y2FsbHMgb24gdGhlIHdvcmtlciB0aHJlYWQuIFdlIHNob3VsZCBtb3ZlIHRvd2FyZHMgYWx3YXlz
IHVzaW5nIGEgbmV0d29yawogICAvLyB0aHJlYWQuIFRoZW4gdGhpcyBjaGVjayBjYW4gYmUgZW5h
YmxlZC4KICAgLy8gUlRDX0RDSEVDSyghdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJl
YWQoKSk7Ci0gIGNoYW5uZWxfcHJveHlfLT5PblJ0cFBhY2tldChwYWNrZXQpOworICBjaGFubmVs
X3JlY2VpdmVfLT5PblJ0cFBhY2tldChwYWNrZXQpOwogfQogCiBjb25zdCB3ZWJydGM6OkF1ZGlv
UmVjZWl2ZVN0cmVhbTo6Q29uZmlnJiBBdWRpb1JlY2VpdmVTdHJlYW06OmNvbmZpZygpIGNvbnN0
IHsKQEAgLTMyOCw3ICszMzQsNyBAQCB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlndXJl
U3RyZWFtKEF1ZGlvUmVjZWl2ZVN0cmVhbSogc3RyZWFtLAogICBSVENfTE9HKExTX0lORk8pIDw8
ICJBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZ3VyZVN0cmVhbTogIgogICAgICAgICAgICAgICAg
ICAgIDw8IG5ld19jb25maWcuVG9TdHJpbmcoKTsKICAgUlRDX0RDSEVDSyhzdHJlYW0pOwotICBj
b25zdCBhdXRvJiBjaGFubmVsX3Byb3h5ID0gc3RyZWFtLT5jaGFubmVsX3Byb3h5XzsKKyAgY29u
c3QgYXV0byYgY2hhbm5lbF9yZWNlaXZlID0gc3RyZWFtLT5jaGFubmVsX3JlY2VpdmVfOwogICBj
b25zdCBhdXRvJiBvbGRfY29uZmlnID0gc3RyZWFtLT5jb25maWdfOwogCiAgIC8vIENvbmZpZ3Vy
YXRpb24gcGFyYW1ldGVycyB3aGljaCBjYW5ub3QgYmUgY2hhbmdlZC4KQEAgLTM0Miw3ICszNDgs
NyBAQCB2b2lkIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlndXJlU3RyZWFtKEF1ZGlvUmVjZWl2
ZVN0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAgIG9sZF9jb25maWcuZGVjb2Rlcl9mYWN0b3J5
ID09IG5ld19jb25maWcuZGVjb2Rlcl9mYWN0b3J5KTsKIAogICBpZiAoZmlyc3RfdGltZSB8fCBv
bGRfY29uZmlnLnJ0cC5sb2NhbF9zc3JjICE9IG5ld19jb25maWcucnRwLmxvY2FsX3NzcmMpIHsK
LSAgICBjaGFubmVsX3Byb3h5LT5TZXRMb2NhbFNTUkMobmV3X2NvbmZpZy5ydHAubG9jYWxfc3Ny
Yyk7CisgICAgY2hhbm5lbF9yZWNlaXZlLT5TZXRMb2NhbFNTUkMobmV3X2NvbmZpZy5ydHAubG9j
YWxfc3NyYyk7CiAgIH0KIAogICBpZiAoIWZpcnN0X3RpbWUpIHsKQEAgLTM1NCwxMSArMzYwLDEx
IEBAIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpDb25maWd1cmVTdHJlYW0oQXVkaW9SZWNlaXZl
U3RyZWFtKiBzdHJlYW0sCiAgIC8vIHVzaW5nIHRoZSBhY3R1YWwgcGFja2V0IHNpemUgZm9yIHRo
ZSBjb25maWd1cmVkIGNvZGVjLgogICBpZiAoZmlyc3RfdGltZSB8fCBvbGRfY29uZmlnLnJ0cC5u
YWNrLnJ0cF9oaXN0b3J5X21zICE9CiAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfY29uZmln
LnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0TkFDS1N0
YXR1cyhuZXdfY29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zICE9IDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuZXdfY29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21z
IC8gMjApOworICAgIGNoYW5uZWxfcmVjZWl2ZS0+U2V0TkFDS1N0YXR1cyhuZXdfY29uZmlnLnJ0
cC5uYWNrLnJ0cF9oaXN0b3J5X21zICE9IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld19jb25maWcucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgLyAyMCk7CiAgIH0KICAg
aWYgKGZpcnN0X3RpbWUgfHwgb2xkX2NvbmZpZy5kZWNvZGVyX21hcCAhPSBuZXdfY29uZmlnLmRl
Y29kZXJfbWFwKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0UmVjZWl2ZUNvZGVjcyhuZXdfY29u
ZmlnLmRlY29kZXJfbWFwKTsKKyAgICBjaGFubmVsX3JlY2VpdmUtPlNldFJlY2VpdmVDb2RlY3Mo
bmV3X2NvbmZpZy5kZWNvZGVyX21hcCk7CiAgIH0KIAogICBzdHJlYW0tPmNvbmZpZ18gPSBuZXdf
Y29uZmlnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmgKaW5kZXgg
ZTk4MmIwNGQ1NGI4ZTdmMjczZjMzODk1OWQ4MjA2NzZhOGE5NGViNi4uODZiY2IxYzZhMmRiNDI1
ZWY0NmIyMzZlODZiNDI2YjA5ZTNkNzMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW0uaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19y
ZWNlaXZlX3N0cmVhbS5oCkBAIC0xOCw3ICsxOCw2IEBACiAjaW5jbHVkZSAiYXBpL3J0cF9oZWFk
ZXJzLmgiCiAjaW5jbHVkZSAiYXVkaW8vYXVkaW9fc3RhdGUuaCIKICNpbmNsdWRlICJjYWxsL2F1
ZGlvX3JlY2VpdmVfc3RyZWFtLmgiCi0jaW5jbHVkZSAiY2FsbC9ydHBfcGFja2V0X3NpbmtfaW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9zeW5jYWJsZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5o
IgpAQCAtMzIsNyArMzEsNyBAQCBjbGFzcyBSdHBTdHJlYW1SZWNlaXZlckNvbnRyb2xsZXJJbnRl
cmZhY2U7CiBjbGFzcyBSdHBTdHJlYW1SZWNlaXZlckludGVyZmFjZTsKIAogbmFtZXNwYWNlIHZv
ZSB7Ci1jbGFzcyBDaGFubmVsUmVjZWl2ZVByb3h5OworY2xhc3MgQ2hhbm5lbFJlY2VpdmVJbnRl
cmZhY2U7CiB9ICAvLyBuYW1lc3BhY2Ugdm9lCiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC00
OCwxMyArNDcsMTQgQEAgY2xhc3MgQXVkaW9SZWNlaXZlU3RyZWFtIGZpbmFsIDogcHVibGljIHdl
YnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2Vi
cnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyYgY29uZmlnLAogICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4mIGF1ZGlv
X3N0YXRlLAogICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpSdGNFdmVudExvZyogZXZlbnRf
bG9nKTsKLSAgLy8gRm9yIHVuaXQgdGVzdHMsIHdoaWNoIG5lZWQgdG8gc3VwcGx5IGEgbW9jayBj
aGFubmVsIHByb3h5LgotICBBdWRpb1JlY2VpdmVTdHJlYW0oUnRwU3RyZWFtUmVjZWl2ZXJDb250
cm9sbGVySW50ZXJmYWNlKiByZWNlaXZlcl9jb250cm9sbGVyLAotICAgICAgICAgICAgICAgICAg
ICAgUGFja2V0Um91dGVyKiBwYWNrZXRfcm91dGVyLAotICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyYgY29uZmlnLAotICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4m
IGF1ZGlvX3N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpSdGNFdmVudExvZyog
ZXZlbnRfbG9nLAotICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hh
bm5lbFJlY2VpdmVQcm94eT4gY2hhbm5lbF9wcm94eSk7CisgIC8vIEZvciB1bml0IHRlc3RzLCB3
aGljaCBuZWVkIHRvIHN1cHBseSBhIG1vY2sgY2hhbm5lbCByZWNlaXZlLgorICBBdWRpb1JlY2Vp
dmVTdHJlYW0oCisgICAgICBSdHBTdHJlYW1SZWNlaXZlckNvbnRyb2xsZXJJbnRlcmZhY2UqIHJl
Y2VpdmVyX2NvbnRyb2xsZXIsCisgICAgICBQYWNrZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXIsCisg
ICAgICBjb25zdCB3ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnJiBjb25maWcsCisg
ICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiYgYXVkaW9f
c3RhdGUsCisgICAgICB3ZWJydGM6OlJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCisgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsUmVjZWl2ZUludGVyZmFjZT4gY2hhbm5lbF9yZWNlaXZl
KTsKICAgfkF1ZGlvUmVjZWl2ZVN0cmVhbSgpIG92ZXJyaWRlOwogCiAgIC8vIHdlYnJ0Yzo6QXVk
aW9SZWNlaXZlU3RyZWFtIGltcGxlbWVudGF0aW9uLgpAQCAtMTAxLDcgKzEwMSw3IEBAIGNsYXNz
IEF1ZGlvUmVjZWl2ZVN0cmVhbSBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0
cmVhbSwKICAgcnRjOjpUaHJlYWRDaGVja2VyIG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2Vy
XzsKICAgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyBjb25maWdfOwogICBydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiBhdWRpb19zdGF0ZV87Ci0gIHN0ZDo6
dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxSZWNlaXZlUHJveHk+IGNoYW5uZWxfcHJveHlfOworICBj
b25zdCBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsUmVjZWl2ZUludGVyZmFjZT4gY2hhbm5l
bF9yZWNlaXZlXzsKICAgQXVkaW9TZW5kU3RyZWFtKiBhc3NvY2lhdGVkX3NlbmRfc3RyZWFtXyA9
IG51bGxwdHI7CiAKICAgYm9vbCBwbGF5aW5nXyBSVENfR1VBUkRFRF9CWSh3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfKSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW1fdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19y
ZWNlaXZlX3N0cmVhbV91bml0dGVzdC5jYwppbmRleCA5N2M0MmM0MzgzZjg0MzYzNDJiNDc3MDM2
ZjZkYzU3ZjA1OTc5NDMzLi43NDIyODEwODU2NjUxNTI3MjhlZmMyZDE3ODlhODNhNzEzNjU0Njk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbV91
bml0dGVzdC5jYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1
ZGUgImFwaS90ZXN0L21vY2tfYXVkaW9fbWl4ZXIuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2Nr
X2ZyYW1lX2RlY3J5cHRvci5oIgogI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFt
LmgiCiAjaW5jbHVkZSAiYXVkaW8vY29udmVyc2lvbi5oIgogI2luY2x1ZGUgImF1ZGlvL21vY2tf
dm9lX2NoYW5uZWxfcHJveHkuaCIKQEAgLTgyLDE2ICs4MywxNiBAQCBzdHJ1Y3QgQ29uZmlnSGVs
cGVyIHsKICAgICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDx0ZXN0aW5nOjpOaWNlTW9j
azxNb2NrQXVkaW9EZXZpY2VNb2R1bGU+PigpOwogICAgIGF1ZGlvX3N0YXRlXyA9IEF1ZGlvU3Rh
dGU6OkNyZWF0ZShjb25maWcpOwogCi0gICAgY2hhbm5lbF9wcm94eV8gPSBuZXcgdGVzdGluZzo6
U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFJlY2VpdmVQcm94eT4oKTsKLSAgICBFWFBFQ1RfQ0FMTCgq
Y2hhbm5lbF9wcm94eV8sIFNldExvY2FsU1NSQyhrTG9jYWxTc3JjKSkuVGltZXMoMSk7Ci0gICAg
RVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXROQUNLU3RhdHVzKHRydWUsIDE1KSkuVGlt
ZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLAorICAgIGNoYW5uZWxfcmVj
ZWl2ZV8gPSBuZXcgdGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFJlY2VpdmU+KCk7Cisg
ICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIFNldExvY2FsU1NSQyhrTG9jYWxTc3Jj
KSkuVGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIFNldE5BQ0tT
dGF0dXModHJ1ZSwgMTUpKS5UaW1lcygxKTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9yZWNl
aXZlXywKICAgICAgICAgICAgICAgICBSZWdpc3RlclJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xP
YmplY3RzKCZwYWNrZXRfcm91dGVyXykpCiAgICAgICAgIC5UaW1lcygxKTsKLSAgICBFWFBFQ1Rf
Q0FMTCgqY2hhbm5lbF9wcm94eV8sIFJlc2V0UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVj
dHMoKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9yZWNlaXZlXywgUmVzZXRSZWNlaXZlckNv
bmdlc3Rpb25Db250cm9sT2JqZWN0cygpKQogICAgICAgICAuVGltZXMoMSk7Ci0gICAgRVhQRUNU
X0NBTEwoKmNoYW5uZWxfcHJveHlfLCBEaXNhc3NvY2lhdGVTZW5kQ2hhbm5lbCgpKS5UaW1lcygx
KTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFNldFJlY2VpdmVDb2RlY3MoXykp
CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIFNldEFzc29jaWF0ZWRTZW5kQ2hh
bm5lbChudWxscHRyKSkuVGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2
ZV8sIFNldFJlY2VpdmVDb2RlY3MoXykpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShJbnZva2Uo
W10oY29uc3Qgc3RkOjptYXA8aW50LCBTZHBBdWRpb0Zvcm1hdD4mIGNvZGVjcykgewogICAgICAg
ICAgIEVYUEVDVF9USEFUKGNvZGVjcywgdGVzdGluZzo6SXNFbXB0eSgpKTsKICAgICAgICAgfSkp
OwpAQCAtMTEzLDMzICsxMTQsMzMgQEAgc3RydWN0IENvbmZpZ0hlbHBlciB7CiAgICAgICAgIG5l
dyBpbnRlcm5hbDo6QXVkaW9SZWNlaXZlU3RyZWFtKAogICAgICAgICAgICAgJnJ0cF9zdHJlYW1f
cmVjZWl2ZXJfY29udHJvbGxlcl8sICZwYWNrZXRfcm91dGVyXywgc3RyZWFtX2NvbmZpZ18sCiAg
ICAgICAgICAgICBhdWRpb19zdGF0ZV8sICZldmVudF9sb2dfLAotICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFJlY2VpdmVQcm94eT4oY2hhbm5lbF9wcm94eV8pKSk7Cisg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsUmVjZWl2ZUludGVyZmFjZT4o
Y2hhbm5lbF9yZWNlaXZlXykpKTsKICAgfQogCiAgIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmln
JiBjb25maWcoKSB7IHJldHVybiBzdHJlYW1fY29uZmlnXzsgfQogICBydGM6OnNjb3BlZF9yZWZw
dHI8TW9ja0F1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyKCkgeyByZXR1cm4gYXVkaW9fbWl4ZXJfOyB9
Ci0gIE1vY2tDaGFubmVsUmVjZWl2ZVByb3h5KiBjaGFubmVsX3Byb3h5KCkgeyByZXR1cm4gY2hh
bm5lbF9wcm94eV87IH0KKyAgTW9ja0NoYW5uZWxSZWNlaXZlKiBjaGFubmVsX3JlY2VpdmUoKSB7
IHJldHVybiBjaGFubmVsX3JlY2VpdmVfOyB9CiAKICAgdm9pZCBTZXR1cE1vY2tGb3JHZXRTdGF0
cygpIHsKICAgICB1c2luZyB0ZXN0aW5nOjpEb0FsbDsKICAgICB1c2luZyB0ZXN0aW5nOjpTZXRB
cmdQb2ludGVlOwogCi0gICAgQVNTRVJUX1RSVUUoY2hhbm5lbF9wcm94eV8pOwotICAgIEVYUEVD
VF9DQUxMKCpjaGFubmVsX3Byb3h5XywgR2V0UlRDUFN0YXRpc3RpY3MoKSkKKyAgICBBU1NFUlRf
VFJVRShjaGFubmVsX3JlY2VpdmVfKTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9yZWNlaXZl
XywgR2V0UlRDUFN0YXRpc3RpY3MoKSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybihrQ2FsbFN0
YXRzKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBHZXREZWxheUVzdGltYXRl
KCkpCisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIEdldERlbGF5RXN0aW1hdGUo
KSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybihrSml0dGVyQnVmZmVyRGVsYXkgKyBrUGxheW91
dEJ1ZmZlckRlbGF5KSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBHZXRTcGVl
Y2hPdXRwdXRMZXZlbEZ1bGxSYW5nZSgpKQorICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3JlY2Vp
dmVfLCBHZXRTcGVlY2hPdXRwdXRMZXZlbEZ1bGxSYW5nZSgpKQogICAgICAgICAuV2lsbE9uY2Uo
UmV0dXJuKGtTcGVlY2hPdXRwdXRMZXZlbCkpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3By
b3h5XywgR2V0VG90YWxPdXRwdXRFbmVyZ3koKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9y
ZWNlaXZlXywgR2V0VG90YWxPdXRwdXRFbmVyZ3koKSkKICAgICAgICAgLldpbGxPbmNlKFJldHVy
bihrVG90YWxPdXRwdXRFbmVyZ3kpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8s
IEdldFRvdGFsT3V0cHV0RHVyYXRpb24oKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9yZWNl
aXZlXywgR2V0VG90YWxPdXRwdXREdXJhdGlvbigpKQogICAgICAgICAuV2lsbE9uY2UoUmV0dXJu
KGtUb3RhbE91dHB1dER1cmF0aW9uKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlf
LCBHZXROZXR3b3JrU3RhdGlzdGljcygpKQorICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3JlY2Vp
dmVfLCBHZXROZXR3b3JrU3RhdGlzdGljcygpKQogICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKGtO
ZXR3b3JrU3RhdHMpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIEdldERlY29k
aW5nQ2FsbFN0YXRpc3RpY3MoKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9yZWNlaXZlXywg
R2V0RGVjb2RpbmdDYWxsU3RhdGlzdGljcygpKQogICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKGtB
dWRpb0RlY29kZVN0YXRzKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBHZXRS
ZWNDb2RlYyhfKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9yZWNlaXZlXywgR2V0UmVjQ29k
ZWMoXykpCiAgICAgICAgIC5XaWxsT25jZShEb0FsbChTZXRBcmdQb2ludGVlPDA+KGtDb2RlY0lu
c3QpLCBSZXR1cm4odHJ1ZSkpKTsKICAgfQogCkBAIC0xNDksNyArMTUwLDcgQEAgc3RydWN0IENv
bmZpZ0hlbHBlciB7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1N0YXRlPiBhdWRpb19zdGF0
ZV87CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNb2NrQXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXJfOwog
ICBBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyBzdHJlYW1fY29uZmlnXzsKLSAgdGVzdGluZzo6
U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFJlY2VpdmVQcm94eT4qIGNoYW5uZWxfcHJveHlfID0gbnVs
bHB0cjsKKyAgdGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFJlY2VpdmU+KiBjaGFubmVs
X3JlY2VpdmVfID0gbnVsbHB0cjsKICAgUnRwU3RyZWFtUmVjZWl2ZXJDb250cm9sbGVyIHJ0cF9z
dHJlYW1fcmVjZWl2ZXJfY29udHJvbGxlcl87CiAgIE1vY2tUcmFuc3BvcnQgcnRjcF9zZW5kX3Ry
YW5zcG9ydF87CiB9OwpAQCAtMjE2LDcgKzIxNyw3IEBAIFRFU1QoQXVkaW9SZWNlaXZlU3RyZWFt
VGVzdCwgQ29uZmlnVG9TdHJpbmcpIHsKICAgICAgICJ7cnRwOiB7cmVtb3RlX3NzcmM6IDEyMzQs
IGxvY2FsX3NzcmM6IDU2NzgsIHRyYW5zcG9ydF9jYzogb2ZmLCBuYWNrOiAiCiAgICAgICAie3J0
cF9oaXN0b3J5X21zOiAwfSwgZXh0ZW5zaW9uczogW3t1cmk6ICIKICAgICAgICJ1cm46aWV0Zjpw
YXJhbXM6cnRwLWhkcmV4dDpzc3JjLWF1ZGlvLWxldmVsLCBpZDogM31dfSwgIgotICAgICAgInJ0
Y3Bfc2VuZF90cmFuc3BvcnQ6IG51bGx9IiwKKyAgICAgICJydGNwX3NlbmRfdHJhbnNwb3J0OiBu
dWxsLCBtZWRpYV90cmFuc3BvcnQ6IG51bGx9IiwKICAgICAgIGNvbmZpZy5Ub1N0cmluZygpKTsK
IH0KIApAQCAtMjM4LDcgKzIzOSw3IEBAIFRFU1QoQXVkaW9SZWNlaXZlU3RyZWFtVGVzdCwgUmVj
ZWl2ZVJ0cFBhY2tldCkgewogICBBU1NFUlRfVFJVRShwYXJzZWRfcGFja2V0LlBhcnNlKCZydHBf
cGFja2V0WzBdLCBydHBfcGFja2V0LnNpemUoKSkpOwogICBwYXJzZWRfcGFja2V0LnNldF9hcnJp
dmFsX3RpbWVfbXMoKHBhY2tldF90aW1lX3VzICsgNTAwKSAvIDEwMDApOwogCi0gIEVYUEVDVF9D
QUxMKCpoZWxwZXIuY2hhbm5lbF9wcm94eSgpLAorICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5u
ZWxfcmVjZWl2ZSgpLAogICAgICAgICAgICAgICBPblJ0cFBhY2tldCh0ZXN0aW5nOjpSZWYocGFy
c2VkX3BhY2tldCkpKTsKIAogICByZWN2X3N0cmVhbS0+T25SdHBQYWNrZXQocGFyc2VkX3BhY2tl
dCk7CkBAIC0yNDksNyArMjUwLDcgQEAgVEVTVChBdWRpb1JlY2VpdmVTdHJlYW1UZXN0LCBSZWNl
aXZlUnRjcFBhY2tldCkgewogICBoZWxwZXIuY29uZmlnKCkucnRwLnRyYW5zcG9ydF9jYyA9IHRy
dWU7CiAgIGF1dG8gcmVjdl9zdHJlYW0gPSBoZWxwZXIuQ3JlYXRlQXVkaW9SZWNlaXZlU3RyZWFt
KCk7CiAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHJ0Y3BfcGFja2V0ID0gQ3JlYXRlUnRjcFNlbmRl
clJlcG9ydCgpOwotICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfcHJveHkoKSwKKyAgRVhQ
RUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3JlY2VpdmUoKSwKICAgICAgICAgICAgICAgUmVjZWl2
ZWRSVENQUGFja2V0KCZydGNwX3BhY2tldFswXSwgcnRjcF9wYWNrZXQuc2l6ZSgpKSkKICAgICAg
IC5XaWxsT25jZShSZXR1cm4odHJ1ZSkpOwogICBFWFBFQ1RfVFJVRShyZWN2X3N0cmVhbS0+RGVs
aXZlclJ0Y3AoJnJ0Y3BfcGFja2V0WzBdLCBydGNwX3BhY2tldC5zaXplKCkpKTsKQEAgLTMxMSw3
ICszMTIsNyBAQCBURVNUKEF1ZGlvUmVjZWl2ZVN0cmVhbVRlc3QsIEdldFN0YXRzKSB7CiBURVNU
KEF1ZGlvUmVjZWl2ZVN0cmVhbVRlc3QsIFNldEdhaW4pIHsKICAgQ29uZmlnSGVscGVyIGhlbHBl
cjsKICAgYXV0byByZWN2X3N0cmVhbSA9IGhlbHBlci5DcmVhdGVBdWRpb1JlY2VpdmVTdHJlYW0o
KTsKLSAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3Byb3h5KCksCisgIEVYUEVDVF9DQUxM
KCpoZWxwZXIuY2hhbm5lbF9yZWNlaXZlKCksCiAgICAgICAgICAgICAgIFNldENoYW5uZWxPdXRw
dXRWb2x1bWVTY2FsaW5nKEZsb2F0RXEoMC43NjVmKSkpOwogICByZWN2X3N0cmVhbS0+U2V0R2Fp
bigwLjc2NWYpOwogfQpAQCAtMzIyLDEwICszMjMsMTAgQEAgVEVTVChBdWRpb1JlY2VpdmVTdHJl
YW1UZXN0LCBTdHJlYW1zU2hvdWxkQmVBZGRlZFRvTWl4ZXJPbmNlT25TdGFydCkgewogICBhdXRv
IHJlY3Zfc3RyZWFtMSA9IGhlbHBlcjEuQ3JlYXRlQXVkaW9SZWNlaXZlU3RyZWFtKCk7CiAgIGF1
dG8gcmVjdl9zdHJlYW0yID0gaGVscGVyMi5DcmVhdGVBdWRpb1JlY2VpdmVTdHJlYW0oKTsKIAot
ICBFWFBFQ1RfQ0FMTCgqaGVscGVyMS5jaGFubmVsX3Byb3h5KCksIFN0YXJ0UGxheW91dCgpKS5U
aW1lcygxKTsKLSAgRVhQRUNUX0NBTEwoKmhlbHBlcjIuY2hhbm5lbF9wcm94eSgpLCBTdGFydFBs
YXlvdXQoKSkuVGltZXMoMSk7Ci0gIEVYUEVDVF9DQUxMKCpoZWxwZXIxLmNoYW5uZWxfcHJveHko
KSwgU3RvcFBsYXlvdXQoKSkuVGltZXMoMSk7Ci0gIEVYUEVDVF9DQUxMKCpoZWxwZXIyLmNoYW5u
ZWxfcHJveHkoKSwgU3RvcFBsYXlvdXQoKSkuVGltZXMoMSk7CisgIEVYUEVDVF9DQUxMKCpoZWxw
ZXIxLmNoYW5uZWxfcmVjZWl2ZSgpLCBTdGFydFBsYXlvdXQoKSkuVGltZXMoMSk7CisgIEVYUEVD
VF9DQUxMKCpoZWxwZXIyLmNoYW5uZWxfcmVjZWl2ZSgpLCBTdGFydFBsYXlvdXQoKSkuVGltZXMo
MSk7CisgIEVYUEVDVF9DQUxMKCpoZWxwZXIxLmNoYW5uZWxfcmVjZWl2ZSgpLCBTdG9wUGxheW91
dCgpKS5UaW1lcygxKTsKKyAgRVhQRUNUX0NBTEwoKmhlbHBlcjIuY2hhbm5lbF9yZWNlaXZlKCks
IFN0b3BQbGF5b3V0KCkpLlRpbWVzKDEpOwogICBFWFBFQ1RfQ0FMTCgqaGVscGVyMS5hdWRpb19t
aXhlcigpLCBBZGRTb3VyY2UocmVjdl9zdHJlYW0xLmdldCgpKSkKICAgICAgIC5XaWxsT25jZShS
ZXR1cm4odHJ1ZSkpOwogICBFWFBFQ1RfQ0FMTCgqaGVscGVyMS5hdWRpb19taXhlcigpLCBBZGRT
b3VyY2UocmVjdl9zdHJlYW0yLmdldCgpKSkKQEAgLTM2NiwxMiArMzY3LDMyIEBAIFRFU1QoQXVk
aW9SZWNlaXZlU3RyZWFtVGVzdCwgUmVjb25maWd1cmVXaXRoVXBkYXRlZENvbmZpZykgewogICAg
ICAgICAgICAgICAgICAgIGtUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcklkICsgMSkpOwogICBuZXdf
Y29uZmlnLmRlY29kZXJfbWFwLmVtcGxhY2UoMSwgU2RwQXVkaW9Gb3JtYXQoImZvbyIsIDgwMDAs
IDEpKTsKIAotICBNb2NrQ2hhbm5lbFJlY2VpdmVQcm94eSYgY2hhbm5lbF9wcm94eSA9ICpoZWxw
ZXIuY2hhbm5lbF9wcm94eSgpOwotICBFWFBFQ1RfQ0FMTChjaGFubmVsX3Byb3h5LCBTZXRMb2Nh
bFNTUkMoa0xvY2FsU3NyYyArIDEpKS5UaW1lcygxKTsKLSAgRVhQRUNUX0NBTEwoY2hhbm5lbF9w
cm94eSwgU2V0TkFDS1N0YXR1cyh0cnVlLCAxNSArIDEpKS5UaW1lcygxKTsKLSAgRVhQRUNUX0NB
TEwoY2hhbm5lbF9wcm94eSwgU2V0UmVjZWl2ZUNvZGVjcyhuZXdfY29uZmlnLmRlY29kZXJfbWFw
KSk7CisgIE1vY2tDaGFubmVsUmVjZWl2ZSYgY2hhbm5lbF9yZWNlaXZlID0gKmhlbHBlci5jaGFu
bmVsX3JlY2VpdmUoKTsKKyAgRVhQRUNUX0NBTEwoY2hhbm5lbF9yZWNlaXZlLCBTZXRMb2NhbFNT
UkMoa0xvY2FsU3NyYyArIDEpKS5UaW1lcygxKTsKKyAgRVhQRUNUX0NBTEwoY2hhbm5lbF9yZWNl
aXZlLCBTZXROQUNLU3RhdHVzKHRydWUsIDE1ICsgMSkpLlRpbWVzKDEpOworICBFWFBFQ1RfQ0FM
TChjaGFubmVsX3JlY2VpdmUsIFNldFJlY2VpdmVDb2RlY3MobmV3X2NvbmZpZy5kZWNvZGVyX21h
cCkpOwogCiAgIHJlY3Zfc3RyZWFtLT5SZWNvbmZpZ3VyZShuZXdfY29uZmlnKTsKIH0KKworVEVT
VChBdWRpb1JlY2VpdmVTdHJlYW1UZXN0LCBSZWNvbmZpZ3VyZVdpdGhGcmFtZURlY3J5cHRvcikg
eworICBDb25maWdIZWxwZXIgaGVscGVyOworICBhdXRvIHJlY3Zfc3RyZWFtID0gaGVscGVyLkNy
ZWF0ZUF1ZGlvUmVjZWl2ZVN0cmVhbSgpOworCisgIGF1dG8gbmV3X2NvbmZpZ18wID0gaGVscGVy
LmNvbmZpZygpOworICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+
IG1vY2tfZnJhbWVfZGVjcnlwdG9yXzAoCisgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0
PE1vY2tGcmFtZURlY3J5cHRvcj4oKSk7CisgIG5ld19jb25maWdfMC5mcmFtZV9kZWNyeXB0b3Ig
PSBtb2NrX2ZyYW1lX2RlY3J5cHRvcl8wOworCisgIHJlY3Zfc3RyZWFtLT5SZWNvbmZpZ3VyZShu
ZXdfY29uZmlnXzApOworCisgIGF1dG8gbmV3X2NvbmZpZ18xID0gaGVscGVyLmNvbmZpZygpOwor
ICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IG1vY2tfZnJhbWVf
ZGVjcnlwdG9yXzEoCisgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE1vY2tGcmFtZURl
Y3J5cHRvcj4oKSk7CisgIG5ld19jb25maWdfMS5mcmFtZV9kZWNyeXB0b3IgPSBtb2NrX2ZyYW1l
X2RlY3J5cHRvcl8xOworICBuZXdfY29uZmlnXzEuY3J5cHRvX29wdGlvbnMuc2ZyYW1lLnJlcXVp
cmVfZnJhbWVfZW5jcnlwdGlvbiA9IHRydWU7CisgIHJlY3Zfc3RyZWFtLT5SZWNvbmZpZ3VyZShu
ZXdfY29uZmlnXzEpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19zZW5kX3N0cmVhbS5jYwppbmRleCBlODIy
NjRhODNjYjFjYjI4NWU4M2U4M2FkYzQwOTU1YzYwNWU2Y2I1Li43NWU2ZWZiOWU4MDBmZDA5MThj
Y2JiNWJlOWYxYWY3ZGE4ODkxYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19zZW5kX3N0cmVhbS5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19zZW5kX3N0
cmVhbS5jYwpAQCAtMTUsMTIgKzE1LDIyIEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVk
ZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0KKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1
ZGlvX2VuY29kZXIuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJf
ZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCisj
aW5jbHVkZSAiYXBpL2NhbGwvdHJhbnNwb3J0LmgiCisjaW5jbHVkZSAiYXBpL2NyeXB0by9mcmFt
ZWVuY3J5cHRvcmludGVyZmFjZS5oIgogI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3N0YXRlLmgiCi0j
aW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9zZW5kX3Byb3h5LmgiCisjaW5jbHVkZSAiYXVkaW8vY2hh
bm5lbF9zZW5kLmgiCiAjaW5jbHVkZSAiYXVkaW8vY29udmVyc2lvbi5oIgorI2luY2x1ZGUgImNh
bGwvcnRwX2NvbmZpZy5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVy
X3NlbmRfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3ZhZC9pbmNsdWRlL3Zh
ZC5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1
ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ydGNfZXZlbnRfbG9nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19z
dHJlYW1fY29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2Nu
Zy9hdWRpb19lbmNvZGVyX2NuZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Z1bmN0
aW9uX3ZpZXcuaCIKQEAgLTM4LDEzMCArNDgsMTMyIEBAIGNvbnN0ZXhwciBzaXplX3Qga1BhY2tl
dExvc3NUcmFja2VyTWF4V2luZG93U2l6ZU1zID0gMTUwMDA7CiBjb25zdGV4cHIgc2l6ZV90IGtQ
YWNrZXRMb3NzUmF0ZU1pbk51bUFja2VkUGFja2V0cyA9IDUwOwogY29uc3RleHByIHNpemVfdCBr
UmVjb3ZlcmFibGVQYWNrZXRMb3NzUmF0ZU1pbk51bUFja2VkUGFpcnMgPSA0MDsKIAotdm9pZCBD
YWxsRW5jb2Rlcihjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsU2VuZFByb3h5PiYg
Y2hhbm5lbF9wcm94eSwKK3ZvaWQgQ2FsbEVuY29kZXIoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHZv
ZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2U+JiBjaGFubmVsX3NlbmQsCiAgICAgICAgICAgICAgICAg
IHJ0Yzo6RnVuY3Rpb25WaWV3PHZvaWQoQXVkaW9FbmNvZGVyKik+IGxhbWJkYSkgewotICBjaGFu
bmVsX3Byb3h5LT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVy
PiogZW5jb2Rlcl9wdHIpIHsKKyAgY2hhbm5lbF9zZW5kLT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2Rlcl9wdHIpIHsKICAgICBSVENfRENIRUNL
KGVuY29kZXJfcHRyKTsKICAgICBsYW1iZGEoZW5jb2Rlcl9wdHItPmdldCgpKTsKICAgfSk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxTZW5kUHJveHk+IENyZWF0ZUNoYW5uZWxB
bmRQcm94eSgKLSAgICBydGM6OlRhc2tRdWV1ZSogd29ya2VyX3F1ZXVlLAotICAgIFByb2Nlc3NU
aHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKLSAgICBSdGNwUnR0U3RhdHMqIHJ0Y3BfcnR0
X3N0YXRzLAotICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCi0gICAgRnJhbWVFbmNyeXB0b3JJ
bnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvcikgewotICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8
dm9lOjpDaGFubmVsU2VuZFByb3h5PigKLSAgICAgIGFic2w6Om1ha2VfdW5pcXVlPHZvZTo6Q2hh
bm5lbFNlbmQ+KHdvcmtlcl9xdWV1ZSwgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjcF9ydHRfc3RhdHMsIGV2ZW50X2xv
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2VuY3J5
cHRvcikpOwotfQotfSAgLy8gbmFtZXNwYWNlCi0KLS8vIEhlbHBlciBjbGFzcyB0byB0cmFjayB0
aGUgYWN0aXZlbHkgc2VuZGluZyBsaWZldGltZSBvZiB0aGlzIHN0cmVhbS4KLWNsYXNzIEF1ZGlv
U2VuZFN0cmVhbTo6VGltZWRUcmFuc3BvcnQgOiBwdWJsaWMgVHJhbnNwb3J0IHsKLSBwdWJsaWM6
Ci0gIFRpbWVkVHJhbnNwb3J0KFRyYW5zcG9ydCogdHJhbnNwb3J0LCBUaW1lSW50ZXJ2YWwqIHRp
bWVfaW50ZXJ2YWwpCi0gICAgICA6IHRyYW5zcG9ydF8odHJhbnNwb3J0KSwgbGlmZXRpbWVfKHRp
bWVfaW50ZXJ2YWwpIHt9Ci0gIGJvb2wgU2VuZFJ0cChjb25zdCB1aW50OF90KiBwYWNrZXQsCi0g
ICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgY29uc3QgUGFja2V0
T3B0aW9ucyYgb3B0aW9ucykgewotICAgIGlmIChsaWZldGltZV8pIHsKLSAgICAgIGxpZmV0aW1l
Xy0+RXh0ZW5kKCk7Cit2b2lkIFVwZGF0ZUV2ZW50TG9nU3RyZWFtQ29uZmlnKFJ0Y0V2ZW50TG9n
KiBldmVudF9sb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlv
U2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnKiBvbGRfY29uZmlnKSB7CisgIHVzaW5n
IFNlbmRDb2RlY1NwZWMgPSBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6U2VuZENvZGVjU3BlYzsK
KyAgLy8gT25seSB1cGRhdGUgaWYgYW55IG9mIHRoZSB0aGluZ3Mgd2UgbG9nIGhhdmUgY2hhbmdl
ZC4KKyAgYXV0byBwYXlsb2FkX3R5cGVzX2VxdWFsID0gW10oY29uc3QgYWJzbDo6b3B0aW9uYWw8
U2VuZENvZGVjU3BlYz4mIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPFNlbmRDb2RlY1NwZWM+JiBiKSB7CisgICAgaWYgKGEuaGFzX3ZhbHVl
KCkgJiYgYi5oYXNfdmFsdWUoKSkgeworICAgICAgcmV0dXJuIGEtPmZvcm1hdC5uYW1lID09IGIt
PmZvcm1hdC5uYW1lICYmCisgICAgICAgICAgICAgYS0+cGF5bG9hZF90eXBlID09IGItPnBheWxv
YWRfdHlwZTsKICAgICB9Ci0gICAgcmV0dXJuIHRyYW5zcG9ydF8tPlNlbmRSdHAocGFja2V0LCBs
ZW5ndGgsIG9wdGlvbnMpOworICAgIHJldHVybiAhYS5oYXNfdmFsdWUoKSAmJiAhYi5oYXNfdmFs
dWUoKTsKKyAgfTsKKworICBpZiAob2xkX2NvbmZpZyAmJiBjb25maWcucnRwLnNzcmMgPT0gb2xk
X2NvbmZpZy0+cnRwLnNzcmMgJiYKKyAgICAgIGNvbmZpZy5ydHAuZXh0ZW5zaW9ucyA9PSBvbGRf
Y29uZmlnLT5ydHAuZXh0ZW5zaW9ucyAmJgorICAgICAgcGF5bG9hZF90eXBlc19lcXVhbChjb25m
aWcuc2VuZF9jb2RlY19zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfY29uZmln
LT5zZW5kX2NvZGVjX3NwZWMpKSB7CisgICAgcmV0dXJuOwogICB9Ci0gIGJvb2wgU2VuZFJ0Y3Ao
Y29uc3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKSB7Ci0gICAgcmV0dXJuIHRyYW5z
cG9ydF8tPlNlbmRSdGNwKHBhY2tldCwgbGVuZ3RoKTsKKworICBhdXRvIHJ0Y2xvZ19jb25maWcg
PSBhYnNsOjptYWtlX3VuaXF1ZTxydGNsb2c6OlN0cmVhbUNvbmZpZz4oKTsKKyAgcnRjbG9nX2Nv
bmZpZy0+bG9jYWxfc3NyYyA9IGNvbmZpZy5ydHAuc3NyYzsKKyAgcnRjbG9nX2NvbmZpZy0+cnRw
X2V4dGVuc2lvbnMgPSBjb25maWcucnRwLmV4dGVuc2lvbnM7CisgIGlmIChjb25maWcuc2VuZF9j
b2RlY19zcGVjKSB7CisgICAgcnRjbG9nX2NvbmZpZy0+Y29kZWNzLmVtcGxhY2VfYmFjayhjb25m
aWcuc2VuZF9jb2RlY19zcGVjLT5mb3JtYXQubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbmZpZy5zZW5kX2NvZGVjX3NwZWMtPnBheWxvYWRfdHlwZSwgMCk7
CiAgIH0KLSAgflRpbWVkVHJhbnNwb3J0KCkge30KKyAgZXZlbnRfbG9nLT5Mb2coYWJzbDo6bWFr
ZV91bmlxdWU8UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc+KAorICAgICAgc3RkOjptb3Zl
KHJ0Y2xvZ19jb25maWcpKSk7Cit9CiAKLSBwcml2YXRlOgotICBUcmFuc3BvcnQqIHRyYW5zcG9y
dF87Ci0gIFRpbWVJbnRlcnZhbCogbGlmZXRpbWVfOwotfTsKK30gIC8vIG5hbWVzcGFjZQogCiBB
dWRpb1NlbmRTdHJlYW06OkF1ZGlvU2VuZFN0cmVhbSgKICAgICBjb25zdCB3ZWJydGM6OkF1ZGlv
U2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcsCiAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6QXVkaW9TdGF0ZT4mIGF1ZGlvX3N0YXRlLAogICAgIHJ0Yzo6VGFza1F1ZXVlKiB3
b3JrZXJfcXVldWUsCiAgICAgUHJvY2Vzc1RocmVhZCogbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAot
ICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAg
Qml0cmF0ZUFsbG9jYXRvciogYml0cmF0ZV9hbGxvY2F0b3IsCisgICAgUnRwVHJhbnNwb3J0Q29u
dHJvbGxlclNlbmRJbnRlcmZhY2UqIHJ0cF90cmFuc3BvcnQsCisgICAgQml0cmF0ZUFsbG9jYXRv
ckludGVyZmFjZSogYml0cmF0ZV9hbGxvY2F0b3IsCiAgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xv
ZywKICAgICBSdGNwUnR0U3RhdHMqIHJ0Y3BfcnR0X3N0YXRzLAotICAgIGNvbnN0IGFic2w6Om9w
dGlvbmFsPFJ0cFN0YXRlPiYgc3VzcGVuZGVkX3J0cF9zdGF0ZSwKLSAgICBUaW1lSW50ZXJ2YWwq
IG92ZXJhbGxfY2FsbF9saWZldGltZSkKKyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxSdHBTdGF0
ZT4mIHN1c3BlbmRlZF9ydHBfc3RhdGUpCiAgICAgOiBBdWRpb1NlbmRTdHJlYW0oY29uZmlnLAog
ICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3N0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
IHdvcmtlcl9xdWV1ZSwKLSAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQsCisgICAgICAg
ICAgICAgICAgICAgICAgcnRwX3RyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICBiaXRy
YXRlX2FsbG9jYXRvciwKICAgICAgICAgICAgICAgICAgICAgICBldmVudF9sb2csCiAgICAgICAg
ICAgICAgICAgICAgICAgcnRjcF9ydHRfc3RhdHMsCiAgICAgICAgICAgICAgICAgICAgICAgc3Vz
cGVuZGVkX3J0cF9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBvdmVyYWxsX2NhbGxfbGlm
ZXRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQ2hhbm5lbEFuZFByb3h5KHdvcmtl
cl9xdWV1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k
dWxlX3Byb2Nlc3NfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBydGNwX3J0dF9zdGF0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXZlbnRfbG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25maWcuZnJhbWVfZW5jcnlwdG9yKSkge30KKyAgICAgICAgICAgICAgICAg
ICAgICB2b2U6OkNyZWF0ZUNoYW5uZWxTZW5kKHdvcmtlcl9xdWV1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5tZWRpYV90
cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25maWcuc2VuZF90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydGNwX3J0dF9zdGF0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV2ZW50X2xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbmZpZy5mcmFtZV9lbmNyeXB0b3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuY3J5cHRvX29wdGlvbnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucnRwLmV4dG1h
cF9hbGxvd19taXhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbmZpZy5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcykpIHt9CiAKIEF1ZGlvU2VuZFN0cmVh
bTo6QXVkaW9TZW5kU3RyZWFtKAogICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpD
b25maWcmIGNvbmZpZywKICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRp
b1N0YXRlPiYgYXVkaW9fc3RhdGUsCiAgICAgcnRjOjpUYXNrUXVldWUqIHdvcmtlcl9xdWV1ZSwK
LSAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogdHJhbnNwb3J0LAotICAg
IEJpdHJhdGVBbGxvY2F0b3IqIGJpdHJhdGVfYWxsb2NhdG9yLAorICAgIFJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJTZW5kSW50ZXJmYWNlKiBydHBfdHJhbnNwb3J0LAorICAgIEJpdHJhdGVBbGxvY2F0
b3JJbnRlcmZhY2UqIGJpdHJhdGVfYWxsb2NhdG9yLAogICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9s
b2csCiAgICAgUnRjcFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0cywKICAgICBjb25zdCBhYnNsOjpv
cHRpb25hbDxSdHBTdGF0ZT4mIHN1c3BlbmRlZF9ydHBfc3RhdGUsCi0gICAgVGltZUludGVydmFs
KiBvdmVyYWxsX2NhbGxfbGlmZXRpbWUsCi0gICAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5l
bFNlbmRQcm94eT4gY2hhbm5lbF9wcm94eSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFu
bmVsU2VuZEludGVyZmFjZT4gY2hhbm5lbF9zZW5kKQogICAgIDogd29ya2VyX3F1ZXVlXyh3b3Jr
ZXJfcXVldWUpLAotICAgICAgY29uZmlnXyhDb25maWcobnVsbHB0cikpLAorICAgICAgY29uZmln
XyhDb25maWcoLypzZW5kX3RyYW5zcG9ydD0qL251bGxwdHIsCisgICAgICAgICAgICAgICAgICAg
ICAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpKSwKICAgICAgIGF1ZGlvX3N0YXRlXyhhdWRp
b19zdGF0ZSksCi0gICAgICBjaGFubmVsX3Byb3h5XyhzdGQ6Om1vdmUoY2hhbm5lbF9wcm94eSkp
LAorICAgICAgY2hhbm5lbF9zZW5kXyhzdGQ6Om1vdmUoY2hhbm5lbF9zZW5kKSksCiAgICAgICBl
dmVudF9sb2dfKGV2ZW50X2xvZyksCiAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl8oYml0cmF0ZV9h
bGxvY2F0b3IpLAotICAgICAgdHJhbnNwb3J0Xyh0cmFuc3BvcnQpLAorICAgICAgcnRwX3RyYW5z
cG9ydF8ocnRwX3RyYW5zcG9ydCksCiAgICAgICBwYWNrZXRfbG9zc190cmFja2VyXyhrUGFja2V0
TG9zc1RyYWNrZXJNYXhXaW5kb3dTaXplTXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
UGFja2V0TG9zc1JhdGVNaW5OdW1BY2tlZFBhY2tldHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrUmVjb3ZlcmFibGVQYWNrZXRMb3NzUmF0ZU1pbk51bUFja2VkUGFpcnMpLAogICAgICAg
cnRwX3J0Y3BfbW9kdWxlXyhudWxscHRyKSwKLSAgICAgIHN1c3BlbmRlZF9ydHBfc3RhdGVfKHN1
c3BlbmRlZF9ydHBfc3RhdGUpLAotICAgICAgb3ZlcmFsbF9jYWxsX2xpZmV0aW1lXyhvdmVyYWxs
X2NhbGxfbGlmZXRpbWUpIHsKKyAgICAgIHN1c3BlbmRlZF9ydHBfc3RhdGVfKHN1c3BlbmRlZF9y
dHBfc3RhdGUpIHsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQXVkaW9TZW5kU3RyZWFtOiAiIDw8
IGNvbmZpZy5ydHAuc3NyYzsKICAgUlRDX0RDSEVDSyh3b3JrZXJfcXVldWVfKTsKICAgUlRDX0RD
SEVDSyhhdWRpb19zdGF0ZV8pOwotICBSVENfRENIRUNLKGNoYW5uZWxfcHJveHlfKTsKKyAgUlRD
X0RDSEVDSyhjaGFubmVsX3NlbmRfKTsKICAgUlRDX0RDSEVDSyhiaXRyYXRlX2FsbG9jYXRvcl8p
OwotICBSVENfRENIRUNLKHRyYW5zcG9ydCk7Ci0gIFJUQ19EQ0hFQ0sob3ZlcmFsbF9jYWxsX2xp
ZmV0aW1lXyk7CisgIC8vIFRPRE8obmlzc2UpOiBFdmVudHVhbGx5LCB3ZSBzaG91bGQgaGF2ZSBv
bmx5IG1lZGlhX3RyYW5zcG9ydC4gQnV0IGZvciB0aGUKKyAgLy8gdGltZSBiZWluZywgd2UgY2Fu
IGhhdmUgZWl0aGVyLiBXaGVuIG1lZGlhIHRyYW5zcG9ydCBpcyBpbmplY3RlZCwgdGhlcmUKKyAg
Ly8gc2hvdWxkIGJlIG5vIHJ0cF90cmFuc3BvcnQsIGFuZCBiZWxvdyBjaGVjayBzaG91bGQgYmUg
c3RyZW5ndGhlbmVkIHRvIFhPUgorICAvLyAoZWl0aGVyIHJ0cF90cmFuc3BvcnQgb3IgbWVkaWFf
dHJhbnNwb3J0IGJ1dCBub3QgYm90aCkuCisgIFJUQ19EQ0hFQ0socnRwX3RyYW5zcG9ydCB8fCBj
b25maWcubWVkaWFfdHJhbnNwb3J0KTsKIAotICBjaGFubmVsX3Byb3h5Xy0+U2V0UlRDUFN0YXR1
cyh0cnVlKTsKLSAgcnRwX3J0Y3BfbW9kdWxlXyA9IGNoYW5uZWxfcHJveHlfLT5HZXRSdHBSdGNw
KCk7CisgIHJ0cF9ydGNwX21vZHVsZV8gPSBjaGFubmVsX3NlbmRfLT5HZXRSdHBSdGNwKCk7CiAg
IFJUQ19EQ0hFQ0socnRwX3J0Y3BfbW9kdWxlXyk7CiAKICAgQ29uZmlndXJlU3RyZWFtKHRoaXMs
IGNvbmZpZywgdHJ1ZSk7CiAKICAgcGFjZXJfdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZyb21UaHJl
YWQoKTsKLSAgLy8gU2lnbmFsIGNvbmdlc3Rpb24gY29udHJvbGxlciB0aGlzIG9iamVjdCBpcyBy
ZWFkeSBmb3IgT25QYWNrZXQqIGNhbGxiYWNrcy4KLSAgdHJhbnNwb3J0Xy0+UmVnaXN0ZXJQYWNr
ZXRGZWVkYmFja09ic2VydmVyKHRoaXMpOworICBpZiAocnRwX3RyYW5zcG9ydF8pIHsKKyAgICAv
LyBTaWduYWwgY29uZ2VzdGlvbiBjb250cm9sbGVyIHRoaXMgb2JqZWN0IGlzIHJlYWR5IGZvciBP
blBhY2tldCoKKyAgICAvLyBjYWxsYmFja3MuCisgICAgcnRwX3RyYW5zcG9ydF8tPlJlZ2lzdGVy
UGFja2V0RmVlZGJhY2tPYnNlcnZlcih0aGlzKTsKKyAgfQogfQogCiBBdWRpb1NlbmRTdHJlYW06
On5BdWRpb1NlbmRTdHJlYW0oKSB7CiAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2Vy
Xy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBSVENfTE9HKExTX0lORk8pIDw8ICJ+QXVkaW9T
ZW5kU3RyZWFtOiAiIDw8IGNvbmZpZ18ucnRwLnNzcmM7CiAgIFJUQ19EQ0hFQ0soIXNlbmRpbmdf
KTsKLSAgdHJhbnNwb3J0Xy0+RGVSZWdpc3RlclBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIodGhpcyk7
Ci0gIGNoYW5uZWxfcHJveHlfLT5SZWdpc3RlclRyYW5zcG9ydChudWxscHRyKTsKLSAgY2hhbm5l
bF9wcm94eV8tPlJlc2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCk7Ci0gIC8vIExp
ZmV0aW1lIGNhbiBvbmx5IGJlIHVwZGF0ZWQgYWZ0ZXIgZGVyZWdpc3RlcmluZwotICAvLyB8dGlt
ZWRfc2VuZF90cmFuc3BvcnRfYWRhcHRlcl98IGluIHRoZSB1bmRlcmx5aW5nIGNoYW5uZWwgb2Jq
ZWN0IHRvIGF2b2lkCi0gIC8vIGRhdGEgcmFjZXMgaW4gfGFjdGl2ZV9saWZldGltZV98LgotICBv
dmVyYWxsX2NhbGxfbGlmZXRpbWVfLT5FeHRlbmQoYWN0aXZlX2xpZmV0aW1lXyk7CisgIGlmIChy
dHBfdHJhbnNwb3J0XykgeworICAgIHJ0cF90cmFuc3BvcnRfLT5EZVJlZ2lzdGVyUGFja2V0RmVl
ZGJhY2tPYnNlcnZlcih0aGlzKTsKKyAgICBjaGFubmVsX3NlbmRfLT5SZXNldFNlbmRlckNvbmdl
c3Rpb25Db250cm9sT2JqZWN0cygpOworICB9CiB9CiAKIGNvbnN0IHdlYnJ0Yzo6QXVkaW9TZW5k
U3RyZWFtOjpDb25maWcmIEF1ZGlvU2VuZFN0cmVhbTo6R2V0Q29uZmlnKCkgY29uc3QgewpAQCAt
MTk2LDUxICsyMDgsNDIgQEAgdm9pZCBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZ3VyZVN0cmVhbSgK
ICAgICBib29sIGZpcnN0X3RpbWUpIHsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQXVkaW9TZW5k
U3RyZWFtOjpDb25maWd1cmVTdHJlYW06ICIKICAgICAgICAgICAgICAgICAgICA8PCBuZXdfY29u
ZmlnLlRvU3RyaW5nKCk7Ci0gIGNvbnN0IGF1dG8mIGNoYW5uZWxfcHJveHkgPSBzdHJlYW0tPmNo
YW5uZWxfcHJveHlfOworICBVcGRhdGVFdmVudExvZ1N0cmVhbUNvbmZpZyhzdHJlYW0tPmV2ZW50
X2xvZ18sIG5ld19jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X3Rp
bWUgPyBudWxscHRyIDogJnN0cmVhbS0+Y29uZmlnXyk7CisKKyAgY29uc3QgYXV0byYgY2hhbm5l
bF9zZW5kID0gc3RyZWFtLT5jaGFubmVsX3NlbmRfOwogICBjb25zdCBhdXRvJiBvbGRfY29uZmln
ID0gc3RyZWFtLT5jb25maWdfOwogCisgIC8vIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB3aGlj
aCBjYW5ub3QgYmUgY2hhbmdlZC4KKyAgUlRDX0RDSEVDSyhmaXJzdF90aW1lIHx8CisgICAgICAg
ICAgICAgb2xkX2NvbmZpZy5zZW5kX3RyYW5zcG9ydCA9PSBuZXdfY29uZmlnLnNlbmRfdHJhbnNw
b3J0KTsKKwogICBpZiAoZmlyc3RfdGltZSB8fCBvbGRfY29uZmlnLnJ0cC5zc3JjICE9IG5ld19j
b25maWcucnRwLnNzcmMpIHsKLSAgICBjaGFubmVsX3Byb3h5LT5TZXRMb2NhbFNTUkMobmV3X2Nv
bmZpZy5ydHAuc3NyYyk7CisgICAgY2hhbm5lbF9zZW5kLT5TZXRMb2NhbFNTUkMobmV3X2NvbmZp
Zy5ydHAuc3NyYyk7CiAgICAgaWYgKHN0cmVhbS0+c3VzcGVuZGVkX3J0cF9zdGF0ZV8pIHsKICAg
ICAgIHN0cmVhbS0+cnRwX3J0Y3BfbW9kdWxlXy0+U2V0UnRwU3RhdGUoKnN0cmVhbS0+c3VzcGVu
ZGVkX3J0cF9zdGF0ZV8pOwogICAgIH0KICAgfQogICBpZiAoZmlyc3RfdGltZSB8fCBvbGRfY29u
ZmlnLnJ0cC5jX25hbWUgIT0gbmV3X2NvbmZpZy5ydHAuY19uYW1lKSB7Ci0gICAgY2hhbm5lbF9w
cm94eS0+U2V0UlRDUF9DTkFNRShuZXdfY29uZmlnLnJ0cC5jX25hbWUpOwotICB9Ci0gIC8vIFRP
RE8oc29sZW5iZXJnKTogQ29uZmlnIE5BQ0sgaGlzdG9yeSB3aW5kb3cgKHdoaWNoIGlzIGEgcGFj
a2V0IGNvdW50KSwKLSAgLy8gdXNpbmcgdGhlIGFjdHVhbCBwYWNrZXQgc2l6ZSBmb3IgdGhlIGNv
bmZpZ3VyZWQgY29kZWMuCi0gIGlmIChmaXJzdF90aW1lIHx8IG9sZF9jb25maWcucnRwLm5hY2su
cnRwX2hpc3RvcnlfbXMgIT0KLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld19jb25maWcucnRw
Lm5hY2sucnRwX2hpc3RvcnlfbXMpIHsKLSAgICBjaGFubmVsX3Byb3h5LT5TZXROQUNLU3RhdHVz
KG5ld19jb25maWcucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgIT0gMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld19jb25maWcucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgLyAy
MCk7Ci0gIH0KLQotICBpZiAoZmlyc3RfdGltZSB8fCBuZXdfY29uZmlnLnNlbmRfdHJhbnNwb3J0
ICE9IG9sZF9jb25maWcuc2VuZF90cmFuc3BvcnQpIHsKLSAgICBpZiAob2xkX2NvbmZpZy5zZW5k
X3RyYW5zcG9ydCkgewotICAgICAgY2hhbm5lbF9wcm94eS0+UmVnaXN0ZXJUcmFuc3BvcnQobnVs
bHB0cik7Ci0gICAgfQotICAgIGlmIChuZXdfY29uZmlnLnNlbmRfdHJhbnNwb3J0KSB7Ci0gICAg
ICBzdHJlYW0tPnRpbWVkX3NlbmRfdHJhbnNwb3J0X2FkYXB0ZXJfLnJlc2V0KG5ldyBUaW1lZFRy
YW5zcG9ydCgKLSAgICAgICAgICBuZXdfY29uZmlnLnNlbmRfdHJhbnNwb3J0LCAmc3RyZWFtLT5h
Y3RpdmVfbGlmZXRpbWVfKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHN0cmVhbS0+dGltZWRfc2Vu
ZF90cmFuc3BvcnRfYWRhcHRlcl8ucmVzZXQobnVsbHB0cik7Ci0gICAgfQotICAgIGNoYW5uZWxf
cHJveHktPlJlZ2lzdGVyVHJhbnNwb3J0KAotICAgICAgICBzdHJlYW0tPnRpbWVkX3NlbmRfdHJh
bnNwb3J0X2FkYXB0ZXJfLmdldCgpKTsKKyAgICBjaGFubmVsX3NlbmQtPlNldFJUQ1BfQ05BTUUo
bmV3X2NvbmZpZy5ydHAuY19uYW1lKTsKICAgfQogCiAgIC8vIEVuYWJsZSB0aGUgZnJhbWUgZW5j
cnlwdG9yIGlmIGEgbmV3IGZyYW1lIGVuY3J5cHRvciBoYXMgYmVlbiBwcm92aWRlZC4KICAgaWYg
KGZpcnN0X3RpbWUgfHwgbmV3X2NvbmZpZy5mcmFtZV9lbmNyeXB0b3IgIT0gb2xkX2NvbmZpZy5m
cmFtZV9lbmNyeXB0b3IpIHsKLSAgICBjaGFubmVsX3Byb3h5LT5TZXRGcmFtZUVuY3J5cHRvcihu
ZXdfY29uZmlnLmZyYW1lX2VuY3J5cHRvcik7CisgICAgY2hhbm5lbF9zZW5kLT5TZXRGcmFtZUVu
Y3J5cHRvcihuZXdfY29uZmlnLmZyYW1lX2VuY3J5cHRvcik7CisgIH0KKworICBpZiAoZmlyc3Rf
dGltZSB8fAorICAgICAgbmV3X2NvbmZpZy5ydHAuZXh0bWFwX2FsbG93X21peGVkICE9IG9sZF9j
b25maWcucnRwLmV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIGNoYW5uZWxfc2VuZC0+U2V0RXh0
bWFwQWxsb3dNaXhlZChuZXdfY29uZmlnLnJ0cC5leHRtYXBfYWxsb3dfbWl4ZWQpOwogICB9CiAK
ICAgY29uc3QgRXh0ZW5zaW9uSWRzIG9sZF9pZHMgPSBGaW5kRXh0ZW5zaW9uSWRzKG9sZF9jb25m
aWcucnRwLmV4dGVuc2lvbnMpOwogICBjb25zdCBFeHRlbnNpb25JZHMgbmV3X2lkcyA9IEZpbmRF
eHRlbnNpb25JZHMobmV3X2NvbmZpZy5ydHAuZXh0ZW5zaW9ucyk7CiAgIC8vIEF1ZGlvIGxldmVs
IGluZGljYXRpb24KICAgaWYgKGZpcnN0X3RpbWUgfHwgbmV3X2lkcy5hdWRpb19sZXZlbCAhPSBv
bGRfaWRzLmF1ZGlvX2xldmVsKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0U2VuZEF1ZGlvTGV2
ZWxJbmRpY2F0aW9uU3RhdHVzKG5ld19pZHMuYXVkaW9fbGV2ZWwgIT0gMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2lkcy5hdWRpb19s
ZXZlbCk7CisgICAgY2hhbm5lbF9zZW5kLT5TZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25TdGF0
dXMobmV3X2lkcy5hdWRpb19sZXZlbCAhPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19pZHMuYXVkaW9fbGV2ZWwpOwogICB9CiAgIGJv
b2wgdHJhbnNwb3J0X3NlcV9udW1faWRfY2hhbmdlZCA9CiAgICAgICBuZXdfaWRzLnRyYW5zcG9y
dF9zZXF1ZW5jZV9udW1iZXIgIT0gb2xkX2lkcy50cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyOwpA
QCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpDb25maWd1cmVTdHJlYW0o
CiAgICAgICAodHJhbnNwb3J0X3NlcV9udW1faWRfY2hhbmdlZCAmJgogICAgICAgICF3ZWJydGM6
OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BdWRpby1Gb3JjZU5vVFdDQyIpKSkgewog
ICAgIGlmICghZmlyc3RfdGltZSkgewotICAgICAgY2hhbm5lbF9wcm94eS0+UmVzZXRTZW5kZXJD
b25nZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKKyAgICAgIGNoYW5uZWxfc2VuZC0+UmVzZXRTZW5k
ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKICAgICB9CiAKICAgICBSdGNwQmFuZHdpZHRo
T2JzZXJ2ZXIqIGJhbmR3aWR0aF9vYnNlcnZlciA9IG51bGxwdHI7CkBAIC0yNTYsMjQgKzI1OSwy
NiBAQCB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlndXJlU3RyZWFtKAogICAgICAgICBuZXdf
aWRzLnRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgIT0gMCAmJgogICAgICAgICAhd2VicnRjOjpm
aWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tRm9yY2VOb1RXQ0MiKTsKICAgICBp
ZiAoaGFzX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIpIHsKLSAgICAgIGNoYW5uZWxfcHJveHkt
PkVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcigKKyAgICAgIGNoYW5uZWxfc2VuZC0+
RW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKAogICAgICAgICAgIG5ld19pZHMudHJh
bnNwb3J0X3NlcXVlbmNlX251bWJlcik7CiAgICAgICAvLyBQcm9iaW5nIGluIGFwcGxpY2F0aW9u
IGxpbWl0ZWQgcmVnaW9uIGlzIG9ubHkgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoCiAgICAgICAv
LyBzZW5kIHNpZGUgY29uZ2VzdGlvbiBjb250cm9sLCB3aWNoIGRlcGVuZHMgb24gZmVlZGJhY2sg
cGFja2V0cyB3aGljaAogICAgICAgLy8gcmVxdWlyZXMgdHJhbnNwb3J0IHNlcXVlbmNlIG51bWJl
cnMgdG8gYmUgZW5hYmxlZC4KLSAgICAgIHN0cmVhbS0+dHJhbnNwb3J0Xy0+RW5hYmxlUGVyaW9k
aWNBbHJQcm9iaW5nKHRydWUpOwotICAgICAgYmFuZHdpZHRoX29ic2VydmVyID0gc3RyZWFtLT50
cmFuc3BvcnRfLT5HZXRCYW5kd2lkdGhPYnNlcnZlcigpOworICAgICAgaWYgKHN0cmVhbS0+cnRw
X3RyYW5zcG9ydF8pIHsKKyAgICAgICAgc3RyZWFtLT5ydHBfdHJhbnNwb3J0Xy0+RW5hYmxlUGVy
aW9kaWNBbHJQcm9iaW5nKHRydWUpOworICAgICAgICBiYW5kd2lkdGhfb2JzZXJ2ZXIgPSBzdHJl
YW0tPnJ0cF90cmFuc3BvcnRfLT5HZXRCYW5kd2lkdGhPYnNlcnZlcigpOworICAgICAgfQorICAg
IH0KKyAgICBpZiAoc3RyZWFtLT5ydHBfdHJhbnNwb3J0XykgeworICAgICAgY2hhbm5lbF9zZW5k
LT5SZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKKyAgICAgICAgICBzdHJl
YW0tPnJ0cF90cmFuc3BvcnRfLCBiYW5kd2lkdGhfb2JzZXJ2ZXIpOwogICAgIH0KLQotICAgIGNo
YW5uZWxfcHJveHktPlJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKHN0cmVh
bS0+dHJhbnNwb3J0XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYW5kd2lkdGhfb2JzZXJ2ZXIpOwogICB9Ci0KICAgLy8gTUlEIFJU
UCBoZWFkZXIgZXh0ZW5zaW9uLgogICBpZiAoKGZpcnN0X3RpbWUgfHwgbmV3X2lkcy5taWQgIT0g
b2xkX2lkcy5taWQgfHwKICAgICAgICBuZXdfY29uZmlnLnJ0cC5taWQgIT0gb2xkX2NvbmZpZy5y
dHAubWlkKSAmJgogICAgICAgbmV3X2lkcy5taWQgIT0gMCAmJiAhbmV3X2NvbmZpZy5ydHAubWlk
LmVtcHR5KCkpIHsKLSAgICBjaGFubmVsX3Byb3h5LT5TZXRNaWQobmV3X2NvbmZpZy5ydHAubWlk
LCBuZXdfaWRzLm1pZCk7CisgICAgY2hhbm5lbF9zZW5kLT5TZXRNaWQobmV3X2NvbmZpZy5ydHAu
bWlkLCBuZXdfaWRzLm1pZCk7CiAgIH0KIAogICBpZiAoIVJlY29uZmlndXJlU2VuZENvZGVjKHN0
cmVhbSwgbmV3X2NvbmZpZykpIHsKQEAgLTI5NiwxNiArMzAxLDIwIEBAIHZvaWQgQXVkaW9TZW5k
U3RyZWFtOjpTdGFydCgpIHsKICAgICAgIEZpbmRFeHRlbnNpb25JZHMoY29uZmlnXy5ydHAuZXh0
ZW5zaW9ucykudHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciAhPSAwICYmCiAgICAgICAhd2VicnRj
OjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tRm9yY2VOb1RXQ0MiKTsKICAg
aWYgKGNvbmZpZ18ubWluX2JpdHJhdGVfYnBzICE9IC0xICYmIGNvbmZpZ18ubWF4X2JpdHJhdGVf
YnBzICE9IC0xICYmCisgICAgICAhY29uZmlnXy5oYXNfZHNjcCAmJgogICAgICAgKGhhc190cmFu
c3BvcnRfc2VxdWVuY2VfbnVtYmVyIHx8CiAgICAgICAgIXdlYnJ0Yzo6ZmllbGRfdHJpYWw6Oklz
RW5hYmxlZCgiV2ViUlRDLUF1ZGlvLVNlbmRTaWRlQndlIikgfHwKICAgICAgICB3ZWJydGM6OmZp
ZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BdWRpby1BQldFTm9UV0NDIikpKSB7CiAgICAg
Ly8gQXVkaW8gQldFIGlzIGVuYWJsZWQuCi0gICAgdHJhbnNwb3J0Xy0+cGFja2V0X3NlbmRlcigp
LT5TZXRBY2NvdW50Rm9yQXVkaW9QYWNrZXRzKHRydWUpOworICAgIHJ0cF90cmFuc3BvcnRfLT5w
YWNrZXRfc2VuZGVyKCktPlNldEFjY291bnRGb3JBdWRpb1BhY2tldHModHJ1ZSk7CisgICAgcnRw
X3J0Y3BfbW9kdWxlXy0+U2V0QXNQYXJ0T2ZBbGxvY2F0aW9uKHRydWUpOwogICAgIENvbmZpZ3Vy
ZUJpdHJhdGVPYnNlcnZlcihjb25maWdfLm1pbl9iaXRyYXRlX2JwcywgY29uZmlnXy5tYXhfYml0
cmF0ZV9icHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18uYml0cmF0ZV9w
cmlvcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzX3RyYW5zcG9ydF9zZXF1
ZW5jZV9udW1iZXIpOworICB9IGVsc2UgeworICAgIHJ0cF9ydGNwX21vZHVsZV8tPlNldEFzUGFy
dE9mQWxsb2NhdGlvbihmYWxzZSk7CiAgIH0KLSAgY2hhbm5lbF9wcm94eV8tPlN0YXJ0U2VuZCgp
OworICBjaGFubmVsX3NlbmRfLT5TdGFydFNlbmQoKTsKICAgc2VuZGluZ18gPSB0cnVlOwogICBh
dWRpb19zdGF0ZSgpLT5BZGRTZW5kaW5nU3RyZWFtKHRoaXMsIGVuY29kZXJfc2FtcGxlX3JhdGVf
aHpfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJfbnVtX2NoYW5u
ZWxzXyk7CkBAIC0zMTgsMTQgKzMyNywxNCBAQCB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6U3RvcCgp
IHsKICAgfQogCiAgIFJlbW92ZUJpdHJhdGVPYnNlcnZlcigpOwotICBjaGFubmVsX3Byb3h5Xy0+
U3RvcFNlbmQoKTsKKyAgY2hhbm5lbF9zZW5kXy0+U3RvcFNlbmQoKTsKICAgc2VuZGluZ18gPSBm
YWxzZTsKICAgYXVkaW9fc3RhdGUoKS0+UmVtb3ZlU2VuZGluZ1N0cmVhbSh0aGlzKTsKIH0KIAog
dm9pZCBBdWRpb1NlbmRTdHJlYW06OlNlbmRBdWRpb0RhdGEoc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
RnJhbWU+IGF1ZGlvX2ZyYW1lKSB7CiAgIFJUQ19DSEVDS19SVU5TX1NFUklBTElaRUQoJmF1ZGlv
X2NhcHR1cmVfcmFjZV9jaGVja2VyXyk7Ci0gIGNoYW5uZWxfcHJveHlfLT5Qcm9jZXNzQW5kRW5j
b2RlQXVkaW8oc3RkOjptb3ZlKGF1ZGlvX2ZyYW1lKSk7CisgIGNoYW5uZWxfc2VuZF8tPlByb2Nl
c3NBbmRFbmNvZGVBdWRpbyhzdGQ6Om1vdmUoYXVkaW9fZnJhbWUpKTsKIH0KIAogYm9vbCBBdWRp
b1NlbmRTdHJlYW06OlNlbmRUZWxlcGhvbmVFdmVudChpbnQgcGF5bG9hZF90eXBlLApAQCAtMzMz
LDE0ICszNDIsMTQgQEAgYm9vbCBBdWRpb1NlbmRTdHJlYW06OlNlbmRUZWxlcGhvbmVFdmVudChp
bnQgcGF5bG9hZF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBkdXJhdGlvbl9tcykgewogICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2Fs
bGVkT25WYWxpZFRocmVhZCgpKTsKLSAgcmV0dXJuIGNoYW5uZWxfcHJveHlfLT5TZXRTZW5kVGVs
ZXBob25lRXZlbnRQYXlsb2FkVHlwZShwYXlsb2FkX3R5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZF9mcmVxdWVuY3kp
ICYmCi0gICAgICAgICBjaGFubmVsX3Byb3h5Xy0+U2VuZFRlbGVwaG9uZUV2ZW50T3V0YmFuZChl
dmVudCwgZHVyYXRpb25fbXMpOworICByZXR1cm4gY2hhbm5lbF9zZW5kXy0+U2V0U2VuZFRlbGVw
aG9uZUV2ZW50UGF5bG9hZFR5cGUocGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZF9mcmVxdWVuY3kpICYm
CisgICAgICAgICBjaGFubmVsX3NlbmRfLT5TZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGV2ZW50
LCBkdXJhdGlvbl9tcyk7CiB9CiAKIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpTZXRNdXRlZChib29s
IG11dGVkKSB7CiAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZh
bGlkVGhyZWFkKCkpOwotICBjaGFubmVsX3Byb3h5Xy0+U2V0SW5wdXRNdXRlKG11dGVkKTsKKyAg
Y2hhbm5lbF9zZW5kXy0+U2V0SW5wdXRNdXRlKG11dGVkKTsKIH0KIAogd2VicnRjOjpBdWRpb1Nl
bmRTdHJlYW06OlN0YXRzIEF1ZGlvU2VuZFN0cmVhbTo6R2V0U3RhdHMoKSBjb25zdCB7CkBAIC0z
NTIsOCArMzYxLDkgQEAgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW06OlN0YXRzIEF1ZGlvU2VuZFN0
cmVhbTo6R2V0U3RhdHMoCiAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxs
ZWRPblZhbGlkVGhyZWFkKCkpOwogICB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbTo6U3RhdHMgc3Rh
dHM7CiAgIHN0YXRzLmxvY2FsX3NzcmMgPSBjb25maWdfLnJ0cC5zc3JjOworICBzdGF0cy50YXJn
ZXRfYml0cmF0ZV9icHMgPSBjaGFubmVsX3NlbmRfLT5HZXRCaXRyYXRlKCk7CiAKLSAgd2VicnRj
OjpDYWxsU2VuZFN0YXRpc3RpY3MgY2FsbF9zdGF0cyA9IGNoYW5uZWxfcHJveHlfLT5HZXRSVENQ
U3RhdGlzdGljcygpOworICB3ZWJydGM6OkNhbGxTZW5kU3RhdGlzdGljcyBjYWxsX3N0YXRzID0g
Y2hhbm5lbF9zZW5kXy0+R2V0UlRDUFN0YXRpc3RpY3MoKTsKICAgc3RhdHMuYnl0ZXNfc2VudCA9
IGNhbGxfc3RhdHMuYnl0ZXNTZW50OwogICBzdGF0cy5wYWNrZXRzX3NlbnQgPSBjYWxsX3N0YXRz
LnBhY2tldHNTZW50OwogICAvLyBSVFQgaXNuJ3Qga25vd24gdW50aWwgYSBSVENQIHJlcG9ydCBp
cyByZWNlaXZlZC4gVW50aWwgdGhlbiwgVm9pY2VFbmdpbmUKQEAgLTM2Nyw3ICszNzcsNyBAQCB3
ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbTo6U3RhdHMgQXVkaW9TZW5kU3RyZWFtOjpHZXRTdGF0cygK
ICAgICBzdGF0cy5jb2RlY19wYXlsb2FkX3R5cGUgPSBzcGVjLnBheWxvYWRfdHlwZTsKIAogICAg
IC8vIEdldCBkYXRhIGZyb20gdGhlIGxhc3QgcmVtb3RlIFJUQ1AgcmVwb3J0LgotICAgIGZvciAo
Y29uc3QgYXV0byYgYmxvY2sgOiBjaGFubmVsX3Byb3h5Xy0+R2V0UmVtb3RlUlRDUFJlcG9ydEJs
b2NrcygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBibG9jayA6IGNoYW5uZWxfc2VuZF8tPkdl
dFJlbW90ZVJUQ1BSZXBvcnRCbG9ja3MoKSkgewogICAgICAgLy8gTG9va3VwIHJlcG9ydCBmb3Ig
c2VuZCBzc3JjIG9ubHkuCiAgICAgICBpZiAoYmxvY2suc291cmNlX1NTUkMgPT0gc3RhdHMubG9j
YWxfc3NyYykgewogICAgICAgICBzdGF0cy5wYWNrZXRzX2xvc3QgPSBibG9jay5jdW11bGF0aXZl
X251bV9wYWNrZXRzX2xvc3Q7CkBAIC0zODksNyArMzk5LDcgQEAgd2VicnRjOjpBdWRpb1NlbmRT
dHJlYW06OlN0YXRzIEF1ZGlvU2VuZFN0cmVhbTo6R2V0U3RhdHMoCiAgIHN0YXRzLnRvdGFsX2lu
cHV0X2R1cmF0aW9uID0gaW5wdXRfc3RhdHMudG90YWxfZHVyYXRpb247CiAKICAgc3RhdHMudHlw
aW5nX25vaXNlX2RldGVjdGVkID0gYXVkaW9fc3RhdGUoKS0+dHlwaW5nX25vaXNlX2RldGVjdGVk
KCk7Ci0gIHN0YXRzLmFuYV9zdGF0aXN0aWNzID0gY2hhbm5lbF9wcm94eV8tPkdldEFOQVN0YXRp
c3RpY3MoKTsKKyAgc3RhdHMuYW5hX3N0YXRpc3RpY3MgPSBjaGFubmVsX3NlbmRfLT5HZXRBTkFT
dGF0aXN0aWNzKCk7CiAgIFJUQ19EQ0hFQ0soYXVkaW9fc3RhdGVfLT5hdWRpb19wcm9jZXNzaW5n
KCkpOwogICBzdGF0cy5hcG1fc3RhdGlzdGljcyA9CiAgICAgICBhdWRpb19zdGF0ZV8tPmF1ZGlv
X3Byb2Nlc3NpbmcoKS0+R2V0U3RhdGlzdGljcyhoYXNfcmVtb3RlX3RyYWNrcyk7CkBAIC00MDYs
MjcgKzQxNiwyNCBAQCBib29sIEF1ZGlvU2VuZFN0cmVhbTo6RGVsaXZlclJ0Y3AoY29uc3QgdWlu
dDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKSB7CiAgIC8vIGNhbGxzIG9uIHRoZSB3b3JrZXIg
dGhyZWFkLiBXZSBzaG91bGQgbW92ZSB0b3dhcmRzIGFsd2F5cyB1c2luZyBhIG5ldHdvcmsKICAg
Ly8gdGhyZWFkLiBUaGVuIHRoaXMgY2hlY2sgY2FuIGJlIGVuYWJsZWQuCiAgIC8vIFJUQ19EQ0hF
Q0soIXdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgcmV0
dXJuIGNoYW5uZWxfcHJveHlfLT5SZWNlaXZlZFJUQ1BQYWNrZXQocGFja2V0LCBsZW5ndGgpOwor
ICByZXR1cm4gY2hhbm5lbF9zZW5kXy0+UmVjZWl2ZWRSVENQUGFja2V0KHBhY2tldCwgbGVuZ3Ro
KTsKIH0KIAotdWludDMyX3QgQXVkaW9TZW5kU3RyZWFtOjpPbkJpdHJhdGVVcGRhdGVkKHVpbnQz
Ml90IGJpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IHJ0dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IGJ3ZV9wZXJpb2RfbXMpIHsKK3VpbnQzMl90IEF1ZGlvU2Vu
ZFN0cmVhbTo6T25CaXRyYXRlVXBkYXRlZChCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUp
IHsKICAgLy8gQSBzZW5kIHN0cmVhbSBtYXkgYmUgYWxsb2NhdGVkIGEgYml0cmF0ZSBvZiB6ZXJv
IGlmIHRoZSBhbGxvY2F0b3IgZGVjaWRlcwogICAvLyB0byBkaXNhYmxlIGl0LiBGb3Igbm93IHdl
IGlnbm9yZSB0aGlzIGRlY2lzaW9uIGFuZCBrZWVwIHNlbmRpbmcgb24gbWluCiAgIC8vIGJpdHJh
dGUuCi0gIGlmIChiaXRyYXRlX2JwcyA9PSAwKSB7Ci0gICAgYml0cmF0ZV9icHMgPSBjb25maWdf
Lm1pbl9iaXRyYXRlX2JwczsKKyAgaWYgKHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5Jc1plcm8oKSkg
eworICAgIHVwZGF0ZS50YXJnZXRfYml0cmF0ZSA9IERhdGFSYXRlOjpicHMoY29uZmlnXy5taW5f
Yml0cmF0ZV9icHMpOwogICB9Ci0gIFJUQ19EQ0hFQ0tfR0UoYml0cmF0ZV9icHMsIHN0YXRpY19j
YXN0PHVpbnQzMl90Pihjb25maWdfLm1pbl9iaXRyYXRlX2JwcykpOworICBSVENfRENIRUNLX0dF
KHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5icHM8aW50PigpLCBjb25maWdfLm1pbl9iaXRyYXRlX2Jw
cyk7CiAgIC8vIFRoZSBiaXRyYXRlIGFsbG9jYXRvciBtaWdodCBhbGxvY2F0ZSBhbiBoaWdoZXIg
dGhhbiBtYXggY29uZmlndXJlZCBiaXRyYXRlCiAgIC8vIGlmIHRoZXJlIGlzIHJvb20sIHRvIGFs
bG93IGZvciwgYXMgZXhhbXBsZSwgZXh0cmEgRkVDLiBJZ25vcmUgdGhhdCBmb3Igbm93LgotICBj
b25zdCB1aW50MzJfdCBtYXhfYml0cmF0ZV9icHMgPSBjb25maWdfLm1heF9iaXRyYXRlX2JwczsK
LSAgaWYgKGJpdHJhdGVfYnBzID4gbWF4X2JpdHJhdGVfYnBzKQotICAgIGJpdHJhdGVfYnBzID0g
bWF4X2JpdHJhdGVfYnBzOworICBjb25zdCBEYXRhUmF0ZSBtYXhfYml0cmF0ZSA9IERhdGFSYXRl
OjpicHMoY29uZmlnXy5tYXhfYml0cmF0ZV9icHMpOworICBpZiAodXBkYXRlLnRhcmdldF9iaXRy
YXRlID4gbWF4X2JpdHJhdGUpCisgICAgdXBkYXRlLnRhcmdldF9iaXRyYXRlID0gbWF4X2JpdHJh
dGU7CiAKLSAgY2hhbm5lbF9wcm94eV8tPlNldEJpdHJhdGUoYml0cmF0ZV9icHMsIGJ3ZV9wZXJp
b2RfbXMpOworICBjaGFubmVsX3NlbmRfLT5PbkJpdHJhdGVBbGxvY2F0aW9uKHVwZGF0ZSk7CiAK
ICAgLy8gVGhlIGFtb3VudCBvZiBhdWRpbyBwcm90ZWN0aW9uIGlzIG5vdCBleHBvc2VkIGJ5IHRo
ZSBlbmNvZGVyLCBoZW5jZQogICAvLyBhbHdheXMgcmV0dXJuaW5nIDAuCkBAIC00NjAsMjUgKzQ2
NywyNCBAQCB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6T25QYWNrZXRGZWVkYmFja1ZlY3RvcigKICAg
Ly8gdGhlIHByZXZpb3VzbHkgc2VudCB2YWx1ZSBpcyBubyBsb25nZXIgcmVsZXZhbnQuIFRoaXMg
d2lsbCBiZSB0YWtlbiBjYXJlCiAgIC8vIG9mIHdpdGggc29tZSByZWZhY3RvcmluZyB3aGljaCBp
cyBub3cgYmVpbmcgZG9uZS4KICAgaWYgKHBscikgewotICAgIGNoYW5uZWxfcHJveHlfLT5PblR3
Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRlKCpwbHIpOworICAgIGNoYW5uZWxfc2VuZF8tPk9u
VHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUoKnBscik7CiAgIH0KICAgaWYgKHJwbHIpIHsK
LSAgICBjaGFubmVsX3Byb3h5Xy0+T25SZWNvdmVyYWJsZVVwbGlua1BhY2tldExvc3NSYXRlKCpy
cGxyKTsKKyAgICBjaGFubmVsX3NlbmRfLT5PblJlY292ZXJhYmxlVXBsaW5rUGFja2V0TG9zc1Jh
dGUoKnJwbHIpOwogICB9CiB9CiAKIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpTZXRUcmFuc3BvcnRP
dmVyaGVhZChpbnQgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpIHsKICAgUlRDX0RDSEVD
Syh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5u
ZWxfcHJveHlfLT5TZXRUcmFuc3BvcnRPdmVyaGVhZCh0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3Bh
Y2tldCk7CisgIGNoYW5uZWxfc2VuZF8tPlNldFRyYW5zcG9ydE92ZXJoZWFkKHRyYW5zcG9ydF9v
dmVyaGVhZF9wZXJfcGFja2V0KTsKIH0KIAogUnRwU3RhdGUgQXVkaW9TZW5kU3RyZWFtOjpHZXRS
dHBTdGF0ZSgpIGNvbnN0IHsKICAgcmV0dXJuIHJ0cF9ydGNwX21vZHVsZV8tPkdldFJ0cFN0YXRl
KCk7CiB9CiAKLWNvbnN0IHZvZTo6Q2hhbm5lbFNlbmRQcm94eSYgQXVkaW9TZW5kU3RyZWFtOjpH
ZXRDaGFubmVsUHJveHkoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0soY2hhbm5lbF9wcm94eV8uZ2V0
KCkpOwotICByZXR1cm4gKmNoYW5uZWxfcHJveHlfLmdldCgpOworY29uc3Qgdm9lOjpDaGFubmVs
U2VuZEludGVyZmFjZSogQXVkaW9TZW5kU3RyZWFtOjpHZXRDaGFubmVsKCkgY29uc3QgeworICBy
ZXR1cm4gY2hhbm5lbF9zZW5kXy5nZXQoKTsKIH0KIAogaW50ZXJuYWw6OkF1ZGlvU3RhdGUqIEF1
ZGlvU2VuZFN0cmVhbTo6YXVkaW9fc3RhdGUoKSB7CkBAIC01NDksMTIgKzU1NSwxMiBAQCBib29s
IEF1ZGlvU2VuZFN0cmVhbTo6U2V0dXBTZW5kQ29kZWMoQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0s
CiAKICAgLy8gV3JhcCB0aGUgZW5jb2RlciBpbiBhIGFuIEF1ZGlvRW5jb2RlckNORywgaWYgVkFE
IGlzIGVuYWJsZWQuCiAgIGlmIChzcGVjLmNuZ19wYXlsb2FkX3R5cGUpIHsKLSAgICBBdWRpb0Vu
Y29kZXJDbmc6OkNvbmZpZyBjbmdfY29uZmlnOworICAgIEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyBj
bmdfY29uZmlnOwogICAgIGNuZ19jb25maWcubnVtX2NoYW5uZWxzID0gZW5jb2Rlci0+TnVtQ2hh
bm5lbHMoKTsKICAgICBjbmdfY29uZmlnLnBheWxvYWRfdHlwZSA9ICpzcGVjLmNuZ19wYXlsb2Fk
X3R5cGU7CiAgICAgY25nX2NvbmZpZy5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShlbmNvZGVy
KTsKICAgICBjbmdfY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkTm9ybWFsOwotICAgIGVuY29k
ZXIucmVzZXQobmV3IEF1ZGlvRW5jb2RlckNuZyhzdGQ6Om1vdmUoY25nX2NvbmZpZykpKTsKKyAg
ICBlbmNvZGVyID0gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2RlcihzdGQ6Om1vdmUoY25nX2NvbmZp
ZykpOwogCiAgICAgc3RyZWFtLT5SZWdpc3RlckNuZ1BheWxvYWRUeXBlKAogICAgICAgICAqc3Bl
Yy5jbmdfcGF5bG9hZF90eXBlLApAQCAtNTYzLDggKzU2OSw4IEBAIGJvb2wgQXVkaW9TZW5kU3Ry
ZWFtOjpTZXR1cFNlbmRDb2RlYyhBdWRpb1NlbmRTdHJlYW0qIHN0cmVhbSwKIAogICBzdHJlYW0t
PlN0b3JlRW5jb2RlclByb3BlcnRpZXMoZW5jb2Rlci0+U2FtcGxlUmF0ZUh6KCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLT5OdW1DaGFubmVscygpKTsKLSAgc3Ry
ZWFtLT5jaGFubmVsX3Byb3h5Xy0+U2V0RW5jb2RlcihuZXdfY29uZmlnLnNlbmRfY29kZWNfc3Bl
Yy0+cGF5bG9hZF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bW92ZShlbmNvZGVyKSk7CisgIHN0cmVhbS0+Y2hhbm5lbF9zZW5kXy0+U2V0RW5jb2Rlcihu
ZXdfY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+cGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGVuY29kZXIpKTsKICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTYxMCw3ICs2MTYsNyBAQCBib29sIEF1ZGlvU2VuZFN0cmVhbTo6UmVjb25maWd1
cmVTZW5kQ29kZWMoQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0sCiAgIGlmICghZG9fbm90X3VwZGF0
ZV90YXJnZXRfYml0cmF0ZSAmJiBuZXdfdGFyZ2V0X2JpdHJhdGVfYnBzICYmCiAgICAgICBuZXdf
dGFyZ2V0X2JpdHJhdGVfYnBzICE9CiAgICAgICAgICAgb2xkX2NvbmZpZy5zZW5kX2NvZGVjX3Nw
ZWMtPnRhcmdldF9iaXRyYXRlX2JwcykgewotICAgIENhbGxFbmNvZGVyKHN0cmVhbS0+Y2hhbm5l
bF9wcm94eV8sIFsmXShBdWRpb0VuY29kZXIqIGVuY29kZXIpIHsKKyAgICBDYWxsRW5jb2Rlcihz
dHJlYW0tPmNoYW5uZWxfc2VuZF8sIFsmXShBdWRpb0VuY29kZXIqIGVuY29kZXIpIHsKICAgICAg
IGVuY29kZXItPk9uUmVjZWl2ZWRUYXJnZXRBdWRpb0JpdHJhdGUoKm5ld190YXJnZXRfYml0cmF0
ZV9icHMpOwogICAgIH0pOwogICB9CkBAIC02MjgsNyArNjM0LDcgQEAgdm9pZCBBdWRpb1NlbmRT
dHJlYW06OlJlY29uZmlndXJlQU5BKEF1ZGlvU2VuZFN0cmVhbSogc3RyZWFtLAogICAgIHJldHVy
bjsKICAgfQogICBpZiAobmV3X2NvbmZpZy5hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnKSB7
Ci0gICAgQ2FsbEVuY29kZXIoc3RyZWFtLT5jaGFubmVsX3Byb3h5XywgWyZdKEF1ZGlvRW5jb2Rl
ciogZW5jb2RlcikgeworICAgIENhbGxFbmNvZGVyKHN0cmVhbS0+Y2hhbm5lbF9zZW5kXywgWyZd
KEF1ZGlvRW5jb2RlciogZW5jb2RlcikgewogICAgICAgaWYgKGVuY29kZXItPkVuYWJsZUF1ZGlv
TmV0d29ya0FkYXB0b3IoCiAgICAgICAgICAgICAgICpuZXdfY29uZmlnLmF1ZGlvX25ldHdvcmtf
YWRhcHRvcl9jb25maWcsIHN0cmVhbS0+ZXZlbnRfbG9nXykpIHsKICAgICAgICAgUlRDX0RMT0co
TFNfSU5GTykgPDwgIkF1ZGlvIG5ldHdvcmsgYWRhcHRvciBlbmFibGVkIG9uIFNTUkMgIgpAQCAt
NjM4LDcgKzY0NCw3IEBAIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpSZWNvbmZpZ3VyZUFOQShBdWRp
b1NlbmRTdHJlYW0qIHN0cmVhbSwKICAgICAgIH0KICAgICB9KTsKICAgfSBlbHNlIHsKLSAgICBD
YWxsRW5jb2RlcihzdHJlYW0tPmNoYW5uZWxfcHJveHlfLCBbJl0oQXVkaW9FbmNvZGVyKiBlbmNv
ZGVyKSB7CisgICAgQ2FsbEVuY29kZXIoc3RyZWFtLT5jaGFubmVsX3NlbmRfLCBbJl0oQXVkaW9F
bmNvZGVyKiBlbmNvZGVyKSB7CiAgICAgICBlbmNvZGVyLT5EaXNhYmxlQXVkaW9OZXR3b3JrQWRh
cHRvcigpOwogICAgIH0pOwogICAgIFJUQ19ETE9HKExTX0lORk8pIDw8ICJBdWRpbyBuZXR3b3Jr
IGFkYXB0b3IgZGlzYWJsZWQgb24gU1NSQyAiCkBAIC02NjIsNyArNjY4LDcgQEAgdm9pZCBBdWRp
b1NlbmRTdHJlYW06OlJlY29uZmlndXJlQ05HKEF1ZGlvU2VuZFN0cmVhbSogc3RyZWFtLAogICB9
CiAKICAgLy8gV3JhcCBvciB1bndyYXAgdGhlIGVuY29kZXIgaW4gYW4gQXVkaW9FbmNvZGVyQ05H
LgotICBzdHJlYW0tPmNoYW5uZWxfcHJveHlfLT5Nb2RpZnlFbmNvZGVyKAorICBzdHJlYW0tPmNo
YW5uZWxfc2VuZF8tPk1vZGlmeUVuY29kZXIoCiAgICAgICBbJl0oc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvRW5jb2Rlcj4qIGVuY29kZXJfcHRyKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b0VuY29kZXI+IG9sZF9lbmNvZGVyKHN0ZDo6bW92ZSgqZW5jb2Rlcl9wdHIpKTsKICAgICAgICAg
YXV0byBzdWJfZW5jb2RlcnMgPSBvbGRfZW5jb2Rlci0+UmVjbGFpbUNvbnRhaW5lZEVuY29kZXJz
KCk7CkBAIC02NzYsMTIgKzY4MiwxMiBAQCB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6UmVjb25maWd1
cmVDTkcoQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0sCiAgICAgICAgICAgb2xkX2VuY29kZXIgPSBz
dGQ6Om1vdmUodG1wKTsKICAgICAgICAgfQogICAgICAgICBpZiAobmV3X2NvbmZpZy5zZW5kX2Nv
ZGVjX3NwZWMtPmNuZ19wYXlsb2FkX3R5cGUpIHsKLSAgICAgICAgICBBdWRpb0VuY29kZXJDbmc6
OkNvbmZpZyBjb25maWc7CisgICAgICAgICAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnIGNvbmZpZzsK
ICAgICAgICAgICBjb25maWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUob2xkX2VuY29kZXIp
OwogICAgICAgICAgIGNvbmZpZy5udW1fY2hhbm5lbHMgPSBjb25maWcuc3BlZWNoX2VuY29kZXIt
Pk51bUNoYW5uZWxzKCk7CiAgICAgICAgICAgY29uZmlnLnBheWxvYWRfdHlwZSA9ICpuZXdfY29u
ZmlnLnNlbmRfY29kZWNfc3BlYy0+Y25nX3BheWxvYWRfdHlwZTsKICAgICAgICAgICBjb25maWcu
dmFkX21vZGUgPSBWYWQ6OmtWYWROb3JtYWw7Ci0gICAgICAgICAgZW5jb2Rlcl9wdHItPnJlc2V0
KG5ldyBBdWRpb0VuY29kZXJDbmcoc3RkOjptb3ZlKGNvbmZpZykpKTsKKyAgICAgICAgICAqZW5j
b2Rlcl9wdHIgPSBDcmVhdGVDb21mb3J0Tm9pc2VFbmNvZGVyKHN0ZDo6bW92ZShjb25maWcpKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAqZW5jb2Rlcl9wdHIgPSBzdGQ6Om1vdmUob2xk
X2VuY29kZXIpOwogICAgICAgICB9CkBAIC03MDgsMTMgKzcxNCwxOCBAQCB2b2lkIEF1ZGlvU2Vu
ZFN0cmVhbTo6UmVjb25maWd1cmVCaXRyYXRlT2JzZXJ2ZXIoCiAKICAgYm9vbCBoYXNfdHJhbnNw
b3J0X3NlcXVlbmNlX251bWJlciA9IG5ld190cmFuc3BvcnRfc2VxX251bV9pZCAhPSAwOwogICBp
ZiAobmV3X2NvbmZpZy5taW5fYml0cmF0ZV9icHMgIT0gLTEgJiYgbmV3X2NvbmZpZy5tYXhfYml0
cmF0ZV9icHMgIT0gLTEgJiYKKyAgICAgICFuZXdfY29uZmlnLmhhc19kc2NwICYmCiAgICAgICAo
aGFzX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgfHwKICAgICAgICAhd2VicnRjOjpmaWVsZF90
cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tU2VuZFNpZGVCd2UiKSkpIHsKKyAgICBzdHJl
YW0tPnJ0cF90cmFuc3BvcnRfLT5wYWNrZXRfc2VuZGVyKCktPlNldEFjY291bnRGb3JBdWRpb1Bh
Y2tldHModHJ1ZSk7CiAgICAgc3RyZWFtLT5Db25maWd1cmVCaXRyYXRlT2JzZXJ2ZXIoCiAgICAg
ICAgIG5ld19jb25maWcubWluX2JpdHJhdGVfYnBzLCBuZXdfY29uZmlnLm1heF9iaXRyYXRlX2Jw
cywKICAgICAgICAgbmV3X2NvbmZpZy5iaXRyYXRlX3ByaW9yaXR5LCBoYXNfdHJhbnNwb3J0X3Nl
cXVlbmNlX251bWJlcik7CisgICAgc3RyZWFtLT5ydHBfcnRjcF9tb2R1bGVfLT5TZXRBc1BhcnRP
ZkFsbG9jYXRpb24odHJ1ZSk7CiAgIH0gZWxzZSB7CisgICAgc3RyZWFtLT5ydHBfdHJhbnNwb3J0
Xy0+cGFja2V0X3NlbmRlcigpLT5TZXRBY2NvdW50Rm9yQXVkaW9QYWNrZXRzKGZhbHNlKTsKICAg
ICBzdHJlYW0tPlJlbW92ZUJpdHJhdGVPYnNlcnZlcigpOworICAgIHN0cmVhbS0+cnRwX3J0Y3Bf
bW9kdWxlXy0+U2V0QXNQYXJ0T2ZBbGxvY2F0aW9uKGZhbHNlKTsKICAgfQogfQogCkBAIC03MjQs
NyArNzM1LDcgQEAgdm9pZCBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZ3VyZUJpdHJhdGVPYnNlcnZl
cihpbnQgbWluX2JpdHJhdGVfYnBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGhhc19wYWNrZXRfZmVlZGJhY2spIHsKICAgUlRDX0RDSEVDSyh3
b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAgIFJUQ19EQ0hF
Q0tfR0UobWF4X2JpdHJhdGVfYnBzLCBtaW5fYml0cmF0ZV9icHMpOwotICBydGM6OkV2ZW50IHRo
cmVhZF9zeW5jX2V2ZW50KGZhbHNlIC8qIG1hbnVhbF9yZXNldCAqLywgZmFsc2UpOworICBydGM6
OkV2ZW50IHRocmVhZF9zeW5jX2V2ZW50OwogICB3b3JrZXJfcXVldWVfLT5Qb3N0VGFzayhbJl0g
ewogICAgIC8vIFdlIG1heSBnZXQgYSBjYWxsYmFjayBpbW1lZGlhdGVseSBhcyB0aGUgb2JzZXJ2
ZXIgaXMgcmVnaXN0ZXJlZCwgc28gbWFrZQogICAgIC8vIHN1cmUgdGhlIGJpdHJhdGUgbGltaXRz
IGluIGNvbmZpZ18gYXJlIHVwLXRvLWRhdGUuCkBAIC03NDQsNyArNzU1LDcgQEAgdm9pZCBBdWRp
b1NlbmRTdHJlYW06OkNvbmZpZ3VyZUJpdHJhdGVPYnNlcnZlcihpbnQgbWluX2JpdHJhdGVfYnBz
LAogCiB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6UmVtb3ZlQml0cmF0ZU9ic2VydmVyKCkgewogICBS
VENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsK
LSAgcnRjOjpFdmVudCB0aHJlYWRfc3luY19ldmVudChmYWxzZSAvKiBtYW51YWxfcmVzZXQgKi8s
IGZhbHNlKTsKKyAgcnRjOjpFdmVudCB0aHJlYWRfc3luY19ldmVudDsKICAgd29ya2VyX3F1ZXVl
Xy0+UG9zdFRhc2soW3RoaXMsICZ0aHJlYWRfc3luY19ldmVudF0gewogICAgIGJpdHJhdGVfYWxs
b2NhdG9yXy0+UmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CiAgICAgdGhyZWFkX3N5bmNfZXZlbnQuU2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hdWRpby9hdWRpb19zZW5kX3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uaAppbmRleCAxZWE2NzZiNjVk
Yjc0NTIyMTg2MWFhNTFkNDMwOTQ5OGM2YWFjOTFhLi5iZjk0OTAxZWYwNTc1MGYzMDY4ZGVlOTAz
YTZkMGY1Y2JlZjZkZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19zZW5kX3N0cmVhbS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtLmgK
QEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgog
Ci0jaW5jbHVkZSAiYXVkaW8vdGltZV9pbnRlcnZhbC5oIgorI2luY2x1ZGUgImF1ZGlvL2NoYW5u
ZWxfc2VuZC5oIgogI2luY2x1ZGUgImF1ZGlvL3RyYW5zcG9ydF9mZWVkYmFja19wYWNrZXRfbG9z
c190cmFja2VyLmgiCiAjaW5jbHVkZSAiY2FsbC9hdWRpb19zZW5kX3N0cmVhbS5oIgogI2luY2x1
ZGUgImNhbGwvYXVkaW9fc3RhdGUuaCIKQEAgLTMwLDEwICszMCw2IEBAIGNsYXNzIFJ0Y3BCYW5k
d2lkdGhPYnNlcnZlcjsKIGNsYXNzIFJ0Y3BSdHRTdGF0czsKIGNsYXNzIFJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJTZW5kSW50ZXJmYWNlOwogCi1uYW1lc3BhY2Ugdm9lIHsKLWNsYXNzIENoYW5uZWxT
ZW5kUHJveHk7Ci19ICAvLyBuYW1lc3BhY2Ugdm9lCi0KIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiBj
bGFzcyBBdWRpb1N0YXRlOwogCkBAIC00NSwyMyArNDEsMjEgQEAgY2xhc3MgQXVkaW9TZW5kU3Ry
ZWFtIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtLAogICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4mIGF1ZGlv
X3N0YXRlLAogICAgICAgICAgICAgICAgICAgcnRjOjpUYXNrUXVldWUqIHdvcmtlcl9xdWV1ZSwK
ICAgICAgICAgICAgICAgICAgIFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwK
LSAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0
cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICBCaXRyYXRlQWxsb2NhdG9yKiBiaXRyYXRlX2Fs
bG9jYXRvciwKKyAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50
ZXJmYWNlKiBydHBfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgQml0cmF0ZUFsbG9jYXRv
ckludGVyZmFjZSogYml0cmF0ZV9hbGxvY2F0b3IsCiAgICAgICAgICAgICAgICAgICBSdGNFdmVu
dExvZyogZXZlbnRfbG9nLAogICAgICAgICAgICAgICAgICAgUnRjcFJ0dFN0YXRzKiBydGNwX3J0
dF9zdGF0cywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFJ0cFN0YXRl
PiYgc3VzcGVuZGVkX3J0cF9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgIFRpbWVJbnRlcnZhbCog
b3ZlcmFsbF9jYWxsX2xpZmV0aW1lKTsKLSAgLy8gRm9yIHVuaXQgdGVzdHMsIHdoaWNoIG5lZWQg
dG8gc3VwcGx5IGEgbW9jayBjaGFubmVsIHByb3h5LgorICAgICAgICAgICAgICAgICAgY29uc3Qg
YWJzbDo6b3B0aW9uYWw8UnRwU3RhdGU+JiBzdXNwZW5kZWRfcnRwX3N0YXRlKTsKKyAgLy8gRm9y
IHVuaXQgdGVzdHMsIHdoaWNoIG5lZWQgdG8gc3VwcGx5IGEgbW9jayBDaGFubmVsU2VuZC4KICAg
QXVkaW9TZW5kU3RyZWFtKGNvbnN0IHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpDb25maWcmIGNv
bmZpZywKICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkF1ZGlvU3RhdGU+JiBhdWRpb19zdGF0ZSwKICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGFza1F1
ZXVlKiB3b3JrZXJfcXVldWUsCi0gICAgICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRDb250cm9s
bGVyU2VuZEludGVyZmFjZSogdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgQml0cmF0ZUFs
bG9jYXRvciogYml0cmF0ZV9hbGxvY2F0b3IsCisgICAgICAgICAgICAgICAgICBSdHBUcmFuc3Bv
cnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogcnRwX3RyYW5zcG9ydCwKKyAgICAgICAgICAgICAg
ICAgIEJpdHJhdGVBbGxvY2F0b3JJbnRlcmZhY2UqIGJpdHJhdGVfYWxsb2NhdG9yLAogICAgICAg
ICAgICAgICAgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKICAgICAgICAgICAgICAgICAgIFJ0
Y3BSdHRTdGF0cyogcnRjcF9ydHRfc3RhdHMsCiAgICAgICAgICAgICAgICAgICBjb25zdCBhYnNs
OjpvcHRpb25hbDxSdHBTdGF0ZT4mIHN1c3BlbmRlZF9ydHBfc3RhdGUsCi0gICAgICAgICAgICAg
ICAgICBUaW1lSW50ZXJ2YWwqIG92ZXJhbGxfY2FsbF9saWZldGltZSwKLSAgICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxTZW5kUHJveHk+IGNoYW5uZWxfcHJveHkp
OworICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFNlbmRJbnRl
cmZhY2U+IGNoYW5uZWxfc2VuZCk7CiAgIH5BdWRpb1NlbmRTdHJlYW0oKSBvdmVycmlkZTsKIAog
ICAvLyB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbSBpbXBsZW1lbnRhdGlvbi4KQEAgLTgzLDEwICs3
Nyw3IEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OkF1ZGlv
U2VuZFN0cmVhbSwKICAgYm9vbCBEZWxpdmVyUnRjcChjb25zdCB1aW50OF90KiBwYWNrZXQsIHNp
emVfdCBsZW5ndGgpOwogCiAgIC8vIEltcGxlbWVudHMgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVy
LgotICB1aW50MzJfdCBPbkJpdHJhdGVVcGRhdGVkKHVpbnQzMl90IGJpdHJhdGVfYnBzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJ0dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQ2NF90IGJ3ZV9wZXJpb2RfbXMpIG92ZXJyaWRlOworICB1aW50MzJfdCBPbkJpdHJh
dGVVcGRhdGVkKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSkgb3ZlcnJpZGU7CiAKICAg
Ly8gRnJvbSBQYWNrZXRGZWVkYmFja09ic2VydmVyLgogICB2b2lkIE9uUGFja2V0QWRkZWQodWlu
dDMyX3Qgc3NyYywgdWludDE2X3Qgc2VxX251bSkgb3ZlcnJpZGU7CkBAIC05Niw3ICs4Nyw3IEBA
IGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OkF1ZGlvU2VuZFN0
cmVhbSwKICAgdm9pZCBTZXRUcmFuc3BvcnRPdmVyaGVhZChpbnQgdHJhbnNwb3J0X292ZXJoZWFk
X3Blcl9wYWNrZXQpOwogCiAgIFJ0cFN0YXRlIEdldFJ0cFN0YXRlKCkgY29uc3Q7Ci0gIGNvbnN0
IHZvZTo6Q2hhbm5lbFNlbmRQcm94eSYgR2V0Q2hhbm5lbFByb3h5KCkgY29uc3Q7CisgIGNvbnN0
IHZvZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2UqIEdldENoYW5uZWwoKSBjb25zdDsKIAogIHByaXZh
dGU6CiAgIGNsYXNzIFRpbWVkVHJhbnNwb3J0OwpAQCAtMTMzLDE1ICsxMjQsMTUgQEAgY2xhc3Mg
QXVkaW9TZW5kU3RyZWFtIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtLAog
ICBydGM6OlRhc2tRdWV1ZSogd29ya2VyX3F1ZXVlXzsKICAgd2VicnRjOjpBdWRpb1NlbmRTdHJl
YW06OkNvbmZpZyBjb25maWdfOwogICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0
YXRlPiBhdWRpb19zdGF0ZV87Ci0gIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxTZW5kUHJv
eHk+IGNoYW5uZWxfcHJveHlfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVs
U2VuZEludGVyZmFjZT4gY2hhbm5lbF9zZW5kXzsKICAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50
X2xvZ187CiAKICAgaW50IGVuY29kZXJfc2FtcGxlX3JhdGVfaHpfID0gMDsKICAgc2l6ZV90IGVu
Y29kZXJfbnVtX2NoYW5uZWxzXyA9IDA7CiAgIGJvb2wgc2VuZGluZ18gPSBmYWxzZTsKIAotICBC
aXRyYXRlQWxsb2NhdG9yKiBjb25zdCBiaXRyYXRlX2FsbG9jYXRvcl87Ci0gIFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiBjb25zdCB0cmFuc3BvcnRfOworICBCaXRyYXRlQWxs
b2NhdG9ySW50ZXJmYWNlKiBjb25zdCBiaXRyYXRlX2FsbG9jYXRvcl87CisgIFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiBjb25zdCBydHBfdHJhbnNwb3J0XzsKIAogICBydGM6
OkNyaXRpY2FsU2VjdGlvbiBwYWNrZXRfbG9zc190cmFja2VyX2NzXzsKICAgVHJhbnNwb3J0RmVl
ZGJhY2tQYWNrZXRMb3NzVHJhY2tlciBwYWNrZXRfbG9zc190cmFja2VyXwpAQCAtMTUwLDEwICsx
NDEsNiBAQCBjbGFzcyBBdWRpb1NlbmRTdHJlYW0gZmluYWwgOiBwdWJsaWMgd2VicnRjOjpBdWRp
b1NlbmRTdHJlYW0sCiAgIFJ0cFJ0Y3AqIHJ0cF9ydGNwX21vZHVsZV87CiAgIGFic2w6Om9wdGlv
bmFsPFJ0cFN0YXRlPiBjb25zdCBzdXNwZW5kZWRfcnRwX3N0YXRlXzsKIAotICBzdGQ6OnVuaXF1
ZV9wdHI8VGltZWRUcmFuc3BvcnQ+IHRpbWVkX3NlbmRfdHJhbnNwb3J0X2FkYXB0ZXJfOwotICBU
aW1lSW50ZXJ2YWwgYWN0aXZlX2xpZmV0aW1lXzsKLSAgVGltZUludGVydmFsKiBvdmVyYWxsX2Nh
bGxfbGlmZXRpbWVfID0gbnVsbHB0cjsKLQogICAvLyBSRkMgNTI4NTogRWFjaCBkaXN0aW5jdCBl
eHRlbnNpb24gTVVTVCBoYXZlIGEgdW5pcXVlIElELiBUaGUgdmFsdWUgMCBpcwogICAvLyByZXNl
cnZlZCBmb3IgcGFkZGluZyBhbmQgTVVTVCBOT1QgYmUgdXNlZCBhcyBhIGxvY2FsIGlkZW50aWZp
ZXIuCiAgIC8vIFNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIHVzZSAwIGhlcmUgdG8gaW5kaWNhdGUg
Im5vdCBjb25maWd1cmVkIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9z
dHJlYW1fdW5pdHRlc3QuY2MKaW5kZXggMGE5NTRmODZkNjI5YzU1OTVkMjAxNGQ3NGMxMzc4MjY4
ZGUxZTZlMC4uZTQwMGFkYTBlNWFmNDA5YjQyYWM2OGI0YTY2OGJmMWEzNGI0MWRhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVk
aW9fc2VuZF9zdHJlYW1fdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW1fdW5pdHRlc3QuY2MKQEAg
LTEzLDcgKzEzLDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9y
eS9tZW1vcnkuaCIKLSNpbmNsdWRlICJhcGkvdW5pdHMvdGltZV9kZWx0YS5oIgorI2luY2x1ZGUg
ImFwaS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9yLmgiCiAjaW5jbHVkZSAiYXVkaW8vYXVkaW9f
c2VuZF9zdHJlYW0uaCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19zdGF0ZS5oIgogI2luY2x1ZGUg
ImF1ZGlvL2NvbnZlcnNpb24uaCIKQEAgLTI3LDEyICsyNywxMCBAQAogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydGNwX2JhbmR3aWR0aF9vYnNlcnZlci5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydGNwX3J0dF9zdGF0cy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2Zha2VjbG9jay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKICNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9tb2NrX2F1ZGlvX2VuY29kZXIu
aCIKICNpbmNsdWRlICJ0ZXN0L21vY2tfYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVk
ZSAidGVzdC9tb2NrX3RyYW5zcG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFj
ZSB0ZXN0IHsKQEAgLTQxLDYgKzM5LDcgQEAgbmFtZXNwYWNlIHsKIHVzaW5nIHRlc3Rpbmc6Ol87
CiB1c2luZyB0ZXN0aW5nOjpFcTsKIHVzaW5nIHRlc3Rpbmc6Ok5lOwordXNpbmcgdGVzdGluZzo6
RmllbGQ7CiB1c2luZyB0ZXN0aW5nOjpJbnZva2U7CiB1c2luZyB0ZXN0aW5nOjpSZXR1cm47CiB1
c2luZyB0ZXN0aW5nOjpTdHJFcTsKQEAgLTEyOCw3ICsxMjcsNyBAQCBydGM6OnNjb3BlZF9yZWZw
dHI8TW9ja0F1ZGlvRW5jb2RlckZhY3Rvcnk+IFNldHVwRW5jb2RlckZhY3RvcnlNb2NrKCkgewog
CiBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKICAgQ29uZmlnSGVscGVyKGJvb2wgYXVkaW9fYndlX2Vu
YWJsZWQsIGJvb2wgZXhwZWN0X3NldF9lbmNvZGVyX2NhbGwpCi0gICAgICA6IHN0cmVhbV9jb25m
aWdfKG51bGxwdHIpLAorICAgICAgOiBzdHJlYW1fY29uZmlnXygvKnNlbmRfdHJhbnNwb3J0PSov
bnVsbHB0ciwgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKSwKICAgICAgICAgYXVkaW9fcHJv
Y2Vzc2luZ18obmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxNb2NrQXVkaW9Qcm9jZXNzaW5nPigp
KSwKICAgICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfKCZsaW1pdF9vYnNlcnZlcl8pLAogICAgICAg
ICB3b3JrZXJfcXVldWVfKCJDb25maWdIZWxwZXJfd29ya2VyX3F1ZXVlIiksCkBAIC0xNDIsNyAr
MTQxLDcgQEAgc3RydWN0IENvbmZpZ0hlbHBlciB7CiAgICAgICAgIG5ldyBydGM6OlJlZkNvdW50
ZWRPYmplY3Q8TW9ja0F1ZGlvRGV2aWNlTW9kdWxlPigpOwogICAgIGF1ZGlvX3N0YXRlXyA9IEF1
ZGlvU3RhdGU6OkNyZWF0ZShjb25maWcpOwogCi0gICAgU2V0dXBEZWZhdWx0Q2hhbm5lbFByb3h5
KGF1ZGlvX2J3ZV9lbmFibGVkKTsKKyAgICBTZXR1cERlZmF1bHRDaGFubmVsU2VuZChhdWRpb19i
d2VfZW5hYmxlZCk7CiAgICAgU2V0dXBNb2NrRm9yU2V0dXBTZW5kQ29kZWMoZXhwZWN0X3NldF9l
bmNvZGVyX2NhbGwpOwogCiAgICAgLy8gVXNlIElTQUMgYXMgZGVmYXVsdCBjb2RlYyBzbyBhcyB0
byBwcmV2ZW50IHVubmVjZXNzYXJ5IHxjaGFubmVsX3Byb3h5X3wKQEAgLTE1MCw3ICsxNDksNiBA
QCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKICAgICBzdHJlYW1fY29uZmlnXy5zZW5kX2NvZGVjX3Nw
ZWMgPQogICAgICAgICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6U2VuZENvZGVjU3BlYyhrSXNh
Y1BheWxvYWRUeXBlLCBrSXNhY0Zvcm1hdCk7CiAgICAgc3RyZWFtX2NvbmZpZ18ucnRwLnNzcmMg
PSBrU3NyYzsKLSAgICBzdHJlYW1fY29uZmlnXy5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyA9IDIw
MDsKICAgICBzdHJlYW1fY29uZmlnXy5ydHAuY19uYW1lID0ga0NOYW1lOwogICAgIHN0cmVhbV9j
b25maWdfLnJ0cC5leHRlbnNpb25zLnB1c2hfYmFjaygKICAgICAgICAgUnRwRXh0ZW5zaW9uKFJ0
cEV4dGVuc2lvbjo6a0F1ZGlvTGV2ZWxVcmksIGtBdWRpb0xldmVsSWQpKTsKQEAgLTE2Nyw4ICsx
NjUsNyBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKICAgICAgICAgbmV3IGludGVybmFsOjpBdWRp
b1NlbmRTdHJlYW0oCiAgICAgICAgICAgICBzdHJlYW1fY29uZmlnXywgYXVkaW9fc3RhdGVfLCAm
d29ya2VyX3F1ZXVlXywgJnJ0cF90cmFuc3BvcnRfLAogICAgICAgICAgICAgJmJpdHJhdGVfYWxs
b2NhdG9yXywgJmV2ZW50X2xvZ18sICZydGNwX3J0dF9zdGF0c18sIGFic2w6Om51bGxvcHQsCi0g
ICAgICAgICAgICAmYWN0aXZlX2xpZmV0aW1lXywKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjx2b2U6OkNoYW5uZWxTZW5kUHJveHk+KGNoYW5uZWxfcHJveHlfKSkpOworICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2U+KGNoYW5uZWxfc2VuZF8p
KSk7CiAgIH0KIAogICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyYgY29uZmlnKCkgeyByZXR1cm4g
c3RyZWFtX2NvbmZpZ187IH0KQEAgLTE3Niw5ICsxNzMsOCBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVy
IHsKICAgICByZXR1cm4gKnN0YXRpY19jYXN0PE1vY2tBdWRpb0VuY29kZXJGYWN0b3J5Kj4oCiAg
ICAgICAgIHN0cmVhbV9jb25maWdfLmVuY29kZXJfZmFjdG9yeS5nZXQoKSk7CiAgIH0KLSAgTW9j
a0NoYW5uZWxTZW5kUHJveHkqIGNoYW5uZWxfcHJveHkoKSB7IHJldHVybiBjaGFubmVsX3Byb3h5
XzsgfQorICBNb2NrQ2hhbm5lbFNlbmQqIGNoYW5uZWxfc2VuZCgpIHsgcmV0dXJuIGNoYW5uZWxf
c2VuZF87IH0KICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHRyYW5zcG9y
dCgpIHsgcmV0dXJuICZydHBfdHJhbnNwb3J0XzsgfQotICBUaW1lSW50ZXJ2YWwqIGFjdGl2ZV9s
aWZldGltZSgpIHsgcmV0dXJuICZhY3RpdmVfbGlmZXRpbWVfOyB9CiAKICAgc3RhdGljIHZvaWQg
QWRkQndlVG9Db25maWcoQXVkaW9TZW5kU3RyZWFtOjpDb25maWcqIGNvbmZpZykgewogICAgIGNv
bmZpZy0+cnRwLmV4dGVuc2lvbnMucHVzaF9iYWNrKFJ0cEV4dGVuc2lvbigKQEAgLTE4Niw0NyAr
MTgyLDQwIEBAIHN0cnVjdCBDb25maWdIZWxwZXIgewogICAgIGNvbmZpZy0+c2VuZF9jb2RlY19z
cGVjLT50cmFuc3BvcnRfY2NfZW5hYmxlZCA9IHRydWU7CiAgIH0KIAotICB2b2lkIFNldHVwRGVm
YXVsdENoYW5uZWxQcm94eShib29sIGF1ZGlvX2J3ZV9lbmFibGVkKSB7Ci0gICAgRVhQRUNUX1RS
VUUoY2hhbm5lbF9wcm94eV8gPT0gbnVsbHB0cik7Ci0gICAgY2hhbm5lbF9wcm94eV8gPSBuZXcg
dGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFNlbmRQcm94eT4oKTsKLSAgICBFWFBFQ1Rf
Q0FMTCgqY2hhbm5lbF9wcm94eV8sIEdldFJ0cFJ0Y3AoKSkuV2lsbFJlcGVhdGVkbHkoSW52b2tl
KFt0aGlzXSgpIHsKKyAgdm9pZCBTZXR1cERlZmF1bHRDaGFubmVsU2VuZChib29sIGF1ZGlvX2J3
ZV9lbmFibGVkKSB7CisgICAgRVhQRUNUX1RSVUUoY2hhbm5lbF9zZW5kXyA9PSBudWxscHRyKTsK
KyAgICBjaGFubmVsX3NlbmRfID0gbmV3IHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja0NoYW5uZWxT
ZW5kPigpOworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLCBHZXRSdHBSdGNwKCkpLldp
bGxSZXBlYXRlZGx5KEludm9rZShbdGhpc10oKSB7CiAgICAgICByZXR1cm4gJnRoaXMtPnJ0cF9y
dGNwXzsKICAgICB9KSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXRSVENQ
U3RhdHVzKHRydWUpKS5UaW1lcygxKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8s
IFNldExvY2FsU1NSQyhrU3NyYykpLlRpbWVzKDEpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVs
X3Byb3h5XywgU2V0UlRDUF9DTkFNRShTdHJFcShrQ05hbWUpKSkuVGltZXMoMSk7Ci0gICAgRVhQ
RUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXROQUNLU3RhdHVzKHRydWUsIDEwKSkuVGltZXMo
MSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXRGcmFtZUVuY3J5cHRvcihu
dWxscHRyKSkuVGltZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLAorICAg
IEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLCBTZXRMb2NhbFNTUkMoa1NzcmMpKS5UaW1lcygx
KTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgU2V0UlRDUF9DTkFNRShTdHJFcShr
Q05hbWUpKSkuVGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfc2VuZF8sIFNldEZy
YW1lRW5jcnlwdG9yKF8pKS5UaW1lcygxKTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5k
XywgU2V0RXh0bWFwQWxsb3dNaXhlZChmYWxzZSkpLlRpbWVzKDEpOworICAgIEVYUEVDVF9DQUxM
KCpjaGFubmVsX3NlbmRfLAogICAgICAgICAgICAgICAgIFNldFNlbmRBdWRpb0xldmVsSW5kaWNh
dGlvblN0YXR1cyh0cnVlLCBrQXVkaW9MZXZlbElkKSkKICAgICAgICAgLlRpbWVzKDEpOwogICAg
IEVYUEVDVF9DQUxMKHJ0cF90cmFuc3BvcnRfLCBHZXRCYW5kd2lkdGhPYnNlcnZlcigpKQogICAg
ICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCZiYW5kd2lkdGhfb2JzZXJ2ZXJfKSk7CiAgICAg
aWYgKGF1ZGlvX2J3ZV9lbmFibGVkKSB7Ci0gICAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94
eV8sCisgICAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywKICAgICAgICAgICAgICAgICAg
IEVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihrVHJhbnNwb3J0U2VxdWVuY2VOdW1i
ZXJJZCkpCiAgICAgICAgICAgLlRpbWVzKDEpOwotICAgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxf
cHJveHlfLAorICAgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfc2VuZF8sCiAgICAgICAgICAgICAg
ICAgICBSZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKICAgICAgICAgICAg
ICAgICAgICAgICAmcnRwX3RyYW5zcG9ydF8sIEVxKCZiYW5kd2lkdGhfb2JzZXJ2ZXJfKSkpCiAg
ICAgICAgICAgLlRpbWVzKDEpOwogICAgIH0gZWxzZSB7Ci0gICAgICBFWFBFQ1RfQ0FMTCgqY2hh
bm5lbF9wcm94eV8sIFJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJ0cF90cmFuc3BvcnRfLCBFcShu
dWxscHRyKSkpCisgICAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgUmVnaXN0ZXJTZW5k
ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZydHBfdHJhbnNwb3J0XywgRXEobnVsbHB0cikpKQogICAgICAgICAgIC5UaW1l
cygxKTsKICAgICB9Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBSZXNldFNlbmRl
ckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpKQotICAgICAgICAuVGltZXMoMSk7Ci0gICAgewot
ICAgICAgOjp0ZXN0aW5nOjpJblNlcXVlbmNlIHVucmVnaXN0ZXJfb25fZGVzdHJ1Y3Rpb247Ci0g
ICAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFJlZ2lzdGVyVHJhbnNwb3J0KF8pKS5U
aW1lcygxKTsKLSAgICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgUmVnaXN0ZXJUcmFu
c3BvcnQobnVsbHB0cikpLlRpbWVzKDEpOwotICAgIH0KKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5l
bF9zZW5kXywgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSkuVGltZXMoMSk7
CiAgIH0KIAogICB2b2lkIFNldHVwTW9ja0ZvclNldHVwU2VuZENvZGVjKGJvb2wgZXhwZWN0X3Nl
dF9lbmNvZGVyX2NhbGwpIHsKICAgICBpZiAoZXhwZWN0X3NldF9lbmNvZGVyX2NhbGwpIHsKLSAg
ICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgU2V0RW5jb2RlckZvck1vY2soXywgXykp
CisgICAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgU2V0RW5jb2RlckZvck1vY2soXywg
XykpCiAgICAgICAgICAgLldpbGxPbmNlKEludm9rZSgKICAgICAgICAgICAgICAgW3RoaXNdKGlu
dCBwYXlsb2FkX3R5cGUsIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmNvZGVyKSB7
CiAgICAgICAgICAgICAgICAgdGhpcy0+YXVkaW9fZW5jb2Rlcl8gPSBzdGQ6Om1vdmUoKmVuY29k
ZXIpOwpAQCAtMjM3LDcgKzIyNiw3IEBAIHN0cnVjdCBDb25maWdIZWxwZXIgewogCiAgIHZvaWQg
U2V0dXBNb2NrRm9yTW9kaWZ5RW5jb2RlcigpIHsKICAgICAvLyBMZXQgTW9kaWZ5RW5jb2RlciB0
byBpbnZva2UgbW9jayBhdWRpbyBlbmNvZGVyLgotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3By
b3h5XywgTW9kaWZ5RW5jb2RlcihfKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywg
TW9kaWZ5RW5jb2RlcihfKSkKICAgICAgICAgLldpbGxSZXBlYXRlZGx5KEludm9rZSgKICAgICAg
ICAgICAgIFt0aGlzXShydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b0VuY29kZXI+Kik+CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyKSB7CkBAIC0yNDcs
MTMgKzIzNiwxMyBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKICAgfQogCiAgIHZvaWQgU2V0dXBN
b2NrRm9yU2VuZFRlbGVwaG9uZUV2ZW50KCkgewotICAgIEVYUEVDVF9UUlVFKGNoYW5uZWxfcHJv
eHlfKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFNldFNlbmRUZWxlcGhvbmVF
dmVudFBheWxvYWRUeXBlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtU
ZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtUZWxlcGhvbmVFdmVudFBheWxvYWRGcmVxdWVuY3kpKQorICAgIEVYUEVDVF9UUlVF
KGNoYW5uZWxfc2VuZF8pOworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLCBTZXRTZW5k
VGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtUZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga1RlbGVwaG9uZUV2ZW50UGF5bG9hZEZyZXF1ZW5jeSkpCiAgICAgICAg
IC5XaWxsT25jZShSZXR1cm4odHJ1ZSkpOwogICAgIEVYUEVDVF9DQUxMKAotICAgICAgICAqY2hh
bm5lbF9wcm94eV8sCisgICAgICAgICpjaGFubmVsX3NlbmRfLAogICAgICAgICBTZW5kVGVsZXBo
b25lRXZlbnRPdXRiYW5kKGtUZWxlcGhvbmVFdmVudENvZGUsIGtUZWxlcGhvbmVFdmVudER1cmF0
aW9uKSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybih0cnVlKSk7CiAgIH0KQEAgLTI3MSwxMyAr
MjYwLDE0IEBAIHN0cnVjdCBDb25maWdIZWxwZXIgewogICAgIGJsb2NrLmZyYWN0aW9uX2xvc3Qg
PSAwOwogICAgIHJlcG9ydF9ibG9ja3MucHVzaF9iYWNrKGJsb2NrKTsgIC8vIER1cGxpY2F0ZSBT
U1JDLCBiYWQgZnJhY3Rpb25fbG9zdC4KIAotICAgIEVYUEVDVF9UUlVFKGNoYW5uZWxfcHJveHlf
KTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIEdldFJUQ1BTdGF0aXN0aWNzKCkp
CisgICAgRVhQRUNUX1RSVUUoY2hhbm5lbF9zZW5kXyk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5u
ZWxfc2VuZF8sIEdldFJUQ1BTdGF0aXN0aWNzKCkpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShS
ZXR1cm4oa0NhbGxTdGF0cykpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgR2V0
UmVtb3RlUlRDUFJlcG9ydEJsb2NrcygpKQorICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRf
LCBHZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tzKCkpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShS
ZXR1cm4ocmVwb3J0X2Jsb2NrcykpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5Xywg
R2V0QU5BU3RhdGlzdGljcygpKQorICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLCBHZXRB
TkFTdGF0aXN0aWNzKCkpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oQU5BU3RhdHMo
KSkpOworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLCBHZXRCaXRyYXRlKCkpLldpbGxS
ZXBlYXRlZGx5KFJldHVybigwKSk7CiAKICAgICBhdWRpb19wcm9jZXNzaW5nX3N0YXRzXy5lY2hv
X3JldHVybl9sb3NzID0ga0VjaG9SZXR1cm5Mb3NzOwogICAgIGF1ZGlvX3Byb2Nlc3Npbmdfc3Rh
dHNfLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPQpAQCAtMjk3LDEwICsyODcsOSBAQCBz
dHJ1Y3QgQ29uZmlnSGVscGVyIHsKICBwcml2YXRlOgogICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9TdGF0ZT4gYXVkaW9fc3RhdGVfOwogICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBzdHJlYW1f
Y29uZmlnXzsKLSAgdGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ2hhbm5lbFNlbmRQcm94eT4qIGNo
YW5uZWxfcHJveHlfID0gbnVsbHB0cjsKKyAgdGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ2hhbm5l
bFNlbmQ+KiBjaGFubmVsX3NlbmRfID0gbnVsbHB0cjsKICAgcnRjOjpzY29wZWRfcmVmcHRyPE1v
Y2tBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmdfOwogICBBdWRpb1Byb2Nlc3NpbmdT
dGF0cyBhdWRpb19wcm9jZXNzaW5nX3N0YXRzXzsKLSAgVGltZUludGVydmFsIGFjdGl2ZV9saWZl
dGltZV87CiAgIHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja1J0Y3BCYW5kd2lkdGhPYnNlcnZlcj4g
YmFuZHdpZHRoX29ic2VydmVyXzsKICAgdGVzdGluZzo6TmljZU1vY2s8TW9ja1J0Y0V2ZW50TG9n
PiBldmVudF9sb2dfOwogICB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrUnRwVHJhbnNwb3J0Q29udHJv
bGxlclNlbmQ+IHJ0cF90cmFuc3BvcnRfOwpAQCAtMzE2LDcgKzMwNSw4IEBAIHN0cnVjdCBDb25m
aWdIZWxwZXIgewogfSAgLy8gbmFtZXNwYWNlCiAKIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwg
Q29uZmlnVG9TdHJpbmcpIHsKLSAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgY29uZmlnKG51bGxw
dHIpOworICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcoLypzZW5kX3RyYW5zcG9ydD0q
L251bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5z
cG9ydD0qL251bGxwdHIpOwogICBjb25maWcucnRwLnNzcmMgPSBrU3NyYzsKICAgY29uZmlnLnJ0
cC5jX25hbWUgPSBrQ05hbWU7CiAgIGNvbmZpZy5taW5fYml0cmF0ZV9icHMgPSAxMjAwMDsKQEAg
LTMyNywxMiArMzE3LDE1IEBAIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgQ29uZmlnVG9TdHJp
bmcpIHsKICAgY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+dHJhbnNwb3J0X2NjX2VuYWJsZWQgPSBm
YWxzZTsKICAgY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+Y25nX3BheWxvYWRfdHlwZSA9IDQyOwog
ICBjb25maWcuZW5jb2Rlcl9mYWN0b3J5ID0gTW9ja0F1ZGlvRW5jb2RlckZhY3Rvcnk6OkNyZWF0
ZVVudXNlZEZhY3RvcnkoKTsKKyAgY29uZmlnLnJ0cC5leHRtYXBfYWxsb3dfbWl4ZWQgPSB0cnVl
OwogICBjb25maWcucnRwLmV4dGVuc2lvbnMucHVzaF9iYWNrKAogICAgICAgUnRwRXh0ZW5zaW9u
KFJ0cEV4dGVuc2lvbjo6a0F1ZGlvTGV2ZWxVcmksIGtBdWRpb0xldmVsSWQpKTsKKyAgY29uZmln
LnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0gMjUwMDsKICAgRVhQRUNUX0VRKAotICAgICAgInty
dHA6IHtzc3JjOiAxMjM0LCBleHRlbnNpb25zOiBbe3VyaTogIgotICAgICAgInVybjppZXRmOnBh
cmFtczpydHAtaGRyZXh0OnNzcmMtYXVkaW8tbGV2ZWwsIGlkOiAyfV0sIG5hY2s6ICIKLSAgICAg
ICJ7cnRwX2hpc3RvcnlfbXM6IDB9LCBjX25hbWU6IGZvb19uYW1lfSwgc2VuZF90cmFuc3BvcnQ6
IG51bGwsICIKKyAgICAgICJ7cnRwOiB7c3NyYzogMTIzNCwgZXh0bWFwLWFsbG93LW1peGVkOiB0
cnVlLCBleHRlbnNpb25zOiBbe3VyaTogIgorICAgICAgInVybjppZXRmOnBhcmFtczpydHAtaGRy
ZXh0OnNzcmMtYXVkaW8tbGV2ZWwsIGlkOiAyfV0sICIKKyAgICAgICJjX25hbWU6IGZvb19uYW1l
fSwgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM6IDI1MDAsICIKKyAgICAgICJzZW5kX3RyYW5zcG9y
dDogbnVsbCwgbWVkaWFfdHJhbnNwb3J0OiBudWxsLCAiCiAgICAgICAibWluX2JpdHJhdGVfYnBz
OiAxMjAwMCwgbWF4X2JpdHJhdGVfYnBzOiAzNDAwMCwgIgogICAgICAgInNlbmRfY29kZWNfc3Bl
Yzoge25hY2tfZW5hYmxlZDogdHJ1ZSwgdHJhbnNwb3J0X2NjX2VuYWJsZWQ6IGZhbHNlLCAiCiAg
ICAgICAiY25nX3BheWxvYWRfdHlwZTogNDIsIHBheWxvYWRfdHlwZTogMTAzLCAiCkBAIC0zNTgs
NyArMzUxLDcgQEAgVEVTVChBdWRpb1NlbmRTdHJlYW1UZXN0LCBTZW5kVGVsZXBob25lRXZlbnQp
IHsKIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgU2V0TXV0ZWQpIHsKICAgQ29uZmlnSGVscGVy
IGhlbHBlcihmYWxzZSwgdHJ1ZSk7CiAgIGF1dG8gc2VuZF9zdHJlYW0gPSBoZWxwZXIuQ3JlYXRl
QXVkaW9TZW5kU3RyZWFtKCk7Ci0gIEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9wcm94eSgp
LCBTZXRJbnB1dE11dGUodHJ1ZSkpOworICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfc2Vu
ZCgpLCBTZXRJbnB1dE11dGUodHJ1ZSkpOwogICBzZW5kX3N0cmVhbS0+U2V0TXV0ZWQodHJ1ZSk7
CiB9CiAKQEAgLTQ0OCw3ICs0NDEsNyBAQCBURVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIFNlbmRD
b2RlY0NhbkFwcGx5VmFkKSB7CiAgIGhlbHBlci5jb25maWcoKS5zZW5kX2NvZGVjX3NwZWMtPmNu
Z19wYXlsb2FkX3R5cGUgPSAxMDU7CiAgIHVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwogICBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBzdG9sZW5fZW5jb2RlcjsKLSAgRVhQRUNUX0NBTEwo
KmhlbHBlci5jaGFubmVsX3Byb3h5KCksIFNldEVuY29kZXJGb3JNb2NrKF8sIF8pKQorICBFWFBF
Q1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfc2VuZCgpLCBTZXRFbmNvZGVyRm9yTW9jayhfLCBfKSkK
ICAgICAgIC5XaWxsT25jZSgKICAgICAgICAgICBJbnZva2UoWyZzdG9sZW5fZW5jb2Rlcl0oaW50
IHBheWxvYWRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXIpIHsKQEAgLTQ2OCwxNyArNDYxLDMxIEBA
IFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgU2VuZENvZGVjQ2FuQXBwbHlWYWQpIHsKIFRFU1Qo
QXVkaW9TZW5kU3RyZWFtVGVzdCwgRG9lc05vdFBhc3NIaWdoZXJCaXRyYXRlVGhhbk1heEJpdHJh
dGUpIHsKICAgQ29uZmlnSGVscGVyIGhlbHBlcihmYWxzZSwgdHJ1ZSk7CiAgIGF1dG8gc2VuZF9z
dHJlYW0gPSBoZWxwZXIuQ3JlYXRlQXVkaW9TZW5kU3RyZWFtKCk7Ci0gIEVYUEVDVF9DQUxMKCpo
ZWxwZXIuY2hhbm5lbF9wcm94eSgpLAotICAgICAgICAgICAgICBTZXRCaXRyYXRlKGhlbHBlci5j
b25maWcoKS5tYXhfYml0cmF0ZV9icHMsIF8pKTsKLSAgc2VuZF9zdHJlYW0tPk9uQml0cmF0ZVVw
ZGF0ZWQoaGVscGVyLmNvbmZpZygpLm1heF9iaXRyYXRlX2JwcyArIDUwMDAsIDAuMCwgNTAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwMDApOworICBFWFBFQ1RfQ0FMTCgqaGVs
cGVyLmNoYW5uZWxfc2VuZCgpLAorICAgICAgICAgICAgICBPbkJpdHJhdGVBbGxvY2F0aW9uKAor
ICAgICAgICAgICAgICAgICAgRmllbGQoJkJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlOjp0YXJnZXRf
Yml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVxKERhdGFSYXRlOjpicHMoaGVscGVy
LmNvbmZpZygpLm1heF9iaXRyYXRlX2JwcykpKSkpOworICBCaXRyYXRlQWxsb2NhdGlvblVwZGF0
ZSB1cGRhdGU7CisgIHVwZGF0ZS50YXJnZXRfYml0cmF0ZSA9IERhdGFSYXRlOjpicHMoaGVscGVy
LmNvbmZpZygpLm1heF9iaXRyYXRlX2JwcyArIDUwMDApOworICB1cGRhdGUucGFja2V0X2xvc3Nf
cmF0aW8gPSAwOworICB1cGRhdGUucm91bmRfdHJpcF90aW1lID0gVGltZURlbHRhOjptcyg1MCk7
CisgIHVwZGF0ZS5id2VfcGVyaW9kID0gVGltZURlbHRhOjptcyg2MDAwKTsKKyAgc2VuZF9zdHJl
YW0tPk9uQml0cmF0ZVVwZGF0ZWQodXBkYXRlKTsKIH0KIAogVEVTVChBdWRpb1NlbmRTdHJlYW1U
ZXN0LCBQcm9iaW5nSW50ZXJ2YWxPbkJpdHJhdGVVcGRhdGVkKSB7CiAgIENvbmZpZ0hlbHBlciBo
ZWxwZXIoZmFsc2UsIHRydWUpOwogICBhdXRvIHNlbmRfc3RyZWFtID0gaGVscGVyLkNyZWF0ZUF1
ZGlvU2VuZFN0cmVhbSgpOwotICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfcHJveHkoKSwg
U2V0Qml0cmF0ZShfLCA1MDAwKSk7Ci0gIHNlbmRfc3RyZWFtLT5PbkJpdHJhdGVVcGRhdGVkKDUw
MDAwLCAwLjAsIDUwLCA1MDAwKTsKKworICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfc2Vu
ZCgpLAorICAgICAgICAgICAgICBPbkJpdHJhdGVBbGxvY2F0aW9uKEZpZWxkKCZCaXRyYXRlQWxs
b2NhdGlvblVwZGF0ZTo6YndlX3BlcmlvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFcShUaW1lRGVsdGE6Om1zKDUwMDApKSkpKTsKKyAgQml0cmF0ZUFsbG9jYXRp
b25VcGRhdGUgdXBkYXRlOworICB1cGRhdGUudGFyZ2V0X2JpdHJhdGUgPSBEYXRhUmF0ZTo6YnBz
KGhlbHBlci5jb25maWcoKS5tYXhfYml0cmF0ZV9icHMgKyA1MDAwKTsKKyAgdXBkYXRlLnBhY2tl
dF9sb3NzX3JhdGlvID0gMDsKKyAgdXBkYXRlLnJvdW5kX3RyaXBfdGltZSA9IFRpbWVEZWx0YTo6
bXMoNTApOworICB1cGRhdGUuYndlX3BlcmlvZCA9IFRpbWVEZWx0YTo6bXMoNTAwMCk7CisgIHNl
bmRfc3RyZWFtLT5PbkJpdHJhdGVVcGRhdGVkKHVwZGF0ZSk7CiB9CiAKIC8vIFRlc3QgdGhhdCBB
dWRpb1NlbmRTdHJlYW0gZG9lc24ndCByZWNyZWF0ZSB0aGUgZW5jb2RlciB1bm5lY2Vzc2FyaWx5
LgpAQCAtNDg5LDcgKzQ5Niw3IEBAIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgRG9udFJlY3Jl
YXRlRW5jb2RlcikgewogICAvLyB0byBiZSBjb3JyZWN0LCBpdCdzIGluc3RlYWQgc2V0LXVwIG1h
bnVhbGx5IGhlcmUuIE90aGVyd2lzZSBhIHNpbXBsZSBjaGFuZ2UKICAgLy8gdG8gQ29uZmlnSGVs
cGVyIChzYXkgdG8gV2lsbFJlcGVhdGVkbHkpIHdvdWxkIHNpbGVudGx5IG1ha2UgdGhpcyB0ZXN0
CiAgIC8vIHVzZWxlc3MuCi0gIEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9wcm94eSgpLCBT
ZXRFbmNvZGVyRm9yTW9jayhfLCBfKSkKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3Nl
bmQoKSwgU2V0RW5jb2RlckZvck1vY2soXywgXykpCiAgICAgICAuV2lsbE9uY2UoUmV0dXJuKHRy
dWUpKTsKIAogICBoZWxwZXIuY29uZmlnKCkuc2VuZF9jb2RlY19zcGVjID0KQEAgLTUwNCw0NiAr
NTExLDQ0IEBAIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgUmVjb25maWd1cmVUcmFuc3BvcnRD
Y1Jlc2V0c0ZpcnN0KSB7CiAgIGF1dG8gc2VuZF9zdHJlYW0gPSBoZWxwZXIuQ3JlYXRlQXVkaW9T
ZW5kU3RyZWFtKCk7CiAgIGF1dG8gbmV3X2NvbmZpZyA9IGhlbHBlci5jb25maWcoKTsKICAgQ29u
ZmlnSGVscGVyOjpBZGRCd2VUb0NvbmZpZygmbmV3X2NvbmZpZyk7Ci0gIEVYUEVDVF9DQUxMKCpo
ZWxwZXIuY2hhbm5lbF9wcm94eSgpLAorICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfc2Vu
ZCgpLAogICAgICAgICAgICAgICBFbmFibGVTZW5kVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoa1Ry
YW5zcG9ydFNlcXVlbmNlTnVtYmVySWQpKQogICAgICAgLlRpbWVzKDEpOwogICB7CiAgICAgOjp0
ZXN0aW5nOjpJblNlcXVlbmNlIHNlcTsKLSAgICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxf
cHJveHkoKSwgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSkKKyAgICBFWFBF
Q1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfc2VuZCgpLCBSZXNldFNlbmRlckNvbmdlc3Rpb25Db250
cm9sT2JqZWN0cygpKQogICAgICAgICAuVGltZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwoKmhlbHBl
ci5jaGFubmVsX3Byb3h5KCksIFJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3Rz
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscGVyLnRy
YW5zcG9ydCgpLCBOZShudWxscHRyKSkpCisgICAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVs
X3NlbmQoKSwgUmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBlci50cmFuc3BvcnQoKSwg
TmUobnVsbHB0cikpKQogICAgICAgICAuVGltZXMoMSk7CiAgIH0KICAgc2VuZF9zdHJlYW0tPlJl
Y29uZmlndXJlKG5ld19jb25maWcpOwogfQogCi0vLyBDaGVja3MgdGhhdCBBdWRpb1NlbmRTdHJl
YW0gbG9ncyB0aGUgdGltZXMgYXQgd2hpY2ggUlRQIHBhY2tldHMgYXJlIHNlbnQKLS8vIHRocm91
Z2ggaXRzIGludGVyZmFjZS4KLVRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgVXBkYXRlTGlmZXRp
bWUpIHsKKy8vIFZhbGlkYXRlcyB0aGF0IHJlY29uZmlndXJpbmcgdGhlIEF1ZGlvU2VuZFN0cmVh
bSB3aXRoIGEgRnJhbWUgZW5jcnlwdG9yCisvLyBjb3JyZWN0bHkgcmVjb25maWd1cmVzIG9uIHRo
ZSBvYmplY3Qgd2l0aG91dCBjcmFzaGluZy4KK1RFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgUmVj
b25maWd1cmVXaXRoRnJhbWVFbmNyeXB0b3IpIHsKICAgQ29uZmlnSGVscGVyIGhlbHBlcihmYWxz
ZSwgdHJ1ZSk7CisgIGF1dG8gc2VuZF9zdHJlYW0gPSBoZWxwZXIuQ3JlYXRlQXVkaW9TZW5kU3Ry
ZWFtKCk7CisgIGF1dG8gbmV3X2NvbmZpZyA9IGhlbHBlci5jb25maWcoKTsKIAotICBNb2NrVHJh
bnNwb3J0IG1vY2tfdHJhbnNwb3J0OwotICBoZWxwZXIuY29uZmlnKCkuc2VuZF90cmFuc3BvcnQg
PSAmbW9ja190cmFuc3BvcnQ7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvcklu
dGVyZmFjZT4gbW9ja19mcmFtZV9lbmNyeXB0b3JfMCgKKyAgICAgIG5ldyBydGM6OlJlZkNvdW50
ZWRPYmplY3Q8TW9ja0ZyYW1lRW5jcnlwdG9yPigpKTsKKyAgbmV3X2NvbmZpZy5mcmFtZV9lbmNy
eXB0b3IgPSBtb2NrX2ZyYW1lX2VuY3J5cHRvcl8wOworICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNo
YW5uZWxfc2VuZCgpLCBTZXRGcmFtZUVuY3J5cHRvcihOZShudWxscHRyKSkpLlRpbWVzKDEpOwor
ICBzZW5kX3N0cmVhbS0+UmVjb25maWd1cmUobmV3X2NvbmZpZyk7CiAKLSAgVHJhbnNwb3J0KiBy
ZWdpc3RlcmVkX3RyYW5zcG9ydDsKLSAgT05fQ0FMTCgqaGVscGVyLmNoYW5uZWxfcHJveHkoKSwg
UmVnaXN0ZXJUcmFuc3BvcnQoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoWyZyZWdp
c3RlcmVkX3RyYW5zcG9ydF0oVHJhbnNwb3J0KiB0cmFuc3BvcnQpIHsKLSAgICAgICAgcmVnaXN0
ZXJlZF90cmFuc3BvcnQgPSB0cmFuc3BvcnQ7Ci0gICAgICB9KSk7CisgIC8vIE5vdCB1cGRhdGlu
ZyB0aGUgZnJhbWUgZW5jcnlwdG9yIHNob3VsZG4ndCBmb3JjZSBpdCB0byByZWNvbmZpZ3VyZS4K
KyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3NlbmQoKSwgU2V0RnJhbWVFbmNyeXB0b3Io
XykpLlRpbWVzKDApOworICBzZW5kX3N0cmVhbS0+UmVjb25maWd1cmUobmV3X2NvbmZpZyk7CiAK
LSAgcnRjOjpTY29wZWRGYWtlQ2xvY2sgZmFrZV9jbG9jazsKLSAgY29uc3RleHByIGludDY0X3Qg
a1RpbWVCZXR3ZWVuU2VuZFJ0cENhbGxzTXMgPSAxMDA7Ci0gIHsKLSAgICBhdXRvIHNlbmRfc3Ry
ZWFtID0gaGVscGVyLkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbSgpOwotICAgIEVYUEVDVF9DQUxMKG1v
Y2tfdHJhbnNwb3J0LCBTZW5kUnRwKF8sIF8sIF8pKS5UaW1lcygyKTsKLSAgICBjb25zdCBQYWNr
ZXRPcHRpb25zIG9wdGlvbnM7Ci0gICAgcmVnaXN0ZXJlZF90cmFuc3BvcnQtPlNlbmRSdHAobnVs
bHB0ciwgMCwgb3B0aW9ucyk7Ci0gICAgZmFrZV9jbG9jay5BZHZhbmNlVGltZShUaW1lRGVsdGE6
Om1zKGtUaW1lQmV0d2VlblNlbmRSdHBDYWxsc01zKSk7Ci0gICAgcmVnaXN0ZXJlZF90cmFuc3Bv
cnQtPlNlbmRSdHAobnVsbHB0ciwgMCwgb3B0aW9ucyk7Ci0gIH0KLSAgRVhQRUNUX1RSVUUoIWhl
bHBlci5hY3RpdmVfbGlmZXRpbWUoKS0+RW1wdHkoKSk7Ci0gIEVYUEVDVF9FUShoZWxwZXIuYWN0
aXZlX2xpZmV0aW1lKCktPkxlbmd0aCgpLCBrVGltZUJldHdlZW5TZW5kUnRwQ2FsbHNNcyk7Cisg
IC8vIFVwZGF0aW5nIGZyYW1lIGVuY3J5cHRvciB0byBhIG5ldyBvYmplY3Qgc2hvdWxkIGZvcmNl
IGEgY2FsbCB0byB0aGUgcHJveHkuCisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRv
ckludGVyZmFjZT4gbW9ja19mcmFtZV9lbmNyeXB0b3JfMSgKKyAgICAgIG5ldyBydGM6OlJlZkNv
dW50ZWRPYmplY3Q8TW9ja0ZyYW1lRW5jcnlwdG9yPigpKTsKKyAgbmV3X2NvbmZpZy5mcmFtZV9l
bmNyeXB0b3IgPSBtb2NrX2ZyYW1lX2VuY3J5cHRvcl8xOworICBuZXdfY29uZmlnLmNyeXB0b19v
cHRpb25zLnNmcmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24gPSB0cnVlOworICBFWFBFQ1Rf
Q0FMTCgqaGVscGVyLmNoYW5uZWxfc2VuZCgpLCBTZXRGcmFtZUVuY3J5cHRvcihOZShudWxscHRy
KSkpLlRpbWVzKDEpOworICBzZW5kX3N0cmVhbS0+UmVjb25maWd1cmUobmV3X2NvbmZpZyk7CiB9
CiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9f
dHJhbnNwb3J0X2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hdWRpby9hdWRpb190cmFuc3BvcnRfaW1wbC5jYwppbmRleCA5NGVmNmNiNjhhNzc1ZDU3
ZDdiMzhmM2RiMzk5N2FjNTk5MDJjYTIwLi41Mzk0NTZlMmY0OWFlNmY1Y2NlMGEyZWVmN2E1MmQz
NzliYTcyOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hdWRpby9hdWRpb190cmFuc3BvcnRfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb190cmFuc3BvcnRfaW1wbC5j
YwpAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgImF1ZGlvL3JlbWl4X3Jlc2FtcGxlLmgiCiAj
aW5jbHVkZSAiYXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiY2FsbC9hdWRpb19zZW5kX3N0cmVhbS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1
ZGlvL2NoYW5uZWxfcmVjZWl2ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5jYwppbmRleCBlOWY3NTAzNDc0ZjVmNTQz
ZmNlNGJkMWQ0N2NkNTQwNjRhYWMxOWU2Li40ODMxNDdmYTllZWQwMGU0ZTYwZmIxYjRiZGIwNTMx
NTYwZjkxMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hdWRpby9jaGFubmVsX3JlY2VpdmUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlLmNjCkBAIC0xOCwx
NCArMTgsMjAgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9t
ZW1vcnkuaCIKKyNpbmNsdWRlICJhdWRpby9hdWRpb19sZXZlbC5oIgogI2luY2x1ZGUgImF1ZGlv
L2NoYW5uZWxfc2VuZC5oIgogI2luY2x1ZGUgImF1ZGlvL3V0aWxpdHkvYXVkaW9fZnJhbWVfb3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X2F1ZGlvX3BsYXlvdXQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRj
X2V2ZW50X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdv
cmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGUuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL2luY2x1ZGUvcmVjZWl2ZV9zdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3IuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3AuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9jb250cmlidXRpbmdfc291cmNlcy5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3V0aWxpdHkvaW5jbHVkZS9wcm9jZXNzX3RocmVhZC5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgpAQCAtMzMsNiArMzksOCBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2Zv
cm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21p
bm1heC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3JhY2VfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgi
CiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgpAQCAtNTAsMTMg
KzU4LDIyOCBAQCBjb25zdGV4cHIgaW50NjRfdCBrTWluUmV0cmFuc21pc3Npb25XaW5kb3dNcyA9
IDMwOwogY29uc3RleHByIGludCBrVm9pY2VFbmdpbmVNaW5NaW5QbGF5b3V0RGVsYXlNcyA9IDA7
CiBjb25zdGV4cHIgaW50IGtWb2ljZUVuZ2luZU1heE1pblBsYXlvdXREZWxheU1zID0gMTAwMDA7
CiAKLX0gIC8vIG5hbWVzcGFjZQord2VicnRjOjpGcmFtZVR5cGUgV2VicnRjRnJhbWVUeXBlRm9y
TWVkaWFUcmFuc3BvcnRGcmFtZVR5cGUoCisgICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9G
cmFtZTo6RnJhbWVUeXBlIGZyYW1lX3R5cGUpIHsKKyAgc3dpdGNoIChmcmFtZV90eXBlKSB7Cisg
ICAgY2FzZSBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lOjpGcmFtZVR5cGU6OmtTcGVl
Y2g6CisgICAgICByZXR1cm4ga0F1ZGlvRnJhbWVTcGVlY2g7CisgICAgICBicmVhazsKKworICAg
IGNhc2UgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6RnJhbWVUeXBlOjoKKyAgICAg
ICAga0Rpc2NvdW50aW51b3VzVHJhbnNtaXNzaW9uOgorICAgICAgcmV0dXJuIGtBdWRpb0ZyYW1l
Q047CisgICAgICBicmVhazsKKyAgfQorfQorCitXZWJSdGNSVFBIZWFkZXIgQ3JlYXRlV2VicnRj
UlRQSGVhZGVyRm9yTWVkaWFUcmFuc3BvcnRGcmFtZSgKKyAgICBjb25zdCBNZWRpYVRyYW5zcG9y
dEVuY29kZWRBdWRpb0ZyYW1lJiBmcmFtZSwKKyAgICB1aW50NjRfdCBjaGFubmVsX2lkKSB7Cisg
IHdlYnJ0Yzo6V2ViUnRjUlRQSGVhZGVyIHdlYnJ0Y19oZWFkZXIgPSB7fTsKKyAgd2VicnRjX2hl
YWRlci5oZWFkZXIucGF5bG9hZFR5cGUgPSBmcmFtZS5wYXlsb2FkX3R5cGUoKTsKKyAgd2VicnRj
X2hlYWRlci5oZWFkZXIucGF5bG9hZF90eXBlX2ZyZXF1ZW5jeSA9IGZyYW1lLnNhbXBsaW5nX3Jh
dGVfaHooKTsKKyAgd2VicnRjX2hlYWRlci5oZWFkZXIudGltZXN0YW1wID0gZnJhbWUuc3RhcnRp
bmdfc2FtcGxlX2luZGV4KCk7CisgIHdlYnJ0Y19oZWFkZXIuaGVhZGVyLnNlcXVlbmNlTnVtYmVy
ID0gZnJhbWUuc2VxdWVuY2VfbnVtYmVyKCk7CisKKyAgd2VicnRjX2hlYWRlci5mcmFtZVR5cGUg
PQorICAgICAgV2VicnRjRnJhbWVUeXBlRm9yTWVkaWFUcmFuc3BvcnRGcmFtZVR5cGUoZnJhbWUu
ZnJhbWVfdHlwZSgpKTsKKworICB3ZWJydGNfaGVhZGVyLmhlYWRlci5zc3JjID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGNoYW5uZWxfaWQpOworCisgIC8vIFRoZSByZXN0IGFyZSBpbml0aWFsaXpl
ZCBieSB0aGUgUlRQSGVhZGVyIGNvbnN0cnVjdG9yLgorICByZXR1cm4gd2VicnRjX2hlYWRlcjsK
K30KKworY2xhc3MgQ2hhbm5lbFJlY2VpdmUgOiBwdWJsaWMgQ2hhbm5lbFJlY2VpdmVJbnRlcmZh
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBNZWRpYVRyYW5zcG9ydEF1ZGlvU2lu
a0ludGVyZmFjZSB7CisgcHVibGljOgorICAvLyBVc2VkIGZvciByZWNlaXZlIHN0cmVhbXMuCisg
IENoYW5uZWxSZWNlaXZlKFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKKyAg
ICAgICAgICAgICAgICAgQXVkaW9EZXZpY2VNb2R1bGUqIGF1ZGlvX2RldmljZV9tb2R1bGUsCisg
ICAgICAgICAgICAgICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQs
CisgICAgICAgICAgICAgICAgIFRyYW5zcG9ydCogcnRjcF9zZW5kX3RyYW5zcG9ydCwKKyAgICAg
ICAgICAgICAgICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9sb2csCisgICAgICAgICAgICAgICAg
IHVpbnQzMl90IHJlbW90ZV9zc3JjLAorICAgICAgICAgICAgICAgICBzaXplX3Qgaml0dGVyX2J1
ZmZlcl9tYXhfcGFja2V0cywKKyAgICAgICAgICAgICAgICAgYm9vbCBqaXR0ZXJfYnVmZmVyX2Zh
c3RfcGxheW91dCwKKyAgICAgICAgICAgICAgICAgaW50IGppdHRlcl9idWZmZXJfbWluX2RlbGF5
X21zLAorICAgICAgICAgICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFj
dG9yeT4gZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxB
dWRpb0NvZGVjUGFpcklkPiBjb2RlY19wYWlyX2lkLAorICAgICAgICAgICAgICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRvciwKKyAg
ICAgICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cyk7CisgIH5DaGFubmVsUmVjZWl2ZSgpIG92ZXJyaWRlOworCisgIHZvaWQgU2V0U2luayhBdWRp
b1NpbmtJbnRlcmZhY2UqIHNpbmspIG92ZXJyaWRlOworCisgIHZvaWQgU2V0UmVjZWl2ZUNvZGVj
cyhjb25zdCBzdGQ6Om1hcDxpbnQsIFNkcEF1ZGlvRm9ybWF0PiYgY29kZWNzKSBvdmVycmlkZTsK
KworICAvLyBBUEkgbWV0aG9kcworCisgIHZvaWQgU3RhcnRQbGF5b3V0KCkgb3ZlcnJpZGU7Cisg
IHZvaWQgU3RvcFBsYXlvdXQoKSBvdmVycmlkZTsKKworICAvLyBDb2RlY3MKKyAgYm9vbCBHZXRS
ZWNDb2RlYyhDb2RlY0luc3QqIGNvZGVjKSBjb25zdCBvdmVycmlkZTsKKworICBib29sIFJlY2Vp
dmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBvdmVycmlk
ZTsKKworICAvLyBSdHBQYWNrZXRTaW5rSW50ZXJmYWNlLgorICB2b2lkIE9uUnRwUGFja2V0KGNv
bnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIG92ZXJyaWRlOworCisgIC8vIE11dGluZywg
Vm9sdW1lIGFuZCBMZXZlbC4KKyAgdm9pZCBTZXRDaGFubmVsT3V0cHV0Vm9sdW1lU2NhbGluZyhm
bG9hdCBzY2FsaW5nKSBvdmVycmlkZTsKKyAgaW50IEdldFNwZWVjaE91dHB1dExldmVsRnVsbFJh
bmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgIC8vIFNlZSBkZXNjcmlwdGlvbiBvZiAidG90YWxBdWRp
b0VuZXJneSIgaW4gdGhlIFdlYlJUQyBzdGF0cyBzcGVjOgorICAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vd2VicnRjLXN0YXRzLyNkb20tcnRjbWVkaWFzdHJlYW10cmFja3N0YXRzLXRvdGFsYXVk
aW9lbmVyZ3kKKyAgZG91YmxlIEdldFRvdGFsT3V0cHV0RW5lcmd5KCkgY29uc3Qgb3ZlcnJpZGU7
CisgIGRvdWJsZSBHZXRUb3RhbE91dHB1dER1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
Ly8gU3RhdHMuCisgIE5ldHdvcmtTdGF0aXN0aWNzIEdldE5ldHdvcmtTdGF0aXN0aWNzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgIEF1ZGlvRGVjb2RpbmdDYWxsU3RhdHMgR2V0RGVjb2RpbmdDYWxsU3Rh
dGlzdGljcygpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIEF1ZGlvK1ZpZGVvIFN5bmMuCisgIHVp
bnQzMl90IEdldERlbGF5RXN0aW1hdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgdm9pZCBTZXRNaW5p
bXVtUGxheW91dERlbGF5KGludCBkZWxheU1zKSBvdmVycmlkZTsKKyAgdWludDMyX3QgR2V0UGxh
eW91dFRpbWVzdGFtcCgpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIFByb2R1Y2VzIHRoZSB0cmFu
c3BvcnQtcmVsYXRlZCB0aW1lc3RhbXBzOyBjdXJyZW50X2RlbGF5X21zIGlzIGxlZnQgdW5zZXQu
CisgIGFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBHZXRTeW5jSW5mbygpIGNvbnN0IG92
ZXJyaWRlOworCisgIC8vIFJUUCtSVENQCisgIHZvaWQgU2V0TG9jYWxTU1JDKHVuc2lnbmVkIGlu
dCBzc3JjKSBvdmVycmlkZTsKKworICB2b2lkIFJlZ2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9uQ29u
dHJvbE9iamVjdHMoCisgICAgICBQYWNrZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXIpIG92ZXJyaWRl
OworICB2b2lkIFJlc2V0UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSBvdmVycmlk
ZTsKKworICBDYWxsUmVjZWl2ZVN0YXRpc3RpY3MgR2V0UlRDUFN0YXRpc3RpY3MoKSBjb25zdCBv
dmVycmlkZTsKKyAgdm9pZCBTZXROQUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4TnVtYmVy
T2ZQYWNrZXRzKSBvdmVycmlkZTsKKworICBBdWRpb01peGVyOjpTb3VyY2U6OkF1ZGlvRnJhbWVJ
bmZvIEdldEF1ZGlvRnJhbWVXaXRoSW5mbygKKyAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKKyAg
ICAgIEF1ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKSBvdmVycmlkZTsKKworICBpbnQgUHJlZmVycmVk
U2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIEFzc29jaWF0ZSB0byBhIHNlbmQg
Y2hhbm5lbC4KKyAgLy8gVXNlZCBmb3Igb2J0YWluaW5nIFJUVCBmb3IgYSByZWNlaXZlLW9ubHkg
Y2hhbm5lbC4KKyAgdm9pZCBTZXRBc3NvY2lhdGVkU2VuZENoYW5uZWwoY29uc3QgQ2hhbm5lbFNl
bmRJbnRlcmZhY2UqIGNoYW5uZWwpIG92ZXJyaWRlOworCisgIHN0ZDo6dmVjdG9yPFJ0cFNvdXJj
ZT4gR2V0U291cmNlcygpIGNvbnN0IG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgYm9vbCBSZWNl
aXZlUGFja2V0KGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwKKyAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBwYWNrZXRfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgUlRQSGVhZGVy
JiBoZWFkZXIpOworICBpbnQgUmVzZW5kUGFja2V0cyhjb25zdCB1aW50MTZfdCogc2VxdWVuY2Vf
bnVtYmVycywgaW50IGxlbmd0aCk7CisgIHZvaWQgVXBkYXRlUGxheW91dFRpbWVzdGFtcChib29s
IHJ0Y3ApOworCisgIGludCBHZXRSdHBUaW1lc3RhbXBSYXRlSHooKSBjb25zdDsKKyAgaW50NjRf
dCBHZXRSVFQoKSBjb25zdDsKKworICAvLyBNZWRpYVRyYW5zcG9ydEF1ZGlvU2lua0ludGVyZmFj
ZSBvdmVycmlkZTsKKyAgdm9pZCBPbkRhdGEodWludDY0X3QgY2hhbm5lbF9pZCwKKyAgICAgICAg
ICAgICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSBmcmFtZSkgb3ZlcnJpZGU7CisK
KyAgaW50MzJfdCBPblJlY2VpdmVkUGF5bG9hZERhdGEoY29uc3QgdWludDhfdCogcGF5bG9hZERh
dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUnRjUlRQSGVhZGVyKiBy
dHBIZWFkZXIpOworCisgIGJvb2wgUGxheWluZygpIGNvbnN0IHsKKyAgICBydGM6OkNyaXRTY29w
ZSBsb2NrKCZwbGF5aW5nX2xvY2tfKTsKKyAgICByZXR1cm4gcGxheWluZ187CisgIH0KKworICAv
LyBUaHJlYWQgY2hlY2tlcnMgZG9jdW1lbnQgYW5kIGxvY2sgdXNhZ2Ugb2Ygc29tZSBtZXRob2Rz
IHRvIHNwZWNpZmljIHRocmVhZHMKKyAgLy8gd2Uga25vdyBhYm91dC4gVGhlIGdvYWwgaXMgdG8g
ZXZlbnR1YWxseSBzcGxpdCB1cCB2b2U6OkNoYW5uZWxSZWNlaXZlIGludG8KKyAgLy8gcGFydHMg
d2l0aCBzaW5nbGUtdGhyZWFkZWQgc2VtYW50aWNzLCBhbmQgdGhlcmVieSByZWR1Y2UgdGhlIG5l
ZWQgZm9yCisgIC8vIGxvY2tzLgorICBydGM6OlRocmVhZENoZWNrZXIgd29ya2VyX3RocmVhZF9j
aGVja2VyXzsKKyAgcnRjOjpUaHJlYWRDaGVja2VyIG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVj
a2VyXzsKKyAgLy8gTWV0aG9kcyBhY2Nlc3NlZCBmcm9tIGF1ZGlvIGFuZCB2aWRlbyB0aHJlYWRz
IGFyZSBjaGVja2VkIGZvciBzZXF1ZW50aWFsLQorICAvLyBvbmx5IGFjY2Vzcy4gV2UgZG9uJ3Qg
bmVjZXNzYXJpbHkgb3duIGFuZCBjb250cm9sIHRoZXNlIHRocmVhZHMsIHNvIHRocmVhZAorICAv
LyBjaGVja2VycyBjYW5ub3QgYmUgdXNlZC4gRS5nLiBDaHJvbWl1bSBtYXkgdHJhbnNmZXIgIm93
bmVyc2hpcCIgZnJvbSBvbmUKKyAgLy8gYXVkaW8gdGhyZWFkIHRvIGFub3RoZXIsIGJ1dCBhY2Nl
c3MgaXMgc3RpbGwgc2VxdWVudGlhbC4KKyAgcnRjOjpSYWNlQ2hlY2tlciBhdWRpb190aHJlYWRf
cmFjZV9jaGVja2VyXzsKKyAgcnRjOjpSYWNlQ2hlY2tlciB2aWRlb19jYXB0dXJlX3RocmVhZF9y
YWNlX2NoZWNrZXJfOworICBydGM6OkNyaXRpY2FsU2VjdGlvbiBfY2FsbGJhY2tDcml0U2VjdDsK
KyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gdm9sdW1lX3NldHRpbmdzX2NyaXRzZWN0XzsKKworICBy
dGM6OkNyaXRpY2FsU2VjdGlvbiBwbGF5aW5nX2xvY2tfOworICBib29sIHBsYXlpbmdfIFJUQ19H
VUFSREVEX0JZKCZwbGF5aW5nX2xvY2tfKSA9IGZhbHNlOworCisgIFJ0Y0V2ZW50TG9nKiBjb25z
dCBldmVudF9sb2dfOworCisgIC8vIEluZGV4ZWQgYnkgcGF5bG9hZCB0eXBlLgorICBzdGQ6Om1h
cDx1aW50OF90LCBpbnQ+IHBheWxvYWRfdHlwZV9mcmVxdWVuY2llc187CisKKyAgc3RkOjp1bmlx
dWVfcHRyPFJlY2VpdmVTdGF0aXN0aWNzPiBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXzsKKyAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0cFJ0Y3A+IF9ydHBSdGNwTW9kdWxlOworICBjb25zdCB1aW50MzJfdCBy
ZW1vdGVfc3NyY187CisKKyAgLy8gSW5mbyBmb3IgR2V0U291cmNlcyBhbmQgR2V0U3luY0luZm8g
aXMgdXBkYXRlZCBvbiBuZXR3b3JrIG9yIHdvcmtlciB0aHJlYWQsCisgIC8vIHF1ZXJpZWQgb24g
dGhlIHdvcmtlciB0aHJlYWQuCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHJ0cF9zb3VyY2VzX2xv
Y2tfOworICBDb250cmlidXRpbmdTb3VyY2VzIGNvbnRyaWJ1dGluZ19zb3VyY2VzXyBSVENfR1VB
UkRFRF9CWSgmcnRwX3NvdXJjZXNfbG9ja18pOworICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4g
bGFzdF9yZWNlaXZlZF9ydHBfdGltZXN0YW1wXworICAgICAgUlRDX0dVQVJERURfQlkoJnJ0cF9z
b3VyY2VzX2xvY2tfKTsKKyAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9yZWNlaXZlZF9y
dHBfc3lzdGVtX3RpbWVfbXNfCisgICAgICBSVENfR1VBUkRFRF9CWSgmcnRwX3NvdXJjZXNfbG9j
a18pOworICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBsYXN0X3JlY2VpdmVkX3J0cF9hdWRpb19s
ZXZlbF8KKyAgICAgIFJUQ19HVUFSREVEX0JZKCZydHBfc291cmNlc19sb2NrXyk7CisKKyAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvQ29kaW5nTW9kdWxlPiBhdWRpb19jb2RpbmdfOworICBBdWRpb1Np
bmtJbnRlcmZhY2UqIGF1ZGlvX3NpbmtfID0gbnVsbHB0cjsKKyAgQXVkaW9MZXZlbCBfb3V0cHV0
QXVkaW9MZXZlbDsKKworICBSZW1vdGVOdHBUaW1lRXN0aW1hdG9yIG50cF9lc3RpbWF0b3JfIFJU
Q19HVUFSREVEX0JZKHRzX3N0YXRzX2xvY2tfKTsKKworICAvLyBUaW1lc3RhbXAgb2YgdGhlIGF1
ZGlvIHB1bGxlZCBmcm9tIE5ldEVxLgorICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gaml0dGVy
X2J1ZmZlcl9wbGF5b3V0X3RpbWVzdGFtcF87CisKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gdmlk
ZW9fc3luY19sb2NrXzsKKyAgdWludDMyX3QgcGxheW91dF90aW1lc3RhbXBfcnRwXyBSVENfR1VB
UkRFRF9CWSh2aWRlb19zeW5jX2xvY2tfKTsKKyAgdWludDMyX3QgcGxheW91dF9kZWxheV9tc18g
UlRDX0dVQVJERURfQlkodmlkZW9fc3luY19sb2NrXyk7CisKKyAgcnRjOjpDcml0aWNhbFNlY3Rp
b24gdHNfc3RhdHNfbG9ja187CisKKyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGltZXN0YW1wV3Jh
cEFyb3VuZEhhbmRsZXI+IHJ0cF90c193cmFwYXJvdW5kX2hhbmRsZXJfOworICAvLyBUaGUgcnRw
IHRpbWVzdGFtcCBvZiB0aGUgZmlyc3QgcGxheWVkIG91dCBhdWRpbyBmcmFtZS4KKyAgaW50NjRf
dCBjYXB0dXJlX3N0YXJ0X3J0cF90aW1lX3N0YW1wXzsKKyAgLy8gVGhlIGNhcHR1cmUgbnRwIHRp
bWUgKGluIGxvY2FsIHRpbWViYXNlKSBvZiB0aGUgZmlyc3QgcGxheWVkIG91dCBhdWRpbworICAv
LyBmcmFtZS4KKyAgaW50NjRfdCBjYXB0dXJlX3N0YXJ0X250cF90aW1lX21zXyBSVENfR1VBUkRF
RF9CWSh0c19zdGF0c19sb2NrXyk7CisKKyAgLy8gdXNlcworICBQcm9jZXNzVGhyZWFkKiBfbW9k
dWxlUHJvY2Vzc1RocmVhZFB0cjsKKyAgQXVkaW9EZXZpY2VNb2R1bGUqIF9hdWRpb0RldmljZU1v
ZHVsZVB0cjsKKyAgZmxvYXQgX291dHB1dEdhaW4gUlRDX0dVQVJERURfQlkodm9sdW1lX3NldHRp
bmdzX2NyaXRzZWN0Xyk7CisKKyAgLy8gQW4gYXNzb2NpYXRlZCBzZW5kIGNoYW5uZWwuCisgIHJ0
Yzo6Q3JpdGljYWxTZWN0aW9uIGFzc29jX3NlbmRfY2hhbm5lbF9sb2NrXzsKKyAgY29uc3QgQ2hh
bm5lbFNlbmRJbnRlcmZhY2UqIGFzc29jaWF0ZWRfc2VuZF9jaGFubmVsXworICAgICAgUlRDX0dV
QVJERURfQlkoYXNzb2Nfc2VuZF9jaGFubmVsX2xvY2tfKTsKKworICBQYWNrZXRSb3V0ZXIqIHBh
Y2tldF9yb3V0ZXJfID0gbnVsbHB0cjsKKworICBydGM6OlRocmVhZENoZWNrZXIgY29uc3RydWN0
aW9uX3RocmVhZF87CisKKyAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIGNvbnN0IG1lZGlhX3Ry
YW5zcG9ydF87CisKKyAgLy8gRTJFRSBBdWRpbyBGcmFtZSBEZWNyeXB0aW9uCisgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yXzsKKyAg
d2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKK307CiAKIGludDMyX3QgQ2hh
bm5lbFJlY2VpdmU6Ok9uUmVjZWl2ZWRQYXlsb2FkRGF0YSgKICAgICBjb25zdCB1aW50OF90KiBw
YXlsb2FkRGF0YSwKICAgICBzaXplX3QgcGF5bG9hZFNpemUsCiAgICAgY29uc3QgV2ViUnRjUlRQ
SGVhZGVyKiBydHBIZWFkZXIpIHsKLSAgaWYgKCFjaGFubmVsX3N0YXRlXy5HZXQoKS5wbGF5aW5n
KSB7CisgIC8vIFdlIHNob3VsZCBub3QgYmUgcmVjZWl2aW5nIGFueSBSVFAgcGFja2V0cyBpZiBt
ZWRpYV90cmFuc3BvcnQgaXMgc2V0LgorICBSVENfQ0hFQ0soIW1lZGlhX3RyYW5zcG9ydF8pOwor
CisgIGlmICghUGxheWluZygpKSB7CiAgICAgLy8gQXZvaWQgaW5zZXJ0aW5nIGludG8gTmV0RVEg
d2hlbiB3ZSBhcmUgbm90IHBsYXlpbmcuIENvdW50IHRoZQogICAgIC8vIHBhY2tldCBhcyBkaXNj
YXJkZWQuCiAgICAgcmV0dXJuIDA7CkBAIC04MiwxNCArMzA1LDM1IEBAIGludDMyX3QgQ2hhbm5l
bFJlY2VpdmU6Ok9uUmVjZWl2ZWRQYXlsb2FkRGF0YSgKICAgcmV0dXJuIDA7CiB9CiAKKy8vIE1l
ZGlhVHJhbnNwb3J0QXVkaW9TaW5rSW50ZXJmYWNlIG92ZXJyaWRlLgordm9pZCBDaGFubmVsUmVj
ZWl2ZTo6T25EYXRhKHVpbnQ2NF90IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSBmcmFtZSkgeworICBSVENfQ0hF
Q0sobWVkaWFfdHJhbnNwb3J0Xyk7CisKKyAgaWYgKCFQbGF5aW5nKCkpIHsKKyAgICAvLyBBdm9p
ZCBpbnNlcnRpbmcgaW50byBOZXRFUSB3aGVuIHdlIGFyZSBub3QgcGxheWluZy4gQ291bnQgdGhl
CisgICAgLy8gcGFja2V0IGFzIGRpc2NhcmRlZC4KKyAgICByZXR1cm47CisgIH0KKworICAvLyBT
ZW5kIGVuY29kZWQgYXVkaW8gZnJhbWUgdG8gRGVjb2RlciAvIE5ldEVxLgorICBpZiAoYXVkaW9f
Y29kaW5nXy0+SW5jb21pbmdQYWNrZXQoCisgICAgICAgICAgZnJhbWUuZW5jb2RlZF9kYXRhKCku
ZGF0YSgpLCBmcmFtZS5lbmNvZGVkX2RhdGEoKS5zaXplKCksCisgICAgICAgICAgQ3JlYXRlV2Vi
cnRjUlRQSGVhZGVyRm9yTWVkaWFUcmFuc3BvcnRGcmFtZShmcmFtZSwgY2hhbm5lbF9pZCkpICE9
CisgICAgICAwKSB7CisgICAgUlRDX0RMT0coTFNfRVJST1IpIDw8ICJDaGFubmVsUmVjZWl2ZTo6
T25EYXRhOiB1bmFibGUgdG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAicHVzaCBkYXRh
IHRvIHRoZSBBQ00iOworICB9Cit9CisKIEF1ZGlvTWl4ZXI6OlNvdXJjZTo6QXVkaW9GcmFtZUlu
Zm8gQ2hhbm5lbFJlY2VpdmU6OkdldEF1ZGlvRnJhbWVXaXRoSW5mbygKICAgICBpbnQgc2FtcGxl
X3JhdGVfaHosCiAgICAgQXVkaW9GcmFtZSogYXVkaW9fZnJhbWUpIHsKKyAgUlRDX0RDSEVDS19S
VU5TX1NFUklBTElaRUQoJmF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfKTsKICAgYXVkaW9fZnJh
bWUtPnNhbXBsZV9yYXRlX2h6XyA9IHNhbXBsZV9yYXRlX2h6OwogCi0gIHVuc2lnbmVkIGludCBz
c3JjOwotICBSVENfQ0hFQ0tfRVEoR2V0UmVtb3RlU1NSQyhzc3JjKSwgMCk7Ci0gIGV2ZW50X2xv
Z18tPkxvZyhhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudEF1ZGlvUGxheW91dD4oc3NyYykpOwor
ICBldmVudF9sb2dfLT5Mb2coYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRpb1BsYXlvdXQ+
KHJlbW90ZV9zc3JjXykpOworCiAgIC8vIEdldCAxMG1zIHJhdyBQQ00gZGF0YSBmcm9tIHRoZSBB
Q00gKG1peGVyIGxpbWl0cyBvdXRwdXQgZnJlcXVlbmN5KQogICBib29sIG11dGVkOwogICBpZiAo
YXVkaW9fY29kaW5nXy0+UGxheW91dERhdGExME1zKGF1ZGlvX2ZyYW1lLT5zYW1wbGVfcmF0ZV9o
el8sIGF1ZGlvX2ZyYW1lLApAQCAtMTkxLDYgKzQzNSw3IEBAIEF1ZGlvTWl4ZXI6OlNvdXJjZTo6
QXVkaW9GcmFtZUluZm8gQ2hhbm5lbFJlY2VpdmU6OkdldEF1ZGlvRnJhbWVXaXRoSW5mbygKIH0K
IAogaW50IENoYW5uZWxSZWNlaXZlOjpQcmVmZXJyZWRTYW1wbGVSYXRlKCkgY29uc3QgeworICBS
VENfRENIRUNLX1JVTlNfU0VSSUFMSVpFRCgmYXVkaW9fdGhyZWFkX3JhY2VfY2hlY2tlcl8pOwog
ICAvLyBSZXR1cm4gdGhlIGJpZ2dlciBvZiBwbGF5b3V0IGFuZCByZWNlaXZlIGZyZXF1ZW5jeSBp
biB0aGUgQUNNLgogICByZXR1cm4gc3RkOjptYXgoYXVkaW9fY29kaW5nXy0+UmVjZWl2ZUZyZXF1
ZW5jeSgpLAogICAgICAgICAgICAgICAgICAgYXVkaW9fY29kaW5nXy0+UGxheW91dEZyZXF1ZW5j
eSgpKTsKQEAgLTE5OSwxNCArNDQ0LDE3IEBAIGludCBDaGFubmVsUmVjZWl2ZTo6UHJlZmVycmVk
U2FtcGxlUmF0ZSgpIGNvbnN0IHsKIENoYW5uZWxSZWNlaXZlOjpDaGFubmVsUmVjZWl2ZSgKICAg
ICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCiAgICAgQXVkaW9EZXZpY2VN
b2R1bGUqIGF1ZGlvX2RldmljZV9tb2R1bGUsCisgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2Uq
IG1lZGlhX3RyYW5zcG9ydCwKICAgICBUcmFuc3BvcnQqIHJ0Y3Bfc2VuZF90cmFuc3BvcnQsCiAg
ICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9sb2csCiAgICAgdWludDMyX3QgcmVtb3RlX3NzcmMs
CiAgICAgc2l6ZV90IGppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMsCiAgICAgYm9vbCBqaXR0ZXJf
YnVmZmVyX2Zhc3RfcGxheW91dCwKKyAgICBpbnQgaml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMs
CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGRlY29kZXJfZmFj
dG9yeSwKICAgICBhYnNsOjpvcHRpb25hbDxBdWRpb0NvZGVjUGFpcklkPiBjb2RlY19wYWlyX2lk
LAotICAgIEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9kZWNyeXB0b3IpCisgICAgcnRj
OjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3Is
CisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykKICAgICA6
IGV2ZW50X2xvZ18ocnRjX2V2ZW50X2xvZyksCiAgICAgICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNz
XygKICAgICAgICAgICBSZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRlKENsb2NrOjpHZXRSZWFsVGlt
ZUNsb2NrKCkpKSwKQEAgLTIyMiw3ICs0NzAsMTIgQEAgQ2hhbm5lbFJlY2VpdmU6OkNoYW5uZWxS
ZWNlaXZlKAogICAgICAgX2F1ZGlvRGV2aWNlTW9kdWxlUHRyKGF1ZGlvX2RldmljZV9tb2R1bGUp
LAogICAgICAgX291dHB1dEdhaW4oMS4wZiksCiAgICAgICBhc3NvY2lhdGVkX3NlbmRfY2hhbm5l
bF8obnVsbHB0ciksCi0gICAgICBmcmFtZV9kZWNyeXB0b3JfKGZyYW1lX2RlY3J5cHRvcikgewor
ICAgICAgbWVkaWFfdHJhbnNwb3J0XyhtZWRpYV90cmFuc3BvcnQpLAorICAgICAgZnJhbWVfZGVj
cnlwdG9yXyhmcmFtZV9kZWNyeXB0b3IpLAorICAgICAgY3J5cHRvX29wdGlvbnNfKGNyeXB0b19v
cHRpb25zKSB7CisgIC8vIFRPRE8obmlzc2UpOiBVc2UgX21vZHVsZVByb2Nlc3NUaHJlYWRQdHIg
aW5zdGVhZD8KKyAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZyb21UaHJl
YWQoKTsKKwogICBSVENfRENIRUNLKG1vZHVsZV9wcm9jZXNzX3RocmVhZCk7CiAgIFJUQ19EQ0hF
Q0soYXVkaW9fZGV2aWNlX21vZHVsZSk7CiAgIEF1ZGlvQ29kaW5nTW9kdWxlOjpDb25maWcgYWNt
X2NvbmZpZzsKQEAgLTIzMCw2ICs0ODMsNyBAQCBDaGFubmVsUmVjZWl2ZTo6Q2hhbm5lbFJlY2Vp
dmUoCiAgIGFjbV9jb25maWcubmV0ZXFfY29uZmlnLmNvZGVjX3BhaXJfaWQgPSBjb2RlY19wYWly
X2lkOwogICBhY21fY29uZmlnLm5ldGVxX2NvbmZpZy5tYXhfcGFja2V0c19pbl9idWZmZXIgPSBq
aXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzOwogICBhY21fY29uZmlnLm5ldGVxX2NvbmZpZy5lbmFi
bGVfZmFzdF9hY2NlbGVyYXRlID0gaml0dGVyX2J1ZmZlcl9mYXN0X3BsYXlvdXQ7CisgIGFjbV9j
b25maWcubmV0ZXFfY29uZmlnLm1pbl9kZWxheV9tcyA9IGppdHRlcl9idWZmZXJfbWluX2RlbGF5
X21zOwogICBhY21fY29uZmlnLm5ldGVxX2NvbmZpZy5lbmFibGVfbXV0ZWRfc3RhdGUgPSB0cnVl
OwogICBhdWRpb19jb2RpbmdfLnJlc2V0KEF1ZGlvQ29kaW5nTW9kdWxlOjpDcmVhdGUoYWNtX2Nv
bmZpZykpOwogCkBAIC0yMzgsOSArNDkyLDcgQEAgQ2hhbm5lbFJlY2VpdmU6OkNoYW5uZWxSZWNl
aXZlKAogICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXy0+RW5hYmxlUmV0cmFuc21pdERldGVjdGlv
bihyZW1vdGVfc3NyY18sIHRydWUpOwogICBSdHBSdGNwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb247CiAgIGNvbmZpZ3VyYXRpb24uYXVkaW8gPSB0cnVlOwotICAvLyBUT0RPKG5pc3NlKTog
QWxzbyBzZXQgcmVjZWl2ZXJfb25seSA9IHRydWUsIGJ1dCB0aGF0IHNlZW1zIHRvIGJyZWFrIFJU
VAotICAvLyBlc3RpbWF0aW9uLCByZXN1bHRpbmcgaW4gdGVzdCBmYWlsdXJlcyBmb3IKLSAgLy8g
UGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QuR2V0Q2FwdHVyZVN0YXJ0TnRwVGltZVdpdGhP
bGRTdGF0c0FwaQorICBjb25maWd1cmF0aW9uLnJlY2VpdmVyX29ubHkgPSB0cnVlOwogICBjb25m
aWd1cmF0aW9uLm91dGdvaW5nX3RyYW5zcG9ydCA9IHJ0Y3Bfc2VuZF90cmFuc3BvcnQ7CiAgIGNv
bmZpZ3VyYXRpb24ucmVjZWl2ZV9zdGF0aXN0aWNzID0gcnRwX3JlY2VpdmVfc3RhdGlzdGljc18u
Z2V0KCk7CiAKQEAgLTI0OSwyNiArNTAxLDkgQEAgQ2hhbm5lbFJlY2VpdmU6OkNoYW5uZWxSZWNl
aXZlKAogICBfcnRwUnRjcE1vZHVsZS5yZXNldChSdHBSdGNwOjpDcmVhdGVSdHBSdGNwKGNvbmZp
Z3VyYXRpb24pKTsKICAgX3J0cFJ0Y3BNb2R1bGUtPlNldFNlbmRpbmdNZWRpYVN0YXR1cyhmYWxz
ZSk7CiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRSZW1vdGVTU1JDKHJlbW90ZV9zc3JjXyk7Ci0gIElu
aXQoKTsKLX0KLQotQ2hhbm5lbFJlY2VpdmU6On5DaGFubmVsUmVjZWl2ZSgpIHsKLSAgVGVybWlu
YXRlKCk7Ci0gIFJUQ19EQ0hFQ0soIWNoYW5uZWxfc3RhdGVfLkdldCgpLnBsYXlpbmcpOwotfQot
Ci12b2lkIENoYW5uZWxSZWNlaXZlOjpJbml0KCkgewotICBjaGFubmVsX3N0YXRlXy5SZXNldCgp
OwogCi0gIC8vIC0tLSBBZGQgbW9kdWxlcyB0byBwcm9jZXNzIHRocmVhZCAoZm9yIHBlcmlvZGlj
IHNjaGVkdWxhdGlvbikKICAgX21vZHVsZVByb2Nlc3NUaHJlYWRQdHItPlJlZ2lzdGVyTW9kdWxl
KF9ydHBSdGNwTW9kdWxlLmdldCgpLCBSVENfRlJPTV9IRVJFKTsKIAotICAvLyAtLS0gQUNNIGlu
aXRpYWxpemF0aW9uCi0gIGludCBlcnJvciA9IGF1ZGlvX2NvZGluZ18tPkluaXRpYWxpemVSZWNl
aXZlcigpOwotICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKLQotICAvLyAtLS0gUlRQL1JUQ1Ag
bW9kdWxlIGluaXRpYWxpemF0aW9uCi0KICAgLy8gRW5zdXJlIHRoYXQgUlRDUCBpcyBlbmFibGVk
IGJ5IGRlZmF1bHQgZm9yIHRoZSBjcmVhdGVkIGNoYW5uZWwuCiAgIC8vIE5vdGUgdGhhdCwgdGhl
IG1vZHVsZSB3aWxsIGtlZXAgZ2VuZXJhdGluZyBSVENQIHVudGlsIGl0IGlzIGV4cGxpY2l0bHkK
ICAgLy8gZGlzYWJsZWQgYnkgdGhlIHVzZXIuCkBAIC0yNzYsNjAgKzUxMSw1NCBAQCB2b2lkIENo
YW5uZWxSZWNlaXZlOjpJbml0KCkgewogICAvLyBiZSB0cmFuc21pdHRlZCBzaW5jZSB0aGUgVHJh
bnNwb3J0IG9iamVjdCB3aWxsIHRoZW4gYmUgaW52YWxpZC4KICAgLy8gUlRDUCBpcyBlbmFibGVk
IGJ5IGRlZmF1bHQuCiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjpr
Q29tcG91bmQpOworCisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgbWVkaWFfdHJhbnNw
b3J0Xy0+U2V0UmVjZWl2ZUF1ZGlvU2luayh0aGlzKTsKKyAgfQogfQogCi12b2lkIENoYW5uZWxS
ZWNlaXZlOjpUZXJtaW5hdGUoKSB7CitDaGFubmVsUmVjZWl2ZTo6fkNoYW5uZWxSZWNlaXZlKCkg
ewogICBSVENfRENIRUNLKGNvbnN0cnVjdGlvbl90aHJlYWRfLkNhbGxlZE9uVmFsaWRUaHJlYWQo
KSk7Ci0gIC8vIE11c3QgYmUgY2FsbGVkIG9uIHRoZSBzYW1lIHRocmVhZCBhcyBJbml0KCkuCi0g
IHJ0cF9yZWNlaXZlX3N0YXRpc3RpY3NfLT5SZWdpc3RlclJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2so
TlVMTCk7CisKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBtZWRpYV90cmFuc3BvcnRf
LT5TZXRSZWNlaXZlQXVkaW9TaW5rKG51bGxwdHIpOworICB9CiAKICAgU3RvcFBsYXlvdXQoKTsK
IAotICAvLyBUaGUgb3JkZXIgdG8gc2FmZWx5IHNodXRkb3duIG1vZHVsZXMgaW4gYSBjaGFubmVs
IGlzOgotICAvLyAxLiBEZS1yZWdpc3RlciBjYWxsYmFja3MgaW4gbW9kdWxlcwotICAvLyAyLiBE
ZS1yZWdpc3RlciBtb2R1bGVzIGluIHByb2Nlc3MgdGhyZWFkCi0gIC8vIDMuIERlc3Ryb3kgbW9k
dWxlcwogICBpbnQgZXJyb3IgPSBhdWRpb19jb2RpbmdfLT5SZWdpc3RlclRyYW5zcG9ydENhbGxi
YWNrKE5VTEwpOwogICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKIAotICAvLyBEZS1yZWdpc3Rl
ciBtb2R1bGVzIGluIHByb2Nlc3MgdGhyZWFkCiAgIGlmIChfbW9kdWxlUHJvY2Vzc1RocmVhZFB0
cikKICAgICBfbW9kdWxlUHJvY2Vzc1RocmVhZFB0ci0+RGVSZWdpc3Rlck1vZHVsZShfcnRwUnRj
cE1vZHVsZS5nZXQoKSk7Ci0KLSAgLy8gRW5kIG9mIG1vZHVsZXMgc2h1dGRvd24KIH0KIAogdm9p
ZCBDaGFubmVsUmVjZWl2ZTo6U2V0U2luayhBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmspIHsKKyAg
UlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7
CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZfY2FsbGJhY2tDcml0U2VjdCk7CiAgIGF1ZGlvX3Npbmtf
ID0gc2luazsKIH0KIAotaW50MzJfdCBDaGFubmVsUmVjZWl2ZTo6U3RhcnRQbGF5b3V0KCkgewot
ICBpZiAoY2hhbm5lbF9zdGF0ZV8uR2V0KCkucGxheWluZykgewotICAgIHJldHVybiAwOwotICB9
Ci0KLSAgY2hhbm5lbF9zdGF0ZV8uU2V0UGxheWluZyh0cnVlKTsKLQotICByZXR1cm4gMDsKK3Zv
aWQgQ2hhbm5lbFJlY2VpdmU6OlN0YXJ0UGxheW91dCgpIHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJf
dGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CisgIHJ0Yzo6Q3JpdFNjb3Bl
IGxvY2soJnBsYXlpbmdfbG9ja18pOworICBwbGF5aW5nXyA9IHRydWU7CiB9CiAKLWludDMyX3Qg
Q2hhbm5lbFJlY2VpdmU6OlN0b3BQbGF5b3V0KCkgewotICBpZiAoIWNoYW5uZWxfc3RhdGVfLkdl
dCgpLnBsYXlpbmcpIHsKLSAgICByZXR1cm4gMDsKLSAgfQotCi0gIGNoYW5uZWxfc3RhdGVfLlNl
dFBsYXlpbmcoZmFsc2UpOwordm9pZCBDaGFubmVsUmVjZWl2ZTo6U3RvcFBsYXlvdXQoKSB7Cisg
IFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkp
OworICBydGM6OkNyaXRTY29wZSBsb2NrKCZwbGF5aW5nX2xvY2tfKTsKKyAgcGxheWluZ18gPSBm
YWxzZTsKICAgX291dHB1dEF1ZGlvTGV2ZWwuQ2xlYXIoKTsKLQotICByZXR1cm4gMDsKIH0KIAot
aW50MzJfdCBDaGFubmVsUmVjZWl2ZTo6R2V0UmVjQ29kZWMoQ29kZWNJbnN0JiBjb2RlYykgewot
ICByZXR1cm4gKGF1ZGlvX2NvZGluZ18tPlJlY2VpdmVDb2RlYygmY29kZWMpKTsKK2Jvb2wgQ2hh
bm5lbFJlY2VpdmU6OkdldFJlY0NvZGVjKENvZGVjSW5zdCogY29kZWMpIGNvbnN0IHsKKyAgUlRD
X0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Cisg
IHJldHVybiAoYXVkaW9fY29kaW5nXy0+UmVjZWl2ZUNvZGVjKGNvZGVjKSA9PSAwKTsKIH0KIAog
c3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+IENoYW5uZWxSZWNlaXZlOjpHZXRTb3VyY2Vz
KCkgY29uc3QgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25W
YWxpZFRocmVhZCgpKTsKICAgaW50NjRfdCBub3dfbXMgPSBydGM6OlRpbWVNaWxsaXMoKTsKICAg
c3RkOjp2ZWN0b3I8UnRwU291cmNlPiBzb3VyY2VzOwogICB7CkBAIC0zNDcsNiArNTc2LDcgQEAg
c3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+IENoYW5uZWxSZWNlaXZlOjpHZXRTb3VyY2Vz
KCkgY29uc3QgewogCiB2b2lkIENoYW5uZWxSZWNlaXZlOjpTZXRSZWNlaXZlQ29kZWNzKAogICAg
IGNvbnN0IHN0ZDo6bWFwPGludCwgU2RwQXVkaW9Gb3JtYXQ+JiBjb2RlY3MpIHsKKyAgUlRDX0RD
SEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAgIGZv
ciAoY29uc3QgYXV0byYga3YgOiBjb2RlY3MpIHsKICAgICBSVENfRENIRUNLX0dFKGt2LnNlY29u
ZC5jbG9ja3JhdGVfaHosIDEwMDApOwogICAgIHBheWxvYWRfdHlwZV9mcmVxdWVuY2llc19ba3Yu
Zmlyc3RdID0ga3Yuc2Vjb25kLmNsb2NrcmF0ZV9oejsKQEAgLTM1NCw3ICs1ODQsNyBAQCB2b2lk
IENoYW5uZWxSZWNlaXZlOjpTZXRSZWNlaXZlQ29kZWNzKAogICBhdWRpb19jb2RpbmdfLT5TZXRS
ZWNlaXZlQ29kZWNzKGNvZGVjcyk7CiB9CiAKLS8vIFRPRE8obmlzc2UpOiBNb3ZlIHJlY2VpdmUg
bG9naWMgdXAgdG8gQXVkaW9SZWNlaXZlU3RyZWFtLgorLy8gTWF5IGJlIGNhbGxlZCBvbiBlaXRo
ZXIgd29ya2VyIHRocmVhZCBvciBuZXR3b3JrIHRocmVhZC4KIHZvaWQgQ2hhbm5lbFJlY2VpdmU6
Ok9uUnRwUGFja2V0KGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIHsKICAgaW50NjRf
dCBub3dfbXMgPSBydGM6OlRpbWVNaWxsaXMoKTsKICAgdWludDhfdCBhdWRpb19sZXZlbDsKQEAg
LTM2OSw3ICs1OTksOSBAQCB2b2lkIENoYW5uZWxSZWNlaXZlOjpPblJ0cFBhY2tldChjb25zdCBS
dHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgICAgaWYgKGhhc19hdWRpb19sZXZlbCkKICAg
ICAgIGxhc3RfcmVjZWl2ZWRfcnRwX2F1ZGlvX2xldmVsXyA9IGF1ZGlvX2xldmVsOwogICAgIHN0
ZDo6dmVjdG9yPHVpbnQzMl90PiBjc3JjcyA9IHBhY2tldC5Dc3JjcygpOwotICAgIGNvbnRyaWJ1
dGluZ19zb3VyY2VzXy5VcGRhdGUobm93X21zLCBjc3Jjcyk7CisgICAgY29udHJpYnV0aW5nX3Nv
dXJjZXNfLlVwZGF0ZSgKKyAgICAgICAgbm93X21zLCBjc3JjcywKKyAgICAgICAgaGFzX2F1ZGlv
X2xldmVsID8gYWJzbDo6b3B0aW9uYWw8dWludDhfdD4oYXVkaW9fbGV2ZWwpIDogYWJzbDo6bnVs
bG9wdCk7CiAgIH0KIAogICAvLyBTdG9yZSBwbGF5b3V0IHRpbWVzdGFtcCBmb3IgdGhlIHJlY2Vp
dmVkIFJUUCBwYWNrZXQKQEAgLTQyOSw2ICs2NjEsMTAgQEAgYm9vbCBDaGFubmVsUmVjZWl2ZTo6
UmVjZWl2ZVBhY2tldChjb25zdCB1aW50OF90KiBwYWNrZXQsCiAgICAgLy8gVXBkYXRlIHRoZSBm
aW5hbCBwYXlsb2FkLgogICAgIHBheWxvYWQgPSBkZWNyeXB0ZWRfYXVkaW9fcGF5bG9hZC5kYXRh
KCk7CiAgICAgcGF5bG9hZF9kYXRhX2xlbmd0aCA9IGRlY3J5cHRlZF9hdWRpb19wYXlsb2FkLnNp
emUoKTsKKyAgfSBlbHNlIGlmIChjcnlwdG9fb3B0aW9uc18uc2ZyYW1lLnJlcXVpcmVfZnJhbWVf
ZW5jcnlwdGlvbikgeworICAgIFJUQ19ETE9HKExTX0VSUk9SKQorICAgICAgICA8PCAiRnJhbWVE
ZWNyeXB0b3IgcmVxdWlyZWQgYnV0IG5vdCBzZXQsIGRyb3BwaW5nIHBhY2tldCI7CisgICAgcGF5
bG9hZF9kYXRhX2xlbmd0aCA9IDA7CiAgIH0KIAogICBpZiAocGF5bG9hZF9kYXRhX2xlbmd0aCA9
PSAwKSB7CkBAIC00MzksNyArNjc1LDkgQEAgYm9vbCBDaGFubmVsUmVjZWl2ZTo6UmVjZWl2ZVBh
Y2tldChjb25zdCB1aW50OF90KiBwYWNrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJndlYnJ0Y19ydHBfaGVhZGVyKTsKIH0KIAotaW50MzJfdCBDaGFubmVsUmVjZWl2ZTo6UmVj
ZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsKKy8v
IE1heSBiZSBjYWxsZWQgb24gZWl0aGVyIHdvcmtlciB0aHJlYWQgb3IgbmV0d29yayB0aHJlYWQu
CisvLyBUT0RPKG5pc3NlKTogRHJvcCBhbHdheXMtdHJ1ZSByZXR1cm4gdmFsdWUuCitib29sIENo
YW5uZWxSZWNlaXZlOjpSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGxlbmd0aCkgewogICAvLyBTdG9yZSBwbGF5b3V0IHRpbWVzdGFtcCBmb3IgdGhlIHJlY2Vp
dmVkIFJUQ1AgcGFja2V0CiAgIFVwZGF0ZVBsYXlvdXRUaW1lc3RhbXAodHJ1ZSk7CiAKQEAgLTQ0
OSw3ICs2ODcsNyBAQCBpbnQzMl90IENoYW5uZWxSZWNlaXZlOjpSZWNlaXZlZFJUQ1BQYWNrZXQo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgewogICBpbnQ2NF90IHJ0dCA9IEdl
dFJUVCgpOwogICBpZiAocnR0ID09IDApIHsKICAgICAvLyBXYWl0aW5nIGZvciB2YWxpZCBSVFQu
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICBpbnQ2NF90IG5hY2tf
d2luZG93X21zID0gcnR0OwpAQCAtNDY1LDQ2ICs3MDMsNDUgQEAgaW50MzJfdCBDaGFubmVsUmVj
ZWl2ZTo6UmVjZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgpIHsKICAgaWYgKDAgIT0gX3J0cFJ0Y3BNb2R1bGUtPlJlbW90ZU5UUCgmbnRwX3NlY3MsICZu
dHBfZnJhYywgTlVMTCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmcnRwX3RpbWVzdGFtcCkpIHsKICAgICAvLyBXYWl0aW5nIGZvciBSVENQLgotICAgIHJldHVy
biAwOworICAgIHJldHVybiB0cnVlOwogICB9CiAKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGxv
Y2soJnRzX3N0YXRzX2xvY2tfKTsKICAgICBudHBfZXN0aW1hdG9yXy5VcGRhdGVSdGNwVGltZXN0
YW1wKHJ0dCwgbnRwX3NlY3MsIG50cF9mcmFjLCBydHBfdGltZXN0YW1wKTsKICAgfQotICByZXR1
cm4gMDsKKyAgcmV0dXJuIHRydWU7CiB9CiAKIGludCBDaGFubmVsUmVjZWl2ZTo6R2V0U3BlZWNo
T3V0cHV0TGV2ZWxGdWxsUmFuZ2UoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVh
ZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICByZXR1cm4gX291dHB1dEF1ZGlv
TGV2ZWwuTGV2ZWxGdWxsUmFuZ2UoKTsKIH0KIAogZG91YmxlIENoYW5uZWxSZWNlaXZlOjpHZXRU
b3RhbE91dHB1dEVuZXJneSgpIGNvbnN0IHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2No
ZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAgIHJldHVybiBfb3V0cHV0QXVkaW9MZXZl
bC5Ub3RhbEVuZXJneSgpOwogfQogCiBkb3VibGUgQ2hhbm5lbFJlY2VpdmU6OkdldFRvdGFsT3V0
cHV0RHVyYXRpb24oKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2Vy
Xy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICByZXR1cm4gX291dHB1dEF1ZGlvTGV2ZWwuVG90
YWxEdXJhdGlvbigpOwogfQogCiB2b2lkIENoYW5uZWxSZWNlaXZlOjpTZXRDaGFubmVsT3V0cHV0
Vm9sdW1lU2NhbGluZyhmbG9hdCBzY2FsaW5nKSB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVh
ZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBydGM6OkNyaXRTY29wZSBjcygm
dm9sdW1lX3NldHRpbmdzX2NyaXRzZWN0Xyk7CiAgIF9vdXRwdXRHYWluID0gc2NhbGluZzsKIH0K
IAotaW50IENoYW5uZWxSZWNlaXZlOjpTZXRMb2NhbFNTUkModW5zaWduZWQgaW50IHNzcmMpIHsK
K3ZvaWQgQ2hhbm5lbFJlY2VpdmU6OlNldExvY2FsU1NSQyh1aW50MzJfdCBzc3JjKSB7CisgIFJU
Q19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwog
ICBfcnRwUnRjcE1vZHVsZS0+U2V0U1NSQyhzc3JjKTsKLSAgcmV0dXJuIDA7Ci19Ci0KLS8vIFRP
RE8obmlzc2UpOiBQYXNzIHNzcmMgaW4gcmV0dXJuIHZhbHVlIGluc3RlYWQuCi1pbnQgQ2hhbm5l
bFJlY2VpdmU6OkdldFJlbW90ZVNTUkModW5zaWduZWQgaW50JiBzc3JjKSB7Ci0gIHNzcmMgPSBy
ZW1vdGVfc3NyY187Ci0gIHJldHVybiAwOwogfQogCiB2b2lkIENoYW5uZWxSZWNlaXZlOjpSZWdp
c3RlclJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAogICAgIFBhY2tldFJvdXRlciog
cGFja2V0X3JvdXRlcikgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2Fs
bGVkT25WYWxpZFRocmVhZCgpKTsKICAgUlRDX0RDSEVDSyhwYWNrZXRfcm91dGVyKTsKICAgUlRD
X0RDSEVDSyghcGFja2V0X3JvdXRlcl8pOwogICBjb25zdGV4cHIgYm9vbCByZW1iX2NhbmRpZGF0
ZSA9IGZhbHNlOwpAQCAtNTEzLDEzICs3NTAsMTYgQEAgdm9pZCBDaGFubmVsUmVjZWl2ZTo6UmVn
aXN0ZXJSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKIH0KIAogdm9pZCBDaGFubmVs
UmVjZWl2ZTo6UmVzZXRSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpIHsKKyAgUlRD
X0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAg
IFJUQ19EQ0hFQ0socGFja2V0X3JvdXRlcl8pOwogICBwYWNrZXRfcm91dGVyXy0+UmVtb3ZlUmVj
ZWl2ZVJ0cE1vZHVsZShfcnRwUnRjcE1vZHVsZS5nZXQoKSk7CiAgIHBhY2tldF9yb3V0ZXJfID0g
bnVsbHB0cjsKIH0KIAotaW50IENoYW5uZWxSZWNlaXZlOjpHZXRSVFBTdGF0aXN0aWNzKENhbGxS
ZWNlaXZlU3RhdGlzdGljcyYgc3RhdHMpIHsKK0NhbGxSZWNlaXZlU3RhdGlzdGljcyBDaGFubmVs
UmVjZWl2ZTo6R2V0UlRDUFN0YXRpc3RpY3MoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29ya2Vy
X3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICAvLyAtLS0gUnRjcFN0
YXRpc3RpY3MKKyAgQ2FsbFJlY2VpdmVTdGF0aXN0aWNzIHN0YXRzOwogCiAgIC8vIFRoZSBqaXR0
ZXIgc3RhdGlzdGljcyBpcyB1cGRhdGVkIGZvciBlYWNoIHJlY2VpdmVkIFJUUCBwYWNrZXQgYW5k
IGlzCiAgIC8vIGJhc2VkIG9uIHJlY2VpdmVkIHBhY2tldHMuCkBAIC01NTYsMTQgKzc5NiwxNSBA
QCBpbnQgQ2hhbm5lbFJlY2VpdmU6OkdldFJUUFN0YXRpc3RpY3MoQ2FsbFJlY2VpdmVTdGF0aXN0
aWNzJiBzdGF0cykgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnRzX3N0YXRzX2xvY2tfKTsK
ICAgICBzdGF0cy5jYXB0dXJlX3N0YXJ0X250cF90aW1lX21zXyA9IGNhcHR1cmVfc3RhcnRfbnRw
X3RpbWVfbXNfOwogICB9Ci0gIHJldHVybiAwOworICByZXR1cm4gc3RhdHM7CiB9CiAKLXZvaWQg
Q2hhbm5lbFJlY2VpdmU6OlNldE5BQ0tTdGF0dXMoYm9vbCBlbmFibGUsIGludCBtYXhOdW1iZXJP
ZlBhY2tldHMpIHsKK3ZvaWQgQ2hhbm5lbFJlY2VpdmU6OlNldE5BQ0tTdGF0dXMoYm9vbCBlbmFi
bGUsIGludCBtYXhfcGFja2V0cykgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tl
cl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgLy8gTm9uZSBvZiB0aGVzZSBmdW5jdGlvbnMg
Y2FuIGZhaWwuCi0gIHJ0cF9yZWNlaXZlX3N0YXRpc3RpY3NfLT5TZXRNYXhSZW9yZGVyaW5nVGhy
ZXNob2xkKG1heE51bWJlck9mUGFja2V0cyk7CisgIHJ0cF9yZWNlaXZlX3N0YXRpc3RpY3NfLT5T
ZXRNYXhSZW9yZGVyaW5nVGhyZXNob2xkKG1heF9wYWNrZXRzKTsKICAgaWYgKGVuYWJsZSkKLSAg
ICBhdWRpb19jb2RpbmdfLT5FbmFibGVOYWNrKG1heE51bWJlck9mUGFja2V0cyk7CisgICAgYXVk
aW9fY29kaW5nXy0+RW5hYmxlTmFjayhtYXhfcGFja2V0cyk7CiAgIGVsc2UKICAgICBhdWRpb19j
b2RpbmdfLT5EaXNhYmxlTmFjaygpOwogfQpAQCAtNTc0LDU0ICs4MTUsNjEgQEAgaW50IENoYW5u
ZWxSZWNlaXZlOjpSZXNlbmRQYWNrZXRzKGNvbnN0IHVpbnQxNl90KiBzZXF1ZW5jZV9udW1iZXJz
LAogICByZXR1cm4gX3J0cFJ0Y3BNb2R1bGUtPlNlbmROQUNLKHNlcXVlbmNlX251bWJlcnMsIGxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2hhbm5lbFJlY2VpdmU6OlNldEFzc29jaWF0ZWRTZW5kQ2hhbm5l
bChDaGFubmVsU2VuZCogY2hhbm5lbCkgewordm9pZCBDaGFubmVsUmVjZWl2ZTo6U2V0QXNzb2Np
YXRlZFNlbmRDaGFubmVsKAorICAgIGNvbnN0IENoYW5uZWxTZW5kSW50ZXJmYWNlKiBjaGFubmVs
KSB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhy
ZWFkKCkpOwogICBydGM6OkNyaXRTY29wZSBsb2NrKCZhc3NvY19zZW5kX2NoYW5uZWxfbG9ja18p
OwogICBhc3NvY2lhdGVkX3NlbmRfY2hhbm5lbF8gPSBjaGFubmVsOwogfQogCi1pbnQgQ2hhbm5l
bFJlY2VpdmU6OkdldE5ldHdvcmtTdGF0aXN0aWNzKE5ldHdvcmtTdGF0aXN0aWNzJiBzdGF0cykg
ewotICByZXR1cm4gYXVkaW9fY29kaW5nXy0+R2V0TmV0d29ya1N0YXRpc3RpY3MoJnN0YXRzKTsK
K05ldHdvcmtTdGF0aXN0aWNzIENoYW5uZWxSZWNlaXZlOjpHZXROZXR3b3JrU3RhdGlzdGljcygp
IGNvbnN0IHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFs
aWRUaHJlYWQoKSk7CisgIE5ldHdvcmtTdGF0aXN0aWNzIHN0YXRzOworICBpbnQgZXJyb3IgPSBh
dWRpb19jb2RpbmdfLT5HZXROZXR3b3JrU3RhdGlzdGljcygmc3RhdHMpOworICBSVENfRENIRUNL
X0VRKDAsIGVycm9yKTsKKyAgcmV0dXJuIHN0YXRzOwogfQogCi12b2lkIENoYW5uZWxSZWNlaXZl
OjpHZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKAotICAgIEF1ZGlvRGVjb2RpbmdDYWxsU3RhdHMq
IHN0YXRzKSBjb25zdCB7Ci0gIGF1ZGlvX2NvZGluZ18tPkdldERlY29kaW5nQ2FsbFN0YXRpc3Rp
Y3Moc3RhdHMpOworQXVkaW9EZWNvZGluZ0NhbGxTdGF0cyBDaGFubmVsUmVjZWl2ZTo6R2V0RGVj
b2RpbmdDYWxsU3RhdGlzdGljcygpIGNvbnN0IHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CisgIEF1ZGlvRGVjb2RpbmdDYWxsU3Rh
dHMgc3RhdHM7CisgIGF1ZGlvX2NvZGluZ18tPkdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoJnN0
YXRzKTsKKyAgcmV0dXJuIHN0YXRzOwogfQogCiB1aW50MzJfdCBDaGFubmVsUmVjZWl2ZTo6R2V0
RGVsYXlFc3RpbWF0ZSgpIGNvbnN0IHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNr
ZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSB8fAorICAgICAgICAgICAgIG1vZHVsZV9wcm9jZXNz
X3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBydGM6OkNyaXRTY29w
ZSBsb2NrKCZ2aWRlb19zeW5jX2xvY2tfKTsKICAgcmV0dXJuIGF1ZGlvX2NvZGluZ18tPkZpbHRl
cmVkQ3VycmVudERlbGF5TXMoKSArIHBsYXlvdXRfZGVsYXlfbXNfOwogfQogCi1pbnQgQ2hhbm5l
bFJlY2VpdmU6OlNldE1pbmltdW1QbGF5b3V0RGVsYXkoaW50IGRlbGF5TXMpIHsKLSAgaWYgKChk
ZWxheU1zIDwga1ZvaWNlRW5naW5lTWluTWluUGxheW91dERlbGF5TXMpIHx8Ci0gICAgICAoZGVs
YXlNcyA+IGtWb2ljZUVuZ2luZU1heE1pblBsYXlvdXREZWxheU1zKSkgewordm9pZCBDaGFubmVs
UmVjZWl2ZTo6U2V0TWluaW11bVBsYXlvdXREZWxheShpbnQgZGVsYXlfbXMpIHsKKyAgUlRDX0RD
SEVDSyhtb2R1bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgp
KTsKKyAgLy8gTGltaXQgdG8gcmFuZ2UgYWNjZXB0ZWQgYnkgYm90aCBWb0UgYW5kIEFDTSwgc28g
d2UncmUgYXQgbGVhc3QgZ2V0dGluZyBhcworICAvLyBjbG9zZSBhcyBwb3NzaWJsZSwgaW5zdGVh
ZCBvZiBmYWlsaW5nLgorICBkZWxheV9tcyA9IHJ0Yzo6U2FmZUNsYW1wKGRlbGF5X21zLCAwLCAx
MDAwMCk7CisgIGlmICgoZGVsYXlfbXMgPCBrVm9pY2VFbmdpbmVNaW5NaW5QbGF5b3V0RGVsYXlN
cykgfHwKKyAgICAgIChkZWxheV9tcyA+IGtWb2ljZUVuZ2luZU1heE1pblBsYXlvdXREZWxheU1z
KSkgewogICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiU2V0TWluaW11bVBsYXlvdXREZWxheSgp
IGludmFsaWQgbWluIGRlbGF5IjsKLSAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuOwogICB9Ci0g
IGlmIChhdWRpb19jb2RpbmdfLT5TZXRNaW5pbXVtUGxheW91dERlbGF5KGRlbGF5TXMpICE9IDAp
IHsKKyAgaWYgKGF1ZGlvX2NvZGluZ18tPlNldE1pbmltdW1QbGF5b3V0RGVsYXkoZGVsYXlfbXMp
ICE9IDApIHsKICAgICBSVENfRExPRyhMU19FUlJPUikKICAgICAgICAgPDwgIlNldE1pbmltdW1Q
bGF5b3V0RGVsYXkoKSBmYWlsZWQgdG8gc2V0IG1pbiBwbGF5b3V0IGRlbGF5IjsKLSAgICByZXR1
cm4gLTE7CiAgIH0KLSAgcmV0dXJuIDA7CiB9CiAKLWludCBDaGFubmVsUmVjZWl2ZTo6R2V0UGxh
eW91dFRpbWVzdGFtcCh1bnNpZ25lZCBpbnQmIHRpbWVzdGFtcCkgewotICB1aW50MzJfdCBwbGF5
b3V0X3RpbWVzdGFtcF9ydHAgPSAwOwordWludDMyX3QgQ2hhbm5lbFJlY2VpdmU6OkdldFBsYXlv
dXRUaW1lc3RhbXAoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0tfUlVOU19TRVJJQUxJWkVEKCZ2aWRl
b19jYXB0dXJlX3RocmVhZF9yYWNlX2NoZWNrZXJfKTsKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3Bl
IGxvY2soJnZpZGVvX3N5bmNfbG9ja18pOwotICAgIHBsYXlvdXRfdGltZXN0YW1wX3J0cCA9IHBs
YXlvdXRfdGltZXN0YW1wX3J0cF87Ci0gIH0KLSAgaWYgKHBsYXlvdXRfdGltZXN0YW1wX3J0cCA9
PSAwKSB7Ci0gICAgUlRDX0RMT0coTFNfRVJST1IpIDw8ICJHZXRQbGF5b3V0VGltZXN0YW1wKCkg
ZmFpbGVkIHRvIHJldHJpZXZlIHRpbWVzdGFtcCI7Ci0gICAgcmV0dXJuIC0xOworICAgIHJldHVy
biBwbGF5b3V0X3RpbWVzdGFtcF9ydHBfOwogICB9Ci0gIHRpbWVzdGFtcCA9IHBsYXlvdXRfdGlt
ZXN0YW1wX3J0cDsKLSAgcmV0dXJuIDA7CiB9CiAKIGFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJ
bmZvPiBDaGFubmVsUmVjZWl2ZTo6R2V0U3luY0luZm8oKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0so
bW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAg
IFN5bmNhYmxlOjpJbmZvIGluZm87CiAgIGlmIChfcnRwUnRjcE1vZHVsZS0+UmVtb3RlTlRQKCZp
bmZvLmNhcHR1cmVfdGltZV9udHBfc2VjcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmluZm8uY2FwdHVyZV90aW1lX250cF9mcmFjLCBudWxscHRyLCBudWxscHRyLApAQCAtNjgz
LDYgKzkzMSwxNCBAQCBpbnQgQ2hhbm5lbFJlY2VpdmU6OkdldFJ0cFRpbWVzdGFtcFJhdGVIeigp
IGNvbnN0IHsKIH0KIAogaW50NjRfdCBDaGFubmVsUmVjZWl2ZTo6R2V0UlRUKCkgY29uc3Qgewor
ICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIGF1dG8gdGFyZ2V0X3JhdGUgPSBtZWRpYV90
cmFuc3BvcnRfLT5HZXRMYXRlc3RUYXJnZXRUcmFuc2ZlclJhdGUoKTsKKyAgICBpZiAodGFyZ2V0
X3JhdGUuaGFzX3ZhbHVlKCkpIHsKKyAgICAgIHJldHVybiB0YXJnZXRfcmF0ZS0+bmV0d29ya19l
c3RpbWF0ZS5yb3VuZF90cmlwX3RpbWUubXMoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKKyAg
fQogICBSdGNwTW9kZSBtZXRob2QgPSBfcnRwUnRjcE1vZHVsZS0+UlRDUCgpOwogICBpZiAobWV0
aG9kID09IFJ0Y3BNb2RlOjprT2ZmKSB7CiAgICAgcmV0dXJuIDA7CkBAIC03MDUsNiArOTYxLDgg
QEAgaW50NjRfdCBDaGFubmVsUmVjZWl2ZTo6R2V0UlRUKCkgY29uc3QgewogICBpbnQ2NF90IGF2
Z19ydHQgPSAwOwogICBpbnQ2NF90IG1heF9ydHQgPSAwOwogICBpbnQ2NF90IG1pbl9ydHQgPSAw
OworICAvLyBUT0RPKG5pc3NlKTogVGhpcyBtZXRob2QgY29tcHV0ZXMgUlRUIGJhc2VkIG9uIHNl
bmRlciByZXBvcnRzLCBldmVuIHRob3VnaAorICAvLyBhIHJlY2VpdmUgc3RyZWFtIGlzIG5vdCBz
dXBwb3NlZCB0byBkbyB0aGF0LgogICBpZiAoX3J0cFJ0Y3BNb2R1bGUtPlJUVChyZW1vdGVfc3Ny
Y18sICZydHQsICZhdmdfcnR0LCAmbWluX3J0dCwgJm1heF9ydHQpICE9CiAgICAgICAwKSB7CiAg
ICAgcmV0dXJuIDA7CkBAIC03MTIsNSArOTcwLDI5IEBAIGludDY0X3QgQ2hhbm5lbFJlY2VpdmU6
OkdldFJUVCgpIGNvbnN0IHsKICAgcmV0dXJuIHJ0dDsKIH0KIAorfSAgLy8gbmFtZXNwYWNlCisK
K3N0ZDo6dW5pcXVlX3B0cjxDaGFubmVsUmVjZWl2ZUludGVyZmFjZT4gQ3JlYXRlQ2hhbm5lbFJl
Y2VpdmUoCisgICAgUHJvY2Vzc1RocmVhZCogbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAorICAgIEF1
ZGlvRGV2aWNlTW9kdWxlKiBhdWRpb19kZXZpY2VfbW9kdWxlLAorICAgIE1lZGlhVHJhbnNwb3J0
SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQsCisgICAgVHJhbnNwb3J0KiBydGNwX3NlbmRfdHJh
bnNwb3J0LAorICAgIFJ0Y0V2ZW50TG9nKiBydGNfZXZlbnRfbG9nLAorICAgIHVpbnQzMl90IHJl
bW90ZV9zc3JjLAorICAgIHNpemVfdCBqaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzLAorICAgIGJv
b2wgaml0dGVyX2J1ZmZlcl9mYXN0X3BsYXlvdXQsCisgICAgaW50IGppdHRlcl9idWZmZXJfbWlu
X2RlbGF5X21zLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBk
ZWNvZGVyX2ZhY3RvcnksCisgICAgYWJzbDo6b3B0aW9uYWw8QXVkaW9Db2RlY1BhaXJJZD4gY29k
ZWNfcGFpcl9pZCwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZh
Y2U+IGZyYW1lX2RlY3J5cHRvciwKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNy
eXB0b19vcHRpb25zKSB7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxDaGFubmVsUmVjZWl2
ZT4oCisgICAgICBtb2R1bGVfcHJvY2Vzc190aHJlYWQsIGF1ZGlvX2RldmljZV9tb2R1bGUsIG1l
ZGlhX3RyYW5zcG9ydCwKKyAgICAgIHJ0Y3Bfc2VuZF90cmFuc3BvcnQsIHJ0Y19ldmVudF9sb2cs
IHJlbW90ZV9zc3JjLAorICAgICAgaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cywgaml0dGVyX2J1
ZmZlcl9mYXN0X3BsYXlvdXQsCisgICAgICBqaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcywgZGVj
b2Rlcl9mYWN0b3J5LCBjb2RlY19wYWlyX2lkLAorICAgICAgZnJhbWVfZGVjcnlwdG9yLCBjcnlw
dG9fb3B0aW9ucyk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB2b2UKIH0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlLmgKaW5kZXggODJlYjRkZmYwYzRi
NTU3NDlhM2ZlNjk2NjVhMTM3ZGQ0ZjMzYjM5Ny4uOTAyNzYyMzRhMTM3YTE2YzI5YWIxNDM5NmQw
ODE3M2E2YmJkMTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlLmgKQEAgLTE3
LDIyICsxNywxOCBAQAogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1
ZGUgImFwaS9hdWRpby9hdWRpb19taXhlci5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3Mv
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2NhbGwvYXVkaW9fc2luay5o
IgogI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8v
Y3J5cHRvb3B0aW9ucy5oIgorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXVk
aW8vYXVkaW9fbGV2ZWwuaCIKKyNpbmNsdWRlICJjYWxsL3J0cF9wYWNrZXRfc2lua19pbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJjYWxsL3N5bmNhYmxlLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVz
LmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL2luY2x1ZGUvcmVtb3RlX250cF90aW1lX2VzdGltYXRvci5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX3BhcnNlci5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL2NvbnRyaWJ1dGluZ19zb3VyY2VzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
Y3JpdGljYWxzZWN0aW9uLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIK
IAogLy8gVE9ETyhzb2xlbmJlcmcsIG5pc3NlKTogVGhpcyBmaWxlIGNvbnRhaW5zIGEgZmV3IE5P
TElOVCBtYXJrcywgdG8gc2lsZW5jZQotLy8gd2FybmluZ3MgYWJvdXQgdXNlIG9mIHVuc2lnbmVk
IHNob3J0LCBhbmQgbm9uLWNvbnN0IHJlZmVyZW5jZSBhcmd1bWVudHMuCisvLyB3YXJuaW5ncyBh
Ym91dCB1c2Ugb2YgdW5zaWduZWQgc2hvcnQuCiAvLyBUaGVzZSBuZWVkIGNsZWFudXAsIGluIGEg
c2VwYXJhdGUgY2wuCiAKIG5hbWVzcGFjZSBydGMgewpAQCAtNjYsMjAxICs2Miw4NSBAQCBzdHJ1
Y3QgQ2FsbFJlY2VpdmVTdGF0aXN0aWNzIHsKIAogbmFtZXNwYWNlIHZvZSB7CiAKLWNsYXNzIENo
YW5uZWxTZW5kOworY2xhc3MgQ2hhbm5lbFNlbmRJbnRlcmZhY2U7CiAKLS8vIEhlbHBlciBjbGFz
cyB0byBzaW1wbGlmeSBsb2NraW5nIHNjaGVtZSBmb3IgbWVtYmVycyB0aGF0IGFyZSBhY2Nlc3Nl
ZCBmcm9tCi0vLyBtdWx0aXBsZSB0aHJlYWRzLgotLy8gRXhhbXBsZTogYSBtZW1iZXIgY2FuIGJl
IHNldCBvbiB0aHJlYWQgVDEgYW5kIHJlYWQgYnkgYW4gaW50ZXJuYWwgYXVkaW8KLS8vIHRocmVh
ZCBUMi4gQWNjZXNzaW5nIHRoZSBtZW1iZXIgdmlhIHRoaXMgY2xhc3MgZW5zdXJlcyB0aGF0IHdl
IGFyZQotLy8gc2FmZSBhbmQgYWxzbyBhdm9pZCBUU2FuIHYyIHdhcm5pbmdzLgotY2xhc3MgQ2hh
bm5lbFJlY2VpdmVTdGF0ZSB7Ci0gcHVibGljOgotICBzdHJ1Y3QgU3RhdGUgewotICAgIGJvb2wg
cGxheWluZyA9IGZhbHNlOwotICB9OwotCi0gIENoYW5uZWxSZWNlaXZlU3RhdGUoKSB7fQotICB2
aXJ0dWFsIH5DaGFubmVsUmVjZWl2ZVN0YXRlKCkge30KLQotICB2b2lkIFJlc2V0KCkgewotICAg
IHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmxvY2tfKTsKLSAgICBzdGF0ZV8gPSBTdGF0ZSgpOwotICB9
Ci0KLSAgU3RhdGUgR2V0KCkgY29uc3QgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmxvY2tf
KTsKLSAgICByZXR1cm4gc3RhdGVfOwotICB9Ci0KLSAgdm9pZCBTZXRQbGF5aW5nKGJvb2wgZW5h
YmxlKSB7Ci0gICAgcnRjOjpDcml0U2NvcGUgbG9jaygmbG9ja18pOwotICAgIHN0YXRlXy5wbGF5
aW5nID0gZW5hYmxlOwotICB9CisvLyBJbnRlcmZhY2UgY2xhc3MgbmVlZGVkIGZvciBBdWRpb1Jl
Y2VpdmVTdHJlYW0gdGVzdHMgdGhhdCB1c2UgYQorLy8gTW9ja0NoYW5uZWxSZWNlaXZlLgogCi0g
cHJpdmF0ZToKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gbG9ja187Ci0gIFN0YXRlIHN0YXRlXzsK
LX07Ci0KLWNsYXNzIENoYW5uZWxSZWNlaXZlIDogcHVibGljIFJ0cERhdGEgeworY2xhc3MgQ2hh
bm5lbFJlY2VpdmVJbnRlcmZhY2UgOiBwdWJsaWMgUnRwUGFja2V0U2lua0ludGVyZmFjZSB7CiAg
cHVibGljOgotICAvLyBVc2VkIGZvciByZWNlaXZlIHN0cmVhbXMuCi0gIENoYW5uZWxSZWNlaXZl
KFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKLSAgICAgICAgICAgICAgICAg
QXVkaW9EZXZpY2VNb2R1bGUqIGF1ZGlvX2RldmljZV9tb2R1bGUsCi0gICAgICAgICAgICAgICAg
IFRyYW5zcG9ydCogcnRjcF9zZW5kX3RyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgUnRjRXZl
bnRMb2cqIHJ0Y19ldmVudF9sb2csCi0gICAgICAgICAgICAgICAgIHVpbnQzMl90IHJlbW90ZV9z
c3JjLAotICAgICAgICAgICAgICAgICBzaXplX3Qgaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cywK
LSAgICAgICAgICAgICAgICAgYm9vbCBqaXR0ZXJfYnVmZmVyX2Zhc3RfcGxheW91dCwKLSAgICAg
ICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGRlY29k
ZXJfZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8QXVkaW9Db2RlY1Bh
aXJJZD4gY29kZWNfcGFpcl9pZCwKLSAgICAgICAgICAgICAgICAgRnJhbWVEZWNyeXB0b3JJbnRl
cmZhY2UqIGZyYW1lX2RlY3J5cHRvcik7Ci0gIHZpcnR1YWwgfkNoYW5uZWxSZWNlaXZlKCk7Cisg
IHZpcnR1YWwgfkNoYW5uZWxSZWNlaXZlSW50ZXJmYWNlKCkgPSBkZWZhdWx0OwogCi0gIHZvaWQg
U2V0U2luayhBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmspOworICB2aXJ0dWFsIHZvaWQgU2V0U2lu
ayhBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmspID0gMDsKIAotICB2b2lkIFNldFJlY2VpdmVDb2Rl
Y3MoY29uc3Qgc3RkOjptYXA8aW50LCBTZHBBdWRpb0Zvcm1hdD4mIGNvZGVjcyk7CisgIHZpcnR1
YWwgdm9pZCBTZXRSZWNlaXZlQ29kZWNzKAorICAgICAgY29uc3Qgc3RkOjptYXA8aW50LCBTZHBB
dWRpb0Zvcm1hdD4mIGNvZGVjcykgPSAwOwogCi0gIC8vIEFQSSBtZXRob2RzCisgIHZpcnR1YWwg
dm9pZCBTdGFydFBsYXlvdXQoKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBTdG9wUGxheW91dCgpID0g
MDsKIAotICAvLyBWb0VCYXNlCi0gIGludDMyX3QgU3RhcnRQbGF5b3V0KCk7Ci0gIGludDMyX3Qg
U3RvcFBsYXlvdXQoKTsKKyAgdmlydHVhbCBib29sIEdldFJlY0NvZGVjKENvZGVjSW5zdCogY29k
ZWMpIGNvbnN0ID0gMDsKIAotICAvLyBDb2RlY3MKLSAgaW50MzJfdCBHZXRSZWNDb2RlYyhDb2Rl
Y0luc3QmIGNvZGVjKTsgIC8vIE5PTElOVAorICB2aXJ0dWFsIGJvb2wgUmVjZWl2ZWRSVENQUGFj
a2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpID0gMDsKIAotICAvLyBUT0RP
KG5pc3NlLCBzb2xlbmJlcmcpOiBEZWxldGUgd2hlbiBWb0VOZXR3b3JrIGlzIGRlbGV0ZWQuCi0g
IGludDMyX3QgUmVjZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpOwotICB2b2lkIE9uUnRwUGFja2V0KGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNr
ZXQpOwotCi0gIC8vIE11dGluZywgVm9sdW1lIGFuZCBMZXZlbC4KLSAgdm9pZCBTZXRDaGFubmVs
T3V0cHV0Vm9sdW1lU2NhbGluZyhmbG9hdCBzY2FsaW5nKTsKLSAgaW50IEdldFNwZWVjaE91dHB1
dExldmVsRnVsbFJhbmdlKCkgY29uc3Q7CisgIHZpcnR1YWwgdm9pZCBTZXRDaGFubmVsT3V0cHV0
Vm9sdW1lU2NhbGluZyhmbG9hdCBzY2FsaW5nKSA9IDA7CisgIHZpcnR1YWwgaW50IEdldFNwZWVj
aE91dHB1dExldmVsRnVsbFJhbmdlKCkgY29uc3QgPSAwOwogICAvLyBTZWUgZGVzY3JpcHRpb24g
b2YgInRvdGFsQXVkaW9FbmVyZ3kiIGluIHRoZSBXZWJSVEMgc3RhdHMgc3BlYzoKICAgLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jZG9tLXJ0Y21lZGlhc3RyZWFtdHJhY2tz
dGF0cy10b3RhbGF1ZGlvZW5lcmd5Ci0gIGRvdWJsZSBHZXRUb3RhbE91dHB1dEVuZXJneSgpIGNv
bnN0OwotICBkb3VibGUgR2V0VG90YWxPdXRwdXREdXJhdGlvbigpIGNvbnN0OworICB2aXJ0dWFs
IGRvdWJsZSBHZXRUb3RhbE91dHB1dEVuZXJneSgpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBkb3Vi
bGUgR2V0VG90YWxPdXRwdXREdXJhdGlvbigpIGNvbnN0ID0gMDsKIAogICAvLyBTdGF0cy4KLSAg
aW50IEdldE5ldHdvcmtTdGF0aXN0aWNzKE5ldHdvcmtTdGF0aXN0aWNzJiBzdGF0cyk7ICAvLyBO
T0xJTlQKLSAgdm9pZCBHZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKEF1ZGlvRGVjb2RpbmdDYWxs
U3RhdHMqIHN0YXRzKSBjb25zdDsKKyAgdmlydHVhbCBOZXR3b3JrU3RhdGlzdGljcyBHZXROZXR3
b3JrU3RhdGlzdGljcygpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBBdWRpb0RlY29kaW5nQ2FsbFN0
YXRzIEdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoKSBjb25zdCA9IDA7CiAKICAgLy8gQXVkaW8r
VmlkZW8gU3luYy4KLSAgdWludDMyX3QgR2V0RGVsYXlFc3RpbWF0ZSgpIGNvbnN0OwotICBpbnQg
U2V0TWluaW11bVBsYXlvdXREZWxheShpbnQgZGVsYXlNcyk7Ci0gIGludCBHZXRQbGF5b3V0VGlt
ZXN0YW1wKHVuc2lnbmVkIGludCYgdGltZXN0YW1wKTsgIC8vIE5PTElOVAorICB2aXJ0dWFsIHVp
bnQzMl90IEdldERlbGF5RXN0aW1hdGUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgdm9pZCBTZXRN
aW5pbXVtUGxheW91dERlbGF5KGludCBkZWxheV9tcykgPSAwOworICB2aXJ0dWFsIHVpbnQzMl90
IEdldFBsYXlvdXRUaW1lc3RhbXAoKSBjb25zdCA9IDA7CiAKICAgLy8gUHJvZHVjZXMgdGhlIHRy
YW5zcG9ydC1yZWxhdGVkIHRpbWVzdGFtcHM7IGN1cnJlbnRfZGVsYXlfbXMgaXMgbGVmdCB1bnNl
dC4KLSAgYWJzbDo6b3B0aW9uYWw8U3luY2FibGU6OkluZm8+IEdldFN5bmNJbmZvKCkgY29uc3Q7
CisgIHZpcnR1YWwgYWJzbDo6b3B0aW9uYWw8U3luY2FibGU6OkluZm8+IEdldFN5bmNJbmZvKCkg
Y29uc3QgPSAwOwogCiAgIC8vIFJUUCtSVENQCi0gIGludCBTZXRMb2NhbFNTUkModW5zaWduZWQg
aW50IHNzcmMpOwotCi0gIHZvaWQgUmVnaXN0ZXJSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2Jq
ZWN0cyhQYWNrZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXIpOwotICB2b2lkIFJlc2V0UmVjZWl2ZXJD
b25nZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKKyAgdmlydHVhbCB2b2lkIFNldExvY2FsU1NSQyh1
aW50MzJfdCBzc3JjKSA9IDA7CiAKLSAgaW50IEdldFJUUFN0YXRpc3RpY3MoQ2FsbFJlY2VpdmVT
dGF0aXN0aWNzJiBzdGF0cyk7ICAvLyBOT0xJTlQKLSAgdm9pZCBTZXROQUNLU3RhdHVzKGJvb2wg
ZW5hYmxlLCBpbnQgbWF4TnVtYmVyT2ZQYWNrZXRzKTsKKyAgdmlydHVhbCB2b2lkIFJlZ2lzdGVy
UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCisgICAgICBQYWNrZXRSb3V0ZXIqIHBh
Y2tldF9yb3V0ZXIpID0gMDsKKyAgdmlydHVhbCB2b2lkIFJlc2V0UmVjZWl2ZXJDb25nZXN0aW9u
Q29udHJvbE9iamVjdHMoKSA9IDA7CiAKLSAgLy8gRnJvbSBSdHBEYXRhIGluIHRoZSBSVFAvUlRD
UCBtb2R1bGUKLSAgaW50MzJfdCBPblJlY2VpdmVkUGF5bG9hZERhdGEoY29uc3QgdWludDhfdCog
cGF5bG9hZERhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXls
b2FkU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUnRjUlRQ
SGVhZGVyKiBydHBIZWFkZXIpIG92ZXJyaWRlOworICB2aXJ0dWFsIENhbGxSZWNlaXZlU3RhdGlz
dGljcyBHZXRSVENQU3RhdGlzdGljcygpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCB2b2lkIFNldE5B
Q0tTdGF0dXMoYm9vbCBlbmFibGUsIGludCBtYXhfcGFja2V0cykgPSAwOwogCi0gIC8vIEZyb20g
QXVkaW9NaXhlcjo6U291cmNlLgotICBBdWRpb01peGVyOjpTb3VyY2U6OkF1ZGlvRnJhbWVJbmZv
IEdldEF1ZGlvRnJhbWVXaXRoSW5mbygKKyAgdmlydHVhbCBBdWRpb01peGVyOjpTb3VyY2U6OkF1
ZGlvRnJhbWVJbmZvIEdldEF1ZGlvRnJhbWVXaXRoSW5mbygKICAgICAgIGludCBzYW1wbGVfcmF0
ZV9oeiwKLSAgICAgIEF1ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKTsKKyAgICAgIEF1ZGlvRnJhbWUq
IGF1ZGlvX2ZyYW1lKSA9IDA7CiAKLSAgaW50IFByZWZlcnJlZFNhbXBsZVJhdGUoKSBjb25zdDsK
KyAgdmlydHVhbCBpbnQgUHJlZmVycmVkU2FtcGxlUmF0ZSgpIGNvbnN0ID0gMDsKIAogICAvLyBB
c3NvY2lhdGUgdG8gYSBzZW5kIGNoYW5uZWwuCiAgIC8vIFVzZWQgZm9yIG9idGFpbmluZyBSVFQg
Zm9yIGEgcmVjZWl2ZS1vbmx5IGNoYW5uZWwuCi0gIHZvaWQgU2V0QXNzb2NpYXRlZFNlbmRDaGFu
bmVsKENoYW5uZWxTZW5kKiBjaGFubmVsKTsKLQotICBzdGQ6OnZlY3RvcjxSdHBTb3VyY2U+IEdl
dFNvdXJjZXMoKSBjb25zdDsKLQotIHByaXZhdGU6Ci0gIHZvaWQgSW5pdCgpOwotICB2b2lkIFRl
cm1pbmF0ZSgpOwotCi0gIGludCBHZXRSZW1vdGVTU1JDKHVuc2lnbmVkIGludCYgc3NyYyk7ICAv
LyBOT0xJTlQKLQotICBib29sIFJlY2VpdmVQYWNrZXQoY29uc3QgdWludDhfdCogcGFja2V0LAot
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhY2tldF9sZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSVFBIZWFkZXImIGhlYWRlcik7Ci0gIGludCBSZXNlbmRQYWNrZXRzKGNv
bnN0IHVpbnQxNl90KiBzZXF1ZW5jZV9udW1iZXJzLCBpbnQgbGVuZ3RoKTsKLSAgdm9pZCBVcGRh
dGVQbGF5b3V0VGltZXN0YW1wKGJvb2wgcnRjcCk7Ci0KLSAgaW50IEdldFJ0cFRpbWVzdGFtcFJh
dGVIeigpIGNvbnN0OwotICBpbnQ2NF90IEdldFJUVCgpIGNvbnN0OwotCi0gIHJ0Yzo6Q3JpdGlj
YWxTZWN0aW9uIF9jYWxsYmFja0NyaXRTZWN0OwotICBydGM6OkNyaXRpY2FsU2VjdGlvbiB2b2x1
bWVfc2V0dGluZ3NfY3JpdHNlY3RfOwotCi0gIENoYW5uZWxSZWNlaXZlU3RhdGUgY2hhbm5lbF9z
dGF0ZV87Ci0KLSAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187CisgIHZpcnR1YWwgdm9p
ZCBTZXRBc3NvY2lhdGVkU2VuZENoYW5uZWwoCisgICAgICBjb25zdCBDaGFubmVsU2VuZEludGVy
ZmFjZSogY2hhbm5lbCkgPSAwOwogCi0gIC8vIEluZGV4ZWQgYnkgcGF5bG9hZCB0eXBlLgotICBz
dGQ6Om1hcDx1aW50OF90LCBpbnQ+IHBheWxvYWRfdHlwZV9mcmVxdWVuY2llc187Ci0KLSAgc3Rk
Ojp1bmlxdWVfcHRyPFJlY2VpdmVTdGF0aXN0aWNzPiBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXzsK
LSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFJ0Y3A+IF9ydHBSdGNwTW9kdWxlOwotICBjb25zdCB1aW50
MzJfdCByZW1vdGVfc3NyY187Ci0KLSAgLy8gSW5mbyBmb3IgR2V0U291cmNlcyBhbmQgR2V0U3lu
Y0luZm8gaXMgdXBkYXRlZCBvbiBuZXR3b3JrIG9yIHdvcmtlciB0aHJlYWQsCi0gIC8vIHF1ZXJp
ZWQgb24gdGhlIHdvcmtlciB0aHJlYWQuCi0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHJ0cF9zb3Vy
Y2VzX2xvY2tfOwotICBDb250cmlidXRpbmdTb3VyY2VzIGNvbnRyaWJ1dGluZ19zb3VyY2VzXyBS
VENfR1VBUkRFRF9CWSgmcnRwX3NvdXJjZXNfbG9ja18pOwotICBhYnNsOjpvcHRpb25hbDx1aW50
MzJfdD4gbGFzdF9yZWNlaXZlZF9ydHBfdGltZXN0YW1wXwotICAgICAgUlRDX0dVQVJERURfQlko
JnJ0cF9zb3VyY2VzX2xvY2tfKTsKLSAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9yZWNl
aXZlZF9ydHBfc3lzdGVtX3RpbWVfbXNfCi0gICAgICBSVENfR1VBUkRFRF9CWSgmcnRwX3NvdXJj
ZXNfbG9ja18pOwotICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBsYXN0X3JlY2VpdmVkX3J0cF9h
dWRpb19sZXZlbF8KLSAgICAgIFJUQ19HVUFSREVEX0JZKCZydHBfc291cmNlc19sb2NrXyk7Ci0K
LSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQ29kaW5nTW9kdWxlPiBhdWRpb19jb2RpbmdfOwotICBB
dWRpb1NpbmtJbnRlcmZhY2UqIGF1ZGlvX3NpbmtfID0gbnVsbHB0cjsKLSAgQXVkaW9MZXZlbCBf
b3V0cHV0QXVkaW9MZXZlbDsKLQotICBSZW1vdGVOdHBUaW1lRXN0aW1hdG9yIG50cF9lc3RpbWF0
b3JfIFJUQ19HVUFSREVEX0JZKHRzX3N0YXRzX2xvY2tfKTsKLQotICAvLyBUaW1lc3RhbXAgb2Yg
dGhlIGF1ZGlvIHB1bGxlZCBmcm9tIE5ldEVxLgotICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4g
aml0dGVyX2J1ZmZlcl9wbGF5b3V0X3RpbWVzdGFtcF87Ci0KLSAgcnRjOjpDcml0aWNhbFNlY3Rp
b24gdmlkZW9fc3luY19sb2NrXzsKLSAgdWludDMyX3QgcGxheW91dF90aW1lc3RhbXBfcnRwXyBS
VENfR1VBUkRFRF9CWSh2aWRlb19zeW5jX2xvY2tfKTsKLSAgdWludDMyX3QgcGxheW91dF9kZWxh
eV9tc18gUlRDX0dVQVJERURfQlkodmlkZW9fc3luY19sb2NrXyk7Ci0KLSAgcnRjOjpDcml0aWNh
bFNlY3Rpb24gdHNfc3RhdHNfbG9ja187Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGltZXN0
YW1wV3JhcEFyb3VuZEhhbmRsZXI+IHJ0cF90c193cmFwYXJvdW5kX2hhbmRsZXJfOwotICAvLyBU
aGUgcnRwIHRpbWVzdGFtcCBvZiB0aGUgZmlyc3QgcGxheWVkIG91dCBhdWRpbyBmcmFtZS4KLSAg
aW50NjRfdCBjYXB0dXJlX3N0YXJ0X3J0cF90aW1lX3N0YW1wXzsKLSAgLy8gVGhlIGNhcHR1cmUg
bnRwIHRpbWUgKGluIGxvY2FsIHRpbWViYXNlKSBvZiB0aGUgZmlyc3QgcGxheWVkIG91dCBhdWRp
bwotICAvLyBmcmFtZS4KLSAgaW50NjRfdCBjYXB0dXJlX3N0YXJ0X250cF90aW1lX21zXyBSVENf
R1VBUkRFRF9CWSh0c19zdGF0c19sb2NrXyk7Ci0KLSAgLy8gdXNlcwotICBQcm9jZXNzVGhyZWFk
KiBfbW9kdWxlUHJvY2Vzc1RocmVhZFB0cjsKLSAgQXVkaW9EZXZpY2VNb2R1bGUqIF9hdWRpb0Rl
dmljZU1vZHVsZVB0cjsKLSAgZmxvYXQgX291dHB1dEdhaW4gUlRDX0dVQVJERURfQlkodm9sdW1l
X3NldHRpbmdzX2NyaXRzZWN0Xyk7Ci0KLSAgLy8gQW4gYXNzb2NpYXRlZCBzZW5kIGNoYW5uZWwu
Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGFzc29jX3NlbmRfY2hhbm5lbF9sb2NrXzsKLSAgQ2hh
bm5lbFNlbmQqIGFzc29jaWF0ZWRfc2VuZF9jaGFubmVsXwotICAgICAgUlRDX0dVQVJERURfQlko
YXNzb2Nfc2VuZF9jaGFubmVsX2xvY2tfKTsKLQotICBQYWNrZXRSb3V0ZXIqIHBhY2tldF9yb3V0
ZXJfID0gbnVsbHB0cjsKLQotICBydGM6OlRocmVhZENoZWNrZXIgY29uc3RydWN0aW9uX3RocmVh
ZF87Ci0KLSAgLy8gRTJFRSBBdWRpbyBGcmFtZSBEZWNyeXB0aW9uCi0gIEZyYW1lRGVjcnlwdG9y
SW50ZXJmYWNlKiBmcmFtZV9kZWNyeXB0b3JfID0gbnVsbHB0cjsKKyAgdmlydHVhbCBzdGQ6OnZl
Y3RvcjxSdHBTb3VyY2U+IEdldFNvdXJjZXMoKSBjb25zdCA9IDA7CiB9OwogCitzdGQ6OnVuaXF1
ZV9wdHI8Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2U+IENyZWF0ZUNoYW5uZWxSZWNlaXZlKAorICAg
IFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKKyAgICBBdWRpb0RldmljZU1v
ZHVsZSogYXVkaW9fZGV2aWNlX21vZHVsZSwKKyAgICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSog
bWVkaWFfdHJhbnNwb3J0LAorICAgIFRyYW5zcG9ydCogcnRjcF9zZW5kX3RyYW5zcG9ydCwKKyAg
ICBSdGNFdmVudExvZyogcnRjX2V2ZW50X2xvZywKKyAgICB1aW50MzJfdCByZW1vdGVfc3NyYywK
KyAgICBzaXplX3Qgaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cywKKyAgICBib29sIGppdHRlcl9i
dWZmZXJfZmFzdF9wbGF5b3V0LAorICAgIGludCBqaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcywK
KyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gZGVjb2Rlcl9mYWN0
b3J5LAorICAgIGFic2w6Om9wdGlvbmFsPEF1ZGlvQ29kZWNQYWlySWQ+IGNvZGVjX3BhaXJfaWQs
CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9k
ZWNyeXB0b3IsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cyk7CisKIH0gIC8vIG5hbWVzcGFjZSB2b2UKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
Y2hhbm5lbF9yZWNlaXZlX3Byb3h5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiMWMxYzQ1ODMyNmFjOWFkOTJmMmU1OTM4M2YwNDEzN2M4OWM2Mjk1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZV9w
cm94eS5jYworKysgL2Rldi9udWxsCkBAIC0xLDE5NyArMCwwIEBACi0vKgotICogIENvcHlyaWdo
dCAoYykgMjAxNSBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
Ci0gKi8KLQotI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfcmVjZWl2ZV9wcm94eS5oIgotCi0jaW5j
bHVkZSA8dXRpbGl0eT4KLQotI2luY2x1ZGUgImFwaS9jYWxsL2F1ZGlvX3NpbmsuaCIKLSNpbmNs
dWRlICJhdWRpby9jaGFubmVsX3NlbmRfcHJveHkuaCIKLSNpbmNsdWRlICJjYWxsL3J0cF90cmFu
c3BvcnRfY29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLW5hbWVzcGFj
ZSB2b2UgewotQ2hhbm5lbFJlY2VpdmVQcm94eTo6Q2hhbm5lbFJlY2VpdmVQcm94eSgpIHt9Ci0K
LUNoYW5uZWxSZWNlaXZlUHJveHk6OkNoYW5uZWxSZWNlaXZlUHJveHkoCi0gICAgc3RkOjp1bmlx
dWVfcHRyPENoYW5uZWxSZWNlaXZlPiBjaGFubmVsKQotICAgIDogY2hhbm5lbF8oc3RkOjptb3Zl
KGNoYW5uZWwpKSB7Ci0gIFJUQ19EQ0hFQ0soY2hhbm5lbF8pOwotICBtb2R1bGVfcHJvY2Vzc190
aHJlYWRfY2hlY2tlcl8uRGV0YWNoRnJvbVRocmVhZCgpOwotfQotCi1DaGFubmVsUmVjZWl2ZVBy
b3h5Ojp+Q2hhbm5lbFJlY2VpdmVQcm94eSgpIHt9Ci0KLXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94
eTo6U2V0TG9jYWxTU1JDKHVpbnQzMl90IHNzcmMpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhy
ZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGludCBlcnJvciA9IGNoYW5u
ZWxfLT5TZXRMb2NhbFNTUkMoc3NyYyk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwotfQot
Ci12b2lkIENoYW5uZWxSZWNlaXZlUHJveHk6OlNldE5BQ0tTdGF0dXMoYm9vbCBlbmFibGUsIGlu
dCBtYXhfcGFja2V0cykgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2Fs
bGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlNldE5BQ0tTdGF0dXMoZW5hYmxlLCBt
YXhfcGFja2V0cyk7Ci19Ci0KLUNhbGxSZWNlaXZlU3RhdGlzdGljcyBDaGFubmVsUmVjZWl2ZVBy
b3h5OjpHZXRSVENQU3RhdGlzdGljcygpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhy
ZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIENhbGxSZWNlaXZlU3RhdGlz
dGljcyBzdGF0cyA9IHswfTsKLSAgaW50IGVycm9yID0gY2hhbm5lbF8tPkdldFJUUFN0YXRpc3Rp
Y3Moc3RhdHMpOwotICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKLSAgcmV0dXJuIHN0YXRzOwot
fQotCi1ib29sIENoYW5uZWxSZWNlaXZlUHJveHk6OlJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1
aW50OF90KiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGVuZ3RoKSB7Ci0gIC8vIE1heSBiZSBjYWxsZWQgb24gZWl0aGVyIHdvcmtl
ciB0aHJlYWQgb3IgbmV0d29yayB0aHJlYWQuCi0gIHJldHVybiBjaGFubmVsXy0+UmVjZWl2ZWRS
VENQUGFja2V0KHBhY2tldCwgbGVuZ3RoKSA9PSAwOwotfQotCi12b2lkIENoYW5uZWxSZWNlaXZl
UHJveHk6OlJlZ2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCi0gICAgUGFj
a2V0Um91dGVyKiBwYWNrZXRfcm91dGVyKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9j
aGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+UmVnaXN0ZXJSZWNl
aXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cyhwYWNrZXRfcm91dGVyKTsKLX0KLQotdm9pZCBD
aGFubmVsUmVjZWl2ZVByb3h5OjpSZXNldFJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3Rz
KCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRo
cmVhZCgpKTsKLSAgY2hhbm5lbF8tPlJlc2V0UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVj
dHMoKTsKLX0KLQotTmV0d29ya1N0YXRpc3RpY3MgQ2hhbm5lbFJlY2VpdmVQcm94eTo6R2V0TmV0
d29ya1N0YXRpc3RpY3MoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVj
a2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBOZXR3b3JrU3RhdGlzdGljcyBzdGF0cyA9
IHswfTsKLSAgaW50IGVycm9yID0gY2hhbm5lbF8tPkdldE5ldHdvcmtTdGF0aXN0aWNzKHN0YXRz
KTsKLSAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Ci0gIHJldHVybiBzdGF0czsKLX0KLQotQXVk
aW9EZWNvZGluZ0NhbGxTdGF0cyBDaGFubmVsUmVjZWl2ZVByb3h5OjpHZXREZWNvZGluZ0NhbGxT
dGF0aXN0aWNzKCkgY29uc3QgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8u
Q2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgQXVkaW9EZWNvZGluZ0NhbGxTdGF0cyBzdGF0czsK
LSAgY2hhbm5lbF8tPkdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoJnN0YXRzKTsKLSAgcmV0dXJu
IHN0YXRzOwotfQotCi1pbnQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6R2V0U3BlZWNoT3V0cHV0TGV2
ZWxGdWxsUmFuZ2UoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2Vy
Xy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF8tPkdldFNwZWVjaE91
dHB1dExldmVsRnVsbFJhbmdlKCk7Ci19Ci0KLWRvdWJsZSBDaGFubmVsUmVjZWl2ZVByb3h5OjpH
ZXRUb3RhbE91dHB1dEVuZXJneSgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHJldHVybiBjaGFubmVsXy0+R2V0
VG90YWxPdXRwdXRFbmVyZ3koKTsKLX0KLQotZG91YmxlIENoYW5uZWxSZWNlaXZlUHJveHk6Okdl
dFRvdGFsT3V0cHV0RHVyYXRpb24oKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVh
ZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF8tPkdl
dFRvdGFsT3V0cHV0RHVyYXRpb24oKTsKLX0KLQotdWludDMyX3QgQ2hhbm5lbFJlY2VpdmVQcm94
eTo6R2V0RGVsYXlFc3RpbWF0ZSgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSB8fAotICAgICAgICAgICAgIG1vZHVsZV9w
cm9jZXNzX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4g
Y2hhbm5lbF8tPkdldERlbGF5RXN0aW1hdGUoKTsKLX0KLQotdm9pZCBDaGFubmVsUmVjZWl2ZVBy
b3h5OjpTZXRSZWNlaXZlQ29kZWNzKAotICAgIGNvbnN0IHN0ZDo6bWFwPGludCwgU2RwQXVkaW9G
b3JtYXQ+JiBjb2RlY3MpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNh
bGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRSZWNlaXZlQ29kZWNzKGNvZGVj
cyk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6U2V0U2luayhBdWRpb1NpbmtJbnRl
cmZhY2UqIHNpbmspIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxl
ZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRTaW5rKHNpbmspOwotfQotCi12b2lk
IENoYW5uZWxSZWNlaXZlUHJveHk6Ok9uUnRwUGFja2V0KGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVk
JiBwYWNrZXQpIHsKLSAgLy8gTWF5IGJlIGNhbGxlZCBvbiBlaXRoZXIgd29ya2VyIHRocmVhZCBv
ciBuZXR3b3JrIHRocmVhZC4KLSAgY2hhbm5lbF8tPk9uUnRwUGFja2V0KHBhY2tldCk7Ci19Ci0K
LXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6U2V0Q2hhbm5lbE91dHB1dFZvbHVtZVNjYWxpbmco
ZmxvYXQgc2NhbGluZykgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2Fs
bGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlNldENoYW5uZWxPdXRwdXRWb2x1bWVT
Y2FsaW5nKHNjYWxpbmcpOwotfQotCi1BdWRpb01peGVyOjpTb3VyY2U6OkF1ZGlvRnJhbWVJbmZv
IENoYW5uZWxSZWNlaXZlUHJveHk6OkdldEF1ZGlvRnJhbWVXaXRoSW5mbygKLSAgICBpbnQgc2Ft
cGxlX3JhdGVfaHosCi0gICAgQXVkaW9GcmFtZSogYXVkaW9fZnJhbWUpIHsKLSAgUlRDX0RDSEVD
S19SVU5TX1NFUklBTElaRUQoJmF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfKTsKLSAgcmV0dXJu
IGNoYW5uZWxfLT5HZXRBdWRpb0ZyYW1lV2l0aEluZm8oc2FtcGxlX3JhdGVfaHosIGF1ZGlvX2Zy
YW1lKTsKLX0KLQotaW50IENoYW5uZWxSZWNlaXZlUHJveHk6OlByZWZlcnJlZFNhbXBsZVJhdGUo
KSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0tfUlVOU19TRVJJQUxJWkVEKCZhdWRpb190aHJlYWRfcmFj
ZV9jaGVja2VyXyk7Ci0gIHJldHVybiBjaGFubmVsXy0+UHJlZmVycmVkU2FtcGxlUmF0ZSgpOwot
fQotCi12b2lkIENoYW5uZWxSZWNlaXZlUHJveHk6OkFzc29jaWF0ZVNlbmRDaGFubmVsKAotICAg
IGNvbnN0IENoYW5uZWxTZW5kUHJveHkmIHNlbmRfY2hhbm5lbF9wcm94eSkgewotICBSVENfRENI
RUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hh
bm5lbF8tPlNldEFzc29jaWF0ZWRTZW5kQ2hhbm5lbChzZW5kX2NoYW5uZWxfcHJveHkuR2V0Q2hh
bm5lbCgpKTsKLX0KLQotdm9pZCBDaGFubmVsUmVjZWl2ZVByb3h5OjpEaXNhc3NvY2lhdGVTZW5k
Q2hhbm5lbCgpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9u
VmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRBc3NvY2lhdGVkU2VuZENoYW5uZWwobnVs
bHB0cik7Ci19Ci0KLWFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBDaGFubmVsUmVjZWl2
ZVByb3h5OjpHZXRTeW5jSW5mbygpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyhtb2R1bGVfcHJvY2Vz
c190aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgcmV0dXJuIGNoYW5u
ZWxfLT5HZXRTeW5jSW5mbygpOwotfQotCi11aW50MzJfdCBDaGFubmVsUmVjZWl2ZVByb3h5OjpH
ZXRQbGF5b3V0VGltZXN0YW1wKCkgY29uc3QgewotICBSVENfRENIRUNLX1JVTlNfU0VSSUFMSVpF
RCgmdmlkZW9fY2FwdHVyZV90aHJlYWRfcmFjZV9jaGVja2VyXyk7Ci0gIHVuc2lnbmVkIGludCB0
aW1lc3RhbXAgPSAwOwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+R2V0UGxheW91dFRpbWVzdGFt
cCh0aW1lc3RhbXApOwotICBSVENfRENIRUNLKCFlcnJvciB8fCB0aW1lc3RhbXAgPT0gMCk7Ci0g
IHJldHVybiB0aW1lc3RhbXA7Ci19Ci0KLXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6U2V0TWlu
aW11bVBsYXlvdXREZWxheShpbnQgZGVsYXlfbXMpIHsKLSAgUlRDX0RDSEVDSyhtb2R1bGVfcHJv
Y2Vzc190aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgLy8gTGltaXQg
dG8gcmFuZ2UgYWNjZXB0ZWQgYnkgYm90aCBWb0UgYW5kIEFDTSwgc28gd2UncmUgYXQgbGVhc3Qg
Z2V0dGluZyBhcwotICAvLyBjbG9zZSBhcyBwb3NzaWJsZSwgaW5zdGVhZCBvZiBmYWlsaW5nLgot
ICBkZWxheV9tcyA9IHJ0Yzo6U2FmZUNsYW1wKGRlbGF5X21zLCAwLCAxMDAwMCk7Ci0gIGludCBl
cnJvciA9IGNoYW5uZWxfLT5TZXRNaW5pbXVtUGxheW91dERlbGF5KGRlbGF5X21zKTsKLSAgaWYg
KDAgIT0gZXJyb3IpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJFcnJvciBzZXR0aW5n
IG1pbmltdW0gcGxheW91dCBkZWxheS4iOwotICB9Ci19Ci0KLWJvb2wgQ2hhbm5lbFJlY2VpdmVQ
cm94eTo6R2V0UmVjQ29kZWMoQ29kZWNJbnN0KiBjb2RlY19pbnN0KSBjb25zdCB7Ci0gIFJUQ19E
Q0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBy
ZXR1cm4gY2hhbm5lbF8tPkdldFJlY0NvZGVjKCpjb2RlY19pbnN0KSA9PSAwOwotfQotCi1zdGQ6
OnZlY3RvcjxSdHBTb3VyY2U+IENoYW5uZWxSZWNlaXZlUHJveHk6OkdldFNvdXJjZXMoKSBjb25z
dCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhy
ZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF8tPkdldFNvdXJjZXMoKTsKLX0KLQotdm9pZCBDaGFu
bmVsUmVjZWl2ZVByb3h5OjpTdGFydFBsYXlvdXQoKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3Ro
cmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBpbnQgZXJyb3IgPSBjaGFu
bmVsXy0+U3RhcnRQbGF5b3V0KCk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwotfQotCi12
b2lkIENoYW5uZWxSZWNlaXZlUHJveHk6OlN0b3BQbGF5b3V0KCkgewotICBSVENfRENIRUNLKHdv
cmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgaW50IGVycm9y
ID0gY2hhbm5lbF8tPlN0b3BQbGF5b3V0KCk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwot
fQotfSAgLy8gbmFtZXNwYWNlIHZvZQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5l
bF9yZWNlaXZlX3Byb3h5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hdWRpby9jaGFubmVsX3JlY2VpdmVfcHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOGViYWNjMzAwZGNmZTNhNzI1ZTljOTQwOTAzZmQwOGI5ZGZiNzU1Ny4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3JlY2VpdmVfcHJveHkuaAor
KysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAx
NSBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQot
I2lmbmRlZiBBVURJT19DSEFOTkVMX1JFQ0VJVkVfUFJPWFlfSF8KLSNkZWZpbmUgQVVESU9fQ0hB
Tk5FTF9SRUNFSVZFX1BST1hZX0hfCi0KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8bWVtb3J5
PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19taXhlci5o
IgotI2luY2x1ZGUgImFwaS9ydHByZWNlaXZlcmludGVyZmFjZS5oIgotI2luY2x1ZGUgImF1ZGlv
L2NoYW5uZWxfcmVjZWl2ZS5oIgotI2luY2x1ZGUgImNhbGwvcnRwX3BhY2tldF9zaW5rX2ludGVy
ZmFjZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9yYWNlX2NoZWNrZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hl
Y2tlci5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotY2xhc3MgQXVkaW9TaW5rSW50ZXJmYWNl
OwotY2xhc3MgUGFja2V0Um91dGVyOwotY2xhc3MgUnRwUGFja2V0UmVjZWl2ZWQ7Ci1jbGFzcyBU
cmFuc3BvcnQ7Ci0KLW5hbWVzcGFjZSB2b2UgewotCi1jbGFzcyBDaGFubmVsU2VuZFByb3h5Owot
Ci0vLyBUaGlzIGNsYXNzIHByb3ZpZGVzIHRoZSAidmlldyIgb2YgYSB2b2U6OkNoYW5uZWwgdGhh
dCB3ZSBuZWVkIHRvIGltcGxlbWVudAotLy8gd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW0uIEl0
IHNlcnZlcyB0d28gcHVycG9zZXM6Ci0vLyAgMS4gQWxsb3cgbW9ja2luZyBqdXN0IHRoZSBpbnRl
cmZhY2VzIHVzZWQsIGluc3RlYWQgb2YgdGhlIGVudGlyZQotLy8gICAgIHZvZTo6Q2hhbm5lbCBj
bGFzcy4KLS8vICAyLiBQcm92aWRlIGEgcmVmaW5lZCBpbnRlcmZhY2UgZm9yIHRoZSBzdHJlYW0g
Y2xhc3NlcywgaW5jbHVkaW5nIGFzc3VtcHRpb25zCi0vLyAgICAgb24gcmV0dXJuIHZhbHVlcyBh
bmQgaW5wdXQgYWRhcHRhdGlvbi4KLWNsYXNzIENoYW5uZWxSZWNlaXZlUHJveHkgOiBwdWJsaWMg
UnRwUGFja2V0U2lua0ludGVyZmFjZSB7Ci0gcHVibGljOgotICBDaGFubmVsUmVjZWl2ZVByb3h5
KCk7Ci0gIGV4cGxpY2l0IENoYW5uZWxSZWNlaXZlUHJveHkoc3RkOjp1bmlxdWVfcHRyPENoYW5u
ZWxSZWNlaXZlPiBjaGFubmVsKTsKLSAgdmlydHVhbCB+Q2hhbm5lbFJlY2VpdmVQcm94eSgpOwot
Ci0gIC8vIFNoYXJlZCB3aXRoIENoYW5uZWxTZW5kUHJveHkKLSAgdmlydHVhbCB2b2lkIFNldExv
Y2FsU1NSQyh1aW50MzJfdCBzc3JjKTsKLSAgdmlydHVhbCB2b2lkIFNldE5BQ0tTdGF0dXMoYm9v
bCBlbmFibGUsIGludCBtYXhfcGFja2V0cyk7Ci0gIHZpcnR1YWwgQ2FsbFJlY2VpdmVTdGF0aXN0
aWNzIEdldFJUQ1BTdGF0aXN0aWNzKCkgY29uc3Q7Ci0gIHZpcnR1YWwgYm9vbCBSZWNlaXZlZFJU
Q1BQYWNrZXQoY29uc3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKTsKLQotICB2aXJ0
dWFsIHZvaWQgUmVnaXN0ZXJSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKLSAgICAg
IFBhY2tldFJvdXRlciogcGFja2V0X3JvdXRlcik7Ci0gIHZpcnR1YWwgdm9pZCBSZXNldFJlY2Vp
dmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCk7Ci0gIHZpcnR1YWwgTmV0d29ya1N0YXRpc3Rp
Y3MgR2V0TmV0d29ya1N0YXRpc3RpY3MoKSBjb25zdDsKLSAgdmlydHVhbCBBdWRpb0RlY29kaW5n
Q2FsbFN0YXRzIEdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoKSBjb25zdDsKLSAgdmlydHVhbCBp
bnQgR2V0U3BlZWNoT3V0cHV0TGV2ZWxGdWxsUmFuZ2UoKSBjb25zdDsKLSAgLy8gU2VlIGRlc2Ny
aXB0aW9uIG9mICJ0b3RhbEF1ZGlvRW5lcmd5IiBpbiB0aGUgV2ViUlRDIHN0YXRzIHNwZWM6Ci0g
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtc3RhdHMvI2RvbS1ydGNtZWRpYXN0cmVh
bXRyYWNrc3RhdHMtdG90YWxhdWRpb2VuZXJneQotICB2aXJ0dWFsIGRvdWJsZSBHZXRUb3RhbE91
dHB1dEVuZXJneSgpIGNvbnN0OwotICB2aXJ0dWFsIGRvdWJsZSBHZXRUb3RhbE91dHB1dER1cmF0
aW9uKCkgY29uc3Q7Ci0gIHZpcnR1YWwgdWludDMyX3QgR2V0RGVsYXlFc3RpbWF0ZSgpIGNvbnN0
OwotICB2aXJ0dWFsIHZvaWQgU2V0UmVjZWl2ZUNvZGVjcyhjb25zdCBzdGQ6Om1hcDxpbnQsIFNk
cEF1ZGlvRm9ybWF0PiYgY29kZWNzKTsKLSAgdmlydHVhbCB2b2lkIFNldFNpbmsoQXVkaW9TaW5r
SW50ZXJmYWNlKiBzaW5rKTsKLQotICAvLyBJbXBsZW1lbnRzIFJ0cFBhY2tldFNpbmtJbnRlcmZh
Y2UKLSAgdm9pZCBPblJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSBv
dmVycmlkZTsKLQotICB2aXJ0dWFsIHZvaWQgU2V0Q2hhbm5lbE91dHB1dFZvbHVtZVNjYWxpbmco
ZmxvYXQgc2NhbGluZyk7Ci0gIHZpcnR1YWwgQXVkaW9NaXhlcjo6U291cmNlOjpBdWRpb0ZyYW1l
SW5mbyBHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCi0gICAgICBpbnQgc2FtcGxlX3JhdGVfaHosCi0g
ICAgICBBdWRpb0ZyYW1lKiBhdWRpb19mcmFtZSk7Ci0gIHZpcnR1YWwgaW50IFByZWZlcnJlZFNh
bXBsZVJhdGUoKSBjb25zdDsKLSAgdmlydHVhbCB2b2lkIEFzc29jaWF0ZVNlbmRDaGFubmVsKGNv
bnN0IENoYW5uZWxTZW5kUHJveHkmIHNlbmRfY2hhbm5lbF9wcm94eSk7Ci0gIHZpcnR1YWwgdm9p
ZCBEaXNhc3NvY2lhdGVTZW5kQ2hhbm5lbCgpOwotCi0gIC8vIFByb2R1Y2VzIHRoZSB0cmFuc3Bv
cnQtcmVsYXRlZCB0aW1lc3RhbXBzOyBjdXJyZW50X2RlbGF5X21zIGlzIGxlZnQgdW5zZXQuCi0g
IGFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBHZXRTeW5jSW5mbygpIGNvbnN0OwotICB2
aXJ0dWFsIHVpbnQzMl90IEdldFBsYXlvdXRUaW1lc3RhbXAoKSBjb25zdDsKLSAgdmlydHVhbCB2
b2lkIFNldE1pbmltdW1QbGF5b3V0RGVsYXkoaW50IGRlbGF5X21zKTsKLSAgdmlydHVhbCBib29s
IEdldFJlY0NvZGVjKENvZGVjSW5zdCogY29kZWNfaW5zdCkgY29uc3Q7Ci0gIHZpcnR1YWwgc3Rk
Ojp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+IEdldFNvdXJjZXMoKSBjb25zdDsKLSAgdmlydHVh
bCB2b2lkIFN0YXJ0UGxheW91dCgpOwotICB2aXJ0dWFsIHZvaWQgU3RvcFBsYXlvdXQoKTsKLQot
IHByaXZhdGU6Ci0gIC8vIFRocmVhZCBjaGVja2VycyBkb2N1bWVudCBhbmQgbG9jayB1c2FnZSBv
ZiBzb21lIG1ldGhvZHMgb24gdm9lOjpDaGFubmVsIHRvCi0gIC8vIHNwZWNpZmljIHRocmVhZHMg
d2Uga25vdyBhYm91dC4gVGhlIGdvYWwgaXMgdG8gZXZlbnR1YWxseSBzcGxpdCB1cAotICAvLyB2
b2U6OkNoYW5uZWwgaW50byBwYXJ0cyB3aXRoIHNpbmdsZS10aHJlYWRlZCBzZW1hbnRpY3MsIGFu
ZCB0aGVyZWJ5IHJlZHVjZQotICAvLyB0aGUgbmVlZCBmb3IgbG9ja3MuCi0gIHJ0Yzo6VGhyZWFk
Q2hlY2tlciB3b3JrZXJfdGhyZWFkX2NoZWNrZXJfOwotICBydGM6OlRocmVhZENoZWNrZXIgbW9k
dWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfOwotICAvLyBNZXRob2RzIGFjY2Vzc2VkIGZyb20g
YXVkaW8gYW5kIHZpZGVvIHRocmVhZHMgYXJlIGNoZWNrZWQgZm9yIHNlcXVlbnRpYWwtCi0gIC8v
IG9ubHkgYWNjZXNzLiBXZSBkb24ndCBuZWNlc3NhcmlseSBvd24gYW5kIGNvbnRyb2wgdGhlc2Ug
dGhyZWFkcywgc28gdGhyZWFkCi0gIC8vIGNoZWNrZXJzIGNhbm5vdCBiZSB1c2VkLiBFLmcuIENo
cm9taXVtIG1heSB0cmFuc2ZlciAib3duZXJzaGlwIiBmcm9tIG9uZQotICAvLyBhdWRpbyB0aHJl
YWQgdG8gYW5vdGhlciwgYnV0IGFjY2VzcyBpcyBzdGlsbCBzZXF1ZW50aWFsLgotICBydGM6OlJh
Y2VDaGVja2VyIGF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfOwotICBydGM6OlJhY2VDaGVja2Vy
IHZpZGVvX2NhcHR1cmVfdGhyZWFkX3JhY2VfY2hlY2tlcl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxD
aGFubmVsUmVjZWl2ZT4gY2hhbm5lbF87Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihDaGFubmVsUmVjZWl2ZVByb3h5KTsKLX07Ci19ICAvLyBuYW1lc3BhY2Ugdm9lCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVVESU9fQ0hBTk5FTF9SRUNFSVZFX1BST1hZ
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hdWRpby9jaGFubmVsX3NlbmQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmQuY2MKaW5kZXggZDM3NDhiMzk5MDlhNDkzZTMy
YWQyMTk2ZGY5MjY2NDRhYTg1MmI5OC4uYzQ1OGZlNDY1YjA3MDgwZDRmMTI2MzJiODFmODE3YjYy
YTNkMTQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXVkaW8vY2hhbm5lbF9zZW5kLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2VuZC5jYwpAQCAtMTksMTkgKzE5LDI1
IEBACiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvYXJy
YXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgImFw
aS9jcnlwdG8vZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhdWRpby91dGls
aXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJjYWxsL3J0cF90cmFuc3Bv
cnRfY29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3BsYXlvdXQuaCIKICNpbmNsdWRlICJsb2dn
aW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRh
cHRvcl9jb25maWcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1
ZGlvX2NvZGluZ19tb2R1bGUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
cm1zX2xldmVsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9wYWNpbmcvcGFja2V0X3JvdXRlci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3NfdGhyZWFkLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0
aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9m
b3JtYXRfbWFjcm9zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9j
b252ZXJzaW9ucy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3JhY2VfY2hlY2tlci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3JhdGVfbGltaXRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVl
dWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgpAQCAtNDcsNyArNTMs
MjU5IEBAIG5hbWVzcGFjZSB7CiBjb25zdGV4cHIgaW50NjRfdCBrTWF4UmV0cmFuc21pc3Npb25X
aW5kb3dNcyA9IDEwMDA7CiBjb25zdGV4cHIgaW50NjRfdCBrTWluUmV0cmFuc21pc3Npb25XaW5k
b3dNcyA9IDMwOwogCi19ICAvLyBuYW1lc3BhY2UKK01lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlv
RnJhbWU6OkZyYW1lVHlwZQorTWVkaWFUcmFuc3BvcnRGcmFtZVR5cGVGb3JXZWJydGNGcmFtZVR5
cGUod2VicnRjOjpGcmFtZVR5cGUgZnJhbWVfdHlwZSkgeworICBzd2l0Y2ggKGZyYW1lX3R5cGUp
IHsKKyAgICBjYXNlIGtBdWRpb0ZyYW1lU3BlZWNoOgorICAgICAgcmV0dXJuIE1lZGlhVHJhbnNw
b3J0RW5jb2RlZEF1ZGlvRnJhbWU6OkZyYW1lVHlwZTo6a1NwZWVjaDsKKyAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBrQXVkaW9GcmFtZUNOOgorICAgICAgcmV0dXJuIE1lZGlhVHJhbnNwb3J0RW5j
b2RlZEF1ZGlvRnJhbWU6OkZyYW1lVHlwZTo6CisgICAgICAgICAga0Rpc2NvbnRpbnVvdXNUcmFu
c21pc3Npb247CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBSVENfQ0hFQ0so
ZmFsc2UpIDw8ICJVbmV4cGVjdGVkIGZyYW1lIHR5cGU9IiA8PCBmcmFtZV90eXBlOworICAgICAg
YnJlYWs7CisgIH0KK30KKworY2xhc3MgUnRwUGFja2V0U2VuZGVyUHJveHk7CitjbGFzcyBUcmFu
c3BvcnRGZWVkYmFja1Byb3h5OworY2xhc3MgVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJQcm94eTsK
K2NsYXNzIFZvRVJ0Y3BPYnNlcnZlcjsKKworY2xhc3MgQ2hhbm5lbFNlbmQKKyAgICA6IHB1Ymxp
YyBDaGFubmVsU2VuZEludGVyZmFjZSwKKyAgICAgIHB1YmxpYyBUcmFuc3BvcnQsCisgICAgICBw
dWJsaWMgT3ZlcmhlYWRPYnNlcnZlciwKKyAgICAgIHB1YmxpYyBBdWRpb1BhY2tldGl6YXRpb25D
YWxsYmFjaywgIC8vIHJlY2VpdmUgZW5jb2RlZCBwYWNrZXRzIGZyb20gdGhlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBQ00KKyAgICAgIHB1YmxpYyBUYXJn
ZXRUcmFuc2ZlclJhdGVPYnNlcnZlciB7CisgcHVibGljOgorICAvLyBUT0RPKG5pc3NlKTogTWFr
ZSBPblVwbGlua1BhY2tldExvc3NSYXRlIHB1YmxpYywgYW5kIGRlbGV0ZSBmcmllbmQKKyAgLy8g
ZGVjbGFyYXRpb24uCisgIGZyaWVuZCBjbGFzcyBWb0VSdGNwT2JzZXJ2ZXI7CisKKyAgQ2hhbm5l
bFNlbmQocnRjOjpUYXNrUXVldWUqIGVuY29kZXJfcXVldWUsCisgICAgICAgICAgICAgIFByb2Nl
c3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKKyAgICAgICAgICAgICAgTWVkaWFUcmFu
c3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCwKKyAgICAgICAgICAgICAgVHJhbnNwb3J0
KiBydHBfdHJhbnNwb3J0LAorICAgICAgICAgICAgICBSdGNwUnR0U3RhdHMqIHJ0Y3BfcnR0X3N0
YXRzLAorICAgICAgICAgICAgICBSdGNFdmVudExvZyogcnRjX2V2ZW50X2xvZywKKyAgICAgICAg
ICAgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvciwKKyAgICAgICAg
ICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICAg
ICAgICAgICAgYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQsCisgICAgICAgICAgICAgIGludCBydGNw
X3JlcG9ydF9pbnRlcnZhbF9tcyk7CisKKyAgfkNoYW5uZWxTZW5kKCkgb3ZlcnJpZGU7CisKKyAg
Ly8gU2VuZCB1c2luZyB0aGlzIGVuY29kZXIsIHdpdGggdGhpcyBwYXlsb2FkIHR5cGUuCisgIGJv
b2wgU2V0RW5jb2RlcihpbnQgcGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2Rlcikgb3ZlcnJpZGU7CisgIHZvaWQgTW9kaWZ5
RW5jb2RlcihydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29k
ZXI+Kik+CisgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIpIG92ZXJyaWRlOworCisg
IC8vIEFQSSBtZXRob2RzCisgIHZvaWQgU3RhcnRTZW5kKCkgb3ZlcnJpZGU7CisgIHZvaWQgU3Rv
cFNlbmQoKSBvdmVycmlkZTsKKworICAvLyBDb2RlY3MKKyAgdm9pZCBPbkJpdHJhdGVBbGxvY2F0
aW9uKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSkgb3ZlcnJpZGU7CisgIGludCBHZXRC
aXRyYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgLy8gTmV0d29yaworICBib29sIFJlY2VpdmVk
UlRDUFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBvdmVycmlkZTsK
KworICAvLyBNdXRpbmcsIFZvbHVtZSBhbmQgTGV2ZWwuCisgIHZvaWQgU2V0SW5wdXRNdXRlKGJv
b2wgZW5hYmxlKSBvdmVycmlkZTsKKworICAvLyBTdGF0cy4KKyAgQU5BU3RhdHMgR2V0QU5BU3Rh
dGlzdGljcygpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIFVzZWQgYnkgQXVkaW9TZW5kU3RyZWFt
LgorICBSdHBSdGNwKiBHZXRSdHBSdGNwKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgLy8gRFRNRi4K
KyAgYm9vbCBTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGludCBldmVudCwgaW50IGR1cmF0aW9u
X21zKSBvdmVycmlkZTsKKyAgYm9vbCBTZXRTZW5kVGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZShp
bnQgcGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBwYXlsb2FkX2ZyZXF1ZW5jeSkgb3ZlcnJpZGU7CisKKyAgLy8gUlRQK1JUQ1AKKyAgdm9p
ZCBTZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYykgb3ZlcnJpZGU7CisgIHZvaWQgU2V0TWlkKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtaWQsIGludCBleHRlbnNpb25faWQpIG92ZXJyaWRlOworICB2b2lk
IFNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIG92ZXJyaWRlOwor
ICB2b2lkIFNldFNlbmRBdWRpb0xldmVsSW5kaWNhdGlvblN0YXR1cyhib29sIGVuYWJsZSwgaW50
IGlkKSBvdmVycmlkZTsKKyAgdm9pZCBFbmFibGVTZW5kVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIo
aW50IGlkKSBvdmVycmlkZTsKKworICB2b2lkIFJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRy
b2xPYmplY3RzKAorICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHRy
YW5zcG9ydCwKKyAgICAgIFJ0Y3BCYW5kd2lkdGhPYnNlcnZlciogYmFuZHdpZHRoX29ic2VydmVy
KSBvdmVycmlkZTsKKyAgdm9pZCBSZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygp
IG92ZXJyaWRlOworICB2b2lkIFNldFJUQ1BfQ05BTUUoYWJzbDo6c3RyaW5nX3ZpZXcgY19uYW1l
KSBvdmVycmlkZTsKKyAgc3RkOjp2ZWN0b3I8UmVwb3J0QmxvY2s+IEdldFJlbW90ZVJUQ1BSZXBv
cnRCbG9ja3MoKSBjb25zdCBvdmVycmlkZTsKKyAgQ2FsbFNlbmRTdGF0aXN0aWNzIEdldFJUQ1BT
dGF0aXN0aWNzKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgLy8gUHJvY2Vzc0FuZEVuY29kZUF1ZGlv
KCkgcG9zdHMgYSB0YXNrIG9uIHRoZSBzaGFyZWQgZW5jb2RlciB0YXNrIHF1ZXVlLAorICAvLyB3
aGljaCBpbiB0dXJuIGNhbGxzIChvbiB0aGUgcXVldWUpIFByb2Nlc3NBbmRFbmNvZGVBdWRpb09u
VGFza1F1ZXVlKCkgd2hlcmUKKyAgLy8gdGhlIGFjdHVhbCBwcm9jZXNzaW5nIG9mIHRoZSBhdWRp
byB0YWtlcyBwbGFjZS4gVGhlIHByb2Nlc3NpbmcgbWFpbmx5CisgIC8vIGNvbnNpc3RzIG9mIGVu
Y29kaW5nIGFuZCBwcmVwYXJpbmcgdGhlIHJlc3VsdCBmb3Igc2VuZGluZyBieSBhZGRpbmcgaXQg
dG8gYQorICAvLyBzZW5kIHF1ZXVlLgorICAvLyBUaGUgbWFpbiByZWFzb24gZm9yIHVzaW5nIGEg
dGFzayBxdWV1ZSBoZXJlIGlzIHRvIHJlbGVhc2UgdGhlIG5hdGl2ZSwKKyAgLy8gT1Mtc3BlY2lm
aWMsIGF1ZGlvIGNhcHR1cmUgdGhyZWFkIGFzIHNvb24gYXMgcG9zc2libGUgdG8gZW5zdXJlIHRo
YXQgaXQKKyAgLy8gY2FuIGdvIGJhY2sgdG8gc2xlZXAgYW5kIGJlIHByZXBhcmVkIHRvIGRlbGl2
ZXIgYW4gbmV3IGNhcHR1cmVkIGF1ZGlvCisgIC8vIHBhY2tldC4KKyAgdm9pZCBQcm9jZXNzQW5k
RW5jb2RlQXVkaW8oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRnJhbWU+IGF1ZGlvX2ZyYW1lKSBvdmVy
cmlkZTsKKworICB2b2lkIFNldFRyYW5zcG9ydE92ZXJoZWFkKHNpemVfdCB0cmFuc3BvcnRfb3Zl
cmhlYWRfcGVyX3BhY2tldCkgb3ZlcnJpZGU7CisKKyAgLy8gVGhlIGV4aXN0ZW5jZSBvZiB0aGlz
IGZ1bmN0aW9uIGFsb25nc2lkZSBPblVwbGlua1BhY2tldExvc3NSYXRlIGlzCisgIC8vIGEgY29t
cHJvbWlzZS4gV2Ugd2FudCB0aGUgZW5jb2RlciB0byBiZSBhZ25vc3RpYyBvZiB0aGUgUExSIHNv
dXJjZSwgYnV0CisgIC8vIHdlIGFsc28gZG9uJ3Qgd2FudCBpdCB0byByZWNlaXZlIGNvbmZsaWN0
aW5nIGluZm9ybWF0aW9uIGZyb20gVFdDQyBhbmQKKyAgLy8gZnJvbSBSVENQLVhSLgorICB2b2lk
IE9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUoZmxvYXQgcGFja2V0X2xvc3NfcmF0ZSkg
b3ZlcnJpZGU7CisKKyAgdm9pZCBPblJlY292ZXJhYmxlVXBsaW5rUGFja2V0TG9zc1JhdGUoCisg
ICAgICBmbG9hdCByZWNvdmVyYWJsZV9wYWNrZXRfbG9zc19yYXRlKSBvdmVycmlkZTsKKworICBp
bnQ2NF90IEdldFJUVCgpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIEUyRUUgQ3VzdG9tIEF1ZGlv
IEZyYW1lIEVuY3J5cHRpb24KKyAgdm9pZCBTZXRGcmFtZUVuY3J5cHRvcigKKyAgICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yKSBv
dmVycmlkZTsKKworIHByaXZhdGU6CisgIGNsYXNzIFByb2Nlc3NBbmRFbmNvZGVBdWRpb1Rhc2s7
CisKKyAgLy8gRnJvbSBBdWRpb1BhY2tldGl6YXRpb25DYWxsYmFjayBpbiB0aGUgQUNNCisgIGlu
dDMyX3QgU2VuZERhdGEoRnJhbWVUeXBlIGZyYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICB1
aW50OF90IHBheWxvYWRUeXBlLAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVTdGFt
cCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwYXlsb2FkRGF0YSwKKyAgICAg
ICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZFNpemUsCisgICAgICAgICAgICAgICAgICAgY29u
c3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRhdGlvbikgb3ZlcnJpZGU7CisKKyAg
Ly8gRnJvbSBUcmFuc3BvcnQgKGNhbGxlZCBieSB0aGUgUlRQL1JUQ1AgbW9kdWxlKQorICBib29s
IFNlbmRSdHAoY29uc3QgdWludDhfdCogZGF0YSwKKyAgICAgICAgICAgICAgIHNpemVfdCBsZW4s
CisgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRPcHRpb25zJiBwYWNrZXRfb3B0aW9ucykgb3Zl
cnJpZGU7CisgIGJvb2wgU2VuZFJ0Y3AoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbikg
b3ZlcnJpZGU7CisKKyAgLy8gRnJvbSBPdmVyaGVhZE9ic2VydmVyIGluIHRoZSBSVFAvUlRDUCBt
b2R1bGUKKyAgdm9pZCBPbk92ZXJoZWFkQ2hhbmdlZChzaXplX3Qgb3ZlcmhlYWRfYnl0ZXNfcGVy
X3BhY2tldCkgb3ZlcnJpZGU7CisKKyAgdm9pZCBPblVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0
IHBhY2tldF9sb3NzX3JhdGUpOworICBib29sIElucHV0TXV0ZSgpIGNvbnN0OworCisgIGludCBT
ZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKGJvb2wgZW5hYmxlLCBSVFBFeHRlbnNpb25UeXBlIHR5
cGUsIGludCBpZCk7CisKKyAgdm9pZCBVcGRhdGVPdmVyaGVhZEZvckVuY29kZXIoKQorICAgICAg
UlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChvdmVyaGVhZF9wZXJfcGFja2V0X2xvY2tfKTsK
KworICBpbnQzMl90IFNlbmRSdHBBdWRpbyhGcmFtZVR5cGUgZnJhbWVUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90IHBheWxvYWRUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCB0aW1lU3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IHVpbnQ4X3Q+IHBheWxvYWQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJUUEZyYWdtZW50YXRpb25IZWFkZXIqIGZyYWdtZW50YXRpb24pOworCisgIGludDMyX3QgU2Vu
ZE1lZGlhVHJhbnNwb3J0QXVkaW8oRnJhbWVUeXBlIGZyYW1lVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90IHBheWxvYWRUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVTdGFtcCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBwYXlsb2FkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJUUEZyYWdtZW50YXRpb25I
ZWFkZXIqIGZyYWdtZW50YXRpb24pOworCisgIC8vIFJldHVybiBtZWRpYSB0cmFuc3BvcnQgb3Ig
bnVsbHB0ciBpZiB1c2luZyBSVFAuCisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90
cmFuc3BvcnQoKSB7IHJldHVybiBtZWRpYV90cmFuc3BvcnRfOyB9CisKKyAgLy8gQ2FsbGVkIG9u
IHRoZSBlbmNvZGVyIHRhc2sgcXVldWUgd2hlbiBhIG5ldyBpbnB1dCBhdWRpbyBmcmFtZSBpcyBy
ZWFkeQorICAvLyBmb3IgZW5jb2RpbmcuCisgIHZvaWQgUHJvY2Vzc0FuZEVuY29kZUF1ZGlvT25U
YXNrUXVldWUoQXVkaW9GcmFtZSogYXVkaW9faW5wdXQpOworCisgIHZvaWQgT25SZWNlaXZlZFJ0
dChpbnQ2NF90IHJ0dF9tcyk7CisKKyAgdm9pZCBPblRhcmdldFRyYW5zZmVyUmF0ZShUYXJnZXRU
cmFuc2ZlclJhdGUpIG92ZXJyaWRlOworCisgIC8vIFRocmVhZCBjaGVja2VycyBkb2N1bWVudCBh
bmQgbG9jayB1c2FnZSBvZiBzb21lIG1ldGhvZHMgb24gdm9lOjpDaGFubmVsIHRvCisgIC8vIHNw
ZWNpZmljIHRocmVhZHMgd2Uga25vdyBhYm91dC4gVGhlIGdvYWwgaXMgdG8gZXZlbnR1YWxseSBz
cGxpdCB1cAorICAvLyB2b2U6OkNoYW5uZWwgaW50byBwYXJ0cyB3aXRoIHNpbmdsZS10aHJlYWRl
ZCBzZW1hbnRpY3MsIGFuZCB0aGVyZWJ5IHJlZHVjZQorICAvLyB0aGUgbmVlZCBmb3IgbG9ja3Mu
CisgIHJ0Yzo6VGhyZWFkQ2hlY2tlciB3b3JrZXJfdGhyZWFkX2NoZWNrZXJfOworICBydGM6OlRo
cmVhZENoZWNrZXIgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfOworICAvLyBNZXRob2Rz
IGFjY2Vzc2VkIGZyb20gYXVkaW8gYW5kIHZpZGVvIHRocmVhZHMgYXJlIGNoZWNrZWQgZm9yIHNl
cXVlbnRpYWwtCisgIC8vIG9ubHkgYWNjZXNzLiBXZSBkb24ndCBuZWNlc3NhcmlseSBvd24gYW5k
IGNvbnRyb2wgdGhlc2UgdGhyZWFkcywgc28gdGhyZWFkCisgIC8vIGNoZWNrZXJzIGNhbm5vdCBi
ZSB1c2VkLiBFLmcuIENocm9taXVtIG1heSB0cmFuc2ZlciAib3duZXJzaGlwIiBmcm9tIG9uZQor
ICAvLyBhdWRpbyB0aHJlYWQgdG8gYW5vdGhlciwgYnV0IGFjY2VzcyBpcyBzdGlsbCBzZXF1ZW50
aWFsLgorICBydGM6OlJhY2VDaGVja2VyIGF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfOworCisg
IHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIF9jYWxsYmFja0NyaXRTZWN0OworICBydGM6OkNyaXRpY2Fs
U2VjdGlvbiB2b2x1bWVfc2V0dGluZ3NfY3JpdHNlY3RfOworCisgIGJvb2wgc2VuZGluZ18gUlRD
X0dVQVJERURfQlkoJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pID0gZmFsc2U7CisKKyAgUnRjRXZl
bnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187CisKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0cFJ0Y3A+IF9y
dHBSdGNwTW9kdWxlOworCisgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0NvZGluZ01vZHVsZT4gYXVk
aW9fY29kaW5nXzsKKyAgdWludDMyX3QgX3RpbWVTdGFtcCBSVENfR1VBUkRFRF9CWShlbmNvZGVy
X3F1ZXVlXyk7CisKKyAgdWludDE2X3Qgc2VuZF9zZXF1ZW5jZV9udW1iZXJfOworCisgIC8vIHVz
ZXMKKyAgUHJvY2Vzc1RocmVhZCogY29uc3QgX21vZHVsZVByb2Nlc3NUaHJlYWRQdHI7CisgIFRy
YW5zcG9ydCogY29uc3QgX3RyYW5zcG9ydFB0cjsgIC8vIFdlYlJ0YyBzb2NrZXQgb3IgZXh0ZXJu
YWwgdHJhbnNwb3J0CisgIFJtc0xldmVsIHJtc19sZXZlbF8gUlRDX0dVQVJERURfQlkoZW5jb2Rl
cl9xdWV1ZV8pOworICBib29sIGlucHV0X211dGVfIFJUQ19HVUFSREVEX0JZKHZvbHVtZV9zZXR0
aW5nc19jcml0c2VjdF8pOworICBib29sIHByZXZpb3VzX2ZyYW1lX211dGVkXyBSVENfR1VBUkRF
RF9CWShlbmNvZGVyX3F1ZXVlXyk7CisgIC8vIFZvZVJUUF9SVENQCisgIC8vIFRPRE8oaGVucmlr
YSk6IGNhbiB0b2RheSBiZSBhY2Nlc3NlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYW5kIG9uIHRoZQor
ICAvLyB0YXNrIHF1ZXVlOyBoZW5jZSBwb3RlbnRpYWwgcmFjZS4KKyAgYm9vbCBfaW5jbHVkZUF1
ZGlvTGV2ZWxJbmRpY2F0aW9uOworICBzaXplX3QgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNr
ZXRfCisgICAgICBSVENfR1VBUkRFRF9CWShvdmVyaGVhZF9wZXJfcGFja2V0X2xvY2tfKTsKKyAg
c2l6ZV90IHJ0cF9vdmVyaGVhZF9wZXJfcGFja2V0XyBSVENfR1VBUkRFRF9CWShvdmVyaGVhZF9w
ZXJfcGFja2V0X2xvY2tfKTsKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gb3ZlcmhlYWRfcGVyX3Bh
Y2tldF9sb2NrXzsKKyAgLy8gUnRjcEJhbmR3aWR0aE9ic2VydmVyCisgIGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjxWb0VSdGNwT2JzZXJ2ZXI+IHJ0Y3Bfb2JzZXJ2ZXJfOworCisgIFBhY2tldFJvdXRl
ciogcGFja2V0X3JvdXRlcl8gUlRDX0dVQVJERURfQlkoJndvcmtlcl90aHJlYWRfY2hlY2tlcl8p
ID0KKyAgICAgIG51bGxwdHI7CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnRGZWVk
YmFja1Byb3h5PiBmZWVkYmFja19vYnNlcnZlcl9wcm94eV87CisgIGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxUcmFuc3BvcnRTZXF1ZW5jZU51bWJlclByb3h5PiBzZXFfbnVtX2FsbG9jYXRvcl9wcm94
eV87CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRTZW5kZXJQcm94eT4gcnRwX3Bh
Y2tldF9zZW5kZXJfcHJveHlfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UmF0ZUxpbWl0ZXI+
IHJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl87CisKKyAgcnRjOjpUaHJlYWRDaGVja2VyIGNv
bnN0cnVjdGlvbl90aHJlYWRfOworCisgIGNvbnN0IGJvb2wgdXNlX3R3Y2NfcGxyX2Zvcl9hbmFf
OworCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGVuY29kZXJfcXVldWVfbG9ja187CisgIGJvb2wg
ZW5jb2Rlcl9xdWV1ZV9pc19hY3RpdmVfIFJUQ19HVUFSREVEX0JZKGVuY29kZXJfcXVldWVfbG9j
a18pID0gZmFsc2U7CisgIHJ0Yzo6VGFza1F1ZXVlKiBjb25zdCBlbmNvZGVyX3F1ZXVlXyA9IG51
bGxwdHI7CisKKyAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIGNvbnN0IG1lZGlhX3RyYW5zcG9y
dF87CisgIGludCBtZWRpYV90cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyXyBSVENfR1VBUkRFRF9C
WShlbmNvZGVyX3F1ZXVlXykgPSAwOworCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIG1lZGlhX3Ry
YW5zcG9ydF9sb2NrXzsKKyAgLy8gQ3VycmVudGx5IHNldCBieSBTZXRMb2NhbFNTUkMuCisgIHVp
bnQ2NF90IG1lZGlhX3RyYW5zcG9ydF9jaGFubmVsX2lkXyBSVENfR1VBUkRFRF9CWSgmbWVkaWFf
dHJhbnNwb3J0X2xvY2tfKSA9CisgICAgICAwOworICAvLyBDYWNoZSBwYXlsb2FkIHR5cGUgYW5k
IHNhbXBsaW5nIGZyZXF1ZW5jeSBmcm9tIG1vc3QgcmVjZW50IGNhbGwgdG8KKyAgLy8gU2V0RW5j
b2Rlci4gTmVlZGVkIHRvIHNldCBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lIG1ldGFk
YXRhLCBhbmQKKyAgLy8gaW52YWxpZGF0ZSBvbiBlbmNvZGVyIGNoYW5nZS4KKyAgaW50IG1lZGlh
X3RyYW5zcG9ydF9wYXlsb2FkX3R5cGVfIFJUQ19HVUFSREVEX0JZKCZtZWRpYV90cmFuc3BvcnRf
bG9ja18pOworICBpbnQgbWVkaWFfdHJhbnNwb3J0X3NhbXBsaW5nX2ZyZXF1ZW5jeV8KKyAgICAg
IFJUQ19HVUFSREVEX0JZKCZtZWRpYV90cmFuc3BvcnRfbG9ja18pOworCisgIC8vIEUyRUUgQXVk
aW8gRnJhbWUgRW5jcnlwdGlvbgorICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJ
bnRlcmZhY2U+IGZyYW1lX2VuY3J5cHRvcl87CisgIC8vIEUyRUUgRnJhbWUgRW5jcnlwdGlvbiBP
cHRpb25zCisgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uc187CisK
KyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gYml0cmF0ZV9jcml0X3NlY3Rpb25fOworICBpbnQgY29u
ZmlndXJlZF9iaXRyYXRlX2Jwc18gUlRDX0dVQVJERURfQlkoYml0cmF0ZV9jcml0X3NlY3Rpb25f
KSA9IDA7Cit9OwogCiBjb25zdCBpbnQga1RlbGVwaG9uZUV2ZW50QXR0ZW51YXRpb25kQiA9IDEw
OwogCkBAIC0yNTQsNiArNTEyLDIzIEBAIGludDMyX3QgQ2hhbm5lbFNlbmQ6OlNlbmREYXRhKEZy
YW1lVHlwZSBmcmFtZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
cGF5bG9hZFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSVFBGcmFn
bWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKGVu
Y29kZXJfcXVldWVfKTsKKyAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gcGF5bG9hZChw
YXlsb2FkRGF0YSwgcGF5bG9hZFNpemUpOworCisgIGlmIChtZWRpYV90cmFuc3BvcnQoKSAhPSBu
dWxscHRyKSB7CisgICAgcmV0dXJuIFNlbmRNZWRpYVRyYW5zcG9ydEF1ZGlvKGZyYW1lVHlwZSwg
cGF5bG9hZFR5cGUsIHRpbWVTdGFtcCwgcGF5bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnJhZ21lbnRhdGlvbik7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIFNlbmRS
dHBBdWRpbyhmcmFtZVR5cGUsIHBheWxvYWRUeXBlLCB0aW1lU3RhbXAsIHBheWxvYWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFnbWVudGF0aW9uKTsKKyAgfQorfQorCitpbnQzMl90IENo
YW5uZWxTZW5kOjpTZW5kUnRwQXVkaW8oRnJhbWVUeXBlIGZyYW1lVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHBheWxvYWRUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVTdGFtcCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBwYXlsb2Fk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJUUEZyYWdtZW50YXRp
b25IZWFkZXIqIGZyYWdtZW50YXRpb24pIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oZW5jb2Rlcl9x
dWV1ZV8pOwogICBpZiAoX2luY2x1ZGVBdWRpb0xldmVsSW5kaWNhdGlvbikgewogICAgIC8vIFN0
b3JlIGN1cnJlbnQgYXVkaW8gbGV2ZWwgaW4gdGhlIFJUUC9SVENQIG1vZHVsZS4KICAgICAvLyBU
aGUgbGV2ZWwgd2lsbCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdm9pY2UtYWN0aXZpdHkg
c3RhdGUKQEAgLTI2OCwxNiArNTQzLDE1IEBAIGludDMyX3QgQ2hhbm5lbFNlbmQ6OlNlbmREYXRh
KEZyYW1lVHlwZSBmcmFtZVR5cGUsCiAgICAgLy8gVE9ETyhiZW53cmlnaHRAd2VicnRjLm9yZykg
LSBBbGxvY2F0ZSBlbm91Z2ggdG8gYWx3YXlzIGVuY3J5cHQgaW5saW5lLgogICAgIC8vIEFsbG9j
YXRlIGEgYnVmZmVyIHRvIGhvbGQgdGhlIG1heGltdW0gcG9zc2libGUgZW5jcnlwdGVkIHBheWxv
YWQuCiAgICAgc2l6ZV90IG1heF9jaXBoZXJ0ZXh0X3NpemUgPSBmcmFtZV9lbmNyeXB0b3JfLT5H
ZXRNYXhDaXBoZXJ0ZXh0Qnl0ZVNpemUoCi0gICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVE
SU8sIHBheWxvYWRTaXplKTsKKyAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcGF5
bG9hZC5zaXplKCkpOwogICAgIGVuY3J5cHRlZF9hdWRpb19wYXlsb2FkLlNldFNpemUobWF4X2Np
cGhlcnRleHRfc2l6ZSk7CiAKICAgICAvLyBFbmNyeXB0IHRoZSBhdWRpbyBwYXlsb2FkIGludG8g
dGhlIGJ1ZmZlci4KICAgICBzaXplX3QgYnl0ZXNfd3JpdHRlbiA9IDA7CiAgICAgaW50IGVuY3J5
cHRfc3RhdHVzID0gZnJhbWVfZW5jcnlwdG9yXy0+RW5jcnlwdCgKICAgICAgICAgY3JpY2tldDo6
TUVESUFfVFlQRV9BVURJTywgX3J0cFJ0Y3BNb2R1bGUtPlNTUkMoKSwKLSAgICAgICAgLyphZGRp
dGlvbmFsX2RhdGE9Ki9udWxscHRyLAotICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50
OF90PihwYXlsb2FkRGF0YSwgcGF5bG9hZFNpemUpLAotICAgICAgICBlbmNyeXB0ZWRfYXVkaW9f
cGF5bG9hZCwgJmJ5dGVzX3dyaXR0ZW4pOworICAgICAgICAvKmFkZGl0aW9uYWxfZGF0YT0qL251
bGxwdHIsIHBheWxvYWQsIGVuY3J5cHRlZF9hdWRpb19wYXlsb2FkLAorICAgICAgICAmYnl0ZXNf
d3JpdHRlbik7CiAgICAgaWYgKGVuY3J5cHRfc3RhdHVzICE9IDApIHsKICAgICAgIFJUQ19ETE9H
KExTX0VSUk9SKSA8PCAiQ2hhbm5lbDo6U2VuZERhdGEoKSBmYWlsZWQgZW5jcnlwdCBhdWRpbyBw
YXlsb2FkOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZW5jcnlwdF9zdGF0dXM7CkBA
IC0yODYsMTkgKzU2MCwyMyBAQCBpbnQzMl90IENoYW5uZWxTZW5kOjpTZW5kRGF0YShGcmFtZVR5
cGUgZnJhbWVUeXBlLAogICAgIC8vIFJlc2l6ZSB0aGUgYnVmZmVyIHRvIHRoZSBleGFjdCBudW1i
ZXIgb2YgYnl0ZXMgYWN0dWFsbHkgdXNlZC4KICAgICBlbmNyeXB0ZWRfYXVkaW9fcGF5bG9hZC5T
ZXRTaXplKGJ5dGVzX3dyaXR0ZW4pOwogICAgIC8vIFJld3JpdGUgdGhlIHBheWxvYWREYXRhIGFu
ZCBzaXplIHRvIHRoZSBuZXcgZW5jcnlwdGVkIHBheWxvYWQuCi0gICAgcGF5bG9hZERhdGEgPSBl
bmNyeXB0ZWRfYXVkaW9fcGF5bG9hZC5kYXRhKCk7Ci0gICAgcGF5bG9hZFNpemUgPSBlbmNyeXB0
ZWRfYXVkaW9fcGF5bG9hZC5zaXplKCk7CisgICAgcGF5bG9hZCA9IGVuY3J5cHRlZF9hdWRpb19w
YXlsb2FkOworICB9IGVsc2UgaWYgKGNyeXB0b19vcHRpb25zXy5zZnJhbWUucmVxdWlyZV9mcmFt
ZV9lbmNyeXB0aW9uKSB7CisgICAgUlRDX0RMT0coTFNfRVJST1IpIDw8ICJDaGFubmVsOjpTZW5k
RGF0YSgpIGZhaWxlZCBzZW5kaW5nIGF1ZGlvIHBheWxvYWQ6ICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIkEgZnJhbWUgZW5jcnlwdG9yIGlzIHJlcXVpcmVkIGJ1dCBvbmUgaXMgbm90IHNl
dC4iOworICAgIHJldHVybiAtMTsKICAgfQogCiAgIC8vIFB1c2ggZGF0YSBmcm9tIEFDTSB0byBS
VFAvUlRDUC1tb2R1bGUgdG8gZGVsaXZlciBhdWRpbyBmcmFtZSBmb3IKICAgLy8gcGFja2V0aXph
dGlvbi4KICAgLy8gVGhpcyBjYWxsIHdpbGwgdHJpZ2dlciBUcmFuc3BvcnQ6OlNlbmRQYWNrZXQo
KSBmcm9tIHRoZSBSVFAvUlRDUCBtb2R1bGUuCi0gIGlmICghX3J0cFJ0Y3BNb2R1bGUtPlNlbmRP
dXRnb2luZ0RhdGEoCi0gICAgICAgICAgKEZyYW1lVHlwZSYpZnJhbWVUeXBlLCBwYXlsb2FkVHlw
ZSwgdGltZVN0YW1wLAotICAgICAgICAgIC8vIExlYXZpbmcgdGhlIHRpbWUgd2hlbiB0aGlzIGZy
YW1lIHdhcwotICAgICAgICAgIC8vIHJlY2VpdmVkIGZyb20gdGhlIGNhcHR1cmUgZGV2aWNlIGFz
Ci0gICAgICAgICAgLy8gdW5kZWZpbmVkIGZvciB2b2ljZSBmb3Igbm93LgotICAgICAgICAgIC0x
LCBwYXlsb2FkRGF0YSwgcGF5bG9hZFNpemUsIGZyYWdtZW50YXRpb24sIG51bGxwdHIsIG51bGxw
dHIpKSB7CisgIGlmICghX3J0cFJ0Y3BNb2R1bGUtPlNlbmRPdXRnb2luZ0RhdGEoKEZyYW1lVHlw
ZSYpZnJhbWVUeXBlLCBwYXlsb2FkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lU3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gTGVhdmluZyB0aGUgdGltZSB3aGVuIHRoaXMgZnJhbWUgd2FzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVjZWl2ZWQgZnJvbSB0aGUgY2FwdHVy
ZSBkZXZpY2UgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1
bmRlZmluZWQgZm9yIHZvaWNlIGZvciBub3cuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLTEsIHBheWxvYWQuZGF0YSgpLCBwYXlsb2FkLnNpemUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudGF0aW9uLCBudWxscHRyLCBu
dWxscHRyKSkgewogICAgIFJUQ19ETE9HKExTX0VSUk9SKQogICAgICAgICA8PCAiQ2hhbm5lbFNl
bmQ6OlNlbmREYXRhKCkgZmFpbGVkIHRvIHNlbmQgZGF0YSB0byBSVFAvUlRDUCBtb2R1bGUiOwog
ICAgIHJldHVybiAtMTsKQEAgLTMwNyw5ICs1ODUsNjggQEAgaW50MzJfdCBDaGFubmVsU2VuZDo6
U2VuZERhdGEoRnJhbWVUeXBlIGZyYW1lVHlwZSwKICAgcmV0dXJuIDA7CiB9CiAKK2ludDMyX3Qg
Q2hhbm5lbFNlbmQ6OlNlbmRNZWRpYVRyYW5zcG9ydEF1ZGlvKAorICAgIEZyYW1lVHlwZSBmcmFt
ZVR5cGUsCisgICAgdWludDhfdCBwYXlsb2FkVHlwZSwKKyAgICB1aW50MzJfdCB0aW1lU3RhbXAs
CisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gcGF5bG9hZCwKKyAgICBjb25zdCBS
VFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKSB7CisgIFJUQ19EQ0hFQ0tfUlVO
X09OKGVuY29kZXJfcXVldWVfKTsKKyAgLy8gVE9ETyhuaXNzZSk6IFVzZSBudWxsIF90cmFuc3Bv
cnRQdHIgZm9yIE1lZGlhVHJhbnNwb3J0LgorICAvLyBSVENfRENIRUNLKF90cmFuc3BvcnRQdHIg
PT0gbnVsbHB0cik7CisgIHVpbnQ2NF90IGNoYW5uZWxfaWQ7CisgIGludCBzYW1wbGluZ19yYXRl
X2h6OworICB7CisgICAgcnRjOjpDcml0U2NvcGUgY3MoJm1lZGlhX3RyYW5zcG9ydF9sb2NrXyk7
CisgICAgaWYgKG1lZGlhX3RyYW5zcG9ydF9wYXlsb2FkX3R5cGVfICE9IHBheWxvYWRUeXBlKSB7
CisgICAgICAvLyBQYXlsb2FkIHR5cGUgaXMgYmVpbmcgY2hhbmdlZCwgbWVkaWFfdHJhbnNwb3J0
X3NhbXBsaW5nX2ZyZXF1ZW5jeV8sCisgICAgICAvLyBubyBsb25nZXIgY3VycmVudC4KKyAgICAg
IHJldHVybiAtMTsKKyAgICB9CisgICAgc2FtcGxpbmdfcmF0ZV9oeiA9IG1lZGlhX3RyYW5zcG9y
dF9zYW1wbGluZ19mcmVxdWVuY3lfOworICAgIGNoYW5uZWxfaWQgPSBtZWRpYV90cmFuc3BvcnRf
Y2hhbm5lbF9pZF87CisgIH0KKyAgY29uc3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFt
ZSBmcmFtZSgKKyAgICAgIC8qc2FtcGxpbmdfcmF0ZV9oej0qL3NhbXBsaW5nX3JhdGVfaHosCisK
KyAgICAgIC8vIFRPRE8obmlzc2UpOiBUaW1lc3RhbXAgYW5kIHNhbXBsZSBpbmRleCBhcmUgdGhl
IHNhbWUgZm9yIGFsbCBzdXBwb3J0ZWQKKyAgICAgIC8vIGF1ZGlvIGNvZGVjcyBleGNlcHQgRzcy
Mi4gUmVmYWN0b3IgYXVkaW8gY29kaW5nIG1vZHVsZSB0byBvbmx5IHVzZQorICAgICAgLy8gc2Ft
cGxlIGluZGV4LCBhbmQgbGVhdmUgdHJhbnNsYXRpb24gdG8gUlRQIHRpbWUsIHdoZW4gbmVlZGVk
LCBmb3IKKyAgICAgIC8vIFJUUC1zcGVjaWZpYyBjb2RlLgorICAgICAgLypzdGFydGluZ19zYW1w
bGVfaW5kZXg9Ki90aW1lU3RhbXAsCisKKyAgICAgIC8vIFNhbXBsZSBjb3VudCBpc24ndCBjb252
ZW5pZW50bHkgYXZhaWxhYmxlIGZyb20gdGhlIEF1ZGlvQ29kaW5nTW9kdWxlLAorICAgICAgLy8g
YW5kIG5lZWRzIHNvbWUgcmVmYWN0b3JpbmcgdG8gd2lyZSB1cCBpbiBhIGdvb2Qgd2F5LiBGb3Ig
bm93LCBsZWZ0IGFzCisgICAgICAvLyB6ZXJvLgorICAgICAgLypzYW1wbGVfY291bnQ9Ki8wLAor
CisgICAgICAvKnNlcXVlbmNlX251bWJlcj0qL21lZGlhX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1i
ZXJfLAorICAgICAgTWVkaWFUcmFuc3BvcnRGcmFtZVR5cGVGb3JXZWJydGNGcmFtZVR5cGUoZnJh
bWVUeXBlKSwgcGF5bG9hZFR5cGUsCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PihwYXlsb2Fk
LmJlZ2luKCksIHBheWxvYWQuZW5kKCkpKTsKKworICAvLyBUT0RPKG5pc3NlKTogSW50cm9kdWNl
IGEgTWVkaWFUcmFuc3BvcnRTZW5kZXIgb2JqZWN0IGJvdW5kIHRvIGEgc3BlY2lmaWMKKyAgLy8g
Y2hhbm5lbCBpZC4KKyAgUlRDRXJyb3IgcnRjX2Vycm9yID0KKyAgICAgIG1lZGlhX3RyYW5zcG9y
dCgpLT5TZW5kQXVkaW9GcmFtZShjaGFubmVsX2lkLCBzdGQ6Om1vdmUoZnJhbWUpKTsKKworICBp
ZiAoIXJ0Y19lcnJvci5vaygpKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0
byBzZW5kIGZyYW1lLCBydGNfZXJyb3I9IgorICAgICAgICAgICAgICAgICAgICAgIDw8IFRvU3Ry
aW5nKHJ0Y19lcnJvci50eXBlKCkpIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICA8PCBy
dGNfZXJyb3IubWVzc2FnZSgpOworICAgIHJldHVybiAtMTsKKyAgfQorCisgICsrbWVkaWFfdHJh
bnNwb3J0X3NlcXVlbmNlX251bWJlcl87CisKKyAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ2hhbm5l
bFNlbmQ6OlNlbmRSdHAoY29uc3QgdWludDhfdCogZGF0YSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFja2V0
T3B0aW9ucyYgb3B0aW9ucykgeworICAvLyBXZSBzaG91bGQgbm90IGJlIHNlbmRpbmcgUlRQIHBh
Y2tldHMgaWYgbWVkaWEgdHJhbnNwb3J0IGlzIGF2YWlsYWJsZS4KKyAgUlRDX0NIRUNLKCFtZWRp
YV90cmFuc3BvcnQoKSk7CisKICAgcnRjOjpDcml0U2NvcGUgY3MoJl9jYWxsYmFja0NyaXRTZWN0
KTsKIAogICBpZiAoX3RyYW5zcG9ydFB0ciA9PSBOVUxMKSB7CkBAIC0zNDMsMjMgKzY4MCwyMiBA
QCBib29sIENoYW5uZWxTZW5kOjpTZW5kUnRjcChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuKSB7CiAgIHJldHVybiB0cnVlOwogfQogCi1pbnQgQ2hhbm5lbFNlbmQ6OlByZWZlcnJlZFNh
bXBsZVJhdGUoKSBjb25zdCB7Ci0gIC8vIFJldHVybiB0aGUgYmlnZ2VyIG9mIHBsYXlvdXQgYW5k
IHJlY2VpdmUgZnJlcXVlbmN5IGluIHRoZSBBQ00uCi0gIHJldHVybiBzdGQ6Om1heChhdWRpb19j
b2RpbmdfLT5SZWNlaXZlRnJlcXVlbmN5KCksCi0gICAgICAgICAgICAgICAgICBhdWRpb19jb2Rp
bmdfLT5QbGF5b3V0RnJlcXVlbmN5KCkpOwotfQotCiBDaGFubmVsU2VuZDo6Q2hhbm5lbFNlbmQo
cnRjOjpUYXNrUXVldWUqIGVuY29kZXJfcXVldWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJvY2Vzc1RocmVhZCogbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgVHJhbnNwb3J0KiBydHBfdHJhbnNwb3J0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgIFJ0Y3BSdHRTdGF0cyogcnRjcF9ydHRfc3RhdHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9sb2csCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlw
dG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9u
cyYgY3J5cHRvX29wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHRtYXBf
YWxsb3dfbWl4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJ0Y3BfcmVwb3J0X2lu
dGVydmFsX21zKQogICAgIDogZXZlbnRfbG9nXyhydGNfZXZlbnRfbG9nKSwKICAgICAgIF90aW1l
U3RhbXAoMCksICAvLyBUaGlzIGlzIGp1c3QgYW4gb2Zmc2V0LCBSVFAgbW9kdWxlIHdpbGwgYWRk
IGl0J3Mgb3duCiAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFuZG9tIG9mZnNldAogICAgICAg
c2VuZF9zZXF1ZW5jZV9udW1iZXJfKDApLAogICAgICAgX21vZHVsZVByb2Nlc3NUaHJlYWRQdHIo
bW9kdWxlX3Byb2Nlc3NfdGhyZWFkKSwKLSAgICAgIF90cmFuc3BvcnRQdHIoTlVMTCksCisgICAg
ICBfdHJhbnNwb3J0UHRyKHJ0cF90cmFuc3BvcnQpLAogICAgICAgaW5wdXRfbXV0ZV8oZmFsc2Up
LAogICAgICAgcHJldmlvdXNfZnJhbWVfbXV0ZWRfKGZhbHNlKSwKICAgICAgIF9pbmNsdWRlQXVk
aW9MZXZlbEluZGljYXRpb24oZmFsc2UpLApAQCAtMzc0LDQ5ICs3MTAsNTYgQEAgQ2hhbm5lbFNl
bmQ6OkNoYW5uZWxTZW5kKHJ0Yzo6VGFza1F1ZXVlKiBlbmNvZGVyX3F1ZXVlLAogICAgICAgdXNl
X3R3Y2NfcGxyX2Zvcl9hbmFfKAogICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRG
dWxsTmFtZSgiVXNlVHdjY1BsckZvckFuYSIpID09ICJFbmFibGVkIiksCiAgICAgICBlbmNvZGVy
X3F1ZXVlXyhlbmNvZGVyX3F1ZXVlKSwKLSAgICAgIGZyYW1lX2VuY3J5cHRvcl8oZnJhbWVfZW5j
cnlwdG9yKSB7CisgICAgICBtZWRpYV90cmFuc3BvcnRfKG1lZGlhX3RyYW5zcG9ydCksCisgICAg
ICBmcmFtZV9lbmNyeXB0b3JfKGZyYW1lX2VuY3J5cHRvciksCisgICAgICBjcnlwdG9fb3B0aW9u
c18oY3J5cHRvX29wdGlvbnMpIHsKICAgUlRDX0RDSEVDSyhtb2R1bGVfcHJvY2Vzc190aHJlYWQp
OwogICBSVENfRENIRUNLKGVuY29kZXJfcXVldWUpOworICBtb2R1bGVfcHJvY2Vzc190aHJlYWRf
Y2hlY2tlcl8uRGV0YWNoRnJvbVRocmVhZCgpOworCiAgIGF1ZGlvX2NvZGluZ18ucmVzZXQoQXVk
aW9Db2RpbmdNb2R1bGU6OkNyZWF0ZShBdWRpb0NvZGluZ01vZHVsZTo6Q29uZmlnKCkpKTsKIAog
ICBSdHBSdGNwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisKKyAgLy8gV2UgZ3JhZHVh
bGx5IHJlbW92ZSBjb2RlcGF0aHMgdGhhdCBkZXBlbmQgb24gUlRQIHdoZW4gdXNpbmcgbWVkaWEK
KyAgLy8gdHJhbnNwb3J0LiBBbGwgb2YgdGhpcyBsb2dpYyBzaG91bGQgYmUgbW92ZWQgdG8gdGhl
IGZ1dHVyZQorICAvLyBSVFBNZWRpYVRyYW5zcG9ydC4gSW4gdGhpcyBjYXNlIGl0IG1lYW5zIHRo
YXQgb3ZlcmhlYWQgYW5kIGJhbmR3aWR0aAorICAvLyBvYnNlcnZlcnMgc2hvdWxkIG5vdCBiZSBj
YWxsZWQgd2hlbiB1c2luZyBtZWRpYSB0cmFuc3BvcnQuCisgIGlmICghbWVkaWFfdHJhbnNwb3J0
XykgeworICAgIGNvbmZpZ3VyYXRpb24ub3ZlcmhlYWRfb2JzZXJ2ZXIgPSB0aGlzOworICAgIGNv
bmZpZ3VyYXRpb24uYmFuZHdpZHRoX2NhbGxiYWNrID0gcnRjcF9vYnNlcnZlcl8uZ2V0KCk7Cisg
ICAgY29uZmlndXJhdGlvbi50cmFuc3BvcnRfZmVlZGJhY2tfY2FsbGJhY2sgPSBmZWVkYmFja19v
YnNlcnZlcl9wcm94eV8uZ2V0KCk7CisgIH0KKwogICBjb25maWd1cmF0aW9uLmF1ZGlvID0gdHJ1
ZTsKICAgY29uZmlndXJhdGlvbi5vdXRnb2luZ190cmFuc3BvcnQgPSB0aGlzOwotICBjb25maWd1
cmF0aW9uLm92ZXJoZWFkX29ic2VydmVyID0gdGhpczsKLSAgY29uZmlndXJhdGlvbi5iYW5kd2lk
dGhfY2FsbGJhY2sgPSBydGNwX29ic2VydmVyXy5nZXQoKTsKIAogICBjb25maWd1cmF0aW9uLnBh
Y2VkX3NlbmRlciA9IHJ0cF9wYWNrZXRfc2VuZGVyX3Byb3h5Xy5nZXQoKTsKICAgY29uZmlndXJh
dGlvbi50cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyX2FsbG9jYXRvciA9CiAgICAgICBzZXFfbnVt
X2FsbG9jYXRvcl9wcm94eV8uZ2V0KCk7Ci0gIGNvbmZpZ3VyYXRpb24udHJhbnNwb3J0X2ZlZWRi
YWNrX2NhbGxiYWNrID0gZmVlZGJhY2tfb2JzZXJ2ZXJfcHJveHlfLmdldCgpOwogCiAgIGNvbmZp
Z3VyYXRpb24uZXZlbnRfbG9nID0gZXZlbnRfbG9nXzsKICAgY29uZmlndXJhdGlvbi5ydHRfc3Rh
dHMgPSBydGNwX3J0dF9zdGF0czsKICAgY29uZmlndXJhdGlvbi5yZXRyYW5zbWlzc2lvbl9yYXRl
X2xpbWl0ZXIgPQogICAgICAgcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXy5nZXQoKTsKKyAg
Y29uZmlndXJhdGlvbi5leHRtYXBfYWxsb3dfbWl4ZWQgPSBleHRtYXBfYWxsb3dfbWl4ZWQ7Cisg
IGNvbmZpZ3VyYXRpb24ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPSBydGNwX3JlcG9ydF9pbnRl
cnZhbF9tczsKIAogICBfcnRwUnRjcE1vZHVsZS5yZXNldChSdHBSdGNwOjpDcmVhdGVSdHBSdGNw
KGNvbmZpZ3VyYXRpb24pKTsKICAgX3J0cFJ0Y3BNb2R1bGUtPlNldFNlbmRpbmdNZWRpYVN0YXR1
cyhmYWxzZSk7Ci0gIEluaXQoKTsKLX0KIAotQ2hhbm5lbFNlbmQ6On5DaGFubmVsU2VuZCgpIHsK
LSAgVGVybWluYXRlKCk7Ci0gIFJUQ19EQ0hFQ0soIWNoYW5uZWxfc3RhdGVfLkdldCgpLnNlbmRp
bmcpOwotfQotCi12b2lkIENoYW5uZWxTZW5kOjpJbml0KCkgewotICBjaGFubmVsX3N0YXRlXy5S
ZXNldCgpOworICAvLyBXZSB3YW50IHRvIGludm9rZSB0aGUgJ1RhcmdldFJhdGVPYnNlcnZlcicg
YW5kIHxPbk92ZXJoZWFkQ2hhbmdlZHwKKyAgLy8gY2FsbGJhY2tzIGFmdGVyIHRoZSBhdWRpb19j
b2RpbmdfIGlzIGZ1bGx5IGluaXRpYWxpemVkLgorICBpZiAobWVkaWFfdHJhbnNwb3J0Xykgewor
ICAgIFJUQ19ETE9HKExTX0lORk8pIDw8ICJTZXR0aW5nIG1lZGlhX3RyYW5zcG9ydF8gcmF0ZSBv
YnNlcnZlcnMuIjsKKyAgICBtZWRpYV90cmFuc3BvcnRfLT5BZGRUYXJnZXRUcmFuc2ZlclJhdGVP
YnNlcnZlcih0aGlzKTsKKyAgICBPbk92ZXJoZWFkQ2hhbmdlZChtZWRpYV90cmFuc3BvcnRfLT5H
ZXRBdWRpb1BhY2tldE92ZXJoZWFkKCkpOworICB9IGVsc2UgeworICAgIFJUQ19ETE9HKExTX0lO
Rk8pIDw8ICJOb3Qgc2V0dGluZyBtZWRpYV90cmFuc3BvcnRfIHJhdGUgb2JzZXJ2ZXJzLiI7Cisg
IH0KIAotICAvLyAtLS0gQWRkIG1vZHVsZXMgdG8gcHJvY2VzcyB0aHJlYWQgKGZvciBwZXJpb2Rp
YyBzY2hlZHVsYXRpb24pCiAgIF9tb2R1bGVQcm9jZXNzVGhyZWFkUHRyLT5SZWdpc3Rlck1vZHVs
ZShfcnRwUnRjcE1vZHVsZS5nZXQoKSwgUlRDX0ZST01fSEVSRSk7CiAKLSAgLy8gLS0tIEFDTSBp
bml0aWFsaXphdGlvbgotICBpbnQgZXJyb3IgPSBhdWRpb19jb2RpbmdfLT5Jbml0aWFsaXplUmVj
ZWl2ZXIoKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Ci0KLSAgLy8gLS0tIFJUUC9SVENQ
IG1vZHVsZSBpbml0aWFsaXphdGlvbgotCiAgIC8vIEVuc3VyZSB0aGF0IFJUQ1AgaXMgZW5hYmxl
ZCBieSBkZWZhdWx0IGZvciB0aGUgY3JlYXRlZCBjaGFubmVsLgogICAvLyBOb3RlIHRoYXQsIHRo
ZSBtb2R1bGUgd2lsbCBrZWVwIGdlbmVyYXRpbmcgUlRDUCB1bnRpbCBpdCBpcyBleHBsaWNpdGx5
CiAgIC8vIGRpc2FibGVkIGJ5IHRoZSB1c2VyLgpAQCAtNDI1LDM2ICs3NjgsMzAgQEAgdm9pZCBD
aGFubmVsU2VuZDo6SW5pdCgpIHsKICAgLy8gUlRDUCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCiAg
IF9ydHBSdGNwTW9kdWxlLT5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprQ29tcG91bmQpOwogCi0g
IC8vIC0tLSBSZWdpc3RlciBhbGwgcGVybWFuZW50IGNhbGxiYWNrcwotICBlcnJvciA9IGF1ZGlv
X2NvZGluZ18tPlJlZ2lzdGVyVHJhbnNwb3J0Q2FsbGJhY2sodGhpcyk7CisgIGludCBlcnJvciA9
IGF1ZGlvX2NvZGluZ18tPlJlZ2lzdGVyVHJhbnNwb3J0Q2FsbGJhY2sodGhpcyk7CiAgIFJUQ19E
Q0hFQ0tfRVEoMCwgZXJyb3IpOwogfQogCi12b2lkIENoYW5uZWxTZW5kOjpUZXJtaW5hdGUoKSB7
CitDaGFubmVsU2VuZDo6fkNoYW5uZWxTZW5kKCkgewogICBSVENfRENIRUNLKGNvbnN0cnVjdGlv
bl90aHJlYWRfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIC8vIE11c3QgYmUgY2FsbGVkIG9u
IHRoZSBzYW1lIHRocmVhZCBhcyBJbml0KCkuCisKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsK
KyAgICBtZWRpYV90cmFuc3BvcnRfLT5SZW1vdmVUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlcih0
aGlzKTsKKyAgfQogCiAgIFN0b3BTZW5kKCk7CiAKLSAgLy8gVGhlIG9yZGVyIHRvIHNhZmVseSBz
aHV0ZG93biBtb2R1bGVzIGluIGEgY2hhbm5lbCBpczoKLSAgLy8gMS4gRGUtcmVnaXN0ZXIgY2Fs
bGJhY2tzIGluIG1vZHVsZXMKLSAgLy8gMi4gRGUtcmVnaXN0ZXIgbW9kdWxlcyBpbiBwcm9jZXNz
IHRocmVhZAotICAvLyAzLiBEZXN0cm95IG1vZHVsZXMKICAgaW50IGVycm9yID0gYXVkaW9fY29k
aW5nXy0+UmVnaXN0ZXJUcmFuc3BvcnRDYWxsYmFjayhOVUxMKTsKICAgUlRDX0RDSEVDS19FUSgw
LCBlcnJvcik7CiAKLSAgLy8gRGUtcmVnaXN0ZXIgbW9kdWxlcyBpbiBwcm9jZXNzIHRocmVhZAog
ICBpZiAoX21vZHVsZVByb2Nlc3NUaHJlYWRQdHIpCiAgICAgX21vZHVsZVByb2Nlc3NUaHJlYWRQ
dHItPkRlUmVnaXN0ZXJNb2R1bGUoX3J0cFJ0Y3BNb2R1bGUuZ2V0KCkpOwotCi0gIC8vIEVuZCBv
ZiBtb2R1bGVzIHNodXRkb3duCiB9CiAKLWludDMyX3QgQ2hhbm5lbFNlbmQ6OlN0YXJ0U2VuZCgp
IHsKLSAgaWYgKGNoYW5uZWxfc3RhdGVfLkdldCgpLnNlbmRpbmcpIHsKLSAgICByZXR1cm4gMDsK
LSAgfQotICBjaGFubmVsX3N0YXRlXy5TZXRTZW5kaW5nKHRydWUpOwordm9pZCBDaGFubmVsU2Vu
ZDo6U3RhcnRTZW5kKCkgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVj
a2VyXyk7CisgIFJUQ19EQ0hFQ0soIXNlbmRpbmdfKTsKKyAgc2VuZGluZ18gPSB0cnVlOwogCiAg
IC8vIFJlc3VtZSB0aGUgcHJldmlvdXMgc2VxdWVuY2UgbnVtYmVyIHdoaWNoIHdhcyByZXNldCBi
eSBTdG9wU2VuZCgpLiBUaGlzCiAgIC8vIG5lZWRzIHRvIGJlIGRvbmUgYmVmb3JlIHxzZW5kaW5n
fCBpcyBzZXQgdG8gdHJ1ZSBvbiB0aGUgUlRQL1JUQ1AgbW9kdWxlLgpAQCAtNDYyLDI2ICs3OTks
MjEgQEAgaW50MzJfdCBDaGFubmVsU2VuZDo6U3RhcnRTZW5kKCkgewogICAgIF9ydHBSdGNwTW9k
dWxlLT5TZXRTZXF1ZW5jZU51bWJlcihzZW5kX3NlcXVlbmNlX251bWJlcl8pOwogICB9CiAgIF9y
dHBSdGNwTW9kdWxlLT5TZXRTZW5kaW5nTWVkaWFTdGF0dXModHJ1ZSk7Ci0gIGlmIChfcnRwUnRj
cE1vZHVsZS0+U2V0U2VuZGluZ1N0YXR1cyh0cnVlKSAhPSAwKSB7Ci0gICAgUlRDX0RMT0coTFNf
RVJST1IpIDw8ICJTdGFydFNlbmQoKSBSVFAvUlRDUCBmYWlsZWQgdG8gc3RhcnQgc2VuZGluZyI7
Ci0gICAgX3J0cFJ0Y3BNb2R1bGUtPlNldFNlbmRpbmdNZWRpYVN0YXR1cyhmYWxzZSk7Ci0gICAg
cnRjOjpDcml0U2NvcGUgY3MoJl9jYWxsYmFja0NyaXRTZWN0KTsKLSAgICBjaGFubmVsX3N0YXRl
Xy5TZXRTZW5kaW5nKGZhbHNlKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KKyAgaW50IHJldCA9IF9y
dHBSdGNwTW9kdWxlLT5TZXRTZW5kaW5nU3RhdHVzKHRydWUpOworICBSVENfRENIRUNLX0VRKDAs
IHJldCk7CiAgIHsKICAgICAvLyBJdCBpcyBub3cgT0sgdG8gc3RhcnQgcG9zdGluZyB0YXNrcyB0
byB0aGUgZW5jb2RlciB0YXNrIHF1ZXVlLgogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZlbmNvZGVy
X3F1ZXVlX2xvY2tfKTsKICAgICBlbmNvZGVyX3F1ZXVlX2lzX2FjdGl2ZV8gPSB0cnVlOwogICB9
Ci0gIHJldHVybiAwOwogfQogCiB2b2lkIENoYW5uZWxTZW5kOjpTdG9wU2VuZCgpIHsKLSAgaWYg
KCFjaGFubmVsX3N0YXRlXy5HZXQoKS5zZW5kaW5nKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3
b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKKyAgaWYgKCFzZW5kaW5nXykgewogICAgIHJldHVybjsK
ICAgfQotICBjaGFubmVsX3N0YXRlXy5TZXRTZW5kaW5nKGZhbHNlKTsKKyAgc2VuZGluZ18gPSBm
YWxzZTsKIAogICAvLyBQb3N0IGEgdGFzayB0byB0aGUgZW5jb2RlciB0aHJlYWQgd2hpY2ggc2V0
cyBhbiBldmVudCB3aGVuIHRoZSB0YXNrIGlzCiAgIC8vIGV4ZWN1dGVkLiBXZSBrbm93IHRoYXQg
bm8gbW9yZSBlbmNvZGluZyB0YXNrcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSB0YXNrCkBAIC00OTEs
NyArODIzLDcgQEAgdm9pZCBDaGFubmVsU2VuZDo6U3RvcFNlbmQoKSB7CiAgIC8vIHRvIGFjY2Nl
c3MgYW5kIGludmFsaWQgY2hhbm5lbCBvYmplY3QuCiAgIFJUQ19EQ0hFQ0soZW5jb2Rlcl9xdWV1
ZV8pOwogCi0gIHJ0Yzo6RXZlbnQgZmx1c2goZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBm
bHVzaDsKICAgewogICAgIC8vIENsZWFyIHxlbmNvZGVyX3F1ZXVlX2lzX2FjdGl2ZV98IHVuZGVy
IGxvY2sgdG8gcHJldmVudCBhbnkgb3RoZXIgdGFza3MKICAgICAvLyB0aGFuIHRoaXMgZmluYWwg
ImZsdXNoIHRhc2siIHRvIGJlIHBvc3RlZCBvbiB0aGUgcXVldWUuCkBAIC01MTksNiArODUxLDcg
QEAgdm9pZCBDaGFubmVsU2VuZDo6U3RvcFNlbmQoKSB7CiAKIGJvb2wgQ2hhbm5lbFNlbmQ6OlNl
dEVuY29kZXIoaW50IHBheWxvYWRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2RlcikgeworICBSVENfRENIRUNLX1JV
Tl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIFJUQ19EQ0hFQ0tfR0UocGF5bG9hZF90
eXBlLCAwKTsKICAgUlRDX0RDSEVDS19MRShwYXlsb2FkX3R5cGUsIDEyNyk7CiAgIC8vIFRPRE8o
b3NzdSk6IE1ha2UgQ29kZWNJbnN0cyB1cCwgZm9yIG5vdzogb25lIGZvciB0aGUgUlRQL1JUQ1Ag
bW9kdWxlIGFuZApAQCAtNTQ5LDI1ICs4ODIsNDggQEAgYm9vbCBDaGFubmVsU2VuZDo6U2V0RW5j
b2RlcihpbnQgcGF5bG9hZF90eXBlLAogICAgIH0KICAgfQogCisgIGlmIChtZWRpYV90cmFuc3Bv
cnRfKSB7CisgICAgcnRjOjpDcml0U2NvcGUgY3MoJm1lZGlhX3RyYW5zcG9ydF9sb2NrXyk7Cisg
ICAgbWVkaWFfdHJhbnNwb3J0X3BheWxvYWRfdHlwZV8gPSBwYXlsb2FkX3R5cGU7CisgICAgLy8g
VE9ETyhuaXNzZSk6IEN1cnJlbnRseSBicm9rZW4gZm9yIEc3MjIsIHNpbmNlIHRpbWVzdGFtcHMg
cGFzc2VkIHRocm91Z2gKKyAgICAvLyBlbmNvZGVyIHVzZSBSVFAgY2xvY2sgcmF0aGVyIHRoYW4g
c2FtcGxlIGNvdW50LCBhbmQgdGhleSBkaWZmZXIgZm9yIEc3MjIuCisgICAgbWVkaWFfdHJhbnNw
b3J0X3NhbXBsaW5nX2ZyZXF1ZW5jeV8gPSBlbmNvZGVyLT5SdHBUaW1lc3RhbXBSYXRlSHooKTsK
KyAgfQogICBhdWRpb19jb2RpbmdfLT5TZXRFbmNvZGVyKHN0ZDo6bW92ZShlbmNvZGVyKSk7CiAg
IHJldHVybiB0cnVlOwogfQogCiB2b2lkIENoYW5uZWxTZW5kOjpNb2RpZnlFbmNvZGVyKAogICAg
IHJ0Yzo6RnVuY3Rpb25WaWV3PHZvaWQoc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qKT4g
bW9kaWZpZXIpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8p
OwogICBhdWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKG1vZGlmaWVyKTsKIH0KIAotdm9pZCBD
aGFubmVsU2VuZDo6U2V0Qml0UmF0ZShpbnQgYml0cmF0ZV9icHMsIGludDY0X3QgcHJvYmluZ19p
bnRlcnZhbF9tcykgewordm9pZCBDaGFubmVsU2VuZDo6T25CaXRyYXRlQWxsb2NhdGlvbihCaXRy
YXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpIHsKKyAgLy8gVGhpcyBtZXRob2QgY2FuIGJlIGNh
bGxlZCBvbiB0aGUgd29ya2VyIHRocmVhZCwgbW9kdWxlIHByb2Nlc3MgdGhyZWFkCisgIC8vIG9y
IG9uIGEgVGFza1F1ZXVlIHZpYSBWaWRlb1NlbmRTdHJlYW1JbXBsOjpPbkVuY29kZXJDb25maWd1
cmF0aW9uQ2hhbmdlZC4KKyAgLy8gVE9ETyhzb2xlbmJlcmcpOiBGaWd1cmUgb3V0IGEgZ29vZCB3
YXkgdG8gY2hlY2sgdGhpcyBvciBlbmZvcmNlIGNhbGxpbmcKKyAgLy8gcnVsZXMuCisgIC8vIFJU
Q19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkgfHwK
KyAgLy8gICAgICAgICAgICBtb2R1bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25W
YWxpZFRocmVhZCgpKTsKKyAgcnRjOjpDcml0U2NvcGUgbG9jaygmYml0cmF0ZV9jcml0X3NlY3Rp
b25fKTsKKwogICBhdWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9FbmNvZGVyPiogZW5jb2RlcikgewogICAgIGlmICgqZW5jb2RlcikgewotICAgICAg
KCplbmNvZGVyKS0+T25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aChiaXRyYXRlX2JwcywgcHJvYmlu
Z19pbnRlcnZhbF9tcyk7CisgICAgICAoKmVuY29kZXIpLT5PblJlY2VpdmVkVXBsaW5rQWxsb2Nh
dGlvbih1cGRhdGUpOwogICAgIH0KICAgfSk7Ci0gIHJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRl
cl8tPlNldE1heFJhdGUoYml0cmF0ZV9icHMpOworICByZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0
ZXJfLT5TZXRNYXhSYXRlKHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5icHMoKSk7CisgIGNvbmZpZ3Vy
ZWRfYml0cmF0ZV9icHNfID0gdXBkYXRlLnRhcmdldF9iaXRyYXRlLmJwcygpOworfQorCitpbnQg
Q2hhbm5lbFNlbmQ6OkdldEJpdHJhdGUoKSBjb25zdCB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2so
JmJpdHJhdGVfY3JpdF9zZWN0aW9uXyk7CisgIHJldHVybiBjb25maWd1cmVkX2JpdHJhdGVfYnBz
XzsKIH0KIAogdm9pZCBDaGFubmVsU2VuZDo6T25Ud2NjQmFzZWRVcGxpbmtQYWNrZXRMb3NzUmF0
ZShmbG9hdCBwYWNrZXRfbG9zc19yYXRlKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJf
dGhyZWFkX2NoZWNrZXJfKTsKICAgaWYgKCF1c2VfdHdjY19wbHJfZm9yX2FuYV8pCiAgICAgcmV0
dXJuOwogICBhdWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9FbmNvZGVyPiogZW5jb2RlcikgewpAQCAtNTc5LDYgKzkzNSw3IEBAIHZvaWQgQ2hhbm5l
bFNlbmQ6Ok9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUoZmxvYXQgcGFja2V0X2xvc3Nf
cmF0ZSkgewogCiB2b2lkIENoYW5uZWxTZW5kOjpPblJlY292ZXJhYmxlVXBsaW5rUGFja2V0TG9z
c1JhdGUoCiAgICAgZmxvYXQgcmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0ZSkgeworICBSVENf
RENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIGF1ZGlvX2NvZGluZ18t
Pk1vZGlmeUVuY29kZXIoWyZdKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmNvZGVy
KSB7CiAgICAgaWYgKCplbmNvZGVyKSB7CiAgICAgICAoKmVuY29kZXIpLT5PblJlY2VpdmVkVXBs
aW5rUmVjb3ZlcmFibGVQYWNrZXRMb3NzRnJhY3Rpb24oCkBAIC01OTcsNDcgKzk1NCwyMiBAQCB2
b2lkIENoYW5uZWxTZW5kOjpPblVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0IHBhY2tldF9sb3Nz
X3JhdGUpIHsKICAgfSk7CiB9CiAKLWJvb2wgQ2hhbm5lbFNlbmQ6OkVuYWJsZUF1ZGlvTmV0d29y
a0FkYXB0b3IoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZ19zdHJpbmcpIHsKLSAgYm9vbCBzdWNj
ZXNzID0gZmFsc2U7Ci0gIGF1ZGlvX2NvZGluZ18tPk1vZGlmeUVuY29kZXIoWyZdKHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmNvZGVyKSB7Ci0gICAgaWYgKCplbmNvZGVyKSB7Ci0g
ICAgICBzdWNjZXNzID0KLSAgICAgICAgICAoKmVuY29kZXIpLT5FbmFibGVBdWRpb05ldHdvcmtB
ZGFwdG9yKGNvbmZpZ19zdHJpbmcsIGV2ZW50X2xvZ18pOwotICAgIH0KLSAgfSk7Ci0gIHJldHVy
biBzdWNjZXNzOwotfQotCi12b2lkIENoYW5uZWxTZW5kOjpEaXNhYmxlQXVkaW9OZXR3b3JrQWRh
cHRvcigpIHsKLSAgYXVkaW9fY29kaW5nXy0+TW9kaWZ5RW5jb2RlcihbJl0oc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXIpIHsKLSAgICBpZiAoKmVuY29kZXIpCi0gICAgICAo
KmVuY29kZXIpLT5EaXNhYmxlQXVkaW9OZXR3b3JrQWRhcHRvcigpOwotICB9KTsKLX0KLQotdm9p
ZCBDaGFubmVsU2VuZDo6U2V0UmVjZWl2ZXJGcmFtZUxlbmd0aFJhbmdlKGludCBtaW5fZnJhbWVf
bGVuZ3RoX21zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBtYXhfZnJhbWVfbGVuZ3RoX21zKSB7Ci0gIGF1ZGlvX2NvZGluZ18tPk1vZGlmeUVuY29k
ZXIoWyZdKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmNvZGVyKSB7Ci0gICAgaWYg
KCplbmNvZGVyKSB7Ci0gICAgICAoKmVuY29kZXIpLT5TZXRSZWNlaXZlckZyYW1lTGVuZ3RoUmFu
Z2UobWluX2ZyYW1lX2xlbmd0aF9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXhfZnJhbWVfbGVuZ3RoX21zKTsKLSAgICB9Ci0gIH0pOwotfQotCi12
b2lkIENoYW5uZWxTZW5kOjpSZWdpc3RlclRyYW5zcG9ydChUcmFuc3BvcnQqIHRyYW5zcG9ydCkg
ewotICBydGM6OkNyaXRTY29wZSBjcygmX2NhbGxiYWNrQ3JpdFNlY3QpOwotICBfdHJhbnNwb3J0
UHRyID0gdHJhbnNwb3J0OwotfQorLy8gVE9ETyhuaXNzZSk6IERlbGV0ZSBhbHdheXMtdHJ1ZSBy
ZXR1cm4gdmFsdWUuCitib29sIENoYW5uZWxTZW5kOjpSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeworICAvLyBNYXkgYmUgY2FsbGVkIG9uIGVp
dGhlciB3b3JrZXIgdGhyZWFkIG9yIG5ldHdvcmsgdGhyZWFkLgorICBpZiAobWVkaWFfdHJhbnNw
b3J0XykgeworICAgIC8vIElnbm9yZSBSVENQIHBhY2tldHMgd2hpbGUgbWVkaWEgdHJhbnNwb3J0
IGlzIHVzZWQuCisgICAgLy8gVGhvc2UgcGFja2V0cyBzaG91bGQgbm90IGFycml2ZSwgYnV0IHdl
IGFyZSBzZWVpbmcgb2NjYXNpb25hbCBwYWNrZXRzLgorICAgIHJldHVybiAwOworICB9CiAKLWlu
dDMyX3QgQ2hhbm5lbFNlbmQ6OlJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoKSB7CiAgIC8vIERlbGl2ZXIgUlRDUCBwYWNrZXQgdG8gUlRQL1JUQ1Ag
bW9kdWxlIGZvciBwYXJzaW5nCiAgIF9ydHBSdGNwTW9kdWxlLT5JbmNvbWluZ1J0Y3BQYWNrZXQo
ZGF0YSwgbGVuZ3RoKTsKIAogICBpbnQ2NF90IHJ0dCA9IEdldFJUVCgpOwogICBpZiAocnR0ID09
IDApIHsKICAgICAvLyBXYWl0aW5nIGZvciB2YWxpZCBSVFQuCi0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIHRydWU7CiAgIH0KIAogICBpbnQ2NF90IG5hY2tfd2luZG93X21zID0gcnR0OwpAQCAt
NjQ4LDE2ICs5ODAsMTIgQEAgaW50MzJfdCBDaGFubmVsU2VuZDo6UmVjZWl2ZWRSVENQUGFja2V0
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsKICAgfQogICByZXRyYW5zbWlz
c2lvbl9yYXRlX2xpbWl0ZXJfLT5TZXRXaW5kb3dTaXplKG5hY2tfd2luZG93X21zKTsKIAotICAv
LyBJbnZva2UgYXVkaW8gZW5jb2RlcnMgT25SZWNlaXZlZFJ0dCgpLgotICBhdWRpb19jb2Rpbmdf
LT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2Rl
cikgewotICAgIGlmICgqZW5jb2RlcikKLSAgICAgICgqZW5jb2RlciktPk9uUmVjZWl2ZWRSdHQo
cnR0KTsKLSAgfSk7Ci0KLSAgcmV0dXJuIDA7CisgIE9uUmVjZWl2ZWRSdHQocnR0KTsKKyAgcmV0
dXJuIHRydWU7CiB9CiAKIHZvaWQgQ2hhbm5lbFNlbmQ6OlNldElucHV0TXV0ZShib29sIGVuYWJs
ZSkgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIHJ0
Yzo6Q3JpdFNjb3BlIGNzKCZ2b2x1bWVfc2V0dGluZ3NfY3JpdHNlY3RfKTsKICAgaW5wdXRfbXV0
ZV8gPSBlbmFibGU7CiB9CkBAIC02NjcsMjQgKzk5NSwyNiBAQCBib29sIENoYW5uZWxTZW5kOjpJ
bnB1dE11dGUoKSBjb25zdCB7CiAgIHJldHVybiBpbnB1dF9tdXRlXzsKIH0KIAotaW50IENoYW5u
ZWxTZW5kOjpTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGludCBldmVudCwgaW50IGR1cmF0aW9u
X21zKSB7Citib29sIENoYW5uZWxTZW5kOjpTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGludCBl
dmVudCwgaW50IGR1cmF0aW9uX21zKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhy
ZWFkX2NoZWNrZXJfKTsKICAgUlRDX0RDSEVDS19MRSgwLCBldmVudCk7CiAgIFJUQ19EQ0hFQ0tf
R0UoMjU1LCBldmVudCk7CiAgIFJUQ19EQ0hFQ0tfTEUoMCwgZHVyYXRpb25fbXMpOwogICBSVENf
RENIRUNLX0dFKDY1NTM1LCBkdXJhdGlvbl9tcyk7Ci0gIGlmICghU2VuZGluZygpKSB7Ci0gICAg
cmV0dXJuIC0xOworICBpZiAoIXNlbmRpbmdfKSB7CisgICAgcmV0dXJuIGZhbHNlOwogICB9CiAg
IGlmIChfcnRwUnRjcE1vZHVsZS0+U2VuZFRlbGVwaG9uZUV2ZW50T3V0YmFuZCgKICAgICAgICAg
ICBldmVudCwgZHVyYXRpb25fbXMsIGtUZWxlcGhvbmVFdmVudEF0dGVudWF0aW9uZEIpICE9IDAp
IHsKICAgICBSVENfRExPRyhMU19FUlJPUikgPDwgIlNlbmRUZWxlcGhvbmVFdmVudE91dGJhbmQo
KSBmYWlsZWQgdG8gc2VuZCBldmVudCI7Ci0gICAgcmV0dXJuIC0xOworICAgIHJldHVybiBmYWxz
ZTsKICAgfQotICByZXR1cm4gMDsKKyAgcmV0dXJuIHRydWU7CiB9CiAKLWludCBDaGFubmVsU2Vu
ZDo6U2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBheWxvYWRfdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBheWxv
YWRfZnJlcXVlbmN5KSB7Citib29sIENoYW5uZWxTZW5kOjpTZXRTZW5kVGVsZXBob25lRXZlbnRQ
YXlsb2FkVHlwZShpbnQgcGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBheWxvYWRfZnJlcXVlbmN5KSB7CisgIFJUQ19E
Q0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgUlRDX0RDSEVDS19MRSgw
LCBwYXlsb2FkX3R5cGUpOwogICBSVENfRENIRUNLX0dFKDEyNywgcGF5bG9hZF90eXBlKTsKICAg
Q29kZWNJbnN0IGNvZGVjID0gezB9OwpAQCAtNjk3LDM0ICsxMDI3LDQ0IEBAIGludCBDaGFubmVs
U2VuZDo6U2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBheWxvYWRfdHlwZSwK
ICAgICAgIFJUQ19ETE9HKExTX0VSUk9SKQogICAgICAgICAgIDw8ICJTZXRTZW5kVGVsZXBob25l
RXZlbnRQYXlsb2FkVHlwZSgpIGZhaWxlZCB0byByZWdpc3RlciAiCiAgICAgICAgICAgICAgInNl
bmQgcGF5bG9hZCB0eXBlIjsKLSAgICAgIHJldHVybiAtMTsKKyAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgIH0KLSAgcmV0dXJuIDA7CisgIHJldHVybiB0cnVlOwogfQogCi1pbnQgQ2hhbm5l
bFNlbmQ6OlNldExvY2FsU1NSQyh1bnNpZ25lZCBpbnQgc3NyYykgewotICBpZiAoY2hhbm5lbF9z
dGF0ZV8uR2V0KCkuc2VuZGluZykgewotICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiU2V0TG9j
YWxTU1JDKCkgYWxyZWFkeSBzZW5kaW5nIjsKLSAgICByZXR1cm4gLTE7Cit2b2lkIENoYW5uZWxT
ZW5kOjpTZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYykgeworICBSVENfRENIRUNLX1JVTl9PTigm
d29ya2VyX3RocmVhZF9jaGVja2VyXyk7CisgIFJUQ19EQ0hFQ0soIXNlbmRpbmdfKTsKKworICBp
ZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZtZWRpYV90cmFu
c3BvcnRfbG9ja18pOworICAgIG1lZGlhX3RyYW5zcG9ydF9jaGFubmVsX2lkXyA9IHNzcmM7CiAg
IH0KICAgX3J0cFJ0Y3BNb2R1bGUtPlNldFNTUkMoc3NyYyk7Ci0gIHJldHVybiAwOwogfQogCiB2
b2lkIENoYW5uZWxTZW5kOjpTZXRNaWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwgaW50IGV4dGVu
c2lvbl9pZCkgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7
CiAgIGludCByZXQgPSBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKHRydWUsIGtSdHBFeHRlbnNp
b25NaWQsIGV4dGVuc2lvbl9pZCk7CiAgIFJUQ19EQ0hFQ0tfRVEoMCwgcmV0KTsKICAgX3J0cFJ0
Y3BNb2R1bGUtPlNldE1pZChtaWQpOwogfQogCi1pbnQgQ2hhbm5lbFNlbmQ6OlNldFNlbmRBdWRp
b0xldmVsSW5kaWNhdGlvblN0YXR1cyhib29sIGVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaWQpIHsKK3ZvaWQg
Q2hhbm5lbFNlbmQ6OlNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQp
IHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOworICBfcnRw
UnRjcE1vZHVsZS0+U2V0RXh0bWFwQWxsb3dNaXhlZChleHRtYXBfYWxsb3dfbWl4ZWQpOworfQor
Cit2b2lkIENoYW5uZWxTZW5kOjpTZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25TdGF0dXMoYm9v
bCBlbmFibGUsIGludCBpZCkgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9j
aGVja2VyXyk7CiAgIF9pbmNsdWRlQXVkaW9MZXZlbEluZGljYXRpb24gPSBlbmFibGU7Ci0gIHJl
dHVybiBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKGVuYWJsZSwga1J0cEV4dGVuc2lvbkF1ZGlv
TGV2ZWwsIGlkKTsKKyAgaW50IHJldCA9IFNldFNlbmRSdHBIZWFkZXJFeHRlbnNpb24oZW5hYmxl
LCBrUnRwRXh0ZW5zaW9uQXVkaW9MZXZlbCwgaWQpOworICBSVENfRENIRUNLX0VRKDAsIHJldCk7
CiB9CiAKIHZvaWQgQ2hhbm5lbFNlbmQ6OkVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJl
cihpbnQgaWQpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8p
OwogICBpbnQgcmV0ID0KICAgICAgIFNldFNlbmRSdHBIZWFkZXJFeHRlbnNpb24odHJ1ZSwga1J0
cEV4dGVuc2lvblRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyLCBpZCk7CiAgIFJUQ19EQ0hFQ0tfRVEo
MCwgcmV0KTsKQEAgLTczMyw2ICsxMDczLDcgQEAgdm9pZCBDaGFubmVsU2VuZDo6RW5hYmxlU2Vu
ZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKGludCBpZCkgewogdm9pZCBDaGFubmVsU2VuZDo6UmVn
aXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCiAgICAgUnRwVHJhbnNwb3J0Q29u
dHJvbGxlclNlbmRJbnRlcmZhY2UqIHRyYW5zcG9ydCwKICAgICBSdGNwQmFuZHdpZHRoT2JzZXJ2
ZXIqIGJhbmR3aWR0aF9vYnNlcnZlcikgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3Ro
cmVhZF9jaGVja2VyXyk7CiAgIFJ0cFBhY2tldFNlbmRlciogcnRwX3BhY2tldF9zZW5kZXIgPSB0
cmFuc3BvcnQtPnBhY2tldF9zZW5kZXIoKTsKICAgVHJhbnNwb3J0RmVlZGJhY2tPYnNlcnZlciog
dHJhbnNwb3J0X2ZlZWRiYWNrX29ic2VydmVyID0KICAgICAgIHRyYW5zcG9ydC0+dHJhbnNwb3J0
X2ZlZWRiYWNrX29ic2VydmVyKCk7CkBAIC03NTQsNiArMTA5NSw3IEBAIHZvaWQgQ2hhbm5lbFNl
bmQ6OlJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAogfQogCiB2b2lkIENo
YW5uZWxTZW5kOjpSZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpIHsKKyAgUlRD
X0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwogICBSVENfRENIRUNLKHBh
Y2tldF9yb3V0ZXJfKTsKICAgX3J0cFJ0Y3BNb2R1bGUtPlNldFN0b3JlUGFja2V0c1N0YXR1cyhm
YWxzZSwgNjAwKTsKICAgcnRjcF9vYnNlcnZlcl8tPlNldEJhbmR3aWR0aE9ic2VydmVyKG51bGxw
dHIpOwpAQCAtNzY0LDM1ICsxMTA2LDI1IEBAIHZvaWQgQ2hhbm5lbFNlbmQ6OlJlc2V0U2VuZGVy
Q29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCkgewogICBydHBfcGFja2V0X3NlbmRlcl9wcm94eV8t
PlNldFBhY2tldFNlbmRlcihudWxscHRyKTsKIH0KIAotdm9pZCBDaGFubmVsU2VuZDo6U2V0UlRD
UFN0YXR1cyhib29sIGVuYWJsZSkgewotICBfcnRwUnRjcE1vZHVsZS0+U2V0UlRDUFN0YXR1cyhl
bmFibGUgPyBSdGNwTW9kZTo6a0NvbXBvdW5kIDogUnRjcE1vZGU6OmtPZmYpOwotfQotCi1pbnQg
Q2hhbm5lbFNlbmQ6OlNldFJUQ1BfQ05BTUUoY29uc3QgY2hhciBjTmFtZVsyNTZdKSB7Ci0gIGlm
IChfcnRwUnRjcE1vZHVsZS0+U2V0Q05BTUUoY05hbWUpICE9IDApIHsKLSAgICBSVENfRExPRyhM
U19FUlJPUikgPDwgIlNldFJUQ1BfQ05BTUUoKSBmYWlsZWQgdG8gc2V0IFJUQ1AgQ05BTUUiOwot
ICAgIHJldHVybiAtMTsKLSAgfQotICByZXR1cm4gMDsKK3ZvaWQgQ2hhbm5lbFNlbmQ6OlNldFJU
Q1BfQ05BTUUoYWJzbDo6c3RyaW5nX3ZpZXcgY19uYW1lKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09O
KCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKKyAgLy8gTm90ZTogU2V0Q05BTUUoKSBhY2NlcHRz
IGEgYyBzdHJpbmcgb2YgbGVuZ3RoIGF0IG1vc3QgMjU1LgorICBjb25zdCBzdGQ6OnN0cmluZyBj
X25hbWVfbGltaXRlZChjX25hbWUuc3Vic3RyKDAsIDI1NSkpOworICBpbnQgcmV0ID0gX3J0cFJ0
Y3BNb2R1bGUtPlNldENOQU1FKGNfbmFtZV9saW1pdGVkLmNfc3RyKCkpICE9IDA7CisgIFJUQ19E
Q0hFQ0tfRVEoMCwgcmV0KSA8PCAiU2V0UlRDUF9DTkFNRSgpIGZhaWxlZCB0byBzZXQgUlRDUCBD
TkFNRSI7CiB9CiAKLWludCBDaGFubmVsU2VuZDo6R2V0UmVtb3RlUlRDUFJlcG9ydEJsb2NrcygK
LSAgICBzdGQ6OnZlY3RvcjxSZXBvcnRCbG9jaz4qIHJlcG9ydF9ibG9ja3MpIHsKLSAgaWYgKHJl
cG9ydF9ibG9ja3MgPT0gTlVMTCkgewotICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiR2V0UmVt
b3RlUlRDUFJlcG9ydEJsb2NrKClzIGludmFsaWQgcmVwb3J0X2Jsb2Nrcy4iOwotICAgIHJldHVy
biAtMTsKLSAgfQotCitzdGQ6OnZlY3RvcjxSZXBvcnRCbG9jaz4gQ2hhbm5lbFNlbmQ6OkdldFJl
bW90ZVJUQ1BSZXBvcnRCbG9ja3MoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3Jr
ZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgLy8gR2V0IHRoZSByZXBvcnQgYmxvY2tzIGZyb20gdGhl
IGxhdGVzdCByZWNlaXZlZCBSVENQIFNlbmRlciBvciBSZWNlaXZlcgogICAvLyBSZXBvcnQuIEVh
Y2ggZWxlbWVudCBpbiB0aGUgdmVjdG9yIGNvbnRhaW5zIHRoZSBzZW5kZXIncyBTU1JDIGFuZCBh
CiAgIC8vIHJlcG9ydCBibG9jayBhY2NvcmRpbmcgdG8gUkZDIDM1NTAuCiAgIHN0ZDo6dmVjdG9y
PFJUQ1BSZXBvcnRCbG9jaz4gcnRjcF9yZXBvcnRfYmxvY2tzOwotICBpZiAoX3J0cFJ0Y3BNb2R1
bGUtPlJlbW90ZVJUQ1BTdGF0KCZydGNwX3JlcG9ydF9ibG9ja3MpICE9IDApIHsKLSAgICByZXR1
cm4gLTE7Ci0gIH0KIAotICBpZiAocnRjcF9yZXBvcnRfYmxvY2tzLmVtcHR5KCkpCi0gICAgcmV0
dXJuIDA7CisgIGludCByZXQgPSBfcnRwUnRjcE1vZHVsZS0+UmVtb3RlUlRDUFN0YXQoJnJ0Y3Bf
cmVwb3J0X2Jsb2Nrcyk7CisgIFJUQ19EQ0hFQ0tfRVEoMCwgcmV0KTsKKworICBzdGQ6OnZlY3Rv
cjxSZXBvcnRCbG9jaz4gcmVwb3J0X2Jsb2NrczsKIAogICBzdGQ6OnZlY3RvcjxSVENQUmVwb3J0
QmxvY2s+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHJ0Y3BfcmVwb3J0X2Jsb2Nrcy5iZWdpbigpOwog
ICBmb3IgKDsgaXQgIT0gcnRjcF9yZXBvcnRfYmxvY2tzLmVuZCgpOyArK2l0KSB7CkBAIC04MDYs
MTkgKzExMzgsMTYgQEAgaW50IENoYW5uZWxTZW5kOjpHZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tz
KAogICAgIHJlcG9ydF9ibG9jay5pbnRlcmFycml2YWxfaml0dGVyID0gaXQtPmppdHRlcjsKICAg
ICByZXBvcnRfYmxvY2subGFzdF9TUl90aW1lc3RhbXAgPSBpdC0+bGFzdF9zZW5kZXJfcmVwb3J0
X3RpbWVzdGFtcDsKICAgICByZXBvcnRfYmxvY2suZGVsYXlfc2luY2VfbGFzdF9TUiA9IGl0LT5k
ZWxheV9zaW5jZV9sYXN0X3NlbmRlcl9yZXBvcnQ7Ci0gICAgcmVwb3J0X2Jsb2Nrcy0+cHVzaF9i
YWNrKHJlcG9ydF9ibG9jayk7CisgICAgcmVwb3J0X2Jsb2Nrcy5wdXNoX2JhY2socmVwb3J0X2Js
b2NrKTsKICAgfQotICByZXR1cm4gMDsKKyAgcmV0dXJuIHJlcG9ydF9ibG9ja3M7CiB9CiAKLWlu
dCBDaGFubmVsU2VuZDo6R2V0UlRQU3RhdGlzdGljcyhDYWxsU2VuZFN0YXRpc3RpY3MmIHN0YXRz
KSB7Ci0gIC8vIC0tLSBSdGNwU3RhdGlzdGljcwotCi0gIC8vIC0tLSBSVFQKK0NhbGxTZW5kU3Rh
dGlzdGljcyBDaGFubmVsU2VuZDo6R2V0UlRDUFN0YXRpc3RpY3MoKSBjb25zdCB7CisgIFJUQ19E
Q0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKKyAgQ2FsbFNlbmRTdGF0aXN0
aWNzIHN0YXRzID0gezB9OwogICBzdGF0cy5ydHRNcyA9IEdldFJUVCgpOwogCi0gIC8vIC0tLSBE
YXRhIGNvdW50ZXJzCi0KICAgc2l6ZV90IGJ5dGVzU2VudCgwKTsKICAgdWludDMyX3QgcGFja2V0
c1NlbnQoMCk7CiAKQEAgLTgzMSwyNCArMTE2MCwxMiBAQCBpbnQgQ2hhbm5lbFNlbmQ6OkdldFJU
UFN0YXRpc3RpY3MoQ2FsbFNlbmRTdGF0aXN0aWNzJiBzdGF0cykgewogICBzdGF0cy5ieXRlc1Nl
bnQgPSBieXRlc1NlbnQ7CiAgIHN0YXRzLnBhY2tldHNTZW50ID0gcGFja2V0c1NlbnQ7CiAKLSAg
cmV0dXJuIDA7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmQ6OlNldE5BQ0tTdGF0dXMoYm9vbCBlbmFi
bGUsIGludCBtYXhOdW1iZXJPZlBhY2tldHMpIHsKLSAgLy8gTm9uZSBvZiB0aGVzZSBmdW5jdGlv
bnMgY2FuIGZhaWwuCi0gIGlmIChlbmFibGUpCi0gICAgYXVkaW9fY29kaW5nXy0+RW5hYmxlTmFj
ayhtYXhOdW1iZXJPZlBhY2tldHMpOwotICBlbHNlCi0gICAgYXVkaW9fY29kaW5nXy0+RGlzYWJs
ZU5hY2soKTsKLX0KLQotLy8gQ2FsbGVkIHdoZW4gd2UgYXJlIG1pc3Npbmcgb25lIG9yIG1vcmUg
cGFja2V0cy4KLWludCBDaGFubmVsU2VuZDo6UmVzZW5kUGFja2V0cyhjb25zdCB1aW50MTZfdCog
c2VxdWVuY2VfbnVtYmVycywgaW50IGxlbmd0aCkgewotICByZXR1cm4gX3J0cFJ0Y3BNb2R1bGUt
PlNlbmROQUNLKHNlcXVlbmNlX251bWJlcnMsIGxlbmd0aCk7CisgIHJldHVybiBzdGF0czsKIH0K
IAogdm9pZCBDaGFubmVsU2VuZDo6UHJvY2Vzc0FuZEVuY29kZUF1ZGlvKAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19mcmFtZSkgeworICBSVENfRENIRUNLX1JVTlNfU0VS
SUFMSVpFRCgmYXVkaW9fdGhyZWFkX3JhY2VfY2hlY2tlcl8pOwogICAvLyBBdm9pZCBwb3N0aW5n
IGFueSBuZXcgdGFza3MgaWYgc2VuZGluZyB3YXMgYWxyZWFkeSBzdG9wcGVkIGluIFN0b3BTZW5k
KCkuCiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZlbmNvZGVyX3F1ZXVlX2xvY2tfKTsKICAgaWYgKCFl
bmNvZGVyX3F1ZXVlX2lzX2FjdGl2ZV8pIHsKQEAgLTkxNCw2ICsxMjMxLDcgQEAgdm9pZCBDaGFu
bmVsU2VuZDo6VXBkYXRlT3ZlcmhlYWRGb3JFbmNvZGVyKCkgewogfQogCiB2b2lkIENoYW5uZWxT
ZW5kOjpTZXRUcmFuc3BvcnRPdmVyaGVhZChzaXplX3QgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9w
YWNrZXQpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwog
ICBydGM6OkNyaXRTY29wZSBjcygmb3ZlcmhlYWRfcGVyX3BhY2tldF9sb2NrXyk7CiAgIHRyYW5z
cG9ydF9vdmVyaGVhZF9wZXJfcGFja2V0XyA9IHRyYW5zcG9ydF9vdmVyaGVhZF9wZXJfcGFja2V0
OwogICBVcGRhdGVPdmVyaGVhZEZvckVuY29kZXIoKTsKQEAgLTkyNywzNiArMTI0NSw0MiBAQCB2
b2lkIENoYW5uZWxTZW5kOjpPbk92ZXJoZWFkQ2hhbmdlZChzaXplX3Qgb3ZlcmhlYWRfYnl0ZXNf
cGVyX3BhY2tldCkgewogfQogCiBBTkFTdGF0cyBDaGFubmVsU2VuZDo6R2V0QU5BU3RhdGlzdGlj
cygpIGNvbnN0IHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8p
OwogICByZXR1cm4gYXVkaW9fY29kaW5nXy0+R2V0QU5BU3RhdHMoKTsKIH0KIAogUnRwUnRjcCog
Q2hhbm5lbFNlbmQ6OkdldFJ0cFJ0Y3AoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sobW9kdWxlX3By
b2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAgIHJldHVybiBf
cnRwUnRjcE1vZHVsZS5nZXQoKTsKIH0KIAogaW50IENoYW5uZWxTZW5kOjpTZXRTZW5kUnRwSGVh
ZGVyRXh0ZW5zaW9uKGJvb2wgZW5hYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJUUEV4dGVuc2lvblR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGlkKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlkKSB7CiAgIGludCBlcnJvciA9IDA7
CiAgIF9ydHBSdGNwTW9kdWxlLT5EZXJlZ2lzdGVyU2VuZFJ0cEhlYWRlckV4dGVuc2lvbih0eXBl
KTsKICAgaWYgKGVuYWJsZSkgewotICAgIGVycm9yID0gX3J0cFJ0Y3BNb2R1bGUtPlJlZ2lzdGVy
U2VuZFJ0cEhlYWRlckV4dGVuc2lvbih0eXBlLCBpZCk7CisgICAgLy8gVE9ETyhuaXNzZSk6IFJ0
cFJ0Y3A6OlJlZ2lzdGVyU2VuZFJ0cEhlYWRlckV4dGVuc2lvbiB0byB0YWtlIGFuIGludAorICAg
IC8vIGFyZ3VtZW50LiBDdXJyZW50bHkgaXQgd2FudHMgYW4gdWludDhfdC4KKyAgICBlcnJvciA9
IF9ydHBSdGNwTW9kdWxlLT5SZWdpc3RlclNlbmRSdHBIZWFkZXJFeHRlbnNpb24oCisgICAgICAg
IHR5cGUsIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50OF90PihpZCkpOwogICB9CiAgIHJldHVybiBl
cnJvcjsKIH0KIAotaW50IENoYW5uZWxTZW5kOjpHZXRSdHBUaW1lc3RhbXBSYXRlSHooKSBjb25z
dCB7Ci0gIGNvbnN0IGF1dG8gZm9ybWF0ID0gYXVkaW9fY29kaW5nXy0+UmVjZWl2ZUZvcm1hdCgp
OwotICAvLyBEZWZhdWx0IHRvIHRoZSBwbGF5b3V0IGZyZXF1ZW5jeSBpZiB3ZSd2ZSBub3QgZ290
dGVuIGFueSBwYWNrZXRzIHlldC4KLSAgLy8gVE9ETyhvc3N1KTogWmVybyBjbG9ja3JhdGUgY2Fu
IG9ubHkgaGFwcGVuIGlmIHdlJ3ZlIGFkZGVkIGFuIGV4dGVybmFsCi0gIC8vIGRlY29kZXIgZm9y
IGEgZm9ybWF0IHdlIGRvbid0IHN1cHBvcnQgaW50ZXJuYWxseS4gUmVtb3ZlIG9uY2UgdGhhdCB3
YXkgb2YKLSAgLy8gYWRkaW5nIGRlY29kZXJzIGlzIGdvbmUhCi0gIHJldHVybiAoZm9ybWF0ICYm
IGZvcm1hdC0+Y2xvY2tyYXRlX2h6ICE9IDApCi0gICAgICAgICAgICAgPyBmb3JtYXQtPmNsb2Nr
cmF0ZV9oegotICAgICAgICAgICAgIDogYXVkaW9fY29kaW5nXy0+UGxheW91dEZyZXF1ZW5jeSgp
OwotfQotCiBpbnQ2NF90IENoYW5uZWxTZW5kOjpHZXRSVFQoKSBjb25zdCB7CisgIGlmIChtZWRp
YV90cmFuc3BvcnRfKSB7CisgICAgLy8gR2V0UlRUIGlzIGdlbmVyYWxseSB1c2VkIGluIHRoZSBS
VENQIGNvZGVwYXRoLCB3aGVyZSBtZWRpYSB0cmFuc3BvcnQgaXMKKyAgICAvLyBub3QgcHJlc2Vu
dCBhbmQgc28gaXQgc2hvdWxkbid0IGJlIG5lZWRlZC4gQnV0IGl0J3MgYWxzbyBpbnZva2VkIGlu
CisgICAgLy8gJ0dldFN0YXRzJyBtZXRob2QsIGFuZCBmb3Igbm93IHJldHVybmluZyBtZWRpYSB0
cmFuc3BvcnQgUlRUIGhlcmUgZ2l2ZXMKKyAgICAvLyB1cyAiZnJlZSIgcnR0IHN0YXRzIGZvciBt
ZWRpYSB0cmFuc3BvcnQuCisgICAgYXV0byB0YXJnZXRfcmF0ZSA9IG1lZGlhX3RyYW5zcG9ydF8t
PkdldExhdGVzdFRhcmdldFRyYW5zZmVyUmF0ZSgpOworICAgIGlmICh0YXJnZXRfcmF0ZS5oYXNf
dmFsdWUoKSkgeworICAgICAgcmV0dXJuIHRhcmdldF9yYXRlLnZhbHVlKCkubmV0d29ya19lc3Rp
bWF0ZS5yb3VuZF90cmlwX3RpbWUubXMoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKKyAgfQog
ICBSdGNwTW9kZSBtZXRob2QgPSBfcnRwUnRjcE1vZHVsZS0+UlRDUCgpOwogICBpZiAobWV0aG9k
ID09IFJ0Y3BNb2RlOjprT2ZmKSB7CiAgICAgcmV0dXJuIDA7CkBAIC05ODEsMTYgKzEzMDUsNTIg
QEAgaW50NjRfdCBDaGFubmVsU2VuZDo6R2V0UlRUKCkgY29uc3QgewogICByZXR1cm4gcnR0Owog
fQogCi12b2lkIENoYW5uZWxTZW5kOjpTZXRGcmFtZUVuY3J5cHRvcihGcmFtZUVuY3J5cHRvcklu
dGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yKSB7Cit2b2lkIENoYW5uZWxTZW5kOjpTZXRGcmFtZUVu
Y3J5cHRvcigKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+
IGZyYW1lX2VuY3J5cHRvcikgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9j
aGVja2VyXyk7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZlbmNvZGVyX3F1ZXVlX2xvY2tfKTsKICAg
aWYgKGVuY29kZXJfcXVldWVfaXNfYWN0aXZlXykgewogICAgIGVuY29kZXJfcXVldWVfLT5Qb3N0
VGFzayhbdGhpcywgZnJhbWVfZW5jcnlwdG9yXSgpIHsKLSAgICAgIHRoaXMtPmZyYW1lX2VuY3J5
cHRvcl8gPSBmcmFtZV9lbmNyeXB0b3I7CisgICAgICB0aGlzLT5mcmFtZV9lbmNyeXB0b3JfID0g
c3RkOjptb3ZlKGZyYW1lX2VuY3J5cHRvcik7CiAgICAgfSk7CiAgIH0gZWxzZSB7Ci0gICAgZnJh
bWVfZW5jcnlwdG9yXyA9IGZyYW1lX2VuY3J5cHRvcjsKKyAgICBmcmFtZV9lbmNyeXB0b3JfID0g
c3RkOjptb3ZlKGZyYW1lX2VuY3J5cHRvcik7CiAgIH0KIH0KIAordm9pZCBDaGFubmVsU2VuZDo6
T25UYXJnZXRUcmFuc2ZlclJhdGUoVGFyZ2V0VHJhbnNmZXJSYXRlIHJhdGUpIHsKKyAgUlRDX0RD
SEVDSyhtZWRpYV90cmFuc3BvcnRfKTsKKyAgT25SZWNlaXZlZFJ0dChyYXRlLm5ldHdvcmtfZXN0
aW1hdGUucm91bmRfdHJpcF90aW1lLm1zKCkpOworfQorCit2b2lkIENoYW5uZWxTZW5kOjpPblJl
Y2VpdmVkUnR0KGludDY0X3QgcnR0X21zKSB7CisgIC8vIEludm9rZSBhdWRpbyBlbmNvZGVycyBP
blJlY2VpdmVkUnR0KCkuCisgIGF1ZGlvX2NvZGluZ18tPk1vZGlmeUVuY29kZXIoCisgICAgICBb
cnR0X21zXShzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2RlcikgeworICAgICAg
ICBpZiAoKmVuY29kZXIpIHsKKyAgICAgICAgICAoKmVuY29kZXIpLT5PblJlY2VpdmVkUnR0KHJ0
dF9tcyk7CisgICAgICAgIH0KKyAgICAgIH0pOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworc3Rk
Ojp1bmlxdWVfcHRyPENoYW5uZWxTZW5kSW50ZXJmYWNlPiBDcmVhdGVDaGFubmVsU2VuZCgKKyAg
ICBydGM6OlRhc2tRdWV1ZSogZW5jb2Rlcl9xdWV1ZSwKKyAgICBQcm9jZXNzVGhyZWFkKiBtb2R1
bGVfcHJvY2Vzc190aHJlYWQsCisgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3Ry
YW5zcG9ydCwKKyAgICBUcmFuc3BvcnQqIHJ0cF90cmFuc3BvcnQsCisgICAgUnRjcFJ0dFN0YXRz
KiBydGNwX3J0dF9zdGF0cywKKyAgICBSdGNFdmVudExvZyogcnRjX2V2ZW50X2xvZywKKyAgICBG
cmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAgIGNvbnN0IHdlYnJ0
Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgYm9vbCBleHRtYXBfYWxsb3df
bWl4ZWQsCisgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zKSB7CisgIHJldHVybiBhYnNs
OjptYWtlX3VuaXF1ZTxDaGFubmVsU2VuZD4oCisgICAgICBlbmNvZGVyX3F1ZXVlLCBtb2R1bGVf
cHJvY2Vzc190aHJlYWQsIG1lZGlhX3RyYW5zcG9ydCwgcnRwX3RyYW5zcG9ydCwKKyAgICAgIHJ0
Y3BfcnR0X3N0YXRzLCBydGNfZXZlbnRfbG9nLCBmcmFtZV9lbmNyeXB0b3IsIGNyeXB0b19vcHRp
b25zLAorICAgICAgZXh0bWFwX2FsbG93X21peGVkLCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyk7
Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB2b2UKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2No
YW5uZWxfc2VuZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXVkaW8vY2hhbm5lbF9zZW5kLmgKaW5kZXggZWY5MmY4ZTg0ZWI2MGYwOGZiYjI3MjA5ZmE3OTZh
NTYyOGUzZDgyYS4uMDgzZTlhNjAyOTMwNjdiZjYwZmUyYWI4Njc1NjU4ZWJjNjQ4YjExYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
Y2hhbm5lbF9zZW5kLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXVkaW8vY2hhbm5lbF9zZW5kLmgKQEAgLTExLDQyICsxMSwyNiBAQAogI2lmbmRlZiBB
VURJT19DSEFOTkVMX1NFTkRfSF8KICNkZWZpbmUgQVVESU9fQ0hBTk5FTF9TRU5EX0hfCiAKLSNp
bmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKICNpbmNs
dWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuaCIKLSNpbmNsdWRlICJhcGkvY2Fs
bC90cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWls
ZC9pbmNsdWRlKQotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9f
Y29kaW5nX21vZHVsZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ybXNf
bGV2ZWwuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKKyNpbmNsdWRl
ICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2Vj
dGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2Z1bmN0aW9uX3ZpZXcuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS90YXNrX3F1ZXVlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIu
aCIKLQotLy8gVE9ETyhzb2xlbmJlcmcsIG5pc3NlKTogVGhpcyBmaWxlIGNvbnRhaW5zIGEgZmV3
IE5PTElOVCBtYXJrcywgdG8gc2lsZW5jZQotLy8gd2FybmluZ3MgYWJvdXQgdXNlIG9mIHVuc2ln
bmVkIHNob3J0LCBhbmQgbm9uLWNvbnN0IHJlZmVyZW5jZSBhcmd1bWVudHMuCi0vLyBUaGVzZSBu
ZWVkIGNsZWFudXAsIGluIGEgc2VwYXJhdGUgY2wuCi0KLW5hbWVzcGFjZSBydGMgewotY2xhc3Mg
VGltZXN0YW1wV3JhcEFyb3VuZEhhbmRsZXI7Ci19CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBj
bGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsKLWNsYXNzIFBhY2tldFJvdXRlcjsKIGNsYXNz
IFByb2Nlc3NUaHJlYWQ7Ci1jbGFzcyBSYXRlTGltaXRlcjsKIGNsYXNzIFJ0Y0V2ZW50TG9nOwog
Y2xhc3MgUnRwUnRjcDsKIGNsYXNzIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNl
OwogCi1zdHJ1Y3QgU2VuZGVySW5mbzsKLQogc3RydWN0IENhbGxTZW5kU3RhdGlzdGljcyB7CiAg
IGludDY0X3QgcnR0TXM7CiAgIHNpemVfdCBieXRlc1NlbnQ7CkBAIC02NywyMzkgKzUxLDc3IEBA
IHN0cnVjdCBSZXBvcnRCbG9jayB7CiAKIG5hbWVzcGFjZSB2b2UgewogCi1jbGFzcyBSdHBQYWNr
ZXRTZW5kZXJQcm94eTsKLWNsYXNzIFRyYW5zcG9ydEZlZWRiYWNrUHJveHk7Ci1jbGFzcyBUcmFu
c3BvcnRTZXF1ZW5jZU51bWJlclByb3h5OwotY2xhc3MgVm9FUnRjcE9ic2VydmVyOwotCi0vLyBI
ZWxwZXIgY2xhc3MgdG8gc2ltcGxpZnkgbG9ja2luZyBzY2hlbWUgZm9yIG1lbWJlcnMgdGhhdCBh
cmUgYWNjZXNzZWQgZnJvbQotLy8gbXVsdGlwbGUgdGhyZWFkcy4KLS8vIEV4YW1wbGU6IGEgbWVt
YmVyIGNhbiBiZSBzZXQgb24gdGhyZWFkIFQxIGFuZCByZWFkIGJ5IGFuIGludGVybmFsIGF1ZGlv
Ci0vLyB0aHJlYWQgVDIuIEFjY2Vzc2luZyB0aGUgbWVtYmVyIHZpYSB0aGlzIGNsYXNzIGVuc3Vy
ZXMgdGhhdCB3ZSBhcmUKLS8vIHNhZmUgYW5kIGFsc28gYXZvaWQgVFNhbiB2MiB3YXJuaW5ncy4K
LWNsYXNzIENoYW5uZWxTZW5kU3RhdGUgewotIHB1YmxpYzoKLSAgc3RydWN0IFN0YXRlIHsKLSAg
ICBib29sIHNlbmRpbmcgPSBmYWxzZTsKLSAgfTsKLQotICBDaGFubmVsU2VuZFN0YXRlKCkge30K
LSAgdmlydHVhbCB+Q2hhbm5lbFNlbmRTdGF0ZSgpIHt9Ci0KLSAgdm9pZCBSZXNldCgpIHsKLSAg
ICBydGM6OkNyaXRTY29wZSBsb2NrKCZsb2NrXyk7Ci0gICAgc3RhdGVfID0gU3RhdGUoKTsKLSAg
fQotCi0gIFN0YXRlIEdldCgpIGNvbnN0IHsKLSAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZsb2Nr
Xyk7Ci0gICAgcmV0dXJuIHN0YXRlXzsKLSAgfQotCi0gIHZvaWQgU2V0U2VuZGluZyhib29sIGVu
YWJsZSkgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmxvY2tfKTsKLSAgICBzdGF0ZV8uc2Vu
ZGluZyA9IGVuYWJsZTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24g
bG9ja187Ci0gIFN0YXRlIHN0YXRlXzsKLX07Ci0KLWNsYXNzIENoYW5uZWxTZW5kCi0gICAgOiBw
dWJsaWMgVHJhbnNwb3J0LAotICAgICAgcHVibGljIEF1ZGlvUGFja2V0aXphdGlvbkNhbGxiYWNr
LCAgLy8gcmVjZWl2ZSBlbmNvZGVkIHBhY2tldHMgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFDTQotICAgICAgcHVibGljIE92ZXJoZWFkT2Jz
ZXJ2ZXIgeworY2xhc3MgQ2hhbm5lbFNlbmRJbnRlcmZhY2UgewogIHB1YmxpYzoKLSAgLy8gVE9E
TyhuaXNzZSk6IE1ha2UgT25VcGxpbmtQYWNrZXRMb3NzUmF0ZSBwdWJsaWMsIGFuZCBkZWxldGUg
ZnJpZW5kCi0gIC8vIGRlY2xhcmF0aW9uLgotICBmcmllbmQgY2xhc3MgVm9FUnRjcE9ic2VydmVy
OwotCi0gIENoYW5uZWxTZW5kKHJ0Yzo6VGFza1F1ZXVlKiBlbmNvZGVyX3F1ZXVlLAotICAgICAg
ICAgICAgICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCi0gICAgICAgICAg
ICAgIFJ0Y3BSdHRTdGF0cyogcnRjcF9ydHRfc3RhdHMsCi0gICAgICAgICAgICAgIFJ0Y0V2ZW50
TG9nKiBydGNfZXZlbnRfbG9nLAotICAgICAgICAgICAgICBGcmFtZUVuY3J5cHRvckludGVyZmFj
ZSogZnJhbWVfZW5jcnlwdG9yKTsKLQotICB2aXJ0dWFsIH5DaGFubmVsU2VuZCgpOworICB2aXJ0
dWFsIH5DaGFubmVsU2VuZEludGVyZmFjZSgpID0gZGVmYXVsdDsKIAotICAvLyBTZW5kIHVzaW5n
IHRoaXMgZW5jb2Rlciwgd2l0aCB0aGlzIHBheWxvYWQgdHlwZS4KLSAgYm9vbCBTZXRFbmNvZGVy
KGludCBwYXlsb2FkX3R5cGUsIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29kZXIp
OwotICB2b2lkIE1vZGlmeUVuY29kZXIoCi0gICAgICBydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+IG1vZGlmaWVyKTsKKyAgdmlydHVhbCBib29s
IFJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBwYWNrZXQsIHNpemVfdCBsZW5ndGgp
ID0gMDsKIAotICAvLyBBUEkgbWV0aG9kcworICB2aXJ0dWFsIENhbGxTZW5kU3RhdGlzdGljcyBH
ZXRSVENQU3RhdGlzdGljcygpIGNvbnN0ID0gMDsKIAotICAvLyBWb0VCYXNlCi0gIGludDMyX3Qg
U3RhcnRTZW5kKCk7Ci0gIHZvaWQgU3RvcFNlbmQoKTsKKyAgdmlydHVhbCBib29sIFNldEVuY29k
ZXIoaW50IHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2RlcikgPSAwOworICB2aXJ0dWFsIHZvaWQgTW9kaWZ5
RW5jb2RlcigKKyAgICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PHZvaWQoc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvRW5jb2Rlcj4qKT4gbW9kaWZpZXIpID0gMDsKIAotICAvLyBDb2RlY3MKLSAgdm9pZCBTZXRC
aXRSYXRlKGludCBiaXRyYXRlX2JwcywgaW50NjRfdCBwcm9iaW5nX2ludGVydmFsX21zKTsKLSAg
Ym9vbCBFbmFibGVBdWRpb05ldHdvcmtBZGFwdG9yKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWdf
c3RyaW5nKTsKLSAgdm9pZCBEaXNhYmxlQXVkaW9OZXR3b3JrQWRhcHRvcigpOwotCi0gIC8vIFRP
RE8obmlzc2UpOiBNb2RpZmllcyBkZWNvZGVyLCBidXQgbm90IHVzZWQ/Ci0gIHZvaWQgU2V0UmVj
ZWl2ZXJGcmFtZUxlbmd0aFJhbmdlKGludCBtaW5fZnJhbWVfbGVuZ3RoX21zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X2ZyYW1lX2xlbmd0aF9tcyk7Ci0KLSAg
Ly8gTmV0d29yawotICB2b2lkIFJlZ2lzdGVyVHJhbnNwb3J0KFRyYW5zcG9ydCogdHJhbnNwb3J0
KTsKLSAgLy8gVE9ETyhuaXNzZSwgc29sZW5iZXJnKTogRGVsZXRlIHdoZW4gVm9FTmV0d29yayBp
cyBkZWxldGVkLgotICBpbnQzMl90IFJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKTsKLQotICAvLyBNdXRpbmcsIFZvbHVtZSBhbmQgTGV2ZWwuCi0g
IHZvaWQgU2V0SW5wdXRNdXRlKGJvb2wgZW5hYmxlKTsKLQotICAvLyBTdGF0cy4KLSAgQU5BU3Rh
dHMgR2V0QU5BU3RhdGlzdGljcygpIGNvbnN0OwotCi0gIC8vIFVzZWQgYnkgQXVkaW9TZW5kU3Ry
ZWFtLgotICBSdHBSdGNwKiBHZXRSdHBSdGNwKCkgY29uc3Q7Ci0KLSAgLy8gRFRNRi4KLSAgaW50
IFNlbmRUZWxlcGhvbmVFdmVudE91dGJhbmQoaW50IGV2ZW50LCBpbnQgZHVyYXRpb25fbXMpOwot
ICBpbnQgU2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBheWxvYWRfdHlwZSwg
aW50IHBheWxvYWRfZnJlcXVlbmN5KTsKLQotICAvLyBSVFArUlRDUAotICBpbnQgU2V0TG9jYWxT
U1JDKHVuc2lnbmVkIGludCBzc3JjKTsKLQotICB2b2lkIFNldE1pZChjb25zdCBzdGQ6OnN0cmlu
ZyYgbWlkLCBpbnQgZXh0ZW5zaW9uX2lkKTsKLSAgaW50IFNldFNlbmRBdWRpb0xldmVsSW5kaWNh
dGlvblN0YXR1cyhib29sIGVuYWJsZSwgdW5zaWduZWQgY2hhciBpZCk7Ci0gIHZvaWQgRW5hYmxl
U2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKGludCBpZCk7Ci0KLSAgdm9pZCBSZWdpc3RlclNl
bmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKKyAgdmlydHVhbCB2b2lkIFNldExvY2FsU1NS
Qyh1aW50MzJfdCBzc3JjKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBTZXRNaWQoY29uc3Qgc3RkOjpz
dHJpbmcmIG1pZCwgaW50IGV4dGVuc2lvbl9pZCkgPSAwOworICB2aXJ0dWFsIHZvaWQgU2V0UlRD
UF9DTkFNRShhYnNsOjpzdHJpbmdfdmlldyBjX25hbWUpID0gMDsKKyAgdmlydHVhbCB2b2lkIFNl
dEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpID0gMDsKKyAgdmlydHVh
bCB2b2lkIFNldFNlbmRBdWRpb0xldmVsSW5kaWNhdGlvblN0YXR1cyhib29sIGVuYWJsZSwgaW50
IGlkKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBFbmFibGVTZW5kVHJhbnNwb3J0U2VxdWVuY2VOdW1i
ZXIoaW50IGlkKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBSZWdpc3RlclNlbmRlckNvbmdlc3Rpb25D
b250cm9sT2JqZWN0cygKICAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNl
KiB0cmFuc3BvcnQsCi0gICAgICBSdGNwQmFuZHdpZHRoT2JzZXJ2ZXIqIGJhbmR3aWR0aF9vYnNl
cnZlcik7Ci0gIHZvaWQgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKLSAg
dm9pZCBTZXRSVENQU3RhdHVzKGJvb2wgZW5hYmxlKTsKLSAgaW50IFNldFJUQ1BfQ05BTUUoY29u
c3QgY2hhciBjTmFtZVsyNTZdKTsKLSAgaW50IEdldFJlbW90ZVJUQ1BSZXBvcnRCbG9ja3Moc3Rk
Ojp2ZWN0b3I8UmVwb3J0QmxvY2s+KiByZXBvcnRfYmxvY2tzKTsKLSAgaW50IEdldFJUUFN0YXRp
c3RpY3MoQ2FsbFNlbmRTdGF0aXN0aWNzJiBzdGF0cyk7ICAvLyBOT0xJTlQKLSAgdm9pZCBTZXRO
QUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4TnVtYmVyT2ZQYWNrZXRzKTsKLQotICAvLyBG
cm9tIEF1ZGlvUGFja2V0aXphdGlvbkNhbGxiYWNrIGluIHRoZSBBQ00KLSAgaW50MzJfdCBTZW5k
RGF0YShGcmFtZVR5cGUgZnJhbWVUeXBlLAotICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgcGF5
bG9hZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZVN0YW1wLAotICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHBheWxvYWREYXRhLAotICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBwYXlsb2FkU2l6ZSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBSVFBGcmFn
bWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKSBvdmVycmlkZTsKLQotICAvLyBGcm9tIFRy
YW5zcG9ydCAoY2FsbGVkIGJ5IHRoZSBSVFAvUlRDUCBtb2R1bGUpCi0gIGJvb2wgU2VuZFJ0cChj
b25zdCB1aW50OF90KiBkYXRhLAotICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAg
ICAgICAgIGNvbnN0IFBhY2tldE9wdGlvbnMmIHBhY2tldF9vcHRpb25zKSBvdmVycmlkZTsKLSAg
Ym9vbCBTZW5kUnRjcChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuKSBvdmVycmlkZTsK
LQotICBpbnQgUHJlZmVycmVkU2FtcGxlUmF0ZSgpIGNvbnN0OwotCi0gIGJvb2wgU2VuZGluZygp
IGNvbnN0IHsgcmV0dXJuIGNoYW5uZWxfc3RhdGVfLkdldCgpLnNlbmRpbmc7IH0KLSAgUnRwUnRj
cCogUnRwUnRjcE1vZHVsZVB0cigpIGNvbnN0IHsgcmV0dXJuIF9ydHBSdGNwTW9kdWxlLmdldCgp
OyB9Ci0KLSAgLy8gUHJvY2Vzc0FuZEVuY29kZUF1ZGlvKCkgcG9zdHMgYSB0YXNrIG9uIHRoZSBz
aGFyZWQgZW5jb2RlciB0YXNrIHF1ZXVlLAotICAvLyB3aGljaCBpbiB0dXJuIGNhbGxzIChvbiB0
aGUgcXVldWUpIFByb2Nlc3NBbmRFbmNvZGVBdWRpb09uVGFza1F1ZXVlKCkgd2hlcmUKLSAgLy8g
dGhlIGFjdHVhbCBwcm9jZXNzaW5nIG9mIHRoZSBhdWRpbyB0YWtlcyBwbGFjZS4gVGhlIHByb2Nl
c3NpbmcgbWFpbmx5Ci0gIC8vIGNvbnNpc3RzIG9mIGVuY29kaW5nIGFuZCBwcmVwYXJpbmcgdGhl
IHJlc3VsdCBmb3Igc2VuZGluZyBieSBhZGRpbmcgaXQgdG8gYQotICAvLyBzZW5kIHF1ZXVlLgot
ICAvLyBUaGUgbWFpbiByZWFzb24gZm9yIHVzaW5nIGEgdGFzayBxdWV1ZSBoZXJlIGlzIHRvIHJl
bGVhc2UgdGhlIG5hdGl2ZSwKLSAgLy8gT1Mtc3BlY2lmaWMsIGF1ZGlvIGNhcHR1cmUgdGhyZWFk
IGFzIHNvb24gYXMgcG9zc2libGUgdG8gZW5zdXJlIHRoYXQgaXQKLSAgLy8gY2FuIGdvIGJhY2sg
dG8gc2xlZXAgYW5kIGJlIHByZXBhcmVkIHRvIGRlbGl2ZXIgYW4gbmV3IGNhcHR1cmVkIGF1ZGlv
Ci0gIC8vIHBhY2tldC4KLSAgdm9pZCBQcm9jZXNzQW5kRW5jb2RlQXVkaW8oc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRnJhbWU+IGF1ZGlvX2ZyYW1lKTsKLQotICB2b2lkIFNldFRyYW5zcG9ydE92ZXJo
ZWFkKHNpemVfdCB0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldCk7Ci0KLSAgLy8gRnJvbSBP
dmVyaGVhZE9ic2VydmVyIGluIHRoZSBSVFAvUlRDUCBtb2R1bGUKLSAgdm9pZCBPbk92ZXJoZWFk
Q2hhbmdlZChzaXplX3Qgb3ZlcmhlYWRfYnl0ZXNfcGVyX3BhY2tldCkgb3ZlcnJpZGU7Ci0KLSAg
Ly8gVGhlIGV4aXN0ZW5jZSBvZiB0aGlzIGZ1bmN0aW9uIGFsb25nc2lkZSBPblVwbGlua1BhY2tl
dExvc3NSYXRlIGlzCi0gIC8vIGEgY29tcHJvbWlzZS4gV2Ugd2FudCB0aGUgZW5jb2RlciB0byBi
ZSBhZ25vc3RpYyBvZiB0aGUgUExSIHNvdXJjZSwgYnV0Ci0gIC8vIHdlIGFsc28gZG9uJ3Qgd2Fu
dCBpdCB0byByZWNlaXZlIGNvbmZsaWN0aW5nIGluZm9ybWF0aW9uIGZyb20gVFdDQyBhbmQKLSAg
Ly8gZnJvbSBSVENQLVhSLgotICB2b2lkIE9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUo
ZmxvYXQgcGFja2V0X2xvc3NfcmF0ZSk7Ci0KLSAgdm9pZCBPblJlY292ZXJhYmxlVXBsaW5rUGFj
a2V0TG9zc1JhdGUoZmxvYXQgcmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0ZSk7Ci0KLSAgaW50
NjRfdCBHZXRSVFQoKSBjb25zdDsKLQotICAvLyBFMkVFIEN1c3RvbSBBdWRpbyBGcmFtZSBFbmNy
eXB0aW9uCi0gIHZvaWQgU2V0RnJhbWVFbmNyeXB0b3IoRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2Uq
IGZyYW1lX2VuY3J5cHRvcik7Ci0KLSBwcml2YXRlOgotICBjbGFzcyBQcm9jZXNzQW5kRW5jb2Rl
QXVkaW9UYXNrOwotCi0gIHZvaWQgSW5pdCgpOwotICB2b2lkIFRlcm1pbmF0ZSgpOwotCi0gIHZv
aWQgT25VcGxpbmtQYWNrZXRMb3NzUmF0ZShmbG9hdCBwYWNrZXRfbG9zc19yYXRlKTsKLSAgYm9v
bCBJbnB1dE11dGUoKSBjb25zdDsKLQotICBpbnQgUmVzZW5kUGFja2V0cyhjb25zdCB1aW50MTZf
dCogc2VxdWVuY2VfbnVtYmVycywgaW50IGxlbmd0aCk7Ci0KLSAgaW50IFNldFNlbmRSdHBIZWFk
ZXJFeHRlbnNpb24oYm9vbCBlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJUUEV4dGVuc2lvblR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBpZCk7Ci0KLSAgdm9pZCBVcGRhdGVPdmVyaGVhZEZvckVuY29kZXIoKQot
ICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChvdmVyaGVhZF9wZXJfcGFja2V0X2xv
Y2tfKTsKLQotICBpbnQgR2V0UnRwVGltZXN0YW1wUmF0ZUh6KCkgY29uc3Q7Ci0KLSAgLy8gQ2Fs
bGVkIG9uIHRoZSBlbmNvZGVyIHRhc2sgcXVldWUgd2hlbiBhIG5ldyBpbnB1dCBhdWRpbyBmcmFt
ZSBpcyByZWFkeQotICAvLyBmb3IgZW5jb2RpbmcuCi0gIHZvaWQgUHJvY2Vzc0FuZEVuY29kZUF1
ZGlvT25UYXNrUXVldWUoQXVkaW9GcmFtZSogYXVkaW9faW5wdXQpOwotCi0gIHJ0Yzo6Q3JpdGlj
YWxTZWN0aW9uIF9jYWxsYmFja0NyaXRTZWN0OwotICBydGM6OkNyaXRpY2FsU2VjdGlvbiB2b2x1
bWVfc2V0dGluZ3NfY3JpdHNlY3RfOwotCi0gIENoYW5uZWxTZW5kU3RhdGUgY2hhbm5lbF9zdGF0
ZV87Ci0KLSAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187Ci0KLSAgc3RkOjp1bmlxdWVf
cHRyPFJ0cFJ0Y3A+IF9ydHBSdGNwTW9kdWxlOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Nv
ZGluZ01vZHVsZT4gYXVkaW9fY29kaW5nXzsKLSAgdWludDMyX3QgX3RpbWVTdGFtcCBSVENfR1VB
UkRFRF9CWShlbmNvZGVyX3F1ZXVlXyk7Ci0KLSAgdWludDE2X3Qgc2VuZF9zZXF1ZW5jZV9udW1i
ZXJfOwotCi0gIC8vIHVzZXMKLSAgUHJvY2Vzc1RocmVhZCogX21vZHVsZVByb2Nlc3NUaHJlYWRQ
dHI7Ci0gIFRyYW5zcG9ydCogX3RyYW5zcG9ydFB0cjsgIC8vIFdlYlJ0YyBzb2NrZXQgb3IgZXh0
ZXJuYWwgdHJhbnNwb3J0Ci0gIFJtc0xldmVsIHJtc19sZXZlbF8gUlRDX0dVQVJERURfQlkoZW5j
b2Rlcl9xdWV1ZV8pOwotICBib29sIGlucHV0X211dGVfIFJUQ19HVUFSREVEX0JZKHZvbHVtZV9z
ZXR0aW5nc19jcml0c2VjdF8pOwotICBib29sIHByZXZpb3VzX2ZyYW1lX211dGVkXyBSVENfR1VB
UkRFRF9CWShlbmNvZGVyX3F1ZXVlXyk7Ci0gIC8vIFZvZVJUUF9SVENQCi0gIC8vIFRPRE8oaGVu
cmlrYSk6IGNhbiB0b2RheSBiZSBhY2Nlc3NlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYW5kIG9uIHRo
ZQotICAvLyB0YXNrIHF1ZXVlOyBoZW5jZSBwb3RlbnRpYWwgcmFjZS4KLSAgYm9vbCBfaW5jbHVk
ZUF1ZGlvTGV2ZWxJbmRpY2F0aW9uOwotICBzaXplX3QgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9w
YWNrZXRfCi0gICAgICBSVENfR1VBUkRFRF9CWShvdmVyaGVhZF9wZXJfcGFja2V0X2xvY2tfKTsK
LSAgc2l6ZV90IHJ0cF9vdmVyaGVhZF9wZXJfcGFja2V0XyBSVENfR1VBUkRFRF9CWShvdmVyaGVh
ZF9wZXJfcGFja2V0X2xvY2tfKTsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gb3ZlcmhlYWRfcGVy
X3BhY2tldF9sb2NrXzsKLSAgLy8gUnRjcEJhbmR3aWR0aE9ic2VydmVyCi0gIHN0ZDo6dW5pcXVl
X3B0cjxWb0VSdGNwT2JzZXJ2ZXI+IHJ0Y3Bfb2JzZXJ2ZXJfOwotCi0gIFBhY2tldFJvdXRlciog
cGFja2V0X3JvdXRlcl8gPSBudWxscHRyOwotICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RmVl
ZGJhY2tQcm94eT4gZmVlZGJhY2tfb2JzZXJ2ZXJfcHJveHlfOwotICBzdGQ6OnVuaXF1ZV9wdHI8
VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJQcm94eT4gc2VxX251bV9hbGxvY2F0b3JfcHJveHlfOwot
ICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0U2VuZGVyUHJveHk+IHJ0cF9wYWNrZXRfc2VuZGVy
X3Byb3h5XzsKLSAgc3RkOjp1bmlxdWVfcHRyPFJhdGVMaW1pdGVyPiByZXRyYW5zbWlzc2lvbl9y
YXRlX2xpbWl0ZXJfOwotCi0gIHJ0Yzo6VGhyZWFkQ2hlY2tlciBjb25zdHJ1Y3Rpb25fdGhyZWFk
XzsKLQotICBjb25zdCBib29sIHVzZV90d2NjX3Bscl9mb3JfYW5hXzsKLQotICBydGM6OkNyaXRp
Y2FsU2VjdGlvbiBlbmNvZGVyX3F1ZXVlX2xvY2tfOwotICBib29sIGVuY29kZXJfcXVldWVfaXNf
YWN0aXZlXyBSVENfR1VBUkRFRF9CWShlbmNvZGVyX3F1ZXVlX2xvY2tfKSA9IGZhbHNlOwotICBy
dGM6OlRhc2tRdWV1ZSogZW5jb2Rlcl9xdWV1ZV8gPSBudWxscHRyOwotCi0gIC8vIEUyRUUgQXVk
aW8gRnJhbWUgRW5jcnlwdGlvbgotICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5j
cnlwdG9yXyA9IG51bGxwdHI7CisgICAgICBSdGNwQmFuZHdpZHRoT2JzZXJ2ZXIqIGJhbmR3aWR0
aF9vYnNlcnZlcikgPSAwOworICB2aXJ0dWFsIHZvaWQgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29u
dHJvbE9iamVjdHMoKSA9IDA7CisgIHZpcnR1YWwgc3RkOjp2ZWN0b3I8UmVwb3J0QmxvY2s+IEdl
dFJlbW90ZVJUQ1BSZXBvcnRCbG9ja3MoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgQU5BU3RhdHMg
R2V0QU5BU3RhdGlzdGljcygpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBib29sIFNldFNlbmRUZWxl
cGhvbmVFdmVudFBheWxvYWRUeXBlKGludCBwYXlsb2FkX3R5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGF5bG9hZF9mcmVxdWVuY3kpID0g
MDsKKyAgdmlydHVhbCBib29sIFNlbmRUZWxlcGhvbmVFdmVudE91dGJhbmQoaW50IGV2ZW50LCBp
bnQgZHVyYXRpb25fbXMpID0gMDsKKyAgdmlydHVhbCB2b2lkIE9uQml0cmF0ZUFsbG9jYXRpb24o
Qml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlKSA9IDA7CisgIHZpcnR1YWwgaW50IEdldEJp
dHJhdGUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgdm9pZCBTZXRJbnB1dE11dGUoYm9vbCBtdXRl
ZCkgPSAwOworCisgIHZpcnR1YWwgdm9pZCBQcm9jZXNzQW5kRW5jb2RlQXVkaW8oCisgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9GcmFtZT4gYXVkaW9fZnJhbWUpID0gMDsKKyAgdmlydHVhbCB2
b2lkIFNldFRyYW5zcG9ydE92ZXJoZWFkKHNpemVfdCB0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3Bh
Y2tldCkgPSAwOworICB2aXJ0dWFsIFJ0cFJ0Y3AqIEdldFJ0cFJ0Y3AoKSBjb25zdCA9IDA7CisK
KyAgdmlydHVhbCB2b2lkIE9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUoZmxvYXQgcGFj
a2V0X2xvc3NfcmF0ZSkgPSAwOworICB2aXJ0dWFsIHZvaWQgT25SZWNvdmVyYWJsZVVwbGlua1Bh
Y2tldExvc3NSYXRlKAorICAgICAgZmxvYXQgcmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0ZSkg
PSAwOworICAvLyBJbiBSVFAgd2UgY3VycmVudGx5IHJlbHkgb24gUlRDUCBwYWNrZXRzICh8UmVj
ZWl2ZWRSVENQUGFja2V0fCkgdG8gaW5mb3JtCisgIC8vIGFib3V0IFJUVC4KKyAgLy8gSW4gbWVk
aWEgdHJhbnNwb3J0IHdlIHJlbHkgb24gdGhlIFRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyIGlu
c3RlYWQuCisgIC8vIEluIG90aGVyIHdvcmRzLCBpZiB5b3UgYXJlIHVzaW5nIFJUUCwgeW91IHNo
b3VsZCBleHBlY3QKKyAgLy8gfFJlY2VpdmVkUlRDUFBhY2tldHwgdG8gYmUgY2FsbGVkLCBpZiB5
b3UgYXJlIHVzaW5nIG1lZGlhIHRyYW5zcG9ydCwKKyAgLy8gfE9uVGFyZ2V0VHJhbnNmZXJSYXRl
fCB3aWxsIGJlIGNhbGxlZC4KKyAgLy8KKyAgLy8gSW4gZnV0dXJlLCBSVFAgbWVkaWEgd2lsbCBt
b3ZlIHRvIHRoZSBtZWRpYSB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb24gYW5kCisgIC8vIHRoZXNl
IGNvbmRpdGlvbnMgd2lsbCBiZSByZW1vdmVkLgorICAvLyBSZXR1cm5zIHRoZSBSVFQgaW4gbWls
bGlzZWNvbmRzLgorICB2aXJ0dWFsIGludDY0X3QgR2V0UlRUKCkgY29uc3QgPSAwOworICB2aXJ0
dWFsIHZvaWQgU3RhcnRTZW5kKCkgPSAwOworICB2aXJ0dWFsIHZvaWQgU3RvcFNlbmQoKSA9IDA7
CisKKyAgLy8gRTJFRSBDdXN0b20gQXVkaW8gRnJhbWUgRW5jcnlwdGlvbiAoT3B0aW9uYWwpCisg
IHZpcnR1YWwgdm9pZCBTZXRGcmFtZUVuY3J5cHRvcigKKyAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yKSA9IDA7CiB9OwogCitz
dGQ6OnVuaXF1ZV9wdHI8Q2hhbm5lbFNlbmRJbnRlcmZhY2U+IENyZWF0ZUNoYW5uZWxTZW5kKAor
ICAgIHJ0Yzo6VGFza1F1ZXVlKiBlbmNvZGVyX3F1ZXVlLAorICAgIFByb2Nlc3NUaHJlYWQqIG1v
ZHVsZV9wcm9jZXNzX3RocmVhZCwKKyAgICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFf
dHJhbnNwb3J0LAorICAgIFRyYW5zcG9ydCogcnRwX3RyYW5zcG9ydCwKKyAgICBSdGNwUnR0U3Rh
dHMqIHJ0Y3BfcnR0X3N0YXRzLAorICAgIFJ0Y0V2ZW50TG9nKiBydGNfZXZlbnRfbG9nLAorICAg
IEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IsCisgICAgY29uc3Qgd2Vi
cnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBib29sIGV4dG1hcF9hbGxv
d19taXhlZCwKKyAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMpOworCiB9ICAvLyBuYW1l
c3BhY2Ugdm9lCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2VuZF9wcm94
eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2No
YW5uZWxfc2VuZF9wcm94eS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA5MWJk
YzY3MWJlZWI4OTM1MGE2YTgzYWFjMjk0ZjEyNjAzOTg4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmRfcHJveHkuY2MKKysrIC9kZXYvbnVsbApAQCAt
MSwyMDcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
LSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJhdWRpby9j
aGFubmVsX3NlbmRfcHJveHkuaCIKLQotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNpbmNsdWRlICJh
cGkvY2FsbC9hdWRpb19zaW5rLmgiCi0jaW5jbHVkZSAiY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRy
b2xsZXJfc2VuZF9pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mv
c2FmZV9taW5tYXguaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2Ugdm9lIHsKLUNo
YW5uZWxTZW5kUHJveHk6OkNoYW5uZWxTZW5kUHJveHkoKSB7fQotCi1DaGFubmVsU2VuZFByb3h5
OjpDaGFubmVsU2VuZFByb3h5KHN0ZDo6dW5pcXVlX3B0cjxDaGFubmVsU2VuZD4gY2hhbm5lbCkK
LSAgICA6IGNoYW5uZWxfKHN0ZDo6bW92ZShjaGFubmVsKSkgewotICBSVENfRENIRUNLKGNoYW5u
ZWxfKTsKLSAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZyb21UaHJlYWQo
KTsKLX0KLQotQ2hhbm5lbFNlbmRQcm94eTo6fkNoYW5uZWxTZW5kUHJveHkoKSB7fQotCi12b2lk
IENoYW5uZWxTZW5kUHJveHk6OlNldExvY2FsU1NSQyh1aW50MzJfdCBzc3JjKSB7Ci0gIFJUQ19E
Q0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBp
bnQgZXJyb3IgPSBjaGFubmVsXy0+U2V0TG9jYWxTU1JDKHNzcmMpOwotICBSVENfRENIRUNLX0VR
KDAsIGVycm9yKTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpTZXROQUNLU3RhdHVzKGJv
b2wgZW5hYmxlLCBpbnQgbWF4X3BhY2tldHMpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXROQUNLU3Rh
dHVzKGVuYWJsZSwgbWF4X3BhY2tldHMpOwotfQotCi1DYWxsU2VuZFN0YXRpc3RpY3MgQ2hhbm5l
bFNlbmRQcm94eTo6R2V0UlRDUFN0YXRpc3RpY3MoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29y
a2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBDYWxsU2VuZFN0
YXRpc3RpY3Mgc3RhdHMgPSB7MH07Ci0gIGludCBlcnJvciA9IGNoYW5uZWxfLT5HZXRSVFBTdGF0
aXN0aWNzKHN0YXRzKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Ci0gIHJldHVybiBzdGF0
czsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpSZWdpc3RlclRyYW5zcG9ydChUcmFuc3Bv
cnQqIHRyYW5zcG9ydCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2Fs
bGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlJlZ2lzdGVyVHJhbnNwb3J0KHRyYW5z
cG9ydCk7Ci19Ci0KLWJvb2wgQ2hhbm5lbFNlbmRQcm94eTo6UmVjZWl2ZWRSVENQUGFja2V0KGNv
bnN0IHVpbnQ4X3QqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZW5ndGgpIHsKLSAgLy8gTWF5IGJlIGNhbGxlZCBvbiBlaXRoZXIgd29y
a2VyIHRocmVhZCBvciBuZXR3b3JrIHRocmVhZC4KLSAgcmV0dXJuIGNoYW5uZWxfLT5SZWNlaXZl
ZFJUQ1BQYWNrZXQocGFja2V0LCBsZW5ndGgpID09IDA7Ci19Ci0KLWJvb2wgQ2hhbm5lbFNlbmRQ
cm94eTo6U2V0RW5jb2RlcihpbnQgcGF5bG9hZF90eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29kZXIpIHsKLSAg
UlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7
Ci0gIHJldHVybiBjaGFubmVsXy0+U2V0RW5jb2RlcihwYXlsb2FkX3R5cGUsIHN0ZDo6bW92ZShl
bmNvZGVyKSk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6TW9kaWZ5RW5jb2RlcigKLSAg
ICBydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+
IG1vZGlmaWVyKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRP
blZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+TW9kaWZ5RW5jb2Rlcihtb2RpZmllcik7Ci19
Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0UlRDUFN0YXR1cyhib29sIGVuYWJsZSkgewot
ICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgp
KTsKLSAgY2hhbm5lbF8tPlNldFJUQ1BTdGF0dXMoZW5hYmxlKTsKLX0KLQotdm9pZCBDaGFubmVs
U2VuZFByb3h5OjpTZXRNaWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwgaW50IGV4dGVuc2lvbl9p
ZCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRo
cmVhZCgpKTsKLSAgY2hhbm5lbF8tPlNldE1pZChtaWQsIGV4dGVuc2lvbl9pZCk7Ci19Ci0KLXZv
aWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0UlRDUF9DTkFNRShjb25zdCBzdGQ6OnN0cmluZyYgY19u
YW1lKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlk
VGhyZWFkKCkpOwotICAvLyBOb3RlOiBWb0VSVFBfUlRDUDo6U2V0UlRDUF9DTkFNRSgpIGFjY2Vw
dHMgYSBjaGFyWzI1Nl0gYXJyYXkuCi0gIHN0ZDo6c3RyaW5nIGNfbmFtZV9saW1pdGVkID0gY19u
YW1lLnN1YnN0cigwLCAyNTUpOwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+U2V0UlRDUF9DTkFN
RShjX25hbWVfbGltaXRlZC5jX3N0cigpKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Ci19
Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0U2VuZEF1ZGlvTGV2ZWxJbmRpY2F0aW9uU3Rh
dHVzKGJvb2wgZW5hYmxlLCBpbnQgaWQpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2No
ZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGludCBlcnJvciA9IGNoYW5uZWxfLT5T
ZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25TdGF0dXMoZW5hYmxlLCBpZCk7Ci0gIFJUQ19EQ0hF
Q0tfRVEoMCwgZXJyb3IpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OkVuYWJsZVNlbmRU
cmFuc3BvcnRTZXF1ZW5jZU51bWJlcihpbnQgaWQpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhy
ZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5FbmFibGVT
ZW5kVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoaWQpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJv
eHk6OlJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAotICAgIFJ0cFRyYW5z
cG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAgUnRjcEJhbmR3aWR0
aE9ic2VydmVyKiBiYW5kd2lkdGhfb2JzZXJ2ZXIpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhy
ZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5SZWdpc3Rl
clNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cyh0cmFuc3BvcnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYW5kd2lkdGhfb2JzZXJ2ZXIp
OwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OlJlc2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRy
b2xPYmplY3RzKCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVk
T25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlJlc2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRy
b2xPYmplY3RzKCk7Ci19Ci0KLXN0ZDo6dmVjdG9yPFJlcG9ydEJsb2NrPiBDaGFubmVsU2VuZFBy
b3h5OjpHZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tzKCkgY29uc3QgewotICBSVENfRENIRUNLKHdv
cmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgc3RkOjp2ZWN0
b3I8d2VicnRjOjpSZXBvcnRCbG9jaz4gYmxvY2tzOwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+
R2V0UmVtb3RlUlRDUFJlcG9ydEJsb2NrcygmYmxvY2tzKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBl
cnJvcik7Ci0gIHJldHVybiBibG9ja3M7Ci19Ci0KLUFOQVN0YXRzIENoYW5uZWxTZW5kUHJveHk6
OkdldEFOQVN0YXRpc3RpY3MoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9j
aGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF8tPkdldEFO
QVN0YXRpc3RpY3MoKTsKLX0KLQotYm9vbCBDaGFubmVsU2VuZFByb3h5OjpTZXRTZW5kVGVsZXBo
b25lRXZlbnRQYXlsb2FkVHlwZShpbnQgcGF5bG9hZF90eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGF5bG9hZF9mcmVxdWVu
Y3kpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRU
aHJlYWQoKSk7Ci0gIHJldHVybiBjaGFubmVsXy0+U2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9h
ZFR5cGUocGF5bG9hZF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBheWxvYWRfZnJlcXVlbmN5KSA9PSAwOwotfQotCi1ib29sIENoYW5u
ZWxTZW5kUHJveHk6OlNlbmRUZWxlcGhvbmVFdmVudE91dGJhbmQoaW50IGV2ZW50LCBpbnQgZHVy
YXRpb25fbXMpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9u
VmFsaWRUaHJlYWQoKSk7Ci0gIHJldHVybiBjaGFubmVsXy0+U2VuZFRlbGVwaG9uZUV2ZW50T3V0
YmFuZChldmVudCwgZHVyYXRpb25fbXMpID09IDA7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94
eTo6U2V0Qml0cmF0ZShpbnQgYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50NjRfdCBwcm9iaW5nX2ludGVydmFsX21zKSB7Ci0gIC8vIFRoaXMgbWV0aG9k
IGNhbiBiZSBjYWxsZWQgb24gdGhlIHdvcmtlciB0aHJlYWQsIG1vZHVsZSBwcm9jZXNzIHRocmVh
ZAotICAvLyBvciBvbiBhIFRhc2tRdWV1ZSB2aWEgVmlkZW9TZW5kU3RyZWFtSW1wbDo6T25FbmNv
ZGVyQ29uZmlndXJhdGlvbkNoYW5nZWQuCi0gIC8vIFRPRE8oc29sZW5iZXJnKTogRmlndXJlIG91
dCBhIGdvb2Qgd2F5IHRvIGNoZWNrIHRoaXMgb3IgZW5mb3JjZSBjYWxsaW5nCi0gIC8vIHJ1bGVz
LgotICAvLyBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRo
cmVhZCgpIHx8Ci0gIC8vICAgICAgICAgICAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJf
LkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRCaXRSYXRlKGJpdHJhdGVf
YnBzLCBwcm9iaW5nX2ludGVydmFsX21zKTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpT
ZXRJbnB1dE11dGUoYm9vbCBtdXRlZCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hl
Y2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlNldElucHV0TXV0ZSht
dXRlZCk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6UHJvY2Vzc0FuZEVuY29kZUF1ZGlv
KAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19mcmFtZSkgewotICBSVENf
RENIRUNLX1JVTlNfU0VSSUFMSVpFRCgmYXVkaW9fdGhyZWFkX3JhY2VfY2hlY2tlcl8pOwotICBy
ZXR1cm4gY2hhbm5lbF8tPlByb2Nlc3NBbmRFbmNvZGVBdWRpbyhzdGQ6Om1vdmUoYXVkaW9fZnJh
bWUpKTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpTZXRUcmFuc3BvcnRPdmVyaGVhZChp
bnQgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJf
dGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRU
cmFuc3BvcnRPdmVyaGVhZCh0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldCk7Ci19Ci0KLVJ0
cFJ0Y3AqIENoYW5uZWxTZW5kUHJveHk6OkdldFJ0cFJ0Y3AoKSBjb25zdCB7Ci0gIFJUQ19EQ0hF
Q0sobW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7
Ci0gIHJldHVybiBjaGFubmVsXy0+R2V0UnRwUnRjcCgpOwotfQotCi12b2lkIENoYW5uZWxTZW5k
UHJveHk6Ok9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUoZmxvYXQgcGFja2V0X2xvc3Nf
cmF0ZSkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxp
ZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPk9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUo
cGFja2V0X2xvc3NfcmF0ZSk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6T25SZWNvdmVy
YWJsZVVwbGlua1BhY2tldExvc3NSYXRlKAotICAgIGZsb2F0IHJlY292ZXJhYmxlX3BhY2tldF9s
b3NzX3JhdGUpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9u
VmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5PblJlY292ZXJhYmxlVXBsaW5rUGFja2V0TG9z
c1JhdGUocmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0ZSk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNl
bmRQcm94eTo6U3RhcnRTZW5kKCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tl
cl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgaW50IGVycm9yID0gY2hhbm5lbF8tPlN0YXJ0
U2VuZCgpOwotICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKLX0KLQotdm9pZCBDaGFubmVsU2Vu
ZFByb3h5OjpTdG9wU2VuZCgpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJf
LkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TdG9wU2VuZCgpOwotfQotCi1D
aGFubmVsU2VuZCogQ2hhbm5lbFNlbmRQcm94eTo6R2V0Q2hhbm5lbCgpIGNvbnN0IHsKLSAgcmV0
dXJuIGNoYW5uZWxfLmdldCgpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OlNldEZyYW1l
RW5jcnlwdG9yKAotICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3Ip
IHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJl
YWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRGcmFtZUVuY3J5cHRvcihmcmFtZV9lbmNyeXB0b3IpOwot
fQotCi19ICAvLyBuYW1lc3BhY2Ugdm9lCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFu
bmVsX3NlbmRfcHJveHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2F1ZGlvL2NoYW5uZWxfc2VuZF9wcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxYjhiNGEwMmNlNWVlY2Q4ZDY5Yzg4NmU1MjA4MWVmZWRlYjlhYjU2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2VuZF9wcm94eS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0g
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVm
IEFVRElPX0NIQU5ORUxfU0VORF9QUk9YWV9IXwotI2RlZmluZSBBVURJT19DSEFOTkVMX1NFTkRf
UFJPWFlfSF8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVk
ZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgi
Ci0jaW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9zZW5kLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29u
c3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3JhY2VfY2hlY2tlci5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewot
Ci1jbGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsKLWNsYXNzIFJ0Y3BCYW5kd2lkdGhPYnNl
cnZlcjsKLWNsYXNzIFJ0cFJ0Y3A7Ci1jbGFzcyBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZElu
dGVyZmFjZTsKLWNsYXNzIFRyYW5zcG9ydDsKLQotbmFtZXNwYWNlIHZvZSB7Ci0KLS8vIFRoaXMg
Y2xhc3MgcHJvdmlkZXMgdGhlICJ2aWV3IiBvZiBhIHZvZTo6Q2hhbm5lbCB0aGF0IHdlIG5lZWQg
dG8gaW1wbGVtZW50Ci0vLyB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbS4gSXQgc2VydmVzIHR3byBw
dXJwb3NlczoKLS8vICAxLiBBbGxvdyBtb2NraW5nIGp1c3QgdGhlIGludGVyZmFjZXMgdXNlZCwg
aW5zdGVhZCBvZiB0aGUgZW50aXJlCi0vLyAgICAgdm9lOjpDaGFubmVsIGNsYXNzLgotLy8gIDIu
IFByb3ZpZGUgYSByZWZpbmVkIGludGVyZmFjZSBmb3IgdGhlIHN0cmVhbSBjbGFzc2VzLCBpbmNs
dWRpbmcgYXNzdW1wdGlvbnMKLS8vICAgICBvbiByZXR1cm4gdmFsdWVzIGFuZCBpbnB1dCBhZGFw
dGF0aW9uLgotY2xhc3MgQ2hhbm5lbFNlbmRQcm94eSB7Ci0gcHVibGljOgotICBDaGFubmVsU2Vu
ZFByb3h5KCk7Ci0gIGV4cGxpY2l0IENoYW5uZWxTZW5kUHJveHkoc3RkOjp1bmlxdWVfcHRyPENo
YW5uZWxTZW5kPiBjaGFubmVsKTsKLSAgdmlydHVhbCB+Q2hhbm5lbFNlbmRQcm94eSgpOwotCi0g
IC8vIFNoYXJlZCB3aXRoIENoYW5uZWxSZWNlaXZlUHJveHkKLSAgdmlydHVhbCB2b2lkIFNldExv
Y2FsU1NSQyh1aW50MzJfdCBzc3JjKTsKLSAgdmlydHVhbCB2b2lkIFNldE5BQ0tTdGF0dXMoYm9v
bCBlbmFibGUsIGludCBtYXhfcGFja2V0cyk7Ci0gIHZpcnR1YWwgQ2FsbFNlbmRTdGF0aXN0aWNz
IEdldFJUQ1BTdGF0aXN0aWNzKCkgY29uc3Q7Ci0gIHZpcnR1YWwgdm9pZCBSZWdpc3RlclRyYW5z
cG9ydChUcmFuc3BvcnQqIHRyYW5zcG9ydCk7Ci0gIHZpcnR1YWwgYm9vbCBSZWNlaXZlZFJUQ1BQ
YWNrZXQoY29uc3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKTsKLQotICB2aXJ0dWFs
IGJvb2wgU2V0RW5jb2RlcihpbnQgcGF5bG9hZF90eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmNvZGVyKTsKLSAgdmlydHVhbCB2
b2lkIE1vZGlmeUVuY29kZXIoCi0gICAgICBydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+IG1vZGlmaWVyKTsKLQotICB2aXJ0dWFsIHZvaWQgU2V0
UlRDUFN0YXR1cyhib29sIGVuYWJsZSk7Ci0gIHZpcnR1YWwgdm9pZCBTZXRNaWQoY29uc3Qgc3Rk
OjpzdHJpbmcmIG1pZCwgaW50IGV4dGVuc2lvbl9pZCk7Ci0gIHZpcnR1YWwgdm9pZCBTZXRSVENQ
X0NOQU1FKGNvbnN0IHN0ZDo6c3RyaW5nJiBjX25hbWUpOwotICB2aXJ0dWFsIHZvaWQgU2V0U2Vu
ZEF1ZGlvTGV2ZWxJbmRpY2F0aW9uU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgaWQpOwotICB2aXJ0
dWFsIHZvaWQgRW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKGludCBpZCk7Ci0gIHZp
cnR1YWwgdm9pZCBSZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKLSAgICAg
IFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAgICBS
dGNwQmFuZHdpZHRoT2JzZXJ2ZXIqIGJhbmR3aWR0aF9vYnNlcnZlcik7Ci0gIHZpcnR1YWwgdm9p
ZCBSZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpOwotICB2aXJ0dWFsIHN0ZDo6
dmVjdG9yPFJlcG9ydEJsb2NrPiBHZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tzKCkgY29uc3Q7Ci0g
IHZpcnR1YWwgQU5BU3RhdHMgR2V0QU5BU3RhdGlzdGljcygpIGNvbnN0OwotICB2aXJ0dWFsIGJv
b2wgU2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBheWxvYWRfdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXlsb2Fk
X2ZyZXF1ZW5jeSk7Ci0gIHZpcnR1YWwgYm9vbCBTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGlu
dCBldmVudCwgaW50IGR1cmF0aW9uX21zKTsKLSAgdmlydHVhbCB2b2lkIFNldEJpdHJhdGUoaW50
IGJpdHJhdGVfYnBzLCBpbnQ2NF90IHByb2JpbmdfaW50ZXJ2YWxfbXMpOwotICB2aXJ0dWFsIHZv
aWQgU2V0SW5wdXRNdXRlKGJvb2wgbXV0ZWQpOwotCi0gIHZpcnR1YWwgdm9pZCBQcm9jZXNzQW5k
RW5jb2RlQXVkaW8oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRnJhbWU+IGF1ZGlvX2ZyYW1lKTsKLSAg
dmlydHVhbCB2b2lkIFNldFRyYW5zcG9ydE92ZXJoZWFkKGludCB0cmFuc3BvcnRfb3ZlcmhlYWRf
cGVyX3BhY2tldCk7Ci0gIHZpcnR1YWwgUnRwUnRjcCogR2V0UnRwUnRjcCgpIGNvbnN0OwotCi0g
IHZpcnR1YWwgdm9pZCBPblR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0IHBhY2tl
dF9sb3NzX3JhdGUpOwotICB2aXJ0dWFsIHZvaWQgT25SZWNvdmVyYWJsZVVwbGlua1BhY2tldExv
c3NSYXRlKAotICAgICAgZmxvYXQgcmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0ZSk7Ci0gIHZp
cnR1YWwgdm9pZCBTdGFydFNlbmQoKTsKLSAgdmlydHVhbCB2b2lkIFN0b3BTZW5kKCk7Ci0KLSAg
Ly8gTmVlZGVkIGJ5IENoYW5uZWxSZWNlaXZlUHJveHk6OkFzc29jaWF0ZVNlbmRDaGFubmVsLgot
ICB2aXJ0dWFsIENoYW5uZWxTZW5kKiBHZXRDaGFubmVsKCkgY29uc3Q7Ci0KLSAgLy8gRTJFRSBD
dXN0b20gQXVkaW8gRnJhbWUgRW5jcnlwdGlvbiAoT3B0aW9uYWwpCi0gIHZpcnR1YWwgdm9pZCBT
ZXRGcmFtZUVuY3J5cHRvcihGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9y
KTsKLQotIHByaXZhdGU6Ci0gIC8vIFRocmVhZCBjaGVja2VycyBkb2N1bWVudCBhbmQgbG9jayB1
c2FnZSBvZiBzb21lIG1ldGhvZHMgb24gdm9lOjpDaGFubmVsIHRvCi0gIC8vIHNwZWNpZmljIHRo
cmVhZHMgd2Uga25vdyBhYm91dC4gVGhlIGdvYWwgaXMgdG8gZXZlbnR1YWxseSBzcGxpdCB1cAot
ICAvLyB2b2U6OkNoYW5uZWwgaW50byBwYXJ0cyB3aXRoIHNpbmdsZS10aHJlYWRlZCBzZW1hbnRp
Y3MsIGFuZCB0aGVyZWJ5IHJlZHVjZQotICAvLyB0aGUgbmVlZCBmb3IgbG9ja3MuCi0gIHJ0Yzo6
VGhyZWFkQ2hlY2tlciB3b3JrZXJfdGhyZWFkX2NoZWNrZXJfOwotICBydGM6OlRocmVhZENoZWNr
ZXIgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfOwotICAvLyBNZXRob2RzIGFjY2Vzc2Vk
IGZyb20gYXVkaW8gYW5kIHZpZGVvIHRocmVhZHMgYXJlIGNoZWNrZWQgZm9yIHNlcXVlbnRpYWwt
Ci0gIC8vIG9ubHkgYWNjZXNzLiBXZSBkb24ndCBuZWNlc3NhcmlseSBvd24gYW5kIGNvbnRyb2wg
dGhlc2UgdGhyZWFkcywgc28gdGhyZWFkCi0gIC8vIGNoZWNrZXJzIGNhbm5vdCBiZSB1c2VkLiBF
LmcuIENocm9taXVtIG1heSB0cmFuc2ZlciAib3duZXJzaGlwIiBmcm9tIG9uZQotICAvLyBhdWRp
byB0aHJlYWQgdG8gYW5vdGhlciwgYnV0IGFjY2VzcyBpcyBzdGlsbCBzZXF1ZW50aWFsLgotICBy
dGM6OlJhY2VDaGVja2VyIGF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfOwotICBydGM6OlJhY2VD
aGVja2VyIHZpZGVvX2NhcHR1cmVfdGhyZWFkX3JhY2VfY2hlY2tlcl87Ci0gIHN0ZDo6dW5pcXVl
X3B0cjxDaGFubmVsU2VuZD4gY2hhbm5lbF87Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTihDaGFubmVsU2VuZFByb3h5KTsKLX07Ci19ICAvLyBuYW1lc3BhY2Ugdm9lCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVVESU9fQ0hBTk5FTF9TRU5EX1BST1hZX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby9tb2NrX3ZvZV9jaGFubmVsX3Byb3h5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hdWRpby9tb2NrX3ZvZV9jaGFubmVsX3Byb3h5LmgKaW5kZXggOTEw
ODU4ZmUxMzBjYWM4ZDk0Zjg0Y2IwYzU5YjhiMWFmZjVlMmY2OC4uZWVlMjVjNWEyZDUzMmNiMjQ1
ZDk5Y2Y0ZGQ0ODczZTk3NDM5MjQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbW9ja192b2VfY2hhbm5lbF9wcm94eS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL21vY2tfdm9l
X2NoYW5uZWxfcHJveHkuaApAQCAtMTYsMTUgKzE2LDE2IEBACiAjaW5jbHVkZSA8c3RyaW5nPgog
I2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfcmVjZWl2ZV9wcm94
eS5oIgotI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfc2VuZF9wcm94eS5oIgorI2luY2x1ZGUgImFw
aS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9yLmgiCisjaW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9y
ZWNlaXZlLmgiCisjaW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9zZW5kLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5oIgogI2luY2x1ZGUgInRl
c3QvZ21vY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiAKLWNs
YXNzIE1vY2tDaGFubmVsUmVjZWl2ZVByb3h5IDogcHVibGljIHZvZTo6Q2hhbm5lbFJlY2VpdmVQ
cm94eSB7CitjbGFzcyBNb2NrQ2hhbm5lbFJlY2VpdmUgOiBwdWJsaWMgdm9lOjpDaGFubmVsUmVj
ZWl2ZUludGVyZmFjZSB7CiAgcHVibGljOgogICBNT0NLX01FVEhPRDEoU2V0TG9jYWxTU1JDLCB2
b2lkKHVpbnQzMl90IHNzcmMpKTsKICAgTU9DS19NRVRIT0QyKFNldE5BQ0tTdGF0dXMsIHZvaWQo
Ym9vbCBlbmFibGUsIGludCBtYXhfcGFja2V0cykpOwpAQCAtNDYsMTAgKzQ3LDEwIEBAIGNsYXNz
IE1vY2tDaGFubmVsUmVjZWl2ZVByb3h5IDogcHVibGljIHZvZTo6Q2hhbm5lbFJlY2VpdmVQcm94
eSB7CiAgICAgICAgICAgICAgICBBdWRpb01peGVyOjpTb3VyY2U6OkF1ZGlvRnJhbWVJbmZvKGlu
dCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQXVkaW9GcmFtZSogYXVkaW9fZnJhbWUpKTsKICAgTU9DS19DT05TVF9NRVRI
T0QwKFByZWZlcnJlZFNhbXBsZVJhdGUsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxKEFzc29jaWF0
ZVNlbmRDaGFubmVsLAotICAgICAgICAgICAgICAgdm9pZChjb25zdCB2b2U6OkNoYW5uZWxTZW5k
UHJveHkmIHNlbmRfY2hhbm5lbF9wcm94eSkpOwotICBNT0NLX01FVEhPRDAoRGlzYXNzb2NpYXRl
U2VuZENoYW5uZWwsIHZvaWQoKSk7CisgIE1PQ0tfTUVUSE9EMShTZXRBc3NvY2lhdGVkU2VuZENo
YW5uZWwsCisgICAgICAgICAgICAgICB2b2lkKGNvbnN0IHZvZTo6Q2hhbm5lbFNlbmRJbnRlcmZh
Y2UqIHNlbmRfY2hhbm5lbCkpOwogICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0UGxheW91dFRpbWVz
dGFtcCwgdWludDMyX3QoKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRTeW5jSW5mbywgYWJz
bDo6b3B0aW9uYWw8U3luY2FibGU6OkluZm8+KCkpOwogICBNT0NLX01FVEhPRDEoU2V0TWluaW11
bVBsYXlvdXREZWxheSwgdm9pZChpbnQgZGVsYXlfbXMpKTsKICAgTU9DS19DT05TVF9NRVRIT0Qx
KEdldFJlY0NvZGVjLCBib29sKENvZGVjSW5zdCogY29kZWNfaW5zdCkpOwogICBNT0NLX01FVEhP
RDEoU2V0UmVjZWl2ZUNvZGVjcywKQEAgLTU5LDcgKzYwLDcgQEAgY2xhc3MgTW9ja0NoYW5uZWxS
ZWNlaXZlUHJveHkgOiBwdWJsaWMgdm9lOjpDaGFubmVsUmVjZWl2ZVByb3h5IHsKICAgTU9DS19N
RVRIT0QwKFN0b3BQbGF5b3V0LCB2b2lkKCkpOwogfTsKIAotY2xhc3MgTW9ja0NoYW5uZWxTZW5k
UHJveHkgOiBwdWJsaWMgdm9lOjpDaGFubmVsU2VuZFByb3h5IHsKK2NsYXNzIE1vY2tDaGFubmVs
U2VuZCA6IHB1YmxpYyB2b2U6OkNoYW5uZWxTZW5kSW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIC8v
IEdNb2NrIGRvZXNuJ3QgbGlrZSBtb3ZlLW9ubHkgdHlwZXMsIGxpa2Ugc3RkOjp1bmlxdWVfcHRy
LgogICB2aXJ0dWFsIGJvb2wgU2V0RW5jb2RlcihpbnQgcGF5bG9hZF90eXBlLApAQCAtNzEsMTAg
KzcyLDEwIEBAIGNsYXNzIE1vY2tDaGFubmVsU2VuZFByb3h5IDogcHVibGljIHZvZTo6Q2hhbm5l
bFNlbmRQcm94eSB7CiAgIE1PQ0tfTUVUSE9EMSgKICAgICAgIE1vZGlmeUVuY29kZXIsCiAgICAg
ICB2b2lkKHJ0Yzo6RnVuY3Rpb25WaWV3PHZvaWQoc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rl
cj4qKT4gbW9kaWZpZXIpKTsKLSAgTU9DS19NRVRIT0QxKFNldFJUQ1BTdGF0dXMsIHZvaWQoYm9v
bCBlbmFibGUpKTsKKyAgTU9DS19NRVRIT0QyKFNldE1pZCwgdm9pZChjb25zdCBzdGQ6OnN0cmlu
ZyYgbWlkLCBpbnQgZXh0ZW5zaW9uX2lkKSk7CiAgIE1PQ0tfTUVUSE9EMShTZXRMb2NhbFNTUkMs
IHZvaWQodWludDMyX3Qgc3NyYykpOwotICBNT0NLX01FVEhPRDEoU2V0UlRDUF9DTkFNRSwgdm9p
ZChjb25zdCBzdGQ6OnN0cmluZyYgY19uYW1lKSk7Ci0gIE1PQ0tfTUVUSE9EMihTZXROQUNLU3Rh
dHVzLCB2b2lkKGJvb2wgZW5hYmxlLCBpbnQgbWF4X3BhY2tldHMpKTsKKyAgTU9DS19NRVRIT0Qx
KFNldFJUQ1BfQ05BTUUsIHZvaWQoYWJzbDo6c3RyaW5nX3ZpZXcgY19uYW1lKSk7CisgIE1PQ0tf
TUVUSE9EMShTZXRFeHRtYXBBbGxvd01peGVkLCB2b2lkKGJvb2wgZXh0bWFwX2FsbG93X21peGVk
KSk7CiAgIE1PQ0tfTUVUSE9EMihTZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25TdGF0dXMsIHZv
aWQoYm9vbCBlbmFibGUsIGludCBpZCkpOwogICBNT0NLX01FVEhPRDEoRW5hYmxlU2VuZFRyYW5z
cG9ydFNlcXVlbmNlTnVtYmVyLCB2b2lkKGludCBpZCkpOwogICBNT0NLX01FVEhPRDIoUmVnaXN0
ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMsCkBAIC04Nyw5ICs4OCw4IEBAIGNsYXNz
IE1vY2tDaGFubmVsU2VuZFByb3h5IDogcHVibGljIHZvZTo6Q2hhbm5lbFNlbmRQcm94eSB7CiAg
IE1PQ0tfTUVUSE9EMihTZXRTZW5kVGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZSwKICAgICAgICAg
ICAgICAgIGJvb2woaW50IHBheWxvYWRfdHlwZSwgaW50IHBheWxvYWRfZnJlcXVlbmN5KSk7CiAg
IE1PQ0tfTUVUSE9EMihTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kLCBib29sKGludCBldmVudCwg
aW50IGR1cmF0aW9uX21zKSk7Ci0gIE1PQ0tfTUVUSE9EMihTZXRCaXRyYXRlLCB2b2lkKGludCBi
aXRyYXRlX2JwcywgaW50NjRfdCBwcm9iaW5nX2ludGVydmFsX21zKSk7CisgIE1PQ0tfTUVUSE9E
MShPbkJpdHJhdGVBbGxvY2F0aW9uLCB2b2lkKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0
ZSkpOwogICBNT0NLX01FVEhPRDEoU2V0SW5wdXRNdXRlLCB2b2lkKGJvb2wgbXV0ZWQpKTsKLSAg
TU9DS19NRVRIT0QxKFJlZ2lzdGVyVHJhbnNwb3J0LCB2b2lkKFRyYW5zcG9ydCogdHJhbnNwb3J0
KSk7CiAgIE1PQ0tfTUVUSE9EMihSZWNlaXZlZFJUQ1BQYWNrZXQsIGJvb2woY29uc3QgdWludDhf
dCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKSk7CiAgIC8vIEdNb2NrIGRvZXNuJ3QgbGlrZSBtb3Zl
LW9ubHkgdHlwZXMsIGxpa2Ugc3RkOjp1bmlxdWVfcHRyLgogICB2aXJ0dWFsIHZvaWQgUHJvY2Vz
c0FuZEVuY29kZUF1ZGlvKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19mcmFtZSkg
ewpAQCAtOTcsMTUgKzk3LDE5IEBAIGNsYXNzIE1vY2tDaGFubmVsU2VuZFByb3h5IDogcHVibGlj
IHZvZTo6Q2hhbm5lbFNlbmRQcm94eSB7CiAgIH0KICAgTU9DS19NRVRIT0QxKFByb2Nlc3NBbmRF
bmNvZGVBdWRpb0Zvck1vY2ssCiAgICAgICAgICAgICAgICB2b2lkKHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0ZyYW1lPiogYXVkaW9fZnJhbWUpKTsKLSAgTU9DS19NRVRIT0QxKFNldFRyYW5zcG9ydE92
ZXJoZWFkLCB2b2lkKGludCB0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldCkpOworICBNT0NL
X01FVEhPRDEoU2V0VHJhbnNwb3J0T3ZlcmhlYWQsCisgICAgICAgICAgICAgICB2b2lkKHNpemVf
dCB0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldCkpOwogICBNT0NLX0NPTlNUX01FVEhPRDAo
R2V0UnRwUnRjcCwgUnRwUnRjcCooKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRCaXRyYXRl
LCBpbnQoKSk7CiAgIE1PQ0tfTUVUSE9EMShPblR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRl
LCB2b2lkKGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpKTsKICAgTU9DS19NRVRIT0QxKE9uUmVjb3Zl
cmFibGVVcGxpbmtQYWNrZXRMb3NzUmF0ZSwKICAgICAgICAgICAgICAgIHZvaWQoZmxvYXQgcmVj
b3ZlcmFibGVfcGFja2V0X2xvc3NfcmF0ZSkpOworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0UlRU
LCBpbnQ2NF90KCkpOwogICBNT0NLX01FVEhPRDAoU3RhcnRTZW5kLCB2b2lkKCkpOwogICBNT0NL
X01FVEhPRDAoU3RvcFNlbmQsIHZvaWQoKSk7Ci0gIE1PQ0tfTUVUSE9EMShTZXRGcmFtZUVuY3J5
cHRvciwKLSAgICAgICAgICAgICAgIHZvaWQoRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1l
X2VuY3J5cHRvcikpOworICBNT0NLX01FVEhPRDEoCisgICAgICBTZXRGcmFtZUVuY3J5cHRvciwK
KyAgICAgIHZvaWQocnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBm
cmFtZV9lbmNyeXB0b3IpKTsKIH07CiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9udWxsX2F1ZGlvX3BvbGxlci5jYwppbmRleCBj
MjJiM2Q4NzkxMTU4MTFjZTZkMGQxZDI3NGRiMWJmZDM3MThjMjdkLi5kMmIxMTk5ZWQ2ZGQyN2Q1
OGQzZDdlNDg2NzI4ZTQ5ZjNjMzE4YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9udWxsX2F1ZGlvX3BvbGxlci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9udWxsX2F1ZGlv
X3BvbGxlci5jYwpAQCAtOSw4ICs5LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgImF1ZGlvL251bGxf
YXVkaW9fcG9sbGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9sb2NhdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hdWRpby9udWxsX2F1ZGlvX3BvbGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIuaAppbmRleCBh
ZmI2ZWRiYWYxNjEzMmY3ODcwODhhY2M2ZjM2NmJkMWNiNjI0NzA4Li5mOTFlYjdkNmMwNzgyNDQ4
Y2M5YTdhNjk0M2I1NTQyYmYzYjdjMTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9udWxsX2F1ZGlvX3BvbGxlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL251bGxfYXVkaW9f
cG9sbGVyLmgKQEAgLTExLDggKzExLDExIEBACiAjaWZuZGVmIEFVRElPX05VTExfQVVESU9fUE9M
TEVSX0hfCiAjZGVmaW5lIEFVRElPX05VTExfQVVESU9fUE9MTEVSX0hfCiAKKyNpbmNsdWRlIDxz
dGRpbnQuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9f
ZGV2aWNlX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
cmVhZF9jaGVja2VyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9yZW1p
eF9yZXNhbXBsZS5jYwppbmRleCA5NzIyMmU5NDdhNGU2MmYzNDVjNzMwNGQ3YjY5MmFmOWMwZGE1
YjY0Li5iMTE1OGRhMjEzZjk2NmI0NDM0MGQ2MjIwZmM5ZTA0ZjY2MmE3ZWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9y
ZXNhbXBsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYwpAQCAtMTMsMTAgKzEzLDcgQEAKICNpbmNsdWRlICJh
cGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKICNpbmNsdWRlICJhdWRpby91dGlsaXR5L2F1ZGlvX2Zy
YW1lX29wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vcmVzYW1wbGVyL2luY2x1
ZGUvcHVzaF9yZXNhbXBsZXIuaCIKLSNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nl
c3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCi0jaW5jbHVkZSAiY29t
bW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogbmFtZXNwYWNlIHZvZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2J3ZV9pbnRlZ3JhdGlvbl90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
dGVzdC9hdWRpb19id2VfaW50ZWdyYXRpb25fdGVzdC5jYwppbmRleCA4ZWMyYTdjZjRhNTc0ZTE1
M2NhYTE0M2VlNjQ3ZjQxMzNmYzllZTkyLi45ZmE5NWIxN2I4ZTQ2ZDk0ZWViZDY0MWMzN2MwMjI2
MWNjZjgwZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2J3ZV9pbnRlZ3JhdGlvbl90ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9f
YndlX2ludGVncmF0aW9uX3Rlc3QuY2MKQEAgLTEyMyw4ICsxMjMsOCBAQCBjbGFzcyBOb0JhbmR3
aWR0aERyb3BBZnRlckR0eCA6IHB1YmxpYyBBdWRpb0J3ZVRlc3QgewogICAgIHJldHVybiB0ZXN0
OjpSZXNvdXJjZVBhdGgoInZvaWNlX2VuZ2luZS9hdWRpb19kdHgxNiIsICJ3YXYiKTsKICAgfQog
Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBHZXROZXR3b3JrUGlwZUNvbmZpZygp
IG92ZXJyaWRlIHsKLSAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgcGlwZV9jb25m
aWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgR2V0TmV0d29ya1BpcGVDb25maWco
KSBvdmVycmlkZSB7CisgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBwaXBlX2NvbmZp
ZzsKICAgICBwaXBlX2NvbmZpZy5saW5rX2NhcGFjaXR5X2ticHMgPSA1MDsKICAgICBwaXBlX2Nv
bmZpZy5xdWV1ZV9sZW5ndGhfcGFja2V0cyA9IDE1MDA7CiAgICAgcGlwZV9jb25maWcucXVldWVf
ZGVsYXlfbXMgPSAzMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2J3ZV9pbnRlZ3JhdGlvbl90ZXN0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlv
X2J3ZV9pbnRlZ3JhdGlvbl90ZXN0LmgKaW5kZXggYzcwYWQxYzkxYjkzZjc3MWI1ODBmNDYwYWZm
NjMxZTJhNmNkNmIxYS4uNGRlMmNhYjMxNjEzYmVjMzU5NjgxMTFhMTBkYzU1ZTNiOTk1YTdkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVk
aW8vdGVzdC9hdWRpb19id2VfaW50ZWdyYXRpb25fdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fYndlX2ludGVncmF0
aW9uX3Rlc3QuaApAQCAtMjcsNyArMjcsNyBAQCBjbGFzcyBBdWRpb0J3ZVRlc3QgOiBwdWJsaWMg
dGVzdDo6RW5kVG9FbmRUZXN0IHsKICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgc3RkOjpzdHJpbmcg
QXVkaW9JbnB1dEZpbGUoKSA9IDA7CiAKLSAgdmlydHVhbCBEZWZhdWx0TmV0d29ya1NpbXVsYXRp
b25Db25maWcgR2V0TmV0d29ya1BpcGVDb25maWcoKSA9IDA7CisgIHZpcnR1YWwgQnVpbHRJbk5l
dHdvcmtCZWhhdmlvckNvbmZpZyBHZXROZXR3b3JrUGlwZUNvbmZpZygpID0gMDsKIAogICBzaXpl
X3QgR2V0TnVtVmlkZW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIHNpemVfdCBHZXROdW1B
dWRpb1N0cmVhbXMoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fZW5kX3RvX2VuZF90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
dGVzdC9hdWRpb19lbmRfdG9fZW5kX3Rlc3QuY2MKaW5kZXggMDJhYmU3MzRiYmZlMWYyZWM2ODhi
NDAyY2ExMjJlMmU1ZDQ4ZDU5Ni4uNWUxODdhZDhmODk4MDkxMjkzNWFkNmEwYmZhOTBjYzA5YjMz
MmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXVkaW8vdGVzdC9hdWRpb19lbmRfdG9fZW5kX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19lbmRfdG9fZW5k
X3Rlc3QuY2MKQEAgLTI4LDggKzI4LDggQEAgY29uc3RleHByIGludCBrU2FtcGxlUmF0ZSA9IDQ4
MDAwOwogQXVkaW9FbmRUb0VuZFRlc3Q6OkF1ZGlvRW5kVG9FbmRUZXN0KCkKICAgICA6IEVuZFRv
RW5kVGVzdChDYWxsVGVzdDo6a0RlZmF1bHRUaW1lb3V0TXMpIHt9CiAKLURlZmF1bHROZXR3b3Jr
U2ltdWxhdGlvbkNvbmZpZyBBdWRpb0VuZFRvRW5kVGVzdDo6R2V0TmV0d29ya1BpcGVDb25maWco
KSBjb25zdCB7Ci0gIHJldHVybiBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKTsKK0J1
aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgQXVkaW9FbmRUb0VuZFRlc3Q6OkdldE5ldHdvcmtQ
aXBlQ29uZmlnKCkgY29uc3QgeworICByZXR1cm4gQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZp
ZygpOwogfQogCiBzaXplX3QgQXVkaW9FbmRUb0VuZFRlc3Q6OkdldE51bVZpZGVvU3RyZWFtcygp
IGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fZW5kX3RvX2VuZF90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2VuZF90b19lbmRf
dGVzdC5oCmluZGV4IDlkZGE4MzRkMjJiNGVkNmU1ZWUyYTBmMmY0ODcyM2NmNGMwMGMwMDIuLmJh
MWUwYzdkNmVmOGVlYzc3MGYzYmNkZDgxM2JmYjIyNzQ1YTQ4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fZW5k
X3RvX2VuZF90ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19lbmRfdG9fZW5kX3Rlc3QuaApAQCAtMjksNyArMjksNyBA
QCBjbGFzcyBBdWRpb0VuZFRvRW5kVGVzdCA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3Qgewog
ICBjb25zdCBBdWRpb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtKCkgY29uc3QgeyByZXR1cm4gc2Vu
ZF9zdHJlYW1fOyB9CiAgIGNvbnN0IEF1ZGlvUmVjZWl2ZVN0cmVhbSogcmVjZWl2ZV9zdHJlYW0o
KSBjb25zdCB7IHJldHVybiByZWNlaXZlX3N0cmVhbV87IH0KIAotICB2aXJ0dWFsIERlZmF1bHRO
ZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBHZXROZXR3b3JrUGlwZUNvbmZpZygpIGNvbnN0OworICB2
aXJ0dWFsIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgR2V0TmV0d29ya1BpcGVDb25maWco
KSBjb25zdDsKIAogICBzaXplX3QgR2V0TnVtVmlkZW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgIHNpemVfdCBHZXROdW1BdWRpb1N0cmVhbXMoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3Qv
YXVkaW9fc3RhdHNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fc3RhdHNfdGVzdC5jYwppbmRleCAwMTk2NzllMDc4MmY4
NmIwYjc2YTRiOTAzMWVlYmM3OTNhM2UyMzQ5Li41NTZhMTZkZmE2ZDUwNTYzM2Y5OTcyZDA5NjUy
YmNjMTdmMDE5YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX3N0YXRzX3Rlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19zdGF0c190
ZXN0LmNjCkBAIC0zMiw4ICszMiw4IEBAIGNsYXNzIE5vTG9zc1Rlc3QgOiBwdWJsaWMgQXVkaW9F
bmRUb0VuZFRlc3QgewogCiAgIE5vTG9zc1Rlc3QoKSA9IGRlZmF1bHQ7CiAKLSAgRGVmYXVsdE5l
dHdvcmtTaW11bGF0aW9uQ29uZmlnIEdldE5ldHdvcmtQaXBlQ29uZmlnKCkgY29uc3Qgb3ZlcnJp
ZGUgewotICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBwaXBlX2NvbmZpZzsKKyAg
QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBHZXROZXR3b3JrUGlwZUNvbmZpZygpIGNvbnN0
IG92ZXJyaWRlIHsKKyAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIHBpcGVfY29uZmln
OwogICAgIHBpcGVfY29uZmlnLnF1ZXVlX2RlbGF5X21zID0ga1J0dE1zIC8gMjsKICAgICByZXR1
cm4gcGlwZV9jb25maWc7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvbG93X2JhbmR3aWR0aF9hdWRpb190ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9s
b3dfYmFuZHdpZHRoX2F1ZGlvX3Rlc3QuY2MKaW5kZXggMTZhM2I5MWU4NzdjZGQ4OGQ2ZjkzZjhl
ZDZmMjJiOWJjOTJhYjQzNy4uODU3Zjk4M2Q1Nzc3NWExYTQ3YjEwZjgwOTgwZDY4YTllOGRlMjVk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXVkaW8vdGVzdC9sb3dfYmFuZHdpZHRoX2F1ZGlvX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9sb3dfYmFuZHdpZHRoX2F1
ZGlvX3Rlc3QuY2MKQEAgLTE0LDE0ICsxNCwxNSBAQAogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVy
cy9pbmNsdWRlL3NsZWVwLmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMu
aCIKIAotREVGSU5FX2ludChzYW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICAgMTYwMDAsCi0gICAg
ICAgICAgICJTYW1wbGUgcmF0ZSAoSHopIG9mIHRoZSBwcm9kdWNlZCBhdWRpbyBmaWxlcy4iKTsK
K1dFQlJUQ19ERUZJTkVfaW50KHNhbXBsZV9yYXRlX2h6LAorICAgICAgICAgICAgICAgICAgMTYw
MDAsCisgICAgICAgICAgICAgICAgICAiU2FtcGxlIHJhdGUgKEh6KSBvZiB0aGUgcHJvZHVjZWQg
YXVkaW8gZmlsZXMuIik7CiAKLURFRklORV9ib29sKHF1aWNrLAotICAgICAgICAgICAgZmFsc2Us
Ci0gICAgICAgICAgICAiRG9uJ3QgZG8gdGhlIGZ1bGwgYXVkaW8gcmVjb3JkaW5nLiAiCi0gICAg
ICAgICAgICAiVXNlZCB0byBxdWlja2x5IGNoZWNrIHRoYXQgdGhlIHRlc3QgcnVucyB3aXRob3V0
IGNyYXNoaW5nLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHF1aWNrLAorICAgIGZhbHNl
LAorICAgICJEb24ndCBkbyB0aGUgZnVsbCBhdWRpbyByZWNvcmRpbmcuICIKKyAgICAiVXNlZCB0
byBxdWlja2x5IGNoZWNrIHRoYXQgdGhlIHRlc3QgcnVucyB3aXRob3V0IGNyYXNoaW5nLiIpOwog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKQEAgLTg5LDggKzkwLDggQEAg
Y2xhc3MgTW9iaWxlMkdOZXR3b3JrVGVzdCA6IHB1YmxpYyBBdWRpb1F1YWxpdHlUZXN0IHsKICAg
ICAgICAgIHt7Im1heGF2ZXJhZ2ViaXRyYXRlIiwgIjYwMDAifSwgeyJwdGltZSIsICI2MCJ9LCB7
InN0ZXJlbyIsICIxIn19fSk7CiAgIH0KIAotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25m
aWcgR2V0TmV0d29ya1BpcGVDb25maWcoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgRGVmYXVsdE5l
dHdvcmtTaW11bGF0aW9uQ29uZmlnIHBpcGVfY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2
aW9yQ29uZmlnIEdldE5ldHdvcmtQaXBlQ29uZmlnKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgIEJ1
aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgcGlwZV9jb25maWc7CiAgICAgcGlwZV9jb25maWcu
bGlua19jYXBhY2l0eV9rYnBzID0gMTI7CiAgICAgcGlwZV9jb25maWcucXVldWVfbGVuZ3RoX3Bh
Y2tldHMgPSAxNTAwOwogICAgIHBpcGVfY29uZmlnLnF1ZXVlX2RlbGF5X21zID0gNDAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
dGVzdC9tZWRpYV90cmFuc3BvcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvbWVkaWFfdHJhbnNwb3J0X3Rlc3QuY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjRhZjRhMDg4MTkxMzhiZjY5NjkyNjEzM2YwNGUxZWRlZTNhNjAyMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlv
L3Rlc3QvbWVkaWFfdHJhbnNwb3J0X3Rlc3QuY2MKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVy
X2ZhY3RvcnlfdGVtcGxhdGUuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Vu
Y29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3Mvb3B1
cy9hdWRpb19kZWNvZGVyX29wdXMuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL29wdXMv
YXVkaW9fZW5jb2Rlcl9vcHVzLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvbG9vcGJhY2tfbWVkaWFf
dHJhbnNwb3J0LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja19hdWRpb19taXhlci5oIgorI2lu
Y2x1ZGUgImF1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmgiCisjaW5jbHVkZSAiYXVkaW8vYXVk
aW9fc2VuZF9zdHJlYW0uaCIKKyNpbmNsdWRlICJjYWxsL3Rlc3QvbW9ja19iaXRyYXRlX2FsbG9j
YXRvci5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS90ZXN0X2F1ZGlvX2Rldmlj
ZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fbWl4ZXIvYXVkaW9fbWl4ZXJfaW1wbC5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL21vY2tfYXVkaW9fcHJv
Y2Vzc2luZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3NfdGhy
ZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL3RpbWV1dGlscy5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0
L21vY2tfdHJhbnNwb3J0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3Qg
eworCituYW1lc3BhY2UgeworY29uc3RleHByIGludCBrUGF5bG9hZFR5cGVPcHVzID0gMTc7Citj
b25zdGV4cHIgaW50IGtTYW1wbGluZ0ZyZXF1ZW5jeSA9IDQ4MDAwOworY29uc3RleHByIGludCBr
TnVtQ2hhbm5lbHMgPSAyOworY29uc3RleHByIGludCBrV2FudGVkU2FtcGxlcyA9IDMwMDA7Citj
b25zdGV4cHIgaW50IGtUZXN0VGltZW91dE1zID0gMiAqIHJ0Yzo6a051bU1pbGxpc2Vjc1BlclNl
YzsKKworY2xhc3MgVGVzdFJlbmRlcmVyIDogcHVibGljIFRlc3RBdWRpb0RldmljZU1vZHVsZTo6
UmVuZGVyZXIgeworIHB1YmxpYzoKKyAgVGVzdFJlbmRlcmVyKGludCBzYW1wbGluZ19mcmVxdWVu
Y3ksIGludCBudW1fY2hhbm5lbHMsIHNpemVfdCB3YW50ZWRfc2FtcGxlcykKKyAgICAgIDogc2Ft
cGxpbmdfZnJlcXVlbmN5XyhzYW1wbGluZ19mcmVxdWVuY3kpLAorICAgICAgICBudW1fY2hhbm5l
bHNfKG51bV9jaGFubmVscyksCisgICAgICAgIHdhbnRlZF9zYW1wbGVzXyh3YW50ZWRfc2FtcGxl
cykge30KKyAgflRlc3RSZW5kZXJlcigpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworICBpbnQgU2Ft
cGxpbmdGcmVxdWVuY3koKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzYW1wbGluZ19mcmVxdWVu
Y3lfOyB9CisgIGludCBOdW1DaGFubmVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bV9j
aGFubmVsc187IH0KKworICBib29sIFJlbmRlcihydGM6OkFycmF5Vmlldzxjb25zdCBpbnQxNl90
PiBkYXRhKSBvdmVycmlkZSB7CisgICAgaWYgKGRhdGEuc2l6ZSgpID49IHdhbnRlZF9zYW1wbGVz
XykgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICB3YW50ZWRfc2FtcGxlc18gLT0g
ZGF0YS5zaXplKCk7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0
IGludCBzYW1wbGluZ19mcmVxdWVuY3lfOworICBjb25zdCBpbnQgbnVtX2NoYW5uZWxzXzsKKyAg
c2l6ZV90IHdhbnRlZF9zYW1wbGVzXzsKK307CisKK30gIC8vIG5hbWVzcGFjZQorCitURVNUKEF1
ZGlvV2l0aE1lZGlhVHJhbnNwb3J0LCBEZWxpdmVyc0F1ZGlvKSB7CisgIHN0ZDo6dW5pcXVlX3B0
cjxydGM6OlRocmVhZD4gdHJhbnNwb3J0X3RocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsK
KyAgdHJhbnNwb3J0X3RocmVhZC0+U3RhcnQoKTsKKyAgTWVkaWFUcmFuc3BvcnRQYWlyIHRyYW5z
cG9ydF9wYWlyKHRyYW5zcG9ydF90aHJlYWQuZ2V0KCkpOworICBNb2NrVHJhbnNwb3J0IHJ0Y3Bf
c2VuZF90cmFuc3BvcnQ7CisgIE1vY2tUcmFuc3BvcnQgc2VuZF90cmFuc3BvcnQ7CisgIHN0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudExvZz4gbnVsbF9ldmVudF9sb2cgPSBSdGNFdmVudExvZzo6Q3Jl
YXRlTnVsbCgpOworICBNb2NrQml0cmF0ZUFsbG9jYXRvciBiaXRyYXRlX2FsbG9jYXRvcjsKKwor
ICBydGM6OnNjb3BlZF9yZWZwdHI8VGVzdEF1ZGlvRGV2aWNlTW9kdWxlPiBhdWRpb19kZXZpY2Ug
PQorICAgICAgVGVzdEF1ZGlvRGV2aWNlTW9kdWxlOjpDcmVhdGVUZXN0QXVkaW9EZXZpY2VNb2R1
bGUoCisgICAgICAgICAgVGVzdEF1ZGlvRGV2aWNlTW9kdWxlOjpDcmVhdGVQdWxzZWROb2lzZUNh
cHR1cmVyKAorICAgICAgICAgICAgICAvKiBtYXhfYW1wbGl0dWRlPSAqLyAxMDAwMCwga1NhbXBs
aW5nRnJlcXVlbmN5LCBrTnVtQ2hhbm5lbHMpLAorICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PFRlc3RSZW5kZXJlcj4oa1NhbXBsaW5nRnJlcXVlbmN5LCBrTnVtQ2hhbm5lbHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrV2FudGVkU2FtcGxlcykpOworCisg
IEF1ZGlvU3RhdGU6OkNvbmZpZyBhdWRpb19jb25maWc7CisgIGF1ZGlvX2NvbmZpZy5hdWRpb19t
aXhlciA9IEF1ZGlvTWl4ZXJJbXBsOjpDcmVhdGUoKTsKKyAgLy8gVE9ETyhuaXNzZSk6IElzIGEg
bW9jayBBdWRpb1Byb2Nlc3NpbmcgZW5vdWdoPworICBhdWRpb19jb25maWcuYXVkaW9fcHJvY2Vz
c2luZyA9CisgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE1vY2tBdWRpb1Byb2Nlc3Np
bmc+KCk7CisgIGF1ZGlvX2NvbmZpZy5hdWRpb19kZXZpY2VfbW9kdWxlID0gYXVkaW9fZGV2aWNl
OworICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9TdGF0ZT4gYXVkaW9fc3RhdGUgPSBBdWRpb1N0
YXRlOjpDcmVhdGUoYXVkaW9fY29uZmlnKTsKKworICAvLyBUT0RPKG5pc3NlKTogVXNlIHNvbWUg
bG9zc2xlc3MgY29kZWM/CisgIGNvbnN0IFNkcEF1ZGlvRm9ybWF0IGF1ZGlvX2Zvcm1hdCgib3B1
cyIsIGtTYW1wbGluZ0ZyZXF1ZW5jeSwga051bUNoYW5uZWxzKTsKKworICAvLyBTZXR1cCByZWNl
aXZlIHN0cmVhbTsKKyAgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyByZWNlaXZl
X2NvbmZpZzsKKyAgLy8gVE9ETyhuaXNzZSk6IFVwZGF0ZSBBdWRpb1JlY2VpdmVTdHJlYW0gdG8g
bm90IHJlcXVpcmUgcnRjcF9zZW5kX3RyYW5zcG9ydAorICAvLyB3aGVuIGEgTWVkaWFUcmFuc3Bv
cnQgaXMgcHJvdmlkZWQuCisgIHJlY2VpdmVfY29uZmlnLnJ0Y3Bfc2VuZF90cmFuc3BvcnQgPSAm
cnRjcF9zZW5kX3RyYW5zcG9ydDsKKyAgcmVjZWl2ZV9jb25maWcubWVkaWFfdHJhbnNwb3J0ID0g
dHJhbnNwb3J0X3BhaXIuZmlyc3QoKTsKKyAgcmVjZWl2ZV9jb25maWcuZGVjb2Rlcl9tYXAuZW1w
bGFjZShrUGF5bG9hZFR5cGVPcHVzLCBhdWRpb19mb3JtYXQpOworICByZWNlaXZlX2NvbmZpZy5k
ZWNvZGVyX2ZhY3RvcnkgPQorICAgICAgQ3JlYXRlQXVkaW9EZWNvZGVyRmFjdG9yeTxBdWRpb0Rl
Y29kZXJPcHVzPigpOworCisgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyZWFkPiByZWNlaXZl
X3Byb2Nlc3NfdGhyZWFkID0KKyAgICAgIFByb2Nlc3NUaHJlYWQ6OkNyZWF0ZSgiYXVkaW8gcmVj
diB0aHJlYWQiKTsKKworICB3ZWJydGM6OmludGVybmFsOjpBdWRpb1JlY2VpdmVTdHJlYW0gcmVj
ZWl2ZV9zdHJlYW0oCisgICAgICAvKnJ0cF9zdHJlYW1fcmVjZWl2ZXJfY29udHJvbGxlcj0qL251
bGxwdHIsCisgICAgICAvKnBhY2tldF9yb3V0ZXI9Ki9udWxscHRyLCByZWNlaXZlX3Byb2Nlc3Nf
dGhyZWFkLmdldCgpLCByZWNlaXZlX2NvbmZpZywKKyAgICAgIGF1ZGlvX3N0YXRlLCBudWxsX2V2
ZW50X2xvZy5nZXQoKSk7CisKKyAgLy8gVE9ETyhuaXNzZSk6IFVwZGF0ZSBBdWRpb1NlbmRTdHJl
YW0gdG8gbm90IHJlcXVpcmUgc2VuZF90cmFuc3BvcnQgd2hlbiBhCisgIC8vIE1lZGlhVHJhbnNw
b3J0IGlzIHByb3ZpZGVkLgorICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBzZW5kX2NvbmZpZygm
c2VuZF90cmFuc3BvcnQsIHRyYW5zcG9ydF9wYWlyLnNlY29uZCgpKTsKKyAgc2VuZF9jb25maWcu
c2VuZF9jb2RlY19zcGVjID0KKyAgICAgIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjpTZW5kQ29k
ZWNTcGVjKGtQYXlsb2FkVHlwZU9wdXMsIGF1ZGlvX2Zvcm1hdCk7CisgIHNlbmRfY29uZmlnLmVu
Y29kZXJfZmFjdG9yeSA9IENyZWF0ZUF1ZGlvRW5jb2RlckZhY3Rvcnk8QXVkaW9FbmNvZGVyT3B1
cz4oKTsKKyAgcnRjOjpUYXNrUXVldWUgc2VuZF90cSgiYXVkaW8gc2VuZCBxdWV1ZSIpOworICBz
dGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1RocmVhZD4gc2VuZF9wcm9jZXNzX3RocmVhZCA9CisgICAg
ICBQcm9jZXNzVGhyZWFkOjpDcmVhdGUoImF1ZGlvIHNlbmQgdGhyZWFkIik7CisgIHdlYnJ0Yzo6
aW50ZXJuYWw6OkF1ZGlvU2VuZFN0cmVhbSBzZW5kX3N0cmVhbSgKKyAgICAgIHNlbmRfY29uZmln
LCBhdWRpb19zdGF0ZSwgJnNlbmRfdHEsIHNlbmRfcHJvY2Vzc190aHJlYWQuZ2V0KCksCisgICAg
ICAvKnRyYW5zcG9ydD0qL251bGxwdHIsICZiaXRyYXRlX2FsbG9jYXRvciwgbnVsbF9ldmVudF9s
b2cuZ2V0KCksCisgICAgICAvKnJ0Y3BfcnR0X3N0YXRzPSovbnVsbHB0ciwgYWJzbDo6b3B0aW9u
YWw8UnRwU3RhdGU+KCkpOworCisgIGF1ZGlvX2RldmljZS0+SW5pdCgpOyAgLy8gU3RhcnRzIHRo
cmVhZC4KKyAgYXVkaW9fZGV2aWNlLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soYXVkaW9fc3RhdGUt
PmF1ZGlvX3RyYW5zcG9ydCgpKTsKKworICByZWNlaXZlX3N0cmVhbS5TdGFydCgpOworICBzZW5k
X3N0cmVhbS5TdGFydCgpOworICBhdWRpb19kZXZpY2UtPlN0YXJ0UGxheW91dCgpOworICBhdWRp
b19kZXZpY2UtPlN0YXJ0UmVjb3JkaW5nKCk7CisKKyAgRVhQRUNUX1RSVUUoYXVkaW9fZGV2aWNl
LT5XYWl0Rm9yUGxheW91dEVuZChrVGVzdFRpbWVvdXRNcykpOworCisgIGF1ZGlvX2RldmljZS0+
U3RvcFJlY29yZGluZygpOworICBhdWRpb19kZXZpY2UtPlN0b3BQbGF5b3V0KCk7CisgIHJlY2Vp
dmVfc3RyZWFtLlN0b3AoKTsKKyAgc2VuZF9zdHJlYW0uU3RvcCgpOworfQorCit9ICAvLyBuYW1l
c3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGltZV9pbnRlcnZhbC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3RpbWVfaW50
ZXJ2YWwuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMTAzNDA4YTNhMjQ2N2U1
YTBhMDJmODhlMzkwZDc0ODEzYzZjMWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXVkaW8vdGltZV9pbnRlcnZhbC5jYworKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8q
Ci0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAot
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAiYXVkaW8vdGltZV9pbnRlcnZhbC5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGls
cy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotVGltZUludGVydmFsOjpUaW1lSW50ZXJ2YWwo
KSA9IGRlZmF1bHQ7Ci1UaW1lSW50ZXJ2YWw6On5UaW1lSW50ZXJ2YWwoKSA9IGRlZmF1bHQ7Ci0K
LXZvaWQgVGltZUludGVydmFsOjpFeHRlbmQoKSB7Ci0gIEV4dGVuZChydGM6OlRpbWVNaWxsaXMo
KSk7Ci19Ci0KLXZvaWQgVGltZUludGVydmFsOjpFeHRlbmQoaW50NjRfdCB0aW1lKSB7Ci0gIGlm
ICghaW50ZXJ2YWxfKSB7Ci0gICAgaW50ZXJ2YWxfLmVtcGxhY2UodGltZSwgdGltZSk7Ci0gIH0g
ZWxzZSB7Ci0gICAgaWYgKHRpbWUgPCBpbnRlcnZhbF8tPmZpcnN0KSB7Ci0gICAgICBpbnRlcnZh
bF8tPmZpcnN0ID0gdGltZTsKLSAgICB9Ci0gICAgaWYgKHRpbWUgPiBpbnRlcnZhbF8tPmxhc3Qp
IHsKLSAgICAgIGludGVydmFsXy0+bGFzdCA9IHRpbWU7Ci0gICAgfQotICB9Ci19Ci0KLXZvaWQg
VGltZUludGVydmFsOjpFeHRlbmQoY29uc3QgVGltZUludGVydmFsJiBvdGhlcl9pbnRlcnZhbCkg
ewotICBpZiAoIW90aGVyX2ludGVydmFsLkVtcHR5KCkpIHsKLSAgICBFeHRlbmQob3RoZXJfaW50
ZXJ2YWwuaW50ZXJ2YWxfLT5maXJzdCk7Ci0gICAgRXh0ZW5kKG90aGVyX2ludGVydmFsLmludGVy
dmFsXy0+bGFzdCk7Ci0gIH0KLX0KLQotYm9vbCBUaW1lSW50ZXJ2YWw6OkVtcHR5KCkgY29uc3Qg
ewotICByZXR1cm4gIWludGVydmFsXzsKLX0KLQotaW50NjRfdCBUaW1lSW50ZXJ2YWw6Okxlbmd0
aCgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyhpbnRlcnZhbF8pOwotICByZXR1cm4gaW50ZXJ2YWxf
LT5sYXN0IC0gaW50ZXJ2YWxfLT5maXJzdDsKLX0KLQotVGltZUludGVydmFsOjpJbnRlcnZhbDo6
SW50ZXJ2YWwoaW50NjRfdCBmaXJzdCwgaW50NjRfdCBsYXN0KQotICAgIDogZmlyc3QoZmlyc3Qp
LCBsYXN0KGxhc3QpIHt9Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3RpbWVfaW50ZXJ2
YWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rp
bWVfaW50ZXJ2YWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlmZTI5ZDlkNTY5
YTEwNTZkNTkxMzFkNTg3NmUyYzkwYjk2ZDQ5OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hdWRpby90aW1lX2ludGVydmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBBVURJT19USU1FX0lOVEVSVkFMX0hf
Ci0jZGVmaW5lIEFVRElPX1RJTUVfSU5URVJWQUxfSF8KLQotI2luY2x1ZGUgPHN0ZGludC5oPgot
Ci0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsK
LQotLy8gVGhpcyBjbGFzcyBsb2dzIHRoZSBmaXJzdCBhbmQgbGFzdCB0aW1lIGl0cyBFeHRlbmQo
KSBmdW5jdGlvbiBpcyBjYWxsZWQuCi0vLwotLy8gVGhpcyBjbGFzcyBpcyBub3QgdGhyZWFkLXNh
ZmU7IEV4dGVuZCgpIGNhbGxzIHNob3VsZCBvbmx5IGJlIG1hZGUgYnkgYQotLy8gc2luZ2xlIHRo
cmVhZCBhdCBhIHRpbWUsIHN1Y2ggYXMgd2l0aGluIGEgbG9jayBvciBkZXN0cnVjdG9yLgotLy8K
LS8vIEV4YW1wbGUgdXNhZ2U6Ci0vLyAgIC8vIGxldCB4IDwgeSA8IHogPCB1IDwgdgotLy8gICBy
dGM6OlRpbWVJbnRlcnZhbCBpbnRlcnZhbDsKLS8vICAgLi4uICAvLyAgIGludGVydmFsLkV4dGVu
ZCgpOyAvLyBhdCB0aW1lIHgKLS8vICAgLi4uCi0vLyAgIGludGVydmFsLkV4dGVuZCgpOyAvLyBh
dCB0aW1lIHkKLS8vICAgLi4uCi0vLyAgIGludGVydmFsLkV4dGVuZCgpOyAvLyBhdCB0aW1lIHUK
LS8vICAgLi4uCi0vLyAgIGludGVydmFsLkV4dGVuZCh6KTsgLy8gYXQgdGltZSB2Ci0vLyAgIC4u
LgotLy8gICBpZiAoIWludGVydmFsLkVtcHR5KCkpIHsKLS8vICAgICBpbnQ2NF90IGFjdGl2ZV90
aW1lID0gaW50ZXJ2YWwuTGVuZ3RoKCk7IC8vIHJldHVybnMgKHUgLSB4KQotLy8gICB9Ci1jbGFz
cyBUaW1lSW50ZXJ2YWwgewotIHB1YmxpYzoKLSAgVGltZUludGVydmFsKCk7Ci0gIH5UaW1lSW50
ZXJ2YWwoKTsKLSAgLy8gRXh0ZW5kIHRoZSBpbnRlcnZhbCB3aXRoIHRoZSBjdXJyZW50IHRpbWUu
Ci0gIHZvaWQgRXh0ZW5kKCk7Ci0gIC8vIEV4dGVuZCB0aGUgaW50ZXJ2YWwgd2l0aCBhIGdpdmVu
IHRpbWUuCi0gIHZvaWQgRXh0ZW5kKGludDY0X3QgdGltZSk7Ci0gIC8vIFRha2UgdGhlIGNvbnZl
eCBodWxsIHdpdGggYW5vdGhlciBpbnRlcnZhbC4KLSAgdm9pZCBFeHRlbmQoY29uc3QgVGltZUlu
dGVydmFsJiBvdGhlcl9pbnRlcnZhbCk7Ci0gIC8vIFRydWUgaWZmIEV4dGVuZCBoYXMgbmV2ZXIg
YmVlbiBjYWxsZWQuCi0gIGJvb2wgRW1wdHkoKSBjb25zdDsKLSAgLy8gUmV0dXJucyB0aGUgdGlt
ZSBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgdGljaywgaW4gbWlsbGlzZWNvbmRzLgot
ICBpbnQ2NF90IExlbmd0aCgpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgc3RydWN0IEludGVydmFs
IHsKLSAgICBJbnRlcnZhbChpbnQ2NF90IGZpcnN0LCBpbnQ2NF90IGxhc3QpOwotCi0gICAgaW50
NjRfdCBmaXJzdCwgbGFzdDsKLSAgfTsKLSAgYWJzbDo6b3B0aW9uYWw8SW50ZXJ2YWw+IGludGVy
dmFsXzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBBVURJT19U
SU1FX0lOVEVSVkFMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby90aW1lX2ludGVydmFsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGltZV9pbnRlcnZhbF91bml0
dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVmZjZlMzYzZGEyMTYxZGJk
ZWU2ODA3MTk4NzJmYjI5NjUyNmU5Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby90aW1lX2ludGVydmFsX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgImF1ZGlvL3RpbWVfaW50ZXJ2YWwu
aCIKLSNpbmNsdWRlICJhcGkvdW5pdHMvdGltZV9kZWx0YS5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2Zha2VjbG9jay5oIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKLQotbmFtZXNwYWNlIHdlYnJ0
YyB7Ci0KLVRFU1QoVGltZUludGVydmFsVGVzdCwgVGltZUluTXMpIHsKLSAgcnRjOjpTY29wZWRG
YWtlQ2xvY2sgZmFrZV9jbG9jazsKLSAgVGltZUludGVydmFsIGludGVydmFsOwotICBpbnRlcnZh
bC5FeHRlbmQoKTsKLSAgZmFrZV9jbG9jay5BZHZhbmNlVGltZShUaW1lRGVsdGE6Om1zKDEwMCkp
OwotICBpbnRlcnZhbC5FeHRlbmQoKTsKLSAgRVhQRUNUX0VRKGludGVydmFsLkxlbmd0aCgpLCAx
MDApOwotfQotCi1URVNUKFRpbWVJbnRlcnZhbFRlc3QsIEVtcHR5KSB7Ci0gIFRpbWVJbnRlcnZh
bCBpbnRlcnZhbDsKLSAgRVhQRUNUX1RSVUUoaW50ZXJ2YWwuRW1wdHkoKSk7Ci0gIGludGVydmFs
LkV4dGVuZCgpOwotICBFWFBFQ1RfRkFMU0UoaW50ZXJ2YWwuRW1wdHkoKSk7Ci0gIGludGVydmFs
LkV4dGVuZCgyMDApOwotICBFWFBFQ1RfRkFMU0UoaW50ZXJ2YWwuRW1wdHkoKSk7Ci19Ci0KLVRF
U1QoVGltZUludGVydmFsVGVzdCwgTW9ub3RvbmVJbmNyZWFzaW5nKSB7Ci0gIGNvbnN0IHNpemVf
dCBwb2ludF9jb3VudCA9IDc7Ci0gIGNvbnN0IGludDY0X3QgaW50ZXJ2YWxfcG9pbnRzW10gPSB7
MywgMiwgNSwgMCwgNCwgMSwgNn07Ci0gIGNvbnN0IGludDY0X3QgaW50ZXJ2YWxfZGlmZmVyZW5j
ZXNbXSA9IHswLCAxLCAzLCA1LCA1LCA1LCA2fTsKLSAgVGltZUludGVydmFsIGludGVydmFsOwot
ICBFWFBFQ1RfVFJVRShpbnRlcnZhbC5FbXB0eSgpKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwb2ludF9jb3VudDsgKytpKSB7Ci0gICAgaW50ZXJ2YWwuRXh0ZW5kKGludGVydmFsX3BvaW50
c1tpXSk7Ci0gICAgRVhQRUNUX0VRKGludGVydmFsX2RpZmZlcmVuY2VzW2ldLCBpbnRlcnZhbC5M
ZW5ndGgoKSk7Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdHJhbnNwb3J0
X2ZlZWRiYWNrX3BhY2tldF9sb3NzX3RyYWNrZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90cmFuc3BvcnRfZmVlZGJhY2tfcGFja2V0X2xvc3Nf
dHJhY2tlci5jYwppbmRleCBjN2FjZDc2NmM0NDg1OTI1YjRkYTdhOWMwMjgxMzdkMzVkZWY5ZmNh
Li5mNDE0MzliNDk0ZmNkMzhiM2EzYTE2NzViNjMzODZmYWZhYTRkZThiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90cmFuc3BvcnRf
ZmVlZGJhY2tfcGFja2V0X2xvc3NfdHJhY2tlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90cmFuc3BvcnRfZmVlZGJhY2tfcGFja2V0X2xv
c3NfdHJhY2tlci5jYwpAQCAtMTAsMTEgKzEwLDExIEBACiAKICNpbmNsdWRlICJhdWRpby90cmFu
c3BvcnRfZmVlZGJhY2tfcGFja2V0X2xvc3NfdHJhY2tlci5oIgogCisjaW5jbHVkZSA8aXRlcmF0
b3I+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RyYW5zcG9ydF9mZWVkYmFjay5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNz
L21vZF9vcHMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3V0aWxpdHkvQlVJTEQuZ24KaW5kZXggNzZjMDlh
NTFhMzgwZTFjODQ2NTVhZmEwOTZlODRlMTAxNGY3YzdlYi4uMTFhNjViZGQ0NjM4YWQ1YmZiZWY1
NmJmOWU5MzQxZjJlY2ZmM2I4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby91dGlsaXR5L0JVSUxELmduCkBA
IC0yMSw3ICsyMSw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZnJhbWVfb3BlcmF0aW9u
cyIpIHsKICAgXQogCiAgIGRlcHMgPSBbCi0gICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAg
ICIuLi8uLi9hcGkvYXVkaW86YXVkaW9fZnJhbWVfYXBpIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6
Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRp
bGl0eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmNj
CmluZGV4IGZiMWYzYjA3NzExYjc5ZGQ0YmMwNTliYzE5MjFkZjI4ZmVhMjZiZWQuLjFhODIzMmIw
MmIzYWU0YmVkOWIyZGNmMjFlOGMxMzYxZWIxY2Q4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3V0aWxpdHkvYXVkaW9fZnJhbWVf
b3BlcmF0aW9ucy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hdWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuY2MKQEAgLTEyLDYgKzEy
LDcgQEAKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNs
dWRlIDxjc3RkaW50PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9hdWRpb19m
cmFtZV9vcGVyYXRpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hdWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuaAppbmRleCA1OTkzNTIz
NTZmNjJmMzkzNDZkZjg5ZTAyOTdjNmMyMTE1MmE2NzE5Li5jMTQ0NWI2OTEwOThlMzk5MzRhZmZk
YWY5YTgzOWQxNDJlYWFkNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hdWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby91dGls
aXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuaApAQCAtMTIsNiArMTIsNyBAQAogI2RlZmluZSBB
VURJT19VVElMSVRZX0FVRElPX0ZSQU1FX09QRVJBVElPTlNfSF8KIAogI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2Zy
YW1lLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2J1aWxkX292ZXJyaWRlcy9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9idWlsZF9vdmVycmlkZXMvT1dORVJTCmluZGV4IDUyNGUyNjc2ZmY1
MmJmZWYzODkzMDAzNmFiZmVmODViMjYwNzJiZjQuLjU0NjVlZDhlNmE4NjllMWU3NDI0NzQwMjRk
Zjk5N2I0MGFjNTI1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2J1aWxkX292ZXJyaWRlcy9PV05FUlMKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYnVpbGRfb3ZlcnJpZGVzL09XTkVSUwpAQCAtMSAr
MSwyIEBACittYm9uYWRlaUB3ZWJydGMub3JnCiBwaG9nbHVuZEB3ZWJydGMub3JnCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9idWlsZF9vdmVy
cmlkZXMvYnVpbGQuZ25pIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaQppbmRleCA4MWNiM2U3M2FlMjMyOWY5MmRlMjE5
Nzg1NTJhODc3OGFiODJmMjE0Li42NjkwNDRkYjgxY2IyMTg1YmUzNzRiMGIxMDAyNzA5M2M1Njgz
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkKQEAgLTEyLDggKzEy
LDggQEAgZW5hYmxlX2phdmFfdGVtcGxhdGVzID0gdHJ1ZQogIyBTb21lIG5vbi1DaHJvbWl1bSBi
dWlsZHMgZG9uJ3QgdXNlIENocm9taXVtJ3MgdGhpcmRfcGFydHkvYmludXRpbHMuCiBsaW51eF91
c2VfYnVuZGxlZF9iaW51dGlsc19vdmVycmlkZSA9IHRydWUKIAotIyBWYXJpYWJsZSB0aGF0IGNh
biBiZSB1c2VkIHRvIHN1cHBvcnQgbXVsdGlwbGUgYnVpbGQgc2NlbmFyaW9zLCBsaWtlIGhhdmlu
ZwotIyBDaHJvbWl1bSBzcGVjaWZpYyB0YXJnZXRzIGluIGEgY2xpZW50IHByb2plY3QncyBHTiBm
aWxlIGV0Yy4KKyMgRG9uJ3Qgc2V0IHRoaXMgdmFyaWFibGUgdG8gdHJ1ZSB3aGVuIGJ1aWxkaW5n
IHN0YWRhbG9uZSBXZWJSVEMsIGl0IGlzCisjIG9ubHkgbmVlZGVkIHRvIHN1cHBvcnQgYm90aCBX
ZWJSVEMgc3RhbmRhbG9uZSBhbmQgQ2hyb21pdW0gYnVpbGRzLgogYnVpbGRfd2l0aF9jaHJvbWl1
bSA9IGZhbHNlCiAKICMgVXNlIG91ciBvd24gc3VwcHJlc3Npb25zIGZpbGVzLgpAQCAtNDIsNyAr
NDIsNyBAQCBpZiAoaG9zdF9vcyA9PSAibWFjIikgewogICAgICAgICAgICAgICAgICAgICAgICAg
WyB0YXJnZXRfb3MgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIpCiAgIGFzc2Vy
dChfcmVzdWx0ICE9IDIsCi0gICAgICAgICAiRG8gbm90IGFsbG93IGJ1aWxkaW5nIHRhcmdldHMg
d2l0aCB0aGUgZGVmYXVsdCIgKworICAgICAgICAgIkRvIG5vdCBhbGxvdyBidWlsZGluZyB0YXJn
ZXRzIHdpdGggdGhlIGRlZmF1bHQgIiArCiAgICAgICAgICAgICAgImhlcm1ldGljIHRvb2xjaGFp
biBpZiB0aGUgbWluaW11bSBPUyB2ZXJzaW9uIGlzIG5vdCBtZXQuIikKICAgdXNlX3N5c3RlbV94
Y29kZSA9IF9yZXN1bHQgPT0gMAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvQlVJTEQuZ24KaW5kZXggNjExZDllOGFkYjEzYzdi
NTI5MTA4ZmM3Y2ZkMzE0YjA4NjE2YjBkZC4uZjZiYTRlYzg0OTA4MjlmNDRhZjM4ZTI1NDU4ZDBi
Njk4ODllYjAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL0JVSUxELmduCkBAIC0zOCwxMSArMzgsMTQgQEAgcnRjX3NvdXJj
ZV9zZXQoImNhbGxfaW50ZXJmYWNlcyIpIHsKICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRp
b19jb2RlY3NfYXBpIiwKICAgICAiLi4vYXBpL3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAog
ICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2UiLAorICAgICIuLi9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6
YXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzIiwKICAgICAiLi4vcnRjX2Jhc2U6YXVkaW9fZm9y
bWF0X3RvX3N0cmluZyIsCisgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19i
YXNlOnJ0Y19iYXNlIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAg
ICIuLi9ydGNfYmFzZS9uZXR3b3JrOnNlbnRfcGFja2V0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CkBAIC0xNjEsNiArMTY0LDkg
QEAgcnRjX3NvdXJjZV9zZXQoImJpdHJhdGVfYWxsb2NhdG9yIikgewogICAgICJiaXRyYXRlX2Fs
bG9jYXRvci5oIiwKICAgXQogICBkZXBzID0gWworICAgICIuLi9hcGk6Yml0cmF0ZV9hbGxvY2F0
aW9uIiwKKyAgICAiLi4vYXBpL3VuaXRzOmRhdGFfcmF0ZSIsCisgICAgIi4uL2FwaS91bml0czp0
aW1lX2RlbHRhIiwKICAgICAiLi4vbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIiLAogICAgICIu
Li9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIs
CkBAIC0xOTMsNyArMTk5LDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjYWxsIikgewogICAgICI6
cnRwX3NlbmRlciIsCiAgICAgIjpzaW11bGF0ZWRfbmV0d29yayIsCiAgICAgIjp2aWRlb19zdHJl
YW1fYXBpIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uL2FwaTpjYWxsZmFjdG9y
eV9hcGkiLAogICAgICIuLi9hcGk6c2ltdWxhdGVkX25ldHdvcmtfYXBpIiwKICAgICAiLi4vYXBp
OnRyYW5zcG9ydF9hcGkiLApAQCAtMjE3LDYgKzIyMiw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgi
Y2FsbCIpIHsKICAgICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAogICAgICIuLi9ydGNf
YmFzZTpzYWZlX21pbm1heCIsCiAgICAgIi4uL3J0Y19iYXNlOnNlcXVlbmNlZF90YXNrX2NoZWNr
ZXIiLAorICAgICIuLi9ydGNfYmFzZS9leHBlcmltZW50czpmaWVsZF90cmlhbF9wYXJzZXIiLAog
ICAgICIuLi9ydGNfYmFzZS9zeW5jaHJvbml6YXRpb246cndfbG9ja193cmFwcGVyIiwKICAgICAi
Li4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFs
IiwKQEAgLTIzNiw3ICsyNDIsNiBAQCBydGNfc291cmNlX3NldCgidmlkZW9fc3RyZWFtX2FwaSIp
IHsKICAgXQogICBkZXBzID0gWwogICAgICI6cnRwX2ludGVyZmFjZXMiLAotICAgICIuLi86d2Vi
cnRjX2NvbW1vbiIsCiAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwK
ICAgICAiLi4vYXBpOnRyYW5zcG9ydF9hcGkiLAogICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJh
bWUiLApAQCAtMjU3LDYgKzI2Miw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJzaW11bGF0ZWRfbmV0d29y
ayIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLi9hcGk6c2ltdWxhdGVkX25ldHdvcmtfYXBp
IiwKKyAgICAiLi4vYXBpL3VuaXRzOmRhdGFfcmF0ZSIsCisgICAgIi4uL2FwaS91bml0czpkYXRh
X3NpemUiLAorICAgICIuLi9hcGkvdW5pdHM6dGltZV9kZWx0YSIsCiAgICAgIi4uL3J0Y19iYXNl
OnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bWVtb3J5IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9u
YWwiLApAQCAtMjgzLDEwICsyOTEsMTAgQEAgcnRjX3NvdXJjZV9zZXQoImZha2VfbmV0d29yayIp
IHsKICAgICAiOmNhbGxfaW50ZXJmYWNlcyIsCiAgICAgIjpzaW11bGF0ZWRfbmV0d29yayIsCiAg
ICAgIjpzaW11bGF0ZWRfcGFja2V0X3JlY2VpdmVyIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIs
CiAgICAgIi4uL2FwaTpzaW11bGF0ZWRfbmV0d29ya19hcGkiLAogICAgICIuLi9hcGk6dHJhbnNw
b3J0X2FwaSIsCiAgICAgIi4uL21vZHVsZXM6bW9kdWxlX2FwaSIsCisgICAgIi4uL21vZHVsZXMv
dXRpbGl0eSIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4v
cnRjX2Jhc2U6c2VxdWVuY2VkX3Rhc2tfY2hlY2tlciIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVy
cyIsCkBAIC0zMjIsOCArMzMwLDkgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAi
OnJ0cF9yZWNlaXZlciIsCiAgICAgICAiOnJ0cF9zZW5kZXIiLAogICAgICAgIjpzaW11bGF0ZWRf
bmV0d29yayIsCi0gICAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4vYXBpOmFycmF5
X3ZpZXciLAorICAgICAgIi4uL2FwaTpmYWtlX21lZGlhX3RyYW5zcG9ydCIsCisgICAgICAiLi4v
YXBpOmZha2VfbWVkaWFfdHJhbnNwb3J0IiwKICAgICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJj
b25uZWN0aW9uX2FwaSIsCiAgICAgICAiLi4vYXBpOm1vY2tfYXVkaW9fbWl4ZXIiLAogICAgICAg
Ii4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkiLApAQCAt
MzU5LDYgKzM2OCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi8vdGVzdGlu
Zy9nbW9jayIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgICBdCiAgICAgaWYgKCFidWlsZF93aXRoX2Nocm9t
aXVtICYmIGlzX2NsYW5nKSB7CiAgICAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIENo
cm9taXVtIENsYW5nIHBsdWdpbiAoYnVncy53ZWJydGMub3JnLzE2MykuCkBAIC0zNzgsMTIgKzM4
OCwxMyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6Y2FsbF9pbnRlcmZhY2Vz
IiwKICAgICAgICI6c2ltdWxhdGVkX25ldHdvcmsiLAogICAgICAgIjp2aWRlb19zdHJlYW1fYXBp
IiwKLSAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi9hcGk6c2ltdWxhdGVkX25l
dHdvcmtfYXBpIiwKICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5j
b2Rlcl9mYWN0b3J5IiwKKyAgICAgICIuLi9hcGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9h
bGxvY2F0aW9uIiwKICAgICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGki
LAogICAgICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAorICAgICAgIi4uL2xvZ2dp
bmc6cnRjX2V2ZW50X2xvZ19pbXBsX291dHB1dCIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19j
b2RpbmciLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlIiwKICAgICAgICIuLi9tb2R1
bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfaW1wbCIsCkBAIC00MjYsNiArNDM3LDcgQEAg
aWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vbW9kdWxlcy9wYWNpbmciLAogICAg
ICAgIi4uL3J0Y19iYXNlOnJhdGVfbGltaXRlciIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jh
c2UiLAorICAgICAgIi4uL3J0Y19iYXNlL25ldHdvcms6c2VudF9wYWNrZXQiLAogICAgICAgIi4u
L3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICBdCiAgIH0KQEAgLTQzNyw3ICs0NDksNyBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBdCiAgICAgZGVwcyA9IFsKICAgICAgICI6Yml0cmF0
ZV9hbGxvY2F0b3IiLAotICAgICAgIi8vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgICAgIi4uL3Rl
c3Q6dGVzdF9zdXBwb3J0IiwKICAgICBdCiAgIH0KICAgcnRjX3NvdXJjZV9zZXQoIm1vY2tfY2Fs
bF9pbnRlcmZhY2VzIikgewpAQCAtNDQ4LDExICs0NjAsMTQgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rl
c3RzKSB7CiAgICAgXQogICAgIGRlcHMgPSBbCiAgICAgICAiOmNhbGxfaW50ZXJmYWNlcyIsCi0g
ICAgICAiLy90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQi
LAogICAgIF0KICAgfQogCiAgIHJ0Y190ZXN0KCJmYWtlX25ldHdvcmtfdW5pdHRlc3RzIikgewor
ICAgIHNvdXJjZXMgPSBbCisgICAgICAidGVzdC9mYWtlX25ldHdvcmtfcGlwZV91bml0dGVzdC5j
YyIsCisgICAgXQogICAgIGRlcHMgPSBbCiAgICAgICAiOmNhbGxfaW50ZXJmYWNlcyIsCiAgICAg
ICAiOmZha2VfbmV0d29yayIsCkBAIC00NjIsMTAgKzQ3Nyw4IEBAIGlmIChydGNfaW5jbHVkZV90
ZXN0cykgewogICAgICAgIi4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAgICAiLi4vdGVzdDp0ZXN0
X2NvbW1vbiIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4uL3Rlc3Q6dGVz
dF9zdXBwb3J0IiwKICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgIF0KLSAgICBzb3VyY2Vz
ID0gWwotICAgICAgInRlc3QvZmFrZV9uZXR3b3JrX3BpcGVfdW5pdHRlc3QuY2MiLAotICAgIF0K
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9hdWRpb19yZWNlaXZlX3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRpb19yZWNlaXZlX3N0cmVhbS5oCmluZGV4IDlj
ODkwYjFjZGEzNzU4NTMxNDFmODRiYjZkZDE0YTc5OWFhYmIxZjYuLjM2Y2MwNTkzOTY3NGJlZjFi
MTI1YjUxYTRkMzExZWZiZTI4NDQzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYXVkaW9fcmVjZWl2ZV9zdHJlYW0uaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2F1ZGlvX3JlY2Vp
dmVfc3RyZWFtLmgKQEAgLTE5LDEwICsxOSwxMSBAQAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9y
eS5oIgogI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgImFwaS9jcnlw
dG8vY3J5cHRvb3B0aW9ucy5oIgorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJhcGkvcnRw
cmVjZWl2ZXJpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcuaCIKLSNpbmNs
dWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUg
InJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNjIs
NiArNjMsNyBAQCBjbGFzcyBBdWRpb1JlY2VpdmVTdHJlYW0gewogICAgIGZsb2F0IHNlY29uZGFy
eV9kaXNjYXJkZWRfcmF0ZSA9IDAuMGY7CiAgICAgZmxvYXQgYWNjZWxlcmF0ZV9yYXRlID0gMC4w
ZjsKICAgICBmbG9hdCBwcmVlbXB0aXZlX2V4cGFuZF9yYXRlID0gMC4wZjsKKyAgICB1aW50NjRf
dCBkZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlcyA9IDA7CiAgICAgaW50MzJfdCBkZWNvZGlu
Z19jYWxsc190b19zaWxlbmNlX2dlbmVyYXRvciA9IDA7CiAgICAgaW50MzJfdCBkZWNvZGluZ19j
YWxsc190b19uZXRlcSA9IDA7CiAgICAgaW50MzJfdCBkZWNvZGluZ19ub3JtYWwgPSAwOwpAQCAt
NzAsNiArNzIsNyBAQCBjbGFzcyBBdWRpb1JlY2VpdmVTdHJlYW0gewogICAgIGludDMyX3QgZGVj
b2RpbmdfcGxjX2NuZyA9IDA7CiAgICAgaW50MzJfdCBkZWNvZGluZ19tdXRlZF9vdXRwdXQgPSAw
OwogICAgIGludDY0X3QgY2FwdHVyZV9zdGFydF9udHBfdGltZV9tcyA9IDA7CisgICAgdWludDY0
X3Qgaml0dGVyX2J1ZmZlcl9mbHVzaGVzID0gMDsKICAgfTsKIAogICBzdHJ1Y3QgQ29uZmlnIHsK
QEAgLTEwNiw5ICsxMDksMTIgQEAgY2xhc3MgQXVkaW9SZWNlaXZlU3RyZWFtIHsKIAogICAgIFRy
YW5zcG9ydCogcnRjcF9zZW5kX3RyYW5zcG9ydCA9IG51bGxwdHI7CiAKKyAgICBNZWRpYVRyYW5z
cG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0ID0gbnVsbHB0cjsKKwogICAgIC8vIE5ldEVx
IHNldHRpbmdzLgogICAgIHNpemVfdCBqaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzID0gNTA7CiAg
ICAgYm9vbCBqaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSA9IGZhbHNlOworICAgIGludCBq
aXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcyA9IDA7CiAKICAgICAvLyBJZGVudGlmaWVyIGZvciBh
biBBL1Ygc3luY2hyb25pemF0aW9uIGdyb3VwLiBFbXB0eSBzdHJpbmcgdG8gZGlzYWJsZS4KICAg
ICAvLyBUT0RPKHBib3MpOiBTeW5jaHJvbml6ZSBzdHJlYW1zIGluIGEgc3luYyBncm91cCwgbm90
IGp1c3Qgb25lIHZpZGVvCkBAIC0xMjIsNiArMTI4LDkgQEAgY2xhc3MgQXVkaW9SZWNlaXZlU3Ry
ZWFtIHsKIAogICAgIGFic2w6Om9wdGlvbmFsPEF1ZGlvQ29kZWNQYWlySWQ+IGNvZGVjX3BhaXJf
aWQ7CiAKKyAgICAvLyBQZXIgUGVlckNvbm5lY3Rpb24gY3J5cHRvIG9wdGlvbnMuCisgICAgd2Vi
cnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zOworCiAgICAgLy8gQW4gb3B0aW9uYWwg
Y3VzdG9tIGZyYW1lIGRlY3J5cHRvciB0aGF0IGFsbG93cyB0aGUgZW50aXJlIGZyYW1lIHRvIGJl
CiAgICAgLy8gZGVjcnlwdGVkIGluIHdoYXRldmVyIHdheSB0aGUgY2FsbGVyIGNob3Nlcy4gVGhp
cyBpcyBub3QgcmVxdWlyZWQgYnkKICAgICAvLyBkZWZhdWx0LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRpb19zZW5kX3N0cmVh
bS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYXVk
aW9fc2VuZF9zdHJlYW0uY2MKaW5kZXggZTJjZjIwY2Y4NDQ4MGU2ZjQ3ZWM3ZDMzNDcwMjA1YzMw
YjQ1NjUyYy4uMzAzYjQ5Y2JmYjMxOTY2NzIxODc4NWQ4MjQwNjdiNzdhYThlOTU3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRp
b19zZW5kX3N0cmVhbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jYWxsL2F1ZGlvX3NlbmRfc3RyZWFtLmNjCkBAIC05LDYgKzksOSBAQAogICovCiAK
ICNpbmNsdWRlICJjYWxsL2F1ZGlvX3NlbmRfc3RyZWFtLmgiCisKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KKwogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ3MvYXVkaW9fZm9ybWF0X3RvX3N0cmluZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKQEAgLTE4LDggKzIxLDEyIEBAIG5hbWVzcGFjZSB3
ZWJydGMgewogQXVkaW9TZW5kU3RyZWFtOjpTdGF0czo6U3RhdHMoKSA9IGRlZmF1bHQ7CiBBdWRp
b1NlbmRTdHJlYW06OlN0YXRzOjp+U3RhdHMoKSA9IGRlZmF1bHQ7CiAKK0F1ZGlvU2VuZFN0cmVh
bTo6Q29uZmlnOjpDb25maWcoVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5z
cG9ydCkKKyAgICA6IHNlbmRfdHJhbnNwb3J0KHNlbmRfdHJhbnNwb3J0KSwgbWVkaWFfdHJhbnNw
b3J0KG1lZGlhX3RyYW5zcG9ydCkge30KKwogQXVkaW9TZW5kU3RyZWFtOjpDb25maWc6OkNvbmZp
ZyhUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0KQotICAgIDogc2VuZF90cmFuc3BvcnQoc2VuZF90
cmFuc3BvcnQpIHt9CisgICAgOiBDb25maWcoc2VuZF90cmFuc3BvcnQsIG51bGxwdHIpIHt9CiAK
IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjp+Q29uZmlnKCkgPSBkZWZhdWx0OwogCkBAIC0yNyw3
ICszNCw5IEBAIHN0ZDo6c3RyaW5nIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjpUb1N0cmluZygp
IGNvbnN0IHsKICAgY2hhciBidWZbMTAyNF07CiAgIHJ0Yzo6U2ltcGxlU3RyaW5nQnVpbGRlciBz
cyhidWYpOwogICBzcyA8PCAie3J0cDogIiA8PCBydHAuVG9TdHJpbmcoKTsKKyAgc3MgPDwgIiwg
cnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM6ICIgPDwgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM7CiAg
IHNzIDw8ICIsIHNlbmRfdHJhbnNwb3J0OiAiIDw8IChzZW5kX3RyYW5zcG9ydCA/ICIoVHJhbnNw
b3J0KSIgOiAibnVsbCIpOworICBzcyA8PCAiLCBtZWRpYV90cmFuc3BvcnQ6ICIgPDwgKG1lZGlh
X3RyYW5zcG9ydCA/ICIoVHJhbnNwb3J0KSIgOiAibnVsbCIpOwogICBzcyA8PCAiLCBtaW5fYml0
cmF0ZV9icHM6ICIgPDwgbWluX2JpdHJhdGVfYnBzOwogICBzcyA8PCAiLCBtYXhfYml0cmF0ZV9i
cHM6ICIgPDwgbWF4X2JpdHJhdGVfYnBzOwogICBzcyA8PCAiLCBzZW5kX2NvZGVjX3NwZWM6ICIK
QEAgLTQ0LDYgKzUzLDcgQEAgc3RkOjpzdHJpbmcgQXVkaW9TZW5kU3RyZWFtOjpDb25maWc6OlJ0
cDo6VG9TdHJpbmcoKSBjb25zdCB7CiAgIGNoYXIgYnVmWzEwMjRdOwogICBydGM6OlNpbXBsZVN0
cmluZ0J1aWxkZXIgc3MoYnVmKTsKICAgc3MgPDwgIntzc3JjOiAiIDw8IHNzcmM7CisgIHNzIDw8
ICIsIGV4dG1hcC1hbGxvdy1taXhlZDogIiA8PCAoZXh0bWFwX2FsbG93X21peGVkID8gInRydWUi
IDogImZhbHNlIik7CiAgIHNzIDw8ICIsIGV4dGVuc2lvbnM6IFsiOwogICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyArK2kpIHsKICAgICBzcyA8PCBleHRlbnNpb25z
W2ldLlRvU3RyaW5nKCk7CkBAIC01Miw3ICs2Miw2IEBAIHN0ZDo6c3RyaW5nIEF1ZGlvU2VuZFN0
cmVhbTo6Q29uZmlnOjpSdHA6OlRvU3RyaW5nKCkgY29uc3QgewogICAgIH0KICAgfQogICBzcyA8
PCAnXSc7Ci0gIHNzIDw8ICIsIG5hY2s6ICIgPDwgbmFjay5Ub1N0cmluZygpOwogICBzcyA8PCAi
LCBjX25hbWU6ICIgPDwgY19uYW1lOwogICBzcyA8PCAnfSc7CiAgIHJldHVybiBzcy5zdHIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvYXVkaW9fc2VuZF9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NhbGwvYXVkaW9fc2VuZF9zdHJlYW0uaAppbmRleCA2MWUyNTMxMjIyOWU5MDAx
NWFlNDc2ZmFlYzI4ZmZlM2EzNjFlZDBhLi5jOTk2ZGFiODNkNzAwMDU1MDUyMjllMjQ0YWY0OTNl
N2U4ZDJmODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jYWxsL2F1ZGlvX3NlbmRfc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRpb19zZW5kX3N0cmVhbS5oCkBAIC0yMSw3
ICsyMSw5IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgogI2luY2x1
ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRvb3B0
aW9ucy5oIgogI2luY2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaCIK
KyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImFw
aS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfY29uZmlnLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZ19zdGF0
aXN0aWNzLmgiCkBAIC01NywxMCArNTksMTMgQEAgY2xhc3MgQXVkaW9TZW5kU3RyZWFtIHsKIAog
ICAgIEFOQVN0YXRzIGFuYV9zdGF0aXN0aWNzOwogICAgIEF1ZGlvUHJvY2Vzc2luZ1N0YXRzIGFw
bV9zdGF0aXN0aWNzOworCisgICAgaW50NjRfdCB0YXJnZXRfYml0cmF0ZV9icHMgPSAwOwogICB9
OwogCiAgIHN0cnVjdCBDb25maWcgewogICAgIENvbmZpZygpID0gZGVsZXRlOworICAgIENvbmZp
ZyhUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LCBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVk
aWFfdHJhbnNwb3J0KTsKICAgICBleHBsaWNpdCBDb25maWcoVHJhbnNwb3J0KiBzZW5kX3RyYW5z
cG9ydCk7CiAgICAgfkNvbmZpZygpOwogICAgIHN0ZDo6c3RyaW5nIFRvU3RyaW5nKCkgY29uc3Q7
CkBAIC03OCwyMCArODMsMjUgQEAgY2xhc3MgQXVkaW9TZW5kU3RyZWFtIHsKICAgICAgIC8vIGlu
Y2x1ZGVkIGluIHRoZSBsaXN0IG9mIGV4dGVuc2lvbnMuCiAgICAgICBzdGQ6OnN0cmluZyBtaWQ7
CiAKKyAgICAgIC8vIENvcnJlc3BvbmRzIHRvIHRoZSBTRFAgYXR0cmlidXRlIGV4dG1hcC1hbGxv
dy1taXhlZC4KKyAgICAgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkID0gZmFsc2U7CisKICAgICAg
IC8vIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyB1c2VkIGZvciB0aGUgc2VudCBzdHJlYW0uCiAgICAg
ICBzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+IGV4dGVuc2lvbnM7CiAKLSAgICAgIC8vIFNlZSBO
YWNrQ29uZmlnIGZvciBkZXNjcmlwdGlvbi4KLSAgICAgIE5hY2tDb25maWcgbmFjazsKLQogICAg
ICAgLy8gUlRDUCBDTkFNRSwgc2VlIFJGQyAzNTUwLgogICAgICAgc3RkOjpzdHJpbmcgY19uYW1l
OwogICAgIH0gcnRwOwogCisgICAgLy8gVGltZSBpbnRlcnZhbCBiZXR3ZWVuIFJUQ1AgcmVwb3J0
IGZvciBhdWRpbworICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IDUwMDA7CisKICAg
ICAvLyBUcmFuc3BvcnQgZm9yIG91dGdvaW5nIHBhY2tldHMuIFRoZSB0cmFuc3BvcnQgaXMgZXhw
ZWN0ZWQgdG8gZXhpc3QgZm9yCiAgICAgLy8gdGhlIGVudGlyZSBsaWZlIG9mIHRoZSBBdWRpb1Nl
bmRTdHJlYW0gYW5kIGlzIG93bmVkIGJ5IHRoZSBBUEkgY2xpZW50LgogICAgIFRyYW5zcG9ydCog
c2VuZF90cmFuc3BvcnQgPSBudWxscHRyOwogCisgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2Uq
IG1lZGlhX3RyYW5zcG9ydCA9IG51bGxwdHI7CisKICAgICAvLyBCaXRyYXRlIGxpbWl0cyB1c2Vk
IGZvciB2YXJpYWJsZSBhdWRpbyBiaXRyYXRlIHN0cmVhbXMuIFNldCBib3RoIHRvIC0xIHRvCiAg
ICAgLy8gZGlzYWJsZSBhdWRpbyBiaXRyYXRlIGFkYXB0YXRpb24uCiAgICAgLy8gTm90ZTogVGhp
cyBpcyBzdGlsbCBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBhbmQgbm90IHJlYWR5IGZvciByZWFs
IHVzYWdlLgpAQCAtOTksNiArMTA5LDcgQEAgY2xhc3MgQXVkaW9TZW5kU3RyZWFtIHsKICAgICBp
bnQgbWF4X2JpdHJhdGVfYnBzID0gLTE7CiAKICAgICBkb3VibGUgYml0cmF0ZV9wcmlvcml0eSA9
IDEuMDsKKyAgICBib29sIGhhc19kc2NwID0gZmFsc2U7CiAKICAgICAvLyBEZWZpbmVzIHdoZXRo
ZXIgdG8gdHVybiBvbiBhdWRpbyBuZXR3b3JrIGFkYXB0b3IsIGFuZCBkZWZpbmVzIGl0cyBjb25m
aWcKICAgICAvLyBzdHJpbmcuCkBAIC0xMzAsNiArMTQxLDkgQEAgY2xhc3MgQXVkaW9TZW5kU3Ry
ZWFtIHsKICAgICAvLyBUcmFjayBJRCBhcyBzcGVjaWZpZWQgZHVyaW5nIHRyYWNrIGNyZWF0aW9u
LgogICAgIHN0ZDo6c3RyaW5nIHRyYWNrX2lkOwogCisgICAgLy8gUGVyIFBlZXJDb25uZWN0aW9u
IGNyeXB0byBvcHRpb25zLgorICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9u
czsKKwogICAgIC8vIEFuIG9wdGlvbmFsIGN1c3RvbSBmcmFtZSBlbmNyeXB0b3IgdGhhdCBhbGxv
d3MgdGhlIGVudGlyZSBmcmFtZSB0byBiZQogICAgIC8vIGVuY3J5cHRvciBpbiB3aGF0ZXZlciB3
YXkgdGhlIGNhbGxlciBjaG9zZXMuIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5CiAgICAgLy8gZGVm
YXVsdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvYml0cmF0ZV9hbGxvY2F0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfYWxsb2NhdG9yLmNjCmluZGV4IGFjYjE5YWU2
ZmIyYmZmMGJjZGEwMjVmMzhlOTU2NzBmY2FmMGUyOGEuLjY2MDk4MWMzMGUzOTllZGViMDY5YTE1
MTY0MGM2ZDM1Nzg4ZWRiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYml0cmF0ZV9hbGxvY2F0b3IuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2FsbG9jYXRvci5j
YwpAQCAtMTYsNiArMTYsOCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5
PgogCisjaW5jbHVkZSAiYXBpL3VuaXRzL2RhdGFfcmF0ZS5oIgorI2luY2x1ZGUgImFwaS91bml0
cy90aW1lX2RlbHRhLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvaW5j
bHVkZS9iaXRyYXRlX2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCkBAIC01MCwxMCArNTIsMTIgQEAgZG91Ymxl
IE1lZGlhUmF0aW8odWludDMyX3QgYWxsb2NhdGVkX2JpdHJhdGUsIHVpbnQzMl90IHByb3RlY3Rp
b25fYml0cmF0ZSkgewogCiBCaXRyYXRlQWxsb2NhdG9yOjpCaXRyYXRlQWxsb2NhdG9yKExpbWl0
T2JzZXJ2ZXIqIGxpbWl0X29ic2VydmVyKQogICAgIDogbGltaXRfb2JzZXJ2ZXJfKGxpbWl0X29i
c2VydmVyKSwKLSAgICAgIGxhc3RfYml0cmF0ZV9icHNfKDApLAorICAgICAgbGFzdF90YXJnZXRf
YnBzXygwKSwKKyAgICAgIGxhc3RfbGlua19jYXBhY2l0eV9icHNfKDApLAogICAgICAgbGFzdF9u
b25femVyb19iaXRyYXRlX2Jwc18oa0RlZmF1bHRCaXRyYXRlQnBzKSwKICAgICAgIGxhc3RfZnJh
Y3Rpb25fbG9zc18oMCksCiAgICAgICBsYXN0X3J0dF8oMCksCisgICAgICBsYXN0X2J3ZV9wZXJp
b2RfbXNfKDEwMDApLAogICAgICAgbnVtX3BhdXNlX2V2ZW50c18oMCksCiAgICAgICBjbG9ja18o
Q2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSksCiAgICAgICBsYXN0X2J3ZV9sb2dfdGltZV8oMCks
CkBAIC04OCwxMSArOTIsMTMgQEAgdWludDhfdCBCaXRyYXRlQWxsb2NhdG9yOjpHZXRUcmFuc21p
c3Npb25NYXhCaXRyYXRlTXVsdGlwbGllcigpIHsKIH0KIAogdm9pZCBCaXRyYXRlQWxsb2NhdG9y
OjpPbk5ldHdvcmtDaGFuZ2VkKHVpbnQzMl90IHRhcmdldF9iaXRyYXRlX2JwcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsaW5rX2NhcGFjaXR5X2Jw
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZyYWN0
aW9uX2xvc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBydHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBi
d2VfcGVyaW9kX21zKSB7CiAgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVu
Y2VkX2NoZWNrZXJfKTsKLSAgbGFzdF9iaXRyYXRlX2Jwc18gPSB0YXJnZXRfYml0cmF0ZV9icHM7
CisgIGxhc3RfdGFyZ2V0X2Jwc18gPSB0YXJnZXRfYml0cmF0ZV9icHM7CisgIGxhc3RfbGlua19j
YXBhY2l0eV9icHNfID0gbGlua19jYXBhY2l0eV9icHM7CiAgIGxhc3Rfbm9uX3plcm9fYml0cmF0
ZV9icHNfID0KICAgICAgIHRhcmdldF9iaXRyYXRlX2JwcyA+IDAgPyB0YXJnZXRfYml0cmF0ZV9i
cHMgOiBsYXN0X25vbl96ZXJvX2JpdHJhdGVfYnBzXzsKICAgbGFzdF9mcmFjdGlvbl9sb3NzXyA9
IGZyYWN0aW9uX2xvc3M7CkBAIC0xMDcsMTEgKzExMywxOCBAQCB2b2lkIEJpdHJhdGVBbGxvY2F0
b3I6Ok9uTmV0d29ya0NoYW5nZWQodWludDMyX3QgdGFyZ2V0X2JpdHJhdGVfYnBzLAogICB9CiAK
ICAgT2JzZXJ2ZXJBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSBBbGxvY2F0ZUJpdHJhdGVzKHRhcmdl
dF9iaXRyYXRlX2Jwcyk7CisgIE9ic2VydmVyQWxsb2NhdGlvbiBiYW5kd2lkdGhfYWxsb2NhdGlv
biA9IEFsbG9jYXRlQml0cmF0ZXMobGlua19jYXBhY2l0eV9icHMpOwogCiAgIGZvciAoYXV0byYg
Y29uZmlnIDogYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXykgewogICAgIHVpbnQzMl90IGFsbG9j
YXRlZF9iaXRyYXRlID0gYWxsb2NhdGlvbltjb25maWcub2JzZXJ2ZXJdOwotICAgIHVpbnQzMl90
IHByb3RlY3Rpb25fYml0cmF0ZSA9IGNvbmZpZy5vYnNlcnZlci0+T25CaXRyYXRlVXBkYXRlZCgK
LSAgICAgICAgYWxsb2NhdGVkX2JpdHJhdGUsIGxhc3RfZnJhY3Rpb25fbG9zc18sIGxhc3RfcnR0
XywgbGFzdF9id2VfcGVyaW9kX21zXyk7CisgICAgdWludDMyX3QgYWxsb2NhdGVkX2JhbmR3aWR0
aCA9IGJhbmR3aWR0aF9hbGxvY2F0aW9uW2NvbmZpZy5vYnNlcnZlcl07CisgICAgQml0cmF0ZUFs
bG9jYXRpb25VcGRhdGUgdXBkYXRlOworICAgIHVwZGF0ZS50YXJnZXRfYml0cmF0ZSA9IERhdGFS
YXRlOjpicHMoYWxsb2NhdGVkX2JpdHJhdGUpOworICAgIHVwZGF0ZS5saW5rX2NhcGFjaXR5ID0g
RGF0YVJhdGU6OmJwcyhhbGxvY2F0ZWRfYmFuZHdpZHRoKTsKKyAgICB1cGRhdGUucGFja2V0X2xv
c3NfcmF0aW8gPSBsYXN0X2ZyYWN0aW9uX2xvc3NfIC8gMjU2LjA7CisgICAgdXBkYXRlLnJvdW5k
X3RyaXBfdGltZSA9IFRpbWVEZWx0YTo6bXMobGFzdF9ydHRfKTsKKyAgICB1cGRhdGUuYndlX3Bl
cmlvZCA9IFRpbWVEZWx0YTo6bXMobGFzdF9id2VfcGVyaW9kX21zXyk7CisgICAgdWludDMyX3Qg
cHJvdGVjdGlvbl9iaXRyYXRlID0gY29uZmlnLm9ic2VydmVyLT5PbkJpdHJhdGVVcGRhdGVkKHVw
ZGF0ZSk7CiAKICAgICBpZiAoYWxsb2NhdGVkX2JpdHJhdGUgPT0gMCAmJiBjb25maWcuYWxsb2Nh
dGVkX2JpdHJhdGVfYnBzID4gMCkgewogICAgICAgaWYgKHRhcmdldF9iaXRyYXRlX2JwcyA+IDAp
CkBAIC0xNjMsMTUgKzE3NiwyMiBAQCB2b2lkIEJpdHJhdGVBbGxvY2F0b3I6OkFkZE9ic2VydmVy
KEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2JzZXJ2ZXIsCiAgICAgICAgIGNvbmZpZy5iaXRy
YXRlX3ByaW9yaXR5LCBjb25maWcuaGFzX3BhY2tldF9mZWVkYmFjaykpOwogICB9CiAKLSAgT2Jz
ZXJ2ZXJBbGxvY2F0aW9uIGFsbG9jYXRpb247Ci0gIGlmIChsYXN0X2JpdHJhdGVfYnBzXyA+IDAp
IHsKKyAgaWYgKGxhc3RfdGFyZ2V0X2Jwc18gPiAwKSB7CiAgICAgLy8gQ2FsY3VsYXRlIGEgbmV3
IGFsbG9jYXRpb24gYW5kIHVwZGF0ZSBhbGwgb2JzZXJ2ZXJzLgotICAgIGFsbG9jYXRpb24gPSBB
bGxvY2F0ZUJpdHJhdGVzKGxhc3RfYml0cmF0ZV9icHNfKTsKKworICAgIE9ic2VydmVyQWxsb2Nh
dGlvbiBhbGxvY2F0aW9uID0gQWxsb2NhdGVCaXRyYXRlcyhsYXN0X3RhcmdldF9icHNfKTsKKyAg
ICBPYnNlcnZlckFsbG9jYXRpb24gYmFuZHdpZHRoX2FsbG9jYXRpb24gPQorICAgICAgICBBbGxv
Y2F0ZUJpdHJhdGVzKGxhc3RfbGlua19jYXBhY2l0eV9icHNfKTsKICAgICBmb3IgKGF1dG8mIGNv
bmZpZyA6IGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18pIHsKICAgICAgIHVpbnQzMl90IGFsbG9j
YXRlZF9iaXRyYXRlID0gYWxsb2NhdGlvbltjb25maWcub2JzZXJ2ZXJdOwotICAgICAgdWludDMy
X3QgcHJvdGVjdGlvbl9iaXRyYXRlID0gY29uZmlnLm9ic2VydmVyLT5PbkJpdHJhdGVVcGRhdGVk
KAotICAgICAgICAgIGFsbG9jYXRlZF9iaXRyYXRlLCBsYXN0X2ZyYWN0aW9uX2xvc3NfLCBsYXN0
X3J0dF8sCi0gICAgICAgICAgbGFzdF9id2VfcGVyaW9kX21zXyk7CisgICAgICB1aW50MzJfdCBi
YW5kd2lkdGggPSBiYW5kd2lkdGhfYWxsb2NhdGlvbltjb25maWcub2JzZXJ2ZXJdOworICAgICAg
Qml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlOworICAgICAgdXBkYXRlLnRhcmdldF9iaXRy
YXRlID0gRGF0YVJhdGU6OmJwcyhhbGxvY2F0ZWRfYml0cmF0ZSk7CisgICAgICB1cGRhdGUubGlu
a19jYXBhY2l0eSA9IERhdGFSYXRlOjpicHMoYmFuZHdpZHRoKTsKKyAgICAgIHVwZGF0ZS5wYWNr
ZXRfbG9zc19yYXRpbyA9IGxhc3RfZnJhY3Rpb25fbG9zc18gLyAyNTYuMDsKKyAgICAgIHVwZGF0
ZS5yb3VuZF90cmlwX3RpbWUgPSBUaW1lRGVsdGE6Om1zKGxhc3RfcnR0Xyk7CisgICAgICB1cGRh
dGUuYndlX3BlcmlvZCA9IFRpbWVEZWx0YTo6bXMobGFzdF9id2VfcGVyaW9kX21zXyk7CisgICAg
ICB1aW50MzJfdCBwcm90ZWN0aW9uX2JpdHJhdGUgPSBjb25maWcub2JzZXJ2ZXItPk9uQml0cmF0
ZVVwZGF0ZWQodXBkYXRlKTsKICAgICAgIGNvbmZpZy5hbGxvY2F0ZWRfYml0cmF0ZV9icHMgPSBh
bGxvY2F0ZWRfYml0cmF0ZTsKICAgICAgIGlmIChhbGxvY2F0ZWRfYml0cmF0ZSA+IDApCiAgICAg
ICAgIGNvbmZpZy5tZWRpYV9yYXRpbyA9IE1lZGlhUmF0aW8oYWxsb2NhdGVkX2JpdHJhdGUsIHBy
b3RlY3Rpb25fYml0cmF0ZSk7CkBAIC0xODAsOSArMjAwLDE0IEBAIHZvaWQgQml0cmF0ZUFsbG9j
YXRvcjo6QWRkT2JzZXJ2ZXIoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlciwKICAg
ICAvLyBDdXJyZW50bHksIGFuIGVuY29kZXIgaXMgbm90IGFsbG93ZWQgdG8gcHJvZHVjZSBmcmFt
ZXMuCiAgICAgLy8gQnV0IHdlIHN0aWxsIGhhdmUgdG8gcmV0dXJuIHRoZSBpbml0aWFsIGNvbmZp
ZyBiaXRyYXRlICsgbGV0IHRoZQogICAgIC8vIG9ic2VydmVyIGtub3cgdGhhdCBpdCBjYW4gbm90
IHByb2R1Y2UgZnJhbWVzLgotICAgIGFsbG9jYXRpb24gPSBBbGxvY2F0ZUJpdHJhdGVzKGxhc3Rf
bm9uX3plcm9fYml0cmF0ZV9icHNfKTsKLSAgICBvYnNlcnZlci0+T25CaXRyYXRlVXBkYXRlZCgw
LCBsYXN0X2ZyYWN0aW9uX2xvc3NfLCBsYXN0X3J0dF8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGFzdF9id2VfcGVyaW9kX21zXyk7CisKKyAgICBCaXRyYXRlQWxsb2NhdGlvblVw
ZGF0ZSB1cGRhdGU7CisgICAgdXBkYXRlLnRhcmdldF9iaXRyYXRlID0gRGF0YVJhdGU6Olplcm8o
KTsKKyAgICB1cGRhdGUubGlua19jYXBhY2l0eSA9IERhdGFSYXRlOjpaZXJvKCk7CisgICAgdXBk
YXRlLnBhY2tldF9sb3NzX3JhdGlvID0gbGFzdF9mcmFjdGlvbl9sb3NzXyAvIDI1Ni4wOworICAg
IHVwZGF0ZS5yb3VuZF90cmlwX3RpbWUgPSBUaW1lRGVsdGE6Om1zKGxhc3RfcnR0Xyk7CisgICAg
dXBkYXRlLmJ3ZV9wZXJpb2QgPSBUaW1lRGVsdGE6Om1zKGxhc3RfYndlX3BlcmlvZF9tc18pOwor
ICAgIG9ic2VydmVyLT5PbkJpdHJhdGVVcGRhdGVkKHVwZGF0ZSk7CiAgIH0KICAgVXBkYXRlQWxs
b2NhdGlvbkxpbWl0cygpOwogfQpAQCAtMjQ4LDcgKzI3Myw4IEBAIHZvaWQgQml0cmF0ZUFsbG9j
YXRvcjo6UmVtb3ZlT2JzZXJ2ZXIoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikg
ewogICBVcGRhdGVBbGxvY2F0aW9uTGltaXRzKCk7CiB9CiAKLWludCBCaXRyYXRlQWxsb2NhdG9y
OjpHZXRTdGFydEJpdHJhdGUoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikgewor
aW50IEJpdHJhdGVBbGxvY2F0b3I6OkdldFN0YXJ0Qml0cmF0ZSgKKyAgICBCaXRyYXRlQWxsb2Nh
dG9yT2JzZXJ2ZXIqIG9ic2VydmVyKSBjb25zdCB7CiAgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVF
TlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKICAgY29uc3QgYXV0byYgaXQgPSBGaW5kT2Jz
ZXJ2ZXJDb25maWcob2JzZXJ2ZXIpOwogICBpZiAoaXQgPT0gYml0cmF0ZV9vYnNlcnZlcl9jb25m
aWdzXy5lbmQoKSkgewpAQCAtMjcyLDYgKzI5OCwxNyBAQCB2b2lkIEJpdHJhdGVBbGxvY2F0b3I6
OlNldEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3koCiAgIGJpdHJhdGVfYWxsb2NhdGlvbl9zdHJh
dGVneV8gPSBzdGQ6Om1vdmUoYml0cmF0ZV9hbGxvY2F0aW9uX3N0cmF0ZWd5KTsKIH0KIAorQml0
cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJDb25maWdzOjpjb25zdF9pdGVyYXRvcgorQml0cmF0ZUFs
bG9jYXRvcjo6RmluZE9ic2VydmVyQ29uZmlnKAorICAgIGNvbnN0IEJpdHJhdGVBbGxvY2F0b3JP
YnNlcnZlciogb2JzZXJ2ZXIpIGNvbnN0IHsKKyAgZm9yIChhdXRvIGl0ID0gYml0cmF0ZV9vYnNl
cnZlcl9jb25maWdzXy5iZWdpbigpOworICAgICAgIGl0ICE9IGJpdHJhdGVfb2JzZXJ2ZXJfY29u
Zmlnc18uZW5kKCk7ICsraXQpIHsKKyAgICBpZiAoaXQtPm9ic2VydmVyID09IG9ic2VydmVyKQor
ICAgICAgcmV0dXJuIGl0OworICB9CisgIHJldHVybiBiaXRyYXRlX29ic2VydmVyX2NvbmZpZ3Nf
LmVuZCgpOworfQorCiBCaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckNvbmZpZ3M6Oml0ZXJhdG9y
CiBCaXRyYXRlQWxsb2NhdG9yOjpGaW5kT2JzZXJ2ZXJDb25maWcoY29uc3QgQml0cmF0ZUFsbG9j
YXRvck9ic2VydmVyKiBvYnNlcnZlcikgewogICBmb3IgKGF1dG8gaXQgPSBiaXRyYXRlX29ic2Vy
dmVyX2NvbmZpZ3NfLmJlZ2luKCk7CkBAIC0yODMsMTkgKzMyMCwxOSBAQCBCaXRyYXRlQWxsb2Nh
dG9yOjpGaW5kT2JzZXJ2ZXJDb25maWcoY29uc3QgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBv
YnNlcnZlcikgewogfQogCiBCaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckFsbG9jYXRpb24gQml0
cmF0ZUFsbG9jYXRvcjo6QWxsb2NhdGVCaXRyYXRlcygKLSAgICB1aW50MzJfdCBiaXRyYXRlKSB7
CisgICAgdWludDMyX3QgYml0cmF0ZSkgY29uc3QgewogICBpZiAoYml0cmF0ZV9vYnNlcnZlcl9j
b25maWdzXy5lbXB0eSgpKQogICAgIHJldHVybiBPYnNlcnZlckFsbG9jYXRpb24oKTsKIAogICBp
ZiAoYml0cmF0ZV9hbGxvY2F0aW9uX3N0cmF0ZWd5XyAhPSBudWxscHRyKSB7Ci0gICAgc3RkOjp2
ZWN0b3I8Y29uc3QgcnRjOjpCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZyo+
Ci0gICAgICAgIHRyYWNrX2NvbmZpZ3MoYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5zaXplKCkp
OwotICAgIGludCBpID0gMDsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGMgOiBiaXRyYXRlX29ic2Vy
dmVyX2NvbmZpZ3NfKSB7Ci0gICAgICB0cmFja19jb25maWdzW2krK10gPSAmYzsKLSAgICB9Cisg
ICAgLy8gTm90ZTogVGhpcyBpbnRlbnRpb25hbGx5IGNhdXNlcyBzbGljaW5nLCB3ZSBvbmx5IGNv
cHkgdGhlIGZpZWxkcyBpbgorICAgIC8vIE9ic2VydmVyQ29uZmlnIHRoYXQgYXJlIGluaGVyaXRl
ZCBmcm9tIFRyYWNrQ29uZmlnLgorICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6Qml0cmF0ZUFsbG9jYXRp
b25TdHJhdGVneTo6VHJhY2tDb25maWc+IHRyYWNrX2NvbmZpZ3MoCisgICAgICAgIGJpdHJhdGVf
b2JzZXJ2ZXJfY29uZmlnc18uYmVnaW4oKSwgYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5lbmQo
KSk7CisKICAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gdHJhY2tfYWxsb2NhdGlvbnMgPQotICAg
ICAgICBiaXRyYXRlX2FsbG9jYXRpb25fc3RyYXRlZ3lfLT5BbGxvY2F0ZUJpdHJhdGVzKGJpdHJh
dGUsIHRyYWNrX2NvbmZpZ3MpOworICAgICAgICBiaXRyYXRlX2FsbG9jYXRpb25fc3RyYXRlZ3lf
LT5BbGxvY2F0ZUJpdHJhdGVzKAorICAgICAgICAgICAgYml0cmF0ZSwgc3RkOjptb3ZlKHRyYWNr
X2NvbmZpZ3MpKTsKICAgICAvLyBUaGUgc3RyYXRlZ3kgc2hvdWxkIHJldHVybiBhbGxvY2F0aW9u
IGZvciBhbGwgdHJhY2tzLgogICAgIFJUQ19DSEVDSyh0cmFja19hbGxvY2F0aW9ucy5zaXplKCkg
PT0gYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5zaXplKCkpOwogICAgIE9ic2VydmVyQWxsb2Nh
dGlvbiBhbGxvY2F0aW9uOwpAQCAtMzMxLDcgKzM2OCw4IEBAIEJpdHJhdGVBbGxvY2F0b3I6Ok9i
c2VydmVyQWxsb2NhdGlvbiBCaXRyYXRlQWxsb2NhdG9yOjpBbGxvY2F0ZUJpdHJhdGVzKAogICBy
ZXR1cm4gTWF4UmF0ZUFsbG9jYXRpb24oYml0cmF0ZSwgc3VtX21heF9iaXRyYXRlcyk7CiB9CiAK
LUJpdHJhdGVBbGxvY2F0b3I6Ok9ic2VydmVyQWxsb2NhdGlvbiBCaXRyYXRlQWxsb2NhdG9yOjpa
ZXJvUmF0ZUFsbG9jYXRpb24oKSB7CitCaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckFsbG9jYXRp
b24gQml0cmF0ZUFsbG9jYXRvcjo6WmVyb1JhdGVBbGxvY2F0aW9uKCkKKyAgICBjb25zdCB7CiAg
IE9ic2VydmVyQWxsb2NhdGlvbiBhbGxvY2F0aW9uOwogICBmb3IgKGNvbnN0IGF1dG8mIG9ic2Vy
dmVyX2NvbmZpZyA6IGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18pCiAgICAgYWxsb2NhdGlvbltv
YnNlcnZlcl9jb25maWcub2JzZXJ2ZXJdID0gMDsKQEAgLTMzOSw3ICszNzcsNyBAQCBCaXRyYXRl
QWxsb2NhdG9yOjpPYnNlcnZlckFsbG9jYXRpb24gQml0cmF0ZUFsbG9jYXRvcjo6WmVyb1JhdGVB
bGxvY2F0aW9uKCkgewogfQogCiBCaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckFsbG9jYXRpb24g
Qml0cmF0ZUFsbG9jYXRvcjo6TG93UmF0ZUFsbG9jYXRpb24oCi0gICAgdWludDMyX3QgYml0cmF0
ZSkgeworICAgIHVpbnQzMl90IGJpdHJhdGUpIGNvbnN0IHsKICAgT2JzZXJ2ZXJBbGxvY2F0aW9u
IGFsbG9jYXRpb247CiAgIC8vIFN0YXJ0IGJ5IGFsbG9jYXRpbmcgYml0cmF0ZSB0byBvYnNlcnZl
cnMgZW5mb3JjaW5nIGEgbWluIGJpdHJhdGUsIGhlbmNlCiAgIC8vIHJlbWFpbmluZ19iaXRyYXRl
IG1pZ2h0IHR1cm4gbmVnYXRpdmUuCkBAIC00MDAsNyArNDM4LDcgQEAgQml0cmF0ZUFsbG9jYXRv
cjo6T2JzZXJ2ZXJBbGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6Okxvd1JhdGVBbGxvY2F0aW9u
KAogLy8gbWluX2JpdHJhdGVfYnBzIHZhbHVlcywgdW50aWwgb25lIG9mIHRoZSBvYnNlcnZlcnMg
aGl0cyBpdHMgbWF4X2JpdHJhdGVfYnBzLgogQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJBbGxv
Y2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6Ok5vcm1hbFJhdGVBbGxvY2F0aW9uKAogICAgIHVpbnQz
Ml90IGJpdHJhdGUsCi0gICAgdWludDMyX3Qgc3VtX21pbl9iaXRyYXRlcykgeworICAgIHVpbnQz
Ml90IHN1bV9taW5fYml0cmF0ZXMpIGNvbnN0IHsKICAgT2JzZXJ2ZXJBbGxvY2F0aW9uIGFsbG9j
YXRpb247CiAgIE9ic2VydmVyQWxsb2NhdGlvbiBvYnNlcnZlcnNfY2FwYWNpdGllczsKICAgZm9y
IChjb25zdCBhdXRvJiBvYnNlcnZlcl9jb25maWcgOiBiaXRyYXRlX29ic2VydmVyX2NvbmZpZ3Nf
KSB7CkBAIC00MjAsNyArNDU4LDcgQEAgQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJBbGxvY2F0
aW9uIEJpdHJhdGVBbGxvY2F0b3I6Ok5vcm1hbFJhdGVBbGxvY2F0aW9uKAogCiBCaXRyYXRlQWxs
b2NhdG9yOjpPYnNlcnZlckFsbG9jYXRpb24gQml0cmF0ZUFsbG9jYXRvcjo6TWF4UmF0ZUFsbG9j
YXRpb24oCiAgICAgdWludDMyX3QgYml0cmF0ZSwKLSAgICB1aW50MzJfdCBzdW1fbWF4X2JpdHJh
dGVzKSB7CisgICAgdWludDMyX3Qgc3VtX21heF9iaXRyYXRlcykgY29uc3QgewogICBPYnNlcnZl
ckFsbG9jYXRpb24gYWxsb2NhdGlvbjsKIAogICBmb3IgKGNvbnN0IGF1dG8mIG9ic2VydmVyX2Nv
bmZpZyA6IGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18pIHsKQEAgLTQ1NywxMCArNDk1LDExIEBA
IHVpbnQzMl90IEJpdHJhdGVBbGxvY2F0b3I6Ok9ic2VydmVyQ29uZmlnOjpNaW5CaXRyYXRlV2l0
aEh5c3RlcmVzaXMoKSBjb25zdCB7CiAgIHJldHVybiBtaW5fYml0cmF0ZTsKIH0KIAotdm9pZCBC
aXRyYXRlQWxsb2NhdG9yOjpEaXN0cmlidXRlQml0cmF0ZUV2ZW5seSh1aW50MzJfdCBiaXRyYXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlu
Y2x1ZGVfemVyb19hbGxvY2F0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG1heF9tdWx0aXBsaWVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBPYnNlcnZlckFsbG9jYXRpb24qIGFsbG9jYXRpb24p
IHsKK3ZvaWQgQml0cmF0ZUFsbG9jYXRvcjo6RGlzdHJpYnV0ZUJpdHJhdGVFdmVubHkoCisgICAg
dWludDMyX3QgYml0cmF0ZSwKKyAgICBib29sIGluY2x1ZGVfemVyb19hbGxvY2F0aW9ucywKKyAg
ICBpbnQgbWF4X211bHRpcGxpZXIsCisgICAgT2JzZXJ2ZXJBbGxvY2F0aW9uKiBhbGxvY2F0aW9u
KSBjb25zdCB7CiAgIFJUQ19EQ0hFQ0tfRVEoYWxsb2NhdGlvbi0+c2l6ZSgpLCBiaXRyYXRlX29i
c2VydmVyX2NvbmZpZ3NfLnNpemUoKSk7CiAKICAgT2JzZXJ2ZXJTb3J0aW5nTWFwIGxpc3RfbWF4
X2JpdHJhdGVzOwpAQCAtNDkxLDggKzUzMCw5IEBAIHZvaWQgQml0cmF0ZUFsbG9jYXRvcjo6RGlz
dHJpYnV0ZUJpdHJhdGVFdmVubHkodWludDMyX3QgYml0cmF0ZSwKICAgfQogfQogCi1ib29sIEJp
dHJhdGVBbGxvY2F0b3I6OkVub3VnaEJpdHJhdGVGb3JBbGxPYnNlcnZlcnModWludDMyX3QgYml0
cmF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCBzdW1fbWluX2JpdHJhdGVzKSB7Citib29sIEJpdHJhdGVBbGxvY2F0b3I6OkVu
b3VnaEJpdHJhdGVGb3JBbGxPYnNlcnZlcnMoCisgICAgdWludDMyX3QgYml0cmF0ZSwKKyAgICB1
aW50MzJfdCBzdW1fbWluX2JpdHJhdGVzKSBjb25zdCB7CiAgIGlmIChiaXRyYXRlIDwgc3VtX21p
bl9iaXRyYXRlcykKICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUxMSw3ICs1NTEsNyBAQCBib29s
IEJpdHJhdGVBbGxvY2F0b3I6OkVub3VnaEJpdHJhdGVGb3JBbGxPYnNlcnZlcnModWludDMyX3Qg
Yml0cmF0ZSwKIHZvaWQgQml0cmF0ZUFsbG9jYXRvcjo6RGlzdHJpYnV0ZUJpdHJhdGVSZWxhdGl2
ZWx5KAogICAgIHVpbnQzMl90IHJlbWFpbmluZ19iaXRyYXRlLAogICAgIGNvbnN0IE9ic2VydmVy
QWxsb2NhdGlvbiYgb2JzZXJ2ZXJzX2NhcGFjaXRpZXMsCi0gICAgT2JzZXJ2ZXJBbGxvY2F0aW9u
KiBhbGxvY2F0aW9uKSB7CisgICAgT2JzZXJ2ZXJBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKSBjb25z
dCB7CiAgIFJUQ19EQ0hFQ0tfRVEoYWxsb2NhdGlvbi0+c2l6ZSgpLCBiaXRyYXRlX29ic2VydmVy
X2NvbmZpZ3NfLnNpemUoKSk7CiAgIFJUQ19EQ0hFQ0tfRVEob2JzZXJ2ZXJzX2NhcGFjaXRpZXMu
c2l6ZSgpLCBiaXRyYXRlX29ic2VydmVyX2NvbmZpZ3NfLnNpemUoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYml0cmF0ZV9h
bGxvY2F0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvYml0cmF0ZV9hbGxvY2F0b3IuaAppbmRleCA0N2RmN2UwMTUxMmVhYTMyN2Q3MDE2MDIyZWIx
ODVmZTI1MTQ4NTgyLi4wNTlmNzdiOTY3MTc5YWIwMjM1NGUwMDEwMjZjZDVlNDMxNDlkNjZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L2JpdHJhdGVfYWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2FsbG9jYXRvci5oCkBAIC0xOSw2ICsxOSw3IEBACiAj
aW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvY2Fs
bC9iaXRyYXRlX2FsbG9jYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9iaXRyYXRlYWxsb2Nh
dGlvbnN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tl
ci5oIgogCkBAIC0zNCwxMCArMzUsNyBAQCBjbGFzcyBCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIg
ewogIHB1YmxpYzoKICAgLy8gUmV0dXJucyB0aGUgYW1vdW50IG9mIHByb3RlY3Rpb24gdXNlZCBi
eSB0aGUgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyCiAgIC8vIGltcGxlbWVudGF0aW9uLCBhcyBi
aXRyYXRlIGluIGJwcy4KLSAgdmlydHVhbCB1aW50MzJfdCBPbkJpdHJhdGVVcGRhdGVkKHVpbnQz
Ml90IGJpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCBmcmFjdGlvbl9sb3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50NjRfdCBydHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IGJ3ZV9wZXJpb2RfbXMpID0gMDsKKyAgdmlydHVhbCB1aW50MzJfdCBPbkJpdHJhdGVVcGRhdGVk
KEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSkgPSAwOwogCiAgcHJvdGVjdGVkOgogICB2
aXJ0dWFsIH5CaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIoKSB7fQpAQCAtNzMsNyArNzEsNyBAQCBj
bGFzcyBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsKICAgdmlydHVhbCB2b2lkIEFkZE9ic2Vy
dmVyKEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2JzZXJ2ZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNZWRpYVN0cmVhbUFsbG9jYXRpb25Db25maWcgY29uZmlnKSA9IDA7CiAgIHZp
cnR1YWwgdm9pZCBSZW1vdmVPYnNlcnZlcihCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2Vy
dmVyKSA9IDA7Ci0gIHZpcnR1YWwgaW50IEdldFN0YXJ0Qml0cmF0ZShCaXRyYXRlQWxsb2NhdG9y
T2JzZXJ2ZXIqIG9ic2VydmVyKSA9IDA7CisgIHZpcnR1YWwgaW50IEdldFN0YXJ0Qml0cmF0ZShC
aXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVyKSBjb25zdCA9IDA7CiAKICBwcm90ZWN0
ZWQ6CiAgIHZpcnR1YWwgfkJpdHJhdGVBbGxvY2F0b3JJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CkBA
IC0xMDQsNiArMTAyLDcgQEAgY2xhc3MgQml0cmF0ZUFsbG9jYXRvciA6IHB1YmxpYyBCaXRyYXRl
QWxsb2NhdG9ySW50ZXJmYWNlIHsKIAogICAvLyBBbGxvY2F0ZSB0YXJnZXRfYml0cmF0ZSBhY3Jv
c3MgdGhlIHJlZ2lzdGVyZWQgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVycy4KICAgdm9pZCBPbk5l
dHdvcmtDaGFuZ2VkKHVpbnQzMl90IHRhcmdldF9iaXRyYXRlX2JwcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGxpbmtfY2FwYWNpdHlfYnBzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3NzLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCBydHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGJ3ZV9wZXJpb2RfbXMp
OwpAQCAtMTIwLDcgKzExOSw3IEBAIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3IgOiBwdWJsaWMgQml0
cmF0ZUFsbG9jYXRvckludGVyZmFjZSB7CiAKICAgLy8gUmV0dXJucyBpbml0aWFsIGJpdHJhdGUg
YWxsb2NhdGVkIGZvciB8b2JzZXJ2ZXJ8LiBJZiB8b2JzZXJ2ZXJ8IGlzIG5vdCBpbgogICAvLyB0
aGUgbGlzdCBvZiBhZGRlZCBvYnNlcnZlcnMsIGEgYmVzdCBndWVzcyBpcyByZXR1cm5lZC4KLSAg
aW50IEdldFN0YXJ0Qml0cmF0ZShCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVyKSBv
dmVycmlkZTsKKyAgaW50IEdldFN0YXJ0Qml0cmF0ZShCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIq
IG9ic2VydmVyKSBjb25zdCBvdmVycmlkZTsKIAogICAvLyBTZXRzIGV4dGVybmFsIGFsbG9jYXRp
b24gc3RyYXRlZ3kuIElmIHN0cmF0ZWd5IGlzIG5vdCBzZXQgZGVmYXVsdCBXZWJSVEMKICAgLy8g
YWxsb2NhdGlvbiBtZWNoYW5pc20gd2lsbCBiZSB1c2VkLiBUaGUgc3RyYXRlZ3kgbWF5IGJlIGNo
YW5nZWQgZHVyaW5nIGNhbGwuCkBAIC0xNzEsMzEgKzE3MCwzNCBAQCBjbGFzcyBCaXRyYXRlQWxs
b2NhdG9yIDogcHVibGljIEJpdHJhdGVBbGxvY2F0b3JJbnRlcmZhY2UgewogICB2b2lkIFVwZGF0
ZUFsbG9jYXRpb25MaW1pdHMoKSBSVENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwogCiAg
IHR5cGVkZWYgc3RkOjp2ZWN0b3I8T2JzZXJ2ZXJDb25maWc+IE9ic2VydmVyQ29uZmlnczsKKyAg
T2JzZXJ2ZXJDb25maWdzOjpjb25zdF9pdGVyYXRvciBGaW5kT2JzZXJ2ZXJDb25maWcoCisgICAg
ICBjb25zdCBCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVyKSBjb25zdAorICAgICAg
UlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKICAgT2JzZXJ2ZXJDb25maWdzOjppdGVy
YXRvciBGaW5kT2JzZXJ2ZXJDb25maWcoCiAgICAgICBjb25zdCBCaXRyYXRlQWxsb2NhdG9yT2Jz
ZXJ2ZXIqIG9ic2VydmVyKSBSVENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwogCiAgIHR5
cGVkZWYgc3RkOjptdWx0aW1hcDx1aW50MzJfdCwgY29uc3QgT2JzZXJ2ZXJDb25maWcqPiBPYnNl
cnZlclNvcnRpbmdNYXA7CiAgIHR5cGVkZWYgc3RkOjptYXA8Qml0cmF0ZUFsbG9jYXRvck9ic2Vy
dmVyKiwgaW50PiBPYnNlcnZlckFsbG9jYXRpb247CiAKLSAgT2JzZXJ2ZXJBbGxvY2F0aW9uIEFs
bG9jYXRlQml0cmF0ZXModWludDMyX3QgYml0cmF0ZSkKKyAgT2JzZXJ2ZXJBbGxvY2F0aW9uIEFs
bG9jYXRlQml0cmF0ZXModWludDMyX3QgYml0cmF0ZSkgY29uc3QKICAgICAgIFJUQ19SVU5fT04o
JnNlcXVlbmNlZF9jaGVja2VyXyk7CiAKICAgLy8gQWxsb2NhdGVzIHplcm8gYml0cmF0ZSB0byBh
bGwgb2JzZXJ2ZXJzLgotICBPYnNlcnZlckFsbG9jYXRpb24gWmVyb1JhdGVBbGxvY2F0aW9uKCkg
UlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKKyAgT2JzZXJ2ZXJBbGxvY2F0aW9uIFpl
cm9SYXRlQWxsb2NhdGlvbigpIGNvbnN0IFJUQ19SVU5fT04oJnNlcXVlbmNlZF9jaGVja2VyXyk7
CiAgIC8vIEFsbG9jYXRlcyBiaXRyYXRlIHRvIG9ic2VydmVycyB3aGVuIHRoZXJlIGlzbid0IGVu
b3VnaCB0byBhbGxvY2F0ZSB0aGUKICAgLy8gbWluaW11bSB0byBhbGwgb2JzZXJ2ZXJzLgotICBP
YnNlcnZlckFsbG9jYXRpb24gTG93UmF0ZUFsbG9jYXRpb24odWludDMyX3QgYml0cmF0ZSkKKyAg
T2JzZXJ2ZXJBbGxvY2F0aW9uIExvd1JhdGVBbGxvY2F0aW9uKHVpbnQzMl90IGJpdHJhdGUpIGNv
bnN0CiAgICAgICBSVENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwogICAvLyBBbGxvY2F0
ZXMgYml0cmF0ZSB0byBhbGwgb2JzZXJ2ZXJzIHdoZW4gdGhlIGF2YWlsYWJsZSBiYW5kd2lkdGgg
aXMgZW5vdWdoCiAgIC8vIHRvIGFsbG9jYXRlIHRoZSBtaW5pbXVtIHRvIGFsbCBvYnNlcnZlcnMg
YnV0IG5vdCBlbm91Z2ggdG8gYWxsb2NhdGUgdGhlCiAgIC8vIG1heCBiaXRyYXRlIG9mIGVhY2gg
b2JzZXJ2ZXIuCiAgIE9ic2VydmVyQWxsb2NhdGlvbiBOb3JtYWxSYXRlQWxsb2NhdGlvbih1aW50
MzJfdCBiaXRyYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3Qgc3VtX21pbl9iaXRyYXRlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IHN1bV9taW5fYml0cmF0ZXMpIGNvbnN0CiAgICAgICBSVENf
UlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwogICAvLyBBbGxvY2F0ZXMgYml0cmF0ZSB0byBv
YnNlcnZlcnMgd2hlbiB0aGVyZSBpcyBlbm91Z2ggYXZhaWxhYmxlIGJhbmR3aWR0aAogICAvLyBm
b3IgYWxsIG9ic2VydmVycyB0byBiZSBhbGxvY2F0ZWQgdGhlaXIgbWF4IGJpdHJhdGUuCiAgIE9i
c2VydmVyQWxsb2NhdGlvbiBNYXhSYXRlQWxsb2NhdGlvbih1aW50MzJfdCBiaXRyYXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3VtX21heF9iaXRy
YXRlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN1
bV9tYXhfYml0cmF0ZXMpIGNvbnN0CiAgICAgICBSVENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tl
cl8pOwogCiAgIC8vIFNwbGl0cyB8Yml0cmF0ZXwgZXZlbmx5IHRvIG9ic2VydmVycyBhbHJlYWR5
IGluIHxhbGxvY2F0aW9ufC4KQEAgLTIwNSw5ICsyMDcsMTAgQEAgY2xhc3MgQml0cmF0ZUFsbG9j
YXRvciA6IHB1YmxpYyBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsKICAgdm9pZCBEaXN0cmli
dXRlQml0cmF0ZUV2ZW5seSh1aW50MzJfdCBiaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaW5jbHVkZV96ZXJvX2FsbG9jYXRpb25zLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBtYXhfbXVsdGlwbGllciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBPYnNlcnZlckFsbG9jYXRpb24qIGFsbG9jYXRpb24pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgT2JzZXJ2ZXJBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKSBjb25zdAog
ICAgICAgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKLSAgYm9vbCBFbm91Z2hCaXRy
YXRlRm9yQWxsT2JzZXJ2ZXJzKHVpbnQzMl90IGJpdHJhdGUsIHVpbnQzMl90IHN1bV9taW5fYml0
cmF0ZXMpCisgIGJvb2wgRW5vdWdoQml0cmF0ZUZvckFsbE9ic2VydmVycyh1aW50MzJfdCBiaXRy
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3VtX21p
bl9iaXRyYXRlcykgY29uc3QKICAgICAgIFJUQ19SVU5fT04oJnNlcXVlbmNlZF9jaGVja2VyXyk7
CiAKICAgLy8gRnJvbSB0aGUgYXZhaWxhYmxlIHxiaXRyYXRlfCwgZWFjaCBvYnNlcnZlciB3aWxs
IGJlIGFsbG9jYXRlZCBhCkBAIC0yMTksNyArMjIyLDcgQEAgY2xhc3MgQml0cmF0ZUFsbG9jYXRv
ciA6IHB1YmxpYyBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsKICAgdm9pZCBEaXN0cmlidXRl
Qml0cmF0ZVJlbGF0aXZlbHkoCiAgICAgICB1aW50MzJfdCBiaXRyYXRlLAogICAgICAgY29uc3Qg
T2JzZXJ2ZXJBbGxvY2F0aW9uJiBvYnNlcnZlcnNfY2FwYWNpdGllcywKLSAgICAgIE9ic2VydmVy
QWxsb2NhdGlvbiogYWxsb2NhdGlvbikgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsK
KyAgICAgIE9ic2VydmVyQWxsb2NhdGlvbiogYWxsb2NhdGlvbikgY29uc3QgUlRDX1JVTl9PTigm
c2VxdWVuY2VkX2NoZWNrZXJfKTsKIAogICAvLyBBbGxvdyBwYWNrZXRzIHRvIGJlIHRyYW5zbWl0
dGVkIGluIHVwIHRvIDIgdGltZXMgbWF4IHZpZGVvIGJpdHJhdGUgaWYgdGhlCiAgIC8vIGJhbmR3
aWR0aCBlc3RpbWF0ZSBhbGxvd3MgaXQuCkBAIC0yMzIsNyArMjM1LDggQEAgY2xhc3MgQml0cmF0
ZUFsbG9jYXRvciA6IHB1YmxpYyBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsKICAgTGltaXRP
YnNlcnZlciogY29uc3QgbGltaXRfb2JzZXJ2ZXJfIFJUQ19HVUFSREVEX0JZKCZzZXF1ZW5jZWRf
Y2hlY2tlcl8pOwogICAvLyBTdG9yZWQgaW4gYSBsaXN0IHRvIGtlZXAgdHJhY2sgb2YgdGhlIGlu
c2VydGlvbiBvcmRlci4KICAgT2JzZXJ2ZXJDb25maWdzIGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmln
c18gUlRDX0dVQVJERURfQlkoJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0gIHVpbnQzMl90IGxhc3Rf
Yml0cmF0ZV9icHNfIFJUQ19HVUFSREVEX0JZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOworICB1aW50
MzJfdCBsYXN0X3RhcmdldF9icHNfIFJUQ19HVUFSREVEX0JZKCZzZXF1ZW5jZWRfY2hlY2tlcl8p
OworICB1aW50MzJfdCBsYXN0X2xpbmtfY2FwYWNpdHlfYnBzXyBSVENfR1VBUkRFRF9CWSgmc2Vx
dWVuY2VkX2NoZWNrZXJfKTsKICAgdWludDMyX3QgbGFzdF9ub25femVyb19iaXRyYXRlX2Jwc18g
UlRDX0dVQVJERURfQlkoJnNlcXVlbmNlZF9jaGVja2VyXyk7CiAgIHVpbnQ4X3QgbGFzdF9mcmFj
dGlvbl9sb3NzXyBSVENfR1VBUkRFRF9CWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKICAgaW50NjRf
dCBsYXN0X3J0dF8gUlRDX0dVQVJERURfQlkoJnNlcXVlbmNlZF9jaGVja2VyXyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJh
dGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYwppbmRleCAyOTYx
ZmQ0MDljZTk4OTIzNDg3YTJjM2RjNjRiOTNkYTk2NDcyNGFkLi4wNzcxZjc5OGVkY2Q4YjE5ZDM3
OTc1OWJjOGU0NGIwOGUyM2MzNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYml0cmF0
ZV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKQEAgLTU5LDE1ICs1OSwxMyBAQCBjbGFzcyBUZXN0Qml0
cmF0ZU9ic2VydmVyIDogcHVibGljIEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciB7CiAgICAgcHJv
dGVjdGlvbl9yYXRpb18gPSBwcm90ZWN0aW9uX3JhdGlvOwogICB9CiAKLSAgdWludDMyX3QgT25C
aXRyYXRlVXBkYXRlZCh1aW50MzJfdCBiaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90IGZyYWN0aW9uX2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBydHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwcm9i
aW5nX2ludGVydmFsX21zKSBvdmVycmlkZSB7Ci0gICAgbGFzdF9iaXRyYXRlX2Jwc18gPSBiaXRy
YXRlX2JwczsKLSAgICBsYXN0X2ZyYWN0aW9uX2xvc3NfID0gZnJhY3Rpb25fbG9zczsKLSAgICBs
YXN0X3J0dF9tc18gPSBydHQ7Ci0gICAgbGFzdF9wcm9iaW5nX2ludGVydmFsX21zXyA9IHByb2Jp
bmdfaW50ZXJ2YWxfbXM7Ci0gICAgcmV0dXJuIGJpdHJhdGVfYnBzICogcHJvdGVjdGlvbl9yYXRp
b187CisgIHVpbnQzMl90IE9uQml0cmF0ZVVwZGF0ZWQoQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUg
dXBkYXRlKSBvdmVycmlkZSB7CisgICAgbGFzdF9iaXRyYXRlX2Jwc18gPSB1cGRhdGUudGFyZ2V0
X2JpdHJhdGUuYnBzKCk7CisgICAgbGFzdF9mcmFjdGlvbl9sb3NzXyA9CisgICAgICAgIHJ0Yzo6
ZGNoZWNrZWRfY2FzdDx1aW50OF90Pih1cGRhdGUucGFja2V0X2xvc3NfcmF0aW8gKiAyNTYpOwor
ICAgIGxhc3RfcnR0X21zXyA9IHVwZGF0ZS5yb3VuZF90cmlwX3RpbWUubXMoKTsKKyAgICBsYXN0
X3Byb2JpbmdfaW50ZXJ2YWxfbXNfID0gdXBkYXRlLmJ3ZV9wZXJpb2QubXMoKTsKKyAgICByZXR1
cm4gdXBkYXRlLnRhcmdldF9iaXRyYXRlLmJwcygpICogcHJvdGVjdGlvbl9yYXRpb187CiAgIH0K
ICAgdWludDMyX3QgbGFzdF9iaXRyYXRlX2Jwc187CiAgIHVpbnQ4X3QgbGFzdF9mcmFjdGlvbl9s
b3NzXzsKQEAgLTc2LDYgKzc0LDE4IEBAIGNsYXNzIFRlc3RCaXRyYXRlT2JzZXJ2ZXIgOiBwdWJs
aWMgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyIHsKICAgZG91YmxlIHByb3RlY3Rpb25fcmF0aW9f
OwogfTsKIAorY2xhc3MgQml0cmF0ZUFsbG9jYXRvckZvclRlc3QgOiBwdWJsaWMgQml0cmF0ZUFs
bG9jYXRvciB7CisgcHVibGljOgorICB1c2luZyBCaXRyYXRlQWxsb2NhdG9yOjpCaXRyYXRlQWxs
b2NhdG9yOworICB2b2lkIE9uTmV0d29ya0NoYW5nZWQodWludDMyX3QgdGFyZ2V0X2JpdHJhdGVf
YnBzLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3NzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBydHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IGJ3ZV9wZXJpb2RfbXMpIHsKKyAgICBCaXRyYXRlQWxsb2NhdG9yOjpPbk5ldHdv
cmtDaGFuZ2VkKHRhcmdldF9iaXRyYXRlX2JwcywgdGFyZ2V0X2JpdHJhdGVfYnBzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25fbG9zcywgcnR0LCBid2Vf
cGVyaW9kX21zKTsKKyAgfQorfTsKKwogbmFtZXNwYWNlIHsKIGNvbnN0ZXhwciBpbnQ2NF90IGtE
ZWZhdWx0UHJvYmluZ0ludGVydmFsTXMgPSAzMDAwOwogY29uc3QgZG91YmxlIGtEZWZhdWx0Qml0
cmF0ZVByaW9yaXR5ID0gMS4wOwpAQCAtODMsNyArOTMsOCBAQCBjb25zdCBkb3VibGUga0RlZmF1
bHRCaXRyYXRlUHJpb3JpdHkgPSAxLjA7CiAKIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3JUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgotICBCaXRyYXRlQWxsb2NhdG9y
VGVzdCgpIDogYWxsb2NhdG9yXyhuZXcgQml0cmF0ZUFsbG9jYXRvcigmbGltaXRfb2JzZXJ2ZXJf
KSkgeworICBCaXRyYXRlQWxsb2NhdG9yVGVzdCgpCisgICAgICA6IGFsbG9jYXRvcl8obmV3IEJp
dHJhdGVBbGxvY2F0b3JGb3JUZXN0KCZsaW1pdF9vYnNlcnZlcl8pKSB7CiAgICAgYWxsb2NhdG9y
Xy0+T25OZXR3b3JrQ2hhbmdlZCgzMDAwMDB1LCAwLCAwLCBrRGVmYXVsdFByb2JpbmdJbnRlcnZh
bE1zKTsKICAgfQogICB+Qml0cmF0ZUFsbG9jYXRvclRlc3QoKSB7fQpAQCAtMTAwLDcgKzExMSw3
IEBAIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3JUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CiAgIH0KIAogICBOaWNlTW9jazxNb2NrTGltaXRPYnNlcnZlcj4gbGltaXRfb2JzZXJ2ZXJfOwot
ICBzdGQ6OnVuaXF1ZV9wdHI8Qml0cmF0ZUFsbG9jYXRvcj4gYWxsb2NhdG9yXzsKKyAgc3RkOjp1
bmlxdWVfcHRyPEJpdHJhdGVBbGxvY2F0b3JGb3JUZXN0PiBhbGxvY2F0b3JfOwogfTsKIAogVEVT
VF9GKEJpdHJhdGVBbGxvY2F0b3JUZXN0LCBVcGRhdGluZ0JpdHJhdGVPYnNlcnZlcikgewpAQCAt
MjE2LDcgKzIyNyw3IEBAIFRFU1RfRihCaXRyYXRlQWxsb2NhdG9yVGVzdCwgUmVtb3ZlT2JzZXJ2
ZXJUcmlnZ2Vyc0xpbWl0T2JzZXJ2ZXIpIHsKIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3JUZXN0Tm9F
bmZvcmNlTWluIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgogICBCaXRy
YXRlQWxsb2NhdG9yVGVzdE5vRW5mb3JjZU1pbigpCi0gICAgICA6IGFsbG9jYXRvcl8obmV3IEJp
dHJhdGVBbGxvY2F0b3IoJmxpbWl0X29ic2VydmVyXykpIHsKKyAgICAgIDogYWxsb2NhdG9yXyhu
ZXcgQml0cmF0ZUFsbG9jYXRvckZvclRlc3QoJmxpbWl0X29ic2VydmVyXykpIHsKICAgICBhbGxv
Y2F0b3JfLT5Pbk5ldHdvcmtDaGFuZ2VkKDMwMDAwMHUsIDAsIDAsIGtEZWZhdWx0UHJvYmluZ0lu
dGVydmFsTXMpOwogICB9CiAgIH5CaXRyYXRlQWxsb2NhdG9yVGVzdE5vRW5mb3JjZU1pbigpIHt9
CkBAIC0yMzIsNyArMjQzLDcgQEAgY2xhc3MgQml0cmF0ZUFsbG9jYXRvclRlc3ROb0VuZm9yY2VN
aW4gOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgICAgICAgICAgICBlbmZvcmNl
X21pbl9iaXRyYXRlLCB0cmFja19pZCwgYml0cmF0ZV9wcmlvcml0eSwgZmFsc2V9KTsKICAgfQog
ICBOaWNlTW9jazxNb2NrTGltaXRPYnNlcnZlcj4gbGltaXRfb2JzZXJ2ZXJfOwotICBzdGQ6OnVu
aXF1ZV9wdHI8Qml0cmF0ZUFsbG9jYXRvcj4gYWxsb2NhdG9yXzsKKyAgc3RkOjp1bmlxdWVfcHRy
PEJpdHJhdGVBbGxvY2F0b3JGb3JUZXN0PiBhbGxvY2F0b3JfOwogfTsKIAogLy8gVGhlIGZvbGxv
d2luZyB0aHJlZSB0ZXN0cyB2ZXJpZnkgZW5mb3JjaW5nIGEgbWluaW11bSBiaXRyYXRlIHdvcmtz
IGFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL2JpdHJhdGVfZXN0aW1hdG9yX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2VzdGltYXRvcl90ZXN0cy5jYwppbmRl
eCA3NjZlMzhjOTc4OGNjNDA5ZWQ0Nzk4OThjYTFiNzMxYzMzYzQ3NzM0Li4wODYyODI3ZDNhMjRh
Mzk2ZDMwZGM3NzQyNDdjNWE2YzIxYmJlMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfZXN0aW1hdG9yX3Rlc3RzLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYml0
cmF0ZV9lc3RpbWF0b3JfdGVzdHMuY2MKQEAgLTQ2LDggKzQ2LDYgQEAgY2xhc3MgTG9nT2JzZXJ2
ZXIgewogIHByaXZhdGU6CiAgIGNsYXNzIENhbGxiYWNrIDogcHVibGljIHJ0Yzo6TG9nU2luayB7
CiAgICBwdWJsaWM6Ci0gICAgQ2FsbGJhY2soKSA6IGRvbmVfKGZhbHNlLCBmYWxzZSkge30KLQog
ICAgIHZvaWQgT25Mb2dNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSBvdmVycmlk
ZSB7CiAgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0X3NlY3RfKTsKICAgICAgIC8vIEln
bm9yZSBsb2cgbGluZXMgdGhhdCBhcmUgZHVlIHRvIG1pc3NpbmcgQVNUIGV4dGVuc2lvbnMsIHRo
ZXNlIGFyZQpAQCAtMTExLDE0ICsxMDksMTQgQEAgY2xhc3MgQml0cmF0ZUVzdGltYXRvclRlc3Qg
OiBwdWJsaWMgdGVzdDo6Q2FsbFRlc3QgewogICAgICAgICAgICZ0YXNrX3F1ZXVlXywKICAgICAg
ICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAogICAgICAgICAgICAgICBD
bG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3
b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1
bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAg
ICAgICAgICBzZW5kZXJfY2FsbF8uZ2V0KCksIHBheWxvYWRfdHlwZV9tYXBfKSk7CiAgICAgICBz
ZW5kX3RyYW5zcG9ydF8tPlNldFJlY2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5SZWNlaXZlcigpKTsK
ICAgICAgIHJlY2VpdmVfdHJhbnNwb3J0Xy5yZXNldChuZXcgdGVzdDo6RGlyZWN0VHJhbnNwb3J0
KAogICAgICAgICAgICZ0YXNrX3F1ZXVlXywKICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxG
YWtlTmV0d29ya1BpcGU+KAogICAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygp
LCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZp
ZygpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWls
dEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAgICAgICByZWNlaXZlcl9jYWxsXy5n
ZXQoKSwgcGF5bG9hZF90eXBlX21hcF8pKTsKICAgICAgIHJlY2VpdmVfdHJhbnNwb3J0Xy0+U2V0
UmVjZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZlcigpKTsKIApAQCAtMTI2LDYgKzEyNCw4IEBA
IGNsYXNzIEJpdHJhdGVFc3RpbWF0b3JUZXN0IDogcHVibGljIHRlc3Q6OkNhbGxUZXN0IHsKICAg
ICAgIHZpZGVvX3NlbmRfY29uZmlnLnJ0cC5zc3Jjcy5wdXNoX2JhY2soa1ZpZGVvU2VuZFNzcmNz
WzBdKTsKICAgICAgIHZpZGVvX3NlbmRfY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9m
YWN0b3J5ID0KICAgICAgICAgICAmZmFrZV9lbmNvZGVyX2ZhY3RvcnlfOworICAgICAgdmlkZW9f
c2VuZF9jb25maWcuZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0K
KyAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKTsKICAgICAgIHZpZGVv
X3NlbmRfY29uZmlnLnJ0cC5wYXlsb2FkX25hbWUgPSAiRkFLRSI7CiAgICAgICB2aWRlb19zZW5k
X2NvbmZpZy5ydHAucGF5bG9hZF90eXBlID0ga0Zha2VWaWRlb1NlbmRQYXlsb2FkVHlwZTsKICAg
ICAgIFNldFZpZGVvU2VuZENvbmZpZyh2aWRlb19zZW5kX2NvbmZpZyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGwuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGwuY2MKaW5k
ZXggNjM1ODc0YjJkNjI0YTY1MmM5NjNhZjBjOWM4ODcwMWVjZjRjY2FhMy4uOTVmNjRlOTI0OTkw
NThkMjVmMjI5NWU1OTk2MzZjOWJhOWVmN2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbC5jYwpAQCAtMjIsNyArMjIs
NiBAQAogI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmgiCiAjaW5jbHVkZSAi
YXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uaCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19zdGF0ZS5o
IgotI2luY2x1ZGUgImF1ZGlvL3RpbWVfaW50ZXJ2YWwuaCIKICNpbmNsdWRlICJjYWxsL2JpdHJh
dGVfYWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiY2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAiY2FsbC9m
bGV4ZmVjX3JlY2VpdmVfc3RyZWFtX2ltcGwuaCIKQEAgLTMwLDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJjYWxsL3J0cF9zdHJlYW1fcmVjZWl2ZXJfY29udHJvbGxlci5oIgogI2luY2x1ZGUgImNhbGwv
cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0cmVhbV9jb25maWcuaCIK
LSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19z
ZW5kX3N0cmVhbV9jb25maWcuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9pbmNvbWluZy5oIgogI2luY2x1ZGUgImxvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuaCIKICNp
bmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF92aWRlb19yZWNl
aXZlX3N0cmVhbV9jb25maWcuaCIKQEAgLTU2LDYgKzU0LDcgQEAKICNpbmNsdWRlICJydGNfYmFz
ZS9zeW5jaHJvbml6YXRpb24vcndfbG9ja193cmFwcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
dGFza19xdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RyYWNl
X2V2ZW50LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKICNp
bmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jcHVfaW5mby5oIgpAQCAtMTQ2LDE4ICsx
NDUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8cnRjbG9nOjpTdHJlYW1Db25maWc+IENyZWF0ZVJ0Y0xv
Z1N0cmVhbUNvbmZpZygKICAgcmV0dXJuIHJ0Y2xvZ19jb25maWc7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gQ3JlYXRlUnRjTG9nU3RyZWFtQ29uZmlnKAotICAg
IGNvbnN0IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcpIHsKLSAgYXV0byBydGNsb2df
Y29uZmlnID0gYWJzbDo6bWFrZV91bmlxdWU8cnRjbG9nOjpTdHJlYW1Db25maWc+KCk7Ci0gIHJ0
Y2xvZ19jb25maWctPmxvY2FsX3NzcmMgPSBjb25maWcucnRwLnNzcmM7Ci0gIHJ0Y2xvZ19jb25m
aWctPnJ0cF9leHRlbnNpb25zID0gY29uZmlnLnJ0cC5leHRlbnNpb25zOwotICBpZiAoY29uZmln
LnNlbmRfY29kZWNfc3BlYykgewotICAgIHJ0Y2xvZ19jb25maWctPmNvZGVjcy5lbXBsYWNlX2Jh
Y2soY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+Zm9ybWF0Lm5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc2VuZF9jb2RlY19zcGVjLT5wYXlsb2FkX3R5
cGUsIDApOwotICB9Ci0gIHJldHVybiBydGNsb2dfY29uZmlnOwotfQotCiB9ICAvLyBuYW1lc3Bh
Y2UKIAogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTIzNiw2ICsyMjMsMTUgQEAgY2xhc3MgQ2Fs
bCBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OkNhbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBhbGxvY2F0ZWRfd2l0aG91dF9mZWVkYmFja19icHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhc19wYWNrZXRfZmVlZGJhY2spIG92ZXJy
aWRlOwogCisgIC8vIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgd2hlbiB0aGUgbWVkaWEgdHJhbnNw
b3J0IGlzIGNyZWF0ZWQgYW5kIHdoZW4gdGhlCisgIC8vIG1lZGlhIHRyYW5zcG9ydCBpcyBiZWlu
ZyBkZXN0cnVjdGVkLgorICAvLyBXZSBvbmx5IGFsbG93IG9uZSBtZWRpYSB0cmFuc3BvcnQgcGVy
IGNvbm5lY3Rpb24uCisgIC8vCisgIC8vIEl0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCBub24tbnVs
bCBhcmd1bWVudCBhdCBtb3N0IG9uY2UsIGFuZCBpZiBpdCB3YXMKKyAgLy8gY2FsbGVkIHdpdGgg
bm9uLW51bGwgYXJndW1lbnQsIGl0IGhhcyB0byBiZSBjYWxsZWQgd2l0aCBhIG51bGwgYXJndW1l
bnQKKyAgLy8gYXQgbGVhc3Qgb25jZSBhZnRlciB0aGF0LgorICB2b2lkIE1lZGlhVHJhbnNwb3J0
Q2hhbmdlKE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpIG92ZXJyaWRl
OworCiAgcHJpdmF0ZToKICAgRGVsaXZlcnlTdGF0dXMgRGVsaXZlclJ0Y3AoTWVkaWFUeXBlIG1l
ZGlhX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHBh
Y2tldCwKQEAgLTI1Niw2ICsyNTIsMTAgQEAgY2xhc3MgQ2FsbCBmaW5hbCA6IHB1YmxpYyB3ZWJy
dGM6OkNhbGwsCiAgIHZvaWQgVXBkYXRlSGlzdG9ncmFtcygpOwogICB2b2lkIFVwZGF0ZUFnZ3Jl
Z2F0ZU5ldHdvcmtTdGF0ZSgpOwogCisgIC8vICBJZiB8bWVkaWFfdHJhbnNwb3J0fCBpcyBub3Qg
bnVsbCwgaXQgcmVnaXN0ZXJzIHRoZSByYXRlIG9ic2VydmVyIGZvciB0aGUKKyAgLy8gIG1lZGlh
IHRyYW5zcG9ydC4KKyAgdm9pZCBSZWdpc3RlclJhdGVPYnNlcnZlcigpIFJUQ19MT0NLU19FWENM
VURFRCh0YXJnZXRfb2JzZXJ2ZXJfY3JpdF8pOworCiAgIENsb2NrKiBjb25zdCBjbG9ja187CiAK
ICAgY29uc3QgaW50IG51bV9jcHVfY29yZXNfOwpAQCAtMzQ2LDcgKzM0Niw2IEBAIGNsYXNzIENh
bGwgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpDYWxsLAogICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90
PiBsYXN0X3JlY2VpdmVkX3J0cF9hdWRpb19tc187CiAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+
IGZpcnN0X3JlY2VpdmVkX3J0cF92aWRlb19tc187CiAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+
IGxhc3RfcmVjZWl2ZWRfcnRwX3ZpZGVvX21zXzsKLSAgVGltZUludGVydmFsIHNlbnRfcnRwX2F1
ZGlvX3RpbWVyX21zXzsKIAogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBsYXN0X2JhbmR3aWR0aF9i
cHNfY3JpdF87CiAgIHVpbnQzMl90IGxhc3RfYmFuZHdpZHRoX2Jwc18gUlRDX0dVQVJERURfQlko
Jmxhc3RfYmFuZHdpZHRoX2Jwc19jcml0Xyk7CkBAIC0zNzQsNiArMzczLDE1IEBAIGNsYXNzIENh
bGwgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpDYWxsLAogICAvLyBEZWNsYXJlZCBsYXN0IHNpbmNl
IGl0IHdpbGwgaXNzdWUgY2FsbGJhY2tzIGZyb20gYSB0YXNrIHF1ZXVlLiBEZWNsYXJpbmcgaXQK
ICAgLy8gbGFzdCBlbnN1cmVzIHRoYXQgaXQgaXMgZGVzdHJveWVkIGZpcnN0IGFuZCBhbnkgcnVu
bmluZyB0YXNrcyBhcmUgZmluaXNoZWQuCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRD
b250cm9sbGVyU2VuZEludGVyZmFjZT4gdHJhbnNwb3J0X3NlbmRfOworCisgIC8vIFRoaXMgaXMg
YSBwcmVjYXV0aW9uLCBzaW5jZSB8TWVkaWFUcmFuc3BvcnRDaGFuZ2V8IGlzIG5vdCBndWFyYW50
ZWVkIHRvIGJlCisgIC8vIGludm9rZWQgb24gYSBwYXJ0aWN1bGFyIHRocmVhZC4KKyAgcnRjOjpD
cml0aWNhbFNlY3Rpb24gdGFyZ2V0X29ic2VydmVyX2NyaXRfOworICBib29sIGlzX3RhcmdldF9y
YXRlX29ic2VydmVyX3JlZ2lzdGVyZWRfCisgICAgICBSVENfR1VBUkRFRF9CWSgmdGFyZ2V0X29i
c2VydmVyX2NyaXRfKSA9IGZhbHNlOworICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFf
dHJhbnNwb3J0XworICAgICAgUlRDX0dVQVJERURfQlkoJnRhcmdldF9vYnNlcnZlcl9jcml0Xykg
PSBudWxscHRyOworCiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oQ2FsbCk7CiB9Owog
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCkBAIC00NDQsNyArNDUyLDYgQEAgQ2FsbDo6Q2FsbChj
b25zdCBDYWxsOjpDb25maWcmIGNvbmZpZywKICAgICAgIHZpZGVvX3NlbmRfZGVsYXlfc3RhdHNf
KG5ldyBTZW5kRGVsYXlTdGF0cyhjbG9ja18pKSwKICAgICAgIHN0YXJ0X21zXyhjbG9ja18tPlRp
bWVJbk1pbGxpc2Vjb25kcygpKSB7CiAgIFJUQ19EQ0hFQ0soY29uZmlnLmV2ZW50X2xvZyAhPSBu
dWxscHRyKTsKLSAgdHJhbnNwb3J0X3NlbmQtPlJlZ2lzdGVyVGFyZ2V0VHJhbnNmZXJSYXRlT2Jz
ZXJ2ZXIodGhpcyk7CiAgIHRyYW5zcG9ydF9zZW5kXyA9IHN0ZDo6bW92ZSh0cmFuc3BvcnRfc2Vu
ZCk7CiAgIHRyYW5zcG9ydF9zZW5kX3B0cl8gPSB0cmFuc3BvcnRfc2VuZF8uZ2V0KCk7CiAKQEAg
LTQ4Niw2ICs0OTMsNDMgQEAgQ2FsbDo6fkNhbGwoKSB7CiAgIFVwZGF0ZUhpc3RvZ3JhbXMoKTsK
IH0KIAordm9pZCBDYWxsOjpSZWdpc3RlclJhdGVPYnNlcnZlcigpIHsKKyAgcnRjOjpDcml0U2Nv
cGUgbG9jaygmdGFyZ2V0X29ic2VydmVyX2NyaXRfKTsKKworICBpZiAoaXNfdGFyZ2V0X3JhdGVf
b2JzZXJ2ZXJfcmVnaXN0ZXJlZF8pIHsKKyAgICByZXR1cm47CisgIH0KKworICBpc190YXJnZXRf
cmF0ZV9vYnNlcnZlcl9yZWdpc3RlcmVkXyA9IHRydWU7CisKKyAgaWYgKG1lZGlhX3RyYW5zcG9y
dF8pIHsKKyAgICBtZWRpYV90cmFuc3BvcnRfLT5BZGRUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZl
cih0aGlzKTsKKyAgfSBlbHNlIHsKKyAgICB0cmFuc3BvcnRfc2VuZF9wdHJfLT5SZWdpc3RlclRh
cmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKHRoaXMpOworICB9Cit9CisKK3ZvaWQgQ2FsbDo6TWVk
aWFUcmFuc3BvcnRDaGFuZ2UoTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9y
dCkgeworICBydGM6OkNyaXRTY29wZSBsb2NrKCZ0YXJnZXRfb2JzZXJ2ZXJfY3JpdF8pOworCisg
IGlmIChpc190YXJnZXRfcmF0ZV9vYnNlcnZlcl9yZWdpc3RlcmVkXykgeworICAgIC8vIE9ubHkg
dXNlZCB0byB1bnJlZ2lzdGVyIHJhdGUgb2JzZXJ2ZXIgZnJvbSBtZWRpYSB0cmFuc3BvcnQuIFJl
Z2lzdHJhdGlvbgorICAgIC8vIGhhcHBlbnMgd2hlbiB0aGUgc3RyZWFtIGlzIGNyZWF0ZWQuCisg
ICAgaWYgKCFtZWRpYV90cmFuc3BvcnQgJiYgbWVkaWFfdHJhbnNwb3J0XykgeworICAgICAgbWVk
aWFfdHJhbnNwb3J0Xy0+UmVtb3ZlVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIodGhpcyk7Cisg
ICAgICBtZWRpYV90cmFuc3BvcnRfID0gbnVsbHB0cjsKKyAgICAgIGlzX3RhcmdldF9yYXRlX29i
c2VydmVyX3JlZ2lzdGVyZWRfID0gZmFsc2U7CisgICAgfQorICB9IGVsc2UgaWYgKG1lZGlhX3Ry
YW5zcG9ydCkgeworICAgIFJUQ19EQ0hFQ0sobWVkaWFfdHJhbnNwb3J0XyA9PSBudWxscHRyIHx8
CisgICAgICAgICAgICAgICBtZWRpYV90cmFuc3BvcnRfID09IG1lZGlhX3RyYW5zcG9ydCkKKyAg
ICAgICAgPDwgIm1lZGlhX3RyYW5zcG9ydF89IiA8PCAobWVkaWFfdHJhbnNwb3J0XyAhPSBudWxs
cHRyKQorICAgICAgICA8PCAiLCAobWVkaWFfdHJhbnNwb3J0Xz09bWVkaWFfdHJhbnNwb3J0KT0i
CisgICAgICAgIDw8IChtZWRpYV90cmFuc3BvcnRfID09IG1lZGlhX3RyYW5zcG9ydCk7CisgICAg
bWVkaWFfdHJhbnNwb3J0XyA9IG1lZGlhX3RyYW5zcG9ydDsKKyAgfQorfQorCiB2b2lkIENhbGw6
OlVwZGF0ZUhpc3RvZ3JhbXMoKSB7CiAgIFJUQ19ISVNUT0dSQU1fQ09VTlRTXzEwMDAwMCgKICAg
ICAgICJXZWJSVEMuQ2FsbC5MaWZldGltZUluU2Vjb25kcyIsCkBAIC00OTUsMTEgKzUzOSw2IEBA
IHZvaWQgQ2FsbDo6VXBkYXRlSGlzdG9ncmFtcygpIHsKIHZvaWQgQ2FsbDo6VXBkYXRlU2VuZEhp
c3RvZ3JhbXMoaW50NjRfdCBmaXJzdF9zZW50X3BhY2tldF9tcykgewogICBpZiAoZmlyc3Rfc2Vu
dF9wYWNrZXRfbXMgPT0gLTEpCiAgICAgcmV0dXJuOwotICBpZiAoIXNlbnRfcnRwX2F1ZGlvX3Rp
bWVyX21zXy5FbXB0eSgpKSB7Ci0gICAgUlRDX0hJU1RPR1JBTV9DT1VOVFNfMTAwMDAwKAotICAg
ICAgICAiV2ViUlRDLkNhbGwuVGltZVNlbmRpbmdBdWRpb1J0cFBhY2tldHNJblNlY29uZHMiLAot
ICAgICAgICBzZW50X3J0cF9hdWRpb190aW1lcl9tc18uTGVuZ3RoKCkgLyAxMDAwKTsKLSAgfQog
ICBpbnQ2NF90IGVsYXBzZWRfc2VjID0KICAgICAgIChjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25k
cygpIC0gZmlyc3Rfc2VudF9wYWNrZXRfbXMpIC8gMTAwMDsKICAgaWYgKGVsYXBzZWRfc2VjIDwg
bWV0cmljczo6a01pblJ1blRpbWVJblNlY29uZHMpCkBAIC01NzgsOSArNjE3LDE2IEBAIHdlYnJ0
Yzo6QXVkaW9TZW5kU3RyZWFtKiBDYWxsOjpDcmVhdGVBdWRpb1NlbmRTdHJlYW0oCiAgICAgY29u
c3Qgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyYgY29uZmlnKSB7CiAgIFRSQUNFX0VW
RU5UMCgid2VicnRjIiwgIkNhbGw6OkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbSIpOwogICBSVENfRENI
RUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJmNvbmZpZ3VyYXRpb25fc2VxdWVuY2VfY2hlY2tlcl8p
OwotICBldmVudF9sb2dfLT5Mb2coYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRpb1NlbmRT
dHJlYW1Db25maWc+KAotICAgICAgQ3JlYXRlUnRjTG9nU3RyZWFtQ29uZmlnKGNvbmZpZykpKTsK
IAorICB7CisgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmdGFyZ2V0X29ic2VydmVyX2NyaXRfKTsK
KyAgICBSVENfRENIRUNLKG1lZGlhX3RyYW5zcG9ydF8gPT0gY29uZmlnLm1lZGlhX3RyYW5zcG9y
dCk7CisgIH0KKworICBSZWdpc3RlclJhdGVPYnNlcnZlcigpOworCisgIC8vIFN0cmVhbSBjb25m
aWcgaXMgbG9nZ2VkIGluIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlndXJlU3RyZWFtLCBhcyBpdCBt
YXkKKyAgLy8gY2hhbmdlIGR1cmluZyB0aGUgc3RyZWFtJ3MgbGlmZXRpbWUuCiAgIGFic2w6Om9w
dGlvbmFsPFJ0cFN0YXRlPiBzdXNwZW5kZWRfcnRwX3N0YXRlOwogICB7CiAgICAgY29uc3QgYXV0
byYgaXRlciA9IHN1c3BlbmRlZF9hdWRpb19zZW5kX3NzcmNzXy5maW5kKGNvbmZpZy5ydHAuc3Ny
Yyk7CkBAIC01OTYsNyArNjQyLDcgQEAgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW0qIENhbGw6OkNy
ZWF0ZUF1ZGlvU2VuZFN0cmVhbSgKICAgICAgIGNvbmZpZywgY29uZmlnXy5hdWRpb19zdGF0ZSwg
dHJhbnNwb3J0X3NlbmRfcHRyXy0+R2V0V29ya2VyUXVldWUoKSwKICAgICAgIG1vZHVsZV9wcm9j
ZXNzX3RocmVhZF8uZ2V0KCksIHRyYW5zcG9ydF9zZW5kX3B0cl8sCiAgICAgICBiaXRyYXRlX2Fs
bG9jYXRvcl8uZ2V0KCksIGV2ZW50X2xvZ18sIGNhbGxfc3RhdHNfLmdldCgpLAotICAgICAgc3Vz
cGVuZGVkX3J0cF9zdGF0ZSwgJnNlbnRfcnRwX2F1ZGlvX3RpbWVyX21zXyk7CisgICAgICBzdXNw
ZW5kZWRfcnRwX3N0YXRlKTsKICAgewogICAgIFdyaXRlTG9ja1Njb3BlZCB3cml0ZV9sb2NrKCpz
ZW5kX2NyaXRfKTsKICAgICBSVENfRENIRUNLKGF1ZGlvX3NlbmRfc3NyY3NfLmZpbmQoY29uZmln
LnJ0cC5zc3JjKSA9PQpAQCAtNzA4LDYgKzc1NCw4IEBAIHdlYnJ0Yzo6VmlkZW9TZW5kU3RyZWFt
KiBDYWxsOjpDcmVhdGVWaWRlb1NlbmRTdHJlYW0oCiAgIFRSQUNFX0VWRU5UMCgid2VicnRjIiwg
IkNhbGw6OkNyZWF0ZVZpZGVvU2VuZFN0cmVhbSIpOwogICBSVENfRENIRUNLX0NBTExFRF9TRVFV
RU5USUFMTFkoJmNvbmZpZ3VyYXRpb25fc2VxdWVuY2VfY2hlY2tlcl8pOwogCisgIFJlZ2lzdGVy
UmF0ZU9ic2VydmVyKCk7CisKICAgdmlkZW9fc2VuZF9kZWxheV9zdGF0c18tPkFkZFNzcmNzKGNv
bmZpZyk7CiAgIGZvciAoc2l6ZV90IHNzcmNfaW5kZXggPSAwOyBzc3JjX2luZGV4IDwgY29uZmln
LnJ0cC5zc3Jjcy5zaXplKCk7CiAgICAgICAgKytzc3JjX2luZGV4KSB7CkBAIC0xMDQ0LDYgKzEw
OTIsMTggQEAgdm9pZCBDYWxsOjpPblNlbnRQYWNrZXQoY29uc3QgcnRjOjpTZW50UGFja2V0JiBz
ZW50X3BhY2tldCkgewogfQogCiB2b2lkIENhbGw6Ok9uVGFyZ2V0VHJhbnNmZXJSYXRlKFRhcmdl
dFRyYW5zZmVyUmF0ZSBtc2cpIHsKKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTcxOSkKKyAg
Ly8gQ2FsbDo6T25UYXJnZXRUcmFuc2ZlclJhdGUgcmVxdWlyZXMgdGhhdCBvbiB0YXJnZXQgdHJh
bnNmZXIgcmF0ZSBpcyBpbnZva2VkCisgIC8vIGZyb20gdGhlIHdvcmtlciBxdWV1ZSAoYmVjYXVz
ZSBiaXRyYXRlX2FsbG9jYXRvcl8gcmVxdWlyZXMgaXQpLiBNZWRpYQorICAvLyB0cmFuc3BvcnQg
ZG9lcyBub3QgZ3VhcmFudGVlIHRoZSBjYWxsYmFjayBvbiB0aGUgd29ya2VyIHF1ZXVlLgorICAv
LyBXaGVuIHRoZSB0aHJlYWRpbmcgbW9kZWwgZm9yIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlIGlz
IHVwZGF0ZSwgcmVjb25zaWRlcgorICAvLyBjaGFuZ2luZyB0aGlzIGltcGxlbWVudGF0aW9uLgor
ICBpZiAoIXRyYW5zcG9ydF9zZW5kX3B0cl8tPkdldFdvcmtlclF1ZXVlKCktPklzQ3VycmVudCgp
KSB7CisgICAgdHJhbnNwb3J0X3NlbmRfcHRyXy0+R2V0V29ya2VyUXVldWUoKS0+UG9zdFRhc2so
CisgICAgICAgIFt0aGlzLCBtc2ddIHsgdGhpcy0+T25UYXJnZXRUcmFuc2ZlclJhdGUobXNnKTsg
fSk7CisgICAgcmV0dXJuOworICB9CisKICAgdWludDMyX3QgdGFyZ2V0X2JpdHJhdGVfYnBzID0g
bXNnLnRhcmdldF9yYXRlLmJwcygpOwogICBpbnQgbG9zc19yYXRpb18yNTUgPSBtc2cubmV0d29y
a19lc3RpbWF0ZS5sb3NzX3JhdGVfcmF0aW8gKiAyNTU7CiAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9z
cyA9CkBAIC0xMDU3LDggKzExMTcsOSBAQCB2b2lkIENhbGw6Ok9uVGFyZ2V0VHJhbnNmZXJSYXRl
KFRhcmdldFRyYW5zZmVyUmF0ZSBtc2cpIHsKICAgfQogICAvLyBGb3IgY29udHJvbGxpbmcgdGhl
IHJhdGUgb2YgZmVlZGJhY2sgbWVzc2FnZXMuCiAgIHJlY2VpdmVfc2lkZV9jY18uT25CaXRyYXRl
Q2hhbmdlZCh0YXJnZXRfYml0cmF0ZV9icHMpOwotICBiaXRyYXRlX2FsbG9jYXRvcl8tPk9uTmV0
d29ya0NoYW5nZWQodGFyZ2V0X2JpdHJhdGVfYnBzLCBmcmFjdGlvbl9sb3NzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnR0X21zLCBwcm9iaW5nX2ludGVydmFsX21z
KTsKKyAgYml0cmF0ZV9hbGxvY2F0b3JfLT5Pbk5ldHdvcmtDaGFuZ2VkKHRhcmdldF9iaXRyYXRl
X2JwcywgYmFuZHdpZHRoX2JwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZyYWN0aW9uX2xvc3MsIHJ0dF9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2JpbmdfaW50ZXJ2YWxfbXMpOwogCiAgIC8vIElnbm9yZSB1cGRhdGVzIGlm
IGJpdHJhdGUgaXMgemVybyAodGhlIGFnZ3JlZ2F0ZSBuZXR3b3JrIHN0YXRlIGlzIGRvd24pLgog
ICBpZiAodGFyZ2V0X2JpdHJhdGVfYnBzID09IDApIHsKQEAgLTEyMTUsOCArMTI3NiwxMCBAQCBQ
YWNrZXRSZWNlaXZlcjo6RGVsaXZlcnlTdGF0dXMgQ2FsbDo6RGVsaXZlclJ0cChNZWRpYVR5cGUg
bWVkaWFfdHlwZSwKIAogICBpZiAocGFja2V0X3RpbWVfdXMgIT0gLTEpIHsKICAgICBpZiAocmVj
ZWl2ZV90aW1lX2NhbGN1bGF0b3JfKSB7CisgICAgICAvLyBSZXBhaXIgcGFja2V0X3RpbWVfdXMg
Zm9yIGNsb2NrIHJlc2V0cyBieSBjb21wYXJpbmcgYSBuZXcgcmVhZCBvZgorICAgICAgLy8gdGhl
IHNhbWUgY2xvY2sgKFRpbWVVVENNaWNyb3MpIHRvIGEgbW9ub3RvbmljIGNsb2NrIHJlYWRpbmcu
CiAgICAgICBwYWNrZXRfdGltZV91cyA9IHJlY2VpdmVfdGltZV9jYWxjdWxhdG9yXy0+UmVjb25j
aWxlUmVjZWl2ZVRpbWVzKAotICAgICAgICAgIHBhY2tldF90aW1lX3VzLCBjbG9ja18tPlRpbWVJ
bk1pY3Jvc2Vjb25kcygpKTsKKyAgICAgICAgICBwYWNrZXRfdGltZV91cywgcnRjOjpUaW1lVVRD
TWljcm9zKCksIGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkpOwogICAgIH0KICAgICBwYXJz
ZWRfcGFja2V0LnNldF9hcnJpdmFsX3RpbWVfbXMoKHBhY2tldF90aW1lX3VzICsgNTAwKSAvIDEw
MDApOwogICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL2NhbGwuaAppbmRleCA0MTY3Mjk2ZDc1NmM1NDdmNDM0ZWZkNmM1
NTNhZTY5NzE2MDliM2U0Li5jMGUzMWMwOTAyYjNjOTZkY2QwMTA3YzdhODNlOGM1YzhmNmM4MTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL2NhbGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL2NhbGwuaApAQCAtMjQsMTEgKzI0LDEwIEBACiAjaW5jbHVkZSAiY2FsbC9ydHBfdHJh
bnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJjYWxsL3ZpZGVv
X3JlY2VpdmVfc3RyZWFtLmgiCiAjaW5jbHVkZSAiY2FsbC92aWRlb19zZW5kX3N0cmVhbS5oIgot
I2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5j
bHVkZSAicnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29yay9z
ZW50X3BhY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdvcmtyb3V0ZS5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3NvY2tldC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtNTgsNiAr
NTcsMTEgQEAgY2xhc3MgQ2FsbCB7CiAKICAgdmlydHVhbCBBdWRpb1NlbmRTdHJlYW0qIENyZWF0
ZUF1ZGlvU2VuZFN0cmVhbSgKICAgICAgIGNvbnN0IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnJiBj
b25maWcpID0gMDsKKworICAvLyBHZXRzIGNhbGxlZCB3aGVuIG1lZGlhIHRyYW5zcG9ydCBpcyBj
cmVhdGVkIG9yIHJlbW92ZWQuCisgIHZpcnR1YWwgdm9pZCBNZWRpYVRyYW5zcG9ydENoYW5nZSgK
KyAgICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNl
KSA9IDA7CisKICAgdmlydHVhbCB2b2lkIERlc3Ryb3lBdWRpb1NlbmRTdHJlYW0oQXVkaW9TZW5k
U3RyZWFtKiBzZW5kX3N0cmVhbSkgPSAwOwogCiAgIHZpcnR1YWwgQXVkaW9SZWNlaXZlU3RyZWFt
KiBDcmVhdGVBdWRpb1JlY2VpdmVTdHJlYW0oCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxfY29uZmlnLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX2NvbmZpZy5jYwppbmRl
eCBkMzQyNWFhNTc5OTdhOTZlZjI5NzAyYjA4ZTEzMGVjNGEyYjk1YThjLi5iMTQ5Yzg4OWVhZTAy
OGI5ZGQzOTgzYzZlMDM0OTE1MTZmMjVkNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxfY29uZmlnLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbF9jb25maWcuY2MK
QEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgImNhbGwvY2FsbF9jb25maWcuaCIKIAorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogQ2FsbENv
bmZpZzo6Q2FsbENvbmZpZyhSdGNFdmVudExvZyogZXZlbnRfbG9nKSA6IGV2ZW50X2xvZyhldmVu
dF9sb2cpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvY2FsbF9wZXJmX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX3BlcmZfdGVzdHMuY2MKaW5kZXggOGZjZDU2NmY4
MWE4MjQxZGUwYWQyZmE2YjFhNWY2NGUyMDk3MWFmYi4uNzJhYTc4YzVmNzc3MGVhYzEzMzQxNjM5
MTdlMmZjNzBjYzljMGJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX3BlcmZfdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX3BlcmZfdGVzdHMuY2MKQEAg
LTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8v
YnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBp
L3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgImFwaS92aWRlb19j
b2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25maWcuaCIKICNpbmNsdWRlICJjYWxsL2NhbGwuaCIKQEAg
LTY0LDcgKzY1LDcgQEAgY2xhc3MgQ2FsbFBlcmZUZXN0IDogcHVibGljIHRlc3Q6OkNhbGxUZXN0
IHsKIAogICB2b2lkIFRlc3RNaW5UcmFuc21pdEJpdHJhdGUoYm9vbCBwYWRfdG9fbWluX2JpdHJh
dGUpOwogCi0gIHZvaWQgVGVzdENhcHR1cmVOdHBUaW1lKGNvbnN0IERlZmF1bHROZXR3b3JrU2lt
dWxhdGlvbkNvbmZpZyYgbmV0X2NvbmZpZywKKyAgdm9pZCBUZXN0Q2FwdHVyZU50cFRpbWUoY29u
c3QgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyYgbmV0X2NvbmZpZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHRocmVzaG9sZF9tcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHN0YXJ0X3RpbWVfbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBydW5f
dGltZV9tcyk7CkBAIC0xNTIsNyArMTUzLDcgQEAgdm9pZCBDYWxsUGVyZlRlc3Q6OlRlc3RBdWRp
b1ZpZGVvU3luYyhGZWNNb2RlIGZlYywKICAgY29uc3QgdWludDMyX3Qga0F1ZGlvU2VuZFNzcmMg
PSAxMjM0OwogICBjb25zdCB1aW50MzJfdCBrQXVkaW9SZWN2U3NyYyA9IDU2Nzg7CiAKLSAgRGVm
YXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGF1ZGlvX25ldF9jb25maWc7CisgIEJ1aWx0SW5O
ZXR3b3JrQmVoYXZpb3JDb25maWcgYXVkaW9fbmV0X2NvbmZpZzsKICAgYXVkaW9fbmV0X2NvbmZp
Zy5xdWV1ZV9kZWxheV9tcyA9IDUwMDsKICAgYXVkaW9fbmV0X2NvbmZpZy5sb3NzX3BlcmNlbnQg
PSA1OwogCkBAIC0yMTcsNyArMjE4LDcgQEAgdm9pZCBDYWxsUGVyZlRlc3Q6OlRlc3RBdWRpb1Zp
ZGVvU3luYyhGZWNNb2RlIGZlYywKICAgICAgICAgdGVzdDo6UGFja2V0VHJhbnNwb3J0OjprU2Vu
ZGVyLCB2aWRlb19wdF9tYXAsCiAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3Jr
UGlwZT4oCiAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtl
X3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2
aW9yQ29uZmlnKCkpKSk7CiAgICAgdmlkZW9fc2VuZF90cmFuc3BvcnQtPlNldFJlY2VpdmVyKHJl
Y2VpdmVyX2NhbGxfLT5SZWNlaXZlcigpKTsKIAogICAgIHJlY2VpdmVfdHJhbnNwb3J0ID0gYWJz
bDo6bWFrZV91bmlxdWU8dGVzdDo6UGFja2V0VHJhbnNwb3J0PigKQEAgLTIyNSwxMyArMjI2LDE0
IEBAIHZvaWQgQ2FsbFBlcmZUZXN0OjpUZXN0QXVkaW9WaWRlb1N5bmMoRmVjTW9kZSBmZWMsCiAg
ICAgICAgIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1JlY2VpdmVyLCBwYXlsb2FkX3R5cGVfbWFw
XywKICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKICAgICAgICAg
ICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRl
ZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERl
ZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpKTsK
ICAgICByZWNlaXZlX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZl
cigpKTsKIAogICAgIENyZWF0ZVNlbmRDb25maWcoMSwgMCwgMCwgdmlkZW9fc2VuZF90cmFuc3Bv
cnQuZ2V0KCkpOwogICAgIENyZWF0ZU1hdGNoaW5nUmVjZWl2ZUNvbmZpZ3MocmVjZWl2ZV90cmFu
c3BvcnQuZ2V0KCkpOwogCi0gICAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgYXVkaW9fc2VuZF9j
b25maWcoYXVkaW9fc2VuZF90cmFuc3BvcnQuZ2V0KCkpOworICAgIEF1ZGlvU2VuZFN0cmVhbTo6
Q29uZmlnIGF1ZGlvX3NlbmRfY29uZmlnKGF1ZGlvX3NlbmRfdHJhbnNwb3J0LmdldCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNw
b3J0PSovbnVsbHB0cik7CiAgICAgYXVkaW9fc2VuZF9jb25maWcucnRwLnNzcmMgPSBrQXVkaW9T
ZW5kU3NyYzsKICAgICBhdWRpb19zZW5kX2NvbmZpZy5zZW5kX2NvZGVjX3NwZWMgPSBBdWRpb1Nl
bmRTdHJlYW06OkNvbmZpZzo6U2VuZENvZGVjU3BlYygKICAgICAgICAga0F1ZGlvU2VuZFBheWxv
YWRUeXBlLCB7IklTQUMiLCAxNjAwMCwgMX0pOwpAQCAtMzM3LDE0ICszMzksMTQgQEAgVEVTVF9G
KENhbGxQZXJmVGVzdCwgUGxheXNPdXRBdWRpb0FuZFZpZGVvSW5TeW5jV2l0aFZpZGVvRmFzdGVy
VGhhbkF1ZGlvRHJpZnQpIHsKIH0KIAogdm9pZCBDYWxsUGVyZlRlc3Q6OlRlc3RDYXB0dXJlTnRw
VGltZSgKLSAgICBjb25zdCBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcmIG5ldF9jb25m
aWcsCisgICAgY29uc3QgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyYgbmV0X2NvbmZpZywK
ICAgICBpbnQgdGhyZXNob2xkX21zLAogICAgIGludCBzdGFydF90aW1lX21zLAogICAgIGludCBy
dW5fdGltZV9tcykgewogICBjbGFzcyBDYXB0dXJlTnRwVGltZU9ic2VydmVyIDogcHVibGljIHRl
c3Q6OkVuZFRvRW5kVGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBydGM6OlZpZGVvU2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiB7CiAgICBwdWJsaWM6Ci0gICAg
Q2FwdHVyZU50cFRpbWVPYnNlcnZlcihjb25zdCBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25m
aWcmIG5ldF9jb25maWcsCisgICAgQ2FwdHVyZU50cFRpbWVPYnNlcnZlcihjb25zdCBCdWlsdElu
TmV0d29ya0JlaGF2aW9yQ29uZmlnJiBuZXRfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHRocmVzaG9sZF9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz
dGFydF90aW1lX21zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJ1bl90aW1lX21z
KQpAQCAtNDYxLDcgKzQ2Myw3IEBAIHZvaWQgQ2FsbFBlcmZUZXN0OjpUZXN0Q2FwdHVyZU50cFRp
bWUoCiAgICAgfQogCiAgICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF87Ci0gICAgY29uc3Qg
RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIG5ldF9jb25maWdfOworICAgIGNvbnN0IEJ1
aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgbmV0X2NvbmZpZ187CiAgICAgQ2xvY2sqIGNvbnN0
IGNsb2NrXzsKICAgICBpbnQgdGhyZXNob2xkX21zXzsKICAgICBpbnQgc3RhcnRfdGltZV9tc187
CkBAIC00NzgsMTAgKzQ4MCwxMCBAQCB2b2lkIENhbGxQZXJmVGVzdDo6VGVzdENhcHR1cmVOdHBU
aW1lKAogICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9CiAKLS8vIEZsYWt5IHRlc3RzLCBkaXNhYmxl
ZCBvbiBNYWMgZHVlIHRvIHdlYnJ0Yzo4MjkxLgotI2lmICEoZGVmaW5lZChXRUJSVENfTUFDKSkK
Ky8vIEZsYWt5IHRlc3RzLCBkaXNhYmxlZCBvbiBNYWMgYW5kIFdpbmRvd3MgZHVlIHRvIHdlYnJ0
Yzo4MjkxLgorI2lmICEoZGVmaW5lZChXRUJSVENfTUFDKSB8fCBkZWZpbmVkKFdFQlJUQ19XSU4p
KQogVEVTVF9GKENhbGxQZXJmVGVzdCwgQ2FwdHVyZU50cFRpbWVXaXRoTmV0d29ya0RlbGF5KSB7
Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBuZXRfY29uZmlnOworICBCdWlsdElu
TmV0d29ya0JlaGF2aW9yQ29uZmlnIG5ldF9jb25maWc7CiAgIG5ldF9jb25maWcucXVldWVfZGVs
YXlfbXMgPSAxMDA7CiAgIC8vIFRPRE8od3UpOiBsb3dlciB0aGUgdGhyZXNob2xkIGFzIHRoZSBj
YWxjdWxhdGlvbi9lc3RpbWF0YXRpb24gYmVjb21lcyBtb3JlCiAgIC8vIGFjY3VyYXRlLgpAQCAt
NDkyLDcgKzQ5NCw3IEBAIFRFU1RfRihDYWxsUGVyZlRlc3QsIENhcHR1cmVOdHBUaW1lV2l0aE5l
dHdvcmtEZWxheSkgewogfQogCiBURVNUX0YoQ2FsbFBlcmZUZXN0LCBDYXB0dXJlTnRwVGltZVdp
dGhOZXR3b3JrSml0dGVyKSB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBuZXRf
Y29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIG5ldF9jb25maWc7CiAgIG5l
dF9jb25maWcucXVldWVfZGVsYXlfbXMgPSAxMDA7CiAgIG5ldF9jb25maWcuZGVsYXlfc3RhbmRh
cmRfZGV2aWF0aW9uX21zID0gMTA7CiAgIC8vIFRPRE8od3UpOiBsb3dlciB0aGUgdGhyZXNob2xk
IGFzIHRoZSBjYWxjdWxhdGlvbi9lc3RpbWF0YXRpb24gYmVjb21lcyBtb3JlCkBAIC03MjQsMTIg
KzcyNiwxMyBAQCBURVNUX0YoQ2FsbFBlcmZUZXN0LCBNQVlCRV9LZWVwc0hpZ2hCaXRyYXRlV2hl
blJlY29uZmlndXJpbmdTZW5kZXIpIHsKICAgICBCaXRyYXRlT2JzZXJ2ZXIoKQogICAgICAgICA6
IEVuZFRvRW5kVGVzdChrRGVmYXVsdFRpbWVvdXRNcyksCiAgICAgICAgICAgRmFrZUVuY29kZXIo
Q2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSksCi0gICAgICAgICAgdGltZV90b19yZWNvbmZpZ3Vy
ZV8oZmFsc2UsIGZhbHNlKSwKICAgICAgICAgICBlbmNvZGVyX2luaXRzXygwKSwKICAgICAgICAg
ICBsYXN0X3NldF9iaXRyYXRlX2ticHNfKDApLAogICAgICAgICAgIHNlbmRfc3RyZWFtXyhudWxs
cHRyKSwKICAgICAgICAgICBmcmFtZV9nZW5lcmF0b3JfKG51bGxwdHIpLAotICAgICAgICAgIGVu
Y29kZXJfZmFjdG9yeV8odGhpcykge30KKyAgICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfKHRoaXMp
LAorICAgICAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfKAorICAgICAgICAgICAgICBD
cmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpKSB7fQogCiAgICAgaW50
MzJfdCBJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNvbmZpZywKICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCBudW1iZXJfb2ZfY29yZXMsCkBAIC03NjcsOCArNzcwLDkgQEAgVEVT
VF9GKENhbGxQZXJmVGVzdCwgTUFZQkVfS2VlcHNIaWdoQml0cmF0ZVdoZW5SZWNvbmZpZ3VyaW5n
U2VuZGVyKSB7CiAgICAgICByZXR1cm4gRmFrZUVuY29kZXI6OlNldFJhdGVBbGxvY2F0aW9uKHJh
dGVfYWxsb2NhdGlvbiwgZnJhbWVyYXRlKTsKICAgICB9CiAKLSAgICB2b2lkIE1vZGlmeVNlbmRl
ckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpIG92ZXJyaWRlIHsKLSAgICAgIGNvbmZp
Zy0+Yml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMgPSBrSW5pdGlhbEJpdHJhdGVLYnBz
ICogMTAwMDsKKyAgICB2b2lkIE1vZGlmeVNlbmRlckJpdHJhdGVDb25maWcoCisgICAgICAgIEJp
dHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIG92ZXJyaWRlIHsKKyAgICAgIGJpdHJh
dGVfY29uZmlnLT5zdGFydF9iaXRyYXRlX2JwcyA9IGtJbml0aWFsQml0cmF0ZUticHMgKiAxMDAw
OwogICAgIH0KIAogICAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdzKApAQCAtNzc2LDYgKzc4MCw4
IEBAIFRFU1RfRihDYWxsUGVyZlRlc3QsIE1BWUJFX0tlZXBzSGlnaEJpdHJhdGVXaGVuUmVjb25m
aWd1cmluZ1NlbmRlcikgewogICAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1JlY2VpdmVTdHJlYW06
OkNvbmZpZz4qIHJlY2VpdmVfY29uZmlncywKICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnKiBl
bmNvZGVyX2NvbmZpZykgb3ZlcnJpZGUgewogICAgICAgc2VuZF9jb25maWctPmVuY29kZXJfc2V0
dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gJmVuY29kZXJfZmFjdG9yeV87CisgICAgICBzZW5kX2Nv
bmZpZy0+ZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0KKyAgICAg
ICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKTsKICAgICAgIGVuY29kZXJfY29u
ZmlnLT5tYXhfYml0cmF0ZV9icHMgPSAyICoga1JlY29uZmlndXJlVGhyZXNob2xkS2JwcyAqIDEw
MDA7CiAgICAgICBlbmNvZGVyX2NvbmZpZy0+dmlkZW9fc3RyZWFtX2ZhY3RvcnkgPQogICAgICAg
ICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8VmlkZW9TdHJlYW1GYWN0b3J5PigpOwpAQCAt
ODExLDYgKzgxNyw3IEBAIFRFU1RfRihDYWxsUGVyZlRlc3QsIE1BWUJFX0tlZXBzSGlnaEJpdHJh
dGVXaGVuUmVjb25maWd1cmluZ1NlbmRlcikgewogICAgIFZpZGVvU2VuZFN0cmVhbSogc2VuZF9z
dHJlYW1fOwogICAgIHRlc3Q6OkZyYW1lR2VuZXJhdG9yQ2FwdHVyZXIqIGZyYW1lX2dlbmVyYXRv
cl87CiAgICAgdGVzdDo6VmlkZW9FbmNvZGVyUHJveHlGYWN0b3J5IGVuY29kZXJfZmFjdG9yeV87
CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+IGJpdHJh
dGVfYWxsb2NhdG9yX2ZhY3RvcnlfOwogICAgIFZpZGVvRW5jb2RlckNvbmZpZyBlbmNvZGVyX2Nv
bmZpZ187CiAgIH0gdGVzdDsKIApAQCAtODY1LDggKzg3Miw4IEBAIHZvaWQgQ2FsbFBlcmZUZXN0
OjpUZXN0TWluQXVkaW9WaWRlb0JpdHJhdGUoCiAgICAgICAgICAgbWF4X2J3ZV8obWF4X2J3ZSkg
e30KIAogICAgcHJvdGVjdGVkOgotICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBH
ZXRGYWtlTmV0d29ya1BpcGVDb25maWcoKSB7Ci0gICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRp
b25Db25maWcgcGlwZV9jb25maWc7CisgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBH
ZXRGYWtlTmV0d29ya1BpcGVDb25maWcoKSB7CisgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9y
Q29uZmlnIHBpcGVfY29uZmlnOwogICAgICAgcGlwZV9jb25maWcubGlua19jYXBhY2l0eV9rYnBz
ID0gdGVzdF9iaXRyYXRlX2Zyb21fOwogICAgICAgcmV0dXJuIHBpcGVfY29uZmlnOwogICAgIH0K
QEAgLTkwMyw3ICs5MTAsNyBAQCB2b2lkIENhbGxQZXJmVGVzdDo6VGVzdE1pbkF1ZGlvVmlkZW9C
aXRyYXRlKAogICAgICAgICAgICAgICAgPyB0ZXN0X2JpdHJhdGUgPD0gdGVzdF9iaXRyYXRlX3Rv
XwogICAgICAgICAgICAgICAgOiB0ZXN0X2JpdHJhdGUgPj0gdGVzdF9iaXRyYXRlX3RvXzsKICAg
ICAgICAgICAgdGVzdF9iaXRyYXRlICs9IHRlc3RfYml0cmF0ZV9zdGVwXykgewotICAgICAgICBE
ZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgcGlwZV9jb25maWc7CisgICAgICAgIEJ1aWx0
SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgcGlwZV9jb25maWc7CiAgICAgICAgIHBpcGVfY29uZmln
LmxpbmtfY2FwYWNpdHlfa2JwcyA9IHRlc3RfYml0cmF0ZTsKICAgICAgICAgc2VuZF9zaW11bGF0
ZWRfbmV0d29ya18tPlNldENvbmZpZyhwaXBlX2NvbmZpZyk7CiAgICAgICAgIHJlY2VpdmVfc2lt
dWxhdGVkX25ldHdvcmtfLT5TZXRDb25maWcocGlwZV9jb25maWcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxs
X3VuaXR0ZXN0LmNjCmluZGV4IDhhZTA0MDA4ZjljYTNiYTg0YzI5NzNmZjJjYWRiMTMwMWJiMThi
NjQuLjc3MGYyNTUzMTNjYzFkNDdiODk4OWM0M2MzMTAwODYwNWUyMGUxMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbF91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL2NhbGxfdW5pdHRlc3QuY2MKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRp
b19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9mYWtlX21lZGlhX3RyYW5z
cG9ydC5oIgogI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfYXVkaW9fbWl4ZXIuaCIKICNpbmNsdWRl
ICJhdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbS5oIgogI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3Nl
bmRfc3RyZWFtLmgiCkBAIC02Miw3ICs2Myw4IEBAIFRFU1QoQ2FsbFRlc3QsIENvbnN0cnVjdERl
c3RydWN0KSB7CiAKIFRFU1QoQ2FsbFRlc3QsIENyZWF0ZURlc3Ryb3lfQXVkaW9TZW5kU3RyZWFt
KSB7CiAgIENhbGxIZWxwZXIgY2FsbDsKLSAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgY29uZmln
KG51bGxwdHIpOworICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcoLypzZW5kX3RyYW5z
cG9ydD0qL251bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlh
X3RyYW5zcG9ydD0qL251bGxwdHIpOwogICBjb25maWcucnRwLnNzcmMgPSA0MjsKICAgQXVkaW9T
ZW5kU3RyZWFtKiBzdHJlYW0gPSBjYWxsLT5DcmVhdGVBdWRpb1NlbmRTdHJlYW0oY29uZmlnKTsK
ICAgRVhQRUNUX05FKHN0cmVhbSwgbnVsbHB0cik7CkBAIC04NCw3ICs4Niw4IEBAIFRFU1QoQ2Fs
bFRlc3QsIENyZWF0ZURlc3Ryb3lfQXVkaW9SZWNlaXZlU3RyZWFtKSB7CiAKIFRFU1QoQ2FsbFRl
c3QsIENyZWF0ZURlc3Ryb3lfQXVkaW9TZW5kU3RyZWFtcykgewogICBDYWxsSGVscGVyIGNhbGw7
Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGNvbmZpZyhudWxscHRyKTsKKyAgQXVkaW9TZW5k
U3RyZWFtOjpDb25maWcgY29uZmlnKC8qc2VuZF90cmFuc3BvcnQ9Ki9udWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsK
ICAgc3RkOjpsaXN0PEF1ZGlvU2VuZFN0cmVhbSo+IHN0cmVhbXM7CiAgIGZvciAoaW50IGkgPSAw
OyBpIDwgMjsgKytpKSB7CiAgICAgZm9yICh1aW50MzJfdCBzc3JjID0gMDsgc3NyYyA8IDEyMzQ1
Njc7IHNzcmMgKz0gMzQ1NjcpIHsKQEAgLTE0Miw3ICsxNDUsOCBAQCBURVNUKENhbGxUZXN0LCBD
cmVhdGVEZXN0cm95X0Fzc29jaWF0ZUF1ZGlvU2VuZFJlY2VpdmVTdHJlYW1zX1JlY3ZGaXJzdCkg
ewogICBBdWRpb1JlY2VpdmVTdHJlYW0qIHJlY3Zfc3RyZWFtID0gY2FsbC0+Q3JlYXRlQXVkaW9S
ZWNlaXZlU3RyZWFtKHJlY3ZfY29uZmlnKTsKICAgRVhQRUNUX05FKHJlY3Zfc3RyZWFtLCBudWxs
cHRyKTsKIAotICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBzZW5kX2NvbmZpZyhudWxscHRyKTsK
KyAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgc2VuZF9jb25maWcoLypzZW5kX3RyYW5zcG9ydD0q
L251bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFf
dHJhbnNwb3J0PSovbnVsbHB0cik7CiAgIHNlbmRfY29uZmlnLnJ0cC5zc3JjID0gNzc3OwogICBB
dWRpb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtID0gY2FsbC0+Q3JlYXRlQXVkaW9TZW5kU3RyZWFt
KHNlbmRfY29uZmlnKTsKICAgRVhQRUNUX05FKHNlbmRfc3RyZWFtLCBudWxscHRyKTsKQEAgLTE2
MCw3ICsxNjQsOCBAQCBURVNUKENhbGxUZXN0LCBDcmVhdGVEZXN0cm95X0Fzc29jaWF0ZUF1ZGlv
U2VuZFJlY2VpdmVTdHJlYW1zX1JlY3ZGaXJzdCkgewogCiBURVNUKENhbGxUZXN0LCBDcmVhdGVE
ZXN0cm95X0Fzc29jaWF0ZUF1ZGlvU2VuZFJlY2VpdmVTdHJlYW1zX1NlbmRGaXJzdCkgewogICBD
YWxsSGVscGVyIGNhbGw7Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIHNlbmRfY29uZmlnKG51
bGxwdHIpOworICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBzZW5kX2NvbmZpZygvKnNlbmRfdHJh
bnNwb3J0PSovbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgc2VuZF9jb25maWcucnRwLnNzcmMgPSA3
Nzc7CiAgIEF1ZGlvU2VuZFN0cmVhbSogc2VuZF9zdHJlYW0gPSBjYWxsLT5DcmVhdGVBdWRpb1Nl
bmRTdHJlYW0oc2VuZF9jb25maWcpOwogICBFWFBFQ1RfTkUoc2VuZF9zdHJlYW0sIG51bGxwdHIp
OwpAQCAtMjYzLDcgKzI2OCw4IEBAIFRFU1QoQ2FsbFRlc3QsIFJlY3JlYXRpbmdBdWRpb1N0cmVh
bVdpdGhTYW1lU3NyY1JldXNlc1J0cFN0YXRlKSB7CiAgIENhbGxIZWxwZXIgY2FsbDsKIAogICBh
dXRvIGNyZWF0ZV9zdHJlYW1fYW5kX2dldF9ydHBfc3RhdGUgPSBbJl0odWludDMyX3Qgc3NyYykg
ewotICAgIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGNvbmZpZyhudWxscHRyKTsKKyAgICBBdWRp
b1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcoLypzZW5kX3RyYW5zcG9ydD0qL251bGxwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVs
bHB0cik7CiAgICAgY29uZmlnLnJ0cC5zc3JjID0gc3NyYzsKICAgICBBdWRpb1NlbmRTdHJlYW0q
IHN0cmVhbSA9IGNhbGwtPkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbShjb25maWcpOwogICAgIGNvbnN0
IFJ0cFN0YXRlIHJ0cF9zdGF0ZSA9CkBAIC0yODQsNCArMjkwLDI3IEBAIFRFU1QoQ2FsbFRlc3Qs
IFJlY3JlYXRpbmdBdWRpb1N0cmVhbVdpdGhTYW1lU3NyY1JldXNlc1J0cFN0YXRlKSB7CiAgIEVY
UEVDVF9FUShydHBfc3RhdGUxLm1lZGlhX2hhc19iZWVuX3NlbnQsIHJ0cF9zdGF0ZTIubWVkaWFf
aGFzX2JlZW5fc2VudCk7CiB9CiAKK1RFU1QoQ2FsbFRlc3QsIFJlZ2lzdGVyTWVkaWFUcmFuc3Bv
cnRCaXRyYXRlQ2FsbGJhY2tzSW5DcmVhdGVTdHJlYW0pIHsKKyAgQ2FsbEhlbHBlciBjYWxsOwor
ICBNZWRpYVRyYW5zcG9ydFNldHRpbmdzIHNldHRpbmdzOworICB3ZWJydGM6OkZha2VNZWRpYVRy
YW5zcG9ydCBmYWtlX21lZGlhX3RyYW5zcG9ydChzZXR0aW5ncyk7CisKKyAgRVhQRUNUX0VRKDAs
IGZha2VfbWVkaWFfdHJhbnNwb3J0LnRhcmdldF9yYXRlX29ic2VydmVyc19zaXplKCkpOworICBB
dWRpb1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcoLypzZW5kX3RyYW5zcG9ydD0qL251bGxwdHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydD0qLyZm
YWtlX21lZGlhX3RyYW5zcG9ydCk7CisKKyAgY2FsbC0+TWVkaWFUcmFuc3BvcnRDaGFuZ2UoJmZh
a2VfbWVkaWFfdHJhbnNwb3J0KTsKKyAgQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0gPSBjYWxsLT5D
cmVhdGVBdWRpb1NlbmRTdHJlYW0oY29uZmlnKTsKKworICAvLyBXZSBnZXQgMiBzdWJzY3JpYmVy
czogb25lIHN1YnNjcmliZXIgZnJvbSBjYWxsLmNjLCBhbmQgb25lIGZyb20KKyAgLy8gQ2hhbm5l
bFNlbmQuCisgIEVYUEVDVF9FUSgyLCBmYWtlX21lZGlhX3RyYW5zcG9ydC50YXJnZXRfcmF0ZV9v
YnNlcnZlcnNfc2l6ZSgpKTsKKworICBjYWxsLT5EZXN0cm95QXVkaW9TZW5kU3RyZWFtKHN0cmVh
bSk7CisgIEVYUEVDVF9FUSgxLCBmYWtlX21lZGlhX3RyYW5zcG9ydC50YXJnZXRfcmF0ZV9vYnNl
cnZlcnNfc2l6ZSgpKTsKKworICBjYWxsLT5NZWRpYVRyYW5zcG9ydENoYW5nZShudWxscHRyKTsK
KyAgRVhQRUNUX0VRKDAsIGZha2VfbWVkaWFfdHJhbnNwb3J0LnRhcmdldF9yYXRlX29ic2VydmVy
c19zaXplKCkpOworfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxmYWN0b3J5LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsZmFj
dG9yeS5jYwppbmRleCBmYTdkMGZhYzY2OTYzNzZjZGNjMzljZTllYWZkNzkxYWE0ZjVlZjE2Li5h
YjA1N2JlMDI4YmI1ZmM0ZmVhN2NiMzY4MGZjNDFhMjNlMzU4NDMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxmYWN0b3J5LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2Fs
bGZhY3RvcnkuY2MKQEAgLTMwLDcgKzMwLDcgQEAgYm9vbCBQYXJzZUNvbmZpZ1BhcmFtKHN0ZDo6
c3RyaW5nIGV4cF9uYW1lLCBpbnQqIGZpZWxkKSB7CiAgIHJldHVybiAoc3NjYW5mKGdyb3VwLmNf
c3RyKCksICIlZCIsIGZpZWxkKSA9PSAxKTsKIH0KIAotYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpE
ZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc+IFBhcnNlRGVncmFkYXRpb25Db25maWcoCith
YnNsOjpvcHRpb25hbDx3ZWJydGM6OkJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWc+IFBhcnNl
RGVncmFkYXRpb25Db25maWcoCiAgICAgYm9vbCBzZW5kKSB7CiAgIHN0ZDo6c3RyaW5nIGV4cF9w
cmVmaXggPSAiV2ViUlRDRmFrZU5ldHdvcmsiOwogICBpZiAoc2VuZCkgewpAQCAtMzksNyArMzks
NyBAQCBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkRlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZp
Zz4gUGFyc2VEZWdyYWRhdGlvbkNvbmZpZygKICAgICBleHBfcHJlZml4ICs9ICJSZWNlaXZlIjsK
ICAgfQogCi0gIHdlYnJ0Yzo6RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsK
KyAgd2VicnRjOjpCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgYm9vbCBj
b25maWd1cmVkID0gZmFsc2U7CiAgIGNvbmZpZ3VyZWQgfD0KICAgICAgIFBhcnNlQ29uZmlnUGFy
YW0oZXhwX3ByZWZpeCArICJEZWxheU1zIiwgJmNvbmZpZy5xdWV1ZV9kZWxheV9tcyk7CkBAIC02
MywxNSArNjMsMTUgQEAgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpEZWZhdWx0TmV0d29ya1NpbXVs
YXRpb25Db25maWc+IFBhcnNlRGVncmFkYXRpb25Db25maWcoCiAgIGNvbmZpZ3VyZWQgfD0gUGFy
c2VDb25maWdQYXJhbShleHBfcHJlZml4ICsgIkF2Z0J1cnN0TG9zc0xlbmd0aCIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmY29uZmlnLmF2Z19idXJzdF9sb3NzX2xlbmd0aCk7
CiAgIHJldHVybiBjb25maWd1cmVkCi0gICAgICAgICAgICAgPyBhYnNsOjpvcHRpb25hbDx3ZWJy
dGM6OkRlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZz4oY29uZmlnKQorICAgICAgICAgICAg
ID8gYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnPihj
b25maWcpCiAgICAgICAgICAgICAgOiBhYnNsOjpudWxsb3B0OwogfQogfSAgLy8gbmFtZXNwYWNl
CiAKIENhbGwqIENhbGxGYWN0b3J5OjpDcmVhdGVDYWxsKGNvbnN0IENhbGw6OkNvbmZpZyYgY29u
ZmlnKSB7Ci0gIGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9u
Q29uZmlnPgotICAgICAgc2VuZF9kZWdyYWRhdGlvbl9jb25maWcgPSBQYXJzZURlZ3JhZGF0aW9u
Q29uZmlnKHRydWUpOwotICBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkRlZmF1bHROZXR3b3JrU2lt
dWxhdGlvbkNvbmZpZz4KKyAgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpCdWlsdEluTmV0d29ya0Jl
aGF2aW9yQ29uZmlnPiBzZW5kX2RlZ3JhZGF0aW9uX2NvbmZpZyA9CisgICAgICBQYXJzZURlZ3Jh
ZGF0aW9uQ29uZmlnKHRydWUpOworICBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkJ1aWx0SW5OZXR3
b3JrQmVoYXZpb3JDb25maWc+CiAgICAgICByZWNlaXZlX2RlZ3JhZGF0aW9uX2NvbmZpZyA9IFBh
cnNlRGVncmFkYXRpb25Db25maWcoZmFsc2UpOwogCiAgIGlmIChzZW5kX2RlZ3JhZGF0aW9uX2Nv
bmZpZyB8fCByZWNlaXZlX2RlZ3JhZGF0aW9uX2NvbmZpZykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9kZWdyYWRlZF9jYWxsLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9kZWdyYWRl
ZF9jYWxsLmNjCmluZGV4IDgxODEzMTBlNzhjY2JjYjc3NTJlMjlmYTMyZTQzMWYwMWQ1NDAwNTAu
LmE3ZWY0MWQ0OTA1NzlkMjc1ODFmNmU3NTU2YzI5YTNhNjMyN2NiM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZGVncmFkZWRfY2Fs
bC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L2RlZ3JhZGVkX2NhbGwuY2MKQEAgLTE3LDggKzE3LDggQEAKIG5hbWVzcGFjZSB3ZWJydGMgewog
RGVncmFkZWRDYWxsOjpEZWdyYWRlZENhbGwoCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGw+IGNh
bGwsCi0gICAgYWJzbDo6b3B0aW9uYWw8RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnPiBz
ZW5kX2NvbmZpZywKLSAgICBhYnNsOjpvcHRpb25hbDxEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWc+IHJlY2VpdmVfY29uZmlnKQorICAgIGFic2w6Om9wdGlvbmFsPEJ1aWx0SW5OZXR3b3Jr
QmVoYXZpb3JDb25maWc+IHNlbmRfY29uZmlnLAorICAgIGFic2w6Om9wdGlvbmFsPEJ1aWx0SW5O
ZXR3b3JrQmVoYXZpb3JDb25maWc+IHJlY2VpdmVfY29uZmlnKQogICAgIDogY2xvY2tfKENsb2Nr
OjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgY2FsbF8oc3RkOjptb3ZlKGNhbGwpKSwKICAg
ICAgIHNlbmRfY29uZmlnXyhzZW5kX2NvbmZpZyksCkBAIC0xODMsNiArMTgzLDggQEAgYm9vbCBE
ZWdyYWRlZENhbGw6OlNlbmRSdHAoY29uc3QgdWludDhfdCogcGFja2V0LAogICAgIHJ0Yzo6U2Vu
dFBhY2tldCBzZW50X3BhY2tldDsKICAgICBzZW50X3BhY2tldC5wYWNrZXRfaWQgPSBvcHRpb25z
LnBhY2tldF9pZDsKICAgICBzZW50X3BhY2tldC5zZW5kX3RpbWVfbXMgPSBjbG9ja18tPlRpbWVJ
bk1pbGxpc2Vjb25kcygpOworICAgIHNlbnRfcGFja2V0LmluZm8uaW5jbHVkZWRfaW5fZmVlZGJh
Y2sgPSBvcHRpb25zLmluY2x1ZGVkX2luX2ZlZWRiYWNrOworICAgIHNlbnRfcGFja2V0LmluZm8u
aW5jbHVkZWRfaW5fYWxsb2NhdGlvbiA9IG9wdGlvbnMuaW5jbHVkZWRfaW5fYWxsb2NhdGlvbjsK
ICAgICBzZW50X3BhY2tldC5pbmZvLnBhY2tldF9zaXplX2J5dGVzID0gbGVuZ3RoOwogICAgIHNl
bnRfcGFja2V0LmluZm8ucGFja2V0X3R5cGUgPSBydGM6OlBhY2tldFR5cGU6OmtEYXRhOwogICAg
IGNhbGxfLT5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQpOwpAQCAtMjEzLDQgKzIxNSwxMCBAQCBQ
YWNrZXRSZWNlaXZlcjo6RGVsaXZlcnlTdGF0dXMgRGVncmFkZWRDYWxsOjpEZWxpdmVyUGFja2V0
KAogICByZXR1cm4gc3RhdHVzOwogfQogCit2b2lkIERlZ3JhZGVkQ2FsbDo6TWVkaWFUcmFuc3Bv
cnRDaGFuZ2UoCisgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCkg
eworICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NzE5KSBXZSBzaG91bGQgYWRkIHN1cHBvcnQg
Zm9yIG1lZGlhIHRyYW5zcG9ydCBoZXJlCisgIC8vIGF0IHNvbWUgcG9pbnQuCit9CisKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZGVncmFkZWRfY2FsbC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9kZWdyYWRlZF9jYWxsLmgKaW5kZXggM2MwYjgw
ZGY4NmFkMzVhZTlkMjJmYTIzOTQxN2FmM2JmOWQ2OTk3Ni4uZDc4YjFkMTAyNmNmZThiMWUxNjU4
ZGI5OGM0NzQyOTkzNmUyMzhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC9kZWdyYWRlZF9jYWxsLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9kZWdyYWRlZF9jYWxsLmgKQEAgLTI4
LDggKzI4LDggQEAgY2xhc3MgRGVncmFkZWRDYWxsIDogcHVibGljIENhbGwsIHByaXZhdGUgVHJh
bnNwb3J0LCBwcml2YXRlIFBhY2tldFJlY2VpdmVyIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IERl
Z3JhZGVkQ2FsbCgKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsPiBjYWxsLAotICAgICAgYWJz
bDo6b3B0aW9uYWw8RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnPiBzZW5kX2NvbmZpZywK
LSAgICAgIGFic2w6Om9wdGlvbmFsPERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZz4gcmVj
ZWl2ZV9jb25maWcpOworICAgICAgYWJzbDo6b3B0aW9uYWw8QnVpbHRJbk5ldHdvcmtCZWhhdmlv
ckNvbmZpZz4gc2VuZF9jb25maWcsCisgICAgICBhYnNsOjpvcHRpb25hbDxCdWlsdEluTmV0d29y
a0JlaGF2aW9yQ29uZmlnPiByZWNlaXZlX2NvbmZpZyk7CiAgIH5EZWdyYWRlZENhbGwoKSBvdmVy
cmlkZTsKIAogICAvLyBJbXBsZW1lbnRzIENhbGwuCkBAIC05MSwxMyArOTEsMTQgQEAgY2xhc3Mg
RGVncmFkZWRDYWxsIDogcHVibGljIENhbGwsIHByaXZhdGUgVHJhbnNwb3J0LCBwcml2YXRlIFBh
Y2tldFJlY2VpdmVyIHsKICAgQ2xvY2sqIGNvbnN0IGNsb2NrXzsKICAgY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPENhbGw+IGNhbGxfOwogCi0gIGNvbnN0IGFic2w6Om9wdGlvbmFsPERlZmF1bHROZXR3
b3JrU2ltdWxhdGlvbkNvbmZpZz4gc2VuZF9jb25maWdfOworICB2b2lkIE1lZGlhVHJhbnNwb3J0
Q2hhbmdlKE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpIG92ZXJyaWRl
OworICBjb25zdCBhYnNsOjpvcHRpb25hbDxCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnPiBz
ZW5kX2NvbmZpZ187CiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyZWFkPiBzZW5k
X3Byb2Nlc3NfdGhyZWFkXzsKICAgU2ltdWxhdGVkTmV0d29yayogc2VuZF9zaW11bGF0ZWRfbmV0
d29ya187CiAgIHN0ZDo6dW5pcXVlX3B0cjxGYWtlTmV0d29ya1BpcGU+IHNlbmRfcGlwZV87CiAg
IHNpemVfdCBudW1fc2VuZF9zdHJlYW1zXzsKIAotICBjb25zdCBhYnNsOjpvcHRpb25hbDxEZWZh
dWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc+IHJlY2VpdmVfY29uZmlnXzsKKyAgY29uc3QgYWJz
bDo6b3B0aW9uYWw8QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZz4gcmVjZWl2ZV9jb25maWdf
OwogICBTaW11bGF0ZWROZXR3b3JrKiByZWNlaXZlX3NpbXVsYXRlZF9uZXR3b3JrXzsKICAgc3Rk
Ojp1bmlxdWVfcHRyPEZha2VOZXR3b3JrUGlwZT4gcmVjZWl2ZV9waXBlXzsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2Zha2Vf
bmV0d29ya19waXBlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5jYwppbmRleCBlNzAyYzFiNmY1YzdlZjhiNzM4NWNh
Y2RkZDBjOTQ4MWQyNGEwNzE3Li4zYmQyZThmNDhiMTZhMjJjNjE0M2Y1YjY3NmVkOGVmOTJiOWI4
ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL2Zha2VfbmV0d29ya19waXBlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZmFrZV9uZXR3b3JrX3BpcGUuY2MKQEAgLTE4LDYgKzE4
LDcgQEAKICNpbmNsdWRlICJjYWxsL2NhbGwuaCIKICNpbmNsdWRlICJjYWxsL2Zha2VfbmV0d29y
a19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29yay5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3NfdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2Nr
LmgiCiAKQEAgLTkwLDcgKzkxLDYgQEAgRmFrZU5ldHdvcmtQaXBlOjpGYWtlTmV0d29ya1BpcGUo
CiAgICAgICBkcm9wcGVkX3BhY2tldHNfKDApLAogICAgICAgc2VudF9wYWNrZXRzXygwKSwKICAg
ICAgIHRvdGFsX3BhY2tldF9kZWxheV91c18oMCksCi0gICAgICBuZXh0X3Byb2Nlc3NfdGltZV91
c18oY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSksCiAgICAgICBsYXN0X2xvZ190aW1lX3Vz
XyhjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSB7fQogCiBGYWtlTmV0d29ya1BpcGU6OkZh
a2VOZXR3b3JrUGlwZSgKQEAgLTEwNSw3ICsxMDUsNiBAQCBGYWtlTmV0d29ya1BpcGU6OkZha2VO
ZXR3b3JrUGlwZSgKICAgICAgIGRyb3BwZWRfcGFja2V0c18oMCksCiAgICAgICBzZW50X3BhY2tl
dHNfKDApLAogICAgICAgdG90YWxfcGFja2V0X2RlbGF5X3VzXygwKSwKLSAgICAgIG5leHRfcHJv
Y2Vzc190aW1lX3VzXyhjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSwKICAgICAgIGxhc3Rf
bG9nX3RpbWVfdXNfKGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkpIHt9CiAKIEZha2VOZXR3
b3JrUGlwZTo6fkZha2VOZXR3b3JrUGlwZSgpID0gZGVmYXVsdDsKQEAgLTE1NCw4ICsxNTMsOCBA
QCBib29sIEZha2VOZXR3b3JrUGlwZTo6RW5xdWV1ZVBhY2tldChydGM6OkNvcHlPbldyaXRlQnVm
ZmVyIHBhY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNf
cnRjcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhVHlwZSBtZWRp
YV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9u
YWw8aW50NjRfdD4gcGFja2V0X3RpbWVfdXMpIHsKLSAgaW50NjRfdCB0aW1lX25vd191cyA9IGNs
b2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCk7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJnByb2Nl
c3NfbG9ja18pOworICBpbnQ2NF90IHRpbWVfbm93X3VzID0gY2xvY2tfLT5UaW1lSW5NaWNyb3Nl
Y29uZHMoKTsKICAgc2l6ZV90IHBhY2tldF9zaXplID0gcGFja2V0LnNpemUoKTsKICAgTmV0d29y
a1BhY2tldCBuZXRfcGFja2V0KHN0ZDo6bW92ZShwYWNrZXQpLCB0aW1lX25vd191cywgdGltZV9u
b3dfdXMsIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19ydGNwLCBtZWRp
YV90eXBlLCBwYWNrZXRfdGltZV91cyk7CkBAIC0xNjksNiArMTY4LDEyIEBAIGJvb2wgRmFrZU5l
dHdvcmtQaXBlOjpFbnF1ZXVlUGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgcGFja2V0LAog
ICAgIHBhY2tldHNfaW5fZmxpZ2h0Xy5wb3BfYmFjaygpOwogICAgICsrZHJvcHBlZF9wYWNrZXRz
XzsKICAgfQorICBpZiAobmV0d29ya19iZWhhdmlvcl8tPk5leHREZWxpdmVyeVRpbWVVcygpKSB7
CisgICAgcnRjOjpDcml0U2NvcGUgY3JpdCgmcHJvY2Vzc190aHJlYWRfbG9ja18pOworICAgIGlm
IChwcm9jZXNzX3RocmVhZF8pCisgICAgICBwcm9jZXNzX3RocmVhZF8tPldha2VVcChudWxscHRy
KTsKKyAgfQorCiAgIHJldHVybiBzZW50OwogfQogCkBAIC0yMDEsMTAgKzIwNiwxMSBAQCBzaXpl
X3QgRmFrZU5ldHdvcmtQaXBlOjpTZW50UGFja2V0cygpIHsKIH0KIAogdm9pZCBGYWtlTmV0d29y
a1BpcGU6OlByb2Nlc3MoKSB7Ci0gIGludDY0X3QgdGltZV9ub3dfdXMgPSBjbG9ja18tPlRpbWVJ
bk1pY3Jvc2Vjb25kcygpOworICBpbnQ2NF90IHRpbWVfbm93X3VzOwogICBzdGQ6OnF1ZXVlPE5l
dHdvcmtQYWNrZXQ+IHBhY2tldHNfdG9fZGVsaXZlcjsKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3Bl
IGNyaXQoJnByb2Nlc3NfbG9ja18pOworICAgIHRpbWVfbm93X3VzID0gY2xvY2tfLT5UaW1lSW5N
aWNyb3NlY29uZHMoKTsKICAgICBpZiAodGltZV9ub3dfdXMgLSBsYXN0X2xvZ190aW1lX3VzXyA+
IGtMb2dJbnRlcnZhbE1zICogMTAwMCkgewogICAgICAgaW50NjRfdCBxdWV1ZWluZ19kZWxheV91
cyA9IDA7CiAgICAgICBpZiAoIXBhY2tldHNfaW5fZmxpZ2h0Xy5lbXB0eSgpKQpAQCAtMjUwLDkg
KzI1NiwxMSBAQCB2b2lkIEZha2VOZXR3b3JrUGlwZTo6UHJvY2VzcygpIHsKICAgICAgICAgLy8g
YXJyaXZlZCwgZHVlIHRvIE5ldHdvcmtQcm9jZXNzIGJlaW5nIGNhbGxlZCB0b28gbGF0ZS4gRm9y
IHN0YXRzLCB1c2UKICAgICAgICAgLy8gdGhlIHRpbWUgaXQgc2hvdWxkIGhhdmUgYmVlbiBvbiB0
aGUgbGluay4KICAgICAgICAgdG90YWxfcGFja2V0X2RlbGF5X3VzXyArPSBhZGRlZF9kZWxheV91
czsKKyAgICAgICAgKytzZW50X3BhY2tldHNfOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgKytk
cm9wcGVkX3BhY2tldHNfOwogICAgICAgfQogICAgIH0KLSAgICBzZW50X3BhY2tldHNfICs9IHBh
Y2tldHNfdG9fZGVsaXZlci5zaXplKCk7CiAgIH0KIAogICBydGM6OkNyaXRTY29wZSBjcml0KCZj
b25maWdfbG9ja18pOwpAQCAtMjYxLDEwICsyNjksNiBAQCB2b2lkIEZha2VOZXR3b3JrUGlwZTo6
UHJvY2VzcygpIHsKICAgICBwYWNrZXRzX3RvX2RlbGl2ZXIucG9wKCk7CiAgICAgRGVsaXZlck5l
dHdvcmtQYWNrZXQoJnBhY2tldCk7CiAgIH0KLSAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gZGVs
aXZlcnlfdXMgPSBuZXR3b3JrX2JlaGF2aW9yXy0+TmV4dERlbGl2ZXJ5VGltZVVzKCk7Ci0gIG5l
eHRfcHJvY2Vzc190aW1lX3VzXyA9IGRlbGl2ZXJ5X3VzCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA/ICpkZWxpdmVyeV91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0
aW1lX25vd191cyArIGtEZWZhdWx0UHJvY2Vzc0ludGVydmFsTXMgKiAxMDAwOwogfQogCiB2b2lk
IEZha2VOZXR3b3JrUGlwZTo6RGVsaXZlck5ldHdvcmtQYWNrZXQoTmV0d29ya1BhY2tldCogcGFj
a2V0KSB7CkBAIC0yOTEsOCArMjk1LDE3IEBAIHZvaWQgRmFrZU5ldHdvcmtQaXBlOjpEZWxpdmVy
TmV0d29ya1BhY2tldChOZXR3b3JrUGFja2V0KiBwYWNrZXQpIHsKIAogaW50NjRfdCBGYWtlTmV0
d29ya1BpcGU6OlRpbWVVbnRpbE5leHRQcm9jZXNzKCkgewogICBydGM6OkNyaXRTY29wZSBjcml0
KCZwcm9jZXNzX2xvY2tfKTsKLSAgaW50NjRfdCBkZWxheV91cyA9IG5leHRfcHJvY2Vzc190aW1l
X3VzXyAtIGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCk7Ci0gIHJldHVybiBzdGQ6Om1heDxp
bnQ2NF90PigoZGVsYXlfdXMgKyA1MDApIC8gMTAwMCwgMCk7CisgIGFic2w6Om9wdGlvbmFsPGlu
dDY0X3Q+IGRlbGl2ZXJ5X3VzID0gbmV0d29ya19iZWhhdmlvcl8tPk5leHREZWxpdmVyeVRpbWVV
cygpOworICBpZiAoZGVsaXZlcnlfdXMpIHsKKyAgICBpbnQ2NF90IGRlbGF5X3VzID0gKmRlbGl2
ZXJ5X3VzIC0gY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsKKyAgICByZXR1cm4gc3RkOjpt
YXg8aW50NjRfdD4oKGRlbGF5X3VzICsgNTAwKSAvIDEwMDAsIDApOworICB9CisgIHJldHVybiBr
RGVmYXVsdFByb2Nlc3NJbnRlcnZhbE1zOworfQorCit2b2lkIEZha2VOZXR3b3JrUGlwZTo6UHJv
Y2Vzc1RocmVhZEF0dGFjaGVkKFByb2Nlc3NUaHJlYWQqIHByb2Nlc3NfdGhyZWFkKSB7CisgIHJ0
Yzo6Q3JpdFNjb3BlIGNzKCZwcm9jZXNzX3RocmVhZF9sb2NrXyk7CisgIHByb2Nlc3NfdGhyZWFk
XyA9IHByb2Nlc3NfdGhyZWFkOwogfQogCiBib29sIEZha2VOZXR3b3JrUGlwZTo6SGFzVHJhbnNw
b3J0KCkgY29uc3QgewpAQCAtMzE2LDMxICszMjksOCBAQCB2b2lkIEZha2VOZXR3b3JrUGlwZTo6
UmVzZXRTdGF0cygpIHsKICAgdG90YWxfcGFja2V0X2RlbGF5X3VzXyA9IDA7CiB9CiAKLXZvaWQg
RmFrZU5ldHdvcmtQaXBlOjpBZGRUb1BhY2tldERyb3BDb3VudCgpIHsKLSAgcnRjOjpDcml0U2Nv
cGUgY3JpdCgmcHJvY2Vzc19sb2NrXyk7Ci0gICsrZHJvcHBlZF9wYWNrZXRzXzsKLX0KLQotdm9p
ZCBGYWtlTmV0d29ya1BpcGU6OkFkZFRvUGFja2V0U2VudENvdW50KGludCBjb3VudCkgewotICBy
dGM6OkNyaXRTY29wZSBjcml0KCZwcm9jZXNzX2xvY2tfKTsKLSAgc2VudF9wYWNrZXRzXyArPSBj
b3VudDsKLX0KLQotdm9pZCBGYWtlTmV0d29ya1BpcGU6OkFkZFRvVG90YWxEZWxheShpbnQgZGVs
YXlfdXMpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3JpdCgmcHJvY2Vzc19sb2NrXyk7Ci0gIHRvdGFs
X3BhY2tldF9kZWxheV91c18gKz0gZGVsYXlfdXM7Ci19Ci0KIGludDY0X3QgRmFrZU5ldHdvcmtQ
aXBlOjpHZXRUaW1lSW5NaWNyb3NlY29uZHMoKSBjb25zdCB7CiAgIHJldHVybiBjbG9ja18tPlRp
bWVJbk1pY3Jvc2Vjb25kcygpOwogfQogCi1ib29sIEZha2VOZXR3b3JrUGlwZTo6U2hvdWxkUHJv
Y2VzcyhpbnQ2NF90IHRpbWVfbm93X3VzKSBjb25zdCB7Ci0gIHJldHVybiB0aW1lX25vd191cyA+
PSBuZXh0X3Byb2Nlc3NfdGltZV91c187Ci19Ci0KLXZvaWQgRmFrZU5ldHdvcmtQaXBlOjpTZXRU
aW1lVG9OZXh0UHJvY2VzcyhpbnQ2NF90IHNraXBfdXMpIHsKLSAgbmV4dF9wcm9jZXNzX3RpbWVf
dXNfICs9IHNraXBfdXM7Ci19Ci0KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZmFrZV9uZXR3
b3JrX3BpcGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvZmFrZV9uZXR3b3JrX3BpcGUuaAppbmRleCBmODVlODJlZmM1ZWU0NmVkYzQwYTlkMTBlNWRj
OWEyNjQyZjBmOTY2Li5iMWI0Y2VlMTRkMGU2MWQxMDE5MjdjOTRlOWI3YjRlNTgxOGZiNzE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L2Zha2VfbmV0d29ya19waXBlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oCkBAIC0yMyw3ICsyMyw2IEBACiAj
aW5jbHVkZSAiYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaCIKICNpbmNsdWRlICJjYWxsL2Nh
bGwuaCIKICNpbmNsdWRlICJjYWxsL3NpbXVsYXRlZF9wYWNrZXRfcmVjZWl2ZXIuaCIKLSNpbmNs
dWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUg
InJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNh
bHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKQEAg
LTE0MCw2ICsxMzksNyBAQCBjbGFzcyBGYWtlTmV0d29ya1BpcGUgOiBwdWJsaWMgd2VicnRjOjpT
aW11bGF0ZWRQYWNrZXRSZWNlaXZlckludGVyZmFjZSwKICAgLy8gcGFja2V0cyByZWFkeSB0byBi
ZSBkZWxpdmVyZWQuCiAgIHZvaWQgUHJvY2VzcygpIG92ZXJyaWRlOwogICBpbnQ2NF90IFRpbWVV
bnRpbE5leHRQcm9jZXNzKCkgb3ZlcnJpZGU7CisgIHZvaWQgUHJvY2Vzc1RocmVhZEF0dGFjaGVk
KFByb2Nlc3NUaHJlYWQqIHByb2Nlc3NfdGhyZWFkKSBvdmVycmlkZTsKIAogICAvLyBHZXQgc3Rh
dGlzdGljcy4KICAgZmxvYXQgUGVyY2VudGFnZUxvc3MoKTsKQEAgLTE1MCw5ICsxNTAsNiBAQCBj
bGFzcyBGYWtlTmV0d29ya1BpcGUgOiBwdWJsaWMgd2VicnRjOjpTaW11bGF0ZWRQYWNrZXRSZWNl
aXZlckludGVyZmFjZSwKIAogIHByb3RlY3RlZDoKICAgdm9pZCBEZWxpdmVyUGFja2V0V2l0aExv
Y2soTmV0d29ya1BhY2tldCogcGFja2V0KTsKLSAgdm9pZCBBZGRUb1BhY2tldERyb3BDb3VudCgp
OwotICB2b2lkIEFkZFRvUGFja2V0U2VudENvdW50KGludCBjb3VudCk7Ci0gIHZvaWQgQWRkVG9U
b3RhbERlbGF5KGludCBkZWxheV91cyk7CiAgIGludDY0X3QgR2V0VGltZUluTWljcm9zZWNvbmRz
KCkgY29uc3Q7CiAgIGJvb2wgU2hvdWxkUHJvY2VzcyhpbnQ2NF90IHRpbWVfbm93X3VzKSBjb25z
dDsKICAgdm9pZCBTZXRUaW1lVG9OZXh0UHJvY2VzcyhpbnQ2NF90IHNraXBfdXMpOwpAQCAtMTk3
LDYgKzE5NCw5IEBAIGNsYXNzIEZha2VOZXR3b3JrUGlwZSA6IHB1YmxpYyB3ZWJydGM6OlNpbXVs
YXRlZFBhY2tldFJlY2VpdmVySW50ZXJmYWNlLAogICAvLyBwcm9jZXNzZXMsIHN1Y2ggYXMgdGhl
IHBhY2tldCBxdWV1ZXMuCiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHByb2Nlc3NfbG9ja187CiAK
KyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gcHJvY2Vzc190aHJlYWRfbG9ja187CisgIFByb2Nlc3NU
aHJlYWQqIHByb2Nlc3NfdGhyZWFkXyBSVENfR1VBUkRFRF9CWShwcm9jZXNzX3RocmVhZF9sb2Nr
XykgPSBudWxscHRyOworCiAgIC8vIFBhY2tldHMgIGFyZSBhZGRlZCBhdCB0aGUgYmFjayBvZiB0
aGUgZGVxdWUsIHRoaXMgbWFrZXMgdGhlIGRlcXVlIG9yZGVyZWQKICAgLy8gYnkgaW5jcmVhc2lu
ZyBzZW5kIHRpbWUuIFRoZSBjb21tb24gY2FzZSB3aGVuIHJlbW92aW5nIHBhY2tldHMgZnJvbSB0
aGUKICAgLy8gZGVxdWUgaXMgcmVtb3ZpbmcgZWFybHkgcGFja2V0cywgd2hpY2ggd2lsbCBiZSBj
bG9zZSB0byB0aGUgZnJvbnQgb2YgdGhlCkBAIC0yMTAsOSArMjEwLDYgQEAgY2xhc3MgRmFrZU5l
dHdvcmtQaXBlIDogcHVibGljIHdlYnJ0Yzo6U2ltdWxhdGVkUGFja2V0UmVjZWl2ZXJJbnRlcmZh
Y2UsCiAgIHNpemVfdCBkcm9wcGVkX3BhY2tldHNfIFJUQ19HVUFSREVEX0JZKHByb2Nlc3NfbG9j
a18pOwogICBzaXplX3Qgc2VudF9wYWNrZXRzXyBSVENfR1VBUkRFRF9CWShwcm9jZXNzX2xvY2tf
KTsKICAgaW50NjRfdCB0b3RhbF9wYWNrZXRfZGVsYXlfdXNfIFJUQ19HVUFSREVEX0JZKHByb2Nl
c3NfbG9ja18pOwotCi0gIGludDY0X3QgbmV4dF9wcm9jZXNzX3RpbWVfdXNfOwotCiAgIGludDY0
X3QgbGFzdF9sb2dfdGltZV91c187CiAKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihG
YWtlTmV0d29ya1BpcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9mbGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mbGV4ZmVjX3JlY2VpdmVfc3Ry
ZWFtLmNjCmluZGV4IGFiMTM4MzY4YmEwZWE5OTgxNjZjNmE5ZjkyMjI2ZTZkODRkMjk4ZGEuLmFi
NmRkZTM3YjQ2ZDc2OWNkZDljYjZlMzFkMWNjYTM1NWZmODVkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZmxleGZlY19yZWNlaXZl
X3N0cmVhbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL2ZsZXhmZWNfcmVjZWl2ZV9zdHJlYW0uY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2lu
Y2x1ZGUgImNhbGwvZmxleGZlY19yZWNlaXZlX3N0cmVhbS5oIgogCisjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBGbGV4ZmVjUmVjZWl2ZVN0cmVh
bTo6Q29uZmlnOjpDb25maWcoVHJhbnNwb3J0KiBydGNwX3NlbmRfdHJhbnNwb3J0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mbGV4
ZmVjX3JlY2VpdmVfc3RyZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jYWxsL2ZsZXhmZWNfcmVjZWl2ZV9zdHJlYW0uaAppbmRleCBjY2MzMDE0MzBlODQ0
YTM4OGJkY2E4MTc5ZjIyYjQ4MDA4MWNkN2QzLi45NDlhZDc0MmFhMDNmNjZkNzIxYWI1MGI4NzVl
MWJjYmFmNWIzYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jYWxsL2ZsZXhmZWNfcmVjZWl2ZV9zdHJlYW0uaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2ZsZXhmZWNfcmVjZWl2ZV9zdHJl
YW0uaApAQCAtMTIsNyArMTIsNiBAQAogI2RlZmluZSBDQUxMX0ZMRVhGRUNfUkVDRUlWRV9TVFJF
QU1fSF8KIAogI2luY2x1ZGUgPHN0ZGludC5oPgotCiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1
ZGUgPHZlY3Rvcj4KIApAQCAtMjAsNyArMTksNiBAQAogI2luY2x1ZGUgImFwaS9ydHBfaGVhZGVy
cy5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBf
cGFja2V0X3NpbmtfaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBO
T0xJTlQoYnVpbGQvaW5jbHVkZSkKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcGFja2V0X3Jl
Y2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L3BhY2tldF9yZWNlaXZlci5oCmluZGV4IGYwNWU0MDlkNzlkMTM2Yzk4YzA4MmQ1MDljZjkwNmQz
N2Q3NTZhMDYuLjAyYTAxNTUwZGVmNjUyMzRhODk0MTc2NjhkNzg0YzU1NWNjNmIwM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcGFj
a2V0X3JlY2VpdmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9wYWNrZXRfcmVjZWl2ZXIuaApAQCAtMTYsNyArMTYsNiBAQAogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgiCi0jaW5jbHVkZSAiY29tbW9u
X3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJydGNfYmFzZS9j
b3B5b253cml0ZWJ1ZmZlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmFtcHVwX3Rlc3Rz
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yYW1w
dXBfdGVzdHMuY2MKaW5kZXggOGViNDUxYWMwNGY3M2E3Yjg1YWViYzgyZWZmZTQwYjdiMTU2OTk5
Yi4uOTczNTQyMWYzMGVjNTFjYjBlYmM1ZjYxZTU2ZmNlZDA1MjVkZTYwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yYW1wdXBfdGVz
dHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2Fs
bC9yYW1wdXBfdGVzdHMuY2MKQEAgLTExLDcgKzExLDkgQEAKICNpbmNsdWRlICJjYWxsL3JhbXB1
cF90ZXN0cy5oIgogCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oIgorI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9vdXRwdXQvcnRjX2V2ZW50X2xvZ19vdXRwdXRfZmls
ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2Zs
YWdzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3BsYXRmb3JtX3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgpA
QCAtMzgsNiArNDAsMTAgQEAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IEdlbmVyYXRlU3NyY3Moc2l6
ZV90IG51bV9zdHJlYW1zLCB1aW50MzJfdCBzc3JjX29mZnNldCkgewogfQogfSAgLy8gbmFtZXNw
YWNlCiAKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHJhbXBfZHVtcF9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiRmlsZW5hbWUgZm9yIGR1bXBlZCBy
ZWNlaXZlZCBSVFAgc3RyZWFtLiIpOworCiBSYW1wVXBUZXN0ZXI6OlJhbXBVcFRlc3RlcihzaXpl
X3QgbnVtX3ZpZGVvX3N0cmVhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bnVtX2F1ZGlvX3N0cmVhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVt
X2ZsZXhmZWNfc3RyZWFtcywKQEAgLTQ4LDcgKzU0LDYgQEAgUmFtcFVwVGVzdGVyOjpSYW1wVXBU
ZXN0ZXIoc2l6ZV90IG51bV92aWRlb19zdHJlYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCByZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlcG9ydF9wZXJm
X3N0YXRzKQogICAgIDogRW5kVG9FbmRUZXN0KHRlc3Q6OkNhbGxUZXN0OjprTG9uZ1RpbWVvdXRN
cyksCi0gICAgICBzdG9wX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAogICAgICAgY2xvY2tfKENsb2Nr
OjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgbnVtX3ZpZGVvX3N0cmVhbXNfKG51bV92aWRl
b19zdHJlYW1zKSwKICAgICAgIG51bV9hdWRpb19zdHJlYW1zXyhudW1fYXVkaW9fc3RyZWFtcyks
CkBAIC03OSwxMSArODQsMTIgQEAgUmFtcFVwVGVzdGVyOjpSYW1wVXBUZXN0ZXIoc2l6ZV90IG51
bV92aWRlb19zdHJlYW1zLAogCiBSYW1wVXBUZXN0ZXI6On5SYW1wVXBUZXN0ZXIoKSB7fQogCi12
b2lkIFJhbXBVcFRlc3Rlcjo6TW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNv
bmZpZykgewordm9pZCBSYW1wVXBUZXN0ZXI6Ok1vZGlmeVNlbmRlckJpdHJhdGVDb25maWcoCisg
ICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykgewogICBpZiAoc3RhcnRfYml0
cmF0ZV9icHNfICE9IDApIHsKLSAgICBjb25maWctPmJpdHJhdGVfY29uZmlnLnN0YXJ0X2JpdHJh
dGVfYnBzID0gc3RhcnRfYml0cmF0ZV9icHNfOworICAgIGJpdHJhdGVfY29uZmlnLT5zdGFydF9i
aXRyYXRlX2JwcyA9IHN0YXJ0X2JpdHJhdGVfYnBzXzsKICAgfQotICBjb25maWctPmJpdHJhdGVf
Y29uZmlnLm1pbl9iaXRyYXRlX2JwcyA9IDEwMDAwOworICBiaXRyYXRlX2NvbmZpZy0+bWluX2Jp
dHJhdGVfYnBzID0gMTAwMDA7CiB9CiAKIHZvaWQgUmFtcFVwVGVzdGVyOjpPblZpZGVvU3RyZWFt
c0NyZWF0ZWQoCkBAIC00NDgsOCArNDU0LDkgQEAgdm9pZCBSYW1wVXBEb3duVXBUZXN0ZXI6OlBv
bGxTdGF0cygpIHsKICAgfSB3aGlsZSAoIXN0b3BfZXZlbnRfLldhaXQoa1BvbGxJbnRlcnZhbE1z
KSk7CiB9CiAKLXZvaWQgUmFtcFVwRG93blVwVGVzdGVyOjpNb2RpZnlSZWNlaXZlckNhbGxDb25m
aWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpIHsKLSAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5taW5f
Yml0cmF0ZV9icHMgPSAxMDAwMDsKK3ZvaWQgUmFtcFVwRG93blVwVGVzdGVyOjpNb2RpZnlSZWNl
aXZlckJpdHJhdGVDb25maWcoCisgICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZp
ZykgeworICBiaXRyYXRlX2NvbmZpZy0+bWluX2JpdHJhdGVfYnBzID0gMTAwMDA7CiB9CiAKIHN0
ZDo6c3RyaW5nIFJhbXBVcERvd25VcFRlc3Rlcjo6R2V0TW9kaWZpZXJTdHJpbmcoKSBjb25zdCB7
CkBAIC01NjYsNyArNTczLDIzIEBAIHZvaWQgUmFtcFVwRG93blVwVGVzdGVyOjpFdm9sdmVUZXN0
U3RhdGUoaW50IGJpdHJhdGVfYnBzLCBib29sIHN1c3BlbmRlZCkgewogCiBjbGFzcyBSYW1wVXBU
ZXN0IDogcHVibGljIHRlc3Q6OkNhbGxUZXN0IHsKICBwdWJsaWM6Ci0gIFJhbXBVcFRlc3QoKSB7
fQorICBSYW1wVXBUZXN0KCkgeworICAgIHN0ZDo6c3RyaW5nIGR1bXBfbmFtZShGTEFHX3JhbXBf
ZHVtcF9uYW1lKTsKKyAgICBpZiAoIWR1bXBfbmFtZS5lbXB0eSgpKSB7CisgICAgICBzZW5kX2V2
ZW50X2xvZ18gPSBSdGNFdmVudExvZzo6Q3JlYXRlKFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6
OkxlZ2FjeSk7CisgICAgICByZWN2X2V2ZW50X2xvZ18gPSBSdGNFdmVudExvZzo6Q3JlYXRlKFJ0
Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6OkxlZ2FjeSk7CisgICAgICBib29sIGV2ZW50X2xvZ19z
dGFydGVkID0KKyAgICAgICAgICBzZW5kX2V2ZW50X2xvZ18tPlN0YXJ0TG9nZ2luZygKKyAgICAg
ICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dPdXRwdXRGaWxlPigKKyAgICAg
ICAgICAgICAgICAgIGR1bXBfbmFtZSArICIuc2VuZC5ydGMuZGF0IiwgUnRjRXZlbnRMb2c6OmtV
bmxpbWl0ZWRPdXRwdXQpLAorICAgICAgICAgICAgICBSdGNFdmVudExvZzo6a0ltbWVkaWF0ZU91
dHB1dCkgJiYKKyAgICAgICAgICByZWN2X2V2ZW50X2xvZ18tPlN0YXJ0TG9nZ2luZygKKyAgICAg
ICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dPdXRwdXRGaWxlPigKKyAgICAg
ICAgICAgICAgICAgIGR1bXBfbmFtZSArICIucmVjdi5ydGMuZGF0IiwgUnRjRXZlbnRMb2c6OmtV
bmxpbWl0ZWRPdXRwdXQpLAorICAgICAgICAgICAgICBSdGNFdmVudExvZzo6a0ltbWVkaWF0ZU91
dHB1dCk7CisgICAgICBSVENfRENIRUNLKGV2ZW50X2xvZ19zdGFydGVkKTsKKyAgICB9CisgIH0K
IH07CiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrU3RhcnRCaXRyYXRlQnBzID0gNjAwMDA7CkBA
IC02NjcsMTMgKzY5MCw3IEBAIFRFU1RfRihSYW1wVXBUZXN0LCBUcmFuc3BvcnRTZXF1ZW5jZU51
bWJlclNpbXVsY2FzdFJlZFJ0eCkgewogICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9CiAKLS8vIFRP
RE8oYnVncy53ZWJydGMub3JnLzg4NzgpCi0jaWYgZGVmaW5lZChXRUJSVENfTUFDKQotI2RlZmlu
ZSBNQVlCRV9BdWRpb1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyIERJU0FCTEVEX0F1ZGlvVHJhbnNw
b3J0U2VxdWVuY2VOdW1iZXIKLSNlbHNlCi0jZGVmaW5lIE1BWUJFX0F1ZGlvVHJhbnNwb3J0U2Vx
dWVuY2VOdW1iZXIgQXVkaW9UcmFuc3BvcnRTZXF1ZW5jZU51bWJlcgotI2VuZGlmCi1URVNUX0Yo
UmFtcFVwVGVzdCwgTUFZQkVfQXVkaW9UcmFuc3BvcnRTZXF1ZW5jZU51bWJlcikgeworVEVTVF9G
KFJhbXBVcFRlc3QsIEF1ZGlvVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKICAgUmFtcFVwVGVz
dGVyIHRlc3QoMCwgMSwgMCwgMzAwMDAwLCAxMDAwMCwKICAgICAgICAgICAgICAgICAgICAgUnRw
RXh0ZW5zaW9uOjprVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJVcmksIGZhbHNlLCBmYWxzZSwKICAg
ICAgICAgICAgICAgICAgICAgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yYW1wdXBfdGVzdHMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmFtcHVwX3Rlc3RzLmgKaW5kZXgg
NmNjNjVjZTJhMjI0MzQ4OGVjOTFhNWRlM2MzMzdhZTMxNWY5MDk5Ny4uYjdkNGFmNWY1YTg4OThm
YWZhMGI2YjNhMTM0NTcwNmNiODJjOTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yYW1wdXBfdGVzdHMuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JhbXB1cF90ZXN0cy5oCkBA
IC02Nyw3ICs2Nyw3IEBAIGNsYXNzIFJhbXBVcFRlc3RlciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0Vu
ZFRlc3QgewogCiAgIHJ0Yzo6RXZlbnQgc3RvcF9ldmVudF87CiAgIENsb2NrKiBjb25zdCBjbG9j
a187Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBmb3J3YXJkX3RyYW5zcG9ydF9j
b25maWdfOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGZvcndhcmRfdHJhbnNwb3J0
X2NvbmZpZ187CiAgIGNvbnN0IHNpemVfdCBudW1fdmlkZW9fc3RyZWFtc187CiAgIGNvbnN0IHNp
emVfdCBudW1fYXVkaW9fc3RyZWFtc187CiAgIGNvbnN0IHNpemVfdCBudW1fZmxleGZlY19zdHJl
YW1zXzsKQEAgLTgzLDcgKzgzLDcgQEAgY2xhc3MgUmFtcFVwVGVzdGVyIDogcHVibGljIHRlc3Q6
OkVuZFRvRW5kVGVzdCB7CiAgIHR5cGVkZWYgc3RkOjptYXA8dWludDMyX3QsIHVpbnQzMl90PiBT
c3JjTWFwOwogICBjbGFzcyBWaWRlb1N0cmVhbUZhY3Rvcnk7CiAKLSAgdm9pZCBNb2RpZnlTZW5k
ZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSBvdmVycmlkZTsKKyAgdm9pZCBNb2Rp
ZnlTZW5kZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcp
IG92ZXJyaWRlOwogICB2b2lkIE9uVmlkZW9TdHJlYW1zQ3JlYXRlZCgKICAgICAgIFZpZGVvU2Vu
ZFN0cmVhbSogc2VuZF9zdHJlYW0sCiAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb1JlY2Vp
dmVTdHJlYW0qPiYgcmVjZWl2ZV9zdHJlYW1zKSBvdmVycmlkZTsKQEAgLTE0Miw3ICsxNDIsNyBA
QCBjbGFzcyBSYW1wVXBEb3duVXBUZXN0ZXIgOiBwdWJsaWMgUmFtcFVwVGVzdGVyIHsKICAgICBr
VHJhbnNpdGlvblRvTmV4dFN0YXRlLAogICB9OwogCi0gIHZvaWQgTW9kaWZ5UmVjZWl2ZXJDYWxs
Q29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKTsKKyAgdm9pZCBNb2RpZnlSZWNlaXZlckJpdHJh
dGVDb25maWcoQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykgb3ZlcnJpZGU7CiAK
ICAgc3RkOjpzdHJpbmcgR2V0TW9kaWZpZXJTdHJpbmcoKSBjb25zdDsKICAgaW50IEdldEV4cGVj
dGVkSGlnaEJpdHJhdGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVfdGlt
ZV9jYWxjdWxhdG9yLmNjCmluZGV4IDE2YzZhNDNjYzNmZmMwNTQ5MjkxNmExOTQ2MDRhZjVkYzdm
YzFmZjIuLmI3MDU2NzMyZThiNjVhODgyMmM5MWFjNWZkNTZkNTFjOTQxNmQzOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2
ZV90aW1lX2NhbGN1bGF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5jYwpAQCAtOSw1OSArOSwx
MTIgQEAKICAqLwogCiAjaW5jbHVkZSAiY2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5oIgor
CisjaW5jbHVkZSA8c3RyaW5nPgorCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3Nh
ZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJp
YWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewotdXNpbmcgOjp3ZWJydGM6
OmZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWU7CiB1c2luZyA6OndlYnJ0Yzo6ZmllbGRfdHJpYWw6
OklzRW5hYmxlZDsKIAotY29uc3QgY2hhciBrQndlUmVjZWl2ZVRpbWVDb3JyZWN0aW9uW10gPSAi
V2ViUlRDLUJ3ZVJlY2VpdmVUaW1lQ29ycmVjdGlvbiI7Citjb25zdCBjaGFyIGtCd2VSZWNlaXZl
VGltZUNvcnJlY3Rpb25bXSA9ICJXZWJSVEMtQndlLVJlY2VpdmVUaW1lRml4IjsKIH0gIC8vIG5h
bWVzcGFjZQogCi1SZWNlaXZlVGltZUNhbGN1bGF0b3I6OlJlY2VpdmVUaW1lQ2FsY3VsYXRvcihp
bnQ2NF90IG1pbl9kZWx0YV9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgbWF4X2RlbHRhX2RpZmZfbXMpCi0gICAgOiBtaW5fZGVsdGFfdXNf
KG1pbl9kZWx0YV9tcyAqIDEwMDApLAotICAgICAgbWF4X2RlbHRhX2RpZmZfdXNfKG1heF9kZWx0
YV9kaWZmX21zICogMTAwMCkge30KK1JlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZzo6UmVjZWl2
ZVRpbWVDYWxjdWxhdG9yQ29uZmlnKCkKKyAgICA6IG1heF9wYWNrZXRfdGltZV9yZXBhaXIoIm1h
eHJlcCIsIFRpbWVEZWx0YTo6bXMoMjAwMCkpLAorICAgICAgc3RhbGxfdGhyZXNob2xkKCJzdGFs
bCIsIFRpbWVEZWx0YTo6bXMoNSkpLAorICAgICAgdG9sZXJhbmNlKCJ0b2wiLCBUaW1lRGVsdGE6
Om1zKDEpKSwKKyAgICAgIG1heF9zdGFsbCgibWF4c3RhbGwiLCBUaW1lRGVsdGE6OnNlY29uZHMo
NSkpIHsKKyAgc3RkOjpzdHJpbmcgdHJpYWxfc3RyaW5nID0KKyAgICAgIGZpZWxkX3RyaWFsOjpG
aW5kRnVsbE5hbWUoa0J3ZVJlY2VpdmVUaW1lQ29ycmVjdGlvbik7CisgIFBhcnNlRmllbGRUcmlh
bCgKKyAgICAgIHsmbWF4X3BhY2tldF90aW1lX3JlcGFpciwgJnN0YWxsX3RocmVzaG9sZCwgJnRv
bGVyYW5jZSwgJm1heF9zdGFsbH0sCisgICAgICB0cmlhbF9zdHJpbmcpOworfQorUmVjZWl2ZVRp
bWVDYWxjdWxhdG9yQ29uZmlnOjpSZWNlaXZlVGltZUNhbGN1bGF0b3JDb25maWcoCisgICAgY29u
c3QgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnJikgPSBkZWZhdWx0OworUmVjZWl2ZVRpbWVD
YWxjdWxhdG9yQ29uZmlnOjp+UmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnKCkgPSBkZWZhdWx0
OworCitSZWNlaXZlVGltZUNhbGN1bGF0b3I6OlJlY2VpdmVUaW1lQ2FsY3VsYXRvcigpCisgICAg
OiBjb25maWdfKFJlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZygpKSB7fQogCiBzdGQ6OnVuaXF1
ZV9wdHI8UmVjZWl2ZVRpbWVDYWxjdWxhdG9yPgogUmVjZWl2ZVRpbWVDYWxjdWxhdG9yOjpDcmVh
dGVGcm9tRmllbGRUcmlhbCgpIHsKICAgaWYgKCFJc0VuYWJsZWQoa0J3ZVJlY2VpdmVUaW1lQ29y
cmVjdGlvbikpCiAgICAgcmV0dXJuIG51bGxwdHI7Ci0gIGludCBtaW4sIG1heDsKLSAgaWYgKHNz
Y2FuZihGaW5kRnVsbE5hbWUoa0J3ZVJlY2VpdmVUaW1lQ29ycmVjdGlvbikuY19zdHIoKSwgIkVu
YWJsZWQsJWQsJWQiLAotICAgICAgICAgICAgICZtaW4sICZtYXgpICE9IDIpIHsKLSAgICBSVENf
TE9HKExTX1dBUk5JTkcpIDw8ICJJbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJzIHByb3ZpZGVk
LiI7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0gIH0KLSAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVl
PFJlY2VpdmVUaW1lQ2FsY3VsYXRvcj4obWluLCBtYXgpOworICByZXR1cm4gYWJzbDo6bWFrZV91
bmlxdWU8UmVjZWl2ZVRpbWVDYWxjdWxhdG9yPigpOwogfQogCi1pbnQ2NF90IFJlY2VpdmVUaW1l
Q2FsY3VsYXRvcjo6UmVjb25jaWxlUmVjZWl2ZVRpbWVzKGludDY0X3QgcGFja2V0X3RpbWVfdXNf
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90IHNhZmVfdGltZV91c18pIHsKLSAgaWYgKCFyZWNlaXZlX3RpbWVfb2Zmc2V0X3VzXykg
ewotICAgIHJlY2VpdmVfdGltZV9vZmZzZXRfdXNfID0gc2FmZV90aW1lX3VzXyAtIHBhY2tldF90
aW1lX3VzXzsKLSAgfSBlbHNlIHsKLSAgICBpbnQ2NF90IHNhZmVfZGVsdGFfdXMgPSBzYWZlX3Rp
bWVfdXNfIC0gbGFzdF9zYWZlX3RpbWVfdXNfOwotICAgIGludDY0X3QgcGFja2V0X2RlbHRhX3Vz
XyA9IHBhY2tldF90aW1lX3VzXyAtIGxhc3RfcGFja2V0X3RpbWVfdXNfOwotICAgIGludDY0X3Qg
ZGVsdGFfZGlmZiA9IHBhY2tldF9kZWx0YV91c18gLSBzYWZlX2RlbHRhX3VzOwotICAgIC8vIFBh
Y2tldCB0aW1lIHNob3VsZCBub3QgZGVjcmVhc2Ugc2lnbmlmaWNhbnRseSwgYSBsYXJnZSBkZWNy
ZWFzZSBpbmRpY2F0ZXMKLSAgICAvLyBhIHJlc2V0IG9mIHRoZSBwYWNrZXQgdGltZSBjbG9jayBh
bmQgd2Ugc2hvdWxkIHJlc2V0IHRoZSBvZmZlc3QKLSAgICAvLyBwYXJhbWV0ZXIuIFRoZSBzYWZl
IHJlZmVyZW5jZSB0aW1lIGNhbiBpbmNyZWFzZSBpbiBsYXJnZSBqdW1wcyBpZiB0aGUKLSAgICAv
LyB0aHJlYWQgbWVhc3VyaW5nIGl0IGlzIGJhY2tncm91bmRlZCBmb3IgbG9uZ2VyIHBlcmlvZHMu
IEJ1dCBpZiB0aGUgcGFja2V0Ci0gICAgLy8gdGltZSBpbmNyZWFzZXMgc2lnbmlmaWNhbnRseSBt
b3JlIHRoYW4gdGhlIHNhZmUgdGltZSwgaXQgaW5kaWNhdGVzIGEKLSAgICAvLyBjbG9jayByZXNl
dCBhbmQgd2Ugc2hvdWxkIHJlc2V0IHRoZSBvZmZzZXQuCi0KLSAgICBpZiAocGFja2V0X2RlbHRh
X3VzXyA8IG1pbl9kZWx0YV91c18gfHwgZGVsdGFfZGlmZiA+IG1heF9kZWx0YV9kaWZmX3VzXykg
ewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVjZWl2ZWQgYSBjbG9jayBqdW1wIG9m
ICIgPDwgZGVsdGFfZGlmZgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIHJlc2V0dGlu
ZyBvZmZzZXQiOwotICAgICAgcmVjZWl2ZV90aW1lX29mZnNldF91c18gPSBzYWZlX3RpbWVfdXNf
IC0gcGFja2V0X3RpbWVfdXNfOworaW50NjRfdCBSZWNlaXZlVGltZUNhbGN1bGF0b3I6OlJlY29u
Y2lsZVJlY2VpdmVUaW1lcyhpbnQ2NF90IHBhY2tldF90aW1lX3VzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHN5c3RlbV90aW1l
X3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IHNhZmVfdGltZV91cykgeworICBpbnQ2NF90IHN0YWxsX3RpbWVfdXMgPSBzeXN0
ZW1fdGltZV91cyAtIHBhY2tldF90aW1lX3VzOworICBpZiAodG90YWxfc3lzdGVtX3RpbWVfcGFz
c2VkX3VzXyA8IGNvbmZpZ18uc3RhbGxfdGhyZXNob2xkLT51cygpKSB7CisgICAgc3RhbGxfdGlt
ZV91cyA9IHJ0Yzo6U2FmZU1pbihzdGFsbF90aW1lX3VzLCBjb25maWdfLm1heF9zdGFsbC0+dXMo
KSk7CisgIH0KKyAgaW50NjRfdCBjb3JyZWN0ZWRfdGltZV91cyA9IHNhZmVfdGltZV91cyAtIHN0
YWxsX3RpbWVfdXM7CisKKyAgaWYgKGxhc3RfcGFja2V0X3RpbWVfdXNfID09IC0xICYmIHN0YWxs
X3RpbWVfdXMgPCAwKSB7CisgICAgc3RhdGljX2Nsb2NrX29mZnNldF91c18gPSBzdGFsbF90aW1l
X3VzOworICAgIGNvcnJlY3RlZF90aW1lX3VzICs9IHN0YXRpY19jbG9ja19vZmZzZXRfdXNfOwor
ICB9IGVsc2UgaWYgKGxhc3RfcGFja2V0X3RpbWVfdXNfID4gMCkgeworICAgIC8vIEFsbCByZXBh
aXJzIGRlcGVuZCBvbiB2YXJpYWJsZXMgYmVpbmcgaW50aWFsaXplZAorICAgIGludDY0X3QgcGFj
a2V0X3RpbWVfZGVsdGFfdXMgPSBwYWNrZXRfdGltZV91cyAtIGxhc3RfcGFja2V0X3RpbWVfdXNf
OworICAgIGludDY0X3Qgc3lzdGVtX3RpbWVfZGVsdGFfdXMgPSBzeXN0ZW1fdGltZV91cyAtIGxh
c3Rfc3lzdGVtX3RpbWVfdXNfOworICAgIGludDY0X3Qgc2FmZV90aW1lX2RlbHRhX3VzID0gc2Fm
ZV90aW1lX3VzIC0gbGFzdF9zYWZlX3RpbWVfdXNfOworCisgICAgLy8gUmVwYWlyIGJhY2t3YXJk
cyBjbG9jayByZXNldHMgZHVyaW5nIGluaXRpYWwgc3RhbGwuIEluIHRoaXMgY2FzZSwgdGhlCisg
ICAgLy8gcmVzZXQgaXMgb2JzZXJ2ZWQgb25seSBpbiBwYWNrZXQgdGltZSBidXQgbmV2ZXIgaW4g
c3lzdGVtIHRpbWUuCisgICAgaWYgKHN5c3RlbV90aW1lX2RlbHRhX3VzIDwgMCkKKyAgICAgIHRv
dGFsX3N5c3RlbV90aW1lX3Bhc3NlZF91c18gKz0gY29uZmlnXy5zdGFsbF90aHJlc2hvbGQtPnVz
KCk7CisgICAgZWxzZQorICAgICAgdG90YWxfc3lzdGVtX3RpbWVfcGFzc2VkX3VzXyArPSBzeXN0
ZW1fdGltZV9kZWx0YV91czsKKyAgICBpZiAocGFja2V0X3RpbWVfZGVsdGFfdXMgPCAwICYmCisg
ICAgICAgIHRvdGFsX3N5c3RlbV90aW1lX3Bhc3NlZF91c18gPCBjb25maWdfLnN0YWxsX3RocmVz
aG9sZC0+dXMoKSkgeworICAgICAgc3RhdGljX2Nsb2NrX29mZnNldF91c18gLT0gcGFja2V0X3Rp
bWVfZGVsdGFfdXM7CisgICAgfQorICAgIGNvcnJlY3RlZF90aW1lX3VzICs9IHN0YXRpY19jbG9j
a19vZmZzZXRfdXNfOworCisgICAgLy8gRGV0ZWN0IHJlc2V0cyBpbmJldHdlZW4gY2xvY2sgcmVh
ZGluZ3MgaW4gc29ja2V0IGFuZCBhcHAuCisgICAgYm9vbCBmb3J3YXJkX2Nsb2NrX3Jlc2V0ID0K
KyAgICAgICAgY29ycmVjdGVkX3RpbWVfdXMgKyBjb25maWdfLnRvbGVyYW5jZS0+dXMoKSA8IGxh
c3RfY29ycmVjdGVkX3RpbWVfdXNfOworICAgIGJvb2wgb2J2aW91c19iYWNrd2FyZF9jbG9ja19y
ZXNldCA9IHN5c3RlbV90aW1lX3VzIDwgcGFja2V0X3RpbWVfdXM7CisKKyAgICAvLyBIYXJkZXIg
Y2FzZSB3aXRoIGJhY2t3YXJkIGNsb2NrIHJlc2V0IGR1cmluZyBzdGFsbCwgdGhlIHJlc2V0IGJl
aW5nCisgICAgLy8gc21hbGxlciB0aGFuIHRoZSBzdGFsbC4gQ29tcGVuc2F0ZSB0aHJvdWdob3V0
IHRoZSBzdGFsbC4KKyAgICBib29sIHNtYWxsX2JhY2t3YXJkX2Nsb2NrX3Jlc2V0ID0KKyAgICAg
ICAgIW9idmlvdXNfYmFja3dhcmRfY2xvY2tfcmVzZXQgJiYKKyAgICAgICAgc2FmZV90aW1lX2Rl
bHRhX3VzID4gc3lzdGVtX3RpbWVfZGVsdGFfdXMgKyBjb25maWdfLnRvbGVyYW5jZS0+dXMoKTsK
KyAgICBib29sIHN0YWxsX3N0YXJ0ID0KKyAgICAgICAgcGFja2V0X3RpbWVfZGVsdGFfdXMgPj0g
MCAmJgorICAgICAgICBzeXN0ZW1fdGltZV9kZWx0YV91cyA+IHBhY2tldF90aW1lX2RlbHRhX3Vz
ICsgY29uZmlnXy50b2xlcmFuY2UtPnVzKCk7CisgICAgYm9vbCBzdGFsbF9pc19vdmVyID0gc2Fm
ZV90aW1lX2RlbHRhX3VzID4gY29uZmlnXy5zdGFsbF90aHJlc2hvbGQtPnVzKCk7CisgICAgYm9v
bCBwYWNrZXRfdGltZV9jYXVnaHRfdXAgPQorICAgICAgICBwYWNrZXRfdGltZV9kZWx0YV91cyA8
IDAgJiYgc3lzdGVtX3RpbWVfZGVsdGFfdXMgPj0gMDsKKyAgICBpZiAoc3RhbGxfc3RhcnQgJiYg
c21hbGxfYmFja3dhcmRfY2xvY2tfcmVzZXQpCisgICAgICBzbWFsbF9yZXNldF9kdXJpbmdfc3Rh
bGxfID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChzdGFsbF9pc19vdmVyIHx8IHBhY2tldF90aW1lX2Nh
dWdodF91cCkKKyAgICAgIHNtYWxsX3Jlc2V0X2R1cmluZ19zdGFsbF8gPSBmYWxzZTsKKworICAg
IC8vIElmIHJlc2V0cyBhcmUgZGV0ZWN0ZWQsIGFkdmFuY2UgdGltZSBieSAoY2FwcGVkKSBwYWNr
ZXQgdGltZSBpbmNyZWFzZS4KKyAgICBpZiAoZm9yd2FyZF9jbG9ja19yZXNldCB8fCBvYnZpb3Vz
X2JhY2t3YXJkX2Nsb2NrX3Jlc2V0IHx8CisgICAgICAgIHNtYWxsX3Jlc2V0X2R1cmluZ19zdGFs
bF8pIHsKKyAgICAgIGNvcnJlY3RlZF90aW1lX3VzID0gbGFzdF9jb3JyZWN0ZWRfdGltZV91c18g
KworICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlNhZmVDbGFtcChwYWNrZXRfdGltZV9k
ZWx0YV91cywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
ZmlnXy5tYXhfcGFja2V0X3RpbWVfcmVwYWlyLT51cygpKTsKICAgICB9CiAgIH0KLSAgbGFzdF9w
YWNrZXRfdGltZV91c18gPSBwYWNrZXRfdGltZV91c187Ci0gIGxhc3Rfc2FmZV90aW1lX3VzXyA9
IHNhZmVfdGltZV91c187Ci0gIHJldHVybiBwYWNrZXRfdGltZV91c18gKyAqcmVjZWl2ZV90aW1l
X29mZnNldF91c187CisKKyAgbGFzdF9jb3JyZWN0ZWRfdGltZV91c18gPSBjb3JyZWN0ZWRfdGlt
ZV91czsKKyAgbGFzdF9wYWNrZXRfdGltZV91c18gPSBwYWNrZXRfdGltZV91czsKKyAgbGFzdF9z
eXN0ZW1fdGltZV91c18gPSBzeXN0ZW1fdGltZV91czsKKyAgbGFzdF9zYWZlX3RpbWVfdXNfID0g
c2FmZV90aW1lX3VzOworICByZXR1cm4gY29ycmVjdGVkX3RpbWVfdXM7CiB9CisKIH0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0
b3IuaAppbmRleCBhODIxN2NkMTAxMjU5ZjhiMzgxYWRiMDgyMjc5ZDgzNzVkYzIxZjE0Li4yNjlk
NGVmOTEwMDkwODRkMjBkYzA0ZjAwMTAyNDI2MDgwYzQyNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVfdGltZV9jYWxj
dWxhdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5oCkBAIC0xMCwxMyArMTAsMjQgQEAKICNpZm5k
ZWYgQ0FMTF9SRUNFSVZFX1RJTUVfQ0FMQ1VMQVRPUl9IXwogI2RlZmluZSBDQUxMX1JFQ0VJVkVf
VElNRV9DQUxDVUxBVE9SX0hfCiAKLSNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1v
cnk+CiAKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfdW5pdHMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKK3N0cnVjdCBSZWNlaXZlVGltZUNhbGN1bGF0b3JDb25maWcgeworICBSZWNlaXZlVGltZUNh
bGN1bGF0b3JDb25maWcoKTsKKyAgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnKGNvbnN0IFJl
Y2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZyYpOworICBSZWNlaXZlVGltZUNhbGN1bGF0b3JDb25m
aWcmIG9wZXJhdG9yPShjb25zdCBSZWNlaXZlVGltZUNhbGN1bGF0b3JDb25maWcmKSA9CisgICAg
ICBkZWZhdWx0OworICB+UmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnKCk7CisgIEZpZWxkVHJp
YWxQYXJhbWV0ZXI8VGltZURlbHRhPiBtYXhfcGFja2V0X3RpbWVfcmVwYWlyOworICBGaWVsZFRy
aWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4gc3RhbGxfdGhyZXNob2xkOworICBGaWVsZFRyaWFsUGFy
YW1ldGVyPFRpbWVEZWx0YT4gdG9sZXJhbmNlOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVE
ZWx0YT4gbWF4X3N0YWxsOworfTsKKwogLy8gVGhlIHJlY2VpdmUgdGltZSBjYWxjdWxhdG9yIHNl
cnZlcyB0aGUgcHVycG9zZSBvZiBjb21iaW5pbmcgcGFja2V0IHRpbWUKIC8vIHN0YW1wcyB3aXRo
IGEgc2FmZWx5IGluY3JlbWVudGFsIGNsb2NrLiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgcGFja2V0
IHRpbWUKIC8vIHN0YW1wcyBhcmUgYmFzZWQgb24gbG93ZXIgbGF5ZXIgdGltZXN0YW1wcyB0aGF0
IGhhdmUgbW9yZSBhY2N1cmF0ZSB0aW1lCkBAIC0yOCwyMCArMzksMjAgQEAgbmFtZXNwYWNlIHdl
YnJ0YyB7CiBjbGFzcyBSZWNlaXZlVGltZUNhbGN1bGF0b3IgewogIHB1YmxpYzoKICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxSZWNlaXZlVGltZUNhbGN1bGF0b3I+IENyZWF0ZUZyb21GaWVsZFRy
aWFsKCk7Ci0gIC8vIFRoZSBtaW4gZGVsdGEgaXMgdXNlZCB0byBjb3JyZWN0IGZvciBqdW1wcyBi
YWNrd2FyZHMgaW4gdGltZSwgdG8gYWxsb3cgc29tZQotICAvLyBwYWNrZXQgcmVvcmRlcmluZyBh
IHNtYWxsIG5lZ2F0aXZlIHZhbHVlIGlzIGFwcHJvcHJpYXRlIHRvIHVzZS4gVGhlIG1heAotICAv
LyBkZWx0YSBkaWZmZXJlbmNlIGlzIHVzZWQgYXMgbWFyZ2luIHdoZW4gZGV0ZWN0aW5nIHdoZW4g
cGFja2V0IHRpbWUKLSAgLy8gaW5jcmVhc2VzIG1vcmUgdGhhbiB0aGUgc2FmZSBjbG9jay4gVGhp
cyBzaG91bGQgYmUgbGFyZ2VyIHRoYW4gdGhlIGxhcmdlc3QKLSAgLy8gZXhwZWN0ZWQgc3lzbXRl
bSBpbmR1Y2VkIGRlbGF5IGluIHRoZSBzYWZlIGNsb2NrIHRpbWVzdGFtcC4KLSAgUmVjZWl2ZVRp
bWVDYWxjdWxhdG9yKGludDY0X3QgbWluX2RlbHRhX21zLCBpbnQ2NF90IG1heF9kZWx0YV9kaWZm
X21zKTsKLSAgaW50NjRfdCBSZWNvbmNpbGVSZWNlaXZlVGltZXMoaW50NjRfdCBwYWNrZXRfdGlt
ZV91c18sIGludDY0X3Qgc2FmZV90aW1lX3VzXyk7CisgIFJlY2VpdmVUaW1lQ2FsY3VsYXRvcigp
OworICBpbnQ2NF90IFJlY29uY2lsZVJlY2VpdmVUaW1lcyhpbnQ2NF90IHBhY2tldF90aW1lX3Vz
XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBzeXN0ZW1fdGltZV91
c18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qgc2FmZV90aW1lX3Vz
Xyk7CiAKICBwcml2YXRlOgotICBjb25zdCBpbnQ2NF90IG1pbl9kZWx0YV91c187Ci0gIGNvbnN0
IGludDY0X3QgbWF4X2RlbHRhX2RpZmZfdXNfOwotICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBy
ZWNlaXZlX3RpbWVfb2Zmc2V0X3VzXzsKLSAgaW50NjRfdCBsYXN0X3BhY2tldF90aW1lX3VzXyA9
IDA7Ci0gIGludDY0X3QgbGFzdF9zYWZlX3RpbWVfdXNfID0gMDsKKyAgaW50NjRfdCBsYXN0X2Nv
cnJlY3RlZF90aW1lX3VzXyA9IC0xOworICBpbnQ2NF90IGxhc3RfcGFja2V0X3RpbWVfdXNfID0g
LTE7CisgIGludDY0X3QgbGFzdF9zeXN0ZW1fdGltZV91c18gPSAtMTsKKyAgaW50NjRfdCBsYXN0
X3NhZmVfdGltZV91c18gPSAtMTsKKyAgaW50NjRfdCB0b3RhbF9zeXN0ZW1fdGltZV9wYXNzZWRf
dXNfID0gMDsKKyAgaW50NjRfdCBzdGF0aWNfY2xvY2tfb2Zmc2V0X3VzXyA9IDA7CisgIGludDY0
X3Qgc21hbGxfcmVzZXRfZHVyaW5nX3N0YWxsXyA9IGZhbHNlOworICBSZWNlaXZlVGltZUNhbGN1
bGF0b3JDb25maWcgY29uZmlnXzsKIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAjZW5kaWYg
IC8vIENBTExfUkVDRUlWRV9USU1FX0NBTENVTEFUT1JfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1
bGF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3JlY2VpdmVfdGltZV9jYWxjdWxhdG9yX3VuaXR0ZXN0LmNjCmluZGV4IDkyZDVh
Mjc5ZWFlMTEyNDJiNzg2Yjc3YzE1ZmU0MjVlZGZhMjliYTIuLjM4ZWY1NGVjZTc5NDExMmNjOWRh
ZDgxNWMyNGI0OTUxM2M3MGQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3JfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9y
ZWNlaXZlX3RpbWVfY2FsY3VsYXRvcl91bml0dGVzdC5jYwpAQCAtMTAsNjUgKzEwLDIzNyBAQAog
CiAjaW5jbHVkZSAiY2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5oIgogCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHR1cGxlPgorI2luY2x1
ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9yYW5kb20uaCIKKyNp
bmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewogbmFtZXNwYWNlIHsKIAotaW50
NjRfdCBSZWNvbmNpbGVNcyhSZWNlaXZlVGltZUNhbGN1bGF0b3IqIGNhbGMsCi0gICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfbXMsCi0gICAgICAgICAgICAgICAgICAgIGlu
dDY0X3Qgc2FmZV90aW1lX21zKSB7Ci0gIHJldHVybiBjYWxjLT5SZWNvbmNpbGVSZWNlaXZlVGlt
ZXMocGFja2V0X3RpbWVfbXMgKiAxMDAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNhZmVfdGltZV9tcyAqIDEwMDApIC8KLSAgICAgICAgIDEwMDA7Ci19Ci19ICAvLyBu
YW1lc3BhY2UKK2NsYXNzIEVtdWxhdGVkQ2xvY2sgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgRW11
bGF0ZWRDbG9jayhpbnQgc2VlZCwgZmxvYXQgZHJpZnQgPSAwLjBmKQorICAgICAgOiByYW5kb21f
KHNlZWQpLCBjbG9ja191c18ocmFuZG9tXy5SYW5kPHVpbnQzMl90PigpKSwgZHJpZnRfKGRyaWZ0
KSB7fQorICB2aXJ0dWFsIH5FbXVsYXRlZENsb2NrKCkgPSBkZWZhdWx0OworICBpbnQ2NF90IEdl
dENsb2NrVXMoKSBjb25zdCB7IHJldHVybiBjbG9ja191c187IH0KIAotVEVTVChSZWNlaXZlVGlt
ZUNhbGN1bGF0b3JUZXN0LCBVc2VzU21hbGxlckluY3JlbWVudHMpIHsKLSAgaW50NjRfdCBrTWlu
RGVsdGFNcyA9IC0yMDsKLSAgaW50NjRfdCBrTWF4RGVsdGFEaWZmTXMgPSAxMDA7Ci0gIFJlY2Vp
dmVUaW1lQ2FsY3VsYXRvciBjYWxjKGtNaW5EZWx0YU1zLCBrTWF4RGVsdGFEaWZmTXMpOwotICAv
LyBJbml0aWFsaXplIG9mZnNldC4KLSAgUmVjb25jaWxlTXMoJmNhbGMsIDEwMDAwLCAyMDAwMCk7
Ci0KLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDAxMCwgMjAxMDApLCAyMDAxMCk7
Ci0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAwMjAsIDIwMTAwKSwgMjAwMjApOwot
ICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMDMwLCAyMDEwMCksIDIwMDMwKTsKLQot
ICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMTEwLCAyMDIwMCksIDIwMTEwKTsKLSAg
RVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDEyMCwgMjAyMDApLCAyMDEyMCk7Ci0gIEVY
UEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAxMzAsIDIwMjAwKSwgMjAxMzApOwotCi0gIC8v
IFNtYWxsIGp1bXBzIGJhY2t3YXJkcyBhcmUgbGV0IHRyb3VnaCwgdGhleSBtaWdodCBiZSBkdWUg
dG8gcmVvcmRlcmluZy4KLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDEyMCwgMjAy
MDApLCAyMDEyMCk7Ci0gIC8vIFRoZSBzYWZlIGNsb2NrIG1pZ2h0IGJlIHNtYWxsZXIgdGhhbiB0
aGUgcGFja2V0IGNsb2NrLgotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMjEwLCAy
MDIwMCksIDIwMjEwKTsKLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDI0MCwgMjAy
MDApLCAyMDI0MCk7Ci19CisgcHJvdGVjdGVkOgorICBpbnQ2NF90IFVwZGF0ZUNsb2NrKGludDY0
X3QgdGltZV91cykgeworICAgIGlmICghbGFzdF9xdWVyeV91c18pCisgICAgICBsYXN0X3F1ZXJ5
X3VzXyA9IHRpbWVfdXM7CisgICAgaW50NjRfdCBza2lwX3VzID0gdGltZV91cyAtICpsYXN0X3F1
ZXJ5X3VzXzsKKyAgICBhY2N1bXVsYXRlZF9kcmlmdF91c18gKz0gc2tpcF91cyAqIGRyaWZ0XzsK
KyAgICBpbnQ2NF90IGRyaWZ0X2NvcnJlY3Rpb25fdXMgPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihh
Y2N1bXVsYXRlZF9kcmlmdF91c18pOworICAgIGFjY3VtdWxhdGVkX2RyaWZ0X3VzXyAtPSBkcmlm
dF9jb3JyZWN0aW9uX3VzOworICAgIGNsb2NrX3VzXyArPSBza2lwX3VzICsgZHJpZnRfY29ycmVj
dGlvbl91czsKKyAgICBsYXN0X3F1ZXJ5X3VzXyA9IHRpbWVfdXM7CisgICAgcmV0dXJuIHNraXBf
dXM7CisgIH0KKyAgUmFuZG9tIHJhbmRvbV87CiAKLVRFU1QoUmVjZWl2ZVRpbWVDYWxjdWxhdG9y
VGVzdCwgQ29ycmVjdHNKdW1wcykgewotICBpbnQ2NF90IGtNaW5EZWx0YU1zID0gLTIwOwotICBp
bnQ2NF90IGtNYXhEZWx0YURpZmZNcyA9IDEwMDsKLSAgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yIGNh
bGMoa01pbkRlbHRhTXMsIGtNYXhEZWx0YURpZmZNcyk7Ci0gIC8vIEluaXRpYWxpemUgb2Zmc2V0
LgotICBSZWNvbmNpbGVNcygmY2FsYywgMTAwMDAsIDIwMDAwKTsKLQotICBFWFBFQ1RfRVEoUmVj
b25jaWxlTXMoJmNhbGMsIDEwMDEwLCAyMDEwMCksIDIwMDEwKTsKLSAgRVhQRUNUX0VRKFJlY29u
Y2lsZU1zKCZjYWxjLCAxMDAyMCwgMjAxMDApLCAyMDAyMCk7Ci0gIEVYUEVDVF9FUShSZWNvbmNp
bGVNcygmY2FsYywgMTAwMzAsIDIwMTAwKSwgMjAwMzApOwotCi0gIC8vIEp1bXAgZm9yd2FyZCBp
biB0aW1lLgotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMjQwLCAyMDIwMCksIDIw
MjAwKTsKLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDI1MCwgMjAyMDApLCAyMDIx
MCk7Ci0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAyNjAsIDIwMjAwKSwgMjAyMjAp
OwotCi0gIC8vIEp1bXAgYmFja3dhcmQgaW4gdGltZS4KLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1z
KCZjYWxjLCAxMDIzMCwgMjAzMDApLCAyMDMwMCk7Ci0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygm
Y2FsYywgMTAyNDAsIDIwMzAwKSwgMjAzMTApOwotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNh
bGMsIDEwMjUwLCAyMDMwMCksIDIwMzIwKTsKLX0KKyBwcml2YXRlOgorICBpbnQ2NF90IGNsb2Nr
X3VzXzsKKyAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9xdWVyeV91c187CisgIGZsb2F0
IGRyaWZ0XzsKKyAgZmxvYXQgYWNjdW11bGF0ZWRfZHJpZnRfdXNfID0gMDsKK307CiAKLX0gIC8v
IG5hbWVzcGFjZSB0ZXN0CitjbGFzcyBFbXVsYXRlZE1vbm90b25lb3VzQ2xvY2sgOiBwdWJsaWMg
RW11bGF0ZWRDbG9jayB7CisgcHVibGljOgorICBleHBsaWNpdCBFbXVsYXRlZE1vbm90b25lb3Vz
Q2xvY2soaW50IHNlZWQpIDogRW11bGF0ZWRDbG9jayhzZWVkKSB7fQorICB+RW11bGF0ZWRNb25v
dG9uZW91c0Nsb2NrKCkgPSBkZWZhdWx0OworCisgIGludDY0X3QgUXVlcnkoaW50NjRfdCB0aW1l
X3VzKSB7CisgICAgaW50NjRfdCBza2lwX3VzID0gVXBkYXRlQ2xvY2sodGltZV91cyk7CisKKyAg
ICAvLyBJbiBhIHN0YWxsCisgICAgaWYgKHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNfID4gMCkgewor
ICAgICAgaWYgKEdldENsb2NrVXMoKSA+IHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNfKSB7CisgICAg
ICAgIHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNfID0gMDsKKyAgICAgICAgcmV0dXJuIEdldENsb2Nr
VXMoKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBzdGFsbF9yZWNvdmVyeV90aW1l
X3VzXzsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDaGVjayBpZiB3ZSBlbnRlciBhIHN0YWxs
CisgICAgZm9yIChpbnQgayA9IDA7IGsgPCBza2lwX3VzOyArK2spIHsKKyAgICAgIGlmIChyYW5k
b21fLlJhbmQ8ZG91YmxlPigpIDwga0NoYW5jZU9mU3RhbGxQZXJVcykgeworICAgICAgICBpbnQ2
NF90IHN0YWxsX2R1cmF0aW9uX3VzID0KKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDY0X3Q+
KHJhbmRvbV8uUmFuZDxmbG9hdD4oKSAqIGtNYXhTdGFsbER1cmF0aW9uVXMpOworICAgICAgICBz
dGFsbF9yZWNvdmVyeV90aW1lX3VzXyA9IEdldENsb2NrVXMoKSArIHN0YWxsX2R1cmF0aW9uX3Vz
OworICAgICAgICByZXR1cm4gc3RhbGxfcmVjb3ZlcnlfdGltZV91c187CisgICAgICB9CisgICAg
fQorICAgIHJldHVybiBHZXRDbG9ja1VzKCk7CisgIH0KKworICB2b2lkIEZvcmNlU3RhbGxVcygp
IHsKKyAgICBpbnQ2NF90IHN0YWxsX2R1cmF0aW9uX3VzID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8
aW50NjRfdD4ocmFuZG9tXy5SYW5kPGZsb2F0PigpICoga01heFN0YWxsRHVyYXRpb25Vcyk7Cisg
ICAgc3RhbGxfcmVjb3ZlcnlfdGltZV91c18gPSBHZXRDbG9ja1VzKCkgKyBzdGFsbF9kdXJhdGlv
bl91czsKKyAgfQorCisgIGJvb2wgU3RhbGxlZCgpIGNvbnN0IHsgcmV0dXJuIHN0YWxsX3JlY292
ZXJ5X3RpbWVfdXNfID4gMDsgfQorCisgIGludDY0X3QgR2V0UmVtYWluaW5nU3RhbGwoaW50NjRf
dCB0aW1lX3VzKSBjb25zdCB7CisgICAgcmV0dXJuIHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNfID4g
MCA/IHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNfIC0gR2V0Q2xvY2tVcygpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IDA7CisgIH0KKworICBjb25zdCBpbnQ2NF90IGtN
YXhTdGFsbER1cmF0aW9uVXMgPSBydGM6OmtOdW1NaWNyb3NlY3NQZXJTZWM7CisKKyBwcml2YXRl
OgorICBjb25zdCBmbG9hdCBrQ2hhbmNlT2ZTdGFsbFBlclVzID0gNWUtNmY7CisgIGludDY0X3Qg
c3RhbGxfcmVjb3ZlcnlfdGltZV91c18gPSAwOworfTsKIAorY2xhc3MgRW11bGF0ZWROb25Nb25v
dG9uZW91c0Nsb2NrIDogcHVibGljIEVtdWxhdGVkQ2xvY2sgeworIHB1YmxpYzoKKyAgRW11bGF0
ZWROb25Nb25vdG9uZW91c0Nsb2NrKGludCBzZWVkLCBpbnQ2NF90IGR1cmF0aW9uX3VzLCBmbG9h
dCBkcmlmdCA9IDApCisgICAgICA6IEVtdWxhdGVkQ2xvY2soc2VlZCwgZHJpZnQpIHsKKyAgICBQ
cmVnZW5lcmF0ZShkdXJhdGlvbl91cyk7CisgIH0KKyAgfkVtdWxhdGVkTm9uTW9ub3RvbmVvdXND
bG9jaygpID0gZGVmYXVsdDsKKworICB2b2lkIFByZWdlbmVyYXRlKGludDY0X3QgZHVyYXRpb25f
dXMpIHsKKyAgICBpbnQ2NF90IHRpbWVfc2luY2VfcmVzZXRfdXMgPSBrTWluVGltZUJldHdlZW5S
ZXNldHNVczsKKyAgICBpbnQ2NF90IGNsb2NrX29mZnNldF91cyA9IDA7CisgICAgZm9yIChpbnQ2
NF90IHRpbWVfdXMgPSAwOyB0aW1lX3VzIDwgZHVyYXRpb25fdXM7IHRpbWVfdXMgKz0ga1Jlc29s
dXRpb25VcykgeworICAgICAgaW50NjRfdCBza2lwX3VzID0gVXBkYXRlQ2xvY2sodGltZV91cyk7
CisgICAgICB0aW1lX3NpbmNlX3Jlc2V0X3VzICs9IHNraXBfdXM7CisgICAgICBpbnQ2NF90IHJl
c2V0X3VzID0gMDsKKyAgICAgIGlmICh0aW1lX3NpbmNlX3Jlc2V0X3VzID49IGtNaW5UaW1lQmV0
d2VlblJlc2V0c1VzKSB7CisgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgc2tpcF91czsgKytr
KSB7CisgICAgICAgICAgaWYgKHJhbmRvbV8uUmFuZDxkb3VibGU+KCkgPCBrQ2hhbmNlT2ZSZXNl
dFBlclVzKSB7CisgICAgICAgICAgICByZXNldF91cyA9IHN0YXRpY19jYXN0PGludDY0X3Q+KDIg
KiByYW5kb21fLlJhbmQ8ZmxvYXQ+KCkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrTWF4QWJzUmVzZXRVcykgLQorICAgICAgICAgICAgICAgICAgICAgICBr
TWF4QWJzUmVzZXRVczsKKyAgICAgICAgICAgIGNsb2NrX29mZnNldF91cyArPSByZXNldF91czsK
KyAgICAgICAgICAgIHRpbWVfc2luY2VfcmVzZXRfdXMgPSAwOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBwcmVnZW5lcmF0ZWRfY2xv
Y2tfLmVtcGxhY2VfYmFjayhHZXRDbG9ja1VzKCkgKyBjbG9ja19vZmZzZXRfdXMpOworICAgICAg
cmVzZXRzX3VzXy5lbXBsYWNlX2JhY2socmVzZXRfdXMpOworICAgIH0KKyAgfQorCisgIGludDY0
X3QgUXVlcnkoaW50NjRfdCB0aW1lX3VzKSB7CisgICAgc2l6ZV90IGl4U3RhcnQgPQorICAgICAg
ICAobGFzdF9yZXNldF9xdWVyeV90aW1lX3VzXyArIChrUmVzb2x1dGlvblVzID4+IDEpKSAvIGtS
ZXNvbHV0aW9uVXMgKyAxOworICAgIHNpemVfdCBpeEVuZCA9ICh0aW1lX3VzICsgKGtSZXNvbHV0
aW9uVXMgPj4gMSkpIC8ga1Jlc29sdXRpb25VczsKKyAgICBpZiAoaXhFbmQgPj0gcHJlZ2VuZXJh
dGVkX2Nsb2NrXy5zaXplKCkpCisgICAgICByZXR1cm4gLTE7CisgICAgbGFzdF9yZXNldF9zaXpl
X3VzXyA9IDA7CisgICAgZm9yIChzaXplX3QgaXggPSBpeFN0YXJ0OyBpeCA8PSBpeEVuZDsgKytp
eCkgeworICAgICAgaWYgKHJlc2V0c191c19baXhdICE9IDApIHsKKyAgICAgICAgbGFzdF9yZXNl
dF9zaXplX3VzXyA9IHJlc2V0c191c19baXhdOworICAgICAgfQorICAgIH0KKyAgICBsYXN0X3Jl
c2V0X3F1ZXJ5X3RpbWVfdXNfID0gdGltZV91czsKKyAgICByZXR1cm4gcHJlZ2VuZXJhdGVkX2Ns
b2NrX1tpeEVuZF07CisgIH0KKworICBib29sIFdhc1Jlc2V0KCkgY29uc3QgeyByZXR1cm4gbGFz
dF9yZXNldF9zaXplX3VzXyAhPSAwOyB9CisgIGJvb2wgV2FzTmVnYXRpdmVSZXNldCgpIGNvbnN0
IHsgcmV0dXJuIGxhc3RfcmVzZXRfc2l6ZV91c18gPCAwOyB9CisgIGludDY0X3QgR2V0TGFzdFJl
c2V0VXMoKSBjb25zdCB7IHJldHVybiBsYXN0X3Jlc2V0X3NpemVfdXNfOyB9CisKKyBwcml2YXRl
OgorICBjb25zdCBmbG9hdCBrQ2hhbmNlT2ZSZXNldFBlclVzID0gMWUtNmY7CisgIGNvbnN0IGlu
dDY0X3Qga01heEFic1Jlc2V0VXMgPSBydGM6OmtOdW1NaWNyb3NlY3NQZXJTZWM7CisgIGNvbnN0
IGludDY0X3Qga01pblRpbWVCZXR3ZWVuUmVzZXRzVXMgPSAzICogcnRjOjprTnVtTWljcm9zZWNz
UGVyU2VjOworICBjb25zdCBpbnQ2NF90IGtSZXNvbHV0aW9uVXMgPSBydGM6OmtOdW1NaWNyb3Nl
Y3NQZXJNaWxsaXNlYzsKKyAgaW50NjRfdCBsYXN0X3Jlc2V0X3F1ZXJ5X3RpbWVfdXNfID0gMDsK
KyAgaW50NjRfdCBsYXN0X3Jlc2V0X3NpemVfdXNfID0gMDsKKyAgc3RkOjp2ZWN0b3I8aW50NjRf
dD4gcHJlZ2VuZXJhdGVkX2Nsb2NrXzsKKyAgc3RkOjp2ZWN0b3I8aW50NjRfdD4gcmVzZXRzX3Vz
XzsKK307CisKK1RFU1QoQ2xvY2tSZXBhaXIsIE5vQ2xvY2tEcmlmdCkgeworICBjb25zdCBpbnQg
a1NlZWRzID0gMTA7CisgIGNvbnN0IGludCBrRmlyc3RTZWVkID0gMTsKKyAgY29uc3QgaW50NjRf
dCBrUnVudGltZVVzID0gMTAgKiBydGM6OmtOdW1NaWNyb3NlY3NQZXJTZWM7CisgIGNvbnN0IGZs
b2F0IGtEcmlmdCA9IDAuMGY7CisgIGNvbnN0IGludDY0X3Qga01heFBhY2tldEludGVyYXJyaXZh
bFVzID0gNTAgKiBydGM6OmtOdW1NaWNyb3NlY3NQZXJNaWxsaXNlYzsKKyAgZm9yIChpbnQgc2Vl
ZCA9IGtGaXJzdFNlZWQ7IHNlZWQgPCBrU2VlZHMgKyBrRmlyc3RTZWVkOyArK3NlZWQpIHsKKyAg
ICBFbXVsYXRlZE1vbm90b25lb3VzQ2xvY2sgbW9ub3RvbmVfY2xvY2soc2VlZCk7CisgICAgRW11
bGF0ZWROb25Nb25vdG9uZW91c0Nsb2NrIG5vbl9tb25vdG9uZV9jbG9jaygKKyAgICAgICAgc2Vl
ZCArIDEsIGtSdW50aW1lVXMgKyBydGM6OmtOdW1NaWNyb3NlY3NQZXJTZWMsIGtEcmlmdCk7Cisg
ICAgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yIHJlY2VwdGlvbl90aW1lX3RyYWNrZXI7CisgICAgaW50
NjRfdCBjb3JyZWN0ZWRfY2xvY2tfMCA9IDA7CisgICAgaW50NjRfdCByZXNldF9kdXJpbmdfc3Rh
bGxfdG9sX3VzID0gMDsKKyAgICBib29sIGluaXRpYWxfY2xvY2tfc3RhbGwgPSB0cnVlOworICAg
IGludDY0X3QgYWNjdW11bGF0ZWRfdXBwZXJfYm91bmRfdG9sZXJhbmNlX3VzID0gMDsKKyAgICBp
bnQ2NF90IGFjY3VtdWxhdGVkX2xvd2VyX2JvdW5kX3RvbGVyYW5jZV91cyA9IDA7CisgICAgUmFu
ZG9tIHJhbmRvbSgxKTsKKyAgICBtb25vdG9uZV9jbG9jay5Gb3JjZVN0YWxsVXMoKTsKKyAgICBp
bnQ2NF90IGxhc3RfdGltZV91cyA9IDA7CisgICAgYm9vbCBhZGRfdG9sZXJhbmNlX29uX25leHRf
cGFja2V0ID0gZmFsc2U7CisgICAgaW50NjRfdCBtb25vdG9uZV9ub2lzZV91cyA9IDEwMDA7CisK
KyAgICBmb3IgKGludDY0X3QgdGltZV91cyA9IDA7IHRpbWVfdXMgPCBrUnVudGltZVVzOworICAg
ICAgICAgdGltZV91cyArPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyYW5kb20uUmFuZDxmbG9hdD4o
KSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtNYXhQYWNrZXRJ
bnRlcmFycml2YWxVcykpIHsKKyAgICAgIGludDY0X3Qgc29ja2V0X3RpbWVfdXMgPSBub25fbW9u
b3RvbmVfY2xvY2suUXVlcnkodGltZV91cyk7CisgICAgICBpbnQ2NF90IG1vbm90b25lX3VzID0g
bW9ub3RvbmVfY2xvY2suUXVlcnkodGltZV91cykgKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIgKiByYW5kb20uUmFuZDxmbG9hdD4oKSAqIG1vbm90b25lX25vaXNlX3VzIC0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb25vdG9uZV9ub2lzZV91czsKKyAgICAgIGludDY0X3Qg
c3lzdGVtX3RpbWVfdXMgPSBub25fbW9ub3RvbmVfY2xvY2suUXVlcnkoCisgICAgICAgICAgdGlt
ZV91cyArIG1vbm90b25lX2Nsb2NrLkdldFJlbWFpbmluZ1N0YWxsKHRpbWVfdXMpKTsKKworICAg
ICAgaW50NjRfdCBjb3JyZWN0ZWRfY2xvY2tfdXMgPSByZWNlcHRpb25fdGltZV90cmFja2VyLlJl
Y29uY2lsZVJlY2VpdmVUaW1lcygKKyAgICAgICAgICBzb2NrZXRfdGltZV91cywgc3lzdGVtX3Rp
bWVfdXMsIG1vbm90b25lX3VzKTsKKyAgICAgIGlmICh0aW1lX3VzID09IDApCisgICAgICAgIGNv
cnJlY3RlZF9jbG9ja18wID0gY29ycmVjdGVkX2Nsb2NrX3VzOworCisgICAgICBpZiAoYWRkX3Rv
bGVyYW5jZV9vbl9uZXh0X3BhY2tldCkKKyAgICAgICAgYWNjdW11bGF0ZWRfbG93ZXJfYm91bmRf
dG9sZXJhbmNlX3VzIC09ICh0aW1lX3VzIC0gbGFzdF90aW1lX3VzKTsKKworICAgICAgLy8gUGVy
ZmVjdCByZXBhaXIgY2Fubm90IGJlIGFjaGl2ZXZlZCBpZiBub24tbW9ub3RvbmUgY2xvY2sgcmVz
ZXRzIGR1cmluZworICAgICAgLy8gYSBtb25vdG9uZSBjbG9jayBzdGFsbC4KKyAgICAgIGFkZF90
b2xlcmFuY2Vfb25fbmV4dF9wYWNrZXQgPSBmYWxzZTsKKyAgICAgIGlmIChtb25vdG9uZV9jbG9j
ay5TdGFsbGVkKCkgJiYgbm9uX21vbm90b25lX2Nsb2NrLldhc1Jlc2V0KCkpIHsKKyAgICAgICAg
cmVzZXRfZHVyaW5nX3N0YWxsX3RvbF91cyA9CisgICAgICAgICAgICBzdGQ6Om1heChyZXNldF9k
dXJpbmdfc3RhbGxfdG9sX3VzLCB0aW1lX3VzIC0gbGFzdF90aW1lX3VzKTsKKyAgICAgICAgaWYg
KG5vbl9tb25vdG9uZV9jbG9jay5XYXNOZWdhdGl2ZVJlc2V0KCkpIHsKKyAgICAgICAgICBhZGRf
dG9sZXJhbmNlX29uX25leHRfcGFja2V0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
aW5pdGlhbF9jbG9ja19zdGFsbCAmJiAhbm9uX21vbm90b25lX2Nsb2NrLldhc05lZ2F0aXZlUmVz
ZXQoKSkgeworICAgICAgICAgIC8vIFBvc2l0aXZlIHJlc2V0cyBkdXJpbmcgYW4gaW5pdGlhbCBj
bG9jayBzdGFsbCBjYW5ub3QgYmUgcmVwYWlyZWQKKyAgICAgICAgICAvLyBhbmQgZXJyb3Igd2ls
bCBwcm9wYWdhdGUgdGhyb3VnaCByZXN0IG9mIHRyYWNlLgorICAgICAgICAgIGFjY3VtdWxhdGVk
X3VwcGVyX2JvdW5kX3RvbGVyYW5jZV91cyArPQorICAgICAgICAgICAgICBzdGQ6OmFicyhub25f
bW9ub3RvbmVfY2xvY2suR2V0TGFzdFJlc2V0VXMoKSk7CisgICAgICAgIH0KKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHJlc2V0X2R1cmluZ19zdGFsbF90b2xfdXMgPSAwOworICAgICAgICBpbml0
aWFsX2Nsb2NrX3N0YWxsID0gZmFsc2U7CisgICAgICB9CisgICAgICBpbnQ2NF90IGVyciA9IGNv
cnJlY3RlZF9jbG9ja191cyAtIGNvcnJlY3RlZF9jbG9ja18wIC0gdGltZV91czsKKworICAgICAg
Ly8gUmVzZXRzIGR1cmluZyBzdGFsbHMgbWF5IGxlYWQgdG8gc21hbGwgZXJyb3JzIHRlbXBvcmFy
aWx5LgorICAgICAgaW50NjRfdCBsb3dlcl90b2xfdXMgPSBhY2N1bXVsYXRlZF9sb3dlcl9ib3Vu
ZF90b2xlcmFuY2VfdXMgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9kdXJp
bmdfc3RhbGxfdG9sX3VzIC0gbW9ub3RvbmVfbm9pc2VfdXMgLQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyICogcnRjOjprTnVtTWljcm9zZWNzUGVyTWlsbGlzZWM7CisgICAgICBFWFBF
Q1RfR0UoZXJyLCBsb3dlcl90b2xfdXMpOworICAgICAgaW50NjRfdCB1cHBlcl90b2xfdXMgPSBh
Y2N1bXVsYXRlZF91cHBlcl9ib3VuZF90b2xlcmFuY2VfdXMgKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb25vdG9uZV9ub2lzZV91cyArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIgKiBydGM6OmtOdW1NaWNyb3NlY3NQZXJNaWxsaXNlYzsKKyAgICAgIEVYUEVDVF9MRShl
cnIsIHVwcGVyX3RvbF91cyk7CisKKyAgICAgIGxhc3RfdGltZV91cyA9IHRpbWVfdXM7CisgICAg
fQorICB9Cit9Cit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSB0ZXN0CiB9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3J0Y3BfZGVtdXhlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRjcF9kZW11eGVyLmNjCmluZGV4IGQ0NDFjMDVi
M2RiODViYzNhNmU5OWI4NGQ0OTg3MTdjNGU3ZTg2ODYuLmEwNmQyYTQ2MDRjNDAzODA3YzBhMjhh
NmRmNjgyNTgzMjE0MzhiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRjcF9kZW11eGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRjcF9kZW11eGVyLmNjCkBAIC0xMyw3
ICsxMyw2IEBACiAjaW5jbHVkZSAiYXBpL3J0cF9oZWFkZXJzLmgiCiAjaW5jbHVkZSAiY2FsbC9y
dGNwX3BhY2tldF9zaW5rX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3J0Y3BfZGVt
dXhlcl9oZWxwZXIuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWls
ZC9pbmNsdWRlKQogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvcnRjcF9kZW11eGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydGNwX2RlbXV4ZXJfdW5pdHRlc3QuY2MKaW5kZXgg
ODA4MzY0YWNjNWU4NDM0Njc0YmMxYjI5ZjQwNWNlN2Y3MmFjZTc2YS4uNmNlYjdhYjVkOWQ2OWU5
MzdmMTQ2OGEwOGQyMDUwYjE3YjgwMTA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydGNwX2RlbXV4ZXJfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydGNwX2Rl
bXV4ZXJfdW5pdHRlc3QuY2MKQEAgLTE2LDcgKzE2LDYgQEAKICNpbmNsdWRlICJhYnNsL21lbW9y
eS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKICNpbmNsdWRlICJjYWxs
L3J0Y3BfcGFja2V0X3NpbmtfaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgi
ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC9ieWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2NvbmZpZy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2NvbmZpZy5jYwppbmRl
eCAxNDQ1YzI1NTJlNDkyOTQ4ZTYyNjk5OGQ3ZTBiYzhmYWJmNzkxNGIwLi5jY2U3OGFkNjRjN2Q5
MTEzMGZmMjJlOWI0MDU0M2MzMmQ5NDYzNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9jb25maWcuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfY29uZmlnLmNjCkBA
IC0xMCw2ICsxMCw5IEBACiAKICNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcuaCIKIAorI2luY2x1
ZGUgPGNzdGRpbnQ+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBA
IC02MCw2ICs2Myw3IEBAIHN0ZDo6c3RyaW5nIFJ0cENvbmZpZzo6VG9TdHJpbmcoKSBjb25zdCB7
CiAgICAgIDw8IChydGNwX21vZGUgPT0gUnRjcE1vZGU6OmtDb21wb3VuZCA/ICJSdGNwTW9kZTo6
a0NvbXBvdW5kIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAi
UnRjcE1vZGU6OmtSZWR1Y2VkU2l6ZSIpOwogICBzcyA8PCAiLCBtYXhfcGFja2V0X3NpemU6ICIg
PDwgbWF4X3BhY2tldF9zaXplOworICBzcyA8PCAiLCBleHRtYXAtYWxsb3ctbWl4ZWQ6ICIgPDwg
KGV4dG1hcF9hbGxvd19taXhlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICBzcyA8PCAiLCBleHRl
bnNpb25zOiBbIjsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsg
KytpKSB7CiAgICAgc3MgPDwgZXh0ZW5zaW9uc1tpXS5Ub1N0cmluZygpOwpAQCAtMTA4LDE4ICsx
MTIsNCBAQCBzdGQ6OnN0cmluZyBSdHBDb25maWc6OlJ0eDo6VG9TdHJpbmcoKSBjb25zdCB7CiAg
IHNzIDw8ICd9JzsKICAgcmV0dXJuIHNzLnN0cigpOwogfQotCi1SdGNwQ29uZmlnOjpSdGNwQ29u
ZmlnKCkgPSBkZWZhdWx0OwotUnRjcENvbmZpZzo6UnRjcENvbmZpZyhjb25zdCBSdGNwQ29uZmln
JikgPSBkZWZhdWx0OwotUnRjcENvbmZpZzo6flJ0Y3BDb25maWcoKSA9IGRlZmF1bHQ7Ci0KLXN0
ZDo6c3RyaW5nIFJ0Y3BDb25maWc6OlRvU3RyaW5nKCkgY29uc3QgewotICBjaGFyIGJ1ZlsxMDI0
XTsKLSAgcnRjOjpTaW1wbGVTdHJpbmdCdWlsZGVyIHNzKGJ1Zik7Ci0gIHNzIDw8ICJ7dmlkZW9f
cmVwb3J0X2ludGVydmFsX21zOiAiIDw8IHZpZGVvX3JlcG9ydF9pbnRlcnZhbF9tczsKLSAgc3Mg
PDwgIiwgYXVkaW9fcmVwb3J0X2ludGVydmFsX21zOiAiIDw8IGF1ZGlvX3JlcG9ydF9pbnRlcnZh
bF9tczsKLSAgc3MgPDwgJ30nOwotICByZXR1cm4gc3Muc3RyKCk7Ci19Ci0KIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NhbGwvcnRwX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfY29uZmlnLmgKaW5kZXggOGY4ZDAzYTNhODI0MmE2YjE5
ZjVjNWY2NWJkMWMyYjYzODZiNmEwNS4uOTdhZTk1MTc2NWMyYmQyM2U0NTJhMWZkMTQwZTExNWEz
NTg2OWJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9ydHBfY29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfY29uZmlnLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5k
ZWYgQ0FMTF9SVFBfQ09ORklHX0hfCiAjZGVmaW5lIENBTExfUlRQX0NPTkZJR19IXwogCisjaW5j
bHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgog
I2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtNzQsNiArNzYsOSBAQCBzdHJ1Y3QgUnRwQ29uZmlnIHsK
ICAgLy8gTWF4IFJUUCBwYWNrZXQgc2l6ZSBkZWxpdmVyZWQgdG8gc2VuZCB0cmFuc3BvcnQgZnJv
bSBWaWRlb0VuZ2luZS4KICAgc2l6ZV90IG1heF9wYWNrZXRfc2l6ZSA9IGtEZWZhdWx0TWF4UGFj
a2V0U2l6ZTsKIAorICAvLyBDb3JyZXNwb25kcyB0byB0aGUgU0RQIGF0dHJpYnV0ZSBleHRtYXAt
YWxsb3ctbWl4ZWQuCisgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkID0gZmFsc2U7CisKICAgLy8g
UlRQIGhlYWRlciBleHRlbnNpb25zIHRvIHVzZSBmb3IgdGhpcyBzZW5kIHN0cmVhbS4KICAgc3Rk
Ojp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiBleHRlbnNpb25zOwogCkBAIC0xMjksMTcgKzEzNCw1IEBA
IHN0cnVjdCBSdHBDb25maWcgewogICAvLyBSVENQIENOQU1FLCBzZWUgUkZDIDM1NTAuCiAgIHN0
ZDo6c3RyaW5nIGNfbmFtZTsKIH07Ci0KLXN0cnVjdCBSdGNwQ29uZmlnIHsKLSAgUnRjcENvbmZp
ZygpOwotICBSdGNwQ29uZmlnKGNvbnN0IFJ0Y3BDb25maWcmKTsKLSAgflJ0Y3BDb25maWcoKTsK
LSAgc3RkOjpzdHJpbmcgVG9TdHJpbmcoKSBjb25zdDsKLQotICAvLyBUaW1lIGludGVydmFsIGJl
dHdlZW4gUlRDUCByZXBvcnQgZm9yIHZpZGVvCi0gIGludDY0X3QgdmlkZW9fcmVwb3J0X2ludGVy
dmFsX21zID0gMTAwMDsKLSAgLy8gVGltZSBpbnRlcnZhbCBiZXR3ZWVuIFJUQ1AgcmVwb3J0IGZv
ciBhdWRpbwotICBpbnQ2NF90IGF1ZGlvX3JlcG9ydF9pbnRlcnZhbF9tcyA9IDUwMDA7Ci19Owog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogI2VuZGlmICAvLyBDQUxMX1JUUF9DT05GSUdfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
cnRwX2RlbXV4ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jYWxsL3J0cF9kZW11eGVyX3VuaXR0ZXN0LmNjCmluZGV4IGI1ZWRlM2NkMDNh
MGNlNWY3ZGZkYTgxNWFjODkxMDAyNzFiNmQ1MzYuLjNiODIwMGU3ODE5ODg5YTUxNjNjOWNjZGQw
OGE3Y2ZhNzYxMjdmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NhbGwvcnRwX2RlbXV4ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfZGVtdXhlcl91bml0dGVz
dC5jYwpAQCAtMTcsNyArMTcsNiBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgog
I2luY2x1ZGUgImNhbGwvc3NyY19iaW5kaW5nX29ic2VydmVyLmgiCiAjaW5jbHVkZSAiY2FsbC90
ZXN0L21vY2tfcnRwX3BhY2tldF9zaW5rX2ludGVyZmFjZS5oIgotI2luY2x1ZGUgImNvbW1vbl90
eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3BheWxv
YWRfcGFyYW1zLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMuY2MKaW5kZXggZmZiZGExYTJkYmUzYTMyODY2OTE4NGU2
MmFmNjJjOTdiZGFlYjgzNi4uMmEzMmVlZjc4MzMyZTgwMzNlZGJlOGZkZGViMTFiODgwOGIzNGRi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMuY2MKQEAgLTE0NCw2ICsx
NDQsOCBAQCBSVFBWaWRlb0hlYWRlciBSdHBQYXlsb2FkUGFyYW1zOjpHZXRSdHBWaWRlb0hlYWRl
cigKICAgcnRwX3ZpZGVvX2hlYWRlci5yb3RhdGlvbiA9IGltYWdlLnJvdGF0aW9uXzsKICAgcnRw
X3ZpZGVvX2hlYWRlci5jb250ZW50X3R5cGUgPSBpbWFnZS5jb250ZW50X3R5cGVfOwogICBydHBf
dmlkZW9faGVhZGVyLnBsYXlvdXRfZGVsYXkgPSBpbWFnZS5wbGF5b3V0X2RlbGF5XzsKKyAgcnRw
X3ZpZGVvX2hlYWRlci53aWR0aCA9IGltYWdlLl9lbmNvZGVkV2lkdGg7CisgIHJ0cF92aWRlb19o
ZWFkZXIuaGVpZ2h0ID0gaW1hZ2UuX2VuY29kZWRIZWlnaHQ7CiAKICAgU2V0VmlkZW9UaW1pbmco
aW1hZ2UsICZydHBfdmlkZW9faGVhZGVyLnZpZGVvX3RpbWluZyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3BheWxvYWRf
cGFyYW1zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L3J0cF9wYXlsb2FkX3BhcmFtcy5oCmluZGV4IGY2ODI5Y2FjZTVjNjI5ZTU1YTJlYzljZDVhNDcx
Y2Q0OWE1NWRlODkuLmI5MWJmZTRiMmM1ZGIwMGUwMmYzOWMxOWI5MmE3MDU2NDZhYTBkNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
cnRwX3BheWxvYWRfcGFyYW1zLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMuaApAQCAtMTYsNyArMTYsNiBAQAog
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAi
Y2FsbC9ydHBfY29uZmlnLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQo
YnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2Vu
ZXJpY19mcmFtZV9kZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX3ZpZGVvX2hlYWRlci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3BhcmFtc191bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3Bh
eWxvYWRfcGFyYW1zX3VuaXR0ZXN0LmNjCmluZGV4IGEzY2IzNzlkMThhNjU1NTQ4NjgyMjI5MTM3
ZTNlOGZkYmY1NTFiNTAuLjlhNTE5YmEwYTdmNzMwZmM1OGI4MGU2OWJmNGExM2VmYmIxMWQ3M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvcnRwX3BheWxvYWRfcGFyYW1zX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3BheWxvYWRfcGFyYW1zX3VuaXR0ZXN0
LmNjCkBAIC0zMDksOSArMzA5LDEzIEBAIGNsYXNzIFJ0cFBheWxvYWRQYXJhbXNWcDhUb0dlbmVy
aWNUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3Qgc2hhcmVkX2ZyYW1lX2lkLAogICAgICAgICAgICAgICAgICAgICAgICBGcmFtZVR5
cGUgZnJhbWVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXJTeW5jIGxheWVyX3N5
bmMsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c2V0PGludDY0X3Q+JiBleHBl
Y3RlZF9kZXBzKSB7CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c2V0PGludDY0
X3Q+JiBleHBlY3RlZF9kZXBzLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCB3aWR0
aCA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGhlaWdodCA9IDApIHsKICAg
ICBFbmNvZGVkSW1hZ2UgZW5jb2RlZF9pbWFnZTsKICAgICBlbmNvZGVkX2ltYWdlLl9mcmFtZVR5
cGUgPSBmcmFtZV90eXBlOworICAgIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRXaWR0aCA9IHdpZHRo
OworICAgIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRIZWlnaHQgPSBoZWlnaHQ7CiAKICAgICBDb2Rl
Y1NwZWNpZmljSW5mbyBjb2RlY19pbmZve307CiAgICAgY29kZWNfaW5mby5jb2RlY1R5cGUgPSBr
VmlkZW9Db2RlY1ZQODsKQEAgLTMzMCw2ICszMzQsOSBAQCBjbGFzcyBSdHBQYXlsb2FkUGFyYW1z
VnA4VG9HZW5lcmljVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIHN0ZDo6c2V0
PGludDY0X3Q+IGFjdHVhbF9kZXBzKGhlYWRlci5nZW5lcmljLT5kZXBlbmRlbmNpZXMuYmVnaW4o
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuZ2VuZXJpYy0+ZGVw
ZW5kZW5jaWVzLmVuZCgpKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZGVwcywgYWN0dWFsX2Rl
cHMpOworCisgICAgRVhQRUNUX0VRKGhlYWRlci53aWR0aCwgd2lkdGgpOworICAgIEVYUEVDVF9F
UShoZWFkZXIuaGVpZ2h0LCBoZWlnaHQpOwogICB9CiAKICBwcm90ZWN0ZWQ6CkBAIC0zMzksMTMg
KzM0NiwxMyBAQCBjbGFzcyBSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewogfTsKIAogVEVTVF9GKFJ0cFBheWxvYWRQYXJhbXNWcDhUb0dl
bmVyaWNUZXN0LCBLZXlmcmFtZSkgewotICBDb252ZXJ0QW5kQ2hlY2soMCwgMCwga1ZpZGVvRnJh
bWVLZXksIGtOb1N5bmMsIHt9KTsKKyAgQ29udmVydEFuZENoZWNrKDAsIDAsIGtWaWRlb0ZyYW1l
S2V5LCBrTm9TeW5jLCB7fSwgNDgwLCAzNjApOwogICBDb252ZXJ0QW5kQ2hlY2soMCwgMSwga1Zp
ZGVvRnJhbWVEZWx0YSwga05vU3luYywgezB9KTsKLSAgQ29udmVydEFuZENoZWNrKDAsIDIsIGtW
aWRlb0ZyYW1lS2V5LCBrTm9TeW5jLCB7fSk7CisgIENvbnZlcnRBbmRDaGVjaygwLCAyLCBrVmlk
ZW9GcmFtZUtleSwga05vU3luYywge30sIDQ4MCwgMzYwKTsKIH0KIAogVEVTVF9GKFJ0cFBheWxv
YWRQYXJhbXNWcDhUb0dlbmVyaWNUZXN0LCBUb29IaWdoVGVtcG9yYWxJbmRleCkgewotICBDb252
ZXJ0QW5kQ2hlY2soMCwgMCwga1ZpZGVvRnJhbWVLZXksIGtOb1N5bmMsIHt9KTsKKyAgQ29udmVy
dEFuZENoZWNrKDAsIDAsIGtWaWRlb0ZyYW1lS2V5LCBrTm9TeW5jLCB7fSwgNDgwLCAzNjApOwog
CiAgIEVuY29kZWRJbWFnZSBlbmNvZGVkX2ltYWdlOwogICBlbmNvZGVkX2ltYWdlLl9mcmFtZVR5
cGUgPSBrVmlkZW9GcmFtZURlbHRhOwpAQCAtMzYyLDcgKzM2OSw3IEBAIFRFU1RfRihSdHBQYXls
b2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCwgVG9vSGlnaFRlbXBvcmFsSW5kZXgpIHsKIAogVEVT
VF9GKFJ0cFBheWxvYWRQYXJhbXNWcDhUb0dlbmVyaWNUZXN0LCBMYXllclN5bmMpIHsKICAgLy8g
MDIxMjAyMTIgcGF0dGVybgotICBDb252ZXJ0QW5kQ2hlY2soMCwgMCwga1ZpZGVvRnJhbWVLZXks
IGtOb1N5bmMsIHt9KTsKKyAgQ29udmVydEFuZENoZWNrKDAsIDAsIGtWaWRlb0ZyYW1lS2V5LCBr
Tm9TeW5jLCB7fSwgNDgwLCAzNjApOwogICBDb252ZXJ0QW5kQ2hlY2soMiwgMSwga1ZpZGVvRnJh
bWVEZWx0YSwga05vU3luYywgezB9KTsKICAgQ29udmVydEFuZENoZWNrKDEsIDIsIGtWaWRlb0Zy
YW1lRGVsdGEsIGtOb1N5bmMsIHswfSk7CiAgIENvbnZlcnRBbmRDaGVjaygyLCAzLCBrVmlkZW9G
cmFtZURlbHRhLCBrTm9TeW5jLCB7MCwgMSwgMn0pOwpAQCAtMzc1LDcgKzM4Miw3IEBAIFRFU1Rf
RihSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCwgTGF5ZXJTeW5jKSB7CiAKIFRFU1Rf
RihSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCwgRnJhbWVJZEdhcHMpIHsKICAgLy8g
MDEwMSBwYXR0ZXJuCi0gIENvbnZlcnRBbmRDaGVjaygwLCAwLCBrVmlkZW9GcmFtZUtleSwga05v
U3luYywge30pOworICBDb252ZXJ0QW5kQ2hlY2soMCwgMCwga1ZpZGVvRnJhbWVLZXksIGtOb1N5
bmMsIHt9LCA0ODAsIDM2MCk7CiAgIENvbnZlcnRBbmRDaGVjaygxLCAxLCBrVmlkZW9GcmFtZURl
bHRhLCBrTm9TeW5jLCB7MH0pOwogCiAgIENvbnZlcnRBbmRDaGVjaygwLCA1LCBrVmlkZW9GcmFt
ZURlbHRhLCBrTm9TeW5jLCB7MH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3Ry
YW5zcG9ydF9jb250cm9sbGVyX3NlbmQuY2MKaW5kZXggNTRhZWYyMWZkOWVhZmM5MTMzYzM2M2U1
NTZlYmYyMzJjNmVkNGYzNy4uNTI2NWM5NWFmYjgxMDQxMjhkMzQwZjcyNjlkOTUxOWQ2ZDc3NzI3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxl
cl9zZW5kLmNjCkBAIC0yNiwxMSArMjYsNiBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhPdmVy
aGVhZEJ5dGVzID0gNTAwOwogY29uc3QgY2hhciBrVGFza1F1ZXVlRXhwZXJpbWVudFtdID0gIldl
YlJUQy1UYXNrUXVldWVDb25nZXN0aW9uQ29udHJvbCI7CiB1c2luZyBUYXNrUXVldWVDb250cm9s
bGVyID0gd2VicnRjOjp3ZWJydGNfY2M6OlNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI7CiAK
LWJvb2wgVGFza1F1ZXVlRXhwZXJpbWVudEVuYWJsZWQoKSB7Ci0gIHN0ZDo6c3RyaW5nIHRyaWFs
ID0gd2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtUYXNrUXVldWVFeHBlcmltZW50
KTsKLSAgcmV0dXJuIHRyaWFsLmZpbmQoIkVuYWJsZSIpID09IDA7Ci19Ci0KIHN0ZDo6dW5pcXVl
X3B0cjxTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVySW50ZXJmYWNlPiBDcmVhdGVDb250cm9s
bGVyKAogICAgIENsb2NrKiBjbG9jaywKICAgICBydGM6OlRhc2tRdWV1ZSogdGFza19xdWV1ZSwK
QEAgLTcwLDkgKzY1LDkgQEAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQ6OlJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJTZW5kKAogICAgICAgcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXyhjbG9j
aywga1JldHJhbnNtaXRXaW5kb3dTaXplTXMpLAogICAgICAgdGFza19xdWV1ZV8oInJ0cF9zZW5k
X2NvbnRyb2xsZXIiKSB7CiAgIC8vIENyZWF0ZWQgYWZ0ZXIgdGFza19xdWV1ZSB0byBiZSBhYmxl
IHRvIHBvc3QgdG8gdGhlIHRhc2sgcXVldWUgaW50ZXJuYWxseS4KLSAgc2VuZF9zaWRlX2NjXyA9
Ci0gICAgICBDcmVhdGVDb250cm9sbGVyKGNsb2NrLCAmdGFza19xdWV1ZV8sIGV2ZW50X2xvZywg
JnBhY2VyXywgYml0cmF0ZV9jb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgIFRhc2tRdWV1
ZUV4cGVyaW1lbnRFbmFibGVkKCksIGNvbnRyb2xsZXJfZmFjdG9yeSk7CisgIHNlbmRfc2lkZV9j
Y18gPSBDcmVhdGVDb250cm9sbGVyKAorICAgICAgY2xvY2ssICZ0YXNrX3F1ZXVlXywgZXZlbnRf
bG9nLCAmcGFjZXJfLCBiaXRyYXRlX2NvbmZpZywKKyAgICAgICFmaWVsZF90cmlhbDo6SXNEaXNh
YmxlZChrVGFza1F1ZXVlRXhwZXJpbWVudCksIGNvbnRyb2xsZXJfZmFjdG9yeSk7CiAKICAgcHJv
Y2Vzc190aHJlYWRfLT5SZWdpc3Rlck1vZHVsZSgmcGFjZXJfLCBSVENfRlJPTV9IRVJFKTsKICAg
cHJvY2Vzc190aHJlYWRfLT5SZWdpc3Rlck1vZHVsZShzZW5kX3NpZGVfY2NfLmdldCgpLCBSVENf
RlJPTV9IRVJFKTsKQEAgLTkwLDE4ICs4NSwyMCBAQCBSdHBWaWRlb1NlbmRlckludGVyZmFjZSog
UnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQ6OkNyZWF0ZVJ0cFZpZGVvU2VuZGVyKAogICAgIHN0
ZDo6bWFwPHVpbnQzMl90LCBSdHBTdGF0ZT4gc3VzcGVuZGVkX3NzcmNzLAogICAgIGNvbnN0IHN0
ZDo6bWFwPHVpbnQzMl90LCBSdHBQYXlsb2FkU3RhdGU+JiBzdGF0ZXMsCiAgICAgY29uc3QgUnRw
Q29uZmlnJiBydHBfY29uZmlnLAotICAgIGNvbnN0IFJ0Y3BDb25maWcmIHJ0Y3BfY29uZmlnLAor
ICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcywKICAgICBUcmFuc3BvcnQqIHNlbmRfdHJh
bnNwb3J0LAogICAgIGNvbnN0IFJ0cFNlbmRlck9ic2VydmVycyYgb2JzZXJ2ZXJzLAogICAgIFJ0
Y0V2ZW50TG9nKiBldmVudF9sb2csCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+
IGZlY19jb250cm9sbGVyKSB7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+IGZl
Y19jb250cm9sbGVyLAorICAgIGNvbnN0IFJ0cFNlbmRlckZyYW1lRW5jcnlwdGlvbkNvbmZpZyYg
ZnJhbWVfZW5jcnlwdGlvbl9jb25maWcpIHsKICAgdmlkZW9fcnRwX3NlbmRlcnNfLnB1c2hfYmFj
ayhhYnNsOjptYWtlX3VuaXF1ZTxSdHBWaWRlb1NlbmRlcj4oCi0gICAgICBzc3Jjcywgc3VzcGVu
ZGVkX3NzcmNzLCBzdGF0ZXMsIHJ0cF9jb25maWcsIHJ0Y3BfY29uZmlnLCBzZW5kX3RyYW5zcG9y
dCwKLSAgICAgIG9ic2VydmVycywKKyAgICAgIHNzcmNzLCBzdXNwZW5kZWRfc3NyY3MsIHN0YXRl
cywgcnRwX2NvbmZpZywgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMsCisgICAgICBzZW5kX3RyYW5z
cG9ydCwgb2JzZXJ2ZXJzLAogICAgICAgLy8gVE9ETyhob2xtZXIpOiBSZW1vdmUgdGhpcyBjaXJj
dWxhciBkZXBlbmRlbmN5IGJ5IGluamVjdGluZwogICAgICAgLy8gdGhlIHBhcnRzIG9mIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlIHRoYXQgYXJlIHJlYWxseSB1c2VkLgotICAg
ICAgdGhpcywgZXZlbnRfbG9nLCAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywKLSAgICAg
IHN0ZDo6bW92ZShmZWNfY29udHJvbGxlcikpKTsKKyAgICAgIHRoaXMsIGV2ZW50X2xvZywgJnJl
dHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIHN0ZDo6bW92ZShmZWNfY29udHJvbGxlciksCisg
ICAgICBmcmFtZV9lbmNyeXB0aW9uX2NvbmZpZy5mcmFtZV9lbmNyeXB0b3IsCisgICAgICBmcmFt
ZV9lbmNyeXB0aW9uX2NvbmZpZy5jcnlwdG9fb3B0aW9ucykpOwogICByZXR1cm4gdmlkZW9fcnRw
X3NlbmRlcnNfLmJhY2soKS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJf
c2VuZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9y
dHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5oCmluZGV4IDZhYWYyOWQ2YmMzN2I4MzMyM2M3
OGFhM2U0NTMwMTI2MWYwMjM0MTYuLmYxYzQ2Y2MwNzg1NWRkZWY3ZTQxMmM2NjgwZDE5YzViNjhj
MjlkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF90cmFuc3BvcnRfY29udHJv
bGxlcl9zZW5kLmgKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJjYWxsL3J0cF9iaXRyYXRl
X2NvbmZpZ3VyYXRvci5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVy
X3NlbmRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfdmlkZW9fc2VuZGVyLmgiCi0j
aW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNs
dWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9pbmNsdWRlL3NlbmRfc2lkZV9jb25n
ZXN0aW9uX2NvbnRyb2xsZXJfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9wYWNpbmcv
cGFja2V0X3JvdXRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nl
c3NfdGhyZWFkLmgiCkBAIC0yOSw3ICsyOCw5IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19x
dWV1ZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKKwogY2xhc3MgQ2xvY2s7CitjbGFzcyBGcmFt
ZUVuY3J5cHRvckludGVyZmFjZTsKIGNsYXNzIFJ0Y0V2ZW50TG9nOwogCiAvLyBUT0RPKG5pc3Nl
KTogV2hlbiB3ZSBnZXQgdGhlIHVuZGVybHlpbmcgdHJhbnNwb3J0cyBoZXJlLCB3ZSBzaG91bGQK
QEAgLTUyLDExICs1MywxMiBAQCBjbGFzcyBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZCBmaW5h
bAogICAgICAgY29uc3Qgc3RkOjptYXA8dWludDMyX3QsIFJ0cFBheWxvYWRTdGF0ZT4mCiAgICAg
ICAgICAgc3RhdGVzLCAgLy8gbW92ZSBzdGF0ZXMgaW50byBSdHBUcmFuc3BvcnRDb250cm9sbGVy
U2VuZAogICAgICAgY29uc3QgUnRwQ29uZmlnJiBydHBfY29uZmlnLAotICAgICAgY29uc3QgUnRj
cENvbmZpZyYgcnRjcF9jb25maWcsCisgICAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMs
CiAgICAgICBUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LAogICAgICAgY29uc3QgUnRwU2VuZGVy
T2JzZXJ2ZXJzJiBvYnNlcnZlcnMsCiAgICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAotICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+IGZlY19jb250cm9sbGVyKSBvdmVycmlk
ZTsKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNfY29udHJvbGxlciwK
KyAgICAgIGNvbnN0IFJ0cFNlbmRlckZyYW1lRW5jcnlwdGlvbkNvbmZpZyYgZnJhbWVfZW5jcnlw
dGlvbl9jb25maWcpIG92ZXJyaWRlOwogICB2b2lkIERlc3Ryb3lSdHBWaWRlb1NlbmRlcigKICAg
ICAgIFJ0cFZpZGVvU2VuZGVySW50ZXJmYWNlKiBydHBfdmlkZW9fc2VuZGVyKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250
cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgKaW5kZXggNWM1MWM1NGZlMTNjZjEwMmZjYzVhZmRkMDJj
MWE1ZmRmZGI2OTdiNy4uOTg2ODU4NWNkZjgxMTM5MjhhMWFkNjNkZDY1ZWVjYzk3MWNjMmY3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2Fs
bC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF90cmFuc3BvcnRfY29u
dHJvbGxlcl9zZW5kX2ludGVyZmFjZS5oCkBAIC0yMCwxMCArMjAsMTIgQEAKIAogI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYml0cmF0ZV9jb25zdHJhaW50
cy5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgogI2luY2x1ZGUgImFw
aS9mZWNfY29udHJvbGxlci5oIgogI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvYml0cmF0ZV9zZXR0
aW5ncy5oIgogI2luY2x1ZGUgImNhbGwvcnRwX2NvbmZpZy5oIgogI2luY2x1ZGUgImxvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAKIG5hbWVzcGFjZSBydGMgewpAQCAtMzUsNiAr
MzcsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgQ2FsbFN0YXRzOwogY2xhc3MgQ2Fs
bFN0YXRzT2JzZXJ2ZXI7CitjbGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsKIGNsYXNzIFRh
cmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyOwogY2xhc3MgVHJhbnNwb3J0OwogY2xhc3MgTW9kdWxl
OwpAQCAtNjIsNiArNjUsMTEgQEAgc3RydWN0IFJ0cFNlbmRlck9ic2VydmVycyB7CiAgIFNlbmRQ
YWNrZXRPYnNlcnZlciogc2VuZF9wYWNrZXRfb2JzZXJ2ZXI7CiB9OwogCitzdHJ1Y3QgUnRwU2Vu
ZGVyRnJhbWVFbmNyeXB0aW9uQ29uZmlnIHsKKyAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZy
YW1lX2VuY3J5cHRvciA9IG51bGxwdHI7CisgIENyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnM7
Cit9OworCiAvLyBBbiBSdHBUcmFuc3BvcnRDb250cm9sbGVyIHNob3VsZCBvd24gZXZlcnl0aGlu
ZyByZWxhdGVkIHRvIHRoZSBSVFAKIC8vIHRyYW5zcG9ydCB0by9mcm9tIGEgcmVtb3RlIGVuZHBv
aW50LiBXZSBzaG91bGQgaGF2ZSBzZXBhcmF0ZQogLy8gaW50ZXJmYWNlcyBmb3Igc2VuZCBhbmQg
cmVjZWl2ZSBzaWRlLCBldmVuIGlmIHRoZXkgYXJlIGltcGxlbWVudGVkCkBAIC05NywxMSArMTA1
LDEyIEBAIGNsYXNzIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlIHsKICAgICAg
IC8vIFRPRE8oaG9sbWVyKTogTW92ZSBzdGF0ZXMgaW50byBSdHBUcmFuc3BvcnRDb250cm9sbGVy
U2VuZC4KICAgICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBQYXlsb2FkU3RhdGU+JiBz
dGF0ZXMsCiAgICAgICBjb25zdCBSdHBDb25maWcmIHJ0cF9jb25maWcsCi0gICAgICBjb25zdCBS
dGNwQ29uZmlnJiBydGNwX2NvbmZpZywKKyAgICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9t
cywKICAgICAgIFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQsCiAgICAgICBjb25zdCBSdHBTZW5k
ZXJPYnNlcnZlcnMmIG9ic2VydmVycywKICAgICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCi0g
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlcj4gZmVjX2NvbnRyb2xsZXIpID0gMDsK
KyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNfY29udHJvbGxlciwKKyAg
ICAgIGNvbnN0IFJ0cFNlbmRlckZyYW1lRW5jcnlwdGlvbkNvbmZpZyYgZnJhbWVfZW5jcnlwdGlv
bl9jb25maWcpID0gMDsKICAgdmlydHVhbCB2b2lkIERlc3Ryb3lSdHBWaWRlb1NlbmRlcigKICAg
ICAgIFJ0cFZpZGVvU2VuZGVySW50ZXJmYWNlKiBydHBfdmlkZW9fc2VuZGVyKSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
cnRwX3ZpZGVvX3NlbmRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvcnRwX3ZpZGVvX3NlbmRlci5jYwppbmRleCAxMGQ3ZTdkYWVkYTZkMzIxNzU2
Y2FmOTkyODQ1ZWRhOGQ3Y2NhNTIyLi5iYTFiOTkyZTk1MDI1YWNhNThiYzZjYzJjZmExMTkwY2Vi
ODM4MWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3J0cF92aWRlb19zZW5kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlkZW9fc2VuZGVyLmNjCkBAIC00MCw4ICs0
MCw4IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qga1BhdGhNVFUgPSAxNTAwOwogCiBzdGQ6OnZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8UnRwUnRjcD4+IENyZWF0ZVJ0cFJ0Y3BNb2R1bGVzKAogICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiYgc3NyY3MsCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8
dWludDMyX3Q+JiBwcm90ZWN0ZWRfbWVkaWFfc3NyY3MsCi0gICAgY29uc3QgUnRjcENvbmZpZyYg
cnRjcF9jb25maWcsCisgICAgY29uc3QgUnRwQ29uZmlnJiBydHBfY29uZmlnLAorICAgIGludCBy
dGNwX3JlcG9ydF9pbnRlcnZhbF9tcywKICAgICBUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LAog
ICAgIFJ0Y3BJbnRyYUZyYW1lT2JzZXJ2ZXIqIGludHJhX2ZyYW1lX2NhbGxiYWNrLAogICAgIFJ0
Y3BCYW5kd2lkdGhPYnNlcnZlciogYmFuZHdpZHRoX2NhbGxiYWNrLApAQCAtNTYsOCArNTYsMTEg
QEAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFJ0Y3A+PiBDcmVhdGVSdHBSdGNwTW9k
dWxlcygKICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgIFJhdGVMaW1pdGVyKiByZXRy
YW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXIsCiAgICAgT3ZlcmhlYWRPYnNlcnZlciogb3ZlcmhlYWRf
b2JzZXJ2ZXIsCi0gICAgUnRwS2VlcEFsaXZlQ29uZmlnIGtlZXBhbGl2ZV9jb25maWcpIHsKKyAg
ICBSdHBLZWVwQWxpdmVDb25maWcga2VlcGFsaXZlX2NvbmZpZywKKyAgICBGcmFtZUVuY3J5cHRv
ckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAgIGNvbnN0IENyeXB0b09wdGlvbnMmIGNy
eXB0b19vcHRpb25zKSB7CiAgIFJUQ19EQ0hFQ0tfR1Qoc3NyY3Muc2l6ZSgpLCAwKTsKKwogICBS
dHBSdGNwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgIGNvbmZpZ3VyYXRpb24uYXVk
aW8gPSBmYWxzZTsKICAgY29uZmlndXJhdGlvbi5yZWNlaXZlcl9vbmx5ID0gZmFsc2U7CkBAIC03
OSwxMiArODIsMTUgQEAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFJ0Y3A+PiBDcmVh
dGVSdHBSdGNwTW9kdWxlcygKICAgY29uZmlndXJhdGlvbi5yZXRyYW5zbWlzc2lvbl9yYXRlX2xp
bWl0ZXIgPSByZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXI7CiAgIGNvbmZpZ3VyYXRpb24ub3Zl
cmhlYWRfb2JzZXJ2ZXIgPSBvdmVyaGVhZF9vYnNlcnZlcjsKICAgY29uZmlndXJhdGlvbi5rZWVw
YWxpdmVfY29uZmlnID0ga2VlcGFsaXZlX2NvbmZpZzsKLSAgY29uZmlndXJhdGlvbi5ydGNwX2lu
dGVydmFsX2NvbmZpZy52aWRlb19pbnRlcnZhbF9tcyA9Ci0gICAgICBydGNwX2NvbmZpZy52aWRl
b19yZXBvcnRfaW50ZXJ2YWxfbXM7Ci0gIGNvbmZpZ3VyYXRpb24ucnRjcF9pbnRlcnZhbF9jb25m
aWcuYXVkaW9faW50ZXJ2YWxfbXMgPQotICAgICAgcnRjcF9jb25maWcuYXVkaW9fcmVwb3J0X2lu
dGVydmFsX21zOworICBjb25maWd1cmF0aW9uLmZyYW1lX2VuY3J5cHRvciA9IGZyYW1lX2VuY3J5
cHRvcjsKKyAgY29uZmlndXJhdGlvbi5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24gPQorICAgICAg
Y3J5cHRvX29wdGlvbnMuc2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbjsKKyAgY29uZmln
dXJhdGlvbi5leHRtYXBfYWxsb3dfbWl4ZWQgPSBydHBfY29uZmlnLmV4dG1hcF9hbGxvd19taXhl
ZDsKKyAgY29uZmlndXJhdGlvbi5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IHJ0Y3BfcmVwb3J0
X2ludGVydmFsX21zOworCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBSdGNwPj4g
bW9kdWxlczsKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDMyX3Q+JiBmbGV4ZmVjX3Byb3RlY3Rl
ZF9zc3JjcyA9IHByb3RlY3RlZF9tZWRpYV9zc3JjczsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8dWlu
dDMyX3Q+JiBmbGV4ZmVjX3Byb3RlY3RlZF9zc3JjcyA9CisgICAgICBydHBfY29uZmlnLmZsZXhm
ZWMucHJvdGVjdGVkX21lZGlhX3NzcmNzOwogICBmb3IgKHVpbnQzMl90IHNzcmMgOiBzc3Jjcykg
ewogICAgIGJvb2wgZW5hYmxlX2ZsZXhmZWMgPSBmbGV4ZmVjX3NlbmRlciAhPSBudWxscHRyICYm
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZmluZChmbGV4ZmVjX3Byb3RlY3RlZF9z
c3Jjcy5iZWdpbigpLApAQCAtMTc3LDEzICsxODMsMTUgQEAgUnRwVmlkZW9TZW5kZXI6OlJ0cFZp
ZGVvU2VuZGVyKAogICAgIHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBTdGF0ZT4gc3VzcGVuZGVkX3Nz
cmNzLAogICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBQYXlsb2FkU3RhdGU+JiBzdGF0
ZXMsCiAgICAgY29uc3QgUnRwQ29uZmlnJiBydHBfY29uZmlnLAotICAgIGNvbnN0IFJ0Y3BDb25m
aWcmIHJ0Y3BfY29uZmlnLAorICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcywKICAgICBU
cmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LAogICAgIGNvbnN0IFJ0cFNlbmRlck9ic2VydmVycyYg
b2JzZXJ2ZXJzLAogICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFu
c3BvcnQsCiAgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKICAgICBSYXRlTGltaXRlciogcmV0
cmFuc21pc3Npb25fbGltaXRlciwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlcj4g
ZmVjX2NvbnRyb2xsZXIpCisgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+IGZlY19j
b250cm9sbGVyLAorICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3Is
CisgICAgY29uc3QgQ3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpCiAgICAgOiBzZW5kX3Np
ZGVfYndlX3dpdGhfb3ZlcmhlYWRfKAogICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6Oklz
RW5hYmxlZCgiV2ViUlRDLVNlbmRTaWRlQndlLVdpdGhPdmVyaGVhZCIpKSwKICAgICAgIGFjdGl2
ZV8oZmFsc2UpLApAQCAtMTkxLDI1ICsxOTksMjYgQEAgUnRwVmlkZW9TZW5kZXI6OlJ0cFZpZGVv
U2VuZGVyKAogICAgICAgc3VzcGVuZGVkX3NzcmNzXyhzdGQ6Om1vdmUoc3VzcGVuZGVkX3NzcmNz
KSksCiAgICAgICBmbGV4ZmVjX3NlbmRlcl8oTWF5YmVDcmVhdGVGbGV4ZmVjU2VuZGVyKHJ0cF9j
b25maWcsIHN1c3BlbmRlZF9zc3Jjc18pKSwKICAgICAgIGZlY19jb250cm9sbGVyXyhzdGQ6Om1v
dmUoZmVjX2NvbnRyb2xsZXIpKSwKLSAgICAgIHJ0cF9tb2R1bGVzXygKLSAgICAgICAgICBDcmVh
dGVSdHBSdGNwTW9kdWxlcyhzc3JjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dHBfY29uZmlnLmZsZXhmZWMucHJvdGVjdGVkX21lZGlhX3NzcmNzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0Y3BfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbmRfdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2Vy
dmVycy5pbnRyYV9mcmFtZV9jYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cmFuc3BvcnQtPkdldEJhbmR3aWR0aE9ic2VydmVyKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9i
c2VydmVycy5ydGNwX3J0dF9zdGF0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bGV4ZmVjX3NlbmRlcl8uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Jz
ZXJ2ZXJzLmJpdHJhdGVfb2JzZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2JzZXJ2ZXJzLmZyYW1lX2NvdW50X29ic2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9ic2VydmVycy5ydGNwX3R5cGVfb2JzZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2JzZXJ2ZXJzLnNlbmRfZGVsYXlfb2JzZXJ2ZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJzLnNlbmRfcGFja2V0X29ic2VydmVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2xvZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXRyYW5zbWlzc2lvbl9saW1pdGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0
LT5rZWVwYWxpdmVfY29uZmlnKCkpKSwKKyAgICAgIHJ0cF9tb2R1bGVzXyhDcmVhdGVSdHBSdGNw
TW9kdWxlcyhzc3JjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dHBfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Y3Bf
cmVwb3J0X2ludGVydmFsX21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbmRfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9ic2VydmVycy5pbnRyYV9mcmFtZV9jYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQtPkdldEJhbmR3aWR0aE9ic2VydmVyKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5ydGNwX3J0dF9zdGF0
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4ZmVjX3NlbmRl
cl8uZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2
ZXJzLmJpdHJhdGVfb2JzZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb2JzZXJ2ZXJzLmZyYW1lX2NvdW50X29ic2VydmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5ydGNwX3R5cGVfb2JzZXJ2ZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJzLnNlbmRfZGVsYXlf
b2JzZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2
ZXJzLnNlbmRfcGFja2V0X29ic2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV2ZW50X2xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXRyYW5zbWlzc2lvbl9saW1pdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNwb3J0LT5rZWVwYWxpdmVfY29uZmlnKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWVfZW5jcnlwdG9yLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyeXB0b19vcHRpb25zKSksCiAgICAgICBydHBfY29uZmlnXyhy
dHBfY29uZmlnKSwKICAgICAgIHRyYW5zcG9ydF8odHJhbnNwb3J0KSwKICAgICAgIHRyYW5zcG9y
dF9vdmVyaGVhZF9ieXRlc19wZXJfcGFja2V0XygwKSwKQEAgLTI0Niw5ICsyNTUsNiBAQCBSdHBW
aWRlb1NlbmRlcjo6UnRwVmlkZW9TZW5kZXIoCiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcnRw
X2NvbmZpZ18uZXh0ZW5zaW9ucy5zaXplKCk7ICsraSkgewogICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBleHRlbnNpb24gPSBydHBfY29uZmlnXy5leHRlbnNpb25zW2ldLnVyaTsKICAgICBpbnQgaWQg
PSBydHBfY29uZmlnXy5leHRlbnNpb25zW2ldLmlkOwotICAgIC8vIE9uZS1ieXRlLWV4dGVuc2lv
biBsb2NhbCBpZGVudGlmaWVycyBhcmUgaW4gdGhlIHJhbmdlIDEtMTQgaW5jbHVzaXZlLgotICAg
IFJUQ19EQ0hFQ0tfR0UoaWQsIDEpOwotICAgIFJUQ19EQ0hFQ0tfTEUoaWQsIDE0KTsKICAgICBS
VENfRENIRUNLKFJ0cEV4dGVuc2lvbjo6SXNTdXBwb3J0ZWRGb3JWaWRlbyhleHRlbnNpb24pKTsK
ICAgICBmb3IgKGF1dG8mIHJ0cF9ydGNwIDogcnRwX21vZHVsZXNfKSB7CiAgICAgICBSVENfQ0hF
Q0socnRwX3J0Y3AtPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKGV4dGVuc2lvbiwgaWQpKTsK
QEAgLTU5MiwxMiArNTk4LDE0IEBAIHZvaWQgUnRwVmlkZW9TZW5kZXI6Ok9uQml0cmF0ZVVwZGF0
ZWQodWludDMyX3QgYml0cmF0ZV9icHMsCiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfKTsK
ICAgdWludDMyX3QgcGF5bG9hZF9iaXRyYXRlX2JwcyA9IGJpdHJhdGVfYnBzOwogICBpZiAoc2Vu
ZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXykgewotICAgIHBheWxvYWRfYml0cmF0ZV9icHMgLT0g
Q2FsY3VsYXRlT3ZlcmhlYWRSYXRlQnBzKAorICAgIHVpbnQzMl90IG92ZXJoZWFkX2JwcyA9IENh
bGN1bGF0ZU92ZXJoZWFkUmF0ZUJwcygKICAgICAgICAgQ2FsY3VsYXRlUGFja2V0UmF0ZSgKICAg
ICAgICAgICAgIGJpdHJhdGVfYnBzLAogICAgICAgICAgICAgcnRwX2NvbmZpZ18ubWF4X3BhY2tl
dF9zaXplICsgdHJhbnNwb3J0X292ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXRfKSwKICAgICAgICAg
b3ZlcmhlYWRfYnl0ZXNfcGVyX3BhY2tldF8gKyB0cmFuc3BvcnRfb3ZlcmhlYWRfYnl0ZXNfcGVy
X3BhY2tldF8sCiAgICAgICAgIGJpdHJhdGVfYnBzKTsKKyAgICBSVENfRENIRUNLX0xFKG92ZXJo
ZWFkX2JwcywgYml0cmF0ZV9icHMpOworICAgIHBheWxvYWRfYml0cmF0ZV9icHMgPSBiaXRyYXRl
X2JwcyAtIG92ZXJoZWFkX2JwczsKICAgfQogCiAgIC8vIEdldCB0aGUgZW5jb2RlciB0YXJnZXQg
cmF0ZS4gSXQgaXMgdGhlIGVzdGltYXRlZCBuZXR3b3JrIHJhdGUgLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlkZW9fc2Vu
ZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0
cF92aWRlb19zZW5kZXIuaAppbmRleCBkYjMyOWJlMDBiMDQ0NzBmYjM5MTdmNDIwZGY0ODVjM2Q1
YjhiMjkwLi5hZGFjNDZiY2Q4MTMwODQ2NTRiMzZjZjc0MjExN2NmNTJmMWE3Y2ZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF92
aWRlb19zZW5kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3J0cF92aWRlb19zZW5kZXIuaApAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUg
ImNhbGwvcnRwX3BheWxvYWRfcGFyYW1zLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfdHJhbnNwb3J0
X2NvbnRyb2xsZXJfc2VuZF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJjYWxsL3J0cF92aWRlb19z
ZW5kZXJfaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQo
YnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50
X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3NlbmRl
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIu
aCIKQEAgLTM2LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNzIEZyYW1l
RW5jcnlwdG9ySW50ZXJmYWNlOwogY2xhc3MgUlRQRnJhZ21lbnRhdGlvbkhlYWRlcjsKIGNsYXNz
IFJ0cFJ0Y3A7CiBjbGFzcyBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZTsKQEAg
LTUzLDEzICs1MywxNSBAQCBjbGFzcyBSdHBWaWRlb1NlbmRlciA6IHB1YmxpYyBSdHBWaWRlb1Nl
bmRlckludGVyZmFjZSwKICAgICAgIHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBTdGF0ZT4gc3VzcGVu
ZGVkX3NzcmNzLAogICAgICAgY29uc3Qgc3RkOjptYXA8dWludDMyX3QsIFJ0cFBheWxvYWRTdGF0
ZT4mIHN0YXRlcywKICAgICAgIGNvbnN0IFJ0cENvbmZpZyYgcnRwX2NvbmZpZywKLSAgICAgIGNv
bnN0IFJ0Y3BDb25maWcmIHJ0Y3BfY29uZmlnLAorICAgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVy
dmFsX21zLAogICAgICAgVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwKICAgICAgIGNvbnN0IFJ0
cFNlbmRlck9ic2VydmVycyYgb2JzZXJ2ZXJzLAogICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxl
clNlbmRJbnRlcmZhY2UqIHRyYW5zcG9ydCwKICAgICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2cs
CiAgICAgICBSYXRlTGltaXRlciogcmV0cmFuc21pc3Npb25fbGltaXRlciwgIC8vIG1vdmUgaW5z
aWRlIFJ0cFRyYW5zcG9ydAotICAgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+IGZl
Y19jb250cm9sbGVyKTsKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNf
Y29udHJvbGxlciwKKyAgICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0
b3IsCisgICAgICBjb25zdCBDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucyk7ICAvLyBtb3Zl
IGluc2lkZSBSdHBUcmFuc3BvcnQKICAgflJ0cFZpZGVvU2VuZGVyKCkgb3ZlcnJpZGU7CiAKICAg
Ly8gUmVnaXN0ZXJQcm9jZXNzVGhyZWFkIHJlZ2lzdGVyIHxtb2R1bGVfcHJvY2Vzc190aHJlYWR8
IHdpdGggdGhvc2Ugb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlkZW9fc2VuZGVyX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlkZW9fc2Vu
ZGVyX3VuaXR0ZXN0LmNjCmluZGV4IGU5MWJmYzRhZWIxNGYyNjhlMzA5ZWFmYzA0MDUyNjlkMjkz
Y2MyOTMuLjhhYjg5ZDYxMDRjNDY1YWJmZmM5ODY3YzRiOGQzNGNjY2ZhYWJjOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3Zp
ZGVvX3NlbmRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3J0cF92aWRlb19zZW5kZXJfdW5pdHRlc3QuY2MKQEAgLTEwMiwx
MiArMTAyLDEzIEBAIGNsYXNzIFJ0cFZpZGVvU2VuZGVyVGVzdEZpeHR1cmUgewogICAgIHN0ZDo6
bWFwPHVpbnQzMl90LCBSdHBTdGF0ZT4gc3VzcGVuZGVkX3NzcmNzOwogICAgIHJvdXRlcl8gPSBh
YnNsOjptYWtlX3VuaXF1ZTxSdHBWaWRlb1NlbmRlcj4oCiAgICAgICAgIGNvbmZpZ18ucnRwLnNz
cmNzLCBzdXNwZW5kZWRfc3NyY3MsIHN1c3BlbmRlZF9wYXlsb2FkX3N0YXRlcywKLSAgICAgICAg
Y29uZmlnXy5ydHAsIGNvbmZpZ18ucnRjcCwgJnRyYW5zcG9ydF8sCisgICAgICAgIGNvbmZpZ18u
cnRwLCBjb25maWdfLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zLCAmdHJhbnNwb3J0XywKICAgICAg
ICAgQ3JlYXRlT2JzZXJ2ZXJzKCZjYWxsX3N0YXRzXywgJmVuY29kZXJfZmVlZGJhY2tfLCAmc3Rh
dHNfcHJveHlfLAogICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXRzX3Byb3h5XywgJnN0YXRz
X3Byb3h5XywgJnN0YXRzX3Byb3h5XywKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0c19w
cm94eV8sICZzdGF0c19wcm94eV8sICZzZW5kX2RlbGF5X3N0YXRzXyksCiAgICAgICAgICZ0cmFu
c3BvcnRfY29udHJvbGxlcl8sICZldmVudF9sb2dfLCAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1p
dGVyXywKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmVjQ29udHJvbGxlckRlZmF1bHQ+KCZj
bG9ja18pKTsKKyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmVjQ29udHJvbGxlckRlZmF1bHQ+
KCZjbG9ja18pLCBudWxscHRyLAorICAgICAgICBDcnlwdG9PcHRpb25ze30pOwogICB9CiAKICAg
UnRwVmlkZW9TZW5kZXIqIHJvdXRlcigpIHsgcmV0dXJuIHJvdXRlcl8uZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvc2lt
dWxhdGVkX25ldHdvcmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmNjCmluZGV4IGVlNThkY2U3MTgyNDhhYTEwNmJj
M2E4MTdhMzRhOTIxYzg5MjlmYTYuLjc3YmUxNDgyMWMyYWVmMWViNzdmNWZmYTY2ZjE3ZmJlNDY0
MGIyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvc2ltdWxhdGVkX25ldHdvcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9zaW11bGF0ZWRfbmV0d29yay5jYwpAQCAtMTMsNiAr
MTMsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRl
IDx1dGlsaXR5PgorI2luY2x1ZGUgImFwaS91bml0cy9kYXRhX3JhdGUuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKQEAgLTI2LDYgKzI3LDkgQEAgU2ltdWxhdGVkTmV0d29yazo6flNpbXVsYXRl
ZE5ldHdvcmsoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgU2ltdWxhdGVkTmV0d29yazo6U2V0Q29uZmln
KGNvbnN0IFNpbXVsYXRlZE5ldHdvcms6OkNvbmZpZyYgY29uZmlnKSB7CiAgIHJ0Yzo6Q3JpdFNj
b3BlIGNyaXQoJmNvbmZpZ19sb2NrXyk7CisgIGlmIChjb25maWdfLmxpbmtfY2FwYWNpdHlfa2Jw
cyAhPSBjb25maWcubGlua19jYXBhY2l0eV9rYnBzKSB7CisgICAgcmVzZXRfY2FwYWNpdHlfZGVs
YXlfZXJyb3JfID0gdHJ1ZTsKKyAgfQogICBjb25maWdfID0gY29uZmlnOyAgLy8gU2hhbGxvdyBj
b3B5IG9mIHRoZSBzdHJ1Y3QuCiAgIGRvdWJsZSBwcm9iX2xvc3MgPSBjb25maWcubG9zc19wZXJj
ZW50IC8gMTAwLjA7CiAgIGlmIChjb25maWdfLmF2Z19idXJzdF9sb3NzX2xlbmd0aCA9PSAtMSkg
ewpAQCAtNjQsNDIgKzY4LDQ1IEBAIGJvb2wgU2ltdWxhdGVkTmV0d29yazo6RW5xdWV1ZVBhY2tl
dChQYWNrZXRJbkZsaWdodEluZm8gcGFja2V0KSB7CiAgICAgLy8gVG9vIG1hbnkgcGFja2V0IG9u
IHRoZSBsaW5rLCBkcm9wIHRoaXMgb25lLgogICAgIHJldHVybiBmYWxzZTsKICAgfQotCi0gIC8v
IERlbGF5IGludHJvZHVjZWQgYnkgdGhlIGxpbmsgY2FwYWNpdHkuCi0gIGludDY0X3QgY2FwYWNp
dHlfZGVsYXlfbXMgPSAwOwotICBpZiAoY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA+IDApIHsK
LSAgICAvLyBVc2luZyBieXRlcyBwZXIgbWlsbGlzZWNvbmQgdG8gYXZvaWQgbG9zaW5nIHByZWNp
c2lvbi4KLSAgICBjb25zdCBpbnQ2NF90IGJ5dGVzX3Blcl9taWxsaXNlY29uZCA9IGNvbmZpZy5s
aW5rX2NhcGFjaXR5X2ticHMgLyA4OwotICAgIC8vIFRvIHJvdW5kIHRvIHRoZSBjbG9zZXN0IG1p
bGxpc2Vjb25kIHdlIGFkZCBoYWxmIGEgbWlsbGlzZWNvbmRzIHdvcnRoIG9mCi0gICAgLy8gYnl0
ZXMgdG8gdGhlIGRlbGF5IGNhbGN1bGF0aW9uLgotICAgIGNhcGFjaXR5X2RlbGF5X21zID0gKHBh
Y2tldC5zaXplICsgY2FwYWNpdHlfZGVsYXlfZXJyb3JfYnl0ZXNfICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBieXRlc19wZXJfbWlsbGlzZWNvbmQgLyAyKSAvCi0gICAgICAgICAgICAgICAg
ICAgICAgICBieXRlc19wZXJfbWlsbGlzZWNvbmQ7Ci0gICAgY2FwYWNpdHlfZGVsYXlfZXJyb3Jf
Ynl0ZXNfICs9Ci0gICAgICAgIHBhY2tldC5zaXplIC0gY2FwYWNpdHlfZGVsYXlfbXMgKiBieXRl
c19wZXJfbWlsbGlzZWNvbmQ7Ci0gIH0KICAgaW50NjRfdCBuZXR3b3JrX3N0YXJ0X3RpbWVfdXMg
PSBwYWNrZXQuc2VuZF90aW1lX3VzOwotCiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBjcml0KCZj
b25maWdfbG9ja18pOworICAgIGlmIChyZXNldF9jYXBhY2l0eV9kZWxheV9lcnJvcl8pIHsKKyAg
ICAgIGNhcGFjaXR5X2RlbGF5X2Vycm9yX2J5dGVzXyA9IDA7CisgICAgICByZXNldF9jYXBhY2l0
eV9kZWxheV9lcnJvcl8gPSBmYWxzZTsKKyAgICB9CiAgICAgaWYgKHBhdXNlX3RyYW5zbWlzc2lv
bl91bnRpbF91c18pIHsKICAgICAgIG5ldHdvcmtfc3RhcnRfdGltZV91cyA9CiAgICAgICAgICAg
c3RkOjptYXgobmV0d29ya19zdGFydF90aW1lX3VzLCAqcGF1c2VfdHJhbnNtaXNzaW9uX3VudGls
X3VzXyk7CiAgICAgICBwYXVzZV90cmFuc21pc3Npb25fdW50aWxfdXNfLnJlc2V0KCk7CiAgICAg
fQogICB9CisKKyAgLy8gRGVsYXkgaW50cm9kdWNlZCBieSB0aGUgbGluayBjYXBhY2l0eS4KKyAg
VGltZURlbHRhIGNhcGFjaXR5X2RlbGF5ID0gVGltZURlbHRhOjpaZXJvKCk7CisgIGlmIChjb25m
aWcubGlua19jYXBhY2l0eV9rYnBzID4gMCkgeworICAgIGNvbnN0IERhdGFSYXRlIGxpbmtfY2Fw
YWNpdHkgPSBEYXRhUmF0ZTo6a2Jwcyhjb25maWcubGlua19jYXBhY2l0eV9rYnBzKTsKKyAgICBp
bnQ2NF90IGNvbXBlbnNhdGVkX3NpemUgPQorICAgICAgICBzdGF0aWNfY2FzdDxpbnQ2NF90Pihw
YWNrZXQuc2l6ZSkgKyBjYXBhY2l0eV9kZWxheV9lcnJvcl9ieXRlc187CisgICAgY2FwYWNpdHlf
ZGVsYXkgPSBEYXRhU2l6ZTo6Ynl0ZXMoY29tcGVuc2F0ZWRfc2l6ZSkgLyBsaW5rX2NhcGFjaXR5
OworCisgICAgY2FwYWNpdHlfZGVsYXlfZXJyb3JfYnl0ZXNfICs9CisgICAgICAgIHBhY2tldC5z
aXplIC0gKGNhcGFjaXR5X2RlbGF5ICogbGlua19jYXBhY2l0eSkuYnl0ZXMoKTsKKyAgfQorCiAg
IC8vIENoZWNrIGlmIHRoZXJlIGFscmVhZHkgYXJlIHBhY2tldHMgb24gdGhlIGxpbmsgYW5kIGNo
YW5nZSBuZXR3b3JrIHN0YXJ0CiAgIC8vIHRpbWUgZm9yd2FyZCBpZiB0aGVyZSBpcy4KICAgaWYg
KCFjYXBhY2l0eV9saW5rXy5lbXB0eSgpICYmCiAgICAgICBuZXR3b3JrX3N0YXJ0X3RpbWVfdXMg
PCBjYXBhY2l0eV9saW5rXy5iYWNrKCkuYXJyaXZhbF90aW1lX3VzKQogICAgIG5ldHdvcmtfc3Rh
cnRfdGltZV91cyA9IGNhcGFjaXR5X2xpbmtfLmJhY2soKS5hcnJpdmFsX3RpbWVfdXM7CiAKLSAg
aW50NjRfdCBhcnJpdmFsX3RpbWVfdXMgPSBuZXR3b3JrX3N0YXJ0X3RpbWVfdXMgKyBjYXBhY2l0
eV9kZWxheV9tcyAqIDEwMDA7CisgIGludDY0X3QgYXJyaXZhbF90aW1lX3VzID0gbmV0d29ya19z
dGFydF90aW1lX3VzICsgY2FwYWNpdHlfZGVsYXkudXMoKTsKICAgY2FwYWNpdHlfbGlua18ucHVz
aCh7cGFja2V0LCBhcnJpdmFsX3RpbWVfdXN9KTsKICAgcmV0dXJuIHRydWU7CiB9CiAKIGFic2w6
Om9wdGlvbmFsPGludDY0X3Q+IFNpbXVsYXRlZE5ldHdvcms6Ok5leHREZWxpdmVyeVRpbWVVcygp
IGNvbnN0IHsKKyAgcnRjOjpDcml0U2NvcGUgY3JpdCgmcHJvY2Vzc19sb2NrXyk7CiAgIGlmICgh
ZGVsYXlfbGlua18uZW1wdHkoKSkKICAgICByZXR1cm4gZGVsYXlfbGlua18uYmVnaW4oKS0+YXJy
aXZhbF90aW1lX3VzOwogICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvc2ltdWxhdGVkX25ldHdv
cmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvc2lt
dWxhdGVkX25ldHdvcmsuaAppbmRleCAwZjg0NTMyODNhODhkZDk5ZGVlZGY3YzhkZGVhY2MyNmQy
OTJkOGVhLi5lOTc4MDI3MDkyYzc3OTNkZDNjZTQzMGQ5YmI3M2VmMzc3NWQyZWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3NpbXVs
YXRlZF9uZXR3b3JrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9zaW11bGF0ZWRfbmV0d29yay5oCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFj
ZSB3ZWJydGMgewogLy8gY2FwYWNpdHkgaW50cm9kdWNlZCBkZWxheS4KIGNsYXNzIFNpbXVsYXRl
ZE5ldHdvcmsgOiBwdWJsaWMgTmV0d29ya0JlaGF2aW9ySW50ZXJmYWNlIHsKICBwdWJsaWM6Ci0g
IHVzaW5nIENvbmZpZyA9IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZzsKKyAgdXNpbmcg
Q29uZmlnID0gQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZzsKICAgZXhwbGljaXQgU2ltdWxh
dGVkTmV0d29yayhDb25maWcgY29uZmlnLCB1aW50NjRfdCByYW5kb21fc2VlZCA9IDEpOwogICB+
U2ltdWxhdGVkTmV0d29yaygpIG92ZXJyaWRlOwogCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFNp
bXVsYXRlZE5ldHdvcmsgOiBwdWJsaWMgTmV0d29ya0JlaGF2aW9ySW50ZXJmYWNlIHsKICAgICBp
bnQ2NF90IGFycml2YWxfdGltZV91czsKICAgfTsKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY29u
ZmlnX2xvY2tfOworICBib29sIHJlc2V0X2NhcGFjaXR5X2RlbGF5X2Vycm9yXyBSVENfR1VBUkRF
RF9CWShjb25maWdfbG9ja18pID0gZmFsc2U7CiAKICAgLy8gfHByb2Nlc3NfbG9ja3wgZ3VhcmRz
IHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQgaW4gZGVsYXkgYW5kIGxvc3MKICAgLy8gcHJv
Y2Vzc2VzLCBzdWNoIGFzIHRoZSBwYWNrZXQgcXVldWVzLgpAQCAtNTYsNyArNTcsNyBAQCBjbGFz
cyBTaW11bGF0ZWROZXR3b3JrIDogcHVibGljIE5ldHdvcmtCZWhhdmlvckludGVyZmFjZSB7CiAg
IHN0ZDo6cXVldWU8UGFja2V0SW5mbz4gY2FwYWNpdHlfbGlua18gUlRDX0dVQVJERURfQlkocHJv
Y2Vzc19sb2NrXyk7CiAgIFJhbmRvbSByYW5kb21fOwogCi0gIHN0ZDo6ZGVxdWU8UGFja2V0SW5m
bz4gZGVsYXlfbGlua187CisgIHN0ZDo6ZGVxdWU8UGFja2V0SW5mbz4gZGVsYXlfbGlua18gUlRD
X0dVQVJERURfQlkocHJvY2Vzc19sb2NrXyk7CiAKICAgLy8gTGluayBjb25maWd1cmF0aW9uLgog
ICBDb25maWcgY29uZmlnXyBSVENfR1VBUkRFRF9CWShjb25maWdfbG9ja18pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0L2Zh
a2VfbmV0d29ya19waXBlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0L2Zha2VfbmV0d29ya19waXBlX3VuaXR0ZXN0LmNjCmlu
ZGV4IDA5ZTU4NTI0MWE0MDc2NzdhZjM3ZTlhN2MyNjZmZGFlYjE2MjQwNzQuLmRlNWFlYzcxMzUy
Y2NjN2FlMDQ4ODFjYTYxYmFlM2I3OGMyYTZkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdGVzdC9mYWtlX25ldHdvcmtfcGlwZV91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL3Rlc3QvZmFrZV9uZXR3b3JrX3BpcGVfdW5pdHRlc3QuY2MKQEAgLTczLDcgKzczLDcg
QEAgY2xhc3MgRmFrZU5ldHdvcmtQaXBlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qgewog
CiAvLyBUZXN0IHRoZSBjYXBhY2l0eSBsaW5rIGFuZCB2ZXJpZnkgd2UgZ2V0IGFzIG1hbnkgcGFj
a2V0cyBhcyB3ZSBleHBlY3QuCiBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgQ2FwYWNpdHlU
ZXN0KSB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgIEJ1aWx0
SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICBjb25maWcucXVldWVfbGVuZ3RoX3Bh
Y2tldHMgPSAyMDsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IDgwOwogICBNb2NrUmVj
ZWl2ZXIgcmVjZWl2ZXI7CkBAIC0xMTMsNyArMTEzLDcgQEAgVEVTVF9GKEZha2VOZXR3b3JrUGlw
ZVRlc3QsIENhcGFjaXR5VGVzdCkgewogCiAvLyBUZXN0IHRoZSBleHRyYSBuZXR3b3JrIGRlbGF5
LgogVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIEV4dHJhRGVsYXlUZXN0KSB7Ci0gIERlZmF1
bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZp
b3JDb25maWcgY29uZmlnOwogICBjb25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMgPSAyMDsKICAg
Y29uZmlnLnF1ZXVlX2RlbGF5X21zID0gMTAwOwogICBjb25maWcubGlua19jYXBhY2l0eV9rYnBz
ID0gODA7CkBAIC0xNDksNyArMTQ5LDcgQEAgVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIEV4
dHJhRGVsYXlUZXN0KSB7CiAvLyBUZXN0IHRoZSBudW1iZXIgb2YgYnVmZmVycyBhbmQgcGFja2V0
cyBhcmUgZHJvcHBlZCB3aGVuIHNlbmRpbmcgdG9vIG1hbnkKIC8vIHBhY2tldHMgdG9vIHF1aWNr
bHkuCiBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgUXVldWVMZW5ndGhUZXN0KSB7Ci0gIERl
ZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVo
YXZpb3JDb25maWcgY29uZmlnOwogICBjb25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMgPSAyOwog
ICBjb25maWcubGlua19jYXBhY2l0eV9rYnBzID0gODA7CiAgIE1vY2tSZWNlaXZlciByZWNlaXZl
cjsKQEAgLTE3Myw3ICsxNzMsNyBAQCBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgUXVldWVM
ZW5ndGhUZXN0KSB7CiAKIC8vIFRlc3Qgd2UgZ2V0IHN0YXRpc3RpY3MgYXMgZXhwZWN0ZWQuCiBU
RVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgU3RhdGlzdGljc1Rlc3QpIHsKLSAgRGVmYXVsdE5l
dHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNv
bmZpZyBjb25maWc7CiAgIGNvbmZpZy5xdWV1ZV9sZW5ndGhfcGFja2V0cyA9IDI7CiAgIGNvbmZp
Zy5xdWV1ZV9kZWxheV9tcyA9IDIwOwogICBjb25maWcubGlua19jYXBhY2l0eV9rYnBzID0gODA7
CkBAIC0yMDUsNyArMjA1LDcgQEAgVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIFN0YXRpc3Rp
Y3NUZXN0KSB7CiAvLyBDaGFuZ2UgdGhlIGxpbmsgY2FwYWNpdHkgaGFsZi13YXkgdGhyb3VnaCB0
aGUgdGVzdCBhbmQgdmVyaWZ5IHRoYXQgdGhlCiAvLyBkZWxpdmVyeSB0aW1lcyBjaGFuZ2UgYWNj
b3JkaW5nbHkuCiBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgQ2hhbmdpbmdDYXBhY2l0eVdp
dGhFbXB0eVBpcGVUZXN0KSB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25m
aWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICBjb25maWcucXVl
dWVfbGVuZ3RoX3BhY2tldHMgPSAyMDsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IDgw
OwogICBNb2NrUmVjZWl2ZXIgcmVjZWl2ZXI7CkBAIC0yNjYsNyArMjY2LDcgQEAgVEVTVF9GKEZh
a2VOZXR3b3JrUGlwZVRlc3QsIENoYW5naW5nQ2FwYWNpdHlXaXRoRW1wdHlQaXBlVGVzdCkgewog
Ly8gQ2hhbmdlIHRoZSBsaW5rIGNhcGFjaXR5IGhhbGYtd2F5IHRocm91Z2ggdGhlIHRlc3QgYW5k
IHZlcmlmeSB0aGF0IHRoZQogLy8gZGVsaXZlcnkgdGltZXMgY2hhbmdlIGFjY29yZGluZ2x5Lgog
VEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIENoYW5naW5nQ2FwYWNpdHlXaXRoUGFja2V0c0lu
UGlwZVRlc3QpIHsKLSAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAg
QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBjb25maWc7CiAgIGNvbmZpZy5xdWV1ZV9sZW5n
dGhfcGFja2V0cyA9IDIwOwogICBjb25maWcubGlua19jYXBhY2l0eV9rYnBzID0gODA7CiAgIE1v
Y2tSZWNlaXZlciByZWNlaXZlcjsKQEAgLTMyMSw3ICszMjEsNyBAQCBURVNUX0YoRmFrZU5ldHdv
cmtQaXBlVGVzdCwgQ2hhbmdpbmdDYXBhY2l0eVdpdGhQYWNrZXRzSW5QaXBlVGVzdCkgewogCiAv
LyBBdCBmaXJzdCBkaXNhbGxvdyByZW9yZGVyaW5nIGFuZCB0aGVuIGFsbG93IHJlb3JkZXJpbmcu
CiBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgRGlzYWxsb3dSZW9yZGVyaW5nVGhlbkFsbG93
UmVvcmRlcmluZykgewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOwor
ICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnF1ZXVlX2xl
bmd0aF9wYWNrZXRzID0gMTAwMDsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IDgwMDsK
ICAgY29uZmlnLnF1ZXVlX2RlbGF5X21zID0gMTAwOwpAQCAtMzc0LDcgKzM3NCw3IEBAIFRFU1Rf
RihGYWtlTmV0d29ya1BpcGVUZXN0LCBCdXJzdExvc3MpIHsKICAgY29uc3QgaW50IGtOdW1QYWNr
ZXRzID0gMTAwMDA7CiAgIGNvbnN0IGludCBrUGFja2V0U2l6ZSA9IDEwOwogCi0gIERlZmF1bHRO
ZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JD
b25maWcgY29uZmlnOwogICBjb25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMgPSBrTnVtUGFja2V0
czsKICAgY29uZmlnLmxvc3NfcGVyY2VudCA9IGtMb3NzUGVyY2VudDsKICAgY29uZmlnLmF2Z19i
dXJzdF9sb3NzX2xlbmd0aCA9IGtBdmdCdXJzdExlbmd0aDsKQEAgLTQwOSw3ICs0MDksNyBAQCBU
RVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwgQnVyc3RMb3NzKSB7CiB9CiAKIFRFU1RfRihGYWtl
TmV0d29ya1BpcGVUZXN0LCBTZXRSZWNlaXZlcikgewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRp
b25Db25maWcgY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsK
ICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IDgwMDsKICAgTW9ja1JlY2VpdmVyIHJlY2Vp
dmVyOwogICBhdXRvIHNpbXVsYXRlZF9uZXR3b3JrID0gYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxh
dGVkTmV0d29yaz4oY29uZmlnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdGVzdC9tb2NrX2JpdHJhdGVfYWxsb2NhdG9yLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3Rlc3QvbW9ja19i
aXRyYXRlX2FsbG9jYXRvci5oCmluZGV4IDcxNGMwMjU0MWYxNzJhZDVkNWNkNjk0YTgwOTJjYTE0
M2I5NTQ0YzguLmYwMGVkNzljNTlmYjc4Mjg5ZjhkOTA0ZDg5YWZlODY1YjU5YjllNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdGVz
dC9tb2NrX2JpdHJhdGVfYWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0L21vY2tfYml0cmF0ZV9hbGxvY2F0b3IuaApAQCAt
MjEsNyArMjEsNyBAQCBjbGFzcyBNb2NrQml0cmF0ZUFsbG9jYXRvciA6IHB1YmxpYyBCaXRyYXRl
QWxsb2NhdG9ySW50ZXJmYWNlIHsKICAgTU9DS19NRVRIT0QyKEFkZE9ic2VydmVyLAogICAgICAg
ICAgICAgICAgdm9pZChCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqLCBNZWRpYVN0cmVhbUFsbG9j
YXRpb25Db25maWcpKTsKICAgTU9DS19NRVRIT0QxKFJlbW92ZU9ic2VydmVyLCB2b2lkKEJpdHJh
dGVBbGxvY2F0b3JPYnNlcnZlciopKTsKLSAgTU9DS19NRVRIT0QxKEdldFN0YXJ0Qml0cmF0ZSwg
aW50KEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciopKTsKKyAgTU9DS19DT05TVF9NRVRIT0QxKEdl
dFN0YXJ0Qml0cmF0ZSwgaW50KEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciopKTsKIH07CiB9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCiAjZW5kaWYgIC8vIENBTExfVEVTVF9NT0NLX0JJVFJBVEVfQUxM
T0NBVE9SX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jYWxsL3Rlc3QvbW9ja19ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0L21vY2tf
cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaAppbmRleCAzNzU4N2IyYjc2YjliZTE5ZGZh
NjhiYzRhZTczYTQ1OGVjYmI0ZTE5Li40ZDM0ZDA2ZTA1NjdiOTllZjQwYTA5MzU3ZmRlYzQ2NTQx
MzRhZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3Rlc3QvbW9ja19ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdGVzdC9tb2Nr
X3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kLmgKQEAgLTE3LDEyICsxNywxNCBAQAogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9iaXRyYXRlX2NvbnN0cmFpbnRzLmgiCisj
aW5jbHVkZSAiYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmgiCisjaW5jbHVkZSAiYXBpL2NyeXB0
by9mcmFtZWVuY3J5cHRvcmludGVyZmFjZS5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9y
dF9jb250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvaW5jbHVkZS9uZXR3b3JrX2NoYW5nZWRfb2JzZXJ2ZXIuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
bmV0d29yay9zZW50X3BhY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdvcmtyb3V0ZS5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhdGVfbGltaXRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L3NvY2tldC5oIgogI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CkBAIC0zMCwxNyArMzIsMTggQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBNb2NrUnRwVHJh
bnNwb3J0Q29udHJvbGxlclNlbmQKICAgICA6IHB1YmxpYyBSdHBUcmFuc3BvcnRDb250cm9sbGVy
U2VuZEludGVyZmFjZSB7CiAgcHVibGljOgotICBNT0NLX01FVEhPRDkoCisgIE1PQ0tfTUVUSE9E
MTAoCiAgICAgICBDcmVhdGVSdHBWaWRlb1NlbmRlciwKICAgICAgIFJ0cFZpZGVvU2VuZGVySW50
ZXJmYWNlKihjb25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4mLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBTdGF0ZT4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjptYXA8dWludDMyX3QsIFJ0cFBheWxvYWRTdGF0
ZT4mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJ0cENvbmZpZyYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUnRjcENvbmZpZyYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcG9ydCosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUnRwU2VuZGVyT2JzZXJ2ZXJzJiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSdGNFdmVudExvZyosCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+KSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJ0cFNlbmRlckZyYW1lRW5jcnlwdGlvbkNvbmZp
ZyYpKTsKICAgTU9DS19NRVRIT0QxKERlc3Ryb3lSdHBWaWRlb1NlbmRlciwgdm9pZChSdHBWaWRl
b1NlbmRlckludGVyZmFjZSopKTsKICAgTU9DS19NRVRIT0QwKEdldFdvcmtlclF1ZXVlLCBydGM6
OlRhc2tRdWV1ZSooKSk7CiAgIE1PQ0tfTUVUSE9EMChwYWNrZXRfcm91dGVyLCBQYWNrZXRSb3V0
ZXIqKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC92aWRlb19yZWNlaXZlX3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19yZWNlaXZlX3N0cmVhbS5oCmluZGV4IDQ5
ZWZlNGZjZWFhNWVlNDY0NzE5MmIwOGE3ZjNlMDVjZWFjYTIyYTkuLjJjZDVmMTYzMWEwOWIxNWEw
MTk1MzE1YjdlYjg4YzNmMTZmYzcxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fcmVjZWl2ZV9zdHJlYW0uaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3JlY2Vp
dmVfc3RyZWFtLmgKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNs
dWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29w
dGlvbnMuaCIKICNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKICNpbmNsdWRlICJhcGkvcnRw
cGFyYW1ldGVycy5oIgogI2luY2x1ZGUgImFwaS9ydHByZWNlaXZlcmludGVyZmFjZS5oIgpAQCAt
MjUsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3RpbWluZy5oIgogI2lu
Y2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgogI2luY2x1ZGUgImNh
bGwvcnRwX2NvbmZpZy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1
aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvZnJhbWVfY2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRjcF9zdGF0aXN0aWNz
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNzIEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNl
OwogY2xhc3MgUnRwUGFja2V0U2lua0ludGVyZmFjZTsKIGNsYXNzIFZpZGVvRGVjb2RlckZhY3Rv
cnk7CiAKQEAgLTIxNSw2ICsyMTYsMTQgQEAgY2xhc3MgVmlkZW9SZWNlaXZlU3RyZWFtIHsKICAg
ICAvLyBUT0RPKG5pc3NlKTogVXNlZCB3aXRoIFZpZGVvRGVjb2RlckZhY3Rvcnk6OkxlZ2FjeUNy
ZWF0ZVZpZGVvRGVjb2Rlci4KICAgICAvLyBEZWxldGUgd2hlbiB0aGF0IG1ldGhvZCBpcyByZXRp
cmVkLgogICAgIHN0ZDo6c3RyaW5nIHN0cmVhbV9pZDsKKworICAgIC8vIEFuIG9wdGlvbmFsIGN1
c3RvbSBmcmFtZSBkZWNyeXB0b3IgdGhhdCBhbGxvd3MgdGhlIGVudGlyZSBmcmFtZSB0byBiZQor
ICAgIC8vIGRlY3J5cHRlZCBpbiB3aGF0ZXZlciB3YXkgdGhlIGNhbGxlciBjaG9zZXMuIFRoaXMg
aXMgbm90IHJlcXVpcmVkIGJ5CisgICAgLy8gZGVmYXVsdC4KKyAgICBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yOworCisg
ICAgLy8gUGVyIFBlZXJDb25uZWN0aW9uIGNyeXB0b2dyYXBoeSBvcHRpb25zLgorICAgIENyeXB0
b09wdGlvbnMgY3J5cHRvX29wdGlvbnM7CiAgIH07CiAKICAgLy8gU3RhcnRzIHN0cmVhbSBhY3Rp
dml0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvdmlkZW9fc2VuZF9zdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmNjCmluZGV4IDZiOTNmZTI4
MjM4YTRiOGUzNWRhMjMwZmRhZTQ1NWM2OGRjNTEzZTEuLmM4YmEzMDhmYTU0MjM2YTJiZjA1NzMz
YTQxNDZiMTE5YzRkNzM3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fc2VuZF9zdHJlYW0uY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19zZW5kX3N0cmVhbS5j
YwpAQCAtOSw2ICs5LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgImNhbGwvdmlkZW9fc2VuZF9zdHJl
YW0uaCIKKworI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1l
ZW5jcnlwdG9yaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdf
YnVpbGRlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTc1LDExICs3OSw5IEBAIHN0ZDo6
c3RyaW5nIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnOjpUb1N0cmluZygpIGNvbnN0IHsKICAgc3Mg
PDwgIntlbmNvZGVyX3NldHRpbmdzOiB7IGV4cGVyaW1lbnRfY3B1X2xvYWRfZXN0aW1hdG9yOiAi
CiAgICAgIDw8IChlbmNvZGVyX3NldHRpbmdzLmV4cGVyaW1lbnRfY3B1X2xvYWRfZXN0aW1hdG9y
ID8gIm9uIiA6ICJvZmYiKSA8PCAifX0iOwogICBzcyA8PCAiLCBydHA6ICIgPDwgcnRwLlRvU3Ry
aW5nKCk7Ci0gIHNzIDw8ICIsIHJ0Y3A6ICIgPDwgcnRjcC5Ub1N0cmluZygpOworICBzcyA8PCAi
LCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tczogIiA8PCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tczsK
ICAgc3MgPDwgIiwgcHJlX2VuY29kZV9jYWxsYmFjazogIgogICAgICA8PCAocHJlX2VuY29kZV9j
YWxsYmFjayA/ICIoVmlkZW9TaW5rSW50ZXJmYWNlKSIgOiAibnVsbHB0ciIpOwotICBzcyA8PCAi
LCBwb3N0X2VuY29kZV9jYWxsYmFjazogIgotICAgICA8PCAocG9zdF9lbmNvZGVfY2FsbGJhY2sg
PyAiKEVuY29kZWRGcmFtZU9ic2VydmVyKSIgOiAibnVsbHB0ciIpOwogICBzcyA8PCAiLCByZW5k
ZXJfZGVsYXlfbXM6ICIgPDwgcmVuZGVyX2RlbGF5X21zOwogICBzcyA8PCAiLCB0YXJnZXRfZGVs
YXlfbXM6ICIgPDwgdGFyZ2V0X2RlbGF5X21zOwogICBzcyA8PCAiLCBzdXNwZW5kX2JlbG93X21p
bl9iaXRyYXRlOiAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmgKaW5kZXggM2Zm
NjI0ZDIzMGJkOTk4MTFjYzQwZWYxZDgzNTBiNzcyMGFiMTkyYS4uNGQzZDljMGM1NzRjYjdmNzZj
NmU5ZjliOTUxNDAyODRlZjZlYmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19zZW5kX3N0cmVhbS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fc2VuZF9zdHJl
YW0uaApAQCAtMTEsMjQgKzExLDI5IEBACiAjaWZuZGVmIENBTExfVklERU9fU0VORF9TVFJFQU1f
SF8KICNkZWZpbmUgQ0FMTF9WSURFT19TRU5EX1NUUkVBTV9IXwogCisjaW5jbHVkZSA8c3RkaW50
Lmg+CiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
ICNpbmNsdWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2Ny
eXB0b29wdGlvbnMuaCIKKyNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgorI2luY2x1ZGUg
ImFwaS92aWRlby92aWRlb19jb250ZW50X3R5cGUuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlk
ZW9fZnJhbWUuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc2lua19pbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc291cmNlX2ludGVyZmFjZS5oIgogI2luY2x1ZGUg
ImFwaS92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlcl9zZXR0aW5ncy5oIgogI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25maWcuaCIKLSNpbmNsdWRlICJhcGkvdmlk
ZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwvcnRwX2Nv
bmZpZy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1
ZGUpCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvZnJhbWVfY2FsbGJhY2suaCIKKyNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRjcF9zdGF0aXN0aWNzLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNzIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlOworCiBjbGFz
cyBWaWRlb1NlbmRTdHJlYW0gewogIHB1YmxpYzoKICAgc3RydWN0IFN0cmVhbVN0YXRzIHsKQEAg
LTEwOCw3ICsxMTMsOCBAQCBjbGFzcyBWaWRlb1NlbmRTdHJlYW0gewogCiAgICAgUnRwQ29uZmln
IHJ0cDsKIAotICAgIFJ0Y3BDb25maWcgcnRjcDsKKyAgICAvLyBUaW1lIGludGVydmFsIGJldHdl
ZW4gUlRDUCByZXBvcnQgZm9yIHZpZGVvCisgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21z
ID0gMTAwMDsKIAogICAgIC8vIFRyYW5zcG9ydCBmb3Igb3V0Z29pbmcgcGFja2V0cy4KICAgICBU
cmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0ID0gbnVsbHB0cjsKQEAgLTExNywxMiArMTIzLDYgQEAg
Y2xhc3MgVmlkZW9TZW5kU3RyZWFtIHsKICAgICAvLyBlZmZlY3RzLCBzbmFwc2hvdHMgZXRjLiAn
bnVsbHB0cicgZGlzYWJsZXMgdGhlIGNhbGxiYWNrLgogICAgIHJ0Yzo6VmlkZW9TaW5rSW50ZXJm
YWNlPFZpZGVvRnJhbWU+KiBwcmVfZW5jb2RlX2NhbGxiYWNrID0gbnVsbHB0cjsKIAotICAgIC8v
IENhbGxlZCBmb3IgZWFjaCBlbmNvZGVkIGZyYW1lLCBlLmcuIHVzZWQgZm9yIGZpbGUgc3RvcmFn
ZS4gJ251bGxwdHInCi0gICAgLy8gZGlzYWJsZXMgdGhlIGNhbGxiYWNrLiBBbHNvIG1lYXN1cmVz
IHRpbWluZyBhbmQgcGFzc2VzIHRoZSB0aW1lCi0gICAgLy8gc3BlbnQgb24gZW5jb2RpbmcuIFRo
aXMgdGltaW5nIHdpbGwgbm90IGZpcmUgaWYgZW5jb2RpbmcgdGFrZXMgbG9uZ2VyCi0gICAgLy8g
dGhhbiB0aGUgbWVhc3VyaW5nIHdpbmRvdywgc2luY2UgdGhlIHNhbXBsZSBkYXRhIHdpbGwgaGF2
ZSBiZWVuIGRyb3BwZWQuCi0gICAgRW5jb2RlZEZyYW1lT2JzZXJ2ZXIqIHBvc3RfZW5jb2RlX2Nh
bGxiYWNrID0gbnVsbHB0cjsKLQogICAgIC8vIEV4cGVjdGVkIGRlbGF5IG5lZWRlZCBieSB0aGUg
cmVuZGVyZXIsIGkuZS4gdGhlIGZyYW1lIHdpbGwgYmUgZGVsaXZlcmVkCiAgICAgLy8gdGhpcyBt
YW55IG1pbGxpc2Vjb25kcywgaWYgcG9zc2libGUsIGVhcmxpZXIgdGhhbiBleHBlY3RlZCByZW5k
ZXIgdGltZS4KICAgICAvLyBPbmx5IHZhbGlkIGlmIHxsb2NhbF9yZW5kZXJlcnwgaXMgc2V0LgpA
QCAtMTQzLDYgKzE0MywxNCBAQCBjbGFzcyBWaWRlb1NlbmRTdHJlYW0gewogICAgIC8vIFRyYWNr
IElEIGFzIHNwZWNpZmllZCBkdXJpbmcgdHJhY2sgY3JlYXRpb24uCiAgICAgc3RkOjpzdHJpbmcg
dHJhY2tfaWQ7CiAKKyAgICAvLyBBbiBvcHRpb25hbCBjdXN0b20gZnJhbWUgZW5jcnlwdG9yIHRo
YXQgYWxsb3dzIHRoZSBlbnRpcmUgZnJhbWUgdG8gYmUKKyAgICAvLyBlbmNyeXB0ZWQgaW4gd2hh
dGV2ZXIgd2F5IHRoZSBjYWxsZXIgY2hvb3Nlcy4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkKKyAg
ICAvLyBkZWZhdWx0LgorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRW5jcnlw
dG9ySW50ZXJmYWNlPiBmcmFtZV9lbmNyeXB0b3I7CisKKyAgICAvLyBQZXIgUGVlckNvbm5lY3Rp
b24gY3J5cHRvZ3JhcGh5IG9wdGlvbnMuCisgICAgQ3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9u
czsKKwogICAgcHJpdmF0ZToKICAgICAvLyBBY2Nlc3MgdG8gdGhlIGNvcHkgY29uc3RydWN0b3Ig
aXMgcHJpdmF0ZSB0byBmb3JjZSB1c2Ugb2YgdGhlIENvcHkoKQogICAgIC8vIG1ldGhvZCBmb3Ig
dGhvc2UgZXhjZXB0aW9uYWwgY2FzZXMgd2hlcmUgd2UgZG8gdXNlIGl0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29kZXJldmlldy5zZXR0
aW5ncyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvZGVyZXZp
ZXcuc2V0dGluZ3MKaW5kZXggZDhjZjYxMjVmNGUzYTUyMmJlNThkZDg1Y2JjNzg4YmE4MmM2YWM1
Yy4uMTcyNGVkZGMwNzJkZWZlMWY0MWZmMGZmZGUxMTZjMzA0NDYzODdkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29kZXJldmlldy5zZXR0
aW5ncworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb2Rl
cmV2aWV3LnNldHRpbmdzCkBAIC0xLDUgKzEsNCBAQAogIyBUaGlzIGZpbGUgaXMgdXNlZCBieSBn
aXQtY2wgdG8gZ2V0IHJlcG9zaXRvcnkgc3BlY2lmaWMgaW5mb3JtYXRpb24uCi1DQ19MSVNUOiB3
ZWJydGMtcmV2aWV3c0B3ZWJydGMub3JnCiBDT0RFX1JFVklFV19TRVJWRVI6IGNvZGVyZXZpZXcu
d2VicnRjLm9yZwogR0VSUklUX0hPU1Q6IFRydWUKIFBST0pFQ1Q6IHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlv
L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX2F1ZGlvL0JVSUxELmduCmluZGV4IGFiY2ZlOWFkMTY4M2ZiYmI1ODcwN2E3ZGI2NTJiMzlk
M2U5YzJlMGIuLjc0YjBjNjAyOWZkZTY4NzdkOWRiMzBlZGViOTE1ZmE0MzFmN2E4NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9h
dWRpby9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fYXVkaW8vQlVJTEQuZ24KQEAgLTQ3LDEwICs0NywxMCBAQCBydGNfc3RhdGlj
X2xpYnJhcnkoImNvbW1vbl9hdWRpbyIpIHsKICAgZGVwcyA9IFsKICAgICAiOmNvbW1vbl9hdWRp
b19jIiwKICAgICAiOnNpbmNfcmVzYW1wbGVyIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAg
ICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlOmd0ZXN0X3Byb2QiLAog
ICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uL3J0Y19iYXNlOnNh
bml0aXplciIsCiAgICAgIi4uL3J0Y19iYXNlL21lbW9yeTphbGlnbmVkX2FycmF5IiwKICAgICAi
Li4vcnRjX2Jhc2UvbWVtb3J5OmFsaWduZWRfbWFsbG9jIiwKICAgICAiLi4vcnRjX2Jhc2Uvc3lz
dGVtOmFyY2giLApAQCAtMTgxLDcgKzE4MSw2IEBAIHJ0Y19zb3VyY2Vfc2V0KCJjb21tb25fYXVk
aW9fYyIpIHsKICAgZGVwcyA9IFsKICAgICAiOmNvbW1vbl9hdWRpb19jX2FybV9hc20iLAogICAg
ICI6Y29tbW9uX2F1ZGlvX2NjIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uL3J0
Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlOmNvbXBpbGVfYXNzZXJ0X2MiLAogICAg
ICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCkBAIC0yMDEsNyArMjAwLDYgQEAgcnRj
X3NvdXJjZV9zZXQoImNvbW1vbl9hdWRpb19jYyIpIHsKICAgXQogCiAgIGRlcHMgPSBbCi0gICAg
Ii4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIs
CiAgICAgIi4uL3N5c3RlbV93cmFwcGVycyIsCiAgIF0KQEAgLTIxMiw3ICsyMTAsNiBAQCBydGNf
c291cmNlX3NldCgic2luY19yZXNhbXBsZXIiKSB7CiAgICAgInJlc2FtcGxlci9zaW5jX3Jlc2Ft
cGxlci5oIiwKICAgXQogICBkZXBzID0gWwotICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAi
Li4vcnRjX2Jhc2U6Z3Rlc3RfcHJvZCIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKICAgICAiLi4vcnRjX2Jhc2UvbWVtb3J5OmFsaWduZWRfbWFsbG9jIiwKQEAgLTM4MSw3
ICszNzgsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6ZmlyX2ZpbHRlciIs
CiAgICAgICAiOmZpcl9maWx0ZXJfZmFjdG9yeSIsCiAgICAgICAiOnNpbmNfcmVzYW1wbGVyIiwK
LSAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAog
ICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi9ydGNfYmFz
ZTpydGNfYmFzZV90ZXN0c191dGlscyIsCkBAIC0zODksNiArMzg1LDcgQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmNwdV9mZWF0dXJlc19hcGki
LAogICAgICAgIi4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi90ZXN0OnRlc3RfbWFpbiIs
CisgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGluZy9ndGVzdCIs
CiAgICAgXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fYXVkaW8vYXVkaW9fY29udmVydGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vYXVkaW9fY29udmVydGVyLmgK
aW5kZXggNzY5ZDcyNGUyZmI2OWUwYjQzMjkzM2U3NzBjYWYyOWNiNTBjMGZmMi4uMjRhNWU3MmNl
ZTkwNDA4OTBhOTdlMjZiYjBlMDIzYmMxZjQzODY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2F1ZGlvX2NvbnZlcnRl
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl9hdWRpby9hdWRpb19jb252ZXJ0ZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBDT01N
T05fQVVESU9fQVVESU9fQ09OVkVSVEVSX0hfCiAjZGVmaW5lIENPTU1PTl9BVURJT19BVURJT19D
T05WRVJURVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAog
I2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9jaGFubmVs
X2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl9hdWRpby9jaGFubmVsX2J1ZmZlci5jYwppbmRleCAzOGQyMzFlMDlkMDY0NzFmOTliZDI4
ZmYyNjY4ZjAxNGRmYThlMjQyLi5iOWI4YzI1ZTM3NTA2ZWQzODk5Zjg0ZjBhOWY5ZGNlN2M5ZjAx
YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fYXVkaW8vY2hhbm5lbF9idWZmZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2NoYW5uZWxfYnVmZmVyLmNjCkBA
IC0xMCw2ICsxMCw5IEBACiAKICNpbmNsdWRlICJjb21tb25fYXVkaW8vY2hhbm5lbF9idWZmZXIu
aCIKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisKKyNpbmNsdWRlICJjb21tb25fYXVkaW8vaW5jbHVk
ZS9hdWRpb191dGlsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX2F1ZGlvL2Zpcl9maWx0ZXJfYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVyX2MuY2MKaW5k
ZXggMzQxODQzNDY3MmFjZTNlMjFhYjJhZjBlNGM0OGY3NzNkOGZhZGRmMS4uYjZlYzI3YWQyNmJk
YTZmY2I5YjBjOTI0OGU4YjM3YWYzYzI0ZWM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2Zpcl9maWx0ZXJfYy5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVk
aW8vZmlyX2ZpbHRlcl9jLmNjCkBAIC0xMSwxMSArMTEsOCBAQAogI2luY2x1ZGUgImNvbW1vbl9h
dWRpby9maXJfZmlsdGVyX2MuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgotCiAjaW5jbHVkZSA8
bWVtb3J5PgogCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2Zpcl9maWx0ZXJfbmVvbi5oIgotI2lu
Y2x1ZGUgImNvbW1vbl9hdWRpby9maXJfZmlsdGVyX3NzZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVyX2Zh
Y3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fYXVkaW8vZmlyX2ZpbHRlcl9mYWN0b3J5LmNjCmluZGV4IDMyNDNiMjdlZjlhZDJkZjYyNGM1
YWM3ZWQ3ZGRmYzliNzdiNjUxMmEuLjE5NTI4ZTMxMmVjNTRjYzYxNzVjMzU4ZWMzYWM3OWNmMjRk
ZTg3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVyX2ZhY3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2Zpcl9maWx0ZXJfZmFj
dG9yeS5jYwpAQCAtMTMsMTIgKzEzLDEyIEBACiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2Zpcl9m
aWx0ZXJfYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3N5c3RlbS9hcmNoLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1
X2ZlYXR1cmVzX3dyYXBwZXIuaCIKIAogI2lmIGRlZmluZWQoV0VCUlRDX0hBU19ORU9OKQogI2lu
Y2x1ZGUgImNvbW1vbl9hdWRpby9maXJfZmlsdGVyX25lb24uaCIKICNlbGlmIGRlZmluZWQoV0VC
UlRDX0FSQ0hfWDg2X0ZBTUlMWSkKICNpbmNsdWRlICJjb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9z
c2UuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jcHVfZmVhdHVyZXNfd3Jh
cHBlci5oIiAgLy8ga1NTRTIsIFdlYlJ0Y19HLi4uCiAjZW5kaWYKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9zc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVyX3NzZS5oCmluZGV4IDc3
MDdmOTMzZDllZTZiN2IxMzA1YzU2OTRjN2JkZGE2NTMwZTAxY2EuLmI3NjhhMzdhYTE1NDRiMDhh
NmNlYTNlYzEzNzc4ZmMyMzM0NmQ0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVyX3NzZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9m
aXJfZmlsdGVyX3NzZS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIENPTU1PTl9BVURJT19G
SVJfRklMVEVSX1NTRV9IXwogI2RlZmluZSBDT01NT05fQVVESU9fRklSX0ZJTFRFUl9TU0VfSF8K
IAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImNv
bW1vbl9hdWRpby9maXJfZmlsdGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191dGlsLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8v
aW5jbHVkZS9hdWRpb191dGlsLmgKaW5kZXggZGUyNDJhNDliZThiNjYzNDg0YThiOWViNGU1ZmFl
Y2IwMzgyN2FmNC4uYmNhNTcxODA0NGM5MGU4NjE5MWEyMjE4ZWViY2NhNTIyZWZjMTYxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaApAQCAt
MTEsNiArMTEsNyBAQAogI2lmbmRlZiBDT01NT05fQVVESU9fSU5DTFVERV9BVURJT19VVElMX0hf
CiAjZGVmaW5lIENPTU1PTl9BVURJT19JTkNMVURFX0FVRElPX1VUSUxfSF8KIAorI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KICNpbmNs
dWRlIDxjc3RyaW5nPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3JlYWxfZm91cmllci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3JlYWxfZm91cmllci5oCmlu
ZGV4IGEzZTRkZDE2YTgyYzIxMzQ5ZWZhNjA4MjhkOTdhYTljNTc4MmY4MTUuLjRkMGQ4YmYzOGVl
OTBiNjJhNjgxYmQzYzk0MDU4MDJkOGY3NGZkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZWFsX2ZvdXJpZXIuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVk
aW8vcmVhbF9mb3VyaWVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgQ09NTU9OX0FVRElP
X1JFQUxfRk9VUklFUl9IXwogI2RlZmluZSBDT01NT05fQVVESU9fUkVBTF9GT1VSSUVSX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxjb21wbGV4PgogI2luY2x1ZGUgPG1lbW9y
eT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY29tbW9uX2F1ZGlvL3JlYWxfZm91cmllcl9vb3VyYS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3JlYWxfZm91cmllcl9vb3VyYS5o
CmluZGV4IGJiOGVlZjk2ZGZmNmVmMTAzZDM5NDkxZmJkMDlkNmRiMWVhMWQwNzIuLmIzNmM4NGYx
MGI2YjIzODIxMmU2MzdhYjUwNWIzZDU4NGUyMzBhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZWFsX2ZvdXJpZXJf
b291cmEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fYXVkaW8vcmVhbF9mb3VyaWVyX29vdXJhLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5k
ZWYgQ09NTU9OX0FVRElPX1JFQUxfRk9VUklFUl9PT1VSQV9IXwogI2RlZmluZSBDT01NT05fQVVE
SU9fUkVBTF9GT1VSSUVSX09PVVJBX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRl
IDxjb21wbGV4PgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNo
X3Jlc2FtcGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvcHVzaF9yZXNhbXBsZXIuY2MKaW5kZXggMzE4ZDk3Yjcy
YzI4YWQ1MGYzYjAzMzdhYWYzYjNmZDg1NWE1NDJjOC4uOWI4OTg2N2U1YTBkYzkzMDMzNTI3NmVl
MDk4M2MyYTczOTYxMzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3Jlc2FtcGxlci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVk
aW8vcmVzYW1wbGVyL3B1c2hfcmVzYW1wbGVyLmNjCkBAIC0xMCwxMiArMTAsMTIgQEAKIAogI2lu
Y2x1ZGUgImNvbW1vbl9hdWRpby9yZXNhbXBsZXIvaW5jbHVkZS9wdXNoX3Jlc2FtcGxlci5oIgog
CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlICJh
YnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5oIgogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKLSNp
bmNsdWRlICJjb21tb25fYXVkaW8vcmVzYW1wbGVyL2luY2x1ZGUvcmVzYW1wbGVyLmgiCiAjaW5j
bHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3NpbmNfcmVzYW1wbGVyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvcHVzaF9zaW5j
X3Jlc2FtcGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3NpbmNfcmVzYW1wbGVyLmgKaW5kZXggMWZmZTcz
Zjc5YmEyODA2ZGFhOTMyNjhhMWY4NTk3ZGMxMTYyYTRiOS4uZGI5Y2RjMWZkNGIzM2U4YTU2MmJj
YjMyMjYyMTBiZTdhZDQyOGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3NpbmNfcmVzYW1w
bGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3NpbmNfcmVzYW1wbGVyLmgKQEAgLTExLDYgKzExLDgg
QEAKICNpZm5kZWYgQ09NTU9OX0FVRElPX1JFU0FNUExFUl9QVVNIX1NJTkNfUkVTQU1QTEVSX0hf
CiAjZGVmaW5lIENPTU1PTl9BVURJT19SRVNBTVBMRVJfUFVTSF9TSU5DX1JFU0FNUExFUl9IXwog
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVt
b3J5PgogCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlci5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9yZXNhbXBsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3Jlc2FtcGxlci5j
YwppbmRleCBhYTNhNGJhYzJhYTJiYzIzNDQ3Y2UyOGY1NzY2MmNkOTZiM2VkNzI1Li5lNGQyYWEy
YjYxNTU5ZWQ0NTA5OTcwZjZlNTU0OWEyN2NmZjAwNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3Jl
c2FtcGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3Jlc2FtcGxlci5jYwpAQCAtMTIsNiArMTIsNyBAQAog
ICogQSB3cmFwcGVyIGZvciByZXNhbXBsaW5nIGEgbnVtZXJvdXMgYW1vdW50IG9mIHNhbXBsaW5n
IGNvbWJpbmF0aW9ucy4KICAqLwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3Rk
bGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19y
ZXNhbXBsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyLmNjCmluZGV4IDVhYTIwNjFhYjc1
ZWM0ZGIxMjJlMDk5Njc1NjZkMTA3ZGFmNmJjNDEuLjQ2MDE1MTQwMzAzMTEyZDNlMmM3YmQ1ZDkx
N2Q5NjdkOTE2YTI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNhbXBsZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlv
L3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlci5jYwpAQCAtODgsMTMgKzg4LDEzIEBACiAjaW5jbHVk
ZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlci5oIgogCiAjaW5jbHVkZSA8
bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotCiAjaW5j
bHVkZSA8bGltaXRzPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVk
ZS9jcHVfZmVhdHVyZXNfd3JhcHBlci5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNs
dWRlL2NwdV9mZWF0dXJlc193cmFwcGVyLmgiICAvLyBrU1NFMiwgV2ViUnRjX0cuLi4KIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNhbXBsZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9y
ZXNhbXBsZXIvc2luY19yZXNhbXBsZXIuaAppbmRleCA4YTgzM2NlODhjOTlhMzJmODBiZGZmZDgy
NTYxODYyYjU0MjNhNTY5Li4wYmU0MzE4ZTMzOTIyMDcwNDU3ZGUwNTk1Yjg3OTU3OGRkZGRiNzJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5j
X3Jlc2FtcGxlci5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaWZuZGVmIENPTU1PTl9BVURJT19SRVNB
TVBMRVJfU0lOQ19SRVNBTVBMRVJfSF8KICNkZWZpbmUgQ09NTU9OX0FVRElPX1JFU0FNUExFUl9T
SU5DX1JFU0FNUExFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8bWVtb3J5
PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jl
c2FtcGxlci9zaW5jX3Jlc2FtcGxlcl9zc2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyX3Nz
ZS5jYwppbmRleCAzOTA2YTc5NzUyOGE0MjVkMDM2MjFlYTE3MDYxNGZkZDBlMWJiOTI3Li5mNmEy
NGQwYTBlMGQzNDE3NDczMmU2OGE5MWY4MzIwNDYwNWZhYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVy
L3NpbmNfcmVzYW1wbGVyX3NzZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyX3NzZS5j
YwpAQCAtMTEsMTAgKzExLDEyIEBACiAvLyBNb2RpZmllZCBmcm9tIHRoZSBDaHJvbWl1bSBvcmln
aW5hbDoKIC8vIHNyYy9tZWRpYS9iYXNlL3NpbWQvc2luY19yZXNhbXBsZXJfc3NlLmNjCiAKLSNp
bmNsdWRlICJjb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyLmgiCi0KKyNpbmNs
dWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx4bW1pbnRyaW4u
aD4KIAorI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNhbXBsZXIuaCIK
KwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGZsb2F0IFNpbmNSZXNhbXBsZXI6OkNvbnZvbHZlX1NT
RShjb25zdCBmbG9hdCogaW5wdXRfcHRyLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Ntb290aGluZ19maWx0ZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8v
c21vb3RoaW5nX2ZpbHRlci5jYwppbmRleCBkNDI2YmRhMjUwMTM0M2NjNzIxYTViMmMwZjUyZmI2
NmMwMzUyOTBlLi4wZDVhYWE0ODU0MTU5MDRlYjNjY2RiMDIzZmEyYjM3YjgxZmQ4NzVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25f
YXVkaW8vc21vb3RoaW5nX2ZpbHRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vc21vb3RoaW5nX2ZpbHRlci5jYwpAQCAtMTIs
NiArMTIsNyBAQAogCiAjaW5jbHVkZSA8Y21hdGg+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fYXVkaW8vc21vb3RoaW5nX2ZpbHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Ntb290aGluZ19maWx0ZXIuaAppbmRl
eCBjZmY3NDY5NTNhYTgwYWQ5MGNkZDVkMjllM2Q5MTUxNzFiMzViZjIzLi5jNDY3ZDg1NDI2OTU2
Zjg4OGNmMDI1Y2JjZGE1OWI4ZTQwZTBkMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vc21vb3RoaW5nX2ZpbHRlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9h
dWRpby9zbW9vdGhpbmdfZmlsdGVyLmgKQEAgLTExLDkgKzExLDEwIEBACiAjaWZuZGVmIENPTU1P
Tl9BVURJT19TTU9PVEhJTkdfRklMVEVSX0hfCiAjZGVmaW5lIENPTU1PTl9BVURJT19TTU9PVEhJ
TkdfRklMVEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImFic2wvdHlw
ZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0j
aW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl9hdWRpby92YWQvdmFkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3ZhZC92YWQuY2MKaW5kZXggMWNiMzMyYTYx
ZDg4N2ZkMjRkYjE1YWVhNWI4YzFlYTdlODkxNWExMi4uOTg3ZWQ1MjZjMDBhOTc5M2NhOTdmY2Ez
MGIzMjQ4YmU2NmIwNjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3ZhZC92YWQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3ZhZC92YWQuY2MKQEAg
LTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgImNvbW1vbl9h
dWRpby92YWQvaW5jbHVkZS93ZWJydGNfdmFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxl
LmNjCmluZGV4IDAyMDlmNTJkMmM3MzU5MmVhYTYzZGEyNWYyYmQ5MWQzZTk3YmVlODUuLjkwYTg5
MjgxZTVjZDQ4ZGMyZTMyYzIwNTUzYzAwZjFkMWY4Nzg1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25f
YXVkaW8vd2F2X2ZpbGUuY2MKQEAgLTEwLDM1ICsxMCw0NSBAQAogCiAjaW5jbHVkZSAiY29tbW9u
X2F1ZGlvL3dhdl9maWxlLmgiCiAKKyNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5
cGVfdHJhaXRzPgogCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5o
IgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby93YXZfaGVhZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
eXN0ZW0vYXJjaC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7CiAKIC8vIFdl
IHdyaXRlIDE2LWJpdCBQQ00gV0FWIGZpbGVzLgotc3RhdGljIGNvbnN0IFdhdkZvcm1hdCBrV2F2
Rm9ybWF0ID0ga1dhdkZvcm1hdFBjbTsKLXN0YXRpYyBjb25zdCBzaXplX3Qga0J5dGVzUGVyU2Ft
cGxlID0gMjsKK2NvbnN0ZXhwciBXYXZGb3JtYXQga1dhdkZvcm1hdCA9IGtXYXZGb3JtYXRQY207
CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxXYXZGb3JtYXQ+
Ojp2YWx1ZSwgIiIpOworY29uc3RleHByIHNpemVfdCBrQnl0ZXNQZXJTYW1wbGUgPSAyOwogCiAv
LyBEb2Vzbid0IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBmaWxlIGhhbmRsZSBhbmQgd29uJ3QgY2xv
c2UgaXQuCiBjbGFzcyBSZWFkYWJsZVdhdkZpbGUgOiBwdWJsaWMgUmVhZGFibGVXYXYgewogIHB1
YmxpYzoKICAgZXhwbGljaXQgUmVhZGFibGVXYXZGaWxlKEZJTEUqIGZpbGUpIDogZmlsZV8oZmls
ZSkge30KKyAgUmVhZGFibGVXYXZGaWxlKGNvbnN0IFJlYWRhYmxlV2F2RmlsZSYpID0gZGVsZXRl
OworICBSZWFkYWJsZVdhdkZpbGUmIG9wZXJhdG9yPShjb25zdCBSZWFkYWJsZVdhdkZpbGUmKSA9
IGRlbGV0ZTsKICAgc2l6ZV90IFJlYWQodm9pZCogYnVmLCBzaXplX3QgbnVtX2J5dGVzKSBvdmVy
cmlkZSB7CiAgICAgcmV0dXJuIGZyZWFkKGJ1ZiwgMSwgbnVtX2J5dGVzLCBmaWxlXyk7CiAgIH0K
KyAgYm9vbCBFb2YoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmZW9mKGZpbGVfKSAhPSAwOyB9
CisgIGJvb2wgU2Vla0ZvcndhcmQodWludDMyX3QgbnVtX2J5dGVzKSBvdmVycmlkZSB7CisgICAg
cmV0dXJuIGZzZWVrKGZpbGVfLCBudW1fYnl0ZXMsIFNFRUtfQ1VSKSA9PSAwOworICB9CiAKICBw
cml2YXRlOgogICBGSUxFKiBmaWxlXzsKIH07CiAKK30gIC8vIG5hbWVzcGFjZQorCiBXYXZSZWFk
ZXI6OldhdlJlYWRlcihjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpCiAgICAgOiBXYXZSZWFk
ZXIocnRjOjpPcGVuUGxhdGZvcm1GaWxlUmVhZE9ubHkoZmlsZW5hbWUpKSB7fQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVk
aW8vd2F2X2hlYWRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCmluZGV4IDhmYzVmZWY1MDg1MjMwNjY4Mzc5
ZGVjMGYyOTQ3NjQzMDU1MmM2NzMuLmU0OWI3NDg5YjJlZmEzZWFlZDZhYmFlNmQ2YTcyNDMxMDBk
Y2VmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCkBAIC0xNCwx
MyArMTQsMTMgQEAKIAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby93YXZfaGVhZGVyLmgiCiAKLSNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxsaW1pdHM+
CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVk
aW9fdXRpbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zYW5pdGl6ZXIuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTMyLDYg
KzMyLDExIEBAIHN0cnVjdCBDaHVua0hlYWRlciB7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2Yo
Q2h1bmtIZWFkZXIpID09IDgsICJDaHVua0hlYWRlciBzaXplIik7CiAKK3N0cnVjdCBSaWZmSGVh
ZGVyIHsKKyAgQ2h1bmtIZWFkZXIgaGVhZGVyOworICB1aW50MzJfdCBGb3JtYXQ7Cit9OworCiAv
LyBXZSBjYW4ndCBuZXN0IHRoaXMgZGVmaW5pdGlvbiBpbiBXYXZIZWFkZXIsIGJlY2F1c2UgVlMy
MDEzIGdpdmVzIGFuIGVycm9yCiAvLyBvbiBzaXplb2YoV2F2SGVhZGVyOjpmbXQpOiAiZXJyb3Ig
QzIwNzA6ICd1bmtub3duJzogaWxsZWdhbCBzaXplb2Ygb3BlcmFuZCIuCiBzdHJ1Y3QgRm10U3Vi
Y2h1bmsgewpAQCAtNDYsMTEgKzUxLDEyIEBAIHN0cnVjdCBGbXRTdWJjaHVuayB7CiBzdGF0aWNf
YXNzZXJ0KHNpemVvZihGbXRTdWJjaHVuaykgPT0gMjQsICJGbXRTdWJjaHVuayBzaXplIik7CiBj
b25zdCB1aW50MzJfdCBrRm10U3ViY2h1bmtTaXplID0gc2l6ZW9mKEZtdFN1YmNodW5rKSAtIHNp
emVvZihDaHVua0hlYWRlcik7CiAKKy8vIFNpbXBsZSB3YXYgaGVhZGVyLiBJdCBkb2VzIG5vdCBp
bmNsdWRlIGNodW5rcyB0aGF0IGFyZSBub3QgZXNzZW50aWFsIHRvIHJlYWQKKy8vIGF1ZGlvIHNh
bXBsZXMuCiBzdHJ1Y3QgV2F2SGVhZGVyIHsKLSAgc3RydWN0IHsKLSAgICBDaHVua0hlYWRlciBo
ZWFkZXI7Ci0gICAgdWludDMyX3QgRm9ybWF0OwotICB9IHJpZmY7CisgIFdhdkhlYWRlcihjb25z
dCBXYXZIZWFkZXImKSA9IGRlZmF1bHQ7CisgIFdhdkhlYWRlciYgb3BlcmF0b3I9KGNvbnN0IFdh
dkhlYWRlciYpID0gZGVmYXVsdDsKKyAgUmlmZkhlYWRlciByaWZmOwogICBGbXRTdWJjaHVuayBm
bXQ7CiAgIHN0cnVjdCB7CiAgICAgQ2h1bmtIZWFkZXIgaGVhZGVyOwpAQCAtNTgsNiArNjQsODcg
QEAgc3RydWN0IFdhdkhlYWRlciB7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoV2F2SGVhZGVy
KSA9PSBrV2F2SGVhZGVyU2l6ZSwgIm5vIHBhZGRpbmcgaW4gaGVhZGVyIik7CiAKKyNpZmRlZiBX
RUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCitzdGF0aWMgaW5saW5lIHZvaWQgV3JpdGVMRTE2KHVp
bnQxNl90KiBmLCB1aW50MTZfdCB4KSB7CisgICpmID0geDsKK30KK3N0YXRpYyBpbmxpbmUgdm9p
ZCBXcml0ZUxFMzIodWludDMyX3QqIGYsIHVpbnQzMl90IHgpIHsKKyAgKmYgPSB4OworfQorc3Rh
dGljIGlubGluZSB2b2lkIFdyaXRlRm91ckNDKHVpbnQzMl90KiBmLCBjaGFyIGEsIGNoYXIgYiwg
Y2hhciBjLCBjaGFyIGQpIHsKKyAgKmYgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYSkgfCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oYikgPDwgOCB8CisgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGMpIDw8IDE2IHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGQpIDw8IDI0OworfQorCitzdGF0aWMg
aW5saW5lIHVpbnQxNl90IFJlYWRMRTE2KHVpbnQxNl90IHgpIHsKKyAgcmV0dXJuIHg7Cit9Citz
dGF0aWMgaW5saW5lIHVpbnQzMl90IFJlYWRMRTMyKHVpbnQzMl90IHgpIHsKKyAgcmV0dXJuIHg7
Cit9CitzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIFJlYWRGb3VyQ0ModWludDMyX3QgeCkgewor
ICByZXR1cm4gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJngpLCA0KTsKK30K
KyNlbHNlCisjZXJyb3IgIldyaXRlIGJlLXRvLWxlIGNvbnZlcnNpb24gZnVuY3Rpb25zIgorI2Vu
ZGlmCisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgUmlmZkNodW5rU2l6ZShzaXplX3QgYnl0ZXNf
aW5fcGF5bG9hZCkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJ5dGVzX2luX3Bh
eWxvYWQgKyBrV2F2SGVhZGVyU2l6ZSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZW9mKENodW5rSGVhZGVyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgQnl0ZVJh
dGUoc2l6ZV90IG51bV9jaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHNhbXBsZV9yYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
Ynl0ZXNfcGVyX3NhbXBsZSkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG51bV9j
aGFubmVscyAqIHNhbXBsZV9yYXRlICogYnl0ZXNfcGVyX3NhbXBsZSk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgdWludDE2X3QgQmxvY2tBbGlnbihzaXplX3QgbnVtX2NoYW5uZWxzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlc19wZXJfc2FtcGxlKSB7CisgIHJl
dHVybiBzdGF0aWNfY2FzdDx1aW50MTZfdD4obnVtX2NoYW5uZWxzICogYnl0ZXNfcGVyX3NhbXBs
ZSk7Cit9CisKKy8vIEZpbmRzIGEgY2h1bmsgaGF2aW5nIHRoZSBzb3VnaHQgSUQuIElmIGZvdW5k
LCB0aGVuIHxyZWFkYWJsZXwgcG9pbnRzIHRvIHRoZQorLy8gZmlyc3QgYnl0ZSBvZiB0aGUgc291
Z2h0IGNodW5rIGRhdGEuIElmIG5vdCBmb3VuZCwgdGhlIGVuZCBvZiB0aGUgZmlsZSBpcworLy8g
cmVhY2hlZC4KK3ZvaWQgRmluZFdhdmVDaHVuayhDaHVua0hlYWRlciogY2h1bmtfaGVhZGVyLAor
ICAgICAgICAgICAgICAgICAgIFJlYWRhYmxlV2F2KiByZWFkYWJsZSwKKyAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyBzb3VnaHRfY2h1bmtfaWQpIHsKKyAgUlRDX0RDSEVDS19F
UShzb3VnaHRfY2h1bmtfaWQuc2l6ZSgpLCA0KTsKKyAgd2hpbGUgKCFyZWFkYWJsZS0+RW9mKCkp
IHsKKyAgICBpZiAocmVhZGFibGUtPlJlYWQoY2h1bmtfaGVhZGVyLCBzaXplb2YoKmNodW5rX2hl
YWRlcikpICE9CisgICAgICAgIHNpemVvZigqY2h1bmtfaGVhZGVyKSkKKyAgICAgIHJldHVybjsg
IC8vIEVPRi4KKyAgICBpZiAoUmVhZEZvdXJDQyhjaHVua19oZWFkZXItPklEKSA9PSBzb3VnaHRf
Y2h1bmtfaWQpCisgICAgICByZXR1cm47ICAvLyBTb3VnaHQgY2h1bmsgZm91bmQuCisgICAgLy8g
SWdub3JlIGN1cnJlbnQgY2h1bmsgYnkgc2tpcHBpbmcgaXRzIHBheWxvYWQuCisgICAgaWYgKCFy
ZWFkYWJsZS0+U2Vla0ZvcndhcmQoY2h1bmtfaGVhZGVyLT5TaXplKSkKKyAgICAgIHJldHVybjsg
IC8vIEVPRiBvciBlcnJvci4KKyAgfQorICByZXR1cm47ICAvLyBFT0YuCit9CisKK2Jvb2wgUmVh
ZEZtdENodW5rRGF0YShGbXRTdWJjaHVuayogZm10X3N1YmNodW5rLCBSZWFkYWJsZVdhdiogcmVh
ZGFibGUpIHsKKyAgLy8gUmVhZHMgImZtdCAiIGNodW5rIHBheWxvYWQuCisgIGlmIChyZWFkYWJs
ZS0+UmVhZCgmKGZtdF9zdWJjaHVuay0+QXVkaW9Gb3JtYXQpLCBrRm10U3ViY2h1bmtTaXplKSAh
PQorICAgICAga0ZtdFN1YmNodW5rU2l6ZSkKKyAgICByZXR1cm4gZmFsc2U7CisgIGNvbnN0IHVp
bnQzMl90IGZtdF9zaXplID0gUmVhZExFMzIoZm10X3N1YmNodW5rLT5oZWFkZXIuU2l6ZSk7Cisg
IGlmIChmbXRfc2l6ZSAhPSBrRm10U3ViY2h1bmtTaXplKSB7CisgICAgLy8gVGhlcmUgaXMgYW4g
b3B0aW9uYWwgdHdvLWJ5dGUgZXh0ZW5zaW9uIGZpZWxkIHBlcm1pdHRlZCB0byBiZSBwcmVzZW50
CisgICAgLy8gd2l0aCBQQ00sIGJ1dCB3aGljaCBtdXN0IGJlIHplcm8uCisgICAgaW50MTZfdCBl
eHRfc2l6ZTsKKyAgICBpZiAoa0ZtdFN1YmNodW5rU2l6ZSArIHNpemVvZihleHRfc2l6ZSkgIT0g
Zm10X3NpemUpCisgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJlYWRhYmxlLT5SZWFkKCZl
eHRfc2l6ZSwgc2l6ZW9mKGV4dF9zaXplKSkgIT0gc2l6ZW9mKGV4dF9zaXplKSkKKyAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoZXh0X3NpemUgIT0gMCkKKyAgICAgIHJldHVybiBmYWxzZTsK
KyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIGJvb2wgQ2hlY2tX
YXZQYXJhbWV0ZXJzKHNpemVfdCBudW1fY2hhbm5lbHMsCkBAIC0xMTIsNDcgKzE5OSw2IEBAIGJv
b2wgQ2hlY2tXYXZQYXJhbWV0ZXJzKHNpemVfdCBudW1fY2hhbm5lbHMsCiAgIHJldHVybiB0cnVl
OwogfQogCi0jaWZkZWYgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgotc3RhdGljIGlubGluZSB2
b2lkIFdyaXRlTEUxNih1aW50MTZfdCogZiwgdWludDE2X3QgeCkgewotICAqZiA9IHg7Ci19Ci1z
dGF0aWMgaW5saW5lIHZvaWQgV3JpdGVMRTMyKHVpbnQzMl90KiBmLCB1aW50MzJfdCB4KSB7Ci0g
ICpmID0geDsKLX0KLXN0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUZvdXJDQyh1aW50MzJfdCogZiwg
Y2hhciBhLCBjaGFyIGIsIGNoYXIgYywgY2hhciBkKSB7Ci0gICpmID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGEpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGIpIDw8IDggfAotICAgICAgIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihjKSA8PCAxNiB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihkKSA8PCAy
NDsKLX0KLQotc3RhdGljIGlubGluZSB1aW50MTZfdCBSZWFkTEUxNih1aW50MTZfdCB4KSB7Ci0g
IHJldHVybiB4OwotfQotc3RhdGljIGlubGluZSB1aW50MzJfdCBSZWFkTEUzMih1aW50MzJfdCB4
KSB7Ci0gIHJldHVybiB4OwotfQotc3RhdGljIGlubGluZSBzdGQ6OnN0cmluZyBSZWFkRm91ckND
KHVpbnQzMl90IHgpIHsKLSAgcmV0dXJuIHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KCZ4KSwgNCk7Ci19Ci0jZWxzZQotI2Vycm9yICJXcml0ZSBiZS10by1sZSBjb252ZXJzaW9u
IGZ1bmN0aW9ucyIKLSNlbmRpZgotCi1zdGF0aWMgaW5saW5lIHVpbnQzMl90IFJpZmZDaHVua1Np
emUoc2l6ZV90IGJ5dGVzX2luX3BheWxvYWQpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihieXRlc19pbl9wYXlsb2FkICsga1dhdkhlYWRlclNpemUgLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVvZihDaHVua0hlYWRlcikpOwotfQotCi1zdGF0aWMgaW5saW5l
IHVpbnQzMl90IEJ5dGVSYXRlKHNpemVfdCBudW1fY2hhbm5lbHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGJ5dGVzX3Blcl9zYW1wbGUpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0
PHVpbnQzMl90PihudW1fY2hhbm5lbHMgKiBzYW1wbGVfcmF0ZSAqIGJ5dGVzX3Blcl9zYW1wbGUp
OwotfQotCi1zdGF0aWMgaW5saW5lIHVpbnQxNl90IEJsb2NrQWxpZ24oc2l6ZV90IG51bV9jaGFu
bmVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnl0ZXNfcGVy
X3NhbXBsZSkgewotICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KG51bV9jaGFubmVscyAq
IGJ5dGVzX3Blcl9zYW1wbGUpOwotfQotCiB2b2lkIFdyaXRlV2F2SGVhZGVyKHVpbnQ4X3QqIGJ1
ZiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9jaGFubmVscywKICAgICAgICAgICAg
ICAgICAgICAgaW50IHNhbXBsZV9yYXRlLApAQCAtMTYyLDcgKzIwOCw3IEBAIHZvaWQgV3JpdGVX
YXZIZWFkZXIodWludDhfdCogYnVmLAogICBSVENfQ0hFQ0soQ2hlY2tXYXZQYXJhbWV0ZXJzKG51
bV9jaGFubmVscywgc2FtcGxlX3JhdGUsIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBieXRlc19wZXJfc2FtcGxlLCBudW1fc2FtcGxlcykpOwogCi0gIFdhdkhlYWRlciBo
ZWFkZXI7CisgIGF1dG8gaGVhZGVyID0gcnRjOjpNc2FuVW5pbml0aWFsaXplZDxXYXZIZWFkZXI+
KHt9KTsKICAgY29uc3Qgc2l6ZV90IGJ5dGVzX2luX3BheWxvYWQgPSBieXRlc19wZXJfc2FtcGxl
ICogbnVtX3NhbXBsZXM7CiAKICAgV3JpdGVGb3VyQ0MoJmhlYWRlci5yaWZmLmhlYWRlci5JRCwg
J1InLCAnSScsICdGJywgJ0YnKTsKQEAgLTE5NCwyNSArMjQwLDM4IEBAIGJvb2wgUmVhZFdhdkhl
YWRlcihSZWFkYWJsZVdhdiogcmVhZGFibGUsCiAgICAgICAgICAgICAgICAgICAgV2F2Rm9ybWF0
KiBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc19wZXJfc2FtcGxlLAog
ICAgICAgICAgICAgICAgICAgIHNpemVfdCogbnVtX3NhbXBsZXMpIHsKLSAgV2F2SGVhZGVyIGhl
YWRlcjsKLSAgaWYgKHJlYWRhYmxlLT5SZWFkKCZoZWFkZXIsIGtXYXZIZWFkZXJTaXplIC0gc2l6
ZW9mKGhlYWRlci5kYXRhKSkgIT0KLSAgICAgIGtXYXZIZWFkZXJTaXplIC0gc2l6ZW9mKGhlYWRl
ci5kYXRhKSkKKyAgYXV0byBoZWFkZXIgPSBydGM6Ok1zYW5VbmluaXRpYWxpemVkPFdhdkhlYWRl
cj4oe30pOworCisgIC8vIFJlYWQgUklGRiBjaHVuay4KKyAgaWYgKHJlYWRhYmxlLT5SZWFkKCZo
ZWFkZXIucmlmZiwgc2l6ZW9mKGhlYWRlci5yaWZmKSkgIT0gc2l6ZW9mKGhlYWRlci5yaWZmKSkK
KyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChSZWFkRm91ckNDKGhlYWRlci5yaWZmLmhlYWRlci5J
RCkgIT0gIlJJRkYiKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKFJlYWRGb3VyQ0MoaGVhZGVy
LnJpZmYuRm9ybWF0KSAhPSAiV0FWRSIpCiAgICAgcmV0dXJuIGZhbHNlOwogCi0gIGNvbnN0IHVp
bnQzMl90IGZtdF9zaXplID0gUmVhZExFMzIoaGVhZGVyLmZtdC5oZWFkZXIuU2l6ZSk7Ci0gIGlm
IChmbXRfc2l6ZSAhPSBrRm10U3ViY2h1bmtTaXplKSB7Ci0gICAgLy8gVGhlcmUgaXMgYW4gb3B0
aW9uYWwgdHdvLWJ5dGUgZXh0ZW5zaW9uIGZpZWxkIHBlcm1pdHRlZCB0byBiZSBwcmVzZW50Ci0g
ICAgLy8gd2l0aCBQQ00sIGJ1dCB3aGljaCBtdXN0IGJlIHplcm8uCi0gICAgaW50MTZfdCBleHRf
c2l6ZTsKLSAgICBpZiAoa0ZtdFN1YmNodW5rU2l6ZSArIHNpemVvZihleHRfc2l6ZSkgIT0gZm10
X3NpemUpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHJlYWRhYmxlLT5SZWFkKCZleHRf
c2l6ZSwgc2l6ZW9mKGV4dF9zaXplKSkgIT0gc2l6ZW9mKGV4dF9zaXplKSkKLSAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoZXh0X3NpemUgIT0gMCkKLSAgICAgIHJldHVybiBmYWxzZTsKKyAg
Ly8gRmluZCAiZm10ICIgYW5kICJkYXRhIiBjaHVua3MuIFdoaWxlIHRoZSBvZmZpY2lhbCBXYXZl
IGZpbGUgc3BlY2lmaWNhdGlvbgorICAvLyBkb2VzIG5vdCBwdXQgcmVxdWlyZW1lbnRzIG9uIHRo
ZSBjaHVua3Mgb3JkZXIsIGl0IGlzIHVuY29tbW9uIHRvIGZpbmQgdGhlCisgIC8vICJkYXRhIiBj
aHVuayBiZWZvcmUgdGhlICJmbXQgIiBvbmUuIFRoZSBjb2RlIGJlbG93IGZhaWxzIGlmIHRoaXMg
aXMgbm90IHRoZQorICAvLyBjYXNlLgorICBGaW5kV2F2ZUNodW5rKCZoZWFkZXIuZm10LmhlYWRl
ciwgcmVhZGFibGUsICJmbXQgIik7CisgIGlmIChSZWFkRm91ckNDKGhlYWRlci5mbXQuaGVhZGVy
LklEKSAhPSAiZm10ICIpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ2Fubm90IGZpbmQg
J2ZtdCAnIGNodW5rLiI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmICghUmVhZEZtdENo
dW5rRGF0YSgmaGVhZGVyLmZtdCwgcmVhZGFibGUpKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIkNhbm5vdCByZWFkICdmbXQgJyBjaHVuay4iOworICAgIHJldHVybiBmYWxzZTsKKyAgfQor
ICBpZiAocmVhZGFibGUtPkVvZigpKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIidmbXQg
JyBjaHVuayBwbGFjZWQgYWZ0ZXIgJ2RhdGEnIGNodW5rLiI7CisgICAgcmV0dXJuIGZhbHNlOwog
ICB9Ci0gIGlmIChyZWFkYWJsZS0+UmVhZCgmaGVhZGVyLmRhdGEsIHNpemVvZihoZWFkZXIuZGF0
YSkpICE9IHNpemVvZihoZWFkZXIuZGF0YSkpCisgIEZpbmRXYXZlQ2h1bmsoJmhlYWRlci5kYXRh
LmhlYWRlciwgcmVhZGFibGUsICJkYXRhIik7CisgIGlmIChSZWFkRm91ckNDKGhlYWRlci5kYXRh
LmhlYWRlci5JRCkgIT0gImRhdGEiKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbm5v
dCBmaW5kICdkYXRhJyBjaHVuay4iOwogICAgIHJldHVybiBmYWxzZTsKKyAgfQogCiAgIC8vIFBh
cnNlIG5lZWRlZCBmaWVsZHMuCiAgICpmb3JtYXQgPSBzdGF0aWNfY2FzdDxXYXZGb3JtYXQ+KFJl
YWRMRTE2KGhlYWRlci5mbXQuQXVkaW9Gb3JtYXQpKTsKQEAgLTIyNCwxNiArMjgzLDYgQEAgYm9v
bCBSZWFkV2F2SGVhZGVyKFJlYWRhYmxlV2F2KiByZWFkYWJsZSwKICAgICByZXR1cm4gZmFsc2U7
CiAgICpudW1fc2FtcGxlcyA9IGJ5dGVzX2luX3BheWxvYWQgLyAqYnl0ZXNfcGVyX3NhbXBsZTsK
IAotICAvLyBTYW5pdHkgY2hlY2sgcmVtYWluaW5nIGZpZWxkcy4KLSAgaWYgKFJlYWRGb3VyQ0Mo
aGVhZGVyLnJpZmYuaGVhZGVyLklEKSAhPSAiUklGRiIpCi0gICAgcmV0dXJuIGZhbHNlOwotICBp
ZiAoUmVhZEZvdXJDQyhoZWFkZXIucmlmZi5Gb3JtYXQpICE9ICJXQVZFIikKLSAgICByZXR1cm4g
ZmFsc2U7Ci0gIGlmIChSZWFkRm91ckNDKGhlYWRlci5mbXQuaGVhZGVyLklEKSAhPSAiZm10ICIp
Ci0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoUmVhZEZvdXJDQyhoZWFkZXIuZGF0YS5oZWFkZXIu
SUQpICE9ICJkYXRhIikKLSAgICByZXR1cm4gZmFsc2U7Ci0KICAgaWYgKFJlYWRMRTMyKGhlYWRl
ci5yaWZmLmhlYWRlci5TaXplKSA8IFJpZmZDaHVua1NpemUoYnl0ZXNfaW5fcGF5bG9hZCkpCiAg
ICAgcmV0dXJuIGZhbHNlOwogICBpZiAoUmVhZExFMzIoaGVhZGVyLmZtdC5CeXRlUmF0ZSkgIT0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl9hdWRpby93YXZfaGVhZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5oCmluZGV4IDg3MmQzYWJjZTVjYTRj
ZGM5NDBjYTkxNDQwNDQxZTcyMzdiY2JlMGIuLmE1MTliYTU1NmY1NGYwMzY1NDk0YmViNjM3ZDhk
NmI3YmEyNDk2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFkZXIuaApAQCAt
MjEsOCArMjEsMTEgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrV2F2SGVhZGVyU2l6ZSA9IDQ0Owog
Y2xhc3MgUmVhZGFibGVXYXYgewogIHB1YmxpYzoKICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9m
IGJ5dGVzIHJlYWQuCi0gIHNpemVfdCB2aXJ0dWFsIFJlYWQodm9pZCogYnVmLCBzaXplX3QgbnVt
X2J5dGVzKSA9IDA7Ci0gIHZpcnR1YWwgflJlYWRhYmxlV2F2KCkge30KKyAgdmlydHVhbCBzaXpl
X3QgUmVhZCh2b2lkKiBidWYsIHNpemVfdCBudW1fYnl0ZXMpID0gMDsKKyAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBlbmQtb2YtZmlsZSBoYXMgYmVlbiByZWFjaGVkLgorICB2aXJ0dWFsIGJvb2wg
RW9mKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIGJvb2wgU2Vla0ZvcndhcmQodWludDMyX3QgbnVt
X2J5dGVzKSA9IDA7CisgIHZpcnR1YWwgflJlYWRhYmxlV2F2KCkgPSBkZWZhdWx0OwogfTsKIAog
ZW51bSBXYXZGb3JtYXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFkZXJfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hl
YWRlcl91bml0dGVzdC5jYwppbmRleCBiNzE2OWI1M2M4ZjFiMWExYzFjNGZkMjRiY2RlODYwYjQx
MDgxN2VlLi4yZTJlZGE1YTZmMmQwOGYyM2NmYmE1ZGNkNDlmOWMzZmM1YTdhMGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVk
aW8vd2F2X2hlYWRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlcl91bml0dGVzdC5jYwpAQCAt
MTksMTIgKzE5LDYgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyBEb2Vzbid0IHRha2Ugb3duZXJz
aGlwIG9mIHRoZSBidWZmZXIuCiBjbGFzcyBSZWFkYWJsZVdhdkJ1ZmZlciA6IHB1YmxpYyBSZWFk
YWJsZVdhdiB7CiAgcHVibGljOgotICBSZWFkYWJsZVdhdkJ1ZmZlcihjb25zdCB1aW50OF90KiBi
dWYsIHNpemVfdCBzaXplKQotICAgICAgOiBidWZfKGJ1ZiksCi0gICAgICAgIHNpemVfKHNpemUp
LAotICAgICAgICBwb3NfKDApLAotICAgICAgICBidWZfZXhoYXVzdGVkXyhmYWxzZSksCi0gICAg
ICAgIGNoZWNrX3JlYWRfc2l6ZV8odHJ1ZSkge30KICAgUmVhZGFibGVXYXZCdWZmZXIoY29uc3Qg
dWludDhfdCogYnVmLCBzaXplX3Qgc2l6ZSwgYm9vbCBjaGVja19yZWFkX3NpemUpCiAgICAgICA6
IGJ1Zl8oYnVmKSwKICAgICAgICAgc2l6ZV8oc2l6ZSksCkBAIC01Nyw2ICs1MSwyNyBAQCBjbGFz
cyBSZWFkYWJsZVdhdkJ1ZmZlciA6IHB1YmxpYyBSZWFkYWJsZVdhdiB7CiAgICAgcmV0dXJuIG51
bV9ieXRlczsKICAgfQogCisgIGJvb2wgRW9mKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcG9z
XyA9PSBzaXplXzsgfQorCisgIGJvb2wgU2Vla0ZvcndhcmQodWludDMyX3QgbnVtX2J5dGVzKSBv
dmVycmlkZSB7CisgICAgLy8gVmVyaWZ5IHdlIGRvbid0IHRyeSB0byByZWFkIG91dHNpZGUgb2Yg
YSBwcm9wZXJseSBzaXplZCBoZWFkZXIuCisgICAgaWYgKHNpemVfID49IGtXYXZIZWFkZXJTaXpl
KQorICAgICAgRVhQRUNUX0dFKHNpemVfLCBwb3NfICsgbnVtX2J5dGVzKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoYnVmX2V4aGF1c3RlZF8pOworCisgICAgY29uc3Qgc2l6ZV90IGJ5dGVzX3JlbWFpbmlu
ZyA9IHNpemVfIC0gcG9zXzsKKyAgICBpZiAobnVtX2J5dGVzID4gYnl0ZXNfcmVtYWluaW5nKSB7
CisgICAgICAvLyBFcnJvcjogY2Fubm90IHNlZWsgYmV5b25kIEVPRi4KKyAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgaWYgKG51bV9ieXRlcyA9PSBieXRlc19yZW1haW5pbmcpIHsKKyAg
ICAgIC8vIFRoZXJlIHNob3VsZCBub3QgYmUgYW5vdGhlciByZWFkIGF0dGVtcHQgYWZ0ZXIgdGhp
cyBwb2ludC4KKyAgICAgIGJ1Zl9leGhhdXN0ZWRfID0gdHJ1ZTsKKyAgICB9CisgICAgcG9zXyAr
PSBudW1fYnl0ZXM7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKwogIHByaXZhdGU6CiAgIGNvbnN0
IHVpbnQ4X3QqIGJ1Zl87CiAgIGNvbnN0IHNpemVfdCBzaXplXzsKQEAgLTEwMyw3ICsxMTgsNyBA
QCBURVNUKFdhdkhlYWRlclRlc3QsIFJlYWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7CiAgIC8vIGlu
dmFsaWQgZmllbGQgaXMgaW5kaWNhdGVkIGluIHRoZSBhcnJheSBuYW1lLCBhbmQgaW4gdGhlIGNv
bW1lbnRzIHdpdGgKICAgLy8gKkJBRCouCiAgIHsKLSAgICBzdGF0aWMgY29uc3QgdWludDhfdCBr
QmFkUmlmZklEW10gPSB7CisgICAgY29uc3RleHByIHVpbnQ4X3Qga0JhZFJpZmZJRFtdID0gewog
ICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcg
ZG9lc24ndCByZXNwZWN0IGlubGluZSBjb21tZW50cy4KICAgICAgICdSJywgJ2knLCAnZicsICdm
JywgIC8vICpCQUQqCkBAIC0xMjEsMTIgKzEzNiwxMyBAQCBURVNUKFdhdkhlYWRlclRlc3QsIFJl
YWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7CiAgICAgICAweDk5LCAweGQwLCAweDViLCAweDA3LCAg
Ly8gc2l6ZSBvZiBwYXlsb2FkOiAxMjM0NTc2ODkKICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9u
CiAgICAgfTsKLSAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtCYWRSaWZmSUQsIHNpemVvZihrQmFk
UmlmZklEKSk7CisgICAgUmVhZGFibGVXYXZCdWZmZXIgcihrQmFkUmlmZklELCBzaXplb2Yoa0Jh
ZFJpZmZJRCksCisgICAgICAgICAgICAgICAgICAgICAgICAvKmNoZWNrX3JlYWRfc2l6ZT0qL2Zh
bHNlKTsKICAgICBFWFBFQ1RfRkFMU0UoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFubmVscywg
JnNhbXBsZV9yYXRlLCAmZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZi
eXRlc19wZXJfc2FtcGxlLCAmbnVtX3NhbXBsZXMpKTsKICAgfQogICB7Ci0gICAgc3RhdGljIGNv
bnN0IHVpbnQ4X3Qga0JhZEJpdHNQZXJTYW1wbGVbXSA9IHsKKyAgICBjb25zdGV4cHIgdWludDhf
dCBrQmFkQml0c1BlclNhbXBsZVtdID0gewogICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAg
ICAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGluZSBjb21tZW50
cy4KICAgICAgICdSJywgJ0knLCAnRicsICdGJywKQEAgLTE0NCwxMiArMTYwLDEzIEBAIFRFU1Qo
V2F2SGVhZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhFcnJvcnMpIHsKICAgICAgIDB4OTksIDB4
ZDAsIDB4NWIsIDB4MDcsICAvLyBzaXplIG9mIHBheWxvYWQ6IDEyMzQ1NzY4OQogICAgICAgICAv
LyBjbGFuZy1mb3JtYXQgb24KICAgICB9OwotICAgIFJlYWRhYmxlV2F2QnVmZmVyIHIoa0JhZEJp
dHNQZXJTYW1wbGUsIHNpemVvZihrQmFkQml0c1BlclNhbXBsZSkpOworICAgIFJlYWRhYmxlV2F2
QnVmZmVyIHIoa0JhZEJpdHNQZXJTYW1wbGUsIHNpemVvZihrQmFkQml0c1BlclNhbXBsZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAvKmNoZWNrX3JlYWRfc2l6ZT0qL3RydWUpOwogICAgIEVY
UEVDVF9GQUxTRShSZWFkV2F2SGVhZGVyKCZyLCAmbnVtX2NoYW5uZWxzLCAmc2FtcGxlX3JhdGUs
ICZmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVzX3Blcl9zYW1w
bGUsICZudW1fc2FtcGxlcykpOwogICB9CiAgIHsKLSAgICBzdGF0aWMgY29uc3QgdWludDhfdCBr
QmFkQnl0ZVJhdGVbXSA9IHsKKyAgICBjb25zdGV4cHIgdWludDhfdCBrQmFkQnl0ZVJhdGVbXSA9
IHsKICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgICAgICAvLyBjbGFuZyBmb3JtYXR0
aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxpbmUgY29tbWVudHMuCiAgICAgICAnUicsICdJJywgJ0Yn
LCAnRicsCkBAIC0xNjcsMTIgKzE4NCwxMyBAQCBURVNUKFdhdkhlYWRlclRlc3QsIFJlYWRXYXZI
ZWFkZXJXaXRoRXJyb3JzKSB7CiAgICAgICAweDk5LCAweGQwLCAweDViLCAweDA3LCAgLy8gc2l6
ZSBvZiBwYXlsb2FkOiAxMjM0NTc2ODkKICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAgICAg
fTsKLSAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtCYWRCeXRlUmF0ZSwgc2l6ZW9mKGtCYWRCeXRl
UmF0ZSkpOworICAgIFJlYWRhYmxlV2F2QnVmZmVyIHIoa0JhZEJ5dGVSYXRlLCBzaXplb2Yoa0Jh
ZEJ5dGVSYXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qY2hlY2tfcmVhZF9zaXplPSov
dHJ1ZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFJlYWRXYXZIZWFkZXIoJnIsICZudW1fY2hhbm5lbHMs
ICZzYW1wbGVfcmF0ZSwgJmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
Ynl0ZXNfcGVyX3NhbXBsZSwgJm51bV9zYW1wbGVzKSk7CiAgIH0KICAgewotICAgIHN0YXRpYyBj
b25zdCB1aW50OF90IGtCYWRGbXRIZWFkZXJTaXplW10gPSB7CisgICAgY29uc3RleHByIHVpbnQ4
X3Qga0JhZEZtdEhlYWRlclNpemVbXSA9IHsKICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgog
ICAgICAgICAvLyBjbGFuZyBmb3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxpbmUgY29tbWVu
dHMuCiAgICAgICAnUicsICdJJywgJ0YnLCAnRicsCkBAIC0xOTEsMTIgKzIwOSwxMyBAQCBURVNU
KFdhdkhlYWRlclRlc3QsIFJlYWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7CiAgICAgICAweDk5LCAw
eGQwLCAweDViLCAweDA3LCAgLy8gc2l6ZSBvZiBwYXlsb2FkOiAxMjM0NTc2ODkKICAgICAgICAg
Ly8gY2xhbmctZm9ybWF0IG9uCiAgICAgfTsKLSAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtCYWRG
bXRIZWFkZXJTaXplLCBzaXplb2Yoa0JhZEZtdEhlYWRlclNpemUpLCBmYWxzZSk7CisgICAgUmVh
ZGFibGVXYXZCdWZmZXIgcihrQmFkRm10SGVhZGVyU2l6ZSwgc2l6ZW9mKGtCYWRGbXRIZWFkZXJT
aXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qY2hlY2tfcmVhZF9zaXplPSovZmFsc2Up
OwogICAgIEVYUEVDVF9GQUxTRShSZWFkV2F2SGVhZGVyKCZyLCAmbnVtX2NoYW5uZWxzLCAmc2Ft
cGxlX3JhdGUsICZmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVz
X3Blcl9zYW1wbGUsICZudW1fc2FtcGxlcykpOwogICB9CiAgIHsKLSAgICBzdGF0aWMgY29uc3Qg
dWludDhfdCBrTm9uWmVyb0V4dGVuc2lvbkZpZWxkW10gPSB7CisgICAgY29uc3RleHByIHVpbnQ4
X3Qga05vblplcm9FeHRlbnNpb25GaWVsZFtdID0gewogICAgICAgICAvLyBjbGFuZy1mb3JtYXQg
b2ZmCiAgICAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGluZSBj
b21tZW50cy4KICAgICAgICdSJywgJ0knLCAnRicsICdGJywKQEAgLTIxNiwxMiArMjM1LDEyIEBA
IFRFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhFcnJvcnMpIHsKICAgICAgICAg
Ly8gY2xhbmctZm9ybWF0IG9uCiAgICAgfTsKICAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtOb25a
ZXJvRXh0ZW5zaW9uRmllbGQsIHNpemVvZihrTm9uWmVyb0V4dGVuc2lvbkZpZWxkKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qY2hl
Y2tfcmVhZF9zaXplPSovZmFsc2UpOwogICAgIEVYUEVDVF9GQUxTRShSZWFkV2F2SGVhZGVyKCZy
LCAmbnVtX2NoYW5uZWxzLCAmc2FtcGxlX3JhdGUsICZmb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmJ5dGVzX3Blcl9zYW1wbGUsICZudW1fc2FtcGxlcykpOwogICB9CiAg
IHsKLSAgICBzdGF0aWMgY29uc3QgdWludDhfdCBrTWlzc2luZ0RhdGFDaHVua1tdID0geworICAg
IGNvbnN0ZXhwciB1aW50OF90IGtNaXNzaW5nRGF0YUNodW5rW10gPSB7CiAgICAgICAgIC8vIGNs
YW5nLWZvcm1hdCBvZmYKICAgICAgICAgLy8gY2xhbmcgZm9ybWF0dGluZyBkb2Vzbid0IHJlc3Bl
Y3QgaW5saW5lIGNvbW1lbnRzLgogICAgICAgJ1InLCAnSScsICdGJywgJ0YnLApAQCAtMjM3LDEy
ICsyNTYsMTMgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkV2F2SGVhZGVyV2l0aEVycm9ycykg
ewogICAgICAgOCwgMCwgIC8vIGJpdHMgcGVyIHNhbXBsZTogMSAqIDgKICAgICAgICAgLy8gY2xh
bmctZm9ybWF0IG9uCiAgICAgfTsKLSAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtNaXNzaW5nRGF0
YUNodW5rLCBzaXplb2Yoa01pc3NpbmdEYXRhQ2h1bmspKTsKKyAgICBSZWFkYWJsZVdhdkJ1ZmZl
ciByKGtNaXNzaW5nRGF0YUNodW5rLCBzaXplb2Yoa01pc3NpbmdEYXRhQ2h1bmspLAorICAgICAg
ICAgICAgICAgICAgICAgICAgLypjaGVja19yZWFkX3NpemU9Ki90cnVlKTsKICAgICBFWFBFQ1Rf
RkFMU0UoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFubmVscywgJnNhbXBsZV9yYXRlLCAmZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc19wZXJfc2FtcGxlLCAm
bnVtX3NhbXBsZXMpKTsKICAgfQogICB7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qga01pc3Np
bmdGbXRBbmREYXRhQ2h1bmtzW10gPSB7CisgICAgY29uc3RleHByIHVpbnQ4X3Qga01pc3NpbmdG
bXRBbmREYXRhQ2h1bmtzW10gPSB7CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKICAgICAg
ICAgLy8gY2xhbmcgZm9ybWF0dGluZyBkb2Vzbid0IHJlc3BlY3QgaW5saW5lIGNvbW1lbnRzLgog
ICAgICAgJ1InLCAnSScsICdGJywgJ0YnLApAQCAtMjUxLDcgKzI3MSw4IEBAIFRFU1QoV2F2SGVh
ZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhFcnJvcnMpIHsKICAgICAgICAgLy8gY2xhbmctZm9y
bWF0IG9uCiAgICAgfTsKICAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtNaXNzaW5nRm10QW5kRGF0
YUNodW5rcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrTWlzc2luZ0ZtdEFuZERh
dGFDaHVua3MpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrTWlzc2luZ0ZtdEFu
ZERhdGFDaHVua3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgLypjaGVja19yZWFkX3NpemU9
Ki90cnVlKTsKICAgICBFWFBFQ1RfRkFMU0UoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFubmVs
cywgJnNhbXBsZV9yYXRlLCAmZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZieXRlc19wZXJfc2FtcGxlLCAmbnVtX3NhbXBsZXMpKTsKICAgfQpAQCAtMjU5LDExICsyODAs
MTEgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkV2F2SGVhZGVyV2l0aEVycm9ycykgewogCiAv
LyBUcnkgd3JpdGluZyBhbmQgcmVhZGluZyBhIHZhbGlkIFdBViBoZWFkZXIgYW5kIG1ha2Ugc3Vy
ZSBpdCBsb29rcyBPSy4KIFRFU1QoV2F2SGVhZGVyVGVzdCwgV3JpdGVBbmRSZWFkV2F2SGVhZGVy
KSB7Ci0gIHN0YXRpYyBjb25zdCBpbnQga1NpemUgPSA0ICsga1dhdkhlYWRlclNpemUgKyA0Owor
ICBjb25zdGV4cHIgaW50IGtTaXplID0gNCArIGtXYXZIZWFkZXJTaXplICsgNDsKICAgdWludDhf
dCBidWZba1NpemVdOwogICBtZW1zZXQoYnVmLCAweGE0LCBzaXplb2YoYnVmKSk7CiAgIFdyaXRl
V2F2SGVhZGVyKGJ1ZiArIDQsIDE3LCAxMjM0NSwga1dhdkZvcm1hdEFMYXcsIDEsIDEyMzQ1NzY4
OSk7Ci0gIHN0YXRpYyBjb25zdCB1aW50OF90IGtFeHBlY3RlZEJ1ZltdID0geworICBjb25zdGV4
cHIgdWludDhfdCBrRXhwZWN0ZWRCdWZbXSA9IHsKICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYK
ICAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGluZSBjb21tZW50
cy4KICAgICAweGE0LCAweGE0LCAweGE0LCAweGE0LCAgLy8gdW50b3VjaGVkIGJ5dGVzIGJlZm9y
ZSBoZWFkZXIKQEAgLTI5MSw3ICszMTIsOCBAQCBURVNUKFdhdkhlYWRlclRlc3QsIFdyaXRlQW5k
UmVhZFdhdkhlYWRlcikgewogICBXYXZGb3JtYXQgZm9ybWF0ID0ga1dhdkZvcm1hdFBjbTsKICAg
c2l6ZV90IGJ5dGVzX3Blcl9zYW1wbGUgPSAwOwogICBzaXplX3QgbnVtX3NhbXBsZXMgPSAwOwot
ICBSZWFkYWJsZVdhdkJ1ZmZlciByKGJ1ZiArIDQsIHNpemVvZihidWYpIC0gOCk7CisgIFJlYWRh
YmxlV2F2QnVmZmVyIHIoYnVmICsgNCwgc2l6ZW9mKGJ1ZikgLSA4LAorICAgICAgICAgICAgICAg
ICAgICAgIC8qY2hlY2tfcmVhZF9zaXplPSovdHJ1ZSk7CiAgIEVYUEVDVF9UUlVFKFJlYWRXYXZI
ZWFkZXIoJnIsICZudW1fY2hhbm5lbHMsICZzYW1wbGVfcmF0ZSwgJmZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmYnl0ZXNfcGVyX3NhbXBsZSwgJm51bV9zYW1wbGVzKSk7CiAg
IEVYUEVDVF9FUSgxN3UsIG51bV9jaGFubmVscyk7CkBAIC0zMDMsMjQgKzMyNSw2NyBAQCBURVNU
KFdhdkhlYWRlclRlc3QsIFdyaXRlQW5kUmVhZFdhdkhlYWRlcikgewogCiAvLyBUcnkgcmVhZGlu
ZyBhbiBhdHlwaWNhbCBidXQgdmFsaWQgV0FWIGhlYWRlciBhbmQgbWFrZSBzdXJlIGl0J3MgcGFy
c2VkIE9LLgogVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkQXR5cGljYWxXYXZIZWFkZXIpIHsKLSAg
c3RhdGljIGNvbnN0IHVpbnQ4X3Qga0J1ZltdID0geworICBjb25zdGV4cHIgdWludDhfdCBrQnVm
W10gPSB7CiAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgICAvLyBjbGFuZyBmb3JtYXR0
aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxpbmUgY29tbWVudHMuCiAgICAgJ1InLCAnSScsICdGJywg
J0YnLAotICAgIDB4M2QsIDB4ZDEsIDB4NWIsIDB4MDcsICAvLyBzaXplIG9mIHdob2xlIGZpbGUg
LSA4ICsgYW4gZXh0cmEgMTI4IGJ5dGVzIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vICJtZXRhZGF0YSI6IDEyMzQ1NzY4OSArIDQ0IC0gOCArIDEyOC4gKGF0eXBpY2FsKQorICAg
IDB4YmYsIDB4ZDAsIDB4NWIsIDB4MDcsICAvLyBTaXplIG9mIHdob2xlIGZpbGUgLSA4ICsgZXh0
cmEgMiBieXRlcyBvZiB6ZXJvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4dGVu
c2lvbjogMTIzNDU3Njg5ICsgNDQgLSA4ICsgMiAoYXR5cGljYWwpLgogICAgICdXJywgJ0EnLCAn
VicsICdFJywKICAgICAnZicsICdtJywgJ3QnLCAnICcsCi0gICAgMTgsIDAsIDAsIDAsICAvLyBz
aXplIG9mIGZtdCBibG9jayAod2l0aCBhbiBhdHlwaWNhbCBleHRlbnNpb24gc2l6ZSBmaWVsZCkK
LSAgICA2LCAwLCAgLy8gZm9ybWF0OiBBLWxhdyAoNikKLSAgICAxNywgMCwgIC8vIGNoYW5uZWxz
OiAxNwotICAgIDB4MzksIDB4MzAsIDAsIDAsICAvLyBzYW1wbGUgcmF0ZTogMTIzNDUKLSAgICAw
eGM5LCAweDMzLCAweDAzLCAwLCAgLy8gYnl0ZSByYXRlOiAxICogMTcgKiAxMjM0NQotICAgIDE3
LCAwLCAgLy8gYmxvY2sgYWxpZ246IE51bUNoYW5uZWxzICogQnl0ZXNQZXJTYW1wbGUKLSAgICA4
LCAwLCAgLy8gYml0cyBwZXIgc2FtcGxlOiAxICogOAotICAgIDAsIDAsICAvLyB6ZXJvIGV4dGVu
c2lvbiBzaXplIGZpZWxkIChhdHlwaWNhbCkKKyAgICAxOCwgMCwgMCwgMCwgICAgICAgICAgICAg
Ly8gU2l6ZSBvZiBmbXQgYmxvY2sgKHdpdGggYW4gYXR5cGljYWwgZXh0ZW5zaW9uCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHNpemUgZmllbGQpLgorICAgIDYsIDAsICAgICAgICAg
ICAgICAgICAgICAvLyBGb3JtYXQ6IEEtbGF3ICg2KS4KKyAgICAxNywgMCwgICAgICAgICAgICAg
ICAgICAgLy8gQ2hhbm5lbHM6IDE3LgorICAgIDB4MzksIDB4MzAsIDAsIDAsICAgICAgICAvLyBT
YW1wbGUgcmF0ZTogMTIzNDUuCisgICAgMHhjOSwgMHgzMywgMHgwMywgMCwgICAgIC8vIEJ5dGUg
cmF0ZTogMSAqIDE3ICogMTIzNDUuCisgICAgMTcsIDAsICAgICAgICAgICAgICAgICAgIC8vIEJs
b2NrIGFsaWduOiBOdW1DaGFubmVscyAqIEJ5dGVzUGVyU2FtcGxlLgorICAgIDgsIDAsICAgICAg
ICAgICAgICAgICAgICAvLyBCaXRzIHBlciBzYW1wbGU6IDEgKiA4LgorICAgIDAsIDAsICAgICAg
ICAgICAgICAgICAgICAvLyBaZXJvIGV4dGVuc2lvbiBzaXplIGZpZWxkIChhdHlwaWNhbCkuCiAg
ICAgJ2QnLCAnYScsICd0JywgJ2EnLAotICAgIDB4OTksIDB4ZDAsIDB4NWIsIDB4MDcsICAvLyBz
aXplIG9mIHBheWxvYWQ6IDEyMzQ1NzY4OQorICAgIDB4OTksIDB4ZDAsIDB4NWIsIDB4MDcsICAv
LyBTaXplIG9mIHBheWxvYWQ6IDEyMzQ1NzY4OS4KKyAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgor
ICB9OworCisgIHNpemVfdCBudW1fY2hhbm5lbHMgPSAwOworICBpbnQgc2FtcGxlX3JhdGUgPSAw
OworICBXYXZGb3JtYXQgZm9ybWF0ID0ga1dhdkZvcm1hdFBjbTsKKyAgc2l6ZV90IGJ5dGVzX3Bl
cl9zYW1wbGUgPSAwOworICBzaXplX3QgbnVtX3NhbXBsZXMgPSAwOworICBSZWFkYWJsZVdhdkJ1
ZmZlciByKGtCdWYsIHNpemVvZihrQnVmKSwgLypjaGVja19yZWFkX3NpemU9Ki90cnVlKTsKKyAg
RVhQRUNUX1RSVUUoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFubmVscywgJnNhbXBsZV9yYXRl
LCAmZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc19wZXJfc2FtcGxl
LCAmbnVtX3NhbXBsZXMpKTsKKyAgRVhQRUNUX0VRKDE3dSwgbnVtX2NoYW5uZWxzKTsKKyAgRVhQ
RUNUX0VRKDEyMzQ1LCBzYW1wbGVfcmF0ZSk7CisgIEVYUEVDVF9FUShrV2F2Rm9ybWF0QUxhdywg
Zm9ybWF0KTsKKyAgRVhQRUNUX0VRKDF1LCBieXRlc19wZXJfc2FtcGxlKTsKKyAgRVhQRUNUX0VR
KDEyMzQ1NzY4OXUsIG51bV9zYW1wbGVzKTsKK30KKworLy8gVHJ5IHJlYWRpbmcgYSB2YWxpZCBX
QVYgaGVhZGVyIHdoaWNoIGNvbnRhaW5zIGFuIG9wdGlvbmFsIGNodW5rIGFuZCBtYWtlIHN1cmUK
Ky8vIGl0J3MgcGFyc2VkIE9LLgorVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkV2F2SGVhZGVyV2l0
aE9wdGlvbmFsQ2h1bmspIHsKKyAgY29uc3RleHByIHVpbnQ4X3Qga0J1ZltdID0geworICAgICAg
Ly8gY2xhbmctZm9ybWF0IG9mZgorICAgICAgLy8gY2xhbmcgZm9ybWF0dGluZyBkb2Vzbid0IHJl
c3BlY3QgaW5saW5lIGNvbW1lbnRzLgorICAgICdSJywgJ0knLCAnRicsICdGJywKKyAgICAweGNk
LCAweGQwLCAweDViLCAweDA3LCAgLy8gU2l6ZSBvZiB3aG9sZSBmaWxlIC0gOCArIGFuIGV4dHJh
IDE2IGJ5dGVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICJtZXRhZGF0YSIg
KDggYnl0ZXMgaGVhZGVyLCAxNiBieXRlcyBwYXlsb2FkKToKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gMTIzNDU3Njg5ICsgNDQgLSA4ICsgMTYuCisgICAgJ1cnLCAnQScsICdWJywg
J0UnLAorICAgICdmJywgJ20nLCAndCcsICcgJywKKyAgICAxNiwgMCwgMCwgMCwgICAgICAgICAg
ICAgLy8gU2l6ZSBvZiBmbXQgYmxvY2suCisgICAgNiwgMCwgICAgICAgICAgICAgICAgICAgIC8v
IEZvcm1hdDogQS1sYXcgKDYpLgorICAgIDE3LCAwLCAgICAgICAgICAgICAgICAgICAvLyBDaGFu
bmVsczogMTcuCisgICAgMHgzOSwgMHgzMCwgMCwgMCwgICAgICAgIC8vIFNhbXBsZSByYXRlOiAx
MjM0NS4KKyAgICAweGM5LCAweDMzLCAweDAzLCAwLCAgICAgLy8gQnl0ZSByYXRlOiAxICogMTcg
KiAxMjM0NS4KKyAgICAxNywgMCwgICAgICAgICAgICAgICAgICAgLy8gQmxvY2sgYWxpZ246IE51
bUNoYW5uZWxzICogQnl0ZXNQZXJTYW1wbGUuCisgICAgOCwgMCwgICAgICAgICAgICAgICAgICAg
IC8vIEJpdHMgcGVyIHNhbXBsZTogMSAqIDguCisgICAgJ0wnLCAnSScsICdTJywgJ1QnLCAgICAg
IC8vIE1ldGFkYXRhIGNodW5rIElELgorICAgIDE2LCAwLCAwLCAwLCAgICAgICAgICAgICAvLyBN
ZXRhZGF0YSBjaHVuayBwYXlsb2FkIHNpemUuCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgIC8vIE1ldGFkYXRhICgxNiBieXRlcykuCisgICAgJ2Qn
LCAnYScsICd0JywgJ2EnLAorICAgIDB4OTksIDB4ZDAsIDB4NWIsIDB4MDcsICAvLyBTaXplIG9m
IHBheWxvYWQ6IDEyMzQ1NzY4OS4KICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogICB9OwogCkBA
IC0zMjksNyArMzk0LDcgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkQXR5cGljYWxXYXZIZWFk
ZXIpIHsKICAgV2F2Rm9ybWF0IGZvcm1hdCA9IGtXYXZGb3JtYXRQY207CiAgIHNpemVfdCBieXRl
c19wZXJfc2FtcGxlID0gMDsKICAgc2l6ZV90IG51bV9zYW1wbGVzID0gMDsKLSAgUmVhZGFibGVX
YXZCdWZmZXIgcihrQnVmLCBzaXplb2Yoa0J1ZikpOworICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtC
dWYsIHNpemVvZihrQnVmKSwgLypjaGVja19yZWFkX3NpemU9Ki90cnVlKTsKICAgRVhQRUNUX1RS
VUUoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFubmVscywgJnNhbXBsZV9yYXRlLCAmZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc19wZXJfc2FtcGxlLCAmbnVtX3Nh
bXBsZXMpKTsKICAgRVhQRUNUX0VRKDE3dSwgbnVtX2NoYW5uZWxzKTsKQEAgLTMzOSw0ICs0MDQs
MzcgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkQXR5cGljYWxXYXZIZWFkZXIpIHsKICAgRVhQ
RUNUX0VRKDEyMzQ1NzY4OXUsIG51bV9zYW1wbGVzKTsKIH0KIAorLy8gVHJ5IHJlYWRpbmcgYW4g
aW52YWxpZCBXQVYgaGVhZGVyIHdoaWNoIGhhcyB0aGUgdGhlIGRhdGEgY2h1bmsgYmVmb3JlIHRo
ZQorLy8gZm9ybWF0IG9uZSBhbmQgbWFrZSBzdXJlIGl0J3Mgbm90IHBhcnNlZC4KK1RFU1QoV2F2
SGVhZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhEYXRhQmVmb3JlRm9ybWF0KSB7CisgIGNvbnN0
ZXhwciB1aW50OF90IGtCdWZbXSA9IHsKKyAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAg
IC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGluZSBjb21tZW50cy4KKyAg
ICAnUicsICdJJywgJ0YnLCAnRicsCisgICAgNTIsICAwLCAgIDAsICAgMCwgICAgLy8gU2l6ZSBv
ZiB3aG9sZSBmaWxlIC0gODogMTYgKyA0NCAtIDguCisgICAgJ1cnLCAnQScsICdWJywgJ0UnLAor
ICAgICdkJywgJ2EnLCAndCcsICdhJywKKyAgICAxNiwgMCwgMCwgMCwgICAgICAgICAvLyBEYXRh
IGNodW5rIHBheWxvYWQgc2l6ZS4KKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAgLy8gRGF0YSAxNiBieXRlcy4KKyAgICAnZicsICdtJywgJ3QnLCAn
ICcsCisgICAgMTYsICAwLCAgIDAsICAgMCwgICAgLy8gU2l6ZSBvZiBmbXQgYmxvY2suCisgICAg
NiwgICAwLCAgICAgICAgICAgICAgLy8gRm9ybWF0OiBBLWxhdyAoNikuCisgICAgMSwgICAwLCAg
ICAgICAgICAgICAgLy8gQ2hhbm5lbHM6IDEuCisgICAgNjAsICAwLCAgIDAsICAgMCwgICAgLy8g
U2FtcGxlIHJhdGU6IDYwLgorICAgIDYwLCAgMCwgICAwLCAgIDAsICAgIC8vIEJ5dGUgcmF0ZTog
MSAqIDEgKiA2MC4KKyAgICAxLCAgIDAsICAgICAgICAgICAgICAvLyBCbG9jayBhbGlnbjogTnVt
Q2hhbm5lbHMgKiBCeXRlc1BlclNhbXBsZS4KKyAgICA4LCAgIDAsICAgICAgICAgICAgICAvLyBC
aXRzIHBlciBzYW1wbGU6IDEgKiA4LgorICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisgIH07CisK
KyAgc2l6ZV90IG51bV9jaGFubmVscyA9IDA7CisgIGludCBzYW1wbGVfcmF0ZSA9IDA7CisgIFdh
dkZvcm1hdCBmb3JtYXQgPSBrV2F2Rm9ybWF0UGNtOworICBzaXplX3QgYnl0ZXNfcGVyX3NhbXBs
ZSA9IDA7CisgIHNpemVfdCBudW1fc2FtcGxlcyA9IDA7CisgIFJlYWRhYmxlV2F2QnVmZmVyIHIo
a0J1Ziwgc2l6ZW9mKGtCdWYpLCAvKmNoZWNrX3JlYWRfc2l6ZT0qL2ZhbHNlKTsKKyAgRVhQRUNU
X0ZBTFNFKFJlYWRXYXZIZWFkZXIoJnIsICZudW1fY2hhbm5lbHMsICZzYW1wbGVfcmF0ZSwgJmZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVzX3Blcl9zYW1wbGUsICZu
dW1fc2FtcGxlcykpOworfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdHlwZXMuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl90eXBlcy5o
CmluZGV4IDk5YzQwNjRhM2NmNjYwZDEzMjZhZDU5MGU0ZjY4ZmEzNDQ0M2VkMGEuLjg0OGI4OTlh
MGRkMWY0ODljNTI2ZDBiMjU0NTFhNTUwNGMyYjJiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl90eXBlcy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl90eXBlcy5oCkBAIC0x
MSwxNiArMTEsMTUgQEAKICNpZm5kZWYgQ09NTU9OX1RZUEVTX0hfCiAjZGVmaW5lIENPTU1PTl9U
WVBFU19IXwogCi0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5j
bHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxzdGRkZWYuaD4gIC8v
IEZvciBzaXplX3QKKyNpbmNsdWRlIDxjc3RkaW50PgogCi0jaW5jbHVkZSAiYXBpL2FycmF5X3Zp
ZXcuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKIC8vIFRPRE8oc3ByYW5nKTog
UmVtb3ZlIHRoaXMgaW5jbHVkZSB3aGVuIGFsbCB1c2FnZSBpbmNsdWRlcyBpdCBkaXJlY3RseS4K
ICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCisvLyBUT0RP
KGJ1Z3Mud2VicnRjLm9yZy83NjYwKTogRGVsZXRlIGluY2x1ZGUgb25jZSBkb3duc3RyZWFtIGNv
ZGUgaXMgdXBkYXRlZC4KKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJlY2F0
aW9uLmgiCiAKICNpZiBkZWZpbmVkKF9NU0NfVkVSKQogLy8gRGlzYWJsZSAibmV3IGJlaGF2aW9y
OiBlbGVtZW50cyBvZiBhcnJheSB3aWxsIGJlIGRlZmF1bHQgaW5pdGlhbGl6ZWQiCkBAIC0zMCwx
NiArMjksNiBAQAogCiAjZGVmaW5lIFJUUF9QQVlMT0FEX05BTUVfU0laRSAzMnUKIAotI2lmIGRl
ZmluZWQoV0VCUlRDX1dJTikgfHwgZGVmaW5lZChXSU4zMikKLS8vIENvbXBhcmVzIHR3byBzdHJp
bmdzIHdpdGhvdXQgcmVnYXJkIHRvIGNhc2UuCi0jZGVmaW5lIFNUUl9DQVNFX0NNUChzMSwgczIp
IDo6X3N0cmljbXAoczEsIHMyKQotLy8gQ29tcGFyZXMgY2hhcmFjdGVycyBvZiB0d28gc3RyaW5n
cyB3aXRob3V0IHJlZ2FyZCB0byBjYXNlLgotI2RlZmluZSBTVFJfTkNBU0VfQ01QKHMxLCBzMiwg
bikgOjpfc3RybmljbXAoczEsIHMyLCBuKQotI2Vsc2UKLSNkZWZpbmUgU1RSX0NBU0VfQ01QKHMx
LCBzMikgOjpzdHJjYXNlY21wKHMxLCBzMikKLSNkZWZpbmUgU1RSX05DQVNFX0NNUChzMSwgczIs
IG4pIDo6c3RybmNhc2VjbXAoczEsIHMyLCBuKQotI2VuZGlmCi0KIG5hbWVzcGFjZSB3ZWJydGMg
ewogCiBlbnVtIEZyYW1lVHlwZSB7CkBAIC01MCwyOSArMzksNiBAQCBlbnVtIEZyYW1lVHlwZSB7
CiAgIGtWaWRlb0ZyYW1lRGVsdGEgPSA0LAogfTsKIAotLy8gU3RhdGlzdGljcyBmb3IgYW4gUlRD
UCBjaGFubmVsCi1zdHJ1Y3QgUnRjcFN0YXRpc3RpY3MgewotICBSdGNwU3RhdGlzdGljcygpCi0g
ICAgICA6IGZyYWN0aW9uX2xvc3QoMCksCi0gICAgICAgIHBhY2tldHNfbG9zdCgwKSwKLSAgICAg
ICAgZXh0ZW5kZWRfaGlnaGVzdF9zZXF1ZW5jZV9udW1iZXIoMCksCi0gICAgICAgIGppdHRlcigw
KSB7fQotCi0gIHVpbnQ4X3QgZnJhY3Rpb25fbG9zdDsKLSAgaW50MzJfdCBwYWNrZXRzX2xvc3Q7
ICAvLyBEZWZpbmVkIGFzIGEgMjQgYml0IHNpZ25lZCBpbnRlZ2VyIGluIFJUQ1AKLSAgdWludDMy
X3QgZXh0ZW5kZWRfaGlnaGVzdF9zZXF1ZW5jZV9udW1iZXI7Ci0gIHVpbnQzMl90IGppdHRlcjsK
LX07Ci0KLWNsYXNzIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sgewotIHB1YmxpYzoKLSAgdmlydHVh
bCB+UnRjcFN0YXRpc3RpY3NDYWxsYmFjaygpIHt9Ci0KLSAgdmlydHVhbCB2b2lkIFN0YXRpc3Rp
Y3NVcGRhdGVkKGNvbnN0IFJ0Y3BTdGF0aXN0aWNzJiBzdGF0aXN0aWNzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYykgPSAwOwotICB2aXJ0dWFsIHZvaWQg
Q05hbWVDaGFuZ2VkKGNvbnN0IGNoYXIqIGNuYW1lLCB1aW50MzJfdCBzc3JjKSA9IDA7Ci19Owot
CiAvLyBTdGF0aXN0aWNzIGZvciBSVENQIHBhY2tldCB0eXBlcy4KIHN0cnVjdCBSdGNwUGFja2V0
VHlwZUNvdW50ZXIgewogICBSdGNwUGFja2V0VHlwZUNvdW50ZXIoKQpAQCAtMjA3LDcgKzE3Myw3
IEBAIHN0cnVjdCBDb2RlY0luc3QgewogCiAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlY0lu
c3QmIG90aGVyKSBjb25zdCB7CiAgICAgcmV0dXJuIHBsdHlwZSA9PSBvdGhlci5wbHR5cGUgJiYK
LSAgICAgICAgICAgKFNUUl9DQVNFX0NNUChwbG5hbWUsIG90aGVyLnBsbmFtZSkgPT0gMCkgJiYK
KyAgICAgICAgICAgYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsIG90aGVyLnBsbmFtZSkg
JiYKICAgICAgICAgICAgcGxmcmVxID09IG90aGVyLnBsZnJlcSAmJiBwYWNzaXplID09IG90aGVy
LnBhY3NpemUgJiYKICAgICAgICAgICAgY2hhbm5lbHMgPT0gb3RoZXIuY2hhbm5lbHMgJiYgcmF0
ZSA9PSBvdGhlci5yYXRlOwogICB9CkBAIC0yMTgsODAgKzE4NCw2IEBAIHN0cnVjdCBDb2RlY0lu
c3QgewogLy8gUlRQCiBlbnVtIHsga1J0cENzcmNTaXplID0gMTUgfTsgIC8vIFJGQyAzNTUwIHBh
Z2UgMTMKIAotLy8gTkVURVEgc3RhdGlzdGljcy4KLXN0cnVjdCBOZXR3b3JrU3RhdGlzdGljcyB7
Ci0gIC8vIGN1cnJlbnQgaml0dGVyIGJ1ZmZlciBzaXplIGluIG1zCi0gIHVpbnQxNl90IGN1cnJl
bnRCdWZmZXJTaXplOwotICAvLyBwcmVmZXJyZWQgKG9wdGltYWwpIGJ1ZmZlciBzaXplIGluIG1z
Ci0gIHVpbnQxNl90IHByZWZlcnJlZEJ1ZmZlclNpemU7Ci0gIC8vIGFkZGluZyBleHRyYSBkZWxh
eSBkdWUgdG8gInBlYWt5IGppdHRlciIKLSAgYm9vbCBqaXR0ZXJQZWFrc0ZvdW5kOwotICAvLyBT
dGF0cyBiZWxvdyBjb3JyZXNwb25kIHRvIHNpbWlsYXJseS1uYW1lZCBmaWVsZHMgaW4gdGhlIFdl
YlJUQyBzdGF0cyBzcGVjLgotICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRz
LyNkb20tcnRjbWVkaWFzdHJlYW10cmFja3N0YXRzCi0gIHVpbnQ2NF90IHRvdGFsU2FtcGxlc1Jl
Y2VpdmVkOwotICB1aW50NjRfdCBjb25jZWFsZWRTYW1wbGVzOwotICB1aW50NjRfdCBjb25jZWFs
bWVudEV2ZW50czsKLSAgdWludDY0X3Qgaml0dGVyQnVmZmVyRGVsYXlNczsKLSAgLy8gU3RhdHMg
YmVsb3cgRE8gTk9UIGNvcnJlc3BvbmQgZGlyZWN0bHkgdG8gYW55dGhpbmcgaW4gdGhlIFdlYlJU
QyBzdGF0cwotICAvLyBMb3NzIHJhdGUgKG5ldHdvcmsgKyBsYXRlKTsgZnJhY3Rpb24gYmV0d2Vl
biAwIGFuZCAxLCBzY2FsZWQgdG8gUTE0LgotICB1aW50MTZfdCBjdXJyZW50UGFja2V0TG9zc1Jh
dGU7Ci0gIC8vIExhdGUgbG9zcyByYXRlOyBmcmFjdGlvbiBiZXR3ZWVuIDAgYW5kIDEsIHNjYWxl
ZCB0byBRMTQuCi0gIHVuaW9uIHsKLSAgICBSVENfREVQUkVDQVRFRCB1aW50MTZfdCBjdXJyZW50
RGlzY2FyZFJhdGU7Ci0gIH07Ci0gIC8vIGZyYWN0aW9uIChvZiBvcmlnaW5hbCBzdHJlYW0pIG9m
IHN5bnRoZXNpemVkIGF1ZGlvIGluc2VydGVkIHRocm91Z2gKLSAgLy8gZXhwYW5zaW9uIChpbiBR
MTQpCi0gIHVpbnQxNl90IGN1cnJlbnRFeHBhbmRSYXRlOwotICAvLyBmcmFjdGlvbiAob2Ygb3Jp
Z2luYWwgc3RyZWFtKSBvZiBzeW50aGVzaXplZCBzcGVlY2ggaW5zZXJ0ZWQgdGhyb3VnaAotICAv
LyBleHBhbnNpb24gKGluIFExNCkKLSAgdWludDE2X3QgY3VycmVudFNwZWVjaEV4cGFuZFJhdGU7
Ci0gIC8vIGZyYWN0aW9uIG9mIHN5bnRoZXNpemVkIHNwZWVjaCBpbnNlcnRlZCB0aHJvdWdoIHBy
ZS1lbXB0aXZlIGV4cGFuc2lvbgotICAvLyAoaW4gUTE0KQotICB1aW50MTZfdCBjdXJyZW50UHJl
ZW1wdGl2ZVJhdGU7Ci0gIC8vIGZyYWN0aW9uIG9mIGRhdGEgcmVtb3ZlZCB0aHJvdWdoIGFjY2Vs
ZXJhdGlvbiAoaW4gUTE0KQotICB1aW50MTZfdCBjdXJyZW50QWNjZWxlcmF0ZVJhdGU7Ci0gIC8v
IGZyYWN0aW9uIG9mIGRhdGEgY29taW5nIGZyb20gc2Vjb25kYXJ5IGRlY29kaW5nIChpbiBRMTQp
Ci0gIHVpbnQxNl90IGN1cnJlbnRTZWNvbmRhcnlEZWNvZGVkUmF0ZTsKLSAgLy8gRnJhY3Rpb24g
b2Ygc2Vjb25kYXJ5IGRhdGEsIGluY2x1ZGluZyBGRUMgYW5kIFJFRCwgdGhhdCBpcyBkaXNjYXJk
ZWQgKGluCi0gIC8vIFExNCkuIERpc2NhcmRpbmcgb2Ygc2Vjb25kYXJ5IGRhdGEgY2FuIGJlIGNh
dXNlZCBieSB0aGUgcmVjZXB0aW9uIG9mIHRoZQotICAvLyBwcmltYXJ5IGRhdGEsIG9ic29sZXRp
bmcgdGhlIHNlY29uZGFyeSBkYXRhLiBJdCBjYW4gYWxzbyBiZSBjYXVzZWQgYnkgZWFybHkKLSAg
Ly8gb3IgbGF0ZSBhcnJpdmFsIG9mIHNlY29uZGFyeSBkYXRhLgotICB1aW50MTZfdCBjdXJyZW50
U2Vjb25kYXJ5RGlzY2FyZGVkUmF0ZTsKLSAgLy8gY2xvY2stZHJpZnQgaW4gcGFydHMtcGVyLW1p
bGxpb24gKG5lZ2F0aXZlIG9yIHBvc2l0aXZlKQotICBpbnQzMl90IGNsb2NrRHJpZnRQUE07Ci0g
IC8vIGF2ZXJhZ2UgcGFja2V0IHdhaXRpbmcgdGltZSBpbiB0aGUgaml0dGVyIGJ1ZmZlciAobXMp
Ci0gIGludCBtZWFuV2FpdGluZ1RpbWVNczsKLSAgLy8gbWVkaWFuIHBhY2tldCB3YWl0aW5nIHRp
bWUgaW4gdGhlIGppdHRlciBidWZmZXIgKG1zKQotICBpbnQgbWVkaWFuV2FpdGluZ1RpbWVNczsK
LSAgLy8gbWluIHBhY2tldCB3YWl0aW5nIHRpbWUgaW4gdGhlIGppdHRlciBidWZmZXIgKG1zKQot
ICBpbnQgbWluV2FpdGluZ1RpbWVNczsKLSAgLy8gbWF4IHBhY2tldCB3YWl0aW5nIHRpbWUgaW4g
dGhlIGppdHRlciBidWZmZXIgKG1zKQotICBpbnQgbWF4V2FpdGluZ1RpbWVNczsKLSAgLy8gYWRk
ZWQgc2FtcGxlcyBpbiBvZmYgbW9kZSBkdWUgdG8gcGFja2V0IGxvc3MKLSAgc2l6ZV90IGFkZGVk
U2FtcGxlczsKLX07Ci0KLS8vIFN0YXRpc3RpY3MgZm9yIGNhbGxzIHRvIEF1ZGlvQ29kaW5nTW9k
dWxlOjpQbGF5b3V0RGF0YTEwTXMoKS4KLXN0cnVjdCBBdWRpb0RlY29kaW5nQ2FsbFN0YXRzIHsK
LSAgQXVkaW9EZWNvZGluZ0NhbGxTdGF0cygpCi0gICAgICA6IGNhbGxzX3RvX3NpbGVuY2VfZ2Vu
ZXJhdG9yKDApLAotICAgICAgICBjYWxsc190b19uZXRlcSgwKSwKLSAgICAgICAgZGVjb2RlZF9u
b3JtYWwoMCksCi0gICAgICAgIGRlY29kZWRfcGxjKDApLAotICAgICAgICBkZWNvZGVkX2NuZygw
KSwKLSAgICAgICAgZGVjb2RlZF9wbGNfY25nKDApLAotICAgICAgICBkZWNvZGVkX211dGVkX291
dHB1dCgwKSB7fQotCi0gIGludCBjYWxsc190b19zaWxlbmNlX2dlbmVyYXRvcjsgIC8vIE51bWJl
ciBvZiBjYWxscyB3aGVyZSBzaWxlbmNlIGdlbmVyYXRlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYW5kIE5ldEVxIHdhcyBkaXNlbmdhZ2VkIGZyb20gZGVjb2Rpbmcu
Ci0gIGludCBjYWxsc190b19uZXRlcTsgICAgICAgICAgICAgIC8vIE51bWJlciBvZiBjYWxscyB0
byBOZXRFcS4KLSAgaW50IGRlY29kZWRfbm9ybWFsOyAgLy8gTnVtYmVyIG9mIGNhbGxzIHdoZXJl
IGF1ZGlvIFJUUCBwYWNrZXQgZGVjb2RlZC4KLSAgaW50IGRlY29kZWRfcGxjOyAgICAgLy8gTnVt
YmVyIG9mIGNhbGxzIHJlc3VsdGVkIGluIFBMQy4KLSAgaW50IGRlY29kZWRfY25nOyAgLy8gTnVt
YmVyIG9mIGNhbGxzIHdoZXJlIGNvbWZvcnQgbm9pc2UgZ2VuZXJhdGVkIGR1ZSB0byBEVFguCi0g
IGludCBkZWNvZGVkX3BsY19jbmc7ICAgICAgIC8vIE51bWJlciBvZiBjYWxscyByZXN1bHRlZCB3
aGVyZSBQTEMgZmFkZWQgdG8gQ05HLgotICBpbnQgZGVjb2RlZF9tdXRlZF9vdXRwdXQ7ICAvLyBO
dW1iZXIgb2YgY2FsbHMgcmV0dXJuaW5nIGEgbXV0ZWQgc3RhdGUgb3V0cHV0LgotfTsKLQogLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CiAvLyBWaWRlbyBzcGVjaWZpYyB0eXBlcwogLy8gPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0zMzAs
MTggKzIyMiw2IEBAIGVudW0gUHJvZmlsZSB7CiAKIH0gIC8vIG5hbWVzcGFjZSBIMjY0CiAKLS8v
IFZpZGVvIGNvZGVjIHR5cGVzCi1lbnVtIFZpZGVvQ29kZWNUeXBlIHsKLSAgLy8gVGhlcmUgYXJl
IHZhcmlvdXMgbWVtc2V0KC4uLiwgMCwgLi4uKSBjYWxscyBpbiB0aGUgY29kZSB0aGF0IHJlbHkg
b24KLSAgLy8ga1ZpZGVvQ29kZWNHZW5lcmljIGJlaW5nIHplcm8uCi0gIGtWaWRlb0NvZGVjR2Vu
ZXJpYyA9IDAsCi0gIGtWaWRlb0NvZGVjVlA4LAotICBrVmlkZW9Db2RlY1ZQOSwKLSAga1ZpZGVv
Q29kZWNIMjY0LAotICBrVmlkZW9Db2RlY0k0MjAsCi0gIGtWaWRlb0NvZGVjTXVsdGlwbGV4LAot
fTsKLQogc3RydWN0IFNwYXRpYWxMYXllciB7CiAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTcGF0
aWFsTGF5ZXImIG90aGVyKSBjb25zdDsKICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNwYXRpYWxM
YXllciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CkBAIC0zNjEs
OSArMjQxLDYgQEAgc3RydWN0IFNwYXRpYWxMYXllciB7CiAvLyBzZXR0aW5ncyBzdWNoIGFzIHJl
c29sdXRpb24uCiB0eXBlZGVmIFNwYXRpYWxMYXllciBTaW11bGNhc3RTdHJlYW07CiAKLS8vIFRP
RE8oc3ByYW5nKTogUmVtb3ZlIHRoaXMgd2hlbiBkb3duc3RyZWFtIHByb2plY3RzIGhhdmUgYmVl
biB1cGRhdGVkLgotdXNpbmcgQml0cmF0ZUFsbG9jYXRpb24gPSBWaWRlb0JpdHJhdGVBbGxvY2F0
aW9uOwotCiAvLyBCYW5kd2lkdGggb3Zlci11c2UgZGV0ZWN0b3Igb3B0aW9ucy4gIFRoZXNlIGFy
ZSB1c2VkIHRvIGRyaXZlCiAvLyBleHBlcmltZW50YXRpb24gd2l0aCBiYW5kd2lkdGggZXN0aW1h
dGlvbiBwYXJhbWV0ZXJzLgogLy8gU2VlIG1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L292ZXJ1c2VfZGV0ZWN0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL0JVSUxELmduCmluZGV4IDQz
NzgwYzExM2Q1MDdmYjRiNjY4MmY5ZmVmODNiZTUzMGJhZjc1OTcuLjEyNWJjZmM1NTgzMzdlMGUy
M2M3MWU4OTI5ZjYzZDA4OGY5ZDQ2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9CVUlMRC5nbgorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vQlVJTEQuZ24K
QEAgLTI2LDcgKzI2LDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb21tb25fdmlkZW8iKSB7CiAg
ICAgImgyNjQvc3BzX3Z1aV9yZXdyaXRlci5oIiwKICAgICAiaTQyMF9idWZmZXJfcG9vbC5jYyIs
CiAgICAgImluY2x1ZGUvYml0cmF0ZV9hZGp1c3Rlci5oIiwKLSAgICAiaW5jbHVkZS9mcmFtZV9j
YWxsYmFjay5oIiwKICAgICAiaW5jbHVkZS9pNDIwX2J1ZmZlcl9wb29sLmgiLAogICAgICJpbmNs
dWRlL2luY29taW5nX3ZpZGVvX3N0cmVhbS5oIiwKICAgICAiaW5jbHVkZS92aWRlb19mcmFtZS5o
IiwKQEAgLTM0LDcgKzMzLDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb21tb25fdmlkZW8iKSB7
CiAgICAgImluY29taW5nX3ZpZGVvX3N0cmVhbS5jYyIsCiAgICAgImxpYnl1di9pbmNsdWRlL3dl
YnJ0Y19saWJ5dXYuaCIsCiAgICAgImxpYnl1di93ZWJydGNfbGlieXV2LmNjIiwKLSAgICAidmlk
ZW9fZnJhbWUuY2MiLAogICAgICJ2aWRlb19mcmFtZV9idWZmZXIuY2MiLAogICAgICJ2aWRlb19y
ZW5kZXJfZnJhbWVzLmNjIiwKICAgICAidmlkZW9fcmVuZGVyX2ZyYW1lcy5oIiwKQEAgLTQyLDYg
KzQwLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb21tb25fdmlkZW8iKSB7CiAKICAgZGVwcyA9
IFsKICAgICAiLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uL2FwaS92aWRlbzplbmNvZGVkX2lt
YWdlIiwKICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbiIsCiAgICAg
Ii4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRvciIsCiAgICAgIi4uL2FwaS92aWRl
bzp2aWRlb19mcmFtZSIsCkBAIC05Niw2ICs5NSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykg
ewogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi90
ZXN0OmZpbGV1dGlscyIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4uL3Rl
c3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICIuLi90ZXN0OnZpZGVvX3Rlc3RfY29tbW9uIiwKICAg
ICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgICAgIi8vdGhpcmRfcGFydHkvbGlieXV2IiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl92aWRlby9iaXRyYXRlX2FkanVzdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2JpdHJhdGVfYWRqdXN0ZXIuY2MKaW5kZXggMTYz
YzRiMTk4MTQ3NGIzOTJiYjg3MDcyMDZmN2FkNTc4NWY5NjllYS4uYWMyMWYyYmQyMDM4N2E2NzMx
NzI3YjQ4MDEwZWJjMjA1YWUxMmRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2JpdHJhdGVfYWRqdXN0ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVv
L2JpdHJhdGVfYWRqdXN0ZXIuY2MKQEAgLTEzLDcgKzEzLDYgQEAKICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8Y21hdGg+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxz
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl92aWRlby9oMjY0L2gyNjRfYml0c3RyZWFtX3BhcnNlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L2gyNjRf
Yml0c3RyZWFtX3BhcnNlci5jYwppbmRleCAyZTYzYjlkNGExNmVmNWU2MWEzY2ZjYjFmNWViMDQx
MTFjOWM5NDU5Li5mM2QyZjhhNmJmODA0ZGUzMTQzM2NkMmQ3Y2I1NGFhMDBhOGI1M2FhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25f
dmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9iaXRzdHJl
YW1fcGFyc2VyLmNjCkBAIC05LDEzICs5LDEyIEBACiAgKi8KICNpbmNsdWRlICJjb21tb25fdmlk
ZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuaCIKIAotI2luY2x1ZGUgPG1lbW9yeT4KKyNp
bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHZlY3Rvcj4K
IAotI2luY2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgotCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9iaXRidWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRl
by9oMjY0L2gyNjRfYml0c3RyZWFtX3BhcnNlci5oCmluZGV4IGIzZmFjN2JiMjE1NzI2ZWZmODJm
ZjMzYWExZTIzNzRhY2VlZTMyMzIuLjk2MmM5YzE2YWQyZjQ2ZmJhZDdlNDdkM2MyNjRmNTg2NmEy
MWJhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl92aWRlby9oMjY0L2gyNjRfYml0c3RyZWFtX3BhcnNlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L2gy
NjRfYml0c3RyZWFtX3BhcnNlci5oCkBAIC0xNywxMCArMTcsNiBAQAogI2luY2x1ZGUgImNvbW1v
bl92aWRlby9oMjY0L3Bwc19wYXJzZXIuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9z
cHNfcGFyc2VyLmgiCiAKLW5hbWVzcGFjZSBydGMgewotY2xhc3MgQml0QnVmZmVyV3JpdGVyOwot
fQotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gU3RhdGVmdWwgSDI2NCBiaXRzdHJlYW0gcGFy
c2VyIChkdWUgdG8gU1BTL1BQUykuIFVzZWQgdG8gcGFyc2Ugb3V0IFFQIHZhbHVlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3Zp
ZGVvL2gyNjQvaDI2NF9jb21tb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5jYwppbmRleCA2MGVkOTRk
NDAzMTE2NzU4NjVlZjg0NGNmODg0NjU2ODZlZWIwZjUxLi41ZTU4YmE2MmU5MTMwODUzNGZkZmJi
ZWFmOTQyN2I3ZGYwNjk2Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2
NC9oMjY0X2NvbW1vbi5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAiY29tbW9uX3Zp
ZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisKIG5hbWVzcGFj
ZSB3ZWJydGMgewogbmFtZXNwYWNlIEgyNjQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1v
bi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3Zp
ZGVvL2gyNjQvaDI2NF9jb21tb24uaAppbmRleCBhNThhOWY1NWE1OWNkZGE0NjA3OTIyMmY3YTJi
YTU2ODJlYzUyMzQxLi4wMjc4MzNiN2NkN2MyNmZlOGQwZjg4YzkxMGYxZGI4ODk0ZGQ2NDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L2gyNjRfY29tbW9uLmgKQEAgLTEx
LDcgKzExLDggQEAKICNpZm5kZWYgQ09NTU9OX1ZJREVPX0gyNjRfSDI2NF9DT01NT05fSF8KICNk
ZWZpbmUgQ09NTU9OX1ZJREVPX0gyNjRfSDI2NF9DT01NT05fSF8KIAotI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx2
ZWN0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Bw
c19wYXJzZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fdmlkZW8vaDI2NC9wcHNfcGFyc2VyLmNjCmluZGV4IDViYzI5ZjM1OTI1N2QxY2RmMTRk
ZWFjM2I1OWNlYWRhNTQ0Njk4Y2QuLjQ2NGY2MDgxZTMxZTBjNWI2NTNiNDY3ZWY5N2IzMWI4ZTA4
ZjZmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl92aWRlby9oMjY0L3Bwc19wYXJzZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvcHBzX3BhcnNlci5j
YwpAQCAtMTAsMTIgKzEwLDEyIEBACiAKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9wcHNf
cGFyc2VyLmgiCiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Z2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogI2RlZmluZSBSRVRVUk5f
RU1QVFlfT05fRkFJTCh4KSBcCiAgIGlmICghKHgpKSB7ICAgICAgICAgICAgICAgICAgIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl92aWRlby9oMjY0L3Nwc19wYXJzZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfcGFyc2VyLmNjCmluZGV4IGI2Nzk5
YTNiZTQwODQwNDYxYWZkYTIwYTE0MGJjMmVmOWI2NGU3NjQuLmM2ZjZkNDc0NjZiMTVjYmYxM2Nk
ZjlmOGNmZjliYzU4MGQwNmZkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Nwc19wYXJzZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gy
NjQvc3BzX3BhcnNlci5jYwpAQCAtMTAsMTIgKzEwLDExIEBACiAKICNpbmNsdWRlICJjb21tb25f
dmlkZW8vaDI2NC9zcHNfcGFyc2VyLmgiCiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8
Y3N0ZGludD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2
NC9oMjY0X2NvbW1vbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHsKIHR5cGVkZWYgYWJzbDo6b3B0
aW9uYWw8d2VicnRjOjpTcHNQYXJzZXI6OlNwc1N0YXRlPiBPcHRpb25hbFNwczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRl
by9oMjY0L3Nwc192dWlfcmV3cml0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jld3JpdGVyLmNjCmluZGV4
IDc0OWI2MmU2ZDIxZDMxM2FmMDQwNzQzNmMwZGNiMDlkNzA1MmQ5ZTAuLjNlYWIxMWYxODhjZWJi
MGZmOGM4M2IxNTkzZDhiYzM1YjUyMmQ4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Nwc192dWlfcmV3cml0
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX3ZpZGVvL2gyNjQvc3BzX3Z1aV9yZXdyaXRlci5jYwpAQCAtMTEsMTggKzExLDE3IEBACiAK
ICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jld3JpdGVyLmgiCiAKLSNpbmNs
dWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0cmluZy5oPgor
I2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiY29tbW9u
X3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKKyNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9z
cHNfcGFyc2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYml0YnVmZmVyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAKLSNpbmNsdWRlICJjb21tb25f
dmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5oIgotI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0L3Nw
c19wYXJzZXIuaCIKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIFRoZSBtYXhpbXVtIGV4cGVj
dGVkIGdyb3d0aCBmcm9tIGFkZGluZyBhIFZVSSB0byB0aGUgU1BTLiBJdCdzIGFjdHVhbGx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jld3JpdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jld3JpdGVyLmgK
aW5kZXggMjMzMDUxZDJkNjFkZmI2Zjg1Nzk5YzMwYmFkY2Q2OWI4NmQ5ZDA2OC4uMjBkMWRkMGNk
YmZlZjY4ODAwN2I5YzIzNjI4NDZmY2FlODcxNGQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3Z1aV9y
ZXdyaXRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl92aWRlby9oMjY0L3Nwc192dWlfcmV3cml0ZXIuaApAQCAtMTIsMTQgKzEyLDEzIEBA
CiAjaWZuZGVmIENPTU1PTl9WSURFT19IMjY0X1NQU19WVUlfUkVXUklURVJfSF8KICNkZWZpbmUg
Q09NTU9OX1ZJREVPX0gyNjRfU1BTX1ZVSV9SRVdSSVRFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFs
LmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3BhcnNlci5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2J1ZmZlci5oIgogCi1uYW1lc3BhY2UgcnRjIHsKLWNsYXNzIEJpdEJ1ZmZlcjsK
LX0KLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEEgY2xhc3MgdGhhdCBjYW4gcGFyc2UgYW4g
U1BTIGJsb2NrIG9mIGEgTkFMIHVuaXQgYW5kIGlmIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2k0MjBf
YnVmZmVyX3Bvb2wuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fdmlkZW8vaTQyMF9idWZmZXJfcG9vbC5jYwppbmRleCBjNDAzZWViNGZjYmExNGE0
OTlmMmIwOTEwNDBjZDMxNTg4MTdkZGI1Li4yZTZjZGM4M2I1MWI2YmZiNGY4ODlmODQ4NTE4ODlh
ZTFmY2IwOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fdmlkZW8vaTQyMF9idWZmZXJfcG9vbC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaTQyMF9idWZmZXJf
cG9vbC5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1
ZGUvaTQyMF9idWZmZXJfcG9vbC5oIgogCisjaW5jbHVkZSA8bGltaXRzPgorCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1
ZGUvYml0cmF0ZV9hZGp1c3Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvYml0cmF0ZV9hZGp1c3Rlci5oCmluZGV4IGVl
MzEyZTRmOWE0NTJlNzU5YmUzOWRkNWE1NjlkZjFjNWM5ZGZkNTcuLmJjMmM2YmI4NDkzNmQzOWI5
Mjk1N2YwYTQ4MmNjNjk5NmVkMTFlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2JpdHJhdGVfYWRqdXN0
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fdmlkZW8vaW5jbHVkZS9iaXRyYXRlX2FkanVzdGVyLmgKQEAgLTExLDEwICsxMSwxMyBAQAog
I2lmbmRlZiBDT01NT05fVklERU9fSU5DTFVERV9CSVRSQVRFX0FESlVTVEVSX0hfCiAjZGVmaW5l
IENPTU1PTl9WSURFT19JTkNMVURFX0JJVFJBVEVfQURKVVNURVJfSF8KIAotI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKKyNp
bmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGlj
YWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZV9zdGF0aXN0aWNzLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9mcmFtZV9jYWxsYmFjay5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvZnJhbWVfY2Fs
bGJhY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM4ODNjMWQ4ZDJmNjg4YTM2
NzNiMGFlMzYyZTdlZjhiYWNiMzk0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fdmlkZW8vaW5jbHVkZS9mcmFtZV9jYWxsYmFjay5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgQ09NTU9OX1ZJREVP
X0lOQ0xVREVfRlJBTUVfQ0FMTEJBQ0tfSF8KLSNkZWZpbmUgQ09NTU9OX1ZJREVPX0lOQ0xVREVf
RlJBTUVfQ0FMTEJBQ0tfSF8KLQotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPHN0ZGlu
dC5oPgotCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVk
ZSkKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIFZpZGVvRnJhbWU7Ci0KLXN0cnVjdCBF
bmNvZGVkRnJhbWUgewotIHB1YmxpYzoKLSAgRW5jb2RlZEZyYW1lKCkKLSAgICAgIDogZGF0YV8o
bnVsbHB0ciksCi0gICAgICAgIGxlbmd0aF8oMCksCi0gICAgICAgIGZyYW1lX3R5cGVfKGtFbXB0
eUZyYW1lKSwKLSAgICAgICAgc3RyZWFtX2lkXygwKSwKLSAgICAgICAgdGltZXN0YW1wXygwKSB7
fQotICBFbmNvZGVkRnJhbWUoY29uc3QgdWludDhfdCogZGF0YSwKLSAgICAgICAgICAgICAgIHNp
emVfdCBsZW5ndGgsCi0gICAgICAgICAgICAgICBGcmFtZVR5cGUgZnJhbWVfdHlwZSwKLSAgICAg
ICAgICAgICAgIHNpemVfdCBzdHJlYW1faWQsCi0gICAgICAgICAgICAgICB1aW50MzJfdCB0aW1l
c3RhbXApCi0gICAgICA6IGRhdGFfKGRhdGEpLAotICAgICAgICBsZW5ndGhfKGxlbmd0aCksCi0g
ICAgICAgIGZyYW1lX3R5cGVfKGZyYW1lX3R5cGUpLAotICAgICAgICBzdHJlYW1faWRfKHN0cmVh
bV9pZCksCi0gICAgICAgIHRpbWVzdGFtcF8odGltZXN0YW1wKSB7fQotCi0gIGNvbnN0IHVpbnQ4
X3QqIGRhdGFfOwotICBjb25zdCBzaXplX3QgbGVuZ3RoXzsKLSAgY29uc3QgRnJhbWVUeXBlIGZy
YW1lX3R5cGVfOwotICBjb25zdCBzaXplX3Qgc3RyZWFtX2lkXzsKLSAgY29uc3QgdWludDMyX3Qg
dGltZXN0YW1wXzsKLX07Ci0KLWNsYXNzIEVuY29kZWRGcmFtZU9ic2VydmVyIHsKLSBwdWJsaWM6
Ci0gIHZpcnR1YWwgdm9pZCBFbmNvZGVkRnJhbWVDYWxsYmFjayhjb25zdCBFbmNvZGVkRnJhbWUm
IGVuY29kZWRfZnJhbWUpID0gMDsKLQotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+RW5jb2RlZEZy
YW1lT2JzZXJ2ZXIoKSB7fQotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYg
IC8vIENPTU1PTl9WSURFT19JTkNMVURFX0ZSQU1FX0NBTExCQUNLX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5j
bHVkZS9pNDIwX2J1ZmZlcl9wb29sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9pNDIwX2J1ZmZlcl9wb29sLmgKaW5kZXgg
NzlmN2VlYzIzYWYwOGZkMGVhNjU2ODc0MDY2NjU5ZmQwMDI4NmQ4Ny4uMmRjZWUxOTVmYWQxZTcz
YjI4YjJjYjBlYzQxZTc4NGY2Mzc0MjU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvaTQyMF9idWZmZXJf
cG9vbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl92aWRlby9pbmNsdWRlL2k0MjBfYnVmZmVyX3Bvb2wuaApAQCAtMTEsMTIgKzExLDEzIEBA
CiAjaWZuZGVmIENPTU1PTl9WSURFT19JTkNMVURFX0k0MjBfQlVGRkVSX1BPT0xfSF8KICNkZWZp
bmUgQ09NTU9OX1ZJREVPX0lOQ0xVREVfSTQyMF9CVUZGRVJfUE9PTF9IXwogCi0jaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGxpc3Q+CiAKICNpbmNsdWRl
ICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yYWNlX2NoZWNr
ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92
aWRlby9pbmNsdWRlL2luY29taW5nX3ZpZGVvX3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvaW5jb21pbmdfdmlk
ZW9fc3RyZWFtLmgKaW5kZXggODA2MzA2MWQzMTMyNzIyODAyMmQ5ZTliNTQ0ZDViNDQ3N2QzYTAw
Zi4uZmU4ZDEwZTIxNmEwZGZiZDA4YTY4YThiZTlkMGE2ZWYxOTc1OWZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2lu
Y2x1ZGUvaW5jb21pbmdfdmlkZW9fc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvaW5jb21pbmdfdmlkZW9f
c3RyZWFtLmgKQEAgLTExLDEwICsxMSwxNCBAQAogI2lmbmRlZiBDT01NT05fVklERU9fSU5DTFVE
RV9JTkNPTUlOR19WSURFT19TVFJFQU1fSF8KICNkZWZpbmUgQ09NTU9OX1ZJREVPX0lOQ0xVREVf
SU5DT01JTkdfVklERU9fU1RSRUFNX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1
ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19z
aW5rX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJh
bWVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvdGFza19xdWV1ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVv
L2luY2x1ZGUvdmlkZW9fZnJhbWUuaAppbmRleCA1NjU4NzBlNGRjMzY0NzE4MjRhODZiZjJjZTQ0
ZTBjMTY2Njc2N2I2Li5iYTI4MGYyYThjZGNiZjg2YzhkYmIwNTI4YWU4MmE5NzNmMjVmMDdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgK
QEAgLTExLDkxICsxMSw3IEBACiAjaWZuZGVmIENPTU1PTl9WSURFT19JTkNMVURFX1ZJREVPX0ZS
QU1FX0hfCiAjZGVmaW5lIENPTU1PTl9WSURFT19JTkNMVURFX1ZJREVPX0ZSQU1FX0hfCiAKLS8v
IFRPRE8obmlzc2UpOiBUaGlzIGhlYWRlciBmaWxlIHNob3VsZCBldmVudHVhbGx5IGJlIGRlbGV0
ZWQuIFRoZQotLy8gRW5jb2RlZEltYWdlIGNsYXNzIHN0YXlzIGluIHRoaXMgZmlsZSB1bnRpbCB3
ZSBoYXZlIGZpZ3VyZWQgb3V0IGhvdwotLy8gdG8gcmVmYWN0b3IgYW5kIGNsZWFuIHVwIHJlbGF0
ZWQgaW50ZXJmYWNlcywgYXQgd2hpY2ggcG9pbnQgaXQKLS8vIHNob3VsZCBiZSBtb3ZlZCB0byBz
b21ld2hlcmUgdW5kZXIgYXBpLy4KLQotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
LSNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29udGVudF90eXBlLmgiCi0jaW5jbHVkZSAiYXBp
L3ZpZGVvL3ZpZGVvX3JvdGF0aW9uLmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3RpbWlu
Zy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBUT0RPKHBib3MpOiBSZW5hbWUgRW5jb2RlZEZy
YW1lIGFuZCByZWZvcm1hdCB0aGlzIGNsYXNzJyBtZW1iZXJzLgotY2xhc3MgRW5jb2RlZEltYWdl
IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBjb25zdCBzaXplX3Qga0J1ZmZlclBhZGRpbmdCeXRlc0gy
NjQ7Ci0KLSAgLy8gU29tZSBkZWNvZGVycyByZXF1aXJlIGVuY29kZWQgaW1hZ2UgYnVmZmVycyB0
byBiZSBwYWRkZWQgd2l0aCBhIHNtYWxsCi0gIC8vIG51bWJlciBvZiBhZGRpdGlvbmFsIGJ5dGVz
IChkdWUgdG8gb3Zlci1yZWFkaW5nIGJ5dGUgcmVhZGVycykuCi0gIHN0YXRpYyBzaXplX3QgR2V0
QnVmZmVyUGFkZGluZ0J5dGVzKFZpZGVvQ29kZWNUeXBlIGNvZGVjX3R5cGUpOwotCi0gIEVuY29k
ZWRJbWFnZSgpOwotICBFbmNvZGVkSW1hZ2UoY29uc3QgRW5jb2RlZEltYWdlJik7Ci0gIEVuY29k
ZWRJbWFnZSh1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgsIHNpemVfdCBzaXplKTsKLQot
ICAvLyBUT0RPKG5pc3NlKTogQ2hhbmdlIHN0eWxlIHRvIHRpbWVzdGFtcCgpLCBzZXRfdGltZXN0
YW1wKCksIGZvciBjb25zaXN0ZW5jeQotICAvLyB3aXRoIHRoZSBWaWRlb0ZyYW1lIGNsYXNzLgot
ICAvLyBTZXQgZnJhbWUgdGltZXN0YW1wICg5MGtIeikuCi0gIHZvaWQgU2V0VGltZXN0YW1wKHVp
bnQzMl90IHRpbWVzdGFtcCkgeyB0aW1lc3RhbXBfcnRwXyA9IHRpbWVzdGFtcDsgfQotCi0gIC8v
IEdldCBmcmFtZSB0aW1lc3RhbXAgKDkwa0h6KS4KLSAgdWludDMyX3QgVGltZXN0YW1wKCkgY29u
c3QgeyByZXR1cm4gdGltZXN0YW1wX3J0cF87IH0KLQotICB2b2lkIFNldEVuY29kZVRpbWUoaW50
NjRfdCBlbmNvZGVfc3RhcnRfbXMsIGludDY0X3QgZW5jb2RlX2ZpbmlzaF9tcyk7Ci0KLSAgYWJz
bDo6b3B0aW9uYWw8aW50PiBTcGF0aWFsSW5kZXgoKSBjb25zdCB7Ci0gICAgaWYgKHNwYXRpYWxf
aW5kZXhfIDwgMCkKLSAgICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwotICAgIHJldHVybiBzcGF0
aWFsX2luZGV4XzsKLSAgfQotICB2b2lkIFNldFNwYXRpYWxJbmRleChhYnNsOjpvcHRpb25hbDxp
bnQ+IHNwYXRpYWxfaW5kZXgpIHsKLSAgICBSVENfRENIRUNLX0dFKHNwYXRpYWxfaW5kZXgudmFs
dWVfb3IoMCksIDApOwotICAgIFJUQ19EQ0hFQ0tfTFQoc3BhdGlhbF9pbmRleC52YWx1ZV9vcigw
KSwga01heFNwYXRpYWxMYXllcnMpOwotICAgIHNwYXRpYWxfaW5kZXhfID0gc3BhdGlhbF9pbmRl
eC52YWx1ZV9vcigtMSk7Ci0gIH0KLQotICB1aW50MzJfdCBfZW5jb2RlZFdpZHRoID0gMDsKLSAg
dWludDMyX3QgX2VuY29kZWRIZWlnaHQgPSAwOwotICAvLyBOVFAgdGltZSBvZiB0aGUgY2FwdHVy
ZSB0aW1lIGluIGxvY2FsIHRpbWViYXNlIGluIG1pbGxpc2Vjb25kcy4KLSAgaW50NjRfdCBudHBf
dGltZV9tc18gPSAwOwotICBpbnQ2NF90IGNhcHR1cmVfdGltZV9tc18gPSAwOwotICBGcmFtZVR5
cGUgX2ZyYW1lVHlwZSA9IGtWaWRlb0ZyYW1lRGVsdGE7Ci0gIHVpbnQ4X3QqIF9idWZmZXI7Ci0g
IHNpemVfdCBfbGVuZ3RoOwotICBzaXplX3QgX3NpemU7Ci0gIFZpZGVvUm90YXRpb24gcm90YXRp
b25fID0ga1ZpZGVvUm90YXRpb25fMDsKLSAgVmlkZW9Db250ZW50VHlwZSBjb250ZW50X3R5cGVf
ID0gVmlkZW9Db250ZW50VHlwZTo6VU5TUEVDSUZJRUQ7Ci0gIGJvb2wgX2NvbXBsZXRlRnJhbWUg
PSBmYWxzZTsKLSAgaW50IHFwXyA9IC0xOyAgLy8gUXVhbnRpemVyIHZhbHVlLgotCi0gIC8vIFdo
ZW4gYW4gYXBwbGljYXRpb24gaW5kaWNhdGVzIG5vbi16ZXJvIHZhbHVlcyBoZXJlLCBpdCBpcyB0
YWtlbiBhcyBhbgotICAvLyBpbmRpY2F0aW9uIHRoYXQgYWxsIGZ1dHVyZSBmcmFtZXMgd2lsbCBi
ZSBjb25zdHJhaW5lZCB3aXRoIHRob3NlIGxpbWl0cwotICAvLyB1bnRpbCB0aGUgYXBwbGljYXRp
b24gaW5kaWNhdGVzIGEgY2hhbmdlIGFnYWluLgotICBQbGF5b3V0RGVsYXkgcGxheW91dF9kZWxh
eV8gPSB7LTEsIC0xfTsKLQotICBzdHJ1Y3QgVGltaW5nIHsKLSAgICB1aW50OF90IGZsYWdzID0g
VmlkZW9TZW5kVGltaW5nOjprSW52YWxpZDsKLSAgICBpbnQ2NF90IGVuY29kZV9zdGFydF9tcyA9
IDA7Ci0gICAgaW50NjRfdCBlbmNvZGVfZmluaXNoX21zID0gMDsKLSAgICBpbnQ2NF90IHBhY2tl
dGl6YXRpb25fZmluaXNoX21zID0gMDsKLSAgICBpbnQ2NF90IHBhY2VyX2V4aXRfbXMgPSAwOwot
ICAgIGludDY0X3QgbmV0d29ya190aW1lc3RhbXBfbXMgPSAwOwotICAgIGludDY0X3QgbmV0d29y
azJfdGltZXN0YW1wX21zID0gMDsKLSAgICBpbnQ2NF90IHJlY2VpdmVfc3RhcnRfbXMgPSAwOwot
ICAgIGludDY0X3QgcmVjZWl2ZV9maW5pc2hfbXMgPSAwOwotICB9IHRpbWluZ187Ci0KLSBwcml2
YXRlOgotICB1aW50MzJfdCB0aW1lc3RhbXBfcnRwXyA9IDA7Ci0gIC8vIC0xIG1lYW5zIG5vdCBz
ZXQuIFVzZSBhIHBsYWluIGludCByYXRoZXIgdGhhbiBvcHRpb25hbCwgdG8ga2VlcCB0aGlzIGNs
YXNzCi0gIC8vIGNvcHlhYmxlIHdpdGggbWVtY3B5LgotICBpbnQgc3BhdGlhbF9pbmRleF8gPSAt
MTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKy8vIFRPRE8obmlzc2UpOiBEZWxldGUg
dGhpcyBmaWxlLCBhZnRlciBkb3duc3RyZWFtIGNvZGUgaXMgdXBkYXRlZC4KKyNpbmNsdWRlICJh
cGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oIgogCiAjZW5kaWYgIC8vIENPTU1PTl9WSURFT19JTkNM
VURFX1ZJREVPX0ZSQU1FX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZV9idWZmZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRl
by9pbmNsdWRlL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oCmluZGV4IDExYmI4MTI1MzE2YWFjOTEyZDFm
Zjg1OWFhYWRkNzMwYTgyMWNmOGEuLmY4MTM4NTFiOWE5ZWE3MWFkNTc3ZTQ5MGZmZDY2YzFlNzE3
ODY4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRl
L3ZpZGVvX2ZyYW1lX2J1ZmZlci5oCkBAIC0xMSw1MSArMTEsMTUgQEAKICNpZm5kZWYgQ09NTU9O
X1ZJREVPX0lOQ0xVREVfVklERU9fRlJBTUVfQlVGRkVSX0hfCiAjZGVmaW5lIENPTU1PTl9WSURF
T19JTkNMVURFX1ZJREVPX0ZSQU1FX0JVRkZFUl9IXwogCi0jaW5jbHVkZSA8bWVtb3J5PgorI2lu
Y2x1ZGUgPHN0ZGludC5oPgogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NhbGxiYWNrLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
cmVmY291bnRlZG9iamVjdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi0vLyBEZXByZWNhdGVkLiBQbGVhc2UgdXNlIFdyYXBJ
NDIwQnVmZmVyKC4uLikgaW5zdGVhZC4KLWNsYXNzIFdyYXBwZWRJNDIwQnVmZmVyIDogcHVibGlj
IEk0MjBCdWZmZXJJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgV3JhcHBlZEk0MjBCdWZmZXIoaW50
IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAotICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90KiB5X3BsYW5lLAotICAgICAgICAgICAgICAgICAgICBpbnQgeV9z
dHJpZGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHVfcGxhbmUsCi0gICAg
ICAgICAgICAgICAgICAgIGludCB1X3N0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCogdl9wbGFuZSwKLSAgICAgICAgICAgICAgICAgICAgaW50IHZfc3RyaWRlLAotICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNhbGxiYWNrMDx2b2lkPiYgbm9fbG9uZ2VyX3Vz
ZWQpOwotICBpbnQgd2lkdGgoKSBjb25zdCBvdmVycmlkZTsKLSAgaW50IGhlaWdodCgpIGNvbnN0
IG92ZXJyaWRlOwotCi0gIGNvbnN0IHVpbnQ4X3QqIERhdGFZKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
IGNvbnN0IHVpbnQ4X3QqIERhdGFVKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGNvbnN0IHVpbnQ4X3Qq
IERhdGFWKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGludCBTdHJpZGVZKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gIGludCBTdHJpZGVVKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGludCBTdHJpZGVWKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICBmcmllbmQgY2xhc3MgcnRjOjpSZWZDb3VudGVkT2Jq
ZWN0PFdyYXBwZWRJNDIwQnVmZmVyPjsKLSAgfldyYXBwZWRJNDIwQnVmZmVyKCkgb3ZlcnJpZGU7
Ci0KLSAgY29uc3QgaW50IHdpZHRoXzsKLSAgY29uc3QgaW50IGhlaWdodF87Ci0gIGNvbnN0IHVp
bnQ4X3QqIGNvbnN0IHlfcGxhbmVfOwotICBjb25zdCB1aW50OF90KiBjb25zdCB1X3BsYW5lXzsK
LSAgY29uc3QgdWludDhfdCogY29uc3Qgdl9wbGFuZV87Ci0gIGNvbnN0IGludCB5X3N0cmlkZV87
Ci0gIGNvbnN0IGludCB1X3N0cmlkZV87Ci0gIGNvbnN0IGludCB2X3N0cmlkZV87Ci0gIHJ0Yzo6
Q2FsbGJhY2swPHZvaWQ+IG5vX2xvbmdlcl91c2VkX2NiXzsKLX07Ci0KIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBXcmFwSTQyMEJ1ZmZlcigKICAgICBpbnQgd2lkdGgs
CiAgICAgaW50IGhlaWdodCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNvbWluZ192aWRlb19zdHJlYW0uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5j
b21pbmdfdmlkZW9fc3RyZWFtLmNjCmluZGV4IGVmY2E1MTQ1NTY2OThmNmY4M2JkMTEzN2U3ODA2
MzQ0MmMwOTQ5MzkuLmM4YjEyZTc0N2ZmNmM4Yzk3OWEyZDA1OTliMzYwOGUxMmY2NzllMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl92aWRlby9pbmNvbWluZ192aWRlb19zdHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY29taW5nX3ZpZGVvX3N0cmVh
bS5jYwpAQCAtMTEsOSArMTEsMTEgQEAKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS9p
bmNvbWluZ192aWRlb19zdHJlYW0uaCIKIAogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1
dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImNv
bW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJhbWVzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGlt
ZXV0aWxzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvdHJhY2VfZXZlbnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vbGlieXV2
L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaApp
bmRleCA0Y2JmZWMyMDE4N2UyMjA0MDI3MjcwZDgwMjg5MWZkMWM3ZjM5ZWUwLi5kMzI0ODM0MGQ4
NzVmZWE4MTc1MTgzNTcyYmJiMjNlOWI2ZGViN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vbGlieXV2L2luY2x1ZGUv
d2VicnRjX2xpYnl1di5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgKQEAgLTE1
LDExICsxNSwxNCBAQAogI2lmbmRlZiBDT01NT05fVklERU9fTElCWVVWX0lOQ0xVREVfV0VCUlRD
X0xJQllVVl9IXwogI2RlZmluZSBDT01NT05fVklERU9fTElCWVVWX0lOQ0xVREVfV0VCUlRDX0xJ
QllVVl9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCIKLSNpbmNs
dWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKSAgLy8gVmlkZW9U
eXBlcy4KKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCisjaW5jbHVk
ZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJy
dGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3Zp
ZGVvL2xpYnl1di93ZWJydGNfbGlieXV2LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di93ZWJydGNfbGlieXV2LmNjCmluZGV4
IDZiZGZhYmQ1ZTljNzZmOWVjNzI4OThhYjIwZTZiMGY5MDIxNzVmNmIuLjZlM2ZiM2VkMzVhNGE0
MDNhYTUyMzVlOTc4MWU5NWIxMDIzNDEwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYvd2VicnRjX2xpYnl1
di5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fdmlkZW8vbGlieXV2L3dlYnJ0Y19saWJ5dXYuY2MKQEAgLTEyNCwyOSArMTI0LDYgQEAgaW50
IEV4dHJhY3RCdWZmZXIoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRfZnJhbWUsIHNpemVfdCBzaXpl
LCB1aW50OF90KiBidWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyKTsKIH0K
IAotaW50IENvbnZlcnROVjEyVG9SR0I1NjUoY29uc3QgdWludDhfdCogc3JjX2ZyYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogZHN0X2ZyYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCkg
ewotICBpbnQgYWJzX2hlaWdodCA9IChoZWlnaHQgPCAwKSA/IC1oZWlnaHQgOiBoZWlnaHQ7Ci0g
IGNvbnN0IHVpbnQ4X3QqIHlwbGFuZSA9IHNyY19mcmFtZTsKLSAgY29uc3QgdWludDhfdCogdXZJ
bnRlcmxhY2VkID0gc3JjX2ZyYW1lICsgKHdpZHRoICogYWJzX2hlaWdodCk7Ci0KLSAgcmV0dXJu
IGxpYnl1djo6TlYxMlRvUkdCNTY1KHlwbGFuZSwgd2lkdGgsIHV2SW50ZXJsYWNlZCwgKHdpZHRo
ICsgMSkgPj4gMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9mcmFtZSwgd2lk
dGgsIHdpZHRoLCBoZWlnaHQpOwotfQotCi1pbnQgQ29udmVydFJHQjI0VG9BUkdCKGNvbnN0IHVp
bnQ4X3QqIHNyY19mcmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogZHN0X2Zy
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBkc3Rfc3RyaWRl
KSB7Ci0gIGlmIChkc3Rfc3RyaWRlID09IDApCi0gICAgZHN0X3N0cmlkZSA9IHdpZHRoOwotICBy
ZXR1cm4gbGlieXV2OjpSR0IyNFRvQVJHQihzcmNfZnJhbWUsIHdpZHRoLCBkc3RfZnJhbWUsIGRz
dF9zdHJpZGUsIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOwot
fQotCiBpbnQgQ29udmVydFZpZGVvVHlwZShWaWRlb1R5cGUgdmlkZW9fdHlwZSkgewogICBzd2l0
Y2ggKHZpZGVvX3R5cGUpIHsKICAgICBjYXNlIFZpZGVvVHlwZTo6a1Vua25vd246CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlk
ZW8vdmlkZW9fZnJhbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWUuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGY0NjE4MTQ2NzExMTgzY2ZhYTM3ZWUyNTdkZDIzMjBhY2JmN2ZhNTUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lLmNjCisrKyAv
ZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTIgVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
LSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNs
dWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgotCi0jaW5jbHVkZSA8c3Ry
aW5nLmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBzd2FwCi0KLSNpbmNsdWRlICJydGNf
YmFzZS9iaW5kLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0KLW5hbWVzcGFjZSB3
ZWJydGMgewotCi0vLyBGRm1wZWcncyBkZWNvZGVyLCB1c2VkIGJ5IEgyNjREZWNvZGVySW1wbCwg
cmVxdWlyZXMgdXAgdG8gOCBieXRlcyBwYWRkaW5nIGR1ZQotLy8gdG8gb3B0aW1pemVkIGJpdHN0
cmVhbSByZWFkZXJzLiBTZWUgYXZjb2RlY19kZWNvZGVfdmlkZW8yLgotY29uc3Qgc2l6ZV90IEVu
Y29kZWRJbWFnZTo6a0J1ZmZlclBhZGRpbmdCeXRlc0gyNjQgPSA4OwotCi1zaXplX3QgRW5jb2Rl
ZEltYWdlOjpHZXRCdWZmZXJQYWRkaW5nQnl0ZXMoVmlkZW9Db2RlY1R5cGUgY29kZWNfdHlwZSkg
ewotICBzd2l0Y2ggKGNvZGVjX3R5cGUpIHsKLSAgICBjYXNlIGtWaWRlb0NvZGVjSDI2NDoKLSAg
ICAgIHJldHVybiBrQnVmZmVyUGFkZGluZ0J5dGVzSDI2NDsKLSAgICBkZWZhdWx0OgotICAgICAg
cmV0dXJuIDA7Ci0gIH0KLX0KLQotRW5jb2RlZEltYWdlOjpFbmNvZGVkSW1hZ2UoKSA6IEVuY29k
ZWRJbWFnZShudWxscHRyLCAwLCAwKSB7fQotCi1FbmNvZGVkSW1hZ2U6OkVuY29kZWRJbWFnZShj
b25zdCBFbmNvZGVkSW1hZ2UmKSA9IGRlZmF1bHQ7Ci0KLUVuY29kZWRJbWFnZTo6RW5jb2RlZElt
YWdlKHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IHNpemUpCi0gICAgOiBf
YnVmZmVyKGJ1ZmZlciksIF9sZW5ndGgobGVuZ3RoKSwgX3NpemUoc2l6ZSkge30KLQotdm9pZCBF
bmNvZGVkSW1hZ2U6OlNldEVuY29kZVRpbWUoaW50NjRfdCBlbmNvZGVfc3RhcnRfbXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGVuY29kZV9maW5pc2hfbXMpIHsK
LSAgdGltaW5nXy5lbmNvZGVfc3RhcnRfbXMgPSBlbmNvZGVfc3RhcnRfbXM7Ci0gIHRpbWluZ18u
ZW5jb2RlX2ZpbmlzaF9tcyA9IGVuY29kZV9maW5pc2hfbXM7Ci19Ci19ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZl
ci5jYwppbmRleCBiZTBiNDkyN2JiZWZiNGNjMGQ3M2YxMzQyMzgyYjg1YzBkOTliNzg3Li41Zjg5
YjRhY2I5NmQ5NDdkYTI0NmM0Y2U0MmY5MTNmYzU1ODk3MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJh
bWVfYnVmZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZV9idWZmZXIuY2MKQEAgLTIwMyw1NyArMjAzLDYg
QEAgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IEkwMTBCdWZmZXJCYXNl
OjpUb0k0MjAoKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1XcmFwcGVkSTQyMEJ1ZmZlcjo6V3Jh
cHBlZEk0MjBCdWZmZXIoaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCogeV9wbGFuZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgeV9zdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCogdV9wbGFuZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgdV9zdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCogdl9wbGFuZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgdl9zdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpDYWxsYmFjazA8dm9pZD4mIG5vX2xvbmdlcl91c2VkKQotICAgIDogd2lkdGhf
KHdpZHRoKSwKLSAgICAgIGhlaWdodF8oaGVpZ2h0KSwKLSAgICAgIHlfcGxhbmVfKHlfcGxhbmUp
LAotICAgICAgdV9wbGFuZV8odV9wbGFuZSksCi0gICAgICB2X3BsYW5lXyh2X3BsYW5lKSwKLSAg
ICAgIHlfc3RyaWRlXyh5X3N0cmlkZSksCi0gICAgICB1X3N0cmlkZV8odV9zdHJpZGUpLAotICAg
ICAgdl9zdHJpZGVfKHZfc3RyaWRlKSwKLSAgICAgIG5vX2xvbmdlcl91c2VkX2NiXyhub19sb25n
ZXJfdXNlZCkge30KLQotV3JhcHBlZEk0MjBCdWZmZXI6On5XcmFwcGVkSTQyMEJ1ZmZlcigpIHsK
LSAgbm9fbG9uZ2VyX3VzZWRfY2JfKCk7Ci19Ci0KLWludCBXcmFwcGVkSTQyMEJ1ZmZlcjo6d2lk
dGgoKSBjb25zdCB7Ci0gIHJldHVybiB3aWR0aF87Ci19Ci0KLWludCBXcmFwcGVkSTQyMEJ1ZmZl
cjo6aGVpZ2h0KCkgY29uc3QgewotICByZXR1cm4gaGVpZ2h0XzsKLX0KLQotY29uc3QgdWludDhf
dCogV3JhcHBlZEk0MjBCdWZmZXI6OkRhdGFZKCkgY29uc3QgewotICByZXR1cm4geV9wbGFuZV87
Ci19Ci1jb25zdCB1aW50OF90KiBXcmFwcGVkSTQyMEJ1ZmZlcjo6RGF0YVUoKSBjb25zdCB7Ci0g
IHJldHVybiB1X3BsYW5lXzsKLX0KLWNvbnN0IHVpbnQ4X3QqIFdyYXBwZWRJNDIwQnVmZmVyOjpE
YXRhVigpIGNvbnN0IHsKLSAgcmV0dXJuIHZfcGxhbmVfOwotfQotCi1pbnQgV3JhcHBlZEk0MjBC
dWZmZXI6OlN0cmlkZVkoKSBjb25zdCB7Ci0gIHJldHVybiB5X3N0cmlkZV87Ci19Ci1pbnQgV3Jh
cHBlZEk0MjBCdWZmZXI6OlN0cmlkZVUoKSBjb25zdCB7Ci0gIHJldHVybiB1X3N0cmlkZV87Ci19
Ci1pbnQgV3JhcHBlZEk0MjBCdWZmZXI6OlN0cmlkZVYoKSBjb25zdCB7Ci0gIHJldHVybiB2X3N0
cmlkZV87Ci19Ci0KIHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBXcmFw
STQyMEJ1ZmZlcigKICAgICBpbnQgd2lkdGgsCiAgICAgaW50IGhlaWdodCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92
aWRlb19yZW5kZXJfZnJhbWVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX3JlbmRlcl9mcmFtZXMuY2MKaW5kZXggNWEwYjBi
MDA3MTJkNWI0NDAwOGIzNjNmMjNlYjQ5OGZhNDg3OTQ5Zi4uODE1MjYyNWY1YjJlZjRkNWNmNjQ0
ZTgxMWY3MzkzODBlM2M3ZTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX3JlbmRlcl9mcmFtZXMuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVv
L3ZpZGVvX3JlbmRlcl9mcmFtZXMuY2MKQEAgLTEwLDggKzEwLDEwIEBACiAKICNpbmNsdWRlICJj
b21tb25fdmlkZW8vdmlkZW9fcmVuZGVyX2ZyYW1lcy5oIgogCisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRp
bHMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25f
dmlkZW8vdmlkZW9fcmVuZGVyX2ZyYW1lcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX3JlbmRlcl9mcmFtZXMuaAppbmRleCAy
MjI2NTc3ZGMzZWYxZWE1ZDVkMjExOTQ5NTE0Y2M5NTdmN2ZmMGZjLi4yYzRiZGQ5MTc3ZGNkMDI1
ZjY1MDhlMmRkOTExYzQ0YWU1MDU3YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fcmVuZGVyX2ZyYW1lcy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92
aWRlby92aWRlb19yZW5kZXJfZnJhbWVzLmgKQEAgLTExLDggKzExLDggQEAKICNpZm5kZWYgQ09N
TU9OX1ZJREVPX1ZJREVPX1JFTkRFUl9GUkFNRVNfSF8KICNkZWZpbmUgQ09NTU9OX1ZJREVPX1ZJ
REVPX1JFTkRFUl9GUkFNRVNfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0
ZGludC5oPgotCiAjaW5jbHVkZSA8bGlzdD4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9u
YWwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2RhdGEvdm9pY2VfZW5naW5lL3N0ZXJlb19ydHBfZmlsZXMvcnRwcGxheS5leGUgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9kYXRhL3ZvaWNlX2VuZ2luZS9z
dGVyZW9fcnRwX2ZpbGVzL3J0cHBsYXkuZXhlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmOTM4YzhmYjIyMGY3MzQw
NmUyMzI5NTgxN2U3MWM1ZmRlNThkNGYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDg3MDQwCnpj
bWVGYWR3ZipZKWktfFRtUTBkSyZPajBmNUZ0d043RjBBTSU3OUQ9ISN6MDNrVSleMl4lQUc/UVZR
b0YzVzEzeQp6c2huJl9kOCtwRVJJMyEqK0NGXysral95djZBfV49eipaNF9ZJUU/N3NxRkVmTSFf
ViYkaF9hUiZ6VldFS0s9ZFAKemY4SWFkJng9bXhvVkN8cGQrb0s/VVZIN2VGSF5CMURBXkBSYSFS
dDROSiFFU0prdmtGR31lNmhTQVVXNUM5amstCno7bnxHOHAxWkBnX147PH4tTVRkVi1MKnhsKkw/
NGBIUSV8aj11VU81UWdxWDtNUWhaJWlxeU1xeHBoc152aFV0aQp6ZFBSMC1AdzkoTV9Xen4qcE9a
aV5BVzRnRFpmVlgzTyo1MEY5K0drI1N2RDc1WklUb3U/Wjd7OEAmZyNPTCVidSYKemk4dU99e0Zk
NHNsOVhuYEBQdlFKU1kmK0A0ZzM+ZFRPSEV2XmImRE0xP2wqSDY0K0t6MVd4XlgjdiQ/UylaMEhs
Cnp0VmFIU2hXPnYtRT4mKF91THZ5RWhaczdBa0h2UX5iQ0QkN2M8QytRUU5CWH1sN2tueFNKNFo7
aHlDK1FRdjBSSwp6OWN1LU1YeChWbDwqSU1OVFZvTDxKbiR+K2VEeSEhMXV5O1hGdVZ4eCtgeW15
UGs4PUlaeWttUW5GQE5kelhmbTIKeitCRyo1Z0gtTzU3VCVuMSFAS3A0Py0zJjVMSDFHKHpVVGZF
VUolZyNfd1dBIzJeaWtgbzJIa1NsKzNeR3g8eS1LCnpHZShxMitiK1lPanpqa0NyVERJRGtoczxf
Tm8qZil4Sjs1KGFBfjM+QHRnNjhnYlFJWVlRdyRXR0oyXjQqN2otMAp6KGpkaHF6OX50dThsO3hD
S1kxPWRvIWNtKF5Ud0JAOzRgbTshdkMyaU51NGh+MT9ncSZRN1d7VlJHX3ByYkheRCMKel99PnpW
Z2g7RHdhUHpTczhzcyhqbzdKdm4/KWFKem8oRG9PbjN6aHJfXjEwTiQkSVJeO3woZFlXQjcwSnpN
WVY/CnpMMjIjMz9UQXl9ZHklKShEc2F0KFI+cSRLRntAbn02R1ZaKGBIQmlPQFloT3c4aX0yJEVN
QzQ3NnMpOTVOKXBuIwp6PHUqMkl2YyNQQ2IjQVJAJDVfQX0zX3BAekNXWlRven5aJXdCdVZTP0d9
IW9AUFJPZStpRX5nbz15eDh4PGJlQD4Kej5IUihMY2hxJUMmd3V4aEtlK3lEKzdGQ2JrXzAtVDhk
bTNTSWs+VG9iI0AlZXVHZS1mNE0weEg1X1lebj5pOVVECno5cTJmbUV4KyZzZjtSMTFpTkM/QmRh
YlI3a21OQD92PTQyfThDXl9aZWlIUipYPlpJNUo0YjxgS3NESD8/LTNhIwp6WTFRQE1YZTtycGIr
d25hbStsWU1FWWt6V15sSHYzK3xqX0dVVThAYUI7dzwhN0goRjNzRVhlUjUhN2xrQUUwSmEKeihA
V2M5OEw8QV4lbX1eOTVBSzdZd1o9bnx7NklJSlNseXdIa0Z1R3pvRVZXYGMkbkMkbDMhck5idE1a
TkdIV0s3CnpSPz1VWjFwVy15T0Jkcy0zU3xmUm5gZnd+dUVGO1RpXkd9M3ljNWk4VTRgfTklVndT
eE9nI2kpRzxBfno+ZSpjVAp6Qj1UWnt7TH41WF4xezk8dyF+UzxrSyFmUktpM3ZmKHN4YDhyVlE3
UEI3Nmx8amt9OFByTnFgSEh0b2FCbUVwXiUKemozPHs7ODNvfWdkVStUeHdXU0F6QGF3ZyFCXypy
ZUJfWCRWK1BtPntjRG16ZUh0VDY+cnxKWSp7KFB6KHt+Y15LCnpXWXk5eGdtVmw3Mm0zTUEtPFE3
eUIzaVNUejFIenpIZnNfZjdmRXFsTDREOHRxSUlSeHtpV0BDSl5eRVlyaXtsXgp6bUQ2VCFCPl57
JVhKYH54NSRMZiVUejNgSWdDTVd4NjlVVm96Wlg0MylDR0k+K0Q9bV5uKWxsenNXcSpHciloXkEK
eitNciEtPT5SflIqLVR7Um1TXiQ4WU1mUjQjcDlCczJZNVlPVnNIQThxKj0qLTJUPCE9OHs0Tkgt
bl55eUN8bHlMCno8VWElfjcrd2spTUZVK3llKX1xX3Y/cDVLckMwWnM/JEltV1pJQllgeTl1P0k0
fmBafEUkd3BpPzsmOztibjRafAp6U09xIT9GRFl9RT8kLW5EMkx0VmApa29qO3tQIWJaPURvVW8/
KjticHZZIUxEYGsyRzYybTB2IWE9ZT9VQDd9cXUKekgrJHRNS1A0Wlc/Uj53Mz1abXh4TmhOSCk5
Rjw5Xlp6YUB5dG0wNSpoeXsrWnB1Mzd5QEpkdWVKRzQxeWltV1BICnooTzFkdWh6fXsqYSUlR0Bz
KSpzcUYkM0krJTF4Z1BDR1pGTiRhQkNfVSMraDgpK3tTK2syWkVgZGxGeSVlJkVmTAp6bGtDbT0y
UmRTUSlecSVxWV9JbUE8TT5sSXRaTU1eNC0xaEktM2JnKEo+UHdpVkBQSDlRe3hQTDtTakFUSyZZ
YlYKejwpITtzIzd0em5JdTFGYSZXUVFITCR0RlZJTUhDVWd0fm97NVVSMHx6MUJ1VnA7RX1LaSlR
Wl89cj9Jb25JPlZACnpBPDd4fTsod3NxOXE1dnA4YytDViVoSlpvcmFRJCRCRzlLYjkrUTtPNUhx
WGooPSVEYzM0TmlIZ2p2bj9wdTBmfAp6aDIxMGxrYFE3RW9IKHReVGlTbFpzX1dUNVY5b0hhU1ht
KEskez1oP3ZAeTw5Y2VvWXV0PklfamImQHNkTUlUdkYKeiF+WUMtcTgwe25Wakk0VjE9PWlXVkBj
RGoycS1qOClFV24rUDNKVDw0bkZ3PG83OStoRmZpQ1ZHZnF1RWBuXkotCnpFeWZzREY8OG1jZ1co
Xjd3ck8rczNpe3E/XjxkU3FAQjt2Y199Y2tgS2ZrJlM0QSNPNzZOOGFpZzEtfWA/Y2s2Iwp6eHwh
PGY0a1Q9UFY2WjF9MHhCZiZUT2o1aDd4bjlRODFxO2JmWkZOJCVAQGVjNDlTYD9PSyQjNUpta3lH
dVpWe24KenJCcEs8Ti0qfDtjbiE8VmUtI2dJeCVtT3s7RTxjNHQ7bWFxVSpSRzRKcFFvISlubXda
NiNoRnooM3s7bSktUTRZCnomb0Z8SyQlczhONENCO0toY0x6eTF7bilPNFkjNDFOaCZ7fEx6USlK
QyV6JSM8d15MJD5yNnF2MVhnUX1HTH10Kwp6UmBPK0pXc05JKFR4MUhVK1EjfFlDPyZ8WlFERzI9
az5CR1lgentoUSpyK089ZGxHclYmIUV0bldxZWRGbUZIby0KemUhMW02NWNBRGNrWD9UODdvWmli
UE94bHh0cU5aVmM5YD9RQVVefHoxd097NDVrI3dKNVZXWk1pN2pwQldTfUx+CnpEUH1JaDJUciZI
QzdGJTtYKnAlfnZZYmwocHEyNUhtczElZmJ4UWJlen56NU95OWZvIzRTemBRT09ebCFnfHJiYQp6
M3dmQkdkRyZsTXQzZmgzJU8tSkVAPmkqaTEjQEc9VSErUkNUYUBZc2Zrdn0xOGRfbUNEfVlfdnwx
IU5iTkRjTXwKekpPNDJpSmdFQ3g1ezxjRytoYFBocHUjTT1vTzBIMHlCTjRaek1SbWApSGB+RGRA
M0k2dy1jRE9VMmdzWCNNYTtpCnpUVVBfYl80QVIrc3N+SGshQnhIRVp9bU1jZzQ/Qy1Hd0BaIzJS
XjBUKUExYXdJTUx2Jlk7Y0NqWUJOV1dyLTNrcAp6b0V2ciU4O2RQQVVVYFl3QGUxbEp3fjhNRjBm
Q2lJU20jPzxLZURoeXFoKGR7PHxOaXchamRlaylyN1Q7cSF7RTgKelVgenQqZWVuRkdMK1Y4aEhu
ZT9KTHVQfS1rcEpGZntfYGsqYChqZmhRei12anQ8JE5VdkM5djwxbD8obndtbXpSCnokbjd6UShI
PDhLWHlrU14rYD1uSTBLSyVvQTtBfDdLeGdKXlhTXkd+PGUjVVpyYHxQXntMTFpqYk1HQVY/V1Y1
OQp6JFZpQCkyaUIqaUFzN3VqN1ViaXV3T1V3cFlyN00lNkpSJTcyQ2wrYTshcEhaJTJMSnVlVklV
dE0oTVNaUGVVdXoKejJCUihYN0t+T3VSPmkqbk1DZ2Vrc1FleU9ZOHE/fXVzWC04XyYhcmYoZkxI
O3phYkc7dzJINGhNdVhVfmRhX3goCno4WlkoZVUwUzE4UXM1MXAmO3hPaWQpRlErRUYxdGtWN2NQ
NE8xPlZwMTQ+V3FodiQ8M1BZYnV3RXghTzgkMTM4TAp6SmRWKXs8MXdYdUFrc1c3MmJIbmYyQilP
djUkU1IjRE56O1E0Wk0yMisrTnlsOGZ4TUQ0TjF0PjsxMlBURGVqJTYKej9aJFFXcSROKk5LOD9I
VWJxOEFucnxPNHo3ZXZlTExDITNxNVA8d2JaZEcmPDlFODhsN0EhKnFTPmFvV3QtbVpwCnp0PmhP
UjxaX35JJG1GVj9ga3BrcSlObU8mJjN0bik8KUM1VnB6MT0pNyVSSVNRWiFfJTskdDJ+UnlNZWRY
TnJSNgp6KzZRe2I2djNaXiN3M2dAOCFqc2thc048dUMwRUVhOF9AUypKWm85Q2NaKiQ9dT9YVy10
dihtXmZ+cDhVU2hXVyEKeiU8YXFFbV92VjZuZmFaKiswTXJGOWFLaExYSzh5flhRLXlfOFB0S0Re
RUNjS3UtN3pnYUVybEdabiFCcmNVLVdCCnp8TXQmOTloeD9IMSQ8PH4mQyF9MHREO05GRCl+Y1o1
KnZxbF57bCR5XjAhZ3tva1Q0fmF9K0J0QENDZVQ4cTN2Mwp6OCpYLTVXY1dtRGJXNz9PbCRwYl9l
K1BVJE9GeEljO2RwO1NZSVBoYHVoZUR8TksoZik2IUFPcXNLJmlYRVpxUyYKekFtb0tsdyNkViM1
KmthfVBHNEdNb30/Xm9rZlAtRWpxe3FhdVcmUClaTFg3NXlWKmpnWkhjPlNsVWRLcSM5VXw3CnpV
RSg8angqK0AqJGA0bC1weXluTEttNkIhNStYMmlOUzxFMyMhMFNUamhqXz96YD5Ge3YkZ0BSS0RS
KXhETkkkbgp6RmswPm0zTGRfUCN4eCEwV2FXP08pQWFGdEd2THY9OT9AWFF4ZUVDZENQQ0hCUzVk
fVU9NDUwcWN0Vns+KSN1NCgKem9uKT1VU3Q7ZmQqfnQ9PXhvazhsU1crPmw9ZGc2PGNiQ0FLcDZp
NGUleEllSHEhdnUlRztJPE84JUt2fVA4MHFpCnopJD93dT1ndlFoZGFgY2dNbUIqdF5tTFhfXjMt
IXBrK1g3KVktKmFlMGxvU1BUZSp7a3l0YUAjc1c2I3xhJWE9Kwp6TFhhP3dpd1lgUGQwc0ZZTEtF
PD5zcnBgbUJ8Pj8ldjVUU0ZtYjA9fG5AT3I3JCZhPmNoaXAoRihTS00pOXgxUXQKeiMrPD5uWkUy
dCFXP1VLSHk0Klh4JmEzQTVmKnYpYVdxK2dXVGtUWGJic0htQjs0cFEyJT1vbUtlVyohNzliZWtN
CnplSSt1WWYlMCNoaXw7KnBfQVRAOS1NKmE9SSR2QilpTm5hdEVhPnIjKmtzcDcyenA8YnlpfChM
PzFjO1VHRXc3Pwp6Z1l7QDI5Jjh9KkFjejtMKlM/bmg+Zkt0U01eZkReO0VCQ1Q0VkF+KyRmUyFq
bm8yJGNBal90ej0kVSN4ZWZ5Pm8KejMhQm4oQCFkViFFOXYqYjJsZVEpLVRFMzJ5enIzSSRZaHpt
KkE9JjQrdlc1KilfbG93ZVlAMSN2e1V9SUh8ZEp6CnpPZ019Y3FTeiVjVylzK0EmRk9ueDljNShU
JCp0cWYmJDFUeUlAYV9odko5NldgUU90VDxDMm1BMmNhVWErbCtLKAp6LSVnQkZAcmxHTGszb2t9
SzAwV0hNXyZscFF5YkFGbiVhY2I8dSV4I3t3KVdDWHFxYTsxeWc5KU9aUWFyT3cyTSEKejNjMCRN
Z2A5ZDI3UmEpTG5DNkgwMSEoK1FHfCpfbD0/STl0K15JWUdlMyY1QzJ9QzVoIX4/YjcpfiUzdFF4
Xnh4CnpvbmB9VjU2PkBgVm00cWVZb2l2M1pZPWhgMiEpWjN8TUdAcVpQYz5TU0JtcUhKT3JkPjJD
eDlyJXA/JHtJKldWZQp6NmckYjtXKW5oREppPTJFP2RKfGc5fSZuXihGY2tQSyZjWGAxd21OWU5C
I2pHYCYjLU5GWDl6PW9PJThRdSp+UTEKekdDVCp2QyNjdG1LKi1lVHFTdWdKenJDZWpTemRiM1NQ
VC1MVjJHYXdSSCpLWj0rYV8wTFFXeVhsZzYyeTBubDcrCnp5PDFYPkxUdFhYRzcpc2NLcDQ1OWE1
ZytqbGtSKWgyKWdDSTM3ZWZRe2hOUU0lX0xkQ2pydE18Um9kUnZScDNCbQp6MnhobShNRzQ+PjNR
YU9aZCFlUEdkSHo8PHFZNj9nZ1Vze2o5clZEUWtGTGdkVmpzcUxiRjUra0ZQYTs7dFdZSEIKejlg
ViYkays7Um5qQSNqOWxzZzxoJmt5JmRBST1eUFg0SDV8LUVpfH1HI1FqZjxGKys5JTk4blZhfShI
IVZTRTVqCnpGV3JjUzZUMUFHO3R7JitxTlpIKThPeF97LSE4ZU82XlBKbFMpKil2VkdIRioyclFI
VzNiJng0JiEjfDRQWmExSQp6eTwjIS1paDBPTW08Ym1fJjc1SXEhYFY0V0tQVkBDQmotclVuVD8h
O25RIyNsSVV6JT4+eDMxbVFkfCtBRnY5Ui0KempKcmJvPTh3cVBpRUQhaV5+TWxpZkgkWn55VyhM
cjkrdF40JjU5Zkl3VjVsP2tgakNiYHNOIW0oOFokRkMhIVVECnpSaDEjJFFIYS1JRDEwTip3aD07
Kio4PkM1OFQxRV9ATXEyKDdLST1mYTwpRytePz9RRCh6MjROVGt3UyoqNzMydQp6aFd7Y0hFRFVa
VjVGKHRsSElCflVHWENPTk4hbXVwRVQ1KCtDRGlDMGh3Vzc/LUA/TlM1RkgxcV89Ny1ZKiNyaVQK
ekwoRlBRdk1GbSMkQXxXMWooMC0qNHF6Wns4JlA4V083YmJ1Q0oxZShNPV52Nm5IP2RFUz9BZUZo
OzVWdmklV0FaCno4cGk1Z0dMPSp4dCZkX0FuNTlzTythdmZCeCNraX5RQy1iPXY/bF55cVpFMT54
dzwzP2xMJDU7OTA0N0V7dlJNWgp6TklTenNteUM0dCFNMlNFUTl8VHUld0l9U1JBZVIqdzVqRFIm
RjctQmx4JHpSa2BkeTZMSno3bldSfnRyUSE9KHcKemllWFFydihkaDRjakhKVkdiZjgmZVRuKk1X
SWUzS1h5cVNGcm9xJH5hNFU1ZlU3WmlWdj14bEJ4fkZIVnFuaF85CnpkOUN3cCgtKyMqT3MoQ24/
WG94VFFJRHVvTEcycjVVTXRFUlgtZU5XM1MpKD0zejRJKj5TXiN4XndDV0FSaytuTAp6cTgtN1Ir
ci1zSmxRWFgmN0FYb1ImZkYkdllPel5FM19PSCNxZCpiVFBNQUprdE82azY0ckwqKT1pJGdid280
UnAKemVPPHhAV1RQRjxoeTlgZjJ1V15zIUo7SXFGU2lXOWYofldOKUVXemNhK3JXcU56XmNeZmZF
PkN0TlNQe2NGZUhOCnpaQjEpI1NEWjZ1cyRhM3tKUkxKVHp+ZUBrejBVRn1MJkBJQ3N2IVROc1kl
ZkRgSDEqMlgjVFRmKDR5P141YGx5cwp6blU2XlgydlFnQHpeI0NWUTk+YWJIM3dabzFsaSh4MXZr
PXIwKTM9V1Q0MnpkMipkP0IoMHhkMj8zMHVRVEheXngKekUhU3FRTWBLQ0tJOGw+SSVwU3VKMTdN
b2lkI0B5fF9MfVRmQGUqUmg8fDFBcHoqKFJpXkZTaDB2Zk55U2t8O2hACno5WiNmM3RfNDZ4SS0t
NXJKeClwUyUrO3JvbWRCMH5KNjRmUDtEOWFGOypvbzhtI0Y3WlQra044Z2RfYU5SUG09dgp6TWUp
V1lEeyhZaXtCVEB1R3R1NXBwfWkmMEA+bik4Uj5AbmlFQCpMU0ApKUtqc1huSU4+JElzMkxXZGZt
K0FMNGcKek1lcnEmWlkpaSpSRVhBeyF7VU9FdGclVGt0VHAqYTdFbkE/ZmFyJFB1fHpTUWdwcSY8
JXAkKWNWVGtzczskSTtRCnpZVm81cjdEIU9yaVVNam84LT4/cUJWNFM9XnQ4flUhPjVTN0VYMFRl
UHdXe3lsMlIkZkxzflhRXmtUV3FpXi1xMgp6a19TWUhsfHMmVUNhWFlGJkNgVFgkNkZqenFoNms+
JWBkTT1PNFZkZ0Q3MnVNUlQte0twPX1hcWN8REBKellubWUKelN0MzApQ1JNbEElcTxtMTY5UGVR
M21rPiM8RWBSPDUmPXJMUyM7ellOcm1NPTluJkk+TjJqYVBsM2IyOEdvWlFHCnpxKVBPZGpMQl5r
TkE+S0RYa0pzNnprejdjcFFwPCRLTkM7KD5GT2pRMT11bElDc0hka0E7cHRMYkNNQFppZVJrJQp6
WFFYT2ohcWw+MVR2UXd0SXshZTVpeXZHciMzUSM9QUp5fVQza1cpTCYyJS1iSjgqUW1rJkN+eGpP
P0AyQ3Ngc0AKejM1SzRjcHlYcDlFUUo0e0E7S2VzcEhSdDlBJFcheyV1SWd+VH1LTUJjV1VINnlh
UWp9JFM3a1M3QFp1d1d4bkk8CnpHRmYtJnsoJiN4SW1lUHU8e1YmWC0zQzZWVFlKckJJSjhjQ2ky
bnppSDhUNU9udk1zYEZXbSNuWHs1PCpgeUc0egp6dD17SlM+SXYyWHFFakQlYmw5JXNUenV6TmRa
bFVqKD9vKmlrQSU/aTVyfmRPZlRkUFhoc1NtZjdSZncjVnxeXlcKejc4U25vQ3YzRXlnVUU5X3Jo
RForayE4KDZZalNQK1NZbntfZi08eXxUPlNxK2IlWHE3UUFvWmhedmU2I3dKaXpkCnpDUD1mfHtW
JkloUyZgRT0jbVVsKTRRdiM8Kk5JRypraVY+NHo8U19yaT4hcWhZRFFXXmpkJDJrTCU5T1R1M3BS
MQp6ent6d30xUz5oSFJ2TW5KcChqKiU2Xnk8KVV2YFJ5K0xsbDdAZCRaZiFoeEF3cih0SmxWaH1m
ZEBYfn1hWkpWZT0KejtTUXNTOWNTMDA3elhWaCNERyN1QTxFQ2BwQHd0JSglPkIoNERvbUFkN2Zg
M2lGWnYwZDhZOF5vNFF0Rzs5RDlkCno3b0wwbUY4dHhLO1Q8Vjs5SnJMIWs+WmJFe3xlY3lTWXJ0
Z3NpaTFsUjwwS0R6ckk2MF9lWkgqOVU+UGtLSzQrcQp6cm1uM1pQdnJAe0pXRDZ2TFJPJipKSjdz
JTU7KCkzd1hWMGNuSX1NNiNNOWh6JVR2SU0ySHB6dDdidmREc141fSMKelJgandDSl52QDlIKDAl
Pj95SEk+UzFgNmUxfFdhQW1ueD0/NEcqU1I5R3xMS0Z8aTI4NHtfWmorVD9MYitkRlZjCnpze1gm
RShsOGBlX3Z4LURMNndaQz5uU3x3YEFeZXBeJDkzdXtfaEJvUDVlZCFKamlffU4jT3Q+bX1DeDdo
aFQ4Xgp6PkxaRCVncSladmF0OG9CUVgmWUMlT3xSUSstNkJ+eFRzUlBWPmxgVHY/NVVPdVhGeiN4
JXFST0BhRipqdXMrOUIKemw3em4yKj5wdyhpWlQrOHJyU2xKQXNMYTJBeGUqYilKQVp1UmshPkgp
bDxXTmd3WUVzaW12VWMhNCEkRjVkait5Cno+bEJzJXhUNWJ5MitPbzk7ezZEOUdyWEBAdUMrVX5M
LUIhTE4wK2JiP3JWY3B7MVZKTVQjX0Y9P003O2MkRzd8TAp6MylvK3BWemwrY3d8aC15KTNHPz5D
az5LdWpReGNqTl9eailfYFdsN3hwdkglS29HJGdTaDJqZXNfWXY/RHxzKE0Kektxaz9Cd2FiMGA/
IUs3NClwU2Z5SmhVY1Y+dkRxSj1qPjMzam54YVpifD5jUjMpSkordVNnUUByK0Y8cSQtZE5QCnot
aVZmJClibTtYdno3MytQdVVmaGNGTHhEZFIhc182cGhUfXZtWmsmTER9Q095Xjl0Tz80UzdlMjN1
R3ZmPkZnaAp6XjZ8R1pKKWpPeD9wKFMpVkZ4O1ptPEBfS0cme3c1NWljaE9tcj1te2QlJExXZFRD
MylYPU8je0IlWiM2PG9ucmEKeld2WWNPdlZ7MDc7RGZmejR6UWsqend6OylqYmllZkkqRFNfWFl7
d0ZVd3YoOyZAYyVjLWtrPi09UE0zT0xgN08+CnpTYztJV2daJWhecFBjfFo2VFN0Tjw5OHYhPWp3
dilDfFRoPDNHJnU5dzYhKDIxZEVMbjNCdHJXNklMO2Uhaz9uYgp6d2MqREp4OXUlZGpOKzshaEN1
ak5mUTkmVDBQMVBzbyNOJGJkUHh1ZVVBKzheKDV0PD1VQXE+TzBuQUNyVGsmY2IKeiNmUTlOVkZx
YT9aUnVWai0mPEhsJTluY2c0MTQhcl5tQTd3Xjc4PEw5a2M4VWUrQnZwMGI9Y21rUEVOelczYFJR
CnpKVFJTfTI+SG1oXmkrVlNyKUpRVDgmQX1SUTE5KGRKZDUmUjtDP1IjNnBVWXF7R29DSXxJclk5
aChFd0xuZWNEbgp6M25KYXg8QkNITlIxVT87PXZoK0k2OFhlTkMjQXBTTDZSfHc/USptYFR6KXtj
XzdsM19zciVnJmdVWClfJGl+Q2wKej0mTi05RmNjVWpnaGMxTmxrc25+ODNMYGxPOGM3PHEkX0tN
ZDRmJXNkaS11R1RufkVtdEVuTG5GNTF0c3VMZURSCnozemg7VGVkfHtJVyUmZVkqe2BfdWB7Pjxw
Wkp6PGFjN2pIS0AoM1Vfb1QxeDBkVEVKZUNOVjBoN3FoOXZuNEAzbwp6YzQhflI1cXtsSDM5TmV2
bEB+JWZURE96K1R0WllkP2tWWXgyNW93LWJ+eFRNQylXdXAxNyMjQ1lofHwydkVQdnwKeldVJVht
aztkfGFMfk5sYFUqeXo3Wm1icFB3UWhaZEdtNDdtTEUrOE8pM2p7fVVlPnZyNG9pSXFpZSN9NE4y
a152Cnpfd0FLYHVucHc8Q0EtfUdGZGo8JGFyUTtZbSZ9V0B3TkVfMEZWX2h2NXphK1oxUWFYbzla
dWNqNikhej15bjtSRQp6KTteNTt2SVVScDVRdHs7LUg2dUYtJTYpSWJVPmhALWIrVWVMY1NJKFJU
Q181QmpUaSZBKEQtUGxnUnA8NXJmN0IKejZ2SFpKVXpVYHp4M3kyNEhtQGlQal58Umg2SUx6QUta
OHFHWWImKjR0KjkldXUpdkQhRUYjSU0/eHlZcEVOaiFwCnpSQnZ0T1FVRTEybFlmbkljUlJmIyti
TEoqa0U3bDcxWE49WkF2XmxtSWlrZjYlRlB9ZCs4LXstekxIJHVtJExSYgp6I0tFJGNCZkNUUFdm
UGdUUEJ4bUZxWnJSLSUwaD9pY3NyRlNCUWN2MjdZd3tQQGw2TH1yZlhkd1h2fTIhZzNNQE4KenpD
fFk4YUJVTSpNOGJUPlhoKE17P0pPIUM0aEl+PXgwJDE0cFFEcF5vdWE7dDhSZ3EweGkqb3RDZDNg
XmE/dDxiCnoyUj15XmFKKW8lNTlBLTQkUD00ZlI1JEB5UiNPTGtCTWtKcTJuSkg3K21WVXBASGJR
RHBIV1h9SVZpV0IwOHV5Jgp6KGR1fmcyYjlJPERrSzQ8Wj0pfEclPj9vJTtkUjUtMjxAM2pgTSs3
dXB9SzRuNjhPVEEtcWRaPGA9JnFfbmhrLSQKej1GNjZZPzJOZ2pGUGcofnoqaWxZVE93ZGgrdSR5
MHljWko1RSVfM0xjezFDQC1iUGhfQy1fa0VaQndaZldJX2I9Cno3fitCdWl5QGYlMGshNGQ7TVNE
OSV7UUNLbSRBUTx5bG8xUkVwakt5NWtaZ1phfk9yZFkkMnpeUzhgQHFpMnZGbwp6MHQtS25HPDVj
bWZObnh9NzhMbnFyVno0YHBXbHlYTEw2aDhETEEzKzVASWNKKW9KMWUhRjY8MitBQ3FrRkVQZnoK
elNsUCooPzFHdmpPYl87YkxnJl9EbztPOXZucV4tfWxeVXhWOV5ZJjAkbHcxQClQX3stOXJvSWdf
V3A+Zm45SUkmCno5TWAoenpIVzVgSjVfUUxSWDhGX2J7cDN3N1AlUX1TJkdQajJNOzkmVTsqYWZA
b29NaDdYMj9XTUYkK25mYlJyXgp6IVBHMiUqaS1Udm5WbD9wPnY0NFk8fjswUF9aLUNrSCt0aW4y
YHtWVWpmKGAmeD0jJGZoSWRGejRHPmUoTFd3JEsKemtid3FJVjhKK1NLK2BHRyVRYzghI3Jhfjhz
X1A3clRjN2x8dSooUkBhYFJVSjBmbzh5Sk0ybStgWEA0Zjc+OStqCnpXa0xhamJ3dXpjZ0RobVdG
cUxROUNkfWo5SHErK3AhJnVVOXc8I0MxT3BBaXNDLU0pXnlARDMlVX05TW4/My0hRAp6dzhiIWkh
fGs4VS1XK2JER2J8Zmo8enk/SWBmQEJyeEVjUEl5WTw9NVhlRz12WSMhfW1pZmJGKVBQPS0remlN
Z1UKem85b2hwezVAS3xwZz1jbDlreUg1cHtwWGcrdGxlbVhLZWIyT2N6I3oqYTVFaDN6THdvMT4j
UTR6I0o+QypDSE1qCno3WWl0Ky0oYjNHYilERW0wQVhoWWBFT3tUey0mKFNGTlNBRGBuOGl4IVdx
eG5ecTBrJG9FQlo+Jl8wU01qVlI1Uwp6SG8mJmpgcCZWMmc0WX4tRndgVW1aSHhAUVVDUX12bXNX
SH1OTHs8ZD4tPjg3Y21ZKyVrUCV4aEVYSTZOP3A7bCUKej1IT2VzZnB1dUA/aTRBc1QpVyVuY1Bm
TChqelFWVWJ7UjlhUTQ8P2VuYzM3R1k9ck9jPm5gWkFMMCQ8Z0dhQytDCnpZYzlDXnE/eFhkQFZO
K0liP3UtNlgzYChJYEJteUdHQDQtO0pkUGE/WXAwJll0MnhINCQpTTVkcEFeYnNvKzJqZgp6ZmNC
WUZyQEBUOT9qWTVRKjRwJjMoT1Jjb219IWxadm1BUklWb2NPSlBCMGB1SjF9SjhaLV89c2k/PEJh
UEIjYm4KelopazNUSWw3OHI3QlZBIUchZW10RzBxcWh0P15nISYoTCNkcCh+Pz9tJT9uPFZzKkAx
bEg5Nnc5cU1ydzdsR0JLCnpkP2w3fipfPmpKKT5WWUhfaHI/VVowZ2t6MkNWMkpfNTxNbklnMWxa
LTBVdVFibWl8b0V1VV9AZ2dNd2dIZHlqQAp6NiZxRUgwcUQoPVptajFiVkJFdkVvUGV4Kl8pcWF3
cD5AVnZLNWFhfXR9S1QzSmghNWI5REpkKEZtNHMoakFeXiMKekxuY2w7M0FLOUJSNGM4K0t9fDNn
eTUpT35SeHNWTWV+P3RDWGRtMGk+dDxKTE44PyhMKUE1MXRIVG5NQ05HZVVWCnpeeWBncldkWSZE
ZVp1S2xsZzN1TmJ2MiVuPCFZeHNSYWstNVBQWDJ5WipuN0B0I3w2MW9GYlFZJU1Ack1ZJVoxewp6
YlVXKVQ+Q2d0ZllyLTBMdlIpSjEwVmY/Nm5IclNzIWUkQjQhb21WcjhqczF6QFhudG5SeVNSJkkq
dGBrUSh4Y14KenB7MVpjTnRjSzAwTTtuOzVUQiZnT0VDOzI8MyM5cVNocEQ3d2JgYVA+IWl3YXIq
QllBWFdnOztOSDdRQjh1P0RHCnp5JTJKKDxWNl5vWCFkJGc4TXpFekshRXllN2lQNlRwe3xMck8z
MGBiOEI4MHl3blN0eUZjX0diQCkzVXRCNDJoZwp6LTtHdjIoeUM+TSVRKDdBNHY8fWI+YFJQWEZm
ODVyczxgUUMzT2pERFBte05hWDNxLW9iMTZIPE5kKz9eREJedW8KemtafkllNEt3b3w2cWt1IU5+
M1pHcDVIY281RFcodDJKJUhpYWZHO1FfJm1ZbUFpKEVDcXsyfTl6RjAlVXZ1TUFYCnomQCNSZSht
LVZxbzVPZnAlWCgtfmd7aWRXTy1YeDRMeCQqX2h7JGMtTl49YlFLc1V3NCMwdXw2SWpzUnR7TDl+
fgp6WTAtSSE4KSZ1OUk0Uk87Plc5JHxkdWNGNVZ7ZzcwZG92YXZ3aEw5WG5+N3MjX3xCfDNTR25a
dHNGSVYyWmo9KloKenc8X0M5YEx4ZCorVUpocnpsPDk+YWU3YVlmZ2FxaiVIbnckX2BzOXxnfDsz
VipvQWdZRDBUSUVkVVd5VmMpZFEpCnomZUEoUmFWWF9feDwxZGpQP0A2N2JMO2F3M3paQT5kMHVe
OS1hPSkoS0NlS1pTR1o4ZypYSUBLXk5KVEw5KH5AMAp6YG48YH0lfktZdHlMRnBoaDdyTXk4WF9f
LXpPfTsrQzJMRmluWjFndVVZfDE+PiEqfk9sMSk4eTEydkJ5dW0yQS0KejF1XyUkZUcjbEJ1NHNx
TXFJVn1TSnI/aWdjSFIzMno5fWZtaVcod3NoYGdNPUI8JDkpKD5zO1AlP0ZqQCkpaDg5CnpQUXY0
dSkpalU8UFFZVk0+azA9UiREcnBtQTVeaCUrWlh8aHBCPGZUR3UrWUhjRWJeIT9WdkZjY0ZnJi1M
JWpzZQp6MyRKTiEoPGU2a1lkUmRrS2dBJjVUbG9pcXZLS2JAdENJJEhWYyMtI0BmaGEtd2NqNjRD
P29wKVVuZGsjenlDfV4Kek51T1VGSChzMVNlP0Q3Vz8zYGNIVmFYdGJyV21SI0w9bkEjOFdqUTJr
RnMwc1RPMyR5bmwteHxmZmdpVGtNYypDCnpTLV57MVhXTz12K21LdztJQGBYYis+V1BGdCtPNGQm
ejVwVGxidmBeVGNFeSlPPDBpNV4rfW82RVRmJmc2bUY+Uwp6RT9EcFctUzFVKmJHIU4jc196PXR1
STt1N01YfWxkaXtgWWNSIWNaSFVmRjdFOVd7TlFJPVF2WCk+Pm8zKHxONkIKel9TUENabyhmdmE5
SVo3REptcU1nSkstdX0+V01zIUp1THxsYTJSOWRiKFBKJVBDWl9fciooSH1kK1YtfS0zLXl3Cnps
d0UzY0ZYUjc0Qk1SJUFUZj1Zcm9TckNMbVFANDRALTUqU0JVKXd8MSFgd2Y1e2o4RDwxMGtBVVNG
TWU5UmsoZgp6O0liT04tT09OJjU4PnJVUl88elYkcE9kdnZfcFgodz9OJHtMNW0pRzdgOHNgIz00
Zz4xSXJUWDZpQjdDYjtSXmgKej5MbTZpXzZ5bmx2bT9fYk1XIVctT3U0Tjxaa3R+NmYkfEJWSSQ0
THxFfkFCI0ghSyR2Rz5JREcrTD5HMmgtdyU2CnpUTm0ySSheeCMmI2dpOUxxUU1CaztXeXJiejlB
b2kxK2QpQypAJURCcCNgLSs3M1c4NSliUEtmVj9hMSFXZE5nUQp6eDlePkdCa0l8ZGRpe3pydGpy
PmxAMTQ2cDJaajBgPVc8eGBmTHB7RUwrbXw9YTEqZz4hPnlObGRkaShePWxHQGkKem9ecDczXyZY
OXxpKmhYM09WVGEzWjl8QnthbSNId0I0WEVmLWc0Vl4jOEVFM2N5QFhEYHRhcWZEPX5FPyMmUVVA
CnpJKyMlTjV+Pz8kZEpAPmleI0xOMVQzMjQoc3ZFOUhzRjM9aUlkNFdZXzBQa2ktUlE2bl9DTmR5
R0tVWX41NUVlWQp6MDR5c1E/RHZjRzhJPGxoMmtCbz9gWTA+QytUQjBmPDMjPnpEU2FsVGtII09+
JiY+UTQqaGc3QShvdSlgMjhRejYKemBwZXlKYil+ZilUPCNYZkJeKzF9LWpBfj5BUnYrOVUmYUB9
X3M4Rz40ZkJkMkhCKEZ7Vmw9YnFwWCtmZDt9VThkCnpiJVhrcExmbHdCMSpXOyZZXllrTiQ5TmNh
TXQpKDFIKEJoZWVedVpoM2hicGRSIzlMIT9Hc0tDeUQoV0F3cG1iVgp6dVJAdjZEbE1II2RuYDRY
NkptV2dSSX1xbzY0Mz5+RjcwUXw9a183ODJvQV5MR255Xk80bUtzVCE0WUlxIWl6RmwKekN4KXJt
K0A+PVc2NUlHRHRBNih1SiljX0lUOz51YUloYElWLUdncTBFdjxVPjNCM1p4MmUzQWkwc0N3PCZ2
bUZsCnpfPlV4aGpsX1I5d3pIdTVNNz1ZeDZ5ODV1Ry04bWpKfFYxRTImKiFRZyUhe3VSI0RockNh
QHxBWXZPb25ZUWljUgp6aEJhR2dSVSFYMSFjP1pmTXUpMmplTDEwRGlhJEojUmNSRDA2dDlxUE4r
SHNPO3o4Nj1ASEE0O0AkZWZgJCltJjkKejZQK2lCJmRvJlVTKDZTcnNuOVVXZWpUI1lhKF41P2pI
eTswaFJ4dHxHZXpgQndkOXQ1TktSYGtNa0UoZytpeXs/CnpWYE58aDdkcUJEdjlnYVdQUX1IcChp
ezBRRnZRO15fUWRnYFNeZWBvUFB6R01QKW4jaHAmbT05TUczVnFwJSQzawp6M2QoU2tQPTtjZm1v
QDxudjR9dHN3cXtsekdpcj5yVnZuckhyK1U+ZW9WRmhlcm0hJFFnQkZ8N1NAdXk/cFFXbikKem1h
NGpFaXgzJHRXfStQUGleQFZOYXA0PUc2bEg/Z1E7X1hiUG9NX1gkMTx1MTRHKyRkPXZaXkNJSHAk
JkxLUzE1Cno1bGA0K3I7WmV4NWc/QEg9bWVoRitrZ3skKnQmb28pbmAqJjIkeG96en4qSnhTWHhi
bW5oOGcpRiVSLVZQI1FldQp6eVREXlZAJVJQdElMWUxaamtoQSotXkpGQThYUHhAM3IkMX1KMSh7
enBgKE8yVEYlbEF4SEVDbGQ5bSR3VDdTOUkKenUxdUMrREVCJmBedlpiJURwZGlXVilHa1F7VE80
UGx8d2RNVERRbERUMjM4VXIwRms7Y2tjK0plX3tOdSpFWGJLCno0fGM8TztmKC08emZabGNAcVFz
b2wjPUVVOF5rQ2Qjdl9hJEJKPTM1MyN9WXhsO004THUtTUUxP3sjIUlqZ3RQSQp6bDcyKTxtenpu
eDxKZitINmUmakdxazhOeXRvUE04djYob19tbX5KRnRQIXhSOGZYOG1oeVoqP2VxbHFKPEZ2YCYK
ej08cytWYCRyPUNPQ3RNc2tVPFpUVXMjcHFjKXdvVGdnVDU0UGF2RyNnITJtRkphNkgmck9SISg8
QDA+fDFsPGhTCnppZXJNNilZdkdSNE97MyR7ZjBRaldeU0MpK3UpUjY1UkMrKFBKRS1rIT5mZHdq
IUlDenJkIzltPC07Nm1FQCltJAp6aUBiNCFpdmdQPzVfVGFwNXtRZkVmcWZIdWBud3pvXip7PClI
QHpWIVJIUGAtIW8/PVI2fSNUZSoxMk9VU2AranAKens7ans7c2EoaHdkMztNZTNYQylxeDc/Rjgq
Q1huKGN6QkwtPGlKY0lERWJyYGUjQEwrRndnQEZmank3P2Z3KVo+CnotQ3F2dEtZfnRiPHBLTERJ
UT1sa0woP2M0cEpgcHNpKW9iRCt3RyNVYGJKYVpxRjV4c0A/TWE4TVZGIzZMbk4wVwp6ZDhESiRP
dHVDMjdzQ0JXQzc8X19aR3U8YDcjLWUzSnpAPnMhZEslRCZ1dE9TbjNga0hpfngjb0d4bEBmcDx1
Q30KelA1PnJCXmJpSX1feitzeHlFfm8rMEQ4JTduNiRxeyRpOTVhcmlgaVkyXkAxdjNHcWhId0Qh
T157MGdnX3taTDAlCnpmJDw/NUJCN053dUA4YkQ9ejx1WXE7VDJTSkUjYnNpd2RKUDc1ZTU9a1U7
YURASmJ4QiFtP2U/T1NETks0fVo3Ngp6VFkmfEBuZTxuJU8lSFRWSW1QMXgkVSF7VDtZMHwoVzJo
TEdGTEYrfCFfR2A0dTVtY1MkXkIwWGRHTzV7KiE0JEgKenQwd3pXd1JyQkFzS3Blak1RVzV3KT8o
e2NvOzZnIUhiTVZ0TDd5ckNgWXdMeDJ8PDR3MFRUTi1NLVE+KWFwY1IwCnotZmI9fCFiRlV+Q3RL
YFB6WDtXQFdwIzB9cWR2cmMpdE57JXdGM3FqakhNWkVteHNAVyl8dFVyJWZ8NEN6I0BsaAp6YCN6
TWA8NTtrRSYzJG1uVWNya01peGIqdyY2Ty0pM1ZIe3g3dDFjYms1N0c/Qk8rKzhmJl9FU2VFcm50
SVo4VWQKejBNMD5RSkhUblQwRGx3KEh+R0hDQj9vR3JIdUZoSG5ecXY3IVopdmlhXmIrJTVvI055
MDMmITZlQzxSJnkkY1VTCnpJUFZTRyV0UE5tcCFYcSExPWBIVFJZYykobVFOM2VZWWY4cDxBfHo/
LVN2Vz5ITkA4RUlxUEsxcnlDcU5XT2RLYQp6Tno4ZUEtNWBQfkxXSUJIQSsqZzVTNmcjeTQ4el9Z
em1yJF5BeElVcTk1KExgQF9RQCo8aGhNbGhDaWtZLVhYOWEKejdlVUBkTXRVWkc+M0tNRz4oKl4/
RUtRUll1d3M8ZCZjazUkeipeQXF0aT1sc2lSWnZ8YlBIISNqQWlLZENlWVZgCnpmRyhXbz9YPlNn
SkRFXlVVUEhURkdLfUwpIVVsOUJfTTtjRDliaFpfaHtZMHpweX59Y09WQGNGKXV8QilQKT59RAp6
dXwlJWImSj4zUk42KHs4ZHVpKmZvMWV+dzdoYyFkQU1uX2Z7UWdkeDtfWSRteFZqN3JeJF9DajFk
QGpETUs1amwKem93SXJwNGt+OWdyMTYhPU5gYyplPWl9PURMJGU1I2Z8Y35MeXZMdGVMZmhpdyZ0
YmAwOWFGam9MMGB8fjNlYjktCnpBXylRQDsoVVd5ekJSX3h4aD92YzRYMWI8bFpJTk9vO2dMbnt3
e21jcmlTe3ZpaThEVGg7RGBYKTxlV0FUPlU9Mwp6Y3tIZExYWUJ4OVotRUNiYTNNfHtnIW9NKylQ
bEt2WFhLeUx4ZTBTUDY4MEF6en5hSXM+WWwzMS1LWSM1aigmdFAKemZjYUdXMV5MUzFObDV3VWBs
UnY2cUNQZDRNQTg7LVlAKGc3V0UmJX5Pe2ljZWBqVFhmKmh3UldrJV8zWk9gdylFCno2XnA3VFZE
SGhlNno1OXVAKmdOclJHNDFfVHhMeCpzYSZtIys9YyE/SHJpcEV8OXIleHklLW5VQmBFYHJYZHBZ
SAp6clotaTFCdEo0JGMkeit4KGxIKk1xfl9qU3M3JUhWNTNyKEtWU1FoMmVVQ0ZQI1p3d21DUmgt
PVFEYHpmKT9fKyYKekN6KUA8dnk9NDNhUDQmOTN4KE5+YkVCdihMTDJgME00WVRJbGIoKCE9YFRr
SlkwUyVfKSsyPlZqKFJxIWxKP1NyCnpzMzx3VUxQJENEbHt7bHlQYXV2ZzUjd0MqIUVZM3A1QUI4
d1gmdH5FNkkwZSRBODx0OClmKUZJQmpgXnF7VFdTdgp6NURnXkhkKGFydTZCcmFGZCt7SjdqeTxy
MCM0eUd4aXN6RE4qJXpoRnZ6fCMyeXU7IyorZHVHa09rMUU7JVd4S04KejVjP0o0KmokTy1kZ296
VSVLRTQpVUIqfEBiOHBpfWJpel9RZVV+fj8ycTY5Q0FaUXFfbSNIWTY8dUd8UT1DTCEmCnpjcERt
KUhzcHlHRFQyZzBaRCM5JHpvdUl+MzBqanZxYzd1QUY8e2JFdEprbVFWNHlsSXFyeEAoaTlleDBp
ZHUrYQp6KU5GZk5PTkstcCpwcjRaQlo3WSl6elp0cjNecnRrXy1scTNFQC0yQD5SQFZ8YihlSmRQ
R2QlZjw2fklnTHBYQWUKemc7NWItZkprS35IbShxPExCeTw5KiZMMDcjLUNBYHUlYmZHdSh1eSZR
RG9lZ0ZSVmZ+ZGhKfXxFI15RQzVDYmFICnpQVEpSIStqU2gzMlZUR1BRNTgxOHVoUU9pb1Qoc2R2
O2N4Wj9+VXl7M2s5N1cqPEsrUzx8WGRaTF5ROTMlbS1TKgp6KlhXaENDbj1ARVRrOzBCTjI3K3A4
Yz9zfFUheiNFMWo0dzlWfWd3Y0U4aVZ6NytiXnRgaVpETHN0YnZhIzc/bEwKek91Nys9KWVWLXM1
MlVLZCNfQEA0d0djO2lJX0VwTyNnLUtRcEMmIWFTWD5eZTtYZ0pWSmpiQX5GMXs4TSgtWngoCnpa
QUVINk99YlNYYT9OdHw1cjZtNU1IbktTbmApYjt1MGI/Nmk0MD9HITBtSVRNM3hLVlVtTj5PKVph
VEI4PThkMwp6LVdUc2xrK35Id1N2OD9fUGwkejM1ISFJSkI7fD5Id09GUXJPNGdZPyQxbjs/WShP
bHduVHA+U2VWak5qTXpeTlQKem9zcD8jVn17bDMkUyZgOFdSQEZfRXNwWiZxbTt+RUU3e3cwRzY1
b3U4Qm1aT29IfF9kYGNQN3xnXjx2NkI8P1IhCnoxakhTVTYwR0RNVSNCdlB4YElwRm80XnNNPmNO
c35FSXVJYUltKDdEY191Q1N6STd5LXorZyMkZzdEVlY0ZX4mdgp6SUojKzVpbTxCP1Epei10QkB3
KyRyfFMpUCZMYlU0NHdsV2EtemRhU2ZXTyojVDR3PzQqMUJvc3sqVnkxbTxBM0IKem1xd31RKFdP
YWM+RChXNlQ1bHlMPFc8YnNMSVlIZ1MzV35+c0AoaUlxMUFPbG00XkkpVllfbFlzMzI7WndEflhz
CnokcClre3N7VkJ1Njs+RyF7cCZKJWhte2UjNHQrbmwma3UofDVMM20oKSZuOG55ZEdAfTtEMTco
dUN+N0U9OD93fQp6WHhAK354K3FVOVopNChhU0ZtTXYtRXsxWHgme1YhbGJgbVBqYWtONVF4MCo7
Q2NSITtHfTRMTERIaXppXi1ecCYKeilIaChoO2tCdFFPMkc9UEg1PzkmVzlUOFM+RFB+aj54RGRQ
djwoUX1vS0tDPmh9clVPUHk7ZSFGNzVTJXYyKy1aCnpJYUgkRDdRIzlIbSs0RzQ+b1lAdjZiKFg8
NUtEKk08KWFleVk9Z0hSOGBIKk9qRHZmQjMzPnhXOXB1TnhmaDtuPgp6VmgkaFF0T0dAQTI3ZHhk
ZlNGcjtpbSNRIyhaPShAZm09PEZoVnAjNT5JaGkjTWViO01wM2l8cGEjKjteTVVFQGsKelQ5MEZg
ZCt0U1ItOEIlVj9nKk1wKXxpMT9VIVVVYkZWRDVCbklzSl8paX04akRlUnVHdjJ+Y1N4PTlYbEdx
JCkmCnppMyRpMUZBcEIzWmRWUjwtZ0xWITs5MlhVbFQwfDg7dEBmZ2N4NkstP0lrU3hjJGg3TTYm
V25hb295aT94aDkjOAp6VmFBcT1Kc2wtajN0IX1Seit3bUQ3aCFORFZ9b3NjSTR3RENYQ30lc1Il
MSlWYFY4aHNJT09OQUhnR3pwN2hvS1UKeikpRU8tRzxLMHUhRnNsJiVfVE15blRsV1ZgcHtCek1k
TTAlQVRFKGVEZHooTitfdm9CUkF8ITdCQVY5XyZFX0dSCnpge3Q8YEtHaDgkelRmYjZyeStEVCho
SEJRQThYY19COWsqPmBQJTVtKXVvQFpuTHswVW5oO0xvQ0RhNmN8SWA5Kwp6b2YzalUzdUs4RjVj
PXAxUClDMTU+cSlmaVFRTyg4VnI0ZXpKOHZmIUMpcURlSkNlPyU/WFNSU24we0RnNGF9bDIKemdS
UW8qOEVlI3goKjEydjk0eCVneExlSkEkJWNfMSZPYCl8SFZnLW5GQERCKDIjaCk0U3pzRURHXjcp
ZTUreXJ3CnpPXkk0R0wlfnM8bzc5M0NDOTF2RXJYND1oWDFXcGEybnh7bCtHaS0oKDZ2fGNnWCRI
KSVmZlI2Mzl0SyZpSiphewp6NSNoeitIVmZnViooUTtmbWJJX0hKRUF5JSlaOzJkfDZQeSUzcmBK
YVlPJF97alhpZU95LUp2PDxhaUlgSzxBZn0Keil7U1NOUVBGP3VfNDFNUj0jPDVnNFdwI1MkPFEm
bjNtfmZeNTRIPVA+JWRuNllmSmc0PUp2KU0oRzVrRTk9JjRgCnpicH5zc0U+aEMhbi0tMGY+fHEp
IXNZI1VkN2xyaWI7M3wzOXFlZkE4ckR5fXpQWDlfUG8qO3FNMG51JGNsWHxkMgp6ODFYX31IVWYq
QGFvNz5mdDdfVXNGeUYyPHc5ezI8Rk5teE1wWU93fENmfUxBTXh6OFIoZDEqJEJaR35oRW85WnIK
eml9aHt1PXBeQzchTmdoT0EqfUgzbTQxbkRDP0t9ejd6Tj5vNyEmbmE0X3FRTDU2VkBUODthMlV4
Z29nP3YkUzhrCnozRSVBKGxpdFZDJldWY25KUTBjZjBQKVdVMEVsN1FrRGc3QD98SHVOSFJaSUFY
c19lLW1PVUhLITRaczFqQ20jZAp6VjleWFkjQWA/bHpAeGEqUVZqVUc7XktSVVE2Ql8hYVc9M1V5
Sj1YcnQ8PDxpbjkrUE9yWGczK3V3M0o3bVlGODAKejZMdTRzRnN2JDBVKjleUzJvMGJQbWVoSWpD
YDlaR1M2cSNKZGFMU3VTe1NZK3JzMjhfaFdqRiUhLVpFMGRqT3NhCnpYfn5QdURUNjlyKEtBfS1f
ITM2Q1cjdWZ4ZjN9Pz9TQSpgTjVaM05waHlpPGBuPXczQGhFQlE2Kk5xS0BnSkEzbwp6P1VXYH08
Q30zazZpVHI5RjUyTXM0RzVge2dKKXxURUUlQTkrODFrWEZifVA7R2JOfHNNR2pnZmMpT3tXdSRz
TzsKems/WUApMys8NHdqQnlONlRxczFgMkFoZWs1KHhqMVhXKW5ZNWpCPXVaaWQ+QihKbkc+NHNp
cE01IV9He19oVUpoCnpMaGdmR01rRTQqT0FOfiptWjI2Yyk1ISEqWWxXe3xKLTd3dUNJXj5ibH1E
SnFPYXt7aj5FTSlpaDtLPWZRcntCSAp6MilrND9XYSZzfTV4NFZUcUBeYUJ6fXt6cEpveWlHLVhK
WCo8SzhiKjszWkk4OUl4cTU/I24wTE89QD96TmJ5VkkKelhLc1A9dGBmP2FYV0IwYzNfO2ckU3ww
PHkkRmEtTGM0SEk2RjFEQklqUjtAfFd9PjcqRVZ1Qy1CWWp+Nk09RVYpCnpAUE9NQjJxRTx1QlV7
SkxqK2BEMmAlR2pwYHgpdHU3NCEtNUMoUHxQPGBfUnlKN1pJMkJEQEs8VXhBb3ZPOXNpYAp6eFp3
PT44KUVZPW1RVXJqQD0teWF7ZUBfNCVURzNVZyQmb3ZJJjhJU2tXQWJVWD1rZ0x0dC1va2VCKiop
X1F0SkQKelZRMHdFSEYyTEMha3llOFN6WTJ1NkcoLUAtXmRIYHpkXlhRanlAV3J7ejh1PmVaJjAp
OURTeVZnT1E8T2I9NWpNCnpPOyV7Kj1jV3JUVmd+VTFGaHJZRTQ0NHwtQml1dFA2b1pKcW9CWjBi
Tm01U3AxVTZBPWJiK2s7eG9PejI7bXdKSQp6NGRmJCVVfHk4VSNiJlFlWkhBYjtOSjZzTXlwU3gl
ZHYtYU5PU3UqIWwhY08lQT53bn1zSS09TCtUNGJ6NVdRZ1kKekomSmJFJEY/TG16e2pDX0JrQGhA
Y1QrU2tCS0dfayVrP3l4JmM/QjVqITc9QDt8cygkVUhWNUhFRjVHYmBAN3dXCnpCZUpJbUJhVnZp
TlBsK2B6NUJRMSUqRXNZTT8jJnotbjxfdCZWcGZibXV2WGI/fV40ayRrLWc8VlNLYyVYOWFJVAp6
ZSRGcV5IRzU1fHUxKFdMcV5RVUJFVWYmTkBBenJtWWlUakE5VzJIaTw+c2QteElkP09JI1leZyY7
a19vYXlDbE8KekUyZlIqcDVteFMkNGI5JXg3XlolMWlFI0EjKz1mRko0Rm8maXlMUk9qKyRIQS1v
TDl6YWI/cn1yflNMbzZ8JHV3CnpkUDBPRFRhMzg/TF9rKDkkQnVgci1NV2smU2ladklqYXtzO0lC
RXUhPXR5OFdSK1FTRVI+WT9kaDJ5Ky1Xc1JzVwp6ZkEzdlVVMlM3QXVGQVEhcGBTbXE5VDhPJE1a
O0o4RFNDZEVvPUA8ZihETSNGbW1Yeyo5JnRZVVEpblhFQlNWfHsKeiU9OXZaUERWSDc1UCErbjlL
MGdmVnglPmxwWkZrPUQ1cUA9cnxwfSV3WFZnbSE5JWc3bWlDUT5HY1FLPEg8e3RKCno/ZHp7QU5B
Szc9aGF4Kz5qSnlFfCs8emV5QHh2WSRDODQ3eHdvP1I4Q31EezJ7c2xGUDhJQHEyKSlrMWBzNUBm
fQp6P2N+MmZ2SVRzQWZHOE9FKjwxbD5vQWEpKnc3NEt2UUQpTWppMyhlfDktSE5BJHM+RTRyZTZF
aV9zbzVBIVk+eWQKemZ7VzlaNkJ3KFlhSlp8P3pQdHkhRT0wZkEqSkFqPzd6aF9SbE1Lb1Mqakg8
YSQlTEFWYipQY2BPQH13MXNuXy12CnopJDVePU15N0QhbGE0cVVQU3skRU40VF9hSGE0WE5JVl5L
M2M1QUojcko/UlhHfk11bWA4M3w8Q0xGRXkoKjNSYgp6ZXo2ZmtWIUpHKHhpUDFIMEtUaERPQGxT
SHNhZVQja1c3QTAxcEJseCkwcklOPDQ4Q2RGTyNIMD91QkZvWF43YjAKelk3PDBURzFXeXJPOWFv
dTY1Kl43bF9zfD44ZGJebmQ/eEEtbTYmVl8jRW9EfT9SLVV5TXFVRyhFV1N+N3ZsMi1PCnpKeFA+
NmUjb0NgXnQ5SHd4NzN7eC1Zbn5lQkZ1QWREeXhaQnBRJlBVQ0k5KnpRSihFP3d7MlNnSmgoalBV
Pkx3UAp6NDV6Y3orLTNhRlNVUkJraCl2fVB6RntLTys4TyV+SmsreSFOakN5RmkoVigoaH1hSilx
M09EamwxPHdUZnZuVXYKelY7PTVaI196RG1oLXUrIXcjKlopSUQ9NXhHSXRHS3lUfFZfZDVHMnxZ
fER+dGo3X25Ee0Y4XzAkQnZsUlBVQil4CnoxRygpdyRtfl45V0AxNyUmeno4JTM+aCRVdHJZciM4
PFpTLUYtfkh7Ykc+e1kxbDVvVWJDfHdrXiN3NWVAUnpXUQp6ZXlgfXRaZF4xPEN5KSFUQlhgZGVS
KTclVjl9NzBJbE9aYFNpP0pOXj5Kd0A4RURkZm5DZE5IalRkbGArYkw4fnUKeiY8NGB3VVV+X05A
ZClheT82V0FDVj1GMFhLSmBSanpVWkwyRSZEZ2hFU24mI0Z1SVhnYkc+fHxnc2kkVWlGVy1JCnpp
NCpsZmVnU3F1IXh0NUE7ViolfV5NXnF+SmJsPChfJHh+UE5fYjZmcCZxN0I/NkdgZWNVOEMtMkgx
M3A+cVF2Ugp6SSRQWS1icUZlSVVGKFlRMHZzaVRNX2M4MklJeFdpNy0qWWZFRGZkPWhxNVFCYV9p
YE14Wk57eVlMZVZTdXs9MFIKenY+N1Q8P1NfTU8yelI9fFMobHN0MyZHXzZ6fG58V0wrNn12bXU2
KGdBbFMzMWJCKGMtMUNzd240bntkVEJkUlI3CnpicT9WeGB7bE9SMilpOy1qY3ZafU04I2w/SmlG
PDJOMG5UOz9Fbj1HTnxZNDQ1ZnJmTj4kVSEtZT96LXQlTDkzSQp6a3kpNlFVeWdAaU9sfD4zOzhT
aU1qVTFAWF55O0leTTJaS1EkSVArSz14dlkmTnQ2MjlNQkQqWEZkcTlEbEVPc14KekFQOWxBNity
LWNwbz9tWEI/LSluQnFOODtnNXc1TXgkUW94Rj5YVVdSVXFJMGVWRlk7QHVMO3JeLUNgX240aXFt
Cno9Snlgfml7Yk8pbyNzYkpJKD9xUD1rVj0qPV4pWn07YDNMMGVoQXAmSkl2MmhjbG85TiEyOGVl
Yz9mdTtAalZIagp6UWhjPTZaTEttfFooaSY+VXtyaEUta09kfCZ4P2hgbzNuS15UNXcpMEFsfT4t
PH1gWjRUQFFeSnFSSEMjVldWUTgKeiYoUilyTXlOYDNucXdhPjNOX1V0Q2d6cU9lXyt1KTRYSjNh
N2c9O2EjYW0/N1JxQll5WDR7byZtaUY7VT9SQkAtCnpWPmhOb1d8YSEpNiRKZkNkKS1PVTM2V1dz
MytQbkBKcX5VT25ofXxHd2QmTTl7JGllMEJFPyR+bWxzaXZObiY5Ywp6KGt7ZFVxQyUyXlU9RDd+
R2NaM0h7SFklMyl2TW4lPUhSQTclIWVzTCsxR1M5dV5DNHl2QXFQNy1YVHckVXhoSVAKekh3QndI
PSNDNWQwWHU9e3NhZUpvYmlRbihqSzM+M1hXO0wwbnZYak55M3c0Tlc0d2JYKExsRXcmc2JScTZ5
VTxDCnowdnJOaTZ9QHh8PmJ1ejNacDxGJnJzV1U/cVU7cUkpZGclSi00fUp5S3NUdWkhcTNBSz5Y
OU8hMTxgRk5eKTkqagp6RSkpZSVFTE07Mlh5NjFFR2xOd1A/Z25nfkw+UUJuZ0peQ01NcDxYcT1E
fGUoQ0UyfGdkQX51Tk5haFlCaTVweVQKem9pOVdzIzFzd3VCez9TdmEmNHw0WlZLcj1jbVNyNUtF
WUc2ZklYUEUpKGxrPngyZ1JGYWFFQklgK01UQy15cSEqCnpOSmRZZmktYyZMWVk4RzlVU1Z+WUY7
V3tHcD1QcytGNzJka1Q+QyZUZGVedHgzKSo3IVpUNzxDTVYrS0ljM30oVQp6NUhvczN5TVlyVyR3
dHp2K3NVelE+X2I/TGBaS0MqPHk9WlJSV3UrRitQOTFgPUcxUm5LTiVmNHxBRVZ+ND91NW0KenE5
THxDUEpnU1NRVGpxUCtpKU1rUlV7cnZxJkluNGItTmI4bz1SNUhSPENDbzRqOFIodnkjZ0IqZEJi
fHg2fm1nCnpRUEJzVFpQX25CZ2lBVVRGb0BMM0Z0TF5lT3AxRjJnfitJeSooa0F8YzkrRUYwUit5
V3BScE51e0dXeDUtWGVzWgp6NHE7YiE7bmVpRkpwPUZQNjx3QVAmS284XnExMkY8QnxoOW9RaWkp
XitKJnUxVF5kN3wjRHVAU3JUJk9edyNaYEIKem4yPkVpJGhOP2tZKVRkVnZiezNlVm49MHp7RCFH
WExGVGtSTis3RXhNdnpualNoM3B0bGNXR0BQYSt3NVJmK0cwCnpCRTxDe3JHYyE5WitzSmkhTzFr
dGNYO2NCZDZDbnJ1JDNqaU4jRjNnclM1MW1qeihVTlJ9JEBSP1pmbXgrNGRqcQp6N3tuUmEzR1BR
K0xfXzROIX1pP01tI0E7RnJjVnpYLUx5TTB0NGBAZWYrNE9XYFN5SGcwIUxlTV5HRU9JY2E1S1gK
em57dF5OWGN+Y3ZjQ3VOIWpuS0Q9T18/b3RkeD59XiZPU15CYXxhSH5aT3d3ZWlUbVY3Y1dILWh6
R3wpJUJtJW9GCnpgQ3sqeXNrTTtSSnhAfiRaNShtLUM8JEhFOGgxLWRvfE9ZTFRGTD4xNSM4WlhM
VUcwSFZ6bSptdzFsYTBCS1Jmegp6SV4xd0VZXl9HP2ROPTdic0NsSWNUI0FnckZuSzk1WlpkKyUh
OTZYZSgkfXlxZk4mbW1BbVl+ZytAe2tKQnNDJm4Keip1RHpSSktVPll2NmBIeUQzR19AaDAxRlFu
fGg4fFM9TFVNVkFoUUckaVd8VDwkWCZhVkxZdVI+fXJFcFg0WHptCnpRT203Y2oxYXFWO1NgaXdk
UkRRNT59Vm87ZE9aPGF1NGNCO0BEYU5LaVVkRT0pa2VtZzlMNj49Jld1RnBMdz98Ngp6el9jXlBA
PFo+QDFFU3o5US1GQHJIZkMkNXVpMTw+MXFfVHdqRWw5Py15ejdvZlB7WDc4ellQWT9SMSZeel5e
SVMKej1AcyVydjw/P3QxZkBMVVE7KjBHSzc/MjdkYyswaXhicXdMV3k1YDktOU4xZzApUzFDe01S
JCs0Z2VON0A+N1NpCnpJMlJMVXhGT2krTmYkTl5WVk1YUUlnN150VmZoTjRqUlNHTT5PLW8tN2tD
JCFEdjJUVTFQd0hpI3NvSW1CNVhtPQp6TSY9R3dBbl83RG5AeTYyRTRDOElGekkmTUtJXlJ2ckwy
dn1pRSkoPV5rUVZDQD0zNE0+fmUlbF9SeDk9RHVuSHEKek1PWHBGckc8ZSkjMW5BVlM9MGV1eG1m
ZlJlbVBiPHYyY2FgWTtMVTVzTSl5NmNlQV5SKngwO0k9Kz0xQDAjZFRnCnpqVHtZX0dvdUdEISh5
KGREI1F+PD0rJGU1QnQ9fTwrOFpiS3ZDI0Y8MSVETWVZfnh1RGwtWUVAJkd9KXAhcmVgRwp6a1BI
UWZFNWxwWUFoYEEmMnU0SlBPKzB+dyNZISg2ZHM8KWhSMGQ3RlltI14mRiV6Y1NCdUJIfHsqRGhG
UU9eUiQKellnO240VD9Oe3BXMjNQSFYtbHtTVTFqOTQtUUQmQzVkMD5fTEt7JTViPjFVMT1qJTZA
WWx+Q18pbyZofF88QzRTCnpVMzdWZmItJFFqeFhoWUklVyg9fEtDKHE9bUE2UkUwSEQ2PCMkP1dE
c0d4dGdoeyNpMFE9MT9uNTBvSCg3MiNlOwp6PylweFhjZyRfRT1SQ3lRSyg8el85eDgya3FCdEl6
T0lqWio9PVRIWDArNmlZS1BJJjNCM09LXkdjRSlzcHQjVG4Kek5jdXYkdH5LYVIjd1hBWXdFVkF+
Tit7UlJSZzQ9O2lNPGFKKGZONWtIJmtsNXlJZiFIVWJIRE1MNl8qeGNkcEcmCnpOSF8/JTBNe0hD
Y0hQYVNFbmJ8QSs/eDsrWFJ8JG17SD1lWkp3cGA3YWBCWjI4ZCE1KW4laiNGTSVzcDtnZkw7fgp6
N0tHTF5hSiVRQ20zSmZKaCotbiZEeisjSDlTJHVPM2xiUk8lV291MDNXSGw3T3dFbHojeyZ8PGpS
PEFANXtkfGMKeis9M1pjSWBqSE1FN3k1SXFCWT4mOz49MnYyTlVIaGtxdnkreW9pWWE/SmMxLXp4
SCVRSmBUJjtzbSNYbyRnVX08CnpmLUFDWCs3QHJlWFUreGxUbE9ANVhyNFI0ezBke1NkNDBVPClt
IXs8Z1k9ZGU7X25wdmgxflE8dWNRYTg/bkpNfgp6Z1Y8UV5pVXRhM3hsd1BLMTVvU3V4aW81Wnoo
N1MjUGczMmo8TFQ+YSNKKlpQYHkqbjtxWkg3UWwzYXt9Qz1SYDUKejRDKH08ZnQ9QTYwJTdpKFdg
Y31BVmo+UjgpaT90SkxrK29pMkxgYUMwejJ+S3JGKFczcF5DNmwkUVVfWUJ0S0F3CnpHSEY2fFlQ
MDslUjZNaVNBe35iaT8wNkhpdD0xcEhIX31keXk/Y002STY4VHFVKXE3c1B3PmdPK2I9emg/LTBK
Zgp6aV9jNT1eeCpTJWUyeE1CPE1uPU5IOXEmP2IwMG4qLXtZNVJIfjZLQz8jMHZ4cFlpem82clg9
SWBsVUhvYEFVQkYKekJrdT9KZDxyXjw3ZTRlOStDeks4N1B9NUxxeFZPfHlGRTZgZFQrKmlxO2E0
YFpvVU1ORXAtRGkxaTJGMChHUGFPCnp5TyZ9R156dWZMYEkwNV9ZYCh8YnNWbGRMWTBWcF51OStM
czFCSk5zeERaPnYkY3dNb041NEY8UGluK0RgRi1UNwp6IzxlJT53OFhtKVZpZExAXzk3WThMOHNo
OF9ja0VHNDtqYXZ2VmMoejswfkd9VjMzTUUyeHoycEE4MnBKXj9kUCEKem1gPHUkNUltXkc9LXd4
KytCeDxoQVBTSVVGRzlKbz55eS08QW5GeF4hJjMpaUdiIX5BdVVXTXpjKUBPR2JPUTBOCno5c045
Wmp0UFJyTlAjaXxpZD1oQEl3NyhOR3EqOFh4ODJPc2JvNnM8TmlacFdqSGslOHJEYEU/dTI0cS0y
WmJ+cAp6TzwpI2JCRF5YUEUqQ191TilrYVNBT2k5eCZOaEtfd2NQUihKal9LKEQpOz5XXmFPVShJ
QmJsPGdCWFhpQGomQnIKekchKXhYe1NvUEU9XmdgOTIkQXxuK2R2T2hPZXhSO2dfeUchdkxOKWg3
YygpOzAlS2N8Wko+dVREO0ZhamIyUXhqCnpDRFB1KTlpeEdfbEMjQ3pAcj0lM1A5MFopQX47cXFQ
MzVSWm1VX01WYnRQTmc4RilSSj1fPmghITBWfTg3cEFaVQp6e2U0NyNVbEtKNyZxPlReJUt+VGAy
Mi11XlUyT1ctOGhkZFdxZ2N6JiFsajZxNyNpY1hIPU0xM2tBbTJ1dkshdHAKenVlNSY5PE0xX04k
UmI/JWZpWWthXypKflUyZ1ZCeUotbCtmTjJYdCp4KUsjI01qckhEIXVkXmorWjd4e1NfMT1ICnpE
QlNPPj92ZnV8TlNQfUpPRGVqcyQxT0drWng7OF89eks2SVlRUWxJI0kwQl52UGZPLT92QH1EQjw8
K3c9JWEqIQp6VTtsfnkyeSV5WGt5fntANEo8KVY2UW44JU99dSl7N2NnKDRFY0hEdDN5QjdOIVhz
cGxMODIkblBFUm8hX1JoLUkKelNfVl9KTVAlejFAKi0/bHJETypFVFpeNygpeHpaOERuQEpNbDZv
UUIoUGtKY1Z9ZXgtaj0jfUYxfEgyM2ZxPU9UCnotJD5UMUByYX5jTmgwMmVVRzs7dy1WLWN1aEc1
Q2whU3p0e0F5NkVFZ1J5QypeQjQ4Ql9GfXxOcCVWWE45djlgQQp6TypzdyM0VHQ7RyZ0aU08V0dR
YT80eCNRWWFnaUdQVFFHOWk3TEFnTVJFMDJ1c1UpKEU9Xl8hXkQjV0o0IVlZMUwKek9nT097cVVs
NEBlbCU1S2tvTzg4e0tVZTY5LV5zU00kWUBEaS1lbHxeaWBvST9OOX19QXtPKH5jS0d3WUs+SD9h
CnpKYypaN3dfXytVKTkzPDVzN0BpOEEyKn5iUylAUEp5dFFIZ3o3Q3dmT35+M09SQWE3MWEtYXQr
VUBWVER7dk1WSgp6ZndDRFA4Z1pTZFE1WWQjSXw1Jk9yMXBraXlFQVVyPyhEUFE7fVJuZTt0alRu
Y0dLUmYjVEdadjghPnw2bWlpaEAKek1XQXxFZmB7PypSa1V3REdTSzZ2bEZxZTt3MXo0QzNLSihh
PzQ0KTYzcjI1NTBUKXA8YCExcXxVRnNWT1ZrVzQ2Cno1aVlCdStMZnI2VFI4enYxYjhkWE8mayhT
P0k7eDtDdko+THZOTUpFbTxiQE5BIWRMKkQ5e2B6JVc2PWZ6V3NfYAp6e1ZlOEZkZDJVSWF1Iz8r
MyVyNkxmRVR8WF54STBsQCZmOSlYcWppVSMlSDhXbShzRHlYUVBqfT1BJn4oMUhiaUUKekprdXoq
N1dsVn1vdCszZ1RaWSQtVSREVU13N35CJHMlYCFnZEpeIV4wYShTZVAoclAtVH5lLVBmcCpsJkRF
S0ctCnppITMlcDk2fkoycGJ9QSVYKGVROHdeQ19jRkhZMnQjR1c5S0lrdVR5U1BYOSpxSmtnKXNQ
SSgwdjNyNEoqfk84Tgp6UlhyMGYzX0AxMTg8N0l4dlolbiFqME4jLUYleyR3bj14dWthMXchSXRy
QVdGQUYrN2hReitAYiRRX2J1RiYpRzEKenN4Kl9SSEV7Xmw7NzMhJGV2dHc9dUdzWDRRJUdKKGZ4
QzdXO2BGcmdHfWs5fjJDZ3xJN1JyWTNNK2tmJXt4PjF3CnpyJFkpWCNHYH09S2FUY0ZoIVlNdCkr
bEJNR3x9TVk5aShvYSphSStWYUAlaDBXTyh5NVd1MTFpVilIcTJeQjx0JQp6U2AwdHhiMn1OISp0
djReQSF1VChRb1ArRkg7KShUNCZ9bnd3RX1kZkA/OTtLQ08xY2N3WktIeVZsRyt5IWQ3ZT8KelAk
QztfeDUrSyU7Mzw2TldvNlBiOXV+I0IlVlFhNFlGTnorUFpLRmlrfTAyfmtuanV2bntMOGw/KmFy
O2NMSTVxCnpOSHtsJXlvLT9NMncxai1PcUJyZ1N8SEM4MmBBYmA0PWF5N08yfkBePzJya0ktRGVg
dDJsOTB5cChsd1BDZ2kwOAp6X0diJlorQyl+PXdEUTtqTj9zPENBRi0wQFhEKUZpMGA0e1RgWGlA
cVEzalNNSVpLckJPTyhyJkQ2P1kpbHdwTykKemFJPSt4WS1AU0FQUWIzU1V8JkYjeFdGYGdsWW19
aEtAU1MzQllkbFhQUEN3fTB5PFArI2FSVztpdjFkPztqcVo/Cno8eFV8MWFVaVRiZTdrX1haXjBz
aHZefjY5S3pFeF48NCYjOTVuZH1tJnNtQHFMcSoqfk1QKThRTmNjMG1HU1RwZAp6KjlsQiFWTk5M
ei15O0NgVDdVXmVaSWJ9cVdgU0BRQy16YHQrJEw9LT9Kc1kyR2BHdHc0UkRQeF5EdCtAKEJXLXwK
ek4pZVomTnRidUNOMTNSN2xCMzhBbHwxOGU/VVNIX3lBI2VlRUAxTyU/dUc/V2Uqd2NUSTJKNW12
dklBUzBBbWo7CnpmJkVATypeJTV8Rmhwfmp7N0A1V0ZFX3UxaFJ9OT5xQDVaZy09QiNZRjRpJmZA
QUZJM0d7MUIkSzE9WWEhUk82cAp6SVFSSmMxRGAmOFBVN1FpQGdxI2Btc1RPWTktcTdMUyU9Umll
MTNxPmdaVFVpcFAlRk5EfH4qQiYtM2BTO25SKUoKej4tY0Q9PTQ/anlkRFRXLT9BQV9ZJEBlIy1k
d2AzZGZzNk5uQGk5SzE7blI9TDhHTz1FYXQ9UERASHJRcyRAb21lCnpYRXJ8Q3NZUlBGbXp5Y310
bkdTUEpMUXReenNqVCoxR1ZNQXhFWV9qQFZOKHtXXyV2UE0/MUEtXkVrQF9lNm08Pgp6clh4PWE8
PnA4NTYmb05AcElqJDVLWmJ7PFBvQmxEY09AX09BenMtMEI0IzVZN3ZjVU01YEt7LXszMkUrZ2J6
NGAKekZXfWhYTCtFOCNrYHdyb0UlKzEqZXgoSiErSmV1cDtDPjR9JEFadGQ7RU9HSSgxSV91O0w5
IWVOKCs5WTE7NTNECnpoYntPVzdKUmhAUzFrQj8zJT0yV008Tm0oTjFgZysqSzl0YjdFTjJzTV5y
cFE4fEV3b2E+ZFE7T14qeUF7QTM4Pgp6dV8xJmZoWSszYExVPyl6O2Rlc18ma1B8dkpBfC1mMjty
Mz5nIVV3WXl0QXhPQEZua0RJRyo4YEg2ZUMrQytkTmwKelJuUVZoSn07U0VKZH0ocHBwd1pLbiV4
SGRRMHdaVztSR2pGdXxFcXhSPlhwTl4tYTYoTlhMQWt1YiQySyo2UzV0CnowJDcwZTZMYG1sJSEr
PXo8NDJPUF4oTFA+RmAhT0JQdGBONUZ5UUIlMEB4bE1JNzRAUmhRaUhRYl9oMW08dlclOQp6KCtJ
UmAoQVU/OUl+UkBkSDZkSnslZCZ8O188bXFqMGdEMVBKLWB3aHgyLSsoVko5Z2dvdjt3UG56fm9C
c25IRWcKek4mWD83VnpPY0BWZSV5Zj9yVjV9ISh6YzNpVWpjYTZjRmBCYVlYYk4hKG4wUzY5VVhx
VT5hezUlcFg9LW1qVko3CnpDZChwbFolQmEhRjVDeyNVNj13PWV0MnR1KEl7ZHZNS0hTaENDSllr
NGh2SV8xVU1ATkNZbk05bjV9KTIyN3pWewp6bWpkQ0UzezJlMjZjSCt+JE9MfGNBX05seiE/OSF7
YHIkQmBrYnchX24qXklPRm9Ea3tmbTlhQnp5d294YyZLaCgKejZSMFBGUjJGVzZwdDk4QUYjTURq
IU0teUxDUytpTzdiZHx9S0Vne0ZFdCpiWXt3Mn09KFlqN3k/SX5QYFAyfXJ3Cno3cHlHcislTGMy
dG5TQSZYcmt5N1V9SV59SzU7S34waXNiRWc0V09zNHpWKjRuVlZzMXV5IXdrd199aC12Y3N7TAp6
b3BmNzx2cUJLK0cpN305M2N8MmU0WW8/MChyVmZ5cyhmWjVIVSVmZzltXmxYZVFqOG1adnVuaj9w
KXNlOEBPKyoKeipTdmNkX288dmlCSiR3JDRJUnNidXkjQzRMKlB7RTA9e21nb1hzdTlkNTlnajFH
NjFSNDl1PjkrWjZYI3Y5YiQ7Cnp7SEd2PkpvcyU3IXE/WWRTWXpfZTc4WH03PENoaGh3RTBhYHJq
ZG0rZjtgdE8jVCpwPDdZPlUqWWhBcX1wb2NTUgp6RGhebmtDfmUwelVWKi15THxNVVFRUENGIzxC
Vj56UG9HSSNzI0REYE9meWVGTXBEQ01ofm5CYDM2XnhBc3JkfiMKentGNnBIOGd9U3VXWDNNQHJI
QnBUSHZpZWhBZC1YTXgrNT9mamNNcUBWcj1IayEwKUt3UiFma2crYiF3bjBqPGE/Cno9Z0BXPVRF
X3J0NkBRZlNeclJDNUYqQFRXQDEkK3srOTQ7UlFtUXhIMyRzQ0pFNXVPP0greDxDKDVzI0ZCSU85
Qgp6ZlJmKXpMNz1scEo1X3t+Jm5YNGxpcTV4RUsrUUhFQEJ4Y2ZqdFNSM3dqOyg1eGN2JGZ6aENT
KiFJMiNzQHgqX08KelVuOVU+Pyo4Sn5vcDM3bnJqNHxmcU9UI0gmZ25LfVZUeSRfYiUyUnE8ZUcp
YVEhU2ZARXNYOEBUekJqO1Izd31RCnp2TmlsU1hsJTQ4MWNkRj9aNm0wdCkyISMwXys4YVlZeHZV
VlAzWj1YKGJUJkpRcFd9V1NuOEFibHw9SjVTKShCYgp6ZXdPdmlafkl9XiohalFAPVpqTHgmbmpp
eSpgPDg7LTApS1ImPF83UXJMK1MtSlZCSzUtVjRkUFJIODFFJk1zeGsKelMqNWk4QDBEV0lnKWI2
Qys/eSg1NXNKOSU+Pj8lJkQ/LThMWVg4NFEja3laQTF1MWN9e3VSUyspPDF2UCZIN19XCnpuSiE0
UCliaCtQUSkrNDQ2N2Vsb2FYNyhOdTh4bXZ1LX44LTtQPzBfeUBzXngkcWRvYVdBbXg/cml1MVBf
dXE+Kgp6RyY+WHE5UzE+Sj0pRnZPe0hyMGxBXnVaKEt7dnsjdGZRZShgYSktallYcnM2ayZZVipA
aGNfd3FXaVJ+KTBuSz8KejEyY0c4ODBRcz5ffDFSe3E2TmhEX1lvLTtvb1c2TWImITNZK0pKcl51
OTlCXmUzbmp6UkJtQWEybC02b3NmVj8jCno2KzdfT0xjQGlZcyp9VFpEIV9oTDBwNFQqTjFzWkcx
JmJjYkt8UW1RPWxEQFBjcE1vR15hZjRQZiVTc3g5Sj1NQgp6aCg4Qm8yeV9IX2RoeDUhPSFNKnUy
WXpIJFImM3hXSVMydj9OUEg0TyQoJmZ6PiNmX2lBfVBxJWY/QjhiZDt3XlEKenlRX3VHISZuMG9S
UW5RezQqfGdDOWRsVWxMYWV1cHRtNC1ZeDJCT3J5T2RwTVN5TiVJTSZlRWFrdTNaaFZYYGNXCno0
aWlqOFNNbVBzQVZLUllUR3dNUVFqaXdvMEZMe3F4Sy05TmxXMWM0VUVzJnM5emgwaVAjOFp9d3Ji
bTNjKkJNdAp6e0FMMWRiZ2drT0pBaHhrdGpEbiRqS19QbUp5XmJvSH41Mkw4KXpjN1JtSn55SCFR
OWJYTCYwZFhjMFRleTgjZnQKeihEYGQzS25lVkRAcXsxR3RsP0c5Q2M5I35TZFlkOWZgTWF6UGRE
TG9CRWZ7KSVDVkg0cGBFXjNlKDtfSVJ2Pld2Cnp4OFZsZG8lS2c2S2ttU1JBJGwkS0kpWis/MHFx
WndMeHJsKUYzMiowQ1VOJi1We3M8RzljOy1qXndMSHF4XjVNXwp6YiloOyRhZj9YO0BrKzh+eUM1
bkFzflJwOWZ4U0REWC04bE92SG94YkEhS2F3cmJmcSt1SjFNWSNWPi18QXElTUYKemlIXmdXXjty
aUBGOygpbWIhMngzI1pSNi1IaitkVWMjTDl3Xm4qPFFWXyhLP2RNOEJ2SX1VK1hDd0BhKytsJW1R
CnpBTklOZ1BNfF9LbDdAcTZfdjB6WXRuV3h2M28zZjYyJHppIzlBMFlWKUhsNkc/ZSZeeXVSYXBn
RlBeYiVEUWM7bgp6TX14dDskLXk4V2o3OV9SMktnMXxmPWZ0RHc7USt7aHl2U3tlMCZPcVArd0JM
JHpNc3VkQ2F9Qjx1c0l7T0s7aSsKenlfMHZvUU16Q0koNWFvby1LRTg5cHk1aGhMdlghMzUyZmN8
SUtDY2JxTTJAb0J2fmpBaTtDIyQtQH1Sb2BtKzI3Cnp7RnQzR0IwTHBfNTVJa3FvJj9HfWQkZERF
K0YrNDdLaW95ViZTOD0pdlBpbTNrYChZQHAoMnl5Vl9DYEVmQEdOPgp6KiNsYz9tTG9gZGFpdTMl
RVp+MkJRbXxOSChjMXhVNUc/TFNRNENBQWcya3NYMk9ZLVowenZRWXYqfV5Ub3tjTHEKelpaKVlE
Zj81X1QrI3NrS2pWeDRYbEtSS2xxP1FVJmxnfW9Gbj5nJkt0c1NFPiZvfUFlNnF1a2wpfShne2Ul
LVBQCnpobzhpWF5JWjVRYU4/Mnp5Z2B0QjJQVipEKipkWDdaQWJHZFk3MXE8JSVefipENDBaNUBt
KV9xMEJsaG5FNldTPQp6PWZxMVdrMVpeJDxXR3kyQDtwcE90TjcxU1h6JlJpT3JjI14kKHZHV2xk
SElyTFlvcmd3Xj9YYXlwRW58TUxkc3sKenF2Xz00QUVJX01gQG5fVmRfTnhQPVVjOFp2dHJoY04h
TWdFWVl8KEJRdzxadU9MLUF+MkQ2SGZPcmQkUG1YYm90Cnp0S0A/fXI8eEVOcyU0MG1NVzhsMCRs
bigpQXlBdUEkPV4oJlUwS0R1UWZPRD5IJnMkLUdiO0lTUSlzd0Ffd2Z8awp6b0ZMenRMWXJVN3dH
YFVvRCF3ai03N1goNXJxR3JtVVkkWilVZDY5VnB7KSReKih0T2VFQlZ3RStBVVQ1IVczRTwKenpu
YDIheTh+bGIzVDxeMngyNGRPQVYyWHEkJClDUXpMRm1tRkM+dFNSczhTYjFwO1lgSylIaV9aeFhZ
JDhTajwrCnpyNmxzIUVxSmZ1emZJdmtBbl5ZZWQrITF0UmR3eDtwTHJ3PCQtb1JTQm1ue3JtfW5w
YjB6cjhNYUtiUGw3eV4/Xwp6a2BYMGhORzQzaWtjND9lUHkoUj9tZFJtUz5aNyRxVFBmT1dUbD1m
R3dGK256Mm9paTIhNzNVQSM3OXE8czZqOVoKejVTam1YP1FfbSNjeGJpdi1fUCZmLSp1OTsmd2l9
XmV5elJ0K0gzekpnMT8yfkglSVV2VkVBYE9ART5DTXRfYzNhCno0RkE+JHstWF40PF9Qe3s0MVkh
aHt8U2FhRWB0OWcheWd7T2V+Uko5TWV2X3lffiMjJVlKYlpQaEpUOGdEWmtHJQp6e1AmbXtDRFhp
eztsQ29gVFpQQEUhK2BfYiVvcW99d3BtQjBkbntsUyYyfS1FQnNgRU57N2VpMkpmfj1zJjd5eT4K
enNHP0NlJTIrdlFsPVR1P2t4KWZDWVc3TEk4RG9NTV9keypXM1h2dUFYMWQlN0UwYilja01MNWct
XlgxUFdnMylXCnohOy1DXyFHV0BvM2xtRlUyVX5ieVBIJGd+Vlh4YEBFRjcmUE9RUTJHQyh7MVNr
MXx6KENzO3lXYEU4Sm02N3VTQQp6Z1JHYTNIKyZtcHdTPklvK2FUazg4RHpKdzcoVHxqaHhUKUU2
fF5aayZTJU5tVF5qcj1tNXtVO05rMTMtM3paX3QKem8jazYwZ2pJfHpCNDc3KkRMa3ZOSDQ7KT5e
Tj52cyM4NG42Yk11ZjVoamJlc0s/dnsmKWs7QG9nPG5iTUZQSmRyCnpzTShlWXleJChSdTQ1ISpC
SXBkWjBXZVVjZTUreE4xbT87c1ZfK19VbHw7S08jfU58OWF6QGkoak9tZXlvUGk9JAp6SjZgayok
Pz4hZD9qdGxZbWlNJn1jMC1sJUo0dlkmaThPbEtjeWNZKUxSKFJeITYyby1QX1ZPblk5dkpBMnJW
M1UKeihhQylKS2BgSG5JNHh1dWUyQCZQeTtkaHRJYyVFd2NtKURgQnIzMnRGKSZ4MDk5LVpNcEw5
MWpFMElsMnsoRGs1CnotKSpJV2xNd2hHOEdrVnVSWHpTem0waWdBSWRjbCFsTDhgI1ppR2BHRkJO
Vmk2c3dwVGpFN2BldFUzVXg7Tlp1eQp6M20+dTd6QlhqeT9AN1RjPHFXcX1QfTI4UzY+PW9qbnNF
OSpgbj1oTjQ8OGFxQjZBOCQ3STh6KEU5R3F8bjE2dFcKekluKChvV1JsTk1ESFBIfjNuPzZpR2dR
TGFDZ1ozQDMmdVlzNkd7QERnbG99XzhnUmJSI2EoVFlVRCNmT3FVO1JqCnpWaiE3fkxAVy1kYUkx
IT5ndDtoTUJxS1N1Rz1oNTxhNHxTWXZoRlV3X3NSUFZraFhqN1g5JEdFZCRUfm9AUFI8NAp6bWZ+
S2xjJmw1T0VDdkdwdzF1YiQoMEpINyNsdiFNbDBUTVV5NGN4NUNRKHV5KGs7cTNBXztrWHF1d2A/
XiQ7aVIKeklAeUktdGslJW9uOClAJXA/YnQ7KD55RXtBbD97LXgwPEQqe2VDI31aKWZlXnE/fWAj
TVpJPi1tJSkrX2E5JSh2CnpkRFdlKXJeSl5FZDFCTmRDbXlqPkctTCF6ejZkM1EyTVE4fmdXQXxv
NEVQUkJJYXpIRzFEKU5uXzZ4OEdHJUhDcwp6R0cxNVlkYEdIVWk5fkV3K0YyNHlyTT03Z05aMWBl
VyFWWnJAYV9rc2pqa1k7JngxX0ZKbV5gR2w1SGRiPiRFYUQKel89NVV8OUQyZHxjNEdLKkM3XkFo
RDxJPzdjMCV3KWt0QCtJQnU2YXJsTTd1MnlBVTYtRmRNQ3xwPzJaP1J9bjhNCnpNWG5eZiY+cGVL
UGIram1AUUBedjFjOTJ6VFYyPk1ZbjNydkR3XypKTVRXMzJfMUFXflI2KDF2JFRpJDlQQGU8Pwp6
OTt9bz5ran0wVmNIdlh6T1Q7cUFUM3lMQDtrfTVKR0hBbWRBekdkb3d1cUc8U0xuaUYqd2F5MXhL
SFJSd2hQMlcKekJuTkxCU21ZfFAzcU9qbyVHVmRWQW8xXj5DQGI/fHRJTGphUiNAcD93OGIqZHtE
S0QkNzdGanYobXI2JDFPYXxZCno4PHpRM3tyaCViVEokIzhOVzBMfEQ7RkNDdkE5T3JnK0Uwc2tR
MWowVzA3Nj5XeUNJRFRqO3ZSRSg5WU1YN0hwTQp6QV5TYUlLXjJ4fTd3KEskO0YpKlZTamU3XlNX
eE1ZZ0l3Vz1nKU90bG0yTVpOTUopMkM2dVFSU2gzZ3wwPTRuPH0KemhGd1VBU2xESjN4aEJ8IW4y
MUhic245amlFfVVoSUtHYmxgYkZIcFNqNkQkeFRWOWNDbDNoM3l2QitPZz0kZFI3CnpfQ3plcVI7
dyReRTw2Pm51b1Z9JXJxfjVaTWlCemR6b3BRMTFMYFAoVlAwWiYtRG5wWUJObnpoaWQ8ODFtb1E/
SAp6VXM+cHlXKjJVWVNlVHR3Kkwxc1piSHVfe1F7PFhxN3A2eG5eNkx2LSo+KWk8VnF4fUxUe0c9
TVYjTEM+cz5uNDkKejwzcSRFZUAmcmx3cTV1VnZ6eXAmezdvMVN0Z2Y1diFVcXclYC0kby1hKyZQ
SD5rJkppRDk9Snk0Jkh+MyohZWR6Cnp6ak4ldTt9Tl8ydz1sbkUkUjNaX0BrRTZkeTU9SlA1aiNK
bEx8cW9VUCN2K21wUXpDeVNGVCtzaVAtVXZHUWFjZQp6TFFjZmEmIXwjWTl7UFg4P3RZPzdpKEs+
ViFteC1QfDBNSCFHd01ITD1jbjFyPmRMblpyX2Fle2E2ZUowTVhtKlEKejtyKW1tUG4ycSpze3Ih
QkI2ZmE4dC0yUTRnfSs0WD8lJlApRTx6dWI/UHYoVjs0fDdUb01La3VzOSt2dGImYXRMCno/P2hR
KVFTNz9iRjZAZ35EVDRXOTNTRjJtfDEpQng0NFBBe3UybDRgQ0BiNF9NWHV9WTB2fX5YVzdxWHxW
VT11IQp6LWhCYDRoN2daMT9ufEEwcEpmKHVicWEtPXBJYHRXN3ZZZSZWQWxZI1dIKG05bTt6cHY1
SGF1d1dgK25DO2tQMjkKejdLcGdOMF9xck5WRzwmaXlUV2pXMnA2R0FNQVRueGFGT08tQ1MjcyRa
dzJSSkM+YVJaXm8rWEZVVkZzdSh2PUV9CnpXbUN8T0F5U1hJQ31PYilxWUFkQnJiYUMwVk5Ad0I2
fFIjbFRxPUw3IVJ7SlZEJTNHNntrOFBPI3dFaVg8ODVZQgp6NGpzdFlOfXViUWZFVU0haWdSVnMm
REw/aDZpWF9CcEY8MGRXT195PnA0VUxtNnVzdHg3bmJ0MDBqeWsxYGhZb3cKenBGPk9iMHhaSjhS
TDx1bTJsRGs7OzBDWnAmeDJxcEVJKDRQbVQxbVhacHUkPCleRDxuWk8rcWYkeypLazlrfEpzCnot
a2hpM2xzfkBOSShVO1VxZDhCckRTdHc8RFE9VF9CSnVNfWReO3BwPXZZVyQySURqMkMqZSRpVFRI
SlBfJiRSOwp6OUZhI20+cmYkQlcqTnh9IWhtKzg0JCN7YE1DTik4Yk9Mc2dQUWMqKjJPR2UzMFQq
bHhWdm8/SnohNm07bzFTckEKelp4cz9NS0AlYDNWNXA8LTVONzY4IWxXR28zVWhCb1JHNlQ5S3oq
YUU9I2gwVjlze0JTSEptRUgrXm11QXV6SlRzCnoySGN0dj5ePWdjc2E7Qnx0M1IpXzNPb1lCOXQk
eHxtOTtRZFZHP1d4OyFRK1Q1RX1ONUQ9JEY8VTRzTDdOIzJKagp6VGJMNWloUGNJN2w0dXlmc2dq
U0BkQVI0eU5+d0otSzRQJSFrUG82SUFkJkNvPUo9fEIkUWQxSzFUWGxJdHs7ZHoKej1zN3NfUyg4
ZFFlYlJ4ZnRTKCRpOHhuPCVAd2E2eD9SdnREI2xBbnN2SnR2YnlnKW1We08rUXB2UCUkPlVqX0xe
CnpIQCNvPCViM01QRiRuQ1l3cztxd204Szd9SSNIKWxESVFVXnpFSzxJOGwtbTZUJXo1aVhLZnY1
UyUtb1VzWnwxVAp6VHBZP2EyKT0lfjBHJnB2Rz9kfGVFSn1KVXZ6S0dIe14xUyhxUmRZd1BseVE8
JTQmbjtHUldNPUYpRlBHTmJWdD4Kelckd0FPXnYyPSYyK3RAS3BMU0dMSy1WO0w2dE1aMF9QK3pt
NEMpWkI/dnBVVE03flAmO151bWgtNCFsSF9DYmR+CnpQITlWZUM/US0/JnVqa2B1IVBmaGZVZk1o
VGZEeT9sPkZAdj43dHZGIWVxaXpVMzxaPz0jND5KXkw+YlNrSDhOSgp6I3k3bXlDaVdCdmwqV1Ql
U2M2RzFoOz9FRFRocStZakh0ckkqPUZIWjQzKGkmKjQhQlBLX3EhIUF9eTNXKFgkRl4KeiMxYlA/
UnlJMC1oSyNDMDJ2KCRMdSNgN0xyVzhGcWFUZXpaTHpyJHJkZHIoVnQ1eURrb0MkcWQ1Pkc/Pnhj
K0BPCnpWenJnaE5veU5YYCV4dm0xfD5+YXgoKHVjZUtjeVptVElRNW97QzdUKT14K0VHWFYjU2ZH
cVlxeXFCUihnNFBkIwp6d35VOUU+TEMtKDxqd3N1Mz1+fGo8U2cjdHV2QGspdDd1fWw3ZV59PXYz
O09VKyt3RWopQyhPTVZSUzt4MiZlflUKemlXM1QjTSVCK2oqaSkpakE+M2ZXZEFleiYjRjRtSXpJ
MlpsYWlQZ3dnQ0oyc1FqNFMwRXRkSEU7MlpUdGp8YmAtCnpEN291bEtANXgjMWR8bEJvWF9fNEhW
JHBwWT5MQ0plUl9ZJFZhbENqaFVKPE5XczxWQjNBVCUoWTdeSzBGdWlyTQp6M1owNjMjYlNlRjUo
QUw1T1lfLWBqTF88aGRJRDAheColMD9NMFZyKWVRUUFRdm1KTUFzYE5zU0pnXztme1pIODUKelpT
RlRTKWpRQ1AwaHEpcVkxKi1FIVAkZDxCfE5fTWcmSGhrc3ZkdUE9eygmRmlUPUlzYF9KM0tuTUo8
dDNwYDtXCnpabSRwVThPe3d1anlXIWdzaDJCPjJ9NXlNIVduUmshe0g8WXpkPzglUEIpT3d8TENY
SCNBRU5pemxKMjtWaDA8Ngp6KEAoOFpEKnA1YjZCaCQkZWlFRXdmV3lCeGFhbioqZXJNdkkyS0Ay
MnhSYD5rM1VEMHkwPkNjZEVkX2lBeWs+dnsKekZhVTU1YTdxQWVhQkJ0TFRFSj1PaGE+IyEwRE9W
THpkOHdIdFpTO2tBRTh3VFptPSM7cWlpa014SzhyIyVgNmY7Cnp2aSVnWWs5ZiF3Wmp+S0lNMHBy
bkIrUVpSUmlYenoyY200U15FKnpxNTIwaXJkWWl2bEA4MmA2UCM3JVJBMH5UfQp6PT5fZytMeUB4
JXdMbmRSOWcmU2kmMHZZdHt6dTkwOTAodGEoPitaMFBKPTxKSHIxUFdyMTsxMlh5MV5LNU1Vd28K
eitXRFJyZD15SG5pMVhNfDdCSjFZZ35IJDdWYE1+bzhOKVUzY25KM0BBPG1MUW9FcEptT1cmViY8
RHtObCgkcGRfCnp8SFV8d2FWaHY5T1VobzVLeCliM01IO3lhNEUpT0UrejZXZ1Z4e2dyTzFmJlZs
PXdhSGFZI0pPWEA4QTtwIzFDZwp6ZUxrV0J7PUowdXhEOz4+KmU5K21pSCNFMEl3PiVkTW91QH4z
VWBlYTkpNFNAP2xOR3codUI+anhqXiFQZiY5dX4KekNySDdqaUFkckZHIXRJTj9uZm5wTTFQVFdO
VX1eJC13KjVWKTdaNlByNHE/S2NFKEREa05iLT9iKTNkRVIpTUh6CnpZSTgteEUwUG9PTU4tTS1C
KFZfdnlKTnAmOVA2Y2tGc21hVjRVQEBodSkzfWg5e29HPSZOaTAjZzVFK1ZBQ1RJWAp6anF2KX5B
RllATHBOSnxxIShYIz9uIVlgYVB8PHx2NzxOe28wa0d4fSR6Vzd2VURTeCM+O1kxQUhWd3AraGI0
e2gKenpKJX5qQUEpTyRLPSZvNjlxKW5kSmprX1IxSzZnR1UhazQxRkdtdHM/PWtZfjtEKHVXXnhX
R3tZYyZYbFkoUWdZCnpWZ2N0aENwTWpgQGIrc3VIUHBLLSlDZi1kQypNTXooSUZWU04kQFhnNVJ+
fGAqZF9jWCFId2o9OSN+dUlUIXFrWgp6Mm1YSFFDJUI3aHomMG5qcU19SH4wfWlxdVYyZF89WGU2
cU14Y1QhYTRyfDJPQ3B4bi17dytlbUNZbTw9RmtiQikKeiRoITFUbk49c21lRVBLTVhDUSZSN29s
UCRIMjZXKkY7Jk1ES0Z2SV8mYEA+UldtKnM5YTFhWUdmPC1tJDJZSEJSCnp6Ryk5cW4ldnBgMnlQ
K0lQMEBGIXIwQHNtOE1FJW42c190MnVURWlfSHkxRDd0S212OEUjUDIoTnMwbF9rfG84egp6Pzk7
Pl9ALUImUV5XR0FGWG13b29kKS1JO0A2a1FKXz9LYU54NFheJUY2Wng3QGE7UUlDfXNHfT5VIzZV
bn1ePGYKemBefFQ8empEWGxyT3JPJWohOGM9O3cjaDFmODVzSGZ8a0t+YCQ/Z0k8UzBYby1EbUk9
KDsxNVF2UkVlfilec1c0CnpadyZafmZVZHx1OEc+NFRNRiNwdzhUZU1JPWxBcFBkfkZXeUxsKFpj
TioxeVpANUZERDFxd1pxNEhqQ3tJcGRsXgp6UDNLSCZafitKNkh1LX54UHZXQ3tlREMyQ0VmS2Zh
Sj9GM0NfcU9uUmV9MV45TWZabjtodEshOU4mZmFgOVhjIzkKendeSj9jLUUxekU9cm9kWnhjPmF9
OXBQfGVkfFNvP3w3cWdkaUlvJTJwPC1mUXRLQmpBI3ZIQ0t0KHttb3ZFJXtECnpxbDl1ampRbjI2
SGlTZ08/anVhUDBefVklcH0+N2RLRGw1R3g8I1B1RU9icHcqSFo9VTI1NzRTV3haWnFUZ0dlOQp6
eDItc1A/QiV3YHZzPlRucCVkRXtHPlJ0XzxhcCMjTV9CNTJvK1BgbVFDXnNCJDVtfit1ND5Dc0tD
VEVNP3k5emkKenRKO3BibihkQT52UTNNbTNgRyhUITt4N31xTEBNfFh4WEtEV2JYMWBRfWB5YllQ
dCNaR1UhTlIzdz9WaThgUThgCno1JShGMHd9dmhSTCU0KWhDOyZHbEYmMkheTTR9WikpV3R3M0lg
KmdtYTYoRHc8XzQwI15pSzBBKXVFdV9LR21FNAp6eSQ1c29eR3koYTBRfjd8UGh1czQkNVhxSEso
clJVU1NpTkNWckRZck0wM3pfQCVfZSZaNzBFIWRRc2pfNExXK2EKenpUMWM7MnQtekJLYUFPfm9r
fD8xLUVWRyVSSWM3QC07Q2MmZTktVCU9dzxsZilSYCFnYUhAJV5iRDVlNCl3dXdRCnpAUCFmQ1ht
UT59YGNGanQpMS1lLSlFXzdQOCUqRSFwKS02OTctdyN2Km58YztkRTJLRSpUWEBfU3hWMj1YM0pN
aQp6MXolfHFeWU87Qm49RF5aNTxuSiVRQ29ha0QoRTBgeVVXekMkcnBQKGpWIVNYUXFWPkZBejxH
SSlBbnByK2xucmgKellQYGpQIUhfUmIoTndMIVRRbDNfamNwcnVlQT9DKUpgVlRZKjtBXnRoOXNQ
fXcwQSR3K1AoR29pVDk2ZW1EWkwxCnplYXx5T25uV2YqIWk4PSM/SkR9aTVKS1Q2NE19e34oNHht
UEk7M25JKzA9Kl54ZjF1c1g1PjxWbVN7MVc5Pk5AQAp6cHw9WE8hTHNOMVJ3aEAxb1A8QU1GNTlH
dnZNfiRxVX5+c0lhUSl7dy15dUpFY1V9KUE8fk9UbSN4PiVXZG5VdzEKemhjcnN1NTlAKzFTbl89
S2QlbHk5Xl5FbCs+UmllelRjZHFNWD1aT08kNXJpSVlwUXpBYnJVMjJANFJUUGRoWWRYCnpFVXQ7
YG9qK2ZOaG50JEowKiVsPkVLP08ybEdwaWtaN2Ewem13bU1MZWFsQnwyQ205fSNXTSk8bCkoT2xp
O1k8Sgp6d1FvU2FWZTRiazhIQW5LIWJqenlrdktWIWdHPjx+NkQ+Z18+SmkrI1dnVDFKd1JGNSsq
MTB2Kmp8SmJrbUVvfkAKemJRTiZsd3sjK21QO25LbnNmdkg0RG4zc01QeT1GcCtQP0lKcmN+aU09
MlduXztmWFRLU0BCaHJGX2FwQTw5U1J3CnoyPDY9cUFzcyVVeElTTlUkKl4rNEx3ZE13TXNtVlE8
VW0tdHJUfHNCRV5sTDNxcWVFaGZMKD9Dc3RqfVl2MCVZYgp6Q0pNS0UpMVZ3dCEoTTB6ZyVhbUNF
OUFPUm5XLSs0UCF8eD9VdmQ7QmErMUJoTiV3O0s+Y1VseV47P2BzN0dRb0MKeitkM3xwJl5TT2g2
fkopVDZYejx8SitSMEJmZFgxYyRwWEVGUnBWWkM8LUp6SCFhNF4kMEg0QzV5I2lZR3ZMb2QqCnoq
LT9KP01ESHBtJUpsKUZ1U3B+Y1hjYW5vV0BwPVlzIT9qd1hxKjBOWU0mMEEzKWx+fENRSktgeyVK
N34mX2AzYQp6ZD1aSklrPkwmQCt+azFPU1FXNlF7MWJkNlp+RnUyKm55IUJMOFY5JDRvT01mMj9D
bnFiTVo3fEpocnZFUHZnbUYKekp7RiU/ZWxMNWptZj15bTYla3sqS2Z0M0kpUFo5OF5ZOHteRTFC
U0haeyZTanhrNzB9MTFGLWp1WWxCUXgtaWVICnpaQFJHREh6P0c5UUZnWio0LUFMJlAzeXYkLXFY
JGM4Ri1kWXV9Ql56Uz0jKmo0aj5yIyZMclE+KyRLdkdJKEZKeAp6YUVOUXVEOUkhJXpOZmpzKERj
RmFPJEZVZT1XPjA2YE5wMl47flQ/a04yNThtMX14Zjg1Xk9leCpHY1MlYWsjZkAKekB1fXk5djV8
JVF6KEwjfCROcDkhRX5qOEpfKTE1VWZkUCMxVyV+Nk9OI3ZEcDhyeCMleDhxQHk3JW48KiEkJUBs
CnpgNz43YFJUK2BXLWNuekdAblc/OS0tIU55fEU+SjVMdFYzWSl6c3tmOyNfWSEpT29zJXxBfTF0
Rk1nJWxgfishZQp6a2R0PCkhTHpCJj8kckh3M3F3Zkx7ckhFX1owdVQ+eEw9aU5aWjdIQ0d7bFV9
XzVOaGFNZmROPEQ8UDFxRyFXSmMKemVmPm9EZDhUR1BVZU43T0hUR21UWTgjVyQtcVppYXBIcD8p
VTcwcHZ7dHJiMF8mRHcpaExSVjBodFpKZzh2P049CnpkVFRTdGE2djtmSXRoQmpIaXsxayYlfD5Y
VHN4aFNBU1Q+dEx7dn5XOVAmPFZGNmkxNloteT5UdykxdGQmXztgKQp6Zm8+T2V2NV5YKWcpamhN
PzJjYD1QPTd7RE8oJV5fdVVJSkl0Mk4hbnNETUk8RSMxOFNxSlpWX250dE4qSSlrdkIKemcmc0Rq
SFlPZnZ6ZEQtPnM8V3t7NlpWZWdfcF8jcUJ+bWAqbDFRZGFMbChnenVwYk55JDFmUXhzRyFrNnUl
b2tFCnolYnVzRnpTOX4qYjhoam8qdTtwVGRHe3pOYWo3M3UrbX1WQ3F4SEk1KFIhPT07ZCEpJjdo
ZGkmZ3lRYG5CP3hxQwp6fDNoKFFfaFAyXkd1KHImJUM9cEVsbUx0YFFTYS01P15vO3Q7fUh0M0tQ
fD8qZkElVzkwSyhMOHNwXkJ7QW95XjMKeiR7KmJvIz5pYl4qZDwqNzU/bVgqRjZqI29OQS1vNXVJ
dms9ck1+YyMqcF8kVTFCb2RlbzdoQ3RQRnlFYXFuOGtPCno/UEd8JC1vT1hhUiQzJiljalZSJChm
NnRoeH5AdEkkQFB3PjU4Qyk0KWBaYzxVbmIyfStQSyZXKDhqM35wcDlSUAp6YTU3bXFWQlcwPzNf
KnghPmpQdzRZVlQqTHkrMGdFNmtRaVdkVGopQzk9LTAxIVV3N1NmejxSelVFMV4pWlY7UCgKelNj
UyVLNEI8LWQycVlEKS1Ad2B7ZjxwNjtpRWpSc0djaVQyWG8yajdkcWpefENAeipqTnNvUXFTKlNV
ckktYmVfCnojekJ8NGAjdS1yeD9ZTmxJPipsPW9uc0psXnVgZ3RhYTkxWE8oUUVNaEFSSV9CY3VY
YnF9O0M3Ynt+X0FuJSl+dwp6ckJoLTN2O0tsdGl8O3wtUm99eVVPbG5fYHNscEROenZaSDJmakE8
KXJjTGZPbXstMjAmcGR7bmE/MzkyR2Z6T0wKenw3KWJyZlN3fitYXyg+Qis9R29ydjJubVAoZiZh
WDdEWElNR30mK0lRdFk+VWlTSnAhOElXJXNGUUN2TjQyMjE8CnpnRGpJayRxOEg7ezN1Wkg4aFR4
Q2khXjduOzk1T1o1ZD9PRHh5SXp2IVVNZDgranBWR2w1e31gU0YwRSNRdT1SJgp6TnZAaVhUSWh2
elVvNF9pSyZsQEl8NTFOWlklMk0zUSVOXk5felgjK1AlUT0kSSozcjQ4b0x5fXFeOEMlQStYWWEK
ejBrPzZSNVZycnFMZndYc3ArVS1WVGkoKT1lWi1mJTkpfjJ6bXV9LTk1eXItQHdRQnh0ST54flhP
WHg5M093KD10Cno4U0VpN1A1MHY7a3RVUmg9RFRoQForVUhGVFU4Kio4XkBTaSs4TWQ+TXB6RFBM
bHRFUjAmaX18JEE3V15JejhXeQp6Ml97dncxcDJrbGhoP159TkIzaEJHPDskWmEhXlk0QHJ5dV5B
Rng+a1YtTUBVU2c2RTk8YEllQzhBZk9qZGpkaDUKejJrYHRuNkpgM0dnSG0oeHFIWTZDUEV4ISs2
YHFGM2Z9bDRDJCU/YzFaZiYoWjRfNz0waytmPmJDRlNGOWU0Z19UCnojV3Y0ezNgbHtYZjwzRFU5
VStOemhlPUdfWGM3fmIlKWNXcHFUY2hqOU9OJm96cmRFbWVAMGErTFZ1djVoUjhLfgp6TUxBczEo
WnUlR3lOYEYzTDYmPnRBU3luJl40bExyMC03NG5hOSNea2c+TXtSQExKVWw0NHJ8VFNpYT03RCk5
SjsKekEwXylKJCs8TzBiOCVlPWUyMClUMk8pRDlWSWYzQ0sqZSNQVFR5VXBXM2FyenNRZmx8Z1V+
K0hfWkYmcGdoNk19Cnp5eEpPJVpwQ3pSMUx6STlhMD0pP2ZeKlNNPTUhRUZqUlZfTzlCb14xQFlw
Iyo0U3tIOENNPzJfWmU8Y2dgb3Jlawp6NkomKGdCLXwpY2ZGdzJJZEkyUUc7bXZtPjJVaj54MWFq
MnE7MiQ5aW4pVj9tVjlHQjw8ME5ydzJHUzsxVSU1byoKekFvUXpDK0M5fXREX1cjKT88RXlPKT0m
OF88b2JUa2t+NEQwTmV0SFh3REQyISUySXo0dWk8e3dVV1Bgb145VlVBCnpORSU7YG5oSmB+ITV2
KkpOVF58NTktRDRjMmBvdiMtXkstIWJFTFo8Ul42cj5uZSMmM012Xi12I29xTmJ1XiZmQQp6LWBW
anN2RzBZV0pufjMlQmk8YiVCQSY1UUtCNHhlaEhwck09a05eJXM4eig7NWNhNlVTLTQrVjEqekgp
YXJnZUgKenRzJkRCOGt+TnwyTHxHYkt3dSRDSlJnfWBzMHBSKnBscjlMeTxnVXxsfDRwfHklakot
aCNfITdpV3RKWHFxZDRxCnpgTHhFK2ByQ3cmdHU9PCQ7RzZnU2BeTERXN2I3JFF0SmJUSGEoX1dQ
IyhsQVVYcGA4PWMkWEZaemghYFgqMFQ0JQp6PHA2Z1JkTWJ2RT8rM1c9SG8jPjxwIzBZaWE1cz1S
ezxnO2RuRkN6aHZ+TCpUSUNBYFY0c2ZIc0NVIVEhOE5NZD0Kek85bldpdD8mbCZ3O2JRQHtxJFJt
WjxPbj05cEMxUEF3LVJEUGh3T3sqLVBXd1FfJDd5a0JvMHZCa31xJE5GNjJQCnphS09gc04qKnNn
dXNzczJQczZnVDFuP3c3TXJjVjdSXkI5SDVfP29ka1ApcU0odSYqYUdgNTwrUlJEbm1fIWJFbgp6
WGxvR0pQNTAmMlZKb3pFWT1JXyhja09ZWjNYZ0JvMHw4PyZQMjxkKy11RGgqXlMye3ZrMCpONmtM
PUI/cD1vQ3kKem98aWg/SFp1aD9LcWRDIW5VR1UpdUxrJGxMNGVYbVdnT09nTnEjfTspJXBjQiRV
NWpxQWFqWjRUX3g/SWhlbChECnplcVhffjJgdU4zVWNufCElbndYPDE7a1c5NCo2TG88bCtfJGVe
fWhqZ0d8dF8pK1hgd1lPcVpONnU8KF9mTldOIQp6YWBQNWYmQkJ8WFEmMWAhK3QjVk4rc3l0OFg9
YEppcXVtYWhFMGRAbztsO1pzIUhgczcqc21WV3V8MSNtZmYoZkIKekdYe14+UXo1b3IxZUV9QDAl
cUVWWCNXZ20tTHJWcDFQMHZtalp5M2xocFB8ajMmMkdJcD9sNFJ7WnhsVXJaNGBMCnpweUFEK3Ap
aEZwMn1CKmhGM2ZTTno1SWJhPWsmT3YwYCE2b0ZZWWpRS3NGUk1SUjsybjlxRlhnWjY+akd7X3Yy
cwp6Ril0Rm0mVWRII0k8TkBLPEJ4JHJRfWY1VithITd9PH5idGtZe0tiSipjZnRSRThNWGVkNGpn
e1BnN3k0JlYpY1QKekYqN0A+TlQ9c3xjRyFqOHZJayhve24pJDVQeUV1OGlsb2Qjd0NoU315fEgk
WT8hfVVlNU4rNklJVDh0UFFEfU5fCno1dzEhIVVCIVJIQz1pcDJtey1INFVSbCloQ31TJUBUfGlK
aThZcnFNem56X1BxVyE0ZTBiZERya0I/JVBCT2Z+awp6ISpIKXNfZXwjY1BmJHBsemVfPGNYNTkj
e3EyYktxZVEwSFAtfD1BbDdxbmZoJTN0SkZoQ1ZeWTV8OUNrZTt0VV4KenF4K1NhVmF3NnxYMm00
MnskdSZGaiYkc1lNdyRRIUxZeSFIR3JoISt7QCV2NndGJVRIM1hiQSNuQD87TUt1ezs0Cno7ZFZw
X0F+cyg5VXVufkd1Kn5YZig+SCFvbzR5T2xNfXRQUVg2K2VrJnMpKUkoPVRoKUJvaSNVUm1hMnA/
YF9xMgp6LT8zR1hffjwqZj5RZkx1akgmZCopXzx7OHxMIVhPemZHJklpKkQ2RWJQZkk7WVNmM2F4
PlZwR3BtdlJZMCRQNzYKenpvdTxacHRnLUN0STtXKkw4bFBnSGJsWnpgUyliZlpibkUrUDVkflRf
ejFhKSh8UUl4bGhfIXM5OTM0ZW53NjdDCnpORDlXZXRGPzIrVHEoQm5IX3dDTj9HVlFyZTNJUFlF
Z3JlU3Fwe3FBUDcmNFFYfV9BP2QlPjE5KX50QntHPTRmVAp6SXp6KjtjTTgpVnIha1koZjNlcnNr
RmozemJndSFxcCkyZV5nRGQ4KkE8cHJiVTQoIWRJfEU9TVpFciFwaElzSFQKemNzZDJRJDR6cik7
aHM5VDx9QUpNX2JjbDF4YmRSOV9kKTFfMXomX2xyUDQ0RSsoSW0keGM4enxvOTV1JiVWUDF+Cnol
TzFSZCQ/bTxaMjUwQm50aWtXUDR+UnsxOFUjeG8qUExCe0BpNyM/Jnk9PE0oS0lBTzR5aD9sZnNr
SHE5eHhWYAp6Kj9aUTA0KTx9RnhHUDJYYmpkdyUhdmpfJTBTdVNoTmtpOXlxJSk5aFdYNlcydXgl
PGA5KEBgME5sI2kpKkAzdHkKeikyelFoRFBoa2pydClYUmFqakgxe3x3TWpJcz59eXJNeExiO25P
UytlU0RedjRPdW9zODlHK3NHPGxORjghbVV0CnpkQTgzREBmUFNvRDl8eWArbzlgRlZvNjxvayF5
QV5wMnYyTlkrOXdqRmBnJnxhPSFIMF87TGVkKj9iZTR7LX5LYgp6XkViWUhTOWdUaG5mNzhFXiUl
KFN7U1JiazV1JkdIIUNuX0Y3YURpZWJvYkpaSWM5Z2RsWjBIZ2dfOERzc0ExSUAKemUrMX1zdnVm
eUpxIWxrfW1TfWEpT29udlN7bWxuKWp2ekRraj5iI0V4cj94TU5WU1UpeCk4IUFRVjU7RTN4UEJB
CnpARjVESkd5OUJKcE02Rlk+cHFrZlVUN2RfNz9TUHQhXkllS21+YmktbXs9RUozUG99Y01IZmRa
bTR2VXEyQCpFYgp6YEdjWUIkcW1XWEp5V2xVS2JITmY0fEpDYT99NVFxR0B6X0R3RTZ5dV5CaV58
NzIlNVNkfT1VekxHVXskdXV3QU8KemZ6KHMjOG54Kj9pP0V8SCV3QjJ9UFFuVktHNloybG1RXm9i
LS17MFlIcytRSCYjSEBhQEBRKnhxfi1MSjJIWX52CnpkVDUrb0N7TzFAWGs8Yz1rejdYNkZvaHlu
em5kSXoyJlJYOzBGMFIhZHFtZ2E9djBkWjYyd0Y4MSVrdGhne2UydAp6Q19ndTRBUmVTRFBTRj9Y
bz9WYkt4UjdpTlE4dlN3JjJYI3AwZ0MmZkxQVDQ4QmY5MGpscFNPTUQ7Ml8lXldDVUwKenZZVWBU
ZE9zMGI9eXMhd3R3UTR6djtrcnRvKz5tVShPP3NeXnR3MDwzVHh8LVlBWHVsX2VjJEh0YilAQmNU
a3VtCno5dHImXkVOI0xKY292SFdAdHtETSZ9RFF2VnokfGByNFhBbD5KO0l4Sy13Y2ZZN3srUWlf
O3M8JFpAeH1ATlg0NAp6XkBtS0hhMj1mU1J0bSFOJnJIR0REUmFsYzZaa1pOaEgkfHtOfkprI0g/
aiN+QW19UShqVn5ob3sjbm5IamMoKGcKem1fZDk8dVl6Un57OFI3KG8+aWVJM3lFSjZlMn5tViFZ
fG8ydldEe095VCZ5YHdrODQ3czFJaFgyfGh4JnhKQDk7CnojQ0whbVNPMldHUVVuIWBCcl42fEpu
OG9tZzV7NWhNZGVhRF9hUHhSO1JuY3hTV3U7Y3NhN2h6NnswMGgrPEAyMAp6QE5SYHdDfGdSdGNh
VyRGZCZpY0JoZjxDZlo9Oy18TXZ9eGxockskdzM9bWdwNj0oYFZMWnVPbmx7dT5MMm59Um4Kei0o
Z2pIZlh0eHRRPmJPWi1uTT5VNFlKflY0WiNZWlBOdE1RLShATjNmV2F3e0hoZDVmWVZqWj1TYE5I
JXE1TXtMCnokXiswODNvNlBobjdSQ2QhcmprMUQ5PH1RbHAtUmMmMnBoSnFGekojMVd9SShnYlFK
QExWKiNeYGg2NDxkbCRmWQp6bUopRnRPUUF+bTBqdzlkeER0ZU51eFR6OWp3Nis1dit8Z1hBc0g3
I2xsYCp7KF4xZGYqemkhJjJ0VUUkZXQwTjcKelUoTj0zdkxreFpIeXBeP0BLQWFlSVh1KHxtRUxV
LT94Syp7NUl9dV8lN0B5JkBHem82RlErYVNXdj51Nk1BLXVvCno1MGVUak1YUSFBJSZaV35XaSFI
S1czOSQ2NnJ6Q1hgRT5EeCpKPUY3Kk8ydVBwM311YFNpIzh7QGJDXjAyS2dhUAp6R2JoZ2k+dm9J
VWs0cUtEY0A+SmlBS3RwZ3htZV9ldGU4Iz10SnN3c2BXOXRHdkhiYD5sdnVjbGRfM1l+OUNHQHYK
eld7MTRlYEY5RkAyOE8wbEZmYFF8MHQzY0Z6ZGNoNyhCX3tkQWdQPnA0Vl5gN2U7KWVub2xwV3Bj
Uj1MXzkwZ2pUCnphRU44Xk5NUGh7U1VOWW5aUXswKEZZSGViclFsSkokY0JMeD5+ZDVvbnJMX2Nn
JVorWjVQdys9RTVLfkZrQGZiWQp6UTFKWDYpV0ZhYVA7WUFxdmxSTWdrc1UtaVo9O0I7IWx+UCtT
USNSQ0d8N09fMWB2K2lNb197JjRHVDBvaDcjfGEKejslOHF5S2FgQW5QQVpHPXN2ZE5PIVhNeHRE
Y2VwYSlKNDI9OGo+IXdfOTllaktWRDB6KENtVzJXRUdhTmN4all+CnpjUD1CV1pHP3IoYFRXSm0j
ZUR1dTxXaGQkYiRsJVVrOFBzfV9AUyY2bGVkSXBOUHxJPT9GbkVGUEtQflp5K0kkfAp6JGtQVD9z
NW5kPzt4Pk9zOENMUH1WQ3loP3lKcShIZXUyZ15WfnA+YnVxeHMoIztlOWVEPik+PFZRfEVVMjBx
Qn4KekdreXI8cDtVfGNfe0ZYRzI0YzdHVl82bUAhWnxsbmg3TWtVM3d6UUw7KCNiI1JXbGJJRlJv
N2Y5NXUtZyM3aSFyCnp4aWlRM1FXMEFtI0JCWHV0WTN5TkNnKVVOSSFDYk5rSGY+fkh+Q14tcTth
SEFFfXM7R29YI2l0MWR1TV9TUjV0ewp6cC1CPFBkRGJ2JT9XbSY9Vy1BPDVPNjlgR0glLVV3NG9W
fmpMTEhNQSZxeFNxI2tXbiZvPnlsVGM3bTI1RiZJUDEKekQkKylYeiQoRWJCVGR0bmAxRFB5Nj1V
JDBTS05OWjcoYl5CJkcqbVJnYVFHUCkjdHVNYllEWDVXQkpWSGZnbWcxCnptRmNwOWM7bzw9Rlpr
aGA7PV4yNiR3U3hOVSkxLX1nV3Bgd0QhKXB9PDNMdFgxKSlJUkZRRTRLY0pNZVZNfEcjYwp6NEpZ
bj4yeEQ7VjNKdmo3JCRiPkw0fnVkKWRVMzNjMDJ0T2tzUD9CJkRefjVzJCpXYSg9b1lhQjlGU1Qt
OHx1WFEKejZ0I2RpYTA3QzJgPlFhYzErV05KQnkwNVk2cm15Zjg4fjc/RDEhNEMtKmAjX3dGTyFy
cHRnOSlxbTxINXE/RCEtCnpuby1XQElKKCU9NlYpdjR6MH50MSo/NVJnVjJfdmlXM2Q+RVpYWXha
VVpzNmhgTyFkaFI0NkxDR287JSU3R3JkRAp6NldPdiZFQzZhRjU4OTxSTFJOQWNrKCZyWVQ3czht
e2l+SEBhRmh+UCl2NmY3YDhqb0hmIXNgUDFZO1FDT2R5O2sKenpVdnZ6NXs4byY4YiokKm0zYU0+
bm5lfWdwVm96KCh5d0lBQi0lX2ZsOHMjfjZ1dkEpZFV5PTNHfWUrTjFtXzg9CnpwOXdnblQ8b00z
JHVARXpWa1NNRSY3emBOYyVBJUZgbk1mcWx9a2RiYzlQdlRudFcocHU/b0s+dnA1RDVRZVhmJQp6
a3NwamdDNThUM1dhTkF2fEV2ekM4NzRlNzRzUjhjZnNLOUszPyRfN1pWS2E1WjJwV1NobWE7WFBt
IXc8UjdZJlcKenRxd1RSJWtqUVl1dSkrYiM+clY+RFFhVzQtcmh6ST9FRnlqM1lMZnM2PlEhTzg3
YThlQ14lZV45WVZuJTVYQ30+CnpXbW5Vaj1zT2o+VUZ9aV9NIXAzVXZyUU9sVmBLTTVBfUNwP1Ax
SmclPGZsPHM2ZUlZe2NfOT1SREM3SnVzZE1NNAp6akB5SkNtMndLKEx6Q248MzlsIUZ3LUo2cHR8
K05rVUtRdlVRWk13a19UbkFyTkZ0NiFtRT07Sz9KZWRGQkY5LV4KekM/KTtZRzdMWntPeVEzcFhP
TCNDYjBuM1F1TTN6aCU8Sn0jZkpRVmRtZUZoQWhXKnAqSVBzbHZGdnFQcSE+KCU1CnpvRFEtLT50
KW1sbX5yWG1MbmxaVj81emUwZFUkUlk3QFQmbXlHZ2YhY3QxI247Qkp5VXwyRyZpUjU8dDVaSj93
MQp6SmwlI2JAbzkmRVVAaWtaeXR7UTlvYGNwZXRuXk45Wi0qYGhnIUBoWTk+fSgpNWc/cWhAdWx9
byshP14rVnxiVmMKelU7K0ZiUHpRTDloJkhlemAwLSlQTU5FezVZYGNNTWlRSEBkMXIqdEtCaVZ2
dj1OTU99WWBkT3BYJndsemwmeHNkCnpgUW0pQ3gqYnVoZ05DXzt0VDJKSDxETnNWeFg+SiEzfWot
U3JAKWpERjxsMX1nbj53SU5pWmN2T21WRSZHY3VpQAp6QDw9aHRvU3YkdStYKld7b0pwKT5SZ20j
XktAbCk4Y2Y3IVVLfUR6ZU81WmYwOVAzQEBQMWooJjgkYi1meEdmNnsKejNeKStLM3xgMEhCM31D
bCluajI4Qyp3R28qTEpAJWRYK0lXMVZXZVROP15uaEVfanFmbngwdHdmLWVgYkdsRHMwCnokNTE1
S0RuTWNpQyg4NkYrcEVUTWlTVFNxdiNiYzheTm5uY0laPEhkN05DYWtRMXRsWVNTYkROZGhrYG1r
aDNWewp6XztJWFNGbTlOOWRodTliMipOe3khcE9wX1M8Wi1BUHxSYjV7JDxPalFofihBR3B8eUM2
aVBuKUpxb1dHRWppVnsKenpaMFZCLUJVP2t7YlcqPHA/LXF0RVk/TFNFfHVecUc+YiNTRzAlI0BW
P1hgPSRCLUA7UzV6ODRofEVXMXY5Ul5YCnpgMEs+QUVpTSZvQXo8eUROTX1aTjRUViVrak1ubEt4
O3coaU1vMTQhVDhCdDRoR2d4PTR1YkVqWm9fNmModmcxOwp6PUpPeUpyVkJiazsxZHY4WipjI1JV
eGxaYGN5S1Urb1FyYF9EX2x2VEdreDVlI1FJPGFlPn1VYSpFNW1kS2Z8b1IKelF6dGcxemE8dG4/
JDFJYV9fQUpxJWxZZ0pjTVhiaTRhSF8oWCFzbHRHNUlZV1Y0PXw5SWtBR0NiejQrRW1YP2lQCnpC
d0RVdzhjK1NSb0BQfmQ4eH1yUE5rfVRIUEc1dnxjXnB2RGllTm04MFlQQW9OYlM9SV4hTzJ0cDU4
UFUyRzVVUwp6MCNhNjJhSCU+cG1gQm5mYDlsJUx7bDklMDhqYFo3dH50ZDk5OURpck43QWxRdHsk
Pj54NnxUUiRiMXZRbHxxMnYKekxJfVJRQEQ+WT0mclAhbXBSYzBvRX1kSD5kYFlfMjcpbGhTRkt+
a2F4P24rMVVfZFY9dFlKa3NFTm59V3JUfTNoCno+ND96aGIyRmBjRE1hSXlwQWtie1hlIzckWFRv
azhWdytNWjFldntGNyQpYXYyQXxrRV9oKUxWU1EyeThVJjxSagp6M2BwNUNOWkk0Vz5fSjIlNGc5
KzdnMHQmQiNfanx3dzctazFAfiZMSCFuPlJ3TiRKMzw5MzFGST8+UHs9VXA4ZnIKekB4fWFVajUh
cVpDbkl5ZjR4P3RxS0BndyllVyVHJFpJLVJvQGJlfTdvRUdMSCpIIy1fc2VFYFh3QmI/fEZRJVhx
CnpyPlJNZz03LVhWalVAeEVOKCM1cEl6PmMqbCF3MChpZF5BZi1ZT1AkQjgwQkZEZFFGMWV6WkIw
aUNxaWdFQjVjMwp6K2FpcFpmWFpsazZ2aEBvJE1nQEE5JjIkYyR8UzM7YiM2KkJ0JWAmQVQ3X1JC
Qj54KE9nZVNeNVJFO1ljX0cpVm8Kekh3Qjc+UUskeXQpZUt5JlQjfSo9SlZmRUYtfWUrJE9nX1Jw
QFFGREhaRyFjK0goO2RVTF5raD5IY017O0tmfjtCCnowZ0xab0JhaSUqYGxocmBoVFhvRm9paDxq
X3ZzZ3MoTWx2IUFSKzR6N15RSmJLSD9sRzFzYD52TnAkTWpMX1liMAp6SjRzVyRgIUFUZHVvdyVK
OFpoP2U4Z2pBISM8dzd4IShGKXMpeWA+U0Z5eUtIZHlARWIqfmlAcHtHUCZ7R15CJCEKemIrR351
KCZRU19rQjhvN3oxcmxUKXI4QS1vT2RkfSg3P0MmX3cwZmcyOFBeeThyeFAjMSRtPy03NzBoOEwq
PTQ+Cnoja0otZHNsQjdFVkQhaX1APF5sUEROdUB5TSMmckhPVDBELV9kc3M0ZjQzVVo8SzNRS3hS
ZlNRUWhuRj5GVSlMRQp6PCViZ1NeJGwpQzwzelp2eG1yeFI5Mlc2bztJVUw2KChudVE9fHtyM2Ro
fTEtM3IpOVZXQUZPTlU4ZSVLWW5kI3wKenNKJXA1ckRMMDdnVjtnal4qcUBRU2M4bj47bFdxZEc4
cXNxTWYjZ1ghamVuelNZNkA1Q1JYLTdFdylDLWY8NFdECnpHMjB5PHdCfm0wUm5kYl5jcnQ1T0NF
XmRNYk5xWU57QlZxVDRQUzxhcy1eXypmR3N3ZTh+UkpnaWQ9fDJiO3RQNgp6I1dqJCkwPUNqU3Iq
Nj19IVh3U0FqOCg1ay0hS1Q2cHBUUXFGazFTQmBhd156aChVUTNgSCshalJxUSNYUjI+ZWcKej1q
fVA2Tl5qa0JMWWR3Z1JSOGVCZWtkeHtLX210dkdzKyZOK254UiUxJGEmTkZeQERPUDBCdlRIc1oo
UE12R0UrCnpLUnJoZjhWTmhlY2B6XyhRcGVqPDhpbnFzPGN5dylWbnRnUDx1Qm1uMXViTmtgTk8k
dUBUTz1wcUZsPV4lc1d0RAp6O0RjdV44fF9QQk5uJT05NWhwWV8oaipKIVd7fSpIbXxHSGRQdm14
fj5TUXxERmVmeGNgQ19sQ2h3MW5oYXlUNkgKelF7OUtnY2hsSnQ9TmttTiEtckZ0PGg3JnlwTiV3
fExqODB2PStuUDJvQlM4Rll4PzteVEwxMnx4YkNqV0tIZDFiCnp8TVQ0N0puJDlaQ31fODhQbWVO
YVhIXjt0Tn5LWWU3dTJyOUBnZCQ1UDU7fVQ1MHA/JnMpTzFldE0+MihOaDxYdAp6dFNXRmpZeVh9
VHtjdVlRNyh1bHVYZ0N5OUh7dG5GUXF7WTBqWlU+IXdNUykxUj5lP0xMem5iNzhwRlFwPFNzVlIK
elpVKChUMmtgZj9wX3FFb2kxak9hXiNkX080K2J1RllqLWdOKmc0MTJFUUAhPXo/SU84PD5VZEg4
Y2BwQHQwLUBiCnpQbmZNcio2JUNFKEM2SFl4UDt3d0khc3F0eW1nU05QcGZ1RnBMYlgyVWNrR3BI
RlJ6Ym1sRTl6M2wpVnpuUGtLYgp6d09wKWQ3ZlF5ZCZBRjxYOFEjRyYpNGM8NiV2PmJVbkkzcj8x
I2M/SVhjTFhUZCpCVVhSX3Ywb3JkVGtKcUtpN3UKenJ4NXVIMG40O3FLeDBiQzA2UVlHSW8qU0Yx
dHVfbllfVjJRJX1wdWg0YFRFUjtfantDelE5bntGJGQ3NC14cSNOCnpEQ2hYciRNflV9JGg/S2o9
VjVNZE1MO2UhczZ5c1lCJUhfRWkwREcqJiFzOVk2blp9bmhxcUJFdW52fjBfTTI0VAp6eyNicWh4
bk54VXtESSlAc3khY3xuV0x1SUtsWipUPmdfREdtQVYmcEwrJlFScGlDREIkNEBPMFVaSkhlLWtv
KDkKejs2Kyk7cCVeMiUmZXB2RWBEPy11JHZEeGFEJllyRWRKQmNTVjJBaihrJT5+IThiaEplcGNj
fjEhKSVLIXJKdF9mCnpfYXd9MHdiUCEzMGZeJjc4bTwkfjFId0Nlb3UkSHRXVU55dWFkT0ExM1lj
VCVoTG9hdkhhMkQ8KjBWVWhDe15NKAp6Vl9fYExFXkBKVEV6ME9aIXZjd1pDPXwxYzs7am5VR19F
al53MWdCI2VsKk9fZEA/S1pWM0R3WD8qajt+TkVtPjkKekllT2s2SX1pJjhSemRjVmVBd3JfVjsw
ZSkhbz85cFlPOWdEP0YlcjhgRGMtZU5eZ3hKJkNFZUxUbnFtcC15U3xlCnpCTF8ocndoNH1UdFZu
JH5oJVpzIUhCZVl8VHt6cztxKDw1bC1XWl8oaHJoeTFTb3Q/R0Q8S25sektLPlZwdEpFVwp6ZyhN
YHdLS21pRV92d1VxXjYpNW14Q2opUnByY3FzV089fE0hOT57amZgQl5aUXB5JmF4cHEqSXdFcS19
P3Bac0gKem43VV9nUzlpNC15fTUqfTJzZEUmYFM5JkJ4LT5reF95KVlTTDNwXkJmP0BKaklwRSkz
aiVmbWxjWTJxXzAyK294Cno2YElneD1Ab3NZYmhWaGdCZkRBXnpTdTZ5Unw/PFl1MnY8fUQmPldn
eE1lTDR5RmB6YzhFfT5jNDxKbF4kJnw9TQp6WEFJVW4mY3soMSZVekBxXkIrLUN3T35TclRSKERw
aVFKd2Z3P2AkblI9dX48fDYjdjs/fF4qb3V6Yz9yb1VENygKekxLRSNNOG4jaVlXeUp4cWw4byYl
d0RYWUsmRl9hUHZgKWViSFNCbHxWV01aT2E4OU9aKzk7WXM2d1Ahb25vek1FCnpoYW4kRkVyPXNJ
R0Axbm9kSylxKj9HIylsfEJleyRefkB6Pys7eCZkSiVxJkhQTkFOclB6NEowTCREPHZWO0o+Vgp6
MUhmX3Q/fDxPSlBlQF5FaisrRE5EP01WdjBNezRZaEJLTTRxMnY3SXtIRnRqazBIUUJZQmpWWk82
R1c5bERENkAKekN7fHsqYnlAVUVafHdTNG5+PXxLdFBNfDdgbVJOVjNKMklPYiZwLXhqQTM9TDZ9
UU9ARV5IX1o1NWtCYFVFVFoxCnozc1UrenJGNzcycV9sX1NVcmVlMGxZUkBtMH5VR3s3SjhGdWcq
UTVzVygpZj9WZDY+QWdsMDxtUCFAan0jMFlGZAp6Km4/cnRBPis7QDFPfnhEaUI1ViorPDgzKEpx
bjYmNEJTJnVnQEZFfjdpK3FnQE54LW4wXnZPKTt6ZD0hYUhAYiYKenA7USl5bU82JjBnTjgrfmpr
ZWlVZkl3SSFUI0glTnhyRDtDUU1rOEA7Zmtmey0/d3xtNHZhYD5uOElyOC1rQF59Cno4Xjw3bHRs
S0p1KXpIJXN3Qy03M3RtLWhrbENYc35Gb1prY3ohdys7bmBrPmlDP1pveU4/OzNaYz84T2k9JF5l
dAp6RXh1MDRYSkxfUCozIVhFY1dXbE9USGVCPSh8QmswVz9UUzE2M200dGw7Ni1rZCUkdUs1Qj1p
azA8NylfMUdpdTsKemQ1fHdpIyhVWGh0az1VPjZ9VVR6RkYxJmA+fDVZQEFJPWJ0MWEzOX1md3FF
aE1ZaUF8Q3w1a0Z6ezB0Q0pSRGswCnokO2x4VF9RP15MRj52en5oTU4rd1A2SUJUXlcrJHI2Vy07
PEUxQyFRbj1GTDdmNmlQKkRIOyFPe0NrUURnfG14VAp6alkkbmw7Zj8ycXZOa3FEPjhyOHtSV3Zj
PF9gaElFY3FPUXhEZEJudU9QZG1RPnpOSWI0O3ZnWiFBNENzbE1xa1MKenM9MmZ+VUlPfkEyeVp0
Y0RUT0JOYD9iPm5pV042eygpPmI8KWZKRTkkPE5yPkoqQ1U/bWNvbHkwMVRXaihQX1p8Cno+OHpw
cHRmMmIqKEZ2QTFlbjFgdVlnfT54bFZYUjQzO1VBTClGfjV8Z1p8d3A8aDNZZGEkQDl1TkgyXzdC
QVdHXwp6VV9gXml3VEhrXjNQSEhuaGBRV0ZtNWRpTkEpeWIrITVnX3FZQHAtLVVWKl4re0VoUlU0
LXs8SllYYXZePD9gKzkKemMkP1RxX31CYjwpUCpJYl85QzBMSUsweTY7PShJPyF6K19mRjUjN2lA
SmZBbnI4Y30kNkpEdGZQWkhLS2Elbis/Cno3PTdLcDJpKV5Nak9fM29hUDt5b0AlM3VxKyUtdGRM
cjRwNGBvOylWPSo+O3twenZhWDx8MXJkbWB6fjRyejF6SQp6RjZzOyhaUD0zJV84N3cralRObDsh
WX4jfldgeXFiP3xUWW9oRkFwUGpwVjFXPCR9JFZyOyZUP21qbngqM2dDZy0KemBEKjJrZHRrQVA2
azFgdERnMmBoWCVNZm1gfVpCKShJSXZoYlgjRnc1JW1zSyR4ZmA/b05LNWBKWDlxWWo8RzVjCnpZ
WGI4UnU3c2cxU1BJIX1GNHNkNj5md0dJS2FtO3JLPX1sM1F8MG1pJGAobk1CNHE+dyVrX2pWXkto
aiUxO1lMTAp6OD5wXj1IcTd+WDt8cyZ9WDt2KEkqcFF8VkZzSj9JeG0/cGQ3UzIwfF9zcW51VVpW
M05ySUR2SmBZRFplRl55ZmgKellOZEMwU0ZUcCtIR3B5JFp3KXUzbTQtYmdWVzFlPWV6UyMob1hk
Zmh1P05hfTAqeitfekR9V1I2bXEhKFh+eHswCno9b31sMTsyKT5wQDF4KiotZSpOMU9hcWN3ZmtG
bXBoWGw1ZTJpfVpFKW15b296WSNTe3NoZGpQfDQ4MVNCPTAqIwp6QDdiTy00NH43PD9HMTghaFRJ
K3otSDdwfDA1aVEra05ZT2pScStQTUp1Y01TMWFgS01TTH5BKU45Rj11KmFzb3IKenUyfHNfb2Fr
V208OyF+YiM8UlN5NlYxJG12OEk8VigoKUBmey1sKklTdz9EYEdFOD9pJjF1O2RFbUFURCVRRUxf
CnpPM0J8VEJ9MWY/KnY0bTxYeUFNO0lVODwqYX1QUDZKPDglQClzV34rQ0NBQytJMEIwQmpfNjRE
ZDJubVNKZDtGawp6bCgzR2Q+NilXeShyd0htMTYoYDFhPEZgM2NmXkRGTWRGUyhZNlVNKzh+OFg/
S35mOyFnbzshMXZyKFc9V1AwTm0KelN5TV8+Jj1ZI0V2Q0ZKZ2MheSljciNqdTVQZ3tzKmlDUkoj
dl9CNkcycE5UTCF3YXheQjIlfkY4VHVOJSpMOWhiCnpedktULUQ5TmBgbEJaTFdRXlhgb0Elc2ol
PXV2U0c1e2AjKG1KdHBvOyFwcl57MyRzO05SREB0PEEtZng7Ylk0bAp6LTFJJFlYOWkmQCk7cEw/
TEVUPURgJjhoSENmbCZETjA9PEcxIXkwJHBlTVZhKDx7RktXfmFCVUNfNzhRVH09NW4KemkmUF4q
PG0xPVNAaXVqfiY0QVFETHleQm9rdn5rNFNCYTZjTktlYDFOUWNTTXdQNXhgVjJEbzJBTm05fmRR
aylaCnopen16S2JSTU1PLWxnRjdRKmVuPVVORzt8PzQkfDFGI3o+WXZKNSFlaD9LSEV2PX1yOHY7
Vl88N0RGZnhCfE9aSQp6NE1raVFHNl9GfVozSjV6TzMlS0JPMV82OD4hISN+UC1NUyprOW4wdHN0
YGtCbEpaaGVnRFVUKyVYPV5pYUtRIWcKenFeRlZLa35ZbUFWOGVBYCtPNEhZNz9MXzUjWX5lPHlU
Qi1HJT1MPlVzWmxNfEcwMC0zNShsTCk9JDx2O3JzYF9DCnp1PEFkaGEzfWp1c2RQV01mSXwxJEBV
QUNxaFAxeTxpYV88aXtQSl5ePmdgc0hSYUxEeWdCNj8mdiVeanJUQXlSJQp6WWVDTyo8UjwrNTdU
UDgqeUExPHdSalgrKkxpaTFFZ2JUeU1WVEBXdEc8MWdhZH0kaUduSipeJF9EcnU5MH13ZFkKemBB
SFome3NBVjxlJkRtdCZQMmlPMHRNbjZaYkhGYnE9SC1kRS1OQGIwbXVQSmF7VTk/T2NzfWhPT3FG
ZT1DSzYhCnpAJkBFaCY4c209X2gxSDU7WThna0psVVUzbFBJSythbVEkYzF7eWloKi1sfHNRckow
QWdyUVF7JDNZPFZocy1ENAp6IyNiKiFjRHUyQGtwfSE5IVYoUVV2ZzlHVHVwWkhsU0YhMCtCKmll
eVc0MH4+K2x3WU40eDsjSnkkNypfKlAtaCsKelhmWjVuIVZQTlMzd0V1e2ZhSCl7b1dJM0RFSFpD
SyZKeDZYM04mdilgfnl7aG1SfTc5VFckSjBITEd6Z2YzcEAzCnoqOF5ld0ckTzNvSXBKXitoKGg4
bmpMc3ooZCheU3NkTnh9THVZYmktanV4PGZJP2VnTWg1UitoWWFWMSs7JmkxcQp6VCgxcGhwJUJB
djhoJGFXMyZuRWtkP156MSZmNkhgdjZEYjIkOWkjSTZCNXdqcEBwcnVZPHJqdWRScERIeDlhZ0EK
ei0tYjxPSmNDQ05yPWx6Ul9iYnVsclVwdG5wdTteI3wyWjdhV2RrRmU1P3BvO2tLU0d8YWlgQVhp
Q1RRYG1kcz5GCnoxKXlKbGlXMlJPWCYqO0hZTnJNWUtKeEVadiU3ajkzQXxWWGNvKWp3Q34mJEJ2
QjA/K2ZydDBwU25mWF49I0ZRbAp6TXF4RyM0ZzImJlplVnEoIWZRWnpZLWlzZjxSX3ZHI3JYfT1R
M25heFdHP0JJcmFZUmp3MUs9ZCo0PjFGYnYjTmYKenVyZjI/Skhne1FyYzV6QiFIJHo7RyM5S1J3
OERhM3U+d2N9M3woVGo7KStYJCU5an1Tb2VsZHdWbVpOfUJNNFNECnpzVHFWPDZNKWF3JnRMSGE3
PlBQdj42XnArJXchZCY3SXJLfGw4KFR6U1NDVnlCX2d5fUJ0azF1aGFmXnJUYEBTcwp6cyQmKEoj
MyYteFZfRHlZYmdWTTt6TyV3N3BYMHZ0WXZgWW1sRkBEV0Q7WV9HOVU9aC09fXtWR1EyVEt+eXQw
O3UKek87fk45Rm97PUItQ200LWZCOSV8X0JwWkBjKGYyMjRadGJAa3l0WldFbWs4O29ZaTY4bX03
d1Zqa19CbWdwXnQ8CnprPmUwbWlsYW08M2lNZFZGR0E8WTF9Y15rSHolUk87ZXQhNCRuJXRgP0dL
XldjaWJ1V1hDP3Q+MmxlTUkpU29TWAp6cl92X1VmRjZiPEt7dT57TXZ0OUdjYktwYEIlK3teQm4p
QnVSNTBUKjA0Ny1fV3s3MDBnYEVHT0BMcl93ekk9Oz8Kej1mNVk3cmpMPjI3QHFeaiYmY3RKPXFR
cWlxIzdfXzs9ITVaPzBsblYxUzUmayRWVTxSN3p7PURqcChCcjk2PXpzCnoyN343VjNvOWNMITcx
PUxjMjJUZ19pUjNCS35HdktFa2NFWm9nIWhXIUNYJi08flc/R1AoO2FgRmNDOHBZM1VHQQp6NyVi
VT8wOE5EYldpJm5RKTZnTVc1fEtmVG5vdEh0Q2RoVGMzZiF5WUlldGpqOThpdX1ZTlVrbVdFPUoj
ZHxDe2oKejd7QyF9YSNqfk1ZcVFHP28+eChaWjJhQEA2SWZfaXZ1VjNidGtDe1V4bS1gVlR1aXkj
ZU9OM3NsSjNET3s4bDRZCnpOTjdOfXErcG09WENKI084OE5aZDRTRkVhe0s3S1VsQDA5ezZiIyVH
b3U1KldUUGVzKjZ5eXBxTmQ2ZHQwbDdGPgp6TWU8PWZLfWdZRVg+VTFaNCN3d3kzckp4RkRrXkNK
ZF9QQ05lQCh0OGlvVihXSXVRQDA7KXZvcG1WI3RGSGphK1MKem12czh+WUt6MUhMM297fCNuYD9S
cSplTTZ6b2s8ZmBXMmR8PyU1bllneVVkRDFDZDVqdV9uXzYwWThkS2l1NUxtCnp3MmRPJk9PZnQ2
Izdjb2hZOE5BMkNgQWYzUjM4TnE3M25RdnE/OEBxaE1OJHhvSVY9SEY7YTkmaU9aQXttbjxjJgp6
Tjg0VHhEeGFscV4jb087SHFoOT9QaTFZLUxGcVh+PXtaVTE4N0hQa2xCdipAOD43WT1Ke1MyQkt5
NllnUUVuZGMKekdIZWRLb0YqXmJJQjJFYldEJlkram9DKlVgbFROY01QbDM0RGh2ckE9OXFrakUp
eHEyYT9sRnxsNTUmMUM+bFdpCnpwQHglZjtpK0l2V2xoTnQhaVk8REQwN0AoNiR3d1ZzVk55a2pY
JjM5SCtGYl9FMCsjc3h0QzRsRyhaY3A3QG0+VQp6YmViSCpXeUs8ezVzZXtAemc1JVRpIXpHdEB3
aWZuNiMoNW09cllIc2s8SGdBbzNrbUtNa3M8XyVCQzVAJX4meksKelBWUDxRWlh4JjFnSkxuKihC
XnZpK2NmKz1NcUhncWJpUGUhVEx8cmtnIVp6QyM+OE4yQVRNQT1adllxN0VucDRwCno/dl5Sdy1p
REQoKUptZkJJQyp9TkpwWVY1WjxnWSlebUtuZCl9cWdEKU8hLTBDa1VzRmFQfHw5UV5HMGYoZng2
Vgp6Pkk7ZzxpeiRhVDMyMT87MlVTdWtKKHJPak49KG1eb3Y/QyVMa15wV2wwa18zRWo8djI/S180
dFRITHAlJDs5eVUKeipMMGNIKURuaV4/OERoaFFKPHUhS21ENm4xWkopT2d3QHw7MT9qUnNsO14o
KCg8a1g+dnJOYjFgbn5GSHt5bHlLCnpNemtgMHh+Q2Bvd3FFfXw1Rk1XQW9LRTRUbkd2MX1pdHZh
Vy1xfUZFekV8KTNgI3pFZythNDB8I3Q1NWIqZU19Iwp6O0J6MWU0U2h5Q21YVn1nSWNsVFZoYmdQ
ZXEjbElpdUE8Oz9ye0VgMkBVeH1oKE1hUWZPM1JvdmdiXlNOMlZvPmoKejcoYEAlZzZfJjs3Mmls
bWhZNHY1QSQ3a1l3U04oYiZvUXp6VjlKVjdjeFRYVHJhPTVrJXdBJGRFRFdCKW1eMnEqCnp5aG1h
RElYYTl2RGVkPXhQQF5XV1pZLVBvJj5vRXg1WDk9OVB+ayt3N1ozNmd0UWJ0PkQtSV9zZktDSkBD
YDFpTAp6O2BUd2ItWlJKT3k8PlM1XippTTM5ZzEpJU1LfSRMRmhgMVQyPUNTZWR9a3I9R3oqXj47
U1c+JVMpXkM1K3JYMG4KemNVbDwrcn5zNmEoen17RFltTUd8djttRlIxdWluZVhQTjR6SURTTk5S
OGJ0cVVTfGFaSlQrekJwdDM9TlVNQnxtCnpkPUwkd09nbC09TD89dDkzUl4oSEdrTWgqTiE2dXZ0
cWh9P0FZTWhsPStudCN7SDFzPmhRI3R+d1M5eHA3fDFEZAp6ekNkdzROTzhLdklDWHpxWXNfeCFe
fjheRDFTXlpTe1VrYSZ4WX1AVSl1Wm0tUHY7SXVrO1J9Z2dTfHtaaVlSNDUKel9rT3glZmlmJVQ9
Km5TKlJ6IWgrTlApalpmZSNQXjJhNjNaXzx+Z0otVmQ9Yzc+UEdSQzA/fS1EbVJxJTY3bSpuCnpm
d3hvUz9ke2paMjB8VnYyRFRSS0FXeyhkN3JaS2Q2QDxYUj1zJWVVVkgqRFBDTGM7Y3ojYnghZmY2
NmIwIUUzQwp6PyVxJGt1QyUxWShAUjdTRUAhPSFqbWB4RVFONmUmdD1zcktrUHM3Y2lBTj9aOWFa
I2x4ZmQ2Z0o5Tis5dHllWDYKenV3bSZ3Tn41MEFIfkArO1N4T19gbj5OeEdFe05JZWdLcF4lcWAl
MGojakhFZnRrdkZPWUApJk5qUygyakEzPUtGCnojU2pgVUk/emJkaXo7TXBwRTUhPlN4T1NGUDN5
YUlqMCFLZFExd2wjakpWSk5jXytNKkh9JnY2RDI0RGxKZjZ+NAp6YE9tOS1jbCRyZF5JeXpFYWpm
YEFFRGw2SEVtSGluT2pyJV9XQ1V6NS00QlFDeSQ7JWhebkR9KmFyRzIpUWZMfCgKelpYNT9mN3hX
QWBxZ0Z3ZDswUlV7SHokRn54JnZGZGdtSnJzLWslS0pWfVh1aVB6KWlqYGRpTHNWX0UjZS1JIWgy
CnpyN1VAO2ooWGIjQCNQRTxKbEtoLVQwYk00PktnPjJpNUFkJEtGK19WaHU/I3lNSFczU2pXWkYm
NDArPS1TOzljTQp6KHFqd29zKGFRZkpgeEJTcDZrc2QhO2A2Vm5WUUdjMXgmUnZ3VjB7NUZtKHgy
P19nPnJRPUxxJFZRTXs3eS1aIWoKeilIT19QVihKRV9aZXI/WXJmeTtDMTVBQzBzU2gqdFFLbWt8
KUYrdHdCdllTYT5lRWMhIVBNdU94fF54e24wa1B6Cnp1UUJ4P1F7UTZoNXZDcXg+SXRUUCM4aVEp
OVpjPEg+UkcxdEZ0d01kK3orVWYpSilZZFJtKVU4UXc+Wl9Wcm51fAp6alpBZWl3VDd3bk8hWUUj
NjtzelJ3VFk9NG43V0NubzArPFdzU2h5cUEqTWRlKUpMSmRfRjZifjJReGotKVpOU3UKejlxe3wj
fEVkeiR2Y1FEPXJZd1JRcXd6cGhyenw3MkdZQj5BPmBxZChkcjN8RUUyJG0ocCg+dCNnVlpNdkxz
Y0Y0CnpKNT1TfEhxdlhzPSpsVWtlRilXJUNPe3E5KCstdDteYzFOe1N4XjtjRVRvQEZGPj9EQGpB
dG4+bUd5MD8kfjcjVQp6JX4waj5lQD5tZHJvNlYmWGlpVHpXKkUoTl57ZF8wJWJpfjFyMExWQTh8
VDs3eVFANzhTaTlAJSt+d1p0eD5eTHcKemFlQiEya2w8bF9CZm1yd0h9QEc2Un1ZfXklPEZQRXh8
JjU3NX5qUms7eC0+S2FtbndSeFRvR1RhbkJwYy14UnA/CnoweWN3Pl8+diNuTTNIUyQ9Mnktenkx
bilGSFJZPShSRSUjaFBNVUN8YWRLd248Y1hRbkNyLSpWUFJnN3lkQ0NsRQp6JURwI0NuUGp4QXN5
Qyp7ZSZzTExJcWNXXyt0WV4lbUtrc1FaZVJWXjtPbFI/PnZVbWomO0lWJkA+aDtley0palgKekFO
T1B6e0EwSEs3NFpAIWZCa05mQHhKUjw0KTZjMz97fCY9ZDtJVDk7RDJIWGx6N1VRSjd5U0RKO3ZL
SThwQHkpCnpsVHZUMmNoXi1fKkVxO2ZXdDRUeGpMUkkkdDgwems+SmBrelZSVEBxbHVhSUVPPGhI
SzRNcys5blglSTBAbUFOZQp6QSN4KHcrJjBuY3R0cEcrP3M4WHE5byVTUj5aQSEtUmZzayVITEVm
a0Z4S2R1bTNtezFrMUh5Kzhsamwyb1V0Qk8KektCTEZ1dTklZk50ITktbXdaaUx9bHsmbyFjOC07
XlFnODVhYWE/TjZEc0YtbG5penVRalprWlI7e2lyQHtqQWk8CnptQndZV1FZKCM+dnI/PCNJNSE3
dlk5KGhhQ2M4U2Y1cmVzZHdBQ0pDYiF8Zz1PPzQlbk9JYkY8Rns1Zm17ZnVKSQp6ajBQdj9VZEUr
Klc/JjlyJlBIZFEkQlQkUGFVOUR2OE0pO1NGTVhHLXR9UzJUTkVeI1ZhMkA1OTR0RV5xc2pJbHQK
ejtwSj9MbUtJcWBZP2hxNGJCbmxUKXdQdmVNT3wmSnFyJUowdz1PTHhTeGBMUm9NUzZxVDNvejw8
RXxZbzRmTG9YCnpacWtISUUqMEN2LWczOGhoTEpeWHRNaj1sIzBwR0h0c0VRMlJrO3pGYWFtcEVZ
TDNrbER8fEluTDJoWkhtXjEtQAp6WSZNJlNgQ2AlKDxEP3NBKyVSPjw0VT4ofDwofHU/aXJWXiYr
Mm5WRXdfJk56PEVTdnMjTUh1bW9PIzkpXkFmWlgKelM0T1NsRT87R1IlQFFRalRVU0AoUzwpOUZN
KiZwVmRMMz5RKn1vaSFfcklENyUwaXZiaUBmfWMqPGpeWlRqI0I9CnpsQmU2dE83UjlgPTQzWUlX
P2ZRPkd7SmZ0SEteRk11YGBUelRhTHg7dUIpdj5aPng7czdTPFZeQVQoK21aZXRaMQp6VT1fODtJ
TTdCa3deSmpVVHdWVlNSaEQoKmpMYSpsakokYSFoXjtTckVLPE5nNlJVTlJaVD45XzdCNGp+RGtg
Iz0KemlAQSZwKX1yZ2BpSTZlZ2s/T2dnK0pFX3FXITF9bGJ3MEZnWVZXZFpNaDNaOCk7VD0yKkwj
aVNIOHBqMjhPdipwCno8P2lMYTZePmYock8ycmotdnRAcngqYVFoKW91cjN6ZFQ0XnQ9bXlpeDRn
RmNaVT1nKmx2SWAmRzBMbUR2LW5ZKAp6bCE1QSs4cHJiVDhyZzN+MkY4Jn5RaFQreWpTP0QxYiU+
ZntVQ3ZpZV49UGoxKWw/ZU05RT18N2hlbHQkKE96OV4KekwpWFRUTDh6PmdpPE9NNlhaIzklNCk8
IVMhO059Z1FDP2YmJGZYel53SDIhPUlCRXg9RmYpKyhJJTdxaGtHY3kyCnp5NCgrOUM2e21UQT1k
YVooNjY8WEReX3EkY1YpR0U+OVBxR0dtSCFCJH0xT0NGTFJmPlJ+dHZxR09rIXJTeU9gJQp6TFBS
dUhtMUNUKjxZWTVzX0RDKSEraUs0fGhxdTc3QjR5PURjbEQoWCRiJjwyc2MqUXtzbU1YQ3FheHkz
RXdARTUKeilKQV4kQ1khalVmVV5KdFFSKkI0VEI7ciZRckgoSzcpQ1Bwe2lyUl5QMG9veHBOcHRG
aXQ/VWAlMnszU245V3NKCnpxU016ZSM5Kyo9VDE4ZTlEKGRTd1p+ZGY4amd2MW1QUCkzTSR5YytV
WihFQUBpQSY2QiVnUXx0TE1TTnIrJk1Obgp6eWEpem5mUUdBTCRQVlYzYSp0PCV4NHQ1YHJXfEFP
YncrZFUoITNubyhtNlJjaSFEMEh2QH5DPnIrUnJVST5nZVkKelJwb0J1eFVtaTFAP3x2K3RKZ2pE
d3YwKC0jI3l0Qm5iQUhYQ0V+NUNGSjReX0paY0Q7I19PJiNNJCM4P3hAc2M1CnolZWBPZ1FGZ2tq
TjZnLW1NQHAxJiY2PlUjQlRpVEt4TzhjPyRBK3FkWl4hKChYJVhieyN6PFBtVVhqcz1RelU8dgp6
MXJ5MlRId0ZgbEVWPlpDZCRFXlNSPVQ0QEZxZ0JqdihufUJjI1JjUS05fCFqO0cwJWtYUVZiSFN6
fDsrWFJTaH4KenVOPSNiOWBtbng5MXxWKTxzQWopMSNDNWI2JGU7UktmKkdaK2pMRDFPdGNtSi19
bT0wbEQyZnxRb0l+cT1+KDdsCnpvPnkwUVhDJCRNM3JyRkg8citEVUhFaXVJPGBEeVojaHUxUTRI
Jkk0ITtSKmdyNng5cFUren5sX291Vnh0Tmh8JQp6UGIxYWtLUEJ3SCM+P2ZYLTwhV0xmJHZNO2B4
NXZzbG1HO0Vhb2lta2k2a0s3fEphe04rJnxAcEQzJDclU2RCKHcKejcmPklnS3hJc1ZhQDUlSVk0
bF5DbjMlRE5pMzZqNXk3QVg0JExxIWNWYVNNTnI3fWpST2lVWCRXU29SQD9aQjlyCnojQXtRQnop
SnAmQTFDUylWdk5jbSQ/RGpGbDdrWjg+eW5hVWhzNE8zTHg0Q2JWdEB1Tno9Q1piaXMqYzhRWiFt
Ygp6UGVIT0BVK20waTk1PSkkeCV9JiZFeVY+XlpiQ3s1K3h3bEhtY3VPb1IwN3JsZmBEeStLTGM2
LU0qeWIpe2w/flMKekJMTCQ3dmpPPTRKRD5gJThTcFVSY1l4O3J1S3x0JElzeGkmSWIwJGo4JkN1
JjJkb0MlM3dSanRkJSZ9Um1qR2BBCnpQNjJ1V2hJQn5EMkZ3TiYwYDNIQzJLKlpFNmtzPnRaLTll
PE5vYyZaZ20jMHRtQTYpXmU2PHk5YEM5OCt2Q1FHNwp6V3dwbXc7YmREQHc2VExsNVoyI3k/JHc7
Ti0wTmheSGJ6eCgjZFVRP3RqMVBqVUZmSn49cEdKaHY9IUFKNTNQblAKejlrdGIxNzB0bjMzaGpP
d3JRb3JzTDBETXpJJT47fVVVI3wyMzhhTnMzcCM0K2U5TjgyNzBmLTdJPy1yY2hVTChtCnpHTn43
RmJrc0lmVj9UZ2EmaztNZU1DPnpgUzV5I2pTVyNFJGhAZSFLZCZebjZCK0BhRzx3ezNHYiVsZT1A
cD5JQQp6PmIrUFRjPFpwUFVReVFvcVNFSV5pb0g+I0wyMzRZeDwqRXNGTyhaez04eV9QRT9zJGIm
Kml3NjgqOGRUd1BLSVEKemkyVlcxdklfZV9WcnE+SnN1UnhhdUpkPkAjTmRFaWQqQFkpODFZbSV0
RmVIXzxgTCExO1glZ0E+dFZ2dDNPMz00CnpeQ3ZEc2VuSX0kKFVSUkVvdzg3TEtETmRZc3tAO20q
cGNGTHNjSS1tSEF0ejBsfCs0Y2d+TTNtc1BZPEZFd2FxYgp6bSRtPnI0IyVBd21aeX4mYit0N2h1
Z1NNKHdGbCtabXNVIS1obndUQnlBI2MjelBqR1E2O1EqOGx0aHVrZ0JgVn4Kek5MZD1uWWlRZVR3
YjhLKGdAbEhMcU52NyM0NWVGTU50TXFubEMjMl5BUGcoMlFCVHglI1AldWAyTVBuTGU3QkYpCnpV
IS1rZ1NHNUslXiotLUpZLUhnaDZ9andMRHMoaD14bEpJSVktNyshWjI/REI/clAtTVM2a2tJI1ho
WVJ4akMjIQp6Tio8KmhrVj0kfDxaWVNIdnpvUSpAfkFkNUFJcF59QlI1eT5UUCNvMT12SCRqd1Jo
SW0tQmx8a2FFMXxFdj48dDwKenBNcmp9cTNfR0FSQWcyJiViM1Y3ZzQwaEVwQk8oTk52WUgtNkxo
ZDByMGxPJDhrRVl4X0BpSH1DTyRyWEslNyFKCnpQJnFfNVJIQFdVPyN2TmFrR0dgTmBmNiYlYSRG
aSQlbFd0KHtLM0YrMj8+Z1gjMDMxNVQhS29TJl81RDAqfEZjPwp6MWw9JjVXX1V0RXpsMD5SNygm
VmJRcEJHPVBOJm1wO3R+Pks2QWJZSzZBfWdgWCMzb15ZQHJRfCVtMzFsM2kwbzkKem0jZGxjdW9k
ITZlO2M/ZnwxUU59dWp1PEBScSFwOD1uI0lPPT0pUER6VEtiZi0kPHFXenhzIV5IeGN0R0FSUkNz
CnprTzd6Z208WSVPT2FlPj50ZG84ZHFSSzBFSWhVSEFJaUV8I2V8bHlDbXh9LU5PZEZTcXxNYml9
RSoxYXZJTCNtdgp6bHlXWExoZjdeU0NNWTx1bjhUJjZDS0hzIUVMZXE3MV5USTxyaGk8I2NFQ1dM
ZSRlMHtoTUBfR055Q1BaTkZGKXIKejhzcTNPKlFUVWljWVdIfWFwfmhUQ1FRdG5HJnlVXjRMNDRt
SGhvNisldnJOPEdMPGlAc0J9fjxjVUhVWnRYV1o4CnpTSElIakAla0Y+VERBSl8rbUA4d3pWd2Mt
Y2ZWJiU8SnhzaT53bjxpdTxfbT5aVkVLPm59YXw0QHNeKzVjbUQkcQp6e2A2LUx7cm5lT0FBYVBR
emp9MXJ1ZVUkO187M0U+aVFvUzJfZlApZXxOUVoofE5QVVJwWj8xOyYrZ2N7PiQmSXUKemBvZkY1
X3Z+JWlfdE81PjEyNGJ3PlQ5cFJAd2JDLTl5PEtpLWB7QGMkaCteZzlld31VQGU/MU17UDNmWEts
ejh5CnplayM9UT4xVXNKcDhuI0AqKU99Z2QoTkd8KDJHYWR4JkxiWmJMTj1tVDV7KiomQSZOK0xC
WWFCKjF7ck5GKXMxawp6dmlNZHB8NmxMXi15OzlabXZpezwrbnVQYnQ5MyoqeDlfYVFhUypxX3l0
SDdeTFE4UUAoUEdqc0VHZSlRJjQoTl4Kel5VfnReMXMzfDY3Y0UkalEhSHdXN2g1ZnlxanFWRGpr
N0UpQT5GKD0oOU9maSl6YUp8RjFIOW9zJD1PfjNwZHdOCnohbSZgSTFEOFhMaXNYdkdETUEpWVIw
XlctcWwxKEVGNkFiMHZ1TGhUVVMpc2dxcFRlNlc1N1FFMC16bW0zSj9OKAp6M2l0d1cySmpgSTMo
eVVxVTdtQ0pVSTJVcmhARnpkPT5RYEVNIUBDMlloZ0RJRmN+bHRVOyEpdWxtTTBoP2ZfSCoKem9Q
WmlZSi1gY0MxIXd7VTA2enZpMj4zYlJtd0Blbi12T1FtSlAmdllAQ00pejtCQ05yZk1iQUBmS0xG
WTBHfFFBCnowQ1dNKTFMVTdWKjVMY3RXVUxuZV55fGQ7QkhgZ31eUVZ6ZGxxM0J6eFVgZjglJj10
MjszamYyRmlfMSVFdG87Vwp6KXsyUiNsQG49SCR7QkE9b3I3YTlkPV8mIzEpUX5qRTJ5aWpFTUx0
UGB5M3duKzh2ZChxT1JFS2IyRj00Y1F2YCMKeiVEcH19KF9vN2ZXX1RvRDxid2spMlE8UnJZYCQ5
Vj1KSHd9Jk9XJFkkMSpxNTZxTEl3b0xta2wmS2dqNnRHU3pmCno9bWE8V1lGMllPelVBMVA8IWxa
UlV+RTBIMiNXYENVQ3wmfiV5bT9WOGlZekFBXjxsOUI/bTt8UCVzbioyajhIZwp6OGFRfURRI1BZ
OHJsNmRyMTctbm8wMmFXX2ZRNWh9S3E9cmh6I1JZd2ZFOG0jTiZ9YVkwY2IkRUhsJlFARzgkNjIK
emg3M1NUMkszPFckdylDYWFMe0NNJn0xTVViand0bm5CUmdrRnBobS1ob0FKZUo5TGpLTztHN35B
alpWTDlDdXpMCno9fVpyNkM3cmNKQytTa280aTxHeUtZYmBjKUVTP0RWVkl+Pnp4ZVdxQTVBZytA
LU94MlB5RkdmTjIqUEt8SU9kUgp6XlJIUjhfcHNeMj1KdXdTPWsyPXhpSlR1REpOTCtpKEF3Vj5u
cD1NfEBIaFlHKFAxQk0mclFfJio1QilFY3NafSYKejxGWipWbTFYbjR5emtibktRbEhmaXwqSyQ+
Zl4qO1ErVkEmZT0+MGRrNGI+S3RNeWhIWEJlP2Yzb2U3Jjw7TUN0CnoqaG90ZjUySHdsbHQqKiRS
RnYwI0o1MHAoNnY4S1hVVj92REpkO1dDQkc8R3wld1ZWVk1nNlBgaHR+bjxfeFU+Wgp6ZmtMa24/
VCtCfF4rbmxWWFBBWjQqKDJnfl9ERSpReTtFYCpCT3xwKioyP144OFNAd0JhX09YR0VYLU5ScklW
N3UKeiZGMjwheGo7Pmk9clVrfioyP1Q7b2ZIPCo5P154UkgwfTxzaXxFOE9RNSpheGMpdk5tP1F5
b3dwQ1BUeiphRnlDCno0Xjk9TXY/OFdNT1B8fTNaN2k1JHdpKDVSQXN4dzkqSChNMCFNPWdSVnZm
dGZeM3UmVjJnRVpAdFZZSSppI35rTwp6STI9YXdqP0Jwemo2YEokJmZ1WSY1bTY/aldAYzNhRGU1
O01qPkE5NC1SV0BHSSU9e2VQcno5IWhmYDgzbWF7cUgKelNxP2BCczVzaXNxVyFtPVd3bXRiVFNN
I0o8P2l3b1NkZH1xQ287eSEhN2gyciNLfnx1VW0pU29HTEoyNWlCWGBVCnpaVXdlMkQjaTU2dDVS
YkYrdk5CYm1+eHojZzt8ZSVrZzd8PHpCMW1jOzthSGM9NFJyXyNCVUs2clUqc2FedVE4Kgp6c21G
bU1eNXFTZyUkYlZHKHpvWWZeUCZzbW9LcmV+P21KZHpyXm1EdkFPJUZaakBsfmBjVD5hPXpyOU5I
dV5LPkUKejFMNlZUPnR7I0lnWVkhfk5XM2JmT2hCYGxvYmxWVE1lYikwS15vaGBmSlh0MzBpRk9u
MzN2K2RHfmhZRlVjZjdXCnp3KmM9MEpfMzlTSTFUc2BhMVFWbEttbG5QRkBYTW4wZjBlKHBAM240
ayRfYWQxaSUhKTQ4VXhGOElUODkxWHY2eAp6MmU8JHBLbSp7SzxaRExaazEzUyRZWEkyKkpQeVVK
MHtqZns3cjxNOUdrYChKU1NEYTBVPEg4WSRad2NHclJrTUUKei0oZzw8dUc4YmNYT2I0RjNncD59
VkdMUjJPdD9AeDdmPyl2YkpfM1ZQU2EmSmVNYjRMQEZBM1VebSVCPzd5c1BQCnpZblM7Nl9JfHd8
aXQrSnBhRl4zem9GJTQxZ0VMd1ZkSlM2bDwhN0wyd0RDeXszRShCalQkS3NsdCtDPjxJMWJAMgp6
YklZNnpIO0hTMkYtY3RSS0o3QzF5UFcwVG57WURDekk0I2NkfGxsKHRANHN8V1BaRF8ocEZUfV85
Z3lYZGE5YEsKenhAajFlNkdTbWJuPXUqQEtZe0diNHZpaEZEblJhRyh7fTsoP3FydSRINCRCPDh+
aFIodnNZREdpaSY3fGptb0xkCnp4emJae3I4Qm5oVUAzPnRobXdieERufF4jUz9ScWhOeylMdWFo
K2RVOEdSdjBCfm8wbDZwUzB6Oy1YN3laR345Ygp6NSFXa0lhSm0wMEYrX2R+aW9ZK2BJcDlvP0Z+
eCp1JSs4eThNUFd5WiFpRVckTGgjQCNgJi00emt5dVY3OW8peDMKenlURUZkUUleJCNgZXdWb2oj
Vl81Z0w0VTZwRyRxVWNZI1J+e0ZJfXx7MWMyd0wlYWZTc1lSfmtKZHh8fT5jTCRGCnpFZlF1IXh0
cSN7bXtxPXhSY0NKVHE5UXBuUzN7cUJTI3dNaTglb0EoR184dkhwazN5QUR+eiplOE5iZGk7e3FF
Pwp6T2YqJSpCbEp5Q1VCKk5kb2lnZWFYMyl3ckRJT04yOThpUUFYanpTJVJjYktBKDhUKXBLWGI+
NzlvQFlvPEcpYTEKem1vKEZ5cU4xRnxhdVRBN0NkY2d0eUh2VFFNdlYxYU1eb3YmQi0wTFdCe0xn
bSZONn5xYkFATz84VFQyYFJFZUw4CnpsfGlMZkVIZ3JIeEdYND9rOWszayY2WENHJTFhOUhZQ0o/
JFVLKmg7VmNlMTtxN2ZvdmNCUilWUzd6R1dWc21MTwp6XzUwR0MxIzNoQGspO0BoTkVIRUZfN3o9
KW07JGFHNnxPe3VSfV5WSV4+Xjkjd2B1RTxlMUE+c1cyeEk/OG5ffjkKei14UFJNbUt2X2BfXmxl
cUgtIz0mQ3NwIXkkPzliXzghNllYWW93UFg2Y3MxT3lEVCFuajJrentZK21LMCk2TVVICnotPFFE
dSF6Rk5zblJeVHs1ZlhJdV58VHhJe3FLS00zMFJ4M1IqYC1PZXhUeEp1Mipxc197elYoTCs9RFU1
b1B4UQp6XmdFKT1HQT9+UFYxRks8QHZGRTV6eSFjZEtyV3lOUHprc2p1bz5fZVU+RCMzOzBRbmZv
Q29NUHNKSWtCQ1NWU3IKejcqR1hoMEJpI00wYE41ODRadWYkRjk2RG9EbFEzLTA+fWlJMDlKcSN1
bk89YXohUUxkZlZUbEIwaU9ZND99YjBXCnpJS1R8UjA+Q1lSV3FeOVhURUgmPXpYUis1OH5fe3h7
Qk8lXjlyZyU0MFBJXmRWYjcqJTNaT3AjYCkqQ3hvTXs+ZQp6ITJWNnNVO3dzSm8zTUEmbG5CNWNQ
Wk8yWmY3U21mbD0oJH5fSj9CR1V2QUV+NmZMd1l6fjB+NzFxKlFGVzA1JnUKeigmSjg3aykqfUQ1
akF4bGhxJX40biN8eDJAajhmQ2d4MmtJTDNRKypFWDRDKyM+S2Q1dGFmYkokJj5DQ1RVSiVHCnpl
TVBYenp8YTVKLWojPH1RRWQ0fUAqclJnVlV3VT9sX2Z4Y1REc1FXZkZ6UD1xNTtGXjBGT1l6Vysw
SXlFVjlVJgp6aFhAKTMxKWRtbzVEWFoyaTBtVCE8XlVSeU8rZkA3Rm8+VzUwd1Q9bW59cVNiYXNI
cUEtclZvSXghdSo+KW02VmIKej1YWHczcFZOV1d2LVooUnU7RmgtQyZkciM1QiZebW0jenBWej1F
Yjx3fH0lVyskVlhVQUN3WkdUNlJzMC12RUN4CnpHVFQ0UktrdlY8Iys4LV9ud2JzamJBNUJOKTNW
Q1hfRGNpYWVjOy1KbCZ0SylCNWhlK2Z2SCtEcSswIWNLaDFBdAp6YFNwbnpzWDZIWjI+Z3RVZT1J
RzxzbDRwUCp1K09Ze3IkcGZZM3V3RmZGdiQwQzl+e2FXIVg5OUgtbnpObCU0dHIKemRjVVdvaTth
SGsla1N9RENFZHp2Mn1BPExyMWVqTTBIMWBFcCMkUCQlOHZObWRLbiYrYFp3X0xEO3BvRXcrcE49
CnptdFBWNj09YG99IX43dCF2YThHWFZuX1A3P3dGcEBIemhxVzVHRHJBJmQlfE4qNntuJS1jT24t
K3hEfC17UE9zJAp6dTZ7MEowOShIeEF2IVQ3diRXLWJlazchJjN7VSQ1JEB5S3pQdkU+bktNQW5J
c08rQGxqQmJOYykxbjgkR2JgaE4KeiR9IyRiQmFicWM7OF5Eck5QJk1lbn0maXdNM3BaYmYkaSt7
RWBqTWY/N1JlJG1AemFmQlJ3clRkc3VxZXl0fW1BCnpLUndCUlU7YG4wcjZyfEBPREFUZkNJMjh7
UCo8cnFLZilxOEoqeWx0MUdkV2BnRG5ecUtuPFArIWF0JS0mdz5sZgp6X3FxJW43P31Ifks1OUtR
cXBTczgyTXg+NE5sQVpIVzcmUkx0en48R3ElNk9ePHNjPyFKVk1xbF4+YlV4ZlFXXkYKeiFPe2pw
YSMoN3syIUVJcEwyNlM1cTs8IyROV3pHJChxfko3MHJEJlRtLV5VdzYkOShCezxeJlhqZjh5IVVr
VHFICnpWRyEjSmlffiRqe2NySH5TOG1IK2NhU3pSNGMwa2ZoKWMmMTc8aUNSZyNXenNgN2VkI3xF
MTBqZEtSKXkxRF5fawp6KDdeQ0FuX1hVQjBna34jPiskSEglRjgyRzteNnFlaDJYYzlSdWNHSSQl
cnchOFcxVzFQYk1LeytFX2dPK316USYKejlAWHFzdVMmSStPfkV6enxJaHlsMVlwbyZWMVNxRURw
c2lWZndrVGBZN01Za0lvTnNLbmN7cnhlQ2l4QHpIeDNrCnpCfkcqKD1NSGhseFpCLVU5YGZTNkJ5
V3s+JnBZSDkjd0BteTljOENrMT5RYDJEfjhDfkAoWEZHJUlYUUZSaC1JSgp6Wj5vSD9MMlhrOSlQ
Mj1oS2RheD4tU0tzN2s+fC08PFghUitzWVdCe1AmJEZXTStAaXxeZWJBP1ktaT9+TjZqI24KeiQr
ej52e0NtRGc+PUZrPnNCOSVZeGwkZ05tdCtJZ05CdnpycHtkVCZwe09RJDhnKVB+cGNGSSFPLTdz
MTkmYEBmCnpMSiFjPkkxK1EqOSM2b1YmMzYwfksxWGE0KD9vJGREbFV0TXFPUjtOMmduYShGTU4h
KjZsLUo/UmUqUW17ckRJQAp6aGt3TmJOaFRSZGE+LV9MZlY3fDs9P2lvcTlaamR2PCNaJGNvYklF
aT1wfW0zOUx+bHVxYW55WVY3T1ViUitWJXMKei1DaWY/ZXRMKWdSJHRPZClfdj03eVBsbjdrR0Vy
LUcwcDtLcEw1KDw+WVI0UXg9VVQ7aiZ2OGU9aU0mdVYwVlhtCnp6Jit4Z2J9TV5OY3kreDdVUTNV
Nyh1Pyg7X3F1dCNKYjE4VV55YV92JDdPYGZsSD10MmE7TDFVcztnJklrLURrRQp6YnpBK0tvfjlT
K2daaE8yTmdHeX0pIWNnNEklOGZpWjwpY1k5eTNgcT4lO285UzZEN3YmT1R4cipnPHhRVTEhQ3QK
ekdPeGotY3JKZ1J1aSlHR0s3TkhxaTlkQHhAcmhfRlpOVTExPFNKVUZzYlQ3QWx0TU88eyR4OHpy
YT5xSylrMkw+CnpPVms7P2h3ey08UkRoWlRkSXhZM3tzR1dDUE9nKCtUQWtMVkNiZWlSZVVaK2Yz
K017XjhRbnZWKENfRktkWTMrPQp6Um1gVyZYSDA0O2JDVVV7eHh5P2s4Xzkpb3BOdiR1Ulh6US11
NUU9ZmhqbktZKmJIYEA4OStjbWZPQWB9YExsZDUKenBUJHF8Yk5tNlhCeDtDbzVoK1l6aUUtaiU1
aUFgVUV1V1YhJHhPTFAtalQhOT51TWR5LSpAVXFSaWN7Zil8elFZCnpwVjhPIUomaTFCI2FleD4h
UFllRTljIU1JWnx3bU1zQUFXJit0fHdQWWt5Pj9KS3M4Mm8hM0FjMz5TQ3wlfHErWgp6Y0M7VEE7
JGA/I3s1YCZkZ0doQ2ZOUDNaMUw3d041I2lXMnRCZU98OWBILXZ3dGQ1ZihOZnI3T1pBUk15NCY3
KlAKemtmU3k1UHVoPnM2WkFVMExvMXQoOEUrPD0tPGMyMW5rPFM5V3NfSlFkeW5PX2I/Z1pIbnRq
aSV6JGg4fk5uVzN+Cno7Nl4qY1NQI1RlPFh+NjFle3U4Tk9LdlI0UGsob344fCtwMHA3TlQzY0dk
XiFGK0lvWTxaYmZxZFkoREx0amdEJAp6bzZJOGZsdiEtdkhTZT01SzliTWxgVFI0IW5fdVVAYTFQ
aXRsRmo1RWN+SklMTHR3UD8pZV5OeVpDN0Vzd2w9bFcKejJkdUJIdihgaUZYWHt0JVBqO3dYISl7
PGwqfkQmVj1oJm18TiVsOzhpTWBUWlhLJTF+KzI3Y2c/Rlk4dyM1cH1jCnotaUBSeyU5QndDd0V9
NXpRNGNmJU8rJnctJDhrcUkxPCUyfGFWT0grPn1ybE9YUFNOMzh6NyZQXyo5VV5iRyhzPQp6N0NY
Z1drKVMqMjY/JlV+I2hQZzRUODc9bFBQOXwoamRyRyYxQTFaZmZxKklhPjdzaDVVTWRBLWJyQUk2
Umg2U2cKenNqK0g7bnhmdU5HdF5BPXU5fk1sUD5hK3V3TmtCQ3VgKSpyd2FobDBLfjUjN0N5Wj8t
PklqXjQyN1FraiFPSkFGCnpAIVBsK1FLVVdqaTlBNjRhVlU4fT5lOGtaKH1Tb08peTVyZ0JKUFBf
JE1mLSpjczRtbEIjbyF0WCtCKj09Z0BVQAp6M3goSDduTmNqM3owRWZBVUhsQEM3MlFPWm0+XzB9
TWRFcVVUY245eHYwVXNJVXgtMih1TSQtIVduPng8MTgqMiMKemw2eGVNY0E/WDBSbDFpaFd8NSR1
aD9gdDtvNDRhSkpkUCp1QiVhSz5eUGFwOVB2cng3ST92P1VGcnM3bGNzPzFoCnpvNmh0Mlkjelo2
PSZPM0hgKz5YSy1SdClDIyZ+KCZOXmhIWSFuXkFFditgP2p1WTVMXkVuJW17UDA+SlZWM3FkMwp6
KmdJN1pkI3pvfiQjZzJYaSRIXnAkdXFLb1lOYypEbUU4Sm4zKWdXd3h+RW1LM2YwWkQzdjlrcHxF
akI1RE9RZlAKeitkNjRJVjs0QnZvbTAqd0MpdTZpJkhgTDNxQkA4SkdtbDB5KEYkfURUfDx4SStT
dFFNeEY0UjJ1aUAmWEhtT1ZNCnprdyZCYFgrY15PT2M+enEwUD9YVTl5Rl5IPXxYeWRleDtCIUdL
ZFRUSjxCMVokUTwlTVN3TlBNNjx8Uj1DVndOSgp6a31jI2p2V3g1Xm0mZ14reHRydGB4bDRXe3lf
a19fNyF2d0EzR3tGPXlDb3toPlhPSV5vUGpeWFJpV1BBezd0QCoKelUqYXt1YzVSam0pR2slMTd4
PSolM2tgX2xoeGlPIWY7VyY7cSQrSnF2dVFKUDMoS1hlWF5gMiQ5QXxEWXViVW0lCnpYbSp9ZTFp
YVZxJUElaCpDYSNIYmEqRiY4Pzk+KGNxcjUzXiQtREE1ITA9RDEzUnVQSnM8eGBEPlp3TW1zY05C
Rwp6RTM2cDIkOz9zaFJqaTZ2cC0hczJzKnRZZHl5QyNrM2t9MHhFTy1HO01BT2s2djteJXlNZCZJ
ckBSSytTV1V4Q1AKemlmIX5+bCNCYjNpRFc3OyZ9PWV+RUYpe2xIZ2IkcVcyPC19emFYeE4jPEdS
SHRxZ3JuMT9sVmhtYWIjZndefS07CnopNWVqR3Y3X2BKT1lsbTMyd2dfO3hJYjlIUCFkalJrTyhx
fnpyaFJHMG9JYXQxaCUtJk9aZDxISzJIPX4jN0hxdQp6RUQrbkE2SFlJOG1eOz5lJE5ka2R1R18p
dz1UMzZ4eVVXfjkrKkB1Plo/cEglKlVfVyFfQllffXozeDQ/amB5LVIKeiUzQkVqITxYS0N6SiN5
bFRYPSp4JU5tMT5FQitSNUVMdz9mYSpkYil3cVQxbUVRe3FmSDl7QXZ3UipTeU1KSFJtCnp0UmRE
fFZDaXFIK1pNS2V1JTJ7Z2Zha0sjK0d5Pnc4clpTK0tzeSlNWHB7WVMoQ3gtZmJMV0VGJi0+aWo7
fmEzbAp6YUVeaVhKPj9BV2hJKCYlIzk4algwJHhJODlFUDk1JWB3SFhjc2libV5LbVNCaGgmaXtC
JFJSKkxsYzN1ZChpPU8KekorU3M2ZFhpUSFwRF5wMU9+R21uRl44TWUlbjlhUyY0cCR8SGklYGlS
amlQMFd1TFJsPl4/Z0w5I0l3VV41PU1HCnpWQS1xdVlqJU8lVlFvTnp5TXh7aTBkMVlsanF+N3Aw
WCZ0UjVORUJrIUZrfD54WWI8fnhQNj5FLUpSKkswUjU/Zwp6c3NyRUQkMVNoflBDQUNxPEwlKDNe
ZD92RkZwJGRnPE9nentqeUJ0e1IwZHVRK3MlU2BFeHRlOzBibEdsSVp8MSYKenE2JF91UmsoXiQ3
UmM4d2J4YSlyJHNEV0JzTUAtQC1tNyFIbyUoTmpsT0V3NV8wRCpVYlFfITYmKUZ7bXBSV1pyCnp6
aVMmZTQ1SStyNzttPzkrQiMjTWlPdj5oaGw1LU9LRmMyVzdxYFNjP1ZTVCgmPiFkQ3M7fXk9MkNK
YzlMNThhZwp6dj07Uk9GS1FDNEJBU1l8WU81Tmo+c2kkNWlCOH1ZXmI7PHx2JXE1aE96c2QyTkdI
PEhebE4mUy1sbzZPbnI2N1UKeipGMG9pSEdlV0l2ayoySj83fjs8Qnh9Y0dgNiNnUmBeMGZeU2A9
QXh0WXl8Sj55fnhUcyR0aSRWe0NzOzArMVJaCnowaVU0MFhkK3EpQilHNmUyTjVTOzVYc19ZKE1S
K2I+MCVoaj8+STNUe0p9aSZvfHJFZGl4MCZidjBpS3pKSFgtYAp6N0dIeyFmWiM9T1Jvb0RfI1JD
eH1zeylCTUxke1RiKUROYHJGSlFxUTB+XnA4N3ZRenstfDwpMj1MdGI8dT19ZT8KejI+M3FaPUBq
fTZ5K0NWJHZ9YG9Ebk43ZkpOZFFecyZVKnVFNCtoUjI0bCp6aWAxJm83Z3VuOElkXnM9Uj53dF40
CnpnUztIJU5CSWVVbVM1blBMRjxiN0ojTDZmIVUoSGlXSkNXUkwlfUUlSmd9IXdMdWdTSCMwcDhV
dFRFXzBsIVVzWAp6b35TUHhoPSF0VV5jb3RFYSlDTUNMMzRxNSYhWTNfQkR3K2dze3xNJTJuWFgz
a297VVg5N297QnhFWEdWTCttaVMKem1LfD0jKiRMcFk9NlVPVi1FQ09HbTxtN0hQeyhASWoqaylK
MGteNFFJdl9WJiVtd1RnaWx1O0ZmaFl3MEhqMXIpCno7QksmTmhyIVAtMHU7fVJeTUs9SlY4dDd2
U2RAdFMhak01U1NjYj9qU3hiaDROODM7fmsmIVk9QjU2dHFVVDJBVwp6LSE7NC1GVzN3NSFufDV1
eEVKQkswfE1sdGZKMURub2ZUdW5TcVdCPm0yNkc2cmBpa2NCMEpjTGJhdlklYzdvRiMKemNyJUN2
Z1ZjbnZTfWRHSnUhZ0omaXYtXmF2MnFLI2x6I3xWN2puUC07Vk1Fa1I4M1NRWGIxdi1gbFE7Wnd9
U3ReCnpUa3FHMF4tKjE8UHdLUCF5dVBSfWdVQChGN3daeXpBQUlafUU3JUdGUHJIXkNaYmV1UHR0
TThhNj1mbUkxZk95dgp6Ki1DYmgtREUjR09wY053YSp+X3tPfSQ3aWxOK1IlbCN1KHhwZ31Za1c8
Q3ZSNkI8ZFFDPDBHZVFrJTh8IykrY3wKekc+SW1JS2hjeCtwe2R8OHJxZktZSnRPSERrZ0NhYUQp
PElAYlQqdyE9aEtDQkRnNio7UEs5KG9KeHEmJHBVJT9yClUpV3xIR2tFMC12bG4/fnl7byZfNzBt
ZXRvMHt7UjMKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL0JVSUxELmduIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvQlVJTEQuZ24KaW5k
ZXggNDNkMWRmZTlmNzEyOThkMzk1ZWEyZDk3NjMxOGYyNTFjZmIyZTA3Ny4uNGVkMDdhZjk4MzBh
NTI5MzgxOWFmN2Y3ZDBjNGZiMjhjYWVmYTEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvQlVJTEQuZ24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvQlVJTEQuZ24KQEAg
LTYwLDYgKzYwLDMyIEBAIGdyb3VwKCJleGFtcGxlcyIpIHsKICAgfQogfQogCitydGNfc291cmNl
X3NldCgicmVhZF9hdXRoX2ZpbGUiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBzb3VyY2VzID0g
WworICAgICJ0dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlLmNjIiwKKyAgICAidHVybnNlcnZlci9y
ZWFkX2F1dGhfZmlsZS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZSIsCisgIF0KK30KKworaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CisgIHJ0Y190ZXN0KCJl
eGFtcGxlc191bml0dGVzdHMiKSB7CisgICAgdGVzdG9ubHkgPSB0cnVlCisgICAgc291cmNlcyA9
IFsKKyAgICAgICJ0dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlX3VuaXR0ZXN0LmNjIiwKKyAgICBd
CisgICAgZGVwcyA9IFsKKyAgICAgICI6cmVhZF9hdXRoX2ZpbGUiLAorICAgICAgIi4uL3Rlc3Q6
dGVzdF9tYWluIiwKKyAgICAgICIvL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKyAgICAgICIvL3Rlc3Rp
bmcvZ3Rlc3QiLAorICAgIF0KKyAgfQorfQorCiBpZiAoaXNfYW5kcm9pZCkgewogICBydGNfYW5k
cm9pZF9hcGsoIkFwcFJUQ01vYmlsZSIpIHsKICAgICB0ZXN0b25seSA9IHRydWUKQEAgLTE2Niwx
NSArMTkyLDEyIEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgICAiLi4vYnVpbGQvYW5kcm9pZC9h
ZGJfcmV2ZXJzZV9mb3J3YXJkZXIucHkiLAogICAgICAgIi4uL2V4YW1wbGVzL2FuZHJvaWR0ZXN0
cy92aWRlb19xdWFsaXR5X2xvb3BiYWNrX3Rlc3QucHkiLAogICAgICAgIi4uL3Jlc291cmNlcy9y
ZWZlcmVuY2VfdmlkZW9fNjQweDM2MF8zMGZwcy55NG0iLAotICAgICAgIi4uL3J0Y190b29scy9i
YXJjb2RlX3Rvb2xzL2JhcmNvZGVfZGVjb2Rlci5weSIsCi0gICAgICAiLi4vcnRjX3Rvb2xzL2Jh
cmNvZGVfdG9vbHMvaGVscGVyX2Z1bmN0aW9ucy5weSIsCiAgICAgICAiLi4vcnRjX3Rvb2xzL2Nv
bXBhcmVfdmlkZW9zLnB5IiwKICAgICAgICIuLi9ydGNfdG9vbHMvdGVzdGluZy9wcmVidWlsdF9h
cHBydGMuemlwIiwKICAgICAgICIuLi9ydGNfdG9vbHMvdGVzdGluZy9nb2xhbmcvbGludXgvZ28u
dGFyLmd6IiwKICAgICAgICIuLi9ydGNfdG9vbHMvdGVzdGluZy9idWlsZF9hcHBydGMucHkiLAog
ICAgICAgIi4uL3J0Y190b29scy90ZXN0aW5nL3V0aWxzLnB5IiwKICAgICAgICIuLi90b29sc193
ZWJydGMvdmlkZW9fcXVhbGl0eV90b29sY2hhaW4vbGludXgvZmZtcGVnIiwKLSAgICAgICIuLi90
b29sc193ZWJydGMvdmlkZW9fcXVhbGl0eV90b29sY2hhaW4vbGludXgvenhpbmciLAogICAgICAg
IiR7cm9vdF9vdXRfZGlyfS9mcmFtZV9hbmFseXplcl9ob3N0IiwKICAgICBdCiAgIH0KQEAgLTQ4
MCw4ICs1MDMsMTAgQEAgaWYgKGlzX2lvcyB8fCAoaXNfbWFjICYmIHRhcmdldF9jcHUgIT0gIng4
NiIpKSB7CiAgICAgICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAg
ICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
IiwKICAgICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2Zh
Y3RvcnkiLAorICAgICAgICAiLi4vYXBpL3ZpZGVvOmJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeSIsCiAgICAgICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfaW1wbF9i
YXNlIiwKICAgICAgICAgIi4uL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCisgICAgICAgICIuLi9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICAgIi4uL3BjOmxpYmppbmdsZV9w
ZWVyY29ubmVjdGlvbiIsCiAgICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCkBAIC02MjUs
MTIgKzY1MCwxMyBAQCBpZiAoaXNfaW9zIHx8IChpc19tYWMgJiYgdGFyZ2V0X2NwdSAhPSAieDg2
IikpIHsKICAgICAgIHJ0Y19pb3NfeGN0ZXN0X3Rlc3QoImFwcHJ0Y21vYmlsZV90ZXN0cyIpIHsK
ICAgICAgICAgaW5mb19wbGlzdCA9ICJvYmpjL0FwcFJUQ01vYmlsZS9pb3MvSW5mby5wbGlzdCIK
ICAgICAgICAgc291cmNlcyA9IFsKLSAgICAgICAgICAib2JqYy9BcHBSVENNb2JpbGUvaW9zL21h
aW4ubSIsCisgICAgICAgICAgIm9iamMvQXBwUlRDTW9iaWxlL3Rlc3RzL21haW4ubW0iLAogICAg
ICAgICBdCiAgICAgICAgIGRlcHMgPSBbCiAgICAgICAgICAgIjpBcHBSVENNb2JpbGVfbGliIiwK
ICAgICAgICAgICAiOmFwcHJ0Y21vYmlsZV90ZXN0X3NvdXJjZXMiLAogICAgICAgICAgICIuLi9z
ZGs6ZnJhbWV3b3JrX29iamMiLAorICAgICAgICAgICIvL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAg
ICAgICAgXQogICAgICAgICBsZGZsYWdzID0gWyAiLWFsbF9sb2FkIiBdCiAgICAgICB9CkBAIC02
NTUsMTEgKzY4MSwxNCBAQCBpZiAoaXNfbGludXggfHwgaXNfd2luKSB7CiAgICAgICBzdXBwcmVz
c2VkX2NvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRfY29uc3RydWN0
cyIgXQogICAgIH0KICAgICBkZXBzID0gWworICAgICAgIi4uL2FwaTpjcmVhdGVfcGVlcmNvbm5l
Y3Rpb25fZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9h
cGkiLAogICAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKICAgICAgICIuLi9y
dGNfYmFzZTpjaGVja3MiLAogICAgICAgIi4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKICAgICAg
ICIuLi9ydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90IiwKKyAgICAgICIuLi9zeXN0ZW1fd3Jh
cHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICAgIi4uL3Rlc3Q6ZmllbGRfdHJpYWwiLAogICAgIF0K
ICAgICBpZiAoaXNfd2luKSB7CiAgICAgICBzb3VyY2VzICs9IFsKQEAgLTY5Niw2ICs3MjUsNyBA
QCBpZiAoaXNfbGludXggfHwgaXNfd2luKSB7CiAgICAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczpi
dWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeSIsCiAgICAgICAiLi4vbWVkaWE6cnRjX2F1ZGlv
X3ZpZGVvIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2UiLAor
ICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAgIi4uL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICIuLi9tb2R1bGVz
L3ZpZGVvX2NhcHR1cmU6dmlkZW9fY2FwdHVyZV9tb2R1bGUiLAogICAgICAgIi4uL3BjOmxpYmpp
bmdsZV9wZWVyY29ubmVjdGlvbiIsCkBAIC03MTgsMTAgKzc0OCwxMSBAQCBpZiAoaXNfbGludXgg
fHwgaXNfd2luKSB7CiAgICAgICAicGVlcmNvbm5lY3Rpb24vc2VydmVyL3V0aWxzLmgiLAogICAg
IF0KICAgICBkZXBzID0gWwotICAgICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAgICAgIi4uL3J0
Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi9ydGNfYmFzZTpzdHJpbmd1dGls
cyIsCiAgICAgICAiLi4vcnRjX3Rvb2xzOmNvbW1hbmRfbGluZV9wYXJzZXIiLAorICAgICAgIi4u
L3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCisgICAgICAiLi4vdGVzdDpmaWVsZF90cmlh
bCIsCiAgICAgXQogICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewog
ICAgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4g
KGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgpAQCAtNzUwLDYgKzc4MSw3IEBAIGlmIChpc19saW51eCB8
fCBpc193aW4pIHsKICAgICAgICJ0dXJuc2VydmVyL3R1cm5zZXJ2ZXJfbWFpbi5jYyIsCiAgICAg
XQogICAgIGRlcHMgPSBbCisgICAgICAiOnJlYWRfYXV0aF9maWxlIiwKICAgICAgICIuLi9wMnA6
cnRjX3AycCIsCiAgICAgICAiLi4vcGM6cnRjX3BjIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZSIsCkBAIC04MDcsNiArODM5LDcgQEAgaWYgKGlzX3dpbiB8fCBpc19hbmRyb2lkKSB7CiAg
ICAgICBjb25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL3dpbjp3aW5kb3dlZCIgXQogICAgIH0K
ICAgICBkZXBzID0gWworICAgICAgIi4uL2FwaTpjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9y
eSIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAgICAg
Ii4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkiLAogICAg
ICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLApA
QCAtODE2LDYgKzg0OSw3IEBAIGlmIChpc193aW4gfHwgaXNfYW5kcm9pZCkgewogICAgICAgIi4u
L21lZGlhOnJ0Y19tZWRpYSIsCiAgICAgICAiLi4vbWVkaWE6cnRjX21lZGlhX2Jhc2UiLAogICAg
ICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZSIsCisgICAgICAiLi4vbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgIi4uL21vZHVsZXMvdmlkZW9fY2FwdHVy
ZTp2aWRlb19jYXB0dXJlX21vZHVsZSIsCiAgICAgICAiLi4vcGM6bGliamluZ2xlX3BlZXJjb25u
ZWN0aW9uIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL0RFUFMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9ERVBTCmluZGV4IDZhOWE5ZjA5Y2ZmZWYzN2ZmYzMyMTU2YTNiYzVi
ZGM5YjYzYWEyYTguLjViMzc4NDU1OTAwYjUzNzE0MmU5YTgxZWE3NjlhNmExZjI3ZTdiYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1w
bGVzL0RFUFMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
ZXhhbXBsZXMvREVQUwpAQCAtOCw1ICs4LDYgQEAgaW5jbHVkZV9ydWxlcyA9IFsKICAgIitwMnAi
LAogICAiK3BjIiwKICAgIitzZGsvb2JqYyIsCisgICIrc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUi
LAogICAiK3RoaXJkX3BhcnR5L2xpYnl1diIsCiBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hYXJwcm9qZWN0L09XTkVSUyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FhcnBy
b2plY3QvT1dORVJTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjNGU1NDE3NGU2MGY2NTkwZGNjYTk4YTk4MDY3Nzdj
YzFmOWMxMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hYXJwcm9qZWN0L09XTkVSUwpAQCAtMCwwICsxIEBACitz
YWthbEB3ZWJydGMub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL0FuZHJvaWRNYW5pZmVzdC54bWwgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lk
YXBwL0FuZHJvaWRNYW5pZmVzdC54bWwKaW5kZXggZDZlMGZmMDQxNzQ0NGRiOWQxOWMyMGYyN2M2
MGNkOGY0NmY5ZmUxMC4uNTc2NDQ5YmIxNGU5ZWRlZmU0MDVkY2I0N2FlNWExMjNjNDE5NjYxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvYW5kcm9pZGFwcC9BbmRyb2lkTWFuaWZlc3QueG1sCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvQW5kcm9pZE1h
bmlmZXN0LnhtbApAQCAtMTgsNyArMTgsOCBAQAogICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9p
ZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uSU5URVJORVQiIC8+CiAgICAgPHVzZXMtcGVybWlz
c2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5XUklURV9FWFRFUk5BTF9TVE9S
QUdFIi8+CiAgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlz
c2lvbi5BQ0NFU1NfTkVUV09SS19TVEFURSIgLz4KLSAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJv
aWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLkNBUFRVUkVfVklERU9fT1VUUFVUIiAvPgorICAg
IDx1c2VzLXBlcm1pc3Npb24gdG9vbHM6aWdub3JlPSJQcm90ZWN0ZWRQZXJtaXNzaW9ucyIKKyAg
ICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLkNBUFRV
UkVfVklERU9fT1VUUFVUIiAvPgogCiAgICAgPCEtLSBUaGlzIGlzIGEgdGVzdCBhcHBsaWNhdGlv
biB0aGF0IHNob3VsZCBhbHdheXMgYmUgZGVidWdnYWJsZS4gLS0+CiAgICAgPGFwcGxpY2F0aW9u
IGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvYXBwX25hbWUiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3Jlcy9s
YXlvdXQvYWN0aXZpdHlfY29ubmVjdC54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3Jlcy9sYXlvdXQvYWN0aXZpdHlfY29u
bmVjdC54bWwKaW5kZXggODM3MDdmNzJlZDA3ZjdjYmQ3MTQ0NWVhNGNlNGMzNzg0MjZiZDk2My4u
M2M1OTE4OTY0NDRhODI1ZDljMGRkODhhMjc1YTAzZTQ3YTc3ODE1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFw
cC9yZXMvbGF5b3V0L2FjdGl2aXR5X2Nvbm5lY3QueG1sCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvcmVzL2xheW91dC9h
Y3Rpdml0eV9jb25uZWN0LnhtbApAQCAtMSw2ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+CiA8TGluZWFyTGF5b3V0CiAgICAgeG1sbnM6YW5kcm9pZD0iaHR0
cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnRvb2xz
PSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS90b29scyIKICAgICBhbmRyb2lkOmxheW91dF9t
YXJnaW49IjE2ZHAiCiAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKICAg
ICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKQEAgLTIxLDcgKzIyLDkgQEAK
ICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXIiCiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0
X21hcmdpbkJvdHRvbT0iOGRwIj4KIAorICAgICAgICA8IS0tIFRPRE8oY3JidWcuY29tLzkwMDkx
Mik6IEZpeCBhbmQgcmVtb3ZlIGxpbnQgaWdub3JlIC0tPgogICAgICAgICA8RWRpdFRleHQKKyAg
ICAgICAgICAgIHRvb2xzOmlnbm9yZT0iTGFiZWxGb3IiCiAgICAgICAgICAgICBhbmRyb2lkOmlk
PSJAK2lkL3Jvb21fZWRpdHRleHQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0i
MGRwIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFt
cGxlcy9hbmRyb2lkYXBwL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvQ2FsbEFjdGl2aXR5LmphdmEg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRy
b2lkYXBwL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvQ2FsbEFjdGl2aXR5LmphdmEKaW5kZXggY2Nj
MmMzYmQ5M2Q4MDcwZTQzNjM2NzFlMjczNDc4NTA3NGJiOWVhYy4uNDM5NjE1MDZhYjkzYjMyZDVl
YjM3YzcyYzczNTZhYTZmYWNiYjI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFwcC9zcmMvb3JnL2FwcHNwb3Qv
YXBwcnRjL0NhbGxBY3Rpdml0eS5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvc3JjL29yZy9hcHBzcG90L2FwcHJ0
Yy9DYWxsQWN0aXZpdHkuamF2YQpAQCAtMTcxLDcgKzE3MSw3IEBAIHB1YmxpYyBjbGFzcyBDYWxs
QWN0aXZpdHkgZXh0ZW5kcyBBY3Rpdml0eSBpbXBsZW1lbnRzIEFwcFJUQ0NsaWVudC5TaWduYWxp
bmdFdmVuCiAgIHByaXZhdGUgUm9vbUNvbm5lY3Rpb25QYXJhbWV0ZXJzIHJvb21Db25uZWN0aW9u
UGFyYW1ldGVyczsKICAgQE51bGxhYmxlCiAgIHByaXZhdGUgUGVlckNvbm5lY3Rpb25QYXJhbWV0
ZXJzIHBlZXJDb25uZWN0aW9uUGFyYW1ldGVyczsKLSAgcHJpdmF0ZSBib29sZWFuIGljZUNvbm5l
Y3RlZDsKKyAgcHJpdmF0ZSBib29sZWFuIGNvbm5lY3RlZDsKICAgcHJpdmF0ZSBib29sZWFuIGlz
RXJyb3I7CiAgIHByaXZhdGUgYm9vbGVhbiBjYWxsQ29udHJvbEZyYWdtZW50VmlzaWJsZSA9IHRy
dWU7CiAgIHByaXZhdGUgbG9uZyBjYWxsU3RhcnRlZFRpbWVNczsKQEAgLTIwMyw3ICsyMDMsNyBA
QCBwdWJsaWMgY2xhc3MgQ2FsbEFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1wbGVtZW50cyBB
cHBSVENDbGllbnQuU2lnbmFsaW5nRXZlbgogICAgIGdldFdpbmRvdygpLmdldERlY29yVmlldygp
LnNldFN5c3RlbVVpVmlzaWJpbGl0eShnZXRTeXN0ZW1VaVZpc2liaWxpdHkoKSk7CiAgICAgc2V0
Q29udGVudFZpZXcoUi5sYXlvdXQuYWN0aXZpdHlfY2FsbCk7CiAKLSAgICBpY2VDb25uZWN0ZWQg
PSBmYWxzZTsKKyAgICBjb25uZWN0ZWQgPSBmYWxzZTsKICAgICBzaWduYWxpbmdQYXJhbWV0ZXJz
ID0gbnVsbDsKIAogICAgIC8vIENyZWF0ZSBVSSBjb250cm9scy4KQEAgLTU1Myw3ICs1NTMsNyBA
QCBwdWJsaWMgY2xhc3MgQ2FsbEFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1wbGVtZW50cyBB
cHBSVENDbGllbnQuU2lnbmFsaW5nRXZlbgogCiAgIC8vIEhlbHBlciBmdW5jdGlvbnMuCiAgIHBy
aXZhdGUgdm9pZCB0b2dnbGVDYWxsQ29udHJvbEZyYWdtZW50VmlzaWJpbGl0eSgpIHsKLSAgICBp
ZiAoIWljZUNvbm5lY3RlZCB8fCAhY2FsbEZyYWdtZW50LmlzQWRkZWQoKSkgeworICAgIGlmICgh
Y29ubmVjdGVkIHx8ICFjYWxsRnJhZ21lbnQuaXNBZGRlZCgpKSB7CiAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIC8vIFNob3cvaGlkZSBjYWxsIGNvbnRyb2wgZnJhZ21lbnQKQEAgLTY0OSw3ICs2
NDksNyBAQCBwdWJsaWMgY2xhc3MgQ2FsbEFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1wbGVt
ZW50cyBBcHBSVENDbGllbnQuU2lnbmFsaW5nRXZlbgogICAgICAgYXVkaW9NYW5hZ2VyLnN0b3Ao
KTsKICAgICAgIGF1ZGlvTWFuYWdlciA9IG51bGw7CiAgICAgfQotICAgIGlmIChpY2VDb25uZWN0
ZWQgJiYgIWlzRXJyb3IpIHsKKyAgICBpZiAoY29ubmVjdGVkICYmICFpc0Vycm9yKSB7CiAgICAg
ICBzZXRSZXN1bHQoUkVTVUxUX09LKTsKICAgICB9IGVsc2UgewogICAgICAgc2V0UmVzdWx0KFJF
U1VMVF9DQU5DRUxFRCk7CkBAIC05MTEsOCArOTExLDYgQEAgcHVibGljIGNsYXNzIENhbGxBY3Rp
dml0eSBleHRlbmRzIEFjdGl2aXR5IGltcGxlbWVudHMgQXBwUlRDQ2xpZW50LlNpZ25hbGluZ0V2
ZW4KICAgICAgIEBPdmVycmlkZQogICAgICAgcHVibGljIHZvaWQgcnVuKCkgewogICAgICAgICBs
b2dBbmRUb2FzdCgiSUNFIGNvbm5lY3RlZCwgZGVsYXk9IiArIGRlbHRhICsgIm1zIik7Ci0gICAg
ICAgIGljZUNvbm5lY3RlZCA9IHRydWU7Ci0gICAgICAgIGNhbGxDb25uZWN0ZWQoKTsKICAgICAg
IH0KICAgICB9KTsKICAgfQpAQCAtOTIzLDcgKzkyMSwzMCBAQCBwdWJsaWMgY2xhc3MgQ2FsbEFj
dGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1wbGVtZW50cyBBcHBSVENDbGllbnQuU2lnbmFsaW5n
RXZlbgogICAgICAgQE92ZXJyaWRlCiAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CiAgICAgICAg
IGxvZ0FuZFRvYXN0KCJJQ0UgZGlzY29ubmVjdGVkIik7Ci0gICAgICAgIGljZUNvbm5lY3RlZCA9
IGZhbHNlOworICAgICAgfQorICAgIH0pOworICB9CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyB2
b2lkIG9uQ29ubmVjdGVkKCkgeworICAgIGZpbmFsIGxvbmcgZGVsdGEgPSBTeXN0ZW0uY3VycmVu
dFRpbWVNaWxsaXMoKSAtIGNhbGxTdGFydGVkVGltZU1zOworICAgIHJ1bk9uVWlUaHJlYWQobmV3
IFJ1bm5hYmxlKCkgeworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7
CisgICAgICAgIGxvZ0FuZFRvYXN0KCJEVExTIGNvbm5lY3RlZCwgZGVsYXk9IiArIGRlbHRhICsg
Im1zIik7CisgICAgICAgIGNvbm5lY3RlZCA9IHRydWU7CisgICAgICAgIGNhbGxDb25uZWN0ZWQo
KTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJsaWMgdm9pZCBv
bkRpc2Nvbm5lY3RlZCgpIHsKKyAgICBydW5PblVpVGhyZWFkKG5ldyBSdW5uYWJsZSgpIHsKKyAg
ICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBsb2dBbmRU
b2FzdCgiRFRMUyBkaXNjb25uZWN0ZWQiKTsKKyAgICAgICAgY29ubmVjdGVkID0gZmFsc2U7CiAg
ICAgICAgIGRpc2Nvbm5lY3QoKTsKICAgICAgIH0KICAgICB9KTsKQEAgLTkzNyw3ICs5NTgsNyBA
QCBwdWJsaWMgY2xhc3MgQ2FsbEFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1wbGVtZW50cyBB
cHBSVENDbGllbnQuU2lnbmFsaW5nRXZlbgogICAgIHJ1bk9uVWlUaHJlYWQobmV3IFJ1bm5hYmxl
KCkgewogICAgICAgQE92ZXJyaWRlCiAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAg
IGlmICghaXNFcnJvciAmJiBpY2VDb25uZWN0ZWQpIHsKKyAgICAgICAgaWYgKCFpc0Vycm9yICYm
IGNvbm5lY3RlZCkgewogICAgICAgICAgIGh1ZEZyYWdtZW50LnVwZGF0ZUVuY29kZXJTdGF0aXN0
aWNzKHJlcG9ydHMpOwogICAgICAgICB9CiAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3NyYy9v
cmcvYXBwc3BvdC9hcHBydGMvUGVlckNvbm5lY3Rpb25DbGllbnQuamF2YSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvc3JjL29y
Zy9hcHBzcG90L2FwcHJ0Yy9QZWVyQ29ubmVjdGlvbkNsaWVudC5qYXZhCmluZGV4IDk0MTM1ZGVk
NGQ2NDg3MTNjZTU0YTUyZWYzOWVkOTJhZmY3MDkxMjIuLmY4NWE3ODhmM2QxNmM2NzA5NTQ5ZDRj
OGMzZWZlOThmOWM4ZmYyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvc3JjL29yZy9hcHBzcG90L2FwcHJ0
Yy9QZWVyQ29ubmVjdGlvbkNsaWVudC5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvc3JjL29yZy9hcHBzcG90L2Fw
cHJ0Yy9QZWVyQ29ubmVjdGlvbkNsaWVudC5qYXZhCkBAIC01Miw2ICs1Miw3IEBAIGltcG9ydCBv
cmcud2VicnRjLk1lZGlhU3RyZWFtVHJhY2s7CiBpbXBvcnQgb3JnLndlYnJ0Yy5NZWRpYVN0cmVh
bVRyYWNrLk1lZGlhVHlwZTsKIGltcG9ydCBvcmcud2VicnRjLlBlZXJDb25uZWN0aW9uOwogaW1w
b3J0IG9yZy53ZWJydGMuUGVlckNvbm5lY3Rpb24uSWNlQ29ubmVjdGlvblN0YXRlOworaW1wb3J0
IG9yZy53ZWJydGMuUGVlckNvbm5lY3Rpb24uUGVlckNvbm5lY3Rpb25TdGF0ZTsKIGltcG9ydCBv
cmcud2VicnRjLlBlZXJDb25uZWN0aW9uRmFjdG9yeTsKIGltcG9ydCBvcmcud2VicnRjLlJ0cFBh
cmFtZXRlcnM7CiBpbXBvcnQgb3JnLndlYnJ0Yy5SdHBSZWNlaXZlcjsKQEAgLTI5MywxMSArMjk0
LDIzIEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbkNsaWVudCB7CiAgICAgdm9pZCBvbklj
ZUNvbm5lY3RlZCgpOwogCiAgICAgLyoqCi0gICAgICogQ2FsbGJhY2sgZmlyZWQgb25jZSBjb25u
ZWN0aW9uIGlzIGNsb3NlZCAoSWNlQ29ubmVjdGlvblN0YXRlIGlzCisgICAgICogQ2FsbGJhY2sg
ZmlyZWQgb25jZSBjb25uZWN0aW9uIGlzIGRpc2Nvbm5lY3RlZCAoSWNlQ29ubmVjdGlvblN0YXRl
IGlzCiAgICAgICogRElTQ09OTkVDVEVEKS4KICAgICAgKi8KICAgICB2b2lkIG9uSWNlRGlzY29u
bmVjdGVkKCk7CiAKKyAgICAvKioKKyAgICAgKiBDYWxsYmFjayBmaXJlZCBvbmNlIERUTFMgY29u
bmVjdGlvbiBpcyBlc3RhYmxpc2hlZCAoUGVlckNvbm5lY3Rpb25TdGF0ZQorICAgICAqIGlzIENP
Tk5FQ1RFRCkuCisgICAgICovCisgICAgdm9pZCBvbkNvbm5lY3RlZCgpOworCisgICAgLyoqCisg
ICAgICogQ2FsbGJhY2sgZmlyZWQgb25jZSBEVExTIGNvbm5lY3Rpb24gaXMgZGlzY29ubmVjdGVk
IChQZWVyQ29ubmVjdGlvblN0YXRlCisgICAgICogaXMgRElTQ09OTkVDVEVEKS4KKyAgICAgKi8K
KyAgICB2b2lkIG9uRGlzY29ubmVjdGVkKCk7CisKICAgICAvKioKICAgICAgKiBDYWxsYmFjayBm
aXJlZCBvbmNlIHBlZXIgY29ubmVjdGlvbiBpcyBjbG9zZWQuCiAgICAgICovCkBAIC0xMjYzLDYg
KzEyNzYsMjAgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uQ2xpZW50IHsKICAgICAgIH0p
OwogICAgIH0KIAorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQ29ubmVjdGlvbkNo
YW5nZShmaW5hbCBQZWVyQ29ubmVjdGlvbi5QZWVyQ29ubmVjdGlvblN0YXRlIG5ld1N0YXRlKSB7
CisgICAgICBleGVjdXRvci5leGVjdXRlKCgpIC0+IHsKKyAgICAgICAgTG9nLmQoVEFHLCAiUGVl
ckNvbm5lY3Rpb25TdGF0ZTogIiArIG5ld1N0YXRlKTsKKyAgICAgICAgaWYgKG5ld1N0YXRlID09
IFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKSB7CisgICAgICAgICAgZXZlbnRzLm9uQ29u
bmVjdGVkKCk7CisgICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUgPT0gUGVlckNvbm5lY3Rpb25T
dGF0ZS5ESVNDT05ORUNURUQpIHsKKyAgICAgICAgICBldmVudHMub25EaXNjb25uZWN0ZWQoKTsK
KyAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZSA9PSBQZWVyQ29ubmVjdGlvblN0YXRlLkZBSUxF
RCkgeworICAgICAgICAgIHJlcG9ydEVycm9yKCJEVExTIGNvbm5lY3Rpb24gZmFpbGVkLiIpOwor
ICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMg
dm9pZCBvbkljZUdhdGhlcmluZ0NoYW5nZShQZWVyQ29ubmVjdGlvbi5JY2VHYXRoZXJpbmdTdGF0
ZSBuZXdTdGF0ZSkgewogICAgICAgTG9nLmQoVEFHLCAiSWNlR2F0aGVyaW5nU3RhdGU6ICIgKyBu
ZXdTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkanVuaXQvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGp1bml0L09XTkVSUwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYzRlNTQxNzRlNjBmNjU5MGRjY2E5OGE5ODA2Nzc3Y2MxZjljMTE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvYW5kcm9pZGp1bml0L09XTkVSUwpAQCAtMCwwICsxIEBACitzYWthbEB3ZWJydGMub3Jn
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9l
eGFtcGxlcy9hbmRyb2lkanVuaXQvc3JjL29yZy9hcHBzcG90L2FwcHJ0Yy9UQ1BDaGFubmVsQ2xp
ZW50VGVzdC5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
ZXhhbXBsZXMvYW5kcm9pZGp1bml0L3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvVENQQ2hhbm5lbENs
aWVudFRlc3QuamF2YQppbmRleCA4YzVmMzhjY2IzMWIxNmFmZTViYTNlZThiMjg0NDdmN2Y2Zjc5
NTNmLi5hODgwNmVjNWY3ZDY3YzE2YjA5ZmMzN2JkNjFjZDRkM2QzYTljY2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRy
b2lkanVuaXQvc3JjL29yZy9hcHBzcG90L2FwcHJ0Yy9UQ1BDaGFubmVsQ2xpZW50VGVzdC5qYXZh
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVz
L2FuZHJvaWRqdW5pdC9zcmMvb3JnL2FwcHNwb3QvYXBwcnRjL1RDUENoYW5uZWxDbGllbnRUZXN0
LmphdmEKQEAgLTM4LDEwICszOCwxMCBAQCBwdWJsaWMgY2xhc3MgVENQQ2hhbm5lbENsaWVudFRl
c3QgewogICAgKiBIb3cgbG9uZyB3ZSB3YWl0IGJlZm9yZSB0cnlpbmcgdG8gY29ubmVjdCB0byB0
aGUgc2VydmVyLiBOb3RlOiB3YXMKICAgICogcHJldmlvdXNseSBvbmx5IDEwLCB3aGljaCB3YXMg
dG9vIHNob3J0ICh0ZXN0cyB3ZXJlIGZsYWt5KS4KICAgICovCi0gIHByaXZhdGUgc3RhdGljIGZp
bmFsIGludCBTRVJWRVJfV0FJVCA9IDEwMDsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENP
Tk5FQ1RfVElNRU9VVCA9IDEwMDsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFTkRfVElN
RU9VVCA9IDEwMDsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERJU0NPTk5FQ1RfVElNRU9V
VCA9IDEwMDsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFUlZFUl9XQUlUID0gMzAwOwor
ICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09OTkVDVF9USU1FT1VUID0gMTAwMDsKKyAgcHJp
dmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFTkRfVElNRU9VVCA9IDEwMDA7CisgIHByaXZhdGUgc3Rh
dGljIGZpbmFsIGludCBESVNDT05ORUNUX1RJTUVPVVQgPSAxMDAwOwogICBwcml2YXRlIHN0YXRp
YyBmaW5hbCBpbnQgVEVSTUlOQVRJT05fVElNRU9VVCA9IDEwMDA7CiAgIHByaXZhdGUgc3RhdGlj
IGZpbmFsIFN0cmluZyBURVNUX01FU1NBR0VfU0VSVkVSID0gIkhlbGxvLCBTZXJ2ZXIhIjsKICAg
cHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRFU1RfTUVTU0FHRV9DTElFTlQgPSAiSGVsbG8s
IENsaWVudCEiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZG5hdGl2ZWFwaS9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRuYXRpdmVhcGkv
QlVJTEQuZ24KaW5kZXggNTU2OGViMTFkZGUzZWJmM2I5NTFiMDJhNjJhYTY4NTUxMzI4NjVlMS4u
NzkyODY0MGNjNmY1Y2FhZWFlYTljNmE3MTU2Y2QwZDY2MTNmOWM3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZG5h
dGl2ZWFwaS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkbmF0aXZlYXBpL0JVSUxELmduCkBAIC00OSwxMCArNDks
MTIgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICIvL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5l
Y3Rpb25fYXBpIiwKICAgICAgICIvL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNv
ZGVyX2ZhY3RvcnkiLAogICAgICAgIi8vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2Vu
Y29kZXJfZmFjdG9yeSIsCisgICAgICAiLy9hcGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAgICIvL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19pbXBs
X2Jhc2UiLAogICAgICAgIi8vbWVkaWE6cnRjX2F1ZGlvX3ZpZGVvIiwKICAgICAgICIvL21lZGlh
OnJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3MiLAogICAgICAgIi8vbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nIiwKKyAgICAgICIvL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAg
Ii8vbW9kdWxlcy91dGlsaXR5OnV0aWxpdHkiLAogICAgICAgIi8vcGM6bGliamluZ2xlX3BlZXJj
b25uZWN0aW9uIiwKICAgICAgICIvL3J0Y19iYXNlOnJ0Y19iYXNlIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRu
YXRpdmVhcGkvam5pL2FuZHJvaWRjYWxsY2xpZW50LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZG5hdGl2ZWFwaS9qbmkvYW5kcm9p
ZGNhbGxjbGllbnQuY2MKaW5kZXggMDA1ZjM2OWE2ZDEwNDYyMmRkZGIwYmRiZWY4MDcxYTgxMmYy
MTIzMy4uYTEzOTRjZDAxYzUyM2RjNjkwNDgzMGYzYWM5YWY5ODc2YzQ5ZDVhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5k
cm9pZG5hdGl2ZWFwaS9qbmkvYW5kcm9pZGNhbGxjbGllbnQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZG5hdGl2ZWFwaS9q
bmkvYW5kcm9pZGNhbGxjbGllbnQuY2MKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJhcGkv
YXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAi
YXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1
ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9i
dWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJleGFt
cGxlcy9hbmRyb2lkbmF0aXZlYXBpL2dlbmVyYXRlZF9qbmkvam5pL0NhbGxDbGllbnRfam5pLmgi
CiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuaCIKICNpbmNs
dWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5oIgpAQCAtOTksNyArMTAw
LDggQEAgdm9pZCBBbmRyb2lkQ2FsbENsaWVudDo6Q2FsbChKTklFbnYqIGVudiwKICAgcmVtb3Rl
X3NpbmtfID0gd2VicnRjOjpKYXZhVG9OYXRpdmVWaWRlb1NpbmsoZW52LCByZW1vdGVfc2luay5v
YmooKSk7CiAKICAgdmlkZW9fc291cmNlXyA9IHdlYnJ0Yzo6Q3JlYXRlSmF2YVZpZGVvU291cmNl
KGVudiwgc2lnbmFsaW5nX3RocmVhZF8uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlzX3NjcmVlbmNh
c3Q9ICovIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogYWxpZ25fdGltZXN0YW1wcz0gKi8gdHJ1ZSk7CiAKICAgQ3JlYXRlUGVlckNvbm5l
Y3Rpb24oKTsKICAgQ29ubmVjdCgpOwpAQCAtMTU5LDYgKzE2MSw3IEBAIHZvaWQgQW5kcm9pZENh
bGxDbGllbnQ6OkNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgpIHsKICAgICAgICAgICB3ZWJy
dGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5KCksCiAgICAgICAgICAgYWJzbDo6
bWFrZV91bmlxdWU8d2VicnRjOjpJbnRlcm5hbEVuY29kZXJGYWN0b3J5PigpLAogICAgICAgICAg
IGFic2w6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6SW50ZXJuYWxEZWNvZGVyRmFjdG9yeT4oKSwKKyAg
ICAgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5
KCksCiAgICAgICAgICAgbnVsbHB0ciAvKiBhdWRpb19taXhlciAqLywgd2VicnRjOjpBdWRpb1By
b2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpOwogICBSVENfTE9HKExTX0lORk8pIDw8ICJNZWRp
YSBlbmdpbmUgY3JlYXRlZDogIiA8PCBtZWRpYV9lbmdpbmUuZ2V0KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJv
aWR0ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL0FuZHJvaWRNYW5pZmVzdC54bWwK
aW5kZXggN2NkNTJiYzUzMWQ3NGI5ZTg2MWYwYjVjMzA2MmM5NWEzYTQ1NjRhZS4uZGFlMmU5ODBh
NmE2MGE3ZjM0ZmVhYjhmOTNmNzcxZjRmZGMxZTkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL0FuZHJv
aWRNYW5pZmVzdC54bWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL0FuZHJvaWRNYW5pZmVzdC54bWwKQEAgLTE0LDcg
KzE0LDcgQEAKICAgICAgIHBhY2thZ2U9Im9yZy5hcHBzcG90LmFwcHJ0Yy50ZXN0Ij4KIAogICAg
IDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uUlVOX0lO
U1RSVU1FTlRBVElPTiIgLz4KLSAgICA8dXNlcy1zZGsgYW5kcm9pZDptaW5TZGtWZXJzaW9uPSIx
MyIgYW5kcm9pZDp0YXJnZXRTZGtWZXJzaW9uPSIyMSIgLz4KKyAgICA8dXNlcy1zZGsgYW5kcm9p
ZDptaW5TZGtWZXJzaW9uPSIxNiIgYW5kcm9pZDp0YXJnZXRTZGtWZXJzaW9uPSIyMSIgLz4KIAog
ICAgIDxhcHBsaWNhdGlvbj4KICAgICAgICAgPHVzZXMtbGlicmFyeSBhbmRyb2lkOm5hbWU9ImFu
ZHJvaWQudGVzdC5ydW5uZXIiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkdGVzdHMvc3JjL29yZy9hcHBzcG90
L2FwcHJ0Yy90ZXN0L1BlZXJDb25uZWN0aW9uQ2xpZW50VGVzdC5qYXZhIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL3NyYy9v
cmcvYXBwc3BvdC9hcHBydGMvdGVzdC9QZWVyQ29ubmVjdGlvbkNsaWVudFRlc3QuamF2YQppbmRl
eCBlMjY3NDAxN2U0NTZlMDU5NzYxYmFmNTAyZmExNzkwNTI2OWEwMTBiLi5jMTY1ZjU5YjAzM2Q1
M2ZkZDA5MmFmNzMzYTE4MGNjN2RhNDY1ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkdGVzdHMvc3JjL29yZy9h
cHBzcG90L2FwcHJ0Yy90ZXN0L1BlZXJDb25uZWN0aW9uQ2xpZW50VGVzdC5qYXZhCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWR0
ZXN0cy9zcmMvb3JnL2FwcHNwb3QvYXBwcnRjL3Rlc3QvUGVlckNvbm5lY3Rpb25DbGllbnRUZXN0
LmphdmEKQEAgLTE4Myw2ICsxODMsMTYgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uQ2xp
ZW50VGVzdCBpbXBsZW1lbnRzIFBlZXJDb25uZWN0aW9uRXZlbnRzIHsKICAgICB9CiAgIH0KIAor
ICBAT3ZlcnJpZGUKKyAgcHVibGljIHZvaWQgb25Db25uZWN0ZWQoKSB7CisgICAgTG9nLmQoVEFH
LCAiRFRMUyBDb25uZWN0ZWQiKTsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJsaWMgdm9pZCBv
bkRpc2Nvbm5lY3RlZCgpIHsKKyAgICBMb2cuZChUQUcsICJEVExTIERpc2Nvbm5lY3RlZCIpOwor
ICB9CisKICAgQE92ZXJyaWRlCiAgIHB1YmxpYyB2b2lkIG9uUGVlckNvbm5lY3Rpb25DbG9zZWQo
KSB7CiAgICAgTG9nLmQoVEFHLCAiUGVlckNvbm5lY3Rpb24gY2xvc2VkIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRy
b2lkdGVzdHMvdmlkZW9fcXVhbGl0eV9sb29wYmFja190ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL3ZpZGVvX3F1
YWxpdHlfbG9vcGJhY2tfdGVzdC5weQppbmRleCAxOWRkMzdjM2QzNmJmYzg0ZWNjOTgyNGFhYTY2
MDdmNzNjMjFlZGQzLi5mYzE5OGE4MjZmNzk2MjQ0NGI2NDg1ODY4YjRiMjBhM2Q1ZDZlMjk3IDEw
MDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFt
cGxlcy9hbmRyb2lkdGVzdHMvdmlkZW9fcXVhbGl0eV9sb29wYmFja190ZXN0LnB5CisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWR0
ZXN0cy92aWRlb19xdWFsaXR5X2xvb3BiYWNrX3Rlc3QucHkKQEAgLTE5MCwyMCArMTkwLDEzIEBA
IGRlZiBSdW5UZXN0KGFuZHJvaWRfZGV2aWNlLCBhZGJfcGF0aCwgYnVpbGRfZGlyLCB0ZW1wX2Rp
ciwgbnVtX3JldHJpZXMsCiAgICMgUnVuIGNvbXBhcmlzb24gc2NyaXB0LgogICBjb21wYXJlX3Nj
cmlwdCA9IG9zLnBhdGguam9pbihTUkNfRElSLCAncnRjX3Rvb2xzJywgJ2NvbXBhcmVfdmlkZW9z
LnB5JykKICAgZnJhbWVfYW5hbHl6ZXIgPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCAnZnJhbWVf
YW5hbHl6ZXJfaG9zdCcpCi0gIHp4aW5nX3BhdGggPSBvcy5wYXRoLmpvaW4oVE9PTENIQUlOX0RJ
UiwgJ3p4aW5nJykKLSAgc3RhdHNfZmlsZV9yZWYgPSBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICdz
dGF0c19yZWYudHh0JykKLSAgc3RhdHNfZmlsZV90ZXN0ID0gb3MucGF0aC5qb2luKHRlbXBfZGly
LCAnc3RhdHNfdGVzdC50eHQnKQogCiAgIGFyZ3MgPSBbCiAgICAgICAnLS1yZWZfdmlkZW8nLCBy
ZWZlcmVuY2VfdmlkZW9feXV2LAogICAgICAgJy0tdGVzdF92aWRlbycsIHRlc3RfdmlkZW9feXV2
LAogICAgICAgJy0teXV2X2ZyYW1lX3dpZHRoJywgJzY0MCcsCiAgICAgICAnLS15dXZfZnJhbWVf
aGVpZ2h0JywgJzM2MCcsCi0gICAgICAnLS1zdGF0c19maWxlX3JlZicsIHN0YXRzX2ZpbGVfcmVm
LAotICAgICAgJy0tc3RhdHNfZmlsZV90ZXN0Jywgc3RhdHNfZmlsZV90ZXN0LAogICAgICAgJy0t
ZnJhbWVfYW5hbHl6ZXInLCBmcmFtZV9hbmFseXplciwKLSAgICAgICctLWZmbXBlZ19wYXRoJywg
ZmZtcGVnX3BhdGgsCi0gICAgICAnLS16eGluZ19wYXRoJywgenhpbmdfcGF0aCwKICAgXQogICBp
ZiBjaGFydGpzb25fcmVzdWx0X2ZpbGU6CiAgICAgYXJncy5leHRlbmQoWyctLWNoYXJ0anNvbl9y
ZXN1bHRfZmlsZScsIGNoYXJ0anNvbl9yZXN1bHRfZmlsZV0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01v
YmlsZS9BUkRBcHBDbGllbnQubSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL0FSREFwcENsaWVudC5tCmluZGV4IDlh
MGQzNjk1ZjkxNjE1NDY5Yzk5MGQxMTIyZDFhZWVjZGJmZjYwZTUuLjhiM2QxMDU3OTdlMmZmZjY4
NjFhYmE1ZGVhM2UxMGVlOTljYTExMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL0FSREFwcENs
aWVudC5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4
YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL0FSREFwcENsaWVudC5tCkBAIC00MDAsMTAgKzQwMCwx
NSBAQCAtICh2b2lkKXBlZXJDb25uZWN0aW9uOihSVENQZWVyQ29ubmVjdGlvbiAqKXBlZXJDb25u
ZWN0aW9uCiAgICAgZGlkQ2hhbmdlSWNlQ29ubmVjdGlvblN0YXRlOihSVENJY2VDb25uZWN0aW9u
U3RhdGUpbmV3U3RhdGUgewogICBSVENMb2coQCJJQ0Ugc3RhdGUgY2hhbmdlZDogJWxkIiwgKGxv
bmcpbmV3U3RhdGUpOwogICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeewotICAgIFtfZGVsZWdhdGUgYXBwQ2xpZW50OnNlbGYgZGlkQ2hhbmdlQ29ubmVjdGlvblN0
YXRlOm5ld1N0YXRlXTsKKyAgICBbc2VsZi5kZWxlZ2F0ZSBhcHBDbGllbnQ6c2VsZiBkaWRDaGFu
Z2VDb25uZWN0aW9uU3RhdGU6bmV3U3RhdGVdOwogICB9KTsKIH0KIAorLSAodm9pZClwZWVyQ29u
bmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24gKilwZWVyQ29ubmVjdGlvbgorICAgIGRpZENoYW5n
ZUNvbm5lY3Rpb25TdGF0ZTooUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSluZXdTdGF0ZSB7CisgIFJU
Q0xvZyhAIklDRStEVExTIHN0YXRlIGNoYW5nZWQ6ICVsZCIsIChsb25nKW5ld1N0YXRlKTsKK30K
KwogLSAodm9pZClwZWVyQ29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24gKilwZWVyQ29ubmVj
dGlvbgogICAgIGRpZENoYW5nZUljZUdhdGhlcmluZ1N0YXRlOihSVENJY2VHYXRoZXJpbmdTdGF0
ZSluZXdTdGF0ZSB7CiAgIFJUQ0xvZyhAIklDRSBnYXRoZXJpbmcgc3RhdGUgY2hhbmdlZDogJWxk
IiwgKGxvbmcpbmV3U3RhdGUpOwpAQCAtNDUwLDE2ICs0NTUsMTYgQEAgLSAodm9pZClwZWVyQ29u
bmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24gKilwZWVyQ29ubmVjdGlvbgogICAgICAgICAgIFtb
TlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46a0FSREFwcENsaWVudEVycm9yRG9tYWluCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTprQVJEQXBwQ2xpZW50RXJy
b3JDcmVhdGVTRFAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOnVz
ZXJJbmZvXTsKLSAgICAgIFtfZGVsZWdhdGUgYXBwQ2xpZW50OnNlbGYgZGlkRXJyb3I6c2RwRXJy
b3JdOworICAgICAgW3NlbGYuZGVsZWdhdGUgYXBwQ2xpZW50OnNlbGYgZGlkRXJyb3I6c2RwRXJy
b3JdOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgICBfX3dlYWsgQVJEQXBwQ2xpZW50ICp3ZWFr
U2VsZiA9IHNlbGY7Ci0gICAgW19wZWVyQ29ubmVjdGlvbiBzZXRMb2NhbERlc2NyaXB0aW9uOnNk
cAotICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKmVy
cm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgQVJEQXBwQ2xpZW50ICpzdHJvbmdTZWxm
ID0gd2Vha1NlbGY7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgW3N0cm9uZ1NlbGYgcGVlckNv
bm5lY3Rpb246c3Ryb25nU2VsZi5wZWVyQ29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRTZXRTZXNzaW9uRGVzY3JpcHRpb25XaXRoRXJyb3I6ZXJyb3JdOwotICAgICAg
ICAgICAgICAgICAgICAgICB9XTsKKyAgICBbc2VsZi5wZWVyQ29ubmVjdGlvbiBzZXRMb2NhbERl
c2NyaXB0aW9uOnNkcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUkRB
cHBDbGllbnQgKnN0cm9uZ1NlbGYgPSB3ZWFrU2VsZjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW3N0cm9uZ1NlbGYgcGVlckNvbm5lY3Rpb246c3Ryb25nU2VsZi5wZWVyQ29ubmVjdGlv
bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU2V0U2Vzc2lvbkRlc2NyaXB0
aW9uV2l0aEVycm9yOmVycm9yXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dOwogICAg
IEFSRFNlc3Npb25EZXNjcmlwdGlvbk1lc3NhZ2UgKm1lc3NhZ2UgPQogICAgICAgICBbW0FSRFNl
c3Npb25EZXNjcmlwdGlvbk1lc3NhZ2UgYWxsb2NdIGluaXRXaXRoRGVzY3JpcHRpb246c2RwXTsK
ICAgICBbc2VsZiBzZW5kU2lnbmFsaW5nTWVzc2FnZTptZXNzYWdlXTsKQEAgLTQ4MCwyMiArNDg1
LDIxIEBAIC0gKHZvaWQpcGVlckNvbm5lY3Rpb246KFJUQ1BlZXJDb25uZWN0aW9uICopcGVlckNv
bm5lY3Rpb24KICAgICAgICAgICBbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOmtBUkRB
cHBDbGllbnRFcnJvckRvbWFpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvZGU6a0FSREFwcENsaWVudEVycm9yU2V0U0RQCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1c2VySW5mbzp1c2VySW5mb107Ci0gICAgICBbX2RlbGVnYXRlIGFwcENsaWVudDpz
ZWxmIGRpZEVycm9yOnNkcEVycm9yXTsKKyAgICAgIFtzZWxmLmRlbGVnYXRlIGFwcENsaWVudDpz
ZWxmIGRpZEVycm9yOnNkcEVycm9yXTsKICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gSWYg
d2UncmUgYW5zd2VyaW5nIGFuZCB3ZSd2ZSBqdXN0IHNldCB0aGUgcmVtb3RlIG9mZmVyIHdlIG5l
ZWQgdG8gY3JlYXRlCiAgICAgLy8gYW4gYW5zd2VyIGFuZCBzZXQgdGhlIGxvY2FsIGRlc2NyaXB0
aW9uLgotICAgIGlmICghX2lzSW5pdGlhdG9yICYmICFfcGVlckNvbm5lY3Rpb24ubG9jYWxEZXNj
cmlwdGlvbikgeworICAgIGlmICghc2VsZi5pc0luaXRpYXRvciAmJiAhc2VsZi5wZWVyQ29ubmVj
dGlvbi5sb2NhbERlc2NyaXB0aW9uKSB7CiAgICAgICBSVENNZWRpYUNvbnN0cmFpbnRzICpjb25z
dHJhaW50cyA9IFtzZWxmIGRlZmF1bHRBbnN3ZXJDb25zdHJhaW50c107CiAgICAgICBfX3dlYWsg
QVJEQXBwQ2xpZW50ICp3ZWFrU2VsZiA9IHNlbGY7Ci0gICAgICBbX3BlZXJDb25uZWN0aW9uIGFu
c3dlckZvckNvbnN0cmFpbnRzOmNvbnN0cmFpbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyOl4oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uICpzZHAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNFcnJvciAqZXJyb3IpIHsK
LSAgICAgICAgQVJEQXBwQ2xpZW50ICpzdHJvbmdTZWxmID0gd2Vha1NlbGY7Ci0gICAgICAgIFtz
dHJvbmdTZWxmIHBlZXJDb25uZWN0aW9uOnN0cm9uZ1NlbGYucGVlckNvbm5lY3Rpb24KLSAgICAg
ICAgICAgIGRpZENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbjpzZHAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvcjplcnJvcl07Ci0gICAgICB9XTsKKyAgICAgIFtzZWxmLnBl
ZXJDb25uZWN0aW9uIGFuc3dlckZvckNvbnN0cmFpbnRzOmNvbnN0cmFpbnRzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcjpeKFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbiAqc2RwLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBUkRBcHBDbGllbnQgKnN0cm9uZ1NlbGYgPSB3ZWFrU2VsZjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW3N0cm9uZ1NlbGYgcGVlckNvbm5lY3Rpb246c3Ryb25nU2VsZi5w
ZWVyQ29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ3Jl
YXRlU2Vzc2lvbkRlc2NyaXB0aW9uOnNkcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOmVycm9yXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH1dOwogICAgIH0KICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01v
YmlsZS9BUkRTdGF0c0J1aWxkZXIubSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL0FSRFN0YXRzQnVpbGRlci5tCmlu
ZGV4IGNmZTJlYzVjZDgyODU2OTAwN2YyMzliMWRlYmQ3NzM4Y2UxZGJkOWUuLmY5YTE5MjAzOTky
MTFiZjdhNjNjMGFkZmE3N2YzMjFjN2VkYTQzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL0FS
RFN0YXRzQnVpbGRlci5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL0FSRFN0YXRzQnVpbGRlci5tCkBAIC0x
NjcsMjMgKzE2Nyw0MyBAQCAtIChpbnQpY2FsY3VsYXRlQXZnUVAgewogICByZXR1cm4gZGVsdGFG
cmFtZXNFbmNvZGVkICE9IDAgPyBkZWx0YVFQU3VtIC8gZGVsdGFGcmFtZXNFbmNvZGVkIDogMDsK
IH0KIAorLSAodm9pZCl1cGRhdGVCd2VTdGF0T2ZLZXk6KE5TU3RyaW5nICopa2V5IHZhbHVlOihO
U1N0cmluZyAqKXZhbHVlIHsKKyAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0F2YWls
YWJsZVNlbmRCYW5kd2lkdGgiXSkgeworICAgIF9hdmFpbGFibGVTZW5kQncgPSBbQVJEQml0cmF0
ZVRyYWNrZXIgYml0cmF0ZVN0cmluZ0ZvckJpdHJhdGU6dmFsdWUuZG91YmxlVmFsdWVdOworICB9
IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0F2YWlsYWJsZVJlY2VpdmVCYW5k
d2lkdGgiXSkgeworICAgIF9hdmFpbGFibGVSZWN2QncgPSBbQVJEQml0cmF0ZVRyYWNrZXIgYml0
cmF0ZVN0cmluZ0ZvckJpdHJhdGU6dmFsdWUuZG91YmxlVmFsdWVdOworICB9IGVsc2UgaWYgKFtr
ZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0FjdHVhbEVuY0JpdHJhdGUiXSkgeworICAgIF9hY3R1
YWxFbmNCaXRyYXRlID0gW0FSREJpdHJhdGVUcmFja2VyIGJpdHJhdGVTdHJpbmdGb3JCaXRyYXRl
OnZhbHVlLmRvdWJsZVZhbHVlXTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpA
Imdvb2dUYXJnZXRFbmNCaXRyYXRlIl0pIHsKKyAgICBfdGFyZ2V0RW5jQml0cmF0ZSA9IFtBUkRC
aXRyYXRlVHJhY2tlciBiaXRyYXRlU3RyaW5nRm9yQml0cmF0ZTp2YWx1ZS5kb3VibGVWYWx1ZV07
CisgIH0KK30KKwogLSAodm9pZClwYXJzZUJ3ZVN0YXRzUmVwb3J0OihSVENMZWdhY3lTdGF0c1Jl
cG9ydCAqKXN0YXRzUmVwb3J0IHsKLSAgW3N0YXRzUmVwb3J0LnZhbHVlcyBlbnVtZXJhdGVLZXlz
QW5kT2JqZWN0c1VzaW5nQmxvY2s6XigKLSAgICAgIE5TU3RyaW5nICprZXksIE5TU3RyaW5nICp2
YWx1ZSwgQk9PTCAqc3RvcCkgewotICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dB
dmFpbGFibGVTZW5kQmFuZHdpZHRoIl0pIHsKLSAgICAgIF9hdmFpbGFibGVTZW5kQncgPQotICAg
ICAgICAgIFtBUkRCaXRyYXRlVHJhY2tlciBiaXRyYXRlU3RyaW5nRm9yQml0cmF0ZTp2YWx1ZS5k
b3VibGVWYWx1ZV07Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dB
dmFpbGFibGVSZWNlaXZlQmFuZHdpZHRoIl0pIHsKLSAgICAgIF9hdmFpbGFibGVSZWN2QncgPQot
ICAgICAgICAgIFtBUkRCaXRyYXRlVHJhY2tlciBiaXRyYXRlU3RyaW5nRm9yQml0cmF0ZTp2YWx1
ZS5kb3VibGVWYWx1ZV07Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdv
b2dBY3R1YWxFbmNCaXRyYXRlIl0pIHsKLSAgICAgIF9hY3R1YWxFbmNCaXRyYXRlID0KLSAgICAg
ICAgICBbQVJEQml0cmF0ZVRyYWNrZXIgYml0cmF0ZVN0cmluZ0ZvckJpdHJhdGU6dmFsdWUuZG91
YmxlVmFsdWVdOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nVGFy
Z2V0RW5jQml0cmF0ZSJdKSB7Ci0gICAgICBfdGFyZ2V0RW5jQml0cmF0ZSA9Ci0gICAgICAgICAg
W0FSREJpdHJhdGVUcmFja2VyIGJpdHJhdGVTdHJpbmdGb3JCaXRyYXRlOnZhbHVlLmRvdWJsZVZh
bHVlXTsKLSAgICB9Ci0gIH1dOworICBbc3RhdHNSZXBvcnQudmFsdWVzCisgICAgICBlbnVtZXJh
dGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqa2V5LCBOU1N0cmluZyAqdmFs
dWUsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgW3NlbGYgdXBkYXRlQndlU3RhdE9mS2V5OmtleSB2
YWx1ZTp2YWx1ZV07CisgICAgICB9XTsKK30KKworLSAodm9pZCl1cGRhdGVDb25uZWN0aW9uU3Rh
dE9mS2V5OihOU1N0cmluZyAqKWtleSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSB7CisgIGlmIChb
a2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dSdHQiXSkgeworICAgIF9jb25uUnR0ID0gdmFsdWU7
CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nTG9jYWxDYW5kaWRhdGVU
eXBlIl0pIHsKKyAgICBfbG9jYWxDYW5kVHlwZSA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkg
aXNFcXVhbFRvU3RyaW5nOkAiZ29vZ1JlbW90ZUNhbmRpZGF0ZVR5cGUiXSkgeworICAgIF9yZW1v
dGVDYW5kVHlwZSA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAi
Z29vZ1RyYW5zcG9ydFR5cGUiXSkgeworICAgIF90cmFuc3BvcnRUeXBlID0gdmFsdWU7CisgIH0g
ZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1JlY2VpdmVkIl0pIHsKKyAgICBO
U0ludGVnZXIgYnl0ZUNvdW50ID0gdmFsdWUuaW50ZWdlclZhbHVlOworICAgIFtfY29ublJlY3ZC
aXRyYXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRlQ291bnQ6Ynl0ZUNvdW50
XTsKKyAgICBfY29ublJlY3ZCaXRyYXRlID0gX2Nvbm5SZWN2Qml0cmF0ZVRyYWNrZXIuYml0cmF0
ZVN0cmluZzsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImJ5dGVzU2VudCJd
KSB7CisgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZhbHVlLmludGVnZXJWYWx1ZTsKKyAgICBb
X2Nvbm5TZW5kQml0cmF0ZVRyYWNrZXIgdXBkYXRlQml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50
OmJ5dGVDb3VudF07CisgICAgX2Nvbm5TZW5kQml0cmF0ZSA9IF9jb25uU2VuZEJpdHJhdGVUcmFj
a2VyLmJpdHJhdGVTdHJpbmc7CisgIH0KIH0KIAogLSAodm9pZClwYXJzZUNvbm5lY3Rpb25TdGF0
c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7CkBAIC0xOTEsMjYg
KzIxMSwxMCBAQCAtICh2b2lkKXBhcnNlQ29ubmVjdGlvblN0YXRzUmVwb3J0OihSVENMZWdhY3lT
dGF0c1JlcG9ydCAqKXN0YXRzUmVwb3J0IHsKICAgaWYgKCFbYWN0aXZlQ29ubmVjdGlvbiBpc0Vx
dWFsVG9TdHJpbmc6QCJ0cnVlIl0pIHsKICAgICByZXR1cm47CiAgIH0KLSAgW3N0YXRzUmVwb3J0
LnZhbHVlcyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XigKLSAgICAgIE5TU3Ry
aW5nICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAqc3RvcCkgewotICAgIGlmIChba2V5IGlz
RXF1YWxUb1N0cmluZzpAImdvb2dSdHQiXSkgewotICAgICAgX2Nvbm5SdHQgPSB2YWx1ZTsKLSAg
ICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0xvY2FsQ2FuZGlkYXRlVHlw
ZSJdKSB7Ci0gICAgICBfbG9jYWxDYW5kVHlwZSA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tl
eSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nUmVtb3RlQ2FuZGlkYXRlVHlwZSJdKSB7Ci0gICAgICBf
cmVtb3RlQ2FuZFR5cGUgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3Ry
aW5nOkAiZ29vZ1RyYW5zcG9ydFR5cGUiXSkgewotICAgICAgX3RyYW5zcG9ydFR5cGUgPSB2YWx1
ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiYnl0ZXNSZWNlaXZlZCJd
KSB7Ci0gICAgICBOU0ludGVnZXIgYnl0ZUNvdW50ID0gdmFsdWUuaW50ZWdlclZhbHVlOwotICAg
ICAgW19jb25uUmVjdkJpdHJhdGVUcmFja2VyIHVwZGF0ZUJpdHJhdGVXaXRoQ3VycmVudEJ5dGVD
b3VudDpieXRlQ291bnRdOwotICAgICAgX2Nvbm5SZWN2Qml0cmF0ZSA9IF9jb25uUmVjdkJpdHJh
dGVUcmFja2VyLmJpdHJhdGVTdHJpbmc7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0
cmluZzpAImJ5dGVzU2VudCJdKSB7Ci0gICAgICBOU0ludGVnZXIgYnl0ZUNvdW50ID0gdmFsdWUu
aW50ZWdlclZhbHVlOwotICAgICAgW19jb25uU2VuZEJpdHJhdGVUcmFja2VyIHVwZGF0ZUJpdHJh
dGVXaXRoQ3VycmVudEJ5dGVDb3VudDpieXRlQ291bnRdOwotICAgICAgX2Nvbm5TZW5kQml0cmF0
ZSA9IF9jb25uU2VuZEJpdHJhdGVUcmFja2VyLmJpdHJhdGVTdHJpbmc7Ci0gICAgfQotICB9XTsK
KyAgW3N0YXRzUmVwb3J0LnZhbHVlcworICAgICAgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2lu
Z0Jsb2NrOl4oTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcgKnZhbHVlLCBCT09MICpzdG9wKSB7Cisg
ICAgICAgIFtzZWxmIHVwZGF0ZUNvbm5lY3Rpb25TdGF0T2ZLZXk6a2V5IHZhbHVlOnZhbHVlXTsK
KyAgICAgIH1dOwogfQogCiAtICh2b2lkKXBhcnNlU2VuZFNzcmNTdGF0c1JlcG9ydDooUlRDTGVn
YWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7CkBAIC0yMjQsNTAgKzIyOCw1OCBAQCAtICh2
b2lkKXBhcnNlU2VuZFNzcmNTdGF0c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0
c1JlcG9ydCB7CiAgIH0KIH0KIAorLSAodm9pZCl1cGRhdGVBdWRpb1NlbmRTdGF0T2ZLZXk6KE5T
U3RyaW5nICopa2V5IHZhbHVlOihOU1N0cmluZyAqKXZhbHVlIHsKKyAgaWYgKFtrZXkgaXNFcXVh
bFRvU3RyaW5nOkAiZ29vZ0NvZGVjTmFtZSJdKSB7CisgICAgX2F1ZGlvU2VuZENvZGVjID0gdmFs
dWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1NlbnQiXSkgewor
ICAgIE5TSW50ZWdlciBieXRlQ291bnQgPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7CisgICAgW19hdWRp
b1NlbmRCaXRyYXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRlQ291bnQ6Ynl0
ZUNvdW50XTsKKyAgICBfYXVkaW9TZW5kQml0cmF0ZSA9IF9hdWRpb1NlbmRCaXRyYXRlVHJhY2tl
ci5iaXRyYXRlU3RyaW5nOworICB9Cit9CisKIC0gKHZvaWQpcGFyc2VBdWRpb1NlbmRTdGF0c1Jl
cG9ydDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7Ci0gIFtzdGF0c1JlcG9y
dC52YWx1ZXMgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oCi0gICAgICBOU1N0
cmluZyAqa2V5LCBOU1N0cmluZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsKLSAgICBpZiAoW2tleSBp
c0VxdWFsVG9TdHJpbmc6QCJnb29nQ29kZWNOYW1lIl0pIHsKLSAgICAgIF9hdWRpb1NlbmRDb2Rl
YyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1Nl
bnQiXSkgewotICAgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZhbHVlLmludGVnZXJWYWx1ZTsK
LSAgICAgIFtfYXVkaW9TZW5kQml0cmF0ZVRyYWNrZXIgdXBkYXRlQml0cmF0ZVdpdGhDdXJyZW50
Qnl0ZUNvdW50OmJ5dGVDb3VudF07Ci0gICAgICBfYXVkaW9TZW5kQml0cmF0ZSA9IF9hdWRpb1Nl
bmRCaXRyYXRlVHJhY2tlci5iaXRyYXRlU3RyaW5nOwotICAgIH0KLSAgfV07CisgIFtzdGF0c1Jl
cG9ydC52YWx1ZXMKKyAgICAgIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKE5T
U3RyaW5nICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAqc3RvcCkgeworICAgICAgICBbc2Vs
ZiB1cGRhdGVBdWRpb1NlbmRTdGF0T2ZLZXk6a2V5IHZhbHVlOnZhbHVlXTsKKyAgICAgIH1dOwor
fQorCistICh2b2lkKXVwZGF0ZVZpZGVvU2VuZFN0YXRPZktleTooTlNTdHJpbmcgKilrZXkgdmFs
dWU6KE5TU3RyaW5nICopdmFsdWUgeworICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29n
Q29kZWNOYW1lIl0pIHsKKyAgICBfdmlkZW9TZW5kQ29kZWMgPSB2YWx1ZTsKKyAgfSBlbHNlIGlm
IChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZUhlaWdodElucHV0Il0pIHsKKyAgICBf
dmlkZW9JbnB1dEhlaWdodCA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3Ry
aW5nOkAiZ29vZ0ZyYW1lV2lkdGhJbnB1dCJdKSB7CisgICAgX3ZpZGVvSW5wdXRXaWR0aCA9IHZh
bHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lUmF0ZUlu
cHV0Il0pIHsKKyAgICBfdmlkZW9JbnB1dEZwcyA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkg
aXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lSGVpZ2h0U2VudCJdKSB7CisgICAgX3ZpZGVvU2Vu
ZEhlaWdodCA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29v
Z0ZyYW1lV2lkdGhTZW50Il0pIHsKKyAgICBfdmlkZW9TZW5kV2lkdGggPSB2YWx1ZTsKKyAgfSBl
bHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVJhdGVTZW50Il0pIHsKKyAg
ICBfdmlkZW9TZW5kRnBzID0gdmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJnb29nQXZnRW5jb2RlTXMiXSkgeworICAgIF92aWRlb0VuY29kZU1zID0gdmFsdWU7Cisg
IH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1NlbnQiXSkgeworICAgIE5T
SW50ZWdlciBieXRlQ291bnQgPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7CisgICAgW192aWRlb1NlbmRC
aXRyYXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRlQ291bnQ6Ynl0ZUNvdW50
XTsKKyAgICBfdmlkZW9TZW5kQml0cmF0ZSA9IF92aWRlb1NlbmRCaXRyYXRlVHJhY2tlci5iaXRy
YXRlU3RyaW5nOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAicXBTdW0iXSkg
eworICAgIF9vbGRWaWRlb1FQU3VtID0gX3ZpZGVvUVBTdW07CisgICAgX3ZpZGVvUVBTdW0gPSB2
YWx1ZS5pbnRlZ2VyVmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJm
cmFtZXNFbmNvZGVkIl0pIHsKKyAgICBfb2xkRnJhbWVzRW5jb2RlZCA9IF9mcmFtZXNFbmNvZGVk
OworICAgIF9mcmFtZXNFbmNvZGVkID0gdmFsdWUuaW50ZWdlclZhbHVlOworICB9CiB9CiAKIC0g
KHZvaWQpcGFyc2VWaWRlb1NlbmRTdGF0c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilz
dGF0c1JlcG9ydCB7Ci0gIFtzdGF0c1JlcG9ydC52YWx1ZXMgZW51bWVyYXRlS2V5c0FuZE9iamVj
dHNVc2luZ0Jsb2NrOl4oCi0gICAgICBOU1N0cmluZyAqa2V5LCBOU1N0cmluZyAqdmFsdWUsIEJP
T0wgKnN0b3ApIHsKLSAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nQ29kZWNOYW1l
Il0pIHsKLSAgICAgIF92aWRlb1NlbmRDb2RlYyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tl
eSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVIZWlnaHRJbnB1dCJdKSB7Ci0gICAgICBfdmlk
ZW9JbnB1dEhlaWdodCA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJnb29nRnJhbWVXaWR0aElucHV0Il0pIHsKLSAgICAgIF92aWRlb0lucHV0V2lkdGggPSB2
YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lUmF0
ZUlucHV0Il0pIHsKLSAgICAgIF92aWRlb0lucHV0RnBzID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlm
IChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZUhlaWdodFNlbnQiXSkgewotICAgICAg
X3ZpZGVvU2VuZEhlaWdodCA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9T
dHJpbmc6QCJnb29nRnJhbWVXaWR0aFNlbnQiXSkgewotICAgICAgX3ZpZGVvU2VuZFdpZHRoID0g
dmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVJh
dGVTZW50Il0pIHsKLSAgICAgIF92aWRlb1NlbmRGcHMgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYg
KFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0F2Z0VuY29kZU1zIl0pIHsKLSAgICAgIF92aWRl
b0VuY29kZU1zID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpA
ImJ5dGVzU2VudCJdKSB7Ci0gICAgICBOU0ludGVnZXIgYnl0ZUNvdW50ID0gdmFsdWUuaW50ZWdl
clZhbHVlOwotICAgICAgW192aWRlb1NlbmRCaXRyYXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0
aEN1cnJlbnRCeXRlQ291bnQ6Ynl0ZUNvdW50XTsKLSAgICAgIF92aWRlb1NlbmRCaXRyYXRlID0g
X3ZpZGVvU2VuZEJpdHJhdGVUcmFja2VyLmJpdHJhdGVTdHJpbmc7Ci0gICAgfSBlbHNlIGlmIChb
a2V5IGlzRXF1YWxUb1N0cmluZzpAInFwU3VtIl0pIHsKLSAgICAgIF9vbGRWaWRlb1FQU3VtID0g
X3ZpZGVvUVBTdW07Ci0gICAgICBfdmlkZW9RUFN1bSA9IHZhbHVlLmludGVnZXJWYWx1ZTsKLSAg
ICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWVzRW5jb2RlZCJdKSB7Ci0g
ICAgICBfb2xkRnJhbWVzRW5jb2RlZCA9IF9mcmFtZXNFbmNvZGVkOwotICAgICAgX2ZyYW1lc0Vu
Y29kZWQgPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7Ci0gICAgfQotICB9XTsKKyAgW3N0YXRzUmVwb3J0
LnZhbHVlcworICAgICAgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJp
bmcgKmtleSwgTlNTdHJpbmcgKnZhbHVlLCBCT09MICpzdG9wKSB7CisgICAgICAgIFtzZWxmIHVw
ZGF0ZVZpZGVvU2VuZFN0YXRPZktleTprZXkgdmFsdWU6dmFsdWVdOworICAgICAgfV07CiB9CiAK
IC0gKHZvaWQpcGFyc2VSZWN2U3NyY1N0YXRzUmVwb3J0OihSVENMZWdhY3lTdGF0c1JlcG9ydCAq
KXN0YXRzUmVwb3J0IHsKQEAgLTI4MSw0NCArMjkzLDUyIEBAIC0gKHZvaWQpcGFyc2VSZWN2U3Ny
Y1N0YXRzUmVwb3J0OihSVENMZWdhY3lTdGF0c1JlcG9ydCAqKXN0YXRzUmVwb3J0IHsKICAgfQog
fQogCistICh2b2lkKXVwZGF0ZUF1ZGlvUmVjdlN0YXRPZktleTooTlNTdHJpbmcgKilrZXkgdmFs
dWU6KE5TU3RyaW5nICopdmFsdWUgeworICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29n
Q29kZWNOYW1lIl0pIHsKKyAgICBfYXVkaW9SZWN2Q29kZWMgPSB2YWx1ZTsKKyAgfSBlbHNlIGlm
IChba2V5IGlzRXF1YWxUb1N0cmluZzpAImJ5dGVzUmVjZWl2ZWQiXSkgeworICAgIE5TSW50ZWdl
ciBieXRlQ291bnQgPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7CisgICAgW19hdWRpb1JlY3ZCaXRyYXRl
VHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRlQ291bnQ6Ynl0ZUNvdW50XTsKKyAg
ICBfYXVkaW9SZWN2Qml0cmF0ZSA9IF9hdWRpb1JlY3ZCaXRyYXRlVHJhY2tlci5iaXRyYXRlU3Ry
aW5nOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ1NwZWVjaEV4cGFu
ZFJhdGUiXSkgeworICAgIF9hdWRpb0V4cGFuZFJhdGUgPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChb
a2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dDdXJyZW50RGVsYXlNcyJdKSB7CisgICAgX2F1ZGlv
Q3VycmVudERlbGF5ID0gdmFsdWU7CisgIH0KK30KKwogLSAodm9pZClwYXJzZUF1ZGlvUmVjdlN0
YXRzUmVwb3J0OihSVENMZWdhY3lTdGF0c1JlcG9ydCAqKXN0YXRzUmVwb3J0IHsKLSAgW3N0YXRz
UmVwb3J0LnZhbHVlcyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XigKLSAgICAg
IE5TU3RyaW5nICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAqc3RvcCkgewotICAgIGlmIChb
a2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dDb2RlY05hbWUiXSkgewotICAgICAgX2F1ZGlvUmVj
dkNvZGVjID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImJ5
dGVzUmVjZWl2ZWQiXSkgewotICAgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZhbHVlLmludGVn
ZXJWYWx1ZTsKLSAgICAgIFtfYXVkaW9SZWN2Qml0cmF0ZVRyYWNrZXIgdXBkYXRlQml0cmF0ZVdp
dGhDdXJyZW50Qnl0ZUNvdW50OmJ5dGVDb3VudF07Ci0gICAgICBfYXVkaW9SZWN2Qml0cmF0ZSA9
IF9hdWRpb1JlY3ZCaXRyYXRlVHJhY2tlci5iaXRyYXRlU3RyaW5nOwotICAgIH0gZWxzZSBpZiAo
W2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nU3BlZWNoRXhwYW5kUmF0ZSJdKSB7Ci0gICAgICBf
YXVkaW9FeHBhbmRSYXRlID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0
cmluZzpAImdvb2dDdXJyZW50RGVsYXlNcyJdKSB7Ci0gICAgICBfYXVkaW9DdXJyZW50RGVsYXkg
PSB2YWx1ZTsKLSAgICB9Ci0gIH1dOworICBbc3RhdHNSZXBvcnQudmFsdWVzCisgICAgICBlbnVt
ZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqa2V5LCBOU1N0cmluZyAq
dmFsdWUsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgW3NlbGYgdXBkYXRlQXVkaW9SZWN2U3RhdE9m
S2V5OmtleSB2YWx1ZTp2YWx1ZV07CisgICAgICB9XTsKK30KKworLSAodm9pZCl1cGRhdGVWaWRl
b1JlY3ZTdGF0T2ZLZXk6KE5TU3RyaW5nICopa2V5IHZhbHVlOihOU1N0cmluZyAqKXZhbHVlIHsK
KyAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lSGVpZ2h0UmVjZWl2ZWQiXSkg
eworICAgIF92aWRlb1JlY3ZIZWlnaHQgPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1
YWxUb1N0cmluZzpAImdvb2dGcmFtZVdpZHRoUmVjZWl2ZWQiXSkgeworICAgIF92aWRlb1JlY3ZX
aWR0aCA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0Zy
YW1lUmF0ZVJlY2VpdmVkIl0pIHsKKyAgICBfdmlkZW9SZWN2RnBzID0gdmFsdWU7CisgIH0gZWxz
ZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVSYXRlRGVjb2RlZCJdKSB7Cisg
ICAgX3ZpZGVvRGVjb2RlZEZwcyA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRv
U3RyaW5nOkAiZ29vZ0ZyYW1lUmF0ZU91dHB1dCJdKSB7CisgICAgX3ZpZGVvT3V0cHV0RnBzID0g
dmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRGVjb2RlTXMi
XSkgeworICAgIF92aWRlb0RlY29kZU1zID0gdmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0Vx
dWFsVG9TdHJpbmc6QCJieXRlc1JlY2VpdmVkIl0pIHsKKyAgICBOU0ludGVnZXIgYnl0ZUNvdW50
ID0gdmFsdWUuaW50ZWdlclZhbHVlOworICAgIFtfdmlkZW9SZWN2Qml0cmF0ZVRyYWNrZXIgdXBk
YXRlQml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50OmJ5dGVDb3VudF07CisgICAgX3ZpZGVvUmVj
dkJpdHJhdGUgPSBfdmlkZW9SZWN2Qml0cmF0ZVRyYWNrZXIuYml0cmF0ZVN0cmluZzsKKyAgfQog
fQogCiAtICh2b2lkKXBhcnNlVmlkZW9SZWN2U3RhdHNSZXBvcnQ6KFJUQ0xlZ2FjeVN0YXRzUmVw
b3J0ICopc3RhdHNSZXBvcnQgewotICBbc3RhdHNSZXBvcnQudmFsdWVzIGVudW1lcmF0ZUtleXNB
bmRPYmplY3RzVXNpbmdCbG9jazpeKAotICAgICAgTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcgKnZh
bHVlLCBCT09MICpzdG9wKSB7Ci0gICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0Zy
YW1lSGVpZ2h0UmVjZWl2ZWQiXSkgewotICAgICAgX3ZpZGVvUmVjdkhlaWdodCA9IHZhbHVlOwot
ICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVXaWR0aFJlY2Vp
dmVkIl0pIHsKLSAgICAgIF92aWRlb1JlY3ZXaWR0aCA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAo
W2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVSYXRlUmVjZWl2ZWQiXSkgewotICAgICAg
X3ZpZGVvUmVjdkZwcyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJnb29nRnJhbWVSYXRlRGVjb2RlZCJdKSB7Ci0gICAgICBfdmlkZW9EZWNvZGVkRnBzID0g
dmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVJh
dGVPdXRwdXQiXSkgewotICAgICAgX3ZpZGVvT3V0cHV0RnBzID0gdmFsdWU7Ci0gICAgfSBlbHNl
IGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dEZWNvZGVNcyJdKSB7Ci0gICAgICBfdmlk
ZW9EZWNvZGVNcyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6
QCJieXRlc1JlY2VpdmVkIl0pIHsKLSAgICAgIE5TSW50ZWdlciBieXRlQ291bnQgPSB2YWx1ZS5p
bnRlZ2VyVmFsdWU7Ci0gICAgICBbX3ZpZGVvUmVjdkJpdHJhdGVUcmFja2VyIHVwZGF0ZUJpdHJh
dGVXaXRoQ3VycmVudEJ5dGVDb3VudDpieXRlQ291bnRdOwotICAgICAgX3ZpZGVvUmVjdkJpdHJh
dGUgPSBfdmlkZW9SZWN2Qml0cmF0ZVRyYWNrZXIuYml0cmF0ZVN0cmluZzsKLSAgICB9Ci0gIH1d
OworICBbc3RhdHNSZXBvcnQudmFsdWVzCisgICAgICBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1Vz
aW5nQmxvY2s6XihOU1N0cmluZyAqa2V5LCBOU1N0cmluZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsK
KyAgICAgICAgW3NlbGYgdXBkYXRlVmlkZW9SZWN2U3RhdE9mS2V5OmtleSB2YWx1ZTp2YWx1ZV07
CisgICAgICB9XTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvaW9zL0FSRE1h
aW5WaWV3Q29udHJvbGxlci5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvaW9zL0FSRE1haW5WaWV3Q29udHJvbGxl
ci5tCmluZGV4IGZhZTNmN2I4YWE3MjY3YzZkYjQ1YmVmMjYyZWQ5YjM1NjBjNmIyMGQuLjYzYjNk
ZDc2Y2FkMDI1ZDliYzk4NTExMGFkYzUyMzMxNDQyOGFlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9i
aWxlL2lvcy9BUkRNYWluVmlld0NvbnRyb2xsZXIubQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9pb3MvQVJE
TWFpblZpZXdDb250cm9sbGVyLm0KQEAgLTMyLDE0ICszMiwxNyBAQCBAaW50ZXJmYWNlIEFSRE1h
aW5WaWV3Q29udHJvbGxlciAoKSA8CiAgICAgQVJETWFpblZpZXdEZWxlZ2F0ZSwKICAgICBBUkRW
aWRlb0NhbGxWaWV3Q29udHJvbGxlckRlbGVnYXRlLAogICAgIFJUQ0F1ZGlvU2Vzc2lvbkRlbGVn
YXRlPgorQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBBUkRNYWluVmlldyAqbWFpblZpZXc7
CitAcHJvcGVydHkobm9uYXRvbWljLCBzdHJvbmcpIEFWQXVkaW9QbGF5ZXIgKmF1ZGlvUGxheWVy
OwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gQVJETWFpblZpZXdDb250cm9sbGVyIHsKLSAgQVJE
TWFpblZpZXcgKl9tYWluVmlldzsKLSAgQVZBdWRpb1BsYXllciAqX2F1ZGlvUGxheWVyOwogICBC
T09MIF91c2VNYW51YWxBdWRpbzsKIH0KIAorQHN5bnRoZXNpemUgbWFpblZpZXcgPSBfbWFpblZp
ZXc7CitAc3ludGhlc2l6ZSBhdWRpb1BsYXllciA9IF9hdWRpb1BsYXllcjsKKwogLSAodm9pZCl2
aWV3RGlkTG9hZCB7CiAgIFtzdXBlciB2aWV3RGlkTG9hZF07CiAgIGlmIChbW1tOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXSBhcmd1bWVudHNdIGNvbnRhaW5zT2JqZWN0Omxvb3BiYWNrTGF1bmNo
UHJvY2Vzc0FyZ3VtZW50XSkgewpAQCAtMTY1LDEzICsxNjgsMTMgQEAgLSAodm9pZClhdWRpb1Nl
c3Npb25EaWRTdGFydFBsYXlPclJlY29yZDooUlRDQXVkaW9TZXNzaW9uICopc2Vzc2lvbiB7CiAg
IC8vIFN0b3AgcGxheWJhY2sgb24gbWFpbiBxdWV1ZSBhbmQgdGhlbiBjb25maWd1cmUgV2ViUlRD
LgogICBbUlRDRGlzcGF0Y2hlciBkaXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3BhdGNoZXJUeXBl
TWFpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57Ci0gICAgaWYgKF9t
YWluVmlldy5pc0F1ZGlvTG9vcFBsYXlpbmcpIHsKLSAgICAgIFJUQ0xvZyhAIlN0b3BwaW5nIGF1
ZGlvIGxvb3AgZHVlIHRvIFdlYlJUQyBzdGFydC4iKTsKLSAgICAgIFtfYXVkaW9QbGF5ZXIgc3Rv
cF07Ci0gICAgfQotICAgIFJUQ0xvZyhAIlNldHRpbmcgaXNBdWRpb0VuYWJsZWQgdG8gWUVTLiIp
OwotICAgIHNlc3Npb24uaXNBdWRpb0VuYWJsZWQgPSBZRVM7Ci0gIH1dOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYubWFpblZpZXcuaXNBdWRpb0xvb3BQbGF5aW5n
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ0xvZyhAIlN0b3BwaW5n
IGF1ZGlvIGxvb3AgZHVlIHRvIFdlYlJUQyBzdGFydC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW3NlbGYuYXVkaW9QbGF5ZXIgc3RvcF07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVENM
b2coQCJTZXR0aW5nIGlzQXVkaW9FbmFibGVkIHRvIFlFUy4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlc3Npb24uaXNBdWRpb0VuYWJsZWQgPSBZRVM7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfV07CiB9CiAKIC0gKHZvaWQpYXVkaW9TZXNzaW9uRGlkU3Rv
cFBsYXlPclJlY29yZDooUlRDQXVkaW9TZXNzaW9uICopc2Vzc2lvbiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0Fw
cFJUQ01vYmlsZS9pb3MvQVJEVmlkZW9DYWxsVmlld0NvbnRyb2xsZXIubSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxl
L2lvcy9BUkRWaWRlb0NhbGxWaWV3Q29udHJvbGxlci5tCmluZGV4IDI4MjdiZjk0NDIzY2IwMjNl
NDVlYTk4NGY1ZTc3Njg3YWU3NjRhMGEuLmY3ZjRhODc3ZWYwYWExZWQxMzFhNzEyMjliNGFmZjIw
N2RiYWNjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL2lvcy9BUkRWaWRlb0NhbGxWaWV3Q29u
dHJvbGxlci5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL2lvcy9BUkRWaWRlb0NhbGxWaWV3Q29udHJvbGxl
ci5tCkBAIC0yNyw2ICsyNyw3IEBAIEBpbnRlcmZhY2UgQVJEVmlkZW9DYWxsVmlld0NvbnRyb2xs
ZXIgKCkgPEFSREFwcENsaWVudERlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUlRDQXVkaW9TZXNzaW9uRGVsZWdhdGU+CiBAcHJvcGVydHkobm9uYXRv
bWljLCBzdHJvbmcpIFJUQ1ZpZGVvVHJhY2sgKnJlbW90ZVZpZGVvVHJhY2s7CiBAcHJvcGVydHko
bm9uYXRvbWljLCByZWFkb25seSkgQVJEVmlkZW9DYWxsVmlldyAqdmlkZW9DYWxsVmlldzsKK0Bw
cm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQVZBdWRpb1Nlc3Npb25Qb3J0T3ZlcnJpZGUgcG9y
dE92ZXJyaWRlOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gQVJEVmlkZW9DYWxsVmlld0NvbnRy
b2xsZXIgewpAQCAtMzQsMTIgKzM1LDEyIEBAIEBpbXBsZW1lbnRhdGlvbiBBUkRWaWRlb0NhbGxW
aWV3Q29udHJvbGxlciB7CiAgIFJUQ1ZpZGVvVHJhY2sgKl9yZW1vdGVWaWRlb1RyYWNrOwogICBB
UkRDYXB0dXJlQ29udHJvbGxlciAqX2NhcHR1cmVDb250cm9sbGVyOwogICBBUkRGaWxlQ2FwdHVy
ZUNvbnRyb2xsZXIgKl9maWxlQ2FwdHVyZUNvbnRyb2xsZXIgTlNfQVZBSUxBQkxFX0lPUygxMCk7
Ci0gIEFWQXVkaW9TZXNzaW9uUG9ydE92ZXJyaWRlIF9wb3J0T3ZlcnJpZGU7CiB9CiAKIEBzeW50
aGVzaXplIHZpZGVvQ2FsbFZpZXcgPSBfdmlkZW9DYWxsVmlldzsKIEBzeW50aGVzaXplIHJlbW90
ZVZpZGVvVHJhY2sgPSBfcmVtb3RlVmlkZW9UcmFjazsKIEBzeW50aGVzaXplIGRlbGVnYXRlID0g
X2RlbGVnYXRlOworQHN5bnRoZXNpemUgcG9ydE92ZXJyaWRlID0gX3BvcnRPdmVycmlkZTsKIAog
LSAoaW5zdGFuY2V0eXBlKWluaXRGb3JSb29tOihOU1N0cmluZyAqKXJvb20KICAgICAgICAgICAg
ICAgICAgaXNMb29wYmFjazooQk9PTClpc0xvb3BiYWNrCkBAIC0xNjgsNyArMTY5LDcgQEAgLSAo
dm9pZCl2aWRlb0NhbGxWaWV3RGlkQ2hhbmdlUm91dGU6KEFSRFZpZGVvQ2FsbFZpZXcgKil2aWV3
IHsKICAgICBbc2Vzc2lvbiBsb2NrRm9yQ29uZmlndXJhdGlvbl07CiAgICAgTlNFcnJvciAqZXJy
b3IgPSBuaWw7CiAgICAgaWYgKFtzZXNzaW9uIG92ZXJyaWRlT3V0cHV0QXVkaW9Qb3J0Om92ZXJy
aWRlIGVycm9yOiZlcnJvcl0pIHsKLSAgICAgIF9wb3J0T3ZlcnJpZGUgPSBvdmVycmlkZTsKKyAg
ICAgIHNlbGYucG9ydE92ZXJyaWRlID0gb3ZlcnJpZGU7CiAgICAgfSBlbHNlIHsKICAgICAgIFJU
Q0xvZ0Vycm9yKEAiRXJyb3Igb3ZlcnJpZGluZyBvdXRwdXQgcG9ydDogJUAiLAogICAgICAgICAg
ICAgICAgICAgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENN
b2JpbGUvbWFjL0FQUFJUQ1ZpZXdDb250cm9sbGVyLm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9tYWMvQVBQUlRD
Vmlld0NvbnRyb2xsZXIubQppbmRleCA5ZjVlZDQwYjFiNDFjMjhlYTFjZjFlZDczYWYzNjVkNTQ2
MWI3YmMyLi5hOTcyYTIwZTRlYTg5ODk2NGIxZWJlMDIyMmE4ZDJjNDQwYmJiZmFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9v
YmpjL0FwcFJUQ01vYmlsZS9tYWMvQVBQUlRDVmlld0NvbnRyb2xsZXIubQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01v
YmlsZS9tYWMvQVBQUlRDVmlld0NvbnRyb2xsZXIubQpAQCAtMzksNiArMzksNyBAQCBAaW50ZXJm
YWNlIEFQUFJUQ01haW5WaWV3IDogTlNWaWV3CiBAcHJvcGVydHkobm9uYXRvbWljLCB3ZWFrKSBp
ZDxBUFBSVENNYWluVmlld0RlbGVnYXRlPiBkZWxlZ2F0ZTsKIEBwcm9wZXJ0eShub25hdG9taWMs
IHJlYWRvbmx5KSBOU1ZpZXc8UlRDVmlkZW9SZW5kZXJlcj4qIGxvY2FsVmlkZW9WaWV3OwogQHBy
b3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVmlldzxSVENWaWRlb1JlbmRlcmVyPiogcmVt
b3RlVmlkZW9WaWV3OworQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVGV4dFZpZXcq
IGxvZ1ZpZXc7CiAKIC0gKHZvaWQpZGlzcGxheUxvZ01lc3NhZ2U6KE5TU3RyaW5nKiltZXNzYWdl
OwogCkBAIC01Miw3ICs1Myw2IEBAIEBpbXBsZW1lbnRhdGlvbiBBUFBSVENNYWluVmlldyAgewog
ICBOU0J1dHRvbiogX2Nvbm5lY3RCdXR0b247CiAgIE5TQnV0dG9uKiBfbG9vcGJhY2tCdXR0b247
CiAgIE5TVGV4dEZpZWxkKiBfcm9vbUZpZWxkOwotICBOU1RleHRWaWV3KiBfbG9nVmlldzsKICAg
Q0dTaXplIF9sb2NhbFZpZGVvU2l6ZTsKICAgQ0dTaXplIF9yZW1vdGVWaWRlb1NpemU7CiB9CkBA
IC02MCwxNCArNjAsMTMgQEAgQGltcGxlbWVudGF0aW9uIEFQUFJUQ01haW5WaWV3ICB7CiBAc3lu
dGhlc2l6ZSBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZTsKIEBzeW50aGVzaXplIGxvY2FsVmlkZW9WaWV3
ID0gX2xvY2FsVmlkZW9WaWV3OwogQHN5bnRoZXNpemUgcmVtb3RlVmlkZW9WaWV3ID0gX3JlbW90
ZVZpZGVvVmlldzsKLQorQHN5bnRoZXNpemUgbG9nVmlldyA9IF9sb2dWaWV3OwogCiAtICh2b2lk
KWRpc3BsYXlMb2dNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgewogICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgIF9sb2dWaWV3LnN0cmluZyA9Ci0g
ICAgICAgIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQFxuIiwgX2xvZ1ZpZXcuc3Ry
aW5nLCBtZXNzYWdlXTsKLSAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoX2xvZ1ZpZXcu
c3RyaW5nLmxlbmd0aCwgMCk7Ci0gICAgW19sb2dWaWV3IHNjcm9sbFJhbmdlVG9WaXNpYmxlOnJh
bmdlXTsKKyAgICBzZWxmLmxvZ1ZpZXcuc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQCVAXG4iLCBzZWxmLmxvZ1ZpZXcuc3RyaW5nLCBtZXNzYWdlXTsKKyAgICBOU1Jhbmdl
IHJhbmdlID0gTlNNYWtlUmFuZ2Uoc2VsZi5sb2dWaWV3LnN0cmluZy5sZW5ndGgsIDApOworICAg
IFtzZWxmLmxvZ1ZpZXcgc2Nyb2xsUmFuZ2VUb1Zpc2libGU6cmFuZ2VdOwogICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvdGVzdHMvbWFpbi5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL3Rlc3Rz
L21haW4ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzYyNWZmZDdiZjgxY2E4M2VlMjY2YmZhMTk5ZmE5ZWYzMDQ4
MDM1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL3Rlc3RzL21haW4ubW0KQEAgLTAs
MCArMSwyMSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4K
KworI2luY2x1ZGUgInRlc3QvaW9zL2NvdmVyYWdlX3V0aWxfaW9zLmgiCisKK2ludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKKyAgcnRjOjp0ZXN0OjpDb25maWd1cmVDb3ZlcmFnZVJl
cG9ydFBhdGgoKTsKKworICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICByZXR1cm4gVUlBcHBsaWNh
dGlvbk1haW4oYXJnYywgYXJndiwgbmlsLCBuaWwpOworICB9Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjbmF0aXZl
YXBpL29iamMvb2JqY2NhbGxjbGllbnQubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjbmF0aXZlYXBpL29iamMvb2JqY2NhbGxjbGllbnQu
bW0KaW5kZXggYzM4NGRhM2VmOGNiYmI3NzZkZDA1ZmM1NDA1NWMyMDk5ZGIxMTFjZi4uYzdiMmFm
NDIxMjNlNDk1ZDdlNzJhZTY2Y2VjZmQxNTdlMzIzODFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqY25hdGl2ZWFwaS9v
YmpjL29iamNjYWxsY2xpZW50Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamNuYXRpdmVhcGkvb2JqYy9vYmpjY2FsbGNsaWVudC5t
bQpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9h
dWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0
aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0aW9u
aW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVu
Z2luZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlv
X3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJzZGsvb2JqYy9uYXRpdmUvYXBpL3ZpZGVvX2NhcHR1
cmVyLmgiCkBAIC0xMTYsMTIgKzExNywxNiBAQCB2b2lkIE9iakNDYWxsQ2xpZW50OjpDcmVhdGVQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVv
RW5jb2RlckZhY3Rvcnk+IHZpZGVvRW5jb2RlckZhY3RvcnkgPQogICAgICAgd2VicnRjOjpPYmpD
VG9OYXRpdmVWaWRlb0VuY29kZXJGYWN0b3J5KFtbUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3Rv
cnkgYWxsb2NdIGluaXRdKTsKIAorICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0JpdHJh
dGVBbGxvY2F0b3JGYWN0b3J5PiB2aWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5ID0KKyAgICAg
IHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKTsKKwog
ICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2Vu
Z2luZSA9CiAgICAgICBjcmlja2V0OjpXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZShu
dWxscHRyIC8qIGFkbSAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3Jl
YXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh2aWRlb0VuY29kZXJGYWN0b3J5KSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92
ZSh2aWRlb0RlY29kZXJGYWN0b3J5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh2aWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIg
LyogYXVkaW9fbWl4ZXIgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKSk7CiAg
IFJUQ19MT0coTFNfSU5GTykgPDwgIk1lZGlhIGVuZ2luZSBjcmVhdGVkOiAiIDw8IG1lZGlhX2Vu
Z2luZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9jb25kdWN0b3IuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29u
bmVjdGlvbi9jbGllbnQvY29uZHVjdG9yLmNjCmluZGV4IGMyNTI1OWNlMzRkZjM1Y2E0YzM4NDU2
OGY4ZWY5MjQ4ZmNhN2QwMmEuLmE3ODFjNGExODc0YWEzMmIwZDljZjgzMDdiZDU1MGFhMDk2Njg4
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9jb25kdWN0b3IuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rp
b24vY2xpZW50L2NvbmR1Y3Rvci5jYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAiYXBp
L2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUg
ImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNs
dWRlICJhcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkv
dmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAi
YXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1
ZGUgImV4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9kZWZhdWx0cy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVl
cmNvbm5lY3Rpb24vY2xpZW50L2ZsYWdkZWZzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvZmxhZ2RlZnMu
aAppbmRleCA1NjRlMGU5NWY5MGM3YzU1ZmM5MzI1ZjkzZmQwMmM3ZTk4NjU1MjRmLi41MWY5Yzlh
NDI1NWE0YWFlM2ZhZjQ4MGY2NTViMGE3NzVhY2Y0MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9j
bGllbnQvZmxhZ2RlZnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvZmxhZ2RlZnMuaApAQCAtMTks
MjAgKzE5LDI5IEBAIGV4dGVybiBjb25zdCB1aW50MTZfdCBrRGVmYXVsdFNlcnZlclBvcnQ7ICAv
LyBGcm9tIGRlZmF1bHRzLltofGNjXQogLy8gaGVhZGVyIGZpbGUgc28gdGhhdCB0aGV5IGNhbiBi
ZSBzaGFyZWQgYWNyb3NzIHRoZSBkaWZmZXJlbnQgbWFpbi5jYydzCiAvLyBmb3IgZWFjaCBwbGF0
Zm9ybS4KIAotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNzYWdlIik7
Ci1ERUZJTkVfYm9vbChhdXRvY29ubmVjdCwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAg
ICAgIkNvbm5lY3QgdG8gdGhlIHNlcnZlciB3aXRob3V0IHVzZXIgIgotICAgICAgICAgICAgImlu
dGVydmVudGlvbi4iKTsKLURFRklORV9zdHJpbmcoc2VydmVyLCAibG9jYWxob3N0IiwgIlRoZSBz
ZXJ2ZXIgdG8gY29ubmVjdCB0by4iKTsKLURFRklORV9pbnQocG9ydCwKLSAgICAgICAgICAga0Rl
ZmF1bHRTZXJ2ZXJQb3J0LAotICAgICAgICAgICAiVGhlIHBvcnQgb24gd2hpY2ggdGhlIHNlcnZl
ciBpcyBsaXN0ZW5pbmcuIik7Ci1ERUZJTkVfYm9vbCgKK1dFQlJUQ19ERUZJTkVfYm9vbChoZWxw
LCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChhdXRv
Y29ubmVjdCwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAi
Q29ubmVjdCB0byB0aGUgc2VydmVyIHdpdGhvdXQgdXNlciAiCisgICAgICAgICAgICAgICAgICAg
ImludGVydmVudGlvbi4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHNlcnZlciwgImxvY2FsaG9z
dCIsICJUaGUgc2VydmVyIHRvIGNvbm5lY3QgdG8uIik7CitXRUJSVENfREVGSU5FX2ludChwb3J0
LAorICAgICAgICAgICAgICAgICAga0RlZmF1bHRTZXJ2ZXJQb3J0LAorICAgICAgICAgICAgICAg
ICAgIlRoZSBwb3J0IG9uIHdoaWNoIHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nLiIpOworV0VCUlRD
X0RFRklORV9ib29sKAogICAgIGF1dG9jYWxsLAogICAgIGZhbHNlLAogICAgICJDYWxsIHRoZSBm
aXJzdCBhdmFpbGFibGUgb3RoZXIgY2xpZW50IG9uICIKICAgICAidGhlIHNlcnZlciB3aXRob3V0
IHVzZXIgaW50ZXJ2ZW50aW9uLiAgTm90ZTogdGhpcyBmbGFnIHNob3VsZCBvbmx5IGJlIHNldCAi
CiAgICAgInRvIHRydWUgb24gb25lIG9mIHRoZSB0d28gY2xpZW50cy4iKTsKIAorV0VCUlRDX0RF
RklORV9zdHJpbmcoCisgICAgZm9yY2VfZmllbGR0cmlhbHMsCisgICAgIiIsCisgICAgIkZpZWxk
IHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlcy4gVGhpcyBmbGFnIHNwZWNpZmll
cyB0aGUgZmllbGQgIgorICAgICJ0cmlhbHMgaW4gZWZmZWN0LiBFLmcuIHJ1bm5pbmcgd2l0aCAi
CisgICAgIi0tZm9yY2VfZmllbGR0cmlhbHM9V2ViUlRDLUZvb0ZlYXR1cmUvRW5hYmxlZC8gIgor
ICAgICJ3aWxsIGFzc2lnbiB0aGUgZ3JvdXAgRW5hYmxlZCB0byBmaWVsZCB0cmlhbCBXZWJSVEMt
Rm9vRmVhdHVyZS4gTXVsdGlwbGUgIgorICAgICJ0cmlhbHMgYXJlIHNlcGFyYXRlZCBieSBcIi9c
IiIpOworCiAjZW5kaWYgIC8vIEVYQU1QTEVTX1BFRVJDT05ORUNUSU9OX0NMSUVOVF9GTEFHREVG
U19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2xpbnV4L21haW4uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlv
bi9jbGllbnQvbGludXgvbWFpbi5jYwppbmRleCA1MDE3OWM0YmE1NTEwY2YxZWQ3YTNjMmVkYTZm
YTAwYWY3ZGM3YjE4Li42YzM0NjgzZDJlYTkxZDYxMDUxZTc4ZGUwOWU3ZmRkMmU5ZTM4NDAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFt
cGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbGludXgvbWFpbi5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9j
bGllbnQvbGludXgvbWFpbi5jYwpAQCAtMTcsNiArMTcsOCBAQAogCiAjaW5jbHVkZSAicnRjX2Jh
c2Uvc3NsYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgorI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCisjaW5jbHVkZSAidGVzdC9m
aWVsZF90cmlhbC5oIgogCiBjbGFzcyBDdXN0b21Tb2NrZXRTZXJ2ZXIgOiBwdWJsaWMgcnRjOjpQ
aHlzaWNhbFNvY2tldFNlcnZlciB7CiAgcHVibGljOgpAQCAtNzUsNiArNzcsMTEgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgIHJldHVybiAwOwogICB9CiAKKyAgd2Vi
cnRjOjp0ZXN0OjpWYWxpZGF0ZUZpZWxkVHJpYWxzU3RyaW5nT3JEaWUoRkxBR19mb3JjZV9maWVs
ZHRyaWFscyk7CisgIC8vIEluaXRGaWVsZFRyaWFsc0Zyb21TdHJpbmcgc3RvcmVzIHRoZSBjaGFy
Kiwgc28gdGhlIGNoYXIgYXJyYXkgbXVzdCBvdXRsaXZlCisgIC8vIHRoZSBhcHBsaWNhdGlvbi4K
KyAgd2VicnRjOjpmaWVsZF90cmlhbDo6SW5pdEZpZWxkVHJpYWxzRnJvbVN0cmluZyhGTEFHX2Zv
cmNlX2ZpZWxkdHJpYWxzKTsKKwogICAvLyBBYm9ydCBpZiB0aGUgdXNlciBzcGVjaWZpZXMgYSBw
b3J0IHRoYXQgaXMgb3V0c2lkZSB0aGUgYWxsb3dlZAogICAvLyByYW5nZSBbMSwgNjU1MzVdLgog
ICBpZiAoKEZMQUdfcG9ydCA8IDEpIHx8IChGTEFHX3BvcnQgPiA2NTUzNSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3Bl
ZXJjb25uZWN0aW9uL2NsaWVudC9saW51eC9tYWluX3duZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9s
aW51eC9tYWluX3duZC5jYwppbmRleCA1MmIwZDg4NTIzYzNjYTgyM2RjOTg3MDc0MTI1MzhkYjBk
ZjlhYWU1Li4yZjc3NzdkMWVlYTFlNmUzOGQxYmI5MGZlOWY1ZjYwMjM4NjIyOTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9w
ZWVyY29ubmVjdGlvbi9jbGllbnQvbGludXgvbWFpbl93bmQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xp
ZW50L2xpbnV4L21haW5fd25kLmNjCkBAIC0xOCwxMSArMTgsOCBAQAogI2luY2x1ZGUgImV4YW1w
bGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9kZWZhdWx0cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmd1dGlscy5oIgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRl
L2xpYnl1di9jb252ZXJ0X2Zyb20uaCIKIAotdXNpbmcgcnRjOjpzcHJpbnRmbjsKLQogbmFtZXNw
YWNlIHsKIAogLy8KQEAgLTE1MCw3ICsxNDcsNyBAQCBHdGtNYWluV25kOjpHdGtNYWluV25kKGNv
bnN0IGNoYXIqIHNlcnZlciwKICAgICAgIGF1dG9jb25uZWN0XyhhdXRvY29ubmVjdCksCiAgICAg
ICBhdXRvY2FsbF8oYXV0b2NhbGwpIHsKICAgY2hhciBidWZmZXJbMTBdOwotICBzcHJpbnRmbihi
dWZmZXIsIHNpemVvZihidWZmZXIpLCAiJWkiLCBwb3J0KTsKKyAgc25wcmludGYoYnVmZmVyLCBz
aXplb2YoYnVmZmVyKSwgIiVpIiwgcG9ydCk7CiAgIHBvcnRfID0gYnVmZmVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxl
cy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9tYWluLmNj
CmluZGV4IDI1ZGRlMWVmNjU4NWQ4MjU3OGE3OWY0NTQ1MmJlYTRiNmQ2MTZmZWYuLmY5MmU2MDZj
MzM4MTE5ZTIyZTQzYjExMzU3ZmZiOGJhYzIzMGFhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2Ns
aWVudC9tYWluLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9tYWluLmNjCkBAIC0xNiw2ICsxNiw4
IEBACiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3dpbjMyc29ja2V0aW5pdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3dpbjMyc29ja2V0c2VydmVy
LmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKKyNp
bmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAKIGludCBQQVNDQUwgd1dpbk1haW4oSElOU1RB
TkNFIGluc3RhbmNlLAogICAgICAgICAgICAgICAgICAgICBISU5TVEFOQ0UgcHJldl9pbnN0YW5j
ZSwKQEAgLTM2LDYgKzM4LDExIEBAIGludCBQQVNDQUwgd1dpbk1haW4oSElOU1RBTkNFIGluc3Rh
bmNlLAogICAgIHJldHVybiAwOwogICB9CiAKKyAgd2VicnRjOjp0ZXN0OjpWYWxpZGF0ZUZpZWxk
VHJpYWxzU3RyaW5nT3JEaWUoRkxBR19mb3JjZV9maWVsZHRyaWFscyk7CisgIC8vIEluaXRGaWVs
ZFRyaWFsc0Zyb21TdHJpbmcgc3RvcmVzIHRoZSBjaGFyKiwgc28gdGhlIGNoYXIgYXJyYXkgbXVz
dCBvdXRsaXZlCisgIC8vIHRoZSBhcHBsaWNhdGlvbi4KKyAgd2VicnRjOjpmaWVsZF90cmlhbDo6
SW5pdEZpZWxkVHJpYWxzRnJvbVN0cmluZyhGTEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsKKwogICAv
LyBBYm9ydCBpZiB0aGUgdXNlciBzcGVjaWZpZXMgYSBwb3J0IHRoYXQgaXMgb3V0c2lkZSB0aGUg
YWxsb3dlZAogICAvLyByYW5nZSBbMSwgNjU1MzVdLgogICBpZiAoKEZMQUdfcG9ydCA8IDEpIHx8
IChGTEFHX3BvcnQgPiA2NTUzNSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9tYWlu
X3duZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1w
bGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9tYWluX3duZC5jYwppbmRleCAzYWQyNDg4NDNhODE1
YjBhOTAwNTY4MmU0ZmYwMWEzZDA0Yzk4OTljLi44ZWRkMWU3NmYzNTAzMTRkZTAzMDQwMzVhMTkz
Y2QyMTAxYTc5Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbWFpbl93bmQuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVl
cmNvbm5lY3Rpb24vY2xpZW50L21haW5fd25kLmNjCkBAIC0xNywxNCArMTcsMTEgQEAKICNpbmNs
dWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
dXRpbHMuaCIKICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvY29u
dmVydF9hcmdiLmgiCiAKIEFUT00gTWFpblduZDo6d25kX2NsYXNzXyA9IDA7CiBjb25zdCB3Y2hh
cl90IE1haW5XbmQ6OmtDbGFzc05hbWVbXSA9IEwiV2ViUlRDX01haW5XbmQiOwogCi11c2luZyBy
dGM6OnNwcmludGZuOwotCiBuYW1lc3BhY2UgewogCiBjb25zdCBjaGFyIGtDb25uZWN0aW5nW10g
PSAiQ29ubmVjdGluZy4uLiAiOwpAQCAtODYsOCArODMsOCBAQCBNYWluV25kOjpNYWluV25kKGNv
bnN0IGNoYXIqIHNlcnZlciwKICAgICAgIHNlcnZlcl8oc2VydmVyKSwKICAgICAgIGF1dG9fY29u
bmVjdF8oYXV0b19jb25uZWN0KSwKICAgICAgIGF1dG9fY2FsbF8oYXV0b19jYWxsKSB7Ci0gIGNo
YXIgYnVmZmVyWzEwXSA9IHswfTsKLSAgc3ByaW50Zm4oYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwg
IiVpIiwgcG9ydCk7CisgIGNoYXIgYnVmZmVyWzEwXTsKKyAgc25wcmludGYoYnVmZmVyLCBzaXpl
b2YoYnVmZmVyKSwgIiVpIiwgcG9ydCk7CiAgIHBvcnRfID0gYnVmZmVyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9w
ZWVyY29ubmVjdGlvbi9jbGllbnQvcGVlcl9jb25uZWN0aW9uX2NsaWVudC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9u
L2NsaWVudC9wZWVyX2Nvbm5lY3Rpb25fY2xpZW50LmNjCmluZGV4IGJiNzlkMTY3OTExMTk4ZGM1
NTYxMzlkOTQ2MGJkNzMxYjM3Y2M3NzguLmYxNzNlNDI3OTNhMjVhZWQ4Yzc3MmZlYzRjNTcyMWIx
Yzg2ZDgyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9wZWVyX2Nvbm5lY3Rpb25fY2xp
ZW50LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4
YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9wZWVyX2Nvbm5lY3Rpb25fY2xpZW50LmNjCkBA
IC0xNCwxNCArMTQsMTEgQEAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0aGVscGVycy5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKICNpZmRlZiBXSU4zMgogI2luY2x1
ZGUgInJ0Y19iYXNlL3dpbjMyc29ja2V0c2VydmVyLmgiCiAjZW5kaWYKIAotdXNpbmcgcnRjOjpz
cHJpbnRmbjsKLQogbmFtZXNwYWNlIHsKIAogLy8gVGhpcyBpcyBvdXIgbWFnaWNhbCBoYW5ndXAg
c2lnbmFsLgpAQCAtMTM2LDcgKzEzMyw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25DbGllbnQ6OkRv
Q29ubmVjdCgpIHsKICAgaGFuZ2luZ19nZXRfLnJlc2V0KENyZWF0ZUNsaWVudFNvY2tldChzZXJ2
ZXJfYWRkcmVzc18uaXBhZGRyKCkuZmFtaWx5KCkpKTsKICAgSW5pdFNvY2tldFNpZ25hbHMoKTsK
ICAgY2hhciBidWZmZXJbMTAyNF07Ci0gIHNwcmludGZuKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciks
ICJHRVQgL3NpZ25faW4/JXMgSFRUUC8xLjBcclxuXHJcbiIsCisgIHNucHJpbnRmKGJ1ZmZlciwg
c2l6ZW9mKGJ1ZmZlciksICJHRVQgL3NpZ25faW4/JXMgSFRUUC8xLjBcclxuXHJcbiIsCiAgICAg
ICAgICAgIGNsaWVudF9uYW1lXy5jX3N0cigpKTsKICAgb25jb25uZWN0X2RhdGFfID0gYnVmZmVy
OwogCkBAIC0xNTgsOSArMTU1LDkgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbkNsaWVudDo6U2VuZFRv
UGVlcihpbnQgcGVlcl9pZCwgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKICAgICByZXR1
cm4gZmFsc2U7CiAKICAgY2hhciBoZWFkZXJzWzEwMjRdOwotICBzcHJpbnRmbihoZWFkZXJzLCBz
aXplb2YoaGVhZGVycyksCisgIHNucHJpbnRmKGhlYWRlcnMsIHNpemVvZihoZWFkZXJzKSwKICAg
ICAgICAgICAgIlBPU1QgL21lc3NhZ2U/cGVlcl9pZD0laSZ0bz0laSBIVFRQLzEuMFxyXG4iCi0g
ICAgICAgICAgICJDb250ZW50LUxlbmd0aDogJWlcclxuIgorICAgICAgICAgICAiQ29udGVudC1M
ZW5ndGg6ICV6dVxyXG4iCiAgICAgICAgICAgICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cclxu
IgogICAgICAgICAgICAiXHJcbiIsCiAgICAgICAgICAgIG15X2lkXywgcGVlcl9pZCwgbWVzc2Fn
ZS5sZW5ndGgoKSk7CkBAIC0xOTAsNyArMTg3LDcgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbkNsaWVu
dDo6U2lnbk91dCgpIHsKIAogICAgIGlmIChteV9pZF8gIT0gLTEpIHsKICAgICAgIGNoYXIgYnVm
ZmVyWzEwMjRdOwotICAgICAgc3ByaW50Zm4oYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKKyAgICAg
IHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCiAgICAgICAgICAgICAgICAiR0VUIC9z
aWduX291dD9wZWVyX2lkPSVpIEhUVFAvMS4wXHJcblxyXG4iLCBteV9pZF8pOwogICAgICAgb25j
b25uZWN0X2RhdGFfID0gYnVmZmVyOwogICAgICAgcmV0dXJuIENvbm5lY3RDb250cm9sU29ja2V0
KCk7CkBAIC0yMzcsNyArMjM0LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkNsaWVudDo6T25Db25u
ZWN0KHJ0Yzo6QXN5bmNTb2NrZXQqIHNvY2tldCkgewogCiB2b2lkIFBlZXJDb25uZWN0aW9uQ2xp
ZW50OjpPbkhhbmdpbmdHZXRDb25uZWN0KHJ0Yzo6QXN5bmNTb2NrZXQqIHNvY2tldCkgewogICBj
aGFyIGJ1ZmZlclsxMDI0XTsKLSAgc3ByaW50Zm4oYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIkdF
VCAvd2FpdD9wZWVyX2lkPSVpIEhUVFAvMS4wXHJcblxyXG4iLAorICBzbnByaW50ZihidWZmZXIs
IHNpemVvZihidWZmZXIpLCAiR0VUIC93YWl0P3BlZXJfaWQ9JWkgSFRUUC8xLjBcclxuXHJcbiIs
CiAgICAgICAgICAgIG15X2lkXyk7CiAgIGludCBsZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmxl
bihidWZmZXIpKTsKICAgaW50IHNlbnQgPSBzb2NrZXQtPlNlbmQoYnVmZmVyLCBsZW4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBs
ZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL21haW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9zZXJ2ZXIvbWFpbi5j
YwppbmRleCAwNzViNmVhMmQzZjdhMDZmNzE4Njg3NmIzNzE1NWUyZTVlNGRkNTQyLi41MjE0Y2E1
Y2E1NTExNTRjZjkyYTE5NTVmZWNlMTAwZDFhNDE3MTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9z
ZXJ2ZXIvbWFpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9zZXJ2ZXIvbWFpbi5jYwpAQCAtMTgsNyArMTgs
MTkgQEAKICNpbmNsdWRlICJleGFtcGxlcy9wZWVyY29ubmVjdGlvbi9zZXJ2ZXIvZGF0YV9zb2Nr
ZXQuaCIKICNpbmNsdWRlICJleGFtcGxlcy9wZWVyY29ubmVjdGlvbi9zZXJ2ZXIvcGVlcl9jaGFu
bmVsLmgiCiAjaW5jbHVkZSAiZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL3V0aWxzLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvZmxhZ3MuaCIKICNpbmNsdWRlICJydGNfdG9vbHMvc2ltcGxl
X2NvbW1hbmRfbGluZV9wYXJzZXIuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVk
ZS9maWVsZF90cmlhbC5oIgorI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKKworV0VCUlRD
X0RFRklORV9zdHJpbmcoCisgICAgZm9yY2VfZmllbGR0cmlhbHMsCisgICAgIiIsCisgICAgIkZp
ZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlcy4gVGhpcyBmbGFnIHNwZWNp
ZmllcyB0aGUgZmllbGQgIgorICAgICJ0cmlhbHMgaW4gZWZmZWN0LiBFLmcuIHJ1bm5pbmcgd2l0
aCAiCisgICAgIi0tZm9yY2VfZmllbGR0cmlhbHM9V2ViUlRDLUZvb0ZlYXR1cmUvRW5hYmxlZC8g
IgorICAgICJ3aWxsIGFzc2lnbiB0aGUgZ3JvdXAgRW5hYmxlZCB0byBmaWVsZCB0cmlhbCBXZWJS
VEMtRm9vRmVhdHVyZS4gTXVsdGlwbGUgIgorICAgICJ0cmlhbHMgYXJlIHNlcGFyYXRlZCBieSBc
Ii9cIiIpOwogCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhDb25uZWN0aW9ucyA9IChGRF9TRVRT
SVpFIC0gMik7CiAKQEAgLTYyLDYgKzc0LDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBh
cmd2W10pIHsKICAgICByZXR1cm4gMDsKICAgfQogCisgIHdlYnJ0Yzo6dGVzdDo6VmFsaWRhdGVG
aWVsZFRyaWFsc1N0cmluZ09yRGllKEZMQUdfZm9yY2VfZmllbGR0cmlhbHMpOworICAvLyBJbml0
RmllbGRUcmlhbHNGcm9tU3RyaW5nIHN0b3JlcyB0aGUgY2hhciosIHNvIHRoZSBjaGFyIGFycmF5
IG11c3Qgb3V0bGl2ZQorICAvLyB0aGUgYXBwbGljYXRpb24uCisgIHdlYnJ0Yzo6ZmllbGRfdHJp
YWw6OkluaXRGaWVsZFRyaWFsc0Zyb21TdHJpbmcoRkxBR19mb3JjZV9maWVsZHRyaWFscyk7CisK
ICAgaW50IHBvcnQgPSBzdHJ0b2woKHBhcnNlci5HZXRGbGFnKCJwb3J0IikpLmNfc3RyKCksIE5V
TEwsIDEwKTsKIAogICAvLyBBYm9ydCBpZiB0aGUgdXNlciBzcGVjaWZpZXMgYSBwb3J0IHRoYXQg
aXMgb3V0c2lkZSB0aGUgYWxsb3dlZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL3BlZXJf
Y2hhbm5lbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4
YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZlci9wZWVyX2NoYW5uZWwuY2MKaW5kZXggNmVmMDhk
N2IyMWQ3M2I2ZjIyOTlhZGI2OWNlNzJiMmZhZjJlZjg1MC4uYjIzYjdlMDRlMjFkNmJiYzBiOWNl
NWQyMjA3NWUwNzM1ZmRmMTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL3BlZXJfY2hh
bm5lbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9l
eGFtcGxlcy9wZWVyY29ubmVjdGlvbi9zZXJ2ZXIvcGVlcl9jaGFubmVsLmNjCkBAIC0xOSw5ICsx
OSw2IEBACiAjaW5jbHVkZSAiZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL2RhdGFfc29j
a2V0LmgiCiAjaW5jbHVkZSAiZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL3V0aWxzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
c3RyaW5ndXRpbHMuaCIKLQotdXNpbmcgcnRjOjpzcHJpbnRmbjsKIAogLy8gU2V0IHRvIHRoZSBw
ZWVyIGlkIG9mIHRoZSBvcmlnaW5hdG9yIHdoZW4gbWVzc2FnZXMgYXJlIGJlaW5nCiAvLyBleGNo
YW5nZWQgYmV0d2VlbiBwZWVycywgYnV0IHNldCB0byB0aGUgaWQgb2YgdGhlIHJlY2VpdmluZyBw
ZWVyCkBAIC05OCw3ICs5NSw3IEBAIHN0ZDo6c3RyaW5nIENoYW5uZWxNZW1iZXI6OkdldEVudHJ5
KCkgY29uc3QgewogCiAgIC8vIG5hbWUsIDExLWRpZ2l0IGludCwgMS1kaWdpdCBib29sLCBuZXds
aW5lLCBudWxsCiAgIGNoYXIgZW50cnlba01heE5hbWVMZW5ndGggKyAxNV07Ci0gIHNwcmludGZu
KGVudHJ5LCBzaXplb2YoZW50cnkpLCAiJXMsJWQsJWRcbiIsCisgIHNucHJpbnRmKGVudHJ5LCBz
aXplb2YoZW50cnkpLCAiJXMsJWQsJWRcbiIsCiAgICAgICAgICAgIG5hbWVfLnN1YnN0cigwLCBr
TWF4TmFtZUxlbmd0aCkuY19zdHIoKSwgaWRfLCBjb25uZWN0ZWRfKTsKICAgcmV0dXJuIGVudHJ5
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvZXhhbXBsZXMvc3R1bnByb2Jlci9tYWluLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvc3R1bnByb2Jlci9tYWluLmNjCmluZGV4IDQ1YTc2
ZjUyMzc0M2U2ZmFmYTFiZTg1ZjQ0OWJhZGZhM2M3ZjY4NTUuLjZkYTk2ZTQ2OTk4MmYwNWU3M2Jh
YWIyYjM0OGEyMTI0ZjU0YTQ3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3N0dW5wcm9iZXIvbWFpbi5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9zdHVucHJvYmVy
L21haW4uY2MKQEAgLTE0LDcgKzE0LDcgQEAKIAogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxt
ZW1vcnk+Ci0jaW5jbHVkZSA8c3N0cmVhbT4gIC8vIG5vLXByZXN1Ym1pdC1jaGVjayBUT0RPKHdl
YnJ0Yzo4OTgyKQorI2luY2x1ZGUgPHNzdHJlYW0+CiAKICNpbmNsdWRlICJwMnAvYmFzZS9iYXNp
Y3BhY2tldHNvY2tldGZhY3RvcnkuaCIKICNpbmNsdWRlICJwMnAvc3R1bnByb2Jlci9zdHVucHJv
YmVyLmgiCkBAIC0zMywxNiArMzMsMjEgQEAKIHVzaW5nIHN0dW5wcm9iZXI6OlN0dW5Qcm9iZXI7
CiB1c2luZyBzdHVucHJvYmVyOjpBc3luY0NhbGxiYWNrOwogCi1ERUZJTkVfYm9vbChoZWxwLCBm
YWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKLURFRklORV9pbnQoaW50ZXJ2YWwsIDEwLCAi
SW50ZXJ2YWwgb2YgY29uc2VjdXRpdmUgc3R1biBwaW5ncyBpbiBtaWxsaXNlY29uZHMiKTsKLURF
RklORV9ib29sKHNoYXJlZF9zb2NrZXQsIGZhbHNlLCAiU2hhcmUgc29ja2V0IG1vZGUgZm9yIGRp
ZmZlcmVudCByZW1vdGUgSVBzIik7Ci1ERUZJTkVfaW50KHBpbmdzX3Blcl9pcCwKLSAgICAgICAg
ICAgMTAsCi0gICAgICAgICAgICJOdW1iZXIgb2YgY29uc2VjdXRpdmUgc3R1biBwaW5ncyB0byBz
ZW5kIGZvciBlYWNoIElQIik7Ci1ERUZJTkVfaW50KHRpbWVvdXQsCi0gICAgICAgICAgIDEwMDAs
Ci0gICAgICAgICAgICJNaWxsaXNlY29uZHMgb2Ygd2FpdCBhZnRlciB0aGUgbGFzdCBwaW5nIHNl
bnQgYmVmb3JlIGV4aXRpbmciKTsKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVGSU5FX2Jvb2wo
aGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2ludChp
bnRlcnZhbCwKKyAgICAgICAgICAgICAgICAgIDEwLAorICAgICAgICAgICAgICAgICAgIkludGVy
dmFsIG9mIGNvbnNlY3V0aXZlIHN0dW4gcGluZ3MgaW4gbWlsbGlzZWNvbmRzIik7CitXRUJSVENf
REVGSU5FX2Jvb2woc2hhcmVkX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAiU2hhcmUgc29ja2V0IG1vZGUgZm9yIGRpZmZlcmVudCByZW1vdGUg
SVBzIik7CitXRUJSVENfREVGSU5FX2ludChwaW5nc19wZXJfaXAsCisgICAgICAgICAgICAgICAg
ICAxMCwKKyAgICAgICAgICAgICAgICAgICJOdW1iZXIgb2YgY29uc2VjdXRpdmUgc3R1biBwaW5n
cyB0byBzZW5kIGZvciBlYWNoIElQIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICB0aW1lb3V0
LAorICAgIDEwMDAsCisgICAgIk1pbGxpc2Vjb25kcyBvZiB3YWl0IGFmdGVyIHRoZSBsYXN0IHBp
bmcgc2VudCBiZWZvcmUgZXhpdGluZyIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgc2Vy
dmVycywKICAgICAic3R1bi5sLmdvb2dsZS5jb206MTkzMDIsc3R1bjEubC5nb29nbGUuY29tOjE5
MzAyLHN0dW4yLmwuZ29vZ2xlLmNvbToxOTMwMiIsCiAgICAgIkNvbW1hIHNlcGFyYXRlZCBTVFVO
IHNlcnZlciBhZGRyZXNzZXMgd2l0aCBwb3J0cyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci9yZWFkX2F1
dGhfZmlsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4
YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU1NDY1ZTgy
ZmU4MzM5YjAxZDUyN2NmNDY0MmUwM2EwNmJmNjYyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1cm5zZXJ2ZXIv
cmVhZF9hdXRoX2ZpbGUuY2MKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAx
OCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKwor
I2luY2x1ZGUgImV4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKKworbmFtZXNwYWNlIHdlYnJ0Y19leGFtcGxlcyB7
CisKK3N0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gUmVhZEF1dGhGaWxlKHN0ZDo6
aXN0cmVhbSogcykgeworICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5hbWVf
dG9fa2V5OworICBmb3IgKHN0ZDo6c3RyaW5nIGxpbmU7IHN0ZDo6Z2V0bGluZSgqcywgbGluZSk7
KSB7CisgICAgY29uc3Qgc2l6ZV90IHNlcCA9IGxpbmUuZmluZCgnPScpOworICAgIGlmIChzZXAg
PT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgICBjb250aW51ZTsKKyAgICBjaGFyIGJ1ZlszMl07
CisgICAgc2l6ZV90IGxlbiA9IHJ0Yzo6aGV4X2RlY29kZShidWYsIHNpemVvZihidWYpLCBsaW5l
LmRhdGEoKSArIHNlcCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5l
LnNpemUoKSAtIHNlcCAtIDEpOworICAgIGlmIChsZW4gPiAwKSB7CisgICAgICBuYW1lX3RvX2tl
eS5lbXBsYWNlKGxpbmUuc3Vic3RyKDAsIHNlcCksIHN0ZDo6c3RyaW5nKGJ1ZiwgbGVuKSk7Cisg
ICAgfQorICB9CisgIHJldHVybiBuYW1lX3RvX2tleTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0Y19leGFtcGxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci9yZWFkX2F1dGhfZmlsZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci9y
ZWFkX2F1dGhfZmlsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMTM5Yzk5MjQwY2FlOWQxYTFmN2JhNDgzZTU5
NWMzMzFmMWMwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy90dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlLmgKQEAg
LTAsMCArMSwyNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBFWEFNUExFU19UVVJO
U0VSVkVSX1JFQURfQVVUSF9GSUxFX0hfCisjZGVmaW5lIEVYQU1QTEVTX1RVUk5TRVJWRVJfUkVB
RF9BVVRIX0ZJTEVfSF8KKworI2luY2x1ZGUgPGlzdHJlYW0+CisjaW5jbHVkZSA8bWFwPgorI2lu
Y2x1ZGUgPHN0cmluZz4KKworbmFtZXNwYWNlIHdlYnJ0Y19leGFtcGxlcyB7CisKK3N0ZDo6bWFw
PHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gUmVhZEF1dGhGaWxlKHN0ZDo6aXN0cmVhbSogcyk7
CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGNfZXhhbXBsZXMKKworI2VuZGlmICAvLyBFWEFNUExF
U19UVVJOU0VSVkVSX1JFQURfQVVUSF9GSUxFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy90dXJuc2VydmVyL3JlYWRfYXV0
aF9maWxlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci9yZWFkX2F1dGhfZmlsZV91bml0dGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YTZmMzMyYzI3YTU3NjY5ZjRmMmI0NTU5MmVjZTNmMzJhYzZiYzIyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvdHVybnNlcnZlci9yZWFkX2F1dGhfZmlsZV91bml0dGVzdC5jYwpAQCAtMCwwICsxLDQ0
IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUg
ImV4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0
ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGNfZXhhbXBsZXMgeworCitURVNUKFJlYWRBdXRoRmls
ZSwgSGFuZGxlc0VtcHR5RmlsZSkgeworICBzdGQ6OmlzdHJpbmdzdHJlYW0gZW1wdHk7CisgIGF1
dG8gbWFwID0gUmVhZEF1dGhGaWxlKCZlbXB0eSk7CisgIEVYUEVDVF9UUlVFKG1hcC5lbXB0eSgp
KTsKK30KKworVEVTVChSZWFkQXV0aEZpbGUsIFJlY29nbml6ZXNWYWxpZFVzZXIpIHsKKyAgc3Rk
Ojppc3RyaW5nc3RyZWFtIGZpbGUoImZvbz1kZWFkYmVhZlxuIik7CisgIGF1dG8gbWFwID0gUmVh
ZEF1dGhGaWxlKCZmaWxlKTsKKyAgQVNTRVJUX05FKG1hcC5maW5kKCJmb28iKSwgbWFwLmVuZCgp
KTsKKyAgRVhQRUNUX0VRKG1hcFsiZm9vIl0sICJceGRlXHhhZFx4YmVceGFmIik7Cit9CisKK1RF
U1QoUmVhZEF1dGhGaWxlLCBFbXB0eVZhbHVlRm9ySW52YWxpZEhleCkgeworICBzdGQ6OmlzdHJp
bmdzdHJlYW0gZmlsZSgKKyAgICAgICJmb289ZGVhZGJlYWZcbiIKKyAgICAgICJiYXI9eHh4eGlu
dmFsaWRoZXhcbiIKKyAgICAgICJiYXo9Y2FmZVxuIik7CisgIGF1dG8gbWFwID0gUmVhZEF1dGhG
aWxlKCZmaWxlKTsKKyAgQVNTRVJUX05FKG1hcC5maW5kKCJmb28iKSwgbWFwLmVuZCgpKTsKKyAg
RVhQRUNUX0VRKG1hcFsiZm9vIl0sICJceGRlXHhhZFx4YmVceGFmIik7CisgIEVYUEVDVF9FUSht
YXAuZmluZCgiYmFyIiksIG1hcC5lbmQoKSk7CisgIEFTU0VSVF9ORShtYXAuZmluZCgiYmF6Iiks
IG1hcC5lbmQoKSk7CisgIEVYUEVDVF9FUShtYXBbImJheiJdLCAiXHhjYVx4ZmUiKTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0Y19leGFtcGxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci90dXJuc2Vy
dmVyX21haW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9l
eGFtcGxlcy90dXJuc2VydmVyL3R1cm5zZXJ2ZXJfbWFpbi5jYwppbmRleCBlZGMwYjY5OWI0Yzc2
MjhkMzU0NTFlOThmMGE4ZTlmOTQzZjM3MzZjLi44NTBmYzJkOWM4OWEyMTViOWUxMmU5ODgwNTg1
YWMwNDE5Yjk0ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9leGFtcGxlcy90dXJuc2VydmVyL3R1cm5zZXJ2ZXJfbWFpbi5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy90dXJuc2Vy
dmVyL3R1cm5zZXJ2ZXJfbWFpbi5jYwpAQCAtOCwzOSArOCw0NCBAQAogICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAK
LSNpbmNsdWRlIDxpb3N0cmVhbT4gIC8vIE5PTElOVAorI2luY2x1ZGUgPGZzdHJlYW0+CisjaW5j
bHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHN0cmluZz4KIAorI2lu
Y2x1ZGUgImV4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuaCIKICNpbmNsdWRlICJw
MnAvYmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3RvcnkuaCIKICNpbmNsdWRlICJwMnAvYmFzZS90
dXJuc2VydmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmN1ZHBzb2NrZXQuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9vcHRpb25zZmlsZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2Vu
Y29kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogCi1zdGF0aWMgY29uc3QgY2hh
ciBrU29mdHdhcmVbXSA9ICJsaWJqaW5nbGUgVHVyblNlcnZlciI7CituYW1lc3BhY2UgeworY29u
c3QgY2hhciBrU29mdHdhcmVbXSA9ICJsaWJqaW5nbGUgVHVyblNlcnZlciI7CiAKIGNsYXNzIFR1
cm5GaWxlQXV0aCA6IHB1YmxpYyBjcmlja2V0OjpUdXJuQXV0aEludGVyZmFjZSB7CiAgcHVibGlj
OgotICBleHBsaWNpdCBUdXJuRmlsZUF1dGgoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpIDogZmls
ZV8ocGF0aCkgeyBmaWxlXy5Mb2FkKCk7IH0KKyAgZXhwbGljaXQgVHVybkZpbGVBdXRoKHN0ZDo6
bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gbmFtZV90b19rZXkpCisgICAgICA6IG5hbWVf
dG9fa2V5XyhzdGQ6Om1vdmUobmFtZV90b19rZXkpKSB7fQorCiAgIHZpcnR1YWwgYm9vbCBHZXRL
ZXkoY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiByZWFsbSwKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
Zyoga2V5KSB7CiAgICAgLy8gRmlsZSBpcyBzdG9yZWQgYXMgbGluZXMgb2YgPHVzZXJuYW1lPj08
SEExPi4KICAgICAvLyBHZW5lcmF0ZSBIQTEgdmlhICJlY2hvIC1uICI8dXNlcm5hbWU+OjxyZWFs
bT46PHBhc3N3b3JkPiIgfCBtZDVzdW0iCi0gICAgc3RkOjpzdHJpbmcgaGV4OwotICAgIGJvb2wg
cmV0ID0gZmlsZV8uR2V0U3RyaW5nVmFsdWUodXNlcm5hbWUsICZoZXgpOwotICAgIGlmIChyZXQp
IHsKLSAgICAgIGNoYXIgYnVmWzMyXTsKLSAgICAgIHNpemVfdCBsZW4gPSBydGM6OmhleF9kZWNv
ZGUoYnVmLCBzaXplb2YoYnVmKSwgaGV4KTsKLSAgICAgICprZXkgPSBzdGQ6OnN0cmluZyhidWYs
IGxlbik7Ci0gICAgfQotICAgIHJldHVybiByZXQ7CisgICAgYXV0byBpdCA9IG5hbWVfdG9fa2V5
Xy5maW5kKHVzZXJuYW1lKTsKKyAgICBpZiAoaXQgPT0gbmFtZV90b19rZXlfLmVuZCgpKQorICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICprZXkgPSBpdC0+c2Vjb25kOworICAgIHJldHVybiB0cnVl
OwogICB9CiAKICBwcml2YXRlOgotICBydGM6Ok9wdGlvbnNGaWxlIGZpbGVfOworICBjb25zdCBz
dGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5hbWVfdG9fa2V5XzsKIH07CiAKK30g
IC8vIG5hbWVzcGFjZQorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgIGlm
IChhcmdjICE9IDUpIHsKICAgICBzdGQ6OmNlcnIgPDwgInVzYWdlOiB0dXJuc2VydmVyIGludC1h
ZGRyIGV4dC1pcCByZWFsbSBhdXRoLWZpbGUiCkBAIC03MCw3ICs3NSwxMSBAQCBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgIH0KIAogICBjcmlja2V0OjpUdXJuU2VydmVyIHNl
cnZlcihtYWluKTsKLSAgVHVybkZpbGVBdXRoIGF1dGgoYXJndls0XSk7CisgIHN0ZDo6ZnN0cmVh
bSBhdXRoX2ZpbGUoYXJndls0XSwgc3RkOjpmc3RyZWFtOjppbik7CisKKyAgVHVybkZpbGVBdXRo
IGF1dGgoYXV0aF9maWxlLmlzX29wZW4oKQorICAgICAgICAgICAgICAgICAgICAgICAgPyB3ZWJy
dGNfZXhhbXBsZXM6OlJlYWRBdXRoRmlsZSgmYXV0aF9maWxlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgOiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+KCkpOwogICBzZXJ2ZXIu
c2V0X3JlYWxtKGFyZ3ZbM10pOwogICBzZXJ2ZXIuc2V0X3NvZnR3YXJlKGtTb2Z0d2FyZSk7CiAg
IHNlcnZlci5zZXRfYXV0aF9ob29rKCZhdXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3VuaXR5cGx1Z2luL3NpbXBsZV9w
ZWVyX2Nvbm5lY3Rpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9leGFtcGxlcy91bml0eXBsdWdpbi9zaW1wbGVfcGVlcl9jb25uZWN0aW9uLmNjCmluZGV4
IDM2ZTE5MzdlYWQ3ZDkyYzRlMTEyNTZkMTc2ODY1N2UzYjdmYzI2NWUuLmJmNmE2ODI3YjAzMDcx
Y2Y2NjQ4YjdhMWYyOTQ4YmY0ODE1NjUxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3VuaXR5cGx1Z2luL3NpbXBsZV9wZWVy
X2Nvbm5lY3Rpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvdW5pdHlwbHVnaW4vc2ltcGxlX3BlZXJfY29ubmVjdGlvbi5jYwpAQCAt
MTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUg
ImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNs
dWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisj
aW5jbHVkZSAiYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAi
YXBpL3ZpZGVvc291cmNlcHJveHkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxk
ZWNvZGVyZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGVuY29kZXJm
YWN0b3J5LmgiCkBAIC00NDgsNyArNDQ5LDggQEAgdm9pZCBTaW1wbGVQZWVyQ29ubmVjdGlvbjo6
QWRkU3RyZWFtcyhib29sIGF1ZGlvX29ubHkpIHsKIAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OmpuaTo6QW5kcm9pZFZpZGVvVHJhY2tTb3VyY2U+IHNvdXJjZSgKICAgICAgICAgbmV3
IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDx3ZWJydGM6OmpuaTo6QW5kcm9pZFZpZGVvVHJhY2tTb3Vy
Y2U+KAotICAgICAgICAgICAgZ19zaWduYWxpbmdfdGhyZWFkLmdldCgpLCBlbnYsIGZhbHNlKSk7
CisgICAgICAgICAgICBnX3NpZ25hbGluZ190aHJlYWQuZ2V0KCksIGVudiwgLyogaXNfc2NyZWVu
Y2FzdD0gKi8gZmFsc2UsCisgICAgICAgICAgICAvKiBhbGlnbl90aW1lc3RhbXBzPSAqLyB0cnVl
KSk7CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja1NvdXJjZVByb3h5
PiBwcm94eV9zb3VyY2UgPQogICAgICAgICB3ZWJydGM6OlZpZGVvVHJhY2tTb3VyY2VQcm94eTo6
Q3JlYXRlKGdfc2lnbmFsaW5nX3RocmVhZC5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3dvcmtlcl90aHJlYWQuZ2V0KCksIHNvdXJjZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9pbmZy
YS9jb25maWcvY3EuY2ZnIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvaW5mcmEvY29uZmlnL2NxLmNmZwppbmRleCBjN2I1ZWY5MjNiOGFkZTQyNjY3NzNiMWQzOTA4
Y2VjZjUxYmM0NzQzLi4xYzBmMDIyOGY4MTFkNGRjMTc0YjM4M2Q5MDZmNGMzYjA1Y2YzNGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9pbmZy
YS9jb25maWcvY3EuY2ZnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2luZnJhL2NvbmZpZy9jcS5jZmcKQEAgLTM2LDcgKzM2LDYgQEAgdmVyaWZpZXJzIHsK
ICAgICAgIGJ1aWxkZXJzIHsgbmFtZTogImlvc19hcm02NF9yZWwiIH0KICAgICAgIGJ1aWxkZXJz
IHsgbmFtZTogImlvc19kYmciIH0KICAgICAgIGJ1aWxkZXJzIHsgbmFtZTogImlvc19yZWwiIH0K
LSAgICAgIGJ1aWxkZXJzIHsgbmFtZTogImlvczMyX3NpbV9pb3M5X2RiZyIgfQogICAgICAgYnVp
bGRlcnMgeyBuYW1lOiAiaW9zNjRfc2ltX2lvczlfZGJnIiB9CiAgICAgICBidWlsZGVycyB7IG5h
bWU6ICJpb3M2NF9zaW1faW9zMTBfZGJnIiB9CiAgICAgICBidWlsZGVycyB7IG5hbWU6ICJpb3Nf
YXBpX2ZyYW1ld29yayIgfQpAQCAtNjMsNyArNjIsMTIgQEAgdmVyaWZpZXJzIHsKICAgICAgIGJ1
aWxkZXJzIHsgbmFtZTogIm1hY19jaHJvbWl1bV9jb21waWxlIiB9CiAgICAgICBidWlsZGVycyB7
IG5hbWU6ICJtYWNfY29tcGlsZV9kYmciIH0KICAgICAgIGJ1aWxkZXJzIHsgbmFtZTogIm1hY19y
ZWwiIH0KLSAgICAgIGJ1aWxkZXJzIHsgbmFtZTogInByZXN1Ym1pdCIgfQorICAgICAgYnVpbGRl
cnMgeworICAgICAgICBuYW1lOiAicHJlc3VibWl0IgorICAgICAgICAjIFByZXN1Ym1pdCBidWls
ZGVyIHNob3VsZCBiZSByZS1ydW4gZXZlcnkgdGltZSBDUSBpcyB0cmlnZ2VyZWQKKyAgICAgICAg
IyBmb3IgbGFzdCBtaW51dGUgbGludCwgT1dORVJTLCBldGMgY2hlY2tzLgorICAgICAgICBkaXNh
YmxlX3JldXNlOiB0cnVlCisgICAgICB9CiAgICAgICBidWlsZGVycyB7IG5hbWU6ICJ3aW5fYXNh
biIgfQogICAgICAgYnVpbGRlcnMgeyBuYW1lOiAid2luX2Nocm9taXVtX2NvbXBpbGUiIH0KICAg
ICAgIGJ1aWxkZXJzIHsgbmFtZTogIndpbl9jbGFuZ19kYmciIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL0JVSUxELmdu
CmluZGV4IDM4NzExOTNiYWRjZDdmNjgxMDc3ZWQ3MDI5ODgwMWIwZGY1MWYwM2QuLjU3NTk1MmMz
MTVmOWMzMTgyMDU0Yzk5ODcyMzdjYWEzOWNmNWQyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvQlVJTEQuZ24KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9CVUlMRC5nbgpA
QCAtNDIsNiArNDIsNyBAQCBydGNfc291cmNlX3NldCgicnRjX2V2ZW50X2xvZ19hcGkiKSB7CiAg
ICAgIi4uL3J0Y19iYXNlOnB0cl91dGlsIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBw
cm92ZWQiLAogICAgICIuLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIH0KIApAQCAtNTMsNyArNTQsNiBA
QCBydGNfc291cmNlX3NldCgicnRjX3N0cmVhbV9jb25maWciKSB7CiAKICAgZGVwcyA9IFsKICAg
ICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4u
L2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgXQogfQpAQCAtODcsNiArODcs
NyBAQCBydGNfc291cmNlX3NldCgicnRjX2V2ZW50X2F1ZGlvIikgewogICAgICI6cnRjX2V2ZW50
X2xvZ19hcGkiLAogICAgICI6cnRjX3N0cmVhbV9jb25maWciLAogICAgICIuLi9tb2R1bGVzL2F1
ZGlvX2NvZGluZzphdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnIiwKKyAgICAiLi4vcnRjX2Jh
c2U6Y2hlY2tzIiwKICAgICAiLi4vcnRjX2Jhc2U6cHRyX3V0aWwiLAogICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCkBAIC0xMzAsNiArMTMxLDcgQEAgcnRj
X3NvdXJjZV9zZXQoInJ0Y19ldmVudF9ydHBfcnRjcCIpIHsKICAgICAiOnJ0Y19ldmVudF9sb2df
YXBpIiwKICAgICAiLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi9tb2R1bGVzL3J0cF9ydGNw
OnJ0cF9ydGNwX2Zvcm1hdCIsCisgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0
Y19iYXNlOnB0cl91dGlsIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAog
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLApAQCAtMTQ3LDQwICsx
NDksNjIgQEAgcnRjX3NvdXJjZV9zZXQoInJ0Y19ldmVudF92aWRlbyIpIHsKICAgZGVwcyA9IFsK
ICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKICAgICAiOnJ0Y19zdHJlYW1fY29uZmlnIiwKKyAg
ICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vcnRjX2Jhc2U6cHRyX3V0aWwiLAogICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiB9CiAKKyMgVE9E
TyhlbGFkYWxvbik6IEJyZWFrIGRvd24gaW50byAoMSkgZW5jb2RlciBhbmQgKDIpIGRlY29kZXI7
IHdlIGRvbid0IG5lZWQKKyMgdGhlIGRlY29kZXIgY29kZSBpbiB0aGUgV2ViUlRDIGxpYnJhcnks
IG9ubHkgaW4gdW5pdCB0ZXN0cyBhbmQgdG9vbHMuCiBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19l
dmVudF9sb2dfaW1wbF9lbmNvZGVyIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBzb3Vy
Y2VzID0gWwotICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVy
X2xlZ2FjeS5jYyIsCi0gICAgInJ0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2Vu
Y29kZXJfbGVnYWN5LmgiLAorICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGlu
Zy5jYyIsCisgICAgInJ0Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nLmgiLAorICAg
ICJydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuY2MiLAorICAgICJydGNfZXZl
bnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuaCIsCisgICAgInJ0Y19ldmVudF9sb2cvZW5j
b2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmNjIiwKKyAgICAicnRjX2V2ZW50X2xv
Zy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb24uaCIsCisgICAgInJ0Y19ldmVu
dF9sb2cvZW5jb2Rlci92YXJpbnQuY2MiLAorICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvdmFy
aW50LmgiLAogICBdCiAKICAgZGVmaW5lcyA9IFtdCiAKICAgZGVwcyA9IFsKLSAgICAiOmljZV9s
b2ciLAotICAgICI6cnRjX2V2ZW50X2F1ZGlvIiwKLSAgICAiOnJ0Y19ldmVudF9id2UiLAotICAg
ICI6cnRjX2V2ZW50X2xvZ19hcGkiLAotICAgICI6cnRjX2V2ZW50X2xvZ19pbXBsX291dHB1dCIs
Ci0gICAgIjpydGNfZXZlbnRfcGFjaW5nIiwKLSAgICAiOnJ0Y19ldmVudF9ydHBfcnRjcCIsCi0g
ICAgIjpydGNfZXZlbnRfdmlkZW8iLAotICAgICI6cnRjX3N0cmVhbV9jb25maWciLAotICAgICIu
Li9tb2R1bGVzL2F1ZGlvX2NvZGluZzphdWRpb19uZXR3b3JrX2FkYXB0b3IiLAotICAgICIuLi9t
b2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcjpyZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ii
LAotICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgICAgIi4uL3J0
Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5nczpzdHJpbmdzIiwKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiAKICAgaWYgKHJ0Y19lbmFi
bGVfcHJvdG9idWYpIHsKICAgICBkZWZpbmVzICs9IFsgIkVOQUJMRV9SVENfRVZFTlRfTE9HIiBd
Ci0gICAgZGVwcyArPSBbICI6cnRjX2V2ZW50X2xvZ19wcm90byIgXQorICAgIGRlcHMgKz0gWwor
ICAgICAgIjppY2VfbG9nIiwKKyAgICAgICI6cnRjX2V2ZW50X2F1ZGlvIiwKKyAgICAgICI6cnRj
X2V2ZW50X2J3ZSIsCisgICAgICAiOnJ0Y19ldmVudF9sb2cyX3Byb3RvIiwKKyAgICAgICI6cnRj
X2V2ZW50X2xvZ19hcGkiLAorICAgICAgIjpydGNfZXZlbnRfbG9nX2ltcGxfb3V0cHV0IiwKKyAg
ICAgICI6cnRjX2V2ZW50X2xvZ19wcm90byIsCisgICAgICAiOnJ0Y19ldmVudF9wYWNpbmciLAor
ICAgICAgIjpydGNfZXZlbnRfcnRwX3J0Y3AiLAorICAgICAgIjpydGNfZXZlbnRfdmlkZW8iLAor
ICAgICAgIjpydGNfc3RyZWFtX2NvbmZpZyIsCisgICAgICAiLi4vYXBpOmFycmF5X3ZpZXciLAor
ICAgICAgIi4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmF1ZGlvX25ldHdvcmtfYWRhcHRvciIsCisg
ICAgICAiLi4vbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3I6cmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yIiwKKyAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIs
CisgICAgXQorICAgIHNvdXJjZXMgKz0gWworICAgICAgInJ0Y19ldmVudF9sb2cvZW5jb2Rlci9y
dGNfZXZlbnRfbG9nX2VuY29kZXJfbGVnYWN5LmNjIiwKKyAgICAgICJydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5oIiwKKyAgICAgICJydGNfZXZlbnRf
bG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25ld19mb3JtYXQuY2MiLAorICAgICAg
InJ0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbmV3X2Zvcm1hdC5o
IiwKKyAgICBdCiAgIH0KIH0KIApAQCAtMjExLDggKzIzNSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFy
eSgicnRjX2V2ZW50X2xvZ19pbXBsX2Jhc2UiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjppY2VfbG9n
IiwKICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKLSAgICAiOnJ0Y19ldmVudF9sb2dfaW1wbF9l
bmNvZGVyIiwKLSAgICAiOnJ0Y19ldmVudF9sb2dfaW1wbF9vdXRwdXQiLAorICAgICIuLi9hcGk6
bGliamluZ2xlX2xvZ2dpbmdfYXBpIiwKICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi9ydGNfYmFzZTpydGNfdGFz
a19xdWV1ZSIsCkBAIC0yMjMsNyArMjQ2LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfZXZl
bnRfbG9nX2ltcGxfYmFzZSIpIHsKIAogICBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAg
IGRlZmluZXMgKz0gWyAiRU5BQkxFX1JUQ19FVkVOVF9MT0ciIF0KLSAgICBkZXBzICs9IFsgIjpy
dGNfZXZlbnRfbG9nX3Byb3RvIiBdCisgICAgZGVwcyArPSBbICI6cnRjX2V2ZW50X2xvZ19pbXBs
X2VuY29kZXIiIF0KICAgfQogfQogCkBAIC0yNDYsNiArMjY5LDcgQEAgcnRjX3NvdXJjZV9zZXQo
ImZha2VfcnRjX2V2ZW50X2xvZyIpIHsKIAogaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAg
cHJvdG9fbGlicmFyeSgicnRjX2V2ZW50X2xvZ19wcm90byIpIHsKKyAgICB2aXNpYmlsaXR5ID0g
WyAiKiIgXQogICAgIHNvdXJjZXMgPSBbCiAgICAgICAicnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRf
bG9nLnByb3RvIiwKICAgICBdCkBAIC0yNTMsNiArMjc3LDcgQEAgaWYgKHJ0Y19lbmFibGVfcHJv
dG9idWYpIHsKICAgfQogCiAgIHByb3RvX2xpYnJhcnkoInJ0Y19ldmVudF9sb2cyX3Byb3RvIikg
eworICAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgICAgc291cmNlcyA9IFsKICAgICAgICJydGNf
ZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnByb3RvIiwKICAgICBdCkBAIC0yNjIsOCArMjg3LDYg
QEAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNf
ZXZlbnRfbG9nX3BhcnNlciIpIHsKICAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICAgIHNvdXJj
ZXMgPSBbCi0gICAgICAicnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5jYyIsCi0g
ICAgICAicnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5oIiwKICAgICAgICJydGNf
ZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5jYyIsCiAgICAgICAicnRjX2V2ZW50
X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlcl9uZXcuaCIsCiAgICAgICAicnRjX2V2ZW50X2xvZy9y
dGNfZXZlbnRfcHJvY2Vzc29yLmgiLApAQCAtMjc0LDEzICsyOTcsMTMgQEAgaWYgKHJ0Y19lbmFi
bGVfcHJvdG9idWYpIHsKICAgICAgICI6cnRjX2V2ZW50X2J3ZSIsCiAgICAgICAiOnJ0Y19ldmVu
dF9sb2cyX3Byb3RvIiwKICAgICAgICI6cnRjX2V2ZW50X2xvZ19hcGkiLAorICAgICAgIjpydGNf
ZXZlbnRfbG9nX2ltcGxfZW5jb2RlciIsCiAgICAgICAiOnJ0Y19ldmVudF9sb2dfcHJvdG8iLAog
ICAgICAgIjpydGNfc3RyZWFtX2NvbmZpZyIsCi0gICAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAg
ICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAgICAgIi4uL2Nh
bGw6dmlkZW9fc3RyZWFtX2FwaSIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6YXVk
aW9fbmV0d29ya19hZGFwdG9yIiwKLSAgICAgICIuLi9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlcjp0cmFuc3BvcnRfZmVlZGJhY2siLAorICAgICAgIi4uL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL3J0cDp0cmFuc3BvcnRfZmVlZGJhY2siLAogICAgICAgIi4uL21vZHVsZXMvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yOnJlbW90ZV9iaXRyYXRlX2VzdGltYXRvciIsCiAgICAgICAi
Li4vbW9kdWxlcy9ydHBfcnRjcCIsCiAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRj
cF9mb3JtYXQiLApAQCAtMjk4LDYgKzMyMSw5IEBAIGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7
CiAgICAgICBhc3NlcnQocnRjX2VuYWJsZV9wcm90b2J1ZikKICAgICAgIGRlZmluZXMgPSBbICJF
TkFCTEVfUlRDX0VWRU5UX0xPRyIgXQogICAgICAgc291cmNlcyA9IFsKKyAgICAgICAgInJ0Y19l
dmVudF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nX3VuaXR0ZXN0LmNjIiwKKyAgICAgICAgInJ0
Y19ldmVudF9sb2cvZW5jb2Rlci9kZWx0YV9lbmNvZGluZ191bml0dGVzdC5jYyIsCisgICAgICAg
ICJydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbl91bml0
dGVzdC5jYyIsCiAgICAgICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19l
bmNvZGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgInJ0Y19ldmVudF9sb2cvb3V0cHV0L3J0Y19l
dmVudF9sb2dfb3V0cHV0X2ZpbGVfdW5pdHRlc3QuY2MiLAogICAgICAgICAicnRjX2V2ZW50X2xv
Zy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0LmNjIiwKQEAgLTMwOSw2ICszMzUsNyBAQCBpZiAocnRj
X2VuYWJsZV9wcm90b2J1ZikgewogICAgICAgICAiOmljZV9sb2ciLAogICAgICAgICAiOnJ0Y19l
dmVudF9hdWRpbyIsCiAgICAgICAgICI6cnRjX2V2ZW50X2J3ZSIsCisgICAgICAgICI6cnRjX2V2
ZW50X2xvZzJfcHJvdG8iLAogICAgICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKICAgICAgICAg
IjpydGNfZXZlbnRfbG9nX2ltcGxfYmFzZSIsCiAgICAgICAgICI6cnRjX2V2ZW50X2xvZ19pbXBs
X2VuY29kZXIiLApAQCAtMzMyLDYgKzM1OSw3IEBAIGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7
CiAgICAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAgICIvL3Rlc3RpbmcvZ3Rl
c3QiLAogICAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAg
ICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAg
ICAgIF0KICAgICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewogICAg
ICAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIENocm9taXVtIENsYW5nIHBsdWdpbiAo
YnVncy53ZWJydGMub3JnLzE2MykuCkBAIC0zNjIsNDkgKzM5MCw2IEBAIGlmIChydGNfZW5hYmxl
X3Byb3RvYnVmKSB7CiAgICAgICB9CiAgICAgfQogICB9Ci0KLSAgaWYgKHJ0Y19pbmNsdWRlX3Rl
c3RzKSB7Ci0gICAgcnRjX2V4ZWN1dGFibGUoInJ0Y19ldmVudF9sb2cydGV4dCIpIHsKLSAgICAg
IHRlc3Rvbmx5ID0gdHJ1ZQotICAgICAgc291cmNlcyA9IFsKLSAgICAgICAgInJ0Y19ldmVudF9s
b2cvcnRjX2V2ZW50X2xvZzJ0ZXh0LmNjIiwKLSAgICAgIF0KLSAgICAgIGRlcHMgPSBbCi0gICAg
ICAgICI6cnRjX2V2ZW50X2xvZ19hcGkiLAotICAgICAgICAiOnJ0Y19ldmVudF9sb2dfcGFyc2Vy
IiwKLSAgICAgICAgIi4uLzp3ZWJydGNfY29tbW9uIiwKLSAgICAgICAgIi4uL2NhbGw6dmlkZW9f
c3RyZWFtX2FwaSIsCi0gICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1h
dCIsCi0gICAgICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAotICAgICAgICAiLi4vcnRjX2Jhc2U6
cHJvdG9idWZfdXRpbHMiLAotICAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAotICAgICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAotCi0gICAgICAgICMgVE9ETyhr
d2liZXJnKTogUmVtb3ZlIHRoaXMgZGVwZW5kZW5jeS4KLSAgICAgICAgIi4uL2FwaS9hdWRpb19j
b2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCi0gICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2NvZGlu
ZzphdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnIiwKLSAgICAgICAgIi4uL21vZHVsZXMvcnRw
X3J0Y3AiLAotICAgICAgXQotICAgICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2Ns
YW5nKSB7Ci0gICAgICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xh
bmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KLSAgICAgICAgc3VwcHJlc3NlZF9jb25m
aWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2NsYW5nOmZpbmRfYmFkX2NvbnN0cnVjdHMiIF0KLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLSAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7Ci0gICAgcnRjX2V4
ZWN1dGFibGUoInJ0Y19ldmVudF9sb2cyc3RhdHMiKSB7Ci0gICAgICB0ZXN0b25seSA9IHRydWUK
LSAgICAgIHNvdXJjZXMgPSBbCi0gICAgICAgICJydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cy
c3RhdHMuY2MiLAotICAgICAgXQotICAgICAgZGVwcyA9IFsKLSAgICAgICAgIjpydGNfZXZlbnRf
bG9nX2FwaSIsCi0gICAgICAgICI6cnRjX2V2ZW50X2xvZ19wcm90byIsCi0gICAgICAgICIuLi9y
dGNfYmFzZTpjaGVja3MiLAotICAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAotICAgICAgXQotICAgIH0KLSAgfQogfQogCiBydGNfc291cmNlX3NldCgiaWNlX2xvZyIpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmcuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5j
b2Rlci9ibG9iX2VuY29kaW5nLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMTM3ZjEzZmMxYTQwMmY2ZDgwODM4
N2E3NmE0MDk0OTQ1ODVmZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9i
X2VuY29kaW5nLmNjCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKwor
I2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmcuaCIK
KworI2luY2x1ZGUgPGFsZ29yaXRobT4KKworI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9lbmNvZGVyL3ZhcmludC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKK3N0ZDo6c3RyaW5nIEVuY29kZUJsb2JzKGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiYgYmxvYnMpIHsKKyAgUlRDX0RDSEVDSyghYmxvYnMuZW1wdHkoKSk7
CisKKyAgc2l6ZV90IHJlc3VsdF9sZW5ndGhfYm91bmQgPSBrTWF4VmFySW50TGVuZ3RoQnl0ZXMg
KiBibG9icy5zaXplKCk7CisgIGZvciAoY29uc3QgYXV0byYgYmxvYiA6IGJsb2JzKSB7CisgICAg
Ly8gUHJvdmlkaW5nIGFuIGlucHV0IHNvIGxvbmcgdGhhdCBpdCB3b3VsZCBjYXVzZSBhIHdyYXAt
YXJvdW5kIGlzIGFuIGVycm9yLgorICAgIFJUQ19EQ0hFQ0tfR0UocmVzdWx0X2xlbmd0aF9ib3Vu
ZCArIGJsb2IubGVuZ3RoKCksIHJlc3VsdF9sZW5ndGhfYm91bmQpOworICAgIHJlc3VsdF9sZW5n
dGhfYm91bmQgKz0gYmxvYi5sZW5ndGgoKTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsK
KyAgcmVzdWx0LnJlc2VydmUocmVzdWx0X2xlbmd0aF9ib3VuZCk7CisKKyAgLy8gRmlyc3QsIGVu
Y29kZSBhbGwgb2YgdGhlIGxlbmd0aHMuCisgIGZvciAoYWJzbDo6c3RyaW5nX3ZpZXcgYmxvYiA6
IGJsb2JzKSB7CisgICAgcmVzdWx0ICs9IEVuY29kZVZhckludChibG9iLmxlbmd0aCgpKTsKKyAg
fQorCisgIC8vIFNlY29uZCwgZW5jb2RlIHRoZSBhY3R1YWwgYmxvYnMuCisgIGZvciAoYWJzbDo6
c3RyaW5nX3ZpZXcgYmxvYiA6IGJsb2JzKSB7CisgICAgcmVzdWx0LmFwcGVuZChibG9iLmRhdGEo
KSwgYmxvYi5sZW5ndGgoKSk7CisgIH0KKworICBSVENfRENIRUNLX0xFKHJlc3VsdC5zaXplKCks
IHJlc3VsdF9sZW5ndGhfYm91bmQpOworICByZXR1cm4gcmVzdWx0OworfQorCitzdGQ6OnZlY3Rv
cjxhYnNsOjpzdHJpbmdfdmlldz4gRGVjb2RlQmxvYnMoYWJzbDo6c3RyaW5nX3ZpZXcgZW5jb2Rl
ZF9ibG9icywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbnVtX29mX2Jsb2JzKSB7CisgIGlmIChlbmNvZGVkX2Jsb2JzLmVtcHR5KCkpIHsKKyAgICBS
VENfTE9HKExTX1dBUk5JTkcpIDw8ICJDb3JydXB0IGlucHV0OyBlbXB0eSBpbnB1dC4iOworICAg
IHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4oKTsKKyAgfQorCisgIGlmIChu
dW1fb2ZfYmxvYnMgPT0gMHUpIHsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpCisgICAgICAgIDw8
ICJDb3JydXB0IGlucHV0OyBudW1iZXIgb2YgYmxvYnMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMC4i
OworICAgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4oKTsKKyAgfQorCisg
IHNpemVfdCByZWFkX2lkeCA9IDA7CisKKyAgLy8gUmVhZCB0aGUgbGVuZ3RocyBvZiBhbGwgYmxv
YnMuCisgIHN0ZDo6dmVjdG9yPHVpbnQ2NF90PiBsZW5ndGhzKG51bV9vZl9ibG9icyk7CisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX29mX2Jsb2JzOyArK2kpIHsKKyAgICBpZiAocmVhZF9p
ZHggPj0gZW5jb2RlZF9ibG9icy5sZW5ndGgoKSkgeworICAgICAgUlRDX0RDSEVDS19FUShyZWFk
X2lkeCwgZW5jb2RlZF9ibG9icy5sZW5ndGgoKSk7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcp
IDw8ICJDb3JydXB0IGlucHV0OyBleGNlc3NpdmUgbnVtYmVyIG9mIGJsb2JzLiI7CisgICAgICBy
ZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+KCk7CisgICAgfQorCisgICAgY29u
c3Qgc2l6ZV90IHJlYWRfYnl0ZXMgPQorICAgICAgICBEZWNvZGVWYXJJbnQoZW5jb2RlZF9ibG9i
cy5zdWJzdHIocmVhZF9pZHgpLCAmbGVuZ3Roc1tpXSk7CisgICAgaWYgKHJlYWRfYnl0ZXMgPT0g
MCkgeworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ29ycnVwdCBpbnB1dDsgdmFyaW50
IGRlY29kaW5nIGZhaWxlZC4iOworICAgICAgcmV0dXJuIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmlu
Z192aWV3PigpOworICAgIH0KKworICAgIHJlYWRfaWR4ICs9IHJlYWRfYnl0ZXM7CisKKyAgICAv
LyBOb3RlOiBJdCBtaWdodCBiZSB0aGF0IHJlYWRfaWR4ID09IGVuY29kZWRfYmxvYnMubGVuZ3Ro
KCksIGlmIHRoaXMKKyAgICAvLyBpcyB0aGUgbGFzdCBpdGVyYXRpb24sIGFuZCBhbGwgb2YgdGhl
IGJsb2JzIGFyZSB0aGUgZW1wdHkgc3RyaW5nLgorICAgIFJUQ19EQ0hFQ0tfTEUocmVhZF9pZHgs
IGVuY29kZWRfYmxvYnMubGVuZ3RoKCkpOworICB9CisKKyAgLy8gUmVhZCB0aGUgYmxvYnMgdGhl
bXNlbHZlcy4KKyAgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IGJsb2JzKG51bV9vZl9i
bG9icyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX29mX2Jsb2JzOyArK2kpIHsKKyAg
ICBpZiAocmVhZF9pZHggKyBsZW5ndGhzW2ldIDwgcmVhZF9pZHgpIHsgIC8vIFdyYXAtYXJvdW5k
IGRldGVjdGlvbi4KKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNvcnJ1cHQgaW5wdXQ7
IHVucmVhc29uYWJseSBsYXJnZSBibG9iIHNlcXVlbmNlLiI7CisgICAgICByZXR1cm4gc3RkOjp2
ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+KCk7CisgICAgfQorCisgICAgaWYgKHJlYWRfaWR4ICsg
bGVuZ3Roc1tpXSA+IGVuY29kZWRfYmxvYnMubGVuZ3RoKCkpIHsKKyAgICAgIFJUQ19MT0coTFNf
V0FSTklORykgPDwgIkNvcnJ1cHQgaW5wdXQ7IGJsb2Igc2l6ZXMgZXhjZWVkIGlucHV0IHNpemUu
IjsKKyAgICAgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4oKTsKKyAgICB9
CisKKyAgICBibG9ic1tpXSA9IGVuY29kZWRfYmxvYnMuc3Vic3RyKHJlYWRfaWR4LCBsZW5ndGhz
W2ldKTsKKyAgICByZWFkX2lkeCArPSBsZW5ndGhzW2ldOworICB9CisKKyAgaWYgKHJlYWRfaWR4
ICE9IGVuY29kZWRfYmxvYnMubGVuZ3RoKCkpIHsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8
ICJDb3JydXB0IGlucHV0OyB1bnJlY29nbml6ZWQgdHJhaWxlci4iOworICAgIHJldHVybiBzdGQ6
OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4oKTsKKyAgfQorCisgIHJldHVybiBibG9iczsKK30K
KworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxv
Yl9lbmNvZGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGluZy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMyYTEwZDI3N2Y3ZmQ2YWUxNzAzMGE3NzRhMDNlOGI3MWQ5NjBkOGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nLmgKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09E
RVJfQkxPQl9FTkNPRElOR19IXworI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RF
Ul9CTE9CX0VOQ09ESU5HX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9y
PgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisKK25hbWVzcGFjZSB3
ZWJydGMgeworCisvLyBFbmNvZGUvZGVjb2RlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncywgd2hvc2Ug
bGVuZ3RoIGlzIG5vdCBrbm93biB0byBiZQorLy8gZGlzY2VybmFibGUgZnJvbSB0aGUgYmxvYiBp
dHNlbGYgKGkuZS4gd2l0aG91dCBiZWluZyB0cmFuc21pdHRlZCBPT0IpLAorLy8gaW4gYSB3YXkg
dGhhdCB3b3VsZCBhbGxvdyB1cyB0byBzZXBhcmF0ZSB0aGVtIGFnYWluIG9uIHRoZSBkZWNvZGlu
ZyBzaWRlLgorLy8gVGhlIG51bWJlciBvZiBibG9icyBpcyBhc3N1bWVkIHRvIGJlIHRyYW5zbWl0
dGVkIE9PQi4gRm9yIGV4YW1wbGUsIGlmCisvLyBtdWx0aXBsZSBzZXF1ZW5jZXMgb2YgZGlmZmVy
ZW50IGJsb2JzIGFyZSBzZW50LCBidXQgYWxsIHNlcXVlbmNlcyBjb250YWluCisvLyB0aGUgc2Ft
ZSBudW1iZXIgb2YgYmxvYnMsIGl0IGlzIGJlbmVmaWNpYWwgdG8gbm90IGVuY29kZSB0aGUgbnVt
YmVyIG9mIGJsb2JzLgorLy8KKy8vIEVuY29kZUJsb2JzKCkgbXVzdCBiZSBnaXZlbiBhIG5vbi1l
bXB0eSB2ZWN0b3IuIFRoZSBibG9icyB0aGVtc2VsdmVzIG1heQorLy8gYmUgZXF1YWwgdG8gIiIs
IHRob3VnaC4KKy8vIEVuY29kZUJsb2JzKCkgbWF5IG5vdCBmYWlsLgorLy8gRW5jb2RlQmxvYnMo
KSBuZXZlciByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuCisvLworLy8gQ2FsbGluZyBEZWNvZGVC
bG9icygpIG9uIGFuIGVtcHR5IHN0cmluZywgb3Igd2l0aCB8bnVtX29mX2Jsb2JzfCBzZXQgdG8g
MCwKKy8vIGlzIGFuIGVycm9yLgorLy8gRGVjb2RlQmxvYnMoKSByZXR1cm5zIGFuIGVtcHR5IHZl
Y3RvciBpZiBpdCBmYWlscywgZS5nLiBkdWUgdG8gYSBtaXNtYXRjaAorLy8gYmV0d2VlbiB8bnVt
X29mX2Jsb2JzfCBhbmQgfGVuY29kZWRfYmxvYnN8LCB3aGljaCBjYW4gaGFwcGVuIGlmCisvLyB8
ZW5jb2RlZF9ibG9ic3wgaXMgY29ycnVwdGVkLgorLy8gV2hlbiBzdWNjZXNzZnVsLCBEZWNvZGVC
bG9icygpIHJldHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5nX3ZpZXcgb2JqZWN0cywKKy8vIHdoaWNo
IHJlZmVyIHRvIHRoZSBvcmlnaW5hbCBpbnB1dCAofGVuY29kZWRfYmxvYnN8KSwgYW5kIHRoZXJl
Zm9yZSBtYXkKKy8vIG5vdCBvdXRsaXZlIGl0LgorLy8KKy8vIE5vdGUgdGhhdCB0aGUgcmV0dXJu
ZWQgc3RkOjpzdHJpbmcgbWlnaHQgaGF2ZSBiZWVuIHJlc2VydmVkIGZvciBzaWduaWZpY2FudGx5
CisvLyBtb3JlIG1lbW9yeSB0aGFuIGl0IGVuZHMgdXAgdXNpbmcuIElmIHRoZSBjYWxsZXIgdG8g
RW5jb2RlQmxvYnMoKSBpbnRlbmRzCisvLyB0byBzdG9yZSB0aGUgcmVzdWx0IGxvbmctdGVybSwg
aGUgc2hvdWxkIGNvbnNpZGVyIHNocmlua190b19maXQoKS1pbmcgaXQuCitzdGQ6OnN0cmluZyBF
bmNvZGVCbG9icyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGJsb2JzKTsKK3N0ZDo6
dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PiBEZWNvZGVCbG9icyhhYnNsOjpzdHJpbmdfdmlldyBl
bmNvZGVkX2Jsb2JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBudW1fb2ZfYmxvYnMpOworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRp
ZiAgLy8gTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09ERVJfQkxPQl9FTkNPRElOR19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGluZ191bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmdfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQwOGUwZmVi
ODcwN2Y3NjEwNzM4YTliOWUyZGNkYmY1ODQxYWU3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmdfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSwxNTIgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvYmxvYl9lbmNvZGluZy5oIgorCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZl
Y3Rvcj4KKworI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3ZhcmludC5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIK
KwordXNpbmcgQ2hhclQgPSBzdGQ6OnN0cmluZzo6dmFsdWVfdHlwZTsKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CisKK25hbWVzcGFjZSB7CisKK3ZvaWQgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoY29u
c3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBibG9icykgeworICBSVENfRENIRUNLKCFibG9i
cy5lbXB0eSgpKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBlbmNvZGVkID0gRW5jb2RlQmxvYnMo
YmxvYnMpOworICBBU1NFUlRfRkFMU0UoZW5jb2RlZC5lbXB0eSgpKTsKKworICBjb25zdCBzdGQ6
OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4gZGVjb2RlZCA9CisgICAgICBEZWNvZGVCbG9icyhl
bmNvZGVkLCBibG9icy5zaXplKCkpOworCisgIEFTU0VSVF9FUShkZWNvZGVkLnNpemUoKSwgYmxv
YnMuc2l6ZSgpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZWNvZGVkLnNpemUoKTsgKytp
KSB7CisgICAgQVNTRVJUX0VRKGRlY29kZWRbaV0sIGJsb2JzW2ldKTsKKyAgfQorfQorCit2b2lk
IFRlc3RHcmFjZWZ1bEVycm9ySGFuZGxpbmcoYWJzbDo6c3RyaW5nX3ZpZXcgZW5jb2RlZF9ibG9i
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX29mX2Jsb2JzKSB7
CisgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PiBkZWNvZGVkID0KKyAgICAg
IERlY29kZUJsb2JzKGVuY29kZWRfYmxvYnMsIG51bV9vZl9ibG9icyk7CisgIEVYUEVDVF9UUlVF
KGRlY29kZWQuZW1wdHkoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitURVNUKEJsb2JFbmNv
ZGluZywgRW1wdHlCbG9iKSB7CisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKHsiIn0pOworfQor
CitURVNUKEJsb2JFbmNvZGluZywgU2luZ2xlQ2hhcmFjdGVyQmxvYikgeworICBUZXN0RW5jb2Rp
bmdBbmREZWNvZGluZyh7ImEifSk7Cit9CisKK1RFU1QoQmxvYkVuY29kaW5nLCBMb25nQmxvYikg
eworICBzdGQ6OnN0cmluZyBibG9iID0gIiI7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAw
MDAwOyArK2kpIHsKKyAgICBibG9iICs9IHN0ZDo6dG9fc3RyaW5nKGkgKyAxKSArICIgTWlzc2lz
c2lwcGlcbiI7CisgIH0KKyAgVGVzdEVuY29kaW5nQW5kRGVjb2Rpbmcoe2Jsb2J9KTsKK30KKwor
VEVTVChCbG9iRW5jb2RpbmcsIEJsb2JzT2ZWYXJpb3VzTGVuZ3RocykgeworICBjb25zdGV4cHIg
c2l6ZV90IGtKdW1wID0gMHhmMDMyZDsgIC8vIEFyYml0cmFyeS4KKyAgY29uc3RleHByIHNpemVf
dCBrTWF4ID0gMHhmZmZmZmY7ICAvLyBBcmJpdHJhcnkuCisKKyAgc3RkOjpzdHJpbmcgYmxvYjsK
KyAgYmxvYi5yZXNlcnZlKGtNYXgpOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga01heDsg
aSArPSBrSnVtcCkgeworICAgIGJsb2IuYXBwZW5kKGtKdW1wLCAneCcpOworICAgIFRlc3RFbmNv
ZGluZ0FuZERlY29kaW5nKHtibG9ifSk7CisgIH0KK30KKworVEVTVChCbG9iRW5jb2RpbmcsIE11
bHRpcGxlQmxvYnMpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGJsb2JzOworICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgYmxvYnMucHVzaF9iYWNrKHN0
ZDo6dG9fc3RyaW5nKGkgKyAxKSArICIgTWlzc2lzc2lwcGlcbiIpOworICB9CisgIFRlc3RFbmNv
ZGluZ0FuZERlY29kaW5nKGJsb2JzKTsKK30KKworVEVTVChCbG9iRW5jb2RpbmcsIERlY29kZUJs
b2JzSGFuZGxlc0Vycm9yc0dyYWNlZnVsbHlFbXB0eUlucHV0KSB7CisgIFRlc3RHcmFjZWZ1bEVy
cm9ySGFuZGxpbmcoIiIsIDEpOworfQorCitURVNUKEJsb2JFbmNvZGluZywgRGVjb2RlQmxvYnNI
YW5kbGVzRXJyb3JzR3JhY2VmdWxseVplcm9CbG9icykgeworICBjb25zdCBzdGQ6OnN0cmluZyBl
bmNvZGVkID0gRW5jb2RlQmxvYnMoeyJhIn0pOworICBBU1NFUlRfRkFMU0UoZW5jb2RlZC5lbXB0
eSgpKTsKKyAgVGVzdEdyYWNlZnVsRXJyb3JIYW5kbGluZyhlbmNvZGVkLCAwKTsKK30KKworVEVT
VChCbG9iRW5jb2RpbmcsIERlY29kZUJsb2JzSGFuZGxlc0Vycm9yc0dyYWNlZnVsbHlCbG9iTGVu
Z3RoVG9vU21hbGwpIHsKKyAgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IEVuY29kZUJsb2JzKHsiYWIi
fSk7CisgIEFTU0VSVF9GQUxTRShlbmNvZGVkLmVtcHR5KCkpOworICBBU1NFUlRfRVEoZW5jb2Rl
ZFswXSwgMHgwMik7CisgIGVuY29kZWRbMF0gPSAweDAxOworICBUZXN0R3JhY2VmdWxFcnJvckhh
bmRsaW5nKGVuY29kZWQsIDEpOworfQorCitURVNUKEJsb2JFbmNvZGluZywgRGVjb2RlQmxvYnNI
YW5kbGVzRXJyb3JzR3JhY2VmdWxseUJsb2JMZW5ndGhUb29MYXJnZSkgeworICBzdGQ6OnN0cmlu
ZyBlbmNvZGVkID0gRW5jb2RlQmxvYnMoeyJhIn0pOworICBBU1NFUlRfRkFMU0UoZW5jb2RlZC5l
bXB0eSgpKTsKKyAgQVNTRVJUX0VRKGVuY29kZWRbMF0sIDB4MDEpOworICBlbmNvZGVkWzBdID0g
MHgwMjsKKyAgVGVzdEdyYWNlZnVsRXJyb3JIYW5kbGluZyhlbmNvZGVkLCAxKTsKK30KKworVEVT
VChCbG9iRW5jb2RpbmcsCisgICAgIERlY29kZUJsb2JzSGFuZGxlc0Vycm9yc0dyYWNlZnVsbHlO
dW1iZXJPZkJsb2JzSW5jb3JyZWN0bHlIaWdoKSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiBibG9icyA9IHsiYSIsICJiIn07CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGVuY29kZWQg
PSBFbmNvZGVCbG9icyhibG9icyk7CisgIC8vIFRlc3QgZm9jdXMgLSB0d28gZW1wdHkgc3RyaW5n
cyBlbmNvZGVkLCBidXQgRGVjb2RlQmxvYnMoKSB0b2xkIHdheSBtb3JlCisgIC8vIGJsb2JzIGFy
ZSBpbiB0aGUgc3RyaW5ncyB0aGFuIGNvdWxkIGJlIGV4cGVjdGVkLgorICBUZXN0R3JhY2VmdWxF
cnJvckhhbmRsaW5nKGVuY29kZWQsIDEwMDApOworCisgIC8vIFRlc3Qgc2FuaXR5IC0gc2hvdyB0
aGF0IERlY29kZUJsb2JzKCkgd291bGQgaGF2ZSB3b3JrZWQgaWYgaXQgZ290IHRoZQorICAvLyBj
b3JyZWN0IGlucHV0LgorICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhibG9icyk7Cit9CisKK1RF
U1QoQmxvYkVuY29kaW5nLCBEZWNvZGVCbG9ic0hhbmRsZXNFcnJvcnNHcmFjZWZ1bGx5RGVmZWN0
aXZlVmFySW50KSB7CisgIHN0ZDo6c3RyaW5nIGRlZmVjdGl2ZV92YXJpbnQ7CisgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwga01heFZhckludExlbmd0aEJ5dGVzOyArK2kpIHsKKyAgICBBU1NFUlRf
TEUoa01heFZhckludExlbmd0aEJ5dGVzLCAweGZmdSk7CisgICAgZGVmZWN0aXZlX3ZhcmludCAr
PSBzdGF0aWNfY2FzdDxDaGFyVD4oc3RhdGljX2Nhc3Q8c2l6ZV90PigweDgwdSkgfCBpKTsKKyAg
fQorICBkZWZlY3RpdmVfdmFyaW50ICs9IDB4MDF1OworCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGRl
ZmVjdGl2ZV9lbmNvZGVkID0gZGVmZWN0aXZlX3ZhcmludCArICJ3aGF0ZXZlciI7CisKKyAgVGVz
dEdyYWNlZnVsRXJyb3JIYW5kbGluZyhkZWZlY3RpdmVfZW5jb2RlZCwgMSk7Cit9CisKK1RFU1Qo
QmxvYkVuY29kaW5nLCBEZWNvZGVCbG9ic0hhbmRsZXNFcnJvcnNHcmFjZWZ1bGx5TGVuZ3RoU3Vt
V3JhcEFyb3VuZCkgeworICBzdGQ6OnN0cmluZyBtYXhfc2l6ZV92YXJpbnQ7CisgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwga01heFZhckludExlbmd0aEJ5dGVzIC0gMTsgKytpKSB7CisgICAgbWF4
X3NpemVfdmFyaW50ICs9IDB4ZmZ1OworICB9CisgIG1heF9zaXplX3ZhcmludCArPSAweDdmdTsK
KworICBjb25zdCBzdGQ6OnN0cmluZyBkZWZlY3RpdmVfZW5jb2RlZCA9CisgICAgICBtYXhfc2l6
ZV92YXJpbnQgKyBtYXhfc2l6ZV92YXJpbnQgKyAid2hhdGV2ZXIiOworCisgIFRlc3RHcmFjZWZ1
bEVycm9ySGFuZGxpbmcoZGVmZWN0aXZlX2VuY29kZWQsIDIpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9kZWx0YV9lbmNvZGluZy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29kaW5nLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMzM0Yjk4ZDAw
MDliYWRmNDNkYWE0NTA1YTNkMGUzZmE5OWYzMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZW5jb2Rlci9kZWx0YV9lbmNvZGluZy5jYwpAQCAtMCwwICsxLDk3NCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgorICovCisKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9kZWx0
YV9lbmNvZGluZy5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVy
L3ZhcmludC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJp
Y3Mvc2FmZV9jb252ZXJzaW9ucy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7
CisKKy8vIFRPRE8oZWxhZGFsb24pOiBPbmx5IGJ1aWxkIHRoZSBkZWNvZGVyIGluIHRvb2xzIGFu
ZCB1bml0IHRlc3RzLgorCitib29sIGdfZm9yY2VfdW5zaWduZWRfZm9yX3Rlc3RpbmcgPSBmYWxz
ZTsKK2Jvb2wgZ19mb3JjZV9zaWduZWRfZm9yX3Rlc3RpbmcgPSBmYWxzZTsKKworc2l6ZV90IEJp
dHNUb0J5dGVzKHNpemVfdCBiaXRzKSB7CisgIHJldHVybiAoYml0cyAvIDgpICsgKGJpdHMgJSA4
ID4gMCA/IDEgOiAwKTsKK30KKworLy8gVE9ETyhlbGFkYWxvbik6IFJlcGxhY2UgYnkgc29tZXRo
aW5nIG1vcmUgZWZmaWNpZW50LgordWludDY0X3QgVW5zaWduZWRCaXRXaWR0aCh1aW50NjRfdCBp
bnB1dCwgYm9vbCB6ZXJvX3ZhbF9hc196ZXJvX3dpZHRoID0gZmFsc2UpIHsKKyAgaWYgKHplcm9f
dmFsX2FzX3plcm9fd2lkdGggJiYgaW5wdXQgPT0gMCkgeworICAgIHJldHVybiAwOworICB9CisK
KyAgdWludDY0X3Qgd2lkdGggPSAwOworICBkbyB7ICAvLyBpbnB1dCA9PSAwIC0+IHdpZHRoID09
IDEKKyAgICB3aWR0aCArPSAxOworICAgIGlucHV0ID4+PSAxOworICB9IHdoaWxlIChpbnB1dCAh
PSAwKTsKKyAgcmV0dXJuIHdpZHRoOworfQorCit1aW50NjRfdCBTaWduZWRCaXRXaWR0aCh1aW50
NjRfdCBtYXhfcG9zX21hZ25pdHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90
IG1heF9uZWdfbWFnbml0dWRlKSB7CisgIGNvbnN0IHVpbnQ2NF90IGJpdHdpZHRoX3BvcyA9IFVu
c2lnbmVkQml0V2lkdGgobWF4X3Bvc19tYWduaXR1ZGUsIHRydWUpOworICBjb25zdCB1aW50NjRf
dCBiaXR3aWR0aF9uZWcgPQorICAgICAgKG1heF9uZWdfbWFnbml0dWRlID4gMCkgPyBVbnNpZ25l
ZEJpdFdpZHRoKG1heF9uZWdfbWFnbml0dWRlIC0gMSwgdHJ1ZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogMDsKKyAgcmV0dXJuIDEgKyBzdGQ6Om1heChiaXR3aWR0aF9wb3MsIGJp
dHdpZHRoX25lZyk7Cit9CisKKy8vIFJldHVybiB0aGUgbWF4aW11bSBpbnRlZ2VyIG9mIGEgZ2l2
ZW4gYml0IHdpZHRoLgorLy8gRXhhbXBsZXM6CisvLyBNYXhVbnNpZ25lZFZhbHVlT2ZCaXRXaWR0
aCgxKSA9IDB4MDEKKy8vIE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKDYpID0gMHgzZgorLy8g
TWF4VW5zaWduZWRWYWx1ZU9mQml0V2lkdGgoOCkgPSAweGZmCisvLyBNYXhVbnNpZ25lZFZhbHVl
T2ZCaXRXaWR0aCgzMikgPSAweGZmZmZmZmZmCit1aW50NjRfdCBNYXhVbnNpZ25lZFZhbHVlT2ZC
aXRXaWR0aCh1aW50NjRfdCBiaXRfd2lkdGgpIHsKKyAgUlRDX0RDSEVDS19HRShiaXRfd2lkdGgs
IDEpOworICBSVENfRENIRUNLX0xFKGJpdF93aWR0aCwgNjQpOworICByZXR1cm4gKGJpdF93aWR0
aCA9PSA2NCkgPyBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogKChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwgYml0X3dp
ZHRoKSAtIDEpOworfQorCisvLyBDb21wdXRlcyB0aGUgZGVsdGEgYmV0d2VlbiB8cHJldmlvdXN8
IGFuZCB8Y3VycmVudHwsIHVuZGVyIHRoZSBhc3N1bXB0aW9uCisvLyB0aGF0IHdyYXAtYXJvdW5k
IG9jY3VycyBhZnRlciB8d2lkdGh8IGlzIGV4Y2VlZGVkLgordWludDY0X3QgVW5zaWduZWREZWx0
YSh1aW50NjRfdCBwcmV2aW91cywgdWludDY0X3QgY3VycmVudCwgdWludDY0X3QgYml0X21hc2sp
IHsKKyAgcmV0dXJuIChjdXJyZW50IC0gcHJldmlvdXMpICYgYml0X21hc2s7Cit9CisKKy8vIERl
dGVybWluZXMgdGhlIGVuY29kaW5nIHR5cGUgKGUuZy4gZml4ZWQtc2l6ZSBlbmNvZGluZykuCisv
LyBHaXZlbiBhbiBlbmNvZGluZyB0eXBlLCBtYXkgYWxzbyBkaXN0aW5ndWlzaCBiZXR3ZWVuIHNv
bWUgdmFyaWFudHMgb2YgaXQKKy8vIChlLmcuIHdoaWNoIGZpZWxkcyBvZiB0aGUgZml4ZWQtc2l6
ZSBlbmNvZGluZyBhcmUgZXhwbGljaXRseSBtZW50aW9uZWQgYnkKKy8vIHRoZSBoZWFkZXIsIGFu
ZCB3aGljaCBhcmUgaW1wbGljaXRseSBhc3N1bWVkIHRvIGhvbGQgY2VydGFpbiBkZWZhdWx0IHZh
bHVlcykuCitlbnVtIGNsYXNzIEVuY29kaW5nVHlwZSB7CisgIGtGaXhlZFNpemVVbnNpZ25lZERl
bHRhc05vRWFybHlXcmFwTm9PcHQgPSAwLAorICBrRml4ZWRTaXplU2lnbmVkRGVsdGFzRWFybHlX
cmFwQW5kT3B0U3VwcG9ydGVkID0gMSwKKyAga1Jlc2VydmVkMSA9IDIsCisgIGtSZXNlcnZlZDIg
PSAzLAorICBrTnVtYmVyT2ZFbmNvZGluZ1R5cGVzICAvLyBLZWVwIGxhc3QKK307CisKKy8vIFRo
ZSB3aWR0aCBvZiBlYWNoIGZpZWxkIGluIHRoZSBlbmNvZGluZyBoZWFkZXIuIE5vdGUgdGhhdCB0
aGlzIGlzIHRoZQorLy8gd2lkdGggaW4gY2FzZSB0aGUgZmllbGQgZXhpc3RzOyBub3QgYWxsIGZp
ZWxkcyBvY2N1ciBpbiBhbGwgZW5jb2RpbmcgdHlwZXMuCitjb25zdGV4cHIgc2l6ZV90IGtCaXRz
SW5IZWFkZXJGb3JFbmNvZGluZ1R5cGUgPSAyOworY29uc3RleHByIHNpemVfdCBrQml0c0luSGVh
ZGVyRm9yRGVsdGFXaWR0aEJpdHMgPSA2OworY29uc3RleHByIHNpemVfdCBrQml0c0luSGVhZGVy
Rm9yU2lnbmVkRGVsdGFzID0gMTsKK2NvbnN0ZXhwciBzaXplX3Qga0JpdHNJbkhlYWRlckZvclZh
bHVlc09wdGlvbmFsID0gMTsKK2NvbnN0ZXhwciBzaXplX3Qga0JpdHNJbkhlYWRlckZvclZhbHVl
V2lkdGhCaXRzID0gNjsKKworc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KEVuY29k
aW5nVHlwZTo6a051bWJlck9mRW5jb2RpbmdUeXBlcykgPD0KKyAgICAgICAgICAgICAgICAgIDEg
PDwga0JpdHNJbkhlYWRlckZvckVuY29kaW5nVHlwZSwKKyAgICAgICAgICAgICAgIk5vdCBhbGwg
ZW5jb2RpbmcgdHlwZXMgZml0LiIpOworCisvLyBEZWZhdWx0IHZhbHVlcyBmb3Igd2hlbiB0aGUg
ZW5jb2RpbmcgaGVhZGVyIGRvZXMgbm90IHNwZWNpZnkgZXhwbGljaXRseS4KK2NvbnN0ZXhwciBi
b29sIGtEZWZhdWx0U2lnbmVkRGVsdGFzID0gZmFsc2U7Citjb25zdGV4cHIgYm9vbCBrRGVmYXVs
dFZhbHVlc09wdGlvbmFsID0gZmFsc2U7Citjb25zdGV4cHIgdWludDY0X3Qga0RlZmF1bHRWYWx1
ZVdpZHRoQml0cyA9IDY0OworCisvLyBXcmFwIEJpdEJ1ZmZlcldyaXRlciBhbmQgZXh0ZW5kIGl0
cyBmdW5jdGlvbmFsaXR5IGJ5ICgxKSBrZWVwaW5nIHRyYWNrIG9mCisvLyB0aGUgbnVtYmVyIG9m
IGJpdHMgd3JpdHRlbiBhbmQgKDIpIG93bmluZyBpdHMgYnVmZmVyLgorY2xhc3MgQml0V3JpdGVy
IGZpbmFsIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEJpdFdyaXRlcihzaXplX3QgYnl0ZV9jb3Vu
dCkKKyAgICAgIDogYnVmZmVyXyhieXRlX2NvdW50LCAnXDAnKSwKKyAgICAgICAgYml0X3dyaXRl
cl8ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJmJ1ZmZlcl9bMF0pLCBidWZmZXJfLnNpemUo
KSksCisgICAgICAgIHdyaXR0ZW5fYml0c18oMCksCisgICAgICAgIHZhbGlkXyh0cnVlKSB7Cisg
ICAgUlRDX0RDSEVDS19HVChieXRlX2NvdW50LCAwKTsKKyAgfQorCisgIHZvaWQgV3JpdGVCaXRz
KHVpbnQ2NF90IHZhbCwgc2l6ZV90IGJpdF9jb3VudCkgeworICAgIFJUQ19EQ0hFQ0sodmFsaWRf
KTsKKyAgICBjb25zdCBib29sIHN1Y2Nlc3MgPSBiaXRfd3JpdGVyXy5Xcml0ZUJpdHModmFsLCBi
aXRfY291bnQpOworICAgIFJUQ19EQ0hFQ0soc3VjY2Vzcyk7CisgICAgd3JpdHRlbl9iaXRzXyAr
PSBiaXRfY291bnQ7CisgIH0KKworICB2b2lkIFdyaXRlQml0cyhjb25zdCBzdGQ6OnN0cmluZyYg
aW5wdXQpIHsKKyAgICBSVENfRENIRUNLKHZhbGlkXyk7CisgICAgZm9yIChzdGQ6OnN0cmluZzo6
dmFsdWVfdHlwZSBjIDogaW5wdXQpIHsKKyAgICAgIFdyaXRlQml0cyhjLCA4ICogc2l6ZW9mKHN0
ZDo6c3RyaW5nOjp2YWx1ZV90eXBlKSk7CisgICAgfQorICB9CisKKyAgLy8gUmV0dXJucyBldmVy
eXRoaW5nIHRoYXQgd2FzIHdyaXR0ZW4gc28gZmFyLgorICAvLyBOb3RoaW5nIG1vcmUgbWF5IGJl
IHdyaXR0ZW4gYWZ0ZXIgdGhpcyBpcyBjYWxsZWQuCisgIHN0ZDo6c3RyaW5nIEdldFN0cmluZygp
IHsKKyAgICBSVENfRENIRUNLKHZhbGlkXyk7CisgICAgdmFsaWRfID0gZmFsc2U7CisKKyAgICBi
dWZmZXJfLnJlc2l6ZShCaXRzVG9CeXRlcyh3cml0dGVuX2JpdHNfKSk7CisgICAgd3JpdHRlbl9i
aXRzXyA9IDA7CisKKyAgICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgICAgc3RkOjpzd2FwKGJ1ZmZl
cl8sIHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3Rk
OjpzdHJpbmcgYnVmZmVyXzsKKyAgcnRjOjpCaXRCdWZmZXJXcml0ZXIgYml0X3dyaXRlcl87Cisg
IC8vIE5vdGU6IENvdW50aW5nIGJpdHMgaW5zdGVhZCBvZiBieXRlcyB3cmFwcyBhcm91bmQgZWFy
bGllciB0aGFuIGl0IGhhcyB0bywKKyAgLy8gd2hpY2ggbWVhbnMgdGhlIG1heGltdW0gbGVuZ3Ro
IGlzIGxvd2VyIHRoYW4gaXQgY291bGQgYmUuIFdlIGRvbid0IGV4cGVjdAorICAvLyB0byBnbyBh
bnl3aGVyZSBuZWFyIHRoZSBsaW1pdCwgdGhvdWdoLCBzbyB0aGlzIGlzIGdvb2QgZW5vdWdoLgor
ICBzaXplX3Qgd3JpdHRlbl9iaXRzXzsKKyAgYm9vbCB2YWxpZF87CisKKyAgUlRDX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihCaXRXcml0ZXIpOworfTsKKworLy8gUGFyYW1ldGVycyBmb3IgZml4
ZWQtc2l6ZSBkZWx0YS1lbmNvZGluZy9kZWNvZGluZy4KKy8vIFRoZXNlIGFyZSB0YWlsb3JlZCBm
b3IgdGhlIHNlcXVlbmNlIHdoaWNoIHdpbGwgYmUgZW5jb2RlZCAoZS5nLiB3aWR0aHMpLgorY2xh
c3MgRml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnMgZmluYWwgeworIHB1YmxpYzoKKyAgc3Rh
dGljIGJvb2wgVmFsaWRQYXJhbWV0ZXJzKHVpbnQ2NF90IGRlbHRhX3dpZHRoX2JpdHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNpZ25lZF9kZWx0YXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHZhbHVlc19vcHRpb25hbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbHVlX3dpZHRoX2JpdHMpIHsKKyAgICByZXR1cm4g
KDEgPD0gZGVsdGFfd2lkdGhfYml0cyAmJiBkZWx0YV93aWR0aF9iaXRzIDw9IDY0ICYmCisgICAg
ICAgICAgICAxIDw9IHZhbHVlX3dpZHRoX2JpdHMgJiYgdmFsdWVfd2lkdGhfYml0cyA8PSA2NCAm
JgorICAgICAgICAgICAgZGVsdGFfd2lkdGhfYml0cyA8PSB2YWx1ZV93aWR0aF9iaXRzKTsKKyAg
fQorCisgIEZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJhbWV0ZXJzKHVpbnQ2NF90IGRlbHRhX3dpZHRo
X2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2lnbmVkX2RlbHRh
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2YWx1ZXNfb3B0aW9uYWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbHVlX3dpZHRoX2Jp
dHMpCisgICAgICA6IGRlbHRhX3dpZHRoX2JpdHNfKGRlbHRhX3dpZHRoX2JpdHMpLAorICAgICAg
ICBzaWduZWRfZGVsdGFzXyhzaWduZWRfZGVsdGFzKSwKKyAgICAgICAgdmFsdWVzX29wdGlvbmFs
Xyh2YWx1ZXNfb3B0aW9uYWwpLAorICAgICAgICB2YWx1ZV93aWR0aF9iaXRzXyh2YWx1ZV93aWR0
aF9iaXRzKSwKKyAgICAgICAgZGVsdGFfbWFza18oTWF4VW5zaWduZWRWYWx1ZU9mQml0V2lkdGgo
ZGVsdGFfd2lkdGhfYml0c18pKSwKKyAgICAgICAgdmFsdWVfbWFza18oTWF4VW5zaWduZWRWYWx1
ZU9mQml0V2lkdGgodmFsdWVfd2lkdGhfYml0c18pKSB7CisgICAgUlRDX0RDSEVDSyhWYWxpZFBh
cmFtZXRlcnMoZGVsdGFfd2lkdGhfYml0cywgc2lnbmVkX2RlbHRhcywgdmFsdWVzX29wdGlvbmFs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3dpZHRoX2JpdHMpKTsKKyAg
fQorCisgIC8vIE51bWJlciBvZiBiaXRzIG5lY2Vzc2FyeSB0byBob2xkIHRoZSB3aWRlc3QoKikg
b2YgdGhlIGRlbHRhcyBiZXR3ZWVuIHRoZQorICAvLyB2YWx1ZXMgaW4gdGhlIHNlcXVlbmNlLgor
ICAvLyAoKikgLSBXaWRlc3QgbWlnaHQgbm90IGJlIHRoZSBsYXJnZXN0LCBpZiBzaWduZWQgZGVs
dGFzIGFyZSB1c2VkLgorICB1aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzKCkgY29uc3QgeyByZXR1
cm4gZGVsdGFfd2lkdGhfYml0c187IH0KKworICAvLyBXaGV0aGVyIGRlbHRhcyBhcmUgc2lnbmVk
LgorICBib29sIHNpZ25lZF9kZWx0YXMoKSBjb25zdCB7IHJldHVybiBzaWduZWRfZGVsdGFzXzsg
fQorCisgIC8vIFdoZXRoZXIgdGhlIHZhbHVlcyBvZiB0aGUgc2VxdWVuY2UgYXJlIG9wdGlvbmFs
LiBUaGF0IGlzLCBpdCBtYXkgYmUKKyAgLy8gdGhhdCBzb21lIG9mIHRoZW0gZG8gbm90IGhhdmUg
YSB2YWx1ZSAobm90IGV2ZW4gYSBzZW50aW5lbCB2YWx1ZSBpbmRpY2F0aW5nCisgIC8vIGludmFs
aWRpdHkpLgorICBib29sIHZhbHVlc19vcHRpb25hbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlc19v
cHRpb25hbF87IH0KKworICAvLyBOdW1iZXIgb2YgYml0cyBuZWNlc3NhcnkgdG8gaG9sZCB0aGUg
bGFyZ2VzdCB2YWx1ZSBpbiB0aGUgc2VxdWVuY2UuCisgIHVpbnQ2NF90IHZhbHVlX3dpZHRoX2Jp
dHMoKSBjb25zdCB7IHJldHVybiB2YWx1ZV93aWR0aF9iaXRzXzsgfQorCisgIC8vIE1hc2tzIHdo
ZXJlIG9ubHkgdGhlIGJpdHMgcmVsZXZhbnQgdG8gdGhlIGRlbHRhcy92YWx1ZXMgYXJlIHR1cm5l
ZCBvbi4KKyAgdWludDY0X3QgZGVsdGFfbWFzaygpIGNvbnN0IHsgcmV0dXJuIGRlbHRhX21hc2tf
OyB9CisgIHVpbnQ2NF90IHZhbHVlX21hc2soKSBjb25zdCB7IHJldHVybiB2YWx1ZV9tYXNrXzsg
fQorCisgIHZvaWQgU2V0U2lnbmVkRGVsdGFzKGJvb2wgc2lnbmVkX2RlbHRhcykgeyBzaWduZWRf
ZGVsdGFzXyA9IHNpZ25lZF9kZWx0YXM7IH0KKyAgdm9pZCBTZXREZWx0YVdpZHRoQml0cyh1aW50
NjRfdCBkZWx0YV93aWR0aF9iaXRzKSB7CisgICAgZGVsdGFfd2lkdGhfYml0c18gPSBkZWx0YV93
aWR0aF9iaXRzOworICAgIGRlbHRhX21hc2tfID0gTWF4VW5zaWduZWRWYWx1ZU9mQml0V2lkdGgo
ZGVsdGFfd2lkdGhfYml0cyk7CisgIH0KKworIHByaXZhdGU6CisgIHVpbnQ2NF90IGRlbHRhX3dp
ZHRoX2JpdHNfOyAgLy8gTm9ybWFsbHkgY29uc3QsIGJ1dCBtdXRhYmxlIGluIHRlc3RzLgorICBi
b29sIHNpZ25lZF9kZWx0YXNfOyAgICAgICAgIC8vIE5vcm1hbGx5IGNvbnN0LCBidXQgbXV0YWJs
ZSBpbiB0ZXN0cy4KKyAgY29uc3QgYm9vbCB2YWx1ZXNfb3B0aW9uYWxfOworICBjb25zdCB1aW50
NjRfdCB2YWx1ZV93aWR0aF9iaXRzXzsKKworICB1aW50NjRfdCBkZWx0YV9tYXNrXzsgIC8vIE5v
cm1hbGx5IGNvbnN0LCBidXQgbXV0YWJsZSBpbiB0ZXN0cy4KKyAgY29uc3QgdWludDY0X3QgdmFs
dWVfbWFza187Cit9OworCisvLyBQZXJmb3JtcyBkZWx0YS1lbmNvZGluZyBvZiBhIHNpbmdsZSAo
bm9uLWVtcHR5KSBzZXF1ZW5jZSBvZiB2YWx1ZXMsIHVzaW5nCisvLyBhbiBlbmNvZGluZyB3aGVy
ZSBhbGwgZGVsdGFzIGFyZSBlbmNvZGVkIHVzaW5nIHRoZSBzYW1lIG51bWJlciBvZiBiaXRzLgor
Ly8gKFdpdGggdGhlIGV4Y2VwdGlvbiBvZiBvcHRpb25hbCBlbGVtZW50czsgdGhvc2UgYXJlIGVu
Y29kZWQgYXMgYSBiaXQgdmVjdG9yCisvLyB3aXRoIG9uZSBiaXQgcGVyIGVsZW1lbnQsIHBsdXMg
YSBmaXhlZCBudW1iZXIgb2YgYml0cyBmb3IgZXZlcnkgZWxlbWVudCB0aGF0CisvLyBoYXMgYSB2
YWx1ZS4pCitjbGFzcyBGaXhlZExlbmd0aERlbHRhRW5jb2RlciBmaW5hbCB7CisgcHVibGljOgor
ICAvLyBTZWUgd2VicnRjOjpFbmNvZGVEZWx0YXMoKSBmb3IgZ2VuZXJhbCBkZXRhaWxzLgorICAv
LyBUaGlzIGZ1bmN0aW9uIHJldHVybiBhIGJpdCBwYXR0ZXJuIHRoYXQgd291bGQgYWxsb3cgdGhl
IGRlY29kZXIgdG8KKyAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgd2FzIHByb2R1Y2VkIGJ5IEZp
eGVkTGVuZ3RoRGVsdGFFbmNvZGVyLCBhbmQgY2FuCisgIC8vIHRoZXJlZm9yZSBiZSBkZWNvZGVk
IGJ5IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyLCBvciB3aGV0aGVyIGl0IHdhcyBwcm9kdWNlZAor
ICAvLyBieSBhIGRpZmZlcmVudCBlbmNvZGVyLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRW5jb2Rl
RGVsdGFzKAorICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgICBjb25z
dCBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+JiB2YWx1ZXMpOworCisgcHJp
dmF0ZToKKyAgLy8gQ2FsY3VsYXRlIG1pbi9tYXggdmFsdWVzIG9mIHVuc2lnbmVkL3NpZ25lZCBk
ZWx0YXMsIGdpdmVuIHRoZSBiaXQgd2lkdGgKKyAgLy8gb2YgYWxsIHRoZSB2YWx1ZXMgaW4gdGhl
IHNlcmllcy4KKyAgc3RhdGljIHZvaWQgQ2FsY3VsYXRlTWluQW5kTWF4RGVsdGFzKAorICAgICAg
YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxh
YnNsOjpvcHRpb25hbDx1aW50NjRfdD4+JiB2YWx1ZXMsCisgICAgICB1aW50NjRfdCBiaXRfd2lk
dGgsCisgICAgICB1aW50NjRfdCogbWF4X3Vuc2lnbmVkX2RlbHRhLAorICAgICAgdWludDY0X3Qq
IG1heF9wb3Nfc2lnbmVkX2RlbHRhLAorICAgICAgdWludDY0X3QqIG1pbl9uZWdfc2lnbmVkX2Rl
bHRhKTsKKworICAvLyBObyBlZmZlY3Qgb3V0c2lkZSBvZiB1bml0IHRlc3RzLgorICAvLyBJbiB1
bml0IHRlc3RzLCBtYXkgbGVhZCB0byBmb3JjaW5nIHNpZ25lZC91bnNpZ25lZCBkZWx0YXMsIGV0
Yy4KKyAgc3RhdGljIHZvaWQgQ29uc2lkZXJUZXN0T3ZlcnJpZGVzKEZpeGVkTGVuZ3RoRW5jb2Rp
bmdQYXJhbWV0ZXJzKiBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzX3NpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRlbHRhX3dpZHRoX2JpdHNfdW5zaWduZWQpOworCisg
IC8vIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyIG9iamVjdHMgYXJlIHRvIGJlIGNyZWF0ZWQgYnkg
RW5jb2RlRGVsdGFzKCkgYW5kCisgIC8vIHJlbGVhc2VkIGJ5IGl0IGJlZm9yZSBpdCByZXR1cm5z
LiBUaGV5J3JlIG1vc3RseSBhIGNvbnZlbmllbnQgd2F5IHRvCisgIC8vIGF2b2lkIGhhdmluZyB0
byBwYXNzIGEgbG90IG9mIHN0YXRlIGJldHdlZW4gZGlmZmVyZW50IGZ1bmN0aW9ucy4KKyAgLy8g
VGhlcmVmb3JlLCBpdCB3YXMgZGVlbWVkIGFjY2VwdGFibGUgdG8gbGV0IHRoZW0gaGF2ZSBhIHJl
ZmVyZW5jZSB0bworICAvLyB8dmFsdWVzfCwgd2hvc2UgbGlmZXRpbWUgbXVzdCBleGNlZWQgdGhl
IGxpZmV0aW1lIG9mIHx0aGlzfC4KKyAgRml4ZWRMZW5ndGhEZWx0YUVuY29kZXIoY29uc3QgRml4
ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnMmIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4mIHZhbHVl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGV4aXN0ZW50X3ZhbHVlc19jb3Vu
dCk7CisKKyAgLy8gUGVyZm9ybSBkZWx0YS1lbmNvZGluZyB1c2luZyB0aGUgcGFyYW1ldGVycyBn
aXZlbiB0byB0aGUgY3RvciBvbiB0aGUKKyAgLy8gc2VxdWVuY2Ugb2YgdmFsdWVzIGdpdmVuIHRv
IHRoZSBjdG9yLgorICBzdGQ6OnN0cmluZyBFbmNvZGUoKTsKKworICAvLyBFeGFjdCBsZW5ndGhz
LgorICBzaXplX3QgT3V0cHV0TGVuZ3RoQnl0ZXMoc2l6ZV90IGV4aXN0ZW50X3ZhbHVlc19jb3Vu
dCkgY29uc3Q7CisgIHNpemVfdCBIZWFkZXJMZW5ndGhCaXRzKCkgY29uc3Q7CisgIHNpemVfdCBF
bmNvZGVkRGVsdGFzTGVuZ3RoQml0cyhzaXplX3QgZXhpc3RlbnRfdmFsdWVzX2NvdW50KSBjb25z
dDsKKworICAvLyBFbmNvZGUgdGhlIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgaW50byB0aGUgc3Ry
ZWFtLgorICB2b2lkIEVuY29kZUhlYWRlcigpOworCisgIC8vIEVuY29kZSBhIGdpdmVuIGRlbHRh
IGludG8gdGhlIHN0cmVhbS4KKyAgdm9pZCBFbmNvZGVEZWx0YSh1aW50NjRfdCBwcmV2aW91cywg
dWludDY0X3QgY3VycmVudCk7CisgIHZvaWQgRW5jb2RlVW5zaWduZWREZWx0YSh1aW50NjRfdCBw
cmV2aW91cywgdWludDY0X3QgY3VycmVudCk7CisgIHZvaWQgRW5jb2RlU2lnbmVkRGVsdGEodWlu
dDY0X3QgcHJldmlvdXMsIHVpbnQ2NF90IGN1cnJlbnQpOworCisgIC8vIFRoZSBwYXJhbWV0ZXJz
IGFjY29yZGluZyB0byB3aGljaCBlbmNvZGluZyB3aWxsIGJlIGRvbmUgKHdpZHRoIG9mCisgIC8v
IGZpZWxkcywgd2hldGhlciBzaWduZWQgZGVsdGFzIHNob3VsZCBiZSB1c2VkLCBldGMuKQorICBj
b25zdCBGaXhlZExlbmd0aEVuY29kaW5nUGFyYW1ldGVycyBwYXJhbXNfOworCisgIC8vIFRoZSBl
bmNvZGluZyBzY2hlbWUgYXNzdW1lcyB0aGF0IGF0IGxlYXN0IG9uZSB2YWx1ZSBpcyB0cmFuc21p
dHRlZCBPT0IsCisgIC8vIHNvIHRoYXQgdGhlIGZpcnN0IHZhbHVlIGNhbiBiZSBlbmNvZGVkIGFz
IGEgZGVsdGEgZnJvbSB0aGF0IE9PQiB2YWx1ZSwKKyAgLy8gd2hpY2ggaXMgfGJhc2VffC4KKyAg
Y29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2VfOworCisgIC8vIFRoZSB2YWx1ZXMg
dG8gYmUgZW5jb2RlZC4KKyAgLy8gTm90ZTogVGhpcyBpcyBhIG5vbi1vd25pbmcgcmVmZXJlbmNl
LiBTZWUgY29tbWVudCBhYm92ZSBjdG9yIGZvciBkZXRhaWxzLgorICBjb25zdCBzdGQ6OnZlY3Rv
cjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+JiB2YWx1ZXNfOworCisgIC8vIEJ1ZmZlciBpbnRv
IHdoaWNoIGVuY29kZWQgdmFsdWVzIHdpbGwgYmUgd3JpdHRlbi4KKyAgLy8gVGhpcyBpcyBjcmVh
dGVkIGR5bm1pY2FsbHkgYXMgYSB3YXkgdG8gZW5mb3JjZSB0aGF0IHRoZSByZXN0IG9mIHRoZQor
ICAvLyBjdG9yIGhhcyBmaW5pc2hlZCBydW5uaW5nIHdoZW4gdGhpcyBpcyBjb25zdHJ1Y3RlZCwg
c28gdGhhdCB0aGUgbG93ZXIKKyAgLy8gYm91bmQgb24gdGhlIGJ1ZmZlciBzaXplIHdvdWxkIGJl
IGd1YXJhbnRlZWQgY29ycmVjdC4KKyAgc3RkOjp1bmlxdWVfcHRyPEJpdFdyaXRlcj4gd3JpdGVy
XzsKKworICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZpeGVkTGVuZ3RoRGVsdGFFbmNv
ZGVyKTsKK307CisKKy8vIFRPRE8oZWxhZGFsb24pOiBSZWR1Y2UgdGhlIG51bWJlciBvZiBwYXNz
ZXMuCitzdGQ6OnN0cmluZyBGaXhlZExlbmd0aERlbHRhRW5jb2Rlcjo6RW5jb2RlRGVsdGFzKAor
ICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4mIHZhbHVlcykgeworICBSVENfRENIRUNLKCF2YWx1
ZXMuZW1wdHkoKSk7CisKKyAgLy8gQXMgYSBzcGVjaWFsIGNhc2UsIGlmIGFsbCBvZiB0aGUgZWxl
bWVudHMgYXJlIGlkZW50aWNhbCB0byB0aGUgYmFzZSwKKyAgLy8gKGluY2x1ZGluZywgZm9yIG9w
dGlvbmFsIGZpZWxkcywgYWJvdXQgdGhlaXIgZXhpc3RlbmNlL25vbi1leGlzdGVuY2UpLAorICAv
LyB0aGUgZW1wdHkgc3RyaW5nIGlzIHVzZWQgdG8gc2lnbmFsIHRoYXQuCisgIGlmIChzdGQ6OmFs
bF9vZigKKyAgICAgICAgICB2YWx1ZXMuY2JlZ2luKCksIHZhbHVlcy5jZW5kKCksCisgICAgICAg
ICAgW2Jhc2VdKGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiB2YWwpIHsgcmV0dXJuIHZhbCA9PSBi
YXNlOyB9KSkgeworICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworICB9CisKKyAgYm9vbCBub25f
ZGVjcmVhc2luZyA9IHRydWU7CisgIHVpbnQ2NF90IG1heF92YWx1ZV9pbmNsdWRpbmdfYmFzZSA9
IGJhc2UudmFsdWVfb3IoMHUpOworICBzaXplX3QgZXhpc3RlbnRfdmFsdWVzX2NvdW50ID0gMDsK
KyAgeworICAgIHVpbnQ2NF90IHByZXZpb3VzID0gYmFzZS52YWx1ZV9vcigwdSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgIGlmICghdmFs
dWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAg
KytleGlzdGVudF92YWx1ZXNfY291bnQ7CisgICAgICBub25fZGVjcmVhc2luZyAmPSAocHJldmlv
dXMgPD0gdmFsdWVzW2ldLnZhbHVlKCkpOworICAgICAgbWF4X3ZhbHVlX2luY2x1ZGluZ19iYXNl
ID0KKyAgICAgICAgICBzdGQ6Om1heChtYXhfdmFsdWVfaW5jbHVkaW5nX2Jhc2UsIHZhbHVlc1tp
XS52YWx1ZSgpKTsKKyAgICAgIHByZXZpb3VzID0gdmFsdWVzW2ldLnZhbHVlKCk7CisgICAgfQor
ICB9CisKKyAgLy8gSWYgdGhlIHNlcXVlbmNlIGlzIG5vbi1kZWNyZWFzaW5nLCBpdCBtYXkgYmUg
YXNzdW1lZCB0byBoYXZlIHdpZHRoID0gNjQ7CisgIC8vIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIGVu
Y29kZSB0aGUgYWN0dWFsIG1heCB3aWR0aCBpbiB0aGUgZW5jb2RpbmcgaGVhZGVyLgorICBjb25z
dCB1aW50NjRfdCB2YWx1ZV93aWR0aF9iaXRzID0KKyAgICAgIG5vbl9kZWNyZWFzaW5nID8gNjQg
OiBVbnNpZ25lZEJpdFdpZHRoKG1heF92YWx1ZV9pbmNsdWRpbmdfYmFzZSk7CisKKyAgdWludDY0
X3QgbWF4X3Vuc2lnbmVkX2RlbHRhOworICB1aW50NjRfdCBtYXhfcG9zX3NpZ25lZF9kZWx0YTsK
KyAgdWludDY0X3QgbWluX25lZ19zaWduZWRfZGVsdGE7CisgIENhbGN1bGF0ZU1pbkFuZE1heERl
bHRhcyhiYXNlLCB2YWx1ZXMsIHZhbHVlX3dpZHRoX2JpdHMsICZtYXhfdW5zaWduZWRfZGVsdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4X3Bvc19zaWduZWRfZGVsdGEsICZtaW5f
bmVnX3NpZ25lZF9kZWx0YSk7CisKKyAgY29uc3QgdWludDY0X3QgZGVsdGFfd2lkdGhfYml0c191
bnNpZ25lZCA9CisgICAgICBVbnNpZ25lZEJpdFdpZHRoKG1heF91bnNpZ25lZF9kZWx0YSk7Cisg
IGNvbnN0IHVpbnQ2NF90IGRlbHRhX3dpZHRoX2JpdHNfc2lnbmVkID0KKyAgICAgIFNpZ25lZEJp
dFdpZHRoKG1heF9wb3Nfc2lnbmVkX2RlbHRhLCBtaW5fbmVnX3NpZ25lZF9kZWx0YSk7CisKKyAg
Ly8gTm90ZTogUHJlZmVyZW5jZSBmb3IgdW5zaWduZWQgaWYgdGhlIHR3byBoYXZlIHRoZSBzYW1l
IHdpZHRoIChlZmZpY2llbmN5KS4KKyAgY29uc3QgYm9vbCBzaWduZWRfZGVsdGFzID0KKyAgICAg
IGRlbHRhX3dpZHRoX2JpdHNfc2lnbmVkIDwgZGVsdGFfd2lkdGhfYml0c191bnNpZ25lZDsKKyAg
Y29uc3QgdWludDY0X3QgZGVsdGFfd2lkdGhfYml0cyA9CisgICAgICBzaWduZWRfZGVsdGFzID8g
ZGVsdGFfd2lkdGhfYml0c19zaWduZWQgOiBkZWx0YV93aWR0aF9iaXRzX3Vuc2lnbmVkOworCisg
IGNvbnN0IGJvb2wgdmFsdWVzX29wdGlvbmFsID0KKyAgICAgICFiYXNlLmhhc192YWx1ZSgpIHx8
IChleGlzdGVudF92YWx1ZXNfY291bnQgPCB2YWx1ZXMuc2l6ZSgpKTsKKworICBGaXhlZExlbmd0
aEVuY29kaW5nUGFyYW1ldGVycyBwYXJhbXMoZGVsdGFfd2lkdGhfYml0cywgc2lnbmVkX2RlbHRh
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc19vcHRpb25h
bCwgdmFsdWVfd2lkdGhfYml0cyk7CisKKyAgLy8gTm8gZWZmZWN0IGluIHByb2R1Y3Rpb24uCisg
IENvbnNpZGVyVGVzdE92ZXJyaWRlcygmcGFyYW1zLCBkZWx0YV93aWR0aF9iaXRzX3NpZ25lZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhX3dpZHRoX2JpdHNfdW5zaWduZWQpOworCisg
IEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyIGVuY29kZXIocGFyYW1zLCBiYXNlLCB2YWx1ZXMsIGV4
aXN0ZW50X3ZhbHVlc19jb3VudCk7CisgIHJldHVybiBlbmNvZGVyLkVuY29kZSgpOworfQorCit2
b2lkIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpDYWxjdWxhdGVNaW5BbmRNYXhEZWx0YXMoCisg
ICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiYgdmFsdWVzLAorICAgIHVpbnQ2NF90IGJpdF93aWR0
aCwKKyAgICB1aW50NjRfdCogbWF4X3Vuc2lnbmVkX2RlbHRhX291dCwKKyAgICB1aW50NjRfdCog
bWF4X3Bvc19zaWduZWRfZGVsdGFfb3V0LAorICAgIHVpbnQ2NF90KiBtaW5fbmVnX3NpZ25lZF9k
ZWx0YV9vdXQpIHsKKyAgUlRDX0RDSEVDSyghdmFsdWVzLmVtcHR5KCkpOworICBSVENfRENIRUNL
KG1heF91bnNpZ25lZF9kZWx0YV9vdXQpOworICBSVENfRENIRUNLKG1heF9wb3Nfc2lnbmVkX2Rl
bHRhX291dCk7CisgIFJUQ19EQ0hFQ0sobWluX25lZ19zaWduZWRfZGVsdGFfb3V0KTsKKworICBj
b25zdCB1aW50NjRfdCBiaXRfbWFzayA9IE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKGJpdF93
aWR0aCk7CisKKyAgdWludDY0X3QgbWF4X3Vuc2lnbmVkX2RlbHRhID0gMDsKKyAgdWludDY0X3Qg
bWF4X3Bvc19zaWduZWRfZGVsdGEgPSAwOworICB1aW50NjRfdCBtaW5fbmVnX3NpZ25lZF9kZWx0
YSA9IDA7CisKKyAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHByZXYgPSBiYXNlOworICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGlmICghdmFsdWVz
W2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBpZiAoIXBy
ZXYuaGFzX3ZhbHVlKCkpIHsKKyAgICAgIC8vIElmIHRoZSBiYXNlIGlzIG5vbi1leGlzdGVudCwg
dGhlIGZpcnN0IGV4aXN0ZW50IHZhbHVlIGlzIGVuY29kZWQgYXMKKyAgICAgIC8vIGEgdmFyaW50
LCByYXRoZXIgdGhhbiBhcyBhIGRlbHRhLgorICAgICAgUlRDX0RDSEVDSyghYmFzZS5oYXNfdmFs
dWUoKSk7CisgICAgICBwcmV2ID0gdmFsdWVzW2ldOworICAgICAgY29udGludWU7CisgICAgfQor
CisgICAgY29uc3QgdWludDY0X3QgY3VycmVudCA9IHZhbHVlc1tpXS52YWx1ZSgpOworCisgICAg
Y29uc3QgdWludDY0X3QgZm9yd2FyZF9kZWx0YSA9IFVuc2lnbmVkRGVsdGEoKnByZXYsIGN1cnJl
bnQsIGJpdF9tYXNrKTsKKyAgICBjb25zdCB1aW50NjRfdCBiYWNrd2FyZF9kZWx0YSA9IFVuc2ln
bmVkRGVsdGEoY3VycmVudCwgKnByZXYsIGJpdF9tYXNrKTsKKworICAgIG1heF91bnNpZ25lZF9k
ZWx0YSA9IHN0ZDo6bWF4KG1heF91bnNpZ25lZF9kZWx0YSwgZm9yd2FyZF9kZWx0YSk7CisKKyAg
ICBpZiAoZm9yd2FyZF9kZWx0YSA8IGJhY2t3YXJkX2RlbHRhKSB7CisgICAgICBtYXhfcG9zX3Np
Z25lZF9kZWx0YSA9IHN0ZDo6bWF4KG1heF9wb3Nfc2lnbmVkX2RlbHRhLCBmb3J3YXJkX2RlbHRh
KTsKKyAgICB9IGVsc2UgeworICAgICAgbWluX25lZ19zaWduZWRfZGVsdGEgPSBzdGQ6Om1heCht
aW5fbmVnX3NpZ25lZF9kZWx0YSwgYmFja3dhcmRfZGVsdGEpOworICAgIH0KKworICAgIHByZXYg
PSBjdXJyZW50OworICB9CisKKyAgKm1heF91bnNpZ25lZF9kZWx0YV9vdXQgPSBtYXhfdW5zaWdu
ZWRfZGVsdGE7CisgICptYXhfcG9zX3NpZ25lZF9kZWx0YV9vdXQgPSBtYXhfcG9zX3NpZ25lZF9k
ZWx0YTsKKyAgKm1pbl9uZWdfc2lnbmVkX2RlbHRhX291dCA9IG1pbl9uZWdfc2lnbmVkX2RlbHRh
OworfQorCit2b2lkIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpDb25zaWRlclRlc3RPdmVycmlk
ZXMoCisgICAgRml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnMqIHBhcmFtcywKKyAgICB1aW50
NjRfdCBkZWx0YV93aWR0aF9iaXRzX3NpZ25lZCwKKyAgICB1aW50NjRfdCBkZWx0YV93aWR0aF9i
aXRzX3Vuc2lnbmVkKSB7CisgIGlmIChnX2ZvcmNlX3Vuc2lnbmVkX2Zvcl90ZXN0aW5nKSB7Cisg
ICAgcGFyYW1zLT5TZXREZWx0YVdpZHRoQml0cyhkZWx0YV93aWR0aF9iaXRzX3Vuc2lnbmVkKTsK
KyAgICBwYXJhbXMtPlNldFNpZ25lZERlbHRhcyhmYWxzZSk7CisgIH0gZWxzZSBpZiAoZ19mb3Jj
ZV9zaWduZWRfZm9yX3Rlc3RpbmcpIHsKKyAgICBwYXJhbXMtPlNldERlbHRhV2lkdGhCaXRzKGRl
bHRhX3dpZHRoX2JpdHNfc2lnbmVkKTsKKyAgICBwYXJhbXMtPlNldFNpZ25lZERlbHRhcyh0cnVl
KTsKKyAgfSBlbHNlIHsKKyAgICAvLyBVbmNoYW5nZWQuCisgIH0KK30KKworRml4ZWRMZW5ndGhE
ZWx0YUVuY29kZXI6OkZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyKAorICAgIGNvbnN0IEZpeGVkTGVu
Z3RoRW5jb2RpbmdQYXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0
X3Q+IGJhc2UsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+
PiYgdmFsdWVzLAorICAgIHNpemVfdCBleGlzdGVudF92YWx1ZXNfY291bnQpCisgICAgOiBwYXJh
bXNfKHBhcmFtcyksIGJhc2VfKGJhc2UpLCB2YWx1ZXNfKHZhbHVlcykgeworICBSVENfRENIRUNL
KCF2YWx1ZXNfLmVtcHR5KCkpOworICB3cml0ZXJfID0KKyAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PEJpdFdyaXRlcj4oT3V0cHV0TGVuZ3RoQnl0ZXMoZXhpc3RlbnRfdmFsdWVzX2NvdW50KSk7Cit9
CisKK3N0ZDo6c3RyaW5nIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpFbmNvZGUoKSB7CisgIEVu
Y29kZUhlYWRlcigpOworCisgIGlmIChwYXJhbXNfLnZhbHVlc19vcHRpb25hbCgpKSB7CisgICAg
Ly8gRW5jb2RlIHdoaWNoIHZhbHVlcyBleGlzdCBhbmQgd2hpY2ggZG9uJ3QuCisgICAgZm9yIChh
YnNsOjpvcHRpb25hbDx1aW50NjRfdD4gdmFsdWUgOiB2YWx1ZXNfKSB7CisgICAgICB3cml0ZXJf
LT5Xcml0ZUJpdHModmFsdWUuaGFzX3ZhbHVlKCkgPyAxdSA6IDB1LCAxKTsKKyAgICB9CisgIH0K
KworICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gcHJldmlvdXMgPSBiYXNlXzsKKyAgZm9yIChh
YnNsOjpvcHRpb25hbDx1aW50NjRfdD4gdmFsdWUgOiB2YWx1ZXNfKSB7CisgICAgaWYgKCF2YWx1
ZS5oYXNfdmFsdWUoKSkgeworICAgICAgUlRDX0RDSEVDSyhwYXJhbXNfLnZhbHVlc19vcHRpb25h
bCgpKTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGlmICghcHJldmlvdXMuaGFzX3Zh
bHVlKCkpIHsKKyAgICAgIC8vIElmIHRoZSBiYXNlIGlzIG5vbi1leGlzdGVudCwgdGhlIGZpcnN0
IGV4aXN0ZW50IHZhbHVlIGlzIGVuY29kZWQgYXMKKyAgICAgIC8vIGEgdmFyaW50LCByYXRoZXIg
dGhhbiBhcyBhIGRlbHRhLgorICAgICAgUlRDX0RDSEVDSyghYmFzZV8uaGFzX3ZhbHVlKCkpOwor
ICAgICAgd3JpdGVyXy0+V3JpdGVCaXRzKEVuY29kZVZhckludCh2YWx1ZS52YWx1ZSgpKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIEVuY29kZURlbHRhKHByZXZpb3VzLnZhbHVlKCksIHZhbHVlLnZh
bHVlKCkpOworICAgIH0KKworICAgIHByZXZpb3VzID0gdmFsdWU7CisgIH0KKworICByZXR1cm4g
d3JpdGVyXy0+R2V0U3RyaW5nKCk7Cit9CisKK3NpemVfdCBGaXhlZExlbmd0aERlbHRhRW5jb2Rl
cjo6T3V0cHV0TGVuZ3RoQnl0ZXMoCisgICAgc2l6ZV90IGV4aXN0ZW50X3ZhbHVlc19jb3VudCkg
Y29uc3QgeworICByZXR1cm4gQml0c1RvQnl0ZXMoSGVhZGVyTGVuZ3RoQml0cygpICsKKyAgICAg
ICAgICAgICAgICAgICAgIEVuY29kZWREZWx0YXNMZW5ndGhCaXRzKGV4aXN0ZW50X3ZhbHVlc19j
b3VudCkpOworfQorCitzaXplX3QgRml4ZWRMZW5ndGhEZWx0YUVuY29kZXI6OkhlYWRlckxlbmd0
aEJpdHMoKSBjb25zdCB7CisgIGlmIChwYXJhbXNfLnNpZ25lZF9kZWx0YXMoKSA9PSBrRGVmYXVs
dFNpZ25lZERlbHRhcyAmJgorICAgICAgcGFyYW1zXy52YWx1ZXNfb3B0aW9uYWwoKSA9PSBrRGVm
YXVsdFZhbHVlc09wdGlvbmFsICYmCisgICAgICBwYXJhbXNfLnZhbHVlX3dpZHRoX2JpdHMoKSA9
PSBrRGVmYXVsdFZhbHVlV2lkdGhCaXRzKSB7CisgICAgcmV0dXJuIGtCaXRzSW5IZWFkZXJGb3JF
bmNvZGluZ1R5cGUgKyBrQml0c0luSGVhZGVyRm9yRGVsdGFXaWR0aEJpdHM7CisgIH0gZWxzZSB7
CisgICAgcmV0dXJuIGtCaXRzSW5IZWFkZXJGb3JFbmNvZGluZ1R5cGUgKyBrQml0c0luSGVhZGVy
Rm9yRGVsdGFXaWR0aEJpdHMgKworICAgICAgICAgICBrQml0c0luSGVhZGVyRm9yU2lnbmVkRGVs
dGFzICsga0JpdHNJbkhlYWRlckZvclZhbHVlc09wdGlvbmFsICsKKyAgICAgICAgICAga0JpdHNJ
bkhlYWRlckZvclZhbHVlV2lkdGhCaXRzOworICB9Cit9CisKK3NpemVfdCBGaXhlZExlbmd0aERl
bHRhRW5jb2Rlcjo6RW5jb2RlZERlbHRhc0xlbmd0aEJpdHMoCisgICAgc2l6ZV90IGV4aXN0ZW50
X3ZhbHVlc19jb3VudCkgY29uc3QgeworICBpZiAoIXBhcmFtc18udmFsdWVzX29wdGlvbmFsKCkp
IHsKKyAgICByZXR1cm4gdmFsdWVzXy5zaXplKCkgKiBwYXJhbXNfLmRlbHRhX3dpZHRoX2JpdHMo
KTsKKyAgfSBlbHNlIHsKKyAgICBSVENfRENIRUNLX0VRKHN0ZDo6Y291bnRfaWYodmFsdWVzXy5i
ZWdpbigpLCB2YWx1ZXNfLmVuZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
XShhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gdmFsKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHZhbC5oYXNfdmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSksCisgICAgICAgICAgICAgICAgICBleGlzdGVudF92YWx1ZXNfY291bnQp
OworICAgIC8vIE9uZSBiaXQgZm9yIGVhY2ggZGVsdGEsIHRvIGluZGljYXRlIGlmIHRoZSB2YWx1
ZSBleGlzdHMsIGFuZCBkZWx0YV93aWR0aAorICAgIC8vIGZvciBlYWNoIGV4aXN0ZW50IHZhbHVl
LCB0byBpbmRpY2F0ZSB0aGUgZGVsdGEgaXRzZWxmLgorICAgIC8vIElmIGJhc2VfIGlzIG5vbi1l
eGlzdGVudCwgdGhlIGZpcnN0IHZhbHVlIChpZiBhbnkpIGlzIGVuY29kZWQgYXMgYSB2YXJpbnQK
KyAgICAvLyByYXRoZXIgdGhhbiBhcyBhIGRlbHRhLgorICAgIGNvbnN0IHNpemVfdCBleGlzdGVu
Y2VfYml0bWFwX3NpemVfYml0cyA9IDEgKiB2YWx1ZXNfLnNpemUoKTsKKyAgICBjb25zdCBib29s
IGZpcnN0X3ZhbHVlX2lzX3ZhcmludCA9CisgICAgICAgICFiYXNlXy5oYXNfdmFsdWUoKSAmJiBl
eGlzdGVudF92YWx1ZXNfY291bnQgPj0gMTsKKyAgICBjb25zdCBzaXplX3QgZmlyc3RfdmFsdWVf
dmFyaW50X3NpemVfYml0cyA9IDggKiBrTWF4VmFySW50TGVuZ3RoQnl0ZXM7CisgICAgY29uc3Qg
c2l6ZV90IGRlbHRhc19jb3VudCA9IGV4aXN0ZW50X3ZhbHVlc19jb3VudCAtIGZpcnN0X3ZhbHVl
X2lzX3ZhcmludDsKKyAgICBjb25zdCBzaXplX3QgZGVsdGFzX3NpemVfYml0cyA9IGRlbHRhc19j
b3VudCAqIHBhcmFtc18uZGVsdGFfd2lkdGhfYml0cygpOworICAgIHJldHVybiBleGlzdGVuY2Vf
Yml0bWFwX3NpemVfYml0cyArIGZpcnN0X3ZhbHVlX3ZhcmludF9zaXplX2JpdHMgKworICAgICAg
ICAgICBkZWx0YXNfc2l6ZV9iaXRzOworICB9Cit9CisKK3ZvaWQgRml4ZWRMZW5ndGhEZWx0YUVu
Y29kZXI6OkVuY29kZUhlYWRlcigpIHsKKyAgUlRDX0RDSEVDSyh3cml0ZXJfKTsKKworICBjb25z
dCBFbmNvZGluZ1R5cGUgZW5jb2RpbmdfdHlwZSA9CisgICAgICAocGFyYW1zXy52YWx1ZV93aWR0
aF9iaXRzKCkgPT0ga0RlZmF1bHRWYWx1ZVdpZHRoQml0cyAmJgorICAgICAgIHBhcmFtc18uc2ln
bmVkX2RlbHRhcygpID09IGtEZWZhdWx0U2lnbmVkRGVsdGFzICYmCisgICAgICAgcGFyYW1zXy52
YWx1ZXNfb3B0aW9uYWwoKSA9PSBrRGVmYXVsdFZhbHVlc09wdGlvbmFsKQorICAgICAgICAgID8g
RW5jb2RpbmdUeXBlOjprRml4ZWRTaXplVW5zaWduZWREZWx0YXNOb0Vhcmx5V3JhcE5vT3B0Cisg
ICAgICAgICAgOiBFbmNvZGluZ1R5cGU6OmtGaXhlZFNpemVTaWduZWREZWx0YXNFYXJseVdyYXBB
bmRPcHRTdXBwb3J0ZWQ7CisKKyAgd3JpdGVyXy0+V3JpdGVCaXRzKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihlbmNvZGluZ190eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgIGtCaXRzSW5IZWFkZXJG
b3JFbmNvZGluZ1R5cGUpOworCisgIC8vIE5vdGU6IFNpbmNlIGl0J3MgbWVhbmluZ2xlc3MgZm9y
IGEgZmllbGQgdG8gYmUgb2Ygd2lkdGggMCwgd2hlbiBpdCBjb21lcworICAvLyB0byBmaWVsZHMg
dGhhdCByZWxhdGUgd2lkdGhzLCB3ZSBlbmNvZGUgIHdpZHRoIDEgYXMgMCwgd2lkdGggMiBhcyAx
LAorCisgIHdyaXRlcl8tPldyaXRlQml0cyhwYXJhbXNfLmRlbHRhX3dpZHRoX2JpdHMoKSAtIDEs
CisgICAgICAgICAgICAgICAgICAgICBrQml0c0luSGVhZGVyRm9yRGVsdGFXaWR0aEJpdHMpOwor
CisgIGlmIChlbmNvZGluZ190eXBlID09IEVuY29kaW5nVHlwZTo6a0ZpeGVkU2l6ZVVuc2lnbmVk
RGVsdGFzTm9FYXJseVdyYXBOb09wdCkgeworICAgIHJldHVybjsKKyAgfQorCisgIHdyaXRlcl8t
PldyaXRlQml0cyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocGFyYW1zXy5zaWduZWRfZGVsdGFzKCkp
LAorICAgICAgICAgICAgICAgICAgICAga0JpdHNJbkhlYWRlckZvclNpZ25lZERlbHRhcyk7Cisg
IHdyaXRlcl8tPldyaXRlQml0cyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocGFyYW1zXy52YWx1ZXNf
b3B0aW9uYWwoKSksCisgICAgICAgICAgICAgICAgICAgICBrQml0c0luSGVhZGVyRm9yVmFsdWVz
T3B0aW9uYWwpOworICB3cml0ZXJfLT5Xcml0ZUJpdHMocGFyYW1zXy52YWx1ZV93aWR0aF9iaXRz
KCkgLSAxLAorICAgICAgICAgICAgICAgICAgICAga0JpdHNJbkhlYWRlckZvclZhbHVlV2lkdGhC
aXRzKTsKK30KKwordm9pZCBGaXhlZExlbmd0aERlbHRhRW5jb2Rlcjo6RW5jb2RlRGVsdGEodWlu
dDY0X3QgcHJldmlvdXMsIHVpbnQ2NF90IGN1cnJlbnQpIHsKKyAgaWYgKHBhcmFtc18uc2lnbmVk
X2RlbHRhcygpKSB7CisgICAgRW5jb2RlU2lnbmVkRGVsdGEocHJldmlvdXMsIGN1cnJlbnQpOwor
ICB9IGVsc2UgeworICAgIEVuY29kZVVuc2lnbmVkRGVsdGEocHJldmlvdXMsIGN1cnJlbnQpOwor
ICB9Cit9CisKK3ZvaWQgRml4ZWRMZW5ndGhEZWx0YUVuY29kZXI6OkVuY29kZVVuc2lnbmVkRGVs
dGEodWludDY0X3QgcHJldmlvdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnQpIHsKKyAgUlRDX0RDSEVDSyh3cml0ZXJf
KTsKKyAgY29uc3QgdWludDY0X3QgZGVsdGEgPSBVbnNpZ25lZERlbHRhKHByZXZpb3VzLCBjdXJy
ZW50LCBwYXJhbXNfLnZhbHVlX21hc2soKSk7CisgIHdyaXRlcl8tPldyaXRlQml0cyhkZWx0YSwg
cGFyYW1zXy5kZWx0YV93aWR0aF9iaXRzKCkpOworfQorCit2b2lkIEZpeGVkTGVuZ3RoRGVsdGFF
bmNvZGVyOjpFbmNvZGVTaWduZWREZWx0YSh1aW50NjRfdCBwcmV2aW91cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnQpIHsK
KyAgUlRDX0RDSEVDSyh3cml0ZXJfKTsKKworICBjb25zdCB1aW50NjRfdCBmb3J3YXJkX2RlbHRh
ID0KKyAgICAgIFVuc2lnbmVkRGVsdGEocHJldmlvdXMsIGN1cnJlbnQsIHBhcmFtc18udmFsdWVf
bWFzaygpKTsKKyAgY29uc3QgdWludDY0X3QgYmFja3dhcmRfZGVsdGEgPQorICAgICAgVW5zaWdu
ZWREZWx0YShjdXJyZW50LCBwcmV2aW91cywgcGFyYW1zXy52YWx1ZV9tYXNrKCkpOworCisgIHVp
bnQ2NF90IGRlbHRhOworICBpZiAoZm9yd2FyZF9kZWx0YSA8PSBiYWNrd2FyZF9kZWx0YSkgewor
ICAgIGRlbHRhID0gZm9yd2FyZF9kZWx0YTsKKyAgfSBlbHNlIHsKKyAgICAvLyBDb21wdXRlIHRo
ZSB1bnNpZ25lZCByZXByZXNlbnRhdGlvbiBvZiBhIG5lZ2F0aXZlIGRlbHRhLgorICAgIC8vIFRo
aXMgaXMgdGhlIHR3bydzIGNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBuZWdhdGl2
ZSB2YWx1ZSwKKyAgICAvLyB3aGVuIGRlbHRhcyBhcmUgb2Ygd2lkdGggcGFyYW1zXy5kZWx0YV9t
YXNrKCkuCisgICAgUlRDX0RDSEVDS19HRShwYXJhbXNfLmRlbHRhX21hc2soKSwgYmFja3dhcmRf
ZGVsdGEpOworICAgIFJUQ19EQ0hFQ0tfTFQocGFyYW1zXy5kZWx0YV9tYXNrKCkgLSBiYWNrd2Fy
ZF9kZWx0YSwgcGFyYW1zXy5kZWx0YV9tYXNrKCkpOworICAgIGRlbHRhID0gcGFyYW1zXy5kZWx0
YV9tYXNrKCkgLSBiYWNrd2FyZF9kZWx0YSArIDE7CisgICAgUlRDX0RDSEVDS19MRShkZWx0YSwg
cGFyYW1zXy5kZWx0YV9tYXNrKCkpOworICB9CisKKyAgd3JpdGVyXy0+V3JpdGVCaXRzKGRlbHRh
LCBwYXJhbXNfLmRlbHRhX3dpZHRoX2JpdHMoKSk7Cit9CisKKy8vIFBlcmZvcm0gZGVjb2Rpbmcg
b2YgYSBhIGRlbHRhLWVuY29kZWQgc3RyZWFtLCBleHRyYWN0aW5nIHRoZSBvcmlnaW5hbAorLy8g
c2VxdWVuY2Ugb2YgdmFsdWVzLgorY2xhc3MgRml4ZWRMZW5ndGhEZWx0YURlY29kZXIgZmluYWwg
eworIHB1YmxpYzoKKyAgLy8gQ2hlY2tzIHdoZXRoZXIgRml4ZWRMZW5ndGhEZWx0YURlY29kZXIg
aXMgYSBzdWl0YWJsZSBkZWNvZGVyIGZvciB0aGlzCisgIC8vIGJpdHN0cmVhbS4gTm90ZSB0aGF0
IHRoaXMgZG9lcyBOT1QgaW1wbHkgdGhhdCBzdHJlYW0gaXMgdmFsaWQsIGFuZCB3aWxsCisgIC8v
IGJlIGRlY29kZWQgc3VjY2Vzc2Z1bGx5LiBJdCBET0VTIGltcGx5IHRoYXQgYWxsIG90aGVyIGRl
Y29kZXIgY2xhc3NlcworICAvLyB3aWxsIGZhaWwgdG8gZGVjb2RlIHRoaXMgaW5wdXQsIHRob3Vn
aC4KKyAgc3RhdGljIGJvb2wgSXNTdWl0YWJsZURlY29kZXJGb3IoY29uc3Qgc3RkOjpzdHJpbmcm
IGlucHV0KTsKKworICAvLyBBc3N1bWluZyB0aGF0IHxpbnB1dHwgaXMgdGhlIHJlc3VsdCBvZiBm
aXhlZC1zaXplIGRlbHRhLWVuY29kaW5nCisgIC8vIHRoYXQgdG9vayBwbGFjZSB3aXRoIHRoZSBz
YW1lIHZhbHVlIHRvIHxiYXNlfCBhbmQgb3ZlciB8bnVtX29mX2RlbHRhc3wKKyAgLy8gb3JpZ2lu
YWwgdmFsdWVzLCB0aGlzIHdpbGwgcmV0dXJuIHRoZSBzZXF1ZW5jZSBvZiBvcmlnaW5hbCB2YWx1
ZXMuCisgIC8vIElmIGFuIGVycm9yIG9jY3VycyAoY2FuIGhhcHBlbiBpZiB8aW5wdXR8IGlzIGNv
cnJ1cHQpLCBhbiBlbXB0eQorICAvLyB2ZWN0b3Igd2lsbCBiZSByZXR1cm5lZC4KKyAgc3RhdGlj
IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gRGVjb2RlRGVsdGFzKAorICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LAorICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0
X3Q+IGJhc2UsCisgICAgICBzaXplX3QgbnVtX29mX2RlbHRhcyk7CisKKyBwcml2YXRlOgorICAv
LyBSZWFkcyB0aGUgZW5jb2RpbmcgaGVhZGVyIGluIHxpbnB1dHwgYW5kIHJldHVybnMgYSBGaXhl
ZExlbmd0aERlbHRhRGVjb2RlcgorICAvLyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGNvbmZpZ3Vy
YXRpb24sIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVjb2RlIHRoZQorICAvLyB2YWx1ZXMgaW4gfGlu
cHV0fC4KKyAgLy8gSWYgdGhlIGVuY29kaW5nIGhlYWRlciBpcyBjb3JydXB0IChjb250YWlucyBh
biBpbGxlZ2FsIGNvbmZpZ3VyYXRpb24pLAorICAvLyBudWxscHRyIHdpbGwgYmUgcmV0dXJuZWQu
CisgIC8vIFdoZW4gYSB2YWxpZCBGaXhlZExlbmd0aERlbHRhRGVjb2RlciBpcyByZXR1cm5lZCwg
dGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQKKyAgLy8gdGhlIGVudGlyZSBzdHJlYW0gaXMgZnJlZSBv
ZiBlcnJvci4gUmF0aGVyLCBvbmx5IHRoZSBlbmNvZGluZyBoZWFkZXIgaXMKKyAgLy8gZXhhbWlu
ZWQgYW5kIGd1YXJhbnRlZWQuCisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rml4ZWRMZW5ndGhE
ZWx0YURlY29kZXI+IENyZWF0ZSgKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwKKyAg
ICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgICAgc2l6ZV90IG51bV9vZl9k
ZWx0YXMpOworCisgIC8vIEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyIG9iamVjdHMgYXJlIHRvIGJl
IGNyZWF0ZWQgYnkgRGVjb2RlRGVsdGFzKCkgYW5kCisgIC8vIHJlbGVhc2VkIGJ5IGl0IGJlZm9y
ZSBpdCByZXR1cm5zLiBUaGV5J3JlIG1vc3RseSBhIGNvbnZlbmllbnQgd2F5IHRvCisgIC8vIGF2
b2lkIGhhdmluZyB0byBwYXNzIGEgbG90IG9mIHN0YXRlIGJldHdlZW4gZGlmZmVyZW50IGZ1bmN0
aW9ucy4KKyAgLy8gVGhlcmVmb3JlLCBpdCB3YXMgZGVlbWVkIGFjY2VwdGFibGUgdGhhdCB8cmVh
ZGVyfCBkb2VzIG5vdCBvd24gdGhlIGJ1ZmZlcgorICAvLyBpdCByZWFkcywgbWVhbmluZyB0aGUg
bGlmZXRpbWUgb2YgfHRoaXN8IG11c3Qgbm90IGV4Y2VlZCB0aGUgbGlmZXRpbWUKKyAgLy8gb2Yg
fHJlYWRlcnwncyB1bmRlcmx5aW5nIGJ1ZmZlci4KKyAgRml4ZWRMZW5ndGhEZWx0YURlY29kZXIo
c3RkOjp1bmlxdWVfcHRyPHJ0Yzo6Qml0QnVmZmVyPiByZWFkZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJhbWV0ZXJzJiBwYXJhbXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX29mX2RlbHRhcyk7CisKKyAgLy8g
UGVyZm9ybSB0aGUgZGVjb2RpbmcgdXNpbmcgdGhlIHBhcmFtZXRlcnMgZ2l2ZW4gdG8gdGhlIGN0
b3IuCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gRGVjb2RlKCk7CisK
KyAgLy8gRGVjb2RlIGEgdmFyaW50IGFuZCB3cml0ZSBpdCB0byB8b3V0cHV0fC4gUmV0dXJuIHZh
bHVlIGluZGljYXRlcyBzdWNjZXNzCisgIC8vIG9yIGZhaWx1cmUuIEluIGNhc2Ugb2YgZmFpbHVy
ZSwgbm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCB0aGUgY29udGVudHMKKyAgLy8gb2YgfG91
dHB1dHwgb3IgdGhlIHJlc3VsdHMgb2YgYWRkaXRpb25hbCByZWFkcy4KKyAgYm9vbCBQYXJzZVZh
ckludCh1aW50NjRfdCogb3V0cHV0KTsKKworICAvLyBBdHRlbXB0IHRvIHBhcnNlIGEgZGVsdGEg
ZnJvbSB0aGUgaW5wdXQgcmVhZGVyLgorICAvLyBSZXR1cm5zIHRydWUvZmFsc2UgZm9yIHN1Y2Nl
c3MvZmFpbHVyZS4KKyAgLy8gV3JpdGVzIHRoZSBkZWx0YSBpbnRvIHxkZWx0YXwgaWYgc3VjY2Vz
c2Z1bC4KKyAgYm9vbCBQYXJzZURlbHRhKHVpbnQ2NF90KiBkZWx0YSk7CisKKyAgLy8gQWRkIHxk
ZWx0YXwgdG8gfGJhc2V8IHRvIHByb2R1Y2UgdGhlIG5leHQgdmFsdWUgaW4gYSBzZXF1ZW5jZS4K
KyAgLy8gVGhlIGRlbHRhIGlzIGFwcGxpZWQgYXMgc2lnbmVkL3Vuc2lnbmVkIGRlcGVuZGluZyBv
biB0aGUgcGFyYW1ldGVycworICAvLyBnaXZlbiB0byB0aGUgY3Rvci4gV3JhcC1hcm91bmQgaXMg
dGFrZW4gaW50byBhY2NvdW50IGFjY29yZGluZyB0byB0aGUKKyAgLy8gdmFsdWVzJyB3aWR0aCwg
YXMgc3BlY2lmaWVkIGJ5IHRoZSBhZm9yZW1lbnRpb25lZCBlbmNvZGluZyBwYXJhbWV0ZXJzLgor
ICB1aW50NjRfdCBBcHBseURlbHRhKHVpbnQ2NF90IGJhc2UsIHVpbnQ2NF90IGRlbHRhKSBjb25z
dDsKKworICAvLyBIZWxwZXJzIGZvciBBcHBseURlbHRhKCkuCisgIHVpbnQ2NF90IEFwcGx5VW5z
aWduZWREZWx0YSh1aW50NjRfdCBiYXNlLCB1aW50NjRfdCBkZWx0YSkgY29uc3Q7CisgIHVpbnQ2
NF90IEFwcGx5U2lnbmVkRGVsdGEodWludDY0X3QgYmFzZSwgdWludDY0X3QgZGVsdGEpIGNvbnN0
OworCisgIC8vIFJlYWRlciBvZiB0aGUgaW5wdXQgc3RyZWFtIHRvIGJlIGRlY29kZWQuIERvZXMg
bm90IG93biB0aGF0IGJ1ZmZlci4KKyAgLy8gU2VlIGNvbW1lbnQgYWJvdmUgY3RvciBmb3IgZGV0
YWlscy4KKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6Qml0QnVmZmVyPiByZWFkZXJfOwor
CisgIC8vIFRoZSBwYXJhbWV0ZXJzIGFjY29yZGluZyB0byB3aGljaCBlbmNvZGluZyB3aWxsIGJl
IGRvbmUgKHdpZHRoIG9mCisgIC8vIGZpZWxkcywgd2hldGhlciBzaWduZWQgZGVsdGFzIHNob3Vs
ZCBiZSB1c2VkLCBldGMuKQorICBjb25zdCBGaXhlZExlbmd0aEVuY29kaW5nUGFyYW1ldGVycyBw
YXJhbXNfOworCisgIC8vIFRoZSBlbmNvZGluZyBzY2hlbWUgYXNzdW1lcyB0aGF0IGF0IGxlYXN0
IG9uZSB2YWx1ZSBpcyB0cmFuc21pdHRlZCBPT0IsCisgIC8vIHNvIHRoYXQgdGhlIGZpcnN0IHZh
bHVlIGNhbiBiZSBlbmNvZGVkIGFzIGEgZGVsdGEgZnJvbSB0aGF0IE9PQiB2YWx1ZSwKKyAgLy8g
d2hpY2ggaXMgfGJhc2VffC4KKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2Vf
OworCisgIC8vIFRoZSBudW1iZXIgb2YgdmFsdWVzIHRvIGJlIGtub3duIHRvIGJlIGRlY29kZWQu
CisgIGNvbnN0IHNpemVfdCBudW1fb2ZfZGVsdGFzXzsKKworICBSVENfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOKEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyKTsKK307CisKK2Jvb2wgRml4ZWRMZW5n
dGhEZWx0YURlY29kZXI6OklzU3VpdGFibGVEZWNvZGVyRm9yKGNvbnN0IHN0ZDo6c3RyaW5nJiBp
bnB1dCkgeworICBpZiAoaW5wdXQubGVuZ3RoKCkgPCBrQml0c0luSGVhZGVyRm9yRW5jb2RpbmdU
eXBlKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcnRjOjpCaXRCdWZmZXIgcmVhZGVy
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZpbnB1dFswXSksCisgICAgICAgICAg
ICAgICAgICAgICAgICBrQml0c0luSGVhZGVyRm9yRW5jb2RpbmdUeXBlKTsKKworICB1aW50MzJf
dCBlbmNvZGluZ190eXBlX2JpdHM7CisgIGNvbnN0IGJvb2wgcmVzdWx0ID0KKyAgICAgIHJlYWRl
ci5SZWFkQml0cygmZW5jb2RpbmdfdHlwZV9iaXRzLCBrQml0c0luSGVhZGVyRm9yRW5jb2RpbmdU
eXBlKTsKKyAgUlRDX0RDSEVDSyhyZXN1bHQpOworCisgIGNvbnN0IGF1dG8gZW5jb2RpbmdfdHlw
ZSA9IHN0YXRpY19jYXN0PEVuY29kaW5nVHlwZT4oZW5jb2RpbmdfdHlwZV9iaXRzKTsKKyAgcmV0
dXJuIGVuY29kaW5nX3R5cGUgPT0KKyAgICAgICAgICAgICBFbmNvZGluZ1R5cGU6OmtGaXhlZFNp
emVVbnNpZ25lZERlbHRhc05vRWFybHlXcmFwTm9PcHQgfHwKKyAgICAgICAgIGVuY29kaW5nX3R5
cGUgPT0KKyAgICAgICAgICAgICBFbmNvZGluZ1R5cGU6OmtGaXhlZFNpemVTaWduZWREZWx0YXNF
YXJseVdyYXBBbmRPcHRTdXBwb3J0ZWQ7Cit9CisKK3N0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90Pj4gRml4ZWRMZW5ndGhEZWx0YURlY29kZXI6OkRlY29kZURlbHRhcygKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsCisgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJh
c2UsCisgICAgc2l6ZV90IG51bV9vZl9kZWx0YXMpIHsKKyAgYXV0byBkZWNvZGVyID0gRml4ZWRM
ZW5ndGhEZWx0YURlY29kZXI6OkNyZWF0ZShpbnB1dCwgYmFzZSwgbnVtX29mX2RlbHRhcyk7Cisg
IGlmICghZGVjb2RlcikgeworICAgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4+KCk7CisgIH0KKworICByZXR1cm4gZGVjb2Rlci0+RGVjb2RlKCk7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxGaXhlZExlbmd0aERlbHRhRGVjb2Rlcj4gRml4ZWRMZW5ndGhEZWx0YURl
Y29kZXI6OkNyZWF0ZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsCisgICAgYWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgc2l6ZV90IG51bV9vZl9kZWx0YXMpIHsKKyAg
aWYgKGlucHV0Lmxlbmd0aCgpIDwga0JpdHNJbkhlYWRlckZvckVuY29kaW5nVHlwZSkgeworICAg
IHJldHVybiBudWxscHRyOworICB9CisKKyAgYXV0byByZWFkZXIgPSBhYnNsOjptYWtlX3VuaXF1
ZTxydGM6OkJpdEJ1ZmZlcj4oCisgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PigmaW5wdXRbMF0pLCBpbnB1dC5sZW5ndGgoKSk7CisKKyAgLy8gRW5jb2RpbmcgdHlwZQorICB1
aW50MzJfdCBlbmNvZGluZ190eXBlX2JpdHM7CisgIGNvbnN0IGJvb2wgcmVzdWx0ID0KKyAgICAg
IHJlYWRlci0+UmVhZEJpdHMoJmVuY29kaW5nX3R5cGVfYml0cywga0JpdHNJbkhlYWRlckZvckVu
Y29kaW5nVHlwZSk7CisgIFJUQ19EQ0hFQ0socmVzdWx0KTsKKyAgY29uc3QgRW5jb2RpbmdUeXBl
IGVuY29kaW5nID0gc3RhdGljX2Nhc3Q8RW5jb2RpbmdUeXBlPihlbmNvZGluZ190eXBlX2JpdHMp
OworICBpZiAoZW5jb2RpbmcgIT0gRW5jb2RpbmdUeXBlOjprRml4ZWRTaXplVW5zaWduZWREZWx0
YXNOb0Vhcmx5V3JhcE5vT3B0ICYmCisgICAgICBlbmNvZGluZyAhPQorICAgICAgICAgIEVuY29k
aW5nVHlwZTo6a0ZpeGVkU2l6ZVNpZ25lZERlbHRhc0Vhcmx5V3JhcEFuZE9wdFN1cHBvcnRlZCkg
eworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlVucmVjb2duaXplZCBlbmNvZGluZyB0eXBl
LiI7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKworICB1aW50MzJfdCByZWFkX2J1ZmZlcjsK
KworICAvLyBkZWx0YV93aWR0aF9iaXRzCisgIGlmICghcmVhZGVyLT5SZWFkQml0cygmcmVhZF9i
dWZmZXIsIGtCaXRzSW5IZWFkZXJGb3JEZWx0YVdpZHRoQml0cykpIHsKKyAgICByZXR1cm4gbnVs
bHB0cjsKKyAgfQorICBSVENfRENIRUNLX0xFKHJlYWRfYnVmZmVyLCA2NCAtIDEpOyAgLy8gU2Vl
IGVuY29kaW5nIGZvciAtMSdzIHJhdGlvbmFsZS4KKyAgY29uc3QgdWludDY0X3QgZGVsdGFfd2lk
dGhfYml0cyA9CisgICAgICByZWFkX2J1ZmZlciArIDE7ICAvLyBTZWUgZW5jb2RpbmcgZm9yICsx
J3MgcmF0aW9uYWxlLgorCisgIC8vIHNpZ25lZF9kZWx0YXMsIHZhbHVlc19vcHRpb25hbCwgdmFs
dWVfd2lkdGhfYml0cworICBib29sIHNpZ25lZF9kZWx0YXM7CisgIGJvb2wgdmFsdWVzX29wdGlv
bmFsOworICB1aW50NjRfdCB2YWx1ZV93aWR0aF9iaXRzOworICBpZiAoZW5jb2RpbmcgPT0gRW5j
b2RpbmdUeXBlOjprRml4ZWRTaXplVW5zaWduZWREZWx0YXNOb0Vhcmx5V3JhcE5vT3B0KSB7Cisg
ICAgc2lnbmVkX2RlbHRhcyA9IGtEZWZhdWx0U2lnbmVkRGVsdGFzOworICAgIHZhbHVlc19vcHRp
b25hbCA9IGtEZWZhdWx0VmFsdWVzT3B0aW9uYWw7CisgICAgdmFsdWVfd2lkdGhfYml0cyA9IGtE
ZWZhdWx0VmFsdWVXaWR0aEJpdHM7CisgIH0gZWxzZSB7CisgICAgLy8gc2lnbmVkX2RlbHRhcwor
ICAgIGlmICghcmVhZGVyLT5SZWFkQml0cygmcmVhZF9idWZmZXIsIGtCaXRzSW5IZWFkZXJGb3JT
aWduZWREZWx0YXMpKSB7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgc2lnbmVk
X2RlbHRhcyA9IHJ0Yzo6ZGNoZWNrZWRfY2FzdDxib29sPihyZWFkX2J1ZmZlcik7CisKKyAgICAv
LyB2YWx1ZXNfb3B0aW9uYWwKKyAgICBpZiAoIXJlYWRlci0+UmVhZEJpdHMoJnJlYWRfYnVmZmVy
LCBrQml0c0luSGVhZGVyRm9yVmFsdWVzT3B0aW9uYWwpKSB7CisgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgUlRDX0RDSEVDS19MRShyZWFkX2J1ZmZlciwgMSk7CisgICAgdmFsdWVz
X29wdGlvbmFsID0gcnRjOjpkY2hlY2tlZF9jYXN0PGJvb2w+KHJlYWRfYnVmZmVyKTsKKworICAg
IC8vIHZhbHVlX3dpZHRoX2JpdHMKKyAgICBpZiAoIXJlYWRlci0+UmVhZEJpdHMoJnJlYWRfYnVm
ZmVyLCBrQml0c0luSGVhZGVyRm9yVmFsdWVXaWR0aEJpdHMpKSB7CisgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisgICAgUlRDX0RDSEVDS19MRShyZWFkX2J1ZmZlciwgNjQgLSAxKTsgIC8v
IFNlZSBlbmNvZGluZyBmb3IgLTEncyByYXRpb25hbGUuCisgICAgdmFsdWVfd2lkdGhfYml0cyA9
IHJlYWRfYnVmZmVyICsgMTsgIC8vIFNlZSBlbmNvZGluZyBmb3IgKzEncyByYXRpb25hbGUuCisg
IH0KKworICAvLyBOb3RlOiBCZWNhdXNlIG9mIHRoZSB3YXkgdGhlIHBhcmFtZXRlcnMgYXJlIHJl
YWQsIGl0IGlzIG5vdCBwb3NzaWJsZQorICAvLyBmb3IgaWxsZWdhbCB2YWx1ZXMgdG8gYmUgcmVh
ZC4gV2UgY2hlY2sgbmV2ZXJ0aGVsZXNzLCBpbiBjYXNlIHRoZSBjb2RlCisgIC8vIGNoYW5nZXMg
aW4gdGhlIGZ1dHVyZSBpbiBhIHdheSB0aGF0IGJyZWFrcyB0aGlzIHByb21pc2UuCisgIGlmICgh
Rml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnM6OlZhbGlkUGFyYW1ldGVycygKKyAgICAgICAg
ICBkZWx0YV93aWR0aF9iaXRzLCBzaWduZWRfZGVsdGFzLCB2YWx1ZXNfb3B0aW9uYWwsIHZhbHVl
X3dpZHRoX2JpdHMpKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ29ycnVwdCBsb2c7
IGlsbGVnYWwgZW5jb2RpbmcgcGFyYW1ldGVycy4iOworICAgIHJldHVybiBudWxscHRyOworICB9
CisKKyAgRml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnMgcGFyYW1zKGRlbHRhX3dpZHRoX2Jp
dHMsIHNpZ25lZF9kZWx0YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZXNfb3B0aW9uYWwsIHZhbHVlX3dpZHRoX2JpdHMpOworICByZXR1cm4gYWJzbDo6V3Jh
cFVuaXF1ZShuZXcgRml4ZWRMZW5ndGhEZWx0YURlY29kZXIoc3RkOjptb3ZlKHJlYWRlciksIHBh
cmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2UsIG51bV9vZl9kZWx0YXMpKTsKK30KKworRml4ZWRMZW5ndGhEZWx0YURlY29kZXI6
OkZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyKAorICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkJpdEJ1
ZmZlcj4gcmVhZGVyLAorICAgIGNvbnN0IEZpeGVkTGVuZ3RoRW5jb2RpbmdQYXJhbWV0ZXJzJiBw
YXJhbXMsCisgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgc2l6ZV90IG51
bV9vZl9kZWx0YXMpCisgICAgOiByZWFkZXJfKHN0ZDo6bW92ZShyZWFkZXIpKSwKKyAgICAgIHBh
cmFtc18ocGFyYW1zKSwKKyAgICAgIGJhc2VfKGJhc2UpLAorICAgICAgbnVtX29mX2RlbHRhc18o
bnVtX29mX2RlbHRhcykgeworICBSVENfRENIRUNLKHJlYWRlcl8pOworfQorCitzdGQ6OnZlY3Rv
cjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpEZWNv
ZGUoKSB7CisgIFJUQ19EQ0hFQ0socmVhZGVyXyk7CisKKyAgc3RkOjp2ZWN0b3I8Ym9vbD4gZXhp
c3RpbmdfdmFsdWVzKG51bV9vZl9kZWx0YXNfKTsKKyAgaWYgKHBhcmFtc18udmFsdWVzX29wdGlv
bmFsKCkpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9vZl9kZWx0YXNfOyArK2kp
IHsKKyAgICAgIHVpbnQzMl90IGV4aXN0czsKKyAgICAgIGlmICghcmVhZGVyXy0+UmVhZEJpdHMo
JmV4aXN0cywgMXUpKSB7CisgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0
byByZWFkIGV4aXN0ZW5jZS1pbmRpY2F0aW5nIGJpdC4iOworICAgICAgICByZXR1cm4gc3RkOjp2
ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PigpOworICAgICAgfQorICAgICAgUlRDX0RD
SEVDS19MRShleGlzdHMsIDF1KTsKKyAgICAgIGV4aXN0aW5nX3ZhbHVlc1tpXSA9IChleGlzdHMg
PT0gMSk7CisgICAgfQorICB9IGVsc2UgeworICAgIHN0ZDo6ZmlsbChleGlzdGluZ192YWx1ZXMu
YmVnaW4oKSwgZXhpc3RpbmdfdmFsdWVzLmVuZCgpLCB0cnVlKTsKKyAgfQorCisgIGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90PiBwcmV2aW91cyA9IGJhc2VfOworICBzdGQ6OnZlY3RvcjxhYnNsOjpv
cHRpb25hbDx1aW50NjRfdD4+IHZhbHVlcyhudW1fb2ZfZGVsdGFzXyk7CisKKyAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1fb2ZfZGVsdGFzXzsgKytpKSB7CisgICAgaWYgKCFleGlzdGluZ192
YWx1ZXNbaV0pIHsKKyAgICAgIFJUQ19EQ0hFQ0socGFyYW1zXy52YWx1ZXNfb3B0aW9uYWwoKSk7
CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBpZiAoIXByZXZpb3VzKSB7CisgICAgICAv
LyBJZiB0aGUgYmFzZSBpcyBub24tZXhpc3RlbnQsIHRoZSBmaXJzdCBleGlzdGVudCB2YWx1ZSBp
cyBlbmNvZGVkIGFzCisgICAgICAvLyBhIHZhcmludCwgcmF0aGVyIHRoYW4gYXMgYSBkZWx0YS4K
KyAgICAgIFJUQ19EQ0hFQ0soIWJhc2VfLmhhc192YWx1ZSgpKTsKKyAgICAgIHVpbnQ2NF90IGZp
cnN0X3ZhbHVlOworICAgICAgaWYgKCFQYXJzZVZhckludCgmZmlyc3RfdmFsdWUpKSB7CisgICAg
ICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byByZWFkIGZpcnN0IHZhbHVlLiI7
CisgICAgICAgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+KCk7
CisgICAgICB9CisgICAgICB2YWx1ZXNbaV0gPSBmaXJzdF92YWx1ZTsKKyAgICB9IGVsc2Ugewor
ICAgICAgdWludDY0X3QgZGVsdGE7CisgICAgICBpZiAoIVBhcnNlRGVsdGEoJmRlbHRhKSkgewor
ICAgICAgICByZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PigpOwor
ICAgICAgfQorICAgICAgdmFsdWVzW2ldID0gQXBwbHlEZWx0YShwcmV2aW91cy52YWx1ZSgpLCBk
ZWx0YSk7CisgICAgfQorCisgICAgcHJldmlvdXMgPSB2YWx1ZXNbaV07CisgIH0KKworICByZXR1
cm4gdmFsdWVzOworfQorCitib29sIEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpQYXJzZVZhcklu
dCh1aW50NjRfdCogb3V0cHV0KSB7CisgIFJUQ19EQ0hFQ0socmVhZGVyXyk7CisgIHJldHVybiBE
ZWNvZGVWYXJJbnQocmVhZGVyXy5nZXQoKSwgb3V0cHV0KSAhPSAwOworfQorCitib29sIEZpeGVk
TGVuZ3RoRGVsdGFEZWNvZGVyOjpQYXJzZURlbHRhKHVpbnQ2NF90KiBkZWx0YSkgeworICBSVENf
RENIRUNLKHJlYWRlcl8pOworCisgIC8vIEJpdEJ1ZmZlciBhbmQgQml0QnVmZmVyV3JpdGVyIHJl
YWQvd3JpdGUgaGlnaGVyIGJpdHMgYmVmb3JlIGxvd2VyIGJpdHMuCisKKyAgY29uc3Qgc2l6ZV90
IGxvd2VyX2JpdF9jb3VudCA9CisgICAgICBzdGQ6Om1pbjx1aW50NjRfdD4ocGFyYW1zXy5kZWx0
YV93aWR0aF9iaXRzKCksIDMydSk7CisgIGNvbnN0IHNpemVfdCBoaWdoZXJfYml0X2NvdW50ID0g
KHBhcmFtc18uZGVsdGFfd2lkdGhfYml0cygpIDw9IDMydSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogcGFyYW1zXy5kZWx0YV93aWR0aF9iaXRzKCkgLSAzMnU7CisKKyAgdWludDMyX3QgbG93
ZXJfYml0czsKKyAgdWludDMyX3QgaGlnaGVyX2JpdHM7CisKKyAgaWYgKGhpZ2hlcl9iaXRfY291
bnQgPiAwKSB7CisgICAgaWYgKCFyZWFkZXJfLT5SZWFkQml0cygmaGlnaGVyX2JpdHMsIGhpZ2hl
cl9iaXRfY291bnQpKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8g
cmVhZCBoaWdoZXIgaGFsZiBvZiBkZWx0YS4iOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgfSBlbHNlIHsKKyAgICBoaWdoZXJfYml0cyA9IDA7CisgIH0KKworICBpZiAoIXJlYWRlcl8t
PlJlYWRCaXRzKCZsb3dlcl9iaXRzLCBsb3dlcl9iaXRfY291bnQpKSB7CisgICAgUlRDX0xPRyhM
U19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHJlYWQgbG93ZXIgaGFsZiBvZiBkZWx0YS4iOworICAg
IHJldHVybiBmYWxzZTsKKyAgfQorCisgIGNvbnN0IHVpbnQ2NF90IGxvd2VyX2JpdHNfNjQgPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4obG93ZXJfYml0cyk7CisgIGNvbnN0IHVpbnQ2NF90IGhpZ2hl
cl9iaXRzXzY0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGhpZ2hlcl9iaXRzKTsKKworICAqZGVs
dGEgPSAoaGlnaGVyX2JpdHNfNjQgPDwgMzIpIHwgbG93ZXJfYml0c182NDsKKyAgcmV0dXJuIHRy
dWU7Cit9CisKK3VpbnQ2NF90IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpBcHBseURlbHRhKHVp
bnQ2NF90IGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50NjRfdCBkZWx0YSkgY29uc3QgeworICBSVENfRENIRUNLX0xFKGJhc2UsIE1heFVuc2ln
bmVkVmFsdWVPZkJpdFdpZHRoKHBhcmFtc18udmFsdWVfd2lkdGhfYml0cygpKSk7CisgIFJUQ19E
Q0hFQ0tfTEUoZGVsdGEsIE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKHBhcmFtc18uZGVsdGFf
d2lkdGhfYml0cygpKSk7CisgIHJldHVybiBwYXJhbXNfLnNpZ25lZF9kZWx0YXMoKSA/IEFwcGx5
U2lnbmVkRGVsdGEoYmFzZSwgZGVsdGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IEFwcGx5VW5zaWduZWREZWx0YShiYXNlLCBkZWx0YSk7Cit9CisKK3VpbnQ2NF90IEZpeGVk
TGVuZ3RoRGVsdGFEZWNvZGVyOjpBcHBseVVuc2lnbmVkRGVsdGEodWludDY0X3QgYmFzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0
X3QgZGVsdGEpIGNvbnN0IHsKKyAgLy8gTm90ZTogTWF5IHN0aWxsIGJlIHVzZWQgaWYgc2lnbmVk
IGRlbHRhcyB1c2VkLgorICBSVENfRENIRUNLX0xFKGJhc2UsIE1heFVuc2lnbmVkVmFsdWVPZkJp
dFdpZHRoKHBhcmFtc18udmFsdWVfd2lkdGhfYml0cygpKSk7CisgIFJUQ19EQ0hFQ0tfTEUoZGVs
dGEsIE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKHBhcmFtc18uZGVsdGFfd2lkdGhfYml0cygp
KSk7CisgIHJldHVybiAoYmFzZSArIGRlbHRhKSAmIHBhcmFtc18udmFsdWVfbWFzaygpOworfQor
Cit1aW50NjRfdCBGaXhlZExlbmd0aERlbHRhRGVjb2Rlcjo6QXBwbHlTaWduZWREZWx0YSh1aW50
NjRfdCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDY0X3QgZGVsdGEpIGNvbnN0IHsKKyAgUlRDX0RDSEVDSyhwYXJhbXNfLnNpZ25l
ZF9kZWx0YXMoKSk7CisgIFJUQ19EQ0hFQ0tfTEUoYmFzZSwgTWF4VW5zaWduZWRWYWx1ZU9mQml0
V2lkdGgocGFyYW1zXy52YWx1ZV93aWR0aF9iaXRzKCkpKTsKKyAgUlRDX0RDSEVDS19MRShkZWx0
YSwgTWF4VW5zaWduZWRWYWx1ZU9mQml0V2lkdGgocGFyYW1zXy5kZWx0YV93aWR0aF9iaXRzKCkp
KTsKKworICBjb25zdCB1aW50NjRfdCB0b3BfYml0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAocGFyYW1zXy5kZWx0YV93aWR0aF9iaXRz
KCkgLSAxKTsKKworICBjb25zdCBib29sIHBvc2l0aXZlX2RlbHRhID0gKChkZWx0YSAmIHRvcF9i
aXQpID09IDApOworICBpZiAocG9zaXRpdmVfZGVsdGEpIHsKKyAgICByZXR1cm4gQXBwbHlVbnNp
Z25lZERlbHRhKGJhc2UsIGRlbHRhKTsKKyAgfQorCisgIGNvbnN0IHVpbnQ2NF90IGRlbHRhX2Fi
cyA9ICh+ZGVsdGEgJiBwYXJhbXNfLmRlbHRhX21hc2soKSkgKyAxOworICByZXR1cm4gKGJhc2Ug
LSBkZWx0YV9hYnMpICYgcGFyYW1zXy52YWx1ZV9tYXNrKCk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZQorCitzdGQ6OnN0cmluZyBFbmNvZGVEZWx0YXMoYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJh
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0
aW9uYWw8dWludDY0X3Q+PiYgdmFsdWVzKSB7CisgIC8vIFRPRE8oZWxhZGFsb24pOiBTdXBwb3J0
IGFkZGl0aW9uYWwgZW5jb2RpbmdzLgorICByZXR1cm4gRml4ZWRMZW5ndGhEZWx0YUVuY29kZXI6
OkVuY29kZURlbHRhcyhiYXNlLCB2YWx1ZXMpOworfQorCitzdGQ6OnZlY3RvcjxhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4+IERlY29kZURlbHRhcygKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5w
dXQsCisgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgc2l6ZV90IG51bV9v
Zl9kZWx0YXMpIHsKKyAgUlRDX0RDSEVDS19HVChudW1fb2ZfZGVsdGFzLCAwKTsgIC8vIEFsbG93
cyBlbXB0eSB2ZWN0b3IgdG8gaW5kaWNhdGUgZXJyb3IuCisKKyAgLy8gVGhlIGVtcHR5IHN0cmlu
ZyBpcyBhIHNwZWNpYWwgY2FzZSBpbmRpY2F0aW5nIHRoYXQgYWxsIHZhbHVlcyB3ZXJlIGVxdWFs
CisgIC8vIHRvIHRoZSBiYXNlLgorICBpZiAoaW5wdXQuZW1wdHkoKSkgeworICAgIHN0ZDo6dmVj
dG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gcmVzdWx0KG51bV9vZl9kZWx0YXMpOworICAg
IHN0ZDo6ZmlsbChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBiYXNlKTsKKyAgICByZXR1
cm4gcmVzdWx0OworICB9CisKKyAgaWYgKEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpJc1N1aXRh
YmxlRGVjb2RlckZvcihpbnB1dCkpIHsKKyAgICByZXR1cm4gRml4ZWRMZW5ndGhEZWx0YURlY29k
ZXI6OkRlY29kZURlbHRhcyhpbnB1dCwgYmFzZSwgbnVtX29mX2RlbHRhcyk7CisgIH0KKworICBS
VENfTE9HKExTX1dBUk5JTkcpIDw8ICJDb3VsZCBub3QgZGVjb2RlIGRlbHRhLWVuY29kZWQgc3Ry
ZWFtLiI7CisgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+KCk7
Cit9CisKK3ZvaWQgU2V0Rml4ZWRMZW5ndGhFbmNvZGVyRGVsdGFTaWduZWRuZXNzRm9yVGVzdGlu
Zyhib29sIHNpZ25lZG5lc3MpIHsKKyAgZ19mb3JjZV91bnNpZ25lZF9mb3JfdGVzdGluZyA9ICFz
aWduZWRuZXNzOworICBnX2ZvcmNlX3NpZ25lZF9mb3JfdGVzdGluZyA9IHNpZ25lZG5lc3M7Cit9
CisKK3ZvaWQgVW5zZXRGaXhlZExlbmd0aEVuY29kZXJEZWx0YVNpZ25lZG5lc3NGb3JUZXN0aW5n
KCkgeworICBnX2ZvcmNlX3Vuc2lnbmVkX2Zvcl90ZXN0aW5nID0gZmFsc2U7CisgIGdfZm9yY2Vf
c2lnbmVkX2Zvcl90ZXN0aW5nID0gZmFsc2U7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29kaW5nLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5j
b2Rlci9kZWx0YV9lbmNvZGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNWU4YjdmNDNjZGQ0YjlkNDI5MGZi
ZDRmYzg2MGRmNTY2ZDUxZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9kZWx0
YV9lbmNvZGluZy5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX0RFTFRBX0VOQ09ESU5HX0hfCisj
ZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX0RFTFRBX0VOQ09ESU5HX0hfCisK
KyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gRW5jb2RlIHx2YWx1
ZXN8IGFzIGEgc2VxdWVuY2Ugb2YgZGVsdGFzIGZvbGxvd2luZyBvbiB8YmFzZXwgYW5kIHJldHVy
biBpdC4KKy8vIElmIGFsbCBvZiB0aGUgdmFsdWVzIHdlcmUgZXF1YWwgdG8gdGhlIGJhc2UsIGFu
IGVtcHR5IHN0cmluZyB3aWxsIGJlCisvLyByZXR1cm5lZDsgdGhpcyBpcyBhIHZhbGlkIGVuY29k
aW5nIG9mIHRoYXQgZWRnZSBjYXNlLgorLy8gfGJhc2V8IGlzIG5vdCBndWFyYW50ZWVkIHRvIGJl
IHdyaXR0ZW4gaW50byB8b3V0cHV0fCwgYW5kIG11c3QgdGhlcmVmb3JlCisvLyBiZSBwcm92aWRl
ZCBzZXBhcmF0ZWx5IHRvIHRoZSBkZWNvZGVyLgorLy8gVGhpcyBmdW5jdGlvbiBuZXZlciBmYWls
cy4KKy8vIFRPRE8oZWxhZGFsb24pOiBTcGxpdCBpbnRvIG9wdGlvbmFsIGFuZCBub24tb3B0aW9u
YWwgdmFyaWFudHMgKGVmZmljaWVuY3kpLgorc3RkOjpzdHJpbmcgRW5jb2RlRGVsdGFzKGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4mIHZhbHVlcyk7CisKKy8vIEVu
Y29kZURlbHRhcygpIGFuZCBEZWNvZGVEZWx0YXMoKSBhcmUgaW52ZXJzZSBvcGVyYXRpb25zOwor
Ly8gaW52b2tpbmcgRGVjb2RlRGVsdGFzKCkgb3ZlciB0aGUgb3V0cHV0IG9mIEVuY29kZURlbHRh
cygpLCB3aWxsIHJldHVybgorLy8gdGhlIGlucHV0IG9yaWdpbmFsbHkgZ2l2ZW4gdG8gRW5jb2Rl
RGVsdGFzKCkuCisvLyB8bnVtX29mX2RlbHRhc3wgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4g
SWYgaW5wdXQgaXMgbm90IGEgdmFsaWQgZW5jb2RpbmcKKy8vIG9mIHxudW1fb2ZfZGVsdGFzfCBl
bGVtZW50cyBiYXNlZCBvbiB8YmFzZXwsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5Cisv
LyB2ZWN0b3IsIHdoaWNoIHNpZ25hbHMgYW4gZXJyb3IuCisvLyBUT0RPKGVsYWRhbG9uKTogU3Bs
aXQgaW50byBvcHRpb25hbCBhbmQgbm9uLW9wdGlvbmFsIHZhcmlhbnRzIChlZmZpY2llbmN5KS4K
K3N0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gRGVjb2RlRGVsdGFzKAorICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwKKyAgICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4g
YmFzZSwKKyAgICBzaXplX3QgbnVtX29mX2RlbHRhcyk7CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKKworI2VuZGlmICAvLyBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9ERUxUQV9FTkNP
RElOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmdfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZW5jb2Rlci9kZWx0YV9lbmNvZGluZ191bml0dGVzdC5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jYTQ0MDEwZWRhYzMwMDVhZjUxZjkwY2RkZjU5MzgyNGY0NTVmYTE0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmdfdW5pdHRlc3QuY2MKQEAgLTAs
MCArMSw2OTMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisg
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuaCIKKworI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxz
dHJpbmc+CisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAi
YWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3JhbmRvbS5o
IgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK3ZvaWQg
U2V0Rml4ZWRMZW5ndGhFbmNvZGVyRGVsdGFTaWduZWRuZXNzRm9yVGVzdGluZyhib29sIHNpZ25l
ZG5lc3MpOwordm9pZCBVbnNldEZpeGVkTGVuZ3RoRW5jb2RlckRlbHRhU2lnbmVkbmVzc0ZvclRl
c3RpbmcoKTsKKworbmFtZXNwYWNlIHsKKworZW51bSBjbGFzcyBEZWx0YVNpZ25lZG5lc3MgeyBr
Tm9PdmVycmlkZSwga0ZvcmNlVW5zaWduZWQsIGtGb3JjZVNpZ25lZCB9OworCit2b2lkIE1heWJl
U2V0U2lnbmVkbmVzcyhEZWx0YVNpZ25lZG5lc3Mgc2lnbmVkbmVzcykgeworICBzd2l0Y2ggKHNp
Z25lZG5lc3MpIHsKKyAgICBjYXNlIERlbHRhU2lnbmVkbmVzczo6a05vT3ZlcnJpZGU6CisgICAg
ICBVbnNldEZpeGVkTGVuZ3RoRW5jb2RlckRlbHRhU2lnbmVkbmVzc0ZvclRlc3RpbmcoKTsKKyAg
ICAgIHJldHVybjsKKyAgICBjYXNlIERlbHRhU2lnbmVkbmVzczo6a0ZvcmNlVW5zaWduZWQ6Cisg
ICAgICBTZXRGaXhlZExlbmd0aEVuY29kZXJEZWx0YVNpZ25lZG5lc3NGb3JUZXN0aW5nKGZhbHNl
KTsKKyAgICAgIHJldHVybjsKKyAgICBjYXNlIERlbHRhU2lnbmVkbmVzczo6a0ZvcmNlU2lnbmVk
OgorICAgICAgU2V0Rml4ZWRMZW5ndGhFbmNvZGVyRGVsdGFTaWduZWRuZXNzRm9yVGVzdGluZyh0
cnVlKTsKKyAgICAgIHJldHVybjsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworfQorCit1aW50
NjRfdCBSYW5kb21XaXRoTWF4Qml0V2lkdGgoUmFuZG9tKiBwcm5nLCB1aW50NjRfdCBtYXhfd2lk
dGgpIHsKKyAgUlRDX0RDSEVDS19HRShtYXhfd2lkdGgsIDF1KTsKKyAgUlRDX0RDSEVDS19MRSht
YXhfd2lkdGgsIDY0dSk7CisKKyAgY29uc3QgdWludDY0X3QgbG93ID0gcHJuZy0+UmFuZChzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOworICBjb25zdCB1aW50NjRfdCBoaWdo
ID0KKyAgICAgIG1heF93aWR0aCA+IDMydSA/IHBybmctPlJhbmQoc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpKSA6IDB1OworCisgIGNvbnN0IHVpbnQ2NF90IHJhbmRvbV9iZWZv
cmVfbWFzayA9IChoaWdoIDw8IDMyKSB8IGxvdzsKKworICBpZiAobWF4X3dpZHRoIDwgNjQpIHsK
KyAgICByZXR1cm4gcmFuZG9tX2JlZm9yZV9tYXNrICYgKChzdGF0aWNfY2FzdDx1aW50NjRfdD4o
MSkgPDwgbWF4X3dpZHRoKSAtIDEpOworICB9IGVsc2UgeworICAgIHJldHVybiByYW5kb21fYmVm
b3JlX21hc2s7CisgIH0KK30KKworLy8gRW5jb2RlcyB8dmFsdWVzfCBiYXNlZCBvbiB8YmFzZXws
IHRoZW4gZGVjb2RlcyB0aGUgcmVzdWx0IGFuZCBtYWtlcyBzdXJlCisvLyB0aGF0IGl0IGlzIGVx
dWFsIHRvIHRoZSBvcmlnaW5hbCBpbnB1dC4KKy8vIElmIHxlbmNvZGVkX3N0cmluZ3wgaXMgbm9u
LW51bGwsIHRoZSBlbmNvZGVkIHJlc3VsdCB3aWxsIGFsc28gYmUgd3JpdHRlbgorLy8gaW50byBp
dC4KK3ZvaWQgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoCisgICAgYWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGJhc2UsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0
X3Q+PiYgdmFsdWVzLAorICAgIHN0ZDo6c3RyaW5nKiBlbmNvZGVkX3N0cmluZyA9IG51bGxwdHIp
IHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IEVuY29kZURlbHRhcyhiYXNlLCB2YWx1
ZXMpOworICBpZiAoZW5jb2RlZF9zdHJpbmcpIHsKKyAgICAqZW5jb2RlZF9zdHJpbmcgPSBlbmNv
ZGVkOworICB9CisKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+
PiBkZWNvZGVkID0KKyAgICAgIERlY29kZURlbHRhcyhlbmNvZGVkLCBiYXNlLCB2YWx1ZXMuc2l6
ZSgpKTsKKworICBFWFBFQ1RfRVEoZGVjb2RlZCwgdmFsdWVzKTsKK30KKworc3RkOjp2ZWN0b3I8
YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBDcmVhdGVTZXF1ZW5jZUJ5Rmlyc3RWYWx1ZSgKKyAg
ICB1aW50NjRfdCBmaXJzdCwKKyAgICBzaXplX3Qgc2VxdWVuY2VfbGVuZ3RoKSB7CisgIHN0ZDo6
dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gc2VxdWVuY2Uoc2VxdWVuY2VfbGVuZ3Ro
KTsKKyAgc3RkOjppb3RhKHNlcXVlbmNlLmJlZ2luKCksIHNlcXVlbmNlLmVuZCgpLCBmaXJzdCk7
CisgIHJldHVybiBzZXF1ZW5jZTsKK30KKworc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+PiBDcmVhdGVTZXF1ZW5jZUJ5TGFzdFZhbHVlKAorICAgIHVpbnQ2NF90IGxhc3QsCisg
ICAgc2l6ZV90IG51bV92YWx1ZXMpIHsKKyAgY29uc3QgdWludDY0X3QgZmlyc3QgPSBsYXN0IC0g
bnVtX3ZhbHVlcyArIDE7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4g
cmVzdWx0KG51bV92YWx1ZXMpOworICBzdGQ6OmlvdGEocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5l
bmQoKSwgZmlyc3QpOworICByZXR1cm4gcmVzdWx0OworfQorCisvLyBJZiB8c2VxdWVuY2VfbGVu
Z3RofCBpcyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBkZWx0YXMsIHRoZSBzZXF1ZW5jZSBv
ZgorLy8gZGVsdGFzIHdpbGwgd3JhcCBhcm91bmQuCitzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4+IENyZWF0ZVNlcXVlbmNlQnlPcHRpb25hbERlbHRhcygKKyAgICB1aW50NjRf
dCBmaXJzdCwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+
JiBkZWx0YXMsCisgICAgc2l6ZV90IHNlcXVlbmNlX2xlbmd0aCkgeworICBSVENfRENIRUNLX0dF
KHNlcXVlbmNlX2xlbmd0aCwgMSk7CisKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+PiBzZXF1ZW5jZShzZXF1ZW5jZV9sZW5ndGgpOworCisgIHVpbnQ2NF90IHByZXZpb3Vz
ID0gZmlyc3Q7CisgIGZvciAoc2l6ZV90IGkgPSAwLCBuZXh0X2RlbHRhX2luZGV4ID0gMDsgaSA8
IHNlcXVlbmNlLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGRlbHRhc1tuZXh0X2RlbHRhX2luZGV4
XS5oYXNfdmFsdWUoKSkgeworICAgICAgc2VxdWVuY2VbaV0gPQorICAgICAgICAgIGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90PihwcmV2aW91cyArIGRlbHRhc1tuZXh0X2RlbHRhX2luZGV4XS52YWx1
ZSgpKTsKKyAgICAgIHByZXZpb3VzID0gc2VxdWVuY2VbaV0udmFsdWUoKTsKKyAgICB9CisgICAg
bmV4dF9kZWx0YV9pbmRleCA9IChuZXh0X2RlbHRhX2luZGV4ICsgMSkgJSBkZWx0YXMuc2l6ZSgp
OworICB9CisKKyAgcmV0dXJuIHNlcXVlbmNlOworfQorCitzaXplX3QgRW5jb2RpbmdMZW5ndGhV
cHBlckJvdW5kKHNpemVfdCBkZWx0YV9tYXhfYml0X3dpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbnVtX29mX2RlbHRhcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGVsdGFTaWduZWRuZXNzIHNpZ25lZG5lc3Nfb3ZlcnJpZGUpIHsKKyAgYWJz
bDo6b3B0aW9uYWw8c2l6ZV90PiBzbWFsbGVzdF9oZWFkZXJfc2l6ZV9ieXRlczsKKyAgc3dpdGNo
IChzaWduZWRuZXNzX292ZXJyaWRlKSB7CisgICAgY2FzZSBEZWx0YVNpZ25lZG5lc3M6OmtOb092
ZXJyaWRlOgorICAgIGNhc2UgRGVsdGFTaWduZWRuZXNzOjprRm9yY2VVbnNpZ25lZDoKKyAgICAg
IHNtYWxsZXN0X2hlYWRlcl9zaXplX2J5dGVzID0gMTsKKyAgICAgIGJyZWFrOworICAgIGNhc2Ug
RGVsdGFTaWduZWRuZXNzOjprRm9yY2VTaWduZWQ6CisgICAgICBzbWFsbGVzdF9oZWFkZXJfc2l6
ZV9ieXRlcyA9IDI7CisgICAgICBicmVhazsKKyAgfQorICBSVENfRENIRUNLKHNtYWxsZXN0X2hl
YWRlcl9zaXplX2J5dGVzKTsKKworICByZXR1cm4gZGVsdGFfbWF4X2JpdF93aWR0aCAqIG51bV9v
Zl9kZWx0YXMgKyAqc21hbGxlc3RfaGVhZGVyX3NpemVfYnl0ZXM7Cit9CisKKy8vIElmIHxzZXF1
ZW5jZV9sZW5ndGh8IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGRlbHRhcywgdGhlIHNl
cXVlbmNlIG9mCisvLyBkZWx0YXMgd2lsbCB3cmFwIGFyb3VuZC4KK3N0ZDo6dmVjdG9yPGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90Pj4gQ3JlYXRlU2VxdWVuY2VCeURlbHRhcygKKyAgICB1aW50NjRf
dCBmaXJzdCwKKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50NjRfdD4mIGRlbHRhcywKKyAgICBz
aXplX3Qgc2VxdWVuY2VfbGVuZ3RoKSB7CisgIFJUQ19EQ0hFQ0soIWRlbHRhcy5lbXB0eSgpKTsK
KyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBvcHRpb25hbF9kZWx0YXMo
ZGVsdGFzLnNpemUoKSk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVsdGFzLnNpemUoKTsg
KytpKSB7CisgICAgb3B0aW9uYWxfZGVsdGFzW2ldID0gYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+
KGRlbHRhc1tpXSk7CisgIH0KKyAgcmV0dXJuIENyZWF0ZVNlcXVlbmNlQnlPcHRpb25hbERlbHRh
cyhmaXJzdCwgb3B0aW9uYWxfZGVsdGFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlcXVlbmNlX2xlbmd0aCk7Cit9CisKKy8vIFRlc3RzIG9mIHRoZSBkZWx0YSBl
bmNvZGluZywgcGFyYW1ldGVyaXplZCBieSB0aGUgbnVtYmVyIG9mIHZhbHVlcworLy8gaW4gdGhl
IHNlcXVlbmNlIGNyZWF0ZWQgYnkgdGhlIHRlc3QuCitjbGFzcyBEZWx0YUVuY29kaW5nVGVzdAor
ICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTwKKyAgICAgICAgICBzdGQ6OnR1
cGxlPERlbHRhU2lnbmVkbmVzcywgc2l6ZV90LCBib29sLCB1aW50NjRfdD4+IHsKKyBwdWJsaWM6
CisgIERlbHRhRW5jb2RpbmdUZXN0KCkKKyAgICAgIDogc2lnbmVkbmVzc18oc3RkOjpnZXQ8MD4o
R2V0UGFyYW0oKSkpLAorICAgICAgICBudW1fb2ZfdmFsdWVzXyhzdGQ6OmdldDwxPihHZXRQYXJh
bSgpKSksCisgICAgICAgIG9wdGlvbmFsX3ZhbHVlc18oc3RkOjpnZXQ8Mj4oR2V0UGFyYW0oKSkp
LAorICAgICAgICBwYXJ0aWFsX3JhbmRvbV9zZWVkXyhzdGQ6OmdldDwzPihHZXRQYXJhbSgpKSkg
eworICAgIE1heWJlU2V0U2lnbmVkbmVzcyhzaWduZWRuZXNzXyk7CisgIH0KKworICB+RGVsdGFF
bmNvZGluZ1Rlc3QoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgLy8gUnVubmluZyB3aXRoIHRo
ZSBzYW1lIHNlZWQgZm9yIGFsbCB2YXJpYW50cyB3b3VsZCBtYWtlIGFsbCB0ZXN0cyBzdGFydAor
ICAvLyB3aXRoIHRoZSBzYW1lIHNlcXVlbmNlOyBhdm9pZCB0aGlzIGJ5IG1ha2luZyB0aGUgc2Vl
ZCBkaWZmZXJlbnQuCisgIHVpbnQ2NF90IFNlZWQoKSBjb25zdCB7CisgICAgLy8gTXVsdGlwbHkg
ZXZlcnl0aGluZyBidXQgYnkgZGlmZmVyZW50IHByaW1lcyB0byBwcm9kdWNlIHVuaXF1ZSByZXN1
bHRzLgorICAgIHJldHVybiAyICogc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpZ25lZG5lc3NfKSAr
IDMgKiBudW1fb2ZfdmFsdWVzXyArCisgICAgICAgICAgIDUgKiBvcHRpb25hbF92YWx1ZXNfICsg
NyAqIHBhcnRpYWxfcmFuZG9tX3NlZWRfOworICB9CisKKyAgY29uc3QgRGVsdGFTaWduZWRuZXNz
IHNpZ25lZG5lc3NfOworICBjb25zdCB1aW50NjRfdCBudW1fb2ZfdmFsdWVzXzsKKyAgY29uc3Qg
Ym9vbCBvcHRpb25hbF92YWx1ZXNfOworICBjb25zdCB1aW50NjRfdCBwYXJ0aWFsX3JhbmRvbV9z
ZWVkXzsgIC8vIEV4cGxhaW5lZCB3aGVyZSBpdCdzIHVzZWQuCit9OworCitURVNUX1AoRGVsdGFF
bmNvZGluZ1Rlc3QsIEFsbFZhbHVlc0VxdWFsVG9FeGlzdGVudEJhc2VWYWx1ZSkgeworICBjb25z
dCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKyAgc3RkOjp2ZWN0b3I8YWJz
bDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMobnVtX29mX3ZhbHVlc18pOworICBzdGQ6OmZp
bGwodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSwgYmFzZSk7CisgIHN0ZDo6c3RyaW5nIGVu
Y29kZWQ7CisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcywgJmVuY29kZWQp
OworCisgIC8vIEFkZGl0aW9uYWwgcmVxdWlyZW1lbnQgLSB0aGUgZW5jb2Rpbmcgc2hvdWxkIGJl
IGVmZmljaWVudCBpbiB0aGlzCisgIC8vIGNhc2UgLSB0aGUgZW1wdHkgc3RyaW5nIHdpbGwgYmUg
dXNlZC4KKyAgRVhQRUNUX1RSVUUoZW5jb2RlZC5lbXB0eSgpKTsKK30KKworVEVTVF9QKERlbHRh
RW5jb2RpbmdUZXN0LCBBbGxWYWx1ZXNFcXVhbFRvTm9uRXhpc3RlbnRCYXNlVmFsdWUpIHsKKyAg
aWYgKCFvcHRpb25hbF92YWx1ZXNfKSB7CisgICAgcmV0dXJuOyAgLy8gVGVzdCBpcnJlbGV2YW50
IGZvciB0aGlzIGNhc2UuCisgIH0KKworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4g
YmFzZTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMobnVt
X29mX3ZhbHVlc18pOworICBzdGQ6OmZpbGwodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSwg
YmFzZSk7CisgIHN0ZDo6c3RyaW5nIGVuY29kZWQ7CisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5n
KGJhc2UsIHZhbHVlcywgJmVuY29kZWQpOworCisgIC8vIEFkZGl0aW9uYWwgcmVxdWlyZW1lbnQg
LSB0aGUgZW5jb2Rpbmcgc2hvdWxkIGJlIGVmZmljaWVudCBpbiB0aGlzCisgIC8vIGNhc2UgLSB0
aGUgZW1wdHkgc3RyaW5nIHdpbGwgYmUgdXNlZC4KKyAgRVhQRUNUX1RSVUUoZW5jb2RlZC5lbXB0
eSgpKTsKK30KKworVEVTVF9QKERlbHRhRW5jb2RpbmdUZXN0LCBCYXNlTm9uRXhpc3RlbnRCdXRT
b21lT3RoZXJWYWx1ZXNFeGlzdCkgeworICBpZiAoIW9wdGlvbmFsX3ZhbHVlc18pIHsKKyAgICBy
ZXR1cm47ICAvLyBUZXN0IGlycmVsZXZhbnQgZm9yIHRoaXMgY2FzZS4KKyAgfQorCisgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlOworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4+IHZhbHVlcyhudW1fb2ZfdmFsdWVzXyk7CisKKyAgUmFuZG9tIHBybmco
U2VlZCgpKTsKKworICBjb25zdCB1aW50NjRfdCBtYXhfYml0X3dpZHRoID0gMSArIHBybmcuUmFu
ZCg2Myk7ICAvLyBbMSwgNjRdCisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6
ZSgpOykgeworICAgIC8vIExlYXZlIGEgcmFuZG9tIG51bWJlciBvZiB2YWx1ZXMgYXMgbm9uLWV4
aXN0ZW50LgorICAgIGNvbnN0IHNpemVfdCBub25fZXhpc3RlbnRfY291bnQgPSBwcm5nLlJhbmQo
dmFsdWVzLnNpemUoKSAtIGkgLSAxKTsKKyAgICBpICs9IG5vbl9leGlzdGVudF9jb3VudDsKKwor
ICAgIC8vIEFzc2lnbiByYW5kb20gdmFsdWVzIHRvIGEgcmFuZG9tIG51bWJlciBvZiB2YWx1ZXMu
IChBdCBsZWFzdCBvbmUsIHRvCisgICAgLy8gcHJldmVudCB0aGlzIGl0ZXJhdGlvbiBvZiB0aGUg
b3V0ZXIgbG9vcCBmcm9tIGJlaW5nIGEgbm8tb3AuKQorICAgIGNvbnN0IHNpemVfdCBleGlzdGVu
dF9jb3VudCA9CisgICAgICAgIHN0ZDo6bWF4PHNpemVfdD4ocHJuZy5SYW5kKHZhbHVlcy5zaXpl
KCkgLSBpIC0gMSksIDEpOworICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZXhpc3RlbnRfY291
bnQ7ICsraikgeworICAgICAgdmFsdWVzW2kgKyBqXSA9IFJhbmRvbVdpdGhNYXhCaXRXaWR0aCgm
cHJuZywgbWF4X2JpdF93aWR0aCk7CisgICAgfQorICAgIGkgKz0gZXhpc3RlbnRfY291bnQ7Cisg
IH0KKworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2YWx1ZXMpOworfQorCitURVNU
X1AoRGVsdGFFbmNvZGluZ1Rlc3QsIE1pbkRlbHRhTm9XcmFwQXJvdW5kKSB7CisgIGNvbnN0IGFi
c2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlKDM0MzIpOworCisgIGF1dG8gdmFsdWVzID0gQ3Jl
YXRlU2VxdWVuY2VCeUZpcnN0VmFsdWUoYmFzZS52YWx1ZSgpICsgMSwgbnVtX29mX3ZhbHVlc18p
OworICBBU1NFUlRfR1QodmFsdWVzW3ZhbHVlcy5zaXplKCkgLSAxXSwgYmFzZSkgPDwgIlNhbml0
eTsgbXVzdCBub3Qgd3JhcCBhcm91bmQiOworCisgIGlmIChvcHRpb25hbF92YWx1ZXNfKSB7Cisg
ICAgLy8gQXJiaXRyYXJpbHkgbWFrZSBvbmUgb2YgdGhlIHZhbHVlcyBub24tZXhpc3RlbnQsIHRv
IGZvcmNlCisgICAgLy8gb3B0aW9uYWwtc3VwcG9ydGluZyBlbmNvZGluZy4KKyAgICB2YWx1ZXNb
MF0gPSBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgfQorCisgIFRlc3RFbmNvZGluZ0Fu
ZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKK1RFU1RfUChEZWx0YUVuY29kaW5nVGVzdCwg
QmlnRGVsdGFOb1dyYXBBcm91bmQpIHsKKyAgY29uc3QgdWludDY0X3Qga0JpZ0RlbHRhID0gMTMy
ODI4OworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKworICBh
dXRvIHZhbHVlcyA9CisgICAgICBDcmVhdGVTZXF1ZW5jZUJ5Rmlyc3RWYWx1ZShiYXNlLnZhbHVl
KCkgKyBrQmlnRGVsdGEsIG51bV9vZl92YWx1ZXNfKTsKKyAgQVNTRVJUX0dUKHZhbHVlc1t2YWx1
ZXMuc2l6ZSgpIC0gMV0sIGJhc2UpIDw8ICJTYW5pdHk7IG11c3Qgbm90IHdyYXAgYXJvdW5kIjsK
KworICBpZiAob3B0aW9uYWxfdmFsdWVzXykgeworICAgIC8vIEFyYml0cmFyaWx5IG1ha2Ugb25l
IG9mIHRoZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0byBmb3JjZQorICAgIC8vIG9wdGlvbmFsLXN1
cHBvcnRpbmcgZW5jb2RpbmcuCisgICAgdmFsdWVzWzBdID0gYWJzbDo6b3B0aW9uYWw8dWludDY0
X3Q+KCk7CisgIH0KKworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2YWx1ZXMpOwor
fQorCitURVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIE1heERlbHRhTm9XcmFwQXJvdW5kKSB7Cisg
IGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlKDM0MzIpOworCisgIGF1dG8gdmFs
dWVzID0gQ3JlYXRlU2VxdWVuY2VCeUxhc3RWYWx1ZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWF4KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dW1fb2ZfdmFsdWVzXyk7CisgIEFTU0VSVF9HVCh2YWx1ZXNbdmFsdWVzLnNpemUoKSAtIDFdLCBi
YXNlKSA8PCAiU2FuaXR5OyBtdXN0IG5vdCB3cmFwIGFyb3VuZCI7CisKKyAgaWYgKG9wdGlvbmFs
X3ZhbHVlc18pIHsKKyAgICAvLyBBcmJpdHJhcmlseSBtYWtlIG9uZSBvZiB0aGUgdmFsdWVzIG5v
bi1leGlzdGVudCwgdG8gZm9yY2UKKyAgICAvLyBvcHRpb25hbC1zdXBwb3J0aW5nIGVuY29kaW5n
LgorICAgIHZhbHVlc1swXSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICB9CisKKyAg
VGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworVEVTVF9QKERlbHRh
RW5jb2RpbmdUZXN0LCBTbWFsbERlbHRhV2l0aFdyYXBBcm91bmRDb21wYXJlZFRvQmFzZSkgewor
ICBpZiAob3B0aW9uYWxfdmFsdWVzXyAmJiBudW1fb2ZfdmFsdWVzXyA9PSAxKSB7CisgICAgcmV0
dXJuOyAgLy8gSW5hcHBsaWNhYmxlCisgIH0KKworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50
NjRfdD4gYmFzZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOworCisgIGF1
dG8gdmFsdWVzID0gQ3JlYXRlU2VxdWVuY2VCeURlbHRhcygqYmFzZSwgezEsIDEwLCAzfSwgbnVt
X29mX3ZhbHVlc18pOworICBBU1NFUlRfTFQodmFsdWVzWzBdLCBiYXNlKSA8PCAiU2FuaXR5OyBt
dXN0IHdyYXAgYXJvdW5kIjsKKworICBpZiAob3B0aW9uYWxfdmFsdWVzXykgeworICAgIC8vIEFy
Yml0cmFyaWx5IG1ha2Ugb25lIG9mIHRoZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0byBmb3JjZQor
ICAgIC8vIG9wdGlvbmFsLXN1cHBvcnRpbmcgZW5jb2RpbmcuCisgICAgdmFsdWVzWzFdID0gYWJz
bDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgIH0KKworICBUZXN0RW5jb2RpbmdBbmREZWNvZGlu
ZyhiYXNlLCB2YWx1ZXMpOworfQorCitURVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIFNtYWxsRGVs
dGFXaXRoV3JhcEFyb3VuZEluVmFsdWVTZXF1ZW5jZSkgeworICBpZiAobnVtX29mX3ZhbHVlc18g
PT0gMSB8fCAob3B0aW9uYWxfdmFsdWVzXyAmJiBudW1fb2ZfdmFsdWVzXyA8IDMpKSB7CisgICAg
cmV0dXJuOyAgLy8gSW5hcHBsaWNhYmxlLgorICB9CisKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+IGJhc2Uoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIC0gMik7
CisKKyAgYXV0byB2YWx1ZXMgPSBDcmVhdGVTZXF1ZW5jZUJ5RGVsdGFzKCpiYXNlLCB7MSwgMTAs
IDN9LCBudW1fb2ZfdmFsdWVzXyk7CisgIEFTU0VSVF9MVCh2YWx1ZXNbdmFsdWVzLnNpemUoKSAt
IDFdLCB2YWx1ZXNbMF0pIDw8ICJTYW5pdHk7IG11c3Qgd3JhcCBhcm91bmQiOworCisgIGlmIChv
cHRpb25hbF92YWx1ZXNfKSB7CisgICAgLy8gQXJiaXRyYXJpbHkgbWFrZSBvbmUgb2YgdGhlIHZh
bHVlcyBub24tZXhpc3RlbnQsIHRvIGZvcmNlCisgICAgLy8gb3B0aW9uYWwtc3VwcG9ydGluZyBl
bmNvZGluZy4KKyAgICBSVENfRENIRUNLX0dUKHZhbHVlcy5zaXplKCkgLSAxLCAxdSk7ICAvLyBX
cmFwIGFyb3VuZCBub3QgY2FuY2VsbGVkLgorICAgIHZhbHVlc1sxXSA9IGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90PigpOworICB9CisKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFs
dWVzKTsKK30KKworLy8gU3VwcHJlc3MgImludGVncmFsIGNvbnN0YW50IG92ZXJmbG93IiB3YXJu
aW5nOyB0aGlzIGlzIHRoZSB0ZXN0J3MgZm9jdXMuCisjaWZkZWYgX01TQ19WRVIKKyNwcmFnbWEg
d2FybmluZyhwdXNoKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MzA3KQorI2VuZGlmCitU
RVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIEJpZ0RlbHRhV2l0aFdyYXBBcm91bmRDb21wYXJlZFRv
QmFzZSkgeworICBpZiAob3B0aW9uYWxfdmFsdWVzXyAmJiBudW1fb2ZfdmFsdWVzXyA9PSAxKSB7
CisgICAgcmV0dXJuOyAgLy8gSW5hcHBsaWNhYmxlCisgIH0KKworICBjb25zdCB1aW50NjRfdCBr
QmlnRGVsdGEgPSAxMzI4Mjg7CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNl
KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSAtCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtCaWdEZWx0YSArIDMpOworCisgIGF1dG8gdmFsdWVzID0K
KyAgICAgIENyZWF0ZVNlcXVlbmNlQnlGaXJzdFZhbHVlKGJhc2UudmFsdWUoKSArIGtCaWdEZWx0
YSwgbnVtX29mX3ZhbHVlc18pOworICBBU1NFUlRfTFQodmFsdWVzWzBdLCBiYXNlLnZhbHVlKCkp
IDw8ICJTYW5pdHk7IG11c3Qgd3JhcCBhcm91bmQiOworCisgIGlmIChvcHRpb25hbF92YWx1ZXNf
KSB7CisgICAgLy8gQXJiaXRyYXJpbHkgbWFrZSBvbmUgb2YgdGhlIHZhbHVlcyBub24tZXhpc3Rl
bnQsIHRvIGZvcmNlCisgICAgLy8gb3B0aW9uYWwtc3VwcG9ydGluZyBlbmNvZGluZy4KKyAgICB2
YWx1ZXNbMV0gPSBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgfQorCisgIFRlc3RFbmNv
ZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKK1RFU1RfUChEZWx0YUVuY29kaW5n
VGVzdCwgQmlnRGVsdGFXaXRoV3JhcEFyb3VuZEluVmFsdWVTZXF1ZW5jZSkgeworICBpZiAobnVt
X29mX3ZhbHVlc18gPT0gMSB8fCAob3B0aW9uYWxfdmFsdWVzXyAmJiBudW1fb2ZfdmFsdWVzXyA8
IDMpKSB7CisgICAgcmV0dXJuOyAgLy8gSW5hcHBsaWNhYmxlLgorICB9CisKKyAgY29uc3QgdWlu
dDY0X3Qga0JpZ0RlbHRhID0gMTMyODI4OworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRf
dD4gYmFzZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgLQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQmlnRGVsdGEgKyAzKTsKKworICBhdXRvIHZh
bHVlcyA9IENyZWF0ZVNlcXVlbmNlQnlGaXJzdFZhbHVlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDY0X3Q+OjptYXgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudW1fb2ZfdmFsdWVzXyk7CisgIEFTU0VSVF9MVCh2YWx1ZXNbdmFsdWVzLnNpemUoKSAtIDFd
LCB2YWx1ZXNbMF0pIDw8ICJTYW5pdHk7IG11c3Qgd3JhcCBhcm91bmQiOworCisgIGlmIChvcHRp
b25hbF92YWx1ZXNfKSB7CisgICAgLy8gQXJiaXRyYXJpbHkgbWFrZSBvbmUgb2YgdGhlIHZhbHVl
cyBub24tZXhpc3RlbnQsIHRvIGZvcmNlCisgICAgLy8gb3B0aW9uYWwtc3VwcG9ydGluZyBlbmNv
ZGluZy4KKyAgICBSVENfRENIRUNLX0dUKHZhbHVlcy5zaXplKCkgLSAxLCAxdSk7ICAvLyBXcmFw
IGFyb3VuZCBub3QgY2FuY2VsbGVkLgorICAgIHZhbHVlc1sxXSA9IGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90PigpOworICB9CisKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVz
KTsKK30KKyNpZmRlZiBfTVNDX1ZFUgorI3ByYWdtYSB3YXJuaW5nKHBvcCkKKyNlbmRpZgorCitU
RVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIE1heERlbHRhV2l0aFdyYXBBcm91bmRDb21wYXJlZFRv
QmFzZSkgeworICBpZiAob3B0aW9uYWxfdmFsdWVzXyAmJiBudW1fb2ZfdmFsdWVzXyA9PSAxKSB7
CisgICAgcmV0dXJuOyAgLy8gSW5hcHBsaWNhYmxlCisgIH0KKworICBjb25zdCBhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKyAgYXV0byB2YWx1ZXMgPSBDcmVhdGVTZXF1ZW5j
ZUJ5Rmlyc3RWYWx1ZSgqYmFzZSAtIDEsIG51bV9vZl92YWx1ZXNfKTsKKworICBpZiAob3B0aW9u
YWxfdmFsdWVzXykgeworICAgIC8vIEFyYml0cmFyaWx5IG1ha2Ugb25lIG9mIHRoZSB2YWx1ZXMg
bm9uLWV4aXN0ZW50LCB0byBmb3JjZQorICAgIC8vIG9wdGlvbmFsLXN1cHBvcnRpbmcgZW5jb2Rp
bmcuCisgICAgdmFsdWVzWzFdID0gYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgIH0KKwor
ICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2YWx1ZXMpOworfQorCitURVNUX1AoRGVs
dGFFbmNvZGluZ1Rlc3QsIE1heERlbHRhV2l0aFdyYXBBcm91bmRJblZhbHVlU2VxdWVuY2UpIHsK
KyAgaWYgKG51bV9vZl92YWx1ZXNfID09IDEgfHwgKG9wdGlvbmFsX3ZhbHVlc18gJiYgbnVtX29m
X3ZhbHVlc18gPCAzKSkgeworICAgIHJldHVybjsgIC8vIEluYXBwbGljYWJsZS4KKyAgfQorCisg
IGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlKDM0MzIpOworCisgIGF1dG8gdmFs
dWVzID0gQ3JlYXRlU2VxdWVuY2VCeURlbHRhcygKKyAgICAgICpiYXNlLCB7MCwgc3RkOjpudW1l
cmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpLCAzfSwgbnVtX29mX3ZhbHVlc18pOworICAvLyBX
cmFwcyBhcm91bmQgY29udGludW91c2x5IGJ5IHZpcnR1ZSBvZiBiZWluZyBtYXgoKTsgd2lsbCBu
b3QgQVNTRVJULgorCisgIGlmIChvcHRpb25hbF92YWx1ZXNfKSB7CisgICAgLy8gQXJiaXRyYXJp
bHkgbWFrZSBvbmUgb2YgdGhlIHZhbHVlcyBub24tZXhpc3RlbnQsIHRvIGZvcmNlCisgICAgLy8g
b3B0aW9uYWwtc3VwcG9ydGluZyBlbmNvZGluZy4KKyAgICBSVENfRENIRUNLX0dUKHZhbHVlcy5z
aXplKCkgLSAxLCAxdSk7ICAvLyBXcmFwIGFyb3VuZCBub3QgY2FuY2VsbGVkLgorICAgIHZhbHVl
c1sxXSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICB9CisKKyAgVGVzdEVuY29kaW5n
QW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworLy8gSWYgbnVtX29mX3ZhbHVlc18gPT0g
MSwgYSB6ZXJvIGRlbHRhIHdpbGwgeWllbGQgYW4gZW1wdHkgc3RyaW5nOyB0aGF0J3MKKy8vIGFs
cmVhZHkgY292ZXJlZCBieSBBbGxWYWx1ZXNFcXVhbFRvRXhpc3RlbnRCYXNlVmFsdWUsIGJ1dCBp
dCBkb2Vzbid0IGh1cnQgdG8KKy8vIHRlc3QgYWdhaW4uIEZvciBhbGwgb3RoZXIgY2FzZXMsIHdl
IGhhdmUgYSBuZXcgdGVzdC4KK1RFU1RfUChEZWx0YUVuY29kaW5nVGVzdCwgWmVyb0RlbHRhKSB7
CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlKDM0MzIpOworCisgIC8vIEFy
Yml0cmFyeSBzZXF1ZW5jZSBvZiBkZWx0YXMgd2l0aCBpbnRlbnRpb25hbCB6ZXJvIGRlbHRhcywg
YXMgd2VsbCBhcworICAvLyBjb25zZWN1dGl2ZSB6ZXJvcy4KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8
dWludDY0X3Q+IGRlbHRhcyA9IHswLCAgICAgIDMxMiwgMTEsIDEsICAxLCAwLCAwLCAxMiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MDAzMjEsIDMsICAgMywgIDEy
LCA1LCAwLCA2fTsKKyAgYXV0byB2YWx1ZXMgPSBDcmVhdGVTZXF1ZW5jZUJ5RGVsdGFzKGJhc2Uu
dmFsdWUoKSwgZGVsdGFzLCBudW1fb2ZfdmFsdWVzXyk7CisKKyAgaWYgKG9wdGlvbmFsX3ZhbHVl
c18pIHsKKyAgICAvLyBBcmJpdHJhcmlseSBtYWtlIG9uZSBvZiB0aGUgdmFsdWVzIG5vbi1leGlz
dGVudCwgdG8gZm9yY2UKKyAgICAvLyBvcHRpb25hbC1zdXBwb3J0aW5nIGVuY29kaW5nLgorICAg
IHZhbHVlc1swXSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICB9CisKKyAgVGVzdEVu
Y29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1AoCisgICAgU2lnbmVkbmVzc092ZXJyaWRlQW5kTnVtYmVyT2ZWYWx1ZXNJblNlcXVlbmNl
LAorICAgIERlbHRhRW5jb2RpbmdUZXN0LAorICAgIDo6dGVzdGluZzo6Q29tYmluZSg6OnRlc3Rp
bmc6OlZhbHVlcyhEZWx0YVNpZ25lZG5lc3M6OmtOb092ZXJyaWRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEZWx0YVNpZ25lZG5lc3M6OmtGb3JjZVVuc2lnbmVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWx0YVNpZ25lZG5l
c3M6OmtGb3JjZVNpZ25lZCksCisgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFs
dWVzKDEsIDIsIDEwMCwgMTAwMDApLAorICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6
OkJvb2woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoMTAsIDIw
LCAzMCkpKTsKKworLy8gVGVzdHMgb3ZlciB0aGUgcXVhbGl0eSBvZiB0aGUgY29tcHJlc3Npb24g
KGFzIG9wcG9zZWQgdG8gaXRzIGNvcnJlY3RuZXNzKS4KKy8vIE5vdCB0byBiZSBjb25mdXNlZCB3
aXRoIHRlc3RzIG9mIHJ1bnRpbWUgZWZmaWNpZW5jeS4KK2NsYXNzIERlbHRhRW5jb2RpbmdDb21w
cmVzc2lvblF1YWxpdHlUZXN0CisgICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFt
PAorICAgICAgICAgIHN0ZDo6dHVwbGU8RGVsdGFTaWduZWRuZXNzLCB1aW50NjRfdCwgdWludDY0
X3QsIHVpbnQ2NF90Pj4geworIHB1YmxpYzoKKyAgRGVsdGFFbmNvZGluZ0NvbXByZXNzaW9uUXVh
bGl0eVRlc3QoKQorICAgICAgOiBzaWduZWRuZXNzXyhzdGQ6OmdldDwwPihHZXRQYXJhbSgpKSks
CisgICAgICAgIGRlbHRhX21heF9iaXRfd2lkdGhfKHN0ZDo6Z2V0PDE+KEdldFBhcmFtKCkpKSwK
KyAgICAgICAgbnVtX29mX3ZhbHVlc18oc3RkOjpnZXQ8Mj4oR2V0UGFyYW0oKSkpLAorICAgICAg
ICBwYXJ0aWFsX3JhbmRvbV9zZWVkXyhzdGQ6OmdldDwzPihHZXRQYXJhbSgpKSkgeworICAgIE1h
eWJlU2V0U2lnbmVkbmVzcyhzaWduZWRuZXNzXyk7CisgIH0KKworICB+RGVsdGFFbmNvZGluZ0Nv
bXByZXNzaW9uUXVhbGl0eVRlc3QoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgLy8gUnVubmlu
ZyB3aXRoIHRoZSBzYW1lIHNlZWQgZm9yIGFsbCB2YXJpYW50cyB3b3VsZCBtYWtlIGFsbCB0ZXN0
cyBzdGFydAorICAvLyB3aXRoIHRoZSBzYW1lIHNlcXVlbmNlOyBhdm9pZCB0aGlzIGJ5IG1ha2lu
ZyB0aGUgc2VlZCBkaWZmZXJlbnQuCisgIHVpbnQ2NF90IFNlZWQoKSBjb25zdCB7CisgICAgLy8g
TXVsdGlwbHkgZXZlcnl0aGluZyBidXQgYnkgZGlmZmVyZW50IHByaW1lcyB0byBwcm9kdWNlIHVu
aXF1ZSByZXN1bHRzLgorICAgIHJldHVybiAyICogc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpZ25l
ZG5lc3NfKSArIDMgKiBkZWx0YV9tYXhfYml0X3dpZHRoXyArCisgICAgICAgICAgIDUgKiBkZWx0
YV9tYXhfYml0X3dpZHRoXyArIDcgKiBudW1fb2ZfdmFsdWVzXyArCisgICAgICAgICAgIDExICog
cGFydGlhbF9yYW5kb21fc2VlZF87CisgIH0KKworICBjb25zdCBEZWx0YVNpZ25lZG5lc3Mgc2ln
bmVkbmVzc187CisgIGNvbnN0IHVpbnQ2NF90IGRlbHRhX21heF9iaXRfd2lkdGhfOworICBjb25z
dCB1aW50NjRfdCBudW1fb2ZfdmFsdWVzXzsKKyAgY29uc3QgdWludDY0X3QgcGFydGlhbF9yYW5k
b21fc2VlZF87ICAvLyBFeHBsYWluZWQgd2hlcmUgaXQncyB1c2VkLgorfTsKKworLy8gSWYgbm8g
d3JhcC1hcm91bmQgb2NjdXJzIGluIHRoZSBzdHJlYW0sIHRoZSB3aWR0aCBvZiB0aGUgdmFsdWVz
IGRvZXMgbm90CisvLyBtYXR0ZXIgdG8gY29tcHJlc3Npb24gcGVyZm9ybWFuY2U7IG9ubHkgdGhl
IGRlbHRhcyBtYXR0ZXIuCitURVNUX1AoRGVsdGFFbmNvZGluZ0NvbXByZXNzaW9uUXVhbGl0eVRl
c3QsCisgICAgICAgQmFzZURvZXNOb3RBZmZlY3RFZmZpY2llbmN5SWZOb1dyYXBBcm91bmQpIHsK
KyAgLy8gMS4gQmFzZXMgd2hpY2ggd2lsbCBub3QgcHJvZHVjZSBhIHdyYXAtYXJvdW5kLgorICAv
LyAyLiBUaGUgbGFzdCBiYXNlIC0gMHhmZmZmZmZmZmZmZmZmZmZmIC0gZG9lcyBjYXVzZSBhIHdy
YXAtYXJvdW5kLCBidXQKKyAgLy8gICAgdGhhdCBzdGlsbCB3b3JrcywgYmVjYXVzZSB0aGUgd2lk
dGggaXMgNjQgYW55d2F5LCBhbmQgZG9lcyBub3QKKyAgLy8gICAgbmVlZCB0byBiZSBjb252ZXll
ZCBleHBsaWNpdGx5IGluIHRoZSBlbmNvZGluZyBoZWFkZXIuCisgIGNvbnN0IHVpbnQ2NF90IGJh
c2VzW10gPSB7MCwgMHg1NSwgMHhmZmZmZmZmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCl9OworICBjb25zdCBzaXplX3Qg
a0ludGVuZGVkV3JhcEFyb3VuZEJhc2VJbmRleCA9IGFycmF5c2l6ZShiYXNlcyk7CisKKyAgc3Rk
Ojp2ZWN0b3I8dWludDY0X3Q+IGRlbHRhcyhudW1fb2ZfdmFsdWVzXyk7CisKKyAgLy8gQWxsb3dz
IHVzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWx0YXMgZG8gbm90IHByb2R1Y2UgYSB3cmFwLWFy
b3VuZC4KKyAgdWludDY0X3QgbGFzdF9lbGVtZW50W2FycmF5c2l6ZShiYXNlcyldOworICBtZW1j
cHkobGFzdF9lbGVtZW50LCBiYXNlcywgc2l6ZW9mKGJhc2VzKSk7CisKKyAgLy8gQXZvaWQgZW1w
dHkgfGRlbHRhc3wgZHVlIHRvIGZpcnN0IGVsZW1lbnQgY2F1c2luZyB3cmFwLWFyb3VuZC4KKyAg
ZGVsdGFzWzBdID0gMTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUobGFzdF9l
bGVtZW50KTsgKytpKSB7CisgICAgbGFzdF9lbGVtZW50W2ldICs9IDE7CisgIH0KKworICBSYW5k
b20gcHJuZyhTZWVkKCkpOworCisgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgZGVsdGFzLnNpemUo
KTsgKytpKSB7CisgICAgY29uc3QgdWludDY0X3QgZGVsdGEgPSBSYW5kb21XaXRoTWF4Qml0V2lk
dGgoJnBybmcsIGRlbHRhX21heF9iaXRfd2lkdGhfKTsKKworICAgIGJvb2wgd3JhcF9hcm91bmQg
PSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGFycmF5c2l6ZShsYXN0X2VsZW1l
bnQpOyArK2opIHsKKyAgICAgIGlmIChqID09IGtJbnRlbmRlZFdyYXBBcm91bmRCYXNlSW5kZXgp
IHsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisKKyAgICAgIGxhc3RfZWxlbWVudFtqXSAr
PSBkZWx0YTsKKyAgICAgIGlmIChsYXN0X2VsZW1lbnRbal0gPCBiYXNlc1tqXSkgeworICAgICAg
ICB3cmFwX2Fyb3VuZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKwor
ICAgIGlmICh3cmFwX2Fyb3VuZCkgeworICAgICAgZGVsdGFzLnJlc2l6ZShpKTsKKyAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGRlbHRhc1tpXSA9IGRlbHRhOworICB9CisKKyAgc3RkOjpzdHJp
bmcgZW5jb2RpbmdzW2FycmF5c2l6ZShiYXNlcyldOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXJyYXlzaXplKGJhc2VzKTsgKytpKSB7CisgICAgY29uc3QgYXV0byB2YWx1ZXMgPQorICAg
ICAgICBDcmVhdGVTZXF1ZW5jZUJ5RGVsdGFzKGJhc2VzW2ldLCBkZWx0YXMsIG51bV9vZl92YWx1
ZXNfKTsKKyAgICAvLyBQcm9kdWNlIHRoZSBlbmNvZGluZyBhbmQgd3JpdGUgaXQgdG8gZW5jb2Rp
bmdzW2ldLgorICAgIC8vIEJ5IHVzaW5nIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKCkgdG8gZG8g
dGhpcywgd2UgYWxzbyBzYW5pdHktdGVzdAorICAgIC8vIHRoZSBlbmNvZGluZy9kZWNvZGluZywg
dGhvdWdoIHRoYXQgaXMgbm90IHRoZSB0ZXN0J3MgZm9jdXMuCisgICAgVGVzdEVuY29kaW5nQW5k
RGVjb2RpbmcoYmFzZXNbaV0sIHZhbHVlcywgJmVuY29kaW5nc1tpXSk7CisgICAgRVhQRUNUX0xF
KGVuY29kaW5nc1tpXS5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgRW5jb2RpbmdMZW5ndGhVcHBl
ckJvdW5kKGRlbHRhX21heF9iaXRfd2lkdGhfLCBudW1fb2ZfdmFsdWVzXywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZG5lc3NfKSk7CisgIH0KKworICAvLyBU
ZXN0IGZvY3VzIC0gYWxsIG9mIHRoZSBlbmNvZGluZ3Mgc2hvdWxkIGJlIHRoZSBzYW1lLCBhcyB0
aGV5IGFyZSBiYXNlZAorICAvLyBvbiB0aGUgc2FtZSBkZWx0YSBzZXF1ZW5jZSwgYW5kIGRvIG5v
dCBjb250YWluIGEgd3JhcC1hcm91bmQuCisgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgYXJyYXlz
aXplKGVuY29kaW5ncyk7ICsraSkgeworICAgIEVYUEVDVF9FUShlbmNvZGluZ3NbaV0sIGVuY29k
aW5nc1swXSk7CisgIH0KK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisgICAgU2lnbmVk
bmVzc092ZXJyaWRlQW5kRGVsdGFNYXhCaXRXaWR0aEFuZE51bWJlck9mVmFsdWVzSW5TZXF1ZW5j
ZSwKKyAgICBEZWx0YUVuY29kaW5nQ29tcHJlc3Npb25RdWFsaXR5VGVzdCwKKyAgICA6OnRlc3Rp
bmc6OkNvbWJpbmUoCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKERlbHRhU2lnbmVkbmVzczo6
a05vT3ZlcnJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhU2lnbmVkbmVzczo6
a0ZvcmNlVW5zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhU2lnbmVkbmVz
czo6a0ZvcmNlU2lnbmVkKSwKKyAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoMSwgNCwgOCwgMTUs
IDE2LCAxNywgMzEsIDMyLCAzMywgNjMsIDY0KSwKKyAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMo
MSwgMiwgMTAwLCAxMDAwMCksCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDExLCAxMiwgMTMp
KSk7CisKKy8vIFNpbWlsYXIgdG8gRGVsdGFFbmNvZGluZ1Rlc3QsIGJ1dCBpbnN0ZWFkIG9mIHNl
bWktc3VyZ2ljYWxseSBwcm9kdWNpbmcKKy8vIHNwZWNpZmljIGNhc2VzLCBwcm9kdWNlIGxhcmdl
IGFtb3VudCBvZiBzZW1pLXJlYWxpc3RpYyBpbnB1dHMuCitjbGFzcyBEZWx0YUVuY29kaW5nRnV6
emVyTGlrZVRlc3QKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08CisgICAg
ICAgICAgc3RkOjp0dXBsZTxEZWx0YVNpZ25lZG5lc3MsIHVpbnQ2NF90LCB1aW50NjRfdCwgYm9v
bCwgdWludDY0X3Q+PiB7CisgcHVibGljOgorICBEZWx0YUVuY29kaW5nRnV6emVyTGlrZVRlc3Qo
KQorICAgICAgOiBzaWduZWRuZXNzXyhzdGQ6OmdldDwwPihHZXRQYXJhbSgpKSksCisgICAgICAg
IGRlbHRhX21heF9iaXRfd2lkdGhfKHN0ZDo6Z2V0PDE+KEdldFBhcmFtKCkpKSwKKyAgICAgICAg
bnVtX29mX3ZhbHVlc18oc3RkOjpnZXQ8Mj4oR2V0UGFyYW0oKSkpLAorICAgICAgICBvcHRpb25h
bF92YWx1ZXNfKHN0ZDo6Z2V0PDM+KEdldFBhcmFtKCkpKSwKKyAgICAgICAgcGFydGlhbF9yYW5k
b21fc2VlZF8oc3RkOjpnZXQ8ND4oR2V0UGFyYW0oKSkpIHsKKyAgICBNYXliZVNldFNpZ25lZG5l
c3Moc2lnbmVkbmVzc18pOworICB9CisKKyAgfkRlbHRhRW5jb2RpbmdGdXp6ZXJMaWtlVGVzdCgp
IG92ZXJyaWRlID0gZGVmYXVsdDsKKworICAvLyBSdW5uaW5nIHdpdGggdGhlIHNhbWUgc2VlZCBm
b3IgYWxsIHZhcmlhbnRzIHdvdWxkIG1ha2UgYWxsIHRlc3RzIHN0YXJ0CisgIC8vIHdpdGggdGhl
IHNhbWUgc2VxdWVuY2U7IGF2b2lkIHRoaXMgYnkgbWFraW5nIHRoZSBzZWVkIGRpZmZlcmVudC4K
KyAgdWludDY0X3QgU2VlZCgpIGNvbnN0IHsKKyAgICAvLyBNdWx0aXBseSBldmVyeXRoaW5nIGJ1
dCBieSBkaWZmZXJlbnQgcHJpbWVzIHRvIHByb2R1Y2UgdW5pcXVlIHJlc3VsdHMuCisgICAgcmV0
dXJuIDIgKiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2lnbmVkbmVzc18pICsgMyAqIGRlbHRhX21h
eF9iaXRfd2lkdGhfICsKKyAgICAgICAgICAgNSAqIGRlbHRhX21heF9iaXRfd2lkdGhfICsgNyAq
IG51bV9vZl92YWx1ZXNfICsKKyAgICAgICAgICAgMTEgKiBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
b3B0aW9uYWxfdmFsdWVzXykgKworICAgICAgICAgICAxMyAqIHBhcnRpYWxfcmFuZG9tX3NlZWRf
OworICB9CisKKyAgY29uc3QgRGVsdGFTaWduZWRuZXNzIHNpZ25lZG5lc3NfOworICBjb25zdCB1
aW50NjRfdCBkZWx0YV9tYXhfYml0X3dpZHRoXzsKKyAgY29uc3QgdWludDY0X3QgbnVtX29mX3Zh
bHVlc187CisgIGNvbnN0IGJvb2wgb3B0aW9uYWxfdmFsdWVzXzsKKyAgY29uc3QgdWludDY0X3Qg
cGFydGlhbF9yYW5kb21fc2VlZF87ICAvLyBFeHBsYWluZWQgd2hlcmUgaXQncyB1c2VkLgorfTsK
KworVEVTVF9QKERlbHRhRW5jb2RpbmdGdXp6ZXJMaWtlVGVzdCwgVGVzdCkgeworICBjb25zdCBh
YnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKworICBSYW5kb20gcHJuZyhTZWVk
KCkpOworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGRlbHRhcyhudW1f
b2ZfdmFsdWVzXyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVsdGFzLnNpemUoKTsgKytp
KSB7CisgICAgaWYgKCFvcHRpb25hbF92YWx1ZXNfIHx8IHBybmcuUmFuZDxib29sPigpKSB7Cisg
ICAgICBkZWx0YXNbaV0gPSBSYW5kb21XaXRoTWF4Qml0V2lkdGgoJnBybmcsIGRlbHRhX21heF9i
aXRfd2lkdGhfKTsKKyAgICB9CisgIH0KKyAgY29uc3QgYXV0byB2YWx1ZXMgPQorICAgICAgQ3Jl
YXRlU2VxdWVuY2VCeU9wdGlvbmFsRGVsdGFzKGJhc2UudmFsdWUoKSwgZGVsdGFzLCBudW1fb2Zf
dmFsdWVzXyk7CisKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30K
KworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisgICAgU2lnbmVkbmVzc092ZXJyaWRlQW5kRGVs
dGFNYXhCaXRXaWR0aEFuZE51bWJlck9mVmFsdWVzSW5TZXF1ZW5jZSwKKyAgICBEZWx0YUVuY29k
aW5nRnV6emVyTGlrZVRlc3QsCisgICAgOjp0ZXN0aW5nOjpDb21iaW5lKAorICAgICAgICA6OnRl
c3Rpbmc6OlZhbHVlcyhEZWx0YVNpZ25lZG5lc3M6OmtOb092ZXJyaWRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBEZWx0YVNpZ25lZG5lc3M6OmtGb3JjZVVuc2lnbmVkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBEZWx0YVNpZ25lZG5lc3M6OmtGb3JjZVNpZ25lZCksCisgICAgICAg
IDo6dGVzdGluZzo6VmFsdWVzKDEsIDQsIDgsIDE1LCAxNiwgMTcsIDMxLCAzMiwgMzMsIDYzLCA2
NCksCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDEsIDIsIDEwMCwgMTAwMDApLAorICAgICAg
ICA6OnRlc3Rpbmc6OkJvb2woKSwKKyAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoMjEsIDIyLCAy
MykpKTsKKworY2xhc3MgRGVsdGFFbmNvZGluZ1NwZWNpZmljRWRnZUNhc2VzVGVzdAorICAgIDog
cHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTwKKyAgICAgICAgICBzdGQ6OnR1cGxlPERl
bHRhU2lnbmVkbmVzcywgdWludDY0X3QsIGJvb2w+PiB7CisgcHVibGljOgorICBEZWx0YUVuY29k
aW5nU3BlY2lmaWNFZGdlQ2FzZXNUZXN0KCkgeworICAgIFVuc2V0Rml4ZWRMZW5ndGhFbmNvZGVy
RGVsdGFTaWduZWRuZXNzRm9yVGVzdGluZygpOworICB9CisKKyAgfkRlbHRhRW5jb2RpbmdTcGVj
aWZpY0VkZ2VDYXNlc1Rlc3QoKSBvdmVycmlkZSA9IGRlZmF1bHQ7Cit9OworCisvLyBUaGlzIGNh
c2UgaXMgc3BlY2lhbCBiZWNhdXNlIGl0IHByb2R1Y2VzIGlkZW50aWNhbCBmb3J3YXJkL2JhY2t3
YXJkIGRlbHRhcy4KK1RFU1RfRihEZWx0YUVuY29kaW5nU3BlY2lmaWNFZGdlQ2FzZXNUZXN0LCBT
aWduZWREZWx0YVdpdGhPbmx5VG9wQml0T24pIHsKKyAgTWF5YmVTZXRTaWduZWRuZXNzKERlbHRh
U2lnbmVkbmVzczo6a0ZvcmNlU2lnbmVkKTsKKworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50
NjRfdD4gYmFzZSgzNDMyKTsKKworICBjb25zdCB1aW50NjRfdCBkZWx0YSA9IHN0YXRpY19jYXN0
PHVpbnQ2NF90PigxKSA8PCA2MzsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+PiB2YWx1ZXMgPSB7YmFzZS52YWx1ZSgpICsgZGVsdGF9OworCisgIFRlc3RFbmNv
ZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKK1RFU1RfRihEZWx0YUVuY29kaW5n
U3BlY2lmaWNFZGdlQ2FzZXNUZXN0LCBNYXhpbXVtVW5zaWduZWREZWx0YSkgeworICBNYXliZVNl
dFNpZ25lZG5lc3MoRGVsdGFTaWduZWRuZXNzOjprRm9yY2VVbnNpZ25lZCk7CisKKyAgY29uc3Qg
YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UoKHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSA8
PCA2MykgKyAweDEyMyk7CisKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+PiB2YWx1ZXMgPSB7YmFzZS52YWx1ZSgpIC0gMX07CisKKyAgVGVzdEVuY29kaW5nQW5k
RGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworLy8gQ2hlY2sgdGhhdCwgaWYgYWxsIGRlbHRh
cyBhcmUgc2V0IHRvIC0xLCB0aGluZ3Mgc3RpbGwgd29yay4KK1RFU1RfUChEZWx0YUVuY29kaW5n
U3BlY2lmaWNFZGdlQ2FzZXNUZXN0LCBSZXZlcnNlU2VxdWVuY2UpIHsKKyAgTWF5YmVTZXRTaWdu
ZWRuZXNzKHN0ZDo6Z2V0PDA+KEdldFBhcmFtKCkpKTsKKyAgY29uc3QgdWludDY0X3Qgd2lkdGgg
PSBzdGQ6OmdldDwxPihHZXRQYXJhbSgpKTsKKyAgY29uc3QgYm9vbCB3cmFwX2Fyb3VuZCA9IHN0
ZDo6Z2V0PDI+KEdldFBhcmFtKCkpOworCisgIGNvbnN0IHVpbnQ2NF90IHZhbHVlX21hc2sgPSAo
d2lkdGggPT0gNjQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IHdpZHRoKSAtIDEpOworCisg
IGNvbnN0IHVpbnQ2NF90IGJhc2UgPSB3cmFwX2Fyb3VuZCA/IDF1IDogKDB4ZjgyZDMgJiB2YWx1
ZV9tYXNrKTsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2
YWx1ZXMgPSB7CisgICAgICAoYmFzZSAtIDF1KSAmIHZhbHVlX21hc2ssIChiYXNlIC0gMnUpICYg
dmFsdWVfbWFzaywKKyAgICAgIChiYXNlIC0gM3UpICYgdmFsdWVfbWFza307CisKKyAgVGVzdEVu
Y29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1AoCisgICAgXywKKyAgICBEZWx0YUVuY29kaW5nU3BlY2lmaWNFZGdlQ2FzZXNUZXN0LAor
ICAgIDo6dGVzdGluZzo6Q29tYmluZSgKKyAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoRGVsdGFT
aWduZWRuZXNzOjprTm9PdmVycmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsdGFT
aWduZWRuZXNzOjprRm9yY2VVbnNpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVs
dGFTaWduZWRuZXNzOjprRm9yY2VTaWduZWQpLAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygx
LCA0LCA4LCAxNSwgMTYsIDE3LCAzMSwgMzIsIDMzLCA2MywgNjQpLAorICAgICAgICA6OnRlc3Rp
bmc6OkJvb2woKSkpOworCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyLmgKaW5kZXggYmViNzExYzlkZDgyZjcy
Yjk1ZjVkYzg1ZjEwMmUxNjQ4MTE2ZjhiYi4uNmNlNzUwZjY3ZTc2MGExZGMyN2VhZDhmNmQ4ZmJl
YWEyZTM2ZWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNv
ZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyLmgKQEAgLTIy
LDcgKzIyLDggQEAgY2xhc3MgUnRjRXZlbnRMb2dFbmNvZGVyIHsKICBwdWJsaWM6CiAgIHZpcnR1
YWwgflJ0Y0V2ZW50TG9nRW5jb2RlcigpID0gZGVmYXVsdDsKIAotICB2aXJ0dWFsIHN0ZDo6c3Ry
aW5nIEVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3VzKSA9IDA7CisgIHZpcnR1YWwg
c3RkOjpzdHJpbmcgRW5jb2RlTG9nU3RhcnQoaW50NjRfdCB0aW1lc3RhbXBfdXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB1dGNfdGltZV91cykgPSAwOwog
ICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIEVuY29kZUxvZ0VuZChpbnQ2NF90IHRpbWVzdGFtcF91cykg
PSAwOwogCiAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgRW5jb2RlQmF0Y2goCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWVhNDc2
MTFkNmMzZGE2YzU1NzM1YjI5NmY3YjE5ZWM5YmI0M2NhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbi5jYwpAQCAtMCwwICsxLDQw
IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb24uaCIKKworI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7Cisv
LyBXZSB1c2UgMHgzZmZmIGJlY2F1c2UgdGhhdCBnaXZlcyBkZWNlbnQgcHJlY2lzaW9uIChjb21w
YXJlZCB0byB0aGUgdW5kZXJseWluZworLy8gbWVhc3VyZW1lbnQgcHJvZHVjaW5nIHRoZSBwYWNr
ZXQgbG9zcyBmcmFjdGlvbikgb24gdGhlIG9uZSBoYW5kLCB3aGlsZQorLy8gYWxsb3dpbmcgdXMg
dG8gdXNlIG5vIG1vcmUgdGhhbiAyIGJ5dGVzIGluIHZhcmludCBmb3JtIG9uIHRoZSBvdGhlciBo
YW5kLgorLy8gKFdlIG1pZ2h0IGFsc28gZml4ZWQtc2l6ZSBlbmNvZGUgdXNpbmcgYXQgbW9zdCAx
NCBiaXRzLikKK2NvbnN0ZXhwciB1aW50MzJfdCBrUGFja2V0TG9zc0ZyYWN0aW9uUmFuZ2UgPSAo
MSA8PCAxNCkgLSAxOyAgLy8gMHgzZmZmCitjb25zdGV4cHIgZmxvYXQga1BhY2tldExvc3NGcmFj
dGlvblJhbmdlRmxvYXQgPQorICAgIHN0YXRpY19jYXN0PGZsb2F0PihrUGFja2V0TG9zc0ZyYWN0
aW9uUmFuZ2UpOworfSAgLy8gbmFtZXNwYWNlCisKK3VpbnQzMl90IENvbnZlcnRQYWNrZXRMb3Nz
RnJhY3Rpb25Ub1Byb3RvRm9ybWF0KGZsb2F0IHBhY2tldF9sb3NzX2ZyYWN0aW9uKSB7CisgIFJU
Q19EQ0hFQ0tfR0UocGFja2V0X2xvc3NfZnJhY3Rpb24sIDApOworICBSVENfRENIRUNLX0xFKHBh
Y2tldF9sb3NzX2ZyYWN0aW9uLCAxKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90Pihw
YWNrZXRfbG9zc19mcmFjdGlvbiAqIGtQYWNrZXRMb3NzRnJhY3Rpb25SYW5nZSk7Cit9CisKK2Jv
b2wgUGFyc2VQYWNrZXRMb3NzRnJhY3Rpb25Gcm9tUHJvdG9Gb3JtYXQodWludDMyX3QgcHJvdG9f
cGFja2V0X2xvc3NfZnJhY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0KiBvdXRwdXQpIHsKKyAgaWYgKHByb3RvX3BhY2tldF9sb3NzX2ZyYWN0
aW9uID49IGtQYWNrZXRMb3NzRnJhY3Rpb25SYW5nZSkgeworICAgIHJldHVybiBmYWxzZTsKKyAg
fQorICAqb3V0cHV0ID0gcHJvdG9fcGFja2V0X2xvc3NfZnJhY3Rpb24gLyBrUGFja2V0TG9zc0Zy
YWN0aW9uUmFuZ2VGbG9hdDsKKyAgcmV0dXJuIHRydWU7Cit9Cit9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29t
bW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDI5ZjhlZDJhZDczZmM1YTllYWFhNzZmY2RhMTIwZjVjYjUyYzY5OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb24u
aApAQCAtMCwwICsxLDkzIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBMT0dH
SU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9SVENfRVZFTlRfTE9HX0VOQ09ERVJfQ09NTU9OX0hf
CisjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX1JUQ19FVkVOVF9MT0dfRU5D
T0RFUl9DT01NT05fSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSA8bGltaXRz
PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gQ29u
dmVydCBiZXR3ZWVuIHRoZSBwYWNrZXQgZnJhY3Rpb24gbG9zcyAoYSBmbG9hdGluZyBwb2ludCBu
dW1iZXIgaW4KKy8vIHRoZSByYW5nZSBbMC4wLCAxLjBdKSwgYW5kIGEgdWludDMyX3Qgd2l0aCB1
cCB0byBhIGZpeGVkIG51bWJlciBvZiBiaXRzLgorLy8gVGhlIGxhdHRlciBjYW4gYmUgbW9yZSBl
ZmZpY2llbnRseSBzdG9yZWQgaW4gYSBwcm90b2J1ZiBhbmQvb3IgZGVsdGEtZW5jb2RlZC4KK3Vp
bnQzMl90IENvbnZlcnRQYWNrZXRMb3NzRnJhY3Rpb25Ub1Byb3RvRm9ybWF0KGZsb2F0IHBhY2tl
dF9sb3NzX2ZyYWN0aW9uKTsKK2Jvb2wgUGFyc2VQYWNrZXRMb3NzRnJhY3Rpb25Gcm9tUHJvdG9G
b3JtYXQodWludDMyX3QgcHJvdG9fcGFja2V0X2xvc3NfZnJhY3Rpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBvdXRwdXQpOworCit9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCisKK25hbWVzcGFjZSB3ZWJydGNfZXZlbnRfbG9nZ2luZyB7CisKKy8v
IFByb2R1Y2UgYW4gdW5zaWduZWQgcmVwcmVzZW50YXRpb24gb2YgYSBzaWduZWQgaW50ZWdlci4g
T24gdHdvJ3MgY29tcGxlbWVudAorLy8gbWFjaGluZXMsIHRoaXMgaXMgZXF1aXZhbGVudCB0bzoK
Ky8vIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxzdGQ6Om1ha2VfdW5zaWduZWQ8
VD4+KHkpKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1aW50NjRfdCBUb1Vuc2lnbmVkKFQgeSkg
eworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCAiIik7CisgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zaWduZWQ8VD46OnZhbHVlLCAiIik7CisKKyAgLy8gTm90ZSB0
aGF0IGEgc2lnbmVkIGludGVnZXIgd2hvc2Ugd2lkdGggaXMgTiBiaXRzLCBoYXMgTi0xIGRpZ2l0
cy4KKyAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgPCA2NCwg
IiIpOworCisgIGNvbnN0ZXhwciBUIE1JTl9UID0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWlu
KCk7CisgIGNvbnN0ZXhwciBUIE1BWF9UID0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCk7
CisKKyAgc3RhdGljX2Fzc2VydChNQVhfVCArIE1JTl9UICsgMSA+PSAwLCAiTUFYX1QgPj0gYWJz
KE1JTl9UKSAtIDEiKTsKKworICBpZiAoeSA+PSAwKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih5KTsKKyAgfSBlbHNlIHsKKyAgICAvLyB5IGlzIGluIHRoZSByYW5nZSBbTUlO
X1QsIC0xXSwgc28gKHkgLSBNSU5fVCkgaXMgaW4gdGhlCisgICAgLy8gcmFuZ2UgWzAsIGFicyhN
SU5fVCkgLSAxXS4gVGhpcyBpcyByZXByZXNlbnRhYmxlIGluIGEgVAorICAgIC8vIGJlY2F1c2Ug
TUFYX1QgPj0gYWJzKE1JTl9UKSAtIDEsIGFzIHBlciB0aGUgc3RhdGljX2Fzc2VydCBhYm92ZS4K
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KE1BWF9UKSArIDEgKyBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oeSAtIE1JTl9UKTsKKyAgfQorfQorCisvLyBBc3N1bWluZyB4ID0gVG9VbnNp
Z25lZCh5KSwgcmV0dXJuIHx5fC4KKy8vIE5vdGU6IHN0YXRpY19jYXN0PFQ+KHgpIHdvdWxkIHdv
cmsgb24gbW9zdCBwbGF0Zm9ybXMgYW5kIGNvbXBpbGVycywgYnV0CisvLyBpbnZvbHZlcyB1bmRl
ZmluZWQgYmVoYXZpb3IuIFRoaXMgZnVuY3Rpb24gaXMgd2VsbC1kZWZpbmVkLCBhbmQgY2FuIGJl
CisvLyBvcHRpbWl6ZWQgdG8gYSBub29wIGZvciA2NCBiaXQgdHlwZXMsIG9yIGEgZmV3IGFyaXRo
bWV0aWMKKy8vIGluc3RydWN0aW9ucyBhbmQgYSBzaW5nbGUgY29uZGl0aW9uYWwganVtcCBmb3Ig
bmFycm93ZXIgdHlwZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgVG9TaWduZWQodWlu
dDY0X3QgeCwgVCogeSkgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZh
bHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zaWduZWQ8VD46OnZhbHVlLCAiIik7
CisKKyAgLy8gTm90ZSB0aGF0IGEgc2lnbmVkIGludGVnZXIgd2hvc2Ugd2lkdGggaXMgTiBiaXRz
LCBoYXMgTi0xIGRpZ2l0cy4KKyAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+
OjpkaWdpdHMgPCA2NCwgIiIpOworCisgIGNvbnN0ZXhwciBUIE1JTl9UID0gc3RkOjpudW1lcmlj
X2xpbWl0czxUPjo6bWluKCk7CisgIGNvbnN0ZXhwciBUIE1BWF9UID0gc3RkOjpudW1lcmljX2xp
bWl0czxUPjo6bWF4KCk7CisKKyAgdXNpbmcgVU5TSUdORURfVCA9IHR5cGVuYW1lIHN0ZDo6bWFr
ZV91bnNpZ25lZDxUPjo6dHlwZTsKKyAgY29uc3RleHByIGF1dG8gTUFYX1VOU0lHTkVEX1QgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPFVOU0lHTkVEX1Q+OjptYXgoKTsKKyAgaWYgKHggPiBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oTUFYX1VOU0lHTkVEX1QpKSB7CisgICAgcmV0dXJuIGZhbHNlOyAgLy8g
fHh8IGNhbm5vdCBiZSByZXByZXNlbnRlZCB1c2luZyBhIFQuCisgIH0KKworICBpZiAoeCA8PSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oTUFYX1QpKSB7CisgICAgLy8gVGhlIG9yaWdpbmFsIHZhbHVl
IHdhcyBwb3NpdGl2ZSwgc28gaXQgaXMgc2FmZSB0byBqdXN0IHN0YXRpY19jYXN0LgorICAgICp5
ID0gc3RhdGljX2Nhc3Q8VD4oeCk7CisgIH0gZWxzZSB7ICAvLyB4ID4gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KE1BWF9UKQorICAgIGNvbnN0IHVpbnQ2NF90IG5lZ194ID0geCAtIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihNQVhfVCkgLSAxOworICAgICp5ID0gc3RhdGljX2Nhc3Q8VD4obmVnX3gpICsg
TUlOX1Q7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
Y19ldmVudF9sb2dnaW5nCisKKyNlbmRpZiAgLy8gTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09E
RVJfUlRDX0VWRU5UX0xPR19FTkNPREVSX0NPTU1PTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
bmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb25fdW5pdHRlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTdkOTQ0MDZhZTBkMmY2ZTFjYjFlNjU2YTcxZjhiNDcxZTgzZmNkYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb25fdW5pdHRl
c3QuY2MKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29t
bW9uLmgiCisKKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5j
bHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjX2V2ZW50X2xvZ2dpbmcgeworbmFtZXNwYWNlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBTaWduZWRuZXNzQ29udmVyc2lvblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CisgcHVibGljOgorICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCAi
Iik7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zaWduZWQ8VD46OnZhbHVlLCAiIik7Cit9Owor
CitUWVBFRF9URVNUX0NBU0VfUChTaWduZWRuZXNzQ29udmVyc2lvblRlc3QpOworCitUWVBFRF9U
RVNUX1AoU2lnbmVkbmVzc0NvbnZlcnNpb25UZXN0LCBDb3JyZWN0bHlDb252ZXJ0c0xlZ2FsVmFs
dWVzKSB7CisgIHVzaW5nIFQgPSBUeXBlUGFyYW07CisgIHN0ZDo6dmVjdG9yPFQ+IGxlZ2FsX3Zh
bHVlcyA9IHtzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbigpICsgMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSAt
IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjptYXgoKX07CisgIGZvciAoVCB2YWwgOiBsZWdhbF92YWx1ZXMpIHsKKyAgICBjb25zdCBh
dXRvIHVuc2lnbmVkX3ZhbCA9IFRvVW5zaWduZWQodmFsKTsKKyAgICBUIHNpZ25lZF92YWw7Cisg
ICAgQVNTRVJUX1RSVUUoVG9TaWduZWQ8VD4odW5zaWduZWRfdmFsLCAmc2lnbmVkX3ZhbCkpCisg
ICAgICAgIDw8ICJGYWlsZWQgb24gIiA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRf
dmFsKSA8PCAiLiI7CisgICAgRVhQRUNUX0VRKHZhbCwgc2lnbmVkX3ZhbCkKKyAgICAgICAgPDwg
IkZhaWxlZCBvbiAiIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bnNpZ25lZF92YWwpIDw8ICIu
IjsKKyAgfQorfQorCitUWVBFRF9URVNUX1AoU2lnbmVkbmVzc0NvbnZlcnNpb25UZXN0LCBGYWls
c09uQ29udmVydGluZ0lsbGVnYWxWYWx1ZXMpIHsKKyAgdXNpbmcgVCA9IFR5cGVQYXJhbTsKKwor
ICAvLyBOb3RlIHRoYXQgYSBzaWduZWQgaW50ZWdlciB3aG9zZSB3aWR0aCBpcyBOIGJpdHMsIGhh
cyBOLTEgZGlnaXRzLgorICBjb25zdGV4cHIgYm9vbCB3aWR0aF9pc182NCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8VD46OmRpZ2l0cyA9PSA2MzsKKworICBpZiAod2lkdGhfaXNfNjQpIHsKKyAgICBy
ZXR1cm47ICAvLyBUZXN0IGlycmVsZXZhbnQ7IGlsbGVnYWwgdmFsdWVzIGRvIG5vdCBleGlzdC4K
KyAgfQorCisgIGNvbnN0IHVpbnQ2NF90IG1heF9sZWdhbF92YWx1ZSA9IFRvVW5zaWduZWQoc3Rh
dGljX2Nhc3Q8VD4oLTEpKTsKKworICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50NjRfdD4gaWxsZWdh
bF92YWx1ZXMgPSB7CisgICAgICBtYXhfbGVnYWxfdmFsdWUgKyAxdSwgbWF4X2xlZ2FsX3ZhbHVl
ICsgMnUsCisgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkgLSAxdSwK
KyAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKX07CisKKyAgZm9yICh1
aW50NjRfdCB1bnNpZ25lZF92YWwgOiBpbGxlZ2FsX3ZhbHVlcykgeworICAgIFQgc2lnbmVkX3Zh
bDsKKyAgICBFWFBFQ1RfRkFMU0UoVG9TaWduZWQ8VD4odW5zaWduZWRfdmFsLCAmc2lnbmVkX3Zh
bCkpCisgICAgICAgIDw8ICJGYWlsZWQgb24gIiA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5z
aWduZWRfdmFsKSA8PCAiLiI7CisgIH0KK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1Ao
U2lnbmVkbmVzc0NvbnZlcnNpb25UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29y
cmVjdGx5Q29udmVydHNMZWdhbFZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZh
aWxzT25Db252ZXJ0aW5nSWxsZWdhbFZhbHVlcyk7CisKK3VzaW5nIFR5cGVzID0gOjp0ZXN0aW5n
OjpUeXBlczxpbnQ4X3QsIGludDE2X3QsIGludDMyX3QsIGludDY0X3Q+OworCitJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChfLCBTaWduZWRuZXNzQ29udmVyc2lvblRlc3QsIFR5cGVzKTsK
KworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjX2V2ZW50X2xvZ2dpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9sZWdhY3ku
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbGVnYWN5LmNjCmluZGV4
IDdlZjhkNjc3YzYwOTA3MmUxMDZiMDRlNzI1MWQ2YjJhNDhjZWU4ZDAuLjI5NjM2ZWRlOTIyZjJk
NDQ5MjhlMzczMGQxZTI1ZTZjMmFiN2Y2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0
Y19ldmVudF9sb2dfZW5jb2Rlcl9sZWdhY3kuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2
ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5jYwpAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgInJ0
Y19iYXNlL2lnbm9yZV93dW5kZWYuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAK
LSNpZmRlZiBFTkFCTEVfUlRDX0VWRU5UX0xPRwogCiAvLyAqLnBiLmggZmlsZXMgYXJlIGdlbmVy
YXRlZCBhdCBidWlsZC10aW1lIGJ5IHRoZSBwcm90b2J1ZiBjb21waWxlci4KIFJUQ19QVVNIX0lH
Tk9SSU5HX1dVTkRFRigpCkBAIC0yMjMsNyArMjIyLDggQEAgQ29udmVydEljZUNhbmRpZGF0ZVBh
aXJFdmVudFR5cGUoSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSB0eXBlKSB7CiAKIH0gIC8vIG5h
bWVzcGFjZQogCi1zdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUxv
Z1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3VzKSB7CitzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0Vu
Y29kZXJMZWdhY3k6OkVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHV0
Y190aW1lX3VzKSB7CiAgIHJ0Y2xvZzo6RXZlbnQgcnRjbG9nX2V2ZW50OwogICBydGNsb2dfZXZl
bnQuc2V0X3RpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpOwogICBydGNsb2dfZXZlbnQuc2V0X3R5
cGUocnRjbG9nOjpFdmVudDo6TE9HX1NUQVJUKTsKQEAgLTM1NywzNyArMzU3LDM3IEBAIHN0ZDo6
c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlKGNvbnN0IFJ0Y0V2ZW50JiBl
dmVudCkgewogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVBbHJT
dGF0ZSgKICAgICBjb25zdCBSdGNFdmVudEFsclN0YXRlJiBldmVudCkgewogICBydGNsb2c6OkV2
ZW50IHJ0Y2xvZ19ldmVudDsKLSAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQu
dGltZXN0YW1wX3VzXyk7CisgIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRp
bWVzdGFtcF91cygpKTsKICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZlbnQ6OkFM
Ul9TVEFURV9FVkVOVCk7CiAKICAgYXV0byogYWxyX3N0YXRlID0gcnRjbG9nX2V2ZW50Lm11dGFi
bGVfYWxyX3N0YXRlKCk7Ci0gIGFscl9zdGF0ZS0+c2V0X2luX2FscihldmVudC5pbl9hbHJfKTsK
KyAgYWxyX3N0YXRlLT5zZXRfaW5fYWxyKGV2ZW50LmluX2FscigpKTsKICAgcmV0dXJuIFNlcmlh
bGl6ZSgmcnRjbG9nX2V2ZW50KTsKIH0KIAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVy
TGVnYWN5OjpFbmNvZGVBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAogICAgIGNvbnN0IFJ0Y0V2ZW50
QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2df
ZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91
c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMo
KSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpBVURJT19ORVRXT1JL
X0FEQVBUQVRJT05fRVZFTlQpOwogCiAgIGF1dG8qIGF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbiA9
CiAgICAgICBydGNsb2dfZXZlbnQubXV0YWJsZV9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb24oKTsK
LSAgaWYgKGV2ZW50LmNvbmZpZ18tPmJpdHJhdGVfYnBzKQotICAgIGF1ZGlvX25ldHdvcmtfYWRh
cHRhdGlvbi0+c2V0X2JpdHJhdGVfYnBzKCpldmVudC5jb25maWdfLT5iaXRyYXRlX2Jwcyk7Ci0g
IGlmIChldmVudC5jb25maWdfLT5mcmFtZV9sZW5ndGhfbXMpCisgIGlmIChldmVudC5jb25maWco
KS5iaXRyYXRlX2JwcykKKyAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb24tPnNldF9iaXRyYXRl
X2JwcygqZXZlbnQuY29uZmlnKCkuYml0cmF0ZV9icHMpOworICBpZiAoZXZlbnQuY29uZmlnKCku
ZnJhbWVfbGVuZ3RoX21zKQogICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi0+c2V0X2ZyYW1l
X2xlbmd0aF9tcygKLSAgICAgICAgKmV2ZW50LmNvbmZpZ18tPmZyYW1lX2xlbmd0aF9tcyk7Ci0g
IGlmIChldmVudC5jb25maWdfLT51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24pIHsKKyAgICAg
ICAgKmV2ZW50LmNvbmZpZygpLmZyYW1lX2xlbmd0aF9tcyk7CisgIGlmIChldmVudC5jb25maWco
KS51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24pIHsKICAgICBhdWRpb19uZXR3b3JrX2FkYXB0
YXRpb24tPnNldF91cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24oCi0gICAgICAgICpldmVudC5j
b25maWdfLT51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24pOworICAgICAgICAqZXZlbnQuY29u
ZmlnKCkudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKTsKICAgfQotICBpZiAoZXZlbnQuY29u
ZmlnXy0+ZW5hYmxlX2ZlYykKLSAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb24tPnNldF9lbmFi
bGVfZmVjKCpldmVudC5jb25maWdfLT5lbmFibGVfZmVjKTsKLSAgaWYgKGV2ZW50LmNvbmZpZ18t
PmVuYWJsZV9kdHgpCi0gICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfZW5hYmxlX2R0
eCgqZXZlbnQuY29uZmlnXy0+ZW5hYmxlX2R0eCk7Ci0gIGlmIChldmVudC5jb25maWdfLT5udW1f
Y2hhbm5lbHMpCi0gICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfbnVtX2NoYW5uZWxz
KCpldmVudC5jb25maWdfLT5udW1fY2hhbm5lbHMpOworICBpZiAoZXZlbnQuY29uZmlnKCkuZW5h
YmxlX2ZlYykKKyAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb24tPnNldF9lbmFibGVfZmVjKCpl
dmVudC5jb25maWcoKS5lbmFibGVfZmVjKTsKKyAgaWYgKGV2ZW50LmNvbmZpZygpLmVuYWJsZV9k
dHgpCisgICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfZW5hYmxlX2R0eCgqZXZlbnQu
Y29uZmlnKCkuZW5hYmxlX2R0eCk7CisgIGlmIChldmVudC5jb25maWcoKS5udW1fY2hhbm5lbHMp
CisgICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfbnVtX2NoYW5uZWxzKCpldmVudC5j
b25maWcoKS5udW1fY2hhbm5lbHMpOwogCiAgIHJldHVybiBTZXJpYWxpemUoJnJ0Y2xvZ19ldmVu
dCk7CiB9CkBAIC0zOTUsMTEgKzM5NSwxMSBAQCBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29k
ZXJMZWdhY3k6OkVuY29kZUF1ZGlvTmV0d29ya0FkYXB0YXRpb24oCiBzdGQ6OnN0cmluZyBSdGNF
dmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUF1ZGlvUGxheW91dCgKICAgICBjb25zdCBSdGNF
dmVudEF1ZGlvUGxheW91dCYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7
Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOwor
ICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAg
IHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpBVURJT19QTEFZT1VUX0VWRU5U
KTsKIAogICBhdXRvKiBwbGF5b3V0X2V2ZW50ID0gcnRjbG9nX2V2ZW50Lm11dGFibGVfYXVkaW9f
cGxheW91dF9ldmVudCgpOwotICBwbGF5b3V0X2V2ZW50LT5zZXRfbG9jYWxfc3NyYyhldmVudC5z
c3JjXyk7CisgIHBsYXlvdXRfZXZlbnQtPnNldF9sb2NhbF9zc3JjKGV2ZW50LnNzcmMoKSk7CiAK
ICAgcmV0dXJuIFNlcmlhbGl6ZSgmcnRjbG9nX2V2ZW50KTsKIH0KQEAgLTQwNywxNSArNDA3LDE1
IEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlQXVkaW9QbGF5
b3V0KAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVBdWRpb1Jl
Y2VpdmVTdHJlYW1Db25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1D
b25maWcmIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZlbnQgcnRjbG9nX2V2ZW50OwotICBydGNsb2df
ZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXNfKTsKKyAgcnRjbG9nX2V2
ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwogICBydGNsb2dfZXZl
bnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6QVVESU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UKTsK
IAogICBydGNsb2c6OkF1ZGlvUmVjZWl2ZUNvbmZpZyogcmVjZWl2ZXJfY29uZmlnID0KICAgICAg
IHJ0Y2xvZ19ldmVudC5tdXRhYmxlX2F1ZGlvX3JlY2VpdmVyX2NvbmZpZygpOwotICByZWNlaXZl
cl9jb25maWctPnNldF9yZW1vdGVfc3NyYyhldmVudC5jb25maWdfLT5yZW1vdGVfc3NyYyk7Ci0g
IHJlY2VpdmVyX2NvbmZpZy0+c2V0X2xvY2FsX3NzcmMoZXZlbnQuY29uZmlnXy0+bG9jYWxfc3Ny
Yyk7CisgIHJlY2VpdmVyX2NvbmZpZy0+c2V0X3JlbW90ZV9zc3JjKGV2ZW50LmNvbmZpZygpLnJl
bW90ZV9zc3JjKTsKKyAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfbG9jYWxfc3NyYyhldmVudC5jb25m
aWcoKS5sb2NhbF9zc3JjKTsKIAotICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWdf
LT5ydHBfZXh0ZW5zaW9ucykgeworICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWco
KS5ydHBfZXh0ZW5zaW9ucykgewogICAgIHJ0Y2xvZzo6UnRwSGVhZGVyRXh0ZW5zaW9uKiBleHRl
bnNpb24gPQogICAgICAgICByZWNlaXZlcl9jb25maWctPmFkZF9oZWFkZXJfZXh0ZW5zaW9ucygp
OwogICAgIGV4dGVuc2lvbi0+c2V0X25hbWUoZS51cmkpOwpAQCAtNDI4LDE1ICs0MjgsMTUgQEAg
c3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVBdWRpb1JlY2VpdmVT
dHJlYW1Db25maWcoCiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29k
ZUF1ZGlvU2VuZFN0cmVhbUNvbmZpZygKICAgICBjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVh
bUNvbmZpZyYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7Ci0gIHJ0Y2xv
Z19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOworICBydGNsb2df
ZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIHJ0Y2xvZ19l
dmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpBVURJT19TRU5ERVJfQ09ORklHX0VWRU5UKTsK
IAogICBydGNsb2c6OkF1ZGlvU2VuZENvbmZpZyogc2VuZGVyX2NvbmZpZyA9CiAgICAgICBydGNs
b2dfZXZlbnQubXV0YWJsZV9hdWRpb19zZW5kZXJfY29uZmlnKCk7CiAKLSAgc2VuZGVyX2NvbmZp
Zy0+c2V0X3NzcmMoZXZlbnQuY29uZmlnXy0+bG9jYWxfc3NyYyk7CisgIHNlbmRlcl9jb25maWct
PnNldF9zc3JjKGV2ZW50LmNvbmZpZygpLmxvY2FsX3NzcmMpOwogCi0gIGZvciAoY29uc3QgYXV0
byYgZSA6IGV2ZW50LmNvbmZpZ18tPnJ0cF9leHRlbnNpb25zKSB7CisgIGZvciAoY29uc3QgYXV0
byYgZSA6IGV2ZW50LmNvbmZpZygpLnJ0cF9leHRlbnNpb25zKSB7CiAgICAgcnRjbG9nOjpSdHBI
ZWFkZXJFeHRlbnNpb24qIGV4dGVuc2lvbiA9CiAgICAgICAgIHNlbmRlcl9jb25maWctPmFkZF9o
ZWFkZXJfZXh0ZW5zaW9ucygpOwogICAgIGV4dGVuc2lvbi0+c2V0X25hbWUoZS51cmkpOwpAQCAt
NDQ5LDEyICs0NDksMTIgQEAgc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpF
bmNvZGVBdWRpb1NlbmRTdHJlYW1Db25maWcoCiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29k
ZXJMZWdhY3k6OkVuY29kZUJ3ZVVwZGF0ZURlbGF5QmFzZWQoCiAgICAgY29uc3QgUnRjRXZlbnRC
d2VVcGRhdGVEZWxheUJhc2VkJiBldmVudCkgewogICBydGNsb2c6OkV2ZW50IHJ0Y2xvZ19ldmVu
dDsKLSAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzXyk7
CisgIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91cygpKTsK
ICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZlbnQ6OkRFTEFZX0JBU0VEX0JXRV9V
UERBVEUpOwogCiAgIGF1dG8qIGJ3ZV9ldmVudCA9IHJ0Y2xvZ19ldmVudC5tdXRhYmxlX2RlbGF5
X2Jhc2VkX2J3ZV91cGRhdGUoKTsKLSAgYndlX2V2ZW50LT5zZXRfYml0cmF0ZV9icHMoZXZlbnQu
Yml0cmF0ZV9icHNfKTsKLSAgYndlX2V2ZW50LT5zZXRfZGV0ZWN0b3Jfc3RhdGUoQ29udmVydERl
dGVjdG9yU3RhdGUoZXZlbnQuZGV0ZWN0b3Jfc3RhdGVfKSk7CisgIGJ3ZV9ldmVudC0+c2V0X2Jp
dHJhdGVfYnBzKGV2ZW50LmJpdHJhdGVfYnBzKCkpOworICBid2VfZXZlbnQtPnNldF9kZXRlY3Rv
cl9zdGF0ZShDb252ZXJ0RGV0ZWN0b3JTdGF0ZShldmVudC5kZXRlY3Rvcl9zdGF0ZSgpKSk7CiAK
ICAgcmV0dXJuIFNlcmlhbGl6ZSgmcnRjbG9nX2V2ZW50KTsKIH0KQEAgLTQ2MiwxMyArNDYyLDEz
IEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlQndlVXBkYXRl
RGVsYXlCYXNlZCgKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2Rl
QndlVXBkYXRlTG9zc0Jhc2VkKAogICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2Vk
JiBldmVudCkgewogICBydGNsb2c6OkV2ZW50IHJ0Y2xvZ19ldmVudDsKLSAgcnRjbG9nX2V2ZW50
LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIHJ0Y2xvZ19ldmVudC5z
ZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91cygpKTsKICAgcnRjbG9nX2V2ZW50LnNl
dF90eXBlKHJ0Y2xvZzo6RXZlbnQ6OkxPU1NfQkFTRURfQldFX1VQREFURSk7CiAKICAgYXV0byog
YndlX2V2ZW50ID0gcnRjbG9nX2V2ZW50Lm11dGFibGVfbG9zc19iYXNlZF9id2VfdXBkYXRlKCk7
Ci0gIGJ3ZV9ldmVudC0+c2V0X2JpdHJhdGVfYnBzKGV2ZW50LmJpdHJhdGVfYnBzXyk7Ci0gIGJ3
ZV9ldmVudC0+c2V0X2ZyYWN0aW9uX2xvc3MoZXZlbnQuZnJhY3Rpb25fbG9zc18pOwotICBid2Vf
ZXZlbnQtPnNldF90b3RhbF9wYWNrZXRzKGV2ZW50LnRvdGFsX3BhY2tldHNfKTsKKyAgYndlX2V2
ZW50LT5zZXRfYml0cmF0ZV9icHMoZXZlbnQuYml0cmF0ZV9icHMoKSk7CisgIGJ3ZV9ldmVudC0+
c2V0X2ZyYWN0aW9uX2xvc3MoZXZlbnQuZnJhY3Rpb25fbG9zcygpKTsKKyAgYndlX2V2ZW50LT5z
ZXRfdG90YWxfcGFja2V0cyhldmVudC50b3RhbF9wYWNrZXRzKCkpOwogCiAgIHJldHVybiBTZXJp
YWxpemUoJnJ0Y2xvZ19ldmVudCk7CiB9CkBAIC00NzYsMTUgKzQ3NiwxNSBAQCBzdGQ6OnN0cmlu
ZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUJ3ZVVwZGF0ZUxvc3NCYXNlZCgKIHN0
ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlSWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZygKICAgICBjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWcmIGV2ZW50
KSB7CiAgIHJ0Y2xvZzo6RXZlbnQgZW5jb2RlZF9ydGNfZXZlbnQ7Ci0gIGVuY29kZWRfcnRjX2V2
ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIGVuY29kZWRfcnRj
X2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwogICBlbmNvZGVk
X3J0Y19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpJQ0VfQ0FORElEQVRFX1BBSVJfQ09O
RklHKTsKIAogICBhdXRvKiBlbmNvZGVkX2ljZV9ldmVudCA9CiAgICAgICBlbmNvZGVkX3J0Y19l
dmVudC5tdXRhYmxlX2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWcoKTsKICAgZW5jb2RlZF9pY2Vf
ZXZlbnQtPnNldF9jb25maWdfdHlwZSgKLSAgICAgIENvbnZlcnRJY2VDYW5kaWRhdGVQYWlyQ29u
ZmlnVHlwZShldmVudC50eXBlXykpOwotICBlbmNvZGVkX2ljZV9ldmVudC0+c2V0X2NhbmRpZGF0
ZV9wYWlyX2lkKGV2ZW50LmNhbmRpZGF0ZV9wYWlyX2lkXyk7Ci0gIGNvbnN0IGF1dG8mIGRlc2Mg
PSBldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjXzsKKyAgICAgIENvbnZlcnRJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnVHlwZShldmVudC50eXBlKCkpKTsKKyAgZW5jb2RlZF9pY2VfZXZlbnQtPnNldF9j
YW5kaWRhdGVfcGFpcl9pZChldmVudC5jYW5kaWRhdGVfcGFpcl9pZCgpKTsKKyAgY29uc3QgYXV0
byYgZGVzYyA9IGV2ZW50LmNhbmRpZGF0ZV9wYWlyX2Rlc2MoKTsKICAgZW5jb2RlZF9pY2VfZXZl
bnQtPnNldF9sb2NhbF9jYW5kaWRhdGVfdHlwZSgKICAgICAgIENvbnZlcnRJY2VDYW5kaWRhdGVU
eXBlKGRlc2MubG9jYWxfY2FuZGlkYXRlX3R5cGUpKTsKICAgZW5jb2RlZF9pY2VfZXZlbnQtPnNl
dF9sb2NhbF9yZWxheV9wcm90b2NvbCgKQEAgLTUwNSwyOCArNTA1LDI4IEBAIHN0ZDo6c3RyaW5n
IFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlSWNlQ2FuZGlkYXRlUGFpckNvbmZpZygK
IHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlSWNlQ2FuZGlkYXRl
UGFpckV2ZW50KAogICAgIGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpciYgZXZlbnQpIHsK
ICAgcnRjbG9nOjpFdmVudCBlbmNvZGVkX3J0Y19ldmVudDsKLSAgZW5jb2RlZF9ydGNfZXZlbnQu
c2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXNfKTsKKyAgZW5jb2RlZF9ydGNfZXZl
bnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIGVuY29kZWRfcnRj
X2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJUl9FVkVOVCk7
CiAKICAgYXV0byogZW5jb2RlZF9pY2VfZXZlbnQgPQogICAgICAgZW5jb2RlZF9ydGNfZXZlbnQu
bXV0YWJsZV9pY2VfY2FuZGlkYXRlX3BhaXJfZXZlbnQoKTsKICAgZW5jb2RlZF9pY2VfZXZlbnQt
PnNldF9ldmVudF90eXBlKAotICAgICAgQ29udmVydEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUo
ZXZlbnQudHlwZV8pKTsKLSAgZW5jb2RlZF9pY2VfZXZlbnQtPnNldF9jYW5kaWRhdGVfcGFpcl9p
ZChldmVudC5jYW5kaWRhdGVfcGFpcl9pZF8pOworICAgICAgQ29udmVydEljZUNhbmRpZGF0ZVBh
aXJFdmVudFR5cGUoZXZlbnQudHlwZSgpKSk7CisgIGVuY29kZWRfaWNlX2V2ZW50LT5zZXRfY2Fu
ZGlkYXRlX3BhaXJfaWQoZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQoKSk7CiAgIHJldHVybiBTZXJp
YWxpemUoJmVuY29kZWRfcnRjX2V2ZW50KTsKIH0KIAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dF
bmNvZGVyTGVnYWN5OjpFbmNvZGVQcm9iZUNsdXN0ZXJDcmVhdGVkKAogICAgIGNvbnN0IFJ0Y0V2
ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2df
ZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91
c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMo
KSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfQ0xV
U1RFUl9DUkVBVEVEX0VWRU5UKTsKIAogICBhdXRvKiBwcm9iZV9jbHVzdGVyID0gcnRjbG9nX2V2
ZW50Lm11dGFibGVfcHJvYmVfY2x1c3RlcigpOwotICBwcm9iZV9jbHVzdGVyLT5zZXRfaWQoZXZl
bnQuaWRfKTsKLSAgcHJvYmVfY2x1c3Rlci0+c2V0X2JpdHJhdGVfYnBzKGV2ZW50LmJpdHJhdGVf
YnBzXyk7Ci0gIHByb2JlX2NsdXN0ZXItPnNldF9taW5fcGFja2V0cyhldmVudC5taW5fcHJvYmVz
Xyk7Ci0gIHByb2JlX2NsdXN0ZXItPnNldF9taW5fYnl0ZXMoZXZlbnQubWluX2J5dGVzXyk7Cisg
IHByb2JlX2NsdXN0ZXItPnNldF9pZChldmVudC5pZCgpKTsKKyAgcHJvYmVfY2x1c3Rlci0+c2V0
X2JpdHJhdGVfYnBzKGV2ZW50LmJpdHJhdGVfYnBzKCkpOworICBwcm9iZV9jbHVzdGVyLT5zZXRf
bWluX3BhY2tldHMoZXZlbnQubWluX3Byb2JlcygpKTsKKyAgcHJvYmVfY2x1c3Rlci0+c2V0X21p
bl9ieXRlcyhldmVudC5taW5fYnl0ZXMoKSk7CiAKICAgcmV0dXJuIFNlcmlhbGl6ZSgmcnRjbG9n
X2V2ZW50KTsKIH0KQEAgLTUzNCwxMiArNTM0LDEyIEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9n
RW5jb2RlckxlZ2FjeTo6RW5jb2RlUHJvYmVDbHVzdGVyQ3JlYXRlZCgKIHN0ZDo6c3RyaW5nIFJ0
Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlUHJvYmVSZXN1bHRGYWlsdXJlKAogICAgIGNv
bnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlJiBldmVudCkgewogICBydGNsb2c6OkV2ZW50
IHJ0Y2xvZ19ldmVudDsKLSAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGlt
ZXN0YW1wX3VzXyk7CisgIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVz
dGFtcF91cygpKTsKICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZlbnQ6OkJXRV9Q
Uk9CRV9SRVNVTFRfRVZFTlQpOwogCiAgIGF1dG8qIHByb2JlX3Jlc3VsdCA9IHJ0Y2xvZ19ldmVu
dC5tdXRhYmxlX3Byb2JlX3Jlc3VsdCgpOwotICBwcm9iZV9yZXN1bHQtPnNldF9pZChldmVudC5p
ZF8pOwotICBwcm9iZV9yZXN1bHQtPnNldF9yZXN1bHQoQ29udmVydFByb2JlUmVzdWx0VHlwZShl
dmVudC5mYWlsdXJlX3JlYXNvbl8pKTsKKyAgcHJvYmVfcmVzdWx0LT5zZXRfaWQoZXZlbnQuaWQo
KSk7CisgIHByb2JlX3Jlc3VsdC0+c2V0X3Jlc3VsdChDb252ZXJ0UHJvYmVSZXN1bHRUeXBlKGV2
ZW50LmZhaWx1cmVfcmVhc29uKCkpKTsKIAogICByZXR1cm4gU2VyaWFsaXplKCZydGNsb2dfZXZl
bnQpOwogfQpAQCAtNTQ3LDcwICs1NDcsNzEgQEAgc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNv
ZGVyTGVnYWN5OjpFbmNvZGVQcm9iZVJlc3VsdEZhaWx1cmUoCiBzdGQ6OnN0cmluZyBSdGNFdmVu
dExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZVByb2JlUmVzdWx0U3VjY2VzcygKICAgICBjb25zdCBS
dGNFdmVudFByb2JlUmVzdWx0U3VjY2VzcyYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNs
b2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFt
cF91c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBf
dXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVf
UkVTVUxUX0VWRU5UKTsKIAogICBhdXRvKiBwcm9iZV9yZXN1bHQgPSBydGNsb2dfZXZlbnQubXV0
YWJsZV9wcm9iZV9yZXN1bHQoKTsKLSAgcHJvYmVfcmVzdWx0LT5zZXRfaWQoZXZlbnQuaWRfKTsK
KyAgcHJvYmVfcmVzdWx0LT5zZXRfaWQoZXZlbnQuaWQoKSk7CiAgIHByb2JlX3Jlc3VsdC0+c2V0
X3Jlc3VsdChydGNsb2c6OkJ3ZVByb2JlUmVzdWx0OjpTVUNDRVNTKTsKLSAgcHJvYmVfcmVzdWx0
LT5zZXRfYml0cmF0ZV9icHMoZXZlbnQuYml0cmF0ZV9icHNfKTsKKyAgcHJvYmVfcmVzdWx0LT5z
ZXRfYml0cmF0ZV9icHMoZXZlbnQuYml0cmF0ZV9icHMoKSk7CiAKICAgcmV0dXJuIFNlcmlhbGl6
ZSgmcnRjbG9nX2V2ZW50KTsKIH0KIAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVn
YWN5OjpFbmNvZGVSdGNwUGFja2V0SW5jb21pbmcoCiAgICAgY29uc3QgUnRjRXZlbnRSdGNwUGFj
a2V0SW5jb21pbmcmIGV2ZW50KSB7Ci0gIHJldHVybiBFbmNvZGVSdGNwUGFja2V0KGV2ZW50LnRp
bWVzdGFtcF91c18sIGV2ZW50LnBhY2tldF8sIHRydWUpOworICByZXR1cm4gRW5jb2RlUnRjcFBh
Y2tldChldmVudC50aW1lc3RhbXBfdXMoKSwgZXZlbnQucGFja2V0KCksIHRydWUpOwogfQogCiBz
dGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZVJ0Y3BQYWNrZXRPdXRn
b2luZygKICAgICBjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZyYgZXZlbnQpIHsKLSAg
cmV0dXJuIEVuY29kZVJ0Y3BQYWNrZXQoZXZlbnQudGltZXN0YW1wX3VzXywgZXZlbnQucGFja2V0
XywgZmFsc2UpOworICByZXR1cm4gRW5jb2RlUnRjcFBhY2tldChldmVudC50aW1lc3RhbXBfdXMo
KSwgZXZlbnQucGFja2V0KCksIGZhbHNlKTsKIH0KIAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dF
bmNvZGVyTGVnYWN5OjpFbmNvZGVSdHBQYWNrZXRJbmNvbWluZygKICAgICBjb25zdCBSdGNFdmVu
dFJ0cFBhY2tldEluY29taW5nJiBldmVudCkgewotICByZXR1cm4gRW5jb2RlUnRwUGFja2V0KGV2
ZW50LnRpbWVzdGFtcF91c18sIGV2ZW50LmhlYWRlcl8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnQucGFja2V0X2xlbmd0aF8sIFBhY2VkUGFja2V0SW5mbzo6a05vdEFQcm9iZSwKKyAg
cmV0dXJuIEVuY29kZVJ0cFBhY2tldChldmVudC50aW1lc3RhbXBfdXMoKSwgZXZlbnQuaGVhZGVy
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucGFja2V0X2xlbmd0aCgpLCBQYWNl
ZFBhY2tldEluZm86OmtOb3RBUHJvYmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7
CiB9CiAKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlUnRwUGFj
a2V0T3V0Z29pbmcoCiAgICAgY29uc3QgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZyYgZXZlbnQp
IHsKLSAgcmV0dXJuIEVuY29kZVJ0cFBhY2tldChldmVudC50aW1lc3RhbXBfdXNfLCBldmVudC5o
ZWFkZXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnBhY2tldF9sZW5ndGhfLCBl
dmVudC5wcm9iZV9jbHVzdGVyX2lkXywgZmFsc2UpOworICByZXR1cm4gRW5jb2RlUnRwUGFja2V0
KGV2ZW50LnRpbWVzdGFtcF91cygpLCBldmVudC5oZWFkZXIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBldmVudC5wYWNrZXRfbGVuZ3RoKCksIGV2ZW50LnByb2JlX2NsdXN0ZXJfaWQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKIHN0ZDo6c3RyaW5nIFJ0Y0V2
ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlVmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnKAogICAg
IGNvbnN0IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnJiBldmVudCkgewogICBydGNs
b2c6OkV2ZW50IHJ0Y2xvZ19ldmVudDsKLSAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMo
ZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2
ZW50LnRpbWVzdGFtcF91cygpKTsKICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZl
bnQ6OlZJREVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCk7CiAKICAgcnRjbG9nOjpWaWRlb1JlY2Vp
dmVDb25maWcqIHJlY2VpdmVyX2NvbmZpZyA9CiAgICAgICBydGNsb2dfZXZlbnQubXV0YWJsZV92
aWRlb19yZWNlaXZlcl9jb25maWcoKTsKLSAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfcmVtb3RlX3Nz
cmMoZXZlbnQuY29uZmlnXy0+cmVtb3RlX3NzcmMpOwotICByZWNlaXZlcl9jb25maWctPnNldF9s
b2NhbF9zc3JjKGV2ZW50LmNvbmZpZ18tPmxvY2FsX3NzcmMpOworICByZWNlaXZlcl9jb25maWct
PnNldF9yZW1vdGVfc3NyYyhldmVudC5jb25maWcoKS5yZW1vdGVfc3NyYyk7CisgIHJlY2VpdmVy
X2NvbmZpZy0+c2V0X2xvY2FsX3NzcmMoZXZlbnQuY29uZmlnKCkubG9jYWxfc3NyYyk7CiAKICAg
Ly8gVE9ETyhwZXJraik6IEFkZCBmaWVsZCBmb3IgcnNpZC4KLSAgcmVjZWl2ZXJfY29uZmlnLT5z
ZXRfcnRjcF9tb2RlKENvbnZlcnRSdGNwTW9kZShldmVudC5jb25maWdfLT5ydGNwX21vZGUpKTsK
LSAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfcmVtYihldmVudC5jb25maWdfLT5yZW1iKTsKKyAgcmVj
ZWl2ZXJfY29uZmlnLT5zZXRfcnRjcF9tb2RlKENvbnZlcnRSdGNwTW9kZShldmVudC5jb25maWco
KS5ydGNwX21vZGUpKTsKKyAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfcmVtYihldmVudC5jb25maWco
KS5yZW1iKTsKIAotICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWdfLT5ydHBfZXh0
ZW5zaW9ucykgeworICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWcoKS5ydHBfZXh0
ZW5zaW9ucykgewogICAgIHJ0Y2xvZzo6UnRwSGVhZGVyRXh0ZW5zaW9uKiBleHRlbnNpb24gPQog
ICAgICAgICByZWNlaXZlcl9jb25maWctPmFkZF9oZWFkZXJfZXh0ZW5zaW9ucygpOwogICAgIGV4
dGVuc2lvbi0+c2V0X25hbWUoZS51cmkpOwogICAgIGV4dGVuc2lvbi0+c2V0X2lkKGUuaWQpOwog
ICB9CiAKLSAgZm9yIChjb25zdCBhdXRvJiBkIDogZXZlbnQuY29uZmlnXy0+Y29kZWNzKSB7Cisg
IGZvciAoY29uc3QgYXV0byYgZCA6IGV2ZW50LmNvbmZpZygpLmNvZGVjcykgewogICAgIHJ0Y2xv
Zzo6RGVjb2RlckNvbmZpZyogZGVjb2RlciA9IHJlY2VpdmVyX2NvbmZpZy0+YWRkX2RlY29kZXJz
KCk7CiAgICAgZGVjb2Rlci0+c2V0X25hbWUoZC5wYXlsb2FkX25hbWUpOwogICAgIGRlY29kZXIt
PnNldF9wYXlsb2FkX3R5cGUoZC5wYXlsb2FkX3R5cGUpOwogICAgIGlmIChkLnJ0eF9wYXlsb2Fk
X3R5cGUgIT0gMCkgewogICAgICAgcnRjbG9nOjpSdHhNYXAqIHJ0eCA9IHJlY2VpdmVyX2NvbmZp
Zy0+YWRkX3J0eF9tYXAoKTsKICAgICAgIHJ0eC0+c2V0X3BheWxvYWRfdHlwZShkLnBheWxvYWRf
dHlwZSk7Ci0gICAgICBydHgtPm11dGFibGVfY29uZmlnKCktPnNldF9ydHhfc3NyYyhldmVudC5j
b25maWdfLT5ydHhfc3NyYyk7CisgICAgICBydHgtPm11dGFibGVfY29uZmlnKCktPnNldF9ydHhf
c3NyYyhldmVudC5jb25maWcoKS5ydHhfc3NyYyk7CiAgICAgICBydHgtPm11dGFibGVfY29uZmln
KCktPnNldF9ydHhfcGF5bG9hZF90eXBlKGQucnR4X3BheWxvYWRfdHlwZSk7CiAgICAgfQogICB9
CkBAIC02MjEsMTkgKzYyMiwxOSBAQCBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdh
Y3k6OkVuY29kZVZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZygKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50
TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlVmlkZW9TZW5kU3RyZWFtQ29uZmlnKAogICAgIGNvbnN0
IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnJiBldmVudCkgewogICBydGNsb2c6OkV2ZW50
IHJ0Y2xvZ19ldmVudDsKLSAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGlt
ZXN0YW1wX3VzXyk7CisgIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVz
dGFtcF91cygpKTsKICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZlbnQ6OlZJREVP
X1NFTkRFUl9DT05GSUdfRVZFTlQpOwogCiAgIHJ0Y2xvZzo6VmlkZW9TZW5kQ29uZmlnKiBzZW5k
ZXJfY29uZmlnID0KICAgICAgIHJ0Y2xvZ19ldmVudC5tdXRhYmxlX3ZpZGVvX3NlbmRlcl9jb25m
aWcoKTsKIAogICAvLyBUT0RPKHBlcmtqKTogcnRjbG9nOjpWaWRlb1NlbmRDb25maWcgc2hvdWxk
IG9ubHkgY29udGFpbiBvbmUgU1NSQy4KLSAgc2VuZGVyX2NvbmZpZy0+YWRkX3NzcmNzKGV2ZW50
LmNvbmZpZ18tPmxvY2FsX3NzcmMpOwotICBpZiAoZXZlbnQuY29uZmlnXy0+cnR4X3NzcmMgIT0g
MCkgewotICAgIHNlbmRlcl9jb25maWctPmFkZF9ydHhfc3NyY3MoZXZlbnQuY29uZmlnXy0+cnR4
X3NzcmMpOworICBzZW5kZXJfY29uZmlnLT5hZGRfc3NyY3MoZXZlbnQuY29uZmlnKCkubG9jYWxf
c3NyYyk7CisgIGlmIChldmVudC5jb25maWcoKS5ydHhfc3NyYyAhPSAwKSB7CisgICAgc2VuZGVy
X2NvbmZpZy0+YWRkX3J0eF9zc3JjcyhldmVudC5jb25maWcoKS5ydHhfc3NyYyk7CiAgIH0KIAot
ICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWdfLT5ydHBfZXh0ZW5zaW9ucykgewor
ICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25maWcoKS5ydHBfZXh0ZW5zaW9ucykgewog
ICAgIHJ0Y2xvZzo6UnRwSGVhZGVyRXh0ZW5zaW9uKiBleHRlbnNpb24gPQogICAgICAgICBzZW5k
ZXJfY29uZmlnLT5hZGRfaGVhZGVyX2V4dGVuc2lvbnMoKTsKICAgICBleHRlbnNpb24tPnNldF9u
YW1lKGUudXJpKTsKQEAgLTY0MiwxMyArNjQzLDEzIEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9n
RW5jb2RlckxlZ2FjeTo6RW5jb2RlVmlkZW9TZW5kU3RyZWFtQ29uZmlnKAogCiAgIC8vIFRPRE8o
cGVya2opOiBydGNsb2c6OlZpZGVvU2VuZENvbmZpZyBzaG91bGQgY29udGFpbiBtYW55IHBvc3Np
YmxlIGNvZGVjCiAgIC8vIGNvbmZpZ3VyYXRpb25zLgotICBmb3IgKGNvbnN0IGF1dG8mIGNvZGVj
IDogZXZlbnQuY29uZmlnXy0+Y29kZWNzKSB7CisgIGZvciAoY29uc3QgYXV0byYgY29kZWMgOiBl
dmVudC5jb25maWcoKS5jb2RlY3MpIHsKICAgICBzZW5kZXJfY29uZmlnLT5zZXRfcnR4X3BheWxv
YWRfdHlwZShjb2RlYy5ydHhfcGF5bG9hZF90eXBlKTsKICAgICBydGNsb2c6OkVuY29kZXJDb25m
aWcqIGVuY29kZXIgPSBzZW5kZXJfY29uZmlnLT5tdXRhYmxlX2VuY29kZXIoKTsKICAgICBlbmNv
ZGVyLT5zZXRfbmFtZShjb2RlYy5wYXlsb2FkX25hbWUpOwogICAgIGVuY29kZXItPnNldF9wYXls
b2FkX3R5cGUoY29kZWMucGF5bG9hZF90eXBlKTsKIAotICAgIGlmIChldmVudC5jb25maWdfLT5j
b2RlY3Muc2l6ZSgpID4gMSkgeworICAgIGlmIChldmVudC5jb25maWcoKS5jb2RlY3Muc2l6ZSgp
ID4gMSkgewogICAgICAgUlRDX0xPRyhXQVJOSU5HKQogICAgICAgICAgIDw8ICJMb2dWaWRlb1Nl
bmRTdHJlYW1Db25maWcgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgb25lICIKICAgICAgICAgICA8
PCAiY29kZWMuIExvZ2dpbmcgY29kZWMgOiIgPDwgY29kZWMucGF5bG9hZF9uYW1lOwpAQCAtNzU2
LDUgKzc1NywzIEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6U2VyaWFs
aXplKHJ0Y2xvZzo6RXZlbnQqIGV2ZW50KSB7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
LQotI2VuZGlmICAvLyBFTkFCTEVfUlRDX0VWRU5UX0xPRwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRj
X2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5oCmluZGV4IDg3ZGIwMzllM2FmZjNmMTZlYjljYWVh
YzU3MjJlMTE1NjdkYTU1ZDAuLjMxMDVkYzFlNjhjNmI5MzhlYTg5MGM3ZDI2MWI5ZjI3NjY3MDJi
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9sZWdh
Y3kuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbGVnYWN5LmgK
QEAgLTE4LDggKzE4LDYgQEAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rl
ci9ydGNfZXZlbnRfbG9nX2VuY29kZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIK
IAotI2lmIGRlZmluZWQoRU5BQkxFX1JUQ19FVkVOVF9MT0cpCi0KIG5hbWVzcGFjZSB3ZWJydGMg
ewogCiBuYW1lc3BhY2UgcnRjbG9nIHsKQEAgLTUyLDcgKzUwLDggQEAgY2xhc3MgUnRjRXZlbnRM
b2dFbmNvZGVyTGVnYWN5IGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50TG9nRW5jb2RlciB7CiAgcHVi
bGljOgogICB+UnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5KCkgb3ZlcnJpZGUgPSBkZWZhdWx0Owog
Ci0gIHN0ZDo6c3RyaW5nIEVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3VzKSBvdmVy
cmlkZTsKKyAgc3RkOjpzdHJpbmcgRW5jb2RlTG9nU3RhcnQoaW50NjRfdCB0aW1lc3RhbXBfdXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdXRjX3RpbWVfdXMpIG92ZXJy
aWRlOwogICBzdGQ6OnN0cmluZyBFbmNvZGVMb2dFbmQoaW50NjRfdCB0aW1lc3RhbXBfdXMpIG92
ZXJyaWRlOwogCiAgIHN0ZDo6c3RyaW5nIEVuY29kZUJhdGNoKApAQCAtMTA1LDYgKzEwNCw0IEBA
IGNsYXNzIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeSBmaW5hbCA6IHB1YmxpYyBSdGNFdmVudExv
Z0VuY29kZXIgewogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKLSNlbmRpZiAgLy8gRU5BQkxF
X1JUQ19FVkVOVF9MT0cKLQogI2VuZGlmICAvLyBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RF
Ul9SVENfRVZFTlRfTE9HX0VOQ09ERVJfTEVHQUNZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5j
b2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbmV3X2Zvcm1hdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVy
L3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9uZXdfZm9ybWF0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZGMzNzlm
NDhiNDFhNDYwZDVmNDYyMTcyYzIxNGYxMjI3NTk4YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbmV3X2Zvcm1hdC5jYwpAQCAtMCwwICsx
LDEzMzYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25ld19mb3JtYXQuaCIKKwor
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmll
dy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2Rp
bmcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9kZWx0YV9lbmNv
ZGluZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVu
dF9sb2dfZW5jb2Rlcl9jb21tb24uaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF9hbHJfc3RhdGUuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb24uaCIKKyNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19wbGF5b3V0
LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVk
aW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnLmgiCisjaW5jbHVk
ZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9kZWxh
eV9iYXNlZC5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5oIgorI2luY2x1ZGUgImxv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpcl9j
b25maWcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9wcm9iZV9jbHVzdGVyX2NyZWF0ZWQuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfZmFpbHVyZS5oIgorI2luY2x1ZGUgImxv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9zdWNjZXNz
LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRj
cF9wYWNrZXRfaW5jb21pbmcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9vdXRnb2luZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuaCIKKyNp
bmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0
X291dGdvaW5nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgiCisjaW5jbHVkZSAibG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlnLmgi
CisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19zdHJlYW1fY29uZmlnLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1
ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2N2by5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYXBwLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF9wYWNrZXQvYnllLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9wYWNrZXQvY29tbW9uX2hlYWRlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2V4dGVuZGVkX2ppdHRlcl9yZXBvcnQuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRlZF9yZXBvcnRz
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcHNmYi5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3JlY2VpdmVy
X3JlcG9ydC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0
L3J0cGZiLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
c2Rlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3Nl
bmRlcl9yZXBvcnQuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVh
ZGVyX2V4dGVuc2lvbnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
cGFja2V0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvaWdub3JlX3d1bmRlZi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKworLy8g
Ki5wYi5oIGZpbGVzIGFyZSBnZW5lcmF0ZWQgYXQgYnVpbGQtdGltZSBieSB0aGUgcHJvdG9idWYg
Y29tcGlsZXIuCitSVENfUFVTSF9JR05PUklOR19XVU5ERUYoKQorI2lmZGVmIFdFQlJUQ19BTkRS
T0lEX1BMQVRGT1JNX0JVSUxECisjaW5jbHVkZSAiZXh0ZXJuYWwvd2VicnRjL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzIucGIuaCIKKyNlbHNlCisjaW5jbHVkZSAi
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnBiLmgiCisjZW5kaWYKK1JUQ19Q
T1BfSUdOT1JJTkdfV1VOREVGKCkKKwordXNpbmcgd2VicnRjX2V2ZW50X2xvZ2dpbmc6OlRvVW5z
aWduZWQ7CisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1lc3BhY2UgeworcnRjbG9nMjo6RGVs
YXlCYXNlZEJ3ZVVwZGF0ZXM6OkRldGVjdG9yU3RhdGUgQ29udmVydFRvUHJvdG9Gb3JtYXQoCisg
ICAgQmFuZHdpZHRoVXNhZ2Ugc3RhdGUpIHsKKyAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2Ug
QmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1hbDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpEZWxheUJh
c2VkQndlVXBkYXRlczo6QldFX05PUk1BTDsKKyAgICBjYXNlIEJhbmR3aWR0aFVzYWdlOjprQndV
bmRlcnVzaW5nOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVzOjpC
V0VfVU5ERVJVU0lORzsKKyAgICBjYXNlIEJhbmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmc6Cisg
ICAgICByZXR1cm4gcnRjbG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkJXRV9PVkVSVVNJTkc7
CisgICAgY2FzZSBCYW5kd2lkdGhVc2FnZTo6a0xhc3Q6CisgICAgICBSVENfTk9UUkVBQ0hFRCgp
OworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBydGNsb2cyOjpEZWxheUJhc2Vk
QndlVXBkYXRlczo6QldFX1VOS05PV05fU1RBVEU7Cit9CisKK3J0Y2xvZzI6OkJ3ZVByb2JlUmVz
dWx0RmFpbHVyZTo6RmFpbHVyZVJlYXNvbiBDb252ZXJ0VG9Qcm90b0Zvcm1hdCgKKyAgICBQcm9i
ZUZhaWx1cmVSZWFzb24gZmFpbHVyZV9yZWFzb24pIHsKKyAgc3dpdGNoIChmYWlsdXJlX3JlYXNv
bikgeworICAgIGNhc2UgUHJvYmVGYWlsdXJlUmVhc29uOjprSW52YWxpZFNlbmRSZWNlaXZlSW50
ZXJ2YWw6CisgICAgICByZXR1cm4gcnRjbG9nMjo6QndlUHJvYmVSZXN1bHRGYWlsdXJlOjpJTlZB
TElEX1NFTkRfUkVDRUlWRV9JTlRFUlZBTDsKKyAgICBjYXNlIFByb2JlRmFpbHVyZVJlYXNvbjo6
a0ludmFsaWRTZW5kUmVjZWl2ZVJhdGlvOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkJ3ZVByb2Jl
UmVzdWx0RmFpbHVyZTo6SU5WQUxJRF9TRU5EX1JFQ0VJVkVfUkFUSU87CisgICAgY2FzZSBQcm9i
ZUZhaWx1cmVSZWFzb246OmtUaW1lb3V0OgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkJ3ZVByb2Jl
UmVzdWx0RmFpbHVyZTo6VElNRU9VVDsKKyAgICBjYXNlIFByb2JlRmFpbHVyZVJlYXNvbjo6a0xh
c3Q6CisgICAgICBSVENfTk9UUkVBQ0hFRCgpOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7Cisg
IHJldHVybiBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1cmU6OlVOS05PV047Cit9CisKKy8v
IFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgcmVjb2duaXplZCBleHRlbnNpb25zIHRoYXQgd2Ug
c2hvdWxkIGxvZworLy8gYW5kIGZhbHNlIGlmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIG9yIGFs
bCBleHRlbnNpb25zIGFyZSB0eXBlcyB3ZSBkb24ndAorLy8gbG9nLiBUaGUgcHJvdG9idWYgcmVw
cmVzZW50YXRpb24gb2YgdGhlIGhlYWRlciBjb25maWdzIGlzIHdyaXR0ZW4gdG8KKy8vIHxwcm90
b19jb25maWd8LgorYm9vbCBDb252ZXJ0VG9Qcm90b0Zvcm1hdChjb25zdCBzdGQ6OnZlY3RvcjxS
dHBFeHRlbnNpb24+JiBleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBydGNs
b2cyOjpSdHBIZWFkZXJFeHRlbnNpb25Db25maWcqIHByb3RvX2NvbmZpZykgeworICBzaXplX3Qg
dW5rbm93bl9leHRlbnNpb25zID0gMDsKKyAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNp
b25zKSB7CisgICAgaWYgKGV4dGVuc2lvbi51cmkgPT0gUnRwRXh0ZW5zaW9uOjprQXVkaW9MZXZl
bFVyaSkgeworICAgICAgcHJvdG9fY29uZmlnLT5zZXRfYXVkaW9fbGV2ZWxfaWQoZXh0ZW5zaW9u
LmlkKTsKKyAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbi51cmkgPT0gUnRwRXh0ZW5zaW9uOjprVGlt
ZXN0YW1wT2Zmc2V0VXJpKSB7CisgICAgICBwcm90b19jb25maWctPnNldF90cmFuc21pc3Npb25f
dGltZV9vZmZzZXRfaWQoZXh0ZW5zaW9uLmlkKTsKKyAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbi51
cmkgPT0gUnRwRXh0ZW5zaW9uOjprQWJzU2VuZFRpbWVVcmkpIHsKKyAgICAgIHByb3RvX2NvbmZp
Zy0+c2V0X2Fic29sdXRlX3NlbmRfdGltZV9pZChleHRlbnNpb24uaWQpOworICAgIH0gZWxzZSBp
ZiAoZXh0ZW5zaW9uLnVyaSA9PSBSdHBFeHRlbnNpb246OmtUcmFuc3BvcnRTZXF1ZW5jZU51bWJl
clVyaSkgeworICAgICAgcHJvdG9fY29uZmlnLT5zZXRfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJl
cl9pZChleHRlbnNpb24uaWQpOworICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9uLnVyaSA9PSBSdHBF
eHRlbnNpb246OmtWaWRlb1JvdGF0aW9uVXJpKSB7CisgICAgICBwcm90b19jb25maWctPnNldF92
aWRlb19yb3RhdGlvbl9pZChleHRlbnNpb24uaWQpOworICAgIH0gZWxzZSB7CisgICAgICArK3Vu
a25vd25fZXh0ZW5zaW9uczsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHVua25vd25fZXh0ZW5zaW9u
cyA8IGV4dGVuc2lvbnMuc2l6ZSgpOworfQorCitydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29u
ZmlnOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZQorQ29udmVydFRvUHJvdG9Gb3JtYXQoSWNl
Q2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgdHlwZSkgeworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBj
YXNlIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlOjprQWRkZWQ6CisgICAgICByZXR1cm4gcnRj
bG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6QURERUQ7CisgICAgY2FzZSBJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnVHlwZTo6a1VwZGF0ZWQ6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZzo6VVBEQVRFRDsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJDb25m
aWdUeXBlOjprRGVzdHJveWVkOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBh
aXJDb25maWc6OkRFU1RST1lFRDsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBl
OjprU2VsZWN0ZWQ6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZp
Zzo6U0VMRUNURUQ7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a051bVZh
bHVlczoKKyAgICAgIFJUQ19OT1RSRUFDSEVEKCk7CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsK
KyAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fQ09ORklH
X1RZUEU7Cit9CisKK3J0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkljZUNhbmRpZGF0
ZVR5cGUgQ29udmVydFRvUHJvdG9Gb3JtYXQoCisgICAgSWNlQ2FuZGlkYXRlVHlwZSB0eXBlKSB7
CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSWNlQ2FuZGlkYXRlVHlwZTo6a1Vua25vd246
CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9D
QU5ESURBVEVfVFlQRTsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVR5cGU6OmtMb2NhbDoKKyAgICAg
IHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpMT0NBTDsKKyAgICBjYXNl
IEljZUNhbmRpZGF0ZVR5cGU6OmtTdHVuOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRp
ZGF0ZVBhaXJDb25maWc6OlNUVU47CisgICAgY2FzZSBJY2VDYW5kaWRhdGVUeXBlOjprUHJmbHg6
CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6UFJGTFg7Cisg
ICAgY2FzZSBJY2VDYW5kaWRhdGVUeXBlOjprUmVsYXk6CisgICAgICByZXR1cm4gcnRjbG9nMjo6
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6UkVMQVk7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVUeXBl
OjprTnVtVmFsdWVzOgorICAgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgfQorICBSVENfTk9UUkVB
Q0hFRCgpOworICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9X
Tl9DQU5ESURBVEVfVFlQRTsKK30KKworcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6
UHJvdG9jb2wgQ29udmVydFRvUHJvdG9Gb3JtYXQoCisgICAgSWNlQ2FuZGlkYXRlUGFpclByb3Rv
Y29sIHByb3RvY29sKSB7CisgIHN3aXRjaCAocHJvdG9jb2wpIHsKKyAgICBjYXNlIEljZUNhbmRp
ZGF0ZVBhaXJQcm90b2NvbDo6a1Vua25vd246CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9QUk9UT0NPTDsKKyAgICBjYXNlIEljZUNhbmRpZGF0
ZVBhaXJQcm90b2NvbDo6a1VkcDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnOjpVRFA7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtUY3A6
CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VENQOworICAg
IGNhc2UgSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprU3NsdGNwOgorICAgICAgcmV0dXJuIHJ0
Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlNTTFRDUDsKKyAgICBjYXNlIEljZUNhbmRp
ZGF0ZVBhaXJQcm90b2NvbDo6a1RsczoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnOjpUTFM7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtO
dW1WYWx1ZXM6CisgICAgICBSVENfTk9UUkVBQ0hFRCgpOworICB9CisgIFJUQ19OT1RSRUFDSEVE
KCk7CisgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX1BS
T1RPQ09MOworfQorCitydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpBZGRyZXNzRmFt
aWx5IENvbnZlcnRUb1Byb3RvRm9ybWF0KAorICAgIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFt
aWx5IGFkZHJlc3NfZmFtaWx5KSB7CisgIHN3aXRjaCAoYWRkcmVzc19mYW1pbHkpIHsKKyAgICBj
YXNlIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5OjprVW5rbm93bjoKKyAgICAgIHJldHVy
biBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX0FERFJFU1NfRkFNSUxZ
OworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHk6OmtJcHY0OgorICAgICAg
cmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OklQVjQ7CisgICAgY2FzZSBJ
Y2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6a0lwdjY6CisgICAgICByZXR1cm4gcnRjbG9n
Mjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SVBWNjsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBh
aXJBZGRyZXNzRmFtaWx5OjprTnVtVmFsdWVzOgorICAgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAg
fQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZzo6VU5LTk9XTl9BRERSRVNTX0ZBTUlMWTsKK30KKworcnRjbG9nMjo6SWNlQ2FuZGlk
YXRlUGFpckNvbmZpZzo6TmV0d29ya1R5cGUgQ29udmVydFRvUHJvdG9Gb3JtYXQoCisgICAgSWNl
Q2FuZGlkYXRlTmV0d29ya1R5cGUgbmV0d29ya190eXBlKSB7CisgIHN3aXRjaCAobmV0d29ya190
eXBlKSB7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a1Vua25vd246CisgICAg
ICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9ORVRXT1JL
X1RZUEU7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a0V0aGVybmV0OgorICAg
ICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkVUSEVSTkVUOworICAg
IGNhc2UgSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtMb29wYmFjazoKKyAgICAgIHJldHVybiBy
dGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpMT09QQkFDSzsKKyAgICBjYXNlIEljZUNh
bmRpZGF0ZU5ldHdvcmtUeXBlOjprV2lmaToKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnOjpXSUZJOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6
OmtWcG46CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VlBO
OworICAgIGNhc2UgSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtDZWxsdWxhcjoKKyAgICAgIHJl
dHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpDRUxMVUxBUjsKKyAgICBjYXNl
IEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprTnVtVmFsdWVzOgorICAgICAgUlRDX05PVFJFQUNI
RUQoKTsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gcnRjbG9nMjo6SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9ORVRXT1JLX1RZUEU7Cit9CisKK3J0Y2xvZzI6Oklj
ZUNhbmRpZGF0ZVBhaXJFdmVudDo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSBDb252ZXJ0VG9Q
cm90b0Zvcm1hdCgKKyAgICBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlIHR5cGUpIHsKKyAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tT
ZW50OgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudDo6Q0hFQ0tf
U0VOVDsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGU6OmtDaGVja1JlY2VpdmVk
OgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudDo6Q0hFQ0tfUkVD
RUlWRUQ7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tSZXNwb25z
ZVNlbnQ6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpDSEVD
S19SRVNQT05TRV9TRU5UOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0No
ZWNrUmVzcG9uc2VSZWNlaXZlZDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQ
YWlyRXZlbnQ6OkNIRUNLX1JFU1BPTlNFX1JFQ0VJVkVEOworICAgIGNhc2UgSWNlQ2FuZGlkYXRl
UGFpckV2ZW50VHlwZTo6a051bVZhbHVlczoKKyAgICAgIFJUQ19OT1RSRUFDSEVEKCk7CisgIH0K
KyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJF
dmVudDo6VU5LTk9XTl9DSEVDS19UWVBFOworfQorCisvLyBDb3BpZXMgYWxsIFJUQ1AgYmxvY2tz
IGV4Y2VwdCBBUFAsIFNERVMgYW5kIHVua25vd24gZnJvbSB8cGFja2V0fCB0bworLy8gfGJ1ZmZl
cnwuIHxidWZmZXJ8IG11c3QgaGF2ZSBzcGFjZSBmb3IgfElQX1BBQ0tFVF9TSVpFfCBieXRlcy4g
fHBhY2tldHwgbXVzdAorLy8gYmUgYXQgbW9zdCB8SVBfUEFDS0VUX1NJWkV8IGJ5dGVzIGxvbmcu
CitzaXplX3QgUmVtb3ZlTm9uV2hpdGVsaXN0ZWRSdGNwQmxvY2tzKGNvbnN0IHJ0Yzo6QnVmZmVy
JiBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qq
IGJ1ZmZlcikgeworICBSVENfRENIRUNLKHBhY2tldC5zaXplKCkgPD0gSVBfUEFDS0VUX1NJWkUp
OworICBSVENfRENIRUNLKGJ1ZmZlciAhPSBudWxscHRyKTsKKyAgcnRjcDo6Q29tbW9uSGVhZGVy
IGhlYWRlcjsKKyAgY29uc3QgdWludDhfdCogYmxvY2tfYmVnaW4gPSBwYWNrZXQuZGF0YSgpOwor
ICBjb25zdCB1aW50OF90KiBwYWNrZXRfZW5kID0gcGFja2V0LmRhdGEoKSArIHBhY2tldC5zaXpl
KCk7CisgIHNpemVfdCBidWZmZXJfbGVuZ3RoID0gMDsKKyAgd2hpbGUgKGJsb2NrX2JlZ2luIDwg
cGFja2V0X2VuZCkgeworICAgIGlmICghaGVhZGVyLlBhcnNlKGJsb2NrX2JlZ2luLCBwYWNrZXRf
ZW5kIC0gYmxvY2tfYmVnaW4pKSB7CisgICAgICBicmVhazsgIC8vIEluY29ycmVjdCBtZXNzYWdl
IGhlYWRlci4KKyAgICB9CisgICAgY29uc3QgdWludDhfdCogbmV4dF9ibG9jayA9IGhlYWRlci5O
ZXh0UGFja2V0KCk7CisgICAgUlRDX0RDSEVDS19HVChuZXh0X2Jsb2NrLCBibG9ja19iZWdpbik7
CisgICAgUlRDX0RDSEVDS19MRShuZXh0X2Jsb2NrLCBwYWNrZXRfZW5kKTsKKyAgICBzaXplX3Qg
YmxvY2tfc2l6ZSA9IG5leHRfYmxvY2sgLSBibG9ja19iZWdpbjsKKyAgICBzd2l0Y2ggKGhlYWRl
ci50eXBlKCkpIHsKKyAgICAgIGNhc2UgcnRjcDo6QnllOjprUGFja2V0VHlwZToKKyAgICAgIGNh
c2UgcnRjcDo6RXh0ZW5kZWRKaXR0ZXJSZXBvcnQ6OmtQYWNrZXRUeXBlOgorICAgICAgY2FzZSBy
dGNwOjpFeHRlbmRlZFJlcG9ydHM6OmtQYWNrZXRUeXBlOgorICAgICAgY2FzZSBydGNwOjpQc2Zi
OjprUGFja2V0VHlwZToKKyAgICAgIGNhc2UgcnRjcDo6UmVjZWl2ZXJSZXBvcnQ6OmtQYWNrZXRU
eXBlOgorICAgICAgY2FzZSBydGNwOjpSdHBmYjo6a1BhY2tldFR5cGU6CisgICAgICBjYXNlIHJ0
Y3A6OlNlbmRlclJlcG9ydDo6a1BhY2tldFR5cGU6CisgICAgICAgIC8vIFdlIGxvZyBzZW5kZXIg
cmVwb3J0cywgcmVjZWl2ZXIgcmVwb3J0cywgYnllIG1lc3NhZ2VzCisgICAgICAgIC8vIGludGVy
LWFycml2YWwgaml0dGVyLCB0aGlyZC1wYXJ0eSBsb3NzIHJlcG9ydHMsIHBheWxvYWQtc3BlY2lm
aWMKKyAgICAgICAgLy8gZmVlZGJhY2sgYW5kIGV4dGVuZGVkIHJlcG9ydHMuCisgICAgICAgIC8v
IFRPRE8odGVyZWxpdXMpOiBBcyBhbiBvcHRpbWl6YXRpb24sIGRvbid0IGNvcHkgYW55dGhpbmcg
aWYgYWxsIGJsb2NrcworICAgICAgICAvLyBpbiB0aGUgcGFja2V0IGFyZSB3aGl0ZWxpc3RlZCB0
eXBlcy4KKyAgICAgICAgbWVtY3B5KGJ1ZmZlciArIGJ1ZmZlcl9sZW5ndGgsIGJsb2NrX2JlZ2lu
LCBibG9ja19zaXplKTsKKyAgICAgICAgYnVmZmVyX2xlbmd0aCArPSBibG9ja19zaXplOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgcnRjcDo6QXBwOjprUGFja2V0VHlwZToKKyAgICAgIGNh
c2UgcnRjcDo6U2Rlczo6a1BhY2tldFR5cGU6CisgICAgICBkZWZhdWx0OgorICAgICAgICAvLyBX
ZSBkb24ndCBsb2cgc2VuZGVyIGRlc2NyaXB0aW9ucywgYXBwbGljYXRpb24gZGVmaW5lZCBtZXNz
YWdlcworICAgICAgICAvLyBvciBtZXNzYWdlIGJsb2NrcyBvZiB1bmtub3duIHR5cGUuCisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGJsb2NrX2JlZ2luICs9IGJsb2NrX3NpemU7CisgIH0K
KyAgcmV0dXJuIGJ1ZmZlcl9sZW5ndGg7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFdmVudFR5
cGUsIHR5cGVuYW1lIFByb3RvVHlwZT4KK3ZvaWQgRW5jb2RlUnRjcFBhY2tldChydGM6OkFycmF5
Vmlldzxjb25zdCBFdmVudFR5cGUqPiBiYXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBQcm90
b1R5cGUqIHByb3RvX2JhdGNoKSB7CisgIGlmIChiYXRjaC5zaXplKCkgPT0gMCkgeworICAgIHJl
dHVybjsKKyAgfQorCisgIC8vIEJhc2UgZXZlbnQKKyAgY29uc3QgRXZlbnRUeXBlKiBjb25zdCBi
YXNlX2V2ZW50ID0gYmF0Y2hbMF07CisgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJh
c2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgeworICAgIHVpbnQ4X3QgYnVmZmVyW0lQX1BB
Q0tFVF9TSVpFXTsKKyAgICBzaXplX3QgYnVmZmVyX2xlbmd0aCA9CisgICAgICAgIFJlbW92ZU5v
bldoaXRlbGlzdGVkUnRjcEJsb2NrcyhiYXNlX2V2ZW50LT5wYWNrZXQoKSwgYnVmZmVyKTsKKyAg
ICBwcm90b19iYXRjaC0+c2V0X3Jhd19wYWNrZXQoYnVmZmVyLCBidWZmZXJfbGVuZ3RoKTsKKyAg
fQorCisgIGlmIChiYXRjaC5zaXplKCkgPT0gMSkgeworICAgIHJldHVybjsKKyAgfQorCisgIC8v
IERlbHRhIGVuY29kaW5nCisgIHByb3RvX2JhdGNoLT5zZXRfbnVtYmVyX29mX2RlbHRhcyhiYXRj
aC5zaXplKCkgLSAxKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2
YWx1ZXMoYmF0Y2guc2l6ZSgpIC0gMSk7CisgIHN0ZDo6c3RyaW5nIGVuY29kZWRfZGVsdGFzOwor
CisgIC8vIHRpbWVzdGFtcF9tcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXpl
KCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07Cisg
ICAgdmFsdWVzW2ldID0gVG9VbnNpZ25lZChldmVudC0+dGltZXN0YW1wX21zKCkpOworICB9Cisg
IGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKFRvVW5zaWduZWQoYmFzZV9ldmVudC0+dGlt
ZXN0YW1wX21zKCkpLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsK
KyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tc19kZWx0YXMoZW5jb2RlZF9kZWx0YXMp
OworICB9CisKKyAgLy8gcmF3X3BhY2tldAorICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gc2Ny
dWJlZF9wYWNrZXRzKGJhdGNoLnNpemUoKSAtIDEpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNjcnViZWRfcGFja2V0cy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50VHlwZSogZXZl
bnQgPSBiYXRjaFtpICsgMV07CisgICAgc2NydWJlZF9wYWNrZXRzW2ldLnJlc2l6ZShldmVudC0+
cGFja2V0KCkuc2l6ZSgpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihzdGQ6OnN0cmluZzo6
dmFsdWVfdHlwZSkgPT0gc2l6ZW9mKHVpbnQ4X3QpLCAiIik7CisgICAgY29uc3Qgc2l6ZV90IGJ1
ZmZlcl9sZW5ndGggPSBSZW1vdmVOb25XaGl0ZWxpc3RlZFJ0Y3BCbG9ja3MoCisgICAgICAgIGV2
ZW50LT5wYWNrZXQoKSwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnNjcnViZWRfcGFja2V0
c1tpXVswXSkpOworICAgIGlmIChidWZmZXJfbGVuZ3RoIDwgZXZlbnQtPnBhY2tldCgpLnNpemUo
KSkgeworICAgICAgc2NydWJlZF9wYWNrZXRzW2ldLnJlc2l6ZShidWZmZXJfbGVuZ3RoKTsKKyAg
ICB9CisgIH0KKyAgcHJvdG9fYmF0Y2gtPnNldF9yYXdfcGFja2V0X2Jsb2JzKEVuY29kZUJsb2Jz
KHNjcnViZWRfcGFja2V0cykpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXZlbnRUeXBlLCB0
eXBlbmFtZSBQcm90b1R5cGU+Cit2b2lkIEVuY29kZVJ0cFBhY2tldChjb25zdCBzdGQ6OnZlY3Rv
cjxjb25zdCBFdmVudFR5cGUqPiYgYmF0Y2gsCisgICAgICAgICAgICAgICAgICAgICBQcm90b1R5
cGUqIHByb3RvX2JhdGNoKSB7CisgIGlmIChiYXRjaC5zaXplKCkgPT0gMCkgeworICAgIHJldHVy
bjsKKyAgfQorCisgIC8vIEJhc2UgZXZlbnQKKyAgY29uc3QgRXZlbnRUeXBlKiBjb25zdCBiYXNl
X2V2ZW50ID0gYmF0Y2hbMF07CisgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2Vf
ZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF9tYXJrZXIoYmFzZV9l
dmVudC0+aGVhZGVyKCkuTWFya2VyKCkpOworICAvLyBUT0RPKHRlcmVsaXVzKTogSXMgcGF5bG9h
ZCB0eXBlIG5lZWRlZD8KKyAgcHJvdG9fYmF0Y2gtPnNldF9wYXlsb2FkX3R5cGUoYmFzZV9ldmVu
dC0+aGVhZGVyKCkuUGF5bG9hZFR5cGUoKSk7CisgIHByb3RvX2JhdGNoLT5zZXRfc2VxdWVuY2Vf
bnVtYmVyKGJhc2VfZXZlbnQtPmhlYWRlcigpLlNlcXVlbmNlTnVtYmVyKCkpOworICBwcm90b19i
YXRjaC0+c2V0X3J0cF90aW1lc3RhbXAoYmFzZV9ldmVudC0+aGVhZGVyKCkuVGltZXN0YW1wKCkp
OworICBwcm90b19iYXRjaC0+c2V0X3NzcmMoYmFzZV9ldmVudC0+aGVhZGVyKCkuU3NyYygpKTsK
KyAgcHJvdG9fYmF0Y2gtPnNldF9wYXlsb2FkX3NpemUoYmFzZV9ldmVudC0+cGF5bG9hZF9sZW5n
dGgoKSk7CisgIHByb3RvX2JhdGNoLT5zZXRfaGVhZGVyX3NpemUoYmFzZV9ldmVudC0+aGVhZGVy
X2xlbmd0aCgpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF9wYWRkaW5nX3NpemUoYmFzZV9ldmVudC0+
cGFkZGluZ19sZW5ndGgoKSk7CisKKyAgLy8gQWRkIGhlYWRlciBleHRlbnNpb25zIChiYXNlIGV2
ZW50KS4KKyAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2VfdHJhbnNwb3J0X3NlcXVlbmNl
X251bWJlcjsKKyAgeworICAgIHVpbnQxNl90IHNlcW51bTsKKyAgICBpZiAoYmFzZV9ldmVudC0+
aGVhZGVyKCkudGVtcGxhdGUgR2V0RXh0ZW5zaW9uPFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyPigK
KyAgICAgICAgICAgICZzZXFudW0pKSB7CisgICAgICBwcm90b19iYXRjaC0+c2V0X3RyYW5zcG9y
dF9zZXF1ZW5jZV9udW1iZXIoc2VxbnVtKTsKKyAgICAgIGJhc2VfdHJhbnNwb3J0X3NlcXVlbmNl
X251bWJlciA9IHNlcW51bTsKKyAgICB9CisgIH0KKworICBhYnNsOjpvcHRpb25hbDx1aW50NjRf
dD4gdW5zaWduZWRfYmFzZV90cmFuc21pc3Npb25fdGltZV9vZmZzZXQ7CisgIHsKKyAgICBpbnQz
Ml90IG9mZnNldDsKKyAgICBpZiAoYmFzZV9ldmVudC0+aGVhZGVyKCkudGVtcGxhdGUgR2V0RXh0
ZW5zaW9uPFRyYW5zbWlzc2lvbk9mZnNldD4oCisgICAgICAgICAgICAmb2Zmc2V0KSkgeworICAg
ICAgcHJvdG9fYmF0Y2gtPnNldF90cmFuc21pc3Npb25fdGltZV9vZmZzZXQob2Zmc2V0KTsKKyAg
ICAgIHVuc2lnbmVkX2Jhc2VfdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0ID0gVG9VbnNpZ25lZChv
ZmZzZXQpOworICAgIH0KKyAgfQorCisgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlX2Fi
c29sdXRlX3NlbmRfdGltZTsKKyAgeworICAgIHVpbnQzMl90IHNlbmR0aW1lOworICAgIGlmIChi
YXNlX2V2ZW50LT5oZWFkZXIoKS50ZW1wbGF0ZSBHZXRFeHRlbnNpb248QWJzb2x1dGVTZW5kVGlt
ZT4oCisgICAgICAgICAgICAmc2VuZHRpbWUpKSB7CisgICAgICBwcm90b19iYXRjaC0+c2V0X2Fi
c29sdXRlX3NlbmRfdGltZShzZW5kdGltZSk7CisgICAgICBiYXNlX2Fic29sdXRlX3NlbmRfdGlt
ZSA9IHNlbmR0aW1lOworICAgIH0KKyAgfQorCisgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBi
YXNlX3ZpZGVvX3JvdGF0aW9uOworICB7CisgICAgVmlkZW9Sb3RhdGlvbiB2aWRlb19yb3RhdGlv
bjsKKyAgICBpZiAoYmFzZV9ldmVudC0+aGVhZGVyKCkudGVtcGxhdGUgR2V0RXh0ZW5zaW9uPFZp
ZGVvT3JpZW50YXRpb24+KAorICAgICAgICAgICAgJnZpZGVvX3JvdGF0aW9uKSkgeworICAgICAg
cHJvdG9fYmF0Y2gtPnNldF92aWRlb19yb3RhdGlvbigKKyAgICAgICAgICBDb252ZXJ0VmlkZW9S
b3RhdGlvblRvQ1ZPQnl0ZSh2aWRlb19yb3RhdGlvbikpOworICAgICAgYmFzZV92aWRlb19yb3Rh
dGlvbiA9IENvbnZlcnRWaWRlb1JvdGF0aW9uVG9DVk9CeXRlKHZpZGVvX3JvdGF0aW9uKTsKKyAg
ICB9CisgIH0KKworICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZV9hdWRpb19sZXZlbDsK
KyAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2Vfdm9pY2VfYWN0aXZpdHk7CisgIHsKKyAg
ICBib29sIHZvaWNlX2FjdGl2aXR5OworICAgIHVpbnQ4X3QgYXVkaW9fbGV2ZWw7CisgICAgaWYg
KGJhc2VfZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRlIEdldEV4dGVuc2lvbjxBdWRpb0xldmVsPigm
dm9pY2VfYWN0aXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmYXVkaW9fbGV2ZWwpKSB7CisgICAgICBSVENfRENIRUNL
X0xFKGF1ZGlvX2xldmVsLCAweDdGdSk7CisgICAgICBiYXNlX2F1ZGlvX2xldmVsID0gYXVkaW9f
bGV2ZWw7CisgICAgICBwcm90b19iYXRjaC0+c2V0X2F1ZGlvX2xldmVsKGF1ZGlvX2xldmVsKTsK
KworICAgICAgYmFzZV92b2ljZV9hY3Rpdml0eSA9IHZvaWNlX2FjdGl2aXR5OworICAgICAgcHJv
dG9fYmF0Y2gtPnNldF92b2ljZV9hY3Rpdml0eSh2b2ljZV9hY3Rpdml0eSk7CisgICAgfQorICB9
CisKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAxKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgLy8g
RGVsdGEgZW5jb2RpbmcKKyAgcHJvdG9fYmF0Y2gtPnNldF9udW1iZXJfb2ZfZGVsdGFzKGJhdGNo
LnNpemUoKSAtIDEpOworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHZh
bHVlcyhiYXRjaC5zaXplKCkgLSAxKTsKKyAgc3RkOjpzdHJpbmcgZW5jb2RlZF9kZWx0YXM7CisK
KyAgLy8gdGltZXN0YW1wX21zIChldmVudCkKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSAr
IDFdOworICAgIHZhbHVlc1tpXSA9IFRvVW5zaWduZWQoZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsK
KyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhUb1Vuc2lnbmVkKGJhc2VfZXZl
bnQtPnRpbWVzdGFtcF9tcygpKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0
eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXNfZGVsdGFzKGVuY29kZWRf
ZGVsdGFzKTsKKyAgfQorCisgIC8vIG1hcmtlciAoUlRQIGJhc2UpCisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVu
dCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBldmVudC0+aGVhZGVyKCkuTWFya2Vy
KCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+aGVh
ZGVyKCkuTWFya2VyKCksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkg
eworICAgIHByb3RvX2JhdGNoLT5zZXRfbWFya2VyX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7Cisg
IH0KKworICAvLyBwYXlsb2FkX3R5cGUgKFJUUCBiYXNlKQorICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBi
YXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmhlYWRlcigpLlBheWxvYWRUeXBl
KCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+aGVh
ZGVyKCkuUGF5bG9hZFR5cGUoKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0
eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9wYXlsb2FkX3R5cGVfZGVsdGFzKGVuY29kZWRf
ZGVsdGFzKTsKKyAgfQorCisgIC8vIHNlcXVlbmNlX251bWJlciAoUlRQIGJhc2UpCisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRU
eXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBldmVudC0+aGVhZGVy
KCkuU2VxdWVuY2VOdW1iZXIoKTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRh
cyhiYXNlX2V2ZW50LT5oZWFkZXIoKS5TZXF1ZW5jZU51bWJlcigpLCB2YWx1ZXMpOworICBpZiAo
IWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X3NlcXVlbmNl
X251bWJlcl9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gcnRwX3RpbWVzdGFt
cCAoUlRQIGJhc2UpCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytp
KSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1
ZXNbaV0gPSBldmVudC0+aGVhZGVyKCkuVGltZXN0YW1wKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0
YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+aGVhZGVyKCkuVGltZXN0YW1wKCksIHZhbHVl
cyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5z
ZXRfcnRwX3RpbWVzdGFtcF9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gc3Ny
YyAoUlRQIGJhc2UpCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytp
KSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1
ZXNbaV0gPSBldmVudC0+aGVhZGVyKCkuU3NyYygpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0g
RW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPmhlYWRlcigpLlNzcmMoKSwgdmFsdWVzKTsKKyAgaWYg
KCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9zc3JjX2Rl
bHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBwYXlsb2FkX3NpemUgKFJUUCBiYXNl
KQorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNv
bnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZl
bnQtPnBheWxvYWRfbGVuZ3RoKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0
YXMoYmFzZV9ldmVudC0+cGF5bG9hZF9sZW5ndGgoKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVk
X2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9wYXlsb2FkX3NpemVfZGVs
dGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIGhlYWRlcl9zaXplIChSVFAgYmFzZSkK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25z
dCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IGV2ZW50
LT5oZWFkZXJfbGVuZ3RoKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMo
YmFzZV9ldmVudC0+aGVhZGVyX2xlbmd0aCgpLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVs
dGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X2hlYWRlcl9zaXplX2RlbHRhcyhl
bmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBwYWRkaW5nX3NpemUgKFJUUCBiYXNlKQorICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2
ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPnBh
ZGRpbmdfbGVuZ3RoKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFz
ZV9ldmVudC0+cGFkZGluZ19sZW5ndGgoKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRh
cy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9wYWRkaW5nX3NpemVfZGVsdGFzKGVu
Y29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgKFJU
UCBleHRlbnNpb24pCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytp
KSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB1aW50
MTZfdCBzZXFudW07CisgICAgaWYgKGV2ZW50LT5oZWFkZXIoKS50ZW1wbGF0ZSBHZXRFeHRlbnNp
b248VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI+KAorICAgICAgICAgICAgJnNlcW51bSkpIHsKKyAg
ICAgIHZhbHVlc1tpXSA9IHNlcW51bTsKKyAgICB9IGVsc2UgeworICAgICAgdmFsdWVzW2ldLnJl
c2V0KCk7CisgICAgfQorICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2Vf
dHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRh
cy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90cmFuc3BvcnRfc2VxdWVuY2VfbnVt
YmVyX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyB0cmFuc21pc3Npb25fdGlt
ZV9vZmZzZXQgKFJUUCBleHRlbnNpb24pCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVz
LnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAx
XTsKKyAgICBpbnQzMl90IG9mZnNldDsKKyAgICBpZiAoZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRl
IEdldEV4dGVuc2lvbjxUcmFuc21pc3Npb25PZmZzZXQ+KCZvZmZzZXQpKSB7CisgICAgICB2YWx1
ZXNbaV0gPSBUb1Vuc2lnbmVkKG9mZnNldCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tp
XS5yZXNldCgpOworICAgIH0KKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyh1
bnNpZ25lZF9iYXNlX3RyYW5zbWlzc2lvbl90aW1lX29mZnNldCwgdmFsdWVzKTsKKyAgaWYgKCFl
bmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90cmFuc21pc3Np
b25fdGltZV9vZmZzZXRfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIGFic29s
dXRlX3NlbmRfdGltZSAoUlRQIGV4dGVuc2lvbikKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2
YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hb
aSArIDFdOworICAgIHVpbnQzMl90IHNlbmR0aW1lOworICAgIGlmIChldmVudC0+aGVhZGVyKCku
dGVtcGxhdGUgR2V0RXh0ZW5zaW9uPEFic29sdXRlU2VuZFRpbWU+KCZzZW5kdGltZSkpIHsKKyAg
ICAgIHZhbHVlc1tpXSA9IHNlbmR0aW1lOworICAgIH0gZWxzZSB7CisgICAgICB2YWx1ZXNbaV0u
cmVzZXQoKTsKKyAgICB9CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFz
ZV9hYnNvbHV0ZV9zZW5kX3RpbWUsIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1w
dHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfYWJzb2x1dGVfc2VuZF90aW1lX2RlbHRhcyhl
bmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyB2aWRlb19yb3RhdGlvbiAoUlRQIGV4dGVuc2lv
bikKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBj
b25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIFZpZGVvUm90YXRpb24g
dmlkZW9fcm90YXRpb247CisgICAgaWYgKGV2ZW50LT5oZWFkZXIoKS50ZW1wbGF0ZSBHZXRFeHRl
bnNpb248VmlkZW9PcmllbnRhdGlvbj4oCisgICAgICAgICAgICAmdmlkZW9fcm90YXRpb24pKSB7
CisgICAgICB2YWx1ZXNbaV0gPSBDb252ZXJ0VmlkZW9Sb3RhdGlvblRvQ1ZPQnl0ZSh2aWRlb19y
b3RhdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tpXS5yZXNldCgpOworICAgIH0K
KyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX3ZpZGVvX3JvdGF0aW9u
LCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19i
YXRjaC0+c2V0X3ZpZGVvX3JvdGF0aW9uX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKwor
ICAvLyBhdWRpb19sZXZlbCAoUlRQIGV4dGVuc2lvbikKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0
Y2hbaSArIDFdOworICAgIGJvb2wgdm9pY2VfYWN0aXZpdHk7CisgICAgdWludDhfdCBhdWRpb19s
ZXZlbDsKKyAgICBpZiAoZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRlIEdldEV4dGVuc2lvbjxBdWRp
b0xldmVsPigmdm9pY2VfYWN0aXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmF1ZGlvX2xldmVsKSkgeworICAgICAgUlRDX0RD
SEVDS19MRShhdWRpb19sZXZlbCwgMHg3RnUpOworICAgICAgdmFsdWVzW2ldID0gYXVkaW9fbGV2
ZWw7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tpXS5yZXNldCgpOworICAgIH0KKyAgfQor
ICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX2F1ZGlvX2xldmVsLCB2YWx1ZXMp
OworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0
X2F1ZGlvX2xldmVsX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyB2b2ljZV9h
Y3Rpdml0eSAoUlRQIGV4dGVuc2lvbikKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMu
c2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSArIDFd
OworICAgIGJvb2wgdm9pY2VfYWN0aXZpdHk7CisgICAgdWludDhfdCBhdWRpb19sZXZlbDsKKyAg
ICBpZiAoZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRlIEdldEV4dGVuc2lvbjxBdWRpb0xldmVsPigm
dm9pY2VfYWN0aXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmF1ZGlvX2xldmVsKSkgeworICAgICAgUlRDX0RDSEVDS19MRShh
dWRpb19sZXZlbCwgMHg3RnUpOworICAgICAgdmFsdWVzW2ldID0gdm9pY2VfYWN0aXZpdHk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tpXS5yZXNldCgpOworICAgIH0KKyAgfQorICBlbmNv
ZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX3ZvaWNlX2FjdGl2aXR5LCB2YWx1ZXMpOwor
ICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X3Zv
aWNlX2FjdGl2aXR5X2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KK30KK30gIC8vIG5hbWVz
cGFjZQorCitzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZUxv
Z1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHV0Y190aW1lX3VzKSB7CisgIHJ0
Y2xvZzI6OkV2ZW50U3RyZWFtIGV2ZW50X3N0cmVhbTsKKyAgcnRjbG9nMjo6QmVnaW5Mb2dFdmVu
dCogcHJvdG9fYmF0Y2ggPSBldmVudF9zdHJlYW0uYWRkX2JlZ2luX2xvZ19ldmVudHMoKTsKKyAg
cHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXModGltZXN0YW1wX3VzIC8gMTAwMCk7CisgIHBy
b3RvX2JhdGNoLT5zZXRfdmVyc2lvbigyKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF91dGNfdGltZV9t
cyh1dGNfdGltZV91cyAvIDEwMDApOworICByZXR1cm4gZXZlbnRfc3RyZWFtLlNlcmlhbGl6ZUFz
U3RyaW5nKCk7Cit9CisKK3N0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6
RW5jb2RlTG9nRW5kKGludDY0X3QgdGltZXN0YW1wX3VzKSB7CisgIHJ0Y2xvZzI6OkV2ZW50U3Ry
ZWFtIGV2ZW50X3N0cmVhbTsKKyAgcnRjbG9nMjo6RW5kTG9nRXZlbnQqIHByb3RvX2JhdGNoID0g
ZXZlbnRfc3RyZWFtLmFkZF9lbmRfbG9nX2V2ZW50cygpOworICBwcm90b19iYXRjaC0+c2V0X3Rp
bWVzdGFtcF9tcyh0aW1lc3RhbXBfdXMgLyAxMDAwKTsKKyAgcmV0dXJuIGV2ZW50X3N0cmVhbS5T
ZXJpYWxpemVBc1N0cmluZygpOworfQorCitzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJO
ZXdGb3JtYXQ6OkVuY29kZUJhdGNoKAorICAgIHN0ZDo6ZGVxdWU8c3RkOjp1bmlxdWVfcHRyPFJ0
Y0V2ZW50Pj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luLAorICAgIHN0ZDo6ZGVxdWU8c3RkOjp1bmlx
dWVfcHRyPFJ0Y0V2ZW50Pj46OmNvbnN0X2l0ZXJhdG9yIGVuZCkgeworICBydGNsb2cyOjpFdmVu
dFN0cmVhbSBldmVudF9zdHJlYW07CisgIHN0ZDo6c3RyaW5nIGVuY29kZWRfb3V0cHV0OworCisg
IHsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudEFsclN0YXRlKj4gYWxyX3N0YXRlX2V2
ZW50czsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRp
b24qPgorICAgICAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb25fZXZlbnRzOworICAgIHN0ZDo6
dmVjdG9yPGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0Kj4gYXVkaW9fcGxheW91dF9ldmVudHM7
CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWcq
PgorICAgICAgICBhdWRpb19yZWN2X3N0cmVhbV9jb25maWdzOworICAgIHN0ZDo6dmVjdG9yPGNv
bnN0IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKj4gYXVkaW9fc2VuZF9zdHJlYW1fY29u
ZmlnczsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQq
PiBid2VfZGVsYXlfYmFzZWRfdXBkYXRlczsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVu
dEJ3ZVVwZGF0ZUxvc3NCYXNlZCo+IGJ3ZV9sb3NzX2Jhc2VkX3VwZGF0ZXM7CisgICAgc3RkOjp2
ZWN0b3I8Y29uc3QgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkKj4KKyAgICAgICAgcHJvYmVf
Y2x1c3Rlcl9jcmVhdGVkX2V2ZW50czsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudFBy
b2JlUmVzdWx0RmFpbHVyZSo+IHByb2JlX3Jlc3VsdF9mYWlsdXJlX2V2ZW50czsKKyAgICBzdGQ6
OnZlY3Rvcjxjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2Vzcyo+IHByb2JlX3Jlc3VsdF9z
dWNjZXNzX2V2ZW50czsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRJ
bmNvbWluZyo+IGluY29taW5nX3J0Y3BfcGFja2V0czsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBS
dGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZyo+IG91dGdvaW5nX3J0Y3BfcGFja2V0czsKKyAgICBz
dGQ6Om1hcDx1aW50MzJfdCAvKiBTU1JDICovLCBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudFJ0
cFBhY2tldEluY29taW5nKj4+CisgICAgICAgIGluY29taW5nX3J0cF9wYWNrZXRzOworICAgIHN0
ZDo6bWFwPHVpbnQzMl90IC8qIFNTUkMgKi8sIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2ZW50UnRw
UGFja2V0T3V0Z29pbmcqPj4KKyAgICAgICAgb3V0Z29pbmdfcnRwX3BhY2tldHM7CisgICAgc3Rk
Ojp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcqPgorICAgICAg
ICB2aWRlb19yZWN2X3N0cmVhbV9jb25maWdzOworICAgIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2
ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKj4gdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlnczsKKyAg
ICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWcqPiBpY2Vf
Y2FuZGlkYXRlX2NvbmZpZ3M7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRJY2VDYW5k
aWRhdGVQYWlyKj4gaWNlX2NhbmRpZGF0ZV9ldmVudHM7CisKKyAgICBmb3IgKGF1dG8gaXQgPSBi
ZWdpbjsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICBzd2l0Y2ggKCgqaXQpLT5HZXRUeXBlKCkp
IHsKKyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6QWxyU3RhdGVFdmVudDogeworICAgICAg
ICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0
Y0V2ZW50QWxyU3RhdGUqIGNvbnN0PihpdC0+Z2V0KCkpOworICAgICAgICAgIGFscl9zdGF0ZV9l
dmVudHMucHVzaF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6QXVkaW9OZXR3b3JrQWRhcHRhdGlvbjogewor
ICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNv
bnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiogY29uc3Q+KAorICAgICAgICAgICAg
ICAgICAgaXQtPmdldCgpKTsKKyAgICAgICAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb25fZXZl
bnRzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OkF1ZGlvUGxheW91dDogeworICAgICAgICAgIGF1
dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50
QXVkaW9QbGF5b3V0KiBjb25zdD4oaXQtPmdldCgpKTsKKyAgICAgICAgICBhdWRpb19wbGF5b3V0
X2V2ZW50cy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc6
IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxjb25zdCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyogY29uc3Q+KAorICAgICAg
ICAgICAgICAgICAgaXQtPmdldCgpKTsKKyAgICAgICAgICBhdWRpb19yZWN2X3N0cmVhbV9jb25m
aWdzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OkF1ZGlvU2VuZFN0cmVhbUNvbmZpZzogeworICAg
ICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0
IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKiBjb25zdD4oCisgICAgICAgICAgICAgICAg
ICBpdC0+Z2V0KCkpOworICAgICAgICAgIGF1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZ3MucHVzaF9i
YWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBSdGNFdmVudDo6VHlwZTo6QndlVXBkYXRlRGVsYXlCYXNlZDogeworICAgICAgICAgIGF1dG8q
IHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50Qndl
VXBkYXRlRGVsYXlCYXNlZCogY29uc3Q+KGl0LT5nZXQoKSk7CisgICAgICAgICAgYndlX2RlbGF5
X2Jhc2VkX3VwZGF0ZXMucHVzaF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6QndlVXBkYXRlTG9zc0Jhc2Vk
OiB7CisgICAgICAgICAgYXV0byogcnRjX2V2ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8Y29uc3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQqIGNvbnN0PihpdC0+Z2V0KCkpOwor
ICAgICAgICAgIGJ3ZV9sb3NzX2Jhc2VkX3VwZGF0ZXMucHVzaF9iYWNrKHJ0Y19ldmVudCk7Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6
UHJvYmVDbHVzdGVyQ3JlYXRlZDogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCog
Y29uc3Q+KGl0LT5nZXQoKSk7CisgICAgICAgICAgcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50
cy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpQcm9iZVJlc3VsdEZhaWx1cmU6IHsKKyAgICAgICAg
ICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBSdGNF
dmVudFByb2JlUmVzdWx0RmFpbHVyZSogY29uc3Q+KGl0LT5nZXQoKSk7CisgICAgICAgICAgcHJv
YmVfcmVzdWx0X2ZhaWx1cmVfZXZlbnRzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OlByb2JlUmVz
dWx0U3VjY2VzczogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzKiBjb25zdD4oaXQt
PmdldCgpKTsKKyAgICAgICAgICBwcm9iZV9yZXN1bHRfc3VjY2Vzc19ldmVudHMucHVzaF9iYWNr
KHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBS
dGNFdmVudDo6VHlwZTo6UnRjcFBhY2tldEluY29taW5nOiB7CisgICAgICAgICAgYXV0byogcnRj
X2V2ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRSdGNwUGFj
a2V0SW5jb21pbmcqIGNvbnN0PihpdC0+Z2V0KCkpOworICAgICAgICAgIGluY29taW5nX3J0Y3Bf
cGFja2V0cy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpSdGNwUGFja2V0T3V0Z29pbmc6IHsKKyAg
ICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZyogY29uc3Q+KGl0LT5nZXQoKSk7CisgICAgICAg
ICAgb3V0Z29pbmdfcnRjcF9wYWNrZXRzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OlJ0cFBhY2tl
dEluY29taW5nOiB7CisgICAgICAgICAgYXV0byogcnRjX2V2ZW50ID0KKyAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyogY29uc3Q+KGl0LT5n
ZXQoKSk7CisgICAgICAgICAgYXV0byYgdiA9IGluY29taW5nX3J0cF9wYWNrZXRzW3J0Y19ldmVu
dC0+aGVhZGVyKCkuU3NyYygpXTsKKyAgICAgICAgICB2LmVtcGxhY2VfYmFjayhydGNfZXZlbnQp
OworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5
cGU6OlJ0cFBhY2tldE91dGdvaW5nOiB7CisgICAgICAgICAgYXV0byogcnRjX2V2ZW50ID0KKyAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZyog
Y29uc3Q+KGl0LT5nZXQoKSk7CisgICAgICAgICAgYXV0byYgdiA9IG91dGdvaW5nX3J0cF9wYWNr
ZXRzW3J0Y19ldmVudC0+aGVhZGVyKCkuU3NyYygpXTsKKyAgICAgICAgICB2LmVtcGxhY2VfYmFj
ayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
UnRjRXZlbnQ6OlR5cGU6OlZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZzogeworICAgICAgICAgIGF1
dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50
VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnKiBjb25zdD4oCisgICAgICAgICAgICAgICAgICBpdC0+
Z2V0KCkpOworICAgICAgICAgIHZpZGVvX3JlY3Zfc3RyZWFtX2NvbmZpZ3MucHVzaF9iYWNrKHJ0
Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNF
dmVudDo6VHlwZTo6VmlkZW9TZW5kU3RyZWFtQ29uZmlnOiB7CisgICAgICAgICAgYXV0byogcnRj
X2V2ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRWaWRlb1Nl
bmRTdHJlYW1Db25maWcqIGNvbnN0PigKKyAgICAgICAgICAgICAgICAgIGl0LT5nZXQoKSk7Cisg
ICAgICAgICAgdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlncy5wdXNoX2JhY2socnRjX2V2ZW50KTsK
KyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBl
OjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOiB7CisgICAgICAgICAgYXV0byogcnRjX2V2ZW50ID0K
KyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWly
Q29uZmlnKiBjb25zdD4oCisgICAgICAgICAgICAgICAgICBpdC0+Z2V0KCkpOworICAgICAgICAg
IGljZV9jYW5kaWRhdGVfY29uZmlncy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpJY2VDYW5kaWRh
dGVQYWlyRXZlbnQ6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXIqIGNvbnN0PihpdC0+
Z2V0KCkpOworICAgICAgICAgIGljZV9jYW5kaWRhdGVfZXZlbnRzLnB1c2hfYmFjayhydGNfZXZl
bnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAg
RW5jb2RlQWxyU3RhdGUoYWxyX3N0YXRlX2V2ZW50cywgJmV2ZW50X3N0cmVhbSk7CisgICAgRW5j
b2RlQXVkaW9OZXR3b3JrQWRhcHRhdGlvbihhdWRpb19uZXR3b3JrX2FkYXB0YXRpb25fZXZlbnRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV2ZW50X3N0cmVhbSk7CisgICAg
RW5jb2RlQXVkaW9QbGF5b3V0KGF1ZGlvX3BsYXlvdXRfZXZlbnRzLCAmZXZlbnRfc3RyZWFtKTsK
KyAgICBFbmNvZGVBdWRpb1JlY3ZTdHJlYW1Db25maWcoYXVkaW9fcmVjdl9zdHJlYW1fY29uZmln
cywgJmV2ZW50X3N0cmVhbSk7CisgICAgRW5jb2RlQXVkaW9TZW5kU3RyZWFtQ29uZmlnKGF1ZGlv
X3NlbmRfc3RyZWFtX2NvbmZpZ3MsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZUJ3ZVVwZGF0
ZURlbGF5QmFzZWQoYndlX2RlbGF5X2Jhc2VkX3VwZGF0ZXMsICZldmVudF9zdHJlYW0pOworICAg
IEVuY29kZUJ3ZVVwZGF0ZUxvc3NCYXNlZChid2VfbG9zc19iYXNlZF91cGRhdGVzLCAmZXZlbnRf
c3RyZWFtKTsKKyAgICBFbmNvZGVQcm9iZUNsdXN0ZXJDcmVhdGVkKHByb2JlX2NsdXN0ZXJfY3Jl
YXRlZF9ldmVudHMsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZVByb2JlUmVzdWx0RmFpbHVy
ZShwcm9iZV9yZXN1bHRfZmFpbHVyZV9ldmVudHMsICZldmVudF9zdHJlYW0pOworICAgIEVuY29k
ZVByb2JlUmVzdWx0U3VjY2Vzcyhwcm9iZV9yZXN1bHRfc3VjY2Vzc19ldmVudHMsICZldmVudF9z
dHJlYW0pOworICAgIEVuY29kZVJ0Y3BQYWNrZXRJbmNvbWluZyhpbmNvbWluZ19ydGNwX3BhY2tl
dHMsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZVJ0Y3BQYWNrZXRPdXRnb2luZyhvdXRnb2lu
Z19ydGNwX3BhY2tldHMsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZVJ0cFBhY2tldEluY29t
aW5nKGluY29taW5nX3J0cF9wYWNrZXRzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVSdHBQ
YWNrZXRPdXRnb2luZyhvdXRnb2luZ19ydHBfcGFja2V0cywgJmV2ZW50X3N0cmVhbSk7CisgICAg
RW5jb2RlVmlkZW9SZWN2U3RyZWFtQ29uZmlnKHZpZGVvX3JlY3Zfc3RyZWFtX2NvbmZpZ3MsICZl
dmVudF9zdHJlYW0pOworICAgIEVuY29kZVZpZGVvU2VuZFN0cmVhbUNvbmZpZyh2aWRlb19zZW5k
X3N0cmVhbV9jb25maWdzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnKGljZV9jYW5kaWRhdGVfY29uZmlncywgJmV2ZW50X3N0cmVhbSk7CisgICAgRW5j
b2RlSWNlQ2FuZGlkYXRlUGFpckV2ZW50KGljZV9jYW5kaWRhdGVfZXZlbnRzLCAmZXZlbnRfc3Ry
ZWFtKTsKKyAgfSAgLy8gRGVhbGxvY2F0ZSB0aGUgdGVtcG9yYXJ5IHZlY3RvcnMuCisKKyAgcmV0
dXJuIGV2ZW50X3N0cmVhbS5TZXJpYWxpemVBc1N0cmluZygpOworfQorCit2b2lkIFJ0Y0V2ZW50
TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlQWxyU3RhdGUoCisgICAgcnRjOjpBcnJheVZpZXc8
Y29uc3QgUnRjRXZlbnRBbHJTdGF0ZSo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFt
KiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBSdGNFdmVudEFsclN0YXRlKiBiYXNlX2V2
ZW50IDogYmF0Y2gpIHsKKyAgICBydGNsb2cyOjpBbHJTdGF0ZSogcHJvdG9fYmF0Y2ggPSBldmVu
dF9zdHJlYW0tPmFkZF9hbHJfc3RhdGVzKCk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3Rh
bXBfbXMoYmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRf
aW5fYWxyKGJhc2VfZXZlbnQtPmluX2FscigpKTsKKyAgfQorICAvLyBUT0RPKHRlcmVsaXVzKTog
U2hvdWxkIHdlIGRlbHRhLWNvbXByZXNzIHRoaXMgZXZlbnQgdHlwZT8KK30KKwordm9pZCBSdGNF
dmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZUF1ZGlvTmV0d29ya0FkYXB0YXRpb24oCisg
ICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKj4g
YmF0Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBpZiAo
YmF0Y2guc2l6ZSgpID09IDApCisgICAgcmV0dXJuOworCisgIC8vIEJhc2UgZXZlbnQKKyAgY29u
c3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKiBjb25zdCBiYXNlX2V2ZW50ID0gYmF0
Y2hbMF07CisgIHJ0Y2xvZzI6OkF1ZGlvTmV0d29ya0FkYXB0YXRpb25zKiBwcm90b19iYXRjaCA9
CisgICAgICBldmVudF9zdHJlYW0tPmFkZF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb25zKCk7Cisg
IHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygp
KTsKKyAgaWYgKGJhc2VfZXZlbnQtPmNvbmZpZygpLmJpdHJhdGVfYnBzLmhhc192YWx1ZSgpKQor
ICAgIHByb3RvX2JhdGNoLT5zZXRfYml0cmF0ZV9icHMoYmFzZV9ldmVudC0+Y29uZmlnKCkuYml0
cmF0ZV9icHMudmFsdWUoKSk7CisgIGlmIChiYXNlX2V2ZW50LT5jb25maWcoKS5mcmFtZV9sZW5n
dGhfbXMuaGFzX3ZhbHVlKCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X2ZyYW1lX2xlbmd0aF9t
cygKKyAgICAgICAgYmFzZV9ldmVudC0+Y29uZmlnKCkuZnJhbWVfbGVuZ3RoX21zLnZhbHVlKCkp
OworICB9CisgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlX3VwbGlua19wYWNrZXRfbG9z
c19mcmFjdGlvbjsKKyAgaWYgKGJhc2VfZXZlbnQtPmNvbmZpZygpLnVwbGlua19wYWNrZXRfbG9z
c19mcmFjdGlvbi5oYXNfdmFsdWUoKSkgeworICAgIGJhc2VfdXBsaW5rX3BhY2tldF9sb3NzX2Zy
YWN0aW9uID0gQ29udmVydFBhY2tldExvc3NGcmFjdGlvblRvUHJvdG9Gb3JtYXQoCisgICAgICAg
IGJhc2VfZXZlbnQtPmNvbmZpZygpLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbi52YWx1ZSgp
KTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3VwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbigKKyAg
ICAgICAgYmFzZV91cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24udmFsdWUoKSk7CisgIH0KKyAg
aWYgKGJhc2VfZXZlbnQtPmNvbmZpZygpLmVuYWJsZV9mZWMuaGFzX3ZhbHVlKCkpCisgICAgcHJv
dG9fYmF0Y2gtPnNldF9lbmFibGVfZmVjKGJhc2VfZXZlbnQtPmNvbmZpZygpLmVuYWJsZV9mZWMu
dmFsdWUoKSk7CisgIGlmIChiYXNlX2V2ZW50LT5jb25maWcoKS5lbmFibGVfZHR4Lmhhc192YWx1
ZSgpKQorICAgIHByb3RvX2JhdGNoLT5zZXRfZW5hYmxlX2R0eChiYXNlX2V2ZW50LT5jb25maWco
KS5lbmFibGVfZHR4LnZhbHVlKCkpOworICAvLyBOb3RlIHRoYXQgfG51bV9jaGFubmVsc19kZWx0
YXN8IGVuY29kZXMgTiBhcyBOLTEsIHRvIGtlZXAgZGVsdGFzIHNtYWxsZXIsCisgIC8vIGJ1dCB0
aGVyZSdzIG5vIHJlYXNvbiB0byBkbyB0aGUgc2FtZSBmb3IgdGhlIGJhc2UgZXZlbnQncyB2YWx1
ZSwgc2luY2UKKyAgLy8gbm8gYml0cyB3aWxsIGJlIHNwYXJlZC4KKyAgaWYgKGJhc2VfZXZlbnQt
PmNvbmZpZygpLm51bV9jaGFubmVscy5oYXNfdmFsdWUoKSkKKyAgICBwcm90b19iYXRjaC0+c2V0
X251bV9jaGFubmVscyhiYXNlX2V2ZW50LT5jb25maWcoKS5udW1fY2hhbm5lbHMudmFsdWUoKSk7
CisKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAxKQorICAgIHJldHVybjsKKworICAvLyBEZWx0YSBl
bmNvZGluZworICBwcm90b19iYXRjaC0+c2V0X251bWJlcl9vZl9kZWx0YXMoYmF0Y2guc2l6ZSgp
IC0gMSk7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVzKGJh
dGNoLnNpemUoKSAtIDEpOworICBzdGQ6OnN0cmluZyBlbmNvZGVkX2RlbHRhczsKKworICAvLyB0
aW1lc3RhbXBfbXMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICBjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24qIGV2ZW50ID0gYmF0
Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IFRvVW5zaWduZWQoZXZlbnQtPnRpbWVzdGFtcF9t
cygpKTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhUb1Vuc2lnbmVkKGJh
c2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRh
cy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXNfZGVsdGFzKGVu
Y29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIGJpdHJhdGVfYnBzCisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgUnRjRXZlbnRBdWRpb05l
dHdvcmtBZGFwdGF0aW9uKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICBpZiAoZXZlbnQtPmNv
bmZpZygpLmJpdHJhdGVfYnBzLmhhc192YWx1ZSgpKSB7CisgICAgICB2YWx1ZXNbaV0gPSBUb1Vu
c2lnbmVkKGV2ZW50LT5jb25maWcoKS5iaXRyYXRlX2Jwcy52YWx1ZSgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgdmFsdWVzW2ldLnJlc2V0KCk7CisgICAgfQorICB9CisgIGNvbnN0IGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90PiB1bnNpZ25lZF9iYXNlX2JpdHJhdGVfYnBzID0KKyAgICAgIGJhc2Vf
ZXZlbnQtPmNvbmZpZygpLmJpdHJhdGVfYnBzLmhhc192YWx1ZSgpCisgICAgICAgICAgPyBUb1Vu
c2lnbmVkKGJhc2VfZXZlbnQtPmNvbmZpZygpLmJpdHJhdGVfYnBzLnZhbHVlKCkpCisgICAgICAg
ICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNv
ZGVEZWx0YXModW5zaWduZWRfYmFzZV9iaXRyYXRlX2JwcywgdmFsdWVzKTsKKyAgaWYgKCFlbmNv
ZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9iaXRyYXRlX2Jwc19k
ZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gZnJhbWVfbGVuZ3RoX21zCisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgUnRj
RXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICBp
ZiAoZXZlbnQtPmNvbmZpZygpLmZyYW1lX2xlbmd0aF9tcy5oYXNfdmFsdWUoKSkgeworICAgICAg
dmFsdWVzW2ldID0gVG9VbnNpZ25lZChldmVudC0+Y29uZmlnKCkuZnJhbWVfbGVuZ3RoX21zLnZh
bHVlKCkpOworICAgIH0gZWxzZSB7CisgICAgICB2YWx1ZXNbaV0ucmVzZXQoKTsKKyAgICB9Cisg
IH0KKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHVuc2lnbmVkX2Jhc2VfZnJhbWVf
bGVuZ3RoX21zID0KKyAgICAgIGJhc2VfZXZlbnQtPmNvbmZpZygpLmZyYW1lX2xlbmd0aF9tcy5o
YXNfdmFsdWUoKQorICAgICAgICAgID8gVG9VbnNpZ25lZChiYXNlX2V2ZW50LT5jb25maWcoKS5m
cmFtZV9sZW5ndGhfbXMudmFsdWUoKSkKKyAgICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2
NF90PigpOworICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyh1bnNpZ25lZF9iYXNlX2Zy
YW1lX2xlbmd0aF9tcywgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7
CisgICAgcHJvdG9fYmF0Y2gtPnNldF9mcmFtZV9sZW5ndGhfbXNfZGVsdGFzKGVuY29kZWRfZGVs
dGFzKTsKKyAgfQorCisgIC8vIHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbgorICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJ0Y0V2ZW50
QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgaWYgKGV2
ZW50LT5jb25maWcoKS51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24uaGFzX3ZhbHVlKCkpIHsK
KyAgICAgIHZhbHVlc1tpXSA9IENvbnZlcnRQYWNrZXRMb3NzRnJhY3Rpb25Ub1Byb3RvRm9ybWF0
KAorICAgICAgICAgIGV2ZW50LT5jb25maWcoKS51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24u
dmFsdWUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tpXS5yZXNldCgpOworICAgIH0K
KyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX3VwbGlua19wYWNrZXRf
bG9zc19mcmFjdGlvbiwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7
CisgICAgcHJvdG9fYmF0Y2gtPnNldF91cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb25fZGVsdGFz
KGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIGVuYWJsZV9mZWMKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEF1ZGlv
TmV0d29ya0FkYXB0YXRpb24qIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9
IGV2ZW50LT5jb25maWcoKS5lbmFibGVfZmVjOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5j
b2RlRGVsdGFzKGJhc2VfZXZlbnQtPmNvbmZpZygpLmVuYWJsZV9mZWMsIHZhbHVlcyk7CisgIGlm
ICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfZW5hYmxl
X2ZlY19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gZW5hYmxlX2R0eAorICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJ0
Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAg
dmFsdWVzW2ldID0gZXZlbnQtPmNvbmZpZygpLmVuYWJsZV9kdHg7CisgIH0KKyAgZW5jb2RlZF9k
ZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+Y29uZmlnKCkuZW5hYmxlX2R0eCwgdmFs
dWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gt
PnNldF9lbmFibGVfZHR4X2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBudW1f
Y2hhbm5lbHMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICBjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24qIGV2ZW50ID0gYmF0Y2hb
aSArIDFdOworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHNpemVfdD4gbnVtX2NoYW5uZWxzID0g
ZXZlbnQtPmNvbmZpZygpLm51bV9jaGFubmVsczsKKyAgICBpZiAobnVtX2NoYW5uZWxzLmhhc192
YWx1ZSgpKSB7CisgICAgICAvLyBTaW5jZSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIGFsd2F5
cyBncmVhdGVyIHRoYW4gMCwgd2UgY2FuIGVuY29kZQorICAgICAgLy8gTiBjaGFubmVscyBhcyBO
LTEsIHRoZXJlYnkgbWFraW5nIHN1cmUgdGhhdCB3ZSBnZXQgc21hbGxlciBkZWx0YXMuCisgICAg
ICAvLyBUaGF0IGlzLCBhIHRvZ2dsZSBvZiAxLT4yLT4xIGNhbiBiZSBlbmNvZGVkIGFzIGRlbHRh
cyB2ZWN0b3IgKDEsIDEpLAorICAgICAgLy8gcmF0aGVyIHRoYW4gYXMgKDEsIDMpIG9yICgxLCAt
MSksIGVpdGhlciBvZiB3aGljaCB3b3VsZCByZXF1aXJlIHR3bworICAgICAgLy8gYml0cyBwZXIg
ZGVsdGEuCisgICAgICBSVENfRENIRUNLX0dUKG51bV9jaGFubmVscy52YWx1ZSgpLCAwdSk7Cisg
ICAgICB2YWx1ZXNbaV0gPSBudW1fY2hhbm5lbHMudmFsdWUoKSAtIDE7CisgICAgfSBlbHNlIHsK
KyAgICAgIHZhbHVlc1tpXS5yZXNldCgpOworICAgIH0KKyAgfQorICAvLyBJbiB0aGUgYmFzZSBl
dmVudCwgTiBjaGFubmVscyBlbmNvZGVkIGFzIE4gY2hhbm5lbHMsIGJ1dCBmb3IgZGVsdGEKKyAg
Ly8gY29tcHJlc3Npb24gcHVycG9zZXMsIGFsc28gc2hpZnRlZCBkb3duIGJ5IDEuCisgIGFic2w6
Om9wdGlvbmFsPHNpemVfdD4gc2hpZnRlZF9iYXNlX251bV9jaGFubmVsczsKKyAgaWYgKGJhc2Vf
ZXZlbnQtPmNvbmZpZygpLm51bV9jaGFubmVscy5oYXNfdmFsdWUoKSkgeworICAgIFJUQ19EQ0hF
Q0tfR1QoYmFzZV9ldmVudC0+Y29uZmlnKCkubnVtX2NoYW5uZWxzLnZhbHVlKCksIDB1KTsKKyAg
ICBzaGlmdGVkX2Jhc2VfbnVtX2NoYW5uZWxzID0gYmFzZV9ldmVudC0+Y29uZmlnKCkubnVtX2No
YW5uZWxzLnZhbHVlKCkgLSAxOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFz
KHNoaWZ0ZWRfYmFzZV9udW1fY2hhbm5lbHMsIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0
YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfbnVtX2NoYW5uZWxzX2RlbHRhcyhl
bmNvZGVkX2RlbHRhcyk7CisgIH0KK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3Jt
YXQ6OkVuY29kZUF1ZGlvUGxheW91dCgKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVu
dEF1ZGlvUGxheW91dCo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9z
dHJlYW0pIHsKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAwKQorICAgIHJldHVybjsKKworICAvLyBC
YXNlIGV2ZW50CisgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KiBjb25zdCBiYXNlX2V2ZW50
ID0gYmF0Y2hbMF07CisgIHJ0Y2xvZzI6OkF1ZGlvUGxheW91dEV2ZW50cyogcHJvdG9fYmF0Y2gg
PQorICAgICAgZXZlbnRfc3RyZWFtLT5hZGRfYXVkaW9fcGxheW91dF9ldmVudHMoKTsKKyAgcHJv
dG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXMoYmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpOwor
ICBwcm90b19iYXRjaC0+c2V0X2xvY2FsX3NzcmMoYmFzZV9ldmVudC0+c3NyYygpKTsKKworICBp
ZiAoYmF0Y2guc2l6ZSgpID09IDEpCisgICAgcmV0dXJuOworCisgIC8vIERlbHRhIGVuY29kaW5n
CisgIHByb3RvX2JhdGNoLT5zZXRfbnVtYmVyX29mX2RlbHRhcyhiYXRjaC5zaXplKCkgLSAxKTsK
KyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMoYmF0Y2guc2l6
ZSgpIC0gMSk7CisgIHN0ZDo6c3RyaW5nIGVuY29kZWRfZGVsdGFzOworCisgIC8vIHRpbWVzdGFt
cF9tcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAg
IGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2
YWx1ZXNbaV0gPSBUb1Vuc2lnbmVkKGV2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgIH0KKyAgZW5j
b2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoVG9VbnNpZ25lZChiYXNlX2V2ZW50LT50aW1lc3Rh
bXBfbXMoKSksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAg
IHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7Cisg
IH0KKworICAvLyBsb2NhbF9zc3JjCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNp
emUoKTsgKytpKSB7CisgICAgY29uc3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQqIGV2ZW50ID0gYmF0
Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IGV2ZW50LT5zc3JjKCk7CisgIH0KKyAgZW5jb2Rl
ZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+c3NyYygpLCB2YWx1ZXMpOworICBp
ZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X2xvY2Fs
X3NzcmNfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorfQorCit2b2lkIFJ0Y0V2ZW50TG9n
RW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlQXVkaW9SZWN2U3RyZWFtQ29uZmlnKAorICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKj4gYmF0Y2gs
CisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBmb3IgKGNvbnN0
IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKiBiYXNlX2V2ZW50IDogYmF0Y2gpIHsK
KyAgICBydGNsb2cyOjpBdWRpb1JlY3ZTdHJlYW1Db25maWcqIHByb3RvX2JhdGNoID0KKyAgICAg
ICAgZXZlbnRfc3RyZWFtLT5hZGRfYXVkaW9fcmVjdl9zdHJlYW1fY29uZmlncygpOworICAgIHBy
b3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsK
KyAgICBwcm90b19iYXRjaC0+c2V0X3JlbW90ZV9zc3JjKGJhc2VfZXZlbnQtPmNvbmZpZygpLnJl
bW90ZV9zc3JjKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2xvY2FsX3NzcmMoYmFzZV9ldmVudC0+
Y29uZmlnKCkubG9jYWxfc3NyYyk7CisKKyAgICBydGNsb2cyOjpSdHBIZWFkZXJFeHRlbnNpb25D
b25maWcqIHByb3RvX2NvbmZpZyA9CisgICAgICAgIHByb3RvX2JhdGNoLT5tdXRhYmxlX2hlYWRl
cl9leHRlbnNpb25zKCk7CisgICAgYm9vbCBoYXNfcmVjb2duaXplZF9leHRlbnNpb25zID0KKyAg
ICAgICAgQ29udmVydFRvUHJvdG9Gb3JtYXQoYmFzZV9ldmVudC0+Y29uZmlnKCkucnRwX2V4dGVu
c2lvbnMsIHByb3RvX2NvbmZpZyk7CisgICAgaWYgKCFoYXNfcmVjb2duaXplZF9leHRlbnNpb25z
KQorICAgICAgcHJvdG9fYmF0Y2gtPmNsZWFyX2hlYWRlcl9leHRlbnNpb25zKCk7CisgIH0KK30K
Kwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZUF1ZGlvU2VuZFN0cmVh
bUNvbmZpZygKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVh
bUNvbmZpZyo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0p
IHsKKyAgZm9yIChjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyogYmFzZV9ldmVu
dCA6IGJhdGNoKSB7CisgICAgcnRjbG9nMjo6QXVkaW9TZW5kU3RyZWFtQ29uZmlnKiBwcm90b19i
YXRjaCA9CisgICAgICAgIGV2ZW50X3N0cmVhbS0+YWRkX2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZp
Z3MoKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1l
c3RhbXBfbXMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9zc3JjKGJhc2VfZXZlbnQtPmNvbmZp
ZygpLmxvY2FsX3NzcmMpOworCisgICAgcnRjbG9nMjo6UnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmln
KiBwcm90b19jb25maWcgPQorICAgICAgICBwcm90b19iYXRjaC0+bXV0YWJsZV9oZWFkZXJfZXh0
ZW5zaW9ucygpOworICAgIGJvb2wgaGFzX3JlY29nbml6ZWRfZXh0ZW5zaW9ucyA9CisgICAgICAg
IENvbnZlcnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQtPmNvbmZpZygpLnJ0cF9leHRlbnNpb25z
LCBwcm90b19jb25maWcpOworICAgIGlmICghaGFzX3JlY29nbml6ZWRfZXh0ZW5zaW9ucykKKyAg
ICAgIHByb3RvX2JhdGNoLT5jbGVhcl9oZWFkZXJfZXh0ZW5zaW9ucygpOworICB9Cit9CisKK3Zv
aWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVCd2VVcGRhdGVEZWxheUJhc2Vk
KAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCo+
IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgaWYg
KGJhdGNoLnNpemUoKSA9PSAwKQorICAgIHJldHVybjsKKworICAvLyBCYXNlIGV2ZW50CisgIGNv
bnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCogY29uc3QgYmFzZV9ldmVudCA9IGJhdGNo
WzBdOworICBydGNsb2cyOjpEZWxheUJhc2VkQndlVXBkYXRlcyogcHJvdG9fYmF0Y2ggPQorICAg
ICAgZXZlbnRfc3RyZWFtLT5hZGRfZGVsYXlfYmFzZWRfYndlX3VwZGF0ZXMoKTsKKyAgcHJvdG9f
YmF0Y2gtPnNldF90aW1lc3RhbXBfbXMoYmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpOworICBw
cm90b19iYXRjaC0+c2V0X2JpdHJhdGVfYnBzKGJhc2VfZXZlbnQtPmJpdHJhdGVfYnBzKCkpOwor
ICBwcm90b19iYXRjaC0+c2V0X2RldGVjdG9yX3N0YXRlKAorICAgICAgQ29udmVydFRvUHJvdG9G
b3JtYXQoYmFzZV9ldmVudC0+ZGV0ZWN0b3Jfc3RhdGUoKSkpOworCisgIGlmIChiYXRjaC5zaXpl
KCkgPT0gMSkKKyAgICByZXR1cm47CisKKyAgLy8gRGVsdGEgZW5jb2RpbmcKKyAgcHJvdG9fYmF0
Y2gtPnNldF9udW1iZXJfb2ZfZGVsdGFzKGJhdGNoLnNpemUoKSAtIDEpOworICBzdGQ6OnZlY3Rv
cjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHZhbHVlcyhiYXRjaC5zaXplKCkgLSAxKTsKKyAg
c3RkOjpzdHJpbmcgZW5jb2RlZF9kZWx0YXM7CisKKyAgLy8gdGltZXN0YW1wX21zCisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgUnRjRXZl
bnRCd2VVcGRhdGVEZWxheUJhc2VkKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNb
aV0gPSBUb1Vuc2lnbmVkKGV2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgIH0KKyAgZW5jb2RlZF9k
ZWx0YXMgPSBFbmNvZGVEZWx0YXMoVG9VbnNpZ25lZChiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMo
KSksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3Rv
X2JhdGNoLT5zZXRfdGltZXN0YW1wX21zX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKwor
ICAvLyBiaXRyYXRlX2JwcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7
ICsraSkgeworICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCogZXZlbnQgPSBi
YXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmJpdHJhdGVfYnBzKCk7CisgIH0K
KyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+Yml0cmF0ZV9icHMo
KSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9f
YmF0Y2gtPnNldF9iaXRyYXRlX2Jwc19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAg
Ly8gZGV0ZWN0b3Jfc3RhdGUKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQqIGV2ZW50ID0g
YmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihDb252ZXJ0VG9Qcm90b0Zvcm1hdChldmVudC0+ZGV0ZWN0b3Jfc3RhdGUoKSkpOworICB9
CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKAorICAgICAgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KENvbnZlcnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQtPmRldGVjdG9yX3N0YXRlKCkp
KSwKKyAgICAgIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAg
IHByb3RvX2JhdGNoLT5zZXRfZGV0ZWN0b3Jfc3RhdGVfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsK
KyAgfQorfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlQndlVXBk
YXRlTG9zc0Jhc2VkKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRl
TG9zc0Jhc2VkKj4gYmF0Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVh
bSkgeworICBpZiAoYmF0Y2guc2l6ZSgpID09IDApCisgICAgcmV0dXJuOworCisgIC8vIEJhc2Ug
ZXZlbnQKKyAgY29uc3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQqIGNvbnN0IGJhc2VfZXZl
bnQgPSBiYXRjaFswXTsKKyAgcnRjbG9nMjo6TG9zc0Jhc2VkQndlVXBkYXRlcyogcHJvdG9fYmF0
Y2ggPQorICAgICAgZXZlbnRfc3RyZWFtLT5hZGRfbG9zc19iYXNlZF9id2VfdXBkYXRlcygpOwor
ICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMo
KSk7CisgIHByb3RvX2JhdGNoLT5zZXRfYml0cmF0ZV9icHMoYmFzZV9ldmVudC0+Yml0cmF0ZV9i
cHMoKSk7CisgIHByb3RvX2JhdGNoLT5zZXRfZnJhY3Rpb25fbG9zcyhiYXNlX2V2ZW50LT5mcmFj
dGlvbl9sb3NzKCkpOworICBwcm90b19iYXRjaC0+c2V0X3RvdGFsX3BhY2tldHMoYmFzZV9ldmVu
dC0+dG90YWxfcGFja2V0cygpKTsKKworICBpZiAoYmF0Y2guc2l6ZSgpID09IDEpCisgICAgcmV0
dXJuOworCisgIC8vIERlbHRhIGVuY29kaW5nCisgIHByb3RvX2JhdGNoLT5zZXRfbnVtYmVyX29m
X2RlbHRhcyhiYXRjaC5zaXplKCkgLSAxKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+PiB2YWx1ZXMoYmF0Y2guc2l6ZSgpIC0gMSk7CisgIHN0ZDo6c3RyaW5nIGVuY29k
ZWRfZGVsdGFzOworCisgIC8vIHRpbWVzdGFtcF9tcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jh
c2VkKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBUb1Vuc2lnbmVkKGV2
ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0
YXMoVG9VbnNpZ25lZChiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSksIHZhbHVlcyk7CisgIGlm
ICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0
YW1wX21zX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBiaXRyYXRlX2Jwcwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0
IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2
YWx1ZXNbaV0gPSBldmVudC0+Yml0cmF0ZV9icHMoKTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9
IEVuY29kZURlbHRhcyhiYXNlX2V2ZW50LT5iaXRyYXRlX2JwcygpLCB2YWx1ZXMpOworICBpZiAo
IWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X2JpdHJhdGVf
YnBzX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBmcmFjdGlvbl9sb3NzCisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3Qg
UnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZh
bHVlc1tpXSA9IGV2ZW50LT5mcmFjdGlvbl9sb3NzKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMg
PSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+ZnJhY3Rpb25fbG9zcygpLCB2YWx1ZXMpOworICBp
ZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X2ZyYWN0
aW9uX2xvc3NfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIHRvdGFsX3BhY2tl
dHMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBj
b25zdCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCogZXZlbnQgPSBiYXRjaFtpICsgMV07Cisg
ICAgdmFsdWVzW2ldID0gZXZlbnQtPnRvdGFsX3BhY2tldHMoKTsKKyAgfQorICBlbmNvZGVkX2Rl
bHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX2V2ZW50LT50b3RhbF9wYWNrZXRzKCksIHZhbHVlcyk7
CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRf
dG90YWxfcGFja2V0c19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9Cit9CisKK3ZvaWQgUnRj
RXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVQcm9iZUNsdXN0ZXJDcmVhdGVkKAorICAg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCo+IGJhdGNo
LAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChjb25z
dCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQqIGJhc2VfZXZlbnQgOiBiYXRjaCkgeworICAg
IHJ0Y2xvZzI6OkJ3ZVByb2JlQ2x1c3RlciogcHJvdG9fYmF0Y2ggPSBldmVudF9zdHJlYW0tPmFk
ZF9wcm9iZV9jbHVzdGVycygpOworICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJh
c2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2lkKGJhc2Vf
ZXZlbnQtPmlkKCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfYml0cmF0ZV9icHMoYmFzZV9ldmVu
dC0+Yml0cmF0ZV9icHMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9taW5fcGFja2V0cyhiYXNl
X2V2ZW50LT5taW5fcHJvYmVzKCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfbWluX2J5dGVzKGJh
c2VfZXZlbnQtPm1pbl9ieXRlcygpKTsKKyAgfQorfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rl
ck5ld0Zvcm1hdDo6RW5jb2RlUHJvYmVSZXN1bHRGYWlsdXJlKAorICAgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlKj4gYmF0Y2gsCisgICAgcnRjbG9nMjo6
RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBmb3IgKGNvbnN0IFJ0Y0V2ZW50UHJvYmVS
ZXN1bHRGYWlsdXJlKiBiYXNlX2V2ZW50IDogYmF0Y2gpIHsKKyAgICBydGNsb2cyOjpCd2VQcm9i
ZVJlc3VsdEZhaWx1cmUqIHByb3RvX2JhdGNoID0KKyAgICAgICAgZXZlbnRfc3RyZWFtLT5hZGRf
cHJvYmVfZmFpbHVyZSgpOworICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2Vf
ZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2lkKGJhc2VfZXZl
bnQtPmlkKCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfZmFpbHVyZSgKKyAgICAgICAgQ29udmVy
dFRvUHJvdG9Gb3JtYXQoYmFzZV9ldmVudC0+ZmFpbHVyZV9yZWFzb24oKSkpOworICB9CisgIC8v
IFRPRE8odGVyZWxpdXMpOiBTaG91bGQgd2UgZGVsdGEtY29tcHJlc3MgdGhpcyBldmVudCB0eXBl
PworfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlUHJvYmVSZXN1
bHRTdWNjZXNzKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRT
dWNjZXNzKj4gYmF0Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkg
eworICBmb3IgKGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzKiBiYXNlX2V2ZW50IDog
YmF0Y2gpIHsKKyAgICBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdFN1Y2Nlc3MqIHByb3RvX2JhdGNo
ID0KKyAgICAgICAgZXZlbnRfc3RyZWFtLT5hZGRfcHJvYmVfc3VjY2VzcygpOworICAgIHByb3Rv
X2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAg
ICBwcm90b19iYXRjaC0+c2V0X2lkKGJhc2VfZXZlbnQtPmlkKCkpOworICAgIHByb3RvX2JhdGNo
LT5zZXRfYml0cmF0ZV9icHMoYmFzZV9ldmVudC0+Yml0cmF0ZV9icHMoKSk7CisgIH0KKyAgLy8g
VE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YS1jb21wcmVzcyB0aGlzIGV2ZW50IHR5cGU/
Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVSdGNwUGFja2V0
SW5jb21pbmcoCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRSdGNwUGFja2V0SW5j
b21pbmcqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7
CisgIGlmIChiYXRjaC5lbXB0eSgpKSB7CisgICAgcmV0dXJuOworICB9CisgIEVuY29kZVJ0Y3BQ
YWNrZXQoYmF0Y2gsIGV2ZW50X3N0cmVhbS0+YWRkX2luY29taW5nX3J0Y3BfcGFja2V0cygpKTsK
K30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZVJ0Y3BQYWNrZXRP
dXRnb2luZygKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRn
b2luZyo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsK
KyAgaWYgKGJhdGNoLmVtcHR5KCkpIHsKKyAgICByZXR1cm47CisgIH0KKyAgRW5jb2RlUnRjcFBh
Y2tldChiYXRjaCwgZXZlbnRfc3RyZWFtLT5hZGRfb3V0Z29pbmdfcnRjcF9wYWNrZXRzKCkpOwor
fQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlUnRwUGFja2V0SW5j
b21pbmcoCisgICAgY29uc3Qgc3RkOjptYXA8dWludDMyX3QsIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0
Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcqPj4mCisgICAgICAgIGJhdGNoLAorICAgIHJ0Y2xvZzI6
OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChhdXRvIGl0IDogYmF0Y2gpIHsK
KyAgICBSVENfRENIRUNLKCFpdC5zZWNvbmQuZW1wdHkoKSk7CisgICAgRW5jb2RlUnRwUGFja2V0
KGl0LnNlY29uZCwgZXZlbnRfc3RyZWFtLT5hZGRfaW5jb21pbmdfcnRwX3BhY2tldHMoKSk7Cisg
IH0KK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZVJ0cFBhY2tl
dE91dGdvaW5nKAorICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBzdGQ6OnZlY3Rvcjxjb25z
dCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nKj4+JgorICAgICAgICBiYXRjaCwKKyAgICBydGNs
b2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7CisgIGZvciAoYXV0byBpdCA6IGJhdGNo
KSB7CisgICAgUlRDX0RDSEVDSyghaXQuc2Vjb25kLmVtcHR5KCkpOworICAgIEVuY29kZVJ0cFBh
Y2tldChpdC5zZWNvbmQsIGV2ZW50X3N0cmVhbS0+YWRkX291dGdvaW5nX3J0cF9wYWNrZXRzKCkp
OworICB9Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVWaWRl
b1JlY3ZTdHJlYW1Db25maWcoCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRWaWRl
b1JlY2VpdmVTdHJlYW1Db25maWcqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSog
ZXZlbnRfc3RyZWFtKSB7CisgIGZvciAoY29uc3QgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1D
b25maWcqIGJhc2VfZXZlbnQgOiBiYXRjaCkgeworICAgIHJ0Y2xvZzI6OlZpZGVvUmVjdlN0cmVh
bUNvbmZpZyogcHJvdG9fYmF0Y2ggPQorICAgICAgICBldmVudF9zdHJlYW0tPmFkZF92aWRlb19y
ZWN2X3N0cmVhbV9jb25maWdzKCk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXMo
YmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfcmVtb3Rl
X3NzcmMoYmFzZV9ldmVudC0+Y29uZmlnKCkucmVtb3RlX3NzcmMpOworICAgIHByb3RvX2JhdGNo
LT5zZXRfbG9jYWxfc3NyYyhiYXNlX2V2ZW50LT5jb25maWcoKS5sb2NhbF9zc3JjKTsKKyAgICBw
cm90b19iYXRjaC0+c2V0X3J0eF9zc3JjKGJhc2VfZXZlbnQtPmNvbmZpZygpLnJ0eF9zc3JjKTsK
KworICAgIHJ0Y2xvZzI6OlJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyogcHJvdG9fY29uZmlnID0K
KyAgICAgICAgcHJvdG9fYmF0Y2gtPm11dGFibGVfaGVhZGVyX2V4dGVuc2lvbnMoKTsKKyAgICBi
b29sIGhhc19yZWNvZ25pemVkX2V4dGVuc2lvbnMgPQorICAgICAgICBDb252ZXJ0VG9Qcm90b0Zv
cm1hdChiYXNlX2V2ZW50LT5jb25maWcoKS5ydHBfZXh0ZW5zaW9ucywgcHJvdG9fY29uZmlnKTsK
KyAgICBpZiAoIWhhc19yZWNvZ25pemVkX2V4dGVuc2lvbnMpCisgICAgICBwcm90b19iYXRjaC0+
Y2xlYXJfaGVhZGVyX2V4dGVuc2lvbnMoKTsKKyAgfQorfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5j
b2Rlck5ld0Zvcm1hdDo6RW5jb2RlVmlkZW9TZW5kU3RyZWFtQ29uZmlnKAorICAgIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKj4gYmF0Y2gsCisgICAg
cnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBmb3IgKGNvbnN0IFJ0Y0V2
ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKiBiYXNlX2V2ZW50IDogYmF0Y2gpIHsKKyAgICBydGNs
b2cyOjpWaWRlb1NlbmRTdHJlYW1Db25maWcqIHByb3RvX2JhdGNoID0KKyAgICAgICAgZXZlbnRf
c3RyZWFtLT5hZGRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlncygpOworICAgIHByb3RvX2JhdGNo
LT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgICBwcm90
b19iYXRjaC0+c2V0X3NzcmMoYmFzZV9ldmVudC0+Y29uZmlnKCkubG9jYWxfc3NyYyk7CisgICAg
cHJvdG9fYmF0Y2gtPnNldF9ydHhfc3NyYyhiYXNlX2V2ZW50LT5jb25maWcoKS5ydHhfc3NyYyk7
CisKKyAgICBydGNsb2cyOjpSdHBIZWFkZXJFeHRlbnNpb25Db25maWcqIHByb3RvX2NvbmZpZyA9
CisgICAgICAgIHByb3RvX2JhdGNoLT5tdXRhYmxlX2hlYWRlcl9leHRlbnNpb25zKCk7CisgICAg
Ym9vbCBoYXNfcmVjb2duaXplZF9leHRlbnNpb25zID0KKyAgICAgICAgQ29udmVydFRvUHJvdG9G
b3JtYXQoYmFzZV9ldmVudC0+Y29uZmlnKCkucnRwX2V4dGVuc2lvbnMsIHByb3RvX2NvbmZpZyk7
CisgICAgaWYgKCFoYXNfcmVjb2duaXplZF9leHRlbnNpb25zKQorICAgICAgcHJvdG9fYmF0Y2gt
PmNsZWFyX2hlYWRlcl9leHRlbnNpb25zKCk7CisgIH0KK30KKwordm9pZCBSdGNFdmVudExvZ0Vu
Y29kZXJOZXdGb3JtYXQ6OkVuY29kZUljZUNhbmRpZGF0ZVBhaXJDb25maWcoCisgICAgcnRjOjpB
cnJheVZpZXc8Y29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKj4gYmF0Y2gsCisg
ICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBmb3IgKGNvbnN0IFJ0
Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyogYmFzZV9ldmVudCA6IGJhdGNoKSB7CisgICAg
cnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyogcHJvdG9fYmF0Y2ggPQorICAgICAgICBl
dmVudF9zdHJlYW0tPmFkZF9pY2VfY2FuZGlkYXRlX2NvbmZpZ3MoKTsKKworICAgIHByb3RvX2Jh
dGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgICBw
cm90b19iYXRjaC0+c2V0X2NvbmZpZ190eXBlKENvbnZlcnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZl
bnQtPnR5cGUoKSkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfY2FuZGlkYXRlX3BhaXJfaWQoYmFz
ZV9ldmVudC0+Y2FuZGlkYXRlX3BhaXJfaWQoKSk7CisgICAgY29uc3QgYXV0byYgZGVzYyA9IGJh
c2VfZXZlbnQtPmNhbmRpZGF0ZV9wYWlyX2Rlc2MoKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2xv
Y2FsX2NhbmRpZGF0ZV90eXBlKAorICAgICAgICBDb252ZXJ0VG9Qcm90b0Zvcm1hdChkZXNjLmxv
Y2FsX2NhbmRpZGF0ZV90eXBlKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9sb2NhbF9yZWxheV9w
cm90b2NvbCgKKyAgICAgICAgQ29udmVydFRvUHJvdG9Gb3JtYXQoZGVzYy5sb2NhbF9yZWxheV9w
cm90b2NvbCkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfbG9jYWxfbmV0d29ya190eXBlKAorICAg
ICAgICBDb252ZXJ0VG9Qcm90b0Zvcm1hdChkZXNjLmxvY2FsX25ldHdvcmtfdHlwZSkpOworICAg
IHByb3RvX2JhdGNoLT5zZXRfbG9jYWxfYWRkcmVzc19mYW1pbHkoCisgICAgICAgIENvbnZlcnRU
b1Byb3RvRm9ybWF0KGRlc2MubG9jYWxfYWRkcmVzc19mYW1pbHkpKTsKKyAgICBwcm90b19iYXRj
aC0+c2V0X3JlbW90ZV9jYW5kaWRhdGVfdHlwZSgKKyAgICAgICAgQ29udmVydFRvUHJvdG9Gb3Jt
YXQoZGVzYy5yZW1vdGVfY2FuZGlkYXRlX3R5cGUpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3Jl
bW90ZV9hZGRyZXNzX2ZhbWlseSgKKyAgICAgICAgQ29udmVydFRvUHJvdG9Gb3JtYXQoZGVzYy5y
ZW1vdGVfYWRkcmVzc19mYW1pbHkpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2NhbmRpZGF0ZV9w
YWlyX3Byb3RvY29sKAorICAgICAgICBDb252ZXJ0VG9Qcm90b0Zvcm1hdChkZXNjLmNhbmRpZGF0
ZV9wYWlyX3Byb3RvY29sKSk7CisgIH0KKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBk
ZWx0YS1jb21wcmVzcyB0aGlzIGV2ZW50IHR5cGU/Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNv
ZGVyTmV3Rm9ybWF0OjpFbmNvZGVJY2VDYW5kaWRhdGVQYWlyRXZlbnQoCisgICAgcnRjOjpBcnJh
eVZpZXc8Y29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyKj4gYmF0Y2gsCisgICAgcnRjbG9n
Mjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBmb3IgKGNvbnN0IFJ0Y0V2ZW50SWNl
Q2FuZGlkYXRlUGFpciogYmFzZV9ldmVudCA6IGJhdGNoKSB7CisgICAgcnRjbG9nMjo6SWNlQ2Fu
ZGlkYXRlUGFpckV2ZW50KiBwcm90b19iYXRjaCA9CisgICAgICAgIGV2ZW50X3N0cmVhbS0+YWRk
X2ljZV9jYW5kaWRhdGVfZXZlbnRzKCk7CisKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFt
cF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisKKyAgICBwcm90b19iYXRjaC0+c2V0
X2V2ZW50X3R5cGUoQ29udmVydFRvUHJvdG9Gb3JtYXQoYmFzZV9ldmVudC0+dHlwZSgpKSk7Cisg
ICAgcHJvdG9fYmF0Y2gtPnNldF9jYW5kaWRhdGVfcGFpcl9pZChiYXNlX2V2ZW50LT5jYW5kaWRh
dGVfcGFpcl9pZCgpKTsKKyAgfQorICAvLyBUT0RPKHRlcmVsaXVzKTogU2hvdWxkIHdlIGRlbHRh
LWNvbXByZXNzIHRoaXMgZXZlbnQgdHlwZT8KK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25ld19mb3Jt
YXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9uZXdfZm9ybWF0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2RmYTQ5MDExNGI0ZWI4ODNiYzc4OTYxNTE0OThlOTgxMTBhODgwNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9uZXdf
Zm9ybWF0LmgKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
CisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZu
ZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9O
RVdfRk9STUFUX0hfCisjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX1JUQ19F
VkVOVF9MT0dfRU5DT0RFUl9ORVdfRk9STUFUX0hfCisKKyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNs
dWRlIDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRl
IDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImxvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlci5oIgorCituYW1l
c3BhY2Ugd2VicnRjIHsKKworbmFtZXNwYWNlIHJ0Y2xvZzIgeworY2xhc3MgRXZlbnRTdHJlYW07
ICAvLyBBdXRvLWdlbmVyYXRlZCBmcm9tIHByb3RvYnVmLgorfSAgLy8gbmFtZXNwYWNlIHJ0Y2xv
ZzIKKworY2xhc3MgUnRjRXZlbnRBbHJTdGF0ZTsKK2NsYXNzIFJ0Y0V2ZW50QXVkaW9OZXR3b3Jr
QWRhcHRhdGlvbjsKK2NsYXNzIFJ0Y0V2ZW50QXVkaW9QbGF5b3V0OworY2xhc3MgUnRjRXZlbnRB
dWRpb1JlY2VpdmVTdHJlYW1Db25maWc7CitjbGFzcyBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNv
bmZpZzsKK2NsYXNzIFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZDsKK2NsYXNzIFJ0Y0V2ZW50
QndlVXBkYXRlTG9zc0Jhc2VkOworY2xhc3MgUnRjRXZlbnRMb2dnaW5nU3RhcnRlZDsKK2NsYXNz
IFJ0Y0V2ZW50TG9nZ2luZ1N0b3BwZWQ7CitjbGFzcyBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0
ZWQ7CitjbGFzcyBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZTsKK2NsYXNzIFJ0Y0V2ZW50UHJv
YmVSZXN1bHRTdWNjZXNzOworY2xhc3MgUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmc7CitjbGFz
cyBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZzsKK2NsYXNzIFJ0Y0V2ZW50UnRwUGFja2V0SW5j
b21pbmc7CitjbGFzcyBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nOworY2xhc3MgUnRjRXZlbnRW
aWRlb1JlY2VpdmVTdHJlYW1Db25maWc7CitjbGFzcyBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNv
bmZpZzsKK2NsYXNzIFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzsKK2NsYXNzIFJ0Y0V2
ZW50SWNlQ2FuZGlkYXRlUGFpcjsKK2NsYXNzIFJ0cFBhY2tldDsKKworY2xhc3MgUnRjRXZlbnRM
b2dFbmNvZGVyTmV3Rm9ybWF0IGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50TG9nRW5jb2RlciB7Cisg
cHVibGljOgorICB+UnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0KCkgb3ZlcnJpZGUgPSBkZWZh
dWx0OworCisgIHN0ZDo6c3RyaW5nIEVuY29kZUJhdGNoKAorICAgICAgc3RkOjpkZXF1ZTxzdGQ6
OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+Pjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4sCisgICAgICBzdGQ6
OmRlcXVlPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4+Ojpjb25zdF9pdGVyYXRvciBlbmQpIG92
ZXJyaWRlOworCisgIHN0ZDo6c3RyaW5nIEVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1w
X3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHV0Y190aW1lX3VzKSBv
dmVycmlkZTsKKyAgc3RkOjpzdHJpbmcgRW5jb2RlTG9nRW5kKGludDY0X3QgdGltZXN0YW1wX3Vz
KSBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIC8vIEVuY29kaW5nIGVudHJ5LXBvaW50IGZvciB0
aGUgdmFyaW91cyBSdGNFdmVudCBzdWJjbGFzc2VzLgorICB2b2lkIEVuY29kZUFsclN0YXRlKHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QWxyU3RhdGUqPiBiYXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBF
bmNvZGVBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qg
UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKj4gYmF0Y2gsCisgICAgICBydGNsb2cyOjpF
dmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVBdWRpb1BsYXlvdXQocnRj
OjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQqPiBiYXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7Cisg
IHZvaWQgRW5jb2RlQXVkaW9SZWN2U3RyZWFtQ29uZmlnKAorICAgICAgcnRjOjpBcnJheVZpZXc8
Y29uc3QgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWcqPiBiYXRjaCwKKyAgICAgIHJ0
Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2b2lkIEVuY29kZUF1ZGlvU2Vu
ZFN0cmVhbUNvbmZpZygKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QXVkaW9T
ZW5kU3RyZWFtQ29uZmlnKj4gYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZl
bnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVCd2VVcGRhdGVEZWxheUJhc2VkKAorICAgICAgcnRj
OjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkKj4gYmF0Y2gsCisg
ICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVC
d2VVcGRhdGVMb3NzQmFzZWQoCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudEJ3
ZVVwZGF0ZUxvc3NCYXNlZCo+IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2
ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlTG9nZ2luZ1N0YXJ0ZWQocnRjOjpBcnJheVZpZXc8
Y29uc3QgUnRjRXZlbnRMb2dnaW5nU3RhcnRlZCo+IGJhdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2b2lkIEVu
Y29kZUxvZ2dpbmdTdG9wcGVkKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50TG9nZ2luZ1N0
b3BwZWQqPiBiYXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGNsb2cyOjpFdmVu
dFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVQcm9iZUNsdXN0ZXJDcmVhdGVk
KAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVk
Kj4gYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAg
dm9pZCBFbmNvZGVQcm9iZVJlc3VsdEZhaWx1cmUoCisgICAgICBydGM6OkFycmF5Vmlldzxjb25z
dCBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZSo+IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZl
bnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlUHJvYmVSZXN1bHRTdWNjZXNz
KAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3Mq
PiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2
b2lkIEVuY29kZVJ0Y3BQYWNrZXRJbmNvbWluZygKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nKj4gYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVu
dFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVSdGNwUGFja2V0T3V0Z29pbmco
CisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZyo+
IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZv
aWQgRW5jb2RlUnRwUGFja2V0SW5jb21pbmcoCisgICAgICBjb25zdCBzdGQ6Om1hcDx1aW50MzJf
dCwgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyo+PiYKKyAgICAg
ICAgICBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOwor
ICB2b2lkIEVuY29kZVJ0cFBhY2tldE91dGdvaW5nKAorICAgICAgY29uc3Qgc3RkOjptYXA8dWlu
dDMyX3QsIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcqPj4mCisg
ICAgICAgICAgYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFt
KTsKKyAgdm9pZCBFbmNvZGVWaWRlb1JlY3ZTdHJlYW1Db25maWcoCisgICAgICBydGM6OkFycmF5
Vmlldzxjb25zdCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyo+IGJhdGNoLAorICAg
ICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlVmlk
ZW9TZW5kU3RyZWFtQ29uZmlnKAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRW
aWRlb1NlbmRTdHJlYW1Db25maWcqPiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFt
KiBldmVudF9zdHJlYW0pOworICB2b2lkIEVuY29kZUljZUNhbmRpZGF0ZVBhaXJDb25maWcoCisg
ICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWcq
PiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2
b2lkIEVuY29kZUljZUNhbmRpZGF0ZVBhaXJFdmVudCgKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcio+IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZl
bnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisK
KyNlbmRpZiAgLy8gTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09ERVJfUlRDX0VWRU5UX0xPR19F
TkNPREVSX05FV19GT1JNQVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVu
dF9sb2dfZW5jb2Rlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2df
ZW5jb2Rlcl91bml0dGVzdC5jYwppbmRleCA5OTBmYTYwODBiYjk0NjEzZDU0MzQ3NDQ2MGI4N2Y4
YTNjNDZjMDhlLi44NTZiZWM2NmU3Y2NjMDgxYzM2NDA3YThjMjY0MWQxNWRhNDdjYWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfdW5pdHRlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX3VuaXR0ZXN0LmNjCkBA
IC0xMSw5ICsxMSwxMSBAQAogI2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUgPGxpbWl0cz4KICNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHVwbGU+CiAKICNpbmNsdWRlICJhYnNsL21lbW9y
eS9tZW1vcnkuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNf
ZXZlbnRfbG9nX2VuY29kZXJfbGVnYWN5LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25ld19mb3JtYXQuaCIKICNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hbHJfc3RhdGUuaCIKICNp
bmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19uZXR3
b3JrX2FkYXB0YXRpb24uaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9hdWRpb19wbGF5b3V0LmgiCkBAIC0zOSwxNTYgKzQxLDM1NyBAQAogI2luY2x1
ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLQotY2xhc3MgUnRjRXZl
bnRMb2dFbmNvZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4gewor
Y2xhc3MgUnRjRXZlbnRMb2dFbmNvZGVyVGVzdAorICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08c3RkOjp0dXBsZTxpbnQsIGJvb2wsIHNpemVfdCwgYm9vbD4+IHsKICBwcm90ZWN0
ZWQ6CiAgIFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QoKQotICAgICAgOiBlbmNvZGVyXyhuZXcgUnRj
RXZlbnRMb2dFbmNvZGVyTGVnYWN5KSwKLSAgICAgICAgc2VlZF8oR2V0UGFyYW0oKSksCisgICAg
ICA6IHNlZWRfKHN0ZDo6Z2V0PDA+KEdldFBhcmFtKCkpKSwKICAgICAgICAgcHJuZ18oc2VlZF8p
LAotICAgICAgICBnZW5fKHNlZWRfICogODgwMDAxVUwpIHt9CisgICAgICAgIG5ld19lbmNvZGlu
Z18oc3RkOjpnZXQ8MT4oR2V0UGFyYW0oKSkpLAorICAgICAgICBldmVudF9jb3VudF8oc3RkOjpn
ZXQ8Mj4oR2V0UGFyYW0oKSkpLAorICAgICAgICBmb3JjZV9yZXBlYXRlZF9maWVsZHNfKHN0ZDo6
Z2V0PDM+KEdldFBhcmFtKCkpKSwKKyAgICAgICAgZ2VuXyhzZWVkXyAqIDg4MDAwMVVMKSwKKyAg
ICAgICAgdmVyaWZpZXJfKG5ld19lbmNvZGluZ18gPyBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBl
OjpOZXdGb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBSdGNFdmVudExv
Zzo6RW5jb2RpbmdUeXBlOjpMZWdhY3kpIHsKKyAgICBpZiAobmV3X2VuY29kaW5nXykKKyAgICAg
IGVuY29kZXJfID0gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0
PigpOworICAgIGVsc2UKKyAgICAgIGVuY29kZXJfID0gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZl
bnRMb2dFbmNvZGVyTGVnYWN5PigpOworICB9CiAgIH5SdGNFdmVudExvZ0VuY29kZXJUZXN0KCkg
b3ZlcnJpZGUgPSBkZWZhdWx0OwogCiAgIC8vIEFOQSBldmVudHMgaGF2ZSBzb21lIG9wdGlvbmFs
IGZpZWxkcywgc28gd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBnZXQKICAgLy8gY29ycmVj
dCBiZWhhdmlvciBib3RoIHdoZW4gYWxsIG9mIHRoZSB2YWx1ZXMgYXJlIHRoZXJlLCBhcyB3ZWxs
IGFzIHdoZW4KICAgLy8gb25seSBzb21lLgogICB2b2lkIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29y
a0FkYXB0YXRpb24oCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyUnVudGltZUNv
bmZpZz4gcnVudGltZV9jb25maWcpOworICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4+Jik7CisKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIEV2ZW50VHlwZT4KKyAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50VHlwZT4gTmV3UnRw
UGFja2V0KAorICAgICAgdWludDMyX3Qgc3NyYywKKyAgICAgIGNvbnN0IFJ0cEhlYWRlckV4dGVu
c2lvbk1hcCYgZXh0ZW5zaW9uX21hcCk7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFBhcnNlZFR5
cGU+CisgIGNvbnN0IHN0ZDo6dmVjdG9yPFBhcnNlZFR5cGU+KiBHZXRSdHBQYWNrZXRzQnlTc3Jj
KAorICAgICAgY29uc3QgUGFyc2VkUnRjRXZlbnRMb2dOZXcqIHBhcnNlZF9sb2csCisgICAgICB1
aW50MzJfdCBzc3JjKTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXZlbnRUeXBlLCB0eXBlbmFt
ZSBQYXJzZWRUeXBlPgorICB2b2lkIFRlc3RSdHBQYWNrZXRzKCk7CiAKICAgc3RkOjpkZXF1ZTxz
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+PiBoaXN0b3J5XzsKLSAgLy8gVE9ETyhlbGFkYWxvbik6
IE9uY2Ugd2UgaGF2ZSBtb3JlIHRoYW4gb25lIHBvc3NpYmxlIGVuY29kZXIsIHBhcmFtZXRlcml6
ZQotICAvLyBlbmNvZGVyIHNlbGVjdGlvbi4KICAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9n
RW5jb2Rlcj4gZW5jb2Rlcl87CiAgIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3IHBhcnNlZF9sb2dfOwog
ICBjb25zdCB1aW50NjRfdCBzZWVkXzsKICAgUmFuZG9tIHBybmdfOworICBjb25zdCBib29sIG5l
d19lbmNvZGluZ187CisgIGNvbnN0IHNpemVfdCBldmVudF9jb3VudF87CisgIGNvbnN0IGJvb2wg
Zm9yY2VfcmVwZWF0ZWRfZmllbGRzXzsKICAgdGVzdDo6RXZlbnRHZW5lcmF0b3IgZ2VuXzsKKyAg
dGVzdDo6RXZlbnRWZXJpZmllciB2ZXJpZmllcl87CiB9OwogCi1URVNUX1AoUnRjRXZlbnRMb2dF
bmNvZGVyVGVzdCwgUnRjRXZlbnRBbHJTdGF0ZSkgewotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnRBbHJTdGF0ZT4gZXZlbnQgPSBnZW5fLk5ld0FsclN0YXRlKCk7Ci0gIGhpc3RvcnlfLnB1c2hf
YmFjayhldmVudC0+Q29weSgpKTsKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyVGVzdDo6VGVzdFJ0
Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbigKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPj4mCisgICAgICAgIGV2
ZW50cykgeworICBBU1NFUlRfVFJVRShoaXN0b3J5Xy5lbXB0eSgpKSA8PCAiRnVuY3Rpb24gc2hv
dWxkIGJlIGNhbGxlZCBvbmNlIHBlciB0ZXN0LiI7CisKKyAgZm9yIChhdXRvJiBldmVudCA6IGV2
ZW50cykgeworICAgIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgpKTsKKyAgfQogCiAg
IHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBlbmNvZGVyXy0+RW5jb2RlQmF0Y2goaGlzdG9yeV8uYmVn
aW4oKSwgaGlzdG9yeV8uZW5kKCkpOwogICBBU1NFUlRfVFJVRShwYXJzZWRfbG9nXy5QYXJzZVN0
cmluZyhlbmNvZGVkKSk7Ci0gIGNvbnN0IGF1dG8mIGFscl9zdGF0ZV9ldmVudHMgPSBwYXJzZWRf
bG9nXy5hbHJfc3RhdGVfZXZlbnRzKCk7CisgIGNvbnN0IGF1dG8mIGFuYV9jb25maWdzID0gcGFy
c2VkX2xvZ18uYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uX2V2ZW50cygpOwogCi0gIEFTU0VSVF9F
UShhbHJfc3RhdGVfZXZlbnRzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJp
ZnlMb2dnZWRBbHJTdGF0ZUV2ZW50KCpldmVudCwgYWxyX3N0YXRlX2V2ZW50c1swXSkpOworICBB
U1NFUlRfRVEoYW5hX2NvbmZpZ3Muc2l6ZSgpLCBldmVudHMuc2l6ZSgpKTsKKyAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBldmVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5
TG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50KCpldmVudHNbaV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmFfY29uZmlnc1tp
XSk7CisgIH0KIH0KIAotdm9pZCBSdGNFdmVudExvZ0VuY29kZXJUZXN0OjpUZXN0UnRjRXZlbnRB
dWRpb05ldHdvcmtBZGFwdGF0aW9uKAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXJS
dW50aW1lQ29uZmlnPiBydW50aW1lX2NvbmZpZykgewotICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCByZXBlYXRlZGx5LiBDbGVhciBzdGF0ZSBiZXR3ZWVuIGNhbGxzLgotICBoaXN0b3J5Xy5j
bGVhcigpOwotICBhdXRvIG9yaWdpbmFsX3J1bnRpbWVfY29uZmlnID0gKnJ1bnRpbWVfY29uZmln
OwotICBhdXRvIGV2ZW50ID0gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRpb05ldHdvcmtB
ZGFwdGF0aW9uPigKLSAgICAgIHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOwotICBjb25zdCBp
bnQ2NF90IHRpbWVzdGFtcF91cyA9IGV2ZW50LT50aW1lc3RhbXBfdXNfOwotICBoaXN0b3J5Xy5w
dXNoX2JhY2soc3RkOjptb3ZlKGV2ZW50KSk7Cit0ZW1wbGF0ZSA8Pgorc3RkOjp1bmlxdWVfcHRy
PFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc+IFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3Q6Ok5ld1J0
cFBhY2tldCgKKyAgICB1aW50MzJfdCBzc3JjLAorICAgIGNvbnN0IFJ0cEhlYWRlckV4dGVuc2lv
bk1hcCYgZXh0ZW5zaW9uX21hcCkgeworICByZXR1cm4gZ2VuXy5OZXdSdHBQYWNrZXRJbmNvbWlu
Zyhzc3JjLCBleHRlbnNpb25fbWFwLCBmYWxzZSk7Cit9CisKK3RlbXBsYXRlIDw+CitzdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZz4gUnRjRXZlbnRMb2dFbmNvZGVyVGVz
dDo6TmV3UnRwUGFja2V0KAorICAgIHVpbnQzMl90IHNzcmMsCisgICAgY29uc3QgUnRwSGVhZGVy
RXh0ZW5zaW9uTWFwJiBleHRlbnNpb25fbWFwKSB7CisgIHJldHVybiBnZW5fLk5ld1J0cFBhY2tl
dE91dGdvaW5nKHNzcmMsIGV4dGVuc2lvbl9tYXAsIGZhbHNlKTsKK30KKwordGVtcGxhdGUgPD4K
K2NvbnN0IHN0ZDo6dmVjdG9yPExvZ2dlZFJ0cFBhY2tldEluY29taW5nPioKK1J0Y0V2ZW50TG9n
RW5jb2RlclRlc3Q6OkdldFJ0cFBhY2tldHNCeVNzcmMoCisgICAgY29uc3QgUGFyc2VkUnRjRXZl
bnRMb2dOZXcqIHBhcnNlZF9sb2csCisgICAgdWludDMyX3Qgc3NyYykgeworICBjb25zdCBhdXRv
JiBpbmNvbWluZ19zdHJlYW1zID0gcGFyc2VkX2xvZy0+aW5jb21pbmdfcnRwX3BhY2tldHNfYnlf
c3NyYygpOworICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IGluY29taW5nX3N0cmVhbXMpIHsK
KyAgICBpZiAoc3RyZWFtLnNzcmMgPT0gc3NyYykgeworICAgICAgcmV0dXJuICZzdHJlYW0uaW5j
b21pbmdfcGFja2V0czsKKyAgICB9CisgIH0KKyAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBs
YXRlIDw+Citjb25zdCBzdGQ6OnZlY3RvcjxMb2dnZWRSdHBQYWNrZXRPdXRnb2luZz4qCitSdGNF
dmVudExvZ0VuY29kZXJUZXN0OjpHZXRSdHBQYWNrZXRzQnlTc3JjKAorICAgIGNvbnN0IFBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3KiBwYXJzZWRfbG9nLAorICAgIHVpbnQzMl90IHNzcmMpIHsKKyAgY29u
c3QgYXV0byYgb3V0Z29pbmdfc3RyZWFtcyA9IHBhcnNlZF9sb2ctPm91dGdvaW5nX3J0cF9wYWNr
ZXRzX2J5X3NzcmMoKTsKKyAgZm9yIChjb25zdCBhdXRvJiBzdHJlYW0gOiBvdXRnb2luZ19zdHJl
YW1zKSB7CisgICAgaWYgKHN0cmVhbS5zc3JjID09IHNzcmMpIHsKKyAgICAgIHJldHVybiAmc3Ry
ZWFtLm91dGdvaW5nX3BhY2tldHM7CisgICAgfQorICB9CisgIHJldHVybiBudWxscHRyOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXZlbnRUeXBlLCB0eXBlbmFtZSBQYXJzZWRUeXBlPgordm9p
ZCBSdGNFdmVudExvZ0VuY29kZXJUZXN0OjpUZXN0UnRwUGFja2V0cygpIHsKKyAgLy8gU1NSQ3Mg
d2lsbCBiZSByYW5kb21seSBhc3NpZ25lZCBvdXQgb2YgdGhpcyBzbWFsbCBwb29sLCBzaWduaWZp
Y2FudCBvbmx5CisgIC8vIGluIHRoYXQgaXQgYWxzbyBjb3ZlcnMgc3VjaCBlZGdlIGNhc2VzIGFz
IFNTUkMgPSAwIGFuZCBTU1JDID0gMHhmZmZmZmZmZi4KKyAgLy8gVGhlIHBvb2wgaXMgaW50ZW50
aW9uYWxseSBzbWFsbCwgc28gYXMgdG8gcHJvZHVjZSBjb2xsaXNpb25zLgorICBjb25zdCBzdGQ6
OnZlY3Rvcjx1aW50MzJfdD4ga1NzcmNQb29sID0gezB4MDAwMDAwMDAsIDB4MTIzNDU2NzgsIDB4
YWJjZGVmMDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhm
ZmZmZmZmZiwgMHgyMDE3MTAyNCwgMHgxOTg0MDczMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDE5ODMxMjMwfTsKKworICAvLyBUT0RPKHRlcmVsaXVzKTog
VGVzdCBleHRlbnNpb25zIGZvciBsZWdhY3kgZW5jb2RpbmcsIHRvby4KKyAgUnRwSGVhZGVyRXh0
ZW5zaW9uTWFwIGV4dGVuc2lvbl9tYXA7CisgIGlmIChuZXdfZW5jb2RpbmdfKSB7CisgICAgZXh0
ZW5zaW9uX21hcCA9IGdlbl8uTmV3UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKHRydWUpOworICB9CisK
KyAgLy8gU2ltdWxhdGUgfGV2ZW50X2NvdW50X3wgUlRQIHBhY2tldHMsIHdpdGggU1NSQ3MgYXNz
aWduZWQgcmFuZG9tbHkKKyAgLy8gb3V0IG9mIHRoZSBzbWFsbCBwb29sIGFib3ZlLgorICBzdGQ6
Om1hcDx1aW50MzJfdCwgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV2ZW50VHlwZT4+PiBl
dmVudHNfYnlfc3NyYzsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsr
aSkgeworICAgIGNvbnN0IHVpbnQzMl90IHNzcmMgPSBrU3NyY1Bvb2xbcHJuZ18uUmFuZChrU3Ny
Y1Bvb2wuc2l6ZSgpIC0gMSldOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFR5cGU+IGV2ZW50
ID0KKyAgICAgICAgKGV2ZW50c19ieV9zc3JjW3NzcmNdLmVtcHR5KCkgfHwgIWZvcmNlX3JlcGVh
dGVkX2ZpZWxkc18pCisgICAgICAgICAgICA/IE5ld1J0cFBhY2tldDxFdmVudFR5cGU+KHNzcmMs
IGV4dGVuc2lvbl9tYXApCisgICAgICAgICAgICA6IGV2ZW50c19ieV9zc3JjW3NzcmNdWzBdLT5D
b3B5KCk7CisgICAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5Db3B5KCkpOworICAgIGV2ZW50
c19ieV9zc3JjW3NzcmNdLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoZXZlbnQpKTsKKyAgfQogCisg
IC8vIEVuY29kZSBhbmQgcGFyc2UuCiAgIHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBlbmNvZGVyXy0+
RW5jb2RlQmF0Y2goaGlzdG9yeV8uYmVnaW4oKSwgaGlzdG9yeV8uZW5kKCkpOwogICBBU1NFUlRf
VFJVRShwYXJzZWRfbG9nXy5QYXJzZVN0cmluZyhlbmNvZGVkKSk7Ci0gIGNvbnN0IGF1dG8mIGFu
YV9jb25maWdzID0gcGFyc2VkX2xvZ18uYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uX2V2ZW50cygp
OwotICBBU1NFUlRfRVEoYW5hX2NvbmZpZ3Muc2l6ZSgpLCAxdSk7CiAKLSAgRVhQRUNUX0VRKGFu
YV9jb25maWdzWzBdLnRpbWVzdGFtcF91cywgdGltZXN0YW1wX3VzKTsKLSAgRVhQRUNUX0VRKGFu
YV9jb25maWdzWzBdLmNvbmZpZywgb3JpZ2luYWxfcnVudGltZV9jb25maWcpOworICAvLyBGb3Ig
ZWFjaCBTU1JDLCBtYWtlIHN1cmUgdGhlIFJUUCBwYWNrZXRzIGFzc29jaWF0ZWQgd2l0aCBpdCB0
byBoYXZlIGJlZW4KKyAgLy8gY29ycmVjdGx5IGVuY29kZWQgYW5kIHBhcnNlZC4KKyAgZm9yIChh
dXRvIGl0ID0gZXZlbnRzX2J5X3NzcmMuYmVnaW4oKTsgaXQgIT0gZXZlbnRzX2J5X3NzcmMuZW5k
KCk7ICsraXQpIHsKKyAgICBjb25zdCB1aW50MzJfdCBzc3JjID0gaXQtPmZpcnN0OworICAgIGNv
bnN0IGF1dG8mIG9yaWdpbmFsX3BhY2tldHMgPSBpdC0+c2Vjb25kOworICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPFBhcnNlZFR5cGU+KiBwYXJzZWRfcnRwX3BhY2tldHMgPQorICAgICAgICBHZXRSdHBQ
YWNrZXRzQnlTc3JjPFBhcnNlZFR5cGU+KCZwYXJzZWRfbG9nXywgc3NyYyk7CisgICAgQVNTRVJU
X05FKHBhcnNlZF9ydHBfcGFja2V0cywgbnVsbHB0cik7CisgICAgQVNTRVJUX0VRKG9yaWdpbmFs
X3BhY2tldHMuc2l6ZSgpLCBwYXJzZWRfcnRwX3BhY2tldHMtPnNpemUoKSk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvcmlnaW5hbF9wYWNrZXRzLnNpemUoKTsgKytpKSB7CisgICAgICB2
ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkUnRwUGFja2V0PEV2ZW50VHlwZSwgUGFyc2VkVHlwZT4oCisg
ICAgICAgICAgKm9yaWdpbmFsX3BhY2tldHNbaV0sICgqcGFyc2VkX3J0cF9wYWNrZXRzKVtpXSk7
CisgICAgfQorICB9Cit9CisKK1RFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVu
dEFsclN0YXRlKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEFsclN0
YXRlPj4gZXZlbnRzKGV2ZW50X2NvdW50Xyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZl
bnRfY291bnRfOyArK2kpIHsKKyAgICBldmVudHNbaV0gPSAoaSA9PSAwIHx8ICFmb3JjZV9yZXBl
YXRlZF9maWVsZHNfKSA/IGdlbl8uTmV3QWxyU3RhdGUoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZXZlbnRzWzBdLT5Db3B5KCk7CisgICAg
aGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50c1tpXS0+Q29weSgpKTsKKyAgfQorCisgIHN0ZDo6c3Ry
aW5nIGVuY29kZWQgPSBlbmNvZGVyXy0+RW5jb2RlQmF0Y2goaGlzdG9yeV8uYmVnaW4oKSwgaGlz
dG9yeV8uZW5kKCkpOworICBBU1NFUlRfVFJVRShwYXJzZWRfbG9nXy5QYXJzZVN0cmluZyhlbmNv
ZGVkKSk7CisgIGNvbnN0IGF1dG8mIGFscl9zdGF0ZV9ldmVudHMgPSBwYXJzZWRfbG9nXy5hbHJf
c3RhdGVfZXZlbnRzKCk7CisKKyAgQVNTRVJUX0VRKGFscl9zdGF0ZV9ldmVudHMuc2l6ZSgpLCBl
dmVudF9jb3VudF8pOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytp
KSB7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEFsclN0YXRlRXZlbnQoKmV2ZW50c1tpXSwg
YWxyX3N0YXRlX2V2ZW50c1tpXSk7CisgIH0KIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2Rl
clRlc3QsIFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbkJpdHJhdGUpIHsKLSAgYXV0byBy
dW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25m
aWc+KCk7Ci0gIGNvbnN0IGludCBiaXRyYXRlX2JwcyA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PGludD4o
Ci0gICAgICBwcm5nXy5SYW5kKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
KSk7Ci0gIHJ1bnRpbWVfY29uZmlnLT5iaXRyYXRlX2JwcyA9IGJpdHJhdGVfYnBzOwotICBUZXN0
UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykp
OworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFw
dGF0aW9uPj4gZXZlbnRzKAorICAgICAgZXZlbnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIGlmIChpID09IDAgfHwgIWZvcmNlX3Jl
cGVhdGVkX2ZpZWxkc18pIHsKKyAgICAgIGF1dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjptYWtl
X3VuaXF1ZTxBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPigpOworICAgICAgY29uc3QgaW50IGJp
dHJhdGVfYnBzID0gcnRjOjpjaGVja2VkX2Nhc3Q8aW50PigKKyAgICAgICAgICBwcm5nXy5SYW5k
KDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSk7CisgICAgICBydW50aW1l
X2NvbmZpZy0+Yml0cmF0ZV9icHMgPSBiaXRyYXRlX2JwczsKKyAgICAgIGV2ZW50c1tpXSA9IGFi
c2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4oCisgICAgICAg
ICAgc3RkOjptb3ZlKHJ1bnRpbWVfY29uZmlnKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGV2ZW50
c1tpXSA9IGV2ZW50c1swXS0+Q29weSgpOworICAgIH0KKyAgfQorICBUZXN0UnRjRXZlbnRBdWRp
b05ldHdvcmtBZGFwdGF0aW9uKGV2ZW50cyk7CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29k
ZXJUZXN0LCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb25GcmFtZUxlbmd0aCkgewotICBh
dXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyUnVudGlt
ZUNvbmZpZz4oKTsKLSAgY29uc3QgaW50IGZyYW1lX2xlbmd0aF9tcyA9IHBybmdfLlJhbmQoMSwg
MTAwMCk7Ci0gIHJ1bnRpbWVfY29uZmlnLT5mcmFtZV9sZW5ndGhfbXMgPSBmcmFtZV9sZW5ndGhf
bXM7Ci0gIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oc3RkOjptb3ZlKHJ1bnRp
bWVfY29uZmlnKSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlv
TmV0d29ya0FkYXB0YXRpb24+PiBldmVudHMoCisgICAgICBldmVudF9jb3VudF8pOworICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytpKSB7CisgICAgaWYgKGkgPT0gMCB8
fCAhZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykgeworICAgICAgYXV0byBydW50aW1lX2NvbmZpZyA9
IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+KCk7CisgICAgICBj
b25zdCBpbnQgZnJhbWVfbGVuZ3RoX21zID0gcHJuZ18uUmFuZCgxLCAxMDAwKTsKKyAgICAgIHJ1
bnRpbWVfY29uZmlnLT5mcmFtZV9sZW5ndGhfbXMgPSBmcmFtZV9sZW5ndGhfbXM7CisgICAgICBl
dmVudHNbaV0gPSBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRp
b24+KAorICAgICAgICAgIHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOworICAgIH0gZWxzZSB7
CisgICAgICBldmVudHNbaV0gPSBldmVudHNbMF0tPkNvcHkoKTsKKyAgICB9CisgIH0KKyAgVGVz
dFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihldmVudHMpOwogfQogCiBURVNUX1AoUnRj
RXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uUGFja2V0
TG9zcykgewotICAvLyBUbyBzaW1wbGlmeSB0aGUgdGVzdCwgd2UganVzdCBjaGVjayBwb3dlcnMg
b2YgdHdvLgotICBjb25zdCBmbG9hdCBwbHIgPSBzdGQ6OnBvdygwLjVmLCBwcm5nXy5SYW5kKDEs
IDgpKTsKLSAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5j
b2RlclJ1bnRpbWVDb25maWc+KCk7Ci0gIHJ1bnRpbWVfY29uZmlnLT51cGxpbmtfcGFja2V0X2xv
c3NfZnJhY3Rpb24gPSBwbHI7Ci0gIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24o
c3RkOjptb3ZlKHJ1bnRpbWVfY29uZmlnKSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24+PiBldmVudHMoCisgICAgICBldmVudF9j
b3VudF8pOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytpKSB7Cisg
ICAgaWYgKGkgPT0gMCB8fCAhZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykgeworICAgICAgLy8gVG8g
c2ltcGxpZnkgdGhlIHRlc3QsIHdlIGp1c3QgY2hlY2sgcG93ZXJzIG9mIHR3by4KKyAgICAgIGNv
bnN0IGZsb2F0IHBsciA9IHN0ZDo6cG93KDAuNWYsIHBybmdfLlJhbmQoMSwgOCkpOworICAgICAg
YXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRp
bWVDb25maWc+KCk7CisgICAgICBydW50aW1lX2NvbmZpZy0+dXBsaW5rX3BhY2tldF9sb3NzX2Zy
YWN0aW9uID0gcGxyOworICAgICAgZXZlbnRzW2ldID0gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZl
bnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPigKKyAgICAgICAgICBzdGQ6Om1vdmUocnVudGltZV9j
b25maWcpKTsKKyAgICB9IGVsc2UgeworICAgICAgZXZlbnRzW2ldID0gZXZlbnRzWzBdLT5Db3B5
KCk7CisgICAgfQorICB9CisgIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oZXZl
bnRzKTsKIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QXVkaW9O
ZXR3b3JrQWRhcHRhdGlvbkZlYykgewotICAvLyBUaGUgdGVzdCBtaWdodCBiZSB0cml2aWFsbHkg
cGFzc2luZyBmb3Igb25lIG9mIHRoZSB0d28gYm9vbGVhbiB2YWx1ZXMsIHNvCi0gIC8vIGZvciBz
YWZldHkncyBzYWtlLCB3ZSB0ZXN0IGJvdGguCi0gIGZvciAoYm9vbCBmZWNfZW5hYmxlZCA6IHtm
YWxzZSwgdHJ1ZX0pIHsKLSAgICBhdXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6bWFrZV91bmlx
dWU8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZz4oKTsKLSAgICBydW50aW1lX2NvbmZpZy0+ZW5h
YmxlX2ZlYyA9IGZlY19lbmFibGVkOwotICAgIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0
YXRpb24oc3RkOjptb3ZlKHJ1bnRpbWVfY29uZmlnKSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24+PiBldmVudHMoCisgICAgICBl
dmVudF9jb3VudF8pOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytp
KSB7CisgICAgaWYgKGkgPT0gMCB8fCAhZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykgeworICAgICAg
YXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRp
bWVDb25maWc+KCk7CisgICAgICBydW50aW1lX2NvbmZpZy0+ZW5hYmxlX2ZlYyA9IHBybmdfLlJh
bmQ8Ym9vbD4oKTsKKyAgICAgIGV2ZW50c1tpXSA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50
QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4oCisgICAgICAgICAgc3RkOjptb3ZlKHJ1bnRpbWVfY29u
ZmlnKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGV2ZW50c1tpXSA9IGV2ZW50c1swXS0+Q29weSgp
OworICAgIH0KICAgfQorICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKGV2ZW50
cyk7CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEF1ZGlvTmV0
d29ya0FkYXB0YXRpb25EdHgpIHsKLSAgLy8gVGhlIHRlc3QgbWlnaHQgYmUgdHJpdmlhbGx5IHBh
c3NpbmcgZm9yIG9uZSBvZiB0aGUgdHdvIGJvb2xlYW4gdmFsdWVzLCBzbwotICAvLyBmb3Igc2Fm
ZXR5J3Mgc2FrZSwgd2UgdGVzdCBib3RoLgotICBmb3IgKGJvb2wgZHR4X2VuYWJsZWQgOiB7ZmFs
c2UsIHRydWV9KSB7Ci0gICAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVl
PEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+KCk7Ci0gICAgcnVudGltZV9jb25maWctPmVuYWJs
ZV9kdHggPSBkdHhfZW5hYmxlZDsKLSAgICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0
aW9uKHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPj4gZXZlbnRzKAorICAgICAgZXZl
bnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkg
eworICAgIGlmIChpID09IDAgfHwgIWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18pIHsKKyAgICAgIGF1
dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJSdW50aW1l
Q29uZmlnPigpOworICAgICAgcnVudGltZV9jb25maWctPmVuYWJsZV9kdHggPSBwcm5nXy5SYW5k
PGJvb2w+KCk7CisgICAgICBldmVudHNbaV0gPSBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudEF1
ZGlvTmV0d29ya0FkYXB0YXRpb24+KAorICAgICAgICAgIHN0ZDo6bW92ZShydW50aW1lX2NvbmZp
ZykpOworICAgIH0gZWxzZSB7CisgICAgICBldmVudHNbaV0gPSBldmVudHNbMF0tPkNvcHkoKTsK
KyAgICB9CiAgIH0KKyAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihldmVudHMp
OwogfQogCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRBdWRpb05ldHdv
cmtBZGFwdGF0aW9uQ2hhbm5lbHMpIHsKLSAgLy8gVGhlIHRlc3QgbWlnaHQgYmUgdHJpdmlhbGx5
IHBhc3NpbmcgZm9yIG9uZSBvZiB0aGUgdHdvIHBvc3NpYmxlIHZhbHVlcywgc28KLSAgLy8gZm9y
IHNhZmV0eSdzIHNha2UsIHdlIHRlc3QgYm90aC4KLSAgZm9yIChzaXplX3QgY2hhbm5lbHMgOiB7
MSwgMn0pIHsKLSAgICBhdXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6bWFrZV91bmlxdWU8QXVk
aW9FbmNvZGVyUnVudGltZUNvbmZpZz4oKTsKLSAgICBydW50aW1lX2NvbmZpZy0+bnVtX2NoYW5u
ZWxzID0gY2hhbm5lbHM7Ci0gICAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihz
dGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4+IGV2ZW50cygKKyAgICAgIGV2ZW50X2Nv
dW50Xyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAg
ICBpZiAoaSA9PSAwIHx8ICFmb3JjZV9yZXBlYXRlZF9maWVsZHNfKSB7CisgICAgICBhdXRvIHJ1
bnRpbWVfY29uZmlnID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZp
Zz4oKTsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLT5udW1fY2hhbm5lbHMgPSBwcm5nXy5SYW5kKDEs
IDIpOworICAgICAgZXZlbnRzW2ldID0gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRpb05l
dHdvcmtBZGFwdGF0aW9uPigKKyAgICAgICAgICBzdGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsK
KyAgICB9IGVsc2UgeworICAgICAgZXZlbnRzW2ldID0gZXZlbnRzWzBdLT5Db3B5KCk7CisgICAg
fQogICB9CisgIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oZXZlbnRzKTsKIH0K
IAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRh
cHRhdGlvbkFsbCkgewotICBjb25zdCBpbnQgYml0cmF0ZV9icHMgPSBydGM6OmNoZWNrZWRfY2Fz
dDxpbnQ+KAotICAgICAgcHJuZ18uUmFuZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSkpOwotICBjb25zdCBpbnQgZnJhbWVfbGVuZ3RoX21zID0gcHJuZ18uUmFuZCgxLCAx
MDAwKTsKLSAgY29uc3QgZmxvYXQgcGxyID0gc3RkOjpwb3coMC41ZiwgcHJuZ18uUmFuZCgxLCA4
KSk7Ci0gIGZvciAoYm9vbCBmZWNfZW5hYmxlZCA6IHtmYWxzZSwgdHJ1ZX0pIHsKLSAgICBmb3Ig
KGJvb2wgZHR4X2VuYWJsZWQgOiB7ZmFsc2UsIHRydWV9KSB7Ci0gICAgICBmb3IgKHNpemVfdCBj
aGFubmVscyA6IHsxLCAyfSkgewotICAgICAgICBhdXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6
bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZz4oKTsKLSAgICAgICAgcnVudGlt
ZV9jb25maWctPmJpdHJhdGVfYnBzID0gYml0cmF0ZV9icHM7Ci0gICAgICAgIHJ1bnRpbWVfY29u
ZmlnLT5mcmFtZV9sZW5ndGhfbXMgPSBmcmFtZV9sZW5ndGhfbXM7Ci0gICAgICAgIHJ1bnRpbWVf
Y29uZmlnLT51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24gPSBwbHI7Ci0gICAgICAgIHJ1bnRp
bWVfY29uZmlnLT5lbmFibGVfZmVjID0gZmVjX2VuYWJsZWQ7Ci0gICAgICAgIHJ1bnRpbWVfY29u
ZmlnLT5lbmFibGVfZHR4ID0gZHR4X2VuYWJsZWQ7Ci0gICAgICAgIHJ1bnRpbWVfY29uZmlnLT5u
dW1fY2hhbm5lbHMgPSBjaGFubmVsczsKLQotICAgICAgICBUZXN0UnRjRXZlbnRBdWRpb05ldHdv
cmtBZGFwdGF0aW9uKHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOwotICAgICAgfQorICBzdGQ6
OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPj4g
ZXZlbnRzKAorICAgICAgZXZlbnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
dmVudF9jb3VudF87ICsraSkgeworICAgIGlmIChpID09IDAgfHwgIWZvcmNlX3JlcGVhdGVkX2Zp
ZWxkc18pIHsKKyAgICAgIGF1dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxB
dWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPigpOworICAgICAgcnVudGltZV9jb25maWctPmJpdHJh
dGVfYnBzID0gcnRjOjpjaGVja2VkX2Nhc3Q8aW50PigKKyAgICAgICAgICBwcm5nXy5SYW5kKDAs
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSk7CisgICAgICBydW50aW1lX2Nv
bmZpZy0+ZnJhbWVfbGVuZ3RoX21zID0gcHJuZ18uUmFuZCgxLCAxMDAwKTsKKyAgICAgIHJ1bnRp
bWVfY29uZmlnLT51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24gPQorICAgICAgICAgIHN0ZDo6
cG93KDAuNWYsIHBybmdfLlJhbmQoMSwgOCkpOworICAgICAgcnVudGltZV9jb25maWctPmVuYWJs
ZV9mZWMgPSBwcm5nXy5SYW5kPGJvb2w+KCk7CisgICAgICBydW50aW1lX2NvbmZpZy0+ZW5hYmxl
X2R0eCA9IHBybmdfLlJhbmQ8Ym9vbD4oKTsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLT5udW1fY2hh
bm5lbHMgPSBwcm5nXy5SYW5kKDEsIDIpOworICAgICAgZXZlbnRzW2ldID0gYWJzbDo6bWFrZV91
bmlxdWU8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPigKKyAgICAgICAgICBzdGQ6Om1v
dmUocnVudGltZV9jb25maWcpKTsKKyAgICB9IGVsc2UgeworICAgICAgZXZlbnRzW2ldID0gZXZl
bnRzWzBdLT5Db3B5KCk7CiAgICAgfQogICB9CisgIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0Fk
YXB0YXRpb24oZXZlbnRzKTsKIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0
Y0V2ZW50QXVkaW9QbGF5b3V0KSB7Ci0gIHVpbnQzMl90IHNzcmMgPSBwcm5nXy5SYW5kPHVpbnQz
Ml90PigpOwotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb1BsYXlvdXQ+IGV2ZW50ID0g
Z2VuXy5OZXdBdWRpb1BsYXlvdXQoc3NyYyk7Ci0gIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudC0+
Q29weSgpKTsKKyAgLy8gU1NSQ3Mgd2lsbCBiZSByYW5kb21seSBhc3NpZ25lZCBvdXQgb2YgdGhp
cyBzbWFsbCBwb29sLCBzaWduaWZpY2FudCBvbmx5CisgIC8vIGluIHRoYXQgaXQgYWxzbyBjb3Zl
cnMgc3VjaCBlZGdlIGNhc2VzIGFzIFNTUkMgPSAwIGFuZCBTU1JDID0gMHhmZmZmZmZmZi4KKyAg
Ly8gVGhlIHBvb2wgaXMgaW50ZW50aW9uYWxseSBzbWFsbCwgc28gYXMgdG8gcHJvZHVjZSBjb2xs
aXNpb25zLgorICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4ga1NzcmNQb29sID0gezB4MDAw
MDAwMDAsIDB4MTIzNDU2NzgsIDB4YWJjZGVmMDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHhmZmZmZmZmZiwgMHgyMDE3MTAyNCwgMHgxOTg0MDczMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5ODMxMjMwfTsKKwor
ICBzdGQ6Om1hcDx1aW50MzJfdCwgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
QXVkaW9QbGF5b3V0Pj4+CisgICAgICBvcmlnaW5hbF9ldmVudHNfYnlfc3NyYzsKKyAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIGNvbnN0IHVpbnQzMl90
IHNzcmMgPSBrU3NyY1Bvb2xbcHJuZ18uUmFuZChrU3NyY1Bvb2wuc2l6ZSgpIC0gMSldOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvUGxheW91dD4gZXZlbnQgPQorICAgICAgICAo
b3JpZ2luYWxfZXZlbnRzX2J5X3NzcmNbc3NyY10uZW1wdHkoKSB8fCAhZm9yY2VfcmVwZWF0ZWRf
ZmllbGRzXykKKyAgICAgICAgICAgID8gZ2VuXy5OZXdBdWRpb1BsYXlvdXQoc3NyYykKKyAgICAg
ICAgICAgIDogb3JpZ2luYWxfZXZlbnRzX2J5X3NzcmNbc3NyY11bMF0tPkNvcHkoKTsKKyAgICBo
aXN0b3J5Xy5wdXNoX2JhY2soZXZlbnQtPkNvcHkoKSk7CisgICAgb3JpZ2luYWxfZXZlbnRzX2J5
X3NzcmNbc3NyY10ucHVzaF9iYWNrKHN0ZDo6bW92ZShldmVudCkpOworICB9CiAKICAgc3RkOjpz
dHJpbmcgZW5jb2RlZCA9IGVuY29kZXJfLT5FbmNvZGVCYXRjaChoaXN0b3J5Xy5iZWdpbigpLCBo
aXN0b3J5Xy5lbmQoKSk7CiAgIEFTU0VSVF9UUlVFKHBhcnNlZF9sb2dfLlBhcnNlU3RyaW5nKGVu
Y29kZWQpKTsKIAotICBjb25zdCBhdXRvJiBwbGF5b3V0X2V2ZW50cyA9IHBhcnNlZF9sb2dfLmF1
ZGlvX3BsYXlvdXRfZXZlbnRzKCk7Ci0gIEFTU0VSVF9FUShwbGF5b3V0X2V2ZW50cy5zaXplKCks
IDF1KTsKLSAgY29uc3QgYXV0byBwbGF5b3V0X3N0cmVhbSA9IHBsYXlvdXRfZXZlbnRzLmZpbmQo
c3NyYyk7Ci0gIEFTU0VSVF9UUlVFKHBsYXlvdXRfc3RyZWFtICE9IHBsYXlvdXRfZXZlbnRzLmVu
ZCgpKTsKLSAgQVNTRVJUX0VRKHBsYXlvdXRfc3RyZWFtLT5zZWNvbmQuc2l6ZSgpLCAxdSk7Ci0g
IExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50IHBsYXlvdXRfZXZlbnQgPSBwbGF5b3V0X3N0cmVhbS0+
c2Vjb25kWzBdOwotICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRBdWRpb1BsYXlvdXRF
dmVudCgqZXZlbnQsIHBsYXlvdXRfZXZlbnQpKTsKKyAgY29uc3QgYXV0byYgcGFyc2VkX3BsYXlv
dXRfZXZlbnRzX2J5X3NzcmMgPQorICAgICAgcGFyc2VkX2xvZ18uYXVkaW9fcGxheW91dF9ldmVu
dHMoKTsKKworICAvLyBTYW1lIG51bWJlciBvZiBkaXN0aW5jdCBTU1JDcy4KKyAgQVNTRVJUX0VR
KHBhcnNlZF9wbGF5b3V0X2V2ZW50c19ieV9zc3JjLnNpemUoKSwKKyAgICAgICAgICAgIG9yaWdp
bmFsX2V2ZW50c19ieV9zc3JjLnNpemUoKSk7CisKKyAgZm9yIChhdXRvJiBvcmlnaW5hbF9ldmVu
dF9pdCA6IG9yaWdpbmFsX2V2ZW50c19ieV9zc3JjKSB7CisgICAgY29uc3QgdWludDMyX3Qgc3Ny
YyA9IG9yaWdpbmFsX2V2ZW50X2l0LmZpcnN0OworICAgIGNvbnN0IGF1dG8mIG9yaWdpbmFsX3Bs
YXlvdXRfZXZlbnRzID0gb3JpZ2luYWxfZXZlbnRfaXQuc2Vjb25kOworCisgICAgY29uc3QgYXV0
byYgcGFyc2VkX2V2ZW50X2l0ID0gcGFyc2VkX3BsYXlvdXRfZXZlbnRzX2J5X3NzcmMuZmluZChz
c3JjKTsKKyAgICBBU1NFUlRfVFJVRShwYXJzZWRfZXZlbnRfaXQgIT0gcGFyc2VkX3BsYXlvdXRf
ZXZlbnRzX2J5X3NzcmMuZW5kKCkpOworICAgIGNvbnN0IGF1dG8mIHBhcnNlZF9wbGF5b3V0X2V2
ZW50cyA9IHBhcnNlZF9ldmVudF9pdC0+c2Vjb25kOworCisgICAgLy8gU2FtZSBudW1iZXIgcGxh
eW91dCBldmVudHMgZm9yIHRoZSBTU1JDIHVuZGVyIGV4YW1pbmF0aW9uLgorICAgIEFTU0VSVF9F
UShvcmlnaW5hbF9wbGF5b3V0X2V2ZW50cy5zaXplKCksIHBhcnNlZF9wbGF5b3V0X2V2ZW50cy5z
aXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcmlnaW5hbF9wbGF5b3V0X2V2
ZW50cy5zaXplKCk7ICsraSkgeworICAgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEF1ZGlvUGxh
eW91dEV2ZW50KCpvcmlnaW5hbF9wbGF5b3V0X2V2ZW50c1tpXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfcGxheW91dF9ldmVudHNbaV0pOwor
ICAgIH0KKyAgfQogfQogCisvLyBUT0RPKGVsYWRhbG9uL3RlcmVsaXVzKTogVGVzdCB3aXRoIG11
bHRpcGxlIGV2ZW50cyBpbiB0aGUgYmF0Y2guCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVz
dCwgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWcpIHsKICAgdWludDMyX3Qgc3NyYyA9
IHBybmdfLlJhbmQ8dWludDMyX3Q+KCk7CiAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcCBleHRlbnNp
b25zID0gZ2VuXy5OZXdSdHBIZWFkZXJFeHRlbnNpb25NYXAoKTsKQEAgLTIwMSw5ICs0MDQsMTAg
QEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3Ry
ZWFtQ29uZmlnKSB7CiAgIGNvbnN0IGF1dG8mIGF1ZGlvX3JlY3ZfY29uZmlncyA9IHBhcnNlZF9s
b2dfLmF1ZGlvX3JlY3ZfY29uZmlncygpOwogCiAgIEFTU0VSVF9FUShhdWRpb19yZWN2X2NvbmZp
Z3Muc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEF1ZGlvUmVj
dkNvbmZpZygqZXZlbnQsIGF1ZGlvX3JlY3ZfY29uZmlnc1swXSkpOworICB2ZXJpZmllcl8uVmVy
aWZ5TG9nZ2VkQXVkaW9SZWN2Q29uZmlnKCpldmVudCwgYXVkaW9fcmVjdl9jb25maWdzWzBdKTsK
IH0KIAorLy8gVE9ETyhlbGFkYWxvbi90ZXJlbGl1cyk6IFRlc3Qgd2l0aCBtdWx0aXBsZSBldmVu
dHMgaW4gdGhlIGJhdGNoLgogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50
QXVkaW9TZW5kU3RyZWFtQ29uZmlnKSB7CiAgIHVpbnQzMl90IHNzcmMgPSBwcm5nXy5SYW5kPHVp
bnQzMl90PigpOwogICBSdHBIZWFkZXJFeHRlbnNpb25NYXAgZXh0ZW5zaW9ucyA9IGdlbl8uTmV3
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKCk7CkBAIC0yMTYsMzcgKzQyMCw1MSBAQCBURVNUX1AoUnRj
RXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcpIHsKICAg
Y29uc3QgYXV0byYgYXVkaW9fc2VuZF9jb25maWdzID0gcGFyc2VkX2xvZ18uYXVkaW9fc2VuZF9j
b25maWdzKCk7CiAKICAgQVNTRVJUX0VRKGF1ZGlvX3NlbmRfY29uZmlncy5zaXplKCksIDF1KTsK
LSAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQXVkaW9TZW5kQ29uZmlnKCpldmVudCwg
YXVkaW9fc2VuZF9jb25maWdzWzBdKSk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRBdWRpb1Nl
bmRDb25maWcoKmV2ZW50LCBhdWRpb19zZW5kX2NvbmZpZ3NbMF0pOwogfQogCiBURVNUX1AoUnRj
RXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkKSB7Ci0gIHN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQ+IGV2ZW50ID0KLSAgICAg
IGdlbl8uTmV3QndlVXBkYXRlRGVsYXlCYXNlZCgpOwotICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZl
bnQtPkNvcHkoKSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEJ3ZVVw
ZGF0ZURlbGF5QmFzZWQ+PiBldmVudHMoCisgICAgICBldmVudF9jb3VudF8pOworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytpKSB7CisgICAgZXZlbnRzW2ldID0gKGkg
PT0gMCB8fCAhZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykKKyAgICAgICAgICAgICAgICAgICAgPyBn
ZW5fLk5ld0J3ZVVwZGF0ZURlbGF5QmFzZWQoKQorICAgICAgICAgICAgICAgICAgICA6IGV2ZW50
c1swXS0+Q29weSgpOworICAgIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudHNbaV0tPkNvcHkoKSk7
CisgIH0KIAogICBzdGQ6OnN0cmluZyBlbmNvZGVkID0gZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhp
c3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVuZCgpKTsKICAgQVNTRVJUX1RSVUUocGFyc2VkX2xv
Z18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOworCiAgIGNvbnN0IGF1dG8mIGJ3ZV9kZWxheV91cGRh
dGVzID0gcGFyc2VkX2xvZ18uYndlX2RlbGF5X3VwZGF0ZXMoKTsKKyAgQVNTRVJUX0VRKGJ3ZV9k
ZWxheV91cGRhdGVzLnNpemUoKSwgZXZlbnRfY291bnRfKTsKIAotICBBU1NFUlRfRVEoYndlX2Rl
bGF5X3VwZGF0ZXMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgdGVzdDo6VmVy
aWZ5TG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSgqZXZlbnQsIGJ3ZV9kZWxheV91cGRhdGVzWzBd
KSk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICB2
ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSgqZXZlbnRzW2ldLCBid2Vf
ZGVsYXlfdXBkYXRlc1tpXSk7CisgIH0KIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRl
c3QsIFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZD4gZXZlbnQgPQotICAgICAgZ2VuXy5OZXdCd2VVcGRhdGVM
b3NzQmFzZWQoKTsKLSAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5Db3B5KCkpOworICBzdGQ6
OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQ+PiBldmVu
dHMoZXZlbnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87
ICsraSkgeworICAgIGV2ZW50c1tpXSA9IChpID09IDAgfHwgIWZvcmNlX3JlcGVhdGVkX2ZpZWxk
c18pCisgICAgICAgICAgICAgICAgICAgID8gZ2VuXy5OZXdCd2VVcGRhdGVMb3NzQmFzZWQoKQor
ICAgICAgICAgICAgICAgICAgICA6IGV2ZW50c1swXS0+Q29weSgpOworICAgIGhpc3RvcnlfLnB1
c2hfYmFjayhldmVudHNbaV0tPkNvcHkoKSk7CisgIH0KIAogICBzdGQ6OnN0cmluZyBlbmNvZGVk
ID0gZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhpc3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVuZCgp
KTsKICAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOworCiAg
IGNvbnN0IGF1dG8mIGJ3ZV9sb3NzX3VwZGF0ZXMgPSBwYXJzZWRfbG9nXy5id2VfbG9zc191cGRh
dGVzKCk7CisgIEFTU0VSVF9FUShid2VfbG9zc191cGRhdGVzLnNpemUoKSwgZXZlbnRfY291bnRf
KTsKIAotICBBU1NFUlRfRVEoYndlX2xvc3NfdXBkYXRlcy5zaXplKCksIDF1KTsKLSAgRVhQRUNU
X1RSVUUoCi0gICAgICB0ZXN0OjpWZXJpZnlMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUoKmV2ZW50
LCBid2VfbG9zc191cGRhdGVzWzBdKSk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRf
Y291bnRfOyArK2kpIHsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlTG9zc0Jhc2VkVXBk
YXRlKCpldmVudHNbaV0sIGJ3ZV9sb3NzX3VwZGF0ZXNbaV0pOworICB9CiB9CiAKKy8vIFRPRE8o
ZWxhZGFsb24vdGVyZWxpdXMpOiBUZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRzIGluIHRoZSBiYXRj
aC4KIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEljZUNhbmRpZGF0ZVBh
aXJDb25maWcpIHsKICAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNv
bmZpZz4gZXZlbnQgPQogICAgICAgZ2VuXy5OZXdJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKCk7CkBA
IC0yNTgsMTAgKzQ3NiwxMSBAQCBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZl
bnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKSB7CiAgICAgICBwYXJzZWRfbG9nXy5pY2VfY2FuZGlk
YXRlX3BhaXJfY29uZmlncygpOwogCiAgIEFTU0VSVF9FUShpY2VfY2FuZGlkYXRlX3BhaXJfY29u
Zmlncy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkSWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZygKLSAgICAgICpldmVudCwgaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZp
Z3NbMF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWco
KmV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
Y2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnc1swXSk7CiB9CiAKKy8vIFRPRE8oZWxhZGFsb24vdGVy
ZWxpdXMpOiBUZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRzIGluIHRoZSBiYXRjaC4KIFRFU1RfUChS
dGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXIpIHsKICAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcj4gZXZlbnQgPSBnZW5fLk5ld0lj
ZUNhbmRpZGF0ZVBhaXIoKTsKICAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5Db3B5KCkpOwpA
QCAtMjcyLDE4ICs0OTEsMjEgQEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2
ZW50SWNlQ2FuZGlkYXRlUGFpcikgewogICAgICAgcGFyc2VkX2xvZ18uaWNlX2NhbmRpZGF0ZV9w
YWlyX2V2ZW50cygpOwogCiAgIEFTU0VSVF9FUShpY2VfY2FuZGlkYXRlX3BhaXJfZXZlbnRzLnNp
emUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQ
YWlyRXZlbnQoCi0gICAgICAqZXZlbnQsIGljZV9jYW5kaWRhdGVfcGFpcl9ldmVudHNbMF0pKTsK
KyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCgqZXZlbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNlX2NhbmRpZGF0
ZV9wYWlyX2V2ZW50c1swXSk7CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBS
dGNFdmVudExvZ2dpbmdTdGFydGVkKSB7CiAgIGNvbnN0IGludDY0X3QgdGltZXN0YW1wX3VzID0g
cnRjOjpUaW1lTWljcm9zKCk7CisgIGNvbnN0IGludDY0X3QgdXRjX3RpbWVfdXMgPSBydGM6OlRp
bWVVVENNaWNyb3MoKTsKIAotICBBU1NFUlRfVFJVRShwYXJzZWRfbG9nXy5QYXJzZVN0cmluZyhl
bmNvZGVyXy0+RW5jb2RlTG9nU3RhcnQodGltZXN0YW1wX3VzKSkpOworICBBU1NFUlRfVFJVRShw
YXJzZWRfbG9nXy5QYXJzZVN0cmluZygKKyAgICAgIGVuY29kZXJfLT5FbmNvZGVMb2dTdGFydCh0
aW1lc3RhbXBfdXMsIHV0Y190aW1lX3VzKSkpOwogICBjb25zdCBhdXRvJiBzdGFydF9sb2dfZXZl
bnRzID0gcGFyc2VkX2xvZ18uc3RhcnRfbG9nX2V2ZW50cygpOwogCiAgIEFTU0VSVF9FUShzdGFy
dF9sb2dfZXZlbnRzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfRVEoc3RhcnRfbG9nX2V2ZW50c1sw
XS50aW1lc3RhbXBfdXMsIHRpbWVzdGFtcF91cyk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRT
dGFydEV2ZW50KHRpbWVzdGFtcF91cywgdXRjX3RpbWVfdXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXJ0X2xvZ19ldmVudHNbMF0pOwogfQogCiBURVNUX1AoUnRjRXZl
bnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRMb2dnaW5nU3RvcHBlZCkgewpAQCAtMjkzLDkgKzUx
NSwxMCBAQCBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRMb2dnaW5nU3Rv
cHBlZCkgewogICBjb25zdCBhdXRvJiBzdG9wX2xvZ19ldmVudHMgPSBwYXJzZWRfbG9nXy5zdG9w
X2xvZ19ldmVudHMoKTsKIAogICBBU1NFUlRfRVEoc3RvcF9sb2dfZXZlbnRzLnNpemUoKSwgMXUp
OwotICBFWFBFQ1RfRVEoc3RvcF9sb2dfZXZlbnRzWzBdLnRpbWVzdGFtcF91cywgdGltZXN0YW1w
X3VzKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFN0b3BFdmVudCh0aW1lc3RhbXBfdXMsIHN0
b3BfbG9nX2V2ZW50c1swXSk7CiB9CiAKKy8vIFRPRE8oZWxhZGFsb24vdGVyZWxpdXMpOiBUZXN0
IHdpdGggbXVsdGlwbGUgZXZlbnRzIGluIHRoZSBiYXRjaC4KIFRFU1RfUChSdGNFdmVudExvZ0Vu
Y29kZXJUZXN0LCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQpIHsKICAgc3RkOjp1bmlxdWVf
cHRyPFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZD4gZXZlbnQgPQogICAgICAgZ2VuXy5OZXdQ
cm9iZUNsdXN0ZXJDcmVhdGVkKCk7CkBAIC0zMDcsMTAgKzUzMCwxMSBAQCBURVNUX1AoUnRjRXZl
bnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkKSB7CiAgICAgICBw
YXJzZWRfbG9nXy5id2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50cygpOwogCiAgIEFTU0VS
VF9FUShid2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50cy5zaXplKCksIDF1KTsKLSAgRVhQ
RUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50KAot
ICAgICAgKmV2ZW50LCBid2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50c1swXSkpOworICB2
ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50KAorICAgICAg
KmV2ZW50LCBid2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50c1swXSk7CiB9CiAKKy8vIFRP
RE8oZWxhZGFsb24vdGVyZWxpdXMpOiBUZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRzIGluIHRoZSBi
YXRjaC4KIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFByb2JlUmVzdWx0
RmFpbHVyZSkgewogICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmU+
IGV2ZW50ID0KICAgICAgIGdlbl8uTmV3UHJvYmVSZXN1bHRGYWlsdXJlKCk7CkBAIC0zMjEsMTAg
KzU0NSwxMSBAQCBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRQcm9iZVJl
c3VsdEZhaWx1cmUpIHsKICAgY29uc3QgYXV0byYgYndlX3Byb2JlX2ZhaWx1cmVfZXZlbnRzID0g
cGFyc2VkX2xvZ18uYndlX3Byb2JlX2ZhaWx1cmVfZXZlbnRzKCk7CiAKICAgQVNTRVJUX0VRKGJ3
ZV9wcm9iZV9mYWlsdXJlX2V2ZW50cy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUodGVzdDo6
VmVyaWZ5TG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQoCi0gICAgICAqZXZlbnQsIGJ3ZV9wcm9i
ZV9mYWlsdXJlX2V2ZW50c1swXSkpOworICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlUHJvYmVG
YWlsdXJlRXZlbnQoKmV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYndlX3Byb2JlX2ZhaWx1cmVfZXZlbnRzWzBdKTsKIH0KIAorLy8gVE9ETyhlbGFk
YWxvbi90ZXJlbGl1cyk6IFRlc3Qgd2l0aCBtdWx0aXBsZSBldmVudHMgaW4gdGhlIGJhdGNoLgog
VEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNz
KSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFByb2JlUmVzdWx0U3VjY2Vzcz4gZXZlbnQg
PQogICAgICAgZ2VuXy5OZXdQcm9iZVJlc3VsdFN1Y2Nlc3MoKTsKQEAgLTMzNSw3OCArNTYwLDY3
IEBAIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFByb2JlUmVzdWx0U3Vj
Y2VzcykgewogICBjb25zdCBhdXRvJiBid2VfcHJvYmVfc3VjY2Vzc19ldmVudHMgPSBwYXJzZWRf
bG9nXy5id2VfcHJvYmVfc3VjY2Vzc19ldmVudHMoKTsKIAogICBBU1NFUlRfRVEoYndlX3Byb2Jl
X3N1Y2Nlc3NfZXZlbnRzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlM
b2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCgKLSAgICAgICpldmVudCwgYndlX3Byb2JlX3N1Y2Nl
c3NfZXZlbnRzWzBdKSk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NF
dmVudCgqZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBid2VfcHJvYmVfc3VjY2Vzc19ldmVudHNbMF0pOwogfQogCiBURVNUX1AoUnRjRXZlbnRMb2dF
bmNvZGVyVGVzdCwgUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmcpIHsKLSAgc3RkOjp1bmlxdWVf
cHRyPFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nPiBldmVudCA9Ci0gICAgICBnZW5fLk5ld1J0
Y3BQYWNrZXRJbmNvbWluZygpOwotICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnQtPkNvcHkoKSk7
CisgIGlmICghbmV3X2VuY29kaW5nXyAmJiBmb3JjZV9yZXBlYXRlZF9maWVsZHNfKSB7CisgICAg
Ly8gVGhlIG9sZCBlbmNvZGluZyBkb2VzIG5vdCB3b3JrIHdpdGggZHVwbGljYXRlZCBwYWNrZXRz
LiBTaW5jZSB0aGUgbGVnYWN5CisgICAgLy8gZW5jb2RpbmcgaXMgYmVpbmcgcGhhc2VkIG91dCwg
d2Ugd2lsbCBub3QgZml4IHRoaXMuCisgICAgcmV0dXJuOworICB9CisKKyAgc3RkOjp2ZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nPj4gZXZlbnRzKGV2ZW50
X2NvdW50Xyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsK
KyAgICBldmVudHNbaV0gPSAoaSA9PSAwIHx8ICFmb3JjZV9yZXBlYXRlZF9maWVsZHNfKQorICAg
ICAgICAgICAgICAgICAgICA/IGdlbl8uTmV3UnRjcFBhY2tldEluY29taW5nKCkKKyAgICAgICAg
ICAgICAgICAgICAgOiBldmVudHNbMF0tPkNvcHkoKTsKKyAgICBoaXN0b3J5Xy5wdXNoX2JhY2so
ZXZlbnRzW2ldLT5Db3B5KCkpOworICB9CiAKICAgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IGVuY29k
ZXJfLT5FbmNvZGVCYXRjaChoaXN0b3J5Xy5iZWdpbigpLCBoaXN0b3J5Xy5lbmQoKSk7CiAgIEFT
U0VSVF9UUlVFKHBhcnNlZF9sb2dfLlBhcnNlU3RyaW5nKGVuY29kZWQpKTsKKwogICBjb25zdCBh
dXRvJiBpbmNvbWluZ19ydGNwX3BhY2tldHMgPSBwYXJzZWRfbG9nXy5pbmNvbWluZ19ydGNwX3Bh
Y2tldHMoKTsKKyAgQVNTRVJUX0VRKGluY29taW5nX3J0Y3BfcGFja2V0cy5zaXplKCksIGV2ZW50
X2NvdW50Xyk7CiAKLSAgQVNTRVJUX0VRKGluY29taW5nX3J0Y3BfcGFja2V0cy5zaXplKCksIDF1
KTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICB0ZXN0OjpWZXJpZnlMb2dnZWRSdGNwUGFja2V0SW5j
b21pbmcoKmV2ZW50LCBpbmNvbWluZ19ydGNwX3BhY2tldHNbMF0pKTsKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dn
ZWRSdGNwUGFja2V0SW5jb21pbmcoKmV2ZW50c1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX3J0Y3BfcGFja2V0c1tpXSk7CisgIH0KIH0K
IAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdv
aW5nKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZz4gZXZl
bnQgPQotICAgICAgZ2VuXy5OZXdSdGNwUGFja2V0T3V0Z29pbmcoKTsKLSAgaGlzdG9yeV8ucHVz
aF9iYWNrKGV2ZW50LT5Db3B5KCkpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRj
RXZlbnRSdGNwUGFja2V0T3V0Z29pbmc+PiBldmVudHMoZXZlbnRfY291bnRfKTsKKyAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIGV2ZW50c1tpXSA9IChp
ID09IDAgfHwgIWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18pCisgICAgICAgICAgICAgICAgICAgID8g
Z2VuXy5OZXdSdGNwUGFja2V0T3V0Z29pbmcoKQorICAgICAgICAgICAgICAgICAgICA6IGV2ZW50
c1swXS0+Q29weSgpOworICAgIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudHNbaV0tPkNvcHkoKSk7
CisgIH0KIAogICBzdGQ6OnN0cmluZyBlbmNvZGVkID0gZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhp
c3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVuZCgpKTsKICAgQVNTRVJUX1RSVUUocGFyc2VkX2xv
Z18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOworCiAgIGNvbnN0IGF1dG8mIG91dGdvaW5nX3J0Y3Bf
cGFja2V0cyA9IHBhcnNlZF9sb2dfLm91dGdvaW5nX3J0Y3BfcGFja2V0cygpOworICBBU1NFUlRf
RVEob3V0Z29pbmdfcnRjcF9wYWNrZXRzLnNpemUoKSwgZXZlbnRfY291bnRfKTsKIAotICBBU1NF
UlRfRVEob3V0Z29pbmdfcnRjcF9wYWNrZXRzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSgK
LSAgICAgIHRlc3Q6OlZlcmlmeUxvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZygqZXZlbnQsIG91dGdv
aW5nX3J0Y3BfcGFja2V0c1swXSkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2Nv
dW50XzsgKytpKSB7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2lu
ZygqZXZlbnRzW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0Z29pbmdfcnRjcF9wYWNrZXRzW2ldKTsKKyAgfQogfQogCiBURVNUX1AoUnRjRXZlbnRM
b2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZykgewotICB1aW50MzJfdCBz
c3JjID0gcHJuZ18uUmFuZDx1aW50MzJfdD4oKTsKLSAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwIGV4
dGVuc2lvbl9tYXA7ICAvLyBUT0RPKHRlcmVsaXVzKTogVGVzdCBleHRlbnNpb25zIHRvby4KLSAg
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc+IGV2ZW50ID0KLSAgICAg
IGdlbl8uTmV3UnRwUGFja2V0SW5jb21pbmcoc3NyYywgZXh0ZW5zaW9uX21hcCk7Ci0gIGhpc3Rv
cnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgpKTsKLQotICBzdGQ6OnN0cmluZyBlbmNvZGVkID0g
ZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhpc3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVuZCgpKTsK
LSAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOwotICBjb25z
dCBhdXRvJiBpbmNvbWluZ19ydHBfcGFja2V0c19ieV9zc3JjID0KLSAgICAgIHBhcnNlZF9sb2df
LmluY29taW5nX3J0cF9wYWNrZXRzX2J5X3NzcmMoKTsKLQotICBBU1NFUlRfRVEoaW5jb21pbmdf
cnRwX3BhY2tldHNfYnlfc3NyYy5zaXplKCksIDF1KTsKLSAgY29uc3QgYXV0byYgc3RyZWFtID0g
aW5jb21pbmdfcnRwX3BhY2tldHNfYnlfc3NyY1swXTsKLSAgRVhQRUNUX0VRKHN0cmVhbS5zc3Jj
LCBzc3JjKTsKLSAgQVNTRVJUX0VRKHN0cmVhbS5pbmNvbWluZ19wYWNrZXRzLnNpemUoKSwgMXUp
OwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIHRlc3Q6OlZlcmlmeUxvZ2dlZFJ0cFBhY2tldEluY29t
aW5nKCpldmVudCwgc3RyZWFtLmluY29taW5nX3BhY2tldHNbMF0pKTsKKyAgVGVzdFJ0cFBhY2tl
dHM8UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZywgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmc+KCk7
CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFJ0cFBhY2tldE91
dGdvaW5nKSB7Ci0gIHVpbnQzMl90IHNzcmMgPSBwcm5nXy5SYW5kPHVpbnQzMl90PigpOwotICBS
dHBIZWFkZXJFeHRlbnNpb25NYXAgZXh0ZW5zaW9uX21hcDsgIC8vIFRPRE8odGVyZWxpdXMpOiBU
ZXN0IGV4dGVuc2lvbnMgdG9vLgotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRP
dXRnb2luZz4gZXZlbnQgPQotICAgICAgZ2VuXy5OZXdSdHBQYWNrZXRPdXRnb2luZyhzc3JjLCBl
eHRlbnNpb25fbWFwKTsKLSAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5Db3B5KCkpOwotCi0g
IHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBlbmNvZGVyXy0+RW5jb2RlQmF0Y2goaGlzdG9yeV8uYmVn
aW4oKSwgaGlzdG9yeV8uZW5kKCkpOwotICBBU1NFUlRfVFJVRShwYXJzZWRfbG9nXy5QYXJzZVN0
cmluZyhlbmNvZGVkKSk7Ci0gIGNvbnN0IGF1dG8mIG91dGdvaW5nX3J0cF9wYWNrZXRzX2J5X3Nz
cmMgPQotICAgICAgcGFyc2VkX2xvZ18ub3V0Z29pbmdfcnRwX3BhY2tldHNfYnlfc3NyYygpOwot
Ci0gIEFTU0VSVF9FUShvdXRnb2luZ19ydHBfcGFja2V0c19ieV9zc3JjLnNpemUoKSwgMXUpOwot
ICBjb25zdCBhdXRvJiBzdHJlYW0gPSBvdXRnb2luZ19ydHBfcGFja2V0c19ieV9zc3JjWzBdOwot
ICBFWFBFQ1RfRVEoc3RyZWFtLnNzcmMsIHNzcmMpOwotICBBU1NFUlRfRVEoc3RyZWFtLm91dGdv
aW5nX3BhY2tldHMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgdGVzdDo6VmVy
aWZ5TG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcoKmV2ZW50LCBzdHJlYW0ub3V0Z29pbmdfcGFja2V0
c1swXSkpOworICBUZXN0UnRwUGFja2V0czxSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nLCBMb2dn
ZWRSdHBQYWNrZXRPdXRnb2luZz4oKTsKIH0KIAorLy8gVE9ETyhlbGFkYWxvbi90ZXJlbGl1cyk6
IFRlc3Qgd2l0aCBtdWx0aXBsZSBldmVudHMgaW4gdGhlIGJhdGNoLgogVEVTVF9QKFJ0Y0V2ZW50
TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnKSB7CiAgIHVp
bnQzMl90IHNzcmMgPSBwcm5nXy5SYW5kPHVpbnQzMl90PigpOwogICBSdHBIZWFkZXJFeHRlbnNp
b25NYXAgZXh0ZW5zaW9ucyA9IGdlbl8uTmV3UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKCk7CkBAIC00
MTksOSArNjMzLDEwIEBAIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFZp
ZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZykgewogICBjb25zdCBhdXRvJiB2aWRlb19yZWN2X2NvbmZp
Z3MgPSBwYXJzZWRfbG9nXy52aWRlb19yZWN2X2NvbmZpZ3MoKTsKIAogICBBU1NFUlRfRVEodmlk
ZW9fcmVjdl9jb25maWdzLnNpemUoKSwgMXUpOwotICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlM
b2dnZWRWaWRlb1JlY3ZDb25maWcoKmV2ZW50LCB2aWRlb19yZWN2X2NvbmZpZ3NbMF0pKTsKKyAg
dmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFZpZGVvUmVjdkNvbmZpZygqZXZlbnQsIHZpZGVvX3JlY3Zf
Y29uZmlnc1swXSk7CiB9CiAKKy8vIFRPRE8oZWxhZGFsb24vdGVyZWxpdXMpOiBUZXN0IHdpdGgg
bXVsdGlwbGUgZXZlbnRzIGluIHRoZSBiYXRjaC4KIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJU
ZXN0LCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZykgewogICB1aW50MzJfdCBzc3JjID0g
cHJuZ18uUmFuZDx1aW50MzJfdD4oKTsKICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwIGV4dGVuc2lv
bnMgPSBnZW5fLk5ld1J0cEhlYWRlckV4dGVuc2lvbk1hcCgpOwpAQCAtNDM0LDExICs2NDksMTUg
QEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFt
Q29uZmlnKSB7CiAgIGNvbnN0IGF1dG8mIHZpZGVvX3NlbmRfY29uZmlncyA9IHBhcnNlZF9sb2df
LnZpZGVvX3NlbmRfY29uZmlncygpOwogCiAgIEFTU0VSVF9FUSh2aWRlb19zZW5kX2NvbmZpZ3Mu
c2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZFZpZGVvU2VuZENv
bmZpZygqZXZlbnQsIHZpZGVvX3NlbmRfY29uZmlnc1swXSkpOworICB2ZXJpZmllcl8uVmVyaWZ5
TG9nZ2VkVmlkZW9TZW5kQ29uZmlnKCpldmVudCwgdmlkZW9fc2VuZF9jb25maWdzWzBdKTsKIH0K
IAotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUmFuZG9tU2VlZHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBSdGNFdmVudExvZ0VuY29kZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
Ojp0ZXN0aW5nOjpWYWx1ZXMoMSwgMiwgMywgNCwgNSkpOworSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoCisgICAgUmFuZG9tU2VlZHMsCisgICAgUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwKKyAgICA6
OnRlc3Rpbmc6OkNvbWJpbmUoLyogUmFuZG9tIHNlZWQqOiAqLyA6OnRlc3Rpbmc6OlZhbHVlcygx
LCAyLCAzLCA0LCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgLyogRW5jb2Rpbmc6ICovIDo6
dGVzdGluZzo6Qm9vbCgpLAorICAgICAgICAgICAgICAgICAgICAgICAvKiBFdmVudCBjb3VudDog
Ki8gOjp0ZXN0aW5nOjpWYWx1ZXMoMSwgMiwgMTAsIDEwMCksCisgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFJlcGVhdGVkIGZpZWxkczogKi8gOjp0ZXN0aW5nOjpCb29sKCkpKTsKIAogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvdmFyaW50LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvdmFyaW50LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxZTI5ZTg0ODBiZDVhYTExY2Ey
ZTFiNjQwNTdiZGE4NmRjZjQzYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci92
YXJpbnQuY2MKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQuaCIKKworI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgorCisvLyBUT0RPKGVsYWRhbG9uKTogQWRkIHVuaXQgdGVzdHMu
CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjb25zdCBzaXplX3Qga01heFZhckludExlbmd0aEJ5
dGVzID0gMTA7ICAvLyBjZWlsKDY0IC8gNy4wKSBpcyAxMC4KKworc3RkOjpzdHJpbmcgRW5jb2Rl
VmFySW50KHVpbnQ2NF90IGlucHV0KSB7CisgIHN0ZDo6c3RyaW5nIG91dHB1dDsKKyAgb3V0cHV0
LnJlc2VydmUoa01heFZhckludExlbmd0aEJ5dGVzKTsKKworICBkbyB7CisgICAgdWludDhfdCBi
eXRlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaW5wdXQgJiAweDdmKTsKKyAgICBpbnB1dCA+Pj0g
NzsKKyAgICBpZiAoaW5wdXQgPiAwKSB7CisgICAgICBieXRlIHw9IDB4ODA7CisgICAgfQorICAg
IG91dHB1dCArPSBieXRlOworICB9IHdoaWxlIChpbnB1dCA+IDApOworCisgIFJUQ19EQ0hFQ0tf
R0Uob3V0cHV0LnNpemUoKSwgMXUpOworICBSVENfRENIRUNLX0xFKG91dHB1dC5zaXplKCksIGtN
YXhWYXJJbnRMZW5ndGhCeXRlcyk7CisKKyAgcmV0dXJuIG91dHB1dDsKK30KKworLy8gVGhlcmUg
aXMgc29tZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlIGZsYXZvcnMgb2YgdGhpcyBmdW5j
dGlvbi4KKy8vIEZvciBwZXJmb3JtYW5jZSdzIHNha2UsIGl0J3MgYmVzdCB0byBqdXN0IGtlZXAg
aXQuCitzaXplX3QgRGVjb2RlVmFySW50KGFic2w6OnN0cmluZ192aWV3IGlucHV0LCB1aW50NjRf
dCogb3V0cHV0KSB7CisgIFJUQ19EQ0hFQ0sob3V0cHV0KTsKKworICB1aW50NjRfdCBkZWNvZGVk
ID0gMDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGgoKSAmJiBpIDwga01h
eFZhckludExlbmd0aEJ5dGVzOyArK2kpIHsKKyAgICBkZWNvZGVkICs9IChzdGF0aWNfY2FzdDx1
aW50NjRfdD4oaW5wdXRbaV0gJiAweDdmKQorICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90Pig3ICogaSkpOworICAgIGlmICghKGlucHV0W2ldICYgMHg4MCkpIHsKKyAgICAg
ICpvdXRwdXQgPSBkZWNvZGVkOworICAgICAgcmV0dXJuIGkgKyAxOworICAgIH0KKyAgfQorCisg
IHJldHVybiAwOworfQorCisvLyBUaGVyZSBpcyBzb21lIGNvZGUgZHVwbGljYXRpb24gYmV0d2Vl
biB0aGUgZmxhdm9ycyBvZiB0aGlzIGZ1bmN0aW9uLgorLy8gRm9yIHBlcmZvcm1hbmNlJ3Mgc2Fr
ZSwgaXQncyBiZXN0IHRvIGp1c3Qga2VlcCBpdC4KK3NpemVfdCBEZWNvZGVWYXJJbnQocnRjOjpC
aXRCdWZmZXIqIGlucHV0LCB1aW50NjRfdCogb3V0cHV0KSB7CisgIFJUQ19EQ0hFQ0sob3V0cHV0
KTsKKworICB1aW50NjRfdCBkZWNvZGVkID0gMDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBr
TWF4VmFySW50TGVuZ3RoQnl0ZXM7ICsraSkgeworICAgIHVpbnQ4X3QgYnl0ZTsKKyAgICBpZiAo
IWlucHV0LT5SZWFkVUludDgoJmJ5dGUpKSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAg
ZGVjb2RlZCArPQorICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGUgJiAweDdmKSA8
PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oNyAqIGkpKTsKKyAgICBpZiAoIShieXRlICYgMHg4MCkp
IHsKKyAgICAgICpvdXRwdXQgPSBkZWNvZGVkOworICAgICAgcmV0dXJuIGkgKyAxOworICAgIH0K
KyAgfQorCisgIHJldHVybiAwOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3ZhcmludC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk1NDk0YWU3NTNmYzI1ODdlN2NiYjBlM2ZhY2M5NGVjZjEzNjgyYmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQuaApAQCAtMCwwICsxLDQ1IEBACisv
KgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5D
T0RFUl9WQVJJTlRfSF8KKyNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09ERVJfVkFS
SU5UX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Ry
aW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9iaXRidWZmZXIuaCIKKworbmFtZXNwYWNl
IHdlYnJ0YyB7CisKK2V4dGVybiBjb25zdCBzaXplX3Qga01heFZhckludExlbmd0aEJ5dGVzOwor
CisvLyBFbmNvZGUgYSBnaXZlbiB1aW50NjRfdCBhcyBhIHZhcmludC4gRnJvbSBsZWFzdCB0byBt
b3N0IHNpZ25pZmljYW50LAorLy8gZWFjaCBiYXRjaCBvZiBzZXZlbiBiaXRzIGFyZSBwdXQgaW50
byB0aGUgbG93ZXIgYml0cyBvZiBhIGJ5dGUsIGFuZCB0aGUgbGFzdAorLy8gcmVtYWluaW5nIGJp
dCBpbiB0aGF0IGJ5dGUgKHRoZSBoaWdoZXN0IG9uZSkgbWFya3Mgd2hldGhlciBhZGRpdGlvbmFs
IGJ5dGVzCisvLyBmb2xsb3cgKHdoaWNoIGhhcHBlbnMgaWYgYW5kIG9ubHkgaWYgdGhlcmUgYXJl
IG90aGVyIGJpdHMgaW4gfGlucHV0fCB3aGljaAorLy8gYXJlIG5vbi16ZXJvKS4KKy8vIE5vdGVz
OiBJZiBpbnB1dCA9PSAwLCBvbmUgYnl0ZSBpcyB1c2VkLiBJZiBpbnB1dCBpcyB1aW50NjRfdDo6
bWF4LCBleGFjdGx5CisvLyBrTWF4VmFySW50TGVuZ3RoQnl0ZXMgYXJlIHVzZWQuCitzdGQ6OnN0
cmluZyBFbmNvZGVWYXJJbnQodWludDY0X3QgaW5wdXQpOworCisvLyBJbnZlcnNlIG9mIEVuY29k
ZVZhckludCgpLgorLy8gSWYgZGVjb2RpbmcgaXMgc3VjY2Vzc2Z1bCwgYSBub24temVybyBudW1i
ZXIgaXMgcmV0dXJuZWQsIGluZGljYXRpbmcgdGhlCisvLyBudW1iZXIgb2YgYnl0ZXMgcmVhZCBm
cm9tIHxpbnB1dHwsIGFuZCB0aGUgZGVjb2RlZCB2YXJpbnQgaXMgd3JpdHRlbgorLy8gaW50byB8
b3V0cHV0fC4KKy8vIElmIG5vdCBzdWNjZXNzZnVsLCAwIGlzIHJldHVybmVkLCBhbmQgfG91dHB1
dHwgaXMgbm90IG1vZGlmaWVkLgorc2l6ZV90IERlY29kZVZhckludChhYnNsOjpzdHJpbmdfdmll
dyBpbnB1dCwgdWludDY0X3QqIG91dHB1dCk7CisKKy8vIFNhbWUgYXMgb3RoZXIgdmVyc2lvbiwg
YnV0IHVzZXMgYSBydGM6OkJpdEJ1ZmZlciBmb3IgaW5wdXQuCisvLyBTb21lIGJpdHMgbWF5IGJl
IGNvbnN1bWVkIGV2ZW4gaWYgYSB2YXJpbnQgZmFpbHMgdG8gYmUgcmVhZC4KK3NpemVfdCBEZWNv
ZGVWYXJJbnQocnRjOjpCaXRCdWZmZXIqIGlucHV0LCB1aW50NjRfdCogb3V0cHV0KTsKKworfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIExPR0dJTkdfUlRDX0VWRU5UX0xPR19F
TkNPREVSX1ZBUklOVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgKaW5kZXggMjFkNmU0OGUwZjUyOTA0NTAwNDkyZjNh
ZWFhOWVjNmQzYjk2N2Y0Ny4uN2FlNjM3NThiMTU4YWIzMDZlMTFmMDU1MGM4OThkOGRjNThkN2Fl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudC5oCkBAIC01NywxMiArNTcsMTMgQEAgY2xhc3MgUnRjRXZlbnQgewogCiAg
IHZpcnR1YWwgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3QgPSAwOwogCi0gIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3QgPSAwOwotCi0gIGNvbnN0IGludDY0
X3QgdGltZXN0YW1wX3VzXzsKKyAgaW50NjRfdCB0aW1lc3RhbXBfbXMoKSBjb25zdCB7IHJldHVy
biB0aW1lc3RhbXBfdXNfIC8gMTAwMDsgfQorICBpbnQ2NF90IHRpbWVzdGFtcF91cygpIGNvbnN0
IHsgcmV0dXJuIHRpbWVzdGFtcF91c187IH0KIAogIHByb3RlY3RlZDoKICAgZXhwbGljaXQgUnRj
RXZlbnQoaW50NjRfdCB0aW1lc3RhbXBfdXMpIDogdGltZXN0YW1wX3VzXyh0aW1lc3RhbXBfdXMp
IHt9CisKKyAgY29uc3QgaW50NjRfdCB0aW1lc3RhbXBfdXNfOwogfTsKIAogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRl
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmNjCmluZGV4IGMxZjFiMzk1
MzIwMzMwMTBiNWM2YzgxYjRmNDg2NTZjMTY4NWQ2NmMuLjhlNWMyY2E4MmY3MWNjOWZkZWZmOGJi
NWQ3NTZiYTY0ZGE3MmU2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2Fs
cl9zdGF0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hbHJfc3RhdGUuY2MKQEAg
LTI4LDggKzI4LDggQEAgYm9vbCBSdGNFdmVudEFsclN0YXRlOjpJc0NvbmZpZ0V2ZW50KCkgY29u
c3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRj
RXZlbnRBbHJTdGF0ZTo6Q29weSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8
UnRjRXZlbnQ+KG5ldyBSdGNFdmVudEFsclN0YXRlKCp0aGlzKSk7CitzdGQ6OnVuaXF1ZV9wdHI8
UnRjRXZlbnRBbHJTdGF0ZT4gUnRjRXZlbnRBbHJTdGF0ZTo6Q29weSgpIGNvbnN0IHsKKyAgcmV0
dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRBbHJTdGF0ZT4obmV3IFJ0Y0V2ZW50QWxyU3Rh
dGUoKnRoaXMpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9hbHJfc3RhdGUuaAppbmRleCBlNzM3YzkxNWUxZDU2MTExOGZjMGViNDY0NzBlOGRhZTZmZjY4
YzczLi45NzY5NTg1ZDNkNjgyNjQ3N2QyZThhNzU2NzYxODA0N2EzMTU4ODA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hbHJfc3RhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9hbHJfc3RhdGUuaApAQCAtMjYsMTIgKzI2LDE0IEBAIGNsYXNzIFJ0Y0V2ZW50
QWxyU3RhdGUgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVu
dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgp
IGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBbHJTdGF0ZT4gQ29w
eSgpIGNvbnN0OwogCi0gIGNvbnN0IGJvb2wgaW5fYWxyXzsKKyAgYm9vbCBpbl9hbHIoKSBjb25z
dCB7IHJldHVybiBpbl9hbHJfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudEFsclN0YXRlKGNv
bnN0IFJ0Y0V2ZW50QWxyU3RhdGUmIG90aGVyKTsKKworICBjb25zdCBib29sIGluX2Fscl87CiB9
OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19l
dmVudF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb24uY2MKaW5kZXggZGNmMmQ3ZGU1OTIyNGFmMmQ2
NGMxMTFjZWJkNmZiNDQ1YWQ1Mjc5YS4uNTcxYjlhOTNkM2ViN2RlZTllNjJjMDM3ZWQ5Njg0OTg4
ZDNlNDhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29y
a19hZGFwdGF0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX25ldHdv
cmtfYWRhcHRhdGlvbi5jYwpAQCAtMTQsMTIgKzE0LDE1IEBACiAKICNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3
b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBSdGNFdmVu
dEF1ZGlvTmV0d29ya0FkYXB0YXRpb246OlJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbigK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZz4gY29uZmlnKQot
ICAgIDogY29uZmlnXyhzdGQ6Om1vdmUoY29uZmlnKSkge30KKyAgICA6IGNvbmZpZ18oc3RkOjpt
b3ZlKGNvbmZpZykpIHsKKyAgUlRDX0RDSEVDSyhjb25maWdfKTsKK30KIAogUnRjRXZlbnRBdWRp
b05ldHdvcmtBZGFwdGF0aW9uOjpSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oCiAgICAg
Y29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uJiBvdGhlcikKQEAgLTM2LDcgKzM5
LDggQEAgYm9vbCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb246OklzQ29uZmlnRXZlbnQo
KSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
PiBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb246OkNvcHkoKSBjb25zdCB7CitzdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPgorUnRjRXZlbnRBdWRpb05l
dHdvcmtBZGFwdGF0aW9uOjpDb3B5KCkgY29uc3QgewogICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1
ZShuZXcgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKCp0aGlzKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLmgKaW5k
ZXggNjVmYmFkODYyMWQwM2VhN2Q2ZjJiYTI2Y2M1Zjc1OTIyNTVhMTYyNC4uZWM2Y2ExMTI1YzQw
YTNlNmFlMmY5NWU3NTcxOTI3YjQ1MWFkYjVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLmgKQEAgLTI5LDEyICsyOSwxNCBAQCBj
bGFzcyBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24gZmluYWwgOiBwdWJsaWMgUnRjRXZl
bnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPiBDb3B5KCkgY29uc3Q7CiAKLSAg
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+IGNv
bmZpZ187CisgIGNvbnN0IEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWcmIGNvbmZpZygpIGNvbnN0
IHsgcmV0dXJuICpjb25maWdfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudEF1ZGlvTmV0d29y
a0FkYXB0YXRpb24oY29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uJiBvdGhlcik7
CisKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25m
aWc+IGNvbmZpZ187CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19wbGF5b3V0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfYXVkaW9fcGxheW91dC5jYwppbmRleCBhOTY0M2JhODY4YzAzOGQ4MWQwYTM1NTcy
MzlmOWQ4ZjJhMGUzZmM4Li42YzRhYTk4ZDNlMjM4Y2FjMzI1M2RmMjUzM2RhMGMxMDYzZjIyMjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19wbGF5b3V0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3BsYXlvdXQuY2MKQEAgLTI3LDggKzI3
LDkgQEAgYm9vbCBSdGNFdmVudEF1ZGlvUGxheW91dDo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsK
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50
QXVkaW9QbGF5b3V0OjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxS
dGNFdmVudD4obmV3IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KCp0aGlzKSk7CitzdGQ6OnVuaXF1ZV9w
dHI8UnRjRXZlbnRBdWRpb1BsYXlvdXQ+IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0OjpDb3B5KCkgY29u
c3QgeworICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudEF1ZGlvUGxheW91dD4oCisg
ICAgICBuZXcgUnRjRXZlbnRBdWRpb1BsYXlvdXQoKnRoaXMpKTsKIH0KIAogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcGxh
eW91dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcGxheW91dC5oCmluZGV4IDMw
ODBmNWI5ZjBlNzJlYjFhZGQzYTlkMjE2ZTY1Y2VkN2VjZjUzNjMuLjRiNDBmNWMwMjcyOGFhNmI0
ZjIwM2RkYzAxZjZjOTczMzVkNWRmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X2F1ZGlvX3BsYXlvdXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19w
bGF5b3V0LmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9H
X0VWRU5UU19SVENfRVZFTlRfQVVESU9fUExBWU9VVF9IXwogI2RlZmluZSBMT0dHSU5HX1JUQ19F
VkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9BVURJT19QTEFZT1VUX0hfCiAKKyNpbmNsdWRlIDxz
dGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgpAQCAtMjYsMTIgKzI3LDE0IEBAIGNsYXNzIFJ0Y0V2
ZW50QXVkaW9QbGF5b3V0IGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50IHsKIAogICBib29sIElzQ29u
ZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+
IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9Q
bGF5b3V0PiBDb3B5KCkgY29uc3Q7CiAKLSAgY29uc3QgdWludDMyX3Qgc3NyY187CisgIHVpbnQz
Ml90IHNzcmMoKSBjb25zdCB7IHJldHVybiBzc3JjXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZl
bnRBdWRpb1BsYXlvdXQoY29uc3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQmIG90aGVyKTsKKworICBj
b25zdCB1aW50MzJfdCBzc3JjXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZp
Zy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZp
Zy5jYwppbmRleCBmZWU3YzNjNzY2YzNkMWRhNDhiZWI4OGMwN2U1MGUwM2EwZWQwNTU1Li5mZGVm
MzkzZDU0NmMxYTg5MTY2MmEyNTU0ZDJkMDc3OWE5MTc3NWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0cmVhbV9jb25maWcuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmNjCkBAIC0x
NCwxMiArMTQsMTUgQEAKIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogUnRjRXZlbnRBdWRp
b1JlY2VpdmVTdHJlYW1Db25maWc6OlJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmlnKQotICAgIDog
Y29uZmlnXyhzdGQ6Om1vdmUoY29uZmlnKSkge30KKyAgICA6IGNvbmZpZ18oc3RkOjptb3ZlKGNv
bmZpZykpIHsKKyAgUlRDX0RDSEVDSyhjb25maWdfKTsKK30KIAogUnRjRXZlbnRBdWRpb1JlY2Vp
dmVTdHJlYW1Db25maWc6OlJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKAogICAgIGNv
bnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnJiBvdGhlcikKQEAgLTM2LDkgKzM5
LDkgQEAgYm9vbCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZzo6SXNDb25maWdFdmVu
dCgpIGNvbnN0IHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVu
dD4gUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc6OkNvcHkoKSBjb25zdCB7Ci0gIGF1
dG8gY29uZmlnX2NvcHkgPSBhYnNsOjptYWtlX3VuaXF1ZTxydGNsb2c6OlN0cmVhbUNvbmZpZz4o
KmNvbmZpZ18pOwotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4oCitzdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc+CitSdGNFdmVudEF1ZGlv
UmVjZWl2ZVN0cmVhbUNvbmZpZzo6Q29weSgpIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBV
bmlxdWU8UnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc+KAogICAgICAgbmV3IFJ0Y0V2
ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKCp0aGlzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgKaW5kZXgg
Mjc1NzY1MDMxNDM2MjA5ZDI5OWZlN2FkZDc1NjFkZDNjMzQxOGI1NS4uMmI3M2Y2M2YwMDBkZmYw
NmY5NGYzOWJiYTBjYzNiM2E3NjM0OGZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgKQEAgLTMxLDEzICszMSwxNSBA
QCBjbGFzcyBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyBmaW5hbCA6IHB1YmxpYyBS
dGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZz4gQ29weSgpIGNvbnN0
OwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZz4g
Y29uZmlnXzsKKyAgY29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWcmIGNvbmZpZygpIGNvbnN0IHsg
cmV0dXJuICpjb25maWdfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0
cmVhbUNvbmZpZygKICAgICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmln
JiBvdGhlcik7CisKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IHJ0Y2xvZzo6U3RyZWFt
Q29uZmlnPiBjb25maWdfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnLmNjCmluZGV4
IDQ3OTM5YzdiZGMzMmVmNTFhZjBiOTA5MmQwNDk5ZTViYTg4ZTQ5NDQuLmYxYTg1YmZmNjk0NjUw
MDQ0NmZlOGUzMThiOWFhMGZhZTFjM2M0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF9hdWRpb19zZW5kX3N0cmVhbV9jb25maWcuY2MKQEAgLTE0LDEyICsxNCwxNSBAQAog
CiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL3J0Y19zdHJlYW1fY29uZmlnLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZp
Zzo6UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcoCiAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0
Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWcpCi0gICAgOiBjb25maWdfKHN0ZDo6bW92ZShjb25m
aWcpKSB7fQorICAgIDogY29uZmlnXyhzdGQ6Om1vdmUoY29uZmlnKSkgeworICBSVENfRENIRUNL
KGNvbmZpZ18pOworfQogCiBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZzo6UnRjRXZlbnRB
dWRpb1NlbmRTdHJlYW1Db25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1D
b25maWcmIG90aGVyKQpAQCAtMzYsOSArMzksMTAgQEAgYm9vbCBSdGNFdmVudEF1ZGlvU2VuZFN0
cmVhbUNvbmZpZzo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc6
OkNvcHkoKSBjb25zdCB7Ci0gIGF1dG8gY29uZmlnX2NvcHkgPSBhYnNsOjptYWtlX3VuaXF1ZTxy
dGNsb2c6OlN0cmVhbUNvbmZpZz4oKmNvbmZpZ18pOwotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1
ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKCp0aGlzKSk7Citz
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc+CitSdGNFdmVudEF1
ZGlvU2VuZFN0cmVhbUNvbmZpZzo6Q29weSgpIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBV
bmlxdWU8UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc+KAorICAgICAgbmV3IFJ0Y0V2ZW50
QXVkaW9TZW5kU3RyZWFtQ29uZmlnKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFt
X2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29u
ZmlnLmgKaW5kZXggYjI0OGE2MTkxNTAxOWU5N2E2ZTc1ODk3N2JhNjAyYTk1YzBkZmMzMS4uYzBl
ZmE5NTA5MDFiYmVkYzIwNWRlNDMxZDVkZTFhNjhkNjI2ZGFmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnLmgKQEAgLTMxLDEyICsz
MSwxNCBAQCBjbGFzcyBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyBmaW5hbCA6IHB1Ymxp
YyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZz4gQ29weSgpIGNvbnN0
OwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZz4g
Y29uZmlnXzsKKyAgY29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWcmIGNvbmZpZygpIGNvbnN0IHsg
cmV0dXJuICpjb25maWdfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudEF1ZGlvU2VuZFN0cmVh
bUNvbmZpZyhjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyYgb3RoZXIpOworCisg
IGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmln
XzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVu
dHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfZGVsYXlfYmFzZWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF9id2VfdXBkYXRlX2RlbGF5X2Jhc2VkLmNjCmluZGV4IDhjMTc5NzEyNjA1MjBiYmFm
MzJhMjM2MTBkZTdkMTFhYTU2ZmQzNTkuLmRjYzg3NDIxZjg3MzdkN2UzM2ZjNmRlMmNmNmUzMDZk
Y2YxZjJiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVf
ZGVsYXlfYmFzZWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9k
ZWxheV9iYXNlZC5jYwpAQCAtMzYsOCArMzYsMTAgQEAgYm9vbCBSdGNFdmVudEJ3ZVVwZGF0ZURl
bGF5QmFzZWQ6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQ6OkNv
cHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50PihuZXcgUnRj
RXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkKCp0aGlzKSk7CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnRCd2VVcGRhdGVEZWxheUJhc2VkPiBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQ6OkNvcHko
KQorICAgIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRCd2VVcGRh
dGVEZWxheUJhc2VkPigKKyAgICAgIG5ldyBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQoKnRo
aXMpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2
ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9kZWxheV9iYXNlZC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfYndlX3VwZGF0ZV9kZWxheV9iYXNlZC5oCmluZGV4IDNmNDdkYzdmOTcwNDVkMjc5
ZWRhMjJiZDliYjhhNGZiNjIxZDk4M2IuLmE5N2Q0OWY1YTU0ZTQ3YmMwOTgyYmY5NDU1YjFkM2Rk
NDE0MWM5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVf
ZGVsYXlfYmFzZWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2Rl
bGF5X2Jhc2VkLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRf
TE9HX0VWRU5UU19SVENfRVZFTlRfQldFX1VQREFURV9ERUxBWV9CQVNFRF9IXwogI2RlZmluZSBM
T0dHSU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9CV0VfVVBEQVRFX0RFTEFZX0JB
U0VEX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgpAQCAtMjksMTMg
KzMwLDE2IEBAIGNsYXNzIFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCBmaW5hbCA6IHB1Ymxp
YyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQ+IENvcHkoKSBjb25zdDsK
IAotICBjb25zdCBpbnQzMl90IGJpdHJhdGVfYnBzXzsKLSAgY29uc3QgQmFuZHdpZHRoVXNhZ2Ug
ZGV0ZWN0b3Jfc3RhdGVfOworICBpbnQzMl90IGJpdHJhdGVfYnBzKCkgY29uc3QgeyByZXR1cm4g
Yml0cmF0ZV9icHNfOyB9CisgIEJhbmR3aWR0aFVzYWdlIGRldGVjdG9yX3N0YXRlKCkgY29uc3Qg
eyByZXR1cm4gZGV0ZWN0b3Jfc3RhdGVfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudEJ3ZVVw
ZGF0ZURlbGF5QmFzZWQoY29uc3QgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkJiBvdGhlcik7
CisKKyAgY29uc3QgaW50MzJfdCBiaXRyYXRlX2Jwc187CisgIGNvbnN0IEJhbmR3aWR0aFVzYWdl
IGRldGVjdG9yX3N0YXRlXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5jYwppbmRleCBiMGU3
MmRkYjBhYTc5NGZkNjczMzNiMDY1MjQ3MTNhMThjZGY2OThjLi44NDUzMjM4Y2Y5MDNiMzhlOTE0
NTI5MTMxMTA4ZWI4YTU4NTJlOTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9id2VfdXBkYXRlX2xvc3NfYmFzZWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
YndlX3VwZGF0ZV9sb3NzX2Jhc2VkLmNjCkBAIC0zOCw4ICszOCwxMCBAQCBib29sIFJ0Y0V2ZW50
QndlVXBkYXRlTG9zc0Jhc2VkOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRCd2VVcGRhdGVMb3Nz
QmFzZWQ6OkNvcHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50
PihuZXcgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQoKnRoaXMpKTsKK3N0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZD4gUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQ6
OkNvcHkoKQorICAgIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRC
d2VVcGRhdGVMb3NzQmFzZWQ+KAorICAgICAgbmV3IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2Vk
KCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9sb3NzX2Jhc2VkLmgKaW5kZXggMmQ0ZmZkYTFiMWVhNmVk
NjZkMDE4MDBkZTc0OWQ2YTFkNDI4ODdkOC4uYjRmODg3NzVmYjcyZWFhOTYxOGFhYTkxOWVjMTM2
Y2M1ZDgzZmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0
ZV9sb3NzX2Jhc2VkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9s
b3NzX2Jhc2VkLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRf
TE9HX0VWRU5UU19SVENfRVZFTlRfQldFX1VQREFURV9MT1NTX0JBU0VEX0hfCiAjZGVmaW5lIExP
R0dJTkdfUlRDX0VWRU5UX0xPR19FVkVOVFNfUlRDX0VWRU5UX0JXRV9VUERBVEVfTE9TU19CQVNF
RF9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVk
ZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIKQEAgLTI4LDE0ICsy
OSwxOCBAQCBjbGFzcyBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCBmaW5hbCA6IHB1YmxpYyBS
dGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZD4gQ29weSgpIGNvbnN0OwogCi0g
IGNvbnN0IGludDMyX3QgYml0cmF0ZV9icHNfOwotICBjb25zdCB1aW50OF90IGZyYWN0aW9uX2xv
c3NfOwotICBjb25zdCBpbnQzMl90IHRvdGFsX3BhY2tldHNfOworICBpbnQzMl90IGJpdHJhdGVf
YnBzKCkgY29uc3QgeyByZXR1cm4gYml0cmF0ZV9icHNfOyB9CisgIHVpbnQ4X3QgZnJhY3Rpb25f
bG9zcygpIGNvbnN0IHsgcmV0dXJuIGZyYWN0aW9uX2xvc3NfOyB9CisgIGludDMyX3QgdG90YWxf
cGFja2V0cygpIGNvbnN0IHsgcmV0dXJuIHRvdGFsX3BhY2tldHNfOyB9CiAKICBwcml2YXRlOgog
ICBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZChjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NC
YXNlZCYgb3RoZXIpOworCisgIGNvbnN0IGludDMyX3QgYml0cmF0ZV9icHNfOworICBjb25zdCB1
aW50OF90IGZyYWN0aW9uX2xvc3NfOworICBjb25zdCBpbnQzMl90IHRvdGFsX3BhY2tldHNfOwog
fTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
aWNlX2NhbmRpZGF0ZV9wYWlyLmNjCmluZGV4IGZhMzJkZTY4ZDVlYWI3YzFhMmZmN2U1NzM2NzUz
YjAxNTBiMjZhMDEuLjljMzE3MzdlYTVlZTYxMTM1MTgwN2UxYjA0MDU3ZDBjNTYyN2VjNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXIuY2MKQEAgLTM1
LDggKzM1LDEwIEBAIGJvb2wgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyOjpJc0NvbmZpZ0V2ZW50
KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVu
dD4gUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJz
bDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcigqdGhp
cykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcj4gUnRjRXZlbnRJ
Y2VDYW5kaWRhdGVQYWlyOjpDb3B5KCkKKyAgICBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFw
VW5pcXVlPFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcj4oCisgICAgICBuZXcgUnRjRXZlbnRJY2VD
YW5kaWRhdGVQYWlyKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyLmgKaW5kZXggZjQ5YTBkMTc5
MmNiNDMxYmVmYzM3YmFkYzZiMTY5M2RmYWIzYWIxMS4uNzQxNGZlYzc5YjFlOGIwNjJkMjA0ZDU3
ODY3NDZkZjE0NzNjYTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfaWNl
X2NhbmRpZGF0ZV9wYWlyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfaWNlX2NhbmRp
ZGF0ZV9wYWlyLmgKQEAgLTM2LDEzICszNiwxNiBAQCBjbGFzcyBSdGNFdmVudEljZUNhbmRpZGF0
ZVBhaXIgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgp
IGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNv
bnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRJY2VDYW5kaWRhdGVQYWly
PiBDb3B5KCkgY29uc3Q7CiAKLSAgY29uc3QgSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSB0eXBl
XzsKLSAgY29uc3QgdWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWRfOworICBJY2VDYW5kaWRhdGVQ
YWlyRXZlbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlXzsgfQorICB1aW50MzJfdCBj
YW5kaWRhdGVfcGFpcl9pZCgpIGNvbnN0IHsgcmV0dXJuIGNhbmRpZGF0ZV9wYWlyX2lkXzsgfQog
CiAgcHJpdmF0ZToKICAgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyKGNvbnN0IFJ0Y0V2ZW50SWNl
Q2FuZGlkYXRlUGFpciYgb3RoZXIpOworCisgIGNvbnN0IEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5
cGUgdHlwZV87CisgIGNvbnN0IHVpbnQzMl90IGNhbmRpZGF0ZV9wYWlyX2lkXzsKIH07CiAKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9p
Y2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnLmNjCmluZGV4IGY4OWRlNzc0MGM3YmU5OGViZDYyZjhm
MGE2ZWVmM2MyNWQwODdkZmIuLmZiYjhhNzNkZmJlYTU5ZjY2ZmYzYmY1NmU2NDU0Yzc0NDU0ZjU1
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFp
cl9jb25maWcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9w
YWlyX2NvbmZpZy5jYwpAQCAtNjQsOCArNjQsMTAgQEAgYm9vbCBSdGNFdmVudEljZUNhbmRpZGF0
ZVBhaXJDb25maWc6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25m
aWc6OkNvcHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50Pihu
ZXcgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKCp0aGlzKSk7CitzdGQ6OnVuaXF1ZV9w
dHI8UnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnPgorUnRjRXZlbnRJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnOjpDb3B5KCkgY29uc3QgeworICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNF
dmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWc+KAorICAgICAgbmV3IFJ0Y0V2ZW50SWNlQ2FuZGlk
YXRlUGFpckNvbmZpZygqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmln
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnLmgK
aW5kZXggMWY2ZWI4Y2ViMGZmZmU4ZTg3ZDFmZTQ4OWUyNmUyM2VmMmJiOTZlYy4uNDBiZGJhYTc3
MWU4MWMwY2ZiNmE5ZDAxMzJiN2NkZWY0MmI5Y2Q3MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVu
dHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWcuaApAQCAtOTIsMTQgKzkyLDIw
IEBAIGNsYXNzIFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyBmaW5hbCA6IHB1YmxpYyBS
dGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWc+IENvcHkoKSBjb25zdDsK
IAotICBjb25zdCBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZSB0eXBlXzsKLSAgY29uc3QgdWlu
dDMyX3QgY2FuZGlkYXRlX3BhaXJfaWRfOwotICBjb25zdCBJY2VDYW5kaWRhdGVQYWlyRGVzY3Jp
cHRpb24gY2FuZGlkYXRlX3BhaXJfZGVzY187CisgIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlXzsgfQorICB1aW50MzJfdCBjYW5kaWRhdGVfcGFp
cl9pZCgpIGNvbnN0IHsgcmV0dXJuIGNhbmRpZGF0ZV9wYWlyX2lkXzsgfQorICBjb25zdCBJY2VD
YW5kaWRhdGVQYWlyRGVzY3JpcHRpb24mIGNhbmRpZGF0ZV9wYWlyX2Rlc2MoKSBjb25zdCB7Cisg
ICAgcmV0dXJuIGNhbmRpZGF0ZV9wYWlyX2Rlc2NfOworICB9CiAKICBwcml2YXRlOgogICBSdGNF
dmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWcoY29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWly
Q29uZmlnJiBvdGhlcik7CisKKyAgY29uc3QgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgdHlw
ZV87CisgIGNvbnN0IHVpbnQzMl90IGNhbmRpZGF0ZV9wYWlyX2lkXzsKKyAgY29uc3QgSWNlQ2Fu
ZGlkYXRlUGFpckRlc2NyaXB0aW9uIGNhbmRpZGF0ZV9wYWlyX2Rlc2NfOwogfTsKIAogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJv
YmVfY2x1c3Rlcl9jcmVhdGVkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfY2x1
c3Rlcl9jcmVhdGVkLmNjCmluZGV4IGE2MDc2NWRiZDBmMWJlZmY5YmRiYmI0NGYxMzRkMjRjZmY4
ZjRlNWUuLmMxMWE2Y2U3OGViNTZlMGJmOTM2M2I0Y2Y4YTFhNmIyYWFjZGZlNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRlZC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9jbHVzdGVyX2NyZWF0ZWQuY2MKQEAgLTM5
LDggKzM5LDEwIEBAIGJvb2wgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkOjpJc0NvbmZpZ0V2
ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudD4gUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkOjpDb3B5KCkgY29uc3QgewotICByZXR1
cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3Jl
YXRlZCgqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRl
ZD4gUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkOjpDb3B5KCkKKyAgICBjb25zdCB7CisgIHJl
dHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZD4oCisgICAg
ICBuZXcgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2Jl
X2NsdXN0ZXJfY3JlYXRlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfY2x1c3Rl
cl9jcmVhdGVkLmgKaW5kZXggM2U4YzIxZjVjOTIxOTgzOTY3MzMzNGViMDgxNmRjYTEyNTE0NTBm
MC4uYWQ3NTdlZGQ1MzBlMGNmODVhMTVlMThlNDRjMjVjZjE1ZDQwMTg2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkLmgKQEAgLTExLDYgKzEx
LDcgQEAKICNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfUFJP
QkVfQ0xVU1RFUl9DUkVBVEVEX0hfCiAjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FVkVO
VFNfUlRDX0VWRU5UX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9IXwogCisjaW5jbHVkZSA8c3RkaW50
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnQuaCIKQEAgLTI5LDE1ICszMCwyMCBAQCBjbGFzcyBSdGNFdmVudFBy
b2JlQ2x1c3RlckNyZWF0ZWQgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXND
b25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVu
dD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRQcm9i
ZUNsdXN0ZXJDcmVhdGVkPiBDb3B5KCkgY29uc3Q7CisKKyAgaW50MzJfdCBpZCgpIGNvbnN0IHsg
cmV0dXJuIGlkXzsgfQorICBpbnQzMl90IGJpdHJhdGVfYnBzKCkgY29uc3QgeyByZXR1cm4gYml0
cmF0ZV9icHNfOyB9CisgIHVpbnQzMl90IG1pbl9wcm9iZXMoKSBjb25zdCB7IHJldHVybiBtaW5f
cHJvYmVzXzsgfQorICB1aW50MzJfdCBtaW5fYnl0ZXMoKSBjb25zdCB7IHJldHVybiBtaW5fYnl0
ZXNfOyB9CisKKyBwcml2YXRlOgorICBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQoY29uc3Qg
UnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkJiBvdGhlcik7CiAKICAgY29uc3QgaW50MzJfdCBp
ZF87CiAgIGNvbnN0IGludDMyX3QgYml0cmF0ZV9icHNfOwogICBjb25zdCB1aW50MzJfdCBtaW5f
cHJvYmVzXzsKICAgY29uc3QgdWludDMyX3QgbWluX2J5dGVzXzsKLQotIHByaXZhdGU6Ci0gIFJ0
Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZChjb25zdCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0
ZWQmIG90aGVyKTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9mYWlsdXJlLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2
ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuY2MKaW5kZXggYWE2MDkxY2E3NzVi
NTRiOTJkYjkwOGE3MWUwMTE1NDY1NjVmMjhiNi4uMjk1MDAzYWU4ZDA0OTExNDExNGUyNDk0ZjQ4
ZTcwNThiMWI3YjQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVf
cmVzdWx0X2ZhaWx1cmUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVz
dWx0X2ZhaWx1cmUuY2MKQEAgLTMzLDggKzMzLDEwIEBAIGJvb2wgUnRjRXZlbnRQcm9iZVJlc3Vs
dEZhaWx1cmU6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZTo6Q29w
eSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNF
dmVudFByb2JlUmVzdWx0RmFpbHVyZSgqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
UHJvYmVSZXN1bHRGYWlsdXJlPiBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZTo6Q29weSgpCisg
ICAgY29uc3QgeworICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudFByb2JlUmVzdWx0
RmFpbHVyZT4oCisgICAgICBuZXcgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUoKnRoaXMpKTsK
IH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X3Byb2JlX3Jlc3VsdF9mYWlsdXJlLmgKaW5kZXggMTgxYzY5NDAzNzBkZGQwNjM2Yzk5ZTIxZTU1
MmI5NjVjMzRmMjg5OC4uMGM0MGYwY2QxYjExZWI5MzA5ZmM2YTZhY2Y3ZjljNWJkYjY3ZWNjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfZmFpbHVyZS5oCkBA
IC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FVkVOVFNfUlRD
X0VWRU5UX1BST0JFX1JFU1VMVF9GQUlMVVJFX0hfCiAjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5U
X0xPR19FVkVOVFNfUlRDX0VWRU5UX1BST0JFX1JFU1VMVF9GQUlMVVJFX0hfCiAKKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgpAQCAtMzMsMTMgKzM0LDE2IEBAIGNsYXNzIFJ0
Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlIGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50IHsKIAogICBi
b29sIElzQ29uZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8
UnRjRXZlbnQ+IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2
ZW50UHJvYmVSZXN1bHRGYWlsdXJlPiBDb3B5KCkgY29uc3Q7CiAKLSAgY29uc3QgaW50MzJfdCBp
ZF87Ci0gIGNvbnN0IFByb2JlRmFpbHVyZVJlYXNvbiBmYWlsdXJlX3JlYXNvbl87CisgIGludDMy
X3QgaWQoKSBjb25zdCB7IHJldHVybiBpZF87IH0KKyAgUHJvYmVGYWlsdXJlUmVhc29uIGZhaWx1
cmVfcmVhc29uKCkgY29uc3QgeyByZXR1cm4gZmFpbHVyZV9yZWFzb25fOyB9CiAKICBwcml2YXRl
OgogICBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZShjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0
RmFpbHVyZSYgb3RoZXIpOworCisgIGNvbnN0IGludDMyX3QgaWRfOworICBjb25zdCBQcm9iZUZh
aWx1cmVSZWFzb24gZmFpbHVyZV9yZWFzb25fOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X3N1Y2Nl
c3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfc3VjY2Vzcy5jYwpp
bmRleCA1NTkwNzI5NWRlYmQ2MTNkOTM1MDhkYmU3NWI2ZDEwZTZjYzNhMmNjLi5kNWY5ZTJmNzgw
Y2E5Nzc1NjZmNDFjNGMzMzM0YTVlMTQ0MmQ2OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfc3VjY2Vzcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF9wcm9iZV9yZXN1bHRfc3VjY2Vzcy5jYwpAQCAtMzIsOCArMzIsMTAgQEAgYm9vbCBS
dGNFdmVudFByb2JlUmVzdWx0U3VjY2Vzczo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0
dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50UHJvYmVS
ZXN1bHRTdWNjZXNzOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxS
dGNFdmVudD4obmV3IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzKCp0aGlzKSk7CitzdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3M+IFJ0Y0V2ZW50UHJvYmVSZXN1bHRT
dWNjZXNzOjpDb3B5KCkKKyAgICBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0
Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzPigKKyAgICAgIG5ldyBSdGNFdmVudFByb2JlUmVzdWx0
U3VjY2VzcygqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfc3VjY2Vzcy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X3N1Y2Nlc3MuaAppbmRleCAxNWZmMTgzM2Jm
MDRkMWM2MmFkYTEzNmVkMzgwM2RiZmRjYmQ1OWE5Li5hMDhkYWRkMjEyYmE4MjNmMDU4ZmQyOTI1
MzI4ZGI2MDAzNmFjM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9i
ZV9yZXN1bHRfc3VjY2Vzcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jl
c3VsdF9zdWNjZXNzLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lOR19SVENfRVZF
TlRfTE9HX0VWRU5UU19SVENfRVZFTlRfUFJPQkVfUkVTVUxUX1NVQ0NFU1NfSF8KICNkZWZpbmUg
TE9HR0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfUFJPQkVfUkVTVUxUX1NVQ0NF
U1NfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCkBAIC0yNiwxMyAr
MjcsMTYgQEAgY2xhc3MgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3MgZmluYWwgOiBwdWJsaWMg
UnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
IHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6
OnVuaXF1ZV9wdHI8UnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3M+IENvcHkoKSBjb25zdDsKIAot
ICBjb25zdCBpbnQzMl90IGlkXzsKLSAgY29uc3QgaW50MzJfdCBiaXRyYXRlX2Jwc187CisgIGlu
dDMyX3QgaWQoKSBjb25zdCB7IHJldHVybiBpZF87IH0KKyAgaW50MzJfdCBiaXRyYXRlX2Jwcygp
IGNvbnN0IHsgcmV0dXJuIGJpdHJhdGVfYnBzXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRQ
cm9iZVJlc3VsdFN1Y2Nlc3MoY29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3MmIG90aGVy
KTsKKworICBjb25zdCBpbnQzMl90IGlkXzsKKyAgY29uc3QgaW50MzJfdCBiaXRyYXRlX2Jwc187
CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9ydGNwX3BhY2tldF9pbmNvbWluZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X3J0Y3BfcGFja2V0X2luY29taW5nLmNjCmluZGV4IDExOTkzOGM3ZjcxODg0ODA5ZDU0ODJi
MDAwODQxMWMxNjBjZDc2ZTMuLjQ1YTQxOGYxZjY5YzJiYzc4NjA4NmNmZGU5OTA5ZmE3MWJmNDI4
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X2luY29t
aW5nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X2luY29taW5n
LmNjCkBAIC0zMyw4ICszMywxMCBAQCBib29sIFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nOjpJ
c0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudD4gUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmc6OkNvcHkoKSBjb25zdCB7
Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50PihuZXcgUnRjRXZlbnRSdGNwUGFj
a2V0SW5jb21pbmcoKnRoaXMpKTsKK3N0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0Y3BQYWNrZXRJ
bmNvbWluZz4gUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmc6OkNvcHkoKQorICAgIGNvbnN0IHsK
KyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmc+KAor
ICAgICAgbmV3IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nKCp0aGlzKSk7CiB9CiAKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0
Y3BfcGFja2V0X2luY29taW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tl
dF9pbmNvbWluZy5oCmluZGV4IDZkOTA0OTUzYTQ4YTg4NzZjMjM3MGViZDdlMDg5MjcyMzNjMjY3
N2UuLjgzOTRmZTAwNWNkNTYzODJhY2Y2M2ExMmUzOTA5MzhlMDZkYTRmMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X2luY29taW5nLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRjcF9wYWNrZXRfaW5jb21pbmcuaApAQCAtMTEsNiArMTEs
NyBAQAogI2lmbmRlZiBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9SVENQ
X1BBQ0tFVF9JTkNPTUlOR19IXwogI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRT
X1JUQ19FVkVOVF9SVENQX1BBQ0tFVF9JTkNPTUlOR19IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKQEAgLTI4
LDEyICsyOSwxNCBAQCBjbGFzcyBSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZyBmaW5hbCA6IHB1
YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7Cisg
IHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZz4gQ29weSgpIGNvbnN0
OwogCi0gIHJ0Yzo6QnVmZmVyIHBhY2tldF87CisgIGNvbnN0IHJ0Yzo6QnVmZmVyJiBwYWNrZXQo
KSBjb25zdCB7IHJldHVybiBwYWNrZXRfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudFJ0Y3BQ
YWNrZXRJbmNvbWluZyhjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZyYgb3RoZXIpOwor
CisgIHJ0Yzo6QnVmZmVyIHBhY2tldF87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9vdXRnb2luZy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X291dGdvaW5nLmNjCmluZGV4
IDQwODVhYzBmMzEzNjJhZWY5ZDVlNTdmMjEyOTA5NWRlOTNlNmE3NDQuLmI1ODNlNTYxNGEyMDQw
Y2U4ZWE3MjRjZjBlZDk2YThlYjNmZTI0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X3J0Y3BfcGFja2V0X291dGdvaW5nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X3J0Y3BfcGFja2V0X291dGdvaW5nLmNjCkBAIC0zMyw4ICszMywxMCBAQCBib29sIFJ0Y0V2
ZW50UnRjcFBhY2tldE91dGdvaW5nOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRSdGNwUGFja2V0
T3V0Z29pbmc6OkNvcHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2
ZW50PihuZXcgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcoKnRoaXMpKTsKK3N0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZz4gUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29p
bmc6OkNvcHkoKQorICAgIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZl
bnRSdGNwUGFja2V0T3V0Z29pbmc+KAorICAgICAgbmV3IFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdv
aW5nKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X291dGdvaW5nLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9vdXRnb2luZy5oCmluZGV4IDNhYTllNzE5OWFkNjMz
YzFlNzY2MWI0OTI2MTNhYmRmNjAwOGU4ZGUuLmI0N2I4NWQwYjM2MzVkMThiMDcxZTQ2NWQ2Yjg2
NGZmZWMwOTA5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFj
a2V0X291dGdvaW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRjcF9wYWNrZXRf
b3V0Z29pbmcuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBMT0dHSU5HX1JUQ19FVkVOVF9M
T0dfRVZFTlRTX1JUQ19FVkVOVF9SVENQX1BBQ0tFVF9PVVRHT0lOR19IXwogI2RlZmluZSBMT0dH
SU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9SVENQX1BBQ0tFVF9PVVRHT0lOR19I
XwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAi
YXBpL2FycmF5X3ZpZXcuaCIKQEAgLTI4LDEyICsyOSwxNCBAQCBjbGFzcyBSdGNFdmVudFJ0Y3BQ
YWNrZXRPdXRnb2luZyBmaW5hbCA6IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZp
Z0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBD
b3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0Y3BQYWNr
ZXRPdXRnb2luZz4gQ29weSgpIGNvbnN0OwogCi0gIHJ0Yzo6QnVmZmVyIHBhY2tldF87CisgIGNv
bnN0IHJ0Yzo6QnVmZmVyJiBwYWNrZXQoKSBjb25zdCB7IHJldHVybiBwYWNrZXRfOyB9CiAKICBw
cml2YXRlOgogICBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZyhjb25zdCBSdGNFdmVudFJ0Y3BQ
YWNrZXRPdXRnb2luZyYgb3RoZXIpOworCisgIHJ0Yzo6QnVmZmVyIHBhY2tldF87CiB9OwogCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9ydHBfcGFja2V0X2luY29taW5nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3Bh
Y2tldF9pbmNvbWluZy5jYwppbmRleCA4ZTE1ZDAyMTc1MWI2ODVjZjlhNWNjZWFkNGIyMTc4ZTgx
ODc5MmE5Li44OThjMGFhZjhlZTY0ZjE1YjBmNGFjNmU4Nzk5MzQ2ZGRkYmNiNDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuY2MKQEAgLTEyLDE4
ICsxMiwyNiBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogUnRjRXZlbnRSdHBQ
YWNrZXRJbmNvbWluZzo6UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZygKICAgICBjb25zdCBSdHBQ
YWNrZXRSZWNlaXZlZCYgcGFja2V0KQotICAgIDogcGFja2V0X2xlbmd0aF8ocGFja2V0LnNpemUo
KSkgeworICAgIDogcGF5bG9hZF9sZW5ndGhfKHBhY2tldC5wYXlsb2FkX3NpemUoKSksCisgICAg
ICBoZWFkZXJfbGVuZ3RoXyhwYWNrZXQuaGVhZGVyc19zaXplKCkpLAorICAgICAgcGFkZGluZ19s
ZW5ndGhfKHBhY2tldC5wYWRkaW5nX3NpemUoKSkgewogICBoZWFkZXJfLkNvcHlIZWFkZXJGcm9t
KHBhY2tldCk7CisgIFJUQ19EQ0hFQ0tfRVEocGFja2V0LnNpemUoKSwKKyAgICAgICAgICAgICAg
ICBwYXlsb2FkX2xlbmd0aF8gKyBoZWFkZXJfbGVuZ3RoXyArIHBhZGRpbmdfbGVuZ3RoXyk7CiB9
CiAKIFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc6OlJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmco
CiAgICAgY29uc3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyYgb3RoZXIpCi0gICAgOiBSdGNF
dmVudChvdGhlci50aW1lc3RhbXBfdXNfKSwgcGFja2V0X2xlbmd0aF8ob3RoZXIucGFja2V0X2xl
bmd0aF8pIHsKKyAgICA6IFJ0Y0V2ZW50KG90aGVyLnRpbWVzdGFtcF91c18pLAorICAgICAgcGF5
bG9hZF9sZW5ndGhfKG90aGVyLnBheWxvYWRfbGVuZ3RoXyksCisgICAgICBoZWFkZXJfbGVuZ3Ro
XyhvdGhlci5oZWFkZXJfbGVuZ3RoXyksCisgICAgICBwYWRkaW5nX2xlbmd0aF8ob3RoZXIucGFk
ZGluZ19sZW5ndGhfKSB7CiAgIGhlYWRlcl8uQ29weUhlYWRlckZyb20ob3RoZXIuaGVhZGVyXyk7
CiB9CiAKQEAgLTM3LDggKzQ1LDEwIEBAIGJvb2wgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZzo6
SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc6OkNvcHkoKSBjb25zdCB7
Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50PihuZXcgUnRjRXZlbnRSdHBQYWNr
ZXRJbmNvbWluZygqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0SW5j
b21pbmc+IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc6OkNvcHkoKQorICAgIGNvbnN0IHsKKyAg
cmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZz4oCisgICAg
ICBuZXcgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZygqdGhpcykpOwogfQogCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFj
a2V0X2luY29taW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29t
aW5nLmgKaW5kZXggNmIxNDFiNmQ1NzYyMmU2ZDI5YjE5YTYxNzQ5ZmI2Y2IzMzYxMzljNS4uMWUz
NTczNTFiM2NmMjZkYTAzMWM4ZjFiOThmOTVmMjM4OWZhZmY3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVu
dHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuaApAQCAtMjksMTMgKzI5LDI0IEBAIGNs
YXNzIFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewog
CiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8
UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZz4gQ29weSgpIGNvbnN0OwogCi0gIFJ0cFBhY2tldCBo
ZWFkZXJfOyAgICAgICAgICAgIC8vIE9ubHkgdGhlIHBhY2tldCdzIGhlYWRlciB3aWxsIGJlIHN0
b3JlZCBoZXJlLgotICBjb25zdCBzaXplX3QgcGFja2V0X2xlbmd0aF87ICAvLyBMZW5ndGggYmVm
b3JlIHN0cmlwcGluZyBhd2F5IGFsbCBidXQgaGVhZGVyLgorICBzaXplX3QgcGFja2V0X2xlbmd0
aCgpIGNvbnN0IHsKKyAgICByZXR1cm4gcGF5bG9hZF9sZW5ndGhfICsgaGVhZGVyX2xlbmd0aF8g
KyBwYWRkaW5nX2xlbmd0aF87CisgIH0KKworICBjb25zdCBSdHBQYWNrZXQmIGhlYWRlcigpIGNv
bnN0IHsgcmV0dXJuIGhlYWRlcl87IH0KKyAgc2l6ZV90IHBheWxvYWRfbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gcGF5bG9hZF9sZW5ndGhfOyB9CisgIHNpemVfdCBoZWFkZXJfbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gaGVhZGVyX2xlbmd0aF87IH0KKyAgc2l6ZV90IHBhZGRpbmdfbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gcGFkZGluZ19sZW5ndGhfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVu
dFJ0cFBhY2tldEluY29taW5nKGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcmIG90aGVy
KTsKKworICBSdHBQYWNrZXQgaGVhZGVyXzsgICAgICAgICAgICAvLyBPbmx5IHRoZSBwYWNrZXQn
cyBoZWFkZXIgd2lsbCBiZSBzdG9yZWQgaGVyZS4KKyAgY29uc3Qgc2l6ZV90IHBheWxvYWRfbGVu
Z3RoXzsgIC8vIE1lZGlhIHBheWxvYWQsIGV4Y2x1ZGluZyBoZWFkZXIgYW5kIHBhZGRpbmcuCisg
IGNvbnN0IHNpemVfdCBoZWFkZXJfbGVuZ3RoXzsgICAvLyBSVFAgaGVhZGVyLgorICBjb25zdCBz
aXplX3QgcGFkZGluZ19sZW5ndGhfOyAgLy8gUlRQIHBhZGRpbmcuCiB9OwogCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFj
a2V0X291dGdvaW5nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9vdXRn
b2luZy5jYwppbmRleCAxMDM0NDBhZDZlOTY2MWRhZGVkMGZlMWZlYWMyNWEwMjJkZjBkYTNmLi4w
NTA0NzRlZGRhN2MwMmMwY2ZmNGYzNDczMGIwYWQ2YTdmNGQ5ZjdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X291dGdvaW5nLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
dmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfb3V0Z29pbmcuY2MKQEAgLTEyLDIwICsxMiwyOCBA
QAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBSdGNFdmVudFJ0cFBhY2tldE91dGdv
aW5nOjpSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nKAogICAgIGNvbnN0IFJ0cFBhY2tldFRvU2Vu
ZCYgcGFja2V0LAogICAgIGludCBwcm9iZV9jbHVzdGVyX2lkKQotICAgIDogcGFja2V0X2xlbmd0
aF8ocGFja2V0LnNpemUoKSksIHByb2JlX2NsdXN0ZXJfaWRfKHByb2JlX2NsdXN0ZXJfaWQpIHsK
KyAgICA6IHBheWxvYWRfbGVuZ3RoXyhwYWNrZXQucGF5bG9hZF9zaXplKCkpLAorICAgICAgaGVh
ZGVyX2xlbmd0aF8ocGFja2V0LmhlYWRlcnNfc2l6ZSgpKSwKKyAgICAgIHBhZGRpbmdfbGVuZ3Ro
XyhwYWNrZXQucGFkZGluZ19zaXplKCkpLAorICAgICAgcHJvYmVfY2x1c3Rlcl9pZF8ocHJvYmVf
Y2x1c3Rlcl9pZCkgewogICBoZWFkZXJfLkNvcHlIZWFkZXJGcm9tKHBhY2tldCk7CisgIFJUQ19E
Q0hFQ0tfRVEocGFja2V0LnNpemUoKSwKKyAgICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aF8g
KyBoZWFkZXJfbGVuZ3RoXyArIHBhZGRpbmdfbGVuZ3RoXyk7CiB9CiAKIFJ0Y0V2ZW50UnRwUGFj
a2V0T3V0Z29pbmc6OlJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcoCiAgICAgY29uc3QgUnRjRXZl
bnRSdHBQYWNrZXRPdXRnb2luZyYgb3RoZXIpCiAgICAgOiBSdGNFdmVudChvdGhlci50aW1lc3Rh
bXBfdXNfKSwKLSAgICAgIHBhY2tldF9sZW5ndGhfKG90aGVyLnBhY2tldF9sZW5ndGhfKSwKKyAg
ICAgIHBheWxvYWRfbGVuZ3RoXyhvdGhlci5wYXlsb2FkX2xlbmd0aF8pLAorICAgICAgaGVhZGVy
X2xlbmd0aF8ob3RoZXIuaGVhZGVyX2xlbmd0aF8pLAorICAgICAgcGFkZGluZ19sZW5ndGhfKG90
aGVyLnBhZGRpbmdfbGVuZ3RoXyksCiAgICAgICBwcm9iZV9jbHVzdGVyX2lkXyhvdGhlci5wcm9i
ZV9jbHVzdGVyX2lkXykgewogICBoZWFkZXJfLkNvcHlIZWFkZXJGcm9tKG90aGVyLmhlYWRlcl8p
OwogfQpAQCAtNDAsOCArNDgsMTAgQEAgYm9vbCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nOjpJ
c0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudD4gUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZzo6Q29weSgpIGNvbnN0IHsK
LSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNFdmVudFJ0cFBhY2tl
dE91dGdvaW5nKCp0aGlzKSk7CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRPdXRn
b2luZz4gUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZzo6Q29weSgpCisgICAgY29uc3QgeworICBy
ZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nPigKKyAgICAg
IG5ldyBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNr
ZXRfb3V0Z29pbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfb3V0Z29p
bmcuaAppbmRleCAxNzFhMjFjNDIwZTQxNjc2ZjNmMzMwNTBjYWNjMWM2ZTJkNjFjNDU1Li5lYmRk
YzE0MjMxZjNhZjE5M2YyZDAyMjNkMzM3OTY2ZjAxN2M1MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X291dGdvaW5nLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9vdXRnb2luZy5oCkBAIC0zMCwxNCArMzAsMjcgQEAgY2xh
c3MgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZyBmaW5hbCA6IHB1YmxpYyBSdGNFdmVudCB7CiAK
ICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgc3RkOjp1bmlxdWVf
cHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudFJ0cFBhY2tldE91dGdvaW5nPiBDb3B5KCkgY29uc3Q7CiAKLSAgUnRwUGFja2V0IGhl
YWRlcl87ICAgICAgICAgICAgLy8gT25seSB0aGUgcGFja2V0J3MgaGVhZGVyIHdpbGwgYmUgc3Rv
cmVkIGhlcmUuCi0gIGNvbnN0IHNpemVfdCBwYWNrZXRfbGVuZ3RoXzsgIC8vIExlbmd0aCBiZWZv
cmUgc3RyaXBwaW5nIGF3YXkgYWxsIGJ1dCBoZWFkZXIuCi0gIGNvbnN0IGludCBwcm9iZV9jbHVz
dGVyX2lkXzsKKyAgc2l6ZV90IHBhY2tldF9sZW5ndGgoKSBjb25zdCB7CisgICAgcmV0dXJuIHBh
eWxvYWRfbGVuZ3RoXyArIGhlYWRlcl9sZW5ndGhfICsgcGFkZGluZ19sZW5ndGhfOworICB9CisK
KyAgY29uc3QgUnRwUGFja2V0JiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiBoZWFkZXJfOyB9Cisg
IHNpemVfdCBwYXlsb2FkX2xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHBheWxvYWRfbGVuZ3RoXzsg
fQorICBzaXplX3QgaGVhZGVyX2xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGhlYWRlcl9sZW5ndGhf
OyB9CisgIHNpemVfdCBwYWRkaW5nX2xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHBhZGRpbmdfbGVu
Z3RoXzsgfQorICBpbnQgcHJvYmVfY2x1c3Rlcl9pZCgpIGNvbnN0IHsgcmV0dXJuIHByb2JlX2Ns
dXN0ZXJfaWRfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nKGNv
bnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcmIG90aGVyKTsKKworICBSdHBQYWNrZXQgaGVh
ZGVyXzsgICAgICAgICAgICAvLyBPbmx5IHRoZSBwYWNrZXQncyBoZWFkZXIgd2lsbCBiZSBzdG9y
ZWQgaGVyZS4KKyAgY29uc3Qgc2l6ZV90IHBheWxvYWRfbGVuZ3RoXzsgIC8vIE1lZGlhIHBheWxv
YWQsIGV4Y2x1ZGluZyBoZWFkZXIgYW5kIHBhZGRpbmcuCisgIGNvbnN0IHNpemVfdCBoZWFkZXJf
bGVuZ3RoXzsgICAvLyBSVFAgaGVhZGVyLgorICBjb25zdCBzaXplX3QgcGFkZGluZ19sZW5ndGhf
OyAgLy8gUlRQIHBhZGRpbmcuCisgIC8vIFRPRE8oZWxhZGFsb24pOiBEZWxldGUgfHByb2JlX2Ns
dXN0ZXJfaWRffCBhbG9uZyB3aXRoIGxlZ2FjeSBlbmNvZGluZy4KKyAgY29uc3QgaW50IHByb2Jl
X2NsdXN0ZXJfaWRfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmNjCmlu
ZGV4IDdmNGRkOWI3YjgwN2M0YjEyZmQzODliZDQyNmQ0ZmRlYjZjNTg2NDAuLjVkZWM5N2JmODM3
NzJlOTEyYjE5ODZiMDIyMjFjNTVkOWU4OGUyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF92aWRlb19yZWNlaXZlX3N0cmVhbV9jb25maWcuY2MKQEAgLTEzLDEyICsx
MywxNSBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1v
cnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKIFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnOjpSdGNFdmVudFZpZGVvUmVjZWl2
ZVN0cmVhbUNvbmZpZygKICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjbG9nOjpTdHJlYW1Db25maWc+
IGNvbmZpZykKLSAgICA6IGNvbmZpZ18oc3RkOjptb3ZlKGNvbmZpZykpIHt9CisgICAgOiBjb25m
aWdfKHN0ZDo6bW92ZShjb25maWcpKSB7CisgIFJUQ19EQ0hFQ0soY29uZmlnXyk7Cit9CiAKIFJ0
Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnOjpSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVh
bUNvbmZpZygKICAgICBjb25zdCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3Ro
ZXIpCkBAIC0zNSw4ICszOCw5IEBAIGJvb2wgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25m
aWc6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnOjpDb3B5
KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4oCitzdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWc+CitSdGNFdmVudFZpZGVv
UmVjZWl2ZVN0cmVhbUNvbmZpZzo6Q29weSgpIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBV
bmlxdWU8UnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWc+KAogICAgICAgbmV3IFJ0Y0V2
ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnKCp0aGlzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgKaW5kZXgg
YzYyNjNjM2ZkYmUyMmM3Y2NiNjkxZDdiZTg4MjU1MDIzNWZmNDQ4Mi4uODAxYmE3ZGRkNDRkODE0
NjhlNDE1NGY2MWMyNzFhNjI1ZTEyYmFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgKQEAgLTI4LDEzICsyOCwxNSBA
QCBjbGFzcyBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyBmaW5hbCA6IHB1YmxpYyBS
dGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZz4gQ29weSgpIGNvbnN0
OwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZz4g
Y29uZmlnXzsKKyAgY29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWcmIGNvbmZpZygpIGNvbnN0IHsg
cmV0dXJuICpjb25maWdfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0
cmVhbUNvbmZpZygKICAgICAgIGNvbnN0IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmln
JiBvdGhlcik7CisKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IHJ0Y2xvZzo6U3RyZWFt
Q29uZmlnPiBjb25maWdfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlnLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlnLmNjCmluZGV4
IGI0Yjc4YThhNTJhNzVjMTNjY2VjNmY3MTRhMTNlMzA1MzU0NjViYmQuLmRjNGIxNjc0MzhjYmE3
OTNlMWFlYzg4OGFkYzE2NDcyY2JmODljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF92aWRlb19zZW5kX3N0cmVhbV9jb25maWcuY2MKQEAgLTM1LDggKzM1LDEwIEBAIGJv
b2wgUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWc6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7
CiAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50
VmlkZW9TZW5kU3RyZWFtQ29uZmlnOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3Jh
cFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKCp0aGlz
KSk7CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWc+CitSdGNF
dmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZzo6Q29weSgpIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6
OldyYXBVbmlxdWU8UnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWc+KAorICAgICAgbmV3IFJ0
Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3NlbmRf
c3RyZWFtX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJl
YW1fY29uZmlnLmgKaW5kZXggMzQ3MmY4ODU1YmU2NjlkZDEzY2E2OGViNjUxZTE4ODUzYTUzZWIw
Zi4uZmUyNzRjOGMzYTU1ZmQzNTBmODNhZDUwMGNlYTQ4MjA2MmIyOTZjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlnLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlnLmgKQEAgLTI4
LDEyICsyOCwxNCBAQCBjbGFzcyBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZyBmaW5hbCA6
IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7
CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZz4gQ29weSgp
IGNvbnN0OwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVhbUNv
bmZpZz4gY29uZmlnXzsKKyAgY29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWcmIGNvbmZpZygpIGNv
bnN0IHsgcmV0dXJuICpjb25maWdfOyB9CiAKICBwcml2YXRlOgogICBSdGNFdmVudFZpZGVvU2Vu
ZFN0cmVhbUNvbmZpZyhjb25zdCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZyYgb3RoZXIp
OworCisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZz4g
Y29uZmlnXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ydGNfZXZlbnRfbG9nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuY2MKaW5kZXggNzNhNTk4
ZDZiMWUzMmE4YzQxOGEyMzMyODE2NWRkOGUyYjEyYzhlZS4uYjQ4ZmU5MjM0ZmQ3NGZjNzJhODkx
MWZmNGJhYWM1NWE3MTYwNGJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuY2MKQEAgLTEwLDggKzEwLDE0IEBACiAKICNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgogCisjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCitzdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnRMb2c+IFJ0Y0V2ZW50TG9nOjpDcmVhdGVOdWxsKCkgeworICByZXR1cm4g
YWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dOdWxsSW1wbD4oKTsKK30KKwogYm9vbCBSdGNF
dmVudExvZ051bGxJbXBsOjpTdGFydExvZ2dpbmcoCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2
ZW50TG9nT3V0cHV0PiBvdXRwdXQsCiAgICAgaW50NjRfdCBvdXRwdXRfcGVyaW9kX21zKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cu
aAppbmRleCAwYzcxNDA2OTAyNDFkODA4NzQwYTE5NDBlNzQ5MTg5ZTllNjRjNWMyLi43ZDkwMGMw
MDY4NmY4NjA3MjhjOTIwMjAwNGFmODFiZmExZGY4OGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRj
X2V2ZW50X2xvZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgKQEAgLTExLDkgKzExLDgg
QEAKICNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9HX1JUQ19FVkVOVF9MT0dfSF8KICNkZWZp
bmUgTE9HR0lOR19SVENfRVZFTlRfTE9HX1JUQ19FVkVOVF9MT0dfSF8KIAorI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8
dXRpbGl0eT4KIAogI2luY2x1ZGUgImFwaS9ydGNldmVudGxvZ291dHB1dC5oIgogI2luY2x1ZGUg
ImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCkBAIC0yOSwxMCArMjgs
OSBAQCBjbGFzcyBSdGNFdmVudExvZyB7CiAgIGVudW0gOiBzaXplX3QgeyBrVW5saW1pdGVkT3V0
cHV0ID0gMCB9OwogICBlbnVtIDogaW50NjRfdCB7IGtJbW1lZGlhdGVPdXRwdXQgPSAwIH07CiAK
LSAgLy8gVE9ETyhlbGFkYWxvbik6IFR3byBzdGFnZXMgYXJlIHVwY29taW5nLgotICAvLyAxLiBF
eHRlbmQgdGhpcyB0byBhY3R1YWxseSBzdXBwb3J0IHRoZSBuZXcgZW5jb2RpbmcuCi0gIC8vIDIu
IEdldCByaWQgb2YgdGhlIGxlZ2FjeSBlbmNvZGluZywgYWxsb3dpbmcgdXMgdG8gZ2V0IHJpZCBv
ZiB0aGlzIGVudW0uCi0gIGVudW0gY2xhc3MgRW5jb2RpbmdUeXBlIHsgTGVnYWN5IH07CisgIC8v
IFRPRE8oZWxhZGFsb24pOiAgR2V0IHJpZCBvZiB0aGUgbGVnYWN5IGVuY29kaW5nIGFuZCB0aGlz
IGVudW0gb25jZSBhbGwKKyAgLy8gY2xpZW50cyBoYXZlIG1pZ3JhdGVkIHRvIHRoZSBuZXcgZm9y
bWF0LgorICBlbnVtIGNsYXNzIEVuY29kaW5nVHlwZSB7IExlZ2FjeSwgTmV3Rm9ybWF0IH07CiAK
ICAgdmlydHVhbCB+UnRjRXZlbnRMb2coKSB7fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2
ZW50X2xvZzIucHJvdG8gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzIucHJvdG8KaW5kZXggNGNhYzQ1
NTNjZWQ0MzQ3YmEzYTI3ZDNiYjA4YWY0MTUyZDM3MTcyNS4uOTk1ODUzYjU2NWNjMWUxOGQzMGVk
OGJhY2QxODBhZjVkNzVhZDVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnBy
b3RvCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMi5wcm90bwpAQCAtMTAsMjAgKzEwLDE3IEBA
IHBhY2thZ2Ugd2VicnRjLnJ0Y2xvZzI7CiAvLyBzaW5nbGUgRXZlbnRTdHJlYW0gb2JqZWN0IGNv
bnRhaW5pbmcgdGhlIHNhbWUgZXZlbnRzLiBIZW5jZSwgaXQgaXMgbm90CiAvLyBuZWNlc3Nhcnkg
dG8gd2FpdCBmb3IgdGhlIGVudGlyZSBsb2cgdG8gYmUgY29tcGxldGUgYmVmb3JlIGJlZ2lubmlu
ZyB0bwogLy8gd3JpdGUgaXQgdG8gYSBmaWxlLgorLy8gTm90ZTogRm9yIGFsbCBYX2RlbHRhcyBm
aWVsZHMsIHdlIHJlbHkgb24gdGhlIGRlZmF1bHQgdmFsdWUgYmVpbmcgYW4KKy8vIGVtcHR5IHN0
cmluZy4KIG1lc3NhZ2UgRXZlbnRTdHJlYW0gewogICAvLyBEZXByZWNhdGVkIC0gTWFpbnRhaW5l
ZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbGQgZXZlbnQgbG9nLgotICAvLyBUT0RPKHRl
cmVsaXVzKTogTWF5YmUgd2UgY2FuIHJlbW92ZSB0aGlzIGFuZCBpbnN0ZWFkIGNoZWNrIHRoZSBz
dHJlYW0gZm9yCi0gIC8vIHByZXNlbmNlIG9mIGEgdmVyc2lvbiBmaWVsZC4gVGhhdCByZXF1aXJl
cyBhIGN1c3RvbSBwcm90b2J1ZiBwYXJzZXIsIGJ1dCB3ZQotICAvLyBoYXZlIHRoYXQgYWxyZWFk
eSBhbnl3YXkuCiAgIHJlcGVhdGVkIEV2ZW50IHN0cmVhbSA9IDEgW2RlcHJlY2F0ZWQgPSB0cnVl
XTsKLSAgLy8gcmVxdWlyZWQgLSBUaGUgdmVyc2lvbiBudW1iZXIgbXVzdCBiZSAyIGZvciB0aGlz
IHZlcnNpb24gb2YgdGhlIGV2ZW50IGxvZy4KLSAgb3B0aW9uYWwgdWludDMyIHZlcnNpb24gPSAy
OwotICByZXBlYXRlZCBJbmNvbWluZ1J0cFBhY2tldHMgaW5jb21pbmdfcnRwX3BhY2tldHMgPSAz
OwotICByZXBlYXRlZCBPdXRnb2luZ1J0cFBhY2tldHMgb3V0Z29pbmdfcnRwX3BhY2tldHMgPSA0
OwotICByZXBlYXRlZCBJbmNvbWluZ1J0Y3BQYWNrZXRzIGluY29taW5nX3J0Y3BfcGFja2V0cyA9
IDU7Ci0gIHJlcGVhdGVkIE91dGdvaW5nUnRjcFBhY2tldHMgb3V0Z29pbmdfcnRjcF9wYWNrZXRz
ID0gNjsKLSAgcmVwZWF0ZWQgQXVkaW9QbGF5b3V0RXZlbnRzIGF1ZGlvX3BsYXlvdXRfZXZlbnRz
ID0gNzsKLSAgLy8gVGhlIGZpZWxkIHRhZ3MgOC0xNSBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSBtb3N0
IGNvbW1vbiBldmVudHMKKyAgcmVwZWF0ZWQgSW5jb21pbmdSdHBQYWNrZXRzIGluY29taW5nX3J0
cF9wYWNrZXRzID0gMjsKKyAgcmVwZWF0ZWQgT3V0Z29pbmdSdHBQYWNrZXRzIG91dGdvaW5nX3J0
cF9wYWNrZXRzID0gMzsKKyAgcmVwZWF0ZWQgSW5jb21pbmdSdGNwUGFja2V0cyBpbmNvbWluZ19y
dGNwX3BhY2tldHMgPSA0OworICByZXBlYXRlZCBPdXRnb2luZ1J0Y3BQYWNrZXRzIG91dGdvaW5n
X3J0Y3BfcGFja2V0cyA9IDU7CisgIHJlcGVhdGVkIEF1ZGlvUGxheW91dEV2ZW50cyBhdWRpb19w
bGF5b3V0X2V2ZW50cyA9IDY7CisgIC8vIFRoZSBmaWVsZCB0YWdzIDctMTUgYXJlIHJlc2VydmVk
IGZvciB0aGUgbW9zdCBjb21tb24gZXZlbnRzLgogICByZXBlYXRlZCBCZWdpbkxvZ0V2ZW50IGJl
Z2luX2xvZ19ldmVudHMgPSAxNjsKICAgcmVwZWF0ZWQgRW5kTG9nRXZlbnQgZW5kX2xvZ19ldmVu
dHMgPSAxNzsKICAgcmVwZWF0ZWQgTG9zc0Jhc2VkQndlVXBkYXRlcyBsb3NzX2Jhc2VkX2J3ZV91
cGRhdGVzID0gMTg7CkBAIC0zMiw2ICsyOSw5IEBAIG1lc3NhZ2UgRXZlbnRTdHJlYW0gewogICBy
ZXBlYXRlZCBCd2VQcm9iZUNsdXN0ZXIgcHJvYmVfY2x1c3RlcnMgPSAyMTsKICAgcmVwZWF0ZWQg
QndlUHJvYmVSZXN1bHRTdWNjZXNzIHByb2JlX3N1Y2Nlc3MgPSAyMjsKICAgcmVwZWF0ZWQgQndl
UHJvYmVSZXN1bHRGYWlsdXJlIHByb2JlX2ZhaWx1cmUgPSAyMzsKKyAgcmVwZWF0ZWQgQWxyU3Rh
dGUgYWxyX3N0YXRlcyA9IDI0OworICByZXBlYXRlZCBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnIGlj
ZV9jYW5kaWRhdGVfY29uZmlncyA9IDI1OworICByZXBlYXRlZCBJY2VDYW5kaWRhdGVQYWlyRXZl
bnQgaWNlX2NhbmRpZGF0ZV9ldmVudHMgPSAyNjsKIAogICByZXBlYXRlZCBBdWRpb1JlY3ZTdHJl
YW1Db25maWcgYXVkaW9fcmVjdl9zdHJlYW1fY29uZmlncyA9IDEwMTsKICAgcmVwZWF0ZWQgQXVk
aW9TZW5kU3RyZWFtQ29uZmlnIGF1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZ3MgPSAxMDI7CkBAIC00
NSwxMzYgKzQ1LDIwNiBAQCBtZXNzYWdlIEV2ZW50IHsKIH0KIAogbWVzc2FnZSBJbmNvbWluZ1J0
cFBhY2tldHMgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMg
PSAxOwogCi0gIC8vIFJUUCBtYXJrZXIgYml0LCB1c2VkIHRvIGxhYmVsIGJvdW5kYXJpZXMgd2l0
aGluIGUuZy4gdmlkZW8gZnJhbWVzLgorICAvLyByZXF1aXJlZCAtIFJUUCBtYXJrZXIgYml0LCB1
c2VkIHRvIGxhYmVsIGJvdW5kYXJpZXMgYmV0d2VlbiB2aWRlbyBmcmFtZXMuCiAgIG9wdGlvbmFs
IGJvb2wgbWFya2VyID0gMjsKIAotICAvLyBSVFAgcGF5bG9hZCB0eXBlLgorICAvLyByZXF1aXJl
ZCAtIFJUUCBwYXlsb2FkIHR5cGUuCiAgIG9wdGlvbmFsIHVpbnQzMiBwYXlsb2FkX3R5cGUgPSAz
OwogCi0gIC8vIFJUUCBzZXF1ZW5jZSBudW1iZXIuCisgIC8vIHJlcXVpcmVkIC0gUlRQIHNlcXVl
bmNlIG51bWJlci4KICAgb3B0aW9uYWwgdWludDMyIHNlcXVlbmNlX251bWJlciA9IDQ7CiAKLSAg
Ly8gUlRQIG1vbm90b25pYyBjbG9jayB0aW1lc3RhbXAgKG5vdCBhY3R1YWwgdGltZSkuCisgIC8v
IHJlcXVpcmVkIC0gUlRQIG1vbm90b25pYyBjbG9jayB0aW1lc3RhbXAgKG5vdCBhY3R1YWwgdGlt
ZSkuCiAgIG9wdGlvbmFsIGZpeGVkMzIgcnRwX3RpbWVzdGFtcCA9IDU7CiAKLSAgLy8gU3luY2hy
b25pemF0aW9uIHNvdXJjZSBvZiB0aGlzIHBhY2tldCdzIFJUUCBzdHJlYW0uCisgIC8vIHJlcXVp
cmVkIC0gU3luY2hyb25pemF0aW9uIHNvdXJjZSBvZiB0aGlzIHBhY2tldCdzIFJUUCBzdHJlYW0u
CiAgIG9wdGlvbmFsIGZpeGVkMzIgc3NyYyA9IDY7CiAKICAgLy8gVE9ETyh0ZXJlbGl1cy9kaW5v
cik6IEFkZCBDU1JDcy4gRmllbGQgbnVtYmVyIDcgcmVzZXJ2ZWQgZm9yIHRoaXMgcHVycG9zZS4K
IAotICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIG9mIHRoZSBwYWNrZXQgaW5jbHVkaW5nIGJvdGgg
cGF5bG9hZCBhbmQgaGVhZGVyLgotICBvcHRpb25hbCB1aW50MzIgcGFja2V0X3NpemUgPSA4Owor
ICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIG1lZGlhIHBheWxvYWQs
IG5vdCBpbmNsdWRpbmcKKyAgLy8gUlRQIGhlYWRlciBvciBwYWRkaW5nLiBUaGUgcGFja2V0IHNp
emUgaXMgdGhlIHN1bSBvZiBwYXlsb2FkLCBoZWFkZXIgYW5kCisgIC8vIHBhZGRpbmcuCisgIG9w
dGlvbmFsIHVpbnQzMiBwYXlsb2FkX3NpemUgPSA4OworCisgIC8vIHJlcXVpcmVkIC0gVGhlIHNp
emUgKGluIGJ5dGVzKSBvZiB0aGUgUlRQIGhlYWRlci4KKyAgb3B0aW9uYWwgdWludDMyIGhlYWRl
cl9zaXplID0gOTsKKworICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhl
IHBhZGRpbmcuCisgIG9wdGlvbmFsIHVpbnQzMiBwYWRkaW5nX3NpemUgPSAxMDsKKworICAvLyBv
cHRpb25hbCAtIHJlcXVpcmVkIGlmIHRoZSBiYXRjaCBjb250YWlucyBkZWx0YSBlbmNvZGVkIGV2
ZW50cy4KKyAgb3B0aW9uYWwgdWludDMyIG51bWJlcl9vZl9kZWx0YXMgPSAxMTsKKworICAvLyBG
aWVsZCBudW1iZXJzIDEyLTE0IHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLgogCiAgIC8vIE9wdGlv
bmFsIGhlYWRlciBleHRlbnNpb25zLgotICBvcHRpb25hbCBpbnQzMiB0cmFuc21pc3Npb25fdGlt
ZV9vZmZzZXQgPSA5OwotICBvcHRpb25hbCB1aW50MzIgYWJzb2x1dGVfc2VuZF90aW1lID0gMTA7
Ci0gIG9wdGlvbmFsIHVpbnQzMiB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyID0gMTE7Ci0gIG9w
dGlvbmFsIHVpbnQzMiBhdWRpb19sZXZlbCA9IDEyOwotICAvLyBUT0RPKHRlcmVsaXVzKTogQWRk
IGhlYWRlciBleHRlbnNpb25zIGxpa2UgdmlkZW8gcm90YXRpb24sIHBsYXlvdXQgZGVsYXk/Ci0K
LSAgLy8gRGVsdGEgZW5jb2RpbmdzCi0gIG9wdGlvbmFsIGJ5dGVzIHRpbWVzdGFtcF9kZWx0YXNf
bXMgPSAxMDE7CisgIG9wdGlvbmFsIHVpbnQzMiB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyID0g
MTU7CisgIG9wdGlvbmFsIGludDMyIHRyYW5zbWlzc2lvbl90aW1lX29mZnNldCA9IDE2OworICBv
cHRpb25hbCB1aW50MzIgYWJzb2x1dGVfc2VuZF90aW1lID0gMTc7CisgIG9wdGlvbmFsIHVpbnQz
MiB2aWRlb19yb3RhdGlvbiA9IDE4OworICAvLyB8YXVkaW9fbGV2ZWx8IGFuZCB8dm9pY2VfYWN0
aXZpdHl8IGFyZSBhbHdheXMgdXNlZCBpbiBjb25qdW5jdGlvbi4KKyAgb3B0aW9uYWwgdWludDMy
IGF1ZGlvX2xldmVsID0gMTk7CisgIG9wdGlvbmFsIGJvb2wgdm9pY2VfYWN0aXZpdHkgPSAyMDsK
KyAgLy8gVE9ETyh0ZXJlbGl1cyk6IEFkZCBvdGhlciBoZWFkZXIgZXh0ZW5zaW9ucyBsaWtlIHBs
YXlvdXQgZGVsYXk/CisKKyAgLy8gRGVsdGEgZW5jb2RpbmdzLgorICBvcHRpb25hbCBieXRlcyB0
aW1lc3RhbXBfbXNfZGVsdGFzID0gMTAxOwogICBvcHRpb25hbCBieXRlcyBtYXJrZXJfZGVsdGFz
ID0gMTAyOwogICBvcHRpb25hbCBieXRlcyBwYXlsb2FkX3R5cGVfZGVsdGFzID0gMTAzOwogICBv
cHRpb25hbCBieXRlcyBzZXF1ZW5jZV9udW1iZXJfZGVsdGFzID0gMTA0OwogICBvcHRpb25hbCBi
eXRlcyBydHBfdGltZXN0YW1wX2RlbHRhcyA9IDEwNTsKKyAgLy8gRmllbGQgbnVtYmVyIDEwNyBy
ZXNlcnZlZCBmb3IgQ1NSQy4KICAgb3B0aW9uYWwgYnl0ZXMgc3NyY19kZWx0YXMgPSAxMDY7Ci0g
IG9wdGlvbmFsIGJ5dGVzIHBhY2tldF9zaXplX2RlbHRhcyA9IDEwNzsKLSAgb3B0aW9uYWwgYnl0
ZXMgdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X2RlbHRhcyA9IDEwODsKLSAgb3B0aW9uYWwgYnl0
ZXMgYWJzb2x1dGVfc2VuZF90aW1lX2RlbHRhcyA9IDEwOTsKLSAgb3B0aW9uYWwgYnl0ZXMgdHJh
bnNwb3J0X3NlcXVlbmNlX251bWJlcl9kZWx0YXMgPSAxMTA7Ci0gIG9wdGlvbmFsIGJ5dGVzIGF1
ZGlvX2xldmVsX2RlbHRhcyA9IDExMTsKKyAgb3B0aW9uYWwgYnl0ZXMgcGF5bG9hZF9zaXplX2Rl
bHRhcyA9IDEwODsKKyAgb3B0aW9uYWwgYnl0ZXMgaGVhZGVyX3NpemVfZGVsdGFzID0gMTA5Owor
ICBvcHRpb25hbCBieXRlcyBwYWRkaW5nX3NpemVfZGVsdGFzID0gMTEwOworICAvLyBGaWVsZCBu
dW1iZXIgMTExLTExNCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4KKyAgb3B0aW9uYWwgYnl0ZXMg
dHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9kZWx0YXMgPSAxMTU7CisgIG9wdGlvbmFsIGJ5dGVz
IHRyYW5zbWlzc2lvbl90aW1lX29mZnNldF9kZWx0YXMgPSAxMTY7CisgIG9wdGlvbmFsIGJ5dGVz
IGFic29sdXRlX3NlbmRfdGltZV9kZWx0YXMgPSAxMTc7CisgIG9wdGlvbmFsIGJ5dGVzIHZpZGVv
X3JvdGF0aW9uX2RlbHRhcyA9IDExODsKKyAgLy8gfGF1ZGlvX2xldmVsfCBhbmQgfHZvaWNlX2Fj
dGl2aXR5fCBhcmUgYWx3YXlzIHVzZWQgaW4gY29uanVuY3Rpb24uCisgIG9wdGlvbmFsIGJ5dGVz
IGF1ZGlvX2xldmVsX2RlbHRhcyA9IDExOTsKKyAgb3B0aW9uYWwgYnl0ZXMgdm9pY2VfYWN0aXZp
dHlfZGVsdGFzID0gMTIwOwogfQogCiBtZXNzYWdlIE91dGdvaW5nUnRwUGFja2V0cyB7CisgIC8v
IHJlcXVpcmVkCiAgIG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKLSAgLy8gUlRQ
IG1hcmtlciBiaXQsIHVzZWQgdG8gbGFiZWwgYm91bmRhcmllcyB3aXRoaW4gZS5nLiB2aWRlbyBm
cmFtZXMuCisgIC8vIHJlcXVpcmVkIC0gUlRQIG1hcmtlciBiaXQsIHVzZWQgdG8gbGFiZWwgYm91
bmRhcmllcyBiZXR3ZWVuIHZpZGVvIGZyYW1lcy4KICAgb3B0aW9uYWwgYm9vbCBtYXJrZXIgPSAy
OwogCisgIC8vIHJlcXVpcmVkIC0gUlRQIHBheWxvYWQgdHlwZS4KICAgb3B0aW9uYWwgdWludDMy
IHBheWxvYWRfdHlwZSA9IDM7CiAKLSAgLy8gUlRQIHNlcXVlbmNlIG51bWJlci4KKyAgLy8gcmVx
dWlyZWQgLSBSVFAgc2VxdWVuY2UgbnVtYmVyLgogICBvcHRpb25hbCB1aW50MzIgc2VxdWVuY2Vf
bnVtYmVyID0gNDsKIAotICAvLyBSVFAgbW9ub3RvbmljIGNsb2NrIHRpbWVzdGFtcCAobm90IGFj
dHVhbCB0aW1lKS4KKyAgLy8gcmVxdWlyZWQgLSBSVFAgbW9ub3RvbmljIGNsb2NrIHRpbWVzdGFt
cCAobm90IGFjdHVhbCB0aW1lKS4KICAgb3B0aW9uYWwgZml4ZWQzMiBydHBfdGltZXN0YW1wID0g
NTsKIAotICAvLyBTeW5jaHJvbml6YXRpb24gc291cmNlIG9mIHRoaXMgcGFja2V0J3MgUlRQIHN0
cmVhbS4KKyAgLy8gcmVxdWlyZWQgLSBTeW5jaHJvbml6YXRpb24gc291cmNlIG9mIHRoaXMgcGFj
a2V0J3MgUlRQIHN0cmVhbS4KICAgb3B0aW9uYWwgZml4ZWQzMiBzc3JjID0gNjsKIAogICAvLyBU
T0RPKHRlcmVsaXVzL2Rpbm9yKTogQWRkIENTUkNzLiBGaWVsZCBudW1iZXIgNyByZXNlcnZlZCBm
b3IgdGhpcyBwdXJwb3NlLgogCi0gIC8vIHJlcXVpcmVkIC0gVGhlIHNpemUgb2YgdGhlIHBhY2tl
dCBpbmNsdWRpbmcgYm90aCBwYXlsb2FkIGFuZCBoZWFkZXIuCi0gIG9wdGlvbmFsIHVpbnQzMiBw
YWNrZXRfc2l6ZSA9IDg7CisgIC8vIHJlcXVpcmVkIC0gVGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0
aGUgbWVkaWEgcGF5bG9hZCwgbm90IGluY2x1ZGluZworICAvLyBSVFAgaGVhZGVyIG9yIHBhZGRp
bmcuIFRoZSBwYWNrZXQgc2l6ZSBpcyB0aGUgc3VtIG9mIHBheWxvYWQsIGhlYWRlciBhbmQKKyAg
Ly8gcGFkZGluZy4KKyAgb3B0aW9uYWwgdWludDMyIHBheWxvYWRfc2l6ZSA9IDg7CisKKyAgLy8g
cmVxdWlyZWQgLSBUaGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBSVFAgaGVhZGVyLgorICBvcHRp
b25hbCB1aW50MzIgaGVhZGVyX3NpemUgPSA5OworCisgIC8vIHJlcXVpcmVkIC0gVGhlIHNpemUg
KGluIGJ5dGVzKSBvZiB0aGUgcGFkZGluZy4KKyAgb3B0aW9uYWwgdWludDMyIHBhZGRpbmdfc2l6
ZSA9IDEwOworCisgIC8vIG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgdGhlIGJhdGNoIGNvbnRhaW5z
IGRlbHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25hbCB1aW50MzIgbnVtYmVyX29mX2RlbHRh
cyA9IDExOworCisgIC8vIEZpZWxkIG51bWJlcnMgMTItMTQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1
c2UuCiAKICAgLy8gT3B0aW9uYWwgaGVhZGVyIGV4dGVuc2lvbnMuCi0gIG9wdGlvbmFsIGludDMy
IHRyYW5zbWlzc2lvbl90aW1lX29mZnNldCA9IDk7Ci0gIG9wdGlvbmFsIHVpbnQzMiBhYnNvbHV0
ZV9zZW5kX3RpbWUgPSAxMDsKLSAgb3B0aW9uYWwgdWludDMyIHRyYW5zcG9ydF9zZXF1ZW5jZV9u
dW1iZXIgPSAxMTsKLSAgb3B0aW9uYWwgdWludDMyIGF1ZGlvX2xldmVsID0gMTI7Ci0gIC8vIFRP
RE8odGVyZWxpdXMpOiBBZGQgaGVhZGVyIGV4dGVuc2lvbnMgbGlrZSB2aWRlbyByb3RhdGlvbiwg
cGxheW91dCBkZWxheT8KLQotICAvLyBEZWx0YSBlbmNvZGluZ3MKLSAgb3B0aW9uYWwgYnl0ZXMg
dGltZXN0YW1wX2RlbHRhc19tcyA9IDEwMTsKKyAgb3B0aW9uYWwgdWludDMyIHRyYW5zcG9ydF9z
ZXF1ZW5jZV9udW1iZXIgPSAxNTsKKyAgb3B0aW9uYWwgaW50MzIgdHJhbnNtaXNzaW9uX3RpbWVf
b2Zmc2V0ID0gMTY7CisgIG9wdGlvbmFsIHVpbnQzMiBhYnNvbHV0ZV9zZW5kX3RpbWUgPSAxNzsK
KyAgb3B0aW9uYWwgdWludDMyIHZpZGVvX3JvdGF0aW9uID0gMTg7CisgIC8vIHxhdWRpb19sZXZl
bHwgYW5kIHx2b2ljZV9hY3Rpdml0eXwgYXJlIGFsd2F5cyB1c2VkIGluIGNvbmp1bmN0aW9uLgor
ICBvcHRpb25hbCB1aW50MzIgYXVkaW9fbGV2ZWwgPSAxOTsKKyAgb3B0aW9uYWwgYm9vbCB2b2lj
ZV9hY3Rpdml0eSA9IDIwOworICAvLyBUT0RPKHRlcmVsaXVzKTogQWRkIG90aGVyIGhlYWRlciBl
eHRlbnNpb25zIGxpa2UgcGxheW91dCBkZWxheT8KKworICAvLyBEZWx0YSBlbmNvZGluZ3MuCisg
IG9wdGlvbmFsIGJ5dGVzIHRpbWVzdGFtcF9tc19kZWx0YXMgPSAxMDE7CiAgIG9wdGlvbmFsIGJ5
dGVzIG1hcmtlcl9kZWx0YXMgPSAxMDI7CiAgIG9wdGlvbmFsIGJ5dGVzIHBheWxvYWRfdHlwZV9k
ZWx0YXMgPSAxMDM7CiAgIG9wdGlvbmFsIGJ5dGVzIHNlcXVlbmNlX251bWJlcl9kZWx0YXMgPSAx
MDQ7CiAgIG9wdGlvbmFsIGJ5dGVzIHJ0cF90aW1lc3RhbXBfZGVsdGFzID0gMTA1OwogICBvcHRp
b25hbCBieXRlcyBzc3JjX2RlbHRhcyA9IDEwNjsKLSAgb3B0aW9uYWwgYnl0ZXMgcGFja2V0X3Np
emVfZGVsdGFzID0gMTA3OwotICBvcHRpb25hbCBieXRlcyBwcm9iZV9jbHVzdGVyX2lkX2RlbHRh
cyA9IDEwODsKLSAgb3B0aW9uYWwgYnl0ZXMgdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X2RlbHRh
cyA9IDEwOTsKLSAgb3B0aW9uYWwgYnl0ZXMgYWJzb2x1dGVfc2VuZF90aW1lX2RlbHRhcyA9IDEx
MDsKLSAgb3B0aW9uYWwgYnl0ZXMgdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9kZWx0YXMgPSAx
MTE7CisgIC8vIEZpZWxkIG51bWJlciAxMDcgcmVzZXJ2ZWQgZm9yIENTUkMuCisgIG9wdGlvbmFs
IGJ5dGVzIHBheWxvYWRfc2l6ZV9kZWx0YXMgPSAxMDg7CisgIG9wdGlvbmFsIGJ5dGVzIGhlYWRl
cl9zaXplX2RlbHRhcyA9IDEwOTsKKyAgb3B0aW9uYWwgYnl0ZXMgcGFkZGluZ19zaXplX2RlbHRh
cyA9IDExMDsKKyAgLy8gRmllbGQgbnVtYmVyIDExMS0xMTQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1
c2UuCisgIG9wdGlvbmFsIGJ5dGVzIHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfZGVsdGFzID0g
MTE1OworICBvcHRpb25hbCBieXRlcyB0cmFuc21pc3Npb25fdGltZV9vZmZzZXRfZGVsdGFzID0g
MTE2OworICBvcHRpb25hbCBieXRlcyBhYnNvbHV0ZV9zZW5kX3RpbWVfZGVsdGFzID0gMTE3Owor
ICBvcHRpb25hbCBieXRlcyB2aWRlb19yb3RhdGlvbl9kZWx0YXMgPSAxMTg7CisgIC8vIHxhdWRp
b19sZXZlbHwgYW5kIHx2b2ljZV9hY3Rpdml0eXwgYXJlIGFsd2F5cyB1c2VkIGluIGNvbmp1bmN0
aW9uLgorICBvcHRpb25hbCBieXRlcyBhdWRpb19sZXZlbF9kZWx0YXMgPSAxMTk7CisgIG9wdGlv
bmFsIGJ5dGVzIHZvaWNlX2FjdGl2aXR5X2RlbHRhcyA9IDEyMDsKIH0KIAogbWVzc2FnZSBJbmNv
bWluZ1J0Y3BQYWNrZXRzIHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGltZXN0
YW1wX21zID0gMTsKIAogICAvLyByZXF1aXJlZCAtIFRoZSB3aG9sZSBwYWNrZXQgaW5jbHVkaW5n
IGJvdGggcGF5bG9hZCBhbmQgaGVhZGVyLgogICBvcHRpb25hbCBieXRlcyByYXdfcGFja2V0ID0g
MjsKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IEZlYXNpYmxlIHRvIGxvZyBwYXJzZWQgUlRDUCBpbnN0
ZWFkPwogCi0gIC8vIERlbHRhIGVuY29kaW5ncwotICBvcHRpb25hbCBieXRlcyB0aW1lc3RhbXBf
ZGVsdGFzX21zID0gMTAxOwotICBvcHRpb25hbCBieXRlcyByYXdfcGFja2V0X2RlbHRhcyA9IDEw
MjsKKyAgLy8gb3B0aW9uYWwgLSByZXF1aXJlZCBpZiB0aGUgYmF0Y2ggY29udGFpbnMgZGVsdGEg
ZW5jb2RlZCBldmVudHMuCisgIG9wdGlvbmFsIHVpbnQzMiBudW1iZXJfb2ZfZGVsdGFzID0gMzsK
KworICAvLyBEZWx0YS9ibG9iIGVuY29kaW5ncy4KKyAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1w
X21zX2RlbHRhcyA9IDEwMTsKKyAgb3B0aW9uYWwgYnl0ZXMgcmF3X3BhY2tldF9ibG9icyA9IDEw
MjsKIH0KIAogbWVzc2FnZSBPdXRnb2luZ1J0Y3BQYWNrZXRzIHsKKyAgLy8gcmVxdWlyZWQKICAg
b3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAvLyByZXF1aXJlZCAtIFRoZSB3
aG9sZSBwYWNrZXQgaW5jbHVkaW5nIGJvdGggcGF5bG9hZCBhbmQgaGVhZGVyLgogICBvcHRpb25h
bCBieXRlcyByYXdfcGFja2V0ID0gMjsKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IEZlYXNpYmxlIHRv
IGxvZyBwYXJzZWQgUlRDUCBpbnN0ZWFkPwogCi0gIC8vIERlbHRhIGVuY29kaW5ncwotICBvcHRp
b25hbCBieXRlcyB0aW1lc3RhbXBfZGVsdGFzX21zID0gMTAxOwotICBvcHRpb25hbCBieXRlcyBy
YXdfcGFja2V0X2RlbHRhcyA9IDEwMjsKKyAgLy8gb3B0aW9uYWwgLSByZXF1aXJlZCBpZiB0aGUg
YmF0Y2ggY29udGFpbnMgZGVsdGEgZW5jb2RlZCBldmVudHMuCisgIG9wdGlvbmFsIHVpbnQzMiBu
dW1iZXJfb2ZfZGVsdGFzID0gMzsKKworICAvLyBEZWx0YS9ibG9iIGVuY29kaW5ncy4KKyAgb3B0
aW9uYWwgYnl0ZXMgdGltZXN0YW1wX21zX2RlbHRhcyA9IDEwMTsKKyAgb3B0aW9uYWwgYnl0ZXMg
cmF3X3BhY2tldF9ibG9icyA9IDEwMjsKIH0KIAogbWVzc2FnZSBBdWRpb1BsYXlvdXRFdmVudHMg
eworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCiAg
IC8vIHJlcXVpcmVkIC0gVGhlIFNTUkMgb2YgdGhlIGF1ZGlvIHN0cmVhbSBhc3NvY2lhdGVkIHdp
dGggdGhlIHBsYXlvdXQgZXZlbnQuCiAgIG9wdGlvbmFsIHVpbnQzMiBsb2NhbF9zc3JjID0gMjsK
IAotICAvLyBEZWx0YSBlbmNvZGluZ3MKLSAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1wX2RlbHRh
c19tcyA9IDEwMTsKKyAgLy8gb3B0aW9uYWwgLSByZXF1aXJlZCBpZiB0aGUgYmF0Y2ggY29udGFp
bnMgZGVsdGEgZW5jb2RlZCBldmVudHMuCisgIG9wdGlvbmFsIHVpbnQzMiBudW1iZXJfb2ZfZGVs
dGFzID0gMzsKKworICAvLyBEZWx0YSBlbmNvZGluZ3MuCisgIG9wdGlvbmFsIGJ5dGVzIHRpbWVz
dGFtcF9tc19kZWx0YXMgPSAxMDE7CiAgIG9wdGlvbmFsIGJ5dGVzIGxvY2FsX3NzcmNfZGVsdGFz
ID0gMTAyOwogfQogCiBtZXNzYWdlIEJlZ2luTG9nRXZlbnQgeworICAvLyByZXF1aXJlZAogICBv
cHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOworCisgIC8vIHJlcXVpcmVkCisgIG9wdGlv
bmFsIHVpbnQzMiB2ZXJzaW9uID0gMjsKKworICAvLyByZXF1aXJlZAorICBvcHRpb25hbCBpbnQ2
NCB1dGNfdGltZV9tcyA9IDM7CiB9CiAKIG1lc3NhZ2UgRW5kTG9nRXZlbnQgeworICAvLyByZXF1
aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogfQogCiBtZXNzYWdlIExv
c3NCYXNlZEJ3ZVVwZGF0ZXMgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1l
c3RhbXBfbXMgPSAxOwogCiAgIC8vIFRPRE8odGVyZWxpdXMpOiBVcGRhdGUgbG9nIGludGVyZmFj
ZSB0byB1bnNpZ25lZC4KQEAgLTE5MSwyOSArMjYxLDM3IEBAIG1lc3NhZ2UgTG9zc0Jhc2VkQndl
VXBkYXRlcyB7CiAgIC8vIHJlcXVpcmVkIC0gVG90YWwgbnVtYmVyIG9mIHBhY2tldHMgdGhhdCB0
aGUgQldFIHVwZGF0ZSBpcyBiYXNlZCBvbi4KICAgb3B0aW9uYWwgdWludDMyIHRvdGFsX3BhY2tl
dHMgPSA0OwogCi0gIC8vIERlbHRhIGVuY29kaW5ncwotICBvcHRpb25hbCBieXRlcyB0aW1lc3Rh
bXBfZGVsdGFzX21zID0gMTAxOwotICBvcHRpb25hbCBieXRlcyBiaXRyYXRlX2RlbHRhc19icHMg
PSAxMDI7CisgIC8vIG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgdGhlIGJhdGNoIGNvbnRhaW5zIGRl
bHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25hbCB1aW50MzIgbnVtYmVyX29mX2RlbHRhcyA9
IDU7CisKKyAgLy8gRGVsdGEgZW5jb2RpbmdzLgorICBvcHRpb25hbCBieXRlcyB0aW1lc3RhbXBf
bXNfZGVsdGFzID0gMTAxOworICBvcHRpb25hbCBieXRlcyBiaXRyYXRlX2Jwc19kZWx0YXMgPSAx
MDI7CiAgIG9wdGlvbmFsIGJ5dGVzIGZyYWN0aW9uX2xvc3NfZGVsdGFzID0gMTAzOwogICBvcHRp
b25hbCBieXRlcyB0b3RhbF9wYWNrZXRzX2RlbHRhcyA9IDEwNDsKIH0KIAogbWVzc2FnZSBEZWxh
eUJhc2VkQndlVXBkYXRlcyB7CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFsIGludDY0IHRpbWVz
dGFtcF9tcyA9IDE7CiAKICAgLy8gcmVxdWlyZWQgLSBCYW5kd2lkdGggZXN0aW1hdGUgKGluIGJw
cykgYWZ0ZXIgdGhlIHVwZGF0ZS4KICAgb3B0aW9uYWwgdWludDMyIGJpdHJhdGVfYnBzID0gMjsK
IAogICBlbnVtIERldGVjdG9yU3RhdGUgewotICAgIEJXRV9OT1JNQUwgPSAwOwotICAgIEJXRV9V
TkRFUlVTSU5HID0gMTsKLSAgICBCV0VfT1ZFUlVTSU5HID0gMjsKKyAgICBCV0VfVU5LTk9XTl9T
VEFURSA9IDA7CisgICAgQldFX05PUk1BTCA9IDE7CisgICAgQldFX1VOREVSVVNJTkcgPSAyOwor
ICAgIEJXRV9PVkVSVVNJTkcgPSAzOwogICB9CiAgIG9wdGlvbmFsIERldGVjdG9yU3RhdGUgZGV0
ZWN0b3Jfc3RhdGUgPSAzOwogCi0gIC8vIERlbHRhIGVuY29kaW5ncwotICBvcHRpb25hbCBieXRl
cyB0aW1lc3RhbXBfZGVsdGFzX21zID0gMTAxOwotICBvcHRpb25hbCBieXRlcyBiaXRyYXRlX2Rl
bHRhc19icHMgPSAxMDI7CisgIC8vIG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgdGhlIGJhdGNoIGNv
bnRhaW5zIGRlbHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25hbCB1aW50MzIgbnVtYmVyX29m
X2RlbHRhcyA9IDQ7CisKKyAgLy8gRGVsdGEgZW5jb2RpbmdzLgorICBvcHRpb25hbCBieXRlcyB0
aW1lc3RhbXBfbXNfZGVsdGFzID0gMTAxOworICBvcHRpb25hbCBieXRlcyBiaXRyYXRlX2Jwc19k
ZWx0YXMgPSAxMDI7CiAgIG9wdGlvbmFsIGJ5dGVzIGRldGVjdG9yX3N0YXRlX2RlbHRhcyA9IDEw
MzsKIH0KIApAQCAtMjIxLDE1ICsyOTksMTcgQEAgbWVzc2FnZSBEZWxheUJhc2VkQndlVXBkYXRl
cyB7CiBtZXNzYWdlIFJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyB7CiAgIC8vIE9wdGlvbmFsIElE
cyBmb3IgdGhlIGhlYWRlciBleHRlbnNpb25zLiBFYWNoIElEIGlzIGEgNC1iaXQgbnVtYmVyIHRo
YXQgaXMKICAgLy8gb25seSBzZXQgaWYgdGhhdCBleHRlbnNpb24gaXMgY29uZmlndXJlZC4KLSAg
Ly8gVE9ETyh0ZXJlbGl1cyk6IENhbiB3ZSBza2lwIHRyYW5zbWlzc2lvbl90aW1lX29mZnNldD8g
V2hlbiBpcyBpdCB1c2VkPworICAvLyBUT0RPOiBDYW4gd2Ugc2tpcCBhdWRpbyBsZXZlbD8KICAg
b3B0aW9uYWwgaW50MzIgdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X2lkID0gMTsKICAgb3B0aW9u
YWwgaW50MzIgYWJzb2x1dGVfc2VuZF90aW1lX2lkID0gMjsKICAgb3B0aW9uYWwgaW50MzIgdHJh
bnNwb3J0X3NlcXVlbmNlX251bWJlcl9pZCA9IDM7Ci0gIG9wdGlvbmFsIGludDMyIGF1ZGlvX2xl
dmVsX2lkID0gNDsKLSAgLy8gVE9ETyh0ZXJlbGl1cyk6IEFkZCB2aWRlb19yb3RhdGlvbiBhbmQg
cGxheW91dCBkZWxheT8KKyAgb3B0aW9uYWwgaW50MzIgdmlkZW9fcm90YXRpb25faWQgPSA0Owor
ICBvcHRpb25hbCBpbnQzMiBhdWRpb19sZXZlbF9pZCA9IDU7CisgIC8vIFRPRE8odGVyZWxpdXMp
OiBBZGQgb3RoZXIgaGVhZGVyIGV4dGVuc2lvbnMgbGlrZSBwbGF5b3V0IGRlbGF5PwogfQogCiBt
ZXNzYWdlIFZpZGVvUmVjdlN0cmVhbUNvbmZpZyB7CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFs
IGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKICAgLy8gcmVxdWlyZWQgLSBTeW5jaHJvbml6YXRp
b24gc291cmNlIChzdHJlYW0gaWRlbnRpZmllcikgdG8gYmUgcmVjZWl2ZWQuCkBAIC0yMzgsNDIg
KzMxOCwzOCBAQCBtZXNzYWdlIFZpZGVvUmVjdlN0cmVhbUNvbmZpZyB7CiAgIC8vIHJlcXVpcmVk
IC0gU2VuZGVyIFNTUkMgdXNlZCBmb3Igc2VuZGluZyBSVENQIChzdWNoIGFzIHJlY2VpdmVyIHJl
cG9ydHMpLgogICBvcHRpb25hbCB1aW50MzIgbG9jYWxfc3NyYyA9IDM7CiAKLSAgLy8gcmVxdWly
ZWQgaWYgUlRYIGlzIGNvbmZpZ3VyZWQKKyAgLy8gb3B0aW9uYWwgLSByZXF1aXJlZCBpZiBSVFgg
aXMgY29uZmlndXJlZC4gU1NSQyBmb3IgdGhlIFJUWCBzdHJlYW0uCiAgIG9wdGlvbmFsIHVpbnQz
MiBydHhfc3NyYyA9IDQ7CiAKLSAgLy8gb3B0aW9uYWwgLSBSVFAgc291cmNlIHN0cmVhbSBJRAot
ICBvcHRpb25hbCBieXRlcyByc2lkID0gNTsKLQogICAvLyBJRHMgZm9yIHRoZSBoZWFkZXIgZXh0
ZW5zaW9uIHdlIGNhcmUgYWJvdXQuIE9ubHkgcmVxdWlyZWQgaWYgdGhlcmUgYXJlCiAgIC8vIGhl
YWRlciBleHRlbnNpb25zIGNvbmZpZ3VyZWQuCi0gIG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVuc2lv
bkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9ucyA9IDY7CisgIG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVu
c2lvbkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9ucyA9IDU7CiAKICAgLy8gVE9ETyh0ZXJlbGl1cyk6
IERvIHdlIG5lZWQgY29kZWMtcGF5bG9hZCBtYXBwaW5nPyBJZiBzbyBhbmQgcnR4X3NzcmMgaXMK
ICAgLy8gdXNlZCwgd2UgYWxzbyBuZWVkIGEgbWFwIGJldHdlZW4gUlRQIHBheWxvYWQgdHlwZSBh
bmQgUlRYIHBheWxvYWQgdHlwZS4KIH0KIAogbWVzc2FnZSBWaWRlb1NlbmRTdHJlYW1Db25maWcg
eworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCi0g
IC8vIFN5bmNocm9uaXphdGlvbiBzb3VyY2UgKHN0cmVhbSBpZGVudGlmaWVyKSBmb3Igb3V0Z29p
bmcgc3RyZWFtLgotICAvLyBPbmUgc3RyZWFtIGNhbiBoYXZlIHNldmVyYWwgc3NyY3MgZm9yIGUu
Zy4gc2ltdWxjYXN0LgorICAvLyByZXF1aXJlZCAtIFN5bmNocm9uaXphdGlvbiBzb3VyY2UgKHN0
cmVhbSBpZGVudGlmaWVyKSBmb3Igb3V0Z29pbmcgc3RyZWFtLgorICAvLyBXaGVuIHVzaW5nIHNp
bXVsY2FzdCwgYSBzZXBhcmF0ZSBjb25maWcgc2hvdWxkIGJlIGxvZ2dlZCBmb3IgZWFjaCBzdHJl
YW0uCiAgIG9wdGlvbmFsIHVpbnQzMiBzc3JjID0gMjsKIAotICAvLyBTU1JDIGZvciB0aGUgUlRY
IHN0cmVhbQorICAvLyBvcHRpb25hbCAtIHJlcXVpcmVkIGlmIFJUWCBpcyBjb25maWd1cmVkLiBT
U1JDIGZvciB0aGUgUlRYIHN0cmVhbS4KICAgb3B0aW9uYWwgdWludDMyIHJ0eF9zc3JjID0gMzsK
IAotICAvLyBSVFAgc291cmNlIHN0cmVhbSBJRAotICBvcHRpb25hbCBieXRlcyByc2lkID0gNDsK
LQogICAvLyBJRHMgZm9yIHRoZSBoZWFkZXIgZXh0ZW5zaW9uIHdlIGNhcmUgYWJvdXQuIE9ubHkg
cmVxdWlyZWQgaWYgdGhlcmUgYXJlCiAgIC8vIGhlYWRlciBleHRlbnNpb25zIGNvbmZpZ3VyZWQu
Ci0gIG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9ucyA9
IDU7CisgIG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9u
cyA9IDQ7CiAKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IERvIHdlIG5lZWQgY29kZWMtcGF5bG9hZCBt
YXBwaW5nPyBJZiBzbyBhbmQgcnR4X3NzcmMgaXMKICAgLy8gdXNlZCwgd2UgYWxzbyBuZWVkIGEg
bWFwIGJldHdlZW4gUlRQIHBheWxvYWQgdHlwZSBhbmQgUlRYIHBheWxvYWQgdHlwZS4KIH0KIAog
bWVzc2FnZSBBdWRpb1JlY3ZTdHJlYW1Db25maWcgeworICAvLyByZXF1aXJlZAogICBvcHRpb25h
bCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCiAgIC8vIHJlcXVpcmVkIC0gU3luY2hyb25pemF0
aW9uIHNvdXJjZSAoc3RyZWFtIGlkZW50aWZpZXIpIHRvIGJlIHJlY2VpdmVkLgpAQCAtMjg0LDM4
ICszNjAsMzMgQEAgbWVzc2FnZSBBdWRpb1JlY3ZTdHJlYW1Db25maWcgewogCiAgIC8vIEZpZWxk
IG51bWJlciA0IHJlc2VydmVkIGZvciBSVFggU1NSQy4KIAotICAvLyBvcHRpb25hbCAtIFJUUCBz
b3VyY2Ugc3RyZWFtIElECi0gIG9wdGlvbmFsIGJ5dGVzIHJzaWQgPSA1OwotCiAgIC8vIElEcyBm
b3IgdGhlIGhlYWRlciBleHRlbnNpb24gd2UgY2FyZSBhYm91dC4gT25seSByZXF1aXJlZCBpZiB0
aGVyZSBhcmUKICAgLy8gaGVhZGVyIGV4dGVuc2lvbnMgY29uZmlndXJlZC4KLSAgb3B0aW9uYWwg
UnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnIGhlYWRlcl9leHRlbnNpb25zID0gNjsKKyAgb3B0aW9u
YWwgUnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnIGhlYWRlcl9leHRlbnNpb25zID0gNTsKIAogICAv
LyBUT0RPKHRlcmVsaXVzKTogRG8gd2UgbmVlZCBjb2RlYy1wYXlsb2FkIG1hcHBpbmc/IElmIHNv
IGFuZCBydHhfc3NyYyBpcwogICAvLyB1c2VkLCB3ZSBhbHNvIG5lZWQgYSBtYXAgYmV0d2VlbiBS
VFAgcGF5bG9hZCB0eXBlIGFuZCBSVFggcGF5bG9hZCB0eXBlLgogfQogCiBtZXNzYWdlIEF1ZGlv
U2VuZFN0cmVhbUNvbmZpZyB7CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFsIGludDY0IHRpbWVz
dGFtcF9tcyA9IDE7CiAKLSAgLy8gU3luY2hyb25pemF0aW9uIHNvdXJjZSAoc3RyZWFtIGlkZW50
aWZpZXIpIGZvciBvdXRnb2luZyBzdHJlYW0uCi0gIC8vIE9uZSBzdHJlYW0gY2FuIGhhdmUgc2V2
ZXJhbCBzc3JjcyBmb3IgZS5nLiBzaW11bGNhc3QuCisgIC8vIHJlcXVpcmVkIC0gU3luY2hyb25p
emF0aW9uIHNvdXJjZSAoc3RyZWFtIGlkZW50aWZpZXIpIGZvciBvdXRnb2luZyBzdHJlYW0uCiAg
IG9wdGlvbmFsIHVpbnQzMiBzc3JjID0gMjsKIAotICAvLyBGaWVsZCBudW1iZXIgMyByZXNlcnZl
ZCBmb3IgUlRYIFNTUkMKLQotICAvLyBSVFAgc291cmNlIHN0cmVhbSBJRAotICBvcHRpb25hbCBi
eXRlcyByc2lkID0gNDsKKyAgLy8gRmllbGQgbnVtYmVyIDMgcmVzZXJ2ZWQgZm9yIFJUWCBTU1JD
LgogCiAgIC8vIElEcyBmb3IgdGhlIGhlYWRlciBleHRlbnNpb24gd2UgY2FyZSBhYm91dC4gT25s
eSByZXF1aXJlZCBpZiB0aGVyZSBhcmUKICAgLy8gaGVhZGVyIGV4dGVuc2lvbnMgY29uZmlndXJl
ZC4KLSAgb3B0aW9uYWwgUnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnIGhlYWRlcl9leHRlbnNpb25z
ID0gNTsKKyAgb3B0aW9uYWwgUnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnIGhlYWRlcl9leHRlbnNp
b25zID0gNDsKIAogICAvLyBUT0RPKHRlcmVsaXVzKTogRG8gd2UgbmVlZCBjb2RlYy1wYXlsb2Fk
IG1hcHBpbmc/IElmIHNvIGFuZCBydHhfc3NyYyBpcwogICAvLyB1c2VkLCB3ZSBhbHNvIG5lZWQg
YSBtYXAgYmV0d2VlbiBSVFAgcGF5bG9hZCB0eXBlIGFuZCBSVFggcGF5bG9hZCB0eXBlLgogfQog
CiBtZXNzYWdlIEF1ZGlvTmV0d29ya0FkYXB0YXRpb25zIHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0
aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAvLyBCaXQgcmF0ZSB0aGF0IHRoZSBh
dWRpbyBlbmNvZGVyIGlzIG9wZXJhdGluZyBhdC4KQEAgLTMyOCw3ICszOTksMTIgQEAgbWVzc2Fn
ZSBBdWRpb05ldHdvcmtBZGFwdGF0aW9ucyB7CiAKICAgLy8gUGFja2V0IGxvc3MgZnJhY3Rpb24g
dGhhdCB0aGUgZW5jb2RlcidzIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbiAoRkVDKSBpcwogICAv
LyBvcHRpbWl6ZWQgZm9yLgotICBvcHRpb25hbCBmbG9hdCB1cGxpbmtfcGFja2V0X2xvc3NfZnJh
Y3Rpb24gPSA0OworICAvLyBJbnN0ZWFkIG9mIGVuY29kaW5nIGEgZmxvYXQsIHdlIGVuY29kZSBh
IHZhbHVlIGJldHdlZW4gMCBhbmQgMTYzODMsIHdoaWNoCisgIC8vIGlmIGRpdmlkZWQgYnkgMTYz
ODMsIHdpbGwgZ2l2ZSBhIHZhbHVlIGNsb3NlIHRvIHRoZSBvcmlnaW5hbCBmbG9hdC4KKyAgLy8g
VGhlIHZhbHVlIDE2MzgzICgyXjE0IC0gMSkgd2FzIGNob3NlbiBzbyB0aGF0IGl0IHdvdWxkIGdp
dmUgZ29vZCBwcmVjaXNpb24KKyAgLy8gb24gdGhlIG9uZSBoYW5kLCBhbmQgd291bGQgYmUgZW5j
b2RhYmxlIHdpdGggdHdvIGJ5dGVzIGluIHZhcmludCBmb3JtCisgIC8vIG9uIHRoZSBvdGhlciBo
YW5kLgorICBvcHRpb25hbCB1aW50MzIgdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uID0gNDsK
IAogICAvLyBXaGV0aGVyIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbiAoRkVDKSBpcyB0dXJuZWQg
b24gb3Igb2ZmLgogICBvcHRpb25hbCBib29sIGVuYWJsZV9mZWMgPSA1OwpAQCAtMzM5LDEwICs0
MTUsMTMgQEAgbWVzc2FnZSBBdWRpb05ldHdvcmtBZGFwdGF0aW9ucyB7CiAgIC8vIE51bWJlciBv
ZiBhdWRpbyBjaGFubmVscyB0aGF0IGVhY2ggZW5jb2RlZCBwYWNrZXQgY29uc2lzdHMgb2YuCiAg
IG9wdGlvbmFsIHVpbnQzMiBudW1fY2hhbm5lbHMgPSA3OwogCi0gIC8vIERlbHRhIGVuY29kaW5n
cwotICBvcHRpb25hbCBieXRlcyB0aW1lc3RhbXBfZGVsdGFzX21zID0gMTAxOwotICBvcHRpb25h
bCBieXRlcyBiaXRyYXRlX2RlbHRhc19icHMgPSAxMDI7Ci0gIG9wdGlvbmFsIGJ5dGVzIGZyYW1l
X2xlbmd0aF9kZWx0YXNfbXMgPSAxMDM7CisgIC8vIG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgdGhl
IGJhdGNoIGNvbnRhaW5zIGRlbHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25hbCB1aW50MzIg
bnVtYmVyX29mX2RlbHRhcyA9IDg7CisKKyAgLy8gRGVsdGEgZW5jb2RpbmdzLgorICBvcHRpb25h
bCBieXRlcyB0aW1lc3RhbXBfbXNfZGVsdGFzID0gMTAxOworICBvcHRpb25hbCBieXRlcyBiaXRy
YXRlX2Jwc19kZWx0YXMgPSAxMDI7CisgIG9wdGlvbmFsIGJ5dGVzIGZyYW1lX2xlbmd0aF9tc19k
ZWx0YXMgPSAxMDM7CiAgIG9wdGlvbmFsIGJ5dGVzIHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlv
bl9kZWx0YXMgPSAxMDQ7CiAgIG9wdGlvbmFsIGJ5dGVzIGVuYWJsZV9mZWNfZGVsdGFzID0gMTA1
OwogICBvcHRpb25hbCBieXRlcyBlbmFibGVfZHR4X2RlbHRhcyA9IDEwNjsKQEAgLTM1MCw2ICs0
MjksNyBAQCBtZXNzYWdlIEF1ZGlvTmV0d29ya0FkYXB0YXRpb25zIHsKIH0KIAogbWVzc2FnZSBC
d2VQcm9iZUNsdXN0ZXIgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3Rh
bXBfbXMgPSAxOwogCiAgIC8vIHJlcXVpcmVkIC0gVGhlIGlkIG9mIHRoaXMgcHJvYmUgY2x1c3Rl
ci4KQEAgLTM2Niw2ICs0NDYsNyBAQCBtZXNzYWdlIEJ3ZVByb2JlQ2x1c3RlciB7CiB9CiAKIG1l
c3NhZ2UgQndlUHJvYmVSZXN1bHRTdWNjZXNzIHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwg
aW50NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAvLyByZXF1aXJlZCAtIFRoZSBpZCBvZiB0aGlz
IHByb2JlIGNsdXN0ZXIuCkBAIC0zNzYsNiArNDU3LDcgQEAgbWVzc2FnZSBCd2VQcm9iZVJlc3Vs
dFN1Y2Nlc3MgewogfQogCiBtZXNzYWdlIEJ3ZVByb2JlUmVzdWx0RmFpbHVyZSB7CisgIC8vIHJl
cXVpcmVkCiAgIG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKICAgLy8gcmVxdWly
ZWQgLSBUaGUgaWQgb2YgdGhpcyBwcm9iZSBjbHVzdGVyLgpAQCAtMzkxLDMgKzQ3MywxMDEgQEAg
bWVzc2FnZSBCd2VQcm9iZVJlc3VsdEZhaWx1cmUgewogICAvLyByZXF1aXJlZAogICBvcHRpb25h
bCBGYWlsdXJlUmVhc29uIGZhaWx1cmUgPSAzOwogfQorCittZXNzYWdlIEFsclN0YXRlIHsKKyAg
Ly8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKKworICAvLyBy
ZXF1aXJlZCAtIFRydWUgaWYgdGhlIHNlbmQgcmF0ZSBpcyBhcHBsaWNhdGlvbiBsaW1pdGVkLgor
ICBvcHRpb25hbCBib29sIGluX2FsciA9IDI7Cit9CisKK21lc3NhZ2UgSWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZyB7CisgIGVudW0gSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgeworICAgIFVOS05P
V05fQ09ORklHX1RZUEUgPSAwOworICAgIEFEREVEID0gMTsKKyAgICBVUERBVEVEID0gMjsKKyAg
ICBERVNUUk9ZRUQgPSAzOworICAgIFNFTEVDVEVEID0gNDsKKyAgfQorCisgIGVudW0gSWNlQ2Fu
ZGlkYXRlVHlwZSB7CisgICAgVU5LTk9XTl9DQU5ESURBVEVfVFlQRSA9IDA7CisgICAgTE9DQUwg
PSAxOworICAgIFNUVU4gPSAyOworICAgIFBSRkxYID0gMzsKKyAgICBSRUxBWSA9IDQ7CisgIH0K
KworICBlbnVtIFByb3RvY29sIHsKKyAgICBVTktOT1dOX1BST1RPQ09MID0gMDsKKyAgICBVRFAg
PSAxOworICAgIFRDUCA9IDI7CisgICAgU1NMVENQID0gMzsKKyAgICBUTFMgPSA0OworICB9CisK
KyAgZW51bSBBZGRyZXNzRmFtaWx5IHsKKyAgICBVTktOT1dOX0FERFJFU1NfRkFNSUxZID0gMDsK
KyAgICBJUFY0ID0gMTsKKyAgICBJUFY2ID0gMjsKKyAgfQorCisgIGVudW0gTmV0d29ya1R5cGUg
eworICAgIFVOS05PV05fTkVUV09SS19UWVBFID0gMDsKKyAgICBFVEhFUk5FVCA9IDE7CisgICAg
V0lGSSA9IDI7CisgICAgQ0VMTFVMQVIgPSAzOworICAgIFZQTiA9IDQ7CisgICAgTE9PUEJBQ0sg
PSA1OworICB9CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21z
ID0gMTsKKworICAvLyByZXF1aXJlZAorICBvcHRpb25hbCBJY2VDYW5kaWRhdGVQYWlyQ29uZmln
VHlwZSBjb25maWdfdHlwZSA9IDI7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgdWludDMy
IGNhbmRpZGF0ZV9wYWlyX2lkID0gMzsKKworICAvLyByZXF1aXJlZAorICBvcHRpb25hbCBJY2VD
YW5kaWRhdGVUeXBlIGxvY2FsX2NhbmRpZGF0ZV90eXBlID0gNDsKKworICAvLyByZXF1aXJlZAor
ICBvcHRpb25hbCBQcm90b2NvbCBsb2NhbF9yZWxheV9wcm90b2NvbCA9IDU7CisKKyAgLy8gcmVx
dWlyZWQKKyAgb3B0aW9uYWwgTmV0d29ya1R5cGUgbG9jYWxfbmV0d29ya190eXBlID0gNjsKKwor
ICAvLyByZXF1aXJlZAorICBvcHRpb25hbCBBZGRyZXNzRmFtaWx5IGxvY2FsX2FkZHJlc3NfZmFt
aWx5ID0gNzsKKworICAvLyByZXF1aXJlZAorICBvcHRpb25hbCBJY2VDYW5kaWRhdGVUeXBlIHJl
bW90ZV9jYW5kaWRhdGVfdHlwZSA9IDg7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgQWRk
cmVzc0ZhbWlseSByZW1vdGVfYWRkcmVzc19mYW1pbHkgPSA5OworCisgIC8vIHJlcXVpcmVkCisg
IG9wdGlvbmFsIFByb3RvY29sIGNhbmRpZGF0ZV9wYWlyX3Byb3RvY29sID0gMTA7Cit9CisKK21l
c3NhZ2UgSWNlQ2FuZGlkYXRlUGFpckV2ZW50IHsKKyAgZW51bSBJY2VDYW5kaWRhdGVQYWlyRXZl
bnRUeXBlIHsKKyAgICBVTktOT1dOX0NIRUNLX1RZUEUgPSAwOworICAgIENIRUNLX1NFTlQgPSAx
OworICAgIENIRUNLX1JFQ0VJVkVEID0gMjsKKyAgICBDSEVDS19SRVNQT05TRV9TRU5UID0gMzsK
KyAgICBDSEVDS19SRVNQT05TRV9SRUNFSVZFRCA9IDQ7CisgIH0KKworICAvLyByZXF1aXJlZAor
ICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOworCisgIC8vIHJlcXVpcmVkCisgIG9w
dGlvbmFsIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgZXZlbnRfdHlwZSA9IDI7CisKKyAgLy8g
cmVxdWlyZWQKKyAgb3B0aW9uYWwgdWludDMyIGNhbmRpZGF0ZV9wYWlyX2lkID0gMzsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnJ0cF9kdW1wLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19l
dmVudF9sb2cycnRwX2R1bXAuY2MKaW5kZXggYTNkMzQ1NmE3YmRlYWI3ZTJiY2Q5ZDMyYTFiZmFj
MmMyMWY5ZDM3OC4uZGE3ZGY2NGZhZGRmNjFhMTNlNDFkMTJmYmQ1OGU3MmY0NTZhMGZlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cycnRwX2R1bXAuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0
Y19ldmVudF9sb2cycnRwX2R1bXAuY2MKQEAgLTMyLDMxICszMiwzMiBAQCBuYW1lc3BhY2Ugewog
CiB1c2luZyBNZWRpYVR5cGUgPSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpNZWRpYVR5
cGU7CiAKLURFRklORV9ib29sKAorV0VCUlRDX0RFRklORV9ib29sKAogICAgIGF1ZGlvLAogICAg
IHRydWUsCiAgICAgIlVzZSAtLW5vYXVkaW8gdG8gZXhjbHVkZSBhdWRpbyBwYWNrZXRzIGZyb20g
dGhlIGNvbnZlcnRlZCBSVFBkdW1wIGZpbGUuIik7Ci1ERUZJTkVfYm9vbCgKK1dFQlJUQ19ERUZJ
TkVfYm9vbCgKICAgICB2aWRlbywKICAgICB0cnVlLAogICAgICJVc2UgLS1ub3ZpZGVvIHRvIGV4
Y2x1ZGUgdmlkZW8gcGFja2V0cyBmcm9tIHRoZSBjb252ZXJ0ZWQgUlRQZHVtcCBmaWxlLiIpOwot
REVGSU5FX2Jvb2woCitXRUJSVENfREVGSU5FX2Jvb2woCiAgICAgZGF0YSwKICAgICB0cnVlLAog
ICAgICJVc2UgLS1ub2RhdGEgdG8gZXhjbHVkZSBkYXRhIHBhY2tldHMgZnJvbSB0aGUgY29udmVy
dGVkIFJUUGR1bXAgZmlsZS4iKTsKLURFRklORV9ib29sKAorV0VCUlRDX0RFRklORV9ib29sKAog
ICAgIHJ0cCwKICAgICB0cnVlLAogICAgICJVc2UgLS1ub3J0cCB0byBleGNsdWRlIFJUUCBwYWNr
ZXRzIGZyb20gdGhlIGNvbnZlcnRlZCBSVFBkdW1wIGZpbGUuIik7Ci1ERUZJTkVfYm9vbCgKK1dF
QlJUQ19ERUZJTkVfYm9vbCgKICAgICBydGNwLAogICAgIHRydWUsCiAgICAgIlVzZSAtLW5vcnRj
cCB0byBleGNsdWRlIFJUQ1AgcGFja2V0cyBmcm9tIHRoZSBjb252ZXJ0ZWQgUlRQZHVtcCBmaWxl
LiIpOwotREVGSU5FX3N0cmluZyhzc3JjLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAg
ICAgIlN0b3JlIG9ubHkgcGFja2V0cyB3aXRoIHRoaXMgU1NSQyAoZGVjaW1hbCBvciBoZXgsIHRo
ZSBsYXR0ZXIgIgotICAgICAgICAgICAgICAic3RhcnRpbmcgd2l0aCAweCkuIik7Ci1ERUZJTkVf
Ym9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UuIik7CitXRUJSVENfREVGSU5F
X3N0cmluZygKKyAgICBzc3JjLAorICAgICIiLAorICAgICJTdG9yZSBvbmx5IHBhY2tldHMgd2l0
aCB0aGlzIFNTUkMgKGRlY2ltYWwgb3IgaGV4LCB0aGUgbGF0dGVyICIKKyAgICAic3RhcnRpbmcg
d2l0aCAweCkuIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludHMgdGhp
cyBtZXNzYWdlLiIpOwogCiAvLyBQYXJzZXMgdGhlIGlucHV0IHN0cmluZyBmb3IgYSB2YWxpZCBT
U1JDLiBJZiBhIHZhbGlkIFNTUkMgaXMgZm91bmQsIGl0IGlzCiAvLyB3cml0dGVuIHRvIHRoZSBv
dXRwdXQgdmFyaWFibGUgfHNzcmN8LCBhbmQgdHJ1ZSBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLApA
QCAtOTcsOSArOTgsMTAgQEAgYm9vbCBTaG91bGRTa2lwU3RyZWFtKE1lZGlhVHlwZSBtZWRpYV90
eXBlLAogLy8gQ29udmVydCBhIExvZ2dlZFJ0cFBhY2tldEluY29taW5nIHRvIGEgdGVzdDo6UnRw
UGFja2V0LiBIZWFkZXIgZXh0ZW5zaW9uIElEcwogLy8gYXJlIGFsbG9jYXRlZCBhY2NvcmRpbmcg
dG8gdGhlIHByb3ZpZGVkIGV4dGVuc2lvbiBtYXAuIFRoaXMgbWlnaHQgbm90IG1hdGNoCiAvLyB0
aGUgZXh0ZW5zaW9uIG1hcCB1c2VkIGluIHRoZSBhY3R1YWwgY2FsbC4KLXZvaWQgQ29udmVydFJ0
cFBhY2tldChjb25zdCB3ZWJydGM6OkxvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBpbmNvbWluZywK
LSAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1h
cCBkZWZhdWx0X2V4dGVuc2lvbl9tYXAsCi0gICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjp0
ZXN0OjpSdHBQYWNrZXQqIHBhY2tldCkgewordm9pZCBDb252ZXJ0UnRwUGFja2V0KAorICAgIGNv
bnN0IHdlYnJ0Yzo6TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIGluY29taW5nLAorICAgIGNvbnN0
IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBkZWZhdWx0X2V4dGVuc2lvbl9tYXAsCisg
ICAgd2VicnRjOjp0ZXN0OjpSdHBQYWNrZXQqIHBhY2tldCkgewogICB3ZWJydGM6OlJ0cFBhY2tl
dCByZWNvbnN0cnVjdGVkX3BhY2tldCgmZGVmYXVsdF9leHRlbnNpb25fbWFwKTsKIAogICByZWNv
bnN0cnVjdGVkX3BhY2tldC5TZXRNYXJrZXIoaW5jb21pbmcucnRwLmhlYWRlci5tYXJrZXJCaXQp
OwpAQCAtMTk2LDggKzE5OCw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsK
ICAgICByZXR1cm4gLTE7CiAgIH0KIAotICBzdGQ6OmNvdXQgPDwgIkZvdW5kICIgPDwgcGFyc2Vk
X3N0cmVhbS5HZXROdW1iZXJPZkV2ZW50cygpCi0gICAgICAgICAgICA8PCAiIGV2ZW50cyBpbiB0
aGUgaW5wdXQgZmlsZS4iIDw8IHN0ZDo6ZW5kbDsKICAgaW50IHJ0cF9jb3VudGVyID0gMCwgcnRj
cF9jb3VudGVyID0gMDsKICAgYm9vbCBoZWFkZXJfb25seSA9IGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvcnRjX2V2ZW50X2xvZzJzdGF0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnN0
YXRzLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjhjODI5ZjQ5ZjEzYzBjNTFh
YzkwODU1YzU2ZjQ4MzNkMzk3Y2EzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnN0YXRzLmNjCisrKyAvZGV2L251bGwK
QEAgLTEsMjY1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8aW50
dHlwZXMuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSA8ZnN0cmVhbT4KLSNpbmNs
dWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1
ZGUgPHR1cGxlPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5j
bHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2lnbm9yZV93dW5kZWYuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
Ci0KLS8vIEZpbGVzIGdlbmVyYXRlZCBhdCBidWlsZC10aW1lIGJ5IHRoZSBwcm90b2J1ZiBjb21w
aWxlci4KLVJUQ19QVVNIX0lHTk9SSU5HX1dVTkRFRigpCi0jaWZkZWYgV0VCUlRDX0FORFJPSURf
UExBVEZPUk1fQlVJTEQKLSNpbmNsdWRlICJleHRlcm5hbC93ZWJydGMvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLnBiLmgiCi0jZWxzZQotI2luY2x1ZGUgImxvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLnBiLmgiCi0jZW5kaWYKLVJUQ19QT1BfSUdO
T1JJTkdfV1VOREVGKCkKLQotbmFtZXNwYWNlIHsKLQotREVGSU5FX2Jvb2woaGVscCwgZmFsc2Us
ICJQcmludHMgdGhpcyBtZXNzYWdlLiIpOwotCi1zdHJ1Y3QgU3RhdHMgewotICBpbnQgY291bnQg
PSAwOwotICBzaXplX3QgdG90YWxfc2l6ZSA9IDA7Ci19OwotCi0vLyBXZSBhcmUgZHVwbGljYXRp
bmcgc29tZSBwYXJ0cyBvZiB0aGUgcGFyc2VyIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRvIGdldAot
Ly8gYWNjZXNzIHRvIHJhdyBwcm90b2J1ZiBldmVudHMuCi1zdGQ6OnBhaXI8dWludDY0X3QsIGJv
b2w+IFBhcnNlVmFySW50KHN0ZDo6aXN0cmVhbSYgc3RyZWFtKSB7Ci0gIHVpbnQ2NF90IHZhcmlu
dCA9IDA7Ci0gIGZvciAoc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOyBieXRlc19yZWFkIDwgMTA7ICsr
Ynl0ZXNfcmVhZCkgewotICAgIC8vIFRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiBlYWNoIGJ5
dGUgaXMgMCBpZiBpdCBpcyB0aGUgbGFzdCBieXRlIGluCi0gICAgLy8gdGhlIHZhcmludCBhbmQg
MSBvdGhlcndpc2UuIFRodXMsIHdlIHRha2UgdGhlIDcgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cwot
ICAgIC8vIG9mIGVhY2ggYnl0ZSBhbmQgc2hpZnQgdGhlbSA3IGJpdHMgZm9yIGVhY2ggYnl0ZSBy
ZWFkIHByZXZpb3VzbHkgdG8gZ2V0Ci0gICAgLy8gdGhlICh1bnNpZ25lZCkgaW50ZWdlci4KLSAg
ICBpbnQgYnl0ZSA9IHN0cmVhbS5nZXQoKTsKLSAgICBpZiAoc3RyZWFtLmVvZigpKSB7Ci0gICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIodmFyaW50LCBmYWxzZSk7Ci0gICAgfQotICAgIFJUQ19E
Q0hFQ0tfR0UoYnl0ZSwgMCk7Ci0gICAgUlRDX0RDSEVDS19MRShieXRlLCAyNTUpOwotICAgIHZh
cmludCB8PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnl0ZSAmIDB4N0YpIDw8ICg3ICogYnl0ZXNf
cmVhZCk7Ci0gICAgaWYgKChieXRlICYgMHg4MCkgPT0gMCkgewotICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKHZhcmludCwgdHJ1ZSk7Ci0gICAgfQotICB9Ci0gIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcih2YXJpbnQsIGZhbHNlKTsKLX0KLQotYm9vbCBQYXJzZUV2ZW50cyhjb25zdCBzdGQ6OnN0
cmluZyYgZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6cnRj
bG9nOjpFdmVudD4qIGV2ZW50cykgewotICBzdGQ6Omlmc3RyZWFtIHN0cmVhbShmaWxlbmFtZSwg
c3RkOjppb3NfYmFzZTo6aW4gfCBzdGQ6Omlvc19iYXNlOjpiaW5hcnkpOwotICBpZiAoIXN0cmVh
bS5nb29kKCkgfHwgIXN0cmVhbS5pc19vcGVuKCkpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcp
IDw8ICJDb3VsZCBub3Qgb3BlbiBmaWxlIGZvciByZWFkaW5nLiI7Ci0gICAgcmV0dXJuIGZhbHNl
OwotICB9Ci0KLSAgY29uc3Qgc2l6ZV90IGtNYXhFdmVudFNpemUgPSAoMXUgPDwgMTYpIC0gMTsK
LSAgc3RkOjp2ZWN0b3I8Y2hhcj4gdG1wX2J1ZmZlcihrTWF4RXZlbnRTaXplKTsKLSAgdWludDY0
X3QgdGFnOwotICB1aW50NjRfdCBtZXNzYWdlX2xlbmd0aDsKLSAgYm9vbCBzdWNjZXNzOwotCi0g
IFJUQ19EQ0hFQ0soc3RyZWFtLmdvb2QoKSk7Ci0KLSAgd2hpbGUgKDEpIHsKLSAgICAvLyBDaGVj
ayB3aGV0aGVyIHdlIGhhdmUgcmVhY2hlZCBlbmQgb2YgZmlsZS4KLSAgICBzdHJlYW0ucGVlaygp
OwotICAgIGlmIChzdHJlYW0uZW9mKCkpIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIC8vIFJlYWQgdGhlIG5leHQgbWVzc2FnZSB0YWcuIFRoZSB0YWcgbnVtYmVyIGlzIGRlZmlu
ZWQgYXMKLSAgICAvLyAoZmllbGRudW1iZXIgPDwgMykgfCB3aXJlX3R5cGUuIEluIG91ciBjYXNl
LCB0aGUgZmllbGQgbnVtYmVyIGlzCi0gICAgLy8gc3VwcG9zZWQgdG8gYmUgMSBhbmQgdGhlIHdp
cmUgdHlwZSBmb3IgYW4gbGVuZ3RoLWRlbGltaXRlZCBmaWVsZCBpcyAyLgotICAgIGNvbnN0IHVp
bnQ2NF90IGtFeHBlY3RlZFRhZyA9ICgxIDw8IDMpIHwgMjsKLSAgICBzdGQ6OnRpZSh0YWcsIHN1
Y2Nlc3MpID0gUGFyc2VWYXJJbnQoc3RyZWFtKTsKLSAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAg
IFJUQ19MT0coTFNfV0FSTklORykKLSAgICAgICAgICA8PCAiTWlzc2luZyBmaWVsZCB0YWcgZnJv
bSBiZWdpbm5pbmcgb2YgcHJvdG9idWYgZXZlbnQuIjsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9IGVsc2UgaWYgKHRhZyAhPSBrRXhwZWN0ZWRUYWcpIHsKLSAgICAgIFJUQ19MT0coTFNfV0FS
TklORykKLSAgICAgICAgICA8PCAiVW5leHBlY3RlZCBmaWVsZCB0YWcgYXQgYmVnaW5uaW5nIG9m
IHByb3RvYnVmIGV2ZW50LiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8g
UmVhZCB0aGUgbGVuZ3RoIGZpZWxkLgotICAgIHN0ZDo6dGllKG1lc3NhZ2VfbGVuZ3RoLCBzdWNj
ZXNzKSA9IFBhcnNlVmFySW50KHN0cmVhbSk7Ci0gICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICBS
VENfTE9HKExTX1dBUk5JTkcpIDw8ICJNaXNzaW5nIG1lc3NhZ2UgbGVuZ3RoIGFmdGVyIHByb3Rv
YnVmIGZpZWxkIHRhZy4iOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSBpZiAobWVz
c2FnZV9sZW5ndGggPiBrTWF4RXZlbnRTaXplKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcp
IDw8ICJQcm90b2J1ZiBtZXNzYWdlIGxlbmd0aCBpcyB0b28gbGFyZ2UuIjsKLSAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBSZWFkIHRoZSBuZXh0IHByb3RvYnVmIGV2ZW50IHRv
IGEgdGVtcG9yYXJ5IGNoYXIgYnVmZmVyLgotICAgIHN0cmVhbS5yZWFkKHRtcF9idWZmZXIuZGF0
YSgpLCBtZXNzYWdlX2xlbmd0aCk7Ci0gICAgaWYgKHN0cmVhbS5nY291bnQoKSAhPSBzdGF0aWNf
Y2FzdDxpbnQ+KG1lc3NhZ2VfbGVuZ3RoKSkgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8
PCAiRmFpbGVkIHRvIHJlYWQgcHJvdG9idWYgbWVzc2FnZSBmcm9tIGZpbGUuIjsKLSAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBQYXJzZSB0aGUgcHJvdG9idWYgZXZlbnQgZnJv
bSB0aGUgYnVmZmVyLgotICAgIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudCBldmVudDsKLSAgICBpZiAo
IWV2ZW50LlBhcnNlRnJvbUFycmF5KHRtcF9idWZmZXIuZGF0YSgpLCBtZXNzYWdlX2xlbmd0aCkp
IHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byBwYXJzZSBwcm90b2J1
ZiBtZXNzYWdlLiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGV2ZW50cy0+cHVz
aF9iYWNrKGV2ZW50KTsKLSAgfQotfQotCi0vLyBUT0RPKHRlcmVsaXVzKTogU2hvdWxkIHRoaXMg
YmUgcGxhY2VkIGluIHNvbWUgdXRpbGl0eSBmaWxlIGluc3RlYWQ/Ci1zdGQ6OnN0cmluZyBFdmVu
dFR5cGVUb1N0cmluZyh3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkV2ZW50VHlwZSBldmVudF90eXBl
KSB7Ci0gIHN3aXRjaCAoZXZlbnRfdHlwZSkgewotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2
ZW50OjpVTktOT1dOX0VWRU5UOgotICAgICAgcmV0dXJuICJVTktOT1dOX0VWRU5UIjsKLSAgICBj
YXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6TE9HX1NUQVJUOgotICAgICAgcmV0dXJuICJMT0df
U1RBUlQiOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpMT0dfRU5EOgotICAgICAg
cmV0dXJuICJMT0dfRU5EIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6UlRQX0VW
RU5UOgotICAgICAgcmV0dXJuICJSVFBfRVZFTlQiOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6
OkV2ZW50OjpSVENQX0VWRU5UOgotICAgICAgcmV0dXJuICJSVENQX0VWRU5UIjsKLSAgICBjYXNl
IHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6QVVESU9fUExBWU9VVF9FVkVOVDoKLSAgICAgIHJldHVy
biAiQVVESU9fUExBWU9VVF9FVkVOVCI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6
OkxPU1NfQkFTRURfQldFX1VQREFURToKLSAgICAgIHJldHVybiAiTE9TU19CQVNFRF9CV0VfVVBE
QVRFIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6REVMQVlfQkFTRURfQldFX1VQ
REFURToKLSAgICAgIHJldHVybiAiREVMQVlfQkFTRURfQldFX1VQREFURSI7Ci0gICAgY2FzZSB3
ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OlZJREVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDoKLSAgICAg
IHJldHVybiAiVklERU9fUkVDVl9DT05GSUciOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2
ZW50OjpWSURFT19TRU5ERVJfQ09ORklHX0VWRU5UOgotICAgICAgcmV0dXJuICJWSURFT19TRU5E
X0NPTkZJRyI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1JFQ0VJVkVS
X0NPTkZJR19FVkVOVDoKLSAgICAgIHJldHVybiAiQVVESU9fUkVDVl9DT05GSUciOwotICAgIGNh
c2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpBVURJT19TRU5ERVJfQ09ORklHX0VWRU5UOgotICAg
ICAgcmV0dXJuICJBVURJT19TRU5EX0NPTkZJRyI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6
RXZlbnQ6OkFVRElPX05FVFdPUktfQURBUFRBVElPTl9FVkVOVDoKLSAgICAgIHJldHVybiAiQVVE
SU9fTkVUV09SS19BREFQVEFUSU9OIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6
QldFX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9FVkVOVDoKLSAgICAgIHJldHVybiAiQldFX1BST0JF
X0NSRUFURUQiOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfUkVT
VUxUX0VWRU5UOgotICAgICAgcmV0dXJuICJCV0VfUFJPQkVfUkVTVUxUIjsKLSAgICBjYXNlIHdl
YnJ0Yzo6cnRjbG9nOjpFdmVudDo6QUxSX1NUQVRFX0VWRU5UOgotICAgICAgcmV0dXJuICJBTFJf
U1RBVEVfRVZFTlQiOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpJQ0VfQ0FORElE
QVRFX1BBSVJfQ09ORklHOgotICAgICAgcmV0dXJuICJJQ0VfQ0FORElEQVRFX1BBSVJfQ09ORklH
IjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlSX0VW
RU5UOgotICAgICAgcmV0dXJuICJJQ0VfQ0FORElEQVRFX1BBSVJfRVZFTlQiOwotICB9Ci0gIFJU
Q19OT1RSRUFDSEVEKCk7Ci0gIHJldHVybiAiVU5LTk9XTl9FVkVOVCI7Ci19Ci0KLX0gIC8vIG5h
bWVzcGFjZQotCi0vLyBUaGlzIHV0aWxpdHkgd2lsbCBwcmludCBiYXNpYyBpbmZvcm1hdGlvbiBh
Ym91dCBlYWNoIHBhY2tldCB0byBzdGRvdXQuCi0vLyBOb3RlIHRoYXQgcGFyc2VyIHdpbGwgYXNz
ZXJ0IGlmIHRoZSBwcm90b2J1ZiBldmVudCBpcyBtaXNzaW5nIHNvbWUgcmVxdWlyZWQKLS8vIGZp
ZWxkcyBhbmQgd2UgYXR0ZW1wdCB0byBhY2Nlc3MgdGhlbS4gV2UgZG9uJ3QgaGFuZGxlIHRoaXMg
YXQgdGhlIG1vbWVudC4KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKLSAgc3Rk
OjpzdHJpbmcgcHJvZ3JhbV9uYW1lID0gYXJndlswXTsKLSAgc3RkOjpzdHJpbmcgdXNhZ2UgPQot
ICAgICAgIlRvb2wgZm9yIGZpbGUgdXNhZ2Ugc3RhdGlzdGljcyBmcm9tIGFuIFJ0Y0V2ZW50TG9n
LlxuIgotICAgICAgIlJ1biAiICsKLSAgICAgIHByb2dyYW1fbmFtZSArCi0gICAgICAiIC0taGVs
cCBmb3IgdXNhZ2UuXG4iCi0gICAgICAiRXhhbXBsZSB1c2FnZTpcbiIgKwotICAgICAgcHJvZ3Jh
bV9uYW1lICsgIiBpbnB1dC5yZWxcbiI7Ci0gIGlmIChydGM6OkZsYWdMaXN0OjpTZXRGbGFnc0Zy
b21Db21tYW5kTGluZSgmYXJnYywgYXJndiwgdHJ1ZSkgfHwgRkxBR19oZWxwIHx8Ci0gICAgICBh
cmdjICE9IDIpIHsKLSAgICBzdGQ6OmNvdXQgPDwgdXNhZ2U7Ci0gICAgaWYgKEZMQUdfaGVscCkg
ewotICAgICAgcnRjOjpGbGFnTGlzdDo6UHJpbnQobnVsbHB0ciwgZmFsc2UpOwotICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotICB9Ci0gIHN0ZDo6c3RyaW5nIGZpbGVfbmFt
ZSA9IGFyZ3ZbMV07Ci0KLSAgc3RkOjp2ZWN0b3I8d2VicnRjOjpydGNsb2c6OkV2ZW50PiBldmVu
dHM7Ci0gIGlmICghUGFyc2VFdmVudHMoZmlsZV9uYW1lLCAmZXZlbnRzKSkgewotICAgIFJUQ19M
T0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gcGFyc2UgZXZlbnQgbG9nLiI7Ci0gICAgcmV0dXJu
IC0xOwotICB9Ci0KLSAgLy8gR2V0IGZpbGUgc2l6ZQotICBGSUxFKiBmaWxlID0gZm9wZW4oZmls
ZV9uYW1lLmNfc3RyKCksICJyYiIpOwotICBmc2VlayhmaWxlLCAwTCwgU0VFS19FTkQpOwotICBp
bnQ2NF90IGZpbGVfc2l6ZSA9IGZ0ZWxsKGZpbGUpOwotICBmY2xvc2UoZmlsZSk7Ci0KLSAgLy8g
V2UgYXJlIGRlbGliZXJhdGVseSB1c2luZyBsb3cgbGV2ZWwgcHJvdG9idWYgZnVuY3Rpb25zIHRv
IGdldCB0aGUgc3RhdHMKLSAgLy8gc2luY2UgdGhlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBpbiB0
aGUgcGFyc2VyIHdvdWxkIENIRUNLIHRoYXQgdGhlIGV2ZW50cwotICAvLyBhcmUgd2VsbCBmb3Jt
ZWQuCi0gIHN0ZDo6bWFwPHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6RXZlbnRUeXBlLCBTdGF0cz4g
c3RhdHM7Ci0gIGludCBtYWxmb3JtZWRfZXZlbnRzID0gMDsKLSAgc2l6ZV90IG1hbGZvcm1lZF9l
dmVudF9zaXplID0gMDsKLSAgc2l6ZV90IGFjY3VtdWxhdGVkX2V2ZW50X3NpemUgPSAwOwotICBm
b3IgKGNvbnN0IHdlYnJ0Yzo6cnRjbG9nOjpFdmVudCYgZXZlbnQgOiBldmVudHMpIHsKLSAgICBz
aXplX3Qgc2VyaWFsaXplZF9zaXplID0gZXZlbnQuQnl0ZVNpemVMb25nKCk7Ci0gICAgLy8gV2hl
biB0aGUgZXZlbnQgaXMgd3JpdHRlbiBvbiB0aGUgZGlzaywgaXQgaXMgcGFydCBvZiBhbiBFdmVu
dFN0cmVhbQotICAgIC8vIG9iamVjdC4gVGhlIGV2ZW50IHN0cmVhbSB3aWxsIHByZXBlbmQgYSAx
IGJ5dGUgZmllbGQgbnVtYmVyL3dpcmUgdHlwZSwKLSAgICAvLyBhbmQgYSB2YXJpbnQgZW5jb2Rp
bmcgKGJhc2UgMTI4KSBvZiB0aGUgZXZlbnQgbGVuZ3RoLgotICAgIHNlcmlhbGl6ZWRfc2l6ZSA9
Ci0gICAgICAgIDEgKyAoMSArIChzZXJpYWxpemVkX3NpemUgPiAxMjcpICsgKHNlcmlhbGl6ZWRf
c2l6ZSA+IDE2MzgzKSkgKwotICAgICAgICBzZXJpYWxpemVkX3NpemU7Ci0KLSAgICBpZiAoZXZl
bnQuaGFzX3R5cGUoKSAmJiBldmVudC5oYXNfdGltZXN0YW1wX3VzKCkpIHsKLSAgICAgIHN0YXRz
W2V2ZW50LnR5cGUoKV0uY291bnQrKzsKLSAgICAgIHN0YXRzW2V2ZW50LnR5cGUoKV0udG90YWxf
c2l6ZSArPSBzZXJpYWxpemVkX3NpemU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8vIFRoZSBldmVu
dCBpcyBtaXNzaW5nIHRoZSB0eXBlIG9yIHRoZSB0aW1lc3RhbXAgZmllbGQuCi0gICAgICBtYWxm
b3JtZWRfZXZlbnRzKys7Ci0gICAgICBtYWxmb3JtZWRfZXZlbnRfc2l6ZSArPSBzZXJpYWxpemVk
X3NpemU7Ci0gICAgfQotICAgIGFjY3VtdWxhdGVkX2V2ZW50X3NpemUgKz0gc2VyaWFsaXplZF9z
aXplOwotICB9Ci0KLSAgcHJpbnRmKCJUeXBlICAgICAgICAgICAgICAgICAgXHRDb3VudFx0VG90
YWwgc2l6ZVx0QXZlcmFnZSBzaXplXHRQZXJjZW50XG4iKTsKLSAgcHJpbnRmKAotICAgICAgIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIgotICAgICAgIlxuIik7Ci0gIGZvciAoY29uc3QgYXV0byBpdCA6IHN0YXRz
KSB7Ci0gICAgcHJpbnRmKCIlLTIyc1x0JTVkXHQlMTB6dVx0JTEyLjJsZlx0JTcuMmxmXG4iLAot
ICAgICAgICAgICBFdmVudFR5cGVUb1N0cmluZyhpdC5maXJzdCkuY19zdHIoKSwgaXQuc2Vjb25k
LmNvdW50LAotICAgICAgICAgICBpdC5zZWNvbmQudG90YWxfc2l6ZSwKLSAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihpdC5zZWNvbmQudG90YWxfc2l6ZSkgLyBpdC5zZWNvbmQuY291bnQs
Ci0gICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oaXQuc2Vjb25kLnRvdGFsX3NpemUpIC8g
ZmlsZV9zaXplICogMTAwKTsKLSAgfQotICBpZiAobWFsZm9ybWVkX2V2ZW50cyAhPSAwKSB7Ci0g
ICAgcHJpbnRmKCIlLTIyc1x0JTVkXHQlMTB6dVx0JTEyLjJsZlx0JTcuMmxmXG4iLCAiTUFMRk9S
TUVEIiwKLSAgICAgICAgICAgbWFsZm9ybWVkX2V2ZW50cywgbWFsZm9ybWVkX2V2ZW50X3NpemUs
Ci0gICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obWFsZm9ybWVkX2V2ZW50X3NpemUpIC8g
bWFsZm9ybWVkX2V2ZW50cywKLSAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtYWxmb3Jt
ZWRfZXZlbnRfc2l6ZSkgLyBmaWxlX3NpemUgKiAxMDApOwotICB9Ci0gIGlmIChmaWxlX3NpemUg
LSBhY2N1bXVsYXRlZF9ldmVudF9zaXplICE9IDApIHsKLSAgICBwcmludGYoIldBUk5JTkc6ICUi
IFBSSWQ2NCAiIGJ5dGVzIG5vdCBhY2NvdW50ZWQgZm9yXG4iLAotICAgICAgICAgICBmaWxlX3Np
emUgLSBhY2N1bXVsYXRlZF9ldmVudF9zaXplKTsKLSAgfQotCi0gIHJldHVybiAwOwotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cydGV4dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRf
bG9nMnRleHQuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3Y2I2ZWNkZjRiNWE1
Y2JiZmJkMzg2OTNjNTIwZDJkZGUzODFiNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cydGV4dC5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDg4MSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUg
PHN0cmluZy5oPgotCi0jaW5jbHVkZSA8aW9tYW5pcD4gIC8vIHNldGZpbGwsIHNldHcKLSNpbmNs
dWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1
ZGUgPHV0aWxpdHk+ICAvLyBwYWlyCi0KLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNf
ZXZlbnRfbG9nX3BhcnNlcl9uZXcuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9h
dWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmln
LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYnllLmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvY29tbW9uX2hl
YWRlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2V4
dGVuZGVkX3JlcG9ydHMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC9maXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3Bh
Y2tldC9uYWNrLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNr
ZXQvcGxpLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
cmFwaWRfcmVzeW5jX3JlcXVlc3QuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydGNwX3BhY2tldC9yZWNlaXZlcl9yZXBvcnQuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydGNwX3BhY2tldC9yZW1iLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF9wYWNrZXQvc2Rlcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0Y3BfcGFja2V0L3NlbmRlcl9yZXBvcnQuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1ibi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdHJhbnNwb3J0X2ZlZWRiYWNrLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3V0aWxpdHkuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWls
ZGVyLmgiCi0KLW5hbWVzcGFjZSB7Ci0KLURFRklORV9ib29sKHVua25vd24sIHRydWUsICJVc2Ug
LS1ub3Vua25vd24gdG8gZXhjbHVkZSB1bmtub3duIGV2ZW50cy4iKTsKLURFRklORV9ib29sKHN0
YXJ0c3RvcCwgdHJ1ZSwgIlVzZSAtLW5vc3RhcnRzdG9wIHRvIGV4Y2x1ZGUgc3RhcnQvc3RvcCBl
dmVudHMuIik7Ci1ERUZJTkVfYm9vbChjb25maWcsIHRydWUsICJVc2UgLS1ub2NvbmZpZyB0byBl
eGNsdWRlIHN0cmVhbSBjb25maWd1cmF0aW9ucy4iKTsKLURFRklORV9ib29sKGJ3ZSwgdHJ1ZSwg
IlVzZSAtLW5vYndlIHRvIGV4Y2x1ZGUgQldFIGV2ZW50cy4iKTsKLURFRklORV9ib29sKGluY29t
aW5nLCB0cnVlLCAiVXNlIC0tbm9pbmNvbWluZyB0byBleGNsdWRlIGluY29taW5nIHBhY2tldHMu
Iik7Ci1ERUZJTkVfYm9vbChvdXRnb2luZywgdHJ1ZSwgIlVzZSAtLW5vb3V0Z29pbmcgdG8gZXhj
bHVkZSBwYWNrZXRzLiIpOwotLy8gVE9ETyh0ZXJlbGl1cyk6IE5vdGUgdGhhdCB0aGUgbWVkaWEg
dHlwZSBkb2Vzbid0IHdvcmsgd2l0aCBvdXRnb2luZyBwYWNrZXRzLgotREVGSU5FX2Jvb2woYXVk
aW8sIHRydWUsICJVc2UgLS1ub2F1ZGlvIHRvIGV4Y2x1ZGUgYXVkaW8gcGFja2V0cy4iKTsKLS8v
IFRPRE8odGVyZWxpdXMpOiBOb3RlIHRoYXQgdGhlIG1lZGlhIHR5cGUgZG9lc24ndCB3b3JrIHdp
dGggb3V0Z29pbmcgcGFja2V0cy4KLURFRklORV9ib29sKHZpZGVvLCB0cnVlLCAiVXNlIC0tbm92
aWRlbyB0byBleGNsdWRlIHZpZGVvIHBhY2tldHMuIik7Ci0vLyBUT0RPKHRlcmVsaXVzKTogTm90
ZSB0aGF0IHRoZSBtZWRpYSB0eXBlIGRvZXNuJ3Qgd29yayB3aXRoIG91dGdvaW5nIHBhY2tldHMu
Ci1ERUZJTkVfYm9vbChkYXRhLCB0cnVlLCAiVXNlIC0tbm9kYXRhIHRvIGV4Y2x1ZGUgZGF0YSBw
YWNrZXRzLiIpOwotREVGSU5FX2Jvb2wocnRwLCB0cnVlLCAiVXNlIC0tbm9ydHAgdG8gZXhjbHVk
ZSBSVFAgcGFja2V0cy4iKTsKLURFRklORV9ib29sKHJ0Y3AsIHRydWUsICJVc2UgLS1ub3J0Y3Ag
dG8gZXhjbHVkZSBSVENQIHBhY2tldHMuIik7Ci1ERUZJTkVfYm9vbChwbGF5b3V0LCB0cnVlLCAi
VXNlIC0tbm9wbGF5b3V0IHRvIGV4Y2x1ZGUgYXVkaW8gcGxheW91dCBldmVudHMuIik7Ci1ERUZJ
TkVfYm9vbChhbmEsIHRydWUsICJVc2UgLS1ub2FuYSB0byBleGNsdWRlIEFOQSBldmVudHMuIik7
Ci1ERUZJTkVfYm9vbChwcm9iZSwgdHJ1ZSwgIlVzZSAtLW5vcHJvYmUgdG8gZXhjbHVkZSBwcm9i
ZSBldmVudHMuIik7Ci1ERUZJTkVfYm9vbChpY2UsIHRydWUsICJVc2UgLS1ub2ljZSB0byBleGNs
dWRlIElDRSBldmVudHMuIik7Ci0KLURFRklORV9ib29sKHByaW50X2Z1bGxfcGFja2V0cywKLSAg
ICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlByaW50IHRoZSBmdWxsIFJUUCBoZWFkZXJz
IGFuZCBSVENQIHBhY2tldHMgaW4gaGV4LiIpOwotCi0vLyBUT0RPKHRlcmVsaXVzKTogQWxsb3cg
YSBsaXN0IG9mIFNTUkNzLgotREVGSU5FX3N0cmluZyhzc3JjLAotICAgICAgICAgICAgICAiIiwK
LSAgICAgICAgICAgICAgIlByaW50IG9ubHkgcGFja2V0cyB3aXRoIHRoaXMgU1NSQyAoZGVjaW1h
bCBvciBoZXgsIHRoZSBsYXR0ZXIgIgotICAgICAgICAgICAgICAic3RhcnRpbmcgd2l0aCAweCku
Iik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UuIik7Ci0K
LXVzaW5nIE1lZGlhVHlwZSA9IHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6Ok1lZGlhVHlw
ZTsKLQotc3RhdGljIHVpbnQzMl90IGZpbHRlcmVkX3NzcmMgPSAwOwotCi0vLyBQYXJzZXMgdGhl
IGlucHV0IHN0cmluZyBmb3IgYSB2YWxpZCBTU1JDLiBJZiBhIHZhbGlkIFNTUkMgaXMgZm91bmQs
IGl0IGlzCi0vLyB3cml0dGVuIHRvIHRoZSBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlIHxmaWx0ZXJl
ZF9zc3JjfCwgYW5kIHRydWUgaXMgcmV0dXJuZWQuCi0vLyBPdGhlcndpc2UsIGZhbHNlIGlzIHJl
dHVybmVkLgotLy8gVGhlIGVtcHR5IHN0cmluZyBtdXN0IGJlIHZhbGlkYXRlZCBhcyB0cnVlLCBi
ZWNhdXNlIGl0IGlzIHRoZSBkZWZhdWx0IHZhbHVlCi0vLyBvZiB0aGUgY29tbWFuZC1saW5lIGZs
YWcuIEluIHRoaXMgY2FzZSwgbm8gdmFsdWUgaXMgd3JpdHRlbiB0byB0aGUgb3V0cHV0Ci0vLyB2
YXJpYWJsZS4KLWJvb2wgUGFyc2VTc3JjKHN0ZDo6c3RyaW5nIHN0cikgewotICAvLyBJZiB0aGUg
aW5wdXQgc3RyaW5nIHN0YXJ0cyB3aXRoIDB4IG9yIDBYIGl0IGluZGljYXRlcyBhIGhleGFkZWNp
bWFsIG51bWJlci4KLSAgYXV0byByZWFkX21vZGUgPSBzdGQ6OmRlYzsKLSAgaWYgKHN0ci5zaXpl
KCkgPiAyICYmCi0gICAgICAoc3RyLnN1YnN0cigwLCAyKSA9PSAiMHgiIHx8IHN0ci5zdWJzdHIo
MCwgMikgPT0gIjBYIikpIHsKLSAgICByZWFkX21vZGUgPSBzdGQ6OmhleDsKLSAgICBzdHIgPSBz
dHIuc3Vic3RyKDIpOwotICB9Ci0gIHN0ZDo6c3RyaW5nc3RyZWFtIHNzKHN0cik7Ci0gIHNzID4+
IHJlYWRfbW9kZSA+PiBmaWx0ZXJlZF9zc3JjOwotICByZXR1cm4gc3RyLmVtcHR5KCkgfHwgKCFz
cy5mYWlsKCkgJiYgc3MuZW9mKCkpOwotfQotCi1ib29sIEV4Y2x1ZGVQYWNrZXQod2VicnRjOjpQ
YWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uLAotICAgICAgICAgICAgICAgICAgIE1lZGlhVHlwZSBt
ZWRpYV90eXBlLAotICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHBhY2tldF9zc3JjKSB7Ci0g
IGlmICghRkxBR19vdXRnb2luZyAmJiBkaXJlY3Rpb24gPT0gd2VicnRjOjprT3V0Z29pbmdQYWNr
ZXQpCi0gICAgcmV0dXJuIHRydWU7Ci0gIGlmICghRkxBR19pbmNvbWluZyAmJiBkaXJlY3Rpb24g
PT0gd2VicnRjOjprSW5jb21pbmdQYWNrZXQpCi0gICAgcmV0dXJuIHRydWU7Ci0gIGlmICghRkxB
R19hdWRpbyAmJiBtZWRpYV90eXBlID09IE1lZGlhVHlwZTo6QVVESU8pCi0gICAgcmV0dXJuIHRy
dWU7Ci0gIGlmICghRkxBR192aWRlbyAmJiBtZWRpYV90eXBlID09IE1lZGlhVHlwZTo6VklERU8p
Ci0gICAgcmV0dXJuIHRydWU7Ci0gIGlmICghRkxBR19kYXRhICYmIG1lZGlhX3R5cGUgPT0gTWVk
aWFUeXBlOjpEQVRBKQotICAgIHJldHVybiB0cnVlOwotICBpZiAoc3RybGVuKEZMQUdfc3NyYykg
PiAwICYmIHBhY2tldF9zc3JjICE9IGZpbHRlcmVkX3NzcmMpCi0gICAgcmV0dXJuIHRydWU7Ci0g
IHJldHVybiBmYWxzZTsKLX0KLQotY29uc3QgY2hhciogU3RyZWFtSW5mbyh3ZWJydGM6OlBhY2tl
dERpcmVjdGlvbiBkaXJlY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIE1lZGlhVHlwZSBt
ZWRpYV90eXBlKSB7Ci0gIGlmIChkaXJlY3Rpb24gPT0gd2VicnRjOjprT3V0Z29pbmdQYWNrZXQp
IHsKLSAgICBpZiAobWVkaWFfdHlwZSA9PSBNZWRpYVR5cGU6OkFVRElPKQotICAgICAgcmV0dXJu
ICIob3V0LGF1ZGlvKSI7Ci0gICAgZWxzZSBpZiAobWVkaWFfdHlwZSA9PSBNZWRpYVR5cGU6OlZJ
REVPKQotICAgICAgcmV0dXJuICIob3V0LHZpZGVvKSI7Ci0gICAgZWxzZSBpZiAobWVkaWFfdHlw
ZSA9PSBNZWRpYVR5cGU6OkRBVEEpCi0gICAgICByZXR1cm4gIihvdXQsZGF0YSkiOwotICAgIGVs
c2UKLSAgICAgIHJldHVybiAiKG91dCkiOwotICB9Ci0gIGlmIChkaXJlY3Rpb24gPT0gd2VicnRj
OjprSW5jb21pbmdQYWNrZXQpIHsKLSAgICBpZiAobWVkaWFfdHlwZSA9PSBNZWRpYVR5cGU6OkFV
RElPKQotICAgICAgcmV0dXJuICIoaW4sYXVkaW8pIjsKLSAgICBlbHNlIGlmIChtZWRpYV90eXBl
ID09IE1lZGlhVHlwZTo6VklERU8pCi0gICAgICByZXR1cm4gIihpbix2aWRlbykiOwotICAgIGVs
c2UgaWYgKG1lZGlhX3R5cGUgPT0gTWVkaWFUeXBlOjpEQVRBKQotICAgICAgcmV0dXJuICIoaW4s
ZGF0YSkiOwotICAgIGVsc2UKLSAgICAgIHJldHVybiAiKGluKSI7Ci0gIH0KLSAgcmV0dXJuICIo
dW5rbm93bikiOwotfQotCi0vLyBSZXR1cm4gZGVmYXVsdCB2YWx1ZXMgZm9yIGhlYWRlciBleHRl
bnNpb25zLCB0byB1c2Ugb24gc3RyZWFtcyB3aXRob3V0IHN0b3JlZAotLy8gbWFwcGluZyBkYXRh
LiBDdXJyZW50bHkgdGhpcyBvbmx5IGFwcGxpZXMgdG8gYXVkaW8gc3RyZWFtcywgc2luY2UgdGhl
IG1hcHBpbmcKLS8vIGlzIG5vdCBzdG9yZWQgaW4gdGhlIGV2ZW50IGxvZy4KLS8vIFRPRE8oaXZv
Yyk6IFJlbW92ZSB0aGlzIG9uY2UgdGhpcyBtYXBwaW5nIGlzIHN0b3JlZCBpbiB0aGUgZXZlbnQg
bG9nIGZvcgotLy8gICAgICAgICAgICAgYXVkaW8gc3RyZWFtcy4gVHJhY2tpbmcgYnVnOiB3ZWJy
dGM6NjM5OQotd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAgR2V0RGVmYXVsdEhlYWRlckV4
dGVuc2lvbk1hcCgpIHsKLSAgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAgZGVmYXVsdF9t
YXA7Ci0gIGRlZmF1bHRfbWFwLlJlZ2lzdGVyPHdlYnJ0Yzo6QXVkaW9MZXZlbD4oCi0gICAgICB3
ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a0F1ZGlvTGV2ZWxEZWZhdWx0SWQpOwotICBkZWZhdWx0X21h
cC5SZWdpc3Rlcjx3ZWJydGM6OlRyYW5zbWlzc2lvbk9mZnNldD4oCi0gICAgICB3ZWJydGM6OlJ0
cEV4dGVuc2lvbjo6a1RpbWVzdGFtcE9mZnNldERlZmF1bHRJZCk7Ci0gIGRlZmF1bHRfbWFwLlJl
Z2lzdGVyPHdlYnJ0Yzo6QWJzb2x1dGVTZW5kVGltZT4oCi0gICAgICB3ZWJydGM6OlJ0cEV4dGVu
c2lvbjo6a0Fic1NlbmRUaW1lRGVmYXVsdElkKTsKLSAgZGVmYXVsdF9tYXAuUmVnaXN0ZXI8d2Vi
cnRjOjpWaWRlb09yaWVudGF0aW9uPigKLSAgICAgIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjprVmlk
ZW9Sb3RhdGlvbkRlZmF1bHRJZCk7Ci0gIGRlZmF1bHRfbWFwLlJlZ2lzdGVyPHdlYnJ0Yzo6Vmlk
ZW9Db250ZW50VHlwZUV4dGVuc2lvbj4oCi0gICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a1Zp
ZGVvQ29udGVudFR5cGVEZWZhdWx0SWQpOwotICBkZWZhdWx0X21hcC5SZWdpc3Rlcjx3ZWJydGM6
OlZpZGVvVGltaW5nRXh0ZW5zaW9uPigKLSAgICAgIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjprVmlk
ZW9UaW1pbmdEZWZhdWx0SWQpOwotICBkZWZhdWx0X21hcC5SZWdpc3Rlcjx3ZWJydGM6OkZyYW1l
TWFya2luZ0V4dGVuc2lvbj4oCi0gICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a0ZyYW1lTWFy
a2luZ0RlZmF1bHRJZCk7Ci0gIGRlZmF1bHRfbWFwLlJlZ2lzdGVyPHdlYnJ0Yzo6VHJhbnNwb3J0
U2VxdWVuY2VOdW1iZXI+KAotICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb246OmtUcmFuc3BvcnRT
ZXF1ZW5jZU51bWJlckRlZmF1bHRJZCk7Ci0gIGRlZmF1bHRfbWFwLlJlZ2lzdGVyPHdlYnJ0Yzo6
UGxheW91dERlbGF5TGltaXRzPigKLSAgICAgIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjprUGxheW91
dERlbGF5RGVmYXVsdElkKTsKLSAgcmV0dXJuIGRlZmF1bHRfbWFwOwotfQotCi12b2lkIFByaW50
U2VuZGVyUmVwb3J0KGNvbnN0IHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXcmIHBhcnNlZF9z
dHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6cnRjcDo6Q29tbW9u
SGVhZGVyJiBydGNwX2Jsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBsb2df
dGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlBhY2tldERpcmVjdGlv
biBkaXJlY3Rpb24pIHsKLSAgd2VicnRjOjpydGNwOjpTZW5kZXJSZXBvcnQgc3I7Ci0gIGlmICgh
c3IuUGFyc2UocnRjcF9ibG9jaykpCi0gICAgcmV0dXJuOwotICBNZWRpYVR5cGUgbWVkaWFfdHlw
ZSA9Ci0gICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZShzci5zZW5kZXJfc3NyYygpLCBk
aXJlY3Rpb24pOwotICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIHNy
LnNlbmRlcl9zc3JjKCkpKQotICAgIHJldHVybjsKLSAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3Rh
bXAgPDwgIlx0IgotICAgICAgICAgICAgPDwgIlJUQ1BfU1IiIDw8IFN0cmVhbUluZm8oZGlyZWN0
aW9uLCBtZWRpYV90eXBlKQotICAgICAgICAgICAgPDwgIlx0c3NyYz0iIDw8IHNyLnNlbmRlcl9z
c3JjKCkKLSAgICAgICAgICAgIDw8ICJcdHRpbWVzdGFtcD0iIDw8IHNyLnJ0cF90aW1lc3RhbXAo
KSA8PCBzdGQ6OmVuZGw7Ci19Ci0KLXZvaWQgUHJpbnRSZWNlaXZlclJlcG9ydChjb25zdCB3ZWJy
dGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3JiBwYXJzZWRfc3RyZWFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6cnRjcDo6Q29tbW9uSGVhZGVyJiBydGNwX2Jsb2NrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxvZ190aW1lc3RhbXAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgd2VicnRjOjpQYWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uKSB7Ci0g
IHdlYnJ0Yzo6cnRjcDo6UmVjZWl2ZXJSZXBvcnQgcnI7Ci0gIGlmICghcnIuUGFyc2UocnRjcF9i
bG9jaykpCi0gICAgcmV0dXJuOwotICBNZWRpYVR5cGUgbWVkaWFfdHlwZSA9Ci0gICAgICBwYXJz
ZWRfc3RyZWFtLkdldE1lZGlhVHlwZShyci5zZW5kZXJfc3NyYygpLCBkaXJlY3Rpb24pOwotICBp
ZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIHJyLnNlbmRlcl9zc3JjKCkp
KQotICAgIHJldHVybjsKLSAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAg
ICAgICAgICAgPDwgIlJUQ1BfUlIiIDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBtZWRpYV90eXBl
KQotICAgICAgICAgICAgPDwgIlx0c3NyYz0iIDw8IHJyLnNlbmRlcl9zc3JjKCkgPDwgc3RkOjpl
bmRsOwotfQotCi12b2lkIFByaW50WHIoY29uc3Qgd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05l
dyYgcGFyc2VkX3N0cmVhbSwKLSAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OnJ0Y3A6OkNvbW1v
bkhlYWRlciYgcnRjcF9ibG9jaywKLSAgICAgICAgICAgICB1aW50NjRfdCBsb2dfdGltZXN0YW1w
LAotICAgICAgICAgICAgIHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbikgewotICB3
ZWJydGM6OnJ0Y3A6OkV4dGVuZGVkUmVwb3J0cyB4cjsKLSAgaWYgKCF4ci5QYXJzZShydGNwX2Js
b2NrKSkKLSAgICByZXR1cm47Ci0gIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgIHBhcnNl
ZF9zdHJlYW0uR2V0TWVkaWFUeXBlKHhyLnNlbmRlcl9zc3JjKCksIGRpcmVjdGlvbik7Ci0gIGlm
IChFeGNsdWRlUGFja2V0KGRpcmVjdGlvbiwgbWVkaWFfdHlwZSwgeHIuc2VuZGVyX3NzcmMoKSkp
Ci0gICAgcmV0dXJuOwotICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAg
ICAgICAgICA8PCAiUlRDUF9YUiIgPDwgU3RyZWFtSW5mbyhkaXJlY3Rpb24sIG1lZGlhX3R5cGUp
Ci0gICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgeHIuc2VuZGVyX3NzcmMoKSA8PCBzdGQ6OmVu
ZGw7Ci19Ci0KLXZvaWQgUHJpbnRTZGVzKGNvbnN0IHdlYnJ0Yzo6cnRjcDo6Q29tbW9uSGVhZGVy
JiBydGNwX2Jsb2NrLAotICAgICAgICAgICAgICAgdWludDY0X3QgbG9nX3RpbWVzdGFtcCwKLSAg
ICAgICAgICAgICAgIHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbikgewotICBzdGQ6
OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICA8PCAiUlRDUF9TREVT
IiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgTWVkaWFUeXBlOjpBTlkpCi0gICAgICAgICAgICA8
PCBzdGQ6OmVuZGw7Ci0gIFJUQ19OT1RSRUFDSEVEKCkgPDwgIlNERVMgc2hvdWxkIGhhdmUgYmVl
biByZWRhY3RlZCB3aGVuIHdyaXRpbmcgdGhlIGxvZyI7Ci19Ci0KLXZvaWQgUHJpbnRCeWUoY29u
c3Qgd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldyYgcGFyc2VkX3N0cmVhbSwKLSAgICAgICAg
ICAgICAgY29uc3Qgd2VicnRjOjpydGNwOjpDb21tb25IZWFkZXImIHJ0Y3BfYmxvY2ssCi0gICAg
ICAgICAgICAgIHVpbnQ2NF90IGxvZ190aW1lc3RhbXAsCi0gICAgICAgICAgICAgIHdlYnJ0Yzo6
UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbikgewotICB3ZWJydGM6OnJ0Y3A6OkJ5ZSBieWU7Ci0g
IGlmICghYnllLlBhcnNlKHJ0Y3BfYmxvY2spKQotICAgIHJldHVybjsKLSAgTWVkaWFUeXBlIG1l
ZGlhX3R5cGUgPQotICAgICAgcGFyc2VkX3N0cmVhbS5HZXRNZWRpYVR5cGUoYnllLnNlbmRlcl9z
c3JjKCksIGRpcmVjdGlvbik7Ci0gIGlmIChFeGNsdWRlUGFja2V0KGRpcmVjdGlvbiwgbWVkaWFf
dHlwZSwgYnllLnNlbmRlcl9zc3JjKCkpKQotICAgIHJldHVybjsKLSAgc3RkOjpjb3V0IDw8IGxv
Z190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgPDwgIlJUQ1BfQllFIiA8PCBTdHJlYW1J
bmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCBi
eWUuc2VuZGVyX3NzcmMoKSA8PCBzdGQ6OmVuZGw7Ci19Ci0KLXZvaWQgUHJpbnRSdHBGZWVkYmFj
ayhjb25zdCB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3JiBwYXJzZWRfc3RyZWFtLAotICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6cnRjcDo6Q29tbW9uSGVhZGVyJiBydGNw
X2Jsb2NrLAotICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxvZ190aW1lc3RhbXAsCi0g
ICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpQYWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uKSB7
Ci0gIHN3aXRjaCAocnRjcF9ibG9jay5mbXQoKSkgewotICAgIGNhc2Ugd2VicnRjOjpydGNwOjpO
YWNrOjprRmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNwOjpOYWNrIG5h
Y2s7Ci0gICAgICBpZiAoIW5hY2suUGFyc2UocnRjcF9ibG9jaykpCi0gICAgICAgIHJldHVybjsK
LSAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdl
dE1lZGlhVHlwZShuYWNrLnNlbmRlcl9zc3JjKCksIGRpcmVjdGlvbik7Ci0gICAgICBpZiAoRXhj
bHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIG5hY2suc2VuZGVyX3NzcmMoKSkpCi0g
ICAgICAgIHJldHVybjsKLSAgICAgIHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0YW1wIDw8ICJcdCIK
LSAgICAgICAgICAgICAgICA8PCAiUlRDUF9OQUNLIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwg
bWVkaWFfdHlwZSkKLSAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgbmFjay5zZW5kZXJf
c3NyYygpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIHdlYnJ0
Yzo6cnRjcDo6VG1tYnI6OmtGZWVkYmFja01lc3NhZ2VUeXBlOiB7Ci0gICAgICB3ZWJydGM6OnJ0
Y3A6OlRtbWJyIHRtbWJyOwotICAgICAgaWYgKCF0bW1ici5QYXJzZShydGNwX2Jsb2NrKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgICAgTWVkaWFUeXBlIG1lZGlhX3R5cGUgPQotICAgICAgICAgIHBh
cnNlZF9zdHJlYW0uR2V0TWVkaWFUeXBlKHRtbWJyLnNlbmRlcl9zc3JjKCksIGRpcmVjdGlvbik7
Ci0gICAgICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIHRtbWJyLnNl
bmRlcl9zc3JjKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgICBzdGQ6OmNvdXQgPDwgbG9nX3Rp
bWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICAgICAgPDwgIlJUQ1BfVE1NQlIiIDw8IFN0cmVh
bUluZm8oZGlyZWN0aW9uLCBtZWRpYV90eXBlKQotICAgICAgICAgICAgICAgIDw8ICJcdHNzcmM9
IiA8PCB0bW1ici5zZW5kZXJfc3NyYygpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6VG1tYm46OmtGZWVkYmFja01lc3NhZ2VUeXBlOiB7
Ci0gICAgICB3ZWJydGM6OnJ0Y3A6OlRtbWJuIHRtbWJuOwotICAgICAgaWYgKCF0bW1ibi5QYXJz
ZShydGNwX2Jsb2NrKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgTWVkaWFUeXBlIG1lZGlhX3R5
cGUgPQotICAgICAgICAgIHBhcnNlZF9zdHJlYW0uR2V0TWVkaWFUeXBlKHRtbWJuLnNlbmRlcl9z
c3JjKCksIGRpcmVjdGlvbik7Ci0gICAgICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1l
ZGlhX3R5cGUsIHRtbWJuLnNlbmRlcl9zc3JjKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgICBz
dGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICAgICAgPDwgIlJU
Q1BfVE1NQk4iIDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBtZWRpYV90eXBlKQotICAgICAgICAg
ICAgICAgIDw8ICJcdHNzcmM9IiA8PCB0bW1ibi5zZW5kZXJfc3NyYygpIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6UmFwaWRSZXN5bmNS
ZXF1ZXN0OjprRmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNwOjpSYXBp
ZFJlc3luY1JlcXVlc3Qgc3JfcmVxOwotICAgICAgaWYgKCFzcl9yZXEuUGFyc2UocnRjcF9ibG9j
aykpCi0gICAgICAgIHJldHVybjsKLSAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAg
ICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZShzcl9yZXEuc2VuZGVyX3NzcmMoKSwgZGly
ZWN0aW9uKTsKLSAgICAgIGlmIChFeGNsdWRlUGFja2V0KGRpcmVjdGlvbiwgbWVkaWFfdHlwZSwg
c3JfcmVxLnNlbmRlcl9zc3JjKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgICBzdGQ6OmNvdXQg
PDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICAgICAgPDwgIlJUQ1BfU1JSRVEi
IDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBtZWRpYV90eXBlKQotICAgICAgICAgICAgICAgIDw8
ICJcdHNzcmM9IiA8PCBzcl9yZXEuc2VuZGVyX3NzcmMoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICBi
cmVhazsKLSAgICB9Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrOjpr
RmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNwOjpUcmFuc3BvcnRGZWVk
YmFjayB0cmFuc3BvcnRfZmVlZGJhY2s7Ci0gICAgICBpZiAoIXRyYW5zcG9ydF9mZWVkYmFjay5Q
YXJzZShydGNwX2Jsb2NrKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgTWVkaWFUeXBlIG1lZGlh
X3R5cGUgPSBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZSgKLSAgICAgICAgICB0cmFuc3BvcnRf
ZmVlZGJhY2suc2VuZGVyX3NzcmMoKSwgZGlyZWN0aW9uKTsKLSAgICAgIGlmIChFeGNsdWRlUGFj
a2V0KGRpcmVjdGlvbiwgbWVkaWFfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
cG9ydF9mZWVkYmFjay5zZW5kZXJfc3NyYygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgc3Rk
Ojpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgICAgIDw8ICJSVENQ
X05FV0ZCIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAgICAg
ICAgICA8PCAiXHRzZW5kZXJfc3NyYz0iIDw8IHRyYW5zcG9ydF9mZWVkYmFjay5zZW5kZXJfc3Ny
YygpCi0gICAgICAgICAgICAgICAgPDwgIlx0bWVkaWFfc3NyYz0iIDw8IHRyYW5zcG9ydF9mZWVk
YmFjay5tZWRpYV9zc3JjKCkKLSAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICBi
cmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgIHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0
YW1wIDw8ICJcdCIKLSAgICAgICAgICAgICAgICA8PCAiUlRDUF9SVFBGQihVTktOT1dOKSIgPDwg
c3RkOjplbmRsOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotdm9pZCBQcmludFBzRmVlZGJhY2so
Y29uc3Qgd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldyYgcGFyc2VkX3N0cmVhbSwKLSAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6cnRjcDo6Q29tbW9uSGVhZGVyJiBydGNwX2Js
b2NrLAotICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbG9nX3RpbWVzdGFtcCwKLSAgICAg
ICAgICAgICAgICAgICAgIHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbikgewotICBz
d2l0Y2ggKHJ0Y3BfYmxvY2suZm10KCkpIHsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6UGxpOjpr
RmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNwOjpQbGkgcGxpOwotICAg
ICAgaWYgKCFwbGkuUGFyc2UocnRjcF9ibG9jaykpCi0gICAgICAgIHJldHVybjsKLSAgICAgIE1l
ZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlw
ZShwbGkuc2VuZGVyX3NzcmMoKSwgZGlyZWN0aW9uKTsKLSAgICAgIGlmIChFeGNsdWRlUGFja2V0
KGRpcmVjdGlvbiwgbWVkaWFfdHlwZSwgcGxpLnNlbmRlcl9zc3JjKCkpKQotICAgICAgICByZXR1
cm47Ci0gICAgICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAg
ICAgICAgPDwgIlJUQ1BfUExJIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkK
LSAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgcGxpLnNlbmRlcl9zc3JjKCkgPDwgc3Rk
OjplbmRsOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ugd2VicnRjOjpydGNwOjpGaXI6
OmtGZWVkYmFja01lc3NhZ2VUeXBlOiB7Ci0gICAgICB3ZWJydGM6OnJ0Y3A6OkZpciBmaXI7Ci0g
ICAgICBpZiAoIWZpci5QYXJzZShydGNwX2Jsb2NrKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAg
TWVkaWFUeXBlIG1lZGlhX3R5cGUgPQotICAgICAgICAgIHBhcnNlZF9zdHJlYW0uR2V0TWVkaWFU
eXBlKGZpci5zZW5kZXJfc3NyYygpLCBkaXJlY3Rpb24pOwotICAgICAgaWYgKEV4Y2x1ZGVQYWNr
ZXQoZGlyZWN0aW9uLCBtZWRpYV90eXBlLCBmaXIuc2VuZGVyX3NzcmMoKSkpCi0gICAgICAgIHJl
dHVybjsKLSAgICAgIHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0YW1wIDw8ICJcdCIKLSAgICAgICAg
ICAgICAgICA8PCAiUlRDUF9GSVIiIDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBtZWRpYV90eXBl
KQotICAgICAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCBmaXIuc2VuZGVyX3NzcmMoKSA8PCBz
dGQ6OmVuZGw7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OlJl
bWI6OmtGZWVkYmFja01lc3NhZ2VUeXBlOiB7Ci0gICAgICB3ZWJydGM6OnJ0Y3A6OlJlbWIgcmVt
YjsKLSAgICAgIGlmICghcmVtYi5QYXJzZShydGNwX2Jsb2NrKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgICAgTWVkaWFUeXBlIG1lZGlhX3R5cGUgPQotICAgICAgICAgIHBhcnNlZF9zdHJlYW0uR2V0
TWVkaWFUeXBlKHJlbWIuc2VuZGVyX3NzcmMoKSwgZGlyZWN0aW9uKTsKLSAgICAgIGlmIChFeGNs
dWRlUGFja2V0KGRpcmVjdGlvbiwgbWVkaWFfdHlwZSwgcmVtYi5zZW5kZXJfc3NyYygpKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgICAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0Igot
ICAgICAgICAgICAgICAgIDw8ICJSVENQX1JFTUIiIDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBt
ZWRpYV90eXBlKQotICAgICAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCByZW1iLnNlbmRlcl9z
c3JjKCkgPDwgc3RkOjplbmRsOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0g
ICAgICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICAgICAg
PDwgIlJUQ1BfUFNGQihVTktOT1dOKSIgPDwgc3RkOjplbmRsOwotICAgICAgYnJlYWs7Ci0gIH0K
LX0KLQotZW51bSBjbGFzcyBJbnB1dFNvdXJjZSB7Ci0gIFNURElOLAotICBGSUxFLAotfTsKLQot
dm9pZCBQcmludFVzYWdlR3VpZGUoY29uc3Qgc3RkOjpzdHJpbmcmIHByb2dyYW1fbmFtZSkgewot
ICBzdGQ6OmNvdXQKLSAgICAgIDw8ICJUb29sIGZvciBwcmludGluZyBwYWNrZXQgaW5mb3JtYXRp
b24gZnJvbSBhbiBSdGNFdmVudExvZyBhcyB0ZXh0LlxuIgotICAgICAgPDwgIiogUnVuICIgKyBw
cm9ncmFtX25hbWUgKyAiIC0taGVscCBmb3IgdXNhZ2UuXG4iCi0gICAgICA8PCAiKiBFeGFtcGxl
IHVzYWdlIGZvciBwYXJzaW5nIGEgZmlsZTpcbiIKLSAgICAgIDw8ICIgICIgPDwgcHJvZ3JhbV9u
YW1lICsgIiBpbnB1dC5yZWxcbiIKLSAgICAgIDw8ICIqIEV4YW1wbGUgdXNhZ2UgZm9yIHBhcnNp
bmcgdGhlIHN0ZGluOlxuIgotICAgICAgPDwgIiAgIiA8PCBwcm9ncmFtX25hbWUgKyAiXG4iOwot
fQotCi0vLyBUT0RPKGVsYWRhbG9uKTogUmV0dXJuIGEgc3RyZWFtIG9yIGZpbGUgZGVzY3JpcHRv
ciBpbnN0ZWFkLgotSW5wdXRTb3VyY2UgUGFyc2VDb21tYW5kTGluZUZsYWdzKGludCBhcmdjLCBj
aGFyKiBhcmd2W10pIHsKLSAgaWYgKHJ0Yzo6RmxhZ0xpc3Q6OlNldEZsYWdzRnJvbUNvbW1hbmRM
aW5lKCZhcmdjLCBhcmd2LCB0cnVlKSAhPSAwKSB7Ci0gICAgUHJpbnRVc2FnZUd1aWRlKGFyZ3Zb
MF0pOwotICAgIGV4aXQoLTEpOwotICB9Ci0KLSAgaWYgKEZMQUdfaGVscCkgewotICAgIFByaW50
VXNhZ2VHdWlkZShhcmd2WzBdKTsKLSAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwotICAgIHJ0
Yzo6RmxhZ0xpc3Q6OlByaW50KG51bGxwdHIsIGZhbHNlKTsKLSAgICBleGl0KDApOwotICB9Ci0K
LSAgc3dpdGNoIChhcmdjKSB7Ci0gICAgY2FzZSAxOgotICAgICAgcmV0dXJuIElucHV0U291cmNl
OjpTVERJTjsKLSAgICBjYXNlIDI6Ci0gICAgICByZXR1cm4gSW5wdXRTb3VyY2U6OkZJTEU7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgIFByaW50VXNhZ2VHdWlkZShhcmd2WzBdKTsKLSAgICAgIGV4aXQo
LTEpOwotICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi0vLyBUaGlzIHV0aWxpdHkgd2lsbCBw
cmludCBiYXNpYyBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIHBhY2tldCB0byBzdGRvdXQuCi0vLyBO
b3RlIHRoYXQgcGFyc2VyIHdpbGwgYXNzZXJ0IGlmIHRoZSBwcm90b2J1ZiBldmVudCBpcyBtaXNz
aW5nIHNvbWUgcmVxdWlyZWQKLS8vIGZpZWxkcyBhbmQgd2UgYXR0ZW1wdCB0byBhY2Nlc3MgdGhl
bS4gV2UgZG9uJ3QgaGFuZGxlIHRoaXMgYXQgdGhlIG1vbWVudC4KLWludCBtYWluKGludCBhcmdj
LCBjaGFyKiBhcmd2W10pIHsKLSAgSW5wdXRTb3VyY2UgaW5wdXRfc291cmNlID0gUGFyc2VDb21t
YW5kTGluZUZsYWdzKGFyZ2MsIGFyZ3YpOwotCi0gIGlmIChzdHJsZW4oRkxBR19zc3JjKSA+IDAp
Ci0gICAgUlRDX0NIRUNLKFBhcnNlU3NyYyhGTEFHX3NzcmMpKSA8PCAiRmxhZyB2ZXJpZmljYXRp
b24gaGFzIGZhaWxlZC4iOwotCi0gIHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwIGRlZmF1
bHRfbWFwID0gR2V0RGVmYXVsdEhlYWRlckV4dGVuc2lvbk1hcCgpOwotICBib29sIGRlZmF1bHRf
bWFwX3VzZWQgPSBmYWxzZTsKLQotICB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3IHBhcnNl
ZF9zdHJlYW07Ci0KLSAgc3dpdGNoIChpbnB1dF9zb3VyY2UpIHsKLSAgICBjYXNlIElucHV0U291
cmNlOjpTVERJTjogewotICAgICAgaWYgKCFwYXJzZWRfc3RyZWFtLlBhcnNlU3RyZWFtKHN0ZDo6
Y2luKSkgewotICAgICAgICBzdGQ6OmNlcnIgPDwgIkVycm9yIHdoaWxlIHBhcnNpbmcgaW5wdXQg
c3RyZWFtLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgICB9Ci0gICAg
ICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBJbnB1dFNvdXJjZTo6RklMRTogewotICAgICAgaWYg
KCFwYXJzZWRfc3RyZWFtLlBhcnNlRmlsZShhcmd2WzFdKSkgewotICAgICAgICBzdGQ6OmNlcnIg
PDwgIkVycm9yIHdoaWxlIHBhcnNpbmcgaW5wdXQgZmlsZTogIiA8PCBhcmd2WzFdIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGRlZmF1bHQ6IHsgUlRDX05PVFJFQUNIRUQoKSA8PCAiVW5zdXBwb3J0ZWQgaW5wdXQgc291
cmNlLiI7IH0KLSAgfQotCi0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX3N0cmVhbS5H
ZXROdW1iZXJPZkV2ZW50cygpOyBpKyspIHsKLSAgICBib29sIGV2ZW50X3JlY29nbml6ZWQgPSBm
YWxzZTsKLSAgICBzd2l0Y2ggKHBhcnNlZF9zdHJlYW0uR2V0RXZlbnRUeXBlKGkpKSB7Ci0gICAg
ICBjYXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6VU5LTk9XTl9F
VkVOVDogewotICAgICAgICBpZiAoRkxBR191bmtub3duKSB7Ci0gICAgICAgICAgc3RkOjpjb3V0
IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdFVOS05PV05fRVZFTlQiCi0g
ICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVu
dF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNh
c2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpMT0dfU1RBUlQ6IHsK
LSAgICAgICAgaWYgKEZMQUdfc3RhcnRzdG9wKSB7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IHBh
cnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdExPR19TVEFSVCIKLSAgICAgICAgICAg
ICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6
ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6
OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkxPR19FTkQ6IHsKLSAgICAgICAgaWYg
KEZMQUdfc3RhcnRzdG9wKSB7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IHBhcnNlZF9zdHJlYW0u
R2V0VGltZXN0YW1wKGkpIDw8ICJcdExPR19FTkQiCi0gICAgICAgICAgICAgICAgICAgIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVu
dExvZ05ldzo6RXZlbnRUeXBlOjpSVFBfRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfcnRwKSB7
Ci0gICAgICAgICAgc2l6ZV90IGhlYWRlcl9sZW5ndGg7Ci0gICAgICAgICAgc2l6ZV90IHRvdGFs
X2xlbmd0aDsKLSAgICAgICAgICB1aW50OF90IGhlYWRlcltJUF9QQUNLRVRfU0laRV07Ci0gICAg
ICAgICAgd2VicnRjOjpQYWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uOwotICAgICAgICAgIGNvbnN0
IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKiBleHRlbnNpb25fbWFwID0KLSAgICAgICAg
ICAgICAgcGFyc2VkX3N0cmVhbS5HZXRSdHBIZWFkZXIoaSwgJmRpcmVjdGlvbiwgaGVhZGVyLCAm
aGVhZGVyX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JnRvdGFsX2xlbmd0aCwgbnVsbHB0cik7Ci0KLSAgICAgICAgICBpZiAoZXh0ZW5zaW9uX21hcCA9
PSBudWxscHRyKSB7Ci0gICAgICAgICAgICBleHRlbnNpb25fbWFwID0gJmRlZmF1bHRfbWFwOwot
ICAgICAgICAgICAgaWYgKCFkZWZhdWx0X21hcF91c2VkKQotICAgICAgICAgICAgICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJVc2luZyBkZWZhdWx0IGhlYWRlciBleHRlbnNpb24gbWFwIjsKLSAg
ICAgICAgICAgIGRlZmF1bHRfbWFwX3VzZWQgPSB0cnVlOwotICAgICAgICAgIH0KLQotICAgICAg
ICAgIC8vIFBhcnNlIGhlYWRlciB0byBnZXQgU1NSQyBhbmQgUlRQIHRpbWUuCi0gICAgICAgICAg
d2VicnRjOjpSdHBVdGlsaXR5OjpSdHBIZWFkZXJQYXJzZXIgcnRwX3BhcnNlcihoZWFkZXIsIGhl
YWRlcl9sZW5ndGgpOwotICAgICAgICAgIHdlYnJ0Yzo6UlRQSGVhZGVyIHBhcnNlZF9oZWFkZXI7
Ci0gICAgICAgICAgcnRwX3BhcnNlci5QYXJzZSgmcGFyc2VkX2hlYWRlciwgZXh0ZW5zaW9uX21h
cCk7Ci0gICAgICAgICAgTWVkaWFUeXBlIG1lZGlhX3R5cGUgPQotICAgICAgICAgICAgICBwYXJz
ZWRfc3RyZWFtLkdldE1lZGlhVHlwZShwYXJzZWRfaGVhZGVyLnNzcmMsIGRpcmVjdGlvbik7Ci0K
LSAgICAgICAgICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIHBhcnNl
ZF9oZWFkZXIuc3NyYykpIHsKLSAgICAgICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgc3RkOjpjb3V0IDw8
IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdFJUUCIKLSAgICAgICAgICAgICAg
ICAgICAgPDwgU3RyZWFtSW5mbyhkaXJlY3Rpb24sIG1lZGlhX3R5cGUpCi0gICAgICAgICAgICAg
ICAgICAgIDw8ICJcdHNzcmM9IiA8PCBwYXJzZWRfaGVhZGVyLnNzcmMKLSAgICAgICAgICAgICAg
ICAgICAgPDwgIlx0dGltZXN0YW1wPSIgPDwgcGFyc2VkX2hlYWRlci50aW1lc3RhbXA7Ci0gICAg
ICAgICAgaWYgKHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc0Fic29sdXRlU2VuZFRpbWUpIHsK
LSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRBYnNTZW5kVGltZT0iCi0gICAgICAgICAgICAg
ICAgICAgICAgPDwgcGFyc2VkX2hlYWRlci5leHRlbnNpb24uYWJzb2x1dGVTZW5kVGltZTsKLSAg
ICAgICAgICB9Ci0gICAgICAgICAgaWYgKHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc1ZpZGVv
Q29udGVudFR5cGUpIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRDb250ZW50VHlwZT0i
Ci0gICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyc2VkX2hlYWRlci5leHRlbnNpb24udmlkZW9Db250ZW50VHlw
ZSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChwYXJzZWRfaGVhZGVyLmV4dGVuc2lvbi5o
YXNWaWRlb1JvdGF0aW9uKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0Um90YXRpb249
IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLnZpZGVvUm90YXRpb24p
OwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAocGFyc2VkX2hlYWRlci5leHRlbnNpb24uaGFz
VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRU
cmFuc3BvcnRTZXE9IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHBhcnNlZF9oZWFkZXIuZXh0
ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyOwotICAgICAgICAgIH0KLSAgICAgICAgICBp
ZiAocGFyc2VkX2hlYWRlci5leHRlbnNpb24uaGFzVHJhbnNtaXNzaW9uVGltZU9mZnNldCkgewot
ICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJcdFRyYW5zbVRpbWVPZmZzZXQ9IgotICAgICAgICAg
ICAgICAgICAgICAgIDw8IHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLnRyYW5zbWlzc2lvblRpbWVP
ZmZzZXQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChwYXJzZWRfaGVhZGVyLmV4dGVuc2lv
bi5oYXNBdWRpb0xldmVsKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0QXVkaW9MZXZl
bD0iCi0gICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PihwYXJzZWRfaGVh
ZGVyLmV4dGVuc2lvbi5hdWRpb0xldmVsKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc3RkOjpj
b3V0IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICBpZiAoRkxBR19wcmludF9mdWxsX3BhY2tldHMp
IHsKLSAgICAgICAgICAgIC8vIFRPRE8odGVyZWxpdXMpOiBSZXdyaXRlIHRoaXMgZmlsZSB0byB1
c2UgcHJpbnRmIGluc3RlYWQgb2YgY291dC4KLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRc
dCIgPDwgc3RkOjpoZXg7Ci0gICAgICAgICAgICBjaGFyIHByZXZfZmlsbCA9IHN0ZDo6Y291dC5m
aWxsKCcwJyk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhlYWRlcl9sZW5n
dGg7IGkrKykgewotICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgc3RkOjpzZXR3KDIpIDw8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihoZWFkZXJbaV0pOwotICAgICAgICAgICAgICBpZiAoaSAlIDQg
PT0gMykKLSAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIiAiOyAgLy8gU2VwYXJhdG9yIGJl
dHdlZW4gMzItYml0IHdvcmRzLgotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RkOjpjb3V0
LmZpbGwocHJldl9maWxsKTsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmRlYyA8PCBz
dGQ6OmVuZGw7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6
ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6
OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlJUQ1BfRVZFTlQ6IHsKLSAgICAgICAg
aWYgKEZMQUdfcnRjcCkgewotICAgICAgICAgIHNpemVfdCBsZW5ndGg7Ci0gICAgICAgICAgdWlu
dDhfdCBwYWNrZXRbSVBfUEFDS0VUX1NJWkVdOwotICAgICAgICAgIHdlYnJ0Yzo6UGFja2V0RGly
ZWN0aW9uIGRpcmVjdGlvbjsKLSAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldFJ0Y3BQYWNrZXQo
aSwgJmRpcmVjdGlvbiwgcGFja2V0LCAmbGVuZ3RoKTsKLQotICAgICAgICAgIHdlYnJ0Yzo6cnRj
cDo6Q29tbW9uSGVhZGVyIHJ0Y3BfYmxvY2s7Ci0gICAgICAgICAgY29uc3QgdWludDhfdCogcGFj
a2V0X2VuZCA9IHBhY2tldCArIGxlbmd0aDsKLSAgICAgICAgICBmb3IgKGNvbnN0IHVpbnQ4X3Qq
IG5leHRfYmxvY2sgPSBwYWNrZXQ7IG5leHRfYmxvY2sgIT0gcGFja2V0X2VuZDsKLSAgICAgICAg
ICAgICAgIG5leHRfYmxvY2sgPSBydGNwX2Jsb2NrLk5leHRQYWNrZXQoKSkgewotICAgICAgICAg
ICAgcHRyZGlmZl90IHJlbWFpbmluZ19ibG9ja3Nfc2l6ZSA9IHBhY2tldF9lbmQgLSBuZXh0X2Js
b2NrOwotICAgICAgICAgICAgUlRDX0RDSEVDS19HVChyZW1haW5pbmdfYmxvY2tzX3NpemUsIDAp
OwotICAgICAgICAgICAgaWYgKCFydGNwX2Jsb2NrLlBhcnNlKG5leHRfYmxvY2ssIHJlbWFpbmlu
Z19ibG9ja3Nfc2l6ZSkpIHsKLSAgICAgICAgICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
RmFpbGVkIHRvIHBhcnNlIFJUQ1AiOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgdWludDY0X3QgbG9nX3RpbWVzdGFtcCA9IHBhcnNlZF9zdHJlYW0u
R2V0VGltZXN0YW1wKGkpOwotICAgICAgICAgICAgc3dpdGNoIChydGNwX2Jsb2NrLnR5cGUoKSkg
ewotICAgICAgICAgICAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6U2VuZGVyUmVwb3J0OjprUGFja2V0
VHlwZToKLSAgICAgICAgICAgICAgICBQcmludFNlbmRlclJlcG9ydChwYXJzZWRfc3RyZWFtLCBy
dGNwX2Jsb2NrLCBsb2dfdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpcmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNh
c2Ugd2VicnRjOjpydGNwOjpSZWNlaXZlclJlcG9ydDo6a1BhY2tldFR5cGU6Ci0gICAgICAgICAg
ICAgICAgUHJpbnRSZWNlaXZlclJlcG9ydChwYXJzZWRfc3RyZWFtLCBydGNwX2Jsb2NrLCBsb2df
dGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9u
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSB3ZWJydGM6OnJ0
Y3A6OlNkZXM6OmtQYWNrZXRUeXBlOgotICAgICAgICAgICAgICAgIFByaW50U2RlcyhydGNwX2Js
b2NrLCBsb2dfdGltZXN0YW1wLCBkaXJlY3Rpb24pOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6RXh0ZW5kZWRSZXBvcnRzOjprUGFja2V0
VHlwZToKLSAgICAgICAgICAgICAgICBQcmludFhyKHBhcnNlZF9zdHJlYW0sIHJ0Y3BfYmxvY2ss
IGxvZ190aW1lc3RhbXAsIGRpcmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2Ugd2VicnRjOjpydGNwOjpCeWU6OmtQYWNrZXRUeXBlOgotICAgICAgICAg
ICAgICAgIFByaW50QnllKHBhcnNlZF9zdHJlYW0sIHJ0Y3BfYmxvY2ssIGxvZ190aW1lc3RhbXAs
IGRpcmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2Ug
d2VicnRjOjpydGNwOjpSdHBmYjo6a1BhY2tldFR5cGU6Ci0gICAgICAgICAgICAgICAgUHJpbnRS
dHBGZWVkYmFjayhwYXJzZWRfc3RyZWFtLCBydGNwX2Jsb2NrLCBsb2dfdGltZXN0YW1wLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OlBzZmI6OmtQYWNrZXRU
eXBlOgotICAgICAgICAgICAgICAgIFByaW50UHNGZWVkYmFjayhwYXJzZWRfc3RyZWFtLCBydGNw
X2Jsb2NrLCBsb2dfdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aXJlY3Rpb24pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KEZMQUdfcHJpbnRfZnVsbF9wYWNrZXRzKSB7Ci0gICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAi
XHRcdCIgPDwgc3RkOjpoZXg7Ci0gICAgICAgICAgICAgIGNoYXIgcHJldl9maWxsID0gc3RkOjpj
b3V0LmZpbGwoJzAnKTsKLSAgICAgICAgICAgICAgZm9yIChjb25zdCB1aW50OF90KiBwID0gbmV4
dF9ibG9jazsgcCA8IHJ0Y3BfYmxvY2suTmV4dFBhY2tldCgpOwotICAgICAgICAgICAgICAgICAg
IHArKykgewotICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OnNldHcoMikgPDwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KCpwKTsKLSAgICAgICAgICAgICAgICBwdHJkaWZmX3QgY2hhcnNf
cHJpbnRlZCA9IHAgLSBuZXh0X2Jsb2NrOwotICAgICAgICAgICAgICAgIGlmIChjaGFyc19wcmlu
dGVkICUgNCA9PSAzKQotICAgICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICIgIjsgIC8vIFNl
cGFyYXRvciBiZXR3ZWVuIDMyLWJpdCB3b3Jkcy4KLSAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICBzdGQ6OmNvdXQuZmlsbChwcmV2X2ZpbGwpOwotICAgICAgICAgICAgICBzdGQ6OmNvdXQg
PDwgc3RkOjpkZWMgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZl
bnRUeXBlOjpBVURJT19QTEFZT1VUX0VWRU5UOiB7Ci0gICAgICAgIGlmIChGTEFHX3BsYXlvdXQp
IHsKLSAgICAgICAgICBhdXRvIGF1ZGlvX3BsYXlvdXQgPSBwYXJzZWRfc3RyZWFtLkdldEF1ZGlv
UGxheW91dChpKTsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgYXVkaW9fcGxheW91dC5sb2dfdGlt
ZV91cygpIDw8ICJcdEFVRElPX1BMQVlPVVQiCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdHNz
cmM9IiA8PCBhdWRpb19wbGF5b3V0LnNzcmMgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAg
ICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQot
ICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkxPU1Nf
QkFTRURfQldFX1VQREFURTogewotICAgICAgICBpZiAoRkxBR19id2UpIHsKLSAgICAgICAgICBh
dXRvIGJ3ZV91cGRhdGUgPSBwYXJzZWRfc3RyZWFtLkdldExvc3NCYXNlZEJ3ZVVwZGF0ZShpKTsK
LSAgICAgICAgICBzdGQ6OmNvdXQgPDwgYndlX3VwZGF0ZS5sb2dfdGltZV91cygpIDw8ICJcdEJX
RShMT1NTX0JBU0VEKSIKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0Yml0cmF0ZV9icHM9IiA8
PCBid2VfdXBkYXRlLmJpdHJhdGVfYnBzCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdGZyYWN0
aW9uX2xvc3Q9IgotICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YndlX3VwZGF0ZS5mcmFjdGlvbl9sb3N0KQotICAgICAgICAgICAgICAgICAgICA8PCAiXHRleHBl
Y3RlZF9wYWNrZXRzPSIgPDwgYndlX3VwZGF0ZS5leHBlY3RlZF9wYWNrZXRzCi0gICAgICAgICAg
ICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25p
emVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRj
OjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpERUxBWV9CQVNFRF9CV0VfVVBEQVRF
OiB7Ci0gICAgICAgIGlmIChGTEFHX2J3ZSkgewotICAgICAgICAgIGF1dG8gYndlX3VwZGF0ZSA9
IHBhcnNlZF9zdHJlYW0uR2V0RGVsYXlCYXNlZEJ3ZVVwZGF0ZShpKTsKLSAgICAgICAgICBzdGQ6
OmNvdXQgPDwgYndlX3VwZGF0ZS5sb2dfdGltZV91cygpIDw8ICJcdEJXRShERUxBWV9CQVNFRCki
Ci0gICAgICAgICAgICAgICAgICAgIDw8ICJcdGJpdHJhdGVfYnBzPSIgPDwgYndlX3VwZGF0ZS5i
aXRyYXRlX2JwcwotICAgICAgICAgICAgICAgICAgICA8PCAiXHRkZXRlY3Rvcl9zdGF0ZT0iCi0g
ICAgICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oYndlX3VwZGF0ZS5kZXRlY3Rv
cl9zdGF0ZSkgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6
ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6
OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OgotICAgICAgICAgIFZJREVPX1JFQ0VJ
VkVSX0NPTkZJR19FVkVOVDogewotICAgICAgICBpZiAoRkxBR19jb25maWcgJiYgRkxBR192aWRl
byAmJiBGTEFHX2luY29taW5nKSB7Ci0gICAgICAgICAgd2VicnRjOjpydGNsb2c6OlN0cmVhbUNv
bmZpZyBjb25maWcgPQotICAgICAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldFZpZGVvUmVjZWl2
ZUNvbmZpZyhpKTsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgcGFyc2VkX3N0cmVhbS5HZXRUaW1l
c3RhbXAoaSkgPDwgIlx0VklERU9fUkVDVl9DT05GSUciCi0gICAgICAgICAgICAgICAgICAgIDw8
ICJcdHNzcmM9IiA8PCBjb25maWcucmVtb3RlX3NzcmMKLSAgICAgICAgICAgICAgICAgICAgPDwg
Ilx0ZmVlZGJhY2tfc3NyYz0iIDw8IGNvbmZpZy5sb2NhbF9zc3JjOwotICAgICAgICAgIHN0ZDo6
Y291dCA8PCAiXHRleHRlbnNpb25zPXsiOwotICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZXh0
ZW5zaW9uIDogY29uZmlnLnJ0cF9leHRlbnNpb25zKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQg
PDwgZXh0ZW5zaW9uLlRvU3RyaW5nKCkgPDwgIiwiOwotICAgICAgICAgIH0KLSAgICAgICAgICBz
dGQ6OmNvdXQgPDwgIn0iOwotICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRjb2RlY3M9eyI7Ci0g
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb2RlYyA6IGNvbmZpZy5jb2RlY3MpIHsKLSAgICAg
ICAgICAgIHN0ZDo6Y291dCA8PCAie25hbWU6ICIgPDwgY29kZWMucGF5bG9hZF9uYW1lCi0gICAg
ICAgICAgICAgICAgICAgICAgPDwgIiwgcGF5bG9hZF90eXBlOiAiIDw8IGNvZGVjLnBheWxvYWRf
dHlwZQotICAgICAgICAgICAgICAgICAgICAgIDw8ICIsIHJ0eF9wYXlsb2FkX3R5cGU6ICIgPDwg
Y29kZWMucnR4X3BheWxvYWRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgIDw8ICJ9IjsKLSAg
ICAgICAgICB9Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8ICJ9IiA8PCBzdGQ6OmVuZGw7Ci0gICAg
ICAgIH0KLSAgICAgICAgZXZlbnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgfQotCi0gICAgICBjYXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50
VHlwZTo6VklERU9fU0VOREVSX0NPTkZJR19FVkVOVDogewotICAgICAgICBpZiAoRkxBR19jb25m
aWcgJiYgRkxBR192aWRlbyAmJiBGTEFHX291dGdvaW5nKSB7Ci0gICAgICAgICAgc3RkOjp2ZWN0
b3I8d2VicnRjOjpydGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmlncyA9Ci0gICAgICAgICAgICAg
IHBhcnNlZF9zdHJlYW0uR2V0VmlkZW9TZW5kQ29uZmlnKGkpOwotICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgY29uZmlnIDogY29uZmlncykgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8IHBh
cnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdFZJREVPX1NFTkRfQ09ORklHIjsKLSAg
ICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRzc3Jjcz0iIDw8IGNvbmZpZy5sb2NhbF9zc3JjOwot
ICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJcdHJ0eF9zc3Jjcz0iIDw8IGNvbmZpZy5ydHhfc3Ny
YzsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRleHRlbnNpb25zPXsiOwotICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBleHRlbnNpb24gOiBjb25maWcucnRwX2V4dGVuc2lvbnMpIHsK
LSAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8IGV4dGVuc2lvbi5Ub1N0cmluZygpIDw8ICIsIjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAifSI7Ci0gICAgICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlx0Y29kZWNzPXsiOwotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBjb2RlYyA6IGNvbmZpZy5jb2RlY3MpIHsKLSAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJ7
bmFtZTogIiA8PCBjb2RlYy5wYXlsb2FkX25hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICIsIHBheWxvYWRfdHlwZTogIiA8PCBjb2RlYy5wYXlsb2FkX3R5cGUKLSAgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICIsIHJ0eF9wYXlsb2FkX3R5cGU6ICIgPDwgY29kZWMucnR4X3BheWxvYWRf
dHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIn0iOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgc3RkOjpjb3V0IDw8ICJ9IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsK
LSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVu
dFR5cGU6OgotICAgICAgICAgIEFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDogewotICAgICAg
ICBpZiAoRkxBR19jb25maWcgJiYgRkxBR19hdWRpbyAmJiBGTEFHX2luY29taW5nKSB7Ci0gICAg
ICAgICAgd2VicnRjOjpydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcgPQotICAgICAgICAgICAg
ICBwYXJzZWRfc3RyZWFtLkdldEF1ZGlvUmVjZWl2ZUNvbmZpZyhpKTsKLSAgICAgICAgICBzdGQ6
OmNvdXQgPDwgcGFyc2VkX3N0cmVhbS5HZXRUaW1lc3RhbXAoaSkgPDwgIlx0QVVESU9fUkVDVl9D
T05GSUciCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCBjb25maWcucmVtb3Rl
X3NzcmMKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0ZmVlZGJhY2tfc3NyYz0iIDw8IGNvbmZp
Zy5sb2NhbF9zc3JjOwotICAgICAgICAgIHN0ZDo6Y291dCA8PCAiXHRleHRlbnNpb25zPXsiOwot
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZXh0ZW5zaW9uIDogY29uZmlnLnJ0cF9leHRlbnNp
b25zKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgZXh0ZW5zaW9uLlRvU3RyaW5nKCkgPDwg
IiwiOwotICAgICAgICAgIH0KLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIn0iOwotICAgICAgICAg
IHN0ZDo6Y291dCA8PCAiXHRjb2RlY3M9eyI7Ci0gICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBj
b2RlYyA6IGNvbmZpZy5jb2RlY3MpIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAie25hbWU6
ICIgPDwgY29kZWMucGF5bG9hZF9uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgPDwgIiwgcGF5
bG9hZF90eXBlOiAiIDw8IGNvZGVjLnBheWxvYWRfdHlwZQotICAgICAgICAgICAgICAgICAgICAg
IDw8ICIsIHJ0eF9wYXlsb2FkX3R5cGU6ICIgPDwgY29kZWMucnR4X3BheWxvYWRfdHlwZQotICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJ9IjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc3RkOjpj
b3V0IDw8ICJ9IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZlbnRfcmVjb2du
aXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBjYXNlIHdlYnJ0
Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QVVESU9fU0VOREVSX0NPTkZJR19F
VkVOVDogewotICAgICAgICBpZiAoRkxBR19jb25maWcgJiYgRkxBR19hdWRpbyAmJiBGTEFHX291
dGdvaW5nKSB7Ci0gICAgICAgICAgd2VicnRjOjpydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcg
PQotICAgICAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldEF1ZGlvU2VuZENvbmZpZyhpKTsKLSAg
ICAgICAgICBzdGQ6OmNvdXQgPDwgcGFyc2VkX3N0cmVhbS5HZXRUaW1lc3RhbXAoaSkgPDwgIlx0
QVVESU9fU0VORF9DT05GSUciCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCBj
b25maWcubG9jYWxfc3NyYzsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0ZXh0ZW5zaW9ucz17
IjsKLSAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGV4dGVuc2lvbiA6IGNvbmZpZy5ydHBfZXh0
ZW5zaW9ucykgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8IGV4dGVuc2lvbi5Ub1N0cmluZygp
IDw8ICIsIjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8ICJ9IjsKLSAgICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlx0Y29kZWNzPXsiOwotICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgY29kZWMgOiBjb25maWcuY29kZWNzKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIntu
YW1lOiAiIDw8IGNvZGVjLnBheWxvYWRfbmFtZQotICAgICAgICAgICAgICAgICAgICAgIDw8ICIs
IHBheWxvYWRfdHlwZTogIiA8PCBjb2RlYy5wYXlsb2FkX3R5cGUKLSAgICAgICAgICAgICAgICAg
ICAgICA8PCAiLCBydHhfcGF5bG9hZF90eXBlOiAiIDw8IGNvZGVjLnJ0eF9wYXlsb2FkX3R5cGUK
LSAgICAgICAgICAgICAgICAgICAgICA8PCAifSI7Ci0gICAgICAgICAgfQotICAgICAgICAgIHN0
ZDo6Y291dCA8PCAifSIgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3Jl
Y29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3
ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OgotICAgICAgICAgIEFVRElP
X05FVFdPUktfQURBUFRBVElPTl9FVkVOVDogewotICAgICAgICBpZiAoRkxBR19hbmEpIHsKLSAg
ICAgICAgICBhdXRvIGFuYV9ldmVudCA9IHBhcnNlZF9zdHJlYW0uR2V0QXVkaW9OZXR3b3JrQWRh
cHRhdGlvbihpKTsKLSAgICAgICAgICBjaGFyIGJ1ZmZlclszMDBdOwotICAgICAgICAgIHJ0Yzo6
U2ltcGxlU3RyaW5nQnVpbGRlciBidWlsZGVyKGJ1ZmZlcik7Ci0gICAgICAgICAgYnVpbGRlciA8
PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRBTkFfVVBEQVRFIjsKLSAgICAg
ICAgICBpZiAoYW5hX2V2ZW50LmNvbmZpZy5iaXRyYXRlX2JwcykgewotICAgICAgICAgICAgYnVp
bGRlciA8PCAiXHRiaXRyYXRlX2Jwcz0iIDw8ICphbmFfZXZlbnQuY29uZmlnLmJpdHJhdGVfYnBz
OwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYW5hX2V2ZW50LmNvbmZpZy5mcmFtZV9sZW5n
dGhfbXMpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIgPDwgIlx0ZnJhbWVfbGVuZ3RoX21zPSIKLSAg
ICAgICAgICAgICAgICAgICAgPDwgKmFuYV9ldmVudC5jb25maWcuZnJhbWVfbGVuZ3RoX21zOwot
ICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYW5hX2V2ZW50LmNvbmZpZy51cGxpbmtfcGFja2V0
X2xvc3NfZnJhY3Rpb24pIHsKLSAgICAgICAgICAgIGJ1aWxkZXIgPDwgIlx0dXBsaW5rX3BhY2tl
dF9sb3NzX2ZyYWN0aW9uPSIKLSAgICAgICAgICAgICAgICAgICAgPDwgKmFuYV9ldmVudC5jb25m
aWcudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uOwotICAgICAgICAgIH0KLSAgICAgICAgICBp
ZiAoYW5hX2V2ZW50LmNvbmZpZy5lbmFibGVfZmVjKSB7Ci0gICAgICAgICAgICBidWlsZGVyIDw8
ICJcdGVuYWJsZV9mZWM9IiA8PCAqYW5hX2V2ZW50LmNvbmZpZy5lbmFibGVfZmVjOwotICAgICAg
ICAgIH0KLSAgICAgICAgICBpZiAoYW5hX2V2ZW50LmNvbmZpZy5lbmFibGVfZHR4KSB7Ci0gICAg
ICAgICAgICBidWlsZGVyIDw8ICJcdGVuYWJsZV9kdHg9IiA8PCAqYW5hX2V2ZW50LmNvbmZpZy5l
bmFibGVfZHR4OwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYW5hX2V2ZW50LmNvbmZpZy5u
dW1fY2hhbm5lbHMpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIgPDwgIlx0bnVtX2NoYW5uZWxzPSIg
PDwgKmFuYV9ldmVudC5jb25maWcubnVtX2NoYW5uZWxzOwotICAgICAgICAgIH0KLSAgICAgICAg
ICBzdGQ6OmNvdXQgPDwgYnVpbGRlci5zdHIoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAg
ICAgICAgZXZlbnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQot
Ci0gICAgICBjYXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6Ci0g
ICAgICAgICAgQldFX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9FVkVOVDogewotICAgICAgICBpZiAo
RkxBR19wcm9iZSkgewotICAgICAgICAgIGF1dG8gcHJvYmVfZXZlbnQgPSBwYXJzZWRfc3RyZWFt
LkdldEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQoaSk7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IHBh
cnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdFBST0JFX0NSRUFURUQoIgotICAgICAg
ICAgICAgICAgICAgICA8PCBwcm9iZV9ldmVudC5pZCA8PCAiKSIKLSAgICAgICAgICAgICAgICAg
ICAgPDwgIlx0Yml0cmF0ZV9icHM9IiA8PCBwcm9iZV9ldmVudC5iaXRyYXRlX2JwcwotICAgICAg
ICAgICAgICAgICAgICA8PCAiXHRtaW5fcGFja2V0cz0iIDw8IHByb2JlX2V2ZW50Lm1pbl9wYWNr
ZXRzCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdG1pbl9ieXRlcz0iIDw8IHByb2JlX2V2ZW50
Lm1pbl9ieXRlcyA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZlbnRfcmVjb2du
aXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBjYXNlIHdlYnJ0
Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QldFX1BST0JFX0ZBSUxVUkVfRVZF
TlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfcHJvYmUpIHsKLSAgICAgICAgICB3ZWJydGM6OkxvZ2dl
ZEJ3ZVByb2JlRmFpbHVyZUV2ZW50IHByb2JlX3Jlc3VsdCA9Ci0gICAgICAgICAgICAgIHBhcnNl
ZF9zdHJlYW0uR2V0QndlUHJvYmVGYWlsdXJlKGkpOwotICAgICAgICAgIHN0ZDo6Y291dCA8PCBw
YXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRQUk9CRV9GQUlMVVJFKCIKLSAgICAg
ICAgICAgICAgICAgICAgPDwgcHJvYmVfcmVzdWx0LmlkIDw8ICIpIgotICAgICAgICAgICAgICAg
ICAgICA8PCAiXHRmYWlsdXJlX3JlYXNvbj0iCi0gICAgICAgICAgICAgICAgICAgIDw8IHN0YXRp
Y19jYXN0PGludD4ocHJvYmVfcmVzdWx0LmZhaWx1cmVfcmVhc29uKQotICAgICAgICAgICAgICAg
ICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZlbnRfcmVjb2duaXplZCA9
IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBjYXNlIHdlYnJ0Yzo6UGFy
c2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QldFX1BST0JFX1NVQ0NFU1NfRVZFTlQ6IHsK
LSAgICAgICAgaWYgKEZMQUdfcHJvYmUpIHsKLSAgICAgICAgICB3ZWJydGM6OkxvZ2dlZEJ3ZVBy
b2JlU3VjY2Vzc0V2ZW50IHByb2JlX3Jlc3VsdCA9Ci0gICAgICAgICAgICAgIHBhcnNlZF9zdHJl
YW0uR2V0QndlUHJvYmVTdWNjZXNzKGkpOwotICAgICAgICAgIHN0ZDo6Y291dCA8PCBwYXJzZWRf
c3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRQUk9CRV9TVUNDRVNTKCIKLSAgICAgICAgICAg
ICAgICAgICAgPDwgcHJvYmVfcmVzdWx0LmlkIDw8ICIpIgotICAgICAgICAgICAgICAgICAgICA8
PCAiXHRiaXRyYXRlX2Jwcz0iIDw8IHByb2JlX3Jlc3VsdC5iaXRyYXRlX2JwcwotICAgICAgICAg
ICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZlbnRfcmVjb2du
aXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBjYXNlIHdlYnJ0
Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QUxSX1NUQVRFX0VWRU5UOiB7Ci0g
ICAgICAgIGlmIChGTEFHX2J3ZSkgewotICAgICAgICAgIHdlYnJ0Yzo6TG9nZ2VkQWxyU3RhdGVF
dmVudCBhbHJfc3RhdGUgPSBwYXJzZWRfc3RyZWFtLkdldEFsclN0YXRlKGkpOwotICAgICAgICAg
IHN0ZDo6Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8PCAiXHRBTFJfU1RB
VEUiCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdGluX2Fscj0iIDw8IGFscl9zdGF0ZS5pbl9h
bHIgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0
cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OklDRV9DQU5ESURBVEVfUEFJUl9DT05GSUc6IHsK
LSAgICAgICAgaWYgKEZMQUdfaWNlKSB7Ci0gICAgICAgICAgd2VicnRjOjpMb2dnZWRJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnIGljZV9jcF9jb25maWcgPQotICAgICAgICAgICAgICBwYXJzZWRfc3Ry
ZWFtLkdldEljZUNhbmRpZGF0ZVBhaXJDb25maWcoaSk7Ci0gICAgICAgICAgLy8gVE9ETyhxaW5n
c2kpOiBjb252ZXJ0IHRoZSBudW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIHN0YXRlcyB0byB0ZXh0
Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpCi0g
ICAgICAgICAgICAgICAgICAgIDw8ICJcdElDRV9DQU5ESURBVEVfUEFJUl9DT05GSUciCi0gICAg
ICAgICAgICAgICAgICAgIDw8ICJcdHR5cGU9IiA8PCBzdGF0aWNfY2FzdDxpbnQ+KGljZV9jcF9j
b25maWcudHlwZSkKLSAgICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICB9
Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAg
IH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6
OklDRV9DQU5ESURBVEVfUEFJUl9FVkVOVDogewotICAgICAgICBpZiAoRkxBR19pY2UpIHsKLSAg
ICAgICAgICB3ZWJydGM6OkxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCBpY2VfY3BfZXZlbnQg
PQotICAgICAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldEljZUNhbmRpZGF0ZVBhaXJFdmVudChp
KTsKLSAgICAgICAgICAvLyBUT0RPKHFpbmdzaSk6IGNvbnZlcnQgdGhlIG51bWVyaWMgcmVwcmVz
ZW50YXRpb24gb2Ygc3RhdGVzIHRvIHRleHQKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgcGFyc2Vk
X3N0cmVhbS5HZXRUaW1lc3RhbXAoaSkKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0SUNFX0NB
TkRJREFURV9QQUlSX0VWRU5UIgotICAgICAgICAgICAgICAgICAgICA8PCAiXHR0eXBlPSIgPDwg
c3RhdGljX2Nhc3Q8aW50PihpY2VfY3BfZXZlbnQudHlwZSkKLSAgICAgICAgICAgICAgICAgICAg
PDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVl
OwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWV2ZW50X3JlY29n
bml6ZWQpIHsKLSAgICAgIHN0ZDo6Y291dCA8PCAiVW5yZWNvZ25pemVkIGV2ZW50ICgiCi0gICAg
ICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PihwYXJzZWRfc3RyZWFtLkdldEV2ZW50VHlw
ZShpKSkgPDwgIikiCi0gICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgIH0KLSAgfQot
ICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX2ltcGwuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvcnRjX2V2ZW50X2xvZ19pbXBsLmNjCmluZGV4IDU1NGEwMjgzZmQ2Zjk3MzdhYTA0
ZTJlMmE4NGYxZDg4ODg0NDIxNDYuLmMwMjJhM2Q0MTg1Y2YxNDNiOTRlMGUyODFiYzZmZTcyNWNl
ZTM2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX2ltcGwuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL3J0Y19ldmVudF9sb2dfaW1wbC5jYwpAQCAtMTgsOCArMTgsOSBAQAogI2luY2x1ZGUgPHZl
Y3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS9y
dGNldmVudGxvZ291dHB1dC5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNv
ZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9sZWdhY3kuaCIKLSNpbmNsdWRlICJsb2dnaW5nL3J0
Y19ldmVudF9sb2cvb3V0cHV0L3J0Y19ldmVudF9sb2dfb3V0cHV0X2ZpbGUuaCIKKyNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbmV3
X2Zvcm1hdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgpAQCAt
NjQsNyArNjUsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nRW5jb2Rlcj4gQ3JlYXRl
RW5jb2RlcigKICAgICBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlIHR5cGUpIHsKICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgY2FzZSBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpMZWdhY3k6Cisg
ICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJDcmVhdGluZyBsZWdhY3kgZW5jb2RlciBmb3IgUlRD
IGV2ZW50IGxvZy4iOwogICAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9n
RW5jb2RlckxlZ2FjeT4oKTsKKyAgICBjYXNlIFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6Ok5l
d0Zvcm1hdDoKKyAgICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkNyZWF0aW5nIG5ldyBmb3JtYXQg
ZW5jb2RlciBmb3IgUlRDIGV2ZW50IGxvZy4iOworICAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5p
cXVlPFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdD4oKTsKICAgICBkZWZhdWx0OgogICAgICAg
UlRDX0xPRyhMU19FUlJPUikgPDwgIlVua25vd24gUnRjRXZlbnRMb2cgZW5jb2RlciB0eXBlICgi
IDw8IGludCh0eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgPDwgIikiOwpAQCAtMTY4LDIw
ICsxNzMsMTkgQEAgYm9vbCBSdGNFdmVudExvZ0ltcGw6OlN0YXJ0TG9nZ2luZyhzdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnRMb2dPdXRwdXQ+IG91dHB1dCwKICAgICByZXR1cm4gZmFsc2U7CiAgIH0K
IAotICAvLyBUT0RPKHRlcmVsaXVzKTogVGhlIG1hcHBpbmcgYmV0d2VlbiBsb2cgdGltZXN0YW1w
cyBhbmQgVVRDIHNob3VsZCBiZSBzdG9yZWQKLSAgLy8gaW4gdGhlIGV2ZW50X2xvZyBTVEFSVCBl
dmVudC4KICAgY29uc3QgaW50NjRfdCB0aW1lc3RhbXBfdXMgPSBydGM6OlRpbWVNaWNyb3MoKTsK
ICAgY29uc3QgaW50NjRfdCB1dGNfdGltZV91cyA9IHJ0Yzo6VGltZVVUQ01pY3JvcygpOwogICBS
VENfTE9HKExTX0lORk8pIDw8ICJTdGFydGluZyBXZWJSVEMgZXZlbnQgbG9nLiAoVGltZXN0YW1w
LCBVVEMpID0gIgogICAgICAgICAgICAgICAgICAgIDw8ICIoIiA8PCB0aW1lc3RhbXBfdXMgPDwg
IiwgIiA8PCB1dGNfdGltZV91cyA8PCAiKS4iOwogCiAgIC8vIEJpbmRpbmcgdG8gfHRoaXN8IGlz
IHNhZmUgYmVjYXVzZSB8dGhpc3wgb3V0bGl2ZXMgdGhlIHx0YXNrX3F1ZXVlX3wuCi0gIGF1dG8g
c3RhcnQgPSBbdGhpcywgdGltZXN0YW1wX3VzXShzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dP
dXRwdXQ+IG91dHB1dCkgeworICBhdXRvIHN0YXJ0ID0gW3RoaXMsIHRpbWVzdGFtcF91cywKKyAg
ICAgICAgICAgICAgICB1dGNfdGltZV91c10oc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nT3V0
cHV0PiBvdXRwdXQpIHsKICAgICBSVENfRENIRUNLX1JVTl9PTih0YXNrX3F1ZXVlXy5nZXQoKSk7
CiAgICAgUlRDX0RDSEVDSyhvdXRwdXQtPklzQWN0aXZlKCkpOwogICAgIGV2ZW50X291dHB1dF8g
PSBzdGQ6Om1vdmUob3V0cHV0KTsKICAgICBudW1fY29uZmlnX2V2ZW50c193cml0dGVuXyA9IDA7
Ci0gICAgV3JpdGVUb091dHB1dChldmVudF9lbmNvZGVyXy0+RW5jb2RlTG9nU3RhcnQodGltZXN0
YW1wX3VzKSk7CisgICAgV3JpdGVUb091dHB1dChldmVudF9lbmNvZGVyXy0+RW5jb2RlTG9nU3Rh
cnQodGltZXN0YW1wX3VzLCB1dGNfdGltZV91cykpOwogICAgIExvZ0V2ZW50c0Zyb21NZW1vcnlU
b091dHB1dCgpOwogICB9OwogCkBAIC0xOTcsNyArMjAxLDcgQEAgdm9pZCBSdGNFdmVudExvZ0lt
cGw6OlN0b3BMb2dnaW5nKCkgewogCiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlN0b3BwaW5nIFdl
YlJUQyBldmVudCBsb2cuIjsKIAotICBydGM6OkV2ZW50IG91dHB1dF9zdG9wcGVkKHRydWUsIGZh
bHNlKTsKKyAgcnRjOjpFdmVudCBvdXRwdXRfc3RvcHBlZDsKIAogICAvLyBCaW5kaW5nIHRvIHx0
aGlzfCBpcyBzYWZlIGJlY2F1c2UgfHRoaXN8IG91dGxpdmVzIHRoZSB8dGFza19xdWV1ZV98Lgog
ICB0YXNrX3F1ZXVlXy0+UG9zdFRhc2soW3RoaXMsICZvdXRwdXRfc3RvcHBlZF0oKSB7CkBAIC0z
NzIsOCArMzc2LDQgQEAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBSdGNFdmVudExvZzo6
Q3JlYXRlKAogI2VuZGlmICAvLyBFTkFCTEVfUlRDX0VWRU5UX0xPRwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnRMb2c+IFJ0Y0V2ZW50TG9nOjpDcmVhdGVOdWxsKCkgewotICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPihuZXcgUnRjRXZlbnRMb2dOdWxsSW1wbCgpKTsK
LX0KLQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVu
dF9sb2dfcGFyc2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyLmNjCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDJhZjE4OWFhZDU5MjcwNjY4ZjU3YzMzNWQyMmMzMWQ0
NmIzNWVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5jYworKysgL2Rldi9udWxsCkBAIC0xLDg1MSArMCww
IEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5oIgotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5j
bHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8ZnN0cmVh
bT4KLSNpbmNsdWRlIDxpc3RyZWFtPgotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDx1dGlsaXR5
PgotCi0jaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKLSNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVk
ZS9hdWRpb19uZXR3b3JrX2FkYXB0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2UvcHJvdG9idWZfdXRpbHMuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLW5hbWVzcGFjZSB7
Ci1SdGNwTW9kZSBHZXRSdW50aW1lUnRjcE1vZGUocnRjbG9nOjpWaWRlb1JlY2VpdmVDb25maWc6
OlJ0Y3BNb2RlIHJ0Y3BfbW9kZSkgewotICBzd2l0Y2ggKHJ0Y3BfbW9kZSkgewotICAgIGNhc2Ug
cnRjbG9nOjpWaWRlb1JlY2VpdmVDb25maWc6OlJUQ1BfQ09NUE9VTkQ6Ci0gICAgICByZXR1cm4g
UnRjcE1vZGU6OmtDb21wb3VuZDsKLSAgICBjYXNlIHJ0Y2xvZzo6VmlkZW9SZWNlaXZlQ29uZmln
OjpSVENQX1JFRFVDRURTSVpFOgotICAgICAgcmV0dXJuIFJ0Y3BNb2RlOjprUmVkdWNlZFNpemU7
Ci0gIH0KLSAgUlRDX05PVFJFQUNIRUQoKTsKLSAgcmV0dXJuIFJ0Y3BNb2RlOjprT2ZmOwotfQot
Ci1QYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlIEdldFJ1bnRpbWVFdmVudFR5cGUoCi0gICAg
cnRjbG9nOjpFdmVudDo6RXZlbnRUeXBlIGV2ZW50X3R5cGUpIHsKLSAgc3dpdGNoIChldmVudF90
eXBlKSB7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpVTktOT1dOX0VWRU5UOgotICAgICAgcmV0
dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OlVOS05PV05fRVZFTlQ7Ci0gICAgY2Fz
ZSBydGNsb2c6OkV2ZW50OjpMT0dfU1RBUlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRM
b2c6OkV2ZW50VHlwZTo6TE9HX1NUQVJUOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6TE9HX0VO
RDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpMT0dfRU5EOwot
ICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6UlRQX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0
Y0V2ZW50TG9nOjpFdmVudFR5cGU6OlJUUF9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6
OlJUQ1BfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6
UlRDUF9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1BMQVlPVVRfRVZFTlQ6
Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6QVVESU9fUExBWU9V
VF9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkxPU1NfQkFTRURfQldFX1VQREFURToK
LSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpMT1NTX0JBU0VEX0JX
RV9VUERBVEU7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpERUxBWV9CQVNFRF9CV0VfVVBEQVRF
OgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OkRFTEFZX0JBU0VE
X0JXRV9VUERBVEU7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpWSURFT19SRUNFSVZFUl9DT05G
SUdfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6VklE
RU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6VklERU9f
U0VOREVSX0NPTkZJR19FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZl
bnRUeXBlOjpWSURFT19TRU5ERVJfQ09ORklHX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVu
dDo6QVVESU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2
ZW50TG9nOjpFdmVudFR5cGU6OkFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDsKLSAgICBjYXNl
IHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1NFTkRFUl9DT05GSUdfRVZFTlQ6Ci0gICAgICByZXR1cm4g
UGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6QVVESU9fU0VOREVSX0NPTkZJR19FVkVOVDsK
LSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX05FVFdPUktfQURBUFRBVElPTl9FVkVOVDoK
LSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpBVURJT19ORVRXT1JL
X0FEQVBUQVRJT05fRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfQ0xV
U1RFUl9DUkVBVEVEX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVu
dFR5cGU6OkJXRV9QUk9CRV9DTFVTVEVSX0NSRUFURURfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6
OkV2ZW50OjpCV0VfUFJPQkVfUkVTVUxUX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2
ZW50TG9nOjpFdmVudFR5cGU6OkJXRV9QUk9CRV9SRVNVTFRfRVZFTlQ7Ci0gICAgY2FzZSBydGNs
b2c6OkV2ZW50OjpBTFJfU1RBVEVfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRM
b2c6OkV2ZW50VHlwZTo6QUxSX1NUQVRFX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6
SUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRzoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExv
Zzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRFX1BBSVJfQ09ORklHOwotICAgIGNhc2UgcnRjbG9n
OjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlSX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0
Y0V2ZW50TG9nOjpFdmVudFR5cGU6OklDRV9DQU5ESURBVEVfUEFJUl9FVkVOVDsKLSAgfQotICBy
ZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6VU5LTk9XTl9FVkVOVDsKLX0KLQot
QmFuZHdpZHRoVXNhZ2UgR2V0UnVudGltZURldGVjdG9yU3RhdGUoCi0gICAgcnRjbG9nOjpEZWxh
eUJhc2VkQndlVXBkYXRlOjpEZXRlY3RvclN0YXRlIGRldGVjdG9yX3N0YXRlKSB7Ci0gIHN3aXRj
aCAoZGV0ZWN0b3Jfc3RhdGUpIHsKLSAgICBjYXNlIHJ0Y2xvZzo6RGVsYXlCYXNlZEJ3ZVVwZGF0
ZTo6QldFX05PUk1BTDoKLSAgICAgIHJldHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3Tm9ybWFsOwot
ICAgIGNhc2UgcnRjbG9nOjpEZWxheUJhc2VkQndlVXBkYXRlOjpCV0VfVU5ERVJVU0lORzoKLSAg
ICAgIHJldHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3VW5kZXJ1c2luZzsKLSAgICBjYXNlIHJ0Y2xv
Zzo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZTo6QldFX09WRVJVU0lORzoKLSAgICAgIHJldHVybiBCYW5k
d2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5nOwotICB9Ci0gIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIHJl
dHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3Tm9ybWFsOwotfQotCi1JY2VDYW5kaWRhdGVQYWlyQ29u
ZmlnVHlwZSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUoCi0gICAgcnRjbG9n
OjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZSB0eXBl
KSB7Ci0gIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWly
Q29uZmlnOjpBRERFRDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6
a0FkZGVkOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVUERBVEVE
OgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlOjprVXBkYXRlZDsKLSAg
ICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6REVTVFJPWUVEOgotICAgICAg
cmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlOjprRGVzdHJveWVkOwotICAgIGNhc2Ug
cnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpTRUxFQ1RFRDoKLSAgICAgIHJldHVybiBJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a1NlbGVjdGVkOwotICB9Ci0gIFJUQ19OT1RSRUFD
SEVEKCk7Ci0gIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a0FkZGVkOwotfQot
Ci1JY2VDYW5kaWRhdGVUeXBlIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVUeXBlKAotICAgIHJ0Y2xv
Zzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SWNlQ2FuZGlkYXRlVHlwZSB0eXBlKSB7Ci0gIHN3
aXRjaCAodHlwZSkgewotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpM
T0NBTDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVUeXBlOjprTG9jYWw7Ci0gICAgY2FzZSBy
dGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlNUVU46Ci0gICAgICByZXR1cm4gSWNlQ2Fu
ZGlkYXRlVHlwZTo6a1N0dW47Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25m
aWc6OlBSRkxYOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVR5cGU6OmtQcmZseDsKLSAgICBj
YXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6UkVMQVk6Ci0gICAgICByZXR1cm4g
SWNlQ2FuZGlkYXRlVHlwZTo6a1JlbGF5OwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnOjpVTktOT1dOX0NBTkRJREFURV9UWVBFOgotICAgICAgcmV0dXJuIEljZUNhbmRp
ZGF0ZVR5cGU6OmtVbmtub3duOwotICB9Ci0gIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIHJldHVybiBJ
Y2VDYW5kaWRhdGVUeXBlOjprVW5rbm93bjsKLX0KLQotSWNlQ2FuZGlkYXRlUGFpclByb3RvY29s
IEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2woCi0gICAgcnRjbG9nOjpJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnOjpQcm90b2NvbCBwcm90b2NvbCkgewotICBzd2l0Y2ggKHByb3RvY29s
KSB7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVEUDoKLSAgICAg
IHJldHVybiBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtVZHA7Ci0gICAgY2FzZSBydGNsb2c6
OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlRDUDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQ
YWlyUHJvdG9jb2w6OmtUY3A7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25m
aWc6OlNTTFRDUDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtTc2x0
Y3A7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlRMUzoKLSAgICAg
IHJldHVybiBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtUbHM7Ci0gICAgY2FzZSBydGNsb2c6
OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fUFJPVE9DT0w6Ci0gICAgICByZXR1cm4g
SWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprVW5rbm93bjsKLSAgfQotICBSVENfTk9UUkVBQ0hF
RCgpOwotICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprVW5rbm93bjsKLX0KLQot
SWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHkgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJB
ZGRyZXNzRmFtaWx5KAotICAgIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6QWRkcmVz
c0ZhbWlseSBhZGRyZXNzX2ZhbWlseSkgewotICBzd2l0Y2ggKGFkZHJlc3NfZmFtaWx5KSB7Ci0g
ICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OklQVjQ6Ci0gICAgICByZXR1
cm4gSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHk6OmtJcHY0OwotICAgIGNhc2UgcnRjbG9n
OjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJUFY2OgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0
ZVBhaXJBZGRyZXNzRmFtaWx5OjprSXB2NjsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRl
UGFpckNvbmZpZzo6VU5LTk9XTl9BRERSRVNTX0ZBTUlMWToKLSAgICAgIHJldHVybiBJY2VDYW5k
aWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6a1Vua25vd247Ci0gIH0KLSAgUlRDX05PVFJFQUNIRUQo
KTsKLSAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5OjprVW5rbm93bjsKLX0K
LQotSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGUgR2V0UnVudGltZUljZUNhbmRpZGF0ZU5ldHdvcmtU
eXBlKAotICAgIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6TmV0d29ya1R5cGUgbmV0
d29ya190eXBlKSB7Ci0gIHN3aXRjaCAobmV0d29ya190eXBlKSB7Ci0gICAgY2FzZSBydGNsb2c6
OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkVUSEVSTkVUOgotICAgICAgcmV0dXJuIEljZUNhbmRp
ZGF0ZU5ldHdvcmtUeXBlOjprRXRoZXJuZXQ7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0
ZVBhaXJDb25maWc6OkxPT1BCQUNLOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtU
eXBlOjprTG9vcGJhY2s7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OldJRkk6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtXaWZpOwotICAg
IGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpWUE46Ci0gICAgICByZXR1cm4g
SWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtWcG47Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRp
ZGF0ZVBhaXJDb25maWc6OkNFTExVTEFSOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdv
cmtUeXBlOjprQ2VsbHVsYXI7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25m
aWc6OlVOS05PV05fTkVUV09SS19UWVBFOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdv
cmtUeXBlOjprVW5rbm93bjsKLSAgfQotICBSVENfTk9UUkVBQ0hFRCgpOwotICByZXR1cm4gSWNl
Q2FuZGlkYXRlTmV0d29ya1R5cGU6OmtVbmtub3duOwotfQotCi1JY2VDYW5kaWRhdGVQYWlyRXZl
bnRUeXBlIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlKAotICAgIHJ0Y2xvZzo6
SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlIHR5cGUpIHsK
LSAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJFdmVu
dDo6Q0hFQ0tfU0VOVDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjpr
Q2hlY2tTZW50OwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6OkNIRUNL
X1JFQ0VJVkVEOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGU6OmtDaGVj
a1JlY2VpdmVkOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6OkNIRUNL
X1JFU1BPTlNFX1NFTlQ6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6
a0NoZWNrUmVzcG9uc2VTZW50OwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyRXZl
bnQ6OkNIRUNLX1JFU1BPTlNFX1JFQ0VJVkVEOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBh
aXJFdmVudFR5cGU6OmtDaGVja1Jlc3BvbnNlUmVjZWl2ZWQ7Ci0gIH0KLSAgUlRDX05PVFJFQUNI
RUQoKTsKLSAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGU6OmtDaGVja1NlbnQ7Ci19
Ci0KLXN0ZDo6cGFpcjx1aW50NjRfdCwgYm9vbD4gUGFyc2VWYXJJbnQoc3RkOjppc3RyZWFtJiBz
dHJlYW0pIHsKLSAgdWludDY0X3QgdmFyaW50ID0gMDsKLSAgZm9yIChzaXplX3QgYnl0ZXNfcmVh
ZCA9IDA7IGJ5dGVzX3JlYWQgPCAxMDsgKytieXRlc19yZWFkKSB7Ci0gICAgLy8gVGhlIG1vc3Qg
c2lnbmlmaWNhbnQgYml0IG9mIGVhY2ggYnl0ZSBpcyAwIGlmIGl0IGlzIHRoZSBsYXN0IGJ5dGUg
aW4KLSAgICAvLyB0aGUgdmFyaW50IGFuZCAxIG90aGVyd2lzZS4gVGh1cywgd2UgdGFrZSB0aGUg
NyBsZWFzdCBzaWduaWZpY2FudCBiaXRzCi0gICAgLy8gb2YgZWFjaCBieXRlIGFuZCBzaGlmdCB0
aGVtIDcgYml0cyBmb3IgZWFjaCBieXRlIHJlYWQgcHJldmlvdXNseSB0byBnZXQKLSAgICAvLyB0
aGUgKHVuc2lnbmVkKSBpbnRlZ2VyLgotICAgIGludCBieXRlID0gc3RyZWFtLmdldCgpOwotICAg
IGlmIChzdHJlYW0uZW9mKCkpIHsKLSAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih2YXJpbnQs
IGZhbHNlKTsKLSAgICB9Ci0gICAgUlRDX0RDSEVDS19HRShieXRlLCAwKTsKLSAgICBSVENfRENI
RUNLX0xFKGJ5dGUsIDI1NSk7Ci0gICAgdmFyaW50IHw9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihi
eXRlICYgMHg3RikgPDwgKDcgKiBieXRlc19yZWFkKTsKLSAgICBpZiAoKGJ5dGUgJiAweDgwKSA9
PSAwKSB7Ci0gICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodmFyaW50LCB0cnVlKTsKLSAgICB9
Ci0gIH0KLSAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHZhcmludCwgZmFsc2UpOwotfQotCi12b2lk
IEdldEhlYWRlckV4dGVuc2lvbnMoc3RkOjp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiogaGVhZGVyX2V4
dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVwZWF0ZWRQdHJGaWVs
ZDxydGNsb2c6OlJ0cEhlYWRlckV4dGVuc2lvbj4mCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb3RvX2hlYWRlcl9leHRlbnNpb25zKSB7Ci0gIGhlYWRlcl9leHRlbnNpb25zLT5jbGVh
cigpOwotICBmb3IgKGF1dG8mIHAgOiBwcm90b19oZWFkZXJfZXh0ZW5zaW9ucykgewotICAgIFJU
Q19DSEVDSyhwLmhhc19uYW1lKCkpOwotICAgIFJUQ19DSEVDSyhwLmhhc19pZCgpKTsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyYgbmFtZSA9IHAubmFtZSgpOwotICAgIGludCBpZCA9IHAuaWQoKTsK
LSAgICBoZWFkZXJfZXh0ZW5zaW9ucy0+cHVzaF9iYWNrKFJ0cEV4dGVuc2lvbihuYW1lLCBpZCkp
OwotICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1QYXJzZWRSdGNFdmVudExvZzo6UGFyc2Vk
UnRjRXZlbnRMb2coKSA9IGRlZmF1bHQ7Ci1QYXJzZWRSdGNFdmVudExvZzo6flBhcnNlZFJ0Y0V2
ZW50TG9nKCkgPSBkZWZhdWx0OwotCi1QYXJzZWRSdGNFdmVudExvZzo6QndlUHJvYmVSZXN1bHRF
dmVudDo6QndlUHJvYmVSZXN1bHRFdmVudCgpID0gZGVmYXVsdDsKLVBhcnNlZFJ0Y0V2ZW50TG9n
OjpCd2VQcm9iZVJlc3VsdEV2ZW50OjpCd2VQcm9iZVJlc3VsdEV2ZW50KAotICAgIGNvbnN0IEJ3
ZVByb2JlUmVzdWx0RXZlbnQmKSA9IGRlZmF1bHQ7Ci0KLWJvb2wgUGFyc2VkUnRjRXZlbnRMb2c6
OlBhcnNlRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpIHsKLSAgc3RkOjppZnN0cmVh
bSBmaWxlKGZpbGVuYW1lLCBzdGQ6Omlvc19iYXNlOjppbiB8IHN0ZDo6aW9zX2Jhc2U6OmJpbmFy
eSk7Ci0gIGlmICghZmlsZS5nb29kKCkgfHwgIWZpbGUuaXNfb3BlbigpKSB7Ci0gICAgUlRDX0xP
RyhMU19XQVJOSU5HKSA8PCAiQ291bGQgbm90IG9wZW4gZmlsZSBmb3IgcmVhZGluZy4iOwotICAg
IHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHJldHVybiBQYXJzZVN0cmVhbShmaWxlKTsKLX0KLQot
Ym9vbCBQYXJzZWRSdGNFdmVudExvZzo6UGFyc2VTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHMp
IHsKLSAgc3RkOjppc3RyaW5nc3RyZWFtIHN0cmVhbShzLCBzdGQ6Omlvc19iYXNlOjppbiB8IHN0
ZDo6aW9zX2Jhc2U6OmJpbmFyeSk7Ci0gIHJldHVybiBQYXJzZVN0cmVhbShzdHJlYW0pOwotfQot
Ci1ib29sIFBhcnNlZFJ0Y0V2ZW50TG9nOjpQYXJzZVN0cmVhbShzdGQ6OmlzdHJlYW0mIHN0cmVh
bSkgewotICBldmVudHNfLmNsZWFyKCk7Ci0gIGNvbnN0IHNpemVfdCBrTWF4RXZlbnRTaXplID0g
KDF1IDw8IDE2KSAtIDE7Ci0gIHN0ZDo6dmVjdG9yPGNoYXI+IHRtcF9idWZmZXIoa01heEV2ZW50
U2l6ZSk7Ci0gIHVpbnQ2NF90IHRhZzsKLSAgdWludDY0X3QgbWVzc2FnZV9sZW5ndGg7Ci0gIGJv
b2wgc3VjY2VzczsKLQotICBSVENfRENIRUNLKHN0cmVhbS5nb29kKCkpOwotCi0gIHdoaWxlICgx
KSB7Ci0gICAgLy8gQ2hlY2sgd2hldGhlciB3ZSBoYXZlIHJlYWNoZWQgZW5kIG9mIGZpbGUuCi0g
ICAgc3RyZWFtLnBlZWsoKTsKLSAgICBpZiAoc3RyZWFtLmVvZigpKSB7Ci0gICAgICAvLyBQcm9j
ZXNzIGFsbCBleHRlbnNpb25zIG1hcHMgZm9yIGZhc3RlciBsb29rLXVwIGxhdGVyLgotICAgICAg
Zm9yIChhdXRvJiBldmVudF9zdHJlYW0gOiBzdHJlYW1zXykgewotICAgICAgICBydHBfZXh0ZW5z
aW9uc19tYXBzX1tTdHJlYW1JZChldmVudF9zdHJlYW0uc3NyYywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXZlbnRfc3RyZWFtLmRpcmVjdGlvbildID0KLSAgICAgICAg
ICAgICZldmVudF9zdHJlYW0ucnRwX2V4dGVuc2lvbnNfbWFwOwotICAgICAgfQotICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy8gUmVhZCB0aGUgbmV4dCBtZXNzYWdlIHRhZy4gVGhl
IHRhZyBudW1iZXIgaXMgZGVmaW5lZCBhcwotICAgIC8vIChmaWVsZG51bWJlciA8PCAzKSB8IHdp
cmVfdHlwZS4gSW4gb3VyIGNhc2UsIHRoZSBmaWVsZCBudW1iZXIgaXMKLSAgICAvLyBzdXBwb3Nl
ZCB0byBiZSAxIGFuZCB0aGUgd2lyZSB0eXBlIGZvciBhbgotICAgIC8vIGxlbmd0aC1kZWxpbWl0
ZWQgZmllbGQgaXMgMi4KLSAgICBjb25zdCB1aW50NjRfdCBrRXhwZWN0ZWRUYWcgPSAoMSA8PCAz
KSB8IDI7Ci0gICAgc3RkOjp0aWUodGFnLCBzdWNjZXNzKSA9IFBhcnNlVmFySW50KHN0cmVhbSk7
Ci0gICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAg
ICAgPDwgIk1pc3NpbmcgZmllbGQgdGFnIGZyb20gYmVnaW5uaW5nIG9mIHByb3RvYnVmIGV2ZW50
LiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmICh0YWcgIT0ga0V4cGVjdGVk
VGFnKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAgICAgPDwgIlVuZXhwZWN0
ZWQgZmllbGQgdGFnIGF0IGJlZ2lubmluZyBvZiBwcm90b2J1ZiBldmVudC4iOwotICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIFJlYWQgdGhlIGxlbmd0aCBmaWVsZC4KLSAgICBz
dGQ6OnRpZShtZXNzYWdlX2xlbmd0aCwgc3VjY2VzcykgPSBQYXJzZVZhckludChzdHJlYW0pOwot
ICAgIGlmICghc3VjY2VzcykgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiTWlzc2lu
ZyBtZXNzYWdlIGxlbmd0aCBhZnRlciBwcm90b2J1ZiBmaWVsZCB0YWcuIjsKLSAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKG1lc3NhZ2VfbGVuZ3RoID4ga01heEV2ZW50U2l6ZSkg
ewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUHJvdG9idWYgbWVzc2FnZSBsZW5ndGgg
aXMgdG9vIGxhcmdlLiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gUmVh
ZCB0aGUgbmV4dCBwcm90b2J1ZiBldmVudCB0byBhIHRlbXBvcmFyeSBjaGFyIGJ1ZmZlci4KLSAg
ICBzdHJlYW0ucmVhZCh0bXBfYnVmZmVyLmRhdGEoKSwgbWVzc2FnZV9sZW5ndGgpOwotICAgIGlm
IChzdHJlYW0uZ2NvdW50KCkgIT0gc3RhdGljX2Nhc3Q8aW50PihtZXNzYWdlX2xlbmd0aCkpIHsK
LSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byByZWFkIHByb3RvYnVmIG1l
c3NhZ2UgZnJvbSBmaWxlLiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8g
UGFyc2UgdGhlIHByb3RvYnVmIGV2ZW50IGZyb20gdGhlIGJ1ZmZlci4KLSAgICBydGNsb2c6OkV2
ZW50IGV2ZW50OwotICAgIGlmICghZXZlbnQuUGFyc2VGcm9tQXJyYXkodG1wX2J1ZmZlci5kYXRh
KCksIG1lc3NhZ2VfbGVuZ3RoKSkgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFp
bGVkIHRvIHBhcnNlIHByb3RvYnVmIG1lc3NhZ2UuIjsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICBFdmVudFR5cGUgdHlwZSA9IEdldFJ1bnRpbWVFdmVudFR5cGUoZXZlbnQudHlw
ZSgpKTsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgIGNhc2UgVklERU9fUkVDRUlWRVJfQ09O
RklHX0VWRU5UOiB7Ci0gICAgICAgIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZyA9IEdldFZp
ZGVvUmVjZWl2ZUNvbmZpZyhldmVudCk7Ci0gICAgICAgIHN0cmVhbXNfLmVtcGxhY2VfYmFjayhj
b25maWcucmVtb3RlX3NzcmMsIE1lZGlhVHlwZTo6VklERU8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrSW5jb21pbmdQYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKSk7Ci0gICAgICAg
IHN0cmVhbXNfLmVtcGxhY2VfYmFjayhjb25maWcubG9jYWxfc3NyYywgTWVkaWFUeXBlOjpWSURF
TywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtPdXRnb2luZ1BhY2tldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRw
X2V4dGVuc2lvbnMpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjYXNlIFZJREVP
X1NFTkRFUl9DT05GSUdfRVZFTlQ6IHsKLSAgICAgICAgc3RkOjp2ZWN0b3I8cnRjbG9nOjpTdHJl
YW1Db25maWc+IGNvbmZpZ3MgPSBHZXRWaWRlb1NlbmRDb25maWcoZXZlbnQpOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbmZpZ3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICBz
dHJlYW1zXy5lbXBsYWNlX2JhY2soCi0gICAgICAgICAgICAgIGNvbmZpZ3NbaV0ubG9jYWxfc3Ny
YywgTWVkaWFUeXBlOjpWSURFTywga091dGdvaW5nUGFja2V0LAotICAgICAgICAgICAgICBSdHBI
ZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnc1tpXS5ydHBfZXh0ZW5zaW9ucykpOwotCi0gICAgICAg
ICAgc3RyZWFtc18uZW1wbGFjZV9iYWNrKAotICAgICAgICAgICAgICBjb25maWdzW2ldLnJ0eF9z
c3JjLCBNZWRpYVR5cGU6OlZJREVPLCBrT3V0Z29pbmdQYWNrZXQsCi0gICAgICAgICAgICAgIFJ0
cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWdzW2ldLnJ0cF9leHRlbnNpb25zKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjYXNlIEFVRElPX1JFQ0VJVkVSX0NP
TkZJR19FVkVOVDogewotICAgICAgICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcgPSBHZXRB
dWRpb1JlY2VpdmVDb25maWcoZXZlbnQpOwotICAgICAgICBzdHJlYW1zXy5lbXBsYWNlX2JhY2so
Y29uZmlnLnJlbW90ZV9zc3JjLCBNZWRpYVR5cGU6OkFVRElPLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga0luY29taW5nUGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucykpOwotICAgICAg
ICBzdHJlYW1zXy5lbXBsYWNlX2JhY2soY29uZmlnLmxvY2FsX3NzcmMsIE1lZGlhVHlwZTo6QVVE
SU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrT3V0Z29pbmdQYWNrZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0
cF9leHRlbnNpb25zKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgY2FzZSBBVURJ
T19TRU5ERVJfQ09ORklHX0VWRU5UOiB7Ci0gICAgICAgIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNv
bmZpZyA9IEdldEF1ZGlvU2VuZENvbmZpZyhldmVudCk7Ci0gICAgICAgIHN0cmVhbXNfLmVtcGxh
Y2VfYmFjayhjb25maWcubG9jYWxfc3NyYywgTWVkaWFUeXBlOjpBVURJTywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtPdXRnb2luZ1BhY2tldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4dGVuc2lvbnMpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsK
LSAgICB9Ci0KLSAgICBldmVudHNfLnB1c2hfYmFjayhldmVudCk7Ci0gIH0KLX0KLQotc2l6ZV90
IFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXROdW1iZXJPZkV2ZW50cygpIGNvbnN0IHsKLSAgcmV0dXJu
IGV2ZW50c18uc2l6ZSgpOwotfQotCi1pbnQ2NF90IFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRUaW1l
c3RhbXAoc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVt
YmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tp
bmRleF07Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfdGltZXN0YW1wX3VzKCkpOwotICByZXR1cm4g
ZXZlbnQudGltZXN0YW1wX3VzKCk7Ci19Ci0KLVBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGUg
UGFyc2VkUnRjRXZlbnRMb2c6OkdldEV2ZW50VHlwZSgKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0
IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3Qg
cnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50
Lmhhc190eXBlKCkpOwotICByZXR1cm4gR2V0UnVudGltZUV2ZW50VHlwZShldmVudC50eXBlKCkp
OwotfQotCi0vLyBUaGUgaGVhZGVyIG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFD
S0VUX1NJWkUgYnl0ZXMuCi13ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCogUGFyc2VkUnRj
RXZlbnRMb2c6OkdldFJ0cEhlYWRlcigKLSAgICBzaXplX3QgaW5kZXgsCi0gICAgUGFja2V0RGly
ZWN0aW9uKiBpbmNvbWluZywKLSAgICB1aW50OF90KiBoZWFkZXIsCi0gICAgc2l6ZV90KiBoZWFk
ZXJfbGVuZ3RoLAotICAgIHNpemVfdCogdG90YWxfbGVuZ3RoLAotICAgIGludCogcHJvYmVfY2x1
c3Rlcl9pZCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRz
KCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICBS
VENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShldmVudC50eXBlKCks
IHJ0Y2xvZzo6RXZlbnQ6OlJUUF9FVkVOVCk7Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfcnRwX3Bh
Y2tldCgpKTsKLSAgY29uc3QgcnRjbG9nOjpSdHBQYWNrZXQmIHJ0cF9wYWNrZXQgPSBldmVudC5y
dHBfcGFja2V0KCk7Ci0gIC8vIEdldCBkaXJlY3Rpb24gb2YgcGFja2V0LgotICBSVENfQ0hFQ0so
cnRwX3BhY2tldC5oYXNfaW5jb21pbmcoKSk7Ci0gIGlmIChpbmNvbWluZyAhPSBudWxscHRyKSB7
Ci0gICAgKmluY29taW5nID0gcnRwX3BhY2tldC5pbmNvbWluZygpID8ga0luY29taW5nUGFja2V0
IDoga091dGdvaW5nUGFja2V0OwotICB9Ci0gIC8vIEdldCBwYWNrZXQgbGVuZ3RoLgotICBSVENf
Q0hFQ0socnRwX3BhY2tldC5oYXNfcGFja2V0X2xlbmd0aCgpKTsKLSAgaWYgKHRvdGFsX2xlbmd0
aCAhPSBudWxscHRyKSB7Ci0gICAgKnRvdGFsX2xlbmd0aCA9IHJ0cF9wYWNrZXQucGFja2V0X2xl
bmd0aCgpOwotICB9Ci0gIC8vIEdldCBoZWFkZXIgbGVuZ3RoLgotICBSVENfQ0hFQ0socnRwX3Bh
Y2tldC5oYXNfaGVhZGVyKCkpOwotICBpZiAoaGVhZGVyX2xlbmd0aCAhPSBudWxscHRyKSB7Ci0g
ICAgKmhlYWRlcl9sZW5ndGggPSBydHBfcGFja2V0LmhlYWRlcigpLnNpemUoKTsKLSAgfQotICAv
LyBHZXQgaGVhZGVyIGNvbnRlbnRzLgotICBpZiAoaGVhZGVyICE9IG51bGxwdHIpIHsKLSAgICBj
b25zdCBzaXplX3Qga01pblJ0cEhlYWRlclNpemUgPSAxMjsKLSAgICBSVENfQ0hFQ0tfR0UocnRw
X3BhY2tldC5oZWFkZXIoKS5zaXplKCksIGtNaW5SdHBIZWFkZXJTaXplKTsKLSAgICBSVENfQ0hF
Q0tfTEUocnRwX3BhY2tldC5oZWFkZXIoKS5zaXplKCksCi0gICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHNpemVfdD4oSVBfUEFDS0VUX1NJWkUpKTsKLSAgICBtZW1jcHkoaGVhZGVyLCBydHBf
cGFja2V0LmhlYWRlcigpLmRhdGEoKSwgcnRwX3BhY2tldC5oZWFkZXIoKS5zaXplKCkpOwotICAg
IHVpbnQzMl90IHNzcmMgPSBCeXRlUmVhZGVyPHVpbnQzMl90Pjo6UmVhZEJpZ0VuZGlhbihoZWFk
ZXIgKyA4KTsKLSAgICBTdHJlYW1JZCBzdHJlYW1faWQoCi0gICAgICAgIHNzcmMsIHJ0cF9wYWNr
ZXQuaW5jb21pbmcoKSA/IGtJbmNvbWluZ1BhY2tldCA6IGtPdXRnb2luZ1BhY2tldCk7Ci0gICAg
YXV0byBpdCA9IHJ0cF9leHRlbnNpb25zX21hcHNfLmZpbmQoc3RyZWFtX2lkKTsKLSAgICBpZiAo
aXQgIT0gcnRwX2V4dGVuc2lvbnNfbWFwc18uZW5kKCkpIHsKLSAgICAgIHJldHVybiBpdC0+c2Vj
b25kOwotICAgIH0KLSAgfQotICBpZiAocHJvYmVfY2x1c3Rlcl9pZCAhPSBudWxscHRyKSB7Ci0g
ICAgaWYgKHJ0cF9wYWNrZXQuaGFzX3Byb2JlX2NsdXN0ZXJfaWQoKSkgewotICAgICAgKnByb2Jl
X2NsdXN0ZXJfaWQgPSBydHBfcGFja2V0LnByb2JlX2NsdXN0ZXJfaWQoKTsKLSAgICAgIFJUQ19D
SEVDS19ORSgqcHJvYmVfY2x1c3Rlcl9pZCwgUGFjZWRQYWNrZXRJbmZvOjprTm90QVByb2JlKTsK
LSAgICB9IGVsc2UgewotICAgICAgKnByb2JlX2NsdXN0ZXJfaWQgPSBQYWNlZFBhY2tldEluZm86
OmtOb3RBUHJvYmU7Ci0gICAgfQotICB9Ci0gIHJldHVybiBudWxscHRyOwotfQotCi0vLyBUaGUg
cGFja2V0IG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VUX1NJWkUgYnl0ZXMu
Ci12b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRSdGNwUGFja2V0KHNpemVfdCBpbmRleCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0RGlyZWN0aW9uKiBpbmNv
bWluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogcGFj
a2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGxlbmd0
aCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwot
ICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICBSVENfQ0hF
Q0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShldmVudC50eXBlKCksIHJ0Y2xv
Zzo6RXZlbnQ6OlJUQ1BfRVZFTlQpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3J0Y3BfcGFja2V0
KCkpOwotICBjb25zdCBydGNsb2c6OlJ0Y3BQYWNrZXQmIHJ0Y3BfcGFja2V0ID0gZXZlbnQucnRj
cF9wYWNrZXQoKTsKLSAgLy8gR2V0IGRpcmVjdGlvbiBvZiBwYWNrZXQuCi0gIFJUQ19DSEVDSyhy
dGNwX3BhY2tldC5oYXNfaW5jb21pbmcoKSk7Ci0gIGlmIChpbmNvbWluZyAhPSBudWxscHRyKSB7
Ci0gICAgKmluY29taW5nID0gcnRjcF9wYWNrZXQuaW5jb21pbmcoKSA/IGtJbmNvbWluZ1BhY2tl
dCA6IGtPdXRnb2luZ1BhY2tldDsKLSAgfQotICAvLyBHZXQgcGFja2V0IGxlbmd0aC4KLSAgUlRD
X0NIRUNLKHJ0Y3BfcGFja2V0Lmhhc19wYWNrZXRfZGF0YSgpKTsKLSAgaWYgKGxlbmd0aCAhPSBu
dWxscHRyKSB7Ci0gICAgKmxlbmd0aCA9IHJ0Y3BfcGFja2V0LnBhY2tldF9kYXRhKCkuc2l6ZSgp
OwotICB9Ci0gIC8vIEdldCBwYWNrZXQgY29udGVudHMuCi0gIGlmIChwYWNrZXQgIT0gbnVsbHB0
cikgewotICAgIFJUQ19DSEVDS19MRShydGNwX3BhY2tldC5wYWNrZXRfZGF0YSgpLnNpemUoKSwK
LSAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElQX1BBQ0tFVF9TSVpFKSk7
Ci0gICAgbWVtY3B5KHBhY2tldCwgcnRjcF9wYWNrZXQucGFja2V0X2RhdGEoKS5kYXRhKCksCi0g
ICAgICAgICAgIHJ0Y3BfcGFja2V0LnBhY2tldF9kYXRhKCkuc2l6ZSgpKTsKLSAgfQotfQotCi1y
dGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZzo6R2V0VmlkZW9SZWNlaXZlQ29u
ZmlnKAotICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdl
dE51bWJlck9mRXZlbnRzKCkpOwotICByZXR1cm4gR2V0VmlkZW9SZWNlaXZlQ29uZmlnKGV2ZW50
c19baW5kZXhdKTsKLX0KLQotcnRjbG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRMb2c6
OkdldFZpZGVvUmVjZWl2ZUNvbmZpZygKLSAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkg
Y29uc3QgewotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7Ci0gIFJUQ19DSEVDSyhldmVu
dC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VRKGV2ZW50LnR5cGUoKSwgcnRjbG9nOjpFdmVu
dDo6VklERU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc192
aWRlb19yZWNlaXZlcl9jb25maWcoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6VmlkZW9SZWNlaXZlQ29u
ZmlnJiByZWNlaXZlcl9jb25maWcgPQotICAgICAgZXZlbnQudmlkZW9fcmVjZWl2ZXJfY29uZmln
KCk7Ci0gIC8vIEdldCBTU1JDcy4KLSAgUlRDX0NIRUNLKHJlY2VpdmVyX2NvbmZpZy5oYXNfcmVt
b3RlX3NzcmMoKSk7Ci0gIGNvbmZpZy5yZW1vdGVfc3NyYyA9IHJlY2VpdmVyX2NvbmZpZy5yZW1v
dGVfc3NyYygpOwotICBSVENfQ0hFQ0socmVjZWl2ZXJfY29uZmlnLmhhc19sb2NhbF9zc3JjKCkp
OwotICBjb25maWcubG9jYWxfc3NyYyA9IHJlY2VpdmVyX2NvbmZpZy5sb2NhbF9zc3JjKCk7Ci0g
IGNvbmZpZy5ydHhfc3NyYyA9IDA7Ci0gIC8vIEdldCBSVENQIHNldHRpbmdzLgotICBSVENfQ0hF
Q0socmVjZWl2ZXJfY29uZmlnLmhhc19ydGNwX21vZGUoKSk7Ci0gIGNvbmZpZy5ydGNwX21vZGUg
PSBHZXRSdW50aW1lUnRjcE1vZGUocmVjZWl2ZXJfY29uZmlnLnJ0Y3BfbW9kZSgpKTsKLSAgUlRD
X0NIRUNLKHJlY2VpdmVyX2NvbmZpZy5oYXNfcmVtYigpKTsKLSAgY29uZmlnLnJlbWIgPSByZWNl
aXZlcl9jb25maWcucmVtYigpOwotCi0gIC8vIEdldCBSVFggbWFwLgotICBzdGQ6Om1hcDx1aW50
MzJfdCwgY29uc3QgcnRjbG9nOjpSdHhDb25maWc+IHJ0eF9tYXA7Ci0gIGZvciAoaW50IGkgPSAw
OyBpIDwgcmVjZWl2ZXJfY29uZmlnLnJ0eF9tYXBfc2l6ZSgpOyBpKyspIHsKLSAgICBjb25zdCBy
dGNsb2c6OlJ0eE1hcCYgbWFwID0gcmVjZWl2ZXJfY29uZmlnLnJ0eF9tYXAoaSk7Ci0gICAgUlRD
X0NIRUNLKG1hcC5oYXNfcGF5bG9hZF90eXBlKCkpOwotICAgIFJUQ19DSEVDSyhtYXAuaGFzX2Nv
bmZpZygpKTsKLSAgICBSVENfQ0hFQ0sobWFwLmNvbmZpZygpLmhhc19ydHhfc3NyYygpKTsKLSAg
ICBSVENfQ0hFQ0sobWFwLmNvbmZpZygpLmhhc19ydHhfcGF5bG9hZF90eXBlKCkpOwotICAgIHJ0
eF9tYXAuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKG1hcC5wYXlsb2FkX3R5cGUoKSwgbWFwLmNvbmZp
ZygpKSk7Ci0gIH0KLQotICAvLyBHZXQgaGVhZGVyIGV4dGVuc2lvbnMuCi0gIEdldEhlYWRlckV4
dGVuc2lvbnMoJmNvbmZpZy5ydHBfZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICBy
ZWNlaXZlcl9jb25maWcuaGVhZGVyX2V4dGVuc2lvbnMoKSk7Ci0gIC8vIEdldCBkZWNvZGVycy4K
LSAgY29uZmlnLmNvZGVjcy5jbGVhcigpOwotICBmb3IgKGludCBpID0gMDsgaSA8IHJlY2VpdmVy
X2NvbmZpZy5kZWNvZGVyc19zaXplKCk7IGkrKykgewotICAgIFJUQ19DSEVDSyhyZWNlaXZlcl9j
b25maWcuZGVjb2RlcnMoaSkuaGFzX25hbWUoKSk7Ci0gICAgUlRDX0NIRUNLKHJlY2VpdmVyX2Nv
bmZpZy5kZWNvZGVycyhpKS5oYXNfcGF5bG9hZF90eXBlKCkpOwotICAgIGludCBydHhfcGF5bG9h
ZF90eXBlID0gMDsKLSAgICBhdXRvIHJ0eF9pdCA9IHJ0eF9tYXAuZmluZChyZWNlaXZlcl9jb25m
aWcuZGVjb2RlcnMoaSkucGF5bG9hZF90eXBlKCkpOwotICAgIGlmIChydHhfaXQgIT0gcnR4X21h
cC5lbmQoKSkgewotICAgICAgcnR4X3BheWxvYWRfdHlwZSA9IHJ0eF9pdC0+c2Vjb25kLnJ0eF9w
YXlsb2FkX3R5cGUoKTsKLSAgICAgIGlmIChjb25maWcucnR4X3NzcmMgIT0gMCAmJgotICAgICAg
ICAgIGNvbmZpZy5ydHhfc3NyYyAhPSBydHhfaXQtPnNlY29uZC5ydHhfc3NyYygpKSB7Ci0gICAg
ICAgIFJUQ19MT0coTFNfV0FSTklORykKLSAgICAgICAgICAgIDw8ICJSdGNFdmVudExvZyBwcm90
b2J1ZiBjb250YWluZWQgZGlmZmVyZW50IFNTUkNzIGZvciAiCi0gICAgICAgICAgICAgICAiZGlm
ZmVyZW50IHJlY2VpdmVkIFJUWCBwYXlsb2FkIHR5cGVzLiBXaWxsIG9ubHkgdXNlICIKLSAgICAg
ICAgICAgICAgICJydHhfc3NyYyA9ICIKLSAgICAgICAgICAgIDw8IGNvbmZpZy5ydHhfc3NyYyA8
PCAiLiI7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBjb25maWcucnR4X3NzcmMgPSBydHhfaXQt
PnNlY29uZC5ydHhfc3NyYygpOwotICAgICAgfQotICAgIH0KLSAgICBjb25maWcuY29kZWNzLmVt
cGxhY2VfYmFjayhyZWNlaXZlcl9jb25maWcuZGVjb2RlcnMoaSkubmFtZSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyX2NvbmZpZy5kZWNvZGVycyhpKS5wYXlsb2Fk
X3R5cGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHhfcGF5bG9hZF90eXBl
KTsKLSAgfQotICByZXR1cm4gY29uZmlnOwotfQotCi1zdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVh
bUNvbmZpZz4gUGFyc2VkUnRjRXZlbnRMb2c6OkdldFZpZGVvU2VuZENvbmZpZygKLSAgICBzaXpl
X3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50
cygpKTsKLSAgcmV0dXJuIEdldFZpZGVvU2VuZENvbmZpZyhldmVudHNfW2luZGV4XSk7Ci19Ci0K
LXN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBQYXJzZWRSdGNFdmVudExvZzo6R2V0
VmlkZW9TZW5kQ29uZmlnKAotICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7
Ci0gIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWdzOwotICBSVENfQ0hF
Q0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShldmVudC50eXBlKCksIHJ0Y2xv
Zzo6RXZlbnQ6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQpOwotICBSVENfQ0hFQ0soZXZlbnQu
aGFzX3ZpZGVvX3NlbmRlcl9jb25maWcoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6VmlkZW9TZW5kQ29u
ZmlnJiBzZW5kZXJfY29uZmlnID0gZXZlbnQudmlkZW9fc2VuZGVyX2NvbmZpZygpOwotICBpZiAo
c2VuZGVyX2NvbmZpZy5ydHhfc3NyY3Nfc2l6ZSgpID4gMCAmJgotICAgICAgc2VuZGVyX2NvbmZp
Zy5zc3Jjc19zaXplKCkgIT0gc2VuZGVyX2NvbmZpZy5ydHhfc3NyY3Nfc2l6ZSgpKSB7Ci0gICAg
UlRDX0xPRyhXQVJOSU5HKQotICAgICAgICA8PCAiVmlkZW9TZW5kQ29uZmlnIGlzIGNvbmZpZ3Vy
ZWQgZm9yIFJUWCBidXQgdGhlIG51bWJlciBvZiAiCi0gICAgICAgICAgICJTU1JDcyBkb2Vzbid0
IG1hdGNoIHRoZSBudW1iZXIgb2YgUlRYIFNTUkNzLiI7Ci0gIH0KLSAgY29uZmlncy5yZXNpemUo
c2VuZGVyX2NvbmZpZy5zc3Jjc19zaXplKCkpOwotICBmb3IgKGludCBpID0gMDsgaSA8IHNlbmRl
cl9jb25maWcuc3NyY3Nfc2l6ZSgpOyBpKyspIHsKLSAgICAvLyBHZXQgU1NSQ3MuCi0gICAgY29u
Zmlnc1tpXS5sb2NhbF9zc3JjID0gc2VuZGVyX2NvbmZpZy5zc3JjcyhpKTsKLSAgICBpZiAoc2Vu
ZGVyX2NvbmZpZy5ydHhfc3NyY3Nfc2l6ZSgpID4gMCAmJgotICAgICAgICBpIDwgc2VuZGVyX2Nv
bmZpZy5ydHhfc3NyY3Nfc2l6ZSgpKSB7Ci0gICAgICBSVENfQ0hFQ0soc2VuZGVyX2NvbmZpZy5o
YXNfcnR4X3BheWxvYWRfdHlwZSgpKTsKLSAgICAgIGNvbmZpZ3NbaV0ucnR4X3NzcmMgPSBzZW5k
ZXJfY29uZmlnLnJ0eF9zc3JjcyhpKTsKLSAgICB9Ci0gICAgLy8gR2V0IGhlYWRlciBleHRlbnNp
b25zLgotICAgIEdldEhlYWRlckV4dGVuc2lvbnMoJmNvbmZpZ3NbaV0ucnRwX2V4dGVuc2lvbnMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZW5kZXJfY29uZmlnLmhlYWRlcl9leHRlbnNpb25z
KCkpOwotCi0gICAgLy8gR2V0IHRoZSBjb2RlYy4KLSAgICBSVENfQ0hFQ0soc2VuZGVyX2NvbmZp
Zy5oYXNfZW5jb2RlcigpKTsKLSAgICBSVENfQ0hFQ0soc2VuZGVyX2NvbmZpZy5lbmNvZGVyKCku
aGFzX25hbWUoKSk7Ci0gICAgUlRDX0NIRUNLKHNlbmRlcl9jb25maWcuZW5jb2RlcigpLmhhc19w
YXlsb2FkX3R5cGUoKSk7Ci0gICAgY29uZmlnc1tpXS5jb2RlY3MuZW1wbGFjZV9iYWNrKAotICAg
ICAgICBzZW5kZXJfY29uZmlnLmVuY29kZXIoKS5uYW1lKCksIHNlbmRlcl9jb25maWcuZW5jb2Rl
cigpLnBheWxvYWRfdHlwZSgpLAotICAgICAgICBzZW5kZXJfY29uZmlnLmhhc19ydHhfcGF5bG9h
ZF90eXBlKCkgPyBzZW5kZXJfY29uZmlnLnJ0eF9wYXlsb2FkX3R5cGUoKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwKTsKLSAgfQotICByZXR1cm4gY29u
ZmlnczsKLX0KLQotcnRjbG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRMb2c6OkdldEF1
ZGlvUmVjZWl2ZUNvbmZpZygKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNL
X0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgcmV0dXJuIEdldEF1ZGlvUmVjZWl2
ZUNvbmZpZyhldmVudHNfW2luZGV4XSk7Ci19Ci0KLXJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNl
ZFJ0Y0V2ZW50TG9nOjpHZXRBdWRpb1JlY2VpdmVDb25maWcoCi0gICAgY29uc3QgcnRjbG9nOjpF
dmVudCYgZXZlbnQpIGNvbnN0IHsKLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOwotICBS
VENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShldmVudC50eXBlKCks
IHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCk7Ci0gIFJUQ19DSEVD
SyhldmVudC5oYXNfYXVkaW9fcmVjZWl2ZXJfY29uZmlnKCkpOwotICBjb25zdCBydGNsb2c6OkF1
ZGlvUmVjZWl2ZUNvbmZpZyYgcmVjZWl2ZXJfY29uZmlnID0KLSAgICAgIGV2ZW50LmF1ZGlvX3Jl
Y2VpdmVyX2NvbmZpZygpOwotICAvLyBHZXQgU1NSQ3MuCi0gIFJUQ19DSEVDSyhyZWNlaXZlcl9j
b25maWcuaGFzX3JlbW90ZV9zc3JjKCkpOwotICBjb25maWcucmVtb3RlX3NzcmMgPSByZWNlaXZl
cl9jb25maWcucmVtb3RlX3NzcmMoKTsKLSAgUlRDX0NIRUNLKHJlY2VpdmVyX2NvbmZpZy5oYXNf
bG9jYWxfc3NyYygpKTsKLSAgY29uZmlnLmxvY2FsX3NzcmMgPSByZWNlaXZlcl9jb25maWcubG9j
YWxfc3NyYygpOwotICAvLyBHZXQgaGVhZGVyIGV4dGVuc2lvbnMuCi0gIEdldEhlYWRlckV4dGVu
c2lvbnMoJmNvbmZpZy5ydHBfZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICByZWNl
aXZlcl9jb25maWcuaGVhZGVyX2V4dGVuc2lvbnMoKSk7Ci0gIHJldHVybiBjb25maWc7Ci19Ci0K
LXJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRBdWRpb1NlbmRDb25m
aWcoc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVy
T2ZFdmVudHMoKSk7Ci0gIHJldHVybiBHZXRBdWRpb1NlbmRDb25maWcoZXZlbnRzX1tpbmRleF0p
OwotfQotCi1ydGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZzo6R2V0QXVkaW9T
ZW5kQ29uZmlnKAotICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7Ci0gIHJ0
Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZzsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkp
OwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpBVURJT19TRU5E
RVJfQ09ORklHX0VWRU5UKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19hdWRpb19zZW5kZXJfY29u
ZmlnKCkpOwotICBjb25zdCBydGNsb2c6OkF1ZGlvU2VuZENvbmZpZyYgc2VuZGVyX2NvbmZpZyA9
IGV2ZW50LmF1ZGlvX3NlbmRlcl9jb25maWcoKTsKLSAgLy8gR2V0IFNTUkNzLgotICBSVENfQ0hF
Q0soc2VuZGVyX2NvbmZpZy5oYXNfc3NyYygpKTsKLSAgY29uZmlnLmxvY2FsX3NzcmMgPSBzZW5k
ZXJfY29uZmlnLnNzcmMoKTsKLSAgLy8gR2V0IGhlYWRlciBleHRlbnNpb25zLgotICBHZXRIZWFk
ZXJFeHRlbnNpb25zKCZjb25maWcucnRwX2V4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgc2VuZGVyX2NvbmZpZy5oZWFkZXJfZXh0ZW5zaW9ucygpKTsKLSAgcmV0dXJuIGNvbmZpZzsK
LX0KLQotdm9pZCBQYXJzZWRSdGNFdmVudExvZzo6R2V0QXVkaW9QbGF5b3V0KHNpemVfdCBpbmRl
eCwgdWludDMyX3QqIHNzcmMpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1i
ZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2lu
ZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZl
bnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpBVURJT19QTEFZT1VUX0VWRU5UKTsKLSAgUlRDX0NI
RUNLKGV2ZW50Lmhhc19hdWRpb19wbGF5b3V0X2V2ZW50KCkpOwotICBjb25zdCBydGNsb2c6OkF1
ZGlvUGxheW91dEV2ZW50JiBsb3NzX2V2ZW50ID0gZXZlbnQuYXVkaW9fcGxheW91dF9ldmVudCgp
OwotICBSVENfQ0hFQ0sobG9zc19ldmVudC5oYXNfbG9jYWxfc3NyYygpKTsKLSAgaWYgKHNzcmMg
IT0gbnVsbHB0cikgewotICAgICpzc3JjID0gbG9zc19ldmVudC5sb2NhbF9zc3JjKCk7Ci0gIH0K
LX0KLQotdm9pZCBQYXJzZWRSdGNFdmVudExvZzo6R2V0TG9zc0Jhc2VkQndlVXBkYXRlKHNpemVf
dCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQzMl90KiBiaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90KiBmcmFjdGlvbl9sb3NzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QqIHRvdGFsX3BhY2tldHMpIGNvbnN0IHsK
LSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRj
bG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhh
c190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpM
T1NTX0JBU0VEX0JXRV9VUERBVEUpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX2xvc3NfYmFzZWRf
YndlX3VwZGF0ZSgpKTsKLSAgY29uc3QgcnRjbG9nOjpMb3NzQmFzZWRCd2VVcGRhdGUmIGxvc3Nf
ZXZlbnQgPSBldmVudC5sb3NzX2Jhc2VkX2J3ZV91cGRhdGUoKTsKLSAgUlRDX0NIRUNLKGxvc3Nf
ZXZlbnQuaGFzX2JpdHJhdGVfYnBzKCkpOwotICBpZiAoYml0cmF0ZV9icHMgIT0gbnVsbHB0cikg
ewotICAgICpiaXRyYXRlX2JwcyA9IGxvc3NfZXZlbnQuYml0cmF0ZV9icHMoKTsKLSAgfQotICBS
VENfQ0hFQ0sobG9zc19ldmVudC5oYXNfZnJhY3Rpb25fbG9zcygpKTsKLSAgaWYgKGZyYWN0aW9u
X2xvc3MgIT0gbnVsbHB0cikgewotICAgICpmcmFjdGlvbl9sb3NzID0gbG9zc19ldmVudC5mcmFj
dGlvbl9sb3NzKCk7Ci0gIH0KLSAgUlRDX0NIRUNLKGxvc3NfZXZlbnQuaGFzX3RvdGFsX3BhY2tl
dHMoKSk7Ci0gIGlmICh0b3RhbF9wYWNrZXRzICE9IG51bGxwdHIpIHsKLSAgICAqdG90YWxfcGFj
a2V0cyA9IGxvc3NfZXZlbnQudG90YWxfcGFja2V0cygpOwotICB9Ci19Ci0KLVBhcnNlZFJ0Y0V2
ZW50TG9nOjpCd2VEZWxheUJhc2VkVXBkYXRlCi1QYXJzZWRSdGNFdmVudExvZzo6R2V0RGVsYXlC
YXNlZEJ3ZVVwZGF0ZShzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4
LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBl
dmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hF
Q0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpERUxBWV9CQVNFRF9CV0VfVVBEQVRF
KTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19kZWxheV9iYXNlZF9id2VfdXBkYXRlKCkpOwotICBj
b25zdCBydGNsb2c6OkRlbGF5QmFzZWRCd2VVcGRhdGUmIGRlbGF5X2V2ZW50ID0KLSAgICAgIGV2
ZW50LmRlbGF5X2Jhc2VkX2J3ZV91cGRhdGUoKTsKLQotICBCd2VEZWxheUJhc2VkVXBkYXRlIHJl
czsKLSAgcmVzLnRpbWVzdGFtcCA9IEdldFRpbWVzdGFtcChpbmRleCk7Ci0gIFJUQ19DSEVDSyhk
ZWxheV9ldmVudC5oYXNfYml0cmF0ZV9icHMoKSk7Ci0gIHJlcy5iaXRyYXRlX2JwcyA9IGRlbGF5
X2V2ZW50LmJpdHJhdGVfYnBzKCk7Ci0gIFJUQ19DSEVDSyhkZWxheV9ldmVudC5oYXNfZGV0ZWN0
b3Jfc3RhdGUoKSk7Ci0gIHJlcy5kZXRlY3Rvcl9zdGF0ZSA9IEdldFJ1bnRpbWVEZXRlY3RvclN0
YXRlKGRlbGF5X2V2ZW50LmRldGVjdG9yX3N0YXRlKCkpOwotICByZXR1cm4gcmVzOwotfQotCi12
b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAotICAgIHNp
emVfdCBpbmRleCwKLSAgICBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnKiBjb25maWcpIGNvbnN0
IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3Qg
cnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50
Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50
OjpBVURJT19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFz
X2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbigpKTsKLSAgY29uc3QgcnRjbG9nOjpBdWRpb05ldHdv
cmtBZGFwdGF0aW9uJiBhbmFfZXZlbnQgPQotICAgICAgZXZlbnQuYXVkaW9fbmV0d29ya19hZGFw
dGF0aW9uKCk7Ci0gIGlmIChhbmFfZXZlbnQuaGFzX2JpdHJhdGVfYnBzKCkpCi0gICAgY29uZmln
LT5iaXRyYXRlX2JwcyA9IGFuYV9ldmVudC5iaXRyYXRlX2JwcygpOwotICBpZiAoYW5hX2V2ZW50
Lmhhc19lbmFibGVfZmVjKCkpCi0gICAgY29uZmlnLT5lbmFibGVfZmVjID0gYW5hX2V2ZW50LmVu
YWJsZV9mZWMoKTsKLSAgaWYgKGFuYV9ldmVudC5oYXNfZW5hYmxlX2R0eCgpKQotICAgIGNvbmZp
Zy0+ZW5hYmxlX2R0eCA9IGFuYV9ldmVudC5lbmFibGVfZHR4KCk7Ci0gIGlmIChhbmFfZXZlbnQu
aGFzX2ZyYW1lX2xlbmd0aF9tcygpKQotICAgIGNvbmZpZy0+ZnJhbWVfbGVuZ3RoX21zID0gYW5h
X2V2ZW50LmZyYW1lX2xlbmd0aF9tcygpOwotICBpZiAoYW5hX2V2ZW50Lmhhc19udW1fY2hhbm5l
bHMoKSkKLSAgICBjb25maWctPm51bV9jaGFubmVscyA9IGFuYV9ldmVudC5udW1fY2hhbm5lbHMo
KTsKLSAgaWYgKGFuYV9ldmVudC5oYXNfdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKCkpCi0g
ICAgY29uZmlnLT51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24gPQotICAgICAgICBhbmFfZXZl
bnQudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKCk7Ci19Ci0KLVBhcnNlZFJ0Y0V2ZW50TG9n
OjpCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQKLVBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRCd2VQ
cm9iZUNsdXN0ZXJDcmVhdGVkKHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQo
aW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVu
dCA9IGV2ZW50c19baW5kZXhdOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJU
Q19DSEVDS19FUShldmVudC50eXBlKCksIHJ0Y2xvZzo6RXZlbnQ6OkJXRV9QUk9CRV9DTFVTVEVS
X0NSRUFURURfRVZFTlQpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3Byb2JlX2NsdXN0ZXIoKSk7
Ci0gIGNvbnN0IHJ0Y2xvZzo6QndlUHJvYmVDbHVzdGVyJiBwY2NfZXZlbnQgPSBldmVudC5wcm9i
ZV9jbHVzdGVyKCk7Ci0gIEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCByZXM7Ci0gIHJlcy50
aW1lc3RhbXAgPSBHZXRUaW1lc3RhbXAoaW5kZXgpOwotICBSVENfQ0hFQ0socGNjX2V2ZW50Lmhh
c19pZCgpKTsKLSAgcmVzLmlkID0gcGNjX2V2ZW50LmlkKCk7Ci0gIFJUQ19DSEVDSyhwY2NfZXZl
bnQuaGFzX2JpdHJhdGVfYnBzKCkpOwotICByZXMuYml0cmF0ZV9icHMgPSBwY2NfZXZlbnQuYml0
cmF0ZV9icHMoKTsKLSAgUlRDX0NIRUNLKHBjY19ldmVudC5oYXNfbWluX3BhY2tldHMoKSk7Ci0g
IHJlcy5taW5fcGFja2V0cyA9IHBjY19ldmVudC5taW5fcGFja2V0cygpOwotICBSVENfQ0hFQ0so
cGNjX2V2ZW50Lmhhc19taW5fYnl0ZXMoKSk7Ci0gIHJlcy5taW5fYnl0ZXMgPSBwY2NfZXZlbnQu
bWluX2J5dGVzKCk7Ci0gIHJldHVybiByZXM7Ci19Ci0KLVBhcnNlZFJ0Y0V2ZW50TG9nOjpCd2VQ
cm9iZVJlc3VsdEV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRCd2VQcm9iZVJlc3VsdCgKLSAg
ICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJP
ZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4
XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQu
dHlwZSgpLCBydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfUkVTVUxUX0VWRU5UKTsKLSAgUlRDX0NI
RUNLKGV2ZW50Lmhhc19wcm9iZV9yZXN1bHQoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6QndlUHJvYmVS
ZXN1bHQmIHByX2V2ZW50ID0gZXZlbnQucHJvYmVfcmVzdWx0KCk7Ci0gIEJ3ZVByb2JlUmVzdWx0
RXZlbnQgcmVzOwotICByZXMudGltZXN0YW1wID0gR2V0VGltZXN0YW1wKGluZGV4KTsKLSAgUlRD
X0NIRUNLKHByX2V2ZW50Lmhhc19pZCgpKTsKLSAgcmVzLmlkID0gcHJfZXZlbnQuaWQoKTsKLQot
ICBSVENfQ0hFQ0socHJfZXZlbnQuaGFzX3Jlc3VsdCgpKTsKLSAgaWYgKHByX2V2ZW50LnJlc3Vs
dCgpID09IHJ0Y2xvZzo6QndlUHJvYmVSZXN1bHQ6OlNVQ0NFU1MpIHsKLSAgICBSVENfQ0hFQ0so
cHJfZXZlbnQuaGFzX2JpdHJhdGVfYnBzKCkpOwotICAgIHJlcy5iaXRyYXRlX2JwcyA9IHByX2V2
ZW50LmJpdHJhdGVfYnBzKCk7Ci0gIH0gZWxzZSBpZiAocHJfZXZlbnQucmVzdWx0KCkgPT0KLSAg
ICAgICAgICAgICBydGNsb2c6OkJ3ZVByb2JlUmVzdWx0OjpJTlZBTElEX1NFTkRfUkVDRUlWRV9J
TlRFUlZBTCkgewotICAgIHJlcy5mYWlsdXJlX3JlYXNvbiA9IFByb2JlRmFpbHVyZVJlYXNvbjo6
a0ludmFsaWRTZW5kUmVjZWl2ZUludGVydmFsOwotICB9IGVsc2UgaWYgKHByX2V2ZW50LnJlc3Vs
dCgpID09Ci0gICAgICAgICAgICAgcnRjbG9nOjpCd2VQcm9iZVJlc3VsdDo6SU5WQUxJRF9TRU5E
X1JFQ0VJVkVfUkFUSU8pIHsKLSAgICByZXMuZmFpbHVyZV9yZWFzb24gPSBQcm9iZUZhaWx1cmVS
ZWFzb246OmtJbnZhbGlkU2VuZFJlY2VpdmVSYXRpbzsKLSAgfSBlbHNlIGlmIChwcl9ldmVudC5y
ZXN1bHQoKSA9PSBydGNsb2c6OkJ3ZVByb2JlUmVzdWx0OjpUSU1FT1VUKSB7Ci0gICAgcmVzLmZh
aWx1cmVfcmVhc29uID0gUHJvYmVGYWlsdXJlUmVhc29uOjprVGltZW91dDsKLSAgfSBlbHNlIHsK
LSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICB9Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotUGFyc2Vk
UnRjRXZlbnRMb2c6OkFsclN0YXRlRXZlbnQgUGFyc2VkUnRjRXZlbnRMb2c6OkdldEFsclN0YXRl
KAotICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51
bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19b
aW5kZXhdOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShl
dmVudC50eXBlKCksIHJ0Y2xvZzo6RXZlbnQ6OkFMUl9TVEFURV9FVkVOVCk7Ci0gIFJUQ19DSEVD
SyhldmVudC5oYXNfYWxyX3N0YXRlKCkpOwotICBjb25zdCBydGNsb2c6OkFsclN0YXRlJiBhbHJf
ZXZlbnQgPSBldmVudC5hbHJfc3RhdGUoKTsKLSAgQWxyU3RhdGVFdmVudCByZXM7Ci0gIHJlcy50
aW1lc3RhbXAgPSBHZXRUaW1lc3RhbXAoaW5kZXgpOwotICBSVENfQ0hFQ0soYWxyX2V2ZW50Lmhh
c19pbl9hbHIoKSk7Ci0gIHJlcy5pbl9hbHIgPSBhbHJfZXZlbnQuaW5fYWxyKCk7Ci0KLSAgcmV0
dXJuIHJlczsKLX0KLQotUGFyc2VkUnRjRXZlbnRMb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWcK
LVBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKHNpemVfdCBpbmRl
eCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwot
ICBjb25zdCBydGNsb2c6OkV2ZW50JiBydGNfZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRD
X0NIRUNLKHJ0Y19ldmVudC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VRKHJ0Y19ldmVudC50
eXBlKCksIHJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJUl9DT05GSUcpOwotICBJY2VD
YW5kaWRhdGVQYWlyQ29uZmlnIHJlczsKLSAgY29uc3QgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWly
Q29uZmlnJiBjb25maWcgPQotICAgICAgcnRjX2V2ZW50LmljZV9jYW5kaWRhdGVfcGFpcl9jb25m
aWcoKTsKLSAgcmVzLnRpbWVzdGFtcCA9IEdldFRpbWVzdGFtcChpbmRleCk7Ci0gIFJUQ19DSEVD
Syhjb25maWcuaGFzX2NvbmZpZ190eXBlKCkpOwotICByZXMudHlwZSA9IEdldFJ1bnRpbWVJY2VD
YW5kaWRhdGVQYWlyQ29uZmlnVHlwZShjb25maWcuY29uZmlnX3R5cGUoKSk7Ci0gIFJUQ19DSEVD
Syhjb25maWcuaGFzX2NhbmRpZGF0ZV9wYWlyX2lkKCkpOwotICByZXMuY2FuZGlkYXRlX3BhaXJf
aWQgPSBjb25maWcuY2FuZGlkYXRlX3BhaXJfaWQoKTsKLSAgUlRDX0NIRUNLKGNvbmZpZy5oYXNf
bG9jYWxfY2FuZGlkYXRlX3R5cGUoKSk7Ci0gIHJlcy5sb2NhbF9jYW5kaWRhdGVfdHlwZSA9Ci0g
ICAgICBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlVHlwZShjb25maWcubG9jYWxfY2FuZGlkYXRlX3R5
cGUoKSk7Ci0gIFJUQ19DSEVDSyhjb25maWcuaGFzX2xvY2FsX3JlbGF5X3Byb3RvY29sKCkpOwot
ICByZXMubG9jYWxfcmVsYXlfcHJvdG9jb2wgPQotICAgICAgR2V0UnVudGltZUljZUNhbmRpZGF0
ZVBhaXJQcm90b2NvbChjb25maWcubG9jYWxfcmVsYXlfcHJvdG9jb2woKSk7Ci0gIFJUQ19DSEVD
Syhjb25maWcuaGFzX2xvY2FsX25ldHdvcmtfdHlwZSgpKTsKLSAgcmVzLmxvY2FsX25ldHdvcmtf
dHlwZSA9Ci0gICAgICBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGUoY29uZmlnLmxv
Y2FsX25ldHdvcmtfdHlwZSgpKTsKLSAgUlRDX0NIRUNLKGNvbmZpZy5oYXNfbG9jYWxfYWRkcmVz
c19mYW1pbHkoKSk7Ci0gIHJlcy5sb2NhbF9hZGRyZXNzX2ZhbWlseSA9Ci0gICAgICBHZXRSdW50
aW1lSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHkoY29uZmlnLmxvY2FsX2FkZHJlc3NfZmFt
aWx5KCkpOwotICBSVENfQ0hFQ0soY29uZmlnLmhhc19yZW1vdGVfY2FuZGlkYXRlX3R5cGUoKSk7
Ci0gIHJlcy5yZW1vdGVfY2FuZGlkYXRlX3R5cGUgPQotICAgICAgR2V0UnVudGltZUljZUNhbmRp
ZGF0ZVR5cGUoY29uZmlnLnJlbW90ZV9jYW5kaWRhdGVfdHlwZSgpKTsKLSAgUlRDX0NIRUNLKGNv
bmZpZy5oYXNfcmVtb3RlX2FkZHJlc3NfZmFtaWx5KCkpOwotICByZXMucmVtb3RlX2FkZHJlc3Nf
ZmFtaWx5ID0KLSAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseShj
b25maWcucmVtb3RlX2FkZHJlc3NfZmFtaWx5KCkpOwotICBSVENfQ0hFQ0soY29uZmlnLmhhc19j
YW5kaWRhdGVfcGFpcl9wcm90b2NvbCgpKTsKLSAgcmVzLmNhbmRpZGF0ZV9wYWlyX3Byb3RvY29s
ID0KLSAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2woY29uZmlnLmNhbmRp
ZGF0ZV9wYWlyX3Byb3RvY29sKCkpOwotICByZXR1cm4gcmVzOwotfQotCi1QYXJzZWRSdGNFdmVu
dExvZzo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50Ci1QYXJzZWRSdGNFdmVudExvZzo6R2V0SWNlQ2Fu
ZGlkYXRlUGFpckV2ZW50KHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5k
ZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBydGNfZXZl
bnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKHJ0Y19ldmVudC5oYXNfdHlwZSgpKTsK
LSAgUlRDX0NIRUNLX0VRKHJ0Y19ldmVudC50eXBlKCksIHJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5E
SURBVEVfUEFJUl9FVkVOVCk7Ci0gIEljZUNhbmRpZGF0ZVBhaXJFdmVudCByZXM7Ci0gIGNvbnN0
IHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50JiBldmVudCA9Ci0gICAgICBydGNfZXZlbnQu
aWNlX2NhbmRpZGF0ZV9wYWlyX2V2ZW50KCk7Ci0gIHJlcy50aW1lc3RhbXAgPSBHZXRUaW1lc3Rh
bXAoaW5kZXgpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX2V2ZW50X3R5cGUoKSk7Ci0gIHJlcy50
eXBlID0gR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUoZXZlbnQuZXZlbnRfdHlw
ZSgpKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19jYW5kaWRhdGVfcGFpcl9pZCgpKTsKLSAgcmVz
LmNhbmRpZGF0ZV9wYWlyX2lkID0gZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQoKTsKLSAgcmV0dXJu
IHJlczsKLX0KLQotLy8gUmV0dXJucyB0aGUgTWVkaWFUeXBlIGZvciByZWdpc3RlcmVkIFNTUkNz
LiBTZWFyY2ggZnJvbSB0aGUgZW5kIHRvIHVzZSBsYXN0Ci0vLyByZWdpc3RlcmVkIHR5cGVzIGZp
cnN0LgotUGFyc2VkUnRjRXZlbnRMb2c6Ok1lZGlhVHlwZSBQYXJzZWRSdGNFdmVudExvZzo6R2V0
TWVkaWFUeXBlKAotICAgIHVpbnQzMl90IHNzcmMsCi0gICAgUGFja2V0RGlyZWN0aW9uIGRpcmVj
dGlvbikgY29uc3QgewotICBmb3IgKGF1dG8gcml0ID0gc3RyZWFtc18ucmJlZ2luKCk7IHJpdCAh
PSBzdHJlYW1zXy5yZW5kKCk7ICsrcml0KSB7Ci0gICAgaWYgKHJpdC0+c3NyYyA9PSBzc3JjICYm
IHJpdC0+ZGlyZWN0aW9uID09IGRpcmVjdGlvbikKLSAgICAgIHJldHVybiByaXQtPm1lZGlhX3R5
cGU7Ci0gIH0KLSAgcmV0dXJuIE1lZGlhVHlwZTo6QU5ZOwotfQotfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
cnRjX2V2ZW50X2xvZ19wYXJzZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkz
ZWM2ZGE3YzM2MWFiYWJhZGM1ZjI2MzQ0MTBmMDI4YWNiOGI2OC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykg
MjAxNiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8K
LSNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9HX1JUQ19FVkVOVF9MT0dfUEFSU0VSX0hfCi0j
ZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19SVENfRVZFTlRfTE9HX1BBUlNFUl9IXwotCi0j
aW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHNzdHJlYW0+ICAvLyBuby1wcmVzdWJtaXQtY2hlY2sg
VE9ETyh3ZWJydGM6ODk4MikKLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4g
IC8vIHBhaXIKLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJjYWxsL3ZpZGVvX3JlY2Vp
dmVfc3RyZWFtLmgiCi0jaW5jbHVkZSAiY2FsbC92aWRlb19zZW5kX3N0cmVhbS5oIgotI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVf
cGFpci5oIgotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWcuaCIKLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfZmFpbHVyZS5oIgotI2luY2x1ZGUg
ImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCi0jaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL3J0Y19zdHJlYW1fY29uZmlnLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9pZ25v
cmVfd3VuZGVmLmgiCi0KLS8vIEZpbGVzIGdlbmVyYXRlZCBhdCBidWlsZC10aW1lIGJ5IHRoZSBw
cm90b2J1ZiBjb21waWxlci4KLVJUQ19QVVNIX0lHTk9SSU5HX1dVTkRFRigpCi0jaWZkZWYgV0VC
UlRDX0FORFJPSURfUExBVEZPUk1fQlVJTEQKLSNpbmNsdWRlICJleHRlcm5hbC93ZWJydGMvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLnBiLmgiCi0jZWxzZQotI2lu
Y2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLnBiLmgiCi0jZW5kaWYK
LVJUQ19QT1BfSUdOT1JJTkdfV1VOREVGKCkKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWVudW0g
Y2xhc3MgQmFuZHdpZHRoVXNhZ2U7Ci1lbnVtIGNsYXNzIE1lZGlhVHlwZTsKLQotc3RydWN0IEF1
ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc7Ci0KLWNsYXNzIFBhcnNlZFJ0Y0V2ZW50TG9nIHsKLSAg
ZnJpZW5kIGNsYXNzIFJ0Y0V2ZW50TG9nVGVzdEhlbHBlcjsKLQotIHB1YmxpYzoKLSAgUGFyc2Vk
UnRjRXZlbnRMb2coKTsKLSAgflBhcnNlZFJ0Y0V2ZW50TG9nKCk7Ci0KLSAgc3RydWN0IEJ3ZVBy
b2JlQ2x1c3RlckNyZWF0ZWRFdmVudCB7Ci0gICAgdWludDY0X3QgdGltZXN0YW1wOwotICAgIHVp
bnQzMl90IGlkOwotICAgIHVpbnQ2NF90IGJpdHJhdGVfYnBzOwotICAgIHVpbnQzMl90IG1pbl9w
YWNrZXRzOwotICAgIHVpbnQzMl90IG1pbl9ieXRlczsKLSAgfTsKLQotICBzdHJ1Y3QgQndlUHJv
YmVSZXN1bHRFdmVudCB7Ci0gICAgQndlUHJvYmVSZXN1bHRFdmVudCgpOwotICAgIEJ3ZVByb2Jl
UmVzdWx0RXZlbnQoY29uc3QgQndlUHJvYmVSZXN1bHRFdmVudCYpOwotCi0gICAgdWludDY0X3Qg
dGltZXN0YW1wOwotICAgIHVpbnQzMl90IGlkOwotICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
PiBiaXRyYXRlX2JwczsKLSAgICBhYnNsOjpvcHRpb25hbDxQcm9iZUZhaWx1cmVSZWFzb24+IGZh
aWx1cmVfcmVhc29uOwotICB9OwotCi0gIHN0cnVjdCBCd2VEZWxheUJhc2VkVXBkYXRlIHsKLSAg
ICB1aW50NjRfdCB0aW1lc3RhbXA7Ci0gICAgaW50MzJfdCBiaXRyYXRlX2JwczsKLSAgICBCYW5k
d2lkdGhVc2FnZSBkZXRlY3Rvcl9zdGF0ZTsKLSAgfTsKLQotICBzdHJ1Y3QgQWxyU3RhdGVFdmVu
dCB7Ci0gICAgdWludDY0X3QgdGltZXN0YW1wOwotICAgIGJvb2wgaW5fYWxyOwotICB9OwotCi0g
IHN0cnVjdCBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnIHsKLSAgICB1aW50NjRfdCB0aW1lc3RhbXA7
Ci0gICAgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgdHlwZTsKLSAgICB1aW50MzJfdCBjYW5k
aWRhdGVfcGFpcl9pZDsKLSAgICBJY2VDYW5kaWRhdGVUeXBlIGxvY2FsX2NhbmRpZGF0ZV90eXBl
OwotICAgIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbCBsb2NhbF9yZWxheV9wcm90b2NvbDsKLSAg
ICBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZSBsb2NhbF9uZXR3b3JrX3R5cGU7Ci0gICAgSWNlQ2Fu
ZGlkYXRlUGFpckFkZHJlc3NGYW1pbHkgbG9jYWxfYWRkcmVzc19mYW1pbHk7Ci0gICAgSWNlQ2Fu
ZGlkYXRlVHlwZSByZW1vdGVfY2FuZGlkYXRlX3R5cGU7Ci0gICAgSWNlQ2FuZGlkYXRlUGFpckFk
ZHJlc3NGYW1pbHkgcmVtb3RlX2FkZHJlc3NfZmFtaWx5OwotICAgIEljZUNhbmRpZGF0ZVBhaXJQ
cm90b2NvbCBjYW5kaWRhdGVfcGFpcl9wcm90b2NvbDsKLSAgfTsKLQotICBzdHJ1Y3QgSWNlQ2Fu
ZGlkYXRlUGFpckV2ZW50IHsKLSAgICB1aW50NjRfdCB0aW1lc3RhbXA7Ci0gICAgSWNlQ2FuZGlk
YXRlUGFpckV2ZW50VHlwZSB0eXBlOwotICAgIHVpbnQzMl90IGNhbmRpZGF0ZV9wYWlyX2lkOwot
ICB9OwotCi0gIGVudW0gRXZlbnRUeXBlIHsKLSAgICBVTktOT1dOX0VWRU5UID0gMCwKLSAgICBM
T0dfU1RBUlQgPSAxLAotICAgIExPR19FTkQgPSAyLAotICAgIFJUUF9FVkVOVCA9IDMsCi0gICAg
UlRDUF9FVkVOVCA9IDQsCi0gICAgQVVESU9fUExBWU9VVF9FVkVOVCA9IDUsCi0gICAgTE9TU19C
QVNFRF9CV0VfVVBEQVRFID0gNiwKLSAgICBERUxBWV9CQVNFRF9CV0VfVVBEQVRFID0gNywKLSAg
ICBWSURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQgPSA4LAotICAgIFZJREVPX1NFTkRFUl9DT05G
SUdfRVZFTlQgPSA5LAotICAgIEFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCA9IDEwLAotICAg
IEFVRElPX1NFTkRFUl9DT05GSUdfRVZFTlQgPSAxMSwKLSAgICBBVURJT19ORVRXT1JLX0FEQVBU
QVRJT05fRVZFTlQgPSAxNiwKLSAgICBCV0VfUFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0VWRU5UID0g
MTcsCi0gICAgQldFX1BST0JFX1JFU1VMVF9FVkVOVCA9IDE4LAotICAgIEFMUl9TVEFURV9FVkVO
VCA9IDE5LAotICAgIElDRV9DQU5ESURBVEVfUEFJUl9DT05GSUcgPSAyMCwKLSAgICBJQ0VfQ0FO
RElEQVRFX1BBSVJfRVZFTlQgPSAyMSwKLSAgfTsKLQotICBlbnVtIGNsYXNzIE1lZGlhVHlwZSB7
IEFOWSwgQVVESU8sIFZJREVPLCBEQVRBIH07Ci0KLSAgLy8gUmVhZHMgYW4gUnRjRXZlbnRMb2cg
ZmlsZSBhbmQgcmV0dXJucyB0cnVlIGlmIHBhcnNpbmcgd2FzIHN1Y2Nlc3NmdWwuCi0gIGJvb2wg
UGFyc2VGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpOwotCi0gIC8vIFJlYWRzIGFu
IFJ0Y0V2ZW50TG9nIGZyb20gYSBzdHJpbmcgYW5kIHJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVs
LgotICBib29sIFBhcnNlU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKTsKLQotICAvLyBSZWFk
cyBhbiBSdGNFdmVudExvZyBmcm9tIGFuIGlzdHJlYW0gYW5kIHJldHVybnMgdHJ1ZSBpZiBzdWNj
ZXNzZnVsLgotICBib29sIFBhcnNlU3RyZWFtKHN0ZDo6aXN0cmVhbSYgc3RyZWFtKTsKLQotICAv
LyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZXZlbnRzIGluIGFuIEV2ZW50U3RyZWFtLgotICBzaXpl
X3QgR2V0TnVtYmVyT2ZFdmVudHMoKSBjb25zdDsKLQotICAvLyBSZWFkcyB0aGUgYXJyaXZhbCB0
aW1lc3RhbXAgKGluIG1pY3Jvc2Vjb25kcykgZnJvbSBhIHJ0Y2xvZzo6RXZlbnQuCi0gIGludDY0
X3QgR2V0VGltZXN0YW1wKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgdGhlIGV2
ZW50IHR5cGUgb2YgdGhlIHJ0Y2xvZzo6RXZlbnQgYXQgfGluZGV4fC4KLSAgRXZlbnRUeXBlIEdl
dEV2ZW50VHlwZShzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIHRoZSBoZWFkZXIs
IGRpcmVjdGlvbiwgaGVhZGVyIGxlbmd0aCBhbmQgcGFja2V0IGxlbmd0aCBmcm9tIHRoZSBSVFAK
LSAgLy8gZXZlbnQgYXQgfGluZGV4fCwgYW5kIHN0b3JlcyB0aGUgdmFsdWVzIGluIHRoZSBjb3Jy
ZXNwb25kaW5nIG91dHB1dAotICAvLyBwYXJhbWV0ZXJzLiBFYWNoIG91dHB1dCBwYXJhbWV0ZXIg
Y2FuIGJlIHNldCB0byBudWxscHRyIGlmIHRoYXQgdmFsdWUKLSAgLy8gaXNuJ3QgbmVlZGVkLgot
ICAvLyBOQjogVGhlIGhlYWRlciBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxlYXN0IElQX1BBQ0tF
VF9TSVpFIGJ5dGVzLgotICAvLyBSZXR1cm5zOiBhIHBvaW50ZXIgdG8gYSBoZWFkZXIgZXh0ZW5z
aW9ucyBtYXAgYWNxdWlyZWQgZnJvbSBwYXJzaW5nCi0gIC8vIGNvcnJlc3BvbmRpbmcgQXVkaW8v
VmlkZW8gU2VuZGVyL1JlY2VpdmVyIGNvbmZpZyBldmVudHMuCi0gIC8vIFdhcm5pbmc6IGlmIHRo
ZSBzYW1lIFNTUkMgaXMgcmV1c2VkIGJ5IGJvdGggdmlkZW8gYW5kIGF1ZGlvIHN0cmVhbXMgZHVy
aW5nCi0gIC8vIGNhbGwsIGV4dGVuc2lvbnMgbWFwcyBtYXkgYmUgaW5jb3JyZWN0ICh0aGUgbGFz
dCBvbmUgd291bGQgYmUgcmV0dXJuZWQpLgotICB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1h
cCogR2V0UnRwSGVhZGVyKHNpemVfdCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQYWNrZXREaXJlY3Rpb24qIGluY29taW5nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGhlYWRlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGhlYWRl
cl9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90KiB0b3RhbF9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50KiBwcm9iZV9jbHVzdGVyX2lkKSBjb25zdDsKLQotICAvLyBSZWFkcyBw
YWNrZXQsIGRpcmVjdGlvbiBhbmQgcGFja2V0IGxlbmd0aCBmcm9tIHRoZSBSVENQIGV2ZW50IGF0
IHxpbmRleHwsCi0gIC8vIGFuZCBzdG9yZXMgdGhlIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9uZGlu
ZyBvdXRwdXQgcGFyYW1ldGVycy4KLSAgLy8gRWFjaCBvdXRwdXQgcGFyYW1ldGVyIGNhbiBiZSBz
ZXQgdG8gbnVsbHB0ciBpZiB0aGF0IHZhbHVlIGlzbid0IG5lZWRlZC4KLSAgLy8gTkI6IFRoZSBw
YWNrZXQgbXVzdCBoYXZlIHNwYWNlIGZvciBhdCBsZWFzdCBJUF9QQUNLRVRfU0laRSBieXRlcy4K
LSAgdm9pZCBHZXRSdGNwUGFja2V0KHNpemVfdCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAg
IFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcsCi0gICAgICAgICAgICAgICAgICAgICB1aW50OF90
KiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGxlbmd0aCkgY29uc3Q7Ci0K
LSAgLy8gUmVhZHMgYSB2aWRlbyByZWNlaXZlIGNvbmZpZyBldmVudCB0byBhIFN0cmVhbUNvbmZp
ZyBzdHJ1Y3QuCi0gIC8vIE9ubHkgdGhlIGZpZWxkcyB0aGF0IGFyZSBzdG9yZWQgaW4gdGhlIHBy
b3RvYnVmIHdpbGwgYmUgd3JpdHRlbi4KLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgR2V0VmlkZW9S
ZWNlaXZlQ29uZmlnKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgYSB2aWRlbyBz
ZW5kIGNvbmZpZyBldmVudCB0byBhIFN0cmVhbUNvbmZpZyBzdHJ1Y3QuIElmIHRoZSBwcm90bwot
ICAvLyBjb250YWlucyBtdWx0aXBsZSBTU1JDcyBhbmQgUlRYIFNTUkNzICh0aGlzIHVzZWQgdG8g
YmUgdGhlIGNhc2UgZm9yCi0gIC8vIHNpbXVsY2FzdCBzdHJlYW1zKSB0aGVuIHdlIHJldHVybiBv
bmUgU3RyZWFtQ29uZmlnIHBlciBTU1JDLFJUWF9TU1JDIHBhaXIuCi0gIC8vIE9ubHkgdGhlIGZp
ZWxkcyB0aGF0IGFyZSBzdG9yZWQgaW4gdGhlIHByb3RvYnVmIHdpbGwgYmUgd3JpdHRlbi4KLSAg
c3RkOjp2ZWN0b3I8cnRjbG9nOjpTdHJlYW1Db25maWc+IEdldFZpZGVvU2VuZENvbmZpZyhzaXpl
X3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIGEgYXVkaW8gcmVjZWl2ZSBjb25maWcgZXZl
bnQgdG8gYSBTdHJlYW1Db25maWcgc3RydWN0LgotICAvLyBPbmx5IHRoZSBmaWVsZHMgdGhhdCBh
cmUgc3RvcmVkIGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdyaXR0ZW4uCi0gIHJ0Y2xvZzo6U3Ry
ZWFtQ29uZmlnIEdldEF1ZGlvUmVjZWl2ZUNvbmZpZyhzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0g
IC8vIFJlYWRzIGEgY29uZmlnIGV2ZW50IHRvIGEgU3RyZWFtQ29uZmlnIHN0cnVjdC4KLSAgLy8g
T25seSB0aGUgZmllbGRzIHRoYXQgYXJlIHN0b3JlZCBpbiB0aGUgcHJvdG9idWYgd2lsbCBiZSB3
cml0dGVuLgotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBHZXRBdWRpb1NlbmRDb25maWcoc2l6ZV90
IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyB0aGUgU1NSQyBmcm9tIHRoZSBhdWRpbyBwbGF5
b3V0IGV2ZW50IGF0IHxpbmRleHwuIFRoZSBTU1JDIGlzIHN0b3JlZAotICAvLyBpbiB0aGUgb3V0
cHV0IHBhcmFtZXRlciBzc3JjLiBUaGUgb3V0cHV0IHBhcmFtZXRlciBjYW4gYmUgc2V0IHRvIG51
bGxwdHIKLSAgLy8gYW5kIGluIHRoYXQgY2FzZSB0aGUgZnVuY3Rpb24gb25seSBhc3NlcnRzIHRo
YXQgdGhlIGV2ZW50IGlzIHdlbGwgZm9ybWVkLgotICB2b2lkIEdldEF1ZGlvUGxheW91dChzaXpl
X3QgaW5kZXgsIHVpbnQzMl90KiBzc3JjKSBjb25zdDsKLQotICAvLyBSZWFkcyBiaXRyYXRlLCBm
cmFjdGlvbiBsb3NzIChhcyBkZWZpbmVkIGluIFJGQyAxODg5KSBhbmQgdG90YWwgbnVtYmVyIG9m
Ci0gIC8vIGV4cGVjdGVkIHBhY2tldHMgZnJvbSB0aGUgbG9zcyBiYXNlZCBCV0UgZXZlbnQgYXQg
fGluZGV4fCBhbmQgc3RvcmVzIHRoZQotICAvLyB2YWx1ZXMgaW4KLSAgLy8gdGhlIGNvcnJlc3Bv
bmRpbmcgb3V0cHV0IHBhcmFtZXRlcnMuIEVhY2ggb3V0cHV0IHBhcmFtZXRlciBjYW4gYmUgc2V0
IHRvCi0gIC8vIG51bGxwdHIgaWYgdGhhdAotICAvLyB2YWx1ZSBpc24ndCBuZWVkZWQuCi0gIHZv
aWQgR2V0TG9zc0Jhc2VkQndlVXBkYXRlKHNpemVfdCBpbmRleCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJfdCogYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QqIGZyYWN0aW9uX2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDMyX3QqIHRvdGFsX3BhY2tldHMpIGNvbnN0OwotCi0gIC8vIFJlYWRzIGJpdHJhdGUg
YW5kIGRldGVjdG9yX3N0YXRlIGZyb20gdGhlIGRlbGF5IGJhc2VkIEJXRSBldmVudCBhdCB8aW5k
ZXh8Ci0gIC8vIGFuZCBzdG9yZXMgdGhlIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9uZGluZyBvdXRw
dXQgcGFyYW1ldGVycy4gRWFjaCBvdXRwdXQKLSAgLy8gcGFyYW1ldGVyIGNhbiBiZSBzZXQgdG8g
bnVsbHB0ciBpZiB0aGF0Ci0gIC8vIHZhbHVlIGlzbid0IG5lZWRlZC4KLSAgQndlRGVsYXlCYXNl
ZFVwZGF0ZSBHZXREZWxheUJhc2VkQndlVXBkYXRlKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAg
Ly8gUmVhZHMgYSBhdWRpbyBuZXR3b3JrIGFkYXB0YXRpb24gZXZlbnQgdG8gYSAobm9uLU5VTEwp
Ci0gIC8vIEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWcgc3RydWN0LiBPbmx5IHRoZSBmaWVsZHMg
dGhhdCBhcmUKLSAgLy8gc3RvcmVkIGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdyaXR0ZW4uCi0g
IHZvaWQgR2V0QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihzaXplX3QgaW5kZXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnKiBjb25maWcp
IGNvbnN0OwotCi0gIEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCBHZXRCd2VQcm9iZUNsdXN0
ZXJDcmVhdGVkKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgQndlUHJvYmVSZXN1bHRFdmVudCBH
ZXRCd2VQcm9iZVJlc3VsdChzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIE1lZGlhVHlwZSBHZXRN
ZWRpYVR5cGUodWludDMyX3Qgc3NyYywgUGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3Q7
Ci0KLSAgQWxyU3RhdGVFdmVudCBHZXRBbHJTdGF0ZShzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0g
IEljZUNhbmRpZGF0ZVBhaXJDb25maWcgR2V0SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyhzaXplX3Qg
aW5kZXgpIGNvbnN0OwotICBJY2VDYW5kaWRhdGVQYWlyRXZlbnQgR2V0SWNlQ2FuZGlkYXRlUGFp
ckV2ZW50KHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSBwcml2YXRlOgotICBydGNsb2c6OlN0cmVh
bUNvbmZpZyBHZXRWaWRlb1JlY2VpdmVDb25maWcoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQp
IGNvbnN0OwotICBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gR2V0VmlkZW9TZW5k
Q29uZmlnKAotICAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0OwotICBydGNs
b2c6OlN0cmVhbUNvbmZpZyBHZXRBdWRpb1JlY2VpdmVDb25maWcoY29uc3QgcnRjbG9nOjpFdmVu
dCYgZXZlbnQpIGNvbnN0OwotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBHZXRBdWRpb1NlbmRDb25m
aWcoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0OwotCi0gIHN0ZDo6dmVjdG9yPHJ0
Y2xvZzo6RXZlbnQ+IGV2ZW50c187Ci0KLSAgc3RydWN0IFN0cmVhbSB7Ci0gICAgU3RyZWFtKHVp
bnQzMl90IHNzcmMsCi0gICAgICAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlLAotICAgICAgICAg
ICB3ZWJydGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb24sCi0gICAgICAgICAgIHdlYnJ0Yzo6
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwIG1hcCkKLSAgICAgICAgOiBzc3JjKHNzcmMpLAotICAgICAg
ICAgIG1lZGlhX3R5cGUobWVkaWFfdHlwZSksCi0gICAgICAgICAgZGlyZWN0aW9uKGRpcmVjdGlv
biksCi0gICAgICAgICAgcnRwX2V4dGVuc2lvbnNfbWFwKG1hcCkge30KLSAgICB1aW50MzJfdCBz
c3JjOwotICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlOwotICAgIHdlYnJ0Yzo6UGFja2V0RGlyZWN0
aW9uIGRpcmVjdGlvbjsKLSAgICB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCBydHBfZXh0
ZW5zaW9uc19tYXA7Ci0gIH07Ci0KLSAgLy8gQWxsIGNvbmZpZ3VyZWQgc3RyZWFtcyBmb3VuZCBp
biB0aGUgZXZlbnQgbG9nLgotICBzdGQ6OnZlY3RvcjxTdHJlYW0+IHN0cmVhbXNfOwotCi0gIC8v
IFRvIGZpbmQgY29uZmlndXJlZCBleHRlbnNpb25zIG1hcCBmb3IgZ2l2ZW4gc3RyZWFtLCB3aGF0
IGFyZSBuZWVkZWQgdG8KLSAgLy8gcGFyc2UgYSBoZWFkZXIuCi0gIHR5cGVkZWYgc3RkOjpwYWly
PHVpbnQzMl90LCB3ZWJydGM6OlBhY2tldERpcmVjdGlvbj4gU3RyZWFtSWQ7Ci0gIHN0ZDo6bWFw
PFN0cmVhbUlkLCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCo+IHJ0cF9leHRlbnNpb25z
X21hcHNfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIExPR0dJ
TkdfUlRDX0VWRU5UX0xPR19SVENfRVZFTlRfTE9HX1BBUlNFUl9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3Bh
cnNlcl9uZXcuY2MKaW5kZXggNWZhNjllZDYzN2Y2NWVhYzA5MTI5YjQ2ZjgyYjg1OTVmNDEzODQ1
Ny4uNzI3OGVhMThiMWQzM2M0NWMzZDhlNzdlMDBlMTJiZmNlZTk4ZTM5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50
X2xvZ19wYXJzZXJfbmV3LmNjCkBAIC0yNCwyMSArMjQsMzAgQEAKICNpbmNsdWRlICJhYnNsL3R5
cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL3J0cF9oZWFkZXJzLmgiCiAjaW5jbHVkZSAi
YXBpL3J0cHBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5j
b2Rlci9ibG9iX2VuY29kaW5nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvZGVsdGFfZW5jb2RpbmcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmgiCiAjaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0
b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci90cmFuc3BvcnRf
ZmVlZGJhY2tfYWRhcHRlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2N2by5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF91dGlsaXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3Nh
ZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wcm90b2J1Zl91dGlscy5oIgog
Cit1c2luZyB3ZWJydGNfZXZlbnRfbG9nZ2luZzo6VG9TaWduZWQ7Cit1c2luZyB3ZWJydGNfZXZl
bnRfbG9nZ2luZzo6VG9VbnNpZ25lZDsKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIG5hbWVzcGFj
ZSB7CisvLyBDb252ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgbGVnYWN5IHdpcmUgZm9ybWF0LgogUnRj
cE1vZGUgR2V0UnVudGltZVJ0Y3BNb2RlKHJ0Y2xvZzo6VmlkZW9SZWNlaXZlQ29uZmlnOjpSdGNw
TW9kZSBydGNwX21vZGUpIHsKICAgc3dpdGNoIChydGNwX21vZGUpIHsKICAgICBjYXNlIHJ0Y2xv
Zzo6VmlkZW9SZWNlaXZlQ29uZmlnOjpSVENQX0NPTVBPVU5EOgpAQCAtNTAsNTIgKzU5LDYgQEAg
UnRjcE1vZGUgR2V0UnVudGltZVJ0Y3BNb2RlKHJ0Y2xvZzo6VmlkZW9SZWNlaXZlQ29uZmlnOjpS
dGNwTW9kZSBydGNwX21vZGUpIHsKICAgcmV0dXJuIFJ0Y3BNb2RlOjprT2ZmOwogfQogCi1QYXJz
ZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlIEdldFJ1bnRpbWVFdmVudFR5cGUoCi0gICAgcnRj
bG9nOjpFdmVudDo6RXZlbnRUeXBlIGV2ZW50X3R5cGUpIHsKLSAgc3dpdGNoIChldmVudF90eXBl
KSB7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpVTktOT1dOX0VWRU5UOgotICAgICAgcmV0dXJu
IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlVOS05PV05fRVZFTlQ7Ci0gICAgY2Fz
ZSBydGNsb2c6OkV2ZW50OjpMT0dfU1RBUlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRM
b2dOZXc6OkV2ZW50VHlwZTo6TE9HX1NUQVJUOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6TE9H
X0VORDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpMT0df
RU5EOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6UlRQX0VWRU5UOgotICAgICAgcmV0dXJuIFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlJUUF9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xv
Zzo6RXZlbnQ6OlJUQ1BfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OkV2ZW50VHlwZTo6UlRDUF9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1BM
QVlPVVRfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlw
ZTo6QVVESU9fUExBWU9VVF9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkxPU1NfQkFT
RURfQldFX1VQREFURToKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRU
eXBlOjpMT1NTX0JBU0VEX0JXRV9VUERBVEU7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpERUxB
WV9CQVNFRF9CV0VfVVBEQVRFOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpF
dmVudFR5cGU6OkRFTEFZX0JBU0VEX0JXRV9VUERBVEU7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50
OjpWSURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OkV2ZW50VHlwZTo6VklERU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UOwotICAgIGNh
c2UgcnRjbG9nOjpFdmVudDo6VklERU9fU0VOREVSX0NPTkZJR19FVkVOVDoKLSAgICAgIHJldHVy
biBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpWSURFT19TRU5ERVJfQ09ORklHX0VW
RU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QVVESU9fUkVDRUlWRVJfQ09ORklHX0VWRU5U
OgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkFVRElPX1JF
Q0VJVkVSX0NPTkZJR19FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1NFTkRF
Ul9DT05GSUdfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50
VHlwZTo6QVVESU9fU0VOREVSX0NPTkZJR19FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6
OkFVRElPX05FVFdPUktfQURBUFRBVElPTl9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNF
dmVudExvZ05ldzo6RXZlbnRUeXBlOjpBVURJT19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQ7Ci0g
ICAgY2FzZSBydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0VWRU5UOgot
ICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9D
TFVTVEVSX0NSRUFURURfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVf
UkVTVUxUX0VWRU5UOgotICAgICAgLy8gUHJvYmUgc3VjY2Vzc2VzIGFuZCBmYWlsdXJlcyBhcmUg
Y3VycmVudGx5IHN0b3JlZCBpbiB0aGUgc2FtZSBwcm90bwotICAgICAgLy8gbWVzc2FnZSwgd2Ug
YXJlIG1vdmluZyB0b3dhcmRzIHNlcGFyYXRlIG1lc3NhZ2VzLiBQcm9iZSByZXN1bHRzCi0gICAg
ICAvLyB0aGVyZWZvcmUgbmVlZCBzcGVjaWFsIHRyZWF0bWVudCBpbiB0aGUgcGFyc2VyLgotICAg
ICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlVOS05PV05fRVZFTlQ7
Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBTFJfU1RBVEVfRVZFTlQ6Ci0gICAgICByZXR1cm4g
UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QUxSX1NUQVRFX0VWRU5UOwotICAgIGNh
c2UgcnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRzoKLSAgICAgIHJldHVy
biBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRFX1BBSVJfQ09O
RklHOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlSX0VWRU5UOgot
ICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OklDRV9DQU5ESURB
VEVfUEFJUl9FVkVOVDsKLSAgfQotICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50
VHlwZTo6VU5LTk9XTl9FVkVOVDsKLX0KLQogQmFuZHdpZHRoVXNhZ2UgR2V0UnVudGltZURldGVj
dG9yU3RhdGUoCiAgICAgcnRjbG9nOjpEZWxheUJhc2VkQndlVXBkYXRlOjpEZXRlY3RvclN0YXRl
IGRldGVjdG9yX3N0YXRlKSB7CiAgIHN3aXRjaCAoZGV0ZWN0b3Jfc3RhdGUpIHsKQEAgLTIxMiw2
ICsxNzUsMTc1IEBAIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgR2V0UnVudGltZUljZUNhbmRp
ZGF0ZVBhaXJFdmVudFR5cGUoCiAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjpr
Q2hlY2tTZW50OwogfQogCisvLyBDb252ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgdmVyc2lvbiAyIG9m
IHRoZSB3aXJlIGZvcm1hdC4KK0JhbmR3aWR0aFVzYWdlIEdldFJ1bnRpbWVEZXRlY3RvclN0YXRl
KAorICAgIHJ0Y2xvZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVzOjpEZXRlY3RvclN0YXRlIGRldGVj
dG9yX3N0YXRlKSB7CisgIHN3aXRjaCAoZGV0ZWN0b3Jfc3RhdGUpIHsKKyAgICBjYXNlIHJ0Y2xv
ZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVzOjpCV0VfTk9STUFMOgorICAgICAgcmV0dXJuIEJhbmR3
aWR0aFVzYWdlOjprQndOb3JtYWw7CisgICAgY2FzZSBydGNsb2cyOjpEZWxheUJhc2VkQndlVXBk
YXRlczo6QldFX1VOREVSVVNJTkc6CisgICAgICByZXR1cm4gQmFuZHdpZHRoVXNhZ2U6OmtCd1Vu
ZGVydXNpbmc7CisgICAgY2FzZSBydGNsb2cyOjpEZWxheUJhc2VkQndlVXBkYXRlczo6QldFX09W
RVJVU0lORzoKKyAgICAgIHJldHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5nOworICAg
IGNhc2UgcnRjbG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkJXRV9VTktOT1dOX1NUQVRFOgor
ICAgICAgYnJlYWs7CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIEJhbmR3aWR0
aFVzYWdlOjprQndOb3JtYWw7Cit9CisKK1Byb2JlRmFpbHVyZVJlYXNvbiBHZXRSdW50aW1lUHJv
YmVGYWlsdXJlUmVhc29uKAorICAgIHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0RmFpbHVyZTo6RmFp
bHVyZVJlYXNvbiBmYWlsdXJlKSB7CisgIHN3aXRjaCAoZmFpbHVyZSkgeworICAgIGNhc2UgcnRj
bG9nMjo6QndlUHJvYmVSZXN1bHRGYWlsdXJlOjpJTlZBTElEX1NFTkRfUkVDRUlWRV9JTlRFUlZB
TDoKKyAgICAgIHJldHVybiBQcm9iZUZhaWx1cmVSZWFzb246OmtJbnZhbGlkU2VuZFJlY2VpdmVJ
bnRlcnZhbDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0RmFpbHVyZTo6SU5WQUxJ
RF9TRU5EX1JFQ0VJVkVfUkFUSU86CisgICAgICByZXR1cm4gUHJvYmVGYWlsdXJlUmVhc29uOjpr
SW52YWxpZFNlbmRSZWNlaXZlUmF0aW87CisgICAgY2FzZSBydGNsb2cyOjpCd2VQcm9iZVJlc3Vs
dEZhaWx1cmU6OlRJTUVPVVQ6CisgICAgICByZXR1cm4gUHJvYmVGYWlsdXJlUmVhc29uOjprVGlt
ZW91dDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0RmFpbHVyZTo6VU5LTk9XTjoK
KyAgICAgIGJyZWFrOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBQcm9iZUZh
aWx1cmVSZWFzb246OmtUaW1lb3V0OworfQorCitJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZSBH
ZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUoCisgICAgcnRjbG9nMjo6SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgdHlwZSkgeworICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OkFEREVEOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlOjprQWRkZWQ7
CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVUERBVEVEOgorICAg
ICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlOjprVXBkYXRlZDsKKyAgICBjYXNl
IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkRFU1RST1lFRDoKKyAgICAgIHJldHVy
biBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a0Rlc3Ryb3llZDsKKyAgICBjYXNlIHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlNFTEVDVEVEOgorICAgICAgcmV0dXJuIEljZUNh
bmRpZGF0ZVBhaXJDb25maWdUeXBlOjprU2VsZWN0ZWQ7CisgICAgY2FzZSBydGNsb2cyOjpJY2VD
YW5kaWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX0NPTkZJR19UWVBFOgorICAgICAgYnJlYWs7Cisg
IH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJDb25maWdU
eXBlOjprQWRkZWQ7Cit9CisKK0ljZUNhbmRpZGF0ZVR5cGUgR2V0UnVudGltZUljZUNhbmRpZGF0
ZVR5cGUoCisgICAgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SWNlQ2FuZGlkYXRl
VHlwZSB0eXBlKSB7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZzo6TE9DQUw6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlVHlwZTo6
a0xvY2FsOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6U1RVTjoK
KyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVUeXBlOjprU3R1bjsKKyAgICBjYXNlIHJ0Y2xvZzI6
OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlBSRkxYOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0
ZVR5cGU6OmtQcmZseDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OlJFTEFZOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVR5cGU6OmtSZWxheTsKKyAgICBjYXNl
IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fQ0FORElEQVRFX1RZUEU6
CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlVHlwZTo6a1Vua25vd247CisgIH0KKyAgUlRDX05P
VFJFQUNIRUQoKTsKKyAgcmV0dXJuIEljZUNhbmRpZGF0ZVR5cGU6OmtVbmtub3duOworfQorCitJ
Y2VDYW5kaWRhdGVQYWlyUHJvdG9jb2wgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJQcm90b2Nv
bCgKKyAgICBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpQcm90b2NvbCBwcm90b2Nv
bCkgeworICBzd2l0Y2ggKHByb3RvY29sKSB7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnOjpVRFA6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3RvY29s
OjprVWRwOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VENQOgor
ICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbDo6a1RjcDsKKyAgICBjYXNlIHJ0
Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlNTTFRDUDoKKyAgICAgIHJldHVybiBJY2VD
YW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtTc2x0Y3A7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnOjpUTFM6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3Rv
Y29sOjprVGxzOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5L
Tk9XTl9QUk9UT0NPTDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtV
bmtub3duOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBJY2VDYW5kaWRhdGVQ
YWlyUHJvdG9jb2w6OmtVbmtub3duOworfQorCitJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWls
eSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHkoCisgICAgcnRjbG9nMjo6
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6QWRkcmVzc0ZhbWlseSBhZGRyZXNzX2ZhbWlseSkgewor
ICBzd2l0Y2ggKGFkZHJlc3NfZmFtaWx5KSB7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnOjpJUFY0OgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNz
RmFtaWx5OjprSXB2NDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OklQVjY6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHk6OmtJcHY2
OworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9BRERS
RVNTX0ZBTUlMWToKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6
a1Vua25vd247CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIEljZUNhbmRpZGF0
ZVBhaXJBZGRyZXNzRmFtaWx5OjprVW5rbm93bjsKK30KKworSWNlQ2FuZGlkYXRlTmV0d29ya1R5
cGUgR2V0UnVudGltZUljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlKAorICAgIHJ0Y2xvZzI6OkljZUNh
bmRpZGF0ZVBhaXJDb25maWc6Ok5ldHdvcmtUeXBlIG5ldHdvcmtfdHlwZSkgeworICBzd2l0Y2gg
KG5ldHdvcmtfdHlwZSkgeworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZp
Zzo6RVRIRVJORVQ6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtFdGhl
cm5ldDsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkxPT1BCQUNL
OgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprTG9vcGJhY2s7CisgICAg
Y2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpXSUZJOgorICAgICAgcmV0dXJu
IEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprV2lmaTsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNh
bmRpZGF0ZVBhaXJDb25maWc6OlZQTjoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3b3Jr
VHlwZTo6a1ZwbjsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkNF
TExVTEFSOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprQ2VsbHVsYXI7
CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX05FVFdP
UktfVFlQRToKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a1Vua25vd247
CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtU
eXBlOjprVW5rbm93bjsKK30KKworSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSBHZXRSdW50aW1l
SWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSgKKyAgICBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWly
RXZlbnQ6OkljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgdHlwZSkgeworICBzd2l0Y2ggKHR5cGUp
IHsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudDo6Q0hFQ0tfU0VOVDoK
KyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tTZW50OworICAg
IGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpDSEVDS19SRUNFSVZFRDoKKyAg
ICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tSZWNlaXZlZDsKKyAg
ICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudDo6Q0hFQ0tfUkVTUE9OU0VfU0VO
VDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tSZXNwb25z
ZVNlbnQ7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6OkNIRUNLX1JF
U1BPTlNFX1JFQ0VJVkVEOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGU6
OmtDaGVja1Jlc3BvbnNlUmVjZWl2ZWQ7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQ
YWlyRXZlbnQ6OlVOS05PV05fQ0hFQ0tfVFlQRToKKyAgICAgIGJyZWFrOworICB9CisgIFJUQ19O
T1RSRUFDSEVEKCk7CisgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tT
ZW50OworfQorCitzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+IEdldFJ1bnRpbWVSdHBIZWFkZXJF
eHRlbnNpb25Db25maWcoCisgICAgY29uc3QgcnRjbG9nMjo6UnRwSGVhZGVyRXh0ZW5zaW9uQ29u
ZmlnJiBwcm90b19oZWFkZXJfZXh0ZW5zaW9ucykgeworICBzdGQ6OnZlY3RvcjxSdHBFeHRlbnNp
b24+IHJ0cF9leHRlbnNpb25zOworICBpZiAocHJvdG9faGVhZGVyX2V4dGVuc2lvbnMuaGFzX3Ry
YW5zbWlzc2lvbl90aW1lX29mZnNldF9pZCgpKSB7CisgICAgcnRwX2V4dGVuc2lvbnMuZW1wbGFj
ZV9iYWNrKAorICAgICAgICBSdHBFeHRlbnNpb246OmtUaW1lc3RhbXBPZmZzZXRVcmksCisgICAg
ICAgIHByb3RvX2hlYWRlcl9leHRlbnNpb25zLnRyYW5zbWlzc2lvbl90aW1lX29mZnNldF9pZCgp
KTsKKyAgfQorICBpZiAocHJvdG9faGVhZGVyX2V4dGVuc2lvbnMuaGFzX2Fic29sdXRlX3NlbmRf
dGltZV9pZCgpKSB7CisgICAgcnRwX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAorICAgICAgICBS
dHBFeHRlbnNpb246OmtBYnNTZW5kVGltZVVyaSwKKyAgICAgICAgcHJvdG9faGVhZGVyX2V4dGVu
c2lvbnMuYWJzb2x1dGVfc2VuZF90aW1lX2lkKCkpOworICB9CisgIGlmIChwcm90b19oZWFkZXJf
ZXh0ZW5zaW9ucy5oYXNfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9pZCgpKSB7CisgICAgcnRw
X2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAorICAgICAgICBSdHBFeHRlbnNpb246OmtUcmFuc3Bv
cnRTZXF1ZW5jZU51bWJlclVyaSwKKyAgICAgICAgcHJvdG9faGVhZGVyX2V4dGVuc2lvbnMudHJh
bnNwb3J0X3NlcXVlbmNlX251bWJlcl9pZCgpKTsKKyAgfQorICBpZiAocHJvdG9faGVhZGVyX2V4
dGVuc2lvbnMuaGFzX2F1ZGlvX2xldmVsX2lkKCkpIHsKKyAgICBydHBfZXh0ZW5zaW9ucy5lbXBs
YWNlX2JhY2soUnRwRXh0ZW5zaW9uOjprQXVkaW9MZXZlbFVyaSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvdG9faGVhZGVyX2V4dGVuc2lvbnMuYXVkaW9fbGV2ZWxfaWQoKSk7
CisgIH0KKyAgaWYgKHByb3RvX2hlYWRlcl9leHRlbnNpb25zLmhhc192aWRlb19yb3RhdGlvbl9p
ZCgpKSB7CisgICAgcnRwX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKFJ0cEV4dGVuc2lvbjo6a1Zp
ZGVvUm90YXRpb25VcmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvX2hl
YWRlcl9leHRlbnNpb25zLnZpZGVvX3JvdGF0aW9uX2lkKCkpOworICB9CisgIHJldHVybiBydHBf
ZXh0ZW5zaW9uczsKK30KKy8vIEVuZCBvZiBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KKwogLy8gUmVh
ZHMgYSBWYXJJbnQgZnJvbSB8c3RyZWFtfCBhbmQgcmV0dXJucyBpdC4gQWxzbyB3cml0ZXMgdGhl
IHJlYWQgYnl0ZXMgdG8KIC8vIHxidWZmZXJ8IHN0YXJ0aW5nIHxieXRlc193cml0dGVufCBieXRl
cyBpbnRvIHRoZSBidWZmZXIuIHxieXRlc193cml0dGVufCBpcwogLy8gaW5jcmVtZW50ZWQgZm9y
IGVhY2ggd3JpdHRlbiBieXRlLgpAQCAtMjcxLDE1ICs0MDMsMzIyIEBAIHZvaWQgU29ydFBhY2tl
dEZlZWRiYWNrVmVjdG9yV2l0aExvc3Moc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+KiB2ZWMp
IHsKICAgc3RkOjpzb3J0KHZlYy0+YmVnaW4oKSwgdmVjLT5lbmQoKSwgTG9zc0hhbmRsaW5nUGFj
a2V0RmVlZGJhY2tDb21wYXJhdG9yKCkpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUHJvdG9U
eXBlLCB0eXBlbmFtZSBMb2dnZWRUeXBlPgordm9pZCBTdG9yZVJ0cFBhY2tldHMoCisgICAgY29u
c3QgUHJvdG9UeXBlJiBwcm90bywKKyAgICBzdGQ6Om1hcDx1aW50MzJfdCwgc3RkOjp2ZWN0b3I8
TG9nZ2VkVHlwZT4+KiBydHBfcGFja2V0c19tYXApIHsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190
aW1lc3RhbXBfbXMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfbWFya2VyKCkpOworICBSVENf
Q0hFQ0socHJvdG8uaGFzX3BheWxvYWRfdHlwZSgpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19z
ZXF1ZW5jZV9udW1iZXIoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfcnRwX3RpbWVzdGFtcCgp
KTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19zc3JjKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFz
X3BheWxvYWRfc2l6ZSgpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19oZWFkZXJfc2l6ZSgpKTsK
KyAgUlRDX0NIRUNLKHByb3RvLmhhc19wYWRkaW5nX3NpemUoKSk7CisKKyAgLy8gQmFzZSBldmVu
dAorICB7CisgICAgUlRQSGVhZGVyIGhlYWRlcjsKKyAgICBoZWFkZXIubWFya2VyQml0ID0gcnRj
OjpjaGVja2VkX2Nhc3Q8Ym9vbD4ocHJvdG8ubWFya2VyKCkpOworICAgIGhlYWRlci5wYXlsb2Fk
VHlwZSA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQ4X3Q+KHByb3RvLnBheWxvYWRfdHlwZSgpKTsK
KyAgICBoZWFkZXIuc2VxdWVuY2VOdW1iZXIgPQorICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDx1
aW50MTZfdD4ocHJvdG8uc2VxdWVuY2VfbnVtYmVyKCkpOworICAgIGhlYWRlci50aW1lc3RhbXAg
PSBydGM6OmNoZWNrZWRfY2FzdDx1aW50MzJfdD4ocHJvdG8ucnRwX3RpbWVzdGFtcCgpKTsKKyAg
ICBoZWFkZXIuc3NyYyA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQzMl90Pihwcm90by5zc3JjKCkp
OworICAgIGhlYWRlci5udW1DU1JDcyA9IDA7ICAvLyBUT0RPKHRlcmVsaXVzKTogSW1wbGVtZW50
IENTUkMuCisgICAgaGVhZGVyLnBhZGRpbmdMZW5ndGggPSBydGM6OmNoZWNrZWRfY2FzdDxzaXpl
X3Q+KHByb3RvLnBhZGRpbmdfc2l6ZSgpKTsKKyAgICBoZWFkZXIuaGVhZGVyTGVuZ3RoID0gcnRj
OjpjaGVja2VkX2Nhc3Q8c2l6ZV90Pihwcm90by5oZWFkZXJfc2l6ZSgpKTsKKyAgICAvLyBUT0RP
KHRlcmVsaXVzKTogU2hvdWxkIHdlIGltcGxlbWVudCBwYXlsb2FkX3R5cGVfZnJlcXVlbmN5Pwor
ICAgIGlmIChwcm90by5oYXNfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcigpKSB7CisgICAgICBo
ZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyID0gdHJ1ZTsKKyAgICAg
IGhlYWRlci5leHRlbnNpb24udHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIgPQorICAgICAgICAgIHJ0
Yzo6Y2hlY2tlZF9jYXN0PHVpbnQxNl90Pihwcm90by50cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVy
KCkpOworICAgIH0KKyAgICBpZiAocHJvdG8uaGFzX3RyYW5zbWlzc2lvbl90aW1lX29mZnNldCgp
KSB7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zbWlzc2lvblRpbWVPZmZzZXQgPSB0
cnVlOworICAgICAgaGVhZGVyLmV4dGVuc2lvbi50cmFuc21pc3Npb25UaW1lT2Zmc2V0ID0KKyAg
ICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDxpbnQzMl90Pihwcm90by50cmFuc21pc3Npb25fdGlt
ZV9vZmZzZXQoKSk7CisgICAgfQorICAgIGlmIChwcm90by5oYXNfYWJzb2x1dGVfc2VuZF90aW1l
KCkpIHsKKyAgICAgIGhlYWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5kVGltZSA9IHRydWU7
CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLmFic29sdXRlU2VuZFRpbWUgPQorICAgICAgICAgIHJ0
Yzo6Y2hlY2tlZF9jYXN0PHVpbnQzMl90Pihwcm90by5hYnNvbHV0ZV9zZW5kX3RpbWUoKSk7Cisg
ICAgfQorICAgIGlmIChwcm90by5oYXNfdmlkZW9fcm90YXRpb24oKSkgeworICAgICAgaGVhZGVy
LmV4dGVuc2lvbi5oYXNWaWRlb1JvdGF0aW9uID0gdHJ1ZTsKKyAgICAgIGhlYWRlci5leHRlbnNp
b24udmlkZW9Sb3RhdGlvbiA9IENvbnZlcnRDVk9CeXRlVG9WaWRlb1JvdGF0aW9uKAorICAgICAg
ICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQ4X3Q+KHByb3RvLnZpZGVvX3JvdGF0aW9uKCkpKTsK
KyAgICB9CisgICAgaWYgKHByb3RvLmhhc19hdWRpb19sZXZlbCgpKSB7CisgICAgICBSVENfQ0hF
Q0socHJvdG8uaGFzX3ZvaWNlX2FjdGl2aXR5KCkpOworICAgICAgaGVhZGVyLmV4dGVuc2lvbi5o
YXNBdWRpb0xldmVsID0gdHJ1ZTsKKyAgICAgIGhlYWRlci5leHRlbnNpb24udm9pY2VBY3Rpdml0
eSA9CisgICAgICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8Ym9vbD4ocHJvdG8udm9pY2VfYWN0aXZp
dHkoKSk7CisgICAgICBjb25zdCB1aW50OF90IGF1ZGlvX2xldmVsID0KKyAgICAgICAgICBydGM6
OmNoZWNrZWRfY2FzdDx1aW50OF90Pihwcm90by5hdWRpb19sZXZlbCgpKTsKKyAgICAgIFJUQ19D
SEVDS19MRShhdWRpb19sZXZlbCwgMHg3RnUpOworICAgICAgaGVhZGVyLmV4dGVuc2lvbi5hdWRp
b0xldmVsID0gYXVkaW9fbGV2ZWw7CisgICAgfSBlbHNlIHsKKyAgICAgIFJUQ19DSEVDSyghcHJv
dG8uaGFzX3ZvaWNlX2FjdGl2aXR5KCkpOworICAgIH0KKyAgICAoKnJ0cF9wYWNrZXRzX21hcClb
aGVhZGVyLnNzcmNdLmVtcGxhY2VfYmFjaygKKyAgICAgICAgcHJvdG8udGltZXN0YW1wX21zKCkg
KiAxMDAwLCBoZWFkZXIsIHByb3RvLmhlYWRlcl9zaXplKCksCisgICAgICAgIHByb3RvLnBheWxv
YWRfc2l6ZSgpICsgaGVhZGVyLmhlYWRlckxlbmd0aCArIGhlYWRlci5wYWRkaW5nTGVuZ3RoKTsK
KyAgfQorCisgIGNvbnN0IHNpemVfdCBudW1iZXJfb2ZfZGVsdGFzID0KKyAgICAgIHByb3RvLmhh
c19udW1iZXJfb2ZfZGVsdGFzKCkgPyBwcm90by5udW1iZXJfb2ZfZGVsdGFzKCkgOiAwdTsKKyAg
aWYgKG51bWJlcl9vZl9kZWx0YXMgPT0gMCkgeworICAgIHJldHVybjsKKyAgfQorCisgIC8vIHRp
bWVzdGFtcF9tcyAoZXZlbnQpCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
Pj4gdGltZXN0YW1wX21zX3ZhbHVlcyA9CisgICAgICBEZWNvZGVEZWx0YXMocHJvdG8udGltZXN0
YW1wX21zX2RlbHRhcygpLAorICAgICAgICAgICAgICAgICAgIFRvVW5zaWduZWQocHJvdG8udGlt
ZXN0YW1wX21zKCkpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHRpbWVzdGFt
cF9tc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBtYXJrZXIgKFJU
UCBiYXNlKQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IG1hcmtlcl92
YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLm1hcmtlcl9kZWx0YXMoKSwgcHJvdG8u
bWFya2VyKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEobWFya2VyX3ZhbHVl
cy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIHBheWxvYWRfdHlwZSAoUlRQIGJh
c2UpCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gcGF5bG9hZF90eXBl
X3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3RvLnBheWxvYWRfdHlwZV9kZWx0YXMo
KSwgcHJvdG8ucGF5bG9hZF90eXBlKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tf
RVEocGF5bG9hZF90eXBlX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8v
IHNlcXVlbmNlX251bWJlciAoUlRQIGJhc2UpCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90Pj4gc2VxdWVuY2VfbnVtYmVyX3ZhbHVlcyA9CisgICAgICBEZWNvZGVEZWx0YXMo
cHJvdG8uc2VxdWVuY2VfbnVtYmVyX2RlbHRhcygpLCBwcm90by5zZXF1ZW5jZV9udW1iZXIoKSwK
KyAgICAgICAgICAgICAgICAgICBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHNl
cXVlbmNlX251bWJlcl92YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBy
dHBfdGltZXN0YW1wIChSVFAgYmFzZSkKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+PiBydHBfdGltZXN0YW1wX3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3Rv
LnJ0cF90aW1lc3RhbXBfZGVsdGFzKCksIHByb3RvLnJ0cF90aW1lc3RhbXAoKSwgbnVtYmVyX29m
X2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShydHBfdGltZXN0YW1wX3ZhbHVlcy5zaXplKCksIG51
bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIHNzcmMgKFJUUCBiYXNlKQorICBzdGQ6OnZlY3Rvcjxh
YnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHNzcmNfdmFsdWVzID0KKyAgICAgIERlY29kZURlbHRh
cyhwcm90by5zc3JjX2RlbHRhcygpLCBwcm90by5zc3JjKCksIG51bWJlcl9vZl9kZWx0YXMpOwor
ICBSVENfQ0hFQ0tfRVEoc3NyY192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKwor
ICAvLyBwYXlsb2FkX3NpemUgKFJUUCBiYXNlKQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4+IHBheWxvYWRfc2l6ZV92YWx1ZXMgPSBEZWNvZGVEZWx0YXMoCisgICAgICBw
cm90by5wYXlsb2FkX3NpemVfZGVsdGFzKCksIHByb3RvLnBheWxvYWRfc2l6ZSgpLCBudW1iZXJf
b2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHBheWxvYWRfc2l6ZV92YWx1ZXMuc2l6ZSgpLCBu
dW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBoZWFkZXJfc2l6ZSAoUlRQIGJhc2UpCisgIHN0ZDo6
dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gaGVhZGVyX3NpemVfdmFsdWVzID0gRGVj
b2RlRGVsdGFzKAorICAgICAgcHJvdG8uaGVhZGVyX3NpemVfZGVsdGFzKCksIHByb3RvLmhlYWRl
cl9zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEoaGVhZGVyX3NpemVf
dmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gcGFkZGluZ19zaXplIChS
VFAgYmFzZSkKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBwYWRkaW5n
X3NpemVfdmFsdWVzID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJvdG8ucGFkZGluZ19zaXplX2Rl
bHRhcygpLCBwcm90by5wYWRkaW5nX3NpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19D
SEVDS19FUShwYWRkaW5nX3NpemVfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisK
KyAgLy8gdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciAoUlRQIGV4dGVuc2lvbikKKyAgc3RkOjp2
ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVy
X3ZhbHVlczsKKyAgeworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlX3Ry
YW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgPQorICAgICAgICBwcm90by5oYXNfdHJhbnNwb3J0X3Nl
cXVlbmNlX251bWJlcigpCisgICAgICAgICAgICA/IHByb3RvLnRyYW5zcG9ydF9zZXF1ZW5jZV9u
dW1iZXIoKQorICAgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgICB0
cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyX3ZhbHVlcyA9CisgICAgICAgIERlY29kZURlbHRhcyhw
cm90by50cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyX2RlbHRhcygpLAorICAgICAgICAgICAgICAg
ICAgICAgYmFzZV90cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyLCBudW1iZXJfb2ZfZGVsdGFzKTsK
KyAgICBSVENfQ0hFQ0tfRVEodHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl92YWx1ZXMuc2l6ZSgp
LCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgfQorCisgIC8vIHRyYW5zbWlzc2lvbl90aW1lX29mZnNl
dCAoUlRQIGV4dGVuc2lvbikKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+
PiB0cmFuc21pc3Npb25fdGltZV9vZmZzZXRfdmFsdWVzOworICB7CisgICAgY29uc3QgYWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+IHVuc2lnbmVkX2Jhc2VfdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0
ID0KKyAgICAgICAgcHJvdG8uaGFzX3RyYW5zbWlzc2lvbl90aW1lX29mZnNldCgpCisgICAgICAg
ICAgICA/IFRvVW5zaWduZWQocHJvdG8udHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0KCkpCisgICAg
ICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICAgIHRyYW5zbWlzc2lvbl90
aW1lX29mZnNldF92YWx1ZXMgPQorICAgICAgICBEZWNvZGVEZWx0YXMocHJvdG8udHJhbnNtaXNz
aW9uX3RpbWVfb2Zmc2V0X2RlbHRhcygpLAorICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWRf
YmFzZV90cmFuc21pc3Npb25fdGltZV9vZmZzZXQsIG51bWJlcl9vZl9kZWx0YXMpOworICAgIFJU
Q19DSEVDS19FUSh0cmFuc21pc3Npb25fdGltZV9vZmZzZXRfdmFsdWVzLnNpemUoKSwgbnVtYmVy
X29mX2RlbHRhcyk7CisgIH0KKworICAvLyBhYnNvbHV0ZV9zZW5kX3RpbWUgKFJUUCBleHRlbnNp
b24pCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gYWJzb2x1dGVfc2Vu
ZF90aW1lX3ZhbHVlczsKKyAgeworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBi
YXNlX2Fic29sdXRlX3NlbmRfdGltZSA9CisgICAgICAgIHByb3RvLmhhc19hYnNvbHV0ZV9zZW5k
X3RpbWUoKSA/IHByb3RvLmFic29sdXRlX3NlbmRfdGltZSgpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICAgIGFi
c29sdXRlX3NlbmRfdGltZV92YWx1ZXMgPQorICAgICAgICBEZWNvZGVEZWx0YXMocHJvdG8uYWJz
b2x1dGVfc2VuZF90aW1lX2RlbHRhcygpLCBiYXNlX2Fic29sdXRlX3NlbmRfdGltZSwKKyAgICAg
ICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kZWx0YXMpOworICAgIFJUQ19DSEVDS19FUShhYnNv
bHV0ZV9zZW5kX3RpbWVfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIH0KKwor
ICAvLyB2aWRlb19yb3RhdGlvbiAoUlRQIGV4dGVuc2lvbikKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+PiB2aWRlb19yb3RhdGlvbl92YWx1ZXM7CisgIHsKKyAgICBjb25z
dCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZV92aWRlb19yb3RhdGlvbiA9CisgICAgICAg
IHByb3RvLmhhc192aWRlb19yb3RhdGlvbigpID8gcHJvdG8udmlkZW9fcm90YXRpb24oKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
PigpOworICAgIHZpZGVvX3JvdGF0aW9uX3ZhbHVlcyA9IERlY29kZURlbHRhcyhwcm90by52aWRl
b19yb3RhdGlvbl9kZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZV92aWRlb19yb3RhdGlvbiwgbnVtYmVyX29mX2RlbHRhcyk7CisgICAgUlRDX0NI
RUNLX0VRKHZpZGVvX3JvdGF0aW9uX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOwor
ICB9CisKKyAgLy8gYXVkaW9fbGV2ZWwgKFJUUCBleHRlbnNpb24pCisgIHN0ZDo6dmVjdG9yPGFi
c2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gYXVkaW9fbGV2ZWxfdmFsdWVzOworICB7CisgICAgY29u
c3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2VfYXVkaW9fbGV2ZWwgPQorICAgICAgICBw
cm90by5oYXNfYXVkaW9fbGV2ZWwoKSA/IHByb3RvLmF1ZGlvX2xldmVsKCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgICBh
dWRpb19sZXZlbF92YWx1ZXMgPSBEZWNvZGVEZWx0YXMocHJvdG8uYXVkaW9fbGV2ZWxfZGVsdGFz
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfYXVkaW9fbGV2
ZWwsIG51bWJlcl9vZl9kZWx0YXMpOworICAgIFJUQ19DSEVDS19FUShhdWRpb19sZXZlbF92YWx1
ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgfQorCisgIC8vIHZvaWNlX2FjdGl2aXR5
IChSVFAgZXh0ZW5zaW9uKQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+
IHZvaWNlX2FjdGl2aXR5X3ZhbHVlczsKKyAgeworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90PiBiYXNlX3ZvaWNlX2FjdGl2aXR5ID0KKyAgICAgICAgcHJvdG8uaGFzX3ZvaWNlX2Fj
dGl2aXR5KCkgPyBwcm90by52b2ljZV9hY3Rpdml0eSgpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgICAgdm9pY2VfYWN0
aXZpdHlfdmFsdWVzID0gRGVjb2RlRGVsdGFzKHByb3RvLnZvaWNlX2FjdGl2aXR5X2RlbHRhcygp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX3ZvaWNlX2Fj
dGl2aXR5LCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgICBSVENfQ0hFQ0tfRVEodm9pY2VfYWN0aXZp
dHlfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIH0KKworICAvLyBEZWx0YSBk
ZWNvZGluZworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlcl9vZl9kZWx0YXM7ICsraSkg
eworICAgIFJUQ19DSEVDSyh0aW1lc3RhbXBfbXNfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAg
ICBSVENfQ0hFQ0sobWFya2VyX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgUlRDX0NIRUNL
KHBheWxvYWRfdHlwZV92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDSyhzZXF1
ZW5jZV9udW1iZXJfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBSVENfQ0hFQ0socnRwX3Rp
bWVzdGFtcF92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDSyhzc3JjX3ZhbHVl
c1tpXS5oYXNfdmFsdWUoKSk7CisgICAgUlRDX0NIRUNLKHBheWxvYWRfc2l6ZV92YWx1ZXNbaV0u
aGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDSyhoZWFkZXJfc2l6ZV92YWx1ZXNbaV0uaGFzX3Zh
bHVlKCkpOworICAgIFJUQ19DSEVDSyhwYWRkaW5nX3NpemVfdmFsdWVzW2ldLmhhc192YWx1ZSgp
KTsKKworICAgIGludDY0X3QgdGltZXN0YW1wX21zOworICAgIFJUQ19DSEVDSyhUb1NpZ25lZCh0
aW1lc3RhbXBfbXNfdmFsdWVzW2ldLnZhbHVlKCksICZ0aW1lc3RhbXBfbXMpKTsKKworICAgIFJU
UEhlYWRlciBoZWFkZXI7CisgICAgaGVhZGVyLm1hcmtlckJpdCA9IHJ0Yzo6Y2hlY2tlZF9jYXN0
PGJvb2w+KCptYXJrZXJfdmFsdWVzW2ldKTsKKyAgICBoZWFkZXIucGF5bG9hZFR5cGUgPSBydGM6
OmNoZWNrZWRfY2FzdDx1aW50OF90PigqcGF5bG9hZF90eXBlX3ZhbHVlc1tpXSk7CisgICAgaGVh
ZGVyLnNlcXVlbmNlTnVtYmVyID0KKyAgICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8dWludDE2X3Q+
KCpzZXF1ZW5jZV9udW1iZXJfdmFsdWVzW2ldKTsKKyAgICBoZWFkZXIudGltZXN0YW1wID0gcnRj
OjpjaGVja2VkX2Nhc3Q8dWludDMyX3Q+KCpydHBfdGltZXN0YW1wX3ZhbHVlc1tpXSk7CisgICAg
aGVhZGVyLnNzcmMgPSBydGM6OmNoZWNrZWRfY2FzdDx1aW50MzJfdD4oKnNzcmNfdmFsdWVzW2ld
KTsKKyAgICBoZWFkZXIubnVtQ1NSQ3MgPSAwOyAgLy8gVE9ETyh0ZXJlbGl1cyk6IEltcGxlbWVu
dCBDU1JDLgorICAgIGhlYWRlci5wYWRkaW5nTGVuZ3RoID0gcnRjOjpjaGVja2VkX2Nhc3Q8c2l6
ZV90PigqcGFkZGluZ19zaXplX3ZhbHVlc1tpXSk7CisgICAgaGVhZGVyLmhlYWRlckxlbmd0aCA9
IHJ0Yzo6Y2hlY2tlZF9jYXN0PHNpemVfdD4oKmhlYWRlcl9zaXplX3ZhbHVlc1tpXSk7CisgICAg
Ly8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBpbXBsZW1lbnQgcGF5bG9hZF90eXBlX2ZyZXF1
ZW5jeT8KKyAgICBpZiAodHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl92YWx1ZXMuc2l6ZSgpID4g
aSAmJgorICAgICAgICB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyX3ZhbHVlc1tpXS5oYXNfdmFs
dWUoKSkgeworICAgICAgaGVhZGVyLmV4dGVuc2lvbi5oYXNUcmFuc3BvcnRTZXF1ZW5jZU51bWJl
ciA9IHRydWU7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVy
ID0gcnRjOjpjaGVja2VkX2Nhc3Q8dWludDE2X3Q+KAorICAgICAgICAgIHRyYW5zcG9ydF9zZXF1
ZW5jZV9udW1iZXJfdmFsdWVzW2ldLnZhbHVlKCkpOworICAgIH0KKyAgICBpZiAodHJhbnNtaXNz
aW9uX3RpbWVfb2Zmc2V0X3ZhbHVlcy5zaXplKCkgPiBpICYmCisgICAgICAgIHRyYW5zbWlzc2lv
bl90aW1lX29mZnNldF92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIGhlYWRlci5leHRl
bnNpb24uaGFzVHJhbnNtaXNzaW9uVGltZU9mZnNldCA9IHRydWU7CisgICAgICBpbnQzMl90IHRy
YW5zbWlzc2lvbl90aW1lX29mZnNldDsKKyAgICAgIFJUQ19DSEVDSyhUb1NpZ25lZCh0cmFuc21p
c3Npb25fdGltZV9vZmZzZXRfdmFsdWVzW2ldLnZhbHVlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJnRyYW5zbWlzc2lvbl90aW1lX29mZnNldCkpOworICAgICAgaGVhZGVyLmV4dGVuc2lv
bi50cmFuc21pc3Npb25UaW1lT2Zmc2V0ID0gdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0OworICAg
IH0KKyAgICBpZiAoYWJzb2x1dGVfc2VuZF90aW1lX3ZhbHVlcy5zaXplKCkgPiBpICYmCisgICAg
ICAgIGFic29sdXRlX3NlbmRfdGltZV92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIGhl
YWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5kVGltZSA9IHRydWU7CisgICAgICBoZWFkZXIu
ZXh0ZW5zaW9uLmFic29sdXRlU2VuZFRpbWUgPQorICAgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0
PHVpbnQzMl90PihhYnNvbHV0ZV9zZW5kX3RpbWVfdmFsdWVzW2ldLnZhbHVlKCkpOworICAgIH0K
KyAgICBpZiAodmlkZW9fcm90YXRpb25fdmFsdWVzLnNpemUoKSA+IGkgJiYKKyAgICAgICAgdmlk
ZW9fcm90YXRpb25fdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBoZWFkZXIuZXh0ZW5z
aW9uLmhhc1ZpZGVvUm90YXRpb24gPSB0cnVlOworICAgICAgaGVhZGVyLmV4dGVuc2lvbi52aWRl
b1JvdGF0aW9uID0gQ29udmVydENWT0J5dGVUb1ZpZGVvUm90YXRpb24oCisgICAgICAgICAgcnRj
OjpjaGVja2VkX2Nhc3Q8dWludDhfdD4odmlkZW9fcm90YXRpb25fdmFsdWVzW2ldLnZhbHVlKCkp
KTsKKyAgICB9CisgICAgaWYgKGF1ZGlvX2xldmVsX3ZhbHVlcy5zaXplKCkgPiBpICYmIGF1ZGlv
X2xldmVsX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSkgeworICAgICAgUlRDX0NIRUNLKHZvaWNlX2Fj
dGl2aXR5X3ZhbHVlcy5zaXplKCkgPiBpICYmCisgICAgICAgICAgICAgICAgdm9pY2VfYWN0aXZp
dHlfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICAgIGhlYWRlci5leHRlbnNpb24uaGFzQXVk
aW9MZXZlbCA9IHRydWU7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLnZvaWNlQWN0aXZpdHkgPQor
ICAgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PGJvb2w+KHZvaWNlX2FjdGl2aXR5X3ZhbHVlc1tp
XS52YWx1ZSgpKTsKKyAgICAgIGNvbnN0IHVpbnQ4X3QgYXVkaW9fbGV2ZWwgPQorICAgICAgICAg
IHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQ4X3Q+KGF1ZGlvX2xldmVsX3ZhbHVlc1tpXS52YWx1ZSgp
KTsKKyAgICAgIFJUQ19DSEVDS19MRShhdWRpb19sZXZlbCwgMHg3RnUpOworICAgICAgaGVhZGVy
LmV4dGVuc2lvbi5hdWRpb0xldmVsID0gYXVkaW9fbGV2ZWw7CisgICAgfSBlbHNlIHsKKyAgICAg
IFJUQ19DSEVDSyh2b2ljZV9hY3Rpdml0eV92YWx1ZXMuc2l6ZSgpIDw9IGkgfHwKKyAgICAgICAg
ICAgICAgICAhdm9pY2VfYWN0aXZpdHlfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICB9Cisg
ICAgKCpydHBfcGFja2V0c19tYXApW2hlYWRlci5zc3JjXS5lbXBsYWNlX2JhY2soCisgICAgICAg
IDEwMDAgKiB0aW1lc3RhbXBfbXMsIGhlYWRlciwgaGVhZGVyLmhlYWRlckxlbmd0aCwKKyAgICAg
ICAgcGF5bG9hZF9zaXplX3ZhbHVlc1tpXS52YWx1ZSgpICsgaGVhZGVyLmhlYWRlckxlbmd0aCAr
CisgICAgICAgICAgICBoZWFkZXIucGFkZGluZ0xlbmd0aCk7CisgIH0KK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFByb3RvVHlwZSwgdHlwZW5hbWUgTG9nZ2VkVHlwZT4KK3ZvaWQgU3RvcmVSdGNw
UGFja2V0cyhjb25zdCBQcm90b1R5cGUmIHByb3RvLAorICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dmVjdG9yPExvZ2dlZFR5cGU+KiBydGNwX3BhY2tldHMpIHsKKyAgUlRDX0NIRUNLKHByb3Rv
Lmhhc190aW1lc3RhbXBfbXMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfcmF3X3BhY2tldCgp
KTsKKworICAvLyBCYXNlIGV2ZW50CisgIHJ0Y3BfcGFja2V0cy0+ZW1wbGFjZV9iYWNrKHByb3Rv
LnRpbWVzdGFtcF9tcygpICogMTAwMCwgcHJvdG8ucmF3X3BhY2tldCgpKTsKKworICBjb25zdCBz
aXplX3QgbnVtYmVyX29mX2RlbHRhcyA9CisgICAgICBwcm90by5oYXNfbnVtYmVyX29mX2RlbHRh
cygpID8gcHJvdG8ubnVtYmVyX29mX2RlbHRhcygpIDogMHU7CisgIGlmIChudW1iZXJfb2ZfZGVs
dGFzID09IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyB0aW1lc3RhbXBfbXMKKyAgc3Rk
Ojp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB0aW1lc3RhbXBfbXNfdmFsdWVzID0K
KyAgICAgIERlY29kZURlbHRhcyhwcm90by50aW1lc3RhbXBfbXNfZGVsdGFzKCksCisgICAgICAg
ICAgICAgICAgICAgVG9VbnNpZ25lZChwcm90by50aW1lc3RhbXBfbXMoKSksIG51bWJlcl9vZl9k
ZWx0YXMpOworICBSVENfQ0hFQ0tfRVEodGltZXN0YW1wX21zX3ZhbHVlcy5zaXplKCksIG51bWJl
cl9vZl9kZWx0YXMpOworCisgIC8vIHJhd19wYWNrZXQKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19y
YXdfcGFja2V0X2Jsb2JzKCkpOworICBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4gcmF3
X3BhY2tldF92YWx1ZXMgPQorICAgICAgRGVjb2RlQmxvYnMocHJvdG8ucmF3X3BhY2tldF9ibG9i
cygpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHJhd19wYWNrZXRfdmFsdWVz
LnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gRGVsdGEgZGVjb2RpbmcKKyAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJfb2ZfZGVsdGFzOyArK2kpIHsKKyAgICBSVENfQ0hF
Q0sodGltZXN0YW1wX21zX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgaW50NjRfdCB0aW1l
c3RhbXBfbXM7CisgICAgUlRDX0NIRUNLKFRvU2lnbmVkKHRpbWVzdGFtcF9tc192YWx1ZXNbaV0u
dmFsdWUoKSwgJnRpbWVzdGFtcF9tcykpOworCisgICAgcnRjcF9wYWNrZXRzLT5lbXBsYWNlX2Jh
Y2soCisgICAgICAgIDEwMDAgKiB0aW1lc3RhbXBfbXMsCisgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHJhd19wYWNrZXRfdmFsdWVzW2ldLmRhdGEoKSksCisgICAgICAg
IHJhd19wYWNrZXRfdmFsdWVzW2ldLnNpemUoKSk7CisgIH0KK30KKwogfSAgLy8gbmFtZXNwYWNl
CiAKIExvZ2dlZFJ0Y3BQYWNrZXQ6OkxvZ2dlZFJ0Y3BQYWNrZXQodWludDY0X3QgdGltZXN0YW1w
X3VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBw
YWNrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0b3RhbF9s
ZW5ndGgpCiAgICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwgcmF3X2RhdGEocGFja2V0
LCBwYWNrZXQgKyB0b3RhbF9sZW5ndGgpIHt9CitMb2dnZWRSdGNwUGFja2V0OjpMb2dnZWRSdGNw
UGFja2V0KHVpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhY2tldCkKKyAgICA6IHRpbWVzdGFtcF91cyh0
aW1lc3RhbXBfdXMpLCByYXdfZGF0YShwYWNrZXQuc2l6ZSgpKSB7CisgIG1lbWNweShyYXdfZGF0
YS5kYXRhKCksIHBhY2tldC5kYXRhKCksIHBhY2tldC5zaXplKCkpOworfQogTG9nZ2VkUnRjcFBh
Y2tldDo6TG9nZ2VkUnRjcFBhY2tldChjb25zdCBMb2dnZWRSdGNwUGFja2V0JiByaHMpID0gZGVm
YXVsdDsKIExvZ2dlZFJ0Y3BQYWNrZXQ6On5Mb2dnZWRSdGNwUGFja2V0KCkgPSBkZWZhdWx0Owog
CitMb2dnZWRWaWRlb1NlbmRDb25maWc6OkxvZ2dlZFZpZGVvU2VuZENvbmZpZygpID0gZGVmYXVs
dDsKIExvZ2dlZFZpZGVvU2VuZENvbmZpZzo6TG9nZ2VkVmlkZW9TZW5kQ29uZmlnKAogICAgIGlu
dDY0X3QgdGltZXN0YW1wX3VzLAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFt
Q29uZmlnPiYgY29uZmlncykKQEAgLTM2MSw3ICs4MDAsNiBAQCBQYXJzZWRSdGNFdmVudExvZ05l
dzo6UGFyc2VkUnRjRXZlbnRMb2dOZXcoCiB9CiAKIHZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OkNsZWFyKCkgewotICBldmVudHNfLmNsZWFyKCk7CiAgIGRlZmF1bHRfZXh0ZW5zaW9uX21hcF8g
PSBHZXREZWZhdWx0SGVhZGVyRXh0ZW5zaW9uTWFwKCk7CiAKICAgaW5jb21pbmdfcnR4X3NzcmNz
Xy5jbGVhcigpOwpAQCAtNDc4LDkgKzkxNiw4IEBAIGJvb2wgUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OlBhcnNlU3RyZWFtKAogCiBib29sIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpQYXJzZVN0cmVhbUlu
dGVybmFsKAogICAgIHN0ZDo6aXN0cmVhbSYgc3RyZWFtKSB7ICAvLyBuby1wcmVzdWJtaXQtY2hl
Y2sgVE9ETyh3ZWJydGM6ODk4MikKLSAgY29uc3Qgc2l6ZV90IGtNYXhFdmVudFNpemUgPSAoMXUg
PDwgMTYpIC0gMTsKLSAgY29uc3Qgc2l6ZV90IGtNYXhWYXJpbnRTaXplID0gMTA7Ci0gIHN0ZDo6
dmVjdG9yPGNoYXI+IGJ1ZmZlcihrTWF4RXZlbnRTaXplICsgMiAqIGtNYXhWYXJpbnRTaXplKTsK
KyAgY29uc3RleHByIHVpbnQ2NF90IGtNYXhFdmVudFNpemUgPSAxMDAwMDAwMDsgIC8vIFNhbml0
eSBjaGVjay4KKyAgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVyKDB4RkZGRik7CiAKICAgUlRDX0RD
SEVDSyhzdHJlYW0uZ29vZCgpKTsKIApAQCAtNDkxLDEwICs5MjgsMTIgQEAgYm9vbCBQYXJzZWRS
dGNFdmVudExvZ05ldzo6UGFyc2VTdHJlYW1JbnRlcm5hbCgKICAgICAgIGJyZWFrOwogICAgIH0K
IAotICAgIC8vIFJlYWQgdGhlIG5leHQgbWVzc2FnZSB0YWcuIFRoZSB0YWcgbnVtYmVyIGlzIGRl
ZmluZWQgYXMKLSAgICAvLyAoZmllbGRudW1iZXIgPDwgMykgfCB3aXJlX3R5cGUuIEluIG91ciBj
YXNlLCB0aGUgZmllbGQgbnVtYmVyIGlzCi0gICAgLy8gc3VwcG9zZWQgdG8gYmUgMSBhbmQgdGhl
IHdpcmUgdHlwZSBmb3IgYSBsZW5ndGgtZGVsaW1pdGVkIGZpZWxkIGlzIDIuCi0gICAgY29uc3Qg
dWludDY0X3Qga0V4cGVjdGVkVjFUYWcgPSAoMSA8PCAzKSB8IDI7CisgICAgLy8gUmVhZCB0aGUg
bmV4dCBtZXNzYWdlIHRhZy4gUHJvdG9idWYgZGVmaW5lcyB0aGUgbWVzc2FnZSB0YWcgYXMKKyAg
ICAvLyAoZmllbGRfbnVtYmVyIDw8IDMpIHwgd2lyZV90eXBlLiBJbiB0aGUgbGVnYWN5IGVuY29k
aW5nLCB0aGUgZmllbGQgbnVtYmVyCisgICAgLy8gaXMgc3VwcG9zZWQgdG8gYmUgMSBhbmQgdGhl
IHdpcmUgdHlwZSBmb3IgYSBsZW5ndGgtZGVsaW1pdGVkIGZpZWxkIGlzIDIuCisgICAgLy8gSW4g
dGhlIG5ldyBlbmNvZGluZyB3ZSBzdGlsbCBleHBlY3QgdGhlIHdpcmUgdHlwZSB0byBiZSAyLCBi
dXQgdGhlIGZpZWxkCisgICAgLy8gbnVtYmVyIHdpbGwgYmUgZ3JlYXRlciB0aGFuIDEuCisgICAg
Y29uc3RleHByIHVpbnQ2NF90IGtFeHBlY3RlZFYxVGFnID0gKDEgPDwgMykgfCAyOwogICAgIHNp
emVfdCBieXRlc193cml0dGVuID0gMDsKICAgICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gdGFn
ID0KICAgICAgICAgUGFyc2VWYXJJbnQoc3RyZWFtLCBidWZmZXIuZGF0YSgpLCAmYnl0ZXNfd3Jp
dHRlbik7CkBAIC01MDIsOSArOTQxLDEzIEBAIGJvb2wgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlBh
cnNlU3RyZWFtSW50ZXJuYWwoCiAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpCiAgICAgICAgICAg
PDwgIk1pc3NpbmcgZmllbGQgdGFnIGZyb20gYmVnaW5uaW5nIG9mIHByb3RvYnVmIGV2ZW50LiI7
CiAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmICgqdGFnICE9IGtFeHBlY3RlZFYx
VGFnKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAgICAgPDwgIlVuZXhwZWN0
ZWQgZmllbGQgdGFnIGF0IGJlZ2lubmluZyBvZiBwcm90b2J1ZiBldmVudC4iOworICAgIH0KKyAg
ICBjb25zdGV4cHIgdWludDY0X3Qga1dpcmVUeXBlTWFzayA9IDB4MDc7CisgICAgY29uc3QgdWlu
dDY0X3Qgd2lyZV90eXBlID0gKnRhZyAmIGtXaXJlVHlwZU1hc2s7CisgICAgaWYgKHdpcmVfdHlw
ZSAhPSAyKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJFeHBlY3RlZCBmaWVsZCB0
YWcgd2l0aCB3aXJlIHR5cGUgMiAobGVuZ3RoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlbGltaXRlZCBtZXNzYWdlKS4gRm91bmQgd2lyZSB0eXBlICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgd2lyZV90eXBlOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtNTIwLDYgKzk2Myw4IEBAIGJvb2wgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlBhcnNlU3RyZWFt
SW50ZXJuYWwoCiAgICAgfQogCiAgICAgLy8gUmVhZCB0aGUgbmV4dCBwcm90b2J1ZiBldmVudCB0
byBhIHRlbXBvcmFyeSBjaGFyIGJ1ZmZlci4KKyAgICBpZiAoYnVmZmVyLnNpemUoKSA8IGJ5dGVz
X3dyaXR0ZW4gKyAqbWVzc2FnZV9sZW5ndGgpCisgICAgICBidWZmZXIucmVzaXplKGJ5dGVzX3dy
aXR0ZW4gKyAqbWVzc2FnZV9sZW5ndGgpOwogICAgIHN0cmVhbS5yZWFkKGJ1ZmZlci5kYXRhKCkg
KyBieXRlc193cml0dGVuLCAqbWVzc2FnZV9sZW5ndGgpOwogICAgIGlmIChzdHJlYW0uZ2NvdW50
KCkgIT0gc3RhdGljX2Nhc3Q8aW50PigqbWVzc2FnZV9sZW5ndGgpKSB7CiAgICAgICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcmVhZCBwcm90b2J1ZiBtZXNzYWdlIGZyb20gZmls
ZS4iOwpAQCAtNTI3LDIxICs5NzIsMzIgQEAgYm9vbCBQYXJzZWRSdGNFdmVudExvZ05ldzo6UGFy
c2VTdHJlYW1JbnRlcm5hbCgKICAgICB9CiAgICAgc2l6ZV90IGJ1ZmZlcl9zaXplID0gYnl0ZXNf
d3JpdHRlbiArICptZXNzYWdlX2xlbmd0aDsKIAotICAgIC8vIFBhcnNlIHRoZSBwcm90b2J1ZiBl
dmVudCBmcm9tIHRoZSBidWZmZXIuCi0gICAgcnRjbG9nOjpFdmVudFN0cmVhbSBldmVudF9zdHJl
YW07Ci0gICAgaWYgKCFldmVudF9zdHJlYW0uUGFyc2VGcm9tQXJyYXkoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyX3NpemUpKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8g
cGFyc2UgcHJvdG9idWYgbWVzc2FnZS4iOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAg
ICBpZiAoKnRhZyA9PSBrRXhwZWN0ZWRWMVRhZykgeworICAgICAgLy8gUGFyc2UgdGhlIHByb3Rv
YnVmIGV2ZW50IGZyb20gdGhlIGJ1ZmZlci4KKyAgICAgIHJ0Y2xvZzo6RXZlbnRTdHJlYW0gZXZl
bnRfc3RyZWFtOworICAgICAgaWYgKCFldmVudF9zdHJlYW0uUGFyc2VGcm9tQXJyYXkoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyX3NpemUpKSB7CisgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykKKyAg
ICAgICAgICAgIDw8ICJGYWlsZWQgdG8gcGFyc2UgbGVnYWN5LWZvcm1hdCBwcm90b2J1ZiBtZXNz
YWdlLiI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KIAotICAgIFJUQ19DSEVDS19F
UShldmVudF9zdHJlYW0uc3RyZWFtX3NpemUoKSwgMSk7Ci0gICAgU3RvcmVQYXJzZWRFdmVudChl
dmVudF9zdHJlYW0uc3RyZWFtKDApKTsKLSAgICBldmVudHNfLnB1c2hfYmFjayhldmVudF9zdHJl
YW0uc3RyZWFtKDApKTsKKyAgICAgIFJUQ19DSEVDS19FUShldmVudF9zdHJlYW0uc3RyZWFtX3Np
emUoKSwgMSk7CisgICAgICBTdG9yZVBhcnNlZExlZ2FjeUV2ZW50KGV2ZW50X3N0cmVhbS5zdHJl
YW0oMCkpOworICAgIH0gZWxzZSB7CisgICAgICAvLyBQYXJzZSB0aGUgcHJvdG9idWYgZXZlbnQg
ZnJvbSB0aGUgYnVmZmVyLgorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0gZXZlbnRfc3RyZWFt
OworICAgICAgaWYgKCFldmVudF9zdHJlYW0uUGFyc2VGcm9tQXJyYXkoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyX3NpemUpKSB7CisgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0
byBwYXJzZSBuZXctZm9ybWF0IHByb3RvYnVmIG1lc3NhZ2UuIjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgfQorICAgICAgU3RvcmVQYXJzZWROZXdGb3JtYXRFdmVudChldmVudF9zdHJl
YW0pOworICAgIH0KICAgfQogICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBQYXJzZWRSdGNFdmVu
dExvZ05ldzo6U3RvcmVQYXJzZWRFdmVudChjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgewor
dm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVQYXJzZWRMZWdhY3lFdmVudChjb25zdCBy
dGNsb2c6OkV2ZW50JiBldmVudCkgeworICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7CiAg
IGlmIChldmVudC50eXBlKCkgIT0gcnRjbG9nOjpFdmVudDo6VklERU9fUkVDRUlWRVJfQ09ORklH
X0VWRU5UICYmCiAgICAgICBldmVudC50eXBlKCkgIT0gcnRjbG9nOjpFdmVudDo6VklERU9fU0VO
REVSX0NPTkZJR19FVkVOVCAmJgogICAgICAgZXZlbnQudHlwZSgpICE9IHJ0Y2xvZzo6RXZlbnQ6
OkFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCAmJgpAQCAtNTU0LDU1ICsxMDEwLDYzIEBAIHZv
aWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlUGFyc2VkRXZlbnQoY29uc3QgcnRjbG9nOjpF
dmVudCYgZXZlbnQpIHsKICAgICBsYXN0X3RpbWVzdGFtcF8gPSBzdGQ6Om1heChsYXN0X3RpbWVz
dGFtcF8sIHRpbWVzdGFtcCk7CiAgIH0KIAotICBzd2l0Y2ggKEdldEV2ZW50VHlwZShldmVudCkp
IHsKLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlZJREVPX1JFQ0VJ
VkVSX0NPTkZJR19FVkVOVDogeworICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgeworICAgIGNhc2Ug
cnRjbG9nOjpFdmVudDo6VklERU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UOiB7CiAgICAgICBydGNs
b2c6OlN0cmVhbUNvbmZpZyBjb25maWcgPSBHZXRWaWRlb1JlY2VpdmVDb25maWcoZXZlbnQpOwog
ICAgICAgdmlkZW9fcmVjdl9jb25maWdzXy5lbXBsYWNlX2JhY2soR2V0VGltZXN0YW1wKGV2ZW50
KSwgY29uZmlnKTsKLSAgICAgIGluY29taW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5y
ZW1vdGVfc3NyY10gPQotICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRw
X2V4dGVuc2lvbnMpOwotICAgICAgLy8gVE9ETyh0ZXJlbGl1cyk6IEkgZG9uJ3QgdW5kZXJzdGFu
ZCB0aGUgcmVhc29uIGZvciBjb25maWd1cmluZyBoZWFkZXIKLSAgICAgIC8vIGV4dGVuc2lvbnMg
Zm9yIHRoZSBsb2NhbCBTU1JDLiBJIHRoaW5rIGl0IHNob3VsZCBiZSByZW1vdmVkLCBidXQgZm9y
Ci0gICAgICAvLyBub3cgSSB3YW50IHRvIHByZXNlcnZlIHRoZSBwcmV2aW91cyBmdW5jdGlvbmFs
aXR5LgotICAgICAgaW5jb21pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29uZmlnLmxvY2FsX3Nz
cmNdID0KLSAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNp
b25zKTsKKyAgICAgIGlmICghY29uZmlnLnJ0cF9leHRlbnNpb25zLmVtcHR5KCkpIHsKKyAgICAg
ICAgaW5jb21pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29uZmlnLnJlbW90ZV9zc3JjXSA9Cisg
ICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKTsK
KyAgICAgICAgLy8gVE9ETyh0ZXJlbGl1cyk6IEkgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgcmVhc29u
IGZvciBjb25maWd1cmluZyBoZWFkZXIKKyAgICAgICAgLy8gZXh0ZW5zaW9ucyBmb3IgdGhlIGxv
Y2FsIFNTUkMuIEkgdGhpbmsgaXQgc2hvdWxkIGJlIHJlbW92ZWQsIGJ1dCBmb3IKKyAgICAgICAg
Ly8gbm93IEkgd2FudCB0byBwcmVzZXJ2ZSB0aGUgcHJldmlvdXMgZnVuY3Rpb25hbGl0eS4KKyAg
ICAgICAgaW5jb21pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29uZmlnLmxvY2FsX3NzcmNdID0K
KyAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4dGVuc2lvbnMp
OworICAgICAgfQogICAgICAgaW5jb21pbmdfdmlkZW9fc3NyY3NfLmluc2VydChjb25maWcucmVt
b3RlX3NzcmMpOwogICAgICAgaW5jb21pbmdfdmlkZW9fc3NyY3NfLmluc2VydChjb25maWcucnR4
X3NzcmMpOwogICAgICAgaW5jb21pbmdfcnR4X3NzcmNzXy5pbnNlcnQoY29uZmlnLnJ0eF9zc3Jj
KTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpF
dmVudFR5cGU6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQ6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6
RXZlbnQ6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQ6IHsKICAgICAgIHN0ZDo6dmVjdG9yPHJ0
Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWdzID0gR2V0VmlkZW9TZW5kQ29uZmlnKGV2ZW50KTsK
ICAgICAgIHZpZGVvX3NlbmRfY29uZmlnc18uZW1wbGFjZV9iYWNrKEdldFRpbWVzdGFtcChldmVu
dCksIGNvbmZpZ3MpOwogICAgICAgZm9yIChjb25zdCBhdXRvJiBjb25maWcgOiBjb25maWdzKSB7
Ci0gICAgICAgIG91dGdvaW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5sb2NhbF9zc3Jj
XSA9Ci0gICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNp
b25zKTsKLSAgICAgICAgb3V0Z29pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29uZmlnLnJ0eF9z
c3JjXSA9Ci0gICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRl
bnNpb25zKTsKKyAgICAgICAgaWYgKCFjb25maWcucnRwX2V4dGVuc2lvbnMuZW1wdHkoKSkgewor
ICAgICAgICAgIG91dGdvaW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5sb2NhbF9zc3Jj
XSA9CisgICAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4dGVu
c2lvbnMpOworICAgICAgICAgIG91dGdvaW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5y
dHhfc3NyY10gPQorICAgICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0
cF9leHRlbnNpb25zKTsKKyAgICAgICAgfQogICAgICAgICBvdXRnb2luZ192aWRlb19zc3Jjc18u
aW5zZXJ0KGNvbmZpZy5sb2NhbF9zc3JjKTsKICAgICAgICAgb3V0Z29pbmdfdmlkZW9fc3NyY3Nf
Lmluc2VydChjb25maWcucnR4X3NzcmMpOwogICAgICAgICBvdXRnb2luZ19ydHhfc3NyY3NfLmlu
c2VydChjb25maWcucnR4X3NzcmMpOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgfQotICAg
IGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QVVESU9fUkVDRUlWRVJfQ09O
RklHX0VWRU5UOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBVURJT19SRUNFSVZFUl9DT05G
SUdfRVZFTlQ6IHsKICAgICAgIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZyA9IEdldEF1ZGlv
UmVjZWl2ZUNvbmZpZyhldmVudCk7CiAgICAgICBhdWRpb19yZWN2X2NvbmZpZ3NfLmVtcGxhY2Vf
YmFjayhHZXRUaW1lc3RhbXAoZXZlbnQpLCBjb25maWcpOwotICAgICAgaW5jb21pbmdfcnRwX2V4
dGVuc2lvbnNfbWFwc19bY29uZmlnLnJlbW90ZV9zc3JjXSA9Ci0gICAgICAgICAgUnRwSGVhZGVy
RXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7Ci0gICAgICBpbmNvbWluZ19ydHBf
ZXh0ZW5zaW9uc19tYXBzX1tjb25maWcubG9jYWxfc3NyY10gPQotICAgICAgICAgIFJ0cEhlYWRl
ckV4dGVuc2lvbk1hcChjb25maWcucnRwX2V4dGVuc2lvbnMpOworICAgICAgaWYgKCFjb25maWcu
cnRwX2V4dGVuc2lvbnMuZW1wdHkoKSkgeworICAgICAgICBpbmNvbWluZ19ydHBfZXh0ZW5zaW9u
c19tYXBzX1tjb25maWcucmVtb3RlX3NzcmNdID0KKyAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVu
c2lvbk1hcChjb25maWcucnRwX2V4dGVuc2lvbnMpOworICAgICAgICBpbmNvbWluZ19ydHBfZXh0
ZW5zaW9uc19tYXBzX1tjb25maWcubG9jYWxfc3NyY10gPQorICAgICAgICAgICAgUnRwSGVhZGVy
RXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7CisgICAgICB9CiAgICAgICBpbmNv
bWluZ19hdWRpb19zc3Jjc18uaW5zZXJ0KGNvbmZpZy5yZW1vdGVfc3NyYyk7CiAgICAgICBicmVh
azsKICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpBVURJ
T19TRU5ERVJfQ09ORklHX0VWRU5UOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBVURJT19T
RU5ERVJfQ09ORklHX0VWRU5UOiB7CiAgICAgICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcg
PSBHZXRBdWRpb1NlbmRDb25maWcoZXZlbnQpOwogICAgICAgYXVkaW9fc2VuZF9jb25maWdzXy5l
bXBsYWNlX2JhY2soR2V0VGltZXN0YW1wKGV2ZW50KSwgY29uZmlnKTsKLSAgICAgIG91dGdvaW5n
X3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5sb2NhbF9zc3JjXSA9Ci0gICAgICAgICAgUnRw
SGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7CisgICAgICBpZiAoIWNv
bmZpZy5ydHBfZXh0ZW5zaW9ucy5lbXB0eSgpKSB7CisgICAgICAgIG91dGdvaW5nX3J0cF9leHRl
bnNpb25zX21hcHNfW2NvbmZpZy5sb2NhbF9zc3JjXSA9CisgICAgICAgICAgICBSdHBIZWFkZXJF
eHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKTsKKyAgICAgIH0KICAgICAgIG91dGdv
aW5nX2F1ZGlvX3NzcmNzXy5pbnNlcnQoY29uZmlnLmxvY2FsX3NzcmMpOwogICAgICAgYnJlYWs7
CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6UlRQX0VW
RU5UOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpSVFBfRVZFTlQ6IHsKICAgICAgIFBhY2tl
dERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgICB1aW50OF90IGhlYWRlcltJUF9QQUNLRVRfU0la
RV07CiAgICAgICBzaXplX3QgaGVhZGVyX2xlbmd0aDsKQEAgLTY0NSw3ICsxMTA5LDcgQEAgdm9p
ZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVQYXJzZWRFdmVudChjb25zdCBydGNsb2c6OkV2
ZW50JiBldmVudCkgewogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFy
c2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6UlRDUF9FVkVOVDogeworICAgIGNhc2UgcnRj
bG9nOjpFdmVudDo6UlRDUF9FVkVOVDogewogICAgICAgUGFja2V0RGlyZWN0aW9uIGRpcmVjdGlv
bjsKICAgICAgIHVpbnQ4X3QgcGFja2V0W0lQX1BBQ0tFVF9TSVpFXTsKICAgICAgIHNpemVfdCB0
b3RhbF9sZW5ndGg7CkBAIC03MzEsMTEzICsxMTk1LDc2IEBAIHZvaWQgUGFyc2VkUnRjRXZlbnRM
b2dOZXc6OlN0b3JlUGFyc2VkRXZlbnQoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIHsKICAg
ICAgIH0KICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpFdmVudFR5cGU6OkxPR19TVEFSVDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6TE9HX1NU
QVJUOiB7CiAgICAgICBzdGFydF9sb2dfZXZlbnRzXy5wdXNoX2JhY2soTG9nZ2VkU3RhcnRFdmVu
dChHZXRUaW1lc3RhbXAoZXZlbnQpKSk7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQ
YXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpMT0dfRU5EOiB7CisgICAgY2FzZSBydGNs
b2c6OkV2ZW50OjpMT0dfRU5EOiB7CiAgICAgICBzdG9wX2xvZ19ldmVudHNfLnB1c2hfYmFjayhM
b2dnZWRTdG9wRXZlbnQoR2V0VGltZXN0YW1wKGV2ZW50KSkpOwogICAgICAgYnJlYWs7CiAgICAg
fQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QVVESU9fUExBWU9V
VF9FVkVOVDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QVVESU9fUExBWU9VVF9FVkVOVDog
ewogICAgICAgTG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQgcGxheW91dF9ldmVudCA9IEdldEF1ZGlv
UGxheW91dChldmVudCk7CiAgICAgICBhdWRpb19wbGF5b3V0X2V2ZW50c19bcGxheW91dF9ldmVu
dC5zc3JjXS5wdXNoX2JhY2socGxheW91dF9ldmVudCk7CiAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpMT1NTX0JBU0VEX0JXRV9V
UERBVEU6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkxPU1NfQkFTRURfQldFX1VQREFURTog
ewogICAgICAgYndlX2xvc3NfdXBkYXRlc18ucHVzaF9iYWNrKEdldExvc3NCYXNlZEJ3ZVVwZGF0
ZShldmVudCkpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRM
b2dOZXc6OkV2ZW50VHlwZTo6REVMQVlfQkFTRURfQldFX1VQREFURTogeworICAgIGNhc2UgcnRj
bG9nOjpFdmVudDo6REVMQVlfQkFTRURfQldFX1VQREFURTogewogICAgICAgYndlX2RlbGF5X3Vw
ZGF0ZXNfLnB1c2hfYmFjayhHZXREZWxheUJhc2VkQndlVXBkYXRlKGV2ZW50KSk7CiAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpB
VURJT19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQ6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6
OkFVRElPX05FVFdPUktfQURBUFRBVElPTl9FVkVOVDogewogICAgICAgTG9nZ2VkQXVkaW9OZXR3
b3JrQWRhcHRhdGlvbkV2ZW50IGFuYV9ldmVudCA9CiAgICAgICAgICAgR2V0QXVkaW9OZXR3b3Jr
QWRhcHRhdGlvbihldmVudCk7CiAgICAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb25fZXZlbnRz
Xy5wdXNoX2JhY2soYW5hX2V2ZW50KTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9DTFVTVEVSX0NSRUFURURf
RVZFTlQ6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkJXRV9QUk9CRV9DTFVTVEVSX0NSRUFU
RURfRVZFTlQ6IHsKICAgICAgIGJ3ZV9wcm9iZV9jbHVzdGVyX2NyZWF0ZWRfZXZlbnRzXy5wdXNo
X2JhY2soCiAgICAgICAgICAgR2V0QndlUHJvYmVDbHVzdGVyQ3JlYXRlZChldmVudCkpOwogICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlw
ZTo6QldFX1BST0JFX0ZBSUxVUkVfRVZFTlQ6IHsKLSAgICAgIGJ3ZV9wcm9iZV9mYWlsdXJlX2V2
ZW50c18ucHVzaF9iYWNrKEdldEJ3ZVByb2JlRmFpbHVyZShldmVudCkpOwotICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QldFX1BS
T0JFX1NVQ0NFU1NfRVZFTlQ6IHsKLSAgICAgIGJ3ZV9wcm9iZV9zdWNjZXNzX2V2ZW50c18ucHVz
aF9iYWNrKEdldEJ3ZVByb2JlU3VjY2VzcyhldmVudCkpOworICAgIGNhc2UgcnRjbG9nOjpFdmVu
dDo6QldFX1BST0JFX1JFU1VMVF9FVkVOVDogeworICAgICAgLy8gUHJvYmUgc3VjY2Vzc2VzIGFu
ZCBmYWlsdXJlcyBhcmUgY3VycmVudGx5IHN0b3JlZCBpbiB0aGUgc2FtZSBwcm90bworICAgICAg
Ly8gbWVzc2FnZSwgd2UgYXJlIG1vdmluZyB0b3dhcmRzIHNlcGFyYXRlIG1lc3NhZ2VzLiBQcm9i
ZSByZXN1bHRzCisgICAgICAvLyB0aGVyZWZvcmUgbmVlZCBzcGVjaWFsIHRyZWF0bWVudCBpbiB0
aGUgcGFyc2VyLgorICAgICAgUlRDX0NIRUNLKGV2ZW50Lmhhc19wcm9iZV9yZXN1bHQoKSk7Cisg
ICAgICBSVENfQ0hFQ0soZXZlbnQucHJvYmVfcmVzdWx0KCkuaGFzX3Jlc3VsdCgpKTsKKyAgICAg
IGlmIChldmVudC5wcm9iZV9yZXN1bHQoKS5yZXN1bHQoKSA9PSBydGNsb2c6OkJ3ZVByb2JlUmVz
dWx0OjpTVUNDRVNTKSB7CisgICAgICAgIGJ3ZV9wcm9iZV9zdWNjZXNzX2V2ZW50c18ucHVzaF9i
YWNrKEdldEJ3ZVByb2JlU3VjY2VzcyhldmVudCkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
YndlX3Byb2JlX2ZhaWx1cmVfZXZlbnRzXy5wdXNoX2JhY2soR2V0QndlUHJvYmVGYWlsdXJlKGV2
ZW50KSk7CisgICAgICB9CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNF
dmVudExvZ05ldzo6RXZlbnRUeXBlOjpBTFJfU1RBVEVfRVZFTlQ6IHsKKyAgICBjYXNlIHJ0Y2xv
Zzo6RXZlbnQ6OkFMUl9TVEFURV9FVkVOVDogewogICAgICAgYWxyX3N0YXRlX2V2ZW50c18ucHVz
aF9iYWNrKEdldEFsclN0YXRlKGV2ZW50KSk7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2Fz
ZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRFX1BBSVJfQ09O
RklHOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpJQ0VfQ0FORElEQVRFX1BBSVJfQ09ORklH
OiB7CiAgICAgICBpY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnc18ucHVzaF9iYWNrKEdldEljZUNh
bmRpZGF0ZVBhaXJDb25maWcoZXZlbnQpKTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNl
IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OklDRV9DQU5ESURBVEVfUEFJUl9FVkVO
VDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlSX0VWRU5UOiB7
CiAgICAgICBpY2VfY2FuZGlkYXRlX3BhaXJfZXZlbnRzXy5wdXNoX2JhY2soR2V0SWNlQ2FuZGlk
YXRlUGFpckV2ZW50KGV2ZW50KSk7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXJz
ZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpVTktOT1dOX0VWRU5UOiB7CisgICAgY2FzZSBy
dGNsb2c6OkV2ZW50OjpVTktOT1dOX0VWRU5UOiB7CiAgICAgICBicmVhazsKICAgICB9CiAgIH0K
IH0KIAotc2l6ZV90IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXROdW1iZXJPZkV2ZW50cygpIGNv
bnN0IHsKLSAgcmV0dXJuIGV2ZW50c18uc2l6ZSgpOwotfQotCi1pbnQ2NF90IFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpHZXRUaW1lc3RhbXAoc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVD
S19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQm
IGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJldHVybiBHZXRUaW1lc3RhbXAoZXZlbnQpOwot
fQogCiBpbnQ2NF90IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRUaW1lc3RhbXAoY29uc3QgcnRj
bG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKGV2ZW50Lmhhc190aW1lc3Rh
bXBfdXMoKSk7CiAgIHJldHVybiBldmVudC50aW1lc3RhbXBfdXMoKTsKIH0KIAotUGFyc2VkUnRj
RXZlbnRMb2dOZXc6OkV2ZW50VHlwZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0RXZlbnRUeXBl
KAotICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51
bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19b
aW5kZXhdOwotICByZXR1cm4gR2V0RXZlbnRUeXBlKGV2ZW50KTsKLX0KLQotUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OkV2ZW50VHlwZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0RXZlbnRUeXBlKAot
ICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7Ci0gIFJUQ19DSEVDSyhldmVu
dC5oYXNfdHlwZSgpKTsKLSAgaWYgKGV2ZW50LnR5cGUoKSA9PSBydGNsb2c6OkV2ZW50OjpCV0Vf
UFJPQkVfUkVTVUxUX0VWRU5UKSB7Ci0gICAgUlRDX0NIRUNLKGV2ZW50Lmhhc19wcm9iZV9yZXN1
bHQoKSk7Ci0gICAgUlRDX0NIRUNLKGV2ZW50LnByb2JlX3Jlc3VsdCgpLmhhc19yZXN1bHQoKSk7
Ci0gICAgaWYgKGV2ZW50LnByb2JlX3Jlc3VsdCgpLnJlc3VsdCgpID09IHJ0Y2xvZzo6QndlUHJv
YmVSZXN1bHQ6OlNVQ0NFU1MpCi0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2
ZW50VHlwZTo6QldFX1BST0JFX1NVQ0NFU1NfRVZFTlQ7Ci0gICAgcmV0dXJuIFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9GQUlMVVJFX0VWRU5UOwotICB9Ci0gIHJl
dHVybiBHZXRSdW50aW1lRXZlbnRUeXBlKGV2ZW50LnR5cGUoKSk7Ci19Ci0KIC8vIFRoZSBoZWFk
ZXIgbXVzdCBoYXZlIHNwYWNlIGZvciBhdCBsZWFzdCBJUF9QQUNLRVRfU0laRSBieXRlcy4KLWNv
bnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKiBQYXJzZWRSdGNFdmVudExvZ05ldzo6
R2V0UnRwSGVhZGVyKAotICAgIHNpemVfdCBpbmRleCwKLSAgICBQYWNrZXREaXJlY3Rpb24qIGlu
Y29taW5nLAotICAgIHVpbnQ4X3QqIGhlYWRlciwKLSAgICBzaXplX3QqIGhlYWRlcl9sZW5ndGgs
Ci0gICAgc2l6ZV90KiB0b3RhbF9sZW5ndGgsCi0gICAgaW50KiBwcm9iZV9jbHVzdGVyX2lkKSBj
b25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNv
bnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJldHVybiBHZXRS
dHBIZWFkZXIoZXZlbnQsIGluY29taW5nLCBoZWFkZXIsIGhlYWRlcl9sZW5ndGgsIHRvdGFsX2xl
bmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICBwcm9iZV9jbHVzdGVyX2lkKTsKLX0KLQogY29u
c3Qgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAqIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpH
ZXRSdHBIZWFkZXIoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQsCiAgICAgUGFja2V0
RGlyZWN0aW9uKiBpbmNvbWluZywKQEAgLTg5OSwxNSArMTMyNiw2IEBAIGNvbnN0IHdlYnJ0Yzo6
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKiBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0UnRwSGVhZGVy
KAogfQogCiAvLyBUaGUgcGFja2V0IG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFD
S0VUX1NJWkUgYnl0ZXMuCi12b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRSdGNwUGFja2V0
KHNpemVfdCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFja2V0RGlyZWN0aW9uKiBpbmNvbWluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QqIGxlbmd0aCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5k
ZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9
IGV2ZW50c19baW5kZXhdOwotICBHZXRSdGNwUGFja2V0KGV2ZW50LCBpbmNvbWluZywgcGFja2V0
LCBsZW5ndGgpOwotfQotCiB2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRSdGNwUGFja2V0
KGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYWNrZXREaXJlY3Rpb24qIGluY29taW5nLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBwYWNrZXQsCkBAIC05MzUsMTIgKzEz
NTMsNiBAQCB2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRSdGNwUGFja2V0KGNvbnN0IHJ0
Y2xvZzo6RXZlbnQmIGV2ZW50LAogICB9CiB9CiAKLXJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3OjpHZXRWaWRlb1JlY2VpdmVDb25maWcoCi0gICAgc2l6ZV90IGluZGV4
KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0g
IHJldHVybiBHZXRWaWRlb1JlY2VpdmVDb25maWcoZXZlbnRzX1tpbmRleF0pOwotfQotCiBydGNs
b2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0VmlkZW9SZWNlaXZlQ29u
ZmlnKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAgIHJ0Y2xvZzo6
U3RyZWFtQ29uZmlnIGNvbmZpZzsKQEAgLTEwMDIsMTIgKzE0MTQsNiBAQCBydGNsb2c6OlN0cmVh
bUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0VmlkZW9SZWNlaXZlQ29uZmlnKAogICBy
ZXR1cm4gY29uZmlnOwogfQogCi1zdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gUGFy
c2VkUnRjRXZlbnRMb2dOZXc6OkdldFZpZGVvU2VuZENvbmZpZygKLSAgICBzaXplX3QgaW5kZXgp
IGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAg
cmV0dXJuIEdldFZpZGVvU2VuZENvbmZpZyhldmVudHNfW2luZGV4XSk7Ci19Ci0KIHN0ZDo6dmVj
dG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0VmlkZW9T
ZW5kQ29uZmlnKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAgIHN0
ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWdzOwpAQCAtMTA0NiwxMiArMTQ1
Miw2IEBAIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBQYXJzZWRSdGNFdmVudExv
Z05ldzo6R2V0VmlkZW9TZW5kQ29uZmlnKAogICByZXR1cm4gY29uZmlnczsKIH0KIAotcnRjbG9n
OjpTdHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEF1ZGlvUmVjZWl2ZUNvbmZp
ZygKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXRO
dW1iZXJPZkV2ZW50cygpKTsKLSAgcmV0dXJuIEdldEF1ZGlvUmVjZWl2ZUNvbmZpZyhldmVudHNf
W2luZGV4XSk7Ci19Ci0KIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpHZXRBdWRpb1JlY2VpdmVDb25maWcoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQp
IGNvbnN0IHsKICAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOwpAQCAtMTA3MSwxMiArMTQ3
MSw2IEBAIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBdWRp
b1JlY2VpdmVDb25maWcoCiAgIHJldHVybiBjb25maWc7CiB9CiAKLXJ0Y2xvZzo6U3RyZWFtQ29u
ZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBdWRpb1NlbmRDb25maWcoCi0gICAgc2l6ZV90
IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMo
KSk7Ci0gIHJldHVybiBHZXRBdWRpb1NlbmRDb25maWcoZXZlbnRzX1tpbmRleF0pOwotfQotCiBy
dGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QXVkaW9TZW5kQ29u
ZmlnKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAgIHJ0Y2xvZzo6
U3RyZWFtQ29uZmlnIGNvbmZpZzsKQEAgLTEwOTMsMTMgKzE0ODcsNiBAQCBydGNsb2c6OlN0cmVh
bUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QXVkaW9TZW5kQ29uZmlnKAogICByZXR1
cm4gY29uZmlnOwogfQogCi1Mb2dnZWRBdWRpb1BsYXlvdXRFdmVudCBQYXJzZWRSdGNFdmVudExv
Z05ldzo6R2V0QXVkaW9QbGF5b3V0KAotICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENf
Q0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2
ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0QXVkaW9QbGF5b3V0KGV2
ZW50KTsKLX0KLQogTG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OkdldEF1ZGlvUGxheW91dCgKICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3Qg
ewogICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7CkBAIC0xMTEzLDEzICsxNTAwLDYgQEAg
TG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEF1ZGlvUGxh
eW91dCgKICAgcmV0dXJuIHJlczsKIH0KIAotTG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlIFBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3OjpHZXRMb3NzQmFzZWRCd2VVcGRhdGUoCi0gICAgc2l6ZV90IGluZGV4
KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0g
IGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJldHVybiBH
ZXRMb3NzQmFzZWRCd2VVcGRhdGUoZXZlbnQpOwotfQotCiBMb2dnZWRCd2VMb3NzQmFzZWRVcGRh
dGUgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldExvc3NCYXNlZEJ3ZVVwZGF0ZSgKICAgICBjb25z
dCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3QgewogICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5
cGUoKSk7CkBAIC0xMTM4LDEzICsxNTE4LDYgQEAgTG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlIFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRMb3NzQmFzZWRCd2VVcGRhdGUoCiAgIHJldHVybiBid2Vf
dXBkYXRlOwogfQogCi1Mb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRlIFBhcnNlZFJ0Y0V2ZW50TG9n
TmV3OjpHZXREZWxheUJhc2VkQndlVXBkYXRlKAotICAgIHNpemVfdCBpbmRleCkgY29uc3Qgewot
ICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNs
b2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0RGVsYXlCYXNl
ZEJ3ZVVwZGF0ZShldmVudCk7Ci19Ci0KIExvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUgUGFyc2Vk
UnRjRXZlbnRMb2dOZXc6OkdldERlbGF5QmFzZWRCd2VVcGRhdGUoCiAgICAgY29uc3QgcnRjbG9n
OjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwpA
QCAtMTE2MiwxMyArMTUzNSw2IEBAIExvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUgUGFyc2VkUnRj
RXZlbnRMb2dOZXc6OkdldERlbGF5QmFzZWRCd2VVcGRhdGUoCiAgIHJldHVybiByZXM7CiB9CiAK
LUxvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudAotUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OkdldEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19D
SEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZl
bnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJldHVybiBHZXRBdWRpb05ldHdvcmtBZGFw
dGF0aW9uKGV2ZW50KTsKLX0KLQogTG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50CiBQ
YXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QXVkaW9OZXR3b3JrQWRhcHRhdGlvbigKICAgICBjb25z
dCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3QgewpAQCAtMTE5NiwxMyArMTU2Miw2IEBAIFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAogICByZXR1cm4g
cmVzOwogfQogCi1Mb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQKLVBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpHZXRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkKHNpemVfdCBpbmRleCkgY29uc3Qg
ewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBy
dGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0QndlUHJv
YmVDbHVzdGVyQ3JlYXRlZChldmVudCk7Ci19Ci0KIExvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0
ZWRFdmVudAogUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQo
CiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKQEAgLTEyMjMsMTMgKzE1
ODIsNiBAQCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QndlUHJvYmVDbHVzdGVyQ3JlYXRlZCgK
ICAgcmV0dXJuIHJlczsKIH0KIAotTG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQgUGFyc2VkUnRj
RXZlbnRMb2dOZXc6OkdldEJ3ZVByb2JlRmFpbHVyZSgKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0
IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3Qg
cnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJuIEdldEJ3ZVBy
b2JlRmFpbHVyZShldmVudCk7Ci19Ci0KIExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50IFBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3OjpHZXRCd2VQcm9iZUZhaWx1cmUoCiAgICAgY29uc3QgcnRjbG9nOjpF
dmVudCYgZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwpAQCAt
MTI2MCwxMyArMTYxMiw2IEBAIExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50IFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpHZXRCd2VQcm9iZUZhaWx1cmUoCiAgIHJldHVybiByZXM7CiB9CiAKLUxvZ2dl
ZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRCd2VQcm9iZVN1
Y2Nlc3MoCi0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwg
R2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZl
bnRzX1tpbmRleF07Ci0gIHJldHVybiBHZXRCd2VQcm9iZVN1Y2Nlc3MoZXZlbnQpOwotfQotCiBM
b2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QndlUHJv
YmVTdWNjZXNzKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAgIFJU
Q19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKQEAgLTEyODYsMTIgKzE2MzEsNiBAQCBMb2dnZWRC
d2VQcm9iZVN1Y2Nlc3NFdmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QndlUHJvYmVTdWNj
ZXNzKAogICByZXR1cm4gcmVzOwogfQogCi1Mb2dnZWRBbHJTdGF0ZUV2ZW50IFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpHZXRBbHJTdGF0ZShzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNL
X0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYg
ZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJuIEdldEFsclN0YXRlKGV2ZW50KTsKLX0K
LQogTG9nZ2VkQWxyU3RhdGVFdmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QWxyU3RhdGUo
CiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKGV2
ZW50Lmhhc190eXBlKCkpOwpAQCAtMTMwNiwxMyArMTY0NSw2IEBAIExvZ2dlZEFsclN0YXRlRXZl
bnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEFsclN0YXRlKAogICByZXR1cm4gcmVzOwogfQog
Ci1Mb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnKAotICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENf
Q0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2
ZW50JiBydGNfZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJuIEdldEljZUNhbmRpZGF0
ZVBhaXJDb25maWcocnRjX2V2ZW50KTsKLX0KLQogTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZp
ZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0SWNlQ2FuZGlkYXRlUGFpckNvbmZpZygKICAgICBj
b25zdCBydGNsb2c6OkV2ZW50JiBydGNfZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKHJ0Y19l
dmVudC5oYXNfdHlwZSgpKTsKQEAgLTEzNDksMTMgKzE2ODEsNiBAQCBMb2dnZWRJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRJY2VDYW5kaWRhdGVQYWlyQ29u
ZmlnKAogICByZXR1cm4gcmVzOwogfQogCi1Mb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQgUGFy
c2VkUnRjRXZlbnRMb2dOZXc6OkdldEljZUNhbmRpZGF0ZVBhaXJFdmVudCgKLSAgICBzaXplX3Qg
aW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygp
KTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgcnRjX2V2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0g
IHJldHVybiBHZXRJY2VDYW5kaWRhdGVQYWlyRXZlbnQocnRjX2V2ZW50KTsKLX0KLQogTG9nZ2Vk
SWNlQ2FuZGlkYXRlUGFpckV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRJY2VDYW5kaWRh
dGVQYWlyRXZlbnQoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgcnRjX2V2ZW50KSBjb25zdCB7
CiAgIFJUQ19DSEVDSyhydGNfZXZlbnQuaGFzX3R5cGUoKSk7CkBAIC0xNDM4LDcgKzE3NjMsOCBA
QCBjb25zdCBzdGQ6OnZlY3RvcjxNYXRjaGVkU2VuZEFycml2YWxUaW1lcz4gR2V0TmV0d29ya1Ry
YWNlKAogICAgIGNsb2NrLkFkdmFuY2VUaW1lTWljcm9zZWNvbmRzKHRpbWVfdXMgLSBjbG9jay5U
aW1lSW5NaWNyb3NlY29uZHMoKSk7CiAgICAgaWYgKGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygp
ID49IE5leHRSdGNwVGltZSgpKSB7CiAgICAgICBSVENfRENIRUNLX0VRKGNsb2NrLlRpbWVJbk1p
Y3Jvc2Vjb25kcygpLCBOZXh0UnRjcFRpbWUoKSk7Ci0gICAgICBmZWVkYmFja19hZGFwdGVyLk9u
VHJhbnNwb3J0RmVlZGJhY2socnRjcF9pdGVyYXRvci0+dHJhbnNwb3J0X2ZlZWRiYWNrKTsKKyAg
ICAgIGZlZWRiYWNrX2FkYXB0ZXIuUHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNrKAorICAgICAgICAg
IHJ0Y3BfaXRlcmF0b3ItPnRyYW5zcG9ydF9mZWVkYmFjayk7CiAgICAgICBzdGQ6OnZlY3RvcjxQ
YWNrZXRGZWVkYmFjaz4gZmVlZGJhY2sgPQogICAgICAgICAgIGZlZWRiYWNrX2FkYXB0ZXIuR2V0
VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKTsKICAgICAgIFNvcnRQYWNrZXRGZWVkYmFja1ZlY3Rv
cldpdGhMb3NzKCZmZWVkYmFjayk7CkBAIC0xNDUyLDE0ICsxNzc4LDI1IEBAIGNvbnN0IHN0ZDo6
dmVjdG9yPE1hdGNoZWRTZW5kQXJyaXZhbFRpbWVzPiBHZXROZXR3b3JrVHJhY2UoCiAgICAgaWYg
KGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygpID49IE5leHRSdHBUaW1lKCkpIHsKICAgICAgIFJU
Q19EQ0hFQ0tfRVEoY2xvY2suVGltZUluTWljcm9zZWNvbmRzKCksIE5leHRSdHBUaW1lKCkpOwog
ICAgICAgY29uc3QgUnRwUGFja2V0VHlwZSYgcnRwX3BhY2tldCA9ICpydHBfaXRlcmF0b3ItPnNl
Y29uZDsKKyAgICAgIHJ0Yzo6U2VudFBhY2tldCBzZW50X3BhY2tldDsKKyAgICAgIHNlbnRfcGFj
a2V0LnNlbmRfdGltZV9tcyA9IHJ0cF9wYWNrZXQucnRwLmxvZ190aW1lX21zKCk7CisgICAgICBz
ZW50X3BhY2tldC5pbmZvLnBhY2tldF9zaXplX2J5dGVzID0gcnRwX3BhY2tldC5ydHAudG90YWxf
bGVuZ3RoOwogICAgICAgaWYgKHJ0cF9wYWNrZXQucnRwLmhlYWRlci5leHRlbnNpb24uaGFzVHJh
bnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKICAgICAgICAgZmVlZGJhY2tfYWRhcHRlci5BZGRQYWNr
ZXQoCiAgICAgICAgICAgICBydHBfcGFja2V0LnJ0cC5oZWFkZXIuc3NyYywKICAgICAgICAgICAg
IHJ0cF9wYWNrZXQucnRwLmhlYWRlci5leHRlbnNpb24udHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIs
CiAgICAgICAgICAgICBydHBfcGFja2V0LnJ0cC50b3RhbF9sZW5ndGgsIFBhY2VkUGFja2V0SW5m
bygpKTsKLSAgICAgICAgZmVlZGJhY2tfYWRhcHRlci5PblNlbnRQYWNrZXQoCi0gICAgICAgICAg
ICBydHBfcGFja2V0LnJ0cC5oZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVy
LAotICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAubG9nX3RpbWVfbXMoKSk7CisgICAgICAgIHNl
bnRfcGFja2V0LnBhY2tldF9pZCA9CisgICAgICAgICAgICBydHBfcGFja2V0LnJ0cC5oZWFkZXIu
ZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyOworICAgICAgICBzZW50X3BhY2tldC5p
bmZvLmluY2x1ZGVkX2luX2ZlZWRiYWNrID0gdHJ1ZTsKKyAgICAgICAgc2VudF9wYWNrZXQuaW5m
by5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgZmVlZGJhY2tfYWRhcHRl
ci5Qcm9jZXNzU2VudFBhY2tldChzZW50X3BhY2tldCk7CisgICAgICB9IGVsc2UgeworICAgICAg
ICBzZW50X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2ZlZWRiYWNrID0gZmFsc2U7CisgICAgICAg
IC8vIFRPRE8oc3J0ZSk6IE1ha2UgaXQgcG9zc2libGUgdG8gaW5kaWNhdGUgdGhhdCBhbGwgcGFj
a2V0cyBhcmUgcGFydCBvZgorICAgICAgICAvLyBhbGxvY2F0aW9uLgorICAgICAgICBzZW50X3Bh
Y2tldC5pbmZvLmluY2x1ZGVkX2luX2FsbG9jYXRpb24gPSBmYWxzZTsKKyAgICAgICAgZmVlZGJh
Y2tfYWRhcHRlci5Qcm9jZXNzU2VudFBhY2tldChzZW50X3BhY2tldCk7CiAgICAgICB9CiAgICAg
ICArK3J0cF9pdGVyYXRvcjsKICAgICB9CkBAIC0xNDY4LDQgKzE4MDUsNjEzIEBAIGNvbnN0IHN0
ZDo6dmVjdG9yPE1hdGNoZWRTZW5kQXJyaXZhbFRpbWVzPiBHZXROZXR3b3JrVHJhY2UoCiAgIHJl
dHVybiBydHBfcnRjcF9tYXRjaGVkOwogfQogCisvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBuZXcg
Zm9ybWF0IHN0YXJ0IGhlcmUKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlUGFyc2Vk
TmV3Rm9ybWF0RXZlbnQoCisgICAgY29uc3QgcnRjbG9nMjo6RXZlbnRTdHJlYW0mIHN0cmVhbSkg
eworICBSVENfRENIRUNLX0VRKHN0cmVhbS5zdHJlYW1fc2l6ZSgpLCAwKTsKKworICBSVENfRENI
RUNLX0VRKAorICAgICAgc3RyZWFtLmluY29taW5nX3J0cF9wYWNrZXRzX3NpemUoKSArIHN0cmVh
bS5vdXRnb2luZ19ydHBfcGFja2V0c19zaXplKCkgKworICAgICAgICAgIHN0cmVhbS5pbmNvbWlu
Z19ydGNwX3BhY2tldHNfc2l6ZSgpICsKKyAgICAgICAgICBzdHJlYW0ub3V0Z29pbmdfcnRjcF9w
YWNrZXRzX3NpemUoKSArCisgICAgICAgICAgc3RyZWFtLmF1ZGlvX3BsYXlvdXRfZXZlbnRzX3Np
emUoKSArIHN0cmVhbS5iZWdpbl9sb2dfZXZlbnRzX3NpemUoKSArCisgICAgICAgICAgc3RyZWFt
LmVuZF9sb2dfZXZlbnRzX3NpemUoKSArIHN0cmVhbS5sb3NzX2Jhc2VkX2J3ZV91cGRhdGVzX3Np
emUoKSArCisgICAgICAgICAgc3RyZWFtLmRlbGF5X2Jhc2VkX2J3ZV91cGRhdGVzX3NpemUoKSAr
CisgICAgICAgICAgc3RyZWFtLmF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbnNfc2l6ZSgpICsKKyAg
ICAgICAgICBzdHJlYW0ucHJvYmVfY2x1c3RlcnNfc2l6ZSgpICsgc3RyZWFtLnByb2JlX3N1Y2Nl
c3Nfc2l6ZSgpICsKKyAgICAgICAgICBzdHJlYW0ucHJvYmVfZmFpbHVyZV9zaXplKCkgKyBzdHJl
YW0uYWxyX3N0YXRlc19zaXplKCkgKworICAgICAgICAgIHN0cmVhbS5pY2VfY2FuZGlkYXRlX2Nv
bmZpZ3Nfc2l6ZSgpICsKKyAgICAgICAgICBzdHJlYW0uaWNlX2NhbmRpZGF0ZV9ldmVudHNfc2l6
ZSgpICsKKyAgICAgICAgICBzdHJlYW0uYXVkaW9fcmVjdl9zdHJlYW1fY29uZmlnc19zaXplKCkg
KworICAgICAgICAgIHN0cmVhbS5hdWRpb19zZW5kX3N0cmVhbV9jb25maWdzX3NpemUoKSArCisg
ICAgICAgICAgc3RyZWFtLnZpZGVvX3JlY3Zfc3RyZWFtX2NvbmZpZ3Nfc2l6ZSgpICsKKyAgICAg
ICAgICBzdHJlYW0udmlkZW9fc2VuZF9zdHJlYW1fY29uZmlnc19zaXplKCksCisgICAgICAxdSk7
CisKKyAgaWYgKHN0cmVhbS5pbmNvbWluZ19ydHBfcGFja2V0c19zaXplKCkgPT0gMSkgeworICAg
IFN0b3JlSW5jb21pbmdSdHBQYWNrZXRzKHN0cmVhbS5pbmNvbWluZ19ydHBfcGFja2V0cygwKSk7
CisgIH0gZWxzZSBpZiAoc3RyZWFtLm91dGdvaW5nX3J0cF9wYWNrZXRzX3NpemUoKSA9PSAxKSB7
CisgICAgU3RvcmVPdXRnb2luZ1J0cFBhY2tldHMoc3RyZWFtLm91dGdvaW5nX3J0cF9wYWNrZXRz
KDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0uaW5jb21pbmdfcnRjcF9wYWNrZXRzX3NpemUoKSA9
PSAxKSB7CisgICAgU3RvcmVJbmNvbWluZ1J0Y3BQYWNrZXRzKHN0cmVhbS5pbmNvbWluZ19ydGNw
X3BhY2tldHMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5vdXRnb2luZ19ydGNwX3BhY2tldHNf
c2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZU91dGdvaW5nUnRjcFBhY2tldHMoc3RyZWFtLm91dGdv
aW5nX3J0Y3BfcGFja2V0cygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLmF1ZGlvX3BsYXlvdXRf
ZXZlbnRzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVBdWRpb1BsYXlvdXRFdmVudChzdHJlYW0u
YXVkaW9fcGxheW91dF9ldmVudHMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5iZWdpbl9sb2df
ZXZlbnRzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVTdGFydEV2ZW50KHN0cmVhbS5iZWdpbl9s
b2dfZXZlbnRzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0uZW5kX2xvZ19ldmVudHNfc2l6ZSgp
ID09IDEpIHsKKyAgICBTdG9yZVN0b3BFdmVudChzdHJlYW0uZW5kX2xvZ19ldmVudHMoMCkpOwor
ICB9IGVsc2UgaWYgKHN0cmVhbS5sb3NzX2Jhc2VkX2J3ZV91cGRhdGVzX3NpemUoKSA9PSAxKSB7
CisgICAgU3RvcmVCd2VMb3NzQmFzZWRVcGRhdGUoc3RyZWFtLmxvc3NfYmFzZWRfYndlX3VwZGF0
ZXMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5kZWxheV9iYXNlZF9id2VfdXBkYXRlc19zaXpl
KCkgPT0gMSkgeworICAgIFN0b3JlQndlRGVsYXlCYXNlZFVwZGF0ZShzdHJlYW0uZGVsYXlfYmFz
ZWRfYndlX3VwZGF0ZXMoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5hdWRpb19uZXR3b3JrX2Fk
YXB0YXRpb25zX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVBdWRpb05ldHdvcmtBZGFwdGF0aW9u
RXZlbnQoc3RyZWFtLmF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbnMoMCkpOworICB9IGVsc2UgaWYg
KHN0cmVhbS5wcm9iZV9jbHVzdGVyc19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlQndlUHJvYmVD
bHVzdGVyQ3JlYXRlZChzdHJlYW0ucHJvYmVfY2x1c3RlcnMoMCkpOworICB9IGVsc2UgaWYgKHN0
cmVhbS5wcm9iZV9zdWNjZXNzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVCd2VQcm9iZVN1Y2Nl
c3NFdmVudChzdHJlYW0ucHJvYmVfc3VjY2VzcygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLnBy
b2JlX2ZhaWx1cmVfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUJ3ZVByb2JlRmFpbHVyZUV2ZW50
KHN0cmVhbS5wcm9iZV9mYWlsdXJlKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0uYWxyX3N0YXRl
c19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlQWxyU3RhdGVFdmVudChzdHJlYW0uYWxyX3N0YXRl
cygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLmljZV9jYW5kaWRhdGVfY29uZmlnc19zaXplKCkg
PT0gMSkgeworICAgIFN0b3JlSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyhzdHJlYW0uaWNlX2NhbmRp
ZGF0ZV9jb25maWdzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0uaWNlX2NhbmRpZGF0ZV9ldmVu
dHNfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUljZUNhbmRpZGF0ZUV2ZW50KHN0cmVhbS5pY2Vf
Y2FuZGlkYXRlX2V2ZW50cygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLmF1ZGlvX3JlY3Zfc3Ry
ZWFtX2NvbmZpZ3Nfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUF1ZGlvUmVjdkNvbmZpZyhzdHJl
YW0uYXVkaW9fcmVjdl9zdHJlYW1fY29uZmlncygwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLmF1
ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZ3Nfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUF1ZGlvU2Vu
ZENvbmZpZyhzdHJlYW0uYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlncygwKSk7CisgIH0gZWxzZSBp
ZiAoc3RyZWFtLnZpZGVvX3JlY3Zfc3RyZWFtX2NvbmZpZ3Nfc2l6ZSgpID09IDEpIHsKKyAgICBT
dG9yZVZpZGVvUmVjdkNvbmZpZyhzdHJlYW0udmlkZW9fcmVjdl9zdHJlYW1fY29uZmlncygwKSk7
CisgIH0gZWxzZSBpZiAoc3RyZWFtLnZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZ3Nfc2l6ZSgpID09
IDEpIHsKKyAgICBTdG9yZVZpZGVvU2VuZENvbmZpZyhzdHJlYW0udmlkZW9fc2VuZF9zdHJlYW1f
Y29uZmlncygwKSk7CisgIH0gZWxzZSB7CisgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgfQorfQor
Cit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUFsclN0YXRlRXZlbnQoY29uc3QgcnRj
bG9nMjo6QWxyU3RhdGUmIHByb3RvKSB7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1w
X21zKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2luX2FscigpKTsKKyAgTG9nZ2VkQWxyU3Rh
dGVFdmVudCBhbHJfZXZlbnQ7CisgIGFscl9ldmVudC50aW1lc3RhbXBfdXMgPSBwcm90by50aW1l
c3RhbXBfbXMoKSAqIDEwMDA7CisgIGFscl9ldmVudC5pbl9hbHIgPSBwcm90by5pbl9hbHIoKTsK
KworICBhbHJfc3RhdGVfZXZlbnRzXy5wdXNoX2JhY2soYWxyX2V2ZW50KTsKKyAgLy8gVE9ETyh0
ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YSBlbmNvZGUgdGhpcyBldmVudCB0eXBlPworfQorCit2
b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUF1ZGlvUGxheW91dEV2ZW50KAorICAgIGNv
bnN0IHJ0Y2xvZzI6OkF1ZGlvUGxheW91dEV2ZW50cyYgcHJvdG8pIHsKKyAgUlRDX0NIRUNLKHBy
b3RvLmhhc190aW1lc3RhbXBfbXMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfbG9jYWxfc3Ny
YygpKTsKKworICAvLyBCYXNlIGV2ZW50CisgIGF1dG8gbWFwX2l0ID0gYXVkaW9fcGxheW91dF9l
dmVudHNfW3Byb3RvLmxvY2FsX3NzcmMoKV07CisgIGF1ZGlvX3BsYXlvdXRfZXZlbnRzX1twcm90
by5sb2NhbF9zc3JjKCldLmVtcGxhY2VfYmFjaygKKyAgICAgIDEwMDAgKiBwcm90by50aW1lc3Rh
bXBfbXMoKSwgcHJvdG8ubG9jYWxfc3NyYygpKTsKKworICBjb25zdCBzaXplX3QgbnVtYmVyX29m
X2RlbHRhcyA9CisgICAgICBwcm90by5oYXNfbnVtYmVyX29mX2RlbHRhcygpID8gcHJvdG8ubnVt
YmVyX29mX2RlbHRhcygpIDogMHU7CisgIGlmIChudW1iZXJfb2ZfZGVsdGFzID09IDApIHsKKyAg
ICByZXR1cm47CisgIH0KKworICAvLyB0aW1lc3RhbXBfbXMKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+PiB0aW1lc3RhbXBfbXNfdmFsdWVzID0KKyAgICAgIERlY29kZURl
bHRhcyhwcm90by50aW1lc3RhbXBfbXNfZGVsdGFzKCksCisgICAgICAgICAgICAgICAgICAgVG9V
bnNpZ25lZChwcm90by50aW1lc3RhbXBfbXMoKSksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENf
Q0hFQ0tfRVEodGltZXN0YW1wX21zX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOwor
CisgIC8vIGxvY2FsX3NzcmMKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+
PiBsb2NhbF9zc3JjX3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3RvLmxvY2FsX3Nz
cmNfZGVsdGFzKCksIHByb3RvLmxvY2FsX3NzcmMoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJU
Q19DSEVDS19FUShsb2NhbF9zc3JjX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOwor
CisgIC8vIERlbHRhIGRlY29kaW5nCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyX29m
X2RlbHRhczsgKytpKSB7CisgICAgUlRDX0NIRUNLKHRpbWVzdGFtcF9tc192YWx1ZXNbaV0uaGFz
X3ZhbHVlKCkpOworICAgIFJUQ19DSEVDSyhsb2NhbF9zc3JjX3ZhbHVlc1tpXS5oYXNfdmFsdWUo
KSk7CisgICAgUlRDX0NIRUNLX0xFKGxvY2FsX3NzcmNfdmFsdWVzW2ldLnZhbHVlKCksCisgICAg
ICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7CisKKyAg
ICBpbnQ2NF90IHRpbWVzdGFtcF9tczsKKyAgICBSVENfQ0hFQ0soVG9TaWduZWQodGltZXN0YW1w
X21zX3ZhbHVlc1tpXS52YWx1ZSgpLCAmdGltZXN0YW1wX21zKSk7CisKKyAgICBjb25zdCB1aW50
MzJfdCBsb2NhbF9zc3JjID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2FsX3Nz
cmNfdmFsdWVzW2ldLnZhbHVlKCkpOworICAgIGF1ZGlvX3BsYXlvdXRfZXZlbnRzX1tsb2NhbF9z
c3JjXS5lbXBsYWNlX2JhY2soMTAwMCAqIHRpbWVzdGFtcF9tcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3NzcmMpOworICB9Cit9CisK
K3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlSW5jb21pbmdSdHBQYWNrZXRzKAorICAg
IGNvbnN0IHJ0Y2xvZzI6OkluY29taW5nUnRwUGFja2V0cyYgcHJvdG8pIHsKKyAgU3RvcmVSdHBQ
YWNrZXRzKHByb3RvLCAmaW5jb21pbmdfcnRwX3BhY2tldHNfbWFwXyk7Cit9CisKK3ZvaWQgUGFy
c2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlT3V0Z29pbmdSdHBQYWNrZXRzKAorICAgIGNvbnN0IHJ0
Y2xvZzI6Ok91dGdvaW5nUnRwUGFja2V0cyYgcHJvdG8pIHsKKyAgU3RvcmVSdHBQYWNrZXRzKHBy
b3RvLCAmb3V0Z29pbmdfcnRwX3BhY2tldHNfbWFwXyk7Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OlN0b3JlSW5jb21pbmdSdGNwUGFja2V0cygKKyAgICBjb25zdCBydGNsb2cyOjpJ
bmNvbWluZ1J0Y3BQYWNrZXRzJiBwcm90bykgeworICBTdG9yZVJ0Y3BQYWNrZXRzKHByb3RvLCAm
aW5jb21pbmdfcnRjcF9wYWNrZXRzXyk7Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OlN0b3JlT3V0Z29pbmdSdGNwUGFja2V0cygKKyAgICBjb25zdCBydGNsb2cyOjpPdXRnb2luZ1J0
Y3BQYWNrZXRzJiBwcm90bykgeworICBTdG9yZVJ0Y3BQYWNrZXRzKHByb3RvLCAmb3V0Z29pbmdf
cnRjcF9wYWNrZXRzXyk7Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlU3Rh
cnRFdmVudCgKKyAgICBjb25zdCBydGNsb2cyOjpCZWdpbkxvZ0V2ZW50JiBwcm90bykgeworICBS
VENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhh
c192ZXJzaW9uKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3V0Y190aW1lX21zKCkpOworICBS
VENfQ0hFQ0tfRVEocHJvdG8udmVyc2lvbigpLCAyKTsKKyAgTG9nZ2VkU3RhcnRFdmVudCBzdGFy
dF9ldmVudChwcm90by50aW1lc3RhbXBfbXMoKSAqIDEwMDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvdG8udXRjX3RpbWVfbXMoKSk7CisKKyAgc3RhcnRfbG9nX2V2ZW50c18u
cHVzaF9iYWNrKHN0YXJ0X2V2ZW50KTsKK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6
U3RvcmVTdG9wRXZlbnQoY29uc3QgcnRjbG9nMjo6RW5kTG9nRXZlbnQmIHByb3RvKSB7CisgIFJU
Q19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1wX21zKCkpOworICBMb2dnZWRTdG9wRXZlbnQgc3Rv
cF9ldmVudChwcm90by50aW1lc3RhbXBfbXMoKSAqIDEwMDApOworCisgIHN0b3BfbG9nX2V2ZW50
c18ucHVzaF9iYWNrKHN0b3BfZXZlbnQpOworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpTdG9yZUJ3ZUxvc3NCYXNlZFVwZGF0ZSgKKyAgICBjb25zdCBydGNsb2cyOjpMb3NzQmFzZWRC
d2VVcGRhdGVzJiBwcm90bykgeworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygp
KTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19iaXRyYXRlX2JwcygpKTsKKyAgUlRDX0NIRUNLKHBy
b3RvLmhhc19mcmFjdGlvbl9sb3NzKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RvdGFsX3Bh
Y2tldHMoKSk7CisKKyAgLy8gQmFzZSBldmVudAorICBid2VfbG9zc191cGRhdGVzXy5lbXBsYWNl
X2JhY2soMTAwMCAqIHByb3RvLnRpbWVzdGFtcF9tcygpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvdG8uYml0cmF0ZV9icHMoKSwgcHJvdG8uZnJhY3Rpb25fbG9zcygpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8udG90YWxfcGFja2V0cygpKTsK
KworICBjb25zdCBzaXplX3QgbnVtYmVyX29mX2RlbHRhcyA9CisgICAgICBwcm90by5oYXNfbnVt
YmVyX29mX2RlbHRhcygpID8gcHJvdG8ubnVtYmVyX29mX2RlbHRhcygpIDogMHU7CisgIGlmIChu
dW1iZXJfb2ZfZGVsdGFzID09IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyB0aW1lc3Rh
bXBfbXMKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB0aW1lc3RhbXBf
bXNfdmFsdWVzID0KKyAgICAgIERlY29kZURlbHRhcyhwcm90by50aW1lc3RhbXBfbXNfZGVsdGFz
KCksCisgICAgICAgICAgICAgICAgICAgVG9VbnNpZ25lZChwcm90by50aW1lc3RhbXBfbXMoKSks
IG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEodGltZXN0YW1wX21zX3ZhbHVlcy5z
aXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIGJpdHJhdGVfYnBzCisgIHN0ZDo6dmVj
dG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gYml0cmF0ZV9icHNfdmFsdWVzID0gRGVjb2Rl
RGVsdGFzKAorICAgICAgcHJvdG8uYml0cmF0ZV9icHNfZGVsdGFzKCksIHByb3RvLmJpdHJhdGVf
YnBzKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEoYml0cmF0ZV9icHNfdmFs
dWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gZnJhY3Rpb25fbG9zcworICBz
dGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGZyYWN0aW9uX2xvc3NfdmFsdWVz
ID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJvdG8uZnJhY3Rpb25fbG9zc19kZWx0YXMoKSwgcHJv
dG8uZnJhY3Rpb25fbG9zcygpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGZy
YWN0aW9uX2xvc3NfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gdG90
YWxfcGFja2V0cworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHRvdGFs
X3BhY2tldHNfdmFsdWVzID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJvdG8udG90YWxfcGFja2V0
c19kZWx0YXMoKSwgcHJvdG8udG90YWxfcGFja2V0cygpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAg
UlRDX0NIRUNLX0VRKHRvdGFsX3BhY2tldHNfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRh
cyk7CisKKyAgLy8gRGVsdGEgZGVjb2RpbmcKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1i
ZXJfb2ZfZGVsdGFzOyArK2kpIHsKKyAgICBSVENfQ0hFQ0sodGltZXN0YW1wX21zX3ZhbHVlc1tp
XS5oYXNfdmFsdWUoKSk7CisgICAgaW50NjRfdCB0aW1lc3RhbXBfbXM7CisgICAgUlRDX0NIRUNL
KFRvU2lnbmVkKHRpbWVzdGFtcF9tc192YWx1ZXNbaV0udmFsdWUoKSwgJnRpbWVzdGFtcF9tcykp
OworCisgICAgUlRDX0NIRUNLKGJpdHJhdGVfYnBzX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7Cisg
ICAgUlRDX0NIRUNLX0xFKGJpdHJhdGVfYnBzX3ZhbHVlc1tpXS52YWx1ZSgpLAorICAgICAgICAg
ICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOworICAgIGNvbnN0
IHVpbnQzMl90IGJpdHJhdGVfYnBzID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJp
dHJhdGVfYnBzX3ZhbHVlc1tpXS52YWx1ZSgpKTsKKworICAgIFJUQ19DSEVDSyhmcmFjdGlvbl9s
b3NzX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgUlRDX0NIRUNLX0xFKGZyYWN0aW9uX2xv
c3NfdmFsdWVzW2ldLnZhbHVlKCksCisgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDMyX3Q+OjptYXgoKSk7CisgICAgY29uc3QgdWludDMyX3QgZnJhY3Rpb25fbG9zcyA9
CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFjdGlvbl9sb3NzX3ZhbHVlc1tpXS52
YWx1ZSgpKTsKKworICAgIFJUQ19DSEVDSyh0b3RhbF9wYWNrZXRzX3ZhbHVlc1tpXS5oYXNfdmFs
dWUoKSk7CisgICAgUlRDX0NIRUNLX0xFKHRvdGFsX3BhY2tldHNfdmFsdWVzW2ldLnZhbHVlKCks
CisgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7
CisgICAgY29uc3QgdWludDMyX3QgdG90YWxfcGFja2V0cyA9CisgICAgICAgIHN0YXRpY19jYXN0
PHVpbnQzMl90Pih0b3RhbF9wYWNrZXRzX3ZhbHVlc1tpXS52YWx1ZSgpKTsKKworICAgIGJ3ZV9s
b3NzX3VwZGF0ZXNfLmVtcGxhY2VfYmFjaygxMDAwICogdGltZXN0YW1wX21zLCBiaXRyYXRlX2Jw
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25fbG9zcywgdG90
YWxfcGFja2V0cyk7CisgIH0KK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVC
d2VEZWxheUJhc2VkVXBkYXRlKAorICAgIGNvbnN0IHJ0Y2xvZzI6OkRlbGF5QmFzZWRCd2VVcGRh
dGVzJiBwcm90bykgeworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAg
UlRDX0NIRUNLKHByb3RvLmhhc19iaXRyYXRlX2JwcygpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhh
c19kZXRlY3Rvcl9zdGF0ZSgpKTsKKworICAvLyBCYXNlIGV2ZW50CisgIGNvbnN0IEJhbmR3aWR0
aFVzYWdlIGJhc2VfZGV0ZWN0b3Jfc3RhdGUgPQorICAgICAgR2V0UnVudGltZURldGVjdG9yU3Rh
dGUocHJvdG8uZGV0ZWN0b3Jfc3RhdGUoKSk7CisgIGJ3ZV9kZWxheV91cGRhdGVzXy5lbXBsYWNl
X2JhY2soMTAwMCAqIHByb3RvLnRpbWVzdGFtcF9tcygpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb3RvLmJpdHJhdGVfYnBzKCksIGJhc2VfZGV0ZWN0b3Jfc3RhdGUpOwor
CisgIGNvbnN0IHNpemVfdCBudW1iZXJfb2ZfZGVsdGFzID0KKyAgICAgIHByb3RvLmhhc19udW1i
ZXJfb2ZfZGVsdGFzKCkgPyBwcm90by5udW1iZXJfb2ZfZGVsdGFzKCkgOiAwdTsKKyAgaWYgKG51
bWJlcl9vZl9kZWx0YXMgPT0gMCkgeworICAgIHJldHVybjsKKyAgfQorCisgIC8vIHRpbWVzdGFt
cF9tcworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHRpbWVzdGFtcF9t
c192YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLnRpbWVzdGFtcF9tc19kZWx0YXMo
KSwKKyAgICAgICAgICAgICAgICAgICBUb1Vuc2lnbmVkKHByb3RvLnRpbWVzdGFtcF9tcygpKSwg
bnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUSh0aW1lc3RhbXBfbXNfdmFsdWVzLnNp
emUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gYml0cmF0ZV9icHMKKyAgc3RkOjp2ZWN0
b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBiaXRyYXRlX2Jwc192YWx1ZXMgPSBEZWNvZGVE
ZWx0YXMoCisgICAgICBwcm90by5iaXRyYXRlX2Jwc19kZWx0YXMoKSwgcHJvdG8uYml0cmF0ZV9i
cHMoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShiaXRyYXRlX2Jwc192YWx1
ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBkZXRlY3Rvcl9zdGF0ZQorICBz
dGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGRldGVjdG9yX3N0YXRlX3ZhbHVl
cyA9IERlY29kZURlbHRhcygKKyAgICAgIHByb3RvLmRldGVjdG9yX3N0YXRlX2RlbHRhcygpLAor
ICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHByb3RvLmRldGVjdG9yX3N0YXRlKCkpLCBudW1i
ZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGRldGVjdG9yX3N0YXRlX3ZhbHVlcy5zaXpl
KCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIERlbHRhIGRlY29kaW5nCisgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtYmVyX29mX2RlbHRhczsgKytpKSB7CisgICAgUlRDX0NIRUNLKHRp
bWVzdGFtcF9tc192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIGludDY0X3QgdGltZXN0YW1w
X21zOworICAgIFJUQ19DSEVDSyhUb1NpZ25lZCh0aW1lc3RhbXBfbXNfdmFsdWVzW2ldLnZhbHVl
KCksICZ0aW1lc3RhbXBfbXMpKTsKKworICAgIFJUQ19DSEVDSyhiaXRyYXRlX2Jwc192YWx1ZXNb
aV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDS19MRShiaXRyYXRlX2Jwc192YWx1ZXNbaV0u
dmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpKTsKKyAgICBjb25zdCB1aW50MzJfdCBiaXRyYXRlX2JwcyA9CisgICAgICAgIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihiaXRyYXRlX2Jwc192YWx1ZXNbaV0udmFsdWUoKSk7CisKKyAgICBS
VENfQ0hFQ0soZGV0ZWN0b3Jfc3RhdGVfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBjb25z
dCBhdXRvIGRldGVjdG9yX3N0YXRlID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8cnRjbG9nMjo6RGVs
YXlCYXNlZEJ3ZVVwZGF0ZXM6OkRldGVjdG9yU3RhdGU+KAorICAgICAgICAgICAgZGV0ZWN0b3Jf
c3RhdGVfdmFsdWVzW2ldLnZhbHVlKCkpOworCisgICAgYndlX2RlbGF5X3VwZGF0ZXNfLmVtcGxh
Y2VfYmFjaygxMDAwICogdGltZXN0YW1wX21zLCBiaXRyYXRlX2JwcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdldFJ1bnRpbWVEZXRlY3RvclN0YXRlKGRldGVjdG9yX3N0
YXRlKSk7CisgIH0KK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVCd2VQcm9i
ZUNsdXN0ZXJDcmVhdGVkKAorICAgIGNvbnN0IHJ0Y2xvZzI6OkJ3ZVByb2JlQ2x1c3RlciYgcHJv
dG8pIHsKKyAgTG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50IHByb2JlX2NsdXN0ZXI7
CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1wX21zKCkpOworICBwcm9iZV9jbHVzdGVy
LnRpbWVzdGFtcF91cyA9IHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAwMDsKKyAgUlRDX0NIRUNL
KHByb3RvLmhhc19pZCgpKTsKKyAgcHJvYmVfY2x1c3Rlci5pZCA9IHByb3RvLmlkKCk7CisgIFJU
Q19DSEVDSyhwcm90by5oYXNfYml0cmF0ZV9icHMoKSk7CisgIHByb2JlX2NsdXN0ZXIuYml0cmF0
ZV9icHMgPSBwcm90by5iaXRyYXRlX2JwcygpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX21pbl9w
YWNrZXRzKCkpOworICBwcm9iZV9jbHVzdGVyLm1pbl9wYWNrZXRzID0gcHJvdG8ubWluX3BhY2tl
dHMoKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19taW5fYnl0ZXMoKSk7CisgIHByb2JlX2NsdXN0
ZXIubWluX2J5dGVzID0gcHJvdG8ubWluX2J5dGVzKCk7CisKKyAgYndlX3Byb2JlX2NsdXN0ZXJf
Y3JlYXRlZF9ldmVudHNfLnB1c2hfYmFjayhwcm9iZV9jbHVzdGVyKTsKKworICAvLyBUT0RPKHRl
cmVsaXVzKTogU2hvdWxkIHdlIGRlbHRhIGVuY29kZSB0aGlzIGV2ZW50IHR5cGU/Cit9CisKK3Zv
aWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlQndlUHJvYmVTdWNjZXNzRXZlbnQoCisgICAg
Y29uc3QgcnRjbG9nMjo6QndlUHJvYmVSZXN1bHRTdWNjZXNzJiBwcm90bykgeworICBMb2dnZWRC
d2VQcm9iZVN1Y2Nlc3NFdmVudCBwcm9iZV9yZXN1bHQ7CisgIFJUQ19DSEVDSyhwcm90by5oYXNf
dGltZXN0YW1wX21zKCkpOworICBwcm9iZV9yZXN1bHQudGltZXN0YW1wX3VzID0gcHJvdG8udGlt
ZXN0YW1wX21zKCkgKiAxMDAwOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2lkKCkpOworICBwcm9i
ZV9yZXN1bHQuaWQgPSBwcm90by5pZCgpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2JpdHJhdGVf
YnBzKCkpOworICBwcm9iZV9yZXN1bHQuYml0cmF0ZV9icHMgPSBwcm90by5iaXRyYXRlX2Jwcygp
OworCisgIGJ3ZV9wcm9iZV9zdWNjZXNzX2V2ZW50c18ucHVzaF9iYWNrKHByb2JlX3Jlc3VsdCk7
CisKKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YSBlbmNvZGUgdGhpcyBldmVu
dCB0eXBlPworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUJ3ZVByb2JlRmFp
bHVyZUV2ZW50KAorICAgIGNvbnN0IHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0RmFpbHVyZSYgcHJv
dG8pIHsKKyAgTG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQgcHJvYmVfcmVzdWx0OworICBSVENf
Q0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgcHJvYmVfcmVzdWx0LnRpbWVzdGFt
cF91cyA9IHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAwMDsKKyAgUlRDX0NIRUNLKHByb3RvLmhh
c19pZCgpKTsKKyAgcHJvYmVfcmVzdWx0LmlkID0gcHJvdG8uaWQoKTsKKyAgUlRDX0NIRUNLKHBy
b3RvLmhhc19mYWlsdXJlKCkpOworICBwcm9iZV9yZXN1bHQuZmFpbHVyZV9yZWFzb24gPSBHZXRS
dW50aW1lUHJvYmVGYWlsdXJlUmVhc29uKHByb3RvLmZhaWx1cmUoKSk7CisKKyAgYndlX3Byb2Jl
X2ZhaWx1cmVfZXZlbnRzXy5wdXNoX2JhY2socHJvYmVfcmVzdWx0KTsKKworICAvLyBUT0RPKHRl
cmVsaXVzKTogU2hvdWxkIHdlIGRlbHRhIGVuY29kZSB0aGlzIGV2ZW50IHR5cGU/Cit9CisKK3Zv
aWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50
KAorICAgIGNvbnN0IHJ0Y2xvZzI6OkF1ZGlvTmV0d29ya0FkYXB0YXRpb25zJiBwcm90bykgewor
ICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKworICAvLyBCYXNlIGV2ZW50
CisgIHsKKyAgICBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnIHJ1bnRpbWVfY29uZmlnOworICAg
IGlmIChwcm90by5oYXNfYml0cmF0ZV9icHMoKSkgeworICAgICAgcnVudGltZV9jb25maWcuYml0
cmF0ZV9icHMgPSBwcm90by5iaXRyYXRlX2JwcygpOworICAgIH0KKyAgICBpZiAocHJvdG8uaGFz
X2ZyYW1lX2xlbmd0aF9tcygpKSB7CisgICAgICBydW50aW1lX2NvbmZpZy5mcmFtZV9sZW5ndGhf
bXMgPSBwcm90by5mcmFtZV9sZW5ndGhfbXMoKTsKKyAgICB9CisgICAgaWYgKHByb3RvLmhhc191
cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24oKSkgeworICAgICAgZmxvYXQgdXBsaW5rX3BhY2tl
dF9sb3NzX2ZyYWN0aW9uOworICAgICAgUlRDX0NIRUNLKFBhcnNlUGFja2V0TG9zc0ZyYWN0aW9u
RnJvbVByb3RvRm9ybWF0KAorICAgICAgICAgIHByb3RvLnVwbGlua19wYWNrZXRfbG9zc19mcmFj
dGlvbigpLCAmdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKSk7CisgICAgICBydW50aW1lX2Nv
bmZpZy51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24gPSB1cGxpbmtfcGFja2V0X2xvc3NfZnJh
Y3Rpb247CisgICAgfQorICAgIGlmIChwcm90by5oYXNfZW5hYmxlX2ZlYygpKSB7CisgICAgICBy
dW50aW1lX2NvbmZpZy5lbmFibGVfZmVjID0gcHJvdG8uZW5hYmxlX2ZlYygpOworICAgIH0KKyAg
ICBpZiAocHJvdG8uaGFzX2VuYWJsZV9kdHgoKSkgeworICAgICAgcnVudGltZV9jb25maWcuZW5h
YmxlX2R0eCA9IHByb3RvLmVuYWJsZV9kdHgoKTsKKyAgICB9CisgICAgaWYgKHByb3RvLmhhc19u
dW1fY2hhbm5lbHMoKSkgeworICAgICAgLy8gTm90ZTogRW5jb2RpbmcgTiBhcyBOLTEgb25seSBk
b25lIGZvciB8bnVtX2NoYW5uZWxzX2RlbHRhc3wuCisgICAgICBydW50aW1lX2NvbmZpZy5udW1f
Y2hhbm5lbHMgPSBwcm90by5udW1fY2hhbm5lbHMoKTsKKyAgICB9CisgICAgYXVkaW9fbmV0d29y
a19hZGFwdGF0aW9uX2V2ZW50c18uZW1wbGFjZV9iYWNrKDEwMDAgKiBwcm90by50aW1lc3RhbXBf
bXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnVudGltZV9jb25maWcpOworICB9CisKKyAgY29uc3Qgc2l6ZV90IG51bWJlcl9vZl9kZWx0YXMg
PQorICAgICAgcHJvdG8uaGFzX251bWJlcl9vZl9kZWx0YXMoKSA/IHByb3RvLm51bWJlcl9vZl9k
ZWx0YXMoKSA6IDB1OworICBpZiAobnVtYmVyX29mX2RlbHRhcyA9PSAwKSB7CisgICAgcmV0dXJu
OworICB9CisKKyAgLy8gdGltZXN0YW1wX21zCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90Pj4gdGltZXN0YW1wX21zX3ZhbHVlcyA9CisgICAgICBEZWNvZGVEZWx0YXMocHJv
dG8udGltZXN0YW1wX21zX2RlbHRhcygpLAorICAgICAgICAgICAgICAgICAgIFRvVW5zaWduZWQo
cHJvdG8udGltZXN0YW1wX21zKCkpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VR
KHRpbWVzdGFtcF9tc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBi
aXRyYXRlX2JwcworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gdW5zaWduZWRfYmFz
ZV9iaXRyYXRlX2JwcyA9CisgICAgICBwcm90by5oYXNfYml0cmF0ZV9icHMoKQorICAgICAgICAg
ID8gYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KFRvVW5zaWduZWQocHJvdG8uYml0cmF0ZV9icHMo
KSkpCisgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgc3RkOjp2ZWN0
b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBiaXRyYXRlX2Jwc192YWx1ZXMgPSBEZWNvZGVE
ZWx0YXMoCisgICAgICBwcm90by5iaXRyYXRlX2Jwc19kZWx0YXMoKSwgdW5zaWduZWRfYmFzZV9i
aXRyYXRlX2JwcywgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShiaXRyYXRlX2Jw
c192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBmcmFtZV9sZW5ndGhf
bXMKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHVuc2lnbmVkX2Jhc2VfZnJhbWVf
bGVuZ3RoX21zID0KKyAgICAgIHByb3RvLmhhc19mcmFtZV9sZW5ndGhfbXMoKQorICAgICAgICAg
ID8gYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KFRvVW5zaWduZWQocHJvdG8uZnJhbWVfbGVuZ3Ro
X21zKCkpKQorICAgICAgICAgIDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgIHN0ZDo6
dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gZnJhbWVfbGVuZ3RoX21zX3ZhbHVlcyA9
CisgICAgICBEZWNvZGVEZWx0YXMocHJvdG8uZnJhbWVfbGVuZ3RoX21zX2RlbHRhcygpLAorICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkX2Jhc2VfZnJhbWVfbGVuZ3RoX21zLCBudW1iZXJfb2Zf
ZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGZyYW1lX2xlbmd0aF9tc192YWx1ZXMuc2l6ZSgpLCBu
dW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24KKyAg
Y29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlv
biA9CisgICAgICBwcm90by5oYXNfdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKCkKKyAgICAg
ICAgICA/IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pihwcm90by51cGxpbmtfcGFja2V0X2xvc3Nf
ZnJhY3Rpb24oKSkKKyAgICAgICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICBz
dGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHVwbGlua19wYWNrZXRfbG9zc19m
cmFjdGlvbl92YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLnVwbGlua19wYWNrZXRf
bG9zc19mcmFjdGlvbl9kZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICB1cGxpbmtfcGFja2V0
X2xvc3NfZnJhY3Rpb24sIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEodXBsaW5r
X3BhY2tldF9sb3NzX2ZyYWN0aW9uX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOwor
CisgIC8vIGVuYWJsZV9mZWMKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGVuYWJs
ZV9mZWMgPQorICAgICAgcHJvdG8uaGFzX2VuYWJsZV9mZWMoKSA/IGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90Pihwcm90by5lbmFibGVfZmVjKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90Pj4gZW5hYmxlX2ZlY192YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHBy
b3RvLmVuYWJsZV9mZWNfZGVsdGFzKCksIGVuYWJsZV9mZWMsIG51bWJlcl9vZl9kZWx0YXMpOwor
ICBSVENfQ0hFQ0tfRVEoZW5hYmxlX2ZlY192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFz
KTsKKworICAvLyBlbmFibGVfZHR4CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBl
bmFibGVfZHR4ID0KKyAgICAgIHByb3RvLmhhc19lbmFibGVfZHR4KCkgPyBhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4ocHJvdG8uZW5hYmxlX2R0eCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICBzdGQ6OnZlY3RvcjxhYnNsOjpv
cHRpb25hbDx1aW50NjRfdD4+IGVuYWJsZV9kdHhfdmFsdWVzID0KKyAgICAgIERlY29kZURlbHRh
cyhwcm90by5lbmFibGVfZHR4X2RlbHRhcygpLCBlbmFibGVfZHR4LCBudW1iZXJfb2ZfZGVsdGFz
KTsKKyAgUlRDX0NIRUNLX0VRKGVuYWJsZV9kdHhfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2Rl
bHRhcyk7CisKKyAgLy8gbnVtX2NoYW5uZWxzCisgIC8vIE5vdGU6IEZvciBkZWx0YSBlbmNvZGlu
ZywgYWxsIG51bV9jaGFubmVsIHZhbHVlcywgaW5jbHVkaW5nIHRoZSBiYXNlLAorICAvLyB3ZXJl
IHNoaWZ0ZWQgZG93biBieSBvbmUsIGJ1dCBpbiB0aGUgYmFzZSBldmVudCwgdGhleSB3ZXJlIG5v
dC4KKyAgLy8gV2UgbGlrZXdpc2Ugc2hpZnQgdGhlIGJhc2UgZXZlbnQgZG93biBieSBvbmUsIHRv
IGdldCB0aGUgc2FtZSBiYXNlIGFzCisgIC8vIGVuY29kaW5nIGhhZCwgYnV0IHRoZW4gc2hpZnQg
YWxsIG9mIHRoZSB2YWx1ZXMgKGV4Y2VwdCB0aGUgYmFzZSkgYmFjayB1cAorICAvLyAgdG8gdGhl
aXIgb3JpZ2luYWwgdmFsdWUuCisgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBzaGlmdGVkX2Jh
c2VfbnVtX2NoYW5uZWxzOworICBpZiAocHJvdG8uaGFzX251bV9jaGFubmVscygpKSB7CisgICAg
c2hpZnRlZF9iYXNlX251bV9jaGFubmVscyA9CisgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2
NF90Pihwcm90by5udW1fY2hhbm5lbHMoKSAtIDEpOworICB9CisgIHN0ZDo6dmVjdG9yPGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90Pj4gbnVtX2NoYW5uZWxzX3ZhbHVlcyA9IERlY29kZURlbHRhcygK
KyAgICAgIHByb3RvLm51bV9jaGFubmVsc19kZWx0YXMoKSwgc2hpZnRlZF9iYXNlX251bV9jaGFu
bmVscywgbnVtYmVyX29mX2RlbHRhcyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2No
YW5uZWxzX3ZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGlmIChudW1fY2hhbm5lbHNfdmFsdWVz
W2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBudW1fY2hhbm5lbHNfdmFsdWVzW2ldID0gbnVtX2No
YW5uZWxzX3ZhbHVlc1tpXS52YWx1ZSgpICsgMTsKKyAgICB9CisgIH0KKyAgUlRDX0NIRUNLX0VR
KG51bV9jaGFubmVsc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBE
ZWx0YSBkZWNvZGluZworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlcl9vZl9kZWx0YXM7
ICsraSkgeworICAgIFJUQ19DSEVDSyh0aW1lc3RhbXBfbXNfdmFsdWVzW2ldLmhhc192YWx1ZSgp
KTsKKyAgICBpbnQ2NF90IHRpbWVzdGFtcF9tczsKKyAgICBSVENfQ0hFQ0soVG9TaWduZWQodGlt
ZXN0YW1wX21zX3ZhbHVlc1tpXS52YWx1ZSgpLCAmdGltZXN0YW1wX21zKSk7CisKKyAgICBBdWRp
b0VuY29kZXJSdW50aW1lQ29uZmlnIHJ1bnRpbWVfY29uZmlnOworICAgIGlmIChiaXRyYXRlX2Jw
c192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIGludCBzaWduZWRfYml0cmF0ZV9icHM7
CisgICAgICBSVENfQ0hFQ0soVG9TaWduZWQoYml0cmF0ZV9icHNfdmFsdWVzW2ldLnZhbHVlKCks
ICZzaWduZWRfYml0cmF0ZV9icHMpKTsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLmJpdHJhdGVfYnBz
ID0gc2lnbmVkX2JpdHJhdGVfYnBzOworICAgIH0KKyAgICBpZiAoZnJhbWVfbGVuZ3RoX21zX3Zh
bHVlc1tpXS5oYXNfdmFsdWUoKSkgeworICAgICAgaW50IHNpZ25lZF9mcmFtZV9sZW5ndGhfbXM7
CisgICAgICBSVENfQ0hFQ0soCisgICAgICAgICAgVG9TaWduZWQoZnJhbWVfbGVuZ3RoX21zX3Zh
bHVlc1tpXS52YWx1ZSgpLCAmc2lnbmVkX2ZyYW1lX2xlbmd0aF9tcykpOworICAgICAgcnVudGlt
ZV9jb25maWcuZnJhbWVfbGVuZ3RoX21zID0gc2lnbmVkX2ZyYW1lX2xlbmd0aF9tczsKKyAgICB9
CisgICAgaWYgKHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbl92YWx1ZXNbaV0uaGFzX3ZhbHVl
KCkpIHsKKyAgICAgIGZsb2F0IHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbjsKKyAgICAgIFJU
Q19DSEVDSyhQYXJzZVBhY2tldExvc3NGcmFjdGlvbkZyb21Qcm90b0Zvcm1hdCgKKyAgICAgICAg
ICBydGM6OmNoZWNrZWRfY2FzdDx1aW50MzJfdD4oCisgICAgICAgICAgICAgIHVwbGlua19wYWNr
ZXRfbG9zc19mcmFjdGlvbl92YWx1ZXNbaV0udmFsdWUoKSksCisgICAgICAgICAgJnVwbGlua19w
YWNrZXRfbG9zc19mcmFjdGlvbikpOworICAgICAgcnVudGltZV9jb25maWcudXBsaW5rX3BhY2tl
dF9sb3NzX2ZyYWN0aW9uID0gdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uOworICAgIH0KKyAg
ICBpZiAoZW5hYmxlX2ZlY192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIHJ1bnRpbWVf
Y29uZmlnLmVuYWJsZV9mZWMgPQorICAgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PGJvb2w+KGVu
YWJsZV9mZWNfdmFsdWVzW2ldLnZhbHVlKCkpOworICAgIH0KKyAgICBpZiAoZW5hYmxlX2R0eF92
YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLmVuYWJsZV9kdHgg
PQorICAgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PGJvb2w+KGVuYWJsZV9kdHhfdmFsdWVzW2ld
LnZhbHVlKCkpOworICAgIH0KKyAgICBpZiAobnVtX2NoYW5uZWxzX3ZhbHVlc1tpXS5oYXNfdmFs
dWUoKSkgeworICAgICAgcnVudGltZV9jb25maWcubnVtX2NoYW5uZWxzID0KKyAgICAgICAgICBy
dGM6OmNoZWNrZWRfY2FzdDxzaXplX3Q+KG51bV9jaGFubmVsc192YWx1ZXNbaV0udmFsdWUoKSk7
CisgICAgfQorICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbl9ldmVudHNfLmVtcGxhY2VfYmFj
aygxMDAwICogdGltZXN0YW1wX21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydW50aW1lX2NvbmZpZyk7CisgIH0KK30KKwordm9pZCBQYXJzZWRS
dGNFdmVudExvZ05ldzo6U3RvcmVJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAorICAgIGNvbnN0IHJ0
Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWcmIHByb3RvKSB7CisgIExvZ2dlZEljZUNhbmRp
ZGF0ZVBhaXJDb25maWcgaWNlX2NvbmZpZzsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190aW1lc3Rh
bXBfbXMoKSk7CisgIGljZV9jb25maWcudGltZXN0YW1wX3VzID0gcHJvdG8udGltZXN0YW1wX21z
KCkgKiAxMDAwOworCisgIFJUQ19DSEVDSyhwcm90by5oYXNfY29uZmlnX3R5cGUoKSk7CisgIGlj
ZV9jb25maWcudHlwZSA9IEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZShwcm90
by5jb25maWdfdHlwZSgpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19jYW5kaWRhdGVfcGFpcl9p
ZCgpKTsKKyAgaWNlX2NvbmZpZy5jYW5kaWRhdGVfcGFpcl9pZCA9IHByb3RvLmNhbmRpZGF0ZV9w
YWlyX2lkKCk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfbG9jYWxfY2FuZGlkYXRlX3R5cGUoKSk7
CisgIGljZV9jb25maWcubG9jYWxfY2FuZGlkYXRlX3R5cGUgPQorICAgICAgR2V0UnVudGltZUlj
ZUNhbmRpZGF0ZVR5cGUocHJvdG8ubG9jYWxfY2FuZGlkYXRlX3R5cGUoKSk7CisgIFJUQ19DSEVD
Syhwcm90by5oYXNfbG9jYWxfcmVsYXlfcHJvdG9jb2woKSk7CisgIGljZV9jb25maWcubG9jYWxf
cmVsYXlfcHJvdG9jb2wgPQorICAgICAgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJQcm90b2Nv
bChwcm90by5sb2NhbF9yZWxheV9wcm90b2NvbCgpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19s
b2NhbF9uZXR3b3JrX3R5cGUoKSk7CisgIGljZV9jb25maWcubG9jYWxfbmV0d29ya190eXBlID0K
KyAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZShwcm90by5sb2NhbF9uZXR3
b3JrX3R5cGUoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfbG9jYWxfYWRkcmVzc19mYW1pbHko
KSk7CisgIGljZV9jb25maWcubG9jYWxfYWRkcmVzc19mYW1pbHkgPQorICAgICAgR2V0UnVudGlt
ZUljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5KHByb3RvLmxvY2FsX2FkZHJlc3NfZmFtaWx5
KCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3JlbW90ZV9jYW5kaWRhdGVfdHlwZSgpKTsKKyAg
aWNlX2NvbmZpZy5yZW1vdGVfY2FuZGlkYXRlX3R5cGUgPQorICAgICAgR2V0UnVudGltZUljZUNh
bmRpZGF0ZVR5cGUocHJvdG8ucmVtb3RlX2NhbmRpZGF0ZV90eXBlKCkpOworICBSVENfQ0hFQ0so
cHJvdG8uaGFzX3JlbW90ZV9hZGRyZXNzX2ZhbWlseSgpKTsKKyAgaWNlX2NvbmZpZy5yZW1vdGVf
YWRkcmVzc19mYW1pbHkgPQorICAgICAgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJBZGRyZXNz
RmFtaWx5KHByb3RvLnJlbW90ZV9hZGRyZXNzX2ZhbWlseSgpKTsKKyAgUlRDX0NIRUNLKHByb3Rv
Lmhhc19jYW5kaWRhdGVfcGFpcl9wcm90b2NvbCgpKTsKKyAgaWNlX2NvbmZpZy5jYW5kaWRhdGVf
cGFpcl9wcm90b2NvbCA9CisgICAgICBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpclByb3RvY29s
KHByb3RvLmNhbmRpZGF0ZV9wYWlyX3Byb3RvY29sKCkpOworCisgIGljZV9jYW5kaWRhdGVfcGFp
cl9jb25maWdzXy5wdXNoX2JhY2soaWNlX2NvbmZpZyk7CisKKyAgLy8gVE9ETyh0ZXJlbGl1cyk6
IFNob3VsZCB3ZSBkZWx0YSBlbmNvZGUgdGhpcyBldmVudCB0eXBlPworfQorCit2b2lkIFBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUljZUNhbmRpZGF0ZUV2ZW50KAorICAgIGNvbnN0IHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudCYgcHJvdG8pIHsKKyAgTG9nZ2VkSWNlQ2FuZGlkYXRl
UGFpckV2ZW50IGljZV9ldmVudDsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190aW1lc3RhbXBfbXMo
KSk7CisgIGljZV9ldmVudC50aW1lc3RhbXBfdXMgPSBwcm90by50aW1lc3RhbXBfbXMoKSAqIDEw
MDA7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfZXZlbnRfdHlwZSgpKTsKKyAgaWNlX2V2ZW50LnR5
cGUgPSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZShwcm90by5ldmVudF90eXBl
KCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2NhbmRpZGF0ZV9wYWlyX2lkKCkpOworICBpY2Vf
ZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQgPSBwcm90by5jYW5kaWRhdGVfcGFpcl9pZCgpOworCisg
IGljZV9jYW5kaWRhdGVfcGFpcl9ldmVudHNfLnB1c2hfYmFjayhpY2VfZXZlbnQpOworCisgIC8v
IFRPRE8odGVyZWxpdXMpOiBTaG91bGQgd2UgZGVsdGEgZW5jb2RlIHRoaXMgZXZlbnQgdHlwZT8K
K30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVWaWRlb1JlY3ZDb25maWcoCisg
ICAgY29uc3QgcnRjbG9nMjo6VmlkZW9SZWN2U3RyZWFtQ29uZmlnJiBwcm90bykgeworICBMb2dn
ZWRWaWRlb1JlY3ZDb25maWcgc3RyZWFtOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFt
cF9tcygpKTsKKyAgc3RyZWFtLnRpbWVzdGFtcF91cyA9IHByb3RvLnRpbWVzdGFtcF9tcygpICog
MTAwMDsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19yZW1vdGVfc3NyYygpKTsKKyAgc3RyZWFtLmNv
bmZpZy5yZW1vdGVfc3NyYyA9IHByb3RvLnJlbW90ZV9zc3JjKCk7CisgIFJUQ19DSEVDSyhwcm90
by5oYXNfbG9jYWxfc3NyYygpKTsKKyAgc3RyZWFtLmNvbmZpZy5sb2NhbF9zc3JjID0gcHJvdG8u
bG9jYWxfc3NyYygpOworICBpZiAocHJvdG8uaGFzX3J0eF9zc3JjKCkpIHsKKyAgICBzdHJlYW0u
Y29uZmlnLnJ0eF9zc3JjID0gcHJvdG8ucnR4X3NzcmMoKTsKKyAgfQorICBpZiAocHJvdG8uaGFz
X2hlYWRlcl9leHRlbnNpb25zKCkpIHsKKyAgICBzdHJlYW0uY29uZmlnLnJ0cF9leHRlbnNpb25z
ID0KKyAgICAgICAgR2V0UnVudGltZVJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyhwcm90by5oZWFk
ZXJfZXh0ZW5zaW9ucygpKTsKKyAgfQorICB2aWRlb19yZWN2X2NvbmZpZ3NfLnB1c2hfYmFjayhz
dHJlYW0pOworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZVZpZGVvU2VuZENv
bmZpZygKKyAgICBjb25zdCBydGNsb2cyOjpWaWRlb1NlbmRTdHJlYW1Db25maWcmIHByb3RvKSB7
CisgIExvZ2dlZFZpZGVvU2VuZENvbmZpZyBzdHJlYW07CisgIFJUQ19DSEVDSyhwcm90by5oYXNf
dGltZXN0YW1wX21zKCkpOworICBzdHJlYW0udGltZXN0YW1wX3VzID0gcHJvdG8udGltZXN0YW1w
X21zKCkgKiAxMDAwOworICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7CisgIFJUQ19DSEVD
Syhwcm90by5oYXNfc3NyYygpKTsKKyAgY29uZmlnLmxvY2FsX3NzcmMgPSBwcm90by5zc3JjKCk7
CisgIGlmIChwcm90by5oYXNfcnR4X3NzcmMoKSkgeworICAgIGNvbmZpZy5ydHhfc3NyYyA9IHBy
b3RvLnJ0eF9zc3JjKCk7CisgIH0KKyAgaWYgKHByb3RvLmhhc19oZWFkZXJfZXh0ZW5zaW9ucygp
KSB7CisgICAgY29uZmlnLnJ0cF9leHRlbnNpb25zID0KKyAgICAgICAgR2V0UnVudGltZVJ0cEhl
YWRlckV4dGVuc2lvbkNvbmZpZyhwcm90by5oZWFkZXJfZXh0ZW5zaW9ucygpKTsKKyAgfQorICBz
dHJlYW0uY29uZmlncy5wdXNoX2JhY2soY29uZmlnKTsKKyAgdmlkZW9fc2VuZF9jb25maWdzXy5w
dXNoX2JhY2soc3RyZWFtKTsKK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVB
dWRpb1JlY3ZDb25maWcoCisgICAgY29uc3QgcnRjbG9nMjo6QXVkaW9SZWN2U3RyZWFtQ29uZmln
JiBwcm90bykgeworICBMb2dnZWRBdWRpb1JlY3ZDb25maWcgc3RyZWFtOworICBSVENfQ0hFQ0so
cHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgc3RyZWFtLnRpbWVzdGFtcF91cyA9IHByb3Rv
LnRpbWVzdGFtcF9tcygpICogMTAwMDsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19yZW1vdGVfc3Ny
YygpKTsKKyAgc3RyZWFtLmNvbmZpZy5yZW1vdGVfc3NyYyA9IHByb3RvLnJlbW90ZV9zc3JjKCk7
CisgIFJUQ19DSEVDSyhwcm90by5oYXNfbG9jYWxfc3NyYygpKTsKKyAgc3RyZWFtLmNvbmZpZy5s
b2NhbF9zc3JjID0gcHJvdG8ubG9jYWxfc3NyYygpOworICBpZiAocHJvdG8uaGFzX2hlYWRlcl9l
eHRlbnNpb25zKCkpIHsKKyAgICBzdHJlYW0uY29uZmlnLnJ0cF9leHRlbnNpb25zID0KKyAgICAg
ICAgR2V0UnVudGltZVJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyhwcm90by5oZWFkZXJfZXh0ZW5z
aW9ucygpKTsKKyAgfQorICBhdWRpb19yZWN2X2NvbmZpZ3NfLnB1c2hfYmFjayhzdHJlYW0pOwor
fQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUF1ZGlvU2VuZENvbmZpZygKKyAg
ICBjb25zdCBydGNsb2cyOjpBdWRpb1NlbmRTdHJlYW1Db25maWcmIHByb3RvKSB7CisgIExvZ2dl
ZEF1ZGlvU2VuZENvbmZpZyBzdHJlYW07CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1w
X21zKCkpOworICBzdHJlYW0udGltZXN0YW1wX3VzID0gcHJvdG8udGltZXN0YW1wX21zKCkgKiAx
MDAwOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3NzcmMoKSk7CisgIHN0cmVhbS5jb25maWcubG9j
YWxfc3NyYyA9IHByb3RvLnNzcmMoKTsKKyAgaWYgKHByb3RvLmhhc19oZWFkZXJfZXh0ZW5zaW9u
cygpKSB7CisgICAgc3RyZWFtLmNvbmZpZy5ydHBfZXh0ZW5zaW9ucyA9CisgICAgICAgIEdldFJ1
bnRpbWVSdHBIZWFkZXJFeHRlbnNpb25Db25maWcocHJvdG8uaGVhZGVyX2V4dGVuc2lvbnMoKSk7
CisgIH0KKyAgYXVkaW9fc2VuZF9jb25maWdzXy5wdXNoX2JhY2soc3RyZWFtKTsKK30KKwogfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFy
c2VyX25ldy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5oCmluZGV4IDVhYjBj
MTViOTJhNzllNTZjNGMwOWNkZjBkNGIwNGVlZjEyZjA2NzYuLjUwZTNiOTkyMmRlMjZhZGM4ZGU4
MDAwZDBlYTZmNGVjNGNiYjViMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3Bh
cnNlcl9uZXcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXJfbmV3LmgKQEAgLTI1
LDcgKzI1LDcgQEAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19l
dmVudF9wcm9iZV9yZXN1bHRfZmFpbHVyZS5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ydGNfZXZlbnRfbG9nLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0
Y19zdHJlYW1fY29uZmlnLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9f
bmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yLmgiCisjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVk
aW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9jb21tb25faGVhZGVyLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvbmFjay5oIgpAQCAtMzksOCArMzksMTAg
QEAKIFJUQ19QVVNIX0lHTk9SSU5HX1dVTkRFRigpCiAjaWZkZWYgV0VCUlRDX0FORFJPSURfUExB
VEZPUk1fQlVJTEQKICNpbmNsdWRlICJleHRlcm5hbC93ZWJydGMvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLnBiLmgiCisjaW5jbHVkZSAiZXh0ZXJuYWwvd2VicnRj
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzIucGIuaCIKICNlbHNl
CiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cucGIuaCIKKyNp
bmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzIucGIuaCIKICNlbmRp
ZgogUlRDX1BPUF9JR05PUklOR19XVU5ERUYoKQogCkBAIC01NSw3MCArNTcsMTM2IEBAIHN0cnVj
dCBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnOwogLy8gY29uc2lkZXJlZCB0byBvdXR3ZWlnaCB0
aGUgYWRkZWQgbWVtb3J5IGFuZCBydW50aW1lIG92ZXJoZWFkIGluY3VycmVkIGJ5CiAvLyBhZGRp
bmcgYSB2cHRyLgogc3RydWN0IExvZ2dlZEFsclN0YXRlRXZlbnQgewotICBpbnQ2NF90IHRpbWVz
dGFtcF91czsKLSAgYm9vbCBpbl9hbHI7CisgIExvZ2dlZEFsclN0YXRlRXZlbnQoKSA9IGRlZmF1
bHQ7CisgIExvZ2dlZEFsclN0YXRlRXZlbnQoaW50NjRfdCB0aW1lc3RhbXBfdXMsIGJvb2wgaW5f
YWxyKQorICAgICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwgaW5fYWxyKGluX2Fscikg
e30KKwogICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
OyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMg
LyAxMDAwOyB9CisKKyAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CisgIGJvb2wgaW5fYWxyOwogfTsK
IAogc3RydWN0IExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50IHsKLSAgaW50NjRfdCB0aW1lc3RhbXBf
dXM7Ci0gIHVpbnQzMl90IHNzcmM7CisgIExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50KCkgPSBkZWZh
dWx0OworICBMb2dnZWRBdWRpb1BsYXlvdXRFdmVudChpbnQ2NF90IHRpbWVzdGFtcF91cywgdWlu
dDMyX3Qgc3NyYykKKyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIHNzcmMoc3Ny
Yykge30KKwogICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1w
X3VzOyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBf
dXMgLyAxMDAwOyB9CisKKyAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CisgIHVpbnQzMl90IHNzcmM7
CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50IHsKLSAgaW50
NjRfdCB0aW1lc3RhbXBfdXM7Ci0gIEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWcgY29uZmlnOwor
ICBMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRXZlbnQoKSA9IGRlZmF1bHQ7CisgIExvZ2dl
ZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudChpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvRW5jb2RlclJ1bnRpbWVD
b25maWcmIGNvbmZpZykKKyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIGNvbmZp
Zyhjb25maWcpIHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRp
bWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGlt
ZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBBdWRpb0Vu
Y29kZXJSdW50aW1lQ29uZmlnIGNvbmZpZzsKIH07CiAKIHN0cnVjdCBMb2dnZWRCd2VEZWxheUJh
c2VkVXBkYXRlIHsKKyAgTG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSgpID0gZGVmYXVsdDsKKyAg
TG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZShpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGJpdHJhdGVfYnBzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJhbmR3aWR0aFVzYWdlIGRldGVjdG9yX3N0YXRlKQorICAgICAgOiB0aW1l
c3RhbXBfdXModGltZXN0YW1wX3VzKSwKKyAgICAgICAgYml0cmF0ZV9icHMoYml0cmF0ZV9icHMp
LAorICAgICAgICBkZXRlY3Rvcl9zdGF0ZShkZXRlY3Rvcl9zdGF0ZSkge30KKworICBpbnQ2NF90
IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CisgIGludDY0X3Qg
bG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKICAg
aW50NjRfdCB0aW1lc3RhbXBfdXM7CiAgIGludDMyX3QgYml0cmF0ZV9icHM7CiAgIEJhbmR3aWR0
aFVzYWdlIGRldGVjdG9yX3N0YXRlOwotICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyBy
ZXR1cm4gdGltZXN0YW1wX3VzOyB9Ci0gIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJl
dHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkQndlTG9zc0Jh
c2VkVXBkYXRlIHsKKyAgTG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlKCkgPSBkZWZhdWx0OworICBM
b2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUoaW50NjRfdCB0aW1lc3RhbXBfdXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQzMl90IGJpdHJhdGVfYnBzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3N0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCBleHBlY3RlZF9wYWNrZXRzKQorICAgICAgOiB0aW1lc3RhbXBfdXModGltZXN0
YW1wX3VzKSwKKyAgICAgICAgYml0cmF0ZV9icHMoYml0cmF0ZV9icHMpLAorICAgICAgICBmcmFj
dGlvbl9sb3N0KGZyYWN0aW9uX2xvc3QpLAorICAgICAgICBleHBlY3RlZF9wYWNrZXRzKGV4cGVj
dGVkX3BhY2tldHMpIHt9CisKKyAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJu
IHRpbWVzdGFtcF91czsgfQorICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4g
dGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCiAgIGludDY0X3QgdGltZXN0YW1wX3VzOwogICBpbnQz
Ml90IGJpdHJhdGVfYnBzOwogICB1aW50OF90IGZyYWN0aW9uX2xvc3Q7CiAgIGludDMyX3QgZXhw
ZWN0ZWRfcGFja2V0czsKLSAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRp
bWVzdGFtcF91czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGlt
ZXN0YW1wX3VzIC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNy
ZWF0ZWRFdmVudCB7CisgIExvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCgpID0gZGVm
YXVsdDsKKyAgTG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50KGludDY0X3QgdGltZXN0
YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgYml0cmF0ZV9icHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBtaW5fcGFja2V0
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1pbl9ieXRl
cykKKyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksCisgICAgICAgIGlkKGlkKSwK
KyAgICAgICAgYml0cmF0ZV9icHMoYml0cmF0ZV9icHMpLAorICAgICAgICBtaW5fcGFja2V0cyht
aW5fcGFja2V0cyksCisgICAgICAgIG1pbl9ieXRlcyhtaW5fYnl0ZXMpIHt9CisKKyAgaW50NjRf
dCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQorICBpbnQ2NF90
IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCiAg
IGludDY0X3QgdGltZXN0YW1wX3VzOwogICBpbnQzMl90IGlkOwogICBpbnQzMl90IGJpdHJhdGVf
YnBzOwogICB1aW50MzJfdCBtaW5fcGFja2V0czsKICAgdWludDMyX3QgbWluX2J5dGVzOwotICBp
bnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9Ci0gIGlu
dDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9
CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQgeworICBMb2dnZWRCd2VQ
cm9iZVN1Y2Nlc3NFdmVudCgpID0gZGVmYXVsdDsKKyAgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZl
bnQoaW50NjRfdCB0aW1lc3RhbXBfdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDMyX3QgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgYml0cmF0ZV9i
cHMpCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBpZChpZCksIGJpdHJhdGVf
YnBzKGJpdHJhdGVfYnBzKSB7fQorCisgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJl
dHVybiB0aW1lc3RhbXBfdXM7IH0KKyAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0
dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKwogICBpbnQ2NF90IHRpbWVzdGFtcF91czsKICAg
aW50MzJfdCBpZDsKICAgaW50MzJfdCBiaXRyYXRlX2JwczsKLSAgaW50NjRfdCBsb2dfdGltZV91
cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21z
KCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExv
Z2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50IHsKKyAgTG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQo
KSA9IGRlZmF1bHQ7CisgIExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50KGludDY0X3QgdGltZXN0
YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGlkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQcm9iZUZhaWx1cmVSZWFzb24gZmFpbHVyZV9yZWFzb24p
CisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBpZChpZCksIGZhaWx1cmVfcmVh
c29uKGZhaWx1cmVfcmVhc29uKSB7fQorCisgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7
IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KKyAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsg
cmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKwogICBpbnQ2NF90IHRpbWVzdGFtcF91czsK
ICAgaW50MzJfdCBpZDsKICAgUHJvYmVGYWlsdXJlUmVhc29uIGZhaWx1cmVfcmVhc29uOwotICBp
bnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9Ci0gIGlu
dDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9
CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyB7CisgIGludDY0X3Qg
bG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KKyAgaW50NjRfdCBs
b2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKwogICBp
bnQ2NF90IHRpbWVzdGFtcF91czsKICAgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgdHlwZTsK
ICAgdWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWQ7CkBAIC0xMjksMTYgKzE5NywyMyBAQCBzdHJ1
Y3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyB7CiAgIEljZUNhbmRpZGF0ZVR5cGUgcmVt
b3RlX2NhbmRpZGF0ZV90eXBlOwogICBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseSByZW1v
dGVfYWRkcmVzc19mYW1pbHk7CiAgIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbCBjYW5kaWRhdGVf
cGFpcl9wcm90b2NvbDsKLSAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRp
bWVzdGFtcF91czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGlt
ZXN0YW1wX3VzIC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJF
dmVudCB7CisgIExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCgpID0gZGVmYXVsdDsKKyAgTG9n
Z2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50KGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWQpCisg
ICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLAorICAgICAgICB0eXBlKHR5cGUpLAor
ICAgICAgICBjYW5kaWRhdGVfcGFpcl9pZChjYW5kaWRhdGVfcGFpcl9pZCkge30KKworICBpbnQ2
NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CisgIGludDY0
X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisK
ICAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CiAgIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgdHlw
ZTsKICAgdWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWQ7Ci0gIGludDY0X3QgbG9nX3RpbWVfdXMo
KSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KLSAgaW50NjRfdCBsb2dfdGltZV9tcygp
IGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KIH07CiAKIHN0cnVjdCBMb2dn
ZWRSdHBQYWNrZXQgewpAQCAtMTUwLDEzICsyMjUsMTUgQEAgc3RydWN0IExvZ2dlZFJ0cFBhY2tl
dCB7CiAgICAgICAgIGhlYWRlcihoZWFkZXIpLAogICAgICAgICBoZWFkZXJfbGVuZ3RoKGhlYWRl
cl9sZW5ndGgpLAogICAgICAgICB0b3RhbF9sZW5ndGgodG90YWxfbGVuZ3RoKSB7fQorCisgIGlu
dDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KKyAgaW50
NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0K
KwogICBpbnQ2NF90IHRpbWVzdGFtcF91czsKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IFRoaXMgYWxs
b2NhdGVzIHNwYWNlIGZvciAxNSBDU1JDcyBldmVuIGlmIG5vbmUgYXJlIHVzZWQuCiAgIFJUUEhl
YWRlciBoZWFkZXI7CiAgIHNpemVfdCBoZWFkZXJfbGVuZ3RoOwogICBzaXplX3QgdG90YWxfbGVu
Z3RoOwotICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
OyB9Ci0gIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMg
LyAxMDAwOyB9CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcgewpAQCAtMTY1
LDkgKzI0MiwxMCBAQCBzdHJ1Y3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaGVhZGVyX2xlbmd0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHRvdGFsX2xlbmd0aCkKICAgICAgIDogcnRwKHRpbWVzdGFtcF91cywg
aGVhZGVyLCBoZWFkZXJfbGVuZ3RoLCB0b3RhbF9sZW5ndGgpIHt9Ci0gIExvZ2dlZFJ0cFBhY2tl
dCBydHA7CiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiBydHAudGltZXN0
YW1wX3VzOyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiBydHAudGlt
ZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIExvZ2dlZFJ0cFBhY2tldCBydHA7CiB9OwogCiBzdHJ1
Y3QgTG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcgewpAQCAtMTc2LDIxICsyNTQsMjUgQEAgc3RydWN0
IExvZ2dlZFJ0cFBhY2tldE91dGdvaW5nIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGhlYWRlcl9sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0b3Rh
bF9sZW5ndGgpCiAgICAgICA6IHJ0cCh0aW1lc3RhbXBfdXMsIGhlYWRlciwgaGVhZGVyX2xlbmd0
aCwgdG90YWxfbGVuZ3RoKSB7fQotICBMb2dnZWRSdHBQYWNrZXQgcnRwOwogICBpbnQ2NF90IGxv
Z190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gcnRwLnRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90
IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gcnRwLnRpbWVzdGFtcF91cyAvIDEwMDA7IH0K
KworICBMb2dnZWRSdHBQYWNrZXQgcnRwOwogfTsKIAogc3RydWN0IExvZ2dlZFJ0Y3BQYWNrZXQg
ewogICBMb2dnZWRSdGNwUGFja2V0KHVpbnQ2NF90IHRpbWVzdGFtcF91cywKICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90KiBwYWNrZXQsCiAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHRvdGFsX2xlbmd0aCk7CisgIExvZ2dlZFJ0Y3BQYWNrZXQodWludDY0X3QgdGltZXN0YW1wX3Vz
LCBjb25zdCBzdGQ6OnN0cmluZyYgcGFja2V0KTsKICAgTG9nZ2VkUnRjcFBhY2tldChjb25zdCBM
b2dnZWRSdGNwUGFja2V0Jik7CiAgIH5Mb2dnZWRSdGNwUGFja2V0KCk7Ci0gIGludDY0X3QgdGlt
ZXN0YW1wX3VzOwotICBzdGQ6OnZlY3Rvcjx1aW50OF90PiByYXdfZGF0YTsKKwogICBpbnQ2NF90
IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CiAgIGludDY0X3Qg
bG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAg
aW50NjRfdCB0aW1lc3RhbXBfdXM7CisgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHJhd19kYXRhOwog
fTsKIAogc3RydWN0IExvZ2dlZFJ0Y3BQYWNrZXRJbmNvbWluZyB7CkBAIC0xOTgsOSArMjgwLDEz
IEBAIHN0cnVjdCBMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCogcGFja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHRvdGFsX2xlbmd0aCkKICAgICAgIDogcnRjcCh0aW1lc3RhbXBfdXMsIHBhY2tl
dCwgdG90YWxfbGVuZ3RoKSB7fQotICBMb2dnZWRSdGNwUGFja2V0IHJ0Y3A7CisgIExvZ2dlZFJ0
Y3BQYWNrZXRJbmNvbWluZyh1aW50NjRfdCB0aW1lc3RhbXBfdXMsIGNvbnN0IHN0ZDo6c3RyaW5n
JiBwYWNrZXQpCisgICAgICA6IHJ0Y3AodGltZXN0YW1wX3VzLCBwYWNrZXQpIHt9CisKICAgaW50
NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHJ0Y3AudGltZXN0YW1wX3VzOyB9CiAg
IGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiBydGNwLnRpbWVzdGFtcF91cyAv
IDEwMDA7IH0KKworICBMb2dnZWRSdGNwUGFja2V0IHJ0Y3A7CiB9OwogCiBzdHJ1Y3QgTG9nZ2Vk
UnRjcFBhY2tldE91dGdvaW5nIHsKQEAgLTIwOCw5NyArMjk0LDE1MCBAQCBzdHJ1Y3QgTG9nZ2Vk
UnRjcFBhY2tldE91dGdvaW5nIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIHBhY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0b3RhbF9s
ZW5ndGgpCiAgICAgICA6IHJ0Y3AodGltZXN0YW1wX3VzLCBwYWNrZXQsIHRvdGFsX2xlbmd0aCkg
e30KLSAgTG9nZ2VkUnRjcFBhY2tldCBydGNwOworICBMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmco
dWludDY0X3QgdGltZXN0YW1wX3VzLCBjb25zdCBzdGQ6OnN0cmluZyYgcGFja2V0KQorICAgICAg
OiBydGNwKHRpbWVzdGFtcF91cywgcGFja2V0KSB7fQorCiAgIGludDY0X3QgbG9nX3RpbWVfdXMo
KSBjb25zdCB7IHJldHVybiBydGNwLnRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1l
X21zKCkgY29uc3QgeyByZXR1cm4gcnRjcC50aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgTG9n
Z2VkUnRjcFBhY2tldCBydGNwOwogfTsKIAogc3RydWN0IExvZ2dlZFJ0Y3BQYWNrZXRSZWNlaXZl
clJlcG9ydCB7Ci0gIGludDY0X3QgdGltZXN0YW1wX3VzOwotICBydGNwOjpSZWNlaXZlclJlcG9y
dCBycjsKKyAgTG9nZ2VkUnRjcFBhY2tldFJlY2VpdmVyUmVwb3J0KCkgPSBkZWZhdWx0OworICBM
b2dnZWRSdGNwUGFja2V0UmVjZWl2ZXJSZXBvcnQoaW50NjRfdCB0aW1lc3RhbXBfdXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGNwOjpSZWNlaXZlclJlcG9ydCYg
cnIpCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBycihycikge30KKwogICBp
bnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CiAgIGlu
dDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9
CisKKyAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CisgIHJ0Y3A6OlJlY2VpdmVyUmVwb3J0IHJyOwog
fTsKIAogc3RydWN0IExvZ2dlZFJ0Y3BQYWNrZXRTZW5kZXJSZXBvcnQgewotICBpbnQ2NF90IHRp
bWVzdGFtcF91czsKLSAgcnRjcDo6U2VuZGVyUmVwb3J0IHNyOworICBMb2dnZWRSdGNwUGFja2V0
U2VuZGVyUmVwb3J0KCkgPSBkZWZhdWx0OworICBMb2dnZWRSdGNwUGFja2V0U2VuZGVyUmVwb3J0
KGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHJ0Y3A6OlNlbmRlclJlcG9ydCYgc3IpCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3Rh
bXBfdXMpLCBzcihzcikge30KKwogICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1
cm4gdGltZXN0YW1wX3VzOyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVy
biB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CisgIHJ0
Y3A6OlNlbmRlclJlcG9ydCBzcjsKIH07CiAKIHN0cnVjdCBMb2dnZWRSdGNwUGFja2V0UmVtYiB7
Ci0gIGludDY0X3QgdGltZXN0YW1wX3VzOwotICBydGNwOjpSZW1iIHJlbWI7CisgIExvZ2dlZFJ0
Y3BQYWNrZXRSZW1iKCkgPSBkZWZhdWx0OworICBMb2dnZWRSdGNwUGFja2V0UmVtYihpbnQ2NF90
IHRpbWVzdGFtcF91cywgY29uc3QgcnRjcDo6UmVtYiYgcmVtYikKKyAgICAgIDogdGltZXN0YW1w
X3VzKHRpbWVzdGFtcF91cyksIHJlbWIocmVtYikge30KKwogICBpbnQ2NF90IGxvZ190aW1lX3Vz
KCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMo
KSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgaW50NjRfdCB0aW1l
c3RhbXBfdXM7CisgIHJ0Y3A6OlJlbWIgcmVtYjsKIH07CiAKIHN0cnVjdCBMb2dnZWRSdGNwUGFj
a2V0TmFjayB7Ci0gIGludDY0X3QgdGltZXN0YW1wX3VzOwotICBydGNwOjpOYWNrIG5hY2s7Cisg
IExvZ2dlZFJ0Y3BQYWNrZXROYWNrKCkgPSBkZWZhdWx0OworICBMb2dnZWRSdGNwUGFja2V0TmFj
ayhpbnQ2NF90IHRpbWVzdGFtcF91cywgY29uc3QgcnRjcDo6TmFjayYgbmFjaykKKyAgICAgIDog
dGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIG5hY2sobmFjaykge30KKwogICBpbnQ2NF90IGxv
Z190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CiAgIGludDY0X3QgbG9n
X3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgaW50
NjRfdCB0aW1lc3RhbXBfdXM7CisgIHJ0Y3A6Ok5hY2sgbmFjazsKIH07CiAKIHN0cnVjdCBMb2dn
ZWRSdGNwUGFja2V0VHJhbnNwb3J0RmVlZGJhY2sgewotICBpbnQ2NF90IHRpbWVzdGFtcF91czsK
LSAgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2sgdHJhbnNwb3J0X2ZlZWRiYWNrOworICBMb2dnZWRS
dGNwUGFja2V0VHJhbnNwb3J0RmVlZGJhY2soKSA9IGRlZmF1bHQ7CisgIExvZ2dlZFJ0Y3BQYWNr
ZXRUcmFuc3BvcnRGZWVkYmFjaygKKyAgICAgIGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAg
Y29uc3QgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2smIHRyYW5zcG9ydF9mZWVkYmFjaykKKyAgICAg
IDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIHRyYW5zcG9ydF9mZWVkYmFjayh0cmFuc3Bv
cnRfZmVlZGJhY2spIHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJu
IHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4g
dGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBydGNw
OjpUcmFuc3BvcnRGZWVkYmFjayB0cmFuc3BvcnRfZmVlZGJhY2s7CiB9OwogCiBzdHJ1Y3QgTG9n
Z2VkU3RhcnRFdmVudCB7CiAgIGV4cGxpY2l0IExvZ2dlZFN0YXJ0RXZlbnQoaW50NjRfdCB0aW1l
c3RhbXBfdXMpCi0gICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpIHt9Ci0gIGludDY0
X3QgdGltZXN0YW1wX3VzOworICAgICAgOiBMb2dnZWRTdGFydEV2ZW50KHRpbWVzdGFtcF91cywg
dGltZXN0YW1wX3VzIC8gMTAwMCkge30KKworICBMb2dnZWRTdGFydEV2ZW50KGludDY0X3QgdGlt
ZXN0YW1wX3VzLCBpbnQ2NF90IHV0Y19zdGFydF90aW1lX21zKQorICAgICAgOiB0aW1lc3RhbXBf
dXModGltZXN0YW1wX3VzKSwgdXRjX3N0YXJ0X3RpbWVfbXModXRjX3N0YXJ0X3RpbWVfbXMpIHt9
CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsg
fQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8g
MTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBpbnQ2NF90IHV0Y19zdGFydF90
aW1lX21zOwogfTsKIAogc3RydWN0IExvZ2dlZFN0b3BFdmVudCB7CiAgIGV4cGxpY2l0IExvZ2dl
ZFN0b3BFdmVudChpbnQ2NF90IHRpbWVzdGFtcF91cykgOiB0aW1lc3RhbXBfdXModGltZXN0YW1w
X3VzKSB7fQotICBpbnQ2NF90IHRpbWVzdGFtcF91czsKKwogICBpbnQ2NF90IGxvZ190aW1lX3Vz
KCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CiAgIGludDY0X3QgbG9nX3RpbWVfbXMo
KSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgaW50NjRfdCB0aW1l
c3RhbXBfdXM7CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkQXVkaW9SZWN2Q29uZmlnIHsKKyAgTG9nZ2Vk
QXVkaW9SZWN2Q29uZmlnKCkgPSBkZWZhdWx0OwogICBMb2dnZWRBdWRpb1JlY3ZDb25maWcoaW50
NjRfdCB0aW1lc3RhbXBfdXMsIGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZykKICAg
ICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIGNvbmZpZyhjb25maWcpIHt9Ci0gIGlu
dDY0X3QgdGltZXN0YW1wX3VzOwotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7CisKICAg
aW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBp
bnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsg
fQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25m
aWc7CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkQXVkaW9TZW5kQ29uZmlnIHsKKyAgTG9nZ2VkQXVkaW9T
ZW5kQ29uZmlnKCkgPSBkZWZhdWx0OwogICBMb2dnZWRBdWRpb1NlbmRDb25maWcoaW50NjRfdCB0
aW1lc3RhbXBfdXMsIGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZykKICAgICAgIDog
dGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIGNvbmZpZyhjb25maWcpIHt9Ci0gIGludDY0X3Qg
dGltZXN0YW1wX3VzOwotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7CisKICAgaW50NjRf
dCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90
IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisg
IGludDY0X3QgdGltZXN0YW1wX3VzOworICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7CiB9
OwogCiBzdHJ1Y3QgTG9nZ2VkVmlkZW9SZWN2Q29uZmlnIHsKKyAgTG9nZ2VkVmlkZW9SZWN2Q29u
ZmlnKCkgPSBkZWZhdWx0OwogICBMb2dnZWRWaWRlb1JlY3ZDb25maWcoaW50NjRfdCB0aW1lc3Rh
bXBfdXMsIGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZykKICAgICAgIDogdGltZXN0
YW1wX3VzKHRpbWVzdGFtcF91cyksIGNvbmZpZyhjb25maWcpIHt9Ci0gIGludDY0X3QgdGltZXN0
YW1wX3VzOwotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7CisKICAgaW50NjRfdCBsb2df
dGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190
aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0
X3QgdGltZXN0YW1wX3VzOworICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWc7CiB9OwogCiBz
dHJ1Y3QgTG9nZ2VkVmlkZW9TZW5kQ29uZmlnIHsKKyAgTG9nZ2VkVmlkZW9TZW5kQ29uZmlnKCk7
CiAgIExvZ2dlZFZpZGVvU2VuZENvbmZpZyhpbnQ2NF90IHRpbWVzdGFtcF91cywKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiYg
Y29uZmlncyk7CiAgIExvZ2dlZFZpZGVvU2VuZENvbmZpZyhjb25zdCBMb2dnZWRWaWRlb1NlbmRD
b25maWcmKTsKICAgfkxvZ2dlZFZpZGVvU2VuZENvbmZpZygpOwotICBpbnQ2NF90IHRpbWVzdGFt
cF91czsKLSAgc3RkOjp2ZWN0b3I8cnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZ3M7CisKICAg
aW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBp
bnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsg
fQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVh
bUNvbmZpZz4gY29uZmlnczsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtNDc3LDMw
ICs2MTYsNiBAQCBjbGFzcyBQYXJzZWRSdGNFdmVudExvZ05ldyB7CiAgIGZyaWVuZCBjbGFzcyBS
dGNFdmVudExvZ1Rlc3RIZWxwZXI7CiAKICBwdWJsaWM6Ci0gIH5QYXJzZWRSdGNFdmVudExvZ05l
dygpOwotCi0gIGVudW0gY2xhc3MgRXZlbnRUeXBlIHsKLSAgICBVTktOT1dOX0VWRU5UID0gMCwK
LSAgICBMT0dfU1RBUlQgPSAxLAotICAgIExPR19FTkQgPSAyLAotICAgIFJUUF9FVkVOVCA9IDMs
Ci0gICAgUlRDUF9FVkVOVCA9IDQsCi0gICAgQVVESU9fUExBWU9VVF9FVkVOVCA9IDUsCi0gICAg
TE9TU19CQVNFRF9CV0VfVVBEQVRFID0gNiwKLSAgICBERUxBWV9CQVNFRF9CV0VfVVBEQVRFID0g
NywKLSAgICBWSURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQgPSA4LAotICAgIFZJREVPX1NFTkRF
Ul9DT05GSUdfRVZFTlQgPSA5LAotICAgIEFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCA9IDEw
LAotICAgIEFVRElPX1NFTkRFUl9DT05GSUdfRVZFTlQgPSAxMSwKLSAgICBBVURJT19ORVRXT1JL
X0FEQVBUQVRJT05fRVZFTlQgPSAxNiwKLSAgICBCV0VfUFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0VW
RU5UID0gMTcsCi0gICAgQldFX1BST0JFX0ZBSUxVUkVfRVZFTlQgPSAxOCwKLSAgICBCV0VfUFJP
QkVfU1VDQ0VTU19FVkVOVCA9IDE5LAotICAgIEFMUl9TVEFURV9FVkVOVCA9IDIwLAotICAgIElD
RV9DQU5ESURBVEVfUEFJUl9DT05GSUcgPSAyMSwKLSAgICBJQ0VfQ0FORElEQVRFX1BBSVJfRVZF
TlQgPSAyMiwKLSAgfTsKLQogICBlbnVtIGNsYXNzIE1lZGlhVHlwZSB7IEFOWSwgQVVESU8sIFZJ
REVPLCBEQVRBIH07CiAgIGVudW0gY2xhc3MgVW5jb25maWd1cmVkSGVhZGVyRXh0ZW5zaW9ucyB7
CiAgICAga0RvbnRQYXJzZSwKQEAgLTU0MSw2ICs2NTYsOCBAQCBjbGFzcyBQYXJzZWRSdGNFdmVu
dExvZ05ldyB7CiAgICAgICBVbmNvbmZpZ3VyZWRIZWFkZXJFeHRlbnNpb25zIHBhcnNlX3VuY29u
ZmlndXJlZF9oZWFkZXJfZXh0ZW5zaW9ucyA9CiAgICAgICAgICAgVW5jb25maWd1cmVkSGVhZGVy
RXh0ZW5zaW9uczo6a0RvbnRQYXJzZSk7CiAKKyAgflBhcnNlZFJ0Y0V2ZW50TG9nTmV3KCk7CisK
ICAgLy8gQ2xlYXJzIHByZXZpb3VzbHkgcGFyc2VkIGV2ZW50cyBhbmQgcmVzZXRzIHRoZSBQYXJz
ZWRSdGNFdmVudExvZ05ldyB0byBhbgogICAvLyBlbXB0eSBzdGF0ZS4KICAgdm9pZCBDbGVhcigp
OwpAQCAtNTU1LDExMSArNjcyLDggQEAgY2xhc3MgUGFyc2VkUnRjRXZlbnRMb2dOZXcgewogICBi
b29sIFBhcnNlU3RyZWFtKAogICAgICAgc3RkOjppc3RyZWFtJiBzdHJlYW0pOyAgLy8gbm8tcHJl
c3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCiAKLSAgLy8gUmV0dXJucyB0aGUgbnVtYmVy
IG9mIGV2ZW50cyBpbiBhbiBFdmVudFN0cmVhbS4KLSAgc2l6ZV90IEdldE51bWJlck9mRXZlbnRz
KCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgdGhlIGFycml2YWwgdGltZXN0YW1wIChpbiBtaWNyb3Nl
Y29uZHMpIGZyb20gYSBydGNsb2c6OkV2ZW50LgotICBpbnQ2NF90IEdldFRpbWVzdGFtcChzaXpl
X3QgaW5kZXgpIGNvbnN0OwotICBpbnQ2NF90IEdldFRpbWVzdGFtcChjb25zdCBydGNsb2c6OkV2
ZW50JiBldmVudCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgdGhlIGV2ZW50IHR5cGUgb2YgdGhlIHJ0
Y2xvZzo6RXZlbnQgYXQgfGluZGV4fC4KLSAgRXZlbnRUeXBlIEdldEV2ZW50VHlwZShzaXplX3Qg
aW5kZXgpIGNvbnN0OwotICBFdmVudFR5cGUgR2V0RXZlbnRUeXBlKGNvbnN0IHJ0Y2xvZzo6RXZl
bnQmIGV2ZW50KSBjb25zdDsKLQotICAvLyBSZWFkcyB0aGUgaGVhZGVyLCBkaXJlY3Rpb24sIGhl
YWRlciBsZW5ndGggYW5kIHBhY2tldCBsZW5ndGggZnJvbSB0aGUgUlRQCi0gIC8vIGV2ZW50IGF0
IHxpbmRleHwsIGFuZCBzdG9yZXMgdGhlIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9uZGluZyBvdXRw
dXQKLSAgLy8gcGFyYW1ldGVycy4gRWFjaCBvdXRwdXQgcGFyYW1ldGVyIGNhbiBiZSBzZXQgdG8g
bnVsbHB0ciBpZiB0aGF0IHZhbHVlCi0gIC8vIGlzbid0IG5lZWRlZC4KLSAgLy8gTkI6IFRoZSBo
ZWFkZXIgbXVzdCBoYXZlIHNwYWNlIGZvciBhdCBsZWFzdCBJUF9QQUNLRVRfU0laRSBieXRlcy4K
LSAgLy8gUmV0dXJuczogYSBwb2ludGVyIHRvIGEgaGVhZGVyIGV4dGVuc2lvbnMgbWFwIGFjcXVp
cmVkIGZyb20gcGFyc2luZwotICAvLyBjb3JyZXNwb25kaW5nIEF1ZGlvL1ZpZGVvIFNlbmRlci9S
ZWNlaXZlciBjb25maWcgZXZlbnRzLgotICAvLyBXYXJuaW5nOiBpZiB0aGUgc2FtZSBTU1JDIGlz
IHJldXNlZCBieSBib3RoIHZpZGVvIGFuZCBhdWRpbyBzdHJlYW1zIGR1cmluZwotICAvLyBjYWxs
LCBleHRlbnNpb25zIG1hcHMgbWF5IGJlIGluY29ycmVjdCAodGhlIGxhc3Qgb25lIHdvdWxkIGJl
IHJldHVybmVkKS4KLSAgY29uc3Qgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAqIEdldFJ0
cEhlYWRlcigKLSAgICAgIHNpemVfdCBpbmRleCwKLSAgICAgIFBhY2tldERpcmVjdGlvbiogaW5j
b21pbmcsCi0gICAgICB1aW50OF90KiBoZWFkZXIsCi0gICAgICBzaXplX3QqIGhlYWRlcl9sZW5n
dGgsCi0gICAgICBzaXplX3QqIHRvdGFsX2xlbmd0aCwKLSAgICAgIGludCogcHJvYmVfY2x1c3Rl
cl9pZCkgY29uc3Q7Ci0gIGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKiBHZXRS
dHBIZWFkZXIoCi0gICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCwKLSAgICAgIFBhY2tl
dERpcmVjdGlvbiogaW5jb21pbmcsCi0gICAgICB1aW50OF90KiBoZWFkZXIsCi0gICAgICBzaXpl
X3QqIGhlYWRlcl9sZW5ndGgsCi0gICAgICBzaXplX3QqIHRvdGFsX2xlbmd0aCwKLSAgICAgIGlu
dCogcHJvYmVfY2x1c3Rlcl9pZCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgcGFja2V0LCBkaXJlY3Rp
b24gYW5kIHBhY2tldCBsZW5ndGggZnJvbSB0aGUgUlRDUCBldmVudCBhdCB8aW5kZXh8LAotICAv
LyBhbmQgc3RvcmVzIHRoZSB2YWx1ZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgb3V0cHV0IHBhcmFt
ZXRlcnMuCi0gIC8vIEVhY2ggb3V0cHV0IHBhcmFtZXRlciBjYW4gYmUgc2V0IHRvIG51bGxwdHIg
aWYgdGhhdCB2YWx1ZSBpc24ndCBuZWVkZWQuCi0gIC8vIE5COiBUaGUgcGFja2V0IG11c3QgaGF2
ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VUX1NJWkUgYnl0ZXMuCi0gIHZvaWQgR2V0UnRj
cFBhY2tldChzaXplX3QgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICBQYWNrZXREaXJlY3Rp
b24qIGluY29taW5nLAotICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogcGFja2V0LAotICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgpIGNvbnN0OwotICB2b2lkIEdldFJ0Y3BQ
YWNrZXQoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICBQ
YWNrZXREaXJlY3Rpb24qIGluY29taW5nLAotICAgICAgICAgICAgICAgICAgICAgdWludDhfdCog
cGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgpIGNvbnN0OwotCi0g
IC8vIFJlYWRzIGEgdmlkZW8gcmVjZWl2ZSBjb25maWcgZXZlbnQgdG8gYSBTdHJlYW1Db25maWcg
c3RydWN0LgotICAvLyBPbmx5IHRoZSBmaWVsZHMgdGhhdCBhcmUgc3RvcmVkIGluIHRoZSBwcm90
b2J1ZiB3aWxsIGJlIHdyaXR0ZW4uCi0gIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIEdldFZpZGVvUmVj
ZWl2ZUNvbmZpZyhzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIGEgdmlkZW8gc2Vu
ZCBjb25maWcgZXZlbnQgdG8gYSBTdHJlYW1Db25maWcgc3RydWN0LiBJZiB0aGUgcHJvdG8KLSAg
Ly8gY29udGFpbnMgbXVsdGlwbGUgU1NSQ3MgYW5kIFJUWCBTU1JDcyAodGhpcyB1c2VkIHRvIGJl
IHRoZSBjYXNlIGZvcgotICAvLyBzaW11bGNhc3Qgc3RyZWFtcykgdGhlbiB3ZSByZXR1cm4gb25l
IFN0cmVhbUNvbmZpZyBwZXIgU1NSQyxSVFhfU1NSQyBwYWlyLgotICAvLyBPbmx5IHRoZSBmaWVs
ZHMgdGhhdCBhcmUgc3RvcmVkIGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdyaXR0ZW4uCi0gIHN0
ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBHZXRWaWRlb1NlbmRDb25maWcoc2l6ZV90
IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyBhIGF1ZGlvIHJlY2VpdmUgY29uZmlnIGV2ZW50
IHRvIGEgU3RyZWFtQ29uZmlnIHN0cnVjdC4KLSAgLy8gT25seSB0aGUgZmllbGRzIHRoYXQgYXJl
IHN0b3JlZCBpbiB0aGUgcHJvdG9idWYgd2lsbCBiZSB3cml0dGVuLgotICBydGNsb2c6OlN0cmVh
bUNvbmZpZyBHZXRBdWRpb1JlY2VpdmVDb25maWcoc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICAv
LyBSZWFkcyBhIGNvbmZpZyBldmVudCB0byBhIFN0cmVhbUNvbmZpZyBzdHJ1Y3QuCi0gIC8vIE9u
bHkgdGhlIGZpZWxkcyB0aGF0IGFyZSBzdG9yZWQgaW4gdGhlIHByb3RvYnVmIHdpbGwgYmUgd3Jp
dHRlbi4KLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgR2V0QXVkaW9TZW5kQ29uZmlnKHNpemVfdCBp
bmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgdGhlIFNTUkMgZnJvbSB0aGUgYXVkaW8gcGxheW91
dCBldmVudCBhdCB8aW5kZXh8LiBUaGUgU1NSQyBpcyBzdG9yZWQKLSAgLy8gaW4gdGhlIG91dHB1
dCBwYXJhbWV0ZXIgc3NyYy4gVGhlIG91dHB1dCBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0byBudWxs
cHRyCi0gIC8vIGFuZCBpbiB0aGF0IGNhc2UgdGhlIGZ1bmN0aW9uIG9ubHkgYXNzZXJ0cyB0aGF0
IHRoZSBldmVudCBpcyB3ZWxsIGZvcm1lZC4KLSAgTG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQgR2V0
QXVkaW9QbGF5b3V0KHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgYml0cmF0ZSwg
ZnJhY3Rpb24gbG9zcyAoYXMgZGVmaW5lZCBpbiBSRkMgMTg4OSkgYW5kIHRvdGFsIG51bWJlciBv
ZgotICAvLyBleHBlY3RlZCBwYWNrZXRzIGZyb20gdGhlIGxvc3MgYmFzZWQgQldFIGV2ZW50IGF0
IHxpbmRleHwgYW5kIHN0b3JlcyB0aGUKLSAgLy8gdmFsdWVzIGluCi0gIC8vIHRoZSBjb3JyZXNw
b25kaW5nIG91dHB1dCBwYXJhbWV0ZXJzLiBFYWNoIG91dHB1dCBwYXJhbWV0ZXIgY2FuIGJlIHNl
dCB0bwotICAvLyBudWxscHRyIGlmIHRoYXQKLSAgLy8gdmFsdWUgaXNuJ3QgbmVlZGVkLgotICBM
b2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUgR2V0TG9zc0Jhc2VkQndlVXBkYXRlKHNpemVfdCBpbmRl
eCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgYml0cmF0ZSBhbmQgZGV0ZWN0b3Jfc3RhdGUgZnJvbSB0
aGUgZGVsYXkgYmFzZWQgQldFIGV2ZW50IGF0IHxpbmRleHwKLSAgLy8gYW5kIHN0b3JlcyB0aGUg
dmFsdWVzIGluIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBwYXJhbWV0ZXJzLiBFYWNoIG91dHB1
dAotICAvLyBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0byBudWxscHRyIGlmIHRoYXQKLSAgLy8gdmFs
dWUgaXNuJ3QgbmVlZGVkLgotICBMb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRlIEdldERlbGF5QmFz
ZWRCd2VVcGRhdGUoc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyBhIGF1ZGlvIG5l
dHdvcmsgYWRhcHRhdGlvbiBldmVudCB0byBhIChub24tTlVMTCkKLSAgLy8gQXVkaW9FbmNvZGVy
UnVudGltZUNvbmZpZyBzdHJ1Y3QuIE9ubHkgdGhlIGZpZWxkcyB0aGF0IGFyZQotICAvLyBzdG9y
ZWQgaW4gdGhlIHByb3RvYnVmIHdpbGwgYmUgd3JpdHRlbi4KLSAgTG9nZ2VkQXVkaW9OZXR3b3Jr
QWRhcHRhdGlvbkV2ZW50IEdldEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oCi0gICAgICBzaXplX3Qg
aW5kZXgpIGNvbnN0OwotCi0gIExvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCBHZXRC
d2VQcm9iZUNsdXN0ZXJDcmVhdGVkKAotICAgICAgc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICBM
b2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCBHZXRCd2VQcm9iZUZhaWx1cmUoc2l6ZV90IGluZGV4
KSBjb25zdDsKLSAgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQgR2V0QndlUHJvYmVTdWNjZXNz
KHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KICAgTWVkaWFUeXBlIEdldE1lZGlhVHlwZSh1aW50MzJf
dCBzc3JjLCBQYWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdDsKIAotICBMb2dnZWRBbHJT
dGF0ZUV2ZW50IEdldEFsclN0YXRlKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgTG9nZ2VkSWNl
Q2FuZGlkYXRlUGFpckNvbmZpZyBHZXRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKHNpemVfdCBpbmRl
eCkgY29uc3Q7Ci0KLSAgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50IEdldEljZUNhbmRpZGF0
ZVBhaXJFdmVudChzaXplX3QgaW5kZXgpIGNvbnN0OwotCiAgIC8vIENvbmZpZ3VyZWQgU1NSQ3Mu
CiAgIGNvbnN0IHN0ZDo6c2V0PHVpbnQzMl90PiYgaW5jb21pbmdfcnR4X3NzcmNzKCkgY29uc3Qg
ewogICAgIHJldHVybiBpbmNvbWluZ19ydHhfc3NyY3NfOwpAQCAtODQxLDcgKzg1NSwzNiBAQCBj
bGFzcyBQYXJzZWRSdGNFdmVudExvZ05ldyB7CiAgIGJvb2wgUGFyc2VTdHJlYW1JbnRlcm5hbCgK
ICAgICAgIHN0ZDo6aXN0cmVhbSYgc3RyZWFtKTsgIC8vIG5vLXByZXN1Ym1pdC1jaGVjayBUT0RP
KHdlYnJ0Yzo4OTgyKQogCi0gIHZvaWQgU3RvcmVQYXJzZWRFdmVudChjb25zdCBydGNsb2c6OkV2
ZW50JiBldmVudCk7CisgIHZvaWQgU3RvcmVQYXJzZWRMZWdhY3lFdmVudChjb25zdCBydGNsb2c6
OkV2ZW50JiBldmVudCk7CisKKyAgLy8gUmVhZHMgdGhlIGFycml2YWwgdGltZXN0YW1wIChpbiBt
aWNyb3NlY29uZHMpIGZyb20gYSBydGNsb2c6OkV2ZW50LgorICBpbnQ2NF90IEdldFRpbWVzdGFt
cChjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3Q7CisKKyAgLy8gUmVhZHMgdGhlIGhl
YWRlciwgZGlyZWN0aW9uLCBoZWFkZXIgbGVuZ3RoIGFuZCBwYWNrZXQgbGVuZ3RoIGZyb20gdGhl
IFJUUAorICAvLyBldmVudCBhdCB8aW5kZXh8LCBhbmQgc3RvcmVzIHRoZSB2YWx1ZXMgaW4gdGhl
IGNvcnJlc3BvbmRpbmcgb3V0cHV0CisgIC8vIHBhcmFtZXRlcnMuIEVhY2ggb3V0cHV0IHBhcmFt
ZXRlciBjYW4gYmUgc2V0IHRvIG51bGxwdHIgaWYgdGhhdCB2YWx1ZQorICAvLyBpc24ndCBuZWVk
ZWQuCisgIC8vIE5COiBUaGUgaGVhZGVyIG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBf
UEFDS0VUX1NJWkUgYnl0ZXMuCisgIC8vIFJldHVybnM6IGEgcG9pbnRlciB0byBhIGhlYWRlciBl
eHRlbnNpb25zIG1hcCBhY3F1aXJlZCBmcm9tIHBhcnNpbmcKKyAgLy8gY29ycmVzcG9uZGluZyBB
dWRpby9WaWRlbyBTZW5kZXIvUmVjZWl2ZXIgY29uZmlnIGV2ZW50cy4KKyAgLy8gV2FybmluZzog
aWYgdGhlIHNhbWUgU1NSQyBpcyByZXVzZWQgYnkgYm90aCB2aWRlbyBhbmQgYXVkaW8gc3RyZWFt
cyBkdXJpbmcKKyAgLy8gY2FsbCwgZXh0ZW5zaW9ucyBtYXBzIG1heSBiZSBpbmNvcnJlY3QgKHRo
ZSBsYXN0IG9uZSB3b3VsZCBiZSByZXR1cm5lZCkuCisgIGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVy
RXh0ZW5zaW9uTWFwKiBHZXRSdHBIZWFkZXIoCisgICAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBl
dmVudCwKKyAgICAgIFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcsCisgICAgICB1aW50OF90KiBo
ZWFkZXIsCisgICAgICBzaXplX3QqIGhlYWRlcl9sZW5ndGgsCisgICAgICBzaXplX3QqIHRvdGFs
X2xlbmd0aCwKKyAgICAgIGludCogcHJvYmVfY2x1c3Rlcl9pZCkgY29uc3Q7CisKKyAgLy8gUmVh
ZHMgcGFja2V0LCBkaXJlY3Rpb24gYW5kIHBhY2tldCBsZW5ndGggZnJvbSB0aGUgUlRDUCBldmVu
dCBhdCB8aW5kZXh8LAorICAvLyBhbmQgc3RvcmVzIHRoZSB2YWx1ZXMgaW4gdGhlIGNvcnJlc3Bv
bmRpbmcgb3V0cHV0IHBhcmFtZXRlcnMuCisgIC8vIEVhY2ggb3V0cHV0IHBhcmFtZXRlciBjYW4g
YmUgc2V0IHRvIG51bGxwdHIgaWYgdGhhdCB2YWx1ZSBpc24ndCBuZWVkZWQuCisgIC8vIE5COiBU
aGUgcGFja2V0IG11c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VUX1NJWkUgYnl0
ZXMuCisgIHZvaWQgR2V0UnRjcFBhY2tldChjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCwKKyAg
ICAgICAgICAgICAgICAgICAgIFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcsCisgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90KiBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3Qq
IGxlbmd0aCkgY29uc3Q7CiAKICAgcnRjbG9nOjpTdHJlYW1Db25maWcgR2V0VmlkZW9SZWNlaXZl
Q29uZmlnKGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdDsKICAgc3RkOjp2ZWN0b3I8
cnRjbG9nOjpTdHJlYW1Db25maWc+IEdldFZpZGVvU2VuZENvbmZpZygKQEAgLTg3Myw3ICs5MTYs
MzEgQEAgY2xhc3MgUGFyc2VkUnRjRXZlbnRMb2dOZXcgewogICBMb2dnZWRJY2VDYW5kaWRhdGVQ
YWlyRXZlbnQgR2V0SWNlQ2FuZGlkYXRlUGFpckV2ZW50KAogICAgICAgY29uc3QgcnRjbG9nOjpF
dmVudCYgZXZlbnQpIGNvbnN0OwogCi0gIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6RXZlbnQ+IGV2ZW50
c187CisgIC8vIFBhcnNpbmcgZnVuY3Rpb25zIGZvciBuZXcgZm9ybWF0LgorICB2b2lkIFN0b3Jl
UGFyc2VkTmV3Rm9ybWF0RXZlbnQoY29uc3QgcnRjbG9nMjo6RXZlbnRTdHJlYW0mIGV2ZW50KTsK
KyAgdm9pZCBTdG9yZUluY29taW5nUnRwUGFja2V0cyhjb25zdCBydGNsb2cyOjpJbmNvbWluZ1J0
cFBhY2tldHMmIHByb3RvKTsKKyAgdm9pZCBTdG9yZU91dGdvaW5nUnRwUGFja2V0cyhjb25zdCBy
dGNsb2cyOjpPdXRnb2luZ1J0cFBhY2tldHMmIHByb3RvKTsKKyAgdm9pZCBTdG9yZUluY29taW5n
UnRjcFBhY2tldHMoY29uc3QgcnRjbG9nMjo6SW5jb21pbmdSdGNwUGFja2V0cyYgcHJvdG8pOwor
ICB2b2lkIFN0b3JlT3V0Z29pbmdSdGNwUGFja2V0cyhjb25zdCBydGNsb2cyOjpPdXRnb2luZ1J0
Y3BQYWNrZXRzJiBwcm90byk7CisgIHZvaWQgU3RvcmVBdWRpb1BsYXlvdXRFdmVudChjb25zdCBy
dGNsb2cyOjpBdWRpb1BsYXlvdXRFdmVudHMmIHByb3RvKTsKKyAgdm9pZCBTdG9yZVN0YXJ0RXZl
bnQoY29uc3QgcnRjbG9nMjo6QmVnaW5Mb2dFdmVudCYgcHJvdG8pOworICB2b2lkIFN0b3JlU3Rv
cEV2ZW50KGNvbnN0IHJ0Y2xvZzI6OkVuZExvZ0V2ZW50JiBwcm90byk7CisgIHZvaWQgU3RvcmVC
d2VMb3NzQmFzZWRVcGRhdGUoY29uc3QgcnRjbG9nMjo6TG9zc0Jhc2VkQndlVXBkYXRlcyYgcHJv
dG8pOworICB2b2lkIFN0b3JlQndlRGVsYXlCYXNlZFVwZGF0ZShjb25zdCBydGNsb2cyOjpEZWxh
eUJhc2VkQndlVXBkYXRlcyYgcHJvdG8pOworICB2b2lkIFN0b3JlQXVkaW9OZXR3b3JrQWRhcHRh
dGlvbkV2ZW50KAorICAgICAgY29uc3QgcnRjbG9nMjo6QXVkaW9OZXR3b3JrQWRhcHRhdGlvbnMm
IHByb3RvKTsKKyAgdm9pZCBTdG9yZUJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQoY29uc3QgcnRjbG9n
Mjo6QndlUHJvYmVDbHVzdGVyJiBwcm90byk7CisgIHZvaWQgU3RvcmVCd2VQcm9iZVN1Y2Nlc3NF
dmVudChjb25zdCBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdFN1Y2Nlc3MmIHByb3RvKTsKKyAgdm9p
ZCBTdG9yZUJ3ZVByb2JlRmFpbHVyZUV2ZW50KGNvbnN0IHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0
RmFpbHVyZSYgcHJvdG8pOworICB2b2lkIFN0b3JlQWxyU3RhdGVFdmVudChjb25zdCBydGNsb2cy
OjpBbHJTdGF0ZSYgcHJvdG8pOworICB2b2lkIFN0b3JlSWNlQ2FuZGlkYXRlUGFpckNvbmZpZygK
KyAgICAgIGNvbnN0IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWcmIHByb3RvKTsKKyAg
dm9pZCBTdG9yZUljZUNhbmRpZGF0ZUV2ZW50KGNvbnN0IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBh
aXJFdmVudCYgcHJvdG8pOworICB2b2lkIFN0b3JlQXVkaW9SZWN2Q29uZmlnKGNvbnN0IHJ0Y2xv
ZzI6OkF1ZGlvUmVjdlN0cmVhbUNvbmZpZyYgcHJvdG8pOworICB2b2lkIFN0b3JlQXVkaW9TZW5k
Q29uZmlnKGNvbnN0IHJ0Y2xvZzI6OkF1ZGlvU2VuZFN0cmVhbUNvbmZpZyYgcHJvdG8pOworICB2
b2lkIFN0b3JlVmlkZW9SZWN2Q29uZmlnKGNvbnN0IHJ0Y2xvZzI6OlZpZGVvUmVjdlN0cmVhbUNv
bmZpZyYgcHJvdG8pOworICB2b2lkIFN0b3JlVmlkZW9TZW5kQ29uZmlnKGNvbnN0IHJ0Y2xvZzI6
OlZpZGVvU2VuZFN0cmVhbUNvbmZpZyYgcHJvdG8pOworICAvLyBFbmQgb2YgbmV3IHBhcnNpbmcg
ZnVuY3Rpb25zLgogCiAgIHN0cnVjdCBTdHJlYW0gewogICAgIFN0cmVhbSh1aW50MzJfdCBzc3Jj
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
cnRjX2V2ZW50X2xvZ191bml0dGVzdC5jYwppbmRleCBlMjM4Zjg0ODg0NjE4YWMxOTA3M2U3MzA0
ZTAxZWUxNzQ2ZTRiYzkxLi5mN2I3ODk4OTkzZjdjOTJiOTE1N2Q5YTc5MThlOTI0ZDgxMTBjYjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdC5jYwpAQCAtMTAxLDEzICsxMDEsMTYgQEAgc3RydWN0
IEV2ZW50Q291bnRzIHsKIH07CiAKIGNsYXNzIFJ0Y0V2ZW50TG9nU2Vzc2lvbgotICAgIDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnR1cGxlPHVpbnQ2NF90LCBpbnQ2NF90
Pj4geworICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTwKKyAgICAgICAgICBz
dGQ6OnR1cGxlPHVpbnQ2NF90LCBpbnQ2NF90LCBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlPj4g
ewogIHB1YmxpYzoKICAgUnRjRXZlbnRMb2dTZXNzaW9uKCkKICAgICAgIDogc2VlZF8oc3RkOjpn
ZXQ8MD4oR2V0UGFyYW0oKSkpLAogICAgICAgICBwcm5nXyhzZWVkXyksCisgICAgICAgIG91dHB1
dF9wZXJpb2RfbXNfKHN0ZDo6Z2V0PDE+KEdldFBhcmFtKCkpKSwKKyAgICAgICAgZW5jb2Rpbmdf
dHlwZV8oc3RkOjpnZXQ8Mj4oR2V0UGFyYW0oKSkpLAogICAgICAgICBnZW5fKHNlZWRfICogODgw
MDAxVUwpLAotICAgICAgICBvdXRwdXRfcGVyaW9kX21zXyhzdGQ6OmdldDwxPihHZXRQYXJhbSgp
KSkgeworICAgICAgICB2ZXJpZmllcl8oZW5jb2RpbmdfdHlwZV8pIHsKICAgICBjbG9ja18uU2V0
VGltZU1pY3Jvcyhwcm5nXy5SYW5kPHVpbnQzMl90PigpKTsKICAgICAvLyBGaW5kIHRoZSBuYW1l
IG9mIHRoZSBjdXJyZW50IHRlc3QsIGluIG9yZGVyIHRvIHVzZSBpdCBhcyBhIHRlbXBvcmFyeQog
ICAgIC8vIGZpbGVuYW1lLgpAQCAtMTY2LDEyICsxNjksMTUgQEAgY2xhc3MgUnRjRXZlbnRMb2dT
ZXNzaW9uCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0Y3BQYWNrZXRP
dXRnb2luZz4+IG91dGdvaW5nX3J0Y3BfbGlzdF87CiAKICAgaW50NjRfdCBzdGFydF90aW1lX3Vz
XzsKKyAgaW50NjRfdCB1dGNfc3RhcnRfdGltZV91c187CiAgIGludDY0X3Qgc3RvcF90aW1lX3Vz
XzsKIAogICBjb25zdCB1aW50NjRfdCBzZWVkXzsKICAgUmFuZG9tIHBybmdfOworICBjb25zdCBp
bnQ2NF90IG91dHB1dF9wZXJpb2RfbXNfOworICBjb25zdCBSdGNFdmVudExvZzo6RW5jb2RpbmdU
eXBlIGVuY29kaW5nX3R5cGVfOwogICB0ZXN0OjpFdmVudEdlbmVyYXRvciBnZW5fOwotICBpbnQ2
NF90IG91dHB1dF9wZXJpb2RfbXNfOworICB0ZXN0OjpFdmVudFZlcmlmaWVyIHZlcmlmaWVyXzsK
ICAgcnRjOjpTY29wZWRGYWtlQ2xvY2sgY2xvY2tfOwogICBzdGQ6OnN0cmluZyB0ZW1wX2ZpbGVu
YW1lXzsKIH07CkBAIC0yODQsOCArMjkwLDcgQEAgdm9pZCBSdGNFdmVudExvZ1Nlc3Npb246Oldy
aXRlTG9nKEV2ZW50Q291bnRzIGNvdW50LAogICAvLyBNYXliZSBhbHdheXMgdXNlIHRoZSBTY29w
ZWRGYWtlQ2xvY2ssIGJ1dCBjb25kaXRpb25hbGx5IFNsZWVwTXMoKT8KIAogICAvLyBUaGUgbG9n
IGZpbGUgd2lsbCBiZSBmbHVzaGVkIHRvIGRpc2sgd2hlbiB0aGUgZXZlbnRfbG9nIGdvZXMgb3V0
IG9mIHNjb3BlLgotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2c+IGV2ZW50X2xvZygKLSAg
ICAgIFJ0Y0V2ZW50TG9nOjpDcmVhdGUoUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TGVnYWN5
KSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZz4gZXZlbnRfbG9nKFJ0Y0V2ZW50TG9n
OjpDcmVhdGUoZW5jb2RpbmdfdHlwZV8pKTsKIAogICAvLyBXZSBjYW4ndCBzZW5kIG9yIHJlY2Vp
dmUgcGFja2V0cyB3aXRob3V0IGNvbmZpZ3VyZWQgc3RyZWFtcy4KICAgUlRDX0NIRUNLX0dFKGNv
dW50LnZpZGVvX3JlY3Zfc3RyZWFtcywgMSk7CkBAIC0zMDYsNiArMzExLDcgQEAgdm9pZCBSdGNF
dmVudExvZ1Nlc3Npb246OldyaXRlTG9nKEV2ZW50Q291bnRzIGNvdW50LAogICAgICAgICAgIGFi
c2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nT3V0cHV0RmlsZT4odGVtcF9maWxlbmFtZV8sIDEw
MDAwMDAwKSwKICAgICAgICAgICBvdXRwdXRfcGVyaW9kX21zXyk7CiAgICAgICBzdGFydF90aW1l
X3VzXyA9IHJ0Yzo6VGltZU1pY3JvcygpOworICAgICAgdXRjX3N0YXJ0X3RpbWVfdXNfID0gcnRj
OjpUaW1lVVRDTWljcm9zKCk7CiAgICAgfQogCiAgICAgY2xvY2tfLkFkdmFuY2VUaW1lTWljcm9z
KHBybmdfLlJhbmQoMjApICogMTAwMCk7CkBAIC00NjUsMTkgKzQ3MSwxOCBAQCB2b2lkIFJ0Y0V2
ZW50TG9nU2Vzc2lvbjo6UmVhZEFuZFZlcmlmeUxvZygpIHsKICAgLy8gU3RhcnQgYW5kIHN0b3Ag
ZXZlbnRzLgogICBhdXRvJiBwYXJzZWRfc3RhcnRfbG9nX2V2ZW50cyA9IHBhcnNlZF9sb2cuc3Rh
cnRfbG9nX2V2ZW50cygpOwogICBBU1NFUlRfRVEocGFyc2VkX3N0YXJ0X2xvZ19ldmVudHMuc2l6
ZSgpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICB0ZXN0
OjpWZXJpZnlMb2dnZWRTdGFydEV2ZW50KHN0YXJ0X3RpbWVfdXNfLCBwYXJzZWRfc3RhcnRfbG9n
X2V2ZW50c1swXSkpOworICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkU3RhcnRFdmVudChzdGFydF90
aW1lX3VzXywgdXRjX3N0YXJ0X3RpbWVfdXNfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJzZWRfc3RhcnRfbG9nX2V2ZW50c1swXSk7CiAKICAgYXV0byYgcGFyc2VkX3N0
b3BfbG9nX2V2ZW50cyA9IHBhcnNlZF9sb2cuc3RvcF9sb2dfZXZlbnRzKCk7CiAgIEFTU0VSVF9F
UShwYXJzZWRfc3RvcF9sb2dfZXZlbnRzLnNpemUoKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSk7
Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgdGVzdDo6VmVyaWZ5TG9nZ2VkU3RvcEV2ZW50KHN0b3Bf
dGltZV91c18sIHBhcnNlZF9zdG9wX2xvZ19ldmVudHNbMF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlm
eUxvZ2dlZFN0b3BFdmVudChzdG9wX3RpbWVfdXNfLCBwYXJzZWRfc3RvcF9sb2dfZXZlbnRzWzBd
KTsKIAogICBhdXRvJiBwYXJzZWRfYWxyX3N0YXRlX2V2ZW50cyA9IHBhcnNlZF9sb2cuYWxyX3N0
YXRlX2V2ZW50cygpOwogICBBU1NFUlRfRVEocGFyc2VkX2Fscl9zdGF0ZV9ldmVudHMuc2l6ZSgp
LCBhbHJfc3RhdGVfbGlzdF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJz
ZWRfYWxyX3N0YXRlX2V2ZW50cy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6
OlZlcmlmeUxvZ2dlZEFsclN0YXRlRXZlbnQoKmFscl9zdGF0ZV9saXN0X1tpXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9hbHJfc3RhdGVf
ZXZlbnRzW2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEFsclN0YXRlRXZlbnQoKmFs
cl9zdGF0ZV9saXN0X1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJzZWRfYWxyX3N0YXRlX2V2ZW50c1tpXSk7CiAgIH0KIAogICBjb25zdCBhdXRvJiBwYXJz
ZWRfYXVkaW9fcGxheW91dF9tYXAgPSBwYXJzZWRfbG9nLmF1ZGlvX3BsYXlvdXRfZXZlbnRzKCk7
CkBAIC00ODgsOCArNDkzLDggQEAgdm9pZCBSdGNFdmVudExvZ1Nlc3Npb246OlJlYWRBbmRWZXJp
ZnlMb2coKSB7CiAgICAgY29uc3QgYXV0byYgYXVkaW9fcGxheW91dF9zdHJlYW0gPSBhdWRpb19w
bGF5b3V0X21hcF9bc3NyY107CiAgICAgQVNTRVJUX0VRKHBhcnNlZF9hdWRpb19wbGF5b3V0X3N0
cmVhbS5zaXplKCksIGF1ZGlvX3BsYXlvdXRfc3RyZWFtLnNpemUoKSk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwYXJzZWRfYXVkaW9fcGxheW91dF9tYXAuc2l6ZSgpOyBpKyspIHsKLSAg
ICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEF1ZGlvUGxheW91dEV2ZW50KAotICAg
ICAgICAgICphdWRpb19wbGF5b3V0X3N0cmVhbVtpXSwgcGFyc2VkX2F1ZGlvX3BsYXlvdXRfc3Ry
ZWFtW2ldKSk7CisgICAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQo
KmF1ZGlvX3BsYXlvdXRfc3RyZWFtW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcnNlZF9hdWRpb19wbGF5b3V0X3N0cmVhbVtpXSk7CiAgICAgfQog
ICB9CiAKQEAgLTQ5OCwyMiArNTAzLDIyIEBAIHZvaWQgUnRjRXZlbnRMb2dTZXNzaW9uOjpSZWFk
QW5kVmVyaWZ5TG9nKCkgewogICBBU1NFUlRfRVEocGFyc2VkX2F1ZGlvX25ldHdvcmtfYWRhcHRh
dGlvbl9ldmVudHMuc2l6ZSgpLAogICAgICAgICAgICAgYW5hX2NvbmZpZ3NfbGlzdF8uc2l6ZSgp
KTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfYXVkaW9fbmV0d29ya19hZGFwdGF0
aW9uX2V2ZW50cy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxv
Z2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCgKLSAgICAgICAgKmFuYV9jb25maWdzX2xp
c3RfW2ldLCBwYXJzZWRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uX2V2ZW50c1tpXSkpOworICAg
IHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRXZlbnQoCisgICAg
ICAgICphbmFfY29uZmlnc19saXN0X1tpXSwgcGFyc2VkX2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlv
bl9ldmVudHNbaV0pOwogICB9CiAKICAgYXV0byYgcGFyc2VkX2J3ZV9kZWxheV91cGRhdGVzID0g
cGFyc2VkX2xvZy5id2VfZGVsYXlfdXBkYXRlcygpOwogICBBU1NFUlRfRVEocGFyc2VkX2J3ZV9k
ZWxheV91cGRhdGVzLnNpemUoKSwgYndlX2RlbGF5X2xpc3RfLnNpemUoKSk7CiAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2J3ZV9kZWxheV91cGRhdGVzLnNpemUoKTsgaSsrKSB7Ci0g
ICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSgKLSAg
ICAgICAgKmJ3ZV9kZWxheV9saXN0X1tpXSwgcGFyc2VkX2J3ZV9kZWxheV91cGRhdGVzW2ldKSk7
CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoKmJ3ZV9kZWxh
eV9saXN0X1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJzZWRfYndlX2RlbGF5X3VwZGF0ZXNbaV0pOwogICB9CiAKICAgYXV0byYgcGFyc2VkX2J3
ZV9sb3NzX3VwZGF0ZXMgPSBwYXJzZWRfbG9nLmJ3ZV9sb3NzX3VwZGF0ZXMoKTsKICAgQVNTRVJU
X0VRKHBhcnNlZF9id2VfbG9zc191cGRhdGVzLnNpemUoKSwgYndlX2xvc3NfbGlzdF8uc2l6ZSgp
KTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfYndlX2xvc3NfdXBkYXRlcy5zaXpl
KCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZUxvc3NCYXNl
ZFVwZGF0ZSgKLSAgICAgICAgKmJ3ZV9sb3NzX2xpc3RfW2ldLCBwYXJzZWRfYndlX2xvc3NfdXBk
YXRlc1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUo
KmJ3ZV9sb3NzX2xpc3RfW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyc2VkX2J3ZV9sb3NzX3VwZGF0ZXNbaV0pOwogICB9CiAKICAgYXV0byYgcGFy
c2VkX2J3ZV9wcm9iZV9jbHVzdGVyX2NyZWF0ZWRfZXZlbnRzID0KQEAgLTUyMSwzMCArNTI2LDMw
IEBAIHZvaWQgUnRjRXZlbnRMb2dTZXNzaW9uOjpSZWFkQW5kVmVyaWZ5TG9nKCkgewogICBBU1NF
UlRfRVEocGFyc2VkX2J3ZV9wcm9iZV9jbHVzdGVyX2NyZWF0ZWRfZXZlbnRzLnNpemUoKSwKICAg
ICAgICAgICAgIHByb2JlX2NyZWF0aW9uX2xpc3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcGFyc2VkX2J3ZV9wcm9iZV9jbHVzdGVyX2NyZWF0ZWRfZXZlbnRzLnNpemUoKTsg
aSsrKSB7Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQndlUHJvYmVDbHVzdGVy
Q3JlYXRlZEV2ZW50KAotICAgICAgICAqcHJvYmVfY3JlYXRpb25fbGlzdF9baV0sIHBhcnNlZF9i
d2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50c1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJp
ZnlMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQoCisgICAgICAgICpwcm9iZV9jcmVh
dGlvbl9saXN0X1tpXSwgcGFyc2VkX2J3ZV9wcm9iZV9jbHVzdGVyX2NyZWF0ZWRfZXZlbnRzW2ld
KTsKICAgfQogCiAgIGF1dG8mIHBhcnNlZF9id2VfcHJvYmVfZmFpbHVyZV9ldmVudHMgPSBwYXJz
ZWRfbG9nLmJ3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50cygpOwogICBBU1NFUlRfRVEocGFyc2VkX2J3
ZV9wcm9iZV9mYWlsdXJlX2V2ZW50cy5zaXplKCksIHByb2JlX2ZhaWx1cmVfbGlzdF8uc2l6ZSgp
KTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfYndlX3Byb2JlX2ZhaWx1cmVfZXZl
bnRzLnNpemUoKTsgaSsrKSB7Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQndl
UHJvYmVGYWlsdXJlRXZlbnQoCi0gICAgICAgICpwcm9iZV9mYWlsdXJlX2xpc3RfW2ldLCBwYXJz
ZWRfYndlX3Byb2JlX2ZhaWx1cmVfZXZlbnRzW2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxv
Z2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50KAorICAgICAgICAqcHJvYmVfZmFpbHVyZV9saXN0X1tp
XSwgcGFyc2VkX2J3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50c1tpXSk7CiAgIH0KIAogICBhdXRvJiBw
YXJzZWRfYndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRzID0gcGFyc2VkX2xvZy5id2VfcHJvYmVfc3Vj
Y2Vzc19ldmVudHMoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF9id2VfcHJvYmVfc3VjY2Vzc19ldmVu
dHMuc2l6ZSgpLCBwcm9iZV9zdWNjZXNzX2xpc3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcGFyc2VkX2J3ZV9wcm9iZV9zdWNjZXNzX2V2ZW50cy5zaXplKCk7IGkrKykgewot
ICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50KAot
ICAgICAgICAqcHJvYmVfc3VjY2Vzc19saXN0X1tpXSwgcGFyc2VkX2J3ZV9wcm9iZV9zdWNjZXNz
X2V2ZW50c1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NF
dmVudCgKKyAgICAgICAgKnByb2JlX3N1Y2Nlc3NfbGlzdF9baV0sIHBhcnNlZF9id2VfcHJvYmVf
c3VjY2Vzc19ldmVudHNbaV0pOwogICB9CiAKICAgYXV0byYgcGFyc2VkX2ljZV9jYW5kaWRhdGVf
cGFpcl9jb25maWdzID0KICAgICAgIHBhcnNlZF9sb2cuaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZp
Z3MoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlncy5zaXpl
KCksIGljZV9jb25maWdfbGlzdF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
YXJzZWRfaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZ3Muc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBF
Q1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAotICAgICAg
ICAqaWNlX2NvbmZpZ19saXN0X1tpXSwgcGFyc2VkX2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWdz
W2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWco
CisgICAgICAgICppY2VfY29uZmlnX2xpc3RfW2ldLCBwYXJzZWRfaWNlX2NhbmRpZGF0ZV9wYWly
X2NvbmZpZ3NbaV0pOwogICB9CiAKICAgYXV0byYgcGFyc2VkX2ljZV9jYW5kaWRhdGVfcGFpcl9l
dmVudHMgPQpAQCAtNTUyLDggKzU1Nyw4IEBAIHZvaWQgUnRjRXZlbnRMb2dTZXNzaW9uOjpSZWFk
QW5kVmVyaWZ5TG9nKCkgewogICBBU1NFUlRfRVEocGFyc2VkX2ljZV9jYW5kaWRhdGVfcGFpcl9l
dmVudHMuc2l6ZSgpLAogICAgICAgICAgICAgcGFyc2VkX2ljZV9jYW5kaWRhdGVfcGFpcl9ldmVu
dHMuc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfaWNlX2NhbmRpZGF0
ZV9wYWlyX2V2ZW50cy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlm
eUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCgKLSAgICAgICAgKmljZV9ldmVudF9saXN0X1tp
XSwgcGFyc2VkX2ljZV9jYW5kaWRhdGVfcGFpcl9ldmVudHNbaV0pKTsKKyAgICB2ZXJpZmllcl8u
VmVyaWZ5TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50KAorICAgICAgICAqaWNlX2V2ZW50X2xp
c3RfW2ldLCBwYXJzZWRfaWNlX2NhbmRpZGF0ZV9wYWlyX2V2ZW50c1tpXSk7CiAgIH0KIAogICBh
dXRvJiBwYXJzZWRfaW5jb21pbmdfcnRwX3BhY2tldHNfYnlfc3NyYyA9CkBAIC01NjYsOCArNTcx
LDggQEAgdm9pZCBSdGNFdmVudExvZ1Nlc3Npb246OlJlYWRBbmRWZXJpZnlMb2coKSB7CiAgICAg
Y29uc3QgYXV0byYgcnRwX3N0cmVhbSA9IGluY29taW5nX3J0cF9tYXBfW3NzcmNdOwogICAgIEFT
U0VSVF9FUShwYXJzZWRfcnRwX3N0cmVhbS5zaXplKCksIHJ0cF9zdHJlYW0uc2l6ZSgpKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9ydHBfc3RyZWFtLnNpemUoKTsgaSsrKSB7
Ci0gICAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRSdHBQYWNrZXRJbmNvbWluZygq
cnRwX3N0cmVhbVtpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnNlZF9ydHBfc3RyZWFtW2ldKSk7CisgICAgICB2ZXJpZmllcl8uVmVy
aWZ5TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcoKnJ0cF9zdHJlYW1baV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX3J0cF9zdHJlYW1baV0pOwog
ICAgIH0KICAgfQogCkBAIC01ODEsNDcgKzU4Niw0NyBAQCB2b2lkIFJ0Y0V2ZW50TG9nU2Vzc2lv
bjo6UmVhZEFuZFZlcmlmeUxvZygpIHsKICAgICBjb25zdCBhdXRvJiBydHBfc3RyZWFtID0gb3V0
Z29pbmdfcnRwX21hcF9bc3NyY107CiAgICAgQVNTRVJUX0VRKHBhcnNlZF9ydHBfc3RyZWFtLnNp
emUoKSwgcnRwX3N0cmVhbS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFy
c2VkX3J0cF9zdHJlYW0uc2l6ZSgpOyBpKyspIHsKLSAgICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZl
cmlmeUxvZ2dlZFJ0cFBhY2tldE91dGdvaW5nKCpydHBfc3RyZWFtW2ldLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX3J0cF9zdHJl
YW1baV0pKTsKKyAgICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRSdHBQYWNrZXRPdXRnb2luZygq
cnRwX3N0cmVhbVtpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJzZWRfcnRwX3N0cmVhbVtpXSk7CiAgICAgfQogICB9CiAKICAgYXV0byYgcGFyc2Vk
X2luY29taW5nX3J0Y3BfcGFja2V0cyA9IHBhcnNlZF9sb2cuaW5jb21pbmdfcnRjcF9wYWNrZXRz
KCk7CiAgIEFTU0VSVF9FUShwYXJzZWRfaW5jb21pbmdfcnRjcF9wYWNrZXRzLnNpemUoKSwgaW5j
b21pbmdfcnRjcF9saXN0Xy5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNl
ZF9pbmNvbWluZ19ydGNwX3BhY2tldHMuc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0
ZXN0OjpWZXJpZnlMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcoCi0gICAgICAgICppbmNvbWluZ19y
dGNwX2xpc3RfW2ldLCBwYXJzZWRfaW5jb21pbmdfcnRjcF9wYWNrZXRzW2ldKSk7CisgICAgdmVy
aWZpZXJfLlZlcmlmeUxvZ2dlZFJ0Y3BQYWNrZXRJbmNvbWluZygqaW5jb21pbmdfcnRjcF9saXN0
X1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNl
ZF9pbmNvbWluZ19ydGNwX3BhY2tldHNbaV0pOwogICB9CiAKICAgYXV0byYgcGFyc2VkX291dGdv
aW5nX3J0Y3BfcGFja2V0cyA9IHBhcnNlZF9sb2cub3V0Z29pbmdfcnRjcF9wYWNrZXRzKCk7CiAg
IEFTU0VSVF9FUShwYXJzZWRfb3V0Z29pbmdfcnRjcF9wYWNrZXRzLnNpemUoKSwgb3V0Z29pbmdf
cnRjcF9saXN0Xy5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9vdXRn
b2luZ19ydGNwX3BhY2tldHMuc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpW
ZXJpZnlMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmcoCi0gICAgICAgICpvdXRnb2luZ19ydGNwX2xp
c3RfW2ldLCBwYXJzZWRfb3V0Z29pbmdfcnRjcF9wYWNrZXRzW2ldKSk7CisgICAgdmVyaWZpZXJf
LlZlcmlmeUxvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZygqb3V0Z29pbmdfcnRjcF9saXN0X1tpXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9vdXRn
b2luZ19ydGNwX3BhY2tldHNbaV0pOwogICB9CiAgIGF1dG8mIHBhcnNlZF9hdWRpb19yZWN2X2Nv
bmZpZ3MgPSBwYXJzZWRfbG9nLmF1ZGlvX3JlY3ZfY29uZmlncygpOwogICBBU1NFUlRfRVEocGFy
c2VkX2F1ZGlvX3JlY3ZfY29uZmlncy5zaXplKCksIGF1ZGlvX3JlY3ZfY29uZmlnX2xpc3RfLnNp
emUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2F1ZGlvX3JlY3ZfY29uZmln
cy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEF1ZGlv
UmVjdkNvbmZpZygKLSAgICAgICAgKmF1ZGlvX3JlY3ZfY29uZmlnX2xpc3RfW2ldLCBwYXJzZWRf
YXVkaW9fcmVjdl9jb25maWdzW2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEF1ZGlv
UmVjdkNvbmZpZygqYXVkaW9fcmVjdl9jb25maWdfbGlzdF9baV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfYXVkaW9fcmVjdl9jb25maWdzW2ldKTsK
ICAgfQogICBhdXRvJiBwYXJzZWRfYXVkaW9fc2VuZF9jb25maWdzID0gcGFyc2VkX2xvZy5hdWRp
b19zZW5kX2NvbmZpZ3MoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF9hdWRpb19zZW5kX2NvbmZpZ3Mu
c2l6ZSgpLCBhdWRpb19zZW5kX2NvbmZpZ19saXN0Xy5zaXplKCkpOwogICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHBhcnNlZF9hdWRpb19zZW5kX2NvbmZpZ3Muc2l6ZSgpOyBpKyspIHsKLSAgICBF
WFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRBdWRpb1NlbmRDb25maWcoCi0gICAgICAgICph
dWRpb19zZW5kX2NvbmZpZ19saXN0X1tpXSwgcGFyc2VkX2F1ZGlvX3NlbmRfY29uZmlnc1tpXSkp
OworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRBdWRpb1NlbmRDb25maWcoKmF1ZGlvX3NlbmRf
Y29uZmlnX2xpc3RfW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyc2VkX2F1ZGlvX3NlbmRfY29uZmlnc1tpXSk7CiAgIH0KICAgYXV0byYgcGFyc2VkX3Zp
ZGVvX3JlY3ZfY29uZmlncyA9IHBhcnNlZF9sb2cudmlkZW9fcmVjdl9jb25maWdzKCk7CiAgIEFT
U0VSVF9FUShwYXJzZWRfdmlkZW9fcmVjdl9jb25maWdzLnNpemUoKSwgdmlkZW9fcmVjdl9jb25m
aWdfbGlzdF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfdmlkZW9f
cmVjdl9jb25maWdzLnNpemUoKTsgaSsrKSB7Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5
TG9nZ2VkVmlkZW9SZWN2Q29uZmlnKAotICAgICAgICAqdmlkZW9fcmVjdl9jb25maWdfbGlzdF9b
aV0sIHBhcnNlZF92aWRlb19yZWN2X2NvbmZpZ3NbaV0pKTsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5
TG9nZ2VkVmlkZW9SZWN2Q29uZmlnKCp2aWRlb19yZWN2X2NvbmZpZ19saXN0X1tpXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF92aWRlb19yZWN2X2Nv
bmZpZ3NbaV0pOwogICB9CiAgIGF1dG8mIHBhcnNlZF92aWRlb19zZW5kX2NvbmZpZ3MgPSBwYXJz
ZWRfbG9nLnZpZGVvX3NlbmRfY29uZmlncygpOwogICBBU1NFUlRfRVEocGFyc2VkX3ZpZGVvX3Nl
bmRfY29uZmlncy5zaXplKCksIHZpZGVvX3NlbmRfY29uZmlnX2xpc3RfLnNpemUoKSk7CiAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX3ZpZGVvX3NlbmRfY29uZmlncy5zaXplKCk7IGkr
KykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZFZpZGVvU2VuZENvbmZpZygK
LSAgICAgICAgKnZpZGVvX3NlbmRfY29uZmlnX2xpc3RfW2ldLCBwYXJzZWRfdmlkZW9fc2VuZF9j
b25maWdzW2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFZpZGVvU2VuZENvbmZpZygq
dmlkZW9fc2VuZF9jb25maWdfbGlzdF9baV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJzZWRfdmlkZW9fc2VuZF9jb25maWdzW2ldKTsKICAgfQogCiAgIC8v
IENsZWFuIHVwIHRlbXBvcmFyeSBmaWxlIC0gY2FuIGJlIHByZXR0eSBzbG93LgpAQCAtNjgwLDcg
KzY4NSwyNSBAQCBURVNUX1AoUnRjRXZlbnRMb2dTZXNzaW9uLCBTdGFydExvZ2dpbmdJblRoZU1p
ZGRsZSkgewogICBSZWFkQW5kVmVyaWZ5TG9nKCk7CiB9CiAKLVRFU1QoUnRjRXZlbnRMb2dUZXN0
LCBDaXJjdWxhckJ1ZmZlcktlZXBzTW9zdFJlY2VudEV2ZW50cykgeworSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoCisgICAgUnRjRXZlbnRMb2dUZXN0LAorICAgIFJ0Y0V2ZW50TG9nU2Vzc2lvbiwK
KyAgICA6OnRlc3Rpbmc6OkNvbWJpbmUoCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDEyMzQ1
NjcsIDc2NTQzMjEpLAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcyhSdGNFdmVudExvZzo6a0lt
bWVkaWF0ZU91dHB1dCwgMSwgNSksCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKFJ0Y0V2ZW50
TG9nOjpFbmNvZGluZ1R5cGU6OkxlZ2FjeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUnRj
RXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TmV3Rm9ybWF0KSkpOworCitjbGFzcyBSdGNFdmVudExv
Z0NpcmN1bGFyQnVmZmVyVGVzdAorICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlPiB7CisgcHVibGljOgorICBSdGNFdmVudExvZ0Np
cmN1bGFyQnVmZmVyVGVzdCgpCisgICAgICA6IGVuY29kaW5nX3R5cGVfKEdldFBhcmFtKCkpLCB2
ZXJpZmllcl8oZW5jb2RpbmdfdHlwZV8pIHt9CisgIGNvbnN0IFJ0Y0V2ZW50TG9nOjpFbmNvZGlu
Z1R5cGUgZW5jb2RpbmdfdHlwZV87CisgIGNvbnN0IHRlc3Q6OkV2ZW50VmVyaWZpZXIgdmVyaWZp
ZXJfOworfTsKKworVEVTVF9QKFJ0Y0V2ZW50TG9nQ2lyY3VsYXJCdWZmZXJUZXN0LCBLZWVwc01v
c3RSZWNlbnRFdmVudHMpIHsKICAgLy8gVE9ETyh0ZXJlbGl1cyk6IE1heWJlIG1ha2UgYSBzZXBh
cmF0ZSBSdGNFdmVudExvZ0ltcGxUZXN0IHRoYXQgY2FuIGFjY2VzcwogICAvLyB0aGUgc2l6ZSBv
ZiB0aGUgY3ljbGljIGJ1ZmZlcj8KICAgY29uc3RleHByIHNpemVfdCBrTnVtRXZlbnRzID0gMjAw
MDA7CkBAIC02OTksOCArNzIyLDcgQEAgVEVTVChSdGNFdmVudExvZ1Rlc3QsIENpcmN1bGFyQnVm
ZmVyS2VlcHNNb3N0UmVjZW50RXZlbnRzKSB7CiAKICAgLy8gV2hlbiBsb2dfZHVtcGVyIGdvZXMg
b3V0IG9mIHNjb3BlLCBpdCBjYXVzZXMgdGhlIGxvZyBmaWxlIHRvIGJlIGZsdXNoZWQKICAgLy8g
dG8gZGlzay4KLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBsb2dfZHVtcGVyKAotICAg
ICAgUnRjRXZlbnRMb2c6OkNyZWF0ZShSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpMZWdhY3kp
KTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBsb2dfZHVtcGVyKFJ0Y0V2ZW50TG9n
OjpDcmVhdGUoZW5jb2RpbmdfdHlwZV8pKTsKIAogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtO
dW1FdmVudHM7IGkrKykgewogICAgIC8vIFRoZSBwdXJwb3NlIG9mIHRoZSB0ZXN0IGlzIHRvIHZl
cmlmeSB0aGF0IHRoZSBsb2cgY2FuIGhhbmRsZQpAQCAtNzE0LDYgKzczNiw3IEBAIFRFU1QoUnRj
RXZlbnRMb2dUZXN0LCBDaXJjdWxhckJ1ZmZlcktlZXBzTW9zdFJlY2VudEV2ZW50cykgewogICAg
IGZha2VfY2xvY2stPkFkdmFuY2VUaW1lTWljcm9zKDEwMDAwKTsKICAgfQogICBpbnQ2NF90IHN0
YXJ0X3RpbWVfdXMgPSBydGM6OlRpbWVNaWNyb3MoKTsKKyAgaW50NjRfdCB1dGNfc3RhcnRfdGlt
ZV91cyA9IHJ0Yzo6VGltZVVUQ01pY3JvcygpOwogICBsb2dfZHVtcGVyLT5TdGFydExvZ2dpbmco
CiAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudExvZ091dHB1dEZpbGU+KHRlbXBfZmls
ZW5hbWUsIDEwMDAwMDAwKSwKICAgICAgIFJ0Y0V2ZW50TG9nOjprSW1tZWRpYXRlT3V0cHV0KTsK
QEAgLTcyNywxMSArNzUwLDEyIEBAIFRFU1QoUnRjRXZlbnRMb2dUZXN0LCBDaXJjdWxhckJ1ZmZl
cktlZXBzTW9zdFJlY2VudEV2ZW50cykgewogCiAgIGNvbnN0IGF1dG8mIHN0YXJ0X2xvZ19ldmVu
dHMgPSBwYXJzZWRfbG9nLnN0YXJ0X2xvZ19ldmVudHMoKTsKICAgQVNTRVJUX0VRKHN0YXJ0X2xv
Z19ldmVudHMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZFN0
YXJ0RXZlbnQoc3RhcnRfdGltZV91cywgc3RhcnRfbG9nX2V2ZW50c1swXSkpOworICB2ZXJpZmll
cl8uVmVyaWZ5TG9nZ2VkU3RhcnRFdmVudChzdGFydF90aW1lX3VzLCB1dGNfc3RhcnRfdGltZV91
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbG9nX2V2ZW50c1sw
XSk7CiAKICAgY29uc3QgYXV0byYgc3RvcF9sb2dfZXZlbnRzID0gcGFyc2VkX2xvZy5zdG9wX2xv
Z19ldmVudHMoKTsKICAgQVNTRVJUX0VRKHN0b3BfbG9nX2V2ZW50cy5zaXplKCksIDF1KTsKLSAg
RVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkU3RvcEV2ZW50KHN0b3BfdGltZV91cywgc3Rv
cF9sb2dfZXZlbnRzWzBdKSk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRTdG9wRXZlbnQoc3Rv
cF90aW1lX3VzLCBzdG9wX2xvZ19ldmVudHNbMF0pOwogCiAgIGNvbnN0IGF1dG8mIHByb2JlX3N1
Y2Nlc3NfZXZlbnRzID0gcGFyc2VkX2xvZy5id2VfcHJvYmVfc3VjY2Vzc19ldmVudHMoKTsKICAg
Ly8gSWYgdGhlIGZvbGxvd2luZyBmYWlscywgaXQgcHJvYmFibHkgbWVhbnMgdGhhdCBrTnVtRXZl
bnRzIGlzbid0IGxhcmdlcgpAQCAtNzUyLDE5ICs3NzYsMjAgQEAgVEVTVChSdGNFdmVudExvZ1Rl
c3QsIENpcmN1bGFyQnVmZmVyS2VlcHNNb3N0UmVjZW50RXZlbnRzKSB7CiAgIGZha2VfY2xvY2st
PlNldFRpbWVNaWNyb3MoZmlyc3RfdGltZXN0YW1wX3VzKTsKICAgZm9yIChzaXplX3QgaSA9IDE7
IGkgPCBwcm9iZV9zdWNjZXNzX2V2ZW50cy5zaXplKCk7IGkrKykgewogICAgIGZha2VfY2xvY2st
PkFkdmFuY2VUaW1lTWljcm9zKDEwMDAwKTsKLSAgICBBU1NFUlRfVFJVRSh0ZXN0OjpWZXJpZnlM
b2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCgKKyAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndl
UHJvYmVTdWNjZXNzRXZlbnQoCiAgICAgICAgIFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzKGZp
cnN0X2lkICsgaSwgZmlyc3RfYml0cmF0ZV9icHMgKyBpICogMTAwMCksCi0gICAgICAgIHByb2Jl
X3N1Y2Nlc3NfZXZlbnRzW2ldKSk7CisgICAgICAgIHByb2JlX3N1Y2Nlc3NfZXZlbnRzW2ldKTsK
ICAgfQogfQogCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgKKyAgICBSdGNFdmVudExvZ1Rlc3Qs
CisgICAgUnRjRXZlbnRMb2dDaXJjdWxhckJ1ZmZlclRlc3QsCisgICAgOjp0ZXN0aW5nOjpWYWx1
ZXMoUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TGVnYWN5LAorICAgICAgICAgICAgICAgICAg
ICAgIFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6Ok5ld0Zvcm1hdCkpOworCiAvLyBUT0RPKHRl
cmVsaXVzKTogVmVyaWZ5IHBhcnNlciBiZWhhdmlvciBpZiB0aGUgdGltZXN0YW1wcyBhcmUgbm90
CiAvLyBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaW4gdGhlIGxvZy4KIAotSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoCi0gICAgUnRjRXZlbnRMb2dUZXN0LAotICAgIFJ0Y0V2ZW50TG9nU2Vzc2lv
biwKLSAgICA6OnRlc3Rpbmc6OkNvbWJpbmUoOjp0ZXN0aW5nOjpWYWx1ZXMoMTIzNDU2NywgNzY1
NDMyMSksCi0gICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKFJ0Y0V2ZW50
TG9nOjprSW1tZWRpYXRlT3V0cHV0LCAxLCA1KSkpOwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdF9oZWxwZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdF9oZWxwZXIuY2MKaW5kZXggOWY2MjQwY2JlMWU2
YmY3Nzc3MWRmMWIxMzdkYmU5ZDM3ZjEwYjYzOC4uZTg3ODA4ZDEyNWMzZTQ5M2MxMWYxNWM3N2E5
ZGFmMDE2NDNiNTI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3Rf
aGVscGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0X2hlbHBlci5jYwpA
QCAtMTIsMTIgKzEyLDE1IEBACiAKICNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIG1lbWNtcAogCisj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dXRpbGl0
eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2lu
Y2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVf
Yml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfY3ZvLmgiCkBAIC0yNSw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKQEAgLTYyLDYgKzY2LDE2IEBAIHZvaWQgU2h1ZmZsZUluUGxhY2UoUmFu
ZG9tKiBwcm5nLCBydGM6OkFycmF5VmlldzxUPiBhcnJheSkgewogICAgIHN0ZDo6c3dhcChhcnJh
eVtpXSwgYXJyYXlbb3RoZXJdKTsKICAgfQogfQorCithYnNsOjpvcHRpb25hbDxpbnQ+IEdldEV4
dGVuc2lvbklkKGNvbnN0IHN0ZDo6dmVjdG9yPFJ0cEV4dGVuc2lvbj4mIGV4dGVuc2lvbnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmkp
IHsKKyAgZm9yIChjb25zdCBhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zKSB7CisgICAgaWYg
KGV4dGVuc2lvbi51cmkgPT0gdXJpKQorICAgICAgcmV0dXJuIGV4dGVuc2lvbi5pZDsKKyAgfQor
ICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIHN0ZDo6dW5p
cXVlX3B0cjxSdGNFdmVudEFsclN0YXRlPiBFdmVudEdlbmVyYXRvcjo6TmV3QWxyU3RhdGUoKSB7
CkBAIC0yNjYsNyArMjgwLDggQEAgdm9pZCBFdmVudEdlbmVyYXRvcjo6UmFuZG9taXplUnRwUGFj
a2V0KAogICAgIHNpemVfdCBwYWRkaW5nX3NpemUsCiAgICAgdWludDMyX3Qgc3NyYywKICAgICBj
b25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXAsCi0gICAgUnRwUGFja2V0
KiBydHBfcGFja2V0KSB7CisgICAgUnRwUGFja2V0KiBydHBfcGFja2V0LAorICAgIGJvb2wgYWxs
X2NvbmZpZ3VyZWRfZXh0cykgewogICBjb25zdGV4cHIgaW50IGtNYXhQYXlsb2FkVHlwZSA9IDEy
NzsKICAgcnRwX3BhY2tldC0+U2V0UGF5bG9hZFR5cGUocHJuZ18uUmFuZChrTWF4UGF5bG9hZFR5
cGUpKTsKICAgcnRwX3BhY2tldC0+U2V0TWFya2VyKHBybmdfLlJhbmQ8Ym9vbD4oKSk7CkBAIC0y
ODEsMTYgKzI5NiwzMCBAQCB2b2lkIEV2ZW50R2VuZXJhdG9yOjpSYW5kb21pemVSdHBQYWNrZXQo
CiAgIH0KICAgcnRwX3BhY2tldC0+U2V0Q3NyY3MoY3NyY3MpOwogCi0gIGlmIChleHRlbnNpb25f
bWFwLklzUmVnaXN0ZXJlZChUcmFuc21pc3Npb25PZmZzZXQ6OmtJZCkpCisgIGlmIChleHRlbnNp
b25fbWFwLklzUmVnaXN0ZXJlZChUcmFuc21pc3Npb25PZmZzZXQ6OmtJZCkgJiYKKyAgICAgIChh
bGxfY29uZmlndXJlZF9leHRzIHx8IHBybmdfLlJhbmQ8Ym9vbD4oKSkpIHsKICAgICBydHBfcGFj
a2V0LT5TZXRFeHRlbnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0Pihwcm5nXy5SYW5kKDB4MDBmZmZm
ZmYpKTsKLSAgaWYgKGV4dGVuc2lvbl9tYXAuSXNSZWdpc3RlcmVkKEF1ZGlvTGV2ZWw6OmtJZCkp
CisgIH0KKworICBpZiAoZXh0ZW5zaW9uX21hcC5Jc1JlZ2lzdGVyZWQoQXVkaW9MZXZlbDo6a0lk
KSAmJgorICAgICAgKGFsbF9jb25maWd1cmVkX2V4dHMgfHwgcHJuZ18uUmFuZDxib29sPigpKSkg
ewogICAgIHJ0cF9wYWNrZXQtPlNldEV4dGVuc2lvbjxBdWRpb0xldmVsPihwcm5nXy5SYW5kPGJv
b2w+KCksIHBybmdfLlJhbmQoMTI3KSk7Ci0gIGlmIChleHRlbnNpb25fbWFwLklzUmVnaXN0ZXJl
ZChBYnNvbHV0ZVNlbmRUaW1lOjprSWQpKQorICB9CisKKyAgaWYgKGV4dGVuc2lvbl9tYXAuSXNS
ZWdpc3RlcmVkKEFic29sdXRlU2VuZFRpbWU6OmtJZCkgJiYKKyAgICAgIChhbGxfY29uZmlndXJl
ZF9leHRzIHx8IHBybmdfLlJhbmQ8Ym9vbD4oKSkpIHsKICAgICBydHBfcGFja2V0LT5TZXRFeHRl
bnNpb248QWJzb2x1dGVTZW5kVGltZT4ocHJuZ18uUmFuZCgweDAwZmZmZmZmKSk7Ci0gIGlmIChl
eHRlbnNpb25fbWFwLklzUmVnaXN0ZXJlZChWaWRlb09yaWVudGF0aW9uOjprSWQpKQorICB9CisK
KyAgaWYgKGV4dGVuc2lvbl9tYXAuSXNSZWdpc3RlcmVkKFZpZGVvT3JpZW50YXRpb246OmtJZCkg
JiYKKyAgICAgIChhbGxfY29uZmlndXJlZF9leHRzIHx8IHBybmdfLlJhbmQ8Ym9vbD4oKSkpIHsK
ICAgICBydHBfcGFja2V0LT5TZXRFeHRlbnNpb248VmlkZW9PcmllbnRhdGlvbj4ocHJuZ18uUmFu
ZCgzKSk7Ci0gIGlmIChleHRlbnNpb25fbWFwLklzUmVnaXN0ZXJlZChUcmFuc3BvcnRTZXF1ZW5j
ZU51bWJlcjo6a0lkKSkKKyAgfQorCisgIGlmIChleHRlbnNpb25fbWFwLklzUmVnaXN0ZXJlZChU
cmFuc3BvcnRTZXF1ZW5jZU51bWJlcjo6a0lkKSAmJgorICAgICAgKGFsbF9jb25maWd1cmVkX2V4
dHMgfHwgcHJuZ18uUmFuZDxib29sPigpKSkgewogICAgIHJ0cF9wYWNrZXQtPlNldEV4dGVuc2lv
bjxUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcj4ocHJuZ18uUmFuZDx1aW50MTZfdD4oKSk7CisgIH0K
IAogICBSVENfQ0hFQ0tfTEUocnRwX3BhY2tldC0+aGVhZGVyc19zaXplKCkgKyBwYXlsb2FkX3Np
emUsIElQX1BBQ0tFVF9TSVpFKTsKIApAQCAtMjk5LDEyICszMjgsMTMgQEAgdm9pZCBFdmVudEdl
bmVyYXRvcjo6UmFuZG9taXplUnRwUGFja2V0KAogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
eWxvYWRfc2l6ZTsgaSsrKSB7CiAgICAgcGF5bG9hZFtpXSA9IHBybmdfLlJhbmQ8dWludDhfdD4o
KTsKICAgfQotICBSVENfQ0hFQ0socnRwX3BhY2tldC0+U2V0UGFkZGluZyhwYWRkaW5nX3NpemUs
ICZwcm5nXykpOworICBSVENfQ0hFQ0socnRwX3BhY2tldC0+U2V0UGFkZGluZyhwYWRkaW5nX3Np
emUpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc+IEV2
ZW50R2VuZXJhdG9yOjpOZXdSdHBQYWNrZXRJbmNvbWluZygKICAgICB1aW50MzJfdCBzc3JjLAot
ICAgIGNvbnN0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCkgeworICAgIGNv
bnN0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCwKKyAgICBib29sIGFsbF9j
b25maWd1cmVkX2V4dHMpIHsKICAgY29uc3RleHByIHNpemVfdCBrTWF4UGFkZGluZ0xlbmd0aCA9
IDIyNDsKICAgY29uc3QgYm9vbCBwYWRkaW5nID0gcHJuZ18uUmFuZCgwLCA5KSA9PSAwOyAgLy8g
TGV0IHBhZGRpbmcgYmUgMTAlIHByb2JhYmxlLgogICBjb25zdCBzaXplX3QgcGFkZGluZ19zaXpl
ID0gIXBhZGRpbmcgPyAwdSA6IHBybmdfLlJhbmQoMHUsIGtNYXhQYWRkaW5nTGVuZ3RoKTsKQEAg
LTMyNSwxNCArMzU1LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0cFBhY2tldEluY29t
aW5nPiBFdmVudEdlbmVyYXRvcjo6TmV3UnRwUGFja2V0SW5jb21pbmcoCiAKICAgUnRwUGFja2V0
UmVjZWl2ZWQgcnRwX3BhY2tldCgmZXh0ZW5zaW9uX21hcCk7CiAgIFJhbmRvbWl6ZVJ0cFBhY2tl
dChwYXlsb2FkX3NpemUsIHBhZGRpbmdfc2l6ZSwgc3NyYywgZXh0ZW5zaW9uX21hcCwKLSAgICAg
ICAgICAgICAgICAgICAgICZydHBfcGFja2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICZydHBf
cGFja2V0LCBhbGxfY29uZmlndXJlZF9leHRzKTsKIAogICByZXR1cm4gYWJzbDo6bWFrZV91bmlx
dWU8UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZz4ocnRwX3BhY2tldCk7CiB9CiAKIHN0ZDo6dW5p
cXVlX3B0cjxSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nPiBFdmVudEdlbmVyYXRvcjo6TmV3UnRw
UGFja2V0T3V0Z29pbmcoCiAgICAgdWludDMyX3Qgc3NyYywKLSAgICBjb25zdCBSdHBIZWFkZXJF
eHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXApIHsKKyAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNp
b25NYXAmIGV4dGVuc2lvbl9tYXAsCisgICAgYm9vbCBhbGxfY29uZmlndXJlZF9leHRzKSB7CiAg
IGNvbnN0ZXhwciBzaXplX3Qga01heFBhZGRpbmdMZW5ndGggPSAyMjQ7CiAgIGNvbnN0IGJvb2wg
cGFkZGluZyA9IHBybmdfLlJhbmQoMCwgOSkgPT0gMDsgIC8vIExldCBwYWRkaW5nIGJlIDEwJSBw
cm9iYWJsZS4KICAgY29uc3Qgc2l6ZV90IHBhZGRpbmdfc2l6ZSA9ICFwYWRkaW5nID8gMHUgOiBw
cm5nXy5SYW5kKDB1LCBrTWF4UGFkZGluZ0xlbmd0aCk7CkBAIC0zNTQsMzMgKzM4NSwzNCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZz4gRXZlbnRHZW5lcmF0b3I6
Ok5ld1J0cFBhY2tldE91dGdvaW5nKAogICBSdHBQYWNrZXRUb1NlbmQgcnRwX3BhY2tldCgmZXh0
ZW5zaW9uX21hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01heEhlYWRlclNpemUg
KyBwYXlsb2FkX3NpemUgKyBwYWRkaW5nX3NpemUpOwogICBSYW5kb21pemVSdHBQYWNrZXQocGF5
bG9hZF9zaXplLCBwYWRkaW5nX3NpemUsIHNzcmMsIGV4dGVuc2lvbl9tYXAsCi0gICAgICAgICAg
ICAgICAgICAgICAmcnRwX3BhY2tldCk7CisgICAgICAgICAgICAgICAgICAgICAmcnRwX3BhY2tl
dCwgYWxsX2NvbmZpZ3VyZWRfZXh0cyk7CiAKICAgaW50IHByb2JlX2NsdXN0ZXJfaWQgPSBwcm5n
Xy5SYW5kKDAsIDEwMDAwMCk7CiAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudFJ0
cFBhY2tldE91dGdvaW5nPihydHBfcGFja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmVfY2x1c3Rlcl9pZCk7CiB9CiAKLVJ0cEhl
YWRlckV4dGVuc2lvbk1hcCBFdmVudEdlbmVyYXRvcjo6TmV3UnRwSGVhZGVyRXh0ZW5zaW9uTWFw
KCkgeworUnRwSGVhZGVyRXh0ZW5zaW9uTWFwIEV2ZW50R2VuZXJhdG9yOjpOZXdSdHBIZWFkZXJF
eHRlbnNpb25NYXAoCisgICAgYm9vbCBjb25maWd1cmVfYWxsKSB7CiAgIFJ0cEhlYWRlckV4dGVu
c2lvbk1hcCBleHRlbnNpb25fbWFwOwogICBzdGQ6OnZlY3RvcjxpbnQ+IGlkKFJ0cEV4dGVuc2lv
bjo6a09uZUJ5dGVIZWFkZXJFeHRlbnNpb25NYXhJZCAtCiAgICAgICAgICAgICAgICAgICAgICAg
UnRwRXh0ZW5zaW9uOjprTWluSWQgKyAxKTsKICAgc3RkOjppb3RhKGlkLmJlZ2luKCksIGlkLmVu
ZCgpLCBSdHBFeHRlbnNpb246OmtNaW5JZCk7CiAgIFNodWZmbGVJblBsYWNlKCZwcm5nXywgcnRj
OjpBcnJheVZpZXc8aW50PihpZCkpOwogCi0gIGlmIChwcm5nXy5SYW5kPGJvb2w+KCkpIHsKKyAg
aWYgKGNvbmZpZ3VyZV9hbGwgfHwgcHJuZ18uUmFuZDxib29sPigpKSB7CiAgICAgZXh0ZW5zaW9u
X21hcC5SZWdpc3RlcjxBdWRpb0xldmVsPihpZFswXSk7CiAgIH0KLSAgaWYgKHBybmdfLlJhbmQ8
Ym9vbD4oKSkgeworICBpZiAoY29uZmlndXJlX2FsbCB8fCBwcm5nXy5SYW5kPGJvb2w+KCkpIHsK
ICAgICBleHRlbnNpb25fbWFwLlJlZ2lzdGVyPFRyYW5zbWlzc2lvbk9mZnNldD4oaWRbMV0pOwog
ICB9Ci0gIGlmIChwcm5nXy5SYW5kPGJvb2w+KCkpIHsKKyAgaWYgKGNvbmZpZ3VyZV9hbGwgfHwg
cHJuZ18uUmFuZDxib29sPigpKSB7CiAgICAgZXh0ZW5zaW9uX21hcC5SZWdpc3RlcjxBYnNvbHV0
ZVNlbmRUaW1lPihpZFsyXSk7CiAgIH0KLSAgaWYgKHBybmdfLlJhbmQ8Ym9vbD4oKSkgeworICBp
ZiAoY29uZmlndXJlX2FsbCB8fCBwcm5nXy5SYW5kPGJvb2w+KCkpIHsKICAgICBleHRlbnNpb25f
bWFwLlJlZ2lzdGVyPFZpZGVvT3JpZW50YXRpb24+KGlkWzNdKTsKICAgfQotICBpZiAocHJuZ18u
UmFuZDxib29sPigpKSB7CisgIGlmIChjb25maWd1cmVfYWxsIHx8IHBybmdfLlJhbmQ8Ym9vbD4o
KSkgewogICAgIGV4dGVuc2lvbl9tYXAuUmVnaXN0ZXI8VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI+
KGlkWzRdKTsKICAgfQogCkBAIC00NjksMzk2ICs1MDEsMzE3IEBAIEV2ZW50R2VuZXJhdG9yOjpO
ZXdWaWRlb1NlbmRTdHJlYW1Db25maWcoCiAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxSdGNF
dmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZz4oc3RkOjptb3ZlKGNvbmZpZykpOwogfQogCi1ib29s
IFZlcmlmeUxvZ2dlZEFsclN0YXRlRXZlbnQoY29uc3QgUnRjRXZlbnRBbHJTdGF0ZSYgb3JpZ2lu
YWxfZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9nZ2VkQWxy
U3RhdGVFdmVudCYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3Rh
bXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsK
LSAgaWYgKG9yaWdpbmFsX2V2ZW50LmluX2Fscl8gIT0gbG9nZ2VkX2V2ZW50LmluX2FscikKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVlOwordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJp
ZnlMb2dnZWRBbHJTdGF0ZUV2ZW50KAorICAgIGNvbnN0IFJ0Y0V2ZW50QWxyU3RhdGUmIG9yaWdp
bmFsX2V2ZW50LAorICAgIGNvbnN0IExvZ2dlZEFsclN0YXRlRXZlbnQmIGxvZ2dlZF9ldmVudCkg
Y29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX21zKCksIGxvZ2dl
ZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmluX2Fs
cigpLCBsb2dnZWRfZXZlbnQuaW5fYWxyKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRBdWRpb1Bs
YXlvdXRFdmVudCgKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkQXVkaW9QbGF5b3V0
RXZlbnQoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQmIG9yaWdpbmFsX2V2ZW50LAot
ICAgIGNvbnN0IExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50JiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYg
KG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3Vz
KCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuc3NyY18gIT0gbG9n
Z2VkX2V2ZW50LnNzcmMpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKKyAgICBj
b25zdCBMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVY
UEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190
aW1lX21zKCkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuc3NyYygpLCBsb2dnZWRfZXZl
bnQuc3NyYyk7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2
ZW50KAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0
aW9uRXZlbnQoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uJiBvcmln
aW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRXZlbnQm
IGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBs
b2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKG9y
aWdpbmFsX2V2ZW50LmNvbmZpZ18tPmJpdHJhdGVfYnBzICE9IGxvZ2dlZF9ldmVudC5jb25maWcu
Yml0cmF0ZV9icHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuY29u
ZmlnXy0+ZW5hYmxlX2R0eCAhPSBsb2dnZWRfZXZlbnQuY29uZmlnLmVuYWJsZV9kdHgpCi0gICAg
cmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuY29uZmlnXy0+ZW5hYmxlX2ZlYyAh
PSBsb2dnZWRfZXZlbnQuY29uZmlnLmVuYWJsZV9mZWMpCi0gICAgcmV0dXJuIGZhbHNlOwotICBp
ZiAob3JpZ2luYWxfZXZlbnQuY29uZmlnXy0+ZnJhbWVfbGVuZ3RoX21zICE9Ci0gICAgICBsb2dn
ZWRfZXZlbnQuY29uZmlnLmZyYW1lX2xlbmd0aF9tcykKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlm
IChvcmlnaW5hbF9ldmVudC5jb25maWdfLT5udW1fY2hhbm5lbHMgIT0gbG9nZ2VkX2V2ZW50LmNv
bmZpZy5udW1fY2hhbm5lbHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZl
bnQuY29uZmlnXy0+dXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uICE9Ci0gICAgICBsb2dnZWRf
ZXZlbnQuY29uZmlnLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbikKLSAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkQndlRGVsYXlCYXNl
ZFVwZGF0ZSgKKyAgICBjb25zdCBMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRXZlbnQmIGxv
Z2dlZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1w
X21zKCksIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKworICBFWFBFQ1RfRVEob3JpZ2lu
YWxfZXZlbnQuY29uZmlnKCkuYml0cmF0ZV9icHMsCisgICAgICAgICAgICBsb2dnZWRfZXZlbnQu
Y29uZmlnLmJpdHJhdGVfYnBzKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNvbmZpZygp
LmVuYWJsZV9kdHgsIGxvZ2dlZF9ldmVudC5jb25maWcuZW5hYmxlX2R0eCk7CisgIEVYUEVDVF9F
UShvcmlnaW5hbF9ldmVudC5jb25maWcoKS5lbmFibGVfZmVjLCBsb2dnZWRfZXZlbnQuY29uZmln
LmVuYWJsZV9mZWMpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY29uZmlnKCkuZnJhbWVf
bGVuZ3RoX21zLAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy5mcmFtZV9sZW5ndGhf
bXMpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY29uZmlnKCkubnVtX2NoYW5uZWxzLAor
ICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy5udW1fY2hhbm5lbHMpOworCisgIC8vIHVw
bGlua19wYWNrZXRfbG9zc19mcmFjdGlvbgorICBBU1NFUlRfRVEob3JpZ2luYWxfZXZlbnQuY29u
ZmlnKCkudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uLmhhc192YWx1ZSgpLAorICAgICAgICAg
ICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24uaGFzX3Zh
bHVlKCkpOworICBpZiAob3JpZ2luYWxfZXZlbnQuY29uZmlnKCkudXBsaW5rX3BhY2tldF9sb3Nz
X2ZyYWN0aW9uLmhhc192YWx1ZSgpKSB7CisgICAgY29uc3QgZmxvYXQgb3JpZ2luYWwgPQorICAg
ICAgICBvcmlnaW5hbF9ldmVudC5jb25maWcoKS51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24u
dmFsdWUoKTsKKyAgICBjb25zdCBmbG9hdCBsb2dnZWQgPQorICAgICAgICBsb2dnZWRfZXZlbnQu
Y29uZmlnLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbi52YWx1ZSgpOworICAgIGNvbnN0IGZs
b2F0IHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbl9kZWx0YSA9IHN0ZDo6YWJzKG9yaWdpbmFs
IC0gbG9nZ2VkKTsKKyAgICBFWFBFQ1RfTEUodXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uX2Rl
bHRhLCAwLjAwMDFmKTsKKyAgfQorfQorCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dl
ZEJ3ZURlbGF5QmFzZWRVcGRhdGUoCiAgICAgY29uc3QgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJh
c2VkJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRl
JiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0g
bG9nZ2VkX2V2ZW50LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3Jp
Z2luYWxfZXZlbnQuYml0cmF0ZV9icHNfICE9IGxvZ2dlZF9ldmVudC5iaXRyYXRlX2JwcykKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5kZXRlY3Rvcl9zdGF0ZV8gIT0g
bG9nZ2VkX2V2ZW50LmRldGVjdG9yX3N0YXRlKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJu
IHRydWU7CisgICAgY29uc3QgTG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50
KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9n
Z2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuYml0
cmF0ZV9icHMoKSwgbG9nZ2VkX2V2ZW50LmJpdHJhdGVfYnBzKTsKKyAgRVhQRUNUX0VRKG9yaWdp
bmFsX2V2ZW50LmRldGVjdG9yX3N0YXRlKCksIGxvZ2dlZF9ldmVudC5kZXRlY3Rvcl9zdGF0ZSk7
CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlKAordm9pZCBFdmVudFZl
cmlmaWVyOjpWZXJpZnlMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUoCiAgICAgY29uc3QgUnRjRXZl
bnRCd2VVcGRhdGVMb3NzQmFzZWQmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZEJ3
ZUxvc3NCYXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50
aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBm
YWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmJpdHJhdGVfYnBzXyAhPSBsb2dnZWRfZXZlbnQu
Yml0cmF0ZV9icHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuZnJh
Y3Rpb25fbG9zc18gIT0gbG9nZ2VkX2V2ZW50LmZyYWN0aW9uX2xvc3QpCi0gICAgcmV0dXJuIGZh
bHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQudG90YWxfcGFja2V0c18gIT0gbG9nZ2VkX2V2ZW50
LmV4cGVjdGVkX3BhY2tldHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBWZXJpZnlMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQoCisgICAgY29u
c3QgTG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlJiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQ
RUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3Rp
bWVfbXMoKSk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5iaXRyYXRlX2JwcygpLCBsb2dn
ZWRfZXZlbnQuYml0cmF0ZV9icHMpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuZnJhY3Rp
b25fbG9zcygpLCBsb2dnZWRfZXZlbnQuZnJhY3Rpb25fbG9zdCk7CisgIEVYUEVDVF9FUShvcmln
aW5hbF9ldmVudC50b3RhbF9wYWNrZXRzKCksIGxvZ2dlZF9ldmVudC5leHBlY3RlZF9wYWNrZXRz
KTsKK30KKwordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRCd2VQcm9iZUNsdXN0ZXJD
cmVhdGVkRXZlbnQoCiAgICAgY29uc3QgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkJiBvcmln
aW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQm
IGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBs
b2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmln
aW5hbF9ldmVudC5pZF8gIT0gbG9nZ2VkX2V2ZW50LmlkKQotICAgIHJldHVybiBmYWxzZTsKLSAg
aWYgKG9yaWdpbmFsX2V2ZW50LmJpdHJhdGVfYnBzXyAhPSBsb2dnZWRfZXZlbnQuYml0cmF0ZV9i
cHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQubWluX3Byb2Jlc18g
IT0gbG9nZ2VkX2V2ZW50Lm1pbl9wYWNrZXRzKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9y
aWdpbmFsX2V2ZW50Lm1pbl9ieXRlc18gIT0gbG9nZ2VkX2V2ZW50Lm1pbl9ieXRlcykKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkQndl
UHJvYmVGYWlsdXJlRXZlbnQoCisgICAgY29uc3QgTG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRl
ZEV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50
LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CisgIEVYUEVDVF9F
UShvcmlnaW5hbF9ldmVudC5pZCgpLCBsb2dnZWRfZXZlbnQuaWQpOworICBFWFBFQ1RfRVEob3Jp
Z2luYWxfZXZlbnQuYml0cmF0ZV9icHMoKSwgbG9nZ2VkX2V2ZW50LmJpdHJhdGVfYnBzKTsKKyAg
RVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50Lm1pbl9wcm9iZXMoKSwgbG9nZ2VkX2V2ZW50Lm1pbl9w
YWNrZXRzKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50Lm1pbl9ieXRlcygpLCBsb2dnZWRf
ZXZlbnQubWluX2J5dGVzKTsKK30KKwordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRC
d2VQcm9iZUZhaWx1cmVFdmVudCgKICAgICBjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVy
ZSYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZlbnQm
IGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBs
b2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmln
aW5hbF9ldmVudC5pZF8gIT0gbG9nZ2VkX2V2ZW50LmlkKQotICAgIHJldHVybiBmYWxzZTsKLSAg
aWYgKG9yaWdpbmFsX2V2ZW50LmZhaWx1cmVfcmVhc29uXyAhPSBsb2dnZWRfZXZlbnQuZmFpbHVy
ZV9yZWFzb24pCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBM
b2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVD
VF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1l
X21zKCkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuaWQoKSwgbG9nZ2VkX2V2ZW50Lmlk
KTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmZhaWx1cmVfcmVhc29uKCksIGxvZ2dlZF9l
dmVudC5mYWlsdXJlX3JlYXNvbik7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkQndlUHJvYmVTdWNj
ZXNzRXZlbnQoCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZEJ3ZVByb2JlU3VjY2Vz
c0V2ZW50KAogICAgIGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzJiBvcmlnaW5hbF9l
dmVudCwKLSAgICBjb25zdCBMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCYgbG9nZ2VkX2V2ZW50
KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5s
b2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50Lmlk
XyAhPSBsb2dnZWRfZXZlbnQuaWQpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxf
ZXZlbnQuYml0cmF0ZV9icHNfICE9IGxvZ2dlZF9ldmVudC5iaXRyYXRlX2JwcykKLSAgICByZXR1
cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVlOworICAgIGNvbnN0IExvZ2dlZEJ3ZVByb2JlU3VjY2Vz
c0V2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50
LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CisgIEVYUEVDVF9F
UShvcmlnaW5hbF9ldmVudC5pZCgpLCBsb2dnZWRfZXZlbnQuaWQpOworICBFWFBFQ1RfRVEob3Jp
Z2luYWxfZXZlbnQuYml0cmF0ZV9icHMoKSwgbG9nZ2VkX2V2ZW50LmJpdHJhdGVfYnBzKTsKIH0K
IAotYm9vbCBWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAordm9pZCBFdmVudFZl
cmlmaWVyOjpWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAogICAgIGNvbnN0IFJ0
Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3Qg
TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmln
aW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQot
ICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAob3JpZ2luYWxfZXZlbnQudHlwZV8gIT0gbG9nZ2Vk
X2V2ZW50LnR5cGUpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuY2Fu
ZGlkYXRlX3BhaXJfaWRfICE9IGxvZ2dlZF9ldmVudC5jYW5kaWRhdGVfcGFpcl9pZCkKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjXy5s
b2NhbF9jYW5kaWRhdGVfdHlwZSAhPQotICAgICAgbG9nZ2VkX2V2ZW50LmxvY2FsX2NhbmRpZGF0
ZV90eXBlKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0
ZV9wYWlyX2Rlc2NfLmxvY2FsX3JlbGF5X3Byb3RvY29sICE9Ci0gICAgICBsb2dnZWRfZXZlbnQu
bG9jYWxfcmVsYXlfcHJvdG9jb2wpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxf
ZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzY18ubG9jYWxfbmV0d29ya190eXBlICE9Ci0gICAgICBs
b2dnZWRfZXZlbnQubG9jYWxfbmV0d29ya190eXBlKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYg
KG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2Rlc2NfLmxvY2FsX2FkZHJlc3NfZmFtaWx5
ICE9Ci0gICAgICBsb2dnZWRfZXZlbnQubG9jYWxfYWRkcmVzc19mYW1pbHkpCi0gICAgcmV0dXJu
IGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzY18ucmVtb3Rl
X2NhbmRpZGF0ZV90eXBlICE9Ci0gICAgICBsb2dnZWRfZXZlbnQucmVtb3RlX2NhbmRpZGF0ZV90
eXBlKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9w
YWlyX2Rlc2NfLnJlbW90ZV9hZGRyZXNzX2ZhbWlseSAhPQotICAgICAgbG9nZ2VkX2V2ZW50LnJl
bW90ZV9hZGRyZXNzX2ZhbWlseSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9l
dmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjXy5jYW5kaWRhdGVfcGFpcl9wcm90b2NvbCAhPQotICAg
ICAgbG9nZ2VkX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX3Byb3RvY29sKQotICAgIHJldHVybiBmYWxz
ZTsKLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQ
YWlyRXZlbnQoCisgICAgY29uc3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgbG9nZ2Vk
X2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMo
KSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOworCisgIEVYUEVDVF9FUShvcmlnaW5hbF9l
dmVudC50eXBlKCksIGxvZ2dlZF9ldmVudC50eXBlKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2
ZW50LmNhbmRpZGF0ZV9wYWlyX2lkKCksIGxvZ2dlZF9ldmVudC5jYW5kaWRhdGVfcGFpcl9pZCk7
CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjKCkubG9jYWxf
Y2FuZGlkYXRlX3R5cGUsCisgICAgICAgICAgICBsb2dnZWRfZXZlbnQubG9jYWxfY2FuZGlkYXRl
X3R5cGUpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzYygp
LmxvY2FsX3JlbGF5X3Byb3RvY29sLAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LmxvY2FsX3Jl
bGF5X3Byb3RvY29sKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWly
X2Rlc2MoKS5sb2NhbF9uZXR3b3JrX3R5cGUsCisgICAgICAgICAgICBsb2dnZWRfZXZlbnQubG9j
YWxfbmV0d29ya190eXBlKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9w
YWlyX2Rlc2MoKS5sb2NhbF9hZGRyZXNzX2ZhbWlseSwKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVu
dC5sb2NhbF9hZGRyZXNzX2ZhbWlseSk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5jYW5k
aWRhdGVfcGFpcl9kZXNjKCkucmVtb3RlX2NhbmRpZGF0ZV90eXBlLAorICAgICAgICAgICAgbG9n
Z2VkX2V2ZW50LnJlbW90ZV9jYW5kaWRhdGVfdHlwZSk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9l
dmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjKCkucmVtb3RlX2FkZHJlc3NfZmFtaWx5LAorICAgICAg
ICAgICAgbG9nZ2VkX2V2ZW50LnJlbW90ZV9hZGRyZXNzX2ZhbWlseSk7CisgIEVYUEVDVF9FUShv
cmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjKCkuY2FuZGlkYXRlX3BhaXJfcHJvdG9j
b2wsCisgICAgICAgICAgICBsb2dnZWRfZXZlbnQuY2FuZGlkYXRlX3BhaXJfcHJvdG9jb2wpOwor
fQorCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVu
dCgKICAgICBjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXImIG9yaWdpbmFsX2V2ZW50LAot
ICAgIGNvbnN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCYgbG9nZ2VkX2V2ZW50KSB7Ci0g
IGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGlt
ZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAob3JpZ2luYWxfZXZlbnQudHlwZV8g
IT0gbG9nZ2VkX2V2ZW50LnR5cGUpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxf
ZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWRfICE9IGxvZ2dlZF9ldmVudC5jYW5kaWRhdGVfcGFpcl9p
ZCkKLSAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2
ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRp
bWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CiAKLSAgcmV0dXJuIHRy
dWU7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50eXBlKCksIGxvZ2dlZF9ldmVudC50eXBl
KTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2lkKCksIGxvZ2dl
ZF9ldmVudC5jYW5kaWRhdGVfcGFpcl9pZCk7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkUnRwSGVh
ZGVyKGNvbnN0IFJ0cFBhY2tldCYgb3JpZ2luYWxfaGVhZGVyLAordm9pZCBWZXJpZnlMb2dnZWRS
dHBIZWFkZXIoY29uc3QgUnRwUGFja2V0JiBvcmlnaW5hbF9oZWFkZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBSVFBIZWFkZXImIGxvZ2dlZF9oZWFkZXIpIHsKICAgLy8gU3Rh
bmRhcmQgUlRQIGhlYWRlci4KLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5NYXJrZXIoKSAhPSBsb2dn
ZWRfaGVhZGVyLm1hcmtlckJpdCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9o
ZWFkZXIuUGF5bG9hZFR5cGUoKSAhPSBsb2dnZWRfaGVhZGVyLnBheWxvYWRUeXBlKQotICAgIHJl
dHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5TZXF1ZW5jZU51bWJlcigpICE9IGxv
Z2dlZF9oZWFkZXIuc2VxdWVuY2VOdW1iZXIpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3Jp
Z2luYWxfaGVhZGVyLlRpbWVzdGFtcCgpICE9IGxvZ2dlZF9oZWFkZXIudGltZXN0YW1wKQotICAg
IHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5Tc3JjKCkgIT0gbG9nZ2VkX2hl
YWRlci5zc3JjKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5Dc3Jj
cygpLnNpemUoKSAhPSBsb2dnZWRfaGVhZGVyLm51bUNTUkNzKQotICAgIHJldHVybiBmYWxzZTsK
LSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb2dnZWRfaGVhZGVyLm51bUNTUkNzOyBpKyspIHsK
LSAgICBpZiAob3JpZ2luYWxfaGVhZGVyLkNzcmNzKClbaV0gIT0gbG9nZ2VkX2hlYWRlci5hcnJP
ZkNTUkNzW2ldKQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9CisgIEVYUEVDVF9FUShvcmlnaW5h
bF9oZWFkZXIuTWFya2VyKCksIGxvZ2dlZF9oZWFkZXIubWFya2VyQml0KTsKKyAgRVhQRUNUX0VR
KG9yaWdpbmFsX2hlYWRlci5QYXlsb2FkVHlwZSgpLCBsb2dnZWRfaGVhZGVyLnBheWxvYWRUeXBl
KTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2hlYWRlci5TZXF1ZW5jZU51bWJlcigpLCBsb2dnZWRf
aGVhZGVyLnNlcXVlbmNlTnVtYmVyKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2hlYWRlci5UaW1l
c3RhbXAoKSwgbG9nZ2VkX2hlYWRlci50aW1lc3RhbXApOworICBFWFBFQ1RfRVEob3JpZ2luYWxf
aGVhZGVyLlNzcmMoKSwgbG9nZ2VkX2hlYWRlci5zc3JjKTsKIAotICBpZiAob3JpZ2luYWxfaGVh
ZGVyLmhlYWRlcnNfc2l6ZSgpICE9IGxvZ2dlZF9oZWFkZXIuaGVhZGVyTGVuZ3RoKQotICAgIHJl
dHVybiBmYWxzZTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2hlYWRlci5oZWFkZXJzX3NpemUoKSwg
bG9nZ2VkX2hlYWRlci5oZWFkZXJMZW5ndGgpOwogCiAgIC8vIFRyYW5zbWlzc2lvbk9mZnNldCBo
ZWFkZXIgZXh0ZW5zaW9uLgotICBpZiAob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxUcmFu
c21pc3Npb25PZmZzZXQ+KCkgIT0KLSAgICAgIGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc1Ry
YW5zbWlzc2lvblRpbWVPZmZzZXQpCi0gICAgcmV0dXJuIGZhbHNlOworICBBU1NFUlRfRVEob3Jp
Z2luYWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxUcmFuc21pc3Npb25PZmZzZXQ+KCksCisgICAgICAg
ICAgICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNUcmFuc21pc3Npb25UaW1lT2Zmc2V0KTsK
ICAgaWYgKGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zbWlzc2lvblRpbWVPZmZzZXQp
IHsKICAgICBpbnQzMl90IG9mZnNldDsKLSAgICBvcmlnaW5hbF9oZWFkZXIuR2V0RXh0ZW5zaW9u
PFRyYW5zbWlzc2lvbk9mZnNldD4oJm9mZnNldCk7Ci0gICAgaWYgKG9mZnNldCAhPSBsb2dnZWRf
aGVhZGVyLmV4dGVuc2lvbi50cmFuc21pc3Npb25UaW1lT2Zmc2V0KQotICAgICAgcmV0dXJuIGZh
bHNlOworICAgIEFTU0VSVF9UUlVFKG9yaWdpbmFsX2hlYWRlci5HZXRFeHRlbnNpb248VHJhbnNt
aXNzaW9uT2Zmc2V0Pigmb2Zmc2V0KSk7CisgICAgRVhQRUNUX0VRKG9mZnNldCwgbG9nZ2VkX2hl
YWRlci5leHRlbnNpb24udHJhbnNtaXNzaW9uVGltZU9mZnNldCk7CiAgIH0KIAogICAvLyBBYnNv
bHV0ZVNlbmRUaW1lIGhlYWRlciBleHRlbnNpb24uCi0gIGlmIChvcmlnaW5hbF9oZWFkZXIuSGFz
RXh0ZW5zaW9uPEFic29sdXRlU2VuZFRpbWU+KCkgIT0KLSAgICAgIGxvZ2dlZF9oZWFkZXIuZXh0
ZW5zaW9uLmhhc0Fic29sdXRlU2VuZFRpbWUpCi0gICAgcmV0dXJuIGZhbHNlOworICBBU1NFUlRf
RVEob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxBYnNvbHV0ZVNlbmRUaW1lPigpLAorICAg
ICAgICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5kVGltZSk7CiAg
IGlmIChsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0ZVNlbmRUaW1lKSB7CiAgICAg
dWludDMyX3Qgc2VuZHRpbWU7Ci0gICAgb3JpZ2luYWxfaGVhZGVyLkdldEV4dGVuc2lvbjxBYnNv
bHV0ZVNlbmRUaW1lPigmc2VuZHRpbWUpOwotICAgIGlmIChzZW5kdGltZSAhPSBsb2dnZWRfaGVh
ZGVyLmV4dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1lKQotICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEFTU0VSVF9UUlVFKG9yaWdpbmFsX2hlYWRlci5HZXRFeHRlbnNpb248QWJzb2x1dGVTZW5kVGlt
ZT4oJnNlbmR0aW1lKSk7CisgICAgRVhQRUNUX0VRKHNlbmR0aW1lLCBsb2dnZWRfaGVhZGVyLmV4
dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1lKTsKICAgfQogCiAgIC8vIFRyYW5zcG9ydFNlcXVlbmNl
TnVtYmVyIGhlYWRlciBleHRlbnNpb24uCi0gIGlmIChvcmlnaW5hbF9oZWFkZXIuSGFzRXh0ZW5z
aW9uPFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyPigpICE9Ci0gICAgICBsb2dnZWRfaGVhZGVyLmV4
dGVuc2lvbi5oYXNUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcikKLSAgICByZXR1cm4gZmFsc2U7Cisg
IEFTU0VSVF9FUShvcmlnaW5hbF9oZWFkZXIuSGFzRXh0ZW5zaW9uPFRyYW5zcG9ydFNlcXVlbmNl
TnVtYmVyPigpLAorICAgICAgICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzVHJhbnNw
b3J0U2VxdWVuY2VOdW1iZXIpOwogICBpZiAobG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzVHJh
bnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKICAgICB1aW50MTZfdCBzZXFudW07Ci0gICAgb3JpZ2lu
YWxfaGVhZGVyLkdldEV4dGVuc2lvbjxUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcj4oJnNlcW51bSk7
Ci0gICAgaWYgKHNlcW51bSAhPSBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi50cmFuc3BvcnRTZXF1
ZW5jZU51bWJlcikKLSAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlRfVFJVRShvcmlnaW5h
bF9oZWFkZXIuR2V0RXh0ZW5zaW9uPFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyPigmc2VxbnVtKSk7
CisgICAgRVhQRUNUX0VRKHNlcW51bSwgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24udHJhbnNwb3J0
U2VxdWVuY2VOdW1iZXIpOwogICB9CiAKICAgLy8gQXVkaW9MZXZlbCBoZWFkZXIgZXh0ZW5zaW9u
LgotICBpZiAob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxBdWRpb0xldmVsPigpICE9Ci0g
ICAgICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNBdWRpb0xldmVsKQotICAgIHJldHVybiBm
YWxzZTsKKyAgQVNTRVJUX0VRKG9yaWdpbmFsX2hlYWRlci5IYXNFeHRlbnNpb248QXVkaW9MZXZl
bD4oKSwKKyAgICAgICAgICAgIGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc0F1ZGlvTGV2ZWwp
OwogICBpZiAobG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzQXVkaW9MZXZlbCkgewogICAgIGJv
b2wgdm9pY2VfYWN0aXZpdHk7CiAgICAgdWludDhfdCBhdWRpb19sZXZlbDsKLSAgICBvcmlnaW5h
bF9oZWFkZXIuR2V0RXh0ZW5zaW9uPEF1ZGlvTGV2ZWw+KCZ2b2ljZV9hY3Rpdml0eSwgJmF1ZGlv
X2xldmVsKTsKLSAgICBpZiAodm9pY2VfYWN0aXZpdHkgIT0gbG9nZ2VkX2hlYWRlci5leHRlbnNp
b24udm9pY2VBY3Rpdml0eSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXVkaW9fbGV2
ZWwgIT0gbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uYXVkaW9MZXZlbCkKLSAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBBU1NFUlRfVFJVRShvcmlnaW5hbF9oZWFkZXIuR2V0RXh0ZW5zaW9uPEF1ZGlv
TGV2ZWw+KCZ2b2ljZV9hY3Rpdml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZhdWRpb19sZXZlbCkpOworICAgIEVYUEVDVF9FUSh2
b2ljZV9hY3Rpdml0eSwgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24udm9pY2VBY3Rpdml0eSk7Cisg
ICAgRVhQRUNUX0VRKGF1ZGlvX2xldmVsLCBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5hdWRpb0xl
dmVsKTsKICAgfQogCiAgIC8vIFZpZGVvT3JpZW50YXRpb24gaGVhZGVyIGV4dGVuc2lvbi4KLSAg
aWYgKG9yaWdpbmFsX2hlYWRlci5IYXNFeHRlbnNpb248VmlkZW9PcmllbnRhdGlvbj4oKSAhPQot
ICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzVmlkZW9Sb3RhdGlvbikKLSAgICByZXR1
cm4gZmFsc2U7CisgIEFTU0VSVF9FUShvcmlnaW5hbF9oZWFkZXIuSGFzRXh0ZW5zaW9uPFZpZGVv
T3JpZW50YXRpb24+KCksCisgICAgICAgICAgICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNW
aWRlb1JvdGF0aW9uKTsKICAgaWYgKGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc1ZpZGVvUm90
YXRpb24pIHsKICAgICB1aW50OF90IHJvdGF0aW9uOwotICAgIG9yaWdpbmFsX2hlYWRlci5HZXRF
eHRlbnNpb248VmlkZW9PcmllbnRhdGlvbj4oJnJvdGF0aW9uKTsKLSAgICBpZiAoQ29udmVydENW
T0J5dGVUb1ZpZGVvUm90YXRpb24ocm90YXRpb24pICE9Ci0gICAgICAgIGxvZ2dlZF9oZWFkZXIu
ZXh0ZW5zaW9uLnZpZGVvUm90YXRpb24pCi0gICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJU
X1RSVUUob3JpZ2luYWxfaGVhZGVyLkdldEV4dGVuc2lvbjxWaWRlb09yaWVudGF0aW9uPigmcm90
YXRpb24pKTsKKyAgICBFWFBFQ1RfRVEoQ29udmVydENWT0J5dGVUb1ZpZGVvUm90YXRpb24ocm90
YXRpb24pLAorICAgICAgICAgICAgICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi52aWRlb1JvdGF0
aW9uKTsKICAgfQotCi0gIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZFJ0cFBh
Y2tldEluY29taW5nKAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRSdHBQYWNrZXRJ
bmNvbWluZygKICAgICBjb25zdCBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nJiBvcmlnaW5hbF9l
dmVudCwKLSAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyYgbG9nZ2VkX2V2ZW50KSB7
Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2df
dGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAob3JpZ2luYWxfZXZlbnQuaGVh
ZGVyXy5oZWFkZXJzX3NpemUoKSAhPSBsb2dnZWRfZXZlbnQucnRwLmhlYWRlcl9sZW5ndGgpCi0g
ICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmIChvcmlnaW5hbF9ldmVudC5wYWNrZXRfbGVuZ3RoXyAh
PSBsb2dnZWRfZXZlbnQucnRwLnRvdGFsX2xlbmd0aCkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
aWYgKChvcmlnaW5hbF9ldmVudC5oZWFkZXJfLmRhdGEoKVswXSAmIDB4MjApICE9IDAgJiYgIC8v
IGhhcyBwYWRkaW5nCi0gICAgICBvcmlnaW5hbF9ldmVudC5wYWNrZXRfbGVuZ3RoXyAtIG9yaWdp
bmFsX2V2ZW50LmhlYWRlcl8uaGVhZGVyc19zaXplKCkgIT0KLSAgICAgICAgICBsb2dnZWRfZXZl
bnQucnRwLmhlYWRlci5wYWRkaW5nTGVuZ3RoKSB7Ci0gICAgLy8gQ3VycmVudGx5LCBSVEMgZXZl
bnRsb2cgZW5jb2Rlci1wYXJzZXIgY2FuIG9ubHkgbWFpbnRhaW4gcGFkZGluZyBsZW5ndGgKLSAg
ICAvLyBpZiBwYWNrZXQgaXMgZnVsbCBwYWRkaW5nLgotICAgIC8vIFRPRE8od2VicnRjOjk3MzAp
OiBDaGFuZ2UgdGhlIGNvbmRpdGlvbiB0byBzb21ldGhpbmcgbGlrZQotICAgIC8vIG9yaWdpbmFs
X2V2ZW50LnBhZGRpbmdfbGVuZ3RoXyAhPSBsb2dnZWRfZXZlbnQucnRwLmhlYWRlci5wYWRkaW5n
TGVuZ3RoLgotICAgIHJldHVybiBmYWxzZTsKLSAgfQorICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tl
dEluY29taW5nJiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2
ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMoKSk7CisKKyAgRVhQ
RUNUX0VRKG9yaWdpbmFsX2V2ZW50LmhlYWRlcigpLmhlYWRlcnNfc2l6ZSgpLAorICAgICAgICAg
ICAgbG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXJfbGVuZ3RoKTsKKworICBFWFBFQ1RfRVEob3JpZ2lu
YWxfZXZlbnQucGFja2V0X2xlbmd0aCgpLCBsb2dnZWRfZXZlbnQucnRwLnRvdGFsX2xlbmd0aCk7
CiAKLSAgaWYgKCFWZXJpZnlMb2dnZWRSdHBIZWFkZXIob3JpZ2luYWxfZXZlbnQuaGVhZGVyXywg
bG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXIpKQotICAgIHJldHVybiBmYWxzZTsKKyAgLy8gQ3VycmVu
dGx5LCBSVEMgZXZlbnRsb2cgZW5jb2Rlci1wYXJzZXIgY2FuIG9ubHkgbWFpbnRhaW4gcGFkZGlu
ZyBsZW5ndGgKKyAgLy8gaWYgcGFja2V0IGlzIGZ1bGwgcGFkZGluZy4KKyAgRVhQRUNUX0VRKG9y
aWdpbmFsX2V2ZW50LnBhZGRpbmdfbGVuZ3RoKCksCisgICAgICAgICAgICBsb2dnZWRfZXZlbnQu
cnRwLmhlYWRlci5wYWRkaW5nTGVuZ3RoKTsKIAotICByZXR1cm4gdHJ1ZTsKKyAgVmVyaWZ5TG9n
Z2VkUnRwSGVhZGVyKG9yaWdpbmFsX2V2ZW50LmhlYWRlcigpLCBsb2dnZWRfZXZlbnQucnRwLmhl
YWRlcik7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcoCit2b2lkIEV2
ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZFJ0cFBhY2tldE91dGdvaW5nKAogICAgIGNvbnN0IFJ0
Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dl
ZFJ0cFBhY2tldE91dGdvaW5nJiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50
LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJu
IGZhbHNlOwotCi0gIGlmIChvcmlnaW5hbF9ldmVudC5oZWFkZXJfLmhlYWRlcnNfc2l6ZSgpICE9
IGxvZ2dlZF9ldmVudC5ydHAuaGVhZGVyX2xlbmd0aCkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
aWYgKG9yaWdpbmFsX2V2ZW50LnBhY2tldF9sZW5ndGhfICE9IGxvZ2dlZF9ldmVudC5ydHAudG90
YWxfbGVuZ3RoKQotICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAoKG9yaWdpbmFsX2V2ZW50Lmhl
YWRlcl8uZGF0YSgpWzBdICYgMHgyMCkgIT0gMCAmJiAgLy8gaGFzIHBhZGRpbmcKLSAgICAgIG9y
aWdpbmFsX2V2ZW50LnBhY2tldF9sZW5ndGhfIC0gb3JpZ2luYWxfZXZlbnQuaGVhZGVyXy5oZWFk
ZXJzX3NpemUoKSAhPQotICAgICAgICAgIGxvZ2dlZF9ldmVudC5ydHAuaGVhZGVyLnBhZGRpbmdM
ZW5ndGgpIHsKLSAgICAvLyBDdXJyZW50bHksIFJUQyBldmVudGxvZyBlbmNvZGVyLXBhcnNlciBj
YW4gb25seSBtYWludGFpbiBwYWRkaW5nIGxlbmd0aAotICAgIC8vIGlmIHBhY2tldCBpcyBmdWxs
IHBhZGRpbmcuCi0gICAgLy8gVE9ETyh3ZWJydGM6OTczMCk6IENoYW5nZSB0aGUgY29uZGl0aW9u
IHRvIHNvbWV0aGluZyBsaWtlCi0gICAgLy8gb3JpZ2luYWxfZXZlbnQucGFkZGluZ19sZW5ndGhf
ICE9IGxvZ2dlZF9ldmVudC5ydHAuaGVhZGVyLnBhZGRpbmdMZW5ndGguCi0gICAgcmV0dXJuIGZh
bHNlOwotICB9CisgICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcmIGxvZ2dlZF9ldmVu
dCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX21zKCksIGxv
Z2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQu
aGVhZGVyKCkuaGVhZGVyc19zaXplKCksCisgICAgICAgICAgICBsb2dnZWRfZXZlbnQucnRwLmhl
YWRlcl9sZW5ndGgpOworCisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5wYWNrZXRfbGVuZ3Ro
KCksIGxvZ2dlZF9ldmVudC5ydHAudG90YWxfbGVuZ3RoKTsKKworICAvLyBDdXJyZW50bHksIFJU
QyBldmVudGxvZyBlbmNvZGVyLXBhcnNlciBjYW4gb25seSBtYWludGFpbiBwYWRkaW5nIGxlbmd0
aAorICAvLyBpZiBwYWNrZXQgaXMgZnVsbCBwYWRkaW5nLgorICBFWFBFQ1RfRVEob3JpZ2luYWxf
ZXZlbnQucGFkZGluZ19sZW5ndGgoKSwKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVudC5ydHAuaGVh
ZGVyLnBhZGRpbmdMZW5ndGgpOwogCiAgIC8vIFRPRE8odGVyZWxpdXMpOiBQcm9iZSBjbHVzdGVy
IElEIGlzbid0IHBhcnNlZCwgdXNlZCBvciB0ZXN0ZWQuIFVubGVzcwogICAvLyBzb21lb25lIGhh
cyBhIHN0cm9uZyByZWFzb24gdG8ga2VlcCBpdCwgaXQnbGwgYmUgcmVtb3ZlZC4KIAotICBpZiAo
IVZlcmlmeUxvZ2dlZFJ0cEhlYWRlcihvcmlnaW5hbF9ldmVudC5oZWFkZXJfLCBsb2dnZWRfZXZl
bnQucnRwLmhlYWRlcikpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIHJldHVybiB0cnVlOworICBW
ZXJpZnlMb2dnZWRSdHBIZWFkZXIob3JpZ2luYWxfZXZlbnQuaGVhZGVyKCksIGxvZ2dlZF9ldmVu
dC5ydHAuaGVhZGVyKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRSdGNwUGFja2V0SW5jb21pbmco
Cit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZFJ0Y3BQYWNrZXRJbmNvbWluZygKICAg
ICBjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAg
Y29uc3QgTG9nZ2VkUnRjcFBhY2tldEluY29taW5nJiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9y
aWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3VzKCkp
Ci0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmIChvcmlnaW5hbF9ldmVudC5wYWNrZXRfLnNpemUo
KSAhPSBsb2dnZWRfZXZlbnQucnRjcC5yYXdfZGF0YS5zaXplKCkpCi0gICAgcmV0dXJuIGZhbHNl
OwotICBpZiAobWVtY21wKG9yaWdpbmFsX2V2ZW50LnBhY2tldF8uZGF0YSgpLCBsb2dnZWRfZXZl
bnQucnRjcC5yYXdfZGF0YS5kYXRhKCksCi0gICAgICAgICAgICAgb3JpZ2luYWxfZXZlbnQucGFj
a2V0Xy5zaXplKCkpICE9IDApIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgcmV0dXJuIHRy
dWU7CisgICAgY29uc3QgTG9nZ2VkUnRjcFBhY2tldEluY29taW5nJiBsb2dnZWRfZXZlbnQpIGNv
bnN0IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRf
ZXZlbnQubG9nX3RpbWVfbXMoKSk7CisKKyAgQVNTRVJUX0VRKG9yaWdpbmFsX2V2ZW50LnBhY2tl
dCgpLnNpemUoKSwgbG9nZ2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEuc2l6ZSgpKTsKKyAgRVhQRUNU
X0VRKAorICAgICAgbWVtY21wKG9yaWdpbmFsX2V2ZW50LnBhY2tldCgpLmRhdGEoKSwgbG9nZ2Vk
X2V2ZW50LnJ0Y3AucmF3X2RhdGEuZGF0YSgpLAorICAgICAgICAgICAgIG9yaWdpbmFsX2V2ZW50
LnBhY2tldCgpLnNpemUoKSksCisgICAgICAwKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRSdGNw
UGFja2V0T3V0Z29pbmcoCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZFJ0Y3BQYWNr
ZXRPdXRnb2luZygKICAgICBjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZyYgb3JpZ2lu
YWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkUnRjcFBhY2tldE91dGdvaW5nJiBsb2dnZWRfZXZl
bnQpIHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50
LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmIChvcmlnaW5hbF9ldmVu
dC5wYWNrZXRfLnNpemUoKSAhPSBsb2dnZWRfZXZlbnQucnRjcC5yYXdfZGF0YS5zaXplKCkpCi0g
ICAgcmV0dXJuIGZhbHNlOwotICBpZiAobWVtY21wKG9yaWdpbmFsX2V2ZW50LnBhY2tldF8uZGF0
YSgpLCBsb2dnZWRfZXZlbnQucnRjcC5yYXdfZGF0YS5kYXRhKCksCi0gICAgICAgICAgICAgb3Jp
Z2luYWxfZXZlbnQucGFja2V0Xy5zaXplKCkpICE9IDApIHsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgY29uc3QgTG9nZ2VkUnRjcFBhY2tldE91dGdvaW5nJiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsK
KyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQu
bG9nX3RpbWVfbXMoKSk7CisKKyAgQVNTRVJUX0VRKG9yaWdpbmFsX2V2ZW50LnBhY2tldCgpLnNp
emUoKSwgbG9nZ2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKAor
ICAgICAgbWVtY21wKG9yaWdpbmFsX2V2ZW50LnBhY2tldCgpLmRhdGEoKSwgbG9nZ2VkX2V2ZW50
LnJ0Y3AucmF3X2RhdGEuZGF0YSgpLAorICAgICAgICAgICAgIG9yaWdpbmFsX2V2ZW50LnBhY2tl
dCgpLnNpemUoKSksCisgICAgICAwKTsKK30KKwordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlM
b2dnZWRTdGFydEV2ZW50KAorICAgIGludDY0X3Qgc3RhcnRfdGltZV91cywKKyAgICBpbnQ2NF90
IHV0Y19zdGFydF90aW1lX3VzLAorICAgIGNvbnN0IExvZ2dlZFN0YXJ0RXZlbnQmIGxvZ2dlZF9l
dmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEoc3RhcnRfdGltZV91cyAvIDEwMDAsIGxvZ2dlZF9l
dmVudC5sb2dfdGltZV9tcygpKTsKKyAgaWYgKGVuY29kaW5nX3R5cGVfID09IFJ0Y0V2ZW50TG9n
OjpFbmNvZGluZ1R5cGU6Ok5ld0Zvcm1hdCkgeworICAgIEVYUEVDVF9FUSh1dGNfc3RhcnRfdGlt
ZV91cyAvIDEwMDAsIGxvZ2dlZF9ldmVudC51dGNfc3RhcnRfdGltZV9tcyk7CiAgIH0KLSAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkU3RhcnRFdmVudChpbnQ2NF90IHN0YXJ0
X3RpbWVfdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9nZ2VkU3RhcnRF
dmVudCYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChzdGFydF90aW1lX3VzICE9IGxvZ2dlZF9ldmVu
dC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Cit2b2lk
IEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZFN0b3BFdmVudCgKKyAgICBpbnQ2NF90IHN0b3Bf
dGltZV91cywKKyAgICBjb25zdCBMb2dnZWRTdG9wRXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Qg
eworICBFWFBFQ1RfRVEoc3RvcF90aW1lX3VzIC8gMTAwMCwgbG9nZ2VkX2V2ZW50LmxvZ190aW1l
X21zKCkpOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZFN0b3BFdmVudChpbnQ2NF90IHN0b3BfdGlt
ZV91cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvZ2dlZFN0b3BFdmVudCYg
bG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChzdG9wX3RpbWVfdXMgIT0gbG9nZ2VkX2V2ZW50LmxvZ190
aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKK3ZvaWQgVmVyaWZ5
TG9nZ2VkU3RyZWFtQ29uZmlnKGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnJiBvcmlnaW5hbF9j
b25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGNsb2c6OlN0cmVh
bUNvbmZpZyYgbG9nZ2VkX2NvbmZpZykgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfY29uZmlnLmxv
Y2FsX3NzcmMsIGxvZ2dlZF9jb25maWcubG9jYWxfc3NyYyk7CisgIEVYUEVDVF9FUShvcmlnaW5h
bF9jb25maWcucmVtb3RlX3NzcmMsIGxvZ2dlZF9jb25maWcucmVtb3RlX3NzcmMpOworICBFWFBF
Q1RfRVEob3JpZ2luYWxfY29uZmlnLnJ0eF9zc3JjLCBsb2dnZWRfY29uZmlnLnJ0eF9zc3JjKTsK
KworICBFWFBFQ1RfRVEob3JpZ2luYWxfY29uZmlnLnJ0cF9leHRlbnNpb25zLnNpemUoKSwKKyAg
ICAgICAgICAgIGxvZ2dlZF9jb25maWcucnRwX2V4dGVuc2lvbnMuc2l6ZSgpKTsKKyAgc2l6ZV90
IHJlY29nbml6ZWRfZXh0ZW5zaW9ucyA9IDA7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga01h
eE51bUV4dGVuc2lvbnM7IGkrKykgeworICAgIGF1dG8gb3JpZ2luYWxfaWQgPQorICAgICAgICBH
ZXRFeHRlbnNpb25JZChvcmlnaW5hbF9jb25maWcucnRwX2V4dGVuc2lvbnMsIGtFeHRlbnNpb25z
W2ldLm5hbWUpOworICAgIGF1dG8gbG9nZ2VkX2lkID0KKyAgICAgICAgR2V0RXh0ZW5zaW9uSWQo
bG9nZ2VkX2NvbmZpZy5ydHBfZXh0ZW5zaW9ucywga0V4dGVuc2lvbnNbaV0ubmFtZSk7CisgICAg
RVhQRUNUX0VRKG9yaWdpbmFsX2lkLCBsb2dnZWRfaWQpCisgICAgICAgIDw8ICJJRHMgZm9yICIg
PDwga0V4dGVuc2lvbnNbaV0ubmFtZSA8PCAiIGRvbid0IG1hdGNoLiBPcmlnaW5hbCBJRCAiCisg
ICAgICAgIDw8IG9yaWdpbmFsX2lkLnZhbHVlX29yKC0xKSA8PCAiLiBQYXJzZWQgSUQgIiA8PCBs
b2dnZWRfaWQudmFsdWVfb3IoLTEpCisgICAgICAgIDw8ICIuIjsKKyAgICBpZiAob3JpZ2luYWxf
aWQpIHsKKyAgICAgIHJlY29nbml6ZWRfZXh0ZW5zaW9ucysrOworICAgIH0KKyAgfQorICBFWFBF
Q1RfRVEocmVjb2duaXplZF9leHRlbnNpb25zLCBvcmlnaW5hbF9jb25maWcucnRwX2V4dGVuc2lv
bnMuc2l6ZSgpKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRBdWRpb1JlY3ZDb25maWcoCit2b2lk
IEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZEF1ZGlvUmVjdkNvbmZpZygKICAgICBjb25zdCBS
dGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29u
c3QgTG9nZ2VkQXVkaW9SZWN2Q29uZmlnJiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdpbmFs
X2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3VzKCkpCi0gICAg
cmV0dXJuIGZhbHNlOwotICBpZiAoKm9yaWdpbmFsX2V2ZW50LmNvbmZpZ18gIT0gbG9nZ2VkX2V2
ZW50LmNvbmZpZykKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVlOworICAgIGNvbnN0
IExvZ2dlZEF1ZGlvUmVjdkNvbmZpZyYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9F
UShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21z
KCkpOworICBWZXJpZnlMb2dnZWRTdHJlYW1Db25maWcob3JpZ2luYWxfZXZlbnQuY29uZmlnKCks
IGxvZ2dlZF9ldmVudC5jb25maWcpOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZEF1ZGlvU2VuZENv
bmZpZygKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkQXVkaW9TZW5kQ29uZmlnKAog
ICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnJiBvcmlnaW5hbF9ldmVudCwK
LSAgICBjb25zdCBMb2dnZWRBdWRpb1NlbmRDb25maWcmIGxvZ2dlZF9ldmVudCkgewotICBpZiAo
b3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMo
KSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmICgqb3JpZ2luYWxfZXZlbnQuY29uZmlnXyAhPSBs
b2dnZWRfZXZlbnQuY29uZmlnKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Cisg
ICAgY29uc3QgTG9nZ2VkQXVkaW9TZW5kQ29uZmlnJiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAg
RVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9n
X3RpbWVfbXMoKSk7CisgIFZlcmlmeUxvZ2dlZFN0cmVhbUNvbmZpZyhvcmlnaW5hbF9ldmVudC5j
b25maWcoKSwgbG9nZ2VkX2V2ZW50LmNvbmZpZyk7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkVmlk
ZW9SZWN2Q29uZmlnKAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRWaWRlb1JlY3ZD
b25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcmIG9yaWdp
bmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZFZpZGVvUmVjdkNvbmZpZyYgbG9nZ2VkX2V2ZW50
KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5s
b2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKCpvcmlnaW5hbF9ldmVudC5j
b25maWdfICE9IGxvZ2dlZF9ldmVudC5jb25maWcpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1
cm4gdHJ1ZTsKKyAgICBjb25zdCBMb2dnZWRWaWRlb1JlY3ZDb25maWcmIGxvZ2dlZF9ldmVudCkg
Y29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX21zKCksIGxvZ2dl
ZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKyAgVmVyaWZ5TG9nZ2VkU3RyZWFtQ29uZmlnKG9yaWdp
bmFsX2V2ZW50LmNvbmZpZygpLCBsb2dnZWRfZXZlbnQuY29uZmlnKTsKIH0KIAotYm9vbCBWZXJp
ZnlMb2dnZWRWaWRlb1NlbmRDb25maWcoCit2b2lkIEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dl
ZFZpZGVvU2VuZENvbmZpZygKICAgICBjb25zdCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZp
ZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkVmlkZW9TZW5kQ29uZmlnJiBsb2dn
ZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2Vk
X2V2ZW50LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IExvZ2dl
ZFZpZGVvU2VuZENvbmZpZyYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmln
aW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOwog
ICAvLyBUT0RPKHRlcmVsaXVzKTogSW4gdGhlIHBhc3QsIHdlIGFsbG93ZWQgc3RvcmluZyBtdWx0
aXBsZSBSdGNTdHJlYW1Db25maWdzCiAgIC8vIGluIHRoZSBzYW1lIFJ0Y0V2ZW50VmlkZW9TZW5k
U3RyZWFtQ29uZmlnLiBMb29rIGludG8gd2hldGhlciB3ZSBzaG91bGQgZHJvcAogICAvLyBiYWNr
d2FyZHMgY29tcGF0aWJpbGl0eSBpbiB0aGUgcGFyc2VyLgotICBpZiAobG9nZ2VkX2V2ZW50LmNv
bmZpZ3Muc2l6ZSgpICE9IDEpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoKm9yaWdpbmFsX2V2
ZW50LmNvbmZpZ18gIT0gbG9nZ2VkX2V2ZW50LmNvbmZpZ3NbMF0pCi0gICAgcmV0dXJuIGZhbHNl
OwotICByZXR1cm4gdHJ1ZTsKKyAgQVNTRVJUX0VRKGxvZ2dlZF9ldmVudC5jb25maWdzLnNpemUo
KSwgMXUpOworICBWZXJpZnlMb2dnZWRTdHJlYW1Db25maWcob3JpZ2luYWxfZXZlbnQuY29uZmln
KCksIGxvZ2dlZF9ldmVudC5jb25maWdzWzBdKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHRlc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0X2hlbHBlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3RfaGVscGVyLmgKaW5kZXggZjRkMTg3NjUyODdiZTRk
YzE1NjYzM2VjM2JiNDhkM2M4OTI3ZDUyMi4uODE3NjBiNzU1NTM2MDhhZmZhYWFlMzYwZDgyYWUw
YjkwOGYwZThiYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3RfaGVs
cGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3RfaGVscGVyLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19l
dmVudF92aWRlb19yZWNlaXZlX3N0cmVhbV9jb25maWcuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0
Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF92aWRlb19zZW5kX3N0cmVhbV9jb25maWcuaCIK
ICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXJfbmV3
LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19zdHJlYW1fY29uZmlnLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVjZWl2ZXJf
cmVwb3J0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
cmVwb3J0X2Jsb2NrLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9w
YWNrZXQvc2VuZGVyX3JlcG9ydC5oIgpAQCAtNzAsMjEgKzcxLDMyIEBAIGNsYXNzIEV2ZW50R2Vu
ZXJhdG9yIHsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmc+
IE5ld1J0Y3BQYWNrZXRPdXRnb2luZygpOwogCisgIC8vIHxhbGxfY29uZmlndXJlZF9leHRzfCBk
ZXRlcm1pbmVzIHdoZXRoZXIgdGhlIFJUUCBwYWNrZXQgZXhoaWJpdHMgYWxsCisgIC8vIGNvbmZp
Z3VyZWQgZXh0ZW5zaW9ucywgb3IgYSByYW5kb20gc3Vic2V0IHRoZXJlb2YuCiAgIHZvaWQgUmFu
ZG9taXplUnRwUGFja2V0KHNpemVfdCBwYXlsb2FkX3NpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBwYWRkaW5nX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IHNzcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJ0cEhlYWRlckV4
dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUnRw
UGFja2V0KiBydHBfcGFja2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwUGFja2V0
KiBydHBfcGFja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFsbF9jb25maWd1
cmVkX2V4dHMpOwogCisgIC8vIHxhbGxfY29uZmlndXJlZF9leHRzfCBkZXRlcm1pbmVzIHdoZXRo
ZXIgdGhlIFJUUCBwYWNrZXQgZXhoaWJpdHMgYWxsCisgIC8vIGNvbmZpZ3VyZWQgZXh0ZW5zaW9u
cywgb3IgYSByYW5kb20gc3Vic2V0IHRoZXJlb2YuCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVu
dFJ0cFBhY2tldEluY29taW5nPiBOZXdSdHBQYWNrZXRJbmNvbWluZygKICAgICAgIHVpbnQzMl90
IHNzcmMsCi0gICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXAp
OworICAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBleHRlbnNpb25fbWFwLAorICAg
ICAgYm9vbCBhbGxfY29uZmlndXJlZF9leHRzID0gdHJ1ZSk7CiAKKyAgLy8gfGFsbF9jb25maWd1
cmVkX2V4dHN8IGRldGVybWluZXMgd2hldGhlciB0aGUgUlRQIHBhY2tldCBleGhpYml0cyBhbGwK
KyAgLy8gY29uZmlndXJlZCBleHRlbnNpb25zLCBvciBhIHJhbmRvbSBzdWJzZXQgdGhlcmVvZi4K
ICAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmc+IE5ld1J0cFBhY2tl
dE91dGdvaW5nKAogICAgICAgdWludDMyX3Qgc3NyYywKLSAgICAgIGNvbnN0IFJ0cEhlYWRlckV4
dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCk7CisgICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNp
b25NYXAmIGV4dGVuc2lvbl9tYXAsCisgICAgICBib29sIGFsbF9jb25maWd1cmVkX2V4dHMgPSB0
cnVlKTsKIAotICBSdHBIZWFkZXJFeHRlbnNpb25NYXAgTmV3UnRwSGVhZGVyRXh0ZW5zaW9uTWFw
KCk7CisgIC8vIHxjb25maWd1cmVfYWxsfCBkZXRlcm1pbmVzIHdoZXRoZXIgYWxsIHN1cHBvcnRl
ZCBleHRlbnNpb25zIGFyZSBjb25maWd1cmVkLAorICAvLyBvciBhIHJhbmRvbSBzdWJzZXQuCisg
IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCBOZXdSdHBIZWFkZXJFeHRlbnNpb25NYXAoYm9vbCBjb25m
aWd1cmVfYWxsID0gZmFsc2UpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvUmVj
ZWl2ZVN0cmVhbUNvbmZpZz4gTmV3QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKAogICAgICAgdWlu
dDMyX3Qgc3NyYywKQEAgLTExMCw4MCArMTIyLDExMSBAQCBjbGFzcyBFdmVudEdlbmVyYXRvciB7
CiAgIFJhbmRvbSBwcm5nXzsKIH07CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkQWxyU3RhdGVFdmVudChj
b25zdCBSdGNFdmVudEFsclN0YXRlJiBvcmlnaW5hbF9ldmVudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBMb2dnZWRBbHJTdGF0ZUV2ZW50JiBsb2dnZWRfZXZlbnQpOwot
Ci1ib29sIFZlcmlmeUxvZ2dlZEF1ZGlvUGxheW91dEV2ZW50KGNvbnN0IFJ0Y0V2ZW50QXVkaW9Q
bGF5b3V0JiBvcmlnaW5hbF9ldmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgTG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wg
VmVyaWZ5TG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50KAotICAgIGNvbnN0IFJ0Y0V2
ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9n
Z2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50JiBsb2dnZWRfZXZlbnQpOwotCi1ib29sIFZl
cmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoCi0gICAgY29uc3QgUnRjRXZlbnRCd2VVcGRh
dGVEZWxheUJhc2VkJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRCd2VEZWxheUJh
c2VkVXBkYXRlJiBsb2dnZWRfZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZEJ3ZUxvc3NCYXNl
ZFVwZGF0ZSgKLSAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCYgb3JpZ2luYWxf
ZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlJiBsb2dnZWRfZXZlbnQp
OwotCi1ib29sIFZlcmlmeUxvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCgKLSAgICBj
b25zdCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNv
bnN0IExvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCYgbG9nZ2VkX2V2ZW50KTsKLQot
Ym9vbCBWZXJpZnlMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCgKLSAgICBjb25zdCBSdGNFdmVu
dFByb2JlUmVzdWx0RmFpbHVyZSYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQndl
UHJvYmVGYWlsdXJlRXZlbnQmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkQndl
UHJvYmVTdWNjZXNzRXZlbnQoCi0gICAgY29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3Mm
IG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50JiBs
b2dnZWRfZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWco
Ci0gICAgY29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnJiBvcmlnaW5hbF9ldmVu
dCwKLSAgICBjb25zdCBMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnJiBsb2dnZWRfZXZlbnQp
OwotCi1ib29sIFZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCgKLSAgICBjb25zdCBS
dGNFdmVudEljZUNhbmRpZGF0ZVBhaXImIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dl
ZEljZUNhbmRpZGF0ZVBhaXJFdmVudCYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dn
ZWRSdHBQYWNrZXRJbmNvbWluZygKLSAgICBjb25zdCBSdGNFdmVudFJ0cFBhY2tldEluY29taW5n
JiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyYgbG9n
Z2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRSdHBQYWNrZXRPdXRnb2luZygKLSAgICBj
b25zdCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25z
dCBMb2dnZWRSdHBQYWNrZXRPdXRnb2luZyYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlM
b2dnZWRSdGNwUGFja2V0SW5jb21pbmcoCi0gICAgY29uc3QgUnRjRXZlbnRSdGNwUGFja2V0SW5j
b21pbmcmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNrZXRJbmNvbWlu
ZyYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmco
Ci0gICAgY29uc3QgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcmIG9yaWdpbmFsX2V2ZW50LAot
ICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZyYgbG9nZ2VkX2V2ZW50KTsKLQotYm9v
bCBWZXJpZnlMb2dnZWRTdGFydEV2ZW50KGludDY0X3Qgc3RhcnRfdGltZV91cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRTdGFydEV2ZW50JiBsb2dnZWRfZXZlbnQp
OwotYm9vbCBWZXJpZnlMb2dnZWRTdG9wRXZlbnQoaW50NjRfdCBzdG9wX3RpbWVfdXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRTdG9wRXZlbnQmIGxvZ2dlZF9ldmVu
dCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkQXVkaW9SZWN2Q29uZmlnKAotICAgIGNvbnN0IFJ0Y0V2
ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBM
b2dnZWRBdWRpb1JlY3ZDb25maWcmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2Vk
QXVkaW9TZW5kQ29uZmlnKAotICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmln
JiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRBdWRpb1NlbmRDb25maWcmIGxvZ2dl
ZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkVmlkZW9SZWN2Q29uZmlnKAotICAgIGNvbnN0
IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnJiBvcmlnaW5hbF9ldmVudCwKLSAgICBj
b25zdCBMb2dnZWRWaWRlb1JlY3ZDb25maWcmIGxvZ2dlZF9ldmVudCk7CitjbGFzcyBFdmVudFZl
cmlmaWVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEV2ZW50VmVyaWZpZXIoUnRjRXZlbnRMb2c6
OkVuY29kaW5nVHlwZSBlbmNvZGluZ190eXBlKQorICAgICAgOiBlbmNvZGluZ190eXBlXyhlbmNv
ZGluZ190eXBlKSB7fQorCisgIHZvaWQgVmVyaWZ5TG9nZ2VkQWxyU3RhdGVFdmVudChjb25zdCBS
dGNFdmVudEFsclN0YXRlJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IExvZ2dlZEFsclN0YXRlRXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Q7
CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCgKKyAgICAgIGNvbnN0IFJ0
Y0V2ZW50QXVkaW9QbGF5b3V0JiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZEF1
ZGlvUGxheW91dEV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5TG9n
Z2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50KAorICAgICAgY29uc3QgUnRjRXZlbnRBdWRp
b05ldHdvcmtBZGFwdGF0aW9uJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZEF1
ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCYgbG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lk
IFZlcmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoCisgICAgICBjb25zdCBSdGNFdmVudEJ3
ZVVwZGF0ZURlbGF5QmFzZWQmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9nZ2VkQndl
RGVsYXlCYXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxv
Z2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSgKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlTG9z
c0Jhc2VkJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZEJ3ZUxvc3NCYXNlZFVw
ZGF0ZSYgbG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dlZEJ3ZVByb2Jl
Q2x1c3RlckNyZWF0ZWRFdmVudCgKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3Jl
YXRlZCYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRCd2VQcm9iZUNsdXN0ZXJD
cmVhdGVkRXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRC
d2VQcm9iZUZhaWx1cmVFdmVudCgKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWls
dXJlJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2
ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5TG9nZ2VkQndlUHJvYmVT
dWNjZXNzRXZlbnQoCisgICAgICBjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2VzcyYgb3Jp
Z2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCYgbG9n
Z2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJD
b25maWcoCisgICAgICBjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWcmIG9yaWdp
bmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgbG9n
Z2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJF
dmVudCgKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpciYgb3JpZ2luYWxfZXZl
bnQsCisgICAgICBjb25zdCBMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQmIGxvZ2dlZF9ldmVu
dCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRSdHBQYWNrZXRJbmNvbWluZygKKyAgICAg
IGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcmIG9yaWdpbmFsX2V2ZW50LAorICAgICAg
Y29uc3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAg
dm9pZCBWZXJpZnlMb2dnZWRSdHBQYWNrZXRPdXRnb2luZygKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50
UnRwUGFja2V0T3V0Z29pbmcmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9nZ2VkUnRw
UGFja2V0T3V0Z29pbmcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEV2ZW50VHlwZSwgdHlwZW5hbWUgUGFyc2VkVHlwZT4KKyAgdm9pZCBWZXJpZnlMb2dnZWRS
dHBQYWNrZXQoY29uc3QgRXZlbnRUeXBlJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUGFyc2VkVHlwZSYgbG9nZ2VkX2V2ZW50KSB7CisgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoUGFyc2VkVHlwZSkgPT0gMCwKKyAgICAgICAgICAgICAgICAgICJZ
b3UgaGF2ZSB0byB1c2Ugb25lIG9mIHRoZSB0d28gZGVmaW5lZCB0ZW1wbGF0ZSAiCisgICAgICAg
ICAgICAgICAgICAic3BlY2lhbGl6YXRpb25zIG9mIFZlcmlmeUxvZ2dlZFJ0cFBhY2tldCIpOwor
ICB9CisKKyAgdGVtcGxhdGUgPD4KKyAgdm9pZCBWZXJpZnlMb2dnZWRSdHBQYWNrZXQoY29uc3Qg
UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyYgb3JpZ2luYWxfZXZlbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBsb2dnZWRfZXZl
bnQpIHsKKyAgICBWZXJpZnlMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyhvcmlnaW5hbF9ldmVudCwg
bG9nZ2VkX2V2ZW50KTsKKyAgfQorCisgIHRlbXBsYXRlIDw+CisgIHZvaWQgVmVyaWZ5TG9nZ2Vk
UnRwUGFja2V0KGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcmIG9yaWdpbmFsX2V2ZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRPdXRn
b2luZyYgbG9nZ2VkX2V2ZW50KSB7CisgICAgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0T3V0Z29pbmco
b3JpZ2luYWxfZXZlbnQsIGxvZ2dlZF9ldmVudCk7CisgIH0KKworICB2b2lkIFZlcmlmeUxvZ2dl
ZFJ0Y3BQYWNrZXRJbmNvbWluZygKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29t
aW5nJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNrZXRJbmNvbWlu
ZyYgbG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dlZFJ0Y3BQYWNrZXRP
dXRnb2luZygKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdvaW5nJiBvcmlnaW5h
bF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZyYgbG9nZ2VkX2V2
ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dlZFN0YXJ0RXZlbnQoaW50NjRfdCBzdGFy
dF90aW1lX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB1dGNfc3Rh
cnRfdGltZV91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvZ2dlZFN0
YXJ0RXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisgIHZvaWQgVmVyaWZ5TG9nZ2VkU3RvcEV2
ZW50KGludDY0X3Qgc3RvcF90aW1lX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBMb2dnZWRTdG9wRXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJp
ZnlMb2dnZWRBdWRpb1JlY3ZDb25maWcoCisgICAgICBjb25zdCBSdGNFdmVudEF1ZGlvUmVjZWl2
ZVN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRBdWRpb1Jl
Y3ZDb25maWcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRBdWRp
b1NlbmRDb25maWcoCisgICAgICBjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyYg
b3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRBdWRpb1NlbmRDb25maWcmIGxvZ2dl
ZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRWaWRlb1JlY3ZDb25maWcoCisg
ICAgICBjb25zdCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZl
bnQsCisgICAgICBjb25zdCBMb2dnZWRWaWRlb1JlY3ZDb25maWcmIGxvZ2dlZF9ldmVudCkgY29u
c3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRWaWRlb1NlbmRDb25maWcoCisgICAgICBjb25zdCBS
dGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25z
dCBMb2dnZWRWaWRlb1NlbmRDb25maWcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CiAKLWJvb2wgVmVy
aWZ5TG9nZ2VkVmlkZW9TZW5kQ29uZmlnKAotICAgIGNvbnN0IFJ0Y0V2ZW50VmlkZW9TZW5kU3Ry
ZWFtQ29uZmlnJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRWaWRlb1NlbmRDb25m
aWcmIGxvZ2dlZF9ldmVudCk7CisgcHJpdmF0ZToKKyAgUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlw
ZSBlbmNvZGluZ190eXBlXzsKK307CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX3N0cmVhbV9jb25maWcuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oCmluZGV4IGQ5NWM4MzU5ZWNlODI5ZjcwNTI3YmE0MThj
YjIzNDhjOWU1NzZlODguLmE5ZGE0ODE0ZTZiMzg4NDgxMDIyYmFmYzRiNWFhYjdmOGQ0OTRkZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNf
c3RyZWFtX2NvbmZpZy5oCkBAIC0xMSwxMiArMTEsMTIgQEAKICNpZm5kZWYgTE9HR0lOR19SVENf
RVZFTlRfTE9HX1JUQ19TVFJFQU1fQ09ORklHX0hfCiAjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5U
X0xPR19SVENfU1RSRUFNX0NPTkZJR19IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVk
ZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9ydHBfaGVhZGVy
cy5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5
cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBu
YW1lc3BhY2UgcnRjbG9nIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvQlVJTEQuZ24KaW5kZXggODU4YjI3MmY1NTgwZGMyYTRi
MTZlZmZmMzdkNDA4N2I0Y2U2ZWMxOC4uYjZmOThjNjdiNzI3ODIyN2QxN2M2Njc2NDY0ZDlmODIx
MzY5ZTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvQlVJTEQuZ24KQEAgLTQyLDYgKzQyLDcgQEAgcnRjX3NvdXJjZV9z
ZXQoInJ0Y19oMjY0X3Byb2ZpbGVfaWQiKSB7CiAgICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAg
ICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKKyAgICAiLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTEzNiw3
ICsxMzcsOSBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19tZWRpYV9iYXNlIikgewogICAgICIu
Li9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzIiwK
ICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9h
cHByb3ZlZCIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLi4v
cnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdCIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
eXBlczpvcHRpb25hbCIsCiAgIF0KIApAQCAtMTU5LDYgKzE2Miw1MiBAQCBydGNfc3RhdGljX2xp
YnJhcnkoInJ0Y19jb25zdGFudHMiKSB7CiAgIF0KIH0KIAorcnRjX3N0YXRpY19saWJyYXJ5KCJy
dGNfc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlciIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0K
KyAgZGVmaW5lcyA9IFtdCisgIGxpYnMgPSBbXQorICBzb3VyY2VzID0gWworICAgICJlbmdpbmUv
c2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5jYyIsCisgICAgImVuZ2luZS9zaW11bGNhc3RfZW5j
b2Rlcl9hZGFwdGVyLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uL2FwaS92aWRlbzp2aWRl
b19iaXRyYXRlX2FsbG9jYXRpb24iLAorICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQy
MCIsCisgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCisgICAgIi4u
L21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGVjX2ludGVyZmFjZSIsCisgICAgIi4uL21v
ZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKKyAgICAiLi4vcnRjX2Jh
c2U6Y2hlY2tzIiwKKyAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIu
Li9ydGNfYmFzZTpzZXF1ZW5jZWRfdGFza19jaGVja2VyIiwKKyAgICAiLi4vc3lzdGVtX3dyYXBw
ZXJzIiwKKyAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICAgICIvL3RoaXJkX3Bh
cnR5L2xpYnl1diIsCisgIF0KKyAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5n
KSB7CisgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVn
aW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgorICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIv
L2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCisgIH0KK30KKworcnRj
X3N0YXRpY19saWJyYXJ5KCJydGNfdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5IikgeworICB2
aXNpYmlsaXR5ID0gWyAiKiIgXQorICBkZWZpbmVzID0gW10KKyAgbGlicyA9IFtdCisgIHNvdXJj
ZXMgPSBbCisgICAgImVuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuY2MiLAorICAg
ICJlbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5LmgiLAorICBdCisgIGRlcHMgPSBb
CisgICAgIjpydGNfc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlciIsCisgICAgIi4uL2FwaS92aWRl
b19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCisgIF0KKyAgaWYgKCFidWlsZF93aXRoX2Nocm9t
aXVtICYmIGlzX2NsYW5nKSB7CisgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJv
bWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgorICAgIHN1cHByZXNzZWRf
Y29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBd
CisgIH0KK30KKwogcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNz
IikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBhbGxvd19wb2lzb24gPSBbICJzb2Z0d2Fy
ZV92aWRlb19jb2RlY3MiIF0KQEAgLTE2Niw4ICsyMTUsOSBAQCBydGNfc3RhdGljX2xpYnJhcnko
InJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3MiKSB7CiAgIGxpYnMgPSBbXQogICBkZXBzID0gWwog
ICAgICI6cnRjX2gyNjRfcHJvZmlsZV9pZCIsCisgICAgIjpydGNfc2ltdWxjYXN0X2VuY29kZXJf
YWRhcHRlciIsCisgICAgIjpydGNfdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5IiwKICAgICAi
Li4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKLSAgICAiLi4v
c3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5IiwKICAgXQogICBzb3VyY2VzID0gWwpAQCAtMTgzLDkgKzIzMyw5IEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2ludGVybmFsX3ZpZGVvX2NvZGVjcyIpIHsKICAgICAi
ZW5naW5lL3Njb3BlZHZpZGVvZGVjb2Rlci5oIiwKICAgICAiZW5naW5lL3Njb3BlZHZpZGVvZW5j
b2Rlci5jYyIsCiAgICAgImVuZ2luZS9zY29wZWR2aWRlb2VuY29kZXIuaCIsCi0gICAgImVuZ2lu
ZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmNjIiwKLSAgICAiZW5naW5lL3NpbXVsY2FzdF9l
bmNvZGVyX2FkYXB0ZXIuaCIsCi0gICAgImVuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJv
eHkuY2MiLAorCisgICAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy83OTI1KTogc3RvcCBleHBvcnRp
bmcgdGhpcyBoZWFkZXIgb25jZSBkb3duc3RyZWFtCisgICAgIyB0YXJnZXRzIGRlcGVuZCBvbiA6
cnRjX3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eSBkaXJlY3RseS4KICAgICAiZW5naW5lL3Zw
OF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eS5oIiwKICAgICAiZW5naW5lL3dlYnJ0Y3ZpZGVvZGVj
b2RlcmZhY3RvcnkuaCIsCiAgICAgImVuZ2luZS93ZWJydGN2aWRlb2VuY29kZXJmYWN0b3J5Lmgi
LApAQCAtMjAyLDI0ICsyNTIsMjAgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfaW50ZXJuYWxf
dmlkZW9fY29kZWNzIikgewogICBkZXBzICs9IFsKICAgICAiOnJ0Y19jb25zdGFudHMiLAogICAg
ICI6cnRjX21lZGlhX2Jhc2UiLAotICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vYXBp
L3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbiIsCi0gICAgIi4uL2FwaS92aWRlbzp2aWRl
b19mcmFtZV9pNDIwIiwKKyAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAiLi4v
YXBpL3ZpZGVvX2NvZGVjczpydGNfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlcnMiLAogICAgICIu
Li9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAogICAgICIuLi9jYWxsOmNhbGxf
aW50ZXJmYWNlcyIsCiAgICAgIi4uL2NhbGw6dmlkZW9fc3RyZWFtX2FwaSIsCi0gICAgIi4uL21v
ZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKICAgICAiLi4vbW9kdWxl
cy92aWRlb19jb2Rpbmc6d2VicnRjX2gyNjQiLAogICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zzp3ZWJydGNfbXVsdGlwbGV4IiwKICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6d2VicnRj
X3ZwOCIsCiAgICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOndlYnJ0Y192cDkiLAogICAgICIu
Li9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIs
Ci0gICAgIi4uL3J0Y19iYXNlOnNlcXVlbmNlZF90YXNrX2NoZWNrZXIiLAotICAgICIuLi9zeXN0
ZW1fd3JhcHBlcnMiLAotICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpv
cHRpb25hbCIsCi0gICAgIi8vdGhpcmRfcGFydHkvbGlieXV2IiwKKyAgICAiLi4vcnRjX2Jhc2Uv
c3lzdGVtOnJ0Y19leHBvcnQiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzIiwKICAgXQogfQogCkBAIC0yMzIsMTIgKzI3OCwxNSBAQCBydGNfc3RhdGljX2xpYnJh
cnkoInJ0Y19hdWRpb192aWRlbyIpIHsKICAgZGVmaW5lcyA9IFtdCiAgIGxpYnMgPSBbXQogICBk
ZXBzID0gWworICAgICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9y
eSIsCisgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICIuLi9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXA6YWVjX2R1bXAiLAogICAgICIuLi9tb2R1bGVz
L3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAogICAgICIuLi9tb2R1bGVzL3Zp
ZGVvX2NvZGluZzp2aWRlb19jb2RpbmciLAogICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2
aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAgICAgIi4uL3J0Y19iYXNlOmF1ZGlvX2Zvcm1hdF90b19z
dHJpbmciLAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi9ydGNfYmFzZS9zeXN0
ZW06cnRjX2V4cG9ydCIsCiAgICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2NCIsCiAg
ICAgIi4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uL3N5c3RlbV93cmFw
cGVyczptZXRyaWNzIiwKQEAgLTMwNSw2ICszNTQsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0
Y19hdWRpb192aWRlbyIpIHsKICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9h
cGkiLAogICAgICIuLi9hcGk6dHJhbnNwb3J0X2FwaSIsCiAgICAgIi4uL2FwaS9hdWRpb19jb2Rl
Y3M6YXVkaW9fY29kZWNzX2FwaSIsCisgICAgIi4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2Jp
dHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUi
LAogICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCiAgICAgIi4uL2FwaS92aWRl
b19jb2RlY3M6cnRjX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXJzIiwKQEAgLTMyMiw3ICszNzIs
MTAgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYXVkaW9fdmlkZW8iKSB7CiAgICAgIi4uL3J0
Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAogICAg
ICIuLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIsCisgICAgIi4uL3J0Y19iYXNlL2V4cGVyaW1lbnRz
Om5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50IiwKICAgICAiLi4vc3lzdGVtX3dy
YXBwZXJzIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtMzkxLDI0
ICs0NDQsMjkgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgaW5jbHVkZV9kaXJzID0g
W10KICAgICBkZXBzID0gWwogICAgICAgIjpydGNfYXVkaW9fdmlkZW8iLAorICAgICAgIjpydGNf
c2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlciIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVy
Y29ubmVjdGlvbl9hcGkiLAogICAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwK
ICAgICAgICIuLi9jYWxsOnZpZGVvX3N0cmVhbV9hcGkiLAogICAgICAgIi4uL2NvbW1vbl92aWRl
bzpjb21tb25fdmlkZW8iLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fY29kaW5nOnJlbnRfYV9j
b2RlYyIsCisgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgICAi
Li4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgIi4u
L21vZHVsZXMvcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAgICIuLi9tb2R1bGVzL3Zp
ZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAogICAgICAgIi4uL21vZHVsZXMvdmlk
ZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKICAgICAgICIuLi9wMnA6cnRjX3AycCIs
CiAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAgICIuLi9ydGNfYmFzZTpndW5pdF9o
ZWxwZXJzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCiAgICAgICAiLi4v
cnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAogICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21lbW9yeSIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cyIsCiAgICAgXQogICAgIHNvdXJjZXMgPSBbCiAgICAgICAiYmFzZS9mYWtlZnJhbWVzb3VyY2Uu
Y2MiLAogICAgICAgImJhc2UvZmFrZWZyYW1lc291cmNlLmgiLAorICAgICAgImJhc2UvZmFrZW1l
ZGlhZW5naW5lLmNjIiwKICAgICAgICJiYXNlL2Zha2VtZWRpYWVuZ2luZS5oIiwKICAgICAgICJi
YXNlL2Zha2VuZXR3b3JraW50ZXJmYWNlLmgiLAogICAgICAgImJhc2UvZmFrZXJ0cC5jYyIsCkBA
IC00NTAsNyArNTA4LDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vY2Fs
bDptb2NrX3J0cF9pbnRlcmZhY2VzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAg
ICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICAgIi4uL3J0Y19iYXNl
OnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfdGFza19xdWV1
ZV9mb3JfdGVzdCIsCiAgICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdCIsCiAg
ICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLApAQCAtNDg2LDggKzU0MywxMCBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6cnRjX2F1ZGlvX3ZpZGVvIiwKICAgICAgICI6cnRj
X2NvbnN0YW50cyIsCiAgICAgICAiOnJ0Y19kYXRhIiwKKyAgICAgICIuLi9hcGkvdGVzdC92aWRl
bzpmdW5jdGlvbl92aWRlb19mYWN0b3J5IiwKICAgICAgICIuLi9hcGkvdW5pdHM6dGltZV9kZWx0
YSIsCiAgICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAorICAgICAgIi4uL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZzptb2NrcyIsCiAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcCIsCiAgICAgICAiLi4v
bW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKQEAgLTQ5NSwxMSAr
NTU0LDEzIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL3BjOnJ0Y19wYyIs
CiAgICAgICAiLi4vcGM6cnRjX3BjX2Jhc2UiLAogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIs
CisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCisgICAgICAiLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVl
IiwKICAgICAgICIuLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIsCiAgICAgICAiLi4vdGVzdDpmaWVs
ZF90cmlhbCIsCi0gICAgICAiLi4vdGVzdDp0ZXN0X2NvbW1vbiIsCiAgICAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICBdCiAgICAgc291cmNlcyA9IFsKICAgICAgICJiYXNl
L2NvZGVjX3VuaXR0ZXN0LmNjIiwKQEAgLTU2OCwxMyArNjI5LDE4IEBAIGlmIChydGNfaW5jbHVk
ZV90ZXN0cykgewogICAgICAgIjpydGNfbWVkaWEiLAogICAgICAgIjpydGNfbWVkaWFfYmFzZSIs
CiAgICAgICAiOnJ0Y19tZWRpYV90ZXN0c191dGlscyIsCisgICAgICAiOnJ0Y19zaW11bGNhc3Rf
ZW5jb2Rlcl9hZGFwdGVyIiwKKyAgICAgICI6cnRjX3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94
eSIsCiAgICAgICAiOnJ0Y192cDlfcHJvZmlsZSIsCiAgICAgICAiLi4vYXBpOmNyZWF0ZV9zaW11
bGNhc3RfdGVzdF9maXh0dXJlX2FwaSIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29u
bmVjdGlvbl9hcGkiLAorICAgICAgIi4uL2FwaTptb2NrX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
IiwKKyAgICAgICIuLi9hcGk6bW9ja192aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwK
ICAgICAgICIuLi9hcGk6bW9ja192aWRlb19jb2RlY19mYWN0b3J5IiwKICAgICAgICIuLi9hcGk6
c2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9hcGkiLAogICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6
YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkiLAogICAgICAgIi4uL2FwaS9hdWRpb19jb2Rl
Y3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLAorICAgICAgIi4uL2FwaS92aWRlbzpi
dWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICAgIi4uL2FwaS92
aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRpb24iLAogICAgICAgIi4uL2FwaS92aWRlbzp2aWRl
b19mcmFtZSIsCiAgICAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczpidWlsdGluX3ZpZGVvX2RlY29k
ZXJfZmFjdG9yeSIsCkBAIC01OTIsNyArNjU4LDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7
CiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c19tYWluIiwK
LSAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiLi4vdGVz
dDphdWRpb19jb2RlY19tb2NrcyIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAg
ICAgIi4uL3Rlc3Q6dmlkZW9fdGVzdF9jb21tb24iLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvT1dORVJTIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvT1dORVJTCmluZGV4IDYzNGVhZjJi
ZmE3OWUxODcxYTdiMDYwOGNmNWMwMjA1NTYyYjdjNTIuLjQ1NDRlOWY0ODA2MTM4NjcwODIzZGI4
NGJhM2ViYmFhNGQ0N2YzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9PV05FUlMKQEAgLTQsNiArNCw3IEBAIHNwcmFuZ0B3
ZWJydGMub3JnCiBtYWdqZWRAd2VicnRjLm9yZwogbWZsb2RtYW5Ad2VicnRjLm9yZwogcGVya2pA
d2VicnRjLm9yZworc2hhbXBzb25Ad2VicnRjLm9yZwogc29sZW5iZXJnQHdlYnJ0Yy5vcmcKIAog
IyBUaGVzZSBhcmUgZm9yIHRoZSBjb21tb24gY2FzZSBvZiBhZGRpbmcgb3IgcmVuYW1pbmcgZmls
ZXMuIElmIHlvdSdyZSBkb2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9jb2RlYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvY29kZWMuY2MKaW5kZXggY2FmMzIx
MjExMjViMWRiZWMwY2E4Y2YyMGY5NjE4OTQ4OTMxNWZlOC4uMGExYzcxNTZhZjgwZTA1OTlkMTll
NTI3NTJiOGUyZDczMWE1MWIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9jb2RlYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2NvZGVjLmNjCkBAIC0xMiwx
MyArMTIsMTMgQEAKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvaDI2NF9wcm9maWxlX2xldmVsX2lk
LmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS92cDlfcHJvZmlsZS5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmlu
Z19idWlsZGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogbmFtZXNw
YWNlIGNyaWNrZXQgewogCkBAIC0yNiw4ICsyNiw4IEBAIEZlZWRiYWNrUGFyYW1zOjpGZWVkYmFj
a1BhcmFtcygpID0gZGVmYXVsdDsKIEZlZWRiYWNrUGFyYW1zOjp+RmVlZGJhY2tQYXJhbXMoKSA9
IGRlZmF1bHQ7CiAKIGJvb2wgRmVlZGJhY2tQYXJhbTo6b3BlcmF0b3I9PShjb25zdCBGZWVkYmFj
a1BhcmFtJiBvdGhlcikgY29uc3QgewotICByZXR1cm4gX3N0cmljbXAob3RoZXIuaWQoKS5jX3N0
cigpLCBpZCgpLmNfc3RyKCkpID09IDAgJiYKLSAgICAgICAgIF9zdHJpY21wKG90aGVyLnBhcmFt
KCkuY19zdHIoKSwgcGFyYW0oKS5jX3N0cigpKSA9PSAwOworICByZXR1cm4gYWJzbDo6RXF1YWxz
SWdub3JlQ2FzZShvdGhlci5pZCgpLCBpZCgpKSAmJgorICAgICAgICAgYWJzbDo6RXF1YWxzSWdu
b3JlQ2FzZShvdGhlci5wYXJhbSgpLCBwYXJhbSgpKTsKIH0KIAogYm9vbCBGZWVkYmFja1BhcmFt
czo6b3BlcmF0b3I9PShjb25zdCBGZWVkYmFja1BhcmFtcyYgb3RoZXIpIGNvbnN0IHsKQEAgLTk3
LDcgKzk3LDcgQEAgYm9vbCBDb2RlYzo6TWF0Y2hlcyhjb25zdCBDb2RlYyYgY29kZWMpIGNvbnN0
IHsKICAgY29uc3QgaW50IGtNYXhTdGF0aWNQYXlsb2FkSWQgPSA5NTsKICAgcmV0dXJuIChpZCA8
PSBrTWF4U3RhdGljUGF5bG9hZElkIHx8IGNvZGVjLmlkIDw9IGtNYXhTdGF0aWNQYXlsb2FkSWQp
CiAgICAgICAgICAgICAgPyAoaWQgPT0gY29kZWMuaWQpCi0gICAgICAgICAgICAgOiAoX3N0cmlj
bXAobmFtZS5jX3N0cigpLCBjb2RlYy5uYW1lLmNfc3RyKCkpID09IDApOworICAgICAgICAgICAg
IDogKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwgY29kZWMubmFtZSkpOwogfQogCiBib29s
IENvZGVjOjpHZXRQYXJhbShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgc3RkOjpzdHJpbmcqIG91
dCkgY29uc3QgewpAQCAtMjM1LDcgKzIzNSw3IEBAIFZpZGVvQ29kZWMmIFZpZGVvQ29kZWM6Om9w
ZXJhdG9yPShjb25zdCBWaWRlb0NvZGVjJiBjKSA9IGRlZmF1bHQ7CiBWaWRlb0NvZGVjJiBWaWRl
b0NvZGVjOjpvcGVyYXRvcj0oVmlkZW9Db2RlYyYmIGMpID0gZGVmYXVsdDsKIAogdm9pZCBWaWRl
b0NvZGVjOjpTZXREZWZhdWx0UGFyYW1ldGVycygpIHsKLSAgaWYgKF9zdHJpY21wKGtIMjY0Q29k
ZWNOYW1lLCBuYW1lLmNfc3RyKCkpID09IDApIHsKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNh
c2Uoa0gyNjRDb2RlY05hbWUsIG5hbWUpKSB7CiAgICAgLy8gVGhpcyBkZWZhdWx0IGlzIHNldCBm
b3IgYWxsIEguMjY0IGNvZGVjcyBjcmVhdGVkIGJlY2F1c2UKICAgICAvLyB0aGF0IHdhcyB0aGUg
ZGVmYXVsdCBiZWZvcmUgcGFja2V0aXphdGlvbiBtb2RlIHN1cHBvcnQgd2FzIGFkZGVkLgogICAg
IC8vIFRPRE8oaHRhKTogTW92ZSB0aGlzIHRvIHRoZSBwbGFjZXMgdGhhdCBjcmVhdGUgVmlkZW9D
b2RlY3MgZnJvbQpAQCAtMjY4LDEwICsyNjgsMTAgQEAgc3RhdGljIGJvb2wgSXNTYW1lSDI2NFBh
Y2tldGl6YXRpb25Nb2RlKGNvbnN0IENvZGVjUGFyYW1ldGVyTWFwJiBvdXJzLAogYm9vbCBWaWRl
b0NvZGVjOjpNYXRjaGVzKGNvbnN0IFZpZGVvQ29kZWMmIG90aGVyKSBjb25zdCB7CiAgIGlmICgh
Q29kZWM6Ok1hdGNoZXMob3RoZXIpKQogICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKENvZGVjTmFt
ZXNFcShuYW1lLmNfc3RyKCksIGtIMjY0Q29kZWNOYW1lKSkKKyAgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UobmFtZSwga0gyNjRDb2RlY05hbWUpKQogICAgIHJldHVybiB3ZWJydGM6OkgyNjQ6
OklzU2FtZUgyNjRQcm9maWxlKHBhcmFtcywgb3RoZXIucGFyYW1zKSAmJgogICAgICAgICAgICBJ
c1NhbWVIMjY0UGFja2V0aXphdGlvbk1vZGUocGFyYW1zLCBvdGhlci5wYXJhbXMpOwotICBpZiAo
Q29kZWNOYW1lc0VxKG5hbWUuY19zdHIoKSwga1ZwOUNvZGVjTmFtZSkpCisgIGlmIChhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKG5hbWUsIGtWcDlDb2RlY05hbWUpKQogICAgIHJldHVybiB3ZWJydGM6
OklzU2FtZVZQOVByb2ZpbGUocGFyYW1zLCBvdGhlci5wYXJhbXMpOwogICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTI4NSwxNiArMjg1LDE2IEBAIFZpZGVvQ29kZWMgVmlkZW9Db2RlYzo6Q3JlYXRlUnR4
Q29kZWMoaW50IHJ0eF9wYXlsb2FkX3R5cGUsCiAKIFZpZGVvQ29kZWM6OkNvZGVjVHlwZSBWaWRl
b0NvZGVjOjpHZXRDb2RlY1R5cGUoKSBjb25zdCB7CiAgIGNvbnN0IGNoYXIqIHBheWxvYWRfbmFt
ZSA9IG5hbWUuY19zdHIoKTsKLSAgaWYgKF9zdHJpY21wKHBheWxvYWRfbmFtZSwga1JlZENvZGVj
TmFtZSkgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25hbWUs
IGtSZWRDb2RlY05hbWUpKSB7CiAgICAgcmV0dXJuIENPREVDX1JFRDsKICAgfQotICBpZiAoX3N0
cmljbXAocGF5bG9hZF9uYW1lLCBrVWxwZmVjQ29kZWNOYW1lKSA9PSAwKSB7CisgIGlmIChhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKHBheWxvYWRfbmFtZSwga1VscGZlY0NvZGVjTmFtZSkpIHsKICAg
ICByZXR1cm4gQ09ERUNfVUxQRkVDOwogICB9Ci0gIGlmIChfc3RyaWNtcChwYXlsb2FkX25hbWUs
IGtGbGV4ZmVjQ29kZWNOYW1lKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KHBheWxvYWRfbmFtZSwga0ZsZXhmZWNDb2RlY05hbWUpKSB7CiAgICAgcmV0dXJuIENPREVDX0ZM
RVhGRUM7CiAgIH0KLSAgaWYgKF9zdHJpY21wKHBheWxvYWRfbmFtZSwga1J0eENvZGVjTmFtZSkg
PT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25hbWUsIGtSdHhD
b2RlY05hbWUpKSB7CiAgICAgcmV0dXJuIENPREVDX1JUWDsKICAgfQogCkBAIC0zNjIsMTQgKzM2
Miw2IEBAIGJvb2wgSGFzVHJhbnNwb3J0Q2MoY29uc3QgQ29kZWMmIGNvZGVjKSB7CiAgICAgICBG
ZWVkYmFja1BhcmFtKGtSdGNwRmJQYXJhbVRyYW5zcG9ydENjLCBrUGFyYW1WYWx1ZUVtcHR5KSk7
CiB9CiAKLWJvb2wgQ29kZWNOYW1lc0VxKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lMSwgY29uc3Qg
c3RkOjpzdHJpbmcmIG5hbWUyKSB7Ci0gIHJldHVybiBDb2RlY05hbWVzRXEobmFtZTEuY19zdHIo
KSwgbmFtZTIuY19zdHIoKSk7Ci19Ci0KLWJvb2wgQ29kZWNOYW1lc0VxKGNvbnN0IGNoYXIqIG5h
bWUxLCBjb25zdCBjaGFyKiBuYW1lMikgewotICByZXR1cm4gX3N0cmljbXAobmFtZTEsIG5hbWUy
KSA9PSAwOwotfQotCiBjb25zdCBWaWRlb0NvZGVjKiBGaW5kTWF0Y2hpbmdDb2RlYygKICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgc3VwcG9ydGVkX2NvZGVjcywKICAgICBjb25z
dCBWaWRlb0NvZGVjJiBjb2RlYykgewpAQCAtMzg3LDEyICszNzksMTIgQEAgYm9vbCBJc1NhbWVD
b2RlYyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZTEsCiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lMiwKICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNQYXJhbWV0ZXJN
YXAmIHBhcmFtczIpIHsKICAgLy8gSWYgZGlmZmVyZW50IG5hbWVzIChjYXNlIGluc2Vuc2l0aXZl
KSwgdGhlbiBub3Qgc2FtZSBmb3JtYXRzLgotICBpZiAoIUNvZGVjTmFtZXNFcShuYW1lMSwgbmFt
ZTIpKQorICBpZiAoIWFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZTEsIG5hbWUyKSkKICAgICBy
ZXR1cm4gZmFsc2U7CiAgIC8vIEZvciBldmVyeSBmb3JtYXQgYmVzaWRlcyBIMjY0IGFuZCBWUDks
IGNvbXBhcmluZyBuYW1lcyBpcyBlbm91Z2guCi0gIGlmIChDb2RlY05hbWVzRXEobmFtZTEuY19z
dHIoKSwga0gyNjRDb2RlY05hbWUpKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1l
MSwga0gyNjRDb2RlY05hbWUpKQogICAgIHJldHVybiB3ZWJydGM6OkgyNjQ6OklzU2FtZUgyNjRQ
cm9maWxlKHBhcmFtczEsIHBhcmFtczIpOwotICBpZiAoQ29kZWNOYW1lc0VxKG5hbWUxLmNfc3Ry
KCksIGtWcDlDb2RlY05hbWUpKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lMSwg
a1ZwOUNvZGVjTmFtZSkpCiAgICAgcmV0dXJuIHdlYnJ0Yzo6SXNTYW1lVlA5UHJvZmlsZShwYXJh
bXMxLCBwYXJhbXMyKTsKICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2NvZGVjLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2NvZGVjLmgK
aW5kZXggZGIxMzNmNmUyN2Y2NDRmNTFlMGQ3OWRhODI5Y2MyNTNmMDAxMzkyMi4uMGNhNjUzNTI4
N2JlZWIyOWZmNTU5OGRmMWYyNWNiYWYxNDA5MGQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9jb2RlYy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvY29kZWMu
aApAQCAtMTgsOCArMTgsOCBAQAogCiAjaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKLSNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1lZGlh
L2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4
cG9ydC5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3Mg
RmVlZGJhY2tQYXJhbXMgewogICBzdGQ6OnZlY3RvcjxGZWVkYmFja1BhcmFtPiBwYXJhbXNfOwog
fTsKIAotc3RydWN0IENvZGVjIHsKK3N0cnVjdCBSVENfRVhQT1JUIENvZGVjIHsKICAgaW50IGlk
OwogICBzdGQ6OnN0cmluZyBuYW1lOwogICBpbnQgY2xvY2tyYXRlOwpAQCAtMTQyLDcgKzE0Miw3
IEBAIHN0cnVjdCBBdWRpb0NvZGVjIDogcHVibGljIENvZGVjIHsKICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEF1ZGlvQ29kZWMmIGMpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gYyk7IH0KIH07
CiAKLXN0cnVjdCBWaWRlb0NvZGVjIDogcHVibGljIENvZGVjIHsKK3N0cnVjdCBSVENfRVhQT1JU
IFZpZGVvQ29kZWMgOiBwdWJsaWMgQ29kZWMgewogICAvLyBDcmVhdGVzIGEgY29kZWMgd2l0aCB0
aGUgZ2l2ZW4gcGFyYW1ldGVycy4KICAgVmlkZW9Db2RlYyhpbnQgaWQsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBuYW1lKTsKICAgLy8gQ3JlYXRlcyBhIGNvZGVjIHdpdGggdGhlIGdpdmVuIG5hbWUgYW5k
IGVtcHR5IGlkLgpAQCAtMjE1LDggKzIxNSw2IEBAIGNvbnN0IENvZGVjKiBGaW5kQ29kZWNCeUlk
KGNvbnN0IHN0ZDo6dmVjdG9yPENvZGVjPiYgY29kZWNzLCBpbnQgcGF5bG9hZF90eXBlKSB7CiAg
IHJldHVybiBudWxscHRyOwogfQogCi1ib29sIENvZGVjTmFtZXNFcShjb25zdCBzdGQ6OnN0cmlu
ZyYgbmFtZTEsIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lMik7Ci1ib29sIENvZGVjTmFtZXNFcShj
b25zdCBjaGFyKiBuYW1lMSwgY29uc3QgY2hhciogbmFtZTIpOwogYm9vbCBIYXNOYWNrKGNvbnN0
IENvZGVjJiBjb2RlYyk7CiBib29sIEhhc1JlbWIoY29uc3QgQ29kZWMmIGNvZGVjKTsKIGJvb2wg
SGFzUnJ0cihjb25zdCBDb2RlYyYgY29kZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2Zh
a2VtZWRpYWVuZ2luZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDgyMDZmZDc3NzcyYWM5Mzg4YjA4NjBlMjlm
NTU4ODUwZmUzMzlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuY2MKQEAgLTAsMCAr
MSw1OTggQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2Vt
ZWRpYWVuZ2luZS5oIgorCisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImFic2wvbWVt
b3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2UgY3JpY2tldCB7CisKK0Zha2VWb2ljZU1l
ZGlhQ2hhbm5lbDo6RHRtZkluZm86OkR0bWZJbmZvKHVpbnQzMl90IHNzcmMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXZlbnRfY29kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkdXJhdGlvbikKKyAgICA6IHNz
cmMoc3NyYyksIGV2ZW50X2NvZGUoZXZlbnRfY29kZSksIGR1cmF0aW9uKGR1cmF0aW9uKSB7fQor
CitGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlZvaWNlQ2hhbm5lbEF1ZGlvU2luazo6Vm9pY2VDaGFu
bmVsQXVkaW9TaW5rKAorICAgIEF1ZGlvU291cmNlKiBzb3VyY2UpCisgICAgOiBzb3VyY2VfKHNv
dXJjZSkgeworICBzb3VyY2VfLT5TZXRTaW5rKHRoaXMpOworfQorRmFrZVZvaWNlTWVkaWFDaGFu
bmVsOjpWb2ljZUNoYW5uZWxBdWRpb1Npbms6On5Wb2ljZUNoYW5uZWxBdWRpb1NpbmsoKSB7Cisg
IGlmIChzb3VyY2VfKSB7CisgICAgc291cmNlXy0+U2V0U2luayhudWxscHRyKTsKKyAgfQorfQor
dm9pZCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlZvaWNlQ2hhbm5lbEF1ZGlvU2luazo6T25EYXRh
KAorICAgIGNvbnN0IHZvaWQqIGF1ZGlvX2RhdGEsCisgICAgaW50IGJpdHNfcGVyX3NhbXBsZSwK
KyAgICBpbnQgc2FtcGxlX3JhdGUsCisgICAgc2l6ZV90IG51bWJlcl9vZl9jaGFubmVscywKKyAg
ICBzaXplX3QgbnVtYmVyX29mX2ZyYW1lcykge30KK3ZvaWQgRmFrZVZvaWNlTWVkaWFDaGFubmVs
OjpWb2ljZUNoYW5uZWxBdWRpb1Npbms6Ok9uQ2xvc2UoKSB7CisgIHNvdXJjZV8gPSBudWxscHRy
OworfQorQXVkaW9Tb3VyY2UqIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6Vm9pY2VDaGFubmVsQXVk
aW9TaW5rOjpzb3VyY2UoKSBjb25zdCB7CisgIHJldHVybiBzb3VyY2VfOworfQorCitGYWtlVm9p
Y2VNZWRpYUNoYW5uZWw6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbChGYWtlVm9pY2VFbmdpbmUqIGVu
Z2luZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IGVuZ2luZV8oZW5naW5lKSwgbWF4X2Jwc18o
LTEpIHsKKyAgb3V0cHV0X3NjYWxpbmdzX1swXSA9IDEuMDsgIC8vIEZvciBkZWZhdWx0IGNoYW5u
ZWwuCisgIFNldE9wdGlvbnMob3B0aW9ucyk7Cit9CitGYWtlVm9pY2VNZWRpYUNoYW5uZWw6On5G
YWtlVm9pY2VNZWRpYUNoYW5uZWwoKSB7CisgIGlmIChlbmdpbmVfKSB7CisgICAgZW5naW5lXy0+
VW5yZWdpc3RlckNoYW5uZWwodGhpcyk7CisgIH0KK30KK2NvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlv
Q29kZWM+JiBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OnJlY3ZfY29kZWNzKCkgY29uc3QgeworICBy
ZXR1cm4gcmVjdl9jb2RlY3NfOworfQorY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIEZh
a2VWb2ljZU1lZGlhQ2hhbm5lbDo6c2VuZF9jb2RlY3MoKSBjb25zdCB7CisgIHJldHVybiBzZW5k
X2NvZGVjc187Cit9Citjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgRmFrZVZvaWNlTWVk
aWFDaGFubmVsOjpjb2RlY3MoKSBjb25zdCB7CisgIHJldHVybiBzZW5kX2NvZGVjcygpOworfQor
Y29uc3Qgc3RkOjp2ZWN0b3I8RmFrZVZvaWNlTWVkaWFDaGFubmVsOjpEdG1mSW5mbz4mCitGYWtl
Vm9pY2VNZWRpYUNoYW5uZWw6OmR0bWZfaW5mb19xdWV1ZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGR0
bWZfaW5mb19xdWV1ZV87Cit9Citjb25zdCBBdWRpb09wdGlvbnMmIEZha2VWb2ljZU1lZGlhQ2hh
bm5lbDo6b3B0aW9ucygpIGNvbnN0IHsKKyAgcmV0dXJuIG9wdGlvbnNfOworfQoraW50IEZha2VW
b2ljZU1lZGlhQ2hhbm5lbDo6bWF4X2JwcygpIGNvbnN0IHsKKyAgcmV0dXJuIG1heF9icHNfOwor
fQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlNldFNlbmRQYXJhbWV0ZXJzKAorICAgIGNv
bnN0IEF1ZGlvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgeworICBzZXRfc2VuZF9ydGNwX3BhcmFt
ZXRlcnMocGFyYW1zLnJ0Y3ApOworICByZXR1cm4gKFNldFNlbmRDb2RlY3MocGFyYW1zLmNvZGVj
cykgJiYKKyAgICAgICAgICBTZXRTZW5kRXh0bWFwQWxsb3dNaXhlZChwYXJhbXMuZXh0bWFwX2Fs
bG93X21peGVkKSAmJgorICAgICAgICAgIFNldFNlbmRSdHBIZWFkZXJFeHRlbnNpb25zKHBhcmFt
cy5leHRlbnNpb25zKSAmJgorICAgICAgICAgIFNldE1heFNlbmRCYW5kd2lkdGgocGFyYW1zLm1h
eF9iYW5kd2lkdGhfYnBzKSAmJgorICAgICAgICAgIFNldE9wdGlvbnMocGFyYW1zLm9wdGlvbnMp
KTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRSZWN2UGFyYW1ldGVycygKKyAg
ICBjb25zdCBBdWRpb1JlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKKyAgc2V0X3JlY3ZfcnRjcF9w
YXJhbWV0ZXJzKHBhcmFtcy5ydGNwKTsKKyAgcmV0dXJuIChTZXRSZWN2Q29kZWNzKHBhcmFtcy5j
b2RlY3MpICYmCisgICAgICAgICAgU2V0UmVjdlJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1zLmV4
dGVuc2lvbnMpKTsKK30KK3ZvaWQgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRQbGF5b3V0KGJv
b2wgcGxheW91dCkgeworICBzZXRfcGxheW91dChwbGF5b3V0KTsKK30KK3ZvaWQgRmFrZVZvaWNl
TWVkaWFDaGFubmVsOjpTZXRTZW5kKGJvb2wgc2VuZCkgeworICBzZXRfc2VuZGluZyhzZW5kKTsK
K30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRBdWRpb1NlbmQodWludDMyX3Qgc3Ny
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0
aW9ucyogb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QXVkaW9Tb3VyY2UqIHNvdXJjZSkgeworICBpZiAoIVNldExvY2FsU291cmNlKHNzcmMsIHNvdXJj
ZSkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKCFSdHBIZWxwZXI8Vm9pY2VNZWRp
YUNoYW5uZWw+OjpNdXRlU3RyZWFtKHNzcmMsICFlbmFibGUpKSB7CisgICAgcmV0dXJuIGZhbHNl
OworICB9CisgIGlmIChlbmFibGUgJiYgb3B0aW9ucykgeworICAgIHJldHVybiBTZXRPcHRpb25z
KCpvcHRpb25zKTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFD
aGFubmVsOjpIYXNTb3VyY2UodWludDMyX3Qgc3NyYykgY29uc3QgeworICByZXR1cm4gbG9jYWxf
c2lua3NfLmZpbmQoc3NyYykgIT0gbG9jYWxfc2lua3NfLmVuZCgpOworfQorYm9vbCBGYWtlVm9p
Y2VNZWRpYUNoYW5uZWw6OkFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgewor
ICBpZiAoIVJ0cEhlbHBlcjxWb2ljZU1lZGlhQ2hhbm5lbD46OkFkZFJlY3ZTdHJlYW0oc3ApKQor
ICAgIHJldHVybiBmYWxzZTsKKyAgb3V0cHV0X3NjYWxpbmdzX1tzcC5maXJzdF9zc3JjKCldID0g
MS4wOworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpSZW1v
dmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMpIHsKKyAgaWYgKCFSdHBIZWxwZXI8Vm9pY2VNZWRp
YUNoYW5uZWw+OjpSZW1vdmVSZWN2U3RyZWFtKHNzcmMpKQorICAgIHJldHVybiBmYWxzZTsKKyAg
b3V0cHV0X3NjYWxpbmdzXy5lcmFzZShzc3JjKTsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZh
a2VWb2ljZU1lZGlhQ2hhbm5lbDo6Q2FuSW5zZXJ0RHRtZigpIHsKKyAgZm9yIChzdGQ6OnZlY3Rv
cjxBdWRpb0NvZGVjPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzZW5kX2NvZGVjc18uYmVnaW4oKTsK
KyAgICAgICBpdCAhPSBzZW5kX2NvZGVjc18uZW5kKCk7ICsraXQpIHsKKyAgICAvLyBGaW5kIHRo
ZSBEVE1GIHRlbGVwaG9uZSBldmVudCAiY29kZWMiLgorICAgIGlmIChhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKGl0LT5uYW1lLCAidGVsZXBob25lLWV2ZW50IikpIHsKKyAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgfQorICByZXR1cm4gZmFsc2U7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hh
bm5lbDo6SW5zZXJ0RHRtZih1aW50MzJfdCBzc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGV2ZW50X2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgZHVyYXRpb24pIHsKKyAgZHRtZl9pbmZvX3F1ZXVlXy5wdXNoX2Jh
Y2soRHRtZkluZm8oc3NyYywgZXZlbnRfY29kZSwgZHVyYXRpb24pKTsKKyAgcmV0dXJuIHRydWU7
Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0T3V0cHV0Vm9sdW1lKHVpbnQzMl90
IHNzcmMsIGRvdWJsZSB2b2x1bWUpIHsKKyAgaWYgKDAgPT0gc3NyYykgeworICAgIHN0ZDo6bWFw
PHVpbnQzMl90LCBkb3VibGU+OjppdGVyYXRvciBpdDsKKyAgICBmb3IgKGl0ID0gb3V0cHV0X3Nj
YWxpbmdzXy5iZWdpbigpOyBpdCAhPSBvdXRwdXRfc2NhbGluZ3NfLmVuZCgpOyArK2l0KSB7Cisg
ICAgICBpdC0+c2Vjb25kID0gdm9sdW1lOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSBl
bHNlIGlmIChvdXRwdXRfc2NhbGluZ3NfLmZpbmQoc3NyYykgIT0gb3V0cHV0X3NjYWxpbmdzXy5l
bmQoKSkgeworICAgIG91dHB1dF9zY2FsaW5nc19bc3NyY10gPSB2b2x1bWU7CisgICAgcmV0dXJu
IHRydWU7CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5u
ZWw6OkdldE91dHB1dFZvbHVtZSh1aW50MzJfdCBzc3JjLCBkb3VibGUqIHZvbHVtZSkgeworICBp
ZiAob3V0cHV0X3NjYWxpbmdzXy5maW5kKHNzcmMpID09IG91dHB1dF9zY2FsaW5nc18uZW5kKCkp
CisgICAgcmV0dXJuIGZhbHNlOworICAqdm9sdW1lID0gb3V0cHV0X3NjYWxpbmdzX1tzc3JjXTsK
KyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6R2V0U3RhdHMo
Vm9pY2VNZWRpYUluZm8qIGluZm8pIHsKKyAgcmV0dXJuIGZhbHNlOworfQordm9pZCBGYWtlVm9p
Y2VNZWRpYUNoYW5uZWw6OlNldFJhd0F1ZGlvU2luaygKKyAgICB1aW50MzJfdCBzc3JjLAorICAg
IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkF1ZGlvU2lua0ludGVyZmFjZT4gc2luaykgeworICBz
aW5rXyA9IHN0ZDo6bW92ZShzaW5rKTsKK30KK3N0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNl
PiBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OkdldFNvdXJjZXMoCisgICAgdWludDMyX3Qgc3NyYykg
Y29uc3QgeworICByZXR1cm4gc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+KCk7Cit9Citi
b29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0UmVjdkNvZGVjcygKKyAgICBjb25zdCBzdGQ6
OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKSB7CisgIGlmIChmYWlsX3NldF9yZWN2X2NvZGVj
cygpKSB7CisgICAgLy8gRmFrZSB0aGUgZmFpbHVyZSBpbiBTZXRSZWN2Q29kZWNzLgorICAgIHJl
dHVybiBmYWxzZTsKKyAgfQorICByZWN2X2NvZGVjc18gPSBjb2RlY3M7CisgIHJldHVybiB0cnVl
OworfQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlNldFNlbmRDb2RlY3MoCisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGNvZGVjcykgeworICBpZiAoZmFpbF9zZXRfc2Vu
ZF9jb2RlY3MoKSkgeworICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0U2VuZENvZGVjcy4K
KyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgc2VuZF9jb2RlY3NfID0gY29kZWNzOworICByZXR1
cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpTZXRNYXhTZW5kQmFuZHdp
ZHRoKGludCBicHMpIHsKKyAgbWF4X2Jwc18gPSBicHM7CisgIHJldHVybiB0cnVlOworfQorYm9v
bCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlNldE9wdGlvbnMoY29uc3QgQXVkaW9PcHRpb25zJiBv
cHRpb25zKSB7CisgIC8vIERvZXMgYSAibWVyZ2UiIG9mIGN1cnJlbnQgb3B0aW9ucyBhbmQgc2V0
IG9wdGlvbnMuCisgIG9wdGlvbnNfLlNldEFsbChvcHRpb25zKTsKKyAgcmV0dXJuIHRydWU7Cit9
Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0TG9jYWxTb3VyY2UodWludDMyX3Qgc3Ny
YywgQXVkaW9Tb3VyY2UqIHNvdXJjZSkgeworICBhdXRvIGl0ID0gbG9jYWxfc2lua3NfLmZpbmQo
c3NyYyk7CisgIGlmIChzb3VyY2UpIHsKKyAgICBpZiAoaXQgIT0gbG9jYWxfc2lua3NfLmVuZCgp
KSB7CisgICAgICBSVENfQ0hFQ0soaXQtPnNlY29uZC0+c291cmNlKCkgPT0gc291cmNlKTsKKyAg
ICB9IGVsc2UgeworICAgICAgbG9jYWxfc2lua3NfLmluc2VydChzdGQ6Om1ha2VfcGFpcigKKyAg
ICAgICAgICBzc3JjLCBhYnNsOjptYWtlX3VuaXF1ZTxWb2ljZUNoYW5uZWxBdWRpb1Npbms+KHNv
dXJjZSkpKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKGl0ICE9IGxvY2FsX3NpbmtzXy5l
bmQoKSkgeworICAgICAgbG9jYWxfc2lua3NfLmVyYXNlKGl0KTsKKyAgICB9CisgIH0KKyAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgQ29tcGFyZUR0bWZJbmZvKGNvbnN0IEZha2VWb2ljZU1lZGlh
Q2hhbm5lbDo6RHRtZkluZm8mIGluZm8sCisgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBz
c3JjLAorICAgICAgICAgICAgICAgICAgICAgaW50IGV2ZW50X2NvZGUsCisgICAgICAgICAgICAg
ICAgICAgICBpbnQgZHVyYXRpb24pIHsKKyAgcmV0dXJuIChpbmZvLmR1cmF0aW9uID09IGR1cmF0
aW9uICYmIGluZm8uZXZlbnRfY29kZSA9PSBldmVudF9jb2RlICYmCisgICAgICAgICAgaW5mby5z
c3JjID09IHNzcmMpOworfQorCitGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OkZha2VWaWRlb01lZGlh
Q2hhbm5lbChGYWtlVmlkZW9FbmdpbmUqIGVuZ2luZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6
IGVuZ2luZV8oZW5naW5lKSwgbWF4X2Jwc18oLTEpIHsKKyAgU2V0T3B0aW9ucyhvcHRpb25zKTsK
K30KK0Zha2VWaWRlb01lZGlhQ2hhbm5lbDo6fkZha2VWaWRlb01lZGlhQ2hhbm5lbCgpIHsKKyAg
aWYgKGVuZ2luZV8pIHsKKyAgICBlbmdpbmVfLT5VbnJlZ2lzdGVyQ2hhbm5lbCh0aGlzKTsKKyAg
fQorfQorY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIEZha2VWaWRlb01lZGlhQ2hhbm5l
bDo6cmVjdl9jb2RlY3MoKSBjb25zdCB7CisgIHJldHVybiByZWN2X2NvZGVjc187Cit9Citjb25z
dCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpzZW5kX2Nv
ZGVjcygpIGNvbnN0IHsKKyAgcmV0dXJuIHNlbmRfY29kZWNzXzsKK30KK2NvbnN0IHN0ZDo6dmVj
dG9yPFZpZGVvQ29kZWM+JiBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OmNvZGVjcygpIGNvbnN0IHsK
KyAgcmV0dXJuIHNlbmRfY29kZWNzKCk7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6
cmVuZGVyaW5nKCkgY29uc3QgeworICByZXR1cm4gcGxheW91dCgpOworfQorY29uc3QgVmlkZW9P
cHRpb25zJiBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6Om9wdGlvbnMoKSBjb25zdCB7CisgIHJldHVy
biBvcHRpb25zXzsKK30KK2NvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBydGM6OlZpZGVvU2lua0lu
dGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+Kj4mCitGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OnNp
bmtzKCkgY29uc3QgeworICByZXR1cm4gc2lua3NfOworfQoraW50IEZha2VWaWRlb01lZGlhQ2hh
bm5lbDo6bWF4X2JwcygpIGNvbnN0IHsKKyAgcmV0dXJuIG1heF9icHNfOworfQorYm9vbCBGYWtl
VmlkZW9NZWRpYUNoYW5uZWw6OlNldFNlbmRQYXJhbWV0ZXJzKAorICAgIGNvbnN0IFZpZGVvU2Vu
ZFBhcmFtZXRlcnMmIHBhcmFtcykgeworICBzZXRfc2VuZF9ydGNwX3BhcmFtZXRlcnMocGFyYW1z
LnJ0Y3ApOworICByZXR1cm4gKFNldFNlbmRDb2RlY3MocGFyYW1zLmNvZGVjcykgJiYKKyAgICAg
ICAgICBTZXRTZW5kRXh0bWFwQWxsb3dNaXhlZChwYXJhbXMuZXh0bWFwX2FsbG93X21peGVkKSAm
JgorICAgICAgICAgIFNldFNlbmRSdHBIZWFkZXJFeHRlbnNpb25zKHBhcmFtcy5leHRlbnNpb25z
KSAmJgorICAgICAgICAgIFNldE1heFNlbmRCYW5kd2lkdGgocGFyYW1zLm1heF9iYW5kd2lkdGhf
YnBzKSk7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6U2V0UmVjdlBhcmFtZXRlcnMo
CisgICAgY29uc3QgVmlkZW9SZWN2UGFyYW1ldGVycyYgcGFyYW1zKSB7CisgIHNldF9yZWN2X3J0
Y3BfcGFyYW1ldGVycyhwYXJhbXMucnRjcCk7CisgIHJldHVybiAoU2V0UmVjdkNvZGVjcyhwYXJh
bXMuY29kZWNzKSAmJgorICAgICAgICAgIFNldFJlY3ZSdHBIZWFkZXJFeHRlbnNpb25zKHBhcmFt
cy5leHRlbnNpb25zKSk7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6QWRkU2VuZFN0
cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSB7CisgIHJldHVybiBSdHBIZWxwZXI8VmlkZW9N
ZWRpYUNoYW5uZWw+OjpBZGRTZW5kU3RyZWFtKHNwKTsKK30KK2Jvb2wgRmFrZVZpZGVvTWVkaWFD
aGFubmVsOjpSZW1vdmVTZW5kU3RyZWFtKHVpbnQzMl90IHNzcmMpIHsKKyAgcmV0dXJuIFJ0cEhl
bHBlcjxWaWRlb01lZGlhQ2hhbm5lbD46OlJlbW92ZVNlbmRTdHJlYW0oc3NyYyk7Cit9Citib29s
IEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6R2V0U2VuZENvZGVjKFZpZGVvQ29kZWMqIHNlbmRfY29k
ZWMpIHsKKyAgaWYgKHNlbmRfY29kZWNzXy5lbXB0eSgpKSB7CisgICAgcmV0dXJuIGZhbHNlOwor
ICB9CisgICpzZW5kX2NvZGVjID0gc2VuZF9jb2RlY3NfWzBdOworICByZXR1cm4gdHJ1ZTsKK30K
K2Jvb2wgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpTZXRTaW5rKAorICAgIHVpbnQzMl90IHNzcmMs
CisgICAgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiogc2luaykg
eworICBpZiAoc3NyYyAhPSAwICYmIHNpbmtzXy5maW5kKHNzcmMpID09IHNpbmtzXy5lbmQoKSkg
eworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAoc3NyYyAhPSAwKSB7CisgICAgc2lua3Nf
W3NzcmNdID0gc2luazsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZpZGVvTWVk
aWFDaGFubmVsOjpIYXNTaW5rKHVpbnQzMl90IHNzcmMpIGNvbnN0IHsKKyAgcmV0dXJuIHNpbmtz
Xy5maW5kKHNzcmMpICE9IHNpbmtzXy5lbmQoKSAmJiBzaW5rc18uYXQoc3NyYykgIT0gbnVsbHB0
cjsKK30KK2Jvb2wgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpTZXRTZW5kKGJvb2wgc2VuZCkgewor
ICByZXR1cm4gc2V0X3NlbmRpbmcoc2VuZCk7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5l
bDo6U2V0VmlkZW9TZW5kKAorICAgIHVpbnQzMl90IHNzcmMsCisgICAgY29uc3QgVmlkZW9PcHRp
b25zKiBvcHRpb25zLAorICAgIHJ0Yzo6VmlkZW9Tb3VyY2VJbnRlcmZhY2U8d2VicnRjOjpWaWRl
b0ZyYW1lPiogc291cmNlKSB7CisgIGlmIChvcHRpb25zKSB7CisgICAgaWYgKCFTZXRPcHRpb25z
KCpvcHRpb25zKSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorICBzb3VyY2Vz
X1tzc3JjXSA9IHNvdXJjZTsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VWaWRlb01lZGlh
Q2hhbm5lbDo6SGFzU291cmNlKHVpbnQzMl90IHNzcmMpIGNvbnN0IHsKKyAgcmV0dXJuIHNvdXJj
ZXNfLmZpbmQoc3NyYykgIT0gc291cmNlc18uZW5kKCkgJiYgc291cmNlc18uYXQoc3NyYykgIT0g
bnVsbHB0cjsKK30KK2Jvb2wgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpBZGRSZWN2U3RyZWFtKGNv
bnN0IFN0cmVhbVBhcmFtcyYgc3ApIHsKKyAgaWYgKCFSdHBIZWxwZXI8VmlkZW9NZWRpYUNoYW5u
ZWw+OjpBZGRSZWN2U3RyZWFtKHNwKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHNpbmtzX1tzcC5m
aXJzdF9zc3JjKCldID0gTlVMTDsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VWaWRlb01l
ZGlhQ2hhbm5lbDo6UmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSB7CisgIGlmICghUnRw
SGVscGVyPFZpZGVvTWVkaWFDaGFubmVsPjo6UmVtb3ZlUmVjdlN0cmVhbShzc3JjKSkKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIHNpbmtzXy5lcmFzZShzc3JjKTsKKyAgcmV0dXJuIHRydWU7Cit9Cit2
b2lkIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6RmlsbEJpdHJhdGVJbmZvKEJhbmR3aWR0aEVzdGlt
YXRpb25JbmZvKiBid2VfaW5mbykgeworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6Okdl
dFN0YXRzKFZpZGVvTWVkaWFJbmZvKiBpbmZvKSB7CisgIHJldHVybiBmYWxzZTsKK30KK3N0ZDo6
dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNlPiBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OkdldFNvdXJj
ZXMoCisgICAgdWludDMyX3Qgc3NyYykgY29uc3QgeworICByZXR1cm4ge307Cit9Citib29sIEZh
a2VWaWRlb01lZGlhQ2hhbm5lbDo6U2V0UmVjdkNvZGVjcygKKyAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxWaWRlb0NvZGVjPiYgY29kZWNzKSB7CisgIGlmIChmYWlsX3NldF9yZWN2X2NvZGVjcygpKSB7
CisgICAgLy8gRmFrZSB0aGUgZmFpbHVyZSBpbiBTZXRSZWN2Q29kZWNzLgorICAgIHJldHVybiBm
YWxzZTsKKyAgfQorICByZWN2X2NvZGVjc18gPSBjb2RlY3M7CisgIHJldHVybiB0cnVlOworfQor
Ym9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OlNldFNlbmRDb2RlY3MoCisgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNvZGVjcykgeworICBpZiAoZmFpbF9zZXRfc2VuZF9jb2Rl
Y3MoKSkgeworICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0U2VuZENvZGVjcy4KKyAgICBy
ZXR1cm4gZmFsc2U7CisgIH0KKyAgc2VuZF9jb2RlY3NfID0gY29kZWNzOworCisgIHJldHVybiB0
cnVlOworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OlNldE9wdGlvbnMoY29uc3QgVmlk
ZW9PcHRpb25zJiBvcHRpb25zKSB7CisgIG9wdGlvbnNfID0gb3B0aW9uczsKKyAgcmV0dXJuIHRy
dWU7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6U2V0TWF4U2VuZEJhbmR3aWR0aChp
bnQgYnBzKSB7CisgIG1heF9icHNfID0gYnBzOworICByZXR1cm4gdHJ1ZTsKK30KKworRmFrZURh
dGFNZWRpYUNoYW5uZWw6OkZha2VEYXRhTWVkaWFDaGFubmVsKHZvaWQqIHVudXNlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEYXRhT3B0aW9ucyYg
b3B0aW9ucykKKyAgICA6IHNlbmRfYmxvY2tlZF8oZmFsc2UpLCBtYXhfYnBzXygtMSkge30KK0Zh
a2VEYXRhTWVkaWFDaGFubmVsOjp+RmFrZURhdGFNZWRpYUNoYW5uZWwoKSB7fQorY29uc3Qgc3Rk
Ojp2ZWN0b3I8RGF0YUNvZGVjPiYgRmFrZURhdGFNZWRpYUNoYW5uZWw6OnJlY3ZfY29kZWNzKCkg
Y29uc3QgeworICByZXR1cm4gcmVjdl9jb2RlY3NfOworfQorY29uc3Qgc3RkOjp2ZWN0b3I8RGF0
YUNvZGVjPiYgRmFrZURhdGFNZWRpYUNoYW5uZWw6OnNlbmRfY29kZWNzKCkgY29uc3QgeworICBy
ZXR1cm4gc2VuZF9jb2RlY3NfOworfQorY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgRmFr
ZURhdGFNZWRpYUNoYW5uZWw6OmNvZGVjcygpIGNvbnN0IHsKKyAgcmV0dXJuIHNlbmRfY29kZWNz
KCk7Cit9CitpbnQgRmFrZURhdGFNZWRpYUNoYW5uZWw6Om1heF9icHMoKSBjb25zdCB7CisgIHJl
dHVybiBtYXhfYnBzXzsKK30KK2Jvb2wgRmFrZURhdGFNZWRpYUNoYW5uZWw6OlNldFNlbmRQYXJh
bWV0ZXJzKGNvbnN0IERhdGFTZW5kUGFyYW1ldGVycyYgcGFyYW1zKSB7CisgIHNldF9zZW5kX3J0
Y3BfcGFyYW1ldGVycyhwYXJhbXMucnRjcCk7CisgIHJldHVybiAoU2V0U2VuZENvZGVjcyhwYXJh
bXMuY29kZWNzKSAmJgorICAgICAgICAgIFNldE1heFNlbmRCYW5kd2lkdGgocGFyYW1zLm1heF9i
YW5kd2lkdGhfYnBzKSk7Cit9Citib29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpTZXRSZWN2UGFy
YW1ldGVycyhjb25zdCBEYXRhUmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgeworICBzZXRfcmVjdl9y
dGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOworICByZXR1cm4gU2V0UmVjdkNvZGVjcyhwYXJh
bXMuY29kZWNzKTsKK30KK2Jvb2wgRmFrZURhdGFNZWRpYUNoYW5uZWw6OlNldFNlbmQoYm9vbCBz
ZW5kKSB7CisgIHJldHVybiBzZXRfc2VuZGluZyhzZW5kKTsKK30KK2Jvb2wgRmFrZURhdGFNZWRp
YUNoYW5uZWw6OlNldFJlY2VpdmUoYm9vbCByZWNlaXZlKSB7CisgIHNldF9wbGF5b3V0KHJlY2Vp
dmUpOworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZURhdGFNZWRpYUNoYW5uZWw6OkFkZFJl
Y3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgeworICBpZiAoIVJ0cEhlbHBlcjxEYXRh
TWVkaWFDaGFubmVsPjo6QWRkUmVjdlN0cmVhbShzcCkpCisgICAgcmV0dXJuIGZhbHNlOworICBy
ZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZURhdGFNZWRpYUNoYW5uZWw6OlJlbW92ZVJlY3ZTdHJl
YW0odWludDMyX3Qgc3NyYykgeworICBpZiAoIVJ0cEhlbHBlcjxEYXRhTWVkaWFDaGFubmVsPjo6
UmVtb3ZlUmVjdlN0cmVhbShzc3JjKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVl
OworfQorYm9vbCBGYWtlRGF0YU1lZGlhQ2hhbm5lbDo6U2VuZERhdGEoY29uc3QgU2VuZERhdGFQ
YXJhbXMmIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIHBheWxvYWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTZW5kRGF0YVJlc3VsdCogcmVzdWx0KSB7CisgIGlmIChzZW5kX2Jsb2Nr
ZWRfKSB7CisgICAgKnJlc3VsdCA9IFNEUl9CTE9DSzsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0g
ZWxzZSB7CisgICAgbGFzdF9zZW50X2RhdGFfcGFyYW1zXyA9IHBhcmFtczsKKyAgICBsYXN0X3Nl
bnRfZGF0YV8gPSBzdGQ6OnN0cmluZyhwYXlsb2FkLmRhdGE8Y2hhcj4oKSwgcGF5bG9hZC5zaXpl
KCkpOworICAgIHJldHVybiB0cnVlOworICB9Cit9CitTZW5kRGF0YVBhcmFtcyBGYWtlRGF0YU1l
ZGlhQ2hhbm5lbDo6bGFzdF9zZW50X2RhdGFfcGFyYW1zKCkgeworICByZXR1cm4gbGFzdF9zZW50
X2RhdGFfcGFyYW1zXzsKK30KK3N0ZDo6c3RyaW5nIEZha2VEYXRhTWVkaWFDaGFubmVsOjpsYXN0
X3NlbnRfZGF0YSgpIHsKKyAgcmV0dXJuIGxhc3Rfc2VudF9kYXRhXzsKK30KK2Jvb2wgRmFrZURh
dGFNZWRpYUNoYW5uZWw6OmlzX3NlbmRfYmxvY2tlZCgpIHsKKyAgcmV0dXJuIHNlbmRfYmxvY2tl
ZF87Cit9Cit2b2lkIEZha2VEYXRhTWVkaWFDaGFubmVsOjpzZXRfc2VuZF9ibG9ja2VkKGJvb2wg
YmxvY2tlZCkgeworICBzZW5kX2Jsb2NrZWRfID0gYmxvY2tlZDsKK30KK2Jvb2wgRmFrZURhdGFN
ZWRpYUNoYW5uZWw6OlNldFJlY3ZDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYg
Y29kZWNzKSB7CisgIGlmIChmYWlsX3NldF9yZWN2X2NvZGVjcygpKSB7CisgICAgLy8gRmFrZSB0
aGUgZmFpbHVyZSBpbiBTZXRSZWN2Q29kZWNzLgorICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBy
ZWN2X2NvZGVjc18gPSBjb2RlY3M7CisgIHJldHVybiB0cnVlOworfQorYm9vbCBGYWtlRGF0YU1l
ZGlhQ2hhbm5lbDo6U2V0U2VuZENvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+JiBj
b2RlY3MpIHsKKyAgaWYgKGZhaWxfc2V0X3NlbmRfY29kZWNzKCkpIHsKKyAgICAvLyBGYWtlIHRo
ZSBmYWlsdXJlIGluIFNldFNlbmRDb2RlY3MuCisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHNl
bmRfY29kZWNzXyA9IGNvZGVjczsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VEYXRhTWVk
aWFDaGFubmVsOjpTZXRNYXhTZW5kQmFuZHdpZHRoKGludCBicHMpIHsKKyAgbWF4X2Jwc18gPSBi
cHM7CisgIHJldHVybiB0cnVlOworfQorCitGYWtlVm9pY2VFbmdpbmU6OkZha2VWb2ljZUVuZ2lu
ZSgpIDogZmFpbF9jcmVhdGVfY2hhbm5lbF8oZmFsc2UpIHsKKyAgLy8gQWRkIGEgZmFrZSBhdWRp
byBjb2RlYy4gTm90ZSB0aGF0IHRoZSBuYW1lIG11c3Qgbm90IGJlICIiIGFzIHRoZXJlIGFyZQor
ICAvLyBzYW5pdHkgY2hlY2tzIGFnYWluc3QgdGhhdC4KKyAgY29kZWNzXy5wdXNoX2JhY2soQXVk
aW9Db2RlYygxMDEsICJmYWtlX2F1ZGlvX2NvZGVjIiwgMCwgMCwgMSkpOworfQorUnRwQ2FwYWJp
bGl0aWVzIEZha2VWb2ljZUVuZ2luZTo6R2V0Q2FwYWJpbGl0aWVzKCkgY29uc3QgeworICByZXR1
cm4gUnRwQ2FwYWJpbGl0aWVzKCk7Cit9Cit2b2lkIEZha2VWb2ljZUVuZ2luZTo6SW5pdCgpIHt9
CitydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiBGYWtlVm9pY2VFbmdpbmU6
OkdldEF1ZGlvU3RhdGUoKSBjb25zdCB7CisgIHJldHVybiBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1N0YXRlPigpOworfQorVm9pY2VNZWRpYUNoYW5uZWwqIEZha2VWb2ljZUVuZ2lu
ZTo6Q3JlYXRlTWVkaWFDaGFubmVsKAorICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKKyAgICBjb25z
dCBNZWRpYUNvbmZpZyYgY29uZmlnLAorICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywK
KyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSB7CisgIGlm
IChmYWlsX2NyZWF0ZV9jaGFubmVsXykgeworICAgIHJldHVybiBudWxscHRyOworICB9CisKKyAg
RmFrZVZvaWNlTWVkaWFDaGFubmVsKiBjaCA9IG5ldyBGYWtlVm9pY2VNZWRpYUNoYW5uZWwodGhp
cywgb3B0aW9ucyk7CisgIGNoYW5uZWxzXy5wdXNoX2JhY2soY2gpOworICByZXR1cm4gY2g7Cit9
CitGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIEZha2VWb2ljZUVuZ2luZTo6R2V0Q2hhbm5lbChzaXpl
X3QgaW5kZXgpIHsKKyAgcmV0dXJuIChjaGFubmVsc18uc2l6ZSgpID4gaW5kZXgpID8gY2hhbm5l
bHNfW2luZGV4XSA6IE5VTEw7Cit9Cit2b2lkIEZha2VWb2ljZUVuZ2luZTo6VW5yZWdpc3RlckNo
YW5uZWwoVm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5uZWwpIHsKKyAgY2hhbm5lbHNfLmVyYXNlKHN0
ZDo6ZmluZChjaGFubmVsc18uYmVnaW4oKSwgY2hhbm5lbHNfLmVuZCgpLCBjaGFubmVsKSk7Cit9
Citjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgRmFrZVZvaWNlRW5naW5lOjpzZW5kX2Nv
ZGVjcygpIGNvbnN0IHsKKyAgcmV0dXJuIGNvZGVjc187Cit9Citjb25zdCBzdGQ6OnZlY3RvcjxB
dWRpb0NvZGVjPiYgRmFrZVZvaWNlRW5naW5lOjpyZWN2X2NvZGVjcygpIGNvbnN0IHsKKyAgcmV0
dXJuIGNvZGVjc187Cit9Cit2b2lkIEZha2VWb2ljZUVuZ2luZTo6U2V0Q29kZWNzKGNvbnN0IHN0
ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MpIHsKKyAgY29kZWNzXyA9IGNvZGVjczsKK30K
K2ludCBGYWtlVm9pY2VFbmdpbmU6OkdldElucHV0TGV2ZWwoKSB7CisgIHJldHVybiAwOworfQor
Ym9vbCBGYWtlVm9pY2VFbmdpbmU6OlN0YXJ0QWVjRHVtcChydGM6OlBsYXRmb3JtRmlsZSBmaWxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG1heF9zaXplX2J5
dGVzKSB7CisgIHJldHVybiBmYWxzZTsKK30KK3ZvaWQgRmFrZVZvaWNlRW5naW5lOjpTdG9wQWVj
RHVtcCgpIHt9Citib29sIEZha2VWb2ljZUVuZ2luZTo6U3RhcnRSdGNFdmVudExvZyhydGM6OlBs
YXRmb3JtRmlsZSBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50NjRfdCBtYXhfc2l6ZV9ieXRlcykgeworICByZXR1cm4gZmFsc2U7Cit9Cit2b2lkIEZha2VW
b2ljZUVuZ2luZTo6U3RvcFJ0Y0V2ZW50TG9nKCkge30KKworRmFrZVZpZGVvRW5naW5lOjpGYWtl
VmlkZW9FbmdpbmUoKQorICAgIDogY2FwdHVyZV8oZmFsc2UpLCBmYWlsX2NyZWF0ZV9jaGFubmVs
XyhmYWxzZSkgeworICAvLyBBZGQgYSBmYWtlIHZpZGVvIGNvZGVjLiBOb3RlIHRoYXQgdGhlIG5h
bWUgbXVzdCBub3QgYmUgIiIgYXMgdGhlcmUgYXJlCisgIC8vIHNhbml0eSBjaGVja3MgYWdhaW5z
dCB0aGF0LgorICBjb2RlY3NfLnB1c2hfYmFjayhWaWRlb0NvZGVjKDAsICJmYWtlX3ZpZGVvX2Nv
ZGVjIikpOworfQorUnRwQ2FwYWJpbGl0aWVzIEZha2VWaWRlb0VuZ2luZTo6R2V0Q2FwYWJpbGl0
aWVzKCkgY29uc3QgeworICByZXR1cm4gUnRwQ2FwYWJpbGl0aWVzKCk7Cit9Citib29sIEZha2VW
aWRlb0VuZ2luZTo6U2V0T3B0aW9ucyhjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpIHsKKyAg
b3B0aW9uc18gPSBvcHRpb25zOworICByZXR1cm4gdHJ1ZTsKK30KK1ZpZGVvTWVkaWFDaGFubmVs
KiBGYWtlVmlkZW9FbmdpbmU6OkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICB3ZWJydGM6OkNhbGwq
IGNhbGwsCisgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKKyAgICBjb25zdCBWaWRlb09w
dGlvbnMmIG9wdGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9f
b3B0aW9ucykgeworICBpZiAoZmFpbF9jcmVhdGVfY2hhbm5lbF8pIHsKKyAgICByZXR1cm4gbnVs
bHB0cjsKKyAgfQorCisgIEZha2VWaWRlb01lZGlhQ2hhbm5lbCogY2ggPSBuZXcgRmFrZVZpZGVv
TWVkaWFDaGFubmVsKHRoaXMsIG9wdGlvbnMpOworICBjaGFubmVsc18uZW1wbGFjZV9iYWNrKGNo
KTsKKyAgcmV0dXJuIGNoOworfQorRmFrZVZpZGVvTWVkaWFDaGFubmVsKiBGYWtlVmlkZW9Fbmdp
bmU6OkdldENoYW5uZWwoc2l6ZV90IGluZGV4KSB7CisgIHJldHVybiAoY2hhbm5lbHNfLnNpemUo
KSA+IGluZGV4KSA/IGNoYW5uZWxzX1tpbmRleF0gOiBudWxscHRyOworfQordm9pZCBGYWtlVmlk
ZW9FbmdpbmU6OlVucmVnaXN0ZXJDaGFubmVsKFZpZGVvTWVkaWFDaGFubmVsKiBjaGFubmVsKSB7
CisgIGF1dG8gaXQgPSBzdGQ6OmZpbmQoY2hhbm5lbHNfLmJlZ2luKCksIGNoYW5uZWxzXy5lbmQo
KSwgY2hhbm5lbCk7CisgIFJUQ19EQ0hFQ0soaXQgIT0gY2hhbm5lbHNfLmVuZCgpKTsKKyAgY2hh
bm5lbHNfLmVyYXNlKGl0KTsKK30KK3N0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IEZha2VWaWRlb0Vu
Z2luZTo6Y29kZWNzKCkgY29uc3QgeworICByZXR1cm4gY29kZWNzXzsKK30KK3ZvaWQgRmFrZVZp
ZGVvRW5naW5lOjpTZXRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNz
KSB7CisgIGNvZGVjc18gPSBjb2RlY3M7Cit9Citib29sIEZha2VWaWRlb0VuZ2luZTo6U2V0Q2Fw
dHVyZShib29sIGNhcHR1cmUpIHsKKyAgY2FwdHVyZV8gPSBjYXB0dXJlOworICByZXR1cm4gdHJ1
ZTsKK30KKworRmFrZU1lZGlhRW5naW5lOjpGYWtlTWVkaWFFbmdpbmUoKQorICAgIDogQ29tcG9z
aXRlTWVkaWFFbmdpbmUoYWJzbDo6bWFrZV91bmlxdWU8RmFrZVZvaWNlRW5naW5lPigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZVZpZGVvRW5naW5l
PigpKSwKKyAgICAgIHZvaWNlXyhzdGF0aWNfY2FzdDxGYWtlVm9pY2VFbmdpbmUqPigmdm9pY2Uo
KSkpLAorICAgICAgdmlkZW9fKHN0YXRpY19jYXN0PEZha2VWaWRlb0VuZ2luZSo+KCZ2aWRlbygp
KSkge30KK0Zha2VNZWRpYUVuZ2luZTo6fkZha2VNZWRpYUVuZ2luZSgpIHt9Cit2b2lkIEZha2VN
ZWRpYUVuZ2luZTo6U2V0QXVkaW9Db2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4m
IGNvZGVjcykgeworICB2b2ljZV8tPlNldENvZGVjcyhjb2RlY3MpOworfQordm9pZCBGYWtlTWVk
aWFFbmdpbmU6OlNldFZpZGVvQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBj
b2RlY3MpIHsKKyAgdmlkZW9fLT5TZXRDb2RlY3MoY29kZWNzKTsKK30KKworRmFrZVZvaWNlTWVk
aWFDaGFubmVsKiBGYWtlTWVkaWFFbmdpbmU6OkdldFZvaWNlQ2hhbm5lbChzaXplX3QgaW5kZXgp
IHsKKyAgcmV0dXJuIHZvaWNlXy0+R2V0Q2hhbm5lbChpbmRleCk7Cit9CitGYWtlVmlkZW9NZWRp
YUNoYW5uZWwqIEZha2VNZWRpYUVuZ2luZTo6R2V0VmlkZW9DaGFubmVsKHNpemVfdCBpbmRleCkg
eworICByZXR1cm4gdmlkZW9fLT5HZXRDaGFubmVsKGluZGV4KTsKK30KKwordm9pZCBGYWtlTWVk
aWFFbmdpbmU6OnNldF9mYWlsX2NyZWF0ZV9jaGFubmVsKGJvb2wgZmFpbCkgeworICB2b2ljZV8t
PmZhaWxfY3JlYXRlX2NoYW5uZWxfID0gZmFpbDsKKyAgdmlkZW9fLT5mYWlsX2NyZWF0ZV9jaGFu
bmVsXyA9IGZhaWw7Cit9CisKK0RhdGFNZWRpYUNoYW5uZWwqIEZha2VEYXRhRW5naW5lOjpDcmVh
dGVDaGFubmVsKGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcpIHsKKyAgRmFrZURhdGFNZWRpYUNo
YW5uZWwqIGNoID0gbmV3IEZha2VEYXRhTWVkaWFDaGFubmVsKHRoaXMsIERhdGFPcHRpb25zKCkp
OworICBjaGFubmVsc18ucHVzaF9iYWNrKGNoKTsKKyAgcmV0dXJuIGNoOworfQorRmFrZURhdGFN
ZWRpYUNoYW5uZWwqIEZha2VEYXRhRW5naW5lOjpHZXRDaGFubmVsKHNpemVfdCBpbmRleCkgewor
ICByZXR1cm4gKGNoYW5uZWxzXy5zaXplKCkgPiBpbmRleCkgPyBjaGFubmVsc19baW5kZXhdIDog
TlVMTDsKK30KK3ZvaWQgRmFrZURhdGFFbmdpbmU6OlVucmVnaXN0ZXJDaGFubmVsKERhdGFNZWRp
YUNoYW5uZWwqIGNoYW5uZWwpIHsKKyAgY2hhbm5lbHNfLmVyYXNlKHN0ZDo6ZmluZChjaGFubmVs
c18uYmVnaW4oKSwgY2hhbm5lbHNfLmVuZCgpLCBjaGFubmVsKSk7Cit9Cit2b2lkIEZha2VEYXRh
RW5naW5lOjpTZXREYXRhQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGRhdGFf
Y29kZWNzKSB7CisgIGRhdGFfY29kZWNzXyA9IGRhdGFfY29kZWNzOworfQorY29uc3Qgc3RkOjp2
ZWN0b3I8RGF0YUNvZGVjPiYgRmFrZURhdGFFbmdpbmU6OmRhdGFfY29kZWNzKCkgeworICByZXR1
cm4gZGF0YV9jb2RlY3NfOworfQorCit9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9m
YWtlbWVkaWFlbmdpbmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmgKaW5kZXggNjJiZDZiYTViYTUwZjIxNGE2
OWY5ZjcxYmI0MzZmM2U5ZjE2MWRlYS4uZTNhMDYzODcxNTI4MmNiYTdhMjFiYjFmNzVkYzFlYTY2
ZmNkNjQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2Zha2VtZWRpYWVuZ2luZS5oCkBA
IC0xNywxMCArMTcsOCBAQAogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5j
bHVkZSA8dHVwbGU+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNp
bmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvY2FsbC9hdWRpb19z
aW5rLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9hdWRpb3NvdXJjZS5oIgogI2luY2x1ZGUgIm1l
ZGlhL2Jhc2UvbWVkaWFlbmdpbmUuaCIKQEAgLTI4LDEwICsyNiw4IEBACiAjaW5jbHVkZSAibWVk
aWEvYmFzZS9zdHJlYW1wYXJhbXMuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvd2VicnRjdmlk
ZW9lbmdpbmUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9h
dWRpb19wcm9jZXNzaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9uZXR3
b3Jrcm91dGUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiB1c2luZyB3
ZWJydGM6OlJ0cEV4dGVuc2lvbjsKIApAQCAtMTI4LDcgKzEyNCw3IEBAIGNsYXNzIFJ0cEhlbHBl
ciA6IHB1YmxpYyBCYXNlIHsKICAgICB9CiAgICAgcmVjZWl2ZV9zdHJlYW1zXy5wdXNoX2JhY2so
c3ApOwogICAgIHJ0cF9yZWNlaXZlX3BhcmFtZXRlcnNfW3NwLmZpcnN0X3NzcmMoKV0gPQotICAg
ICAgICBDcmVhdGVSdHBQYXJhbWV0ZXJzV2l0aE9uZUVuY29kaW5nKCk7CisgICAgICAgIENyZWF0
ZVJ0cFBhcmFtZXRlcnNXaXRoRW5jb2RpbmdzKHNwKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQog
ICB2aXJ0dWFsIGJvb2wgUmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSB7CkBAIC0yNTYs
NiArMjUyLDEyIEBAIGNsYXNzIFJ0cEhlbHBlciA6IHB1YmxpYyBCYXNlIHsKICAgICByZWN2X2V4
dGVuc2lvbnNfID0gZXh0ZW5zaW9uczsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQorICBib29sIFNl
dFNlbmRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSB7CisgICAgaWYg
KEJhc2U6OkV4dG1hcEFsbG93TWl4ZWQoKSAhPSBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICAg
IEJhc2U6OlNldEV4dG1hcEFsbG93TWl4ZWQoZXh0bWFwX2FsbG93X21peGVkKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7CisgIH0KICAgYm9vbCBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9ucyhj
b25zdCBzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+JiBleHRlbnNpb25zKSB7CiAgICAgc2VuZF9l
eHRlbnNpb25zXyA9IGV4dGVuc2lvbnM7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNjcsMTEgKzI2
OSwxMSBAQCBjbGFzcyBSdHBIZWxwZXIgOiBwdWJsaWMgQmFzZSB7CiAgICAgcmVjdl9ydGNwX3Bh
cmFtZXRlcnNfID0gcGFyYW1zOwogICB9CiAgIHZpcnR1YWwgdm9pZCBPblBhY2tldFJlY2VpdmVk
KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgICAgcnRw
X3BhY2tldHNfLnB1c2hfYmFjayhzdGQ6OnN0cmluZyhwYWNrZXQtPmRhdGE8Y2hhcj4oKSwgcGFj
a2V0LT5zaXplKCkpKTsKICAgfQogICB2aXJ0dWFsIHZvaWQgT25SdGNwUmVjZWl2ZWQocnRjOjpD
b3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICAgIHJ0Y3BfcGFja2V0c18u
cHVzaF9iYWNrKHN0ZDo6c3RyaW5nKHBhY2tldC0+ZGF0YTxjaGFyPigpLCBwYWNrZXQtPnNpemUo
KSkpOwogICB9CiAgIHZpcnR1YWwgdm9pZCBPblJlYWR5VG9TZW5kKGJvb2wgcmVhZHkpIHsgcmVh
ZHlfdG9fc2VuZF8gPSByZWFkeTsgfQpAQCAtMzEyLDE4NyArMzE0LDcyIEBAIGNsYXNzIFJ0cEhl
bHBlciA6IHB1YmxpYyBCYXNlIHsKIGNsYXNzIEZha2VWb2ljZU1lZGlhQ2hhbm5lbCA6IHB1Ymxp
YyBSdHBIZWxwZXI8Vm9pY2VNZWRpYUNoYW5uZWw+IHsKICBwdWJsaWM6CiAgIHN0cnVjdCBEdG1m
SW5mbyB7Ci0gICAgRHRtZkluZm8odWludDMyX3Qgc3NyYywgaW50IGV2ZW50X2NvZGUsIGludCBk
dXJhdGlvbikKLSAgICAgICAgOiBzc3JjKHNzcmMpLCBldmVudF9jb2RlKGV2ZW50X2NvZGUpLCBk
dXJhdGlvbihkdXJhdGlvbikge30KKyAgICBEdG1mSW5mbyh1aW50MzJfdCBzc3JjLCBpbnQgZXZl
bnRfY29kZSwgaW50IGR1cmF0aW9uKTsKICAgICB1aW50MzJfdCBzc3JjOwogICAgIGludCBldmVu
dF9jb2RlOwogICAgIGludCBkdXJhdGlvbjsKICAgfTsKICAgZXhwbGljaXQgRmFrZVZvaWNlTWVk
aWFDaGFubmVsKEZha2VWb2ljZUVuZ2luZSogZW5naW5lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKQotICAgICAgOiBlbmdpbmVf
KGVuZ2luZSksIG1heF9icHNfKC0xKSB7Ci0gICAgb3V0cHV0X3NjYWxpbmdzX1swXSA9IDEuMDsg
IC8vIEZvciBkZWZhdWx0IGNoYW5uZWwuCi0gICAgU2V0T3B0aW9ucyhvcHRpb25zKTsKLSAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRp
b25zKTsKICAgfkZha2VWb2ljZU1lZGlhQ2hhbm5lbCgpOwotICBjb25zdCBzdGQ6OnZlY3RvcjxB
dWRpb0NvZGVjPiYgcmVjdl9jb2RlY3MoKSBjb25zdCB7IHJldHVybiByZWN2X2NvZGVjc187IH0K
LSAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHNlbmRfY29kZWNzKCkgY29uc3QgeyBy
ZXR1cm4gc2VuZF9jb2RlY3NfOyB9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBj
b2RlY3MoKSBjb25zdCB7IHJldHVybiBzZW5kX2NvZGVjcygpOyB9Ci0gIGNvbnN0IHN0ZDo6dmVj
dG9yPER0bWZJbmZvPiYgZHRtZl9pbmZvX3F1ZXVlKCkgY29uc3QgewotICAgIHJldHVybiBkdG1m
X2luZm9fcXVldWVfOwotICB9Ci0gIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG9wdGlvbnNfOyB9Ci0gIGludCBtYXhfYnBzKCkgY29uc3QgeyByZXR1cm4gbWF4
X2Jwc187IH0KLSAgdmlydHVhbCBib29sIFNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0IEF1ZGlvU2Vu
ZFBhcmFtZXRlcnMmIHBhcmFtcykgewotICAgIHNldF9zZW5kX3J0Y3BfcGFyYW1ldGVycyhwYXJh
bXMucnRjcCk7Ci0gICAgcmV0dXJuIChTZXRTZW5kQ29kZWNzKHBhcmFtcy5jb2RlY3MpICYmCi0g
ICAgICAgICAgICBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJhbXMuZXh0ZW5zaW9ucykg
JiYKLSAgICAgICAgICAgIFNldE1heFNlbmRCYW5kd2lkdGgocGFyYW1zLm1heF9iYW5kd2lkdGhf
YnBzKSAmJgotICAgICAgICAgICAgU2V0T3B0aW9ucyhwYXJhbXMub3B0aW9ucykpOwotICB9Ci0K
LSAgdmlydHVhbCBib29sIFNldFJlY3ZQYXJhbWV0ZXJzKGNvbnN0IEF1ZGlvUmVjdlBhcmFtZXRl
cnMmIHBhcmFtcykgewotICAgIHNldF9yZWN2X3J0Y3BfcGFyYW1ldGVycyhwYXJhbXMucnRjcCk7
Ci0gICAgcmV0dXJuIChTZXRSZWN2Q29kZWNzKHBhcmFtcy5jb2RlY3MpICYmCi0gICAgICAgICAg
ICBTZXRSZWN2UnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJhbXMuZXh0ZW5zaW9ucykpOwotICB9Ci0K
LSAgdmlydHVhbCB2b2lkIFNldFBsYXlvdXQoYm9vbCBwbGF5b3V0KSB7IHNldF9wbGF5b3V0KHBs
YXlvdXQpOyB9Ci0gIHZpcnR1YWwgdm9pZCBTZXRTZW5kKGJvb2wgc2VuZCkgeyBzZXRfc2VuZGlu
ZyhzZW5kKTsgfQotICB2aXJ0dWFsIGJvb2wgU2V0QXVkaW9TZW5kKHVpbnQzMl90IHNzcmMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRpb25zKiBvcHRpb25zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEF1ZGlvU291cmNlKiBzb3VyY2UpIHsKLSAgICBpZiAoIVNldExvY2FsU291
cmNlKHNzcmMsIHNvdXJjZSkpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYg
KCFSdHBIZWxwZXI8Vm9pY2VNZWRpYUNoYW5uZWw+OjpNdXRlU3RyZWFtKHNzcmMsICFlbmFibGUp
KSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChlbmFibGUgJiYgb3B0aW9u
cykgewotICAgICAgcmV0dXJuIFNldE9wdGlvbnMoKm9wdGlvbnMpOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLSAgfQorICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgcmVjdl9jb2Rl
Y3MoKSBjb25zdDsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHNlbmRfY29kZWNz
KCkgY29uc3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MoKSBjb25z
dDsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8RHRtZkluZm8+JiBkdG1mX2luZm9fcXVldWUoKSBjb25z
dDsKKyAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKCkgY29uc3Q7CisgIGludCBtYXhfYnBz
KCkgY29uc3Q7CisgIGJvb2wgU2V0U2VuZFBhcmFtZXRlcnMoY29uc3QgQXVkaW9TZW5kUGFyYW1l
dGVycyYgcGFyYW1zKSBvdmVycmlkZTsKIAotICBib29sIEhhc1NvdXJjZSh1aW50MzJfdCBzc3Jj
KSBjb25zdCB7Ci0gICAgcmV0dXJuIGxvY2FsX3NpbmtzXy5maW5kKHNzcmMpICE9IGxvY2FsX3Np
bmtzXy5lbmQoKTsKLSAgfQorICBib29sIFNldFJlY3ZQYXJhbWV0ZXJzKGNvbnN0IEF1ZGlvUmVj
dlBhcmFtZXRlcnMmIHBhcmFtcykgb3ZlcnJpZGU7CiAKLSAgdmlydHVhbCBib29sIEFkZFJlY3ZT
dHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgewotICAgIGlmICghUnRwSGVscGVyPFZvaWNl
TWVkaWFDaGFubmVsPjo6QWRkUmVjdlN0cmVhbShzcCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgb3V0cHV0X3NjYWxpbmdzX1tzcC5maXJzdF9zc3JjKCldID0gMS4wOwotICAgIHJldHVybiB0
cnVlOwotICB9Ci0gIHZpcnR1YWwgYm9vbCBSZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMp
IHsKLSAgICBpZiAoIVJ0cEhlbHBlcjxWb2ljZU1lZGlhQ2hhbm5lbD46OlJlbW92ZVJlY3ZTdHJl
YW0oc3NyYykpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgb3V0cHV0X3NjYWxpbmdzXy5lcmFz
ZShzc3JjKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICB2b2lkIFNldFBsYXlvdXQoYm9vbCBw
bGF5b3V0KSBvdmVycmlkZTsKKyAgdm9pZCBTZXRTZW5kKGJvb2wgc2VuZCkgb3ZlcnJpZGU7Cisg
IGJvb2wgU2V0QXVkaW9TZW5kKHVpbnQzMl90IHNzcmMsCisgICAgICAgICAgICAgICAgICAgIGJv
b2wgZW5hYmxlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb09wdGlvbnMqIG9wdGlv
bnMsCisgICAgICAgICAgICAgICAgICAgIEF1ZGlvU291cmNlKiBzb3VyY2UpIG92ZXJyaWRlOwog
Ci0gIHZpcnR1YWwgYm9vbCBDYW5JbnNlcnREdG1mKCkgewotICAgIGZvciAoc3RkOjp2ZWN0b3I8
QXVkaW9Db2RlYz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2VuZF9jb2RlY3NfLmJlZ2luKCk7Ci0g
ICAgICAgICBpdCAhPSBzZW5kX2NvZGVjc18uZW5kKCk7ICsraXQpIHsKLSAgICAgIC8vIEZpbmQg
dGhlIERUTUYgdGVsZXBob25lIGV2ZW50ICJjb2RlYyIuCi0gICAgICBpZiAoX3N0cmljbXAoaXQt
Pm5hbWUuY19zdHIoKSwgInRlbGVwaG9uZS1ldmVudCIpID09IDApIHsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICB2aXJ0dWFs
IGJvb2wgSW5zZXJ0RHRtZih1aW50MzJfdCBzc3JjLCBpbnQgZXZlbnRfY29kZSwgaW50IGR1cmF0
aW9uKSB7Ci0gICAgZHRtZl9pbmZvX3F1ZXVlXy5wdXNoX2JhY2soRHRtZkluZm8oc3NyYywgZXZl
bnRfY29kZSwgZHVyYXRpb24pKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBib29sIEhhc1Nv
dXJjZSh1aW50MzJfdCBzc3JjKSBjb25zdDsKIAotICB2aXJ0dWFsIGJvb2wgU2V0T3V0cHV0Vm9s
dW1lKHVpbnQzMl90IHNzcmMsIGRvdWJsZSB2b2x1bWUpIHsKLSAgICBpZiAoMCA9PSBzc3JjKSB7
Ci0gICAgICBzdGQ6Om1hcDx1aW50MzJfdCwgZG91YmxlPjo6aXRlcmF0b3IgaXQ7Ci0gICAgICBm
b3IgKGl0ID0gb3V0cHV0X3NjYWxpbmdzXy5iZWdpbigpOyBpdCAhPSBvdXRwdXRfc2NhbGluZ3Nf
LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGl0LT5zZWNvbmQgPSB2b2x1bWU7Ci0gICAgICB9Ci0g
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKG91dHB1dF9zY2FsaW5nc18uZmluZChz
c3JjKSAhPSBvdXRwdXRfc2NhbGluZ3NfLmVuZCgpKSB7Ci0gICAgICBvdXRwdXRfc2NhbGluZ3Nf
W3NzcmNdID0gdm9sdW1lOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLSAgfQotICBib29sIEdldE91dHB1dFZvbHVtZSh1aW50MzJfdCBzc3JjLCBkb3VibGUq
IHZvbHVtZSkgewotICAgIGlmIChvdXRwdXRfc2NhbGluZ3NfLmZpbmQoc3NyYykgPT0gb3V0cHV0
X3NjYWxpbmdzXy5lbmQoKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICAqdm9sdW1lID0gb3V0
cHV0X3NjYWxpbmdzX1tzc3JjXTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBib29sIEFkZFJl
Y3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgb3ZlcnJpZGU7CisgIGJvb2wgUmVtb3Zl
UmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSBvdmVycmlkZTsKKworICBib29sIENhbkluc2VydER0
bWYoKSBvdmVycmlkZTsKKyAgYm9vbCBJbnNlcnREdG1mKHVpbnQzMl90IHNzcmMsIGludCBldmVu
dF9jb2RlLCBpbnQgZHVyYXRpb24pIG92ZXJyaWRlOworCisgIGJvb2wgU2V0T3V0cHV0Vm9sdW1l
KHVpbnQzMl90IHNzcmMsIGRvdWJsZSB2b2x1bWUpIG92ZXJyaWRlOworICBib29sIEdldE91dHB1
dFZvbHVtZSh1aW50MzJfdCBzc3JjLCBkb3VibGUqIHZvbHVtZSk7CiAKLSAgdmlydHVhbCBib29s
IEdldFN0YXRzKFZvaWNlTWVkaWFJbmZvKiBpbmZvKSB7IHJldHVybiBmYWxzZTsgfQorICBib29s
IEdldFN0YXRzKFZvaWNlTWVkaWFJbmZvKiBpbmZvKSBvdmVycmlkZTsKIAotICB2aXJ0dWFsIHZv
aWQgU2V0UmF3QXVkaW9TaW5rKAorICB2b2lkIFNldFJhd0F1ZGlvU2luaygKICAgICAgIHVpbnQz
Ml90IHNzcmMsCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpBdWRpb1NpbmtJbnRlcmZh
Y2U+IHNpbmspIHsKLSAgICBzaW5rXyA9IHN0ZDo6bW92ZShzaW5rKTsKLSAgfQorICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6QXVkaW9TaW5rSW50ZXJmYWNlPiBzaW5rKSBvdmVycmlkZTsK
IAotICB2aXJ0dWFsIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNlPiBHZXRTb3VyY2VzKHVp
bnQzMl90IHNzcmMpIGNvbnN0IHsKLSAgICByZXR1cm4gc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBT
b3VyY2U+KCk7Ci0gIH0KKyAgc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+IEdldFNvdXJj
ZXModWludDMyX3Qgc3NyYykgY29uc3Qgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgogICBjbGFzcyBW
b2ljZUNoYW5uZWxBdWRpb1NpbmsgOiBwdWJsaWMgQXVkaW9Tb3VyY2U6OlNpbmsgewogICAgcHVi
bGljOgotICAgIGV4cGxpY2l0IFZvaWNlQ2hhbm5lbEF1ZGlvU2luayhBdWRpb1NvdXJjZSogc291
cmNlKSA6IHNvdXJjZV8oc291cmNlKSB7Ci0gICAgICBzb3VyY2VfLT5TZXRTaW5rKHRoaXMpOwot
ICAgIH0KLSAgICB2aXJ0dWFsIH5Wb2ljZUNoYW5uZWxBdWRpb1NpbmsoKSB7Ci0gICAgICBpZiAo
c291cmNlXykgewotICAgICAgICBzb3VyY2VfLT5TZXRTaW5rKG51bGxwdHIpOwotICAgICAgfQot
ICAgIH0KKyAgICBleHBsaWNpdCBWb2ljZUNoYW5uZWxBdWRpb1NpbmsoQXVkaW9Tb3VyY2UqIHNv
dXJjZSk7CisgICAgflZvaWNlQ2hhbm5lbEF1ZGlvU2luaygpIG92ZXJyaWRlOwogICAgIHZvaWQg
T25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvX2RhdGEsCiAgICAgICAgICAgICAgICAgaW50IGJpdHNf
cGVyX3NhbXBsZSwKICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGUsCiAgICAgICAgICAg
ICAgICAgc2l6ZV90IG51bWJlcl9vZl9jaGFubmVscywKLSAgICAgICAgICAgICAgICBzaXplX3Qg
bnVtYmVyX29mX2ZyYW1lcykgb3ZlcnJpZGUge30KLSAgICB2b2lkIE9uQ2xvc2UoKSBvdmVycmlk
ZSB7IHNvdXJjZV8gPSBudWxscHRyOyB9Ci0gICAgQXVkaW9Tb3VyY2UqIHNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIHNvdXJjZV87IH0KKyAgICAgICAgICAgICAgICBzaXplX3QgbnVtYmVyX29mX2Zy
YW1lcykgb3ZlcnJpZGU7CisgICAgdm9pZCBPbkNsb3NlKCkgb3ZlcnJpZGU7CisgICAgQXVkaW9T
b3VyY2UqIHNvdXJjZSgpIGNvbnN0OwogCiAgICBwcml2YXRlOgogICAgIEF1ZGlvU291cmNlKiBz
b3VyY2VfOwogICB9OwogCi0gIGJvb2wgU2V0UmVjdkNvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxB
dWRpb0NvZGVjPiYgY29kZWNzKSB7Ci0gICAgaWYgKGZhaWxfc2V0X3JlY3ZfY29kZWNzKCkpIHsK
LSAgICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0UmVjdkNvZGVjcy4KLSAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgcmVjdl9jb2RlY3NfID0gY29kZWNzOwotICAgIHJldHVybiB0
cnVlOwotICB9Ci0gIGJvb2wgU2V0U2VuZENvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0Nv
ZGVjPiYgY29kZWNzKSB7Ci0gICAgaWYgKGZhaWxfc2V0X3NlbmRfY29kZWNzKCkpIHsKLSAgICAg
IC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0U2VuZENvZGVjcy4KLSAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgc2VuZF9jb2RlY3NfID0gY29kZWNzOwotICAgIHJldHVybiB0cnVlOwot
ICB9Ci0gIGJvb2wgU2V0TWF4U2VuZEJhbmR3aWR0aChpbnQgYnBzKSB7Ci0gICAgbWF4X2Jwc18g
PSBicHM7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgYm9vbCBTZXRPcHRpb25zKGNvbnN0IEF1
ZGlvT3B0aW9ucyYgb3B0aW9ucykgewotICAgIC8vIERvZXMgYSAibWVyZ2UiIG9mIGN1cnJlbnQg
b3B0aW9ucyBhbmQgc2V0IG9wdGlvbnMuCi0gICAgb3B0aW9uc18uU2V0QWxsKG9wdGlvbnMpOwot
ICAgIHJldHVybiB0cnVlOwotICB9Ci0gIGJvb2wgU2V0TG9jYWxTb3VyY2UodWludDMyX3Qgc3Ny
YywgQXVkaW9Tb3VyY2UqIHNvdXJjZSkgewotICAgIGF1dG8gaXQgPSBsb2NhbF9zaW5rc18uZmlu
ZChzc3JjKTsKLSAgICBpZiAoc291cmNlKSB7Ci0gICAgICBpZiAoaXQgIT0gbG9jYWxfc2lua3Nf
LmVuZCgpKSB7Ci0gICAgICAgIFJUQ19DSEVDSyhpdC0+c2Vjb25kLT5zb3VyY2UoKSA9PSBzb3Vy
Y2UpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgbG9jYWxfc2lua3NfLmluc2VydChzdGQ6Om1h
a2VfcGFpcigKLSAgICAgICAgICAgIHNzcmMsIGFic2w6Om1ha2VfdW5pcXVlPFZvaWNlQ2hhbm5l
bEF1ZGlvU2luaz4oc291cmNlKSkpOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBpZiAo
aXQgIT0gbG9jYWxfc2lua3NfLmVuZCgpKSB7Ci0gICAgICAgIGxvY2FsX3NpbmtzXy5lcmFzZShp
dCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9CisgIGJvb2wgU2V0UmVj
dkNvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKTsKKyAgYm9vbCBT
ZXRTZW5kQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MpOworICBi
b29sIFNldE1heFNlbmRCYW5kd2lkdGgoaW50IGJwcyk7CisgIGJvb2wgU2V0T3B0aW9ucyhjb25z
dCBBdWRpb09wdGlvbnMmIG9wdGlvbnMpOworICBib29sIFNldExvY2FsU291cmNlKHVpbnQzMl90
IHNzcmMsIEF1ZGlvU291cmNlKiBzb3VyY2UpOwogCiAgIEZha2VWb2ljZUVuZ2luZSogZW5naW5l
XzsKICAgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4gcmVjdl9jb2RlY3NfOwpAQCAtNTA2LDEzNiAr
MzkzLDU1IEBAIGNsYXNzIEZha2VWb2ljZU1lZGlhQ2hhbm5lbCA6IHB1YmxpYyBSdHBIZWxwZXI8
Vm9pY2VNZWRpYUNoYW5uZWw+IHsKIH07CiAKIC8vIEEgaGVscGVyIGZ1bmN0aW9uIHRvIGNvbXBh
cmUgdGhlIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6RHRtZkluZm8uCi1pbmxpbmUgYm9vbCBDb21w
YXJlRHRtZkluZm8oY29uc3QgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpEdG1mSW5mbyYgaW5mbywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzc3JjLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBldmVudF9jb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBkdXJhdGlvbikgewotICByZXR1cm4gKGluZm8uZHVyYXRpb24gPT0gZHVyYXRpb24g
JiYgaW5mby5ldmVudF9jb2RlID09IGV2ZW50X2NvZGUgJiYKLSAgICAgICAgICBpbmZvLnNzcmMg
PT0gc3NyYyk7Ci19Citib29sIENvbXBhcmVEdG1mSW5mbyhjb25zdCBGYWtlVm9pY2VNZWRpYUNo
YW5uZWw6OkR0bWZJbmZvJiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3Ny
YywKKyAgICAgICAgICAgICAgICAgICAgIGludCBldmVudF9jb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgaW50IGR1cmF0aW9uKTsKIAogY2xhc3MgRmFrZVZpZGVvTWVkaWFDaGFubmVsIDogcHVi
bGljIFJ0cEhlbHBlcjxWaWRlb01lZGlhQ2hhbm5lbD4gewogIHB1YmxpYzoKLSAgRmFrZVZpZGVv
TWVkaWFDaGFubmVsKEZha2VWaWRlb0VuZ2luZSogZW5naW5lLCBjb25zdCBWaWRlb09wdGlvbnMm
IG9wdGlvbnMpCi0gICAgICA6IGVuZ2luZV8oZW5naW5lKSwgbWF4X2Jwc18oLTEpIHsKLSAgICBT
ZXRPcHRpb25zKG9wdGlvbnMpOwotICB9CisgIEZha2VWaWRlb01lZGlhQ2hhbm5lbChGYWtlVmlk
ZW9FbmdpbmUqIGVuZ2luZSwgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKTsKIAogICB+RmFr
ZVZpZGVvTWVkaWFDaGFubmVsKCk7CiAKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4m
IHJlY3ZfY29kZWNzKCkgY29uc3QgeyByZXR1cm4gcmVjdl9jb2RlY3NfOyB9Ci0gIGNvbnN0IHN0
ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBzZW5kX2NvZGVjcygpIGNvbnN0IHsgcmV0dXJuIHNlbmRf
Y29kZWNzXzsgfQotICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKCkgY29u
c3QgeyByZXR1cm4gc2VuZF9jb2RlY3MoKTsgfQotICBib29sIHJlbmRlcmluZygpIGNvbnN0IHsg
cmV0dXJuIHBsYXlvdXQoKTsgfQotICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMoKSBjb25z
dCB7IHJldHVybiBvcHRpb25zXzsgfQorICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYg
cmVjdl9jb2RlY3MoKSBjb25zdDsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIHNl
bmRfY29kZWNzKCkgY29uc3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBjb2Rl
Y3MoKSBjb25zdDsKKyAgYm9vbCByZW5kZXJpbmcoKSBjb25zdDsKKyAgY29uc3QgVmlkZW9PcHRp
b25zJiBvcHRpb25zKCkgY29uc3Q7CiAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBydGM6OlZp
ZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+Kj4mCi0gIHNpbmtzKCkgY29uc3Qg
ewotICAgIHJldHVybiBzaW5rc187Ci0gIH0KLSAgaW50IG1heF9icHMoKSBjb25zdCB7IHJldHVy
biBtYXhfYnBzXzsgfQotICBib29sIFNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0IFZpZGVvU2VuZFBh
cmFtZXRlcnMmIHBhcmFtcykgb3ZlcnJpZGUgewotICAgIHNldF9zZW5kX3J0Y3BfcGFyYW1ldGVy
cyhwYXJhbXMucnRjcCk7Ci0gICAgcmV0dXJuIChTZXRTZW5kQ29kZWNzKHBhcmFtcy5jb2RlY3Mp
ICYmCi0gICAgICAgICAgICBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJhbXMuZXh0ZW5z
aW9ucykgJiYKLSAgICAgICAgICAgIFNldE1heFNlbmRCYW5kd2lkdGgocGFyYW1zLm1heF9iYW5k
d2lkdGhfYnBzKSk7Ci0gIH0KLSAgYm9vbCBTZXRSZWN2UGFyYW1ldGVycyhjb25zdCBWaWRlb1Jl
Y3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIG92ZXJyaWRlIHsKLSAgICBzZXRfcmVjdl9ydGNwX3BhcmFt
ZXRlcnMocGFyYW1zLnJ0Y3ApOwotICAgIHJldHVybiAoU2V0UmVjdkNvZGVjcyhwYXJhbXMuY29k
ZWNzKSAmJgotICAgICAgICAgICAgU2V0UmVjdlJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1zLmV4
dGVuc2lvbnMpKTsKLSAgfQotICBib29sIEFkZFNlbmRTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1z
JiBzcCkgb3ZlcnJpZGUgewotICAgIHJldHVybiBSdHBIZWxwZXI8VmlkZW9NZWRpYUNoYW5uZWw+
OjpBZGRTZW5kU3RyZWFtKHNwKTsKLSAgfQotICBib29sIFJlbW92ZVNlbmRTdHJlYW0odWludDMy
X3Qgc3NyYykgb3ZlcnJpZGUgewotICAgIHJldHVybiBSdHBIZWxwZXI8VmlkZW9NZWRpYUNoYW5u
ZWw+OjpSZW1vdmVTZW5kU3RyZWFtKHNzcmMpOwotICB9Ci0KLSAgYm9vbCBHZXRTZW5kQ29kZWMo
VmlkZW9Db2RlYyogc2VuZF9jb2RlYykgb3ZlcnJpZGUgewotICAgIGlmIChzZW5kX2NvZGVjc18u
ZW1wdHkoKSkgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAqc2VuZF9jb2RlYyA9
IHNlbmRfY29kZWNzX1swXTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBzaW5rcygpIGNvbnN0
OworICBpbnQgbWF4X2JwcygpIGNvbnN0OworICBib29sIFNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0
IFZpZGVvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgb3ZlcnJpZGU7CisgIGJvb2wgU2V0UmVjdlBh
cmFtZXRlcnMoY29uc3QgVmlkZW9SZWN2UGFyYW1ldGVycyYgcGFyYW1zKSBvdmVycmlkZTsKKyAg
Ym9vbCBBZGRTZW5kU3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIG92ZXJyaWRlOworICBi
b29sIFJlbW92ZVNlbmRTdHJlYW0odWludDMyX3Qgc3NyYykgb3ZlcnJpZGU7CisKKyAgYm9vbCBH
ZXRTZW5kQ29kZWMoVmlkZW9Db2RlYyogc2VuZF9jb2RlYykgb3ZlcnJpZGU7CiAgIGJvb2wgU2V0
U2luayh1aW50MzJfdCBzc3JjLAotICAgICAgICAgICAgICAgcnRjOjpWaWRlb1NpbmtJbnRlcmZh
Y2U8d2VicnRjOjpWaWRlb0ZyYW1lPiogc2luaykgb3ZlcnJpZGUgewotICAgIGlmIChzc3JjICE9
IDAgJiYgc2lua3NfLmZpbmQoc3NyYykgPT0gc2lua3NfLmVuZCgpKSB7Ci0gICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIGlmIChzc3JjICE9IDApIHsKLSAgICAgIHNpbmtzX1tzc3JjXSA9
IHNpbms7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIGJvb2wgSGFzU2luayh1aW50
MzJfdCBzc3JjKSBjb25zdCB7Ci0gICAgcmV0dXJuIHNpbmtzXy5maW5kKHNzcmMpICE9IHNpbmtz
Xy5lbmQoKSAmJiBzaW5rc18uYXQoc3NyYykgIT0gbnVsbHB0cjsKLSAgfQorICAgICAgICAgICAg
ICAgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiogc2luaykgb3Zl
cnJpZGU7CisgIGJvb2wgSGFzU2luayh1aW50MzJfdCBzc3JjKSBjb25zdDsKIAotICBib29sIFNl
dFNlbmQoYm9vbCBzZW5kKSBvdmVycmlkZSB7IHJldHVybiBzZXRfc2VuZGluZyhzZW5kKTsgfQor
ICBib29sIFNldFNlbmQoYm9vbCBzZW5kKSBvdmVycmlkZTsKICAgYm9vbCBTZXRWaWRlb1NlbmQo
CiAgICAgICB1aW50MzJfdCBzc3JjLAogICAgICAgY29uc3QgVmlkZW9PcHRpb25zKiBvcHRpb25z
LAotICAgICAgcnRjOjpWaWRlb1NvdXJjZUludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KiBz
b3VyY2UpIG92ZXJyaWRlIHsKLSAgICBpZiAob3B0aW9ucykgewotICAgICAgaWYgKCFTZXRPcHRp
b25zKCpvcHRpb25zKSkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQot
ICAgIHNvdXJjZXNfW3NzcmNdID0gc291cmNlOwotICAgIHJldHVybiB0cnVlOwotICB9CisgICAg
ICBydGM6OlZpZGVvU291cmNlSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4qIHNvdXJjZSkg
b3ZlcnJpZGU7CiAKLSAgYm9vbCBIYXNTb3VyY2UodWludDMyX3Qgc3NyYykgY29uc3QgewotICAg
IHJldHVybiBzb3VyY2VzXy5maW5kKHNzcmMpICE9IHNvdXJjZXNfLmVuZCgpICYmCi0gICAgICAg
ICAgIHNvdXJjZXNfLmF0KHNzcmMpICE9IG51bGxwdHI7Ci0gIH0KLSAgYm9vbCBBZGRSZWN2U3Ry
ZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIG92ZXJyaWRlIHsKLSAgICBpZiAoIVJ0cEhlbHBl
cjxWaWRlb01lZGlhQ2hhbm5lbD46OkFkZFJlY3ZTdHJlYW0oc3ApKQotICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHNpbmtzX1tzcC5maXJzdF9zc3JjKCldID0gTlVMTDsKLSAgICByZXR1cm4gdHJ1
ZTsKLSAgfQotICBib29sIFJlbW92ZVJlY3ZTdHJlYW0odWludDMyX3Qgc3NyYykgb3ZlcnJpZGUg
ewotICAgIGlmICghUnRwSGVscGVyPFZpZGVvTWVkaWFDaGFubmVsPjo6UmVtb3ZlUmVjdlN0cmVh
bShzc3JjKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzaW5rc18uZXJhc2Uoc3NyYyk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAgYm9vbCBIYXNTb3VyY2UodWludDMyX3Qgc3NyYykgY29u
c3Q7CisgIGJvb2wgQWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSBvdmVycmlk
ZTsKKyAgYm9vbCBSZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMpIG92ZXJyaWRlOwogCi0g
IHZvaWQgRmlsbEJpdHJhdGVJbmZvKEJhbmR3aWR0aEVzdGltYXRpb25JbmZvKiBid2VfaW5mbykg
b3ZlcnJpZGUge30KLSAgYm9vbCBHZXRTdGF0cyhWaWRlb01lZGlhSW5mbyogaW5mbykgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgdm9pZCBGaWxsQml0cmF0ZUluZm8oQmFuZHdpZHRoRXN0
aW1hdGlvbkluZm8qIGJ3ZV9pbmZvKSBvdmVycmlkZTsKKyAgYm9vbCBHZXRTdGF0cyhWaWRlb01l
ZGlhSW5mbyogaW5mbykgb3ZlcnJpZGU7CiAKLSAgc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBTb3Vy
Y2U+IEdldFNvdXJjZXModWludDMyX3Qgc3NyYykgY29uc3Qgb3ZlcnJpZGUgewotICAgIHJldHVy
biB7fTsKLSAgfQorICBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlJ0cFNvdXJjZT4gR2V0U291cmNlcyh1
aW50MzJfdCBzc3JjKSBjb25zdCBvdmVycmlkZTsKIAogIHByaXZhdGU6Ci0gIGJvb2wgU2V0UmVj
dkNvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKSB7Ci0gICAgaWYg
KGZhaWxfc2V0X3JlY3ZfY29kZWNzKCkpIHsKLSAgICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4g
U2V0UmVjdkNvZGVjcy4KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmVjdl9jb2Rl
Y3NfID0gY29kZWNzOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIGJvb2wgU2V0U2VuZENvZGVj
cyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKSB7Ci0gICAgaWYgKGZhaWxf
c2V0X3NlbmRfY29kZWNzKCkpIHsKLSAgICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0U2Vu
ZENvZGVjcy4KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgc2VuZF9jb2RlY3NfID0g
Y29kZWNzOwotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgYm9vbCBTZXRPcHRpb25zKGNvbnN0
IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykgewotICAgIG9wdGlvbnNfID0gb3B0aW9uczsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLSAgfQotICBib29sIFNldE1heFNlbmRCYW5kd2lkdGgoaW50IGJwcykgewot
ICAgIG1heF9icHNfID0gYnBzOwotICAgIHJldHVybiB0cnVlOwotICB9CisgIGJvb2wgU2V0UmVj
dkNvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKTsKKyAgYm9vbCBT
ZXRTZW5kQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBjb2RlY3MpOworICBi
b29sIFNldE9wdGlvbnMoY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKTsKKyAgYm9vbCBTZXRN
YXhTZW5kQmFuZHdpZHRoKGludCBicHMpOwogCiAgIEZha2VWaWRlb0VuZ2luZSogZW5naW5lXzsK
ICAgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gcmVjdl9jb2RlY3NfOwpAQCAtNjUyLDc4ICs0NTgs
MzMgQEAgY2xhc3MgRGF0YU9wdGlvbnMge307CiAKIGNsYXNzIEZha2VEYXRhTWVkaWFDaGFubmVs
IDogcHVibGljIFJ0cEhlbHBlcjxEYXRhTWVkaWFDaGFubmVsPiB7CiAgcHVibGljOgotICBleHBs
aWNpdCBGYWtlRGF0YU1lZGlhQ2hhbm5lbCh2b2lkKiB1bnVzZWQsIGNvbnN0IERhdGFPcHRpb25z
JiBvcHRpb25zKQotICAgICAgOiBzZW5kX2Jsb2NrZWRfKGZhbHNlKSwgbWF4X2Jwc18oLTEpIHt9
Ci0gIH5GYWtlRGF0YU1lZGlhQ2hhbm5lbCgpIHt9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFD
b2RlYz4mIHJlY3ZfY29kZWNzKCkgY29uc3QgeyByZXR1cm4gcmVjdl9jb2RlY3NfOyB9Ci0gIGNv
bnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIHNlbmRfY29kZWNzKCkgY29uc3QgeyByZXR1cm4g
c2VuZF9jb2RlY3NfOyB9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGNvZGVjcygp
IGNvbnN0IHsgcmV0dXJuIHNlbmRfY29kZWNzKCk7IH0KLSAgaW50IG1heF9icHMoKSBjb25zdCB7
IHJldHVybiBtYXhfYnBzXzsgfQotCi0gIHZpcnR1YWwgYm9vbCBTZXRTZW5kUGFyYW1ldGVycyhj
b25zdCBEYXRhU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgewotICAgIHNldF9zZW5kX3J0Y3BfcGFy
YW1ldGVycyhwYXJhbXMucnRjcCk7Ci0gICAgcmV0dXJuIChTZXRTZW5kQ29kZWNzKHBhcmFtcy5j
b2RlY3MpICYmCi0gICAgICAgICAgICBTZXRNYXhTZW5kQmFuZHdpZHRoKHBhcmFtcy5tYXhfYmFu
ZHdpZHRoX2JwcykpOwotICB9Ci0gIHZpcnR1YWwgYm9vbCBTZXRSZWN2UGFyYW1ldGVycyhjb25z
dCBEYXRhUmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgewotICAgIHNldF9yZWN2X3J0Y3BfcGFyYW1l
dGVycyhwYXJhbXMucnRjcCk7Ci0gICAgcmV0dXJuIFNldFJlY3ZDb2RlY3MocGFyYW1zLmNvZGVj
cyk7Ci0gIH0KLSAgdmlydHVhbCBib29sIFNldFNlbmQoYm9vbCBzZW5kKSB7IHJldHVybiBzZXRf
c2VuZGluZyhzZW5kKTsgfQotICB2aXJ0dWFsIGJvb2wgU2V0UmVjZWl2ZShib29sIHJlY2VpdmUp
IHsKLSAgICBzZXRfcGxheW91dChyZWNlaXZlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICB2
aXJ0dWFsIGJvb2wgQWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSB7Ci0gICAg
aWYgKCFSdHBIZWxwZXI8RGF0YU1lZGlhQ2hhbm5lbD46OkFkZFJlY3ZTdHJlYW0oc3ApKQotICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIHZpcnR1YWwgYm9vbCBS
ZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMpIHsKLSAgICBpZiAoIVJ0cEhlbHBlcjxEYXRh
TWVkaWFDaGFubmVsPjo6UmVtb3ZlUmVjdlN0cmVhbShzc3JjKSkKLSAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHZpcnR1YWwgYm9vbCBTZW5kRGF0YShjb25z
dCBTZW5kRGF0YVBhcmFtcyYgcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgcGF5bG9hZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFNlbmREYXRhUmVzdWx0KiByZXN1bHQpIHsKLSAgICBpZiAoc2VuZF9ibG9ja2VkXykgewotICAg
ICAgKnJlc3VsdCA9IFNEUl9CTE9DSzsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVsc2Ug
ewotICAgICAgbGFzdF9zZW50X2RhdGFfcGFyYW1zXyA9IHBhcmFtczsKLSAgICAgIGxhc3Rfc2Vu
dF9kYXRhXyA9IHN0ZDo6c3RyaW5nKHBheWxvYWQuZGF0YTxjaGFyPigpLCBwYXlsb2FkLnNpemUo
KSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0KLQotICBTZW5kRGF0YVBhcmFtcyBs
YXN0X3NlbnRfZGF0YV9wYXJhbXMoKSB7IHJldHVybiBsYXN0X3NlbnRfZGF0YV9wYXJhbXNfOyB9
Ci0gIHN0ZDo6c3RyaW5nIGxhc3Rfc2VudF9kYXRhKCkgeyByZXR1cm4gbGFzdF9zZW50X2RhdGFf
OyB9Ci0gIGJvb2wgaXNfc2VuZF9ibG9ja2VkKCkgeyByZXR1cm4gc2VuZF9ibG9ja2VkXzsgfQot
ICB2b2lkIHNldF9zZW5kX2Jsb2NrZWQoYm9vbCBibG9ja2VkKSB7IHNlbmRfYmxvY2tlZF8gPSBi
bG9ja2VkOyB9CisgIGV4cGxpY2l0IEZha2VEYXRhTWVkaWFDaGFubmVsKHZvaWQqIHVudXNlZCwg
Y29uc3QgRGF0YU9wdGlvbnMmIG9wdGlvbnMpOworICB+RmFrZURhdGFNZWRpYUNoYW5uZWwoKTsK
KyAgY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgcmVjdl9jb2RlY3MoKSBjb25zdDsKKyAg
Y29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgc2VuZF9jb2RlY3MoKSBjb25zdDsKKyAgY29u
c3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgY29kZWNzKCkgY29uc3Q7CisgIGludCBtYXhfYnBz
KCkgY29uc3Q7CisKKyAgYm9vbCBTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBEYXRhU2VuZFBhcmFt
ZXRlcnMmIHBhcmFtcykgb3ZlcnJpZGU7CisgIGJvb2wgU2V0UmVjdlBhcmFtZXRlcnMoY29uc3Qg
RGF0YVJlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIG92ZXJyaWRlOworICBib29sIFNldFNlbmQoYm9v
bCBzZW5kKSBvdmVycmlkZTsKKyAgYm9vbCBTZXRSZWNlaXZlKGJvb2wgcmVjZWl2ZSkgb3ZlcnJp
ZGU7CisgIGJvb2wgQWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSBvdmVycmlk
ZTsKKyAgYm9vbCBSZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMpIG92ZXJyaWRlOworCisg
IGJvb2wgU2VuZERhdGEoY29uc3QgU2VuZERhdGFQYXJhbXMmIHBhcmFtcywKKyAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBwYXlsb2FkLAorICAgICAgICAgICAg
ICAgIFNlbmREYXRhUmVzdWx0KiByZXN1bHQpIG92ZXJyaWRlOworCisgIFNlbmREYXRhUGFyYW1z
IGxhc3Rfc2VudF9kYXRhX3BhcmFtcygpOworICBzdGQ6OnN0cmluZyBsYXN0X3NlbnRfZGF0YSgp
OworICBib29sIGlzX3NlbmRfYmxvY2tlZCgpOworICB2b2lkIHNldF9zZW5kX2Jsb2NrZWQoYm9v
bCBibG9ja2VkKTsKIAogIHByaXZhdGU6Ci0gIGJvb2wgU2V0UmVjdkNvZGVjcyhjb25zdCBzdGQ6
OnZlY3RvcjxEYXRhQ29kZWM+JiBjb2RlY3MpIHsKLSAgICBpZiAoZmFpbF9zZXRfcmVjdl9jb2Rl
Y3MoKSkgewotICAgICAgLy8gRmFrZSB0aGUgZmFpbHVyZSBpbiBTZXRSZWN2Q29kZWNzLgotICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZWN2X2NvZGVjc18gPSBjb2RlY3M7Ci0gICAg
cmV0dXJuIHRydWU7Ci0gIH0KLSAgYm9vbCBTZXRTZW5kQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9y
PERhdGFDb2RlYz4mIGNvZGVjcykgewotICAgIGlmIChmYWlsX3NldF9zZW5kX2NvZGVjcygpKSB7
Ci0gICAgICAvLyBGYWtlIHRoZSBmYWlsdXJlIGluIFNldFNlbmRDb2RlY3MuCi0gICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIHNlbmRfY29kZWNzXyA9IGNvZGVjczsKLSAgICByZXR1cm4g
dHJ1ZTsKLSAgfQotICBib29sIFNldE1heFNlbmRCYW5kd2lkdGgoaW50IGJwcykgewotICAgIG1h
eF9icHNfID0gYnBzOwotICAgIHJldHVybiB0cnVlOwotICB9CisgIGJvb2wgU2V0UmVjdkNvZGVj
cyhjb25zdCBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+JiBjb2RlY3MpOworICBib29sIFNldFNlbmRD
b2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgY29kZWNzKTsKKyAgYm9vbCBTZXRN
YXhTZW5kQmFuZHdpZHRoKGludCBicHMpOwogCiAgIHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4gcmVj
dl9jb2RlY3NfOwogICBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+IHNlbmRfY29kZWNzXzsKQEAgLTcz
MywyMzMgKzQ5NCw5OCBAQCBjbGFzcyBGYWtlRGF0YU1lZGlhQ2hhbm5lbCA6IHB1YmxpYyBSdHBI
ZWxwZXI8RGF0YU1lZGlhQ2hhbm5lbD4gewogICBpbnQgbWF4X2Jwc187CiB9OwogCi0vLyBBIGJh
c2UgY2xhc3MgZm9yIGFsbCBvZiB0aGUgc2hhcmVkIHBhcnRzIGJldHdlZW4gRmFrZVZvaWNlRW5n
aW5lCi0vLyBhbmQgRmFrZVZpZGVvRW5naW5lLgotY2xhc3MgRmFrZUJhc2VFbmdpbmUgewotIHB1
YmxpYzoKLSAgRmFrZUJhc2VFbmdpbmUoKSA6IG9wdGlvbnNfY2hhbmdlZF8oZmFsc2UpLCBmYWls
X2NyZWF0ZV9jaGFubmVsXyhmYWxzZSkge30KLSAgdm9pZCBzZXRfZmFpbF9jcmVhdGVfY2hhbm5l
bChib29sIGZhaWwpIHsgZmFpbF9jcmVhdGVfY2hhbm5lbF8gPSBmYWlsOyB9Ci0KLSAgUnRwQ2Fw
YWJpbGl0aWVzIEdldENhcGFiaWxpdGllcygpIGNvbnN0IHsgcmV0dXJuIGNhcGFiaWxpdGllc187
IH0KLSAgdm9pZCBzZXRfcnRwX2hlYWRlcl9leHRlbnNpb25zKGNvbnN0IHN0ZDo6dmVjdG9yPFJ0
cEV4dGVuc2lvbj4mIGV4dGVuc2lvbnMpIHsKLSAgICBjYXBhYmlsaXRpZXNfLmhlYWRlcl9leHRl
bnNpb25zID0gZXh0ZW5zaW9uczsKLSAgfQotCi0gIHZvaWQgc2V0X3J0cF9oZWFkZXJfZXh0ZW5z
aW9ucygKLSAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OlJ0cEhlYWRlckV4dGVuc2lv
bj4mIGV4dGVuc2lvbnMpIHsKLSAgICBmb3IgKGNvbnN0IGNyaWNrZXQ6OlJ0cEhlYWRlckV4dGVu
c2lvbiYgZXh0IDogZXh0ZW5zaW9ucykgewotICAgICAgUnRwRXh0ZW5zaW9uIHdlYnJ0Y19leHQ7
Ci0gICAgICB3ZWJydGNfZXh0LnVyaSA9IGV4dC51cmk7Ci0gICAgICB3ZWJydGNfZXh0LmlkID0g
ZXh0LmlkOwotICAgICAgY2FwYWJpbGl0aWVzXy5oZWFkZXJfZXh0ZW5zaW9ucy5wdXNoX2JhY2so
d2VicnRjX2V4dCk7Ci0gICAgfQotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIEZsYWcgdXNlZCBi
eSBvcHRpb25zbWVzc2FnZWhhbmRsZXJfdW5pdHRlc3QgZm9yIGNoZWNraW5nIHdoZXRoZXIgYW55
Ci0gIC8vIHJlbGV2YW50IHNldHRpbmcgaGFzIGJlZW4gdXBkYXRlZC4KLSAgLy8gVE9ETyh0aGFs
b3VuKTogUmVwbGFjZSB3aXRoIGV4cGxpY2l0IGNoZWNrcyBvZiBiZWZvcmUgJiBhZnRlciB2YWx1
ZXMuCi0gIGJvb2wgb3B0aW9uc19jaGFuZ2VkXzsKLSAgYm9vbCBmYWlsX2NyZWF0ZV9jaGFubmVs
XzsKLSAgUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllc187Ci19OwotCi1jbGFzcyBGYWtlVm9p
Y2VFbmdpbmUgOiBwdWJsaWMgRmFrZUJhc2VFbmdpbmUgeworY2xhc3MgRmFrZVZvaWNlRW5naW5l
IDogcHVibGljIFZvaWNlRW5naW5lSW50ZXJmYWNlIHsKICBwdWJsaWM6Ci0gIEZha2VWb2ljZUVu
Z2luZSgpIHsKLSAgICAvLyBBZGQgYSBmYWtlIGF1ZGlvIGNvZGVjLiBOb3RlIHRoYXQgdGhlIG5h
bWUgbXVzdCBub3QgYmUgIiIgYXMgdGhlcmUgYXJlCi0gICAgLy8gc2FuaXR5IGNoZWNrcyBhZ2Fp
bnN0IHRoYXQuCi0gICAgY29kZWNzXy5wdXNoX2JhY2soQXVkaW9Db2RlYygxMDEsICJmYWtlX2F1
ZGlvX2NvZGVjIiwgMCwgMCwgMSkpOwotICB9Ci0gIHZvaWQgSW5pdCgpIHt9Ci0gIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+IEdldEF1ZGlvU3RhdGUoKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+KCk7Ci0gIH0K
LQotICBWb2ljZU1lZGlhQ2hhbm5lbCogQ3JlYXRlQ2hhbm5lbCh3ZWJydGM6OkNhbGwqIGNhbGws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBj
b25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0
aW9ucyYgb3B0aW9ucykgewotICAgIGlmIChmYWlsX2NyZWF0ZV9jaGFubmVsXykgewotICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgRmFrZVZvaWNlTWVkaWFDaGFubmVsKiBjaCA9
IG5ldyBGYWtlVm9pY2VNZWRpYUNoYW5uZWwodGhpcywgb3B0aW9ucyk7Ci0gICAgY2hhbm5lbHNf
LnB1c2hfYmFjayhjaCk7Ci0gICAgcmV0dXJuIGNoOwotICB9Ci0gIEZha2VWb2ljZU1lZGlhQ2hh
bm5lbCogR2V0Q2hhbm5lbChzaXplX3QgaW5kZXgpIHsKLSAgICByZXR1cm4gKGNoYW5uZWxzXy5z
aXplKCkgPiBpbmRleCkgPyBjaGFubmVsc19baW5kZXhdIDogTlVMTDsKLSAgfQotICB2b2lkIFVu
cmVnaXN0ZXJDaGFubmVsKFZvaWNlTWVkaWFDaGFubmVsKiBjaGFubmVsKSB7Ci0gICAgY2hhbm5l
bHNfLmVyYXNlKHN0ZDo6ZmluZChjaGFubmVsc18uYmVnaW4oKSwgY2hhbm5lbHNfLmVuZCgpLCBj
aGFubmVsKSk7Ci0gIH0KKyAgRmFrZVZvaWNlRW5naW5lKCk7CisgIFJ0cENhcGFiaWxpdGllcyBH
ZXRDYXBhYmlsaXRpZXMoKSBjb25zdCBvdmVycmlkZTsKKyAgdm9pZCBJbml0KCkgb3ZlcnJpZGU7
CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+IEdldEF1ZGlvU3RhdGUo
KSBjb25zdCBvdmVycmlkZTsKKworICBWb2ljZU1lZGlhQ2hhbm5lbCogQ3JlYXRlTWVkaWFDaGFu
bmVsKAorICAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAorICAgICAgY29uc3QgTWVkaWFDb25maWcm
IGNvbmZpZywKKyAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywKKyAgICAgIGNvbnN0
IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIG92ZXJyaWRlOworICBGYWtl
Vm9pY2VNZWRpYUNoYW5uZWwqIEdldENoYW5uZWwoc2l6ZV90IGluZGV4KTsKKyAgdm9pZCBVbnJl
Z2lzdGVyQ2hhbm5lbChWb2ljZU1lZGlhQ2hhbm5lbCogY2hhbm5lbCk7CiAKICAgLy8gVE9ETyhv
c3N1KTogRm9yIHByb3BlciB0ZXN0aW5nLCBUaGVzZSBzaG91bGQgZWl0aGVyIGluZGl2aWR1YWxs
eSBzZXR0YWJsZQogICAvLyAgICAgICAgICAgICBvciB0aGUgdm9pY2UgZW5naW5lIHNob3VsZCBy
ZWZlcmVuY2UgbW9ja2FibGUgZmFjdG9yaWVzLgotICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0Nv
ZGVjPiYgc2VuZF9jb2RlY3MoKSB7IHJldHVybiBjb2RlY3NfOyB9Ci0gIGNvbnN0IHN0ZDo6dmVj
dG9yPEF1ZGlvQ29kZWM+JiByZWN2X2NvZGVjcygpIHsgcmV0dXJuIGNvZGVjc187IH0KLSAgdm9p
ZCBTZXRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGNvZGVjcykgeyBjb2Rl
Y3NfID0gY29kZWNzOyB9Ci0KLSAgaW50IEdldElucHV0TGV2ZWwoKSB7IHJldHVybiAwOyB9Ci0K
LSAgYm9vbCBTdGFydEFlY0R1bXAocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwgaW50NjRfdCBtYXhf
c2l6ZV9ieXRlcykgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHZvaWQgU3RvcEFlY0R1
bXAoKSB7fQotCi0gIGJvb2wgU3RhcnRSdGNFdmVudExvZyhydGM6OlBsYXRmb3JtRmlsZSBmaWxl
LCBpbnQ2NF90IG1heF9zaXplX2J5dGVzKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAg
dm9pZCBTdG9wUnRjRXZlbnRMb2coKSB7fQorICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVj
PiYgc2VuZF9jb2RlY3MoKSBjb25zdCBvdmVycmlkZTsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVk
aW9Db2RlYz4mIHJlY3ZfY29kZWNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIHZvaWQgU2V0Q29kZWNz
KGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MpOworICBpbnQgR2V0SW5wdXRM
ZXZlbCgpOworICBib29sIFN0YXJ0QWVjRHVtcChydGM6OlBsYXRmb3JtRmlsZSBmaWxlLCBpbnQ2
NF90IG1heF9zaXplX2J5dGVzKSBvdmVycmlkZTsKKyAgdm9pZCBTdG9wQWVjRHVtcCgpIG92ZXJy
aWRlOworICBib29sIFN0YXJ0UnRjRXZlbnRMb2cocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwgaW50
NjRfdCBtYXhfc2l6ZV9ieXRlcyk7CisgIHZvaWQgU3RvcFJ0Y0V2ZW50TG9nKCk7CiAKICBwcml2
YXRlOgogICBzdGQ6OnZlY3RvcjxGYWtlVm9pY2VNZWRpYUNoYW5uZWwqPiBjaGFubmVsc187CiAg
IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+IGNvZGVjc187CisgIGJvb2wgZmFpbF9jcmVhdGVfY2hh
bm5lbF87CiAKICAgZnJpZW5kIGNsYXNzIEZha2VNZWRpYUVuZ2luZTsKIH07CiAKLWNsYXNzIEZh
a2VWaWRlb0VuZ2luZSA6IHB1YmxpYyBGYWtlQmFzZUVuZ2luZSB7CitjbGFzcyBGYWtlVmlkZW9F
bmdpbmUgOiBwdWJsaWMgVmlkZW9FbmdpbmVJbnRlcmZhY2UgewogIHB1YmxpYzoKLSAgRmFrZVZp
ZGVvRW5naW5lKCkgOiBjYXB0dXJlXyhmYWxzZSkgewotICAgIC8vIEFkZCBhIGZha2UgdmlkZW8g
Y29kZWMuIE5vdGUgdGhhdCB0aGUgbmFtZSBtdXN0IG5vdCBiZSAiIiBhcyB0aGVyZSBhcmUKLSAg
ICAvLyBzYW5pdHkgY2hlY2tzIGFnYWluc3QgdGhhdC4KLSAgICBjb2RlY3NfLnB1c2hfYmFjayhW
aWRlb0NvZGVjKDAsICJmYWtlX3ZpZGVvX2NvZGVjIikpOwotICB9Ci0KLSAgYm9vbCBTZXRPcHRp
b25zKGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykgewotICAgIG9wdGlvbnNfID0gb3B0aW9u
czsKLSAgICBvcHRpb25zX2NoYW5nZWRfID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQot
Ci0gIFZpZGVvTWVkaWFDaGFubmVsKiBDcmVhdGVDaGFubmVsKHdlYnJ0Yzo6Q2FsbCogY2FsbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNv
bmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmlkZW9PcHRp
b25zJiBvcHRpb25zKSB7Ci0gICAgaWYgKGZhaWxfY3JlYXRlX2NoYW5uZWxfKSB7Ci0gICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBGYWtlVmlkZW9NZWRpYUNoYW5uZWwqIGNoID0g
bmV3IEZha2VWaWRlb01lZGlhQ2hhbm5lbCh0aGlzLCBvcHRpb25zKTsKLSAgICBjaGFubmVsc18u
ZW1wbGFjZV9iYWNrKGNoKTsKLSAgICByZXR1cm4gY2g7Ci0gIH0KLQotICBGYWtlVmlkZW9NZWRp
YUNoYW5uZWwqIEdldENoYW5uZWwoc2l6ZV90IGluZGV4KSB7Ci0gICAgcmV0dXJuIChjaGFubmVs
c18uc2l6ZSgpID4gaW5kZXgpID8gY2hhbm5lbHNfW2luZGV4XSA6IG51bGxwdHI7Ci0gIH0KLQot
ICB2b2lkIFVucmVnaXN0ZXJDaGFubmVsKFZpZGVvTWVkaWFDaGFubmVsKiBjaGFubmVsKSB7Ci0g
ICAgYXV0byBpdCA9IHN0ZDo6ZmluZChjaGFubmVsc18uYmVnaW4oKSwgY2hhbm5lbHNfLmVuZCgp
LCBjaGFubmVsKTsKLSAgICBSVENfRENIRUNLKGl0ICE9IGNoYW5uZWxzXy5lbmQoKSk7Ci0gICAg
Y2hhbm5lbHNfLmVyYXNlKGl0KTsKLSAgfQotCi0gIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29k
ZWM+JiBjb2RlY3MoKSBjb25zdCB7IHJldHVybiBjb2RlY3NfOyB9Ci0KLSAgdm9pZCBTZXRDb2Rl
Y3MoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNzKSB7IGNvZGVjc18gPSBjb2Rl
Y3M7IH0KLQotICBib29sIFNldENhcHR1cmUoYm9vbCBjYXB0dXJlKSB7Ci0gICAgY2FwdHVyZV8g
PSBjYXB0dXJlOwotICAgIHJldHVybiB0cnVlOwotICB9CisgIEZha2VWaWRlb0VuZ2luZSgpOwor
ICBSdHBDYXBhYmlsaXRpZXMgR2V0Q2FwYWJpbGl0aWVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIGJv
b2wgU2V0T3B0aW9ucyhjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpOworICBWaWRlb01lZGlh
Q2hhbm5lbCogQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAor
ICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKKyAgICAgIGNvbnN0IFZpZGVvT3B0aW9u
cyYgb3B0aW9ucywKKyAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29w
dGlvbnMpIG92ZXJyaWRlOworICBGYWtlVmlkZW9NZWRpYUNoYW5uZWwqIEdldENoYW5uZWwoc2l6
ZV90IGluZGV4KTsKKyAgdm9pZCBVbnJlZ2lzdGVyQ2hhbm5lbChWaWRlb01lZGlhQ2hhbm5lbCog
Y2hhbm5lbCk7CisgIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IGNvZGVjcygpIGNvbnN0IG92ZXJy
aWRlOworICB2b2lkIFNldENvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiBjb2Rl
Y3MpOworICBib29sIFNldENhcHR1cmUoYm9vbCBjYXB0dXJlKTsKIAogIHByaXZhdGU6CiAgIHN0
ZDo6dmVjdG9yPEZha2VWaWRlb01lZGlhQ2hhbm5lbCo+IGNoYW5uZWxzXzsKICAgc3RkOjp2ZWN0
b3I8VmlkZW9Db2RlYz4gY29kZWNzXzsKICAgYm9vbCBjYXB0dXJlXzsKICAgVmlkZW9PcHRpb25z
IG9wdGlvbnNfOworICBib29sIGZhaWxfY3JlYXRlX2NoYW5uZWxfOwogCiAgIGZyaWVuZCBjbGFz
cyBGYWtlTWVkaWFFbmdpbmU7CiB9OwogCi1jbGFzcyBGYWtlTWVkaWFFbmdpbmUKLSAgICA6IHB1
YmxpYyBDb21wb3NpdGVNZWRpYUVuZ2luZTxGYWtlVm9pY2VFbmdpbmUsIEZha2VWaWRlb0VuZ2lu
ZT4geworY2xhc3MgRmFrZU1lZGlhRW5naW5lIDogcHVibGljIENvbXBvc2l0ZU1lZGlhRW5naW5l
IHsKICBwdWJsaWM6Ci0gIEZha2VNZWRpYUVuZ2luZSgpCi0gICAgICA6IENvbXBvc2l0ZU1lZGlh
RW5naW5lPEZha2VWb2ljZUVuZ2luZSwgRmFrZVZpZGVvRW5naW5lPihzdGQ6OnR1cGxlPD4oKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dHVwbGU8PigpKSB7Ci0gIH0KKyAgRmFrZU1lZGlhRW5naW5lKCk7CiAKLSAg
dmlydHVhbCB+RmFrZU1lZGlhRW5naW5lKCkge30KKyAgfkZha2VNZWRpYUVuZ2luZSgpIG92ZXJy
aWRlOwogCi0gIHZvaWQgU2V0QXVkaW9Db2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2Rl
Yz4mIGNvZGVjcykgewotICAgIHZvaWNlKCkuU2V0Q29kZWNzKGNvZGVjcyk7Ci0gIH0KLSAgdm9p
ZCBTZXRWaWRlb0NvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKSB7
Ci0gICAgdmlkZW8oKS5TZXRDb2RlY3MoY29kZWNzKTsKLSAgfQorICB2b2lkIFNldEF1ZGlvQ29k
ZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MpOworICB2b2lkIFNldFZp
ZGVvQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBjb2RlY3MpOwogCi0gIHZv
aWQgU2V0QXVkaW9SdHBIZWFkZXJFeHRlbnNpb25zKAotICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
UnRwRXh0ZW5zaW9uPiYgZXh0ZW5zaW9ucykgewotICAgIHZvaWNlKCkuc2V0X3J0cF9oZWFkZXJf
ZXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKLSAgfQotICB2b2lkIFNldFZpZGVvUnRwSGVhZGVyRXh0
ZW5zaW9ucygKLSAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFJ0cEV4dGVuc2lvbj4mIGV4dGVuc2lv
bnMpIHsKLSAgICB2aWRlbygpLnNldF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7
Ci0gIH0KKyAgRmFrZVZvaWNlTWVkaWFDaGFubmVsKiBHZXRWb2ljZUNoYW5uZWwoc2l6ZV90IGlu
ZGV4KTsKKyAgRmFrZVZpZGVvTWVkaWFDaGFubmVsKiBHZXRWaWRlb0NoYW5uZWwoc2l6ZV90IGlu
ZGV4KTsKIAotICB2b2lkIFNldEF1ZGlvUnRwSGVhZGVyRXh0ZW5zaW9ucygKLSAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OlJ0cEhlYWRlckV4dGVuc2lvbj4mIGV4dGVuc2lvbnMpIHsK
LSAgICB2b2ljZSgpLnNldF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7Ci0gIH0K
LSAgdm9pZCBTZXRWaWRlb1J0cEhlYWRlckV4dGVuc2lvbnMoCi0gICAgICBjb25zdCBzdGQ6OnZl
Y3Rvcjxjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb24+JiBleHRlbnNpb25zKSB7Ci0gICAgdmlk
ZW8oKS5zZXRfcnRwX2hlYWRlcl9leHRlbnNpb25zKGV4dGVuc2lvbnMpOwotICB9CisgIHZvaWQg
c2V0X2ZhaWxfY3JlYXRlX2NoYW5uZWwoYm9vbCBmYWlsKTsKIAotICBGYWtlVm9pY2VNZWRpYUNo
YW5uZWwqIEdldFZvaWNlQ2hhbm5lbChzaXplX3QgaW5kZXgpIHsKLSAgICByZXR1cm4gdm9pY2Uo
KS5HZXRDaGFubmVsKGluZGV4KTsKLSAgfQotICBGYWtlVmlkZW9NZWRpYUNoYW5uZWwqIEdldFZp
ZGVvQ2hhbm5lbChzaXplX3QgaW5kZXgpIHsKLSAgICByZXR1cm4gdmlkZW8oKS5HZXRDaGFubmVs
KGluZGV4KTsKLSAgfQotCi0gIGJvb2wgY2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIHZpZGVvKCku
Y2FwdHVyZV87IH0KLSAgYm9vbCBvcHRpb25zX2NoYW5nZWQoKSBjb25zdCB7IHJldHVybiB2aWRl
bygpLm9wdGlvbnNfY2hhbmdlZF87IH0KLSAgdm9pZCBjbGVhcl9vcHRpb25zX2NoYW5nZWQoKSB7
IHZpZGVvKCkub3B0aW9uc19jaGFuZ2VkXyA9IGZhbHNlOyB9Ci0gIHZvaWQgc2V0X2ZhaWxfY3Jl
YXRlX2NoYW5uZWwoYm9vbCBmYWlsKSB7Ci0gICAgdm9pY2UoKS5zZXRfZmFpbF9jcmVhdGVfY2hh
bm5lbChmYWlsKTsKLSAgICB2aWRlbygpLnNldF9mYWlsX2NyZWF0ZV9jaGFubmVsKGZhaWwpOwot
ICB9CisgcHJpdmF0ZToKKyAgRmFrZVZvaWNlRW5naW5lKiBjb25zdCB2b2ljZV87CisgIEZha2VW
aWRlb0VuZ2luZSogY29uc3QgdmlkZW9fOwogfTsKIAogLy8gSGF2ZSB0byBjb21lIGFmdGVyd2Fy
ZHMgZHVlIHRvIGRlY2xhcmF0aW9uIG9yZGVyCi1pbmxpbmUgRmFrZVZvaWNlTWVkaWFDaGFubmVs
Ojp+RmFrZVZvaWNlTWVkaWFDaGFubmVsKCkgewotICBpZiAoZW5naW5lXykgewotICAgIGVuZ2lu
ZV8tPlVucmVnaXN0ZXJDaGFubmVsKHRoaXMpOwotICB9Ci19Ci0KLWlubGluZSBGYWtlVmlkZW9N
ZWRpYUNoYW5uZWw6On5GYWtlVmlkZW9NZWRpYUNoYW5uZWwoKSB7Ci0gIGlmIChlbmdpbmVfKSB7
Ci0gICAgZW5naW5lXy0+VW5yZWdpc3RlckNoYW5uZWwodGhpcyk7Ci0gIH0KLX0KIAogY2xhc3Mg
RmFrZURhdGFFbmdpbmUgOiBwdWJsaWMgRGF0YUVuZ2luZUludGVyZmFjZSB7CiAgcHVibGljOgot
ICB2aXJ0dWFsIERhdGFNZWRpYUNoYW5uZWwqIENyZWF0ZUNoYW5uZWwoY29uc3QgTWVkaWFDb25m
aWcmIGNvbmZpZykgewotICAgIEZha2VEYXRhTWVkaWFDaGFubmVsKiBjaCA9IG5ldyBGYWtlRGF0
YU1lZGlhQ2hhbm5lbCh0aGlzLCBEYXRhT3B0aW9ucygpKTsKLSAgICBjaGFubmVsc18ucHVzaF9i
YWNrKGNoKTsKLSAgICByZXR1cm4gY2g7Ci0gIH0KKyAgRGF0YU1lZGlhQ2hhbm5lbCogQ3JlYXRl
Q2hhbm5lbChjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnKSBvdmVycmlkZTsKIAotICBGYWtlRGF0
YU1lZGlhQ2hhbm5lbCogR2V0Q2hhbm5lbChzaXplX3QgaW5kZXgpIHsKLSAgICByZXR1cm4gKGNo
YW5uZWxzXy5zaXplKCkgPiBpbmRleCkgPyBjaGFubmVsc19baW5kZXhdIDogTlVMTDsKLSAgfQor
ICBGYWtlRGF0YU1lZGlhQ2hhbm5lbCogR2V0Q2hhbm5lbChzaXplX3QgaW5kZXgpOwogCi0gIHZv
aWQgVW5yZWdpc3RlckNoYW5uZWwoRGF0YU1lZGlhQ2hhbm5lbCogY2hhbm5lbCkgewotICAgIGNo
YW5uZWxzXy5lcmFzZShzdGQ6OmZpbmQoY2hhbm5lbHNfLmJlZ2luKCksIGNoYW5uZWxzXy5lbmQo
KSwgY2hhbm5lbCkpOwotICB9CisgIHZvaWQgVW5yZWdpc3RlckNoYW5uZWwoRGF0YU1lZGlhQ2hh
bm5lbCogY2hhbm5lbCk7CiAKLSAgdmlydHVhbCB2b2lkIFNldERhdGFDb2RlY3MoY29uc3Qgc3Rk
Ojp2ZWN0b3I8RGF0YUNvZGVjPiYgZGF0YV9jb2RlY3MpIHsKLSAgICBkYXRhX2NvZGVjc18gPSBk
YXRhX2NvZGVjczsKLSAgfQorICB2b2lkIFNldERhdGFDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8
RGF0YUNvZGVjPiYgZGF0YV9jb2RlY3MpOwogCi0gIHZpcnR1YWwgY29uc3Qgc3RkOjp2ZWN0b3I8
RGF0YUNvZGVjPiYgZGF0YV9jb2RlY3MoKSB7IHJldHVybiBkYXRhX2NvZGVjc187IH0KKyAgY29u
c3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgZGF0YV9jb2RlY3MoKSBvdmVycmlkZTsKIAogIHBy
aXZhdGU6CiAgIHN0ZDo6dmVjdG9yPEZha2VEYXRhTWVkaWFDaGFubmVsKj4gY2hhbm5lbHNfOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS9mYWtlbmV0d29ya2ludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtlbmV0d29ya2ludGVyZmFjZS5oCmluZGV4
IDBmMTQ2NTljNDYwNmM5ZGY2YTc2MGU2ZWUzMzgzYjJmOTdhYzlhNTkuLmRmZDM0MDc3MmI2OTMz
OTJiMTVkMzU0NGI3YzRjNmQxZDIyZmNlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZW5ldHdvcmtpbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9i
YXNlL2Zha2VuZXR3b3JraW50ZXJmYWNlLmgKQEAgLTE2OSw5ICsxNjksOSBAQCBjbGFzcyBGYWtl
TmV0d29ya0ludGVyZmFjZSA6IHB1YmxpYyBNZWRpYUNoYW5uZWw6Ok5ldHdvcmtJbnRlcmZhY2Us
CiAgICAgICAgIHN0YXRpY19jYXN0PHJ0Yzo6VHlwZWRNZXNzYWdlRGF0YTxydGM6OkNvcHlPbldy
aXRlQnVmZmVyPio+KG1zZy0+cGRhdGEpOwogICAgIGlmIChkZXN0XykgewogICAgICAgaWYgKG1z
Zy0+bWVzc2FnZV9pZCA9PSBTVF9SVFApIHsKLSAgICAgICAgZGVzdF8tPk9uUGFja2V0UmVjZWl2
ZWQoJm1zZ19kYXRhLT5kYXRhKCksIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7CisgICAgICAg
IGRlc3RfLT5PblBhY2tldFJlY2VpdmVkKCZtc2dfZGF0YS0+ZGF0YSgpLCBydGM6OlRpbWVNaWNy
b3MoKSk7CiAgICAgICB9IGVsc2UgewotICAgICAgICBkZXN0Xy0+T25SdGNwUmVjZWl2ZWQoJm1z
Z19kYXRhLT5kYXRhKCksIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7CisgICAgICAgIGRlc3Rf
LT5PblJ0Y3BSZWNlaXZlZCgmbXNnX2RhdGEtPmRhdGEoKSwgcnRjOjpUaW1lTWljcm9zKCkpOwog
ICAgICAgfQogICAgIH0KICAgICBkZWxldGUgbXNnX2RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2Zha2V2aWRlb2Nh
cHR1cmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS9mYWtldmlkZW9jYXB0dXJlci5jYwppbmRleCA5NDkwMGJhMzdiNmE1NGIwMGZhNjI2
N2I2OWRiZWI1MjM4MzE4NDU3Li5iNWQwMTg5NjA4YTkyMzUyYjhlZDQ1MGViM2U2NzUyODAzMmZm
Y2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9iYXNlL2Zha2V2aWRlb2NhcHR1cmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZXZpZGVvY2FwdHVyZXIuY2MK
QEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2V2aWRlb2NhcHR1cmVy
LmgiCiAKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewogCkBAIC05NSw3ICs5Niw3IEBA
IGNyaWNrZXQ6OkNhcHR1cmVTdGF0ZSBGYWtlVmlkZW9DYXB0dXJlcjo6U3RhcnQoCiAgIFNldENh
cHR1cmVTdGF0ZShjcmlja2V0OjpDU19SVU5OSU5HKTsKICAgZnJhbWVfc291cmNlXyA9IGFic2w6
Om1ha2VfdW5pcXVlPEZha2VGcmFtZVNvdXJjZT4oCiAgICAgICBmb3JtYXQud2lkdGgsIGZvcm1h
dC5oZWlnaHQsCi0gICAgICBmb3JtYXQuaW50ZXJ2YWwgLyBydGM6OmtOdW1OYW5vc2Vjc1Blck1p
Y3Jvc2VjKTsKKyAgICAgIGZvcm1hdC5pbnRlcnZhbCAvIHJ0Yzo6a051bU5hbm9zZWNzUGVyTWlj
cm9zZWMsIHJ0Yzo6VGltZU1pY3JvcygpKTsKICAgZnJhbWVfc291cmNlXy0+U2V0Um90YXRpb24o
cm90YXRpb25fKTsKICAgcmV0dXJuIGNyaWNrZXQ6OkNTX1JVTk5JTkc7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2gy
NjRfcHJvZmlsZV9sZXZlbF9pZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2ZWxfaWQuaAppbmRleCBiNGZmODgz
NjljNjE0ODlmNGY4NTFiOTVjNTQ2YzI3MWE5YzBmZGY4Li42YTNlN2NkYjMyMTk2NmY2OTNiZjgz
ZmI5MGE2MWE5NGM0NzM5Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2gyNjRfcHJvZmlsZV9sZXZlbF9pZC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvaDI2
NF9wcm9maWxlX2xldmVsX2lkLmgKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChi
dWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIEgyNjQgewpAQCAtNjEsMTggKzYyLDE5IEBA
IGFic2w6Om9wdGlvbmFsPFByb2ZpbGVMZXZlbElkPiBQYXJzZVByb2ZpbGVMZXZlbElkKGNvbnN0
IGNoYXIqIHN0cik7CiAvLyBjb250YWluZWQgaW4gYW4gU0RQIGtleS12YWx1ZSBtYXAuIEEgZGVm
YXVsdCBwcm9maWxlIGxldmVsIGlkIHdpbGwgYmUKIC8vIHJldHVybmVkIGlmIHRoZSBwcm9maWxl
LWxldmVsLWlkIGtleSBpcyBtaXNzaW5nLiBOb3RoaW5nIHdpbGwgYmUgcmV0dXJuZWQgaWYKIC8v
IHRoZSBrZXkgaXMgcHJlc2VudCBidXQgdGhlIHN0cmluZyBpcyBpbnZhbGlkLgotYWJzbDo6b3B0
aW9uYWw8UHJvZmlsZUxldmVsSWQ+IFBhcnNlU2RwUHJvZmlsZUxldmVsSWQoCitSVENfRVhQT1JU
IGFic2w6Om9wdGlvbmFsPFByb2ZpbGVMZXZlbElkPiBQYXJzZVNkcFByb2ZpbGVMZXZlbElkKAog
ICAgIGNvbnN0IENvZGVjUGFyYW1ldGVyTWFwJiBwYXJhbXMpOwogCiAvLyBHaXZlbiB0aGF0IGEg
ZGVjb2RlciBzdXBwb3J0cyB1cCB0byBhIGdpdmVuIGZyYW1lIHNpemUgKGluIHBpeGVscykgYXQg
dXAgdG8gYQogLy8gZ2l2ZW4gbnVtYmVyIG9mIGZyYW1lcyBwZXIgc2Vjb25kLCByZXR1cm4gdGhl
IGhpZ2hlc3QgSC4yNjQgbGV2ZWwgd2hlcmUgaXQKIC8vIGNhbiBndWFyYW50ZWUgdGhhdCBpdCB3
aWxsIGJlIGFibGUgdG8gc3VwcG9ydCBhbGwgdmFsaWQgZW5jb2RlZCBzdHJlYW1zIHRoYXQKIC8v
IGFyZSB3aXRoaW4gdGhhdCBsZXZlbC4KLWFic2w6Om9wdGlvbmFsPExldmVsPiBTdXBwb3J0ZWRM
ZXZlbChpbnQgbWF4X2ZyYW1lX3BpeGVsX2NvdW50LCBmbG9hdCBtYXhfZnBzKTsKK1JUQ19FWFBP
UlQgYWJzbDo6b3B0aW9uYWw8TGV2ZWw+IFN1cHBvcnRlZExldmVsKGludCBtYXhfZnJhbWVfcGl4
ZWxfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBtYXhfZnBzKTsKIAogLy8gUmV0dXJucyBjYW5vbmljYWwgc3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIGFzIHRocmVlIGhleCBieXRlcyBvZiB0aGUgcHJvZmlsZQogLy8gbGV2ZWwgaWQsIG9y
IHJldHVybnMgbm90aGluZyBmb3IgaW52YWxpZCBwcm9maWxlIGxldmVsIGlkcy4KLWFic2w6Om9w
dGlvbmFsPHN0ZDo6c3RyaW5nPiBQcm9maWxlTGV2ZWxJZFRvU3RyaW5nKAorUlRDX0VYUE9SVCBh
YnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gUHJvZmlsZUxldmVsSWRUb1N0cmluZygKICAgICBj
b25zdCBQcm9maWxlTGV2ZWxJZCYgcHJvZmlsZV9sZXZlbF9pZCk7CiAKIC8vIEdlbmVyYXRlIGNv
ZGVjIHBhcmFtZXRlcnMgdGhhdCB3aWxsIGJlIHVzZWQgYXMgYW5zd2VyIGluIGFuIFNEUCBuZWdv
dGlhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY2hhbm5lbC5jYwppbmRleCBjYmEz
YmUzMGVkMTYxNmNlMzM3NWFjYWEwYTlkNTc2Mzc2OThjZjllLi4wNjM0YjJlNTc1ZjhiMmViYWZm
YzIyOTllMTJiN2U3ZDA5NDRmYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY2hhbm5lbC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY2hh
bm5lbC5jYwpAQCAtMTYsMTYgKzE2LDE5IEBAIFZpZGVvT3B0aW9uczo6VmlkZW9PcHRpb25zKCkg
PSBkZWZhdWx0OwogVmlkZW9PcHRpb25zOjp+VmlkZW9PcHRpb25zKCkgPSBkZWZhdWx0OwogCiBN
ZWRpYUNoYW5uZWw6Ok1lZGlhQ2hhbm5lbChjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnKQotICAg
IDogZW5hYmxlX2RzY3BfKGNvbmZpZy5lbmFibGVfZHNjcCksIG5ldHdvcmtfaW50ZXJmYWNlXyhO
VUxMKSB7fQorICAgIDogZW5hYmxlX2RzY3BfKGNvbmZpZy5lbmFibGVfZHNjcCkge30KIAotTWVk
aWFDaGFubmVsOjpNZWRpYUNoYW5uZWwoKSA6IGVuYWJsZV9kc2NwXyhmYWxzZSksIG5ldHdvcmtf
aW50ZXJmYWNlXyhOVUxMKSB7fQorTWVkaWFDaGFubmVsOjpNZWRpYUNoYW5uZWwoKSA6IGVuYWJs
ZV9kc2NwXyhmYWxzZSkge30KIAogTWVkaWFDaGFubmVsOjp+TWVkaWFDaGFubmVsKCkge30KIAot
dm9pZCBNZWRpYUNoYW5uZWw6OlNldEludGVyZmFjZShOZXR3b3JrSW50ZXJmYWNlKiBpZmFjZSkg
ewordm9pZCBNZWRpYUNoYW5uZWw6OlNldEludGVyZmFjZSgKKyAgICBOZXR3b3JrSW50ZXJmYWNl
KiBpZmFjZSwKKyAgICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFu
c3BvcnQpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJm5ldHdvcmtfaW50ZXJmYWNlX2NyaXRfKTsK
ICAgbmV0d29ya19pbnRlcmZhY2VfID0gaWZhY2U7Ci0gIFNldERzY3AoZW5hYmxlX2RzY3BfID8g
UHJlZmVycmVkRHNjcCgpIDogcnRjOjpEU0NQX0RFRkFVTFQpOworICBtZWRpYV90cmFuc3BvcnRf
ID0gbWVkaWFfdHJhbnNwb3J0OworICBVcGRhdGVEc2NwKCk7CiB9CiAKIGludCBNZWRpYUNoYW5u
ZWw6OkdldFJ0cFNlbmRUaW1lRXh0bklkKCkgY29uc3QgewpAQCAtODQsNiArODcsMTAgQEAgc3Rk
OjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBBdWRpb1NlbmRQYXJhbWV0ZXJzOjpUb1N0
cmluZ01hcCgpIGNvbnN0IHsKICAgcmV0dXJuIHBhcmFtczsKIH0KIAorY3JpY2tldDo6TWVkaWFU
eXBlIFZvaWNlTWVkaWFDaGFubmVsOjptZWRpYV90eXBlKCkgY29uc3QgeworICByZXR1cm4gY3Jp
Y2tldDo6TWVkaWFUeXBlOjpNRURJQV9UWVBFX0FVRElPOworfQorCiBWaWRlb1NlbmRQYXJhbWV0
ZXJzOjpWaWRlb1NlbmRQYXJhbWV0ZXJzKCkgPSBkZWZhdWx0OwogVmlkZW9TZW5kUGFyYW1ldGVy
czo6flZpZGVvU2VuZFBhcmFtZXRlcnMoKSA9IGRlZmF1bHQ7CiAKQEAgLTkzLDExICsxMDAsMTkg
QEAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBWaWRlb1NlbmRQYXJhbWV0ZXJz
OjpUb1N0cmluZ01hcCgpIGNvbnN0IHsKICAgcmV0dXJuIHBhcmFtczsKIH0KIAorY3JpY2tldDo6
TWVkaWFUeXBlIFZpZGVvTWVkaWFDaGFubmVsOjptZWRpYV90eXBlKCkgY29uc3QgeworICByZXR1
cm4gY3JpY2tldDo6TWVkaWFUeXBlOjpNRURJQV9UWVBFX1ZJREVPOworfQorCiBEYXRhTWVkaWFD
aGFubmVsOjpEYXRhTWVkaWFDaGFubmVsKCkgPSBkZWZhdWx0OwogRGF0YU1lZGlhQ2hhbm5lbDo6
RGF0YU1lZGlhQ2hhbm5lbChjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnKQogICAgIDogTWVkaWFD
aGFubmVsKGNvbmZpZykge30KIERhdGFNZWRpYUNoYW5uZWw6On5EYXRhTWVkaWFDaGFubmVsKCkg
PSBkZWZhdWx0OwogCitjcmlja2V0OjpNZWRpYVR5cGUgRGF0YU1lZGlhQ2hhbm5lbDo6bWVkaWFf
dHlwZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGNyaWNrZXQ6Ok1lZGlhVHlwZTo6TUVESUFfVFlQRV9E
QVRBOworfQorCiBib29sIERhdGFNZWRpYUNoYW5uZWw6OkdldFN0YXRzKERhdGFNZWRpYUluZm8q
IGluZm8pIHsKICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY2hhbm5lbC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNo
YW5uZWwuaAppbmRleCBmZjMzNjhjZjQwMWQ1Zjc4YWYwNzc5YzU0N2NmMGIyZWQ3Y2IyODJlLi5m
Y2E2ZWU0ZGQ5YmU1YTU1ZmIyNTg1NzAyOGUzMDBhNGY4ZTdhMDg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY2hh
bm5lbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2Jhc2UvbWVkaWFjaGFubmVsLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJhcGkv
YXVkaW9fb3B0aW9ucy5oIgogI2luY2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVkZWNyeXB0b3JpbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmgi
CisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJh
cGkvcnRjZXJyb3IuaCIKICNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgogI2luY2x1ZGUg
ImFwaS9ydHByZWNlaXZlcmludGVyZmFjZS5oIgpAQCAtMTgzLDE0ICsxODQsMjIgQEAgY2xhc3Mg
TWVkaWFDaGFubmVsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgTWVkaWFDaGFu
bmVsKCk7CiAgIH5NZWRpYUNoYW5uZWwoKSBvdmVycmlkZTsKIAotICAvLyBTZXRzIHRoZSBhYnN0
cmFjdCBpbnRlcmZhY2UgY2xhc3MgZm9yIHNlbmRpbmcgUlRQL1JUQ1AgZGF0YS4KLSAgdmlydHVh
bCB2b2lkIFNldEludGVyZmFjZShOZXR3b3JrSW50ZXJmYWNlKiBpZmFjZSk7CisgIHZpcnR1YWwg
Y3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUoKSBjb25zdCA9IDA7CisKKyAgLy8gU2V0cyB0
aGUgYWJzdHJhY3QgaW50ZXJmYWNlIGNsYXNzIGZvciBzZW5kaW5nIFJUUC9SVENQIGRhdGEgYW5k
CisgIC8vIGludGVyZmFjZSBmb3IgbWVkaWEgdHJhbnNwb3J0IChleHBlcmltZW50YWwpLiBJZiBt
ZWRpYSB0cmFuc3BvcnQgaXMKKyAgLy8gcHJvdmlkZWQsIGl0IHNob3VsZCBiZSB1c2VkIGluc3Rl
YWQgb2YgUlRQL1JUQ1AuCisgIC8vIFRPRE8oc3VraGFub3YpOiBDdXJyZW50bHkgbWVkaWEgdHJh
bnNwb3J0IGNhbiBjby1leGlzdCB3aXRoIFJUUC9SVENQLCBidXQKKyAgLy8gaW4gdGhlIGZ1dHVy
ZSB3ZSB3aWxsIHJlZmFjdG9yIGNvZGUgdG8gc2VuZCBhbGwgZnJhbWVzIHdpdGggbWVkaWEKKyAg
Ly8gdHJhbnNwb3J0LgorICB2aXJ0dWFsIHZvaWQgU2V0SW50ZXJmYWNlKE5ldHdvcmtJbnRlcmZh
Y2UqIGlmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFu
c3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCk7CiAgIC8vIENhbGxlZCB3aGVuIGEgUlRQ
IHBhY2tldCBpcyByZWNlaXZlZC4KICAgdmlydHVhbCB2b2lkIE9uUGFja2V0UmVjZWl2ZWQocnRj
OjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSA9IDA7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpID0gMDsKICAgLy8g
Q2FsbGVkIHdoZW4gYSBSVENQIHBhY2tldCBpcyByZWNlaXZlZC4KICAgdmlydHVhbCB2b2lkIE9u
UnRjcFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMp
ID0gMDsKICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHNvY2tldCdzIGFiaWxpdHkgdG8gc2VuZCBoYXMg
Y2hhbmdlZC4KICAgdmlydHVhbCB2b2lkIE9uUmVhZHlUb1NlbmQoYm9vbCByZWFkeSkgPSAwOwog
ICAvLyBDYWxsZWQgd2hlbiB0aGUgbmV0d29yayByb3V0ZSB1c2VkIGZvciBzZW5kaW5nIHBhY2tl
dHMgY2hhbmdlZC4KQEAgLTI1MSwxNCArMjYwLDI4IEBAIGNsYXNzIE1lZGlhQ2hhbm5lbCA6IHB1
YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgcmV0dXJuIG5ldHdvcmtfaW50ZXJmYWNl
Xy0+U2V0T3B0aW9uKHR5cGUsIG9wdCwgb3B0aW9uKTsKICAgfQogCisgIHdlYnJ0Yzo6TWVkaWFU
cmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCgpIHsKKyAgICByZXR1cm4gbWVkaWFf
dHJhbnNwb3J0XzsKKyAgfQorCisgIC8vIENvcnJlc3BvbmRzIHRvIHRoZSBTRFAgYXR0cmlidXRl
IGV4dG1hcC1hbGxvdy1taXhlZCwgc2VlIFJGQzgyODUuCisgIC8vIFNldCB0byB0cnVlIGlmIGl0
J3MgYWxsb3dlZCB0byBtaXggb25lLSBhbmQgdHdvLWJ5dGUgUlRQIGhlYWRlciBleHRlbnNpb25z
CisgIC8vIGluIHRoZSBzYW1lIHN0cmVhbS4gVGhlIHNldHRlciBhbmQgZ2V0dGVyIG11c3Qgb25s
eSBiZSBjYWxsZWQgZnJvbQorICAvLyB3b3JrZXJfdGhyZWFkLgorICB2b2lkIFNldEV4dG1hcEFs
bG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICBleHRtYXBfYWxsb3dfbWl4
ZWRfID0gZXh0bWFwX2FsbG93X21peGVkOworICB9CisgIGJvb2wgRXh0bWFwQWxsb3dNaXhlZCgp
IGNvbnN0IHsgcmV0dXJuIGV4dG1hcF9hbGxvd19taXhlZF87IH0KKwogIHByb3RlY3RlZDoKICAg
dmlydHVhbCBydGM6OkRpZmZTZXJ2Q29kZVBvaW50IFByZWZlcnJlZERzY3AoKSBjb25zdDsKIAog
ICBib29sIERzY3BFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZW5hYmxlX2RzY3BfOyB9CiAKLSBw
cml2YXRlOgogICAvLyBUaGlzIG1ldGhvZCBzZXRzIERTQ1AgfHZhbHVlfCBvbiBib3RoIFJUUCBh
bmQgUlRDUCBjaGFubmVscy4KLSAgaW50IFNldERzY3AocnRjOjpEaWZmU2VydkNvZGVQb2ludCB2
YWx1ZSkgeworICBpbnQgVXBkYXRlRHNjcCgpIHsKKyAgICBydGM6OkRpZmZTZXJ2Q29kZVBvaW50
IHZhbHVlID0KKyAgICAgICAgZW5hYmxlX2RzY3BfID8gUHJlZmVycmVkRHNjcCgpIDogcnRjOjpE
U0NQX0RFRkFVTFQ7CiAgICAgaW50IHJldDsKICAgICByZXQgPSBTZXRPcHRpb24oTmV0d29ya0lu
dGVyZmFjZTo6U1RfUlRQLCBydGM6OlNvY2tldDo6T1BUX0RTQ1AsIHZhbHVlKTsKICAgICBpZiAo
cmV0ID09IDApIHsKQEAgLTI2Nyw2ICsyOTAsNyBAQCBjbGFzcyBNZWRpYUNoYW5uZWwgOiBwdWJs
aWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIHJldHVybiByZXQ7CiAgIH0KIAorIHByaXZh
dGU6CiAgIGJvb2wgRG9TZW5kUGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwK
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBydGNwLAogICAgICAgICAgICAgICAgICAgICBjb25z
dCBydGM6OlBhY2tldE9wdGlvbnMmIG9wdGlvbnMpIHsKQEAgLTI4Myw3ICszMDcsOSBAQCBjbGFz
cyBNZWRpYUNoYW5uZWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAvLyBmcm9t
IGFueSBNZWRpYUVuZ2luZSB0aHJlYWRzLiBUaGlzIGNyaXRpY2FsIHNlY3Rpb24gaXMgdG8gcHJv
dGVjdCBhY2Nlc3NpbmcKICAgLy8gb2YgbmV0d29ya19pbnRlcmZhY2VfIG9iamVjdC4KICAgcnRj
OjpDcml0aWNhbFNlY3Rpb24gbmV0d29ya19pbnRlcmZhY2VfY3JpdF87Ci0gIE5ldHdvcmtJbnRl
cmZhY2UqIG5ldHdvcmtfaW50ZXJmYWNlXzsKKyAgTmV0d29ya0ludGVyZmFjZSogbmV0d29ya19p
bnRlcmZhY2VfID0gbnVsbHB0cjsKKyAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSog
bWVkaWFfdHJhbnNwb3J0XyA9IG51bGxwdHI7CisgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkXyA9
IGZhbHNlOwogfTsKIAogLy8gVGhlIHN0YXRzIGluZm9ybWF0aW9uIGlzIHN0cnVjdHVyZWQgYXMg
Zm9sbG93czoKQEAgLTQwMiwxNCArNDI4LDYgQEAgc3RydWN0IFZvaWNlU2VuZGVySW5mbyA6IHB1
YmxpYyBNZWRpYVNlbmRlckluZm8gewogICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRj
LXN0YXRzLyNkb20tcnRjbWVkaWFzdHJlYW10cmFja3N0YXRzLXRvdGFsYXVkaW9lbmVyZ3kKICAg
ZG91YmxlIHRvdGFsX2lucHV0X2VuZXJneSA9IDAuMDsKICAgZG91YmxlIHRvdGFsX2lucHV0X2R1
cmF0aW9uID0gMC4wOwotICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NTcyKTogUmVtb3ZlIEFQ
TSBzdGF0cyBmcm9tIHRoaXMgc3RydWN0LCBzaW5jZSB0aGV5Ci0gIC8vIGFyZSBubyBsb25nZXIg
bmVlZGVkIG5vdyB0aGF0IHdlIGhhdmUgYXBtX3N0YXRpc3RpY3MuCi0gIGludCBlY2hvX2RlbGF5
X21lZGlhbl9tcyA9IDA7Ci0gIGludCBlY2hvX2RlbGF5X3N0ZF9tcyA9IDA7Ci0gIGludCBlY2hv
X3JldHVybl9sb3NzID0gMDsKLSAgaW50IGVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPSAw
OwotICBmbG9hdCByZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2QgPSAwLjBmOwotICBmbG9hdCByZXNp
ZHVhbF9lY2hvX2xpa2VsaWhvb2RfcmVjZW50X21heCA9IDAuMGY7CiAgIGJvb2wgdHlwaW5nX25v
aXNlX2RldGVjdGVkID0gZmFsc2U7CiAgIHdlYnJ0Yzo6QU5BU3RhdHMgYW5hX3N0YXRpc3RpY3M7
CiAgIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nU3RhdHMgYXBtX3N0YXRpc3RpY3M7CkBAIC00NTgs
NiArNDc2LDEwIEBAIHN0cnVjdCBWb2ljZVJlY2VpdmVySW5mbyA6IHB1YmxpYyBNZWRpYVJlY2Vp
dmVySW5mbyB7CiAgIGludCBkZWNvZGluZ19tdXRlZF9vdXRwdXQgPSAwOwogICAvLyBFc3RpbWF0
ZWQgY2FwdHVyZSBzdGFydCB0aW1lIGluIE5UUCB0aW1lIGluIG1zLgogICBpbnQ2NF90IGNhcHR1
cmVfc3RhcnRfbnRwX3RpbWVfbXMgPSAtMTsKKyAgLy8gQ291bnQgb2YgdGhlIG51bWJlciBvZiBi
dWZmZXIgZmx1c2hlcy4KKyAgdWludDY0X3Qgaml0dGVyX2J1ZmZlcl9mbHVzaGVzID0gMDsKKyAg
Ly8gTnVtYmVyIG9mIHNhbXBsZXMgZXhwYW5kZWQgZHVlIHRvIGRlbGF5ZWQgcGFja2V0cy4KKyAg
dWludDY0X3QgZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMgPSAwOwogfTsKIAogc3RydWN0
IFZpZGVvU2VuZGVySW5mbyA6IHB1YmxpYyBNZWRpYVNlbmRlckluZm8gewpAQCAtNjQ3LDEyICs2
NjksMTQgQEAgc3RydWN0IFJ0cFNlbmRQYXJhbWV0ZXJzIDogUnRwUGFyYW1ldGVyczxDb2RlYz4g
ewogICAvLyBUaGlzIGlzIHRoZSB2YWx1ZSB0byBiZSBzZW50IGluIHRoZSBNSUQgUlRQIGhlYWRl
ciBleHRlbnNpb24gKGlmIHRoZSBoZWFkZXIKICAgLy8gZXh0ZW5zaW9uIGluIGluY2x1ZGVkIGlu
IHRoZSBsaXN0IG9mIGV4dGVuc2lvbnMpLgogICBzdGQ6OnN0cmluZyBtaWQ7CisgIGJvb2wgZXh0
bWFwX2FsbG93X21peGVkID0gZmFsc2U7CiAKICBwcm90ZWN0ZWQ6CiAgIHN0ZDo6bWFwPHN0ZDo6
c3RyaW5nLCBzdGQ6OnN0cmluZz4gVG9TdHJpbmdNYXAoKSBjb25zdCBvdmVycmlkZSB7CiAgICAg
YXV0byBwYXJhbXMgPSBSdHBQYXJhbWV0ZXJzPENvZGVjPjo6VG9TdHJpbmdNYXAoKTsKICAgICBw
YXJhbXNbIm1heF9iYW5kd2lkdGhfYnBzIl0gPSBydGM6OlRvU3RyaW5nKG1heF9iYW5kd2lkdGhf
YnBzKTsKICAgICBwYXJhbXNbIm1pZCJdID0gKG1pZC5lbXB0eSgpID8gIjxub3Qgc2V0PiIgOiBt
aWQpOworICAgIHBhcmFtc1siZXh0bWFwLWFsbG93LW1peGVkIl0gPSBleHRtYXBfYWxsb3dfbWl4
ZWQgPyAidHJ1ZSIgOiAiZmFsc2UiOwogICAgIHJldHVybiBwYXJhbXM7CiAgIH0KIH07CkBAIC02
NzQsNiArNjk4LDggQEAgY2xhc3MgVm9pY2VNZWRpYUNoYW5uZWwgOiBwdWJsaWMgTWVkaWFDaGFu
bmVsIHsKICAgZXhwbGljaXQgVm9pY2VNZWRpYUNoYW5uZWwoY29uc3QgTWVkaWFDb25maWcmIGNv
bmZpZykKICAgICAgIDogTWVkaWFDaGFubmVsKGNvbmZpZykge30KICAgflZvaWNlTWVkaWFDaGFu
bmVsKCkgb3ZlcnJpZGUge30KKworICBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgpIGNv
bnN0IG92ZXJyaWRlOwogICB2aXJ0dWFsIGJvb2wgU2V0U2VuZFBhcmFtZXRlcnMoY29uc3QgQXVk
aW9TZW5kUGFyYW1ldGVycyYgcGFyYW1zKSA9IDA7CiAgIHZpcnR1YWwgYm9vbCBTZXRSZWN2UGFy
YW1ldGVycyhjb25zdCBBdWRpb1JlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpID0gMDsKICAgdmlydHVh
bCB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgR2V0UnRwU2VuZFBhcmFtZXRlcnModWludDMyX3Qgc3Ny
YykgY29uc3QgPSAwOwpAQCAtNzQ2LDYgKzc3Miw3IEBAIGNsYXNzIFZpZGVvTWVkaWFDaGFubmVs
IDogcHVibGljIE1lZGlhQ2hhbm5lbCB7CiAgICAgICA6IE1lZGlhQ2hhbm5lbChjb25maWcpIHt9
CiAgIH5WaWRlb01lZGlhQ2hhbm5lbCgpIG92ZXJyaWRlIHt9CiAKKyAgY3JpY2tldDo6TWVkaWFU
eXBlIG1lZGlhX3R5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgdmlydHVhbCBib29sIFNldFNlbmRQ
YXJhbWV0ZXJzKGNvbnN0IFZpZGVvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgPSAwOwogICB2aXJ0
dWFsIGJvb2wgU2V0UmVjdlBhcmFtZXRlcnMoY29uc3QgVmlkZW9SZWN2UGFyYW1ldGVycyYgcGFy
YW1zKSA9IDA7CiAgIHZpcnR1YWwgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIEdldFJ0cFNlbmRQYXJh
bWV0ZXJzKHVpbnQzMl90IHNzcmMpIGNvbnN0ID0gMDsKQEAgLTg1Nyw2ICs4ODQsNyBAQCBjbGFz
cyBEYXRhTWVkaWFDaGFubmVsIDogcHVibGljIE1lZGlhQ2hhbm5lbCB7CiAgIGV4cGxpY2l0IERh
dGFNZWRpYUNoYW5uZWwoY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZyk7CiAgIH5EYXRhTWVkaWFD
aGFubmVsKCkgb3ZlcnJpZGU7CiAKKyAgY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUoKSBj
b25zdCBvdmVycmlkZTsKICAgdmlydHVhbCBib29sIFNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0IERh
dGFTZW5kUGFyYW1ldGVycyYgcGFyYW1zKSA9IDA7CiAgIHZpcnR1YWwgYm9vbCBTZXRSZWN2UGFy
YW1ldGVycyhjb25zdCBEYXRhUmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNl
L21lZGlhY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9iYXNlL21lZGlhY29uZmlnLmgKaW5kZXggZWRhMzg3ZTMxOTExMmIzMjFmMmZkOGU2
OGI2OGYyM2Q1YjBiZjA4OS4uYzhmYzUyMTJhMGY4Y2JjNWIyNzM4NmI1ODdlZjQ2MDUzY2E1ZmI3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvYmFzZS9tZWRpYWNvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFjb25maWcuaApAQCAtNTksOCArNTksMTcg
QEAgc3RydWN0IE1lZGlhQ29uZmlnIHsKICAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NTA0
KTogSWYgYWxsIGdvZXMgd2VsbCwgdGhlIGZsYWcgd2lsbCBiZSByZW1vdmVkCiAgICAgLy8gdG9n
ZXRoZXIgd2l0aCB0aGUgb2xkIG1ldGhvZCBvZiBlc3RpbWF0aW9uLgogICAgIGJvb2wgZXhwZXJp
bWVudF9jcHVfbG9hZF9lc3RpbWF0b3IgPSBmYWxzZTsKKworICAgIC8vIFRpbWUgaW50ZXJ2YWwg
YmV0d2VlbiBSVENQIHJlcG9ydCBmb3IgdmlkZW8KKyAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2
YWxfbXMgPSAxMDAwOwogICB9IHZpZGVvOwogCisgIC8vIEF1ZGlvLXNwZWNpZmljIGNvbmZpZy4K
KyAgc3RydWN0IEF1ZGlvIHsKKyAgICAvLyBUaW1lIGludGVydmFsIGJldHdlZW4gUlRDUCByZXBv
cnQgZm9yIGF1ZGlvCisgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0gNTAwMDsKKyAg
fSBhdWRpbzsKKwogICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFDb25maWcmIG8pIGNvbnN0
IHsKICAgICByZXR1cm4gZW5hYmxlX2RzY3AgPT0gby5lbmFibGVfZHNjcCAmJgogICAgICAgICAg
ICB2aWRlby5lbmFibGVfY3B1X2FkYXB0YXRpb24gPT0gby52aWRlby5lbmFibGVfY3B1X2FkYXB0
YXRpb24gJiYKQEAgLTcxLDcgKzgwLDkgQEAgc3RydWN0IE1lZGlhQ29uZmlnIHsKICAgICAgICAg
ICAgdmlkZW8ucGVyaW9kaWNfYWxyX2JhbmR3aWR0aF9wcm9iaW5nID09CiAgICAgICAgICAgICAg
ICBvLnZpZGVvLnBlcmlvZGljX2Fscl9iYW5kd2lkdGhfcHJvYmluZyAmJgogICAgICAgICAgICB2
aWRlby5leHBlcmltZW50X2NwdV9sb2FkX2VzdGltYXRvciA9PQotICAgICAgICAgICAgICAgby52
aWRlby5leHBlcmltZW50X2NwdV9sb2FkX2VzdGltYXRvcjsKKyAgICAgICAgICAgICAgIG8udmlk
ZW8uZXhwZXJpbWVudF9jcHVfbG9hZF9lc3RpbWF0b3IgJiYKKyAgICAgICAgICAgdmlkZW8ucnRj
cF9yZXBvcnRfaW50ZXJ2YWxfbXMgPT0gby52aWRlby5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyAm
JgorICAgICAgICAgICBhdWRpby5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9PSBvLmF1ZGlvLnJ0
Y3BfcmVwb3J0X2ludGVydmFsX21zOwogICB9CiAKICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1l
ZGlhQ29uZmlnJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21l
ZGlhY29uc3RhbnRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgKaW5kZXggMTRjNDliYWY3MmNiYWQxYzVhOTIw
MjhiNDc5YTBiMTczYzBkYWJjZC4uYzRhMzQwNmZkODVhMjNhOGFhYmEzNDAzYzMxOWM2ZTgxMWY1
YTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaApAQCAtMTMs
NiArMTMsOCBAQAogCiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lz
dGVtL3J0Y19leHBvcnQuaCIKKwogLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGNvbnN0YW50cyByZWxh
dGVkIHRvIG1lZGlhLgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CkBAIC0xMjcsMTIgKzEyOSwxMiBA
QCBleHRlcm4gY29uc3QgY2hhciBrQ29tZm9ydE5vaXNlQ29kZWNOYW1lW107CiAKIGV4dGVybiBj
b25zdCBjaGFyIGtWcDhDb2RlY05hbWVbXTsKIGV4dGVybiBjb25zdCBjaGFyIGtWcDlDb2RlY05h
bWVbXTsKLWV4dGVybiBjb25zdCBjaGFyIGtIMjY0Q29kZWNOYW1lW107CitSVENfRVhQT1JUIGV4
dGVybiBjb25zdCBjaGFyIGtIMjY0Q29kZWNOYW1lW107CiAKIC8vIFJGQyA2MTg0IFJUUCBQYXls
b2FkIEZvcm1hdCBmb3IgSC4yNjQgdmlkZW8KLWV4dGVybiBjb25zdCBjaGFyIGtIMjY0Rm10cFBy
b2ZpbGVMZXZlbElkW107Ci1leHRlcm4gY29uc3QgY2hhciBrSDI2NEZtdHBMZXZlbEFzeW1tZXRy
eUFsbG93ZWRbXTsKLWV4dGVybiBjb25zdCBjaGFyIGtIMjY0Rm10cFBhY2tldGl6YXRpb25Nb2Rl
W107CitSVENfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyIGtIMjY0Rm10cFByb2ZpbGVMZXZlbElk
W107CitSVENfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyIGtIMjY0Rm10cExldmVsQXN5bW1ldHJ5
QWxsb3dlZFtdOworUlRDX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciBrSDI2NEZtdHBQYWNrZXRp
emF0aW9uTW9kZVtdOwogZXh0ZXJuIGNvbnN0IGNoYXIga0gyNjRGbXRwU3Byb3BQYXJhbWV0ZXJT
ZXRzW107CiBleHRlcm4gY29uc3QgY2hhciBrSDI2NFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkQmFz
ZWxpbmVbXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFlbmdpbmUuY2MKaW5kZXggNzZj
YWM0YjQzODM0MmUwYWJlMjI2YTcyNzY1ZDA0NjI5ZDU4MjNiNy4uZDUxOThmZTY0ZjE5MDFlMDAz
ZGY0ODIyOTM5ODM0ZGNmMWJjZWY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhZW5n
aW5lLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhZW5n
aW5lLmgiCiAKKyNpbmNsdWRlIDx1dGlsaXR5PgorCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVv
X2JpdHJhdGVfYWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5o
IgogCkBAIC0xMDQsNCArMTA2LDMzIEBAIHdlYnJ0Yzo6UlRDRXJyb3IgVmFsaWRhdGVSdHBQYXJh
bWV0ZXJzKAogICByZXR1cm4gd2VicnRjOjpSVENFcnJvcjo6T0soKTsKIH0KIAorQ29tcG9zaXRl
TWVkaWFFbmdpbmU6OkNvbXBvc2l0ZU1lZGlhRW5naW5lKAorICAgIHN0ZDo6dW5pcXVlX3B0cjxW
b2ljZUVuZ2luZUludGVyZmFjZT4gdm9pY2VfZW5naW5lLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0VuZ2luZUludGVyZmFjZT4gdmlkZW9fZW5naW5lKQorICAgIDogdm9pY2VfZW5naW5lXyhz
dGQ6Om1vdmUodm9pY2VfZW5naW5lKSksCisgICAgICB2aWRlb19lbmdpbmVfKHN0ZDo6bW92ZSh2
aWRlb19lbmdpbmUpKSB7fQorCitDb21wb3NpdGVNZWRpYUVuZ2luZTo6fkNvbXBvc2l0ZU1lZGlh
RW5naW5lKCkgPSBkZWZhdWx0OworCitib29sIENvbXBvc2l0ZU1lZGlhRW5naW5lOjpJbml0KCkg
eworICB2b2ljZSgpLkluaXQoKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK1ZvaWNlRW5naW5lSW50
ZXJmYWNlJiBDb21wb3NpdGVNZWRpYUVuZ2luZTo6dm9pY2UoKSB7CisgIHJldHVybiAqdm9pY2Vf
ZW5naW5lXy5nZXQoKTsKK30KKworVmlkZW9FbmdpbmVJbnRlcmZhY2UmIENvbXBvc2l0ZU1lZGlh
RW5naW5lOjp2aWRlbygpIHsKKyAgcmV0dXJuICp2aWRlb19lbmdpbmVfLmdldCgpOworfQorCitj
b25zdCBWb2ljZUVuZ2luZUludGVyZmFjZSYgQ29tcG9zaXRlTWVkaWFFbmdpbmU6OnZvaWNlKCkg
Y29uc3QgeworICByZXR1cm4gKnZvaWNlX2VuZ2luZV8uZ2V0KCk7Cit9CisKK2NvbnN0IFZpZGVv
RW5naW5lSW50ZXJmYWNlJiBDb21wb3NpdGVNZWRpYUVuZ2luZTo6dmlkZW8oKSBjb25zdCB7Cisg
IHJldHVybiAqdmlkZW9fZW5naW5lXy5nZXQoKTsKK30KKwogfTsgIC8vIG5hbWVzcGFjZSBjcmlj
a2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9iYXNlL21lZGlhZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhZW5naW5lLmgKaW5kZXggMDFjNmZiNjUyNjll
YTJlNzI2MTI0ZGU5YWJiNzI4OWQ1NjY1NGJkYi4uMDEzMDBkNDhhYzM3MGI3YTk1YTZkYWE3ODhh
NmY0OTJjNDZjN2EzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFlbmdpbmUuaApAQCAt
MTUsMTMgKzE1LDEzIEBACiAjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpby5oPgogI2VuZGlm
CiAKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHR1cGxl
PgotI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBp
L2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8v
Y3J5cHRvb3B0aW9ucy5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiY2FsbC9hdWRpb19zdGF0ZS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29kZWMuaCIKQEAg
LTQ4LDM3ICs0OCwzMCBAQCBzdHJ1Y3QgUnRwQ2FwYWJpbGl0aWVzIHsKICAgc3RkOjp2ZWN0b3I8
d2VicnRjOjpSdHBFeHRlbnNpb24+IGhlYWRlcl9leHRlbnNpb25zOwogfTsKIAotLy8gTWVkaWFF
bmdpbmVJbnRlcmZhY2UgaXMgYW4gYWJzdHJhY3Rpb24gb2YgYSBtZWRpYSBlbmdpbmUgd2hpY2gg
Y2FuIGJlCi0vLyBzdWJjbGFzc2VkIHRvIHN1cHBvcnQgZGlmZmVyZW50IG1lZGlhIGNvbXBvbmVu
dHJ5IGJhY2tlbmRzLgotLy8gSXQgc3VwcG9ydHMgdm9pY2UgYW5kIHZpZGVvIG9wZXJhdGlvbnMg
aW4gdGhlIHNhbWUgY2xhc3MgdG8gZmFjaWxpdGF0ZQotLy8gcHJvcGVyIHN5bmNocm9uaXphdGlv
biBiZXR3ZWVuIGJvdGggbWVkaWEgdHlwZXMuCi1jbGFzcyBNZWRpYUVuZ2luZUludGVyZmFjZSB7
CitjbGFzcyBWb2ljZUVuZ2luZUludGVyZmFjZSB7CiAgcHVibGljOgotICB2aXJ0dWFsIH5NZWRp
YUVuZ2luZUludGVyZmFjZSgpIHt9CisgIFZvaWNlRW5naW5lSW50ZXJmYWNlKCkgPSBkZWZhdWx0
OworICB2aXJ0dWFsIH5Wb2ljZUVuZ2luZUludGVyZmFjZSgpID0gZGVmYXVsdDsKKyAgUlRDX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihWb2ljZUVuZ2luZUludGVyZmFjZSk7CiAKICAgLy8gSW5p
dGlhbGl6YXRpb24KICAgLy8gU3RhcnRzIHRoZSBlbmdpbmUuCi0gIHZpcnR1YWwgYm9vbCBJbml0
KCkgPSAwOworICB2aXJ0dWFsIHZvaWQgSW5pdCgpID0gMDsKKwogICAvLyBUT0RPKHNvbGVuYmVy
Zyk6IFJlbW92ZSBvbmNlIFZvRSBBUEkgcmVmYWN0b3JpbmcgaXMgZG9uZS4KICAgdmlydHVhbCBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiBHZXRBdWRpb1N0YXRlKCkgY29u
c3QgPSAwOwogCiAgIC8vIE1lZGlhQ2hhbm5lbCBjcmVhdGlvbgogICAvLyBDcmVhdGVzIGEgdm9p
Y2UgbWVkaWEgY2hhbm5lbC4gUmV0dXJucyBOVUxMIG9uIGZhaWx1cmUuCi0gIHZpcnR1YWwgVm9p
Y2VNZWRpYUNoYW5uZWwqIENyZWF0ZUNoYW5uZWwod2VicnRjOjpDYWxsKiBjYWxsLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBj
b25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QXVkaW9PcHRpb25zJiBvcHRpb25zKSA9IDA7Ci0gIC8vIENyZWF0ZXMgYSB2aWRlbyBtZWRpYSBj
aGFubmVsLCBwYWlyZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHZvaWNlIGNoYW5uZWwuCi0gIC8vIFJl
dHVybnMgTlVMTCBvbiBmYWlsdXJlLgotICB2aXJ0dWFsIFZpZGVvTWVkaWFDaGFubmVsKiBDcmVh
dGVWaWRlb0NoYW5uZWwoCisgIHZpcnR1YWwgVm9pY2VNZWRpYUNoYW5uZWwqIENyZWF0ZU1lZGlh
Q2hhbm5lbCgKICAgICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKICAgICAgIGNvbnN0IE1lZGlhQ29u
ZmlnJiBjb25maWcsCi0gICAgICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpID0gMDsKKyAg
ICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywKKyAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5
cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpID0gMDsKIAotICB2aXJ0dWFsIGNvbnN0IHN0ZDo6
dmVjdG9yPEF1ZGlvQ29kZWM+JiBhdWRpb19zZW5kX2NvZGVjcygpID0gMDsKLSAgdmlydHVhbCBj
b25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgYXVkaW9fcmVjdl9jb2RlY3MoKSA9IDA7Ci0g
IHZpcnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldEF1ZGlvQ2FwYWJpbGl0aWVzKCkgPSAwOwotICB2
aXJ0dWFsIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IHZpZGVvX2NvZGVjcygpID0gMDsKLSAgdmly
dHVhbCBSdHBDYXBhYmlsaXRpZXMgR2V0VmlkZW9DYXBhYmlsaXRpZXMoKSA9IDA7CisgIHZpcnR1
YWwgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHNlbmRfY29kZWNzKCkgY29uc3QgPSAw
OworICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiByZWN2X2NvZGVjcygp
IGNvbnN0ID0gMDsKKyAgdmlydHVhbCBSdHBDYXBhYmlsaXRpZXMgR2V0Q2FwYWJpbGl0aWVzKCkg
Y29uc3QgPSAwOwogCiAgIC8vIFN0YXJ0cyBBRUMgZHVtcCB1c2luZyBleGlzdGluZyBmaWxlLCBh
IG1heGltdW0gZmlsZSBzaXplIGluIGJ5dGVzIGNhbiBiZQogICAvLyBzcGVjaWZpZWQuIExvZ2dp
bmcgaXMgc3RvcHBlZCBqdXN0IGJlZm9yZSB0aGUgc2l6ZSBsaW1pdCBpcyBleGNlZWRlZC4KQEAg
LTg5LDY5ICs4Miw2NiBAQCBjbGFzcyBNZWRpYUVuZ2luZUludGVyZmFjZSB7CiAgIHZpcnR1YWwg
dm9pZCBTdG9wQWVjRHVtcCgpID0gMDsKIH07CiAKK2NsYXNzIFZpZGVvRW5naW5lSW50ZXJmYWNl
IHsKKyBwdWJsaWM6CisgIFZpZGVvRW5naW5lSW50ZXJmYWNlKCkgPSBkZWZhdWx0OworICB2aXJ0
dWFsIH5WaWRlb0VuZ2luZUludGVyZmFjZSgpID0gZGVmYXVsdDsKKyAgUlRDX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihWaWRlb0VuZ2luZUludGVyZmFjZSk7CisKKyAgLy8gQ3JlYXRlcyBhIHZp
ZGVvIG1lZGlhIGNoYW5uZWwsIHBhaXJlZCB3aXRoIHRoZSBzcGVjaWZpZWQgdm9pY2UgY2hhbm5l
bC4KKyAgLy8gUmV0dXJucyBOVUxMIG9uIGZhaWx1cmUuCisgIHZpcnR1YWwgVmlkZW9NZWRpYUNo
YW5uZWwqIENyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKKyAg
ICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCisgICAgICBjb25zdCBWaWRlb09wdGlvbnMm
IG9wdGlvbnMsCisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRp
b25zKSA9IDA7CisKKyAgdmlydHVhbCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiBjb2RlY3MoKSBj
b25zdCA9IDA7CisgIHZpcnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldENhcGFiaWxpdGllcygpIGNv
bnN0ID0gMDsKK307CisKKy8vIE1lZGlhRW5naW5lSW50ZXJmYWNlIGlzIGFuIGFic3RyYWN0aW9u
IG9mIGEgbWVkaWEgZW5naW5lIHdoaWNoIGNhbiBiZQorLy8gc3ViY2xhc3NlZCB0byBzdXBwb3J0
IGRpZmZlcmVudCBtZWRpYSBjb21wb25lbnRyeSBiYWNrZW5kcy4KKy8vIEl0IHN1cHBvcnRzIHZv
aWNlIGFuZCB2aWRlbyBvcGVyYXRpb25zIGluIHRoZSBzYW1lIGNsYXNzIHRvIGZhY2lsaXRhdGUK
Ky8vIHByb3BlciBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBib3RoIG1lZGlhIHR5cGVzLgorY2xh
c3MgTWVkaWFFbmdpbmVJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgdmlydHVhbCB+TWVkaWFFbmdp
bmVJbnRlcmZhY2UoKSB7fQorCisgIC8vIEluaXRpYWxpemF0aW9uCisgIC8vIFN0YXJ0cyB0aGUg
ZW5naW5lLgorICB2aXJ0dWFsIGJvb2wgSW5pdCgpID0gMDsKKyAgdmlydHVhbCBWb2ljZUVuZ2lu
ZUludGVyZmFjZSYgdm9pY2UoKSA9IDA7CisgIHZpcnR1YWwgVmlkZW9FbmdpbmVJbnRlcmZhY2Um
IHZpZGVvKCkgPSAwOworICB2aXJ0dWFsIGNvbnN0IFZvaWNlRW5naW5lSW50ZXJmYWNlJiB2b2lj
ZSgpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBjb25zdCBWaWRlb0VuZ2luZUludGVyZmFjZSYgdmlk
ZW8oKSBjb25zdCA9IDA7Cit9OworCiAvLyBDb21wb3NpdGVNZWRpYUVuZ2luZSBjb25zdHJ1Y3Rz
IGEgTWVkaWFFbmdpbmUgZnJvbSBzZXBhcmF0ZQogLy8gdm9pY2UgYW5kIHZpZGVvIGVuZ2luZSBj
bGFzc2VzLgotdGVtcGxhdGUgPGNsYXNzIFZPSUNFLCBjbGFzcyBWSURFTz4KIGNsYXNzIENvbXBv
c2l0ZU1lZGlhRW5naW5lIDogcHVibGljIE1lZGlhRW5naW5lSW50ZXJmYWNlIHsKICBwdWJsaWM6
Ci0gIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzMSwgY2xhc3MuLi4gQXJnczI+Ci0gIENvbXBvc2l0
ZU1lZGlhRW5naW5lKHN0ZDo6dHVwbGU8QXJnczEuLi4+IGZpcnN0X2FyZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dHVwbGU8QXJnczIuLi4+IHNlY29uZF9hcmdzKQotICAgICAgOiBl
bmdpbmVzXyhzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsCi0gICAgICAgICAgICAgICAgIHN0ZDo6
bW92ZShmaXJzdF9hcmdzKSwKLSAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHNlY29uZF9hcmdz
KSkge30KLQotICB2aXJ0dWFsIH5Db21wb3NpdGVNZWRpYUVuZ2luZSgpIHt9Ci0gIHZpcnR1YWwg
Ym9vbCBJbml0KCkgewotICAgIHZvaWNlKCkuSW5pdCgpOwotICAgIHJldHVybiB0cnVlOwotICB9
Ci0KLSAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiBHZXRB
dWRpb1N0YXRlKCkgY29uc3QgewotICAgIHJldHVybiB2b2ljZSgpLkdldEF1ZGlvU3RhdGUoKTsK
LSAgfQotICB2aXJ0dWFsIFZvaWNlTWVkaWFDaGFubmVsKiBDcmVhdGVDaGFubmVsKHdlYnJ0Yzo6
Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykgewotICAgIHJldHVybiB2
b2ljZSgpLkNyZWF0ZUNoYW5uZWwoY2FsbCwgY29uZmlnLCBvcHRpb25zKTsKLSAgfQotICB2aXJ0
dWFsIFZpZGVvTWVkaWFDaGFubmVsKiBDcmVhdGVWaWRlb0NoYW5uZWwod2VicnRjOjpDYWxsKiBj
YWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgTWVkaWFDb25maWcmIGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykgewotICAgIHJldHVy
biB2aWRlbygpLkNyZWF0ZUNoYW5uZWwoY2FsbCwgY29uZmlnLCBvcHRpb25zKTsKLSAgfQotCi0g
IHZpcnR1YWwgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGF1ZGlvX3NlbmRfY29kZWNz
KCkgewotICAgIHJldHVybiB2b2ljZSgpLnNlbmRfY29kZWNzKCk7Ci0gIH0KLSAgdmlydHVhbCBj
b25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgYXVkaW9fcmVjdl9jb2RlY3MoKSB7Ci0gICAg
cmV0dXJuIHZvaWNlKCkucmVjdl9jb2RlY3MoKTsKLSAgfQotICB2aXJ0dWFsIFJ0cENhcGFiaWxp
dGllcyBHZXRBdWRpb0NhcGFiaWxpdGllcygpIHsKLSAgICByZXR1cm4gdm9pY2UoKS5HZXRDYXBh
YmlsaXRpZXMoKTsKLSAgfQotICB2aXJ0dWFsIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IHZpZGVv
X2NvZGVjcygpIHsgcmV0dXJuIHZpZGVvKCkuY29kZWNzKCk7IH0KLSAgdmlydHVhbCBSdHBDYXBh
YmlsaXRpZXMgR2V0VmlkZW9DYXBhYmlsaXRpZXMoKSB7Ci0gICAgcmV0dXJuIHZpZGVvKCkuR2V0
Q2FwYWJpbGl0aWVzKCk7Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgU3RhcnRBZWNEdW1wKHJ0Yzo6
UGxhdGZvcm1GaWxlIGZpbGUsIGludDY0X3QgbWF4X3NpemVfYnl0ZXMpIHsKLSAgICByZXR1cm4g
dm9pY2UoKS5TdGFydEFlY0R1bXAoZmlsZSwgbWF4X3NpemVfYnl0ZXMpOwotICB9Ci0KLSAgdmly
dHVhbCB2b2lkIFN0b3BBZWNEdW1wKCkgeyB2b2ljZSgpLlN0b3BBZWNEdW1wKCk7IH0KLQotIHBy
b3RlY3RlZDoKLSAgVk9JQ0UmIHZvaWNlKCkgeyByZXR1cm4gZW5naW5lc18uZmlyc3Q7IH0KLSAg
VklERU8mIHZpZGVvKCkgeyByZXR1cm4gZW5naW5lc18uc2Vjb25kOyB9Ci0gIGNvbnN0IFZPSUNF
JiB2b2ljZSgpIGNvbnN0IHsgcmV0dXJuIGVuZ2luZXNfLmZpcnN0OyB9Ci0gIGNvbnN0IFZJREVP
JiB2aWRlbygpIGNvbnN0IHsgcmV0dXJuIGVuZ2luZXNfLnNlY29uZDsgfQorICBDb21wb3NpdGVN
ZWRpYUVuZ2luZShzdGQ6OnVuaXF1ZV9wdHI8Vm9pY2VFbmdpbmVJbnRlcmZhY2U+IGF1ZGlvX2Vu
Z2luZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5naW5l
SW50ZXJmYWNlPiB2aWRlb19lbmdpbmUpOworICB+Q29tcG9zaXRlTWVkaWFFbmdpbmUoKSBvdmVy
cmlkZTsKKyAgYm9vbCBJbml0KCkgb3ZlcnJpZGU7CisKKyAgVm9pY2VFbmdpbmVJbnRlcmZhY2Um
IHZvaWNlKCkgb3ZlcnJpZGU7CisgIFZpZGVvRW5naW5lSW50ZXJmYWNlJiB2aWRlbygpIG92ZXJy
aWRlOworICBjb25zdCBWb2ljZUVuZ2luZUludGVyZmFjZSYgdm9pY2UoKSBjb25zdCBvdmVycmlk
ZTsKKyAgY29uc3QgVmlkZW9FbmdpbmVJbnRlcmZhY2UmIHZpZGVvKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICBwcml2YXRlOgotICBzdGQ6OnBhaXI8Vk9JQ0UsIFZJREVPPiBlbmdpbmVzXzsKKyAgc3Rk
Ojp1bmlxdWVfcHRyPFZvaWNlRW5naW5lSW50ZXJmYWNlPiB2b2ljZV9lbmdpbmVfOworICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9FbmdpbmVJbnRlcmZhY2U+IHZpZGVvX2VuZ2luZV87CiB9OwogCi1l
bnVtIERhdGFDaGFubmVsVHlwZSB7IERDVF9OT05FID0gMCwgRENUX1JUUCA9IDEsIERDVF9TQ1RQ
ID0gMiB9OworZW51bSBEYXRhQ2hhbm5lbFR5cGUgeworICBEQ1RfTk9ORSA9IDAsCisgIERDVF9S
VFAgPSAxLAorICBEQ1RfU0NUUCA9IDIsCisgIERDVF9NRURJQV9UUkFOU1BPUlQgPSAzCit9Owog
CiBjbGFzcyBEYXRhRW5naW5lSW50ZXJmYWNlIHsKICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3J0cGRhdGFl
bmdpbmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL3J0cGRhdGFlbmdpbmUuY2MKaW5kZXggZmMyYjczMTQxZWRkNzVlMDhlNmQ2NmIzNWI2
NDM4OWNmZGE4ZjNlNi4uYzMzNjdjMGExZjYwYjQ5NGY3YTMzMTNkMWY1NTJjYjdhZDZlZGVkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS9ydHBkYXRhZW5naW5lLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZS5jYwpAQCAtMTIsNiArMTIs
NyBAQAogCiAjaW5jbHVkZSA8bWFwPgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgi
CiAjaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVk
aWFjb25zdGFudHMuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL3J0cHV0aWxzLmgiCkBAIC0yMSw3
ICsyMiw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zYW5pdGl6ZXIuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKQEAgLTQ3
LDcgKzQ3LDcgQEAgRGF0YU1lZGlhQ2hhbm5lbCogUnRwRGF0YUVuZ2luZTo6Q3JlYXRlQ2hhbm5l
bChjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnKSB7CiBzdGF0aWMgY29uc3QgRGF0YUNvZGVjKiBG
aW5kQ29kZWNCeU5hbWUoY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgY29kZWNzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBu
YW1lKSB7CiAgIGZvciAoY29uc3QgRGF0YUNvZGVjJiBjb2RlYyA6IGNvZGVjcykgewotICAgIGlm
IChfc3RyaWNtcChuYW1lLmNfc3RyKCksIGNvZGVjLm5hbWUuY19zdHIoKSkgPT0gMCkKKyAgICBp
ZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lLCBjb2RlYy5uYW1lKSkKICAgICAgIHJldHVy
biAmY29kZWM7CiAgIH0KICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTQsNyArMTk0LDcgQEAgYm9v
bCBSdHBEYXRhTWVkaWFDaGFubmVsOjpSZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMpIHsK
IH0KIAogdm9pZCBSdHBEYXRhTWVkaWFDaGFubmVsOjpPblBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29w
eU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCAvKiBwYWNrZXRfdGlt
ZV91cyAqLykgewogICBSdHBIZWFkZXIgaGVhZGVyOwogICBpZiAoIUdldFJ0cEhlYWRlcihwYWNr
ZXQtPmNkYXRhKCksIHBhY2tldC0+c2l6ZSgpLCAmaGVhZGVyKSkgewogICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2Jhc2UvcnRwZGF0YWVuZ2luZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5naW5lLmgKaW5kZXggOTY2ZDBjODE1MTQxNTdk
MmUwN2EzYzc3ZDU0ZjYzZjMyZTMwYjZmMy4uNDJlOTE5MDM5ZDAxM2Y5Y2ZhODYzNzllM2FhYWEy
ZGFkMjc3Yzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5naW5lLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5naW5lLmgKQEAg
LTgyLDkgKzgyLDkgQEAgY2xhc3MgUnRwRGF0YU1lZGlhQ2hhbm5lbCA6IHB1YmxpYyBEYXRhTWVk
aWFDaGFubmVsIHsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogICB2aXJ0dWFsIHZvaWQgT25QYWNr
ZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKTsK
ICAgdmlydHVhbCB2b2lkIE9uUnRjcFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBh
Y2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGlt
ZSYgcGFja2V0X3RpbWUpIHt9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IHBhY2tldF90aW1lX3VzKSB7fQogICB2aXJ0dWFsIHZvaWQgT25SZWFkeVRvU2VuZChib29sIHJl
YWR5KSB7fQogICB2aXJ0dWFsIGJvb2wgU2VuZERhdGEoY29uc3QgU2VuZERhdGFQYXJhbXMmIHBh
cmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZm
ZXImIHBheWxvYWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3J0cGRhdGFlbmdpbmVfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3J0cGRhdGFlbmdp
bmVfdW5pdHRlc3QuY2MKaW5kZXggYzE1YzU1ZjVlNjI3NGU4OGQzNTdmOWQ5NjBkZTZjMTZhN2U4
ODUxNy4uOWI4ZTEwYjQ1MDA3Y2NlZDY2OThhNWUyNDQyMDNlMDhiNmRkNDVkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9y
dHBkYXRhZW5naW5lX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZV91bml0dGVzdC5jYwpAQCAt
NzMsNyArNzMsNyBAQCBjbGFzcyBSdHBEYXRhTWVkaWFDaGFubmVsVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKICAgICBjcmlja2V0OjpNZWRpYUNvbmZpZyBjb25maWc7CiAgICAgY3JpY2tl
dDo6UnRwRGF0YU1lZGlhQ2hhbm5lbCogY2hhbm5lbCA9CiAgICAgICAgIHN0YXRpY19jYXN0PGNy
aWNrZXQ6OlJ0cERhdGFNZWRpYUNoYW5uZWwqPihkbWUtPkNyZWF0ZUNoYW5uZWwoY29uZmlnKSk7
Ci0gICAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKGlmYWNlXy5nZXQoKSk7CisgICAgY2hhbm5lbC0+
U2V0SW50ZXJmYWNlKGlmYWNlXy5nZXQoKSwgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsK
ICAgICBjaGFubmVsLT5TaWduYWxEYXRhUmVjZWl2ZWQuY29ubmVjdChyZWNlaXZlcl8uZ2V0KCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZha2VEYXRhUmVjZWl2
ZXI6Ok9uRGF0YVJlY2VpdmVkKTsKICAgICByZXR1cm4gY2hhbm5lbDsKQEAgLTMxNywxMyArMzE3
LDEzIEBAIFRFU1RfRihSdHBEYXRhTWVkaWFDaGFubmVsVGVzdCwgUmVjZWl2ZURhdGEpIHsKICAg
c3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OlJ0cERhdGFNZWRpYUNoYW5uZWw+IGRtYyhDcmVhdGVD
aGFubmVsKCkpOwogCiAgIC8vIFNldFJlY2VpdmVkIG5vdCBjYWxsZWQuCi0gIGRtYy0+T25QYWNr
ZXRSZWNlaXZlZCgmcGFja2V0LCBydGM6OlBhY2tldFRpbWUoKSk7CisgIGRtYy0+T25QYWNrZXRS
ZWNlaXZlZCgmcGFja2V0LCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIEVYUEVDVF9GQUxT
RShIYXNSZWNlaXZlZERhdGEoKSk7CiAKICAgZG1jLT5TZXRSZWNlaXZlKHRydWUpOwogCiAgIC8v
IFVua25vd24gcGF5bG9hZCBpZAotICBkbWMtPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcnRj
OjpQYWNrZXRUaW1lKCkpOworICBkbWMtPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFj
a2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfRkFMU0UoSGFzUmVjZWl2ZWREYXRhKCkpOwog
CiAgIGNyaWNrZXQ6OkRhdGFDb2RlYyBjb2RlYzsKQEAgLTMzNCw3ICszMzQsNyBAQCBURVNUX0Yo
UnRwRGF0YU1lZGlhQ2hhbm5lbFRlc3QsIFJlY2VpdmVEYXRhKSB7CiAgIEFTU0VSVF9UUlVFKGRt
Yy0+U2V0UmVjdlBhcmFtZXRlcnMocGFyYW1ldGVycykpOwogCiAgIC8vIFVua25vd24gc3RyZWFt
Ci0gIGRtYy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBydGM6OlBhY2tldFRpbWUoKSk7Cisg
IGRtYy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7
CiAgIEVYUEVDVF9GQUxTRShIYXNSZWNlaXZlZERhdGEoKSk7CiAKICAgY3JpY2tldDo6U3RyZWFt
UGFyYW1zIHN0cmVhbTsKQEAgLTM0Miw3ICszNDIsNyBAQCBURVNUX0YoUnRwRGF0YU1lZGlhQ2hh
bm5lbFRlc3QsIFJlY2VpdmVEYXRhKSB7CiAgIEFTU0VSVF9UUlVFKGRtYy0+QWRkUmVjdlN0cmVh
bShzdHJlYW0pKTsKIAogICAvLyBGaW5hbGx5IHdvcmtzIQotICBkbWMtPk9uUGFja2V0UmVjZWl2
ZWQoJnBhY2tldCwgcnRjOjpQYWNrZXRUaW1lKCkpOworICBkbWMtPk9uUGFja2V0UmVjZWl2ZWQo
JnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfVFJVRShIYXNSZWNl
aXZlZERhdGEoKSk7CiAgIEVYUEVDVF9FUSgiYWJjZGUiLCBHZXRSZWNlaXZlZERhdGEoKSk7CiAg
IEVYUEVDVF9FUSg1VSwgR2V0UmVjZWl2ZWREYXRhTGVuKCkpOwpAQCAtMzU1LDYgKzM1NSw2IEBA
IFRFU1RfRihSdHBEYXRhTWVkaWFDaGFubmVsVGVzdCwgSW52YWxpZFJ0cFBhY2tldHMpIHsKICAg
c3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OlJ0cERhdGFNZWRpYUNoYW5uZWw+IGRtYyhDcmVhdGVD
aGFubmVsKCkpOwogCiAgIC8vIFRvbyBzaG9ydAotICBkbWMtPk9uUGFja2V0UmVjZWl2ZWQoJnBh
Y2tldCwgcnRjOjpQYWNrZXRUaW1lKCkpOworICBkbWMtPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tl
dCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfRkFMU0UoSGFzUmVjZWl2ZWRE
YXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvYmFzZS9ydHB1dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHB1dGlscy5oCmluZGV4IDBmZDlhNTk4MTZi
NmU3ZTRjMWE4YWIzYzI0ZTk1NGRiMDEwZDZiMjguLmM1ZmUxNGZiM2QzODE3ODg5MzdkMTVhYjAw
MjdkMWIyNTZjODU2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwdXRpbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3J0cHV0aWxzLmgKQEAgLTEyLDYg
KzEyLDcgQEAKICNkZWZpbmUgTUVESUFfQkFTRV9SVFBVVElMU19IXwogCiAjaW5jbHVkZSAicnRj
X2Jhc2UvYnl0ZW9yZGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQu
aCIKIAogbmFtZXNwYWNlIHJ0YyB7CiBzdHJ1Y3QgUGFja2V0VGltZVVwZGF0ZVBhcmFtczsKQEAg
LTY4LDkgKzY5LDkgQEAgYm9vbCBJc1ZhbGlkUnRwUnRjcFBhY2tldFNpemUoYm9vbCBydGNwLCBz
aXplX3Qgc2l6ZSk7CiBjb25zdCBjaGFyKiBSdHBSdGNwU3RyaW5nTGl0ZXJhbChib29sIHJ0Y3Ap
OwogCiAvLyBWZXJpZmllcyB0aGF0IGEgcGFja2V0IGhhcyBhIHZhbGlkIFJUUCBoZWFkZXIuCi1i
b29sIFZhbGlkYXRlUnRwSGVhZGVyKGNvbnN0IHVpbnQ4X3QqIHJ0cCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBo
ZWFkZXJfbGVuZ3RoKTsKK2Jvb2wgUlRDX0VYUE9SVCBWYWxpZGF0ZVJ0cEhlYWRlcihjb25zdCB1
aW50OF90KiBydHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGhlYWRlcl9s
ZW5ndGgpOwogCiAvLyBIZWxwZXIgbWV0aG9kIHdoaWNoIHVwZGF0ZXMgdGhlIGFic29sdXRlIHNl
bmQgdGltZSBleHRlbnNpb24gaWYgcHJlc2VudC4KIGJvb2wgVXBkYXRlUnRwQWJzU2VuZFRpbWVF
eHRlbnNpb24odWludDhfdCogcnRwLApAQCAtODAsMTAgKzgxLDExIEBAIGJvb2wgVXBkYXRlUnRw
QWJzU2VuZFRpbWVFeHRlbnNpb24odWludDhfdCogcnRwLAogCiAvLyBBcHBsaWVzIHNwZWNpZmll
ZCB8b3B0aW9uc3wgdG8gdGhlIHBhY2tldC4gSXQgdXBkYXRlcyB0aGUgYWJzb2x1dGUgc2VuZCB0
aW1lCiAvLyBleHRlbnNpb24gaGVhZGVyIGlmIGl0IGlzIHByZXNlbnQgcHJlc2VudCB0aGVuIHVw
ZGF0ZXMgSE1BQy4KLWJvb2wgQXBwbHlQYWNrZXRPcHRpb25zKHVpbnQ4X3QqIGRhdGEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lVXBkYXRlUGFyYW1zJiBwYWNrZXRfdGltZV9wYXJhbXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB0aW1lX3VzKTsKK2Jvb2wgUlRDX0VY
UE9SVAorQXBwbHlQYWNrZXRPcHRpb25zKHVpbnQ4X3QqIGRhdGEsCisgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRp
bWVVcGRhdGVQYXJhbXMmIHBhY2tldF90aW1lX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICB1
aW50NjRfdCB0aW1lX3VzKTsKIAogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS90
ZXN0dXRpbHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9iYXNlL3Rlc3R1dGlscy5jYwppbmRleCA5M2MyYmM5OGFlZjMyYjg3MDc3MmIzNTE1MGIy
ODQ5ZWY2OTA2N2Y1Li41MTJkYzkxZjkzYzMxYjMzZmVhM2M0NTRlODI3ZmMyMWU5OWMyNGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL3Rlc3R1dGlscy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3Rlc3R1dGlscy5jYwpAQCAtMTAsOTAgKzEwLDE0IEBACiAK
ICNpbmNsdWRlICJtZWRpYS9iYXNlL3Rlc3R1dGlscy5oIgogCi0jaW5jbHVkZSA8bWF0aC5oPgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJhcGkv
dmlkZW8vdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL3ZpZGVvY2FwdHVyZXIu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9ieXRlYnVmZmVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
Z3VuaXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9zdHJpbmd1dGlscy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Rlc3R1dGlscy5oIgogCiBuYW1l
c3BhY2UgY3JpY2tldCB7CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEltcGxlbWVudGF0aW9uIG9m
IFJhd1J0cFBhY2tldAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotdm9pZCBSYXdSdHBQYWNrZXQ6OldyaXRl
VG9CeXRlQnVmZmVyKHVpbnQzMl90IGluX3NzcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKLSAgaWYgKCFi
dWYpCi0gICAgcmV0dXJuOwotCi0gIGJ1Zi0+V3JpdGVVSW50OCh2ZXJfdG9fY2MpOwotICBidWYt
PldyaXRlVUludDgobV90b19wdCk7Ci0gIGJ1Zi0+V3JpdGVVSW50MTYoc2VxdWVuY2VfbnVtYmVy
KTsKLSAgYnVmLT5Xcml0ZVVJbnQzMih0aW1lc3RhbXApOwotICBidWYtPldyaXRlVUludDMyKGlu
X3NzcmMpOwotICBidWYtPldyaXRlQnl0ZXMocGF5bG9hZCwgc2l6ZW9mKHBheWxvYWQpKTsKLX0K
LQotYm9vbCBSYXdSdHBQYWNrZXQ6OlJlYWRGcm9tQnl0ZUJ1ZmZlcihydGM6OkJ5dGVCdWZmZXJS
ZWFkZXIqIGJ1ZikgewotICBpZiAoIWJ1ZikKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgYm9vbCBy
ZXQgPSB0cnVlOwotICByZXQgJj0gYnVmLT5SZWFkVUludDgoJnZlcl90b19jYyk7Ci0gIHJldCAm
PSBidWYtPlJlYWRVSW50OCgmbV90b19wdCk7Ci0gIHJldCAmPSBidWYtPlJlYWRVSW50MTYoJnNl
cXVlbmNlX251bWJlcik7Ci0gIHJldCAmPSBidWYtPlJlYWRVSW50MzIoJnRpbWVzdGFtcCk7Ci0g
IHJldCAmPSBidWYtPlJlYWRVSW50MzIoJnNzcmMpOwotICByZXQgJj0gYnVmLT5SZWFkQnl0ZXMo
cGF5bG9hZCwgc2l6ZW9mKHBheWxvYWQpKTsKLSAgcmV0dXJuIHJldDsKLX0KLQotYm9vbCBSYXdS
dHBQYWNrZXQ6OlNhbWVFeGNlcHRTZXFOdW1UaW1lc3RhbXBTc3JjKGNvbnN0IFJhd1J0cFBhY2tl
dCYgcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQxNl90IHNlcSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCB0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBzc2MpIGNvbnN0IHsKLSAgcmV0dXJuIHNlcXVlbmNl
X251bWJlciA9PSBzZXEgJiYgdGltZXN0YW1wID09IHRzICYmCi0gICAgICAgICB2ZXJfdG9fY2Mg
PT0gcGFja2V0LnZlcl90b19jYyAmJiBtX3RvX3B0ID09IHBhY2tldC5tX3RvX3B0ICYmCi0gICAg
ICAgICBzc3JjID09IHNzYyAmJiAwID09IG1lbWNtcChwYXlsb2FkLCBwYWNrZXQucGF5bG9hZCwg
c2l6ZW9mKHBheWxvYWQpKTsKLX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gSW1wbGVtZW50YXRp
b24gb2YgUmF3UnRjcFBhY2tldAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotdm9pZCBSYXdSdGNwUGFja2V0
OjpXcml0ZVRvQnl0ZUJ1ZmZlcihydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3Qgewot
ICBpZiAoIWJ1ZikKLSAgICByZXR1cm47Ci0KLSAgYnVmLT5Xcml0ZVVJbnQ4KHZlcl90b19jb3Vu
dCk7Ci0gIGJ1Zi0+V3JpdGVVSW50OCh0eXBlKTsKLSAgYnVmLT5Xcml0ZVVJbnQxNihsZW5ndGgp
OwotICBidWYtPldyaXRlQnl0ZXMocGF5bG9hZCwgc2l6ZW9mKHBheWxvYWQpKTsKLX0KLQotYm9v
bCBSYXdSdGNwUGFja2V0OjpSZWFkRnJvbUJ5dGVCdWZmZXIocnRjOjpCeXRlQnVmZmVyUmVhZGVy
KiBidWYpIHsKLSAgaWYgKCFidWYpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGJvb2wgcmV0ID0g
dHJ1ZTsKLSAgcmV0ICY9IGJ1Zi0+UmVhZFVJbnQ4KCZ2ZXJfdG9fY291bnQpOwotICByZXQgJj0g
YnVmLT5SZWFkVUludDgoJnR5cGUpOwotICByZXQgJj0gYnVmLT5SZWFkVUludDE2KCZsZW5ndGgp
OwotICByZXQgJj0gYnVmLT5SZWFkQnl0ZXMocGF5bG9hZCwgc2l6ZW9mKHBheWxvYWQpKTsKLSAg
cmV0dXJuIHJldDsKLX0KLQotYm9vbCBSYXdSdGNwUGFja2V0OjpFcXVhbHNUbyhjb25zdCBSYXdS
dGNwUGFja2V0JiBwYWNrZXQpIGNvbnN0IHsKLSAgcmV0dXJuIHZlcl90b19jb3VudCA9PSBwYWNr
ZXQudmVyX3RvX2NvdW50ICYmIHR5cGUgPT0gcGFja2V0LnR5cGUgJiYKLSAgICAgICAgIGxlbmd0
aCA9PSBwYWNrZXQubGVuZ3RoICYmCi0gICAgICAgICAwID09IG1lbWNtcChwYXlsb2FkLCBwYWNr
ZXQucGF5bG9hZCwgc2l6ZW9mKHBheWxvYWQpKTsKLX0KLQogLy8gSW1wbGVtZW50YXRpb24gb2Yg
VmlkZW9DYXB0dXJlTGlzdGVuZXIuCiBWaWRlb0NhcHR1cmVyTGlzdGVuZXI6OlZpZGVvQ2FwdHVy
ZXJMaXN0ZW5lcihWaWRlb0NhcHR1cmVyKiBjYXB0dXJlcikKICAgICA6IGNhcHR1cmVyXyhjYXB0
dXJlciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9iYXNlL3Rlc3R1dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS90ZXN0dXRpbHMuaAppbmRleCBjODQ2OTYyMzZiNGE0
MDJmYzRjNDZlMzQxZGEyOTgzNjEzNmQzNTM2Li42YjYzZmZkMTgwMDAzNjQ2Y2FhNTRhZjc1NTc1
NGI3ODU2YjVlODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3Rlc3R1dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdGVzdHV0aWxzLmgKQEAgLTIwLDEy
ICsyMCw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCiAKLW5hbWVzcGFjZSBydGMgewot
Y2xhc3MgQnl0ZUJ1ZmZlclJlYWRlcjsKLWNsYXNzIEJ5dGVCdWZmZXJXcml0ZXI7Ci1jbGFzcyBT
dHJlYW1JbnRlcmZhY2U7Ci19ICAvLyBuYW1lc3BhY2UgcnRjCi0KIG5hbWVzcGFjZSB3ZWJydGMg
ewogY2xhc3MgVmlkZW9GcmFtZTsKIH0KQEAgLTQzLDQwICszNyw2IEBAIGlubGluZSBzdGQ6OnZl
Y3RvcjxUPiBNYWtlVmVjdG9yKGNvbnN0IFQgYVtdLCBzaXplX3QgcykgewogfQogI2RlZmluZSBN
QUtFX1ZFQ1RPUihhKSBjcmlja2V0OjpNYWtlVmVjdG9yKGEsIGFycmF5c2l6ZShhKSkKIAotc3Ry
dWN0IFJ0cER1bXBQYWNrZXQ7Ci1jbGFzcyBSdHBEdW1wV3JpdGVyOwotCi1zdHJ1Y3QgUmF3UnRw
UGFja2V0IHsKLSAgdm9pZCBXcml0ZVRvQnl0ZUJ1ZmZlcih1aW50MzJfdCBpbl9zc3JjLCBydGM6
OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3Q7Ci0gIGJvb2wgUmVhZEZyb21CeXRlQnVmZmVy
KHJ0Yzo6Qnl0ZUJ1ZmZlclJlYWRlciogYnVmKTsKLSAgLy8gQ2hlY2sgaWYgdGhpcyBwYWNrZXQg
aXMgdGhlIHNhbWUgYXMgdGhlIHNwZWNpZmllZCBwYWNrZXQgZXhjZXB0IHRoZQotICAvLyBzZXF1
ZW5jZSBudW1iZXIgYW5kIHRpbWVzdGFtcCwgd2hpY2ggc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRo
ZSBzcGVjaWZpZWQKLSAgLy8gcGFyYW1ldGVycy4KLSAgYm9vbCBTYW1lRXhjZXB0U2VxTnVtVGlt
ZXN0YW1wU3NyYyhjb25zdCBSYXdSdHBQYWNrZXQmIHBhY2tldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3Qgc3NjKSBjb25zdDsKLSAgaW50IHNpemUoKSBjb25zdCB7IHJldHVy
biAyODsgfQotCi0gIHVpbnQ4X3QgdmVyX3RvX2NjOwotICB1aW50OF90IG1fdG9fcHQ7Ci0gIHVp
bnQxNl90IHNlcXVlbmNlX251bWJlcjsKLSAgdWludDMyX3QgdGltZXN0YW1wOwotICB1aW50MzJf
dCBzc3JjOwotICBjaGFyIHBheWxvYWRbMTZdOwotfTsKLQotc3RydWN0IFJhd1J0Y3BQYWNrZXQg
ewotICB2b2lkIFdyaXRlVG9CeXRlQnVmZmVyKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBj
b25zdDsKLSAgYm9vbCBSZWFkRnJvbUJ5dGVCdWZmZXIocnRjOjpCeXRlQnVmZmVyUmVhZGVyKiBi
dWYpOwotICBib29sIEVxdWFsc1RvKGNvbnN0IFJhd1J0Y3BQYWNrZXQmIHBhY2tldCkgY29uc3Q7
Ci0KLSAgdWludDhfdCB2ZXJfdG9fY291bnQ7Ci0gIHVpbnQ4X3QgdHlwZTsKLSAgdWludDE2X3Qg
bGVuZ3RoOwotICBjaGFyIHBheWxvYWRbMTZdOwotfTsKLQogLy8gVGVzdCBoZWxwZXIgZm9yIHRl
c3RpbmcgVmlkZW9DYXB0dXJlciBpbXBsZW1lbnRhdGlvbnMuCiBjbGFzcyBWaWRlb0NhcHR1cmVy
TGlzdGVuZXIKICAgICA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdHVy
bnV0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL3R1cm51dGlscy5oCmluZGV4IDEzZWQyNmI3YTVmZjdjYzI3NTY5YzI2NmE4ZGQ2NDUy
MmNmZmI2MjMuLjdhYTA2NTFjZWEzZWE1NTlmNGJlYjEzYjUzYjQyMmQxNTdmNGVhMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jh
c2UvdHVybnV0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS90dXJudXRpbHMuaApAQCAtMTQsMTYgKzE0LDE4IEBACiAjaW5jbHVk
ZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxjc3RkaW50PgogCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lz
dGVtL3J0Y19leHBvcnQuaCIKKwogbmFtZXNwYWNlIGNyaWNrZXQgewogCiBzdHJ1Y3QgUGFja2V0
T3B0aW9uczsKIAogLy8gRmluZHMgZGF0YSBsb2NhdGlvbiB3aXRoaW4gYSBUVVJOIENoYW5uZWwg
TWVzc2FnZSBvciBUVVJOIFNlbmQgSW5kaWNhdGlvbgogLy8gbWVzc2FnZS4KLWJvb2wgVW53cmFw
VHVyblBhY2tldChjb25zdCB1aW50OF90KiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHBhY2tldF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogY29udGVu
dF9wb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGNvbnRlbnRfc2l6ZSk7
Citib29sIFJUQ19FWFBPUlQgVW53cmFwVHVyblBhY2tldChjb25zdCB1aW50OF90KiBwYWNrZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFja2V0X3NpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGNvbnRlbnRfcG9zaXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGNvbnRlbnRfc2l6ZSk7
CiAKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9hZGFwdGVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRl
b2FkYXB0ZXIuY2MKaW5kZXggODQwMTAxYmNlZTM0MDNkNjRiYjhmOTFmNzVjNGQ1MWViZDA0Yjcy
ZC4uYjJlZDMzMzYxNDkzMDg4NzY2M2I1NzRmM2ZlNThjMDVjYjYyMTA5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRl
b2FkYXB0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvYmFzZS92aWRlb2FkYXB0ZXIuY2MKQEAgLTE2OSw4ICsxNjksMTggQEAgYm9vbCBW
aWRlb0FkYXB0ZXI6OkFkYXB0RnJhbWVSZXNvbHV0aW9uKGludCBpbl93aWR0aCwKICAgLy8gT25P
dXRwdXRGb3JtYXRSZXF1ZXN0IGFuZCBPblJlc29sdXRpb25GcmFtZXJhdGVSZXF1ZXN0LgogICBp
bnQgbWF4X3BpeGVsX2NvdW50ID0gcmVzb2x1dGlvbl9yZXF1ZXN0X21heF9waXhlbF9jb3VudF87
CiAKLSAgaWYgKG1heF9waXhlbF9jb3VudF8pCi0gICAgbWF4X3BpeGVsX2NvdW50ID0gc3RkOjpt
aW4obWF4X3BpeGVsX2NvdW50LCAqbWF4X3BpeGVsX2NvdW50Xyk7CisgIC8vIFNlbGVjdCB0YXJn
ZXQgYXNwZWN0IHJhdGlvIGFuZCBtYXggcGl4ZWwgY291bnQgZGVwZW5kaW5nIG9uIGlucHV0IGZy
YW1lCisgIC8vIG9yaWVudGF0aW9uLgorICBhYnNsOjpvcHRpb25hbDxzdGQ6OnBhaXI8aW50LCBp
bnQ+PiB0YXJnZXRfYXNwZWN0X3JhdGlvOworICBpZiAoaW5fd2lkdGggPiBpbl9oZWlnaHQpIHsK
KyAgICB0YXJnZXRfYXNwZWN0X3JhdGlvID0gdGFyZ2V0X2xhbmRzY2FwZV9hc3BlY3RfcmF0aW9f
OworICAgIGlmIChtYXhfbGFuZHNjYXBlX3BpeGVsX2NvdW50XykKKyAgICAgIG1heF9waXhlbF9j
b3VudCA9IHN0ZDo6bWluKG1heF9waXhlbF9jb3VudCwgKm1heF9sYW5kc2NhcGVfcGl4ZWxfY291
bnRfKTsKKyAgfSBlbHNlIHsKKyAgICB0YXJnZXRfYXNwZWN0X3JhdGlvID0gdGFyZ2V0X3BvcnRy
YWl0X2FzcGVjdF9yYXRpb187CisgICAgaWYgKG1heF9wb3J0cmFpdF9waXhlbF9jb3VudF8pCisg
ICAgICBtYXhfcGl4ZWxfY291bnQgPSBzdGQ6Om1pbihtYXhfcGl4ZWxfY291bnQsICptYXhfcG9y
dHJhaXRfcGl4ZWxfY291bnRfKTsKKyAgfQogCiAgIGludCB0YXJnZXRfcGl4ZWxfY291bnQgPQog
ICAgICAgc3RkOjptaW4ocmVzb2x1dGlvbl9yZXF1ZXN0X3RhcmdldF9waXhlbF9jb3VudF8sIG1h
eF9waXhlbF9jb3VudCk7CkBAIC0xOTUsMTkgKzIwNSwxNCBAQCBib29sIFZpZGVvQWRhcHRlcjo6
QWRhcHRGcmFtZVJlc29sdXRpb24oaW50IGluX3dpZHRoLAogICB9CiAKICAgLy8gQ2FsY3VsYXRl
IGhvdyB0aGUgaW5wdXQgc2hvdWxkIGJlIGNyb3BwZWQuCi0gIGlmICghdGFyZ2V0X2FzcGVjdF9y
YXRpb18gfHwgdGFyZ2V0X2FzcGVjdF9yYXRpb18tPmZpcnN0IDw9IDAgfHwKLSAgICAgIHRhcmdl
dF9hc3BlY3RfcmF0aW9fLT5zZWNvbmQgPD0gMCkgeworICBpZiAoIXRhcmdldF9hc3BlY3RfcmF0
aW8gfHwgdGFyZ2V0X2FzcGVjdF9yYXRpby0+Zmlyc3QgPD0gMCB8fAorICAgICAgdGFyZ2V0X2Fz
cGVjdF9yYXRpby0+c2Vjb25kIDw9IDApIHsKICAgICAqY3JvcHBlZF93aWR0aCA9IGluX3dpZHRo
OwogICAgICpjcm9wcGVkX2hlaWdodCA9IGluX2hlaWdodDsKICAgfSBlbHNlIHsKLSAgICAvLyBB
ZGp1c3QgfHRhcmdldF9hc3BlY3RfcmF0aW9ffCBvcmllbnRhdGlvbiB0byBtYXRjaCBpbnB1dC4K
LSAgICBpZiAoKGluX3dpZHRoID4gaW5faGVpZ2h0KSAhPQotICAgICAgICAodGFyZ2V0X2FzcGVj
dF9yYXRpb18tPmZpcnN0ID4gdGFyZ2V0X2FzcGVjdF9yYXRpb18tPnNlY29uZCkpIHsKLSAgICAg
IHN0ZDo6c3dhcCh0YXJnZXRfYXNwZWN0X3JhdGlvXy0+Zmlyc3QsIHRhcmdldF9hc3BlY3RfcmF0
aW9fLT5zZWNvbmQpOwotICAgIH0KICAgICBjb25zdCBmbG9hdCByZXF1ZXN0ZWRfYXNwZWN0ID0K
LSAgICAgICAgdGFyZ2V0X2FzcGVjdF9yYXRpb18tPmZpcnN0IC8KLSAgICAgICAgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHRhcmdldF9hc3BlY3RfcmF0aW9fLT5zZWNvbmQpOworICAgICAgICB0YXJnZXRf
YXNwZWN0X3JhdGlvLT5maXJzdCAvCisgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0Pih0YXJnZXRf
YXNwZWN0X3JhdGlvLT5zZWNvbmQpOwogICAgICpjcm9wcGVkX3dpZHRoID0KICAgICAgICAgc3Rk
OjptaW4oaW5fd2lkdGgsIHN0YXRpY19jYXN0PGludD4oaW5faGVpZ2h0ICogcmVxdWVzdGVkX2Fz
cGVjdCkpOwogICAgICpjcm9wcGVkX2hlaWdodCA9CkBAIC0yNzQsOSArMjc5LDMzIEBAIHZvaWQg
VmlkZW9BZGFwdGVyOjpPbk91dHB1dEZvcm1hdFJlcXVlc3QoCiAgICAgY29uc3QgYWJzbDo6b3B0
aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4mIHRhcmdldF9hc3BlY3RfcmF0aW8sCiAgICAgY29u
c3QgYWJzbDo6b3B0aW9uYWw8aW50PiYgbWF4X3BpeGVsX2NvdW50LAogICAgIGNvbnN0IGFic2w6
Om9wdGlvbmFsPGludD4mIG1heF9mcHMpIHsKKyAgYWJzbDo6b3B0aW9uYWw8c3RkOjpwYWlyPGlu
dCwgaW50Pj4gdGFyZ2V0X2xhbmRzY2FwZV9hc3BlY3RfcmF0aW87CisgIGFic2w6Om9wdGlvbmFs
PHN0ZDo6cGFpcjxpbnQsIGludD4+IHRhcmdldF9wb3J0cmFpdF9hc3BlY3RfcmF0aW87CisgIGlm
ICh0YXJnZXRfYXNwZWN0X3JhdGlvICYmIHRhcmdldF9hc3BlY3RfcmF0aW8tPmZpcnN0ID4gMCAm
JgorICAgICAgdGFyZ2V0X2FzcGVjdF9yYXRpby0+c2Vjb25kID4gMCkgeworICAgIC8vIE1haW50
YWluIGlucHV0IG9yaWVudGF0aW9uLgorICAgIGNvbnN0IGludCBtYXhfc2lkZSA9CisgICAgICAg
IHN0ZDo6bWF4KHRhcmdldF9hc3BlY3RfcmF0aW8tPmZpcnN0LCB0YXJnZXRfYXNwZWN0X3JhdGlv
LT5zZWNvbmQpOworICAgIGNvbnN0IGludCBtaW5fc2lkZSA9CisgICAgICAgIHN0ZDo6bWluKHRh
cmdldF9hc3BlY3RfcmF0aW8tPmZpcnN0LCB0YXJnZXRfYXNwZWN0X3JhdGlvLT5zZWNvbmQpOwor
ICAgIHRhcmdldF9sYW5kc2NhcGVfYXNwZWN0X3JhdGlvID0gc3RkOjptYWtlX3BhaXIobWF4X3Np
ZGUsIG1pbl9zaWRlKTsKKyAgICB0YXJnZXRfcG9ydHJhaXRfYXNwZWN0X3JhdGlvID0gc3RkOjpt
YWtlX3BhaXIobWluX3NpZGUsIG1heF9zaWRlKTsKKyAgfQorICBPbk91dHB1dEZvcm1hdFJlcXVl
c3QodGFyZ2V0X2xhbmRzY2FwZV9hc3BlY3RfcmF0aW8sIG1heF9waXhlbF9jb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldF9wb3J0cmFpdF9hc3BlY3RfcmF0aW8sIG1heF9waXhl
bF9jb3VudCwgbWF4X2Zwcyk7Cit9CisKK3ZvaWQgVmlkZW9BZGFwdGVyOjpPbk91dHB1dEZvcm1h
dFJlcXVlc3QoCisgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4m
IHRhcmdldF9sYW5kc2NhcGVfYXNwZWN0X3JhdGlvLAorICAgIGNvbnN0IGFic2w6Om9wdGlvbmFs
PGludD4mIG1heF9sYW5kc2NhcGVfcGl4ZWxfY291bnQsCisgICAgY29uc3QgYWJzbDo6b3B0aW9u
YWw8c3RkOjpwYWlyPGludCwgaW50Pj4mIHRhcmdldF9wb3J0cmFpdF9hc3BlY3RfcmF0aW8sCisg
ICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiYgbWF4X3BvcnRyYWl0X3BpeGVsX2NvdW50LAor
ICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9mcHMpIHsKICAgcnRjOjpDcml0U2Nv
cGUgY3MoJmNyaXRpY2FsX3NlY3Rpb25fKTsKLSAgdGFyZ2V0X2FzcGVjdF9yYXRpb18gPSB0YXJn
ZXRfYXNwZWN0X3JhdGlvOwotICBtYXhfcGl4ZWxfY291bnRfID0gbWF4X3BpeGVsX2NvdW50Owor
ICB0YXJnZXRfbGFuZHNjYXBlX2FzcGVjdF9yYXRpb18gPSB0YXJnZXRfbGFuZHNjYXBlX2FzcGVj
dF9yYXRpbzsKKyAgbWF4X2xhbmRzY2FwZV9waXhlbF9jb3VudF8gPSBtYXhfbGFuZHNjYXBlX3Bp
eGVsX2NvdW50OworICB0YXJnZXRfcG9ydHJhaXRfYXNwZWN0X3JhdGlvXyA9IHRhcmdldF9wb3J0
cmFpdF9hc3BlY3RfcmF0aW87CisgIG1heF9wb3J0cmFpdF9waXhlbF9jb3VudF8gPSBtYXhfcG9y
dHJhaXRfcGl4ZWxfY291bnQ7CiAgIG1heF9mcHNfID0gbWF4X2ZwczsKICAgbmV4dF9mcmFtZV90
aW1lc3RhbXBfbnNfID0gYWJzbDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9hZGFwdGVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3Zp
ZGVvYWRhcHRlci5oCmluZGV4IGJiOWFiODAyNmYwODhhY2Q5NDMyOTQ5MWNhMjVkNGE2MmVhOTQ2
ZmEuLjE4NjRkNWNjMGM3YmYzNThkOTViYmRhM2M1ZmJlMjA1NDA3ODA5YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2Uvdmlk
ZW9hZGFwdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvYmFzZS92aWRlb2FkYXB0ZXIuaApAQCAtNjgsNiArNjgsMTcgQEAgY2xhc3MgVmlk
ZW9BZGFwdGVyIHsKICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9waXhlbF9j
b3VudCwKICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9mcHMpOwogCisgIC8v
IFNhbWUgYXMgYWJvdmUsIGJ1dCBhbGxvd3Mgc2V0dGluZyB0d28gZGlmZmVyZW50IHRhcmdldCBh
c3BlY3QgcmF0aW9zCisgIC8vIGRlcGVuZGluZyBvbiBpbmNvbWluZyBmcmFtZSBvcmllbnRhdGlv
bi4gVGhpcyBnaXZlcyBtb3JlIGZpbmUtZ3JhaW5lZAorICAvLyBjb250cm9sIGFuZCBjYW4gZS5n
LiBiZSB1c2VkIHRvIGZvcmNlIGxhbmRzY2FwZSB2aWRlbyB0byBiZSBjcm9wcGVkIHRvCisgIC8v
IHBvcnRyYWl0IHZpZGVvLgorICB2b2lkIE9uT3V0cHV0Rm9ybWF0UmVxdWVzdCgKKyAgICAgIGNv
bnN0IGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQsIGludD4+JiB0YXJnZXRfbGFuZHNjYXBl
X2FzcGVjdF9yYXRpbywKKyAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9sYW5k
c2NhcGVfcGl4ZWxfY291bnQsCisgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxzdGQ6OnBhaXI8
aW50LCBpbnQ+PiYgdGFyZ2V0X3BvcnRyYWl0X2FzcGVjdF9yYXRpbywKKyAgICAgIGNvbnN0IGFi
c2w6Om9wdGlvbmFsPGludD4mIG1heF9wb3J0cmFpdF9waXhlbF9jb3VudCwKKyAgICAgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPGludD4mIG1heF9mcHMpOworCiAgIC8vIFJlcXVlc3RzIHRoZSBvdXRw
dXQgZnJhbWUgc2l6ZSBmcm9tIHxBZGFwdEZyYW1lUmVzb2x1dGlvbnwgdG8gaGF2ZSBhcyBjbG9z
ZQogICAvLyBhcyBwb3NzaWJsZSB0byB8dGFyZ2V0X3BpeGVsX2NvdW50fCBwaXhlbHMgKGlmIHNl
dCkgYnV0IG5vIG1vcmUgdGhhbgogICAvLyB8bWF4X3BpeGVsX2NvdW50fC4KQEAgLTEwMCw5ICsx
MTEsMTQgQEAgY2xhc3MgVmlkZW9BZGFwdGVyIHsKICAgLy8gTWF4IG51bWJlciBvZiBwaXhlbHMv
ZnBzIHJlcXVlc3RlZCB2aWEgY2FsbHMgdG8gT25PdXRwdXRGb3JtYXRSZXF1ZXN0LAogICAvLyBP
blJlc29sdXRpb25GcmFtZXJhdGVSZXF1ZXN0IHJlc3BlY3RpdmVseS4KICAgLy8gVGhlIGFkYXB0
ZWQgb3V0cHV0IGZvcm1hdCBpcyB0aGUgbWluaW11bSBvZiB0aGVzZS4KLSAgYWJzbDo6b3B0aW9u
YWw8c3RkOjpwYWlyPGludCwgaW50Pj4gdGFyZ2V0X2FzcGVjdF9yYXRpb18KKyAgYWJzbDo6b3B0
aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4gdGFyZ2V0X2xhbmRzY2FwZV9hc3BlY3RfcmF0aW9f
CisgICAgICBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9uXyk7CisgIGFic2w6Om9wdGlv
bmFsPGludD4gbWF4X2xhbmRzY2FwZV9waXhlbF9jb3VudF8KKyAgICAgIFJUQ19HVUFSREVEX0JZ
KGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgYWJzbDo6b3B0aW9uYWw8c3RkOjpwYWlyPGludCwgaW50
Pj4gdGFyZ2V0X3BvcnRyYWl0X2FzcGVjdF9yYXRpb18KKyAgICAgIFJUQ19HVUFSREVEX0JZKGNy
aXRpY2FsX3NlY3Rpb25fKTsKKyAgYWJzbDo6b3B0aW9uYWw8aW50PiBtYXhfcG9ydHJhaXRfcGl4
ZWxfY291bnRfCiAgICAgICBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9uXyk7Ci0gIGFi
c2w6Om9wdGlvbmFsPGludD4gbWF4X3BpeGVsX2NvdW50XyBSVENfR1VBUkRFRF9CWShjcml0aWNh
bF9zZWN0aW9uXyk7CiAgIGFic2w6Om9wdGlvbmFsPGludD4gbWF4X2Zwc18gUlRDX0dVQVJERURf
QlkoY3JpdGljYWxfc2VjdGlvbl8pOwogICBpbnQgcmVzb2x1dGlvbl9yZXF1ZXN0X3RhcmdldF9w
aXhlbF9jb3VudF8gUlRDX0dVQVJERURfQlkoY3JpdGljYWxfc2VjdGlvbl8pOwogICBpbnQgcmVz
b2x1dGlvbl9yZXF1ZXN0X21heF9waXhlbF9jb3VudF8gUlRDX0dVQVJERURfQlkoY3JpdGljYWxf
c2VjdGlvbl8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2FkYXB0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvYWRhcHRlcl91
bml0dGVzdC5jYwppbmRleCA2N2E2NjI2MzllNTUxNGU0NDQzOGQyYTVlMDE2ODZhMDkxZjBiZTU4
Li5jNjAwZmMyYzA3MzBjOTkxNmM0YTRhOWMxN2IzODI2YTdhZTg5MjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVv
YWRhcHRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvYWRhcHRlcl91bml0dGVzdC5jYwpAQCAtMTgsNyAr
MTgsNiBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgIm1lZGlh
L2Jhc2UvZmFrZWZyYW1lc291cmNlLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNoYW5u
ZWwuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL3Rlc3R1dGlscy5oIgogI2luY2x1ZGUgIm1lZGlh
L2Jhc2UvdmlkZW9hZGFwdGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCkBAIC0xMTEyLDQgKzExMTEsNjEgQEAgVEVTVF9QKFZp
ZGVvQWRhcHRlclRlc3QsIFRlc3RBZGFwdFRvTWF4KSB7CiAgIEVYUEVDVF9FUSg2NDAsIG91dF93
aWR0aF8pOwogICBFWFBFQ1RfRVEoMzYwLCBvdXRfaGVpZ2h0Xyk7CiB9CisKKy8vIFRlc3QgYWRq
dXN0aW5nIHRvIDE2OjkgaW4gbGFuZHNjYXBlLCBhbmQgOToxNiBpbiBwb3J0cmFpdC4KK1RFU1Qo
VmlkZW9BZGFwdGVyVGVzdE11bHRpcGxlT3JpZW50YXRpb24sIFRlc3ROb3JtYWwpIHsKKyAgVmlk
ZW9BZGFwdGVyIHZpZGVvX2FkYXB0ZXI7CisgIHZpZGVvX2FkYXB0ZXIuT25PdXRwdXRGb3JtYXRS
ZXF1ZXN0KHN0ZDo6bWFrZV9wYWlyKDY0MCwgMzYwKSwgNjQwICogMzYwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcigzNjAsIDY0MCksIDM2MCAq
IDY0MCwgMzApOworCisgIGludCBjcm9wcGVkX3dpZHRoOworICBpbnQgY3JvcHBlZF9oZWlnaHQ7
CisgIGludCBvdXRfd2lkdGg7CisgIGludCBvdXRfaGVpZ2h0OworICBFWFBFQ1RfVFJVRSh2aWRl
b19hZGFwdGVyLkFkYXB0RnJhbWVSZXNvbHV0aW9uKAorICAgICAgLyogaW5fd2lkdGg9ICovIDY0
MCwgLyogaW5faGVpZ2h0PSAqLyA0ODAsIC8qIGluX3RpbWVzdGFtcF9ucz0gKi8gMCwKKyAgICAg
ICZjcm9wcGVkX3dpZHRoLCAmY3JvcHBlZF9oZWlnaHQsICZvdXRfd2lkdGgsICZvdXRfaGVpZ2h0
KSk7CisgIEVYUEVDVF9FUSg2NDAsIGNyb3BwZWRfd2lkdGgpOworICBFWFBFQ1RfRVEoMzYwLCBj
cm9wcGVkX2hlaWdodCk7CisgIEVYUEVDVF9FUSg2NDAsIG91dF93aWR0aCk7CisgIEVYUEVDVF9F
USgzNjAsIG91dF9oZWlnaHQpOworCisgIEVYUEVDVF9UUlVFKHZpZGVvX2FkYXB0ZXIuQWRhcHRG
cmFtZVJlc29sdXRpb24oCisgICAgICAvKiBpbl93aWR0aD0gKi8gNDgwLCAvKiBpbl9oZWlnaHQ9
ICovIDY0MCwKKyAgICAgIC8qIGluX3RpbWVzdGFtcF9ucz0gKi8gcnRjOjprTnVtTmFub3NlY3NQ
ZXJTZWMgLyAzMCwgJmNyb3BwZWRfd2lkdGgsCisgICAgICAmY3JvcHBlZF9oZWlnaHQsICZvdXRf
d2lkdGgsICZvdXRfaGVpZ2h0KSk7CisgIEVYUEVDVF9FUSgzNjAsIGNyb3BwZWRfd2lkdGgpOwor
ICBFWFBFQ1RfRVEoNjQwLCBjcm9wcGVkX2hlaWdodCk7CisgIEVYUEVDVF9FUSgzNjAsIG91dF93
aWR0aCk7CisgIEVYUEVDVF9FUSg2NDAsIG91dF9oZWlnaHQpOworfQorCisvLyBGb3JjZSBvdXRw
dXQgdG8gYmUgOToxNiwgZXZlbiBmb3IgbGFuZHNjYXBlIGlucHV0LgorVEVTVChWaWRlb0FkYXB0
ZXJUZXN0TXVsdGlwbGVPcmllbnRhdGlvbiwgVGVzdEZvcmNlUG9ydHJhaXQpIHsKKyAgVmlkZW9B
ZGFwdGVyIHZpZGVvX2FkYXB0ZXI7CisgIHZpZGVvX2FkYXB0ZXIuT25PdXRwdXRGb3JtYXRSZXF1
ZXN0KHN0ZDo6bWFrZV9wYWlyKDM2MCwgNjQwKSwgNjQwICogMzYwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcigzNjAsIDY0MCksIDM2MCAqIDY0
MCwgMzApOworCisgIGludCBjcm9wcGVkX3dpZHRoOworICBpbnQgY3JvcHBlZF9oZWlnaHQ7Cisg
IGludCBvdXRfd2lkdGg7CisgIGludCBvdXRfaGVpZ2h0OworICBFWFBFQ1RfVFJVRSh2aWRlb19h
ZGFwdGVyLkFkYXB0RnJhbWVSZXNvbHV0aW9uKAorICAgICAgLyogaW5fd2lkdGg9ICovIDY0MCwg
LyogaW5faGVpZ2h0PSAqLyA0ODAsIC8qIGluX3RpbWVzdGFtcF9ucz0gKi8gMCwKKyAgICAgICZj
cm9wcGVkX3dpZHRoLCAmY3JvcHBlZF9oZWlnaHQsICZvdXRfd2lkdGgsICZvdXRfaGVpZ2h0KSk7
CisgIEVYUEVDVF9FUSgyNzAsIGNyb3BwZWRfd2lkdGgpOworICBFWFBFQ1RfRVEoNDgwLCBjcm9w
cGVkX2hlaWdodCk7CisgIEVYUEVDVF9FUSgyNzAsIG91dF93aWR0aCk7CisgIEVYUEVDVF9FUSg0
ODAsIG91dF9oZWlnaHQpOworCisgIEVYUEVDVF9UUlVFKHZpZGVvX2FkYXB0ZXIuQWRhcHRGcmFt
ZVJlc29sdXRpb24oCisgICAgICAvKiBpbl93aWR0aD0gKi8gNDgwLCAvKiBpbl9oZWlnaHQ9ICov
IDY0MCwKKyAgICAgIC8qIGluX3RpbWVzdGFtcF9ucz0gKi8gcnRjOjprTnVtTmFub3NlY3NQZXJT
ZWMgLyAzMCwgJmNyb3BwZWRfd2lkdGgsCisgICAgICAmY3JvcHBlZF9oZWlnaHQsICZvdXRfd2lk
dGgsICZvdXRfaGVpZ2h0KSk7CisgIEVYUEVDVF9FUSgzNjAsIGNyb3BwZWRfd2lkdGgpOworICBF
WFBFQ1RfRVEoNjQwLCBjcm9wcGVkX2hlaWdodCk7CisgIEVYUEVDVF9FUSgzNjAsIG91dF93aWR0
aCk7CisgIEVYUEVDVF9FUSg2NDAsIG91dF9oZWlnaHQpOworfQorCiB9ICAvLyBuYW1lc3BhY2Ug
Y3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY2FwdHVyZXIuaAppbmRleCA4MjZl
MzhmYTVhMWFjYmRiMTYyOGU3NzQ1YTEwZDUyMDQ5ODZmYjUyLi4zMjc0MjA2MmFhOTI4YzAyMTc4
ODVjM2QwYWEzODZiYTkxOGUxNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY2FwdHVyZXIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY2Fw
dHVyZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvdmlkZW9jb21t
b24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0
Y19leHBvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Ns
b3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3RpbWVzdGFtcGFsaWduZXIuaCIKQEAgLTcyLDggKzczLDkgQEAgZW51bSBDYXB0dXJl
U3RhdGUgewogLy8gICBtZWRpYSBlbmdpbmUgdGhyZWFkKS4gSGVuY2UsIHRoZSBWaWRlb0NhcHR1
cmUgc3ViY2xhc3NlcyBkb250IG5lZWQgdG8gYmUKIC8vICAgdGhyZWFkIHNhZmUuCiAvLwotY2xh
c3MgVmlkZW9DYXB0dXJlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiwKLSAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpWaWRlb1NvdXJjZUludGVyZmFjZTx3ZWJydGM6OlZp
ZGVvRnJhbWU+IHsKK2NsYXNzIFJUQ19FWFBPUlQgVmlkZW9DYXB0dXJlcgorICAgIDogcHVibGlj
IHNpZ3Nsb3Q6Omhhc19zbG90czw+LAorICAgICAgcHVibGljIHJ0Yzo6VmlkZW9Tb3VyY2VJbnRl
cmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiB7CiAgcHVibGljOgogICBWaWRlb0NhcHR1cmVyKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2Jhc2UvdmlkZW9jYXB0dXJlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9jYXB0dXJlcl91bml0dGVz
dC5jYwppbmRleCAwODBmNGEwOGNhZWFiMDQ4ZDZmYTFlM2JlYjlkYmQwODQ2N2Q5ZjNmLi4wNzM0
NGNhN2FjODVhZTI0NTFiNDk3ZmE0OWU2NzQwZTc1OGJjZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY2FwdHVy
ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyX3VuaXR0ZXN0LmNjCkBAIC0xNSw3ICsxNSw2
IEBACiAKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2V2aWRlb2NhcHR1cmVyLmgiCiAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9mYWtldmlkZW9yZW5kZXJlci5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2Uv
dGVzdHV0aWxzLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL3ZpZGVvY29tbW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY29tbW9uLmgKaW5kZXggMGZmZDk4OWNiNjUxNWYwZTVl
OWQyMjAwMWI4N2NiZjY0NWNjNzk5OC4uNjQ0N2NiYTNiMmI2OWFjNTNmNTg5YTc3Y2JhYzU1MDI0
YjNlYTY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9jb21tb24uaApAQCAtMTcsNiAr
MTcsNyBAQAogCiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVt
L3J0Y19leHBvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNw
YWNlIGNyaWNrZXQgewpAQCAtMTQ5LDcgKzE1MCw3IEBAIHN0cnVjdCBWaWRlb0Zvcm1hdFBvZCB7
CiAgIHVpbnQzMl90IGZvdXJjYzsgIC8vIENvbG9yIHNwYWNlLiBGT1VSQ0NfQU5ZIG1lYW5zIHRo
YXQgYW55IGNvbG9yIHNwYWNlIGlzIE9LLgogfTsKIAotc3RydWN0IFZpZGVvRm9ybWF0IDogVmlk
ZW9Gb3JtYXRQb2Qgeworc3RydWN0IFJUQ19FWFBPUlQgVmlkZW9Gb3JtYXQgOiBWaWRlb0Zvcm1h
dFBvZCB7CiAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IGtNaW5pbXVtSW50ZXJ2YWwgPQogICAgICAg
cnRjOjprTnVtTmFub3NlY3NQZXJTZWMgLyAxMDAwMDsgIC8vIDEwayBmcHMuCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2Uv
dnA5X3Byb2ZpbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9iYXNlL3ZwOV9wcm9maWxlLmNjCmluZGV4IGEyOGE5MTI3NjJhNzI5ZTYyNzk2NzQw
YWViODQ4MTVjM2I5OTFjMmEuLmM5Y2NhYTlmOWQ3ZGVjMWYwNTkxOTM1ZGRmOTYwZjljMGZkNmMz
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92cDlfcHJvZmlsZS5jYwpAQCAtMTUsNyArMTUs
NyBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIFByb2ZpbGUgaW5mb3JtYXRpb24gZm9yIFZQ
OSB2aWRlby4KLWNvbnN0IGNoYXIga1ZQOUZtdHBQcm9maWxlSWRbXSA9ICJ4LWdvb2dsZS1wcm9m
aWxlLWlkIjsKK2NvbnN0IGNoYXIga1ZQOUZtdHBQcm9maWxlSWRbXSA9ICJwcm9maWxlLWlkIjsK
IAogc3RkOjpzdHJpbmcgVlA5UHJvZmlsZVRvU3RyaW5nKFZQOVByb2ZpbGUgcHJvZmlsZSkgewog
ICBzd2l0Y2ggKHByb2ZpbGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuaApp
bmRleCA1Y2MxZDE2NmE4Nzg5YjE4MjlkN2FhMmQ5MTk1MWNhNWVmZTA4MjU4Li43NTVjNDZkYTJj
YmRiOTYzYjVhZWRjY2FlNGU5NTk2Zjg1NjRmMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZwOV9wcm9maWxlLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92
cDlfcHJvZmlsZS5oCkBAIC0xNiw3ICsxNiw2IEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0Lmgi
Ci0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9hZG1faGVscGVycy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2FkbV9oZWxwZXJz
LmgKaW5kZXggYzZlYTNhMjA5ZjJjOWFmMzYzMmJjNDhjMzkzNzZhZDRjOTVhZjI4MC4uMmEzNWQy
NmI0NzE2MTQwNTMzZTk2YTZhZjhhN2RlMzVkZjc2NDQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2FkbV9oZWxwZXJz
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL2FkbV9oZWxwZXJzLmgKQEAgLTExLDggKzExLDYgQEAKICNpZm5kZWYgTUVESUFfRU5H
SU5FX0FETV9IRUxQRVJTX0hfCiAjZGVmaW5lIE1FRElBX0VOR0lORV9BRE1fSEVMUEVSU19IXwog
Ci0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKLQog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNsYXNzIEF1ZGlvRGV2aWNlTW9kdWxlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5l
L2FwbV9oZWxwZXJzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2FwbV9oZWxwZXJzX3VuaXR0ZXN0LmNjCmluZGV4IDQ2
NGUwNTNkYzBhOGQxNmJiNmUxZDJiZmY2OWE5OTNiMmQ0ZWY5MmMuLjcwYWMwYzFjMjFlOGE1MzVi
Y2RiNmEwMzA5OWQ4M2NkMzU2MzljMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9hcG1faGVscGVyc191bml0dGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvYXBtX2hlbHBlcnNfdW5pdHRlc3QuY2MKQEAgLTE2NCwxMSArMTY0LDQgQEAgVEVTVChB
cG1IZWxwZXJzVGVzdCwgVHlwaW5nRGV0ZWN0aW9uU3RhdHVzX0VuYWJsZURpc2FibGUpIHsKICAg
RVhQRUNUX0VRKFZvaWNlRGV0ZWN0aW9uOjprVmVyeUxvd0xpa2VsaWhvb2QsIHZkLT5saWtlbGlo
b29kKCkpOwogICBFWFBFQ1RfRkFMU0UodmQtPmlzX2VuYWJsZWQoKSk7CiB9Ci0KLS8vIFRPRE8o
c29sZW5iZXJnKTogTW92ZSB0aGlzIHRlc3QgdG8gYSBiZXR0ZXIgcGxhY2UgLSBhZGRlZCBoZXJl
IGZvciB0aGUgc2FrZQotLy8gb2YgZHVwbGljYXRpbmcgYWxsIHJlbGV2YW50IHRlc3RzIGZyb20g
YXVkaW9fcHJvY2Vzc2luZ190ZXN0LmNjLgotVEVTVChBcG1IZWxwZXJzVGVzdCwgSGlnaFBhc3NG
aWx0ZXJfRGVmYXVsdE1vZGUpIHsKLSAgVGVzdEhlbHBlciBoZWxwZXI7Ci0gIEVYUEVDVF9GQUxT
RShoZWxwZXIuYXBtKCktPmhpZ2hfcGFzc19maWx0ZXIoKS0+aXNfZW5hYmxlZCgpKTsKLX0KIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb25zdGFudHMuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29uc3RhbnRzLmNj
CmluZGV4IDczNjY4NWZjNzlmMzY4NGY0ZGY0MTk1ZWViNGY0ODUwM2FlNDU4MTUuLmZiM2FjNjk4
ZTYxNzAyNzhlNWI4ZTgxMzc3ZWQ3OGVkYjJkYWQ2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb25zdGFudHMuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL2NvbnN0YW50cy5jYwpAQCAtMTQsNSArMTQsNiBAQCBuYW1lc3BhY2UgY3JpY2tldCB7CiAK
IGNvbnN0IGludCBrTWluVmlkZW9CaXRyYXRlQnBzID0gMzAwMDA7CiBjb25zdCBpbnQga1ZpZGVv
TXR1ID0gMTIwMDsKLWNvbnN0IGludCBrVmlkZW9SdHBCdWZmZXJTaXplID0gNjU1MzY7Citjb25z
dCBpbnQga1ZpZGVvUnRwU2VuZEJ1ZmZlclNpemUgPSA2NTUzNjsKK2NvbnN0IGludCBrVmlkZW9S
dHBSZWN2QnVmZmVyU2l6ZSA9IDI2MjE0NDsKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvY29uc3RhbnRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9lbmdpbmUvY29uc3RhbnRzLmgKaW5kZXggZWE2YzA3NTRhNjVkOTcyZWJmODYx
N2JkYjE0YWE4NjlhMThhNmEyNC4uYjEzNjA2MDU0NjEwMDE5NGVkNmZlNTE0NzhmZWI1YjE1ODM4
MzllNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL2NvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb25zdGFudHMuaApAQCAtMTQsNyArMTQs
OCBAQAogbmFtZXNwYWNlIGNyaWNrZXQgewogCiBleHRlcm4gY29uc3QgaW50IGtWaWRlb010dTsK
LWV4dGVybiBjb25zdCBpbnQga1ZpZGVvUnRwQnVmZmVyU2l6ZTsKK2V4dGVybiBjb25zdCBpbnQg
a1ZpZGVvUnRwU2VuZEJ1ZmZlclNpemU7CitleHRlcm4gY29uc3QgaW50IGtWaWRlb1J0cFJlY3ZC
dWZmZXJTaXplOwogCiBleHRlcm4gY29uc3QgY2hhciBrSDI2NENvZGVjTmFtZVtdOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvY29udmVydF9sZWdhY3lfdmlkZW9fZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb252ZXJ0X2xlZ2FjeV92aWRl
b19mYWN0b3J5LmNjCmluZGV4IDdkYTFiMGZlMmZkN2MyYjc2MzgyZTIxZmZkZDEyMzM4ZDE1ZTg4
NjguLjI5N2ExNDM0MjViNGMxZWE0MWNjMDUxYWZhNDNhZDkxMzVjM2NkMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9j
b252ZXJ0X2xlZ2FjeV92aWRlb19mYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb252ZXJ0X2xlZ2FjeV92aWRlb19m
YWN0b3J5LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVk
ZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgi
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNp
bmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfc29mdHdhcmVfZmFsbGJhY2tf
d3JhcHBlci5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5LmgiCkBAIC0xMzAsNyArMTMxLDcgQEAgY2xhc3MgRW5jb2RlckFkYXB0ZXIgOiBwdWJsaWMg
d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5IHsKICAgICBpZiAoSXNGb3JtYXRTdXBwb3J0ZWQo
aW50ZXJuYWxfZW5jb2Rlcl9mYWN0b3J5Xy0+R2V0U3VwcG9ydGVkRm9ybWF0cygpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3JtYXQpKSB7CiAgICAgICBpbnRlcm5hbF9lbmNvZGVyID0K
LSAgICAgICAgICBDb2RlY05hbWVzRXEoZm9ybWF0Lm5hbWUuY19zdHIoKSwga1ZwOENvZGVjTmFt
ZSkKKyAgICAgICAgICBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCBrVnA4Q29k
ZWNOYW1lKQogICAgICAgICAgICAgICA/IGFic2w6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6VlA4RW5j
b2RlclNpbXVsY2FzdFByb3h5PigKICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxfZW5jb2Rl
cl9mYWN0b3J5Xy5nZXQoKSwgZm9ybWF0KQogICAgICAgICAgICAgICA6IGludGVybmFsX2VuY29k
ZXJfZmFjdG9yeV8tPkNyZWF0ZVZpZGVvRW5jb2Rlcihmb3JtYXQpOwpAQCAtMTQxLDcgKzE0Miw3
IEBAIGNsYXNzIEVuY29kZXJBZGFwdGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFj
dG9yeSB7CiAgICAgaWYgKElzRm9ybWF0U3VwcG9ydGVkKGV4dGVybmFsX2VuY29kZXJfZmFjdG9y
eV8tPkdldFN1cHBvcnRlZEZvcm1hdHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
bWF0KSkgewogICAgICAgZXh0ZXJuYWxfZW5jb2RlciA9Ci0gICAgICAgICAgQ29kZWNOYW1lc0Vx
KGZvcm1hdC5uYW1lLmNfc3RyKCksIGtWcDhDb2RlY05hbWUpCisgICAgICAgICAgYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwga1ZwOENvZGVjTmFtZSkKICAgICAgICAgICAgICAg
PyBhYnNsOjptYWtlX3VuaXF1ZTx3ZWJydGM6OlNpbXVsY2FzdEVuY29kZXJBZGFwdGVyPigKICAg
ICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfZW5jb2Rlcl9mYWN0b3J5Xy5nZXQoKSwgZm9ybWF0
KQogICAgICAgICAgICAgICA6IGV4dGVybmFsX2VuY29kZXJfZmFjdG9yeV8tPkNyZWF0ZVZpZGVv
RW5jb2Rlcihmb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2NvbnZlcnRfbGVnYWN5X3ZpZGVvX2ZhY3Rvcnku
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS9jb252ZXJ0X2xlZ2FjeV92aWRlb19mYWN0b3J5LmgKaW5kZXggNWJkMzU4MGE2ZjEwNDI1ZDMw
ZmQ5NWQ0MzgxMzY4YmE2ODdlY2JiZi4uMjczODNhYjM4NmU5ZjM5ODNkZTQzMjU3MzNkZDFlNDg2
ZGI2NWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvZW5naW5lL2NvbnZlcnRfbGVnYWN5X3ZpZGVvX2ZhY3RvcnkuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29u
dmVydF9sZWdhY3lfdmlkZW9fZmFjdG9yeS5oCkBAIC0xMyw2ICsxMyw4IEBACiAKICNpbmNsdWRl
IDxtZW1vcnk+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgorCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIFZpZGVvRW5jb2RlckZhY3Rvcnk7CiBjbGFzcyBWaWRl
b0RlY29kZXJGYWN0b3J5OwpAQCAtMjcsMTAgKzI5LDEyIEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvRGVj
b2RlckZhY3Rvcnk7CiAvLyBuZXcgdHlwZSBvZiBjb2RlYyBmYWN0b3JpZXMuIFRoZSBwdXJwb3Nl
IG9mIHRoZXNlIGZ1bmN0aW9ucyBpcyB0byBwcm92aWRlIGFuCiAvLyBlYXN5IHdheSBmb3IgY2xp
ZW50cyB0byBtaWdyYXRlIHRvIHRoZSBBUEkgd2l0aCBuZXcgZmFjdG9yeSB0eXBlcy4KIC8vIFRP
RE8obWFnamVkKTogUmVtb3ZlIG9uY2Ugb2xkIGZhY3RvcmllcyBhcmUgZ29uZSwgd2VicnRjOjc5
MjUuCi1zdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBDb252ZXJ0
VmlkZW9FbmNvZGVyRmFjdG9yeSgKK1JUQ19FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6
VmlkZW9FbmNvZGVyRmFjdG9yeT4KK0NvbnZlcnRWaWRlb0VuY29kZXJGYWN0b3J5KAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5PiBleHRlcm5hbF9lbmNvZGVy
X2ZhY3RvcnkpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5
PiBDb252ZXJ0VmlkZW9EZWNvZGVyRmFjdG9yeSgKK1JUQ19FWFBPUlQgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4KK0NvbnZlcnRWaWRlb0RlY29kZXJGYWN0b3J5
KAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5PiBleHRlcm5h
bF9kZWNvZGVyX2ZhY3RvcnkpOwogCiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5l
L2Zha2V3ZWJydGNjYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGNjYWxsLmNjCmluZGV4IGNlOTliOWMxMDM0YzA5
MjE1NDA4OTQ4ODM2ZTRjOTQ0MzExMmFmNDIuLjZjNWI4Yzc0YjhmMDhkMTgyOWY1ODUyZWZiM2Zk
NDU5MTllYTE0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjY2FsbC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y2Nh
bGwuY2MKQEAgLTEyMyw2ICsxMjMsNyBAQCBGYWtlVmlkZW9TZW5kU3RyZWFtOjpGYWtlVmlkZW9T
ZW5kU3RyZWFtKAogICAgICAgc291cmNlXyhudWxscHRyKSwKICAgICAgIG51bV9zd2FwcGVkX2Zy
YW1lc18oMCkgewogICBSVENfRENIRUNLKGNvbmZpZy5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJf
ZmFjdG9yeSAhPSBudWxscHRyKTsKKyAgUlRDX0RDSEVDSyhjb25maWcuZW5jb2Rlcl9zZXR0aW5n
cy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ICE9IG51bGxwdHIpOwogICBSZWNvbmZpZ3VyZVZp
ZGVvRW5jb2RlcihzdGQ6Om1vdmUoZW5jb2Rlcl9jb25maWcpKTsKIH0KIApAQCAtNjQzLDQgKzY0
NCw3IEBAIHZvaWQgRmFrZUNhbGw6Ok9uU2VudFBhY2tldChjb25zdCBydGM6OlNlbnRQYWNrZXQm
IHNlbnRfcGFja2V0KSB7CiAgIH0KIH0KIAordm9pZCBGYWtlQ2FsbDo6TWVkaWFUcmFuc3BvcnRD
aGFuZ2UoCisgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNw
b3J0X2ludGVyZmFjZSkge30KKwogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9m
YWtld2VicnRjY2FsbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGNjYWxsLmgKaW5kZXggZGJjZWRiOGY0MTA4ZmU1NWYx
YTIxODFiODhhMDMxNmM5YjIwODg5Yi4uMWI2ZGViMDcwMmRhN2YzNWU3NDI1YWUwMmY2NjMwNTI5
MTViZTE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGNjYWxsLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGNjYWxsLmgK
QEAgLTI3Myw2ICsyNzMsOSBAQCBjbGFzcyBGYWtlQ2FsbCBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6
OkNhbGwsIHB1YmxpYyB3ZWJydGM6OlBhY2tldFJlY2VpdmVyIHsKICAgaW50IEdldE51bUNyZWF0
ZWRSZWNlaXZlU3RyZWFtcygpIGNvbnN0OwogICB2b2lkIFNldFN0YXRzKGNvbnN0IHdlYnJ0Yzo6
Q2FsbDo6U3RhdHMmIHN0YXRzKTsKIAorICB2b2lkIE1lZGlhVHJhbnNwb3J0Q2hhbmdlKAorICAg
ICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0X2ludGVy
ZmFjZSkgb3ZlcnJpZGU7CisKICBwcml2YXRlOgogICB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbSog
Q3JlYXRlQXVkaW9TZW5kU3RyZWFtKAogICAgICAgY29uc3Qgd2VicnRjOjpBdWRpb1NlbmRTdHJl
YW06OkNvbmZpZyYgY29uZmlnKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlkZW9j
YXB0dXJlbW9kdWxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVvY2FwdHVyZW1vZHVsZS5oCmluZGV4IDQ3ZjEz
OTNjM2YzODE5ZTg1MTcxMGJiODRiYjI4MWE0ZWJkNDBkMzguLjc1NTY4MTFmMmRlMDE5NjJiZmUw
MTRlNTA1NjMyNGMyZDY4NDAwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlkZW9jYXB0dXJlbW9k
dWxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvZW5naW5lL2Zha2V3ZWJydGN2aWRlb2NhcHR1cmVtb2R1bGUuaApAQCAtMTQsNyArMTQsNiBA
QAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZlci5o
IgotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvdGVzdHV0aWxzLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5n
aW5lL3dlYnJ0Y3ZpZGVvY2FwdHVyZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVl
X2Zvcl90ZXN0LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlkZW9lbmdpbmUuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdl
YnJ0Y3ZpZGVvZW5naW5lLmNjCmluZGV4IDcwODFiNjQ5MzNhOTU2ZjJjMDZhYTVhODYyODQ1NzRi
MTBmM2RiNzIuLjY5MGYzZTdmODMxZWNhNzYwYTc1YzUxMTQ0MzRjY2RlNmI5MTRiZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Vu
Z2luZS9mYWtld2VicnRjdmlkZW9lbmdpbmUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGN2aWRlb2VuZ2luZS5j
YwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2Zha2V3ZWJydGN2
aWRlb2VuZ2luZS5oIgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9jb2RlYy5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9zaW11bGNhc3Rf
ZW5jb2Rlcl9hZGFwdGVyLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZGVj
b2RlcmZhY3RvcnkuaCIKQEAgLTEyOCw5ICsxMjksNyBAQCBGYWtlV2ViUnRjVmlkZW9EZWNvZGVy
RmFjdG9yeTo6ZGVjb2RlcnMoKSB7CiAvLyBFbmNvZGVyLgogRmFrZVdlYlJ0Y1ZpZGVvRW5jb2Rl
cjo6RmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlcigKICAgICBGYWtlV2ViUnRjVmlkZW9FbmNvZGVyRmFj
dG9yeSogZmFjdG9yeSkKLSAgICA6IGluaXRfZW5jb2RlX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAot
ICAgICAgbnVtX2ZyYW1lc19lbmNvZGVkXygwKSwKLSAgICAgIGZhY3RvcnlfKGZhY3RvcnkpIHt9
CisgICAgOiBudW1fZnJhbWVzX2VuY29kZWRfKDApLCBmYWN0b3J5XyhmYWN0b3J5KSB7fQogCiBG
YWtlV2ViUnRjVmlkZW9FbmNvZGVyOjp+RmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlcigpIHsKICAgaWYg
KGZhY3RvcnlfKSB7CkBAIC0xNjcsMTEgKzE2Niw2IEBAIGludDMyX3QgRmFrZVdlYlJ0Y1ZpZGVv
RW5jb2Rlcjo6UmVsZWFzZSgpIHsKICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKIH0K
IAotaW50MzJfdCBGYWtlV2ViUnRjVmlkZW9FbmNvZGVyOjpTZXRDaGFubmVsUGFyYW1ldGVycyh1
aW50MzJfdCBwYWNrZXRMb3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90IHJ0dCkgewotICByZXR1cm4gV0VCUlRDX1ZJREVPX0NP
REVDX09LOwotfQotCiBpbnQzMl90IEZha2VXZWJSdGNWaWRlb0VuY29kZXI6OlNldFJhdGVBbGxv
Y2F0aW9uKAogICAgIGNvbnN0IHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYWxsb2Nh
dGlvbiwKICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIHsKQEAgLTE5NCw4ICsxODgsNyBAQCBpbnQg
RmFrZVdlYlJ0Y1ZpZGVvRW5jb2Rlcjo6R2V0TnVtRW5jb2RlZEZyYW1lcygpIHsKIAogLy8gVmlk
ZW8gZW5jb2RlciBmYWN0b3J5LgogRmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3Rvcnk6OkZha2VX
ZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KCkKLSAgICA6IGNyZWF0ZWRfdmlkZW9fZW5jb2Rlcl9l
dmVudF8oZmFsc2UsIGZhbHNlKSwKLSAgICAgIG51bV9jcmVhdGVkX2VuY29kZXJzXygwKSwKKyAg
ICA6IG51bV9jcmVhdGVkX2VuY29kZXJzXygwKSwKICAgICAgIGVuY29kZXJzX2hhdmVfaW50ZXJu
YWxfc291cmNlc18oZmFsc2UpLAogICAgICAgdnA4X2ZhY3RvcnlfbW9kZV8oZmFsc2UpIHt9CiAK
QEAgLTIxOCw3ICsyMTEsNyBAQCBGYWtlV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRl
VmlkZW9FbmNvZGVyKAogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7CiAgIHN0ZDo6dW5p
cXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rlcj4gZW5jb2RlcjsKICAgaWYgKElzRm9ybWF0U3Vw
cG9ydGVkKGZvcm1hdHNfLCBmb3JtYXQpKSB7Ci0gICAgaWYgKENvZGVjTmFtZXNFcShmb3JtYXQu
bmFtZS5jX3N0cigpLCBrVnA4Q29kZWNOYW1lKSAmJgorICAgIGlmIChhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKGZvcm1hdC5uYW1lLCBrVnA4Q29kZWNOYW1lKSAmJgogICAgICAgICAhdnA4X2ZhY3Rv
cnlfbW9kZV8pIHsKICAgICAgIC8vIFRoZSBzaW11bGNhc3QgYWRhcHRlciB3aWxsIGFzayB0aGlz
IGZhY3RvcnkgZm9yIG11bHRpcGxlIFZQOAogICAgICAgLy8gZW5jb2RlcnMuIEVudGVyIHZwOF9m
YWN0b3J5X21vZGUgc28gdGhhdCB3ZSBub3cgY3JlYXRlIHRoZXNlIGVuY29kZXJzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdp
bmUvZmFrZXdlYnJ0Y3ZpZGVvZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVvZW5naW5lLmgKaW5kZXgg
ZjQyODdhMzFkMjYwMjZmZGVlODkzMWJlOTM0N2RiNDg5ODQ2YWUyMy4uNmVkOTJhNzg5YjU3ZTJk
ZDc5MDk4MGQ3YTljODk2MmJhMjQ3ZjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGN2aWRlb2VuZ2lu
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2VuZ2luZS9mYWtld2VicnRjdmlkZW9lbmdpbmUuaApAQCAtODYsNyArODYsNiBAQCBjbGFzcyBG
YWtlV2ViUnRjVmlkZW9FbmNvZGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyIHsKICAg
aW50MzJfdCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgICAgICB3ZWJydGM6OkVu
Y29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgIGludDMyX3QgUmVsZWFz
ZSgpIG92ZXJyaWRlOwotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBh
Y2tldExvc3MsIGludDY0X3QgcnR0KSBvdmVycmlkZTsKICAgaW50MzJfdCBTZXRSYXRlQWxsb2Nh
dGlvbihjb25zdCB3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGFsbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVyYXRlKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvaW50ZXJuYWxkZWNvZGVyZmFj
dG9yeS5jYwppbmRleCBkZjc0NzczYzg2ZGIyNmVlMzc0ODQxMjQ3YWExMGJiNDAwYjE5N2FjLi43
MjI0MTMzMzhlNTExOThkMmZjNjE2YWY1OWU5OWY5Zjc2MGY3YmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvaW50ZXJu
YWxkZWNvZGVyZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvaW50ZXJuYWxkZWNvZGVyZmFjdG9yeS5jYwpAQCAtMTAs
NiArMTAsNyBAQAogCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3Rv
cnkuaCIKIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS92
aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVk
aWFjb25zdGFudHMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2
NC9pbmNsdWRlL2gyNjQuaCIKQEAgLTU1LDExICs1NiwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Vmlk
ZW9EZWNvZGVyPiBJbnRlcm5hbERlY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0RlY29kZXIoCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KIAotICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGZv
cm1hdC5uYW1lLCBjcmlja2V0OjprVnA4Q29kZWNOYW1lKSkKKyAgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6OmtWcDhDb2RlY05hbWUpKQogICAgIHJldHVy
biBWUDhEZWNvZGVyOjpDcmVhdGUoKTsKLSAgaWYgKGNyaWNrZXQ6OkNvZGVjTmFtZXNFcShmb3Jt
YXQubmFtZSwgY3JpY2tldDo6a1ZwOUNvZGVjTmFtZSkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKGZvcm1hdC5uYW1lLCBjcmlja2V0OjprVnA5Q29kZWNOYW1lKSkKICAgICByZXR1cm4g
VlA5RGVjb2Rlcjo6Q3JlYXRlKCk7Ci0gIGlmIChjcmlja2V0OjpDb2RlY05hbWVzRXEoZm9ybWF0
Lm5hbWUsIGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1lKSkKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9y
ZUNhc2UoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1lKSkKICAgICByZXR1cm4g
SDI2NERlY29kZXI6OkNyZWF0ZSgpOwogCiAgIFJUQ19OT1RSRUFDSEVEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
aW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9pbnRlcm5hbGVuY29kZXJmYWN0b3J5LmNjCmluZGV4
IGU2YzNjMmU3MmZkNjMyZWFjNzFlYjM4ZGZhYjYxMzI3YTE4YjgyZGYuLmU4MWI3M2Q1ZTNkNmNm
MTVhYzM4Y2Y3ZDM1NTM1ZDE1ZDQyMjBjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9pbnRlcm5hbGVuY29kZXJmYWN0
b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS9pbnRlcm5hbGVuY29kZXJmYWN0b3J5LmNjCkBAIC0xMiw2ICsxMiw3IEBACiAK
ICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0LmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgpAQCAtNDEs
MTEgKzQyLDExIEBAIFZpZGVvRW5jb2RlckZhY3Rvcnk6OkNvZGVjSW5mbyBJbnRlcm5hbEVuY29k
ZXJGYWN0b3J5OjpRdWVyeVZpZGVvRW5jb2RlcigKIAogc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5j
b2Rlcj4gSW50ZXJuYWxFbmNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9FbmNvZGVyKAogICAgIGNv
bnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIHsKLSAgaWYgKGNyaWNrZXQ6OkNvZGVjTmFtZXNF
cShmb3JtYXQubmFtZSwgY3JpY2tldDo6a1ZwOENvZGVjTmFtZSkpCisgIGlmIChhYnNsOjpFcXVh
bHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCBjcmlja2V0OjprVnA4Q29kZWNOYW1lKSkKICAgICBy
ZXR1cm4gVlA4RW5jb2Rlcjo6Q3JlYXRlKCk7Ci0gIGlmIChjcmlja2V0OjpDb2RlY05hbWVzRXEo
Zm9ybWF0Lm5hbWUsIGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUpKQorICBpZiAoYWJzbDo6RXF1YWxz
SWdub3JlQ2FzZShmb3JtYXQubmFtZSwgY3JpY2tldDo6a1ZwOUNvZGVjTmFtZSkpCiAgICAgcmV0
dXJuIFZQOUVuY29kZXI6OkNyZWF0ZShjcmlja2V0OjpWaWRlb0NvZGVjKGZvcm1hdCkpOwotICBp
ZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGZvcm1hdC5uYW1lLCBjcmlja2V0OjprSDI2NENvZGVj
TmFtZSkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCBjcmlja2V0
OjprSDI2NENvZGVjTmFtZSkpCiAgICAgcmV0dXJuIEgyNjRFbmNvZGVyOjpDcmVhdGUoY3JpY2tl
dDo6VmlkZW9Db2RlYyhmb3JtYXQpKTsKICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlRyeWluZyB0
byBjcmVhdGVkIGVuY29kZXIgb2YgdW5zdXBwb3J0ZWQgZm9ybWF0ICIKICAgICAgICAgICAgICAg
ICAgICAgPDwgZm9ybWF0Lm5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbXVsdGlwbGV4Y29kZWNmYWN0b3J5LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5l
L211bHRpcGxleGNvZGVjZmFjdG9yeS5jYwppbmRleCAyMzZhMmU4MWFjYzcyMmQ4NDg1NTRhODdh
ZGY0ODQwYzI0ZDc1Zjk0Li5iMzkxMzI0M2VkZWIwNWQxNjNkZDNhMmFiODczZmMwMGYyMDBjZjQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9lbmdpbmUvbXVsdGlwbGV4Y29kZWNmYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9tdWx0aXBsZXhjb2RlY2Zh
Y3RvcnkuY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNs
dWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3Nk
cF92aWRlb19mb3JtYXQuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2NvZGVjLmgiCiAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgpAQCAtMjIsOCArMjMsOCBAQAogbmFtZXNw
YWNlIHsKIAogYm9vbCBJc011bHRpcGxleENvZGVjKGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29kZWMm
IGNvZGVjKSB7Ci0gIHJldHVybiBjcmlja2V0OjpDb2RlY05hbWVzRXEoY29kZWMubmFtZS5jX3N0
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OmtNdWx0aXBsZXhD
b2RlY05hbWUpOworICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLmNf
c3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OmtNdWx0aXBs
ZXhDb2RlY05hbWUpOwogfQogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkBAIC00Miw3ICs0
Myw3IEBAIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBNdWx0aXBsZXhFbmNvZGVyRmFjdG9y
eTo6R2V0U3VwcG9ydGVkRm9ybWF0cygpCiAgICAgY29uc3QgewogICBzdGQ6OnZlY3RvcjxTZHBW
aWRlb0Zvcm1hdD4gZm9ybWF0cyA9IGZhY3RvcnlfLT5HZXRTdXBwb3J0ZWRGb3JtYXRzKCk7CiAg
IGZvciAoY29uc3QgYXV0byYgZm9ybWF0IDogZm9ybWF0cykgewotICAgIGlmIChjcmlja2V0OjpD
b2RlY05hbWVzRXEoZm9ybWF0Lm5hbWUsIGtNdWx0aXBsZXhBc3NvY2lhdGVkQ29kZWNOYW1lKSkg
eworICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCBrTXVsdGlwbGV4
QXNzb2NpYXRlZENvZGVjTmFtZSkpIHsKICAgICAgIFNkcFZpZGVvRm9ybWF0IG11bHRpcGxleF9m
b3JtYXQgPSBmb3JtYXQ7CiAgICAgICBtdWx0aXBsZXhfZm9ybWF0LnBhcmFtZXRlcnNbY3JpY2tl
dDo6a0NvZGVjUGFyYW1Bc3NvY2lhdGVkQ29kZWNOYW1lXSA9CiAgICAgICAgICAgZm9ybWF0Lm5h
bWU7CkBAIC04OCw3ICs4OSw3IEBAIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBNdWx0aXBs
ZXhEZWNvZGVyRmFjdG9yeTo6R2V0U3VwcG9ydGVkRm9ybWF0cygpCiAgICAgY29uc3QgewogICBz
dGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gZm9ybWF0cyA9IGZhY3RvcnlfLT5HZXRTdXBwb3J0
ZWRGb3JtYXRzKCk7CiAgIGZvciAoY29uc3QgYXV0byYgZm9ybWF0IDogZm9ybWF0cykgewotICAg
IGlmIChjcmlja2V0OjpDb2RlY05hbWVzRXEoZm9ybWF0Lm5hbWUsIGtNdWx0aXBsZXhBc3NvY2lh
dGVkQ29kZWNOYW1lKSkgeworICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5u
YW1lLCBrTXVsdGlwbGV4QXNzb2NpYXRlZENvZGVjTmFtZSkpIHsKICAgICAgIFNkcFZpZGVvRm9y
bWF0IG11bHRpcGxleF9mb3JtYXQgPSBmb3JtYXQ7CiAgICAgICBtdWx0aXBsZXhfZm9ybWF0LnBh
cmFtZXRlcnNbY3JpY2tldDo6a0NvZGVjUGFyYW1Bc3NvY2lhdGVkQ29kZWNOYW1lXSA9CiAgICAg
ICAgICAgZm9ybWF0Lm5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbXVsdGlwbGV4Y29kZWNmYWN0b3J5LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbXVs
dGlwbGV4Y29kZWNmYWN0b3J5LmgKaW5kZXggN2E4NTFjOGMxZWNmYzQyMDNjYTgzZmFlOTFhYzg2
ZWFjNzdmZTY3YS4uYWUwOTlhNGVmM2U3OGIxZWZhZGZiMTkyZDc2OTAzMDE1ZGNiNTM0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL211bHRpcGxleGNvZGVjZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9tdWx0aXBsZXhjb2RlY2ZhY3Rvcnku
aApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19k
ZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29k
ZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogLy8gTXVsdGlwbGV4IGNvZGVjIGlzIGEgY29tcGxldGVseSBt
b2R1bGFyL29wdGlvbmFsIGNvZGVjIHRoYXQgYWxsb3dzIHVzZXJzIHRvCkBAIC0zNiw3ICszNyw3
IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogLy8gYW5kIGRlY29kZXIgaW5zdGFuY2UocykgdXNpbmcg
dGhlc2UgZmFjdG9yaWVzLgogLy8gLSBVc2UgTXVsdGlwbGV4KmNvZGVyRmFjdG9yeSBjbGFzc2Vz
IGluIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgpIGNhbGxzLgogLy8gLSBTZWxlY3QgIm11
bHRpcGxleCIgY29kZWMgaW4gU0RQIG5lZ290aWF0aW9uLgotY2xhc3MgTXVsdGlwbGV4RW5jb2Rl
ckZhY3RvcnkgOiBwdWJsaWMgVmlkZW9FbmNvZGVyRmFjdG9yeSB7CitjbGFzcyBSVENfRVhQT1JU
IE11bHRpcGxleEVuY29kZXJGYWN0b3J5IDogcHVibGljIFZpZGVvRW5jb2RlckZhY3Rvcnkgewog
IHB1YmxpYzoKICAgLy8gfHN1cHBvcnRzX2F1Z21lbnRpbmdfZGF0YXwgZGVmaW5lcyBpZiB0aGUg
ZW5jb2RlciB3b3VsZCBzdXBwb3J0IGF1Z21lbnRpbmcKICAgLy8gZGF0YS4gSWYgc2V0LCB0aGUg
ZW5jb2RlciBleHBlY3RzIHRvIHJlY2VpdmUgdmlkZW8gZnJhbWUgYnVmZmVycyBvZiB0eXBlCkBA
IC01NCw3ICs1NSw3IEBAIGNsYXNzIE11bHRpcGxleEVuY29kZXJGYWN0b3J5IDogcHVibGljIFZp
ZGVvRW5jb2RlckZhY3RvcnkgewogICBjb25zdCBib29sIHN1cHBvcnRzX2F1Z21lbnRpbmdfZGF0
YV87CiB9OwogCi1jbGFzcyBNdWx0aXBsZXhEZWNvZGVyRmFjdG9yeSA6IHB1YmxpYyBWaWRlb0Rl
Y29kZXJGYWN0b3J5IHsKK2NsYXNzIFJUQ19FWFBPUlQgTXVsdGlwbGV4RGVjb2RlckZhY3Rvcnkg
OiBwdWJsaWMgVmlkZW9EZWNvZGVyRmFjdG9yeSB7CiAgcHVibGljOgogICAvLyB8c3VwcG9ydHNf
YXVnbWVudGluZ19kYXRhfCBkZWZpbmVzIGlmIHRoZSBkZWNvZGVyIHdvdWxkIHN1cHBvcnQgYXVn
bWVudGluZwogICAvLyBkYXRhLiBJZiBzZXQsIHRoZSBkZWNvZGVyIGlzIGV4cGVjdGVkIHRvIG91
dHB1dCB2aWRlbyBmcmFtZSBidWZmZXJzIG9mIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9udWxsd2VicnRjdmlk
ZW9lbmdpbmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS9udWxsd2VicnRjdmlkZW9lbmdpbmUuaAppbmRleCA5YWYwZjliMTMwYzZjMmU0
NTY0NTM0ZTkwMjJkZTA3ZTc1N2ZjOGMxLi42MjMyNmRkNGRkZDQzYjM5Njk4ZWRkMTIyZGUwY2Mx
YWRkZWY1YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbnVsbHdlYnJ0Y3ZpZGVvZW5naW5lLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL251bGx3ZWJy
dGN2aWRlb2VuZ2luZS5oCkBAIC0zMCwxNSArMzAsMTkgQEAgY2xhc3MgV2ViUnRjVmlkZW9FbmNv
ZGVyRmFjdG9yeTsKIAogLy8gVmlkZW8gZW5naW5lIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lcyBu
b3RoaW5nIGFuZCBjYW4gYmUgdXNlZCBpbgogLy8gQ29tcG9zaXRlTWVkaWFFbmdpbmUuCi1jbGFz
cyBOdWxsV2ViUnRjVmlkZW9FbmdpbmUgeworY2xhc3MgTnVsbFdlYlJ0Y1ZpZGVvRW5naW5lIDog
cHVibGljIFZpZGVvRW5naW5lSW50ZXJmYWNlIHsKICBwdWJsaWM6Ci0gIHN0ZDo6dmVjdG9yPFZp
ZGVvQ29kZWM+IGNvZGVjcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+
KCk7IH0KKyAgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNzKCkgY29uc3Qgb3ZlcnJpZGUg
eworICAgIHJldHVybiBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPigpOworICB9CiAKLSAgUnRwQ2Fw
YWJpbGl0aWVzIEdldENhcGFiaWxpdGllcygpIGNvbnN0IHsgcmV0dXJuIFJ0cENhcGFiaWxpdGll
cygpOyB9CisgIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBhYmlsaXRpZXMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBSdHBDYXBhYmlsaXRpZXMoKTsgfQogCi0gIFZpZGVvTWVkaWFDaGFubmVsKiBD
cmVhdGVDaGFubmVsKHdlYnJ0Yzo6Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKSB7CisgIFZpZGVv
TWVkaWFDaGFubmVsKiBDcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICB3ZWJydGM6OkNhbGwqIGNh
bGwsCisgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAorICAgICAgY29uc3QgVmlkZW9P
cHRpb25zJiBvcHRpb25zLAorICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlw
dG9fb3B0aW9ucykgb3ZlcnJpZGUgewogICAgIHJldHVybiBudWxscHRyOwogICB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL251bGx3ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9udWxsd2VicnRjdmlkZW9l
bmdpbmVfdW5pdHRlc3QuY2MKaW5kZXggNmM3NDBiOGM4YzM3MmFiOGEyOTBjMzFiZGNhZTU3NWM4
NTViMmFkZi4uZTcxOGQxYmI2OTdlMjE4MjI3MjhmYThjMWY0NWVjYzVlNWQ4NjMzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL251bGx3ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbnVsbHdlYnJ0Y3ZpZGVv
ZW5naW5lX3VuaXR0ZXN0LmNjCkBAIC05LDYgKzksNyBAQAogICovCiAKICNpbmNsdWRlICJtZWRp
YS9lbmdpbmUvbnVsbHdlYnJ0Y3ZpZGVvZW5naW5lLmgiCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkv
bWVtb3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5lLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9tb2NrX2F1ZGlvX2RldmljZS5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nl
c3NpbmcuaCIKQEAgLTE4LDggKzE5LDcgQEAKIAogbmFtZXNwYWNlIGNyaWNrZXQgewogCi1jbGFz
cyBXZWJSdGNNZWRpYUVuZ2luZU51bGxWaWRlbwotICAgIDogcHVibGljIENvbXBvc2l0ZU1lZGlh
RW5naW5lPFdlYlJ0Y1ZvaWNlRW5naW5lLCBOdWxsV2ViUnRjVmlkZW9FbmdpbmU+IHsKK2NsYXNz
IFdlYlJ0Y01lZGlhRW5naW5lTnVsbFZpZGVvIDogcHVibGljIENvbXBvc2l0ZU1lZGlhRW5naW5l
IHsKICBwdWJsaWM6CiAgIFdlYlJ0Y01lZGlhRW5naW5lTnVsbFZpZGVvKAogICAgICAgd2VicnRj
OjpBdWRpb0RldmljZU1vZHVsZSogYWRtLApAQCAtMjcsMTMgKzI3LDEzIEBAIGNsYXNzIFdlYlJ0
Y01lZGlhRW5naW5lTnVsbFZpZGVvCiAgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAog
ICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9y
eT4mCiAgICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KQotICAgICAgOiBDb21wb3NpdGVN
ZWRpYUVuZ2luZTxXZWJSdGNWb2ljZUVuZ2luZSwgTnVsbFdlYlJ0Y1ZpZGVvRW5naW5lPigKLSAg
ICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShhZG0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpKSwKLSAgICAgICAg
ICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgpKSB7fQorICAgICAgOiBDb21wb3NpdGVNZWRpYUVu
Z2luZShhYnNsOjptYWtlX3VuaXF1ZTxXZWJSdGNWb2ljZUVuZ2luZT4oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhZG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpBdWRp
b1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhYnNsOjptYWtlX3VuaXF1ZTxOdWxsV2ViUnRjVmlkZW9FbmdpbmU+KCkpIHt9CiB9Owog
CiAvLyBTaW1wbGUgdGVzdCB0byBjaGVjayBpZiBOdWxsV2ViUnRjVmlkZW9FbmdpbmUgaW1wbGVt
ZW50cyB0aGUgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3BheWxvYWRfdHlwZV9tYXBwZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvcGF5bG9h
ZF90eXBlX21hcHBlci5jYwppbmRleCA1ZDJmYjY3NTdjNDQ1YWQyMTI1MTc5MDBlODk0ZGM4NDA5
ZGY1NjU1Li5hZTRlMzA5ZWY0OTAwZDNiOTE3Zjg5YWQwNjE4ZmRjZWQyNzIxOWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdp
bmUvcGF5bG9hZF90eXBlX21hcHBlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvcGF5bG9hZF90eXBlX21hcHBlci5jYwpAQCAt
MTIsOCArMTIsOCBAQAogCiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9hc2NpaS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0Lmgi
Ci0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNp
bmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAKIG5hbWVzcGFjZSBjcmlja2V0
IHsKQEAgLTE0MCw3ICsxNDAsOCBAQCBib29sIFBheWxvYWRUeXBlTWFwcGVyOjpTZHBBdWRpb0Zv
cm1hdE9yZGVyaW5nOjpvcGVyYXRvcigpKAogICAgIGNvbnN0IHdlYnJ0Yzo6U2RwQXVkaW9Gb3Jt
YXQmIGIpIGNvbnN0IHsKICAgaWYgKGEuY2xvY2tyYXRlX2h6ID09IGIuY2xvY2tyYXRlX2h6KSB7
CiAgICAgaWYgKGEubnVtX2NoYW5uZWxzID09IGIubnVtX2NoYW5uZWxzKSB7Ci0gICAgICBpbnQg
bmFtZV9jbXAgPSBTVFJfQ0FTRV9DTVAoYS5uYW1lLmNfc3RyKCksIGIubmFtZS5jX3N0cigpKTsK
KyAgICAgIGludCBuYW1lX2NtcCA9CisgICAgICAgICAgYWJzbDo6QXNjaWlTdHJUb0xvd2VyKGEu
bmFtZSkuY29tcGFyZShhYnNsOjpBc2NpaVN0clRvTG93ZXIoYi5uYW1lKSk7CiAgICAgICBpZiAo
bmFtZV9jbXAgPT0gMCkKICAgICAgICAgcmV0dXJuIGEucGFyYW1ldGVycyA8IGIucGFyYW1ldGVy
czsKICAgICAgIHJldHVybiBuYW1lX2NtcCA8IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2NvcGVkdmlkZW9lbmNv
ZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL3Njb3BlZHZpZGVvZW5jb2Rlci5jYwppbmRleCAwMjY2NTRlMDcyMDRkMDQ0YjY5ZjVj
Yjg5NjY2Zjc4YjkyYWIzMWM2Li5kYjExNDhiZjMwZmUyMDA5MzA0YjU3YTc5NzJiYjhmZjFjY2Y2
MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvc2NvcGVkdmlkZW9lbmNvZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zY29wZWR2aWRlb2VuY29k
ZXIuY2MKQEAgLTMzLDE0ICszMywxMCBAQCBjbGFzcyBTY29wZWRWaWRlb0VuY29kZXIgOiBwdWJs
aWMgd2VicnRjOjpWaWRlb0VuY29kZXIgewogICBpbnQzMl90IEVuY29kZShjb25zdCB3ZWJydGM6
OlZpZGVvRnJhbWUmIGZyYW1lLAogICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OkNvZGVj
U3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZvLAogICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnZlY3Rvcjx3ZWJydGM6OkZyYW1lVHlwZT4qIGZyYW1lX3R5cGVzKSBvdmVycmlkZTsK
LSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50
NjRfdCBydHQpIG92ZXJyaWRlOwogICBpbnQzMl90IFNldFJhdGVzKHVpbnQzMl90IGJpdHJhdGUs
IHVpbnQzMl90IGZyYW1lcmF0ZSkgb3ZlcnJpZGU7CiAgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRp
b24oY29uc3Qgd2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgb3ZlcnJpZGU7Ci0g
IFNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25zdCBvdmVycmlkZTsKLSAg
Ym9vbCBTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0IG92ZXJyaWRlOwotICBjb25zdCBjaGFy
KiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsKLQorICBFbmNvZGVySW5mbyBH
ZXRFbmNvZGVySW5mbygpIGNvbnN0IG92ZXJyaWRlOwogICB+U2NvcGVkVmlkZW9FbmNvZGVyKCkg
b3ZlcnJpZGU7CiAKICBwcml2YXRlOgpAQCAtNzUsMTEgKzcxLDYgQEAgaW50MzJfdCBTY29wZWRW
aWRlb0VuY29kZXI6OkVuY29kZSgKICAgcmV0dXJuIGVuY29kZXJfLT5FbmNvZGUoZnJhbWUsIGNv
ZGVjX3NwZWNpZmljX2luZm8sIGZyYW1lX3R5cGVzKTsKIH0KIAotaW50MzJfdCBTY29wZWRWaWRl
b0VuY29kZXI6OlNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0
KSB7Ci0gIHJldHVybiBlbmNvZGVyXy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0X2xvc3Ms
IHJ0dCk7Ci19Ci0KIGludDMyX3QgU2NvcGVkVmlkZW9FbmNvZGVyOjpTZXRSYXRlcyh1aW50MzJf
dCBiaXRyYXRlLCB1aW50MzJfdCBmcmFtZXJhdGUpIHsKICAgcmV0dXJuIGVuY29kZXJfLT5TZXRS
YXRlcyhiaXRyYXRlLCBmcmFtZXJhdGUpOwogfQpAQCAtOTAsMTcgKzgxLDggQEAgaW50MzJfdCBT
Y29wZWRWaWRlb0VuY29kZXI6OlNldFJhdGVBbGxvY2F0aW9uKAogICByZXR1cm4gZW5jb2Rlcl8t
PlNldFJhdGVBbGxvY2F0aW9uKGFsbG9jYXRpb24sIGZyYW1lcmF0ZSk7CiB9CiAKLXdlYnJ0Yzo6
VmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgU2NvcGVkVmlkZW9FbmNvZGVyOjpHZXRTY2Fs
aW5nU2V0dGluZ3MoKQotICAgIGNvbnN0IHsKLSAgcmV0dXJuIGVuY29kZXJfLT5HZXRTY2FsaW5n
U2V0dGluZ3MoKTsKLX0KLQotYm9vbCBTY29wZWRWaWRlb0VuY29kZXI6OlN1cHBvcnRzTmF0aXZl
SGFuZGxlKCkgY29uc3QgewotICByZXR1cm4gZW5jb2Rlcl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxl
KCk7Ci19Ci0KLWNvbnN0IGNoYXIqIFNjb3BlZFZpZGVvRW5jb2Rlcjo6SW1wbGVtZW50YXRpb25O
YW1lKCkgY29uc3QgewotICByZXR1cm4gZW5jb2Rlcl8tPkltcGxlbWVudGF0aW9uTmFtZSgpOwor
d2VicnRjOjpWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIFNjb3BlZFZpZGVvRW5jb2Rlcjo6R2V0
RW5jb2RlckluZm8oKSBjb25zdCB7CisgIHJldHVybiBlbmNvZGVyXy0+R2V0RW5jb2RlckluZm8o
KTsKIH0KIAogU2NvcGVkVmlkZW9FbmNvZGVyOjp+U2NvcGVkVmlkZW9FbmNvZGVyKCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL3NpbXVsY2FzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3QuY2MKaW5kZXggYzQyZTFkY2FlMjkwODQwYTli
Mzk4Y2M4MzBkMTJjODFjZjYxNjFjNi4uZGUzZDhkZjA5N2YxNTA1ZDAxZjY0Y2UzMGZlN2E2ZTAy
MmRjMGZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0LmNjCkBAIC0xOCw2
ICsxOCw3IEBACiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3NpbXVsY2FzdC5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhw
ZXJpbWVudHMvbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
ZmllbGRfdHJpYWwuaCIKIApAQCAtMTQwLDcgKzE0MSwxMyBAQCBpbnQgRmluZFNpbXVsY2FzdEZv
cm1hdEluZGV4KGludCB3aWR0aCwgaW50IGhlaWdodCwgc2l6ZV90IG1heF9sYXllcnMpIHsKIC8v
IFNpbXVsY2FzdCBzdHJlYW0gd2lkdGggYW5kIGhlaWdodCBtdXN0IGJvdGggYmUgZGl2aWRhYmxl
IGJ5CiAvLyB8MiBeIChzaW11bGNhc3RfbGF5ZXJzIC0gMSl8LgogaW50IE5vcm1hbGl6ZVNpbXVs
Y2FzdFNpemUoaW50IHNpemUsIHNpemVfdCBzaW11bGNhc3RfbGF5ZXJzKSB7Ci0gIGNvbnN0IGlu
dCBiYXNlMl9leHBvbmVudCA9IHN0YXRpY19jYXN0PGludD4oc2ltdWxjYXN0X2xheWVycykgLSAx
OworICBpbnQgYmFzZTJfZXhwb25lbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpbXVsY2FzdF9sYXll
cnMpIC0gMTsKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiBleHBlcmltZW50YWxfYmFzZTJf
ZXhwb25lbnQgPQorICAgICAgd2VicnRjOjpOb3JtYWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVu
dDo6R2V0QmFzZTJFeHBvbmVudCgpOworICBpZiAoZXhwZXJpbWVudGFsX2Jhc2UyX2V4cG9uZW50
ICYmCisgICAgICAoc2l6ZSA+ICgxIDw8ICpleHBlcmltZW50YWxfYmFzZTJfZXhwb25lbnQpKSkg
eworICAgIGJhc2UyX2V4cG9uZW50ID0gKmV4cGVyaW1lbnRhbF9iYXNlMl9leHBvbmVudDsKKyAg
fQogICByZXR1cm4gKChzaXplID4+IGJhc2UyX2V4cG9uZW50KSA8PCBiYXNlMl9leHBvbmVudCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdF9l
bmNvZGVyX2FkYXB0ZXIuY2MKaW5kZXggMzBkYTY4ZWM4NWNhOGI3ZmEwZGU3MWE3MWM2NWI4Y2Q0
ZDE3MjVjOC4uNjI0MWZmOWQzNmQ2OTFkMDM5Y2RmZWM2YzZjNjY2NjEyMmQ1OTY3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVyX2Fk
YXB0ZXIuY2MKQEAgLTE3LDkgKzE3LDkgQEAKICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZm
ZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNs
dWRlICJtZWRpYS9lbmdpbmUvc2NvcGVkdmlkZW9lbmNvZGVyLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3IuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAj
aW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKICNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRoaXJkX3BhcnR5
L2xpYnl1di9pbmNsdWRlL2xpYnl1di9zY2FsZS5oIgpAQCAtMTI3LDkgKzEyNyw5IEBAIFNpbXVs
Y2FzdEVuY29kZXJBZGFwdGVyOjpTaW11bGNhc3RFbmNvZGVyQWRhcHRlcihWaWRlb0VuY29kZXJG
YWN0b3J5KiBmYWN0b3J5LAogICAgICAgZmFjdG9yeV8oZmFjdG9yeSksCiAgICAgICB2aWRlb19m
b3JtYXRfKGZvcm1hdCksCiAgICAgICBlbmNvZGVkX2NvbXBsZXRlX2NhbGxiYWNrXyhudWxscHRy
KSwKLSAgICAgIGltcGxlbWVudGF0aW9uX25hbWVfKCJTaW11bGNhc3RFbmNvZGVyQWRhcHRlciIp
LAogICAgICAgZXhwZXJpbWVudGFsX2Jvb3N0ZWRfc2NyZWVuc2hhcmVfcXBfKEdldFNjcmVlbnNo
YXJlQm9vc3RlZFFwVmFsdWUoKSkgewogICBSVENfRENIRUNLKGZhY3RvcnlfKTsKKyAgZW5jb2Rl
cl9pbmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lID0gIlNpbXVsY2FzdEVuY29kZXJBZGFwdGVyIjsK
IAogICAvLyBUaGUgYWRhcHRlciBpcyB0eXBpY2FsbHkgY3JlYXRlZCBvbiB0aGUgd29ya2VyIHRo
cmVhZCwgYnV0IG9wZXJhdGVkIG9uCiAgIC8vIHRoZSBlbmNvZGVyIHRhc2sgcXVldWUuCkBAIC0y
MDMsNyArMjAzLDggQEAgaW50IFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpJbml0RW5jb2RlKGNv
bnN0IFZpZGVvQ29kZWMqIGluc3QsCiAgICAgc3RhcnRfYml0cmF0ZXMucHVzaF9iYWNrKHN0cmVh
bV9iaXRyYXRlKTsKICAgfQogCi0gIHN0ZDo6c3RyaW5nIGltcGxlbWVudGF0aW9uX25hbWU7Cisg
IGVuY29kZXJfaW5mb18uc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSA9IHRydWU7CisgIGVuY29kZXJf
aW5mb18uc2NhbGluZ19zZXR0aW5ncy50aHJlc2hvbGRzID0gYWJzbDo6bnVsbG9wdDsKICAgLy8g
Q3JlYXRlIHxudW1iZXJfb2Zfc3RyZWFtc3wgb2YgZW5jb2RlciBpbnN0YW5jZXMgYW5kIGluaXQg
dGhlbS4KICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJfb2Zfc3RyZWFtczsgKytpKSB7CiAg
ICAgVmlkZW9Db2RlYyBzdHJlYW1fY29kZWM7CkBAIC0yMTIsNiArMjEzLDcgQEAgaW50IFNpbXVs
Y2FzdEVuY29kZXJBZGFwdGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsCiAg
ICAgaWYgKCFkb2luZ19zaW11bGNhc3QpIHsKICAgICAgIHN0cmVhbV9jb2RlYyA9IGNvZGVjXzsK
ICAgICAgIHN0cmVhbV9jb2RlYy5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMgPSAxOworCiAgICAg
fSBlbHNlIHsKICAgICAgIC8vIENhcCBzdGFydCBiaXRyYXRlIHRvIHRoZSBtaW4gYml0cmF0ZSBp
biBvcmRlciB0byBhdm9pZCBzdHJhbmdlIGNvZGVjCiAgICAgICAvLyBiZWhhdmlvci4gU2luY2Ug
c2VuZGluZyB3aWxsIGJlIGZhbHNlLCB0aGlzIHNob3VsZCBub3QgbWF0dGVyLgpAQCAtMjQ3LDYg
KzI0OSw3IEBAIGludCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6SW5pdEVuY29kZShjb25zdCBW
aWRlb0NvZGVjKiBpbnN0LAogICAgICAgUmVsZWFzZSgpOwogICAgICAgcmV0dXJuIHJldDsKICAg
ICB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZEltYWdlQ2FsbGJhY2s+IGNhbGxiYWNr
KAogICAgICAgICBuZXcgQWRhcHRlckVuY29kZWRJbWFnZUNhbGxiYWNrKHRoaXMsIGkpKTsKICAg
ICBlbmNvZGVyLT5SZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soY2FsbGJhY2suZ2V0KCkp
OwpAQCAtMjU0LDE3ICsyNTcsNDUgQEAgaW50IFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpJbml0
RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJlYW1fY29kZWMud2lkdGgsIHN0cmVhbV9jb2RlYy5oZWlnaHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZW5kX3N0cmVhbSk7CiAKLSAgICBpZiAoaSAhPSAwKSB7Ci0g
ICAgICBpbXBsZW1lbnRhdGlvbl9uYW1lICs9ICIsICI7CisgICAgaWYgKCFkb2luZ19zaW11bGNh
c3QpIHsKKyAgICAgIC8vIFdpdGhvdXQgc2ltdWxjYXN0LCBqdXN0IHBhc3MgdGhyb3VnaCB0aGUg
ZW5jb2RlciBpbmZvIGZyb20gdGhlIG9uZQorICAgICAgLy8gYWN0aXZlIGVuY29kZXIuCisgICAg
ICBlbmNvZGVyX2luZm9fID0gc3RyZWFtaW5mb3NfWzBdLmVuY29kZXItPkdldEVuY29kZXJJbmZv
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGNvbnN0IEVuY29kZXJJbmZvIGVuY29kZXJfaW1wbF9p
bmZvID0KKyAgICAgICAgICBzdHJlYW1pbmZvc19baV0uZW5jb2Rlci0+R2V0RW5jb2RlckluZm8o
KTsKKworICAgICAgaWYgKGkgPT0gMCkgeworICAgICAgICAvLyBRdWFsaXR5IHNjYWxpbmcgbm90
IGVuYWJsZWQgZm9yIHNpbXVsY2FzdC4KKyAgICAgICAgZW5jb2Rlcl9pbmZvXy5zY2FsaW5nX3Nl
dHRpbmdzID0gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtPZmY7CisKKyAgICAgICAg
Ly8gRW5jb2RlciBuYW1lIGluZGljYXRlcyBuYW1lcyBvZiBhbGwgc3ViLWVuY29kZXJzLgorICAg
ICAgICBlbmNvZGVyX2luZm9fLmltcGxlbWVudGF0aW9uX25hbWUgPSAiU2ltdWxjYXN0RW5jb2Rl
ckFkYXB0ZXIgKCI7CisgICAgICAgIGVuY29kZXJfaW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSAr
PQorICAgICAgICAgICAgZW5jb2Rlcl9pbXBsX2luZm8uaW1wbGVtZW50YXRpb25fbmFtZTsKKwor
ICAgICAgICBlbmNvZGVyX2luZm9fLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPQorICAgICAgICAg
ICAgZW5jb2Rlcl9pbXBsX2luZm8uc3VwcG9ydHNfbmF0aXZlX2hhbmRsZTsKKyAgICAgICAgZW5j
b2Rlcl9pbmZvXy5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIgPQorICAgICAgICAgICAgZW5j
b2Rlcl9pbXBsX2luZm8uaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyOworICAgICAgfSBlbHNl
IHsKKyAgICAgICAgZW5jb2Rlcl9pbmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lICs9ICIsICI7Cisg
ICAgICAgIGVuY29kZXJfaW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSArPQorICAgICAgICAgICAg
ZW5jb2Rlcl9pbXBsX2luZm8uaW1wbGVtZW50YXRpb25fbmFtZTsKKworICAgICAgICAvLyBOYXRp
dmUgaGFuZGxlIHN1cHBvcnRlZCBvbmx5IGlmIGFsbCBlbmNvZGVycyBzdXBwb3J0cyBpdC4KKyAg
ICAgICAgZW5jb2Rlcl9pbmZvXy5zdXBwb3J0c19uYXRpdmVfaGFuZGxlICY9CisgICAgICAgICAg
ICBlbmNvZGVyX2ltcGxfaW5mby5zdXBwb3J0c19uYXRpdmVfaGFuZGxlOworCisgICAgICAgIC8v
IFRydXN0ZWQgcmF0ZSBjb250cm9sbGVyIG9ubHkgaWYgYWxsIGVuY29kZXJzIGhhdmUgaXQuCisg
ICAgICAgIGVuY29kZXJfaW5mb18uaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyICY9CisgICAg
ICAgICAgICBlbmNvZGVyX2ltcGxfaW5mby5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXI7Cisg
ICAgICB9CiAgICAgfQotICAgIGltcGxlbWVudGF0aW9uX25hbWUgKz0gc3RyZWFtaW5mb3NfW2ld
LmVuY29kZXItPkltcGxlbWVudGF0aW9uTmFtZSgpOwogICB9CiAKICAgaWYgKGRvaW5nX3NpbXVs
Y2FzdCkgewotICAgIGltcGxlbWVudGF0aW9uX25hbWVfID0KLSAgICAgICAgIlNpbXVsY2FzdEVu
Y29kZXJBZGFwdGVyICgiICsgaW1wbGVtZW50YXRpb25fbmFtZSArICIpIjsKLSAgfSBlbHNlIHsK
LSAgICBpbXBsZW1lbnRhdGlvbl9uYW1lXyA9IGltcGxlbWVudGF0aW9uX25hbWU7CisgICAgZW5j
b2Rlcl9pbmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lICs9ICIpIjsKICAgfQogCiAgIC8vIFRvIHNh
dmUgbWVtb3J5LCBkb24ndCBzdG9yZSBlbmNvZGVycyB0aGF0IHdlIGRvbid0IHVzZS4KQEAgLTM3
NywxNSArNDA4LDYgQEAgaW50IFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpSZWdpc3RlckVuY29k
ZUNvbXBsZXRlQ2FsbGJhY2soCiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAK
LWludCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6U2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMy
X3QgcGFja2V0X2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgcnR0KSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxM
WSgmZW5jb2Rlcl9xdWV1ZV8pOwotICBmb3IgKHNpemVfdCBzdHJlYW1faWR4ID0gMDsgc3RyZWFt
X2lkeCA8IHN0cmVhbWluZm9zXy5zaXplKCk7ICsrc3RyZWFtX2lkeCkgewotICAgIHN0cmVhbWlu
Zm9zX1tzdHJlYW1faWR4XS5lbmNvZGVyLT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRfbG9z
cywgcnR0KTsKLSAgfQotICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwotfQotCiBpbnQg
U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXI6OlNldFJhdGVBbGxvY2F0aW9uKAogICAgIGNvbnN0IFZp
ZGVvQml0cmF0ZUFsbG9jYXRpb24mIGJpdHJhdGUsCiAgICAgdWludDMyX3QgbmV3X2ZyYW1lcmF0
ZSkgewpAQCAtNDUyLDcgKzQ3NCw2IEBAIEVuY29kZWRJbWFnZUNhbGxiYWNrOjpSZXN1bHQgU2lt
dWxjYXN0RW5jb2RlckFkYXB0ZXI6Ok9uRW5jb2RlZEltYWdlKAogICAgIGNvbnN0IFJUUEZyYWdt
ZW50YXRpb25IZWFkZXIqIGZyYWdtZW50YXRpb24pIHsKICAgRW5jb2RlZEltYWdlIHN0cmVhbV9p
bWFnZShlbmNvZGVkSW1hZ2UpOwogICBDb2RlY1NwZWNpZmljSW5mbyBzdHJlYW1fY29kZWNfc3Bl
Y2lmaWMgPSAqY29kZWNTcGVjaWZpY0luZm87Ci0gIHN0cmVhbV9jb2RlY19zcGVjaWZpYy5jb2Rl
Y19uYW1lID0gaW1wbGVtZW50YXRpb25fbmFtZV8uY19zdHIoKTsKIAogICBzdHJlYW1faW1hZ2Uu
U2V0U3BhdGlhbEluZGV4KHN0cmVhbV9pZHgpOwogCkBAIC01MTcsMzIgKzUzOCw4IEBAIHZvaWQg
U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXI6OkRlc3Ryb3lTdG9yZWRFbmNvZGVycygpIHsKICAgfQog
fQogCi1ib29sIFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyOjpTdXBwb3J0c05hdGl2ZUhhbmRsZSgp
IGNvbnN0IHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZlbmNvZGVyX3F1ZXVl
Xyk7Ci0gIC8vIFdlIHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzIG1ldGhvZCBiZWZvcmUgc3Ry
ZWFtaW5mb3NfIGFyZSBjb25maWd1cmVkLgotICBSVENfRENIRUNLKCFzdHJlYW1pbmZvc18uZW1w
dHkoKSk7Ci0gIGZvciAoY29uc3QgYXV0byYgc3RyZWFtaW5mbyA6IHN0cmVhbWluZm9zXykgewot
ICAgIGlmICghc3RyZWFtaW5mby5lbmNvZGVyLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgpKSB7Ci0g
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi1WaWRl
b0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6R2V0U2Nh
bGluZ1NldHRpbmdzKCkKLSAgICBjb25zdCB7Ci0gIC8vIFRPRE8oYnJhbmR0cik6IEludmVzdGln
YXRlIHdoeSB0aGUgc2VxdWVuY2UgY2hlY2tlciBiZWxvdyBmYWlscyBvbiBtYWMuCi0gIC8vIFJU
Q19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmZW5jb2Rlcl9xdWV1ZV8pOwotICAvLyBUdXJu
IG9mZiBxdWFsaXR5IHNjYWxpbmcgZm9yIHNpbXVsY2FzdC4KLSAgaWYgKCFJbml0aWFsaXplZCgp
IHx8IE51bWJlck9mU3RyZWFtcyhjb2RlY18pICE9IDEpIHsKLSAgICByZXR1cm4gVmlkZW9FbmNv
ZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtPZmY7Ci0gIH0KLSAgcmV0dXJuIHN0cmVhbWluZm9zX1sw
XS5lbmNvZGVyLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKLX0KLQotY29uc3QgY2hhciogU2ltdWxj
YXN0RW5jb2RlckFkYXB0ZXI6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsKLSAgUlRDX0RD
SEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZlbmNvZGVyX3F1ZXVlXyk7Ci0gIHJldHVybiBpbXBs
ZW1lbnRhdGlvbl9uYW1lXy5jX3N0cigpOworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBTaW11
bGNhc3RFbmNvZGVyQWRhcHRlcjo6R2V0RW5jb2RlckluZm8oKSBjb25zdCB7CisgIHJldHVybiBl
bmNvZGVyX2luZm9fOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2lt
dWxjYXN0X2VuY29kZXJfYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIuaAppbmRl
eCA1MjY0M2FhNzliMTYyNzAwMTlmNTk2ZTc4OWRhYWU5OTU5MWE5NGI1Li43ODNjMzQyZDZiOWZj
NGEyODliZTc3NThhZjkzYWRjNjRkZGQ3YzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJf
YWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmgKQEAgLTE5LDcgKzE5LDcg
QEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
Ci0jaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3RvcnkuaCIKKyNp
bmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NlcXVlbmNl
ZF90YXNrX2NoZWNrZXIuaCIKQEAgLTQ4LDcgKzQ4LDYgQEAgY2xhc3MgU2ltdWxjYXN0RW5jb2Rl
ckFkYXB0ZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgICAgICAgICAgICBjb25zdCBDb2Rl
Y1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxGcmFtZVR5cGU+KiBmcmFtZV90eXBlcykgb3ZlcnJpZGU7CiAgIGludCBSZWdp
c3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soRW5jb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNr
KSBvdmVycmlkZTsKLSAgaW50IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9s
b3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CiAgIGludCBTZXRSYXRlQWxsb2NhdGlvbihjb25z
dCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgbmV3X2ZyYW1lcmF0ZSkgb3ZlcnJpZGU7CiAKQEAgLTYxLDEwICs2MCw3IEBA
IGNsYXNzIFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAg
ICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKICAgICAg
IGNvbnN0IFJUUEZyYWdtZW50YXRpb25IZWFkZXIqIGZyYWdtZW50YXRpb24pOwogCi0gIFZpZGVv
RW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IG92ZXJy
aWRlOwotCi0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
Y29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgIEVuY29k
ZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgogICBz
dHJ1Y3QgU3RyZWFtSW5mbyB7CkBAIC0xMDQsNyArMTAwLDcgQEAgY2xhc3MgU2ltdWxjYXN0RW5j
b2RlckFkYXB0ZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgVmlkZW9Db2RlYyBjb2RlY187
CiAgIHN0ZDo6dmVjdG9yPFN0cmVhbUluZm8+IHN0cmVhbWluZm9zXzsKICAgRW5jb2RlZEltYWdl
Q2FsbGJhY2sqIGVuY29kZWRfY29tcGxldGVfY2FsbGJhY2tfOwotICBzdGQ6OnN0cmluZyBpbXBs
ZW1lbnRhdGlvbl9uYW1lXzsKKyAgRW5jb2RlckluZm8gZW5jb2Rlcl9pbmZvXzsKIAogICAvLyBV
c2VkIGZvciBjaGVja2luZyB0aGUgc2luZ2xlLXRocmVhZGVkIGFjY2VzcyBvZiB0aGUgZW5jb2Rl
ciBpbnRlcmZhY2UuCiAgIHJ0Yzo6U2VxdWVuY2VkVGFza0NoZWNrZXIgZW5jb2Rlcl9xdWV1ZV87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlcl91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNh
c3RfZW5jb2Rlcl9hZGFwdGVyX3VuaXR0ZXN0LmNjCmluZGV4IDViN2QxODViOGNjNmViYWEyYzI0
NDg4MGVjMzRlMDVlNjBmYjhmYzMuLjU5NTQxNzU1ZmE1MWRjMzc3YjZlM2U2MzcxMGI0MzNlYmMz
MzRiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyX3VuaXR0ZXN0LmNjCkBAIC0xNSwxNiArMTUsMTcg
QEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvdGVzdC9j
cmVhdGVfc2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oIgogI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVs
Y2FzdF90ZXN0X2ZpeHR1cmUuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92
aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlv
bl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3Nk
cF92aWRlb19mb3JtYXQuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29k
ZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1l
X2J1ZmZlci5oIgorI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKICNpbmNs
dWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1l
ZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2lt
cGwuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgot
I2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVk
ZSAidGVzdC9nbW9jay5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIApAQCAtNTUsNyArNTYs
NiBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2ltdWxjYXN0VGVzdEZpeHR1cmU+IENyZWF0ZVNwZWNpZmlj
U2ltdWxjYXN0VGVzdEZpeHR1cmUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1vdmUoZGVjb2Rlcl9mYWN0b3J5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNkcFZpZGVvRm9ybWF0KGNyaWNrZXQ6OmtWcDhDb2RlY05hbWUpKTsKIH0KLQog
fSAgLy8gbmFtZXNwYWNlCiAKIFRFU1QoU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJTaW11bGNhc3RU
ZXN0LCBUZXN0S2V5RnJhbWVSZXF1ZXN0c09uQWxsU3RyZWFtcykgewpAQCAtMTQ0LDYgKzE0NCwx
MiBAQCBURVNUKFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyU2ltdWxjYXN0VGVzdCwKICAgZml4dHVy
ZS0+VGVzdFNwYXRpb1RlbXBvcmFsTGF5ZXJzMzIxUGF0dGVybkVuY29kZXIoKTsKIH0KIAorVEVT
VChTaW11bGNhc3RFbmNvZGVyQWRhcHRlclNpbXVsY2FzdFRlc3QsIFRlc3REZWNvZGVXaWR0aEhl
aWdodFNldCkgeworICBJbnRlcm5hbEVuY29kZXJGYWN0b3J5IGludGVybmFsX2VuY29kZXJfZmFj
dG9yeTsKKyAgYXV0byBmaXh0dXJlID0gQ3JlYXRlU3BlY2lmaWNTaW11bGNhc3RUZXN0Rml4dHVy
ZSgmaW50ZXJuYWxfZW5jb2Rlcl9mYWN0b3J5KTsKKyAgZml4dHVyZS0+VGVzdERlY29kZVdpZHRo
SGVpZ2h0U2V0KCk7Cit9CisKIGNsYXNzIE1vY2tWaWRlb0VuY29kZXI7CiAKIGNsYXNzIE1vY2tW
aWRlb0VuY29kZXJGYWN0b3J5IDogcHVibGljIFZpZGVvRW5jb2RlckZhY3RvcnkgewpAQCAtMTcw
LDcgKzE3Niw5IEBAIGNsYXNzIE1vY2tWaWRlb0VuY29kZXJGYWN0b3J5IDogcHVibGljIFZpZGVv
RW5jb2RlckZhY3RvcnkgewogY2xhc3MgTW9ja1ZpZGVvRW5jb2RlciA6IHB1YmxpYyBWaWRlb0Vu
Y29kZXIgewogIHB1YmxpYzoKICAgZXhwbGljaXQgTW9ja1ZpZGVvRW5jb2RlcihNb2NrVmlkZW9F
bmNvZGVyRmFjdG9yeSogZmFjdG9yeSkKLSAgICAgIDogZmFjdG9yeV8oZmFjdG9yeSksIGNhbGxi
YWNrXyhudWxscHRyKSB7fQorICAgICAgOiBmYWN0b3J5XyhmYWN0b3J5KSwKKyAgICAgICAgc2Nh
bGluZ19zZXR0aW5nc18oVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6OmtPZmYpLAorICAg
ICAgICBjYWxsYmFja18obnVsbHB0cikge30KIAogICAvLyBUT0RPKG5pc3NlKTogVmFsaWQgb3Zl
cnJpZGVzIGNvbW1lbnRlZCBvdXQsIGJlY2F1c2UgdGhlIGdtb2NrCiAgIC8vIG1ldGhvZHMgZG9u
J3QgdXNlIGFueSBvdmVycmlkZSBkZWNsYXJhdGlvbnMsIGFuZCB3ZSB3YW50IHRvIGF2b2lkCkBA
IC0yMDMsMTAgKzIxMSwxMyBAQCBjbGFzcyBNb2NrVmlkZW9FbmNvZGVyIDogcHVibGljIFZpZGVv
RW5jb2RlciB7CiAgICAgcmV0dXJuIDA7CiAgIH0KIAotICBNT0NLX01FVEhPRDIoU2V0Q2hhbm5l
bFBhcmFtZXRlcnMsIGludDMyX3QodWludDMyX3QgcGFja2V0TG9zcywgaW50NjRfdCBydHQpKTsK
LQotICBib29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3QgLyogb3ZlcnJpZGUgKi8gewot
ICAgIHJldHVybiBzdXBwb3J0c19uYXRpdmVfaGFuZGxlXzsKKyAgRW5jb2RlckluZm8gR2V0RW5j
b2RlckluZm8oKSBjb25zdCBvdmVycmlkZSB7CisgICAgRW5jb2RlckluZm8gaW5mbzsKKyAgICBp
bmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBzdXBwb3J0c19uYXRpdmVfaGFuZGxlXzsKKyAg
ICBpbmZvLmltcGxlbWVudGF0aW9uX25hbWUgPSBpbXBsZW1lbnRhdGlvbl9uYW1lXzsKKyAgICBp
bmZvLnNjYWxpbmdfc2V0dGluZ3MgPSBzY2FsaW5nX3NldHRpbmdzXzsKKyAgICBpbmZvLmhhc190
cnVzdGVkX3JhdGVfY29udHJvbGxlciA9IGhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcl87Cisg
ICAgcmV0dXJuIGluZm87CiAgIH0KIAogICB2aXJ0dWFsIH5Nb2NrVmlkZW9FbmNvZGVyKCkgeyBm
YWN0b3J5Xy0+RGVzdHJveVZpZGVvRW5jb2Rlcih0aGlzKTsgfQpAQCAtMjI4LDE3ICsyMzksMzAg
QEAgY2xhc3MgTW9ja1ZpZGVvRW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICAgIHN1
cHBvcnRzX25hdGl2ZV9oYW5kbGVfID0gZW5hYmxlZDsKICAgfQogCisgIHZvaWQgc2V0X2ltcGxl
bWVudGF0aW9uX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIHsKKyAgICBpbXBsZW1lbnRh
dGlvbl9uYW1lXyA9IG5hbWU7CisgIH0KKwogICB2b2lkIHNldF9pbml0X2VuY29kZV9yZXR1cm5f
dmFsdWUoaW50MzJfdCB2YWx1ZSkgewogICAgIGluaXRfZW5jb2RlX3JldHVybl92YWx1ZV8gPSB2
YWx1ZTsKICAgfQogCi0gIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gbGFzdF9zZXRfYml0cmF0ZSgp
IGNvbnN0IHsgcmV0dXJuIGxhc3Rfc2V0X2JpdHJhdGVfOyB9CisgIHZvaWQgc2V0X3NjYWxpbmdf
c2V0dGluZ3MoY29uc3QgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MmIHNldHRpbmdzKSB7
CisgICAgc2NhbGluZ19zZXR0aW5nc18gPSBzZXR0aW5nczsKKyAgfQogCi0gIE1PQ0tfQ09OU1Rf
TUVUSE9EMChJbXBsZW1lbnRhdGlvbk5hbWUsIGNvbnN0IGNoYXIqKCkpOworICB2b2lkIHNldF9o
YXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIoYm9vbCB0cnVzdGVkKSB7CisgICAgaGFzX3RydXN0
ZWRfcmF0ZV9jb250cm9sbGVyXyA9IHRydXN0ZWQ7CisgIH0KKworICBWaWRlb0JpdHJhdGVBbGxv
Y2F0aW9uIGxhc3Rfc2V0X2JpdHJhdGUoKSBjb25zdCB7IHJldHVybiBsYXN0X3NldF9iaXRyYXRl
XzsgfQogCiAgcHJpdmF0ZToKICAgTW9ja1ZpZGVvRW5jb2RlckZhY3RvcnkqIGNvbnN0IGZhY3Rv
cnlfOwogICBib29sIHN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfID0gZmFsc2U7CisgIHN0ZDo6c3Ry
aW5nIGltcGxlbWVudGF0aW9uX25hbWVfID0gInVua25vd24iOworICBWaWRlb0VuY29kZXI6OlNj
YWxpbmdTZXR0aW5ncyBzY2FsaW5nX3NldHRpbmdzXzsKKyAgYm9vbCBoYXNfdHJ1c3RlZF9yYXRl
X2NvbnRyb2xsZXJfID0gZmFsc2U7CiAgIGludDMyX3QgaW5pdF9lbmNvZGVfcmV0dXJuX3ZhbHVl
XyA9IDA7CiAgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gbGFzdF9zZXRfYml0cmF0ZV87CiAKQEAg
LTI2MCw3ICsyODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBNb2NrVmlkZW9F
bmNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9FbmNvZGVyKAogICBjb25zdCBjaGFyKiBlbmNvZGVy
X25hbWUgPSBlbmNvZGVyX25hbWVzXy5lbXB0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA/ICJjb2RlY19pbXBsZW1lbnRhdGlvbl9uYW1lIgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBlbmNvZGVyX25hbWVzX1tlbmNvZGVyc18uc2l6ZSgpXTsKLSAgT05f
Q0FMTCgqZW5jb2RlciwgSW1wbGVtZW50YXRpb25OYW1lKCkpLldpbGxCeURlZmF1bHQoUmV0dXJu
KGVuY29kZXJfbmFtZSkpOworICBlbmNvZGVyLT5zZXRfaW1wbGVtZW50YXRpb25fbmFtZShlbmNv
ZGVyX25hbWUpOwogICBlbmNvZGVyc18ucHVzaF9iYWNrKGVuY29kZXIuZ2V0KCkpOwogICByZXR1
cm4gZW5jb2RlcjsKIH0KQEAgLTMwMiwxNSArMzI2LDYgQEAgY2xhc3MgVGVzdFNpbXVsY2FzdEVu
Y29kZXJBZGFwdGVyRmFrZUhlbHBlciB7CiAgICAgcmV0dXJuIG5ldyBTaW11bGNhc3RFbmNvZGVy
QWRhcHRlcihmYWN0b3J5Xy5nZXQoKSwgU2RwVmlkZW9Gb3JtYXQoIlZQOCIpKTsKICAgfQogCi0g
IHZvaWQgRXhwZWN0Q2FsbFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldExvc3Ms
IGludDY0X3QgcnR0KSB7Ci0gICAgRVhQRUNUX1RSVUUoIWZhY3RvcnlfLT5lbmNvZGVycygpLmVt
cHR5KCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmFjdG9yeV8tPmVuY29kZXJzKCku
c2l6ZSgpOyArK2kpIHsKLSAgICAgIEVYUEVDVF9DQUxMKCpmYWN0b3J5Xy0+ZW5jb2RlcnMoKVtp
XSwKLSAgICAgICAgICAgICAgICAgIFNldENoYW5uZWxQYXJhbWV0ZXJzKHBhY2tldExvc3MsIHJ0
dCkpCi0gICAgICAgICAgLlRpbWVzKDEpOwotICAgIH0KLSAgfQotCiAgIE1vY2tWaWRlb0VuY29k
ZXJGYWN0b3J5KiBmYWN0b3J5KCkgeyByZXR1cm4gZmFjdG9yeV8uZ2V0KCk7IH0KIAogIHByaXZh
dGU6CkBAIC00NTksMTQgKzQ3NCw2IEBAIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0
ZXJGYWtlLCBSZWluaXQpIHsKICAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJfLT5Jbml0RW5jb2RlKCZj
b2RlY18sIDEsIDEyMDApKTsKIH0KIAotVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRl
ckZha2UsIFNldENoYW5uZWxQYXJhbWV0ZXJzKSB7Ci0gIFNldHVwQ29kZWMoKTsKLSAgY29uc3Qg
dWludDMyX3QgcGFja2V0TG9zcyA9IDU7Ci0gIGNvbnN0IGludDY0X3QgcnR0ID0gMzA7Ci0gIGhl
bHBlcl8tPkV4cGVjdENhbGxTZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRMb3NzLCBydHQpOwot
ICBhZGFwdGVyXy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0TG9zcywgcnR0KTsKLX0KLQog
VEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2UsIEVuY29kZWRDYWxsYmFja0Zv
ckRpZmZlcmVudEVuY29kZXJzKSB7CiAgIFNldHVwQ29kZWMoKTsKIApAQCAtNzI4LDkgKzczNSwx
MSBAQCBURVNUX0YoVGVzdFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZSwgU3VwcG9ydHNOYXRp
dmVIYW5kbGVGb3JTaW5nbGVTdHJlYW1zKSB7CiAgIGFkYXB0ZXJfLT5SZWdpc3RlckVuY29kZUNv
bXBsZXRlQ2FsbGJhY2sodGhpcyk7CiAgIEFTU0VSVF9FUSgxdSwgaGVscGVyXy0+ZmFjdG9yeSgp
LT5lbmNvZGVycygpLnNpemUoKSk7CiAgIGhlbHBlcl8tPmZhY3RvcnkoKS0+ZW5jb2RlcnMoKVsw
XS0+c2V0X3N1cHBvcnRzX25hdGl2ZV9oYW5kbGUodHJ1ZSk7Ci0gIEVYUEVDVF9UUlVFKGFkYXB0
ZXJfLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgpKTsKKyAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJfLT5J
bml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsKKyAgRVhQRUNUX1RSVUUoYWRhcHRlcl8tPkdl
dEVuY29kZXJJbmZvKCkuc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSk7CiAgIGhlbHBlcl8tPmZhY3Rv
cnkoKS0+ZW5jb2RlcnMoKVswXS0+c2V0X3N1cHBvcnRzX25hdGl2ZV9oYW5kbGUoZmFsc2UpOwot
ICBFWFBFQ1RfRkFMU0UoYWRhcHRlcl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCkpOworICBFWFBF
Q1RfRVEoMCwgYWRhcHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwgMTIwMCkpOworICBFWFBF
Q1RfRkFMU0UoYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCkuc3VwcG9ydHNfbmF0aXZlX2hhbmRs
ZSk7CiB9CiAKIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBTZXRSYXRl
c1VuZGVyTWluQml0cmF0ZSkgewpAQCAtNzYzLDcgKzc3Miw4IEBAIFRFU1RfRihUZXN0U2ltdWxj
YXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBTZXRSYXRlc1VuZGVyTWluQml0cmF0ZSkgewogfQogCiBU
RVNUX0YoVGVzdFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZSwgU3VwcG9ydHNJbXBsZW1lbnRh
dGlvbk5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJTaW11bGNhc3RFbmNvZGVyQWRhcHRlciIsIGFk
YXB0ZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKSk7CisgIEVYUEVDVF9FUSgiU2ltdWxjYXN0RW5j
b2RlckFkYXB0ZXIiLAorICAgICAgICAgICAgYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCkuaW1w
bGVtZW50YXRpb25fbmFtZSk7CiAgIFNpbXVsY2FzdFRlc3RGaXh0dXJlSW1wbDo6RGVmYXVsdFNl
dHRpbmdzKAogICAgICAgJmNvZGVjXywgc3RhdGljX2Nhc3Q8Y29uc3QgaW50Kj4oa1Rlc3RUZW1w
b3JhbExheWVyUHJvZmlsZSksCiAgICAgICBrVmlkZW9Db2RlY1ZQOCk7CkBAIC03NzMsOCArNzgz
LDggQEAgVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2UsIFN1cHBvcnRzSW1w
bGVtZW50YXRpb25OYW1lKSB7CiAgIGVuY29kZXJfbmFtZXMucHVzaF9iYWNrKCJjb2RlYzMiKTsK
ICAgaGVscGVyXy0+ZmFjdG9yeSgpLT5TZXRFbmNvZGVyTmFtZXMoZW5jb2Rlcl9uYW1lcyk7CiAg
IEVYUEVDVF9FUSgwLCBhZGFwdGVyXy0+SW5pdEVuY29kZSgmY29kZWNfLCAxLCAxMjAwKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXIgKGNvZGVjMSwgY29kZWMyLCBj
b2RlYzMpIiwKLSAgICAgICAgICAgICAgIGFkYXB0ZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKSk7
CisgIEVYUEVDVF9FUSgiU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXIgKGNvZGVjMSwgY29kZWMyLCBj
b2RlYzMpIiwKKyAgICAgICAgICAgIGFkYXB0ZXJfLT5HZXRFbmNvZGVySW5mbygpLmltcGxlbWVu
dGF0aW9uX25hbWUpOwogCiAgIC8vIFNpbmdsZSBzdHJlYW1zIHNob3VsZCBub3QgZXhwb3NlICJT
aW11bGNhc3RFbmNvZGVyQWRhcHRlciIgaW4gbmFtZS4KICAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJf
LT5SZWxlYXNlKCkpOwpAQCAtNzgyLDcgKzc5Miw3IEBAIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5j
b2RlckFkYXB0ZXJGYWtlLCBTdXBwb3J0c0ltcGxlbWVudGF0aW9uTmFtZSkgewogICBFWFBFQ1Rf
RVEoMCwgYWRhcHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwgMTIwMCkpOwogICBhZGFwdGVy
Xy0+UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKHRoaXMpOwogICBBU1NFUlRfRVEoMXUs
IGhlbHBlcl8tPmZhY3RvcnkoKS0+ZW5jb2RlcnMoKS5zaXplKCkpOwotICBFWFBFQ1RfU1RSRVEo
ImNvZGVjMSIsIGFkYXB0ZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKSk7CisgIEVYUEVDVF9FUSgi
Y29kZWMxIiwgYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCkuaW1wbGVtZW50YXRpb25fbmFtZSk7
CiB9CiAKIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLApAQCAtNzk4LDEw
ICs4MDgsMTEgQEAgVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2UsCiAgICAg
ZW5jb2Rlci0+c2V0X3N1cHBvcnRzX25hdGl2ZV9oYW5kbGUodHJ1ZSk7CiAgIC8vIElmIG9uZSBl
bmNvZGVyIGRvZXNuJ3Qgc3VwcG9ydCBpdCwgdGhlbiBvdmVyYWxsIHN1cHBvcnQgaXMgZGlzYWJs
ZWQuCiAgIGhlbHBlcl8tPmZhY3RvcnkoKS0+ZW5jb2RlcnMoKVswXS0+c2V0X3N1cHBvcnRzX25h
dGl2ZV9oYW5kbGUoZmFsc2UpOwotICBFWFBFQ1RfRkFMU0UoYWRhcHRlcl8tPlN1cHBvcnRzTmF0
aXZlSGFuZGxlKCkpOworICBFWFBFQ1RfRkFMU0UoYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCku
c3VwcG9ydHNfbmF0aXZlX2hhbmRsZSk7CiAgIC8vIE9uY2UgYWxsIGRvLCB0aGVuIHRoZSBhZGFw
dGVyIGNsYWltcyBzdXBwb3J0LgogICBoZWxwZXJfLT5mYWN0b3J5KCktPmVuY29kZXJzKClbMF0t
PnNldF9zdXBwb3J0c19uYXRpdmVfaGFuZGxlKHRydWUpOwotICBFWFBFQ1RfVFJVRShhZGFwdGVy
Xy0+U3VwcG9ydHNOYXRpdmVIYW5kbGUoKSk7CisgIEVYUEVDVF9FUSgwLCBhZGFwdGVyXy0+SW5p
dEVuY29kZSgmY29kZWNfLCAxLCAxMjAwKSk7CisgIEVYUEVDVF9UUlVFKGFkYXB0ZXJfLT5HZXRF
bmNvZGVySW5mbygpLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUpOwogfQogCiAvLyBUT0RPKG5pc3Nl
KTogUmV1c2UgZGVmaW5pdGlvbiBpbiB3ZWJydGMvdGVzdC9mYWtlX3RleHR1cmVfaGFuZGxlLmgu
CkBAIC04MzcsNyArODQ4LDggQEAgVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZh
a2UsCiAgIEFTU0VSVF9FUSgzdSwgaGVscGVyXy0+ZmFjdG9yeSgpLT5lbmNvZGVycygpLnNpemUo
KSk7CiAgIGZvciAoTW9ja1ZpZGVvRW5jb2RlciogZW5jb2RlciA6IGhlbHBlcl8tPmZhY3Rvcnko
KS0+ZW5jb2RlcnMoKSkKICAgICBlbmNvZGVyLT5zZXRfc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSh0
cnVlKTsKLSAgRVhQRUNUX1RSVUUoYWRhcHRlcl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCkpOwor
ICBFWFBFQ1RfRVEoMCwgYWRhcHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwgMTIwMCkpOwor
ICBFWFBFQ1RfVFJVRShhZGFwdGVyXy0+R2V0RW5jb2RlckluZm8oKS5zdXBwb3J0c19uYXRpdmVf
aGFuZGxlKTsKIAogICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9GcmFtZUJ1ZmZlcj4gYnVmZmVy
KAogICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxGYWtlTmF0aXZlQnVmZmVyTm9JNDIw
PigxMjgwLCA3MjApKTsKQEAgLTk0OCw1ICs5NjAsNTAgQEAgVEVTVF9GKFRlc3RTaW11bGNhc3RF
bmNvZGVyQWRhcHRlckZha2UsIEFjdGl2YXRlc0NvcnJlY3RTdHJlYW1zSW5Jbml0RW5jb2RlKSB7
CiAgIGZyYW1lX3R5cGVzLnJlc2l6ZSgzLCBrVmlkZW9GcmFtZUtleSk7CiAgIEVYUEVDVF9FUSgw
LCBhZGFwdGVyXy0+RW5jb2RlKGlucHV0X2ZyYW1lLCBudWxscHRyLCAmZnJhbWVfdHlwZXMpKTsK
IH0KKworVEVTVF9GKFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2UsIFRydXN0ZWRSYXRl
Q29udHJvbCkgeworICAvLyBTZXQgdXAgY29tbW9uIHNldHRpbmdzIGZvciB0aHJlZSBzdHJlYW1z
LgorICBTaW11bGNhc3RUZXN0Rml4dHVyZUltcGw6OkRlZmF1bHRTZXR0aW5ncygKKyAgICAgICZj
b2RlY18sIHN0YXRpY19jYXN0PGNvbnN0IGludCo+KGtUZXN0VGVtcG9yYWxMYXllclByb2ZpbGUp
LAorICAgICAga1ZpZGVvQ29kZWNWUDgpOworICByYXRlX2FsbG9jYXRvcl8ucmVzZXQobmV3IFNp
bXVsY2FzdFJhdGVBbGxvY2F0b3IoY29kZWNfKSk7CisgIGFkYXB0ZXJfLT5SZWdpc3RlckVuY29k
ZUNvbXBsZXRlQ2FsbGJhY2sodGhpcyk7CisKKyAgLy8gT25seSBlbm91Z2ggc3RhcnQgYml0cmF0
ZSBmb3IgdGhlIGxvd2VzdCBzdHJlYW0uCisgIEFTU0VSVF9FUSgzdSwgY29kZWNfLm51bWJlck9m
U2ltdWxjYXN0U3RyZWFtcyk7CisgIGNvZGVjXy5zdGFydEJpdHJhdGUgPSBjb2RlY18uc2ltdWxj
YXN0U3RyZWFtWzBdLnRhcmdldEJpdHJhdGUgKworICAgICAgICAgICAgICAgICAgICAgICAgY29k
ZWNfLnNpbXVsY2FzdFN0cmVhbVsxXS5taW5CaXRyYXRlIC0gMTsKKworICAvLyBJbnB1dCBkYXRh
LgorICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9GcmFtZUJ1ZmZlcj4gYnVmZmVyKEk0MjBCdWZm
ZXI6OkNyZWF0ZSgxMjgwLCA3MjApKTsKKyAgVmlkZW9GcmFtZSBpbnB1dF9mcmFtZShidWZmZXIs
IDEwMCwgMTAwMCwga1ZpZGVvUm90YXRpb25fMTgwKTsKKworICAvLyBObyBlbmNvZGVyIHRydXN0
ZWQsIHNvIHNpbXVsY2FzdCBhZGFwdGVyIHNob3VsZCBub3QgYmUgZWl0aGVyLgorICBFWFBFQ1Rf
RVEoMCwgYWRhcHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwgMTIwMCkpOworICBFWFBFQ1Rf
RkFMU0UoYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCkuaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9s
bGVyKTsKKworICAvLyBFbmNvZGUgd2l0aCB0aHJlZSBzdHJlYW1zLgorICBzdGQ6OnZlY3RvcjxN
b2NrVmlkZW9FbmNvZGVyKj4gb3JpZ2luYWxfZW5jb2RlcnMgPQorICAgICAgaGVscGVyXy0+ZmFj
dG9yeSgpLT5lbmNvZGVycygpOworCisgIC8vIEFsbCBlbmNvZGVycyBhcmUgdHJ1c3RlZCwgc28g
c2ltdWxjYXN0IGFkYXB0ZXIgc2hvdWxkIGJlIHRvby4KKyAgb3JpZ2luYWxfZW5jb2RlcnNbMF0t
PnNldF9oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIodHJ1ZSk7CisgIG9yaWdpbmFsX2VuY29k
ZXJzWzFdLT5zZXRfaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKHRydWUpOworICBvcmlnaW5h
bF9lbmNvZGVyc1syXS0+c2V0X2hhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcih0cnVlKTsKKyAg
RVhQRUNUX0VRKDAsIGFkYXB0ZXJfLT5Jbml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsKKyAg
RVhQRUNUX1RSVUUoYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCkuaGFzX3RydXN0ZWRfcmF0ZV9j
b250cm9sbGVyKTsKKworICAvLyBPbmUgZW5jb2RlciBub3QgdHJ1c3RlZCwgc28gc2ltdWxjYXN0
IGFkYXB0ZXIgc2hvdWxkIG5vdCBiZSBlaXRoZXIuCisgIG9yaWdpbmFsX2VuY29kZXJzWzJdLT5z
ZXRfaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKGZhbHNlKTsKKyAgRVhQRUNUX0VRKDAsIGFk
YXB0ZXJfLT5Jbml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsKKyAgRVhQRUNUX0ZBTFNFKGFk
YXB0ZXJfLT5HZXRFbmNvZGVySW5mbygpLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcik7CisK
KyAgLy8gTm8gZW5jb2RlciB0cnVzdGVkLCBzbyBzaW11bGNhc3QgYWRhcHRlciBzaG91bGQgbm90
IGJlIGVpdGhlci4KKyAgb3JpZ2luYWxfZW5jb2RlcnNbMF0tPnNldF9oYXNfdHJ1c3RlZF9yYXRl
X2NvbnRyb2xsZXIoZmFsc2UpOworICBvcmlnaW5hbF9lbmNvZGVyc1sxXS0+c2V0X2hhc190cnVz
dGVkX3JhdGVfY29udHJvbGxlcihmYWxzZSk7CisgIEVYUEVDVF9FUSgwLCBhZGFwdGVyXy0+SW5p
dEVuY29kZSgmY29kZWNfLCAxLCAxMjAwKSk7CisgIEVYUEVDVF9GQUxTRShhZGFwdGVyXy0+R2V0
RW5jb2RlckluZm8oKS5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIpOworfQorCiB9ICAvLyBu
YW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2Fz
dF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2VuZ2luZS9zaW11bGNhc3RfdW5pdHRlc3QuY2MKaW5kZXggZjQxNjM2ODY5Nzg5OTMx
NzM5ZDZmOTNhYjA4ZTE2YmI1OTg2NjBmYy4uMGMyNzgxNjA2ODlkZmUzNjM5Y2Y4ZDA5MTQ5OTEw
MjRkNWMyNzYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0
X3VuaXR0ZXN0LmNjCkBAIC0xNzksNyArMTc5LDcgQEAgVEVTVChTaW11bGNhc3RUZXN0LCBHZXRD
b25maWdXaXRoTm9ybWFsaXplZFJlc29sdXRpb24pIHsKICAgICAgIGtNYXhMYXllcnMsIDY0MCAr
IDEsIDM2MCArIDEsIGtNYXhCaXRyYXRlQnBzLCBrQml0cmF0ZVByaW9yaXR5LCBrUXBNYXgsCiAg
ICAgICBrTWF4RnBzLCAha1NjcmVlbnNoYXJlKTsKIAotICAvLyBNdXN0IGJlIGRpdmlkYWJsZSBi
eSB8MiBeIChudW1fbGF5ZXJzIC0gMSl8LgorICAvLyBNdXN0IGJlIGRpdmlzaWJsZSBieSB8MiBe
IChudW1fbGF5ZXJzIC0gMSl8LgogICBFWFBFQ1RfRVEoa01heExheWVycywgc3RyZWFtcy5zaXpl
KCkpOwogICBFWFBFQ1RfRVEoMzIwdSwgc3RyZWFtc1swXS53aWR0aCk7CiAgIEVYUEVDVF9FUSgx
ODB1LCBzdHJlYW1zWzBdLmhlaWdodCk7CkBAIC0xODcsNiArMTg3LDQwIEBAIFRFU1QoU2ltdWxj
YXN0VGVzdCwgR2V0Q29uZmlnV2l0aE5vcm1hbGl6ZWRSZXNvbHV0aW9uKSB7CiAgIEVYUEVDVF9F
USgzNjB1LCBzdHJlYW1zWzFdLmhlaWdodCk7CiB9CiAKK1RFU1QoU2ltdWxjYXN0VGVzdCwgR2V0
Q29uZmlnV2l0aE5vcm1hbGl6ZWRSZXNvbHV0aW9uRGl2aXNpYmxlQnk0KSB7CisgIHRlc3Q6OlNj
b3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJSVEMtTm9ybWFsaXplU2lt
dWxjYXN0UmVzb2x1dGlvbi9FbmFibGVkLTIvIik7CisKKyAgY29uc3Qgc2l6ZV90IGtNYXhMYXll
cnMgPSAyOworICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9IGNyaWNrZXQ6Okdl
dFNpbXVsY2FzdENvbmZpZygKKyAgICAgIGtNYXhMYXllcnMsIDcwOSwgNTAxLCBrTWF4Qml0cmF0
ZUJwcywga0JpdHJhdGVQcmlvcml0eSwga1FwTWF4LCBrTWF4RnBzLAorICAgICAgIWtTY3JlZW5z
aGFyZSk7CisKKyAgLy8gTXVzdCBiZSBkaXZpc2libGUgYnkgfDIgXiAyfC4KKyAgRVhQRUNUX0VR
KGtNYXhMYXllcnMsIHN0cmVhbXMuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDM1NHUsIHN0cmVhbXNb
MF0ud2lkdGgpOworICBFWFBFQ1RfRVEoMjUwdSwgc3RyZWFtc1swXS5oZWlnaHQpOworICBFWFBF
Q1RfRVEoNzA4dSwgc3RyZWFtc1sxXS53aWR0aCk7CisgIEVYUEVDVF9FUSg1MDB1LCBzdHJlYW1z
WzFdLmhlaWdodCk7Cit9CisKK1RFU1QoU2ltdWxjYXN0VGVzdCwgR2V0Q29uZmlnV2l0aE5vcm1h
bGl6ZWRSZXNvbHV0aW9uRGl2aXNpYmxlQnk4KSB7CisgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxz
IGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJSVEMtTm9ybWFsaXplU2ltdWxjYXN0UmVzb2x1dGlv
bi9FbmFibGVkLTMvIik7CisKKyAgY29uc3Qgc2l6ZV90IGtNYXhMYXllcnMgPSAyOworICBzdGQ6
OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9IGNyaWNrZXQ6OkdldFNpbXVsY2FzdENvbmZp
ZygKKyAgICAgIGtNYXhMYXllcnMsIDcwOSwgNTAxLCBrTWF4Qml0cmF0ZUJwcywga0JpdHJhdGVQ
cmlvcml0eSwga1FwTWF4LCBrTWF4RnBzLAorICAgICAgIWtTY3JlZW5zaGFyZSk7CisKKyAgLy8g
TXVzdCBiZSBkaXZpc2libGUgYnkgfDIgXiAzfC4KKyAgRVhQRUNUX0VRKGtNYXhMYXllcnMsIHN0
cmVhbXMuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDM1MnUsIHN0cmVhbXNbMF0ud2lkdGgpOworICBF
WFBFQ1RfRVEoMjQ4dSwgc3RyZWFtc1swXS5oZWlnaHQpOworICBFWFBFQ1RfRVEoNzA0dSwgc3Ry
ZWFtc1sxXS53aWR0aCk7CisgIEVYUEVDVF9FUSg0OTZ1LCBzdHJlYW1zWzFdLmhlaWdodCk7Cit9
CisKIFRFU1QoU2ltdWxjYXN0VGVzdCwgR2V0Q29uZmlnRm9yU2NyZWVuc2hhcmUpIHsKICAgY29u
c3Qgc2l6ZV90IGtNYXhMYXllcnMgPSAzOwogICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3Ry
ZWFtcyA9IGNyaWNrZXQ6OkdldFNpbXVsY2FzdENvbmZpZygKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhfZW5jb2Rl
cl9zaW11bGNhc3RfcHJveHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5LmNjCmluZGV4
IDRkODU4NjMwYjU4MjRkNzA0ZWU4OWMxYjgwNDE2NDcwZGI5YTJlODYuLjFhMmY1NzcyNWNlYzI1
YWVlNDMwYjQ2OGRjMTU5Mjc4NWI5MzIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNh
c3RfcHJveHkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eS5jYwpAQCAtMTAsOSAr
MTAsNyBAQAogCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9w
cm94eS5oIgogCi0jaW5jbHVkZSAibWVkaWEvZW5naW5lL3Njb3BlZHZpZGVvZW5jb2Rlci5oIgog
I2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogVlA4RW5jb2Rl
clNpbXVsY2FzdFByb3h5OjpWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHkoVmlkZW9FbmNvZGVyRmFj
dG9yeSogZmFjdG9yeSwKQEAgLTU3LDI4ICs1NSwxNCBAQCBpbnQgVlA4RW5jb2RlclNpbXVsY2Fz
dFByb3h5OjpSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgIHJldHVybiBlbmNvZGVy
Xy0+UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKGNhbGxiYWNrKTsKIH0KIAotaW50IFZQ
OEVuY29kZXJTaW11bGNhc3RQcm94eTo6U2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFj
a2V0X2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQ2NF90IHJ0dCkgewotICByZXR1cm4gZW5jb2Rlcl8tPlNldENoYW5uZWxQYXJhbWV0
ZXJzKHBhY2tldF9sb3NzLCBydHQpOwotfQotCiBpbnQgVlA4RW5jb2RlclNpbXVsY2FzdFByb3h5
OjpTZXRSYXRlQWxsb2NhdGlvbigKICAgICBjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBi
aXRyYXRlLAogICAgIHVpbnQzMl90IG5ld19mcmFtZXJhdGUpIHsKICAgcmV0dXJuIGVuY29kZXJf
LT5TZXRSYXRlQWxsb2NhdGlvbihiaXRyYXRlLCBuZXdfZnJhbWVyYXRlKTsKIH0KIAotVmlkZW9F
bmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgVlA4RW5jb2RlclNpbXVsY2FzdFByb3h5OjpHZXRTY2Fs
aW5nU2V0dGluZ3MoKQotICAgIGNvbnN0IHsKLSAgcmV0dXJuIGVuY29kZXJfLT5HZXRTY2FsaW5n
U2V0dGluZ3MoKTsKLX0KLQotYm9vbCBWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHk6OlN1cHBvcnRz
TmF0aXZlSGFuZGxlKCkgY29uc3QgewotICByZXR1cm4gZW5jb2Rlcl8tPlN1cHBvcnRzTmF0aXZl
SGFuZGxlKCk7Ci19Ci0KLWNvbnN0IGNoYXIqIFZQOEVuY29kZXJTaW11bGNhc3RQcm94eTo6SW1w
bGVtZW50YXRpb25OYW1lKCkgY29uc3QgewotICByZXR1cm4gZW5jb2Rlcl8tPkltcGxlbWVudGF0
aW9uTmFtZSgpOworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBWUDhFbmNvZGVyU2ltdWxjYXN0
UHJveHk6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICByZXR1cm4gZW5jb2Rlcl8tPkdldEVu
Y29kZXJJbmZvKCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhf
ZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuaApp
bmRleCA2ODViY2JlZDZlZjg0NmQ3OWFmYmQzZjgzMzk4OTA4MDhmNjUyYTAwLi5kMDQ2MjRmMjZj
NWQ4NjE1MDdlNjhhNjgyYTIyY2VmY2U4MDY2YzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2VuY29kZXJfc2lt
dWxjYXN0X3Byb3h5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eS5oCkBAIC0xNiw4
ICsxNiw4IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVj
cy9zZHBfdmlkZW9fZm9ybWF0LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19l
bmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3Rv
cnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUv
dnA4LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC00MiwxNCArNDIsOSBAQCBjbGFzcyBW
UDhFbmNvZGVyU2ltdWxjYXN0UHJveHkgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgICAgICAg
ICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+KiBmcmFtZV90eXBlcykgb3ZlcnJp
ZGU7CiAgIGludCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soRW5jb2RlZEltYWdlQ2Fs
bGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKLSAgaW50IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVp
bnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CiAgIGludCBTZXRSYXRl
QWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgbmV3X2ZyYW1lcmF0ZSkgb3ZlcnJpZGU7Ci0KLSAg
VmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgYm9vbCBTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0IG92ZXJyaWRl
OwotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAg
RW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZTsKIAogIHByaXZhdGU6
CiAgIFZpZGVvRW5jb2RlckZhY3RvcnkqIGNvbnN0IGZhY3RvcnlfOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3ZwOF9l
bmNvZGVyX3NpbXVsY2FzdF9wcm94eV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3Rf
cHJveHlfdW5pdHRlc3QuY2MKaW5kZXggZDFkYzlhMzFkZjY2YmM1OTMzZmFmMGI4Yjc1MDQ1NmQ1
NmE5YmM3My4uZDFiMjZiYmU5M2U2OTEzYTdhOWIyNzk3MWUyYzA4Mzk3MWViNTU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eV91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2VuY29k
ZXJfc2ltdWxjYXN0X3Byb3h5X3VuaXR0ZXN0LmNjCkBAIC0xMCwxMiArMTAsMTEgQEAKICAqLwog
CiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eS5oIgot
CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192aWRlb19lbmNv
ZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9s
YXllcnMuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmNvZGVyZmFjdG9y
eS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92
cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5j
bHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCiAj
aW5jbHVkZSAidGVzdC9ndGVzdC5oIgpAQCAtNTIsOSArNTEsNyBAQCBjbGFzcyBNb2NrRW5jb2Rl
ciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNp
ZmljSW5mbyogY29kZWNTcGVjaWZpY0luZm8sCiAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPEZyYW1lVHlwZT4qIGZyYW1lX3R5cGVzKSAvKiBvdmVycmlkZSAqLyk7CiAKLSAgTU9DS19N
RVRIT0QyKFNldENoYW5uZWxQYXJhbWV0ZXJzLCBpbnQzMl90KHVpbnQzMl90IHBhY2tldExvc3Ms
IGludDY0X3QgcnR0KSk7Ci0KLSAgTU9DS19DT05TVF9NRVRIT0QwKEltcGxlbWVudGF0aW9uTmFt
ZSwgY29uc3QgY2hhciooKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRFbmNvZGVySW5mbywg
VmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyh2b2lkKSk7CiB9OwogCiBURVNUKFZQOEVuY29kZXJT
aW11bGNhc3RQcm94eSwgQ2hvb3Nlc0NvcnJlY3RJbXBsZW1lbnRhdGlvbikgewpAQCAtOTQsOCAr
OTEsMTAgQEAgVEVTVChWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHksIENob29zZXNDb3JyZWN0SW1w
bGVtZW50YXRpb24pIHsKIAogICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVyLCBJbml0RW5jb2Rl
KF8sIF8sIF8pKQogICAgICAgLldpbGxPbmNlKFJldHVybihXRUJSVENfVklERU9fQ09ERUNfT0sp
KTsKLSAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlciwgSW1wbGVtZW50YXRpb25OYW1lKCkpCi0g
ICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGtJbXBsZW1lbnRhdGlvbk5hbWUuY19zdHIoKSkp
OworICBWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIGVuY29kZXJfaW5mbzsKKyAgZW5jb2Rlcl9p
bmZvLmltcGxlbWVudGF0aW9uX25hbWUgPSBrSW1wbGVtZW50YXRpb25OYW1lOworICBFWFBFQ1Rf
Q0FMTCgqbW9ja19lbmNvZGVyLCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldpbGxSZXBlYXRl
ZGx5KFJldHVybihlbmNvZGVyX2luZm8pKTsKIAogICBFWFBFQ1RfQ0FMTChzaW11bGNhc3RfZmFj
dG9yeSwgQ3JlYXRlVmlkZW9FbmNvZGVyUHJveHkoXykpCiAgICAgICAuVGltZXMoMSkKQEAgLTEw
NSw3ICsxMDQsOCBAQCBURVNUKFZQOEVuY29kZXJTaW11bGNhc3RQcm94eSwgQ2hvb3Nlc0NvcnJl
Y3RJbXBsZW1lbnRhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2RwVmlkZW9Gb3JtYXQoIlZQOCIpKTsKICAgRVhQRUNUX0VRKFdFQlJU
Q19WSURFT19DT0RFQ19PSywKICAgICAgICAgICAgIHNpbXVsY2FzdF9lbmFibGVkX3Byb3h5Lklu
aXRFbmNvZGUoJmNvZGVjX3NldHRpbmdzLCA0LCAxMjAwKSk7Ci0gIEVYUEVDVF9FUShrSW1wbGVt
ZW50YXRpb25OYW1lLCBzaW11bGNhc3RfZW5hYmxlZF9wcm94eS5JbXBsZW1lbnRhdGlvbk5hbWUo
KSk7CisgIEVYUEVDVF9FUShrSW1wbGVtZW50YXRpb25OYW1lLAorICAgICAgICAgICAgc2ltdWxj
YXN0X2VuYWJsZWRfcHJveHkuR2V0RW5jb2RlckluZm8oKS5pbXBsZW1lbnRhdGlvbl9uYW1lKTsK
IAogICBOaWNlTW9jazxNb2NrRW5jb2Rlcj4qIG1vY2tfZW5jb2RlcjEgPSBuZXcgTmljZU1vY2s8
TW9ja0VuY29kZXI+KCk7CiAgIE5pY2VNb2NrPE1vY2tFbmNvZGVyPiogbW9ja19lbmNvZGVyMiA9
IG5ldyBOaWNlTW9jazxNb2NrRW5jb2Rlcj4oKTsKQEAgLTExNiwyMyArMTE2LDIzIEBAIFRFU1Qo
VlA4RW5jb2RlclNpbXVsY2FzdFByb3h5LCBDaG9vc2VzQ29ycmVjdEltcGxlbWVudGF0aW9uKSB7
CiAgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIxLCBJbml0RW5jb2RlKF8sIF8sIF8pKQogICAg
ICAgLldpbGxPbmNlKAogICAgICAgICAgIFJldHVybihXRUJSVENfVklERU9fQ09ERUNfRVJSX1NJ
TVVMQ0FTVF9QQVJBTUVURVJTX05PVF9TVVBQT1JURUQpKTsKLSAgRVhQRUNUX0NBTEwoKm1vY2tf
ZW5jb2RlcjEsIEltcGxlbWVudGF0aW9uTmFtZSgpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJl
dHVybihrSW1wbGVtZW50YXRpb25OYW1lLmNfc3RyKCkpKTsKKyAgRVhQRUNUX0NBTEwoKm1vY2tf
ZW5jb2RlcjEsIEdldEVuY29kZXJJbmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJu
KGVuY29kZXJfaW5mbykpOwogCiAgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIyLCBJbml0RW5j
b2RlKF8sIF8sIF8pKQogICAgICAgLldpbGxPbmNlKFJldHVybihXRUJSVENfVklERU9fQ09ERUNf
T0spKTsKLSAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlcjIsIEltcGxlbWVudGF0aW9uTmFtZSgp
KQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihrSW1wbGVtZW50YXRpb25OYW1lLmNfc3Ry
KCkpKTsKKyAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlcjIsIEdldEVuY29kZXJJbmZvKCkpCisg
ICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGVuY29kZXJfaW5mbykpOwogCiAgIEVYUEVDVF9D
QUxMKCptb2NrX2VuY29kZXIzLCBJbml0RW5jb2RlKF8sIF8sIF8pKQogICAgICAgLldpbGxPbmNl
KFJldHVybihXRUJSVENfVklERU9fQ09ERUNfT0spKTsKLSAgRVhQRUNUX0NBTEwoKm1vY2tfZW5j
b2RlcjMsIEltcGxlbWVudGF0aW9uTmFtZSgpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVy
bihrSW1wbGVtZW50YXRpb25OYW1lLmNfc3RyKCkpKTsKKyAgRVhQRUNUX0NBTEwoKm1vY2tfZW5j
b2RlcjMsIEdldEVuY29kZXJJbmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGVu
Y29kZXJfaW5mbykpOwogCiAgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXI0LCBJbml0RW5jb2Rl
KF8sIF8sIF8pKQogICAgICAgLldpbGxPbmNlKFJldHVybihXRUJSVENfVklERU9fQ09ERUNfT0sp
KTsKLSAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlcjQsIEltcGxlbWVudGF0aW9uTmFtZSgpKQot
ICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihrSW1wbGVtZW50YXRpb25OYW1lLmNfc3RyKCkp
KTsKKyAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlcjQsIEdldEVuY29kZXJJbmZvKCkpCisgICAg
ICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGVuY29kZXJfaW5mbykpOwogCiAgIEVYUEVDVF9DQUxM
KG5vbnNpbXVsY2FzdF9mYWN0b3J5LCBDcmVhdGVWaWRlb0VuY29kZXJQcm94eShfKSkKICAgICAg
IC5UaW1lcyg0KQpAQCAtMTQ2LDEyICsxNDYsMzggQEAgVEVTVChWUDhFbmNvZGVyU2ltdWxjYXN0
UHJveHksIENob29zZXNDb3JyZWN0SW1wbGVtZW50YXRpb24pIHsKICAgRVhQRUNUX0VRKFdFQlJU
Q19WSURFT19DT0RFQ19PSywKICAgICAgICAgICAgIHNpbXVsY2FzdF9kaXNhYmxlZF9wcm94eS5J
bml0RW5jb2RlKCZjb2RlY19zZXR0aW5ncywgNCwgMTIwMCkpOwogICBFWFBFQ1RfRVEoa1NpbXVs
Y2FzdEFkYXB0ZWRJbXBsZW1lbnRhdGlvbk5hbWUsCi0gICAgICAgICAgICBzaW11bGNhc3RfZGlz
YWJsZWRfcHJveHkuSW1wbGVtZW50YXRpb25OYW1lKCkpOworICAgICAgICAgICAgc2ltdWxjYXN0
X2Rpc2FibGVkX3Byb3h5LkdldEVuY29kZXJJbmZvKCkuaW1wbGVtZW50YXRpb25fbmFtZSk7CiAK
ICAgLy8gQ2xlYW51cC4KICAgc2ltdWxjYXN0X2VuYWJsZWRfcHJveHkuUmVsZWFzZSgpOwogICBz
aW11bGNhc3RfZGlzYWJsZWRfcHJveHkuUmVsZWFzZSgpOwogfQogCitURVNUKFZQOEVuY29kZXJT
aW11bGNhc3RQcm94eSwgRm9yd2FyZHNUcnVzdGVkU2V0dGluZykgeworICBOaWNlTW9jazxNb2Nr
RW5jb2Rlcj4qIG1vY2tfZW5jb2RlciA9IG5ldyBOaWNlTW9jazxNb2NrRW5jb2Rlcj4oKTsKKyAg
TmljZU1vY2s8TW9ja1ZpZGVvRW5jb2RlckZhY3Rvcnk+IHNpbXVsY2FzdF9mYWN0b3J5OworCisg
IEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIsIEluaXRFbmNvZGUoXywgXywgXykpCisgICAgICAu
V2lsbE9uY2UoUmV0dXJuKFdFQlJUQ19WSURFT19DT0RFQ19PSykpOworCisgIEVYUEVDVF9DQUxM
KHNpbXVsY2FzdF9mYWN0b3J5LCBDcmVhdGVWaWRlb0VuY29kZXJQcm94eShfKSkKKyAgICAgIC5U
aW1lcygxKQorICAgICAgLldpbGxPbmNlKFJldHVybihtb2NrX2VuY29kZXIpKTsKKworICBWUDhF
bmNvZGVyU2ltdWxjYXN0UHJveHkgc2ltdWxjYXN0X2VuYWJsZWRfcHJveHkoJnNpbXVsY2FzdF9m
YWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2RwVmlkZW9Gb3JtYXQoIlZQOCIpKTsKKyAgVmlkZW9Db2RlYyBjb2RlY19zZXR0aW5nczsK
KyAgd2VicnRjOjp0ZXN0OjpDb2RlY1NldHRpbmdzKGtWaWRlb0NvZGVjVlA4LCAmY29kZWNfc2V0
dGluZ3MpOworICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLAorICAgICAgICAgICAg
c2ltdWxjYXN0X2VuYWJsZWRfcHJveHkuSW5pdEVuY29kZSgmY29kZWNfc2V0dGluZ3MsIDQsIDEy
MDApKTsKKworICBWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIGluZm87CisgIGluZm8uaGFzX3Ry
dXN0ZWRfcmF0ZV9jb250cm9sbGVyID0gdHJ1ZTsKKyAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2Rl
ciwgR2V0RW5jb2RlckluZm8oKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGluZm8pKTsKKworICBF
WFBFQ1RfVFJVRSgKKyAgICAgIHNpbXVsY2FzdF9lbmFibGVkX3Byb3h5LkdldEVuY29kZXJJbmZv
KCkuaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2lu
ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Vu
Z2luZS93ZWJydGNtZWRpYWVuZ2luZS5jYwppbmRleCBlNjBjNTkyYTNmYWJlZWQxMmViNThmZWQ5
YTZiNmVjZDY3ZmRmMDM1Li5iYzdkM2MzZTEyNGZmZWZlYTM2YjAyMWU1YmM2MzVhMzYwMmViNjI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lLmNj
CkBAIC0xMSwxMCArMTEsMTAgQEAKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFl
bmdpbmUuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5j
bHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvbWVtb3J5
L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxs
b2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29k
ZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5lLmgiCkBA
IC0zOCwyMyArMzgsMjQgQEAgTWVkaWFFbmdpbmVJbnRlcmZhY2UqIENyZWF0ZVdlYlJ0Y01lZGlh
RW5naW5lKAogICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCiAgICAgV2ViUnRjVmlkZW9F
bmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAogICAgIFdlYlJ0Y1ZpZGVvRGVj
b2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICB2aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5LAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1
ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1
ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZykgeworICBzdGQ6OnVuaXF1ZV9wdHI8Vmlk
ZW9FbmdpbmVJbnRlcmZhY2U+IHZpZGVvX2VuZ2luZTsKICNpZmRlZiBIQVZFX1dFQlJUQ19WSURF
TwotICB0eXBlZGVmIFdlYlJ0Y1ZpZGVvRW5naW5lIFZpZGVvRW5naW5lOwotICBzdGQ6OnR1cGxl
PHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5PiwKLSAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeT4+Ci0gICAgICB2aWRl
b19hcmdzKAotICAgICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9FbmNvZGVyRmFj
dG9yeT4odmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSksCi0gICAgICAgICAgKHN0ZDo6dW5pcXVlX3B0
cjxXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5Pih2aWRlb19kZWNvZGVyX2ZhY3RvcnkpKSk7Cisg
IHZpZGVvX2VuZ2luZSA9IGFic2w6Om1ha2VfdW5pcXVlPFdlYlJ0Y1ZpZGVvRW5naW5lPigKKyAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5Pih2aWRlb19lbmNv
ZGVyX2ZhY3RvcnkpLAorICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVvRGVjb2RlckZh
Y3Rvcnk+KHZpZGVvX2RlY29kZXJfZmFjdG9yeSksCisgICAgICBzdGQ6Om1vdmUodmlkZW9fYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkpOwogI2Vsc2UKLSAgdHlwZWRlZiBOdWxsV2ViUnRjVmlk
ZW9FbmdpbmUgVmlkZW9FbmdpbmU7Ci0gIHN0ZDo6dHVwbGU8PiB2aWRlb19hcmdzOworICB2aWRl
b19lbmdpbmUgPSBhYnNsOjptYWtlX3VuaXF1ZTxOdWxsV2ViUnRjVmlkZW9FbmdpbmU+KCk7CiAj
ZW5kaWYKLSAgcmV0dXJuIG5ldyBDb21wb3NpdGVNZWRpYUVuZ2luZTxXZWJSdGNWb2ljZUVuZ2lu
ZSwgVmlkZW9FbmdpbmU+KAotICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKGFkbSwgYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXVkaW9fbWl4ZXIsIGF1ZGlvX3Byb2Nlc3NpbmcpLAotICAgICAgc3RkOjpt
b3ZlKHZpZGVvX2FyZ3MpKTsKKyAgcmV0dXJuIG5ldyBDb21wb3NpdGVNZWRpYUVuZ2luZSgKKyAg
ICAgIGFic2w6Om1ha2VfdW5pcXVlPFdlYlJ0Y1ZvaWNlRW5naW5lPihhZG0sIGF1ZGlvX2VuY29k
ZXJfZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dWRpb19kZWNvZGVyX2ZhY3RvcnksIGF1ZGlvX21peGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3Byb2Nlc3NpbmcpLAorICAgICAgc3RkOjptb3Zl
KHZpZGVvX2VuZ2luZSkpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTY3LDEwICs2OCw0MyBA
QCBNZWRpYUVuZ2luZUludGVyZmFjZSogV2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUo
CiAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKICAgICBXZWJSdGNWaWRlb0VuY29kZXJG
YWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCiAgICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFj
dG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSB7Ci0gIHJldHVybiBDcmVhdGVXZWJSdGNNZWRp
YUVuZ2luZShhZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5
LCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpBdWRp
b1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpOworICByZXR1cm4gV2ViUnRjTWVkaWFFbmdp
bmVGYWN0b3J5OjpDcmVhdGUoCisgICAgICBhZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVk
aW9fZGVjb2Rlcl9mYWN0b3J5LCB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICB2aWRlb19k
ZWNvZGVyX2ZhY3RvcnksCisgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVB
bGxvY2F0b3JGYWN0b3J5KCkpOworfQorCitNZWRpYUVuZ2luZUludGVyZmFjZSogV2ViUnRjTWVk
aWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCisgICAgd2VicnRjOjpBdWRpb0RldmljZU1vZHVsZSog
YWRtLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2RlckZh
Y3Rvcnk+JgorICAgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgY29uc3QgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeT4mCisgICAgICAgIGF1ZGlv
X2RlY29kZXJfZmFjdG9yeSwKKyAgICBXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19l
bmNvZGVyX2ZhY3RvcnksCisgICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVj
b2Rlcl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFs
bG9jYXRvckZhY3Rvcnk+CisgICAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnkp
IHsKKyAgcmV0dXJuIENyZWF0ZVdlYlJ0Y01lZGlhRW5naW5lKAorICAgICAgYWRtLCBhdWRpb19l
bmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwgdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5LAorICAgICAgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LCBzdGQ6Om1vdmUodmlkZW9fYml0cmF0
ZV9hbGxvY2F0b3JfZmFjdG9yeSksCisgICAgICBudWxscHRyLCB3ZWJydGM6OkF1ZGlvUHJvY2Vz
c2luZ0J1aWxkZXIoKS5DcmVhdGUoKSk7Cit9CisKK01lZGlhRW5naW5lSW50ZXJmYWNlKiBXZWJS
dGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKKyAgICB3ZWJydGM6OkF1ZGlvRGV2aWNlTW9k
dWxlKiBhZG0sCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9FbmNv
ZGVyRmFjdG9yeT4mCisgICAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBjb25zdCBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiYKKyAgICAgICAg
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIFdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZp
ZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRl
b19kZWNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9N
aXhlcj4gYXVkaW9fbWl4ZXIsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Q
cm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nKSB7CisgIHJldHVybiBXZWJSdGNNZWRpYUVuZ2lu
ZUZhY3Rvcnk6OkNyZWF0ZSgKKyAgICAgIGFkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRp
b19kZWNvZGVyX2ZhY3RvcnksIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICAgIHZpZGVvX2Rl
Y29kZXJfZmFjdG9yeSwKKyAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFs
bG9jYXRvckZhY3RvcnkoKSwgYXVkaW9fbWl4ZXIsCisgICAgICBhdWRpb19wcm9jZXNzaW5nKTsK
IH0KIAogTWVkaWFFbmdpbmVJbnRlcmZhY2UqIFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3Jl
YXRlKApAQCAtODEsMTEgKzExNSwxNCBAQCBNZWRpYUVuZ2luZUludGVyZmFjZSogV2ViUnRjTWVk
aWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCiAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwK
ICAgICBXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCiAg
ICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAg
IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+Cisg
ICAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnksCiAgICAgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCiAgICAgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nKSB7CiAgIHJl
dHVybiBDcmVhdGVXZWJSdGNNZWRpYUVuZ2luZSgKICAgICAgIGFkbSwgYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAg
ICAgIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwgYXVkaW9fbWl4ZXIsIGF1ZGlvX3Byb2Nlc3Npbmcp
OworICAgICAgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LCBzdGQ6Om1vdmUodmlkZW9fYml0cmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeSksCisgICAgICBhdWRpb19taXhlciwgYXVkaW9fcHJvY2Vzc2luZyk7
CiB9CiAjZW5kaWYKIApAQCAtOTcsMjIgKzEzNCwzNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFF
bmdpbmVJbnRlcmZhY2U+IFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAogICAgIHN0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IHZpZGVvX2RlY29kZXJf
ZmFjdG9yeSwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb01peGVyPiBhdWRp
b19taXhlciwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+
IGF1ZGlvX3Byb2Nlc3NpbmcpIHsKKyAgcmV0dXJuIFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6
Q3JlYXRlKAorICAgICAgYWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJf
ZmFjdG9yeSwKKyAgICAgIHN0ZDo6bW92ZSh2aWRlb19lbmNvZGVyX2ZhY3RvcnkpLCBzdGQ6Om1v
dmUodmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSwKKyAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZp
ZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSwgYXVkaW9fbWl4ZXIsCisgICAgICBhdWRpb19w
cm9jZXNzaW5nKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE1lZGlhRW5naW5lSW50ZXJmYWNlPiBX
ZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpBdWRpb0RldmljZU1vZHVsZT4gYWRtLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFj
dG9yeT4gdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6
OlZpZGVvRGVjb2RlckZhY3Rvcnk+IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICB2
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZykgewogI2lmZGVmIEhBVkVf
V0VCUlRDX1ZJREVPCi0gIHR5cGVkZWYgV2ViUnRjVmlkZW9FbmdpbmUgVmlkZW9FbmdpbmU7Ci0g
IHN0ZDo6dHVwbGU8c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4s
Ci0gICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9y
eT4+Ci0gICAgICB2aWRlb19hcmdzKHN0ZDo6bW92ZSh2aWRlb19lbmNvZGVyX2ZhY3RvcnkpLAot
ICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUodmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSk7CisgIGF1
dG8gdmlkZW9fZW5naW5lID0gYWJzbDo6bWFrZV91bmlxdWU8V2ViUnRjVmlkZW9FbmdpbmU+KAor
ICAgICAgc3RkOjptb3ZlKHZpZGVvX2VuY29kZXJfZmFjdG9yeSksIHN0ZDo6bW92ZSh2aWRlb19k
ZWNvZGVyX2ZhY3RvcnkpLAorICAgICAgc3RkOjptb3ZlKHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnkpKTsKICNlbHNlCi0gIHR5cGVkZWYgTnVsbFdlYlJ0Y1ZpZGVvRW5naW5lIFZpZGVv
RW5naW5lOwotICBzdGQ6OnR1cGxlPD4gdmlkZW9fYXJnczsKKyAgYXV0byB2aWRlb19lbmdpbmUg
PSBhYnNsOjptYWtlX3VuaXF1ZTxOdWxsV2ViUnRjVmlkZW9FbmdpbmU+KCk7CiAjZW5kaWYKLSAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYUVuZ2luZUludGVyZmFjZT4oCi0gICAgICBuZXcg
Q29tcG9zaXRlTWVkaWFFbmdpbmU8V2ViUnRjVm9pY2VFbmdpbmUsIFZpZGVvRW5naW5lPigKLSAg
ICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoYWRtLCBhdWRpb19lbmNvZGVyX2ZhY3Rvcnks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwg
YXVkaW9fbWl4ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3Byb2Nl
c3NpbmcpLAotICAgICAgICAgIHN0ZDo6bW92ZSh2aWRlb19hcmdzKSkpOworICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhRW5naW5lSW50ZXJmYWNlPihuZXcgQ29tcG9zaXRlTWVkaWFFbmdp
bmUoCisgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxXZWJSdGNWb2ljZUVuZ2luZT4oYWRtLCBhdWRp
b19lbmNvZGVyX2ZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCBhdWRpb19taXhlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wcm9jZXNzaW5nKSwKKyAgICAgIHN0
ZDo6bW92ZSh2aWRlb19lbmdpbmUpKSk7CiB9CiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2Vi
cnRjbWVkaWFlbmdpbmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZS5oCmluZGV4IGQ4MmVjY2Y5ZGMzNDdm
YWY5NmY4NjMxZmRmMjY0YjkwMjIxNzNhZjkuLmZiZjQ0NjY3MzI3MTVmMzMyNzhkODVmZDNhNTZj
YmY0MmRjM2IyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGNtZWRp
YWVuZ2luZS5oCkBAIC0yNSw2ICsyNSw3IEBAIGNsYXNzIEF1ZGlvTWl4ZXI7CiBjbGFzcyBBdWRp
b1Byb2Nlc3Npbmc7CiBjbGFzcyBWaWRlb0RlY29kZXJGYWN0b3J5OwogY2xhc3MgVmlkZW9FbmNv
ZGVyRmFjdG9yeTsKK2NsYXNzIFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk7CiB9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCiBuYW1lc3BhY2UgY3JpY2tldCB7CiBjbGFzcyBXZWJSdGNWaWRlb0Rl
Y29kZXJGYWN0b3J5OwpAQCAtNTAsNiArNTEsMjkgQEAgY2xhc3MgV2ViUnRjTWVkaWFFbmdpbmVG
YWN0b3J5IHsKICAgICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCiAgICAgICBXZWJSdGNW
aWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCiAgICAgICBXZWJSdGNW
aWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkpOworCisgIHN0YXRpYyBN
ZWRpYUVuZ2luZUludGVyZmFjZSogQ3JlYXRlKAorICAgICAgd2VicnRjOjpBdWRpb0RldmljZU1v
ZHVsZSogYWRtLAorICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9F
bmNvZGVyRmFjdG9yeT4mCisgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgICAg
Y29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeT4mCisg
ICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgV2ViUnRjVmlkZW9FbmNvZGVy
RmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgICAgV2ViUnRjVmlkZW9EZWNvZGVy
RmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCisgICAgICBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+IGFwbSk7CisKKyAgc3RhdGljIE1lZGlhRW5naW5l
SW50ZXJmYWNlKiBDcmVhdGUoCisgICAgICB3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlKiBhZG0s
CisgICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0VuY29kZXJGYWN0
b3J5PiYKKyAgICAgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICBjb25zdCBydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiYKKyAgICAgICAgICBh
dWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICBXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2
aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICBXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2
aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRl
b0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnkpOworCiAgIHN0YXRpYyBNZWRpYUVuZ2luZUludGVyZmFjZSogQ3JlYXRlKAog
ICAgICAgd2VicnRjOjpBdWRpb0RldmljZU1vZHVsZSogYWRtLAogICAgICAgY29uc3QgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9FbmNvZGVyRmFjdG9yeT4mCkBAIC01OCw2ICs4Miw4
IEBAIGNsYXNzIFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeSB7CiAgICAgICAgICAgYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5LAogICAgICAgV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LAogICAgICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVj
b2Rlcl9mYWN0b3J5LAorICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRl
QWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgICAgICB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0
b3J5LAogICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9NaXhlcj4gYXVkaW9f
bWl4ZXIsCiAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+
IGFwbSk7CiAjZW5kaWYKQEAgLTczLDYgKzk5LDE3IEBAIGNsYXNzIFdlYlJ0Y01lZGlhRW5naW5l
RmFjdG9yeSB7CiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0
b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCiAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb01peGVyPiBhdWRpb19taXhlciwKICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZyk7CisKKyAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYUVuZ2luZUludGVyZmFjZT4gQ3JlYXRlKAorICAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGU+IGFkbSwKKyAgICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJf
ZmFjdG9yeSwKKyAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVjb2RlckZh
Y3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICAgIHN0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IHZpZGVvX2RlY29kZXJf
ZmFjdG9yeSwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9j
YXRvckZhY3Rvcnk+CisgICAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSwK
KyAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVy
LAorICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPiBhdWRp
b19wcm9jZXNzaW5nKTsKIH07CiAKIC8vIFZlcmlmeSB0aGF0IGV4dGVuc2lvbiBJRHMgYXJlIHdp
dGhpbiAxLWJ5dGUgZXh0ZW5zaW9uIHJhbmdlIGFuZCBhcmUgbm90CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRj
bWVkaWFlbmdpbmVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmVfdW5pdHRlc3QuY2MKaW5k
ZXggNGZhOWE2YjVlZTM1ZDg5Y2JmYzY4NTQ5MTlkMWJmNDRhZDUzOTY0MC4uZWVjN2RjMzljNDg4
MWMzNjlkNGJlNjQyYzlmNmMzY2RiODMxMDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5l
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZV91bml0dGVzdC5jYwpAQCAtMTIsNiAr
MTIsNyBAQAogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29k
ZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19l
bmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWls
dGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
YnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUv
d2VicnRjbWVkaWFlbmdpbmUuaCIKQEAgLTI0OSw0ICsyNTAsMTUgQEAgVEVTVChXZWJSdGNNZWRp
YUVuZ2luZUZhY3RvcnlUZXN0LCBDcmVhdGVXaXRoQnVpbHRpbkRlY29kZXJzKSB7CiAgIEVYUEVD
VF9UUlVFKGVuZ2luZSk7CiB9CiAKK1RFU1QoV2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5VGVzdCwg
Q3JlYXRlV2l0aFZpZGVvQml0cmF0ZUZhY3RvcnkpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPE1lZGlh
RW5naW5lSW50ZXJmYWNlPiBlbmdpbmUoV2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUo
CisgICAgICBudWxscHRyIC8qIGFkbSAqLywgd2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9FbmNv
ZGVyRmFjdG9yeSgpLAorICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFj
dG9yeSgpLAorICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluVmlkZW9FbmNvZGVyRmFjdG9yeSgp
LAorICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluVmlkZW9EZWNvZGVyRmFjdG9yeSgpLAorICAg
ICAgd2VicnRjOjpDcmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpLAor
ICAgICAgbnVsbHB0ciAvKiBhdWRpb19taXhlciAqLywgd2VicnRjOjpBdWRpb1Byb2Nlc3NpbmdC
dWlsZGVyKCkuQ3JlYXRlKCkpKTsKKyAgRVhQRUNUX1RSVUUoZW5naW5lKTsKK30KKwogfSAgLy8g
bmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2RlY29kZXJmYWN0b3J5Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
d2VicnRjdmlkZW9kZWNvZGVyZmFjdG9yeS5oCmluZGV4IDAxNmNiMDlkYTAwMGY0NzRmYWRkNjU2
MjI5MzRkZDYzMDhhOTUwZTAuLmYwMGQ5YTY5ZTBlMjY2ZDU4OWQyZmY5NDcyYmQ1NGE0ZjNlZTI3
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2RlY29kZXJmYWN0b3J5LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVv
ZGVjb2RlcmZhY3RvcnkuaApAQCAtMTMsOSArMTMsMTAgQEAKIAogI2luY2x1ZGUgPHN0cmluZz4K
IAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisj
aW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvZGVjX3R5cGUuaCIKICNpbmNsdWRlICJtZWRpYS9i
YXNlL2NvZGVjLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNz
IFZpZGVvRGVjb2RlcjsKQEAgLTI5LDcgKzMwLDcgQEAgc3RydWN0IFZpZGVvRGVjb2RlclBhcmFt
cyB7CiAKIC8vIERlcHJlY2F0ZWQuIFVzZSB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3RvcnkgaW5z
dGVhZC4KIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC93ZWJydGMvaXNzdWVzL2RldGFp
bD9pZD03OTI1Ci1jbGFzcyBXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5IHsKK2NsYXNzIFJUQ19F
WFBPUlQgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSB7CiAgcHVibGljOgogICAvLyBDYWxsZXIg
dGFrZXMgdGhlIG93bmVyc2hpcCBvZiB0aGUgcmV0dXJuZWQgb2JqZWN0IGFuZCBpdCBzaG91bGQg
YmUgcmVsZWFzZWQKICAgLy8gYnkgY2FsbGluZyBEZXN0cm95VmlkZW9EZWNvZGVyKCkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvd2VicnRjdmlkZW9lbmNvZGVyZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3Rv
cnkuaAppbmRleCA5N2FjMDNiNDczZjhmMGM3OGM4NGVlODY1MDM2NTYwY2FkNjE5MjEzLi5kMzll
MGZkNWY5NWFlNDU0MDgwMTUwM2YyZDU1OGZkODBmMjBiNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlk
ZW9lbmNvZGVyZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuY29kZXJmYWN0b3J5LmgKQEAgLTE0
LDggKzE0LDkgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5j
bHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRl
ICJhcGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29k
ZWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIGNsYXNzIFZpZGVvRW5jb2RlcjsKQEAgLTI1LDcgKzI2LDcgQEAgbmFtZXNw
YWNlIGNyaWNrZXQgewogCiAvLyBEZXByZWNhdGVkLiBVc2Ugd2VicnRjOjpWaWRlb0VuY29kZXJG
YWN0b3J5IGluc3RlYWQuCiAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Avd2VicnRjL2lz
c3Vlcy9kZXRhaWw/aWQ9NzkyNQotY2xhc3MgV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSB7Citj
bGFzcyBSVENfRVhQT1JUIFdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkgewogIHB1YmxpYzoKICAg
dmlydHVhbCB+V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSgpIHt9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJy
dGN2aWRlb2VuZ2luZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZS5jYwppbmRleCA0MGIwYzQ1YTNkODMy
YzExNjZhYzM3NDRlZmFkNjVlN2ZlMDM2ZDAxLi5hNzVkYjczNjk3MDY5YjkzN2ZhODhiNjE3YzNl
M2Q5YTRmNGI0OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3Zp
ZGVvZW5naW5lLmNjCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1
ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRl
ICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKICNpbmNsdWRlICJhcGkvdmlk
ZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19j
b2RlY3MvdmlkZW9fZW5jb2Rlci5oIgpAQCAtMTExLDggKzExMiw4IEBAIHN0ZDo6dmVjdG9yPFZp
ZGVvQ29kZWM+IEFzc2lnblBheWxvYWRUeXBlc0FuZERlZmF1bHRDb2RlY3MoCiAgICAgfQogCiAg
ICAgLy8gQWRkIGFzc29jaWF0ZWQgUlRYIGNvZGVjIGZvciBub24tRkVDIGNvZGVjcy4KLSAgICBp
ZiAoIUNvZGVjTmFtZXNFcShjb2RlYy5uYW1lLCBrVWxwZmVjQ29kZWNOYW1lKSAmJgotICAgICAg
ICAhQ29kZWNOYW1lc0VxKGNvZGVjLm5hbWUsIGtGbGV4ZmVjQ29kZWNOYW1lKSkgeworICAgIGlm
ICghYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBrVWxwZmVjQ29kZWNOYW1lKSAm
JgorICAgICAgICAhYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBrRmxleGZlY0Nv
ZGVjTmFtZSkpIHsKICAgICAgIG91dHB1dF9jb2RlY3MucHVzaF9iYWNrKAogICAgICAgICAgIFZp
ZGVvQ29kZWM6OkNyZWF0ZVJ0eENvZGVjKHBheWxvYWRfdHlwZSwgY29kZWMuaWQpKTsKIApAQCAt
MTQ3LDggKzE0OCw4IEBAIGludCBHZXRNYXhGcmFtZXJhdGUoY29uc3Qgd2VicnRjOjpWaWRlb0Vu
Y29kZXJDb25maWcmIGVuY29kZXJfY29uZmlnLAogfQogCiBib29sIElzVGVtcG9yYWxMYXllcnNT
dXBwb3J0ZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGNvZGVjX25hbWUpIHsKLSAgcmV0dXJuIENvZGVj
TmFtZXNFcShjb2RlY19uYW1lLCBrVnA4Q29kZWNOYW1lKSB8fAotICAgICAgICAgQ29kZWNOYW1l
c0VxKGNvZGVjX25hbWUsIGtWcDlDb2RlY05hbWUpOworICByZXR1cm4gYWJzbDo6RXF1YWxzSWdu
b3JlQ2FzZShjb2RlY19uYW1lLCBrVnA4Q29kZWNOYW1lKSB8fAorICAgICAgICAgYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShjb2RlY19uYW1lLCBrVnA5Q29kZWNOYW1lKTsKIH0KIAogc3RhdGljIHN0
ZDo6c3RyaW5nIENvZGVjVmVjdG9yVG9TdHJpbmcoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2Rl
Yz4mIGNvZGVjcykgewpAQCAtMjIwLDkgKzIyMSw5IEBAIHN0YXRpYyBib29sIFZhbGlkYXRlU3Ry
ZWFtUGFyYW1zKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIHsKIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgZ2l2ZW4gY29kZWMgaXMgZGlzYWxsb3dlZCBmcm9tIGRvaW5nIHNpbXVsY2FzdC4KIGJvb2wg
SXNDb2RlY0JsYWNrbGlzdGVkRm9yU2ltdWxjYXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBjb2RlY19u
YW1lKSB7CiAgIHJldHVybiB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1I
MjY0U2ltdWxjYXN0IikKLSAgICA/IENvZGVjTmFtZXNFcShjb2RlY19uYW1lLCBrVnA5Q29kZWNO
YW1lKQotICAgIDogQ29kZWNOYW1lc0VxKGNvZGVjX25hbWUsIGtIMjY0Q29kZWNOYW1lKSB8fAot
ICAgICAgQ29kZWNOYW1lc0VxKGNvZGVjX25hbWUsIGtWcDlDb2RlY05hbWUpOworICAgICAgICAg
ICAgID8gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19uYW1lLCBrVnA5Q29kZWNOYW1lKQor
ICAgICAgICAgICAgIDogYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19uYW1lLCBrSDI2NENv
ZGVjTmFtZSkgfHwKKyAgICAgICAgICAgICAgICAgICBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNv
ZGVjX25hbWUsIGtWcDlDb2RlY05hbWUpOwogfQogCiAvLyBUaGUgc2VsZWN0ZWQgdGhyZXNob2xk
cyBmb3IgUVZHQSBhbmQgVkdBIGNvcnJlc3BvbmRlZCB0byBhIFFQIGFyb3VuZCAxMC4KQEAgLTMz
NywxNCArMzM4LDE0IEBAIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9TZW5kU3RyZWFt
OjpDb25maWd1cmVWaWRlb0VuY29kZXJTZXR0aW5ncygKICAgICBkZW5vaXNpbmcgPSBwYXJhbWV0
ZXJzXy5vcHRpb25zLnZpZGVvX25vaXNlX3JlZHVjdGlvbi52YWx1ZV9vcihmYWxzZSk7CiAgIH0K
IAotICBpZiAoQ29kZWNOYW1lc0VxKGNvZGVjLm5hbWUsIGtIMjY0Q29kZWNOYW1lKSkgeworICBp
ZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBrSDI2NENvZGVjTmFtZSkpIHsK
ICAgICB3ZWJydGM6OlZpZGVvQ29kZWNIMjY0IGgyNjRfc2V0dGluZ3MgPQogICAgICAgICB3ZWJy
dGM6OlZpZGVvRW5jb2Rlcjo6R2V0RGVmYXVsdEgyNjRTZXR0aW5ncygpOwogICAgIGgyNjRfc2V0
dGluZ3MuZnJhbWVEcm9wcGluZ09uID0gZnJhbWVfZHJvcHBpbmc7CiAgICAgcmV0dXJuIG5ldyBy
dGM6OlJlZkNvdW50ZWRPYmplY3Q8CiAgICAgICAgIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyQ29uZmln
OjpIMjY0RW5jb2RlclNwZWNpZmljU2V0dGluZ3M+KGgyNjRfc2V0dGluZ3MpOwogICB9Ci0gIGlm
IChDb2RlY05hbWVzRXEoY29kZWMubmFtZSwga1ZwOENvZGVjTmFtZSkpIHsKKyAgaWYgKGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwga1ZwOENvZGVjTmFtZSkpIHsKICAgICB3ZWJy
dGM6OlZpZGVvQ29kZWNWUDggdnA4X3NldHRpbmdzID0KICAgICAgICAgd2VicnRjOjpWaWRlb0Vu
Y29kZXI6OkdldERlZmF1bHRWcDhTZXR0aW5ncygpOwogICAgIHZwOF9zZXR0aW5ncy5hdXRvbWF0
aWNSZXNpemVPbiA9IGF1dG9tYXRpY19yZXNpemU7CkBAIC0zNTQsNyArMzU1LDcgQEAgV2ViUnRj
VmlkZW9DaGFubmVsOjpXZWJSdGNWaWRlb1NlbmRTdHJlYW06OkNvbmZpZ3VyZVZpZGVvRW5jb2Rl
clNldHRpbmdzKAogICAgIHJldHVybiBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PAogICAgICAg
ICB3ZWJydGM6OlZpZGVvRW5jb2RlckNvbmZpZzo6VnA4RW5jb2RlclNwZWNpZmljU2V0dGluZ3M+
KHZwOF9zZXR0aW5ncyk7CiAgIH0KLSAgaWYgKENvZGVjTmFtZXNFcShjb2RlYy5uYW1lLCBrVnA5
Q29kZWNOYW1lKSkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBr
VnA5Q29kZWNOYW1lKSkgewogICAgIHdlYnJ0Yzo6VmlkZW9Db2RlY1ZQOSB2cDlfc2V0dGluZ3Mg
PQogICAgICAgICB3ZWJydGM6OlZpZGVvRW5jb2Rlcjo6R2V0RGVmYXVsdFZwOVNldHRpbmdzKCk7
CiAgICAgY29uc3Qgc2l6ZV90IGRlZmF1bHRfbnVtX3NwYXRpYWxfbGF5ZXJzID0KQEAgLTQzNiwy
MCArNDM3LDI2IEBAIHZvaWQgRGVmYXVsdFVuc2lnbmFsbGVkU3NyY0hhbmRsZXI6OlNldERlZmF1
bHRTaW5rKAogI2lmIGRlZmluZWQoVVNFX0JVSUxUSU5fU1dfQ09ERUNTKQogV2ViUnRjVmlkZW9F
bmdpbmU6OldlYlJ0Y1ZpZGVvRW5naW5lKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRl
b0VuY29kZXJGYWN0b3J5PiBleHRlcm5hbF92aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnk+IGV4dGVybmFsX3ZpZGVvX2Rl
Y29kZXJfZmFjdG9yeSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9EZWNvZGVyRmFj
dG9yeT4gZXh0ZXJuYWxfdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0
cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+CisgICAgICAgIHZpZGVvX2Jp
dHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkpCiAgICAgOiBkZWNvZGVyX2ZhY3RvcnlfKENvbnZlcnRW
aWRlb0RlY29kZXJGYWN0b3J5KAogICAgICAgICAgIHN0ZDo6bW92ZShleHRlcm5hbF92aWRlb19k
ZWNvZGVyX2ZhY3RvcnkpKSksCiAgICAgICBlbmNvZGVyX2ZhY3RvcnlfKENvbnZlcnRWaWRlb0Vu
Y29kZXJGYWN0b3J5KAotICAgICAgICAgIHN0ZDo6bW92ZShleHRlcm5hbF92aWRlb19lbmNvZGVy
X2ZhY3RvcnkpKSkgeworICAgICAgICAgIHN0ZDo6bW92ZShleHRlcm5hbF92aWRlb19lbmNvZGVy
X2ZhY3RvcnkpKSksCisgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XyhzdGQ6Om1vdmUo
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkpIHsKICAgUlRDX0xPRyhMU19JTkZPKSA8
PCAiV2ViUnRjVmlkZW9FbmdpbmU6OldlYlJ0Y1ZpZGVvRW5naW5lKCkiOwogfQogI2VuZGlmCiAK
IFdlYlJ0Y1ZpZGVvRW5naW5lOjpXZWJSdGNWaWRlb0VuZ2luZSgKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gdmlkZW9fZGVj
b2Rlcl9mYWN0b3J5KQorICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZh
Y3Rvcnk+IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRj
OjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICB2aWRlb19iaXRyYXRlX2Fs
bG9jYXRvcl9mYWN0b3J5KQogICAgIDogZGVjb2Rlcl9mYWN0b3J5XyhzdGQ6Om1vdmUodmlkZW9f
ZGVjb2Rlcl9mYWN0b3J5KSksCi0gICAgICBlbmNvZGVyX2ZhY3RvcnlfKHN0ZDo6bW92ZSh2aWRl
b19lbmNvZGVyX2ZhY3RvcnkpKSB7CisgICAgICBlbmNvZGVyX2ZhY3RvcnlfKHN0ZDo6bW92ZSh2
aWRlb19lbmNvZGVyX2ZhY3RvcnkpKSwKKyAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnlf
KHN0ZDo6bW92ZSh2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KSkgewogICBSVENfTE9H
KExTX0lORk8pIDw8ICJXZWJSdGNWaWRlb0VuZ2luZTo6V2ViUnRjVmlkZW9FbmdpbmUoKSI7CiB9
CiAKQEAgLTQ1NywxNSArNDY0LDE2IEBAIFdlYlJ0Y1ZpZGVvRW5naW5lOjp+V2ViUnRjVmlkZW9F
bmdpbmUoKSB7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIldlYlJ0Y1ZpZGVvRW5naW5lOjp+V2Vi
UnRjVmlkZW9FbmdpbmUiOwogfQogCi1XZWJSdGNWaWRlb0NoYW5uZWwqIFdlYlJ0Y1ZpZGVvRW5n
aW5lOjpDcmVhdGVDaGFubmVsKAorVmlkZW9NZWRpYUNoYW5uZWwqIFdlYlJ0Y1ZpZGVvRW5naW5l
OjpDcmVhdGVNZWRpYUNoYW5uZWwoCiAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAogICAgIGNvbnN0
IE1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKSB7
Ci0gIFJUQ19MT0coTFNfSU5GTykgPDwgIkNyZWF0ZUNoYW5uZWwuIE9wdGlvbnM6ICIgPDwgb3B0
aW9ucy5Ub1N0cmluZygpOwotICByZXR1cm4gbmV3IFdlYlJ0Y1ZpZGVvQ2hhbm5lbChjYWxsLCBj
b25maWcsIG9wdGlvbnMsIGVuY29kZXJfZmFjdG9yeV8uZ2V0KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlY29kZXJfZmFjdG9yeV8uZ2V0KCkpOworICAgIGNvbnN0IFZpZGVv
T3B0aW9ucyYgb3B0aW9ucywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0
b19vcHRpb25zKSB7CisgIFJUQ19MT0coTFNfSU5GTykgPDwgIkNyZWF0ZU1lZGlhQ2hhbm5lbC4g
T3B0aW9uczogIiA8PCBvcHRpb25zLlRvU3RyaW5nKCk7CisgIHJldHVybiBuZXcgV2ViUnRjVmlk
ZW9DaGFubmVsKGNhbGwsIGNvbmZpZywgb3B0aW9ucywgY3J5cHRvX29wdGlvbnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJfZmFjdG9yeV8uZ2V0KCksIGRlY29kZXJf
ZmFjdG9yeV8uZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHJhdGVf
YWxsb2NhdG9yX2ZhY3RvcnlfLmdldCgpKTsKIH0KLQogc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4g
V2ViUnRjVmlkZW9FbmdpbmU6OmNvZGVjcygpIGNvbnN0IHsKICAgcmV0dXJuIEFzc2lnblBheWxv
YWRUeXBlc0FuZERlZmF1bHRDb2RlY3MoZW5jb2Rlcl9mYWN0b3J5Xy5nZXQoKSk7CiB9CkBAIC00
OTYsNiArNTA0LDExIEBAIFJ0cENhcGFiaWxpdGllcyBXZWJSdGNWaWRlb0VuZ2luZTo6R2V0Q2Fw
YWJpbGl0aWVzKCkgY29uc3QgewogICBjYXBhYmlsaXRpZXMuaGVhZGVyX2V4dGVuc2lvbnMucHVz
aF9iYWNrKAogICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb24od2VicnRjOjpSdHBFeHRlbnNpb246
OmtGcmFtZU1hcmtpbmdVcmksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlJ0
cEV4dGVuc2lvbjo6a0ZyYW1lTWFya2luZ0RlZmF1bHRJZCkpOworICBpZiAod2VicnRjOjpmaWVs
ZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtR2VuZXJpY0Rlc2NyaXB0b3JBZHZlcnRpc2VkIikp
IHsKKyAgICBjYXBhYmlsaXRpZXMuaGVhZGVyX2V4dGVuc2lvbnMucHVzaF9iYWNrKHdlYnJ0Yzo6
UnRwRXh0ZW5zaW9uKAorICAgICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a0dlbmVyaWNGcmFt
ZURlc2NyaXB0b3JVcmksCisgICAgICAgIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjprR2VuZXJpY0Zy
YW1lRGVzY3JpcHRvckRlZmF1bHRJZCkpOworICB9CiAgIC8vIFRPRE8oYnVncy53ZWJydGMub3Jn
LzQwNTApOiBBZGQgTUlEIGhlYWRlciBleHRlbnNpb24gYXMgY2FwYWJpbGl0eSBvbmNlIE1JRAog
ICAvLyBkZW11eGluZyBpcyBjb21wbGV0ZWQuCiAgIC8vIGNhcGFiaWxpdGllcy5oZWFkZXJfZXh0
ZW5zaW9ucy5wdXNoX2JhY2sod2VicnRjOjpSdHBFeHRlbnNpb24oCkBAIC01MDcsMTYgKzUyMCwy
MyBAQCBXZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvQ2hhbm5lbCgKICAgICB3ZWJydGM6
OkNhbGwqIGNhbGwsCiAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKICAgICBjb25zdCBW
aWRlb09wdGlvbnMmIG9wdGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBj
cnlwdG9fb3B0aW9ucywKICAgICB3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3RvcnkqIGVuY29kZXJf
ZmFjdG9yeSwKLSAgICB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3RvcnkqIGRlY29kZXJfZmFjdG9y
eSkKKyAgICB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3RvcnkqIGRlY29kZXJfZmFjdG9yeSwKKyAg
ICB3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkqIGJpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnkpCiAgICAgOiBWaWRlb01lZGlhQ2hhbm5lbChjb25maWcpLAogICAgICAgY2FsbF8o
Y2FsbCksCiAgICAgICB1bnNpZ25hbGxlZF9zc3JjX2hhbmRsZXJfKCZkZWZhdWx0X3Vuc2lnbmFs
bGVkX3NzcmNfaGFuZGxlcl8pLAogICAgICAgdmlkZW9fY29uZmlnXyhjb25maWcudmlkZW8pLAog
ICAgICAgZW5jb2Rlcl9mYWN0b3J5XyhlbmNvZGVyX2ZhY3RvcnkpLAogICAgICAgZGVjb2Rlcl9m
YWN0b3J5XyhkZWNvZGVyX2ZhY3RvcnkpLAorICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9y
eV8oYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSksCisgICAgICBwcmVmZXJyZWRfZHNjcF8ocnRj
OjpEU0NQX0RFRkFVTFQpLAogICAgICAgZGVmYXVsdF9zZW5kX29wdGlvbnNfKG9wdGlvbnMpLAot
ICAgICAgbGFzdF9zdGF0c19sb2dfbXNfKC0xKSB7CisgICAgICBsYXN0X3N0YXRzX2xvZ19tc18o
LTEpLAorICAgICAgZGlzY2FyZF91bmtub3duX3NzcmNfcGFja2V0c18od2VicnRjOjpmaWVsZF90
cmlhbDo6SXNFbmFibGVkKAorICAgICAgICAgICJXZWJSVEMtVmlkZW8tRGlzY2FyZFBhY2tldHNX
aXRoVW5rbm93blNzcmMiKSksCisgICAgICBjcnlwdG9fb3B0aW9uc18oY3J5cHRvX29wdGlvbnMp
IHsKICAgUlRDX0RDSEVDSyh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsK
IAogICBydGNwX3JlY2VpdmVyX3JlcG9ydF9zc3JjXyA9IGtEZWZhdWx0UnRjcFJlY2VpdmVyUmVw
b3J0U3NyYzsKQEAgLTYxMiw2ICs2MzIsOSBAQCBib29sIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6R2V0
Q2hhbmdlZFNlbmRQYXJhbWV0ZXJzKAogICAgIGNoYW5nZWRfcGFyYW1zLT5jb2RlYyA9IHNlbGVj
dGVkX3NlbmRfY29kZWM7CiAKICAgLy8gSGFuZGxlIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucy4KKyAg
aWYgKHBhcmFtcy5leHRtYXBfYWxsb3dfbWl4ZWQgIT0gRXh0bWFwQWxsb3dNaXhlZCgpKSB7Cisg
ICAgY2hhbmdlZF9wYXJhbXMtPmV4dG1hcF9hbGxvd19taXhlZCA9IHBhcmFtcy5leHRtYXBfYWxs
b3dfbWl4ZWQ7CisgIH0KICAgc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBFeHRlbnNpb24+IGZpbHRl
cmVkX2V4dGVuc2lvbnMgPSBGaWx0ZXJSdHBFeHRlbnNpb25zKAogICAgICAgcGFyYW1zLmV4dGVu
c2lvbnMsIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjpJc1N1cHBvcnRlZEZvclZpZGVvLCB0cnVlKTsK
ICAgaWYgKCFzZW5kX3J0cF9leHRlbnNpb25zXyB8fCAoKnNlbmRfcnRwX2V4dGVuc2lvbnNfICE9
IGZpbHRlcmVkX2V4dGVuc2lvbnMpKSB7CkBAIC02NDksNyArNjcyLDcgQEAgYm9vbCBXZWJSdGNW
aWRlb0NoYW5uZWw6OkdldENoYW5nZWRTZW5kUGFyYW1ldGVycygKIH0KIAogcnRjOjpEaWZmU2Vy
dkNvZGVQb2ludCBXZWJSdGNWaWRlb0NoYW5uZWw6OlByZWZlcnJlZERzY3AoKSBjb25zdCB7Ci0g
IHJldHVybiBydGM6OkRTQ1BfQUY0MTsKKyAgcmV0dXJuIHByZWZlcnJlZF9kc2NwXzsKIH0KIAog
Ym9vbCBXZWJSdGNWaWRlb0NoYW5uZWw6OlNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0IFZpZGVvU2Vu
ZFBhcmFtZXRlcnMmIHBhcmFtcykgewpAQCAtNjY2LDYgKzY4OSw5IEBAIGJvb2wgV2ViUnRjVmlk
ZW9DaGFubmVsOjpTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBWaWRlb1NlbmRQYXJhbWV0ZXJzJiBw
YXJhbXMpIHsKICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJVc2luZyBjb2RlYzogIiA8PCBjb2Rl
Y19zZXR0aW5ncy5jb2RlYy5Ub1N0cmluZygpOwogICB9CiAKKyAgaWYgKGNoYW5nZWRfcGFyYW1z
LmV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIFNldEV4dG1hcEFsbG93TWl4ZWQoKmNoYW5nZWRf
cGFyYW1zLmV4dG1hcF9hbGxvd19taXhlZCk7CisgIH0KICAgaWYgKGNoYW5nZWRfcGFyYW1zLnJ0
cF9oZWFkZXJfZXh0ZW5zaW9ucykgewogICAgIHNlbmRfcnRwX2V4dGVuc2lvbnNfID0gY2hhbmdl
ZF9wYXJhbXMucnRwX2hlYWRlcl9leHRlbnNpb25zOwogICB9CkBAIC03NjQsMTEgKzc5MCwzNCBA
QCB3ZWJydGM6OlJUQ0Vycm9yIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6U2V0UnRwU2VuZFBhcmFtZXRl
cnMoCiAgIC8vIGRpZmZlcmVudCBvcmRlciAod2hpY2ggc2hvdWxkIGNoYW5nZSB0aGUgc2VuZCBj
b2RlYykuCiAgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBjdXJyZW50X3BhcmFtZXRlcnMgPSBHZXRS
dHBTZW5kUGFyYW1ldGVycyhzc3JjKTsKICAgaWYgKGN1cnJlbnRfcGFyYW1ldGVycy5jb2RlY3Mg
IT0gcGFyYW1ldGVycy5jb2RlY3MpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVXNpbmcg
U2V0UGFyYW1ldGVycyB0byBjaGFuZ2UgdGhlIHNldCBvZiBjb2RlY3MgIgotICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4iOworICAgIFJUQ19ETE9H
KExTX0VSUk9SKSA8PCAiVXNpbmcgU2V0UGFyYW1ldGVycyB0byBjaGFuZ2UgdGhlIHNldCBvZiBj
b2RlY3MgIgorICAgICAgICAgICAgICAgICAgICAgICA8PCAiaXMgbm90IGN1cnJlbnRseSBzdXBw
b3J0ZWQuIjsKICAgICByZXR1cm4gd2VicnRjOjpSVENFcnJvcih3ZWJydGM6OlJUQ0Vycm9yVHlw
ZTo6SU5URVJOQUxfRVJST1IpOwogICB9CiAKKyAgaWYgKCFwYXJhbWV0ZXJzLmVuY29kaW5ncy5l
bXB0eSgpKSB7CisgICAgY29uc3QgYXV0byYgcHJpb3JpdHkgPSBwYXJhbWV0ZXJzLmVuY29kaW5n
c1swXS5uZXR3b3JrX3ByaW9yaXR5OworICAgIHJ0Yzo6RGlmZlNlcnZDb2RlUG9pbnQgbmV3X2Rz
Y3AgPSBydGM6OkRTQ1BfREVGQVVMVDsKKyAgICBpZiAocHJpb3JpdHkgPT0gMC41ICogd2VicnRj
OjprRGVmYXVsdEJpdHJhdGVQcmlvcml0eSkgeworICAgICAgbmV3X2RzY3AgPSBydGM6OkRTQ1Bf
Q1MxOworICAgIH0gZWxzZSBpZiAocHJpb3JpdHkgPT0gd2VicnRjOjprRGVmYXVsdEJpdHJhdGVQ
cmlvcml0eSkgeworICAgICAgbmV3X2RzY3AgPSBydGM6OkRTQ1BfREVGQVVMVDsKKyAgICB9IGVs
c2UgaWYgKHByaW9yaXR5ID09IDIuMCAqIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkp
IHsKKyAgICAgIG5ld19kc2NwID0gcnRjOjpEU0NQX0FGNDI7CisgICAgfSBlbHNlIGlmIChwcmlv
cml0eSA9PSA0LjAgKiB3ZWJydGM6OmtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5KSB7CisgICAgICBu
ZXdfZHNjcCA9IHJ0Yzo6RFNDUF9BRjQxOworICAgIH0gZWxzZSB7CisgICAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJSZWNlaXZlZCBpbnZhbGlkIHNlbmQgbmV0d29yayBwcmlvcml0eTogIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBwcmlvcml0eTsKKyAgICAgIHJldHVybiB3ZWJy
dGM6OlJUQ0Vycm9yKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpJTlZBTElEX1JBTkdFKTsKKyAgICB9
CisKKyAgICBpZiAobmV3X2RzY3AgIT0gcHJlZmVycmVkX2RzY3BfKSB7CisgICAgICBwcmVmZXJy
ZWRfZHNjcF8gPSBuZXdfZHNjcDsKKyAgICAgIE1lZGlhQ2hhbm5lbDo6VXBkYXRlRHNjcCgpOwor
ICAgIH0KKyAgfQorCiAgIHJldHVybiBpdC0+c2Vjb25kLT5TZXRSdHBQYXJhbWV0ZXJzKHBhcmFt
ZXRlcnMpOwogfQogCkBAIC04MzIsOCArODgxLDggQEAgYm9vbCBXZWJSdGNWaWRlb0NoYW5uZWw6
OlNldFJ0cFJlY2VpdmVQYXJhbWV0ZXJzKAogCiAgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBjdXJy
ZW50X3BhcmFtZXRlcnMgPSBHZXRSdHBSZWNlaXZlUGFyYW1ldGVycyhzc3JjKTsKICAgaWYgKGN1
cnJlbnRfcGFyYW1ldGVycyAhPSBwYXJhbWV0ZXJzKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIkNoYW5naW5nIHRoZSBSVFAgcmVjZWl2ZSBwYXJhbWV0ZXJzIGlzIGN1cnJlbnRseSAiCi0g
ICAgICAgICAgICAgICAgICAgICAgPDwgInVuc3VwcG9ydGVkLiI7CisgICAgUlRDX0RMT0coTFNf
RVJST1IpIDw8ICJDaGFuZ2luZyB0aGUgUlRQIHJlY2VpdmUgcGFyYW1ldGVycyBpcyBjdXJyZW50
bHkgIgorICAgICAgICAgICAgICAgICAgICAgICA8PCAidW5zdXBwb3J0ZWQuIjsKICAgICByZXR1
cm4gZmFsc2U7CiAgIH0KICAgcmV0dXJuIHRydWU7CkBAIC05NDksNyArOTk4LDcgQEAgYm9vbCBX
ZWJSdGNWaWRlb0NoYW5uZWw6OlNldFNlbmQoYm9vbCBzZW5kKSB7CiAgIFRSQUNFX0VWRU5UMCgi
d2VicnRjIiwgIldlYlJ0Y1ZpZGVvQ2hhbm5lbDo6U2V0U2VuZCIpOwogICBSVENfTE9HKExTX1ZF
UkJPU0UpIDw8ICJTZXRTZW5kOiAiIDw8IChzZW5kID8gInRydWUiIDogImZhbHNlIik7CiAgIGlm
IChzZW5kICYmICFzZW5kX2NvZGVjXykgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJTZXRT
ZW5kKHRydWUpIGNhbGxlZCBiZWZvcmUgc2V0dGluZyBjb2RlYy4iOworICAgIFJUQ19ETE9HKExT
X0VSUk9SKSA8PCAiU2V0U2VuZCh0cnVlKSBjYWxsZWQgYmVmb3JlIHNldHRpbmcgY29kZWMuIjsK
ICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICAgewpAQCAtMTAyOCw2ICsxMDc3LDExIEBAIGJvb2wg
V2ViUnRjVmlkZW9DaGFubmVsOjpBZGRTZW5kU3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3Ap
IHsKICAgY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuZXhwZXJpbWVudF9jcHVfbG9hZF9lc3RpbWF0
b3IgPQogICAgICAgdmlkZW9fY29uZmlnXy5leHBlcmltZW50X2NwdV9sb2FkX2VzdGltYXRvcjsK
ICAgY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gZW5jb2Rlcl9mYWN0
b3J5XzsKKyAgY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9y
eSA9CisgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XzsKKyAgY29uZmlnLmNyeXB0b19v
cHRpb25zID0gY3J5cHRvX29wdGlvbnNfOworICBjb25maWcucnRwLmV4dG1hcF9hbGxvd19taXhl
ZCA9IEV4dG1hcEFsbG93TWl4ZWQoKTsKKyAgY29uZmlnLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21z
ID0gdmlkZW9fY29uZmlnXy5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tczsKIAogICBXZWJSdGNWaWRl
b1NlbmRTdHJlYW0qIHN0cmVhbSA9IG5ldyBXZWJSdGNWaWRlb1NlbmRTdHJlYW0oCiAgICAgICBj
YWxsXywgc3AsIHN0ZDo6bW92ZShjb25maWcpLCBkZWZhdWx0X3NlbmRfb3B0aW9uc18sCkBAIC0x
MTQ0LDYgKzExOTgsNyBAQCBib29sIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6QWRkUmVjdlN0cmVhbShj
b25zdCBTdHJlYW1QYXJhbXMmIHNwLAogICB3ZWJydGM6OkZsZXhmZWNSZWNlaXZlU3RyZWFtOjpD
b25maWcgZmxleGZlY19jb25maWcodGhpcyk7CiAgIENvbmZpZ3VyZVJlY2VpdmVyUnRwKCZjb25m
aWcsICZmbGV4ZmVjX2NvbmZpZywgc3ApOwogCisgIGNvbmZpZy5jcnlwdG9fb3B0aW9ucyA9IGNy
eXB0b19vcHRpb25zXzsKICAgLy8gVE9ETyhuaXNzZSk6IFJlbmFtZSBjb25maWcgdmFyaWFibGUg
dG8gYXZvaWQgbmVnYXRpb24uCiAgIGNvbmZpZy5kaXNhYmxlX3ByZXJlbmRlcmVyX3Ntb290aGlu
ZyA9CiAgICAgICAhdmlkZW9fY29uZmlnXy5lbmFibGVfcHJlcmVuZGVyZXJfc21vb3RoaW5nOwpA
QCAtMTMzMiwxMCArMTM4NywxMCBAQCB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6RmlsbFNlbmRB
bmRSZWNlaXZlQ29kZWNTdGF0cygKIH0KIAogdm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6Ok9uUGFj
a2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNr
ZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCBwYWNrZXRfdGltZV91cykgewogICBjb25zdCB3ZWJydGM6OlBhY2tldFJlY2VpdmVyOjpE
ZWxpdmVyeVN0YXR1cyBkZWxpdmVyeV9yZXN1bHQgPQogICAgICAgY2FsbF8tPlJlY2VpdmVyKCkt
PkRlbGl2ZXJQYWNrZXQod2VicnRjOjpNZWRpYVR5cGU6OlZJREVPLCAqcGFja2V0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWUudGltZXN0YW1wKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lX3VzKTsK
ICAgc3dpdGNoIChkZWxpdmVyeV9yZXN1bHQpIHsKICAgICBjYXNlIHdlYnJ0Yzo6UGFja2V0UmVj
ZWl2ZXI6OkRFTElWRVJZX09LOgogICAgICAgcmV0dXJuOwpAQCAtMTM0NSw2ICsxNDAwLDEwIEBA
IHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpPblBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3Jp
dGVCdWZmZXIqIHBhY2tldCwKICAgICAgIGJyZWFrOwogICB9CiAKKyAgaWYgKGRpc2NhcmRfdW5r
bm93bl9zc3JjX3BhY2tldHNfKSB7CisgICAgcmV0dXJuOworICB9CisKICAgdWludDMyX3Qgc3Ny
YyA9IDA7CiAgIGlmICghR2V0UnRwU3NyYyhwYWNrZXQtPmNkYXRhKCksIHBhY2tldC0+c2l6ZSgp
LCAmc3NyYykpIHsKICAgICByZXR1cm47CkBAIC0xMzc5LDcgKzE0MzgsNyBAQCB2b2lkIFdlYlJ0
Y1ZpZGVvQ2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBw
YWNrZXQsCiAgIH0KIAogICBpZiAoY2FsbF8tPlJlY2VpdmVyKCktPkRlbGl2ZXJQYWNrZXQod2Vi
cnRjOjpNZWRpYVR5cGU6OlZJREVPLCAqcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X3RpbWUudGltZXN0YW1wKSAhPQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWVfdXMpICE9CiAgICAgICB3ZWJydGM6
OlBhY2tldFJlY2VpdmVyOjpERUxJVkVSWV9PSykgewogICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIkZhaWxlZCB0byBkZWxpdmVyIFJUUCBwYWNrZXQgb24gcmUtZGVsaXZlcnkuIjsKICAgICBy
ZXR1cm47CkBAIC0xMzg3LDEzICsxNDQ2LDEzIEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpP
blBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKIH0KIAogdm9p
ZCBXZWJSdGNWaWRlb0NoYW5uZWw6Ok9uUnRjcFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZm
ZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICAvLyBUT0RPKHBi
b3MpOiBDaGVjayB3ZWJydGM6OlBhY2tldFJlY2VpdmVyOjpERUxJVkVSWV9PSyBvbmNlIHdlIGRl
bGl2ZXIKICAgLy8gZm9yIGJvdGggYXVkaW8gYW5kIHZpZGVvIG9uIHRoZSBzYW1lIHBhdGguIFNp
bmNlIEJ1bmRsZUZpbHRlciBkb2Vzbid0CiAgIC8vIGZpbHRlciBSVENQIGFueW1vcmUgaW5jb21p
bmcgUlRDUCBwYWNrZXRzIGNvdWxkJ3ZlIGJlZW4gZ29pbmcgdG8gYXVkaW8gKHNvCiAgIC8vIGxv
Z2dpbmcgZmFpbHVyZXMgc3BhbSB0aGUgbG9nKS4KICAgY2FsbF8tPlJlY2VpdmVyKCktPkRlbGl2
ZXJQYWNrZXQod2VicnRjOjpNZWRpYVR5cGU6OlZJREVPLCAqcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdGltZS50aW1lc3RhbXApOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdGltZV91cyk7CiB9CiAKIHZvaWQgV2Vi
UnRjVmlkZW9DaGFubmVsOjpPblJlYWR5VG9TZW5kKGJvb2wgcmVhZHkpIHsKQEAgLTE0MTIsMzEg
KzE0NzEsNDYgQEAgdm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6Ok9uTmV0d29ya1JvdXRlQ2hhbmdl
ZCgKICAgICAgIG5ldHdvcmtfcm91dGUucGFja2V0X292ZXJoZWFkKTsKIH0KIAotdm9pZCBXZWJS
dGNWaWRlb0NoYW5uZWw6OlNldEludGVyZmFjZShOZXR3b3JrSW50ZXJmYWNlKiBpZmFjZSkgewot
ICBNZWRpYUNoYW5uZWw6OlNldEludGVyZmFjZShpZmFjZSk7Cit2b2lkIFdlYlJ0Y1ZpZGVvQ2hh
bm5lbDo6U2V0SW50ZXJmYWNlKAorICAgIE5ldHdvcmtJbnRlcmZhY2UqIGlmYWNlLAorICAgIHdl
YnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCkgeworICAvLyBU
T0RPKHN1a2hhbm92KTogVmlkZW8gaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgd2l0aCBtZWRp
YSB0cmFuc3BvcnQuCisgIFJUQ19DSEVDSyhtZWRpYV90cmFuc3BvcnQgPT0gbnVsbHB0cik7CisK
KyAgTWVkaWFDaGFubmVsOjpTZXRJbnRlcmZhY2UoaWZhY2UsIG1lZGlhX3RyYW5zcG9ydCk7CiAg
IC8vIFNldCB0aGUgUlRQIHJlY3Yvc2VuZCBidWZmZXIgdG8gYSBiaWdnZXIgc2l6ZS4KIAotICAv
LyBUaGUgZ3JvdXAgaGVyZSBjYW4gYmUgZWl0aGVyIGEgcG9zaXRpdmUgaW50ZWdlciB3aXRoIGFu
IGV4cGxpY2l0IHNpemUsIGluCi0gIC8vIHdoaWNoIGNhc2UgdGhhdCBpcyB1c2VkIGFzIHNpemUu
IEFsbCBvdGhlciB2YWx1ZXMgc2hhbGwgcmVzdWx0IGluIHRoZQotICAvLyBkZWZhdWx0IHZhbHVl
IGJlaW5nIHVzZWQuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIGdyb3VwX25hbWUgPQotICAgICAgd2Vi
cnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJXZWJSVEMtSW5jcmVhc2VkUmVjZWl2ZWJ1
ZmZlcnMiKTsKLSAgaW50IHJlY3ZfYnVmZmVyX3NpemUgPSBrVmlkZW9SdHBCdWZmZXJTaXplOwot
ICBpZiAoIWdyb3VwX25hbWUuZW1wdHkoKSAmJgotICAgICAgKHNzY2FuZihncm91cF9uYW1lLmNf
c3RyKCksICIlZCIsICZyZWN2X2J1ZmZlcl9zaXplKSAhPSAxIHx8Ci0gICAgICAgcmVjdl9idWZm
ZXJfc2l6ZSA8PSAwKSkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkludmFsaWQgcmVj
ZWl2ZSBidWZmZXIgc2l6ZTogIiA8PCBncm91cF9uYW1lOwotICAgIHJlY3ZfYnVmZmVyX3NpemUg
PSBrVmlkZW9SdHBCdWZmZXJTaXplOwotICB9CiAgIE1lZGlhQ2hhbm5lbDo6U2V0T3B0aW9uKE5l
dHdvcmtJbnRlcmZhY2U6OlNUX1JUUCwgcnRjOjpTb2NrZXQ6Ok9QVF9SQ1ZCVUYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlY3ZfYnVmZmVyX3NpemUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICBrVmlkZW9SdHBSZWN2QnVmZmVyU2l6ZSk7CiAKICAgLy8gU3BlY3VsYXRpdmUgY2hh
bmdlIHRvIGluY3JlYXNlIHRoZSBvdXRib3VuZCBzb2NrZXQgYnVmZmVyIHNpemUuCiAgIC8vIElu
IGIvMTUxNTIyNTcsIHdlIGFyZSBzZWVpbmcgYSBzaWduaWZpY2FudCBudW1iZXIgb2YgcGFja2V0
cyBkaXNjYXJkZWQKICAgLy8gZHVlIHRvIGxhY2sgb2Ygc29ja2V0IGJ1ZmZlciBzcGFjZSwgYWx0
aG91Z2ggaXQncyBub3QgeWV0IGNsZWFyIHdoYXQgdGhlCiAgIC8vIGlkZWFsIHZhbHVlIHNob3Vs
ZCBiZS4KICAgTWVkaWFDaGFubmVsOjpTZXRPcHRpb24oTmV0d29ya0ludGVyZmFjZTo6U1RfUlRQ
LCBydGM6OlNvY2tldDo6T1BUX1NOREJVRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAga1Zp
ZGVvUnRwQnVmZmVyU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGtWaWRlb1J0cFNl
bmRCdWZmZXJTaXplKTsKK30KKwordm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6OlNldEZyYW1lRGVj
cnlwdG9yKAorICAgIHVpbnQzMl90IHNzcmMsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRvcikgeworICBydGM6OkNy
aXRTY29wZSBzdHJlYW1fbG9jaygmc3RyZWFtX2NyaXRfKTsKKyAgYXV0byBtYXRjaGluZ19zdHJl
YW0gPSByZWNlaXZlX3N0cmVhbXNfLmZpbmQoc3NyYyk7CisgIGlmIChtYXRjaGluZ19zdHJlYW0g
IT0gcmVjZWl2ZV9zdHJlYW1zXy5lbmQoKSkgeworICAgIG1hdGNoaW5nX3N0cmVhbS0+c2Vjb25k
LT5TZXRGcmFtZURlY3J5cHRvcihmcmFtZV9kZWNyeXB0b3IpOworICB9Cit9CisKK3ZvaWQgV2Vi
UnRjVmlkZW9DaGFubmVsOjpTZXRGcmFtZUVuY3J5cHRvcigKKyAgICB1aW50MzJfdCBzc3JjLAor
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBm
cmFtZV9lbmNyeXB0b3IpIHsKKyAgcnRjOjpDcml0U2NvcGUgc3RyZWFtX2xvY2soJnN0cmVhbV9j
cml0Xyk7CisgIGF1dG8gbWF0Y2hpbmdfc3RyZWFtID0gc2VuZF9zdHJlYW1zXy5maW5kKHNzcmMp
OworICBpZiAobWF0Y2hpbmdfc3RyZWFtICE9IHNlbmRfc3RyZWFtc18uZW5kKCkpIHsKKyAgICBt
YXRjaGluZ19zdHJlYW0tPnNlY29uZC0+U2V0RnJhbWVFbmNyeXB0b3IoZnJhbWVfZW5jcnlwdG9y
KTsKKyAgfSBlbHNlIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiTm8gc3RyZWFtIGZvdW5k
IHRvIGF0dGFjaCBmcmFtZSBlbmNyeXB0b3IiOworICB9CiB9CiAKIGFic2w6Om9wdGlvbmFsPHVp
bnQzMl90PiBXZWJSdGNWaWRlb0NoYW5uZWw6OkdldERlZmF1bHRSZWNlaXZlU3RyZWFtU3NyYygp
IHsKQEAgLTE0NzQsNiArMTU0OCwxMCBAQCBib29sIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6U2VuZFJ0
cChjb25zdCB1aW50OF90KiBkYXRhLAogICBpZiAoRHNjcEVuYWJsZWQoKSkgewogICAgIHJ0Y19v
cHRpb25zLmRzY3AgPSBQcmVmZXJyZWREc2NwKCk7CiAgIH0KKyAgcnRjX29wdGlvbnMuaW5mb19z
aWduYWxlZF9hZnRlcl9zZW50LmluY2x1ZGVkX2luX2ZlZWRiYWNrID0KKyAgICAgIG9wdGlvbnMu
aW5jbHVkZWRfaW5fZmVlZGJhY2s7CisgIHJ0Y19vcHRpb25zLmluZm9fc2lnbmFsZWRfYWZ0ZXJf
c2VudC5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0KKyAgICAgIG9wdGlvbnMuaW5jbHVkZWRfaW5f
YWxsb2NhdGlvbjsKICAgcmV0dXJuIE1lZGlhQ2hhbm5lbDo6U2VuZFBhY2tldCgmcGFja2V0LCBy
dGNfb3B0aW9ucyk7CiB9CiAKQEAgLTE0ODMsNiArMTU2MSw3IEBAIGJvb2wgV2ViUnRjVmlkZW9D
aGFubmVsOjpTZW5kUnRjcChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuKSB7CiAgIGlm
IChEc2NwRW5hYmxlZCgpKSB7CiAgICAgcnRjX29wdGlvbnMuZHNjcCA9IFByZWZlcnJlZERzY3Ao
KTsKICAgfQorCiAgIHJldHVybiBNZWRpYUNoYW5uZWw6OlNlbmRSdGNwKCZwYWNrZXQsIHJ0Y19v
cHRpb25zKTsKIH0KIApAQCAtMTU2OSw3ICsxNjQ4LDYgQEAgV2ViUnRjVmlkZW9DaGFubmVsOjpX
ZWJSdGNWaWRlb1NlbmRTdHJlYW06OldlYlJ0Y1ZpZGVvU2VuZFN0cmVhbSgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB3ZWJydGM6OlJ0Y3BNb2RlOjprUmVkdWNl
ZFNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB3ZWJydGM6
OlJ0Y3BNb2RlOjprQ29tcG91bmQ7CiAgIHBhcmFtZXRlcnNfLmNvbmZpZy5ydHAubWlkID0gc2Vu
ZF9wYXJhbXMubWlkOwotCiAgIHJ0cF9wYXJhbWV0ZXJzXy5ydGNwLnJlZHVjZWRfc2l6ZSA9IHNl
bmRfcGFyYW1zLnJ0Y3AucmVkdWNlZF9zaXplOwogCiAgIGlmIChjb2RlY19zZXR0aW5ncykgewpA
QCAtMTY5OSw2ICsxNzc3LDEwIEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNWaWRl
b1NlbmRTdHJlYW06OlNldFNlbmRQYXJhbWV0ZXJzKAogICAgICAgICBwYXJhbWV0ZXJzXy5jb25m
aWcucnRwLnJ0Y3BfbW9kZSA9PSB3ZWJydGM6OlJ0Y3BNb2RlOjprUmVkdWNlZFNpemU7CiAgICAg
cmVjcmVhdGVfc3RyZWFtID0gdHJ1ZTsKICAgfQorICBpZiAocGFyYW1zLmV4dG1hcF9hbGxvd19t
aXhlZCkgeworICAgIHBhcmFtZXRlcnNfLmNvbmZpZy5ydHAuZXh0bWFwX2FsbG93X21peGVkID0g
KnBhcmFtcy5leHRtYXBfYWxsb3dfbWl4ZWQ7CisgICAgcmVjcmVhdGVfc3RyZWFtID0gdHJ1ZTsK
KyAgfQogICBpZiAocGFyYW1zLnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucykgewogICAgIHBhcmFtZXRl
cnNfLmNvbmZpZy5ydHAuZXh0ZW5zaW9ucyA9ICpwYXJhbXMucnRwX2hlYWRlcl9leHRlbnNpb25z
OwogICAgIHJ0cF9wYXJhbWV0ZXJzXy5oZWFkZXJfZXh0ZW5zaW9ucyA9ICpwYXJhbXMucnRwX2hl
YWRlcl9leHRlbnNpb25zOwpAQCAtMTc5OSw2ICsxODgxLDE1IEBAIFdlYlJ0Y1ZpZGVvQ2hhbm5l
bDo6V2ViUnRjVmlkZW9TZW5kU3RyZWFtOjpHZXRSdHBQYXJhbWV0ZXJzKCkgY29uc3QgewogICBy
ZXR1cm4gcnRwX3BhcmFtZXRlcnNfOwogfQogCit2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2Vi
UnRjVmlkZW9TZW5kU3RyZWFtOjpTZXRGcmFtZUVuY3J5cHRvcigKKyAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yKSB7
CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ0aHJlYWRfY2hlY2tlcl8pOworICBwYXJhbWV0ZXJzXy5j
b25maWcuZnJhbWVfZW5jcnlwdG9yID0gZnJhbWVfZW5jcnlwdG9yOworICBpZiAoc3RyZWFtXykg
eworICAgIFJlY3JlYXRlV2ViUnRjU3RyZWFtKCk7CisgIH0KK30KKwogdm9pZCBXZWJSdGNWaWRl
b0NoYW5uZWw6OldlYlJ0Y1ZpZGVvU2VuZFN0cmVhbTo6VXBkYXRlU2VuZFN0YXRlKCkgewogICBS
VENfRENIRUNLX1JVTl9PTigmdGhyZWFkX2NoZWNrZXJfKTsKICAgaWYgKHNlbmRpbmdfKSB7CkBA
IC0yMTYxLDI2ICsyMjUyLDIwIEBAIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9SZWNl
aXZlU3RyZWFtOjpHZXRTb3VyY2VzKCkgewogICByZXR1cm4gc3RyZWFtXy0+R2V0U291cmNlcygp
OwogfQogCi1hYnNsOjpvcHRpb25hbDx1aW50MzJfdD4KLVdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2Vi
UnRjVmlkZW9SZWNlaXZlU3RyZWFtOjpHZXRGaXJzdFByaW1hcnlTc3JjKCkgY29uc3Qgeword2Vi
cnRjOjpSdHBQYXJhbWV0ZXJzCitXZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvUmVjZWl2
ZVN0cmVhbTo6R2V0UnRwUGFyYW1ldGVycygpIGNvbnN0IHsKKyAgd2VicnRjOjpSdHBQYXJhbWV0
ZXJzIHJ0cF9wYXJhbWV0ZXJzOworCiAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBwcmltYXJ5X3Nz
cmNzOwogICBzdHJlYW1fcGFyYW1zXy5HZXRQcmltYXJ5U3NyY3MoJnByaW1hcnlfc3NyY3MpOwot
Ci0gIGlmIChwcmltYXJ5X3NzcmNzLmVtcHR5KCkpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcp
Ci0gICAgICAgIDw8ICJFbXB0eSBwcmltYXJ5IHNzcmNzIHZlY3RvciwgcmV0dXJuaW5nIGVtcHR5
IG9wdGlvbmFsIjsKLSAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKLSAgfSBlbHNlIHsKLSAgICBy
ZXR1cm4gcHJpbWFyeV9zc3Jjc1swXTsKKyAgZm9yICh1aW50MzJfdCBzc3JjIDogcHJpbWFyeV9z
c3JjcykgeworICAgIHJ0cF9wYXJhbWV0ZXJzLmVuY29kaW5ncy5lbXBsYWNlX2JhY2soKTsKKyAg
ICBydHBfcGFyYW1ldGVycy5lbmNvZGluZ3MuYmFjaygpLnNzcmMgPSBzc3JjOwogICB9Ci19CiAK
LXdlYnJ0Yzo6UnRwUGFyYW1ldGVycwotV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNWaWRlb1Jl
Y2VpdmVTdHJlYW06OkdldFJ0cFBhcmFtZXRlcnMoKSBjb25zdCB7Ci0gIHdlYnJ0Yzo6UnRwUGFy
YW1ldGVycyBydHBfcGFyYW1ldGVyczsKLSAgcnRwX3BhcmFtZXRlcnMuZW5jb2RpbmdzLmVtcGxh
Y2VfYmFjaygpOwotICBydHBfcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYyA9IEdldEZpcnN0
UHJpbWFyeVNzcmMoKTsKICAgcnRwX3BhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMgPSBjb25m
aWdfLnJ0cC5leHRlbnNpb25zOworICBydHBfcGFyYW1ldGVycy5ydGNwLnJlZHVjZWRfc2l6ZSA9
CisgICAgICBjb25maWdfLnJ0cC5ydGNwX21vZGUgPT0gd2VicnRjOjpSdGNwTW9kZTo6a1JlZHVj
ZWRTaXplOwogCiAgIHJldHVybiBydHBfcGFyYW1ldGVyczsKIH0KQEAgLTIyMzAsOSArMjMxNSw5
IEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNWaWRlb1JlY2VpdmVTdHJlYW06OlNl
dExvY2FsU3NyYygKICAgLy8gcmlnaHQgbm93IHRoaXMgY2FuJ3QgYmUgZG9uZSBkdWUgdG8gdW5p
dHRlc3RzIGRlcGVuZGluZyBvbiByZWNlaXZpbmcgd2hhdAogICAvLyB0aGV5IGFyZSBzZW5kaW5n
IGZyb20gdGhlIHNhbWUgTWVkaWFDaGFubmVsLgogICBpZiAobG9jYWxfc3NyYyA9PSBjb25maWdf
LnJ0cC5sb2NhbF9zc3JjKSB7Ci0gICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiSWdub3JpbmcgY2Fs
bCB0byBTZXRMb2NhbFNzcmMgYmVjYXVzZSBwYXJhbWV0ZXJzIGFyZSAiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAidW5jaGFuZ2VkOyBsb2NhbF9zc3JjPSIKLSAgICAgICAgICAgICAgICAgICAg
IDw8IGxvY2FsX3NzcmM7CisgICAgUlRDX0RMT0coTFNfSU5GTykgPDwgIklnbm9yaW5nIGNhbGwg
dG8gU2V0TG9jYWxTc3JjIGJlY2F1c2UgcGFyYW1ldGVycyBhcmUgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICJ1bmNoYW5nZWQ7IGxvY2FsX3NzcmM9IgorICAgICAgICAgICAgICAgICAgICAg
IDw8IGxvY2FsX3NzcmM7CiAgICAgcmV0dXJuOwogICB9CiAKQEAgLTIzNzIsNiArMjQ1NywxNCBA
QCBib29sIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9SZWNlaXZlU3RyZWFtOjpJc0Rl
ZmF1bHRTdHJlYW0oKSBjb25zdCB7CiAgIHJldHVybiBkZWZhdWx0X3N0cmVhbV87CiB9CiAKK3Zv
aWQgV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNWaWRlb1JlY2VpdmVTdHJlYW06OlNldEZyYW1l
RGVjcnlwdG9yKAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRGVjcnlwdG9y
SW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IpIHsKKyAgY29uZmlnXy5mcmFtZV9kZWNyeXB0b3Ig
PSBmcmFtZV9kZWNyeXB0b3I7CisgIGlmIChzdHJlYW1fKSB7CisgICAgUmVjcmVhdGVXZWJSdGNW
aWRlb1N0cmVhbSgpOworICB9Cit9CisKIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNW
aWRlb1JlY2VpdmVTdHJlYW06OlNldFNpbmsoCiAgICAgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8
d2VicnRjOjpWaWRlb0ZyYW1lPiogc2luaykgewogICBydGM6OkNyaXRTY29wZSBjcml0KCZzaW5r
X2xvY2tfKTsKQEAgLTI2MDcsMTAgKzI3MDAsMTEgQEAgc3RkOjp2ZWN0b3I8d2VicnRjOjpWaWRl
b1N0cmVhbT4gRW5jb2RlclN0cmVhbUZhY3Rvcnk6OkNyZWF0ZUVuY29kZXJTdHJlYW1zKAogICBz
dGQ6OnZlY3Rvcjx3ZWJydGM6OlZpZGVvU3RyZWFtPiBsYXllcnM7CiAKICAgaWYgKGVuY29kZXJf
Y29uZmlnLm51bWJlcl9vZl9zdHJlYW1zID4gMSB8fAotICAgICAoKENvZGVjTmFtZXNFcShjb2Rl
Y19uYW1lXywga1ZwOENvZGVjTmFtZSkgfHwKLSAgICAgICAgQ29kZWNOYW1lc0VxKGNvZGVjX25h
bWVfLCBrSDI2NENvZGVjTmFtZSkpICYmCisgICAgICAoKGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uo
Y29kZWNfbmFtZV8sIGtWcDhDb2RlY05hbWUpIHx8CisgICAgICAgIGFic2w6OkVxdWFsc0lnbm9y
ZUNhc2UoY29kZWNfbmFtZV8sIGtIMjY0Q29kZWNOYW1lKSkgJiYKICAgICAgICBpc19zY3JlZW5z
aGFyZV8gJiYgc2NyZWVuc2hhcmVfY29uZmlnX2V4cGxpY2l0bHlfZW5hYmxlZF8pKSB7Ci0gICAg
Ym9vbCB0ZW1wb3JhbF9sYXllcnNfc3VwcG9ydGVkID0gQ29kZWNOYW1lc0VxKGNvZGVjX25hbWVf
LCBrVnA4Q29kZWNOYW1lKTsKKyAgICBib29sIHRlbXBvcmFsX2xheWVyc19zdXBwb3J0ZWQgPQor
ICAgICAgICBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjX25hbWVfLCBrVnA4Q29kZWNOYW1l
KTsKICAgICBsYXllcnMgPSBHZXRTaW11bGNhc3RDb25maWcoZW5jb2Rlcl9jb25maWcubnVtYmVy
X29mX3N0cmVhbXMsIHdpZHRoLCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAgLypub3QgdXNlZCovLCBlbmNvZGVyX2NvbmZpZy5iaXRyYXRlX3ByaW9yaXR5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfcXBfLCAwIC8qbm90X3VzZWQqLywgaXNf
c2NyZWVuc2hhcmVfLApAQCAtMjcwMyw3ICsyNzk3LDcgQEAgc3RkOjp2ZWN0b3I8d2VicnRjOjpW
aWRlb1N0cmVhbT4gRW5jb2RlclN0cmVhbUZhY3Rvcnk6OkNyZWF0ZUVuY29kZXJTdHJlYW1zKAog
ICBsYXllci5tYXhfcXAgPSBtYXhfcXBfOwogICBsYXllci5iaXRyYXRlX3ByaW9yaXR5ID0gZW5j
b2Rlcl9jb25maWcuYml0cmF0ZV9wcmlvcml0eTsKIAotICBpZiAoQ29kZWNOYW1lc0VxKGNvZGVj
X25hbWVfLCBrVnA5Q29kZWNOYW1lKSkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShj
b2RlY19uYW1lXywga1ZwOUNvZGVjTmFtZSkpIHsKICAgICBSVENfRENIRUNLKGVuY29kZXJfY29u
ZmlnLmVuY29kZXJfc3BlY2lmaWNfc2V0dGluZ3MpOwogICAgIC8vIFVzZSBWUDkgU1ZDIGxheWVy
aW5nIGZyb20gY29kZWMgc2V0dGluZ3Mgd2hpY2ggbWlnaHQgYmUgaW5pdGlhbGl6ZWQKICAgICAv
LyB0aG91Z2ggZmllbGQgdHJpYWwgaW4gQ29uZmlndXJlVmlkZW9FbmNvZGVyU2V0dGluZ3MuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZS5oCmluZGV4IDhh
MWU2YWQ0ZDE3MDM2NDhlZGNmNDU3MGRmNDdhMzM5MTdkM2M2MWEuLjNiNzlhZDQwYjhhMmQ2NzNm
Yjg3ZjEyNjRjYThiNTVkNzI0YTlmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS93ZWJydGN2aWRlb2VuZ2luZS5oCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2NhbGwvdHJhbnNwb3J0LmgiCisjaW5j
bHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNs
dWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9f
c2lua19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc291cmNlX2ludGVy
ZmFjZS5oIgpAQCAtNzgsNDMgKzc5LDUzIEBAIGNsYXNzIERlZmF1bHRVbnNpZ25hbGxlZFNzcmNI
YW5kbGVyIDogcHVibGljIFVuc2lnbmFsbGVkU3NyY0hhbmRsZXIgewogfTsKIAogLy8gV2ViUnRj
VmlkZW9FbmdpbmUgaXMgdXNlZCBmb3IgdGhlIG5ldyBuYXRpdmUgV2ViUlRDIFZpZGVvIEFQSSAo
d2VicnRjOjE2NjcpLgotY2xhc3MgV2ViUnRjVmlkZW9FbmdpbmUgeworY2xhc3MgV2ViUnRjVmlk
ZW9FbmdpbmUgOiBwdWJsaWMgVmlkZW9FbmdpbmVJbnRlcmZhY2UgewogIHB1YmxpYzoKICNpZiBk
ZWZpbmVkKFVTRV9CVUlMVElOX1NXX0NPREVDUykKICAgLy8gSW50ZXJuYWwgU1cgdmlkZW8gY29k
ZWNzIHdpbGwgYmUgYWRkZWQgb24gdG9wIG9mIHRoZSBleHRlcm5hbCBjb2RlY3MuCiAgIFdlYlJ0
Y1ZpZGVvRW5naW5lKAogICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVvRW5jb2RlckZh
Y3Rvcnk+IGV4dGVybmFsX3ZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5PgotICAgICAgICAgIGV4dGVybmFsX3ZpZGVv
X2RlY29kZXJfZmFjdG9yeSk7CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9EZWNv
ZGVyRmFjdG9yeT4gZXh0ZXJuYWxfdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgc3RkOjp1
bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgICAg
ICB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KTsKICNlbmRpZgogCiAgIC8vIFRoZXNl
IHZpZGVvIGNvZGVjIGZhY3RvcmllcyByZXByZXNlbnRzIGFsbCB2aWRlbyBjb2RlY3MsIGkuZS4g
Ym90aCBzb2Z0d2FyZQogICAvLyBhbmQgZXh0ZXJuYWwgaGFyZHdhcmUgY29kZWNzLgogICBXZWJS
dGNWaWRlb0VuZ2luZSgKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rl
ckZhY3Rvcnk+IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3
ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IHZpZGVvX2RlY29kZXJfZmFjdG9yeSk7CisgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRlb19kZWNv
ZGVyX2ZhY3RvcnksCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0JpdHJhdGVB
bGxvY2F0b3JGYWN0b3J5PgorICAgICAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rv
cnkpOwogCi0gIHZpcnR1YWwgfldlYlJ0Y1ZpZGVvRW5naW5lKCk7CisgIH5XZWJSdGNWaWRlb0Vu
Z2luZSgpIG92ZXJyaWRlOwogCi0gIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCogQ3JlYXRlQ2hhbm5lbCh3
ZWJydGM6OkNhbGwqIGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKTsKKyAgVmlkZW9NZWRpYUNoYW5uZWwq
IENyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKKyAgICAgIGNv
bnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCisgICAgICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlv
bnMsCisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSBv
dmVycmlkZTsKIAotICBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiBjb2RlY3MoKSBjb25zdDsKLSAg
UnRwQ2FwYWJpbGl0aWVzIEdldENhcGFiaWxpdGllcygpIGNvbnN0OworICBzdGQ6OnZlY3RvcjxW
aWRlb0NvZGVjPiBjb2RlY3MoKSBjb25zdCBvdmVycmlkZTsKKyAgUnRwQ2FwYWJpbGl0aWVzIEdl
dENhcGFiaWxpdGllcygpIGNvbnN0IG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAgY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gZGVjb2Rlcl9mYWN0b3J5
XzsKICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4g
ZW5jb2Rlcl9mYWN0b3J5XzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9C
aXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnlf
OwogfTsKIAogY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsIDogcHVibGljIFZpZGVvTWVkaWFDaGFu
bmVsLCBwdWJsaWMgd2VicnRjOjpUcmFuc3BvcnQgewogIHB1YmxpYzoKLSAgV2ViUnRjVmlkZW9D
aGFubmVsKHdlYnJ0Yzo6Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1l
ZGlhQ29uZmlnJiBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBWaWRlb09wdGlv
bnMmIG9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlZpZGVvRW5jb2RlckZh
Y3RvcnkqIGVuY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Vmlk
ZW9EZWNvZGVyRmFjdG9yeSogZGVjb2Rlcl9mYWN0b3J5KTsKKyAgV2ViUnRjVmlkZW9DaGFubmVs
KAorICAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAorICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNv
bmZpZywKKyAgICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucywKKyAgICAgIGNvbnN0IHdl
YnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgICB3ZWJydGM6OlZpZGVv
RW5jb2RlckZhY3RvcnkqIGVuY29kZXJfZmFjdG9yeSwKKyAgICAgIHdlYnJ0Yzo6VmlkZW9EZWNv
ZGVyRmFjdG9yeSogZGVjb2Rlcl9mYWN0b3J5LAorICAgICAgd2VicnRjOjpWaWRlb0JpdHJhdGVB
bGxvY2F0b3JGYWN0b3J5KiBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KTsKICAgfldlYlJ0Y1Zp
ZGVvQ2hhbm5lbCgpIG92ZXJyaWRlOwogCiAgIC8vIFZpZGVvTWVkaWFDaGFubmVsIGltcGxlbWVu
dGF0aW9uCkBAIC0xNDcsMTMgKzE1OCwyOCBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWwgOiBw
dWJsaWMgVmlkZW9NZWRpYUNoYW5uZWwsIHB1YmxpYyB3ZWJydGM6OlRyYW5zcG9ydCB7CiAgIGJv
b2wgR2V0U3RhdHMoVmlkZW9NZWRpYUluZm8qIGluZm8pIG92ZXJyaWRlOwogCiAgIHZvaWQgT25Q
YWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSBvdmVycmlk
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIG92ZXJy
aWRlOwogICB2b2lkIE9uUnRjcFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tl
dCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90
aW1lKSBvdmVycmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1l
X3VzKSBvdmVycmlkZTsKICAgdm9pZCBPblJlYWR5VG9TZW5kKGJvb2wgcmVhZHkpIG92ZXJyaWRl
OwogICB2b2lkIE9uTmV0d29ya1JvdXRlQ2hhbmdlZChjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNw
b3J0X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6TmV0d29y
a1JvdXRlJiBuZXR3b3JrX3JvdXRlKSBvdmVycmlkZTsKLSAgdm9pZCBTZXRJbnRlcmZhY2UoTmV0
d29ya0ludGVyZmFjZSogaWZhY2UpIG92ZXJyaWRlOworICB2b2lkIFNldEludGVyZmFjZShOZXR3
b3JrSW50ZXJmYWNlKiBpZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpNZWRpYVRy
YW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KSBvdmVycmlkZTsKKworICAvLyBFMkUg
RW5jcnlwdGVkIFZpZGVvIEZyYW1lIEFQSQorICAvLyBTZXQgYSBmcmFtZSBkZWNyeXB0b3IgdG8g
YSBwYXJ0aWN1bGFyIHNzcmMgdGhhdCB3aWxsIGludGVyY2VwdCBhbGwKKyAgLy8gaW5jb21pbmcg
dmlkZW8gZnJhbWVzIGFuZCBhdHRlbXB0IHRvIGRlY3J5cHQgdGhlbSBiZWZvcmUgZm9yd2FyZGlu
ZyB0aGUKKyAgLy8gcmVzdWx0LgorICB2b2lkIFNldEZyYW1lRGVjcnlwdG9yKHVpbnQzMl90IHNz
cmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lX2RlY3J5cHRvcikgb3ZlcnJpZGU7CisgIC8vIFNldCBhIGZyYW1lIGVuY3J5cHRvciB0byBh
IHBhcnRpY3VsYXIgc3NyYyB0aGF0IHdpbGwgaW50ZXJjZXB0IGFsbAorICAvLyBvdXRnb2luZyB2
aWRlbyBmcmFtZXMgYW5kIGF0dGVtcHQgdG8gZW5jcnlwdCB0aGVtIGFuZCBmb3J3YXJkIHRoZSBy
ZXN1bHQKKyAgLy8gdG8gdGhlIHBhY2tldGl6ZXIuCisgIHZvaWQgU2V0RnJhbWVFbmNyeXB0b3Io
dWludDMyX3Qgc3NyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpGcmFtZUVuY3J5cHRvckludGVyZmFjZT4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWVfZW5jcnlwdG9yKSBvdmVycmlkZTsKIAogICAvLyBJbXBsZW1lbnRlZCBm
b3IgVmlkZW9NZWRpYUNoYW5uZWxUZXN0LgogICBib29sIHNlbmRpbmcoKSBjb25zdCB7IHJldHVy
biBzZW5kaW5nXzsgfQpAQCAtMjAxLDYgKzIyNyw3IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5l
bCA6IHB1YmxpYyBWaWRlb01lZGlhQ2hhbm5lbCwgcHVibGljIHdlYnJ0Yzo6VHJhbnNwb3J0IHsK
ICAgICBhYnNsOjpvcHRpb25hbDxWaWRlb0NvZGVjU2V0dGluZ3M+IGNvZGVjOwogICAgIGFic2w6
Om9wdGlvbmFsPHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uPj4gcnRwX2hlYWRlcl9l
eHRlbnNpb25zOwogICAgIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBtaWQ7CisgICAgYWJz
bDo6b3B0aW9uYWw8Ym9vbD4gZXh0bWFwX2FsbG93X21peGVkOwogICAgIGFic2w6Om9wdGlvbmFs
PGludD4gbWF4X2JhbmR3aWR0aF9icHM7CiAgICAgYWJzbDo6b3B0aW9uYWw8Ym9vbD4gY29uZmVy
ZW5jZV9tb2RlOwogICAgIGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6UnRjcE1vZGU+IHJ0Y3BfbW9k
ZTsKQEAgLTI1Nyw2ICsyODQsOSBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWwgOiBwdWJsaWMg
VmlkZW9NZWRpYUNoYW5uZWwsIHB1YmxpYyB3ZWJydGM6OlRyYW5zcG9ydCB7CiAgICAgd2VicnRj
OjpSVENFcnJvciBTZXRSdHBQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyYg
cGFyYW1ldGVycyk7CiAgICAgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIEdldFJ0cFBhcmFtZXRlcnMo
KSBjb25zdDsKIAorICAgIHZvaWQgU2V0RnJhbWVFbmNyeXB0b3IoCisgICAgICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9lbmNyeXB0
b3IpOworCiAgICAgLy8gSW1wbGVtZW50cyBydGM6OlZpZGVvU291cmNlSW50ZXJmYWNlPHdlYnJ0
Yzo6VmlkZW9GcmFtZT4uCiAgICAgLy8gV2ViUnRjVmlkZW9TZW5kU3RyZWFtIGFjdHMgYXMgYSBz
b3VyY2UgdG8gdGhlIHdlYnJ0Yzo6VmlkZW9TZW5kU3RyZWFtCiAgICAgLy8gaW4gfHN0cmVhbV98
LiBUaGlzIGlzIGRvbmUgdG8gcHJveHkgVmlkZW9TaW5rV2FudHMgZnJvbSB0aGUgZW5jb2RlciB0
bwpAQCAtMzcxLDYgKzQwMSw5IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCA6IHB1YmxpYyBW
aWRlb01lZGlhQ2hhbm5lbCwgcHVibGljIHdlYnJ0Yzo6VHJhbnNwb3J0IHsKICAgICB2b2lkIE9u
RnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBJc0RlZmF1bHRTdHJlYW0oKSBjb25zdDsKIAorICAgIHZvaWQgU2V0RnJhbWVEZWNyeXB0b3Io
CisgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRGVjcnlwdG9ySW50ZXJm
YWNlPiBmcmFtZV9kZWNyeXB0b3IpOworCiAgICAgdm9pZCBTZXRTaW5rKHJ0Yzo6VmlkZW9TaW5r
SW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4qIHNpbmspOwogCiAgICAgVmlkZW9SZWNlaXZl
ckluZm8gR2V0VmlkZW9SZWNlaXZlckluZm8oYm9vbCBsb2dfc3RhdHMpOwpAQCAtMzg3LDggKzQy
MCw2IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCA6IHB1YmxpYyBWaWRlb01lZGlhQ2hhbm5l
bCwgcHVibGljIHdlYnJ0Yzo6VHJhbnNwb3J0IHsKIAogICAgIHN0ZDo6c3RyaW5nIEdldENvZGVj
TmFtZUZyb21QYXlsb2FkVHlwZShpbnQgcGF5bG9hZF90eXBlKTsKIAotICAgIGFic2w6Om9wdGlv
bmFsPHVpbnQzMl90PiBHZXRGaXJzdFByaW1hcnlTc3JjKCkgY29uc3Q7Ci0KICAgICB3ZWJydGM6
OkNhbGwqIGNvbnN0IGNhbGxfOwogICAgIGNvbnN0IFN0cmVhbVBhcmFtcyBzdHJlYW1fcGFyYW1z
XzsKIApAQCAtNDY2LDYgKzQ5Nyw3IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCA6IHB1Ymxp
YyBWaWRlb01lZGlhQ2hhbm5lbCwgcHVibGljIHdlYnJ0Yzo6VHJhbnNwb3J0IHsKIAogICB3ZWJy
dGM6OlZpZGVvRW5jb2RlckZhY3RvcnkqIGNvbnN0IGVuY29kZXJfZmFjdG9yeV87CiAgIHdlYnJ0
Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeSogY29uc3QgZGVjb2Rlcl9mYWN0b3J5XzsKKyAgd2VicnRj
OjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KiBjb25zdCBiaXRyYXRlX2FsbG9jYXRvcl9m
YWN0b3J5XzsKICAgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlY1NldHRpbmdzPiByZWN2X2NvZGVjc187
CiAgIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uPiByZWN2X3J0cF9leHRlbnNpb25z
XzsKICAgLy8gU2VlIHJlYXNvbiBmb3Iga2VlcGluZyB0cmFjayBvZiB0aGUgRmxleEZFQyBwYXls
b2FkIHR5cGUgc2VwYXJhdGVseSBpbgpAQCAtNDc1LDE0ICs1MDcsMTkgQEAgY2xhc3MgV2ViUnRj
VmlkZW9DaGFubmVsIDogcHVibGljIFZpZGVvTWVkaWFDaGFubmVsLCBwdWJsaWMgd2VicnRjOjpU
cmFuc3BvcnQgewogICAvLyBUT0RPKGRlYWRiZWVmKTogRG9uJ3QgZHVwbGljYXRlIGluZm9ybWF0
aW9uIGJldHdlZW4KICAgLy8gc2VuZF9wYXJhbXMvcmVjdl9wYXJhbXMsIHJ0cF9leHRlbnNpb25z
LCBvcHRpb25zLCBldGMuCiAgIFZpZGVvU2VuZFBhcmFtZXRlcnMgc2VuZF9wYXJhbXNfOworICBy
dGM6OkRpZmZTZXJ2Q29kZVBvaW50IHByZWZlcnJlZF9kc2NwXzsKICAgVmlkZW9PcHRpb25zIGRl
ZmF1bHRfc2VuZF9vcHRpb25zXzsKICAgVmlkZW9SZWN2UGFyYW1ldGVycyByZWN2X3BhcmFtc187
CiAgIGludDY0X3QgbGFzdF9zdGF0c19sb2dfbXNfOworICBjb25zdCBib29sIGRpc2NhcmRfdW5r
bm93bl9zc3JjX3BhY2tldHNfOwogICAvLyBUaGlzIGlzIGEgc3RyZWFtIHBhcmFtIHRoYXQgY29t
ZXMgZnJvbSB0aGUgcmVtb3RlIGRlc2NyaXB0aW9uLCBidXQgd2Fzbid0CiAgIC8vIHNpZ25hbGVk
IHdpdGggYW55IGE9c3NyYyBsaW5lcy4gSXQgaG9sZHMgaW5mb3JtYXRpb24gdGhhdCB3YXMgc2ln
bmFsZWQKICAgLy8gYmVmb3JlIHRoZSB1bnNpZ25hbGVkIHJlY2VpdmUgc3RyZWFtIGlzIGNyZWF0
ZWQgd2hlbiB0aGUgZmlyc3QgcGFja2V0IGlzCiAgIC8vIHJlY2VpdmVkLgogICBTdHJlYW1QYXJh
bXMgdW5zaWduYWxlZF9zdHJlYW1fcGFyYW1zXzsKKyAgLy8gUGVyIHBlZXIgY29ubmVjdGlvbiBj
cnlwdG8gb3B0aW9ucyB0aGF0IGxhc3QgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcGVlcgorICAv
LyBjb25uZWN0aW9uLgorICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlv
bnNfOwogfTsKIAogY2xhc3MgRW5jb2RlclN0cmVhbUZhY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2
aWRlb2VuZ2luZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5jYwppbmRl
eCBlODdmNjNmZjRhNjVmMmExNDU0NmFiMWFmNzlhNTQwYTRkNWJhNGMwLi5hYjA0ZmE2YWYzZTVh
NjY1MTE1NDkwNWI0MDg4NzAyOWE5MTY1ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmVf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lX3VuaXR0ZXN0LmNjCkBAIC0xNCwxMCAr
MTQsMTQgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1
ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgi
CisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192aWRlb19iaXRyYXRlX2FsbG9jYXRvci5oIgorI2lu
Y2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgog
I2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiYXBpL3Rlc3QvbW9ja192aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkv
dW5pdHMvdGltZV9kZWx0YS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9idWlsdGluX3ZpZGVvX2Jp
dHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0
cmF0ZV9hbGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3Zp
ZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRp
bl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKQEAgLTEwMSw3ICsxMDUsNyBAQCBib29sIEhhc1J0
eENvZGVjKGNvbnN0IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OlZpZGVvQ29kZWM+JiBjb2RlY3MsCiAg
ICAgICAgICAgICAgICAgIGludCBwYXlsb2FkX3R5cGUpIHsKICAgZm9yIChjb25zdCBjcmlja2V0
OjpWaWRlb0NvZGVjJiBjb2RlYyA6IGNvZGVjcykgewogICAgIGludCBhc3NvY2lhdGVkX3BheWxv
YWRfdHlwZTsKLSAgICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGNvZGVjLm5hbWUuY19zdHIo
KSwgInJ0eCIpICYmCisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZS5j
X3N0cigpLCAicnR4IikgJiYKICAgICAgICAgY29kZWMuR2V0UGFyYW0oY3JpY2tldDo6a0NvZGVj
UGFyYW1Bc3NvY2lhdGVkUGF5bG9hZFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICZhc3Nv
Y2lhdGVkX3BheWxvYWRfdHlwZSkgJiYKICAgICAgICAgYXNzb2NpYXRlZF9wYXlsb2FkX3R5cGUg
PT0gcGF5bG9hZF90eXBlKSB7CkBAIC0yMTMsNyArMjE3LDggQEAgY2xhc3MgV2ViUnRjVmlkZW9F
bmdpbmVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGVuZ2luZV8oc3Rk
Ojp1bmlxdWVfcHRyPGNyaWNrZXQ6OkZha2VXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5PigKICAg
ICAgICAgICAgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5XyksCiAgICAgICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPGNyaWNrZXQ6OkZha2VXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5PigKLSAg
ICAgICAgICAgICAgICAgICAgZGVjb2Rlcl9mYWN0b3J5XykpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZGVjb2Rlcl9mYWN0b3J5XyksCisgICAgICAgICAgICAgICAgd2VicnRjOjpDcmVhdGVCdWls
dGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpKSB7CiAgICAgLy8gRW5zdXJlIGZha2Ug
Y2xvY2sgZG9lc24ndCByZXR1cm4gMCwgd2hpY2ggd2lsbCBjYXVzZSBzb21lIGluaXRpYWxpemF0
aW9ucwogICAgIC8vIGZhaWwgaW5zaWRlIFJUUCBzZW5kZXJzLgogICAgIGZha2VfY2xvY2tfLkFk
dmFuY2VUaW1lTWljcm9zKDEpOwpAQCAtMzE4LDYgKzMyMywyNSBAQCBURVNUX0YoV2ViUnRjVmlk
ZW9FbmdpbmVUZXN0LCBTdXBwb3J0c1ZpZGVvUm90YXRpb25IZWFkZXJFeHRlbnNpb24pIHsKICAg
RkFJTCgpIDw8ICJWaWRlbyBSb3RhdGlvbiBleHRlbnNpb24gbm90IGluIGhlYWRlci1leHRlbnNp
b24gbGlzdC4iOwogfQogCitjbGFzcyBXZWJSdGNWaWRlb0VuZ2luZVRlc3RXaXRoR2VuZXJpY0Rl
c2NyaXB0b3IKKyAgICA6IHB1YmxpYyBXZWJSdGNWaWRlb0VuZ2luZVRlc3QgeworIHB1YmxpYzoK
KyAgV2ViUnRjVmlkZW9FbmdpbmVUZXN0V2l0aEdlbmVyaWNEZXNjcmlwdG9yKCkKKyAgICAgIDog
V2ViUnRjVmlkZW9FbmdpbmVUZXN0KCJXZWJSVEMtR2VuZXJpY0Rlc2NyaXB0b3JBZHZlcnRpc2Vk
L0VuYWJsZWQvIikge30KK307CisKK1RFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3RXaXRoR2Vu
ZXJpY0Rlc2NyaXB0b3IsIEFkdmVydGlzZUdlbmVyaWNEZXNjcmlwdG9yKSB7CisgIFJ0cENhcGFi
aWxpdGllcyBjYXBhYmlsaXRpZXMgPSBlbmdpbmVfLkdldENhcGFiaWxpdGllcygpOworICBBU1NF
UlRfRkFMU0UoY2FwYWJpbGl0aWVzLmhlYWRlcl9leHRlbnNpb25zLmVtcHR5KCkpOworICBmb3Ig
KGNvbnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uIDogY2FwYWJpbGl0aWVzLmhlYWRlcl9leHRl
bnNpb25zKSB7CisgICAgaWYgKGV4dGVuc2lvbi51cmkgPT0gUnRwRXh0ZW5zaW9uOjprR2VuZXJp
Y0ZyYW1lRGVzY3JpcHRvclVyaSkgeworICAgICAgRVhQRUNUX0VRKFJ0cEV4dGVuc2lvbjo6a0dl
bmVyaWNGcmFtZURlc2NyaXB0b3JEZWZhdWx0SWQsIGV4dGVuc2lvbi5pZCk7CisgICAgICByZXR1
cm47CisgICAgfQorICB9CisgIEZBSUwoKSA8PCAiR2VuZXJpYyBkZXNjcmlwdG9yIGV4dGVuc2lv
biBub3QgaW4gaGVhZGVyLWV4dGVuc2lvbiBsaXN0LiI7Cit9CisKIFRFU1RfRihXZWJSdGNWaWRl
b0VuZ2luZVRlc3QsIENWT1NldEhlYWRlckV4dGVuc2lvbkJlZm9yZUNhcHR1cmVyKSB7CiAgIC8v
IEFsbG9jYXRlIHRoZSBzb3VyY2UgZmlyc3QgdG8gcHJldmVudCBlYXJseSBkZXN0cnVjdGlvbiBi
ZWZvcmUgY2hhbm5lbCdzCiAgIC8vIGR0b3IgaXMgY2FsbGVkLgpAQCAtNDMzLDggKzQ1Nyw4IEBA
IFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsIENWT1NldEhlYWRlckV4dGVuc2lvbkFmdGVy
Q2FwdHVyZXIpIHsKIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsIFNldFNlbmRGYWlsc0Jl
Zm9yZVNldHRpbmdDb2RlY3MpIHsKICAgZW5jb2Rlcl9mYWN0b3J5Xy0+QWRkU3VwcG9ydGVkVmlk
ZW9Db2RlY1R5cGUoIlZQOCIpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5l
bD4gY2hhbm5lbCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgR2V0
TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
TWVkaWFDaGFubmVsPiBjaGFubmVsKGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAg
Y2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNy
eXB0b09wdGlvbnMoKSkpOwogCiAgIEVYUEVDVF9UUlVFKGNoYW5uZWwtPkFkZFNlbmRTdHJlYW0o
U3RyZWFtUGFyYW1zOjpDcmVhdGVMZWdhY3koMTIzKSkpOwogCkBAIC00NDcsOCArNDcxLDggQEAg
VEVTVF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwgU2V0U2VuZEZhaWxzQmVmb3JlU2V0dGluZ0Nv
ZGVjcykgewogVEVTVF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwgR2V0U3RhdHNXaXRob3V0U2Vu
ZENvZGVjc1NldERvZXNOb3RDcmFzaCkgewogICBlbmNvZGVyX2ZhY3RvcnlfLT5BZGRTdXBwb3J0
ZWRWaWRlb0NvZGVjVHlwZSgiVlA4Iik7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFD
aGFubmVsPiBjaGFubmVsKAotICAgICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgp
LCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9NZWRpYUNoYW5uZWw+IGNoYW5uZWwoZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisg
ICAgICBjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCksIHdlYnJ0
Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWwtPkFkZFNlbmRTdHJl
YW0oU3RyZWFtUGFyYW1zOjpDcmVhdGVMZWdhY3koMTIzKSkpOwogICBWaWRlb01lZGlhSW5mbyBp
bmZvOwogICBjaGFubmVsLT5HZXRTdGF0cygmaW5mbyk7CkBAIC01MzAsNyArNTU0LDcgQEAgVEVT
VF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwgUnR4Q29kZWNBZGRlZEZvckgyNjRDb2RlYykgewog
ICAgICAgY29kZWNzLCBGaW5kTWF0Y2hpbmdDb2RlYyhjb2RlY3MsIGNyaWNrZXQ6OlZpZGVvQ29k
ZWMoaDI2NF9oaWdoKSktPmlkKSk7CiB9CiAKLSNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkp
CisjaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRl
c3QsIENhbkNvbnN0cnVjdERlY29kZXJGb3JWcDlFbmNvZGVyRmFjdG9yeSkgewogICBlbmNvZGVy
X2ZhY3RvcnlfLT5BZGRTdXBwb3J0ZWRWaWRlb0NvZGVjVHlwZSgiVlA5Iik7CiAKQEAgLTU0MCw3
ICs1NjQsNyBAQCBURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBDYW5Db25zdHJ1Y3REZWNv
ZGVyRm9yVnA5RW5jb2RlckZhY3RvcnkpIHsKICAgRVhQRUNUX1RSVUUoCiAgICAgICBjaGFubmVs
LT5BZGRSZWN2U3RyZWFtKGNyaWNrZXQ6OlN0cmVhbVBhcmFtczo6Q3JlYXRlTGVnYWN5KGtTc3Jj
KSkpOwogfQotI2VuZGlmICAvLyAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjZW5kaWYgIC8v
IGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3Qs
IFByb3BhZ2F0ZXNJbnB1dEZyYW1lVGltZXN0YW1wKSB7CiAgIGVuY29kZXJfZmFjdG9yeV8tPkFk
ZFN1cHBvcnRlZFZpZGVvQ29kZWNUeXBlKCJWUDgiKTsKQEAgLTYzMSwxMSArNjU1LDExIEBAIHNp
emVfdCBXZWJSdGNWaWRlb0VuZ2luZVRlc3Q6OkdldEVuZ2luZUNvZGVjSW5kZXgoCiAgIGNvbnN0
IHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OlZpZGVvQ29kZWM+IGNvZGVjcyA9IGVuZ2luZV8uY29kZWNz
KCk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZWNzLnNpemUoKTsgKytpKSB7CiAgICAg
Y29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyBlbmdpbmVfY29kZWMgPSBjb2RlY3NbaV07Ci0gICAg
aWYgKCFDb2RlY05hbWVzRXEobmFtZSwgZW5naW5lX2NvZGVjLm5hbWUpKQorICAgIGlmICghYWJz
bDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lLCBlbmdpbmVfY29kZWMubmFtZSkpCiAgICAgICBjb250
aW51ZTsKICAgICAvLyBUaGUgdGVzdHMgb25seSB1c2UgSDI2NCBDb25zdHJhaW5lZCBCYXNlbGlu
ZS4gTWFrZSBzdXJlIHdlIGRvbid0IHJldHVybgogICAgIC8vIGFuIGludGVybmFsIEgyNjQgY29k
ZWMgZnJvbSB0aGUgZW5naW5lIHdpdGggYSBkaWZmZXJlbnQgSDI2NCBwcm9maWxlLgotICAgIGlm
IChDb2RlY05hbWVzRXEobmFtZS5jX3N0cigpLCBrSDI2NENvZGVjTmFtZSkpIHsKKyAgICBpZiAo
YWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lLmNfc3RyKCksIGtIMjY0Q29kZWNOYW1lKSkgewog
ICAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpIMjY0OjpQcm9maWxlTGV2ZWxJZD4g
cHJvZmlsZV9sZXZlbF9pZCA9CiAgICAgICAgICAgd2VicnRjOjpIMjY0OjpQYXJzZVNkcFByb2Zp
bGVMZXZlbElkKGVuZ2luZV9jb2RlYy5wYXJhbXMpOwogICAgICAgaWYgKHByb2ZpbGVfbGV2ZWxf
aWQtPnByb2ZpbGUgIT0KQEAgLTY1Nyw4ICs2ODEsOCBAQCBjcmlja2V0OjpWaWRlb0NvZGVjIFdl
YlJ0Y1ZpZGVvRW5naW5lVGVzdDo6R2V0RW5naW5lQ29kZWMoCiAKIFZpZGVvTWVkaWFDaGFubmVs
KgogV2ViUnRjVmlkZW9FbmdpbmVUZXN0OjpTZXRTZW5kUGFyYW1zV2l0aEFsbFN1cHBvcnRlZENv
ZGVjcygpIHsKLSAgVmlkZW9NZWRpYUNoYW5uZWwqIGNoYW5uZWwgPQotICAgICAgZW5naW5lXy5D
cmVhdGVDaGFubmVsKGNhbGxfLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMo
KSk7CisgIFZpZGVvTWVkaWFDaGFubmVsKiBjaGFubmVsID0gZW5naW5lXy5DcmVhdGVNZWRpYUNo
YW5uZWwoCisgICAgICBjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25z
KCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKICAgY3JpY2tldDo6VmlkZW9TZW5kUGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwogICAvLyBXZSBuZWVkIHRvIGxvb2sgdXAgdGhlIGNvZGVjIGluIHRo
ZSBlbmdpbmUgdG8gZ2V0IHRoZSBjb3JyZWN0IHBheWxvYWQgdHlwZS4KICAgZm9yIChjb25zdCB3
ZWJydGM6OlNkcFZpZGVvRm9ybWF0JiBmb3JtYXQgOgpAQCAtNjc3LDggKzcwMSw4IEBAIFdlYlJ0
Y1ZpZGVvRW5naW5lVGVzdDo6U2V0U2VuZFBhcmFtc1dpdGhBbGxTdXBwb3J0ZWRDb2RlY3MoKSB7
CiAKIFZpZGVvTWVkaWFDaGFubmVsKiBXZWJSdGNWaWRlb0VuZ2luZVRlc3Q6OlNldFJlY3ZQYXJh
bXNXaXRoU3VwcG9ydGVkQ29kZWNzKAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+
JiBjb2RlY3MpIHsKLSAgVmlkZW9NZWRpYUNoYW5uZWwqIGNoYW5uZWwgPQotICAgICAgZW5naW5l
Xy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlv
bnMoKSk7CisgIFZpZGVvTWVkaWFDaGFubmVsKiBjaGFubmVsID0gZW5naW5lXy5DcmVhdGVNZWRp
YUNoYW5uZWwoCisgICAgICBjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRp
b25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKICAgY3JpY2tldDo6VmlkZW9SZWN2UGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwogICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGNvZGVjczsKICAgRVhQ
RUNUX1RSVUUoY2hhbm5lbC0+U2V0UmVjdlBhcmFtZXRlcnMocGFyYW1ldGVycykpOwpAQCAtNzMy
LDggKzc1Niw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsIENoYW5uZWxXaXRoSDI2
NENhbkNoYW5nZVRvVnA4KSB7CiAgIEVYUEVDVF9FUShjcmlja2V0OjpDU19SVU5OSU5HLAogICAg
ICAgICAgICAgY2FwdHVyZXIuU3RhcnQoY2FwdHVyZXIuR2V0U3VwcG9ydGVkRm9ybWF0cygpLT5m
cm9udCgpKSk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBjaGFubmVs
KAotICAgICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgpLCBHZXRNZWRpYUNvbmZp
ZygpLCBWaWRlb09wdGlvbnMoKSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5u
ZWw+IGNoYW5uZWwoZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICBjYWxsXy5nZXQo
KSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9u
cygpKSk7CiAgIGNyaWNrZXQ6OlZpZGVvU2VuZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgcGFy
YW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKEdldEVuZ2luZUNvZGVjKCJIMjY0IikpOwogICBFWFBF
Q1RfVFJVRShjaGFubmVsLT5TZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSk7CkBAIC03NjEs
OCArNzg1LDggQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwKICAgZW5jb2Rlcl9mYWN0
b3J5Xy0+QWRkU3VwcG9ydGVkVmlkZW9Db2RlY1R5cGUoIlZQOCIpOwogICBlbmNvZGVyX2ZhY3Rv
cnlfLT5BZGRTdXBwb3J0ZWRWaWRlb0NvZGVjVHlwZSgiSDI2NCIpOwogCi0gIHN0ZDo6dW5pcXVl
X3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gY2hhbm5lbCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hh
bm5lbChjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBjaGFubmVsKGVuZ2luZV8uQ3JlYXRl
TWVkaWFDaGFubmVsKAorICAgICAgY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVv
T3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBjcmlja2V0OjpWaWRlb1Nl
bmRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhH
ZXRFbmdpbmVDb2RlYygiVlA4IikpOwogICBFWFBFQ1RfVFJVRShjaGFubmVsLT5TZXRTZW5kUGFy
YW1ldGVycyhwYXJhbWV0ZXJzKSk7CkBAIC03OTYsOCArODIwLDggQEAgVEVTVF9GKFdlYlJ0Y1Zp
ZGVvRW5naW5lVGVzdCwKICAgZW5jb2Rlcl9mYWN0b3J5Xy0+QWRkU3VwcG9ydGVkVmlkZW9Db2Rl
Y1R5cGUoIlZQOCIpOwogICBlbmNvZGVyX2ZhY3RvcnlfLT5BZGRTdXBwb3J0ZWRWaWRlb0NvZGVj
VHlwZSgiSDI2NCIpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gY2hh
bm5lbCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgR2V0TWVkaWFD
b25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFD
aGFubmVsPiBjaGFubmVsKGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbF8u
Z2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09w
dGlvbnMoKSkpOwogICBjcmlja2V0OjpWaWRlb1NlbmRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAg
IHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhHZXRFbmdpbmVDb2RlYygiSDI2NCIpKTsKICAg
RVhQRUNUX1RSVUUoY2hhbm5lbC0+U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycykpOwpAQCAt
ODI4LDggKzg1Miw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsIFNpbXVsY2FzdEVu
YWJsZWRGb3JIMjY0QmVoaW5kRmllbGRUcmlhbCkgewogICAgICAgIldlYlJUQy1IMjY0U2ltdWxj
YXN0L0VuYWJsZWQvIik7CiAgIGVuY29kZXJfZmFjdG9yeV8tPkFkZFN1cHBvcnRlZFZpZGVvQ29k
ZWNUeXBlKCJIMjY0Iik7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBj
aGFubmVsKAotICAgICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgpLCBHZXRNZWRp
YUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRp
YUNoYW5uZWw+IGNoYW5uZWwoZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICBjYWxs
Xy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRv
T3B0aW9ucygpKSk7CiAgIGNyaWNrZXQ6OlZpZGVvU2VuZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsK
ICAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKEdldEVuZ2luZUNvZGVjKCJIMjY0IikpOwog
ICBFWFBFQ1RfVFJVRShjaGFubmVsLT5TZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSk7CkBA
IC05ODksOCArMTAxMywxMCBAQCBURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBHZXRTb3Vy
Y2VzV2l0aE5vbkV4aXN0aW5nU3NyYykgewogVEVTVChXZWJSdGNWaWRlb0VuZ2luZU5ld1ZpZGVv
Q29kZWNGYWN0b3J5VGVzdCwgTnVsbEZhY3RvcmllcykgewogICBzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBlbmNvZGVyX2ZhY3Rvcnk7CiAgIHN0ZDo6dW5pcXVl
X3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IGRlY29kZXJfZmFjdG9yeTsKKyAgc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4gcmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeTsKICAgV2ViUnRjVmlkZW9FbmdpbmUgZW5naW5lKHN0ZDo6bW92ZShl
bmNvZGVyX2ZhY3RvcnkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGRl
Y29kZXJfZmFjdG9yeSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGRl
Y29kZXJfZmFjdG9yeSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUocmF0
ZV9hbGxvY2F0b3JfZmFjdG9yeSkpOwogICBFWFBFQ1RfRVEoMHUsIGVuZ2luZS5jb2RlY3MoKS5z
aXplKCkpOwogfQogCkBAIC0xMDAwLDEzICsxMDI2LDE4IEBAIFRFU1QoV2ViUnRjVmlkZW9Fbmdp
bmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3QsIEVtcHR5RmFjdG9yaWVzKSB7CiAgICAgICBuZXcg
d2VicnRjOjpNb2NrVmlkZW9FbmNvZGVyRmFjdG9yeSgpOwogICB3ZWJydGM6Ok1vY2tWaWRlb0Rl
Y29kZXJGYWN0b3J5KiBkZWNvZGVyX2ZhY3RvcnkgPQogICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1Zp
ZGVvRGVjb2RlckZhY3RvcnkoKTsKKyAgd2VicnRjOjpNb2NrVmlkZW9CaXRyYXRlQWxsb2NhdG9y
RmFjdG9yeSogcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICBuZXcgd2VicnRjOjpNb2Nr
VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpOwogICBXZWJSdGNWaWRlb0VuZ2luZSBlbmdp
bmUoCiAgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4o
ZW5jb2Rlcl9mYWN0b3J5KSksCi0gICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9E
ZWNvZGVyRmFjdG9yeT4oZGVjb2Rlcl9mYWN0b3J5KSkpOworICAgICAgKHN0ZDo6dW5pcXVlX3B0
cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+KGRlY29kZXJfZmFjdG9yeSkpLAorICAgICAg
KHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+KAor
ICAgICAgICAgIHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkpKSk7CiAgIEVYUEVDVF9DQUxMKCplbmNv
ZGVyX2ZhY3RvcnksIEdldFN1cHBvcnRlZEZvcm1hdHMoKSk7CiAgIEVYUEVDVF9FUSgwdSwgZW5n
aW5lLmNvZGVjcygpLnNpemUoKSk7CiAgIEVYUEVDVF9DQUxMKCplbmNvZGVyX2ZhY3RvcnksIERp
ZSgpKTsKICAgRVhQRUNUX0NBTEwoKmRlY29kZXJfZmFjdG9yeSwgRGllKCkpOworICBFWFBFQ1Rf
Q0FMTCgqcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSwgRGllKCkpOwogfQogCiAvLyBUZXN0IGZ1bGwg
YmVoYXZpb3IgaW4gdGhlIHZpZGVvIGVuZ2luZSB3aGVuIHZpZGVvIGNvZGVjIGZhY3RvcmllcyBv
ZiB0aGUgbmV3CkBAIC0xMDE5LDkgKzEwNTAsMTcgQEAgVEVTVChXZWJSdGNWaWRlb0VuZ2luZU5l
d1ZpZGVvQ29kZWNGYWN0b3J5VGVzdCwgVnA4KSB7CiAgICAgICBuZXcgd2VicnRjOjpNb2NrVmlk
ZW9FbmNvZGVyRmFjdG9yeSgpOwogICB3ZWJydGM6Ok1vY2tWaWRlb0RlY29kZXJGYWN0b3J5KiBk
ZWNvZGVyX2ZhY3RvcnkgPQogICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1ZpZGVvRGVjb2RlckZhY3Rv
cnkoKTsKKyAgd2VicnRjOjpNb2NrVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSogcmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICBuZXcgd2VicnRjOjpNb2NrVmlkZW9CaXRyYXRlQWxs
b2NhdG9yRmFjdG9yeSgpOworICBFWFBFQ1RfQ0FMTCgqcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSwK
KyAgICAgICAgICAgICAgQ3JlYXRlVmlkZW9CaXRyYXRlQWxsb2NhdG9yUHJveHkoRmllbGQoCisg
ICAgICAgICAgICAgICAgICAmd2VicnRjOjpWaWRlb0NvZGVjOjpjb2RlY1R5cGUsIHdlYnJ0Yzo6
a1ZpZGVvQ29kZWNWUDgpKSkKKyAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4obmV3IHdl
YnJ0Yzo6TW9ja1ZpZGVvQml0cmF0ZUFsbG9jYXRvcigpKSk7CiAgIFdlYlJ0Y1ZpZGVvRW5naW5l
IGVuZ2luZSgKICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0
b3J5PihlbmNvZGVyX2ZhY3RvcnkpKSwKLSAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpW
aWRlb0RlY29kZXJGYWN0b3J5PihkZWNvZGVyX2ZhY3RvcnkpKSk7CisgICAgICAoc3RkOjp1bmlx
dWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4oZGVjb2Rlcl9mYWN0b3J5KSksCisg
ICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9y
eT4oCisgICAgICAgICAgcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkpKTsKICAgY29uc3Qgd2VicnRj
OjpTZHBWaWRlb0Zvcm1hdCB2cDhfZm9ybWF0KCJWUDgiKTsKICAgY29uc3Qgc3RkOjp2ZWN0b3I8
d2VicnRjOjpTZHBWaWRlb0Zvcm1hdD4gc3VwcG9ydGVkX2Zvcm1hdHMgPSB7dnA4X2Zvcm1hdH07
CiAgIEVYUEVDVF9DQUxMKCplbmNvZGVyX2ZhY3RvcnksIEdldFN1cHBvcnRlZEZvcm1hdHMoKSkK
QEAgLTEwNjYsNyArMTEwNSw3IEBAIFRFU1QoV2ViUnRjVmlkZW9FbmdpbmVOZXdWaWRlb0NvZGVj
RmFjdG9yeVRlc3QsIFZwOCkgewogICBFWFBFQ1RfQ0FMTCgqZW5jb2Rlcl9mYWN0b3J5LCBRdWVy
eVZpZGVvRW5jb2Rlcihmb3JtYXQpKQogICAgICAgLldpbGxSZXBlYXRlZGx5KHRlc3Rpbmc6OlJl
dHVybihjb2RlY19pbmZvKSk7CiAgIEZha2VXZWJSdGNWaWRlb0VuY29kZXIqIGNvbnN0IGVuY29k
ZXIgPSBuZXcgRmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlcihudWxscHRyKTsKLSAgcnRjOjpFdmVudCBl
bmNvZGVyX2NyZWF0ZWQoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBlbmNvZGVyX2NyZWF0
ZWQ7CiAgIEVYUEVDVF9DQUxMKCplbmNvZGVyX2ZhY3RvcnksIENyZWF0ZVZpZGVvRW5jb2RlclBy
b3h5KGZvcm1hdCkpCiAgICAgICAuV2lsbE9uY2UoCiAgICAgICAgICAgOjp0ZXN0aW5nOjpEb0Fs
bCg6OnRlc3Rpbmc6Okludm9rZVdpdGhvdXRBcmdzKApAQCAtMTA4NSw4ICsxMTI0LDggQEAgVEVT
VChXZWJSdGNWaWRlb0VuZ2luZU5ld1ZpZGVvQ29kZWNGYWN0b3J5VGVzdCwgVnA4KSB7CiAKICAg
Ly8gQ3JlYXRlIHNlbmQgY2hhbm5lbC4KICAgY29uc3QgaW50IHNlbmRfc3NyYyA9IDEyMzsKLSAg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBzZW5kX2NoYW5uZWwoCi0gICAgICBl
bmdpbmUuQ3JlYXRlQ2hhbm5lbChjYWxsLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09w
dGlvbnMoKSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IHNlbmRfY2hh
bm5lbChlbmdpbmUuQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbC5nZXQoKSwgR2V0TWVk
aWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAg
IGNyaWNrZXQ6OlZpZGVvU2VuZFBhcmFtZXRlcnMgc2VuZF9wYXJhbWV0ZXJzOwogICBzZW5kX3Bh
cmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhlbmdpbmVfY29kZWNzLmF0KDApKTsKICAgRVhQRUNU
X1RSVUUoc2VuZF9jaGFubmVsLT5TZXRTZW5kUGFyYW1ldGVycyhzZW5kX3BhcmFtZXRlcnMpKTsK
QEAgLTExMDYsOCArMTE0NSw4IEBAIFRFU1QoV2ViUnRjVmlkZW9FbmdpbmVOZXdWaWRlb0NvZGVj
RmFjdG9yeVRlc3QsIFZwOCkgewogCiAgIC8vIENyZWF0ZSByZWN2IGNoYW5uZWwuCiAgIGNvbnN0
IGludCByZWN2X3NzcmMgPSAzMjE7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5l
bD4gcmVjdl9jaGFubmVsKAotICAgICAgZW5naW5lLkNyZWF0ZUNoYW5uZWwoY2FsbC5nZXQoKSwg
R2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvTWVkaWFDaGFubmVsPiByZWN2X2NoYW5uZWwoZW5naW5lLkNyZWF0ZU1lZGlhQ2hhbm5lbCgK
KyAgICAgIGNhbGwuZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBjcmlja2V0OjpWaWRlb1JlY3ZQYXJhbWV0ZXJzIHJl
Y3ZfcGFyYW1ldGVyczsKICAgcmVjdl9wYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soZW5naW5l
X2NvZGVjcy5hdCgwKSk7CiAgIEVYUEVDVF9UUlVFKHJlY3ZfY2hhbm5lbC0+U2V0UmVjdlBhcmFt
ZXRlcnMocmVjdl9wYXJhbWV0ZXJzKSk7CkBAIC0xMTE3LDYgKzExNTYsNyBAQCBURVNUKFdlYlJ0
Y1ZpZGVvRW5naW5lTmV3VmlkZW9Db2RlY0ZhY3RvcnlUZXN0LCBWcDgpIHsKICAgLy8gUmVtb3Zl
IHN0cmVhbXMgcHJldmlvdXNseSBhZGRlZCB0byBmcmVlIHRoZSBlbmNvZGVyIGFuZCBkZWNvZGVy
IGluc3RhbmNlLgogICBFWFBFQ1RfQ0FMTCgqZW5jb2Rlcl9mYWN0b3J5LCBEaWUoKSk7CiAgIEVY
UEVDVF9DQUxMKCpkZWNvZGVyX2ZhY3RvcnksIERpZSgpKTsKKyAgRVhQRUNUX0NBTEwoKnJhdGVf
YWxsb2NhdG9yX2ZhY3RvcnksIERpZSgpKTsKICAgRVhQRUNUX1RSVUUoc2VuZF9jaGFubmVsLT5S
ZW1vdmVTZW5kU3RyZWFtKHNlbmRfc3NyYykpOwogICBFWFBFQ1RfVFJVRShyZWN2X2NoYW5uZWwt
PlJlbW92ZVJlY3ZTdHJlYW0ocmVjdl9zc3JjKSk7CiB9CkBAIC0xMTI1LDEyICsxMTY1LDE2IEBA
IFRFU1QoV2ViUnRjVmlkZW9FbmdpbmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3QsIFZwOCkgewog
VEVTVChXZWJSdGNWaWRlb0VuZ2luZU5ld1ZpZGVvQ29kZWNGYWN0b3J5VGVzdCwgTnVsbERlY29k
ZXIpIHsKICAgLy8gfGVuZ2luZXwgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcmllcy4KICAg
d2VicnRjOjpNb2NrVmlkZW9FbmNvZGVyRmFjdG9yeSogZW5jb2Rlcl9mYWN0b3J5ID0KLSAgICAg
IG5ldyB0ZXN0aW5nOjpTdHJpY3RNb2NrPHdlYnJ0Yzo6TW9ja1ZpZGVvRW5jb2RlckZhY3Rvcnk+
KCk7CisgICAgICBuZXcgd2VicnRjOjpNb2NrVmlkZW9FbmNvZGVyRmFjdG9yeSgpOwogICB3ZWJy
dGM6Ok1vY2tWaWRlb0RlY29kZXJGYWN0b3J5KiBkZWNvZGVyX2ZhY3RvcnkgPQotICAgICAgbmV3
IHRlc3Rpbmc6OlN0cmljdE1vY2s8d2VicnRjOjpNb2NrVmlkZW9EZWNvZGVyRmFjdG9yeT4oKTsK
KyAgICAgIG5ldyB3ZWJydGM6Ok1vY2tWaWRlb0RlY29kZXJGYWN0b3J5KCk7CisgIHdlYnJ0Yzo6
TW9ja1ZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkqIHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnkg
PQorICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1ZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKTsK
ICAgV2ViUnRjVmlkZW9FbmdpbmUgZW5naW5lKAogICAgICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+KGVuY29kZXJfZmFjdG9yeSkpLAotICAgICAgKHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+KGRlY29kZXJfZmFjdG9yeSkp
KTsKKyAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5Pihk
ZWNvZGVyX2ZhY3RvcnkpKSwKKyAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0Jp
dHJhdGVBbGxvY2F0b3JGYWN0b3J5PigKKyAgICAgICAgICByYXRlX2FsbG9jYXRvcl9mYWN0b3J5
KSkpOwogICBjb25zdCB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0IHZwOF9mb3JtYXQoIlZQOCIpOwog
ICBjb25zdCBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlNkcFZpZGVvRm9ybWF0PiBzdXBwb3J0ZWRfZm9y
bWF0cyA9IHt2cDhfZm9ybWF0fTsKICAgRVhQRUNUX0NBTEwoKmVuY29kZXJfZmFjdG9yeSwgR2V0
U3VwcG9ydGVkRm9ybWF0cygpKQpAQCAtMTE0Nyw4ICsxMTkxLDggQEAgVEVTVChXZWJSdGNWaWRl
b0VuZ2luZU5ld1ZpZGVvQ29kZWNGYWN0b3J5VGVzdCwgTnVsbERlY29kZXIpIHsKIAogICAvLyBD
cmVhdGUgcmVjdiBjaGFubmVsLgogICBjb25zdCBpbnQgcmVjdl9zc3JjID0gMzIxOwotICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IHJlY3ZfY2hhbm5lbCgKLSAgICAgIGVuZ2lu
ZS5DcmVhdGVDaGFubmVsKGNhbGwuZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9u
cygpKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gcmVjdl9jaGFubmVs
KGVuZ2luZS5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICBjYWxsLmdldCgpLCBHZXRNZWRpYUNv
bmZpZygpLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKICAgY3Jp
Y2tldDo6VmlkZW9SZWN2UGFyYW1ldGVycyByZWN2X3BhcmFtZXRlcnM7CiAgIHJlY3ZfcGFyYW1l
dGVycy5jb2RlY3MucHVzaF9iYWNrKGVuZ2luZS5jb2RlY3MoKS5mcm9udCgpKTsKICAgRVhQRUNU
X1RSVUUocmVjdl9jaGFubmVsLT5TZXRSZWN2UGFyYW1ldGVycyhyZWN2X3BhcmFtZXRlcnMpKTsK
QEAgLTEyMjMsNyArMTI2Nyw4IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbEJhc2VUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDoKICAgV2ViUnRjVmlkZW9DaGFubmVs
QmFzZVRlc3QoKQogICAgICAgOiBlbmdpbmVfKHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVvRW5j
b2RlckZhY3RvcnkoKSwKLSAgICAgICAgICAgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRl
b0RlY29kZXJGYWN0b3J5KCkpIHt9CisgICAgICAgICAgICAgICAgd2VicnRjOjpDcmVhdGVCdWls
dGluVmlkZW9EZWNvZGVyRmFjdG9yeSgpLAorICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3JlYXRl
QnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSkge30KIAogICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7CiAgICAgLy8gT25lIHRlc3RjYXNlIGNhbGxzIFNldFVwIGluIGEgbG9vcCwg
b25seSBjcmVhdGUgY2FsbF8gb25jZS4KQEAgLTEyMzYsMTIgKzEyODEsMTQgQEAgY2xhc3MgV2Vi
UnRjVmlkZW9DaGFubmVsQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgLy8g
bmVlZHMgdG8gYmUgZGlzYWJsZWQsIG90aGVyd2lzZSwgdGVzdHMgd2hpY2ggY2hlY2sgdGhlIHNp
emUgb2YgcmVjZWl2ZWQKICAgICAvLyBmcmFtZXMgYmVjb21lIGZsYWt5LgogICAgIG1lZGlhX2Nv
bmZpZy52aWRlby5lbmFibGVfY3B1X2FkYXB0YXRpb24gPSBmYWxzZTsKLSAgICBjaGFubmVsXy5y
ZXNldChlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6VmlkZW9PcHRp
b25zKCkpKTsKKyAgICBjaGFubmVsXy5yZXNldCgKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y3JpY2tl
dDo6V2ViUnRjVmlkZW9DaGFubmVsKj4oZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAg
ICAgICAgICBjYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBjcmlja2V0OjpWaWRlb09wdGlvbnMo
KSwKKyAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSkpOwogICAgIGNoYW5uZWxf
LT5PblJlYWR5VG9TZW5kKHRydWUpOwogICAgIEVYUEVDVF9UUlVFKGNoYW5uZWxfLmdldCgpICE9
IE5VTEwpOwogICAgIG5ldHdvcmtfaW50ZXJmYWNlXy5TZXREZXN0aW5hdGlvbihjaGFubmVsXy5n
ZXQoKSk7Ci0gICAgY2hhbm5lbF8tPlNldEludGVyZmFjZSgmbmV0d29ya19pbnRlcmZhY2VfKTsK
KyAgICBjaGFubmVsXy0+U2V0SW50ZXJmYWNlKCZuZXR3b3JrX2ludGVyZmFjZV8sIC8qbWVkaWFf
dHJhbnNwb3J0PSovbnVsbHB0cik7CiAgICAgY3JpY2tldDo6VmlkZW9SZWN2UGFyYW1ldGVycyBw
YXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuY29kZWNzID0gZW5naW5lXy5jb2RlY3MoKTsKICAg
ICBjaGFubmVsXy0+U2V0UmVjdlBhcmFtZXRlcnMocGFyYW1ldGVycyk7CkBAIC0xNDExLDcgKzE0
NTgsNyBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWxCYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKIAogICBjcmlja2V0OjpWaWRlb0NvZGVjIEdldEVuZ2luZUNvZGVjKGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lKSB7CiAgICAgZm9yIChjb25zdCBjcmlja2V0OjpWaWRlb0NvZGVjJiBl
bmdpbmVfY29kZWMgOiBlbmdpbmVfLmNvZGVjcygpKSB7Ci0gICAgICBpZiAoQ29kZWNOYW1lc0Vx
KG5hbWUsIGVuZ2luZV9jb2RlYy5uYW1lKSkKKyAgICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVD
YXNlKG5hbWUsIGVuZ2luZV9jb2RlYy5uYW1lKSkKICAgICAgICAgcmV0dXJuIGVuZ2luZV9jb2Rl
YzsKICAgICB9CiAgICAgLy8gVGhpcyBwb2ludCBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC4KQEAg
LTE0NjUsNjAgKzE1MTIsNyBAQCBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsQmFzZVRlc3QsIFNl
dFNlbmRTZXRzVHJhbnNwb3J0QnVmZmVyU2l6ZXMpIHsKICAgRVhQRUNUX1RSVUUoU2V0T25lQ29k
ZWMoRGVmYXVsdENvZGVjKCkpKTsKICAgRVhQRUNUX1RSVUUoU2V0U2VuZCh0cnVlKSk7CiAgIEVY
UEVDVF9FUSg2NCAqIDEwMjQsIG5ldHdvcmtfaW50ZXJmYWNlXy5zZW5kYnVmX3NpemUoKSk7Ci0g
IEVYUEVDVF9FUSg2NCAqIDEwMjQsIG5ldHdvcmtfaW50ZXJmYWNlXy5yZWN2YnVmX3NpemUoKSk7
Ci19Ci0KLS8vIFRlc3QgdGhhdCB3ZSBwcm9wZXJseSBzZXQgdGhlIHNlbmQgYW5kIHJlY3YgYnVm
ZmVyIHNpemVzIHdoZW4gb3ZlcnJpZGluZwotLy8gdmlhIGZpZWxkIHRyaWFscy4KLVRFU1RfRihX
ZWJSdGNWaWRlb0NoYW5uZWxCYXNlVGVzdCwgT3ZlcnJpZGVzUmVjdkJ1ZmZlclNpemUpIHsKLSAg
Ly8gU2V0IGZpZWxkIHRyaWFsIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHJlY3YgYnVmZmVyIHNp
emUsIGFuZCB0aGVuIHJlLXJ1bgotICAvLyBzZXR1cCB3aGVyZSB0aGUgaW50ZXJmYWNlIGlzIGNy
ZWF0ZWQgYW5kIGNvbmZpZ3VyZWQuCi0gIGNvbnN0IGludCBrQ3VzdG9tUmVjdkJ1ZmZlclNpemUg
PSAxMjM0NTY7Ci0gIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWwo
Ci0gICAgICAiV2ViUlRDLUluY3JlYXNlZFJlY2VpdmVidWZmZXJzLzEyMzQ1Ni8iKTsKLSAgU2V0
VXAoKTsKLQotICBFWFBFQ1RfVFJVRShTZXRPbmVDb2RlYyhEZWZhdWx0Q29kZWMoKSkpOwotICBF
WFBFQ1RfVFJVRShTZXRTZW5kKHRydWUpKTsKLSAgRVhQRUNUX0VRKDY0ICogMTAyNCwgbmV0d29y
a19pbnRlcmZhY2VfLnNlbmRidWZfc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKGtDdXN0b21SZWN2QnVm
ZmVyU2l6ZSwgbmV0d29ya19pbnRlcmZhY2VfLnJlY3ZidWZfc2l6ZSgpKTsKLX0KLQotLy8gVGVz
dCB0aGF0IHdlIHByb3Blcmx5IHNldCB0aGUgc2VuZCBhbmQgcmVjdiBidWZmZXIgc2l6ZXMgd2hl
biBvdmVycmlkaW5nCi0vLyB2aWEgZmllbGQgdHJpYWxzIHdpdGggc3VmZml4LgotVEVTVF9GKFdl
YlJ0Y1ZpZGVvQ2hhbm5lbEJhc2VUZXN0LCBPdmVycmlkZXNSZWN2QnVmZmVyU2l6ZVdpdGhTdWZm
aXgpIHsKLSAgLy8gU2V0IGZpZWxkIHRyaWFsIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHJlY3Yg
YnVmZmVyIHNpemUsIGFuZCB0aGVuIHJlLXJ1bgotICAvLyBzZXR1cCB3aGVyZSB0aGUgaW50ZXJm
YWNlIGlzIGNyZWF0ZWQgYW5kIGNvbmZpZ3VyZWQuCi0gIGNvbnN0IGludCBrQ3VzdG9tUmVjdkJ1
ZmZlclNpemUgPSAxMjM0NTY7Ci0gIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmll
bGRfdHJpYWwoCi0gICAgICAiV2ViUlRDLUluY3JlYXNlZFJlY2VpdmVidWZmZXJzLzEyMzQ1Nl9E
b2dmb29kLyIpOwotICBTZXRVcCgpOwotCi0gIEVYUEVDVF9UUlVFKFNldE9uZUNvZGVjKERlZmF1
bHRDb2RlYygpKSk7Ci0gIEVYUEVDVF9UUlVFKFNldFNlbmQodHJ1ZSkpOwotICBFWFBFQ1RfRVEo
NjQgKiAxMDI0LCBuZXR3b3JrX2ludGVyZmFjZV8uc2VuZGJ1Zl9zaXplKCkpOwotICBFWFBFQ1Rf
RVEoa0N1c3RvbVJlY3ZCdWZmZXJTaXplLCBuZXR3b3JrX2ludGVyZmFjZV8ucmVjdmJ1Zl9zaXpl
KCkpOwotfQotCi0vLyBUZXN0IHRoYXQgd2UgcHJvcGVybHkgc2V0IHRoZSBzZW5kIGFuZCByZWN2
IGJ1ZmZlciBzaXplcyB3aGVuIG92ZXJyaWRpbmcKLS8vIHZpYSBmaWVsZCB0cmlhbHMgdGhhdCBk
b24ndCBtYWtlIGFueSBzZW5zZS4KLVRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxCYXNlVGVzdCwg
SW52YWxpZFJlY3ZCdWZmZXJTaXplKSB7Ci0gIC8vIFNldCBib2d1cyBmaWVsZCB0cmlhbCB2YWx1
ZXMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcmVjdiBidWZmZXIgc2l6ZSwgYW5kCi0gIC8vIHRo
ZW4gcmUtcnVuIHNldHVwIHdoZXJlIHRoZSBpbnRlcmZhY2UgaXMgY3JlYXRlZCBhbmQgY29uZmln
dXJlZC4gVGhlCi0gIC8vIGRlZmF1bHQgdmFsdWUgc2hvdWxkIHN0aWxsIGJlIHVzZWQuCi0KLSAg
Zm9yIChzdGQ6OnN0cmluZyBncm91cCA6IHsiICIsICJOb3RBTnVtYmVyIiwgIi0xIiwgIjAifSkg
ewotICAgIHN0ZDo6c3RyaW5nIGZpZWxkX3RyaWFsX3N0cmluZyA9ICJXZWJSVEMtSW5jcmVhc2Vk
UmVjZWl2ZWJ1ZmZlcnMvIjsKLSAgICBmaWVsZF90cmlhbF9zdHJpbmcgKz0gZ3JvdXA7Ci0gICAg
ZmllbGRfdHJpYWxfc3RyaW5nICs9ICIvIjsKLSAgICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxk
VHJpYWxzIGZpZWxkX3RyaWFsKGZpZWxkX3RyaWFsX3N0cmluZyk7Ci0gICAgU2V0VXAoKTsKLQot
ICAgIEVYUEVDVF9UUlVFKFNldE9uZUNvZGVjKERlZmF1bHRDb2RlYygpKSk7Ci0gICAgRVhQRUNU
X1RSVUUoU2V0U2VuZCh0cnVlKSk7Ci0gICAgRVhQRUNUX0VRKDY0ICogMTAyNCwgbmV0d29ya19p
bnRlcmZhY2VfLnNlbmRidWZfc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVEoNjQgKiAxMDI0LCBuZXR3
b3JrX2ludGVyZmFjZV8ucmVjdmJ1Zl9zaXplKCkpOwotICB9CisgIEVYUEVDVF9FUSgyNTYgKiAx
MDI0LCBuZXR3b3JrX2ludGVyZmFjZV8ucmVjdmJ1Zl9zaXplKCkpOwogfQogCiAvLyBUZXN0IHRo
YXQgc3RhdHMgd29yayBwcm9wZXJseSBmb3IgYSAxLTEgY2FsbC4KQEAgLTE3NTcsNyArMTc1MSw3
IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxCYXNlVGVzdCwgU2V0U2luaykgewogICBFWFBF
Q1RfVFJVRShTZXREZWZhdWx0Q29kZWMoKSk7CiAgIEVYUEVDVF9UUlVFKFNldFNlbmQodHJ1ZSkp
OwogICBFWFBFQ1RfRVEoMCwgcmVuZGVyZXJfLm51bV9yZW5kZXJlZF9mcmFtZXMoKSk7Ci0gIGNo
YW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQxLCBydGM6OlBhY2tldFRpbWUoKSk7Cisg
IGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQxLCAvKiBwYWNrZXRfdGltZV91cyAq
LyAtMSk7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWxfLT5TZXRTaW5rKGtEZWZhdWx0UmVjZWl2ZVNz
cmMsICZyZW5kZXJlcl8pKTsKICAgRVhQRUNUX1RSVUUoU2VuZEZyYW1lKCkpOwogICBFWFBFQ1Rf
RlJBTUVfV0FJVCgxLCBrVmlkZW9XaWR0aCwga1ZpZGVvSGVpZ2h0LCBrVGltZW91dCk7CkBAIC0y
MDQ2LDggKzIwNDAsOSBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWxUZXN0IDogcHVibGljIFdl
YlJ0Y1ZpZGVvRW5naW5lVGVzdCB7CiAjZW5kaWYKIAogICAgIGZha2VfY2FsbF8ucmVzZXQobmV3
IEZha2VDYWxsKCkpOwotICAgIGNoYW5uZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChm
YWtlX2NhbGxfLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWaWRlb09wdGlvbnMoKSkpOworICAgIGNoYW5uZWxfLnJlc2V0
KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKGZha2VfY2FsbF8uZ2V0KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0TWVkaWFDb25maWcoKSwgVmlk
ZW9PcHRpb25zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKICAgICBjaGFubmVsXy0+T25SZWFkeVRvU2Vu
ZCh0cnVlKTsKICAgICBsYXN0X3NzcmNfID0gMTIzOwogICAgIHNlbmRfcGFyYW1ldGVyc18uY29k
ZWNzID0gZW5naW5lXy5jb2RlY3MoKTsKQEAgLTIxMjEsNiArMjExNiwyOSBAQCBjbGFzcyBXZWJS
dGNWaWRlb0NoYW5uZWxUZXN0IDogcHVibGljIFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCB7CiAgICAg
ICAgICAgICAgICAgICAgICZCaXRyYXRlQ29uc3RyYWludHM6Om1heF9iaXRyYXRlX2JwcywgbWF4
X2JpdHJhdGVfYnBzKSkpOwogICB9CiAKKyAgdm9pZCBUZXN0RXh0bWFwQWxsb3dNaXhlZENhbGxl
cihib29sIGV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIC8vIEZvciBhIGNhbGxlciwgdGhlIGFu
c3dlciB3aWxsIGJlIGFwcGxpZWQgaW4gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbgorICAgIC8vIHdo
ZXJlIFNldFNlbmRQYXJhbWV0ZXJzKCkgaXMgY2FsbGVkLgorICAgIEVYUEVDVF9UUlVFKAorICAg
ICAgICBjaGFubmVsXy0+QWRkU2VuZFN0cmVhbShjcmlja2V0OjpTdHJlYW1QYXJhbXM6OkNyZWF0
ZUxlZ2FjeShrU3NyYykpKTsKKyAgICBzZW5kX3BhcmFtZXRlcnNfLmV4dG1hcF9hbGxvd19taXhl
ZCA9IGV4dG1hcF9hbGxvd19taXhlZDsKKyAgICBFWFBFQ1RfVFJVRShjaGFubmVsXy0+U2V0U2Vu
ZFBhcmFtZXRlcnMoc2VuZF9wYXJhbWV0ZXJzXykpOworICAgIGNvbnN0IHdlYnJ0Yzo6VmlkZW9T
ZW5kU3RyZWFtOjpDb25maWcmIGNvbmZpZyA9CisgICAgICAgIGZha2VfY2FsbF8tPkdldFZpZGVv
U2VuZFN0cmVhbXMoKVswXS0+R2V0Q29uZmlnKCk7CisgICAgRVhQRUNUX0VRKGV4dG1hcF9hbGxv
d19taXhlZCwgY29uZmlnLnJ0cC5leHRtYXBfYWxsb3dfbWl4ZWQpOworICB9CisKKyAgdm9pZCBU
ZXN0RXh0bWFwQWxsb3dNaXhlZENhbGxlZShib29sIGV4dG1hcF9hbGxvd19taXhlZCkgeworICAg
IC8vIEZvciBhIGNhbGxlZSwgdGhlIGFuc3dlciB3aWxsIGJlIGFwcGxpZWQgaW4gc2V0IGxvY2Fs
IGRlc2NyaXB0aW9uCisgICAgLy8gd2hlcmUgU2V0RXh0bWFwQWxsb3dNaXhlZCgpIGFuZCBBZGRT
ZW5kU3RyZWFtKCkgYXJlIGNhbGxlZC4KKyAgICBjaGFubmVsXy0+U2V0RXh0bWFwQWxsb3dNaXhl
ZChleHRtYXBfYWxsb3dfbWl4ZWQpOworICAgIEVYUEVDVF9UUlVFKAorICAgICAgICBjaGFubmVs
Xy0+QWRkU2VuZFN0cmVhbShjcmlja2V0OjpTdHJlYW1QYXJhbXM6OkNyZWF0ZUxlZ2FjeShrU3Ny
YykpKTsKKyAgICBjb25zdCB3ZWJydGM6OlZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcg
PQorICAgICAgICBmYWtlX2NhbGxfLT5HZXRWaWRlb1NlbmRTdHJlYW1zKClbMF0tPkdldENvbmZp
ZygpOworICAgIEVYUEVDVF9FUShleHRtYXBfYWxsb3dfbWl4ZWQsIGNvbmZpZy5ydHAuZXh0bWFw
X2FsbG93X21peGVkKTsKKyAgfQorCiAgIHZvaWQgVGVzdFNldFNlbmRSdHBIZWFkZXJFeHRlbnNp
b25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBleHRfdXJpKSB7CiAgICAgLy8gRW5hYmxlIGV4dGVuc2lv
bi4KICAgICBjb25zdCBpbnQgaWQgPSAxOwpAQCAtMjM3Nyw2ICsyMzk1LDIwIEBAIFRFU1RfRihX
ZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBSZWN2U3RyZWFtTm9SdHgpIHsKICAgQVNTRVJUX0VRKDBV
LCByZWN2X3N0cmVhbS0+R2V0Q29uZmlnKCkucnRwLnJ0eF9zc3JjKTsKIH0KIAorLy8gVGVzdCBw
cm9wYWdhdGlvbiBvZiBleHRtYXAgYWxsb3cgbWl4ZWQgc2V0dGluZy4KK1RFU1RfRihXZWJSdGNW
aWRlb0NoYW5uZWxUZXN0LCBTZXRFeHRtYXBBbGxvd01peGVkQXNDYWxsZXIpIHsKKyAgVGVzdEV4
dG1hcEFsbG93TWl4ZWRDYWxsZXIoLypleHRtYXBfYWxsb3dfbWl4ZWQ9Ki90cnVlKTsKK30KK1RF
U1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBTZXRFeHRtYXBBbGxvd01peGVkRGlzYWJsZWRB
c0NhbGxlcikgeworICBUZXN0RXh0bWFwQWxsb3dNaXhlZENhbGxlcigvKmV4dG1hcF9hbGxvd19t
aXhlZD0qL2ZhbHNlKTsKK30KK1RFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBTZXRFeHRt
YXBBbGxvd01peGVkQXNDYWxsZWUpIHsKKyAgVGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZWUoLypl
eHRtYXBfYWxsb3dfbWl4ZWQ9Ki90cnVlKTsKK30KK1RFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxU
ZXN0LCBTZXRFeHRtYXBBbGxvd01peGVkRGlzYWJsZWRBc0NhbGxlZSkgeworICBUZXN0RXh0bWFw
QWxsb3dNaXhlZENhbGxlZSgvKmV4dG1hcF9hbGxvd19taXhlZD0qL2ZhbHNlKTsKK30KKwogVEVT
VF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIE5vSGVhZGVyRXh0ZXNpb25zQnlEZWZhdWx0KSB7
CiAgIEZha2VWaWRlb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtID0KICAgICAgIEFkZFNlbmRTdHJl
YW0oY3JpY2tldDo6U3RyZWFtUGFyYW1zOjpDcmVhdGVMZWdhY3koa1NzcmNzMVswXSkpOwpAQCAt
Mjg1Myw4ICsyODg1LDggQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIFNldE1lZGlh
Q29uZmlnU3VzcGVuZEJlbG93TWluQml0cmF0ZSkgewogICBNZWRpYUNvbmZpZyBtZWRpYV9jb25m
aWcgPSBHZXRNZWRpYUNvbmZpZygpOwogICBtZWRpYV9jb25maWcudmlkZW8uc3VzcGVuZF9iZWxv
d19taW5fYml0cmF0ZSA9IHRydWU7CiAKLSAgY2hhbm5lbF8ucmVzZXQoCi0gICAgICBlbmdpbmVf
LkNyZWF0ZUNoYW5uZWwoZmFrZV9jYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlv
bnMoKSkpOworICBjaGFubmVsXy5yZXNldChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAg
ICAgIGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywgVmlkZW9PcHRpb25zKCksIHdlYnJ0
Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgIGNoYW5uZWxfLT5PblJlYWR5VG9TZW5kKHRydWUpOwog
CiAgIGNoYW5uZWxfLT5TZXRTZW5kUGFyYW1ldGVycyhzZW5kX3BhcmFtZXRlcnNfKTsKQEAgLTI4
NjMsOCArMjg5NSw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBTZXRNZWRpYUNv
bmZpZ1N1c3BlbmRCZWxvd01pbkJpdHJhdGUpIHsKICAgRVhQRUNUX1RSVUUoc3RyZWFtLT5HZXRD
b25maWcoKS5zdXNwZW5kX2JlbG93X21pbl9iaXRyYXRlKTsKIAogICBtZWRpYV9jb25maWcudmlk
ZW8uc3VzcGVuZF9iZWxvd19taW5fYml0cmF0ZSA9IGZhbHNlOwotICBjaGFubmVsXy5yZXNldCgK
LSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChmYWtlX2NhbGxfLmdldCgpLCBtZWRpYV9jb25m
aWcsIFZpZGVvT3B0aW9ucygpKSk7CisgIGNoYW5uZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRlTWVk
aWFDaGFubmVsKAorICAgICAgZmFrZV9jYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09w
dGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKICAgY2hhbm5lbF8tPk9uUmVhZHlU
b1NlbmQodHJ1ZSk7CiAKICAgY2hhbm5lbF8tPlNldFNlbmRQYXJhbWV0ZXJzKHNlbmRfcGFyYW1l
dGVyc18pOwpAQCAtMzIwNCw4ICszMjM2LDggQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRl
c3QsIEFkYXB0c09uT3ZlcnVzZUFuZENoYW5nZVJlc29sdXRpb24pIHsKICAgcGFyYW1ldGVycy5j
b2RlY3MucHVzaF9iYWNrKGNvZGVjKTsKIAogICBNZWRpYUNvbmZpZyBtZWRpYV9jb25maWcgPSBH
ZXRNZWRpYUNvbmZpZygpOwotICBjaGFubmVsXy5yZXNldCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRl
Q2hhbm5lbChmYWtlX2NhbGxfLmdldCgpLCBtZWRpYV9jb25maWcsIFZpZGVvT3B0aW9ucygpKSk7
CisgIGNoYW5uZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgZmFr
ZV9jYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlw
dG9PcHRpb25zKCkpKTsKICAgY2hhbm5lbF8tPk9uUmVhZHlUb1NlbmQodHJ1ZSk7CiAgIEFTU0VS
VF9UUlVFKGNoYW5uZWxfLT5TZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSk7CiAKQEAgLTMy
ODUsOCArMzMxNyw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBQcmV2aW91c0Fk
YXB0YXRpb25Eb2VzTm90QXBwbHlUb1NjcmVlbnNoYXJlKSB7CiAKICAgTWVkaWFDb25maWcgbWVk
aWFfY29uZmlnID0gR2V0TWVkaWFDb25maWcoKTsKICAgbWVkaWFfY29uZmlnLnZpZGVvLmVuYWJs
ZV9jcHVfYWRhcHRhdGlvbiA9IHRydWU7Ci0gIGNoYW5uZWxfLnJlc2V0KAotICAgICAgZW5naW5l
Xy5DcmVhdGVDaGFubmVsKGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywgVmlkZW9PcHRp
b25zKCkpKTsKKyAgY2hhbm5lbF8ucmVzZXQoZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisg
ICAgICBmYWtlX2NhbGxfLmdldCgpLCBtZWRpYV9jb25maWcsIFZpZGVvT3B0aW9ucygpLCB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBjaGFubmVsXy0+T25SZWFkeVRvU2VuZCh0cnVlKTsK
ICAgQVNTRVJUX1RSVUUoY2hhbm5lbF8tPlNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpKTsK
IApAQCAtMzM1OSw4ICszMzkxLDggQEAgdm9pZCBXZWJSdGNWaWRlb0NoYW5uZWxUZXN0OjpUZXN0
RGVncmFkYXRpb25QcmVmZXJlbmNlKAogCiAgIE1lZGlhQ29uZmlnIG1lZGlhX2NvbmZpZyA9IEdl
dE1lZGlhQ29uZmlnKCk7CiAgIG1lZGlhX2NvbmZpZy52aWRlby5lbmFibGVfY3B1X2FkYXB0YXRp
b24gPSB0cnVlOwotICBjaGFubmVsXy5yZXNldCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5l
bChmYWtlX2NhbGxfLmdldCgpLCBtZWRpYV9jb25maWcsIFZpZGVvT3B0aW9ucygpKSk7CisgIGNo
YW5uZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgZmFrZV9jYWxs
Xy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRp
b25zKCkpKTsKICAgY2hhbm5lbF8tPk9uUmVhZHlUb1NlbmQodHJ1ZSk7CiAKICAgRVhQRUNUX1RS
VUUoY2hhbm5lbF8tPlNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpKTsKQEAgLTMzOTQsOCAr
MzQyNiw4IEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsVGVzdDo6VGVzdENwdUFkYXB0YXRpb24o
Ym9vbCBlbmFibGVfb3ZlcnVzZSwKICAgaWYgKGVuYWJsZV9vdmVydXNlKSB7CiAgICAgbWVkaWFf
Y29uZmlnLnZpZGVvLmVuYWJsZV9jcHVfYWRhcHRhdGlvbiA9IHRydWU7CiAgIH0KLSAgY2hhbm5l
bF8ucmVzZXQoCi0gICAgICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoZmFrZV9jYWxsXy5nZXQoKSwg
bWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMoKSkpOworICBjaGFubmVsXy5yZXNldChlbmdpbmVf
LkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZp
ZywgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgIGNoYW5uZWxf
LT5PblJlYWR5VG9TZW5kKHRydWUpOwogCiAgIEVYUEVDVF9UUlVFKGNoYW5uZWxfLT5TZXRTZW5k
UGFyYW1ldGVycyhwYXJhbWV0ZXJzKSk7CkBAIC00NTc1LDMxICs0NjA3LDU1IEBAIFRFU1RfRihX
ZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBUZXN0U2V0RHNjcE9wdGlvbnMpIHsKICAgICAgIG5ldyBj
cmlja2V0OjpGYWtlTmV0d29ya0ludGVyZmFjZSk7CiAgIE1lZGlhQ29uZmlnIGNvbmZpZzsKICAg
c3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvQ2hhbm5lbD4gY2hhbm5lbDsKKyAg
d2VicnRjOjpSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKLSAgY2hhbm5lbC5yZXNldChzdGF0
aWNfY2FzdDxjcmlja2V0OjpXZWJSdGNWaWRlb0NoYW5uZWwqPigKLSAgICAgIGVuZ2luZV8uQ3Jl
YXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgY29uZmlnLCBWaWRlb09wdGlvbnMoKSkpKTsKLSAgY2hh
bm5lbC0+U2V0SW50ZXJmYWNlKG5ldHdvcmtfaW50ZXJmYWNlLmdldCgpKTsKKyAgY2hhbm5lbC5y
ZXNldCgKKyAgICAgIHN0YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvQ2hhbm5lbCo+KGVu
Z2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgICAgIGNhbGxfLmdldCgpLCBjb25maWcs
IFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpKTsKKyAgY2hhbm5lbC0+
U2V0SW50ZXJmYWNlKG5ldHdvcmtfaW50ZXJmYWNlLmdldCgpLCAvKm1lZGlhX3RyYW5zcG9ydD0q
L251bGxwdHIpOwogICAvLyBEZWZhdWx0IHZhbHVlIHdoZW4gRFNDUCBpcyBkaXNhYmxlZCBzaG91
bGQgYmUgRFNDUF9ERUZBVUxULgogICBFWFBFQ1RfRVEocnRjOjpEU0NQX0RFRkFVTFQsIG5ldHdv
cmtfaW50ZXJmYWNlLT5kc2NwKCkpOwogCisgIC8vIERlZmF1bHQgdmFsdWUgd2hlbiBEU0NQIGlz
IGVuYWJsZWQgaXMgYWxzbyBEU0NQX0RFRkFVTFQsIHVudGlsIGl0IGlzIHNldAorICAvLyB0aHJv
dWdoIHJ0cCBwYXJhbWV0ZXJzLgogICBjb25maWcuZW5hYmxlX2RzY3AgPSB0cnVlOwotICBjaGFu
bmVsLnJlc2V0KHN0YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvQ2hhbm5lbCo+KAotICAg
ICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGNhbGxfLmdldCgpLCBjb25maWcsIFZpZGVvT3B0aW9u
cygpKSkpOwotICBjaGFubmVsLT5TZXRJbnRlcmZhY2UobmV0d29ya19pbnRlcmZhY2UuZ2V0KCkp
OworICBjaGFubmVsLnJlc2V0KAorICAgICAgc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRjVmlk
ZW9DaGFubmVsKj4oZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICAgICAgY2FsbF8u
Z2V0KCksIGNvbmZpZywgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSkp
OworICBjaGFubmVsLT5TZXRJbnRlcmZhY2UobmV0d29ya19pbnRlcmZhY2UuZ2V0KCksIC8qbWVk
aWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CisgIEVYUEVDVF9FUShydGM6OkRTQ1BfREVGQVVMVCwg
bmV0d29ya19pbnRlcmZhY2UtPmRzY3AoKSk7CisKKyAgLy8gQ3JlYXRlIGEgc2VuZCBzdHJlYW0g
dG8gY29uZmlndXJlCisgIEVYUEVDVF9UUlVFKGNoYW5uZWwtPkFkZFNlbmRTdHJlYW0oU3RyZWFt
UGFyYW1zOjpDcmVhdGVMZWdhY3koa1NzcmMpKSk7CisgIHBhcmFtZXRlcnMgPSBjaGFubmVsLT5H
ZXRSdHBTZW5kUGFyYW1ldGVycyhrU3NyYyk7CisgIEFTU0VSVF9GQUxTRShwYXJhbWV0ZXJzLmVu
Y29kaW5ncy5lbXB0eSgpKTsKKworICAvLyBWYXJpb3VzIHByaW9yaXRpZXMgbWFwIHRvIHZhcmlv
dXMgZHNjcCB2YWx1ZXMuCisgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdvcmtfcHJpb3Jp
dHkgPSA0LjA7CisgIEFTU0VSVF9UUlVFKGNoYW5uZWwtPlNldFJ0cFNlbmRQYXJhbWV0ZXJzKGtT
c3JjLCBwYXJhbWV0ZXJzKS5vaygpKTsKICAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9BRjQxLCBuZXR3
b3JrX2ludGVyZmFjZS0+ZHNjcCgpKTsKKyAgcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubmV0d29y
a19wcmlvcml0eSA9IDAuNTsKKyAgQVNTRVJUX1RSVUUoY2hhbm5lbC0+U2V0UnRwU2VuZFBhcmFt
ZXRlcnMoa1NzcmMsIHBhcmFtZXRlcnMpLm9rKCkpOworICBFWFBFQ1RfRVEocnRjOjpEU0NQX0NT
MSwgbmV0d29ya19pbnRlcmZhY2UtPmRzY3AoKSk7CisKKyAgLy8gQSBiYWQgcHJpb3JpdHkgZG9l
cyBub3QgY2hhbmdlIHRoZSBkc2NwIHZhbHVlLgorICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5u
ZXR3b3JrX3ByaW9yaXR5ID0gMC4wOworICBBU1NFUlRfRkFMU0UoY2hhbm5lbC0+U2V0UnRwU2Vu
ZFBhcmFtZXRlcnMoa1NzcmMsIHBhcmFtZXRlcnMpLm9rKCkpOworICBFWFBFQ1RfRVEocnRjOjpE
U0NQX0NTMSwgbmV0d29ya19pbnRlcmZhY2UtPmRzY3AoKSk7CiAKICAgLy8gUGFja2V0cyBzaG91
bGQgYWxzbyBzZWxmLWlkZW50aWZ5IHRoZWlyIGRzY3AgaW4gUGFja2V0T3B0aW9ucy4KICAgY29u
c3QgdWludDhfdCBrRGF0YVsxMF0gPSB7MH07CiAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PHdl
YnJ0Yzo6VHJhbnNwb3J0Kj4oY2hhbm5lbC5nZXQoKSkKICAgICAgICAgICAgICAgICAgIC0+U2Vu
ZFJ0Y3Aoa0RhdGEsIHNpemVvZihrRGF0YSkpKTsKLSAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9BRjQx
LCBuZXR3b3JrX2ludGVyZmFjZS0+b3B0aW9ucygpLmRzY3ApOworICBFWFBFQ1RfRVEocnRjOjpE
U0NQX0NTMSwgbmV0d29ya19pbnRlcmZhY2UtPm9wdGlvbnMoKS5kc2NwKTsKIAogICAvLyBWZXJp
ZnkgdGhhdCBzZXR0aW5nIHRoZSBvcHRpb24gdG8gZmFsc2UgcmVzZXRzIHRoZQogICAvLyBEaWZm
U2VydkNvZGVQb2ludC4KICAgY29uZmlnLmVuYWJsZV9kc2NwID0gZmFsc2U7Ci0gIGNoYW5uZWwu
cmVzZXQoc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRjVmlkZW9DaGFubmVsKj4oCi0gICAgICBl
bmdpbmVfLkNyZWF0ZUNoYW5uZWwoY2FsbF8uZ2V0KCksIGNvbmZpZywgVmlkZW9PcHRpb25zKCkp
KSk7Ci0gIGNoYW5uZWwtPlNldEludGVyZmFjZShuZXR3b3JrX2ludGVyZmFjZS5nZXQoKSk7Cisg
IGNoYW5uZWwucmVzZXQoCisgICAgICBzdGF0aWNfY2FzdDxjcmlja2V0OjpXZWJSdGNWaWRlb0No
YW5uZWwqPihlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgICAgICBjYWxsXy5nZXQo
KSwgY29uZmlnLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKSk7Cisg
IGNoYW5uZWwtPlNldEludGVyZmFjZShuZXR3b3JrX2ludGVyZmFjZS5nZXQoKSwgLyptZWRpYV90
cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9ERUZBVUxULCBuZXR3
b3JrX2ludGVyZmFjZS0+ZHNjcCgpKTsKIH0KIApAQCAtNDk1Nyw4ICs1MDEzLDcgQEAgVEVTVF9G
KFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIERlZmF1bHRSZWNlaXZlU3RyZWFtUmVjb25maWd1cmVz
VG9Vc2VSdHgpIHsKICAgbWVtc2V0KGRhdGEsIDAsIHNpemVvZihkYXRhKSk7CiAgIHJ0Yzo6U2V0
QkUzMigmZGF0YVs4XSwgc3NyY3NbMF0pOwogICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tl
dChkYXRhLCBrRGF0YUxlbmd0aCk7Ci0gIHJ0Yzo6UGFja2V0VGltZSBwYWNrZXRfdGltZTsKLSAg
Y2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcGFja2V0X3RpbWUpOworICBjaGFu
bmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7
CiAKICAgQVNTRVJUX0VRKDF1LCBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVTdHJlYW1zKCku
c2l6ZSgpKQogICAgICAgPDwgIk5vIGRlZmF1bHQgcmVjZWl2ZSBzdHJlYW0gY3JlYXRlZC4iOwpA
QCAtNTExNiw4ICs1MTcxLDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIFJlY3ZV
bnNpZ25hbGVkU3NyY1dpdGhTaWduYWxlZFN0cmVhbUlkKSB7CiAgIG1lbXNldChkYXRhLCAwLCBz
aXplb2YoZGF0YSkpOwogICBydGM6OlNldEJFMzIoJmRhdGFbOF0sIGtJbmNvbWluZ1Vuc2lnbmFs
bGVkU3NyYyk7CiAgIHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgcGFja2V0KGRhdGEsIGtEYXRhTGVu
Z3RoKTsKLSAgcnRjOjpQYWNrZXRUaW1lIHBhY2tldF90aW1lOwotICBjaGFubmVsXy0+T25QYWNr
ZXRSZWNlaXZlZCgmcGFja2V0LCBwYWNrZXRfdGltZSk7CisgIGNoYW5uZWxfLT5PblBhY2tldFJl
Y2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKIAogICAvLyBUaGUgc3Ry
ZWFtIHNob3VsZCBub3cgYmUgY3JlYXRlZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzeW5jIGxhYmVs
LgogICBFWFBFQ1RfRVEoMXUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKS5z
aXplKCkpOwpAQCAtNTEzMCw3ICs1MTg0LDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRl
c3QsIFJlY3ZVbnNpZ25hbGVkU3NyY1dpdGhTaWduYWxlZFN0cmVhbUlkKSB7CiAgIEFTU0VSVF9U
UlVFKGNoYW5uZWxfLT5SZW1vdmVSZWN2U3RyZWFtKGtJbmNvbWluZ1Vuc2lnbmFsbGVkU3NyYykp
OwogICBFWFBFQ1RfRVEoMHUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKS5z
aXplKCkpOwogCi0gIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90
aW1lKTsKKyAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3Rp
bWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfRVEoMXUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2
ZVN0cmVhbXMoKS5zaXplKCkpOwogICBFWFBFQ1RfVFJVRSgKICAgICAgIGZha2VfY2FsbF8tPkdl
dFZpZGVvUmVjZWl2ZVN0cmVhbXMoKVswXS0+R2V0Q29uZmlnKCkuc3luY19ncm91cC5lbXB0eSgp
KTsKQEAgLTUxNTYsOCArNTIxMCw3IEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsVGVzdDo6VGVz
dFJlY2VpdmVVbnNpZ25hbGVkU3NyY1BhY2tldCgKICAgcnRjOjpTZXQ4KGRhdGEsIDEsIHBheWxv
YWRfdHlwZSk7CiAgIHJ0Yzo6U2V0QkUzMigmZGF0YVs4XSwga0luY29taW5nVW5zaWduYWxsZWRT
c3JjKTsKICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQoZGF0YSwga0RhdGFMZW5ndGgp
OwotICBydGM6OlBhY2tldFRpbWUgcGFja2V0X3RpbWU7Ci0gIGNoYW5uZWxfLT5PblBhY2tldFJl
Y2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2
ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogCiAgIGlmIChleHBlY3RfY3Jl
YXRlZF9yZWNlaXZlX3N0cmVhbSkgewogICAgIEVYUEVDVF9FUSgxdSwgZmFrZV9jYWxsXy0+R2V0
VmlkZW9SZWNlaXZlU3RyZWFtcygpLnNpemUoKSkKQEAgLTUxNzAsNiArNTIyMywxOCBAQCB2b2lk
IFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3Q6OlRlc3RSZWNlaXZlVW5zaWduYWxlZFNzcmNQYWNrZXQo
CiAgIH0KIH0KIAorY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsRGlzY2FyZFVua25vd25Tc3JjVGVz
dCA6IHB1YmxpYyBXZWJSdGNWaWRlb0NoYW5uZWxUZXN0IHsKKyBwdWJsaWM6CisgIFdlYlJ0Y1Zp
ZGVvQ2hhbm5lbERpc2NhcmRVbmtub3duU3NyY1Rlc3QoKQorICAgICAgOiBXZWJSdGNWaWRlb0No
YW5uZWxUZXN0KAorICAgICAgICAgICAgIldlYlJUQy1WaWRlby1EaXNjYXJkUGFja2V0c1dpdGhV
bmtub3duU3NyYy9FbmFibGVkLyIpIHt9Cit9OworCitURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVs
RGlzY2FyZFVua25vd25Tc3JjVGVzdCwgTm9VbnNpZ25hbGxlZFN0cmVhbUNyZWF0ZWQpIHsKKyAg
VGVzdFJlY2VpdmVVbnNpZ25hbGVkU3NyY1BhY2tldChHZXRFbmdpbmVDb2RlYygiVlA4IikuaWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogZXhwZWN0X2NyZWF0
ZWRfcmVjZWl2ZV9zdHJlYW0gKi8pOworfQorCiBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVz
dCwgVnA4UGFja2V0Q3JlYXRlc1Vuc2lnbmFsbGVkU3RyZWFtKSB7CiAgIFRlc3RSZWNlaXZlVW5z
aWduYWxlZFNzcmNQYWNrZXQoR2V0RW5naW5lQ29kZWMoIlZQOCIpLmlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRydWUgLyogZXhwZWN0X2NyZWF0ZWRfcmVjZWl2ZV9zdHJl
YW0gKi8pOwpAQCAtNTIzMiw4ICs1Mjk3LDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRl
c3QsIFJlY2VpdmVEaWZmZXJlbnRVbnNpZ25hbGVkU3NyYykgewogICBydHBIZWFkZXIuc3NyYyA9
IGtJbmNvbWluZ1Vuc2lnbmFsbGVkU3NyYyArIDE7CiAgIGNyaWNrZXQ6OlNldFJ0cEhlYWRlcihk
YXRhLCBzaXplb2YoZGF0YSksIHJ0cEhlYWRlcik7CiAgIHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIg
cGFja2V0KGRhdGEsIHNpemVvZihkYXRhKSk7Ci0gIHJ0Yzo6UGFja2V0VGltZSBwYWNrZXRfdGlt
ZTsKLSAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcGFja2V0X3RpbWUpOwor
ICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCAvKiBwYWNrZXRfdGltZV91cyAq
LyAtMSk7CiAgIC8vIFZQOCBwYWNrZXQgc2hvdWxkIGNyZWF0ZSBkZWZhdWx0IHJlY2VpdmUgc3Ry
ZWFtLgogICBBU1NFUlRfRVEoMXUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMo
KS5zaXplKCkpOwogICBGYWtlVmlkZW9SZWNlaXZlU3RyZWFtKiByZWN2X3N0cmVhbSA9IGZha2Vf
Y2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKVswXTsKQEAgLTUyNDksNyArNTMxMyw3IEBA
IFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBSZWNlaXZlRGlmZmVyZW50VW5zaWduYWxl
ZFNzcmMpIHsKICAgcnRwSGVhZGVyLnNzcmMgPSBrSW5jb21pbmdVbnNpZ25hbGxlZFNzcmMgKyAy
OwogICBjcmlja2V0OjpTZXRSdHBIZWFkZXIoZGF0YSwgc2l6ZW9mKGRhdGEpLCBydHBIZWFkZXIp
OwogICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldDIoZGF0YSwgc2l6ZW9mKGRhdGEpKTsK
LSAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldDIsIHBhY2tldF90aW1lKTsKKyAg
Y2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldDIsIC8qIHBhY2tldF90aW1lX3VzICov
IC0xKTsKICAgLy8gVlA5IHBhY2tldCBzaG91bGQgcmVwbGFjZSB0aGUgZGVmYXVsdCByZWNlaXZl
IFNTUkMuCiAgIEFTU0VSVF9FUSgxdSwgZmFrZV9jYWxsXy0+R2V0VmlkZW9SZWNlaXZlU3RyZWFt
cygpLnNpemUoKSk7CiAgIHJlY3Zfc3RyZWFtID0gZmFrZV9jYWxsXy0+R2V0VmlkZW9SZWNlaXZl
U3RyZWFtcygpWzBdOwpAQCAtNTI2Niw3ICs1MzMwLDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hh
bm5lbFRlc3QsIFJlY2VpdmVEaWZmZXJlbnRVbnNpZ25hbGVkU3NyYykgewogICBydHBIZWFkZXIu
c3NyYyA9IGtJbmNvbWluZ1Vuc2lnbmFsbGVkU3NyYyArIDM7CiAgIGNyaWNrZXQ6OlNldFJ0cEhl
YWRlcihkYXRhLCBzaXplb2YoZGF0YSksIHJ0cEhlYWRlcik7CiAgIHJ0Yzo6Q29weU9uV3JpdGVC
dWZmZXIgcGFja2V0MyhkYXRhLCBzaXplb2YoZGF0YSkpOwotICBjaGFubmVsXy0+T25QYWNrZXRS
ZWNlaXZlZCgmcGFja2V0MywgcGFja2V0X3RpbWUpOworICBjaGFubmVsXy0+T25QYWNrZXRSZWNl
aXZlZCgmcGFja2V0MywgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICAvLyBIMjY0IHBhY2tl
dCBzaG91bGQgcmVwbGFjZSB0aGUgZGVmYXVsdCByZWNlaXZlIFNTUkMuCiAgIEFTU0VSVF9FUSgx
dSwgZmFrZV9jYWxsXy0+R2V0VmlkZW9SZWNlaXZlU3RyZWFtcygpLnNpemUoKSk7CiAgIHJlY3Zf
c3RyZWFtID0gZmFrZV9jYWxsXy0+R2V0VmlkZW9SZWNlaXZlU3RyZWFtcygpWzBdOwpAQCAtNTMw
MCw4ICs1MzY0LDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsCiAgIHJ0cF9oZWFk
ZXIuc3NyYyA9IGtTc3JjczNbMF07CiAgIGNyaWNrZXQ6OlNldFJ0cEhlYWRlcihkYXRhLCBzaXpl
b2YoZGF0YSksIHJ0cF9oZWFkZXIpOwogICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldChk
YXRhLCBzaXplb2YoZGF0YSkpOwotICBydGM6OlBhY2tldFRpbWUgcGFja2V0X3RpbWU7Ci0gIGNo
YW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgY2hhbm5l
bF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwog
ICAvLyBEZWZhdWx0IHJlY2VpdmUgc3RyZWFtIHNob3VsZCBiZSBjcmVhdGVkLgogICBBU1NFUlRf
RVEoMXUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKS5zaXplKCkpOwogICBG
YWtlVmlkZW9SZWNlaXZlU3RyZWFtKiByZWN2X3N0cmVhbTAgPQpAQCAtNTMxOSw3ICs1MzgyLDcg
QEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsCiAgIHJ0cF9oZWFkZXIuc3NyYyA9IGtT
c3JjczNbMV07CiAgIGNyaWNrZXQ6OlNldFJ0cEhlYWRlcihkYXRhLCBzaXplb2YoZGF0YSksIHJ0
cF9oZWFkZXIpOwogICBwYWNrZXQuU2V0RGF0YShkYXRhLCBzaXplb2YoZGF0YSkpOwotICBjaGFu
bmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBwYWNrZXRfdGltZSk7CisgIGNoYW5uZWxf
LT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAg
Ly8gTmV3IGRlZmF1bHQgcmVjZWl2ZSBzdHJlYW0gc2hvdWxkIGJlIGNyZWF0ZWQsIGJ1dCBvbGQg
c3RyZWFtIHNob3VsZCByZW1haW4uCiAgIEFTU0VSVF9FUSgydSwgZmFrZV9jYWxsXy0+R2V0Vmlk
ZW9SZWNlaXZlU3RyZWFtcygpLnNpemUoKSk7CiAgIEVYUEVDVF9FUShyZWN2X3N0cmVhbTAsIGZh
a2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKVswXSk7CkBAIC01NjQ2LDYgKzU3MDks
MjggQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIFNldFJ0cFNlbmRQYXJhbWV0ZXJz
UHJpb3JpdHlTaW11bGNhc3RTdHJlYW1zKSB7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWxfLT5TZXRW
aWRlb1NlbmQocHJpbWFyeV9zc3JjLCBudWxscHRyLCBudWxscHRyKSk7CiB9CiAKKy8vIFJUQ1J0
cEVuY29kaW5nUGFyYW1ldGVycy5uZXR3b3JrX3ByaW9yaXR5IG11c3QgYmUgb25lIG9mIGEgZmV3
IHZhbHVlcworLy8gZGVyaXZlZCBmcm9tIHRoZSBkZWZhdWx0IHByaW9yaXR5LCBjb3JyZXNwb25k
aW5nIHRvIHZlcnktbG93LCBsb3csIG1lZGl1bSwKKy8vIG9yIGhpZ2guCitURVNUX0YoV2ViUnRj
VmlkZW9DaGFubmVsVGVzdCwgU2V0UnRwU2VuZFBhcmFtZXRlcnNJbnZhbGlkTmV0d29ya1ByaW9y
aXR5KSB7CisgIEFkZFNlbmRTdHJlYW0oKTsKKyAgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnMgPSBjaGFubmVsXy0+R2V0UnRwU2VuZFBhcmFtZXRlcnMobGFzdF9zc3JjXyk7CisgIEVY
UEVDVF9FUSgxVUwsIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnNpemUoKSk7CisgIEVYUEVDVF9FUSh3
ZWJydGM6OmtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5LAorICAgICAgICAgICAgcGFyYW1ldGVycy5l
bmNvZGluZ3NbMF0ubmV0d29ya19wcmlvcml0eSk7CisKKyAgZG91YmxlIGdvb2RfdmFsdWVzW10g
PSB7MC41LCAxLjAsIDIuMCwgNC4wfTsKKyAgZG91YmxlIGJhZF92YWx1ZXNbXSA9IHstMS4wLCAw
LjAsIDAuNDksIDAuNTEsIDEuMSwgMy45OSwgNC4xLCA1LjB9OworICBmb3IgKGF1dG8gaXQgOiBn
b29kX3ZhbHVlcykgeworICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdvcmtfcHJpb3Jp
dHkgPSBpdDsKKyAgICBFWFBFQ1RfVFJVRShjaGFubmVsXy0+U2V0UnRwU2VuZFBhcmFtZXRlcnMo
bGFzdF9zc3JjXywgcGFyYW1ldGVycykub2soKSk7CisgIH0KKyAgZm9yIChhdXRvIGl0IDogYmFk
X3ZhbHVlcykgeworICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdvcmtfcHJpb3JpdHkg
PSBpdDsKKyAgICBFWFBFQ1RfRkFMU0UoY2hhbm5lbF8tPlNldFJ0cFNlbmRQYXJhbWV0ZXJzKGxh
c3Rfc3NyY18sIHBhcmFtZXRlcnMpLm9rKCkpOworICB9Cit9CisKIFRFU1RfRihXZWJSdGNWaWRl
b0NoYW5uZWxUZXN0LCBHZXRBbmRTZXRSdHBTZW5kUGFyYW1ldGVyc01heEZyYW1lcmF0ZSkgewog
ICBjb25zdCBzaXplX3Qga051bVNpbXVsY2FzdFN0cmVhbXMgPSAzOwogICBTZXRVcFNpbXVsY2Fz
dCh0cnVlLCBmYWxzZSk7CkBAIC02NjM0LDggKzY3MTksNyBAQCBURVNUX0YoV2ViUnRjVmlkZW9D
aGFubmVsVGVzdCwgR2V0UnRwUmVjZWl2ZVBhcmFtZXRlcnNXaXRoVW5zaWduYWxlZFNzcmMpIHsK
ICAgcnRwSGVhZGVyLnNzcmMgPSBrSW5jb21pbmdVbnNpZ25hbGxlZFNzcmM7CiAgIGNyaWNrZXQ6
OlNldFJ0cEhlYWRlcihkYXRhLCBzaXplb2YoZGF0YSksIHJ0cEhlYWRlcik7CiAgIHJ0Yzo6Q29w
eU9uV3JpdGVCdWZmZXIgcGFja2V0KGRhdGEsIHNpemVvZihkYXRhKSk7Ci0gIHJ0Yzo6UGFja2V0
VGltZSBwYWNrZXRfdGltZTsKLSAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwg
cGFja2V0X3RpbWUpOworICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCAvKiBw
YWNrZXRfdGltZV91cyAqLyAtMSk7CiAKICAgLy8gVGhlIHxzc3JjfCBtZW1iZXIgc2hvdWxkIHN0
aWxsIGJlIHVuc2V0LgogICBydHBfcGFyYW1ldGVycyA9IGNoYW5uZWxfLT5HZXRSdHBSZWNlaXZl
UGFyYW1ldGVycygwKTsKQEAgLTY2OTksMTYgKzY3ODMsMjEgQEAgY2xhc3MgV2ViUnRjVmlkZW9D
aGFubmVsU2ltdWxjYXN0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICAgIDogZmFr
ZV9jYWxsXygpLAogICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfKG5ldyBjcmlja2V0OjpGYWtlV2Vi
UnRjVmlkZW9FbmNvZGVyRmFjdG9yeSksCiAgICAgICAgIGRlY29kZXJfZmFjdG9yeV8obmV3IGNy
aWNrZXQ6OkZha2VXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KSwKKyAgICAgICAgbW9ja19yYXRl
X2FsbG9jYXRvcl9mYWN0b3J5XygKKyAgICAgICAgICAgIG5ldyB3ZWJydGM6Ok1vY2tWaWRlb0Jp
dHJhdGVBbGxvY2F0b3JGYWN0b3J5KSwKICAgICAgICAgZW5naW5lXyhzdGQ6OnVuaXF1ZV9wdHI8
Y3JpY2tldDo6RmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3Rvcnk+KAogICAgICAgICAgICAgICAg
ICAgICBlbmNvZGVyX2ZhY3RvcnlfKSwKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Y3JpY2tldDo6RmFrZVdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnk+KAotICAgICAgICAgICAgICAg
ICAgICBkZWNvZGVyX2ZhY3RvcnlfKSksCisgICAgICAgICAgICAgICAgICAgIGRlY29kZXJfZmFj
dG9yeV8pLAorICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0
cmF0ZUFsbG9jYXRvckZhY3Rvcnk+KAorICAgICAgICAgICAgICAgICAgICBtb2NrX3JhdGVfYWxs
b2NhdG9yX2ZhY3RvcnlfKSksCiAgICAgICAgIGxhc3Rfc3NyY18oMCkge30KIAogICB2b2lkIFNl
dFVwKCkgb3ZlcnJpZGUgewogICAgIGVuY29kZXJfZmFjdG9yeV8tPkFkZFN1cHBvcnRlZFZpZGVv
Q29kZWNUeXBlKCJWUDgiKTsKLSAgICBjaGFubmVsXy5yZXNldCgKLSAgICAgICAgZW5naW5lXy5D
cmVhdGVDaGFubmVsKCZmYWtlX2NhbGxfLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMo
KSkpOworICAgIGNoYW5uZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKCZmYWtl
X2NhbGxfLCBHZXRNZWRpYUNvbmZpZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZpZGVvT3B0aW9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgICAgY2hh
bm5lbF8tPk9uUmVhZHlUb1NlbmQodHJ1ZSk7CiAgICAgbGFzdF9zc3JjXyA9IDEyMzsKICAgfQpA
QCAtNjg1OCw2ICs2OTQ3LDcgQEAgY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsU2ltdWxjYXN0VGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgRmFrZUNhbGwgZmFrZV9jYWxsXzsKICAgY3Jp
Y2tldDo6RmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIGVuY29kZXJfZmFjdG9yeV87CiAg
IGNyaWNrZXQ6OkZha2VXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiBkZWNvZGVyX2ZhY3Rvcnlf
OworICB3ZWJydGM6Ok1vY2tWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KiBtb2NrX3JhdGVf
YWxsb2NhdG9yX2ZhY3RvcnlfOwogICBXZWJSdGNWaWRlb0VuZ2luZSBlbmdpbmVfOwogICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IGNoYW5uZWxfOwogICB1aW50MzJfdCBsYXN0
X3NzcmNfOwpAQCAtNjkwNSwxNiArNjk5NSwyMCBAQCBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVs
U2ltdWxjYXN0VGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCi0v
LyBUaGUgZmFrZSBjbG9jayBuZWVkcyB0byBiZSBpbml0aWFsaXplIGJlZm9yZSB0aGUgY2FsbC4K
LS8vIFNvIGRlZmVyIGNyZWF0aW5nIGNhbGwgaW4gYmFzZSBjbGFzcy4KLWNsYXNzIFdlYlJ0Y1Zp
ZGVvQ2hhbm5lbFRlc3RXaXRoQ2xvY2sgOiBwdWJsaWMgV2ViUnRjVmlkZW9DaGFubmVsQmFzZVRl
c3QgeworY2xhc3MgV2ViUnRjVmlkZW9GYWtlQ2xvY2sgewogIHB1YmxpYzoKLSAgV2ViUnRjVmlk
ZW9DaGFubmVsVGVzdFdpdGhDbG9jaygpIHsKKyAgV2ViUnRjVmlkZW9GYWtlQ2xvY2soKSB7CiAg
ICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWUod2VicnRjOjpUaW1lRGVsdGE6Om1zKDEpKTsgIC8v
IGF2b2lkIHRpbWU9MAogICB9CiAgIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGZha2VfY2xvY2tfOwog
fTsKIAorLy8gVGhlIGZha2UgY2xvY2sgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHRo
ZSBjYWxsLCBhbmQgbm90CisvLyBkZXN0cm95ZWQgdW50aWwgYWZ0ZXIgYWxsIHRocmVhZHMgc3Bh
d25lZCBieSB0aGUgdGVzdCBoYXZlIGJlZW4gc3RvcHBlZC4KKy8vIFRoaXMgbWl4aW4gZW5zdXJl
cyB0aGF0LgorY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsVGVzdFdpdGhDbG9jayA6IHB1YmxpYyBX
ZWJSdGNWaWRlb0Zha2VDbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgV2ViUnRjVmlkZW9DaGFubmVsQmFzZVRlc3Qge307CisKIFRFU1RfRihXZWJS
dGNWaWRlb0NoYW5uZWxUZXN0V2l0aENsb2NrLCBHZXRTb3VyY2VzKSB7CiAgIHVpbnQ4X3QgZGF0
YTFbXSA9IHsweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAogICAgICAgICAgICAg
ICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
d2VicnRjdm9pY2VlbmdpbmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9pY2VlbmdpbmUuY2MKaW5kZXggOGFlN2I5OTFl
ODA1MzkyZGM5MjU0YWVhODRiMTM4NjE4NmI3M2ZmOS4uMTY2MGJkODZlMTE0YWFmYmNlYzE2NDdk
NjM4OGI5MTVhYWJmNGRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5lLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJy
dGN2b2ljZWVuZ2luZS5jYwpAQCAtMTksOCArMTksMTAgQEAKICNpbmNsdWRlIDx1dGlsaXR5Pgog
I2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9pZC5oIgogI2luY2x1ZGUg
ImFwaS9jYWxsL2F1ZGlvX3NpbmsuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2lu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVkaW9zb3VyY2UuaCIKICNpbmNsdWRl
ICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9zdHJl
YW1wYXJhbXMuaCIKQEAgLTM4LDEwICs0MCw4IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVy
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9y
YWNlX2NoZWNrZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmdzL2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
c3RyaW5ndXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9iYXNlNjQvYmFz
ZTY0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdHJhY2VfZXZlbnQuaCIKICNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgpAQCAtNTgsMTEgKzU4LDYgQEAgY29u
c3RleHByIGludCBrTmFja1J0cEhpc3RvcnlNcyA9IDUwMDA7CiBjb25zdCBpbnQga09wdXNNaW5C
aXRyYXRlQnBzID0gNjAwMDsKIGNvbnN0IGludCBrT3B1c0JpdHJhdGVGYkJwcyA9IDMyMDAwOwog
Ci0vLyBEZWZhdWx0IGF1ZGlvIGRzY3AgdmFsdWUuCi0vLyBTZWUgaHR0cDovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvcmZjMjQ3NCBmb3IgZGV0YWlscy4KLS8vIFNlZSBhbHNvIGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL2RyYWZ0LWplbm5pbmdzLXJ0Y3dlYi1xb3MtMDAKLWNvbnN0IHJ0Yzo6RGlm
ZlNlcnZDb2RlUG9pbnQga0F1ZGlvRHNjcFZhbHVlID0gcnRjOjpEU0NQX0VGOwotCiBjb25zdCBp
bnQga01pblRlbGVwaG9uZUV2ZW50Q29kZSA9IDA7ICAvLyBSRkM0NzMzIChTZWN0aW9uIDIuMy4x
KQogY29uc3QgaW50IGtNYXhUZWxlcGhvbmVFdmVudENvZGUgPSAyNTU7CiAKQEAgLTgzLDEyICs3
OCwxMiBAQCBjbGFzcyBQcm94eVNpbmsgOiBwdWJsaWMgd2VicnRjOjpBdWRpb1NpbmtJbnRlcmZh
Y2UgewogCiBib29sIFZhbGlkYXRlU3RyZWFtUGFyYW1zKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3Ap
IHsKICAgaWYgKHNwLnNzcmNzLmVtcHR5KCkpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAi
Tm8gU1NSQ3MgaW4gc3RyZWFtIHBhcmFtZXRlcnM6ICIgPDwgc3AuVG9TdHJpbmcoKTsKKyAgICBS
VENfRExPRyhMU19FUlJPUikgPDwgIk5vIFNTUkNzIGluIHN0cmVhbSBwYXJhbWV0ZXJzOiAiIDw8
IHNwLlRvU3RyaW5nKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIGlmIChzcC5zc3Jjcy5z
aXplKCkgPiAxKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIk11bHRpcGxlIFNTUkNzIGlu
IHN0cmVhbSBwYXJhbWV0ZXJzOiAiCi0gICAgICAgICAgICAgICAgICAgICAgPDwgc3AuVG9TdHJp
bmcoKTsKKyAgICBSVENfRExPRyhMU19FUlJPUikgPDwgIk11bHRpcGxlIFNTUkNzIGluIHN0cmVh
bSBwYXJhbWV0ZXJzOiAiCisgICAgICAgICAgICAgICAgICAgICAgIDw8IHNwLlRvU3RyaW5nKCk7
CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIHJldHVybiB0cnVlOwpAQCAtMTEwLDcgKzEwNSw3
IEBAIHN0ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IEF1ZGlvQ29kZWMmIGNvZGVjKSB7CiB9CiAK
IGJvb2wgSXNDb2RlYyhjb25zdCBBdWRpb0NvZGVjJiBjb2RlYywgY29uc3QgY2hhciogcmVmX25h
bWUpIHsKLSAgcmV0dXJuIChfc3RyaWNtcChjb2RlYy5uYW1lLmNfc3RyKCksIHJlZl9uYW1lKSA9
PSAwKTsKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwgcmVmX25h
bWUpOwogfQogCiBib29sIEZpbmRDb2RlYyhjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYg
Y29kZWNzLApAQCAtMjg0LDYgKzI3OSw3IEBAIHZvaWQgV2ViUnRjVm9pY2VFbmdpbmU6OkluaXQo
KSB7CiAgICAgb3B0aW9ucy5zdGVyZW9fc3dhcHBpbmcgPSBmYWxzZTsKICAgICBvcHRpb25zLmF1
ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMgPSA1MDsKICAgICBvcHRpb25zLmF1ZGlvX2pp
dHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlID0gZmFsc2U7CisgICAgb3B0aW9ucy5hdWRpb19q
aXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcyA9IDA7CiAgICAgb3B0aW9ucy50eXBpbmdfZGV0ZWN0
aW9uID0gdHJ1ZTsKICAgICBvcHRpb25zLmV4cGVyaW1lbnRhbF9hZ2MgPSBmYWxzZTsKICAgICBv
cHRpb25zLmV4dGVuZGVkX2ZpbHRlcl9hZWMgPSBmYWxzZTsKQEAgLTMwMywxMiArMjk5LDE0IEBA
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+IFdlYlJ0Y1ZvaWNlRW5naW5l
OjpHZXRBdWRpb1N0YXRlKCkKICAgcmV0dXJuIGF1ZGlvX3N0YXRlXzsKIH0KIAotVm9pY2VNZWRp
YUNoYW5uZWwqIFdlYlJ0Y1ZvaWNlRW5naW5lOjpDcmVhdGVDaGFubmVsKAorVm9pY2VNZWRpYUNo
YW5uZWwqIFdlYlJ0Y1ZvaWNlRW5naW5lOjpDcmVhdGVNZWRpYUNoYW5uZWwoCiAgICAgd2VicnRj
OjpDYWxsKiBjYWxsLAogICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgY29uc3Qg
QXVkaW9PcHRpb25zJiBvcHRpb25zKSB7CisgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25z
LAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIHsKICAg
UlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7
Ci0gIHJldHVybiBuZXcgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwodGhpcywgY29uZmlnLCBvcHRp
b25zLCBjYWxsKTsKKyAgcmV0dXJuIG5ldyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCh0aGlzLCBj
b25maWcsIG9wdGlvbnMsIGNyeXB0b19vcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbGwpOwogfQogCiBib29sIFdlYlJ0Y1ZvaWNlRW5naW5lOjpBcHBseU9w
dGlvbnMoY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zX2luKSB7CkBAIC0zMjAsMTEgKzMxOCw2
IEBAIGJvb2wgV2ViUnRjVm9pY2VFbmdpbmU6OkFwcGx5T3B0aW9ucyhjb25zdCBBdWRpb09wdGlv
bnMmIG9wdGlvbnNfaW4pIHsKICAgLy8gU2V0IGFuZCBhZGp1c3QgZWNobyBjYW5jZWxsZXIgb3B0
aW9ucy4KICAgLy8ga0VjQ29uZmVyZW5jZSBpcyBBRUMgd2l0aCBoaWdoIHN1cHByZXNzaW9uLgog
ICB3ZWJydGM6OkVjTW9kZXMgZWNfbW9kZSA9IHdlYnJ0Yzo6a0VjQ29uZmVyZW5jZTsKLSAgaWYg
KG9wdGlvbnMuYWVjbV9nZW5lcmF0ZV9jb21mb3J0X25vaXNlICYmCi0gICAgICAqb3B0aW9ucy5h
ZWNtX2dlbmVyYXRlX2NvbWZvcnRfbm9pc2UpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0g
ICAgICAgIDw8ICJJZ25vcmluZyBkZXByZWNhdGVkIG1vYmlsZSBBRUMgc2V0dGluZzogY29tZm9y
dCBub2lzZSI7Ci0gIH0KIAogI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKICAgaWYgKG9wdGlvbnMu
aW9zX2ZvcmNlX3NvZnR3YXJlX2FlY19IQUNLICYmCkBAIC00OTAsNiArNDgzLDEyIEBAIGJvb2wg
V2ViUnRjVm9pY2VFbmdpbmU6OkFwcGx5T3B0aW9ucyhjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlv
bnNfaW4pIHsKICAgICBhdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZV8gPQogICAg
ICAgICAqb3B0aW9ucy5hdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZTsKICAgfQor
ICBpZiAob3B0aW9ucy5hdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcykgeworICAgIFJU
Q19MT0coTFNfSU5GTykgPDwgIk5ldEVxIG1pbmltdW0gZGVsYXkgaXMgIgorICAgICAgICAgICAg
ICAgICAgICAgPDwgKm9wdGlvbnMuYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXM7Cisg
ICAgYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXNfID0KKyAgICAgICAgKm9wdGlvbnMu
YXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXM7CisgIH0KIAogICBpZiAob3B0aW9ucy50
eXBpbmdfZGV0ZWN0aW9uKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiVHlwaW5nIGRldGVj
dGlvbiBpcyBlbmFibGVkPyAiCkBAIC03MTMsMTYgKzcxMiwyMCBAQCBjbGFzcyBXZWJSdGNWb2lj
ZU1lZGlhQ2hhbm5lbDo6V2ViUnRjQXVkaW9TZW5kU3RyZWFtCiAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyB0cmFja19pZCwKICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6QXVkaW9T
ZW5kU3RyZWFtOjpDb25maWc6OlNlbmRDb2RlY1NwZWM+JgogICAgICAgICAgIHNlbmRfY29kZWNf
c3BlYywKKyAgICAgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkLAogICAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8d2VicnRjOjpSdHBFeHRlbnNpb24+JiBleHRlbnNpb25zLAogICAgICAgaW50IG1heF9z
ZW5kX2JpdHJhdGVfYnBzLAorICAgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zLAogICAg
ICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+JiBhdWRpb19uZXR3b3JrX2FkYXB0
b3JfY29uZmlnLAogICAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAogICAgICAgd2VicnRjOjpUcmFu
c3BvcnQqIHNlbmRfdHJhbnNwb3J0LAorICAgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVy
ZmFjZSogbWVkaWFfdHJhbnNwb3J0LAogICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6QXVkaW9FbmNvZGVyRmFjdG9yeT4mIGVuY29kZXJfZmFjdG9yeSwKICAgICAgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6QXVkaW9Db2RlY1BhaXJJZD4gY29kZWNfcGFpcl9pZCwK
LSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRW5jcnlwdG9ySW50ZXJmYWNl
PiBmcmFtZV9lbmNyeXB0b3IpCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFt
ZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yLAorICAgICAgY29uc3Qgd2VicnRj
OjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykKICAgICAgIDogY2FsbF8oY2FsbCksCi0g
ICAgICAgIGNvbmZpZ18oc2VuZF90cmFuc3BvcnQpLAorICAgICAgICBjb25maWdfKHNlbmRfdHJh
bnNwb3J0LCBtZWRpYV90cmFuc3BvcnQpLAogICAgICAgICBzZW5kX3NpZGVfYndlX3dpdGhfb3Zl
cmhlYWRfKAogICAgICAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJS
VEMtU2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikpLAogICAgICAgICBtYXhfc2VuZF9iaXRyYXRl
X2Jwc18obWF4X3NlbmRfYml0cmF0ZV9icHMpLApAQCAtNzMyLDEyICs3MzUsMTcgQEAgY2xhc3Mg
V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0Y0F1ZGlvU2VuZFN0cmVhbQogICAgIGNvbmZp
Z18ucnRwLnNzcmMgPSBzc3JjOwogICAgIGNvbmZpZ18ucnRwLm1pZCA9IG1pZDsKICAgICBjb25m
aWdfLnJ0cC5jX25hbWUgPSBjX25hbWU7CisgICAgY29uZmlnXy5ydHAuZXh0bWFwX2FsbG93X21p
eGVkID0gZXh0bWFwX2FsbG93X21peGVkOwogICAgIGNvbmZpZ18ucnRwLmV4dGVuc2lvbnMgPSBl
eHRlbnNpb25zOworICAgIGNvbmZpZ18uaGFzX2RzY3AgPSBydHBfcGFyYW1ldGVyc18uZW5jb2Rp
bmdzWzBdLm5ldHdvcmtfcHJpb3JpdHkgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgd2VicnRj
OjprRGVmYXVsdEJpdHJhdGVQcmlvcml0eTsKICAgICBjb25maWdfLmF1ZGlvX25ldHdvcmtfYWRh
cHRvcl9jb25maWcgPSBhdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnOwogICAgIGNvbmZpZ18u
ZW5jb2Rlcl9mYWN0b3J5ID0gZW5jb2Rlcl9mYWN0b3J5OwogICAgIGNvbmZpZ18uY29kZWNfcGFp
cl9pZCA9IGNvZGVjX3BhaXJfaWQ7CiAgICAgY29uZmlnXy50cmFja19pZCA9IHRyYWNrX2lkOwog
ICAgIGNvbmZpZ18uZnJhbWVfZW5jcnlwdG9yID0gZnJhbWVfZW5jcnlwdG9yOworICAgIGNvbmZp
Z18uY3J5cHRvX29wdGlvbnMgPSBjcnlwdG9fb3B0aW9uczsKKyAgICBjb25maWdfLnJ0Y3BfcmVw
b3J0X2ludGVydmFsX21zID0gcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM7CiAgICAgcnRwX3BhcmFt
ZXRlcnNfLmVuY29kaW5nc1swXS5zc3JjID0gc3NyYzsKICAgICBydHBfcGFyYW1ldGVyc18ucnRj
cC5jbmFtZSA9IGNfbmFtZTsKICAgICBydHBfcGFyYW1ldGVyc18uaGVhZGVyX2V4dGVuc2lvbnMg
PSBleHRlbnNpb25zOwpAQCAtNzY4LDYgKzc3NiwxMSBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlh
Q2hhbm5lbDo6V2ViUnRjQXVkaW9TZW5kU3RyZWFtCiAgICAgUmVjb25maWd1cmVBdWRpb1NlbmRT
dHJlYW0oKTsKICAgfQogCisgIHZvaWQgU2V0RXh0bWFwQWxsb3dNaXhlZChib29sIGV4dG1hcF9h
bGxvd19taXhlZCkgeworICAgIGNvbmZpZ18ucnRwLmV4dG1hcF9hbGxvd19taXhlZCA9IGV4dG1h
cF9hbGxvd19taXhlZDsKKyAgICBSZWNvbmZpZ3VyZUF1ZGlvU2VuZFN0cmVhbSgpOworICB9CisK
ICAgdm9pZCBTZXRNaWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCkgewogICAgIFJUQ19EQ0hFQ0so
d29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICAgIGlmIChj
b25maWdfLnJ0cC5taWQgPT0gbWlkKSB7CkBAIC05MjgsMTIgKzk0MSwxNiBAQCBjbGFzcyBXZWJS
dGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjQXVkaW9TZW5kU3RyZWFtCiAgICAgY29uc3QgYWJz
bDo6b3B0aW9uYWw8aW50PiBvbGRfcnRwX21heF9iaXRyYXRlID0KICAgICAgICAgcnRwX3BhcmFt
ZXRlcnNfLmVuY29kaW5nc1swXS5tYXhfYml0cmF0ZV9icHM7CiAgICAgZG91YmxlIG9sZF9wcmlv
cml0eSA9IHJ0cF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3NbMF0uYml0cmF0ZV9wcmlvcml0eTsKKyAg
ICBkb3VibGUgb2xkX2RzY3AgPSBydHBfcGFyYW1ldGVyc18uZW5jb2RpbmdzWzBdLm5ldHdvcmtf
cHJpb3JpdHk7CiAgICAgcnRwX3BhcmFtZXRlcnNfID0gcGFyYW1ldGVyczsKICAgICBjb25maWdf
LmJpdHJhdGVfcHJpb3JpdHkgPSBydHBfcGFyYW1ldGVyc18uZW5jb2RpbmdzWzBdLmJpdHJhdGVf
cHJpb3JpdHk7CisgICAgY29uZmlnXy5oYXNfZHNjcCA9IChydHBfcGFyYW1ldGVyc18uZW5jb2Rp
bmdzWzBdLm5ldHdvcmtfcHJpb3JpdHkgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0
Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkpOwogCiAgICAgYm9vbCByZWNvbmZpZ3VyZV9zZW5k
X3N0cmVhbSA9CiAgICAgICAgIChydHBfcGFyYW1ldGVyc18uZW5jb2RpbmdzWzBdLm1heF9iaXRy
YXRlX2JwcyAhPSBvbGRfcnRwX21heF9iaXRyYXRlKSB8fAotICAgICAgICAocnRwX3BhcmFtZXRl
cnNfLmVuY29kaW5nc1swXS5iaXRyYXRlX3ByaW9yaXR5ICE9IG9sZF9wcmlvcml0eSk7CisgICAg
ICAgIChydHBfcGFyYW1ldGVyc18uZW5jb2RpbmdzWzBdLmJpdHJhdGVfcHJpb3JpdHkgIT0gb2xk
X3ByaW9yaXR5KSB8fAorICAgICAgICAocnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5uZXR3
b3JrX3ByaW9yaXR5ICE9IG9sZF9kc2NwKTsKICAgICBpZiAocnRwX3BhcmFtZXRlcnNfLmVuY29k
aW5nc1swXS5tYXhfYml0cmF0ZV9icHMgIT0gb2xkX3J0cF9tYXhfYml0cmF0ZSkgewogICAgICAg
Ly8gVXBkYXRlIHRoZSBiaXRyYXRlIHJhbmdlLgogICAgICAgaWYgKHNlbmRfcmF0ZSkgewpAQCAt
OTY5LDggKzk4Niw4IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpXZWJSdGNBdWRp
b1NlbmRTdHJlYW0KICAgICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVk
T25WYWxpZFRocmVhZCgpKTsKICAgICBjb25zdCBib29sIGlzX29wdXMgPQogICAgICAgICBjb25m
aWdfLnNlbmRfY29kZWNfc3BlYyAmJgotICAgICAgICAhU1RSX0NBU0VfQ01QKGNvbmZpZ18uc2Vu
ZF9jb2RlY19zcGVjLT5mb3JtYXQubmFtZS5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAg
IGtPcHVzQ29kZWNOYW1lKTsKKyAgICAgICAgYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb25maWdf
LnNlbmRfY29kZWNfc3BlYy0+Zm9ybWF0Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga09wdXNDb2RlY05hbWUpOwogICAgIGlmIChpc19vcHVzICYmIHdlYnJ0Yzo6ZmllbGRf
dHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUF1ZGlvLVNlbmRTaWRlQndlIikpIHsKICAgICAgIGNv
bmZpZ18ubWluX2JpdHJhdGVfYnBzID0ga09wdXNNaW5CaXRyYXRlQnBzOwogCkBAIC0xMDE0LDgg
KzEwMzEsNiBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjQXVkaW9TZW5k
U3RyZWFtCiAgIHZvaWQgVXBkYXRlU2VuZENvZGVjU3BlYygKICAgICAgIGNvbnN0IHdlYnJ0Yzo6
QXVkaW9TZW5kU3RyZWFtOjpDb25maWc6OlNlbmRDb2RlY1NwZWMmIHNlbmRfY29kZWNfc3BlYykg
ewogICAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhy
ZWFkKCkpOwotICAgIGNvbmZpZ18ucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgPQotICAgICAgICBz
ZW5kX2NvZGVjX3NwZWMubmFja19lbmFibGVkID8ga05hY2tSdHBIaXN0b3J5TXMgOiAwOwogICAg
IGNvbmZpZ18uc2VuZF9jb2RlY19zcGVjID0gc2VuZF9jb2RlY19zcGVjOwogICAgIGF1dG8gaW5m
byA9CiAgICAgICAgIGNvbmZpZ18uZW5jb2Rlcl9mYWN0b3J5LT5RdWVyeUF1ZGlvRW5jb2Rlcihz
ZW5kX2NvZGVjX3NwZWMuZm9ybWF0KTsKQEAgLTEwNzcsMTIgKzEwOTIsMTUgQEAgY2xhc3MgV2Vi
UnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0Y0F1ZGlvUmVjZWl2ZVN0cmVhbSB7CiAgICAgICBj
b25zdCBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlJ0cEV4dGVuc2lvbj4mIGV4dGVuc2lvbnMsCiAgICAg
ICB3ZWJydGM6OkNhbGwqIGNhbGwsCiAgICAgICB3ZWJydGM6OlRyYW5zcG9ydCogcnRjcF9zZW5k
X3RyYW5zcG9ydCwKKyAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlh
X3RyYW5zcG9ydCwKICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlv
RGVjb2RlckZhY3Rvcnk+JiBkZWNvZGVyX2ZhY3RvcnksCiAgICAgICBjb25zdCBzdGQ6Om1hcDxp
bnQsIHdlYnJ0Yzo6U2RwQXVkaW9Gb3JtYXQ+JiBkZWNvZGVyX21hcCwKICAgICAgIGFic2w6Om9w
dGlvbmFsPHdlYnJ0Yzo6QXVkaW9Db2RlY1BhaXJJZD4gY29kZWNfcGFpcl9pZCwKICAgICAgIHNp
emVfdCBqaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzLAogICAgICAgYm9vbCBqaXR0ZXJfYnVmZmVy
X2Zhc3RfYWNjZWxlcmF0ZSwKLSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1l
RGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IpCisgICAgICBpbnQgaml0dGVyX2J1
ZmZlcl9taW5fZGVsYXlfbXMsCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFt
ZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yLAorICAgICAgY29uc3Qgd2VicnRj
OjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykKICAgICAgIDogY2FsbF8oY2FsbCksIGNv
bmZpZ18oKSB7CiAgICAgUlRDX0RDSEVDSyhjYWxsKTsKICAgICBjb25maWdfLnJ0cC5yZW1vdGVf
c3NyYyA9IHJlbW90ZV9zc3JjOwpAQCAtMTA5MSw4ICsxMTA5LDEwIEBAIGNsYXNzIFdlYlJ0Y1Zv
aWNlTWVkaWFDaGFubmVsOjpXZWJSdGNBdWRpb1JlY2VpdmVTdHJlYW0gewogICAgIGNvbmZpZ18u
cnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgPSB1c2VfbmFjayA/IGtOYWNrUnRwSGlzdG9yeU1zIDog
MDsKICAgICBjb25maWdfLnJ0cC5leHRlbnNpb25zID0gZXh0ZW5zaW9uczsKICAgICBjb25maWdf
LnJ0Y3Bfc2VuZF90cmFuc3BvcnQgPSBydGNwX3NlbmRfdHJhbnNwb3J0OworICAgIGNvbmZpZ18u
bWVkaWFfdHJhbnNwb3J0ID0gbWVkaWFfdHJhbnNwb3J0OwogICAgIGNvbmZpZ18uaml0dGVyX2J1
ZmZlcl9tYXhfcGFja2V0cyA9IGppdHRlcl9idWZmZXJfbWF4X3BhY2tldHM7CiAgICAgY29uZmln
Xy5qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSA9IGppdHRlcl9idWZmZXJfZmFzdF9hY2Nl
bGVyYXRlOworICAgIGNvbmZpZ18uaml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMgPSBqaXR0ZXJf
YnVmZmVyX21pbl9kZWxheV9tczsKICAgICBpZiAoIXN0cmVhbV9pZHMuZW1wdHkoKSkgewogICAg
ICAgY29uZmlnXy5zeW5jX2dyb3VwID0gc3RyZWFtX2lkc1swXTsKICAgICB9CkBAIC0xMTAwLDYg
KzExMjAsNyBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjQXVkaW9SZWNl
aXZlU3RyZWFtIHsKICAgICBjb25maWdfLmRlY29kZXJfbWFwID0gZGVjb2Rlcl9tYXA7CiAgICAg
Y29uZmlnXy5jb2RlY19wYWlyX2lkID0gY29kZWNfcGFpcl9pZDsKICAgICBjb25maWdfLmZyYW1l
X2RlY3J5cHRvciA9IGZyYW1lX2RlY3J5cHRvcjsKKyAgICBjb25maWdfLmNyeXB0b19vcHRpb25z
ID0gY3J5cHRvX29wdGlvbnM7CiAgICAgUmVjcmVhdGVBdWRpb1JlY2VpdmVTdHJlYW0oKTsKICAg
fQogCkBAIC0xMjM3LDExICsxMjU4LDE3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVs
OjpXZWJSdGNBdWRpb1JlY2VpdmVTdHJlYW0gewogICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09O
U1RSVUNUT1JTKFdlYlJ0Y0F1ZGlvUmVjZWl2ZVN0cmVhbSk7CiB9OwogCi1XZWJSdGNWb2ljZU1l
ZGlhQ2hhbm5lbDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwoV2ViUnRjVm9pY2VFbmdpbmUqIGVu
Z2luZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkNhbGwqIGNh
bGwpCi0gICAgOiBWb2ljZU1lZGlhQ2hhbm5lbChjb25maWcpLCBlbmdpbmVfKGVuZ2luZSksIGNh
bGxfKGNhbGwpIHsKK1dlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpXZWJSdGNWb2ljZU1lZGlhQ2hh
bm5lbCgKKyAgICBXZWJSdGNWb2ljZUVuZ2luZSogZW5naW5lLAorICAgIGNvbnN0IE1lZGlhQ29u
ZmlnJiBjb25maWcsCisgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zLAorICAgIGNvbnN0
IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgd2VicnRjOjpDYWxs
KiBjYWxsKQorICAgIDogVm9pY2VNZWRpYUNoYW5uZWwoY29uZmlnKSwKKyAgICAgIGVuZ2luZV8o
ZW5naW5lKSwKKyAgICAgIGNhbGxfKGNhbGwpLAorICAgICAgYXVkaW9fY29uZmlnXyhjb25maWcu
YXVkaW8pLAorICAgICAgY3J5cHRvX29wdGlvbnNfKGNyeXB0b19vcHRpb25zKSB7CiAgIFJUQ19M
T0coTFNfVkVSQk9TRSkgPDwgIldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpXZWJSdGNWb2ljZU1l
ZGlhQ2hhbm5lbCI7CiAgIFJUQ19EQ0hFQ0soY2FsbCk7CiAgIGVuZ2luZS0+UmVnaXN0ZXJDaGFu
bmVsKHRoaXMpOwpAQCAtMTI2NCw3ICsxMjkxLDcgQEAgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6
On5XZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCgpIHsKIH0KIAogcnRjOjpEaWZmU2VydkNvZGVQb2lu
dCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6UHJlZmVycmVkRHNjcCgpIGNvbnN0IHsKLSAgcmV0
dXJuIGtBdWRpb0RzY3BWYWx1ZTsKKyAgcmV0dXJuIHByZWZlcnJlZF9kc2NwXzsKIH0KIAogYm9v
bCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0U2VuZFBhcmFtZXRlcnMoCkBAIC0xMjgzLDYg
KzEzMTAsMTQgQEAgYm9vbCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0U2VuZFBhcmFtZXRl
cnMoCiAgIGlmICghVmFsaWRhdGVSdHBFeHRlbnNpb25zKHBhcmFtcy5leHRlbnNpb25zKSkgewog
ICAgIHJldHVybiBmYWxzZTsKICAgfQorCisgIGlmIChFeHRtYXBBbGxvd01peGVkKCkgIT0gcGFy
YW1zLmV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIFNldEV4dG1hcEFsbG93TWl4ZWQocGFyYW1z
LmV4dG1hcF9hbGxvd19taXhlZCk7CisgICAgZm9yIChhdXRvJiBpdCA6IHNlbmRfc3RyZWFtc18p
IHsKKyAgICAgIGl0LnNlY29uZC0+U2V0RXh0bWFwQWxsb3dNaXhlZChwYXJhbXMuZXh0bWFwX2Fs
bG93X21peGVkKTsKKyAgICB9CisgIH0KKwogICBzdGQ6OnZlY3Rvcjx3ZWJydGM6OlJ0cEV4dGVu
c2lvbj4gZmlsdGVyZWRfZXh0ZW5zaW9ucyA9IEZpbHRlclJ0cEV4dGVuc2lvbnMoCiAgICAgICBw
YXJhbXMuZXh0ZW5zaW9ucywgd2VicnRjOjpSdHBFeHRlbnNpb246OklzU3VwcG9ydGVkRm9yQXVk
aW8sIHRydWUpOwogICBpZiAoc2VuZF9ydHBfZXh0ZW5zaW9uc18gIT0gZmlsdGVyZWRfZXh0ZW5z
aW9ucykgewpAQCAtMTM2NSwxMSArMTQwMCwzNCBAQCB3ZWJydGM6OlJUQ0Vycm9yIFdlYlJ0Y1Zv
aWNlTWVkaWFDaGFubmVsOjpTZXRSdHBTZW5kUGFyYW1ldGVycygKICAgLy8gZGlmZmVyZW50IG9y
ZGVyICh3aGljaCBzaG91bGQgY2hhbmdlIHRoZSBzZW5kIGNvZGVjKS4KICAgd2VicnRjOjpSdHBQ
YXJhbWV0ZXJzIGN1cnJlbnRfcGFyYW1ldGVycyA9IEdldFJ0cFNlbmRQYXJhbWV0ZXJzKHNzcmMp
OwogICBpZiAoY3VycmVudF9wYXJhbWV0ZXJzLmNvZGVjcyAhPSBwYXJhbWV0ZXJzLmNvZGVjcykg
ewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJVc2luZyBTZXRQYXJhbWV0ZXJzIHRvIGNoYW5n
ZSB0aGUgc2V0IG9mIGNvZGVjcyAiCi0gICAgICAgICAgICAgICAgICAgICAgPDwgImlzIG5vdCBj
dXJyZW50bHkgc3VwcG9ydGVkLiI7CisgICAgUlRDX0RMT0coTFNfRVJST1IpIDw8ICJVc2luZyBT
ZXRQYXJhbWV0ZXJzIHRvIGNoYW5nZSB0aGUgc2V0IG9mIGNvZGVjcyAiCisgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4iOwogICAgIHJldHVybiB3
ZWJydGM6OlJUQ0Vycm9yKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9QQVJBTUVU
RVIpOwogICB9CiAKKyAgaWYgKCFwYXJhbWV0ZXJzLmVuY29kaW5ncy5lbXB0eSgpKSB7CisgICAg
YXV0byYgcHJpb3JpdHkgPSBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5
OworICAgIHJ0Yzo6RGlmZlNlcnZDb2RlUG9pbnQgbmV3X2RzY3AgPSBydGM6OkRTQ1BfREVGQVVM
VDsKKyAgICBpZiAocHJpb3JpdHkgPT0gMC41ICogd2VicnRjOjprRGVmYXVsdEJpdHJhdGVQcmlv
cml0eSkgeworICAgICAgbmV3X2RzY3AgPSBydGM6OkRTQ1BfQ1MxOworICAgIH0gZWxzZSBpZiAo
cHJpb3JpdHkgPT0gMS4wICogd2VicnRjOjprRGVmYXVsdEJpdHJhdGVQcmlvcml0eSkgeworICAg
ICAgbmV3X2RzY3AgPSBydGM6OkRTQ1BfREVGQVVMVDsKKyAgICB9IGVsc2UgaWYgKHByaW9yaXR5
ID09IDIuMCAqIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkpIHsKKyAgICAgIG5ld19k
c2NwID0gcnRjOjpEU0NQX0VGOworICAgIH0gZWxzZSBpZiAocHJpb3JpdHkgPT0gNC4wICogd2Vi
cnRjOjprRGVmYXVsdEJpdHJhdGVQcmlvcml0eSkgeworICAgICAgbmV3X2RzY3AgPSBydGM6OkRT
Q1BfRUY7CisgICAgfSBlbHNlIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlJlY2Vp
dmVkIGludmFsaWQgc2VuZCBuZXR3b3JrIHByaW9yaXR5OiAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IHByaW9yaXR5OworICAgICAgcmV0dXJuIHdlYnJ0Yzo6UlRDRXJyb3Iod2VicnRj
OjpSVENFcnJvclR5cGU6OklOVkFMSURfUkFOR0UpOworICAgIH0KKworICAgIGlmIChuZXdfZHNj
cCAhPSBwcmVmZXJyZWRfZHNjcF8pIHsKKyAgICAgIHByZWZlcnJlZF9kc2NwXyA9IG5ld19kc2Nw
OworICAgICAgTWVkaWFDaGFubmVsOjpVcGRhdGVEc2NwKCk7CisgICAgfQorICB9CisKICAgLy8g
VE9ETyhtaW55dWUpOiBUaGUgZm9sbG93aW5nIGxlZ2FjeSBhY3Rpb25zIGdvIGludG8KICAgLy8g
fFdlYlJ0Y0F1ZGlvU2VuZFN0cmVhbTo6U2V0UnRwUGFyYW1ldGVycygpfCB3aGljaCBpcyBjYWxs
ZWQgYXQgdGhlIGVuZCwKICAgLy8gdGhvdWdoIHRoZXJlIGFyZSB0d28gZGlmZmVyZW5jZToKQEAg
LTE0NDAsOCArMTQ5OCw4IEBAIGJvb2wgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OlNldFJ0cFJl
Y2VpdmVQYXJhbWV0ZXJzKAogCiAgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBjdXJyZW50X3BhcmFt
ZXRlcnMgPSBHZXRSdHBSZWNlaXZlUGFyYW1ldGVycyhzc3JjKTsKICAgaWYgKGN1cnJlbnRfcGFy
YW1ldGVycyAhPSBwYXJhbWV0ZXJzKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNoYW5n
aW5nIHRoZSBSVFAgcmVjZWl2ZSBwYXJhbWV0ZXJzIGlzIGN1cnJlbnRseSAiCi0gICAgICAgICAg
ICAgICAgICAgICAgPDwgInVuc3VwcG9ydGVkLiI7CisgICAgUlRDX0RMT0coTFNfRVJST1IpIDw8
ICJDaGFuZ2luZyB0aGUgUlRQIHJlY2VpdmUgcGFyYW1ldGVycyBpcyBjdXJyZW50bHkgIgorICAg
ICAgICAgICAgICAgICAgICAgICA8PCAidW5zdXBwb3J0ZWQuIjsKICAgICByZXR1cm4gZmFsc2U7
CiAgIH0KICAgcmV0dXJuIHRydWU7CkBAIC0xNjIzLDE3ICsxNjgxLDE3IEBAIGJvb2wgV2ViUnRj
Vm9pY2VNZWRpYUNoYW5uZWw6OlNldFNlbmRDb2RlY3MoCiAgICAgLy8gVE9ETyhzb2xlbmJlcmcp
OiBCcmVhayBvdXQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uPwogICAgIGZvciAoY29uc3QgQXVk
aW9Db2RlYyYgY25fY29kZWMgOiBjb2RlY3MpIHsKICAgICAgIGlmIChJc0NvZGVjKGNuX2NvZGVj
LCBrQ25Db2RlY05hbWUpICYmCi0gICAgICAgICAgY25fY29kZWMuY2xvY2tyYXRlID09IHNlbmRf
Y29kZWNfc3BlYy0+Zm9ybWF0LmNsb2NrcmF0ZV9oeikgewotICAgICAgICBzd2l0Y2ggKGNuX2Nv
ZGVjLmNsb2NrcmF0ZSkgewotICAgICAgICAgIGNhc2UgODAwMDoKLSAgICAgICAgICBjYXNlIDE2
MDAwOgotICAgICAgICAgIGNhc2UgMzIwMDA6Ci0gICAgICAgICAgICBzZW5kX2NvZGVjX3NwZWMt
PmNuZ19wYXlsb2FkX3R5cGUgPSBjbl9jb2RlYy5pZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAg
ICAgICAgICAgPDwgIkNOIGZyZXF1ZW5jeSAiIDw8IGNuX2NvZGVjLmNsb2NrcmF0ZSA8PCAiIG5v
dCBzdXBwb3J0ZWQuIjsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNuX2NvZGVjLmNs
b2NrcmF0ZSA9PSBzZW5kX2NvZGVjX3NwZWMtPmZvcm1hdC5jbG9ja3JhdGVfaHogJiYKKyAgICAg
ICAgICBjbl9jb2RlYy5jaGFubmVscyA9PSB2b2ljZV9jb2RlY19pbmZvLT5udW1fY2hhbm5lbHMp
IHsKKyAgICAgICAgaWYgKGNuX2NvZGVjLmNoYW5uZWxzICE9IDEpIHsKKyAgICAgICAgICBSVENf
TE9HKExTX1dBUk5JTkcpCisgICAgICAgICAgICAgIDw8ICJDTiAjY2hhbm5lbHMgIiA8PCBjbl9j
b2RlYy5jaGFubmVscyA8PCAiIG5vdCBzdXBwb3J0ZWQuIjsKKyAgICAgICAgfSBlbHNlIGlmIChj
bl9jb2RlYy5jbG9ja3JhdGUgIT0gODAwMCAmJiBjbl9jb2RlYy5jbG9ja3JhdGUgIT0gMTYwMDAg
JiYKKyAgICAgICAgICAgICAgICAgICBjbl9jb2RlYy5jbG9ja3JhdGUgIT0gMzIwMDApIHsKKyAg
ICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpCisgICAgICAgICAgICAgIDw8ICJDTiBmcmVxdWVu
Y3kgIiA8PCBjbl9jb2RlYy5jbG9ja3JhdGUgPDwgIiBub3Qgc3VwcG9ydGVkLiI7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgc2VuZF9jb2RlY19zcGVjLT5jbmdfcGF5bG9hZF90eXBlID0g
Y25fY29kZWMuaWQ7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICB9CkBAIC0xNzYx
LDkgKzE4MTksMTEgQEAgYm9vbCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6QWRkU2VuZFN0cmVh
bShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSB7CiAgIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5n
PiBhdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnID0KICAgICAgIEdldEF1ZGlvTmV0d29ya0Fk
YXB0b3JDb25maWcob3B0aW9uc18pOwogICBXZWJSdGNBdWRpb1NlbmRTdHJlYW0qIHN0cmVhbSA9
IG5ldyBXZWJSdGNBdWRpb1NlbmRTdHJlYW0oCi0gICAgICBzc3JjLCBtaWRfLCBzcC5jbmFtZSwg
c3AuaWQsIHNlbmRfY29kZWNfc3BlY18sIHNlbmRfcnRwX2V4dGVuc2lvbnNfLAotICAgICAgbWF4
X3NlbmRfYml0cmF0ZV9icHNfLCBhdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLCBjYWxsXywg
dGhpcywKLSAgICAgIGVuZ2luZSgpLT5lbmNvZGVyX2ZhY3RvcnlfLCBjb2RlY19wYWlyX2lkXywg
bnVsbHB0cik7CisgICAgICBzc3JjLCBtaWRfLCBzcC5jbmFtZSwgc3AuaWQsIHNlbmRfY29kZWNf
c3BlY18sIEV4dG1hcEFsbG93TWl4ZWQoKSwKKyAgICAgIHNlbmRfcnRwX2V4dGVuc2lvbnNfLCBt
YXhfc2VuZF9iaXRyYXRlX2Jwc18sCisgICAgICBhdWRpb19jb25maWdfLnJ0Y3BfcmVwb3J0X2lu
dGVydmFsX21zLCBhdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLAorICAgICAgY2FsbF8sIHRo
aXMsIG1lZGlhX3RyYW5zcG9ydCgpLCBlbmdpbmUoKS0+ZW5jb2Rlcl9mYWN0b3J5XywKKyAgICAg
IGNvZGVjX3BhaXJfaWRfLCBudWxscHRyLCBjcnlwdG9fb3B0aW9uc18pOwogICBzZW5kX3N0cmVh
bXNfLmluc2VydChzdGQ6Om1ha2VfcGFpcihzc3JjLCBzdHJlYW0pKTsKIAogICAvLyBBdCB0aGlz
IHBvaW50IHRoZSBzdHJlYW0ncyBsb2NhbCBTU1JDIGhhcyBiZWVuIHVwZGF0ZWQuIElmIGl0IGlz
IHRoZSBmaXJzdApAQCAtMTgyNiw3ICsxODg2LDcgQEAgYm9vbCBXZWJSdGNWb2ljZU1lZGlhQ2hh
bm5lbDo6QWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSB7CiAKICAgY29uc3Qg
dWludDMyX3Qgc3NyYyA9IHNwLmZpcnN0X3NzcmMoKTsKICAgaWYgKHNzcmMgPT0gMCkgewotICAg
IFJUQ19MT0coTFNfV0FSTklORykgPDwgIkFkZFJlY3ZTdHJlYW0gd2l0aCBzc3JjPT0wIGlzIG5v
dCBzdXBwb3J0ZWQuIjsKKyAgICBSVENfRExPRyhMU19XQVJOSU5HKSA8PCAiQWRkUmVjdlN0cmVh
bSB3aXRoIHNzcmM9PTAgaXMgbm90IHN1cHBvcnRlZC4iOwogICAgIHJldHVybiBmYWxzZTsKICAg
fQogCkBAIC0xODQ0LDEzICsxOTA0LDE1IEBAIGJvb2wgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6
OkFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgewogCiAgIC8vIENyZWF0ZSBh
IG5ldyBjaGFubmVsIGZvciByZWNlaXZpbmcgYXVkaW8gZGF0YS4KICAgcmVjdl9zdHJlYW1zXy5p
bnNlcnQoc3RkOjptYWtlX3BhaXIoCi0gICAgICBzc3JjLCBuZXcgV2ViUnRjQXVkaW9SZWNlaXZl
U3RyZWFtKAotICAgICAgICAgICAgICAgIHNzcmMsIHJlY2VpdmVyX3JlcG9ydHNfc3NyY18sIHJl
Y3ZfdHJhbnNwb3J0X2NjX2VuYWJsZWRfLAotICAgICAgICAgICAgICAgIHJlY3ZfbmFja19lbmFi
bGVkXywgc3Auc3RyZWFtX2lkcygpLCByZWN2X3J0cF9leHRlbnNpb25zXywKLSAgICAgICAgICAg
ICAgICBjYWxsXywgdGhpcywgZW5naW5lKCktPmRlY29kZXJfZmFjdG9yeV8sIGRlY29kZXJfbWFw
XywKLSAgICAgICAgICAgICAgICBjb2RlY19wYWlyX2lkXywgZW5naW5lKCktPmF1ZGlvX2ppdHRl
cl9idWZmZXJfbWF4X3BhY2tldHNfLAotICAgICAgICAgICAgICAgIGVuZ2luZSgpLT5hdWRpb19q
aXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZV8sCi0gICAgICAgICAgICAgICAgdW5zaWduYWxl
ZF9mcmFtZV9kZWNyeXB0b3JfKSkpOworICAgICAgc3NyYywKKyAgICAgIG5ldyBXZWJSdGNBdWRp
b1JlY2VpdmVTdHJlYW0oCisgICAgICAgICAgc3NyYywgcmVjZWl2ZXJfcmVwb3J0c19zc3JjXywg
cmVjdl90cmFuc3BvcnRfY2NfZW5hYmxlZF8sCisgICAgICAgICAgcmVjdl9uYWNrX2VuYWJsZWRf
LCBzcC5zdHJlYW1faWRzKCksIHJlY3ZfcnRwX2V4dGVuc2lvbnNfLCBjYWxsXywKKyAgICAgICAg
ICB0aGlzLCBtZWRpYV90cmFuc3BvcnQoKSwgZW5naW5lKCktPmRlY29kZXJfZmFjdG9yeV8sIGRl
Y29kZXJfbWFwXywKKyAgICAgICAgICBjb2RlY19wYWlyX2lkXywgZW5naW5lKCktPmF1ZGlvX2pp
dHRlcl9idWZmZXJfbWF4X3BhY2tldHNfLAorICAgICAgICAgIGVuZ2luZSgpLT5hdWRpb19qaXR0
ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZV8sCisgICAgICAgICAgZW5naW5lKCktPmF1ZGlvX2pp
dHRlcl9idWZmZXJfbWluX2RlbGF5X21zXywKKyAgICAgICAgICB1bnNpZ25hbGVkX2ZyYW1lX2Rl
Y3J5cHRvcl8sIGNyeXB0b19vcHRpb25zXykpKTsKICAgcmVjdl9zdHJlYW1zX1tzc3JjXS0+U2V0
UGxheW91dChwbGF5b3V0Xyk7CiAKICAgcmV0dXJuIHRydWU7CkBAIC0xOTc5LDE0ICsyMDQxLDE0
IEBAIGJvb2wgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6Okluc2VydER0bWYodWludDMyX3Qgc3Ny
YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudCwgZHVyYXRp
b24pOwogfQogCi12b2lkIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpPblBhY2tldFJlY2VpdmVk
KAotICAgIHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICBjb25zdCBydGM6OlBh
Y2tldFRpbWUmIHBhY2tldF90aW1lKSB7Cit2b2lkIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpP
blBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGlt
ZV91cykgewogICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxp
ZFRocmVhZCgpKTsKIAogICB3ZWJydGM6OlBhY2tldFJlY2VpdmVyOjpEZWxpdmVyeVN0YXR1cyBk
ZWxpdmVyeV9yZXN1bHQgPQogICAgICAgY2FsbF8tPlJlY2VpdmVyKCktPkRlbGl2ZXJQYWNrZXQo
d2VicnRjOjpNZWRpYVR5cGU6OkFVRElPLCAqcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWUudGltZXN0YW1wKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lX3VzKTsKKwogICBpZiAoZGVsaXZl
cnlfcmVzdWx0ICE9IHdlYnJ0Yzo6UGFja2V0UmVjZWl2ZXI6OkRFTElWRVJZX1VOS05PV05fU1NS
QykgewogICAgIHJldHVybjsKICAgfQpAQCAtMjAxNyw4ICsyMDc5LDggQEAgdm9pZCBXZWJSdGNW
b2ljZU1lZGlhQ2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZCgKICAgLy8gUmVtb3ZlIG9sZGVzdCB1
bnNpZ25hbGVkIHN0cmVhbSwgaWYgd2UgaGF2ZSB0b28gbWFueS4KICAgaWYgKHVuc2lnbmFsZWRf
cmVjdl9zc3Jjc18uc2l6ZSgpID4ga01heFVuc2lnbmFsZWRSZWN2U3RyZWFtcykgewogICAgIHVp
bnQzMl90IHJlbW92ZV9zc3JjID0gdW5zaWduYWxlZF9yZWN2X3NzcmNzXy5mcm9udCgpOwotICAg
IFJUQ19MT0coTFNfSU5GTykgPDwgIlJlbW92aW5nIHVuc2lnbmFsZWQgcmVjZWl2ZSBzdHJlYW0g
d2l0aCBTU1JDPSIKLSAgICAgICAgICAgICAgICAgICAgIDw8IHJlbW92ZV9zc3JjOworICAgIFJU
Q19ETE9HKExTX0lORk8pIDw8ICJSZW1vdmluZyB1bnNpZ25hbGVkIHJlY2VpdmUgc3RyZWFtIHdp
dGggU1NSQz0iCisgICAgICAgICAgICAgICAgICAgICAgPDwgcmVtb3ZlX3NzcmM7CiAgICAgUmVt
b3ZlUmVjdlN0cmVhbShyZW1vdmVfc3NyYyk7CiAgIH0KICAgUlRDX0RDSEVDS19HRShrTWF4VW5z
aWduYWxlZFJlY3ZTdHJlYW1zLCB1bnNpZ25hbGVkX3JlY3Zfc3NyY3NfLnNpemUoKSk7CkBAIC0y
MDM4LDE5ICsyMTAwLDE4IEBAIHZvaWQgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6Ok9uUGFja2V0
UmVjZWl2ZWQoCiAgICAgU2V0UmF3QXVkaW9TaW5rKHNzcmMsIHN0ZDo6bW92ZShwcm94eV9zaW5r
KSk7CiAgIH0KIAotICBkZWxpdmVyeV9yZXN1bHQgPSBjYWxsXy0+UmVjZWl2ZXIoKS0+RGVsaXZl
clBhY2tldCgKLSAgICAgIHdlYnJ0Yzo6TWVkaWFUeXBlOjpBVURJTywgKnBhY2tldCwgcGFja2V0
X3RpbWUudGltZXN0YW1wKTsKKyAgZGVsaXZlcnlfcmVzdWx0ID0gY2FsbF8tPlJlY2VpdmVyKCkt
PkRlbGl2ZXJQYWNrZXQod2VicnRjOjpNZWRpYVR5cGU6OkFVRElPLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcGFja2V0LCBwYWNrZXRfdGlt
ZV91cyk7CiAgIFJUQ19EQ0hFQ0tfTkUod2VicnRjOjpQYWNrZXRSZWNlaXZlcjo6REVMSVZFUllf
VU5LTk9XTl9TU1JDLCBkZWxpdmVyeV9yZXN1bHQpOwogfQogCi12b2lkIFdlYlJ0Y1ZvaWNlTWVk
aWFDaGFubmVsOjpPblJ0Y3BSZWNlaXZlZCgKLSAgICBydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBw
YWNrZXQsCi0gICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewordm9pZCBX
ZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6T25SdGNwUmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1
ZmZlciogcGFja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRf
Y2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKIAogICAvLyBGb3J3YXJkIHBhY2tldCB0
byBDYWxsIGFzIHdlbGwuCiAgIGNhbGxfLT5SZWNlaXZlcigpLT5EZWxpdmVyUGFja2V0KHdlYnJ0
Yzo6TWVkaWFUeXBlOjpBVURJTywgKnBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFja2V0X3RpbWUudGltZXN0YW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIFdlYlJ0Y1ZvaWNlTWVkaWFD
aGFubmVsOjpPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCkBAIC0yMTgyLDYgKzIyNDMsNyBAQCBib29s
IFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpHZXRTdGF0cyhWb2ljZU1lZGlhSW5mbyogaW5mbykg
ewogICAgIHJpbmZvLnNlY29uZGFyeV9kaXNjYXJkZWRfcmF0ZSA9IHN0YXRzLnNlY29uZGFyeV9k
aXNjYXJkZWRfcmF0ZTsKICAgICByaW5mby5hY2NlbGVyYXRlX3JhdGUgPSBzdGF0cy5hY2NlbGVy
YXRlX3JhdGU7CiAgICAgcmluZm8ucHJlZW1wdGl2ZV9leHBhbmRfcmF0ZSA9IHN0YXRzLnByZWVt
cHRpdmVfZXhwYW5kX3JhdGU7CisgICAgcmluZm8uZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBs
ZXMgPSBzdGF0cy5kZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlczsKICAgICByaW5mby5kZWNv
ZGluZ19jYWxsc190b19zaWxlbmNlX2dlbmVyYXRvciA9CiAgICAgICAgIHN0YXRzLmRlY29kaW5n
X2NhbGxzX3RvX3NpbGVuY2VfZ2VuZXJhdG9yOwogICAgIHJpbmZvLmRlY29kaW5nX2NhbGxzX3Rv
X25ldGVxID0gc3RhdHMuZGVjb2RpbmdfY2FsbHNfdG9fbmV0ZXE7CkBAIC0yMTkxLDYgKzIyNTMs
OCBAQCBib29sIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpHZXRTdGF0cyhWb2ljZU1lZGlhSW5m
byogaW5mbykgewogICAgIHJpbmZvLmRlY29kaW5nX3BsY19jbmcgPSBzdGF0cy5kZWNvZGluZ19w
bGNfY25nOwogICAgIHJpbmZvLmRlY29kaW5nX211dGVkX291dHB1dCA9IHN0YXRzLmRlY29kaW5n
X211dGVkX291dHB1dDsKICAgICByaW5mby5jYXB0dXJlX3N0YXJ0X250cF90aW1lX21zID0gc3Rh
dHMuY2FwdHVyZV9zdGFydF9udHBfdGltZV9tczsKKyAgICByaW5mby5qaXR0ZXJfYnVmZmVyX2Zs
dXNoZXMgPSBzdGF0cy5qaXR0ZXJfYnVmZmVyX2ZsdXNoZXM7CisKICAgICBpbmZvLT5yZWNlaXZl
cnMucHVzaF9iYWNrKHJpbmZvKTsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9pY2VlbmdpbmUu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS93ZWJydGN2b2ljZWVuZ2luZS5oCmluZGV4IGJlZGVkZTEyNDgwZGM3N2ZlNzRjMzBiYjU0Nzg3
YzE5NDg3ZDhhYjQuLjIxM2YxYjM5M2Y5ZTJjYTI4ZTA1OWYwNWNmMTFhNWUzZjZjMjhlNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2VuZ2luZS93ZWJydGN2b2ljZWVuZ2luZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2luZS5oCkBAIC00
MCw3ICs0MCw3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOwogCiAvLyBXZWJSdGNW
b2ljZUVuZ2luZSBpcyBhIGNsYXNzIHRvIGJlIHVzZWQgd2l0aCBDb21wb3NpdGVNZWRpYUVuZ2lu
ZS4KIC8vIEl0IHVzZXMgdGhlIFdlYlJ0YyBWb2ljZUVuZ2luZSBsaWJyYXJ5IGZvciBhdWRpbyBo
YW5kbGluZy4KLWNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5lIGZpbmFsIHsKK2NsYXNzIFdlYlJ0Y1Zv
aWNlRW5naW5lIGZpbmFsIDogcHVibGljIFZvaWNlRW5naW5lSW50ZXJmYWNlIHsKICAgZnJpZW5k
IGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOwogCiAgcHVibGljOgpAQCAtNTAsMTkgKzUw
LDIxIEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5lIGZpbmFsIHsKICAgICAgIGNvbnN0IHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVjb2RlckZhY3Rvcnk+JiBkZWNvZGVyX2ZhY3Rv
cnksCiAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb01peGVyPiBhdWRpb19t
aXhlciwKICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4g
YXVkaW9fcHJvY2Vzc2luZyk7Ci0gIH5XZWJSdGNWb2ljZUVuZ2luZSgpOworICB+V2ViUnRjVm9p
Y2VFbmdpbmUoKSBvdmVycmlkZTsKIAogICAvLyBEb2VzIGluaXRpYWxpemF0aW9uIHRoYXQgbmVl
ZHMgdG8gb2NjdXIgb24gdGhlIHdvcmtlciB0aHJlYWQuCi0gIHZvaWQgSW5pdCgpOworICB2b2lk
IEluaXQoKSBvdmVycmlkZTsKIAotICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0
YXRlPiBHZXRBdWRpb1N0YXRlKCkgY29uc3Q7Ci0gIFZvaWNlTWVkaWFDaGFubmVsKiBDcmVhdGVD
aGFubmVsKHdlYnJ0Yzo6Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKTsKKyAgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4gR2V0QXVkaW9TdGF0ZSgpIGNvbnN0IG92ZXJyaWRl
OworICBWb2ljZU1lZGlhQ2hhbm5lbCogQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgd2VicnRj
OjpDYWxsKiBjYWxsLAorICAgICAgY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZywKKyAgICAgIGNv
bnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywKKyAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0
aW9ucyYgY3J5cHRvX29wdGlvbnMpIG92ZXJyaWRlOwogCi0gIGNvbnN0IHN0ZDo6dmVjdG9yPEF1
ZGlvQ29kZWM+JiBzZW5kX2NvZGVjcygpIGNvbnN0OwotICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRp
b0NvZGVjPiYgcmVjdl9jb2RlY3MoKSBjb25zdDsKLSAgUnRwQ2FwYWJpbGl0aWVzIEdldENhcGFi
aWxpdGllcygpIGNvbnN0OworICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgc2VuZF9j
b2RlY3MoKSBjb25zdCBvdmVycmlkZTsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4m
IHJlY3ZfY29kZWNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBh
YmlsaXRpZXMoKSBjb25zdCBvdmVycmlkZTsKIAogICAvLyBGb3IgdHJhY2tpbmcgV2ViUnRjIGNo
YW5uZWxzLiBOZWVkZWQgYmVjYXVzZSB3ZSBoYXZlIHRvIHBhdXNlIHRoZW0KICAgLy8gYWxsIHdo
ZW4gc3dpdGNoaW5nIGRldmljZXMuCkBAIC03NCwxMCArNzYsMTAgQEAgY2xhc3MgV2ViUnRjVm9p
Y2VFbmdpbmUgZmluYWwgewogICAvLyBzcGVjaWZpZWQuIFdoZW4gdGhlIG1heGltdW0gZmlsZSBz
aXplIGlzIHJlYWNoZWQsIGxvZ2dpbmcgaXMgc3RvcHBlZCBhbmQKICAgLy8gdGhlIGZpbGUgaXMg
Y2xvc2VkLiBJZiBtYXhfc2l6ZV9ieXRlcyBpcyBzZXQgdG8gPD0gMCwgbm8gbGltaXQgd2lsbCBi
ZQogICAvLyB1c2VkLgotICBib29sIFN0YXJ0QWVjRHVtcChydGM6OlBsYXRmb3JtRmlsZSBmaWxl
LCBpbnQ2NF90IG1heF9zaXplX2J5dGVzKTsKKyAgYm9vbCBTdGFydEFlY0R1bXAocnRjOjpQbGF0
Zm9ybUZpbGUgZmlsZSwgaW50NjRfdCBtYXhfc2l6ZV9ieXRlcykgb3ZlcnJpZGU7CiAKICAgLy8g
U3RvcHMgQUVDIGR1bXAuCi0gIHZvaWQgU3RvcEFlY0R1bXAoKTsKKyAgdm9pZCBTdG9wQWVjRHVt
cCgpIG92ZXJyaWRlOwogCiAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nOjpDb25maWcg
R2V0QXBtQ29uZmlnRm9yVGVzdCgpIGNvbnN0IHsKICAgICByZXR1cm4gYXBtKCktPkdldENvbmZp
ZygpOwpAQCAtMTMwLDYgKzEzMiw3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5lIGZpbmFsIHsK
ICAgLy8gSml0dGVyIGJ1ZmZlciBzZXR0aW5ncyBmb3IgbmV3IHN0cmVhbXMuCiAgIHNpemVfdCBh
dWRpb19qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzXyA9IDUwOwogICBib29sIGF1ZGlvX2ppdHRl
cl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlXyA9IGZhbHNlOworICBpbnQgYXVkaW9faml0dGVyX2J1
ZmZlcl9taW5fZGVsYXlfbXNfID0gMDsKIAogICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RS
VUNUT1JTKFdlYlJ0Y1ZvaWNlRW5naW5lKTsKIH07CkBAIC0xNDIsNiArMTQ1LDcgQEAgY2xhc3Mg
V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwgZmluYWwgOiBwdWJsaWMgVm9pY2VNZWRpYUNoYW5uZWws
CiAgIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKFdlYlJ0Y1ZvaWNlRW5naW5lKiBlbmdpbmUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9f
b3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpDYWxsKiBjYWxsKTsK
ICAgfldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKCkgb3ZlcnJpZGU7CiAKQEAgLTE5Miw5ICsxOTYs
OSBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCBmaW5hbCA6IHB1YmxpYyBWb2ljZU1l
ZGlhQ2hhbm5lbCwKICAgYm9vbCBJbnNlcnREdG1mKHVpbnQzMl90IHNzcmMsIGludCBldmVudCwg
aW50IGR1cmF0aW9uKSBvdmVycmlkZTsKIAogICB2b2lkIE9uUGFja2V0UmVjZWl2ZWQocnRjOjpD
b3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSBvdmVycmlkZTsKICAgdm9pZCBPblJ0Y3BS
ZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgb3ZlcnJpZGU7CisgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgb3ZlcnJpZGU7CiAgIHZv
aWQgT25OZXR3b3JrUm91dGVDaGFuZ2VkKGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpOZXR3b3JrUm91dGUm
IG5ldHdvcmtfcm91dGUpIG92ZXJyaWRlOwogICB2b2lkIE9uUmVhZHlUb1NlbmQoYm9vbCByZWFk
eSkgb3ZlcnJpZGU7CkBAIC0yMTgsNiArMjIyLDEwIEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFD
aGFubmVsIGZpbmFsIDogcHVibGljIFZvaWNlTWVkaWFDaGFubmVsLAogICAgIGlmIChEc2NwRW5h
YmxlZCgpKSB7CiAgICAgICBydGNfb3B0aW9ucy5kc2NwID0gUHJlZmVycmVkRHNjcCgpOwogICAg
IH0KKyAgICBydGNfb3B0aW9ucy5pbmZvX3NpZ25hbGVkX2FmdGVyX3NlbnQuaW5jbHVkZWRfaW5f
ZmVlZGJhY2sgPQorICAgICAgICBvcHRpb25zLmluY2x1ZGVkX2luX2ZlZWRiYWNrOworICAgIHJ0
Y19vcHRpb25zLmluZm9fc2lnbmFsZWRfYWZ0ZXJfc2VudC5pbmNsdWRlZF9pbl9hbGxvY2F0aW9u
ID0KKyAgICAgICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uOwogICAgIHJldHVybiBW
b2ljZU1lZGlhQ2hhbm5lbDo6U2VuZFBhY2tldCgmcGFja2V0LCBydGNfb3B0aW9ucyk7CiAgIH0K
IApAQCAtMjI3LDYgKzIzNSw3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsIGZpbmFs
IDogcHVibGljIFZvaWNlTWVkaWFDaGFubmVsLAogICAgIGlmIChEc2NwRW5hYmxlZCgpKSB7CiAg
ICAgICBydGNfb3B0aW9ucy5kc2NwID0gUHJlZmVycmVkRHNjcCgpOwogICAgIH0KKwogICAgIHJl
dHVybiBWb2ljZU1lZGlhQ2hhbm5lbDo6U2VuZFJ0Y3AoJnBhY2tldCwgcnRjX29wdGlvbnMpOwog
ICB9CiAKQEAgLTI1OCw2ICsyNjcsNyBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCBm
aW5hbCA6IHB1YmxpYyBWb2ljZU1lZGlhQ2hhbm5lbCwKICAgc3RkOjp2ZWN0b3I8QXVkaW9Db2Rl
Yz4gcmVjdl9jb2RlY3NfOwogCiAgIGludCBtYXhfc2VuZF9iaXRyYXRlX2Jwc18gPSAwOworICBy
dGM6OkRpZmZTZXJ2Q29kZVBvaW50IHByZWZlcnJlZF9kc2NwXyA9IHJ0Yzo6RFNDUF9ERUZBVUxU
OwogICBBdWRpb09wdGlvbnMgb3B0aW9uc187CiAgIGFic2w6Om9wdGlvbmFsPGludD4gZHRtZl9w
YXlsb2FkX3R5cGVfOwogICBpbnQgZHRtZl9wYXlsb2FkX2ZyZXFfID0gLTE7CkBAIC0yNjgsNiAr
Mjc4LDggQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwgZmluYWwgOiBwdWJsaWMgVm9p
Y2VNZWRpYUNoYW5uZWwsCiAgIGJvb2wgc2VuZF8gPSBmYWxzZTsKICAgd2VicnRjOjpDYWxsKiBj
b25zdCBjYWxsXyA9IG51bGxwdHI7CiAKKyAgY29uc3QgTWVkaWFDb25maWc6OkF1ZGlvIGF1ZGlv
X2NvbmZpZ187CisKICAgLy8gUXVldWUgb2YgdW5zaWduYWxlZCBTU1JDczsgb2xkZXN0IGF0IHRo
ZSBiZWdpbm5pbmcuCiAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiB1bnNpZ25hbGVkX3JlY3Zfc3Ny
Y3NfOwogCkBAIC0zMDIsNiArMzE0LDkgQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwg
ZmluYWwgOiBwdWJsaWMgVm9pY2VNZWRpYUNoYW5uZWwsCiAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9D
b2RlY1BhaXJJZCBjb2RlY19wYWlyX2lkXyA9CiAgICAgICB3ZWJydGM6OkF1ZGlvQ29kZWNQYWly
SWQ6OkNyZWF0ZSgpOwogCisgIC8vIFBlciBwZWVyIGNvbm5lY3Rpb24gY3J5cHRvIG9wdGlvbnMg
dGhhdCBsYXN0IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHBlZXIKKyAgLy8gY29ubmVjdGlvbi4K
KyAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKICAgLy8gVW5z
aWduYWxlZCBzdHJlYW1zIGhhdmUgYW4gb3B0aW9uIHRvIGhhdmUgYSBmcmFtZSBkZWNyeXB0b3Ig
c2V0IG9uIHRoZW0uCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRGVjcnlwdG9y
SW50ZXJmYWNlPgogICAgICAgdW5zaWduYWxlZF9mcmFtZV9kZWNyeXB0b3JfOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5l
L3dlYnJ0Y3ZvaWNlZW5naW5lX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5lX3VuaXR0ZXN0
LmNjCmluZGV4IGJiODE2ZWVkMTE4MjdmMmMwY2RjNjI5OTE2NDNlYmRiMDk4MzVmODMuLjlmZDVk
ZmIwYWQ4NWM0Zjc4MzlkYThhMzM0Y2EzZTEzMjkzMDIwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2b2lj
ZWVuZ2luZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9pY2VlbmdpbmVfdW5pdHRlc3QuY2MKQEAg
LTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2Rl
Y3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3J0
cHBhcmFtZXRlcnMuaCIKQEAgLTIxMCw4ICsyMTEsOSBAQCBjbGFzcyBXZWJSdGNWb2ljZUVuZ2lu
ZVRlc3RGYWtlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogCiAgIGJvb2wgU2V0dXBDaGFubmVs
KCkgewogICAgIEVYUEVDVF9DQUxMKCphcG1fLCBTZXRFeHRyYU9wdGlvbnModGVzdGluZzo6Xykp
OwotICAgIGNoYW5uZWxfID0gZW5naW5lXy0+Q3JlYXRlQ2hhbm5lbCgmY2FsbF8sIGNyaWNrZXQ6
Ok1lZGlhQ29uZmlnKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
aWNrZXQ6OkF1ZGlvT3B0aW9ucygpKTsKKyAgICBjaGFubmVsXyA9IGVuZ2luZV8tPkNyZWF0ZU1l
ZGlhQ2hhbm5lbCgmY2FsbF8sIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6QXVkaW9PcHRpb25zKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9P
cHRpb25zKCkpOwogICAgIHJldHVybiAoY2hhbm5lbF8gIT0gbnVsbHB0cik7CiAgIH0KIApAQCAt
MjUzLDcgKzI1NSw3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CiAKICAgdm9pZCBEZWxpdmVyUGFja2V0KGNvbnN0IHZvaWQqIGRhdGEs
IGludCBsZW4pIHsKICAgICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldChyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuKTsKLSAgICBjaGFubmVsXy0+T25QYWNr
ZXRSZWNlaXZlZCgmcGFja2V0LCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgY2hhbm5lbF8tPk9u
UGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICB9CiAK
ICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlIHsgZGVsZXRlIGNoYW5uZWxfOyB9CkBAIC0zNDks
NiArMzUxLDMwIEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiAgICAgRVhQRUNUX0VRKDEyMywgdGVsZXBob25lX2V2ZW50LmR1cmF0aW9u
X21zKTsKICAgfQogCisgIHZvaWQgVGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZXIoYm9vbCBleHRt
YXBfYWxsb3dfbWl4ZWQpIHsKKyAgICAvLyBGb3IgYSBjYWxsZXIsIHRoZSBhbnN3ZXIgd2lsbCBi
ZSBhcHBsaWVkIGluIHNldCByZW1vdGUgZGVzY3JpcHRpb24KKyAgICAvLyB3aGVyZSBTZXRTZW5k
UGFyYW1ldGVycygpIGlzIGNhbGxlZC4KKyAgICBFWFBFQ1RfVFJVRShTZXR1cENoYW5uZWwoKSk7
CisgICAgRVhQRUNUX1RSVUUoCisgICAgICAgIGNoYW5uZWxfLT5BZGRTZW5kU3RyZWFtKGNyaWNr
ZXQ6OlN0cmVhbVBhcmFtczo6Q3JlYXRlTGVnYWN5KGtTc3JjWCkpKTsKKyAgICBzZW5kX3BhcmFt
ZXRlcnNfLmV4dG1hcF9hbGxvd19taXhlZCA9IGV4dG1hcF9hbGxvd19taXhlZDsKKyAgICBTZXRT
ZW5kUGFyYW1ldGVycyhzZW5kX3BhcmFtZXRlcnNfKTsKKyAgICBjb25zdCB3ZWJydGM6OkF1ZGlv
U2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcgPSBHZXRTZW5kU3RyZWFtQ29uZmlnKGtTc3JjWCk7
CisgICAgRVhQRUNUX0VRKGV4dG1hcF9hbGxvd19taXhlZCwgY29uZmlnLnJ0cC5leHRtYXBfYWxs
b3dfbWl4ZWQpOworICB9CisKKyAgdm9pZCBUZXN0RXh0bWFwQWxsb3dNaXhlZENhbGxlZShib29s
IGV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIC8vIEZvciBhIGNhbGxlZSwgdGhlIGFuc3dlciB3
aWxsIGJlIGFwcGxpZWQgaW4gc2V0IGxvY2FsIGRlc2NyaXB0aW9uCisgICAgLy8gd2hlcmUgU2V0
RXh0bWFwQWxsb3dNaXhlZCgpIGFuZCBBZGRTZW5kU3RyZWFtKCkgYXJlIGNhbGxlZC4KKyAgICBF
WFBFQ1RfVFJVRShTZXR1cENoYW5uZWwoKSk7CisgICAgY2hhbm5lbF8tPlNldEV4dG1hcEFsbG93
TWl4ZWQoZXh0bWFwX2FsbG93X21peGVkKTsKKyAgICBFWFBFQ1RfVFJVRSgKKyAgICAgICAgY2hh
bm5lbF8tPkFkZFNlbmRTdHJlYW0oY3JpY2tldDo6U3RyZWFtUGFyYW1zOjpDcmVhdGVMZWdhY3ko
a1NzcmNYKSkpOworCisgICAgY29uc3Qgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyYg
Y29uZmlnID0gR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3NyY1gpOworICAgIEVYUEVDVF9FUShleHRt
YXBfYWxsb3dfbWl4ZWQsIGNvbmZpZy5ydHAuZXh0bWFwX2FsbG93X21peGVkKTsKKyAgfQorCiAg
IC8vIFRlc3QgdGhhdCBzZW5kIGJhbmR3aWR0aCBpcyBzZXQgY29ycmVjdGx5LgogICAvLyB8Y29k
ZWN8IGlzIHRoZSBjb2RlYyB1bmRlciB0ZXN0LgogICAvLyB8bWF4X2JpdHJhdGV8IGlzIGEgcGFy
YW1ldGVyIHRvIHNldCB0byBTZXRNYXhTZW5kQmFuZHdpZHRoKCkuCkBAIC03MzUsNyArNzYxLDcg
QEAgY2xhc3MgV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKIH07CiAKIC8vIFRlc3RzIHRoYXQgd2UgY2FuIGNyZWF0ZSBhbmQgZGVzdHJveSBhIGNoYW5u
ZWwuCi1URVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgQ3JlYXRlQ2hhbm5lbCkgewor
VEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIENyZWF0ZU1lZGlhQ2hhbm5lbCkgewog
ICBFWFBFQ1RfVFJVRShTZXR1cENoYW5uZWwoKSk7CiB9CiAKQEAgLTExMzcsNiArMTE2MywyOCBA
QCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgUnRwUGFyYW1ldGVyc0FyZVBlclN0
cmVhbSkgewogICBFWFBFQ1RfRVEoMzIwMDAsIEdldENvZGVjQml0cmF0ZShrU3NyY3M0WzJdKSk7
CiB9CiAKKy8vIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5uZXR3b3JrX3ByaW9yaXR5IG11c3Qg
YmUgb25lIG9mIGEgZmV3IHZhbHVlcworLy8gZGVyaXZlZCBmcm9tIHRoZSBkZWZhdWx0IHByaW9y
aXR5LCBjb3JyZXNwb25kaW5nIHRvIHZlcnktbG93LCBsb3csIG1lZGl1bSwKKy8vIG9yIGhpZ2gu
CitURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0UnRwU2VuZFBhcmFtZXRlcnNJ
bnZhbGlkTmV0d29ya1ByaW9yaXR5KSB7CisgIEVYUEVDVF9UUlVFKFNldHVwU2VuZFN0cmVhbSgp
KTsKKyAgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBjaGFubmVsXy0+R2V0UnRw
U2VuZFBhcmFtZXRlcnMoa1NzcmNYKTsKKyAgRVhQRUNUX0VRKDFVTCwgcGFyYW1ldGVycy5lbmNv
ZGluZ3Muc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3Jp
dHksCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5
KTsKKworICBkb3VibGUgZ29vZF92YWx1ZXNbXSA9IHswLjUsIDEuMCwgMi4wLCA0LjB9OworICBk
b3VibGUgYmFkX3ZhbHVlc1tdID0gey0xLjAsIDAuMCwgMC40OSwgMC41MSwgMS4xLCAzLjk5LCA0
LjEsIDUuMH07CisgIGZvciAoYXV0byBpdCA6IGdvb2RfdmFsdWVzKSB7CisgICAgcGFyYW1ldGVy
cy5lbmNvZGluZ3NbMF0ubmV0d29ya19wcmlvcml0eSA9IGl0OworICAgIEVYUEVDVF9UUlVFKGNo
YW5uZWxfLT5TZXRSdHBTZW5kUGFyYW1ldGVycyhrU3NyY1gsIHBhcmFtZXRlcnMpLm9rKCkpOwor
ICB9CisgIGZvciAoYXV0byBpdCA6IGJhZF92YWx1ZXMpIHsKKyAgICBwYXJhbWV0ZXJzLmVuY29k
aW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5ID0gaXQ7CisgICAgRVhQRUNUX0ZBTFNFKGNoYW5uZWxf
LT5TZXRSdHBTZW5kUGFyYW1ldGVycyhrU3NyY1gsIHBhcmFtZXRlcnMpLm9rKCkpOworICB9Cit9
CisKIC8vIFRlc3QgdGhhdCBHZXRSdHBTZW5kUGFyYW1ldGVycyByZXR1cm5zIHRoZSBjdXJyZW50
bHkgY29uZmlndXJlZCBjb2RlY3MuCiBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwg
R2V0UnRwU2VuZFBhcmFtZXRlcnNDb2RlY3MpIHsKICAgRVhQRUNUX1RSVUUoU2V0dXBTZW5kU3Ry
ZWFtKCkpOwpAQCAtMTU4NywxOCArMTYzNSw2IEBAIFRFU1RfRihXZWJSdGNWb2ljZUVuZ2luZVRl
c3RGYWtlLCBTZXRNYXhTZW5kQmFuZHdpZHRoRm9yQXVkaW9Eb2VzbnRBZmZlY3RCd2UpIHsKICAg
U2V0U2VuZFBhcmFtZXRlcnMoc2VuZF9wYXJhbWV0ZXJzXyk7CiB9CiAKLS8vIFRlc3QgdGhhdCB3
ZSBjYW4gZW5hYmxlIE5BQ0sgd2l0aCBvcHVzIGFzIGNhbGxlci4KLVRFU1RfRihXZWJSdGNWb2lj
ZUVuZ2luZVRlc3RGYWtlLCBTZXRTZW5kQ29kZWNFbmFibGVOYWNrQXNDYWxsZXIpIHsKLSAgRVhQ
RUNUX1RSVUUoU2V0dXBTZW5kU3RyZWFtKCkpOwotICBjcmlja2V0OjpBdWRpb1NlbmRQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhrT3B1c0NvZGVj
KTsKLSAgcGFyYW1ldGVycy5jb2RlY3NbMF0uQWRkRmVlZGJhY2tQYXJhbShjcmlja2V0OjpGZWVk
YmFja1BhcmFtKAotICAgICAgY3JpY2tldDo6a1J0Y3BGYlBhcmFtTmFjaywgY3JpY2tldDo6a1Bh
cmFtVmFsdWVFbXB0eSkpOwotICBFWFBFQ1RfRVEoMCwgR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3Ny
Y1gpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKLSAgU2V0U2VuZFBhcmFtZXRlcnMocGFyYW1l
dGVycyk7Ci0gIEVYUEVDVF9FUShrUnRwSGlzdG9yeU1zLCBHZXRTZW5kU3RyZWFtQ29uZmlnKGtT
c3JjWCkucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMpOwotfQotCiAvLyBUZXN0IHRoYXQgd2UgY2Fu
IGVuYWJsZSBOQUNLIHdpdGggb3B1cyBhcyBjYWxsZWUuCiBURVNUX0YoV2ViUnRjVm9pY2VFbmdp
bmVUZXN0RmFrZSwgU2V0U2VuZENvZGVjRW5hYmxlTmFja0FzQ2FsbGVlKSB7CiAgIEVYUEVDVF9U
UlVFKFNldHVwUmVjdlN0cmVhbSgpKTsKQEAgLTE2MTMsNyArMTY0OSw2IEBAIFRFU1RfRihXZWJS
dGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBTZXRTZW5kQ29kZWNFbmFibGVOYWNrQXNDYWxsZWUpIHsK
IAogICBFWFBFQ1RfVFJVRSgKICAgICAgIGNoYW5uZWxfLT5BZGRTZW5kU3RyZWFtKGNyaWNrZXQ6
OlN0cmVhbVBhcmFtczo6Q3JlYXRlTGVnYWN5KGtTc3JjWCkpKTsKLSAgRVhQRUNUX0VRKGtSdHBI
aXN0b3J5TXMsIEdldFNlbmRTdHJlYW1Db25maWcoa1NzcmNYKS5ydHAubmFjay5ydHBfaGlzdG9y
eV9tcyk7CiB9CiAKIC8vIFRlc3QgdGhhdCB3ZSBjYW4gZW5hYmxlIE5BQ0sgb24gcmVjZWl2ZSBz
dHJlYW1zLgpAQCAtMTYyNCwyOSArMTY1OSwxMSBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVU
ZXN0RmFrZSwgU2V0U2VuZENvZGVjRW5hYmxlTmFja1JlY3ZTdHJlYW1zKSB7CiAgIHBhcmFtZXRl
cnMuY29kZWNzLnB1c2hfYmFjayhrT3B1c0NvZGVjKTsKICAgcGFyYW1ldGVycy5jb2RlY3NbMF0u
QWRkRmVlZGJhY2tQYXJhbShjcmlja2V0OjpGZWVkYmFja1BhcmFtKAogICAgICAgY3JpY2tldDo6
a1J0Y3BGYlBhcmFtTmFjaywgY3JpY2tldDo6a1BhcmFtVmFsdWVFbXB0eSkpOwotICBFWFBFQ1Rf
RVEoMCwgR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21z
KTsKICAgRVhQRUNUX0VRKDAsIEdldFJlY3ZTdHJlYW1Db25maWcoa1NzcmNZKS5ydHAubmFjay5y
dHBfaGlzdG9yeV9tcyk7CiAgIFNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotICBFWFBF
Q1RfRVEoa1J0cEhpc3RvcnlNcywgR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNr
LnJ0cF9oaXN0b3J5X21zKTsKICAgRVhQRUNUX0VRKGtSdHBIaXN0b3J5TXMsIEdldFJlY3ZTdHJl
YW1Db25maWcoa1NzcmNZKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7CiB9CiAKLS8vIFRlc3Qg
dGhhdCB3ZSBjYW4gZGlzYWJsZSBOQUNLLgotVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZh
a2UsIFNldFNlbmRDb2RlY0Rpc2FibGVOYWNrKSB7Ci0gIEVYUEVDVF9UUlVFKFNldHVwU2VuZFN0
cmVhbSgpKTsKLSAgY3JpY2tldDo6QXVkaW9TZW5kUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICBw
YXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soa09wdXNDb2RlYyk7Ci0gIHBhcmFtZXRlcnMuY29k
ZWNzWzBdLkFkZEZlZWRiYWNrUGFyYW0oY3JpY2tldDo6RmVlZGJhY2tQYXJhbSgKLSAgICAgIGNy
aWNrZXQ6OmtSdGNwRmJQYXJhbU5hY2ssIGNyaWNrZXQ6OmtQYXJhbVZhbHVlRW1wdHkpKTsKLSAg
U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycyk7Ci0gIEVYUEVDVF9FUShrUnRwSGlzdG9yeU1z
LCBHZXRTZW5kU3RyZWFtQ29uZmlnKGtTc3JjWCkucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMpOwot
Ci0gIHBhcmFtZXRlcnMuY29kZWNzLmNsZWFyKCk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hf
YmFjayhrT3B1c0NvZGVjKTsKLSAgU2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycyk7Ci0gIEVY
UEVDVF9FUSgwLCBHZXRTZW5kU3RyZWFtQ29uZmlnKGtTc3JjWCkucnRwLm5hY2sucnRwX2hpc3Rv
cnlfbXMpOwotfQotCiAvLyBUZXN0IHRoYXQgd2UgY2FuIGRpc2FibGUgTkFDSyBvbiByZWNlaXZl
IHN0cmVhbXMuCiBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0U2VuZENvZGVj
RGlzYWJsZU5hY2tSZWN2U3RyZWFtcykgewogICBFWFBFQ1RfVFJVRShTZXR1cFNlbmRTdHJlYW0o
KSk7CkBAIC0xNjU2LDEzICsxNjczLDExIEBAIFRFU1RfRihXZWJSdGNWb2ljZUVuZ2luZVRlc3RG
YWtlLCBTZXRTZW5kQ29kZWNEaXNhYmxlTmFja1JlY3ZTdHJlYW1zKSB7CiAgIHBhcmFtZXRlcnMu
Y29kZWNzWzBdLkFkZEZlZWRiYWNrUGFyYW0oY3JpY2tldDo6RmVlZGJhY2tQYXJhbSgKICAgICAg
IGNyaWNrZXQ6OmtSdGNwRmJQYXJhbU5hY2ssIGNyaWNrZXQ6OmtQYXJhbVZhbHVlRW1wdHkpKTsK
ICAgU2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycyk7Ci0gIEVYUEVDVF9FUShrUnRwSGlzdG9y
eU1zLCBHZXRTZW5kU3RyZWFtQ29uZmlnKGtTc3JjWCkucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMp
OwogICBFWFBFQ1RfRVEoa1J0cEhpc3RvcnlNcywgR2V0UmVjdlN0cmVhbUNvbmZpZyhrU3NyY1kp
LnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKIAogICBwYXJhbWV0ZXJzLmNvZGVjcy5jbGVhcigp
OwogICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soa09wdXNDb2RlYyk7CiAgIFNldFNlbmRQ
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotICBFWFBFQ1RfRVEoMCwgR2V0U2VuZFN0cmVhbUNvbmZp
ZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKICAgRVhQRUNUX0VRKDAsIEdldFJl
Y3ZTdHJlYW1Db25maWcoa1NzcmNZKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7CiB9CiAKQEAg
LTE2NzUsNyArMTY5MCw2IEBAIFRFU1RfRihXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBBZGRS
ZWN2U3RyZWFtRW5hYmxlTmFjaykgewogICBwYXJhbWV0ZXJzLmNvZGVjc1swXS5BZGRGZWVkYmFj
a1BhcmFtKGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0oCiAgICAgICBjcmlja2V0OjprUnRjcEZiUGFy
YW1OYWNrLCBjcmlja2V0OjprUGFyYW1WYWx1ZUVtcHR5KSk7CiAgIFNldFNlbmRQYXJhbWV0ZXJz
KHBhcmFtZXRlcnMpOwotICBFWFBFQ1RfRVEoa1J0cEhpc3RvcnlNcywgR2V0U2VuZFN0cmVhbUNv
bmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKIAogICBFWFBFQ1RfVFJVRShB
ZGRSZWN2U3RyZWFtKGtTc3JjWSkpOwogICBFWFBFQ1RfRVEoa1J0cEhpc3RvcnlNcywgR2V0UmVj
dlN0cmVhbUNvbmZpZyhrU3NyY1kpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKQEAgLTI3OTks
NiArMjgxMywyMCBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgSW5zZXJ0RHRt
Zk9uU2VuZFN0cmVhbUFzQ2FsbGVlKSB7CiAgIFRlc3RJbnNlcnREdG1mKGtTc3JjWCwgZmFsc2Us
IGtUZWxlcGhvbmVFdmVudENvZGVjMSk7CiB9CiAKKy8vIFRlc3QgcHJvcGFnYXRpb24gb2YgZXh0
bWFwIGFsbG93IG1peGVkIHNldHRpbmcuCitURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFr
ZSwgU2V0RXh0bWFwQWxsb3dNaXhlZEFzQ2FsbGVyKSB7CisgIFRlc3RFeHRtYXBBbGxvd01peGVk
Q2FsbGVyKC8qZXh0bWFwX2FsbG93X21peGVkPSovdHJ1ZSk7Cit9CitURVNUX0YoV2ViUnRjVm9p
Y2VFbmdpbmVUZXN0RmFrZSwgU2V0RXh0bWFwQWxsb3dNaXhlZERpc2FibGVkQXNDYWxsZXIpIHsK
KyAgVGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZXIoLypleHRtYXBfYWxsb3dfbWl4ZWQ9Ki9mYWxz
ZSk7Cit9CitURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0RXh0bWFwQWxsb3dN
aXhlZEFzQ2FsbGVlKSB7CisgIFRlc3RFeHRtYXBBbGxvd01peGVkQ2FsbGVlKC8qZXh0bWFwX2Fs
bG93X21peGVkPSovdHJ1ZSk7Cit9CitURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwg
U2V0RXh0bWFwQWxsb3dNaXhlZERpc2FibGVkQXNDYWxsZWUpIHsKKyAgVGVzdEV4dG1hcEFsbG93
TWl4ZWRDYWxsZWUoLypleHRtYXBfYWxsb3dfbWl4ZWQ9Ki9mYWxzZSk7Cit9CisKIFRFU1RfRihX
ZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBTZXRBdWRpb09wdGlvbnMpIHsKICAgRVhQRUNUX1RS
VUUoU2V0dXBTZW5kU3RyZWFtKCkpOwogICBFWFBFQ1RfVFJVRShBZGRSZWN2U3RyZWFtKGtTc3Jj
WSkpOwpAQCAtMjkxNCwxMSArMjk0MiwxNSBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0
RmFrZSwgU2V0T3B0aW9uT3ZlcnJpZGVzVmlhQ2hhbm5lbHMpIHsKICAgRVhQRUNUX0NBTEwoKmFw
bV8sIFNldEV4dHJhT3B0aW9ucyh0ZXN0aW5nOjpfKSkuVGltZXMoMTApOwogCiAgIHN0ZDo6dW5p
cXVlX3B0cjxjcmlja2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbD4gY2hhbm5lbDEoCi0gICAg
ICBzdGF0aWNfY2FzdDxjcmlja2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCo+KGVuZ2luZV8t
PkNyZWF0ZUNoYW5uZWwoCi0gICAgICAgICAgJmNhbGxfLCBjcmlja2V0OjpNZWRpYUNvbmZpZygp
LCBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSkpKTsKKyAgICAgIHN0YXRpY19jYXN0PGNyaWNrZXQ6
OldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKj4oCisgICAgICAgICAgZW5naW5lXy0+Q3JlYXRlTWVk
aWFDaGFubmVsKCZjYWxsXywgY3JpY2tldDo6TWVkaWFDb25maWcoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6QXVkaW9PcHRpb25zKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSkp
OwogICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw+IGNo
YW5uZWwyKAotICAgICAgc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5u
ZWwqPihlbmdpbmVfLT5DcmVhdGVDaGFubmVsKAotICAgICAgICAgICZjYWxsXywgY3JpY2tldDo6
TWVkaWFDb25maWcoKSwgY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpKSk7CisgICAgICBzdGF0aWNf
Y2FzdDxjcmlja2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCo+KAorICAgICAgICAgIGVuZ2lu
ZV8tPkNyZWF0ZU1lZGlhQ2hhbm5lbCgmY2FsbF8sIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkF1ZGlvT3B0aW9u
cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkNyeXB0
b09wdGlvbnMoKSkpKTsKIAogICAvLyBIYXZlIHRvIGFkZCBhIHN0cmVhbSB0byBtYWtlIFNldFNl
bmQgd29yay4KICAgY3JpY2tldDo6U3RyZWFtUGFyYW1zIHN0cmVhbTE7CkBAIC0zMDE3LDYgKzMw
NDksNyBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgVGVzdFNldERzY3BPcHRp
b25zKSB7CiAgIGNyaWNrZXQ6OkZha2VOZXR3b3JrSW50ZXJmYWNlIG5ldHdvcmtfaW50ZXJmYWNl
OwogICBjcmlja2V0OjpNZWRpYUNvbmZpZyBjb25maWc7CiAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlj
a2V0OjpXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbD4gY2hhbm5lbDsKKyAgd2VicnRjOjpSdHBQYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7CiAKICAgd2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZyBh
cG1fY29uZmlnOwogICBFWFBFQ1RfQ0FMTCgqYXBtXywgR2V0Q29uZmlnKCkpCkBAIC0zMDI2LDMy
ICszMDU5LDU0IEBAIFRFU1RfRihXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBUZXN0U2V0RHNj
cE9wdGlvbnMpIHsKICAgRVhQRUNUX0NBTEwoKmFwbV8sIFNldEV4dHJhT3B0aW9ucyh0ZXN0aW5n
OjpfKSkuVGltZXMoMyk7CiAKICAgY2hhbm5lbC5yZXNldChzdGF0aWNfY2FzdDxjcmlja2V0OjpX
ZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCo+KAotICAgICAgZW5naW5lXy0+Q3JlYXRlQ2hhbm5lbCgm
Y2FsbF8sIGNvbmZpZywgY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpKSk7Ci0gIGNoYW5uZWwtPlNl
dEludGVyZmFjZSgmbmV0d29ya19pbnRlcmZhY2UpOworICAgICAgZW5naW5lXy0+Q3JlYXRlTWVk
aWFDaGFubmVsKCZjYWxsXywgY29uZmlnLCBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpKTsK
KyAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKCZuZXR3b3JrX2ludGVyZmFjZSwgLyptZWRpYV90cmFu
c3BvcnQ9Ki9udWxscHRyKTsKICAgLy8gRGVmYXVsdCB2YWx1ZSB3aGVuIERTQ1AgaXMgZGlzYWJs
ZWQgc2hvdWxkIGJlIERTQ1BfREVGQVVMVC4KICAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9ERUZBVUxU
LCBuZXR3b3JrX2ludGVyZmFjZS5kc2NwKCkpOwogCiAgIGNvbmZpZy5lbmFibGVfZHNjcCA9IHRy
dWU7CiAgIGNoYW5uZWwucmVzZXQoc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRjVm9pY2VNZWRp
YUNoYW5uZWwqPigKLSAgICAgIGVuZ2luZV8tPkNyZWF0ZUNoYW5uZWwoJmNhbGxfLCBjb25maWcs
IGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKSkpOwotICBjaGFubmVsLT5TZXRJbnRlcmZhY2UoJm5l
dHdvcmtfaW50ZXJmYWNlKTsKKyAgICAgIGVuZ2luZV8tPkNyZWF0ZU1lZGlhQ2hhbm5lbCgmY2Fs
bF8sIGNvbmZpZywgY3JpY2tldDo6QXVkaW9PcHRpb25zKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKSk7CisgIGNoYW5uZWwtPlNl
dEludGVyZmFjZSgmbmV0d29ya19pbnRlcmZhY2UsIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0
cik7CisgIEVYUEVDVF9FUShydGM6OkRTQ1BfREVGQVVMVCwgbmV0d29ya19pbnRlcmZhY2UuZHNj
cCgpKTsKKworICAvLyBDcmVhdGUgYSBzZW5kIHN0cmVhbSB0byBjb25maWd1cmUKKyAgRVhQRUNU
X1RSVUUoCisgICAgICBjaGFubmVsLT5BZGRTZW5kU3RyZWFtKGNyaWNrZXQ6OlN0cmVhbVBhcmFt
czo6Q3JlYXRlTGVnYWN5KGtTc3JjWikpKTsKKyAgcGFyYW1ldGVycyA9IGNoYW5uZWwtPkdldFJ0
cFNlbmRQYXJhbWV0ZXJzKGtTc3JjWik7CisgIEFTU0VSVF9GQUxTRShwYXJhbWV0ZXJzLmVuY29k
aW5ncy5lbXB0eSgpKTsKKworICAvLyBWYXJpb3VzIHByaW9yaXRpZXMgbWFwIHRvIHZhcmlvdXMg
ZHNjcCB2YWx1ZXMuCisgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdvcmtfcHJpb3JpdHkg
PSA0LjA7CisgIEFTU0VSVF9UUlVFKGNoYW5uZWwtPlNldFJ0cFNlbmRQYXJhbWV0ZXJzKGtTc3Jj
WiwgcGFyYW1ldGVycykub2soKSk7CiAgIEVYUEVDVF9FUShydGM6OkRTQ1BfRUYsIG5ldHdvcmtf
aW50ZXJmYWNlLmRzY3AoKSk7CisgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdvcmtfcHJp
b3JpdHkgPSAwLjU7CisgIEFTU0VSVF9UUlVFKGNoYW5uZWwtPlNldFJ0cFNlbmRQYXJhbWV0ZXJz
KGtTc3JjWiwgcGFyYW1ldGVycykub2soKSk7CisgIEVYUEVDVF9FUShydGM6OkRTQ1BfQ1MxLCBu
ZXR3b3JrX2ludGVyZmFjZS5kc2NwKCkpOworCisgIC8vIEEgYmFkIHByaW9yaXR5IGRvZXMgbm90
IGNoYW5nZSB0aGUgZHNjcCB2YWx1ZS4KKyAgcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubmV0d29y
a19wcmlvcml0eSA9IDAuMDsKKyAgQVNTRVJUX0ZBTFNFKGNoYW5uZWwtPlNldFJ0cFNlbmRQYXJh
bWV0ZXJzKGtTc3JjWiwgcGFyYW1ldGVycykub2soKSk7CisgIEVYUEVDVF9FUShydGM6OkRTQ1Bf
Q1MxLCBuZXR3b3JrX2ludGVyZmFjZS5kc2NwKCkpOwogCiAgIC8vIFBhY2tldHMgc2hvdWxkIGFs
c28gc2VsZi1pZGVudGlmeSB0aGVpciBkc2NwIGluIFBhY2tldE9wdGlvbnMuCiAgIGNvbnN0IHVp
bnQ4X3Qga0RhdGFbMTBdID0gezB9OwogICBFWFBFQ1RfVFJVRShjaGFubmVsLT5TZW5kUnRjcChr
RGF0YSwgc2l6ZW9mKGtEYXRhKSkpOwotICBFWFBFQ1RfRVEocnRjOjpEU0NQX0VGLCBuZXR3b3Jr
X2ludGVyZmFjZS5vcHRpb25zKCkuZHNjcCk7CisgIEVYUEVDVF9FUShydGM6OkRTQ1BfQ1MxLCBu
ZXR3b3JrX2ludGVyZmFjZS5vcHRpb25zKCkuZHNjcCk7CiAKICAgLy8gVmVyaWZ5IHRoYXQgc2V0
dGluZyB0aGUgb3B0aW9uIHRvIGZhbHNlIHJlc2V0cyB0aGUKICAgLy8gRGlmZlNlcnZDb2RlUG9p
bnQuCiAgIGNvbmZpZy5lbmFibGVfZHNjcCA9IGZhbHNlOwogICBjaGFubmVsLnJlc2V0KHN0YXRp
Y19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKj4oCi0gICAgICBlbmdpbmVf
LT5DcmVhdGVDaGFubmVsKCZjYWxsXywgY29uZmlnLCBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSkp
KTsKLSAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKCZuZXR3b3JrX2ludGVyZmFjZSk7CisgICAgICBl
bmdpbmVfLT5DcmVhdGVNZWRpYUNoYW5uZWwoJmNhbGxfLCBjb25maWcsIGNyaWNrZXQ6OkF1ZGlv
T3B0aW9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5
cHRvT3B0aW9ucygpKSkpOworICBjaGFubmVsLT5TZXRJbnRlcmZhY2UoJm5ldHdvcmtfaW50ZXJm
YWNlLCAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogICAvLyBEZWZhdWx0IHZhbHVlIHdo
ZW4gRFNDUCBpcyBkaXNhYmxlZCBzaG91bGQgYmUgRFNDUF9ERUZBVUxULgogICBFWFBFQ1RfRVEo
cnRjOjpEU0NQX0RFRkFVTFQsIG5ldHdvcmtfaW50ZXJmYWNlLmRzY3AoKSk7CiAKLSAgY2hhbm5l
bC0+U2V0SW50ZXJmYWNlKG51bGxwdHIpOworICBjaGFubmVsLT5TZXRJbnRlcmZhY2UobnVsbHB0
ciwgbnVsbHB0cik7CiB9CiAKIFRFU1RfRihXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBTZXRP
dXRwdXRWb2x1bWUpIHsKQEAgLTMxOTQsOSArMzI0OSw5IEBAIFRFU1RfRihXZWJSdGNWb2ljZUVu
Z2luZVRlc3RGYWtlLCBEZWxpdmVyQXVkaW9QYWNrZXRfQ2FsbCkgewogICBjb25zdCBjcmlja2V0
OjpGYWtlQXVkaW9SZWNlaXZlU3RyZWFtKiBzID0KICAgICAgIGNhbGxfLkdldEF1ZGlvUmVjZWl2
ZVN0cmVhbShrQXVkaW9Tc3JjKTsKICAgRVhQRUNUX0VRKDAsIHMtPnJlY2VpdmVkX3BhY2tldHMo
KSk7Ci0gIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZrUGNtdVBhY2tldCwgcnRjOjpQYWNr
ZXRUaW1lKCkpOworICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgma1BjbXVQYWNrZXQsIC8q
IHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgRVhQRUNUX0VRKDEsIHMtPnJlY2VpdmVkX3BhY2tl
dHMoKSk7Ci0gIGNoYW5uZWxfLT5PblJ0Y3BSZWNlaXZlZCgma1J0Y3BQYWNrZXQsIHJ0Yzo6UGFj
a2V0VGltZSgpKTsKKyAgY2hhbm5lbF8tPk9uUnRjcFJlY2VpdmVkKCZrUnRjcFBhY2tldCwgLyog
cGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfRVEoMiwgcy0+cmVjZWl2ZWRfcGFja2V0
cygpKTsKIH0KIApAQCAtMzM3NCw4ICszNDI5LDkgQEAgVEVTVChXZWJSdGNWb2ljZUVuZ2luZVRl
c3QsIFN0YXJ0dXBTaHV0ZG93bikgewogICB3ZWJydGM6OlJ0Y0V2ZW50TG9nTnVsbEltcGwgZXZl
bnRfbG9nOwogICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpDYWxsPiBjYWxsKAogICAgICAgd2Vi
cnRjOjpDYWxsOjpDcmVhdGUod2VicnRjOjpDYWxsOjpDb25maWcoJmV2ZW50X2xvZykpKTsKLSAg
Y3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5uZWwgPSBlbmdpbmUuQ3JlYXRlQ2hhbm5l
bCgKLSAgICAgIGNhbGwuZ2V0KCksIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIGNyaWNrZXQ6OkF1
ZGlvT3B0aW9ucygpKTsKKyAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5uZWwgPSBl
bmdpbmUuQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbC5nZXQoKSwgY3JpY2tldDo6TWVk
aWFDb25maWcoKSwgY3JpY2tldDo6QXVkaW9PcHRpb25zKCksCisgICAgICB3ZWJydGM6OkNyeXB0
b09wdGlvbnMoKSk7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWwgIT0gbnVsbHB0cik7CiAgIGRlbGV0
ZSBjaGFubmVsOwogfQpAQCAtMzM5Nyw4ICszNDUzLDkgQEAgVEVTVChXZWJSdGNWb2ljZUVuZ2lu
ZVRlc3QsIFN0YXJ0dXBTaHV0ZG93bldpdGhFeHRlcm5hbEFETSkgewogICAgIHdlYnJ0Yzo6UnRj
RXZlbnRMb2dOdWxsSW1wbCBldmVudF9sb2c7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6
Q2FsbD4gY2FsbCgKICAgICAgICAgd2VicnRjOjpDYWxsOjpDcmVhdGUod2VicnRjOjpDYWxsOjpD
b25maWcoJmV2ZW50X2xvZykpKTsKLSAgICBjcmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCogY2hh
bm5lbCA9IGVuZ2luZS5DcmVhdGVDaGFubmVsKAotICAgICAgICBjYWxsLmdldCgpLCBjcmlja2V0
OjpNZWRpYUNvbmZpZygpLCBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSk7CisgICAgY3JpY2tldDo6
Vm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5uZWwgPSBlbmdpbmUuQ3JlYXRlTWVkaWFDaGFubmVsKAor
ICAgICAgICBjYWxsLmdldCgpLCBjcmlja2V0OjpNZWRpYUNvbmZpZygpLCBjcmlja2V0OjpBdWRp
b09wdGlvbnMoKSwKKyAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpOwogICAgIEVYUEVD
VF9UUlVFKGNoYW5uZWwgIT0gbnVsbHB0cik7CiAgICAgZGVsZXRlIGNoYW5uZWw7CiAgIH0KQEAg
LTM0MTcsNyArMzQ3NCw3IEBAIFRFU1QoV2ViUnRjVm9pY2VFbmdpbmVUZXN0LCBIYXNDb3JyZWN0
UGF5bG9hZFR5cGVNYXBwaW5nKSB7CiAgIGVuZ2luZS5Jbml0KCk7CiAgIGZvciAoY29uc3QgY3Jp
Y2tldDo6QXVkaW9Db2RlYyYgY29kZWMgOiBlbmdpbmUuc2VuZF9jb2RlY3MoKSkgewogICAgIGF1
dG8gaXNfY29kZWMgPSBbJmNvZGVjXShjb25zdCBjaGFyKiBuYW1lLCBpbnQgY2xvY2tyYXRlID0g
MCkgewotICAgICAgcmV0dXJuIFNUUl9DQVNFX0NNUChjb2RlYy5uYW1lLmNfc3RyKCksIG5hbWUp
ID09IDAgJiYKKyAgICAgIHJldHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjLm5hbWUs
IG5hbWUpICYmCiAgICAgICAgICAgICAgKGNsb2NrcmF0ZSA9PSAwIHx8IGNvZGVjLmNsb2NrcmF0
ZSA9PSBjbG9ja3JhdGUpOwogICAgIH07CiAgICAgaWYgKGlzX2NvZGVjKCJDTiIsIDE2MDAwKSkg
ewpAQCAtMzQ2Nyw4ICszNTI0LDkgQEAgVEVTVChXZWJSdGNWb2ljZUVuZ2luZVRlc3QsIEhhczMy
Q2hhbm5lbHMpIHsKICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5uZWxzWzMyXTsK
ICAgc2l6ZV90IG51bV9jaGFubmVscyA9IDA7CiAgIHdoaWxlIChudW1fY2hhbm5lbHMgPCBhcnJh
eXNpemUoY2hhbm5lbHMpKSB7Ci0gICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5u
ZWwgPSBlbmdpbmUuQ3JlYXRlQ2hhbm5lbCgKLSAgICAgICAgY2FsbC5nZXQoKSwgY3JpY2tldDo6
TWVkaWFDb25maWcoKSwgY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpOworICAgIGNyaWNrZXQ6OlZv
aWNlTWVkaWFDaGFubmVsKiBjaGFubmVsID0gZW5naW5lLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAg
ICAgICAgY2FsbC5nZXQoKSwgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgY3JpY2tldDo6QXVkaW9P
cHRpb25zKCksCisgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKICAgICBpZiAoIWNo
YW5uZWwpCiAgICAgICBicmVhazsKICAgICBjaGFubmVsc1tudW1fY2hhbm5lbHMrK10gPSBjaGFu
bmVsOwpAQCAtMzUwMiw3ICszNTYwLDggQEAgVEVTVChXZWJSdGNWb2ljZUVuZ2luZVRlc3QsIFNl
dFJlY3ZDb2RlY3MpIHsKICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6Q2FsbD4gY2FsbCgKICAg
ICAgIHdlYnJ0Yzo6Q2FsbDo6Q3JlYXRlKHdlYnJ0Yzo6Q2FsbDo6Q29uZmlnKCZldmVudF9sb2cp
KSk7CiAgIGNyaWNrZXQ6OldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsIGNoYW5uZWwoJmVuZ2luZSwg
Y3JpY2tldDo6TWVkaWFDb25maWcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSwgY2FsbC5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6QXVkaW9PcHRpb25z
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpD
cnlwdG9PcHRpb25zKCksIGNhbGwuZ2V0KCkpOwogICBjcmlja2V0OjpBdWRpb1JlY3ZQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CiAgIHBhcmFtZXRlcnMuY29kZWNzID0gZW5naW5lLnJlY3ZfY29kZWNz
KCk7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWwuU2V0UmVjdlBhcmFtZXRlcnMocGFyYW1ldGVycykp
OwpAQCAtMzU2NCw3ICszNjIzLDcgQEAgVEVTVChXZWJSdGNWb2ljZUVuZ2luZVRlc3QsIENvbGxl
Y3RSZWN2Q29kZWNzKSB7CiAgIGF1dG8gZmluZF9jb2RlYyA9IFsmY29kZWNzXShjb25zdCB3ZWJy
dGM6OlNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIC0+IGludCB7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgIT0gY29kZWNzLnNpemUoKTsgKytpKSB7CiAgICAgICBjb25zdCBjcmlja2V0OjpBdWRp
b0NvZGVjJiBjb2RlYyA9IGNvZGVjc1tpXTsKLSAgICAgIGlmIChTVFJfQ0FTRV9DTVAoY29kZWMu
bmFtZS5jX3N0cigpLCBmb3JtYXQubmFtZS5jX3N0cigpKSA9PSAwICYmCisgICAgICBpZiAoYWJz
bDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBmb3JtYXQubmFtZSkgJiYKICAgICAgICAg
ICBjb2RlYy5jbG9ja3JhdGUgPT0gZm9ybWF0LmNsb2NrcmF0ZV9oeiAmJgogICAgICAgICAgIGNv
ZGVjLmNoYW5uZWxzID09IGZvcm1hdC5udW1fY2hhbm5lbHMpIHsKICAgICAgICAgcmV0dXJuIHJ0
Yzo6Y2hlY2tlZF9jYXN0PGludD4oaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvT1dORVJTCmluZGV4IDgyNjJm
Zjc1MDg5NmZiNjliMWMwNzBkNTkwNTg2MWJhNDZkM2YwYjQuLmJjMjE4MmIxYjYwZjJjOWM0MzA2
MDI2MmFkZWExMGE4YzkwYmE0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvT1dORVJTCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvT1dORVJTCkBAIC0xLDIgKzEg
QEAKIGplcm9lbmRiQHdlYnJ0Yy5vcmcKLXNoYW1wc29uQHdlYnJ0Yy5vcmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0
cHRyYW5zcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL3NjdHAvc2N0cHRyYW5zcG9ydC5jYwppbmRleCBhOGI5NDVhNmYxNzNkOWJhMDZmMjlh
NGJiMjhjNGE1ZmFiYzA5ODIyLi40ZmZhYWY3ZjVhMDQ0OGQxMGZjMzFlZjQwNWNjM2VmNmI4NDhi
ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwdHJhbnNwb3J0LmNjCkBAIC04NTgs
NyArODU4LDcgQEAgdm9pZCBTY3RwVHJhbnNwb3J0OjpPbldyaXRhYmxlU3RhdGUocnRjOjpQYWNr
ZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0KSB7CiB2b2lkIFNjdHBUcmFuc3BvcnQ6Ok9u
UGFja2V0UmVhZChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91
cyAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykgewogICBS
VENfRENIRUNLX1JVTl9PTihuZXR3b3JrX3RocmVhZF8pOwogICBSVENfRENIRUNLX0VRKHRyYW5z
cG9ydF8sIHRyYW5zcG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRyYW5zcG9ydC5o
CmluZGV4IGE0MDFkOGI3OTVhOGFhOTE0YWUzNjRhYjEzNTUyNjI4YzUzMDc3MjEuLjVjMmE3NTBl
NGYzYzMyMjBjNGU5N2I0YjgwNzE2OTgzYmRkNDMwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRyYW5zcG9ydC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3Nj
dHAvc2N0cHRyYW5zcG9ydC5oCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVkZSA8ZXJybm8uaD4K
IAogI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxtZW1vcnk+ICAvLyBmb3IgdW5pcXVlX3B0ci4K
KyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHN0cmluZz4KICNp
bmNsdWRlIDx2ZWN0b3I+CkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU2N0cFRyYW5zcG9ydCA6
IHB1YmxpYyBTY3RwVHJhbnNwb3J0SW50ZXJuYWwsCiAgIHZpcnR1YWwgdm9pZCBPblBhY2tldFJl
YWQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlBhY2tldFRpbWUmIHBhY2tldF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBmbGFncyk7CiAKICAgLy8gTWV0aG9kcyByZWxhdGVkIHRvIHVzcnNjdHAgY2FsbGJhY2tz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvc2N0cC9zY3RwdHJhbnNwb3J0aW50ZXJuYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRyYW5zcG9ydGludGVybmFsLmgK
aW5kZXggMDM4MGE4NzBiNGMwYjA4ZDJjZTFiNDY4NDZiNTg4Njg0Y2JhNzdkMC4uNGMzYjU0MmE1
MjFkOGJiNjM0ODM3MjBiODA2NGRhNDY0OTVmNDlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwdHJhbnNwb3J0aW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnRpbnRlcm5hbC5oCkBAIC0xNCw3ICsxNCw3IEBACiAvLyBU
T0RPKGRlYWRiZWVmKTogTW92ZSBTQ1RQIGNvZGUgb3V0IG9mIG1lZGlhLywgYW5kIG1ha2UgaXQg
bm90IGRlcGVuZCBvbgogLy8gYW55dGhpbmcgaW4gbWVkaWEvLgogCi0jaW5jbHVkZSA8bWVtb3J5
PiAgLy8gZm9yIHVuaXF1ZV9wdHIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5n
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvQlVJTEQuZ24KaW5kZXggODEyNzI0NDQ2
MmIzMzU3MjY2Mjk2YWYyYzM1ODZmMTVjODhiZjZkMC4uZWYwMjk5MTRiMzA5M2MyYmU0MzhmYTIz
MGViYWJhYzFjNmYwNDkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL0JVSUxELmduCkBAIC01NCw2ICs1NCw3IEBA
IHJ0Y19zb3VyY2Vfc2V0KCJtb2R1bGVfYXBpIikgewogICAgICIuLi9hcGk6bGliamluZ2xlX3Bl
ZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgIi4uL21vZHVsZXMvcnRwX3J0Y3A6cnRwX3ZpZGVvX2hl
YWRlciIsCiAgICAgIi4uL3J0Y19iYXNlOnNhZmVfY29udmVyc2lvbnMiLAorICAgICIuLi9ydGNf
YmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgIF0KIH0KIApAQCAtMjM2LDYgKzIzNyw3IEBAIGlm
IChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIGRlcHMgPSBbCiAgICAgICAiOm1vZHVsZV9hcGki
LAogICAgICAgIi4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9y
dCIsCiAgICAgICAiYXVkaW9fY29kaW5nOmF1ZGlvX2NvZGluZ191bml0dGVzdHMiLAogICAgICAg
ImF1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfdW5pdHRlc3RzIiwKICAgICAgICJhdWRpb19taXhl
cjphdWRpb19taXhlcl91bml0dGVzdHMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9CVUlMRC5nbgppbmRleCA0OTgyZDE5YTdiMzAzNmY3NTA4OTAxMmQxZTBlM2Q3NDE3Y2Jm
YmM0Li5kZjRiYTIzZmZmNWQzNzc0MDEzOGM3N2I4MDIyMzliNGM2MjgzMTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9CVUlMRC5nbgpAQCAtMTQsMzIgKzE0LDYgQEAg
aWYgKCFidWlsZF93aXRoX21vemlsbGEpIHsKIAogdmlzaWJpbGl0eSA9IFsgIjoqIiBdCiAKLWF1
ZGlvX2NvZGVjX2RlcHMgPSBbCi0gICI6Y25nIiwKLSAgIjpnNzExIiwKLSAgIjpwY20xNmIiLAot
XQotaWYgKHJ0Y19pbmNsdWRlX2lsYmMpIHsKLSAgYXVkaW9fY29kZWNfZGVwcyArPSBbICI6aWxi
YyIgXQotfQotaWYgKHJ0Y19pbmNsdWRlX29wdXMpIHsKLSAgYXVkaW9fY29kZWNfZGVwcyArPSBb
ICI6d2VicnRjX29wdXMiIF0KLX0KLWlmIChjdXJyZW50X2NwdSA9PSAiYXJtIikgewotICBhdWRp
b19jb2RlY19kZXBzICs9IFsgIjppc2FjX2ZpeCIgXQotfSBlbHNlIHsKLSAgYXVkaW9fY29kZWNf
ZGVwcyArPSBbICI6aXNhYyIgXQotfQotYXVkaW9fY29kZWNfZGVwcyArPSBbICI6ZzcyMiIgXQot
aWYgKCFidWlsZF93aXRoX21vemlsbGEgJiYgIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKLSAgYXVk
aW9fY29kZWNfZGVwcyArPSBbICI6cmVkIiBdCi19Ci1hdWRpb19jb2RpbmdfZGVwcyA9IGF1ZGlv
X2NvZGVjX2RlcHMgKyBbCi0gICAgICAgICAgICAgICAgICAgICAgIi4uLy4uOndlYnJ0Y19jb21t
b24iLAotICAgICAgICAgICAgICAgICAgICAgICIuLi8uLi9jb21tb25fYXVkaW8iLAotICAgICAg
ICAgICAgICAgICAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAotICAgICAgICAgICAgICAg
ICAgICBdCi0KIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZm9ybWF0X2NvbnZlcnNpb24iKSB7
CiAgIHZpc2liaWxpdHkgKz0gd2VicnRjX2RlZmF1bHRfdmlzaWJpbGl0eQogICBzb3VyY2VzID0g
WwpAQCAtNTMsNiArMjcsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2Zvcm1hdF9jb252
ZXJzaW9uIikgewogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8uLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnNhbml0aXplciIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTYz
LDcgKzM4LDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJyZW50X2FfY29kZWMiKSB7CiAgICMgVE9E
TyhidWdzLndlYnJ0Yy5vcmcvOTgwOCk6IE1vdmUgdG8gcHJpdmF0ZSB2aXNpYmlsaXR5IGFzIHNv
b24gYXMgdGhhdAogICAjIGNsaWVudCBjb2RlIGdldHMgdXBkYXRlZC4KICAgdmlzaWJpbGl0eSAr
PSBbICIqIiBdCi0gIGFsbG93X3BvaXNvbiA9IFsgImF1ZGlvX2NvZGVjcyIgXQogCiAgIHNvdXJj
ZXMgPSBbCiAgICAgImFjbTIvYWNtX2NvZGVjX2RhdGFiYXNlLmNjIiwKQEAgLTcyLDIwICs0Niwx
OCBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJlbnRfYV9jb2RlYyIpIHsKICAgICAiYWNtMi9yZW50
X2FfY29kZWMuaCIsCiAgIF0KICAgZGVwcyA9IFsKLSAgICAgICAgICAgIi4uLy4uL3J0Y19iYXNl
OmNoZWNrcyIsCi0gICAgICAgICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCi0gICAgICAgICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCi0gICAgICAg
ICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICAgICAg
ICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCi0gICAgICAgICAgICIuLi8uLi9ydGNfYmFzZTpwcm90
b2J1Zl91dGlscyIsCi0gICAgICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3Zl
ZCIsCi0gICAgICAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAotICAgICAgICAgICAiOmF1
ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMiLAotICAgICAgICAgICAiOmlzYWNfY29tbW9uIiwK
LSAgICAgICAgICAgIjppc2FjX2ZpeF9jIiwKLSAgICAgICAgICAgIjpuZXRlcV9kZWNvZGVyX2Vu
dW0iLAotICAgICAgICAgXSArIGF1ZGlvX2NvZGVjX2RlcHMKLQorICAgICI6YXVkaW9fY29kaW5n
X21vZHVsZV90eXBlZGVmcyIsCisgICAgIjpuZXRlcV9kZWNvZGVyX2VudW0iLAorICAgICIuLi8u
Ljp3ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAorICAgICIuLi8u
Li9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAorICAgICIuLi8uLi9ydGNfYmFz
ZTpjaGVja3MiLAorICAgICIuLi8uLi9ydGNfYmFzZTpwcm90b2J1Zl91dGlscyIsCisgICAgIi4u
Ly4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dyYXBw
ZXJzIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgXQogICBk
ZWZpbmVzID0gYXVkaW9fY29kZWNfZGVmaW5lcwogfQogCkBAIC05NSwxMiArNjcsMTIgQEAgcnRj
X3NvdXJjZV9zZXQoImF1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMiKSB7CiAgIF0KICAgZGVw
cyA9IFsKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmRl
cHJlY2F0aW9uIiwKICAgXQogfQogCiBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2NvZGluZyIp
IHsKICAgdmlzaWJpbGl0eSArPSBbICIqIiBdCi0gIGFsbG93X3BvaXNvbiA9IFsgImF1ZGlvX2Nv
ZGVjcyIgXSAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84Mzk2KTogUmVtb3ZlLgogICBzb3VyY2Vz
ID0gWwogICAgICJhY20yL2FjbV9yZWNlaXZlci5jYyIsCiAgICAgImFjbTIvYWNtX3JlY2VpdmVy
LmgiLApAQCAtMTA5LDM3ICs4MSwzNCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2NvZGlu
ZyIpIHsKICAgICAiYWNtMi9hdWRpb19jb2RpbmdfbW9kdWxlLmNjIiwKICAgICAiYWNtMi9jYWxs
X3N0YXRpc3RpY3MuY2MiLAogICAgICJhY20yL2NhbGxfc3RhdGlzdGljcy5oIiwKLSAgICAiYWNt
Mi9jb2RlY19tYW5hZ2VyLmNjIiwKLSAgICAiYWNtMi9jb2RlY19tYW5hZ2VyLmgiLAogICAgICJp
bmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGUuaCIsCiAgIF0KIAogICBkZWZpbmVzID0gW10KIAot
ICBpZiAocnRjX2luY2x1ZGVfb3B1cykgewotICAgIHB1YmxpY19kZXBzID0gWwotICAgICAgIjp3
ZWJydGNfb3B1cyIsCi0gICAgXQotICB9Ci0KLSAgZGVwcyA9IGF1ZGlvX2NvZGluZ19kZXBzICsg
WwotICAgICAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3MiLAotICAgICAgICAg
ICAiLi4vLi4vYXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCi0gICAgICAgICAgICIuLjptb2R1
bGVfYXBpIiwKLSAgICAgICAgICAgIi4uLy4uL2NvbW1vbl9hdWRpbzpjb21tb25fYXVkaW9fYyIs
Ci0gICAgICAgICAgICIuLi8uLi9ydGNfYmFzZTpkZXByZWNhdGlvbiIsCi0gICAgICAgICAgICIu
Li8uLi9ydGNfYmFzZTpjaGVja3MiLAotICAgICAgICAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXci
LAotICAgICAgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwK
LSAgICAgICAgICAgIjphdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzIiwKLSAgICAgICAgICAg
IjpuZXRlcSIsCi0gICAgICAgICAgICI6cmVudF9hX2NvZGVjIiwKLSAgICAgICAgICAgIi4uLy4u
L3J0Y19iYXNlOmF1ZGlvX2Zvcm1hdF90b19zdHJpbmciLAotICAgICAgICAgICAiLi4vLi4vcnRj
X2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAotICAgICAgICAgICAiLi4vLi4vbG9nZ2luZzpy
dGNfZXZlbnRfbG9nX2FwaSIsCi0gICAgICAgICBdCi0gIGRlZmluZXMgPSBhdWRpb19jb2Rpbmdf
ZGVmaW5lcworICBkZXBzID0gWworICAgICI6YXVkaW9fY29kaW5nX21vZHVsZV90eXBlZGVmcyIs
CisgICAgIjpuZXRlcSIsCisgICAgIjpuZXRlcV9kZWNvZGVyX2VudW0iLAorICAgICI6cmVudF9h
X2NvZGVjIiwKKyAgICAiLi46bW9kdWxlX2FwaSIsCisgICAgIi4uOm1vZHVsZV9hcGlfcHVibGlj
IiwKKyAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaTphcnJheV92aWV3
IiwKKyAgICAiLi4vLi4vYXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCisgICAgIi4uLy4uL2Fw
aS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCisgICAgIi4uLy4uL2NvbW1vbl9hdWRp
bzpjb21tb25fYXVkaW8iLAorICAgICIuLi8uLi9jb21tb25fYXVkaW86Y29tbW9uX2F1ZGlvX2Mi
LAorICAgICIuLi8uLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKKyAgICAiLi4vLi4vcnRj
X2Jhc2U6YXVkaW9fZm9ybWF0X3RvX3N0cmluZyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNr
cyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmRlcHJlY2F0aW9uIiwKKyAgICAiLi4vLi4vcnRjX2Jh
c2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAorICAg
ICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlczpvcHRpb25hbCIsCisgIF0KIH0KIAogcnRjX3N0YXRpY19saWJyYXJ5KCJsZWdhY3lf
ZW5jb2RlZF9hdWRpb19mcmFtZSIpIHsKQEAgLTE1MCwyNiArMTE5LDQxIEBAIHJ0Y19zdGF0aWNf
bGlicmFyeSgibGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUiKSB7CiAgIGRlcHMgPSBbCiAgICAg
Ii4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRp
b19jb2RlY3NfYXBpIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4v
cnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KIAotcnRjX3N0YXRpY19saWJyYXJ5KCJj
bmciKSB7Ci0gIHZpc2liaWxpdHkgKz0gWyAiKiIgXQorcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJy
dGNfY25nIikgeworICB2aXNpYmlsaXR5ICs9IHdlYnJ0Y19kZWZhdWx0X3Zpc2liaWxpdHkKICAg
c291cmNlcyA9IFsKLSAgICAiY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5jYyIsCi0gICAg
ImNvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuaCIsCiAgICAgImNvZGVjcy9jbmcvd2VicnRj
X2NuZy5jYyIsCiAgICAgImNvZGVjcy9jbmcvd2VicnRjX2NuZy5oIiwKICAgXQogCiAgIGRlcHMg
PSBbCi0gICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9hcGk6YXJyYXlfdmll
dyIsCi0gICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCi0gICAg
Ii4uLy4uL2NvbW1vbl9hdWRpbyIsCiAgICAgIi4uLy4uL2NvbW1vbl9hdWRpbzpjb21tb25fYXVk
aW9fYyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNl
OnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6c2FmZV9jb252ZXJzaW9u
cyIsCisgIF0KK30KKworcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19lbmNvZGVyX2NuZyIpIHsK
KyAgdmlzaWJpbGl0eSArPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImNvZGVjcy9jbmcv
YXVkaW9fZW5jb2Rlcl9jbmcuY2MiLAorICAgICJjb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25n
LmgiLAorICBdCisKKyAgZGVwcyA9IFsKKyAgICAiOndlYnJ0Y19jbmciLAorICAgICIuLi8uLi9h
cGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAorICAgICIuLi8uLi9jb21tb25fYXVk
aW8iLAorICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiB9CiAKQEAgLTE4MSwxMCArMTY1LDEyIEBAIHJ0
Y19zdGF0aWNfbGlicmFyeSgicmVkIikgewogICBdCiAKICAgZGVwcyA9IFsKKyAgICAiLi4vLi4v
YXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVj
c19hcGkiLAogICAgICIuLi8uLi9jb21tb25fYXVkaW8iLAogICAgICIuLi8uLi9ydGNfYmFzZTpj
aGVja3MiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQogCkBA
IC0yMDEsNiArMTg3LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJnNzExIikgewogICBkZXBzID0g
WwogICAgICI6bGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUiLAogICAgICIuLi8uLjp3ZWJydGNf
Y29tbW9uIiwKKyAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGkvYXVk
aW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3Mi
LAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCkBAIC0yMzUsNiArMjIy
LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJnNzIyIikgewogICBkZXBzID0gWwogICAgICI6bGVn
YWN5X2VuY29kZWRfYXVkaW9fZnJhbWUiLAogICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKKyAg
ICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmF1
ZGlvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzL2c3MjI6YXVkaW9f
ZW5jb2Rlcl9nNzIyX2NvbmZpZyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCkBAIC0y
NzAsNiArMjU4LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJpbGJjIikgewogICBkZXBzID0gWwog
ICAgICI6bGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUiLAogICAgICIuLi8uLjp3ZWJydGNfY29t
bW9uIiwKKyAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGkvYXVkaW9f
Y29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzL2ls
YmM6YXVkaW9fZW5jb2Rlcl9pbGJjX2NvbmZpZyIsCiAgICAgIi4uLy4uL2NvbW1vbl9hdWRpbyIs
CkBAIC03ODYsNiArNzc1LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJwY20xNmIiKSB7CiAgICAg
IjpnNzExIiwKICAgICAiOmxlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lIiwKICAgICAiLi4vLi46
d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4v
YXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6
Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLApAQCAtODIw
LDYgKzgxMCw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX29wdXMiKSB7CiAgIGRlcHMg
PSBbCiAgICAgIjphdWRpb19uZXR3b3JrX2FkYXB0b3IiLAogICAgICIuLi8uLjp3ZWJydGNfY29t
bW9uIiwKKyAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGkvYXVkaW9f
Y29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzL29w
dXM6YXVkaW9fZW5jb2Rlcl9vcHVzX2NvbmZpZyIsCiAgICAgIi4uLy4uL2NvbW1vbl9hdWRpbyIs
CkBAIC04MjksNiArODIwLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNfb3B1cyIpIHsK
ICAgICAiLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAogICAgICIuLi8uLi9zeXN0ZW1fd3Jh
cHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9t
ZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiAg
IHB1YmxpY19kZXBzID0gWwpAQCAtODgyLDYgKzg3NCw3IEBAIGlmIChydGNfZW5hYmxlX3Byb3Rv
YnVmKSB7CiAgICAgcHJvdG9fb3V0X2RpciA9ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IiCiAgIH0KICAgcHJvdG9fbGlicmFyeSgiYW5hX2NvbmZpZ19wcm90byIp
IHsKKyAgICB2aXNpYmlsaXR5ICs9IFsgIioiIF0KICAgICBzb3VyY2VzID0gWwogICAgICAgImF1
ZGlvX25ldHdvcmtfYWRhcHRvci9jb25maWcucHJvdG8iLAogICAgIF0KQEAgLTEwMzIsOCArMTAy
NSw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgibmV0ZXEiKSB7CiAgICAgIm5ldGVxL3JhbmRvbV92
ZWN0b3IuaCIsCiAgICAgIm5ldGVxL3JlZF9wYXlsb2FkX3NwbGl0dGVyLmNjIiwKICAgICAibmV0
ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuaCIsCi0gICAgIm5ldGVxL3J0Y3AuY2MiLAotICAgICJu
ZXRlcS9ydGNwLmgiLAogICAgICJuZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0b3IuY2MiLAogICAg
ICJuZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0b3IuaCIsCiAgICAgIm5ldGVxL3N5bmNfYnVmZmVy
LmNjIiwKQEAgLTEwNDgsOSArMTAzOSwxMCBAQCBydGNfc3RhdGljX2xpYnJhcnkoIm5ldGVxIikg
ewogCiAgIGRlcHMgPSBbCiAgICAgIjphdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzIiwKLSAg
ICAiOmNuZyIsCiAgICAgIjpuZXRlcV9kZWNvZGVyX2VudW0iLAorICAgICI6d2VicnRjX2NuZyIs
CiAgICAgIi4uOm1vZHVsZV9hcGkiLAorICAgICIuLjptb2R1bGVfYXBpX3B1YmxpYyIsCiAgICAg
Ii4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAg
Ii4uLy4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKQEAgLTEwNjcsNiArMTA1
OSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgibmV0ZXEiKSB7CiAgICAgIi4uLy4uL3J0Y19iYXNl
L3N5c3RlbTpmYWxsdGhyb3VnaCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90
cmlhbCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtMTEwNSw2ICsxMDk4LDcg
QEAgcnRjX3NvdXJjZV9zZXQoIm5ldGVxX3Rvb2xzX21pbmltYWwiKSB7CiAgICAgIi4uL3J0cF9y
dGNwIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwi
LAogICBdCisgIGRlZmluZXMgPSBhdWRpb19jb2RlY19kZWZpbmVzCiB9CiAKIHJ0Y19zb3VyY2Vf
c2V0KCJuZXRlcV90ZXN0X3Rvb2xzIikgewpAQCAtMTE0MCwxMSArMTEzNCwxMSBAQCBydGNfc291
cmNlX3NldCgibmV0ZXFfdGVzdF90b29scyIpIHsKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tz
IiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICIuLi8uLi9ydGNfYmFzZTpy
dGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0
aWxzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOmFyY2giLAogICAgICIuLi8uLi90ZXN0
OnJ0cF90ZXN0X3V0aWxzIiwKICAgICAiLi4vcnRwX3J0Y3AiLAogICAgICIuLi9ydHBfcnRjcDpy
dHBfcnRjcF9mb3JtYXQiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
czpvcHRpb25hbCIsCiAgIF0KIAogICBwdWJsaWNfZGVwcyA9IFsKQEAgLTEyMzgsNiArMTIzMiw3
IEBAIGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRj
X2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uL3J0cF9ydGNwIiwKICAgICAgICIuLi9ydHBfcnRj
cDpydHBfcnRjcF9mb3JtYXQiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzOm9wdGlvbmFsIiwKICAgICBdCiAgICAgcHVibGljX2RlcHMgPSBbCiAgICAgICAiLi4v
Li4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX3Byb3RvIiwKQEAgLTEyNDYsNiArMTI0MSwzMCBAQCBp
ZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogfQogCiBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsK
KyAgYXVkaW9fY29kaW5nX2RlcHMgPSBbCisgICAgIi4uLy4uL2NvbW1vbl9hdWRpbyIsCisgICAg
Ii4uLy4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAorICAg
ICI6YXVkaW9fZW5jb2Rlcl9jbmciLAorICAgICI6ZzcxMSIsCisgICAgIjpnNzIyIiwKKyAgICAi
OnBjbTE2YiIsCisgIF0KKyAgaWYgKHJ0Y19pbmNsdWRlX2lsYmMpIHsKKyAgICBhdWRpb19jb2Rp
bmdfZGVwcyArPSBbICI6aWxiYyIgXQorICB9CisgIGlmIChydGNfaW5jbHVkZV9vcHVzKSB7Cisg
ICAgYXVkaW9fY29kaW5nX2RlcHMgKz0gWyAiOndlYnJ0Y19vcHVzIiBdCisgIH0KKyAgaWYgKGN1
cnJlbnRfY3B1ID09ICJhcm0iKSB7CisgICAgYXVkaW9fY29kaW5nX2RlcHMgKz0gWyAiOmlzYWNf
Zml4IiBdCisgIH0gZWxzZSB7CisgICAgYXVkaW9fY29kaW5nX2RlcHMgKz0gWyAiOmlzYWMiIF0K
KyAgfQorICBpZiAoIWJ1aWxkX3dpdGhfbW96aWxsYSAmJiAhYnVpbGRfd2l0aF9jaHJvbWl1bSkg
eworICAgIGF1ZGlvX2NvZGluZ19kZXBzICs9IFsgIjpyZWQiIF0KKyAgfQorCiAgIHJ0Y19zb3Vy
Y2Vfc2V0KCJtb2NrcyIpIHsKICAgICB0ZXN0b25seSA9IHRydWUKICAgICBzb3VyY2VzID0gWwpA
QCAtMTMzMCwxMCArMTM0OSwxMSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBkZXBz
ID0gWwogICAgICAgIjphdWRpb19jb2RpbmciLAogICAgICAgIjphdWRpb19jb2RpbmdfbW9kdWxl
X3R5cGVkZWZzIiwKKyAgICAgICI6YXVkaW9fZW5jb2Rlcl9jbmciLAogICAgICAgIjphdWRpb19m
b3JtYXRfY29udmVyc2lvbiIsCi0gICAgICAiOmNuZyIsCiAgICAgICAiOnBjbTE2Yl9jIiwKICAg
ICAgICI6cmVkIiwKKyAgICAgICI6d2VicnRjX29wdXNfYyIsCiAgICAgICAiLi46bW9kdWxlX2Fw
aSIsCiAgICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4vLi4vYXBpL2F1ZGlv
OmF1ZGlvX2ZyYW1lX2FwaSIsCkBAIC0xMzU5LDYgKzEzNzksNyBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAogICAgICAgIi4uLy4uL3Rl
c3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICAgIF0KICAgICBkZWZpbmVz
ID0gYXVkaW9fY29kaW5nX2RlZmluZXMKQEAgLTE0MTQsNiArMTQzNSw3IEBAIGlmIChydGNfaW5j
bHVkZV90ZXN0cykgewogICAgICAgICAgICAgICI6bmV0ZXFfdG9vbHMiLAogICAgICAgICAgICAg
ICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAgICAgICAgIi4uLy4u
L3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKyAgICAgICAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgICAgICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCiAgICAg
ICAgICAgIF0KICAgfQpAQCAtMTQ3Nyw2ICsxNDk5LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3Rz
KSB7CiAgICAgICAgICAgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTphcmNoIiwKICAgICAgICAg
ICAgICAiLi4vLi4vdGVzdDp0ZXN0X21haW4iLAogICAgICAgICAgICAgICIvL3Rlc3RpbmcvZ3Rl
c3QiLAorICAgICAgICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAgICAg
IF0gKyBhdWRpb19jb2RpbmdfZGVwcwogCiAgICAgZGF0YSA9IGF1ZGlvX2RlY29kZXJfdW5pdHRl
c3RzX3Jlc291cmNlcwpAQCAtMTUwMSw3ICsxNTI0LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3Rz
KSB7CiAgICAgcnRjX3NvdXJjZV9zZXQoIm5ldGVxX3Rlc3RfZmFjdG9yeSIpIHsKICAgICAgIHRl
c3Rvbmx5ID0gdHJ1ZQogICAgICAgdmlzaWJpbGl0eSArPSB3ZWJydGNfZGVmYXVsdF92aXNpYmls
aXR5Ci0gICAgICBkZWZpbmVzID0gW10KKyAgICAgIGRlZmluZXMgPSBhdWRpb19jb2RlY19kZWZp
bmVzCiAgICAgICBkZXBzID0gWwogICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAg
ICAgICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwKQEAgLTE1OTQsNiArMTYxNyw3IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uLy4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5l
Y3Rpb25fYXBpIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAg
ICAgICAiLi4vLi4vdGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4uLy4uL3Rlc3Q6dGVzdF9zdXBw
b3J0IiwKICAgICAgICIuLi9hdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICIvL3Rlc3RpbmcvZ3Rl
c3QiLAogICAgIF0KQEAgLTE2NjEsNiArMTY4NSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykg
ewogICAgIGRlcHMgPSBhdWRpb19jb2RpbmdfZGVwcyArIFsKICAgICAgICAgICAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgICAgICAgICAgICAiOmF1ZGlvX2Nv
ZGluZyIsCisgICAgICAgICAgICAgIjphdWRpb19lbmNvZGVyX2NuZyIsCiAgICAgICAgICAgICAg
IjpuZXRlcV9pbnB1dF9hdWRpb190b29scyIsCiAgICAgICAgICAgICAgIi4uLy4uL2FwaS9hdWRp
bzphdWRpb19mcmFtZV9hcGkiLAogICAgICAgICAgICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNz
L2c3MTE6YXVkaW9fZW5jb2Rlcl9nNzExIiwKQEAgLTE3NTYsNyArMTc4MSw2IEBAIGlmIChydGNf
aW5jbHVkZV90ZXN0cykgewogICAgICAgIjpuZXRlcV90ZXN0X3N1cHBvcnQiLAogICAgICAgIi4u
Ly4uOndlYnJ0Y19jb21tb24iLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKLSAgICAgICIuLi8uLi90ZXN0OmZpbGV1dGlscyIsCiAgICAgICAiLi4vLi4vdGVzdDp0
ZXN0X3N1cHBvcnQiLAogICAgIF0KICAgfQpAQCAtMTk1Niw2ICsxOTgwLDcgQEAgaWYgKHJ0Y19p
bmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAogICAgICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3Rf
bWFpbiIsCisgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGlu
Zy9ndGVzdCIsCiAgICAgXQogICB9CkBAIC0xOTY4LDggKzE5OTMsNiBAQCBpZiAocnRjX2luY2x1
ZGVfdGVzdHMpIHsKICAgICAgICJhY20yL2FjbV9yZWNlaXZlcl91bml0dGVzdC5jYyIsCiAgICAg
ICAiYWNtMi9hdWRpb19jb2RpbmdfbW9kdWxlX3VuaXR0ZXN0LmNjIiwKICAgICAgICJhY20yL2Nh
bGxfc3RhdGlzdGljc191bml0dGVzdC5jYyIsCi0gICAgICAiYWNtMi9jb2RlY19tYW5hZ2VyX3Vu
aXR0ZXN0LmNjIiwKLSAgICAgICJhY20yL3JlbnRfYV9jb2RlY191bml0dGVzdC5jYyIsCiAgICAg
ICAiYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsX3VuaXR0
ZXN0LmNjIiwKICAgICAgICJhdWRpb19uZXR3b3JrX2FkYXB0b3IvYml0cmF0ZV9jb250cm9sbGVy
X3VuaXR0ZXN0LmNjIiwKICAgICAgICJhdWRpb19uZXR3b3JrX2FkYXB0b3IvY2hhbm5lbF9jb250
cm9sbGVyX3VuaXR0ZXN0LmNjIiwKQEAgLTIwNDgsOSArMjA3MSw5IEBAIGlmIChydGNfaW5jbHVk
ZV90ZXN0cykgewogICAgICAgIjphY21fc2VuZF90ZXN0IiwKICAgICAgICI6YXVkaW9fY29kaW5n
IiwKICAgICAgICI6YXVkaW9fY29kaW5nX21vZHVsZV90eXBlZGVmcyIsCisgICAgICAiOmF1ZGlv
X2VuY29kZXJfY25nIiwKICAgICAgICI6YXVkaW9fZm9ybWF0X2NvbnZlcnNpb24iLAogICAgICAg
IjphdWRpb19uZXR3b3JrX2FkYXB0b3IiLAotICAgICAgIjpjbmciLAogICAgICAgIjpnNzExIiwK
ICAgICAgICI6aWxiYyIsCiAgICAgICAiOmlzYWMiLApAQCAtMjA2NCw2ICsyMDg3LDcgQEAgaWYg
KHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOnBjbTE2YiIsCiAgICAgICAiOnJlZCIsCiAg
ICAgICAiOnJlbnRfYV9jb2RlYyIsCisgICAgICAiOndlYnJ0Y19jbmciLAogICAgICAgIjp3ZWJy
dGNfb3B1cyIsCiAgICAgICAiLi46bW9kdWxlX2FwaSIsCiAgICAgICAiLi4vLi46d2VicnRjX2Nv
bW1vbiIsCkBAIC0yMDc5LDYgKzIxMDMsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAg
ICAgICIuLi8uLi9sb2dnaW5nOm1vY2tzIiwKICAgICAgICIuLi8uLi9sb2dnaW5nOnJ0Y19ldmVu
dF9hdWRpbyIsCiAgICAgICAiLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCisgICAg
ICAiLi4vLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAogICAgICAgIi4uLy4u
L3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cHJvdG9idWZfdXRpbHMi
LAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKQEAgLTIwOTgsNiArMjEyMyw3IEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgImNvZGVjcy9vcHVzL3Rlc3Q6dGVzdF91
bml0dGVzdCIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgICBdCiAKICAgICBkZWZpbmVzID0gYXVkaW9fY29k
aW5nX2RlZmluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL09XTkVSUwppbmRl
eCBjMWFkYzU2MWI4OTVkZDgyMjQ3ZDMyZjM0ODFmMjRhZjQ3YzczYzg5Li40NmY5OTU4Njg0MmIz
OTE1MWQyMGFiN2M2ZjYzODc2ZWU1OGQwYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9PV05FUlMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvT1dORVJTCkBAIC00LDYgKzQsNyBAQCBrd2liZXJnQHdlYnJ0Yy5vcmcKIG1pbnl1
ZUB3ZWJydGMub3JnCiBqYW4uc2tvZ2x1bmRAd2VicnRjLm9yZwogb3NzdUB3ZWJydGMub3JnCitp
dm9jQHdlYnJ0Yy5vcmcKIAogIyBUaGVzZSBhcmUgZm9yIHRoZSBjb21tb24gY2FzZSBvZiBhZGRp
bmcgb3IgcmVuYW1pbmcgZmlsZXMuIElmIHlvdSdyZSBkb2luZwogIyBzdHJ1Y3R1cmFsIGNoYW5n
ZXMsIHBsZWFzZSBnZXQgYSByZXZpZXcgZnJvbSBhIHJldmlld2VyIGluIHRoaXMgZmlsZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX2NvZGVjX2RhdGFiYXNlLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9h
Y21fY29kZWNfZGF0YWJhc2UuY2MKaW5kZXggMzExYWYyZGYzZmY2ZTk0ZmQ1OTMzZjI5ZWUxOWEx
ODUxMDY1ZWIxNC4uY2FkYTgwYzA2MTg4NDM4OWExZGFhMDQyNDkwOTlhMmU4YzRiM2FlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvYWNtMi9hY21fY29kZWNfZGF0YWJhc2UuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNt
Mi9hY21fY29kZWNfZGF0YWJhc2UuY2MKQEAgLTE3LDcgKzE3LDkgQEAKIC8vIHJlZmVyZW5jZXMs
IHdoZXJlIGFwcHJvcHJpYXRlLgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIv
YWNtX2NvZGVjX2RhdGFiYXNlLmgiCiAKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNp
bmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmgiCiAK
ICNpZiAoKGRlZmluZWQgV0VCUlRDX0NPREVDX0lTQUMpICYmIChkZWZpbmVkIFdFQlJUQ19DT0RF
Q19JU0FDRlgpKQogI2Vycm9yIGlTQUMgYW5kIGlTQUNGWCBjb2RlY3MgY2Fubm90IGJlIGVuYWJs
ZWQgYXQgdGhlIHNhbWUgdGltZQpAQCAtMjM5LDEyICsyNDEsMTIgQEAgaW50IEFDTUNvZGVjREI6
OkNvZGVjTnVtYmVyKGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCkgewogICB9CiAKICAgLy8g
Q29tZm9ydCBOb2lzZSBpcyBzcGVjaWFsIGNhc2UsIHBhY2tldC1zaXplICYgcmF0ZSBpcyBub3Qg
Y2hlY2tlZC4KLSAgaWYgKFNUUl9DQVNFX0NNUChkYXRhYmFzZV9bY29kZWNfaWRdLnBsbmFtZSwg
IkNOIikgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShkYXRhYmFzZV9bY29k
ZWNfaWRdLnBsbmFtZSwgIkNOIikpIHsKICAgICByZXR1cm4gY29kZWNfaWQ7CiAgIH0KIAogICAv
LyBSRUQgaXMgc3BlY2lhbCBjYXNlLCBwYWNrZXQtc2l6ZSAmIHJhdGUgaXMgbm90IGNoZWNrZWQu
Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZGF0YWJhc2VfW2NvZGVjX2lkXS5wbG5hbWUsICJyZWQiKSA9
PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGRhdGFiYXNlX1tjb2RlY19pZF0u
cGxuYW1lLCAicmVkIikpIHsKICAgICByZXR1cm4gY29kZWNfaWQ7CiAgIH0KIApAQCAtMjcyLDEy
ICsyNzQsMTIgQEAgaW50IEFDTUNvZGVjREI6OkNvZGVjTnVtYmVyKGNvbnN0IENvZGVjSW5zdCYg
Y29kZWNfaW5zdCkgewogCiAgIC8vIENoZWNrIHRoZSB2YWxpZGl0eSBvZiByYXRlLiBDb2RlY3Mg
d2l0aCBtdWx0aXBsZSByYXRlcyBoYXZlIHRoZWlyIG93bgogICAvLyBmdW5jdGlvbiBmb3IgdGhp
cy4KLSAgaWYgKFNUUl9DQVNFX0NNUCgiaXNhYyIsIGNvZGVjX2luc3QucGxuYW1lKSA9PSAwKSB7
CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKCJpc2FjIiwgY29kZWNfaW5zdC5wbG5hbWUp
KSB7CiAgICAgcmV0dXJuIElzSVNBQ1JhdGVWYWxpZChjb2RlY19pbnN0LnJhdGUpID8gY29kZWNf
aWQgOiBrSW52YWxpZFJhdGU7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKCJpbGJjIiwgY29k
ZWNfaW5zdC5wbG5hbWUpID09IDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVD
YXNlKCJpbGJjIiwgY29kZWNfaW5zdC5wbG5hbWUpKSB7CiAgICAgcmV0dXJuIElzSUxCQ1JhdGVW
YWxpZChjb2RlY19pbnN0LnJhdGUsIGNvZGVjX2luc3QucGFjc2l6ZSkgPyBjb2RlY19pZAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDoga0ludmFsaWRSYXRlOwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUCgib3B1cyIsIGNv
ZGVjX2luc3QucGxuYW1lKSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3Jl
Q2FzZSgib3B1cyIsIGNvZGVjX2luc3QucGxuYW1lKSkgewogICAgIHJldHVybiBJc09wdXNSYXRl
VmFsaWQoY29kZWNfaW5zdC5yYXRlKSA/IGNvZGVjX2lkIDoga0ludmFsaWRSYXRlOwogICB9CiAK
QEAgLTI5Niw3ICsyOTgsNyBAQCBpbnQgQUNNQ29kZWNEQjo6Q29kZWNJZChjb25zdCBDb2RlY0lu
c3QmIGNvZGVjX2luc3QpIHsKIGludCBBQ01Db2RlY0RCOjpDb2RlY0lkKGNvbnN0IGNoYXIqIHBh
eWxvYWRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmVxdWVuY3ksCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2hhbm5lbHMpIHsKLSAgZm9yIChjb25zdCBDb2Rl
Y0luc3QmIGNpIDogUmVudEFDb2RlYzo6RGF0YWJhc2UoKSkgeworICBmb3IgKGNvbnN0IENvZGVj
SW5zdCYgY2kgOiBkYXRhYmFzZV8pIHsKICAgICBib29sIG5hbWVfbWF0Y2ggPSBmYWxzZTsKICAg
ICBib29sIGZyZXF1ZW5jeV9tYXRjaCA9IGZhbHNlOwogICAgIGJvb2wgY2hhbm5lbHNfbWF0Y2gg
PSBmYWxzZTsKQEAgLTMwNCwxMCArMzA2LDEwIEBAIGludCBBQ01Db2RlY0RCOjpDb2RlY0lkKGNv
bnN0IGNoYXIqIHBheWxvYWRfbmFtZSwKICAgICAvLyBQYXlsb2FkIG5hbWUsIHNhbXBsaW5nIGZy
ZXF1ZW5jeSBhbmQgbnVtYmVyIG9mIGNoYW5uZWxzIG5lZWQgdG8gbWF0Y2guCiAgICAgLy8gTk9U
RSEgSWYgfGZyZXF1ZW5jeXwgaXMgLTEsIHRoZSBmcmVxdWVuY3kgaXMgbm90IGFwcGxpY2FibGUs
IGFuZCBpcwogICAgIC8vIGFsd2F5cyB0cmVhdGVkIGFzIHRydWUsIGxpa2UgZm9yIFJFRC4KLSAg
ICBuYW1lX21hdGNoID0gKFNUUl9DQVNFX0NNUChjaS5wbG5hbWUsIHBheWxvYWRfbmFtZSkgPT0g
MCk7CisgICAgbmFtZV9tYXRjaCA9IGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY2kucGxuYW1lLCBw
YXlsb2FkX25hbWUpOwogICAgIGZyZXF1ZW5jeV9tYXRjaCA9IChmcmVxdWVuY3kgPT0gY2kucGxm
cmVxKSB8fCAoZnJlcXVlbmN5ID09IC0xKTsKICAgICAvLyBUaGUgbnVtYmVyIG9mIGNoYW5uZWxz
IG11c3QgbWF0Y2ggZm9yIGFsbCBjb2RlY3MgYnV0IE9wdXMuCi0gICAgaWYgKFNUUl9DQVNFX0NN
UChwYXlsb2FkX25hbWUsICJvcHVzIikgIT0gMCkgeworICAgIGlmICghYWJzbDo6RXF1YWxzSWdu
b3JlQ2FzZShwYXlsb2FkX25hbWUsICJvcHVzIikpIHsKICAgICAgIGNoYW5uZWxzX21hdGNoID0g
KGNoYW5uZWxzID09IGNpLmNoYW5uZWxzKTsKICAgICB9IGVsc2UgewogICAgICAgLy8gRm9yIG9w
dXMgd2UganVzdCBjaGVjayB0aGF0IG51bWJlciBvZiBjaGFubmVscyBpcyB2YWxpZC4KQEAgLTMx
Niw3ICszMTgsNyBAQCBpbnQgQUNNQ29kZWNEQjo6Q29kZWNJZChjb25zdCBjaGFyKiBwYXlsb2Fk
X25hbWUsCiAKICAgICBpZiAobmFtZV9tYXRjaCAmJiBmcmVxdWVuY3lfbWF0Y2ggJiYgY2hhbm5l
bHNfbWF0Y2gpIHsKICAgICAgIC8vIFdlIGhhdmUgZm91bmQgYSBtYXRjaGluZyBjb2RlYyBpbiB0
aGUgbGlzdC4KLSAgICAgIHJldHVybiAmY2kgLSBSZW50QUNvZGVjOjpEYXRhYmFzZSgpLmRhdGEo
KTsKKyAgICAgIHJldHVybiAmY2kgLSBkYXRhYmFzZV87CiAgICAgfQogICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2Vp
dmVfdGVzdC5jYwppbmRleCAyZDdmMjk2MGRlNTg5YmRhNGQ5MzVhYzMzMjk0YTZlNTlmNjE5ZmE1
Li5jMTQ5ZWMxYjBiYzIxZGVmZTlhZDMwY2M4ZmI3MTM4ZWU2ZDQzOGU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9hY20yL2FjbV9yZWNlaXZlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2
ZV90ZXN0LmNjCkBAIC0xNCw2ICsxNCw3IEBACiAKICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNpbmNs
dWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1
aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL2F1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCkBAIC0zMCwxMSAr
MzEsMTEgQEAgbmFtZXNwYWNlIHsKIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29kZWMgc2hvdWxk
IGJlIHJlZ2lzdGVyZWQsIG90aGVyd2lzZSBmYWxzZS4gQ2hhbmdlcwogLy8gdGhlIG51bWJlciBv
ZiBjaGFubmVscyBmb3IgdGhlIE9wdXMgY29kZWMgdG8gYWx3YXlzIGJlIDEuCiBib29sIE1vZGlm
eUFuZFVzZVRoaXNDb2RlYyhDb2RlY0luc3QqIGNvZGVjX3BhcmFtKSB7Ci0gIGlmIChTVFJfQ0FT
RV9DTVAoY29kZWNfcGFyYW0tPnBsbmFtZSwgIkNOIikgPT0gMCAmJgorICBpZiAoYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShjb2RlY19wYXJhbS0+cGxuYW1lLCAiQ04iKSAmJgogICAgICAgY29kZWNf
cGFyYW0tPnBsZnJlcSA9PSA0ODAwMCkKICAgICByZXR1cm4gZmFsc2U7ICAvLyBTa2lwIDQ4IGtI
eiBjb21mb3J0IG5vaXNlLgogCi0gIGlmIChTVFJfQ0FTRV9DTVAoY29kZWNfcGFyYW0tPnBsbmFt
ZSwgInRlbGVwaG9uZS1ldmVudCIpID09IDApCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KGNvZGVjX3BhcmFtLT5wbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSkKICAgICByZXR1cm4gZmFs
c2U7ICAvLyBTa2lwIERURk0uCiAKICAgcmV0dXJuIHRydWU7CkBAIC02NSwzOSArNjYsNDMgQEAg
Ym9vbCBSZW1hcFBsdHlwZUFuZFVzZVRoaXNDb2RlYyhjb25zdCBjaGFyKiBwbG5hbWUsCiAgICAg
cmV0dXJuIGZhbHNlOyAgLy8gRG9uJ3QgdXNlIG5vbi1tb25vIGNvZGVjcy4KIAogICAvLyBSZS1t
YXAgcGx0eXBlcyB0byB0aG9zZSB1c2VkIGluIHRoZSBOZXRFcSB0ZXN0IGZpbGVzLgotICBpZiAo
U1RSX0NBU0VfQ01QKHBsbmFtZSwgIlBDTVUiKSA9PSAwICYmIHBsZnJlcSA9PSA4MDAwKSB7Cisg
IGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgIlBDTVUiKSAmJiBwbGZyZXEgPT0g
ODAwMCkgewogICAgICpwbHR5cGUgPSAwOwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5h
bWUsICJQQ01BIikgPT0gMCAmJiBwbGZyZXEgPT0gODAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAiUENNQSIpICYmIHBsZnJlcSA9PSA4MDAwKSB7CiAg
ICAgKnBsdHlwZSA9IDg7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgIkNOIikg
PT0gMCAmJiBwbGZyZXEgPT0gODAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9y
ZUNhc2UocGxuYW1lLCAiQ04iKSAmJiBwbGZyZXEgPT0gODAwMCkgewogICAgICpwbHR5cGUgPSAx
MzsKLSAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAocGxuYW1lLCAiQ04iKSA9PSAwICYmIHBsZnJl
cSA9PSAxNjAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1l
LCAiQ04iKSAmJiBwbGZyZXEgPT0gMTYwMDApIHsKICAgICAqcGx0eXBlID0gOTg7Ci0gIH0gZWxz
ZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgIkNOIikgPT0gMCAmJiBwbGZyZXEgPT0gMzIwMDAp
IHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgIkNOIikgJiYg
cGxmcmVxID09IDMyMDAwKSB7CiAgICAgKnBsdHlwZSA9IDk5OwotICB9IGVsc2UgaWYgKFNUUl9D
QVNFX0NNUChwbG5hbWUsICJJTEJDIikgPT0gMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFs
c0lnbm9yZUNhc2UocGxuYW1lLCAiSUxCQyIpKSB7CiAgICAgKnBsdHlwZSA9IDEwMjsKLSAgfSBl
bHNlIGlmIChTVFJfQ0FTRV9DTVAocGxuYW1lLCAiSVNBQyIpID09IDAgJiYgcGxmcmVxID09IDE2
MDAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJJU0FD
IikgJiYgcGxmcmVxID09IDE2MDAwKSB7CiAgICAgKnBsdHlwZSA9IDEwMzsKLSAgfSBlbHNlIGlm
IChTVFJfQ0FTRV9DTVAocGxuYW1lLCAiSVNBQyIpID09IDAgJiYgcGxmcmVxID09IDMyMDAwKSB7
CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJJU0FDIikgJiYg
cGxmcmVxID09IDMyMDAwKSB7CiAgICAgKnBsdHlwZSA9IDEwNDsKLSAgfSBlbHNlIGlmIChTVFJf
Q0FTRV9DTVAocGxuYW1lLCAidGVsZXBob25lLWV2ZW50IikgPT0gMCAmJiBwbGZyZXEgPT0gODAw
MCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAidGVsZXBo
b25lLWV2ZW50IikgJiYKKyAgICAgICAgICAgICBwbGZyZXEgPT0gODAwMCkgewogICAgICpwbHR5
cGUgPSAxMDY7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgInRlbGVwaG9uZS1l
dmVudCIpID09IDAgJiYgcGxmcmVxID09IDE2MDAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShwbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSAmJgorICAgICAgICAgICAg
IHBsZnJlcSA9PSAxNjAwMCkgewogICAgICpwbHR5cGUgPSAxMTQ7Ci0gIH0gZWxzZSBpZiAoU1RS
X0NBU0VfQ01QKHBsbmFtZSwgInRlbGVwaG9uZS1ldmVudCIpID09IDAgJiYgcGxmcmVxID09IDMy
MDAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJ0ZWxl
cGhvbmUtZXZlbnQiKSAmJgorICAgICAgICAgICAgIHBsZnJlcSA9PSAzMjAwMCkgewogICAgICpw
bHR5cGUgPSAxMTU7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwgInRlbGVwaG9u
ZS1ldmVudCIpID09IDAgJiYgcGxmcmVxID09IDQ4MDAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSAmJgorICAgICAgICAg
ICAgIHBsZnJlcSA9PSA0ODAwMCkgewogICAgICpwbHR5cGUgPSAxMTY7Ci0gIH0gZWxzZSBpZiAo
U1RSX0NBU0VfQ01QKHBsbmFtZSwgInJlZCIpID09IDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgInJlZCIpKSB7CiAgICAgKnBsdHlwZSA9IDExNzsKLSAg
fSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAocGxuYW1lLCAiTDE2IikgPT0gMCAmJiBwbGZyZXEgPT0g
ODAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAiTDE2
IikgJiYgcGxmcmVxID09IDgwMDApIHsKICAgICAqcGx0eXBlID0gOTM7Ci0gIH0gZWxzZSBpZiAo
U1RSX0NBU0VfQ01QKHBsbmFtZSwgIkwxNiIpID09IDAgJiYgcGxmcmVxID09IDE2MDAwKSB7Cisg
IH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJMMTYiKSAmJiBwbGZy
ZXEgPT0gMTYwMDApIHsKICAgICAqcGx0eXBlID0gOTQ7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0Vf
Q01QKHBsbmFtZSwgIkwxNiIpID09IDAgJiYgcGxmcmVxID09IDMyMDAwKSB7CisgIH0gZWxzZSBp
ZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJMMTYiKSAmJiBwbGZyZXEgPT0gMzIw
MDApIHsKICAgICAqcGx0eXBlID0gOTU7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFt
ZSwgIkc3MjIiKSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShw
bG5hbWUsICJHNzIyIikpIHsKICAgICAqcGx0eXBlID0gOTsKICAgfSBlbHNlIHsKICAgICAvLyBE
b24ndCB1c2UgYW55IG90aGVyIGNvZGVjcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jl
Y2VpdmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuY2MKaW5kZXggZjYzMTc0NmI4OGY0
YmZiOGU1MGJhYWRiZDM2ZTI5NTBlMmU0M2ZkYi4uZDNhZjdjMDM0MTg4NTFhMTZjNDliZmMzMjU0
Y2FjYjJhYjNkMGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuY2MKQEAgLTEwLDIxICsxMCwyMSBAQAogCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuaCIKIAotI2luY2x1
ZGUgPHN0ZGxpYi5oPiAgLy8gbWFsbG9jCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBzb3J0
CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3N0
ZGludD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2gu
aCIKKyNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKICNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKLSNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFs
X3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCi0jaW5jbHVk
ZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NhbGxfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvaW5jbHVkZS9uZXRlcS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL25ldGVxX2RlY29kZXJfZW51bS5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
aW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNp
b25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9hdWRpb19mb3JtYXRfdG9fc3RyaW5n
LmgiCkBAIC05Miw3ICs5Miw3IEBAIGludCBBY21SZWNlaXZlcjo6SW5zZXJ0UGFja2V0KGNvbnN0
IFdlYlJ0Y1JUUEhlYWRlciYgcnRwX2hlYWRlciwKICAgICB9CiAgICAgcmVjZWl2ZV90aW1lc3Rh
bXAgPSBOb3dJblRpbWVzdGFtcChjaS0+cGxmcmVxKTsKIAotICAgIGlmIChTVFJfQ0FTRV9DTVAo
Y2ktPnBsbmFtZSwgImNuIikgPT0gMCkgeworICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KGNpLT5wbG5hbWUsICJjbiIpKSB7CiAgICAgICBpZiAobGFzdF9hdWRpb19kZWNvZGVyXyAmJiBs
YXN0X2F1ZGlvX2RlY29kZXJfLT5jaGFubmVscyA+IDEpIHsKICAgICAgICAgLy8gVGhpcyBpcyBh
IENORyBhbmQgdGhlIGF1ZGlvIGNvZGVjIGlzIG5vdCBtb25vLCBzbyBza2lwIHB1c2hpbmcgaW4K
ICAgICAgICAgLy8gcGFja2V0cyBpbnRvIE5ldEVxLgpAQCAtMzQ1LDYgKzM0NSwxMyBAQCB2b2lk
IEFjbVJlY2VpdmVyOjpHZXROZXR3b3JrU3RhdGlzdGljcyhOZXR3b3JrU3RhdGlzdGljcyogYWNt
X3N0YXQpIHsKICAgYWNtX3N0YXQtPmNvbmNlYWxlZFNhbXBsZXMgPSBuZXRlcV9saWZldGltZV9z
dGF0LmNvbmNlYWxlZF9zYW1wbGVzOwogICBhY21fc3RhdC0+Y29uY2VhbG1lbnRFdmVudHMgPSBu
ZXRlcV9saWZldGltZV9zdGF0LmNvbmNlYWxtZW50X2V2ZW50czsKICAgYWNtX3N0YXQtPmppdHRl
ckJ1ZmZlckRlbGF5TXMgPSBuZXRlcV9saWZldGltZV9zdGF0LmppdHRlcl9idWZmZXJfZGVsYXlf
bXM7CisgIGFjbV9zdGF0LT5kZWxheWVkUGFja2V0T3V0YWdlU2FtcGxlcyA9CisgICAgICBuZXRl
cV9saWZldGltZV9zdGF0LmRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzOworCisgIE5ldEVx
T3BlcmF0aW9uc0FuZFN0YXRlIG5ldGVxX29wZXJhdGlvbnNfYW5kX3N0YXRlID0KKyAgICAgIG5l
dGVxXy0+R2V0T3BlcmF0aW9uc0FuZFN0YXRlKCk7CisgIGFjbV9zdGF0LT5wYWNrZXRCdWZmZXJG
bHVzaGVzID0KKyAgICAgIG5ldGVxX29wZXJhdGlvbnNfYW5kX3N0YXRlLnBhY2tldF9idWZmZXJf
Zmx1c2hlczsKIH0KIAogaW50IEFjbVJlY2VpdmVyOjpEZWNvZGVyQnlQYXlsb2FkVHlwZSh1aW50
OF90IHBheWxvYWRfdHlwZSwKQEAgLTM5MSw3ICszOTgsNyBAQCBjb25zdCBhYnNsOjpvcHRpb25h
bDxDb2RlY0luc3Q+IEFjbVJlY2VpdmVyOjpSdHBIZWFkZXJUb0RlY29kZXIoCiAgICAgdWludDhf
dCBmaXJzdF9wYXlsb2FkX2J5dGUpIGNvbnN0IHsKICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8Q29k
ZWNJbnN0PiBjaSA9CiAgICAgICBuZXRlcV8tPkdldERlY29kZXIocnRwX2hlYWRlci5wYXlsb2Fk
VHlwZSk7Ci0gIGlmIChjaSAmJiBTVFJfQ0FTRV9DTVAoY2ktPnBsbmFtZSwgInJlZCIpID09IDAp
IHsKKyAgaWYgKGNpICYmIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY2ktPnBsbmFtZSwgInJlZCIp
KSB7CiAgICAgLy8gVGhpcyBpcyBhIFJFRCBwYWNrZXQuIEdldCB0aGUgcGF5bG9hZCBvZiB0aGUg
YXVkaW8gY29kZWMuCiAgICAgcmV0dXJuIG5ldGVxXy0+R2V0RGVjb2RlcihmaXJzdF9wYXlsb2Fk
X2J5dGUgJiAweDdmKTsKICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jl
Y2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlci5oCmluZGV4IGEyYWU3MjNkZWVlNmFj
ZGJjN2Y0M2ZmMmYzMjJjOGZmZTdjNDI0OGQuLjhlN2Q4Mzk3OGMwZDdhMTNhMzliNjJiOTIxOWNk
NGI0ZTMwYTMwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RV
TEVTX0FVRElPX0NPRElOR19BQ00yX0FDTV9SRUNFSVZFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FV
RElPX0NPRElOR19BQ00yX0FDTV9SRUNFSVZFUl9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAj
aW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CkBAIC0x
OCwxOSArMTksMjEgQEAKIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNs
dWRlICJhcGkvYXJyYXlfdmlldy5oIgotI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19mcmFtZS5o
IgotI2luY2x1ZGUgImNvbW1vbl9hdWRpby92YWQvaW5jbHVkZS93ZWJydGNfdmFkLmgiCisjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL2F1
ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hY20yL2FjbV9yZXNhbXBsZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9h
Y20yL2NhbGxfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2lu
Y2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNl
Y3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNzIENsb2NrOwogc3RydWN0IENvZGVjSW5zdDsKIGNsYXNz
IE5ldEVxOworc3RydWN0IFJUUEhlYWRlcjsKK3N0cnVjdCBXZWJSdGNSVFBIZWFkZXI7CiAKIG5h
bWVzcGFjZSBhY20yIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXJfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlcl91bml0dGVzdC5jYwppbmRleCAyOWYy
YTQ1NjY5YjNkOTlmMjFlZGMwNDAyZDE2YzFmZWQwYmUxZjExLi40NjM4NGZlYmI1NzQ5ZjQ1ZDBl
ZDJkYzcxNTUzZTk0NDQwOTM5NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZl
cl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlcl91bml0dGVzdC5jYwpA
QCAtNzMsMTIgKzczLDEyIEBAIGNsYXNzIEFjbVJlY2VpdmVyVGVzdE9sZEFwaSA6IHB1YmxpYyBB
dWRpb1BhY2tldGl6YXRpb25DYWxsYmFjaywKICAgICAvLyBJZiB3ZSBoYXZlIGEgY29tcGF0aWJs
ZSBDTiBzcGVjaWZpY2F0aW9uLCBzdGFjayBhIENORyBvbiB0b3AuCiAgICAgYXV0byBpdCA9IGNu
Z19wYXlsb2FkX3R5cGVzLmZpbmQoaW5mby5zYW1wbGVfcmF0ZV9oeik7CiAgICAgaWYgKGl0ICE9
IGNuZ19wYXlsb2FkX3R5cGVzLmVuZCgpKSB7Ci0gICAgICBBdWRpb0VuY29kZXJDbmc6OkNvbmZp
ZyBjb25maWc7CisgICAgICBBdWRpb0VuY29kZXJDbmdDb25maWcgY29uZmlnOwogICAgICAgY29u
ZmlnLnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKGVuYyk7CiAgICAgICBjb25maWcubnVtX2No
YW5uZWxzID0gMTsKICAgICAgIGNvbmZpZy5wYXlsb2FkX3R5cGUgPSBpdC0+c2Vjb25kOwogICAg
ICAgY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkTm9ybWFsOwotICAgICAgZW5jID0gYWJzbDo6
bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyQ25nPihzdGQ6Om1vdmUoY29uZmlnKSk7CisgICAgICBl
bmMgPSBDcmVhdGVDb21mb3J0Tm9pc2VFbmNvZGVyKHN0ZDo6bW92ZShjb25maWcpKTsKICAgICB9
CiAKICAgICAvLyBBY3R1YWxseSBzdGFydCB1c2luZyB0aGUgbmV3IGVuY29kZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBs
ZXIuY2MKaW5kZXggYzBiMjA2NDQ1Mzc1OWNkNGZkYmYxNjdiMWFkYzViMzI0MDdjYjRiMC4uY2Ez
NTgzZTMyY2RlYTQ2NGI5OTQ2YzZhYjljOGM1ZmU1YzM3NGM1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
YWNtMi9hY21fcmVzYW1wbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jlc2FtcGxlci5jYwpA
QCAtMTMsNyArMTMsNiBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPHN0cmluZy5o
PgogCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9pbmNsdWRlL3Jlc2FtcGxlci5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jl
c2FtcGxlci5oCmluZGV4IDkwNGVhNTI0Zjg4MzlhNjA0ZGE4YTM4NmY3YWE1MjQ3NDU3YWRmODMu
Ljk2YmE5M2E3NjIyOTk1Y2U5YWNhMzE1YmY1YWFhZDkzNDk0YmQ2ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2FjbTIvYWNtX3Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jlc2FtcGxlci5o
CkBAIC0xMSw2ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FDTTJfQUNN
X1JFU0FNUExFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19BQ00yX0FDTV9SRVNB
TVBMRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAj
aW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9pbmNsdWRlL3B1c2hfcmVzYW1wbGVyLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hdWRpb19jb2Rp
bmdfbW9kdWxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hdWRpb19jb2RpbmdfbW9kdWxlLmNjCmluZGV4IDYw
YWZlYjY5YmRlZDM5Y2ZjMzdmMjRmYzNmNzUxMDUzOWM5YmNjMTIuLmMwYWFiM2EzMGZhNTM5YTNi
YjkwZWE4YjEzMGZkYjAyN2Y1N2NjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYXVkaW9fY29k
aW5nX21vZHVsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2F1ZGlvX2NvZGluZ19tb2R1bGUuY2MKQEAg
LTEwLDI4ICsxMCwyOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVk
ZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCiAKKyNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRl
IDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5n
cy9tYXRjaC5oIgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9hY20yL2NvZGVjX21hbmFnZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9hY20yL3JlbnRfYV9jb2RlYy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1
bGVfY29tbW9uX3R5cGVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21t
b25fdHlwZXNfcHVibGljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9u
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5u
b3RhdGlvbnMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBuYW1lc3BhY2UgewogCi1zdHJ1Y3QgRW5jb2RlckZh
Y3RvcnkgewotICBBdWRpb0VuY29kZXIqIGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyID0gbnVsbHB0
cjsKLSAgYWNtMjo6Q29kZWNNYW5hZ2VyIGNvZGVjX21hbmFnZXI7Ci0gIGFjbTI6OlJlbnRBQ29k
ZWMgcmVudF9hX2NvZGVjOwotfTsKLQogY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGVJbXBsIGZpbmFs
IDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IEF1ZGlv
Q29kaW5nTW9kdWxlSW1wbChjb25zdCBBdWRpb0NvZGluZ01vZHVsZTo6Q29uZmlnJiBjb25maWcp
OwpAQCAtNDEsMTIgKzQyLDYgQEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGVJbXBsIGZpbmFsIDog
cHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlIHsKICAgLy8gICBTZW5kZXIKICAgLy8KIAotICAvLyBD
YW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciBDb2RlYywgQ05HLCBSRUQuCi0gIGludCBS
ZWdpc3RlclNlbmRDb2RlYyhjb25zdCBDb2RlY0luc3QmIHNlbmRfY29kZWMpIG92ZXJyaWRlOwot
Ci0gIHZvaWQgUmVnaXN0ZXJFeHRlcm5hbFNlbmRDb2RlYygKLSAgICAgIEF1ZGlvRW5jb2Rlciog
ZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXIpIG92ZXJyaWRlOwotCiAgIHZvaWQgTW9kaWZ5RW5jb2Rl
cihydGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIpIG92ZXJyaWRlOwogCkBAIC02NSwy
NiArNjAsMTAgQEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGVJbXBsIGZpbmFsIDogcHVibGljIEF1
ZGlvQ29kaW5nTW9kdWxlIHsKICAgLy8gQWRkIDEwIG1zIG9mIHJhdyAoUENNKSBhdWRpbyBkYXRh
IHRvIHRoZSBlbmNvZGVyLgogICBpbnQgQWRkMTBNc0RhdGEoY29uc3QgQXVkaW9GcmFtZSYgYXVk
aW9fZnJhbWUpIG92ZXJyaWRlOwogCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0gIC8vIChSRUQpIFJlZHVuZGFudCBDb2RpbmcKLSAgLy8KLQotICAvLyBDb25m
aWd1cmUgUkVEIHN0YXR1cyBpLmUuIG9uL29mZi4KLSAgaW50IFNldFJFRFN0YXR1cyhib29sIGVu
YWJsZV9yZWQpIG92ZXJyaWRlOwotCi0gIC8vIEdldCBSRUQgc3RhdHVzLgotICBib29sIFJFRFN0
YXR1cygpIGNvbnN0IG92ZXJyaWRlOwotCiAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCiAgIC8vIChGRUMpIEZvcndhcmQgRXJyb3IgQ29ycmVjdGlvbiAoY29kZWMg
aW50ZXJuYWwpCiAgIC8vCiAKLSAgLy8gQ29uZmlndXJlIEZFQyBzdGF0dXMgaS5lLiBvbi9vZmYu
Ci0gIGludCBTZXRDb2RlY0ZFQyhib29sIGVuYWJsZWRfY29kZWNfZmVjKSBvdmVycmlkZTsKLQot
ICAvLyBHZXQgRkVDIHN0YXR1cy4KLSAgYm9vbCBDb2RlY0ZFQygpIGNvbnN0IG92ZXJyaWRlOwot
CiAgIC8vIFNldCB0YXJnZXQgcGFja2V0IGxvc3MgcmF0ZQogICBpbnQgU2V0UGFja2V0TG9zc1Jh
dGUoaW50IGxvc3NfcmF0ZSkgb3ZlcnJpZGU7CiAKQEAgLTk0LDE0ICs3Myw2IEBAIGNsYXNzIEF1
ZGlvQ29kaW5nTW9kdWxlSW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0NvZGluZ01vZHVsZSB7CiAg
IC8vICAgKENORykgQ29tZm9ydCBOb2lzZSBHZW5lcmF0aW9uCiAgIC8vCiAKLSAgaW50IFNldFZB
RChib29sIGVuYWJsZV9kdHggPSB0cnVlLAotICAgICAgICAgICAgIGJvb2wgZW5hYmxlX3ZhZCA9
IGZhbHNlLAotICAgICAgICAgICAgIEFDTVZBRE1vZGUgbW9kZSA9IFZBRE5vcm1hbCkgb3ZlcnJp
ZGU7Ci0KLSAgaW50IFZBRChib29sKiBkdHhfZW5hYmxlZCwKLSAgICAgICAgICBib29sKiB2YWRf
ZW5hYmxlZCwKLSAgICAgICAgICBBQ01WQURNb2RlKiBtb2RlKSBjb25zdCBvdmVycmlkZTsKLQog
ICBpbnQgUmVnaXN0ZXJWQURDYWxsYmFjayhBQ01WQURDYWxsYmFjayogdmFkX2NhbGxiYWNrKSBv
dmVycmlkZTsKIAogICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpA
QCAtMTIyLDExICs5Myw2IEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbCBmaW5hbCA6IHB1
YmxpYyBBdWRpb0NvZGluZ01vZHVsZSB7CiAgIGJvb2wgUmVnaXN0ZXJSZWNlaXZlQ29kZWMoaW50
IHJ0cF9wYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2Rw
QXVkaW9Gb3JtYXQmIGF1ZGlvX2Zvcm1hdCkgb3ZlcnJpZGU7CiAKLSAgaW50IFJlZ2lzdGVyUmVj
ZWl2ZUNvZGVjKGNvbnN0IENvZGVjSW5zdCYgcmVjZWl2ZV9jb2RlYykgb3ZlcnJpZGU7Ci0gIGlu
dCBSZWdpc3RlclJlY2VpdmVDb2RlYygKLSAgICAgIGNvbnN0IENvZGVjSW5zdCYgcmVjZWl2ZV9j
b2RlYywKLSAgICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RlY29k
ZXI+KCk+IGlzYWNfZmFjdG9yeSkgb3ZlcnJpZGU7Ci0KICAgaW50IFJlZ2lzdGVyRXh0ZXJuYWxS
ZWNlaXZlQ29kZWMoaW50IHJ0cF9wYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEF1ZGlvRGVjb2RlciogZXh0ZXJuYWxfZGVjb2RlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6LApAQCAtMjE0LDExICsx
ODAsNiBAQCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZUltcGwgZmluYWwgOiBwdWJsaWMgQXVkaW9D
b2RpbmdNb2R1bGUgewogICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGhpc3RvZ3JhbV9uYW1lXzsKICAg
fTsKIAotICBpbnQgUmVnaXN0ZXJSZWNlaXZlQ29kZWNVbmxvY2tlZCgKLSAgICAgIGNvbnN0IENv
ZGVjSW5zdCYgY29kZWMsCi0gICAgICBydGM6OkZ1bmN0aW9uVmlldzxzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9EZWNvZGVyPigpPiBpc2FjX2ZhY3RvcnkpCi0gICAgICBSVENfRVhDTFVTSVZFX0xPQ0tT
X1JFUVVJUkVEKGFjbV9jcml0X3NlY3RfKTsKLQogICBpbnQgQWRkMTBNc0RhdGFJbnRlcm5hbChj
b25zdCBBdWRpb0ZyYW1lJiBhdWRpb19mcmFtZSwgSW5wdXREYXRhKiBpbnB1dF9kYXRhKQogICAg
ICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChhY21fY3JpdF9zZWN0Xyk7CiAgIGludCBF
bmNvZGUoY29uc3QgSW5wdXREYXRhJiBpbnB1dF9kYXRhKQpAQCAtMjU2LDEyICsyMTcsNyBAQCBj
bGFzcyBBdWRpb0NvZGluZ01vZHVsZUltcGwgZmluYWwgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1
bGUgewogICBhY20yOjpBY21SZWNlaXZlciByZWNlaXZlcl87ICAvLyBBY21SZWNlaXZlciBoYXMg
aXQncyBvd24gaW50ZXJuYWwgbG9jay4KICAgQ2hhbmdlTG9nZ2VyIGJpdHJhdGVfbG9nZ2VyXyBS
VENfR1VBUkRFRF9CWShhY21fY3JpdF9zZWN0Xyk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPEVuY29k
ZXJGYWN0b3J5PiBlbmNvZGVyX2ZhY3RvcnlfCi0gICAgICBSVENfR1VBUkRFRF9CWShhY21fY3Jp
dF9zZWN0Xyk7Ci0KLSAgLy8gQ3VycmVudCBlbmNvZGVyIHN0YWNrLCBlaXRoZXIgb2J0YWluZWQg
ZnJvbQotICAvLyBlbmNvZGVyX2ZhY3RvcnlfLT5yZW50X2FfY29kZWMuUmVudEVuY29kZXJTdGFj
ayBvciBwcm92aWRlZCBieSBhIGNhbGwgdG8KLSAgLy8gUmVnaXN0ZXJFbmNvZGVyLgorICAvLyBD
dXJyZW50IGVuY29kZXIgc3RhY2ssIHByb3ZpZGVkIGJ5IGEgY2FsbCB0byBSZWdpc3RlckVuY29k
ZXIuCiAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29kZXJfc3RhY2tfIFJUQ19H
VUFSREVEX0JZKGFjbV9jcml0X3NlY3RfKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNv
ZGVyPiBpc2FjX2RlY29kZXJfMTZrXwpAQCAtMzk3LDI4ICszNTMsNiBAQCBjbGFzcyBSYXdBdWRp
b0VuY29kZXJXcmFwcGVyIGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7CiAgIEF1ZGlvRW5j
b2RlciogZW5jXzsKIH07CiAKLS8vIFJldHVybiBmYWxzZSBvbiBlcnJvci4KLWJvb2wgQ3JlYXRl
U3BlZWNoRW5jb2RlcklmTmVjZXNzYXJ5KEVuY29kZXJGYWN0b3J5KiBlZikgewotICBhdXRvKiBz
cCA9IGVmLT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1zKCk7Ci0gIGlmIChzcC0+c3BlZWNo
X2VuY29kZXIpIHsKLSAgICAvLyBEbyBub3RoaW5nOyB3ZSBhbHJlYWR5IGhhdmUgYSBzcGVlY2gg
ZW5jb2Rlci4KLSAgfSBlbHNlIGlmIChlZi0+Y29kZWNfbWFuYWdlci5HZXRDb2RlY0luc3QoKSkg
ewotICAgIFJUQ19EQ0hFQ0soIWVmLT5leHRlcm5hbF9zcGVlY2hfZW5jb2Rlcik7Ci0gICAgLy8g
V2UgaGF2ZSBubyBzcGVlY2ggZW5jb2RlciwgYnV0IHdlIGhhdmUgYSBzcGVjaWZpY2F0aW9uIGZv
ciBtYWtpbmcgb25lLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuYyA9Ci0g
ICAgICAgIGVmLT5yZW50X2FfY29kZWMuUmVudEVuY29kZXIoKmVmLT5jb2RlY19tYW5hZ2VyLkdl
dENvZGVjSW5zdCgpKTsKLSAgICBpZiAoIWVuYykKLSAgICAgIHJldHVybiBmYWxzZTsgIC8vIEVu
Y29kZXIgc3BlYyB3YXMgYmFkLgotICAgIHNwLT5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShl
bmMpOwotICB9IGVsc2UgaWYgKGVmLT5leHRlcm5hbF9zcGVlY2hfZW5jb2RlcikgewotICAgIFJU
Q19EQ0hFQ0soIWVmLT5jb2RlY19tYW5hZ2VyLkdldENvZGVjSW5zdCgpKTsKLSAgICAvLyBXZSBo
YXZlIGFuIGV4dGVybmFsIHNwZWVjaCBlbmNvZGVyLgotICAgIHNwLT5zcGVlY2hfZW5jb2RlciA9
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KAotICAgICAgICBuZXcgUmF3QXVkaW9FbmNv
ZGVyV3JhcHBlcihlZi0+ZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXIpKTsKLSAgfQotICByZXR1cm4g
dHJ1ZTsKLX0KLQogdm9pZCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OkNoYW5nZUxvZ2dlcjo6TWF5
YmVMb2coaW50IHZhbHVlKSB7CiAgIGlmICh2YWx1ZSAhPSBsYXN0X3ZhbHVlXyB8fCBmaXJzdF90
aW1lXykgewogICAgIGZpcnN0X3RpbWVfID0gZmFsc2U7CkBAIC00MzMsNyArMzY3LDYgQEAgQXVk
aW9Db2RpbmdNb2R1bGVJbXBsOjpBdWRpb0NvZGluZ01vZHVsZUltcGwoCiAgICAgICBleHBlY3Rl
ZF9pbl90c18oMHhEODdGM0Y5RiksCiAgICAgICByZWNlaXZlcl8oY29uZmlnKSwKICAgICAgIGJp
dHJhdGVfbG9nZ2VyXygiV2ViUlRDLkF1ZGlvLlRhcmdldEJpdHJhdGVJbkticHMiKSwKLSAgICAg
IGVuY29kZXJfZmFjdG9yeV8obmV3IEVuY29kZXJGYWN0b3J5KSwKICAgICAgIGVuY29kZXJfc3Rh
Y2tfKG51bGxwdHIpLAogICAgICAgcHJldmlvdXNfcGx0eXBlXygyNTUpLAogICAgICAgcmVjZWl2
ZXJfaW5pdGlhbGl6ZWRfKGZhbHNlKSwKQEAgLTU0MSw2OSArNDc0LDI5IEBAIGludDMyX3QgQXVk
aW9Db2RpbmdNb2R1bGVJbXBsOjpFbmNvZGUoY29uc3QgSW5wdXREYXRhJiBpbnB1dF9kYXRhKSB7
CiAvLyAgIFNlbmRlcgogLy8KIAotLy8gQ2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBmb3Ig
Q29kZWMsIENORywgUkVELgotaW50IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6UmVnaXN0ZXJTZW5k
Q29kZWMoY29uc3QgQ29kZWNJbnN0JiBzZW5kX2NvZGVjKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxv
Y2soJmFjbV9jcml0X3NlY3RfKTsKLSAgaWYgKCFlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5h
Z2VyLlJlZ2lzdGVyRW5jb2RlcihzZW5kX2NvZGVjKSkgewotICAgIHJldHVybiAtMTsKLSAgfQot
ICBpZiAoZW5jb2Rlcl9mYWN0b3J5Xy0+Y29kZWNfbWFuYWdlci5HZXRDb2RlY0luc3QoKSkgewot
ICAgIGVuY29kZXJfZmFjdG9yeV8tPmV4dGVybmFsX3NwZWVjaF9lbmNvZGVyID0gbnVsbHB0cjsK
LSAgfQotICBpZiAoIUNyZWF0ZVNwZWVjaEVuY29kZXJJZk5lY2Vzc2FyeShlbmNvZGVyX2ZhY3Rv
cnlfLmdldCgpKSkgewotICAgIHJldHVybiAtMTsKLSAgfQotICBhdXRvKiBzcCA9IGVuY29kZXJf
ZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMoKTsKLSAgaWYgKHNwLT5zcGVl
Y2hfZW5jb2RlcikKLSAgICBlbmNvZGVyX3N0YWNrXyA9IGVuY29kZXJfZmFjdG9yeV8tPnJlbnRf
YV9jb2RlYy5SZW50RW5jb2RlclN0YWNrKHNwKTsKLSAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgQXVk
aW9Db2RpbmdNb2R1bGVJbXBsOjpSZWdpc3RlckV4dGVybmFsU2VuZENvZGVjKAotICAgIEF1ZGlv
RW5jb2RlciogZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXIpIHsKLSAgcnRjOjpDcml0U2NvcGUgbG9j
aygmYWNtX2NyaXRfc2VjdF8pOwotICBlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2VyLlVu
c2V0Q29kZWNJbnN0KCk7Ci0gIGVuY29kZXJfZmFjdG9yeV8tPmV4dGVybmFsX3NwZWVjaF9lbmNv
ZGVyID0gZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXI7Ci0gIFJUQ19DSEVDSyhDcmVhdGVTcGVlY2hF
bmNvZGVySWZOZWNlc3NhcnkoZW5jb2Rlcl9mYWN0b3J5Xy5nZXQoKSkpOwotICBhdXRvKiBzcCA9
IGVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMoKTsKLSAgUlRD
X0NIRUNLKHNwLT5zcGVlY2hfZW5jb2Rlcik7Ci0gIGVuY29kZXJfc3RhY2tfID0gZW5jb2Rlcl9m
YWN0b3J5Xy0+cmVudF9hX2NvZGVjLlJlbnRFbmNvZGVyU3RhY2soc3ApOwotfQotCiB2b2lkIEF1
ZGlvQ29kaW5nTW9kdWxlSW1wbDo6TW9kaWZ5RW5jb2RlcigKICAgICBydGM6OkZ1bmN0aW9uVmll
dzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+IG1vZGlmaWVyKSB7CiAgIHJ0
Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLQotICAvLyBXaXBlIHRoZSBlbmNv
ZGVyIGZhY3RvcnksIHNvIHRoYXQgZXZlcnl0aGluZyB0aGF0IHJlbGllcyBvbiBpdCB3aWxsIGZh
aWwuCi0gIC8vIFdlIGRvbid0IHdhbnQgdGhlIGNvbXBsZXhpdHkgb2Ygc3VwcG9ydGluZyBzd2Fw
cGluZyBiYWNrIGFuZCBmb3J0aC4KLSAgaWYgKGVuY29kZXJfZmFjdG9yeV8pIHsKLSAgICBlbmNv
ZGVyX2ZhY3RvcnlfLnJlc2V0KCk7Ci0gICAgUlRDX0NIRUNLKCFlbmNvZGVyX3N0YWNrXyk7ICAv
LyBFbnN1cmUgd2UgaGFkbid0IHN0YXJ0ZWQgdXNpbmcgdGhlIGZhY3RvcnkuCi0gIH0KLQogICBt
b2RpZmllcigmZW5jb2Rlcl9zdGFja18pOwogfQogCiAvLyBHZXQgY3VycmVudCBzZW5kIGNvZGVj
LgogYWJzbDo6b3B0aW9uYWw8Q29kZWNJbnN0PiBBdWRpb0NvZGluZ01vZHVsZUltcGw6OlNlbmRD
b2RlYygpIGNvbnN0IHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmYWNtX2NyaXRfc2VjdF8pOwot
ICBpZiAoZW5jb2Rlcl9mYWN0b3J5XykgewotICAgIGF1dG8qIGNpID0gZW5jb2Rlcl9mYWN0b3J5
Xy0+Y29kZWNfbWFuYWdlci5HZXRDb2RlY0luc3QoKTsKLSAgICBpZiAoY2kpIHsKLSAgICAgIHJl
dHVybiAqY2k7Ci0gICAgfQotICAgIENyZWF0ZVNwZWVjaEVuY29kZXJJZk5lY2Vzc2FyeShlbmNv
ZGVyX2ZhY3RvcnlfLmdldCgpKTsKLSAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNv
ZGVyPiYgZW5jID0KLSAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xy0+Y29kZWNfbWFuYWdlci5HZXRT
dGFja1BhcmFtcygpLT5zcGVlY2hfZW5jb2RlcjsKLSAgICBpZiAoZW5jKSB7Ci0gICAgICByZXR1
cm4gYWNtMjo6Q29kZWNNYW5hZ2VyOjpGb3JnZUNvZGVjSW5zdChlbmMuZ2V0KCkpOwotICAgIH0K
LSAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgaWYgKGVuY29kZXJfc3RhY2tfKSB7CisgICAg
Q29kZWNJbnN0IGNpOworICAgIGNpLmNoYW5uZWxzID0gZW5jb2Rlcl9zdGFja18tPk51bUNoYW5u
ZWxzKCk7CisgICAgY2kucGxmcmVxID0gZW5jb2Rlcl9zdGFja18tPlNhbXBsZVJhdGVIeigpOwor
ICAgIGNpLnBhY3NpemUgPSBydGM6OkNoZWNrZWREaXZFeGFjdCgKKyAgICAgICAgc3RhdGljX2Nh
c3Q8aW50PihlbmNvZGVyX3N0YWNrXy0+TWF4MTBNc0ZyYW1lc0luQVBhY2tldCgpICogY2kucGxm
cmVxKSwKKyAgICAgICAgMTAwKTsKKyAgICBjaS5wbHR5cGUgPSAtMTsgIC8vIE5vdCB2YWxpZC4K
KyAgICBjaS5yYXRlID0gLTE7ICAgIC8vIE5vdCB2YWxpZC4KKyAgICBzdGF0aWMgY29uc3QgY2hh
ciBrTmFtZVtdID0gImV4dGVybmFsIjsKKyAgICBtZW1jcHkoY2kucGxuYW1lLCBrTmFtZSwgc2l6
ZW9mKGtOYW1lKSk7CisgICAgcmV0dXJuIGNpOwogICB9IGVsc2UgewotICAgIHJldHVybiBlbmNv
ZGVyX3N0YWNrXwotICAgICAgICAgICAgICAgPyBhYnNsOjpvcHRpb25hbDxDb2RlY0luc3Q+KAot
ICAgICAgICAgICAgICAgICAgICAgYWNtMjo6Q29kZWNNYW5hZ2VyOjpGb3JnZUNvZGVjSW5zdChl
bmNvZGVyX3N0YWNrXy5nZXQoKSkpCi0gICAgICAgICAgICAgICA6IGFic2w6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CiAgIH0KIH0KIApAQCAtODAwLDU5ICs2OTMsMTAgQEAg
aW50IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6UHJlcHJvY2Vzc1RvQWRkRGF0YShjb25zdCBBdWRp
b0ZyYW1lJiBpbl9mcmFtZSwKICAgcmV0dXJuIDA7CiB9CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAgIChSRUQpIFJlZHVuZGFudCBDb2RpbmcKLS8vCi0K
LWJvb2wgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpSRURTdGF0dXMoKSBjb25zdCB7Ci0gIHJ0Yzo6
Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgcmV0dXJuIGVuY29kZXJfZmFjdG9y
eV8tPmNvZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMoKS0+dXNlX3JlZDsKLX0KLQotLy8gQ29u
ZmlndXJlIFJFRCBzdGF0dXMgaS5lIG9uL29mZi4KLWludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6
OlNldFJFRFN0YXR1cyhib29sIGVuYWJsZV9yZWQpIHsKLSNpZmRlZiBXRUJSVENfQ09ERUNfUkVE
Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgQ3JlYXRlU3BlZWNo
RW5jb2RlcklmTmVjZXNzYXJ5KGVuY29kZXJfZmFjdG9yeV8uZ2V0KCkpOwotICBpZiAoIWVuY29k
ZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuU2V0Q29weVJlZChlbmFibGVfcmVkKSkgewotICAg
IHJldHVybiAtMTsKLSAgfQotICBhdXRvKiBzcCA9IGVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21h
bmFnZXIuR2V0U3RhY2tQYXJhbXMoKTsKLSAgaWYgKHNwLT5zcGVlY2hfZW5jb2RlcikKLSAgICBl
bmNvZGVyX3N0YWNrXyA9IGVuY29kZXJfZmFjdG9yeV8tPnJlbnRfYV9jb2RlYy5SZW50RW5jb2Rl
clN0YWNrKHNwKTsKLSAgcmV0dXJuIDA7Ci0jZWxzZQotICBSVENfTE9HKExTX1dBUk5JTkcpIDw8
ICIgIFdFQlJUQ19DT0RFQ19SRUQgaXMgdW5kZWZpbmVkIjsKLSAgcmV0dXJuIC0xOwotI2VuZGlm
Ci19Ci0KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyAgIChG
RUMpIEZvcndhcmQgRXJyb3IgQ29ycmVjdGlvbiAoY29kZWMgaW50ZXJuYWwpCiAvLwogCi1ib29s
IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6Q29kZWNGRUMoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNj
b3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgcmV0dXJuIGVuY29kZXJfZmFjdG9yeV8tPmNv
ZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMoKS0+dXNlX2NvZGVjX2ZlYzsKLX0KLQotaW50IEF1
ZGlvQ29kaW5nTW9kdWxlSW1wbDo6U2V0Q29kZWNGRUMoYm9vbCBlbmFibGVfY29kZWNfZmVjKSB7
Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgQ3JlYXRlU3BlZWNo
RW5jb2RlcklmTmVjZXNzYXJ5KGVuY29kZXJfZmFjdG9yeV8uZ2V0KCkpOwotICBpZiAoIWVuY29k
ZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuU2V0Q29kZWNGRUMoZW5hYmxlX2NvZGVjX2ZlYykp
IHsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgYXV0byogc3AgPSBlbmNvZGVyX2ZhY3RvcnlfLT5j
b2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1zKCk7Ci0gIGlmIChzcC0+c3BlZWNoX2VuY29kZXIp
Ci0gICAgZW5jb2Rlcl9zdGFja18gPSBlbmNvZGVyX2ZhY3RvcnlfLT5yZW50X2FfY29kZWMuUmVu
dEVuY29kZXJTdGFjayhzcCk7Ci0gIGlmIChlbmFibGVfY29kZWNfZmVjKSB7Ci0gICAgcmV0dXJu
IHNwLT51c2VfY29kZWNfZmVjID8gMCA6IC0xOwotICB9IGVsc2UgewotICAgIFJUQ19EQ0hFQ0so
IXNwLT51c2VfY29kZWNfZmVjKTsKLSAgICByZXR1cm4gMDsKLSAgfQotfQotCiBpbnQgQXVkaW9D
b2RpbmdNb2R1bGVJbXBsOjpTZXRQYWNrZXRMb3NzUmF0ZShpbnQgbG9zc19yYXRlKSB7CiAgIHJ0
Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKICAgaWYgKEhhdmVWYWxpZEVuY29k
ZXIoIlNldFBhY2tldExvc3NSYXRlIikpIHsKQEAgLTg2MSwzNiArNzA1LDYgQEAgaW50IEF1ZGlv
Q29kaW5nTW9kdWxlSW1wbDo6U2V0UGFja2V0TG9zc1JhdGUoaW50IGxvc3NfcmF0ZSkgewogICBy
ZXR1cm4gMDsKIH0KIAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LS8vICAgKFZBRCkgVm9pY2UgQWN0aXZpdHkgRGV0ZWN0aW9uCi0vLwotaW50IEF1ZGlvQ29kaW5n
TW9kdWxlSW1wbDo6U2V0VkFEKGJvb2wgZW5hYmxlX2R0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGVuYWJsZV92YWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQUNNVkFETW9kZSBtb2RlKSB7Ci0gIC8vIE5vdGU6IHxlbmFibGVfdmFkfCBpcyBu
b3QgdXNlZDsgVkFEIGlzIGVuYWJsZWQgYmFzZWQgb24gdGhlIERUWCBzZXR0aW5nLgotICBSVENf
RENIRUNLX0VRKGVuYWJsZV9kdHgsIGVuYWJsZV92YWQpOwotICBydGM6OkNyaXRTY29wZSBsb2Nr
KCZhY21fY3JpdF9zZWN0Xyk7Ci0gIENyZWF0ZVNwZWVjaEVuY29kZXJJZk5lY2Vzc2FyeShlbmNv
ZGVyX2ZhY3RvcnlfLmdldCgpKTsKLSAgaWYgKCFlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5h
Z2VyLlNldFZBRChlbmFibGVfZHR4LCBtb2RlKSkgewotICAgIHJldHVybiAtMTsKLSAgfQotICBh
dXRvKiBzcCA9IGVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMo
KTsKLSAgaWYgKHNwLT5zcGVlY2hfZW5jb2RlcikKLSAgICBlbmNvZGVyX3N0YWNrXyA9IGVuY29k
ZXJfZmFjdG9yeV8tPnJlbnRfYV9jb2RlYy5SZW50RW5jb2RlclN0YWNrKHNwKTsKLSAgcmV0dXJu
IDA7Ci19Ci0KLS8vIEdldCBWQUQvRFRYIHNldHRpbmdzLgotaW50IEF1ZGlvQ29kaW5nTW9kdWxl
SW1wbDo6VkFEKGJvb2wqIGR0eF9lbmFibGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wqIHZhZF9lbmFibGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFD
TVZBRE1vZGUqIG1vZGUpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgbG9jaygmYWNtX2NyaXRf
c2VjdF8pOwotICBjb25zdCBhdXRvKiBzcCA9IGVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFn
ZXIuR2V0U3RhY2tQYXJhbXMoKTsKLSAgKmR0eF9lbmFibGVkID0gKnZhZF9lbmFibGVkID0gc3At
PnVzZV9jbmc7Ci0gICptb2RlID0gc3AtPnZhZF9tb2RlOwotICByZXR1cm4gMDsKLX0KLQogLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vICAgUmVjZWl2ZXIKIC8v
CkBAIC05NDksNTkgKzc2Myw2IEBAIGJvb2wgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpSZWdpc3Rl
clJlY2VpdmVDb2RlYygKICAgcmV0dXJuIHJlY2VpdmVyXy5BZGRDb2RlYyhydHBfcGF5bG9hZF90
eXBlLCBhdWRpb19mb3JtYXQpOwogfQogCi1pbnQgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpSZWdp
c3RlclJlY2VpdmVDb2RlYyhjb25zdCBDb2RlY0luc3QmIGNvZGVjKSB7Ci0gIHJ0Yzo6Q3JpdFNj
b3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgYXV0byogZWYgPSBlbmNvZGVyX2ZhY3Rvcnlf
LmdldCgpOwotICByZXR1cm4gUmVnaXN0ZXJSZWNlaXZlQ29kZWNVbmxvY2tlZCgKLSAgICAgIGNv
ZGVjLCBbJl0geyByZXR1cm4gZWYtPnJlbnRfYV9jb2RlYy5SZW50SXNhY0RlY29kZXIoY29kZWMu
cGxmcmVxKTsgfSk7Ci19Ci0KLWludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OlJlZ2lzdGVyUmVj
ZWl2ZUNvZGVjKAotICAgIGNvbnN0IENvZGVjSW5zdCYgY29kZWMsCi0gICAgcnRjOjpGdW5jdGlv
blZpZXc8c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4oKT4gaXNhY19mYWN0b3J5KSB7Ci0g
IHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgcmV0dXJuIFJlZ2lzdGVy
UmVjZWl2ZUNvZGVjVW5sb2NrZWQoY29kZWMsIGlzYWNfZmFjdG9yeSk7Ci19Ci0KLWludCBBdWRp
b0NvZGluZ01vZHVsZUltcGw6OlJlZ2lzdGVyUmVjZWl2ZUNvZGVjVW5sb2NrZWQoCi0gICAgY29u
c3QgQ29kZWNJbnN0JiBjb2RlYywKLSAgICBydGM6OkZ1bmN0aW9uVmlldzxzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9EZWNvZGVyPigpPiBpc2FjX2ZhY3RvcnkpIHsKLSAgUlRDX0RDSEVDSyhyZWNlaXZl
cl9pbml0aWFsaXplZF8pOwotICBpZiAoY29kZWMuY2hhbm5lbHMgPiAyKSB7Ci0gICAgUlRDX0xP
R19GKExTX0VSUk9SKSA8PCAiVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGNoYW5uZWxzOiAiIDw8IGNv
ZGVjLmNoYW5uZWxzOwotICAgIHJldHVybiAtMTsKLSAgfQotCi0gIGF1dG8gY29kZWNfaWQgPSBh
Y20yOjpSZW50QUNvZGVjOjpDb2RlY0lkQnlQYXJhbXMoY29kZWMucGxuYW1lLCBjb2RlYy5wbGZy
ZXEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29kZWMuY2hhbm5lbHMpOwotICBpZiAoIWNvZGVjX2lkKSB7Ci0gICAgUlRDX0xPR19GKExTX0VS
Uk9SKQotICAgICAgICA8PCAiV3JvbmcgY29kZWMgcGFyYW1zIHRvIGJlIHJlZ2lzdGVyZWQgYXMg
cmVjZWl2ZSBjb2RlYyI7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIGF1dG8gY29kZWNfaW5kZXgg
PSBhY20yOjpSZW50QUNvZGVjOjpDb2RlY0luZGV4RnJvbUlkKCpjb2RlY19pZCk7Ci0gIFJUQ19D
SEVDSyhjb2RlY19pbmRleCkgPDwgIkludmFsaWQgY29kZWMgSUQ6ICIgPDwgc3RhdGljX2Nhc3Q8
aW50PigqY29kZWNfaWQpOwotCi0gIC8vIENoZWNrIGlmIHRoZSBwYXlsb2FkLXR5cGUgaXMgdmFs
aWQuCi0gIGlmICghYWNtMjo6UmVudEFDb2RlYzo6SXNQYXlsb2FkVHlwZVZhbGlkKGNvZGVjLnBs
dHlwZSkpIHsKLSAgICBSVENfTE9HX0YoTFNfRVJST1IpIDw8ICJJbnZhbGlkIHBheWxvYWQgdHlw
ZSAiIDw8IGNvZGVjLnBsdHlwZSA8PCAiIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICA8
PCBjb2RlYy5wbG5hbWU7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0KLSAgQXVkaW9EZWNvZGVyKiBp
c2FjX2RlY29kZXIgPSBudWxscHRyOwotICBpZiAoU1RSX0NBU0VfQ01QKGNvZGVjLnBsbmFtZSwg
ImlzYWMiKSA9PSAwKSB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4mIHNhdmVk
X2lzYWNfZGVjb2RlciA9Ci0gICAgICAgIGNvZGVjLnBsZnJlcSA9PSAxNjAwMCA/IGlzYWNfZGVj
b2Rlcl8xNmtfIDogaXNhY19kZWNvZGVyXzMya187Ci0gICAgaWYgKCFzYXZlZF9pc2FjX2RlY29k
ZXIpIHsKLSAgICAgIHNhdmVkX2lzYWNfZGVjb2RlciA9IGlzYWNfZmFjdG9yeSgpOwotICAgIH0K
LSAgICBpc2FjX2RlY29kZXIgPSBzYXZlZF9pc2FjX2RlY29kZXIuZ2V0KCk7Ci0gIH0KLSAgcmV0
dXJuIHJlY2VpdmVyXy5BZGRDb2RlYygqY29kZWNfaW5kZXgsIGNvZGVjLnBsdHlwZSwgY29kZWMu
Y2hhbm5lbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWMucGxmcmVxLCBpc2Fj
X2RlY29kZXIsIGNvZGVjLnBsbmFtZSk7Ci19Ci0KIGludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6
OlJlZ2lzdGVyRXh0ZXJuYWxSZWNlaXZlQ29kZWMoCiAgICAgaW50IHJ0cF9wYXlsb2FkX3R5cGUs
CiAgICAgQXVkaW9EZWNvZGVyKiBleHRlcm5hbF9kZWNvZGVyLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
YWNtMi9hdWRpb19jb2RpbmdfbW9kdWxlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hdWRpb19j
b2RpbmdfbW9kdWxlX3VuaXR0ZXN0LmNjCmluZGV4IDVhYzYxMDJjNjgyMDk5ODhhZGJiMDJiN2Ix
Y2E1Y2MwNDhmZjA1MjcuLjRlMjYyZjdiMDM4YTNiZGY5ZjEzNmYzYTU2NGE0OTUyYTdhMjZjMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYXVkaW9fY29kaW5nX21vZHVsZV91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9hY20yL2F1ZGlvX2NvZGluZ19tb2R1bGVfdW5pdHRlc3QuY2MKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNr
ZXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmls
ZV9zb3VyY2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VkaWdlc3Qu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCkBAIC00Miw3ICs0Myw2IEBACiAjaW5j
bHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRf
YW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5o
IgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCIKICNp
bmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9zbGVlcC5oIgogI2luY2x1ZGUgInRlc3Qv
Z3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L21vY2tfYXVkaW9fZGVjb2Rlci5oIgpAQCAtNDA4LDEy
ICs0MDgsMTIgQEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1bGVUZXN0V2l0aENvbWZvcnROb2lzZU9s
ZEFwaQogICAgICAgICAgICAgICBhY21fLT5SZWdpc3RlclJlY2VpdmVDb2RlYygKICAgICAgICAg
ICAgICAgICAgIHJ0cF9wYXlsb2FkX3R5cGUsIFNkcEF1ZGlvRm9ybWF0KCJjbiIsIGtTYW1wbGVS
YXRlSHosIDEpKSk7CiAgICAgYWNtXy0+TW9kaWZ5RW5jb2RlcihbJl0oc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvRW5jb2Rlcj4qIGVuYykgewotICAgICAgQXVkaW9FbmNvZGVyQ25nOjpDb25maWcgY29u
ZmlnOworICAgICAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnIGNvbmZpZzsKICAgICAgIGNvbmZpZy5z
cGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZSgqZW5jKTsKICAgICAgIGNvbmZpZy5udW1fY2hhbm5l
bHMgPSAxOwogICAgICAgY29uZmlnLnBheWxvYWRfdHlwZSA9IHJ0cF9wYXlsb2FkX3R5cGU7CiAg
ICAgICBjb25maWcudmFkX21vZGUgPSBWYWQ6OmtWYWROb3JtYWw7Ci0gICAgICAqZW5jID0gYWJz
bDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyQ25nPihzdGQ6Om1vdmUoY29uZmlnKSk7CisgICAg
ICAqZW5jID0gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2RlcihzdGQ6Om1vdmUoY29uZmlnKSk7CiAg
ICAgfSk7CiAgIH0KIApAQCAtNDgxLDcgKzQ4MSw2IEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxl
TXRUZXN0T2xkQXBpIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlVGVzdE9sZEFwaSB7CiAgICAg
ICAgIHNlbmRfdGhyZWFkXyhDYlNlbmRUaHJlYWQsIHRoaXMsICJzZW5kIiksCiAgICAgICAgIGlu
c2VydF9wYWNrZXRfdGhyZWFkXyhDYkluc2VydFBhY2tldFRocmVhZCwgdGhpcywgImluc2VydF9w
YWNrZXQiKSwKICAgICAgICAgcHVsbF9hdWRpb190aHJlYWRfKENiUHVsbEF1ZGlvVGhyZWFkLCB0
aGlzLCAicHVsbF9hdWRpbyIpLAotICAgICAgICB0ZXN0X2NvbXBsZXRlXyhFdmVudFdyYXBwZXI6
OkNyZWF0ZSgpKSwKICAgICAgICAgc2VuZF9jb3VudF8oMCksCiAgICAgICAgIGluc2VydF9wYWNr
ZXRfY291bnRfKDApLAogICAgICAgICBwdWxsX2F1ZGlvX2NvdW50XygwKSwKQEAgLTUxMiw4ICs1
MTEsOCBAQCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZU10VGVzdE9sZEFwaSA6IHB1YmxpYyBBdWRp
b0NvZGluZ01vZHVsZVRlc3RPbGRBcGkgewogICAgIGluc2VydF9wYWNrZXRfdGhyZWFkXy5TdG9w
KCk7CiAgIH0KIAotICBFdmVudFR5cGVXcmFwcGVyIFJ1blRlc3QoKSB7Ci0gICAgcmV0dXJuIHRl
c3RfY29tcGxldGVfLT5XYWl0KDEwICogNjAgKiAxMDAwKTsgIC8vIDEwIG1pbnV0ZXMnIHRpbWVv
dXQuCisgIGJvb2wgUnVuVGVzdCgpIHsKKyAgICByZXR1cm4gdGVzdF9jb21wbGV0ZV8uV2FpdCgx
MCAqIDYwICogMTAwMCk7ICAvLyAxMCBtaW51dGVzJyB0aW1lb3V0LgogICB9CiAKICAgdmlydHVh
bCBib29sIFRlc3REb25lKCkgewpAQCAtNTM4LDEyICs1MzcsMTIgQEAgY2xhc3MgQXVkaW9Db2Rp
bmdNb2R1bGVNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVUZXN0T2xkQXBp
IHsKICAgICBTbGVlcE1zKDEpOwogICAgIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkgewogICAgICAg
Ly8gRW5kIHRoZSB0ZXN0IGVhcmx5IGlmIGEgZmF0YWwgZmFpbHVyZSAoQVNTRVJUXyopIGhhcyBv
Y2N1cnJlZC4KLSAgICAgIHRlc3RfY29tcGxldGVfLT5TZXQoKTsKKyAgICAgIHRlc3RfY29tcGxl
dGVfLlNldCgpOwogICAgIH0KICAgICArK3NlbmRfY291bnRfOwogICAgIEluc2VydEF1ZGlvQW5k
VmVyaWZ5RW5jb2RpbmcoKTsKICAgICBpZiAoVGVzdERvbmUoKSkgewotICAgICAgdGVzdF9jb21w
bGV0ZV8tPlNldCgpOworICAgICAgdGVzdF9jb21wbGV0ZV8uU2V0KCk7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwogICB9CkBAIC01OTIsNyArNTkxLDcgQEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1
bGVNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVUZXN0T2xkQXBpIHsKICAg
cnRjOjpQbGF0Zm9ybVRocmVhZCBzZW5kX3RocmVhZF87CiAgIHJ0Yzo6UGxhdGZvcm1UaHJlYWQg
aW5zZXJ0X3BhY2tldF90aHJlYWRfOwogICBydGM6OlBsYXRmb3JtVGhyZWFkIHB1bGxfYXVkaW9f
dGhyZWFkXzsKLSAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gdGVzdF9jb21w
bGV0ZV87CisgIHJ0Yzo6RXZlbnQgdGVzdF9jb21wbGV0ZV87CiAgIGludCBzZW5kX2NvdW50XzsK
ICAgaW50IGluc2VydF9wYWNrZXRfY291bnRfOwogICBpbnQgcHVsbF9hdWRpb19jb3VudF8gUlRD
X0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CkBAIC02MDcsNyArNjA2LDcgQEAgY2xhc3MgQXVkaW9D
b2RpbmdNb2R1bGVNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVUZXN0T2xk
QXBpIHsKICNkZWZpbmUgTUFZQkVfRG9UZXN0IERvVGVzdAogI2VuZGlmCiBURVNUX0YoQXVkaW9D
b2RpbmdNb2R1bGVNdFRlc3RPbGRBcGksIE1BWUJFX0RvVGVzdCkgewotICBFWFBFQ1RfRVEoa0V2
ZW50U2lnbmFsZWQsIFJ1blRlc3QoKSk7CisgIEVYUEVDVF9UUlVFKFJ1blRlc3QoKSk7CiB9CiAK
IC8vIFRoaXMgaXMgYSBtdWx0aS10aHJlYWRlZCBBQ00gdGVzdCB1c2luZyBpU0FDLiBUaGUgdGVz
dCBlbmNvZGVzIGF1ZGlvCkBAIC03MTcsNyArNzE2LDcgQEAgY2xhc3MgQWNtSXNhY010VGVzdE9s
ZEFwaSA6IHB1YmxpYyBBdWRpb0NvZGluZ01vZHVsZU10VGVzdE9sZEFwaSB7CiAjZW5kaWYKICNp
ZiBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FDKSB8fCBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FD
RlgpCiBURVNUX0YoQWNtSXNhY010VGVzdE9sZEFwaSwgTUFZQkVfRG9UZXN0KSB7Ci0gIEVYUEVD
VF9FUShrRXZlbnRTaWduYWxlZCwgUnVuVGVzdCgpKTsKKyAgRVhQRUNUX1RSVUUoUnVuVGVzdCgp
KTsKIH0KICNlbmRpZgogCkBAIC03MzQsNyArNzMzLDYgQEAgY2xhc3MgQWNtUmVSZWdpc3Rlcklz
YWNNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVUZXN0T2xkQXBpIHsKICAg
ICAgICAgY29kZWNfcmVnaXN0cmF0aW9uX3RocmVhZF8oQ2JDb2RlY1JlZ2lzdHJhdGlvblRocmVh
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImNvZGVjX3JlZ2lzdHJhdGlvbiIpLAotICAgICAgICB0
ZXN0X2NvbXBsZXRlXyhFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSwKICAgICAgICAgY29kZWNfcmVn
aXN0ZXJlZF8oZmFsc2UpLAogICAgICAgICByZWNlaXZlX3BhY2tldF9jb3VudF8oMCksCiAgICAg
ICAgIG5leHRfaW5zZXJ0X3BhY2tldF90aW1lX21zXygwKSwKQEAgLTc4MSw4ICs3NzksOCBAQCBj
bGFzcyBBY21SZVJlZ2lzdGVySXNhY010VGVzdE9sZEFwaSA6IHB1YmxpYyBBdWRpb0NvZGluZ01v
ZHVsZVRlc3RPbGRBcGkgewogICAgIGNvZGVjX3JlZ2lzdHJhdGlvbl90aHJlYWRfLlN0b3AoKTsK
ICAgfQogCi0gIEV2ZW50VHlwZVdyYXBwZXIgUnVuVGVzdCgpIHsKLSAgICByZXR1cm4gdGVzdF9j
b21wbGV0ZV8tPldhaXQoMTAgKiA2MCAqIDEwMDApOyAgLy8gMTAgbWludXRlcycgdGltZW91dC4K
KyAgYm9vbCBSdW5UZXN0KCkgeworICAgIHJldHVybiB0ZXN0X2NvbXBsZXRlXy5XYWl0KDEwICog
NjAgKiAxMDAwKTsgIC8vIDEwIG1pbnV0ZXMnIHRpbWVvdXQuCiAgIH0KIAogICBzdGF0aWMgYm9v
bCBDYlJlY2VpdmVUaHJlYWQodm9pZCogY29udGV4dCkgewpAQCAtODQ1LDcgKzg0Myw3IEBAIGNs
YXNzIEFjbVJlUmVnaXN0ZXJJc2FjTXRUZXN0T2xkQXBpIDogcHVibGljIEF1ZGlvQ29kaW5nTW9k
dWxlVGVzdE9sZEFwaSB7CiAgICAgU2xlZXBNcygxKTsKICAgICBpZiAoSGFzRmF0YWxGYWlsdXJl
KCkpIHsKICAgICAgIC8vIEVuZCB0aGUgdGVzdCBlYXJseSBpZiBhIGZhdGFsIGZhaWx1cmUgKEFT
U0VSVF8qKSBoYXMgb2NjdXJyZWQuCi0gICAgICB0ZXN0X2NvbXBsZXRlXy0+U2V0KCk7CisgICAg
ICB0ZXN0X2NvbXBsZXRlXy5TZXQoKTsKICAgICB9CiAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygm
Y3JpdF9zZWN0Xyk7CiAgICAgaWYgKCFjb2RlY19yZWdpc3RlcmVkXyAmJgpAQCAtODU2LDE0ICs4
NTQsMTQgQEAgY2xhc3MgQWNtUmVSZWdpc3RlcklzYWNNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVk
aW9Db2RpbmdNb2R1bGVUZXN0T2xkQXBpIHsKICAgICAgIGNvZGVjX3JlZ2lzdGVyZWRfID0gdHJ1
ZTsKICAgICB9CiAgICAgaWYgKGNvZGVjX3JlZ2lzdGVyZWRfICYmIHJlY2VpdmVfcGFja2V0X2Nv
dW50XyA+IGtOdW1QYWNrZXRzKSB7Ci0gICAgICB0ZXN0X2NvbXBsZXRlXy0+U2V0KCk7CisgICAg
ICB0ZXN0X2NvbXBsZXRlXy5TZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAog
ICBydGM6OlBsYXRmb3JtVGhyZWFkIHJlY2VpdmVfdGhyZWFkXzsKICAgcnRjOjpQbGF0Zm9ybVRo
cmVhZCBjb2RlY19yZWdpc3RyYXRpb25fdGhyZWFkXzsKLSAgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PEV2ZW50V3JhcHBlcj4gdGVzdF9jb21wbGV0ZV87CisgIHJ0Yzo6RXZlbnQgdGVzdF9jb21wbGV0
ZV87CiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfc2VjdF87CiAgIGJvb2wgY29kZWNfcmVn
aXN0ZXJlZF8gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CiAgIGludCByZWNlaXZlX3BhY2tl
dF9jb3VudF8gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CkBAIC04ODAsNyArODc4LDcgQEAg
Y2xhc3MgQWNtUmVSZWdpc3RlcklzYWNNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdN
b2R1bGVUZXN0T2xkQXBpIHsKICNlbmRpZgogI2lmIGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUMp
IHx8IGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUNGWCkKIFRFU1RfRihBY21SZVJlZ2lzdGVySXNh
Y010VGVzdE9sZEFwaSwgTUFZQkVfRG9UZXN0KSB7Ci0gIEVYUEVDVF9FUShrRXZlbnRTaWduYWxl
ZCwgUnVuVGVzdCgpKTsKKyAgRVhQRUNUX1RSVUUoUnVuVGVzdCgpKTsKIH0KICNlbmRpZgogCkBA
IC0xMTg1LDE0ICsxMTgzLDE0IEBAIGNsYXNzIEFjbVNlbmRlckJpdEV4YWN0bmVzc09sZEFwaSA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QsCiAKICAgICAvLyBFeHRyYWN0IGFuZCB2ZXJpZnkgdGhl
IGF1ZGlvIGNoZWNrc3VtLgogICAgIHN0ZDo6c3RyaW5nIGNoZWNrc3VtX3N0cmluZyA9IGF1ZGlv
X2NoZWNrc3VtLkZpbmlzaCgpOwotICAgIEVYUEVDVF9FUShhdWRpb19jaGVja3N1bV9yZWYsIGNo
ZWNrc3VtX3N0cmluZyk7CisgICAgRXhwZWN0Q2hlY2tzdW1FcShhdWRpb19jaGVja3N1bV9yZWYs
IGNoZWNrc3VtX3N0cmluZyk7CiAKICAgICAvLyBFeHRyYWN0IGFuZCB2ZXJpZnkgdGhlIHBheWxv
YWQgY2hlY2tzdW0uCiAgICAgcnRjOjpCdWZmZXIgY2hlY2tzdW1fcmVzdWx0KHBheWxvYWRfY2hl
Y2tzdW1fLT5TaXplKCkpOwogICAgIHBheWxvYWRfY2hlY2tzdW1fLT5GaW5pc2goY2hlY2tzdW1f
cmVzdWx0LmRhdGEoKSwgY2hlY2tzdW1fcmVzdWx0LnNpemUoKSk7CiAgICAgY2hlY2tzdW1fc3Ry
aW5nID0KICAgICAgICAgcnRjOjpoZXhfZW5jb2RlKGNoZWNrc3VtX3Jlc3VsdC5kYXRhPGNoYXI+
KCksIGNoZWNrc3VtX3Jlc3VsdC5zaXplKCkpOwotICAgIEVYUEVDVF9FUShwYXlsb2FkX2NoZWNr
c3VtX3JlZiwgY2hlY2tzdW1fc3RyaW5nKTsKKyAgICBFeHBlY3RDaGVja3N1bUVxKHBheWxvYWRf
Y2hlY2tzdW1fcmVmLCBjaGVja3N1bV9zdHJpbmcpOwogCiAgICAgLy8gVmVyaWZ5IG51bWJlciBv
ZiBwYWNrZXRzIHByb2R1Y2VkLgogICAgIEVYUEVDVF9FUShleHBlY3RlZF9wYWNrZXRzLCBwYWNr
ZXRfY291bnRfKTsKQEAgLTEyMDEsNiArMTE5OSwxOCBAQCBjbGFzcyBBY21TZW5kZXJCaXRFeGFj
dG5lc3NPbGRBcGkgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0LAogICAgIHJlbW92ZShvdXRwdXRf
ZmlsZV9uYW1lLmNfc3RyKCkpOwogICB9CiAKKyAgLy8gSGVscGVyOiByZXN1bHQgbXVzdCBiZSBv
bmUgdGhlICJ8Ii1zZXBhcmF0ZWQgY2hlY2tzdW1zLgorICB2b2lkIEV4cGVjdENoZWNrc3VtRXEo
c3RkOjpzdHJpbmcgcmVmLCBzdGQ6OnN0cmluZyByZXN1bHQpIHsKKyAgICBpZiAocmVmLnNpemUo
KSA9PSByZXN1bHQuc2l6ZSgpKSB7CisgICAgICAvLyBPbmx5IG9uZSBjaGVja3N1bTogY2xlYXJl
ciBtZXNzYWdlLgorICAgICAgRVhQRUNUX0VRKHJlZiwgcmVzdWx0KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgRVhQRUNUX05FKHJlZi5maW5kKHJlc3VsdCksIHN0ZDo6c3RyaW5nOjpucG9zKQorICAg
ICAgICAgIDw8IHJlc3VsdCA8PCAiIG11c3QgYmUgb25lIG9mIHRoZXNlOlxuIgorICAgICAgICAg
IDw8IHJlZjsKKyAgICB9CisgIH0KKwogICAvLyBJbmhlcml0ZWQgZnJvbSB0ZXN0OjpQYWNrZXRT
b3VyY2UuCiAgIHN0ZDo6dW5pcXVlX3B0cjx0ZXN0OjpQYWNrZXQ+IE5leHRQYWNrZXQoKSBvdmVy
cmlkZSB7CiAgICAgYXV0byBwYWNrZXQgPSBzZW5kX3Rlc3RfLT5OZXh0UGFja2V0KCk7CkBAIC0x
NDM4LDIxICsxNDQ4LDM1IEBAIFRFU1RfRihBY21TZW5kZXJCaXRFeGFjdG5lc3NPbGRBcGksIE1B
WUJFX0c3MjJfc3RlcmVvXzIwbXMpIHsKICAgICAgIDUwLCB0ZXN0OjpBY21SZWNlaXZlVGVzdE9s
ZEFwaTo6a1N0ZXJlb091dHB1dCk7CiB9CiAKK25hbWVzcGFjZSB7CisvLyBDaGVja3N1bSBkZXBl
bmRzIG9uIGxpYm9wdXMgYmVpbmcgY29tcGlsZWQgd2l0aCBvciB3aXRob3V0IFNTRS4KK2NvbnN0
IHN0ZDo6c3RyaW5nIGF1ZGlvX21heWJlX3NzZSA9CisgICAgIjNlMjg1Yjc0NTEwZTYyMDYyZmJk
ODE0MmRhY2QxNmU5fCIKKyAgICAiZmQ1ZDU3ZDZkNzY2OTA4ZTZhNzIxMWUyYTVjN2Y3OGEiOwor
Y29uc3Qgc3RkOjpzdHJpbmcgcGF5bG9hZF9tYXliZV9zc2UgPQorICAgICI3OGNmOGYwMzE1NzM1
OGFjZGM2OWY2ODM1Y2FhMGQ5YnwiCisgICAgImI2OTNiZDk1YzJlZTIzNTRmOTIzNDBkZDA5ZTlk
YTY4IjsKKy8vIENvbW1vbiBjaGVja3N1bXMuCitjb25zdCBzdGQ6OnN0cmluZyBhdWRpb19jaGVj
a3N1bSA9CisgICAgQWNtUmVjZWl2ZXJCaXRFeGFjdG5lc3NPbGRBcGk6OlBsYXRmb3JtQ2hlY2tz
dW0oCisgICAgICAgIGF1ZGlvX21heWJlX3NzZSwKKyAgICAgICAgYXVkaW9fbWF5YmVfc3NlLAor
ICAgICAgICAiNDM5ZTk3YWQxOTMyYzQ5OTIzYjVkYTAyOWMxN2RkNWUiLAorICAgICAgICAiMDM4
ZWM5MGY1ZjNmYzIzMjBmMzA5MGY4ZWNlZjZiYjciLAorICAgICAgICAiMDM4ZWM5MGY1ZjNmYzIz
MjBmMzA5MGY4ZWNlZjZiYjciKTsKK2NvbnN0IHN0ZDo6c3RyaW5nIHBheWxvYWRfY2hlY2tzdW0g
PQorICAgIEFjbVJlY2VpdmVyQml0RXhhY3RuZXNzT2xkQXBpOjpQbGF0Zm9ybUNoZWNrc3VtKAor
ICAgICAgICBwYXlsb2FkX21heWJlX3NzZSwKKyAgICAgICAgcGF5bG9hZF9tYXliZV9zc2UsCisg
ICAgICAgICJhYjg4YjFhMDQ5YzM2YmRmZWI3ZThiMDU3ZWY2OTgyYSIsCisgICAgICAgICIyN2Zl
ZjdiNzk5MzkzMzQ3ZWMzYjU2OTQzNjlhMWMzNiIsCisgICAgICAgICIyN2ZlZjdiNzk5MzkzMzQ3
ZWMzYjU2OTQzNjlhMWMzNiIpOworfTsgIC8vIG5hbWVzcGFjZQorCiBURVNUX0YoQWNtU2VuZGVy
Qml0RXhhY3RuZXNzT2xkQXBpLCBPcHVzX3N0ZXJlb18yMG1zKSB7CiAgIEFTU0VSVF9OT19GQVRB
TF9GQUlMVVJFKFNldFVwVGVzdCgib3B1cyIsIDQ4MDAwLCAyLCAxMjAsIDk2MCwgOTYwKSk7Ci0g
IFJ1bihBY21SZWNlaXZlckJpdEV4YWN0bmVzc09sZEFwaTo6UGxhdGZvcm1DaGVja3N1bSgKLSAg
ICAgICAgICAiM2UyODViNzQ1MTBlNjIwNjJmYmQ4MTQyZGFjZDE2ZTkiLAotICAgICAgICAgICIz
ZTI4NWI3NDUxMGU2MjA2MmZiZDgxNDJkYWNkMTZlOSIsCi0gICAgICAgICAgIjQzOWU5N2FkMTkz
MmM0OTkyM2I1ZGEwMjljMTdkZDVlIiwKLSAgICAgICAgICAiMDM4ZWM5MGY1ZjNmYzIzMjBmMzA5
MGY4ZWNlZjZiYjciLAotICAgICAgICAgICIwMzhlYzkwZjVmM2ZjMjMyMGYzMDkwZjhlY2VmNmJi
NyIpLAotICAgICAgQWNtUmVjZWl2ZXJCaXRFeGFjdG5lc3NPbGRBcGk6OlBsYXRmb3JtQ2hlY2tz
dW0oCi0gICAgICAgICAgIjc4Y2Y4ZjAzMTU3MzU4YWNkYzY5ZjY4MzVjYWEwZDliIiwKLSAgICAg
ICAgICAiNzhjZjhmMDMxNTczNThhY2RjNjlmNjgzNWNhYTBkOWIiLAotICAgICAgICAgICJhYjg4
YjFhMDQ5YzM2YmRmZWI3ZThiMDU3ZWY2OTgyYSIsCi0gICAgICAgICAgIjI3ZmVmN2I3OTkzOTMz
NDdlYzNiNTY5NDM2OWExYzM2IiwKLSAgICAgICAgICAiMjdmZWY3Yjc5OTM5MzM0N2VjM2I1Njk0
MzY5YTFjMzYiKSwKLSAgICAgIDUwLCB0ZXN0OjpBY21SZWNlaXZlVGVzdE9sZEFwaTo6a1N0ZXJl
b091dHB1dCk7CisgIFJ1bihhdWRpb19jaGVja3N1bSwgcGF5bG9hZF9jaGVja3N1bSwgNTAsCisg
ICAgICB0ZXN0OjpBY21SZWNlaXZlVGVzdE9sZEFwaTo6a1N0ZXJlb091dHB1dCk7CiB9CiAKIFRF
U1RfRihBY21TZW5kZXJCaXRFeGFjdG5lc3NOZXdBcGksIE1BWUJFX09wdXNGcm9tRm9ybWF0X3N0
ZXJlb18yMG1zKSB7CkBAIC0xNDYwLDE5ICsxNDg0LDggQEAgVEVTVF9GKEFjbVNlbmRlckJpdEV4
YWN0bmVzc05ld0FwaSwgTUFZQkVfT3B1c0Zyb21Gb3JtYXRfc3RlcmVvXzIwbXMpIHsKICAgICAg
IFNkcEF1ZGlvRm9ybWF0KCJvcHVzIiwgNDgwMDAsIDIsIHt7InN0ZXJlbyIsICIxIn19KSk7CiAg
IEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKFNldFVwVGVzdEV4dGVybmFsRW5jb2RlcigKICAgICAg
IEF1ZGlvRW5jb2Rlck9wdXM6Ok1ha2VBdWRpb0VuY29kZXIoKmNvbmZpZywgMTIwKSwgMTIwKSk7
Ci0gIFJ1bihBY21SZWNlaXZlckJpdEV4YWN0bmVzc09sZEFwaTo6UGxhdGZvcm1DaGVja3N1bSgK
LSAgICAgICAgICAiM2UyODViNzQ1MTBlNjIwNjJmYmQ4MTQyZGFjZDE2ZTkiLAotICAgICAgICAg
ICIzZTI4NWI3NDUxMGU2MjA2MmZiZDgxNDJkYWNkMTZlOSIsCi0gICAgICAgICAgIjQzOWU5N2Fk
MTkzMmM0OTkyM2I1ZGEwMjljMTdkZDVlIiwKLSAgICAgICAgICAiMDM4ZWM5MGY1ZjNmYzIzMjBm
MzA5MGY4ZWNlZjZiYjciLAotICAgICAgICAgICIwMzhlYzkwZjVmM2ZjMjMyMGYzMDkwZjhlY2Vm
NmJiNyIpLAotICAgICAgQWNtUmVjZWl2ZXJCaXRFeGFjdG5lc3NPbGRBcGk6OlBsYXRmb3JtQ2hl
Y2tzdW0oCi0gICAgICAgICAgIjc4Y2Y4ZjAzMTU3MzU4YWNkYzY5ZjY4MzVjYWEwZDliIiwKLSAg
ICAgICAgICAiNzhjZjhmMDMxNTczNThhY2RjNjlmNjgzNWNhYTBkOWIiLAotICAgICAgICAgICJh
Yjg4YjFhMDQ5YzM2YmRmZWI3ZThiMDU3ZWY2OTgyYSIsCi0gICAgICAgICAgIjI3ZmVmN2I3OTkz
OTMzNDdlYzNiNTY5NDM2OWExYzM2IiwKLSAgICAgICAgICAiMjdmZWY3Yjc5OTM5MzM0N2VjM2I1
Njk0MzY5YTFjMzYiKSwKLSAgICAgIDUwLCB0ZXN0OjpBY21SZWNlaXZlVGVzdE9sZEFwaTo6a1N0
ZXJlb091dHB1dCk7CisgIFJ1bihhdWRpb19jaGVja3N1bSwgcGF5bG9hZF9jaGVja3N1bSwgNTAs
CisgICAgICB0ZXN0OjpBY21SZWNlaXZlVGVzdE9sZEFwaTo6a1N0ZXJlb091dHB1dCk7CiB9CiAK
IFRFU1RfRihBY21TZW5kZXJCaXRFeGFjdG5lc3NOZXdBcGksIE9wdXNGcm9tRm9ybWF0X3N0ZXJl
b18yMG1zX3ZvaXApIHsKQEAgLTE0ODIsMTUgKzE0OTUsMTkgQEAgVEVTVF9GKEFjbVNlbmRlckJp
dEV4YWN0bmVzc05ld0FwaSwgT3B1c0Zyb21Gb3JtYXRfc3RlcmVvXzIwbXNfdm9pcCkgewogICBj
b25maWctPmFwcGxpY2F0aW9uID0gQXVkaW9FbmNvZGVyT3B1c0NvbmZpZzo6QXBwbGljYXRpb25N
b2RlOjprVm9pcDsKICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoU2V0VXBUZXN0RXh0ZXJuYWxF
bmNvZGVyKAogICAgICAgQXVkaW9FbmNvZGVyT3B1czo6TWFrZUF1ZGlvRW5jb2RlcigqY29uZmln
LCAxMjApLCAxMjApKTsKKyAgLy8gQ2hlY2tzdW0gZGVwZW5kcyBvbiBsaWJvcHVzIGJlaW5nIGNv
bXBpbGVkIHdpdGggb3Igd2l0aG91dCBTU0UuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGF1ZGlvX21h
eWJlX3NzZSA9CisgICAgICAiYjAzMjVkZjRlODEwNGYwNGUwM2FmMjNjMGI3NTgwMGV8IgorICAg
ICAgIjNjZDRlMWJjMmFjZDk0NDBiYjllOTdhZjM0MDgwZmZjIjsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgcGF5bG9hZF9tYXliZV9zc2UgPQorICAgICAgIjRlYWIyMjU5YjZmZTI0YzIyZGQyNDJhMTEz
ZTBiM2Q5fCIKKyAgICAgICI0ZmMwYWYwYWEwNmMyNjQ1NGFmMDk4MzJkM2VjMWI0ZSI7CiAgIFJ1
bihBY21SZWNlaXZlckJpdEV4YWN0bmVzc09sZEFwaTo6UGxhdGZvcm1DaGVja3N1bSgKLSAgICAg
ICAgICAiYjAzMjVkZjRlODEwNGYwNGUwM2FmMjNjMGI3NTgwMGUiLAotICAgICAgICAgICJiMDMy
NWRmNGU4MTA0ZjA0ZTAzYWYyM2MwYjc1ODAwZSIsCi0gICAgICAgICAgIjFjODExMjFmNWQ5Mjg2
YTVhODY1ZDAxZGJhYjIyY2U4IiwKKyAgICAgICAgICBhdWRpb19tYXliZV9zc2UsIGF1ZGlvX21h
eWJlX3NzZSwgIjFjODExMjFmNWQ5Mjg2YTVhODY1ZDAxZGJhYjIyY2U4IiwKICAgICAgICAgICAi
MTFkNTQ3Zjg5MTQyZTllZjAzZjM3ZDdjYTdmMzIzNzkiLAogICAgICAgICAgICIxMWQ1NDdmODkx
NDJlOWVmMDNmMzdkN2NhN2YzMjM3OSIpLAogICAgICAgQWNtUmVjZWl2ZXJCaXRFeGFjdG5lc3NP
bGRBcGk6OlBsYXRmb3JtQ2hlY2tzdW0oCi0gICAgICAgICAgIjRlYWIyMjU5YjZmZTI0YzIyZGQy
NDJhMTEzZTBiM2Q5IiwKLSAgICAgICAgICAiNGVhYjIyNTliNmZlMjRjMjJkZDI0MmExMTNlMGIz
ZDkiLAorICAgICAgICAgIHBheWxvYWRfbWF5YmVfc3NlLCBwYXlsb2FkX21heWJlX3NzZSwKICAg
ICAgICAgICAiODM5ZWE2MDM5OTQ0NzI2OGVlMGYwMjYyYTUwYjc1ZmQiLAogICAgICAgICAgICIx
ODE1ZmQ1NTg5Y2FkMGM2ZjZjZjk0NmM3NmI4MWFlYiIsCiAgICAgICAgICAgIjE4MTVmZDU1ODlj
YWQwYzZmNmNmOTQ2Yzc2YjgxYWViIiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NhbGxfc3Rh
dGlzdGljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jYWxsX3N0YXRpc3RpY3MuaAppbmRleCA5ZGNlZDY0NzVh
ODBjNzczZjRjMTQyOTBiZjdmNzcwNjc0YWUwMzdhLi41ZDk0YWM0NTM4OTFkYjhkMzUxYjc1NTY5
MTQ1OTk2ZDRmZWZlYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NhbGxfc3RhdGlzdGljcy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2FjbTIvY2FsbF9zdGF0aXN0aWNzLmgKQEAgLTEyLDcgKzEyLDcgQEAKICNk
ZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfQUNNMl9DQUxMX1NUQVRJU1RJQ1NfSF8KIAogI2lu
Y2x1ZGUgImFwaS9hdWRpby9hdWRpb19mcmFtZS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzLmgiCiAKIC8vCiAvLyBUaGlz
IGNsYXNzIGlzIGZvciBib29rIGtlZXBpbmcgb2YgY2FsbHMgdG8gQUNNLiBJdCBpcyBub3QgdXNl
ZnVsIHRvIGxvZyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvY29kZWNfbWFuYWdlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2FjbTIvY29kZWNfbWFuYWdlci5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjI5ZTBmMWExZTI3YjkwY2M5MDU0ZDgzNzdlYjJmODViNGRjZDUwNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVjX21hbmFn
ZXIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
KGMpIDIwMTUgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
ICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVjX21hbmFnZXIu
aCIKLQotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotLy8jaW5jbHVkZSAicnRjX2Jhc2Uv
Zm9ybWF0X21hY3Jvcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVu
dF9hX2NvZGVjLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotCi1uYW1lc3BhY2Ug
d2VicnRjIHsKLW5hbWVzcGFjZSBhY20yIHsKLQotbmFtZXNwYWNlIHsKLQotLy8gQ2hlY2sgaWYg
dGhlIGdpdmVuIGNvZGVjIGlzIGEgdmFsaWQgdG8gYmUgcmVnaXN0ZXJlZCBhcyBzZW5kIGNvZGVj
LgotaW50IElzVmFsaWRTZW5kQ29kZWMoY29uc3QgQ29kZWNJbnN0JiBzZW5kX2NvZGVjKSB7Ci0g
IGlmICgoc2VuZF9jb2RlYy5jaGFubmVscyAhPSAxKSAmJiAoc2VuZF9jb2RlYy5jaGFubmVscyAh
PSAyKSkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJXcm9uZyBudW1iZXIgb2YgY2hhbm5l
bHMgKCIgPDwgc2VuZF9jb2RlYy5jaGFubmVscwotICAgICAgICAgICAgICAgICAgICAgIDw8ICIp
LCBvbmx5IG1vbm8gYW5kIHN0ZXJlbyBhcmUgc3VwcG9ydGVkKSI7Ci0gICAgcmV0dXJuIC0xOwot
ICB9Ci0KLSAgYXV0byBtYXliZV9jb2RlY19pZCA9IFJlbnRBQ29kZWM6OkNvZGVjSWRCeUluc3Qo
c2VuZF9jb2RlYyk7Ci0gIGlmICghbWF5YmVfY29kZWNfaWQpIHsKLSAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiSW52YWxpZCBjb2RlYyBzZXR0aW5nIGZvciB0aGUgc2VuZCBjb2RlYy4iOwotICAg
IHJldHVybiAtMTsKLSAgfQotCi0gIC8vIFRlbGVwaG9uZS1ldmVudCBjYW5ub3QgYmUgYSBzZW5k
IGNvZGVjLgotICBpZiAoIVNUUl9DQVNFX0NNUChzZW5kX2NvZGVjLnBsbmFtZSwgInRlbGVwaG9u
ZS1ldmVudCIpKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgInRlbGVwaG9uZS1ldmVudCBj
YW5ub3QgYmUgYSBzZW5kIGNvZGVjIjsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLQotICBpZiAoIVJl
bnRBQ29kZWM6OklzU3VwcG9ydGVkTnVtQ2hhbm5lbHMoKm1heWJlX2NvZGVjX2lkLCBzZW5kX2Nv
ZGVjLmNoYW5uZWxzKQotICAgICAgICAgICAudmFsdWVfb3IoZmFsc2UpKSB7Ci0gICAgUlRDX0xP
RyhMU19FUlJPUikgPDwgc2VuZF9jb2RlYy5jaGFubmVscwotICAgICAgICAgICAgICAgICAgICAg
IDw8ICIgbnVtYmVyIG9mIGNoYW5uZWxzIG5vdCBzdXBwb3J0ZWQgZm9yICIKLSAgICAgICAgICAg
ICAgICAgICAgICA8PCBzZW5kX2NvZGVjLnBsbmFtZSA8PCAiLiI7Ci0gICAgcmV0dXJuIC0xOwot
ICB9Ci0gIHJldHVybiBSZW50QUNvZGVjOjpDb2RlY0luZGV4RnJvbUlkKCptYXliZV9jb2RlY19p
ZCkudmFsdWVfb3IoLTEpOwotfQotCi1ib29sIElzT3B1cyhjb25zdCBDb2RlY0luc3QmIGNvZGVj
KSB7Ci0gIHJldHVybgotI2lmZGVmIFdFQlJUQ19DT0RFQ19PUFVTCi0gICAgICAhU1RSX0NBU0Vf
Q01QKGNvZGVjLnBsbmFtZSwgIm9wdXMiKSB8fAotI2VuZGlmCi0gICAgICBmYWxzZTsKLX0KLQot
fSAgLy8gbmFtZXNwYWNlCi0KLUNvZGVjTWFuYWdlcjo6Q29kZWNNYW5hZ2VyKCkgewotICB0aHJl
YWRfY2hlY2tlcl8uRGV0YWNoRnJvbVRocmVhZCgpOwotfQotCi1Db2RlY01hbmFnZXI6On5Db2Rl
Y01hbmFnZXIoKSA9IGRlZmF1bHQ7Ci0KLWJvb2wgQ29kZWNNYW5hZ2VyOjpSZWdpc3RlckVuY29k
ZXIoY29uc3QgQ29kZWNJbnN0JiBzZW5kX2NvZGVjKSB7Ci0gIFJUQ19EQ0hFQ0sodGhyZWFkX2No
ZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGludCBjb2RlY19pZCA9IElzVmFsaWRT
ZW5kQ29kZWMoc2VuZF9jb2RlYyk7Ci0KLSAgLy8gQ2hlY2sgZm9yIHJlcG9ydGVkIGVycm9ycyBm
cm9tIGZ1bmN0aW9uIElzVmFsaWRTZW5kQ29kZWMoKS4KLSAgaWYgKGNvZGVjX2lkIDwgMCkgewot
ICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHN3aXRjaCAoUmVudEFDb2RlYzo6UmVnaXN0ZXJS
ZWRQYXlsb2FkVHlwZSgKLSAgICAgICZjb2RlY19zdGFja19wYXJhbXNfLnJlZF9wYXlsb2FkX3R5
cGVzLCBzZW5kX2NvZGVjKSkgewotICAgIGNhc2UgUmVudEFDb2RlYzo6UmVnaXN0cmF0aW9uUmVz
dWx0OjprT2s6Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFJlbnRBQ29kZWM6OlJlZ2lz
dHJhdGlvblJlc3VsdDo6a0JhZEZyZXE6Ci0gICAgICBSVENfTE9HKExTX0VSUk9SKQotICAgICAg
ICAgIDw8ICJSZWdpc3RlclNlbmRDb2RlYygpIGZhaWxlZCwgaW52YWxpZCBmcmVxdWVuY3kgZm9y
IFJFRCIKLSAgICAgICAgICAgICAiIHJlZ2lzdHJhdGlvbiI7Ci0gICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgY2FzZSBSZW50QUNvZGVjOjpSZWdpc3RyYXRpb25SZXN1bHQ6OmtTa2lwOgotICAgICAg
YnJlYWs7Ci0gIH0KLSAgc3dpdGNoIChSZW50QUNvZGVjOjpSZWdpc3RlckNuZ1BheWxvYWRUeXBl
KAotICAgICAgJmNvZGVjX3N0YWNrX3BhcmFtc18uY25nX3BheWxvYWRfdHlwZXMsIHNlbmRfY29k
ZWMpKSB7Ci0gICAgY2FzZSBSZW50QUNvZGVjOjpSZWdpc3RyYXRpb25SZXN1bHQ6OmtPazoKLSAg
ICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgUmVudEFDb2RlYzo6UmVnaXN0cmF0aW9uUmVzdWx0
OjprQmFkRnJlcToKLSAgICAgIFJUQ19MT0coTFNfRVJST1IpCi0gICAgICAgICAgPDwgIlJlZ2lz
dGVyU2VuZENvZGVjKCkgZmFpbGVkLCBpbnZhbGlkIGZyZXF1ZW5jeSBmb3IgQ05HIgotICAgICAg
ICAgICAgICIgcmVnaXN0cmF0aW9uIjsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIFJl
bnRBQ29kZWM6OlJlZ2lzdHJhdGlvblJlc3VsdDo6a1NraXA6Ci0gICAgICBicmVhazsKLSAgfQot
Ci0gIGlmIChJc09wdXMoc2VuZF9jb2RlYykpIHsKLSAgICAvLyBWQUQvRFRYIG5vdCBzdXBwb3J0
ZWQuCi0gICAgY29kZWNfc3RhY2tfcGFyYW1zXy51c2VfY25nID0gZmFsc2U7Ci0gIH0KLQotICBz
ZW5kX2NvZGVjX2luc3RfID0gc2VuZF9jb2RlYzsKLSAgcmVjcmVhdGVfZW5jb2Rlcl8gPSB0cnVl
OyAgLy8gQ2FsbGVyIG11c3QgcmVjcmVhdGUgaXQuCi0gIHJldHVybiB0cnVlOwotfQotCi1Db2Rl
Y0luc3QgQ29kZWNNYW5hZ2VyOjpGb3JnZUNvZGVjSW5zdCgKLSAgICBjb25zdCBBdWRpb0VuY29k
ZXIqIGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyKSB7Ci0gIENvZGVjSW5zdCBjaTsKLSAgY2kuY2hh
bm5lbHMgPSBleHRlcm5hbF9zcGVlY2hfZW5jb2Rlci0+TnVtQ2hhbm5lbHMoKTsKLSAgY2kucGxm
cmVxID0gZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXItPlNhbXBsZVJhdGVIeigpOwotICBjaS5wYWNz
aXplID0gcnRjOjpDaGVja2VkRGl2RXhhY3QoCi0gICAgICBzdGF0aWNfY2FzdDxpbnQ+KGV4dGVy
bmFsX3NwZWVjaF9lbmNvZGVyLT5NYXgxME1zRnJhbWVzSW5BUGFja2V0KCkgKgotICAgICAgICAg
ICAgICAgICAgICAgICBjaS5wbGZyZXEpLAotICAgICAgMTAwKTsKLSAgY2kucGx0eXBlID0gLTE7
ICAvLyBOb3QgdmFsaWQuCi0gIGNpLnJhdGUgPSAtMTsgICAgLy8gTm90IHZhbGlkLgotICBzdGF0
aWMgY29uc3QgY2hhciBrTmFtZVtdID0gImV4dGVybmFsIjsKLSAgbWVtY3B5KGNpLnBsbmFtZSwg
a05hbWUsIHNpemVvZihrTmFtZSkpOwotICByZXR1cm4gY2k7Ci19Ci0KLWJvb2wgQ29kZWNNYW5h
Z2VyOjpTZXRDb3B5UmVkKGJvb2wgZW5hYmxlKSB7Ci0gIGlmIChlbmFibGUgJiYgY29kZWNfc3Rh
Y2tfcGFyYW1zXy51c2VfY29kZWNfZmVjKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
Q29kZWMgaW50ZXJuYWwgRkVDIGFuZCBSRUQgY2Fubm90IGJlIGNvLWVuYWJsZWQuIjsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0gIH0KLSAgaWYgKGVuYWJsZSAmJiBzZW5kX2NvZGVjX2luc3RfICYmCi0g
ICAgICBjb2RlY19zdGFja19wYXJhbXNfLnJlZF9wYXlsb2FkX3R5cGVzLmNvdW50KHNlbmRfY29k
ZWNfaW5zdF8tPnBsZnJlcSkgPAotICAgICAgICAgIDEpIHsKLSAgICBSVENfTE9HKExTX1dBUk5J
TkcpIDw8ICJDYW5ub3QgZW5hYmxlIFJFRCBhdCAiIDw8IHNlbmRfY29kZWNfaW5zdF8tPnBsZnJl
cQotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBIei4iOwotICAgIHJldHVybiBmYWxzZTsK
LSAgfQotICBjb2RlY19zdGFja19wYXJhbXNfLnVzZV9yZWQgPSBlbmFibGU7Ci0gIHJldHVybiB0
cnVlOwotfQotCi1ib29sIENvZGVjTWFuYWdlcjo6U2V0VkFEKGJvb2wgZW5hYmxlLCBBQ01WQURN
b2RlIG1vZGUpIHsKLSAgLy8gU2FuaXR5IGNoZWNrIG9mIHRoZSBtb2RlLgotICBSVENfRENIRUNL
KG1vZGUgPT0gVkFETm9ybWFsIHx8IG1vZGUgPT0gVkFETG93Qml0cmF0ZSB8fCBtb2RlID09IFZB
REFnZ3IgfHwKLSAgICAgICAgICAgICBtb2RlID09IFZBRFZlcnlBZ2dyKTsKLQotICAvLyBDaGVj
ayB0aGF0IHRoZSBzZW5kIGNvZGVjIGlzIG1vbm8uIFdlIGRvbid0IHN1cHBvcnQgVkFEL0RUWCBm
b3Igc3RlcmVvCi0gIC8vIHNlbmRpbmcuCi0gIGNvbnN0IGJvb2wgc3RlcmVvX3NlbmQgPQotICAg
ICAgY29kZWNfc3RhY2tfcGFyYW1zXy5zcGVlY2hfZW5jb2RlcgotICAgICAgICAgID8gKGNvZGVj
X3N0YWNrX3BhcmFtc18uc3BlZWNoX2VuY29kZXItPk51bUNoYW5uZWxzKCkgIT0gMSkKLSAgICAg
ICAgICA6IGZhbHNlOwotICBpZiAoZW5hYmxlICYmIHN0ZXJlb19zZW5kKSB7Ci0gICAgUlRDX0xP
RyhMU19FUlJPUikgPDwgIlZBRC9EVFggbm90IHN1cHBvcnRlZCBmb3Igc3RlcmVvIHNlbmRpbmci
OwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8vIFRPRE8oa3dpYmVyZyk6IFRoaXMgZG9l
c24ndCBwcm90ZWN0IE9wdXMgd2hlbiBpbmplY3RlZCBhcyBhbiBleHRlcm5hbAotICAvLyBlbmNv
ZGVyLgotICBpZiAoc2VuZF9jb2RlY19pbnN0XyAmJiBJc09wdXMoKnNlbmRfY29kZWNfaW5zdF8p
KSB7Ci0gICAgLy8gVkFEL0RUWCBub3Qgc3VwcG9ydGVkLCBidXQgZG9uJ3QgZmFpbC4KLSAgICBl
bmFibGUgPSBmYWxzZTsKLSAgfQotCi0gIGNvZGVjX3N0YWNrX3BhcmFtc18udXNlX2NuZyA9IGVu
YWJsZTsKLSAgY29kZWNfc3RhY2tfcGFyYW1zXy52YWRfbW9kZSA9IG1vZGU7Ci0gIHJldHVybiB0
cnVlOwotfQotCi1ib29sIENvZGVjTWFuYWdlcjo6U2V0Q29kZWNGRUMoYm9vbCBlbmFibGVfY29k
ZWNfZmVjKSB7Ci0gIGlmIChlbmFibGVfY29kZWNfZmVjICYmIGNvZGVjX3N0YWNrX3BhcmFtc18u
dXNlX3JlZCkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNvZGVjIGludGVybmFsIEZF
QyBhbmQgUkVEIGNhbm5vdCBiZSBjby1lbmFibGVkLiI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9
Ci0KLSAgY29kZWNfc3RhY2tfcGFyYW1zXy51c2VfY29kZWNfZmVjID0gZW5hYmxlX2NvZGVjX2Zl
YzsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQ29kZWNNYW5hZ2VyOjpNYWtlRW5jb2RlcihS
ZW50QUNvZGVjKiByYWMsIEF1ZGlvQ29kaW5nTW9kdWxlKiBhY20pIHsKLSAgUlRDX0RDSEVDSyhy
YWMpOwotICBSVENfRENIRUNLKGFjbSk7Ci0KLSAgaWYgKCFyZWNyZWF0ZV9lbmNvZGVyXykgewot
ICAgIGJvb2wgZXJyb3IgPSBmYWxzZTsKLSAgICAvLyBUcnkgdG8gcmUtdXNlIHRoZSBzcGVlY2gg
ZW5jb2RlciB3ZSd2ZSBnaXZlbiB0byB0aGUgQUNNLgotICAgIGFjbS0+TW9kaWZ5RW5jb2Rlcihb
Jl0oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXIpIHsKLSAgICAgIGlmICgh
KmVuY29kZXIpIHsKLSAgICAgICAgLy8gVGhlcmUgaXMgbm8gZXhpc3RpbmcgZW5jb2Rlci4KLSAg
ICAgICAgcmVjcmVhdGVfZW5jb2Rlcl8gPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgICB9
Ci0KLSAgICAgIC8vIEV4dHJhY3QgdGhlIHNwZWVjaCBlbmNvZGVyIGZyb20gdGhlIEFDTS4KLSAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuYyA9IHN0ZDo6bW92ZSgqZW5jb2Rl
cik7Ci0gICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBhdXRvIHN1Yl9lbmMgPSBlbmMtPlJl
Y2xhaW1Db250YWluZWRFbmNvZGVycygpOwotICAgICAgICBpZiAoc3ViX2VuYy5lbXB0eSgpKSB7
Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgUlRDX0NIRUNLX0VRKDEsIHN1
Yl9lbmMuc2l6ZSgpKTsKLQotICAgICAgICAvLyBSZXBsYWNlIGVuYyB3aXRoIGl0cyBzdWIgZW5j
b2Rlci4gV2UgbmVlZCB0byBwdXQgdGhlIHN1YiBlbmNvZGVyIGluCi0gICAgICAgIC8vIGEgdGVt
cG9yYXJ5IGZpcnN0LCBzaW5jZSBvdGhlcndpc2UgdGhlIG9sZCB2YWx1ZSBvZiBlbmMgd291bGQg
YmUKLSAgICAgICAgLy8gZGVzdHJveWVkIGJlZm9yZSB0aGUgbmV3IHZhbHVlIGdvdCBhc3NpZ25l
ZCwgd2hpY2ggd291bGQgYmUgYmFkCi0gICAgICAgIC8vIHNpbmNlIHRoZSBuZXcgdmFsdWUgaXMg
YSBwYXJ0IG9mIHRoZSBvbGQgdmFsdWUuCi0gICAgICAgIGF1dG8gdG1wX2VuYyA9IHN0ZDo6bW92
ZShzdWJfZW5jWzBdKTsKLSAgICAgICAgZW5jID0gc3RkOjptb3ZlKHRtcF9lbmMpOwotICAgICAg
fQotCi0gICAgICAvLyBXcmFwIGl0IGluIGEgbmV3IGVuY29kZXIgc3RhY2sgYW5kIHB1dCBpdCBi
YWNrLgotICAgICAgY29kZWNfc3RhY2tfcGFyYW1zXy5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92
ZShlbmMpOwotICAgICAgKmVuY29kZXIgPSByYWMtPlJlbnRFbmNvZGVyU3RhY2soJmNvZGVjX3N0
YWNrX3BhcmFtc18pOwotICAgICAgaWYgKCEqZW5jb2RlcikgewotICAgICAgICBlcnJvciA9IHRy
dWU7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIGlmICghcmVjcmVhdGVfZW5jb2Rlcl8pIHsKLSAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgfQotCi0gIGlmICghc2VuZF9jb2RlY19pbnN0XykgewotICAgIC8vIFdl
IGRvbid0IGhhdmUgdGhlIGluZm9ybWF0aW9uIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IHNwZWVj
aCBlbmNvZGVyLgotICAgIC8vIChUaGlzIGlzIG5vdCBhbiBlcnJvci4pCi0gICAgcmV0dXJuIHRy
dWU7Ci0gIH0KLQotICBjb2RlY19zdGFja19wYXJhbXNfLnNwZWVjaF9lbmNvZGVyID0gcmFjLT5S
ZW50RW5jb2Rlcigqc2VuZF9jb2RlY19pbnN0Xyk7Ci0gIGF1dG8gc3RhY2sgPSByYWMtPlJlbnRF
bmNvZGVyU3RhY2soJmNvZGVjX3N0YWNrX3BhcmFtc18pOwotICBpZiAoIXN0YWNrKSB7Ci0gICAg
cmV0dXJuIGZhbHNlOwotICB9Ci0gIGFjbS0+U2V0RW5jb2RlcihzdGQ6Om1vdmUoc3RhY2spKTsK
LSAgcmVjcmVhdGVfZW5jb2Rlcl8gPSBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZSBhY20yCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hY20yL2NvZGVjX21hbmFnZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvY29kZWNfbWFuYWdlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmJhZDk2NzA4ODA1MDhjNzZmMTY4MTU3Njk4NTMw
NzA1NzFlZDhkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2FjbTIvY29kZWNfbWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBA
QAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdf
QUNNMl9DT0RFQ19NQU5BR0VSX0hfCi0jZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FDTTJf
Q09ERUNfTUFOQUdFUl9IXwotCi0jaW5jbHVkZSA8bWFwPgotCi0jaW5jbHVkZSAiYWJzbC90eXBl
cy9vcHRpb25hbC5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxk
L2luY2x1ZGUpCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29k
ZWMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGlu
Z19tb2R1bGUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlv
X2NvZGluZ19tb2R1bGVfdHlwZWRlZnMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rv
cm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKLQotbmFtZXNw
YWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIEF1ZGlvRGVjb2RlcjsKLWNsYXNzIEF1ZGlvRW5jb2RlcjsK
LQotbmFtZXNwYWNlIGFjbTIgewotCi1jbGFzcyBDb2RlY01hbmFnZXIgZmluYWwgewotIHB1Ymxp
YzoKLSAgQ29kZWNNYW5hZ2VyKCk7Ci0gIH5Db2RlY01hbmFnZXIoKTsKLQotICAvLyBQYXJzZXMg
dGhlIGdpdmVuIHNwZWNpZmljYXRpb24uIE9uIHN1Y2Nlc3MsIHJldHVybnMgdHJ1ZSBhbmQgdXBk
YXRlcyB0aGUKLSAgLy8gc3RvcmVkIENvZGVjSW5zdCBhbmQgc3RhY2sgcGFyYW1ldGVyczsgb24g
ZXJyb3IsIHJldHVybnMgZmFsc2UuCi0gIGJvb2wgUmVnaXN0ZXJFbmNvZGVyKGNvbnN0IENvZGVj
SW5zdCYgc2VuZF9jb2RlYyk7Ci0KLSAgc3RhdGljIENvZGVjSW5zdCBGb3JnZUNvZGVjSW5zdChj
b25zdCBBdWRpb0VuY29kZXIqIGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyKTsKLQotICBjb25zdCBD
b2RlY0luc3QqIEdldENvZGVjSW5zdCgpIGNvbnN0IHsKLSAgICByZXR1cm4gc2VuZF9jb2RlY19p
bnN0XyA/ICYqc2VuZF9jb2RlY19pbnN0XyA6IG51bGxwdHI7Ci0gIH0KLQotICB2b2lkIFVuc2V0
Q29kZWNJbnN0KCkgeyBzZW5kX2NvZGVjX2luc3RfID0gYWJzbDo6bnVsbG9wdDsgfQotCi0gIGNv
bnN0IFJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVycyogR2V0U3RhY2tQYXJhbXMoKSBjb25zdCB7
Ci0gICAgcmV0dXJuICZjb2RlY19zdGFja19wYXJhbXNfOwotICB9Ci0gIFJlbnRBQ29kZWM6OlN0
YWNrUGFyYW1ldGVycyogR2V0U3RhY2tQYXJhbXMoKSB7IHJldHVybiAmY29kZWNfc3RhY2tfcGFy
YW1zXzsgfQotCi0gIGJvb2wgU2V0Q29weVJlZChib29sIGVuYWJsZSk7Ci0KLSAgYm9vbCBTZXRW
QUQoYm9vbCBlbmFibGUsIEFDTVZBRE1vZGUgbW9kZSk7Ci0KLSAgYm9vbCBTZXRDb2RlY0ZFQyhi
b29sIGVuYWJsZV9jb2RlY19mZWMpOwotCi0gIC8vIFVzZXMgdGhlIHByb3ZpZGVkIFJlbnQtQS1D
b2RlYyB0byBjcmVhdGUgYSBuZXcgZW5jb2RlciBzdGFjaywgaWYgd2UgaGF2ZSBhCi0gIC8vIGNv
bXBsZXRlIHNwZWNpZmljYXRpb247IGlmIHNvLCBpdCBpcyB0aGVuIHBhc3NlZCB0byBzZXRfZW5j
b2Rlci4gT24gZXJyb3IsCi0gIC8vIHJldHVybnMgZmFsc2UuCi0gIGJvb2wgTWFrZUVuY29kZXIo
UmVudEFDb2RlYyogcmFjLCBBdWRpb0NvZGluZ01vZHVsZSogYWNtKTsKLQotIHByaXZhdGU6Ci0g
IHJ0Yzo6VGhyZWFkQ2hlY2tlciB0aHJlYWRfY2hlY2tlcl87Ci0gIGFic2w6Om9wdGlvbmFsPENv
ZGVjSW5zdD4gc2VuZF9jb2RlY19pbnN0XzsKLSAgUmVudEFDb2RlYzo6U3RhY2tQYXJhbWV0ZXJz
IGNvZGVjX3N0YWNrX3BhcmFtc187Ci0gIGJvb2wgcmVjcmVhdGVfZW5jb2Rlcl8gPSB0cnVlOyAg
Ly8gTmVlZCB0byByZWNyZWF0ZSBlbmNvZGVyPwotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9B
U1NJR04oQ29kZWNNYW5hZ2VyKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBhY20yCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCi0jZW5kaWYgIC8vIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FDTTJfQ09E
RUNfTUFOQUdFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jb2RlY19tYW5hZ2VyX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvYWNtMi9jb2RlY19tYW5hZ2VyX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2YTVlYTVmNTJlMjU1NjI0OGQ2YzA3ZDQyZWMzZmEyYjRhM2Iz
ODc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2FjbTIvY29kZWNfbWFuYWdlcl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDcwICsw
LDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jb2RlY19tYW5hZ2VyLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuaCIKLSNpbmNsdWRlICJ0
ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAidGVzdC9tb2NrX2F1ZGlvX2VuY29kZXIuaCIKLQotbmFt
ZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgYWNtMiB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6UmV0
dXJuOwotCi1uYW1lc3BhY2UgewotCi0vLyBDcmVhdGUgYSBNb2NrQXVkaW9FbmNvZGVyIHdpdGgg
c29tZSByZWFzb25hYmxlIGRlZmF1bHQgYmVoYXZpb3IuCi1zdGQ6OnVuaXF1ZV9wdHI8TW9ja0F1
ZGlvRW5jb2Rlcj4gQ3JlYXRlTW9ja0VuY29kZXIoKSB7Ci0gIGF1dG8gZW5jID0gc3RkOjp1bmlx
dWVfcHRyPE1vY2tBdWRpb0VuY29kZXI+KG5ldyBNb2NrQXVkaW9FbmNvZGVyKTsKLSAgRVhQRUNU
X0NBTEwoKmVuYywgU2FtcGxlUmF0ZUh6KCkpLldpbGxSZXBlYXRlZGx5KFJldHVybig4MDAwKSk7
Ci0gIEVYUEVDVF9DQUxMKCplbmMsIE51bUNoYW5uZWxzKCkpLldpbGxSZXBlYXRlZGx5KFJldHVy
bigxKSk7Ci0gIEVYUEVDVF9DQUxMKCplbmMsIE1heDEwTXNGcmFtZXNJbkFQYWNrZXQoKSkuV2ls
bFJlcGVhdGVkbHkoUmV0dXJuKDEpKTsKLSAgcmV0dXJuIGVuYzsKLX0KLQotfSAgLy8gbmFtZXNw
YWNlCi0KLVRFU1QoQ29kZWNNYW5hZ2VyVGVzdCwgRXh0ZXJuYWxFbmNvZGVyRmVjKSB7Ci0gIGF1
dG8gZW5jMCA9IENyZWF0ZU1vY2tFbmNvZGVyKCk7Ci0gIGF1dG8gZW5jMSA9IENyZWF0ZU1vY2tF
bmNvZGVyKCk7Ci0gIGF1dG8gZW5jMiA9IENyZWF0ZU1vY2tFbmNvZGVyKCk7Ci0gIHsKLSAgICA6
OnRlc3Rpbmc6OkluU2VxdWVuY2UgczsKLSAgICBFWFBFQ1RfQ0FMTCgqZW5jMCwgU2V0RmVjKGZh
bHNlKSkuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqZW5jMSwgU2V0
RmVjKHRydWUpKS5XaWxsT25jZShSZXR1cm4odHJ1ZSkpOwotICAgIEVYUEVDVF9DQUxMKCplbmMy
LCBTZXRGZWModHJ1ZSkpLldpbGxPbmNlKFJldHVybihmYWxzZSkpOwotICB9Ci0KLSAgQ29kZWNN
YW5hZ2VyIGNtOwotICBSZW50QUNvZGVjIHJhYzsKLQotICAvLyB1c2VfY29kZWNfZmVjIHN0YXJ0
cyBvdXQgZmFsc2UuCi0gIEVYUEVDVF9GQUxTRShjbS5HZXRTdGFja1BhcmFtcygpLT51c2VfY29k
ZWNfZmVjKTsKLSAgY20uR2V0U3RhY2tQYXJhbXMoKS0+c3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1v
dmUoZW5jMCk7Ci0gIEVYUEVDVF9UUlVFKHJhYy5SZW50RW5jb2RlclN0YWNrKGNtLkdldFN0YWNr
UGFyYW1zKCkpKTsKLSAgRVhQRUNUX0ZBTFNFKGNtLkdldFN0YWNrUGFyYW1zKCktPnVzZV9jb2Rl
Y19mZWMpOwotCi0gIC8vIFNldCBpdCB0byB0cnVlLgotICBFWFBFQ1RfRVEodHJ1ZSwgY20uU2V0
Q29kZWNGRUModHJ1ZSkpOwotICBFWFBFQ1RfVFJVRShjbS5HZXRTdGFja1BhcmFtcygpLT51c2Vf
Y29kZWNfZmVjKTsKLSAgY20uR2V0U3RhY2tQYXJhbXMoKS0+c3BlZWNoX2VuY29kZXIgPSBzdGQ6
Om1vdmUoZW5jMSk7Ci0gIEVYUEVDVF9UUlVFKHJhYy5SZW50RW5jb2RlclN0YWNrKGNtLkdldFN0
YWNrUGFyYW1zKCkpKTsKLSAgRVhQRUNUX1RSVUUoY20uR2V0U3RhY2tQYXJhbXMoKS0+dXNlX2Nv
ZGVjX2ZlYyk7Ci0KLSAgLy8gU3dpdGNoIHRvIGEgY29kZWMgdGhhdCBkb2Vzbid0IHN1cHBvcnQg
aXQuCi0gIGNtLkdldFN0YWNrUGFyYW1zKCktPnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKGVu
YzIpOwotICBFWFBFQ1RfVFJVRShyYWMuUmVudEVuY29kZXJTdGFjayhjbS5HZXRTdGFja1BhcmFt
cygpKSk7Ci0gIEVYUEVDVF9GQUxTRShjbS5HZXRTdGFja1BhcmFtcygpLT51c2VfY29kZWNfZmVj
KTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGFjbTIKLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2Ff
Y29kZWMuY2MKaW5kZXggNDVkNzhkNzRhNWRkNGU4YTk2ZTg0MzUxMTA3YTNiNDE2MmRjZDlhMi4u
YmZkZGM0MmJjOTExODc2Y2Y1OWI2ZWRhODUwNzgwMWIxZDA2YTBkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYWNtMi9yZW50X2FfY29kZWMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuY2MK
QEAgLTEzLDM0ICsxMyw5IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+
CiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29k
ZXJfY25nLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MTEvYXVk
aW9fZW5jb2Rlcl9wY20uaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmgi
Ci0jaWZkZWYgV0VCUlRDX0NPREVDX0lMQkMKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuaCIgIC8vIG5vZ25jaGVjawotI2VuZGlm
Ci0jaWZkZWYgV0VCUlRDX0NPREVDX0lTQUNGWAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9pc2FjL2ZpeC9pbmNsdWRlL2F1ZGlvX2RlY29kZXJfaXNhY2ZpeC5oIiAgLy8g
bm9nbmNoZWNrCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4
L2luY2x1ZGUvYXVkaW9fZW5jb2Rlcl9pc2FjZml4LmgiICAvLyBub2duY2hlY2sKLSNlbmRpZgot
I2lmZGVmIFdFQlJUQ19DT0RFQ19JU0FDCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2lzYWMvbWFpbi9pbmNsdWRlL2F1ZGlvX2RlY29kZXJfaXNhYy5oIiAgLy8gbm9nbmNo
ZWNrCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi9pbmNs
dWRlL2F1ZGlvX2VuY29kZXJfaXNhYy5oIiAgLy8gbm9nbmNoZWNrCi0jZW5kaWYKLSNpZmRlZiBX
RUJSVENfQ09ERUNfT1BVUwotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9v
cHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5oIgotI2VuZGlmCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19lbmNvZGVyX3BjbTE2Yi5oIgotI2lmZGVmIFdF
QlJUQ19DT0RFQ19SRUQKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcmVk
L2F1ZGlvX2VuY29kZXJfY29weV9yZWQuaCIgIC8vIG5vZ25jaGVjawotI2VuZGlmCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fY29kZWNfZGF0YWJhc2UuaCIKIAotI2lm
IGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUNGWCkgfHwgZGVmaW5lZChXRUJSVENfQ09ERUNfSVNB
QykKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9sb2NrZWRfYmFu
ZHdpZHRoX2luZm8uaCIKLSNlbmRpZgotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBh
Y20yIHsKIApAQCAtNTQsNyArMjksOCBAQCBhYnNsOjpvcHRpb25hbDxSZW50QUNvZGVjOjpDb2Rl
Y0lkPiBSZW50QUNvZGVjOjpDb2RlY0lkQnlQYXJhbXMoCiAKIGFic2w6Om9wdGlvbmFsPENvZGVj
SW5zdD4gUmVudEFDb2RlYzo6Q29kZWNJbnN0QnlJZChDb2RlY0lkIGNvZGVjX2lkKSB7CiAgIGFi
c2w6Om9wdGlvbmFsPGludD4gbWkgPSBDb2RlY0luZGV4RnJvbUlkKGNvZGVjX2lkKTsKLSAgcmV0
dXJuIG1pID8gYWJzbDo6b3B0aW9uYWw8Q29kZWNJbnN0PihEYXRhYmFzZSgpWyptaV0pIDogYWJz
bDo6bnVsbG9wdDsKKyAgcmV0dXJuIG1pID8gYWJzbDo6b3B0aW9uYWw8Q29kZWNJbnN0PihBQ01D
b2RlY0RCOjpkYXRhYmFzZV9bKm1pXSkKKyAgICAgICAgICAgIDogYWJzbDo6bnVsbG9wdDsKIH0K
IAogYWJzbDo6b3B0aW9uYWw8UmVudEFDb2RlYzo6Q29kZWNJZD4gUmVudEFDb2RlYzo6Q29kZWNJ
ZEJ5SW5zdCgKQEAgLTgwLDIwICs1Niw2IEBAIGFic2w6Om9wdGlvbmFsPENvZGVjSW5zdD4gUmVu
dEFDb2RlYzo6Q29kZWNJbnN0QnlQYXJhbXMoCiAgIHJldHVybiBjaTsKIH0KIAotYWJzbDo6b3B0
aW9uYWw8Ym9vbD4gUmVudEFDb2RlYzo6SXNTdXBwb3J0ZWROdW1DaGFubmVscyhDb2RlY0lkIGNv
ZGVjX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbnVtX2NoYW5uZWxzKSB7Ci0gIGF1dG8gaSA9IENvZGVjSW5kZXhGcm9t
SWQoY29kZWNfaWQpOwotICByZXR1cm4gaSA/IGFic2w6Om9wdGlvbmFsPGJvb2w+KAotICAgICAg
ICAgICAgICAgICBBQ01Db2RlY0RCOjpjb2RlY19zZXR0aW5nc19bKmldLmNoYW5uZWxfc3VwcG9y
dCA+PQotICAgICAgICAgICAgICAgICBudW1fY2hhbm5lbHMpCi0gICAgICAgICAgIDogYWJzbDo6
bnVsbG9wdDsKLX0KLQotcnRjOjpBcnJheVZpZXc8Y29uc3QgQ29kZWNJbnN0PiBSZW50QUNvZGVj
OjpEYXRhYmFzZSgpIHsKLSAgcmV0dXJuIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IENvZGVjSW5zdD4o
QUNNQ29kZWNEQjo6ZGF0YWJhc2VfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOdW1iZXJPZkNvZGVjcygpKTsKLX0KLQogYWJzbDo6b3B0aW9uYWw8TmV0RXFEZWNv
ZGVyPiBSZW50QUNvZGVjOjpOZXRFcURlY29kZXJGcm9tQ29kZWNJZCgKICAgICBDb2RlY0lkIGNv
ZGVjX2lkLAogICAgIHNpemVfdCBudW1fY2hhbm5lbHMpIHsKQEAgLTEwNiwyMDAgKzY4LDUgQEAg
YWJzbDo6b3B0aW9uYWw8TmV0RXFEZWNvZGVyPiBSZW50QUNvZGVjOjpOZXRFcURlY29kZXJGcm9t
Q29kZWNJZCgKICAgICAgICAgICAgICA6IG5lZDsKIH0KIAotUmVudEFDb2RlYzo6UmVnaXN0cmF0
aW9uUmVzdWx0IFJlbnRBQ29kZWM6OlJlZ2lzdGVyQ25nUGF5bG9hZFR5cGUoCi0gICAgc3RkOjpt
YXA8aW50LCBpbnQ+KiBwdF9tYXAsCi0gICAgY29uc3QgQ29kZWNJbnN0JiBjb2RlY19pbnN0KSB7
Ci0gIGlmIChTVFJfQ0FTRV9DTVAoY29kZWNfaW5zdC5wbG5hbWUsICJDTiIpICE9IDApCi0gICAg
cmV0dXJuIFJlZ2lzdHJhdGlvblJlc3VsdDo6a1NraXA7Ci0gIHN3aXRjaCAoY29kZWNfaW5zdC5w
bGZyZXEpIHsKLSAgICBjYXNlIDgwMDA6Ci0gICAgY2FzZSAxNjAwMDoKLSAgICBjYXNlIDMyMDAw
OgotICAgIGNhc2UgNDgwMDA6Ci0gICAgICAoKnB0X21hcClbY29kZWNfaW5zdC5wbGZyZXFdID0g
Y29kZWNfaW5zdC5wbHR5cGU7Ci0gICAgICByZXR1cm4gUmVnaXN0cmF0aW9uUmVzdWx0OjprT2s7
Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBSZWdpc3RyYXRpb25SZXN1bHQ6OmtCYWRGcmVx
OwotICB9Ci19Ci0KLVJlbnRBQ29kZWM6OlJlZ2lzdHJhdGlvblJlc3VsdCBSZW50QUNvZGVjOjpS
ZWdpc3RlclJlZFBheWxvYWRUeXBlKAotICAgIHN0ZDo6bWFwPGludCwgaW50PiogcHRfbWFwLAot
ICAgIGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCkgewotICBpZiAoU1RSX0NBU0VfQ01QKGNv
ZGVjX2luc3QucGxuYW1lLCAiUkVEIikgIT0gMCkKLSAgICByZXR1cm4gUmVnaXN0cmF0aW9uUmVz
dWx0OjprU2tpcDsKLSAgc3dpdGNoIChjb2RlY19pbnN0LnBsZnJlcSkgewotICAgIGNhc2UgODAw
MDoKLSAgICAgICgqcHRfbWFwKVtjb2RlY19pbnN0LnBsZnJlcV0gPSBjb2RlY19pbnN0LnBsdHlw
ZTsKLSAgICAgIHJldHVybiBSZWdpc3RyYXRpb25SZXN1bHQ6OmtPazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgcmV0dXJuIFJlZ2lzdHJhdGlvblJlc3VsdDo6a0JhZEZyZXE7Ci0gIH0KLX0KLQotbmFt
ZXNwYWNlIHsKLQotLy8gUmV0dXJucyBhIG5ldyBzcGVlY2ggZW5jb2Rlciwgb3IgbnVsbCBvbiBl
cnJvci4KLS8vIFRPRE8oa3dpYmVyZyk6IERvbid0IGhhbmRsZSBlcnJvcnMgaGVyZSAoYnVnIDUw
MzMpCi1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBDcmVhdGVFbmNvZGVyKAotICAgIGNv
bnN0IENvZGVjSW5zdCYgc3BlZWNoX2luc3QsCi0gICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRy
PExvY2tlZElzYWNCYW5kd2lkdGhJbmZvPiYgYndpbmZvKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENf
Q09ERUNfSVNBQ0ZYKQotICBpZiAoU1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBsbmFtZSwgImlz
YWMiKSA9PSAwKQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPigKLSAg
ICAgICAgbmV3IEF1ZGlvRW5jb2RlcklzYWNGaXhJbXBsKHNwZWVjaF9pbnN0LCBid2luZm8pKTsK
LSNlbmRpZgotI2lmIGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUMpCi0gIGlmIChTVFJfQ0FTRV9D
TVAoc3BlZWNoX2luc3QucGxuYW1lLCAiaXNhYyIpID09IDApCi0gICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0VuY29kZXI+KAotICAgICAgICBuZXcgQXVkaW9FbmNvZGVySXNhY0Zsb2F0
SW1wbChzcGVlY2hfaW5zdCwgYndpbmZvKSk7Ci0jZW5kaWYKLSNpZmRlZiBXRUJSVENfQ09ERUNf
T1BVUwotICBpZiAoU1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBsbmFtZSwgIm9wdXMiKSA9PSAw
KQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPihuZXcgQXVkaW9FbmNv
ZGVyT3B1c0ltcGwoc3BlZWNoX2luc3QpKTsKLSNlbmRpZgotICBpZiAoU1RSX0NBU0VfQ01QKHNw
ZWVjaF9pbnN0LnBsbmFtZSwgInBjbXUiKSA9PSAwKQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9FbmNvZGVyPihuZXcgQXVkaW9FbmNvZGVyUGNtVShzcGVlY2hfaW5zdCkpOwotICBp
ZiAoU1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBsbmFtZSwgInBjbWEiKSA9PSAwKQotICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPihuZXcgQXVkaW9FbmNvZGVyUGNtQShz
cGVlY2hfaW5zdCkpOwotICBpZiAoU1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBsbmFtZSwgImwx
NiIpID09IDApCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KG5ldyBB
dWRpb0VuY29kZXJQY20xNkIoc3BlZWNoX2luc3QpKTsKLSNpZmRlZiBXRUJSVENfQ09ERUNfSUxC
QwotICBpZiAoU1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBsbmFtZSwgImlsYmMiKSA9PSAwKQot
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPihuZXcgQXVkaW9FbmNvZGVy
SWxiY0ltcGwoc3BlZWNoX2luc3QpKTsKLSNlbmRpZgotICBpZiAoU1RSX0NBU0VfQ01QKHNwZWVj
aF9pbnN0LnBsbmFtZSwgImc3MjIiKSA9PSAwKQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9FbmNvZGVyPihuZXcgQXVkaW9FbmNvZGVyRzcyMkltcGwoc3BlZWNoX2luc3QpKTsKLSAg
UlRDX0xPR19GKExTX0VSUk9SKSA8PCAiQ291bGQgbm90IGNyZWF0ZSBlbmNvZGVyIG9mIHR5cGUg
IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHNwZWVjaF9pbnN0LnBsbmFtZTsKLSAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KCk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0VuY29kZXI+IENyZWF0ZVJlZEVuY29kZXIoCi0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
RW5jb2Rlcj4gZW5jb2RlciwKLSAgICBpbnQgcmVkX3BheWxvYWRfdHlwZSkgewotI2lmZGVmIFdF
QlJUQ19DT0RFQ19SRUQKLSAgQXVkaW9FbmNvZGVyQ29weVJlZDo6Q29uZmlnIGNvbmZpZzsKLSAg
Y29uZmlnLnBheWxvYWRfdHlwZSA9IHJlZF9wYXlsb2FkX3R5cGU7Ci0gIGNvbmZpZy5zcGVlY2hf
ZW5jb2RlciA9IHN0ZDo6bW92ZShlbmNvZGVyKTsKLSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0VuY29kZXI+KAotICAgICAgbmV3IEF1ZGlvRW5jb2RlckNvcHlSZWQoc3RkOjptb3ZlKGNv
bmZpZykpKTsKLSNlbHNlCi0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPigp
OwotI2VuZGlmCi19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IENyZWF0ZUNuZ0Vu
Y29kZXIoCi0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2RlciwKLSAgICBp
bnQgcGF5bG9hZF90eXBlLAotICAgIEFDTVZBRE1vZGUgdmFkX21vZGUpIHsKLSAgQXVkaW9FbmNv
ZGVyQ25nOjpDb25maWcgY29uZmlnOwotICBjb25maWcubnVtX2NoYW5uZWxzID0gZW5jb2Rlci0+
TnVtQ2hhbm5lbHMoKTsKLSAgY29uZmlnLnBheWxvYWRfdHlwZSA9IHBheWxvYWRfdHlwZTsKLSAg
Y29uZmlnLnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKGVuY29kZXIpOwotICBzd2l0Y2ggKHZh
ZF9tb2RlKSB7Ci0gICAgY2FzZSBWQUROb3JtYWw6Ci0gICAgICBjb25maWcudmFkX21vZGUgPSBW
YWQ6OmtWYWROb3JtYWw7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFZBRExvd0JpdHJhdGU6Ci0g
ICAgICBjb25maWcudmFkX21vZGUgPSBWYWQ6OmtWYWRMb3dCaXRyYXRlOwotICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBWQURBZ2dyOgotICAgICAgY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkQWdn
cmVzc2l2ZTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgVkFEVmVyeUFnZ3I6Ci0gICAgICBjb25m
aWcudmFkX21vZGUgPSBWYWQ6OmtWYWRWZXJ5QWdncmVzc2l2ZTsKLSAgICAgIGJyZWFrOwotICAg
IGRlZmF1bHQ6Ci0gICAgICBSVENfRkFUQUwoKTsKLSAgfQotICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRW5jb2Rlcj4obmV3IEF1ZGlvRW5jb2RlckNuZyhzdGQ6Om1vdmUoY29uZmlnKSkp
OwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPiBDcmVhdGVJc2FjRGVjb2RlcigK
LSAgICBpbnQgc2FtcGxlX3JhdGVfaHosCi0gICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPExv
Y2tlZElzYWNCYW5kd2lkdGhJbmZvPiYgYndpbmZvKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfQ09E
RUNfSVNBQ0ZYKQotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4oCi0gICAg
ICBuZXcgQXVkaW9EZWNvZGVySXNhY0ZpeEltcGwoc2FtcGxlX3JhdGVfaHosIGJ3aW5mbykpOwot
I2VsaWYgZGVmaW5lZChXRUJSVENfQ09ERUNfSVNBQykKLSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb0RlY29kZXI+KAotICAgICAgbmV3IEF1ZGlvRGVjb2RlcklzYWNGbG9hdEltcGwoc2Ft
cGxlX3JhdGVfaHosIGJ3aW5mbykpOwotI2Vsc2UKLSAgUlRDX0ZBVEFMKCkgPDwgImlTQUMgaXMg
bm90IHN1cHBvcnRlZC4iOwotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4o
KTsKLSNlbmRpZgotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotUmVudEFDb2RlYzo6UmVudEFDb2Rl
YygpIHsKLSNpZiBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FDRlgpIHx8IGRlZmluZWQoV0VCUlRD
X0NPREVDX0lTQUMpCi0gIGlzYWNfYmFuZHdpZHRoX2luZm9fID0gbmV3IExvY2tlZElzYWNCYW5k
d2lkdGhJbmZvOwotI2VuZGlmCi19Ci1SZW50QUNvZGVjOjp+UmVudEFDb2RlYygpID0gZGVmYXVs
dDsKLQotc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gUmVudEFDb2RlYzo6UmVudEVuY29k
ZXIoCi0gICAgY29uc3QgQ29kZWNJbnN0JiBjb2RlY19pbnN0KSB7Ci0gIHJldHVybiBDcmVhdGVF
bmNvZGVyKGNvZGVjX2luc3QsIGlzYWNfYmFuZHdpZHRoX2luZm9fKTsKLX0KLQotUmVudEFDb2Rl
Yzo6U3RhY2tQYXJhbWV0ZXJzOjpTdGFja1BhcmFtZXRlcnMoKSB7Ci0gIC8vIFJlZ2lzdGVyIHRo
ZSBkZWZhdWx0IHBheWxvYWQgdHlwZXMgZm9yIFJFRCBhbmQgQ05HLgotICBmb3IgKGNvbnN0IENv
ZGVjSW5zdCYgY2kgOiBSZW50QUNvZGVjOjpEYXRhYmFzZSgpKSB7Ci0gICAgUmVudEFDb2RlYzo6
UmVnaXN0ZXJDbmdQYXlsb2FkVHlwZSgmY25nX3BheWxvYWRfdHlwZXMsIGNpKTsKLSAgICBSZW50
QUNvZGVjOjpSZWdpc3RlclJlZFBheWxvYWRUeXBlKCZyZWRfcGF5bG9hZF90eXBlcywgY2kpOwot
ICB9Ci19Ci0KLVJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVyczo6flN0YWNrUGFyYW1ldGVycygp
ID0gZGVmYXVsdDsKLQotc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gUmVudEFDb2RlYzo6
UmVudEVuY29kZXJTdGFjaygKLSAgICBTdGFja1BhcmFtZXRlcnMqIHBhcmFtKSB7Ci0gIGlmICgh
cGFyYW0tPnNwZWVjaF9lbmNvZGVyKQotICAgIHJldHVybiBudWxscHRyOwotCi0gIGlmIChwYXJh
bS0+dXNlX2NvZGVjX2ZlYykgewotICAgIC8vIFN3aXRjaCBGRUMgb24uIE9uIGZhaWx1cmUsIHJl
bWVtYmVyIHRoYXQgRkVDIGlzIG9mZi4KLSAgICBpZiAoIXBhcmFtLT5zcGVlY2hfZW5jb2Rlci0+
U2V0RmVjKHRydWUpKQotICAgICAgcGFyYW0tPnVzZV9jb2RlY19mZWMgPSBmYWxzZTsKLSAgfSBl
bHNlIHsKLSAgICAvLyBTd2l0Y2ggRkVDIG9mZi4gVGhpcyBzaG91bGRuJ3QgZmFpbC4KLSAgICBj
b25zdCBib29sIHN1Y2Nlc3MgPSBwYXJhbS0+c3BlZWNoX2VuY29kZXItPlNldEZlYyhmYWxzZSk7
Ci0gICAgUlRDX0RDSEVDSyhzdWNjZXNzKTsKLSAgfQotCi0gIGF1dG8gcHQgPSBbJnBhcmFtXShj
b25zdCBzdGQ6Om1hcDxpbnQsIGludD4mIG0pIHsKLSAgICBhdXRvIGl0ID0gbS5maW5kKHBhcmFt
LT5zcGVlY2hfZW5jb2Rlci0+U2FtcGxlUmF0ZUh6KCkpOwotICAgIHJldHVybiBpdCA9PSBtLmVu
ZCgpID8gYWJzbDo6bnVsbG9wdCA6IGFic2w6Om9wdGlvbmFsPGludD4oaXQtPnNlY29uZCk7Ci0g
IH07Ci0gIGF1dG8gY25nX3B0ID0gcHQocGFyYW0tPmNuZ19wYXlsb2FkX3R5cGVzKTsKLSAgcGFy
YW0tPnVzZV9jbmcgPQotICAgICAgcGFyYW0tPnVzZV9jbmcgJiYgY25nX3B0ICYmIHBhcmFtLT5z
cGVlY2hfZW5jb2Rlci0+TnVtQ2hhbm5lbHMoKSA9PSAxOwotICBhdXRvIHJlZF9wdCA9IHB0KHBh
cmFtLT5yZWRfcGF5bG9hZF90eXBlcyk7Ci0gIHBhcmFtLT51c2VfcmVkID0gcGFyYW0tPnVzZV9y
ZWQgJiYgcmVkX3B0OwotCi0gIGlmIChwYXJhbS0+dXNlX2NuZyB8fCBwYXJhbS0+dXNlX3JlZCkg
ewotICAgIC8vIFRoZSBSRUQgYW5kIENORyBlbmNvZGVycyBuZWVkIHRvIGJlIGluIHN5bmMgd2l0
aCB0aGUgc3BlZWNoIGVuY29kZXIsIHNvCi0gICAgLy8gcmVzZXQgdGhlIGxhdHRlciB0byBlbnN1
cmUgaXRzIGJ1ZmZlciBpcyBlbXB0eS4KLSAgICBwYXJhbS0+c3BlZWNoX2VuY29kZXItPlJlc2V0
KCk7Ci0gIH0KLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2Rlcl9zdGFjayA9
Ci0gICAgICBzdGQ6Om1vdmUocGFyYW0tPnNwZWVjaF9lbmNvZGVyKTsKLSAgaWYgKHBhcmFtLT51
c2VfcmVkKSB7Ci0gICAgZW5jb2Rlcl9zdGFjayA9IENyZWF0ZVJlZEVuY29kZXIoc3RkOjptb3Zl
KGVuY29kZXJfc3RhY2spLCAqcmVkX3B0KTsKLSAgfQotICBpZiAocGFyYW0tPnVzZV9jbmcpIHsK
LSAgICBlbmNvZGVyX3N0YWNrID0KLSAgICAgICAgQ3JlYXRlQ25nRW5jb2RlcihzdGQ6Om1vdmUo
ZW5jb2Rlcl9zdGFjayksICpjbmdfcHQsIHBhcmFtLT52YWRfbW9kZSk7Ci0gIH0KLSAgcmV0dXJu
IGVuY29kZXJfc3RhY2s7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RlY29kZXI+IFJlbnRB
Q29kZWM6OlJlbnRJc2FjRGVjb2RlcihpbnQgc2FtcGxlX3JhdGVfaHopIHsKLSAgcmV0dXJuIENy
ZWF0ZUlzYWNEZWNvZGVyKHNhbXBsZV9yYXRlX2h6LCBpc2FjX2JhbmR3aWR0aF9pbmZvXyk7Ci19
Ci0KIH0gIC8vIG5hbWVzcGFjZSBhY20yCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMu
aAppbmRleCBiMGFkMzgyZDhhOWIyNDNkMmNjZWI3YWEwMTNjNTBmMDI1MDEwYjUxLi4yY2YxYzZl
MThjOWU2ZjhiMDYwYzA1NDA4YzYyNWU0M2RhMmQ4NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20y
L3JlbnRfYV9jb2RlYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmgKQEAgLTMxLDgg
KzMxLDcgQEAgY2xhc3MgTG9ja2VkSXNhY0JhbmR3aWR0aEluZm87CiAKIG5hbWVzcGFjZSBhY20y
IHsKIAotY2xhc3MgUmVudEFDb2RlYyB7Ci0gcHVibGljOgorc3RydWN0IFJlbnRBQ29kZWMgewog
ICBlbnVtIGNsYXNzIENvZGVjSWQgewogI2lmIGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUMpIHx8
IGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUNGWCkKICAgICBrSVNBQywKQEAgLTEzMyw2NCArMTMy
LDkgQEAgY2xhc3MgUmVudEFDb2RlYyB7CiAgICAgcmV0dXJuIHBheWxvYWRfdHlwZSA+PSAwICYm
IHBheWxvYWRfdHlwZSA8PSAxMjc7CiAgIH0KIAotICBzdGF0aWMgcnRjOjpBcnJheVZpZXc8Y29u
c3QgQ29kZWNJbnN0PiBEYXRhYmFzZSgpOwotCi0gIHN0YXRpYyBhYnNsOjpvcHRpb25hbDxib29s
PiBJc1N1cHBvcnRlZE51bUNoYW5uZWxzKENvZGVjSWQgY29kZWNfaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1fY2hhbm5l
bHMpOwotCiAgIHN0YXRpYyBhYnNsOjpvcHRpb25hbDxOZXRFcURlY29kZXI+IE5ldEVxRGVjb2Rl
ckZyb21Db2RlY0lkKAogICAgICAgQ29kZWNJZCBjb2RlY19pZCwKICAgICAgIHNpemVfdCBudW1f
Y2hhbm5lbHMpOwotCi0gIC8vIFBhcnNlIGNvZGVjX2luc3QgYW5kIGV4dHJhY3QgcGF5bG9hZCB0
eXBlcy4gSWYgdGhlIGdpdmVuIENvZGVjSW5zdCB3YXMgZm9yCi0gIC8vIHRoZSB3cm9uZyBzb3J0
IG9mIGNvZGVjLCByZXR1cm4ga1NraXA7IG90aGVyd2lzZSwgaWYgdGhlIHJhdGUgd2FzIGlsbGVn
YWwsCi0gIC8vIHJldHVybiBrQmFkRnJlcTsgb3RoZXJ3aXNlLCB1cGRhdGUgdGhlIGdpdmVuIFJU
UCB0aW1lc3RhbXAgcmF0ZSAoSHopIC0+Ci0gIC8vIHBheWxvYWQgdHlwZSBtYXAgYW5kIHJldHVy
biBrT2suCi0gIGVudW0gY2xhc3MgUmVnaXN0cmF0aW9uUmVzdWx0IHsga09rLCBrU2tpcCwga0Jh
ZEZyZXEgfTsKLSAgc3RhdGljIFJlZ2lzdHJhdGlvblJlc3VsdCBSZWdpc3RlckNuZ1BheWxvYWRU
eXBlKHN0ZDo6bWFwPGludCwgaW50PiogcHRfbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNJbnN0JiBjb2RlY19pbnN0KTsK
LSAgc3RhdGljIFJlZ2lzdHJhdGlvblJlc3VsdCBSZWdpc3RlclJlZFBheWxvYWRUeXBlKHN0ZDo6
bWFwPGludCwgaW50PiogcHRfbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNJbnN0JiBjb2RlY19pbnN0KTsKLQotICBSZW50
QUNvZGVjKCk7Ci0gIH5SZW50QUNvZGVjKCk7Ci0KLSAgLy8gQ3JlYXRlcyBhbmQgcmV0dXJucyBh
biBhdWRpbyBlbmNvZGVyIGJ1aWx0IHRvIHRoZSBnaXZlbiBzcGVjaWZpY2F0aW9uLgotICAvLyBS
ZXR1cm5zIG51bGwgaW4gY2FzZSBvZiBlcnJvci4KLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5j
b2Rlcj4gUmVudEVuY29kZXIoY29uc3QgQ29kZWNJbnN0JiBjb2RlY19pbnN0KTsKLQotICBzdHJ1
Y3QgU3RhY2tQYXJhbWV0ZXJzIHsKLSAgICBTdGFja1BhcmFtZXRlcnMoKTsKLSAgICB+U3RhY2tQ
YXJhbWV0ZXJzKCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBzcGVlY2hf
ZW5jb2RlcjsKLQotICAgIGJvb2wgdXNlX2NvZGVjX2ZlYyA9IGZhbHNlOwotICAgIGJvb2wgdXNl
X3JlZCA9IGZhbHNlOwotICAgIGJvb2wgdXNlX2NuZyA9IGZhbHNlOwotICAgIEFDTVZBRE1vZGUg
dmFkX21vZGUgPSBWQUROb3JtYWw7Ci0KLSAgICAvLyBNYXBzIGZyb20gUlRQIHRpbWVzdGFtcCBy
YXRlIChpbiBIeikgdG8gcGF5bG9hZCB0eXBlLgotICAgIHN0ZDo6bWFwPGludCwgaW50PiBjbmdf
cGF5bG9hZF90eXBlczsKLSAgICBzdGQ6Om1hcDxpbnQsIGludD4gcmVkX3BheWxvYWRfdHlwZXM7
Ci0gIH07Ci0KLSAgLy8gQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBhdWRpbyBlbmNvZGVyIHN0YWNr
IGNvbnN0cnVjdGVkIHRvIHRoZSBnaXZlbgotICAvLyBzcGVjaWZpY2F0aW9uLiBJZiB0aGUgc3Bl
Y2lmaWNhdGlvbiBpc24ndCBjb21wYXRpYmxlIHdpdGggdGhlIGVuY29kZXIsIGl0Ci0gIC8vIHdp
bGwgYmUgY2hhbmdlZCB0byBtYXRjaCAodGhpbmdzIHdpbGwgYmUgc3dpdGNoZWQgb2ZmKS4gVGhl
IHNwZWVjaCBlbmNvZGVyCi0gIC8vIHdpbGwgYmUgc3RvbGVuLiBJZiB0aGUgc3BlY2lmaWNhdGlv
biBpc24ndCBjb21wbGV0ZSwgcmV0dXJucyBudWxscHRyLgotICBzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9FbmNvZGVyPiBSZW50RW5jb2RlclN0YWNrKFN0YWNrUGFyYW1ldGVycyogcGFyYW0pOwotCi0g
IC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYW4gaVNBQyBkZWNvZGVyLgotICBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9EZWNvZGVyPiBSZW50SXNhY0RlY29kZXIoaW50IHNhbXBsZV9yYXRlX2h6KTsKLQot
IHByaXZhdGU6Ci0gIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IHNwZWVjaF9lbmNvZGVy
XzsKLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gY25nX2VuY29kZXJfOwotICBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiByZWRfZW5jb2Rlcl87Ci0gIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxMb2NrZWRJc2FjQmFuZHdpZHRoSW5mbz4gaXNhY19iYW5kd2lkdGhfaW5mb187Ci0KLSAg
UlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW50QUNvZGVjKTsKIH07CiAKIH0gIC8vIG5h
bWVzcGFjZSBhY20yCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlY191bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmZDMzMjljZmIxMTM1OWNmNWQyN2MzNDE3YTE5OTgzY2E4MTZkYjVl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Fj
bTIvcmVudF9hX2NvZGVjX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaW5jbHVk
ZSAiY29tbW9uX3R5cGVzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9y
ZW50X2FfY29kZWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKLSNpbmNsdWRl
ICJ0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAidGVzdC9tb2NrX2F1ZGlvX2VuY29kZXIuaCIKLQot
bmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgYWNtMiB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6
UmV0dXJuOwotCi1uYW1lc3BhY2UgewotCi1jb25zdCBpbnQga0RhdGFMZW5ndGhTYW1wbGVzID0g
ODA7Ci1jb25zdCBpbnQga1BhY2tldFNpemVTYW1wbGVzID0gMiAqIGtEYXRhTGVuZ3RoU2FtcGxl
czsKLWNvbnN0IGludDE2X3Qga1plcm9EYXRhW2tEYXRhTGVuZ3RoU2FtcGxlc10gPSB7MH07Ci1j
b25zdCBDb2RlY0luc3Qga0RlZmF1bHRDb2RlY0luc3QgPSB7MCwgInBjbXUiLCA4MDAwLCBrUGFj
a2V0U2l6ZVNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwg
NjQwMDB9OwotY29uc3QgaW50IGtDbmdQdCA9IDEzOwotCi1jbGFzcyBNYXJrZXIgZmluYWwgewot
IHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKE1hcmssIHZvaWQoc3RkOjpzdHJpbmcgZGVzYykpOwot
fTsKLQotfSAgLy8gbmFtZXNwYWNlCi0KLWNsYXNzIFJlbnRBQ29kZWNUZXN0RiA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdm9pZCBDcmVhdGVDb2RlYygpIHsKLSAg
ICBhdXRvIHNwZWVjaF9lbmNvZGVyID0gcmVudF9hX2NvZGVjXy5SZW50RW5jb2RlcihrRGVmYXVs
dENvZGVjSW5zdCk7Ci0gICAgQVNTRVJUX1RSVUUoc3BlZWNoX2VuY29kZXIpOwotICAgIFJlbnRB
Q29kZWM6OlN0YWNrUGFyYW1ldGVycyBwYXJhbTsKLSAgICBwYXJhbS51c2VfY25nID0gdHJ1ZTsK
LSAgICBwYXJhbS5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShzcGVlY2hfZW5jb2Rlcik7Ci0g
ICAgZW5jb2Rlcl8gPSByZW50X2FfY29kZWNfLlJlbnRFbmNvZGVyU3RhY2soJnBhcmFtKTsKLSAg
fQotCi0gIHZvaWQgRW5jb2RlQW5kVmVyaWZ5KHNpemVfdCBleHBlY3RlZF9vdXRfbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBleHBlY3RlZF90aW1lc3RhbXAsCi0gICAg
ICAgICAgICAgICAgICAgICAgIGludCBleHBlY3RlZF9wYXlsb2FkX3R5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGludCBleHBlY3RlZF9zZW5kX2V2ZW5faWZfZW1wdHkpIHsKLSAgICBydGM6
OkJ1ZmZlciBvdXQ7Ci0gICAgQXVkaW9FbmNvZGVyOjpFbmNvZGVkSW5mbyBlbmNvZGVkX2luZm87
Ci0gICAgZW5jb2RlZF9pbmZvID0gZW5jb2Rlcl8tPkVuY29kZSh0aW1lc3RhbXBfLCBrWmVyb0Rh
dGEsICZvdXQpOwotICAgIHRpbWVzdGFtcF8gKz0ga0RhdGFMZW5ndGhTYW1wbGVzOwotICAgIEVY
UEVDVF9UUlVFKGVuY29kZWRfaW5mby5yZWR1bmRhbnQuZW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VR
KGV4cGVjdGVkX291dF9sZW5ndGgsIGVuY29kZWRfaW5mby5lbmNvZGVkX2J5dGVzKTsKLSAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRfdGltZXN0YW1wLCBlbmNvZGVkX2luZm8uZW5jb2RlZF90aW1lc3Rh
bXApOwotICAgIGlmIChleHBlY3RlZF9wYXlsb2FkX3R5cGUgPj0gMCkKLSAgICAgIEVYUEVDVF9F
UShleHBlY3RlZF9wYXlsb2FkX3R5cGUsIGVuY29kZWRfaW5mby5wYXlsb2FkX3R5cGUpOwotICAg
IGlmIChleHBlY3RlZF9zZW5kX2V2ZW5faWZfZW1wdHkgPj0gMCkKLSAgICAgIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDxib29sPihleHBlY3RlZF9zZW5kX2V2ZW5faWZfZW1wdHkpLAotICAgICAgICAg
ICAgICAgIGVuY29kZWRfaW5mby5zZW5kX2V2ZW5faWZfZW1wdHkpOwotICB9Ci0KLSAgUmVudEFD
b2RlYyByZW50X2FfY29kZWNfOwotICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmNv
ZGVyXzsKLSAgdWludDMyX3QgdGltZXN0YW1wXyA9IDA7Ci19OwotCi0vLyBUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCBDTkcgZnJhbWVzIGFyZSBkZWxpdmVyZWQgYXMgZXhwZWN0ZWQuIFNpbmNlIHRo
ZSBmcmFtZQotLy8gc2l6ZSBpcyBzZXQgdG8gMjAgbXMsIHdlIGV4cGVjdCB0aGUgZmlyc3QgZW5j
b2RlIGNhbGwgdG8gcHJvZHVjZSBubyBvdXRwdXQKLS8vICh3aGljaCBpcyBzaWduYWxlZCBhcyAw
IGJ5dGVzIG91dHB1dCBvZiB0eXBlIGtOb0VuY29kaW5nKS4gVGhlIG5leHQgZW5jb2RlCi0vLyBj
YWxsIHNob3VsZCBwcm9kdWNlIG9uZSBTSUQgZnJhbWUgb2YgOSBieXRlcy4gVGhlIHRoaXJkIGNh
bGwgc2hvdWxkIG5vdAotLy8gcmVzdWx0IGluIGFueSBvdXRwdXQgKGp1c3QgbGlrZSB0aGUgZmly
c3Qgb25lKS4gVGhlIGZvdXJ0aCBhbmQgZmluYWwgZW5jb2RlCi0vLyBjYWxsIHNob3VsZCBwcm9k
dWNlIGFuICJlbXB0eSBmcmFtZSIsIHdoaWNoIGlzIGxpa2Ugbm8gb3V0cHV0LCBidXQgd2l0aAot
Ly8gQXVkaW9FbmNvZGVyOjpFbmNvZGVkSW5mbzo6c2VuZF9ldmVuX2lmX2VtcHR5IHNldCB0byB0
cnVlLiAoVGhlIHJlYXNvbiB0bwotLy8gcHJvZHVjZSBhbiBlbXB0eSBmcmFtZSBpcyB0byBkcml2
ZSBzZW5kaW5nIG9mIERUTUYgcGFja2V0cyBpbiB0aGUgUlRQL1JUQ1AKLS8vIG1vZHVsZS4pCi1U
RVNUX0YoUmVudEFDb2RlY1Rlc3RGLCBWZXJpZnlDbmdGcmFtZXMpIHsKLSAgQ3JlYXRlQ29kZWMo
KTsKLSAgdWludDMyX3QgZXhwZWN0ZWRfdGltZXN0YW1wID0gdGltZXN0YW1wXzsKLSAgLy8gVmVy
aWZ5IG5vIGZyYW1lLgotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJGaXJzdCBlbmNvZGluZyIpOwot
ICAgIEVuY29kZUFuZFZlcmlmeSgwLCBleHBlY3RlZF90aW1lc3RhbXAsIC0xLCAtMSk7Ci0gIH0K
LQotICAvLyBWZXJpZnkgU0lEIGZyYW1lIGRlbGl2ZXJlZC4KLSAgewotICAgIFNDT1BFRF9UUkFD
RSgiU2Vjb25kIGVuY29kaW5nIik7Ci0gICAgRW5jb2RlQW5kVmVyaWZ5KDksIGV4cGVjdGVkX3Rp
bWVzdGFtcCwga0NuZ1B0LCAxKTsKLSAgfQotCi0gIC8vIFZlcmlmeSBubyBmcmFtZS4KLSAgewot
ICAgIFNDT1BFRF9UUkFDRSgiVGhpcmQgZW5jb2RpbmciKTsKLSAgICBFbmNvZGVBbmRWZXJpZnko
MCwgZXhwZWN0ZWRfdGltZXN0YW1wLCAtMSwgLTEpOwotICB9Ci0KLSAgLy8gVmVyaWZ5IE5vRW5j
b2RpbmcuCi0gIGV4cGVjdGVkX3RpbWVzdGFtcCArPSAyICoga0RhdGFMZW5ndGhTYW1wbGVzOwot
ICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJGb3VydGggZW5jb2RpbmciKTsKLSAgICBFbmNvZGVBbmRW
ZXJpZnkoMCwgZXhwZWN0ZWRfdGltZXN0YW1wLCBrQ25nUHQsIDEpOwotICB9Ci19Ci0KLVRFU1Qo
UmVudEFDb2RlY1Rlc3QsIEV4dGVybmFsRW5jb2RlcikgewotICBjb25zdCBpbnQga1NhbXBsZVJh
dGVIeiA9IDgwMDA7Ci0gIGF1dG8qIGV4dGVybmFsX2VuY29kZXIgPSBuZXcgTW9ja0F1ZGlvRW5j
b2RlcjsKLSAgRVhQRUNUX0NBTEwoKmV4dGVybmFsX2VuY29kZXIsIFNhbXBsZVJhdGVIeigpKQot
ICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihrU2FtcGxlUmF0ZUh6KSk7Ci0gIEVYUEVDVF9D
QUxMKCpleHRlcm5hbF9lbmNvZGVyLCBOdW1DaGFubmVscygpKS5XaWxsUmVwZWF0ZWRseShSZXR1
cm4oMSkpOwotICBFWFBFQ1RfQ0FMTCgqZXh0ZXJuYWxfZW5jb2RlciwgU2V0RmVjKGZhbHNlKSku
V2lsbFJlcGVhdGVkbHkoUmV0dXJuKHRydWUpKTsKLQotICBSZW50QUNvZGVjIHJhYzsKLSAgUmVu
dEFDb2RlYzo6U3RhY2tQYXJhbWV0ZXJzIHBhcmFtOwotICBwYXJhbS5zcGVlY2hfZW5jb2RlciA9
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KGV4dGVybmFsX2VuY29kZXIpOwotICBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmNvZGVyX3N0YWNrID0gcmFjLlJlbnRFbmNvZGVy
U3RhY2soJnBhcmFtKTsKLSAgRVhQRUNUX0VRKGV4dGVybmFsX2VuY29kZXIsIGVuY29kZXJfc3Rh
Y2suZ2V0KCkpOwotICBjb25zdCBpbnQga1BhY2tldFNpemVTYW1wbGVzID0ga1NhbXBsZVJhdGVI
eiAvIDEwMDsKLSAgaW50MTZfdCBhdWRpb1trUGFja2V0U2l6ZVNhbXBsZXNdID0gezB9OwotICBy
dGM6OkJ1ZmZlciBlbmNvZGVkOwotICBBdWRpb0VuY29kZXI6OkVuY29kZWRJbmZvIGluZm87Ci0K
LSAgTWFya2VyIG1hcmtlcjsKLSAgewotICAgIDo6dGVzdGluZzo6SW5TZXF1ZW5jZSBzOwotICAg
IGluZm8uZW5jb2RlZF90aW1lc3RhbXAgPSAwOwotICAgIEVYUEVDVF9DQUxMKCpleHRlcm5hbF9l
bmNvZGVyLAotICAgICAgICAgICAgICAgIEVuY29kZUltcGwoMCwgcnRjOjpBcnJheVZpZXc8Y29u
c3QgaW50MTZfdD4oYXVkaW8pLCAmZW5jb2RlZCkpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4o
aW5mbykpOwotICAgIEVYUEVDVF9DQUxMKG1hcmtlciwgTWFyaygiQSIpKTsKLSAgICBFWFBFQ1Rf
Q0FMTChtYXJrZXIsIE1hcmsoIkIiKSk7Ci0gICAgRVhQRUNUX0NBTEwobWFya2VyLCBNYXJrKCJD
IikpOwotICB9Ci0KLSAgaW5mbyA9IGVuY29kZXJfc3RhY2stPkVuY29kZSgwLCBhdWRpbywgJmVu
Y29kZWQpOwotICBFWFBFQ1RfRVEoMHUsIGluZm8uZW5jb2RlZF90aW1lc3RhbXApOwotICBtYXJr
ZXIuTWFyaygiQSIpOwotCi0gIC8vIENoYW5nZSB0byBpbnRlcm5hbCBlbmNvZGVyLgotICBDb2Rl
Y0luc3QgY29kZWNfaW5zdCA9IGtEZWZhdWx0Q29kZWNJbnN0OwotICBjb2RlY19pbnN0LnBhY3Np
emUgPSBrUGFja2V0U2l6ZVNhbXBsZXM7Ci0gIHBhcmFtLnNwZWVjaF9lbmNvZGVyID0gcmFjLlJl
bnRFbmNvZGVyKGNvZGVjX2luc3QpOwotICBBU1NFUlRfVFJVRShwYXJhbS5zcGVlY2hfZW5jb2Rl
cik7Ci0gIEF1ZGlvRW5jb2RlciogZW5jID0gcGFyYW0uc3BlZWNoX2VuY29kZXIuZ2V0KCk7Ci0g
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IHN0YWNrID0gcmFjLlJlbnRFbmNvZGVyU3Rh
Y2soJnBhcmFtKTsKLSAgRVhQRUNUX0VRKGVuYywgc3RhY2suZ2V0KCkpOwotCi0gIC8vIERvbid0
IGV4cGVjdCBhbnkgbW9yZSBjYWxscyB0byB0aGUgZXh0ZXJuYWwgZW5jb2Rlci4KLSAgaW5mbyA9
IHN0YWNrLT5FbmNvZGUoMSwgYXVkaW8sICZlbmNvZGVkKTsKLSAgbWFya2VyLk1hcmsoIkIiKTsK
LSAgZW5jb2Rlcl9zdGFjay5yZXNldCgpOwotICBtYXJrZXIuTWFyaygiQyIpOwotfQotCi0vLyBW
ZXJpZnkgdGhhdCB0aGUgc3BlZWNoIGVuY29kZXIncyBSZXNldCBtZXRob2QgaXMgY2FsbGVkIHdo
ZW4gQ05HIG9yIFJFRAotLy8gKG9yIGJvdGgpIGFyZSBzd2l0Y2hlZCBvbiwgYnV0IG5vdCB3aGVu
IHRoZXkncmUgc3dpdGNoZWQgb2ZmLgotdm9pZCBUZXN0Q25nQW5kUmVkUmVzZXRTcGVlY2hFbmNv
ZGVyKGJvb2wgdXNlX2NuZywgYm9vbCB1c2VfcmVkKSB7Ci0gIGF1dG8gbWFrZV9lbmMgPSBbXSB7
Ci0gICAgYXV0byBzcGVlY2hfZW5jb2RlciA9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2Nr
QXVkaW9FbmNvZGVyPihuZXcgTW9ja0F1ZGlvRW5jb2Rlcik7Ci0gICAgRVhQRUNUX0NBTEwoKnNw
ZWVjaF9lbmNvZGVyLCBOdW1DaGFubmVscygpKS5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMSkpOwot
ICAgIEVYUEVDVF9DQUxMKCpzcGVlY2hfZW5jb2RlciwgTWF4MTBNc0ZyYW1lc0luQVBhY2tldCgp
KQotICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDIpKTsKLSAgICBFWFBFQ1RfQ0FMTCgq
c3BlZWNoX2VuY29kZXIsIFNhbXBsZVJhdGVIeigpKS5XaWxsUmVwZWF0ZWRseShSZXR1cm4oODAw
MCkpOwotICAgIEVYUEVDVF9DQUxMKCpzcGVlY2hfZW5jb2RlciwgU2V0RmVjKGZhbHNlKSkuV2ls
bFJlcGVhdGVkbHkoUmV0dXJuKHRydWUpKTsKLSAgICByZXR1cm4gc3BlZWNoX2VuY29kZXI7Ci0g
IH07Ci0gIGF1dG8gc3BlZWNoX2VuY29kZXIxID0gbWFrZV9lbmMoKTsKLSAgYXV0byBzcGVlY2hf
ZW5jb2RlcjIgPSBtYWtlX2VuYygpOwotICBNYXJrZXIgbWFya2VyOwotICB7Ci0gICAgOjp0ZXN0
aW5nOjpJblNlcXVlbmNlIHM7Ci0gICAgRVhQRUNUX0NBTEwobWFya2VyLCBNYXJrKCJkaXNhYmxl
ZCIpKTsKLSAgICBFWFBFQ1RfQ0FMTChtYXJrZXIsIE1hcmsoImVuYWJsZWQiKSk7Ci0gICAgaWYg
KHVzZV9jbmcgfHwgdXNlX3JlZCkKLSAgICAgIEVYUEVDVF9DQUxMKCpzcGVlY2hfZW5jb2RlcjIs
IFJlc2V0KCkpOwotICB9Ci0KLSAgUmVudEFDb2RlYzo6U3RhY2tQYXJhbWV0ZXJzIHBhcmFtMSwg
cGFyYW0yOwotICBwYXJhbTEuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUoc3BlZWNoX2VuY29k
ZXIxKTsKLSAgcGFyYW0yLnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKHNwZWVjaF9lbmNvZGVy
Mik7Ci0gIHBhcmFtMi51c2VfY25nID0gdXNlX2NuZzsKLSAgcGFyYW0yLnVzZV9yZWQgPSB1c2Vf
cmVkOwotICBtYXJrZXIuTWFyaygiZGlzYWJsZWQiKTsKLSAgUmVudEFDb2RlYyByYWM7Ci0gIHJh
Yy5SZW50RW5jb2RlclN0YWNrKCZwYXJhbTEpOwotICBtYXJrZXIuTWFyaygiZW5hYmxlZCIpOwot
ICByYWMuUmVudEVuY29kZXJTdGFjaygmcGFyYW0yKTsKLX0KLQotVEVTVChSZW50QUNvZGVjVGVz
dCwgQ25nUmVzZXRzU3BlZWNoRW5jb2RlcikgewotICBUZXN0Q25nQW5kUmVkUmVzZXRTcGVlY2hF
bmNvZGVyKHRydWUsIGZhbHNlKTsKLX0KLQotVEVTVChSZW50QUNvZGVjVGVzdCwgUmVkUmVzZXRz
U3BlZWNoRW5jb2RlcikgewotICBUZXN0Q25nQW5kUmVkUmVzZXRTcGVlY2hFbmNvZGVyKGZhbHNl
LCB0cnVlKTsKLX0KLQotVEVTVChSZW50QUNvZGVjVGVzdCwgQ25nQW5kUmVkUmVzZXRzU3BlZWNo
RW5jb2RlcikgewotICBUZXN0Q25nQW5kUmVkUmVzZXRTcGVlY2hFbmNvZGVyKHRydWUsIHRydWUp
OwotfQotCi1URVNUKFJlbnRBQ29kZWNUZXN0LCBOb0NuZ0FuZFJlZE5vU3BlZWNoRW5jb2RlclJl
c2V0KSB7Ci0gIFRlc3RDbmdBbmRSZWRSZXNldFNwZWVjaEVuY29kZXIoZmFsc2UsIGZhbHNlKTsK
LX0KLQotVEVTVChSZW50QUNvZGVjVGVzdCwgUmVudEVuY29kZXJFcnJvcikgewotICBjb25zdCBD
b2RlY0luc3QgY29kZWNfaW5zdCA9IHsKLSAgICAgIDAsICJSb2JlcnQnKTsgRFJPUCBUQUJMRSBT
dHVkZW50czsiLCA4MDAwLCAxNjAsIDEsIDY0MDAwfTsKLSAgUmVudEFDb2RlYyByZW50X2FfY29k
ZWM7Ci0gIEVYUEVDVF9GQUxTRShyZW50X2FfY29kZWMuUmVudEVuY29kZXIoY29kZWNfaW5zdCkp
OwotfQotCi1URVNUKFJlbnRBQ29kZWNUZXN0LCBSZW50RW5jb2RlclN0YWNrV2l0aG91dFNwZWVj
aEVuY29kZXIpIHsKLSAgUmVudEFDb2RlYzo6U3RhY2tQYXJhbWV0ZXJzIHNwOwotICBFWFBFQ1Rf
RVEobnVsbHB0ciwgc3Auc3BlZWNoX2VuY29kZXIpOwotICBFWFBFQ1RfRVEobnVsbHB0ciwgUmVu
dEFDb2RlYygpLlJlbnRFbmNvZGVyU3RhY2soJnNwKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBh
Y20yCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3
b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFwdG9yX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFwdG9yX2ltcGwuY2MKaW5kZXggYzQ4MzJh
MzZkZTRhNTU3ZTU3N2U2ZTVkNzM0NzYwNjA1OTgyODhlYy4uOWU0N2EwNmY3Y2FjOWMzYmRmYWZl
NTQ5ZjExNGMzNjk3ZmUzMjMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFw
dG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdv
cmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5jYwpAQCAtMTAsOSArMTAsMTQg
QEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRv
ci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5oIgogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAj
aW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29y
a19hZGFwdG9yL2NvbnRyb2xsZXJfbWFuYWdlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9kZWJ1Z19kdW1wX3dyaXRlci5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9ldmVudF9sb2df
d3JpdGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRf
dHJpYWwuaCIKIApAQCAtNDEsMTcgKzQ2LDcgQEAgQXVkaW9OZXR3b3JrQWRhcHRvckltcGw6OkF1
ZGlvTmV0d29ya0FkYXB0b3JJbXBsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrRXZlbnRMb2dNaW5CaXRyYXRlQ2hhbmdlQnBzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrRXZlbnRMb2dNaW5CaXRyYXRlQ2hhbmdlRnJhY3Rpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtFdmVudExvZ01pblBhY2tldExvc3NDaGFuZ2VGcmFj
dGlvbikKLSAgICAgICAgICAgICAgOiBudWxscHRyKSwKLSAgICAgIGVuYWJsZV9iaXRyYXRlX2Fk
YXB0YXRpb25fKAotICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2Vi
UlRDLUF1ZGlvLUJpdHJhdGVBZGFwdGF0aW9uIikpLAotICAgICAgZW5hYmxlX2R0eF9hZGFwdGF0
aW9uXygKLSAgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1B
dWRpby1EdHhBZGFwdGF0aW9uIikpLAotICAgICAgZW5hYmxlX2ZlY19hZGFwdGF0aW9uXygKLSAg
ICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BdWRpby1GZWNB
ZGFwdGF0aW9uIikpLAotICAgICAgZW5hYmxlX2NoYW5uZWxfYWRhcHRhdGlvbl8oCi0gICAgICAg
ICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tQ2hhbm5lbEFk
YXB0YXRpb24iKSksCi0gICAgICBlbmFibGVfZnJhbWVfbGVuZ3RoX2FkYXB0YXRpb25fKHdlYnJ0
Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgKLSAgICAgICAgICAiV2ViUlRDLUF1ZGlvLUZyYW1l
TGVuZ3RoQWRhcHRhdGlvbiIpKSB7CisgICAgICAgICAgICAgIDogbnVsbHB0cikgewogICBSVENf
RENIRUNLKGNvbnRyb2xsZXJfbWFuYWdlcl8pOwogfQogCkBAIC0xNTIsMjQgKzE0Nyw2IEBAIEF1
ZGlvRW5jb2RlclJ1bnRpbWVDb25maWcgQXVkaW9OZXR3b3JrQWRhcHRvckltcGw6OkdldEVuY29k
ZXJSdW50aW1lQ29uZmlnKCkgewogICB9CiAgIHByZXZfY29uZmlnXyA9IGNvbmZpZzsKIAotICAv
LyBQcmV2ZW50IGNlcnRhaW4gY29udHJvbGxlcnMgZnJvbSB0YWtpbmcgYWN0aW9uIChkZXRlcm1p
bmVkIGJ5IGZpZWxkIHRyaWFscykKLSAgaWYgKCFlbmFibGVfYml0cmF0ZV9hZGFwdGF0aW9uXyAm
JiBjb25maWcuYml0cmF0ZV9icHMpIHsKLSAgICBjb25maWcuYml0cmF0ZV9icHMucmVzZXQoKTsK
LSAgfQotICBpZiAoIWVuYWJsZV9kdHhfYWRhcHRhdGlvbl8gJiYgY29uZmlnLmVuYWJsZV9kdHgp
IHsKLSAgICBjb25maWcuZW5hYmxlX2R0eC5yZXNldCgpOwotICB9Ci0gIGlmICghZW5hYmxlX2Zl
Y19hZGFwdGF0aW9uXyAmJiBjb25maWcuZW5hYmxlX2ZlYykgewotICAgIGNvbmZpZy5lbmFibGVf
ZmVjLnJlc2V0KCk7Ci0gICAgY29uZmlnLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbi5yZXNl
dCgpOwotICB9Ci0gIGlmICghZW5hYmxlX2ZyYW1lX2xlbmd0aF9hZGFwdGF0aW9uXyAmJiBjb25m
aWcuZnJhbWVfbGVuZ3RoX21zKSB7Ci0gICAgY29uZmlnLmZyYW1lX2xlbmd0aF9tcy5yZXNldCgp
OwotICB9Ci0gIGlmICghZW5hYmxlX2NoYW5uZWxfYWRhcHRhdGlvbl8gJiYgY29uZmlnLm51bV9j
aGFubmVscykgewotICAgIGNvbmZpZy5udW1fY2hhbm5lbHMucmVzZXQoKTsKLSAgfQotCiAgIGlm
IChkZWJ1Z19kdW1wX3dyaXRlcl8pCiAgICAgZGVidWdfZHVtcF93cml0ZXJfLT5EdW1wRW5jb2Rl
clJ1bnRpbWVDb25maWcoY29uZmlnLCBydGM6OlRpbWVNaWxsaXMoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBs
LmgKaW5kZXggZTIwOGVkMjYwN2MzNDQ2MzJiYTc2NzE4ZmJmMDM0MjYzN2VhZTRhYy4uNGMxYzE5
YjdlYTI4Y2IxYzVlN2FkNzYwYmUwYTQxZWUxYWRkMDJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVk
aW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsLmgKQEAg
LTExLDE3ICsxMSwyMSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRX
T1JLX0FEQVBUT1JfQVVESU9fTkVUV09SS19BREFQVE9SX0lNUExfSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0FVRElPX05FVFdPUktfQURBUFRP
Ul9JTVBMX0hfCiAKKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2lu
Y2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2F1ZGlvX2VuY29kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9jb250cm9sbGVyX21hbmFnZXIuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZGVidWdfZHVtcF93
cml0ZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2Fk
YXB0b3IvZXZlbnRfbG9nX3dyaXRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvci5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNs
dWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
b25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBDb250cm9s
bGVyTWFuYWdlcjsKK2NsYXNzIEV2ZW50TG9nV3JpdGVyOwogY2xhc3MgUnRjRXZlbnRMb2c7CiAK
IGNsYXNzIEF1ZGlvTmV0d29ya0FkYXB0b3JJbXBsIGZpbmFsIDogcHVibGljIEF1ZGlvTmV0d29y
a0FkYXB0b3IgewpAQCAtNzksMTIgKzgzLDYgQEAgY2xhc3MgQXVkaW9OZXR3b3JrQWRhcHRvcklt
cGwgZmluYWwgOiBwdWJsaWMgQXVkaW9OZXR3b3JrQWRhcHRvciB7CiAKICAgQU5BU3RhdHMgc3Rh
dHNfOwogCi0gIGNvbnN0IGJvb2wgZW5hYmxlX2JpdHJhdGVfYWRhcHRhdGlvbl87Ci0gIGNvbnN0
IGJvb2wgZW5hYmxlX2R0eF9hZGFwdGF0aW9uXzsKLSAgY29uc3QgYm9vbCBlbmFibGVfZmVjX2Fk
YXB0YXRpb25fOwotICBjb25zdCBib29sIGVuYWJsZV9jaGFubmVsX2FkYXB0YXRpb25fOwotICBj
b25zdCBib29sIGVuYWJsZV9mcmFtZV9sZW5ndGhfYWRhcHRhdGlvbl87Ci0KICAgUlRDX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihBdWRpb05ldHdvcmtBZGFwdG9ySW1wbCk7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFwdG9y
X2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0
d29ya19hZGFwdG9yX2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggNTk0OGFjMzY0NDBkYTBmMDJjNGEy
ZmM1ZmFkZGMwNDdlZmEwMzk1NC4uYmU5NTUwYTdhNzYzZTVkZTM0NWNjMjA3M2UwYmM2NWFjYzVi
ODAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdv
cmtfYWRhcHRvcl9pbXBsX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRh
cHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbF91bml0dGVzdC5jYwpAQCAtNTEsNyArNTEs
NyBAQCBNQVRDSEVSX1AoSXNSdGNFdmVudEFuYUNvbmZpZ0VxdWFsVG8sIGNvbmZpZywgIiIpIHsK
ICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICAgYXV0byBhbmFfZXZlbnQgPSBzdGF0aWNfY2FzdDxS
dGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24qPihhcmcpOwotICByZXR1cm4gKmFuYV9ldmVu
dC0+Y29uZmlnXyA9PSBjb25maWc7CisgIHJldHVybiBhbmFfZXZlbnQtPmNvbmZpZygpID09IGNv
bmZpZzsKIH0KIAogTUFUQ0hFUl9QKEVuY29kZXJSdW50aW1lQ29uZmlnSXMsIGNvbmZpZywgIiIp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9iaXRyYXRlX2NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9iaXRyYXRlX2NvbnRyb2xsZXIu
aAppbmRleCAyODJmNTk5YjZkYTMwMjU1NDdjNTAyMGFlZDdmZDI1OWNiZDZkYmUwLi42YjYzMzBi
MDMwMTUyYjIxZTJlZDgyMDU1ODJkNzc3NDBmYzI2ZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRp
b19uZXR3b3JrX2FkYXB0b3IvYml0cmF0ZV9jb250cm9sbGVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9f
bmV0d29ya19hZGFwdG9yL2JpdHJhdGVfY29udHJvbGxlci5oCkBAIC0xMSw3ICsxMSwxMSBAQAog
I2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1JfQklUUkFU
RV9DT05UUk9MTEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElPX05FVFdP
UktfQURBUFRPUl9CSVRSQVRFX0NPTlRST0xMRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgor
CisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9jb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9f
bmV0d29ya19hZGFwdG9yX2NvbmZpZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvY2hhbm5lbF9jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3Jr
X2FkYXB0b3IvY2hhbm5lbF9jb250cm9sbGVyLmgKaW5kZXggMjNjYmVmNjYzYjRmYmZjNTU1MWMy
MzcyNzhlNTBmMjcxZTVkZWFjMS4uMGQ3NzViMWM3N2YxYzk3MzExNDY3ZDc4OTdiYWY4OWVhNDQ3
YjdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2NoYW5uZWxfY29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9jaGFubmVsX2NvbnRy
b2xsZXIuaApAQCAtMTEsNyArMTEsMTEgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdf
QVVESU9fTkVUV09SS19BREFQVE9SX0NIQU5ORUxfQ09OVFJPTExFUl9IXwogI2RlZmluZSBNT0RV
TEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1JfQ0hBTk5FTF9DT05UUk9MTEVS
X0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9u
YWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0
b3IvY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2RlYnVnX2R1bXBfd3Jp
dGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2RlYnVnX2R1bXBfd3JpdGVyLmNj
CmluZGV4IDgxODM2MmVkMGRhN2VhM2EzYTdjZjdhMzM5YWIyNjdhNjAzN2QwMzUuLjhlMDRlOGVh
ZmM5MzcxZjFmZjM1NDcxOTA2Yjg3ZmQ5MmIzMDVhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlv
X25ldHdvcmtfYWRhcHRvci9kZWJ1Z19kdW1wX3dyaXRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvZGVidWdfZHVtcF93cml0ZXIuY2MKQEAgLTEwLDEwICsxMCwxMiBAQAog
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2Rl
YnVnX2R1bXBfd3JpdGVyLmgiCiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvaWdub3JlX3d1
bmRlZi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9wcm90b2J1Zl91dGlscy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3N5c3RlbS9maWxlX3dyYXBwZXIuaCIKIAogI2lmIFdFQlJUQ19FTkFCTEVfUFJPVE9CVUYKIFJU
Q19QVVNIX0lHTk9SSU5HX1dVTkRFRigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3Jr
X2FkYXB0b3IvZHR4X2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9k
dHhfY29udHJvbGxlci5oCmluZGV4IGZiNDBkYjI4YjIwY2NhNzNlOTU5MzIyZjQyZDRkNGRiYTg3
YWZjZDAuLmQzMzM0ZWNhOWVmMDAxYjUyODQwYzRiZjUwN2ZmZjBlMmNmZDEwZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9kdHhfY29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9kdHhfY29udHJvbGxlci5oCkBAIC0xMSw3ICsxMSw5
IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElPX05FVFdPUktfQURBUFRPUl9E
VFhfQ09OVFJPTExFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRX
T1JLX0FEQVBUT1JfRFRYX0NPTlRST0xMRVJfSF8KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2Fk
YXB0b3IvY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlv
X25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193
cml0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlci5j
YwppbmRleCA0YTkyMzQzZDk2ODhiZDA5YWFmOThlMzUyMGE2MTU3OWQzMDk2MDMzLi43OTI1Yjg5
MTI3NzUwMWRlMGRjNjJiNzA0ZTk5ZDU5OThjNDhkNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRp
b19uZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlci5jYwpAQCAtOSwxMyArOSwxNyBAQAogICov
CiAKICNpbmNsdWRlIDxtYXRoLmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8
Y3N0ZGxpYj4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImxvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLmgi
CiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9n
X3dyaXRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xv
Z193cml0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9ldmVudF9sb2dfd3JpdGVy
LmgKaW5kZXggZmNhOGU1M2I2NjRiZjFiZjNkZTg5ZTUwZTk4YTgyZThiMDkwOTI2Ny4uNzJiNTI0
NWUxMTVhNmZmZDUwMjA1ZDEwYTNjOGNiYTllMWRjODk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVk
aW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlci5oCkBAIC0xMSw3ICsxMSw3IEBACiAjaWZu
ZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElPX05FVFdPUktfQURBUFRPUl9FVkVOVF9MT0df
V1JJVEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElPX05FVFdPUktfQURB
UFRPUl9FVkVOVF9MT0dfV1JJVEVSX0hfCiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3IuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5j
bHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9ldmVudF9sb2dfd3JpdGVyX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXJfdW5pdHRlc3QuY2MK
aW5kZXggZGY5NzU5NDdjYTEzYTFmNDNhYzhjZWI4ZTc1YTViZjRjY2Q1MjQ0Ni4uNDIxODljM2Ux
MWMzMjFmYTAzNjM5YTY3M2RjYTIyMzA2Nzc5ZTBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9f
bmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
YXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXJfdW5pdHRlc3QuY2MKQEAgLTM2
LDcgKzM2LDcgQEAgTUFUQ0hFUl9QKElzUnRjRXZlbnRBbmFDb25maWdFcXVhbFRvLCBjb25maWcs
ICIiKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIGF1dG8gYW5hX2V2ZW50ID0gc3RhdGlj
X2Nhc3Q8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKj4oYXJnKTsKLSAgcmV0dXJuICph
bmFfZXZlbnQtPmNvbmZpZ18gPT0gY29uZmlnOworICByZXR1cm4gYW5hX2V2ZW50LT5jb25maWco
KSA9PSBjb25maWc7CiB9CiAKIHN0cnVjdCBFdmVudExvZ1dyaXRlclN0YXRlcyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJfcGxyX2Jhc2Vk
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVyX3Bscl9iYXNl
ZC5jYwppbmRleCA3YWI3MmM5NDM3ZTM3MjE5ZDI0ZmQxZTBhMTI3OTlkNGI1ZDg3ZDg4Li45MzZl
MjI0MjlhYzg4ODU0ZmNkNzJlY2E3NTIxN2U3ZDMyNmFhMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9h
dWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJfcGxyX2Jhc2VkLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9wbHJfYmFzZWQuY2MKQEAg
LTEwLDcgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9wbHJfYmFzZWQuaCIKIAotI2luY2x1ZGUgPGxp
bWl0cz4KKyNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFw
dG9yL2ZlY19jb250cm9sbGVyX3Bscl9iYXNlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFw
dG9yL2ZlY19jb250cm9sbGVyX3Bscl9iYXNlZC5oCmluZGV4IGI2Njg4M2VmNTUyZTUxNGIwMzhl
ODJiMjVlNGQ2ZGM5NzI3YzY0YWQuLmI3ZDNkNTYxNzNlNmJhOGRlMmQ2Y2IzNTIwM2I5Y2UzMWJk
MzdlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJv
bGxlcl9wbHJfYmFzZWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2Nv
bnRyb2xsZXJfcGxyX2Jhc2VkLmgKQEAgLTEzLDggKzEzLDEwIEBACiAKICNpbmNsdWRlIDxtZW1v
cnk+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiY29tbW9u
X2F1ZGlvL3Ntb290aGluZ19maWx0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtf
YWRhcHRvcl9jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvdXRpbC90aHJlc2hvbGRfY3VydmUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtf
YWRhcHRvci9mZWNfY29udHJvbGxlcl9ycGxyX2Jhc2VkLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29y
a19hZGFwdG9yL2ZlY19jb250cm9sbGVyX3JwbHJfYmFzZWQuY2MKaW5kZXggYzhjZmQzMTYwN2M0
NmUzMGE0Y2VmYzVhNDFmYzM0OTQ1N2IyNjQxNC4uNmMzMGI4ZjJjMDc0M2U3NDAwOGU2YTIyZDQx
ZTYwMThhOGMwMzNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2Zl
Y19jb250cm9sbGVyX3JwbHJfYmFzZWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFw
dG9yL2ZlY19jb250cm9sbGVyX3JwbHJfYmFzZWQuY2MKQEAgLTEwLDkgKzEwLDYgQEAKIAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29u
dHJvbGxlcl9ycGxyX2Jhc2VkLmgiCiAKLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8dXRp
bGl0eT4KLQogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxl
cl9ycGxyX2Jhc2VkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xs
ZXJfcnBscl9iYXNlZC5oCmluZGV4IDlhM2MzN2MzZDFkOGNlMDZjMjA4YWY3MjcyMGZhN2QxNjg2
YTFlMTMuLjQyMWNiNzBhYmQxOGJhYWFiY2ZjNmEwZmFkZjQzNzY0Zjg3YjA1ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9ycGxyX2Jhc2Vk
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVyX3JwbHJf
YmFzZWQuaApAQCAtMTEsOSArMTEsOSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19B
VURJT19ORVRXT1JLX0FEQVBUT1JfRkVDX0NPTlRST0xMRVJfUlBMUl9CQVNFRF9IXwogI2RlZmlu
ZSBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1JfRkVDX0NPTlRST0xM
RVJfUlBMUl9CQVNFRF9IXwogCi0jaW5jbHVkZSA8bWVtb3J5PgotCisjaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9jb250cm9sbGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2Nv
bmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRh
cHRvci91dGlsL3RocmVzaG9sZF9jdXJ2ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVj
dG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2Zy
YW1lX2xlbmd0aF9jb250cm9sbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2Zy
YW1lX2xlbmd0aF9jb250cm9sbGVyLmNjCmluZGV4IDQwZTk3Y2IzNzFlNDNjMjcwZjc3MWVjZjA2
MGUxZjBlNjM2MTVmMDIuLmIxMjNjN2M3MGVkNWU4N2Y4MjU4NjNjMDlhMmMzZmE2ODY2NjRmZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mcmFtZV9sZW5ndGhfY29u
dHJvbGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZnJhbWVfbGVuZ3Ro
X2NvbnRyb2xsZXIuY2MKQEAgLTExLDEwICsxMSwxMCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mcmFtZV9sZW5ndGhfY29udHJvbGxlci5o
IgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZnJhbWVfbGVuZ3RoX2NvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mcmFtZV9sZW5ndGhfY29udHJvbGxlci5oCmluZGV4IGYw
ODRmZDAzODJmMTYwNzk1OWQwYzAxOGM1ZGY0MmI2OTViYWI5MjYuLmYwYTVhYWJhOWEyYTZhMmE3
ZDQ2NTM3NTY0MDA0MTRhNmUxYjhlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtf
YWRhcHRvci9mcmFtZV9sZW5ndGhfY29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdv
cmtfYWRhcHRvci9mcmFtZV9sZW5ndGhfY29udHJvbGxlci5oCkBAIC0xMSwxMCArMTEsMTMgQEAK
ICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0ZSQU1F
X0xFTkdUSF9DT05UUk9MTEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElP
X05FVFdPUktfQURBUFRPUl9GUkFNRV9MRU5HVEhfQ09OVFJPTExFUl9IXwogCisjaW5jbHVkZSA8
c3RkZGVmLmg+CiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9h
dWRpb19uZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRh
cHRvcl9jb25maWcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFw
dG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9f
bmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oCmlu
ZGV4IDI1N2E3OWFmMThkOTE5NGYxZDAwNjVlYjBhYWRkOGMzOTY4OTM5MGMuLjk0ZThlZDk2MWU3
ZTY4M2JmMGQ4OWJlNTdiMTBlMmJlMzQ3Y2VmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0
b3JfY29uZmlnLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJ
TkdfQVVESU9fTkVUV09SS19BREFQVE9SX0lOQ0xVREVfQVVESU9fTkVUV09SS19BREFQVE9SX0NP
TkZJR19IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBU
T1JfSU5DTFVERV9BVURJT19ORVRXT1JLX0FEQVBUT1JfQ09ORklHX0hfCiAKKyNpbmNsdWRlIDxz
dGRkZWYuaD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvYXVkaW9fZm9ybWF0X2NvbnZlcnNp
b24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvYXVkaW9fZm9ybWF0X2NvbnZlcnNpb24uY2MKaW5kZXggZTM4
YWEzMzMzNTA1Yzc2NDIwZmI1NGY3ODkyZWY2NDk3Zjg3ZmNmMS4uZjA2ODMwMWFkZjkxNjg1NzZj
YjExMzA2ZmRiY2ZmYTcxZTU2NDU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2F1ZGlvX2Zv
cm1hdF9jb252ZXJzaW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9hdWRpb19mb3JtYXRfY29udmVy
c2lvbi5jYwpAQCAtMTEsMTEgKzExLDEyIEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL2F1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcu
aD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAotI2luY2x1ZGUgImFi
c2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNp
bmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zYW5pdGl6ZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC00MSwxMSAr
NDIsMTEgQEAgQ29kZWNJbnN0IE1ha2VDb2RlY0luc3QoaW50IHBheWxvYWRfdHlwZSwKIH0gIC8v
IG5hbWVzcGFjZQogCiBTZHBBdWRpb0Zvcm1hdCBDb2RlY0luc3RUb1NkcChjb25zdCBDb2RlY0lu
c3QmIGNpKSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoY2kucGxuYW1lLCAiZzcyMiIpID09IDApIHsK
KyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY2kucGxuYW1lLCAiZzcyMiIpKSB7CiAgICAg
UlRDX0NIRUNLX0VRKDE2MDAwLCBjaS5wbGZyZXEpOwogICAgIFJUQ19DSEVDSyhjaS5jaGFubmVs
cyA9PSAxIHx8IGNpLmNoYW5uZWxzID09IDIpOwogICAgIHJldHVybiB7Imc3MjIiLCA4MDAwLCBj
aS5jaGFubmVsc307Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKGNpLnBsbmFtZSwgIm9wdXMi
KSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjaS5wbG5hbWUs
ICJvcHVzIikpIHsKICAgICBSVENfQ0hFQ0tfRVEoNDgwMDAsIGNpLnBsZnJlcSk7CiAgICAgUlRD
X0NIRUNLKGNpLmNoYW5uZWxzID09IDEgfHwgY2kuY2hhbm5lbHMgPT0gMik7CiAgICAgcmV0dXJu
IGNpLmNoYW5uZWxzID09IDEKQEAgLTU3LDEyICs1OCwxMiBAQCBTZHBBdWRpb0Zvcm1hdCBDb2Rl
Y0luc3RUb1NkcChjb25zdCBDb2RlY0luc3QmIGNpKSB7CiB9CiAKIENvZGVjSW5zdCBTZHBUb0Nv
ZGVjSW5zdChpbnQgcGF5bG9hZF90eXBlLCBjb25zdCBTZHBBdWRpb0Zvcm1hdCYgYXVkaW9fZm9y
bWF0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoYXVkaW9fZm9ybWF0Lm5hbWUuY19zdHIoKSwgImc3
MjIiKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGF1ZGlvX2Zvcm1hdC5u
YW1lLCAiZzcyMiIpKSB7CiAgICAgUlRDX0NIRUNLX0VRKDgwMDAsIGF1ZGlvX2Zvcm1hdC5jbG9j
a3JhdGVfaHopOwogICAgIFJUQ19DSEVDSyhhdWRpb19mb3JtYXQubnVtX2NoYW5uZWxzID09IDEg
fHwgYXVkaW9fZm9ybWF0Lm51bV9jaGFubmVscyA9PSAyKTsKICAgICByZXR1cm4gTWFrZUNvZGVj
SW5zdChwYXlsb2FkX3R5cGUsICJnNzIyIiwgMTYwMDAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXVkaW9fZm9ybWF0Lm51bV9jaGFubmVscyk7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01Q
KGF1ZGlvX2Zvcm1hdC5uYW1lLmNfc3RyKCksICJvcHVzIikgPT0gMCkgeworICB9IGVsc2UgaWYg
KGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoYXVkaW9fZm9ybWF0Lm5hbWUsICJvcHVzIikpIHsKICAg
ICBSVENfQ0hFQ0tfRVEoNDgwMDAsIGF1ZGlvX2Zvcm1hdC5jbG9ja3JhdGVfaHopOwogICAgIFJU
Q19DSEVDS19FUSgyLCBhdWRpb19mb3JtYXQubnVtX2NoYW5uZWxzKTsKICAgICBjb25zdCBpbnQg
bnVtX2NoYW5uZWxzID0gWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9f
ZW5jb2Rlcl9jbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjCmlu
ZGV4IDA1NTE5MDQ5N2E1NGMyODQzNmVkNDAxMjk1ZDJhMDE1MTZlZTQzNjAuLjQ3Njk1NGZlNjBk
MDZkMDQ3OGNiYjViZDQ3ZDI3ZDNjODlkOWNlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9j
bmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNv
ZGVyX2NuZy5jYwpAQCAtMTAsNDAgKzEwLDcyIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmgiCiAKLSNpbmNsdWRlIDxhbGdv
cml0aG0+Ci0jaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1v
cnkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL3dlYnJ0Y19j
bmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKIG5hbWVzcGFjZSB7CiAKIGNvbnN0IGludCBrTWF4RnJhbWVTaXplTXMgPSA2MDsKIAotfSAg
Ly8gbmFtZXNwYWNlCi0KLUF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnOjpDb25maWcoKSA9IGRlZmF1
bHQ7Ci1BdWRpb0VuY29kZXJDbmc6OkNvbmZpZzo6Q29uZmlnKENvbmZpZyYmKSA9IGRlZmF1bHQ7
Ci1BdWRpb0VuY29kZXJDbmc6OkNvbmZpZzo6fkNvbmZpZygpID0gZGVmYXVsdDsKLQotYm9vbCBB
dWRpb0VuY29kZXJDbmc6OkNvbmZpZzo6SXNPaygpIGNvbnN0IHsKLSAgaWYgKG51bV9jaGFubmVs
cyAhPSAxKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKCFzcGVlY2hfZW5jb2RlcikKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0gIGlmIChudW1fY2hhbm5lbHMgIT0gc3BlZWNoX2VuY29kZXItPk51bUNo
YW5uZWxzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoc2lkX2ZyYW1lX2ludGVydmFsX21z
IDwKLSAgICAgIHN0YXRpY19jYXN0PGludD4oc3BlZWNoX2VuY29kZXItPk1heDEwTXNGcmFtZXNJ
bkFQYWNrZXQoKSAqIDEwKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChudW1fY25nX2NvZWZm
aWNpZW50cyA+IFdFQlJUQ19DTkdfTUFYX0xQQ19PUkRFUiB8fAotICAgICAgbnVtX2NuZ19jb2Vm
ZmljaWVudHMgPD0gMCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVlOwotfQotCi1B
dWRpb0VuY29kZXJDbmc6OkF1ZGlvRW5jb2RlckNuZyhDb25maWcmJiBjb25maWcpCitjbGFzcyBB
dWRpb0VuY29kZXJDbmcgZmluYWwgOiBwdWJsaWMgQXVkaW9FbmNvZGVyIHsKKyBwdWJsaWM6Cisg
IGV4cGxpY2l0IEF1ZGlvRW5jb2RlckNuZyhBdWRpb0VuY29kZXJDbmdDb25maWcmJiBjb25maWcp
OworICB+QXVkaW9FbmNvZGVyQ25nKCkgb3ZlcnJpZGU7CisKKyAgLy8gTm90IGNvcHlhYmxlIG9y
IG1vdmVhYmxlLgorICBBdWRpb0VuY29kZXJDbmcoY29uc3QgQXVkaW9FbmNvZGVyQ25nJikgPSBk
ZWxldGU7CisgIEF1ZGlvRW5jb2RlckNuZyhBdWRpb0VuY29kZXJDbmcmJikgPSBkZWxldGU7Cisg
IEF1ZGlvRW5jb2RlckNuZyYgb3BlcmF0b3I9KGNvbnN0IEF1ZGlvRW5jb2RlckNuZyYpID0gZGVs
ZXRlOworICBBdWRpb0VuY29kZXJDbmcmIG9wZXJhdG9yPShBdWRpb0VuY29kZXJDbmcmJikgPSBk
ZWxldGU7CisKKyAgaW50IFNhbXBsZVJhdGVIeigpIGNvbnN0IG92ZXJyaWRlOworICBzaXplX3Qg
TnVtQ2hhbm5lbHMoKSBjb25zdCBvdmVycmlkZTsKKyAgaW50IFJ0cFRpbWVzdGFtcFJhdGVIeigp
IGNvbnN0IG92ZXJyaWRlOworICBzaXplX3QgTnVtMTBNc0ZyYW1lc0luTmV4dFBhY2tldCgpIGNv
bnN0IG92ZXJyaWRlOworICBzaXplX3QgTWF4MTBNc0ZyYW1lc0luQVBhY2tldCgpIGNvbnN0IG92
ZXJyaWRlOworICBpbnQgR2V0VGFyZ2V0Qml0cmF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICBFbmNv
ZGVkSW5mbyBFbmNvZGVJbXBsKHVpbnQzMl90IHJ0cF90aW1lc3RhbXAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgaW50MTZfdD4gYXVkaW8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgcnRjOjpCdWZmZXIqIGVuY29kZWQpIG92ZXJyaWRlOworICB2b2lk
IFJlc2V0KCkgb3ZlcnJpZGU7CisgIGJvb2wgU2V0RmVjKGJvb2wgZW5hYmxlKSBvdmVycmlkZTsK
KyAgYm9vbCBTZXREdHgoYm9vbCBlbmFibGUpIG92ZXJyaWRlOworICBib29sIFNldEFwcGxpY2F0
aW9uKEFwcGxpY2F0aW9uIGFwcGxpY2F0aW9uKSBvdmVycmlkZTsKKyAgdm9pZCBTZXRNYXhQbGF5
YmFja1JhdGUoaW50IGZyZXF1ZW5jeV9oeikgb3ZlcnJpZGU7CisgIHJ0Yzo6QXJyYXlWaWV3PHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+PiBSZWNsYWltQ29udGFpbmVkRW5jb2RlcnMoKQor
ICAgICAgb3ZlcnJpZGU7CisgIHZvaWQgT25SZWNlaXZlZFVwbGlua1BhY2tldExvc3NGcmFjdGlv
bigKKyAgICAgIGZsb2F0IHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbikgb3ZlcnJpZGU7Cisg
IHZvaWQgT25SZWNlaXZlZFVwbGlua1JlY292ZXJhYmxlUGFja2V0TG9zc0ZyYWN0aW9uKAorICAg
ICAgZmxvYXQgdXBsaW5rX3JlY292ZXJhYmxlX3BhY2tldF9sb3NzX2ZyYWN0aW9uKSBvdmVycmlk
ZTsKKyAgdm9pZCBPblJlY2VpdmVkVXBsaW5rQmFuZHdpZHRoKAorICAgICAgaW50IHRhcmdldF9h
dWRpb19iaXRyYXRlX2JwcywKKyAgICAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGJ3ZV9wZXJp
b2RfbXMpIG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgRW5jb2RlZEluZm8gRW5jb2RlUGFzc2l2
ZShzaXplX3QgZnJhbWVzX3RvX2VuY29kZSwgcnRjOjpCdWZmZXIqIGVuY29kZWQpOworICBFbmNv
ZGVkSW5mbyBFbmNvZGVBY3RpdmUoc2l6ZV90IGZyYW1lc190b19lbmNvZGUsIHJ0Yzo6QnVmZmVy
KiBlbmNvZGVkKTsKKyAgc2l6ZV90IFNhbXBsZXNQZXIxMG1zRnJhbWUoKSBjb25zdDsKKworICBz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBzcGVlY2hfZW5jb2Rlcl87CisgIGNvbnN0IGlu
dCBjbmdfcGF5bG9hZF90eXBlXzsKKyAgY29uc3QgaW50IG51bV9jbmdfY29lZmZpY2llbnRzXzsK
KyAgY29uc3QgaW50IHNpZF9mcmFtZV9pbnRlcnZhbF9tc187CisgIHN0ZDo6dmVjdG9yPGludDE2
X3Q+IHNwZWVjaF9idWZmZXJfOworICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gcnRwX3RpbWVzdGFt
cHNfOworICBib29sIGxhc3RfZnJhbWVfYWN0aXZlXzsKKyAgc3RkOjp1bmlxdWVfcHRyPFZhZD4g
dmFkXzsKKyAgc3RkOjp1bmlxdWVfcHRyPENvbWZvcnROb2lzZUVuY29kZXI+IGNuZ19lbmNvZGVy
XzsKK307CisKK0F1ZGlvRW5jb2RlckNuZzo6QXVkaW9FbmNvZGVyQ25nKEF1ZGlvRW5jb2RlckNu
Z0NvbmZpZyYmIGNvbmZpZykKICAgICA6IHNwZWVjaF9lbmNvZGVyXygoc3RhdGljX2Nhc3Q8dm9p
ZD4oWyZdIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBSVENfQ0hFQ0soY29uZmlnLklzT2so
KSkgPDwgIkludmFsaWQgY29uZmlndXJhdGlvbi4iOwogICAgICAgICAgICAgICAgICAgICAgICB9
KCkpLApAQCAtMjYxLDQgKzI5MywzMSBAQCBzaXplX3QgQXVkaW9FbmNvZGVyQ25nOjpTYW1wbGVz
UGVyMTBtc0ZyYW1lKCkgY29uc3QgewogICByZXR1cm4gcnRjOjpDaGVja2VkRGl2RXhhY3QoMTAg
KiBTYW1wbGVSYXRlSHooKSwgMTAwMCk7CiB9CiAKK30gIC8vIG5hbWVzcGFjZQorCitBdWRpb0Vu
Y29kZXJDbmdDb25maWc6OkF1ZGlvRW5jb2RlckNuZ0NvbmZpZygpID0gZGVmYXVsdDsKK0F1ZGlv
RW5jb2RlckNuZ0NvbmZpZzo6QXVkaW9FbmNvZGVyQ25nQ29uZmlnKEF1ZGlvRW5jb2RlckNuZ0Nv
bmZpZyYmKSA9IGRlZmF1bHQ7CitBdWRpb0VuY29kZXJDbmdDb25maWc6On5BdWRpb0VuY29kZXJD
bmdDb25maWcoKSA9IGRlZmF1bHQ7CisKK2Jvb2wgQXVkaW9FbmNvZGVyQ25nQ29uZmlnOjpJc09r
KCkgY29uc3QgeworICBpZiAobnVtX2NoYW5uZWxzICE9IDEpCisgICAgcmV0dXJuIGZhbHNlOwor
ICBpZiAoIXNwZWVjaF9lbmNvZGVyKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKG51bV9jaGFu
bmVscyAhPSBzcGVlY2hfZW5jb2Rlci0+TnVtQ2hhbm5lbHMoKSkKKyAgICByZXR1cm4gZmFsc2U7
CisgIGlmIChzaWRfZnJhbWVfaW50ZXJ2YWxfbXMgPAorICAgICAgc3RhdGljX2Nhc3Q8aW50Pihz
cGVlY2hfZW5jb2Rlci0+TWF4MTBNc0ZyYW1lc0luQVBhY2tldCgpICogMTApKQorICAgIHJldHVy
biBmYWxzZTsKKyAgaWYgKG51bV9jbmdfY29lZmZpY2llbnRzID4gV0VCUlRDX0NOR19NQVhfTFBD
X09SREVSIHx8CisgICAgICBudW1fY25nX2NvZWZmaWNpZW50cyA8PSAwKQorICAgIHJldHVybiBm
YWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+
IENyZWF0ZUNvbWZvcnROb2lzZUVuY29kZXIoCisgICAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnJiYg
Y29uZmlnKSB7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJDbmc+KHN0
ZDo6bW92ZShjb25maWcpKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2Nu
Zy9hdWRpb19lbmNvZGVyX2NuZy5oCmluZGV4IGU0YzY1MDc3NjUxYzA1MzZlYzIzZTBjOWNlYmM5
OTU5NWZhNDc0YzMuLjJlZjMyMzY0YzdlYTlkZjRlYzE2ODc0YjExMjAwNTU5OWY2MjA4Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmgKQEAgLTExLDg2ICsxMSwzOCBAQAogI2lm
bmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfQ05HX0FVRElPX0VOQ09ERVJfQ05HX0hf
CiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19DTkdfQVVESU9fRU5DT0RFUl9D
TkdfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRl
IDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuaCIK
ICNpbmNsdWRlICJjb21tb25fYXVkaW8vdmFkL2luY2x1ZGUvdmFkLmgiCi0jaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3Mg
VmFkOwotCi1jbGFzcyBBdWRpb0VuY29kZXJDbmcgZmluYWwgOiBwdWJsaWMgQXVkaW9FbmNvZGVy
IHsKLSBwdWJsaWM6Ci0gIHN0cnVjdCBDb25maWcgewotICAgIENvbmZpZygpOwotICAgIENvbmZp
ZyhDb25maWcmJik7Ci0gICAgfkNvbmZpZygpOwotICAgIGJvb2wgSXNPaygpIGNvbnN0OwotCi0g
ICAgc2l6ZV90IG51bV9jaGFubmVscyA9IDE7Ci0gICAgaW50IHBheWxvYWRfdHlwZSA9IDEzOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IHNwZWVjaF9lbmNvZGVyOwotICAgIFZh
ZDo6QWdncmVzc2l2ZW5lc3MgdmFkX21vZGUgPSBWYWQ6OmtWYWROb3JtYWw7Ci0gICAgaW50IHNp
ZF9mcmFtZV9pbnRlcnZhbF9tcyA9IDEwMDsKLSAgICBpbnQgbnVtX2NuZ19jb2VmZmljaWVudHMg
PSA4OwotICAgIC8vIFRoZSBWYWQgcG9pbnRlciBpcyBtYWlubHkgZm9yIHRlc3RpbmcuIElmIGEg
TlVMTCBwb2ludGVyIGlzIHBhc3NlZCwgdGhlCi0gICAgLy8gQXVkaW9FbmNvZGVyQ25nIGNyZWF0
ZXMgKGFuZCBkZXN0cm95cykgYSBWYWQgb2JqZWN0IGludGVybmFsbHkuIElmIGFuCi0gICAgLy8g
b2JqZWN0IGlzIHBhc3NlZCwgdGhlIEF1ZGlvRW5jb2RlckNuZyBhc3N1bWVzIG93bmVyc2hpcCBv
ZiB0aGUgVmFkCi0gICAgLy8gb2JqZWN0LgotICAgIFZhZCogdmFkID0gbnVsbHB0cjsKLSAgfTsK
LQotICBleHBsaWNpdCBBdWRpb0VuY29kZXJDbmcoQ29uZmlnJiYgY29uZmlnKTsKLSAgfkF1ZGlv
RW5jb2RlckNuZygpIG92ZXJyaWRlOwotCi0gIGludCBTYW1wbGVSYXRlSHooKSBjb25zdCBvdmVy
cmlkZTsKLSAgc2l6ZV90IE51bUNoYW5uZWxzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGludCBSdHBU
aW1lc3RhbXBSYXRlSHooKSBjb25zdCBvdmVycmlkZTsKLSAgc2l6ZV90IE51bTEwTXNGcmFtZXNJ
bk5leHRQYWNrZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgc2l6ZV90IE1heDEwTXNGcmFtZXNJbkFQ
YWNrZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgaW50IEdldFRhcmdldEJpdHJhdGUoKSBjb25zdCBv
dmVycmlkZTsKLSAgRW5jb2RlZEluZm8gRW5jb2RlSW1wbCh1aW50MzJfdCBydHBfdGltZXN0YW1w
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGludDE2X3Q+
IGF1ZGlvLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QnVmZmVyKiBlbmNvZGVkKSBv
dmVycmlkZTsKLSAgdm9pZCBSZXNldCgpIG92ZXJyaWRlOwotICBib29sIFNldEZlYyhib29sIGVu
YWJsZSkgb3ZlcnJpZGU7Ci0gIGJvb2wgU2V0RHR4KGJvb2wgZW5hYmxlKSBvdmVycmlkZTsKLSAg
Ym9vbCBTZXRBcHBsaWNhdGlvbihBcHBsaWNhdGlvbiBhcHBsaWNhdGlvbikgb3ZlcnJpZGU7Ci0g
IHZvaWQgU2V0TWF4UGxheWJhY2tSYXRlKGludCBmcmVxdWVuY3lfaHopIG92ZXJyaWRlOwotICBy
dGM6OkFycmF5VmlldzxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPj4gUmVjbGFpbUNvbnRh
aW5lZEVuY29kZXJzKCkKLSAgICAgIG92ZXJyaWRlOwotICB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtQ
YWNrZXRMb3NzRnJhY3Rpb24oCi0gICAgICBmbG9hdCB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rp
b24pIG92ZXJyaWRlOwotICB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtSZWNvdmVyYWJsZVBhY2tldExv
c3NGcmFjdGlvbigKLSAgICAgIGZsb2F0IHVwbGlua19yZWNvdmVyYWJsZV9wYWNrZXRfbG9zc19m
cmFjdGlvbikgb3ZlcnJpZGU7Ci0gIHZvaWQgT25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aCgKLSAg
ICAgIGludCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMsCi0gICAgICBhYnNsOjpvcHRpb25hbDxp
bnQ2NF90PiBid2VfcGVyaW9kX21zKSBvdmVycmlkZTsKLQotIHByaXZhdGU6Ci0gIEVuY29kZWRJ
bmZvIEVuY29kZVBhc3NpdmUoc2l6ZV90IGZyYW1lc190b19lbmNvZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnRjOjpCdWZmZXIqIGVuY29kZWQpOwotICBFbmNvZGVkSW5mbyBFbmNv
ZGVBY3RpdmUoc2l6ZV90IGZyYW1lc190b19lbmNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBydGM6OkJ1ZmZlciogZW5jb2RlZCk7Ci0gIHNpemVfdCBTYW1wbGVzUGVyMTBtc0ZyYW1l
KCkgY29uc3Q7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gc3BlZWNoX2VuY29k
ZXJfOwotICBjb25zdCBpbnQgY25nX3BheWxvYWRfdHlwZV87Ci0gIGNvbnN0IGludCBudW1fY25n
X2NvZWZmaWNpZW50c187Ci0gIGNvbnN0IGludCBzaWRfZnJhbWVfaW50ZXJ2YWxfbXNfOwotICBz
dGQ6OnZlY3RvcjxpbnQxNl90PiBzcGVlY2hfYnVmZmVyXzsKLSAgc3RkOjp2ZWN0b3I8dWludDMy
X3Q+IHJ0cF90aW1lc3RhbXBzXzsKLSAgYm9vbCBsYXN0X2ZyYW1lX2FjdGl2ZV87Ci0gIHN0ZDo6
dW5pcXVlX3B0cjxWYWQ+IHZhZF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxDb21mb3J0Tm9pc2VFbmNv
ZGVyPiBjbmdfZW5jb2Rlcl87Ci0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihBdWRp
b0VuY29kZXJDbmcpOworc3RydWN0IEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyB7CisgIC8vIE1vdmVh
YmxlLCBub3QgY29weWFibGUuCisgIEF1ZGlvRW5jb2RlckNuZ0NvbmZpZygpOworICBBdWRpb0Vu
Y29kZXJDbmdDb25maWcoQXVkaW9FbmNvZGVyQ25nQ29uZmlnJiYpOworICB+QXVkaW9FbmNvZGVy
Q25nQ29uZmlnKCk7CisKKyAgYm9vbCBJc09rKCkgY29uc3Q7CisKKyAgc2l6ZV90IG51bV9jaGFu
bmVscyA9IDE7CisgIGludCBwYXlsb2FkX3R5cGUgPSAxMzsKKyAgc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvRW5jb2Rlcj4gc3BlZWNoX2VuY29kZXI7CisgIFZhZDo6QWdncmVzc2l2ZW5lc3MgdmFkX21v
ZGUgPSBWYWQ6OmtWYWROb3JtYWw7CisgIGludCBzaWRfZnJhbWVfaW50ZXJ2YWxfbXMgPSAxMDA7
CisgIGludCBudW1fY25nX2NvZWZmaWNpZW50cyA9IDg7CisgIC8vIFRoZSBWYWQgcG9pbnRlciBp
cyBtYWlubHkgZm9yIHRlc3RpbmcuIElmIGEgTlVMTCBwb2ludGVyIGlzIHBhc3NlZCwgdGhlCisg
IC8vIEF1ZGlvRW5jb2RlckNuZyBjcmVhdGVzIChhbmQgZGVzdHJveXMpIGEgVmFkIG9iamVjdCBp
bnRlcm5hbGx5LiBJZiBhbgorICAvLyBvYmplY3QgaXMgcGFzc2VkLCB0aGUgQXVkaW9FbmNvZGVy
Q25nIGFzc3VtZXMgb3duZXJzaGlwIG9mIHRoZSBWYWQKKyAgLy8gb2JqZWN0LgorICBWYWQqIHZh
ZCA9IG51bGxwdHI7CiB9OwogCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBDcmVhdGVD
b21mb3J0Tm9pc2VFbmNvZGVyKAorICAgIEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyYmIGNvbmZpZyk7
CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIAogI2VuZGlmICAvLyBNT0RVTEVTX0FVRElPX0NP
RElOR19DT0RFQ1NfQ05HX0FVRElPX0VOQ09ERVJfQ05HX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2Nu
Zy9hdWRpb19lbmNvZGVyX2NuZ191bml0dGVzdC5jYwppbmRleCBhNzZkY2JkYTI5ODlmOWUxZjA3
YzNhMjU3ODUyZTZjMWY5YWViOTgwLi5lMzY1NWI0NjRhNWNlZjg4YTZkYmUwNjMwZmQ4Y2ViMzY0
MzcxYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmdfdW5pdHRl
c3QuY2MKQEAgLTUwLDggKzUwLDggQEAgY2xhc3MgQXVkaW9FbmNvZGVyQ25nVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIGNuZ18ucmVzZXQoKTsKICAgfQogCi0gIEF1ZGlvRW5j
b2RlckNuZzo6Q29uZmlnIE1ha2VDbmdDb25maWcoKSB7Ci0gICAgQXVkaW9FbmNvZGVyQ25nOjpD
b25maWcgY29uZmlnOworICBBdWRpb0VuY29kZXJDbmdDb25maWcgTWFrZUNuZ0NvbmZpZygpIHsK
KyAgICBBdWRpb0VuY29kZXJDbmdDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5zcGVlY2hfZW5j
b2RlciA9IHN0ZDo6bW92ZShtb2NrX2VuY29kZXJfb3duZXJfKTsKICAgICBFWFBFQ1RfVFJVRShj
b25maWcuc3BlZWNoX2VuY29kZXIpOwogCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIEF1ZGlvRW5j
b2RlckNuZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICByZXR1cm4gY29uZmln
OwogICB9CiAKLSAgdm9pZCBDcmVhdGVDbmcoQXVkaW9FbmNvZGVyQ25nOjpDb25maWcmJiBjb25m
aWcpIHsKKyAgdm9pZCBDcmVhdGVDbmcoQXVkaW9FbmNvZGVyQ25nQ29uZmlnJiYgY29uZmlnKSB7
CiAgICAgbnVtX2F1ZGlvX3NhbXBsZXNfMTBtc18gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KDEwICog
c2FtcGxlX3JhdGVfaHpfIC8gMTAwMCk7CiAgICAgQVNTRVJUX0xFKG51bV9hdWRpb19zYW1wbGVz
XzEwbXNfLCBrTWF4TnVtU2FtcGxlcyk7CiAgICAgaWYgKGNvbmZpZy5zcGVlY2hfZW5jb2Rlcikg
ewpAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBBdWRpb0VuY29kZXJDbmdUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CiAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVyXywgTWF4MTBN
c0ZyYW1lc0luQVBhY2tldCgpKQogICAgICAgICAgIC5XaWxsT25jZShSZXR1cm4oMXUpKTsKICAg
ICB9Ci0gICAgY25nXy5yZXNldChuZXcgQXVkaW9FbmNvZGVyQ25nKHN0ZDo6bW92ZShjb25maWcp
KSk7CisgICAgY25nXyA9IENyZWF0ZUNvbWZvcnROb2lzZUVuY29kZXIoc3RkOjptb3ZlKGNvbmZp
ZykpOwogICB9CiAKICAgdm9pZCBFbmNvZGUoKSB7CkBAIC0xOTMsNyArMTkzLDcgQEAgY2xhc3Mg
QXVkaW9FbmNvZGVyQ25nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIHJldHVy
biBlbmNvZGVkX2luZm9fLnBheWxvYWRfdHlwZSAhPSBrQ25nUGF5bG9hZFR5cGU7CiAgIH0KIAot
ICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyQ25nPiBjbmdfOworICBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9FbmNvZGVyPiBjbmdfOwogICBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0F1ZGlvRW5jb2Rl
cj4gbW9ja19lbmNvZGVyX293bmVyXzsKICAgTW9ja0F1ZGlvRW5jb2RlciogbW9ja19lbmNvZGVy
XzsKICAgTW9ja1ZhZCogbW9ja192YWRfOyAgLy8gT3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIHRv
IHxjbmdffC4KQEAgLTQzMiw3ICs0MzIsNyBAQCBjbGFzcyBBdWRpb0VuY29kZXJDbmdEZWF0aFRl
c3QgOiBwdWJsaWMgQXVkaW9FbmNvZGVyQ25nVGVzdCB7CiAgIC8vIGRlbGV0ZWQuCiAgIHZvaWQg
VGVhckRvd24oKSBvdmVycmlkZSB7IGNuZ18ucmVzZXQoKTsgfQogCi0gIEF1ZGlvRW5jb2RlckNu
Zzo6Q29uZmlnIE1ha2VDbmdDb25maWcoKSB7CisgIEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyBNYWtl
Q25nQ29uZmlnKCkgewogICAgIC8vIERvbid0IHByb3ZpZGUgYSBWYWQgbW9jayBvYmplY3QsIHNp
bmNlIGl0IHdvdWxkIGxlYWsgd2hlbiB0aGUgdGVzdCBkaWVzLgogICAgIGF1dG8gY29uZmlnID0g
QXVkaW9FbmNvZGVyQ25nVGVzdDo6TWFrZUNuZ0NvbmZpZygpOwogICAgIGNvbmZpZy52YWQgPSBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmNjCmluZGV4IGEwN2IwOTNiM2M3MDk1YmJkZDQ1ODI3
MjZhNjNjOWVkN2Y0MWFlYTcuLmYxOGZiMjhlOTg4MDdiMzAxMmRiZGRjMDYyMDYwOTNkYmUwM2E1
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2VicnRjX2NuZy5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvY25nL3dlYnJ0Y19jbmcuY2MKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAKICNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5j
bHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2VicnRj
X2NuZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmgKaW5kZXggM2Y4ZmFkY2Q3MWI0
ZGM3Nzc0ZDliODU5ZTljNDY3NDUxOTliYjdhNi4uNmZmNzUyOThhZmExNmE0MWI3NmUxMmVlZWJm
ZDc0NzM5YWI1NzMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmgKQEAgLTExLDYgKzExLDcgQEAKICNp
Zm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX0NOR19XRUJSVENfQ05HX0hfCiAjZGVm
aW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19DTkdfV0VCUlRDX0NOR19IXwogCisjaW5j
bHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KIAogI2luY2x1ZGUgImFwaS9hcnJh
eV92aWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3Bj
bS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2RlY29kZXJfcGNtLmNjCmluZGV4IDI1ZjQ5
NWYzOWQ4MTg3ZWJhMjJjNWFlMWIyZTA0YWNjYWZlOWM1YjguLmQ1ODBhMDUwOWI0NzM4ZDc0Yjhm
NGRmZDg2OGYzMTdmYmExM2UwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlv
X2RlY29kZXJfcGNtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2RlY29kZXJfcGNt
LmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3BjbS5oIgogCisjaW5jbHVkZSA8dXRpbGl0eT4KKwog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2c3MTFfaW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2xlZ2FjeV9lbmNvZGVk
X2F1ZGlvX2ZyYW1lLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2Rl
Y29kZXJfcGNtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3BjbS5oCmluZGV4
IDI5ZTRmYTY1OTNiOTNiN2NiYWUyNmIyNmNlMjEzMmQzMWI2NGMwNTAuLjlhMDFiOGFmZjRlYmY4
ZDE1YzRjZGViMTgzNWU2ZDM0MDhmZDMxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzEx
L2F1ZGlvX2RlY29kZXJfcGNtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rl
cl9wY20uaApAQCAtMTEsNyArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdf
Q09ERUNTX0c3MTFfQVVESU9fREVDT0RFUl9QQ01fSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19D
T0RJTkdfQ09ERUNTX0c3MTFfQVVESU9fREVDT0RFUl9QQ01fSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwogI2luY2x1ZGUg
ImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2J1
ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MTEvYXVk
aW9fZW5jb2Rlcl9wY20uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19lbmNvZGVyX3BjbS5j
YwppbmRleCBjMTQyODdlZDQ4N2U5ZGJiNmY5YmExM2QyMzEzN2U1MzZmYzgyYjE0Li5kY2UxNjM1
OGVmMzUxOGZjY2MyODZhZTIxZDA0ZDkyYjkyZjRkNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvZzcxMS9hdWRpb19lbmNvZGVyX3BjbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRp
b19lbmNvZGVyX3BjbS5jYwpAQCAtMTAsMTAgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfcGNtLmgiCiAKLSNpbmNsdWRl
IDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAKLSNp
bmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1
ZGUgImNvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9nNzExL2c3MTFfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5jYwppbmRleCBlYTRhNzIxYjEyMDUy
NTY1ZDk4MTlmMDAwNDE3YjAyOWNjNjc2N2MyLi40ZGU1NWEwYmI1MGZkZjc2MzFlZmU3ZDAyOWZi
MmI3OTQ4NjkxNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVy
X2c3MjIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmNjCkBA
IC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3
MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRl
IDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIv
ZzcyMl9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
bGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9n
NzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29k
ZXJfZzcyMi5jYwppbmRleCBjYjk2YzNjMTdlZjgxNzAyNjQ5ZmM4ODhiYTMzMjZkZThkNTJmMWQw
Li5lNjNkNTkwMzA5MDUyMjk4NWFkMTlmYTRhNjRkMDIxMjEzNTliYjZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmNjCkBAIC0xMCwxMCArMTAsOSBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmgi
CiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KIAotI2luY2x1ZGUg
PGxpbWl0cz4KLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlKQorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9nNzIyL2c3MjJfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9pbGJjLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9pbGJjLmNjCmluZGV4IDllNThjZTAzY2E0
NzRiYjBjOWNkMmYwYzYyMzU5MWE3NWFlNDE4ODUuLjU3YjVhYmJlMjNkZjdmYzJhMmExOTdmYTg4
MGE2YzFkODM5YThjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29k
ZXJfaWxiYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuY2MK
QEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5oIgogCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxi
Yy9pbGJjLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2ls
YmMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5oCmluZGV4IGVkYjY1
ZDA5YzZkMmZkYWNkNzg0NDhiMWQ0OTlhNjgxNGRhZjg0YmYuLmZjYjIwNzRkYzk1MzM2MDE4ODA3
ZGE2ZDBjOWRiZTBjNzAwODUwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlv
X2RlY29kZXJfaWxiYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxi
Yy5oCkBAIC0xMSw3ICsxMSwxMiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19DT0RF
Q1NfSUxCQ19BVURJT19ERUNPREVSX0lMQkNfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJ
TkdfQ09ERUNTX0lMQkNfQVVESU9fREVDT0RFUl9JTEJDX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKICNpbmNsdWRlICJh
cGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9idWZm
ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIHR5cGVkZWYg
c3RydWN0IGlMQkNfZGVjaW5zdF90XyBJbGJjRGVjb2Rlckluc3RhbmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2ls
YmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCmluZGV4IGRhZTk1NmIzMGMwNDk4ZWUwNDBhZGFkM2Q5
OGI2OTc1NTYxM2EwMTEuLjM1ZTZmYzY0YTYyYWJhYzYzNGE2ZjIxM2E3NThlOTYyODk5OWQ1MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKQEAgLTExLDggKzExLDkg
QEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19lbmNv
ZGVyX2lsYmMuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0j
aW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNs
dWRlIDxjc3RkaW50PgorCisjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvaWxiYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL3Rlc3QvaUxCQ3Rlc3RzY3JpcHQudHh0
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2lsYmMvdGVzdC9pTEJDdGVzdHNjcmlwdC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk5YzYwOTIxMTZiN2ZmNTAwZWNmNjljZDM5OGQ3NGM4MWU5MTY2
YmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2lsYmMvdGVzdC9pTEJDdGVzdHNjcmlwdC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3
MyArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwgJiYgc2V0
IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3RlcgotCi0jCi0jIFRo
aXMgc2NyaXB0IGNhbiBiZSB1c2VkIHRvIHZlcmlmeSB0aGUgYml0IGV4YWN0bmVzcyBvZiBpTEJD
IGZpeGVkLXBvaW50IHZlcnNpb24gMS4wLjYKLSMKLQotSU5QPS4uLy4uLy4uLy4uLy4uLy4uL3Jl
c291cmNlcy9hdWRpb19jb2RpbmcKLUVYRVA9Li4vLi4vLi4vLi4vLi4vLi4vLi4vb3V0L1JlbGVh
c2UKLU9VVFA9Li9HZW5lcmF0ZWRGaWxlcwotbWtkaXIgLi9HZW5lcmF0ZWRGaWxlcwotCi0kRVhF
UC9pTEJDdGVzdCAyMCAkSU5QL0YwMC5JTlAgJE9VVFAvRjAwLkJJVDIwICRPVVRQL0YwMC5PVVQy
MCAkSU5QL2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMjAgJElOUC9GMDEuSU5QICRPVVRQL0Yw
MS5CSVQyMCAkT1VUUC9GMDEuT1VUMjAgJElOUC9jbGVhbi5jaG4KLSRFWEVQL2lMQkN0ZXN0IDIw
ICRJTlAvRjAyLklOUCAkT1VUUC9GMDIuQklUMjAgJE9VVFAvRjAyLk9VVDIwICRJTlAvY2xlYW4u
Y2huCi0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0YwMy5JTlAgJE9VVFAvRjAzLkJJVDIwICRPVVRQ
L0YwMy5PVVQyMCAkSU5QL2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMjAgJElOUC9GMDQuSU5Q
ICRPVVRQL0YwNC5CSVQyMCAkT1VUUC9GMDQuT1VUMjAgJElOUC9jbGVhbi5jaG4KLSRFWEVQL2lM
QkN0ZXN0IDIwICRJTlAvRjA1LklOUCAkT1VUUC9GMDUuQklUMjAgJE9VVFAvRjA1Lk9VVDIwICRJ
TlAvY2xlYW4uY2huCi0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0YwNi5JTlAgJE9VVFAvRjA2LkJJ
VDIwICRPVVRQL0YwNi5PVVQyMCAkSU5QL2NsZWFuLmNobgotCi0kRVhFUC9pTEJDdGVzdCAzMCAk
SU5QL0YwMC5JTlAgJE9VVFAvRjAwLkJJVDMwICRPVVRQL0YwMC5PVVQzMCAkSU5QL2NsZWFuLmNo
bgotJEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9GMDEuSU5QICRPVVRQL0YwMS5CSVQzMCAkT1VUUC9G
MDEuT1VUMzAgJElOUC9jbGVhbi5jaG4KLSRFWEVQL2lMQkN0ZXN0IDMwICRJTlAvRjAyLklOUCAk
T1VUUC9GMDIuQklUMzAgJE9VVFAvRjAyLk9VVDMwICRJTlAvY2xlYW4uY2huCi0kRVhFUC9pTEJD
dGVzdCAzMCAkSU5QL0YwMy5JTlAgJE9VVFAvRjAzLkJJVDMwICRPVVRQL0YwMy5PVVQzMCAkSU5Q
L2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9GMDQuSU5QICRPVVRQL0YwNC5CSVQz
MCAkT1VUUC9GMDQuT1VUMzAgJElOUC9jbGVhbi5jaG4KLSRFWEVQL2lMQkN0ZXN0IDMwICRJTlAv
RjA1LklOUCAkT1VUUC9GMDUuQklUMzAgJE9VVFAvRjA1Lk9VVDMwICRJTlAvY2xlYW4uY2huCi0k
RVhFUC9pTEJDdGVzdCAzMCAkSU5QL0YwNi5JTlAgJE9VVFAvRjA2LkJJVDMwICRPVVRQL0YwNi5P
VVQzMCAkSU5QL2NsZWFuLmNobgotCi0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0YwMC5JTlAgJE9V
VFAvRjAwLkJJVDIwICRPVVRQL0YwMF90bG0xMC5PVVQyMCAkSU5QL3RsbTEwLmNobgotJEVYRVAv
aUxCQ3Rlc3QgMjAgJElOUC9GMDEuSU5QICRPVVRQL0YwMS5CSVQyMCAkT1VUUC9GMDFfdGxtMTAu
T1VUMjAgJElOUC90bG0xMC5jaG4KLSRFWEVQL2lMQkN0ZXN0IDIwICRJTlAvRjAyLklOUCAkT1VU
UC9GMDIuQklUMjAgJE9VVFAvRjAyX3RsbTEwLk9VVDIwICRJTlAvdGxtMTAuY2huCi0kRVhFUC9p
TEJDdGVzdCAzMCAkSU5QL0YwMC5JTlAgJE9VVFAvRjAwLkJJVDMwICRPVVRQL0YwMF90bG0xMC5P
VVQzMCAkSU5QL3RsbTEwLmNobgotJEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9GMDEuSU5QICRPVVRQ
L0YwMS5CSVQzMCAkT1VUUC9GMDFfdGxtMTAuT1VUMzAgJElOUC90bG0xMC5jaG4KLSRFWEVQL2lM
QkN0ZXN0IDMwICRJTlAvRjAyLklOUCAkT1VUUC9GMDIuQklUMzAgJE9VVFAvRjAyX3RsbTEwLk9V
VDMwICRJTlAvdGxtMTAuY2huCi0KLQotZGlmZiAkT1VUUC9GMDAuQklUMjAgJElOUC9GMDAuQklU
MjAKLWRpZmYgJE9VVFAvRjAxLkJJVDIwICRJTlAvRjAxLkJJVDIwCi1kaWZmICRPVVRQL0YwMi5C
SVQyMCAkSU5QL0YwMi5CSVQyMAotZGlmZiAkT1VUUC9GMDMuQklUMjAgJElOUC9GMDMuQklUMjAK
LWRpZmYgJE9VVFAvRjA0LkJJVDIwICRJTlAvRjA0LkJJVDIwCi1kaWZmICRPVVRQL0YwNS5CSVQy
MCAkSU5QL0YwNS5CSVQyMAotZGlmZiAkT1VUUC9GMDYuQklUMjAgJElOUC9GMDYuQklUMjAKLWRp
ZmYgJE9VVFAvRjAwLk9VVDIwICRJTlAvRjAwLk9VVDIwCi1kaWZmICRPVVRQL0YwMS5PVVQyMCAk
SU5QL0YwMS5PVVQyMAotZGlmZiAkT1VUUC9GMDIuT1VUMjAgJElOUC9GMDIuT1VUMjAKLWRpZmYg
JE9VVFAvRjAzLk9VVDIwICRJTlAvRjAzLk9VVDIwCi1kaWZmICRPVVRQL0YwNC5PVVQyMCAkSU5Q
L0YwNC5PVVQyMAotZGlmZiAkT1VUUC9GMDUuT1VUMjAgJElOUC9GMDUuT1VUMjAKLWRpZmYgJE9V
VFAvRjA2Lk9VVDIwICRJTlAvRjA2Lk9VVDIwCi0KLWRpZmYgJE9VVFAvRjAwLkJJVDMwICRJTlAv
RjAwLkJJVDMwCi1kaWZmICRPVVRQL0YwMS5CSVQzMCAkSU5QL0YwMS5CSVQzMAotZGlmZiAkT1VU
UC9GMDIuQklUMzAgJElOUC9GMDIuQklUMzAKLWRpZmYgJE9VVFAvRjAzLkJJVDMwICRJTlAvRjAz
LkJJVDMwCi1kaWZmICRPVVRQL0YwNC5CSVQzMCAkSU5QL0YwNC5CSVQzMAotZGlmZiAkT1VUUC9G
MDUuQklUMzAgJElOUC9GMDUuQklUMzAKLWRpZmYgJE9VVFAvRjA2LkJJVDMwICRJTlAvRjA2LkJJ
VDMwCi1kaWZmICRPVVRQL0YwMC5PVVQzMCAkSU5QL0YwMC5PVVQzMAotZGlmZiAkT1VUUC9GMDEu
T1VUMzAgJElOUC9GMDEuT1VUMzAKLWRpZmYgJE9VVFAvRjAyLk9VVDMwICRJTlAvRjAyLk9VVDMw
Ci1kaWZmICRPVVRQL0YwMy5PVVQzMCAkSU5QL0YwMy5PVVQzMAotZGlmZiAkT1VUUC9GMDQuT1VU
MzAgJElOUC9GMDQuT1VUMzAKLWRpZmYgJE9VVFAvRjA1Lk9VVDMwICRJTlAvRjA1Lk9VVDMwCi1k
aWZmICRPVVRQL0YwNi5PVVQzMCAkSU5QL0YwNi5PVVQzMAotCi1kaWZmICRPVVRQL0YwMF90bG0x
MC5PVVQyMCAkSU5QL0YwMF90bG0xMC5PVVQyMAotZGlmZiAkT1VUUC9GMDFfdGxtMTAuT1VUMjAg
JElOUC9GMDFfdGxtMTAuT1VUMjAKLWRpZmYgJE9VVFAvRjAyX3RsbTEwLk9VVDIwICRJTlAvRjAy
X3RsbTEwLk9VVDIwCi1kaWZmICRPVVRQL0YwMF90bG0xMC5PVVQzMCAkSU5QL0YwMF90bG0xMC5P
VVQzMAotZGlmZiAkT1VUUC9GMDFfdGxtMTAuT1VUMzAgJElOUC9GMDFfdGxtMTAuT1VUMzAKLWRp
ZmYgJE9VVFAvRjAyX3RsbTEwLk9VVDMwICRJTlAvRjAyX3RsbTEwLk9VVDMwCi0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0NoYW5uZWxGaWxlcy50eHQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9DaGFubmVsRmlsZXMudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwNWY3NDEwMTQxZTgzOTlmMmI2YjViYmUxM2YyNjJmNWQyODg2ZTgw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0NoYW5uZWxGaWxlcy50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwzICswLDAgQEAKLWJvdHRsZW5lY2tzLnR4dAotbG93cmF0ZXMudHh0Ci10d29yYXRlcy50eHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0lucHV0RmlsZXMudHh0
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvSW5wdXRGaWxlcy50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNmI3YWZiNmNhODU5YTUyMDljNmNjZjM3OTlkNTgwM2Jl
NDJhMzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvSW5wdXRGaWxlcy50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzMSArMCwwIEBACi1EVE1GXzE2a0h6X2xvbmcucGNtCi1EVE1GXzE2a0h6X3Nob3J0LnBj
bQotRjAwLklOUAotRjAxLklOUAotRjAyLklOUAotRjAzLklOUAotRjA0LklOUAotRjA1LklOUAot
RjA2LklOUAotbG9uZ3Rlc3QucGNtCi1sdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1sdGVzdF9tdXNp
Yy5wY20KLWx0ZXN0X3NwZWVjaF9ub2lzeS5wY20KLW1pc2MyLnBjbQotcHVyZW5iLnBjbQotc2F3
c3dlZXBfMzgwXzYwLnBjbQotc2luZXN3ZWVwLnBjbQotc2luZXN3ZWVwX2hhbGYucGNtCi1zcGVl
Y2htdXNpYy5wY20KLXNwZWVjaG11c2ljX25iLnBjbQotc3BlZWNob2ZmaWNlMGRCLnBjbQotc3Bl
ZWNoX2FuZF9taXNjX05CLnBjbQotc3BlZWNoX2FuZF9taXNjX1dCLnBjbQotdGVzdE00LnBjbQot
dGVzdE00RF9yZXYucGNtICAKLXRlc3RNNEQucGNtICAKLXRlc3RmaWxlLnBjbQotdG9uZV9jaXNj
by5wY20KLXRvbmVfY2lzY29fbG9uZy5wY20KLXdiX2NvbnRzcGVlY2gucGNtCi13Yl9zcGVlY2hf
b2ZmaWNlMjVkYi5wY20KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9JbnB1dEZpbGVzRmV3LnR4dCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0lucHV0RmlsZXNGZXcudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwOGJiZGUzMGQ3MzM3YjI4MzZkYzUzYTAwNTNhM2EzMDljZTJjNDkwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9pc2FjL2ZpeC90ZXN0L1FBL0lucHV0RmlsZXNGZXcudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
NiArMCwwIEBACi1EVE1GXzE2a0h6X3Nob3J0LnBjbQotbHRlc3Rfc3BlZWNoX25vaXN5LnBjbQot
bWlzYzIucGNtCi1zaW5lc3dlZXAucGNtCi1zcGVlY2htdXNpYy5wY20KLXRvbmVfY2lzY28ucGNt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9MaXN0T2ZUZXN0Q2Fz
ZXMueGxzIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvTGlzdE9mVGVzdENhc2VzLnhs
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA4ODllZjRlZGRiNTNiNTI5NWU0MjQ4
MDU5ZTNlMzQ1MjIzZjI1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAxNTIwNjQK
emNtZUliM0FpMHFsfDZwJE9HM2dSI1V6c21rOWtiOzx8S2p5MFY4TV9Me3dCWEpkemlQMmBgWDVB
U2VpXklIRHFgCnpJTiZfYklMYF9XQz5xMz4jO0xKZXlWYlV9KSRWcF5GfjdDVy1TPEA4UX5UNkM9
aUtNX3tybGZPekVmbmFTOVNLQAp6WFJxMi1fdHQqKmUmZzw0P3xiNzFfV2c8UmV2VVZEJXdNLXta
Pz4hT2JNV3QwMmsmQ2NBcHBkRy1MYEY4aGR2K3cKel8tNzFJZkIqU2t1bWJuUCRIUzNDPTV7V3xK
UGhXMUtFP3UhP0o7KTEqYiFxVmowYSVzajhSfWYwJWxpPy03dDI/CnoqYVBFJTc8KiN1Z3xSb3JK
e2JGQUpQMmJ5ajBhPXZrOHVGVEFqV3xoMlZvcUhhUnxudDc+OGpUaiZUSVdrcitvfAp6OUYxYGQj
ektybTc+aEI2Rm9yUWtGaCgpUEZ2YyteRnFVOH0jYU0+JTVSNzluaj5DODsjXzxALUY7MmpFN3st
WWgKekN0O2s3QG88YjQ3Pn5kPjE+O25WTWBBbipWPHBDRTdeaD5MZnBJM3JxY1A2SGNucnFiNz5+
dHg5TEQxQCZjUyNCCnojdUc3fmdtRXMkbFFFdXh1P3Bpbmo3Zn51N3xnPk97Q141I0V5ZXtIN2g8
ZiNjcSt6dmoxM3FVVk43RmUjSkN2YQp6NXt5azRuPXhpRUYyJVNFPDhxOEc3Kn05QzRkZHc7UzdL
YStAZUdXc0Z8TlRsM29+dVJrJU5lUTh2b3k5a0g5WT8KemZBKWw4SXgtKT9GQHA9WkhSZCtFd00q
SWw3cSsrVntyKzNtP3tqREMmPSE4Ki1WTil0NWpOTUdeUXw5QEdWTnpLCnpHdGlvZ0xwbmFoOThK
XlBtYlY/NGhzPDR5UmxOd0FWQzwpMjcxbW14JGpvNTxIYD9fTSYzZ3B3Qk9IN0YoMSp9fAp6SzdY
R09eUHN3b1B5bF9IdktkSjhYRFJHPVZ2bmBZXipWeDE8N2ZLP0lFJU5OWFduX2hVR3J+OEhReEB1
e0R+UGIKeng2WnZDVFZ3dFM8Nkl+Vz1sJDkxclk4cUNPYnRGXyk4ekQ7IU4yaihpUG5lNzdKYXg0
ekNOX0kwTnhFP28jJmNjCnpAYyYmPFNAPThUQUtUc1NfV2dHNlB1dU43QHRaOTtZaFFvakN5cm5w
O0Zhb31mZk1ZMEZTNlQlPn4/MnRUanBjLQp6bkQxTD04MT9DZypuZmUhZm9uOGlQTXFJNTMwbHx5
RXUwVUh0VjdORHxJUXY0TFZaaWtyQDA4dSh+SEU8TiRjcWAKeiR7eVhaJTxafHk1M3hxUm1GX3ZY
ViFRVFN1fDBiM2FhXyttal88S1kzJD92X0okejRGeEtjRmwhRH5yI19GSzN6CnpfTF5nZDkmLSVm
RCVzMSpmfVUyazU2LWR3LTJHNlVhVjArSmtiQDNCPUhQPmVSdm1mbHhrcSVzeGt2NmxfZHMwaAp6
X3ZgeG9sZ15yMl5XXlRHNCNMZDxGNTh7czc3Y2FKMUkoIW8jfGQrZ3puMz9nPzc5UzNiWD5EbihV
cWVISkR2JFYKel9YdGF6ZCpyYn45SktIdF9gVHxnNklRez5CSFIkKm1TRUtwKSNIdkR0UjhnS1ZB
bTFMYW9kMCFmVTI9fTFseyhtCnpZWmE1cm16UEUtYVFBYHgzfT5gK3l0Q1VtKnFTYm55d0JiZDhT
YEo7MjYxK0Rlcl9CNUpJfVM0e2RIKVchT2tNMQp6OG4pLT57ajZSODU2aUZTelRVMlhvcXVuRGVe
LUVpVXgwczJmUGE2MGVAfXBhWkdlQWFmRGljLW4qVCN+OV5TOGEKenVnfmlPZUF9UDt7JXdFaXs5
NkxeZD8zSm9JS1kyNHpgcjJDZTxIeEFgdHVQeCZ5S2JBWTNxY3FmOSQld1l9WnxICnotdHAhZyZE
Pllte2RhWnorTz9sTTtCeUM8eGdXRnFKayRgb3t+eGh+e3BzbFEkTit5I2ZJbXYqYFRFUHd8RFE2
dwp6b0xfd0gpfTd6QnA2N1M/QDdSfHkyWHhMeXpVSCgwd3xSdSRfSCtBXkFIK1dxelE9b1phbGhE
fSRFe0NXfEczLWkKeiV6cXlLeG8+QTR6UDlaNF5XQ3k7IXIhdiV1NnlwZEMpV0FabWdqM3d5RmNi
e3VYQjYtPWkkMCtkMmdNIT4rSjlPCnp4a3JjcDRxdThMQDc3X3I0cXdeLSRfMEN2RTRlYEs9WG1x
dWR3OyM8c3MjKHBSYjQhSDd7RVJBOWA8enNaekZrOwp6I08zOXZvcEQ3VHMyfFkyKEBaI15lWiFZ
PHo/QFc8XyRuYk8yQTAmTTFES1BmMTFRPzAxREtTZzExUiZQMTkqTlYKejlsKE47Yk82dGNxeXU+
QkJefChYRGRfK2Z6b1l8PlBDZWs1KUJfZiM5PFY2JjBOZ35UMTxramQlMm5kfFMxa2dxCnpzfT8t
V3N+V2grTTdgKm8pQlhWaTMjNlJ6I0JBUlc0LVZFUiFIc3FBTnd6SS1vYG1uRl80SCg5dzBqYzIy
IyNUcgp6YVFyQk9lKjhudUR5dGpuQHdWIU00YWBPU3tLWHg9YFREa1N7Nn08NmEqTnFjcEpkeVlu
PG5BQWh3Yj1qQFJxNTcKekMpQHQqbVduNFlfMGw8eEwrOUljYSsybENGQUkzR147Sz8/YDRaeVFT
Nnt0dFA9MShwUEVoNXh1VzxPNHtuPGdgCnp1M0YkYiNySCQyUEElNytgcllxLVM5NUNsXjVyJEJz
JDluQGFeZSUtSSZNMig8PzJyMTY8eCl0S1ZLRENacTJGYwp6c2BSJX56OGQqMWE7YnJ1UXlwWDV1
NCVjSXN6LUt8aTtTbDtlXmcxb157c0RwbFhOc3RVRH1TWkRpXj1weyl4JT0Kenp9cUojYiVrN1lZ
b0h6bC0jfX1OaEVkZFJYRjRiNXdyeUskUUdEPSZBRlBSeyU1fGIzaHE+KWZNPkpLZ2UjXjhOCnpg
PDc4cTJWRn5oKXE9LSo9aV9sV1Y2SDIjd0o1bW00Nmo8JHhiN1hVYjNXR1YpPEhPYHRkOz12QnpH
blcqRGMtewp6bXleYEk7fkxLflEpe2M8KWppb1dXfEZOZG48djI9TEtSTnt2fmN8NUAxSCNmJDR0
X0crIVM2RHpMPCh3NlcofSsKekMmQncpeShpaGF2VXc3YHw1Y2Q7S3dwI1FOZStwYnIyWTZVOTFk
VFlNNjN6I3Q7M1YtOVclKyttQ2Nqdi0hJXo8Cnp6OSE5KzkyenFUdDR+dW5lRE5FeENlNCVWNkVu
JXltQ2Nqal48JXtvMERWb0dDcGohO2xKP2AtYUVrZkRIZXlacQp6M01vN1pVWV9AIVdiNFoyTmR+
KG4wbnBjXmQ2TDZwQ1RUeWU0dWBgeHNVcF5kRjlPNHBKU2IrOHR0Kj0rSWswT0kKejBEVm9XbGlX
MTA4PWlYTSNvZnJ6cEBSenRBR1VoKylien5valNFZ1FIKilGWnIhe3h+WjRiYl4+cUJed0s4VUJ+
CnpnTHVOZDh2bkpRRXcqMV93RDJUPHtAa2d4S2xzXml4NlJ8ZmQ5fWVeekBkQ15mQFhJMCY1WUV8
OU1vV0B7VGpyWQp6bkshbGVjUiVgfVplfTslJXhLLXJWR1U7NXVUcmQ7P1dXZkxeMHo8SSZGdD0q
OExPSylzPSo5aiRJUVc5NDtFX3YKeilZX2xqX2JjN1o5PUA2Snh8dX17WDgzWUolcSYxfGUqSnNo
JW1hTmg2TG04cTRRQVQ2d0trZ1ZyYEYjOGkrZ281CnpkKHpCVXYoZ1RMblh3M15aQyZ+Q3R2fVZ4
P0IkekxseS0xfm5YMXladUticnpkfFdyUHd7SiNLK1RqZ21zIUgzcwp6QH04ZjVTfnMoZ1okP3F0
KEc2eSpPNTNffT51dWxIJkZ0JSZRSXhqMCFBdzxZVFVVUGNNP2NyaUpqZ2VyQ35kVUMKek9qVClI
U05gUkBBSil6Nk0+Ny02TipqY2tpM3B7UWpLMklzX3E1SGhweTl7V3Y8TGZVNnJ+LX5WNVh8SGs8
b2leCnplenxVRGY4VUl2dj9DaEtSRnlVfGB1WHBAU35xaW1aJD9xdEYlNCNfTipmdmQ7MlhjSm47
Rz1ZQ2B1YkBGakgwOQp6JG1tVVhOcm09dmJEKGNWUVFCQzhuWDF4OE0qbj08NE8lb2k7cWYlP3lX
RG0yVmN2RH4hUTE4c3VhKVRjeTdue3IKenF6OUxpTFEoI3QyWVFvTVJmSTwkWFAlfXtkUHE0Yl55
NSFAczVmYTxHc2U4O1ElfSQqSit6ekBZVmp2TSh3bnJaCno1TSE9Y15Db0BMIV4lbWE0UyYqdy1s
U0RNcHJgSVZjaiVLSVVRUC1uXz4mSE1sVUIyRCVwWUV7TFlzNX14KFY/agp6e0tVeU1IIWZKI28l
ejstdyNgOGc7R3xqT3VFNnY3clU+MzQ8bFBiZiY5QFB5bEkoKjExSDZaUygmVUVLbXV7R3gKelMr
e1plI3MkfVFQZEtwV3dqSSQ+JGQofkNjNVQ0RiUwe3lKX0QrSjZeNmpqUzBsdkx0NFF6KypPOCUx
WFhTQT5rCnpSa1daQlpRcTQlOFlzfEpmdXw4Q1R7eUxSe29xTWM4I2RneTtBK3BXeXwoUUR6Yj9l
aDtBKnRvNGRVTlpAUSFWVAp6ckJ7M18lSDktS1B0dU44ZUUoQFg9VCNlWnlsU0o0UzhhMz8tbjJk
WG5tT0JVVHJrK30lRGchK2F1UGI8K01SYz4Keld3YEcjKktDSjxrTVE+MDR0PmJ3ekp1dGM5SX0w
cz9QQ15SR1opN2s8e2RNNCtYNVZPRGYrY0cqP1pzQigkYDJVCnppPntmRUJObGxfJS1ePEM/VEJ0
JDRAQjF+LWxsb0BtV3d3YFBFWEVrKztxakAqOzg5KVpkfncpP3hfYUd4OXgmPAp6JH1NUHtXQTNN
SXtATGJ1MT1qcCp4VSZVJTtHMCpTPkAoUlN1azheVi1reTJIIypHbF92RUIyd19UNHJZamozJGQK
ej8zT0N1NSUwX2VXMVlFbk0lTX5uTDdYeCp4bnx3OzElcjY0OzVqO0g3cCZ8bGFFUkpwMlMrYn1n
WURNe1JzdUwtCno0bWtDeV9IPmx1ZTBiSV9nZnxXQmoyOVZ8JHgtfEskIysjSVpgWiVUPGxDME48
RiszbzVLY1o/b2c2akxwTHtvRQp6QF4mMnpPeTBnVjdfZ0klUlZQTyteYXtlOS1JZDglNThEfT1V
dE59KTI2ak50RzJadCViXjc4PEElI28zUSNQOyUKejskY3RlI24yKj9VWT07JUBWPFgxWD8hQCk9
anAhLVpqZXh5Ujw0Xn5LZWF+QXwzYFZ3PzJXcCMoazZPNmxEPypeCnowP2N1MGJoVzVjZWZTcGxj
MzhOYiZ7ZDVxPTs+M0omVE5gUWRHUUshWWQ7amAoPWpuNC0yX2RzdShWJiUqbXtiRwp6QzdwUDAh
NG5rYEpTMjZFIVJhe0s/UTZAeDxtcGlRQ2ZsMEpzYnV3QV8tRlpJYiRqJEJWdjVyQCZQPzY3O1Fh
MTYKejI2bip0IVp+Syg2eUl5KXN+K25MLWwqPUJHYGA3UDdUUHhJbChhVkxsKGFVd1g8JGIqbUUl
cFZHY0tMNjhOYnshCnpgYW4jNWhGeWJ0Jlp7TSM2fHlWbUJ1WT0oc04rYytidiRWIW1hPk9qR1lA
TmJOVmZ+fjx7PVNoQklacipnK0deIQp6UWF6U1pKJHYyRTJDVVhfX2ZjflNxfn5tP1YrTSlpZGV6
bjU7dU9jKERLXmVmMHA1RUxiTX49UWFLWVF6cEtDP2MKel81SzNheTtEY3AoUkw2ZXdrc08rY1M4
NjQ8ZmR0c3RhZj1fLXRGa1hqO1BkK2hsTmN6dVIydnJFMzNTUytaQkhDCnpmXipEXkR7cXFBZmFy
RmBlYGpOb15LRzxgZnktQ2VmMVFUZFNxI35ieSRxfGs0KDs+fHNOOTJSJjtfYFAmWSlDSQp6bkRj
RHdATzVaR3pXUVU3PThuK2ZyaSYmdzQ5LWsjcDFCVFAkZ1RUSD9fZ0Y7VWI8bU0qYUJBP0s2fUNX
YS12WHMKem5pbWF7K1MjbUZ3YEprbDRJM3hoSkhMOXQtc2FVNi1gbnpVS1pTV1NueiFGdmA1Z3s3
KlcrfCg7bEpDX0ZudjNBCnplKD1BdyV3TnBsO0xBfDhJNDtFQlBiXnd8KjNeY24kPDAlWCpIMkFQ
VSRKT3YlaGNlKVF3TjhLQEg0bkAjbWQzYQp6cCtXNGxXXiFoN0B5MVEtRT85aT4qezd7b0g5V0VZ
bCY3dVF1eU9pPU1IakVXc0kkVypsWik0bDR5X3RpYzhNfUkKemshRVRsLVBDd35SM25LfElhQkZU
QzdLJVBCVWh0b1FJKTNCcWU/YTk3QkYzYlZ+SjVZUXxWRDluaX1tUlNMMTA+CnptOFIwOE47TzRZ
V0xBcmIjSGdJOV5yJHBibip1ZWt0TEJ9KmFSISZrWH1wQCt5bDdfMk9zQyQoNnZSb2I4ZzdnKwp6
eD8kdHhuPGpEUE5WY2V6azBeXlhtdjc5b3NHWnRSNGE2OUdhb0sjfiMhV05JKW4hUlZGSyhZR1Yt
MTNGNkxuSXsKek9CdD4mJDtNbklYKChFJUY8ZHY3cmJnekJXa2k7MHRnUVNRa3U2SiV0VGRKcG5R
Q2woU2RBbFk4OGFkcTlAMFhLCnp2WCY4QXZiRkxXa1B9PEFiVUQjQiM4ejYlaTduWmh5QXRIWVJ4
T2ZJdXttb3d2OG1TWjkpTm9Mb3B0R1BGO3B0cAp6V2NCOTY/UWx0cSp7Ris7bzNkKU5kaDZoSmhf
VkBWYEVnVExaQntTclppaHopOyV2TUN0ciF8d2JuNUE2UndsUXYKelhod3lQbiRzN0VHQUNjVSNM
TzhpUDBFfm48dXctSnI8Kmc8JnhrcThkaE1UejBZQXJrYCZySHo+MVdLR0Y3YC0yCnpDbkVmR2I0
TDBaRj10c3dCbUc+YCtzfF4mTkl6cmRiVlZgSiYhcks1eDtaMkw/OUJQWiExKjN1UFF8JigkdkBk
eQp6Z3ZaQkI5eGpeNyVwSkYqVyk3RHxXIyhuUTdkaWEpJldmUjd0cEgrOSVWIXFBK01GemFGPnxf
O3QxaHRHb0c1QEoKekxsSih1SXFMJGUlP1VxYTx9OGE8cUBUbVJ7VmVCPF5mUDhvN2tpfGlCTjJZ
T0lWMWd5bjZvVGFrJCZRMCtEbzcxCnpvUk5PVSU7fTAlcUBURSRfVm0tdThSPShkUEpGSVJwWkFt
RVQodGxXY2gwRERWckZsdWZkMDhQSW91SSEpWU1IUwp6dXMoSCEjK3F2MmgqQVNiYUQhcF8lbzxw
bWxlSHlnUElyRlFIQ0NJR0g0cngjSl5nZlopLV9nfWxZVTBiUz1Pc2EKektYR21DPCEzbyhxQE9X
IXk0V05BI0ZlX0lwS2lgYktPXlFXPnM2JG14U3NhJXZ6IzsxJnpMen55XjhhNTZjd2VYCnpwS2lg
TEtpITxPUTNJYFdUe1JGXzAhdX59cy1feFBwQmx3R2UoSShnU2Y0dGt3Z2V3WHRRWjxxWVR6aEp3
JmdReAp6VX5OdittWiYtMWBCbTNnWkJFcHtRUGxzUWUhNG05OG1yQW9LT15RVz5zNiRtUCp5S0wl
USsrY2pHNUVMOV9jNCEKeitTNS1yWFFaREliQyZmZyhvYmw8bSFJWEZrJCVSXj5GUU9hcFNZZyhe
d1o1NT4xU3Vvekg4dWQ9bippQiNseDtiCnoqZkcmfUErKjdGT15xd0pDOE1UcER1bmZeYWsxXlMq
aUFRc1ZfRzRFeU96JV5ndGErWVV9RU5VQ3N8ISt3Sy1WYAp6NXFuUVItSkVyeSkjancxNXAkTUJF
N0RLZ1ghUD40b0hOcVRtXm9lU2FlantCPUIxfmZacTdKQVc5QlQyUi1+Vn0KelExfGspb0hOcVRt
Xm9lMWl1NGx+KXQtTDNJVjFoLSUtTUcjTD1DamdicnFfUHMtZzsyKTZIT1FZUUVFQyQqOEhECnpZ
RzhmcGh9PD5SejtVR3BqXlJlYkB8aVdUSFlhTEopU1R9OHMleHdeQ3UtbXJaWnZ4Tz5FXjYhdFRy
ZThqRl97bQp6U0NNfD1NeCZSWDwoIWR6Iz8wd3JrTXQ5RjBYX1k2YjRMMFpGPXR0P0JLXmVtdzNu
YWRvUk5PVSU8MVk/cUBURSsKel9WbS11OFI9KGQmZV5EZSoxMmo4OTZeUChXS15NUXMpNjtYSjRH
ZEc+WlRmNHBFfX40Wkt7RDJTYEViMiExOT9qCnp1cj89YU9VI19ee0hrbExIWWFNfUk0Jihje2Q5
QklIQ0NHd2UjWHBNKX5pVEFhaD5ZclhFfHIycER9Wn4qZHpWSwp6OFBMO0RIKW9gdTVwJE9IRCQt
QSFQUUNtcj1aeTMtVz0+YkhCS15kPCswIyFxWFFaRTxJY0s4PVRJYWZJQWctKkkKemo0RCkzSEx5
TjRFezU/X0hgVCFVKVZPfEdHUEVYKi03IyRWPWlmM1laSkZjYSluNyk8P3F7KCZMMW1AY2haI1Mr
CnpKTGkxZWc9U31Rb1QmYj8kIyp3PGl0bitybXZ0QDBfYSV8T20kUnElOXpEQlRuSDFsYiNgXkFO
UHdfbz1fT2t3Xgp6X2BXUkNfajJ8Vy09ay1ESDhIe1dpSkA1RS1SdWR6Y2g4USQ5XyNhPWJrKX5O
UyhxSEAlSjJDeGNFVkxTWHJ3QzwKelFBV2JgSUFtbkJEPDdkJntwUU5kdmI8e1ojWnl6T0ZJPUA2
ZjZ6NnApYVolZjRlRC1EN0hiTW5yPloxfmJ2d3RSCnpKSilOOT9yOU9WZH0xVSRNclNjRSMmbkJp
RXpYTl5HJiNvN1ZxVDBIN1R2MW0jVzxFOHFxQ1M3VzRndCV3JiVxLQp6bypaTG9GKXpqcGl8IWhi
N3ZuXkZqTHU/U2l+KT1JYG0yN2dNNzt7bzxZPUo2VUtWNCE7cClgZWFHKGY5OEUme0AKel4pPykr
NDNtTH5CZCVmPlVBbFNRWVZHcDFxJTlAKWB6OU4lN1UtJlZiNXQpX3luSE9wdjd6ZiF3WlYmR2Z7
azh2CnpKN3tCQmQ+cjlGZmIhPD4pQHNSK194cHg/bHl4Z0RBNH13ZmEmYm80Tlh0aShqVUtoaGBC
X35uPGF+Km9wWUhkZQp6S2NrQjhSYChYYVZzTFUpRUBqU0k9K0UhRnRvNW90Wlo/ey1KcCVreDBR
e3hvPGZ2UiQrI1hUKGRYKmhGVFVUZ08Kei1RNiN2WmVEZkskP2Z2PSMmdyZvUTBtUSs/JFlMVmk/
WE9vdSpvNy1sM31xJnA9K3s7ZGJnemVyWTk7IVhFODZ2CnpiYzx5WCUqJGk8TzsxZFdyTno3JEdj
M0FRJjVOPTdyWTk7IVhFODZ2YmM/KyUwPT17PCpNRVB2aFYhd3NtPXxNKQp6TVIkUzclY0k7SXF7
UWVmPUVXR1dJTG8pb1BMVzszSmd+a3xjZGZsSFNOOy1xODRkJjtXd19VTXRJQEZCbS0raVYKekhz
Xk52cUlIe0JrN3lVSlckcmdvXlpMNFJNXn4yMmVpfW1EeXNvYkpYTWoye0U8I0koKzs1dXZiQFJz
aDgjaXhSCno+IWJaMGpgNnBnSGA/RjBkRUdpaGAjVGNsdWJWZzgtPjctWjhYV0VLWHBGeip5d1Uh
fiZGa3VFdzcrOWZ7PD9YaQp6e1ZuSFI2e3J0Z0h9SClnUXshQiRvWWEkSjwoWVNHakQ+S2ApdSU1
NzlXe05wdmcqXjlgVjBMUFpSNlZ3N2hrJCoKellXalNvZkchO2BlLSQ7ZXBWOUwwJTQpTk8jP0lg
e01QR3laJXEqZjQ8KiVCMmJ+REhPOTUtYFdAOFclNDY2SkZfCnpiRyoteUdyUUdAX2p6ZlkmdS0+
O3BXfGpPPnQ0TGklYzZXUFhPOHpkYSVOWmlxSjNVQTZ6OCo+SW9qdnklJVFpRgp6O19HVlpXI3Y/
IzkyK2g5cn1TNEAlWmEpU2pGbyhwZnBCZHRDK2FkI3NlJFZQNWowbFUmNkFnSnpJPHh4VipJQFQK
ei10IXolJUl2YVhXdUdXcGV5KXt5RHpVS2VDZmpvN3VkbW8xd29yPGZqVlN2eCNwUF5lI0ZjMlB0
ZmQpb2ppJHZfCnorUkJKNClzfGJzakpVPVU8OHJuIzshM250KjVyKTEjPyNefFpEcXVqWVJsRV9q
SlBIZTw4cm4jOz9pdHc0JUVaPQp6dEEtTGxyQz8ydFg7dj9ldV5QVFo/YDNqe3ZPfD1+QFJkY0d1
YDl9QCRfYEhzTUE+fDtTdk5ncEZFLWokWDM2STIKelo9PmR+PjcrVkNCP05uQWlKI3hxamhmfnxe
WWQhNUd9P2JSZjBGO3ZeT3lCSiReVGBzeytJSjdgUUpUJT13PUF8CnoyfHd1VV4wMW07dFV2eEZw
ekdJQjIydWhARmk9K0xsbmV8SDRhWWBNOGMyJkUtaGl2Y1glVVA+TjhrKmtNYkteRgp6ZjxQNVlz
UEtWUGRVQzg9dVdNb35IQnxNR25lbEdiTXd3fS08VXVwdG5HWmVxampQX1BFfVkhM1J3PzFiTCEm
UEoKelpsNVNxS0BHVFJzJUpaMUNuVEc0SDgtZWQpcyF0UFZgKSkyUXlFZEVuSk8hQk1wV2FTc0JE
a0cjVi03WWdxOEwoCnpMVVo9d091MUZlMnlMUGhUQjUwcHNNMVc4YnZxLWZAJithKlNFWj9wczFp
LU5UQW1TQWQwUF98bHsxd1FtMTYzVwp6bjZscFpoSjlVWGx+T2YxVVM2K1VjKylYOUJRN093IVkr
ZUszNjMldGFaJTk/RGtVcV9mWnUkMXYwZEA1Vlc8KzYKentjUFclVyRsTnRaaWdyJUhJOztvKnNE
czRrI0wweTh7emUyY3FremZYQ3lJXzZlREY+dWJzYT1Be21hNHElQEttCnpOczFBLVQmYTxhQnQr
dGpxKCtpcHElN2E1ayZNUGlRV3tCKEIqbG07KntQOT9CfUMka3EoPFQhPkEmT0NeU1Y7Vgp6Q2Ri
RlVVeHNlQng/YUZFVG5tRWQ9ajhaQWo7ViZMSyFkM3prKX5xbnwwP3h5QDk9UFNePDx5VzAoT35k
KDFjPSYKejdsS3EldHxUO1FUcnApWTJofkpITUNEOW5NM3JXJEVaR0BSUlc7RSZzP3Q8T1JFZWhD
MCVrPER3NChIZ3NHTztjCnpzTTFXOHI5MzA1PlJuSW9zN2d+QVE2LXZrV2ojSHJrP0woJEx7IWRI
ZFFfVUpTJEpocFIkT3R2PnIkZlZCa0QjIQp6PlQwNEhSOGtqWkZ6VEEzN0BTWk44MSlUT3g+aCE+
VUF1MWUpWDxzfXdSZiZZPFItSWdyem01KFREczxgcT5XRF4KemhMZXJDR0xqUlMrO256JSlEKVJC
bUo/WmB2OWojdkw/JDwodjV9Uj1hdzFETD05ViFoR1B4O0BqPzVYJGk3ZTRyCnpTXmplKGxVdW1o
JFZ5ezVrKTt9UW13PXFlPGxaVmVHR3tDJkdSQGQ1Sm5wdHZvVVJCZXdRRiloRTBSJnFvX2skJAp6
IVh+d1g1QG9YMlJWUXB4SkpVbFp5SXlBS3MjIUhUeT1Efn5WXl5LN1V3WSpCKSEjNDVxXj0hKnMh
OV51N29aSDIKenVFYjxVRFlxLVdZZlZ1KWxiS1Bibj1DSThuTmk5O1FiTHJhJDs+RC1PdUJ7NWkq
aShNJXU9RnNDaTl9cUZqLXpZCnpHTlk3Z21rPyFYR0JlNXlsa1BILThLbzUxbHFqOWElcVJtVWB+
T3E2X0tSfnJsdUdyUm9SRkl4ZjFqd29EQz4wPAp6XkMjXnhFY1lWKksyZTV5VUNhRFF5OX4+JWcx
PTh3O1NHTT5ndWxSI1NGZFFKYXNAMy13KWN4TiotS00obFlCeykKelc3M3RSVVQwMy1CO1U2aXR4
MmhPbCtJKmtsPDZrUiVTJmRJWlFhQClmZVJCN1RINEpGd1JYUHJULX1EZ0Y/KE9ACnpkdFcoQStU
UntwSjV2JSZXPTVIQXZiQEcqQ2JWfCUqRTdufVdNLTVaQ2Z6a0FHc0BiJVUrKlpMJDs+RE5DVElW
JAp6KSgpajItXnEhPDNQKVhDO3hCODg7WHUkKWhUfGA1aXM5T0FaK29CNiRHa1NhUH4qb1pvaT9W
dUZGM2xhezlWLTQKenpJTXZQRUJVZjchZVhhKCo5YHdtKDVMMzVYPjYkY1U2YT50PlVnZ3NyIUxF
WGc0ZUBRVVlBb1JjcFcqbFRhV349CnpOOC1HOFF6dipHSCs1Tl82VEJYY14xN1RsIVJ5R1dVQWF5
MGRNd1VzSCs2IzdtOHR2eFlzMXBiJTJffFRxO2d0QAp6K1M0Tit7MDl0RldGQlE4VCE4fXlEdkZI
aXp0VkdpQH5UWiFtdWNtOFlga3NQP0dSLXwmJDY0TmteKTxKbFo/MzIKekhaX3VvZ2gtcmApSlBK
SGx3fnREa3xwdHhsdHhrYE5pcEo8RD5hZygzNlZHPnNnV2NZRGEmaFdCeXdCZ0d+UkhZCnpsdHhr
YE5pcEl8WmVrP2tRV0sqaGFZaG0mc1R0fE4kOyhxeHJOJkd5a3FlKjtEYiVCc1JPe1ZyVThkeCE8
JGY3dQp6cyNuIV92dnJ5Qk9ZOyowWk9qcE8rOXp3WmVfU3FKX0xvdFUyVU9ycyZpOTkrQ3dIZlBL
KiM+JXl4a3NgdDcxPmoKei1RKzJyYDslWDVqQ20lO3ZvTX5HYVVJNVVGckpJP0pkRWRLeWEzfmM3
fXNPRzI7Oz5WRlR1RDA8RTBva1YlJnVCCnpHS2BtRnlhTUI5ajh8ZzMzZ2d1bnVmZXpsPEZ5I0Mh
KzFUJDghK0M4QGd8SG5XNHMwOXRyJX5eY3NzXkJGeTR2cgp6RXt1MCR5YShnRzgxS1YpS2dPKlhB
SGV0XiMpbUxJalBWaFNrNzlmYjxLcX5nITF5R19yIVlRXkBmblFJVnRmd2MKekhqTFhiSzlCSlFq
NHh0KjNGOGlvRkpwV0s8NCVtUFZ0ZnJfRTU9PElVJnB1YDt+Tjs/I1B9QSp3PXVxaEBtLUFYCnpW
Y2RpOTQ7YzRpZD5gV243KGN9TDV5cD0oe3RARm9qR3RpcTZVSSs1PyUlZDsrdDJYLWY1R0B5akd0
cnQwXl5xJAp6fEF6NF5qRE5AWUhPNmwre3NaSDs3ezl+I0o7cn14ezE/VzVXQmRXKmp+SVcjXyVw
YDtWRWhIK2V2SDNqWXtNYHUKem9PRnhObiErYz9aPVBEYmVya0k5aWJZZGZyVXI0Jm02elRXPCN0
TEhXJk9uUDMwK1F9cVRKWlktRCMySGQ4aExBCnpeNHZ8SDsoNnJjPCl0O25eRytleztkd2NFaXMh
TUR5R3Y8YD1iaFdsVVlAKGpRI2BMdXpCKFlxdH1BQmFwWEpFKQp6blZ4b0MjaX59JGk/SUBaY1B3
UDBiMU9eUlE2X3Bgazg0cU0/bEpqYGF8MlFJeWJpQmp3XyhiZyp9ZX14WlVnQjIKekhmbms7Jnol
Vj4lV3EkUCNaVGB9VH1gOWZeITgkRypRV0VeQ2h5KCFOIzRnIVV6V0B5QDlqTnpnIWtxMk4hfnxL
Cno/LW5QO2B3NHE5QUxHNTdLRT9hIT5DNGlZPGh7S0NqcXR2bEtGUnkmPjBTOXVeNHtKaiMoM3xo
UHg4S05gbCYkOAp6TnZxRXRYRGJ6QWEhSHAkJnlUVXdUJWsyMU9TXk8kV3UmPUF0NDZ4PTlsOClT
U0x1ekBRPiN7XmIhPytucnpie2QKenhfJSNKcUwlWm5ESnEkO3dLfk93SkVkIT80VnF4Um8qMFhk
IWtJe25CSGx6PFJ1aUtia0IqYD1rcitqUzNBYSMqCnpRQjFAfjtZPWgoNXBTWF92eCFrR2lIQFEp
a3IralMzMEgwdHFnV2FyZylAO0RnPWI9Mk90bFQpYj13fTFiciZxfAp6X1BiSjJDWU8kTXw4OHhK
IUdgaTREbEMmcnowdyRFc0ctRCU0U0EqSXNleTxoJWxzO1NfbmNibW16NjgkYzhXMzwKem1WfSQ5
bEE/Q2lQY2BPaEwwSUNkRzFoLVA2bXpUVmM0fl51OE93KykpbVR9cGIwUWx+aT54JTM2SXJTO3d+
UlRGCnpSbkZzPm9SeXRmSWd1cUFEe0ZkQVdSPTFaNklwMzJDJGR5eXVGbUh+UjtnNGBrdlVeSWsh
aSpAMlduJSZpLXZsbwp6c01Nfj5ySWtBKjd2alkrUiU1TylacEpRP21EP0cmTHpLeXd0QnNxbiVW
ZyE9IXxmMmR6JV5jWEU8YjxPPlckTWcKej9XU0pzczxVTGd3bzg7RFVvb3s9RClIRFdQTkpiOz9Q
QGUrdVFuNjRVNzh8dGhTRFFTR0V8bSt8SUR0clRVfE9FCnooVVJJTzRIMT13KGohVlU8ZCFaeXFO
UGFASVlhM1lCXmZHOWVSQFI4UVgobzFyQUwleiRkJmx5aD9XaXxNZFM9Ngp6TjJEMHE3Km87MUZI
YFVlclJJQyhxPyVrPlNIKkBIaXtXY1h2JD1aOHFSZlNfQUMyYWcpZXw9cGhfMlZRTDtlX34Kentm
Q3F6PDc+Mzk9b25yKTQwcUgkcXMlSUxRNzVZOyZ8WG1UJShfeWRvRFYoQ3ZLVEtOJCUpcFAmNWt6
NVk8VmZqCnpqJj9MNytSfCl4dntgMXxCNDxaQ21KX1dybjttVkErNDImUzlXOEpEUkx3Vj54MjQo
YVh0VF9eJVMoMiZ5angzLQp6KXx0KFlIZloqJEt1d04rdHJRQlZRWWp+dzEmajAzVihkM3dAem1B
cUc5RH5pUU58bXVmNHorZFlZMUFYdSptZm0Kem81cSEyeE1KbFh3Nn0xQHNwbVpXPFcmRyZkIUt5
dlgpRXhjV0JuO2xUZWJQWmpoa2s/bXMqcCZhJWxUeHk4PUNDCnp5MjQmTCY2VnFDZV51SUZqNFlZ
YnpqdHpJUnJtTCR5Uz1qQTM5bjNWY2QjfUFjUSghYj5ac3FPMkJEUFNqaEFnUwp6eWF1WEtnazJo
cUl5TD0hQDgrfF5lU29mVlQ5bHRIJVVAPDI0QFZwe2o7T25oS1YkWkQrfTZKUEstKjV5dXdUX1oK
enZgWVF9KjhNdSRmcmpZSVBaO3dUQU15SlJUc2l3SVBgKkwjK2xTT0VaPnttUysyK0lYaHNgNT0m
cGdefkdwLUEjCnpvX159dHRJbTRaKiQ7MntSKk9iMkRzVDMyNWhlcChiaUd6WHorS20kQEtAMER3
YkYhcXlSUT5rZ05eZCQtTWBhbgp6dSkkUXlfdnVGMjI7TVJgKmd6YWhoUD5aNSM0K2tfLU99UCVB
e1BKYCQ1UjZOPW9sQ3I/b0l7biUwaDNzdUFOIUQKemNCYzBHbyg0dyMpJkByWikmfERAKSZ8RF4p
Jj9nMikmYGRSdHFtO2UoP0Y8KXN5cStjSE9ja31Pd0xSJC1uZ214CnplSz5uSTM9Z2ZVb2UtZm4k
RXViVnAxRT54KmVpbXlpOD5LcUdBWHQkLW10b0VaaGctYTlRV0YlcE98YHs0LVpZQgp6S1V9dkt4
fko8MzQlUzhuXkZvfEhmMjN+b25LbmRyR3B8XjtXeU9ZI2xRWl5qM2M0O0t3T2hLMjVIV2w+c2s0
Z2gKemdqUVpVKUhAbTBaZHRvd0AhQWIqd15VelliYXU7aCFZKUwqNll4Wkg7XzhUJT16N3QrdSVC
ZlpRQzJJKmdad3FmCnpeYFBzdWNWQkJUbno7dFAybDtFRGQ0TkJ3ZzhGQ3NqOEk8dHlIakdVdkpQ
JilPZ0RQMGdgMil9PllAUEpHWlAhdAp6amNYJVRCa2A7VmBoZTsldH1SODU0fUdqZHdoejg4ZGxi
cDBiKHFMcTJqN1EyKTxOfjUtSkNUbVhVQkA2cCslPmoKemV4fFFQczk9ZndEJHwlMmJIRXM2LSFY
UTxFR2EhOzMxS2FqVSolWHppeiZzRHVOWTBXO2gyXnMjTj1CX2k+WUkmCnplTiMzfDNMRms3YUNt
Nk5rb3tlekg5YSlkOGdFQkIpLUllaTRYVVBpYCF5X3E8KE52MEQjZXRxNFBBeDdzNzRaXgp6QD1Z
YTEpaUlUKzNfWS1za1BiJno0QjZqaFRHTH13dHg8O15ZZFBYYjN+V3BTJVEyTjBSZjtLSjlFbmts
Q3EoNiYKek57cCZ3RHBNSkhWNTE9JlBPS1FSenN0MHkkRUk0TjRtO0x6I0V9Pm5GOHxoejk4LXg9
cklfLT9rcikrajBIVU12CnpPKGpPdkZfb3pkSitRSG00c2pQP2YwdD1aazQ/Mms5ZEBrY2gkQWhx
NSE/YjtIKiFwK01VYGFBN2VgYEx4Q014Zwp6JH5UbzVSbVc3T0dXNVg0MTNEYlJVNFo+dnJacWhf
KWYjbEB0bVRMIUYpLVckU1R9TV5CfVNFRSRgP21zUkphOSoKemo+PFFjNyopcXFyWlYpdkNQRiZJ
VTRaPnZyWnFoXylmI28hdjZkcl8jSzNTMVZCTj91bF45aXVEUEo2a1FRO09LCnpJeDYyKFZwSlZk
bXF4cyVqQ19abUA3TUUlY2xZeXBfZGUjeCgmYFNHY0N7JDApQjB+MFFJPWhIK21CSjIteWV2MQp6
JEZqKk5VUHpCRHRMfjZ2RyQrenpxclFrVnk7Y005bWx1KGE0cG4hRWlQU2ZtNW94IzQ9Zyo+c3Nm
PHAkPVcyWUcKeiledEc0cXI+ZiUwJT1sbnlKcV5MdTBmUDlQPFk2Zj1SfllhbC04cGhwJSVLRTtN
fTYqSU1VeVdeeD1wdlB4WUxMCnpVWGY4PENOVjRHSkpSMloxUlF5S2docGNQemctbTl8RHg1M0Z8
UTlOKXc9QnduQXRLamgkb0JUPHB7ZEtiSCNVSQp6T1QrQGlwQ20ha0pVaG17PXlPYkdNeEE1WSpJ
KVFWWHBETHlCV21BdFg0Sm12JTtGcGxKbHZ3fVpoSjxoaHRBKE0KeikwZ2x7X3krdiprS3p5YjU+
dCloJncqWiFAS2pqWlJUZj9JYzgoK2N0dzxrXl8jKjkzQ2VqQSFGSjg9d18+VDBxCnpBXn1JKmVf
RntCLSorcEoobzYxNm0kNCFEK2YwakVebG5iJnFeTVlJSDteXlE3O18jMyV8WkhPIXx0fl49OH5n
Sgp6R3ZgWjUpM28jN1VyYV9mOyhpK3dvb19CVnkzKlZ3NSFkbV44PH5xUS04NDFye21FKTYoOSFi
T25LcmQzJVNydUoKek1jcDImKnFufXRHZSlDZmdHfVJDYFJnMm09QEJMeF5vNjc4djwkJnRRYnNz
bHt5SFc/LShZJSM2QCU/UjctKzZECnpreV9uNmRITHFjcj1+N21ITSRoTl5oMUdIdDc4KyZld2tp
cWt0PyhOWWZjJCFVUipPdmRYOHtgWDx3cjNtKllZbwp6dEJ+dTBGRntUN05fMmlBeEMlPl57YkUr
WmNjRzZ9JnxKN1lMSlA2eSNrJVAhZHQhdm5oLUY9Vy08NEB1amxhbjwKeiZ3XzV0P1oyNkJ0XzNt
bXlla3xmPWlAX05kKnFuU2k4ak5tRkVVbDxPXlhiTGp9SXFEPnptRHJ3JWNxPllpZz5WCnpTNncp
e1ZRb092PDBDRj13X0J6VWpuVFd3ZVZzd3huaCkqMlBuPD1LMk9WSlFOOSY3XzwzUm9qV0lFc3J1
dT1Ebwp6RF5VSjxzQHBBUTEkK25jUzNxJGZee3FhNm1ycUBVKEJHIUlvQWghMjReJVUpdDFIbEtv
dWAwcko/RCtTJSlzU2EKelc4RkopSWlAcUMmTjF5dkU7RE5Saj88KjVlYmJweWA9JkdOWkk4Zkwx
eihTaiVoIztoKmshaiZBOX0xbnp5fUltCnpAZ2IoKk1CVWV2cigzYFEpX25RTypYa25WSUZQPnJu
R1gwTyUkQzgjUTJVKzMpRGBkQCRYKUA+ZnlgSCE7WURiRgp6cHhEcUZANE13KS1KY2s0dVJfOztu
Tz1sZnFIQXtMN0QpOVg9SCpyVmBPeFNCUEtiI1NXZyY4MD13bFVmVUdPRUAKemhhNSZUU0hYOW9r
NSRsSSRiOXdfVVdvR2g+clc0IThle0ZYQE9SRGhDQT1jTzBxcTB7XyE5SDVCbU54ZTxwQHNgCnp4
bHs5WiYyZ2xeNzNzcWZVIyRKZk1ERjVwUj5YSXR6WkQ1TShvP1VVPzs0MUdWUXVkKCU1ZVNmbFB8
OT1hO045LQp6K1M0ST9udHxkPSU7TTwyO0QmMT07N2c4Zlc4fFZjIVZeZ0R7UU8xOWFpcVQkPkJB
OVV4QmFiJSt6SUJhaTA/PiQKekQtdilkXlAhY3REMTFsZnc2VmFPUVByPEImJE93PEFHVjN9cUd+
aGRzWlB3ckJ5MTQrVW4xWDMlUWVVYG0+eXhHCnpMMD9rb1hfUE9Tamc4UFptPnl4cFZDTEk0O1VK
YW9GTG5qS19UfGkoKjI1Nzh0eTgrNHVTOHc3WTNlZEFjRnNGRAp6blNwbnspM2hKY25OakRNXzlk
MVhiPzVzflE9O313WEdaT3RaaCF3cF5CZCZLSnchdmBwYHUqPGxHOUE5NEtadDAKenNxTCFPX0Ul
c3Ujfk5Sa3ozJlN6UHYrYFp0PiYxX2glKGlyRlEkeGlSPUAydkNROUZBTXdDXlBuU2FGKjNiZylS
CnppRGY+IXpXZyFNWlliSzJUfXJwaFpwQCFJI0EtS1c2bjdRZlVxWUU8RyRZYjxxclI5aih6Pitr
bj1vU3teXk45NAp6K0dYXkwqPXNyb2VPI3dndkh2WjFuWVB1Sy00YEdRaW0tM3t2V1UyJndBXlR6
WU9ae2o2QEFNd29FTEcxVlA5VVYKenJoNyhRYEhyakRoPChGKDVxcEwrLX0tSjIrSV9RPnxJUXdC
dCRvaXtyV2VnQzVjQzI/VGxGSTYtUzBqWXFWZ0hSCnomZWE/amBkRWNyN2tueDl1P20mWEN7OWBo
LS1TTF9MMzFKSXZsSnVteDBebVo2akhSR1lOPnAwUF5KZ2tJYHM1Xwp6WEdIeSppYHBOVy1UIUBm
UHhDQWJePX5yREZgcGZNb19Td3srSWJLWXo0RkNNRzEyP3hiRTgreHpiTjlgQUZxRlQKenUrKUFn
U151XnRjbFEoaVBMV0sxMHhKXmI0XkUxKEtRRCtfcE98fGlzM1hjNW9GZERELSs3WWJPdXNBQm1v
dlVfCnoxTHNaaiReXmZWQzF6IU9YWmxeNHBmZlIjSmJZKWNHVzhGTCk7YD0qeHoqeVFMe35xbCpu
TURWanc0dT1KViRVRQp6MXMhPXwjOTVAVGg/Yj0yV2Z7P3pDQzhpZ3ZnQ1NXKkN5YWlqJnhQRT16
bUJWJmBiQjkjaylWZCV5QzlsT3E/XksKem5TZTdkbk5gKXFkNCY0USZwKTM8a0hYNHteR0xLNEBG
P2Y0SzI8Jkx1a2B8Z0Raa3opJEUyIX1waD1OTVgpQCtyCnp6V0RsNHdRRzk+N08lbSM0UmspP1Ng
XlRxQG8+X3MjPUdvRm89ZHdpa0EzdUB6MyZyb1VHVW9iS3tuaUI/fFkxTAp6T3NncXdHJWFaXlRn
MiZLYCVDU2JVeVNIYyEtM2omNEsmKTlPIXNkO29iNSpZbEpSYylJajt4UTZTe3A8PHI8Kl8KenI/
dWFwbz9+OW1lQSV0NSR4ZD9ibn4mKk5QUk0/PDUwZH1jQFMjQmclfDNfKmQ+YDgxVndRNmpjO3xs
NEg9PXBaCnpSKFg0Znh5bXVGWU18TTtOV2UyNV5MOXdRMC04TSMwbkNDMjtydXN5QW5FciFYZ0E1
IXpnfXs5MnRXQU4jYGdDfQp6cnJ4SFhlJlMqekpNPXgweT4wUjwoKC1LTGk/YEkqQyV0WCpgIVpx
RWB+SXJ0N1hVV1NrLXA+MXVvO1Q4LTk4ZUwKelBzbTk1Ui0lfTJAeDRUJGg8alU/JT1UcUg2bmlr
bz9pPGBCJDZuIXoyJTF7MWVtamtPLVBfd3tVc30keipfVzB4CnpaTXd7TWVOamB5K0t3UWZzP0RJ
OXtDeEpNcmNoPmtUWHp4bmFWQ1hnNTl6QXc4eEojVUJxRllVJVRQfShtcDEjLQp6YTtEOWB3NDc8
dldqMDY0cz9Dc14lQyZXSV9NeFV3V193JEE1JSp5b1QyXkJaWVN9LUpeWGp0dEJ+aVU/X05DPWEK
em49WiU2eDxZMCVaTXdgUitlQUs5bj9XYENgUnVuWVhJZ2c9X29ycG1kUHJCSnZ2YT8hZSRpS05u
fCowSChgSHs8CnomYX4rPW8xPG1iVz1QQW1lRDxzNU96U1M8ezxOJUc1OStHPVpOJk5hODB3ZGBe
fHNsVW1OUllrclI3WVVGMChtVwp6UiY1NWc/Qn15ekVvV01INSU7SE0pcTRBRmAtcz1RLWFTVUky
UDV2Q2pLSFV1X09gMypJbkZNd3p9YT9uTy1JP34Kekl+dihgVTYjOWE5Y01Ralp+TUt2aTJVbD5q
eCpuV1hDbn1LWngzQUxuIWNrdzIoTGo8WXlOIyN1RXFuT09XV0lTCnpwQm00JCtvIzV9P1lkMG9Y
Kl4menM0emRqe2NBa2kwfmRMfThWYDY3KHB2M3hhPDBZJHBFVFV0Wmw0O0B3JWUhMQp6ditjU309
Vj80KEg+Qn1lZSo0I1d3ZyljcWVsO0hPcCM4VDlePXNNNF8+az1wWG5nUHpic2UjZlVXVzh0OD8x
fXIKeks5eFM0Wk1hWFY9Tm9ueiYobkl5YUolKGhPPn1wVGB4a3FAM29pRDQpZ0Ujb0IpSG0zP0Eo
JCotMkpzVXVFVlVpCno7ZU01I1pNYXtoWEImM2UmUXlCOWE3Z0wzOU02SyV2dDRrcF9wUzdSM3Fp
czhGVGtedjklIyskWk1he2hYQitOVQp6PkRoKXx3bGtGO0ZkUzY2cFd8NmpkYlNITF9QJilLYU4l
NnJGSSZIfF49Y2JZU2B5dG1FVz4zI1YoO203SnFNQDkKeml8VkI1Yj04S1p3O2RvRS1nfHU/IVJm
b2JVbUxzangmbmglcV8zbGxxcW1fKG9pIVFpandxT0p8QW50dEgkeFdlCno/ZUNjVFpTVXpiKVJa
IVBoTUgyUWNVa0RGYlQwZ3w5a2JvOCNJLU17NDxefVBgI2QkSjc7PHJGUlZ4P3tXWk5CNAp6REJa
UH1tPz4lK2NsTFd2cFB7Q2Q9YCstbkdRRzx9eXFlMUNMdSN0NmVWJj85NDdvVVIpS25TQHJyU1Mx
UXEobGoKelRUTzJJM15rPXBwUHtDZD4wSzckKWxeTyZSRmhqQT1ZNDlEQHF9WUkjZ0wwNSlldmhf
WCgqKG8rVXVrZ0g3KTY+CnpyZ0hpV0hLazFOQCk0SkFXKzcjSW14WnxMeCVURHNBdktrWTxHZkV6
YSg1aVA0WUBjezRSdUVwUkZuVCZCdD1iMgp6ZCNsTSFwUHtDZD4wTGhKKCM8VFNPeipNfkgkQihC
b0lhUmp3Plp4RylGZ011KGM2JVZCaF5yTUx+Q01TUzlvZCkKentOWWpneH59YFhoa0JkUVJuPSZR
aykpYiZgUlBpM2xOdEx1RlYmMzhQUTAwVkgwX1cxakNqNFItJlp2VEM5bklzCno8TFloRCNpZ21Q
bSUpMDNMMFMwTWBiNzFPYmJrZF5aIT54N09FIzBJekdPMmxPRyliVSVtbF5ZPU8kWnkkcCYzcQp6
bmQ8V2xoR2JFRC1JQSlsPyhnUjZaNjtIRnNiKF9PbXVramtETlRMZFc8dSgjPHRBVCFzUm10S3gk
NWdTNz9nIzcKemV4PDZme0F4RC12MU07Rm5kKGI1bGN+TmBHY0hTTT5nelRXUkcqKWxlRHgoN3Ze
QGZZRjFUQz9jM1RaO3F4UndgCnpSZjZVQihsdHIyRz9PWDhSNU9fcE9mfT1PbHFTSiRHYSg2PGl7
XyVxNWQmVXNqSERXTGFwZjRxJjdXczVzNlBNMgp6UkkyKkFLayVUcG5OMFBpbnNORHhtaiR6d1lR
fCtMLVZBZm9aNj5IYktSNVhXRng4LW9EXzRFcDF+MUhnO1QhdEEKejFeM2MtI1EoNWAtbGhUeVkm
T05MckpEKzx1K2JEPjAldz9WOFM3U0p2bmVnQV9OTylIell1UD0qblROb2k/NnApCno3b1YhZ288
X0F1Z0hyS3RKcDd2Mlh3Q2oxeVpAemB5LWo3U0dUbF9SRCRgQjV0Zml7Ykh4KDMhcFF9S1BZKXNq
Ugp6czUwSENpIVdjNXpSezNXWUE/cHBScTIxSlg+VXs2cyFUVlB0OyUjJEVeRGMoXmk3M1NTPDYq
RnMhVFdQOz4lYTEKelohezxzfE5LaT1XJVhOVGAzazFEc2Njb0lvNjEmWXgrI35uUjh7KD5mfnhk
JClzSElFamtAXnFScH1jSU51fkM+CnpFblN0Plp+a3BrV29hcn5tRmNGa1JoZSRlV2kzXmV6TndI
WiVMUX4lPHEzck0mRk15NmUwZkhCVStFaFNzP3ZXdwp6bSNvVXM+ZW9SeHM/d1J0UmJfQExtJWtM
TEFacjw+VC1IKWRBeStrMUt+PWcxYlchQ0FNMm9NdFE1UnBIUTd6S1kKelF8P3wzI2k3cjxiMSVW
MWhyNCZfWkFqTi1fYmdzZDx1RjReSHNvXkdDNmgpJmVFRlNqJG1KYCtrUD1iKih8RUlBCnpkcDhI
eGV2I3dIKjR3MHVQMTltZWxTLTY5ZiV4fClVVlV0fCNoMlpxQmkrMDdIazdOeFdKOUAxT2c3fVFt
OGU5fAp6UCo0X3JqYFZ4VD9tVCRzdmJAfih2KD8rQWkhRUQ7VVgmcSQpTHk/T0U3QUxvc0B7Zmpt
NiZXT1NCYzRuVCglT0cKej1vdCNocUwhbVJsJGRQTiNnP3JeJnR5O197YHI9eU1ETSU5ZEs9MUJW
elF4SkJfPG5rKi1CS1JYREZ5ZEtTekJpCnpHMTtWeEVuQTc2JCZmJjV1aFd2MVNvc247eklOJHRD
fDhOZWhCQjBSb2NaK31We2FDZHQrfHZYJUYjMHZsNEM3Vgp6ZWFKRHtxPkMrRWotSlYmTzhnZ1Mk
I1YyUXJAT2JJVHNiQmklODtXflZ6TUVadHdiZXloSnM0O2JKVHx0bFRFdFYKenZYJHRXKy02PXFY
TXk/Y0xTdUZeIysqOEElJGhtSWR9Xz4/P2A+enlWTX5wOSpiY15BZXlsTSFLRVJtMGp5R214Cno3
aHxAYlY5ZFluWDNVMEBqQ3QrQGpYN2s2RzBYUWg9OExCb15OOyUpYkxGRnF4JXQ3eTlEVFltMlZ2
Zk8mb3QmNgp6MUlFMUlGfihkdyZ6UnhJOEZSen1WfTVhdEc1MkJxPVJlN3FZY1QoI28/Xl8ybkUl
KkcqeEI4Zl49UTJ+ZUB8b24Kej1LXkRYd35zTWJ0VCpPaiU9PU12N2QjKkh1RTNpUGBeK2B3Sk5P
KSl4NmUxYFcleWM8M296ZnNfKU5RI0Z5OUghCnpGbEtrbV9ZezA8ISFZTGk/Nlp3fERkeVltZEdI
REk/U3dCe2BwNWxASXEke0I2cXhWIW0qUUImLStIKyp3PDcrZgp6dVNBXk44KnteSjVGaDVkfDg+
VF4ybEd3NiQoVEwlRnlgbFBNVnghVl9qZWt6Xyg4QGplNktNLSt+MWg1LWZHTmEKejUlMXk7OH1t
dVRKTzUpP0tnN0c9QyprTGcjKz57YVdBNUpCbT96dzMldWpiVT04PDE4PURWMmhrJDIkI25ENWJk
CnpWamlzSGBtTShOSHt5Tm0tTnd2cTg4aCRPU2FaYnRqUER1cUdzSnR4eXw5Vi1takIzQHdfKDBO
Kz1wMF5tJF5Ufgp6djU1MUpLUjBGLTx+aWU2U1RvRXN7VHBMR2ZIK3RHOXtYZFNDO2g+ZypUSnVr
ezJCWFZwNTZheSU7VF5TbSR6RXgKemxiR2tiRnVGSjk4Q31wYW10bm4lb20lRUIleVpOKEVwc2FU
SWRfa2ljezx8ej4wVGB9MmtaMzcyZXIoLTVZaTA/Cnp3OU5hbFBPbSg7V2o9PHVVVk0xVnljaGEt
JEkmaEdXdnE4PXNBY3tGS1lsYVhHUVdmJHBJRml8QUJHPjMkRnxKNQp6SVIxZDtFd2U5PEtrfXJP
SVJ3WF9gaVBifThPT2ktUTchV305Ukl+TFNfVWFHdz5fcTFacFFJMWV0Z1NKO3JQY3IKenNidj04
XyNJWlkldWYpPFhVfWgkbW19fWJTPSV5QyM9MVc3c1Z5XiVKVDAxVG5SeTJvYktzX3lgM359UXxE
YFJQCno/QE8rTEo/UTc5U0hkM2h7bzFRcj0xbG5VJlMlMGUleVp7O0Vwc0stPEFLal9uWGgweUNh
LVVxSitLfmt5cmc5dwp6M3g5VUlzYiRePntZPH4yVyR1VDVlKkxQSnhlRF89QHdGfVUzKFItTjg/
WWJwejJZcWBvOXtRaDlzVkckenJMJHcKelVJZjNVLS1xTCVwU3dUTUc3b2BZc343QnZmcjtlQHJ0
UXl3ZEJ1V1ZGYStYJUM7a2o4MGA0Xng0aGJeWGdTKT1NCnpAZCE5JXdnKyN2K3JfLXxmVjx9M1pk
enRMdG0yTFhFQlJ+dF5KNSUqKlQtOUN7NCpge25jR3xEO2Rpdm1VMDtSdwp6Y2VsKXN6S3p4WGhu
RCZHQUdYWTtLWV89dmVjZGx4PF5qTEtZWDgxdjl7azZhbmZ3Y3w4TmtkdFZZPiFyN3lyRjAKencj
TXZZN01RPWheUzlxUj9mZiZCdWRANzZtT3Q4VnBKfHpFdXV0ZGImO2RBU2olaShzLWBxWUlheGZA
ND0yPj57CnpYV1EqeipuNiUwYElxSH5TTj9zM284ey1ya0Y1T3Jqa1lRczFDe2Y/eHB3dE4/YSNO
RGNtQlY1PlhycUVuT2pPWAp6SV98anRBMi1faD1WUmY7MCZ8dEVwfm4yK1MlcEZKalR5aXhpNjU+
ZEc+QEBoMElQMlFlVD9OeXRGUm5GM2xYK3wKeisyKilYSl9sKmxJSWZNcUE1T157TjAwcGRQKG9A
UDFOUWdCc2FAbCFCN1otV2tRI142dkJ1JDRzQnY1P2U/RllUCnpISTZJaj99dDtXIy1WKUdJR247
WWooWU92cXJRQk89YnExQHF8YFdeJk5VOURxUTs+dCpFcDFiOGkjVU08NHwmSAp6OUxoJEdMeTdD
Kz96aVdEYCZ4JnAyU212Z2MxdUxmQGwwKzFqJXE2bXhCTU0tUkBmfk82O3t8UzV3K0ZVSlB9bkAK
eipld3pEMVZ2KkBMP3NuPU9HRko3YzF1THs2bjBCUS00dTM5TTh5PCNPR0s+e2MxdUsrNm4wQlFl
SDM7fUx9ZTZxCnpPR0hmK2MxdUp4Nm4wQlE5VGF2O0w8Sk9mT1RecTRjMXkmcDdqe2Q7ZD4zfDAj
N3F9PE9ULSkoYzF5KFU3SXNVLQp6eWNUdiMjRWNlcE9UPTZqYzF5JTg3SXU0JklvWF9tTH5LQjE+
RX1QenArVV4qPi1qKjFKNG9SVVI9N2hIP29mcTAKek95TGUheEZaenFOUUZCfTtmX3xnVi0jK28h
WXh2YCNSQG0xYUtqMldxSHclJF8tajk9YU5gTyRwPlJ0U1ptR2c4CnpRQERwSCtfNElHb1dlYSs7
ZmAwaDxzSnVCPEp4Tm1GeT4mYFRVLTJwSkI7fWx4WjU8X1c5KSNqQkw/bXwlPnl1WQp6I3dhandf
aTEqOypiUVRNNEJVbTkyVig0cmZqZCNOSF54Mn5gKG9nWilhLX14VjJ1NFNhQSNAO0YlSEJ5Mm1e
UGgKej1DOWtmWlIwcXNAXjhTdXxOSVNDenpqa1loMjY1bzljVTReTTY1WjUtNGUwZDZuMEMqSSNi
diE1aTNrI3c/d1FoCnpoMjBYZHN1WHJoI0NsVExFZkZoOFZZZnVBQSUpISV2M2VBQ09UQFpTKmV3
dyZNcSMlXnRRQ2RiNjB1NFljMXkoaQp6UH1uVUlEPz8kb002M3lnLTRkfUg2bjBDKkkjQWR4NWkz
QXB3P3NWbTMlZSFhU3pwKks1enFJK1ppI3JON2p7ZDsKemJHKSF5QkEocmEtNGdNPEY2QD93WExN
bj1MX0MpWnlDdmRUVC1mYndVV1pQPXRiUSRnbjhLWj9hMz85OyRxTSZ5CnpnPEdMO2s1SVQlNnop
YG9kISlpV081cyoyKy1WQVR5MjcySWFBenZxcVpSSGZnP28mYG92bTw+UmsrNn4rflhEUQp6OUVF
Iz0hYVkmcG99X1QrRCVfSjU/a05obCVIeWMmNlRsVUFPR009cmMxdUxmNj9SS1J3SDA8dE00YzZP
T0dKZWcKemMxdUtVNj9SS1JSVFh3aUxfSE9ET0dHNlZjMXVKSjY/UktSXiVRblhNQk5tMk9HTCNL
YzF1TDk2bjBCUWxAeFlNCnpNMTIlP09HSVQ5YzF1Sn02bjBCUUg1N0pCTD4mfSVPR0VffWMxeShF
N2p7ZDt0UVU0bSNDI1dhT1Q8aFVjMXkkQAp6N2p7ZDs+PXQlUSNKbT1FT1Q+JjhjMXkldTdJc1Ut
RUVhWTxufDBfcyU8OSpuTnJnTEs7WmBmJDhpa3V1eFV+dioKemZ4PXk9YU8pS0FzUzNBVjtXakFU
TUc3fnFhMnBsd1Z1aWF6O1dqRFVXYCZ6a3hKd284R0tJVGI7a0dFOzYkPHc+CnpnP3FaZlU4IShh
RGNteUA/ck0qdHM/UCZnKmV3eTJTSio4UEhDTmF6NSFGYE1FZklCQSpld3dpUkBmfk93Tj08SAp6
NW1pOyNFZk11cCpld3kyUk07Jk1IQntJdzUhRi1KRWZJQjcqZXd3aVFganZMd05sdEU1bWkjeUVm
TXVtKmV3eTIKelFQP2RKSEJzMHQ1IUYhR0VmSUI0KmV3d2lQfW5VSWI2P21rNXdsKntFZk1vdypl
d3c9VUR6IVZiNm5VaDV3bHleCnpFZk1vdCpld3c9VEclWlNiNk1DZTV3bHA+P1FHVmVZY1Epe2hw
dHQpWERaeVk2ejxzeWNiJnBMTjh6NVVhTC1lPwp6PVBUUmA2eit1emNmRz5CTmEwP3JhNCU3fjh4
LSFQM1V7TnotSzIwWVFARUVhKyQkOUJXYCVwRCFvNW8yVWFmR2kKelFNZythP3pJWntJKSFfXiQ1
R1lTZkdnfmxoe2BNTW1XWX13PzNSZFhFOXtudEl4Rm0haHpjdzBtV2JMYT8zUmVDCnpEKHNlc2RN
Zk9laClPRSNtV1VjRT8zUmU/RGVSVnJ4KygwSWg+OXVmbVdXeUA/M1Jjc0RlUlZyYFk3eXtoe2BE
Sgp6bVdZfXQ/M1JkWEREME1xSXc8VXhoemNtfG1XYTc4PzNSZEdGWUsweGA3WjMxaD95P3ptV1Zr
bj8zUmV4RSRvKHYKemNgZlhnaCM0KkhtV2E3NT8zUmRHRWJNa1I+KENvOHQ2enVTc0Jtdm14SGxg
QFROTGlDM2ltZEpkJU1FREwqZEAzCnphUEx5TWNQcmRgNno7dFdfZGJQdHpyeCtCYTM0Xig0PVVW
OzZ6OzxjX1lzQnJzS1J8cjtYYlojcEhSM0BEJV9fTwp6PyRaa1E4SE18LSFoTyE7c09tUj5FOXtu
dCR9OC1haD8qPHhtV1hPQT8zUmMrRTl7bnQzTT1mRWh9dFU1X2duM0UKem5XKEQ1YXtMfGpSMlh0
WlI4bkRuQWJWMG5oMjRYe3FrME92Mk44OHM3KDVFSyQ1QW5iO3J7I2B3Tmx2cWlLdnBvCnp7N0Nr
c0pfPnNAZUBBNSRoRFFAbzZOTnBSaC14VjgoTH5maVZSJHFWNjtSbHRpSjFHczkhPG9vN3hyaSg9
RFY7Kgp6NkVWfDtKKGBGKUY2X31uJXgrPGlDU3FPLWRvJlI8VEcqcUJuOUlUKk9+Zm5+X1VQSEhM
JF9nOHpZZzg1YUd6SlcKekZEVHA+NzRBejRjWmI0I1M+ZTgtYUNhKSlSfjdEUzNiJDNeP296bX5F
OE5gKl9ZSDtucm93JG87bDhiSy0lK15sCnpEJXwlSj9qRDh2MlpnJj07bDhoTUtUeDxJRCVfNzA/
I0J4RWp+Kyk9LXYrTCpYOHtxRlNKPDxGaD8qPHhTd0tYIQp6NzR8RzNxUnQ5P0chWWU2KnJTUTR0
LT5Cbkx7JH5gWGQ+I1Z1dHlWN05yZ1J7aCNEJkYoTF97RlZVSCVGWlZHIWUKejVmeEx8cWx1YE0h
WDhhVGxAI2A5Qkk9e0NNLXgjUWcqfT54bmtla2lMe3Zqemswem9IM1ZTcFc2O1JsdGlKMUdzCno5
ITxvbzd4cmkoPURWOyo2RVZ8O0ooYEYpRjZffW4leCs8aUNTcU8tZG8mUjxURypxQm1gbGBrWT5B
amYpTlg4Tgp6dmt1KmRgVFJRYzZOVVJIaDVLaVBgPkRlSE95VH1UO3I+PE9leSh1OFBgRjx6K2Bs
UUB1TjNhejc0RnZ4X1p4LSMKejR+NkAhIXU/TCtleT8hPHNjYD9MYVIwNHZlXjl0VEQlX3RHPyN+
TU1LTU1DM2d9WXpqeztGYD5KZFVjcTQ7PTBACnp1cUM0TWE0I1c8bmsoI0N6fjUxQWcqXisxc0kk
VHpPKzx3aV9HbHQldDF2djhoXml7PShMfmYhVlVIJUZrX3ZrPwp6NWo5bFVxbHVgViFYOGFULTR5
bXtBfVhlXk0teCNpZyp9PnhEazwjSU1BUyFOazB6b3IzVlNwV0hCczIzaUt2RmMKejkhKjNZNiF2
SCREeGsxTzZFWExOSihgR0ZGWU03byV5KGdyQ1NzLXdkbyZTcVQtYytEbkJCcjJPfmt3d19HbHR6
Cnp3Nkk0TEZfKG9zbnV1OH0/OXNEWGhmc3VTYiUrbnN7bzJIYj5wc1ZhP0xObmM/Pjt3QTtyTVhn
LTtXUkxlVTE8Qgp6ZVUxPEZlVTE8SmVVMTxOZVUxPFJlVThsbEtGOCgmcEpUSXQmI2AmSD1oI2Yo
YjhJZn5JV2A7azlHZWUoaj9ELUAKeiRMMGl8VzN6KEt2M2JHZyp2I05fWTtOIzVIYXF3bm47KDNS
JUA5N3Y8X01vLXZxWTduc3pFXjJKUFV9Wnl1ekxaCnpNQVRlaSZqS1E8dCp+YlM1cGBEQnFsdV82
XnFwWiNMfld0KE9ifUl0ekI1Nzg2Wip+c1FBeX1LNkdSUTY/QFNRWQp6Z1Q2Q0MpRDhPMTFXX15R
SX0+Q1pObzshd3R5M2xGSkNvbTBBTHUoMUx9ajR3T2J8N0p6QjU1bzFOelBjUTN2UWQKejZHUjF8
P0BTUExrRz9aTyVzVHFjMVRvKn1JfV5sQXF3aD0qYkJ3Ky1MQ2h9dCZJQj45PXNPZHtqSDImTTVP
YXlYCnpHZU9LRWBwJlNPJXtueFFgS3NEclB1WVBBY2FYdnp0WjtgWStAVDcwbjhGPmRhN1FUSWtx
VVF8IVgyJH0kMCohRgp6ZzxHVT5peHFCMjtmNTclTUJ6cGlaY08zRTY+ZFZ8bU1HaihnPEdhQDRe
ZztkNzRBNU5kI0opNHVXLXZmaiVPfFAKemh5Rj15aUtzbUVQWVI7dSZfNX1OWUQ1MnxBbkw1Sk5B
b3g7dGd1SERRQ3NMY2wwQiZeXmNATUpwM3J3QmgpUDE9Cnprc3hYYWVNZj8qOWBxZHZxSGZUNEIj
NFNaLTtwM3sxJHs/P3MxbyFZMzhGc0djTzswKUs7TXhkWTY1Km5mfldAYwp6OVNOY2koMDMkPTNQ
OWhIQW0kIUBNfW5Bal5jQExlelJgQ2loP3ojO2tzIyg2ZU1mP3JVR3lDWlZxVmRBQiMwU0IKei07
cDVaNWA5TzRtX19zKlZMT3wzPW1nQj8qUCh8Zys9Jld6bEVSJj1hMVUzdzYkPHdWZyohI3pQRjEp
XkQlXyhLCnpabCVKVnJme2IjKyErZFlyb3VnMTttJVVIJDAqI3szaW51cmR6YHtPVWc2R0J4Rjt5
dzZCWGBCM1V7dTtKejMkTgp6cUh3RGBqeH5lJkw7b0RNTHt1TDc9TEF1Nj0ke2lyd1Z7N2I1T3Mj
V0JTQk9jYGk9eHFUailDeUx7KntoTkQlZGUKeno5VF9ZNjhlcT1RQTZsRTU9OFomPz9AMUpnVDVt
e1IxRXIjMVdfeUtJfSR7ZHB6bFohXj98LTRLfng2JWpzI0g/Cno9c09aYkhLNlpFNU9zalFCU0JP
RWBpPXhLX3Zrd2sjSF4kNU5EJVhsejlUYCpIMlJKTkZ+e2dUNjIkREg/P0AyeQp6aW9QUjMlcWFT
ZjFUbU5CSX0qZSFxVkVYWCp7bm43VkxyYk9PKUF7XjNiJEl9KStwU1IhbVUtZjNsIzFgZzxHZF4K
elBnU199M2IjU3dFPmdIQGgxO2xiN2MxTikzYiNxJkhZP25XIWQ8RnhtbnEhazNiI2UhdTI4dEFE
Y3NXKT9uO0hiCnpPNXZXTmE5NFhBRC1aUkR7eUEpa3M2Nnp+MzhMb0VLUFFONEw7c3YwPkl7OEhm
fllYYDlTTmVnKDAzJD1zelRxOQp6QW5GTnlNfW52JV5jQE1KaFJ9QjtpMFZQI2tzI15AZU1mPyo4
MXgrcHFFXnMlQiMwX08tO3A1ZDFBUnc9czB7UVMKejM4RSZAY08tfnZLO014ZD5Idkw1Zn5XeFc5
U0xJWShSVTw+U3g0V0lBbSRyPU19bkFYXmNATGVqP3M0e2h9bEtvCnprcyMoM2VNZj9yUVM9PU5W
bEw1bEIjMm89LXgwUjZTJTxFe2UxMDllUl5ndGhhTC1iPlhEaSV3M2lsal5kIz1KZwp6UHZNQGdh
NCU0fTdiQEtLM2lsI35kJEdkM01CIzJ3eFIpeTJqUzY+QCFvNXU0VWFvTWpQYEh+Rj92KURuRHVz
S3MKeiFvNWJ9WmMoX2BEJXxUNz8pNHRXJTB2QzNlLTJ3QkRpOGcwZn5ZejQmazNVMSZfNUBMSXoh
KSlBU3cpZk19bnY9CnpeY0BNSnM/Y3tOaDxaWmJrc3ZBd2VNZj8qQUBtJnlxSSVHR0IjNjJ9LTtw
M0gyN08wQHMxQGBiMzhHNVNjTzsxVgp6SztNeGREZyU4LWZ+WDFmOVNOY3UoMDMkPUl6Wm8lQVN3
V1RNfW5BcF5jQExlKjNvdylpMXxqfWtzeExvZU1mP3IKeldBcSZmVnNfRFlCIzMhTS07cDNANm4j
ZzZtYG41PjMxU3d9Y1pCVjEpfWMzR0tFRHBWUVFfWENhQm8oKXc8ejNPCno3NEJeY19qWk1RaHIr
IzY7b2haaT9eZHw/REJPRCQ/dEtkUGV1Y1lMO1hhXm5BNV4jeERjcHdAP2pzOEtRSEFATQp6IWhL
eGZLQX5gKlJKY3ptK0B9QHBHWWE9dmg1TVl4dkdQIVY9JTIldWh7ezklb0ZIbHJ7ZDBuLUh1VFI0
cVIhQkYKekIhfihfLTtwM3szdz1qfHM0RGF3MzhKM1JjTy1+UExmP0BmWTZ6VzFmflgjSjhWUkNx
Jnw0JmtpYX5GWUFaaThPCnpNMXJVaWJRMX1wS0Z+aVRoe3swIWtSV09Ue1g+R04ySnthSnE3S2tN
QiF+KD98QnhXJjl7b2R0bjA1M0kzMVlzewp6S09+NW1NKm9sPzx7MTQkZnx5PE80KyZ5ayhMV0BK
OEFibilBbSRTTkx4UHdeXmJjVj5ufDBfbSU7KHBrK1pGRWYKejNpa3p0YD1Ze3FOI1g4THhHeVcq
Un19Nn1oNU0/KWVORXhFRCVAUVBfalFINFRqOVE7YU5rdDhaejxmajc0QUM8CnpfZyNoaXAyRlJ1
YVF+b2lfYlN9Pzc0OFFMX2R8dklrO2sjM1AqPjsrIWpfMU5MU0sqfFk2KlFvZn5YPyYxcXFebAp6
Jj0ofCMlMFhYe0FaaUFFTDR2M2peYVRsYFBTNik1aHpkYnBrUldPVWVMO2UjM2lKZ0RxOGB1fUIj
MjV0VXl2WWIKejBEVkQlbjBAcEczMVomUzdiSilvTV8tVTI8e0V1TGZ8ekNXMXFvdCkoSEE2JG5N
R2ZhQW0kVyhMNHVlfl5hVGxHCno5Pz0maGgjNXAqa1JhdmBlTDtlbEhTYDR1ViFxSDlCIzQ8cFVs
NndVbT1ueGo9SFJvSWB1TURiO3xGIyNBS2VhKgp6SXgkIUleRm4tZiZJPWNtNz1PcilQajB7eU9T
LX5oXlRRVlpiLXt3WUZ2e0tWMFhZMTc+TnpKamVGRCFPWnZVT3wKenVmNl8/JnI5MCZ6dit7Nzct
WilZYlVPYnhfIU9QQVB0eGdwYXRfeWszO0tXV2xYRjs4Xz1CejxnaXBqKEt2JDJUCnowZ0xWdjFl
eFBeS01eJDdxSkkpSiYhVEA4TEB9ZVFONj50V2VrTz1vTU9UbFk/SmZGT0xHJVYpSiVWPCQ9b2Rp
dQp6OzFmKDxpVTBwRkBPZFFtNDhxPSNYVjZhZXFoYWA9UVRXJlBTIWQ4TykqM2hMR2B5cldWRDZu
YVU/ejdNRnUmTSYKenorQUhYZmNldjIxTG9UT0BjI25fe3VnfmwpJEUqRW96SktgXj1hTG9RTl58
VHpqPnl5Wi1JNWp6ZWp3NCF0SmJaCno9eE0xUHlOa2xAcyZLbjAtMGxqO3RBZyp9MH5LeWhoMSpO
dl9FeHhrNm1ET0lkeXZCSXIqSUVleGN3RkcwRk5zeAp6LT18VUolRjZje0xHOC0tU3daY31fYz1s
QiU2RlRmY0lDVFdQYG1QZFVRb084ZUwreVdAX2tXSXlZaFdXUGBtUW8KekEqZnlYekFUOGshTSY5
ckRoQnNmZn5YYlRUTTQye2FCbjR1YG9PKUZBU3dnKlIpVk1yKyo9OHY4Z09xVmgmc1QlCnpsXmBr
cl9mfj9LZCkhK0lWJUJrUUM1WlhQeV9Gemw4dXdPJG19QV5xMzFXNn1aellJJSNsNGp2VykkflVm
fHlKNgp6VG5sMHIoUV4kbm8zR3NsRntgaXAwflBLZGcqI1pgNHBGIzY3NDkmRko2eiQ4UGBEISU/
a0kmalRIJCFAXjViMm8KemFFbGFmdkJDezArXzF1cERCUCZSalZhdT8hYzhkTDVgfGw7YUxXfCNB
cXNiXyFYMmtANF5fRDE2PmhvNXZHTlJwCnpMKGpFbm9YU0pid0lGSF5jVn5qQUhyJDtGcVIhQkJF
cjwlay1JKlkyM3E5OUBzNERiYTMhPEtJY1A1QlJMZUk0egp6WTZ5MntmflgkIVRubk9aYUNhdCVp
YjJue0FaaTZZKk1nYExeanImfktHMVY1aHt7MEV3SUZIJko9Y1AkMkp+REQKenE3S2s9RXI8JDAm
JFNAdDl6RUJCbjA1NEEzdTM7fWIxaklPTSRmZSU8YF9OS2Z8eTxPVG5sMWUoUV8/YDhBWj52CnpB
bSRRMSpNZ1d1XmpyaFlXKnNeS3YtOz1kIXhaakJnKiE+JVBGQT53RThHZiZkeFhOQnFIdzF3KyM/
bjRRM3woRwp6O1o5U3koLXJPdmcqI0s+OTw2WF5EY29aZT9yZXA3dGluQWA7VTJHVz1QMkEwNnor
KSVfYXVjb1NLKiRsYThGVVYKelJVWEdXYk9KY15UI0xyM0pvSD0ocVVPK1pFckBERSYkU0B4NDBq
JUwrVkBkWjc8I1MrUUNzTV83RFFGeTlTbEwjCno2TUMpJVFBeX56N0ROcjx3U3lxNDJSK3c8czJs
V0wzIS1Bc2IxakhrIURvRjZxRHMobkVyfEwrJiRTPmIxM2xNKgp6czBzOTMzISltKGIxakhFSytt
LXhEZ1pzI2Z8el5zVG5sMj4oUV8/YGA5e3lSQVo4anAqTWdYMV5qciZLY0Z9ViEKemg8UWNOd0lG
NWBKPWNQbU9ZfmR8Vml3Vko0SyRsfD1zZThvKlAlJjtKNzN7ZUU4SDR8bl5MJjczVWA2UlU4ciNE
Cno2ei1gQ3dfZjJrREJNS35IPzQzUjc0QmsleUZ9cU9EY29qLW5eQ3crNzQ5O0h5SWtTNkRCS2th
X2NWb2p5MjQkbAp6YTkxaFpHWmdNPms3Rkc9NDsqQH5NZE1UK2RhZWFnYkxoRGl3QSFLcjFXeyom
ODVCZj9xMzJvPHdTfUgqS354b2IKenRfNHZ+PSghZHxDODZoOTVIKkNKWWU3XkdkYWVhZ0h8Vigq
TTglLXpTYGY4QG9AK3I9MzN7I3RRNksySjdEUSNCCno9VU5hb2Z1M3RZUjBEZGgxeUtqK3hmVm5Q
cHl5ZjtiQn5eRExDaVhPdF8zbVE9KCFmZU9yeiZvNU9hKjRZZUNFfAp6ZGFlYUF1anNpSiNFaGNu
U2BjJUlvQCt0T0I2X1pZWDByfW1nSVdETGJnalpZUXtrU2FhTC1uXz5sRSVlM2luKXYKemQhRThR
VSpUUyRhNCVIMj5sTi1yM2lvMSNkeF5yYHBsfmwkeEVtR2pDV1UqTSFvNkpLVVpIUnxFOEhzOz9v
fHIrCnpZSzQxXiFyaHs5dVR7OSREY3RLbGomPGw3YU9rLWZqWj1CKHhmVnB0cTMybzwpck92SExE
VSZ+dF80d0g9KCFkfAp6WkszQns1TEpicVllQ2MjZGFlYWdOJDl5Mkw9QjxtU2BnS1BvQCt0VzRT
S0V4UThEUGI3RFRPfT1VTmF8Zn1VJFoKeilDWVI1MXlMRjN4ZlZvQ3B5eWY7KXF0TEJMRFRfeXRf
NHY2PSghZmUrQHQ0TzVWTVkrWWVDRjZkYWVhQSk5QVN0CnojMmxtTlNgZjJ+b0ArdE9EfClVNEZ7
OXxZN1F8ZWw9VU5jNmhATllwKntubHZ6XnJ+OWRaV1U8TiNXa0NhQm9xIwp6dzxfRyo2ej1UYF9Z
UUA3cl4zQlU7b2h4cT9AX3EtRCV8QE4/KT9nUHRIT09pO1hiSHZBNXlwdkU4SXNFP3hQQyMKekZA
XmlNIWhKJkZLQjtoQFFuKmhtKy1EVC12a0xiKWs3RkhyMTMyX3RpXmkhdV5qciZ+PUZvRjNoLXlS
NndJSiNZCnpKPWNQJEYhV3B0cVBFYTtFcl9aQCYkU0B4MnxkPz5zM2kxVTMhO1k1YjFqSktMQz5g
eT5JT2E2Zn5Ya3VUbm5PQgp6Jn5xKF9EblpZK0FuRjQ+Kk1nYEZeanImfkNlVSomaC15STN3SUoj
TUo9Y1AkMFE2aTdWKCFzJUVyP2wxJiRTQHQKejgkSCo4bX0mR30zdTJEWmIxakozTWJFViQ8YHE1
SGZ8eWJDVG5sMEAoUV8/YFN3em5AJn1gUEIrYzJ3TmhpK0g2CnombncmKTZ6Kz0oX2ElazlMKmMl
eGE5PmZsSX5ERyQzaW1hSStwMkpQRGNzaTs/cnckcWhRZlZRO2w4REMtJlZOcQp6REJPMXk/dDJQ
JWtIXyZtellRRkVubmdwKkVQOSMrRntrS2g3UX0zI3ImJHA1aEBOSWElcGlLMjF1PUslWCVAdCsK
enB7SDM4Xk0jJmZMQ2gzLW5ndWFPPXhHK2o/NFlNdjVjN2hiVzxrc2RkWVQwPjd3Qm1nIzRNbnZT
ckZHQko8V28rCnpeNXwoNiM1RzR4dm1tWkVkWVQxc296Y0BRaCUxYnFXPGd3QV5mVXxOcy1tWUU9
cEtCd0p6cHRwWktadktOeFBHUAp6WFppXmtvdTZQWTQkYnFWezJtTnVfVG42NHJ7SVFiQFRtZ18l
KXk1Wm4wRnNGVWA3YFltYHt4a24zSStjbjZEaS0KelVAbCsmZjQ3c3NULVYpNnpfc0dTfEtJRGBg
RmtmcGA8dSk1dkgzclM1YFlsZStgYkM7QWNmbWM7VTI3VGB6emM1Cno5Pj5iZkEzWGhuRkdPPytQ
cm4yV1NvQUFGQ2B0STt6WUNnYyhYUiF+dio8VTF3ektGejFrSmJUd31LV31eZ0JWQAp6VGw5TkRe
YWZBQTFucD9pZStrO2pxVz4yMzBFXy0wWGxJTjVENSRYTFBsOSVfPStBPDd3ZGo4WT9QayRtMW5x
OW8KentldCRlMjw/Uy1UXj91PThWeFBsKDt8Y0E7aE9EYjUhJEZNK1N7VDVMQ2lGczhWRipKQHpn
Kk52eH16JmZ8eXMtCnoyfD4mI28qRD5aRX4lMlgxIWZVWDRTOzZ6NHM4JiNgZ2RwdEQlP1F8Y2Qp
YDhxSHU+USsraGxMeFdYTndhN1FaSwp6UTNgam8hdHZWVyRHY0dCN0FmM2ZnJlJgMVZUQnR9eEtW
ezBRQEMtM25eM3FWM2IkMEBtTVBwcjZ6KjdzSjVKI3EKenMmTDBFKztXZk9TdV9YXlBycFJ0UjM0
c3czOExva15oKiVjaE5vWUdzNTNuTTU9NGRKPjZhakMzczFpVVFCYD5RCnpDNVU+JCg9UzAoNX10
a3VxSzVHRk9BeXRBcihjNG84JEE2SU04KTlnbW1xMmRQcm4zRkMzeU5KaTJBX09GRntsVwp6b18t
MFVDaCppaTVZPlJFMjc7JnFKVCh3UjE+bG9mMVRwdGBZOU5TTiQ1UjdBJXJ+QUkyeDZ4MylJYm4o
akhkPkkKem18WitJNVg4TFZzZXZHNzZpKkVWRl8oQzFBYyRHU1F2O3ljdFYxVllSe3krd244S1o/
YTM/OTskcU0meWc8R0w7CnprNUlUJTZ6KWBvZCEpaVdPNXMqMistVkFUeTI3MklhQXp2cXFaUkhm
Zz9vJmBvdm08PlJrKzZ+K35YRFE5RUUjPQp6IWFZJnBvfV9UK0QlX0o1P2tOaGwlSHZwdlA1XzZl
VSFyajs0Xk9gWVFGRDB1QzVVUm4oPVMyUDhKPk8jcVFkYT4Kek9BeGglcihjNG9EbT91WExfT2lA
bW1uJCRQcm4zRkx3TmNuaTBaLTlGRzE3fG9fLTBVVih8MSE1VmVBKlV4S0ktCnpKcEI/eGVjPFZy
QVN3ZS16WFZZZWN4b1ZzWVFSJGlMRFRgQjhWSTVTQFlGeU1iQzBKNmZ8endZSDR3eW48RWVvbAp6
VypTY28xVG57V1k5TlQmI1p2PTglcXlONjJ4M09AKUlibihpS2htRm1fPEFfMEdpREBiUks1KT4o
SGRhb3YoMUsKejY+ZzJmTykxPTNnfVhyRUU+eVU2M2luaW5UZCF+JTZ6KEYwbl53NHUzVXslPlU3
flFDNm1HTV4lXyFXWjNVYF5wCnpVOU5DajZ6JlJ6ZHohKk1VRSFgJnhUX1RJODQ3b2AkRlVCYjJN
JGxhTUJgSypvXy0wVT1KNTFPNVk+aktVeEtKSgp6SnBCP3hoMmlPIUFaaU93elhWWkxjPXshWGRj
eEIkS354ZitlaEgkNkBicFUlKXF8JkJmflhyantTcmpRO09VbmoKelk2VlpmMVdfZTtgWHp8Xnp8
JHs1UjBmYFkzOEUoTylJYm9gZlRzcTZyfl5EVDVKVXl3c2V2SG85IzBKZkczJDcwCnpBYyo8S1F2
KlRGR0BjcD1WdmgwREtvR053cnZgJFVTM0VUayNFanlwZmd0NypQWW5ieWkrRX1QR0BFdGs4cURn
fgp6cD0lWkhuRnt3VGc/cU5iVThpdSpRTWwoUy0xOExmYDNtO31nP3BqR1U5V0kyUW4oaUArKUVW
aDI4RGE2IXJpRUYKekghMGw5Nno9NTtfWD5yKFM+YXgoYUlhRmhTMWE2VzZ6JiM8ZCMlRX5QVF5r
ZmFqWmt2Zld5LS0oS3daZHIoYzRvCnpJWHdMbU03ODFSbW11bTRQcm4zRlZSLXJfaH15IV9GRnts
bG9fLTBVcDc4V2I1UzRfZFV4S0oxSnBCP3hfMkI4Mwp6QW5GRUJ6WFZZK2M9eyFYVEVXdlZLfnhF
emVoSCNKQGJwVSVtNFQ7VWZ+V35SKWV1QkE7SGljbj5IdHFRMVdeSGEKenN2KEhFJDVSYkslc1FU
RzJ4N2tSUjZgSW1qaSh4ZG19NU5FNVg5YF9zZkhsdDY7Q3c7Rns1fkBBJjl4ZVF3PjRQCnpCQSNq
aCYxTX5YMTdgSz4mPkkhKk8kenNCZz9vI195O2I0ZnJmX2RweE9YVnJJfkRGLTNpb2I+ZHltNHNT
SzsyTAp6YVBMPlJUTlVtRDNpbTtVYDtmd1lTbThkUmEzNTg7azE1Pjg3NDghWF9lcThPbClgO2w7
WGIycXBIO1plY152RHwKejheR2J8b01AY04hX3pySSlFdTc5MzhMRVliV1JYO2hOcDlhczR6VTg2
R1V5ez42ez57M1F5KypRQlFhfUN4fVlJCnooPlghWjVJJTg4NVk+WkU5MT12YDsxaD1nUThEPCRB
d2twJUs1PEE4UmYxMCg1PTRGQTZOZHkqOFRpQkBMRFUzMwp6c1lNWGdmS09APkw+PUloU19EeDZf
QG92PSVzb0QtTUcmKSZQaWhnd2VCK1peMVRvWTJxIXZOVUYrUW45NVZNTzwKelk3eFl8Oyooa2dG
e0FqVDdEM0Q8S0IrfHp2eHJZPjBoLU1eYlFAOyU+KEsyQV9qIWY7ZzJIYEs7bDhBQmNQUU1LCno3
NDludmNjO1JBUnBHdi1hOWI3YkVgfEhMIXJpVEstJXotM2RLfU5VK3JaKElidElRdVZTS1dWQWco
UHdTd3wzOAp6NmAhbWxpMGc/QCkpQjsmIzMkPHI7dV8rVWJwJnpzQFgwIVl4Tmk3bDlZSV8lZTZv
JXB0YCRDNk0tVyNEcFI2TkAKej53ezAkNXlYfGpDK2k1fW4mNlhsMWFVUiskdlQzIzQpfG1wTDBr
Y1J2SlRLYTxfUDtyO092Tn1AOWloPHkhTX1mCnooZko4SmFpOz9tQDc/dypmX25WektLQTNzWDR0
PD9GQE1GIVYkOCQ4eDVKb151PmdiSTQpVDl+WXt1Vnp7e09XQwp6ZjhBI0FINGFval9ZWlkoLSp2
RDUtSmowNWFGPSgjYmImZWdAREpUUDFkYk9GWUo8TiYwYj8lNERIem5zY15KRTQKell7QSRHO3w3
Y2VWRFA0TGNaXyNuKDklekYoRWotVUUqTkw4bzFQcnBGZzVzeU9fUzRXZlAzKyR0eXtmbTxLflRQ
CnpYOWdkPlclYmtzPngyMmtsVEtRK3toaDU3YVFyb1FVdj15SGVlUF97IU18Z0VuJktiJD9wQCEj
V3ptQ254Iz8hYQp6ZjZTbFckTjJ3PHV7e1JrS05GK0NJMHNgZDRFbnojI3MmPD1IaU47cXVmKjZC
PEpsTm9rTHhrR0tIdEtxdF9QT0kKens8TUFIJDw5VEJiTW5Ya3xOYnotVj5zOTg4I2k0dnhuWGMt
WVYoWlVaXmgpTDgpbiomc1g2X2BfUF49d2lnakJTCnp1SENTNFFodlA/V316MmNkMEtlPCMhYyV0
VXBPXjJ2KVJ5KmojSyFqX1J+VXpuMWNlcnZ0bj1vPVB8YVo8OXttLQp6IT19dkY4RWU8QlRScWlJ
K3UrRjEoQ0RERVdHbHt6Pig7SmFpak9aYiMlNlpXVzlZLThyUkcxRWVlZT5IZkIqVEwKeXRVJH0w
Z3MlcF8yd3c8KGhCQERVKXAoa2otSnFSbk1UfExgPWcrMj85VjdRaXdJNFpjXmx0eH4/ZipZPllp
akhPCgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvZGlmZmlTQUMu
dHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvZGlmZmlTQUMudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmI4N2MwNjZiM2FjN2E1YmFkOTI4ZDY2MDZlMzZiY2Nl
YThlOTViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL2RpZmZpU0FDLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDQ4MSArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwg
JiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3RlcgotCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfMURUTUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUxL2kz
MF8xRFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzFEVE1GXzE2a0h6
X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBfMURUTUZfMTZrSHpfbG9uZy5wY20KLWRpZmYgLi4v
ZGF0YXFhMzUwL2kzMF8yRFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzJEVE1G
XzE2a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMkRUTUZfMTZrSHpfbG9uZy5w
Y20gLi4vZGF0YXFhMzUxL2k2MF8yRFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzNEVE1GXzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pMzBfM0RUTUZfMTZrSHpf
bG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8zRFRNRl8xNmtIel9sb25nLnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzNEVE1GXzE2a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
NERUTUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUxL2kzMF80RFRNRl8xNmtIel9sb25nLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzREVE1GXzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1
MS9pNjBfNERUTUZfMTZrSHpfbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF81RFRNRl8x
NmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzVEVE1GXzE2a0h6X2xvbmcucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfNURUTUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF81
RFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzZEVE1GXzE2a0h6X2xv
bmcucGNtIC4uL2RhdGFxYTM1MS9pMzBfNkRUTUZfMTZrSHpfbG9uZy5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2k2MF82RFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzZEVE1GXzE2
a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMURUTUZfMTZrSHpfbG9uZy5wY20gLi4v
ZGF0YXFhMzUxL2ExRFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTJEVE1G
XzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9hMkRUTUZfMTZrSHpfbG9uZy5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2EzRFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEvYTNEVE1GXzE2
a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfN0RUTUZfMTZrSHpfc2hvcnQucGNt
IC4uL2RhdGFxYTM1MS9pMzBfN0RUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfN0RUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9pNjBfN0RUTUZfMTZrSHpf
c2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOERUTUZfMTZrSHpfc2hvcnQucGNtIC4u
L2RhdGFxYTM1MS9pMzBfOERUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfOERUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9pNjBfOERUTUZfMTZrSHpfc2hv
cnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOURUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfOURUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
OURUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9pNjBfOURUTUZfMTZrSHpfc2hvcnQu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTBEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRh
cWEzNTEvaTMwXzEwRFRNRl8xNmtIel9zaG9ydC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8x
MERUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTBEVE1GXzE2a0h6X3Nob3J0
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExRFRNRl8xNmtIel9zaG9ydC5wY20gLi4vZGF0
YXFhMzUxL2kzMF8xMURUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
MTFEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExRFRNRl8xNmtIel9zaG9y
dC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMkRUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfMTJEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzEyRFRNRl8xNmtIel9zaG9ydC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMkRUTUZfMTZrSHpfc2hv
cnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNERUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFx
YTM1MS9hNERUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNURUTUZfMTZr
SHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9hNURUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9hNkRUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9hNkRUTUZfMTZr
SHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTNGMDAuSU5QIC4uL2RhdGFxYTM1
MC9pMzBfMTNGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTNGMDAuSU5QIC4uL2RhdGFx
YTM1MC9pNjBfMTNGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTRGMDAuSU5QIC4uL2Rh
dGFxYTM1MC9pMzBfMTRGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTRGMDAuSU5QIC4u
L2RhdGFxYTM1MC9pNjBfMTRGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTVGMDAuSU5Q
IC4uL2RhdGFxYTM1MC9pMzBfMTVGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTVGMDAu
SU5QIC4uL2RhdGFxYTM1MC9pNjBfMTVGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTZG
MDAuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMTZGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
MTZGMDAuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMTZGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfMTdGMDAuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMTdGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMTdGMDAuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMTdGMDAuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfMThGMDAuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMThGMDAuSU5QCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMThGMDAuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMThGMDAuSU5QCi1kaWZmIC4u
L2RhdGFxYTM1MC9hN0YwMC5JTlAgLi4vZGF0YXFhMzUwL2E3RjAwLklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvYThGMDAuSU5QIC4uL2RhdGFxYTM1MC9hOEYwMC5JTlAKLWRpZmYgLi4vZGF0YXFhMzUw
L2E5RjAwLklOUCAuLi9kYXRhcWEzNTAvYTlGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
MTlGMDEuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMTlGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMTlGMDEuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMTlGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfMjBGMDEuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMjBGMDEuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfMjBGMDEuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMjBGMDEuSU5QCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMjFGMDEuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMjFGMDEuSU5QCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMjFGMDEuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMjFGMDEuSU5QCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMjJGMDEuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMjJGMDEuSU5QCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfMjJGMDEuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMjJGMDEuSU5Q
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjNGMDEuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMjNGMDEu
SU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjNGMDEuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMjNG
MDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjRGMDEuSU5QIC4uL2RhdGFxYTM1MC9pMzBf
MjRGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjRGMDEuSU5QIC4uL2RhdGFxYTM1MC9p
NjBfMjRGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMTBGMDEuSU5QIC4uL2RhdGFxYTM1MC9h
MTBGMDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMTFGMDEuSU5QIC4uL2RhdGFxYTM1MC9hMTFG
MDEuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMTJGMDEuSU5QIC4uL2RhdGFxYTM1MC9hMTJGMDEu
SU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjVGMDIuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMjVG
MDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjVGMDIuSU5QIC4uL2RhdGFxYTM1MC9pNjBf
MjVGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjZGMDIuSU5QIC4uL2RhdGFxYTM1MC9p
MzBfMjZGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjZGMDIuSU5QIC4uL2RhdGFxYTM1
MC9pNjBfMjZGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjdGMDIuSU5QIC4uL2RhdGFx
YTM1MC9pMzBfMjdGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjdGMDIuSU5QIC4uL2Rh
dGFxYTM1MC9pNjBfMjdGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjhGMDIuSU5QIC4u
L2RhdGFxYTM1MC9pMzBfMjhGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjhGMDIuSU5Q
IC4uL2RhdGFxYTM1MC9pNjBfMjhGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMjlGMDIu
SU5QIC4uL2RhdGFxYTM1MC9pMzBfMjlGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMjlG
MDIuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMjlGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
MzBGMDIuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzBGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMzBGMDIuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzBGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9hMTNGMDIuSU5QIC4uL2RhdGFxYTM1MC9hMTNGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9h
MTRGMDIuSU5QIC4uL2RhdGFxYTM1MC9hMTRGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMTVG
MDIuSU5QIC4uL2RhdGFxYTM1MC9hMTVGMDIuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMzFG
MDMuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzFGMDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
MzFGMDMuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzFGMDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfMzJGMDMuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzJGMDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMzJGMDMuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzJGMDMuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfMzNGMDMuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzNGMDMuSU5QCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMzNGMDMuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzNGMDMuSU5QCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfMzRGMDMuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzRGMDMuSU5QCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfMzRGMDMuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzRGMDMuSU5QCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfMzVGMDMuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzVGMDMuSU5Q
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMzVGMDMuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzVGMDMu
SU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMzZGMDMuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzZG
MDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMzZGMDMuSU5QIC4uL2RhdGFxYTM1MC9pNjBf
MzZGMDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMTZGMDMuSU5QIC4uL2RhdGFxYTM1MC9hMTZG
MDMuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMTdGMDMuSU5QIC4uL2RhdGFxYTM1MC9hMTdGMDMu
SU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMThGMDMuSU5QIC4uL2RhdGFxYTM1MC9hMThGMDMuSU5Q
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMzdGMDQuSU5QIC4uL2RhdGFxYTM1MC9pMzBfMzdGMDQu
SU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMzdGMDQuSU5QIC4uL2RhdGFxYTM1MC9pNjBfMzdG
MDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMzhGMDQuSU5QIC4uL2RhdGFxYTM1MC9pMzBf
MzhGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMzhGMDQuSU5QIC4uL2RhdGFxYTM1MC9p
NjBfMzhGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMzlGMDQuSU5QIC4uL2RhdGFxYTM1
MC9pMzBfMzlGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMzlGMDQuSU5QIC4uL2RhdGFx
YTM1MC9pNjBfMzlGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNDBGMDQuSU5QIC4uL2Rh
dGFxYTM1MC9pMzBfNDBGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNDBGMDQuSU5QIC4u
L2RhdGFxYTM1MC9pNjBfNDBGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNDFGMDQuSU5Q
IC4uL2RhdGFxYTM1MC9pMzBfNDFGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNDFGMDQu
SU5QIC4uL2RhdGFxYTM1MC9pNjBfNDFGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNDJG
MDQuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDJGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
NDJGMDQuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDJGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9h
MTlGMDQuSU5QIC4uL2RhdGFxYTM1MC9hMTlGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjBG
MDQuSU5QIC4uL2RhdGFxYTM1MC9hMjBGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjFGMDQu
SU5QIC4uL2RhdGFxYTM1MC9hMjFGMDQuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNDNGMDUu
SU5QIC4uL2RhdGFxYTM1MC9pMzBfNDNGMDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNDNG
MDUuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDNGMDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
NDRGMDUuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDRGMDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfNDRGMDUuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDRGMDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfNDVGMDUuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDVGMDUuSU5QCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfNDVGMDUuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDVGMDUuSU5QCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfNDZGMDUuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDZGMDUuSU5QCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfNDZGMDUuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDZGMDUuSU5QCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfNDdGMDUuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDdGMDUuSU5QCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfNDdGMDUuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDdGMDUuSU5Q
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNDhGMDUuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDhGMDUu
SU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNDhGMDUuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDhG
MDUuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjJGMDUuSU5QIC4uL2RhdGFxYTM1MC9hMjJGMDUu
SU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjNGMDUuSU5QIC4uL2RhdGFxYTM1MC9hMjNGMDUuSU5Q
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hMjRGMDUuSU5QIC4uL2RhdGFxYTM1MC9hMjRGMDUuSU5QCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfNDlGMDYuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNDlGMDYuSU5Q
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNDlGMDYuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNDlGMDYu
SU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTBGMDYuSU5QIC4uL2RhdGFxYTM1MC9pMzBfNTBG
MDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTBGMDYuSU5QIC4uL2RhdGFxYTM1MC9pNjBf
NTBGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTFGMDYuSU5QIC4uL2RhdGFxYTM1MC9p
MzBfNTFGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTFGMDYuSU5QIC4uL2RhdGFxYTM1
MC9pNjBfNTFGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTJGMDYuSU5QIC4uL2RhdGFx
YTM1MC9pMzBfNTJGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTJGMDYuSU5QIC4uL2Rh
dGFxYTM1MC9pNjBfNTJGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTNGMDYuSU5QIC4u
L2RhdGFxYTM1MC9pMzBfNTNGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTNGMDYuSU5Q
IC4uL2RhdGFxYTM1MC9pNjBfNTNGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTRGMDYu
SU5QIC4uL2RhdGFxYTM1MC9pMzBfNTRGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTRG
MDYuSU5QIC4uL2RhdGFxYTM1MC9pNjBfNTRGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjVG
MDYuSU5QIC4uL2RhdGFxYTM1MC9hMjVGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjZGMDYu
SU5QIC4uL2RhdGFxYTM1MC9hMjZGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjdGMDYuSU5Q
IC4uL2RhdGFxYTM1MC9hMjdGMDYuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNTVsb25ndGVz
dC5wY20gLi4vZGF0YXFhMzUxL2kzMF81NWxvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzU1bG9uZ3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9pNjBfNTVsb25ndGVzdC5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2kzMF81Nmxvbmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzU2bG9uZ3Rl
c3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTZsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUx
L2k2MF81Nmxvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzU3bG9uZ3Rlc3QucGNt
IC4uL2RhdGFxYTM1MS9pMzBfNTdsb25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF81
N2xvbmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzU3bG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfNThsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUxL2kzMF81OGxvbmd0ZXN0LnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzU4bG9uZ3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9pNjBf
NThsb25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF81OWxvbmd0ZXN0LnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzU5bG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTlsb25n
dGVzdC5wY20gLi4vZGF0YXFhMzUxL2k2MF81OWxvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzYwbG9uZ3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9pMzBfNjBsb25ndGVzdC5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2k2MF82MGxvbmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzYwbG9u
Z3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMjhsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUx
L2EyOGxvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTI5bG9uZ3Rlc3QucGNtIC4uL2Rh
dGFxYTM1MS9hMjlsb25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2EzMGxvbmd0ZXN0LnBj
bSAuLi9kYXRhcWEzNTEvYTMwbG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNjFs
dGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pMzBfNjFsdGVzdF9zcGVlY2hfY2xl
YW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNjFsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4u
L2RhdGFxYTM1MS9pNjBfNjFsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfNjJsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pMzBfNjJsdGVzdF9z
cGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNjJsdGVzdF9zcGVlY2hfY2xl
YW4ucGNtIC4uL2RhdGFxYTM1MS9pNjBfNjJsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfNjNsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pMzBf
NjNsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNjNsdGVzdF9z
cGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pNjBfNjNsdGVzdF9zcGVlY2hfY2xlYW4ucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNjRsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFx
YTM1MS9pMzBfNjRsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
NjRsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pNjBfNjRsdGVzdF9zcGVlY2hf
Y2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNjVsdGVzdF9zcGVlY2hfY2xlYW4ucGNt
IC4uL2RhdGFxYTM1MS9pMzBfNjVsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfNjVsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pNjBfNjVsdGVz
dF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNjZsdGVzdF9zcGVlY2hf
Y2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9pMzBfNjZsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfNjZsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9p
NjBfNjZsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzFsdGVzdF9z
cGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9hMzFsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9hMzJsdGVzdF9zcGVlY2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9h
MzJsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzNsdGVzdF9zcGVl
Y2hfY2xlYW4ucGNtIC4uL2RhdGFxYTM1MS9hMzNsdGVzdF9zcGVlY2hfY2xlYW4ucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfNjdsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2kzMF82N2x0
ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzY3bHRlc3RfbXVzaWMucGNtIC4u
L2RhdGFxYTM1MS9pNjBfNjdsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF82
OGx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzY4bHRlc3RfbXVzaWMucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfNjhsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2k2MF82OGx0
ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzY5bHRlc3RfbXVzaWMucGNtIC4u
L2RhdGFxYTM1MS9pMzBfNjlsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF82
OWx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzY5bHRlc3RfbXVzaWMucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfNzBsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2kzMF83MGx0
ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzcwbHRlc3RfbXVzaWMucGNtIC4u
L2RhdGFxYTM1MS9pNjBfNzBsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF83
MWx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzcxbHRlc3RfbXVzaWMucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfNzFsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2k2MF83MWx0
ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzcybHRlc3RfbXVzaWMucGNtIC4u
L2RhdGFxYTM1MS9pMzBfNzJsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF83
Mmx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzcybHRlc3RfbXVzaWMucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9hMzRsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2EzNGx0ZXN0X211
c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTM1bHRlc3RfbXVzaWMucGNtIC4uL2RhdGFxYTM1
MS9hMzVsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2EzNmx0ZXN0X211c2ljLnBj
bSAuLi9kYXRhcWEzNTEvYTM2bHRlc3RfbXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
NzNsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pMzBfNzNsdGVzdF9zcGVlY2hf
bm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNzNsdGVzdF9zcGVlY2hfbm9pc3kucGNt
IC4uL2RhdGFxYTM1MS9pNjBfNzNsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfNzRsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pMzBfNzRsdGVz
dF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNzRsdGVzdF9zcGVlY2hf
bm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pNjBfNzRsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfNzVsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9p
MzBfNzVsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNzVsdGVz
dF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pNjBfNzVsdGVzdF9zcGVlY2hfbm9pc3ku
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNzZsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfNzZsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfNzZsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pNjBfNzZsdGVzdF9zcGVl
Y2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNzdsdGVzdF9zcGVlY2hfbm9pc3ku
cGNtIC4uL2RhdGFxYTM1MS9pMzBfNzdsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfNzdsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pNjBfNzds
dGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNzhsdGVzdF9zcGVl
Y2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9pMzBfNzhsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfNzhsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1
MS9pNjBfNzhsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzdsdGVz
dF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9hMzdsdGVzdF9zcGVlY2hfbm9pc3kucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hMzhsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1
MS9hMzhsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzlsdGVzdF9z
cGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9hMzlsdGVzdF9zcGVlY2hfbm9pc3kucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfNzltaXNjMi5wY20gLi4vZGF0YXFhMzUxL2kzMF83OW1pc2My
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzc5bWlzYzIucGNtIC4uL2RhdGFxYTM1MS9pNjBf
NzltaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF84MG1pc2MyLnBjbSAuLi9kYXRhcWEz
NTEvaTMwXzgwbWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfODBtaXNjMi5wY20gLi4v
ZGF0YXFhMzUxL2k2MF84MG1pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzgxbWlzYzIu
cGNtIC4uL2RhdGFxYTM1MS9pMzBfODFtaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF84
MW1pc2MyLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzgxbWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfODJtaXNjMi5wY20gLi4vZGF0YXFhMzUxL2kzMF84Mm1pc2MyLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzgybWlzYzIucGNtIC4uL2RhdGFxYTM1MS9pNjBfODJtaXNjMi5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2kzMF84M21pc2MyLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzgzbWlzYzIu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfODNtaXNjMi5wY20gLi4vZGF0YXFhMzUxL2k2MF84
M21pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzg0bWlzYzIucGNtIC4uL2RhdGFxYTM1
MS9pMzBfODRtaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF84NG1pc2MyLnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzg0bWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDBtaXNjMi5wY20g
Li4vZGF0YXFhMzUxL2E0MG1pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQxbWlzYzIucGNt
IC4uL2RhdGFxYTM1MS9hNDFtaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E0Mm1pc2MyLnBj
bSAuLi9kYXRhcWEzNTEvYTQybWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfODVwdXJl
bmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfODVwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfODVwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfODVwdXJlbmIucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfODZwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfODZwdXJlbmIucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfODZwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfODZwdXJl
bmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfODdwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9p
MzBfODdwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfODdwdXJlbmIucGNtIC4uL2Rh
dGFxYTM1MS9pNjBfODdwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfODhwdXJlbmIu
cGNtIC4uL2RhdGFxYTM1MS9pMzBfODhwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
ODhwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfODhwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfODlwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfODlwdXJlbmIucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfODlwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfODlwdXJlbmIu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTBwdXJlbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBf
OTBwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfOTBwdXJlbmIucGNtIC4uL2RhdGFx
YTM1MS9pNjBfOTBwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDNwdXJlbmIucGNtIC4u
L2RhdGFxYTM1MS9hNDNwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDRwdXJlbmIucGNt
IC4uL2RhdGFxYTM1MS9hNDRwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDVwdXJlbmIu
cGNtIC4uL2RhdGFxYTM1MS9hNDVwdXJlbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTFz
YXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTFzYXdzd2VlcF8zODBfNjAucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfOTFzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1
MS9pNjBfOTFzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTJzYXdz
d2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTJzYXdzd2VlcF8zODBfNjAucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfOTJzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9p
NjBfOTJzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTNzYXdzd2Vl
cF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTNzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfOTNzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pNjBf
OTNzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTRzYXdzd2VlcF8z
ODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTRzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfOTRzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pNjBfOTRz
YXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTVzYXdzd2VlcF8zODBf
NjAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOTVzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfOTVzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pNjBfOTVzYXdz
d2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTZzYXdzd2VlcF8zODBfNjAu
cGNtIC4uL2RhdGFxYTM1MS9pMzBfOTZzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfOTZzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9pNjBfOTZzYXdzd2Vl
cF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDZzYXdzd2VlcF8zODBfNjAucGNtIC4u
L2RhdGFxYTM1MS9hNDZzYXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDdz
YXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9hNDdzYXdzd2VlcF8zODBfNjAucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9hNDhzYXdzd2VlcF8zODBfNjAucGNtIC4uL2RhdGFxYTM1MS9hNDhz
YXdzd2VlcF8zODBfNjAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTdzaW5lc3dlZXAucGNt
IC4uL2RhdGFxYTM1MS9pMzBfOTdzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
OTdzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9pNjBfOTdzaW5lc3dlZXAucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfOThzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9pMzBfOThzaW5lc3dl
ZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfOThzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1
MS9pNjBfOThzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfOTlzaW5lc3dlZXAu
cGNtIC4uL2RhdGFxYTM1MS9pMzBfOTlzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfOTlzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9pNjBfOTlzaW5lc3dlZXAucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMTAwc2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEwMHNp
bmVzd2VlcC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMDBzaW5lc3dlZXAucGNtIC4uL2Rh
dGFxYTM1MS9pNjBfMTAwc2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEwMXNp
bmVzd2VlcC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMDFzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMTAxc2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwMXNpbmVzd2Vl
cC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMDJzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1
MS9pMzBfMTAyc2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEwMnNpbmVzd2Vl
cC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMDJzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9hNDlzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9hNDlzaW5lc3dlZXAucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9hNTBzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9hNTBzaW5lc3dlZXAucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hNTFzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9hNTFzaW5l
c3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTAzc2luZXN3ZWVwX2hhbGYucGNtIC4u
L2RhdGFxYTM1MS9pMzBfMTAzc2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMTAzc2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTAzc2luZXN3ZWVwX2hh
bGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTA0c2luZXN3ZWVwX2hhbGYucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfMTA0c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBf
MTA0c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTA0c2luZXN3ZWVwX2hhbGYu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTA1c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFx
YTM1MS9pMzBfMTA1c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTA1
c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTA1c2luZXN3ZWVwX2hhbGYucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTA2c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1
MS9pMzBfMTA2c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTA2c2lu
ZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTA2c2luZXN3ZWVwX2hhbGYucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfMTA3c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9p
MzBfMTA3c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTA3c2luZXN3
ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTA3c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMTA4c2luZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pMzBf
MTA4c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTA4c2luZXN3ZWVw
X2hhbGYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTA4c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9hNTJzaW5lc3dlZXBfaGFsZi5wY20gLi4vZGF0YXFhMzUxL2E1MnNpbmVzd2Vl
cF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTUzc2luZXN3ZWVwX2hhbGYucGNtIC4uL2Rh
dGFxYTM1MS9hNTNzaW5lc3dlZXBfaGFsZi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E1NHNpbmVz
d2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvYTU0c2luZXN3ZWVwX2hhbGYucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfMTA5c3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTA5c3Bl
ZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTA5c3BlZWNobXVzaWMucGNtIC4u
L2RhdGFxYTM1MS9pNjBfMTA5c3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
MTEwc3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTEwc3BlZWNobXVzaWMucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfMTEwc3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pNjBf
MTEwc3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTExc3BlZWNobXVzaWMu
cGNtIC4uL2RhdGFxYTM1MS9pMzBfMTExc3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMTExc3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTExc3BlZWNobXVzaWMu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTEyc3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1
MS9pMzBfMTEyc3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTEyc3BlZWNo
bXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTEyc3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMTEzc3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTEzc3BlZWNo
bXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTEzc3BlZWNobXVzaWMucGNtIC4uL2Rh
dGFxYTM1MS9pNjBfMTEzc3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTE0
c3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTE0c3BlZWNobXVzaWMucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfMTE0c3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTE0
c3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNTVzcGVlY2htdXNpYy5wY20gLi4v
ZGF0YXFhMzUxL2E1NXNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTU2c3BlZWNo
bXVzaWMucGNtIC4uL2RhdGFxYTM1MS9hNTZzcGVlY2htdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2E1N3NwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvYTU3c3BlZWNobXVzaWMucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfMTE1c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9p
MzBfMTE1c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTE1c3BlZWNo
bXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTE1c3BlZWNobXVzaWNfbmIucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMTE2c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBf
MTE2c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTE2c3BlZWNobXVz
aWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTE2c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfMTE3c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTE3
c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTE3c3BlZWNobXVzaWNf
bmIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTE3c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMTE4c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTE4c3Bl
ZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTE4c3BlZWNobXVzaWNfbmIu
cGNtIC4uL2RhdGFxYTM1MS9pNjBfMTE4c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pMzBfMTE5c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTE5c3BlZWNo
bXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTE5c3BlZWNobXVzaWNfbmIucGNt
IC4uL2RhdGFxYTM1MS9pNjBfMTE5c3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfMTIwc3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTIwc3BlZWNobXVz
aWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTIwc3BlZWNobXVzaWNfbmIucGNtIC4u
L2RhdGFxYTM1MS9pNjBfMTIwc3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9h
NThzcGVlY2htdXNpY19uYi5wY20gLi4vZGF0YXFhMzUxL2E1OHNwZWVjaG11c2ljX25iLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvYTU5c3BlZWNobXVzaWNfbmIucGNtIC4uL2RhdGFxYTM1MS9hNTlz
cGVlY2htdXNpY19uYi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E2MHNwZWVjaG11c2ljX25iLnBj
bSAuLi9kYXRhcWEzNTEvYTYwc3BlZWNobXVzaWNfbmIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfMTIxc3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEyMXNwZWVjaG9mZmlj
ZTBkQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMjFzcGVlY2hvZmZpY2UwZEIucGNtIC4u
L2RhdGFxYTM1MS9pNjBfMTIxc3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzEyMnNwZWVjaG9mZmljZTBkQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMjJzcGVlY2hvZmZp
Y2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTIyc3BlZWNob2ZmaWNlMGRCLnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzEyMnNwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUw
L2kzMF8xMjNzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTIzc3BlZWNob2Zm
aWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEyM3NwZWVjaG9mZmljZTBkQi5wY20g
Li4vZGF0YXFhMzUxL2k2MF8xMjNzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfMTI0c3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEyNHNwZWVjaG9m
ZmljZTBkQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMjRzcGVlY2hvZmZpY2UwZEIucGNt
IC4uL2RhdGFxYTM1MS9pNjBfMTI0c3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzEyNXNwZWVjaG9mZmljZTBkQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMjVzcGVlY2hv
ZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTI1c3BlZWNob2ZmaWNlMGRCLnBj
bSAuLi9kYXRhcWEzNTEvaTYwXzEyNXNwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2kzMF8xMjZzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTI2c3BlZWNo
b2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEyNnNwZWVjaG9mZmljZTBkQi5w
Y20gLi4vZGF0YXFhMzUxL2k2MF8xMjZzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9hNjFzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9hNjFzcGVlY2hvZmZpY2Uw
ZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjJzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFx
YTM1MS9hNjJzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjNzcGVlY2hv
ZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9hNjNzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfMTI3c3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzEyN3NwZWVjaF9hbmRfbWlzY19OQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMjdzcGVl
Y2hfYW5kX21pc2NfTkIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTI3c3BlZWNoX2FuZF9taXNjX05C
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEyOHNwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4v
ZGF0YXFhMzUxL2kzMF8xMjhzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMTI4c3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEyOHNwZWVj
aF9hbmRfbWlzY19OQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMjlzcGVlY2hfYW5kX21p
c2NfTkIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTI5c3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzEyOXNwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4vZGF0YXFhMzUx
L2k2MF8xMjlzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTMw
c3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEzMHNwZWVjaF9hbmRfbWlz
Y19OQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMzBzcGVlY2hfYW5kX21pc2NfTkIucGNt
IC4uL2RhdGFxYTM1MS9pNjBfMTMwc3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzEzMXNwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMzFz
cGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTMxc3BlZWNoX2Fu
ZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEzMXNwZWVjaF9hbmRfbWlzY19OQi5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMzJzcGVlY2hfYW5kX21pc2NfTkIucGNtIC4uL2RhdGFx
YTM1MS9pMzBfMTMyc3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzEzMnNwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMzJzcGVlY2hfYW5k
X21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjRzcGVlY2hfYW5kX21pc2NfTkIucGNt
IC4uL2RhdGFxYTM1MS9hNjRzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9hNjVzcGVlY2hfYW5kX21pc2NfTkIucGNtIC4uL2RhdGFxYTM1MS9hNjVzcGVlY2hfYW5kX21p
c2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjZzcGVlY2hfYW5kX21pc2NfTkIucGNtIC4u
L2RhdGFxYTM1MS9hNjZzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfMTMzc3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEzM3NwZWVjaF9h
bmRfbWlzY19XQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMzNzcGVlY2hfYW5kX21pc2Nf
V0IucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTMzc3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzEzNHNwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2kz
MF8xMzRzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTM0c3Bl
ZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEzNHNwZWVjaF9hbmRfbWlzY19X
Qi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMzVzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4u
L2RhdGFxYTM1MS9pMzBfMTM1c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzEzNXNwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMzVzcGVl
Y2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTM2c3BlZWNoX2FuZF9t
aXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEzNnNwZWVjaF9hbmRfbWlzY19XQi5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2k2MF8xMzZzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1
MS9pNjBfMTM2c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEz
N3NwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMzdzcGVlY2hfYW5kX21p
c2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTM3c3BlZWNoX2FuZF9taXNjX1dCLnBj
bSAuLi9kYXRhcWEzNTEvaTYwXzEzN3NwZWVjaF9hbmRfbWlzY19XQi5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2kzMF8xMzhzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTM4
c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEzOHNwZWVjaF9h
bmRfbWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMzhzcGVlY2hfYW5kX21pc2NfV0IucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hNjdzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1
MS9hNjdzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjhzcGVlY2hf
YW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1MS9hNjhzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9hNjlzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1MS9h
NjlzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTM5dGVzdE00
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEzOXRlc3RNNC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2
MF8xMzl0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTM5dGVzdE00LnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzE0MHRlc3RNNC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNDB0ZXN0TTQucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQwdGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE0
MHRlc3RNNC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNDF0ZXN0TTQucGNtIC4uL2RhdGFx
YTM1MS9pMzBfMTQxdGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0MXRlc3RNNC5w
Y20gLi4vZGF0YXFhMzUxL2k2MF8xNDF0ZXN0TTQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
MTQydGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE0MnRlc3RNNC5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2k2MF8xNDJ0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTQydGVzdE00LnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0M3Rlc3RNNC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNDN0
ZXN0TTQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQzdGVzdE00LnBjbSAuLi9kYXRhcWEz
NTEvaTYwXzE0M3Rlc3RNNC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNDR0ZXN0TTQucGNt
IC4uL2RhdGFxYTM1MS9pMzBfMTQ0dGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0
NHRlc3RNNC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNDR0ZXN0TTQucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9hNzB0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9hNzB0ZXN0TTQucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9hNzF0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9hNzF0ZXN0TTQucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9hNzJ0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9hNzJ0ZXN0TTQucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMTQ1dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTQ1
dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQ1dGVzdE00RF9yZXYucGNt
IC4uL2RhdGFxYTM1MS9pNjBfMTQ1dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfMTQ2dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTQ2dGVzdE00RF9yZXYucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQ2dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9p
NjBfMTQ2dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTQ3dGVzdE00RF9y
ZXYucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTQ3dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9pNjBfMTQ3dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTQ3dGVzdE00RF9y
ZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTQ4dGVzdE00RF9yZXYucGNtIC4uL2RhdGFx
YTM1MS9pMzBfMTQ4dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQ4dGVz
dE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTQ4dGVzdE00RF9yZXYucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfMTQ5dGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTQ5dGVz
dE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQ5dGVzdE00RF9yZXYucGNtIC4u
L2RhdGFxYTM1MS9pNjBfMTQ5dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
MTUwdGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTUwdGVzdE00RF9yZXYucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfMTUwdGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9pNjBf
MTUwdGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNzN0ZXN0TTREX3Jldi5wY20g
Li4vZGF0YXFhMzUxL2E3M3Rlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTc0dGVz
dE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9hNzR0ZXN0TTREX3Jldi5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2E3NXRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvYTc1dGVzdE00RF9yZXYucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTUxdGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2kzMF8x
NTF0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1MXRlc3RNNEQucGNtIC4uL2Rh
dGFxYTM1MS9pNjBfMTUxdGVzdE00RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNTJ0ZXN0
TTRELnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE1MnRlc3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMTUydGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNTJ0ZXN0TTRELnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzE1M3Rlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTUzdGVz
dE00RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNTN0ZXN0TTRELnBjbSAuLi9kYXRhcWEz
NTEvaTYwXzE1M3Rlc3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTU0dGVzdE00RC5w
Y20gLi4vZGF0YXFhMzUxL2kzMF8xNTR0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzE1NHRlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTU0dGVzdE00RC5wY20KLWRpZmYgLi4v
ZGF0YXFhMzUwL2kzMF8xNTV0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE1NXRlc3RNNEQu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTU1dGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2k2
MF8xNTV0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE1NnRlc3RNNEQucGNtIC4u
L2RhdGFxYTM1MS9pMzBfMTU2dGVzdE00RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNTZ0
ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE1NnRlc3RNNEQucGNtCi1kaWZmIC4uL2RhdGFx
YTM1MC9hNzZ0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvYTc2dGVzdE00RC5wY20KLWRpZmYgLi4v
ZGF0YXFhMzUwL2E3N3Rlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9hNzd0ZXN0TTRELnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvYTc4dGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2E3OHRlc3RNNEQucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTU3dGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pMzBf
MTU3dGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTU3dGVzdGZpbGUucGNtIC4u
L2RhdGFxYTM1MS9pNjBfMTU3dGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTU4
dGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTU4dGVzdGZpbGUucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pNjBfMTU4dGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTU4dGVzdGZpbGUu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTU5dGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9p
MzBfMTU5dGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTU5dGVzdGZpbGUucGNt
IC4uL2RhdGFxYTM1MS9pNjBfMTU5dGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
MTYwdGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTYwdGVzdGZpbGUucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMTYwdGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTYwdGVzdGZp
bGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTYxdGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1
MS9pMzBfMTYxdGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTYxdGVzdGZpbGUu
cGNtIC4uL2RhdGFxYTM1MS9pNjBfMTYxdGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfMTYydGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTYydGVzdGZpbGUucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfMTYydGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTYydGVz
dGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNzl0ZXN0ZmlsZS5wY20gLi4vZGF0YXFhMzUx
L2E3OXRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTgwdGVzdGZpbGUucGNtIC4uL2Rh
dGFxYTM1MS9hODB0ZXN0ZmlsZS5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E4MXRlc3RmaWxlLnBj
bSAuLi9kYXRhcWEzNTEvYTgxdGVzdGZpbGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTYz
dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNjN0b25lX2Npc2NvLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzE2M3RvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTYzdG9u
ZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNjR0b25lX2Npc2NvLnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzE2NHRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTY0
dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNjR0b25lX2Npc2NvLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzE2NXRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTY1dG9u
ZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNjV0b25lX2Npc2NvLnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzE2NXRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTY2
dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNjZ0b25lX2Npc2NvLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzE2NnRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTY2dG9u
ZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNjd0b25lX2Npc2NvLnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzE2N3RvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTY3
dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNjd0b25lX2Npc2NvLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzE2OHRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTY4dG9u
ZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNjh0b25lX2Npc2NvLnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzE2OHRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hODJ0b25l
X2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEvYTgydG9uZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2E4M3RvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9hODN0b25lX2Npc2NvLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvYTg0dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2E4NHRvbmVfY2lz
Y28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTY5dG9uZV9jaXNjb19sb25nLnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzE2OXRvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2
MF8xNjl0b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTY5dG9uZV9jaXNjb19s
b25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE3MHRvbmVfY2lzY29fbG9uZy5wY20gLi4v
ZGF0YXFhMzUxL2kzMF8xNzB0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMTcwdG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE3MHRvbmVfY2lzY29f
bG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNzF0b25lX2Npc2NvX2xvbmcucGNtIC4u
L2RhdGFxYTM1MS9pMzBfMTcxdG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzE3MXRvbmVfY2lzY29fbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNzF0b25lX2Npc2Nv
X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTcydG9uZV9jaXNjb19sb25nLnBjbSAu
Li9kYXRhcWEzNTEvaTMwXzE3MnRvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUw
L2k2MF8xNzJ0b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTcydG9uZV9jaXNj
b19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE3M3RvbmVfY2lzY29fbG9uZy5wY20g
Li4vZGF0YXFhMzUxL2kzMF8xNzN0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pNjBfMTczdG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE3M3RvbmVfY2lz
Y29fbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNzR0b25lX2Npc2NvX2xvbmcucGNt
IC4uL2RhdGFxYTM1MS9pMzBfMTc0dG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzE3NHRvbmVfY2lzY29fbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNzR0b25lX2Np
c2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hODV0b25lX2Npc2NvX2xvbmcucGNtIC4u
L2RhdGFxYTM1MS9hODV0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hODZ0
b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9hODZ0b25lX2Npc2NvX2xvbmcucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9hODd0b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9hODd0
b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTc1d2JfY29udHNwZWVj
aC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNzV3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzE3NXdiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTc1d2JfY29u
dHNwZWVjaC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNzZ3Yl9jb250c3BlZWNoLnBjbSAu
Li9kYXRhcWEzNTEvaTMwXzE3NndiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMTc2d2JfY29udHNwZWVjaC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNzZ3Yl9jb250c3BlZWNo
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE3N3diX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFx
YTM1MS9pMzBfMTc3d2JfY29udHNwZWVjaC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNzd3
Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE3N3diX2NvbnRzcGVlY2gucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfMTc4d2JfY29udHNwZWVjaC5wY20gLi4vZGF0YXFhMzUxL2kz
MF8xNzh3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE3OHdiX2NvbnRz
cGVlY2gucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTc4d2JfY29udHNwZWVjaC5wY20KLWRpZmYgLi4v
ZGF0YXFhMzUwL2kzMF8xNzl3Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE3OXdi
X2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTc5d2JfY29udHNwZWVjaC5w
Y20gLi4vZGF0YXFhMzUxL2k2MF8xNzl3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzE4MHdiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTgwd2JfY29udHNw
ZWVjaC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xODB3Yl9jb250c3BlZWNoLnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzE4MHdiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hODh3
Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvYTg4d2JfY29udHNwZWVjaC5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2E4OXdiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9hODl3Yl9jb250
c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTkwd2JfY29udHNwZWVjaC5wY20gLi4vZGF0
YXFhMzUxL2E5MHdiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTgxd2Jf
c3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTgxd2Jfc3BlZWNoX29mZmlj
ZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTgxd2Jfc3BlZWNoX29mZmljZTI1ZGIu
cGNtIC4uL2RhdGFxYTM1MS9pNjBfMTgxd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfMTgyd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9p
MzBfMTgyd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTgy
d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTgyd2Jfc3BlZWNoX29m
ZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTgzd2Jfc3BlZWNoX29mZmljZTI1
ZGIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTgzd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfMTgzd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1
MS9pNjBfMTgzd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
MTg0d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTg0d2Jfc3BlZWNo
X29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTg0d2Jfc3BlZWNoX29mZmlj
ZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTg0d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfMTg1d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFx
YTM1MS9pMzBfMTg1d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMTg1d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTg1d2Jfc3Bl
ZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTg2d2Jfc3BlZWNoX29m
ZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTg2d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTg2d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtIC4uL2Rh
dGFxYTM1MS9pNjBfMTg2d2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9hOTF3Yl9zcGVlY2hfb2ZmaWNlMjVkYi5wY20gLi4vZGF0YXFhMzUxL2E5MXdiX3NwZWVjaF9v
ZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTkyd2Jfc3BlZWNoX29mZmljZTI1ZGIu
cGNtIC4uL2RhdGFxYTM1MS9hOTJ3Yl9zcGVlY2hfb2ZmaWNlMjVkYi5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2E5M3diX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvYTkzd2Jfc3Bl
ZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzBfMURUTUZfMTZrSHpfc2hv
cnQucGNtIC4uL2RhdGFxYTM1MS9hMzBfMURUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9hNjBfMURUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9hNjBfMURUTUZf
MTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzBfMmx0ZXN0X3NwZWVjaF9ub2lz
eS5wY20gLi4vZGF0YXFhMzUxL2EzMF8ybHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvYTYwXzJsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1MS9hNjBfMmx0
ZXN0X3NwZWVjaF9ub2lzeS5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2EzMF8zbWlzYzIucGNtIC4u
L2RhdGFxYTM1MS9hMzBfM21pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTYwXzNtaXNjMi5w
Y20gLi4vZGF0YXFhMzUxL2E2MF8zbWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzBfNHNp
bmVzd2VlcC5wY20gLi4vZGF0YXFhMzUxL2EzMF80c2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvYTYwXzRzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1MS9hNjBfNHNpbmVzd2VlcC5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2EzMF81c3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9hMzBf
NXNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTYwXzVzcGVlY2htdXNpYy5wY20g
Li4vZGF0YXFhMzUxL2E2MF81c3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzBf
NnRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9hMzBfNnRvbmVfY2lzY28ucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9hNjBfNnRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9hNjBfNnRvbmVfY2lz
Y28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNjBfN3RvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1
MS9hNjBfN3RvbmVfY2lzY28ucGNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgv
dGVzdC9RQS9kaWZmaVNBQ1BMQy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9k
aWZmaVNBQ1BMQy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllMzYyOWIyY2E3
MmE0OTBlMzFjNWI0NzJkZDkxYjNkNGQyYTgzNjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvZGlmZmlT
QUNQTEMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotIyEvYmluL2Jhc2gKLShz
ZXQgLW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBiYXNoIHRv
IGlnbm9yZSBcciBjaGFyYWN0ZXIKLQotTE9HRklMRT1sb2dwbGMudHh0Ci1lY2hvICJTVEFSVCBQ
TEMgVEVTVCIgPiAkTE9HRklMRQotCi1PVVRESVIxPS4uL2RhdGFxYXBsY18wCi1PVVRESVIyPS4u
L2RhdGFxYXBsY18xCi0KLWRpZmYgJE9VVERJUjEvb3V0cGxjMS5wY20gJE9VVERJUjIvb3V0cGxj
MS5wY20gCi1kaWZmICRPVVRESVIxL291dHBsYzIucGNtICRPVVRESVIyL291dHBsYzIucGNtIAot
ZGlmZiAkT1VURElSMS9vdXRwbGMzLnBjbSAkT1VURElSMi9vdXRwbGMzLnBjbSAKLWRpZmYgJE9V
VERJUjEvb3V0cGxjNC5wY20gJE9VVERJUjIvb3V0cGxjNC5wY20gCi1kaWZmICRPVVRESVIxL291
dHBsYzUucGNtICRPVVRESVIyL291dHBsYzUucGNtIAotZGlmZiAkT1VURElSMS9vdXRwbGM2LnBj
bSAkT1VURElSMi9vdXRwbGM2LnBjbSAKLQotZWNobyBET05FIQotCi0KLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ0xvbmd0ZXN0LnR4dCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNMb25ndGVzdC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGVlZmZjMGM5NTVlZGQwN2FjOWYwZWIwNTQ4Y2FlMTAwYjZlMDM5
NzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ0xvbmd0ZXN0LnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDYxICswLDAgQEAKLSMhL2Jpbi9iYXNoCi0oc2V0IC1vIGlnbmNyKSAyPi9kZXYvbnVs
bCAmJiBzZXQgLW8gaWduY3I7ICMgZm9yY2UgYmFzaCB0byBpZ25vcmUgXHIgY2hhcmFjdGVyCi0K
LUxPR0ZJTEU9bG9nTm9ybWFsLnR4dAotZWNobyAiU1RBUlQgSVNBQyBURVNUIiA+ICRMT0dGSUxF
Ci1lY2hvID4+ICRMT0dGSUxFCi0KLUlTQUM9Li4vUmVsZWFzZS9rZW5ueS5leGUKLUlTQUNGSVhG
TE9BVD0uLi9SZWxlYXNlL3Rlc3RGaXhGbG9hdC5leGUKLQotSU5GSUxFUz0kKGNhdCBJbnB1dEZp
bGVzLnR4dCkKLVNVQlNFVD0kKGNhdCBJbnB1dEZpbGVzRmV3LnR4dCkKLUNIQU5ORUxGSUxFUz0k
KGNhdCBDaGFubmVsRmlsZXMudHh0KQotQ0hBTk5FTExJU1Q9KCQoY2F0IENoYW5uZWxGaWxlcy50
eHQpKQotSU5ESVI9Li4vZGF0YS9vcmlnCi1PVVRESVI9Li4vZGF0YXFhCi1ta2RpciAtcCAkT1VU
RElSCi0KLVRBUkdFVFJBVEU9KDEwMDAwIDE1MDAwIDIwMDAwIDI1MDAwIDMwMDAwIDMyMDAwKQot
I2VjaG8gJHtDSEFOTkVMRklMRVNbMV19Ci0KLWluZGV4MT0wCi1pbmRleDI9MAotCi1mb3IgZmls
ZSBpbiAkSU5GSUxFUyAjIGxvb3Agb3ZlciBhbGwgaW5wdXQgZmlsZXMKLSAgZG8KLSAgCi0gIGZv
ciByYXRlIGluICR7VEFSR0VUUkFURVsqXX0KLQlkbwotCWxldCAiaW5kZXgxPWluZGV4MSsxIgot
CSRJU0FDIC1JICRyYXRlIC1GTCAzMCAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2kzMF8kaW5kZXgx
IiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDIC1JICRyYXRlIC1GTCA2MCAkSU5ESVIvIiRmaWxl
IiAkT1VURElSL2k2MF8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotICBkb25lCi0gIGZvciBj
aGFubmVsIGluICRDSEFOTkVMRklMRVMKLQlkbwotCWxldCAiaW5kZXgyPWluZGV4MisxIgotCSRJ
U0FDICRJTkRJUi8kY2hhbm5lbCAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2EkaW5kZXgyIiRmaWxl
IiA+PiAkTE9HRklMRQotICBkb25lCi0KLWRvbmUKLQotaW5kZXgxPTAKLQotZm9yIGZpbGUgaW4g
JFNVQlNFVCAjIGxvb3Agb3ZlciB0aGUgc3Vic2V0IG9mIGlucHV0IGZpbGVzCi0gIGRvCi0JbGV0
ICJpbmRleDE9aW5kZXgxKzEiCi0JJElTQUMgJElORElSLyR7Q0hBTk5FTExJU1RbMF19IC1GTCAz
MCAtRklYRURfRkwgJElORElSLyIkZmlsZSIgJE9VVERJUi9hMzBfJGluZGV4MSIkZmlsZSIgPj4g
JExPR0ZJTEUKLQkkSVNBQyAkSU5ESVIvJHtDSEFOTkVMTElTVFswXX0gLUZMIDYwIC1GSVhFRF9G
TCAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2E2MF8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQot
ZG9uZQotCi1sZXQgImluZGV4MT1pbmRleDErMSIJCi0gJElTQUMgJElORElSLyR7Q0hBTk5FTExJ
U1RbMF19IC1JTklUUkFURSAyNTAwMCAtRkwgMzAgJElORElSLyIkZmlsZSIgJE9VVERJUi9hNjBf
JGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQotIyBSdW4gZmF1bHQgdGVzdAotCi0jLi9ydW5p
U0FDZmF1bHQudHh0Ci0KLWVjaG8gRE9ORSEKLQotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNOQi50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgv
dGVzdC9RQS9ydW5pU0FDTkIudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDU1
OTVjYzA0ZmNhNjE5MjRiOWJhN2NjN2NhZWZiOTZkMDJhMDM4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FB
L3J1bmlTQUNOQi50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0jIS9iaW4vYmFz
aAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwgJiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJh
c2ggdG8gaWdub3JlIFxyIGNoYXJhY3RlcgotCi1MT0dGSUxFPWxvZ05CLnR4dAotZWNobyAiU1RB
UlQgTkFSUk9XQkFORCBURVNUIiA+ICRMT0dGSUxFCi1lY2hvID4+ICRMT0dGSUxFCi0KLUlTQUM9
Li4vUmVsZWFzZS9rZW5ueS5leGUKLUlTQUNGSVhGTE9BVD0uLi9SZWxlYXNlL3Rlc3RGaXhGbG9h
dC5leGUKLQotSU5GSUxFUz0kKGNhdCBJbnB1dEZpbGVzLnR4dCkKLVNVQlNFVD0kKGNhdCBJbnB1
dEZpbGVzRmV3LnR4dCkKLUNIQU5ORUxGSUxFUz0kKGNhdCBDaGFubmVsRmlsZXMudHh0KQotQ0hB
Tk5FTExJU1Q9KCQoY2F0IENoYW5uZWxGaWxlcy50eHQpKQotSU5ESVI9Li4vZGF0YS9vcmlnCi1P
VVRESVI9Li4vZGF0YXFhTkIKLW1rZGlyIC1wICRPVVRESVIKLQotVEFSR0VUUkFURT0oMTAwMDAg
MTUwMDAgMjAwMDAgMjUwMDAgMzAwMDAgMzIwMDApCi0jZWNobyAke0NIQU5ORUxGSUxFU1sxXX0K
LQotaW5kZXgxPTAKLWluZGV4Mj0wCi0KLSMgTmFycm93YmFuZCBJbnRlcmZhY2VzCi0KLWZvciBm
aWxlIGluICRTVUJTRVQgIyBsb29wIG92ZXIgYWxsIGlucHV0IGZpbGVzCi0gIGRvCi0gIGZvciBy
YXRlIGluICR7VEFSR0VUUkFURVsqXX0KLQlkbwotCWxldCAiaW5kZXgxPWluZGV4MSsxIgotIAkk
SVNBQyAkcmF0ZSAtRkwgMzAgLU5CIDEgJElORElSLyIkZmlsZSIgJE9VVERJUi9uYjEzMF8kaW5k
ZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDICRyYXRlIC1GTCA2MCAtTkIgMSAkSU5ESVIv
IiRmaWxlIiAkT1VURElSL25iMTYwXyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxFCi0JJElTQUMg
JHJhdGUgLUZMIDMwIC1OQiAyICRJTkRJUi8iJGZpbGUiICRPVVRESVIvbmIyMzBfJGluZGV4MSIk
ZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQyAkcmF0ZSAtRkwgNjAgLU5CIDIgJElORElSLyIkZmls
ZSIgJE9VVERJUi9uYjI2MF8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDICRyYXRl
IC1GTCAzMCAtTkIgMiAtUEwgMTAgJElORElSLyIkZmlsZSIgJE9VVERJUi9uYjJwbGMzMF8kaW5k
ZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDICRyYXRlIC1GTCA2MCAtTkIgMiAtUEwgMTAg
JElORElSLyIkZmlsZSIgJE9VVERJUi9uYjJwbGM2MF8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklM
RQotICBkb25lCi0KLWRvbmUKLQotZWNobyBET05FIQotCi0KLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ1BMQy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNh
Yy9maXgvdGVzdC9RQS9ydW5pU0FDUExDLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNmJlZTZmN2MzZjMyMzg2MTA3MjhlMjc0OTIxZjYyODc4YTQ1OGU5Ni4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgv
dGVzdC9RQS9ydW5pU0FDUExDLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLSMh
L2Jpbi9iYXNoCi0oc2V0IC1vIGlnbmNyKSAyPi9kZXYvbnVsbCAmJiBzZXQgLW8gaWduY3I7ICMg
Zm9yY2UgYmFzaCB0byBpZ25vcmUgXHIgY2hhcmFjdGVyCi0KLUxPR0ZJTEU9bG9ncGxjLnR4dAot
ZWNobyAiU1RBUlQgUExDIFRFU1QiID4gJExPR0ZJTEUKLQotSVNBQz0uLi9SZWxlYXNlL2tlbm55
LmV4ZQotCi1JTkRJUj0uLi9kYXRhL29yaWcKLU9VVERJUj0uLi9kYXRhcWFwbGNfMAotbWtkaXIg
LXAgJE9VVERJUgotCi0kSVNBQyAxMjAwMCAtUEwgMTUgJElORElSL3NwZWVjaG11c2ljLnBjbSAk
T1VURElSL291dHBsYzEucGNtIAotJElTQUMgMjAwMDAgLVBMIDE1ICRJTkRJUi9zcGVlY2htdXNp
Yy5wY20gJE9VVERJUi9vdXRwbGMyLnBjbSAKLSRJU0FDIDMyMDAwIC1QTCAxNSAkSU5ESVIvc3Bl
ZWNobXVzaWMucGNtICRPVVRESVIvb3V0cGxjMy5wY20gCi0kSVNBQyAxMjAwMCAtUEwgMTUgJElO
RElSL3RvbmVfY2lzY28ucGNtICRPVVRESVIvb3V0cGxjNC5wY20gCi0kSVNBQyAyMDAwMCAtUEwg
MTUgJElORElSL3RvbmVfY2lzY28ucGNtICRPVVRESVIvb3V0cGxjNS5wY20gCi0kSVNBQyAzMjAw
MCAtUEwgMTUgJElORElSL3RvbmVfY2lzY28ucGNtICRPVVRESVIvb3V0cGxjNi5wY20gCi0KLWVj
aG8gRE9ORSEKLQotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FB
L3J1bmlTQUNSYXRlLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNS
YXRlLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg0MDNlMDk5ZDY1MGZiNzVl
YjM2ODI3NGJiZTEzOWY5ZDQ5ODJmMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDUmF0ZS50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBp
Z25jcikgMj4vZGV2L251bGwgJiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3Jl
IFxyIGNoYXJhY3RlcgotCi1MT0dHPWxvZ2dSYXRlLnR4dAotT1VURElSPS4uL2RhdGFxYVJhdGUK
LW1rZGlyIC1wICRPVVRESVIKLQotLi4vUmVsZWFzZS9rZW5ueS5leGUgMTMwMDAgLUZJWEVEX0ZM
IC1GTCAzMCAtTUFYIDEwMCAuLi9kYXRhL29yaWcvc2F3c3dlZXBfMzgwXzYwLnBjbSAkT1VURElS
L291dF9uYXBpXzEucGNtID4gJExPR0cKLS4uL1JlbGVhc2Uva2VubnkuZXhlIC4uL2RhdGEvb3Jp
Zy9ib3R0bGVuZWNrcy50eHQgLUZJWEVEX0ZMIC1GTCAzMCAtTUFYUkFURSAzMjAwMCAuLi9kYXRh
L29yaWcvc2F3c3dlZXBfMzgwXzYwLnBjbSAkT1VURElSL291dF9uYXBpXzIucGNtID4+ICRMT0dH
Ci0uLi9SZWxlYXNlL2tlbm55LmV4ZSAxMzAwMCAtRklYRURfRkwgLUZMIDMwIC1NQVggMTAwIC4u
L2RhdGEvb3JpZy9zYXdzd2VlcF8zODBfNjAucGNtICRPVVRESVIvb3V0X25hcGlfMy5wY20gPj4g
JExPR0cKLS4uL1JlbGVhc2Uva2VubnkuZXhlIC4uL2RhdGEvb3JpZy9ib3R0bGVuZWNrcy50eHQg
LUZJWEVEX0ZMIC1GTCAzMCAtTUFYUkFURSAzMjAwMCAuLi9kYXRhL29yaWcvc2F3c3dlZXBfMzgw
XzYwLnBjbSAkT1VURElSL291dF9uYXBpXzQucGNtID4+ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55
LmV4ZSAxMzAwMCAtRklYRURfRkwgLUZMIDYwIC1NQVggMTAwIC4uL2RhdGEvb3JpZy9zYXdzd2Vl
cF8zODBfNjAucGNtICRPVVRESVIvb3V0X25hcGlfNS5wY20gPj4gJExPR0cKLS4uL1JlbGVhc2Uv
a2VubnkuZXhlIC4uL2RhdGEvb3JpZy9ib3R0bGVuZWNrcy50eHQgLUZJWEVEX0ZMIC1GTCA2MCAt
TUFYUkFURSAzMjAwMCAuLi9kYXRhL29yaWcvc2F3c3dlZXBfMzgwXzYwLnBjbSAkT1VURElSL291
dF9uYXBpXzYucGNtID4+ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAxMzAwMCAtSU5JVF9S
QVRFIDMyMDAwIC1GSVhFRF9GTCAtRkwgNjAgLU1BWCAxMDAgLi4vZGF0YS9vcmlnL3Nhd3N3ZWVw
XzM4MF82MC5wY20gJE9VVERJUi9vdXRfbmFwaV83LnBjbSA+PiAkTE9HRwotCi0uLi9SZWxlYXNl
L2tlbm55LmV4ZSAxMzAwMCAtRklYRURfRkwgLUZMIDMwIC1NQVggMTAwIC4uL2RhdGEvb3JpZy9s
b25nc3BlZWNoLnBjbSAkT1VURElSL291dF9uYXBpXzExLnBjbSA+PiAkTE9HRwotLi4vUmVsZWFz
ZS9rZW5ueS5leGUgLi4vZGF0YS9vcmlnL2JvdHRsZW5lY2tzLnR4dCAtRklYRURfRkwgLUZMIDMw
IC1NQVhSQVRFIDMyMDAwIC4uL2RhdGEvb3JpZy9sb25nc3BlZWNoLnBjbSAkT1VURElSL291dF9u
YXBpXzEyLnBjbSA+PiAkTE9HRwotLi4vUmVsZWFzZS9rZW5ueS5leGUgMTMwMDAgLUZJWEVEX0ZM
IC1GTCAzMCAtTUFYIDEwMCAuLi9kYXRhL29yaWcvbG9uZ3NwZWVjaC5wY20gJE9VVERJUi9vdXRf
bmFwaV8xMy5wY20gPj4gJExPR0cKLS4uL1JlbGVhc2Uva2VubnkuZXhlIC4uL2RhdGEvb3JpZy9i
b3R0bGVuZWNrcy50eHQgLUZJWEVEX0ZMIC1GTCAzMCAtTUFYUkFURSAzMjAwMCAuLi9kYXRhL29y
aWcvbG9uZ3NwZWVjaC5wY20gJE9VVERJUi9vdXRfbmFwaV8xNC5wY20gPj4gJExPR0cKLS4uL1Jl
bGVhc2Uva2VubnkuZXhlIDEzMDAwIC1GSVhFRF9GTCAtRkwgNjAgLU1BWCAxMDAgLi4vZGF0YS9v
cmlnL2xvbmdzcGVlY2gucGNtICRPVVRESVIvb3V0X25hcGlfMTUucGNtID4+ICRMT0dHCi0uLi9S
ZWxlYXNlL2tlbm55LmV4ZSAuLi9kYXRhL29yaWcvYm90dGxlbmVja3MudHh0IC1GSVhFRF9GTCAt
RkwgNjAgLU1BWFJBVEUgMzIwMDAgLi4vZGF0YS9vcmlnL2xvbmdzcGVlY2gucGNtICRPVVRESVIv
b3V0X25hcGlfMTYucGNtID4+ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAxMzAwMCAtSU5J
VF9SQVRFIDMyMDAwIC1GSVhFRF9GTCAtRkwgNjAgLU1BWCAxMDAgLi4vZGF0YS9vcmlnL2xvbmdz
cGVlY2gucGNtICRPVVRESVIvb3V0X25hcGlfMTcucGNtID4+ICRMT0dHCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNmYXVsdC50eHQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDZmF1bHQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmNGQ5NDc4ZmQ0OWJmZjUxMDNjZDQyYWM0NTllYTFjOGJhNGU4NzM4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNmYXVsdC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0
MCArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwgJiYgc2V0
IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3RlcgotCi1MT0dGSUxF
PWxvZ2ZhdWx0LnR4dAotZWNobyAiU1RBUlQgRkFVTFQgVEVTVCIgPiAkTE9HRklMRQotCi1JU0FD
PS4uL1JlbGVhc2Uva2VubnkuZXhlCi1JU0FDRklYRkxPQVQ9Li4vUmVsZWFzZS90ZXN0Rml4Rmxv
YXQuZXhlCi0KLUlORklMRVM9JChjYXQgSW5wdXRGaWxlcy50eHQpCi1TVUJTRVQ9JChjYXQgSW5w
dXRGaWxlc0Zldy50eHQpCi1DSEFOTkVMRklMRVM9JChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkKLUNI
QU5ORUxMSVNUPSgkKGNhdCBDaGFubmVsRmlsZXMudHh0KSkKLUlORElSPS4uL2RhdGEvb3JpZwot
T1VURElSPS4uL2RhdGFxYWZ0Ci1ta2RpciAtcCAkT1VURElSCi0KLVRBUkdFVFJBVEU9KDEwMDAw
IDE1MDAwIDIwMDAwIDI1MDAwIDMwMDAwIDMyMDAwKQotRkFVTFRURVNUPSgxIDIgMyA0IDUgNiA3
IDkpCi0KLWluZGV4MT0wCi0KLWZpbGU9d2JfY29udHNwZWVjaC5wY20KLQotIyBGYXVsdCB0ZXN0
Ci1mb3IgdGVzdG5yIGluICR7RkFVTFRURVNUWypdfQotICAgZG8KLQkkSVNBQyAzMjAwMCAtRiAk
dGVzdG5yICRJTkRJUi8iJGZpbGUiICRPVVRESVIvZnQkdGVzdG5yIiRmaWxlIiA+PiAkTE9HRklM
RQotZG9uZQotCi0jIEZhdWx0IHRlc3QgbnVtYmVyIDEwLCBlcnJvciBpbiBiaXRzdHJlYW0KLSAk
SVNBQyAzMjAwMCAtRiAxMCAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2Z0MTBfIiRmaWxlIiA+PiAk
TE9HRklMRQotICRJU0FDIDMyMDAwIC1GIDEwIC1QTCAxMCAkSU5ESVIvIiRmaWxlIiAkT1VURElS
L2Z0MTBwbGNfIiRmaWxlIiA+PiAkTE9HRklMRQotICRJU0FDIDMyMDAwIC1GIDEwIC1OQiAxICRJ
TkRJUi8iJGZpbGUiICRPVVRESVIvZnQxMG5iMV8iJGZpbGUiID4+ICRMT0dGSUxFCi0gJElTQUMg
MzIwMDAgLUYgMTAgLU5CIDIgLVBMIDEwICRJTkRJUi8iJGZpbGUiICRPVVRESVIvZnQxMG5iMl8i
JGZpbGUiID4+ICRMT0dGSUxFCi0KLWVjaG8gRE9ORSEKLQotCi0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNmaXhmbG9hdC50eHQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDZml4ZmxvYXQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjOWUwMmRmMmU5ZjMzNjYwMjU1ZTYyZTRmNmE2MmMwYWVlMTE1NjE1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9pc2FjL2ZpeC90ZXN0L1FBL3J1bmlTQUNmaXhmbG9hdC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw0NyArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwgJiYg
c2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3RlcgotCi1MT0dG
SUxFPWxvZ2Z4ZmwudHh0Ci1lY2hvICJTVEFSVCBGSVgtRkxPQVQgVEVTVCIgPiAkTE9HRklMRQot
Ci0KLUlTQUNGSVhGTE9BVD0uLi90ZXN0Rml4RmxvYXQuZXhlCi0KLUlORklMRVM9JChjYXQgSW5w
dXRGaWxlcy50eHQpCi1TVUJTRVQ9JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi1DSEFOTkVMRklM
RVM9JChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkKLUNIQU5ORUxMSVNUPSgkKGNhdCBDaGFubmVsRmls
ZXMudHh0KSkKLUlORElSPS4uL2RhdGEvb3JpZwotT1VURElSPS4uL2RhdGFxYWZ4ZmwKLW1rZGly
IC1wICRPVVRESVIKLQotaW5kZXgxPTAKLQotZm9yIGZpbGUgaW4gJElORklMRVMgIyBsb29wIG92
ZXIgYWxsIGlucHV0IGZpbGVzCi0gIGRvCi0gIAotICBmb3IgY2hhbm5lbCBpbiAkQ0hBTk5FTEZJ
TEVTCi0JZG8KLQlsZXQgImluZGV4MT1pbmRleDErMSIKLQotCSRJU0FDRklYRkxPQVQgJElORElS
LyRjaGFubmVsIC1tIDEgLVBMQyAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2ZsZngkaW5kZXgxIiRm
aWxlIiA+PiAkTE9HRklMRQotCSRJU0FDRklYRkxPQVQgJElORElSLyRjaGFubmVsIC1tIDIgLVBM
QyAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2Z4ZmwkaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQot
ICBkb25lCi0KLWRvbmUKLQotaW5kZXgxPTAKLQotZm9yIGZpbGUgaW4gJFNVQlNFVCAjIGxvb3Ag
b3ZlciB0aGUgc3Vic2V0IG9mIGlucHV0IGZpbGVzCi0gIGRvCi0JbGV0ICJpbmRleDE9aW5kZXgx
KzEiCi0JJElTQUNGSVhGTE9BVCAkSU5ESVIvJGNoYW5uZWwgLW0gMSAtTkIgMSAkSU5ESVIvIiRm
aWxlIiAkT1VURElSL2ZsZnhuYjFfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJ
WEZMT0FUICRJTkRJUi8kY2hhbm5lbCAtbSAyIC1OQiAxICRJTkRJUi8iJGZpbGUiICRPVVRESVIv
ZnhmbG5iMV8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDRklYRkxPQVQgJElORElS
LyRjaGFubmVsIC1tIDEgLU5CIDIgLVBMQyAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2ZsZnhuYjJf
JGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5l
bCAtbSAyIC1OQiAyIC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9meGZsbmIyXyRpbmRleDEi
JGZpbGUiID4+ICRMT0dGSUxFCi1kb25lCi0KLWVjaG8gRE9ORSEKLQotCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9pc2FjL21haW4vc291cmNlL2VudHJvcHlfY29kaW5nLmMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvaXNhYy9tYWluL3NvdXJjZS9lbnRyb3B5X2NvZGluZy5jCmluZGV4IDI4NzY3YWZjNjMz
YzA5ZWVjNzVhZDA4ZTJjYmY3MTY5OGI0MTE2NDAuLjY2OTJhNTE5Y2E5N2MzMDJkN2FmNWEwZGVi
M2JkNTU4NjkyOGVjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vc291cmNl
L2VudHJvcHlfY29kaW5nLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi9zb3VyY2UvZW50
cm9weV9jb2RpbmcuYwpAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgdm9pZCBGaW5kSW52QXJTcGVj
KGNvbnN0IGludDE2X3QqIEFSQ29lZlExMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgaW50MzJfdCBnYWluUTEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiBD
dXJ2ZVExNikgewogICBpbnQzMl90IENvcnJRMTFbQVJfT1JERVIgKyAxXTsKLSAgaW50MzJfdCBz
dW0sIHRtcEdhaW47CisgIGludDY0X3Qgc3VtLCB0bXBHYWluOwogICBpbnQzMl90IGRpZmZRMTZb
RlJBTUVTQU1QTEVTIC8gOF07CiAgIGNvbnN0IGludDE2X3QqIENTX3B0clE5OwogICBpbnQgaywg
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9ydW5pU0FDTG9u
Z3Rlc3QudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi90ZXN0L1FBL3J1bmlTQUNMb25ndGVz
dC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMDUyMjRhMGVjYzI1NmFlMTE2
YTdlOGU5NzQ0ZTdhMDA1MGRhNmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi90ZXN0L1FBL3J1bmlTQUNMb25ndGVz
dC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0MzMgKzAsMCBAQAotIyEvYmluL2Jhc2gKLShzZXQg
LW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBiYXNoIHRvIGln
bm9yZSBcciBjaGFyYWN0ZXIKLQotCi0KLWlmICBbICIkMSIgPSAieDY0IiBdIHx8IFsgIiQyIiA9
ICJ4NjQiIF0gfHwgWyAiJCMiIC1lcSAwIF0KLSAgICB0aGVuCi0gICAgUExBVEZPUk09X1g2NAot
ICAgIElTQUM9Li4veDY0L1JlbGVhc2UvUmVsZWFzZVRlc3QtQVBJXzIwMDUuZXhlCi1lbGlmIFsg
IiQxIiA9ICJMSU5VWCIgXSB8fCBbICIkMiIgPSAiTElOVVgiIF0KLSAgICB0aGVuCi0gICAgUExB
VEZPUk09X2xpbnV4Ci0gICAgSVNBQz0uLi9SZWxlYXNlVGVzdC1BUEkvaXNhY3N3dGVzdAotZWxz
ZQotICAgIFBMQVRGT1JNPV8yMDA1Ci0gICAgSVNBQz0uLi93aW4zMi9SZWxlYXNlL1JlbGVhc2VU
ZXN0LUFQSV8yMDA1LmV4ZQotZmkKLQotaWYgIFsgIiQjIiAtZXEgMCBdIHx8IFsgIiQxIiA9ICJh
bGwiIF0gfHwgWyAiJDEiID0gIndiIiBdCi0gICAgdGhlbgotICAgIExPR0ZJTEU9bG9nTm9ybWFs
IiRQTEFURk9STSIudHh0Ci0gICAgZWNobyAiU1RBUlQgSVNBQyBXQiBURVNUIiA+ICRMT0dGSUxF
Ci0gICAgZWNobyA+PiAkTE9HRklMRQotCi0gICAgSU5GSUxFUz0kKGNhdCBJbnB1dEZpbGVzLnR4
dCkKLSAgICBTVUJTRVQ9JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi0gICAgQ0hBTk5FTEZJTEVT
PSQoY2F0IENoYW5uZWxGaWxlcy50eHQpCi0gICAgQ0hBTk5FTExJU1Q9KCQoY2F0IENoYW5uZWxG
aWxlcy50eHQpKQotICAgIElORElSPS4uL2RhdGEvb3JpZwotICAgIE9VVERJUj0uLi9kYXRhcWEi
JFBMQVRGT1JNIgotICAgIG1rZGlyIC1wICRPVVRESVIKLSAgICBybSAtZiAkT1VURElSLyoKLSAg
ICAKLSAgICBpZHg9MAotICAgIFJBVEU9MTAwMDAKLSAgICBGUkFNRVNJWkU9MzAKLSAgICAKLQot
ICAgIGZvciBmaWxlIGluICRJTkZJTEVTICMgbG9vcCBvdmVyIGFsbCBpbnB1dCBmaWxlcwotICAg
ICAgZG8KLSAgICAgIAotICAgICAgZWNobyAiSW5wdXQgZmlsZTogIiAkZmlsZQotICAgICAgZWNo
byAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0gICAgICBlY2hvICJJbnN0
YW50YW5lb3VzIHdpdGggUkFURSAiICRSQVRFICIsIGFuZCBGcmFtZS1zaXplICIgJEZSQU1FU0la
RQotICAgICAgJElTQUMgLUkgLUIgJFJBVEUgLUZMICRGUkFNRVNJWkUgLUZTIDE2ICRJTkRJUi8i
JGZpbGUiICRPVVRESVIvaV8iJEZSQU1FU0laRSJfIiRSQVRFIl8iJGZpbGUiID4+ICRMT0dGSUxF
Ci0gICAgICBlY2hvCi0gICAgICAKLSAgICAgIG5hbWU9IiR7Q0hBTk5FTExJU1RbJGlkeF19Igot
ICAgICAgZWNobyAiQWRhcHRpdmUgd2l0aCBjaGFubmVsIGZpbGU6ICIgJG5hbWUgCi0gICAgICAK
LSAgICAgICRJU0FDIC1CICRJTkRJUi8ke0NIQU5ORUxMSVNUWyRpZHhdfSAtRlMgMTYgJElORElS
LyIkZmlsZSIgJE9VVERJUi9hXyR7bmFtZSUuKn1fIiRmaWxlIiA+PiAkTE9HRklMRQotICAgICAg
Ci0gICAgICBlY2hvCi0gICAgICBlY2hvCi0gICAgICAKLSMgICAgIGFsdGVybmF0ZSBiZXR3ZWVu
IDMwICYgNjAgbXMuCi0gICAgICBpZiBbICRGUkFNRVNJWkUgLWVxIDMwIF0KLQkgIHRoZW4KLQkg
IEZSQU1FU0laRT02MAotICAgICAgZWxzZQotCSAgRlJBTUVTSVpFPTMwCi0gICAgICBmaQotICAg
ICAgCi0jICAgICByYXRlIGJldHdlZW4gMTAwMDAgdG8gMzIwMDAgYml0cy9zZWMKLSAgICAgIGlm
IFsgJFJBVEUgLWxlIDMwMDAwIF0KLQkgIHRoZW4KLQkgIGxldCAiUkFURT1SQVRFKzIwMDAiCi0g
ICAgICBlbHNlCi0JICBsZXQgIlJBVEU9MTAwMDAiCi0gICAgICBmaQotICAgICAgCi0jICAgICB0
aGVyZSBhcmUgb25seSB0aHJlZSBjaGFubmVsIGZpbGUKLSAgICAgIGlmIFsgJGlkeCAtZ2UgMiBd
OyB0aGVuCi0JICBpZHg9MAotICAgICAgZWxzZQotCSAgbGV0ICJpZHg9aWR4KzEiCi0gICAgICBm
aQotICAgICAgCi0gICAgZG9uZQotCi0gICAgaWR4PTAKLSAgICAKLSMgICBsb29wIG92ZXIgdGhl
IHN1YnNldCBvZiBpbnB1dCBmaWxlcwotICAgIGZvciBmaWxlIGluICRTVUJTRVQgCi0gICAgICBk
bwotICAgICAgCi0gICAgICBpZiBbICRpZHggLWVxIDAgXTsgdGhlbgotCSAgJElTQUMgLUIgJElO
RElSLyR7Q0hBTk5FTExJU1RbMF19IC1GTCAzMCAtRklYRURfRkwgLUZTIDE2ICRJTkRJUi8iJGZp
bGUiICRPVVRESVIvYTMwXyIkZmlsZSIgPj4gJExPR0ZJTEUKLQkgIGlkeD0xCi0gICAgICBlbHNl
Ci0JICAkSVNBQyAtQiAkSU5ESVIvJHtDSEFOTkVMTElTVFswXX0gLUZMIDYwIC1GSVhFRF9GTCAt
RlMgMTYgJElORElSLyIkZmlsZSIgJE9VVERJUi9hNjBfIiRmaWxlIiA+PiAkTE9HRklMRQotCSAg
aWR4PTAKLSAgICAgIGZpCi0gICAgZG9uZQotCi0gICAgJElTQUMgLUIgJElORElSLyR7Q0hBTk5F
TExJU1RbMF19IC1JTklUUkFURSAyNTAwMCAtRkwgMzAgLUZTIDE2ICRJTkRJUi8iJGZpbGUiICRP
VVRESVIvYTYwX0luaXQyNWticHNfIiRmaWxlIiA+PiAkTE9HRklMRQotCi0gICAgZWNobwotICAg
IGVjaG8gV0lERUJBTkQgRE9ORSEKLSAgICBlY2hvCi0gICAgZWNobwotZmkKLQotaWYgIFsgIiQj
IiAtZXEgMCBdIHx8IFsgIiQxIiA9ICJhbGwiIF0gfHwgWyAiJDEiID0gInN3YiIgXQotICAgIHRo
ZW4KLQotICAgIExPR0ZJTEU9bG9nTm9ybWFsX1NXQiIkUExBVEZPUk0iLnR4dAotICAgIGVjaG8g
IlNUQVJUIElTQUMgU1dCIFRFU1QiID4gJExPR0ZJTEUKLSAgICBlY2hvID4+ICRMT0dGSUxFCi0K
LSAgICBlY2hvIFNUQVJUSU5HIFRPIFRFU1QgU1VQRVItV0lERUJBTkQKLSAgICAKLSAgICBJTkZJ
TEVTPSQoY2F0IElucHV0RmlsZXNTV0IudHh0KQotICAgIElORElSPS4uL2RhdGEvb3JpZ3N3Ygot
ICAgIE9VVERJUj0uLi9kYXRhcWFzd2IiJFBMQVRGT1JNIgotICAgIG1rZGlyIC1wICRPVVRESVIK
LSAgICBybSAtZiAkT1VURElSLyoKLSAgICAKLSAgICBmb3IgZmlsZSBpbiAkSU5GSUxFUwotICAg
ICAgZG8KLSAgICAgIGVjaG8KLSAgICAgIGVjaG8gIklucHV0IGZpbGU6ICIgJGZpbGUKLSAgICAg
IGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotICAgICAgZm9yIFJBVEUg
aW4gMTIwMDAgMjAwMDAgMzIwMDAgMzgwMDAgNDUwMDAgNTAwMDAgNTYwMDAgIAotCWRvCi0JCi0J
ZWNobyAiUmF0ZSAiICRSQVRFCi0JJElTQUMgLUkgLUIgJFJBVEUgLUZMIDMwIC1GUyAzMiAkSU5E
SVIvIiRmaWxlIiAkT1VURElSL3N3Yl8iJFJBVEUiXyIkZmlsZSIgPj4gJExPR0ZJTEUKLQllY2hv
Ci0JCi0gICAgICBkb25lCi0gIAotICAgIGRvbmUKLWZpCi0KLWlmICBbICIkIyIgLWVxIDAgXSB8
fCBbICIkMSIgPSAiYWxsIiBdIHx8IFsgIiQxIiA9ICJBUEkiIF0KLSAgICB0aGVuCi0KLSAgICBM
T0dGSUxFX0FQST1sb2dOb3JtYWxfQVBJIiRQTEFURk9STSIudHh0Ci0gICAgZWNobwotICAgIGVj
aG8KLSAgICBlY2hvICJTVEFSVCBJU0FDIEFQSSBURVNUIiA+ICRMT0dGSUxFX0FQSQotICAgIGVj
aG8gPj4gJExPR0ZJTEVfQVBJCi0gICAgaWR4PTEKLSAgICBlY2hvICIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGVzdCBFbmZvcmNlbWVudCBvZiBmcmFtZS1zaXplIgotICAgIGVjaG8gIj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCi0gICAgbWtkaXIgLXAgLi4vRnJhbWVTaXpl
TGltIiRQTEFURk9STSIKLSAgICBybSAtZiAuLi9GcmFtZVNpemVMaW0iJFBMQVRGT1JNIi8qCi0g
ICAgZWNobwotICAgIGVjaG8gIi0tIE5vIGVuZm9yY2VtZW50OyBCTiAxMDAwMCIKLSAgICBlY2hv
Ci0gICAgJElTQUMgLUIgMTAwMDAgLUZTIDE2IC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2Nf
V0IucGNtIFwKLQkuLi9GcmFtZVNpemVMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20g
Pj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8K
LSAgICBlY2hvICItLSBOb3cgRW5mb3JjZSAzMCBtcyBmcmFtZSBzaXplIHdpdGggdGhlIHNhbWUg
Ym90dGxlbmVjayIKLSAgICBlY2hvICJUaGVyZSBzaG91bGQgbm90IGJlIGFueSA2MCBtcyBmcmFt
ZSIKLSAgICBlY2hvCi0gICAgJElTQUMgLUIgMTAwMDAgLUZMIDMwIC1GSVhFRF9GTCAtRlMgMTYg
Li4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gXAotCS4uL0ZyYW1lU2l6ZUxpbSIk
UExBVEZPUk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlk
eD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gIi0tIE5vIGVuZm9yY2VtZW50
OyBCTiAzMjAwMCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUIgMzIwMDAgLUZTIDE2IC4uL2RhdGEv
b3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNtIFwKLQkuLi9GcmFtZVNpemVMaW0iJFBMQVRGT1JN
Ii9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEi
Ci0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSBOb3cgRW5mb3JjZSA2MCBtcyBmcmFt
ZSBzaXplIHdpdGggdGhlIHNhbWUgYm90dGxlbmVjayIKLSAgICBlY2hvICJUaGVyZSBzaG91bGQg
bm90IGJlIGFueSAzMCBtcyBmcmFtZSIKLSAgICBlY2hvIAotICAgICRJU0FDIC1CIDMyMDAwIC1G
TCA2MCAtRklYRURfRkwgLUZTIDE2IC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNt
IFwKLQkuLi9GcmFtZVNpemVMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExP
R0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBl
Y2hvCi0gICAgZWNobwotICAgIGVjaG8KLQotICAgIGVjaG8gIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRlc3QgTGltaXRpbmcgb2YgUGF5bG9hZCBTaXplIGFuZCBSYXRlIgotICAgIGVjaG8g
Ij09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCi0gICAgbWtkaXIgLXAgLi4vUGF5bG9h
ZExpbSIkUExBVEZPUk0iCi0gICAgcm0gLWYgLi4vUGF5bG9hZExpbSIkUExBVEZPUk0iLyoKLSAg
ICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gIi0tIE5vIExpbWl0LCBmcmFtZS1zaXplIDYwIG1z
LCBXSURFQkFORCIKLSAgICBlY2hvIAotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1GTCA2MCAtRlMg
MTYgICAgICAgICAgICAgICAgLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gXAot
CS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVf
QVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICIt
LSBQYXlsb2FkLXNpemUgbGltaXQgb2YgMjUwLCBmcmFtZS1zaXplIDYwIG1zLCBXSURFQkFORCIK
LSAgICBlY2hvIAotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1GTCA2MCAtRlMgMTYgLU1BWCAyNTAg
ICAgICAgLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gXAotCS4uL1BheWxvYWRM
aW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0
ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSBSYXRlIGxpbWl0
IG9mIDMzIGticHMgZm9yIDYwIG1zIGZyYW1lLXNpemUiCi0gICAgZWNobwotICAgICRJU0FDIC1J
IC1CIDMyMDAwIC1GTCA2MCAtRlMgMTYgLU1BWFJBVEUgMzMwMDAgLi4vZGF0YS9vcmlnL3NwZWVj
aF9hbmRfbWlzY19XQi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIk
aWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobyAK
LSAgICBlY2hvICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXyIKLSAgICBlY2hvCi0gICAgZWNobwotCi0gICAgZWNobyAiLS0gTm8gTGltaXQs
IGZyYW1lLXNpemUgMzAgbXMsIFdJREVCQU5EIgotICAgIGVjaG8gCi0gICAgJElTQUMgLUkgLUIg
MzIwMDAgLUZMIDMwIC1GUyAxNiAgICAgICAgICAgICAgICAuLi9kYXRhL29yaWcvc3BlZWNoX2Fu
ZF9taXNjX1dCLnBjbSBcCi0JLi4vUGF5bG9hZExpbSIkUExBVEZPUk0iL0FQSVRlc3RfIiRpZHgi
LnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAg
ZWNobyAgICAKLSAgICBlY2hvICItLSBQYXlsb2FkLXNpemUgbGltaXQgb2YgMTMwLCBmcmFtZS1z
aXplIDMwIG1zLCBXSURFQkFORCIKLSAgICBlY2hvIAotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1G
TCAzMCAtRlMgMTYgLU1BWCAxMzAgICAgICAgLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19X
Qi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4g
JExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAg
ICBlY2hvICItLSBSYXRlIGxpbWl0IG9mIDMzIGticHMgZm9yIDMwIG1zIGZyYW1lLXNpemUsIHdp
ZGViYW5kIgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgMzAgLUZTIDE2IC1N
QVhSQVRFIDMzMDAwIC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNtIFwKLQkuLi9Q
YXlsb2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQot
ICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvICJfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIKLSAgICBlY2hvCi0gICAg
ZWNobwotCi0gICAgZWNobyAiLS0gTm8gbGltaXQgZm9yIDMyIGticHMsIDMwIG1zLCBTVVBFUi1X
SURFQkFORCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUkgLUIgMzIwMDAgLUZMIDMwIC1GUyAzMiAg
ICAgICAgICAuLi9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSBcCi0JLi4vUGF5bG9hZExpbSIk
UExBVEZPUk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlk
eD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gIi0tIFBheWxvYWQgbGltaXQg
b2YgMTMwIGJ5dGVzIGZvciAzMiBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQiCi0gICAgZWNo
bwotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1GTCAzMCAtRlMgMzIgLU1BWCAxMzAgLi4vZGF0YS9v
cmlnc3diL2pzdGVzdF8zMi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0
XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNo
bwotICAgIGVjaG8gIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fIgotICAgIGVjaG8KLSAgICBlY2hvCi0KLSAgICBlY2hvICItLSBObyBsaW1p
dCwgUmF0ZSA0NSBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQsIDEyIGtIeiIKLSAgICBlY2hv
Ci0gICAgJElTQUMgLUkgLUIgNDUwMDAgLUZMIDMwIC1GUyAzMiAgICAgICAgICAgICAgIC4uL2Rh
dGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJ
VGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAg
IGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gUmF0ZSBsaW1pdCBvZiA0NiBrYnBzIGZvciA0
MiBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQsIDEyIGtIeiIKLSAgICBlY2hvCi0gICAgJElT
QUMgLUkgLUIgNDUwMDAgLUZMIDMwIC1GUyAzMiAtTUFYUkFURSA0NjAwMCAuLi9kYXRhL29yaWdz
d2IvanN0ZXN0XzMyLnBjbSBcCi0JLi4vUGF5bG9hZExpbSIkUExBVEZPUk0iL0FQSVRlc3RfIiRp
ZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0g
ICAgZWNobwotICAgIGVjaG8gIi0tIFBheWxvYWQgbGltaXQgb2YgMTcwIGJ5dGVzIGZvciA0NSBr
YnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQsIDEyIGtIeiIKLSAgICBlY2hvCi0gICAgJElTQUMg
LUkgLUIgNDUwMDAgLUZMIDMwIC1GUyAzMiAtTUFYIDE3MCAgICAgICAuLi9kYXRhL29yaWdzd2Iv
anN0ZXN0XzMyLnBjbSBcCi0JLi4vUGF5bG9hZExpbSIkUExBVEZPUk0iL0FQSVRlc3RfIiRpZHgi
LnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAg
ZWNobyAiX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18iCi0gICAgZWNobwotICAgIGVjaG8KLSAgCi0gICAgZWNobyAiLS0gTm8gbGltaXQgZm9y
IDU2IGticHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCwgMTYga0h6IgotICAgIGVjaG8KLSAgICAk
SVNBQyAtSSAtQiA1NjAwMCAtRkwgMzAgLUZTIDMyICAgICAgICAgICAgICAgIC4uL2RhdGEvb3Jp
Z3N3Yi9qc3Rlc3RfMzIucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8i
JGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8K
LSAgICBlY2hvCi0gICAgZWNobyAiLS0gUGF5bG9hZCBsaW1pdCBvZiAyMDAgYnl0ZXMgZm9yIDU2
IGticHMgMzAgbXMsIFNVUEVSLVdJREVCQU5ELCAxNiBrSHoiCi0gICAgZWNobwotICAgICRJU0FD
IC1JIC1CIDU2MDAwIC1GTCAzMCAtRlMgMzIgLU1BWCAyMDAgICAgICAgLi4vZGF0YS9vcmlnc3di
L2pzdGVzdF8zMi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4
Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAg
IGVjaG8KLSAgICBlY2hvICItLSBSYXRlIGxpbWl0IG9mIDU3IGticHMgZm9yIDU2IGticHMgMzAg
bXMsIFNVUEVSLVdJREVCQU5ELCAxNiBrSHoiCi0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDU2
MDAwIC1GTCAzMCAtRlMgMzIgLU1BWFJBVEUgNTcwMDAgLi4vZGF0YS9vcmlnc3diL2pzdGVzdF8z
Mi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4g
JExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8gIl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIgot
ICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgCi0g
ICAgZWNobyAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCBUcmFucy1D
b2RpbmciCi0gICAgZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKLSAgICBt
a2RpciAtcCAuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iCi0gICAgcm0gLWYgLi4vVHJhbnNjb2Rp
bmciJFBMQVRGT1JNIi8qCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSAyMCBrYnBz
LCAzMCBtcywgV0lERUJBTkQiCi0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDIwMDAwIC1GTCAz
MCAtRlMgMTYgICAgICAgICAgLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gXAot
CS4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF9yZWZUcmFuczIwV0IucGNtID4+ICRM
T0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAg
Ci0gICAgZWNobyAiLS0gMzIga2JwcyB0cmFucy1jb2RpbmcgdG8gMjAga2JwcywgMzAgbXMsIFdJ
REVCQU5EIgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgMzAgLUZTIDE2ICAt
VCAyMDAwMCAgLi4vVHJhbnNjb2RpbmciJFBMQVRGT1JNIi9BUElUZXN0XzMyVDIwLnBjbSBcCi0J
Li4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vVHJhbnNjb2RpbmciJFBMQVRG
T1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4
KzEiCi0gICAgZWNobwotICAgIGVjaG8gIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fIgotCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hv
ICItLSAzOCBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQiCi0gICAgZWNobwotICAgICRJU0FD
IC1JIC1CIDM4MDAwIC1GTCAzMCAtRlMgMzIgICAgICAgICAgLi4vZGF0YS9vcmlnc3diL2pzdGVz
dF8zMi5wY20gXAotCS4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF9yZWZUcmFuczM4
LnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAg
ZWNobwotICAgIAotICAgIGVjaG8gIi0tIDQ1IGticHMgdHJhbnMtY29kaW5nIHRvIDM4IGticHMs
IDMwIG1zLCBTVVBFUi1XSURFQkFORCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUkgLUIgNDUwMDAg
LUZMIDMwIC1GUyAzMiAgLVQgMzgwMDAgIC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVz
dF80NVQzOC5wY20gXAotCS4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIC4uL1RyYW5zY29k
aW5nIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxl
dCAiaWR4PWlkeCsxIgotIAotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gMjAga2Jw
cywgMzAgbXMsIFNVUEVSLVdJREVCQU5EIgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiAyMDAw
MCAtRkwgMzAgLUZTIDMyICAgICAgICAgIC4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIFwK
LQkuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3RfcmVmVHJhbnMyMFNXQi5wY20gPj4g
JExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0KLSAgICBlY2hvCi0gICAgZWNobwot
ICAgIAotICAgIGVjaG8gIi0tIDQ1IGticHMgdHJhbnMtY29kaW5nIHRvIDIwIGticHMsIDMwIG1z
LCBTVVBFUi1XSURFQkFORCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUkgLUIgNDUwMDAgLUZMIDMw
IC1GUyAzMiAgLVQgMjAwMDAgIC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF80NVQy
MC5wY20gXAotCS4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIC4uL1RyYW5zY29kaW5nIiRQ
TEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4
PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvICJfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXyIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVj
aG8gIi0tIDUwIGticHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCIKLSAgICBlY2hvCi0gICAgJElT
QUMgLUkgLUIgNTAwMDAgLUZMIDMwIC1GUyAzMiAgICAgICAgICAuLi9kYXRhL29yaWdzd2IvanN0
ZXN0XzMyLnBjbSBcCi0JLi4vVHJhbnNjb2RpbmciJFBMQVRGT1JNIi9BUElUZXN0X3JlZlRyYW5z
NTAucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAg
ICBlY2hvCi0gICAgCi0gICAgZWNobyAiLS0gNTYga2JwcyB0cmFucy1jb2RpbmcgdG8gNTAga2Jw
cywgMzAgbXMsIFNVUEVSLVdJREVCQU5EIgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiA1NjAw
MCAtRkwgMzAgLUZTIDMyICAtVCA1MDAwMCAgLi4vVHJhbnNjb2RpbmciJFBMQVRGT1JNIi9BUElU
ZXN0XzU2VDUwLnBjbSBcCi0JLi4vZGF0YS9vcmlnc3diL2pzdGVzdF8zMi5wY20gLi4vVHJhbnNj
b2RpbmciJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAg
bGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAgICAKLSAgICBlY2hvICItLSA1
NiBrYnBzIHRyYW5zLWNvZGluZyB0byAyMCBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQiCi0g
ICAgZWNobwotICAgICRJU0FDIC1JIC1CIDU2MDAwIC1GTCAzMCAtRlMgMzIgIC1UIDIwMDAwIC4u
L1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF81NlQyMC5wY20gXAotCS4uL2RhdGEvb3Jp
Z3N3Yi9qc3Rlc3RfMzIucGNtIC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF8iJGlk
eCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAg
ICBlY2hvICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXyIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gCi0gICAgZWNobwotICAgIGVj
aG8KLSAgICAKLSAgICBlY2hvICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3QgRkVDIgotICAgIGVjaG8gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0i
Ci0gICAgbWtkaXIgLXAgLi4vRkVDIiRQTEFURk9STSIKLSAgICBybSAtZiAuLi9GRUMiJFBMQVRG
T1JNIi8qCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSAzMiBrYnBzIHdpdGggdHJh
bnNjb2RpbmcgdG8gMjBrYnBzLCAzMCBtcywgV0lERUJBTkQsIDEwJSBwYWNrZXQgbG9zcyIKLSAg
ICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgMzAgLUZTIDE2IC1QTCAxMCAtVCAyMDAwMCAuLi9GRUMi
JFBMQVRGT1JNIi9BUElUZXN0X1BMMTBfV0IzMF9UMjAucGNtIFwKLQkuLi9kYXRhL29yaWcvc3Bl
ZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9GRUMiJFBMQVRGT1JNIi9BUElUZXN0X1BMMTBfV0IzMC5w
Y20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVj
aG8KLSAgICAKLSAgICBlY2hvICItLSAzMiBrYnBzLCA2MCBtcywgV0lERUJBTkQsIDEwJSBwYWNr
ZXQgbG9zcyIKLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgNjAgLUZTIDE2IC1QTCAxMCAuLi9k
YXRhL29yaWcvc3BlZWNoX2FuZF9taXNjX1dCLnBjbSBcCi0JLi4vRkVDIiRQTEFURk9STSIvQVBJ
VGVzdF9QTDEwX1dCNjAucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgot
ICAgIGVjaG8KLSAgICBlY2hvCi0gICAgCi0gICAgZWNobyAiLS0gMzIga2JwcyB3aXRoIHRyYW5z
Y29kaW5nIHRvIDIwIGticHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCwgMTAlIHBhY2tldCBsb3Nz
IgotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1GTCAzMCAtRlMgMzIgLVBMIDEwIC1UIDIwMDAwIC4u
L0ZFQyIkUExBVEZPUk0iL0FQSVRlc3RfUEwxMF9TV0JfOGtIel9UMjAucGNtIFwKLQkuLi9kYXRh
L29yaWdzd2IvanN0ZXN0XzMyLnBjbSAuLi9GRUMiJFBMQVRGT1JNIi9BUElUZXN0X1BMMTBfU1dC
XzhrSHoucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8K
LSAgICBlY2hvCi0KLSAgICBlY2hvICItLSA0NSBrYnBzIHdpdGggVHJhc2NvZGluZyB0byAzOCBr
YnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQsIDEwJSBwYWNrZXQgbG9zcyIKLSAgICAkSVNBQyAt
SSAtQiA0NTAwMCAtRkwgMzAgLUZTIDMyIC1QTCAxMCAtVCAzODAwMCAuLi9GRUMiJFBMQVRGT1JN
Ii9BUElUZXN0X1BMMTBfU1dCXzEya0h6X1QzOC5wY20gXAotCS4uL2RhdGEvb3JpZ3N3Yi9qc3Rl
c3RfMzIucGNtIC4uL0ZFQyIkUExBVEZPUk0iL0FQSVRlc3RfUEwxMF9TV0JfMTJrSHoucGNtID4+
ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0K
LSAgICBlY2hvICItLSA1NiBrYnBzIHdpdGggdHJhbnNjb2RpbmcgdG8gNTAga2JwcywgMzAgbXMs
IFNVUEVSLVdJREVCQU5ELCAxMCUgcGFja2V0IGxvc3MiCi0gICAgJElTQUMgLUkgLUIgNTYwMDAg
LUZMIDMwIC1GUyAzMiAtUEwgMTAgLVQgNTAwMDAgLi4vRkVDIiRQTEFURk9STSIvQVBJVGVzdF9Q
TDEwX1NXQl8xNmtIel9UNTAucGNtIFwKLQkuLi9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSAu
Li9GRUMiJFBMQVRGT1JNIi9BUElUZXN0X1BMMTBfU1dCXzE2a0h6LnBjbSA+PiAkTE9HRklMRV9B
UEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotZmkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9ydW5pU0FDZmF1bHQudHh0IGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL2lzYWMvbWFpbi90ZXN0L1FBL3J1bmlTQUNmYXVsdC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDYzODI5YTRiOTgzNGVjMzJmMjRmOGJkOWY3ODNlYWJiNWJkZDI5
YmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2lzYWMvbWFpbi90ZXN0L1FBL3J1bmlTQUNmYXVsdC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw4MCArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwg
JiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3Rlcj8/Pz8/
ID8/Pz8/PyAKLWlmICBbICIkMSIgPSAieDY0IiBdIHx8IFsgIiQjIiAtZXEgMCBdCi0gICAgdGhl
bgotICAgIFBMQVRGT1JNPV9YNjQKLSAgICBJU0FDPS4uL3g2NC9SZWxlYXNlL1JlbGVhc2VUZXN0
LUFQSV8yMDA1LmV4ZQotZWxpZiBbICIkMSIgPSAiMjAwNSIgXQotCXRoZW4KLSAgICBQTEFURk9S
TT1fMjAwNQotICAgIElTQUM9Li4vd2luMzIvUmVsZWFzZS9SZWxlYXNlVGVzdC1BUElfMjAwNS5l
eGUKLWVsaWYgWyAiJDEiID09ICJMSU5VWCIgXQotCXRoZW4KLSAgICBQTEFURk9STT1fbGludXgK
LSAgICBJU0FDPS4uL1JlbGVhc2VUZXN0LUFQSS9pc2Fjc3d0ZXN0Ci1lbHNlCi0JZWNobyBVbmtu
b3duIFBsYXRmb3JtCi0JZXhpdCAyCi1maQotCi1MT0dGSUxFPWxvZ2ZhdWx0JFBMQVRGT1JNLnR4
dAotZWNobyAiU1RBUlQgRkFVTFQgVEVTVCIgPiAkTE9HRklMRQotCi0KLUlORklMRVM9JChjYXQg
SW5wdXRGaWxlcy50eHQpCi1TVUJTRVQ9JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi1DSEFOTkVM
RklMRVM9JChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkKLUNIQU5ORUxMSVNUPSgkKGNhdCBDaGFubmVs
RmlsZXMudHh0KSkKLUlORElSPS4uL2RhdGEvb3JpZwotSU5ESVJTV0I9Li4vZGF0YS9vcmlnc3di
Ci1PVVRESVI9Li4vZGF0YXFhZnQkUExBVEZPUk0KLW1rZGlyIC1wICRPVVRESVIKLQotI21heGlt
dW0gVGFyZ2V0IHJhdGUgZm9yIGRpZmZlcmVudCBiYW5kd2lkdGgKLVRBUkdFVFJBVEU9KCAzMjAw
MCAzMjAwMCA0NDAwMCA1NjAwMCApCi1TQU1QRlJFUT0oIDE2IDMyIDMyIDMyICkKLUZBVUxUVEVT
VD0oMSAyIDMgNCA1IDYgNyA5KQotCi1pbmRleDE9MAotCi1maWxlX3diPS4uL2RhdGEvb3JpZy8x
NmtIei5wY20KLWZpbGVfc3diPS4uL2RhdGEvb3JpZ3N3Yi8zMmtIei5wY20KLQotZm9yIGlkeCBp
biAwIDEgMiAzIAotICBkbwotIyBGYXVsdCB0ZXN0Ci0gIGVjaG8KLSAgZWNobyAiU2FtcGxpbmcg
RnJlcXVlbmN5ICIgJHtTQU1QRlJFUVtpZHhdfSAia0h6LCBSYXRlICIgJHtUQVJHRVRSQVRFW2lk
eF19ICJicHMuIgotICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0iCi0gIGlmIFsgJHtTQU1QRlJFUVtpZHhdfSAtZXEgMTYgXTsgdGhlbgot
ICAgIGZpbGU9JGZpbGVfd2IKLSAgZWxzZQotICAgIGZpbGU9JGZpbGVfc3diCi0gIGZpCi0KLSAg
Zm9yIHRlc3RuciBpbiAke0ZBVUxUVEVTVFsqXX0KLSAgICBkbwotICAgIGVjaG8gIlJ1bm5pbmcg
RmF1bHQgVGVzdCAiICR0ZXN0bnIKLSAgICAkSVNBQyAtSSAtQiAiJHtUQVJHRVRSQVRFW2lkeF19
IiAtRiAkdGVzdG5yIC1GUyAiJHtTQU1QRlJFUVtpZHhdfSIgIiRmaWxlIiBcCi0JJE9VVERJUi9m
dCIkdGVzdG5yIl8iJHtUQVJHRVRSQVRFW2lkeF19Il8iJHtTQU1QRlJFUVtpZHhdfSIucGNtID4+
IExPR0ZJTEUKLSAgICBlY2hvCi0gICAgCi0gIGRvbmUKLSAgCi0jIEZhdWx0IHRlc3QgbnVtYmVy
IDEwLCBlcnJvciBpbiBiaXRzdHJlYW0KLSAgZWNobyAiUnVubmluZyBGYXVsdCBUZXN0IDEwIgot
ICAkSVNBQyAtSSAtQiAiJHtUQVJHRVRSQVRFW2lkeF19IiAtRiAxMCAgICAgICAgLUZTICIke1NB
TVBGUkVRW2lkeF19IiAiJGZpbGUiIFwKLSAgICAkT1VURElSL2Z0MTBfIiR7VEFSR0VUUkFURVtp
ZHhdfSJfIiR7U0FNUEZSRVFbaWR4XX0iLnBjbSA+PiBMT0dGSUxFCi0gIGVjaG8KLSAgZWNobyAi
UnVubmluZyBGYXVsdCBUZXN0IDEwIHdpdGggcGFja2V0bG9zcyIKLSAgJElTQUMgLUkgLUIgIiR7
VEFSR0VUUkFURVtpZHhdfSIgLUYgMTAgLVBMIDEwIC1GUyAiJHtTQU1QRlJFUVtpZHhdfSIgIiRm
aWxlIiBcCi0gICAgJE9VVERJUi9mdDEwcGxjXyIke1RBUkdFVFJBVEVbaWR4XX0iXyIke1NBTVBG
UkVRW2lkeF19Ii5wY20gPj4gTE9HRklMRQotICBlY2hvCi1kb25lCi0KLWVjaG8gCi1lY2hvCi1l
Y2hvIERPTkUhCi0gIAotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vdGVz
dC9RQS9ydW5pU0FDZml4ZmxvYXQudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi90ZXN0L1FB
L3J1bmlTQUNmaXhmbG9hdC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjZGE3
OGU0ZmVhNmI1M2E3OWZmNzQwOTkzNWU3NjQxMjg0YjkyNzguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi90ZXN0L1FB
L3J1bmlTQUNmaXhmbG9hdC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0jIS9i
aW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwgJiYgc2V0IC1vIGlnbmNyOyAjIGZv
cmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3RlcgotCi1MT0dGSUxFPWxvZ2Z4ZmwudHh0Ci1l
Y2hvICJTVEFSVCBGSVgtRkxPQVQgVEVTVCIgPiAkTE9HRklMRQotCi0KLUlTQUNGSVhGTE9BVD0u
Li8uLi8uLi9maXgvdGVzdC90ZXN0Rml4RmxvYXQuZXhlCi0KLUlORklMRVM9JChjYXQgSW5wdXRG
aWxlcy50eHQpCi1TVUJTRVQ9JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi1DSEFOTkVMRklMRVM9
JChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkKLUNIQU5ORUxMSVNUPSgkKGNhdCBDaGFubmVsRmlsZXMu
dHh0KSkKLUlORElSPS4uL2RhdGEvb3JpZwotT1VURElSPS4uL2RhdGFxYWZ4ZmwKLW1rZGlyIC1w
ICRPVVRESVIKLQotaW5kZXgxPTAKLQotZm9yIGZpbGUgaW4gJElORklMRVMgIyBsb29wIG92ZXIg
YWxsIGlucHV0IGZpbGVzCi0gIGRvCi0gIAotICBmb3IgY2hhbm5lbCBpbiAkQ0hBTk5FTEZJTEVT
Ci0JZG8KLQlsZXQgImluZGV4MT1pbmRleDErMSIKLQotCSRJU0FDRklYRkxPQVQgJElORElSLyRj
aGFubmVsIC1tIDEgLVBMQyAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2ZsZngkaW5kZXgxIiRmaWxl
IiA+PiAkTE9HRklMRQotCSRJU0FDRklYRkxPQVQgJElORElSLyRjaGFubmVsIC1tIDIgLVBMQyAk
SU5ESVIvIiRmaWxlIiAkT1VURElSL2Z4ZmwkaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotICBk
b25lCi0KLWRvbmUKLQotaW5kZXgxPTAKLQotZm9yIGZpbGUgaW4gJFNVQlNFVCAjIGxvb3Agb3Zl
ciB0aGUgc3Vic2V0IG9mIGlucHV0IGZpbGVzCi0gIGRvCi0JbGV0ICJpbmRleDE9aW5kZXgxKzEi
Ci0JJElTQUNGSVhGTE9BVCAkSU5ESVIvJGNoYW5uZWwgLW0gMSAtTkIgMSAkSU5ESVIvIiRmaWxl
IiAkT1VURElSL2ZsZnhuYjFfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJWEZM
T0FUICRJTkRJUi8kY2hhbm5lbCAtbSAyIC1OQiAxICRJTkRJUi8iJGZpbGUiICRPVVRESVIvZnhm
bG5iMV8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDRklYRkxPQVQgJElORElSLyRj
aGFubmVsIC1tIDEgLU5CIDIgLVBMQyAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2ZsZnhuYjJfJGlu
ZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5lbCAt
bSAyIC1OQiAyIC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9meGZsbmIyXyRpbmRleDEiJGZp
bGUiID4+ICRMT0dGSUxFCi1kb25lCi0KLWVjaG8gRE9ORSEKLQotCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9sZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9s
ZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZS5jYwppbmRleCAwYmYzYjE5YTNiMTdjYjM0NmJjY2Q4
ODc3NjJhMjc3YjJlYzFlNDA1Li5kOWVmYzIxMWRhM2RhYzY4MDBiMjFiNWQ5NzlkYjkxYmQ2ZGU2
ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvbGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2xlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lLmNjCkBAIC0x
NCw2ICsxNCw4IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIExlZ2Fj
eUVuY29kZWRBdWRpb0ZyYW1lOjpMZWdhY3lFbmNvZGVkQXVkaW9GcmFtZShBdWRpb0RlY29kZXIq
IGRlY29kZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvbGVnYWN5X2VuY29kZWRfYXVkaW9f
ZnJhbWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9sZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZS5oCmluZGV4
IDA1ZDRmZTQ4OWM5MWRlMGEzYzA2YmRkYjZjZmZmZjRmYjIwNWM4NWMuLjQxYjA4Zjc4OThlMmU4
ZmJmOTY0Y2NiMzFmZTIxMzQ5MTM1ZWMwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9sZWdh
Y3lfZW5jb2RlZF9hdWRpb19mcmFtZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9sZWdhY3lfZW5jb2Rl
ZF9hdWRpb19mcmFtZS5oCkBAIC0xMSwxMCArMTEsMTQgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19DT0RJTkdfQ09ERUNTX0xFR0FDWV9FTkNPREVEX0FVRElPX0ZSQU1FX0hfCiAjZGVmaW5lIE1P
RFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19MRUdBQ1lfRU5DT0RFRF9BVURJT19GUkFNRV9IXwog
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9h
cnJheV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuY2MKaW5kZXggMzAyYjcxNDAzMTk2YWFk
ZTg2YmIzM2ZiMWQ0ZDhmNDljNzc4ZDI2ZS4uMzU3Y2IxYTIwZGE3OTlkZDAyODhkZDFmZmU4NDQ2
Yzc1OTU4YmE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9v
cHVzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5jYwpAQCAt
MTAsOCArMTAsMTEgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9v
cHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5oIgogCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAi
YXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVy
X29wdXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5oCmluZGV4IDcw
YWE0MGJkYzQ2YjAxZTg4YjlmZjBhYTBmNWZjZWMyN2Y3ZTAwZWMuLjgwNDM0MjUyNDNjZDllZDU2
NGI3MDRjZTMzMjMzMTA5Mzk0NmViNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1
ZGlvX2RlY29kZXJfb3B1cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJf
b3B1cy5oCkBAIC0xMSw4ICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19D
T0RFQ1NfT1BVU19BVURJT19ERUNPREVSX09QVVNfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19D
T0RJTkdfQ09ERUNTX09QVVNfQVVESU9fREVDT0RFUl9PUFVTX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9vcHVzX2ludGVyZmFjZS5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19l
bmNvZGVyX29wdXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXMuY2MK
aW5kZXggZTYyNDBlNjk4MjZhMTQwZjg2ODE4Y2M3MzcyMDNjMDgxNmM4NTVkZS4uMWE4OGFjZjNj
MDM1MjZmYjYxZTJiZjQ2MDk1NDI1NGU0MTI2NmM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlv
X2VuY29kZXJfb3B1cy5jYwpAQCAtMTUsNyArMTUsOCBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAK
ICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMu
aCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRj
aC5oIgorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9j
b250cm9sbGVyX21hbmFnZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3Mvb3B1cy9vcHVzX2ludGVyZmFjZS5oIgpAQCAtMjE0LDggKzIxNSw4MCBAQCBpbnQgR2V0Qml0
cmF0ZUJwcyhjb25zdCBBdWRpb0VuY29kZXJPcHVzQ29uZmlnJiBjb25maWcpIHsKICAgcmV0dXJu
ICpjb25maWcuYml0cmF0ZV9icHM7CiB9CiAKK2Jvb2wgSXNWYWxpZFBhY2tldExvc3NSYXRlKGlu
dCB2YWx1ZSkgeworICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSAxMDA7Cit9CisKK2Zs
b2F0IFRvRnJhY3Rpb24oaW50IHBlcmNlbnQpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0
PihwZXJjZW50KSAvIDEwMDsKK30KKworZmxvYXQgR2V0TWluUGFja2V0TG9zc1JhdGUoKSB7Cisg
IGNvbnN0ZXhwciBjaGFyIGtQYWNrZXRMb3NzRmllbGRUcmlhbFtdID0gIldlYlJUQy1BdWRpby1P
cHVzTWluUGFja2V0TG9zc1JhdGUiOworICBjb25zdCBib29sIHVzZV9vcHVzX21pbl9wYWNrZXRf
bG9zc19yYXRlID0KKyAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrUGFja2V0
TG9zc0ZpZWxkVHJpYWwpOworICBpZiAodXNlX29wdXNfbWluX3BhY2tldF9sb3NzX3JhdGUpIHsK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyBmaWVsZF90cmlhbF9zdHJpbmcgPQorICAgICAgICB3ZWJy
dGM6OmZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoa1BhY2tldExvc3NGaWVsZFRyaWFsKTsKKyAg
ICBjb25zdGV4cHIgaW50IGtEZWZhdWx0TWluUGFja2V0TG9zc1JhdGUgPSAxOworICAgIGludCB2
YWx1ZSA9IGtEZWZhdWx0TWluUGFja2V0TG9zc1JhdGU7CisgICAgaWYgKHNzY2FuZihmaWVsZF90
cmlhbF9zdHJpbmcuY19zdHIoKSwgIkVuYWJsZWQtJWQiLCAmdmFsdWUpID09IDEgJiYKKyAgICAg
ICAgIUlzVmFsaWRQYWNrZXRMb3NzUmF0ZSh2YWx1ZSkpIHsKKyAgICAgIFJUQ19MT0coTFNfV0FS
TklORykgPDwgIkludmFsaWQgcGFyYW1ldGVyIGZvciAiIDw8IGtQYWNrZXRMb3NzRmllbGRUcmlh
bAorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCB1c2luZyBkZWZhdWx0IHZhbHVlOiAi
CisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGtEZWZhdWx0TWluUGFja2V0TG9zc1JhdGU7
CisgICAgICB2YWx1ZSA9IGtEZWZhdWx0TWluUGFja2V0TG9zc1JhdGU7CisgICAgfQorICAgIHJl
dHVybiBUb0ZyYWN0aW9uKHZhbHVlKTsKKyAgfQorICByZXR1cm4gMC4wOworfQorCitzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok5ld1BhY2tldExvc3NSYXRlT3B0aW1pemVy
PgorR2V0TmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXIoKSB7CisgIGNvbnN0ZXhwciBjaGFyIGtQ
YWNrZXRMb3NzT3B0aW1pemF0aW9uTmFtZVtdID0KKyAgICAgICJXZWJSVEMtQXVkaW8tTmV3T3B1
c1BhY2tldExvc3NSYXRlT3B0aW1pemF0aW9uIjsKKyAgY29uc3QgYm9vbCB1c2VfbmV3X3BhY2tl
dF9sb3NzX29wdGltaXphdGlvbiA9CisgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoa1BhY2tldExvc3NPcHRpbWl6YXRpb25OYW1lKTsKKyAgaWYgKHVzZV9uZXdfcGFja2V0X2xv
c3Nfb3B0aW1pemF0aW9uKSB7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZmllbGRfdHJpYWxfc3Ry
aW5nID0KKyAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtQYWNrZXRM
b3NzT3B0aW1pemF0aW9uTmFtZSk7CisgICAgaW50IG1pbl9yYXRlOworICAgIGludCBtYXhfcmF0
ZTsKKyAgICBmbG9hdCBzbG9wZTsKKyAgICBpZiAoc3NjYW5mKGZpZWxkX3RyaWFsX3N0cmluZy5j
X3N0cigpLCAiRW5hYmxlZC0lZC0lZC0lZiIsICZtaW5fcmF0ZSwKKyAgICAgICAgICAgICAgICZt
YXhfcmF0ZSwgJnNsb3BlKSA9PSAzICYmCisgICAgICAgIElzVmFsaWRQYWNrZXRMb3NzUmF0ZSht
aW5fcmF0ZSkgJiYgSXNWYWxpZFBhY2tldExvc3NSYXRlKG1heF9yYXRlKSkgeworICAgICAgcmV0
dXJuIGFic2w6Om1ha2VfdW5pcXVlPAorICAgICAgICAgIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpO
ZXdQYWNrZXRMb3NzUmF0ZU9wdGltaXplcj4oCisgICAgICAgICAgVG9GcmFjdGlvbihtaW5fcmF0
ZSksIFRvRnJhY3Rpb24obWF4X3JhdGUpLCBzbG9wZSk7CisgICAgfQorICAgIFJUQ19MT0coTFNf
V0FSTklORykgPDwgIkludmFsaWQgcGFyYW1ldGVycyBmb3IgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgPDwga1BhY2tldExvc3NPcHRpbWl6YXRpb25OYW1lCisgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAiLCB1c2luZyBkZWZhdWx0IHZhbHVlcy4iOworICAgIHJldHVybiBhYnNsOjptYWtl
X3VuaXF1ZTwKKyAgICAgICAgQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok5ld1BhY2tldExvc3NSYXRl
T3B0aW1pemVyPigpOworICB9CisgIHJldHVybiBudWxscHRyOworfQorCiB9ICAvLyBuYW1lc3Bh
Y2UKIAorQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok5ld1BhY2tldExvc3NSYXRlT3B0aW1pemVyOjpO
ZXdQYWNrZXRMb3NzUmF0ZU9wdGltaXplcigKKyAgICBmbG9hdCBtaW5fcGFja2V0X2xvc3NfcmF0
ZSwKKyAgICBmbG9hdCBtYXhfcGFja2V0X2xvc3NfcmF0ZSwKKyAgICBmbG9hdCBzbG9wZSkKKyAg
ICA6IG1pbl9wYWNrZXRfbG9zc19yYXRlXyhtaW5fcGFja2V0X2xvc3NfcmF0ZSksCisgICAgICBt
YXhfcGFja2V0X2xvc3NfcmF0ZV8obWF4X3BhY2tldF9sb3NzX3JhdGUpLAorICAgICAgc2xvcGVf
KHNsb3BlKSB7fQorCitmbG9hdCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6TmV3UGFja2V0TG9zc1Jh
dGVPcHRpbWl6ZXI6Ok9wdGltaXplUGFja2V0TG9zc1JhdGUoCisgICAgZmxvYXQgcGFja2V0X2xv
c3NfcmF0ZSkgY29uc3QgeworICBwYWNrZXRfbG9zc19yYXRlID0gc2xvcGVfICogcGFja2V0X2xv
c3NfcmF0ZTsKKyAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KHBhY2tldF9sb3NzX3JhdGUsIG1p
bl9wYWNrZXRfbG9zc19yYXRlXyksCisgICAgICAgICAgICAgICAgICBtYXhfcGFja2V0X2xvc3Nf
cmF0ZV8pOworfQorCiB2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpBcHBlbmRTdXBwb3J0ZWRF
bmNvZGVycygKICAgICBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjU3BlYz4qIHNwZWNzKSB7CiAgIGNv
bnN0IFNkcEF1ZGlvRm9ybWF0IGZtdCA9IHsKQEAgLTI0NCw3ICszMTcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9FbmNvZGVyPiBBdWRpb0VuY29kZXJPcHVzSW1wbDo6TWFrZUF1ZGlvRW5jb2Rl
cigKIAogYWJzbDo6b3B0aW9uYWw8QXVkaW9Db2RlY0luZm8+IEF1ZGlvRW5jb2Rlck9wdXNJbXBs
OjpRdWVyeUF1ZGlvRW5jb2RlcigKICAgICBjb25zdCBTZHBBdWRpb0Zvcm1hdCYgZm9ybWF0KSB7
Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgR2V0UGF5bG9hZE5hbWUo
KSkgPT0gMCAmJgorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgR2V0
UGF5bG9hZE5hbWUoKSkgJiYKICAgICAgIGZvcm1hdC5jbG9ja3JhdGVfaHogPT0gNDgwMDAgJiYg
Zm9ybWF0Lm51bV9jaGFubmVscyA9PSAyKSB7CiAgICAgY29uc3Qgc2l6ZV90IG51bV9jaGFubmVs
cyA9IEdldENoYW5uZWxDb3VudChmb3JtYXQpOwogICAgIGNvbnN0IGludCBiaXRyYXRlID0KQEAg
LTI3Niw3ICszNDksNyBAQCBBdWRpb0VuY29kZXJPcHVzQ29uZmlnIEF1ZGlvRW5jb2Rlck9wdXNJ
bXBsOjpDcmVhdGVDb25maWcoCiAKIGFic2w6Om9wdGlvbmFsPEF1ZGlvRW5jb2Rlck9wdXNDb25m
aWc+IEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpTZHBUb0NvbmZpZygKICAgICBjb25zdCBTZHBBdWRp
b0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIo
KSwgIm9wdXMiKSAhPSAwIHx8CisgIGlmICghYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQu
bmFtZSwgIm9wdXMiKSB8fAogICAgICAgZm9ybWF0LmNsb2NrcmF0ZV9oeiAhPSA0ODAwMCB8fCBm
b3JtYXQubnVtX2NoYW5uZWxzICE9IDIpIHsKICAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKICAg
fQpAQCAtMzk4LDEwICs0NzEsMTQgQEAgQXVkaW9FbmNvZGVyT3B1c0ltcGw6OkF1ZGlvRW5jb2Rl
ck9wdXNJbXBsKAogICAgIDogcGF5bG9hZF90eXBlXyhwYXlsb2FkX3R5cGUpLAogICAgICAgc2Vu
ZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXygKICAgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFs
OjpJc0VuYWJsZWQoIldlYlJUQy1TZW5kU2lkZUJ3ZS1XaXRoT3ZlcmhlYWQiKSksCisgICAgICB1
c2VfbGlua19jYXBhY2l0eV9mb3JfYWRhcHRhdGlvbl8od2VicnRjOjpmaWVsZF90cmlhbDo6SXNF
bmFibGVkKAorICAgICAgICAgICJXZWJSVEMtQXVkaW8tTGlua0NhcGFjaXR5QWRhcHRhdGlvbiIp
KSwKICAgICAgIGFkanVzdF9iYW5kd2lkdGhfKAogICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJp
YWw6OklzRW5hYmxlZCgiV2ViUlRDLUFkanVzdE9wdXNCYW5kd2lkdGgiKSksCiAgICAgICBiaXRy
YXRlX2NoYW5nZWRfKHRydWUpLAogICAgICAgcGFja2V0X2xvc3NfcmF0ZV8oMC4wKSwKKyAgICAg
IG1pbl9wYWNrZXRfbG9zc19yYXRlXyhHZXRNaW5QYWNrZXRMb3NzUmF0ZSgpKSwKKyAgICAgIG5l
d19wYWNrZXRfbG9zc19vcHRpbWl6ZXJfKEdldE5ld1BhY2tldExvc3NSYXRlT3B0aW1pemVyKCkp
LAogICAgICAgaW5zdF8obnVsbHB0ciksCiAgICAgICBwYWNrZXRfbG9zc19mcmFjdGlvbl9zbW9v
dGhlcl8obmV3IFBhY2tldExvc3NGcmFjdGlvblNtb290aGVyKCkpLAogICAgICAgYXVkaW9fbmV0
d29ya19hZGFwdG9yX2NyZWF0b3JfKGF1ZGlvX25ldHdvcmtfYWRhcHRvcl9jcmVhdG9yKSwKQEAg
LTQxNCw2ICs0OTEsNyBAQCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6QXVkaW9FbmNvZGVyT3B1c0lt
cGwoCiAgIFJUQ19DSEVDSyhjb25maWcucGF5bG9hZF90eXBlID09IC0xIHx8IGNvbmZpZy5wYXls
b2FkX3R5cGUgPT0gcGF5bG9hZF90eXBlKTsKIAogICBSVENfQ0hFQ0soUmVjcmVhdGVFbmNvZGVy
SW5zdGFuY2UoY29uZmlnKSk7CisgIFNldFByb2plY3RlZFBhY2tldExvc3NSYXRlKHBhY2tldF9s
b3NzX3JhdGVfKTsKIH0KIAogQXVkaW9FbmNvZGVyT3B1c0ltcGw6OkF1ZGlvRW5jb2Rlck9wdXNJ
bXBsKGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCkKQEAgLTUyOSw3ICs2MDcsOCBAQCB2b2lk
IEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpPblJlY2VpdmVkVXBsaW5rUmVjb3ZlcmFibGVQYWNrZXRM
b3NzRnJhY3Rpb24oCiAKIHZvaWQgQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok9uUmVjZWl2ZWRVcGxp
bmtCYW5kd2lkdGgoCiAgICAgaW50IHRhcmdldF9hdWRpb19iaXRyYXRlX2JwcywKLSAgICBhYnNs
OjpvcHRpb25hbDxpbnQ2NF90PiBid2VfcGVyaW9kX21zKSB7CisgICAgYWJzbDo6b3B0aW9uYWw8
aW50NjRfdD4gYndlX3BlcmlvZF9tcywKKyAgICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBsaW5r
X2NhcGFjaXR5X2FsbG9jYXRpb25fYnBzKSB7CiAgIGlmIChhdWRpb19uZXR3b3JrX2FkYXB0b3Jf
KSB7CiAgICAgYXVkaW9fbmV0d29ya19hZGFwdG9yXy0+U2V0VGFyZ2V0QXVkaW9CaXRyYXRlKHRh
cmdldF9hdWRpb19iaXRyYXRlX2Jwcyk7CiAgICAgLy8gV2UgZ2l2ZSBzbW9vdGhlZCBiaXRyYXRl
IGFsbG9jYXRpb24gdG8gYXVkaW8gbmV0d29yayBhZGFwdG9yIGFzCkBAIC01NDcsNiArNjI2LDkg
QEAgdm9pZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6T25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aCgK
ICAgICAgIGJpdHJhdGVfc21vb3RoZXJfLT5TZXRUaW1lQ29uc3RhbnRNcygqYndlX3BlcmlvZF9t
cyAqIDQpOwogICAgIGJpdHJhdGVfc21vb3RoZXJfLT5BZGRTYW1wbGUodGFyZ2V0X2F1ZGlvX2Jp
dHJhdGVfYnBzKTsKIAorICAgIGlmIChsaW5rX2NhcGFjaXR5X2FsbG9jYXRpb25fYnBzKQorICAg
ICAgbGlua19jYXBhY2l0eV9hbGxvY2F0aW9uX2Jwc18gPSBsaW5rX2NhcGFjaXR5X2FsbG9jYXRp
b25fYnBzOworCiAgICAgQXBwbHlBdWRpb05ldHdvcmtBZGFwdG9yKCk7CiAgIH0gZWxzZSBpZiAo
c2VuZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXykgewogICAgIGlmICghb3ZlcmhlYWRfYnl0ZXNf
cGVyX3BhY2tldF8pIHsKQEAgLTU2NSw2ICs2NDcsMTggQEAgdm9pZCBBdWRpb0VuY29kZXJPcHVz
SW1wbDo6T25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aCgKICAgICBTZXRUYXJnZXRCaXRyYXRlKHRh
cmdldF9hdWRpb19iaXRyYXRlX2Jwcyk7CiAgIH0KIH0KK3ZvaWQgQXVkaW9FbmNvZGVyT3B1c0lt
cGw6Ok9uUmVjZWl2ZWRVcGxpbmtCYW5kd2lkdGgoCisgICAgaW50IHRhcmdldF9hdWRpb19iaXRy
YXRlX2JwcywKKyAgICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBid2VfcGVyaW9kX21zKSB7Cisg
IE9uUmVjZWl2ZWRVcGxpbmtCYW5kd2lkdGgodGFyZ2V0X2F1ZGlvX2JpdHJhdGVfYnBzLCBid2Vf
cGVyaW9kX21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om51bGxvcHQpOwor
fQorCit2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpPblJlY2VpdmVkVXBsaW5rQWxsb2NhdGlv
bigKKyAgICBCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpIHsKKyAgT25SZWNlaXZlZFVw
bGlua0JhbmR3aWR0aCh1cGRhdGUudGFyZ2V0X2JpdHJhdGUuYnBzKCksIHVwZGF0ZS5id2VfcGVy
aW9kLm1zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlLmxpbmtfY2FwYWNp
dHkuYnBzKCkpOworfQogCiB2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpPblJlY2VpdmVkUnR0
KGludCBydHRfbXMpIHsKICAgaWYgKCFhdWRpb19uZXR3b3JrX2FkYXB0b3JfKQpAQCAtNzM4LDkg
KzgzMiwxNCBAQCB2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpTZXROdW1DaGFubmVsc1RvRW5j
b2RlKAogfQogCiB2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpTZXRQcm9qZWN0ZWRQYWNrZXRM
b3NzUmF0ZShmbG9hdCBmcmFjdGlvbikgewotICBmbG9hdCBvcHRfbG9zc19yYXRlID0gT3B0aW1p
emVQYWNrZXRMb3NzUmF0ZShmcmFjdGlvbiwgcGFja2V0X2xvc3NfcmF0ZV8pOwotICBpZiAocGFj
a2V0X2xvc3NfcmF0ZV8gIT0gb3B0X2xvc3NfcmF0ZSkgewotICAgIHBhY2tldF9sb3NzX3JhdGVf
ID0gb3B0X2xvc3NfcmF0ZTsKKyAgaWYgKG5ld19wYWNrZXRfbG9zc19vcHRpbWl6ZXJfKSB7Cisg
ICAgZnJhY3Rpb24gPSBuZXdfcGFja2V0X2xvc3Nfb3B0aW1pemVyXy0+T3B0aW1pemVQYWNrZXRM
b3NzUmF0ZShmcmFjdGlvbik7CisgIH0gZWxzZSB7CisgICAgZnJhY3Rpb24gPSBPcHRpbWl6ZVBh
Y2tldExvc3NSYXRlKGZyYWN0aW9uLCBwYWNrZXRfbG9zc19yYXRlXyk7CisgICAgZnJhY3Rpb24g
PSBzdGQ6Om1heChmcmFjdGlvbiwgbWluX3BhY2tldF9sb3NzX3JhdGVfKTsKKyAgfQorICBpZiAo
cGFja2V0X2xvc3NfcmF0ZV8gIT0gZnJhY3Rpb24pIHsKKyAgICBwYWNrZXRfbG9zc19yYXRlXyA9
IGZyYWN0aW9uOwogICAgIFJUQ19DSEVDS19FUSgKICAgICAgICAgMCwgV2ViUnRjT3B1c19TZXRQ
YWNrZXRMb3NzUmF0ZSgKICAgICAgICAgICAgICAgIGluc3RfLCBzdGF0aWNfY2FzdDxpbnQzMl90
PihwYWNrZXRfbG9zc19yYXRlXyAqIDEwMCArIC41KSkpOwpAQCAtNzk0LDE0ICs4OTMsMjAgQEAg
QXVkaW9FbmNvZGVyT3B1c0ltcGw6OkRlZmF1bHRBdWRpb05ldHdvcmtBZGFwdG9yQ3JlYXRvcigK
IAogdm9pZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6TWF5YmVVcGRhdGVVcGxpbmtCYW5kd2lkdGgo
KSB7CiAgIGlmIChhdWRpb19uZXR3b3JrX2FkYXB0b3JfKSB7Ci0gICAgaW50NjRfdCBub3dfbXMg
PSBydGM6OlRpbWVNaWxsaXMoKTsKLSAgICBpZiAoIWJpdHJhdGVfc21vb3RoZXJfbGFzdF91cGRh
dGVfdGltZV8gfHwKLSAgICAgICAgbm93X21zIC0gKmJpdHJhdGVfc21vb3RoZXJfbGFzdF91cGRh
dGVfdGltZV8gPj0KLSAgICAgICAgICAgIGNvbmZpZ18udXBsaW5rX2JhbmR3aWR0aF91cGRhdGVf
aW50ZXJ2YWxfbXMpIHsKLSAgICAgIGFic2w6Om9wdGlvbmFsPGZsb2F0PiBzbW9vdGhlZF9iaXRy
YXRlID0gYml0cmF0ZV9zbW9vdGhlcl8tPkdldEF2ZXJhZ2UoKTsKLSAgICAgIGlmIChzbW9vdGhl
ZF9iaXRyYXRlKQotICAgICAgICBhdWRpb19uZXR3b3JrX2FkYXB0b3JfLT5TZXRVcGxpbmtCYW5k
d2lkdGgoKnNtb290aGVkX2JpdHJhdGUpOwotICAgICAgYml0cmF0ZV9zbW9vdGhlcl9sYXN0X3Vw
ZGF0ZV90aW1lXyA9IG5vd19tczsKKyAgICBpZiAodXNlX2xpbmtfY2FwYWNpdHlfZm9yX2FkYXB0
YXRpb25fICYmIGxpbmtfY2FwYWNpdHlfYWxsb2NhdGlvbl9icHNfKSB7CisgICAgICBhdWRpb19u
ZXR3b3JrX2FkYXB0b3JfLT5TZXRVcGxpbmtCYW5kd2lkdGgoCisgICAgICAgICAgKmxpbmtfY2Fw
YWNpdHlfYWxsb2NhdGlvbl9icHNfKTsKKyAgICB9IGVsc2UgeworICAgICAgaW50NjRfdCBub3df
bXMgPSBydGM6OlRpbWVNaWxsaXMoKTsKKyAgICAgIGlmICghYml0cmF0ZV9zbW9vdGhlcl9sYXN0
X3VwZGF0ZV90aW1lXyB8fAorICAgICAgICAgIG5vd19tcyAtICpiaXRyYXRlX3Ntb290aGVyX2xh
c3RfdXBkYXRlX3RpbWVfID49CisgICAgICAgICAgICAgIGNvbmZpZ18udXBsaW5rX2JhbmR3aWR0
aF91cGRhdGVfaW50ZXJ2YWxfbXMpIHsKKyAgICAgICAgYWJzbDo6b3B0aW9uYWw8ZmxvYXQ+IHNt
b290aGVkX2JpdHJhdGUgPQorICAgICAgICAgICAgYml0cmF0ZV9zbW9vdGhlcl8tPkdldEF2ZXJh
Z2UoKTsKKyAgICAgICAgaWYgKHNtb290aGVkX2JpdHJhdGUpCisgICAgICAgICAgYXVkaW9fbmV0
d29ya19hZGFwdG9yXy0+U2V0VXBsaW5rQmFuZHdpZHRoKCpzbW9vdGhlZF9iaXRyYXRlKTsKKyAg
ICAgICAgYml0cmF0ZV9zbW9vdGhlcl9sYXN0X3VwZGF0ZV90aW1lXyA9IG5vd19tczsKKyAgICAg
IH0KICAgICB9CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2Vu
Y29kZXJfb3B1cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmgKaW5k
ZXggZWE0YjI2NTBiYmJlNzM2NDZhMzliMWQ3OGRlNWQ2MmFhNWUyOWVjNC4uMTUwNDIzZmQzZWU3
YWE3ZWM0YTczY2Y0ZWViYjg4ODllMTc4MTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29w
dXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZW5j
b2Rlcl9vcHVzLmgKQEAgLTM0LDYgKzM0LDI2IEBAIHN0cnVjdCBDb2RlY0luc3Q7CiAKIGNsYXNz
IEF1ZGlvRW5jb2Rlck9wdXNJbXBsIGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7CiAgcHVi
bGljOgorICBjbGFzcyBOZXdQYWNrZXRMb3NzUmF0ZU9wdGltaXplciB7CisgICBwdWJsaWM6Cisg
ICAgTmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXIoZmxvYXQgbWluX3BhY2tldF9sb3NzX3JhdGUg
PSAwLjAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG1heF9wYWNrZXRf
bG9zc19yYXRlID0gMC4yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHNs
b3BlID0gMS4wKTsKKworICAgIGZsb2F0IE9wdGltaXplUGFja2V0TG9zc1JhdGUoZmxvYXQgcGFj
a2V0X2xvc3NfcmF0ZSkgY29uc3Q7CisKKyAgICAvLyBHZXR0ZXJzIGZvciB0ZXN0aW5nLgorICAg
IGZsb2F0IG1pbl9wYWNrZXRfbG9zc19yYXRlKCkgY29uc3QgeyByZXR1cm4gbWluX3BhY2tldF9s
b3NzX3JhdGVfOyB9OworICAgIGZsb2F0IG1heF9wYWNrZXRfbG9zc19yYXRlKCkgY29uc3QgeyBy
ZXR1cm4gbWF4X3BhY2tldF9sb3NzX3JhdGVfOyB9OworICAgIGZsb2F0IHNsb3BlKCkgY29uc3Qg
eyByZXR1cm4gc2xvcGVfOyB9OworCisgICBwcml2YXRlOgorICAgIGNvbnN0IGZsb2F0IG1pbl9w
YWNrZXRfbG9zc19yYXRlXzsKKyAgICBjb25zdCBmbG9hdCBtYXhfcGFja2V0X2xvc3NfcmF0ZV87
CisgICAgY29uc3QgZmxvYXQgc2xvcGVfOworICAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oTmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXIpOworICB9OworCiAgIHN0YXRpYyBBdWRpb0Vu
Y29kZXJPcHVzQ29uZmlnIENyZWF0ZUNvbmZpZyhjb25zdCBDb2RlY0luc3QmIGNvZGVjX2luc3Qp
OwogCiAgIC8vIFJldHVybnMgZW1wdHkgaWYgdGhlIGN1cnJlbnQgYml0cmF0ZSBmYWxscyB3aXRo
aW4gdGhlIGh5c3RlcmVzaXMgd2luZG93LApAQCAtOTksNiArMTE5LDcgQEAgY2xhc3MgQXVkaW9F
bmNvZGVyT3B1c0ltcGwgZmluYWwgOiBwdWJsaWMgQXVkaW9FbmNvZGVyIHsKICAgdm9pZCBPblJl
Y2VpdmVkVXBsaW5rQmFuZHdpZHRoKAogICAgICAgaW50IHRhcmdldF9hdWRpb19iaXRyYXRlX2Jw
cywKICAgICAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGJ3ZV9wZXJpb2RfbXMpIG92ZXJyaWRl
OworICB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtBbGxvY2F0aW9uKEJpdHJhdGVBbGxvY2F0aW9uVXBk
YXRlIHVwZGF0ZSkgb3ZlcnJpZGU7CiAgIHZvaWQgT25SZWNlaXZlZFJ0dChpbnQgcnR0X21zKSBv
dmVycmlkZTsKICAgdm9pZCBPblJlY2VpdmVkT3ZlcmhlYWQoc2l6ZV90IG92ZXJoZWFkX2J5dGVz
X3Blcl9wYWNrZXQpIG92ZXJyaWRlOwogICB2b2lkIFNldFJlY2VpdmVyRnJhbWVMZW5ndGhSYW5n
ZShpbnQgbWluX2ZyYW1lX2xlbmd0aF9tcywKQEAgLTExMCw2ICsxMzEsOSBAQCBjbGFzcyBBdWRp
b0VuY29kZXJPcHVzSW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0VuY29kZXIgewogCiAgIC8vIEdl
dHRlcnMgZm9yIHRlc3RpbmcuCiAgIGZsb2F0IHBhY2tldF9sb3NzX3JhdGUoKSBjb25zdCB7IHJl
dHVybiBwYWNrZXRfbG9zc19yYXRlXzsgfQorICBOZXdQYWNrZXRMb3NzUmF0ZU9wdGltaXplciog
bmV3X3BhY2tldF9sb3NzX29wdGltaXplcigpIGNvbnN0IHsKKyAgICByZXR1cm4gbmV3X3BhY2tl
dF9sb3NzX29wdGltaXplcl8uZ2V0KCk7CisgIH0KICAgQXVkaW9FbmNvZGVyT3B1c0NvbmZpZzo6
QXBwbGljYXRpb25Nb2RlIGFwcGxpY2F0aW9uKCkgY29uc3QgewogICAgIHJldHVybiBjb25maWdf
LmFwcGxpY2F0aW9uOwogICB9CkBAIC0xNDEsNiArMTY1LDExIEBAIGNsYXNzIEF1ZGlvRW5jb2Rl
ck9wdXNJbXBsIGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7CiAgIHZvaWQgU2V0TnVtQ2hh
bm5lbHNUb0VuY29kZShzaXplX3QgbnVtX2NoYW5uZWxzX3RvX2VuY29kZSk7CiAgIHZvaWQgU2V0
UHJvamVjdGVkUGFja2V0TG9zc1JhdGUoZmxvYXQgZnJhY3Rpb24pOwogCisgIHZvaWQgT25SZWNl
aXZlZFVwbGlua0JhbmR3aWR0aCgKKyAgICAgIGludCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMs
CisgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBid2VfcGVyaW9kX21zLAorICAgICAgYWJz
bDo6b3B0aW9uYWw8aW50NjRfdD4gbGlua19jYXBhY2l0eV9hbGxvY2F0aW9uKTsKKwogICAvLyBU
T0RPKG1pbnl1ZSk6IHJlbW92ZSAib3ZlcnJpZGUiIHdoZW4gd2UgY2FuIGRlcHJlY2F0ZQogICAv
LyB8QXVkaW9FbmNvZGVyOjpTZXRUYXJnZXRCaXRyYXRlfC4KICAgdm9pZCBTZXRUYXJnZXRCaXRy
YXRlKGludCB0YXJnZXRfYnBzKSBvdmVycmlkZTsKQEAgLTE1NSw5ICsxODQsMTIgQEAgY2xhc3Mg
QXVkaW9FbmNvZGVyT3B1c0ltcGwgZmluYWwgOiBwdWJsaWMgQXVkaW9FbmNvZGVyIHsKICAgQXVk
aW9FbmNvZGVyT3B1c0NvbmZpZyBjb25maWdfOwogICBjb25zdCBpbnQgcGF5bG9hZF90eXBlXzsK
ICAgY29uc3QgYm9vbCBzZW5kX3NpZGVfYndlX3dpdGhfb3ZlcmhlYWRfOworICBjb25zdCBib29s
IHVzZV9saW5rX2NhcGFjaXR5X2Zvcl9hZGFwdGF0aW9uXzsKICAgY29uc3QgYm9vbCBhZGp1c3Rf
YmFuZHdpZHRoXzsKICAgYm9vbCBiaXRyYXRlX2NoYW5nZWRfOwogICBmbG9hdCBwYWNrZXRfbG9z
c19yYXRlXzsKKyAgY29uc3QgZmxvYXQgbWluX3BhY2tldF9sb3NzX3JhdGVfOworICBjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8TmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXI+IG5ld19wYWNrZXRfbG9z
c19vcHRpbWl6ZXJfOwogICBzdGQ6OnZlY3RvcjxpbnQxNl90PiBpbnB1dF9idWZmZXJfOwogICBP
cHVzRW5jSW5zdCogaW5zdF87CiAgIHVpbnQzMl90IGZpcnN0X3RpbWVzdGFtcF9pbl9idWZmZXJf
OwpAQCAtMTcwLDYgKzIwMiw3IEBAIGNsYXNzIEF1ZGlvRW5jb2Rlck9wdXNJbXBsIGZpbmFsIDog
cHVibGljIEF1ZGlvRW5jb2RlciB7CiAgIGFic2w6Om9wdGlvbmFsPHNpemVfdD4gb3ZlcmhlYWRf
Ynl0ZXNfcGVyX3BhY2tldF87CiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxTbW9vdGhpbmdGaWx0
ZXI+IGJpdHJhdGVfc21vb3RoZXJfOwogICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBiaXRyYXRl
X3Ntb290aGVyX2xhc3RfdXBkYXRlX3RpbWVfOworICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBs
aW5rX2NhcGFjaXR5X2FsbG9jYXRpb25fYnBzXzsKICAgaW50IGNvbnNlY3V0aXZlX2R0eF9mcmFt
ZXNfOwogCiAgIGZyaWVuZCBzdHJ1Y3QgQXVkaW9FbmNvZGVyT3B1czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1c191bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1c191bml0dGVzdC5jYwppbmRleCA3YTZkNWZkYTRi
YmMxNjE0MWFiODRhOTM1Y2Q3MzM0ZWQ3OWI3N2RlLi5kNWMyYzg0ZjFmZjcxM2ExYmNiNjE3MDFi
MTU1ODYyNmE2YjIxNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19lbmNv
ZGVyX29wdXNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rl
cl9vcHVzX3VuaXR0ZXN0LmNjCkBAIC0yNzIsNiArMjcyLDUxIEBAIFRFU1QoQXVkaW9FbmNvZGVy
T3B1c1Rlc3QsIFBhY2tldExvc3NSYXRlT3B0aW1pemVkKSB7CiAgIC8vIGNsYW5nLWZvcm1hdCBv
bgogfQogCitURVNUKEF1ZGlvRW5jb2Rlck9wdXNUZXN0LCBQYWNrZXRMb3NzUmF0ZUxvd2VyQm91
bmRlZCkgeworICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlhbHMo
CisgICAgICAiV2ViUlRDLUF1ZGlvLU9wdXNNaW5QYWNrZXRMb3NzUmF0ZS9FbmFibGVkLTUvIik7
CisgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgIGF1dG8gSSA9IFtdKGZsb2F0IGEs
IGZsb2F0IGIpIHsgcmV0dXJuIEludGVydmFsU3RlcHMoYSwgYiwgMTApOyB9OworICBjb25zdGV4
cHIgZmxvYXQgZXBzID0gMWUtOGY7CisKKyAgLy8gY2xhbmctZm9ybWF0IG9mZgorICBUZXN0U2V0
UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCBJKDAuMDBmICAgICAgLCAwLjAxZiAtIGVwcyks
IDAuMDVmKTsKKyAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgSSgwLjAxZiAr
IGVwcywgMC4wNmYgLSBlcHMpLCAwLjA1Zik7CisgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0
ZXMuZ2V0KCksIEkoMC4wNmYgKyBlcHMsIDAuMTFmIC0gZXBzKSwgMC4wNWYpOworICBUZXN0U2V0
UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCBJKDAuMTFmICsgZXBzLCAwLjIyZiAtIGVwcyks
IDAuMTBmKTsKKyAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgSSgwLjIyZiAr
IGVwcywgMS4wMGYgICAgICApLCAwLjIwZik7CisKKyAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0
YXRlcy5nZXQoKSwgSSgxLjAwZiAgICAgICwgMC4xOGYgKyBlcHMpLCAwLjIwZik7CisgIFRlc3RT
ZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIEkoMC4xOGYgLSBlcHMsIDAuMDlmICsgZXBz
KSwgMC4xMGYpOworICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCBJKDAuMDlm
IC0gZXBzLCAwLjA0ZiArIGVwcyksIDAuMDVmKTsKKyAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0
YXRlcy5nZXQoKSwgSSgwLjA0ZiAtIGVwcywgMC4wMWYgKyBlcHMpLCAwLjA1Zik7CisgIFRlc3RT
ZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIEkoMC4wMWYgLSBlcHMsIDAuMDBmICAgICAg
KSwgMC4wNWYpOworICAvLyBjbGFuZy1mb3JtYXQgb24KK30KKworVEVTVChBdWRpb0VuY29kZXJP
cHVzVGVzdCwgTmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6YXRpb24pIHsKKyAgeworICAgIHRlc3Q6
OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscygKKyAgICAgICAgIldlYlJU
Qy1BdWRpby1OZXdPcHVzUGFja2V0TG9zc1JhdGVPcHRpbWl6YXRpb24vRW5hYmxlZC01LTE1LTAu
NS8iKTsKKyAgICBhdXRvIHN0YXRlcyA9IENyZWF0ZUNvZGVjKDEpOworCisgICAgVGVzdFNldFBh
Y2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgezAuMDBmfSwgMC4wNWYpOworICAgIFRlc3RTZXRQ
YWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIHswLjEyZn0sIDAuMDZmKTsKKyAgICBUZXN0U2V0
UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCB7MC4yMmZ9LCAwLjExZik7CisgICAgVGVzdFNl
dFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgezAuNTBmfSwgMC4xNWYpOworICB9CisgIHsK
KyAgICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlhbHMoCisgICAg
ICAgICJXZWJSVEMtQXVkaW8tTmV3T3B1c1BhY2tldExvc3NSYXRlT3B0aW1pemF0aW9uL0VuYWJs
ZWQvIik7CisgICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVDb2RlYygxKTsKKworICAgIFRlc3RTZXRQ
YWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIHswLjAwZn0sIDAuMDFmKTsKKyAgICBUZXN0U2V0
UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCB7MC4xMmZ9LCAwLjEyZik7CisgICAgVGVzdFNl
dFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgezAuMjJmfSwgMC4yMGYpOworICAgIFRlc3RT
ZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIHswLjUwZn0sIDAuMjBmKTsKKyAgfQorfQor
CiBURVNUKEF1ZGlvRW5jb2Rlck9wdXNUZXN0LCBTZXRSZWNlaXZlckZyYW1lTGVuZ3RoUmFuZ2Up
IHsKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVDb2RlYygyKTsKICAgLy8gQmVmb3JlIGNhbGxpbmcg
dG8gfFNldFJlY2VpdmVyRnJhbWVMZW5ndGhSYW5nZXwsCkBAIC00NDYsNiArNDkxLDU3IEBAIFRF
U1QoQXVkaW9FbmNvZGVyT3B1c1Rlc3QsIEJpdHJhdGVCb3VuZGVkKSB7CiAgIEVYUEVDVF9FUShr
TWF4Qml0cmF0ZUJwcywgc3RhdGVzLT5lbmNvZGVyLT5HZXRUYXJnZXRCaXRyYXRlKCkpOwogfQog
CitURVNUKEF1ZGlvRW5jb2Rlck9wdXNUZXN0LCBNaW5QYWNrZXRMb3NzUmF0ZSkgeworICBjb25z
dGV4cHIgZmxvYXQga0RlZmF1bHRNaW5QYWNrZXRMb3NzUmF0ZSA9IDAuMDE7CisgIHsKKyAgICB0
ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlhbHMoCisgICAgICAgICJX
ZWJSVEMtQXVkaW8tT3B1c01pblBhY2tldExvc3NSYXRlL0VuYWJsZWQvIik7CisgICAgYXV0byBz
dGF0ZXMgPSBDcmVhdGVDb2RlYygxKTsKKyAgICBFWFBFQ1RfRVEoa0RlZmF1bHRNaW5QYWNrZXRM
b3NzUmF0ZSwgc3RhdGVzLT5lbmNvZGVyLT5wYWNrZXRfbG9zc19yYXRlKCkpOworICB9CisgIHsK
KyAgICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlhbHMoCisgICAg
ICAgICJXZWJSVEMtQXVkaW8tT3B1c01pblBhY2tldExvc3NSYXRlL0VuYWJsZWQtMjAwLyIpOwor
ICAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgICAgRVhQRUNUX0VRKGtEZWZhdWx0
TWluUGFja2V0TG9zc1JhdGUsIHN0YXRlcy0+ZW5jb2Rlci0+cGFja2V0X2xvc3NfcmF0ZSgpKTsK
KyAgfQorICB7CisgICAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJp
YWxzKAorICAgICAgICAiV2ViUlRDLUF1ZGlvLU9wdXNNaW5QYWNrZXRMb3NzUmF0ZS9FbmFibGVk
LTUwLyIpOworICAgIGNvbnN0ZXhwciBmbG9hdCBrTWluUGFja2V0TG9zc1JhdGUgPSAwLjU7Cisg
ICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVDb2RlYygxKTsKKyAgICBFWFBFQ1RfRVEoa01pblBhY2tl
dExvc3NSYXRlLCBzdGF0ZXMtPmVuY29kZXItPnBhY2tldF9sb3NzX3JhdGUoKSk7CisgIH0KK30K
KworVEVTVChBdWRpb0VuY29kZXJPcHVzVGVzdCwgTmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXIp
IHsKKyAgeworICAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgICAgYXV0byBvcHRp
bWl6ZXIgPSBzdGF0ZXMtPmVuY29kZXItPm5ld19wYWNrZXRfbG9zc19vcHRpbWl6ZXIoKTsKKyAg
ICBFWFBFQ1RfRVEobnVsbHB0ciwgb3B0aW1pemVyKTsKKyAgfQorICB7CisgICAgdGVzdDo6U2Nv
cGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAgICAiV2ViUlRDLUF1
ZGlvLU5ld09wdXNQYWNrZXRMb3NzUmF0ZU9wdGltaXphdGlvbi9FbmFibGVkLyIpOworICAgIGF1
dG8gc3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgICAgYXV0byBvcHRpbWl6ZXIgPSBzdGF0ZXMt
PmVuY29kZXItPm5ld19wYWNrZXRfbG9zc19vcHRpbWl6ZXIoKTsKKyAgICBBU1NFUlRfTkUobnVs
bHB0ciwgb3B0aW1pemVyKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4wMSwgb3B0aW1pemVyLT5t
aW5fcGFja2V0X2xvc3NfcmF0ZSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yMCwgb3B0aW1p
emVyLT5tYXhfcGFja2V0X2xvc3NfcmF0ZSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wMCwg
b3B0aW1pemVyLT5zbG9wZSgpKTsKKyAgfQorICB7CisgICAgdGVzdDo6U2NvcGVkRmllbGRUcmlh
bHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAgICAiV2ViUlRDLUF1ZGlvLU5ld09wdXNQ
YWNrZXRMb3NzUmF0ZU9wdGltaXphdGlvbi9FbmFibGVkLTItNTAtMC43LyIpOworICAgIGF1dG8g
c3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisgICAgYXV0byBvcHRpbWl6ZXIgPSBzdGF0ZXMtPmVu
Y29kZXItPm5ld19wYWNrZXRfbG9zc19vcHRpbWl6ZXIoKTsKKyAgICBBU1NFUlRfTkUobnVsbHB0
ciwgb3B0aW1pemVyKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4wMiwgb3B0aW1pemVyLT5taW5f
cGFja2V0X2xvc3NfcmF0ZSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC41MCwgb3B0aW1pemVy
LT5tYXhfcGFja2V0X2xvc3NfcmF0ZSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC43MCwgb3B0
aW1pemVyLT5zbG9wZSgpKTsKKyAgfQorfQorCiAvLyBWZXJpZmllcyB0aGF0IHRoZSBjb21wbGV4
aXR5IGFkYXB0YXRpb24gaW4gdGhlIGNvbmZpZyB3b3JrcyBhcyBpbnRlbmRlZC4KIFRFU1QoQXVk
aW9FbmNvZGVyT3B1c1Rlc3QsIENvbmZpZ0NvbXBsZXhpdHlBZGFwdGF0aW9uKSB7CiAgIEF1ZGlv
RW5jb2Rlck9wdXNDb25maWcgY29uZmlnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2
Yi9hdWRpb19kZWNvZGVyX3BjbTE2Yi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9fZGVj
b2Rlcl9wY20xNmIuY2MKaW5kZXggYjA3NjI0ZGZmYzVjNGUzMmM4MzYzZWUwYTZmODc5MTA1MDRh
MDU2MC4uMWRkMmZmMjg5ZWUxMDI4MDk2M2MzZGI1ZGU1ODU0NTg4NmM2MGQ0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19kZWNvZGVyX3BjbTE2Yi5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2RlY29kZXJfcGNtMTZiLmNjCkBAIC0xMCw2ICsxMCw4IEBA
CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2Rl
Y29kZXJfcGNtMTZiLmgiCiAKKyNpbmNsdWRlIDx1dGlsaXR5PgorCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2xlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20xNmIuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIv
YXVkaW9fZGVjb2Rlcl9wY20xNmIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9fZGVjb2Rl
cl9wY20xNmIuaAppbmRleCA3ZDIzNDIyNGUzY2QwMGRhYThlODFiOGFkMzM3NGMxNzkzMTg1OTM5
Li45YjQ3OGQ4MDZmN2FjNjA1ZDFhOTQ5MzMxNjhjYjBkMjUxZmE2MTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2RlY29kZXJfcGNtMTZiLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29k
ZWNzL3BjbTE2Yi9hdWRpb19kZWNvZGVyX3BjbTE2Yi5oCkBAIC0xMSw3ICsxMSwxMiBAQAogI2lm
bmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfUENNMTZCX0FVRElPX0RFQ09ERVJfUENN
MTZCX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19QQ00xNkJfQVVESU9f
REVDT0RFUl9QQ00xNkJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGlu
dC5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVk
aW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2VuY29kZXJfcGNtMTZiLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL3BjbTE2Yi9hdWRpb19lbmNvZGVyX3BjbTE2Yi5jYwppbmRleCA4MzFkYWVkYzYzZjlk
MWY2MmJkMzNjZmYxMzNlZThkMGY4ZWEzMzI2Li4xMDZhYjE2Nzk0MDI1MTgzYWRhNDAxODFiNmQ0
NjU0MDk1NDcxYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2VuY29k
ZXJfcGNtMTZiLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9fZW5jb2Rlcl9wY20x
NmIuY2MKQEAgLTEwLDEyICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2VuY29kZXJfcGNtMTZiLmgiCiAKLSNpbmNsdWRlIDxhbGdv
cml0aG0+Ci0KLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlKQorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20x
NmJfY29tbW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20xNmJfY29tbW9uLmNjCmluZGV4
IDZkMGZjMmQwMTVjYzU4ODY4YjZmOGIwMWRlZGFmOGZkMTE4OTY2YzUuLjhmOGJiYTUyN2JlNDVm
OTBiOTcwOGM4YTFjMGI5YzNlMGViYmE2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20x
NmIvcGNtMTZiX2NvbW1vbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3BjbTE2Yl9jb21t
b24uY2MKQEAgLTEwLDYgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9wY20xNmIvcGNtMTZiX2NvbW1vbi5oIgogCisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIHZvaWQg
UGNtMTZCQXBwZW5kU3VwcG9ydGVkQ29kZWNTcGVjcyhzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjU3Bl
Yz4qIHNwZWNzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3BjbTE2Yl9jb21t
b24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiX2NvbW1vbi5oCmluZGV4IDk4MGE5OTY0
MDg4NjQyZGFjODkyMmRlODE2MjM2YmI0NTBlYTYwNzEuLjNmYWU3MTdmZjMxZDljNGMxYWUzMDE5
MDk3YTU1NWFkOWM0Njc4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZi
X2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiX2NvbW1vbi5oCkBAIC0x
Myw3ICsxMyw3IEBACiAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19jb2Rl
Y3MvYXVkaW9fZm9ybWF0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogdm9pZCBQY20xNkJBcHBl
bmRTdXBwb3J0ZWRDb2RlY1NwZWNzKHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWNTcGVjPiogc3BlY3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9hdWRpb19lbmNvZGVyX2NvcHlfcmVkLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL3JlZC9hdWRpb19lbmNvZGVyX2NvcHlfcmVkLmNjCmluZGV4IDI2MDFm
MjZlNDRmZGRhY2RkYTE4ZjRhYjBlZGI3MzQ0MTcwZGIyYzYuLjEyNGU4MTE5ODE3OWNkM2NjMDU4
MjRiNjc0ZDk3NzJjNWRjMjI3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9yZWQvYXVkaW9f
ZW5jb2Rlcl9jb3B5X3JlZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcmVkL2F1ZGlvX2VuY29kZXJf
Y29weV9yZWQuY2MKQEAgLTExLDggKzExLDggQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvcmVkL2F1ZGlvX2VuY29kZXJfY29weV9yZWQuaCIKIAogI2luY2x1ZGUgPHN0
cmluZy5oPgotCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9h
dWRpb19lbmNvZGVyX2NvcHlfcmVkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcmVkL2F1ZGlvX2VuY29kZXJf
Y29weV9yZWQuaAppbmRleCA0OTJlZTNhZmI0NzE3NjNiODdkMjc3N2Q2MDU4MzA2OTZkYjJiMjc5
Li41YTY4ODc2Yjg5OGMxNDNkNTZhMTIxM2Y4YmY0NjBmYTMwNzI4ZTU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvcmVkL2F1ZGlvX2VuY29kZXJfY29weV9yZWQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvcmVkL2F1ZGlvX2VuY29kZXJfY29weV9yZWQuaApAQCAtMTEsOSArMTEsMTIgQEAKICNpZm5k
ZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX1JFRF9BVURJT19FTkNPREVSX0NPUFlfUkVE
X0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19SRURfQVVESU9fRU5DT0RF
Ul9DT1BZX1JFRF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUg
ImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2J1
ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9h
dWRpb19jb2RpbmdfbW9kdWxlLmgKaW5kZXggYjlmMjIyODhmZDlmY2UzMmI1ZjFlNWY5NzliZTQ3
ZjFjZGM1MDBhMy4uZjlmZGJhNWY1MTFiMzNkMGFiOTAyYWE5YjJlYzBkYmQwODFhNThiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
aW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgKQEAgLTE1NCw0MCArMTU0LDYgQEAgY2xhc3Mg
QXVkaW9Db2RpbmdNb2R1bGUgewogICAvLyAgIFNlbmRlcgogICAvLwogCi0gIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwotICAvLyBpbnQzMl90IFJlZ2lzdGVyU2VuZENvZGVjKCkKLSAgLy8gUmVnaXN0ZXJz
IGEgY29kZWMsIHNwZWNpZmllZCBieSB8c2VuZF9jb2RlY3wsIGFzIHNlbmRpbmcgY29kZWMuCi0g
IC8vIFRoaXMgQVBJIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgb2YgdGltZXMgdG8gcmVnaXN0ZXIg
Q29kZWMuIFRoZSBsYXN0IGNvZGVjCi0gIC8vIHJlZ2lzdGVyZWQgb3ZlcndyaXRlcyB0aGUgcHJl
dmlvdXMgb25lcy4KLSAgLy8gVGhlIEFQSSBjYW4gYWxzbyBiZSB1c2VkIHRvIGNoYW5nZSBwYXls
b2FkIHR5cGUgZm9yIENORyBhbmQgUkVELCB3aGljaCBhcmUKLSAgLy8gcmVnaXN0ZXJlZCBieSBk
ZWZhdWx0IHRvIGRlZmF1bHQgcGF5bG9hZCB0eXBlcy4KLSAgLy8gTm90ZSB0aGF0IHJlZ2lzdGVy
aW5nIENORyBhbmQgUkVEIHdvbid0IG92ZXJ3cml0ZSBzcGVlY2ggY29kZWNzLgotICAvLyBUaGlz
IEFQSSBjYW4gYmUgY2FsbGVkIHRvIHNldC9jaGFuZ2UgdGhlIHNlbmQgcGF5bG9hZC10eXBlLCBm
cmFtZS1zaXplCi0gIC8vIG9yIGVuY29kaW5nIHJhdGUgKGlmIGFwcGxpY2FibGUgZm9yIHRoZSBj
b2RlYykuCi0gIC8vCi0gIC8vIE5vdGU6IElmIGEgc3RlcmVvIGNvZGVjIGlzIHJlZ2lzdGVyZWQg
YXMgc2VuZCBjb2RlYywgVkFEL0RUWCB3aWxsCi0gIC8vIGF1dG9tYXRpY2FsbHkgYmUgdHVybmVk
IG9mZiwgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3RlcmVvIHNlbmRpbmcuCi0gIC8v
Ci0gIC8vIE5vdGU6IElmIGEgc2Vjb25kYXJ5IGVuY29kZXIgaXMgYWxyZWFkeSByZWdpc3RlcmVk
LCBhbmQgdGhlIG5ldyBzZW5kLWNvZGVjCi0gIC8vIGhhcyBhIHNhbXBsaW5nIHJhdGUgdGhhdCBk
b2VzIG5vdCBtYXRjaCB0aGUgc2Vjb25kYXJ5IGVuY29kZXIsIHRoZQotICAvLyBzZWNvbmRhcnkg
ZW5jb2RlciB3aWxsIGJlIHVucmVnaXN0ZXJlZC4KLSAgLy8KLSAgLy8gSW5wdXQ6Ci0gIC8vICAg
LXNlbmRfY29kZWMgICAgICAgICA6IFBhcmFtZXRlcnMgb2YgdGhlIGNvZGVjIHRvIGJlIHJlZ2lz
dGVyZWQsIGMuZi4KLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uX3R5cGVzLmgg
Zm9yIHRoZSBkZWZpbml0aW9uIG9mCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVj
SW5zdC4KLSAgLy8KLSAgLy8gUmV0dXJuIHZhbHVlOgotICAvLyAgIC0xIGlmIGZhaWxlZCB0byBp
bml0aWFsaXplLAotICAvLyAgICAwIGlmIHN1Y2NlZWRlZC4KLSAgLy8KLSAgdmlydHVhbCBpbnQz
Ml90IFJlZ2lzdGVyU2VuZENvZGVjKGNvbnN0IENvZGVjSW5zdCYgc2VuZF9jb2RlYykgPSAwOwot
Ci0gIC8vIFJlZ2lzdGVycyB8ZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXJ8IGFzIGVuY29kZXIuIFRo
ZSBuZXcgZW5jb2RlciB3aWxsCi0gIC8vIHJlcGxhY2UgYW55IHByZXZpb3VzbHkgcmVnaXN0ZXJl
ZCBzcGVlY2ggZW5jb2RlciAoaW50ZXJuYWwgb3IgZXh0ZXJuYWwpLgotICB2aXJ0dWFsIHZvaWQg
UmVnaXN0ZXJFeHRlcm5hbFNlbmRDb2RlYygKLSAgICAgIEF1ZGlvRW5jb2RlciogZXh0ZXJuYWxf
c3BlZWNoX2VuY29kZXIpID0gMDsKLQogICAvLyB8bW9kaWZpZXJ8IGlzIGNhbGxlZCBleGFjdGx5
IG9uY2Ugd2l0aCBvbmUgYXJndW1lbnQ6IGEgcG9pbnRlciB0byB0aGUKICAgLy8gdW5pcXVlX3B0
ciB0aGF0IGhvbGRzIHRoZSBjdXJyZW50IGVuY29kZXIgKHdoaWNoIGlzIG51bGwgaWYgdGhlcmUg
aXMgbm8KICAgLy8gY3VycmVudCBlbmNvZGVyKS4gRm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgY2Fs
bCwgfG1vZGlmaWVyfCBoYXMgZXhjbHVzaXZlCkBAIC0yNTcsNzEgKzIyMyw2IEBAIGNsYXNzIEF1
ZGlvQ29kaW5nTW9kdWxlIHsKICAgLy8KICAgdmlydHVhbCBpbnQzMl90IEFkZDEwTXNEYXRhKGNv
bnN0IEF1ZGlvRnJhbWUmIGF1ZGlvX2ZyYW1lKSA9IDA7CiAKLSAgLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0gIC8vIChSRUQpIFJlZHVuZGFudCBDb2RpbmcKLSAgLy8KLQotICAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLSAgLy8gaW50MzJfdCBTZXRSRURTdGF0dXMoKQotICAvLyBjb25maWd1cmUgUkVEIHN0YXR1
cyBpLmUuIG9uL29mZi4KLSAgLy8KLSAgLy8gUkZDIDIxOTggZGVzY3JpYmVzIGEgc29sdXRpb24g
d2hpY2ggaGFzIGEgc2luZ2xlIHBheWxvYWQgdHlwZSB3aGljaAotICAvLyBzaWduaWZpZXMgYSBw
YWNrZXQgd2l0aCByZWR1bmRhbmN5LiBUaGF0IHBhY2tldCB0aGVuIGJlY29tZXMgYSBjb250YWlu
ZXIsCi0gIC8vIGVuY2Fwc3VsYXRpbmcgbXVsdGlwbGUgcGF5bG9hZHMgaW50byBhIHNpbmdsZSBS
VFAgcGFja2V0LgotICAvLyBTdWNoIGEgc2NoZW1lIGlzIGZsZXhpYmxlLCBzaW5jZSBhbnkgYW1v
dW50IG9mIHJlZHVuZGFuY3kgbWF5IGJlCi0gIC8vIGVuY2Fwc3VsYXRlZCB3aXRoaW4gYSBzaW5n
bGUgcGFja2V0LiAgVGhlcmUgaXMsIGhvd2V2ZXIsIGEgc21hbGwgb3ZlcmhlYWQKLSAgLy8gc2lu
Y2UgZWFjaCBlbmNhcHN1bGF0ZWQgcGF5bG9hZCBtdXN0IGJlIHByZWNlZGVkIGJ5IGEgaGVhZGVy
IGluZGljYXRpbmcKLSAgLy8gdGhlIHR5cGUgb2YgZGF0YSBlbmNsb3NlZC4KLSAgLy8KLSAgLy8g
SW5wdXQ6Ci0gIC8vICAgLWVuYWJsZV9yZWQgICAgICAgICA6IGlmIHRydWUgUkVEIGlzIGVuYWJs
ZWQsIG90aGVyd2lzZSBSRUQgaXMKLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJs
ZWQuCi0gIC8vCi0gIC8vIFJldHVybiB2YWx1ZToKLSAgLy8gICAtMSBpZiBmYWlsZWQgdG8gc2V0
IFJFRCBzdGF0dXMsCi0gIC8vICAgIDAgaWYgc3VjY2VlZGVkLgotICAvLwotICB2aXJ0dWFsIGlu
dDMyX3QgU2V0UkVEU3RhdHVzKGJvb2wgZW5hYmxlX3JlZCkgPSAwOwotCi0gIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwotICAvLyBib29sIFJFRFN0YXR1cygpCi0gIC8vIEdldCBSRUQgc3RhdHVzCi0gIC8v
Ci0gIC8vIFJldHVybiB2YWx1ZToKLSAgLy8gICB0cnVlIGlmIFJFRCBpcyBlbmFibGVkLAotICAv
LyAgIGZhbHNlIGlmIFJFRCBpcyBkaXNhYmxlZC4KLSAgLy8KLSAgdmlydHVhbCBib29sIFJFRFN0
YXR1cygpIGNvbnN0ID0gMDsKLQotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gKEZFQykgRm9y
d2FyZCBFcnJvciBDb3JyZWN0aW9uIChjb2RlYyBpbnRlcm5hbCkKLSAgLy8KLQotICAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KLSAgLy8gaW50MzJfdCBTZXRDb2RlY0ZFQygpCi0gIC8vIENvbmZpZ3VyZXMg
Y29kZWMgaW50ZXJuYWwgRkVDIHN0YXR1cyBpLmUuIG9uL29mZi4gTm8gZWZmZWN0cyBvbiBjb2Rl
Y3MgdGhhdAotICAvLyBkbyBub3QgcHJvdmlkZSBpbnRlcm5hbCBGRUMuCi0gIC8vCi0gIC8vIElu
cHV0OgotICAvLyAgIC1lbmFibGVfZmVjICAgICAgICAgOiBpZiB0cnVlIEZFQyB3aWxsIGJlIGVu
YWJsZWQgb3RoZXJ3aXNlIHRoZSBGRUMgaXMKLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ZGlzYWJsZWQuCi0gIC8vCi0gIC8vIFJldHVybiB2YWx1ZToKLSAgLy8gICAtMSBpZiBmYWlsZWQs
IG9yIHRoZSBjb2RlYyBkb2VzIG5vdCBzdXBwb3J0IEZFQwotICAvLyAgICAwIGlmIHN1Y2NlZWRl
ZC4KLSAgLy8KLSAgdmlydHVhbCBpbnQgU2V0Q29kZWNGRUMoYm9vbCBlbmFibGVfY29kZWNfZmVj
KSA9IDA7Ci0KLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8vIGJvb2wgQ29kZWNGRUMoKQotICAv
LyBHZXRzIHN0YXR1cyBvZiBjb2RlYyBpbnRlcm5hbCBGRUMuCi0gIC8vCi0gIC8vIFJldHVybiB2
YWx1ZToKLSAgLy8gICB0cnVlIGlmIEZFQyBpcyBlbmFibGVkLAotICAvLyAgIGZhbHNlIGlmIEZF
QyBpcyBkaXNhYmxlZC4KLSAgLy8KLSAgdmlydHVhbCBib29sIENvZGVjRkVDKCkgY29uc3QgPSAw
OwotCiAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAvLyBpbnQgU2V0UGFja2V0TG9zc1JhdGUoKQog
ICAvLyBTZXRzIGV4cGVjdGVkIHBhY2tldCBsb3NzIHJhdGUgZm9yIGVuY29kaW5nLiBTb21lIGVu
Y29kZXJzIHByb3ZpZGUgcGFja2V0CkBAIC0zNDMsNTUgKzI0NCw2IEBAIGNsYXNzIEF1ZGlvQ29k
aW5nTW9kdWxlIHsKICAgLy8gICAoVkFEKSBWb2ljZSBBY3Rpdml0eSBEZXRlY3Rpb24KICAgLy8K
IAotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gaW50MzJfdCBTZXRWQUQoKQotICAvLyBJZiBE
VFggaXMgZW5hYmxlZCAmIHRoZSBjb2RlYyBkb2VzIG5vdCBoYXZlIGludGVybmFsIERUWC9WQUQK
LSAgLy8gV2ViUnRjIFZBRCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBhbmQgfGVuYWJs
ZV92YWR8IGlzIGlnbm9yZWQuCi0gIC8vCi0gIC8vIElmIERUWCBpcyBkaXNhYmxlZCBidXQgVkFE
IGlzIGVuYWJsZWQgbm8gRFRYIHBhY2tldHMgYXJlIHNlbmQsCi0gIC8vIHJlZ2FyZGxlc3Mgb2Yg
d2hldGhlciB0aGUgY29kZWMgaGFzIGludGVybmFsIERUWC9WQUQgb3Igbm90LiBJbiB0aGlzCi0g
IC8vIGNhc2UsIFdlYlJ0YyBWQUQgaXMgcnVubmluZyB0byBsYWJlbCBmcmFtZXMgYXMgYWN0aXZl
L2luLWFjdGl2ZS4KLSAgLy8KLSAgLy8gTk9URSEgVkFEL0RUWCBpcyBub3Qgc3VwcG9ydGVkIHdo
ZW4gc2VuZGluZyBzdGVyZW8uCi0gIC8vCi0gIC8vIElucHV0czoKLSAgLy8gICAtZW5hYmxlX2R0
eCAgICAgICAgIDogaWYgdHJ1ZSBEVFggaXMgZW5hYmxlZCwKLSAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgb3RoZXJ3aXNlIERUWCBpcyBkaXNhYmxlZC4KLSAgLy8gICAtZW5hYmxlX3ZhZCAg
ICAgICAgIDogaWYgdHJ1ZSBWQUQgaXMgZW5hYmxlZCwKLSAgLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgb3RoZXJ3aXNlIFZBRCBpcyBkaXNhYmxlZC4KLSAgLy8gICAtdmFkX21vZGUgICAgICAg
ICAgIDogZGV0ZXJtaW5lcyB0aGUgYWdncmVzc2l2ZW5lc3Mgb2YgVkFELiBBIG1vcmUKLSAgLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVzc2l2ZSBtb2RlIHJlc3VsdHMgaW4gbW9yZSBm
cmFtZXMgbGFiZWxlZAotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcyBpbi1hY3RpdmUs
IGMuZi4gZGVmaW5pdGlvbiBvZgotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBBQ01WQURN
b2RlIGluIGF1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMuaAotICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgdmFsaWQgdmFsdWVzLgotICAvLwotICAvLyBSZXR1cm4gdmFsdWU6Ci0g
IC8vICAgLTEgaWYgZmFpbGVkIHRvIHNldCB1cCBWQUQvRFRYLAotICAvLyAgICAwIGlmIHN1Y2Nl
ZWRlZC4KLSAgLy8KLSAgdmlydHVhbCBpbnQzMl90IFNldFZBRChjb25zdCBib29sIGVuYWJsZV9k
dHggPSB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgZW5hYmxlX3Zh
ZCA9IGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFDTVZBRE1vZGUgdmFk
X21vZGUgPSBWQUROb3JtYWwpID0gMDsKLQotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gaW50
MzJfdCBWQUQoKQotICAvLyBHZXQgVkFEIHN0YXR1cy4KLSAgLy8KLSAgLy8gT3V0cHV0czoKLSAg
Ly8gICAtZHR4X2VuYWJsZWQgICAgICAgIDogaXMgc2V0IHRvIHRydWUgaWYgRFRYIGlzIGVuYWJs
ZWQsIG90aGVyd2lzZQotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gZmFs
c2UuCi0gIC8vICAgLXZhZF9lbmFibGVkICAgICAgICA6IGlzIHNldCB0byB0cnVlIGlmIFZBRCBp
cyBlbmFibGVkLCBvdGhlcndpc2UKLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgaXMgc2V0
IHRvIGZhbHNlLgotICAvLyAgIC12YWRfbW9kZSAgICAgICAgICAgIDogaXMgc2V0IHRvIHRoZSBj
dXJyZW50IGFnZ3Jlc3NpdmVuZXNzIG9mIFZBRC4KLSAgLy8KLSAgLy8gUmV0dXJuIHZhbHVlOgot
ICAvLyAgIC0xIGlmIGZhaWxzIHRvIHJldHJpZXZlIHRoZSBzZXR0aW5nIG9mIERUWC9WQUQsCi0g
IC8vICAgIDAgaWYgc3VjY2VlZGVkLgotICAvLwotICB2aXJ0dWFsIGludDMyX3QgVkFEKGJvb2wq
IGR0eF9lbmFibGVkLAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wqIHZhZF9lbmFibGVkLAot
ICAgICAgICAgICAgICAgICAgICAgIEFDTVZBRE1vZGUqIHZhZF9tb2RlKSBjb25zdCA9IDA7Ci0K
ICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgIC8vIGludDMyX3QgUmVnaXN0ZXJWQURDYWxsYmFjaygp
CiAgIC8vIENhbGwgdGhpcyBtZXRob2QgdG8gcmVnaXN0ZXIgYSBjYWxsYmFjayBmdW5jdGlvbiB3
aGljaCBpcyBjYWxsZWQKQEAgLTQ1NSwyOSArMzA3LDYgQEAgY2xhc3MgQXVkaW9Db2RpbmdNb2R1
bGUgewogICB2aXJ0dWFsIGJvb2wgUmVnaXN0ZXJSZWNlaXZlQ29kZWMoaW50IHJ0cF9wYXlsb2Fk
X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTZHBBdWRp
b0Zvcm1hdCYgYXVkaW9fZm9ybWF0KSA9IDA7CiAKLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8v
IGludDMyX3QgUmVnaXN0ZXJSZWNlaXZlQ29kZWMoKQotICAvLyBSZWdpc3RlciBwb3NzaWJsZSBk
ZWNvZGVycywgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBmb3IKLSAgLy8gY29kZWNzLCBD
TkctTkIsIENORy1XQiwgQ05HLVNXQiwgQVZUIGFuZCBSRUQuCi0gIC8vCi0gIC8vIElucHV0Ogot
ICAvLyAgIC1yZWNlaXZlX2NvZGVjICAgICAgOiBwYXJhbWV0ZXJzIG9mIHRoZSBjb2RlYyB0byBi
ZSByZWdpc3RlcmVkLCBjLmYuCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbl90
eXBlcy5oIGZvciB0aGUgZGVmaW5pdGlvbiBvZgotICAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2RlY0luc3QuCi0gIC8vCi0gIC8vIFJldHVybiB2YWx1ZToKLSAgLy8gICAtMSBpZiBmYWls
ZWQgdG8gcmVnaXN0ZXIgdGhlIGNvZGVjCi0gIC8vICAgIDAgaWYgdGhlIGNvZGVjIHJlZ2lzdGVy
ZWQgc3VjY2Vzc2Z1bGx5LgotICAvLwotICB2aXJ0dWFsIGludCBSZWdpc3RlclJlY2VpdmVDb2Rl
Yyhjb25zdCBDb2RlY0luc3QmIHJlY2VpdmVfY29kZWMpID0gMDsKLQotICAvLyBSZWdpc3RlciBh
IGRlY29kZXI7IGNhbGwgcmVwZWF0ZWRseSB0byByZWdpc3RlciBtdWx0aXBsZSBkZWNvZGVycy4g
fGRmfCBpcwotICAvLyBhIGRlY29kZXIgZmFjdG9yeSB0aGF0IHJldHVybnMgYW4gaVNBQyBkZWNv
ZGVyOyBpdCB3aWxsIGJlIGNhbGxlZCBvbmNlIGlmCi0gIC8vIHRoZSBkZWNvZGVyIGJlaW5nIHJl
Z2lzdGVyZWQgaXMgaVNBQy4KLSAgdmlydHVhbCBpbnQgUmVnaXN0ZXJSZWNlaXZlQ29kZWMoCi0g
ICAgICBjb25zdCBDb2RlY0luc3QmIHJlY2VpdmVfY29kZWMsCi0gICAgICBydGM6OkZ1bmN0aW9u
VmlldzxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPigpPiBpc2FjX2ZhY3RvcnkpID0gMDsK
LQogICAvLyBSZWdpc3RlcnMgYW4gZXh0ZXJuYWwgZGVjb2Rlci4gVGhlIG5hbWUgaXMgb25seSB1
c2VkIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24KICAgLy8gYmFjayB0byB0aGUgY2FsbGVyIGFib3V0
IHRoZSBkZWNvZGVyLiBIZW5jZSwgdGhlIG5hbWUgaXMgYXJiaXRyYXJ5LCBhbmQgbWF5CiAgIC8v
IGJlIGVtcHR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxl
X3R5cGVkZWZzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMu
aAppbmRleCBjZDQzNTFiMDdmZjFiOTQzNDUwOTA0MzkwODczMjk2ZTY3MzM1NGU0Li5iYWZmZjcy
ZTVhZDRiNmFjZjAxZWEyODNkZTdjMDYxNTYxYTVmMzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNs
dWRlL2F1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1
ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMuaApAQCAtMTMsNiArMTMsOCBAQAogCiAjaW5jbHVk
ZSA8bWFwPgogCisjaW5jbHVkZSAicnRjX2Jhc2UvZGVwcmVjYXRpb24uaCIKKwogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtNDMsNiArNDUsODQgQEAgZW51bSBP
cHVzQXBwbGljYXRpb25Nb2RlIHsKICAga0F1ZGlvID0gMSwKIH07CiAKKy8vIFN0YXRpc3RpY3Mg
Zm9yIGNhbGxzIHRvIEF1ZGlvQ29kaW5nTW9kdWxlOjpQbGF5b3V0RGF0YTEwTXMoKS4KK3N0cnVj
dCBBdWRpb0RlY29kaW5nQ2FsbFN0YXRzIHsKKyAgQXVkaW9EZWNvZGluZ0NhbGxTdGF0cygpCisg
ICAgICA6IGNhbGxzX3RvX3NpbGVuY2VfZ2VuZXJhdG9yKDApLAorICAgICAgICBjYWxsc190b19u
ZXRlcSgwKSwKKyAgICAgICAgZGVjb2RlZF9ub3JtYWwoMCksCisgICAgICAgIGRlY29kZWRfcGxj
KDApLAorICAgICAgICBkZWNvZGVkX2NuZygwKSwKKyAgICAgICAgZGVjb2RlZF9wbGNfY25nKDAp
LAorICAgICAgICBkZWNvZGVkX211dGVkX291dHB1dCgwKSB7fQorCisgIGludCBjYWxsc190b19z
aWxlbmNlX2dlbmVyYXRvcjsgIC8vIE51bWJlciBvZiBjYWxscyB3aGVyZSBzaWxlbmNlIGdlbmVy
YXRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIE5ldEVxIHdh
cyBkaXNlbmdhZ2VkIGZyb20gZGVjb2RpbmcuCisgIGludCBjYWxsc190b19uZXRlcTsgICAgICAg
ICAgICAgIC8vIE51bWJlciBvZiBjYWxscyB0byBOZXRFcS4KKyAgaW50IGRlY29kZWRfbm9ybWFs
OyAgLy8gTnVtYmVyIG9mIGNhbGxzIHdoZXJlIGF1ZGlvIFJUUCBwYWNrZXQgZGVjb2RlZC4KKyAg
aW50IGRlY29kZWRfcGxjOyAgICAgLy8gTnVtYmVyIG9mIGNhbGxzIHJlc3VsdGVkIGluIFBMQy4K
KyAgaW50IGRlY29kZWRfY25nOyAgLy8gTnVtYmVyIG9mIGNhbGxzIHdoZXJlIGNvbWZvcnQgbm9p
c2UgZ2VuZXJhdGVkIGR1ZSB0byBEVFguCisgIGludCBkZWNvZGVkX3BsY19jbmc7ICAgICAgIC8v
IE51bWJlciBvZiBjYWxscyByZXN1bHRlZCB3aGVyZSBQTEMgZmFkZWQgdG8gQ05HLgorICBpbnQg
ZGVjb2RlZF9tdXRlZF9vdXRwdXQ7ICAvLyBOdW1iZXIgb2YgY2FsbHMgcmV0dXJuaW5nIGEgbXV0
ZWQgc3RhdGUgb3V0cHV0LgorfTsKKworLy8gTkVURVEgc3RhdGlzdGljcy4KK3N0cnVjdCBOZXR3
b3JrU3RhdGlzdGljcyB7CisgIC8vIGN1cnJlbnQgaml0dGVyIGJ1ZmZlciBzaXplIGluIG1zCisg
IHVpbnQxNl90IGN1cnJlbnRCdWZmZXJTaXplOworICAvLyBwcmVmZXJyZWQgKG9wdGltYWwpIGJ1
ZmZlciBzaXplIGluIG1zCisgIHVpbnQxNl90IHByZWZlcnJlZEJ1ZmZlclNpemU7CisgIC8vIGFk
ZGluZyBleHRyYSBkZWxheSBkdWUgdG8gInBlYWt5IGppdHRlciIKKyAgYm9vbCBqaXR0ZXJQZWFr
c0ZvdW5kOworICAvLyBTdGF0cyBiZWxvdyBjb3JyZXNwb25kIHRvIHNpbWlsYXJseS1uYW1lZCBm
aWVsZHMgaW4gdGhlIFdlYlJUQyBzdGF0cyBzcGVjLgorICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vd2VicnRjLXN0YXRzLyNkb20tcnRjbWVkaWFzdHJlYW10cmFja3N0YXRzCisgIHVpbnQ2NF90
IHRvdGFsU2FtcGxlc1JlY2VpdmVkOworICB1aW50NjRfdCBjb25jZWFsZWRTYW1wbGVzOworICB1
aW50NjRfdCBjb25jZWFsbWVudEV2ZW50czsKKyAgdWludDY0X3Qgaml0dGVyQnVmZmVyRGVsYXlN
czsKKyAgLy8gU3RhdHMgYmVsb3cgRE8gTk9UIGNvcnJlc3BvbmQgZGlyZWN0bHkgdG8gYW55dGhp
bmcgaW4gdGhlIFdlYlJUQyBzdGF0cworICAvLyBMb3NzIHJhdGUgKG5ldHdvcmsgKyBsYXRlKTsg
ZnJhY3Rpb24gYmV0d2VlbiAwIGFuZCAxLCBzY2FsZWQgdG8gUTE0LgorICB1aW50MTZfdCBjdXJy
ZW50UGFja2V0TG9zc1JhdGU7CisgIC8vIExhdGUgbG9zcyByYXRlOyBmcmFjdGlvbiBiZXR3ZWVu
IDAgYW5kIDEsIHNjYWxlZCB0byBRMTQuCisgIHVuaW9uIHsKKyAgICBSVENfREVQUkVDQVRFRCB1
aW50MTZfdCBjdXJyZW50RGlzY2FyZFJhdGU7CisgIH07CisgIC8vIGZyYWN0aW9uIChvZiBvcmln
aW5hbCBzdHJlYW0pIG9mIHN5bnRoZXNpemVkIGF1ZGlvIGluc2VydGVkIHRocm91Z2gKKyAgLy8g
ZXhwYW5zaW9uIChpbiBRMTQpCisgIHVpbnQxNl90IGN1cnJlbnRFeHBhbmRSYXRlOworICAvLyBm
cmFjdGlvbiAob2Ygb3JpZ2luYWwgc3RyZWFtKSBvZiBzeW50aGVzaXplZCBzcGVlY2ggaW5zZXJ0
ZWQgdGhyb3VnaAorICAvLyBleHBhbnNpb24gKGluIFExNCkKKyAgdWludDE2X3QgY3VycmVudFNw
ZWVjaEV4cGFuZFJhdGU7CisgIC8vIGZyYWN0aW9uIG9mIHN5bnRoZXNpemVkIHNwZWVjaCBpbnNl
cnRlZCB0aHJvdWdoIHByZS1lbXB0aXZlIGV4cGFuc2lvbgorICAvLyAoaW4gUTE0KQorICB1aW50
MTZfdCBjdXJyZW50UHJlZW1wdGl2ZVJhdGU7CisgIC8vIGZyYWN0aW9uIG9mIGRhdGEgcmVtb3Zl
ZCB0aHJvdWdoIGFjY2VsZXJhdGlvbiAoaW4gUTE0KQorICB1aW50MTZfdCBjdXJyZW50QWNjZWxl
cmF0ZVJhdGU7CisgIC8vIGZyYWN0aW9uIG9mIGRhdGEgY29taW5nIGZyb20gc2Vjb25kYXJ5IGRl
Y29kaW5nIChpbiBRMTQpCisgIHVpbnQxNl90IGN1cnJlbnRTZWNvbmRhcnlEZWNvZGVkUmF0ZTsK
KyAgLy8gRnJhY3Rpb24gb2Ygc2Vjb25kYXJ5IGRhdGEsIGluY2x1ZGluZyBGRUMgYW5kIFJFRCwg
dGhhdCBpcyBkaXNjYXJkZWQgKGluCisgIC8vIFExNCkuIERpc2NhcmRpbmcgb2Ygc2Vjb25kYXJ5
IGRhdGEgY2FuIGJlIGNhdXNlZCBieSB0aGUgcmVjZXB0aW9uIG9mIHRoZQorICAvLyBwcmltYXJ5
IGRhdGEsIG9ic29sZXRpbmcgdGhlIHNlY29uZGFyeSBkYXRhLiBJdCBjYW4gYWxzbyBiZSBjYXVz
ZWQgYnkgZWFybHkKKyAgLy8gb3IgbGF0ZSBhcnJpdmFsIG9mIHNlY29uZGFyeSBkYXRhLgorICB1
aW50MTZfdCBjdXJyZW50U2Vjb25kYXJ5RGlzY2FyZGVkUmF0ZTsKKyAgLy8gY2xvY2stZHJpZnQg
aW4gcGFydHMtcGVyLW1pbGxpb24gKG5lZ2F0aXZlIG9yIHBvc2l0aXZlKQorICBpbnQzMl90IGNs
b2NrRHJpZnRQUE07CisgIC8vIGF2ZXJhZ2UgcGFja2V0IHdhaXRpbmcgdGltZSBpbiB0aGUgaml0
dGVyIGJ1ZmZlciAobXMpCisgIGludCBtZWFuV2FpdGluZ1RpbWVNczsKKyAgLy8gbWVkaWFuIHBh
Y2tldCB3YWl0aW5nIHRpbWUgaW4gdGhlIGppdHRlciBidWZmZXIgKG1zKQorICBpbnQgbWVkaWFu
V2FpdGluZ1RpbWVNczsKKyAgLy8gbWluIHBhY2tldCB3YWl0aW5nIHRpbWUgaW4gdGhlIGppdHRl
ciBidWZmZXIgKG1zKQorICBpbnQgbWluV2FpdGluZ1RpbWVNczsKKyAgLy8gbWF4IHBhY2tldCB3
YWl0aW5nIHRpbWUgaW4gdGhlIGppdHRlciBidWZmZXIgKG1zKQorICBpbnQgbWF4V2FpdGluZ1Rp
bWVNczsKKyAgLy8gYWRkZWQgc2FtcGxlcyBpbiBvZmYgbW9kZSBkdWUgdG8gcGFja2V0IGxvc3MK
KyAgc2l6ZV90IGFkZGVkU2FtcGxlczsKKyAgLy8gY291bnQgb2YgdGhlIG51bWJlciBvZiBidWZm
ZXIgZmx1c2hlcworICB1aW50NjRfdCBwYWNrZXRCdWZmZXJGbHVzaGVzOworICAvLyBudW1iZXIg
b2Ygc2FtcGxlcyBleHBhbmRlZCBkdWUgdG8gZGVsYXllZCBwYWNrZXRzCisgIHVpbnQ2NF90IGRl
bGF5ZWRQYWNrZXRPdXRhZ2VTYW1wbGVzOworfTsKKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywog
CiAjZW5kaWYgIC8vIE1PRFVMRVNfQVVESU9fQ09ESU5HX0lOQ0xVREVfQVVESU9fQ09ESU5HX01P
RFVMRV9UWVBFREVGU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2FjY2VsZXJhdGUuY2MKaW5kZXggMTgzNTBiMGE3ODk3MTA2NDY1NDQ5N2Jm
ZGE3NjFlYTFkMzBmZmFmNC4uNjE2MWE4ZjkxYmYyOTRmYzRjY2M1MmRmNGZjMjNiZmFkYjNlNmM4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9hY2NlbGVyYXRlLmNjCkBAIC0xMCw3ICsxMCwxMCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5oIgogCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlv
L3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgor
I2luY2x1ZGUgPGFzc2VydC5oPgorCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2FjY2VsZXJhdGUu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2FjY2VsZXJhdGUuaAppbmRleCA1NjA5NTY4OTViN2RmNjNjZDY2NWRj
NGJhMTQxYWE5MzM5NTYwNjhjLi4xYTNhZjQyYjJlOWYzYzRjODhiOTFhNzA4ZjQ0NmQxNDFlODZl
MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hY2NlbGVyYXRlLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvYWNjZWxlcmF0ZS5oCkBAIC0xMSwxMyArMTEsMTUgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19DT0RJTkdfTkVURVFfQUNDRUxFUkFURV9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElO
R19ORVRFUV9BQ0NFTEVSQVRFX0hfCiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpbWVf
c3RyZXRjaC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKLS8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgorY2xhc3MgQXVkaW9N
dWx0aVZlY3RvcjsKIGNsYXNzIEJhY2tncm91bmROb2lzZTsKIAogLy8gVGhpcyBjbGFzcyBpbXBs
ZW1lbnRzIHRoZSBBY2NlbGVyYXRlIG9wZXJhdGlvbi4gTW9zdCBvZiB0aGUgd29yayBpcyBkb25l
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oCmluZGV4IDg2ZjgyODIwY2E3YTc3YmQ2NmQwYzY0MGQx
OTUwNjZkY2U5ZWJiMjYuLmEyZGQzYzNjYjEwY2ZkNGNjYjU4YmIyYTg4ZDA5OTc3OGJiZDcyMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oCkBAIC0xMSw4ICsxMSw4IEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0FVRElPX01VTFRJX1ZFQ1RPUl9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9BVURJT19NVUxUSV9WRUNUT1JfSF8KIAotI2luY2x1
ZGUgPHN0cmluZy5oPiAgLy8gQWNjZXNzIHRvIHNpemVfdC4KLQorI2luY2x1ZGUgPHN0ZGludC5o
PgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFw
aS9hcnJheV92aWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb192ZWN0b3IuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2F1ZGlvX3ZlY3Rvci5oCmluZGV4IDgyNWEzYmNlYWM5YmUwZjNiNWVkNjBh
MjdmNTY4ZTc3M2YyOTNkMzAuLmQwZGIzMzJkYjY1ZGU4NDhkMzAyZjIwNjRiMzAyZmYxMWIxMDNh
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX3ZlY3Rvci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2F1ZGlvX3ZlY3Rvci5oCkBAIC0xMSw3ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fQ09ESU5HX05FVEVRX0FVRElPX1ZFQ1RPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NP
RElOR19ORVRFUV9BVURJT19WRUNUT1JfSF8KIAotI2luY2x1ZGUgPHN0cmluZy5oPiAgLy8gQWNj
ZXNzIHRvIHNpemVfdC4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RkaW50Pgog
I2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvYmFja2dyb3VuZF9ub2lzZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYmFja2dy
b3VuZF9ub2lzZS5oCmluZGV4IDU4ZWVjYWE3MDVjZTgyNTJkYzg3YmI3NzU0YzIzYzdlMjI5MmFj
ZTQuLjg0ZDdlYjlkNzQ1YWYzNmE0N2M0NzY3ZTljZmFkNTMwZGIxNGVlZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2JhY2tncm91bmRfbm9pc2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9iYWNrZ3Jv
dW5kX25vaXNlLmgKQEAgLTE0LDEzICsxNCwxMiBAQAogI2luY2x1ZGUgPHN0cmluZy5oPiAgLy8g
c2l6ZV90CiAjaW5jbHVkZSA8bWVtb3J5PgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvaW5jbHVkZS9uZXRlcS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVj
dG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEZvcndhcmQgZGVjbGFyYXRp
b25zLgorY2xhc3MgQXVkaW9NdWx0aVZlY3RvcjsKIGNsYXNzIFBvc3REZWNvZGVWYWQ7CiAKIC8v
IFRoaXMgY2xhc3MgaGFuZGxlcyBlc3RpbWF0aW9uIG9mIGJhY2tncm91bmQgbm9pc2UgcGFyYW1l
dGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2J1ZmZlcl9sZXZlbF9maWx0ZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9idWZmZXJfbGV2ZWxfZmlsdGVyLmNjCmluZGV4IDZlOGRhMGEwMWI5NWZiMGNi
OTZmMDNlOTNmY2ZiYTJhNjBjNWYyMTYuLjJmOTY2MTg1MzYyZjk0ZWVlOWNiYjYwOWZlODhjMDMw
MWZmOWRiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2J1ZmZlcl9sZXZlbF9maWx0ZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvYnVmZmVyX2xldmVsX2ZpbHRlci5jYwpAQCAtMTAsNyArMTAsOCBA
QAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYnVmZmVyX2xldmVsX2Zp
bHRlci5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gUHJvdmlkZSBhY2Nlc3MgdG8gc3Rk
OjptYXguCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9jb21mb3J0X25vaXNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvY29tZm9ydF9ub2lz
ZS5jYwppbmRleCBiMzQxYWNkNWE1MGQ2ZTU4YjhkZDIzNjVhZjVjNmQ2YmRhNzI0Njg5Li5jYjJi
NzRkYmYyYjE5YTBhZjhmMTUzYzY4ZTc0ZTRmNzgwNWY4OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS9jb21mb3J0X25vaXNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2NvbWZvcnRfbm9pc2UuY2MK
QEAgLTExLDExICsxMSwxOCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L2NvbWZvcnRfbm9pc2UuaCIKIAogI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPGNzdGRp
bnQ+CisjaW5jbHVkZSA8bWVtb3J5PgogCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRp
b19kZWNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL3dlYnJ0Y19jbmcuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb192ZWN0b3IuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHNwX2hlbHBlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3N5bmNfYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVm
ZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
bG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L2NvbWZvcnRfbm9pc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2NvbWZvcnRfbm9pc2UuaAppbmRleCA1MTY5
MTI0MDQwZjY3N2MwNGZlZGNhMTJhMDQxOWRiYzM4MzIwMTkxLi4zYTliZmRlN2FhYjViNGU2MTgx
M2Q1ZDY5ZWE0ZjkwNjAzODNiYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9jb21mb3J0X25v
aXNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvY29tZm9ydF9ub2lzZS5oCkBAIC0xMSwxMiArMTEsMTQg
QEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfQ09NRk9SVF9OT0lTRV9IXwog
I2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9DT01GT1JUX05PSVNFX0hfCiAKLSNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFn
aWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgor
Y2xhc3MgQXVkaW9NdWx0aVZlY3RvcjsKIGNsYXNzIERlY29kZXJEYXRhYmFzZTsKIGNsYXNzIFN5
bmNCdWZmZXI7CiBzdHJ1Y3QgUGFja2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvY3Jvc3Nf
Y29ycmVsYXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2Nyb3NzX2NvcnJlbGF0aW9uLmgKaW5kZXggYTc0
Nzc3MmNmYzQzNTJiYjI4ZGE1MjY1ZjAzOWNhMzQ3ZjQ0ZTFiNi4uOWNlOGJlODNhZWNmMGY1MmRl
YWI3Y2RiMmI2M2U3M2M5Y2M2NjcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvY3Jvc3NfY29y
cmVsYXRpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9jcm9zc19jb3JyZWxhdGlvbi5oCkBAIC0xMSw3
ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0NST1NTX0NPUlJF
TEFUSU9OX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0NST1NTX0NPUlJF
TEFUSU9OX0hfCiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9p
bmNsdWRlKQorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjaXNpb25fbG9naWMu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpYy5jYwppbmRleCAzNDlmZGFiOWYxNWQwOTcz
ZTlmOGMzOTNlZGQ1NmY0M2Y4OGZiNzEyLi44M2MyYjNiOTBjNTY5ZWFiM2NjMTFkNDkxOTcxY2Vi
MDY5MzJkM2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpYy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpYy5jYwpAQCAtMTEsOCArMTEsOCBAQAogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY2lzaW9uX2xvZ2ljLmgiCiAKICNpbmNs
dWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bGltaXRzPgor
I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvYnVmZmVyX2xldmVsX2ZpbHRlci5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2UuaCIKQEAgLTIwLDggKzIw
LDkgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmQuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRfYnVmZmVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3luY19idWZmZXIuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dy
YXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2RlY2lzaW9uX2xvZ2ljLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dp
Yy5oCmluZGV4IDM5NzYxZGEwNzAyYjQxOWI3ZDU1NTczZjMzMmU3Njk3ZDEzZjQyNDYuLjJhNTMz
NTk0YjMzODJmNDcxY2UwODhhODZmMjIzZTE4NWY4YjZmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2RlY2lzaW9uX2xvZ2ljLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjaXNpb25fbG9naWMuaApA
QCAtMTIsNyArMTIsNiBAQAogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9ERUNJ
U0lPTl9MT0dJQ19IXwogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVm
aW5lcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2luY2x1ZGUvbmV0
ZXEuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aWNrX3RpbWVyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpY191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY2lz
aW9uX2xvZ2ljX3VuaXR0ZXN0LmNjCmluZGV4IDA4NzIwZDE3NjhmNDU2ZDAwMDgxYjMwMDg3ZTBm
MTA1YWVlMTU3NTguLjE4M2I5Yzc5YzkzNTYzMzFmMDdkM2Y2ODA2ZTkxYjg5NTdjOTA3YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY2lzaW9uX2xvZ2ljX3VuaXR0ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2RlY2lzaW9uX2xvZ2ljX3VuaXR0ZXN0LmNjCkBAIC0zMSw3ICszMSw3IEBAIFRF
U1QoRGVjaXNpb25Mb2dpYywgQ3JlYXRlQW5kRGVzdHJveSkgewogICBUaWNrVGltZXIgdGlja190
aW1lcjsKICAgUGFja2V0QnVmZmVyIHBhY2tldF9idWZmZXIoMTAsICZ0aWNrX3RpbWVyKTsKICAg
RGVsYXlQZWFrRGV0ZWN0b3IgZGVsYXlfcGVha19kZXRlY3RvcigmdGlja190aW1lcik7Ci0gIERl
bGF5TWFuYWdlciBkZWxheV9tYW5hZ2VyKDI0MCwgJmRlbGF5X3BlYWtfZGV0ZWN0b3IsICZ0aWNr
X3RpbWVyKTsKKyAgRGVsYXlNYW5hZ2VyIGRlbGF5X21hbmFnZXIoMjQwLCAwLCAmZGVsYXlfcGVh
a19kZXRlY3RvciwgJnRpY2tfdGltZXIpOwogICBCdWZmZXJMZXZlbEZpbHRlciBidWZmZXJfbGV2
ZWxfZmlsdGVyOwogICBEZWNpc2lvbkxvZ2ljKiBsb2dpYyA9IERlY2lzaW9uTG9naWM6OkNyZWF0
ZSgKICAgICAgIGZzX2h6LCBvdXRwdXRfc2l6ZV9zYW1wbGVzLCBmYWxzZSwgJmRlY29kZXJfZGF0
YWJhc2UsIHBhY2tldF9idWZmZXIsCkBAIC00OCw3ICs0OCw3IEBAIFRFU1QoRGVjaXNpb25Mb2dp
YywgUG9zdHBvbmVEZWNvZGluZ0FmdGVyRXhwYW5zaW9uU2V0dGluZ3MpIHsKICAgVGlja1RpbWVy
IHRpY2tfdGltZXI7CiAgIFBhY2tldEJ1ZmZlciBwYWNrZXRfYnVmZmVyKDEwLCAmdGlja190aW1l
cik7CiAgIERlbGF5UGVha0RldGVjdG9yIGRlbGF5X3BlYWtfZGV0ZWN0b3IoJnRpY2tfdGltZXIp
OwotICBEZWxheU1hbmFnZXIgZGVsYXlfbWFuYWdlcigyNDAsICZkZWxheV9wZWFrX2RldGVjdG9y
LCAmdGlja190aW1lcik7CisgIERlbGF5TWFuYWdlciBkZWxheV9tYW5hZ2VyKDI0MCwgMCwgJmRl
bGF5X3BlYWtfZGV0ZWN0b3IsICZ0aWNrX3RpbWVyKTsKICAgQnVmZmVyTGV2ZWxGaWx0ZXIgYnVm
ZmVyX2xldmVsX2ZpbHRlcjsKICAgewogICAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxk
X3RyaWFsKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjb2Rlcl9kYXRhYmFzZS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2UuY2MKaW5kZXggMWZkOGMwM2NhMjRhNjNiYTU1NTkw
YWFjYWMzNGEwNWMwM2Y1YzZiYS4uMDg5MGJlYjkzNDJkNjgyZmRjZTZjY2JkYjk4YzA0NTcxYzE4
Mzc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjb2Rlcl9kYXRhYmFzZS5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmNjCkBAIC0xMCw5ICsxMCwxNSBAQAogCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjb2Rlcl9kYXRhYmFzZS5oIgogCi0j
aW5jbHVkZSA8dXRpbGl0eT4gIC8vIHBhaXIKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxjc3RkaW50PgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5j
bHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1
ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgImNvbW1vbl90
eXBlcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL2F1ZGlvX2Zvcm1hdF90b19z
dHJpbmcuaCIKQEAgLTEwMSw3ICsxMDcsNyBAQCBBdWRpb0RlY29kZXIqIERlY29kZXJEYXRhYmFz
ZTo6RGVjb2RlckluZm86OkdldERlY29kZXIoKSBjb25zdCB7CiB9CiAKIGJvb2wgRGVjb2RlckRh
dGFiYXNlOjpEZWNvZGVySW5mbzo6SXNUeXBlKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0IHsKLSAg
cmV0dXJuIFNUUl9DQVNFX0NNUChhdWRpb19mb3JtYXRfLm5hbWUuY19zdHIoKSwgbmFtZSkgPT0g
MDsKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoYXVkaW9fZm9ybWF0Xy5uYW1lLCBu
YW1lKTsKIH0KIAogYm9vbCBEZWNvZGVyRGF0YWJhc2U6OkRlY29kZXJJbmZvOjpJc1R5cGUoY29u
c3Qgc3RkOjpzdHJpbmcmIG5hbWUpIGNvbnN0IHsKQEAgLTExMCw3ICsxMTYsNyBAQCBib29sIERl
Y29kZXJEYXRhYmFzZTo6RGVjb2RlckluZm86OklzVHlwZShjb25zdCBzdGQ6OnN0cmluZyYgbmFt
ZSkgY29uc3QgewogCiBhYnNsOjpvcHRpb25hbDxEZWNvZGVyRGF0YWJhc2U6OkRlY29kZXJJbmZv
OjpDbmdEZWNvZGVyPgogRGVjb2RlckRhdGFiYXNlOjpEZWNvZGVySW5mbzo6Q25nRGVjb2Rlcjo6
Q3JlYXRlKGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgaWYgKFNUUl9DQVNFX0NN
UChmb3JtYXQubmFtZS5jX3N0cigpLCAiQ04iKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiQ04iKSkgewogICAgIC8vIENOIGhhcyBhIDE6MSBSVFAg
Y2xvY2sgcmF0ZSB0byBzYW1wbGUgcmF0ZSByYXRpby4KICAgICBjb25zdCBpbnQgc2FtcGxlX3Jh
dGVfaHogPSBmb3JtYXQuY2xvY2tyYXRlX2h6OwogICAgIFJUQ19EQ0hFQ0soc2FtcGxlX3JhdGVf
aHogPT0gODAwMCB8fCBzYW1wbGVfcmF0ZV9oeiA9PSAxNjAwMCB8fApAQCAtMTIzLDExICsxMjks
MTEgQEAgRGVjb2RlckRhdGFiYXNlOjpEZWNvZGVySW5mbzo6Q25nRGVjb2Rlcjo6Q3JlYXRlKGNv
bnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKIAogRGVjb2RlckRhdGFiYXNlOjpEZWNvZGVy
SW5mbzo6U3VidHlwZQogRGVjb2RlckRhdGFiYXNlOjpEZWNvZGVySW5mbzo6U3VidHlwZUZyb21G
b3JtYXQoY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBpZiAoU1RSX0NBU0VfQ01Q
KGZvcm1hdC5uYW1lLmNfc3RyKCksICJDTiIpID09IDApIHsKKyAgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJDTiIpKSB7CiAgICAgcmV0dXJuIFN1YnR5cGU6OmtDb21m
b3J0Tm9pc2U7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCks
ICJ0ZWxlcGhvbmUtZXZlbnQiKSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdu
b3JlQ2FzZShmb3JtYXQubmFtZSwgInRlbGVwaG9uZS1ldmVudCIpKSB7CiAgICAgcmV0dXJuIFN1
YnR5cGU6OmtEdG1mOwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0
cigpLCAicmVkIikgPT0gMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uo
Zm9ybWF0Lm5hbWUsICJyZWQiKSkgewogICAgIHJldHVybiBTdWJ0eXBlOjprUmVkOwogICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9k
ZWxheV9tYW5hZ2VyLmNjCmluZGV4IGU1ZWI1OTJlZmExMzQ3NTY1YjYyYjBiMTlkYTc1ZjcxYTMy
MDBkZDMuLjY3ZTZhMTNjMWQ3Njk1MjZkMTcxODIyNGE4NzdjMmU2NDJkYzkzYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlf
bWFuYWdlci5jYwpAQCAtMTEsMTQgKzExLDE1IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvZGVsYXlfbWFuYWdlci5oIgogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaW5j
bHVkZSA8bWF0aC5oPgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gbWF4LCBtaW4KKyNpbmNs
dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlIDxudW1lcmljPgorI2luY2x1ZGUgPHN0cmluZz4KIAotI2luY2x1ZGUgImNvbW1v
bl9hdWRpby9zaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNzaW5nX2xpYnJh
cnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9wZWFrX2Rl
dGVjdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlc19wdWJsaWMu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgog
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCkBAIC02MSw2
ICs2Miw3IEBAIGFic2w6Om9wdGlvbmFsPGludD4gR2V0Rm9yY2VkTGltaXRQcm9iYWJpbGl0eSgp
IHsKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBEZWxheU1hbmFnZXI6OkRlbGF5TWFuYWdlcihzaXpl
X3QgbWF4X3BhY2tldHNfaW5fYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGJhc2VfbWluX3RhcmdldF9kZWxheV9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERl
bGF5UGVha0RldGVjdG9yKiBwZWFrX2RldGVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVGlja1RpbWVyKiB0aWNrX3RpbWVyKQogICAgIDogZmlyc3RfcGFja2V0X3JlY2Vp
dmVkXyhmYWxzZSksCkBAIC02OCwxMyArNzAsMTQgQEAgRGVsYXlNYW5hZ2VyOjpEZWxheU1hbmFn
ZXIoc2l6ZV90IG1heF9wYWNrZXRzX2luX2J1ZmZlciwKICAgICAgIGlhdF92ZWN0b3JfKGtNYXhJ
YXQgKyAxLCAwKSwKICAgICAgIGlhdF9mYWN0b3JfKDApLAogICAgICAgdGlja190aW1lcl8odGlj
a190aW1lciksCisgICAgICBiYXNlX21pbl90YXJnZXRfZGVsYXlfbXNfKGJhc2VfbWluX3Rhcmdl
dF9kZWxheV9tcyksCiAgICAgICBiYXNlX3RhcmdldF9sZXZlbF8oNCksICAgICAgICAgICAgICAg
ICAgIC8vIEluIFEwIGRvbWFpbi4KICAgICAgIHRhcmdldF9sZXZlbF8oYmFzZV90YXJnZXRfbGV2
ZWxfIDw8IDgpLCAgLy8gSW4gUTggZG9tYWluLgogICAgICAgcGFja2V0X2xlbl9tc18oMCksCiAg
ICAgICBzdHJlYW1pbmdfbW9kZV8oZmFsc2UpLAogICAgICAgbGFzdF9zZXFfbm9fKDApLAogICAg
ICAgbGFzdF90aW1lc3RhbXBfKDApLAotICAgICAgbWluaW11bV9kZWxheV9tc18oMCksCisgICAg
ICBtaW5pbXVtX2RlbGF5X21zXyhiYXNlX21pbl90YXJnZXRfZGVsYXlfbXNfKSwKICAgICAgIG1h
eGltdW1fZGVsYXlfbXNfKHRhcmdldF9sZXZlbF8pLAogICAgICAgaWF0X2N1bXVsYXRpdmVfc3Vt
XygwKSwKICAgICAgIG1heF9pYXRfY3VtdWxhdGl2ZV9zdW1fKDApLApAQCAtODQsNiArODcsOCBA
QCBEZWxheU1hbmFnZXI6OkRlbGF5TWFuYWdlcihzaXplX3QgbWF4X3BhY2tldHNfaW5fYnVmZmVy
LAogICAgICAgICAgIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BdWRpby1OZXRFcUZy
YW1lbGVuZ3RoRXhwZXJpbWVudCIpKSwKICAgICAgIGZvcmNlZF9saW1pdF9wcm9iYWJpbGl0eV8o
R2V0Rm9yY2VkTGltaXRQcm9iYWJpbGl0eSgpKSB7CiAgIGFzc2VydChwZWFrX2RldGVjdG9yKTsg
IC8vIFNob3VsZCBuZXZlciBiZSBOVUxMLgorICBSVENfRENIRUNLX0dFKGJhc2VfbWluX3Rhcmdl
dF9kZWxheV9tc18sIDApOworICBSVENfRENIRUNLX0xFKG1pbmltdW1fZGVsYXlfbXNfLCBtYXhp
bXVtX2RlbGF5X21zXyk7CiAKICAgUmVzZXQoKTsKIH0KQEAgLTQ4NCw3ICs0ODksNyBAQCBib29s
IERlbGF5TWFuYWdlcjo6U2V0TWluaW11bURlbGF5KGludCBkZWxheV9tcykgewogICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnQ+KDMgKiBtYXhfcGFja2V0c19pbl9idWZmZXJfICogcGFja2V0X2xl
bl9tc18gLyA0KSkpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KLSAgbWluaW11bV9kZWxheV9t
c18gPSBkZWxheV9tczsKKyAgbWluaW11bV9kZWxheV9tc18gPSBzdGQ6Om1heChkZWxheV9tcywg
YmFzZV9taW5fdGFyZ2V0X2RlbGF5X21zXyk7CiAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9tYW5hZ2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9tYW5h
Z2VyLmgKaW5kZXggY2Q1ZmMwOTAzMTY5MWYyNTlmZGU0M2UxYzAyM2YwYzMwYWNiZjFlNS4uMmM4
MDgxYjA3NWZlNDEzNTdlYTZjNjRkYmUyMDkxZTA1ZDQ4MWZkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvZGVsYXlfbWFuYWdlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXIuaApA
QCAtMzEsOSArMzEsMTEgQEAgY2xhc3MgRGVsYXlNYW5hZ2VyIHsKIAogICAvLyBDcmVhdGUgYSBE
ZWxheU1hbmFnZXIgb2JqZWN0LiBOb3RpZnkgdGhlIGRlbGF5IG1hbmFnZXIgdGhhdCB0aGUgcGFj
a2V0CiAgIC8vIGJ1ZmZlciBjYW4gaG9sZCBubyBtb3JlIHRoYW4gfG1heF9wYWNrZXRzX2luX2J1
ZmZlcnwgcGFja2V0cyAoaS5lLiwgdGhpcwotICAvLyBpcyB0aGUgbnVtYmVyIG9mIHBhY2tldCBz
bG90cyBpbiB0aGUgYnVmZmVyKS4gU3VwcGx5IGEgUGVha0RldGVjdG9yCi0gIC8vIG9iamVjdCB0
byB0aGUgRGVsYXlNYW5hZ2VyLgorICAvLyBpcyB0aGUgbnVtYmVyIG9mIHBhY2tldCBzbG90cyBp
biB0aGUgYnVmZmVyKSBhbmQgdGhhdCB0aGUgdGFyZ2V0IGRlbGF5CisgIC8vIHNob3VsZCBiZSBn
cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gfGJhc2VfbWluX3RhcmdldF9kZWxheV9tc3wuIFN1cHBs
eSBhCisgIC8vIFBlYWtEZXRlY3RvciBvYmplY3QgdG8gdGhlIERlbGF5TWFuYWdlci4KICAgRGVs
YXlNYW5hZ2VyKHNpemVfdCBtYXhfcGFja2V0c19pbl9idWZmZXIsCisgICAgICAgICAgICAgICBp
bnQgYmFzZV9taW5fdGFyZ2V0X2RlbGF5X21zLAogICAgICAgICAgICAgICAgRGVsYXlQZWFrRGV0
ZWN0b3IqIHBlYWtfZGV0ZWN0b3IsCiAgICAgICAgICAgICAgICBjb25zdCBUaWNrVGltZXIqIHRp
Y2tfdGltZXIpOwogCkBAIC0xNDQsNiArMTQ2LDggQEAgY2xhc3MgRGVsYXlNYW5hZ2VyIHsKICAg
SUFUVmVjdG9yIGlhdF92ZWN0b3JfOyAgICAgICAgICAgICAgICAvLyBIaXN0b2dyYW0gb2YgaW50
ZXItYXJyaXZhbCB0aW1lcy4KICAgaW50IGlhdF9mYWN0b3JfOyAgLy8gRm9yZ2V0dGluZyBmYWN0
b3IgZm9yIHVwZGF0aW5nIHRoZSBJQVQgaGlzdG9ncmFtIChRMTUpLgogICBjb25zdCBUaWNrVGlt
ZXIqIHRpY2tfdGltZXJfOworICBjb25zdCBpbnQgYmFzZV9taW5fdGFyZ2V0X2RlbGF5X21zXzsg
IC8vIExvd2VyIGJvdW5kIGZvciB0YXJnZXRfbGV2ZWxfIGFuZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbmltdW1fZGVsYXlfbXNfLgogICAvLyBUaW1lIGVs
YXBzZWQgc2luY2UgbGFzdCBwYWNrZXQuCiAgIHN0ZDo6dW5pcXVlX3B0cjxUaWNrVGltZXI6OlN0
b3B3YXRjaD4gcGFja2V0X2lhdF9zdG9wd2F0Y2hfOwogICBpbnQgYmFzZV90YXJnZXRfbGV2ZWxf
OyAgLy8gQ3VycmVudGx5IHByZWZlcnJlZCBidWZmZXIgbGV2ZWwgYmVmb3JlIHBlYWsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9kZWxheV9tYW5hZ2VyX3VuaXR0ZXN0LmNjCmluZGV4IGU0ZTg2NWZlNDZiZTMwMDI4MDMyYzdk
NTQ2YzkzYzgyYWFkYzFhMTAuLjYyODFhMTU2Nzk5ODkzYzAyNTE1NWVhNTVlNjc1ZmJlN2U5YzY5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXJfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvZGVsYXlfbWFuYWdlcl91bml0dGVzdC5jYwpAQCAtMjcsNiArMjcsNyBA
QCB1c2luZyA6OnRlc3Rpbmc6Ol87CiBjbGFzcyBEZWxheU1hbmFnZXJUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgogICBzdGF0aWMgY29uc3QgaW50IGtNYXhOdW1i
ZXJPZlBhY2tldHMgPSAyNDA7CisgIHN0YXRpYyBjb25zdCBpbnQga01pbkRlbGF5TXMgPSAwOwog
ICBzdGF0aWMgY29uc3QgaW50IGtUaW1lU3RlcE1zID0gMTA7CiAgIHN0YXRpYyBjb25zdCBpbnQg
a0ZzID0gODAwMDsKICAgc3RhdGljIGNvbnN0IGludCBrRnJhbWVTaXplTXMgPSAyMDsKQEAgLTU2
LDcgKzU3LDggQEAgdm9pZCBEZWxheU1hbmFnZXJUZXN0OjpTZXRVcCgpIHsKIAogdm9pZCBEZWxh
eU1hbmFnZXJUZXN0OjpSZWNyZWF0ZURlbGF5TWFuYWdlcigpIHsKICAgRVhQRUNUX0NBTEwoZGV0
ZWN0b3JfLCBSZXNldCgpKS5UaW1lcygxKTsKLSAgZG1fLnJlc2V0KG5ldyBEZWxheU1hbmFnZXIo
a01heE51bWJlck9mUGFja2V0cywgJmRldGVjdG9yXywgJnRpY2tfdGltZXJfKSk7CisgIGRtXy5y
ZXNldChuZXcgRGVsYXlNYW5hZ2VyKGtNYXhOdW1iZXJPZlBhY2tldHMsIGtNaW5EZWxheU1zLCAm
ZGV0ZWN0b3JfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGlja190aW1lcl8pKTsK
IH0KIAogdm9pZCBEZWxheU1hbmFnZXJUZXN0OjpTZXRQYWNrZXRBdWRpb0xlbmd0aChpbnQgbGVu
Z3RfbXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X3BlYWtfZGV0ZWN0b3IuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9kZWxheV9wZWFrX2RldGVjdG9yLmNjCmluZGV4IGViOWY2ZDUzMGQ1ZDY1
MWFhNTY3MjFkZTdmZWNiMDFjMjA3ZWRhYTMuLjg5M2NlM2U4ZmQyNDQ0OGNlYTY2YzdlYTQzZGU2
YjcwNmM3MjQ2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X3BlYWtfZGV0ZWN0b3Iu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlfcGVha19kZXRlY3Rvci5jYwpAQCAtMTAsMTAgKzEw
LDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X3BlYWtf
ZGV0ZWN0b3IuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIG1heAorI2luY2x1ZGUgPGFs
Z29yaXRobT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBl
cnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2RlbGF5X3BlYWtfZGV0ZWN0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5
X3BlYWtfZGV0ZWN0b3IuaAppbmRleCA5ZGVmY2E1YWQwMjE2NDc4YmM3ZWRjMDNkNGRmOTk4ZDRk
OGZjNDE1Li4yNzJkNTBlZDUwOWZjZTIzYjU2MjY4YmQ1ZGYxN2Q2ZTdhZWM2YjNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9wZWFrX2RldGVjdG9yLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
ZGVsYXlfcGVha19kZXRlY3Rvci5oCkBAIC0xMSw4ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNf
QVVESU9fQ09ESU5HX05FVEVRX0RFTEFZX1BFQUtfREVURUNUT1JfSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19DT0RJTkdfTkVURVFfREVMQVlfUEVBS19ERVRFQ1RPUl9IXwogCi0jaW5jbHVkZSA8
c3RyaW5nLmg+ICAvLyBzaXplX3QKLQorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0
cmluZy5oPgogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8bWVtb3J5PgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9kc3BfaGVscGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kc3BfaGVscGVyLmgKaW5k
ZXggZWZhMmY5Y2UwNjQ0N2E4ZGUyZjJlMzQ4Nzk1MDZmNTgwYTY4YWJjYi4uODM3OTQ2MTJjNWZk
ZjYxYTRlNWQzNGExN2JhOWJhOWEzZmI5ODU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHNw
X2hlbHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RzcF9oZWxwZXIuaApAQCAtMTEsOSArMTEsMTEg
QEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfRFNQX0hFTFBFUl9IXwogI2Rl
ZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9EU1BfSEVMUEVSX0hfCiAKLSNpbmNsdWRl
IDxzdHJpbmcuaD4gIC8vIEFjY2VzcyB0byBzaXplX3QuCisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS9hdWRpb192ZWN0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2lj
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHRtZl9i
dWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL2R0bWZfYnVmZmVyLmgKaW5kZXggNmRlNTEyNzcyZjJlYTUw
ZDhiM2ViMjg1ZGQ3ZjQ1YTZjODBlYTAxYS4uMjRiMTRlY2U0MTZhMWI0NmIzZGQ2NzU0ZmY4M2Vh
ZGY1YTdlYzRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHRtZl9idWZmZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9kdG1mX2J1ZmZlci5oCkBAIC0xMSw4ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVM
RVNfQVVESU9fQ09ESU5HX05FVEVRX0RUTUZfQlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fQ09ESU5HX05FVEVRX0RUTUZfQlVGRkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNp
bmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPHN0cmluZz4gIC8v
IHNpemVfdAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJhdG9yLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
ZHRtZl90b25lX2dlbmVyYXRvci5jYwppbmRleCA2ZmRiOTVhYWNhZDY3YmYxMzNjZWM3MTQ3MWU2
OTY3MDNjMzI4YWI5Li42YzQxMmUzNjRkODdkNGNmNzQ3OTY4NDU5NjcyYjM0ZWIwY2NmOTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJhdG9yLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2R0bWZfdG9uZV9nZW5lcmF0b3IuY2MKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2R0bWZfdG9uZV9nZW5lcmF0b3IuaCIKIAor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX3ZlY3Rvci5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJhdG9yLmgKaW5kZXggYTc3M2ZmMzUzZDNiMzBkZjY5NDhk
YzdjYWQ3NDhkMzBmOTMyNmE1My4uMjJlMTY2ZWYwYzQzZjliYjgwMTI3NDIxNzMzZGUzMDE2MzM2
M2QwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHRtZl90b25lX2dlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2R0bWZfdG9uZV9nZW5lcmF0b3IuaApAQCAtMTEsNiArMTEsOSBAQAogI2lm
bmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9EVE1GX1RPTkVfR0VORVJBVE9SX0hfCiAj
ZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0RUTUZfVE9ORV9HRU5FUkFUT1JfSF8K
IAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9leHBhbmQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmQuY2MKaW5kZXggNWY2NzFhZGE2YjYyMDM1
MjZlMWYyODNiYzA5NmY5MjEzYzU2YTU0Yy4uNGEwNmQwOWMxYzYxYTcyNjE0MzdhOWE3N2NkMTc4
ZjNjNTllMDA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2V4cGFuZC5jYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgPGxpbWl0cz4gICAg
IC8vIG51bWVyaWNfbGltaXRzPFQ+CiAKICNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3By
b2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYmFja2dyb3VuZF9ub2lzZS5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2Nyb3NzX2NvcnJlbGF0aW9uLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHNwX2hlbHBlci5oIgpAQCAtMzIyLDgg
KzMyMyw3IEBAIHZvaWQgRXhwYW5kOjpTZXRQYXJhbWV0ZXJzRm9yTm9ybWFsQWZ0ZXJFeHBhbmQo
KSB7CiAgIGN1cnJlbnRfbGFnX2luZGV4XyA9IDA7CiAgIGxhZ19pbmRleF9kaXJlY3Rpb25fID0g
MDsKICAgc3RvcF9tdXRpbmdfID0gdHJ1ZTsgIC8vIERvIG5vdCBtdXRlIHNpZ25hbCBhbnkgbW9y
ZS4KLSAgc3RhdGlzdGljc18tPkxvZ0RlbGF5ZWRQYWNrZXRPdXRhZ2VFdmVudCgKLSAgICAgIHJ0
Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ+KGV4cGFuZF9kdXJhdGlvbl9zYW1wbGVzXykgLyAoZnNfaHpf
IC8gMTAwMCkpOworICBzdGF0aXN0aWNzXy0+TG9nRGVsYXllZFBhY2tldE91dGFnZUV2ZW50KGV4
cGFuZF9kdXJhdGlvbl9zYW1wbGVzXywgZnNfaHpfKTsKIH0KIAogdm9pZCBFeHBhbmQ6OlNldFBh
cmFtZXRlcnNGb3JNZXJnZUFmdGVyRXhwYW5kKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
ZXhwYW5kLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmQuaAppbmRleCA0Y2ZlN2I5ZDhjYmVlYzFlNzk5
MGJiNDI3OWE2NDAxNmJlMTQ5NjAwLi4zMGMzNGEyYzMwMGRmMTYyNDI5NTMxYTBlZDMyZWQ5MjAw
MWFlNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9leHBhbmQuaApAQCAtMTQsMTIgKzE0LDEzIEBACiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5j
bHVkZSA8bWVtb3J5PgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVk
aW9fbXVsdGlfdmVjdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
YXVkaW9fdmVjdG9yLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCitjbGFzcyBB
dWRpb011bHRpVmVjdG9yOwogY2xhc3MgQmFja2dyb3VuZE5vaXNlOwogY2xhc3MgUmFuZG9tVmVj
dG9yOwogY2xhc3MgU3RhdGlzdGljc0NhbGN1bGF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9leHBhbmRfdW1hX2xvZ2dlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kX3VtYV9sb2dnZXIuaApp
bmRleCAwMDkwN2Q0ZTVhODQxYjRiZmFjNTkyZDcyYzk2ZTc4OGRjNjk2NjUyLi5iZDA3OWM2YWI3
NzUwYjBmM2MxYzVmYTY1Mzc4MDMxOGFlZDc2NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9l
eHBhbmRfdW1hX2xvZ2dlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZF91bWFfbG9nZ2VyLmgK
QEAgLTEwLDYgKzEwLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfRVhQ
QU5EX1VNQV9MT0dHRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfRVhQ
QU5EX1VNQV9MT0dHRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZF91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZF91bml0dGVzdC5jYwppbmRleCBiNGU2NDY2
ZTkwNDUwMDJiZmY4MDhiZGFjZWVmYTcyNmI3ZDBlYTU2Li4wOTkxNGRhY2E4MjI5NWM4OGRhZGVl
ODE5MDQxMzE4NjgzMmI1YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmRfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kX3VuaXR0ZXN0LmNjCkBAIC01MSwxNCArNTEs
MTYgQEAgVEVTVChFeHBhbmQsIENyZWF0ZVVzaW5nRmFjdG9yeSkgewogbmFtZXNwYWNlIHsKIGNs
YXNzIEZha2VTdGF0aXN0aWNzQ2FsY3VsYXRvciA6IHB1YmxpYyBTdGF0aXN0aWNzQ2FsY3VsYXRv
ciB7CiAgcHVibGljOgotICB2b2lkIExvZ0RlbGF5ZWRQYWNrZXRPdXRhZ2VFdmVudChpbnQgb3V0
YWdlX2R1cmF0aW9uX21zKSBvdmVycmlkZSB7Ci0gICAgbGFzdF9vdXRhZ2VfZHVyYXRpb25fbXNf
ID0gb3V0YWdlX2R1cmF0aW9uX21zOworICB2b2lkIExvZ0RlbGF5ZWRQYWNrZXRPdXRhZ2VFdmVu
dChpbnQgbnVtX3NhbXBsZXMsIGludCBmc19oeikgb3ZlcnJpZGUgeworICAgIGxhc3Rfb3V0YWdl
X2R1cmF0aW9uX3NhbXBsZXNfID0gbnVtX3NhbXBsZXM7CiAgIH0KIAotICBpbnQgbGFzdF9vdXRh
Z2VfZHVyYXRpb25fbXMoKSBjb25zdCB7IHJldHVybiBsYXN0X291dGFnZV9kdXJhdGlvbl9tc187
IH0KKyAgaW50IGxhc3Rfb3V0YWdlX2R1cmF0aW9uX3NhbXBsZXMoKSBjb25zdCB7CisgICAgcmV0
dXJuIGxhc3Rfb3V0YWdlX2R1cmF0aW9uX3NhbXBsZXNfOworICB9CiAKICBwcml2YXRlOgotICBp
bnQgbGFzdF9vdXRhZ2VfZHVyYXRpb25fbXNfID0gMDsKKyAgaW50IGxhc3Rfb3V0YWdlX2R1cmF0
aW9uX3NhbXBsZXNfID0gMDsKIH07CiAKIC8vIFRoaXMgaXMgdGhlIHNhbWUgc2l6ZSB0aGF0IGlz
IGdpdmVuIHRvIHRoZSBTeW5jQnVmZmVyIG9iamVjdCBpbiBOZXRFcS4KQEAgLTEyMCwxMyArMTIy
LDEyIEBAIFRFU1RfRihFeHBhbmRUZXN0LCBEZWxheWVkUGFja2V0T3V0YWdlKSB7CiAgICAgRVhQ
RUNUX0VRKDAsIGV4cGFuZF8uUHJvY2Vzcygmb3V0cHV0KSk7CiAgICAgRVhQRUNUX0dUKG91dHB1
dC5TaXplKCksIDB1KTsKICAgICBzdW1fb3V0cHV0X2xlbl9zYW1wbGVzICs9IG91dHB1dC5TaXpl
KCk7Ci0gICAgRVhQRUNUX0VRKDAsIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9uX21z
KCkpOworICAgIEVYUEVDVF9FUSgwLCBzdGF0aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlvbl9z
YW1wbGVzKCkpOwogICB9CiAgIGV4cGFuZF8uU2V0UGFyYW1ldGVyc0Zvck5vcm1hbEFmdGVyRXhw
YW5kKCk7CiAgIC8vIENvbnZlcnQgfHN1bV9vdXRwdXRfbGVuX3NhbXBsZXN8IHRvIG1pbGxpc2Vj
b25kcy4KLSAgRVhQRUNUX0VRKHJ0Yzo6Y2hlY2tlZF9jYXN0PGludD4oc3VtX291dHB1dF9sZW5f
c2FtcGxlcyAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0X3NhbXBs
ZV9yYXRlX2h6XyAvIDEwMDApKSwKLSAgICAgICAgICAgIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdl
X2R1cmF0aW9uX21zKCkpOworICBFWFBFQ1RfRVEocnRjOjpjaGVja2VkX2Nhc3Q8aW50PihzdW1f
b3V0cHV0X2xlbl9zYW1wbGVzKSwKKyAgICAgICAgICAgIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdl
X2R1cmF0aW9uX3NhbXBsZXMoKSk7CiB9CiAKIC8vIFRoaXMgdGVzdCBpcyBzaW1pbGFyIHRvIERl
bGF5ZWRQYWNrZXRPdXRhZ2UsIGJ1dCBlbmRzIGJ5IGNhbGxpbmcKQEAgLTE0MCwxMCArMTQxLDEw
IEBAIFRFU1RfRihFeHBhbmRUZXN0LCBMb3N0UGFja2V0T3V0YWdlKSB7CiAgICAgRVhQRUNUX0VR
KDAsIGV4cGFuZF8uUHJvY2Vzcygmb3V0cHV0KSk7CiAgICAgRVhQRUNUX0dUKG91dHB1dC5TaXpl
KCksIDB1KTsKICAgICBzdW1fb3V0cHV0X2xlbl9zYW1wbGVzICs9IG91dHB1dC5TaXplKCk7Ci0g
ICAgRVhQRUNUX0VRKDAsIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9uX21zKCkpOwor
ICAgIEVYUEVDVF9FUSgwLCBzdGF0aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlvbl9zYW1wbGVz
KCkpOwogICB9CiAgIGV4cGFuZF8uU2V0UGFyYW1ldGVyc0Zvck1lcmdlQWZ0ZXJFeHBhbmQoKTsK
LSAgRVhQRUNUX0VRKDAsIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9uX21zKCkpOwor
ICBFWFBFQ1RfRVEoMCwgc3RhdGlzdGljc18ubGFzdF9vdXRhZ2VfZHVyYXRpb25fc2FtcGxlcygp
KTsKIH0KIAogLy8gVGhpcyB0ZXN0IGlzIHNpbWlsYXIgdG8gdGhlIERlbGF5ZWRQYWNrZXRPdXRh
Z2UgdGVzdCBhYm92ZSwgYnV0IHdpdGggdGhlCkBAIC0xNjEsMTMgKzE2MiwxMiBAQCBURVNUX0Yo
RXhwYW5kVGVzdCwgQ2hlY2tPdXRhZ2VTdGF0c0FmdGVyUmVzZXQpIHsKICAgICAgIGV4cGFuZF8u
UmVzZXQoKTsKICAgICAgIHN1bV9vdXRwdXRfbGVuX3NhbXBsZXMgPSAwOwogICAgIH0KLSAgICBF
WFBFQ1RfRVEoMCwgc3RhdGlzdGljc18ubGFzdF9vdXRhZ2VfZHVyYXRpb25fbXMoKSk7CisgICAg
RVhQRUNUX0VRKDAsIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9uX3NhbXBsZXMoKSk7
CiAgIH0KICAgZXhwYW5kXy5TZXRQYXJhbWV0ZXJzRm9yTm9ybWFsQWZ0ZXJFeHBhbmQoKTsKICAg
Ly8gQ29udmVydCB8c3VtX291dHB1dF9sZW5fc2FtcGxlc3wgdG8gbWlsbGlzZWNvbmRzLgotICBF
WFBFQ1RfRVEocnRjOjpjaGVja2VkX2Nhc3Q8aW50PihzdW1fb3V0cHV0X2xlbl9zYW1wbGVzIC8K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3Rfc2FtcGxlX3JhdGVfaHpf
IC8gMTAwMCkpLAotICAgICAgICAgICAgc3RhdGlzdGljc18ubGFzdF9vdXRhZ2VfZHVyYXRpb25f
bXMoKSk7CisgIEVYUEVDVF9FUShydGM6OmNoZWNrZWRfY2FzdDxpbnQ+KHN1bV9vdXRwdXRfbGVu
X3NhbXBsZXMpLAorICAgICAgICAgICAgc3RhdGlzdGljc18ubGFzdF9vdXRhZ2VfZHVyYXRpb25f
c2FtcGxlcygpKTsKIH0KIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2lu
Y2x1ZGUvbmV0ZXEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaAppbmRleCA1MzA5NzVm
M2I4ZTdkN2M1M2JjZTM3NTQwMWZiMjVmYjU3NDUzMTdlLi4yODIwZmQ4NDc4N2Q1NjM2ZjExYjE3
MGM5MmE1YjM3MDU4ZDE5ZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9pbmNsdWRlL25ldGVx
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvaW5jbHVkZS9uZXRlcS5oCkBAIC03Miw2ICs3Miw3IEBAIHN0
cnVjdCBOZXRFcUxpZmV0aW1lU3RhdGlzdGljcyB7CiAgIHVpbnQ2NF90IGppdHRlcl9idWZmZXJf
ZGVsYXlfbXMgPSAwOwogICAvLyBCZWxvdyBzdGF0IGlzIG5vdCBwYXJ0IG9mIHRoZSBzcGVjLgog
ICB1aW50NjRfdCB2b2ljZV9jb25jZWFsZWRfc2FtcGxlcyA9IDA7CisgIHVpbnQ2NF90IGRlbGF5
ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzID0gMDsKIH07CiAKIC8vIE1ldHJpY3MgdGhhdCBkZXNj
cmliZSB0aGUgb3BlcmF0aW9ucyBwZXJmb3JtZWQgaW4gTmV0RXEsIGFuZCB0aGUgaW50ZXJuYWwK
QEAgLTExMiw2ICsxMTMsNyBAQCBjbGFzcyBOZXRFcSB7CiAgICAgYm9vbCBlbmFibGVfcG9zdF9k
ZWNvZGVfdmFkID0gZmFsc2U7CiAgICAgc2l6ZV90IG1heF9wYWNrZXRzX2luX2J1ZmZlciA9IDUw
OwogICAgIGludCBtYXhfZGVsYXlfbXMgPSAyMDAwOworICAgIGludCBtaW5fZGVsYXlfbXMgPSAw
OwogICAgIGJvb2wgZW5hYmxlX2Zhc3RfYWNjZWxlcmF0ZSA9IGZhbHNlOwogICAgIGJvb2wgZW5h
YmxlX211dGVkX3N0YXRlID0gZmFsc2U7CiAgICAgYWJzbDo6b3B0aW9uYWw8QXVkaW9Db2RlY1Bh
aXJJZD4gY29kZWNfcGFpcl9pZDsKQEAgLTIzMSwxMyArMjMzLDYgQEAgY2xhc3MgTmV0RXEgewog
ICAvLyBzdGF0aXN0aWNzIGFyZSBuZXZlciByZXNldC4KICAgdmlydHVhbCBOZXRFcU9wZXJhdGlv
bnNBbmRTdGF0ZSBHZXRPcGVyYXRpb25zQW5kU3RhdGUoKSBjb25zdCA9IDA7CiAKLSAgLy8gV3Jp
dGVzIHRoZSBjdXJyZW50IFJUQ1Agc3RhdGlzdGljcyB0byB8c3RhdHN8LiBUaGUgc3RhdGlzdGlj
cyBhcmUgcmVzZXQKLSAgLy8gYW5kIGEgbmV3IHJlcG9ydCBwZXJpb2QgaXMgc3RhcnRlZCB3aXRo
IHRoZSBjYWxsLgotICB2aXJ0dWFsIHZvaWQgR2V0UnRjcFN0YXRpc3RpY3MoUnRjcFN0YXRpc3Rp
Y3MqIHN0YXRzKSA9IDA7Ci0KLSAgLy8gU2FtZSBhcyBSdGNwU3RhdGlzdGljcygpLCBidXQgZG9l
cyBub3QgcmVzZXQgYW55dGhpbmcuCi0gIHZpcnR1YWwgdm9pZCBHZXRSdGNwU3RhdGlzdGljc05v
UmVzZXQoUnRjcFN0YXRpc3RpY3MqIHN0YXRzKSA9IDA7Ci0KICAgLy8gRW5hYmxlcyBwb3N0LWRl
Y29kZSBWQUQuIFdoZW4gZW5hYmxlZCwgR2V0QXVkaW8oKSB3aWxsIHJldHVybgogICAvLyBrT3V0
cHV0VkFEUGFzc2l2ZSB3aGVuIHRoZSBzaWduYWwgY29udGFpbnMgbm8gc3BlZWNoLgogICB2aXJ0
dWFsIHZvaWQgRW5hYmxlVmFkKCkgPSAwOwpAQCAtMjY2LDEwICsyNjEsNiBAQCBjbGFzcyBOZXRF
cSB7CiAgIC8vIEZsdXNoZXMgYm90aCB0aGUgcGFja2V0IGJ1ZmZlciBhbmQgdGhlIHN5bmMgYnVm
ZmVyLgogICB2aXJ0dWFsIHZvaWQgRmx1c2hCdWZmZXJzKCkgPSAwOwogCi0gIC8vIEN1cnJlbnQg
dXNhZ2Ugb2YgcGFja2V0LWJ1ZmZlciBhbmQgaXQncyBsaW1pdHMuCi0gIHZpcnR1YWwgdm9pZCBQ
YWNrZXRCdWZmZXJTdGF0aXN0aWNzKGludCogY3VycmVudF9udW1fcGFja2V0cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBtYXhfbnVtX3BhY2tldHMpIGNvbnN0
ID0gMDsKLQogICAvLyBFbmFibGVzIE5BQ0sgYW5kIHNldHMgdGhlIG1heGltdW0gc2l6ZSBvZiB0
aGUgTkFDSyBsaXN0LCB3aGljaCBzaG91bGQgYmUKICAgLy8gcG9zaXRpdmUgYW5kIG5vIGxhcmdl
ciB0aGFuIE5hY2s6OmtOYWNrTGlzdFNpemVMaW1pdC4gSWYgTkFDSyBpcyBhbHJlYWR5CiAgIC8v
IGVuYWJsZWQgdGhlbiB0aGUgbWF4aW11bSBOQUNLIGxpc3Qgc2l6ZSBpcyBtb2RpZmllZCBhY2Nv
cmRpbmdseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL21vY2svbW9ja19kZWxheV9tYW5hZ2Vy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9tb2NrL21vY2tfZGVsYXlfbWFuYWdlci5oCmluZGV4IDliMmVkNDk4
ZDlkYmZjYzI0MWFlMTRmN2E3NTIwOTYwMWNhZGUwOTcuLjIwNmNlYTdmMTBlN2Y1NjlhNDVjNDg2
MzkwYzliODc0OGE1YzViMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL21vY2svbW9ja19kZWxh
eV9tYW5hZ2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbW9jay9tb2NrX2RlbGF5X21hbmFnZXIuaApA
QCAtMjAsOSArMjAsMTMgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBNb2NrRGVsYXlNYW5h
Z2VyIDogcHVibGljIERlbGF5TWFuYWdlciB7CiAgcHVibGljOgogICBNb2NrRGVsYXlNYW5hZ2Vy
KHNpemVfdCBtYXhfcGFja2V0c19pbl9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgaW50IGJh
c2VfbWluX3RhcmdldF9kZWxheV9tcywKICAgICAgICAgICAgICAgICAgICBEZWxheVBlYWtEZXRl
Y3RvciogcGVha19kZXRlY3RvciwKICAgICAgICAgICAgICAgICAgICBjb25zdCBUaWNrVGltZXIq
IHRpY2tfdGltZXIpCi0gICAgICA6IERlbGF5TWFuYWdlcihtYXhfcGFja2V0c19pbl9idWZmZXIs
IHBlYWtfZGV0ZWN0b3IsIHRpY2tfdGltZXIpIHt9CisgICAgICA6IERlbGF5TWFuYWdlcihtYXhf
cGFja2V0c19pbl9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICBiYXNlX21pbl90YXJnZXRf
ZGVsYXlfbXMsCisgICAgICAgICAgICAgICAgICAgICBwZWFrX2RldGVjdG9yLAorICAgICAgICAg
ICAgICAgICAgICAgdGlja190aW1lcikge30KICAgdmlydHVhbCB+TW9ja0RlbGF5TWFuYWdlcigp
IHsgRGllKCk7IH0KICAgTU9DS19NRVRIT0QwKERpZSwgdm9pZCgpKTsKICAgTU9DS19DT05TVF9N
RVRIT0QwKGlhdF92ZWN0b3IsIGNvbnN0IElBVFZlY3RvciYoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9uYWNrX3RyYWNrZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uYWNrX3RyYWNrZXIuY2MKaW5k
ZXggYzYyY2RmODhlNGRjMTNkODRmZTMwMTFiYmU2NDM1YmE0OWM4ZjdjNC4uZTNlY2ZlYWVkMjcw
NzNjNjZjYTJhZTJhYTBkMmUxYmQ4NDZkYjFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmFj
a190cmFja2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25hY2tfdHJhY2tlci5jYwpAQCAtMTAsOSAr
MTAsOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmFja190cmFj
a2VyLmgiCiAKLSNpbmNsdWRlIDxhc3NlcnQuaD4gIC8vIEZvciBhc3NlcnQuCi0KLSNpbmNsdWRl
IDxhbGdvcml0aG0+ICAvLyBGb3Igc3RkOjptYXguCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5j
bHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25hY2tfdHJhY2tlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvbmFja190cmFja2VyLmgKaW5kZXggMTkzNmE5NDRjY2I1MmJlNzRlNTk4MmI4ZGRl
MzZjZjdhMzFhYzFlMy4uZDdjNmIwODQyMjJjZmMyYjBjNGZkZTc3ZWU0NGNkNTg2MjI3NjkwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmFja190cmFja2VyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
bmFja190cmFja2VyLmgKQEAgLTExLDExICsxMSwxMiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElP
X0NPRElOR19ORVRFUV9OQUNLX1RSQUNLRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJ
TkdfTkVURVFfTkFDS19UUkFDS0VSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVk
ZWZzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlc19wdWJsaWMuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9ndGVzdF9wcm9kX3V0aWwuaCIKIAogLy8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL25ldGVxLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXEuY2MKaW5kZXggY2YxYzZh
YTY2NTM2NDU1M2YzMDQwNmI3NmFhNDMwYmM2ZjIxOWUyMC4uMGU2MTQ3ZTIzMmNiMTQ3MDE4NWJk
Zjk4NzJhNzA4ZDg1NTVlZjZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXEuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvbmV0ZXEuY2MKQEAgLTEwLDggKzEwLDYgQEAKIAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaCIKIAotI2luY2x1ZGUgPG1l
bW9yeT4KLQogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGwu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBs
LmNjCmluZGV4IGY0MjhiZTFjM2JjODI1MGRjZDE2Y2JmZTA4NmE2Mjk0Mjc2ZWY0NWYuLjJhMDI1
ZjMwNGU1MzdjZTExODAwYjdjOTE2MDAzMmUxOWQyMjQ1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL25ldGVxX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfaW1wbC5jYwpAQCAtMTEs
MTMgKzExLDE2IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFf
aW1wbC5oIgogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPGxpc3Q+CiAj
aW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFs
X3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCisjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2JhY2tncm91bmRfbm9pc2UuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9idWZmZXJfbGV2ZWxfZmlsdGVyLmgiCkBAIC00MCwx
NSArNDMsMTQgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9yZWRfcGF5
bG9hZF9zcGxpdHRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N5
bmNfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGlja190
aW1lci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpbWVfc3RyZXRj
aC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpbWVzdGFtcF9zY2Fs
ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3Nhbml0aXplci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0
cmluZ3MvYXVkaW9fZm9ybWF0X3RvX3N0cmluZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3Rl
bS9mYWxsdGhyb3VnaC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50LmgiCi0jaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKQEAgLTYxLDYgKzYzLDcgQEAgTmV0RXFJbXBsOjpEZXBlbmRlbmNpZXM6OkRl
cGVuZGVuY2llcygKICAgICAgICAgICBuZXcgRGVjb2RlckRhdGFiYXNlKGRlY29kZXJfZmFjdG9y
eSwgY29uZmlnLmNvZGVjX3BhaXJfaWQpKSwKICAgICAgIGRlbGF5X3BlYWtfZGV0ZWN0b3IobmV3
IERlbGF5UGVha0RldGVjdG9yKHRpY2tfdGltZXIuZ2V0KCkpKSwKICAgICAgIGRlbGF5X21hbmFn
ZXIobmV3IERlbGF5TWFuYWdlcihjb25maWcubWF4X3BhY2tldHNfaW5fYnVmZmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5taW5fZGVsYXlfbXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXlfcGVha19kZXRlY3Rvci5nZXQo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrX3RpbWVyLmdldCgp
KSksCiAgICAgICBkdG1mX2J1ZmZlcihuZXcgRHRtZkJ1ZmZlcihjb25maWcuc2FtcGxlX3JhdGVf
aHopKSwKQEAgLTM4NSwyMCArMzg4LDYgQEAgTmV0RXFPcGVyYXRpb25zQW5kU3RhdGUgTmV0RXFJ
bXBsOjpHZXRPcGVyYXRpb25zQW5kU3RhdGUoKSBjb25zdCB7CiAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgTmV0RXFJbXBsOjpHZXRSdGNwU3RhdGlzdGljcyhSdGNwU3RhdGlzdGljcyogc3Rh
dHMpIHsKLSAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF9zZWN0Xyk7Ci0gIGlmIChzdGF0cykg
ewotICAgIHJ0Y3BfLkdldFN0YXRpc3RpY3MoZmFsc2UsIHN0YXRzKTsKLSAgfQotfQotCi12b2lk
IE5ldEVxSW1wbDo6R2V0UnRjcFN0YXRpc3RpY3NOb1Jlc2V0KFJ0Y3BTdGF0aXN0aWNzKiBzdGF0
cykgewotICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0X3NlY3RfKTsKLSAgaWYgKHN0YXRzKSB7
Ci0gICAgcnRjcF8uR2V0U3RhdGlzdGljcyh0cnVlLCBzdGF0cyk7Ci0gIH0KLX0KLQogdm9pZCBO
ZXRFcUltcGw6OkVuYWJsZVZhZCgpIHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF9zZWN0
Xyk7CiAgIGFzc2VydCh2YWRfLmdldCgpKTsKQEAgLTQ3MywxMiArNDYyLDYgQEAgdm9pZCBOZXRF
cUltcGw6OkZsdXNoQnVmZmVycygpIHsKICAgZmlyc3RfcGFja2V0XyA9IHRydWU7CiB9CiAKLXZv
aWQgTmV0RXFJbXBsOjpQYWNrZXRCdWZmZXJTdGF0aXN0aWNzKGludCogY3VycmVudF9udW1fcGFj
a2V0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWF4X251
bV9wYWNrZXRzKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfc2VjdF8pOwot
ICBwYWNrZXRfYnVmZmVyXy0+QnVmZmVyU3RhdChjdXJyZW50X251bV9wYWNrZXRzLCBtYXhfbnVt
X3BhY2tldHMpOwotfQotCiB2b2lkIE5ldEVxSW1wbDo6RW5hYmxlTmFjayhzaXplX3QgbWF4X25h
Y2tfbGlzdF9zaXplKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfc2VjdF8pOwogICBp
ZiAoIW5hY2tfZW5hYmxlZF8pIHsKQEAgLTU3NCw4ICs1NTcsNiBAQCBpbnQgTmV0RXFJbXBsOjpJ
bnNlcnRQYWNrZXRJbnRlcm5hbChjb25zdCBSVFBIZWFkZXImIHJ0cF9oZWFkZXIsCiAgICAgLy8g
Tm90ZTogfGZpcnN0X3BhY2tldF98IHdpbGwgYmUgY2xlYXJlZCBmdXJ0aGVyIGRvd24gaW4gdGhp
cyBtZXRob2QsIG9uY2UKICAgICAvLyB0aGUgcGFja2V0IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBp
bnNlcnRlZCBpbnRvIHRoZSBwYWNrZXQgYnVmZmVyLgogCi0gICAgcnRjcF8uSW5pdChydHBfaGVh
ZGVyLnNlcXVlbmNlTnVtYmVyKTsKLQogICAgIC8vIEZsdXNoIHRoZSBwYWNrZXQgYnVmZmVyIGFu
ZCBEVE1GIGJ1ZmZlci4KICAgICBwYWNrZXRfYnVmZmVyXy0+Rmx1c2goKTsKICAgICBkdG1mX2J1
ZmZlcl8tPkZsdXNoKCk7CkBAIC01OTAsOSArNTcxLDYgQEAgaW50IE5ldEVxSW1wbDo6SW5zZXJ0
UGFja2V0SW50ZXJuYWwoY29uc3QgUlRQSGVhZGVyJiBydHBfaGVhZGVyLAogICAgIHRpbWVzdGFt
cF8gPSBtYWluX3RpbWVzdGFtcDsKICAgfQogCi0gIC8vIFVwZGF0ZSBSVENQIHN0YXRpc3RpY3Ms
IG9ubHkgZm9yIHJlZ3VsYXIgcGFja2V0cy4KLSAgcnRjcF8uVXBkYXRlKHJ0cF9oZWFkZXIsIHJl
Y2VpdmVfdGltZXN0YW1wKTsKLQogICBpZiAobmFja19lbmFibGVkXykgewogICAgIFJUQ19EQ0hF
Q0sobmFja18pOwogICAgIGlmICh1cGRhdGVfc2FtcGxlX3JhdGVfYW5kX2NoYW5uZWxzKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9p
bXBsLmgKaW5kZXggOGVmOTdjZTBhZjM3NmY5NDFlYWQ0YjFlYzNlYWYxZDg4OTZlYzlmMy4uNTI1
YWU2MTVkODU2ZWZkNDJlYTE2ODM3OGI5MjI0YzAzNjJlMTc2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvbmV0ZXFfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGwuaApAQCAtMTcs
MTIgKzE3LDExIEBACiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUg
ImFwaS9hdWRpby9hdWRpb19mcmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2RlZmluZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9kZWZpbmVzLmgiICAvLyBNb2RlcywgT3BlcmF0aW9ucwogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2V4cGFuZF91bWFfbG9nZ2VyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvaW5jbHVkZS9uZXRlcS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3BhY2tldC5oIiAgLy8gRGVjbGFyZSBQYWNrZXRMaXN0LgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldC5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3JhbmRvbV92ZWN0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9ydGNwLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvdGlja190aW1lci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVj
dG9ybWFnaWMuaCIKQEAgLTE3MCwxNyArMTY5LDEwIEBAIGNsYXNzIE5ldEVxSW1wbCA6IHB1Ymxp
YyB3ZWJydGM6Ok5ldEVxIHsKICAgLy8gYWZ0ZXIgdGhlIGNhbGwuCiAgIGludCBOZXR3b3JrU3Rh
dGlzdGljcyhOZXRFcU5ldHdvcmtTdGF0aXN0aWNzKiBzdGF0cykgb3ZlcnJpZGU7CiAKLSAgLy8g
V3JpdGVzIHRoZSBjdXJyZW50IFJUQ1Agc3RhdGlzdGljcyB0byB8c3RhdHN8LiBUaGUgc3RhdGlz
dGljcyBhcmUgcmVzZXQKLSAgLy8gYW5kIGEgbmV3IHJlcG9ydCBwZXJpb2QgaXMgc3RhcnRlZCB3
aXRoIHRoZSBjYWxsLgotICB2b2lkIEdldFJ0Y3BTdGF0aXN0aWNzKFJ0Y3BTdGF0aXN0aWNzKiBz
dGF0cykgb3ZlcnJpZGU7Ci0KICAgTmV0RXFMaWZldGltZVN0YXRpc3RpY3MgR2V0TGlmZXRpbWVT
dGF0aXN0aWNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgTmV0RXFPcGVyYXRpb25zQW5kU3RhdGUg
R2V0T3BlcmF0aW9uc0FuZFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgLy8gU2FtZSBhcyBS
dGNwU3RhdGlzdGljcygpLCBidXQgZG9lcyBub3QgcmVzZXQgYW55dGhpbmcuCi0gIHZvaWQgR2V0
UnRjcFN0YXRpc3RpY3NOb1Jlc2V0KFJ0Y3BTdGF0aXN0aWNzKiBzdGF0cykgb3ZlcnJpZGU7Ci0K
ICAgLy8gRW5hYmxlcyBwb3N0LWRlY29kZSBWQUQuIFdoZW4gZW5hYmxlZCwgR2V0QXVkaW8oKSB3
aWxsIHJldHVybgogICAvLyBrT3V0cHV0VkFEUGFzc2l2ZSB3aGVuIHRoZSBzaWduYWwgY29udGFp
bnMgbm8gc3BlZWNoLgogICB2b2lkIEVuYWJsZVZhZCgpIG92ZXJyaWRlOwpAQCAtMjAwLDkgKzE5
Miw2IEBAIGNsYXNzIE5ldEVxSW1wbCA6IHB1YmxpYyB3ZWJydGM6Ok5ldEVxIHsKICAgLy8gRmx1
c2hlcyBib3RoIHRoZSBwYWNrZXQgYnVmZmVyIGFuZCB0aGUgc3luYyBidWZmZXIuCiAgIHZvaWQg
Rmx1c2hCdWZmZXJzKCkgb3ZlcnJpZGU7CiAKLSAgdm9pZCBQYWNrZXRCdWZmZXJTdGF0aXN0aWNz
KGludCogY3VycmVudF9udW1fcGFja2V0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCogbWF4X251bV9wYWNrZXRzKSBjb25zdCBvdmVycmlkZTsKLQogICB2b2lkIEVuYWJsZU5h
Y2soc2l6ZV90IG1heF9uYWNrX2xpc3Rfc2l6ZSkgb3ZlcnJpZGU7CiAKICAgdm9pZCBEaXNhYmxl
TmFjaygpIG92ZXJyaWRlOwpAQCAtMzk1LDcgKzM4NCw2IEBAIGNsYXNzIE5ldEVxSW1wbCA6IHB1
YmxpYyB3ZWJydGM6Ok5ldEVxIHsKICAgICAgIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8pOwog
ICBSYW5kb21WZWN0b3IgcmFuZG9tX3ZlY3Rvcl8gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7
CiAgIHN0ZDo6dW5pcXVlX3B0cjxDb21mb3J0Tm9pc2U+IGNvbWZvcnRfbm9pc2VfIFJUQ19HVUFS
REVEX0JZKGNyaXRfc2VjdF8pOwotICBSdGNwIHJ0Y3BfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2Vj
dF8pOwogICBTdGF0aXN0aWNzQ2FsY3VsYXRvciBzdGF0c18gUlRDX0dVQVJERURfQlkoY3JpdF9z
ZWN0Xyk7CiAgIGludCBmc19oel8gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CiAgIGludCBm
c19tdWx0XyBSVENfR1VBUkRFRF9CWShjcml0X3NlY3RfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL25ldGVxX2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBsX3VuaXR0
ZXN0LmNjCmluZGV4IGI3NzJkZmE3MWRlMTE5ZmJjYzA0MDZlYjRiZWQ0NjE2MGU0N2Y1ZTguLjBl
MDg3Yzg0N2YxOGZkZmMzNWZkMjhmMzIyZjVmYWIyNTk1MmEwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL25ldGVxX2ltcGxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfaW1w
bF91bml0dGVzdC5jYwpAQCAtOTIsNyArOTIsOCBAQCBjbGFzcyBOZXRFcUltcGxUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CiAKICAgICBpZiAodXNlX21vY2tfZGVsYXlfbWFuYWdlcl8p
IHsKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2NrRGVsYXlNYW5hZ2VyPiBtb2NrKG5ldyBNb2Nr
RGVsYXlNYW5hZ2VyKAotICAgICAgICAgIGNvbmZpZ18ubWF4X3BhY2tldHNfaW5fYnVmZmVyLCBk
ZWxheV9wZWFrX2RldGVjdG9yXywgdGlja190aW1lcl8pKTsKKyAgICAgICAgICBjb25maWdfLm1h
eF9wYWNrZXRzX2luX2J1ZmZlciwgY29uZmlnXy5taW5fZGVsYXlfbXMsCisgICAgICAgICAgZGVs
YXlfcGVha19kZXRlY3Rvcl8sIHRpY2tfdGltZXJfKSk7CiAgICAgICBtb2NrX2RlbGF5X21hbmFn
ZXJfID0gbW9jay5nZXQoKTsKICAgICAgIEVYUEVDVF9DQUxMKCptb2NrX2RlbGF5X21hbmFnZXJf
LCBzZXRfc3RyZWFtaW5nX21vZGUoZmFsc2UpKS5UaW1lcygxKTsKICAgICAgIGRlcHMuZGVsYXlf
bWFuYWdlciA9IHN0ZDo6bW92ZShtb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVx
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfdW5pdHRlc3QuY2MKaW5kZXggM2VlMGI1
YmY2OTNmNTM5ZmZmZTc0NmRkNDQ5ZjQ3OWRhMmYyZjQ0Zi4uZThiNTAyMzc3MDMxNDhhMzNhZWZh
ODM0YzEzYTAzZmM4NWY2ZWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfdW5pdHRlc3QuY2MKQEAgLTIyLDEyICsyMiwx
MiBAQAogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiYXBp
L2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUg
ImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20xNmIuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9hdWRpb19sb29wLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGFja2V0X3NvdXJjZV9pbnB1dC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3Rlc3Qu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9z
b3VyY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRjcF9zdGF0aXN0
aWNzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvaWdub3JlX3d1bmRlZi5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZl
X2NvbnZlcnNpb25zLmgiCkBAIC01Miw3ICs1Miw3IEBAIFJUQ19QVVNIX0lHTk9SSU5HX1dVTkRF
RigpCiBSVENfUE9QX0lHTk9SSU5HX1dVTkRFRigpCiAjZW5kaWYKIAotREVGSU5FX2Jvb2woZ2Vu
X3JlZiwgZmFsc2UsICJHZW5lcmF0ZSByZWZlcmVuY2UgZmlsZXMuIik7CitXRUJSVENfREVGSU5F
X2Jvb2woZ2VuX3JlZiwgZmFsc2UsICJHZW5lcmF0ZSByZWZlcmVuY2UgZmlsZXMuIik7CiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCkBAIC0yMzQsNyArMjM0LDE0IEBAIHZvaWQgUmVzdWx0U2luazo6
VmVyaWZ5Q2hlY2tzdW0oY29uc3Qgc3RkOjpzdHJpbmcmIGNoZWNrc3VtKSB7CiAgIGJ1ZmZlci5y
ZXNpemUoZGlnZXN0Xy0+U2l6ZSgpKTsKICAgZGlnZXN0Xy0+RmluaXNoKCZidWZmZXJbMF0sIGJ1
ZmZlci5zaXplKCkpOwogICBjb25zdCBzdGQ6OnN0cmluZyByZXN1bHQgPSBydGM6OmhleF9lbmNv
ZGUoJmJ1ZmZlclswXSwgZGlnZXN0Xy0+U2l6ZSgpKTsKLSAgRVhQRUNUX0VRKGNoZWNrc3VtLCBy
ZXN1bHQpOworICBpZiAoY2hlY2tzdW0uc2l6ZSgpID09IHJlc3VsdC5zaXplKCkpIHsKKyAgICBF
WFBFQ1RfRVEoY2hlY2tzdW0sIHJlc3VsdCk7CisgIH0gZWxzZSB7CisgICAgLy8gQ2hlY2sgcmVz
dWx0IGlzIG9uZSB0aGUgJ3wnLXNlcGFyYXRlZCBjaGVja3N1bXMuCisgICAgRVhQRUNUX05FKGNo
ZWNrc3VtLmZpbmQocmVzdWx0KSwgc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgICAgIDw8IHJlc3Vs
dCA8PCAiIHNob3VsZCBiZSBvbmUgb2YgdGhlc2U6XG4iCisgICAgICAgIDw8IGNoZWNrc3VtOwor
ICB9CiB9CiAKIGNsYXNzIE5ldEVxRGVjb2RpbmdUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7CkBAIC0yNTgsNyArMjY1LDYgQEAgY2xhc3MgTmV0RXFEZWNvZGluZ1Rlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKICAgdm9pZCBEZWNvZGVBbmRDb21wYXJlKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBydHBfZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBvdXRwdXRfY2hlY2tzdW0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgbmV0d29ya19zdGF0c19jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBydGNwX3N0YXRzX2NoZWNrc3VtLAogICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBnZW5fcmVmKTsKIAogICBzdGF0aWMgdm9pZCBQb3B1bGF0ZVJ0cEluZm8oaW50
IGZyYW1lX2luZGV4LApAQCAtMzY2LDcgKzM3Miw2IEBAIHZvaWQgTmV0RXFEZWNvZGluZ1Rlc3Q6
OkRlY29kZUFuZENvbXBhcmUoCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJ0cF9maWxlLAogICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfY2hlY2tzdW0sCiAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIG5ldHdvcmtfc3RhdHNfY2hlY2tzdW0sCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJ0Y3Bf
c3RhdHNfY2hlY2tzdW0sCiAgICAgYm9vbCBnZW5fcmVmKSB7CiAgIE9wZW5JbnB1dEZpbGUocnRw
X2ZpbGUpOwogCkBAIC0zNzgsMTAgKzM4Myw2IEBAIHZvaWQgTmV0RXFEZWNvZGluZ1Rlc3Q6OkRl
Y29kZUFuZENvbXBhcmUoCiAgICAgICBnZW5fcmVmID8gd2VicnRjOjp0ZXN0OjpPdXRwdXRQYXRo
KCkgKyAibmV0ZXFfbmV0d29ya19zdGF0cy5kYXQiIDogIiI7CiAgIFJlc3VsdFNpbmsgbmV0d29y
a19zdGF0cyhzdGF0X291dF9maWxlKTsKIAotICBzdGQ6OnN0cmluZyBydGNwX291dF9maWxlID0K
LSAgICAgIGdlbl9yZWYgPyB3ZWJydGM6OnRlc3Q6Ok91dHB1dFBhdGgoKSArICJuZXRlcV9ydGNw
X3N0YXRzLmRhdCIgOiAiIjsKLSAgUmVzdWx0U2luayBydGNwX3N0YXRzKHJ0Y3Bfb3V0X2ZpbGUp
OwotCiAgIHBhY2tldF8gPSBydHBfc291cmNlXy0+TmV4dFBhY2tldCgpOwogICBpbnQgaSA9IDA7
CiAgIHVpbnQ2NF90IGxhc3RfY29uY2VhbGVkX3NhbXBsZXMgPSAwOwpAQCAtNDE4LDExICs0MTks
NiBAQCB2b2lkIE5ldEVxRGVjb2RpbmdUZXN0OjpEZWNvZGVBbmRDb21wYXJlKAogICAgICAgRVhQ
RUNUX05FQVIoCiAgICAgICAgICAgKGRlbHRhX2NvbmNlYWxlZF9zYW1wbGVzIDw8IDE0KSAvIGRl
bHRhX3RvdGFsX3NhbXBsZXNfcmVjZWl2ZWQsCiAgICAgICAgICAgY3VycmVudF9uZXR3b3JrX3N0
YXRzLmV4cGFuZF9yYXRlLCAoMiA8PCAxNCkgLyAxMDAuMCk7Ci0KLSAgICAgIC8vIFByb2Nlc3Mg
UlRDUHN0YXQuCi0gICAgICBSdGNwU3RhdGlzdGljcyBjdXJyZW50X3J0Y3Bfc3RhdHM7Ci0gICAg
ICBuZXRlcV8tPkdldFJ0Y3BTdGF0aXN0aWNzKCZjdXJyZW50X3J0Y3Bfc3RhdHMpOwotICAgICAg
QVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUocnRjcF9zdGF0cy5BZGRSZXN1bHQoY3VycmVudF9ydGNw
X3N0YXRzKSk7CiAgICAgfQogICB9CiAKQEAgLTQzMCw4ICs0MjYsNiBAQCB2b2lkIE5ldEVxRGVj
b2RpbmdUZXN0OjpEZWNvZGVBbmRDb21wYXJlKAogICBvdXRwdXQuVmVyaWZ5Q2hlY2tzdW0ob3V0
cHV0X2NoZWNrc3VtKTsKICAgU0NPUEVEX1RSQUNFKCJDaGVjayBuZXR3b3JrIHN0YXRzLiIpOwog
ICBuZXR3b3JrX3N0YXRzLlZlcmlmeUNoZWNrc3VtKG5ldHdvcmtfc3RhdHNfY2hlY2tzdW0pOwot
ICBTQ09QRURfVFJBQ0UoIkNoZWNrIHJ0Y3Agc3RhdHMuIik7Ci0gIHJ0Y3Bfc3RhdHMuVmVyaWZ5
Q2hlY2tzdW0ocnRjcF9zdGF0c19jaGVja3N1bSk7CiB9CiAKIHZvaWQgTmV0RXFEZWNvZGluZ1Rl
c3Q6OlBvcHVsYXRlUnRwSW5mbyhpbnQgZnJhbWVfaW5kZXgsCkBAIC00ODEsMTQgKzQ3NSw4IEBA
IFRFU1RfRihOZXRFcURlY29kaW5nVGVzdCwgTUFZQkVfVGVzdEJpdEV4YWN0bmVzcykgewogICAg
ICAgICAgICAgICAgICAgICAgICAiNGIyMzcwZjVjNzk0NzQxZDJhNDZiZTVjNzkzNWM2NmVmM2Zi
NTNlOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICI0YjIzNzBmNWM3OTQ3NDFkMmE0NmJlNWM3
OTM1YzY2ZWYzZmI1M2U5Iik7CiAKLSAgY29uc3Qgc3RkOjpzdHJpbmcgcnRjcF9zdGF0c19jaGVj
a3N1bSA9Ci0gICAgICBQbGF0Zm9ybUNoZWNrc3VtKCJiODg4MGJmOWZlZDI0ODdlZmJkZGNiOGQ5
NGI5OTM3YTI5YWU1MjFkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgImYzZjdiM2QzZTcxZDdl
NjM1MjQwYjUzNzNiNTdkZjZhN2U0Y2U5ZDQiLCAibm90IHVzZWQiLAotICAgICAgICAgICAgICAg
ICAgICAgICAiYjg4ODBiZjlmZWQyNDg3ZWZiZGRjYjhkOTRiOTkzN2EyOWFlNTIxZCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICJiODg4MGJmOWZlZDI0ODdlZmJkZGNiOGQ5NGI5OTM3YTI5YWU1
MjFkIik7Ci0KICAgRGVjb2RlQW5kQ29tcGFyZShpbnB1dF9ydHBfZmlsZSwgb3V0cHV0X2NoZWNr
c3VtLCBuZXR3b3JrX3N0YXRzX2NoZWNrc3VtLAotICAgICAgICAgICAgICAgICAgIHJ0Y3Bfc3Rh
dHNfY2hlY2tzdW0sIEZMQUdfZ2VuX3JlZik7CisgICAgICAgICAgICAgICAgICAgRkxBR19nZW5f
cmVmKTsKIH0KIAogI2lmICFkZWZpbmVkKFdFQlJUQ19JT1MpICYmIGRlZmluZWQoV0VCUlRDX05F
VEVRX1VOSVRURVNUX0JJVEVYQUNUKSAmJiBcCkBAIC01MDEsMTIgKzQ4OSwxMyBAQCBURVNUX0Yo
TmV0RXFEZWNvZGluZ1Rlc3QsIE1BWUJFX1Rlc3RPcHVzQml0RXhhY3RuZXNzKSB7CiAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGlucHV0X3J0cF9maWxlID0KICAgICAgIHdlYnJ0Yzo6dGVzdDo6UmVzb3Vy
Y2VQYXRoKCJhdWRpb19jb2RpbmcvbmV0ZXFfb3B1cyIsICJydHAiKTsKIAotICBjb25zdCBzdGQ6
OnN0cmluZyBvdXRwdXRfY2hlY2tzdW0gPQotICAgICAgUGxhdGZvcm1DaGVja3N1bSgiMTRhNjNi
M2M3YjkyNWM4MjI5NmJlNGJhZmM3MWJlYzg1ZjI5MTVjMiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICJiN2I3ZWQ4MDJiMGUxOGVlNDE2OTczYmYzYjlhZTk4NTk5YjAxODFkIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIjU4NzZlNTJkZGE5MGQ1Y2E0MzNjMzcyNjU1NWI5MDdiOTdjODYzNzQi
LAotICAgICAgICAgICAgICAgICAgICAgICAiMTRhNjNiM2M3YjkyNWM4MjI5NmJlNGJhZmM3MWJl
Yzg1ZjI5MTVjMiIsCi0gICAgICAgICAgICAgICAgICAgICAgICIxNGE2M2IzYzdiOTI1YzgyMjk2
YmU0YmFmYzcxYmVjODVmMjkxNWMyIik7CisgIC8vIENoZWNrc3VtIGRlcGVuZHMgb24gbGlib3B1
cyBiZWluZyBjb21waWxlZCB3aXRoIG9yIHdpdGhvdXQgU1NFLgorICBjb25zdCBzdGQ6OnN0cmlu
ZyBtYXliZV9zc2UgPQorICAgICAgIjE0YTYzYjNjN2I5MjVjODIyOTZiZTRiYWZjNzFiZWM4NWYy
OTE1YzJ8IgorICAgICAgIjJjMDU2NzdkYWE5NjhkNmM2OGI5MmFkZjRhZmZiN2NkOWJiNGQzNjMi
OworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfY2hlY2tzdW0gPSBQbGF0Zm9ybUNoZWNrc3Vt
KAorICAgICAgbWF5YmVfc3NlLCAiYjdiN2VkODAyYjBlMThlZTQxNjk3M2JmM2I5YWU5ODU5OWIw
MTgxZCIsCisgICAgICAiNTg3NmU1MmRkYTkwZDVjYTQzM2MzNzI2NTU1YjkwN2I5N2M4NjM3NCIs
IG1heWJlX3NzZSwgbWF5YmVfc3NlKTsKIAogICBjb25zdCBzdGQ6OnN0cmluZyBuZXR3b3JrX3N0
YXRzX2NoZWNrc3VtID0KICAgICAgIFBsYXRmb3JtQ2hlY2tzdW0oImFkYjMyNzI0OThlNDM2ZDFj
MDE5Y2JmZDcxNjEwZTk1MTBjNTQ0OTciLApAQCAtNTE1LDE1ICs1MDQsOCBAQCBURVNUX0YoTmV0
RXFEZWNvZGluZ1Rlc3QsIE1BWUJFX1Rlc3RPcHVzQml0RXhhY3RuZXNzKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICJhZGIzMjcyNDk4ZTQzNmQxYzAxOWNiZmQ3MTYxMGU5NTEwYzU0NDk3IiwK
ICAgICAgICAgICAgICAgICAgICAgICAgImFkYjMyNzI0OThlNDM2ZDFjMDE5Y2JmZDcxNjEwZTk1
MTBjNTQ0OTciKTsKIAotICBjb25zdCBzdGQ6OnN0cmluZyBydGNwX3N0YXRzX2NoZWNrc3VtID0K
LSAgICAgIFBsYXRmb3JtQ2hlY2tzdW0oImUzN2M3OTdlM2RlNmE2NGRkYTg4YzlhZGU3YTAxM2Qw
MjJhMmUxZTAiLAotICAgICAgICAgICAgICAgICAgICAgICAiZTM3Yzc5N2UzZGU2YTY0ZGRhODhj
OWFkZTdhMDEzZDAyMmEyZTFlMCIsCi0gICAgICAgICAgICAgICAgICAgICAgICJlMzdjNzk3ZTNk
ZTZhNjRkZGE4OGM5YWRlN2EwMTNkMDIyYTJlMWUwIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ImUzN2M3OTdlM2RlNmE2NGRkYTg4YzlhZGU3YTAxM2QwMjJhMmUxZTAiLAotICAgICAgICAgICAg
ICAgICAgICAgICAiZTM3Yzc5N2UzZGU2YTY0ZGRhODhjOWFkZTdhMDEzZDAyMmEyZTFlMCIpOwot
CiAgIERlY29kZUFuZENvbXBhcmUoaW5wdXRfcnRwX2ZpbGUsIG91dHB1dF9jaGVja3N1bSwgbmV0
d29ya19zdGF0c19jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAgICBydGNwX3N0YXRzX2NoZWNr
c3VtLCBGTEFHX2dlbl9yZWYpOworICAgICAgICAgICAgICAgICAgIEZMQUdfZ2VuX3JlZik7CiB9
CiAKICNpZiAhZGVmaW5lZChXRUJSVENfSU9TKSAmJiBkZWZpbmVkKFdFQlJUQ19ORVRFUV9VTklU
VEVTVF9CSVRFWEFDVCkgJiYgXApAQCAtNTM2LDIxICs1MTgsMTggQEAgVEVTVF9GKE5ldEVxRGVj
b2RpbmdUZXN0LCBNQVlCRV9UZXN0T3B1c0R0eEJpdEV4YWN0bmVzcykgewogICBjb25zdCBzdGQ6
OnN0cmluZyBpbnB1dF9ydHBfZmlsZSA9CiAgICAgICB3ZWJydGM6OnRlc3Q6OlJlc291cmNlUGF0
aCgiYXVkaW9fY29kaW5nL25ldGVxX29wdXNfZHR4IiwgInJ0cCIpOwogCi0gIGNvbnN0IHN0ZDo6
c3RyaW5nIG91dHB1dF9jaGVja3N1bSA9Ci0gICAgICBQbGF0Zm9ybUNoZWNrc3VtKCI3MTNhZjZj
OTI4ODFmNWFhYjEyODU3NjVlZTY2ODBkYTlkMWMwNmNlIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIjNlYzk5MWI5Njg3MjEyM2YxNTU0YzAzYzU0M2NhNWQ1MTg0MzFlNDYiLAotICAgICAgICAg
ICAgICAgICAgICAgICAiZGE5ZjlhMmQ5NGUwYzJkNjczNDJmYWQ0OTY1ZDdiOTFjZGE1MGIyNSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICI3MTNhZjZjOTI4ODFmNWFhYjEyODU3NjVlZTY2ODBk
YTlkMWMwNmNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIjcxM2FmNmM5Mjg4MWY1YWFiMTI4
NTc2NWVlNjY4MGRhOWQxYzA2Y2UiKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbWF5YmVfc3NlID0K
KyAgICAgICI3MTNhZjZjOTI4ODFmNWFhYjEyODU3NjVlZTY2ODBkYTlkMWMwNmNlfCIKKyAgICAg
ICIyYWMxMGM0ZTc5YWVlZGQwZGYyODYzYjA3OWRhNTg0OGI0MGYwMGI1IjsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgb3V0cHV0X2NoZWNrc3VtID0gUGxhdGZvcm1DaGVja3N1bSgKKyAgICAgIG1heWJl
X3NzZSwgIjNlYzk5MWI5Njg3MjEyM2YxNTU0YzAzYzU0M2NhNWQ1MTg0MzFlNDYiLAorICAgICAg
ImRhOWY5YTJkOTRlMGMyZDY3MzQyZmFkNDk2NWQ3YjkxY2RhNTBiMjUiLCBtYXliZV9zc2UsIG1h
eWJlX3NzZSk7CiAKICAgY29uc3Qgc3RkOjpzdHJpbmcgbmV0d29ya19zdGF0c19jaGVja3N1bSA9
CiAgICAgICAiYmFiNThkYzU4N2Q5NTZmMzI2MDU2ZDczNDBjOTZlYjlkMmQzY2MyMSI7CiAKLSAg
Y29uc3Qgc3RkOjpzdHJpbmcgcnRjcF9zdGF0c19jaGVja3N1bSA9Ci0gICAgICAiYWMyN2E3ZjMw
NWVmYjU4YjM5YmYxMjNkY2NlZTI1ZGVlNTc1OGU2MyI7Ci0KICAgRGVjb2RlQW5kQ29tcGFyZShp
bnB1dF9ydHBfZmlsZSwgb3V0cHV0X2NoZWNrc3VtLCBuZXR3b3JrX3N0YXRzX2NoZWNrc3VtLAot
ICAgICAgICAgICAgICAgICAgIHJ0Y3Bfc3RhdHNfY2hlY2tzdW0sIEZMQUdfZ2VuX3JlZik7Cisg
ICAgICAgICAgICAgICAgICAgRkxBR19nZW5fcmVmKTsKIH0KIAogLy8gVXNlIGZheCBtb2RlIHRv
IGF2b2lkIHRpbWUtc2NhbGluZy4gVGhpcyBpcyB0byBzaW1wbGlmeSB0aGUgdGVzdGluZyBvZgpA
QCAtMTc0MCw3ICsxNzE5LDcgQEAgVEVTVChOZXRFcU5vVGltZVN0cmV0Y2hpbmdNb2RlLCBSdW5U
ZXN0KSB7CiAgICAgICB7OCwga1J0cEV4dGVuc2lvblZpZGVvVGltaW5nfX07CiAgIHN0ZDo6dW5p
cXVlX3B0cjxOZXRFcUlucHV0PiBpbnB1dChuZXcgTmV0RXFSdHBEdW1wSW5wdXQoCiAgICAgICB3
ZWJydGM6OnRlc3Q6OlJlc291cmNlUGF0aCgiYXVkaW9fY29kaW5nL25ldGVxX3VuaXZlcnNhbF9u
ZXciLCAicnRwIiksCi0gICAgICBydHBfZXh0X21hcCkpOworICAgICAgcnRwX2V4dF9tYXAsIGFi
c2w6Om51bGxvcHQgLypObyBTU1JDIGZpbHRlciovKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1l
TGltaXRlZE5ldEVxSW5wdXQ+IGlucHV0X3RpbWVfbGltaXQoCiAgICAgICBuZXcgVGltZUxpbWl0
ZWROZXRFcUlucHV0KHN0ZDo6bW92ZShpbnB1dCksIDIwMDAwKSk7CiAgIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb1Npbms+IG91dHB1dChuZXcgVm9pZEF1ZGlvU2luayk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9ub3JtYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25vcm1hbC5oCmluZGV4IGIxM2YxNmU1MGRj
ODE4ZDFjMDg2MWVjYzFmZGMyMzljOTg3N2E5MmUuLjgwNDUxYjUwMDc4MTNmYTcxMzk2Yjg3MWJl
NTVjZGQ4MTM1Mjg1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25vcm1hbC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL25vcm1hbC5oCkBAIC0xMSwxMSArMTEsOSBAQAogI2lmbmRlZiBNT0RVTEVTX0FV
RElPX0NPRElOR19ORVRFUV9OT1JNQUxfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdf
TkVURVFfTk9STUFMX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmcu
aD4gIC8vIEFjY2VzcyB0byBzaXplX3QuCiAKLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgpA
QCAtMjQsNiArMjIsNyBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEZvcndhcmQgZGVjbGFy
YXRpb25zLgorY2xhc3MgQXVkaW9NdWx0aVZlY3RvcjsKIGNsYXNzIEJhY2tncm91bmROb2lzZTsK
IGNsYXNzIERlY29kZXJEYXRhYmFzZTsKIGNsYXNzIEV4cGFuZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3BhY2tldC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0LmgKaW5kZXggNDVjNTZlMWI2ODZi
MzUzYmRmZTk0N2U1N2M3MTBlYjhjMDBlN2NkOS4uMzU4ZDhmYTFhYmI4ZjhiOWUwOTdmZTE3NTU0
NWJhODY5ZWYxZmRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvcGFja2V0LmgKQEAgLTExLDEyICsxMSwxNCBAQAogI2lmbmRlZiBNT0RVTEVTX0FV
RElPX0NPRElOR19ORVRFUV9QQUNLRVRfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdf
TkVURVFfUEFDS0VUX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxsaXN0Pgog
I2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVj
b2Rlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpY2tfdGltZXIu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Bh
Y2tldF9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRfYnVmZmVyLmNjCmluZGV4IGViYTRk
M2U2OGI2NmQ2ZTU3MWU5YzA2ZTQ1NTczODE3YWY3ZGE5NzguLjM0Mzc2M2I0ZTRkODEzZmE2MTA1
YzNhYjk5ZTZmZWE3MDYwNjYyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldF9idWZm
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0X2J1ZmZlci5jYwpAQCAtMTQsMTIgKzE0LDE3
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRfYnVmZmVy
LmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBmaW5kX2lmKCkKKyNpbmNsdWRlIDxhbGdv
cml0aG0+CisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dHlw
ZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2Rl
Y3MvYXVkaW9fZGVjb2Rlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L2RlY29kZXJfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9zdGF0aXN0aWNzX2NhbGN1bGF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS90aWNrX3RpbWVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTI5NCw5
ICsyOTksNCBAQCBib29sIFBhY2tldEJ1ZmZlcjo6Q29udGFpbnNEdHhPckNuZ1BhY2tldCgKICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFBhY2tldEJ1ZmZlcjo6QnVmZmVyU3RhdChpbnQqIG51
bV9wYWNrZXRzLCBpbnQqIG1heF9udW1fcGFja2V0cykgY29uc3QgewotICAqbnVtX3BhY2tldHMg
PSBzdGF0aWNfY2FzdDxpbnQ+KGJ1ZmZlcl8uc2l6ZSgpKTsKLSAgKm1heF9udW1fcGFja2V0cyA9
IHN0YXRpY19jYXN0PGludD4obWF4X251bWJlcl9vZl9wYWNrZXRzXyk7Ci19Ci0KIH0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldF9idWZmZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL3BhY2tldF9idWZmZXIuaAppbmRleCA3ZTM0YzFlOWZjZTBiODAwM2Q0Mzc4
NjYyNTY0MGMzYzIyZjUwNWNlLi4wZjVjZDdmOGVkNWRhY2QwNWM3MDUxNzA2YjZkNWYwMDVmYWI0
ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRfYnVmZmVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvcGFja2V0X2J1ZmZlci5oCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2Rl
Y29kZXJfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9w
YWNrZXQuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5o
IiAgLy8gSXNOZXdlclRpbWVzdGFtcAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFn
aWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0xMjUsOCArMTI1LDYgQEAgY2xhc3MgUGFj
a2V0QnVmZmVyIHsKICAgdmlydHVhbCBib29sIENvbnRhaW5zRHR4T3JDbmdQYWNrZXQoCiAgICAg
ICBjb25zdCBEZWNvZGVyRGF0YWJhc2UqIGRlY29kZXJfZGF0YWJhc2UpIGNvbnN0OwogCi0gIHZp
cnR1YWwgdm9pZCBCdWZmZXJTdGF0KGludCogbnVtX3BhY2tldHMsIGludCogbWF4X251bV9wYWNr
ZXRzKSBjb25zdDsKLQogICAvLyBTdGF0aWMgbWV0aG9kIHJldHVybmluZyB0cnVlIGlmIHx0aW1l
c3RhbXB8IGlzIG9sZGVyIHRoYW4gfHRpbWVzdGFtcF9saW1pdHwKICAgLy8gYnV0IGxlc3MgdGhh
biB8aG9yaXpvbl9zYW1wbGVzfCBiZWhpbmQgfHRpbWVzdGFtcF9saW1pdHwuIEZvciBpbnN0YW5j
ZSwKICAgLy8gd2l0aCB0aW1lc3RhbXBfbGltaXQgPSAxMDAgYW5kIGhvcml6b25fc2FtcGxlcyA9
IDEwLCBhIHRpbWVzdGFtcCBpbiB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Bvc3RfZGVj
b2RlX3ZhZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcG9zdF9kZWNvZGVfdmFkLmgKaW5kZXggYWQ0ZjA4MjNi
YjdhNWQ3MmM4MTExZTA3NTgxNDFmMzRmNzZjOTk2ZC4uMjdkNjlhNmVlYjIyODBhZmI4MzRlNjgz
YjlmMmRhMWE0YjhkMzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcG9zdF9kZWNvZGVfdmFk
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvcG9zdF9kZWNvZGVfdmFkLmgKQEAgLTExLDEzICsxMSwxMSBA
QAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9QT1NUX0RFQ09ERV9WQURfSF8K
ICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfUE9TVF9ERUNPREVfVkFEX0hfCiAK
LSNpbmNsdWRlIDxzdHJpbmc+ICAvLyBzaXplX3QKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNs
dWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rl
ci5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby92YWQvaW5jbHVkZS93ZWJydGNfdmFkLmgiCi0j
aW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkgIC8vIE5V
TEwKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWZpbmVzLmgiCi0jaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3ByZWVtcHRpdmVfZXhwYW5kLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcHJlZW1w
dGl2ZV9leHBhbmQuY2MKaW5kZXggNjE1OWE5Y2IxNWQ3MGU2NzA4NmRmZjFmN2VmMGMwMjVjNzUx
ZjM5My4uY2FkOGQ2YTUwZjZjY2QyYTUwZGEyNTk0YmJhNzliMDc0MWRmNzIyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvcHJlZW1wdGl2ZV9leHBhbmQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcHJl
ZW1wdGl2ZV9leHBhbmQuY2MKQEAgLTEwLDkgKzEwLDExIEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9wcmVlbXB0aXZlX2V4cGFuZC5oIgogCi0jaW5jbHVkZSA8YWxn
b3JpdGhtPiAgLy8gbWluLCBtYXgKKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKLSNpbmNsdWRlICJj
b21tb25fYXVkaW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19s
aWJyYXJ5LmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aW1lX3N0cmV0Y2guaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3ByZWVtcHRpdmVfZXhwYW5kLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9wcmVlbXB0aXZlX2V4cGFuZC5oCmluZGV4IGFjZTY0OGYxNWNjZTI1NzEwOTk3NmJi
ZWM4OGRjODdiMGExMjVmNTMuLjBmN2IzYmM4YWNmMThiZDNjZTllNmZjZWRkZWZmYzhhZWVmNWEz
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3ByZWVtcHRpdmVfZXhwYW5kLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvcHJlZW1wdGl2ZV9leHBhbmQuaApAQCAtMTEsMTMgKzExLDE1IEBACiAjaWZuZGVm
IE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1BSRUVNUFRJVkVfRVhQQU5EX0hfCiAjZGVmaW5l
IE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1BSRUVNUFRJVkVfRVhQQU5EX0hfCiAKLSNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKKyNp
bmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpbWVfc3RyZXRjaC5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLS8vIEZvcndhcmQg
ZGVjbGFyYXRpb25zLgorY2xhc3MgQXVkaW9NdWx0aVZlY3RvcjsKIGNsYXNzIEJhY2tncm91bmRO
b2lzZTsKIAogLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBQcmVlbXB0aXZlRXhwYW5kIG9w
ZXJhdGlvbi4gTW9zdCBvZiB0aGUgd29yayBpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcmVk
X3BheWxvYWRfc3BsaXR0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9yZWRfcGF5bG9hZF9zcGxpdHRlci5j
YwppbmRleCBmNTQzNWU4ZWFiNGFkMWVmYjk2ZDNhMDM5Zjk2NzZkY2I4MjlmYzcwLi4yZGZlODM4
NmZmOWE5NGVlYTk3ZWUyN2ZhNzQzNjU3NGNlYjdmMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9yZWRfcGF5bG9hZF9zcGxpdHRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9yZWRfcGF5bG9hZF9z
cGxpdHRlci5jYwpAQCAtMTEsMTAgKzExLDE1IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuaCIKIAogI2luY2x1ZGUgPGFzc2VydC5o
PgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8bGlz
dD4KKyNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2UuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9w
YWNrZXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9u
cy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9yZWRfcGF5bG9hZF9zcGxpdHRlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuaAppbmRleCA1ZTIzOWRkYzcwODI2MGU2
NmZmNGVhMzYxYzVjYzI2MTE3NTY0YjQ2Li41NTA2M2U3NDE3NjllMGMwMzFiOTJiYTBmMDc1M2E5
MGZlZDBmNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9yZWRfcGF5bG9hZF9zcGxpdHRlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3JlZF9wYXlsb2FkX3NwbGl0dGVyLmgKQEAgLTE2LDcgKzE2LDYg
QEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLS8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgogY2xh
c3MgRGVjb2RlckRhdGFiYXNlOwogCiAvLyBUaGlzIGNsYXNzIGhhbmRsZXMgc3BsaXR0aW5nIG9m
IFJFRCBwYXlsb2FkcyBpbnRvIHNtYWxsZXIgcGFydHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9ydGNwLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcnRjcC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTUxZWI1Zjc1YjQwMWZmYjJmOTU4MjhiMjgyZDhmZGQ1YWZjYTljMi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ydGNwLmNj
CisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIw
MTEgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0K
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ydGNwLmgiCi0KLSNpbmNsdWRl
IDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4K
LQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLXZvaWQgUnRjcDo6SW5pdCh1aW50MTZfdCBzdGFydF9z
ZXF1ZW5jZV9udW1iZXIpIHsKLSAgY3ljbGVzXyA9IDA7Ci0gIG1heF9zZXFfbm9fID0gc3RhcnRf
c2VxdWVuY2VfbnVtYmVyOwotICBiYXNlX3NlcV9ub18gPSBzdGFydF9zZXF1ZW5jZV9udW1iZXI7
Ci0gIHJlY2VpdmVkX3BhY2tldHNfID0gMDsKLSAgcmVjZWl2ZWRfcGFja2V0c19wcmlvcl8gPSAw
OwotICBleHBlY3RlZF9wcmlvcl8gPSAwOwotICBqaXR0ZXJfID0gMDsKLSAgdHJhbnNpdF8gPSAw
OwotfQotCi12b2lkIFJ0Y3A6OlVwZGF0ZShjb25zdCBSVFBIZWFkZXImIHJ0cF9oZWFkZXIsIHVp
bnQzMl90IHJlY2VpdmVfdGltZXN0YW1wKSB7Ci0gIC8vIFVwZGF0ZSBudW1iZXIgb2YgcmVjZWl2
ZWQgcGFja2V0cywgYW5kIGxhcmdlc3QgcGFja2V0IG51bWJlciByZWNlaXZlZC4KLSAgcmVjZWl2
ZWRfcGFja2V0c18rKzsKLSAgaW50MTZfdCBzbl9kaWZmID0gcnRwX2hlYWRlci5zZXF1ZW5jZU51
bWJlciAtIG1heF9zZXFfbm9fOwotICBpZiAoc25fZGlmZiA+PSAwKSB7Ci0gICAgaWYgKHJ0cF9o
ZWFkZXIuc2VxdWVuY2VOdW1iZXIgPCBtYXhfc2VxX25vXykgewotICAgICAgLy8gV3JhcC1hcm91
bmQgZGV0ZWN0ZWQuCi0gICAgICBjeWNsZXNfKys7Ci0gICAgfQotICAgIG1heF9zZXFfbm9fID0g
cnRwX2hlYWRlci5zZXF1ZW5jZU51bWJlcjsKLSAgfQotCi0gIC8vIENhbGN1bGF0ZSBqaXR0ZXIg
YWNjb3JkaW5nIHRvIFJGQyAzNTUwLCBhbmQgdXBkYXRlIHByZXZpb3VzIHRpbWVzdGFtcHMuCi0g
IC8vIE5vdGUgdGhhdCB0aGUgdmFsdWUgaW4gfGppdHRlcl98IGlzIGluIFE0LgotICBpZiAocmVj
ZWl2ZWRfcGFja2V0c18gPiAxKSB7Ci0gICAgaW50MzJfdCB0c19kaWZmID0gcmVjZWl2ZV90aW1l
c3RhbXAgLSAocnRwX2hlYWRlci50aW1lc3RhbXAgLSB0cmFuc2l0Xyk7Ci0gICAgaW50NjRfdCBq
aXR0ZXJfZGlmZiA9IChzdGQ6OmFicyhpbnQ2NF90e3RzX2RpZmZ9KSA8PCA0KSAtIGppdHRlcl87
Ci0gICAgLy8gQ2FsY3VsYXRlIDE1ICogaml0dGVyXyAvIDE2ICsgaml0dGVyX2RpZmYgLyAxNiAo
d2l0aCBwcm9wZXIgcm91bmRpbmcpLgotICAgIGppdHRlcl8gPSBqaXR0ZXJfICsgKChqaXR0ZXJf
ZGlmZiArIDgpID4+IDQpOwotICAgIFJUQ19EQ0hFQ0tfR0Uoaml0dGVyXywgMCk7Ci0gIH0KLSAg
dHJhbnNpdF8gPSBydHBfaGVhZGVyLnRpbWVzdGFtcCAtIHJlY2VpdmVfdGltZXN0YW1wOwotfQot
Ci12b2lkIFJ0Y3A6OkdldFN0YXRpc3RpY3MoYm9vbCBub19yZXNldCwgUnRjcFN0YXRpc3RpY3Mq
IHN0YXRzKSB7Ci0gIC8vIEV4dGVuZGVkIGhpZ2hlc3Qgc2VxdWVuY2UgbnVtYmVyIHJlY2VpdmVk
LgotICBzdGF0cy0+ZXh0ZW5kZWRfaGlnaGVzdF9zZXF1ZW5jZV9udW1iZXIgPQotICAgICAgKHN0
YXRpY19jYXN0PGludD4oY3ljbGVzXykgPDwgMTYpICsgbWF4X3NlcV9ub187Ci0KLSAgLy8gQ2Fs
Y3VsYXRlIGV4cGVjdGVkIG51bWJlciBvZiBwYWNrZXRzIGFuZCBjb21wYXJlIGl0IHdpdGggdGhl
IG51bWJlciBvZgotICAvLyBwYWNrZXRzIHRoYXQgd2VyZSBhY3R1YWxseSByZWNlaXZlZC4gVGhl
IGN1bXVsYXRpdmUgbnVtYmVyIG9mIGxvc3QgcGFja2V0cwotICAvLyBjYW4gYmUgZXh0cmFjdGVk
LgotICB1aW50MzJfdCBleHBlY3RlZF9wYWNrZXRzID0KLSAgICAgIHN0YXRzLT5leHRlbmRlZF9o
aWdoZXN0X3NlcXVlbmNlX251bWJlciAtIGJhc2Vfc2VxX25vXyArIDE7Ci0gIGlmIChyZWNlaXZl
ZF9wYWNrZXRzXyA9PSAwKSB7Ci0gICAgLy8gTm8gcGFja2V0cyByZWNlaXZlZCwgYXNzdW1lIG5v
bmUgbG9zdC4KLSAgICBzdGF0cy0+cGFja2V0c19sb3N0ID0gMDsKLSAgfSBlbHNlIGlmIChleHBl
Y3RlZF9wYWNrZXRzID4gcmVjZWl2ZWRfcGFja2V0c18pIHsKLSAgICBzdGF0cy0+cGFja2V0c19s
b3N0ID0gZXhwZWN0ZWRfcGFja2V0cyAtIHJlY2VpdmVkX3BhY2tldHNfOwotICAgIGlmIChzdGF0
cy0+cGFja2V0c19sb3N0ID4gMHhGRkZGRkYpIHsKLSAgICAgIHN0YXRzLT5wYWNrZXRzX2xvc3Qg
PSAweEZGRkZGRjsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgc3RhdHMtPnBhY2tldHNfbG9zdCA9
IDA7Ci0gIH0KLQotICAvLyBGcmFjdGlvbiBsb3N0IHNpbmNlIGxhc3QgcmVwb3J0LgotICB1aW50
MzJfdCBleHBlY3RlZF9zaW5jZV9sYXN0ID0gZXhwZWN0ZWRfcGFja2V0cyAtIGV4cGVjdGVkX3By
aW9yXzsKLSAgdWludDMyX3QgcmVjZWl2ZWRfc2luY2VfbGFzdCA9IHJlY2VpdmVkX3BhY2tldHNf
IC0gcmVjZWl2ZWRfcGFja2V0c19wcmlvcl87Ci0gIGlmICghbm9fcmVzZXQpIHsKLSAgICBleHBl
Y3RlZF9wcmlvcl8gPSBleHBlY3RlZF9wYWNrZXRzOwotICAgIHJlY2VpdmVkX3BhY2tldHNfcHJp
b3JfID0gcmVjZWl2ZWRfcGFja2V0c187Ci0gIH0KLSAgaW50MzJfdCBsb3N0ID0gZXhwZWN0ZWRf
c2luY2VfbGFzdCAtIHJlY2VpdmVkX3NpbmNlX2xhc3Q7Ci0gIGlmIChleHBlY3RlZF9zaW5jZV9s
YXN0ID09IDAgfHwgbG9zdCA8PSAwIHx8IHJlY2VpdmVkX3BhY2tldHNfID09IDApIHsKLSAgICBz
dGF0cy0+ZnJhY3Rpb25fbG9zdCA9IDA7Ci0gIH0gZWxzZSB7Ci0gICAgc3RhdHMtPmZyYWN0aW9u
X2xvc3QgPSBzdGQ6Om1pbigweEZGVSwgKGxvc3QgPDwgOCkgLyBleHBlY3RlZF9zaW5jZV9sYXN0
KTsKLSAgfQotCi0gIHN0YXRzLT5qaXR0ZXIgPSBqaXR0ZXJfID4+IDQ7ICAvLyBTY2FsaW5nIGZy
b20gUTQuCi19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3J0Y3AuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3J0Y3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjFkZTdlYjdmNDg3ZjI3ZWI4YmM2OTZjZTgxMDY5ODM5ODQ5OGYwOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ydGNwLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAx
MSBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQot
I2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9SVENQX0hfCi0jZGVmaW5lIE1PRFVM
RVNfQVVESU9fQ09ESU5HX05FVEVRX1JUQ1BfSF8KLQotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2luY2x1ZGUvbmV0ZXEuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1
Y3Rvcm1hZ2ljLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBGb3J3YXJkIGRlY2xhcmF0
aW9uLgotc3RydWN0IFJUUEhlYWRlcjsKLQotY2xhc3MgUnRjcCB7Ci0gcHVibGljOgotICBSdGNw
KCkgeyBJbml0KDApOyB9Ci0KLSAgflJ0Y3AoKSB7fQotCi0gIC8vIFJlc2V0cyB0aGUgUlRDUCBz
dGF0aXN0aWNzLCBhbmQgc2V0cyB0aGUgZmlyc3QgcmVjZWl2ZWQgc2VxdWVuY2UgbnVtYmVyLgot
ICB2b2lkIEluaXQodWludDE2X3Qgc3RhcnRfc2VxdWVuY2VfbnVtYmVyKTsKLQotICAvLyBVcGRh
dGVzIHRoZSBSVENQIHN0YXRpc3RpY3Mgd2l0aCBhIG5ldyByZWNlaXZlZCBwYWNrZXQuCi0gIHZv
aWQgVXBkYXRlKGNvbnN0IFJUUEhlYWRlciYgcnRwX2hlYWRlciwgdWludDMyX3QgcmVjZWl2ZV90
aW1lc3RhbXApOwotCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgUlRDUCBzdGF0aXN0aWNzLiBJ
ZiB8bm9fcmVzZXR8IGlzIHRydWUsIHRoZSBzdGF0aXN0aWNzCi0gIC8vIGFyZSBub3QgcmVzZXQs
IG90aGVyd2lzZSB0aGV5IGFyZS4KLSAgdm9pZCBHZXRTdGF0aXN0aWNzKGJvb2wgbm9fcmVzZXQs
IFJ0Y3BTdGF0aXN0aWNzKiBzdGF0cyk7Ci0KLSBwcml2YXRlOgotICB1aW50MTZfdCBjeWNsZXNf
OyAgICAgICAvLyBUaGUgbnVtYmVyIG9mIHdyYXAtYXJvdW5kcyBmb3IgdGhlIHNlcXVlbmNlIG51
bWJlci4KLSAgdWludDE2X3QgbWF4X3NlcV9ub187ICAgLy8gVGhlIG1heGltdW0gc2VxdWVuY2Ug
bnVtYmVyIHJlY2VpdmVkLiBTdGFydHMgb3ZlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBmcm9tIDAgYWZ0ZXIgd3JhcC1hcm91bmQuCi0gIHVpbnQxNl90IGJhc2Vfc2VxX25vXzsgIC8v
IFRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGZpcnN0IHJlY2VpdmVkIHBhY2tldC4KLSAgdWlu
dDMyX3QgcmVjZWl2ZWRfcGFja2V0c187ICAvLyBUaGUgbnVtYmVyIG9mIHBhY2tldHMgdGhhdCBo
YXZlIGJlZW4gcmVjZWl2ZWQuCi0gIHVpbnQzMl90IHJlY2VpdmVkX3BhY2tldHNfcHJpb3JfOyAg
Ly8gTnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgd2hlbiBsYXN0Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcmVwb3J0IHdhcyBnZW5lcmF0ZWQuCi0gIHVpbnQzMl90
IGV4cGVjdGVkX3ByaW9yXzsgIC8vIEV4cGVjdGVkIG51bWJlciBvZiBwYWNrZXRzLCBhdCB0aGUg
dGltZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGFzdCByZXBvcnQu
Ci0gIGludDY0X3Qgaml0dGVyXzsgICAgICAgICAgIC8vIEN1cnJlbnQgaml0dGVyIHZhbHVlIGlu
IFE0LgotICBpbnQzMl90IHRyYW5zaXRfOyAgICAgICAgICAvLyBDbG9jayBkaWZmZXJlbmNlIGZv
ciBwcmV2aW91cyBwYWNrZXQuCi0KLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSdGNw
KTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLSNlbmRpZiAgLy8gTU9EVUxFU19BVURJ
T19DT0RJTkdfTkVURVFfUlRDUF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGlj
c19jYWxjdWxhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmNjCmlu
ZGV4IGMwZTdhNDAyYWFjMDBhYTcyYTVmNzlkZDM0ODY4ZjI2M2M5Zjg1MWQuLjUwNTIxZmIwM2Qz
NjRlYTA4MGQ0NTcwNDdhYzcwZjFhMzg3OWE2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N0
YXRpc3RpY3NfY2FsY3VsYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zdGF0aXN0aWNzX2NhbGN1
bGF0b3IuY2MKQEAgLTEyNiw3ICsxMjYsMTAgQEAgU3RhdGlzdGljc0NhbGN1bGF0b3I6OlN0YXRp
c3RpY3NDYWxjdWxhdG9yKCkKICAgICAgICAgICAxMDApLAogICAgICAgZXhjZXNzX2J1ZmZlcl9k
ZWxheV8oIldlYlJUQy5BdWRpby5BdmVyYWdlRXhjZXNzQnVmZmVyRGVsYXlNcyIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA2MDAwMCwgIC8vIDYwIHNlY29uZHMgcmVwb3J0IGludGVydmFs
LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMCkge30KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEwMDApLAorICAgICAgYnVmZmVyX2Z1bGxfY291bnRlcl8oIldlYlJUQy5BdWRp
by5KaXR0ZXJCdWZmZXJGdWxsUGVyTWludXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IDYwMDAwLCAgLy8gNjAgc2Vjb25kcyByZXBvcnQgaW50ZXJ2YWwuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMDApIHt9CiAKIFN0YXRpc3RpY3NDYWxjdWxhdG9yOjp+U3RhdGlzdGljc0Nh
bGN1bGF0b3IoKSA9IGRlZmF1bHQ7CiAKQEAgLTIyOSw2ICsyMzIsNyBAQCB2b2lkIFN0YXRpc3Rp
Y3NDYWxjdWxhdG9yOjpJbmNyZWFzZUNvdW50ZXIoc2l6ZV90IG51bV9zYW1wbGVzLCBpbnQgZnNf
aHopIHsKICAgICAgIHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KHN0YXRpY19jYXN0PGludD4oMTAwMCAq
IG51bV9zYW1wbGVzKSwgZnNfaHopOwogICBkZWxheWVkX3BhY2tldF9vdXRhZ2VfY291bnRlcl8u
QWR2YW5jZUNsb2NrKHRpbWVfc3RlcF9tcyk7CiAgIGV4Y2Vzc19idWZmZXJfZGVsYXlfLkFkdmFu
Y2VDbG9jayh0aW1lX3N0ZXBfbXMpOworICBidWZmZXJfZnVsbF9jb3VudGVyXy5BZHZhbmNlQ2xv
Y2sodGltZV9zdGVwX21zKTsKICAgdGltZXN0YW1wc19zaW5jZV9sYXN0X3JlcG9ydF8gKz0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG51bV9zYW1wbGVzKTsKICAgaWYgKHRpbWVzdGFtcHNfc2luY2Vf
bGFzdF9yZXBvcnRfID4KICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pihmc19oeiAqIGtNYXhS
ZXBvcnRQZXJpb2QpKSB7CkBAIC0yNTAsMTMgKzI1NCwxNyBAQCB2b2lkIFN0YXRpc3RpY3NDYWxj
dWxhdG9yOjpTZWNvbmRhcnlEZWNvZGVkU2FtcGxlcyhpbnQgbnVtX3NhbXBsZXMpIHsKIAogdm9p
ZCBTdGF0aXN0aWNzQ2FsY3VsYXRvcjo6Rmx1c2hlZFBhY2tldEJ1ZmZlcigpIHsKICAgb3BlcmF0
aW9uc19hbmRfc3RhdGVfLnBhY2tldF9idWZmZXJfZmx1c2hlcysrOworICBidWZmZXJfZnVsbF9j
b3VudGVyXy5SZWdpc3RlclNhbXBsZSgpOwogfQogCi12b2lkIFN0YXRpc3RpY3NDYWxjdWxhdG9y
OjpMb2dEZWxheWVkUGFja2V0T3V0YWdlRXZlbnQoaW50IG91dGFnZV9kdXJhdGlvbl9tcykgewor
dm9pZCBTdGF0aXN0aWNzQ2FsY3VsYXRvcjo6TG9nRGVsYXllZFBhY2tldE91dGFnZUV2ZW50KGlu
dCBudW1fc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgZnNfaHopIHsKKyAgaW50IG91dGFnZV9kdXJhdGlvbl9tcyA9IG51
bV9zYW1wbGVzIC8gKGZzX2h6IC8gMTAwMCk7CiAgIFJUQ19ISVNUT0dSQU1fQ09VTlRTKCJXZWJS
VEMuQXVkaW8uRGVsYXllZFBhY2tldE91dGFnZUV2ZW50TXMiLAogICAgICAgICAgICAgICAgICAg
ICAgICBvdXRhZ2VfZHVyYXRpb25fbXMsIDEgLyogbWluICovLCAyMDAwIC8qIG1heCAqLywKICAg
ICAgICAgICAgICAgICAgICAgICAgMTAwIC8qIGJ1Y2tldCBjb3VudCAqLyk7CiAgIGRlbGF5ZWRf
cGFja2V0X291dGFnZV9jb3VudGVyXy5SZWdpc3RlclNhbXBsZSgpOworICBsaWZldGltZV9zdGF0
c18uZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMgKz0gbnVtX3NhbXBsZXM7CiB9CiAKIHZv
aWQgU3RhdGlzdGljc0NhbGN1bGF0b3I6OlN0b3JlV2FpdGluZ1RpbWUoaW50IHdhaXRpbmdfdGlt
ZV9tcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0b3IuaAppbmRleCA5ZTVkYWNmZDkyMGE2
Mzk5ODAyNmMzYmNiOTZiZWQ4ZjMzZWIwNGE2Li40OWI3NGEwNGIzYjRhNmQ3N2NlMDVlNTcwNGZj
ODZjMmJjNDk2OGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0
b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0b3IuaApAQCAtODYsMTAg
Kzg2LDEwIEBAIGNsYXNzIFN0YXRpc3RpY3NDYWxjdWxhdG9yIHsKICAgLy8gUmVycG9ydCB0aGF0
IHRoZSBwYWNrZXQgYnVmZmVyIHdhcyBmbHVzaGVkLgogICB2b2lkIEZsdXNoZWRQYWNrZXRCdWZm
ZXIoKTsKIAotICAvLyBMb2dzIGEgZGVsYXllZCBwYWNrZXQgb3V0YWdlIGV2ZW50IG9mIHxvdXRh
Z2VfZHVyYXRpb25fbXN8LiBBIGRlbGF5ZWQKLSAgLy8gcGFja2V0IG91dGFnZSBldmVudCBpcyBk
ZWZpbmVkIGFzIGFuIGV4cGFuZCBwZXJpb2QgY2F1c2VkIG5vdCBieSBhbiBhY3R1YWwKLSAgLy8g
cGFja2V0IGxvc3MsIGJ1dCBieSBhIGRlbGF5ZWQgcGFja2V0LgotICB2aXJ0dWFsIHZvaWQgTG9n
RGVsYXllZFBhY2tldE91dGFnZUV2ZW50KGludCBvdXRhZ2VfZHVyYXRpb25fbXMpOworICAvLyBM
b2dzIGEgZGVsYXllZCBwYWNrZXQgb3V0YWdlIGV2ZW50IG9mIHxudW1fc2FtcGxlc3wgZXhwYW5k
ZWQgYXQgYSBzYW1wbGUKKyAgLy8gcmF0ZSBvZiB8ZnNfaHp8LiBBIGRlbGF5ZWQgcGFja2V0IG91
dGFnZSBldmVudCBpcyBkZWZpbmVkIGFzIGFuIGV4cGFuZAorICAvLyBwZXJpb2QgY2F1c2VkIG5v
dCBieSBhbiBhY3R1YWwgcGFja2V0IGxvc3MsIGJ1dCBieSBhIGRlbGF5ZWQgcGFja2V0LgorICB2
aXJ0dWFsIHZvaWQgTG9nRGVsYXllZFBhY2tldE91dGFnZUV2ZW50KGludCBudW1fc2FtcGxlcywg
aW50IGZzX2h6KTsKIAogICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IG5ldHdvcmsgc3RhdGlzdGlj
cyBpbiB8c3RhdHN8LiBUaGUgY3VycmVudCBzYW1wbGUgcmF0ZQogICAvLyBpcyB8ZnNfaHp8LCB0
aGUgdG90YWwgbnVtYmVyIG9mIHNhbXBsZXMgaW4gcGFja2V0IGJ1ZmZlciBhbmQgc3luYyBidWZm
ZXIKQEAgLTE5OSw2ICsxOTksNyBAQCBjbGFzcyBTdGF0aXN0aWNzQ2FsY3VsYXRvciB7CiAgIHNp
emVfdCBkaXNjYXJkZWRfc2Vjb25kYXJ5X3BhY2tldHNfOwogICBQZXJpb2RpY1VtYUNvdW50IGRl
bGF5ZWRfcGFja2V0X291dGFnZV9jb3VudGVyXzsKICAgUGVyaW9kaWNVbWFBdmVyYWdlIGV4Y2Vz
c19idWZmZXJfZGVsYXlfOworICBQZXJpb2RpY1VtYUNvdW50IGJ1ZmZlcl9mdWxsX2NvdW50ZXJf
OwogCiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oU3RhdGlzdGljc0NhbGN1bGF0b3Ip
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N5bmNfYnVmZmVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9zeW5jX2J1ZmZlci5oCmluZGV4IDcyZTMyMGM2MWY2ZjkwMTdjOGIyZDU0MDk4MDI0OWU4MGVl
YWMwOTIuLmQ2NDVlOTE2M2U5MTA1Yzk4ZjFiOTAwYjA5Y2FlZjQxNmZmZmNhNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3N5bmNfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3luY19idWZm
ZXIuaApAQCAtMTEsOCArMTEsMTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVU
RVFfU1lOQ19CVUZGRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfU1lO
Q19CVUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgor
I2luY2x1ZGUgPHZlY3Rvcj4KKwogI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19mcmFtZS5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX3ZlY3Rvci5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVj
dG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9pbGJjX3F1
YWxpdHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfaWxiY19xdWFsaXR5X3Rlc3Qu
Y2MKaW5kZXggYWQ2MTIzNWNmMjg5NjZkYWFiNDkxZTZkZGI3NzYxYWY4Mjg1MGM0Yy4uNmYxMDM0
NTI5ODBkZTUyZjA5NzQ1MmZiNDk2YWMzMmZmOTVjNGY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvdGVzdC9uZXRlcV9pbGJjX3F1YWxpdHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0
L25ldGVxX2lsYmNfcXVhbGl0eV90ZXN0LmNjCkBAIC0yNSw3ICsyNSw3IEBAIG5hbWVzcGFjZSB7
CiBzdGF0aWMgY29uc3QgaW50IGtJbnB1dFNhbXBsZVJhdGVLaHogPSA4Owogc3RhdGljIGNvbnN0
IGludCBrT3V0cHV0U2FtcGxlUmF0ZUtoeiA9IDg7CiAKLURFRklORV9pbnQoZnJhbWVfc2l6ZV9t
cywgMjAsICJDb2RlYyBmcmFtZSBzaXplIChtaWxsaXNlY29uZHMpLiIpOworV0VCUlRDX0RFRklO
RV9pbnQoZnJhbWVfc2l6ZV9tcywgMjAsICJDb2RlYyBmcmFtZSBzaXplIChtaWxsaXNlY29uZHMp
LiIpOwogCiB9ICAvLyBuYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9u
ZXRlcV9pc2FjX3F1YWxpdHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfaXNhY19x
dWFsaXR5X3Rlc3QuY2MKaW5kZXggOTQ5ODRiODdlNmYxMjM5MjAxOTI0YWZhNzVkYmYxMDE2ZDA4
ZTMyNS4uNjUxYjBjYTcxYTY4ZWQ4MzQxMGExNGRlOWQ3MzliODgwNTUzNTY2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9pc2FjX3F1YWxpdHlfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS90ZXN0L25ldGVxX2lzYWNfcXVhbGl0eV90ZXN0LmNjCkBAIC0yMSw3ICsyMSw3IEBA
IHN0YXRpYyBjb25zdCBpbnQga0lzYWNCbG9ja0R1cmF0aW9uTXMgPSAzMDsKIHN0YXRpYyBjb25z
dCBpbnQga0lzYWNJbnB1dFNhbXBsaW5nS2h6ID0gMTY7CiBzdGF0aWMgY29uc3QgaW50IGtJc2Fj
T3V0cHV0U2FtcGxpbmdLaHogPSAxNjsKIAotREVGSU5FX2ludChiaXRfcmF0ZV9rYnBzLCAzMiwg
IlRhcmdldCBiaXQgcmF0ZSAoa2JwcykuIik7CitXRUJSVENfREVGSU5FX2ludChiaXRfcmF0ZV9r
YnBzLCAzMiwgIlRhcmdldCBiaXQgcmF0ZSAoa2JwcykuIik7CiAKIH0gIC8vIG5hbWVzcGFjZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX29wdXNfcXVhbGl0eV90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9vcHVzX3F1YWxpdHlfdGVzdC5jYwppbmRleCA2ODYx
ZTRjNTVhYWZkNmM0NDY0N2ZkYmMwNGIyYWQ5MjUwODZmYzYyLi5mNGEzNjM2M2JhYTk1YmVhN2Vi
MDNjYTZkMmE1M2Q5MGVhYTY2ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVx
X29wdXNfcXVhbGl0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfb3B1c19x
dWFsaXR5X3Rlc3QuY2MKQEAgLTIyLDI0ICsyMiwyNiBAQCBuYW1lc3BhY2Ugewogc3RhdGljIGNv
bnN0IGludCBrT3B1c0Jsb2NrRHVyYXRpb25NcyA9IDIwOwogc3RhdGljIGNvbnN0IGludCBrT3B1
c1NhbXBsaW5nS2h6ID0gNDg7CiAKLURFRklORV9pbnQoYml0X3JhdGVfa2JwcywgMzIsICJUYXJn
ZXQgYml0IHJhdGUgKGticHMpLiIpOworV0VCUlRDX0RFRklORV9pbnQoYml0X3JhdGVfa2Jwcywg
MzIsICJUYXJnZXQgYml0IHJhdGUgKGticHMpLiIpOwogCi1ERUZJTkVfaW50KGNvbXBsZXhpdHks
Ci0gICAgICAgICAgIDEwLAotICAgICAgICAgICAiQ29tcGxleGl0eTogMCB+IDEwIC0tIGRlZmlu
ZWQgYXMgaW4gT3B1cyIKLSAgICAgICAgICAgInNwZWNpZmljYXRpb24uIik7CitXRUJSVENfREVG
SU5FX2ludChjb21wbGV4aXR5LAorICAgICAgICAgICAgICAgICAgMTAsCisgICAgICAgICAgICAg
ICAgICAiQ29tcGxleGl0eTogMCB+IDEwIC0tIGRlZmluZWQgYXMgaW4gT3B1cyIKKyAgICAgICAg
ICAgICAgICAgICJzcGVjaWZpY2F0aW9uLiIpOwogCi1ERUZJTkVfaW50KG1heHBsYXliYWNrcmF0
ZSwgNDgwMDAsICJNYXhpbXVtIHBsYXliYWNrIHJhdGUgKEh6KS4iKTsKK1dFQlJUQ19ERUZJTkVf
aW50KG1heHBsYXliYWNrcmF0ZSwgNDgwMDAsICJNYXhpbXVtIHBsYXliYWNrIHJhdGUgKEh6KS4i
KTsKIAotREVGSU5FX2ludChhcHBsaWNhdGlvbiwgMCwgIkFwcGxpY2F0aW9uIG1vZGU6IDAgLS0g
Vk9JUCwgMSAtLSBBdWRpby4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGFwcGxpY2F0aW9uLCAwLCAi
QXBwbGljYXRpb24gbW9kZTogMCAtLSBWT0lQLCAxIC0tIEF1ZGlvLiIpOwogCi1ERUZJTkVfaW50
KHJlcG9ydGVkX2xvc3NfcmF0ZSwgMTAsICJSZXBvcnRlZCBwZXJjZW50aWxlIG9mIHBhY2tldCBs
b3NzLiIpOworV0VCUlRDX0RFRklORV9pbnQocmVwb3J0ZWRfbG9zc19yYXRlLAorICAgICAgICAg
ICAgICAgICAgMTAsCisgICAgICAgICAgICAgICAgICAiUmVwb3J0ZWQgcGVyY2VudGlsZSBvZiBw
YWNrZXQgbG9zcy4iKTsKIAotREVGSU5FX2Jvb2woZmVjLCBmYWxzZSwgIkVuYWJsZSBGRUMgZm9y
IGVuY29kaW5nICgtbm9mZWMgdG8gZGlzYWJsZSkuIik7CitXRUJSVENfREVGSU5FX2Jvb2woZmVj
LCBmYWxzZSwgIkVuYWJsZSBGRUMgZm9yIGVuY29kaW5nICgtbm9mZWMgdG8gZGlzYWJsZSkuIik7
CiAKLURFRklORV9ib29sKGR0eCwgZmFsc2UsICJFbmFibGUgRFRYIGZvciBlbmNvZGluZyAoLW5v
ZHR4IHRvIGRpc2FibGUpLiIpOworV0VCUlRDX0RFRklORV9ib29sKGR0eCwgZmFsc2UsICJFbmFi
bGUgRFRYIGZvciBlbmNvZGluZyAoLW5vZHR4IHRvIGRpc2FibGUpLiIpOwogCi1ERUZJTkVfaW50
KHN1Yl9wYWNrZXRzLCAxLCAiTnVtYmVyIG9mIHN1YiBwYWNrZXRzIHRvIHJlcGFja2V0aXplLiIp
OworV0VCUlRDX0RFRklORV9pbnQoc3ViX3BhY2tldHMsIDEsICJOdW1iZXIgb2Ygc3ViIHBhY2tl
dHMgdG8gcmVwYWNrZXRpemUuIik7CiAKIH0gIC8vIG5hbWVzcGFjZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90ZXN0L25ldGVxX3BjbTE2Yl9xdWFsaXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90ZXN0L25ldGVxX3BjbTE2Yl9xdWFsaXR5X3Rlc3QuY2MKaW5kZXggODg3MmI5NGEwNjM5MzE1
YzJlOWZkOTY2YjFkNTc0Mzk0MWI2ZGY4ZC4uOWM1MzkxOWQ1NDA3N2VmMzA2NGRhODhjYjk0MmZl
ZjFkNDk5Zjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9wY20xNmJfcXVh
bGl0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfcGNtMTZiX3F1YWxpdHlf
dGVzdC5jYwpAQCAtMjYsNyArMjYsNyBAQCBuYW1lc3BhY2Ugewogc3RhdGljIGNvbnN0IGludCBr
SW5wdXRTYW1wbGVSYXRlS2h6ID0gNDg7CiBzdGF0aWMgY29uc3QgaW50IGtPdXRwdXRTYW1wbGVS
YXRlS2h6ID0gNDg7CiAKLURFRklORV9pbnQoZnJhbWVfc2l6ZV9tcywgMjAsICJDb2RlYyBmcmFt
ZSBzaXplIChtaWxsaXNlY29uZHMpLiIpOworV0VCUlRDX0RFRklORV9pbnQoZnJhbWVfc2l6ZV9t
cywgMjAsICJDb2RlYyBmcmFtZSBzaXplIChtaWxsaXNlY29uZHMpLiIpOwogCiB9ICAvLyBuYW1l
c3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9wY211X3F1YWxpdHlf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfcGNtdV9xdWFsaXR5X3Rlc3QuY2MKaW5k
ZXggNTRmZjg0OTczOWEzOTAyZjNjOTc0YWI2MmUwZjU4MzYxYTkwZjkyZC4uODVmMjI2NzFlYWM0
N2FkYTk5ZmUzODkyNTNiMTYyZjFkNDU4ZDMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVz
dC9uZXRlcV9wY211X3F1YWxpdHlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVx
X3BjbXVfcXVhbGl0eV90ZXN0LmNjCkBAIC0yNSw3ICsyNSw3IEBAIG5hbWVzcGFjZSB7CiBzdGF0
aWMgY29uc3QgaW50IGtJbnB1dFNhbXBsZVJhdGVLaHogPSA4Owogc3RhdGljIGNvbnN0IGludCBr
T3V0cHV0U2FtcGxlUmF0ZUtoeiA9IDg7CiAKLURFRklORV9pbnQoZnJhbWVfc2l6ZV9tcywgMjAs
ICJDb2RlYyBmcmFtZSBzaXplIChtaWxsaXNlY29uZHMpLiIpOworV0VCUlRDX0RFRklORV9pbnQo
ZnJhbWVfc2l6ZV9tcywgMjAsICJDb2RlYyBmcmFtZSBzaXplIChtaWxsaXNlY29uZHMpLiIpOwog
CiB9ICAvLyBuYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9z
cGVlZF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9zcGVlZF90ZXN0LmNjCmluZGV4
IGM0ODZhYzYwYmQ3Yzg5Y2U0MTcyMjljNTIwY2M5ZjRhNjAzYWI5ZjYuLjcwNzc3YTJkMDIxNDky
MTQ4M2FkZGNmMjBhZDU5ZDNjOTFiYWYzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3Qv
bmV0ZXFfc3BlZWRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX3NwZWVkX3Rl
c3QuY2MKQEAgLTE0LDEzICsxNCwxMiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGVyZm9ybWFuY2VfdGVzdC5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2ZsYWdzLmgiCi0jaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKIAog
Ly8gRGVmaW5lIGNvbW1hbmQgbGluZSBmbGFncy4KLURFRklORV9pbnQocnVudGltZV9tcywgMTAw
MDAsICJTaW11bGF0ZWQgcnVudGltZSBpbiBtcy4iKTsKLURFRklORV9pbnQobG9zc3JhdGUsIDEw
LCAiUGFja2V0IGxvc3NyYXRlOyBkcm9wIGV2ZXJ5IE4gcGFja2V0cy4iKTsKLURFRklORV9mbG9h
dChkcmlmdCwgMC4xZiwgIkNsb2NrZHJpZnQgZmFjdG9yLiIpOwotREVGSU5FX2Jvb2woaGVscCwg
ZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CitXRUJSVENfREVGSU5FX2ludChydW50aW1l
X21zLCAxMDAwMCwgIlNpbXVsYXRlZCBydW50aW1lIGluIG1zLiIpOworV0VCUlRDX0RFRklORV9p
bnQobG9zc3JhdGUsIDEwLCAiUGFja2V0IGxvc3NyYXRlOyBkcm9wIGV2ZXJ5IE4gcGFja2V0cy4i
KTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoZHJpZnQsIDAuMWYsICJDbG9ja2RyaWZ0IGZhY3Rvci4i
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMgbWVzc2FnZS4i
KTsKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBzdGQ6OnN0cmluZyBw
cm9ncmFtX25hbWUgPSBhcmd2WzBdOwpAQCAtMzMsNyArMzIsNiBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhciogYXJndltdKSB7CiAgICAgICAiICAtLWxvc3NyYXRlPU4gICAgICAgICAgIGRyb3Ag
ZXZlcnkgTiBwYWNrZXRzOyBkZWZhdWx0IGlzIDEwXG4iCiAgICAgICAiICAtLWRyaWZ0PUYgICAg
ICAgICAgICAgIGNsb2NrZHJpZnQgZmFjdG9yIGJldHdlZW4gMC4wIGFuZCAxLjA7ICIKICAgICAg
ICJkZWZhdWx0IGlzIDAuMVxuIjsKLSAgd2VicnRjOjp0ZXN0OjpTZXRFeGVjdXRhYmxlUGF0aChh
cmd2WzBdKTsKICAgaWYgKHJ0Yzo6RmxhZ0xpc3Q6OlNldEZsYWdzRnJvbUNvbW1hbmRMaW5lKCZh
cmdjLCBhcmd2LCB0cnVlKSB8fCBGTEFHX2hlbHAgfHwKICAgICAgIGFyZ2MgIT0gMSkgewogICAg
IHByaW50ZigiJXMiLCB1c2FnZS5jX3N0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rp
Y2tfdGltZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpY2tfdGltZXIuaAppbmRleCA1MjAwOTllMzQ2NjI0
YjU1NzUyOTM1ODVkYzlkN2NhN2QzY2M0ZDYwLi4wMmYwODNlMDJlYjk3OWNjNzdhZmZhYTQ1ODE2
NjExMjYyMmZhNTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aWNrX3RpbWVyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdGlja190aW1lci5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVM
RVNfQVVESU9fQ09ESU5HX05FVEVRX1RJQ0tfVElNRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJ
T19DT0RJTkdfTkVURVFfVElDS19USU1FUl9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS90aW1lc3RhbXBfc2NhbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGltZXN0YW1w
X3NjYWxlci5jYwppbmRleCAwN2Q5NDVlZGNlMDcxMmQ3ZjUxZTRlY2U0MWM5ZjliYWQ4ZTJiY2Jh
Li5iMDQ2MWJiOTJkODRlZjM0MDgyYjFjNGIxNmQxNDlkZGRmZjlmODEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90aW1lc3RhbXBfc2NhbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpbWVzdGFt
cF9zY2FsZXIuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL3RpbWVzdGFtcF9zY2FsZXIuaCIKIAorI2luY2x1ZGUgImFwaS9hdWRpb19j
b2RlY3MvYXVkaW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvZGVjb2Rlcl9kYXRhYmFzZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9ldmVudF9sb2dfaW5wdXQuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90b29scy9uZXRlcV9ldmVudF9sb2dfaW5wdXQuY2MKaW5kZXggMjFjNWY5ZWYw
MjIzZjdiMTBlOGE3NzViMGZlMDA3YmEyZjUzZWE5Ni4uOTEwN2U1ZTVlZjRmYzAyNGMwZTgwNTIx
ZjQxOTFkNjUyZmRlMzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfZXZl
bnRfbG9nX2lucHV0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX2V2ZW50X2xvZ19p
bnB1dC5jYwpAQCAtMTksMTEgKzE5LDggQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2Ug
dGVzdCB7CiAKIE5ldEVxRXZlbnRMb2dJbnB1dDo6TmV0RXFFdmVudExvZ0lucHV0KGNvbnN0IHN0
ZDo6c3RyaW5nJiBmaWxlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGhkcl9leHRfbWFwKQotICAgIDogc291
cmNlXyhSdGNFdmVudExvZ1NvdXJjZTo6Q3JlYXRlKGZpbGVfbmFtZSkpIHsKLSAgZm9yIChjb25z
dCBhdXRvJiBleHRfcGFpciA6IGhkcl9leHRfbWFwKSB7Ci0gICAgc291cmNlXy0+UmVnaXN0ZXJS
dHBIZWFkZXJFeHRlbnNpb24oZXh0X3BhaXIuc2Vjb25kLCBleHRfcGFpci5maXJzdCk7Ci0gIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVp
bnQzMl90PiBzc3JjX2ZpbHRlcikKKyAgICA6IHNvdXJjZV8oUnRjRXZlbnRMb2dTb3VyY2U6OkNy
ZWF0ZShmaWxlX25hbWUsIHNzcmNfZmlsdGVyKSkgewogICBMb2FkTmV4dFBhY2tldCgpOwogICBB
ZHZhbmNlT3V0cHV0RXZlbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25l
dGVxX2V2ZW50X2xvZ19pbnB1dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfZXZlbnRfbG9n
X2lucHV0LmgKaW5kZXggODZjZjlmMmYwMmE5MmI2ZWYzOGM0NDdiZmQ4OWZjZmY4NTRjYmQwYi4u
ZTA0ZGYxNjg0ZjFiODcxZDNjY2NjZWU3N2U4ZmI0OTUwZTNiMjM0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvdG9vbHMvbmV0ZXFfZXZlbnRfbG9nX2lucHV0LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
dG9vbHMvbmV0ZXFfZXZlbnRfbG9nX2lucHV0LmgKQEAgLTI4LDcgKzI4LDcgQEAgY2xhc3MgUnRj
RXZlbnRMb2dTb3VyY2U7CiBjbGFzcyBOZXRFcUV2ZW50TG9nSW5wdXQgZmluYWwgOiBwdWJsaWMg
TmV0RXFQYWNrZXRTb3VyY2VJbnB1dCB7CiAgcHVibGljOgogICBOZXRFcUV2ZW50TG9nSW5wdXQo
Y29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgaGRyX2V4dF9tYXApOworICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyKTsKIAogICBhYnNsOjpvcHRp
b25hbDxpbnQ2NF90PiBOZXh0T3V0cHV0RXZlbnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIHZv
aWQgQWR2YW5jZU91dHB1dEV2ZW50KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90b29scy9uZXRlcV9wYWNrZXRfc291cmNlX2lucHV0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMv
bmV0ZXFfcGFja2V0X3NvdXJjZV9pbnB1dC5jYwppbmRleCBhODZjZjZhZmE1OTAxNzg0ZjcxNjQw
NjMwYWRkZTZhOThhOTI0ZjZmLi5lZTAyMjg4Yzg2ZDY2ZTVmM2RkMDZiMTQ5NWNkOGU2MjQ1NjY2
MmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9wYWNrZXRfc291cmNlX2lu
cHV0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3BhY2tldF9zb3VyY2VfaW5wdXQu
Y2MKQEAgLTU4LDE1ICs1OCwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TmV0RXFJbnB1dDo6UGFja2V0
RGF0YT4gTmV0RXFQYWNrZXRTb3VyY2VJbnB1dDo6UG9wUGFja2V0KCkgewogICByZXR1cm4gcGFj
a2V0X2RhdGE7CiB9CiAKLXZvaWQgTmV0RXFQYWNrZXRTb3VyY2VJbnB1dDo6U2VsZWN0U3NyYyh1
aW50MzJfdCBzc3JjKSB7Ci0gIHNvdXJjZSgpLT5TZWxlY3RTc3JjKHNzcmMpOwotICBpZiAocGFj
a2V0XyAmJiBwYWNrZXRfLT5oZWFkZXIoKS5zc3JjICE9IHNzcmMpCi0gICAgTG9hZE5leHRQYWNr
ZXQoKTsKLX0KLQogTmV0RXFSdHBEdW1wSW5wdXQ6Ok5ldEVxUnRwRHVtcElucHV0KGNvbnN0IHN0
ZDo6c3RyaW5nJiBmaWxlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBoZHJfZXh0X21hcCkKLSAgICA6IHNvdXJj
ZV8oUnRwRmlsZVNvdXJjZTo6Q3JlYXRlKGZpbGVfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGhkcl9leHRf
bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFs
PHVpbnQzMl90PiBzc3JjX2ZpbHRlcikKKyAgICA6IHNvdXJjZV8oUnRwRmlsZVNvdXJjZTo6Q3Jl
YXRlKGZpbGVfbmFtZSwgc3NyY19maWx0ZXIpKSB7CiAgIGZvciAoY29uc3QgYXV0byYgZXh0X3Bh
aXIgOiBoZHJfZXh0X21hcCkgewogICAgIHNvdXJjZV8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5z
aW9uKGV4dF9wYWlyLnNlY29uZCwgZXh0X3BhaXIuZmlyc3QpOwogICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90b29scy9uZXRlcV9wYWNrZXRfc291cmNlX2lucHV0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90b29scy9uZXRlcV9wYWNrZXRfc291cmNlX2lucHV0LmgKaW5kZXggYjMyYzUzNDA4NTFmNjYy
NTVhNTVkNjZkODZlZThmODBlMDk1NmU4NC4uODYzM2QxZjVkZDFjZjM3ZWM2NzFiODcyNGUyY2Fj
Mjg5NDRlMDExYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGFja2V0X3Nv
dXJjZV9pbnB1dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3BhY2tldF9zb3VyY2Vf
aW5wdXQuaApAQCAtMTIsOCArMTIsMTAgQEAKICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdf
TkVURVFfVE9PTFNfTkVURVFfUEFDS0VUX1NPVVJDRV9JTlBVVF9IXwogCiAjaW5jbHVkZSA8bWFw
PgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
dG9vbHMvbmV0ZXFfaW5wdXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUv
cnRwX3J0Y3BfZGVmaW5lcy5oIgogCkBAIC0zMiw3ICszNCw2IEBAIGNsYXNzIE5ldEVxUGFja2V0
U291cmNlSW5wdXQgOiBwdWJsaWMgTmV0RXFJbnB1dCB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxQYWNr
ZXREYXRhPiBQb3BQYWNrZXQoKSBvdmVycmlkZTsKICAgYWJzbDo6b3B0aW9uYWw8UlRQSGVhZGVy
PiBOZXh0SGVhZGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIGJvb2wgZW5kZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAhbmV4dF9vdXRwdXRfZXZlbnRfbXNfOyB9Ci0gIHZvaWQgU2VsZWN0U3Ny
Yyh1aW50MzJfdCk7CiAKICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgUGFja2V0U291cmNlKiBzb3Vy
Y2UoKSA9IDA7CkBAIC00OCw3ICs0OSw4IEBAIGNsYXNzIE5ldEVxUGFja2V0U291cmNlSW5wdXQg
OiBwdWJsaWMgTmV0RXFJbnB1dCB7CiBjbGFzcyBOZXRFcVJ0cER1bXBJbnB1dCBmaW5hbCA6IHB1
YmxpYyBOZXRFcVBhY2tldFNvdXJjZUlucHV0IHsKICBwdWJsaWM6CiAgIE5ldEVxUnRwRHVtcElu
cHV0KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgaGRyX2V4dF9tYXApOworICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGhkcl9leHRfbWFwLAorICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gc3NyY19maWx0ZXIpOwogCiAgIGFi
c2w6Om9wdGlvbmFsPGludDY0X3Q+IE5leHRPdXRwdXRFdmVudFRpbWUoKSBjb25zdCBvdmVycmlk
ZTsKICAgdm9pZCBBZHZhbmNlT3V0cHV0RXZlbnQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL3Rvb2xzL25ldGVxX3F1YWxpdHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xz
L25ldGVxX3F1YWxpdHlfdGVzdC5jYwppbmRleCBmYWNhODk1OWQ0ZDRmNWM3Y2Y2YTEzZTk4Y2Ez
MjE0MWIyYjFmNzZlLi4yZWU2Nzc5YzUzOWUxYjllNjdiYjdjNWZiMDcxZTI1MWY1ZDA5YmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9xdWFsaXR5X3Rlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcXVhbGl0eV90ZXN0LmNjCkBAIC00Nyw0MiArNDcsNDcg
QEAgc3RhdGljIGJvb2wgVmFsaWRhdGVGaWxlbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUs
IGJvb2wgd3JpdGUpIHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLURFRklORV9zdHJpbmcoCitXRUJS
VENfREVGSU5FX3N0cmluZygKICAgICBpbl9maWxlbmFtZSwKICAgICBEZWZhdWx0SW5GaWxlbmFt
ZSgpLmNfc3RyKCksCiAgICAgIkZpbGVuYW1lIGZvciBpbnB1dCBhdWRpbyAoc3BlY2lmeSBzYW1w
bGUgcmF0ZSB3aXRoIC0taW5wdXRfc2FtcGxlX3JhdGUsICIKICAgICAiYW5kIGNoYW5uZWxzIHdp
dGggLS1jaGFubmVscykuIik7CiAKLURFRklORV9pbnQoaW5wdXRfc2FtcGxlX3JhdGUsIDE2MDAw
LCAiU2FtcGxlIHJhdGUgb2YgaW5wdXQgZmlsZSBpbiBIei4iKTsKK1dFQlJUQ19ERUZJTkVfaW50
KGlucHV0X3NhbXBsZV9yYXRlLCAxNjAwMCwgIlNhbXBsZSByYXRlIG9mIGlucHV0IGZpbGUgaW4g
SHouIik7CiAKLURFRklORV9pbnQoY2hhbm5lbHMsIDEsICJOdW1iZXIgb2YgY2hhbm5lbHMgaW4g
aW5wdXQgYXVkaW8uIik7CitXRUJSVENfREVGSU5FX2ludChjaGFubmVscywgMSwgIk51bWJlciBv
ZiBjaGFubmVscyBpbiBpbnB1dCBhdWRpby4iKTsKIAotREVGSU5FX3N0cmluZyhvdXRfZmlsZW5h
bWUsCi0gICAgICAgICAgICAgIERlZmF1bHRPdXRGaWxlbmFtZSgpLmNfc3RyKCksCi0gICAgICAg
ICAgICAgICJOYW1lIG9mIG91dHB1dCBhdWRpbyBmaWxlLiIpOworV0VCUlRDX0RFRklORV9zdHJp
bmcob3V0X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE91dEZpbGVuYW1l
KCkuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICJOYW1lIG9mIG91dHB1dCBhdWRpbyBm
aWxlLiIpOwogCi1ERUZJTkVfaW50KHJ1bnRpbWVfbXMsIDEwMDAwLCAiU2ltdWxhdGVkIHJ1bnRp
bWUgKG1pbGxpc2Vjb25kcykuIik7CitXRUJSVENfREVGSU5FX2ludChydW50aW1lX21zLCAxMDAw
MCwgIlNpbXVsYXRlZCBydW50aW1lIChtaWxsaXNlY29uZHMpLiIpOwogCi1ERUZJTkVfaW50KHBh
Y2tldF9sb3NzX3JhdGUsIDEwLCAiUGVyY2VudGlsZSBvZiBwYWNrZXQgbG9zcy4iKTsKK1dFQlJU
Q19ERUZJTkVfaW50KHBhY2tldF9sb3NzX3JhdGUsIDEwLCAiUGVyY2VudGlsZSBvZiBwYWNrZXQg
bG9zcy4iKTsKIAotREVGSU5FX2ludChyYW5kb21fbG9zc19tb2RlLAotICAgICAgICAgICBrVW5p
Zm9ybUxvc3MsCi0gICAgICAgICAgICJSYW5kb20gbG9zcyBtb2RlOiAwLS1ubyBsb3NzLCAxLS11
bmlmb3JtIGxvc3MsIDItLUdpbGJlcnQgRWxsaW90ICIKLSAgICAgICAgICAgImxvc3MsIDMtLWZp
eGVkIGxvc3MuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICByYW5kb21fbG9zc19tb2RlLAor
ICAgIGtVbmlmb3JtTG9zcywKKyAgICAiUmFuZG9tIGxvc3MgbW9kZTogMC0tbm8gbG9zcywgMS0t
dW5pZm9ybSBsb3NzLCAyLS1HaWxiZXJ0IEVsbGlvdCAiCisgICAgImxvc3MsIDMtLWZpeGVkIGxv
c3MuIik7CiAKLURFRklORV9pbnQoYnVyc3RfbGVuZ3RoLAotICAgICAgICAgICAzMCwKLSAgICAg
ICAgICAgIkJ1cnN0IGxlbmd0aCBpbiBtaWxsaXNlY29uZHMsIG9ubHkgdmFsaWQgZm9yIEdpbGJl
cnQgRWxsaW90IGxvc3MuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICBidXJzdF9sZW5ndGgs
CisgICAgMzAsCisgICAgIkJ1cnN0IGxlbmd0aCBpbiBtaWxsaXNlY29uZHMsIG9ubHkgdmFsaWQg
Zm9yIEdpbGJlcnQgRWxsaW90IGxvc3MuIik7CiAKLURFRklORV9mbG9hdChkcmlmdF9mYWN0b3Is
IDAuMCwgIlRpbWUgZHJpZnQgZmFjdG9yLiIpOworV0VCUlRDX0RFRklORV9mbG9hdChkcmlmdF9m
YWN0b3IsIDAuMCwgIlRpbWUgZHJpZnQgZmFjdG9yLiIpOwogCi1ERUZJTkVfaW50KHByZWxvYWRf
cGFja2V0cywgMCwgIlByZWxvYWQgdGhlIGJ1ZmZlciB3aXRoIHRoaXMgbWFueSBwYWNrZXRzLiIp
OworV0VCUlRDX0RFRklORV9pbnQocHJlbG9hZF9wYWNrZXRzLAorICAgICAgICAgICAgICAgICAg
MCwKKyAgICAgICAgICAgICAgICAgICJQcmVsb2FkIHRoZSBidWZmZXIgd2l0aCB0aGlzIG1hbnkg
cGFja2V0cy4iKTsKIAotREVGSU5FX3N0cmluZyhsb3NzX2V2ZW50cywKLSAgICAgICAgICAgICAg
IiIsCi0gICAgICAgICAgICAgICJMaXN0IG9mIGxvc3MgZXZlbnRzIHRpbWUgYW5kIGR1cmF0aW9u
IHNlcGFyYXRlZCBieSBjb21tYTogIgotICAgICAgICAgICAgICAiPGZpcnN0X2V2ZW50X3RpbWU+
IDxmaXJzdF9ldmVudF9kdXJhdGlvbj4sIDxzZWNvbmRfZXZlbnRfdGltZT4gIgotICAgICAgICAg
ICAgICAiPHNlY29uZF9ldmVudF9kdXJhdGlvbj4sIC4uLiIpOworV0VCUlRDX0RFRklORV9zdHJp
bmcoCisgICAgbG9zc19ldmVudHMsCisgICAgIiIsCisgICAgIkxpc3Qgb2YgbG9zcyBldmVudHMg
dGltZSBhbmQgZHVyYXRpb24gc2VwYXJhdGVkIGJ5IGNvbW1hOiAiCisgICAgIjxmaXJzdF9ldmVu
dF90aW1lPiA8Zmlyc3RfZXZlbnRfZHVyYXRpb24+LCA8c2Vjb25kX2V2ZW50X3RpbWU+ICIKKyAg
ICAiPHNlY29uZF9ldmVudF9kdXJhdGlvbj4sIC4uLiIpOwogCiAvLyBQcm9iVHJhbnMwMFNvbHZl
cigpIGlzIHRvIGNhbGN1bGF0ZSB0aGUgdHJhbnNpdGlvbiBwcm9iYWJpbGl0eSBmcm9tIG5vLWxv
c3MKIC8vIHN0YXRlIHRvIGl0c2VsZiBpbiBhIG1vZGlmaWVkIEdpbGJlcnQgRWxsaW90IHBhY2tl
dCBsb3NzIG1vZGVsLiBUaGUgcmVzdWx0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29s
cy9uZXRlcV9ydHBwbGF5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcnRwcGxheS5jYwpp
bmRleCAyNWU4Y2Q4ODE2ZTEyMGJhN2IzZDg1MmY3YTcxZTA3ZjdiYzlmNjg2Li5jMjcyNmViNDcw
NGI4NzNiZTI3ZTBiNzFjZDEyMmM4ZTkzNjUyNGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
b29scy9uZXRlcV9ydHBwbGF5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3J0cHBs
YXkuY2MKQEAgLTE3LDE3ICsxNywxNyBAQAogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNs
dWRlL2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogCi1ERUZJ
TkVfYm9vbChjb2RlY19tYXAsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQcmlu
dHMgdGhlIG1hcHBpbmcgYmV0d2VlbiBSVFAgcGF5bG9hZCB0eXBlIGFuZCAiCi0gICAgICAgICAg
ICAiY29kZWMiKTsKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVGSU5FX2Jvb2woY29kZWNfbWFw
LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJQcmludHMg
dGhlIG1hcHBpbmcgYmV0d2VlbiBSVFAgcGF5bG9hZCB0eXBlIGFuZCAiCisgICAgICAgICAgICAg
ICAgICAgImNvZGVjIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICBmb3JjZV9maWVsZHRy
aWFscywKICAgICAiIiwKICAgICAiRmllbGQgdHJpYWxzIGNvbnRyb2wgZXhwZXJpbWVudGFsIGZl
YXR1cmUgY29kZSB3aGljaCBjYW4gYmUgZm9yY2VkLiAiCiAgICAgIkUuZy4gcnVubmluZyB3aXRo
IC0tZm9yY2VfZmllbGR0cmlhbHM9V2ViUlRDLUZvb0ZlYXR1cmUvRW5hYmxlLyIKICAgICAiIHdp
bGwgYXNzaWduIHRoZSBncm91cCBFbmFibGUgdG8gZmllbGQgdHJpYWwgV2ViUlRDLUZvb0ZlYXR1
cmUuIik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsK
K1dFQlJUQ19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsK
IAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICB3ZWJydGM6OnRlc3Q6Ok5l
dEVxVGVzdEZhY3RvcnkgZmFjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25l
dGVxX3Rlc3RfZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3Rlc3RfZmFjdG9y
eS5jYwppbmRleCA1MTA3N2JjNmI4YjkyMzU3MTJiZjJmMTY1OThjYjM1NGE2MTdkOTNlLi5hYTk1
NmNlOGFiY2QzMTE4MjhhMzMzNzc3M2Y0Y2NjMTJkNDJkZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90b29scy9uZXRlcV90ZXN0X2ZhY3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMv
bmV0ZXFfdGVzdF9mYWN0b3J5LmNjCkBAIC05MSw0NyArOTEsNjAgQEAgc3RhdGljIGJvb2wgVmFs
aWRhdGVFeHRlbnNpb25JZChpbnQgdmFsdWUpIHsKIH0KIAogLy8gRGVmaW5lIGNvbW1hbmQgbGlu
ZSBmbGFncy4KLURFRklORV9pbnQocGNtdSwgMCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIFBDTS11
Iik7Ci1ERUZJTkVfaW50KHBjbWEsIDgsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQQ00tYSIpOwot
REVGSU5FX2ludChpbGJjLCAxMDIsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBpTEJDIik7Ci1ERUZJ
TkVfaW50KGlzYWMsIDEwMywgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGlTQUMiKTsKLURFRklORV9p
bnQoaXNhY19zd2IsIDEwNCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGlTQUMtc3diICgzMiBrSHop
Iik7Ci1ERUZJTkVfaW50KG9wdXMsIDExMSwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIE9wdXMiKTsK
LURFRklORV9pbnQocGNtMTZiLCA5MywgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIFBDTTE2Yi1uYiAo
OCBrSHopIik7Ci1ERUZJTkVfaW50KHBjbTE2Yl93YiwgOTQsICJSVFAgcGF5bG9hZCB0eXBlIGZv
ciBQQ00xNmItd2IgKDE2IGtIeikiKTsKLURFRklORV9pbnQocGNtMTZiX3N3YjMyLCA5NSwgIlJU
UCBwYXlsb2FkIHR5cGUgZm9yIFBDTTE2Yi1zd2IzMiAoMzIga0h6KSIpOwotREVGSU5FX2ludChw
Y20xNmJfc3diNDgsIDk2LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgUENNMTZiLXN3YjQ4ICg0OCBr
SHopIik7Ci1ERUZJTkVfaW50KGc3MjIsIDksICJSVFAgcGF5bG9hZCB0eXBlIGZvciBHLjcyMiIp
OwotREVGSU5FX2ludChhdnQsIDEwNiwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIEFWVC9EVE1GICg4
IGtIeikiKTsKLURFRklORV9pbnQoYXZ0XzE2LCAxMTQsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBB
VlQvRFRNRiAoMTYga0h6KSIpOwotREVGSU5FX2ludChhdnRfMzIsIDExNSwgIlJUUCBwYXlsb2Fk
IHR5cGUgZm9yIEFWVC9EVE1GICgzMiBrSHopIik7Ci1ERUZJTkVfaW50KGF2dF80OCwgMTE2LCAi
UlRQIHBheWxvYWQgdHlwZSBmb3IgQVZUL0RUTUYgKDQ4IGtIeikiKTsKLURFRklORV9pbnQocmVk
LCAxMTcsICJSVFAgcGF5bG9hZCB0eXBlIGZvciByZWR1bmRhbnQgYXVkaW8gKFJFRCkiKTsKLURF
RklORV9pbnQoY25fbmIsIDEzLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgY29tZm9ydCBub2lzZSAo
OCBrSHopIik7Ci1ERUZJTkVfaW50KGNuX3diLCA5OCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGNv
bWZvcnQgbm9pc2UgKDE2IGtIeikiKTsKLURFRklORV9pbnQoY25fc3diMzIsIDk5LCAiUlRQIHBh
eWxvYWQgdHlwZSBmb3IgY29tZm9ydCBub2lzZSAoMzIga0h6KSIpOwotREVGSU5FX2ludChjbl9z
d2I0OCwgMTAwLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgY29tZm9ydCBub2lzZSAoNDgga0h6KSIp
OwotREVGSU5FX3N0cmluZyhyZXBsYWNlbWVudF9hdWRpb19maWxlLAotICAgICAgICAgICAgICAi
IiwKLSAgICAgICAgICAgICAgIkEgUENNIGZpbGUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcG9wdWxh
dGUgIgotICAgICAgICAgICAgICAiZHVtbXkiCi0gICAgICAgICAgICAgICIgUlRQIHBhY2tldHMi
KTsKLURFRklORV9zdHJpbmcoc3NyYywKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAg
ICJPbmx5IHVzZSBwYWNrZXRzIHdpdGggdGhpcyBTU1JDIChkZWNpbWFsIG9yIGhleCwgdGhlIGxh
dHRlciAiCi0gICAgICAgICAgICAgICJzdGFydGluZyB3aXRoIDB4KSIpOwotREVGSU5FX2ludChh
dWRpb19sZXZlbCwgMSwgIkV4dGVuc2lvbiBJRCBmb3IgYXVkaW8gbGV2ZWwgKFJGQyA2NDY0KSIp
OwotREVGSU5FX2ludChhYnNfc2VuZF90aW1lLCAzLCAiRXh0ZW5zaW9uIElEIGZvciBhYnNvbHV0
ZSBzZW5kZXIgdGltZSIpOwotREVGSU5FX2ludCh0cmFuc3BvcnRfc2VxX25vLCA1LCAiRXh0ZW5z
aW9uIElEIGZvciB0cmFuc3BvcnQgc2VxdWVuY2UgbnVtYmVyIik7Ci1ERUZJTkVfaW50KHZpZGVv
X2NvbnRlbnRfdHlwZSwgNywgIkV4dGVuc2lvbiBJRCBmb3IgdmlkZW8gY29udGVudCB0eXBlIik7
Ci1ERUZJTkVfaW50KHZpZGVvX3RpbWluZywgOCwgIkV4dGVuc2lvbiBJRCBmb3IgdmlkZW8gdGlt
aW5nIik7Ci1ERUZJTkVfYm9vbChtYXRsYWJwbG90LAotICAgICAgICAgICAgZmFsc2UsCi0gICAg
ICAgICAgICAiR2VuZXJhdGVzIGEgbWF0bGFiIHNjcmlwdCBmb3IgcGxvdHRpbmcgdGhlIGRlbGF5
IHByb2ZpbGUiKTsKLURFRklORV9ib29sKHB5dGhvbnBsb3QsCi0gICAgICAgICAgICBmYWxzZSwK
LSAgICAgICAgICAgICJHZW5lcmF0ZXMgYSBweXRob24gc2NyaXB0IGZvciBwbG90dGluZyB0aGUg
ZGVsYXkgcHJvZmlsZSIpOwotREVGSU5FX2Jvb2woY29uY2VhbG1lbnRfZXZlbnRzLCBmYWxzZSwg
IlByaW50cyBjb25jZWFsbWVudCBldmVudHMiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHBjbXUsIDAs
ICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQQ00tdSIpOworV0VCUlRDX0RFRklORV9pbnQocGNtYSwg
OCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIFBDTS1hIik7CitXRUJSVENfREVGSU5FX2ludChpbGJj
LCAxMDIsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBpTEJDIik7CitXRUJSVENfREVGSU5FX2ludChp
c2FjLCAxMDMsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBpU0FDIik7CitXRUJSVENfREVGSU5FX2lu
dChpc2FjX3N3YiwgMTA0LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgaVNBQy1zd2IgKDMyIGtIeiki
KTsKK1dFQlJUQ19ERUZJTkVfaW50KG9wdXMsIDExMSwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIE9w
dXMiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHBjbTE2YiwgOTMsICJSVFAgcGF5bG9hZCB0eXBlIGZv
ciBQQ00xNmItbmIgKDgga0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQocGNtMTZiX3diLCA5NCwg
IlJUUCBwYXlsb2FkIHR5cGUgZm9yIFBDTTE2Yi13YiAoMTYga0h6KSIpOworV0VCUlRDX0RFRklO
RV9pbnQocGNtMTZiX3N3YjMyLAorICAgICAgICAgICAgICAgICAgOTUsCisgICAgICAgICAgICAg
ICAgICAiUlRQIHBheWxvYWQgdHlwZSBmb3IgUENNMTZiLXN3YjMyICgzMiBrSHopIik7CitXRUJS
VENfREVGSU5FX2ludChwY20xNmJfc3diNDgsCisgICAgICAgICAgICAgICAgICA5NiwKKyAgICAg
ICAgICAgICAgICAgICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQQ00xNmItc3diNDggKDQ4IGtIeiki
KTsKK1dFQlJUQ19ERUZJTkVfaW50KGc3MjIsIDksICJSVFAgcGF5bG9hZCB0eXBlIGZvciBHLjcy
MiIpOworV0VCUlRDX0RFRklORV9pbnQoYXZ0LCAxMDYsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBB
VlQvRFRNRiAoOCBrSHopIik7CitXRUJSVENfREVGSU5FX2ludChhdnRfMTYsIDExNCwgIlJUUCBw
YXlsb2FkIHR5cGUgZm9yIEFWVC9EVE1GICgxNiBrSHopIik7CitXRUJSVENfREVGSU5FX2ludChh
dnRfMzIsIDExNSwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIEFWVC9EVE1GICgzMiBrSHopIik7CitX
RUJSVENfREVGSU5FX2ludChhdnRfNDgsIDExNiwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIEFWVC9E
VE1GICg0OCBrSHopIik7CitXRUJSVENfREVGSU5FX2ludChyZWQsIDExNywgIlJUUCBwYXlsb2Fk
IHR5cGUgZm9yIHJlZHVuZGFudCBhdWRpbyAoUkVEKSIpOworV0VCUlRDX0RFRklORV9pbnQoY25f
bmIsIDEzLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgY29tZm9ydCBub2lzZSAoOCBrSHopIik7CitX
RUJSVENfREVGSU5FX2ludChjbl93YiwgOTgsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBjb21mb3J0
IG5vaXNlICgxNiBrSHopIik7CitXRUJSVENfREVGSU5FX2ludChjbl9zd2IzMiwgOTksICJSVFAg
cGF5bG9hZCB0eXBlIGZvciBjb21mb3J0IG5vaXNlICgzMiBrSHopIik7CitXRUJSVENfREVGSU5F
X2ludChjbl9zd2I0OCwgMTAwLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgY29tZm9ydCBub2lzZSAo
NDgga0h6KSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcocmVwbGFjZW1lbnRfYXVkaW9fZmlsZSwK
KyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIkEgUENNIGZp
bGUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcG9wdWxhdGUgIgorICAgICAgICAgICAgICAgICAgICAg
ImR1bW15IgorICAgICAgICAgICAgICAgICAgICAgIiBSVFAgcGFja2V0cyIpOworV0VCUlRDX0RF
RklORV9zdHJpbmcoCisgICAgc3NyYywKKyAgICAiIiwKKyAgICAiT25seSB1c2UgcGFja2V0cyB3
aXRoIHRoaXMgU1NSQyAoZGVjaW1hbCBvciBoZXgsIHRoZSBsYXR0ZXIgIgorICAgICJzdGFydGlu
ZyB3aXRoIDB4KSIpOworV0VCUlRDX0RFRklORV9pbnQoYXVkaW9fbGV2ZWwsIDEsICJFeHRlbnNp
b24gSUQgZm9yIGF1ZGlvIGxldmVsIChSRkMgNjQ2NCkiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGFi
c19zZW5kX3RpbWUsIDMsICJFeHRlbnNpb24gSUQgZm9yIGFic29sdXRlIHNlbmRlciB0aW1lIik7
CitXRUJSVENfREVGSU5FX2ludCh0cmFuc3BvcnRfc2VxX25vLAorICAgICAgICAgICAgICAgICAg
NSwKKyAgICAgICAgICAgICAgICAgICJFeHRlbnNpb24gSUQgZm9yIHRyYW5zcG9ydCBzZXF1ZW5j
ZSBudW1iZXIiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZpZGVvX2NvbnRlbnRfdHlwZSwgNywgIkV4
dGVuc2lvbiBJRCBmb3IgdmlkZW8gY29udGVudCB0eXBlIik7CitXRUJSVENfREVGSU5FX2ludCh2
aWRlb190aW1pbmcsIDgsICJFeHRlbnNpb24gSUQgZm9yIHZpZGVvIHRpbWluZyIpOworV0VCUlRD
X0RFRklORV9ib29sKG1hdGxhYnBsb3QsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAg
ICAgICAgICAgICAgICAgIkdlbmVyYXRlcyBhIG1hdGxhYiBzY3JpcHQgZm9yIHBsb3R0aW5nIHRo
ZSBkZWxheSBwcm9maWxlIik7CitXRUJSVENfREVGSU5FX2Jvb2wocHl0aG9ucGxvdCwKKyAgICAg
ICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiR2VuZXJhdGVzIGEgcHl0
aG9uIHNjcmlwdCBmb3IgcGxvdHRpbmcgdGhlIGRlbGF5IHByb2ZpbGUiKTsKK1dFQlJUQ19ERUZJ
TkVfYm9vbChjb25jZWFsbWVudF9ldmVudHMsIGZhbHNlLCAiUHJpbnRzIGNvbmNlYWxtZW50IGV2
ZW50cyIpOworV0VCUlRDX0RFRklORV9pbnQobWF4X25yX3BhY2tldHNfaW5fYnVmZmVyLAorICAg
ICAgICAgICAgICAgICAgNTAsCisgICAgICAgICAgICAgICAgICAiTWF4aW11bSBhbGxvd2VkIG51
bWJlciBvZiBwYWNrZXRzIGluIHRoZSBidWZmZXIiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChlbmFi
bGVfZmFzdF9hY2NlbGVyYXRlLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAg
ICAgICAgICAgICJFbmFibGVzIGppdHRlciBidWZmZXIgZmFzdCBhY2NlbGVyYXRlIik7CiAKIC8v
IE1hcHMgYSBjb2RlYyB0eXBlIHRvIGEgcHJpbnRhYmxlIG5hbWUgc3RyaW5nLgogc3RkOjpzdHJp
bmcgQ29kZWNOYW1lKE5ldEVxRGVjb2RlciBjb2RlYykgewpAQCAtMzA5LDI1ICszMjIsMjcgQEAg
c3RkOjp1bmlxdWVfcHRyPE5ldEVxVGVzdD4gTmV0RXFUZXN0RmFjdG9yeTo6SW5pdGlhbGl6ZVRl
c3QoCiAgICAgICB7RkxBR192aWRlb19jb250ZW50X3R5cGUsIGtSdHBFeHRlbnNpb25WaWRlb0Nv
bnRlbnRUeXBlfSwKICAgICAgIHtGTEFHX3ZpZGVvX3RpbWluZywga1J0cEV4dGVuc2lvblZpZGVv
VGltaW5nfX07CiAKKyAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyOworICAv
LyBDaGVjayBpZiBhbiBTU1JDIHZhbHVlIHdhcyBwcm92aWRlZC4KKyAgaWYgKHN0cmxlbihGTEFH
X3NzcmMpID4gMCkgeworICAgIHVpbnQzMl90IHNzcmM7CisgICAgUlRDX0NIRUNLKFBhcnNlU3Ny
YyhGTEFHX3NzcmMsICZzc3JjKSkgPDwgIkZsYWcgdmVyaWZpY2F0aW9uIGhhcyBmYWlsZWQuIjsK
KyAgICBzc3JjX2ZpbHRlciA9IHNzcmM7CisgIH0KKwogICBzdGQ6OnVuaXF1ZV9wdHI8TmV0RXFJ
bnB1dD4gaW5wdXQ7CiAgIGlmIChSdHBGaWxlU291cmNlOjpWYWxpZFJ0cER1bXAoaW5wdXRfZmls
ZV9uYW1lKSB8fAogICAgICAgUnRwRmlsZVNvdXJjZTo6VmFsaWRQY2FwKGlucHV0X2ZpbGVfbmFt
ZSkpIHsKLSAgICBpbnB1dC5yZXNldChuZXcgTmV0RXFSdHBEdW1wSW5wdXQoaW5wdXRfZmlsZV9u
YW1lLCBydHBfZXh0X21hcCkpOworICAgIGlucHV0LnJlc2V0KAorICAgICAgICBuZXcgTmV0RXFS
dHBEdW1wSW5wdXQoaW5wdXRfZmlsZV9uYW1lLCBydHBfZXh0X21hcCwgc3NyY19maWx0ZXIpKTsK
ICAgfSBlbHNlIHsKLSAgICBpbnB1dC5yZXNldChuZXcgTmV0RXFFdmVudExvZ0lucHV0KGlucHV0
X2ZpbGVfbmFtZSwgcnRwX2V4dF9tYXApKTsKKyAgICBpbnB1dC5yZXNldChuZXcgTmV0RXFFdmVu
dExvZ0lucHV0KGlucHV0X2ZpbGVfbmFtZSwgc3NyY19maWx0ZXIpKTsKICAgfQogCiAgIHN0ZDo6
Y291dCA8PCAiSW5wdXQgZmlsZTogIiA8PCBpbnB1dF9maWxlX25hbWUgPDwgc3RkOjplbmRsOwog
ICBSVENfQ0hFQ0soaW5wdXQpIDw8ICJDYW5ub3Qgb3BlbiBpbnB1dCBmaWxlIjsKICAgUlRDX0NI
RUNLKCFpbnB1dC0+ZW5kZWQoKSkgPDwgIklucHV0IGZpbGUgaXMgZW1wdHkiOwogCi0gIC8vIENo
ZWNrIGlmIGFuIFNTUkMgdmFsdWUgd2FzIHByb3ZpZGVkLgotICBpZiAoc3RybGVuKEZMQUdfc3Ny
YykgPiAwKSB7Ci0gICAgdWludDMyX3Qgc3NyYzsKLSAgICBSVENfQ0hFQ0soUGFyc2VTc3JjKEZM
QUdfc3NyYywgJnNzcmMpKSA8PCAiRmxhZyB2ZXJpZmljYXRpb24gaGFzIGZhaWxlZC4iOwotICAg
IHN0YXRpY19jYXN0PE5ldEVxUGFja2V0U291cmNlSW5wdXQqPihpbnB1dC5nZXQoKSktPlNlbGVj
dFNzcmMoc3NyYyk7Ci0gIH0KLQogICAvLyBDaGVjayB0aGUgc2FtcGxlIHJhdGUuCiAgIGFic2w6
Om9wdGlvbmFsPGludD4gc2FtcGxlX3JhdGVfaHo7CiAgIHN0ZDo6c2V0PHN0ZDo6cGFpcjxpbnQs
IHVpbnQzMl90Pj4gZGlzY2FyZGVkX3B0X2FuZF9zc3JjOwpAQCAtNDU3LDYgKzQ3Miw4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxOZXRFcVRlc3Q+IE5ldEVxVGVzdEZhY3Rvcnk6OkluaXRpYWxpemVUZXN0
KAogICBjYWxsYmFja3Muc2ltdWxhdGlvbl9lbmRlZF9jYWxsYmFjayA9IHN0YXRzX3Bsb3R0ZXJf
LmdldCgpOwogICBOZXRFcTo6Q29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnNhbXBsZV9yYXRlX2h6
ID0gKnNhbXBsZV9yYXRlX2h6OworICBjb25maWcubWF4X3BhY2tldHNfaW5fYnVmZmVyID0gRkxB
R19tYXhfbnJfcGFja2V0c19pbl9idWZmZXI7CisgIGNvbmZpZy5lbmFibGVfZmFzdF9hY2NlbGVy
YXRlID0gRkxBR19lbmFibGVfZmFzdF9hY2NlbGVyYXRlOwogICByZXR1cm4gYWJzbDo6bWFrZV91
bmlxdWU8TmV0RXFUZXN0Pihjb25maWcsIGNvZGVjcywgZXh0X2NvZGVjc18sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShpbnB1dCksIHN0ZDo6bW92ZShv
dXRwdXQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
dG9vbHMvcGFja2V0LmNjCmluZGV4IGIxYTliNjQxOTNiZjc1Yjc5YTcwYzc2ZTIwZjIwMTJlODlm
NTMwOGEuLjBlNzk1MWI2ZTNjMzQzZWMyMmI5NzBjMWQ2MTI3OWMwODcyYjZjNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9w
YWNrZXQuY2MKQEAgLTQ5LDYgKzQ5LDIwIEBAIFBhY2tldDo6UGFja2V0KHVpbnQ4X3QqIHBhY2tl
dF9tZW1vcnksCiAgIHZhbGlkX2hlYWRlcl8gPSBQYXJzZUhlYWRlcihwYXJzZXIpOwogfQogCitQ
YWNrZXQ6OlBhY2tldChjb25zdCBSVFBIZWFkZXImIGhlYWRlciwKKyAgICAgICAgICAgICAgIHNp
emVfdCB2aXJ0dWFsX3BhY2tldF9sZW5ndGhfYnl0ZXMsCisgICAgICAgICAgICAgICBzaXplX3Qg
dmlydHVhbF9wYXlsb2FkX2xlbmd0aF9ieXRlcywKKyAgICAgICAgICAgICAgIGRvdWJsZSB0aW1l
X21zKQorICAgIDogaGVhZGVyXyhoZWFkZXIpLAorICAgICAgcGF5bG9hZF9tZW1vcnlfKCksCisg
ICAgICBwYXlsb2FkXyhOVUxMKSwKKyAgICAgIHBhY2tldF9sZW5ndGhfYnl0ZXNfKDApLAorICAg
ICAgcGF5bG9hZF9sZW5ndGhfYnl0ZXNfKDApLAorICAgICAgdmlydHVhbF9wYWNrZXRfbGVuZ3Ro
X2J5dGVzXyh2aXJ0dWFsX3BhY2tldF9sZW5ndGhfYnl0ZXMpLAorICAgICAgdmlydHVhbF9wYXls
b2FkX2xlbmd0aF9ieXRlc18odmlydHVhbF9wYXlsb2FkX2xlbmd0aF9ieXRlcyksCisgICAgICB0
aW1lX21zXyh0aW1lX21zKSwKKyAgICAgIHZhbGlkX2hlYWRlcl8odHJ1ZSkge30KKwogUGFja2V0
OjpQYWNrZXQodWludDhfdCogcGFja2V0X21lbW9yeSwgc2l6ZV90IGFsbG9jYXRlZF9ieXRlcywg
ZG91YmxlIHRpbWVfbXMpCiAgICAgOiBwYXlsb2FkX21lbW9yeV8ocGFja2V0X21lbW9yeSksCiAg
ICAgICBwYXlsb2FkXyhOVUxMKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tl
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0LmgKaW5kZXggNjIzYzVjYjYzNTlhOTlmNWM5
M2EzOWQyM2EwN2U0MTFjYmE5MWFjZS4uMzkxMzdhYWU0M2EwYWVjNTkyMzQwMDc1NDJiMTA4ZmNm
YTdiODgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvdG9vbHMvcGFja2V0LmgKQEAgLTUwLDcgKzUwLDE3IEBAIGNsYXNzIFBhY2tldCB7
CiAgICAgICAgICBkb3VibGUgdGltZV9tcywKICAgICAgICAgIGNvbnN0IFJ0cEhlYWRlclBhcnNl
ciYgcGFyc2VyKTsKIAotICAvLyBUaGUgZm9sbG93aW5nIHR3byBjb25zdHJ1Y3RvcnMgYXJlIHRo
ZSBzYW1lIGFzIGFib3ZlLCBidXQgd2l0aG91dCBhCisgIC8vIFNhbWUgYXMgYWJvdmUsIGJ1dCBj
cmVhdGVzIHRoZSBwYWNrZXQgZnJvbSBhbiBhbHJlYWR5IHBhcnNlZCBSVFBIZWFkZXIuCisgIC8v
IFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgd2hlbiByZWFkaW5nIFJUUCBkdW1wIGZpbGVzIHRoYXQg
b25seSBjb250YWluIHRoZQorICAvLyBSVFAgaGVhZGVycywgYW5kIG5vIHBheWxvYWQuIFRoZSB8
dmlydHVhbF9wYWNrZXRfbGVuZ3RoX2J5dGVzfCB0ZWxscyB3aGF0CisgIC8vIHNpemUgdGhlIHBh
Y2tldCBoYWQgb24gd2lyZSwgaW5jbHVkaW5nIHRoZSBub3cgZGlzY2FyZGVkIHBheWxvYWQsCisg
IC8vIFRoZSB8dmlydHVhbF9wYXlsb2FkX2xlbmd0aF9ieXRlc3wgdGVsbHMgdGhlIHNpemUgb2Yg
dGhlIHBheWxvYWQuCisgIFBhY2tldChjb25zdCBSVFBIZWFkZXImIGhlYWRlciwKKyAgICAgICAg
IHNpemVfdCB2aXJ0dWFsX3BhY2tldF9sZW5ndGhfYnl0ZXMsCisgICAgICAgICBzaXplX3Qgdmly
dHVhbF9wYXlsb2FkX2xlbmd0aF9ieXRlcywKKyAgICAgICAgIGRvdWJsZSB0aW1lX21zKTsKKwor
ICAvLyBUaGUgZm9sbG93aW5nIGNvbnN0cnVjdG9ycyBhcmUgdGhlIHNhbWUgYXMgdGhlIGZpcnN0
IHR3bywgYnV0IHdpdGhvdXQgYQogICAvLyBwYXJzZXIuIE5vdGUgdGhhdCB3aGVuIHRoZSBvYmpl
Y3QgaXMgY29uc3RydWN0ZWQgdXNpbmcgYW55IG9mIHRoZXNlCiAgIC8vIG1ldGhvZHMsIHRoZSBo
ZWFkZXIgd2lsbCBiZSBwYXJzZWQgdXNpbmcgYSBkZWZhdWx0IFJ0cEhlYWRlclBhcnNlciBvYmpl
Y3QuCiAgIC8vIEluIHBhcnRpY3VsYXIsIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyB3b24ndCBiZSBw
YXJzZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXRfc291cmNlLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0X3NvdXJjZS5jYwppbmRleCAzMGJmNDMxODM1NTUyMzk1
ZTQ4Y2Y3ODlhYWEzYzQyZGNmN2M0NWYxLi41OThhZTZlZGQ0MDhkM2UzZWMwOWYxMjlkZDVhY2Ex
ZWJiMTJkZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXRfc291cmNlLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldF9zb3VyY2UuY2MKQEAgLTEzLDcgKzEzLDcg
QEAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewogCi1QYWNrZXRTb3VyY2U6
OlBhY2tldFNvdXJjZSgpIDogdXNlX3NzcmNfZmlsdGVyXyhmYWxzZSksIHNzcmNfKDApIHt9CitQ
YWNrZXRTb3VyY2U6OlBhY2tldFNvdXJjZSgpID0gZGVmYXVsdDsKIAogUGFja2V0U291cmNlOjp+
UGFja2V0U291cmNlKCkgPSBkZWZhdWx0OwogCkBAIC0yMSwxMCArMjEsNSBAQCB2b2lkIFBhY2tl
dFNvdXJjZTo6RmlsdGVyT3V0UGF5bG9hZFR5cGUodWludDhfdCBwYXlsb2FkX3R5cGUpIHsKICAg
ZmlsdGVyXy5zZXQocGF5bG9hZF90eXBlLCB0cnVlKTsKIH0KIAotdm9pZCBQYWNrZXRTb3VyY2U6
OlNlbGVjdFNzcmModWludDMyX3Qgc3NyYykgewotICB1c2Vfc3NyY19maWx0ZXJfID0gdHJ1ZTsK
LSAgc3NyY18gPSBzc3JjOwotfQotCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0X3NvdXJjZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0X3NvdXJjZS5oCmluZGV4IGZiNjg5ZTMzZDRlNDg1
MmM5ODE0NDBhMmFlMjE4MGI4MjUxNTgwNGQuLmNiODZhOTg5OTlkZTA2YmZlZTg1YzU2OGZlOThj
YjZmZjIzZTIwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldF9zb3VyY2Uu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXRfc291cmNlLmgKQEAgLTMyLDEzICszMiw4
IEBAIGNsYXNzIFBhY2tldFNvdXJjZSB7CiAKICAgdmlydHVhbCB2b2lkIEZpbHRlck91dFBheWxv
YWRUeXBlKHVpbnQ4X3QgcGF5bG9hZF90eXBlKTsKIAotICB2aXJ0dWFsIHZvaWQgU2VsZWN0U3Ny
Yyh1aW50MzJfdCBzc3JjKTsKLQogIHByb3RlY3RlZDoKICAgc3RkOjpiaXRzZXQ8MTI4PiBmaWx0
ZXJfOyAgLy8gUGF5bG9hZCB0eXBlIGlzIDcgYml0cyBpbiB0aGUgUkZDLgotICAvLyBJZiBTU1JD
IGZpbHRlcmluZyBkaXNjYXJkcyBhbGwgcGFja2V0IHRoYXQgZG8gbm90IG1hdGNoIHRoZSBTU1JD
LgotICBib29sIHVzZV9zc3JjX2ZpbHRlcl87ICAvLyBUcnVlIHdoZW4gU1NSQyBmaWx0ZXJpbmcg
aXMgYWN0aXZlLgotICB1aW50MzJfdCBzc3JjXzsgIC8vIFRoZSBzZWxlY3RlZCBTU1JDLiBBbGwg
b3RoZXIgU1NSQ3Mgd2lsbCBiZSBkaXNjYXJkZWQuCiAKICBwcml2YXRlOgogICBSVENfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKFBhY2tldFNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0Y19l
dmVudF9sb2dfc291cmNlLmNjCmluZGV4IDllNDM1YzdjZjg4ZmMyYjlkNmQ4NjZkZTQ4MDg4OWYx
ODZiM2Y4M2YuLjU4MmMyZjJmMTM1NTFmOTg3YmFhZjkxYWFlYTJlYzg5NzZmZjJkNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0Y19ldmVudF9sb2dfc291cmNlLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL3Rvb2xzL3J0Y19ldmVudF9sb2dfc291cmNlLmNjCkBAIC0xMyw5NCArMTMsMTE1
IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvcnRjX2V2ZW50X3Byb2Nlc3Nvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL3Rvb2xzL3BhY2tldC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9ydHBfaGVhZGVyX3BhcnNlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIAotUnRjRXZlbnRMb2dTb3Vy
Y2UqIFJ0Y0V2ZW50TG9nU291cmNlOjpDcmVhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFt
ZSkgeworbmFtZXNwYWNlIHsKK2Jvb2wgU2hvdWxkU2tpcFN0cmVhbShQYXJzZWRSdGNFdmVudExv
Z05ldzo6TWVkaWFUeXBlIG1lZGlhX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3Qgc3NyYywKKyAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4g
c3NyY19maWx0ZXIpIHsKKyAgaWYgKG1lZGlhX3R5cGUgIT0gUGFyc2VkUnRjRXZlbnRMb2dOZXc6
Ok1lZGlhVHlwZTo6QVVESU8pCisgICAgcmV0dXJuIHRydWU7CisgIGlmIChzc3JjX2ZpbHRlci5o
YXNfdmFsdWUoKSAmJiBzc3JjICE9ICpzc3JjX2ZpbHRlcikKKyAgICByZXR1cm4gdHJ1ZTsKKyAg
cmV0dXJuIGZhbHNlOworfQorfSAgLy8gbmFtZXNwYWNlCisKK1J0Y0V2ZW50TG9nU291cmNlKiBS
dGNFdmVudExvZ1NvdXJjZTo6Q3JlYXRlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25h
bWUsCisgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyKSB7CiAgIFJ0Y0V2
ZW50TG9nU291cmNlKiBzb3VyY2UgPSBuZXcgUnRjRXZlbnRMb2dTb3VyY2UoKTsKLSAgUlRDX0NI
RUNLKHNvdXJjZS0+T3BlbkZpbGUoZmlsZV9uYW1lKSk7CisgIFJUQ19DSEVDSyhzb3VyY2UtPk9w
ZW5GaWxlKGZpbGVfbmFtZSwgc3NyY19maWx0ZXIpKTsKICAgcmV0dXJuIHNvdXJjZTsKIH0KIAog
UnRjRXZlbnRMb2dTb3VyY2U6On5SdGNFdmVudExvZ1NvdXJjZSgpIHt9CiAKLWJvb2wgUnRjRXZl
bnRMb2dTb3VyY2U6OlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUg
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgaWQpIHsKLSAgUlRDX0NIRUNLKHBhcnNlcl8uZ2V0KCkpOwotICByZXR1cm4gcGFy
c2VyXy0+UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24odHlwZSwgaWQpOwotfQotCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFja2V0PiBSdGNFdmVudExvZ1NvdXJjZTo6TmV4dFBhY2tldCgpIHsKLSAgZm9y
ICg7IHJ0cF9wYWNrZXRfaW5kZXhfIDwgcGFyc2VkX3N0cmVhbV8uR2V0TnVtYmVyT2ZFdmVudHMo
KTsKLSAgICAgICBydHBfcGFja2V0X2luZGV4XysrKSB7Ci0gICAgaWYgKHBhcnNlZF9zdHJlYW1f
LkdldEV2ZW50VHlwZShydHBfcGFja2V0X2luZGV4XykgPT0KLSAgICAgICAgUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OkV2ZW50VHlwZTo6UlRQX0VWRU5UKSB7Ci0gICAgICBQYWNrZXREaXJlY3Rpb24g
ZGlyZWN0aW9uOwotICAgICAgc2l6ZV90IGhlYWRlcl9sZW5ndGg7Ci0gICAgICBzaXplX3QgcGFj
a2V0X2xlbmd0aDsKLSAgICAgIHVpbnQ2NF90IHRpbWVzdGFtcF91cyA9IHBhcnNlZF9zdHJlYW1f
LkdldFRpbWVzdGFtcChydHBfcGFja2V0X2luZGV4Xyk7Ci0gICAgICBwYXJzZWRfc3RyZWFtXy5H
ZXRSdHBIZWFkZXIocnRwX3BhY2tldF9pbmRleF8sICZkaXJlY3Rpb24sIG51bGxwdHIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhlYWRlcl9sZW5ndGgsICZwYWNrZXRfbGVu
Z3RoLCBudWxscHRyKTsKLQotICAgICAgaWYgKGRpcmVjdGlvbiAhPSBrSW5jb21pbmdQYWNrZXQp
IHsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0KLSAgICAgIHVpbnQ4X3QqIHBhY2tldF9o
ZWFkZXIgPSBuZXcgdWludDhfdFtoZWFkZXJfbGVuZ3RoXTsKLSAgICAgIHBhcnNlZF9zdHJlYW1f
LkdldFJ0cEhlYWRlcihydHBfcGFja2V0X2luZGV4XywgbnVsbHB0ciwgcGFja2V0X2hlYWRlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyKTsKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWNrZXQ+IHBhY2tldCgKLSAgICAgICAgICBu
ZXcgUGFja2V0KHBhY2tldF9oZWFkZXIsIGhlYWRlcl9sZW5ndGgsIHBhY2tldF9sZW5ndGgsCi0g
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFtcF91cykgLyAx
MDAwLCAqcGFyc2VyXy5nZXQoKSkpOwotCi0gICAgICBpZiAoIXBhY2tldC0+dmFsaWRfaGVhZGVy
KCkpIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJXYXJuaW5nOiBQYWNrZXQgd2l0aCBpbmRleCAi
IDw8IHJ0cF9wYWNrZXRfaW5kZXhfCi0gICAgICAgICAgICAgICAgICA8PCAiIGhhcyBhbiBpbnZh
bGlkIGhlYWRlciBhbmQgd2lsbCBiZSBpZ25vcmVkLiIgPDwgc3RkOjplbmRsOwotICAgICAgICBj
b250aW51ZTsKLSAgICAgIH0KLQotICAgICAgaWYgKHBhcnNlZF9zdHJlYW1fLkdldE1lZGlhVHlw
ZShwYWNrZXQtPmhlYWRlcigpLnNzcmMsIGRpcmVjdGlvbikgIT0KLSAgICAgICAgICBQYXJzZWRS
dGNFdmVudExvZ05ldzo6TWVkaWFUeXBlOjpBVURJTykgewotICAgICAgICBjb250aW51ZTsKLSAg
ICAgIH0KLQotICAgICAgLy8gQ2hlY2sgaWYgdGhlIHBhY2tldCBzaG91bGQgbm90IGJlIGZpbHRl
cmVkIG91dC4KLSAgICAgIGlmICghZmlsdGVyXy50ZXN0KHBhY2tldC0+aGVhZGVyKCkucGF5bG9h
ZFR5cGUpICYmCi0gICAgICAgICAgISh1c2Vfc3NyY19maWx0ZXJfICYmIHBhY2tldC0+aGVhZGVy
KCkuc3NyYyAhPSBzc3JjXykpIHsKLSAgICAgICAgKytydHBfcGFja2V0X2luZGV4XzsKLSAgICAg
ICAgcmV0dXJuIHBhY2tldDsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuIG51bGxwdHI7
CisgIGlmIChydHBfcGFja2V0X2luZGV4XyA+PSBydHBfcGFja2V0c18uc2l6ZSgpKQorICAgIHJl
dHVybiBudWxscHRyOworCisgIHN0ZDo6dW5pcXVlX3B0cjxQYWNrZXQ+IHBhY2tldCA9IHN0ZDo6
bW92ZShydHBfcGFja2V0c19bcnRwX3BhY2tldF9pbmRleF8rK10pOworICByZXR1cm4gcGFja2V0
OwogfQogCiBpbnQ2NF90IFJ0Y0V2ZW50TG9nU291cmNlOjpOZXh0QXVkaW9PdXRwdXRFdmVudE1z
KCkgewotICB3aGlsZSAoYXVkaW9fb3V0cHV0X2luZGV4XyA8IHBhcnNlZF9zdHJlYW1fLkdldE51
bWJlck9mRXZlbnRzKCkpIHsKLSAgICBpZiAocGFyc2VkX3N0cmVhbV8uR2V0RXZlbnRUeXBlKGF1
ZGlvX291dHB1dF9pbmRleF8pID09Ci0gICAgICAgIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVu
dFR5cGU6OkFVRElPX1BMQVlPVVRfRVZFTlQpIHsKLSAgICAgIExvZ2dlZEF1ZGlvUGxheW91dEV2
ZW50IHBsYXlvdXRfZXZlbnQgPQotICAgICAgICAgIHBhcnNlZF9zdHJlYW1fLkdldEF1ZGlvUGxh
eW91dChhdWRpb19vdXRwdXRfaW5kZXhfKTsKLSAgICAgIGlmICghKHVzZV9zc3JjX2ZpbHRlcl8g
JiYgcGxheW91dF9ldmVudC5zc3JjICE9IHNzcmNfKSkgewotICAgICAgICBhdWRpb19vdXRwdXRf
aW5kZXhfKys7Ci0gICAgICAgIHJldHVybiBwbGF5b3V0X2V2ZW50LnRpbWVzdGFtcF91cyAvIDEw
MDA7Ci0gICAgICB9CisgIGlmIChhdWRpb19vdXRwdXRfaW5kZXhfID49IGF1ZGlvX291dHB1dHNf
LnNpemUoKSkKKyAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7
CisKKyAgaW50NjRfdCBvdXRwdXRfdGltZV9tcyA9IGF1ZGlvX291dHB1dHNfW2F1ZGlvX291dHB1
dF9pbmRleF8rK107CisgIHJldHVybiBvdXRwdXRfdGltZV9tczsKK30KKworUnRjRXZlbnRMb2dT
b3VyY2U6OlJ0Y0V2ZW50TG9nU291cmNlKCkgOiBQYWNrZXRTb3VyY2UoKSB7fQorCitib29sIFJ0
Y0V2ZW50TG9nU291cmNlOjpPcGVuRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+
IHNzcmNfZmlsdGVyKSB7CisgIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3IHBhcnNlZF9sb2c7CisgIGlm
ICghcGFyc2VkX2xvZy5QYXJzZUZpbGUoZmlsZV9uYW1lKSkKKyAgICByZXR1cm4gZmFsc2U7CisK
KyAgY29uc3QgYXV0byBmaXJzdF9sb2dfZW5kX3RpbWVfdXMgPQorICAgICAgcGFyc2VkX2xvZy5z
dG9wX2xvZ19ldmVudHMoKS5lbXB0eSgpCisgICAgICAgICAgPyBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDY0X3Q+OjptYXgoKQorICAgICAgICAgIDogcGFyc2VkX2xvZy5zdG9wX2xvZ19ldmVudHMo
KS5mcm9udCgpLmxvZ190aW1lX3VzKCk7CisKKyAgYXV0byBoYW5kbGVfcnRwX3BhY2tldCA9Cisg
ICAgICBbdGhpcywKKyAgICAgICBmaXJzdF9sb2dfZW5kX3RpbWVfdXNdKGNvbnN0IHdlYnJ0Yzo6
TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIGluY29taW5nKSB7CisgICAgICAgIGlmICghZmlsdGVy
Xy50ZXN0KGluY29taW5nLnJ0cC5oZWFkZXIucGF5bG9hZFR5cGUpICYmCisgICAgICAgICAgICBp
bmNvbWluZy5sb2dfdGltZV91cygpIDwgZmlyc3RfbG9nX2VuZF90aW1lX3VzKSB7CisgICAgICAg
ICAgcnRwX3BhY2tldHNfLmVtcGxhY2VfYmFjayhhYnNsOjptYWtlX3VuaXF1ZTxQYWNrZXQ+KAor
ICAgICAgICAgICAgICBpbmNvbWluZy5ydHAuaGVhZGVyLCBpbmNvbWluZy5ydHAudG90YWxfbGVu
Z3RoLAorICAgICAgICAgICAgICBpbmNvbWluZy5ydHAudG90YWxfbGVuZ3RoIC0gaW5jb21pbmcu
cnRwLmhlYWRlcl9sZW5ndGgsCisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oaW5j
b21pbmcubG9nX3RpbWVfbXMoKSkpKTsKKyAgICAgICAgfQorICAgICAgfTsKKworICBhdXRvIGhh
bmRsZV9hdWRpb19wbGF5b3V0ID0KKyAgICAgIFt0aGlzLCBmaXJzdF9sb2dfZW5kX3RpbWVfdXNd
KAorICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6TG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQmIGF1ZGlv
X3BsYXlvdXQpIHsKKyAgICAgICAgaWYgKGF1ZGlvX3BsYXlvdXQubG9nX3RpbWVfdXMoKSA8IGZp
cnN0X2xvZ19lbmRfdGltZV91cykgeworICAgICAgICAgIGF1ZGlvX291dHB1dHNfLmVtcGxhY2Vf
YmFjayhhdWRpb19wbGF5b3V0LmxvZ190aW1lX21zKCkpOworICAgICAgICB9CisgICAgICB9Owor
CisgIC8vIFRoaXMgd291bGRuJ3QgYmUgbmVlZGVkIGlmIHdlIGtuZXcgdGhhdCB0aGVyZSB3YXMg
YXQgbW9zdCBvbmUgYXVkaW8gc3RyZWFtLgorICB3ZWJydGM6OlJ0Y0V2ZW50UHJvY2Vzc29yIGV2
ZW50X3Byb2Nlc3NvcjsKKyAgZm9yIChjb25zdCBhdXRvJiBydHBfcGFja2V0cyA6IHBhcnNlZF9s
b2cuaW5jb21pbmdfcnRwX3BhY2tldHNfYnlfc3NyYygpKSB7CisgICAgUGFyc2VkUnRjRXZlbnRM
b2dOZXc6Ok1lZGlhVHlwZSBtZWRpYV90eXBlID0KKyAgICAgICAgcGFyc2VkX2xvZy5HZXRNZWRp
YVR5cGUocnRwX3BhY2tldHMuc3NyYywgd2VicnRjOjprSW5jb21pbmdQYWNrZXQpOworICAgIGlm
IChTaG91bGRTa2lwU3RyZWFtKG1lZGlhX3R5cGUsIHJ0cF9wYWNrZXRzLnNzcmMsIHNzcmNfZmls
dGVyKSkgeworICAgICAgY29udGludWU7CiAgICAgfQotICAgIGF1ZGlvX291dHB1dF9pbmRleF8r
KzsKKyAgICBhdXRvIHJ0cF92aWV3ID0gYWJzbDo6bWFrZV91bmlxdWU8CisgICAgICAgIHdlYnJ0
Yzo6UHJvY2Vzc2FibGVFdmVudExpc3Q8d2VicnRjOjpMb2dnZWRSdHBQYWNrZXRJbmNvbWluZz4+
KAorICAgICAgICBydHBfcGFja2V0cy5pbmNvbWluZ19wYWNrZXRzLmJlZ2luKCksCisgICAgICAg
IHJ0cF9wYWNrZXRzLmluY29taW5nX3BhY2tldHMuZW5kKCksIGhhbmRsZV9ydHBfcGFja2V0KTsK
KyAgICBldmVudF9wcm9jZXNzb3IuQWRkRXZlbnRzKHN0ZDo6bW92ZShydHBfdmlldykpOworICB9
CisKKyAgZm9yIChjb25zdCBhdXRvJiBhdWRpb19wbGF5b3V0cyA6IHBhcnNlZF9sb2cuYXVkaW9f
cGxheW91dF9ldmVudHMoKSkgeworICAgIGlmIChzc3JjX2ZpbHRlci5oYXNfdmFsdWUoKSAmJiBh
dWRpb19wbGF5b3V0cy5maXJzdCAhPSAqc3NyY19maWx0ZXIpCisgICAgICBjb250aW51ZTsKKyAg
ICBhdXRvIGF1ZGlvX3ZpZXcgPSBhYnNsOjptYWtlX3VuaXF1ZTwKKyAgICAgICAgd2VicnRjOjpQ
cm9jZXNzYWJsZUV2ZW50TGlzdDx3ZWJydGM6OkxvZ2dlZEF1ZGlvUGxheW91dEV2ZW50Pj4oCisg
ICAgICAgIGF1ZGlvX3BsYXlvdXRzLnNlY29uZC5iZWdpbigpLCBhdWRpb19wbGF5b3V0cy5zZWNv
bmQuZW5kKCksCisgICAgICAgIGhhbmRsZV9hdWRpb19wbGF5b3V0KTsKKyAgICBldmVudF9wcm9j
ZXNzb3IuQWRkRXZlbnRzKHN0ZDo6bW92ZShhdWRpb192aWV3KSk7CiAgIH0KLSAgcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOwotfQogCi1SdGNFdmVudExvZ1NvdXJj
ZTo6UnRjRXZlbnRMb2dTb3VyY2UoKQotICAgIDogUGFja2V0U291cmNlKCksIHBhcnNlcl8oUnRw
SGVhZGVyUGFyc2VyOjpDcmVhdGUoKSkge30KKyAgLy8gRmlsbHMgaW4gcnRwX3BhY2tldHNfIGFu
ZCBhdWRpb19vdXRwdXRzXy4KKyAgZXZlbnRfcHJvY2Vzc29yLlByb2Nlc3NFdmVudHNJbk9yZGVy
KCk7CiAKLWJvb2wgUnRjRXZlbnRMb2dTb3VyY2U6Ok9wZW5GaWxlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBmaWxlX25hbWUpIHsKLSAgcmV0dXJuIHBhcnNlZF9zdHJlYW1fLlBhcnNlRmlsZShmaWxlX25h
bWUpOworICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHRlc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0Y19ldmVudF9sb2dfc291cmNlLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5oCmluZGV4IGRiNGViMTllMTFmMzY5ZGI5MDQ0
NzBjYmI1MjhlYjI1NDU4NmUxYWMuLjZiNzYxZjdkYmJkMjYyZDZmY2VkYWE1OGFmZjIwNWFmODkw
ZTZkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0Y19ldmVudF9sb2dfc291cmNl
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRjX2V2ZW50X2xvZ19zb3VyY2UuaApAQCAtMTMs
NyArMTMsOSBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNs
dWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVk
ZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldF9zb3VyY2UuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgpA
QCAtMzEsMTMgKzMzLDExIEBAIGNsYXNzIFJ0Y0V2ZW50TG9nU291cmNlIDogcHVibGljIFBhY2tl
dFNvdXJjZSB7CiAgcHVibGljOgogICAvLyBDcmVhdGVzIGFuIFJ0Y0V2ZW50TG9nU291cmNlIHJl
YWRpbmcgZnJvbSB8ZmlsZV9uYW1lfC4gSWYgdGhlIGZpbGUgY2Fubm90CiAgIC8vIGJlIG9wZW5l
ZCwgb3IgaGFzIHRoZSB3cm9uZyBmb3JtYXQsIE5VTEwgd2lsbCBiZSByZXR1cm5lZC4KLSAgc3Rh
dGljIFJ0Y0V2ZW50TG9nU291cmNlKiBDcmVhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFt
ZSk7CisgIHN0YXRpYyBSdGNFdmVudExvZ1NvdXJjZSogQ3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9w
dGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlcik7CiAKICAgdmlydHVhbCB+UnRjRXZlbnRMb2dT
b3VyY2UoKTsKIAotICAvLyBSZWdpc3RlcnMgYW4gUlRQIGhlYWRlciBleHRlbnNpb24gYW5kIGJp
bmRzIGl0IHRvIHxpZHwuCi0gIHZpcnR1YWwgYm9vbCBSZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lv
bihSVFBFeHRlbnNpb25UeXBlIHR5cGUsIHVpbnQ4X3QgaWQpOwotCiAgIHN0ZDo6dW5pcXVlX3B0
cjxQYWNrZXQ+IE5leHRQYWNrZXQoKSBvdmVycmlkZTsKIAogICAvLyBSZXR1cm5zIHRoZSB0aW1l
c3RhbXAgb2YgdGhlIG5leHQgYXVkaW8gb3V0cHV0IGV2ZW50LCBpbiBtaWxsaXNlY29uZHMuIFRo
ZQpAQCAtNDgsMTQgKzQ4LDE0IEBAIGNsYXNzIFJ0Y0V2ZW50TG9nU291cmNlIDogcHVibGljIFBh
Y2tldFNvdXJjZSB7CiAgcHJpdmF0ZToKICAgUnRjRXZlbnRMb2dTb3VyY2UoKTsKIAotICBib29s
IE9wZW5GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpOworICBib29sIE9wZW5GaWxl
KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgYWJzbDo6b3B0
aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyKTsKIAorICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8UGFja2V0Pj4gcnRwX3BhY2tldHNfOwogICBzaXplX3QgcnRwX3BhY2tldF9pbmRleF8g
PSAwOworICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiBhdWRpb19vdXRwdXRzXzsKICAgc2l6ZV90IGF1
ZGlvX291dHB1dF9pbmRleF8gPSAwOwogCi0gIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3IHBhcnNlZF9z
dHJlYW1fOwotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwSGVhZGVyUGFyc2VyPiBwYXJzZXJfOwotCiAg
IFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oUnRjRXZlbnRMb2dTb3VyY2UpOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2FuYWx5emUuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90b29scy9ydHBfYW5hbHl6ZS5jYwppbmRleCBmOTM5MDM4MWNkMzhkMGQxMmVjMTEzYTMxMzU2
NWVhZGY3MDQ4NGZlLi45ZDMwNDFlYTY2OGRjYTFkZWJkYzMyMGNiYTU0NjM2MzBhMjQ4ZDhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfYW5hbHl6ZS5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90b29scy9ydHBfYW5hbHl6ZS5jYwpAQCAtMTksMTYgKzE5LDE2IEBACiAjaW5jbHVkZSAi
cnRjX2Jhc2UvZmxhZ3MuaCIKIAogLy8gRGVmaW5lIGNvbW1hbmQgbGluZSBmbGFncy4KLURFRklO
RV9pbnQocmVkLCAxMTcsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBSRUQiKTsKLURFRklORV9pbnQo
YXVkaW9fbGV2ZWwsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiRXh0ZW5zaW9uIElEIGZv
ciBhdWRpbyBsZXZlbCAoUkZDIDY0NjQpOyAiCi0gICAgICAgICAgICItMSBub3QgdG8gcHJpbnQg
YXVkaW8gbGV2ZWwiKTsKLURFRklORV9pbnQoYWJzX3NlbmRfdGltZSwKLSAgICAgICAgICAgLTEs
Ci0gICAgICAgICAgICJFeHRlbnNpb24gSUQgZm9yIGFic29sdXRlIHNlbmRlciB0aW1lOyAiCi0g
ICAgICAgICAgICItMSBub3QgdG8gcHJpbnQgYWJzb2x1dGUgc2VuZCB0aW1lIik7Ci1ERUZJTkVf
Ym9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklORV9p
bnQocmVkLCAxMTcsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBSRUQiKTsKK1dFQlJUQ19ERUZJTkVf
aW50KGF1ZGlvX2xldmVsLAorICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAg
ICAiRXh0ZW5zaW9uIElEIGZvciBhdWRpbyBsZXZlbCAoUkZDIDY0NjQpOyAiCisgICAgICAgICAg
ICAgICAgICAiLTEgbm90IHRvIHByaW50IGF1ZGlvIGxldmVsIik7CitXRUJSVENfREVGSU5FX2lu
dChhYnNfc2VuZF90aW1lLAorICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAg
ICAiRXh0ZW5zaW9uIElEIGZvciBhYnNvbHV0ZSBzZW5kZXIgdGltZTsgIgorICAgICAgICAgICAg
ICAgICAgIi0xIG5vdCB0byBwcmludCBhYnNvbHV0ZSBzZW5kIHRpbWUiKTsKK1dFQlJUQ19ERUZJ
TkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMgbWVzc2FnZSIpOwogCiBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgIHN0ZDo6c3RyaW5nIHByb2dyYW1fbmFtZSA9IGFy
Z3ZbMF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZW5jb2RlLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvdG9vbHMvcnRwX2VuY29kZS5jYwppbmRleCA1MDY1Y2ExNjc1N2QwNmZhNTI1ZTZl
M2U3N2FkNDFkN2NmMjFiMjk4Li4xNGM2ZTU4YTlkNjQ0YTczMWZjMDVlZTg0YWE5ZjBjMzNjZDg0
YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZW5jb2RlLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL3Rvb2xzL3J0cF9lbmNvZGUuY2MKQEAgLTQwLDIwICs0MCwyNCBAQCBuYW1lc3Bh
Y2UgdGVzdCB7CiBuYW1lc3BhY2UgewogCiAvLyBEZWZpbmUgY29tbWFuZCBsaW5lIGZsYWdzLgot
REVGSU5FX2Jvb2wobGlzdF9jb2RlY3MsIGZhbHNlLCAiRW51bWVyYXRlIGFsbCBjb2RlY3MiKTsK
LURFRklORV9zdHJpbmcoY29kZWMsICJvcHVzIiwgIkNvZGVjIHRvIHVzZSIpOwotREVGSU5FX2lu
dChmcmFtZV9sZW4sIDAsICJGcmFtZSBsZW5ndGggaW4gbXM7IDAgaW5kaWNhdGVzIGNvZGVjIGRl
ZmF1bHQgdmFsdWUiKTsKLURFRklORV9pbnQoYml0cmF0ZSwgMCwgIkJpdHJhdGUgaW4ga2Jwczsg
MCBpbmRpY2F0ZXMgY29kZWMgZGVmYXVsdCB2YWx1ZSIpOwotREVGSU5FX2ludChwYXlsb2FkX3R5
cGUsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiUlRQIHBheWxvYWQgdHlwZTsgLTEgaW5k
aWNhdGVzIGNvZGVjIGRlZmF1bHQgdmFsdWUiKTsKLURFRklORV9pbnQoY25nX3BheWxvYWRfdHlw
ZSwKLSAgICAgICAgICAgLTEsCi0gICAgICAgICAgICJSVFAgcGF5bG9hZCB0eXBlIGZvciBDTkc7
IC0xIGluZGljYXRlcyBkZWZhdWx0IHZhbHVlIik7Ci1ERUZJTkVfaW50KHNzcmMsIDAsICJTU1JD
IHRvIHdyaXRlIHRvIHRoZSBSVFAgaGVhZGVyIik7Ci1ERUZJTkVfYm9vbChkdHgsIGZhbHNlLCAi
VXNlIERUWC9DTkciKTsKLURFRklORV9pbnQoc2FtcGxlX3JhdGUsIDQ4MDAwLCAiU2FtcGxlIHJh
dGUgb2YgdGhlIGlucHV0IGZpbGUiKTsKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQg
dGhpcyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2Jvb2wobGlzdF9jb2RlY3MsIGZhbHNlLCAi
RW51bWVyYXRlIGFsbCBjb2RlY3MiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGNvZGVjLCAib3B1
cyIsICJDb2RlYyB0byB1c2UiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGZyYW1lX2xlbiwKKyAgICAg
ICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiRnJhbWUgbGVuZ3RoIGluIG1zOyAw
IGluZGljYXRlcyBjb2RlYyBkZWZhdWx0IHZhbHVlIik7CitXRUJSVENfREVGSU5FX2ludChiaXRy
YXRlLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJCaXRyYXRlIGlu
IGticHM7IDAgaW5kaWNhdGVzIGNvZGVjIGRlZmF1bHQgdmFsdWUiKTsKK1dFQlJUQ19ERUZJTkVf
aW50KHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAg
ICAgIlJUUCBwYXlsb2FkIHR5cGU7IC0xIGluZGljYXRlcyBjb2RlYyBkZWZhdWx0IHZhbHVlIik7
CitXRUJSVENfREVGSU5FX2ludChjbmdfcGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAg
LTEsCisgICAgICAgICAgICAgICAgICAiUlRQIHBheWxvYWQgdHlwZSBmb3IgQ05HOyAtMSBpbmRp
Y2F0ZXMgZGVmYXVsdCB2YWx1ZSIpOworV0VCUlRDX0RFRklORV9pbnQoc3NyYywgMCwgIlNTUkMg
dG8gd3JpdGUgdG8gdGhlIFJUUCBoZWFkZXIiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChkdHgsIGZh
bHNlLCAiVXNlIERUWC9DTkciKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNhbXBsZV9yYXRlLCA0ODAw
MCwgIlNhbXBsZSByYXRlIG9mIHRoZSBpbnB1dCBmaWxlIik7CitXRUJSVENfREVGSU5FX2Jvb2wo
aGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UiKTsKIAogLy8gQWRkIG5ldyBjb2RlY3Mg
aGVyZSwgYW5kIHRvIHRoZSBtYXAgYmVsb3cuCiBlbnVtIGNsYXNzIENvZGVjVHlwZSB7CkBAIC0y
NDIsOCArMjQ2LDggQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gQ3JlYXRlRW5jb2Rl
cihDb2RlY1R5cGUgY29kZWNfdHlwZSwKICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUF1ZGlvRW5j
b2RlckNuZzo6Q29uZmlnIEdldENuZ0NvbmZpZyhpbnQgc2FtcGxlX3JhdGVfaHopIHsKLSAgQXVk
aW9FbmNvZGVyQ25nOjpDb25maWcgY25nX2NvbmZpZzsKK0F1ZGlvRW5jb2RlckNuZ0NvbmZpZyBH
ZXRDbmdDb25maWcoaW50IHNhbXBsZV9yYXRlX2h6KSB7CisgIEF1ZGlvRW5jb2RlckNuZ0NvbmZp
ZyBjbmdfY29uZmlnOwogICBjb25zdCBhdXRvIGRlZmF1bHRfcGF5bG9hZF90eXBlID0gWyZdIHsK
ICAgICBzd2l0Y2ggKHNhbXBsZV9yYXRlX2h6KSB7CiAgICAgICBjYXNlIDgwMDA6CkBAIC0zMDks
MTAgKzMxMywxMCBAQCBpbnQgUnVuUnRwRW5jb2RlKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsK
IAogICAvLyBDcmVhdGUgYW4gZXh0ZXJuYWwgVkFEL0NORyBlbmNvZGVyIGlmIG5lZWRlZC4KICAg
aWYgKEZMQUdfZHR4ICYmICFjb2RlY19pdC0+c2Vjb25kLmludGVybmFsX2R0eCkgewotICAgIEF1
ZGlvRW5jb2RlckNuZzo6Q29uZmlnIGNuZ19jb25maWcgPSBHZXRDbmdDb25maWcoY29kZWMtPlNh
bXBsZVJhdGVIeigpKTsKKyAgICBBdWRpb0VuY29kZXJDbmdDb25maWcgY25nX2NvbmZpZyA9IEdl
dENuZ0NvbmZpZyhjb2RlYy0+U2FtcGxlUmF0ZUh6KCkpOwogICAgIFJUQ19EQ0hFQ0soY29kZWMp
OwogICAgIGNuZ19jb25maWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUoY29kZWMpOwotICAg
IGNvZGVjID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyQ25nPihzdGQ6Om1vdmUoY25n
X2NvbmZpZykpOworICAgIGNvZGVjID0gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2RlcihzdGQ6Om1v
dmUoY25nX2NvbmZpZykpOwogICB9CiAgIFJUQ19EQ0hFQ0soY29kZWMpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29s
cy9ydHBfZmlsZV9zb3VyY2UuY2MKaW5kZXggN2JmN2Q1MjA4M2NjNjVjNDAxOGUxMzcyZWE0YWRh
OTBlOWZjM2JiNi4uZWRhMmIzZTMxZmNiZDRhMDY5YTE1ZWRkMDI2NDQyYzQ4OTZkMTQ5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJjZS5jYwpAQCAtMjYsOCArMjYsOSBAQAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiAKLVJ0cEZpbGVTb3VyY2UqIFJ0cEZpbGVT
b3VyY2U6OkNyZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lKSB7Ci0gIFJ0cEZpbGVT
b3VyY2UqIHNvdXJjZSA9IG5ldyBSdHBGaWxlU291cmNlKCk7CitSdHBGaWxlU291cmNlKiBSdHBG
aWxlU291cmNlOjpDcmVhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gc3Ny
Y19maWx0ZXIpIHsKKyAgUnRwRmlsZVNvdXJjZSogc291cmNlID0gbmV3IFJ0cEZpbGVTb3VyY2Uo
c3NyY19maWx0ZXIpOwogICBSVENfQ0hFQ0soc291cmNlLT5PcGVuRmlsZShmaWxlX25hbWUpKTsK
ICAgcmV0dXJuIHNvdXJjZTsKIH0KQEAgLTcyLDcgKzczLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBh
Y2tldD4gUnRwRmlsZVNvdXJjZTo6TmV4dFBhY2tldCgpIHsKICAgICAgIGNvbnRpbnVlOwogICAg
IH0KICAgICBpZiAoZmlsdGVyXy50ZXN0KHBhY2tldC0+aGVhZGVyKCkucGF5bG9hZFR5cGUpIHx8
Ci0gICAgICAgICh1c2Vfc3NyY19maWx0ZXJfICYmIHBhY2tldC0+aGVhZGVyKCkuc3NyYyAhPSBz
c3JjXykpIHsKKyAgICAgICAgKHNzcmNfZmlsdGVyXyAmJiBwYWNrZXQtPmhlYWRlcigpLnNzcmMg
IT0gKnNzcmNfZmlsdGVyXykpIHsKICAgICAgIC8vIFRoaXMgcGF5bG9hZCB0eXBlIHNob3VsZCBi
ZSBmaWx0ZXJlZCBvdXQuIENvbnRpbnVlIHRvIHRoZSBuZXh0IHBhY2tldC4KICAgICAgIGNvbnRp
bnVlOwogICAgIH0KQEAgLTgwLDggKzgxLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWNrZXQ+IFJ0
cEZpbGVTb3VyY2U6Ok5leHRQYWNrZXQoKSB7CiAgIH0KIH0KIAotUnRwRmlsZVNvdXJjZTo6UnRw
RmlsZVNvdXJjZSgpCi0gICAgOiBQYWNrZXRTb3VyY2UoKSwgcGFyc2VyXyhSdHBIZWFkZXJQYXJz
ZXI6OkNyZWF0ZSgpKSB7fQorUnRwRmlsZVNvdXJjZTo6UnRwRmlsZVNvdXJjZShhYnNsOjpvcHRp
b25hbDx1aW50MzJfdD4gc3NyY19maWx0ZXIpCisgICAgOiBQYWNrZXRTb3VyY2UoKSwKKyAgICAg
IHBhcnNlcl8oUnRwSGVhZGVyUGFyc2VyOjpDcmVhdGUoKSksCisgICAgICBzc3JjX2ZpbHRlcl8o
c3NyY19maWx0ZXIpIHt9CiAKIGJvb2wgUnRwRmlsZVNvdXJjZTo6T3BlbkZpbGUoY29uc3Qgc3Rk
OjpzdHJpbmcmIGZpbGVfbmFtZSkgewogICBydHBfcmVhZGVyXy5yZXNldChSdHBGaWxlUmVhZGVy
OjpDcmVhdGUoUnRwRmlsZVJlYWRlcjo6a1J0cER1bXAsIGZpbGVfbmFtZSkpOwpAQCAtODksNyAr
OTIsNyBAQCBib29sIFJ0cEZpbGVTb3VyY2U6Ok9wZW5GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBm
aWxlX25hbWUpIHsKICAgICByZXR1cm4gdHJ1ZTsKICAgcnRwX3JlYWRlcl8ucmVzZXQoUnRwRmls
ZVJlYWRlcjo6Q3JlYXRlKFJ0cEZpbGVSZWFkZXI6OmtQY2FwLCBmaWxlX25hbWUpKTsKICAgaWYg
KCFydHBfcmVhZGVyXykgewotICAgIFJUQ19GQVRBTCgpIDw8ICJDb3VsZG4ndCBvcGVuIGlucHV0
IGZpbGUgYXMgZWl0aGVyIGEgcnRwZHVtcCBvciAucGNhcC4gTm90ZSAiCisgICAgRkFUQUwoKSA8
PCAiQ291bGRuJ3Qgb3BlbiBpbnB1dCBmaWxlIGFzIGVpdGhlciBhIHJ0cGR1bXAgb3IgLnBjYXAu
IE5vdGUgIgogICAgICAgICAgICAgICAgInRoYXQgLnBjYXBuZyBpcyBub3Qgc3VwcG9ydGVkLiI7
CiAgIH0KICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBf
ZmlsZV9zb3VyY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJjZS5oCmluZGV4
IDAxMzMzM2I4OWEzNjlmYTIyMmY0N2NjMjg5MGYxZjc5YWVlNzRmYTEuLjAyYWI4OTc1NjYxOTBi
MzM1MjE1Y2M2ODNmOTYwOWI5YmY3MjBlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xz
L3J0cF9maWxlX3NvdXJjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJj
ZS5oCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmlu
Zz4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJjb21tb25f
dHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldF9zb3VyY2UuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgpAQCAtMzMsNyArMzQsOSBAQCBj
bGFzcyBSdHBGaWxlU291cmNlIDogcHVibGljIFBhY2tldFNvdXJjZSB7CiAgcHVibGljOgogICAv
LyBDcmVhdGVzIGFuIFJ0cEZpbGVTb3VyY2UgcmVhZGluZyBmcm9tIHxmaWxlX25hbWV8LiBJZiB0
aGUgZmlsZSBjYW5ub3QgYmUKICAgLy8gb3BlbmVkLCBvciBoYXMgdGhlIHdyb25nIGZvcm1hdCwg
TlVMTCB3aWxsIGJlIHJldHVybmVkLgotICBzdGF0aWMgUnRwRmlsZVNvdXJjZSogQ3JlYXRlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpOworICBzdGF0aWMgUnRwRmlsZVNvdXJjZSogQ3Jl
YXRlKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSwKKyAgICAgIGFic2w6Om9w
dGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlciA9IGFic2w6Om51bGxvcHQpOwogCiAgIC8vIENo
ZWNrcyB3aGV0aGVyIGEgZmlsZXMgaXMgYSB2YWxpZCBSVFAgZHVtcCBvciBQQ0FQIChXaXJlc2hh
cmspIGZpbGUuCiAgIHN0YXRpYyBib29sIFZhbGlkUnRwRHVtcChjb25zdCBzdGQ6OnN0cmluZyYg
ZmlsZV9uYW1lKTsKQEAgLTUxLDEyICs1NCwxMyBAQCBjbGFzcyBSdHBGaWxlU291cmNlIDogcHVi
bGljIFBhY2tldFNvdXJjZSB7CiAgIHN0YXRpYyBjb25zdCBpbnQga1J0cEZpbGVIZWFkZXJTaXpl
ID0gNCArIDQgKyA0ICsgMiArIDI7CiAgIHN0YXRpYyBjb25zdCBzaXplX3Qga1BhY2tldEhlYWRl
clNpemUgPSA4OwogCi0gIFJ0cEZpbGVTb3VyY2UoKTsKKyAgZXhwbGljaXQgUnRwRmlsZVNvdXJj
ZShhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gc3NyY19maWx0ZXIpOwogCiAgIGJvb2wgT3BlbkZp
bGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSk7CiAKICAgc3RkOjp1bmlxdWVfcHRyPFJ0
cEZpbGVSZWFkZXI+IHJ0cF9yZWFkZXJfOwogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwSGVhZGVyUGFy
c2VyPiBwYXJzZXJfOworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gc3NyY19maWx0
ZXJfOwogCiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oUnRwRmlsZVNvdXJjZSk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ppdHRlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Rvb2xzL3J0cF9qaXR0ZXIuY2MKaW5kZXggM2M0OTQ0MzAzNmMzOWY3MzIyZWYxZThlNjM3
YzMyZDYxNjgxOTc4OS4uOTJhN2E4ZDIxNTBhZmI0NGUxN2ZjYzZkM2UxNDkwNWY2Nzg4NGE5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ppdHRlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90b29scy9ydHBfaml0dGVyLmNjCkBAIC0yMyw3ICsyMyw3IEBAIG5hbWVzcGFjZSB3ZWJy
dGMgewogbmFtZXNwYWNlIHRlc3QgewogbmFtZXNwYWNlIHsKIAotREVGSU5FX2Jvb2woaGVscCwg
ZmFsc2UsICJQcmludCBoZWxwIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChoZWxwLCBm
YWxzZSwgIlByaW50IGhlbHAgbWVzc2FnZSIpOwogCiBjb25zdGV4cHIgc2l6ZV90IGtSdHBEdW1w
SGVhZGVyTGVuZ3RoID0gODsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9FbmNvZGVEZWNvZGVU
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvdGVzdC9FbmNvZGVEZWNvZGVUZXN0LmNjCmluZGV4IGM2ZjNmOGM5ZjI1
NjJkNDkyZTQ4ZGRlMzU0NjU0ODUzYzYxZDI1ZWIuLjI0MDgzNjY4OGNmMGNmYWUyMzMxYWY4NTgy
NjczMmRjNmUyOWQ4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvRW5jb2RlRGVjb2RlVGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy90ZXN0L0VuY29kZURlY29kZVRlc3QuY2MKQEAgLTE0LDkgKzE0LDkgQEAK
ICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNpbmNsdWRlICJhYnNs
L3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVk
aW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGlu
X2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8g
Tk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29k
ZWNzL2F1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvdGVzdC91dGlsaXR5LmgiCkBAIC0yNDgsMTEgKzI0OCwxMSBAQCB2b2lkIEVu
Y29kZURlY29kZVRlc3Q6OlBlcmZvcm0oKSB7CiAKICAgZm9yIChpbnQgbiA9IDA7IG4gPCBudW1D
b2RlY3M7IG4rKykgewogICAgIEVYUEVDVF9FUSgwLCBhY20tPkNvZGVjKG4sICZzZW5kQ29kZWNU
bXApKTsKLSAgICBpZiAoU1RSX0NBU0VfQ01QKHNlbmRDb2RlY1RtcC5wbG5hbWUsICJ0ZWxlcGhv
bmUtZXZlbnQiKSA9PSAwKSB7CisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uoc2VuZENv
ZGVjVG1wLnBsbmFtZSwgInRlbGVwaG9uZS1ldmVudCIpKSB7CiAgICAgICBudW1QYXJzW25dID0g
MDsKLSAgICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChzZW5kQ29kZWNUbXAucGxuYW1lLCAiY24i
KSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHNlbmRDb2Rl
Y1RtcC5wbG5hbWUsICJjbiIpKSB7CiAgICAgICBudW1QYXJzW25dID0gMDsKLSAgICB9IGVsc2Ug
aWYgKFNUUl9DQVNFX0NNUChzZW5kQ29kZWNUbXAucGxuYW1lLCAicmVkIikgPT0gMCkgeworICAg
IH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShzZW5kQ29kZWNUbXAucGxuYW1lLCAi
cmVkIikpIHsKICAgICAgIG51bVBhcnNbbl0gPSAwOwogICAgIH0gZWxzZSBpZiAoc2VuZENvZGVj
VG1wLmNoYW5uZWxzID09IDIpIHsKICAgICAgIG51bVBhcnNbbl0gPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvdGVzdC9UZXN0UmVkRmVjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9UZXN0UmVkRmVjLmNjCmluZGV4
IGM1NmZlZDk1ZGFiOTZkYzU1MmMwMTliMmJkMjJhNzg1Y2NhNjBlOGEuLjhiYjM5NzEzNzNkYTdm
MDcyMTA4MWE3MjFiNzVkMzc0ZTQ5NDk2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvVGVzdFJl
ZEZlYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RSZWRGZWMuY2MKQEAgLTE3MywxNCArMTczLDE0
IEBAIHZvaWQgVGVzdFJlZEZlYzo6UmVnaXN0ZXJTZW5kQ29kZWMoCiAgIGF1dG8gZW5jb2RlciA9
IGVuY29kZXJfZmFjdG9yeV8tPk1ha2VBdWRpb0VuY29kZXIocGF5bG9hZF90eXBlLCBjb2RlY19m
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6bnVsbG9wdCk7CiAgIEVYUEVDVF9ORShlbmNvZGVyLCBudWxscHRyKTsKLSAgaWYg
KFNUUl9DQVNFX0NNUChjb2RlY19mb3JtYXQubmFtZS5jX3N0cigpLCAib3B1cyIpICE9IDApIHsK
KyAgaWYgKCFhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjX2Zvcm1hdC5uYW1lLCAib3B1cyIp
KSB7CiAgICAgaWYgKHZhZF9tb2RlLmhhc192YWx1ZSgpKSB7Ci0gICAgICBBdWRpb0VuY29kZXJD
bmc6OkNvbmZpZyBjb25maWc7CisgICAgICBBdWRpb0VuY29kZXJDbmdDb25maWcgY29uZmlnOwog
ICAgICAgY29uZmlnLnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKGVuY29kZXIpOwogICAgICAg
Y29uZmlnLm51bV9jaGFubmVscyA9IDE7CiAgICAgICBjb25maWcucGF5bG9hZF90eXBlID0gY25f
cGF5bG9hZF90eXBlOwogICAgICAgY29uZmlnLnZhZF9tb2RlID0gdmFkX21vZGUudmFsdWUoKTsK
LSAgICAgIGVuY29kZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJDbmc+KHN0ZDo6
bW92ZShjb25maWcpKTsKKyAgICAgIGVuY29kZXIgPSBDcmVhdGVDb21mb3J0Tm9pc2VFbmNvZGVy
KHN0ZDo6bW92ZShjb25maWcpKTsKICAgICAgIEVYUEVDVF9FUSh0cnVlLAogICAgICAgICAgICAg
ICAgIG90aGVyX2FjbS0+UmVnaXN0ZXJSZWNlaXZlQ29kZWMoCiAgICAgICAgICAgICAgICAgICAg
IGNuX3BheWxvYWRfdHlwZSwgeyJDTiIsIGNvZGVjX2Zvcm1hdC5jbG9ja3JhdGVfaHosIDF9KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RTdGVyZW8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RT
dGVyZW8uY2MKaW5kZXggZmQ2OWZkMjYyNjIyZTMxNDM2NTFkYTg3ZjRmMjUxYmI4ZDgzMzZhMS4u
YmY4ZTE4OTRkMGU0MWI5MzYzMjJkZDVmN2RiNGY1MWJkMDA0MmUyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvdGVzdC9UZXN0U3RlcmVvLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvVGVzdFN0ZXJlby5jYwpAQCAt
MTIsOSArMTIsOSBAQAogCiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2Rl
Y29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRp
b19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElO
VChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9h
dWRpb19mb3JtYXRfY29udmVyc2lvbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZV90eXBlZGVmcy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL3Rlc3QvdXRpbGl0eS5oIgpAQCAtNjI2LDE0ICs2MjYsMTQgQEAgdm9p
ZCBUZXN0U3RlcmVvOjpSZWdpc3RlclNlbmRDb2RlYyhjaGFyIHNpZGUsCiAgIEFTU0VSVF9UUlVF
KG15X2FjbSAhPSBOVUxMKTsKIAogICBhdXRvIGVuY29kZXJfZmFjdG9yeSA9IENyZWF0ZUJ1aWx0
aW5BdWRpb0VuY29kZXJGYWN0b3J5KCk7Ci0gIGNvbnN0IGludCBjbG9ja3JhdGVfaHogPSBTVFJf
Q0FTRV9DTVAoY29kZWNfbmFtZSwgImc3MjIiKSA9PSAwCisgIGNvbnN0IGludCBjbG9ja3JhdGVf
aHogPSBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjX25hbWUsICJnNzIyIikKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA/IHNhbXBsaW5nX2ZyZXFfaHogLyAyCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBzYW1wbGluZ19mcmVxX2h6OwogICBjb25zdCBzdGQ6OnN0
cmluZyBwdGltZSA9IHJ0Yzo6VG9TdHJpbmcocnRjOjpDaGVja2VkRGl2RXhhY3QoCiAgICAgICBw
YWNrX3NpemUsIHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KHNhbXBsaW5nX2ZyZXFfaHosIDEwMDApKSk7
CiAgIFNkcEF1ZGlvRm9ybWF0OjpQYXJhbWV0ZXJzIHBhcmFtcyA9IHt7InB0aW1lIiwgcHRpbWV9
fTsKICAgUlRDX0NIRUNLKGNoYW5uZWxzID09IDEgfHwgY2hhbm5lbHMgPT0gMik7Ci0gIGlmIChT
VFJfQ0FTRV9DTVAoY29kZWNfbmFtZSwgIm9wdXMiKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVh
bHNJZ25vcmVDYXNlKGNvZGVjX25hbWUsICJvcHVzIikpIHsKICAgICBpZiAoY2hhbm5lbHMgPT0g
MikgewogICAgICAgcGFyYW1zWyJzdGVyZW8iXSA9ICIxIjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy90ZXN0L1Rlc3RWQUREVFguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RWQUREVFguY2MKaW5kZXgg
NGYwMmVkYWE4Mzc0NGMxOTNiMGU3NDJlYzIyZjc4NzM4ZTNlOGViYS4uMDljNjlmOWM2YmJlNTY2
MDk2ZmE3YmYyY2FhNDFmZWQ1ZjcxYWVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9UZXN0VkFE
RFRYLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvVGVzdFZBRERUWC5jYwpAQCAtMTIsNiArMTIsNyBAQAog
CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAj
aW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3RvcnlfdGVtcGxhdGUu
aCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeV90ZW1w
bGF0ZS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2ls
YmMuaCIKQEAgLTgxLDEzICs4MiwxMyBAQCBib29sIFRlc3RWYWREdHg6OlJlZ2lzdGVyQ29kZWMo
Y29uc3QgU2RwQXVkaW9Gb3JtYXQmIGNvZGVjX2Zvcm1hdCwKICAgYXV0byBlbmNvZGVyID0gZW5j
b2Rlcl9mYWN0b3J5Xy0+TWFrZUF1ZGlvRW5jb2RlcihwYXlsb2FkX3R5cGUsIGNvZGVjX2Zvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
YnNsOjpudWxsb3B0KTsKICAgaWYgKHZhZF9tb2RlLmhhc192YWx1ZSgpICYmCi0gICAgICBTVFJf
Q0FTRV9DTVAoY29kZWNfZm9ybWF0Lm5hbWUuY19zdHIoKSwgIm9wdXMiKSAhPSAwKSB7Ci0gICAg
QXVkaW9FbmNvZGVyQ25nOjpDb25maWcgY29uZmlnOworICAgICAgIWFic2w6OkVxdWFsc0lnbm9y
ZUNhc2UoY29kZWNfZm9ybWF0Lm5hbWUsICJvcHVzIikpIHsKKyAgICBBdWRpb0VuY29kZXJDbmdD
b25maWcgY29uZmlnOwogICAgIGNvbmZpZy5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShlbmNv
ZGVyKTsKICAgICBjb25maWcubnVtX2NoYW5uZWxzID0gMTsKICAgICBjb25maWcucGF5bG9hZF90
eXBlID0gY25fcGF5bG9hZF90eXBlOwogICAgIGNvbmZpZy52YWRfbW9kZSA9IHZhZF9tb2RlLnZh
bHVlKCk7Ci0gICAgZW5jb2RlciA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlckNuZz4o
c3RkOjptb3ZlKGNvbmZpZykpOworICAgIGVuY29kZXIgPSBDcmVhdGVDb21mb3J0Tm9pc2VFbmNv
ZGVyKHN0ZDo6bW92ZShjb25maWcpKTsKICAgICBhZGRlZF9jb21mb3J0X25vaXNlID0gdHJ1ZTsK
ICAgfQogICBjaGFubmVsXy0+U2V0SXNTdGVyZW8oZW5jb2Rlci0+TnVtQ2hhbm5lbHMoKSA+IDEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9pU0FDVGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvaVNBQ1Rl
c3QuY2MKaW5kZXggYTEzMGFlM2U2NmZkYWM4YjAzMTAxNjkwYTBmMDk0ZGZmMWY2YjZiYi4uYzMz
MmZlMDhmMTExODM2OTRiMWE4OWViODlkMWI0YTMxYzI4YjZjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
dGVzdC9pU0FDVGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L2lTQUNUZXN0LmNjCkBAIC0yMyw2ICsy
Myw3IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2VuZGlmCiAKKyNpbmNsdWRlICJhYnNsL3N0cmlu
Z3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2Vu
Y29kZXJfaXNhY19mbG9hdC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9hdWRpb19mb3JtYXRfY29udmVyc2lvbi5oIgpAQCAtOTIsMTIgKzkzLDEyIEBAIHZvaWQgSVNB
Q1Rlc3Q6OlNldHVwKCkgewogICBmb3IgKGNvZGVjQ250ciA9IDA7IGNvZGVjQ250ciA8IEF1ZGlv
Q29kaW5nTW9kdWxlOjpOdW1iZXJPZkNvZGVjcygpOwogICAgICAgIGNvZGVjQ250cisrKSB7CiAg
ICAgRVhQRUNUX0VRKDAsIEF1ZGlvQ29kaW5nTW9kdWxlOjpDb2RlYyhjb2RlY0NudHIsICZjb2Rl
Y1BhcmFtKSk7Ci0gICAgaWYgKCFTVFJfQ0FTRV9DTVAoY29kZWNQYXJhbS5wbG5hbWUsICJJU0FD
IikgJiYKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY1BhcmFtLnBsbmFtZSwg
IklTQUMiKSAmJgogICAgICAgICBjb2RlY1BhcmFtLnBsZnJlcSA9PSAxNjAwMCkgewogICAgICAg
bWVtY3B5KCZfcGFyYW1JU0FDMTZrSHosICZjb2RlY1BhcmFtLCBzaXplb2YoQ29kZWNJbnN0KSk7
CiAgICAgICBfaWRJU0FDMTZrSHogPSBjb2RlY0NudHI7CiAgICAgfQotICAgIGlmICghU1RSX0NB
U0VfQ01QKGNvZGVjUGFyYW0ucGxuYW1lLCAiSVNBQyIpICYmCisgICAgaWYgKGFic2w6OkVxdWFs
c0lnbm9yZUNhc2UoY29kZWNQYXJhbS5wbG5hbWUsICJJU0FDIikgJiYKICAgICAgICAgY29kZWNQ
YXJhbS5wbGZyZXEgPT0gMzIwMDApIHsKICAgICAgIG1lbWNweSgmX3BhcmFtSVNBQzMya0h6LCAm
Y29kZWNQYXJhbSwgc2l6ZW9mKENvZGVjSW5zdCkpOwogICAgICAgX2lkSVNBQzMya0h6ID0gY29k
ZWNDbnRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC91dGlsaXR5LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC91
dGlsaXR5LmNjCmluZGV4IDgzYzI1YjUzN2U0NWMxODI3MGNmYzMzZTg2OTQ3NTY0MjU3ZjNmNWQu
LjUzZjgwNzc5MGVmMzM3N2FiMjBlZjQ3MDBhOTEzZDkwYWNiMjRkODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL3Rlc3QvdXRpbGl0eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L3V0aWxpdHkuY2MKQEAgLTE1LDcg
KzE1LDcgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIAotI2lu
Y2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVk
ZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
aW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgog
CkBAIC0yNjgsNyArMjY4LDcgQEAgYm9vbCBGaXhlZFBheWxvYWRUeXBlQ29kZWMoY29uc3QgY2hh
ciogcGF5bG9hZE5hbWUpIHsKICAgICAgICJHNzIyIiwgIlFDRUxQIiwgIkNOIiwgICJNUEEiLCAg
Ikc3MjgiLCAiRzcyOSJ9OwogCiAgIGZvciAoaW50IG4gPSAwOyBuIDwgTlVNX0NPREVDU19XSVRI
X0ZJWEVEX1BBWUxPQURfVFlQRTsgbisrKSB7Ci0gICAgaWYgKCFTVFJfQ0FTRV9DTVAocGF5bG9h
ZE5hbWUsIGZpeFBheWxvYWRUeXBlQ29kZWNzW25dKSkgeworICAgIGlmIChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKHBheWxvYWROYW1lLCBmaXhQYXlsb2FkVHlwZUNvZGVjc1tuXSkpIHsKICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Rl
dmljZS9CVUlMRC5nbgppbmRleCBiNjkwMDUwOTgxMTk0Mzk1ZDdhMDc1ODk1MTk3YjcxYmQ3ODVm
YTY3Li42NzQ5NWFjYTc3NTU2ZTc1NTkzYTEzMzFkMmU1ZjU4MzhkNDQ0ZjhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2RldmljZS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9CVUlMRC5nbgpAQCAtMjQsNiArMjQsMTYgQEAg
Y29uZmlnKCJhdWRpb19kZXZpY2Vfd2FybmluZ3NfY29uZmlnIikgewogICB9CiB9CiAKK3J0Y19z
b3VyY2Vfc2V0KCJhdWRpb19kZXZpY2VfZGVmYXVsdCIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioi
IF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW5jbHVkZS9hdWRpb19kZXZpY2VfZGVmYXVsdC5oIiwK
KyAgXQorICBkZXBzID0gWworICAgICI6YXVkaW9fZGV2aWNlX2FwaSIsCisgIF0KK30KKwogcnRj
X3NvdXJjZV9zZXQoImF1ZGlvX2RldmljZSIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAg
cHVibGljX2RlcHMgPSBbCkBAIC0yMDMsOCArMjEzLDggQEAgcnRjX3NvdXJjZV9zZXQoImF1ZGlv
X2RldmljZV9pbXBsIikgewogICBkZXBzID0gWwogICAgICI6YXVkaW9fZGV2aWNlX2FwaSIsCiAg
ICAgIjphdWRpb19kZXZpY2VfYnVmZmVyIiwKKyAgICAiOmF1ZGlvX2RldmljZV9kZWZhdWx0IiwK
ICAgICAiOmF1ZGlvX2RldmljZV9nZW5lcmljIiwKLSAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIs
CiAgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vY29tbW9uX2F1ZGlvIiwK
ICAgICAiLi4vLi4vY29tbW9uX2F1ZGlvOmNvbW1vbl9hdWRpb19jIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2
aWNlL2FuZHJvaWQvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYW5kcm9pZC9hdWRp
b19kZXZpY2VfdW5pdHRlc3QuY2MKaW5kZXggYjBjZjQyZWRlYzUzYTMxNTk1ZjlkYjQ3OTUyZTQw
NGYwZGIwYTY4MC4uNmUwOTEzOWM3OWI2ODg1MGY4ZDkyMmJhOTQ1YzY4Nzg1MjQ3OGQ0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19kZXZpY2UvYW5kcm9pZC9hdWRpb19kZXZpY2VfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZp
Y2UvYW5kcm9pZC9hdWRpb19kZXZpY2VfdW5pdHRlc3QuY2MKQEAgLTI1LDEwICsyNSwxMCBAQAog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvbW9ja19hdWRpb190cmFuc3Bv
cnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRf
cmVmX3B0ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgotI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCIKICNpbmNsdWRlICJ0ZXN0L2dt
b2NrLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBv
cnQvZmlsZXV0aWxzLmgiCkBAIC0zNjUsNyArMzY1LDcgQEAgY2xhc3MgTW9ja0F1ZGlvVHJhbnNw
b3J0QW5kcm9pZCA6IHB1YmxpYyB0ZXN0OjpNb2NrQXVkaW9UcmFuc3BvcnQgewogCiAgIC8vIFNl
dCBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1vY2sgb2JqZWN0LiBXZSBhcmUgZGVsZWdhdGluZyB0
byBmYWtlCiAgIC8vIGltcGxlbWVudGF0aW9ucyAob2YgQXVkaW9TdHJlYW1JbnRlcmZhY2UpIGhl
cmUuCi0gIHZvaWQgSGFuZGxlQ2FsbGJhY2tzKEV2ZW50V3JhcHBlciogdGVzdF9pc19kb25lLAor
ICB2b2lkIEhhbmRsZUNhbGxiYWNrcyhydGM6OkV2ZW50KiB0ZXN0X2lzX2RvbmUsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEF1ZGlvU3RyZWFtSW50ZXJmYWNlKiBhdWRpb19zdHJlYW0sCiAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBudW1fY2FsbGJhY2tzKSB7CiAgICAgdGVzdF9pc19kb25l
XyA9IHRlc3RfaXNfZG9uZTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFu
c3BvcnRBbmRyb2lkIDogcHVibGljIHRlc3Q6Ok1vY2tBdWRpb1RyYW5zcG9ydCB7CiAgIGJvb2wg
cmVjX21vZGUoKSBjb25zdCB7IHJldHVybiB0eXBlXyAmIGtSZWNvcmRpbmc7IH0KIAogIHByaXZh
dGU6Ci0gIEV2ZW50V3JhcHBlciogdGVzdF9pc19kb25lXzsKKyAgcnRjOjpFdmVudCogdGVzdF9p
c19kb25lXzsKICAgc2l6ZV90IG51bV9jYWxsYmFja3NfOwogICBpbnQgdHlwZV87CiAgIHNpemVf
dCBwbGF5X2NvdW50XzsKQEAgLTQ2MCw3ICs0NjAsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFuc3Bv
cnRBbmRyb2lkIDogcHVibGljIHRlc3Q6Ok1vY2tBdWRpb1RyYW5zcG9ydCB7CiAvLyBBdWRpb0Rl
dmljZVRlc3QgdGVzdCBmaXh0dXJlLgogY2xhc3MgQXVkaW9EZXZpY2VUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgotICBBdWRpb0RldmljZVRlc3QoKSA6IHRlc3Rf
aXNfZG9uZV8oRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSkgeworICBBdWRpb0RldmljZVRlc3QoKSB7
CiAgICAgLy8gT25lLXRpbWUgaW5pdGlhbGl6YXRpb24gb2YgSlZNIGFuZCBhcHBsaWNhdGlvbiBj
b250ZXh0LiBFbnN1cmVzIHRoYXQgd2UKICAgICAvLyBjYW4gZG8gY2FsbHMgYmV0d2VlbiBDKysg
YW5kIEphdmEuIEluaXRpYWxpemVzIGJvdGggSmF2YSBhbmQgT3BlblNMIEVTCiAgICAgLy8gaW1w
bGVtZW50YXRpb25zLgpAQCAtNjM4LDcgKzYzOCw3IEBAIGNsYXNzIEF1ZGlvRGV2aWNlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIHJldHVybiB2b2x1bWU7CiAgIH0KIAotICBz
dGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPiB0ZXN0X2lzX2RvbmVfOworICBydGM6OkV2ZW50
IHRlc3RfaXNfZG9uZV87CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RldmljZU1vZHVsZT4g
YXVkaW9fZGV2aWNlXzsKICAgQXVkaW9QYXJhbWV0ZXJzIHBsYXlvdXRfcGFyYW1ldGVyc187CiAg
IEF1ZGlvUGFyYW1ldGVycyByZWNvcmRfcGFyYW1ldGVyc187CkBAIC04NjcsMTQgKzg2NywxNCBA
QCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdG9wUmVjb3JkaW5nUmVxdWlyZXNJbml0VG9SZXN0
YXJ0KSB7CiAvLyBhdWRpbyBzYW1wbGVzIHRvIHBsYXkgb3V0IHVzaW5nIHRoZSBOZWVkTW9yZVBs
YXlEYXRhIGNhbGxiYWNrLgogVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0VmVy
aWZ5Q2FsbGJhY2tzKSB7CiAgIE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQgbW9jayhrUGxheW91
dCk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIG51bGxwdHIs
IGtOdW1DYWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywg
bnVsbHB0ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIE5lZWRNb3JlUGxh
eURhdGEocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga0J5dGVzUGVyU2FtcGxlLCBwbGF5b3V0X2NoYW5uZWxzKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheW91dF9zYW1wbGVfcmF0
ZSgpLCBOb3ROdWxsKCksIF8sIF8sIF8pKQogICAgICAgLlRpbWVzKEF0TGVhc3Qoa051bUNhbGxi
YWNrcykpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxs
YmFjaygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChr
VGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRp
bWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BQbGF5b3V0KCk7CiB9CiAKQEAgLTg4NCw3ICs4
ODQsNyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRWZXJpZnlDYWxsYmFj
a3MpIHsKIC8vIGRlbGF5IGVzdGltYXRlcyBhcyB3ZWxsIChhcmd1bWVudCAjNikuCiBURVNUX0Yo
QXVkaW9EZXZpY2VUZXN0LCBTdGFydFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogICBNb2Nr
QXVkaW9UcmFuc3BvcnRBbmRyb2lkIG1vY2soa1JlY29yZGluZyk7Ci0gIG1vY2suSGFuZGxlQ2Fs
bGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOworICBt
b2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVsbHB0ciwga051bUNhbGxiYWNr
cyk7CiAgIEVYUEVDVF9DQUxMKAogICAgICAgbW9jaywgUmVjb3JkZWREYXRhSXNBdmFpbGFibGUo
Tm90TnVsbCgpLCByZWNvcmRfZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga0J5dGVzUGVyU2FtcGxlLCByZWNvcmRfY2hhbm5lbHMo
KSwKQEAgLTg5Myw3ICs4OTMsNyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFJlY29y
ZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogCiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+
UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UmVjb3JkaW5nKCk7Ci0gIHRl
c3RfaXNfZG9uZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOworICB0ZXN0X2lz
X2RvbmVfLldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOwogICBTdG9wUmVjb3JkaW5n
KCk7CiB9CiAKQEAgLTkwMSw3ICs5MDEsNyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFy
dFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogLy8gYWN0aXZlIGluIGJvdGggZGlyZWN0aW9u
cy4KIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UGxheW91dEFuZFJlY29yZGluZ1Zlcmlm
eUNhbGxiYWNrcykgewogICBNb2NrQXVkaW9UcmFuc3BvcnRBbmRyb2lkIG1vY2soa1BsYXlvdXQg
fCBrUmVjb3JkaW5nKTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQo
KSwgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0
X2lzX2RvbmVfLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKICAgRVhQRUNUX0NBTEwobW9jaywg
TmVlZE1vcmVQbGF5RGF0YShwbGF5b3V0X2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQnl0ZXNQZXJTYW1wbGUsIHBsYXlvdXRf
Y2hhbm5lbHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5b3V0
X3NhbXBsZV9yYXRlKCksIE5vdE51bGwoKSwgXywgXywgXykpCkBAIC05MTQsNyArOTE0LDcgQEAg
VEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0QW5kUmVjb3JkaW5nVmVyaWZ5Q2Fs
bGJhY2tzKSB7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+UmVnaXN0ZXJBdWRpb0Nh
bGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UGxheW91dCgpOwogICBTdGFydFJlY29yZGluZygpOwot
ICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKKyAgdGVz
dF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAgU3RvcFJlY29y
ZGluZygpOwogICBTdG9wUGxheW91dCgpOwogfQpAQCAtOTMwLDEyICs5MzAsMTEgQEAgVEVTVF9G
KEF1ZGlvRGV2aWNlVGVzdCwgUnVuUGxheW91dFdpdGhGaWxlQXNTb3VyY2UpIHsKICAgc3RkOjpz
dHJpbmcgZmlsZV9uYW1lID0gR2V0RmlsZU5hbWUocGxheW91dF9zYW1wbGVfcmF0ZSgpKTsKICAg
c3RkOjp1bmlxdWVfcHRyPEZpbGVBdWRpb1N0cmVhbT4gZmlsZV9hdWRpb19zdHJlYW0oCiAgICAg
ICBuZXcgRmlsZUF1ZGlvU3RyZWFtKG51bV9jYWxsYmFja3MsIGZpbGVfbmFtZSwgcGxheW91dF9z
YW1wbGVfcmF0ZSgpKSk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0
KCksIGZpbGVfYXVkaW9fc3RyZWFtLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICBudW1f
Y2FsbGJhY2tzKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRlc3RfaXNfZG9uZV8sIGZpbGVf
YXVkaW9fc3RyZWFtLmdldCgpLCBudW1fY2FsbGJhY2tzKTsKICAgLy8gU2V0TWF4UGxheW91dFZv
bHVtZSgpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxs
YmFjaygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChr
VGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRp
bWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BQbGF5b3V0KCk7CiB9CiAKQEAgLTk2NCwxMyAr
OTYzLDEzIEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIERJU0FCTEVEX1J1blBsYXlvdXRBbmRS
ZWNvcmRpbmdJbkZ1bGxEdXBsZXgpIHsKICAgTmljZU1vY2s8TW9ja0F1ZGlvVHJhbnNwb3J0QW5k
cm9pZD4gbW9jayhrUGxheW91dCB8IGtSZWNvcmRpbmcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8Rmlm
b0F1ZGlvU3RyZWFtPiBmaWZvX2F1ZGlvX3N0cmVhbSgKICAgICAgIG5ldyBGaWZvQXVkaW9TdHJl
YW0ocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpKTsKLSAgbW9jay5IYW5kbGVDYWxs
YmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgZmlmb19hdWRpb19zdHJlYW0uZ2V0KCksCisgIG1v
Y2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBmaWZvX2F1ZGlvX3N0cmVhbS5nZXQo
KSwKICAgICAgICAgICAgICAgICAgICAgICAga0Z1bGxEdXBsZXhUaW1lSW5TZWMgKiBrTnVtQ2Fs
bGJhY2tzUGVyU2Vjb25kKTsKICAgU2V0TWF4UGxheW91dFZvbHVtZSgpOwogICBFWFBFQ1RfRVEo
MCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFy
dFJlY29yZGluZygpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdCgK
KyAgdGVzdF9pc19kb25lXy5XYWl0KAogICAgICAgc3RkOjptYXgoa1Rlc3RUaW1lT3V0SW5NaWxs
aXNlY29uZHMsIDEwMDAgKiBrRnVsbER1cGxleFRpbWVJblNlYykpOwogICBTdG9wUGxheW91dCgp
OwogICBTdG9wUmVjb3JkaW5nKCk7CkBAIC05OTcsMTQgKzk5NiwxNCBAQCBURVNUX0YoQXVkaW9E
ZXZpY2VUZXN0LCBESVNBQkxFRF9NZWFzdXJlTG9vcGJhY2tMYXRlbmN5KSB7CiAgIE5pY2VNb2Nr
PE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQ+IG1vY2soa1BsYXlvdXQgfCBrUmVjb3JkaW5nKTsK
ICAgc3RkOjp1bmlxdWVfcHRyPExhdGVuY3lNZWFzdXJpbmdBdWRpb1N0cmVhbT4gbGF0ZW5jeV9h
dWRpb19zdHJlYW0oCiAgICAgICBuZXcgTGF0ZW5jeU1lYXN1cmluZ0F1ZGlvU3RyZWFtKHBsYXlv
dXRfZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKSk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRl
c3RfaXNfZG9uZV8uZ2V0KCksIGxhdGVuY3lfYXVkaW9fc3RyZWFtLmdldCgpLAorICBtb2NrLkhh
bmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbGF0ZW5jeV9hdWRpb19zdHJlYW0uZ2V0KCks
CiAgICAgICAgICAgICAgICAgICAgICAgIGtNZWFzdXJlTGF0ZW5jeVRpbWVJblNlYyAqIGtOdW1D
YWxsYmFja3NQZXJTZWNvbmQpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lz
dGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTZXRNYXhQbGF5b3V0Vm9sdW1lKCk7CiAgIERp
c2FibGVCdWlsdEluQUVDSWZBdmFpbGFibGUoKTsKICAgU3RhcnRSZWNvcmRpbmcoKTsKICAgU3Rh
cnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoCisgIHRlc3RfaXNfZG9uZV8uV2Fp
dCgKICAgICAgIHN0ZDo6bWF4KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzLCAxMDAwICoga01l
YXN1cmVMYXRlbmN5VGltZUluU2VjKSk7CiAgIFN0b3BQbGF5b3V0KCk7CiAgIFN0b3BSZWNvcmRp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9h
dWRpb19kZXZpY2VfYnVmZmVyLmNjCmluZGV4IDVjNDU3ODA0MjZiNzhmOTE0YTliMTk1MTYxNTY4
YzQ3ZDgxZDg3YTUuLjhmOTIwY2ZmZjhlYTljMzRhMzY1NTYyYjk2OGFhMGU3YjdjNzRmMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9f
ZGV2aWNlX2J1ZmZlci5jYwpAQCAtOCwxOSArOCwxNiBAQAogICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKLSNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y21hdGg+Ci0K
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmgiCisj
aW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgogCiAjaW5jbHVkZSAiY29tbW9u
X2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFy
eS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9jb25maWcu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYmlu
ZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Zv
cm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3Mu
aCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVk
aW9fZGV2aWNlX2J1ZmZlci5oCmluZGV4IDdmMGNmODNiYWY3ZDdlYTdkNmU3YmM3ZGMwMzMxNzM1
ZWJiYmUxZTMuLmJiZTI5NjlkNDM2OTc1NThiNjU4NzRlMzUwMWU3ZWRhNjA3OTkwYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZp
Y2VfYnVmZmVyLmgKQEAgLTExLDkgKzExLDExIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fREVW
SUNFX0FVRElPX0RFVklDRV9CVUZGRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19ERVZJQ0Vf
QVVESU9fREVWSUNFX0JVRkZFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8
c3RkaW50Lmg+CiAjaW5jbHVkZSA8YXRvbWljPgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19k
ZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Rl
dmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
YnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNl
X2RhdGFfb2JzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfZGF0YV9vYnNlcnZlci5jYwpp
bmRleCA3MjNkMWM4YmJkYzc0YzlhOWM2YmQyODU2YTQxMmE5OTgwODE4YjhiLi45OTRjMmVmZGYz
MzIxMGExYmY0NmZmNzJlZDM3NTk2NDg0YjVlMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19k
ZXZpY2VfZGF0YV9vYnNlcnZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfZGF0YV9vYnNl
cnZlci5jYwpAQCAtOSw2ICs5LDggQEAKICAqLwogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19k
ZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZGF0YV9vYnNlcnZlci5oIgorCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZGVmaW5lcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50ZWRv
YmplY3QuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2dlbmVyaWMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2
aWNlL2F1ZGlvX2RldmljZV9nZW5lcmljLmgKaW5kZXggYmU5YzA3MmM0MTJjZTg0YjFiYzc0YTQ5
MzMwNWQxYjM5ODlhZmIzMC4uN2QzYzgzZTExOTYwM2JiNmViZGU5MjI1YTk4NTcyNDM1ODdiZGY0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2dlbmVyaWMuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9h
dWRpb19kZXZpY2VfZ2VuZXJpYy5oCkBAIC0xMSw4ICsxMSwxMSBAQAogI2lmbmRlZiBBVURJT19E
RVZJQ0VfQVVESU9fREVWSUNFX0dFTkVSSUNfSF8KICNkZWZpbmUgQVVESU9fREVWSUNFX0FVRElP
X0RFVklDRV9HRU5FUklDX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlX2RlZmluZXMuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9pbXBsLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19k
ZXZpY2UvYXVkaW9fZGV2aWNlX2ltcGwuY2MKaW5kZXggOTFkNjIwOGZlMWZkMWU4ZTg1NDcwYTY4
ZWY1MmU5NTkwYTY0MjE5OC4uMzFkNWI1ZWNmYzUxZTlhOGNhNTNiMmMzYWVlODk4NjU5ODNlMDZm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2ltcGwuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVk
aW9fZGV2aWNlX2ltcGwuY2MKQEAgLTEwLDEyICsxMCwxNCBAQAogCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2ltcGwuaCIKIAotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9jb25maWcuaCIKKyNpbmNsdWRlIDxzdGRkZWYuaD4K
KworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9jb25maWcuaCIg
IC8vIElXWVUgcHJhZ21hOiBrZWVwCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvYXVk
aW9fZGV2aWNlX2dlbmVyaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCisjaW5jbHVkZSAicnRjX2Jh
c2Uvc2NvcGVkX3JlZl9wdHIuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9t
ZXRyaWNzLmgiCiAKICNpZiBkZWZpbmVkKF9XSU4zMikKQEAgLTQ3LDEwICs0OSwxMCBAQAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL21hYy9hdWRpb19kZXZpY2VfbWFjLmgiCiAjZW5k
aWYKICNpZiBkZWZpbmVkKFdFQlJUQ19EVU1NWV9GSUxFX0RFVklDRVMpCisjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0b3J5LmgiCiAj
ZW5kaWYKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9hdWRpb19kZXZpY2Vf
ZHVtbXkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlv
X2RldmljZS5oIgogCiAjZGVmaW5lIENIRUNLaW5pdGlhbGl6ZWRfKCkgXAogICB7ICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9pbXBsLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2RldmljZS9hdWRpb19kZXZpY2VfaW1wbC5oCmluZGV4IDQ4MWNkZjMyZTAwZGNhNGFjOWY3NjZk
ZjI1YjBlZGZhMWYxMTg3ZDYuLmFmZTUzYjMyNDAzMjhkOTQxNzY5ODU4ZTM0NTg5OGNkN2MxMjM4
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9pbXBsLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVk
aW9fZGV2aWNlX2ltcGwuaApAQCAtMTMsMTIgKzEzLDExIEBACiAKICNpZiBkZWZpbmVkKFdFQlJU
Q19JTkNMVURFX0lOVEVSTkFMX0FVRElPX0RFVklDRSkKIAorI2luY2x1ZGUgPHN0ZGludC5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlv
X2RldmljZV9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRl
L2F1ZGlvX2RldmljZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2
aWNlX3VuaXR0ZXN0LmNjCmluZGV4IGE4MmJjNGEzM2JhM2E3ZGJiNDZmYzkxYjMzYmZlZTdiOTU2
NTcxOWQuLjFhYTI4ZTVkN2MxMjMwYTM3MDZhNzk3NmYwYzY4MTkxMTdhOTllMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fZGV2aWNlL2F1ZGlvX2RldmljZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZp
Y2VfdW5pdHRlc3QuY2MKQEAgLTUwOSw3ICs1MDksNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFuc3Bv
cnQgOiBwdWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0IHsKIGNsYXNzIEF1ZGlvRGV2aWNl
VGVzdAogICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTx3ZWJydGM6OkF1ZGlv
RGV2aWNlTW9kdWxlOjpBdWRpb0xheWVyPiB7CiAgcHJvdGVjdGVkOgotICBBdWRpb0RldmljZVRl
c3QoKSA6IGF1ZGlvX2xheWVyXyhHZXRQYXJhbSgpKSwgZXZlbnRfKGZhbHNlLCBmYWxzZSkgewor
ICBBdWRpb0RldmljZVRlc3QoKSA6IGF1ZGlvX2xheWVyXyhHZXRQYXJhbSgpKSB7CiAvLyBUT0RP
KHdlYnJ0Yzo5Nzc4KTogUmUtZW5hYmxlIG9uIFRIUkVBRF9TQU5JVElaRVI/CiAjaWYgIWRlZmlu
ZWQoQUREUkVTU19TQU5JVElaRVIpICYmICFkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpICYmIFwK
ICAgICAhZGVmaW5lZChXRUJSVENfRFVNTVlfQVVESU9fQlVJTEQpICYmICFkZWZpbmVkKFRIUkVB
RF9TQU5JVElaRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9hdWRpb19kZXZpY2VfZHVtbXku
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fZGV2aWNlL2R1bW15L2F1ZGlvX2RldmljZV9kdW1teS5oCmluZGV4IGQ3MDlmNzc2OTE5ZmM3
ZGMzYTRlZDg5M2M5Y2U1YjZmZGQ3Yzc0NTguLjJhMjU0MTA5OGVhODY4NjlhZWUyZGMzMWQ5ZDI5
MjFkMWYyZmM4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2F1ZGlvX2RldmljZV9kdW1teS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fZGV2aWNlL2R1bW15L2F1ZGlvX2RldmljZV9kdW1teS5oCkBAIC0xMSw5ICsxMSwxMiBA
QAogI2lmbmRlZiBBVURJT19ERVZJQ0VfQVVESU9fREVWSUNFX0RVTU1ZX0hfCiAjZGVmaW5lIEFV
RElPX0RFVklDRV9BVURJT19ERVZJQ0VfRFVNTVlfSF8KIAotI2luY2x1ZGUgPHN0ZGlvLmg+Cisj
aW5jbHVkZSA8c3RkaW50Lmg+CiAKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRp
b19kZXZpY2VfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9f
ZGV2aWNlX2dlbmVyaWMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRl
L2F1ZGlvX2RldmljZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUv
YXVkaW9fZGV2aWNlX2RlZmluZXMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9h
dWRpb19kZXZpY2UuY2MKaW5kZXggYjlhZWFhMTUwNjVhOTg4NzAwN2NlNWUyMjJmZDcxMTI5MjAx
ZmFmNC4uMjg0OGVlYWUzNTA4OTU3ODliMDFjNjE1MzIzNmRkNjIxM2Q2MmExYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmls
ZV9hdWRpb19kZXZpY2UuY2MKQEAgLTksOSArOSwxMyBAQAogICovCiAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZS5oIgorCisjaW5jbHVkZSA8
c3RyaW5nLmg+CisKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJz
L2luY2x1ZGUvc2xlZXAuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Rldmlj
ZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZp
Y2UuaAppbmRleCBmMDc2OTBlN2UwMzM3OTAyMDJiZDkwNGRkYTZkODZmOTcyYmMyOTJiLi4yMTBj
OGY3YjhiZTYwMjZmYjAyMGEzMzJmOWZiNmIxYjA2MzY2MjY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9k
dW1teS9maWxlX2F1ZGlvX2RldmljZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2
aWNlLmgKQEAgLTI2LDcgKzI2LDYgQEAgY2xhc3MgUGxhdGZvcm1UaHJlYWQ7CiB9ICAvLyBuYW1l
c3BhY2UgcnRjCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgRXZlbnRXcmFwcGVyOwogCiAv
LyBUaGlzIGlzIGEgZmFrZSBhdWRpbyBkZXZpY2Ugd2hpY2ggcGxheXMgYXVkaW8gZnJvbSBhIGZp
bGUgYXMgaXRzIG1pY3JvcGhvbmUKIC8vIGFuZCBwbGF5cyBvdXQgaW50byBhIGZpbGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0b3J5LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2Uv
ZHVtbXkvZmlsZV9hdWRpb19kZXZpY2VfZmFjdG9yeS5jYwppbmRleCA2YjM4ZDhiYzA1NWFlODUz
MGQxZTUyODViYWY3MDVkMjJhYTBiOGZiLi4wMjdiMTNiZjVjNWNlMWJiYjdlZTc2YmZjMWZhMDE0
ZTdmZmFmNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0
b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlX2ZhY3RvcnkuY2MKQEAg
LTEwLDggKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2Zp
bGVfYXVkaW9fZGV2aWNlX2ZhY3RvcnkuaCIKIAorI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVk
ZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDxjc3RyaW5nPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0
b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0b3J5LmgKaW5kZXggOWNk
NWIzZDYyNTY2ZjZiMmRiMjg3MGFiMzlhMTVmNWM3OGY4MTZmMS4uNzJmNGFiMmIzODRlZDk0MDdl
MTY3Njg4YzQ0MGY2ZGY4YTE4OWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRp
b19kZXZpY2VfZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlX2Zh
Y3RvcnkuaApAQCAtMTEsNyArMTEsNyBAQAogI2lmbmRlZiBBVURJT19ERVZJQ0VfRklMRV9BVURJ
T19ERVZJQ0VfRkFDVE9SWV9IXwogI2RlZmluZSBBVURJT19ERVZJQ0VfRklMRV9BVURJT19ERVZJ
Q0VfRkFDVE9SWV9IXwogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVp
bGQvaW5jbHVkZSkKKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fZGV2aWNlL2ZpbmVfYXVkaW9fYnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZmluZV9hdWRp
b19idWZmZXIuY2MKaW5kZXggNGFmMzQ0YWVmMzc4NmEzMDAyNzMwNzU4NWI2MTcxZTkxNDVkMjM0
ZS4uYjRmM2MzNzFhY2UzNjljZGNmZDQ1YmI5MzI2MTY0ODA4MzBiZDQwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19k
ZXZpY2UvZmluZV9hdWRpb19idWZmZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZmluZV9hdWRpb19idWZmZXIu
Y2MKQEAgLTEwLDYgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2Zp
bmVfYXVkaW9fYnVmZmVyLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGNzdHJp
bmc+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZGF0YV9vYnNl
cnZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZGF0YV9vYnNlcnZlci5oCmluZGV4
IDNhNGVlOTk1MThhYTkyNmIxY2MyMTVmMDY5M2IzMzBmYzk3NjFiYjEuLjk1OWNmYTQ2NjJjNjk2
YjkyNmZmZjE3YzY5NDVjMTUzODdiMWUwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVk
aW9fZGV2aWNlX2RhdGFfb2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2Rldmlj
ZV9kYXRhX29ic2VydmVyLmgKQEAgLTExLDYgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19ERVZJQ0VfSU5DTFVERV9BVURJT19ERVZJQ0VfREFUQV9PQlNFUlZFUl9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX0RFVklDRV9JTkNMVURFX0FVRElPX0RFVklDRV9EQVRBX09CU0VSVkVSX0hf
CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS90
ZXN0X2F1ZGlvX2RldmljZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvdGVzdF9hdWRpb19kZXZpY2UuY2MK
aW5kZXggN2Q1NWM0NzUyOWEyOTZmOThkMzhlOWZlZTlhYzA4ODJhMTk0M2M2Yy4uOGFlYTFkMjQ1
ZTIyNmJlMWQ3N2EzNmRmM2JmMzU1MDJlNzE2YzM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVk
ZS90ZXN0X2F1ZGlvX2RldmljZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL3Rlc3RfYXVkaW9fZGV2
aWNlLmNjCkBAIC04LDggKzgsMTEgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRl
IDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtMjgsNiArMzEsNyBAQAogI2luY2x1
ZGUgInJ0Y19iYXNlL3JhbmRvbS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50ZWRvYmpl
Y3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90
aHJlYWRfYW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC01OCw4ICs2Miw2IEBAIGNsYXNzIFRlc3RBdWRpb0Rldmlj
ZU1vZHVsZUltcGwKICAgICAgICAgYXVkaW9fY2FsbGJhY2tfKG51bGxwdHIpLAogICAgICAgICBy
ZW5kZXJpbmdfKGZhbHNlKSwKICAgICAgICAgY2FwdHVyaW5nXyhmYWxzZSksCi0gICAgICAgIGRv
bmVfcmVuZGVyaW5nXyh0cnVlLCB0cnVlKSwKLSAgICAgICAgZG9uZV9jYXB0dXJpbmdfKHRydWUs
IHRydWUpLAogICAgICAgICBzdG9wX3RocmVhZF8oZmFsc2UpIHsKICAgICBhdXRvIGdvb2Rfc2Ft
cGxlX3JhdGUgPSBbXShpbnQgc3IpIHsKICAgICAgIHJldHVybiBzciA9PSA4MDAwIHx8IHNyID09
IDE2MDAwIHx8IHNyID09IDMyMDAwIHx8IHNyID09IDQ0MTAwIHx8CkBAIC0xMDgsMTQgKzExMCwx
MiBAQCBjbGFzcyBUZXN0QXVkaW9EZXZpY2VNb2R1bGVJbXBsCiAgICAgcnRjOjpDcml0U2NvcGUg
Y3MoJmxvY2tfKTsKICAgICBSVENfQ0hFQ0socmVuZGVyZXJfKTsKICAgICByZW5kZXJpbmdfID0g
dHJ1ZTsKLSAgICBkb25lX3JlbmRlcmluZ18uUmVzZXQoKTsKICAgICByZXR1cm4gMDsKICAgfQog
CiAgIGludDMyX3QgU3RvcFBsYXlvdXQoKSB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJmxvY2tf
KTsKICAgICByZW5kZXJpbmdfID0gZmFsc2U7Ci0gICAgZG9uZV9yZW5kZXJpbmdfLlNldCgpOwog
ICAgIHJldHVybiAwOwogICB9CiAKQEAgLTEyMywxNCArMTIzLDEyIEBAIGNsYXNzIFRlc3RBdWRp
b0RldmljZU1vZHVsZUltcGwKICAgICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwogICAgIFJU
Q19DSEVDSyhjYXB0dXJlcl8pOwogICAgIGNhcHR1cmluZ18gPSB0cnVlOwotICAgIGRvbmVfY2Fw
dHVyaW5nXy5SZXNldCgpOwogICAgIHJldHVybiAwOwogICB9CiAKICAgaW50MzJfdCBTdG9wUmVj
b3JkaW5nKCkgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7CiAgICAgY2FwdHVyaW5n
XyA9IGZhbHNlOwotICAgIGRvbmVfY2FwdHVyaW5nXy5TZXQoKTsKICAgICByZXR1cm4gMDsKICAg
fQogCkBAIC0xNzIsOSArMTcwLDEwIEBAIGNsYXNzIFRlc3RBdWRpb0RldmljZU1vZHVsZUltcGwK
ICAgICAgICAgICB1aW50MzJfdCBuZXdfbWljX2xldmVsID0gMDsKICAgICAgICAgICBpZiAocmVj
b3JkaW5nX2J1ZmZlcl8uc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgYXVkaW9fY2FsbGJhY2tf
LT5SZWNvcmRlZERhdGFJc0F2YWlsYWJsZSgKLSAgICAgICAgICAgICAgICByZWNvcmRpbmdfYnVm
ZmVyXy5kYXRhKCksIHJlY29yZGluZ19idWZmZXJfLnNpemUoKSwgMiwKLSAgICAgICAgICAgICAg
ICBjYXB0dXJlcl8tPk51bUNoYW5uZWxzKCksIGNhcHR1cmVyXy0+U2FtcGxpbmdGcmVxdWVuY3ko
KSwgMCwgMCwKLSAgICAgICAgICAgICAgICAwLCBmYWxzZSwgbmV3X21pY19sZXZlbCk7CisgICAg
ICAgICAgICAgICAgcmVjb3JkaW5nX2J1ZmZlcl8uZGF0YSgpLAorICAgICAgICAgICAgICAgIHJl
Y29yZGluZ19idWZmZXJfLnNpemUoKSAvIGNhcHR1cmVyXy0+TnVtQ2hhbm5lbHMoKSwKKyAgICAg
ICAgICAgICAgICAyICogY2FwdHVyZXJfLT5OdW1DaGFubmVscygpLCBjYXB0dXJlcl8tPk51bUNo
YW5uZWxzKCksCisgICAgICAgICAgICAgICAgY2FwdHVyZXJfLT5TYW1wbGluZ0ZyZXF1ZW5jeSgp
LCAwLCAwLCAwLCBmYWxzZSwgbmV3X21pY19sZXZlbCk7CiAgICAgICAgICAgfQogICAgICAgICAg
IGlmICgha2VlcF9jYXB0dXJpbmcpIHsKICAgICAgICAgICAgIGNhcHR1cmluZ18gPSBmYWxzZTsK
QEAgLTE4Nyw5ICsxODYsMTAgQEAgY2xhc3MgVGVzdEF1ZGlvRGV2aWNlTW9kdWxlSW1wbAogICAg
ICAgICAgIGludDY0X3QgbnRwX3RpbWVfbXMgPSAtMTsKICAgICAgICAgICBjb25zdCBpbnQgc2Ft
cGxpbmdfZnJlcXVlbmN5ID0gcmVuZGVyZXJfLT5TYW1wbGluZ0ZyZXF1ZW5jeSgpOwogICAgICAg
ICAgIGF1ZGlvX2NhbGxiYWNrXy0+TmVlZE1vcmVQbGF5RGF0YSgKLSAgICAgICAgICAgICAgU2Ft
cGxlc1BlckZyYW1lKHNhbXBsaW5nX2ZyZXF1ZW5jeSksIDIsIHJlbmRlcmVyXy0+TnVtQ2hhbm5l
bHMoKSwKLSAgICAgICAgICAgICAgc2FtcGxpbmdfZnJlcXVlbmN5LCBwbGF5b3V0X2J1ZmZlcl8u
ZGF0YSgpLCBzYW1wbGVzX291dCwKLSAgICAgICAgICAgICAgJmVsYXBzZWRfdGltZV9tcywgJm50
cF90aW1lX21zKTsKKyAgICAgICAgICAgICAgU2FtcGxlc1BlckZyYW1lKHNhbXBsaW5nX2ZyZXF1
ZW5jeSksIDIgKiByZW5kZXJlcl8tPk51bUNoYW5uZWxzKCksCisgICAgICAgICAgICAgIHJlbmRl
cmVyXy0+TnVtQ2hhbm5lbHMoKSwgc2FtcGxpbmdfZnJlcXVlbmN5LAorICAgICAgICAgICAgICBw
bGF5b3V0X2J1ZmZlcl8uZGF0YSgpLCBzYW1wbGVzX291dCwgJmVsYXBzZWRfdGltZV9tcywKKyAg
ICAgICAgICAgICAgJm50cF90aW1lX21zKTsKICAgICAgICAgICBjb25zdCBib29sIGtlZXBfcmVu
ZGVyaW5nID0KICAgICAgICAgICAgICAgcmVuZGVyZXJfLT5SZW5kZXIocnRjOjpBcnJheVZpZXc8
Y29uc3QgaW50MTZfdD4oCiAgICAgICAgICAgICAgICAgICBwbGF5b3V0X2J1ZmZlcl8uZGF0YSgp
LCBzYW1wbGVzX291dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS90ZXN0X2F1ZGlvX2Rl
dmljZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19kZXZpY2UvaW5jbHVkZS90ZXN0X2F1ZGlvX2RldmljZS5oCmluZGV4IDdkMDM0ZGNl
OGM3MGVjZGI2MjljMmM2NTJiOGU2YjIxNGJkYTZhNGEuLjkzZjBiMTM2MDFmYjc5MGY0MjU0OGI1
NDFmM2FkYmQ0MDNlYWJhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvdGVzdF9hdWRpb19k
ZXZpY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL3Rlc3RfYXVkaW9fZGV2aWNlLmgKQEAgLTEwLDE0
ICsxMCwxOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0RFVklDRV9JTkNMVURFX1RFU1RfQVVE
SU9fREVWSUNFX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fREVWSUNFX0lOQ0xVREVfVEVTVF9B
VURJT19ERVZJQ0VfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9y
PgogCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
ZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3BsYXRmb3JtX2ZpbGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW9zL2F1ZGlvX2Rl
dmljZV91bml0dGVzdF9pb3MubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pb3MvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0X2lv
cy5tbQppbmRleCA0N2I4NzNkNGE5OWI3MWEwZWQ2YjY2MTE2ZTljZWI4OWRkNDNhMmQyLi4xOWZm
OWM5MjMzMjM2YThhZTUwMmFlYjAyNDAxMTkzNThkM2MyYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9p
b3MvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0X2lvcy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pb3MvYXVkaW9fZGV2
aWNlX3VuaXR0ZXN0X2lvcy5tbQpAQCAtMjIsMTEgKzIyLDExIEBACiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19kZXZpY2UvaW9zL2F1ZGlvX2RldmljZV9pb3MuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNy
b3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
c2NvcGVkX3JlZl9wdHIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKLSNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmgiCiAjaW5jbHVkZSAi
dGVzdC9nbW9jay5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L3Rl
c3RzdXBwb3J0L2ZpbGV1dGlscy5oIgpAQCAtMzcyLDcgKzM3Miw3IEBAIGNsYXNzIE1vY2tBdWRp
b1RyYW5zcG9ydElPUyA6IHB1YmxpYyB0ZXN0OjpNb2NrQXVkaW9UcmFuc3BvcnQgewogCiAgIC8v
IFNldCBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1vY2sgb2JqZWN0LiBXZSBhcmUgZGVsZWdhdGlu
ZyB0byBmYWtlCiAgIC8vIGltcGxlbWVudGF0aW9ucyAob2YgQXVkaW9TdHJlYW1JbnRlcmZhY2Up
IGhlcmUuCi0gIHZvaWQgSGFuZGxlQ2FsbGJhY2tzKEV2ZW50V3JhcHBlciogdGVzdF9pc19kb25l
LAorICB2b2lkIEhhbmRsZUNhbGxiYWNrcyhydGM6OkV2ZW50KiB0ZXN0X2lzX2RvbmUsCiAgICAg
ICAgICAgICAgICAgICAgICAgIEF1ZGlvU3RyZWFtSW50ZXJmYWNlKiBhdWRpb19zdHJlYW0sCiAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1fY2FsbGJhY2tzKSB7CiAgICAgdGVzdF9p
c19kb25lXyA9IHRlc3RfaXNfZG9uZTsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBjbGFzcyBNb2NrQXVk
aW9UcmFuc3BvcnRJT1MgOiBwdWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0IHsKICAgYm9v
bCByZWNfbW9kZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGVfICYga1JlY29yZGluZzsgfQogCiAgcHJp
dmF0ZToKLSAgRXZlbnRXcmFwcGVyKiB0ZXN0X2lzX2RvbmVfOworICBydGM6OkV2ZW50KiB0ZXN0
X2lzX2RvbmVfOwogICBzaXplX3QgbnVtX2NhbGxiYWNrc187CiAgIGludCB0eXBlXzsKICAgc2l6
ZV90IHBsYXlfY291bnRfOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIGNsYXNzIE1vY2tBdWRpb1RyYW5z
cG9ydElPUyA6IHB1YmxpYyB0ZXN0OjpNb2NrQXVkaW9UcmFuc3BvcnQgewogLy8gQXVkaW9EZXZp
Y2VUZXN0IHRlc3QgZml4dHVyZS4KIGNsYXNzIEF1ZGlvRGV2aWNlVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDoKLSAgQXVkaW9EZXZpY2VUZXN0KCkgOiB0ZXN0X2lz
X2RvbmVfKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpIHsKKyAgQXVkaW9EZXZpY2VUZXN0KCkgewog
ICAgIG9sZF9zZXZfID0gcnRjOjpMb2dNZXNzYWdlOjpHZXRMb2dUb0RlYnVnKCk7CiAgICAgLy8g
U2V0IHN1aXRhYmxlIGxvZ2dpbmcgbGV2ZWwgaGVyZS4gQ2hhbmdlIHRvIHJ0Yzo6TFNfSU5GTyBm
b3IgbW9yZSB2ZXJib3NlCiAgICAgLy8gb3V0cHV0LiBTZWUgd2VicnRjL3J0Y19iYXNlL2xvZ2dp
bmcuaCBmb3IgY29tcGxldGUgbGlzdCBvZiBvcHRpb25zLgpAQCAtNTcyLDcgKzU3Miw3IEBAIGNs
YXNzIEF1ZGlvRGV2aWNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIEVYUEVD
VF9GQUxTRShhdWRpb19kZXZpY2UoKS0+UmVjb3JkaW5nKCkpOwogICB9CiAKLSAgc3RkOjp1bmlx
dWVfcHRyPEV2ZW50V3JhcHBlcj4gdGVzdF9pc19kb25lXzsKKyAgcnRjOjpFdmVudCB0ZXN0X2lz
X2RvbmVfOwogICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZXZpY2VNb2R1bGU+IGF1ZGlvX2Rl
dmljZV87CiAgIEF1ZGlvUGFyYW1ldGVycyBwbGF5b3V0X3BhcmFtZXRlcnNfOwogICBBdWRpb1Bh
cmFtZXRlcnMgcmVjb3JkX3BhcmFtZXRlcnNfOwpAQCAtNjYyLDcgKzY2Miw3IEBAIFRFU1RfRihB
dWRpb0RldmljZVRlc3QsIERJU0FCTEVEX1N0YXJ0UGxheW91dE9uVHdvSW5zdGFuY2VzKSB7CiAg
IC8vIGhhcyBiZWVuIGRvbmUgc3VjY2Vzc2Z1bGx5IGFuZCB0aGF0IHRoZXJlIGlzIG5vIGNvbmZs
aWN0IHdpdGggdGhlIGFscmVhZHkKICAgLy8gcGxheWluZyBmaXJzdCBBRE0uCiAgIE1vY2tBdWRp
b1RyYW5zcG9ydElPUyBtb2NrMihrUGxheW91dCk7Ci0gIG1vY2syLkhhbmRsZUNhbGxiYWNrcyh0
ZXN0X2lzX2RvbmVfLmdldCgpLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKKyAgbW9jazIuSGFu
ZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKICAg
RVhQRUNUX0NBTEwoCiAgICAgICBtb2NrMiwgTmVlZE1vcmVQbGF5RGF0YShwbGF5b3V0X2ZyYW1l
c19wZXJfMTBtc19idWZmZXIoKSwga0J5dGVzUGVyU2FtcGxlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGxheW91dF9jaGFubmVscygpLCBwbGF5b3V0X3NhbXBsZV9yYXRlKCksCkBA
IC02NzEsNyArNjcxLDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgRElTQUJMRURfU3RhcnRQ
bGF5b3V0T25Ud29JbnN0YW5jZXMpIHsKICAgRVhQRUNUX0VRKDAsIHNlY29uZF9hdWRpb19kZXZp
Y2UtPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jazIpKTsKICAgRVhQRUNUX0VRKDAsIHNlY29u
ZF9hdWRpb19kZXZpY2UtPlN0YXJ0UGxheW91dCgpKTsKICAgRVhQRUNUX1RSVUUoc2Vjb25kX2F1
ZGlvX2RldmljZS0+UGxheWluZygpKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChrVGVzdFRpbWVP
dXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRpbWVPdXRJbk1p
bGxpc2Vjb25kcyk7CiAgIEVYUEVDVF9FUSgwLCBzZWNvbmRfYXVkaW9fZGV2aWNlLT5TdG9wUGxh
eW91dCgpKTsKICAgRVhQRUNUX0ZBTFNFKHNlY29uZF9hdWRpb19kZXZpY2UtPlBsYXlpbmcoKSk7
CiAgIEVYUEVDVF9GQUxTRShzZWNvbmRfYXVkaW9fZGV2aWNlLT5QbGF5b3V0SXNJbml0aWFsaXpl
ZCgpKTsKQEAgLTY4MywxNCArNjgzLDE0IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIERJU0FC
TEVEX1N0YXJ0UGxheW91dE9uVHdvSW5zdGFuY2VzKSB7CiAvLyBhdWRpbyBzYW1wbGVzIHRvIHBs
YXkgb3V0IHVzaW5nIHRoZSBOZWVkTW9yZVBsYXlEYXRhIGNhbGxiYWNrLgogVEVTVF9GKEF1ZGlv
RGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0VmVyaWZ5Q2FsbGJhY2tzKSB7CiAgIE1vY2tBdWRpb1Ry
YW5zcG9ydElPUyBtb2NrKGtQbGF5b3V0KTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9p
c19kb25lXy5nZXQoKSwgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2Fs
bGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKICAgRVhQRUNU
X0NBTEwobW9jaywgTmVlZE1vcmVQbGF5RGF0YShwbGF5b3V0X2ZyYW1lc19wZXJfMTBtc19idWZm
ZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQnl0ZXNQZXJTYW1w
bGUsIHBsYXlvdXRfY2hhbm5lbHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwbGF5b3V0X3NhbXBsZV9yYXRlKCksIE5vdE51bGwoKSwgXywgXywgXykpCiAgICAgICAu
VGltZXMoQXRMZWFzdChrTnVtQ2FsbGJhY2tzKSk7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZp
Y2UoKS0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UGxheW91dCgpOwot
ICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKKyAgdGVz
dF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAgU3RvcFBsYXlv
dXQoKTsKIH0KIApAQCAtNjk4LDcgKzY5OCw3IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0
YXJ0UGxheW91dFZlcmlmeUNhbGxiYWNrcykgewogLy8gYXVkaW8gc2FtcGxlcyB2aWEgdGhlIFJl
Y29yZGVkRGF0YUlzQXZhaWxhYmxlIGNhbGxiYWNrLgogVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwg
U3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0SU9T
IG1vY2soa1JlY29yZGluZyk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8u
Z2V0KCksIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNhbGxiYWNrcygm
dGVzdF9pc19kb25lXywgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVDVF9DQUxMKG1v
Y2ssCiAgICAgICAgICAgICAgIFJlY29yZGVkRGF0YUlzQXZhaWxhYmxlKAogICAgICAgICAgICAg
ICAgICAgTm90TnVsbCgpLCByZWNvcmRfZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpLCBrQnl0ZXNQ
ZXJTYW1wbGUsCkBAIC03MDgsNyArNzA4LDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3Rh
cnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKIAogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2
aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFJlY29yZGluZygp
OwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKKyAg
dGVzdF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAgU3RvcFJl
Y29yZGluZygpOwogfQogCkBAIC03MTYsNyArNzE2LDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVz
dCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKIC8vIGFjdGl2ZSBpbiBib3RoIGRp
cmVjdGlvbnMuCiBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRBbmRSZWNvcmRp
bmdWZXJpZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0SU9TIG1vY2soa1BsYXlv
dXQgfCBrUmVjb3JkaW5nKTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5n
ZXQoKSwgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0
ZXN0X2lzX2RvbmVfLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKICAgRVhQRUNUX0NBTEwobW9j
aywgTmVlZE1vcmVQbGF5RGF0YShwbGF5b3V0X2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQnl0ZXNQZXJTYW1wbGUsIHBsYXlv
dXRfY2hhbm5lbHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5
b3V0X3NhbXBsZV9yYXRlKCksIE5vdE51bGwoKSwgXywgXywgXykpCkBAIC03MzAsNyArNzMwLDcg
QEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0QW5kUmVjb3JkaW5nVmVyaWZ5
Q2FsbGJhY2tzKSB7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+UmVnaXN0ZXJBdWRp
b0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UGxheW91dCgpOwogICBTdGFydFJlY29yZGluZygp
OwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKKyAg
dGVzdF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAgU3RvcFJl
Y29yZGluZygpOwogICBTdG9wUGxheW91dCgpOwogfQpAQCAtNzQ2LDEyICs3NDYsMTEgQEAgVEVT
VF9GKEF1ZGlvRGV2aWNlVGVzdCwgUnVuUGxheW91dFdpdGhGaWxlQXNTb3VyY2UpIHsKICAgc3Rk
OjpzdHJpbmcgZmlsZV9uYW1lID0gR2V0RmlsZU5hbWUocGxheW91dF9zYW1wbGVfcmF0ZSgpKTsK
ICAgc3RkOjp1bmlxdWVfcHRyPEZpbGVBdWRpb1N0cmVhbT4gZmlsZV9hdWRpb19zdHJlYW0oCiAg
ICAgICBuZXcgRmlsZUF1ZGlvU3RyZWFtKG51bV9jYWxsYmFja3MsIGZpbGVfbmFtZSwgcGxheW91
dF9zYW1wbGVfcmF0ZSgpKSk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8u
Z2V0KCksIGZpbGVfYXVkaW9fc3RyZWFtLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICBu
dW1fY2FsbGJhY2tzKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRlc3RfaXNfZG9uZV8sIGZp
bGVfYXVkaW9fc3RyZWFtLmdldCgpLCBudW1fY2FsbGJhY2tzKTsKICAgLy8gU2V0TWF4UGxheW91
dFZvbHVtZSgpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9D
YWxsYmFjaygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25lXy0+V2Fp
dChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVz
dFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BQbGF5b3V0KCk7CiB9CiAKQEAgLTc4MCwx
NCArNzc5LDEzIEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFJ1blBsYXlvdXRBbmRSZWNvcmRp
bmdJbkZ1bGxEdXBsZXgpIHsKICAgTmljZU1vY2s8TW9ja0F1ZGlvVHJhbnNwb3J0SU9TPiBtb2Nr
KGtQbGF5b3V0IHwga1JlY29yZGluZyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxGaWZvQXVkaW9TdHJl
YW0+IGZpZm9fYXVkaW9fc3RyZWFtKAogICAgICAgbmV3IEZpZm9BdWRpb1N0cmVhbShwbGF5b3V0
X2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSkpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0
X2lzX2RvbmVfLmdldCgpLCBmaWZvX2F1ZGlvX3N0cmVhbS5nZXQoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAga0Z1bGxEdXBsZXhUaW1lSW5TZWMgKiBrTnVtQ2FsbGJhY2tzUGVyU2Vjb25kKTsK
KyAgbW9jay5IYW5kbGVDYWxsYmFja3MoCisgICAgICAmdGVzdF9pc19kb25lXywgZmlmb19hdWRp
b19zdHJlYW0uZ2V0KCksIGtGdWxsRHVwbGV4VGltZUluU2VjICoga051bUNhbGxiYWNrc1BlclNl
Y29uZCk7CiAgIC8vIFNldE1heFBsYXlvdXRWb2x1bWUoKTsKICAgRVhQRUNUX0VRKDAsIGF1ZGlv
X2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3RhcnRSZWNvcmRp
bmcoKTsKICAgU3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoCi0gICAgICBz
dGQ6Om1heChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcywgMTAwMCAqIGtGdWxsRHVwbGV4VGlt
ZUluU2VjKSk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChzdGQ6Om1heChrVGVzdFRpbWVPdXRJbk1p
bGxpc2Vjb25kcywgMTAwMCAqIGtGdWxsRHVwbGV4VGltZUluU2VjKSk7CiAgIFN0b3BQbGF5b3V0
KCk7CiAgIFN0b3BSZWNvcmRpbmcoKTsKICAgRVhQRUNUX0xFKGZpZm9fYXVkaW9fc3RyZWFtLT5h
dmVyYWdlX3NpemUoKSwgMTB1KTsKQEAgLTgwOSwxNSArODA3LDE1IEBAIFRFU1RfRihBdWRpb0Rl
dmljZVRlc3QsIERJU0FCTEVEX01lYXN1cmVMb29wYmFja0xhdGVuY3kpIHsKICAgTmljZU1vY2s8
TW9ja0F1ZGlvVHJhbnNwb3J0SU9TPiBtb2NrKGtQbGF5b3V0IHwga1JlY29yZGluZyk7CiAgIHN0
ZDo6dW5pcXVlX3B0cjxMYXRlbmN5TWVhc3VyaW5nQXVkaW9TdHJlYW0+IGxhdGVuY3lfYXVkaW9f
c3RyZWFtKAogICAgICAgbmV3IExhdGVuY3lNZWFzdXJpbmdBdWRpb1N0cmVhbShwbGF5b3V0X2Zy
YW1lc19wZXJfMTBtc19idWZmZXIoKSkpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lz
X2RvbmVfLmdldCgpLCBsYXRlbmN5X2F1ZGlvX3N0cmVhbS5nZXQoKSwKKyAgbW9jay5IYW5kbGVD
YWxsYmFja3MoJnRlc3RfaXNfZG9uZV8sCisgICAgICAgICAgICAgICAgICAgICAgIGxhdGVuY3lf
YXVkaW9fc3RyZWFtLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICBrTWVhc3VyZUxhdGVu
Y3lUaW1lSW5TZWMgKiBrTnVtQ2FsbGJhY2tzUGVyU2Vjb25kKTsKICAgRVhQRUNUX0VRKDAsIGF1
ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgLy8gU2V0TWF4
UGxheW91dFZvbHVtZSgpOwogICAvLyBEaXNhYmxlQnVpbHRJbkFFQ0lmQXZhaWxhYmxlKCk7CiAg
IFN0YXJ0UmVjb3JkaW5nKCk7CiAgIFN0YXJ0UGxheW91dCgpOwotICB0ZXN0X2lzX2RvbmVfLT5X
YWl0KAotICAgICAgc3RkOjptYXgoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMsIDEwMDAgKiBr
TWVhc3VyZUxhdGVuY3lUaW1lSW5TZWMpKTsKKyAgdGVzdF9pc19kb25lXy5XYWl0KHN0ZDo6bWF4
KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzLCAxMDAwICoga01lYXN1cmVMYXRlbmN5VGltZUlu
U2VjKSk7CiAgIFN0b3BQbGF5b3V0KCk7CiAgIFN0b3BSZWNvcmRpbmcoKTsKICAgLy8gVmVyaWZ5
IHRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIHRyYW5zbWl0dGVkIGltcHVsc2VzIGFyZSBkZXRl
Y3RlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9hbHNhX2xpbnV4Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2RldmljZS9saW51eC9hdWRpb19kZXZpY2VfYWxzYV9saW51eC5oCmluZGV4IDNkMTU1NjViOGRj
NDgxNDAwYWMxYTRlMDJlYzYwNzhlOGMxMDk4ODcuLmQ2MGRjYWZkY2VkMTZjYmNhN2VkMzkyM2Yz
NDJjZjJjMTNmN2I0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9hbHNh
X2xpbnV4LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX2Fsc2FfbGludXguaApAQCAt
MjksNyArMjksNiBAQCB0eXBlZGVmIHdlYnJ0Yzo6YWRtX2xpbnV4X2Fsc2E6OkFsc2FTeW1ib2xU
YWJsZSBXZWJSVENBbHNhU3ltYm9sVGFibGU7CiBXZWJSVENBbHNhU3ltYm9sVGFibGUqIEdldEFs
c2FTeW1ib2xUYWJsZSgpOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIEV2ZW50V3JhcHBl
cjsKIAogY2xhc3MgQXVkaW9EZXZpY2VMaW51eEFMU0EgOiBwdWJsaWMgQXVkaW9EZXZpY2VHZW5l
cmljIHsKICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19kZXZpY2VfcHVs
c2VfbGludXguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19kZXZpY2VfcHVsc2VfbGludXguY2MKaW5k
ZXggMjE1N2FmMzI4YzZkM2IyMzc0MjBhYWVmNzU5ZDJjZWM4N2ZjYjJjMy4uMzcwNmQ5MTc2ZWNk
ODBmZTU0OTY4MzMxM2EwNzFjMDZlYjM4M2I5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVk
aW9fZGV2aWNlX3B1bHNlX2xpbnV4LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9w
dWxzZV9saW51eC5jYwpAQCAtOCwxMSArOCwxMiBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfY29uZmlnLmgiCisjaW5jbHVkZSA8
c3RyaW5nLmg+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19k
ZXZpY2VfcHVsc2VfbGludXguaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9saW51
eC9sYXRlYmluZGluZ3N5bWJvbHRhYmxlX2xpbnV4LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInN5c3RlbV93
cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCIKIAogV2ViUlRDUHVsc2VTeW1ib2xUYWJs
ZSogR2V0UHVsc2VTeW1ib2xUYWJsZSgpIHsKICAgc3RhdGljIFdlYlJUQ1B1bHNlU3ltYm9sVGFi
bGUqIHB1bHNlX3N5bWJvbF90YWJsZSA9CkBAIC0zMSwxMCArMzIsNiBAQCBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIAogQXVkaW9EZXZpY2VMaW51eFB1bHNlOjpBdWRpb0RldmljZUxpbnV4UHVsc2UoKQog
ICAgIDogX3B0ckF1ZGlvQnVmZmVyKE5VTEwpLAotICAgICAgX3RpbWVFdmVudFJlYygqRXZlbnRX
cmFwcGVyOjpDcmVhdGUoKSksCi0gICAgICBfdGltZUV2ZW50UGxheSgqRXZlbnRXcmFwcGVyOjpD
cmVhdGUoKSksCi0gICAgICBfcmVjU3RhcnRFdmVudCgqRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSks
Ci0gICAgICBfcGxheVN0YXJ0RXZlbnQoKkV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAogICAgICAg
X2lucHV0RGV2aWNlSW5kZXgoMCksCiAgICAgICBfb3V0cHV0RGV2aWNlSW5kZXgoMCksCiAgICAg
ICBfaW5wdXREZXZpY2VJc1NwZWNpZmllZChmYWxzZSksCkBAIC0xMTEsMTEgKzEwOCw2IEBAIEF1
ZGlvRGV2aWNlTGludXhQdWxzZTo6fkF1ZGlvRGV2aWNlTGludXhQdWxzZSgpIHsKICAgICBkZWxl
dGVbXSBfcmVjRGV2aWNlTmFtZTsKICAgICBfcmVjRGV2aWNlTmFtZSA9IE5VTEw7CiAgIH0KLQot
ICBkZWxldGUgJl9yZWNTdGFydEV2ZW50OwotICBkZWxldGUgJl9wbGF5U3RhcnRFdmVudDsKLSAg
ZGVsZXRlICZfdGltZUV2ZW50UmVjOwotICBkZWxldGUgJl90aW1lRXZlbnRQbGF5OwogfQogCiB2
b2lkIEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6QXR0YWNoQXVkaW9CdWZmZXIoQXVkaW9EZXZpY2VC
dWZmZXIqIGF1ZGlvQnVmZmVyKSB7CkBAIC0xMDY1LDcgKzEwNTcsNyBAQCBpbnQzMl90IEF1ZGlv
RGV2aWNlTGludXhQdWxzZTo6U3RhcnRSZWNvcmRpbmcoKSB7CiAKICAgLy8gVGhlIGF1ZGlvIHRo
cmVhZCB3aWxsIHNpZ25hbCB3aGVuIHJlY29yZGluZyBoYXMgc3RhcnRlZC4KICAgX3RpbWVFdmVu
dFJlYy5TZXQoKTsKLSAgaWYgKGtFdmVudFRpbWVvdXQgPT0gX3JlY1N0YXJ0RXZlbnQuV2FpdCgx
MDAwMCkpIHsKKyAgaWYgKCFfcmVjU3RhcnRFdmVudC5XYWl0KDEwMDAwKSkgewogICAgIHsKICAg
ICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJl9jcml0U2VjdCk7CiAgICAgICBfc3RhcnRSZWMgPSBm
YWxzZTsKQEAgLTExODAsNyArMTE3Miw3IEBAIGludDMyX3QgQXVkaW9EZXZpY2VMaW51eFB1bHNl
OjpTdGFydFBsYXlvdXQoKSB7CiAKICAgLy8gVGhlIGF1ZGlvIHRocmVhZCB3aWxsIHNpZ25hbCB3
aGVuIHBsYXlvdXQgaGFzIHN0YXJ0ZWQuCiAgIF90aW1lRXZlbnRQbGF5LlNldCgpOwotICBpZiAo
a0V2ZW50VGltZW91dCA9PSBfcGxheVN0YXJ0RXZlbnQuV2FpdCgxMDAwMCkpIHsKKyAgaWYgKCFf
cGxheVN0YXJ0RXZlbnQuV2FpdCgxMDAwMCkpIHsKICAgICB7CiAgICAgICBydGM6OkNyaXRTY29w
ZSBsb2NrKCZfY3JpdFNlY3QpOwogICAgICAgX3N0YXJ0UGxheSA9IGZhbHNlOwpAQCAtMTk5NCwx
NCArMTk4Niw4IEBAIGJvb2wgQXVkaW9EZXZpY2VMaW51eFB1bHNlOjpSZWNUaHJlYWRGdW5jKHZv
aWQqIHBUaGlzKSB7CiB9CiAKIGJvb2wgQXVkaW9EZXZpY2VMaW51eFB1bHNlOjpQbGF5VGhyZWFk
UHJvY2VzcygpIHsKLSAgc3dpdGNoIChfdGltZUV2ZW50UGxheS5XYWl0KDEwMDApKSB7Ci0gICAg
Y2FzZSBrRXZlbnRTaWduYWxlZDoKLSAgICAgIGJyZWFrOwotICAgIGNhc2Uga0V2ZW50RXJyb3I6
Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJFdmVudFdyYXBwZXI6OldhaXQoKSBmYWls
ZWQiOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBrRXZlbnRUaW1lb3V0OgotICAgICAg
cmV0dXJuIHRydWU7CisgIGlmICghX3RpbWVFdmVudFBsYXkuV2FpdCgxMDAwKSkgeworICAgIHJl
dHVybiB0cnVlOwogICB9CiAKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmX2NyaXRTZWN0KTsKQEAg
LTIxNjgsMTQgKzIxNTQsOCBAQCBib29sIEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6UGxheVRocmVh
ZFByb2Nlc3MoKSB7CiB9CiAKIGJvb2wgQXVkaW9EZXZpY2VMaW51eFB1bHNlOjpSZWNUaHJlYWRQ
cm9jZXNzKCkgewotICBzd2l0Y2ggKF90aW1lRXZlbnRSZWMuV2FpdCgxMDAwKSkgewotICAgIGNh
c2Uga0V2ZW50U2lnbmFsZWQ6Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGtFdmVudEVycm9yOgot
ICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRXZlbnRXcmFwcGVyOjpXYWl0KCkgZmFpbGVk
IjsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2Uga0V2ZW50VGltZW91dDoKLSAgICAgIHJl
dHVybiB0cnVlOworICBpZiAoIV90aW1lRXZlbnRSZWMuV2FpdCgxMDAwKSkgeworICAgIHJldHVy
biB0cnVlOwogICB9CiAKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmX2NyaXRTZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9wdWxzZV9saW51eC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGlu
dXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xpbnV4LmgKaW5kZXggMTY1NWIxODExN2ZiMjRlMzE3Mzhl
YjljYjI0NmE4MmM3MmI2ZDYxMS4uNGRlODdmYzNlNmUzZTRlZDZlMjE1NGVjYzE5NzIwOWM3NzI4
ODA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xpbnV4LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xpbnV4LmgKQEAgLTEzLDEwICsx
MywxNiBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19k
ZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2
aWNlL2F1ZGlvX2RldmljZV9nZW5lcmljLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZp
Y2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Rldmlj
ZS9pbmNsdWRlL2F1ZGlvX2RldmljZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19kZXZpY2UvbGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L3B1bHNlYXVkaW9zeW1ib2x0YWJsZV9saW51
eC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvdGhyZWFkX2NoZWNrZXIuaCIKIAogI2lmIGRlZmluZWQoV0VCUlRDX1VTRV9YMTEpCkBAIC0y
NCw2ICszMCw4IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHB1bHNlL3B1bHNlYXVkaW8uaD4KKyNp
bmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogLy8gV2UgZGVmaW5lIHRo
aXMgZmxhZyBpZiBpdCdzIG1pc3NpbmcgZnJvbSBvdXIgaGVhZGVycywgYmVjYXVzZSB3ZSB3YW50
IHRvIGJlCiAvLyBhYmxlIHRvIGNvbXBpbGUgYWdhaW5zdCBvbGQgaGVhZGVycyBidXQgc3RpbGwg
dXNlIFBBX1NUUkVBTV9BREpVU1RfTEFURU5DWQpAQCAtOTYsNyArMTA0LDYgQEAgdHlwZWRlZiB3
ZWJydGM6OmFkbV9saW51eF9wdWxzZTo6UHVsc2VBdWRpb1N5bWJvbFRhYmxlIFdlYlJUQ1B1bHNl
U3ltYm9sVGFibGU7CiBXZWJSVENQdWxzZVN5bWJvbFRhYmxlKiBHZXRQdWxzZVN5bWJvbFRhYmxl
KCk7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgRXZlbnRXcmFwcGVyOwogCiBjbGFzcyBB
dWRpb0RldmljZUxpbnV4UHVsc2UgOiBwdWJsaWMgQXVkaW9EZXZpY2VHZW5lcmljIHsKICBwdWJs
aWM6CkBAIC0yNTUsMTAgKzI2MiwxMCBAQCBjbGFzcyBBdWRpb0RldmljZUxpbnV4UHVsc2UgOiBw
dWJsaWMgQXVkaW9EZXZpY2VHZW5lcmljIHsKICAgQXVkaW9EZXZpY2VCdWZmZXIqIF9wdHJBdWRp
b0J1ZmZlcjsKIAogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBfY3JpdFNlY3Q7Ci0gIEV2ZW50V3Jh
cHBlciYgX3RpbWVFdmVudFJlYzsKLSAgRXZlbnRXcmFwcGVyJiBfdGltZUV2ZW50UGxheTsKLSAg
RXZlbnRXcmFwcGVyJiBfcmVjU3RhcnRFdmVudDsKLSAgRXZlbnRXcmFwcGVyJiBfcGxheVN0YXJ0
RXZlbnQ7CisgIHJ0Yzo6RXZlbnQgX3RpbWVFdmVudFJlYzsKKyAgcnRjOjpFdmVudCBfdGltZUV2
ZW50UGxheTsKKyAgcnRjOjpFdmVudCBfcmVjU3RhcnRFdmVudDsKKyAgcnRjOjpFdmVudCBfcGxh
eVN0YXJ0RXZlbnQ7CiAKICAgLy8gVE9ETyhwYm9zKTogUmVtb3ZlIHVuaXF1ZV9wdHIgYW5kIHVz
ZSBkaXJlY3RseSB3aXRob3V0IHJlc2V0dGluZy4KICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6UGxh
dGZvcm1UaHJlYWQ+IF9wdHJUaHJlYWRQbGF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVk
aW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX21peGVy
X21hbmFnZXJfcHVsc2VfbGludXguY2MKaW5kZXggNWJhOTIzYmI5MTFjMWQyMjI0NDllNTFjODA2
MGQ3Zjg3NDE4ODg0NC4uMjJlMTA0MDdkZTJmZjEzZjBhYTYzMDY0NjJlNmE0ZTk3MDI4ZWU1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19taXhlcl9tYW5hZ2VyX3B1bHNlX2xpbnV4LmNjCkBA
IC04LDggKzgsMTIgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19kZXZpY2VfcHVsc2VfbGlu
dXguaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19taXhlcl9t
YW5hZ2VyX3B1bHNlX2xpbnV4LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvbGlu
dXgvbGF0ZWJpbmRpbmdzeW1ib2x0YWJsZV9saW51eC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fZGV2aWNlL2xpbnV4L3B1bHNlYXVkaW9zeW1ib2x0YWJsZV9saW51eC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19k
ZXZpY2UvbGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5oCmluZGV4IGM1NDYw
YjYyMzdhZjg3MjI1MjMwN2IyYTdmYzE0ODE4MGZjNjIwM2UuLjY3OWQxYjRiN2MyNmQyMzZlNTIz
MDZkOGFkOWQxYWZkODVhZmE5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX21peGVy
X21hbmFnZXJfcHVsc2VfbGludXguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19taXhlcl9tYW5h
Z2VyX3B1bHNlX2xpbnV4LmgKQEAgLTExLDEzICsxMSwxMSBAQAogI2lmbmRlZiBBVURJT19ERVZJ
Q0VfQVVESU9fTUlYRVJfTUFOQUdFUl9QVUxTRV9MSU5VWF9IXwogI2RlZmluZSBBVURJT19ERVZJ
Q0VfQVVESU9fTUlYRVJfTUFOQUdFUl9QVUxTRV9MSU5VWF9IXwogCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2RldmljZS9saW51eC9wdWxzZWF1ZGlvc3ltYm9sdGFibGVfbGludXguaCIKLSNpbmNs
dWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgotCiAjaW5jbHVkZSA8cHVsc2UvcHVsc2Vh
dWRpby5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFk
X2NoZWNrZXIuaCIKKwogI2lmbmRlZiBVSU5UMzJfTUFYCiAjZGVmaW5lIFVJTlQzMl9NQVggKCh1
aW50MzJfdCktMSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjL2F1ZGlvX2RldmljZV9t
YWMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2RldmljZS9tYWMvYXVkaW9fZGV2aWNlX21hYy5jYwppbmRleCAwNjNhYzg1NzM2ZGRj
NGQxMDE1ZjIxODYzNTFmZjAyZDI3OTdmM2ZkLi45ZGFmN2JkZGY3YmY3M2M1OWRlMjhmZTM1MzU2
NGMxYjhmMzM1ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9tYWMvYXVkaW9fZGV2aWNlX21hYy5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2RldmljZS9tYWMvYXVkaW9fZGV2aWNlX21hYy5jYwpAQCAtMTYsNyArMTYsNiBAQAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3Ro
cmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9hcmNoLmgiCi0jaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oIgogCiAjaW5jbHVkZSA8QXBwbGlj
YXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAjaW5jbHVkZSA8bGlia2Vybi9P
U0F0b21pYy5oPiAgLy8gT1NBdG9taWNDb21wYXJlQW5kU3dhcCgpCkBAIC0xMTUsOCArMTE0LDYg
QEAgdm9pZCBBdWRpb0RldmljZU1hYzo6bG9nQ0FNc2coY29uc3QgcnRjOjpMb2dnaW5nU2V2ZXJp
dHkgc2V2LAogCiBBdWRpb0RldmljZU1hYzo6QXVkaW9EZXZpY2VNYWMoKQogICAgIDogX3B0ckF1
ZGlvQnVmZmVyKE5VTEwpLAotICAgICAgX3N0b3BFdmVudFJlYygqRXZlbnRXcmFwcGVyOjpDcmVh
dGUoKSksCi0gICAgICBfc3RvcEV2ZW50KCpFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSwKICAgICAg
IF9taXhlck1hbmFnZXIoKSwKICAgICAgIF9pbnB1dERldmljZUluZGV4KDApLAogICAgICAgX291
dHB1dERldmljZUluZGV4KDApLApAQCAtMTUzLDkgKzE1MCw2IEBAIEF1ZGlvRGV2aWNlTWFjOjpB
dWRpb0RldmljZU1hYygpCiAgICAgICBwcmV2X2tleV9zdGF0ZV8oKSB7CiAgIFJUQ19MT0coTFNf
SU5GTykgPDwgX19GVU5DVElPTl9fIDw8ICIgY3JlYXRlZCI7CiAKLSAgUlRDX0RDSEVDSygmX3N0
b3BFdmVudCAhPSBOVUxMKTsKLSAgUlRDX0RDSEVDSygmX3N0b3BFdmVudFJlYyAhPSBOVUxMKTsK
LQogICBtZW1zZXQoX3JlbmRlckNvbnZlcnREYXRhLCAwLCBzaXplb2YoX3JlbmRlckNvbnZlcnRE
YXRhKSk7CiAgIG1lbXNldCgmX291dFN0cmVhbUZvcm1hdCwgMCwgc2l6ZW9mKEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbikpOwogICBtZW1zZXQoJl9vdXREZXNpcmVkRm9ybWF0LCAwLCBzaXpl
b2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CkBAIC0yMDQsOCArMTk4LDYgQEAgQXVk
aW9EZXZpY2VNYWM6On5BdWRpb0RldmljZU1hYygpIHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8
PCAic2VtYXBob3JlX2Rlc3Ryb3koKSBlcnJvcjogIiA8PCBrZXJuRXJyOwogICB9CiAKLSAgZGVs
ZXRlICZfc3RvcEV2ZW50OwotICBkZWxldGUgJl9zdG9wRXZlbnRSZWM7CiB9CiAKIC8vID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQEAgLTEzMzgsNyArMTMzMCw3IEBAIGludDMyX3QgQXVkaW9EZXZpY2VN
YWM6OlN0b3BSZWNvcmRpbmcoKSB7CiAgICAgICBfcmVjb3JkaW5nID0gZmFsc2U7CiAgICAgICBf
ZG9TdG9wUmVjID0gdHJ1ZTsgIC8vIFNpZ25hbCB0byBpbyBwcm9jIHRvIHN0b3AgYXVkaW8gZGV2
aWNlCiAgICAgICBfY3JpdFNlY3QuTGVhdmUoKTsgIC8vIENhbm5vdCBiZSB1bmRlciBsb2NrLCBy
aXNrIG9mIGRlYWRsb2NrCi0gICAgICBpZiAoa0V2ZW50VGltZW91dCA9PSBfc3RvcEV2ZW50UmVj
LldhaXQoMjAwMCkpIHsKKyAgICAgIGlmICghX3N0b3BFdmVudFJlYy5XYWl0KDIwMDApKSB7CiAg
ICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXRTY29wZWQoJl9jcml0U2VjdCk7CiAgICAgICAgIFJU
Q19MT0coTFNfV0FSTklORykgPDwgIlRpbWVkIG91dCBzdG9wcGluZyB0aGUgY2FwdHVyZSBJT1By
b2MuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJXZSBtYXkgaGF2ZSBmYWlsZWQg
dG8gZGV0ZWN0IGEgZGV2aWNlIHJlbW92YWwuIjsKQEAgLTEzNjYsNyArMTM1OCw3IEBAIGludDMy
X3QgQXVkaW9EZXZpY2VNYWM6OlN0b3BSZWNvcmRpbmcoKSB7CiAgICAgICBfcmVjb3JkaW5nID0g
ZmFsc2U7CiAgICAgICBfZG9TdG9wID0gdHJ1ZTsgICAgIC8vIFNpZ25hbCB0byBpbyBwcm9jIHRv
IHN0b3AgYXVkaW8gZGV2aWNlCiAgICAgICBfY3JpdFNlY3QuTGVhdmUoKTsgIC8vIENhbm5vdCBi
ZSB1bmRlciBsb2NrLCByaXNrIG9mIGRlYWRsb2NrCi0gICAgICBpZiAoa0V2ZW50VGltZW91dCA9
PSBfc3RvcEV2ZW50LldhaXQoMjAwMCkpIHsKKyAgICAgIGlmICghX3N0b3BFdmVudC5XYWl0KDIw
MDApKSB7CiAgICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXRTY29wZWQoJl9jcml0U2VjdCk7CiAg
ICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlRpbWVkIG91dCBzdG9wcGluZyB0aGUgc2hh
cmVkIElPUHJvYy4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIldlIG1heSBoYXZl
IGZhaWxlZCB0byBkZXRlY3QgYSBkZXZpY2UgcmVtb3ZhbC4iOwpAQCAtMTQ3NCw3ICsxNDY2LDcg
QEAgaW50MzJfdCBBdWRpb0RldmljZU1hYzo6U3RvcFBsYXlvdXQoKSB7CiAgICAgX3BsYXlpbmcg
PSBmYWxzZTsKICAgICBfZG9TdG9wID0gdHJ1ZTsgICAgIC8vIFNpZ25hbCB0byBpbyBwcm9jIHRv
IHN0b3AgYXVkaW8gZGV2aWNlCiAgICAgX2NyaXRTZWN0LkxlYXZlKCk7ICAvLyBDYW5ub3QgYmUg
dW5kZXIgbG9jaywgcmlzayBvZiBkZWFkbG9jawotICAgIGlmIChrRXZlbnRUaW1lb3V0ID09IF9z
dG9wRXZlbnQuV2FpdCgyMDAwKSkgeworICAgIGlmICghX3N0b3BFdmVudC5XYWl0KDIwMDApKSB7
CiAgICAgICBydGM6OkNyaXRTY29wZSBjcml0U2NvcGVkKCZfY3JpdFNlY3QpOwogICAgICAgUlRD
X0xPRyhMU19XQVJOSU5HKSA8PCAiVGltZWQgb3V0IHN0b3BwaW5nIHRoZSByZW5kZXIgSU9Qcm9j
LiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIldlIG1heSBoYXZlIGZhaWxlZCB0byBk
ZXRlY3QgYSBkZXZpY2UgcmVtb3ZhbC4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjL2F1ZGlvX2Rl
dmljZV9tYWMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fZGV2aWNlL21hYy9hdWRpb19kZXZpY2VfbWFjLmgKaW5kZXggNWNiZGFlMjgz
NzFhMjkzMGUwNzM1YTc0MjNkNDViNjZlYTRjYzEzNS4uNWE3MDc2MDY1MzM0Y2Y3NTRkNzU2YTA0
ZWI4MTcwZWE2YmM4ODM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjL2F1ZGlvX2RldmljZV9tYWMu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2RldmljZS9tYWMvYXVkaW9fZGV2aWNlX21hYy5oCkBAIC0xNiw5ICsxNiw5IEBACiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2dlbmVyaWMuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9tYWMvYXVkaW9fbWl4ZXJfbWFuYWdlcl9tYWMu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9ldmVudF93cmFwcGVyLmgiCiAKICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9D
b252ZXJ0ZXIuaD4KICNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvLmg+CkBAIC0zMSw3ICsz
MSw2IEBAIGNsYXNzIFBsYXRmb3JtVGhyZWFkOwogfSAgLy8gbmFtZXNwYWNlIHJ0YwogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKLWNsYXNzIEV2ZW50V3JhcHBlcjsKIAogY29uc3QgdWludDMyX3QgTl9S
RUNfU0FNUExFU19QRVJfU0VDID0gNDgwMDA7CiBjb25zdCB1aW50MzJfdCBOX1BMQVlfU0FNUExF
U19QRVJfU0VDID0gNDgwMDA7CkBAIC0yNTIsOCArMjUxLDggQEAgY2xhc3MgQXVkaW9EZXZpY2VN
YWMgOiBwdWJsaWMgQXVkaW9EZXZpY2VHZW5lcmljIHsKIAogICBydGM6OkNyaXRpY2FsU2VjdGlv
biBfY3JpdFNlY3Q7CiAKLSAgRXZlbnRXcmFwcGVyJiBfc3RvcEV2ZW50UmVjOwotICBFdmVudFdy
YXBwZXImIF9zdG9wRXZlbnQ7CisgIHJ0Yzo6RXZlbnQgX3N0b3BFdmVudFJlYzsKKyAgcnRjOjpF
dmVudCBfc3RvcEV2ZW50OwogCiAgIC8vIFRPRE8ocGJvcyk6IFJlcGxhY2Ugd2l0aCBkaXJlY3Qg
bWVtYmVycywganVzdCBzdGFydC9zdG9wLCBubyBuZWVkIHRvCiAgIC8vIHJlY3JlYXRlIHRoZSB0
aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9CVUlMRC5nbgppbmRleCAw
YmIzYWUxMzdhZWVkZGRmZDk5Yzc0MGYxMTNmMDliMGE0NTFjOWYyLi5mOTM1ZTgzYzViYTIzZjll
ZmVkYWU1NTQyMjEzYjc2NDZiOGI1ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL0JVSUxELmduCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
bWl4ZXIvQlVJTEQuZ24KQEAgLTM3LDcgKzM3LDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRp
b19taXhlcl9pbXBsIikgewogCiAgIGRlcHMgPSBbCiAgICAgIjphdWRpb19mcmFtZV9tYW5pcHVs
YXRvciIsCi0gICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9hcGk6YXJyYXlf
dmlldyIsCiAgICAgIi4uLy4uL2FwaS9hdWRpbzphdWRpb19mcmFtZV9hcGkiLAogICAgICIuLi8u
Li9hcGkvYXVkaW86YXVkaW9fbWl4ZXJfYXBpIiwKQEAgLTQ4LDYgKzQ3LDcgQEAgcnRjX3N0YXRp
Y19saWJyYXJ5KCJhdWRpb19taXhlcl9pbXBsIikgewogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBl
cnMiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgIi4uL2F1ZGlv
X3Byb2Nlc3NpbmciLAorICAgICIuLi9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgIi4uL2F1
ZGlvX3Byb2Nlc3Npbmc6YXBtX2xvZ2dpbmciLAogICAgICIuLi9hdWRpb19wcm9jZXNzaW5nOmF1
ZGlvX2ZyYW1lX3ZpZXciLAogICAgICIuLi9hdWRpb19wcm9jZXNzaW5nL2FnYzI6Zml4ZWRfZGln
aXRhbCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVyX2ltcGwuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvYXVkaW9f
bWl4ZXJfaW1wbC5oCmluZGV4IGU4OTk0YTY3NGJjNjA1ZDg1NjQ5NzM4NmUxZGY0ZDU4YWQ4NDAx
NGIuLjhlZGQzYjhiZGM0ZDNlNGI2MDAzNjE3NWE4NDVhZWVlNjY4OTA3MjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
bWl4ZXIvYXVkaW9fbWl4ZXJfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvYXVkaW9fbWl4ZXJfaW1wbC5oCkBA
IC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX21peGVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19taXhlci9mcmFtZV9jb21iaW5lci5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fbWl4ZXIvb3V0cHV0X3JhdGVfY2FsY3VsYXRvci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhY2VfY2hlY2tl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVy
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVyX3Rlc3QuY2MKaW5kZXggMjAwNGFlZWY0NjNhYjBh
YjkwMjEzMGY3MzI0MDZiOTljMGVjZGM3Yi4uYjYwNzg3NzU1ZDgzNmUwMjgyZDBiYWQ0ZDE3M2Y1
Zjc4NTI4MTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9hdWRpb19taXhlcl90ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4
ZXIvYXVkaW9fbWl4ZXJfdGVzdC5jYwpAQCAtMTksMjQgKzE5LDI1IEBACiAjaW5jbHVkZSAicnRj
X2Jhc2UvZmxhZ3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVy
LmgiCiAKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZSIpOwot
REVGSU5FX2ludChzYW1wbGluZ19yYXRlLAotICAgICAgICAgICAxNjAwMCwKLSAgICAgICAgICAg
IlJhdGUgYXQgd2hpY2ggdG8gbWl4IChhbGwgaW5wdXQgc3RyZWFtcyBtdXN0IGhhdmUgdGhpcyBy
YXRlKSIpOworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVz
c2FnZSIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgc2FtcGxpbmdfcmF0ZSwKKyAgICAxNjAw
MCwKKyAgICAiUmF0ZSBhdCB3aGljaCB0byBtaXggKGFsbCBpbnB1dCBzdHJlYW1zIG11c3QgaGF2
ZSB0aGlzIHJhdGUpIik7CiAKLURFRklORV9ib29sKAorV0VCUlRDX0RFRklORV9ib29sKAogICAg
IHN0ZXJlbywKICAgICBmYWxzZSwKICAgICAiRW5hYmxlIHN0ZXJlbyAoaW50ZXJsZWF2ZWQpLiBJ
bnB1dHMgbmVlZCBub3QgYmUgYXMgdGhpcyBwYXJhbWV0ZXIuIik7CiAKLURFRklORV9ib29sKGxp
bWl0ZXIsIHRydWUsICJFbmFibGUgbGltaXRlci4iKTsKLURFRklORV9zdHJpbmcob3V0cHV0X2Zp
bGUsCi0gICAgICAgICAgICAgICJtaXhlZF9maWxlLndhdiIsCi0gICAgICAgICAgICAgICJGaWxl
IGluIHdoaWNoIHRvIHN0b3JlIHRoZSBtaXhlZCByZXN1bHQuIik7Ci1ERUZJTkVfc3RyaW5nKGlu
cHV0X2ZpbGVfMSwgIiIsICJGaXJzdCBpbnB1dC4gRGVmYXVsdCBub25lLiIpOwotREVGSU5FX3N0
cmluZyhpbnB1dF9maWxlXzIsICIiLCAiU2Vjb25kIGlucHV0LiBEZWZhdWx0IG5vbmUuIik7Ci1E
RUZJTkVfc3RyaW5nKGlucHV0X2ZpbGVfMywgIiIsICJUaGlyZCBpbnB1dC4gRGVmYXVsdCBub25l
LiIpOwotREVGSU5FX3N0cmluZyhpbnB1dF9maWxlXzQsICIiLCAiRm91cnRoIGlucHV0LiBEZWZh
dWx0IG5vbmUuIik7CitXRUJSVENfREVGSU5FX2Jvb2wobGltaXRlciwgdHJ1ZSwgIkVuYWJsZSBs
aW1pdGVyLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob3V0cHV0X2ZpbGUsCisgICAgICAgICAg
ICAgICAgICAgICAibWl4ZWRfZmlsZS53YXYiLAorICAgICAgICAgICAgICAgICAgICAgIkZpbGUg
aW4gd2hpY2ggdG8gc3RvcmUgdGhlIG1peGVkIHJlc3VsdC4iKTsKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKGlucHV0X2ZpbGVfMSwgIiIsICJGaXJzdCBpbnB1dC4gRGVmYXVsdCBub25lLiIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcoaW5wdXRfZmlsZV8yLCAiIiwgIlNlY29uZCBpbnB1dC4gRGVmYXVs
dCBub25lLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoaW5wdXRfZmlsZV8zLCAiIiwgIlRoaXJk
IGlucHV0LiBEZWZhdWx0IG5vbmUuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhpbnB1dF9maWxl
XzQsICIiLCAiRm91cnRoIGlucHV0LiBEZWZhdWx0IG5vbmUuIik7CiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogbmFtZXNwYWNlIHRlc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9mcmFtZV9jb21iaW5lci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fbWl4ZXIvZnJhbWVfY29tYmluZXIuY2MKaW5kZXggY2ZmMjI4MmUzM2ZlNjk4MjQxZGE5YWEz
YjIwNGMyOTkxMjhlZDJmYi4uZDM0OTNmNWMzZGQ0MzdmZGY0NDMyNjY5NDUxMjY3ZjdkOGZiY2Y1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19taXhlci9mcmFtZV9jb21iaW5lci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2ZyYW1lX2Nv
bWJpbmVyLmNjCkBAIC05MiwxMCArOTIsMTAgQEAgc3RkOjphcnJheTxPbmVDaGFubmVsQnVmZmVy
LCBrTWF4aW11bUFtb3VudE9mQ2hhbm5lbHM+IE1peFRvRmxvYXRGcmFtZSgKICAgcmV0dXJuIG1p
eGluZ19idWZmZXI7CiB9CiAKLXZvaWQgUnVuTGltaXRlcihBdWRpb0ZyYW1lVmlldzxmbG9hdD4g
bWl4aW5nX2J1ZmZlcl92aWV3LAotICAgICAgICAgICAgICAgIEZpeGVkR2FpbkNvbnRyb2xsZXIq
IGxpbWl0ZXIpIHsKK3ZvaWQgUnVuTGltaXRlcihBdWRpb0ZyYW1lVmlldzxmbG9hdD4gbWl4aW5n
X2J1ZmZlcl92aWV3LCBMaW1pdGVyKiBsaW1pdGVyKSB7CiAgIGNvbnN0IHNpemVfdCBzYW1wbGVf
cmF0ZSA9IG1peGluZ19idWZmZXJfdmlldy5zYW1wbGVzX3Blcl9jaGFubmVsKCkgKiAxMDAwIC8K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9NaXhlckltcGw6OmtGcmFtZUR1cmF0
aW9uSW5NczsKKyAgLy8gVE9ETyhhbGVzc2lvYik6IEF2b2lkIGNhbGxpbmcgU2V0U2FtcGxlUmF0
ZSBldmVyeSB0aW1lLgogICBsaW1pdGVyLT5TZXRTYW1wbGVSYXRlKHNhbXBsZV9yYXRlKTsKICAg
bGltaXRlci0+UHJvY2VzcyhtaXhpbmdfYnVmZmVyX3ZpZXcpOwogfQpAQCAtMTE3LDEwICsxMTcs
OCBAQCB2b2lkIEludGVybGVhdmVUb0F1ZGlvRnJhbWUoQXVkaW9GcmFtZVZpZXc8Y29uc3QgZmxv
YXQ+IG1peGluZ19idWZmZXJfdmlldywKIAogRnJhbWVDb21iaW5lcjo6RnJhbWVDb21iaW5lcihi
b29sIHVzZV9saW1pdGVyKQogICAgIDogZGF0YV9kdW1wZXJfKG5ldyBBcG1EYXRhRHVtcGVyKDAp
KSwKLSAgICAgIGxpbWl0ZXJfKGRhdGFfZHVtcGVyXy5nZXQoKSwgIkF1ZGlvTWl4ZXIiKSwKLSAg
ICAgIHVzZV9saW1pdGVyXyh1c2VfbGltaXRlcikgewotICBsaW1pdGVyXy5TZXRHYWluKDAuZik7
Ci19CisgICAgICBsaW1pdGVyXyhzdGF0aWNfY2FzdDxzaXplX3Q+KDQ4MDAwKSwgZGF0YV9kdW1w
ZXJfLmdldCgpLCAiQXVkaW9NaXhlciIpLAorICAgICAgdXNlX2xpbWl0ZXJfKHVzZV9saW1pdGVy
KSB7fQogCiBGcmFtZUNvbWJpbmVyOjp+RnJhbWVDb21iaW5lcigpID0gZGVmYXVsdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19taXhlci9mcmFtZV9jb21iaW5lci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9mcmFtZV9jb21iaW5lci5oCmlu
ZGV4IDcwYWMwMjc3NTg5OTA3MGE0MGM3NTI3MTBmNTdmMDY2ZjFkNzM1YTUuLjFjMWNkNTNlZmYz
MTE1ZWUxMmVjMTg2ZmVmZWIwMzdmZGMwNTRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvZnJhbWVfY29t
YmluZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX21peGVyL2ZyYW1lX2NvbWJpbmVyLmgKQEAgLTE1LDExICsxNSwxMCBAQAog
I2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19mcmFtZS5oIgot
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJv
bGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBBcG1EYXRhRHVtcGVyOwotY2xhc3MgRml4
ZWRHYWluQ29udHJvbGxlcjsKIAogY2xhc3MgRnJhbWVDb21iaW5lciB7CiAgcHVibGljOgpAQCAt
NDUsNyArNDQsNyBAQCBjbGFzcyBGcmFtZUNvbWJpbmVyIHsKICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgbnVtYmVyX29mX3N0cmVhbXMpIGNvbnN0OwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxB
cG1EYXRhRHVtcGVyPiBkYXRhX2R1bXBlcl87Ci0gIEZpeGVkR2FpbkNvbnRyb2xsZXIgbGltaXRl
cl87CisgIExpbWl0ZXIgbGltaXRlcl87CiAgIGNvbnN0IGJvb2wgdXNlX2xpbWl0ZXJfOwogICBt
dXRhYmxlIGludCB1bWFfbG9nZ2luZ19jb3VudGVyXyA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL0JVSUxELmduCmluZGV4IDYxYjRkNDk1ZWQyZjkx
NjE4MjNjYzdjNTNlMzhhZDVkMzE0NjhlYTEuLjY2YjA3ZGYxOTllNjdkYWNmOTI0NTc0MmJlZGEz
MGQxNDQyOTc4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9CVUlMRC5nbgorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvQlVJTEQuZ24KQEAgLTI2LDYgKzI2LDQxIEBAIGNvbmZpZygiYXBtX2RlYnVnX2R1bXAiKSB7
CiAgIH0KIH0KIAorcnRjX3N0YXRpY19saWJyYXJ5KCJjb25maWciKSB7CisgIHZpc2liaWxpdHkg
PSBbICI6KiIgXQorICBzb3VyY2VzID0gWworICAgICJpbmNsdWRlL2NvbmZpZy5jYyIsCisgICAg
ImluY2x1ZGUvY29uZmlnLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uLy4uL3J0Y19iYXNl
Om1hY3JvbWFnaWMiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCisg
IF0KK30KKworcnRjX3NvdXJjZV9zZXQoImFwaSIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0K
KyAgc291cmNlcyA9IFsKKyAgICAiaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmNjIiwKKyAgICAi
aW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjphdWRp
b19mcmFtZV92aWV3IiwKKyAgICAiOmF1ZGlvX2dlbmVyYXRvcl9pbnRlcmZhY2UiLAorICAgICI6
YXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzIiwKKyAgICAiOmNvbmZpZyIsCisgICAgIjpnYWlu
X2NvbnRyb2xfaW50ZXJmYWNlIiwKKyAgICAiLi4vLi4vYXBpL2F1ZGlvOmFlYzNfY29uZmlnIiwK
KyAgICAiLi4vLi4vYXBpL2F1ZGlvOmVjaG9fY29udHJvbCIsCisgICAgIi4uLy4uL3J0Y19iYXNl
OmRlcHJlY2F0aW9uIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6bWFjcm9tYWdpYyIsCisgICAgIi4u
Ly4uL3J0Y19iYXNlOnB0cl91dGlsIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBw
cm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgXQorfQorCiBy
dGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX3Byb2Nlc3NpbmciKSB7CiAgIHZpc2liaWxpdHkgPSBb
ICIqIiBdCiAgIGNvbmZpZ3MgKz0gWyAiOmFwbV9kZWJ1Z19kdW1wIiBdCkBAIC01NSwxMCArOTAs
NiBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX3Byb2Nlc3NpbmciKSB7CiAgICAgImdhaW5f
Y29udHJvbGxlcjIuaCIsCiAgICAgImluY2x1ZGUvYWVjX2R1bXAuY2MiLAogICAgICJpbmNsdWRl
L2FlY19kdW1wLmgiLAotICAgICJpbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuY2MiLAotICAgICJp
bmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIsCi0gICAgImluY2x1ZGUvY29uZmlnLmNjIiwKLSAg
ICAiaW5jbHVkZS9jb25maWcuaCIsCiAgICAgImxldmVsX2VzdGltYXRvcl9pbXBsLmNjIiwKICAg
ICAibGV2ZWxfZXN0aW1hdG9yX2ltcGwuaCIsCiAgICAgImxvd19jdXRfZmlsdGVyLmNjIiwKQEAg
LTk1LDExICsxMjYsMTMgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19wcm9jZXNzaW5nIikg
ewogCiAgIGRlZmluZXMgPSBbXQogICBkZXBzID0gWworICAgICI6YXBpIiwKICAgICAiOmFwbV9s
b2dnaW5nIiwKICAgICAiOmF1ZGlvX2ZyYW1lX3ZpZXciLAogICAgICI6YXVkaW9fZ2VuZXJhdG9y
X2ludGVyZmFjZSIsCiAgICAgIjphdWRpb19wcm9jZXNzaW5nX2MiLAogICAgICI6YXVkaW9fcHJv
Y2Vzc2luZ19zdGF0aXN0aWNzIiwKKyAgICAiOmNvbmZpZyIsCiAgICAgIjpnYWluX2NvbnRyb2xf
aW50ZXJmYWNlIiwKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL2FwaTph
cnJheV92aWV3IiwKQEAgLTExNSw2ICsxNDgsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlv
X3Byb2Nlc3NpbmciKSB7CiAgICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAi
Li4vLi4vcnRjX2Jhc2U6c2FuaXRpemVyIiwKICAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOmFy
Y2giLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi4uLy4u
L3N5c3RlbV93cmFwcGVyczpjcHVfZmVhdHVyZXNfYXBpIiwKICAgICAiLi4vLi4vc3lzdGVtX3dy
YXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3Mi
LApAQCAtMTYyLDYgKzE5Niw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhdWRpb19wcm9jZXNzaW5nX3N0
YXRpc3RpY3MiKSB7CiAgICAgImluY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzLmgi
LAogICBdCiAgIGRlcHMgPSBbCisgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0
IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAog
ICBdCiB9CkBAIC0yOTQsNiArMzI5LDcgQEAgcnRjX3NvdXJjZV9zZXQoImFwbV9sb2dnaW5nIikg
ewogICBkZXBzID0gWwogICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uL2Nv
bW1vbl9hdWRpbzpjb21tb25fYXVkaW8iLAorICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAog
ICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uL3J0Y19i
YXNlOnN0cmluZ3V0aWxzIiwKICAgXQpAQCAtMzA3LDYgKzM0Myw3IEBAIGlmIChydGNfaW5jbHVk
ZV90ZXN0cykgewogICAgICAgImluY2x1ZGUvbW9ja19hdWRpb19wcm9jZXNzaW5nLmgiLAogICAg
IF0KICAgICBkZXBzID0gWworICAgICAgIjphcGkiLAogICAgICAgIjphdWRpb19wcm9jZXNzaW5n
IiwKICAgICAgICI6YXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzIiwKICAgICAgICIuLi8uLi90
ZXN0OnRlc3Rfc3VwcG9ydCIsCkBAIC0zNTgsMTAgKzM5NSwxMiBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKIAogICAgIGRlcHMgPSBbCiAgICAgICAiOmFuYWxvZ19taWNfc2ltdWxhdGlvbiIs
CisgICAgICAiOmFwaSIsCiAgICAgICAiOmFwbV9sb2dnaW5nIiwKICAgICAgICI6YXVkaW9fZnJh
bWVfdmlldyIsCiAgICAgICAiOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgIjphdWRpb3Byb2Nf
dGVzdF91dGlscyIsCisgICAgICAiOmNvbmZpZyIsCiAgICAgICAiOmZpbGVfYXVkaW9fZ2VuZXJh
dG9yX3VuaXR0ZXN0cyIsCiAgICAgICAiOm1vY2tzIiwKICAgICAgICIuLi8uLjp3ZWJydGNfY29t
bW9uIiwKQEAgLTM3NSw2ICs0MTQsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAg
ICIuLi8uLi9ydGNfYmFzZTpwcm90b2J1Zl91dGlscyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6
cnRjX2Jhc2UiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAg
ICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiLi4vLi4v
cnRjX2Jhc2U6c2FmZV9taW5tYXgiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTphcmNo
IiwKICAgICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06ZmlsZV93cmFwcGVyIiwKQEAgLTM5MSw2
ICs0MzEsOCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJhZ2MyOmJpcXVhZF9m
aWx0ZXJfdW5pdHRlc3RzIiwKICAgICAgICJhZ2MyOmZpeGVkX2RpZ2l0YWxfdW5pdHRlc3RzIiwK
ICAgICAgICJhZ2MyOm5vaXNlX2VzdGltYXRvcl91bml0dGVzdHMiLAorICAgICAgImFnYzI6cm5u
X3ZhZF93aXRoX2xldmVsX3VuaXR0ZXN0cyIsCisgICAgICAiYWdjMjp0ZXN0X3V0aWxzIiwKICAg
ICAgICJhZ2MyL3Jubl92YWQ6dW5pdHRlc3RzIiwKICAgICAgICJ0ZXN0L2NvbnZlcnNhdGlvbmFs
X3NwZWVjaDp1bml0dGVzdCIsCiAgICAgICAidXRpbGl0eTpibG9ja19tZWFuX2NhbGN1bGF0b3Jf
dW5pdHRlc3QiLApAQCAtNDE4LDcgKzQ2MCw2IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewog
ICAgICAgICAiOmF1ZGlvcHJvY191bml0dGVzdF9wcm90byIsCiAgICAgICAgICI6cnVudGltZV9z
ZXR0aW5nc19wcm90b2J1Zl91dGlscyIsCiAgICAgICAgICIuLi8uLi9hcGkvYXVkaW86YXVkaW9f
ZnJhbWVfYXBpIiwKLSAgICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxz
IiwKICAgICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKICAgICAgICAgImFl
Y19kdW1wIiwKICAgICAgICAgImFlY19kdW1wOmFlY19kdW1wX3VuaXR0ZXN0cyIsCkBAIC00ODIs
NiArNTIzLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgXQogCiAgICAgZGVwcyA9
IFsKKyAgICAgICI6YXBpIiwKICAgICAgICI6YXVkaW9fZ2VuZXJhdG9yX2ZhY3RvcnkiLAogICAg
ICAgIjphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICI6ZmlsZV9hdWRpb19nZW5lcmF0b3IiLApA
QCAtNTEyLDYgKzU1NCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICBpZiAocnRjX2Vu
YWJsZV9wcm90b2J1ZikgewogICAgIHJ0Y19zb3VyY2Vfc2V0KCJhdWRpb3Byb2NfZl9pbXBsIikg
ewogICAgICAgdGVzdG9ubHkgPSB0cnVlCisgICAgICBjb25maWdzICs9IFsgIjphcG1fZGVidWdf
ZHVtcCIgXQogICAgICAgc291cmNlcyA9IFsKICAgICAgICAgInRlc3QvYWVjX2R1bXBfYmFzZWRf
c2ltdWxhdG9yLmNjIiwKICAgICAgICAgInRlc3QvYWVjX2R1bXBfYmFzZWRfc2ltdWxhdG9yLmgi
LApAQCAtNTI1LDExICs1NjgsMTQgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAKICAgICAg
IGRlcHMgPSBbCiAgICAgICAgICI6YW5hbG9nX21pY19zaW11bGF0aW9uIiwKKyAgICAgICAgIjph
cGkiLAorICAgICAgICAiOmFwbV9sb2dnaW5nIiwKICAgICAgICAgIjphdWRpb19wcm9jZXNzaW5n
IiwKICAgICAgICAgIjphdWRpb3Byb2NfZGVidWdfcHJvdG8iLAogICAgICAgICAiOmF1ZGlvcHJv
Y19wcm90b2J1Zl91dGlscyIsCiAgICAgICAgICI6YXVkaW9wcm9jX3Rlc3RfdXRpbHMiLAogICAg
ICAgICAiOnJ1bnRpbWVfc2V0dGluZ3NfcHJvdG9idWZfdXRpbHMiLAorICAgICAgICAiLi4vLi4v
YXBpL2F1ZGlvOmFlYzNfY29uZmlnX2pzb24iLAogICAgICAgICAiLi4vLi4vYXBpL2F1ZGlvOmFl
YzNfZmFjdG9yeSIsCiAgICAgICAgICIuLi8uLi9jb21tb25fYXVkaW86Y29tbW9uX2F1ZGlvIiwK
ICAgICAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCkBAIC01NDQsNiArNTkwLDcgQEAgaWYg
KHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAgICJhZWNfZHVtcDphZWNfZHVtcF9pbXBsIiwK
ICAgICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCiAgICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncyIsCiAgICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
czpvcHRpb25hbCIsCiAgICAgICBdCiAgICAgfSAgIyBhdWRpb3Byb2NfZl9pbXBsCkBAIC01NTMs
NiArNjAwLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAgICJ0ZXN0L2F1ZGlv
cHJvY19mbG9hdF9tYWluLmNjIiwKICAgICAgIF0KICAgICAgIGRlcHMgPSBbCisgICAgICAgICI6
YXBpIiwKICAgICAgICAgIjphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICAgIi4uLy4uL2FwaTph
dWRpb3Byb2NfZl9hcGkiLAogICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92
ZWQiLApAQCAtNTc4LDYgKzYyNiw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIF0K
IAogICAgIGRlcHMgPSBbCisgICAgICAiOmFwaSIsCiAgICAgICAiOmF1ZGlvX3Byb2Nlc3Npbmci
LAogICAgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAgICIuLi8uLi9hcGkvYXVkaW86
YXVkaW9fZnJhbWVfYXBpIiwKQEAgLTY2Miw2ICs3MTEsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICAgIF0KIAogICAgICAgZGVwcyA9IFsKKyAgICAgICAgIjphcGkiLAogICAgICAg
ICAiOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgICAiOmF1ZGlvcHJvY19kZWJ1Z19wcm90byIs
CiAgICAgICAgICI6YXVkaW9wcm9jX3Byb3RvYnVmX3V0aWxzIiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMvYWVjX2NvcmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19jb3JlLmNjCmluZGV4IDVh
OGNmOGY1OGI2MDFmMWFiMjVlNDk5ZTMyYTdkMWEzN2VhN2I4N2YuLjYyYjhhZDBmN2MwNzA5ZTVj
MzRiN2Y2NDYzODVjMDA3YjlhMDg5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMvYWVjX2Nv
cmUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfY29yZS5jYwpAQCAtMjEsNiArMjEsNyBAQAog
I2luY2x1ZGUgPGFsZ29yaXRobT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCiBl
eHRlcm4gIkMiIHsKICNpbmNsdWRlICJjb21tb25fYXVkaW8vcmluZ19idWZmZXIuaCIKIH0KQEAg
LTI5LDcgKzMwLDYgQEAgZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYy9hZWNfY29yZV9vcHRpbWl6ZWRfbWV0aG9kcy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L2RlbGF5X2VzdGltYXRvcl93cmFwcGVy
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3lz
dGVtL2FyY2guaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jcHVfZmVhdHVy
ZXNfd3JhcHBlci5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3Mu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMvYWVjX3Jlc2FtcGxlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMvYWVjX3Jlc2FtcGxlci5jYwppbmRleCAyODUxYzBiNmRkNTc1ZDY5NjhiNzY2NjlkYjI1
ZWU0MjAwNTc3MmY2Li4yMTBjMmJlYmUwZTIxMTNhZDBlODA4ZDI0ZjIzYjliYzgwODYwOGFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19yZXNhbXBsZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYy9hZWNfcmVzYW1wbGVyLmNjCkBAIC0xNCw3ICsxNCw2IEBACiAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19yZXNhbXBsZXIuaCIKIAotI2luY2x1ZGUgPG1h
dGguaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfcmVzYW1wbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19y
ZXNhbXBsZXIuaAppbmRleCAxMzBmN2VjN2M3NjY0N2QxY2U4MzZmYzIzMmE0MTc3NmZlZWFlZGVi
Li5hMTEyYzQzNGQwYmM5MWJhMWE5ZDU2ZWJmMWFlMzFiMzYxOGYwZmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjL2FlY19yZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19yZXNh
bXBsZXIuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJ
TkdfQUVDX0FFQ19SRVNBTVBMRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5H
X0FFQ19BRUNfUkVTQU1QTEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMvYWVjX2NvcmUuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL0JVSUxELmduCmluZGV4IGU2MzE3MzJhNDUzOWFiMTM2MmYxNWI5OThiZDVjMTFjZWY4Mjcz
MmMuLjE4OWJjZmQ3MTI1NTMzOWJjN2RiZjc3ZjBmMzcwY2ViYjMxZjRlNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL0JVSUxELmduCkBA
IC0yMCwxNiArMjAsMjEgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhZWMzIikgewogICAgICJhZWMz
X2ZmdC5oIiwKICAgICAiYWVjX3N0YXRlLmNjIiwKICAgICAiYWVjX3N0YXRlLmgiLAorICAgICJh
cGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5jYyIsCisgICAgImFwaV9jYWxsX2ppdHRlcl9tZXRyaWNz
LmgiLAogICAgICJibG9ja19kZWxheV9idWZmZXIuY2MiLAogICAgICJibG9ja19kZWxheV9idWZm
ZXIuaCIsCiAgICAgImJsb2NrX2ZyYW1lci5jYyIsCiAgICAgImJsb2NrX2ZyYW1lci5oIiwKICAg
ICAiYmxvY2tfcHJvY2Vzc29yLmNjIiwKICAgICAiYmxvY2tfcHJvY2Vzc29yLmgiLAorICAgICJi
bG9ja19wcm9jZXNzb3IyLmNjIiwKICAgICAiYmxvY2tfcHJvY2Vzc29yX21ldHJpY3MuY2MiLAog
ICAgICJibG9ja19wcm9jZXNzb3JfbWV0cmljcy5oIiwKICAgICAiY2FzY2FkZWRfYmlxdWFkX2Zp
bHRlci5jYyIsCiAgICAgImNhc2NhZGVkX2JpcXVhZF9maWx0ZXIuaCIsCisgICAgImNsb2NrZHJp
ZnRfZGV0ZWN0b3IuY2MiLAorICAgICJjbG9ja2RyaWZ0X2RldGVjdG9yLmgiLAogICAgICJjb21m
b3J0X25vaXNlX2dlbmVyYXRvci5jYyIsCiAgICAgImNvbWZvcnRfbm9pc2VfZ2VuZXJhdG9yLmgi
LAogICAgICJkZWNpbWF0b3IuY2MiLApAQCAtNzYsMTAgKzgxLDE0IEBAIHJ0Y19zdGF0aWNfbGli
cmFyeSgiYWVjMyIpIHsKICAgICAicmVuZGVyX2J1ZmZlci5oIiwKICAgICAicmVuZGVyX2RlbGF5
X2J1ZmZlci5jYyIsCiAgICAgInJlbmRlcl9kZWxheV9idWZmZXIuaCIsCisgICAgInJlbmRlcl9k
ZWxheV9idWZmZXIyLmNjIiwKICAgICAicmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIuY2MiLAogICAg
ICJyZW5kZXJfZGVsYXlfY29udHJvbGxlci5oIiwKKyAgICAicmVuZGVyX2RlbGF5X2NvbnRyb2xs
ZXIyLmNjIiwKICAgICAicmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljcy5jYyIsCiAgICAg
InJlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3MuaCIsCisgICAgInJlbmRlcl9yZXZlcmJf
bW9kZWwuY2MiLAorICAgICJyZW5kZXJfcmV2ZXJiX21vZGVsLmgiLAogICAgICJyZW5kZXJfc2ln
bmFsX2FuYWx5emVyLmNjIiwKICAgICAicmVuZGVyX3NpZ25hbF9hbmFseXplci5oIiwKICAgICAi
cmVzaWR1YWxfZWNob19lc3RpbWF0b3IuY2MiLApAQCAtOTYsNiArMTA1LDggQEAgcnRjX3N0YXRp
Y19saWJyYXJ5KCJhZWMzIikgewogICAgICJyZXZlcmJfbW9kZWxfZmFsbGJhY2suaCIsCiAgICAg
InNoYWRvd19maWx0ZXJfdXBkYXRlX2dhaW4uY2MiLAogICAgICJzaGFkb3dfZmlsdGVyX3VwZGF0
ZV9nYWluLmgiLAorICAgICJzaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yLmNjIiwKKyAg
ICAic2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvci5oIiwKICAgICAic2tld19lc3RpbWF0
b3IuY2MiLAogICAgICJza2V3X2VzdGltYXRvci5oIiwKICAgICAic3RhdGlvbmFyaXR5X2VzdGlt
YXRvci5jYyIsCkBAIC0xODMsMTEgKzE5NCwxMyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsK
ICAgICAgICAgImFkYXB0aXZlX2Zpcl9maWx0ZXJfdW5pdHRlc3QuY2MiLAogICAgICAgICAiYWVj
M19mZnRfdW5pdHRlc3QuY2MiLAogICAgICAgICAiYWVjX3N0YXRlX3VuaXR0ZXN0LmNjIiwKKyAg
ICAgICAgImFwaV9jYWxsX2ppdHRlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgImJs
b2NrX2RlbGF5X2J1ZmZlcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJibG9ja19mcmFtZXJfdW5p
dHRlc3QuY2MiLAogICAgICAgICAiYmxvY2tfcHJvY2Vzc29yX21ldHJpY3NfdW5pdHRlc3QuY2Mi
LAogICAgICAgICAiYmxvY2tfcHJvY2Vzc29yX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgImNhc2Nh
ZGVkX2JpcXVhZF9maWx0ZXJfdW5pdHRlc3QuY2MiLAorICAgICAgICAiY2xvY2tkcmlmdF9kZXRl
Y3Rvcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJjb21mb3J0X25vaXNlX2dlbmVyYXRvcl91bml0
dGVzdC5jYyIsCiAgICAgICAgICJkZWNpbWF0b3JfdW5pdHRlc3QuY2MiLAogICAgICAgICAiZWNo
b19jYW5jZWxsZXIzX3VuaXR0ZXN0LmNjIiwKQEAgLTIxMSw2ICsyMjQsNyBAQCBpZiAocnRjX2lu
Y2x1ZGVfdGVzdHMpIHsKICAgICAgICAgInJlc2lkdWFsX2VjaG9fZXN0aW1hdG9yX3VuaXR0ZXN0
LmNjIiwKICAgICAgICAgInJldmVyYl9tb2RlbF9lc3RpbWF0b3JfdW5pdHRlc3QuY2MiLAogICAg
ICAgICAic2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbl91bml0dGVzdC5jYyIsCisgICAgICAgICJz
aWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgInNr
ZXdfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgInN1YnRyYWN0b3JfdW5pdHRlc3Qu
Y2MiLAogICAgICAgICAic3VwcHJlc3Npb25fZmlsdGVyX3VuaXR0ZXN0LmNjIiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0aXZlX2Zpcl9maWx0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9hZGFwdGl2ZV9maXJfZmlsdGVyLmNjCmluZGV4IDlhMWU4MTFmY2ZlM2NmNTJlYTliYjk4Njhm
OTFmOTI3ZDhkZTc2ODguLjNhYjFlYmNjNGI5ZGViY2Q5MTllYWFiYjJkYjNmZDA4YzNhM2Q5NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0aXZlX2Zpcl9maWx0ZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvYWRhcHRpdmVfZmlyX2ZpbHRlci5jYwpAQCAtMjQsNyArMjQsNyBAQAog
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2RhdGEuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
CisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTQxNywxMiArNDE3LDIxIEBAIHZvaWQgQXBwbHlGaWx0ZXJf
U1NFMihjb25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCiAKIH0gIC8vIG5hbWVzcGFj
ZSBhZWMzCiAKK25hbWVzcGFjZSB7CisKK2Jvb2wgRW5hYmxlUGFydGlhbEZpbHRlclJlc2V0KCkg
eworICByZXR1cm4gIWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzUGFydGlhbEZp
bHRlclJlc2V0S2lsbFN3aXRjaCIpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKwogQWRhcHRpdmVG
aXJGaWx0ZXI6OkFkYXB0aXZlRmlyRmlsdGVyKHNpemVfdCBtYXhfc2l6ZV9wYXJ0aXRpb25zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbml0aWFsX3NpemVf
cGFydGl0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
c2l6ZV9jaGFuZ2VfZHVyYXRpb25fYmxvY2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFlYzNPcHRpbWl6YXRpb24gb3B0aW1pemF0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFwbURhdGFEdW1wZXIqIGRhdGFfZHVtcGVyKQogICAgIDog
ZGF0YV9kdW1wZXJfKGRhdGFfZHVtcGVyKSwKKyAgICAgIHVzZV9wYXJ0aWFsX2ZpbHRlcl9yZXNl
dF8oRW5hYmxlUGFydGlhbEZpbHRlclJlc2V0KCkpLAogICAgICAgZmZ0XygpLAogICAgICAgb3B0
aW1pemF0aW9uXyhvcHRpbWl6YXRpb24pLAogICAgICAgbWF4X3NpemVfcGFydGl0aW9uc18obWF4
X3NpemVfcGFydGl0aW9ucyksCkBAIC00NTUsMjAgKzQ2NCwyMiBAQCBBZGFwdGl2ZUZpckZpbHRl
cjo6fkFkYXB0aXZlRmlyRmlsdGVyKCkgPSBkZWZhdWx0Owogdm9pZCBBZGFwdGl2ZUZpckZpbHRl
cjo6SGFuZGxlRWNob1BhdGhDaGFuZ2UoKSB7CiAgIHNpemVfdCBjdXJyZW50X2hfc2l6ZSA9IGhf
LnNpemUoKTsKICAgaF8ucmVzaXplKEdldFRpbWVEb21haW5MZW5ndGgobWF4X3NpemVfcGFydGl0
aW9uc18pKTsKLSAgc3RkOjpmaWxsKGhfLmJlZ2luKCksIGhfLmVuZCgpLCAwLmYpOworICBjb25z
dCBzaXplX3QgYmVnaW5fY29lZmZmaWNpZW50ID0KKyAgICAgIHVzZV9wYXJ0aWFsX2ZpbHRlcl9y
ZXNldF8gPyBjdXJyZW50X2hfc2l6ZSA6IDA7CisgIHN0ZDo6ZmlsbChoXy5iZWdpbigpICsgYmVn
aW5fY29lZmZmaWNpZW50LCBoXy5lbmQoKSwgMC5mKTsKICAgaF8ucmVzaXplKGN1cnJlbnRfaF9z
aXplKTsKIAogICBzaXplX3QgY3VycmVudF9zaXplX3BhcnRpdGlvbnMgPSBIXy5zaXplKCk7CiAg
IEhfLnJlc2l6ZShtYXhfc2l6ZV9wYXJ0aXRpb25zXyk7Ci0gIGZvciAoYXV0byYgSF9qIDogSF8p
IHsKLSAgICBIX2ouQ2xlYXIoKTsKLSAgfQotICBIXy5yZXNpemUoY3VycmVudF9zaXplX3BhcnRp
dGlvbnMpOwotCiAgIEgyXy5yZXNpemUobWF4X3NpemVfcGFydGl0aW9uc18pOwotICBmb3IgKGF1
dG8mIEgyX2sgOiBIMl8pIHsKLSAgICBIMl9rLmZpbGwoMC5mKTsKKworICBjb25zdCBzaXplX3Qg
YmVnaW5fcGFydGl0aW9uID0KKyAgICAgIHVzZV9wYXJ0aWFsX2ZpbHRlcl9yZXNldF8gPyBjdXJy
ZW50X3NpemVfcGFydGl0aW9ucyA6IDA7CisgIGZvciAoc2l6ZV90IGsgPSBiZWdpbl9wYXJ0aXRp
b247IGsgPCBtYXhfc2l6ZV9wYXJ0aXRpb25zXzsgKytrKSB7CisgICAgSF9ba10uQ2xlYXIoKTsK
KyAgICBIMl9ba10uZmlsbCgwLmYpOwogICB9CisgIEhfLnJlc2l6ZShjdXJyZW50X3NpemVfcGFy
dGl0aW9ucyk7CiAgIEgyXy5yZXNpemUoY3VycmVudF9zaXplX3BhcnRpdGlvbnMpOwogCiAgIGVy
bF8uZmlsbCgwLmYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWRhcHRpdmVfZmlyX2Zp
bHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWRhcHRpdmVfZmlyX2ZpbHRlci5oCmluZGV4IDVkZmI0
NjYwZmEyMWMwMzc1Y2JiYTVlMmM5MTA1NDliZmEwMDc4YjQuLjdjODMyYTZjZDIzYTQwNWM0NmY4
Yjk4NWE1NjE5ZTIzNjA4MGFmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0aXZl
X2Zpcl9maWx0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZGFwdGl2ZV9maXJfZmlsdGVyLmgK
QEAgLTExLDggKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNf
QURBUFRJVkVfRklSX0ZJTFRFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdf
QUVDM19BREFQVElWRV9GSVJfRklMVEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNs
dWRlIDxhcnJheT4KLSNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5j
bHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKQEAgLTE2NCw2ICsxNjQsNyBAQCBjbGFzcyBBZGFwdGl2
ZUZpckZpbHRlciB7CiAgIHZvaWQgVXBkYXRlU2l6ZSgpOwogCiAgIEFwbURhdGFEdW1wZXIqIGNv
bnN0IGRhdGFfZHVtcGVyXzsKKyAgY29uc3QgYm9vbCB1c2VfcGFydGlhbF9maWx0ZXJfcmVzZXRf
OwogICBjb25zdCBBZWMzRmZ0IGZmdF87CiAgIGNvbnN0IEFlYzNPcHRpbWl6YXRpb24gb3B0aW1p
emF0aW9uXzsKICAgY29uc3Qgc2l6ZV90IG1heF9zaXplX3BhcnRpdGlvbnNfOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2Nv
bW1vbi5jYwppbmRleCBjMzc0YTM1MTdkNjBlMzdhNzk5MWQ0ZWU5NjRiMTAwZWQ3MDAxZDY0Li5h
ZWI4NDhhNTcwMGE2NDgyMGRkY2NkNGYzM2ZmOTMzMDViNTYxZjRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1v
bi5jYwpAQCAtMTAsMTAgKzEwLDExIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2lu
Y2x1ZGUvY3B1X2ZlYXR1cmVzX3dyYXBwZXIuaCIKKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9hcmNo
LmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2ZlYXR1cmVzX3dyYXBw
ZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2FlYzNfZmZ0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuY2MKaW5kZXggZTI5NDM0ZDMw
MDJkZGJmMjE0NDMyOTJiZGZlMTlhNzMyOGZhYjEwYi4uMTgzMjEwMTg1NTI0MjAzMGFlMGE5YmU2
MjVlNmJjZGQxZDYzOWU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPGl0ZXJh
dG9yPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2FlYzNfZmZ0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2ZmdC5oCmluZGV4IGI3
MDAyMjI1NWQ5NTY0ZDMzMmZkYzJhNDZhOTFhZDkxYWEzZTczNjEuLjZjZDY0OWFmOGY0Yzk2YTQy
MTMzNDM3N2NiYTk1NTZmNDQzMTVlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNf
ZmZ0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuaApAQCAtMTcsNiArMTcsNyBAQAog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2RhdGEuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnQuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YWVjX3N0YXRlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlLmNjCmluZGV4IDVlNThhMWMy
NzljMDMxYWJmNjI5ZmYzNjA5MzQ4NThlMWUxMzQ4NWIuLmQ1ZjI1NmIxYzEyNTZlOWZlZjI3NDkw
ZDUwODBmMjkyZWJiZDhhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlY19zdGF0ZS5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuY2MKQEAgLTExLDcgKzExLDcgQEAKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuaCIKIAogI2lu
Y2x1ZGUgPG1hdGguaD4KLQorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxudW1lcmlj
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtMzAsNiArMzAsMjIgQEAgYm9vbCBFbmFibGVFcmxl
UmVzZXRzQXRHYWluQ2hhbmdlcygpIHsKICAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVk
KCJXZWJSVEMtQWVjM1Jlc2V0RXJsZUF0R2FpbkNoYW5nZXNLaWxsU3dpdGNoIik7CiB9CiAKK2Jv
b2wgVXNlTGVnYWN5RmlsdGVyUXVhbGl0eVN0YXRlKCkgeworICByZXR1cm4gZmllbGRfdHJpYWw6
OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNGaWx0ZXJRdWFsaXR5U3RhdGVLaWxsU3dpdGNoIik7Cit9
CisKK2Jvb2wgRW5hYmxlTGVnYWN5U2F0dXJhdGlvbkJlaGF2aW9yKCkgeworICByZXR1cm4gZmll
bGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNOZXdTYXR1cmF0aW9uQmVoYXZpb3JLaWxs
U3dpdGNoIik7Cit9CisKK2Jvb2wgVXNlU3VwcHJlc3Npb25HYWluTGltaXRlcigpIHsKKyAgcmV0
dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzR2FpbkxpbWl0ZXJEZWFjdGl2
YXRpb25LaWxsU3dpdGNoIik7Cit9Citib29sIEVuYWJsZUVybGVVcGRhdGVzRHVyaW5nUmV2ZXJi
KCkgeworICByZXR1cm4gIWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoCisgICAgICAiV2ViUlRDLUFl
YzNFbmFibGVFcmxlVXBkYXRlc0R1cmluZ1JldmVyYktpbGxTd2l0Y2giKTsKK30KKwogY29uc3Rl
eHByIHNpemVfdCBrQmxvY2tzU2luY2VDb252ZXJnZW5jZWRGaWx0ZXJJbml0ID0gMTAwMDA7CiBj
b25zdGV4cHIgc2l6ZV90IGtCbG9ja3NTaW5jZUNvbnNpc3RlbnRFc3RpbWF0ZUluaXQgPSAxMDAw
MDsKIApAQCAtNTIsMTggKzY4LDEwIEBAIHZvaWQgQWVjU3RhdGU6OkdldFJlc2lkdWFsRWNob1Nj
YWxpbmcoCiB9CiAKIGFic2w6Om9wdGlvbmFsPGZsb2F0PiBBZWNTdGF0ZTo6RXJsZVVuY2VydGFp
bnR5KCkgY29uc3QgewotICBib29sIGZpbHRlcl9oYXNfaGFkX3RpbWVfdG9fY29udmVyZ2U7Ci0g
IGlmIChjb25maWdfLmZpbHRlci5jb25zZXJ2YXRpdmVfaW5pdGlhbF9waGFzZSkgewotICAgIGZp
bHRlcl9oYXNfaGFkX3RpbWVfdG9fY29udmVyZ2UgPQotICAgICAgICBzdHJvbmdfbm90X3NhdHVy
YXRlZF9yZW5kZXJfYmxvY2tzXyA+PSAxLjVmICoga051bUJsb2Nrc1BlclNlY29uZDsKLSAgfSBl
bHNlIHsKLSAgICBmaWx0ZXJfaGFzX2hhZF90aW1lX3RvX2NvbnZlcmdlID0KLSAgICAgICAgc3Ry
b25nX25vdF9zYXR1cmF0ZWRfcmVuZGVyX2Jsb2Nrc18gPj0gMC44ZiAqIGtOdW1CbG9ja3NQZXJT
ZWNvbmQ7Ci0gIH0KLQotICBpZiAoIWZpbHRlcl9oYXNfaGFkX3RpbWVfdG9fY29udmVyZ2UpIHsK
KyAgaWYgKFNhdHVyYXRlZEVjaG8oKSAmJiB1c2VfbGVnYWN5X3NhdHVyYXRpb25fYmVoYXZpb3Jf
KSB7CiAgICAgcmV0dXJuIDEuZjsKICAgfQorCiAgIHJldHVybiBhYnNsOjpudWxsb3B0OwogfQog
CkBAIC03MSwyMiArNzksMjQgQEAgQWVjU3RhdGU6OkFlY1N0YXRlKGNvbnN0IEVjaG9DYW5jZWxs
ZXIzQ29uZmlnJiBjb25maWcpCiAgICAgOiBkYXRhX2R1bXBlcl8oCiAgICAgICAgICAgbmV3IEFw
bURhdGFEdW1wZXIocnRjOjpBdG9taWNPcHM6OkluY3JlbWVudCgmaW5zdGFuY2VfY291bnRfKSkp
LAogICAgICAgY29uZmlnXyhjb25maWcpLAorICAgICAgdXNlX2xlZ2FjeV9zYXR1cmF0aW9uX2Jl
aGF2aW9yXyhFbmFibGVMZWdhY3lTYXR1cmF0aW9uQmVoYXZpb3IoKSksCisgICAgICBlbmFibGVf
ZXJsZV9yZXNldHNfYXRfZ2Fpbl9jaGFuZ2VzXyhFbmFibGVFcmxlUmVzZXRzQXRHYWluQ2hhbmdl
cygpKSwKKyAgICAgIGVuYWJsZV9lcmxlX3VwZGF0ZXNfZHVyaW5nX3JldmVyYl8oRW5hYmxlRXJs
ZVVwZGF0ZXNEdXJpbmdSZXZlcmIoKSksCisgICAgICB1c2VfbGVnYWN5X2ZpbHRlcl9xdWFsaXR5
XyhVc2VMZWdhY3lGaWx0ZXJRdWFsaXR5U3RhdGUoKSksCisgICAgICB1c2Vfc3VwcHJlc3Nvcl9n
YWluX2xpbWl0ZXJfKFVzZVN1cHByZXNzaW9uR2FpbkxpbWl0ZXIoKSksCiAgICAgICBpbml0aWFs
X3N0YXRlXyhjb25maWdfKSwKICAgICAgIGRlbGF5X3N0YXRlXyhjb25maWdfKSwKICAgICAgIHRy
YW5zcGFyZW50X3N0YXRlXyhjb25maWdfKSwKICAgICAgIGZpbHRlcl9xdWFsaXR5X3N0YXRlXyhj
b25maWdfKSwKLSAgICAgIHNhdHVyYXRpb25fZGV0ZWN0b3JfKGNvbmZpZ18pLAorICAgICAgbGVn
YWN5X2ZpbHRlcl9xdWFsaXR5X3N0YXRlXyhjb25maWdfKSwKKyAgICAgIGxlZ2FjeV9zYXR1cmF0
aW9uX2RldGVjdG9yXyhjb25maWdfKSwKICAgICAgIGVybF9lc3RpbWF0b3JfKDIgKiBrTnVtQmxv
Y2tzUGVyU2Vjb25kKSwKLSAgICAgIGVybGVfZXN0aW1hdG9yXygyICoga051bUJsb2Nrc1BlclNl
Y29uZCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25maWdfLmVybGUubWluLAotICAgICAgICAg
ICAgICAgICAgICAgIGNvbmZpZ18uZXJsZS5tYXhfbCwKLSAgICAgICAgICAgICAgICAgICAgICBj
b25maWdfLmVybGUubWF4X2gpLAorICAgICAgZXJsZV9lc3RpbWF0b3JfKDIgKiBrTnVtQmxvY2tz
UGVyU2Vjb25kLCBjb25maWdfKSwKICAgICAgIHN1cHByZXNzaW9uX2dhaW5fbGltaXRlcl8oY29u
ZmlnXyksCiAgICAgICBmaWx0ZXJfYW5hbHl6ZXJfKGNvbmZpZ18pLAogICAgICAgZWNob19hdWRp
YmlsaXR5XygKICAgICAgICAgICBjb25maWdfLmVjaG9fYXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFy
aXR5X3Byb3BlcnRpZXNfYXRfaW5pdCksCi0gICAgICByZXZlcmJfbW9kZWxfZXN0aW1hdG9yXyhj
b25maWdfKSwKLSAgICAgIGVuYWJsZV9lcmxlX3Jlc2V0c19hdF9nYWluX2NoYW5nZXNfKEVuYWJs
ZUVybGVSZXNldHNBdEdhaW5DaGFuZ2VzKCkpIHt9CisgICAgICByZXZlcmJfbW9kZWxfZXN0aW1h
dG9yXyhjb25maWdfKSB7fQogCiBBZWNTdGF0ZTo6fkFlY1N0YXRlKCkgPSBkZWZhdWx0OwogCkBA
IC05NywxMyArMTA3LDIxIEBAIHZvaWQgQWVjU3RhdGU6OkhhbmRsZUVjaG9QYXRoQ2hhbmdlKAog
ICAgIGNhcHR1cmVfc2lnbmFsX3NhdHVyYXRpb25fID0gZmFsc2U7CiAgICAgc3Ryb25nX25vdF9z
YXR1cmF0ZWRfcmVuZGVyX2Jsb2Nrc18gPSAwOwogICAgIGJsb2Nrc193aXRoX2FjdGl2ZV9yZW5k
ZXJfID0gMDsKLSAgICBzdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXJfLlJlc2V0KCk7CisgICAgaWYg
KHVzZV9zdXBwcmVzc29yX2dhaW5fbGltaXRlcl8pIHsKKyAgICAgIHN1cHByZXNzaW9uX2dhaW5f
bGltaXRlcl8uUmVzZXQoKTsKKyAgICB9CiAgICAgaW5pdGlhbF9zdGF0ZV8uUmVzZXQoKTsKICAg
ICB0cmFuc3BhcmVudF9zdGF0ZV8uUmVzZXQoKTsKLSAgICBzYXR1cmF0aW9uX2RldGVjdG9yXy5S
ZXNldCgpOworICAgIGlmICh1c2VfbGVnYWN5X3NhdHVyYXRpb25fYmVoYXZpb3JfKSB7CisgICAg
ICBsZWdhY3lfc2F0dXJhdGlvbl9kZXRlY3Rvcl8uUmVzZXQoKTsKKyAgICB9CiAgICAgZXJsZV9l
c3RpbWF0b3JfLlJlc2V0KHRydWUpOwogICAgIGVybF9lc3RpbWF0b3JfLlJlc2V0KCk7Ci0gICAg
ZmlsdGVyX3F1YWxpdHlfc3RhdGVfLlJlc2V0KCk7CisgICAgaWYgKHVzZV9sZWdhY3lfZmlsdGVy
X3F1YWxpdHlfKSB7CisgICAgICBsZWdhY3lfZmlsdGVyX3F1YWxpdHlfc3RhdGVfLlJlc2V0KCk7
CisgICAgfSBlbHNlIHsKKyAgICAgIGZpbHRlcl9xdWFsaXR5X3N0YXRlXy5SZXNldCgpOworICAg
IH0KICAgfTsKIAogICAvLyBUT0RPKHBlYWgpOiBSZWZpbmUgdGhlIHJlc2V0IHNjaGVtZSBhY2Nv
cmRpbmcgdG8gdGhlIHR5cGUgb2YgZ2FpbiBhbmQKQEAgLTE1NSwzNSArMTczLDU2IEBAIHZvaWQg
QWVjU3RhdGU6OlVwZGF0ZSgKICAgc3Ryb25nX25vdF9zYXR1cmF0ZWRfcmVuZGVyX2Jsb2Nrc18g
Kz0KICAgICAgIGFjdGl2ZV9yZW5kZXIgJiYgIVNhdHVyYXRlZENhcHR1cmUoKSA/IDEgOiAwOwog
Ci0gIC8vIFVwZGF0ZSB0aGUgbGltaXQgb24gdGhlIGVjaG8gc3VwcHIgZXNzaW9uIGFmdGVyIGFu
IGVjaG8gcGF0aCBjaGFuZ2UgdG8KLSAgLy8gYXZvaWQgYW4gaW5pdGlhbCBlY2hvIGJ1cnN0Lgot
ICBzdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXJfLlVwZGF0ZShyZW5kZXJfYnVmZmVyLkdldFJlbmRl
ckFjdGl2aXR5KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcGFy
ZW50TW9kZSgpKTsKLSAgaWYgKHN1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyXy5Db252ZXJnZWRG
aWx0ZXIoKSkgewotICAgIHN1cHByZXNzaW9uX2dhaW5fbGltaXRlcl8uRGVhY3RpdmF0ZSgpOwor
ICBpZiAodXNlX3N1cHByZXNzb3JfZ2Fpbl9saW1pdGVyXykgeworICAgIC8vIFVwZGF0ZSB0aGUg
bGltaXQgb24gdGhlIGVjaG8gc3VwcHJlc3Npb24gYWZ0ZXIgYW4gZWNobyBwYXRoIGNoYW5nZSB0
bworICAgIC8vIGF2b2lkIGFuIGluaXRpYWwgZWNobyBidXJzdC4KKyAgICBzdXBwcmVzc2lvbl9n
YWluX2xpbWl0ZXJfLlVwZGF0ZShyZW5kZXJfYnVmZmVyLkdldFJlbmRlckFjdGl2aXR5KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNwYXJlbnRNb2RlKCkpOwor
CisgICAgaWYgKHN1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyXy5Db252ZXJnZWRGaWx0ZXIoKSkg
eworICAgICAgc3VwcHJlc3Npb25fZ2Fpbl9saW1pdGVyXy5EZWFjdGl2YXRlKCk7CisgICAgfQog
ICB9CiAKKyAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBYMl9yZXZlcmI7
CisgIHJlbmRlcl9yZXZlcmJfLkFwcGx5KAorICAgICAgcmVuZGVyX2J1ZmZlci5HZXRTcGVjdHJ1
bUJ1ZmZlcigpLCBkZWxheV9zdGF0ZV8uRGlyZWN0UGF0aEZpbHRlckRlbGF5KCksCisgICAgICBj
b25maWdfLmVwX3N0cmVuZ3RoLnJldmVyYl9iYXNlZF9vbl9yZW5kZXIgPyBSZXZlcmJEZWNheSgp
IDogMC5mLAorICAgICAgWDJfcmV2ZXJiKTsKKwogICBpZiAoY29uZmlnXy5lY2hvX2F1ZGliaWxp
dHkudXNlX3N0YXRpb25hcnlfcHJvcGVydGllcykgewogICAgIC8vIFVwZGF0ZSB0aGUgZWNobyBh
dWRpYmlsaXR5IGV2YWx1YXRvci4KLSAgICBlY2hvX2F1ZGliaWxpdHlfLlVwZGF0ZSgKLSAgICAg
ICAgcmVuZGVyX2J1ZmZlciwgZGVsYXlfc3RhdGVfLkRpcmVjdFBhdGhGaWx0ZXJEZWxheSgpLAot
ICAgICAgICBkZWxheV9zdGF0ZV8uRXh0ZXJuYWxEZWxheVJlcG9ydGVkKCksCi0gICAgICAgIGNv
bmZpZ18uZXBfc3RyZW5ndGgucmV2ZXJiX2Jhc2VkX29uX3JlbmRlciA/IFJldmVyYkRlY2F5KCkg
OiAwLmYpOworICAgIGVjaG9fYXVkaWJpbGl0eV8uVXBkYXRlKHJlbmRlcl9idWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3JldmVyYl8uR2V0UmV2ZXJiQ29udHJpYnV0
aW9uUG93ZXJTcGVjdHJ1bSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5X3N0
YXRlXy5EaXJlY3RQYXRoRmlsdGVyRGVsYXkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWxheV9zdGF0ZV8uRXh0ZXJuYWxEZWxheVJlcG9ydGVkKCkpOwogICB9CiAKICAgLy8gVXBk
YXRlIHRoZSBFUkwgYW5kIEVSTEUgbWVhc3VyZXMuCiAgIGlmIChpbml0aWFsX3N0YXRlXy5UcmFu
c2l0aW9uVHJpZ2dlcmVkKCkpIHsKICAgICBlcmxlX2VzdGltYXRvcl8uUmVzZXQoZmFsc2UpOwog
ICB9CisKICAgY29uc3QgYXV0byYgWDIgPSByZW5kZXJfYnVmZmVyLlNwZWN0cnVtKGRlbGF5X3N0
YXRlXy5EaXJlY3RQYXRoRmlsdGVyRGVsYXkoKSk7Ci0gIGVybGVfZXN0aW1hdG9yXy5VcGRhdGUo
WDIsIFkyLCBFMl9tYWluLAorICBjb25zdCBhdXRvJiBYMl9pbnB1dF9lcmxlID0KKyAgICAgIGVu
YWJsZV9lcmxlX3VwZGF0ZXNfZHVyaW5nX3JldmVyYl8gPyBYMl9yZXZlcmIgOiBYMjsKKworICBl
cmxlX2VzdGltYXRvcl8uVXBkYXRlKHJlbmRlcl9idWZmZXIsIGFkYXB0aXZlX2ZpbHRlcl9mcmVx
dWVuY3lfcmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgWDJfaW5wdXRfZXJsZSwg
WTIsIEUyX21haW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHJhY3Rvcl9vdXRwdXRf
YW5hbHl6ZXJfLkNvbnZlcmdlZEZpbHRlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmZpZ18uZXJsZS5vbnNldF9kZXRlY3Rpb24pOworCiAgIGVybF9lc3RpbWF0b3JfLlVwZGF0ZShz
dWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl8uQ29udmVyZ2VkRmlsdGVyKCksIFgyLCBZMik7CiAK
ICAgLy8gRGV0ZWN0IGFuZCBmbGFnIGVjaG8gc2F0dXJhdGlvbi4KLSAgc2F0dXJhdGlvbl9kZXRl
Y3Rvcl8uVXBkYXRlKGFsaWduZWRfcmVuZGVyX2Jsb2NrLCBTYXR1cmF0ZWRDYXB0dXJlKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFY2hvUGF0aEdhaW4oKSk7CisgIGlmICh1c2Vf
bGVnYWN5X3NhdHVyYXRpb25fYmVoYXZpb3JfKSB7CisgICAgbGVnYWN5X3NhdHVyYXRpb25fZGV0
ZWN0b3JfLlVwZGF0ZShhbGlnbmVkX3JlbmRlcl9ibG9jaywgU2F0dXJhdGVkQ2FwdHVyZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNob1BhdGhHYWluKCkpOwor
ICB9IGVsc2UgeworICAgIHNhdHVyYXRpb25fZGV0ZWN0b3JfLlVwZGF0ZShhbGlnbmVkX3JlbmRl
cl9ibG9jaywgU2F0dXJhdGVkQ2FwdHVyZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVc2FibGVMaW5lYXJFc3RpbWF0ZSgpLCBzdWJ0cmFjdG9yX291dHB1dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRWNob1BhdGhHYWluKCkpOworICB9CiAKICAgLy8gVXBk
YXRlIHRoZSBkZWNpc2lvbiBvbiB3aGV0aGVyIHRvIHVzZSB0aGUgaW5pdGlhbCBzdGF0ZSBwYXJh
bWV0ZXIgc2V0LgogICBpbml0aWFsX3N0YXRlXy5VcGRhdGUoYWN0aXZlX3JlbmRlciwgU2F0dXJh
dGVkQ2FwdHVyZSgpKTsKQEAgLTE5NiwxMSArMjM1LDE3IEBAIHZvaWQgQWVjU3RhdGU6OlVwZGF0
ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVfcmVuZGVyLCBTYXR1cmF0ZWRD
YXB0dXJlKCkpOwogCiAgIC8vIEFuYWx5emUgdGhlIHF1YWxpdHkgb2YgdGhlIGZpbHRlci4KLSAg
ZmlsdGVyX3F1YWxpdHlfc3RhdGVfLlVwZGF0ZShzYXR1cmF0aW9uX2RldGVjdG9yXy5TYXR1cmF0
ZWRFY2hvKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlX3JlbmRlciwg
U2F0dXJhdGVkQ2FwdHVyZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5z
cGFyZW50TW9kZSgpLCBleHRlcm5hbF9kZWxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl8uQ29udmVyZ2VkRmlsdGVyKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXJfLkRp
dmVyZ2VkRmlsdGVyKCkpOworICBpZiAodXNlX2xlZ2FjeV9maWx0ZXJfcXVhbGl0eV8pIHsKKyAg
ICBsZWdhY3lfZmlsdGVyX3F1YWxpdHlfc3RhdGVfLlVwZGF0ZSgKKyAgICAgICAgU2F0dXJhdGVk
RWNobygpLCBhY3RpdmVfcmVuZGVyLCBTYXR1cmF0ZWRDYXB0dXJlKCksIFRyYW5zcGFyZW50TW9k
ZSgpLAorICAgICAgICBleHRlcm5hbF9kZWxheSwgc3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXJf
LkNvbnZlcmdlZEZpbHRlcigpLAorICAgICAgICBzdWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl8u
RGl2ZXJnZWRGaWx0ZXIoKSk7CisgIH0gZWxzZSB7CisgICAgZmlsdGVyX3F1YWxpdHlfc3RhdGVf
LlVwZGF0ZShhY3RpdmVfcmVuZGVyLCBUcmFuc3BhcmVudE1vZGUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNhdHVyYXRlZENhcHR1cmUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbHRlcl9hbmFseXplcl8uQ29uc2lzdGVudCgpLCBleHRlcm5hbF9k
ZWxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRyYWN0b3Jfb3V0cHV0
X2FuYWx5emVyXy5Db252ZXJnZWRGaWx0ZXIoKSk7CisgIH0KIAogICAvLyBVcGRhdGUgdGhlIHJl
dmVyYiBlc3RpbWF0ZS4KICAgY29uc3QgYm9vbCBzdGF0aW9uYXJ5X2Jsb2NrID0KQEAgLTIyNyw4
ICsyNzIsNyBAQCB2b2lkIEFlY1N0YXRlOjpVcGRhdGUoCiAgIGRhdGFfZHVtcGVyXy0+RHVtcFJh
dygiYWVjM19pbml0aWFsX3N0YXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxf
c3RhdGVfLkluaXRpYWxTdGF0ZUFjdGl2ZSgpKTsKICAgZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJh
ZWMzX2NhcHR1cmVfc2F0dXJhdGlvbiIsIFNhdHVyYXRlZENhcHR1cmUoKSk7Ci0gIGRhdGFfZHVt
cGVyXy0+RHVtcFJhdygiYWVjM19lY2hvX3NhdHVyYXRpb24iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgc2F0dXJhdGlvbl9kZXRlY3Rvcl8uU2F0dXJhdGVkRWNobygpKTsKKyAgZGF0YV9kdW1w
ZXJfLT5EdW1wUmF3KCJhZWMzX2VjaG9fc2F0dXJhdGlvbiIsIFNhdHVyYXRlZEVjaG8oKSk7CiAg
IGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19jb252ZXJnZWRfZmlsdGVyIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyXy5Db252ZXJnZWRGaWx0
ZXIoKSk7CiAgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19kaXZlcmdlZF9maWx0ZXIiLApA
QCAtMzgyLDYgKzQyNiw1MSBAQCB2b2lkIEFlY1N0YXRlOjpUcmFuc3BhcmVudE1vZGU6OlVwZGF0
ZShpbnQgZmlsdGVyX2RlbGF5X2Jsb2NrcywKIH0KIAogQWVjU3RhdGU6OkZpbHRlcmluZ1F1YWxp
dHlBbmFseXplcjo6RmlsdGVyaW5nUXVhbGl0eUFuYWx5emVyKAorICAgIGNvbnN0IEVjaG9DYW5j
ZWxsZXIzQ29uZmlnJiBjb25maWcpIHt9CisKK3ZvaWQgQWVjU3RhdGU6OkZpbHRlcmluZ1F1YWxp
dHlBbmFseXplcjo6UmVzZXQoKSB7CisgIHVzYWJsZV9saW5lYXJfZXN0aW1hdGVfID0gZmFsc2U7
CisgIGZpbHRlcl91cGRhdGVfYmxvY2tzX3NpbmNlX3Jlc2V0XyA9IDA7Cit9CisKK3ZvaWQgQWVj
U3RhdGU6OkZpbHRlcmluZ1F1YWxpdHlBbmFseXplcjo6VXBkYXRlKAorICAgIGJvb2wgYWN0aXZl
X3JlbmRlciwKKyAgICBib29sIHRyYW5zcGFyZW50X21vZGUsCisgICAgYm9vbCBzYXR1cmF0ZWRf
Y2FwdHVyZSwKKyAgICBib29sIGNvbnNpc3RlbnRfZXN0aW1hdGVfLAorICAgIGNvbnN0IGFic2w6
Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+JiBleHRlcm5hbF9kZWxheSwKKyAgICBib29sIGNvbnZl
cmdlZF9maWx0ZXIpIHsKKyAgLy8gVXBkYXRlIGJsb2NrcyBjb3VudGVyLgorICBjb25zdCBib29s
IGZpbHRlcl91cGRhdGUgPSBhY3RpdmVfcmVuZGVyICYmICFzYXR1cmF0ZWRfY2FwdHVyZTsKKyAg
ZmlsdGVyX3VwZGF0ZV9ibG9ja3Nfc2luY2VfcmVzZXRfICs9IGZpbHRlcl91cGRhdGUgPyAxIDog
MDsKKyAgZmlsdGVyX3VwZGF0ZV9ibG9ja3Nfc2luY2Vfc3RhcnRfICs9IGZpbHRlcl91cGRhdGUg
PyAxIDogMDsKKworICAvLyBTdG9yZSBjb252ZXJnZW5jZSBmbGFnIHdoZW4gb2JzZXJ2ZWQuCisg
IGNvbnZlcmdlbmNlX3NlZW5fID0gY29udmVyZ2VuY2Vfc2Vlbl8gfHwgY29udmVyZ2VkX2ZpbHRl
cjsKKworICAvLyBWZXJpZnkgcmVxdWlyZW1lbnRzIGZvciBhY2hpZXZpbmcgYSBkZWNlbnQgZmls
dGVyLiBUaGUgcmVxdWlyZW1lbnRzIGZvcgorICAvLyBmaWx0ZXIgYWRhcHRhdGlvbiBhdCBjYWxs
IHN0YXJ0dXAgYXJlIG1vcmUgcmVzdHJpY3RpdmUgdGhhbiBhZnRlciBhbgorICAvLyBpbi1jYWxs
IHJlc2V0LgorICBjb25zdCBib29sIHN1ZmZpY2llbnRfZGF0YV90b19jb252ZXJnZV9hdF9zdGFy
dHVwID0KKyAgICAgIGZpbHRlcl91cGRhdGVfYmxvY2tzX3NpbmNlX3N0YXJ0XyA+IGtOdW1CbG9j
a3NQZXJTZWNvbmQgKiAwLjRmOworICBjb25zdCBib29sIHN1ZmZpY2llbnRfZGF0YV90b19jb252
ZXJnZV9hdF9yZXNldCA9CisgICAgICBzdWZmaWNpZW50X2RhdGFfdG9fY29udmVyZ2VfYXRfc3Rh
cnR1cCAmJgorICAgICAgZmlsdGVyX3VwZGF0ZV9ibG9ja3Nfc2luY2VfcmVzZXRfID4ga051bUJs
b2Nrc1BlclNlY29uZCAqIDAuMmY7CisKKyAgLy8gVGhlIGxpbmVhciBmaWx0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBpdCBoYXMgaGFkIHRpbWUgdG8gY29udmVyZ2UuCisgIHVzYWJsZV9saW5lYXJfZXN0
aW1hdGVfID0gc3VmZmljaWVudF9kYXRhX3RvX2NvbnZlcmdlX2F0X3N0YXJ0dXAgJiYKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWZmaWNpZW50X2RhdGFfdG9fY29udmVyZ2VfYXRfcmVz
ZXQ7CisKKyAgLy8gVGhlIGxpbmVhciBmaWx0ZXIgY2FuIG9ubHkgYmUgdXNlZCBpZiBhbiBleHRl
cm5hbCBkZWxheSBvciBjb252ZXJnZW5jZSBoYXZlCisgIC8vIGJlZW4gaWRlbnRpZmllZAorICB1
c2FibGVfbGluZWFyX2VzdGltYXRlXyA9CisgICAgICB1c2FibGVfbGluZWFyX2VzdGltYXRlXyAm
JiAoZXh0ZXJuYWxfZGVsYXkgfHwgY29udmVyZ2VuY2Vfc2Vlbl8pOworCisgIC8vIElmIHRyYW5z
cGFyZW50IG1vZGUgaXMgb24sIGRlYWN0aXZhdGUgdXNpZ24gdGhlIGxpbmVhciBmaWx0ZXIuCisg
IHVzYWJsZV9saW5lYXJfZXN0aW1hdGVfID0gdXNhYmxlX2xpbmVhcl9lc3RpbWF0ZV8gJiYgIXRy
YW5zcGFyZW50X21vZGU7Cit9CisKK0FlY1N0YXRlOjpMZWdhY3lGaWx0ZXJpbmdRdWFsaXR5QW5h
bHl6ZXI6OkxlZ2FjeUZpbHRlcmluZ1F1YWxpdHlBbmFseXplcigKICAgICBjb25zdCBFY2hvQ2Fu
Y2VsbGVyM0NvbmZpZyYgY29uZmlnKQogICAgIDogY29uc2VydmF0aXZlX2luaXRpYWxfcGhhc2Vf
KGNvbmZpZy5maWx0ZXIuY29uc2VydmF0aXZlX2luaXRpYWxfcGhhc2UpLAogICAgICAgcmVxdWly
ZWRfYmxvY2tzX2Zvcl9jb252ZXJnZW5jZV8oCkBAIC0zOTAsNyArNDc5LDcgQEAgQWVjU3RhdGU6
OkZpbHRlcmluZ1F1YWxpdHlBbmFseXplcjo6RmlsdGVyaW5nUXVhbGl0eUFuYWx5emVyKAogICAg
ICAgICAgIGNvbmZpZy5lY2hvX3JlbW92YWxfY29udHJvbC5saW5lYXJfYW5kX3N0YWJsZV9lY2hv
X3BhdGgpLAogICAgICAgbm9uX2NvbnZlcmdlZF9zZXF1ZW5jZV9zaXplXyhrQmxvY2tzU2luY2VD
b252ZXJnZW5jZWRGaWx0ZXJJbml0KSB7fQogCi12b2lkIEFlY1N0YXRlOjpGaWx0ZXJpbmdRdWFs
aXR5QW5hbHl6ZXI6OlJlc2V0KCkgewordm9pZCBBZWNTdGF0ZTo6TGVnYWN5RmlsdGVyaW5nUXVh
bGl0eUFuYWx5emVyOjpSZXNldCgpIHsKICAgdXNhYmxlX2xpbmVhcl9lc3RpbWF0ZV8gPSBmYWxz
ZTsKICAgc3Ryb25nX25vdF9zYXR1cmF0ZWRfcmVuZGVyX2Jsb2Nrc18gPSAwOwogICBpZiAobGlu
ZWFyX2FuZF9zdGFibGVfZWNob19wYXRoXykgewpAQCAtNDAyLDcgKzQ5MSw3IEBAIHZvaWQgQWVj
U3RhdGU6OkZpbHRlcmluZ1F1YWxpdHlBbmFseXplcjo6UmVzZXQoKSB7CiAgIHJlY2VudF9jb252
ZXJnZW5jZV8gPSB0cnVlOwogfQogCi12b2lkIEFlY1N0YXRlOjpGaWx0ZXJpbmdRdWFsaXR5QW5h
bHl6ZXI6OlVwZGF0ZSgKK3ZvaWQgQWVjU3RhdGU6OkxlZ2FjeUZpbHRlcmluZ1F1YWxpdHlBbmFs
eXplcjo6VXBkYXRlKAogICAgIGJvb2wgc2F0dXJhdGVkX2VjaG8sCiAgICAgYm9vbCBhY3RpdmVf
cmVuZGVyLAogICAgIGJvb2wgc2F0dXJhdGVkX2NhcHR1cmUsCkBAIC00NTQsMTggKzU0Myw0MSBA
QCB2b2lkIEFlY1N0YXRlOjpGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXI6OlVwZGF0ZSgKICAgfQog
fQogCi1BZWNTdGF0ZTo6U2F0dXJhdGlvbkRldGVjdG9yOjpTYXR1cmF0aW9uRGV0ZWN0b3IoCit2
b2lkIEFlY1N0YXRlOjpTYXR1cmF0aW9uRGV0ZWN0b3I6OlVwZGF0ZSgKKyAgICBydGM6OkFycmF5
Vmlldzxjb25zdCBmbG9hdD4geCwKKyAgICBib29sIHNhdHVyYXRlZF9jYXB0dXJlLAorICAgIGJv
b2wgdXNhYmxlX2xpbmVhcl9lc3RpbWF0ZSwKKyAgICBjb25zdCBTdWJ0cmFjdG9yT3V0cHV0JiBz
dWJ0cmFjdG9yX291dHB1dCwKKyAgICBmbG9hdCBlY2hvX3BhdGhfZ2FpbikgeworICBzYXR1cmF0
ZWRfZWNob18gPSBzYXR1cmF0ZWRfY2FwdHVyZTsKKyAgaWYgKHVzYWJsZV9saW5lYXJfZXN0aW1h
dGUpIHsKKyAgICBjb25zdGV4cHIgZmxvYXQga1NhdHVyYXRpb25UaHJlc2hvbGQgPSAyMDAwMC5m
OworICAgIHNhdHVyYXRlZF9lY2hvXyA9CisgICAgICAgIHNhdHVyYXRlZF9lY2hvXyAmJgorICAg
ICAgICAoc3VidHJhY3Rvcl9vdXRwdXQuc19tYWluX21heF9hYnMgPiBrU2F0dXJhdGlvblRocmVz
aG9sZCB8fAorICAgICAgICAgc3VidHJhY3Rvcl9vdXRwdXQuc19zaGFkb3dfbWF4X2FicyA+IGtT
YXR1cmF0aW9uVGhyZXNob2xkKTsKKyAgfSBlbHNlIHsKKyAgICBjb25zdCBmbG9hdCBtYXhfc2Ft
cGxlID0gZmFicygqc3RkOjptYXhfZWxlbWVudCgKKyAgICAgICAgeC5iZWdpbigpLCB4LmVuZCgp
LCBbXShmbG9hdCBhLCBmbG9hdCBiKSB7IHJldHVybiBhICogYSA8IGIgKiBiOyB9KSk7CisKKyAg
ICBjb25zdCBmbG9hdCBrTWFyZ2luID0gMTAuZjsKKyAgICBmbG9hdCBwZWFrX2VjaG9fYW1wbGl0
dWRlID0gbWF4X3NhbXBsZSAqIGVjaG9fcGF0aF9nYWluICoga01hcmdpbjsKKyAgICBzYXR1cmF0
ZWRfZWNob18gPSBzYXR1cmF0ZWRfZWNob18gJiYgcGVha19lY2hvX2FtcGxpdHVkZSA+IDMyMDAw
OworICB9Cit9CisKK0FlY1N0YXRlOjpMZWdhY3lTYXR1cmF0aW9uRGV0ZWN0b3I6OkxlZ2FjeVNh
dHVyYXRpb25EZXRlY3RvcigKICAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmln
KQogICAgIDogZWNob19jYW5fc2F0dXJhdGVfKGNvbmZpZy5lcF9zdHJlbmd0aC5lY2hvX2Nhbl9z
YXR1cmF0ZSksCiAgICAgICBub3Rfc2F0dXJhdGVkX3NlcXVlbmNlX3NpemVfKDEwMDApIHt9CiAK
LXZvaWQgQWVjU3RhdGU6OlNhdHVyYXRpb25EZXRlY3Rvcjo6UmVzZXQoKSB7Cit2b2lkIEFlY1N0
YXRlOjpMZWdhY3lTYXR1cmF0aW9uRGV0ZWN0b3I6OlJlc2V0KCkgewogICBub3Rfc2F0dXJhdGVk
X3NlcXVlbmNlX3NpemVfID0gMDsKIH0KIAotdm9pZCBBZWNTdGF0ZTo6U2F0dXJhdGlvbkRldGVj
dG9yOjpVcGRhdGUocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhdHVyYXRlZF9jYXB0dXJlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZWNob19wYXRoX2dh
aW4pIHsKK3ZvaWQgQWVjU3RhdGU6OkxlZ2FjeVNhdHVyYXRpb25EZXRlY3Rvcjo6VXBkYXRlKHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXR1cmF0ZWRfY2FwdHVyZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGVjaG9fcGF0aF9nYWlu
KSB7CiAgIGlmICghZWNob19jYW5fc2F0dXJhdGVfKSB7CiAgICAgc2F0dXJhdGVkX2VjaG9fID0g
ZmFsc2U7CiAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRl
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuaAppbmRleCBjYTQ3NjQyOGE1NGQ4NGFjZDIy
NDA2MDg3ZGZiZTIzMmQ2NGI0NWZhLi5jOWQ5Y2YzZjNhMGJkMjhjNGFiNmY2NjIyNzcyYzc4NThi
MjE1N2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hZWNfc3RhdGUuaApAQCAtMTEsOSArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUVDM19BRUNfU1RBVEVfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FFQzNfQUVDX1NUQVRFX0hfCiAKLSNpbmNsdWRlIDxtYXRoLmg+Ci0KLSNp
bmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8YXJyYXk+
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtMjgsNiArMjcsNyBA
QAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9y
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmlsdGVyX2FuYWx5
emVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1
ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9y
ZXZlcmJfbW9kZWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9y
ZXZlcmJfbW9kZWxfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dF9hbmFseXplci5oIgpAQCAtNDYsMTEgKzQ2
LDE3IEBAIGNsYXNzIEFlY1N0YXRlIHsKICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBlY2hvIHN1
YnRyYWN0b3IgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSByZXNpZHVhbAogICAvLyBlY2hv
LgogICBib29sIFVzYWJsZUxpbmVhckVzdGltYXRlKCkgY29uc3QgeworICAgIGlmICh1c2VfbGVn
YWN5X2ZpbHRlcl9xdWFsaXR5XykgeworICAgICAgcmV0dXJuIGxlZ2FjeV9maWx0ZXJfcXVhbGl0
eV9zdGF0ZV8uTGluZWFyRmlsdGVyVXNhYmxlKCk7CisgICAgfQogICAgIHJldHVybiBmaWx0ZXJf
cXVhbGl0eV9zdGF0ZV8uTGluZWFyRmlsdGVyVXNhYmxlKCk7CiAgIH0KIAogICAvLyBSZXR1cm5z
IHdoZXRoZXIgdGhlIGVjaG8gc3VidHJhY3RvciBvdXRwdXQgc2hvdWxkIGJlIHVzZWQgYXMgb3V0
cHV0LgogICBib29sIFVzZUxpbmVhckZpbHRlck91dHB1dCgpIGNvbnN0IHsKKyAgICBpZiAodXNl
X2xlZ2FjeV9maWx0ZXJfcXVhbGl0eV8pIHsKKyAgICAgIHJldHVybiBsZWdhY3lfZmlsdGVyX3F1
YWxpdHlfc3RhdGVfLkxpbmVhckZpbHRlclVzYWJsZSgpOworICAgIH0KICAgICByZXR1cm4gZmls
dGVyX3F1YWxpdHlfc3RhdGVfLkxpbmVhckZpbHRlclVzYWJsZSgpOwogICB9CiAKQEAgLTk5LDcg
KzEwNSwxMSBAQCBjbGFzcyBBZWNTdGF0ZSB7CiAgIGJvb2wgU2F0dXJhdGVkQ2FwdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIGNhcHR1cmVfc2lnbmFsX3NhdHVyYXRpb25fOyB9CiAKICAgLy8gUmV0dXJu
cyB3aGV0aGVyIHRoZSBlY2hvIHNpZ25hbCBpcyBzYXR1cmF0ZWQuCi0gIGJvb2wgU2F0dXJhdGVk
RWNobygpIGNvbnN0IHsgcmV0dXJuIHNhdHVyYXRpb25fZGV0ZWN0b3JfLlNhdHVyYXRlZEVjaG8o
KTsgfQorICBib29sIFNhdHVyYXRlZEVjaG8oKSBjb25zdCB7CisgICAgcmV0dXJuIHVzZV9sZWdh
Y3lfc2F0dXJhdGlvbl9iZWhhdmlvcl8KKyAgICAgICAgICAgICAgID8gbGVnYWN5X3NhdHVyYXRp
b25fZGV0ZWN0b3JfLlNhdHVyYXRlZEVjaG8oKQorICAgICAgICAgICAgICAgOiBzYXR1cmF0aW9u
X2RldGVjdG9yXy5TYXR1cmF0ZWRFY2hvKCk7CisgIH0KIAogICAvLyBVcGRhdGVzIHRoZSBjYXB0
dXJlIHNpZ25hbCBzYXR1cmF0aW9uLgogICB2b2lkIFVwZGF0ZUNhcHR1cmVTYXR1cmF0aW9uKGJv
b2wgY2FwdHVyZV9zaWduYWxfc2F0dXJhdGlvbikgewpAQCAtMTIyLDcgKzEzMiwxMSBAQCBjbGFz
cyBBZWNTdGF0ZSB7CiAKICAgLy8gUmV0dXJucyB0aGUgdXBwZXIgbGltaXQgZm9yIHRoZSBlY2hv
IHN1cHByZXNzaW9uIGdhaW4uCiAgIGZsb2F0IFN1cHByZXNzaW9uR2FpbkxpbWl0KCkgY29uc3Qg
ewotICAgIHJldHVybiBzdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXJfLkxpbWl0KCk7CisgICAgaWYg
KHVzZV9zdXBwcmVzc29yX2dhaW5fbGltaXRlcl8pIHsKKyAgICAgIHJldHVybiBzdXBwcmVzc2lv
bl9nYWluX2xpbWl0ZXJfLkxpbWl0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiAxLmY7
CisgICAgfQogICB9CiAKICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBzdXBwcmVzc2lvbiBnYWlu
IGxpbWl0ZXIgaXMgYWN0aXZlLgpAQCAtMTUzLDEzICsxNjcsMTQgQEAgY2xhc3MgQWVjU3RhdGUg
ewogICB9CiAKICBwcml2YXRlOgotICB2b2lkIFVwZGF0ZVN1cHByZXNzb3JHYWluTGltaXQoYm9v
bCByZW5kZXJfYWN0aXZpdHkpOwotICBib29sIERldGVjdEVjaG9TYXR1cmF0aW9uKHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IGZsb2F0PiB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
IGVjaG9fcGF0aF9nYWluKTsKLQogICBzdGF0aWMgaW50IGluc3RhbmNlX2NvdW50XzsKICAgc3Rk
Ojp1bmlxdWVfcHRyPEFwbURhdGFEdW1wZXI+IGRhdGFfZHVtcGVyXzsKICAgY29uc3QgRWNob0Nh
bmNlbGxlcjNDb25maWcgY29uZmlnXzsKKyAgY29uc3QgYm9vbCB1c2VfbGVnYWN5X3NhdHVyYXRp
b25fYmVoYXZpb3JfOworICBjb25zdCBib29sIGVuYWJsZV9lcmxlX3Jlc2V0c19hdF9nYWluX2No
YW5nZXNfOworICBjb25zdCBib29sIGVuYWJsZV9lcmxlX3VwZGF0ZXNfZHVyaW5nX3JldmVyYl87
CisgIGNvbnN0IGJvb2wgdXNlX2xlZ2FjeV9maWx0ZXJfcXVhbGl0eV87CisgIGNvbnN0IGJvb2wg
dXNlX3N1cHByZXNzb3JfZ2Fpbl9saW1pdGVyXzsKIAogICAvLyBDbGFzcyBmb3IgY29udHJvbGxp
bmcgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgaW50aWFsIHN0YXRlLCB3aGljaCBpbiB0dXJuCiAg
IC8vIGNvbnRyb2xzIHdoZW4gdGhlIGZpbHRlciBwYXJhbWV0ZXJzIGZvciB0aGUgaW5pdGlhbCBz
dGF0ZSBzaG91bGQgYmUgdXNlZC4KQEAgLTI1NSw3ICsyNzAsMzcgQEAgY2xhc3MgQWVjU3RhdGUg
ewogICAvLyBzdXBwcmVzc29yLgogICBjbGFzcyBGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXIgewog
ICAgcHVibGljOgotICAgIGV4cGxpY2l0IEZpbHRlcmluZ1F1YWxpdHlBbmFseXplcihjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKTsKKyAgICBGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6
ZXIoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZyk7CisKKyAgICAvLyBSZXR1cm5z
IHdoZXRoZXIgdGhlIHRoZSBsaW5lYXIgZmlsdGVyIGNhbiBiZSB1c2VkIGZvciB0aGUgZWNobwor
ICAgIC8vIGNhbmNlbGxlciBvdXRwdXQuCisgICAgYm9vbCBMaW5lYXJGaWx0ZXJVc2FibGUoKSBj
b25zdCB7IHJldHVybiB1c2FibGVfbGluZWFyX2VzdGltYXRlXzsgfQorCisgICAgLy8gUmVzZXRz
IHRoZSBzdGF0ZSBvZiB0aGUgYW5hbHl6ZXIuCisgICAgdm9pZCBSZXNldCgpOworCisgICAgLy8g
VXBkYXRlcyB0aGUgYW5hbHlzaXMgYmFzZWQgb24gbmV3IGRhdGEuCisgICAgdm9pZCBVcGRhdGUo
Ym9vbCBhY3RpdmVfcmVuZGVyLAorICAgICAgICAgICAgICAgIGJvb2wgdHJhbnNwYXJlbnRfbW9k
ZSwKKyAgICAgICAgICAgICAgICBib29sIHNhdHVyYXRlZF9jYXB0dXJlLAorICAgICAgICAgICAg
ICAgIGJvb2wgY29uc2lzdGVudF9lc3RpbWF0ZV8sCisgICAgICAgICAgICAgICAgY29uc3QgYWJz
bDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4mIGV4dGVybmFsX2RlbGF5LAorICAgICAgICAgICAg
ICAgIGJvb2wgY29udmVyZ2VkX2ZpbHRlcik7CisKKyAgIHByaXZhdGU6CisgICAgYm9vbCB1c2Fi
bGVfbGluZWFyX2VzdGltYXRlXyA9IGZhbHNlOworICAgIHNpemVfdCBmaWx0ZXJfdXBkYXRlX2Js
b2Nrc19zaW5jZV9yZXNldF8gPSAwOworICAgIHNpemVfdCBmaWx0ZXJfdXBkYXRlX2Jsb2Nrc19z
aW5jZV9zdGFydF8gPSAwOworICAgIGJvb2wgY29udmVyZ2VuY2Vfc2Vlbl8gPSBmYWxzZTsKKyAg
fSBmaWx0ZXJfcXVhbGl0eV9zdGF0ZV87CisKKyAgLy8gQ2xhc3MgY29udGFpbmluZyB0aGUgbGVn
YWN5IGZ1bmN0aW9uYWxpdHkgZm9yIGFuYWx5emluZyBob3cgd2VsbCB0aGUgbGluZWFyCisgIC8v
IGZpbHRlciBpcywgYW5kIGNhbiBiZSBleHBlY3RlZCB0byBwZXJmb3JtIG9uIHRoZSBjdXJyZW50
IHNpZ25hbHMuIFRoZQorICAvLyBwdXJwb3NlIG9mIHRoaXMgaXMgZm9yIHVzaW5nIHRvIHNlbGVj
dCB0aGUgZWNobyBzdXBwcmVzc2lvbiBmdW5jdGlvbmFsaXR5CisgIC8vIGFzIHdlbGwgYXMgdGhl
IGlucHV0IHRvIHRoZSBlY2hvIHN1cHByZXNzb3IuCisgIGNsYXNzIExlZ2FjeUZpbHRlcmluZ1F1
YWxpdHlBbmFseXplciB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgTGVnYWN5RmlsdGVyaW5n
UXVhbGl0eUFuYWx5emVyKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpOwogCiAg
ICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSB0aGUgbGluZWFyIGZpbHRlciBpcyBjYW4gYmUgdXNl
ZCBmb3IgdGhlIGVjaG8KICAgICAvLyBjYW5jZWxsZXIgb3V0cHV0LgpAQCAtMjg0LDE0ICszMjks
MzIgQEAgY2xhc3MgQWVjU3RhdGUgewogICAgIHNpemVfdCBhY3RpdmVfbm9uX2NvbnZlcmdlZF9z
ZXF1ZW5jZV9zaXplXyA9IDA7CiAgICAgYm9vbCByZWNlbnRfY29udmVyZ2VuY2VfZHVyaW5nX2Fj
dGl2aXR5XyA9IGZhbHNlOwogICAgIGJvb2wgcmVjZW50X2NvbnZlcmdlbmNlXyA9IGZhbHNlOwot
ICB9IGZpbHRlcl9xdWFsaXR5X3N0YXRlXzsKKyAgfSBsZWdhY3lfZmlsdGVyX3F1YWxpdHlfc3Rh
dGVfOwogCi0gIC8vIENsYXNzIGZvciBkZXRlY3Rpbmcgd2hldGhlciB0aGUgZWNobyBpcyB0byBi
ZSBjb25zaWRlcmVkIHRvIGJlIHNhdHVyYXRlZC4KLSAgLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBp
cyB0byBhbGxvdyBjdXN0b21pemVkIGJlaGF2aW9yIGluIHRoZSBlY2hvIHN1cHByZXNzb3IKLSAg
Ly8gZm9yIHdoZW4gdGhlIGVjaG8gaXMgc2F0dXJhdGVkLgorICAvLyBDbGFzcyBmb3IgZGV0ZWN0
aW5nIHdoZXRoZXIgdGhlIGVjaG8gaXMgdG8gYmUgY29uc2lkZXJlZCB0byBiZQorICAvLyBzYXR1
cmF0ZWQuCiAgIGNsYXNzIFNhdHVyYXRpb25EZXRlY3RvciB7CiAgICBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgU2F0dXJhdGlvbkRldGVjdG9yKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25m
aWcpOworICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgZWNobyBpcyB0byBiZSBjb25zaWRlcmVk
IHNhdHVyYXRlZC4KKyAgICBib29sIFNhdHVyYXRlZEVjaG8oKSBjb25zdCB7IHJldHVybiBzYXR1
cmF0ZWRfZWNob187IH07CisKKyAgICAvLyBVcGRhdGVzIHRoZSBkZXRlY3Rpb24gZGVjaXNpb24g
YmFzZWQgb24gbmV3IGRhdGEuCisgICAgdm9pZCBVcGRhdGUocnRjOjpBcnJheVZpZXc8Y29uc3Qg
ZmxvYXQ+IHgsCisgICAgICAgICAgICAgICAgYm9vbCBzYXR1cmF0ZWRfY2FwdHVyZSwKKyAgICAg
ICAgICAgICAgICBib29sIHVzYWJsZV9saW5lYXJfZXN0aW1hdGUsCisgICAgICAgICAgICAgICAg
Y29uc3QgU3VidHJhY3Rvck91dHB1dCYgc3VidHJhY3Rvcl9vdXRwdXQsCisgICAgICAgICAgICAg
ICAgZmxvYXQgZWNob19wYXRoX2dhaW4pOworCisgICBwcml2YXRlOgorICAgIGJvb2wgc2F0dXJh
dGVkX2VjaG9fID0gZmFsc2U7CisgIH0gc2F0dXJhdGlvbl9kZXRlY3Rvcl87CisKKyAgLy8gTGVn
YWN5IGNsYXNzIGZvciBkZXRlY3Rpbmcgd2hldGhlciB0aGUgZWNobyBpcyB0byBiZSBjb25zaWRl
cmVkIHRvIGJlCisgIC8vIHNhdHVyYXRlZC4gVGhpcyBpcyBrZXB0IGFzIGEgZmFsbGJhY2sgc29s
dXRpb24gdG8gdXNlIGluc3RlYWQgb2YgdGhlIGNsYXNzCisgIC8vIFNhdHVyYXRpb25EZXRlY3Rv
ciwKKyAgY2xhc3MgTGVnYWN5U2F0dXJhdGlvbkRldGVjdG9yIHsKKyAgIHB1YmxpYzoKKyAgICBl
eHBsaWNpdCBMZWdhY3lTYXR1cmF0aW9uRGV0ZWN0b3IoY29uc3QgRWNob0NhbmNlbGxlcjNDb25m
aWcmIGNvbmZpZyk7CiAKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGVjaG8gaXMgdG8gYmUg
Y29uc2lkZXJlZCBzYXR1cmF0ZWQuCiAgICAgYm9vbCBTYXR1cmF0ZWRFY2hvKCkgY29uc3QgeyBy
ZXR1cm4gc2F0dXJhdGVkX2VjaG9fOyB9OwpAQCAtMzA4LDcgKzM3MSw3IEBAIGNsYXNzIEFlY1N0
YXRlIHsKICAgICBjb25zdCBib29sIGVjaG9fY2FuX3NhdHVyYXRlXzsKICAgICBzaXplX3Qgbm90
X3NhdHVyYXRlZF9zZXF1ZW5jZV9zaXplXzsKICAgICBib29sIHNhdHVyYXRlZF9lY2hvXyA9IGZh
bHNlOwotICB9IHNhdHVyYXRpb25fZGV0ZWN0b3JfOworICB9IGxlZ2FjeV9zYXR1cmF0aW9uX2Rl
dGVjdG9yXzsKIAogICBFcmxFc3RpbWF0b3IgZXJsX2VzdGltYXRvcl87CiAgIEVybGVFc3RpbWF0
b3IgZXJsZV9lc3RpbWF0b3JfOwpAQCAtMzIxLDggKzM4NCw4IEBAIGNsYXNzIEFlY1N0YXRlIHsK
ICAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gZXh0ZXJuYWxfZGVsYXlfOwogICBFY2hv
QXVkaWJpbGl0eSBlY2hvX2F1ZGliaWxpdHlfOwogICBSZXZlcmJNb2RlbEVzdGltYXRvciByZXZl
cmJfbW9kZWxfZXN0aW1hdG9yXzsKKyAgUmVuZGVyUmV2ZXJiTW9kZWwgcmVuZGVyX3JldmVyYl87
CiAgIFN1YnRyYWN0b3JPdXRwdXRBbmFseXplciBzdWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl87
Ci0gIGJvb2wgZW5hYmxlX2VybGVfcmVzZXRzX2F0X2dhaW5fY2hhbmdlc18gPSB0cnVlOwogfTsK
IAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVj
X3N0YXRlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlX3VuaXR0ZXN0LmNj
CmluZGV4IGJmMzJhMGI2MDcyMGVjZWU3MWYzMmVmMzRhMzViMTUzNzRmZTcwNmQuLmEzMzEwMDYz
NzgxNjIzMThiNmMxYzZlNzFhOTMzMmNlZWFhMGNjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FlY19zdGF0ZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGVf
dW5pdHRlc3QuY2MKQEAgLTI1LDcgKzI1LDcgQEAgVEVTVChBZWNTdGF0ZSwgTm9ybWFsVXNhZ2Up
IHsKICAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gZGVsYXlfZXN0aW1hdGUgPQogICAg
ICAgRGVsYXlFc3RpbWF0ZShEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprUmVmaW5lZCwgMTApOwog
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIo
Ci0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgUmVu
ZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQs
IGtGZnRMZW5ndGhCeTJQbHVzMT4gRTJfbWFpbiA9IHt9OwogICBzdGQ6OmFycmF5PGZsb2F0LCBr
RmZ0TGVuZ3RoQnkyUGx1czE+IFkyID0ge307CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZs
b2F0Pj4geCgzLCBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMC5mKSk7CkBAIC01Niw3
ICs1Niw3IEBAIFRFU1QoQWVjU3RhdGUsIE5vcm1hbFVzYWdlKSB7CiAgIHN0ZDo6ZmlsbCh4WzBd
LmJlZ2luKCksIHhbMF0uZW5kKCksIDEwMS5mKTsKICAgZm9yIChpbnQgayA9IDA7IGsgPCAzMDAw
OyArK2spIHsKICAgICByZW5kZXJfZGVsYXlfYnVmZmVyLT5JbnNlcnQoeCk7Ci0gICAgb3V0cHV0
LlVwZGF0ZVBvd2Vycyh5KTsKKyAgICBvdXRwdXQuQ29tcHV0ZU1ldHJpY3MoeSk7CiAgICAgc3Rh
dGUuVXBkYXRlKGRlbGF5X2VzdGltYXRlLCBjb252ZXJnZWRfZmlsdGVyX2ZyZXF1ZW5jeV9yZXNw
b25zZSwKICAgICAgICAgICAgICAgICAgaW1wdWxzZV9yZXNwb25zZSwgKnJlbmRlcl9kZWxheV9i
dWZmZXItPkdldFJlbmRlckJ1ZmZlcigpLAogICAgICAgICAgICAgICAgICBFMl9tYWluLCBZMiwg
b3V0cHV0LCB5KTsKQEAgLTY1LDcgKzY1LDcgQEAgVEVTVChBZWNTdGF0ZSwgTm9ybWFsVXNhZ2Up
IHsKIAogICAvLyBWZXJpZnkgdGhhdCBsaW5lYXIgQUVDIHVzYWJpbGl0eSBiZWNvbWVzIGZhbHNl
IGFmdGVyIGFuIGVjaG8gcGF0aCBjaGFuZ2UgaXMKICAgLy8gcmVwb3J0ZWQKLSAgb3V0cHV0LlVw
ZGF0ZVBvd2Vycyh5KTsKKyAgb3V0cHV0LkNvbXB1dGVNZXRyaWNzKHkpOwogICBzdGF0ZS5IYW5k
bGVFY2hvUGF0aENoYW5nZShFY2hvUGF0aFZhcmlhYmlsaXR5KAogICAgICAgZmFsc2UsIEVjaG9Q
YXRoVmFyaWFiaWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6a0J1ZmZlclJlYWRqdXN0bWVudCwgZmFs
c2UpKTsKICAgc3RhdGUuVXBkYXRlKGRlbGF5X2VzdGltYXRlLCBjb252ZXJnZWRfZmlsdGVyX2Zy
ZXF1ZW5jeV9yZXNwb25zZSwKQEAgLTc2LDcgKzc2LDcgQEAgVEVTVChBZWNTdGF0ZSwgTm9ybWFs
VXNhZ2UpIHsKICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGFjdGl2ZSByZW5kZXIgZGV0ZWN0aW9uIHdv
cmtzIGFzIGludGVuZGVkLgogICBzdGQ6OmZpbGwoeFswXS5iZWdpbigpLCB4WzBdLmVuZCgpLCAx
MDEuZik7CiAgIHJlbmRlcl9kZWxheV9idWZmZXItPkluc2VydCh4KTsKLSAgb3V0cHV0LlVwZGF0
ZVBvd2Vycyh5KTsKKyAgb3V0cHV0LkNvbXB1dGVNZXRyaWNzKHkpOwogICBzdGF0ZS5IYW5kbGVF
Y2hvUGF0aENoYW5nZShFY2hvUGF0aFZhcmlhYmlsaXR5KAogICAgICAgdHJ1ZSwgRWNob1BhdGhW
YXJpYWJpbGl0eTo6RGVsYXlBZGp1c3RtZW50OjprTmV3RGV0ZWN0ZWREZWxheSwgZmFsc2UpKTsK
ICAgc3RhdGUuVXBkYXRlKGRlbGF5X2VzdGltYXRlLCBjb252ZXJnZWRfZmlsdGVyX2ZyZXF1ZW5j
eV9yZXNwb25zZSwKQEAgLTg2LDcgKzg2LDcgQEAgVEVTVChBZWNTdGF0ZSwgTm9ybWFsVXNhZ2Up
IHsKIAogICBmb3IgKGludCBrID0gMDsgayA8IDEwMDA7ICsraykgewogICAgIHJlbmRlcl9kZWxh
eV9idWZmZXItPkluc2VydCh4KTsKLSAgICBvdXRwdXQuVXBkYXRlUG93ZXJzKHkpOworICAgIG91
dHB1dC5Db21wdXRlTWV0cmljcyh5KTsKICAgICBzdGF0ZS5VcGRhdGUoZGVsYXlfZXN0aW1hdGUs
IGNvbnZlcmdlZF9maWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAogICAgICAgICAgICAgICAgICBp
bXB1bHNlX3Jlc3BvbnNlLCAqcmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCks
CiAgICAgICAgICAgICAgICAgIEUyX21haW4sIFkyLCBvdXRwdXQsIHkpOwpAQCAtMTEwLDcgKzEx
MCw3IEBAIFRFU1QoQWVjU3RhdGUsIE5vcm1hbFVzYWdlKSB7CiAKICAgWTIuZmlsbCgxMC5mICog
MTAwMDAuZiAqIDEwMDAwLmYpOwogICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEwMDA7ICsraykg
ewotICAgIG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7CisgICAgb3V0cHV0LkNvbXB1dGVNZXRyaWNz
KHkpOwogICAgIHN0YXRlLlVwZGF0ZShkZWxheV9lc3RpbWF0ZSwgY29udmVyZ2VkX2ZpbHRlcl9m
cmVxdWVuY3lfcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgIGltcHVsc2VfcmVzcG9uc2UsICpy
ZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZmZXIoKSwKICAgICAgICAgICAgICAgICAg
RTJfbWFpbiwgWTIsIG91dHB1dCwgeSk7CkBAIC0xMjgsNyArMTI4LDcgQEAgVEVTVChBZWNTdGF0
ZSwgTm9ybWFsVXNhZ2UpIHsKICAgRTJfbWFpbi5maWxsKDEuZiAqIDEwMDAwLmYgKiAxMDAwMC5m
KTsKICAgWTIuZmlsbCgxMC5mICogRTJfbWFpblswXSk7CiAgIGZvciAoc2l6ZV90IGsgPSAwOyBr
IDwgMTAwMDsgKytrKSB7Ci0gICAgb3V0cHV0LlVwZGF0ZVBvd2Vycyh5KTsKKyAgICBvdXRwdXQu
Q29tcHV0ZU1ldHJpY3MoeSk7CiAgICAgc3RhdGUuVXBkYXRlKGRlbGF5X2VzdGltYXRlLCBjb252
ZXJnZWRfZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwKICAgICAgICAgICAgICAgICAgaW1wdWxz
ZV9yZXNwb25zZSwgKnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJlbmRlckJ1ZmZlcigpLAogICAg
ICAgICAgICAgICAgICBFMl9tYWluLCBZMiwgb3V0cHV0LCB5KTsKQEAgLTE1Miw3ICsxNTIsNyBA
QCBURVNUKEFlY1N0YXRlLCBOb3JtYWxVc2FnZSkgewogICBFMl9tYWluLmZpbGwoMS5mICogMTAw
MDAuZiAqIDEwMDAwLmYpOwogICBZMi5maWxsKDUuZiAqIEUyX21haW5bMF0pOwogICBmb3IgKHNp
emVfdCBrID0gMDsgayA8IDEwMDA7ICsraykgewotICAgIG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7
CisgICAgb3V0cHV0LkNvbXB1dGVNZXRyaWNzKHkpOwogICAgIHN0YXRlLlVwZGF0ZShkZWxheV9l
c3RpbWF0ZSwgY29udmVyZ2VkX2ZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCiAgICAgICAgICAg
ICAgICAgIGltcHVsc2VfcmVzcG9uc2UsICpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJC
dWZmZXIoKSwKICAgICAgICAgICAgICAgICAgRTJfbWFpbiwgWTIsIG91dHB1dCwgeSk7CkBAIC0x
NzksNyArMTc5LDcgQEAgVEVTVChBZWNTdGF0ZSwgQ29udmVyZ2VkRmlsdGVyRGVsYXkpIHsKICAg
RWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnOwogICBBZWNTdGF0ZSBzdGF0ZShjb25maWcpOwog
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIo
Ci0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgUmVu
ZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIGFic2w6Om9wdGlvbmFsPERl
bGF5RXN0aW1hdGU+IGRlbGF5X2VzdGltYXRlOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVu
Z3RoQnkyUGx1czE+IEUyX21haW47CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4gWTI7CkBAIC0yMDgsNyArMjA4LDcgQEAgVEVTVChBZWNTdGF0ZSwgQ29udmVyZ2VkRmls
dGVyRGVsYXkpIHsKICAgICBpbXB1bHNlX3Jlc3BvbnNlW2sgKiBrQmxvY2tTaXplICsgMV0gPSAx
LmY7CiAKICAgICBzdGF0ZS5IYW5kbGVFY2hvUGF0aENoYW5nZShlY2hvX3BhdGhfdmFyaWFiaWxp
dHkpOwotICAgIG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7CisgICAgb3V0cHV0LkNvbXB1dGVNZXRy
aWNzKHkpOwogICAgIHN0YXRlLlVwZGF0ZShkZWxheV9lc3RpbWF0ZSwgZnJlcXVlbmN5X3Jlc3Bv
bnNlLCBpbXB1bHNlX3Jlc3BvbnNlLAogICAgICAgICAgICAgICAgICAqcmVuZGVyX2RlbGF5X2J1
ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksIEUyX21haW4sIFkyLCBvdXRwdXQsCiAgICAgICAgICAg
ICAgICAgIHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21l
dHJpY3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NWY1NmE1ZGNlNmZhYjEzNzFmMjQ0ZTg5ZTJjMDI1ZjdhNDQwYzk4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJpY3MuY2MKQEAg
LTAsMCArMSwxMjEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJpY3MuaCIKKworI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxsaW1pdHM+CisKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgInN5c3RlbV93
cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3Bh
Y2UgeworCitib29sIFRpbWVUb1JlcG9ydE1ldHJpY3MoaW50IGZyYW1lc19zaW5jZV9sYXN0X3Jl
cG9ydCkgeworICBjb25zdGV4cHIgaW50IGtOdW1GcmFtZXNQZXJTZWNvbmQgPSAxMDA7CisgIGNv
bnN0ZXhwciBpbnQga1JlcG9ydGluZ0ludGVydmFsRnJhbWVzID0gMTAgKiBrTnVtRnJhbWVzUGVy
U2Vjb25kOworICByZXR1cm4gZnJhbWVzX3NpbmNlX2xhc3RfcmVwb3J0ID09IGtSZXBvcnRpbmdJ
bnRlcnZhbEZyYW1lczsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK0FwaUNhbGxKaXR0ZXJNZXRy
aWNzOjpKaXR0ZXI6OkppdHRlcigpCisgICAgOiBtYXhfKDApLCBtaW5fKHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCkpIHt9CisKK3ZvaWQgQXBpQ2FsbEppdHRlck1ldHJpY3M6OkppdHRl
cjo6VXBkYXRlKGludCBudW1fYXBpX2NhbGxzX2luX2Ffcm93KSB7CisgIG1pbl8gPSBzdGQ6Om1p
bihtaW5fLCBudW1fYXBpX2NhbGxzX2luX2Ffcm93KTsKKyAgbWF4XyA9IHN0ZDo6bWF4KG1heF8s
IG51bV9hcGlfY2FsbHNfaW5fYV9yb3cpOworfQorCit2b2lkIEFwaUNhbGxKaXR0ZXJNZXRyaWNz
OjpKaXR0ZXI6OlJlc2V0KCkgeworICBtaW5fID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+Ojpt
YXgoKTsKKyAgbWF4XyA9IDA7Cit9CisKK3ZvaWQgQXBpQ2FsbEppdHRlck1ldHJpY3M6OlJlc2V0
KCkgeworICByZW5kZXJfaml0dGVyXy5SZXNldCgpOworICBjYXB0dXJlX2ppdHRlcl8uUmVzZXQo
KTsKKyAgbnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPSAwOworICBmcmFtZXNfc2luY2VfbGFzdF9y
ZXBvcnRfID0gMDsKKyAgbGFzdF9jYWxsX3dhc19yZW5kZXJfID0gZmFsc2U7CisgIHByb3Blcl9j
YWxsX29ic2VydmVkXyA9IGZhbHNlOworfQorCit2b2lkIEFwaUNhbGxKaXR0ZXJNZXRyaWNzOjpS
ZXBvcnRSZW5kZXJDYWxsKCkgeworICBpZiAoIWxhc3RfY2FsbF93YXNfcmVuZGVyXykgeworICAg
IC8vIElmIHRoZSBwcmV2aW91cyBjYWxsIHdhcyBhIGNhcHR1cmUgYW5kIGEgcHJvcGVyIGNhbGwg
aGFzIGJlZW4gb2JzZXJ2ZWQKKyAgICAvLyAoY29udGFpbmluZyBib3RoIHJlbmRlciBhbmQgY2Fw
dHVyZSBkYXRhKSwgc3RvcmluZyB0aGUgbGFzdCBudW1iZXIgb2YKKyAgICAvLyBjYXB0dXJlIGNh
bGxzIGludG8gdGhlIG1ldHJpY3MuCisgICAgaWYgKHByb3Blcl9jYWxsX29ic2VydmVkXykgewor
ICAgICAgY2FwdHVyZV9qaXR0ZXJfLlVwZGF0ZShudW1fYXBpX2NhbGxzX2luX2Ffcm93Xyk7Cisg
ICAgfQorCisgICAgLy8gUmVzZXQgdGhlIGNhbGwgY291bnRlciB0byBzdGFydCBjb3VudGluZyBy
ZW5kZXIgY2FsbHMuCisgICAgbnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPSAwOworICB9CisgICsr
bnVtX2FwaV9jYWxsc19pbl9hX3Jvd187CisgIGxhc3RfY2FsbF93YXNfcmVuZGVyXyA9IHRydWU7
Cit9CisKK3ZvaWQgQXBpQ2FsbEppdHRlck1ldHJpY3M6OlJlcG9ydENhcHR1cmVDYWxsKCkgewor
ICBpZiAobGFzdF9jYWxsX3dhc19yZW5kZXJfKSB7CisgICAgLy8gSWYgdGhlIHByZXZpb3VzIGNh
bGwgd2FzIGEgcmVuZGVyIGFuZCBhIHByb3BlciBjYWxsIGhhcyBiZWVuIG9ic2VydmVkCisgICAg
Ly8gKGNvbnRhaW5pbmcgYm90aCByZW5kZXIgYW5kIGNhcHR1cmUgZGF0YSksIHN0b3JpbmcgdGhl
IGxhc3QgbnVtYmVyIG9mCisgICAgLy8gcmVuZGVyIGNhbGxzIGludG8gdGhlIG1ldHJpY3MuCisg
ICAgaWYgKHByb3Blcl9jYWxsX29ic2VydmVkXykgeworICAgICAgcmVuZGVyX2ppdHRlcl8uVXBk
YXRlKG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfKTsKKyAgICB9CisgICAgLy8gUmVzZXQgdGhlIGNh
bGwgY291bnRlciB0byBzdGFydCBjb3VudGluZyBjYXB0dXJlIGNhbGxzLgorICAgIG51bV9hcGlf
Y2FsbHNfaW5fYV9yb3dfID0gMDsKKworICAgIC8vIElmIHRoaXMgc3RhdGVtZW50IGlzIHJlYWNo
ZWQsIGF0IGxlYXN0IG9uZSByZW5kZXIgYW5kIG9uZSBjYXB0dXJlIGNhbGwKKyAgICAvLyBoYXZl
IGJlZW4gb2JzZXJ2ZWQuCisgICAgcHJvcGVyX2NhbGxfb2JzZXJ2ZWRfID0gdHJ1ZTsKKyAgfQor
ICArK251bV9hcGlfY2FsbHNfaW5fYV9yb3dfOworICBsYXN0X2NhbGxfd2FzX3JlbmRlcl8gPSBm
YWxzZTsKKworICAvLyBPbmx5IHJlcG9ydCBhbmQgdXBkYXRlIGppdHRlciBtZXRyaWNzIGZvciB3
aGVuIGEgcHJvcGVyIGNhbGwsIGNvbnRhaW5pbmcKKyAgLy8gYm90aCByZW5kZXIgYW5kIGNhcHR1
cmUgZGF0YSwgaGFzIGJlZW4gb2JzZXJ2ZWQuCisgIGlmIChwcm9wZXJfY2FsbF9vYnNlcnZlZF8g
JiYKKyAgICAgIFRpbWVUb1JlcG9ydE1ldHJpY3MoKytmcmFtZXNfc2luY2VfbGFzdF9yZXBvcnRf
KSkgeworICAgIC8vIFJlcG9ydCBqaXR0ZXIsIHdoZXJlIHRoZSBiYXNlIGJhc2ljIHVuaXQgaXMg
ZnJhbWVzLgorICAgIGNvbnN0ZXhwciBpbnQga01heEppdHRlclRvUmVwb3J0ID0gNTA7CisKKyAg
ICAvLyBSZXBvcnQgbWF4IGFuZCBtaW4gaml0dGVyIGZvciByZW5kZXIgYW5kIGNhcHR1cmUsIGlu
IHVuaXRzIG9mIDIwIG1zLgorICAgIFJUQ19ISVNUT0dSQU1fQ09VTlRTX0xJTkVBUigKKyAgICAg
ICAgIldlYlJUQy5BdWRpby5FY2hvQ2FuY2VsbGVyLk1heFJlbmRlckppdHRlciIsCisgICAgICAg
IHN0ZDo6bWluKGtNYXhKaXR0ZXJUb1JlcG9ydCwgcmVuZGVyX2ppdHRlcigpLm1heCgpKSwgMSwK
KyAgICAgICAga01heEppdHRlclRvUmVwb3J0LCBrTWF4Sml0dGVyVG9SZXBvcnQpOworICAgIFJU
Q19ISVNUT0dSQU1fQ09VTlRTX0xJTkVBUigKKyAgICAgICAgIldlYlJUQy5BdWRpby5FY2hvQ2Fu
Y2VsbGVyLk1pblJlbmRlckppdHRlciIsCisgICAgICAgIHN0ZDo6bWluKGtNYXhKaXR0ZXJUb1Jl
cG9ydCwgcmVuZGVyX2ppdHRlcigpLm1pbigpKSwgMSwKKyAgICAgICAga01heEppdHRlclRvUmVw
b3J0LCBrTWF4Sml0dGVyVG9SZXBvcnQpOworCisgICAgUlRDX0hJU1RPR1JBTV9DT1VOVFNfTElO
RUFSKAorICAgICAgICAiV2ViUlRDLkF1ZGlvLkVjaG9DYW5jZWxsZXIuTWF4Q2FwdHVyZUppdHRl
ciIsCisgICAgICAgIHN0ZDo6bWluKGtNYXhKaXR0ZXJUb1JlcG9ydCwgY2FwdHVyZV9qaXR0ZXIo
KS5tYXgoKSksIDEsCisgICAgICAgIGtNYXhKaXR0ZXJUb1JlcG9ydCwga01heEppdHRlclRvUmVw
b3J0KTsKKyAgICBSVENfSElTVE9HUkFNX0NPVU5UU19MSU5FQVIoCisgICAgICAgICJXZWJSVEMu
QXVkaW8uRWNob0NhbmNlbGxlci5NaW5DYXB0dXJlSml0dGVyIiwKKyAgICAgICAgc3RkOjptaW4o
a01heEppdHRlclRvUmVwb3J0LCBjYXB0dXJlX2ppdHRlcigpLm1pbigpKSwgMSwKKyAgICAgICAg
a01heEppdHRlclRvUmVwb3J0LCBrTWF4Sml0dGVyVG9SZXBvcnQpOworCisgICAgZnJhbWVzX3Np
bmNlX2xhc3RfcmVwb3J0XyA9IDA7CisgICAgUmVzZXQoKTsKKyAgfQorfQorCitib29sIEFwaUNh
bGxKaXR0ZXJNZXRyaWNzOjpXaWxsUmVwb3J0TWV0cmljc0F0TmV4dENhcHR1cmUoKSBjb25zdCB7
CisgIHJldHVybiBUaW1lVG9SZXBvcnRNZXRyaWNzKGZyYW1lc19zaW5jZV9sYXN0X3JlcG9ydF8g
KyAxKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxs
X2ppdHRlcl9tZXRyaWNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQxZmE4MmU5MzI0NzA3MjkyZTg3ZWUyZjM3
NWNmODVlNzE3ZjNkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxs
X2ppdHRlcl9tZXRyaWNzLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMp
IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKKyNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQVBJX0NBTExfSklUVEVS
X01FVFJJQ1NfSF8KKyNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQVBJX0NB
TExfSklUVEVSX01FVFJJQ1NfSF8KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFN0b3JlcyBk
YXRhIGZvciByZXBvcnRpbmcgbWV0cmljcyBvbiB0aGUgQVBJIGNhbGwgaml0dGVyLgorY2xhc3Mg
QXBpQ2FsbEppdHRlck1ldHJpY3MgeworIHB1YmxpYzoKKyAgY2xhc3MgSml0dGVyIHsKKyAgIHB1
YmxpYzoKKyAgICBKaXR0ZXIoKTsKKyAgICB2b2lkIFVwZGF0ZShpbnQgbnVtX2FwaV9jYWxsc19p
bl9hX3Jvdyk7CisgICAgdm9pZCBSZXNldCgpOworCisgICAgaW50IG1pbigpIGNvbnN0IHsgcmV0
dXJuIG1pbl87IH0KKyAgICBpbnQgbWF4KCkgY29uc3QgeyByZXR1cm4gbWF4XzsgfQorCisgICBw
cml2YXRlOgorICAgIGludCBtYXhfOworICAgIGludCBtaW5fOworICB9OworCisgIEFwaUNhbGxK
aXR0ZXJNZXRyaWNzKCkgeyBSZXNldCgpOyB9CisKKyAgLy8gVXBkYXRlIG1ldHJpY3MgZm9yIHJl
bmRlciBBUEkgY2FsbC4KKyAgdm9pZCBSZXBvcnRSZW5kZXJDYWxsKCk7CisKKyAgLy8gVXBkYXRl
IGFuZCBwZXJpb2RpY2FsbHkgcmVwb3J0IG1ldHJpY3MgZm9yIGNhcHR1cmUgQVBJIGNhbGwuCisg
IHZvaWQgUmVwb3J0Q2FwdHVyZUNhbGwoKTsKKworICAvLyBNZXRob2RzIHVzZWQgb25seSBmb3Ig
dGVzdGluZy4KKyAgY29uc3QgSml0dGVyJiByZW5kZXJfaml0dGVyKCkgY29uc3QgeyByZXR1cm4g
cmVuZGVyX2ppdHRlcl87IH0KKyAgY29uc3QgSml0dGVyJiBjYXB0dXJlX2ppdHRlcigpIGNvbnN0
IHsgcmV0dXJuIGNhcHR1cmVfaml0dGVyXzsgfQorICBib29sIFdpbGxSZXBvcnRNZXRyaWNzQXRO
ZXh0Q2FwdHVyZSgpIGNvbnN0OworCisgcHJpdmF0ZToKKyAgdm9pZCBSZXNldCgpOworCisgIEpp
dHRlciByZW5kZXJfaml0dGVyXzsKKyAgSml0dGVyIGNhcHR1cmVfaml0dGVyXzsKKworICBpbnQg
bnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPSAwOworICBpbnQgZnJhbWVzX3NpbmNlX2xhc3RfcmVw
b3J0XyA9IDA7CisgIGJvb2wgbGFzdF9jYWxsX3dhc19yZW5kZXJfID0gZmFsc2U7CisgIGJvb2wg
cHJvcGVyX2NhbGxfb2JzZXJ2ZWRfID0gZmFsc2U7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQVBJX0NBTExf
SklUVEVSX01FVFJJQ1NfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxsX2pp
dHRlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYXBpX2NhbGxfaml0dGVy
X21ldHJpY3NfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY2MDhhYTNlMTA5M2Y5N2JjMzcwZGM5
YWE2YjkxYmJmZjQ5MzNkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9j
YWxsX2ppdHRlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICog
IENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2FwaV9jYWxsX2ppdHRlcl9tZXRyaWNzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKworI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKwor
bmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFZlcmlmeSBjb25zdGFudCBqaXR0ZXIuCitURVNUKEFw
aUNhbGxKaXR0ZXJNZXRyaWNzLCBDb25zdGFudEppdHRlcikgeworICBmb3IgKGludCBqaXR0ZXIg
PSAxOyBqaXR0ZXIgPCAyMDsgKytqaXR0ZXIpIHsKKyAgICBBcGlDYWxsSml0dGVyTWV0cmljcyBt
ZXRyaWNzOworICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgMzAgKiBrTnVtQmxvY2tzUGVyU2Vj
b25kOyArK2spIHsKKyAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgaml0dGVyOyArK2opIHsKKyAg
ICAgICAgbWV0cmljcy5SZXBvcnRSZW5kZXJDYWxsKCk7CisgICAgICB9CisKKyAgICAgIGZvciAo
aW50IGogPSAwOyBqIDwgaml0dGVyOyArK2opIHsKKyAgICAgICAgbWV0cmljcy5SZXBvcnRDYXB0
dXJlQ2FsbCgpOworCisgICAgICAgIGlmIChtZXRyaWNzLldpbGxSZXBvcnRNZXRyaWNzQXROZXh0
Q2FwdHVyZSgpKSB7CisgICAgICAgICAgRVhQRUNUX0VRKGppdHRlciwgbWV0cmljcy5yZW5kZXJf
aml0dGVyKCkubWluKCkpOworICAgICAgICAgIEVYUEVDVF9FUShqaXR0ZXIsIG1ldHJpY3MucmVu
ZGVyX2ppdHRlcigpLm1heCgpKTsKKyAgICAgICAgICBFWFBFQ1RfRVEoaml0dGVyLCBtZXRyaWNz
LmNhcHR1cmVfaml0dGVyKCkubWluKCkpOworICAgICAgICAgIEVYUEVDVF9FUShqaXR0ZXIsIG1l
dHJpY3MuY2FwdHVyZV9qaXR0ZXIoKS5tYXgoKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisgIH0KK30KKworLy8gVmVyaWZ5IHBlYWt5IGppdHRlciBmb3IgdGhlIHJlbmRlci4KK1RFU1Qo
QXBpQ2FsbEppdHRlck1ldHJpY3MsIEppdHRlclBlYWtSZW5kZXIpIHsKKyAgY29uc3RleHByIGlu
dCBrTWluSml0dGVyID0gMjsKKyAgY29uc3RleHByIGludCBrSml0dGVyUGVhayA9IDEwOworICBj
b25zdGV4cHIgaW50IGtQZWFrSW50ZXJ2YWwgPSAxMDA7CisKKyAgQXBpQ2FsbEppdHRlck1ldHJp
Y3MgbWV0cmljczsKKyAgaW50IHJlbmRlcl9zdXJwbHVzID0gMDsKKworICBmb3IgKHNpemVfdCBr
ID0gMDsgayA8IDMwICoga051bUJsb2Nrc1BlclNlY29uZDsgKytrKSB7CisgICAgY29uc3QgaW50
IG51bV9yZW5kZXJfY2FsbHMgPQorICAgICAgICBrICUga1BlYWtJbnRlcnZhbCA9PSAwID8ga0pp
dHRlclBlYWsgOiBrTWluSml0dGVyOworICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtX3JlbmRl
cl9jYWxsczsgKytqKSB7CisgICAgICBtZXRyaWNzLlJlcG9ydFJlbmRlckNhbGwoKTsKKyAgICAg
ICsrcmVuZGVyX3N1cnBsdXM7CisgICAgfQorCisgICAgQVNTRVJUX0xFKGtNaW5KaXR0ZXIsIHJl
bmRlcl9zdXJwbHVzKTsKKyAgICBjb25zdCBpbnQgbnVtX2NhcHR1cmVfY2FsbHMgPQorICAgICAg
ICByZW5kZXJfc3VycGx1cyA9PSBrTWluSml0dGVyID8ga01pbkppdHRlciA6IGtNaW5KaXR0ZXIg
KyAxOworICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtX2NhcHR1cmVfY2FsbHM7ICsraikgewor
ICAgICAgbWV0cmljcy5SZXBvcnRDYXB0dXJlQ2FsbCgpOworCisgICAgICBpZiAobWV0cmljcy5X
aWxsUmVwb3J0TWV0cmljc0F0TmV4dENhcHR1cmUoKSkgeworICAgICAgICBFWFBFQ1RfRVEoa01p
bkppdHRlciwgbWV0cmljcy5yZW5kZXJfaml0dGVyKCkubWluKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoa0ppdHRlclBlYWssIG1ldHJpY3MucmVuZGVyX2ppdHRlcigpLm1heCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKGtNaW5KaXR0ZXIsIG1ldHJpY3MuY2FwdHVyZV9qaXR0ZXIoKS5taW4oKSk7Cisg
ICAgICAgIEVYUEVDVF9FUShrTWluSml0dGVyICsgMSwgbWV0cmljcy5jYXB0dXJlX2ppdHRlcigp
Lm1heCgpKTsKKyAgICAgIH0KKyAgICAgIC0tcmVuZGVyX3N1cnBsdXM7CisgICAgfQorICB9Cit9
CisKKy8vIFZlcmlmeSBwZWFreSBqaXR0ZXIgZm9yIHRoZSBjYXB0dXJlLgorVEVTVChBcGlDYWxs
Sml0dGVyTWV0cmljcywgSml0dGVyUGVha0NhcHR1cmUpIHsKKyAgY29uc3RleHByIGludCBrTWlu
Sml0dGVyID0gMjsKKyAgY29uc3RleHByIGludCBrSml0dGVyUGVhayA9IDEwOworICBjb25zdGV4
cHIgaW50IGtQZWFrSW50ZXJ2YWwgPSAxMDA7CisKKyAgQXBpQ2FsbEppdHRlck1ldHJpY3MgbWV0
cmljczsKKyAgaW50IGNhcHR1cmVfc3VycGx1cyA9IGtNaW5KaXR0ZXI7CisKKyAgZm9yIChzaXpl
X3QgayA9IDA7IGsgPCAzMCAqIGtOdW1CbG9ja3NQZXJTZWNvbmQ7ICsraykgeworICAgIEFTU0VS
VF9MRShrTWluSml0dGVyLCBjYXB0dXJlX3N1cnBsdXMpOworICAgIGNvbnN0IGludCBudW1fcmVu
ZGVyX2NhbGxzID0KKyAgICAgICAgY2FwdHVyZV9zdXJwbHVzID09IGtNaW5KaXR0ZXIgPyBrTWlu
Sml0dGVyIDoga01pbkppdHRlciArIDE7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1fcmVu
ZGVyX2NhbGxzOyArK2opIHsKKyAgICAgIG1ldHJpY3MuUmVwb3J0UmVuZGVyQ2FsbCgpOworICAg
ICAgLS1jYXB0dXJlX3N1cnBsdXM7CisgICAgfQorCisgICAgY29uc3QgaW50IG51bV9jYXB0dXJl
X2NhbGxzID0KKyAgICAgICAgayAlIGtQZWFrSW50ZXJ2YWwgPT0gMCA/IGtKaXR0ZXJQZWFrIDog
a01pbkppdHRlcjsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bV9jYXB0dXJlX2NhbGxzOyAr
K2opIHsKKyAgICAgIG1ldHJpY3MuUmVwb3J0Q2FwdHVyZUNhbGwoKTsKKworICAgICAgaWYgKG1l
dHJpY3MuV2lsbFJlcG9ydE1ldHJpY3NBdE5leHRDYXB0dXJlKCkpIHsKKyAgICAgICAgRVhQRUNU
X0VRKGtNaW5KaXR0ZXIsIG1ldHJpY3MucmVuZGVyX2ppdHRlcigpLm1pbigpKTsKKyAgICAgICAg
RVhQRUNUX0VRKGtNaW5KaXR0ZXIgKyAxLCBtZXRyaWNzLnJlbmRlcl9qaXR0ZXIoKS5tYXgoKSk7
CisgICAgICAgIEVYUEVDVF9FUShrTWluSml0dGVyLCBtZXRyaWNzLmNhcHR1cmVfaml0dGVyKCku
bWluKCkpOworICAgICAgICBFWFBFQ1RfRVEoa0ppdHRlclBlYWssIG1ldHJpY3MuY2FwdHVyZV9q
aXR0ZXIoKS5tYXgoKSk7CisgICAgICB9CisgICAgICArK2NhcHR1cmVfc3VycGx1czsKKyAgICB9
CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYmxvY2tfZGVsYXlfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19kZWxheV9i
dWZmZXIuaAppbmRleCA2ZTVmZDVjMDlkMGQ0NmUyNTA4MmQ1NjgwNWFjMmRjZjFlYjRkMDg4Li42
MjRlOTEzOWEzODg4YzkwYTA4NmQyNWZjMjU1YTE2NmVlMzg5Y2VkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9ibG9ja19kZWxheV9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9j
a19kZWxheV9idWZmZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfQUVDM19CTE9DS19ERUxBWV9CVUZGRVJfSF8KICNkZWZpbmUgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0FFQzNfQkxPQ0tfREVMQVlfQlVGRkVSX0hfCiAKKyNpbmNsdWRlIDxz
dGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9j
a19mcmFtZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19mcmFtZXIuY2MKaW5kZXggMzE2MDYy
NDUxNWFiYWU5OWM5MjQ4NmI3Y2UzMDhjZjgyOGMzODJkYi4uY2E3NjY3YzI0ZjQ2MjZmMzRjYjU5
NzhlMjY3MTAzOWM5ZDM3ZDc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfZnJh
bWVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX2ZyYW1lci5jYwpAQCAtMTIsNiArMTIs
NyBAQAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9j
a19wcm9jZXNzb3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3IuY2MKaW5kZXgg
MWJiNjk1ODRjYzNmYmY3OTMyYzFhNjcyMjE3ZDFmNWUwZDU2OWE3OC4uZWYyNWU3YzIzYmM3NTRl
ZGNjNjA0ODg4YWEwM2M2ZjJjOWI3MWZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxv
Y2tfcHJvY2Vzc29yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5jYwpA
QCAtOSwxMiArOSwxNiBAQAogICovCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYmxvY2tfcHJvY2Vzc29yLmgiCiAKKyNpbmNsdWRlIDx1dGlsaXR5PgorCiAjaW5jbHVk
ZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yX21ldHJpY3MuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kZWxheV9lc3RpbWF0ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF92YXJpYWJpbGl0eS5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCiAKQEAgLTEwNCw3ICsxMDgsNyBAQCB2b2lkIEJsb2NrUHJvY2Vzc29y
SW1wbDo6UHJvY2Vzc0NhcHR1cmUoCiAgICAgaWYgKCFjYXB0dXJlX3Byb3Blcmx5X3N0YXJ0ZWRf
KSB7CiAgICAgICBjYXB0dXJlX3Byb3Blcmx5X3N0YXJ0ZWRfID0gdHJ1ZTsKICAgICAgIHJlbmRl
cl9idWZmZXJfLT5SZXNldCgpOwotICAgICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0KCk7Cisg
ICAgICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQodHJ1ZSk7CiAgICAgfQogICB9IGVsc2Ugewog
ICAgIC8vIElmIG5vIHJlbmRlciBkYXRhIGhhcyB5ZXQgYXJyaXZlZCwgZG8gbm90IHByb2Nlc3Mg
dGhlIGNhcHR1cmUgc2lnbmFsLgpAQCAtMTE5LDcgKzEyMyw3IEBAIHZvaWQgQmxvY2tQcm9jZXNz
b3JJbXBsOjpQcm9jZXNzQ2FwdHVyZSgKICAgICAgIHJlbmRlcl9wcm9wZXJseV9zdGFydGVkXykg
ewogICAgIGVjaG9fcGF0aF92YXJpYWJpbGl0eS5kZWxheV9jaGFuZ2UgPQogICAgICAgICBFY2hv
UGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6OmtCdWZmZXJGbHVzaDsKLSAgICBkZWxh
eV9jb250cm9sbGVyXy0+UmVzZXQoKTsKKyAgICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQodHJ1
ZSk7CiAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVzZXQgZHVlIHRvIHJlbmRlciBidWZm
ZXIgb3ZlcnJ1biBhdCBibG9jayAgIgogICAgICAgICAgICAgICAgICAgICAgICAgPDwgY2FwdHVy
ZV9jYWxsX2NvdW50ZXJfOwogICB9CkBAIC0xMzUsMTEgKzEzOSwxMSBAQCB2b2lkIEJsb2NrUHJv
Y2Vzc29ySW1wbDo6UHJvY2Vzc0NhcHR1cmUoCiAgICAgICAgIGVzdGltYXRlZF9kZWxheV8tPnF1
YWxpdHkgPT0gRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a1JlZmluZWQpIHsKICAgICAgIGVjaG9f
cGF0aF92YXJpYWJpbGl0eS5kZWxheV9jaGFuZ2UgPQogICAgICAgICAgIEVjaG9QYXRoVmFyaWFi
aWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6a0RlbGF5UmVzZXQ7Ci0gICAgICBkZWxheV9jb250cm9s
bGVyXy0+UmVzZXQoKTsKKyAgICAgIGRlbGF5X2NvbnRyb2xsZXJfLT5SZXNldCh0cnVlKTsKICAg
ICAgIGNhcHR1cmVfcHJvcGVybHlfc3RhcnRlZF8gPSBmYWxzZTsKICAgICAgIHJlbmRlcl9wcm9w
ZXJseV9zdGFydGVkXyA9IGZhbHNlOwogCi0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJS
ZXNldCBkdWUgdG8gcmVuZGVyIGJ1ZmZlciB1bmRlcnJydW4gYXQgYmxvY2sgIgorICAgICAgUlRD
X0xPRyhMU19XQVJOSU5HKSA8PCAiUmVzZXQgZHVlIHRvIHJlbmRlciBidWZmZXIgdW5kZXJydW4g
YXQgYmxvY2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjYXB0dXJlX2NhbGxfY291
bnRlcl87CiAgICAgfQogICB9IGVsc2UgaWYgKHJlbmRlcl9ldmVudF8gPT0gUmVuZGVyRGVsYXlC
dWZmZXI6OkJ1ZmZlcmluZ0V2ZW50OjprQXBpQ2FsbFNrZXcpIHsKQEAgLTE0Nyw3ICsxNTEsNyBA
QCB2b2lkIEJsb2NrUHJvY2Vzc29ySW1wbDo6UHJvY2Vzc0NhcHR1cmUoCiAgICAgLy8gZWNoby4K
ICAgICBlY2hvX3BhdGhfdmFyaWFiaWxpdHkuZGVsYXlfY2hhbmdlID0KICAgICAgICAgRWNob1Bh
dGhWYXJpYWJpbGl0eTo6RGVsYXlBZGp1c3RtZW50OjprRGVsYXlSZXNldDsKLSAgICBkZWxheV9j
b250cm9sbGVyXy0+UmVzZXQoKTsKKyAgICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQodHJ1ZSk7
CiAgICAgY2FwdHVyZV9wcm9wZXJseV9zdGFydGVkXyA9IGZhbHNlOwogICAgIHJlbmRlcl9wcm9w
ZXJseV9zdGFydGVkXyA9IGZhbHNlOwogICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlJlc2V0
IGR1ZSB0byByZW5kZXIgYnVmZmVyIGFwaSBza2V3IGF0IGJsb2NrICIKQEAgLTE4MCw3ICsxODQs
NyBAQCB2b2lkIEJsb2NrUHJvY2Vzc29ySW1wbDo6UHJvY2Vzc0NhcHR1cmUoCiAgICAgICBpZiAo
ZXN0aW1hdGVkX2RlbGF5Xy0+cXVhbGl0eSA9PSBEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprUmVm
aW5lZCkgewogICAgICAgICBlY2hvX3BhdGhfdmFyaWFiaWxpdHkuZGVsYXlfY2hhbmdlID0KICAg
ICAgICAgICAgIEVjaG9QYXRoVmFyaWFiaWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6a0RlbGF5UmVz
ZXQ7Ci0gICAgICAgIGRlbGF5X2NvbnRyb2xsZXJfLT5SZXNldCgpOworICAgICAgICBkZWxheV9j
b250cm9sbGVyXy0+UmVzZXQodHJ1ZSk7CiAgICAgICAgIHJlbmRlcl9idWZmZXJfLT5SZXNldCgp
OwogICAgICAgICBjYXB0dXJlX3Byb3Blcmx5X3N0YXJ0ZWRfID0gZmFsc2U7CiAgICAgICAgIHJl
bmRlcl9wcm9wZXJseV9zdGFydGVkXyA9IGZhbHNlOwpAQCAtMTkwLDYgKzE5NCw4IEBAIHZvaWQg
QmxvY2tQcm9jZXNzb3JJbXBsOjpQcm9jZXNzQ2FwdHVyZSgKICAgICB9CiAgIH0KIAorICBlY2hv
X3BhdGhfdmFyaWFiaWxpdHkuY2xvY2tfZHJpZnQgPSBkZWxheV9jb250cm9sbGVyXy0+SGFzQ2xv
Y2tkcmlmdCgpOworCiAgIC8vIFJlbW92ZSB0aGUgZWNobyBmcm9tIHRoZSBjYXB0dXJlIHNpZ25h
bC4KICAgZWNob19yZW1vdmVyXy0+UHJvY2Vzc0NhcHR1cmUoCiAgICAgICBlY2hvX3BhdGhfdmFy
aWFiaWxpdHksIGNhcHR1cmVfc2lnbmFsX3NhdHVyYXRpb24sIGVzdGltYXRlZF9kZWxheV8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3IuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2Jsb2NrX3Byb2Nlc3Nvci5oCmluZGV4IGEzOTY3ZWE3ZTRhNDFlNTc3MTQ0ZTljMjA2YjE1
ZjM4YTk4NGI3OWYuLjVmN2VjN2MxN2MzYzg2Yjc4OTJiMzBmM2IxY2I4NWZiMGUxZGI2NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5oCkBAIC0xMSw5ICsxMSwxMiBAQAogI2lmbmRlZiBNT0RV
TEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19CTE9DS19QUk9DRVNTT1JfSF8KICNkZWZpbmUgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQkxPQ0tfUFJPQ0VTU09SX0hfCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5j
bHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKKyNpbmNsdWRlICJhcGkv
YXVkaW8vZWNob19jb250cm9sLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvZWNob19yZW1vdmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgiCkBAIC0yMywxOSArMjYsMzMg
QEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyBDbGFzcyBmb3IgcGVyZm9ybWluZyBlY2hvIGNhbmNl
bGxhdGlvbiBvbiA2NCBzYW1wbGUgYmxvY2tzIG9mIGF1ZGlvIGRhdGEuCiBjbGFzcyBCbG9ja1By
b2Nlc3NvciB7CiAgcHVibGljOgorICAvLyBDcmVhdGUgYSBibG9jayBwcm9jZXNzb3Igd2l0aCB0
aGUgbGVnYWN5IHJlbmRlciBidWZmZXJpbmcuCiAgIHN0YXRpYyBCbG9ja1Byb2Nlc3NvciogQ3Jl
YXRlKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeik7CisgIC8vIENyZWF0ZSBhIGJsb2Nr
IHByb2Nlc3NvciB3aXRoIHRoZSBuZXcgcmVuZGVyIGJ1ZmZlcmluZy4KKyAgc3RhdGljIEJsb2Nr
UHJvY2Vzc29yKiBDcmVhdGUyKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHopOwogICAv
LyBPbmx5IHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgIHN0YXRpYyBCbG9ja1Byb2Nlc3Nv
ciogQ3JlYXRlKAogICAgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKICAg
ICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxh
eUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlcik7CisgIHN0YXRpYyBCbG9ja1Byb2Nlc3NvciogQ3JlYXRl
MigKKyAgICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisgICAgICBpbnQg
c2FtcGxlX3JhdGVfaHosCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+
IHJlbmRlcl9idWZmZXIpOwogICBzdGF0aWMgQmxvY2tQcm9jZXNzb3IqIENyZWF0ZSgKICAgICAg
IGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICBpbnQgc2FtcGxlX3Jh
dGVfaHosCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9i
dWZmZXIsCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPiBkZWxh
eV9jb250cm9sbGVyLAogICAgICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9SZW1vdmVyPiBlY2hvX3Jl
bW92ZXIpOworICBzdGF0aWMgQmxvY2tQcm9jZXNzb3IqIENyZWF0ZTIoCisgICAgICBjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgICAgaW50IHNhbXBsZV9yYXRlX2h6LAor
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyLAor
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29udHJv
bGxlciwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gZWNob19yZW1vdmVyKTsK
IAogICB2aXJ0dWFsIH5CbG9ja1Byb2Nlc3NvcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yMi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2Nr
X3Byb2Nlc3NvcjIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBiZDNlZTVjYTI5NTJjYTIyN2U0MWI2MWM0MDIw
NTYzNDBiMWQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nl
c3NvcjIuY2MKQEAgLTAsMCArMSwyNTYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
CisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworI2luY2x1
ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2lu
Y2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNs
dWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgorI2luY2x1ZGUgImFwaS9h
dWRpby9lY2hvX2NvbnRyb2wuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2Jsb2NrX3Byb2Nlc3Nvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvcl9tZXRyaWNzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvZGVsYXlfZXN0aW1hdGUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfdmFyaWFiaWxpdHkuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXIuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0
YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisKK25hbWVz
cGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHsKKworZW51bSBjbGFzcyBCbG9ja1Byb2Nlc3NvckFw
aUNhbGwgeyBrQ2FwdHVyZSwga1JlbmRlciB9OworCitjbGFzcyBCbG9ja1Byb2Nlc3NvckltcGwy
IGZpbmFsIDogcHVibGljIEJsb2NrUHJvY2Vzc29yIHsKKyBwdWJsaWM6CisgIEJsb2NrUHJvY2Vz
c29ySW1wbDIoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKKyAgICAgICAgICAg
ICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHosCisgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5
X2NvbnRyb2xsZXIsCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9S
ZW1vdmVyPiBlY2hvX3JlbW92ZXIpOworCisgIEJsb2NrUHJvY2Vzc29ySW1wbDIoKSA9IGRlbGV0
ZTsKKworICB+QmxvY2tQcm9jZXNzb3JJbXBsMigpIG92ZXJyaWRlOworCisgIHZvaWQgUHJvY2Vz
c0NhcHR1cmUoYm9vbCBlY2hvX3BhdGhfZ2Fpbl9jaGFuZ2UsCisgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBjYXB0dXJlX3NpZ25hbF9zYXR1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4qIGNhcHR1cmVfYmxvY2spIG92ZXJyaWRl
OworCisgIHZvaWQgQnVmZmVyUmVuZGVyKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZs
b2F0Pj4mIGJsb2NrKSBvdmVycmlkZTsKKworICB2b2lkIFVwZGF0ZUVjaG9MZWFrYWdlU3RhdHVz
KGJvb2wgbGVha2FnZV9kZXRlY3RlZCkgb3ZlcnJpZGU7CisKKyAgdm9pZCBHZXRNZXRyaWNzKEVj
aG9Db250cm9sOjpNZXRyaWNzKiBtZXRyaWNzKSBjb25zdCBvdmVycmlkZTsKKworICB2b2lkIFNl
dEF1ZGlvQnVmZmVyRGVsYXkoc2l6ZV90IGRlbGF5X21zKSBvdmVycmlkZTsKKworIHByaXZhdGU6
CisgIHN0YXRpYyBpbnQgaW5zdGFuY2VfY291bnRfOworICBzdGQ6OnVuaXF1ZV9wdHI8QXBtRGF0
YUR1bXBlcj4gZGF0YV9kdW1wZXJfOworICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25m
aWdfOworICBib29sIGNhcHR1cmVfcHJvcGVybHlfc3RhcnRlZF8gPSBmYWxzZTsKKyAgYm9vbCBy
ZW5kZXJfcHJvcGVybHlfc3RhcnRlZF8gPSBmYWxzZTsKKyAgY29uc3Qgc2l6ZV90IHNhbXBsZV9y
YXRlX2h6XzsKKyAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVm
ZmVyXzsKKyAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29u
dHJvbGxlcl87CisgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gZWNob19yZW1vdmVyXzsK
KyAgQmxvY2tQcm9jZXNzb3JNZXRyaWNzIG1ldHJpY3NfOworICBSZW5kZXJEZWxheUJ1ZmZlcjo6
QnVmZmVyaW5nRXZlbnQgcmVuZGVyX2V2ZW50XzsKKyAgc2l6ZV90IGNhcHR1cmVfY2FsbF9jb3Vu
dGVyXyA9IDA7CisgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IGVzdGltYXRlZF9kZWxh
eV87CisgIGFic2w6Om9wdGlvbmFsPGludD4gZWNob19yZW1vdmVyX2RlbGF5XzsKK307CisKK2lu
dCBCbG9ja1Byb2Nlc3NvckltcGwyOjppbnN0YW5jZV9jb3VudF8gPSAwOworCitCbG9ja1Byb2Nl
c3NvckltcGwyOjpCbG9ja1Byb2Nlc3NvckltcGwyKAorICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIz
Q29uZmlnJiBjb25maWcsCisgICAgaW50IHNhbXBsZV9yYXRlX2h6LAorICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlciwKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPiBkZWxheV9jb250cm9sbGVyLAorICAgIHN0ZDo6dW5p
cXVlX3B0cjxFY2hvUmVtb3Zlcj4gZWNob19yZW1vdmVyKQorICAgIDogZGF0YV9kdW1wZXJfKAor
ICAgICAgICAgIG5ldyBBcG1EYXRhRHVtcGVyKHJ0Yzo6QXRvbWljT3BzOjpJbmNyZW1lbnQoJmlu
c3RhbmNlX2NvdW50XykpKSwKKyAgICAgIGNvbmZpZ18oY29uZmlnKSwKKyAgICAgIHNhbXBsZV9y
YXRlX2h6XyhzYW1wbGVfcmF0ZV9oeiksCisgICAgICByZW5kZXJfYnVmZmVyXyhzdGQ6Om1vdmUo
cmVuZGVyX2J1ZmZlcikpLAorICAgICAgZGVsYXlfY29udHJvbGxlcl8oc3RkOjptb3ZlKGRlbGF5
X2NvbnRyb2xsZXIpKSwKKyAgICAgIGVjaG9fcmVtb3Zlcl8oc3RkOjptb3ZlKGVjaG9fcmVtb3Zl
cikpLAorICAgICAgcmVuZGVyX2V2ZW50XyhSZW5kZXJEZWxheUJ1ZmZlcjo6QnVmZmVyaW5nRXZl
bnQ6OmtOb25lKSB7CisgIFJUQ19EQ0hFQ0soVmFsaWRGdWxsQmFuZFJhdGUoc2FtcGxlX3JhdGVf
aHpfKSk7Cit9CisKK0Jsb2NrUHJvY2Vzc29ySW1wbDI6On5CbG9ja1Byb2Nlc3NvckltcGwyKCkg
PSBkZWZhdWx0OworCit2b2lkIEJsb2NrUHJvY2Vzc29ySW1wbDI6OlByb2Nlc3NDYXB0dXJlKAor
ICAgIGJvb2wgZWNob19wYXRoX2dhaW5fY2hhbmdlLAorICAgIGJvb2wgY2FwdHVyZV9zaWduYWxf
c2F0dXJhdGlvbiwKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+KiBjYXB0dXJl
X2Jsb2NrKSB7CisgIFJUQ19EQ0hFQ0soY2FwdHVyZV9ibG9jayk7CisgIFJUQ19EQ0hFQ0tfRVEo
TnVtQmFuZHNGb3JSYXRlKHNhbXBsZV9yYXRlX2h6XyksIGNhcHR1cmVfYmxvY2stPnNpemUoKSk7
CisgIFJUQ19EQ0hFQ0tfRVEoa0Jsb2NrU2l6ZSwgKCpjYXB0dXJlX2Jsb2NrKVswXS5zaXplKCkp
OworCisgIGNhcHR1cmVfY2FsbF9jb3VudGVyXysrOworCisgIGRhdGFfZHVtcGVyXy0+RHVtcFJh
dygiYWVjM19wcm9jZXNzYmxvY2tfY2FsbF9vcmRlciIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnQ+KEJsb2NrUHJvY2Vzc29yQXBpQ2FsbDo6a0NhcHR1cmUpKTsKKyAg
ZGF0YV9kdW1wZXJfLT5EdW1wV2F2KCJhZWMzX3Byb2Nlc3NibG9ja19jYXB0dXJlX2lucHV0Iiwg
a0Jsb2NrU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICYoKmNhcHR1cmVfYmxvY2spWzBd
WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgTG93ZXN0QmFuZFJhdGUoc2FtcGxlX3JhdGVf
aHpfKSwgMSk7CisKKyAgaWYgKHJlbmRlcl9wcm9wZXJseV9zdGFydGVkXykgeworICAgIGlmICgh
Y2FwdHVyZV9wcm9wZXJseV9zdGFydGVkXykgeworICAgICAgY2FwdHVyZV9wcm9wZXJseV9zdGFy
dGVkXyA9IHRydWU7CisgICAgICByZW5kZXJfYnVmZmVyXy0+UmVzZXQoKTsKKyAgICAgIGRlbGF5
X2NvbnRyb2xsZXJfLT5SZXNldCh0cnVlKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgLy8gSWYg
bm8gcmVuZGVyIGRhdGEgaGFzIHlldCBhcnJpdmVkLCBkbyBub3QgcHJvY2VzcyB0aGUgY2FwdHVy
ZSBzaWduYWwuCisgICAgcmV0dXJuOworICB9CisKKyAgRWNob1BhdGhWYXJpYWJpbGl0eSBlY2hv
X3BhdGhfdmFyaWFiaWxpdHkoCisgICAgICBlY2hvX3BhdGhfZ2Fpbl9jaGFuZ2UsIEVjaG9QYXRo
VmFyaWFiaWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6a05vbmUsCisgICAgICBmYWxzZSk7CisKKyAg
aWYgKHJlbmRlcl9ldmVudF8gPT0gUmVuZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50Ojpr
UmVuZGVyT3ZlcnJ1biAmJgorICAgICAgcmVuZGVyX3Byb3Blcmx5X3N0YXJ0ZWRfKSB7CisgICAg
ZWNob19wYXRoX3ZhcmlhYmlsaXR5LmRlbGF5X2NoYW5nZSA9CisgICAgICAgIEVjaG9QYXRoVmFy
aWFiaWxpdHk6OkRlbGF5QWRqdXN0bWVudDo6a0J1ZmZlckZsdXNoOworICAgIGRlbGF5X2NvbnRy
b2xsZXJfLT5SZXNldCh0cnVlKTsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJSZXNldCBk
dWUgdG8gcmVuZGVyIGJ1ZmZlciBvdmVycnVuIGF0IGJsb2NrICAiCisgICAgICAgICAgICAgICAg
ICAgICAgICA8PCBjYXB0dXJlX2NhbGxfY291bnRlcl87CisgIH0KKyAgcmVuZGVyX2V2ZW50XyA9
IFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVudDo6a05vbmU7CisKKyAgLy8gVXBkYXRl
IHRoZSByZW5kZXIgYnVmZmVycyB3aXRoIGFueSBuZXdseSBhcnJpdmVkIHJlbmRlciBibG9ja3Mg
YW5kIHByZXBhcmUKKyAgLy8gdGhlIHJlbmRlciBidWZmZXJzIGZvciByZWFkaW5nIHRoZSByZW5k
ZXIgZGF0YSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW50CisgIC8vIGNhcHR1cmUgYmxvY2su
CisgIFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVudCBidWZmZXJfZXZlbnQgPQorICAg
ICAgcmVuZGVyX2J1ZmZlcl8tPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpOworICAvLyBSZXNl
dCB0aGUgZGVsYXkgY29udHJvbGxlciBhdCByZW5kZXIgYnVmZmVyIHVuZGVycnVuLgorICBpZiAo
YnVmZmVyX2V2ZW50ID09IFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVudDo6a1JlbmRl
clVuZGVycnVuKSB7CisgICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0KGZhbHNlKTsKKyAgfQor
CisgIGRhdGFfZHVtcGVyXy0+RHVtcFdhdigiYWVjM19wcm9jZXNzYmxvY2tfY2FwdHVyZV9pbnB1
dDIiLCBrQmxvY2tTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgJigqY2FwdHVyZV9ibG9j
aylbMF1bMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBMb3dlc3RCYW5kUmF0ZShzYW1wbGVf
cmF0ZV9oel8pLCAxKTsKKworICAvLyBDb21wdXRlIGFuZCBhbmQgYXBwbHkgdGhlIHJlbmRlciBk
ZWxheSByZXF1aXJlZCB0byBhY2hpZXZlIHByb3BlciBzaWduYWwKKyAgLy8gYWxpZ25tZW50Lgor
ICBlc3RpbWF0ZWRfZGVsYXlfID0gZGVsYXlfY29udHJvbGxlcl8tPkdldERlbGF5KAorICAgICAg
cmVuZGVyX2J1ZmZlcl8tPkdldERvd25zYW1wbGVkUmVuZGVyQnVmZmVyKCksIHJlbmRlcl9idWZm
ZXJfLT5EZWxheSgpLAorICAgICAgZWNob19yZW1vdmVyX2RlbGF5XywgKCpjYXB0dXJlX2Jsb2Nr
KVswXSk7CisKKyAgaWYgKGVzdGltYXRlZF9kZWxheV8pIHsKKyAgICBib29sIGRlbGF5X2NoYW5n
ZSA9IHJlbmRlcl9idWZmZXJfLT5TZXREZWxheShlc3RpbWF0ZWRfZGVsYXlfLT5kZWxheSk7Cisg
ICAgaWYgKGRlbGF5X2NoYW5nZSkgeworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRGVs
YXkgY2hhbmdlZCB0byAiIDw8IGVzdGltYXRlZF9kZWxheV8tPmRlbGF5CisgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICIgYXQgYmxvY2sgIiA8PCBjYXB0dXJlX2NhbGxfY291bnRlcl87Cisg
ICAgICBlY2hvX3BhdGhfdmFyaWFiaWxpdHkuZGVsYXlfY2hhbmdlID0KKyAgICAgICAgICBFY2hv
UGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6OmtOZXdEZXRlY3RlZERlbGF5OworICAg
IH0KKyAgfQorCisgIGVjaG9fcGF0aF92YXJpYWJpbGl0eS5jbG9ja19kcmlmdCA9IGRlbGF5X2Nv
bnRyb2xsZXJfLT5IYXNDbG9ja2RyaWZ0KCk7CisKKyAgLy8gUmVtb3ZlIHRoZSBlY2hvIGZyb20g
dGhlIGNhcHR1cmUgc2lnbmFsLgorICBlY2hvX3JlbW92ZXJfLT5Qcm9jZXNzQ2FwdHVyZSgKKyAg
ICAgIGVjaG9fcGF0aF92YXJpYWJpbGl0eSwgY2FwdHVyZV9zaWduYWxfc2F0dXJhdGlvbiwgZXN0
aW1hdGVkX2RlbGF5XywKKyAgICAgIHJlbmRlcl9idWZmZXJfLT5HZXRSZW5kZXJCdWZmZXIoKSwg
Y2FwdHVyZV9ibG9jayk7CisKKyAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgcmVmaW5lZCBkZWxheSBl
c3RpbWF0ZSBoYXMgYmVlbiBvYnRhaW5lZCBmcm9tIHRoZSBlY2hvCisgIC8vIHJlbW92ZXIuCisg
IGVjaG9fcmVtb3Zlcl9kZWxheV8gPSBlY2hvX3JlbW92ZXJfLT5EZWxheSgpOworCisgIC8vIFVw
ZGF0ZSB0aGUgbWV0cmljcy4KKyAgbWV0cmljc18uVXBkYXRlQ2FwdHVyZShmYWxzZSk7Cit9CisK
K3ZvaWQgQmxvY2tQcm9jZXNzb3JJbXBsMjo6QnVmZmVyUmVuZGVyKAorICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4mIGJsb2NrKSB7CisgIFJUQ19EQ0hFQ0tfRVEoTnVt
QmFuZHNGb3JSYXRlKHNhbXBsZV9yYXRlX2h6XyksIGJsb2NrLnNpemUoKSk7CisgIFJUQ19EQ0hF
Q0tfRVEoa0Jsb2NrU2l6ZSwgYmxvY2tbMF0uc2l6ZSgpKTsKKyAgZGF0YV9kdW1wZXJfLT5EdW1w
UmF3KCJhZWMzX3Byb2Nlc3NibG9ja19jYWxsX29yZGVyIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludD4oQmxvY2tQcm9jZXNzb3JBcGlDYWxsOjprUmVuZGVyKSk7Cisg
IGRhdGFfZHVtcGVyXy0+RHVtcFdhdigiYWVjM19wcm9jZXNzYmxvY2tfcmVuZGVyX2lucHV0Iiwg
a0Jsb2NrU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZibG9ja1swXVswXSwgTG93ZXN0
QmFuZFJhdGUoc2FtcGxlX3JhdGVfaHpfKSwgMSk7CisgIGRhdGFfZHVtcGVyXy0+RHVtcFdhdigi
YWVjM19wcm9jZXNzYmxvY2tfcmVuZGVyX2lucHV0MiIsIGtCbG9ja1NpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAmYmxvY2tbMF1bMF0sIExvd2VzdEJhbmRSYXRlKHNhbXBsZV9yYXRlX2h6
XyksIDEpOworCisgIHJlbmRlcl9ldmVudF8gPSByZW5kZXJfYnVmZmVyXy0+SW5zZXJ0KGJsb2Nr
KTsKKworICBtZXRyaWNzXy5VcGRhdGVSZW5kZXIocmVuZGVyX2V2ZW50XyAhPQorICAgICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50OjprTm9uZSk7
CisKKyAgcmVuZGVyX3Byb3Blcmx5X3N0YXJ0ZWRfID0gdHJ1ZTsKKyAgZGVsYXlfY29udHJvbGxl
cl8tPkxvZ1JlbmRlckNhbGwoKTsKK30KKwordm9pZCBCbG9ja1Byb2Nlc3NvckltcGwyOjpVcGRh
dGVFY2hvTGVha2FnZVN0YXR1cyhib29sIGxlYWthZ2VfZGV0ZWN0ZWQpIHsKKyAgZWNob19yZW1v
dmVyXy0+VXBkYXRlRWNob0xlYWthZ2VTdGF0dXMobGVha2FnZV9kZXRlY3RlZCk7Cit9CisKK3Zv
aWQgQmxvY2tQcm9jZXNzb3JJbXBsMjo6R2V0TWV0cmljcyhFY2hvQ29udHJvbDo6TWV0cmljcyog
bWV0cmljcykgY29uc3QgeworICBlY2hvX3JlbW92ZXJfLT5HZXRNZXRyaWNzKG1ldHJpY3MpOwor
ICBjb25zdCBpbnQgYmxvY2tfc2l6ZV9tcyA9IHNhbXBsZV9yYXRlX2h6XyA9PSA4MDAwID8gOCA6
IDQ7CisgIGFic2w6Om9wdGlvbmFsPHNpemVfdD4gZGVsYXkgPSByZW5kZXJfYnVmZmVyXy0+RGVs
YXkoKTsKKyAgbWV0cmljcy0+ZGVsYXlfbXMgPSBkZWxheSA/IHN0YXRpY19jYXN0PGludD4oKmRl
bGF5KSAqIGJsb2NrX3NpemVfbXMgOiAwOworfQorCit2b2lkIEJsb2NrUHJvY2Vzc29ySW1wbDI6
OlNldEF1ZGlvQnVmZmVyRGVsYXkoc2l6ZV90IGRlbGF5X21zKSB7CisgIHJlbmRlcl9idWZmZXJf
LT5TZXRBdWRpb0J1ZmZlckRlbGF5KGRlbGF5X21zKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisK
K0Jsb2NrUHJvY2Vzc29yKiBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMihjb25zdCBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzYW1wbGVfcmF0ZV9oeikgeworICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlC
dWZmZXI+IHJlbmRlcl9idWZmZXIoCisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihj
b25maWcsIE51bUJhbmRzRm9yUmF0ZShzYW1wbGVfcmF0ZV9oeikpKTsKKyAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlcigKKyAgICAgIFJlbmRl
ckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlMihjb25maWcsIHNhbXBsZV9yYXRlX2h6KSk7CisgIHN0
ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gZWNob19yZW1vdmVyKAorICAgICAgRWNob1JlbW92
ZXI6OkNyZWF0ZShjb25maWcsIHNhbXBsZV9yYXRlX2h6KSk7CisgIHJldHVybiBDcmVhdGUyKGNv
bmZpZywgc2FtcGxlX3JhdGVfaHosIHN0ZDo6bW92ZShyZW5kZXJfYnVmZmVyKSwKKyAgICAgICAg
ICAgICAgICAgc3RkOjptb3ZlKGRlbGF5X2NvbnRyb2xsZXIpLCBzdGQ6Om1vdmUoZWNob19yZW1v
dmVyKSk7Cit9CisKK0Jsb2NrUHJvY2Vzc29yKiBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMigKKyAg
ICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgIGludCBzYW1wbGVfcmF0
ZV9oeiwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZm
ZXIpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29u
dHJvbGxlcigKKyAgICAgIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlMihjb25maWcsIHNh
bXBsZV9yYXRlX2h6KSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gZWNob19yZW1v
dmVyKAorICAgICAgRWNob1JlbW92ZXI6OkNyZWF0ZShjb25maWcsIHNhbXBsZV9yYXRlX2h6KSk7
CisgIHJldHVybiBDcmVhdGUyKGNvbmZpZywgc2FtcGxlX3JhdGVfaHosIHN0ZDo6bW92ZShyZW5k
ZXJfYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGRlbGF5X2NvbnRyb2xsZXIp
LCBzdGQ6Om1vdmUoZWNob19yZW1vdmVyKSk7Cit9CisKK0Jsb2NrUHJvY2Vzc29yKiBCbG9ja1By
b2Nlc3Nvcjo6Q3JlYXRlMigKKyAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmln
LAorICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVs
YXlCdWZmZXI+IHJlbmRlcl9idWZmZXIsCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5
Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlciwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RWNob1Jl
bW92ZXI+IGVjaG9fcmVtb3ZlcikgeworICByZXR1cm4gbmV3IEJsb2NrUHJvY2Vzc29ySW1wbDIo
CisgICAgICBjb25maWcsIHNhbXBsZV9yYXRlX2h6LCBzdGQ6Om1vdmUocmVuZGVyX2J1ZmZlciks
CisgICAgICBzdGQ6Om1vdmUoZGVsYXlfY29udHJvbGxlciksIHN0ZDo6bW92ZShlY2hvX3JlbW92
ZXIpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYmxvY2tfcHJvY2Vzc29yX21ldHJpY3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19w
cm9jZXNzb3JfbWV0cmljcy5jYwppbmRleCBjOGJkZGE3Mzg5OGVjMDYwMWQ1NjY5NzYxZjc3YjUx
NTE0MWY3YWMxLi5kZWFjMWZjZDIyMWEwNWU0MjBlNTFlYWRlMzczYjc3YjkwZTAyMDQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3JfbWV0cmljcy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3JfbWV0cmljcy5jYwpAQCAtMTEsNiArMTEsNyBA
QAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nv
cl9tZXRyaWNzLmgiCiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9h
ZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3JfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3JfdW5pdHRlc3QuY2MKaW5kZXggNzE0NTc4Njhi
MjRhZGJkYmNkNjIxYmNkYWFkM2YzMjNiOGZkYTk4Ni4uOGFiYTViNTY2MWU1ZDU5NGY2ZjY1YTI3
ODYwZTVhNTE5MmJmZmRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vz
c29yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvcl91bml0
dGVzdC5jYwpAQCAtMzcsNyArMzcsNyBAQCB1c2luZyB0ZXN0aW5nOjpfOwogLy8gbWV0aG9kcyBh
cmUgY2FsbGFibGUuCiB2b2lkIFJ1bkJhc2ljU2V0dXBBbmRBcGlDYWxsVGVzdChpbnQgc2FtcGxl
X3JhdGVfaHosIGludCBudW1faXRlcmF0aW9ucykgewogICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tQ
cm9jZXNzb3I+IGJsb2NrX3Byb2Nlc3NvcigKLSAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUo
RWNob0NhbmNlbGxlcjNDb25maWcoKSwgc2FtcGxlX3JhdGVfaHopKTsKKyAgICAgIEJsb2NrUHJv
Y2Vzc29yOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHNhbXBsZV9yYXRlX2h6KSk7
CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gYmxvY2soTnVtQmFuZHNGb3JSYXRl
KHNhbXBsZV9yYXRlX2h6KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMTAwMC5mKSk7CiAKQEAgLTUxLDcgKzUx
LDcgQEAgdm9pZCBSdW5CYXNpY1NldHVwQW5kQXBpQ2FsbFRlc3QoaW50IHNhbXBsZV9yYXRlX2h6
LCBpbnQgbnVtX2l0ZXJhdGlvbnMpIHsKICNpZiBSVENfRENIRUNLX0lTX09OICYmIEdURVNUX0hB
U19ERUFUSF9URVNUICYmICFkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQogdm9pZCBSdW5SZW5kZXJC
bG9ja1NpemVWZXJpZmljYXRpb25UZXN0KGludCBzYW1wbGVfcmF0ZV9oeikgewogICBzdGQ6OnVu
aXF1ZV9wdHI8QmxvY2tQcm9jZXNzb3I+IGJsb2NrX3Byb2Nlc3NvcigKLSAgICAgIEJsb2NrUHJv
Y2Vzc29yOjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgc2FtcGxlX3JhdGVfaHopKTsK
KyAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHNh
bXBsZV9yYXRlX2h6KSk7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gYmxvY2so
CiAgICAgICBOdW1CYW5kc0ZvclJhdGUoc2FtcGxlX3JhdGVfaHopLCBzdGQ6OnZlY3RvcjxmbG9h
dD4oa0Jsb2NrU2l6ZSAtIDEsIDAuZikpOwogCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUnVuUmVu
ZGVyQmxvY2tTaXplVmVyaWZpY2F0aW9uVGVzdChpbnQgc2FtcGxlX3JhdGVfaHopIHsKIAogdm9p
ZCBSdW5DYXB0dXJlQmxvY2tTaXplVmVyaWZpY2F0aW9uVGVzdChpbnQgc2FtcGxlX3JhdGVfaHop
IHsKICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3IoCi0g
ICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHNhbXBs
ZV9yYXRlX2h6KSk7CisgICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVy
M0NvbmZpZygpLCBzYW1wbGVfcmF0ZV9oeikpOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjxm
bG9hdD4+IGJsb2NrKAogICAgICAgTnVtQmFuZHNGb3JSYXRlKHNhbXBsZV9yYXRlX2h6KSwgc3Rk
Ojp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUgLSAxLCAwLmYpKTsKIApAQCAtNzIsNyArNzIsNyBA
QCB2b2lkIFJ1blJlbmRlck51bUJhbmRzVmVyaWZpY2F0aW9uVGVzdChpbnQgc2FtcGxlX3JhdGVf
aHopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE51bUJhbmRzRm9y
UmF0ZShzYW1wbGVfcmF0ZV9oeikgKyAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAxOwogICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tQcm9jZXNzb3I+IGJsb2NrX3Byb2Nl
c3NvcigKLSAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWco
KSwgc2FtcGxlX3JhdGVfaHopKTsKKyAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUyKEVjaG9D
YW5jZWxsZXIzQ29uZmlnKCksIHNhbXBsZV9yYXRlX2h6KSk7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6
dmVjdG9yPGZsb2F0Pj4gYmxvY2sod3JvbmdfbnVtX2JhbmRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXplLCAwLmYp
KTsKIApAQCAtODQsNyArODQsNyBAQCB2b2lkIFJ1bkNhcHR1cmVOdW1CYW5kc1ZlcmlmaWNhdGlv
blRlc3QoaW50IHNhbXBsZV9yYXRlX2h6KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBOdW1CYW5kc0ZvclJhdGUoc2FtcGxlX3JhdGVfaHopICsgMQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMTsKICAgc3RkOjp1bmlxdWVfcHRyPEJsb2Nr
UHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3IoCi0gICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRl
KEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHNhbXBsZV9yYXRlX2h6KSk7CisgICAgICBCbG9ja1By
b2Nlc3Nvcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBzYW1wbGVfcmF0ZV9oeikp
OwogICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IGJsb2NrKHdyb25nX251bV9iYW5k
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rvcjxm
bG9hdD4oa0Jsb2NrU2l6ZSwgMC5mKSk7CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCBURVNUKEJsb2Nr
UHJvY2Vzc29yLCBESVNBQkxFRF9EZWxheUNvbnRyb2xsZXJJbnRlZ3JhdGlvbikgewogICAgIEVY
UEVDVF9DQUxMKCpyZW5kZXJfZGVsYXlfYnVmZmVyX21vY2ssIERlbGF5KCkpCiAgICAgICAgIC5U
aW1lcyhrTnVtQmxvY2tzICsgMSkKICAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigwKSk7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3IoQmxv
Y2tQcm9jZXNzb3I6OkNyZWF0ZSgKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tQcm9jZXNzb3I+
IGJsb2NrX3Byb2Nlc3NvcihCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMigKICAgICAgICAgRWNob0Nh
bmNlbGxlcjNDb25maWcoKSwgcmF0ZSwgc3RkOjptb3ZlKHJlbmRlcl9kZWxheV9idWZmZXJfbW9j
aykpKTsKIAogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gcmVuZGVyX2Jsb2Nr
KApAQCAtMTczLDcgKzE3Myw3IEBAIFRFU1QoQmxvY2tQcm9jZXNzb3IsIERJU0FCTEVEX1N1Ym1v
ZHVsZUludGVncmF0aW9uKSB7CiAgICAgRVhQRUNUX0NBTEwoKmVjaG9fcmVtb3Zlcl9tb2NrLCBV
cGRhdGVFY2hvTGVha2FnZVN0YXR1cyhfKSkKICAgICAgICAgLlRpbWVzKGtOdW1CbG9ja3MpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3IoQmxv
Y2tQcm9jZXNzb3I6OkNyZWF0ZSgKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tQcm9jZXNzb3I+
IGJsb2NrX3Byb2Nlc3NvcihCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMigKICAgICAgICAgRWNob0Nh
bmNlbGxlcjNDb25maWcoKSwgcmF0ZSwgc3RkOjptb3ZlKHJlbmRlcl9kZWxheV9idWZmZXJfbW9j
ayksCiAgICAgICAgIHN0ZDo6bW92ZShyZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tb2NrKSwgc3Rk
Ojptb3ZlKGVjaG9fcmVtb3Zlcl9tb2NrKSkpOwogCkBAIC0yMzksNyArMjM5LDcgQEAgVEVTVChC
bG9ja1Byb2Nlc3NvciwgVmVyaWZ5Q2FwdHVyZU51bUJhbmRzQ2hlY2spIHsKIC8vIFZlcmlmaWVy
cyB0aGF0IHRoZSB2ZXJpZmljYXRpb24gZm9yIG51bGwgUHJvY2Vzc0NhcHR1cmUgaW5wdXQgd29y
a3MuCiBURVNUKEJsb2NrUHJvY2Vzc29yLCBOdWxsUHJvY2Vzc0NhcHR1cmVQYXJhbWV0ZXIpIHsK
ICAgRVhQRUNUX0RFQVRIKHN0ZDo6dW5pcXVlX3B0cjxCbG9ja1Byb2Nlc3Nvcj4oCi0gICAgICAg
ICAgICAgICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygp
LCA4MDAwKSkKKyAgICAgICAgICAgICAgICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMihFY2hv
Q2FuY2VsbGVyM0NvbmZpZygpLCA4MDAwKSkKICAgICAgICAgICAgICAgICAgICAtPlByb2Nlc3ND
YXB0dXJlKGZhbHNlLCBmYWxzZSwgbnVsbHB0ciksCiAgICAgICAgICAgICAgICAiIik7CiB9CkBA
IC0yNDksNyArMjQ5LDcgQEAgVEVTVChCbG9ja1Byb2Nlc3NvciwgTnVsbFByb2Nlc3NDYXB0dXJl
UGFyYW1ldGVyKSB7CiAvLyB0ZXN0cyBvbiB0ZXN0IGJvdHMgaGFzIGJlZW4gZml4ZWQuCiBURVNU
KEJsb2NrUHJvY2Vzc29yLCBESVNBQkxFRF9Xcm9uZ1NhbXBsZVJhdGUpIHsKICAgRVhQRUNUX0RF
QVRIKHN0ZDo6dW5pcXVlX3B0cjxCbG9ja1Byb2Nlc3Nvcj4oCi0gICAgICAgICAgICAgICAgICAg
QmxvY2tQcm9jZXNzb3I6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCA4MDAxKSksCisg
ICAgICAgICAgICAgICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjND
b25maWcoKSwgODAwMSkpLAogICAgICAgICAgICAgICAgIiIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9jYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
Y2FzY2FkZWRfYmlxdWFkX2ZpbHRlci5jYwppbmRleCAzMzNkMjI2N2E0MThjZmIxNDE5YTZhMmE2
YmZlOGJiNTU0NjNkZmRlLi41ZGZkN2M1NGUyYjRlNGNmNzdhMjYwMDgzOWMzODI3MmQwNzNhOTNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2Nhc2NhZGVkX2JpcXVhZF9maWx0ZXIuY2MKQEAgLTksNiArOSw4
IEBACiAgKi8KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jYXNjYWRl
ZF9iaXF1YWRfZmlsdGVyLmgiCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKICNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9jYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jYXNj
YWRlZF9iaXF1YWRfZmlsdGVyLmgKaW5kZXggMWUwOWZhNmU1YTQyMDQ3NjFiYzI0MTFjYzliM2E4
N2E4YWVkOTk0OC4uMmEzYjZkNjVjNWEwZjc1MTBjMDYwZmYwOGViNWFiMDAwNWYwMDU3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2FzY2FkZWRfYmlxdWFkX2ZpbHRlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2Nhc2NhZGVkX2JpcXVhZF9maWx0ZXIuaApAQCAtMTEsNiArMTEsNyBAQAog
I2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19DQVNDQURFRF9CSVFVQURfRklM
VEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0NBU0NBREVEX0JJ
UVVBRF9GSUxURVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGNvbXBsZXg+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2Ry
aWZ0X2RldGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYzQ5Yjc5NWM0M2RhNTM2M2ZlMjg2NzE1ZjYxYjQ4MzcxMjNjNGQ3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5jYwpAQCAt
MCwwICsxLDYxIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9yLmgiCisKK25hbWVzcGFjZSB3
ZWJydGMgeworCitDbG9ja2RyaWZ0RGV0ZWN0b3I6OkNsb2NrZHJpZnREZXRlY3RvcigpCisgICAg
OiBsZXZlbF8oTGV2ZWw6OmtOb25lKSwgc3RhYmlsaXR5X2NvdW50ZXJfKDApIHsKKyAgZGVsYXlf
aGlzdG9yeV8uZmlsbCgwKTsKK30KKworQ2xvY2tkcmlmdERldGVjdG9yOjp+Q2xvY2tkcmlmdERl
dGVjdG9yKCkgPSBkZWZhdWx0OworCit2b2lkIENsb2NrZHJpZnREZXRlY3Rvcjo6VXBkYXRlKGlu
dCBkZWxheV9lc3RpbWF0ZSkgeworICBpZiAoZGVsYXlfZXN0aW1hdGUgPT0gZGVsYXlfaGlzdG9y
eV9bMF0pIHsKKyAgICAvLyBSZXNldCBjbG9ja2RyaWZ0IGxldmVsIGlmIGRlbGF5IGVzdGltYXRl
IGlzIHN0YWJsZSBmb3IgNzUwMCBibG9ja3MgKDMwCisgICAgLy8gc2Vjb25kcykuCisgICAgaWYg
KCsrc3RhYmlsaXR5X2NvdW50ZXJfID4gNzUwMCkKKyAgICAgIGxldmVsXyA9IExldmVsOjprTm9u
ZTsKKyAgICByZXR1cm47CisgIH0KKworICBzdGFiaWxpdHlfY291bnRlcl8gPSAwOworICBjb25z
dCBpbnQgZDEgPSBkZWxheV9oaXN0b3J5X1swXSAtIGRlbGF5X2VzdGltYXRlOworICBjb25zdCBp
bnQgZDIgPSBkZWxheV9oaXN0b3J5X1sxXSAtIGRlbGF5X2VzdGltYXRlOworICBjb25zdCBpbnQg
ZDMgPSBkZWxheV9oaXN0b3J5X1syXSAtIGRlbGF5X2VzdGltYXRlOworCisgIC8vIFBhdHRlcm5z
IHJlY29nbml6ZWQgYXMgcG9zaXRpdmUgY2xvY2tkcmlmdDoKKyAgLy8gW3gtM10sIHgtMiwgeC0x
LCB4LgorICAvLyBbeC0zXSwgeC0xLCB4LTIsIHguCisgIGNvbnN0IGJvb2wgcHJvYmFibGVfZHJp
ZnRfdXAgPQorICAgICAgKGQxID09IC0xICYmIGQyID09IC0yKSB8fCAoZDEgPT0gLTIgJiYgZDIg
PT0gLTEpOworICBjb25zdCBib29sIGRyaWZ0X3VwID0gcHJvYmFibGVfZHJpZnRfdXAgJiYgZDMg
PT0gLTM7CisKKyAgLy8gUGF0dGVybnMgcmVjb2duaXplZCBhcyBuZWdhdGl2ZSBjbG9ja2RyaWZ0
OgorICAvLyBbeCszXSwgeCsyLCB4KzEsIHguCisgIC8vIFt4KzNdLCB4KzEsIHgrMiwgeC4KKyAg
Y29uc3QgYm9vbCBwcm9iYWJsZV9kcmlmdF9kb3duID0gKGQxID09IDEgJiYgZDIgPT0gMikgfHwg
KGQxID09IDIgJiYgZDIgPT0gMSk7CisgIGNvbnN0IGJvb2wgZHJpZnRfZG93biA9IHByb2JhYmxl
X2RyaWZ0X2Rvd24gJiYgZDMgPT0gMzsKKworICAvLyBTZXQgY2xvY2tkcmlmdCBsZXZlbC4KKyAg
aWYgKGRyaWZ0X3VwIHx8IGRyaWZ0X2Rvd24pIHsKKyAgICBsZXZlbF8gPSBMZXZlbDo6a1Zlcmlm
aWVkOworICB9IGVsc2UgaWYgKChwcm9iYWJsZV9kcmlmdF91cCB8fCBwcm9iYWJsZV9kcmlmdF9k
b3duKSAmJgorICAgICAgICAgICAgIGxldmVsXyA9PSBMZXZlbDo6a05vbmUpIHsKKyAgICBsZXZl
bF8gPSBMZXZlbDo6a1Byb2JhYmxlOworICB9CisKKyAgLy8gU2hpZnQgZGVsYXkgaGlzdG9yeSBv
bmUgc3RlcC4KKyAgZGVsYXlfaGlzdG9yeV9bMl0gPSBkZWxheV9oaXN0b3J5X1sxXTsKKyAgZGVs
YXlfaGlzdG9yeV9bMV0gPSBkZWxheV9oaXN0b3J5X1swXTsKKyAgZGVsYXlfaGlzdG9yeV9bMF0g
PSBkZWxheV9lc3RpbWF0ZTsKK30KK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Ns
b2NrZHJpZnRfZGV0ZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjUyOGM5NDg5MjJhODBjZGI5NGZjMzY0
YTQwYTc4YThhYmIyZmU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tk
cmlmdF9kZXRlY3Rvci5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAy
MDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0NMT0NLRFJJRlRfREVURUNU
T1JfSF8KKyNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQ0xPQ0tEUklGVF9E
RVRFQ1RPUl9IXworCisjaW5jbHVkZSA8YXJyYXk+CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitj
bGFzcyBBcG1EYXRhRHVtcGVyOworc3RydWN0IERvd25zYW1wbGVkUmVuZGVyQnVmZmVyOworc3Ry
dWN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnOworCisvLyBEZXRlY3RzIGNsb2NrZHJpZnQgYnkgYW5h
bHl6aW5nIHRoZSBlc3RpbWF0ZWQgZGVsYXkuCitjbGFzcyBDbG9ja2RyaWZ0RGV0ZWN0b3Igewor
IHB1YmxpYzoKKyAgZW51bSBjbGFzcyBMZXZlbCB7IGtOb25lLCBrUHJvYmFibGUsIGtWZXJpZmll
ZCwga051bUNhdGVnb3JpZXMgfTsKKyAgQ2xvY2tkcmlmdERldGVjdG9yKCk7CisgIH5DbG9ja2Ry
aWZ0RGV0ZWN0b3IoKTsKKyAgdm9pZCBVcGRhdGUoaW50IGRlbGF5X2VzdGltYXRlKTsKKyAgTGV2
ZWwgQ2xvY2tkcmlmdExldmVsKCkgY29uc3QgeyByZXR1cm4gbGV2ZWxfOyB9CisKKyBwcml2YXRl
OgorICBzdGQ6OmFycmF5PGludCwgMz4gZGVsYXlfaGlzdG9yeV87CisgIExldmVsIGxldmVsXzsK
KyAgc2l6ZV90IHN0YWJpbGl0eV9jb3VudGVyXzsKK307Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CisKKyNlbmRpZiAgLy8gTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQ0xPQ0tEUklGVF9E
RVRFQ1RPUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlmdF9kZXRlY3Rv
cl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3JfdW5pdHRl
c3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGY5OGIwMWQzYWFlM2ViZTE2N2M5ZDlhNDUyOGFiNDNmODA2NWQ3
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3Jf
dW5pdHRlc3QuY2MKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9y
LmgiCisKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworVEVT
VChDbG9ja2RyaWZ0RGV0ZWN0b3IsIENsb2NrZHJpZnREZXRlY3RvcikgeworICBDbG9ja2RyaWZ0
RGV0ZWN0b3IgYzsKKyAgLy8gTm8gY2xvY2tkcmlmdCBhdCBzdGFydC4KKyAgRVhQRUNUX1RSVUUo
Yy5DbG9ja2RyaWZ0TGV2ZWwoKSA9PSBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjprTm9uZSk7
CisKKyAgLy8gTW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGRlbGF5LgorICBmb3IgKGludCBpID0g
MDsgaSA8IDEwMDsgaSsrKQorICAgIGMuVXBkYXRlKDEwMDApOworICBFWFBFQ1RfVFJVRShjLkNs
b2NrZHJpZnRMZXZlbCgpID09IENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtOb25lKTsKKyAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBjLlVwZGF0ZSgxMDAxKTsKKyAgRVhQ
RUNUX1RSVUUoYy5DbG9ja2RyaWZ0TGV2ZWwoKSA9PSBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVs
OjprTm9uZSk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspCisgICAgYy5VcGRhdGUo
MTAwMik7CisgIC8vIFByb2JhYmxlIGNsb2NrZHJpZnQuCisgIEVYUEVDVF9UUlVFKGMuQ2xvY2tk
cmlmdExldmVsKCkgPT0gQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6a1Byb2JhYmxlKTsKKyAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBjLlVwZGF0ZSgxMDAzKTsKKyAgLy8g
VmVyaWZpZWQgY2xvY2tkcmlmdC4KKyAgRVhQRUNUX1RSVUUoYy5DbG9ja2RyaWZ0TGV2ZWwoKSA9
PSBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjprVmVyaWZpZWQpOworCisgIC8vIFN0YWJsZSBk
ZWxheS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQorICAgIGMuVXBkYXRlKDEw
MDMpOworICAvLyBObyBjbG9ja2RyaWZ0LgorICBFWFBFQ1RfVFJVRShjLkNsb2NrZHJpZnRMZXZl
bCgpID09IENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtOb25lKTsKKworICAvLyBEZWNyZWFz
aW5nIGRlbGF5LgorICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAgIGMuVXBkYXRl
KDEwMDEpOworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAgIGMuVXBkYXRlKDk5
OSk7CisgIC8vIFByb2JhYmxlIGNsb2NrZHJpZnQuCisgIEVYUEVDVF9UUlVFKGMuQ2xvY2tkcmlm
dExldmVsKCkgPT0gQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6a1Byb2JhYmxlKTsKKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBjLlVwZGF0ZSgxMDAwKTsKKyAgZm9yIChp
bnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBjLlVwZGF0ZSg5OTgpOworICAvLyBWZXJpZmll
ZCBjbG9ja2RyaWZ0LgorICBFWFBFQ1RfVFJVRShjLkNsb2NrZHJpZnRMZXZlbCgpID09IENsb2Nr
ZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtWZXJpZmllZCk7Cit9Cit9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dlbmVyYXRvci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2NvbWZvcnRfbm9pc2VfZ2VuZXJhdG9yLmNjCmluZGV4IDU1ZmFm
NGI1MjkxYTE3NWJiZTRiZGFiMzUxNjE0Y2QwN2JlZWNmNTEuLjc2NmU2NTg2Mzk4MWNhZmJhMDlk
ZDUxMDg1ZGVmNmYyNmMxZjg5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2NvbWZvcnRf
bm9pc2VfZ2VuZXJhdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2NvbWZvcnRfbm9pc2VfZ2Vu
ZXJhdG9yLmNjCkBAIC0xNiwxMyArMTYsMTYgQEAKICNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX1g4
Nl9GQU1JTFkpCiAjaW5jbHVkZSA8ZW1taW50cmluLmg+CiAjZW5kaWYKLSNpbmNsdWRlIDxtYXRo
Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPGNt
YXRoPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRl
IDxudW1lcmljPgogCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2lu
Y2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9tYXRoLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0zOCw2NCArNDEsMTAgQEAgdm9pZCBU
YWJsZVJhbmRvbVZhbHVlKGludDE2X3QqIHZlY3RvciwgaW50MTZfdCB2ZWN0b3JfbGVuZ3RoLCB1
aW50MzJfdCogc2VlZCkgewogCiB9ICAvLyBuYW1lc3BhY2UKIAotbmFtZXNwYWNlIGFlYzMgewot
Ci0jaWYgZGVmaW5lZChXRUJSVENfQVJDSF9YODZfRkFNSUxZKQotCi12b2lkIEVzdGltYXRlQ29t
Zm9ydE5vaXNlX1NTRTIoY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMx
PiYgTjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QqIHNlZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmZ0RGF0YSogbG93ZXJfYmFuZF9ub2lzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZnREYXRhKiB1cHBlcl9iYW5kX25vaXNl
KSB7Ci0gIEZmdERhdGEqIE5fbG93ID0gbG93ZXJfYmFuZF9ub2lzZTsKLSAgRmZ0RGF0YSogTl9o
aWdoID0gdXBwZXJfYmFuZF9ub2lzZTsKLQotICAvLyBDb21wdXRlIHNxdWFyZSByb290IHNwZWN0
cnVtLgotICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IE47Ci0gIGZvciAo
c2l6ZV90IGsgPSAwOyBrIDwga0ZmdExlbmd0aEJ5MjsgayArPSA0KSB7Ci0gICAgX19tMTI4IHYg
PSBfbW1fbG9hZHVfcHMoJk4yW2tdKTsKLSAgICB2ID0gX21tX3NxcnRfcHModik7Ci0gICAgX21t
X3N0b3JldV9wcygmTltrXSwgdik7Ci0gIH0KLQotICBOW2tGZnRMZW5ndGhCeTJdID0gc3FydGYo
TjJba0ZmdExlbmd0aEJ5Ml0pOwotCi0gIC8vIENvbXB1dGUgdGhlIG5vaXNlIGxldmVsIGZvciB0
aGUgdXBwZXIgYmFuZHMuCi0gIGNvbnN0ZXhwciBmbG9hdCBrT25lQnlOdW1CYW5kcyA9IDEuZiAv
IChrRmZ0TGVuZ3RoQnkyUGx1czEgLyAyICsgMSk7Ci0gIGNvbnN0ZXhwciBpbnQga0ZmdExlbmd0
aEJ5MlBsdXMxQnkyID0ga0ZmdExlbmd0aEJ5MlBsdXMxIC8gMjsKLSAgY29uc3QgZmxvYXQgaGln
aF9iYW5kX25vaXNlX2xldmVsID0KLSAgICAgIHN0ZDo6YWNjdW11bGF0ZShOLmJlZ2luKCkgKyBr
RmZ0TGVuZ3RoQnkyUGx1czFCeTIsIE4uZW5kKCksIDAuZikgKgotICAgICAga09uZUJ5TnVtQmFu
ZHM7Ci0KLSAgLy8gR2VuZXJhdGUgY29tcGxleCBub2lzZS4KLSAgc3RkOjphcnJheTxpbnQxNl90
LCBrRmZ0TGVuZ3RoQnkyIC0gMT4gcmFuZG9tX3ZhbHVlc19pbnQ7Ci0gIFRhYmxlUmFuZG9tVmFs
dWUocmFuZG9tX3ZhbHVlc19pbnQuZGF0YSgpLCByYW5kb21fdmFsdWVzX2ludC5zaXplKCksIHNl
ZWQpOwotCi0gIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTIgLSAxPiBzaW47Ci0gIHN0
ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTIgLSAxPiBjb3M7Ci0gIGNvbnN0ZXhwciBmbG9h
dCBrU2NhbGUgPSA2LjI4MzE4NTMwNzE3OTU5ZiAvIDMyNzY4LjBmOwotICBzdGQ6OnRyYW5zZm9y
bShyYW5kb21fdmFsdWVzX2ludC5iZWdpbigpLCByYW5kb21fdmFsdWVzX2ludC5lbmQoKSwKLSAg
ICAgICAgICAgICAgICAgc2luLmJlZ2luKCksIFsmXShpbnQxNl90IGEpIHsgcmV0dXJuIC1zaW5m
KGtTY2FsZSAqIGEpOyB9KTsKLSAgc3RkOjp0cmFuc2Zvcm0ocmFuZG9tX3ZhbHVlc19pbnQuYmVn
aW4oKSwgcmFuZG9tX3ZhbHVlc19pbnQuZW5kKCksCi0gICAgICAgICAgICAgICAgIGNvcy5iZWdp
bigpLCBbJl0oaW50MTZfdCBhKSB7IHJldHVybiBjb3NmKGtTY2FsZSAqIGEpOyB9KTsKLQotICAv
LyBGb3JtIGxvdy1mcmVxdWVuY3kgbm9pc2UgdmlhIHNwZWN0cmFsIHNoYXBpbmcuCi0gIE5fbG93
LT5yZVswXSA9IE5fbG93LT5yZVtrRmZ0TGVuZ3RoQnkyXSA9IE5faGlnaC0+cmVbMF0gPQotICAg
ICAgTl9oaWdoLT5yZVtrRmZ0TGVuZ3RoQnkyXSA9IDAuZjsKLSAgc3RkOjp0cmFuc2Zvcm0oY29z
LmJlZ2luKCksIGNvcy5lbmQoKSwgTi5iZWdpbigpICsgMSwgTl9sb3ctPnJlLmJlZ2luKCkgKyAx
LAotICAgICAgICAgICAgICAgICBzdGQ6Om11bHRpcGxpZXM8ZmxvYXQ+KCkpOwotICBzdGQ6OnRy
YW5zZm9ybShzaW4uYmVnaW4oKSwgc2luLmVuZCgpLCBOLmJlZ2luKCkgKyAxLCBOX2xvdy0+aW0u
YmVnaW4oKSArIDEsCi0gICAgICAgICAgICAgICAgIHN0ZDo6bXVsdGlwbGllczxmbG9hdD4oKSk7
Ci0KLSAgLy8gRm9ybSB0aGUgaGlnaC1mcmVxdWVuY3kgbm9pc2UgdmlhIHNpbXBsZSBsZXZlbGxp
bmcuCi0gIHN0ZDo6dHJhbnNmb3JtKGNvcy5iZWdpbigpLCBjb3MuZW5kKCksIE5faGlnaC0+cmUu
YmVnaW4oKSArIDEsCi0gICAgICAgICAgICAgICAgIFsmXShmbG9hdCBhKSB7IHJldHVybiBoaWdo
X2JhbmRfbm9pc2VfbGV2ZWwgKiBhOyB9KTsKLSAgc3RkOjp0cmFuc2Zvcm0oc2luLmJlZ2luKCks
IHNpbi5lbmQoKSwgTl9oaWdoLT5pbS5iZWdpbigpICsgMSwKLSAgICAgICAgICAgICAgICAgWyZd
KGZsb2F0IGEpIHsgcmV0dXJuIGhpZ2hfYmFuZF9ub2lzZV9sZXZlbCAqIGE7IH0pOwotfQotCi0j
ZW5kaWYKK25hbWVzcGFjZSB7CiAKLXZvaWQgRXN0aW1hdGVDb21mb3J0Tm9pc2UoY29uc3Qgc3Rk
OjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgTjIsCit2b2lkIEdlbmVyYXRlQ29t
Zm9ydE5vaXNlKEFlYzNPcHRpbWl6YXRpb24gb3B0aW1pemF0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBO
MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QqIHNlZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZmdERhdGEqIGxvd2VyX2JhbmRfbm9pc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZmdERhdGEqIHVwcGVyX2JhbmRfbm9pc2UpIHsKQEAgLTEwNCw4ICs1Myw4
IEBAIHZvaWQgRXN0aW1hdGVDb21mb3J0Tm9pc2UoY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0Zm
dExlbmd0aEJ5MlBsdXMxPiYgTjIsCiAKICAgLy8gQ29tcHV0ZSBzcXVhcmUgcm9vdCBzcGVjdHJ1
bS4KICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBOOwotICBzdGQ6OnRy
YW5zZm9ybShOMi5iZWdpbigpLCBOMi5lbmQoKSwgTi5iZWdpbigpLAotICAgICAgICAgICAgICAg
ICBbXShmbG9hdCBhKSB7IHJldHVybiBzcXJ0ZihhKTsgfSk7CisgIHN0ZDo6Y29weShOMi5iZWdp
bigpLCBOMi5lbmQoKSwgTi5iZWdpbigpKTsKKyAgYWVjMzo6VmVjdG9yTWF0aChvcHRpbWl6YXRp
b24pLlNxcnQoTik7CiAKICAgLy8gQ29tcHV0ZSB0aGUgbm9pc2UgbGV2ZWwgZm9yIHRoZSB1cHBl
ciBiYW5kcy4KICAgY29uc3RleHByIGZsb2F0IGtPbmVCeU51bUJhbmRzID0gMS5mIC8gKGtGZnRM
ZW5ndGhCeTJQbHVzMSAvIDIgKyAxKTsKQEAgLTExOCwxMyArNjcsMjEgQEAgdm9pZCBFc3RpbWF0
ZUNvbWZvcnROb2lzZShjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+
JiBOMiwKICAgc3RkOjphcnJheTxpbnQxNl90LCBrRmZ0TGVuZ3RoQnkyIC0gMT4gcmFuZG9tX3Zh
bHVlc19pbnQ7CiAgIFRhYmxlUmFuZG9tVmFsdWUocmFuZG9tX3ZhbHVlc19pbnQuZGF0YSgpLCBy
YW5kb21fdmFsdWVzX2ludC5zaXplKCksIHNlZWQpOwogCisgIC8vIFRoZSBhbmFseXNpcyBhbmQg
c3ludGhlc2lzIHdpbmRvd2luZyBjYXVzZSBsb3NzIG9mIHBvd2VyIHdoZW4KKyAgLy8gY3Jvc3Mt
ZmFkaW5nIHRoZSBub2lzZSB3aGVyZSBmcmFtZXMgYXJlIGNvbXBsZXRlbHkgdW5jb3JyZWxhdGVk
CisgIC8vIChnZW5lcmF0ZWQgd2l0aCByYW5kb20gcGhhc2UpLCBoZW5jZSB0aGUgZmFjdG9yIHNx
cnQoMikuCisgIC8vIFRoaXMgaXMgbm90IHRoZSBjYXNlIGZvciB0aGUgc3BlZWNoIHNpZ25hbCB3
aGVyZSB0aGUgaW5wdXQgaXMgb3ZlcmxhcHBpbmcKKyAgLy8gKHN0cm9uZyBjb3JyZWxhdGlvbiku
CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTIgLSAxPiBzaW47CiAgIHN0ZDo6YXJy
YXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTIgLSAxPiBjb3M7CiAgIGNvbnN0ZXhwciBmbG9hdCBrU2Nh
bGUgPSA2LjI4MzE4NTMwNzE3OTU5ZiAvIDMyNzY4LjBmOworICBjb25zdGV4cHIgZmxvYXQga1Nx
cnQyID0gMS40MTQyMTM1NjIzZjsKICAgc3RkOjp0cmFuc2Zvcm0ocmFuZG9tX3ZhbHVlc19pbnQu
YmVnaW4oKSwgcmFuZG9tX3ZhbHVlc19pbnQuZW5kKCksCi0gICAgICAgICAgICAgICAgIHNpbi5i
ZWdpbigpLCBbJl0oaW50MTZfdCBhKSB7IHJldHVybiAtc2luZihrU2NhbGUgKiBhKTsgfSk7Cisg
ICAgICAgICAgICAgICAgIHNpbi5iZWdpbigpLAorICAgICAgICAgICAgICAgICBbJl0oaW50MTZf
dCBhKSB7IHJldHVybiAtc2luZihrU2NhbGUgKiBhKSAqIGtTcXJ0MjsgfSk7CiAgIHN0ZDo6dHJh
bnNmb3JtKHJhbmRvbV92YWx1ZXNfaW50LmJlZ2luKCksIHJhbmRvbV92YWx1ZXNfaW50LmVuZCgp
LAotICAgICAgICAgICAgICAgICBjb3MuYmVnaW4oKSwgWyZdKGludDE2X3QgYSkgeyByZXR1cm4g
Y29zZihrU2NhbGUgKiBhKTsgfSk7CisgICAgICAgICAgICAgICAgIGNvcy5iZWdpbigpLAorICAg
ICAgICAgICAgICAgICBbJl0oaW50MTZfdCBhKSB7IHJldHVybiBjb3NmKGtTY2FsZSAqIGEpICog
a1NxcnQyOyB9KTsKIAogICAvLyBGb3JtIGxvdy1mcmVxdWVuY3kgbm9pc2UgdmlhIHNwZWN0cmFs
IHNoYXBpbmcuCiAgIE5fbG93LT5yZVswXSA9IE5fbG93LT5yZVtrRmZ0TGVuZ3RoQnkyXSA9IE5f
aGlnaC0+cmVbMF0gPQpAQCAtMTQxLDcgKzk4LDcgQEAgdm9pZCBFc3RpbWF0ZUNvbWZvcnROb2lz
ZShjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBOMiwKICAgICAg
ICAgICAgICAgICAgWyZdKGZsb2F0IGEpIHsgcmV0dXJuIGhpZ2hfYmFuZF9ub2lzZV9sZXZlbCAq
IGE7IH0pOwogfQogCi19ICAvLyBuYW1lc3BhY2UgYWVjMworfSAgLy8gbmFtZXNwYWNlCiAKIENv
bWZvcnROb2lzZUdlbmVyYXRvcjo6Q29tZm9ydE5vaXNlR2VuZXJhdG9yKEFlYzNPcHRpbWl6YXRp
b24gb3B0aW1pemF0aW9uKQogICAgIDogb3B0aW1pemF0aW9uXyhvcHRpbWl6YXRpb24pLApAQCAt
MjA1LDE3ICsxNjIsOCBAQCB2b2lkIENvbWZvcnROb2lzZUdlbmVyYXRvcjo6Q29tcHV0ZSgKICAg
Y29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgTjIgPQogICAgICAg
TjJfaW5pdGlhbF8gPyAqTjJfaW5pdGlhbF8gOiBOMl87CiAKLSAgc3dpdGNoIChvcHRpbWl6YXRp
b25fKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfQVJDSF9YODZfRkFNSUxZKQotICAgIGNhc2UgQWVj
M09wdGltaXphdGlvbjo6a1NzZTI6Ci0gICAgICBhZWMzOjpFc3RpbWF0ZUNvbWZvcnROb2lzZV9T
U0UyKE4yLCAmc2VlZF8sIGxvd2VyX2JhbmRfbm9pc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVwcGVyX2JhbmRfbm9pc2UpOwotICAgICAgYnJlYWs7Ci0jZW5kaWYK
LSAgICBkZWZhdWx0OgotICAgICAgYWVjMzo6RXN0aW1hdGVDb21mb3J0Tm9pc2UoTjIsICZzZWVk
XywgbG93ZXJfYmFuZF9ub2lzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVw
cGVyX2JhbmRfbm9pc2UpOwotICB9CisgIEdlbmVyYXRlQ29tZm9ydE5vaXNlKG9wdGltaXphdGlv
bl8sIE4yLCAmc2VlZF8sIGxvd2VyX2JhbmRfbm9pc2UsCisgICAgICAgICAgICAgICAgICAgICAg
IHVwcGVyX2JhbmRfbm9pc2UpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dlbmVyYXRvci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3IuaAppbmRleCA2YTQ3OTg5NmVjYjk3NmZiMzBh
YmQzYTNhNjk3MTljNDdhYzE2NGI5Li4zYmUzODZiYWIxZTc2ODdjYzBmNGFmMjVjYjhlNDdjMmRl
MTUzMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2NvbWZvcnRfbm9pc2VfZ2VuZXJhdG9yLmgKQEAgLTEx
LDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQ09NRk9S
VF9OT0lTRV9HRU5FUkFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FF
QzNfQ09NRk9SVF9OT0lTRV9HRU5FUkFUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2lu
Y2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9jb21mb3J0X25vaXNlX2dlbmVyYXRvcl91bml0dGVzdC5jYwppbmRleCA3N2EwOWVkY2Q2YTAz
OGVmZGZiODhmOWQ1MzU2ZDhkZTE5ZTg3ZTQ0Li4xMGJhNjk2MDM2ODFmZDMwYjVlZGNmMTMxMDRl
NzgyZWFiNTNjMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dl
bmVyYXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dl
bmVyYXRvcl91bml0dGVzdC5jYwpAQCAtNTIsNDUgKzUyLDYgQEAgVEVTVChDb21mb3J0Tm9pc2VH
ZW5lcmF0b3IsIE51bGxVcHBlckJhbmROb2lzZSkgewogCiAjZW5kaWYKIAotI2lmIGRlZmluZWQo
V0VCUlRDX0FSQ0hfWDg2X0ZBTUlMWSkKLS8vIFZlcmlmaWVzIHRoYXQgdGhlIG9wdGltaXplZCBt
ZXRob2RzIGFyZSBiaXRleGFjdCB0byB0aGVpciByZWZlcmVuY2UKLS8vIGNvdW50ZXJwYXJ0cy4K
LVRFU1QoQ29tZm9ydE5vaXNlR2VuZXJhdG9yLCBUZXN0T3B0aW1pemF0aW9ucykgewotICBpZiAo
V2ViUnRjX0dldENQVUluZm8oa1NTRTIpICE9IDApIHsKLSAgICBSYW5kb20gcmFuZG9tX2dlbmVy
YXRvcig0MlUpOwotICAgIHVpbnQzMl90IHNlZWQgPSA0MjsKLSAgICB1aW50MzJfdCBzZWVkX1NT
RTIgPSA0MjsKLSAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IE4yOwot
ICAgIEZmdERhdGEgbG93ZXJfYmFuZF9ub2lzZTsKLSAgICBGZnREYXRhIHVwcGVyX2JhbmRfbm9p
c2U7Ci0gICAgRmZ0RGF0YSBsb3dlcl9iYW5kX25vaXNlX1NTRTI7Ci0gICAgRmZ0RGF0YSB1cHBl
cl9iYW5kX25vaXNlX1NTRTI7Ci0gICAgZm9yIChpbnQgayA9IDA7IGsgPCAxMDsgKytrKSB7Ci0g
ICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IE4yLnNpemUoKTsgKytqKSB7Ci0gICAgICAgIE4y
W2pdID0gcmFuZG9tX2dlbmVyYXRvci5SYW5kPGZsb2F0PigpICogMTAwMC5mOwotICAgICAgfQot
Ci0gICAgICBFc3RpbWF0ZUNvbWZvcnROb2lzZShOMiwgJnNlZWQsICZsb3dlcl9iYW5kX25vaXNl
LCAmdXBwZXJfYmFuZF9ub2lzZSk7Ci0gICAgICBFc3RpbWF0ZUNvbWZvcnROb2lzZV9TU0UyKE4y
LCAmc2VlZF9TU0UyLCAmbG93ZXJfYmFuZF9ub2lzZV9TU0UyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmdXBwZXJfYmFuZF9ub2lzZV9TU0UyKTsKLSAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgbG93ZXJfYmFuZF9ub2lzZS5yZS5zaXplKCk7ICsraikgewotICAgICAgICBF
WFBFQ1RfTkVBUihsb3dlcl9iYW5kX25vaXNlLnJlW2pdLCBsb3dlcl9iYW5kX25vaXNlX1NTRTIu
cmVbal0sCi0gICAgICAgICAgICAgICAgICAgIDAuMDAwMDFmKTsKLSAgICAgICAgRVhQRUNUX05F
QVIodXBwZXJfYmFuZF9ub2lzZS5yZVtqXSwgdXBwZXJfYmFuZF9ub2lzZV9TU0UyLnJlW2pdLAot
ICAgICAgICAgICAgICAgICAgICAwLjAwMDAxZik7Ci0gICAgICB9Ci0gICAgICBmb3IgKHNpemVf
dCBqID0gMTsgaiA8IGxvd2VyX2JhbmRfbm9pc2UucmUuc2l6ZSgpIC0gMTsgKytqKSB7Ci0gICAg
ICAgIEVYUEVDVF9ORUFSKGxvd2VyX2JhbmRfbm9pc2UuaW1bal0sIGxvd2VyX2JhbmRfbm9pc2Vf
U1NFMi5pbVtqXSwKLSAgICAgICAgICAgICAgICAgICAgMC4wMDAwMWYpOwotICAgICAgICBFWFBF
Q1RfTkVBUih1cHBlcl9iYW5kX25vaXNlLmltW2pdLCB1cHBlcl9iYW5kX25vaXNlX1NTRTIuaW1b
al0sCi0gICAgICAgICAgICAgICAgICAgIDAuMDAwMDFmKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0K
LX0KLQotI2VuZGlmCi0KIFRFU1QoQ29tZm9ydE5vaXNlR2VuZXJhdG9yLCBDb3JyZWN0TGV2ZWwp
IHsKICAgQ29tZm9ydE5vaXNlR2VuZXJhdG9yIGNuZyhEZXRlY3RPcHRpbWl6YXRpb24oKSk7CiAg
IEFlY1N0YXRlIGFlY19zdGF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZ3t9KTsKQEAgLTExMyw4ICs3
NCw4IEBAIFRFU1QoQ29tZm9ydE5vaXNlR2VuZXJhdG9yLCBDb3JyZWN0TGV2ZWwpIHsKICAgZm9y
IChpbnQgayA9IDA7IGsgPCAxMDAwMDsgKytrKSB7CiAgICAgY25nLkNvbXB1dGUoYWVjX3N0YXRl
LCBOMiwgJm5fbG93ZXIsICZuX3VwcGVyKTsKICAgfQotICBFWFBFQ1RfTkVBUihOMlswXSwgUG93
ZXIobl9sb3dlciksIE4yWzBdIC8gMTAuZik7Ci0gIEVYUEVDVF9ORUFSKE4yWzBdLCBQb3dlcihu
X3VwcGVyKSwgTjJbMF0gLyAxMC5mKTsKKyAgRVhQRUNUX05FQVIoMi5mICogTjJbMF0sIFBvd2Vy
KG5fbG93ZXIpLCBOMlswXSAvIDEwLmYpOworICBFWFBFQ1RfTkVBUigyLmYgKiBOMlswXSwgUG93
ZXIobl91cHBlciksIE4yWzBdIC8gMTAuZik7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBhZWMzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kZWNpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9k
ZWNpbWF0b3IuY2MKaW5kZXggZDlmYWE2MmRjNDQ2OTc2YTEzZDNlYTA2ZjBiMzI5NGRkZjNhY2Q2
Ny4uYmQwMzIzN2NhMDgwZmI1MzQxNDUyYTFmYWEzOWUxNjBlZGVlZWUwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvZGVjaW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2RlY2ltYXRv
ci5jYwpAQCAtOSw2ICs5LDEwIEBACiAgKi8KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9kZWNpbWF0b3IuaCIKIAorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHZl
Y3Rvcj4KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29t
bW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuY2MKaW5kZXggZGYw
YWY2ZTBkODYwMDE2MGQyYjU3NGE5NjljMzg4M2FhOWY1OTA4MS4uYzEwNTkxMWFhODgzNGRmMjA0
OWQyODFjODQ1NzdmZGZhNTU4ZWMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNh
bXBsZWRfcmVuZGVyX2J1ZmZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxlZF9y
ZW5kZXJfYnVmZmVyLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJfYnVmZmVyLmgiCiAKKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBEb3duc2FtcGxlZFJlbmRl
ckJ1ZmZlcjo6RG93bnNhbXBsZWRSZW5kZXJCdWZmZXIoc2l6ZV90IGRvd25zYW1wbGVkX2J1ZmZl
cl9zaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1
ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5oCmluZGV4
IDk0Mzk0OTY2NmEwNjlmMGU0NDdiYTkzMjU3ODA0ZGNkYWVkOGRjY2QuLmM5MWVhM2I4MzZmNjBl
ODUyNzNiOTRhYmI2ODEwOGVmYmY0NTI3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rv
d25zYW1wbGVkX3JlbmRlcl9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxl
ZF9yZW5kZXJfYnVmZmVyLmgKQEAgLTExLDkgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FFQzNfRE9XTlNBTVBMRURfUkVOREVSX0JVRkZFUl9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19ET1dOU0FNUExFRF9SRU5ERVJfQlVGRkVSX0hf
CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2VjaG9fYXVkaWJpbGl0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fYXVkaWJp
bGl0eS5jYwppbmRleCBmYTEyM2RlMzUxZTU0NDlkYWFhYmE2NmY4OTlhOGU3OWEyMTA4ZWVhLi5l
ODU3YTdlNDVhMDg0NzZmMDI4YzdjZmUzODA0ZjhmOGQzMjg3NjNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9lY2hvX2F1ZGliaWxpdHkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19h
dWRpYmlsaXR5LmNjCkBAIC0xMiw4ICsxMiwxMCBAQAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPgog
Ci0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIK
KyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9zdGF0aW9uYXJpdHlfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5oIgpAQCAtMjcsMTYgKzI5LDE4
IEBAIEVjaG9BdWRpYmlsaXR5OjpFY2hvQXVkaWJpbGl0eShib29sIHVzZV9yZW5kZXJfc3RhdGlv
bmFyaXR5X2F0X2luaXQpCiAKIEVjaG9BdWRpYmlsaXR5Ojp+RWNob0F1ZGliaWxpdHkoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgRWNob0F1ZGliaWxpdHk6OlVwZGF0ZShjb25zdCBSZW5kZXJCdWZmZXIm
IHJlbmRlcl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlbGF5X2Js
b2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGV4dGVybmFsX2RlbGF5X3Nl
ZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmV2ZXJiX2RlY2F5KSB7Cit2
b2lkIEVjaG9BdWRpYmlsaXR5OjpVcGRhdGUoCisgICAgY29uc3QgUmVuZGVyQnVmZmVyJiByZW5k
ZXJfYnVmZmVyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZW5kZXJfcmV2ZXJi
X2NvbnRyaWJ1dGlvbl9zcGVjdHJ1bSwKKyAgICBpbnQgZGVsYXlfYmxvY2tzLAorICAgIGJvb2wg
ZXh0ZXJuYWxfZGVsYXlfc2VlbikgewogICBVcGRhdGVSZW5kZXJOb2lzZUVzdGltYXRvcihyZW5k
ZXJfYnVmZmVyLkdldFNwZWN0cnVtQnVmZmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlcl9idWZmZXIuR2V0QmxvY2tCdWZmZXIoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXh0ZXJuYWxfZGVsYXlfc2Vlbik7CiAKICAgaWYgKGV4dGVybmFsX2RlbGF5X3Nl
ZW4gfHwgdXNlX3JlbmRlcl9zdGF0aW9uYXJpdHlfYXRfaW5pdF8pIHsKLSAgICBVcGRhdGVSZW5k
ZXJTdGF0aW9uYXJpdHlGbGFncyhyZW5kZXJfYnVmZmVyLCBkZWxheV9ibG9ja3MsIHJldmVyYl9k
ZWNheSk7CisgICAgVXBkYXRlUmVuZGVyU3RhdGlvbmFyaXR5RmxhZ3MoCisgICAgICAgIHJlbmRl
cl9idWZmZXIsIHJlbmRlcl9yZXZlcmJfY29udHJpYnV0aW9uX3NwZWN0cnVtLCBkZWxheV9ibG9j
a3MpOwogICB9CiB9CiAKQEAgLTQ4LDggKzUyLDggQEAgdm9pZCBFY2hvQXVkaWJpbGl0eTo6UmVz
ZXQoKSB7CiAKIHZvaWQgRWNob0F1ZGliaWxpdHk6OlVwZGF0ZVJlbmRlclN0YXRpb25hcml0eUZs
YWdzKAogICAgIGNvbnN0IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKLSAgICBpbnQgZGVs
YXlfYmxvY2tzLAotICAgIGZsb2F0IHJldmVyYl9kZWNheSkgeworICAgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IGZsb2F0PiByZW5kZXJfcmV2ZXJiX2NvbnRyaWJ1dGlvbl9zcGVjdHJ1bSwKKyAgICBp
bnQgZGVsYXlfYmxvY2tzKSB7CiAgIGNvbnN0IFZlY3RvckJ1ZmZlciYgc3BlY3RydW1fYnVmZmVy
ID0gcmVuZGVyX2J1ZmZlci5HZXRTcGVjdHJ1bUJ1ZmZlcigpOwogICBpbnQgaWR4X2F0X2RlbGF5
ID0KICAgICAgIHNwZWN0cnVtX2J1ZmZlci5PZmZzZXRJbmRleChzcGVjdHJ1bV9idWZmZXIucmVh
ZCwgZGVsYXlfYmxvY2tzKTsKQEAgLTU3LDggKzYxLDkgQEAgdm9pZCBFY2hvQXVkaWJpbGl0eTo6
VXBkYXRlUmVuZGVyU3RhdGlvbmFyaXR5RmxhZ3MoCiAgIGludCBudW1fbG9va2FoZWFkID0gcmVu
ZGVyX2J1ZmZlci5IZWFkcm9vbSgpIC0gZGVsYXlfYmxvY2tzICsgMTsKICAgbnVtX2xvb2thaGVh
ZCA9IHN0ZDo6bWF4KDAsIG51bV9sb29rYWhlYWQpOwogCi0gIHJlbmRlcl9zdGF0aW9uYXJpdHlf
LlVwZGF0ZVN0YXRpb25hcml0eUZsYWdzKHNwZWN0cnVtX2J1ZmZlciwgaWR4X2F0X2RlbGF5LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fbG9va2Fo
ZWFkLCByZXZlcmJfZGVjYXkpOworICByZW5kZXJfc3RhdGlvbmFyaXR5Xy5VcGRhdGVTdGF0aW9u
YXJpdHlGbGFncygKKyAgICAgIHNwZWN0cnVtX2J1ZmZlciwgcmVuZGVyX3JldmVyYl9jb250cmli
dXRpb25fc3BlY3RydW0sIGlkeF9hdF9kZWxheSwKKyAgICAgIG51bV9sb29rYWhlYWQpOwogfQog
CiB2b2lkIEVjaG9BdWRpYmlsaXR5OjpVcGRhdGVSZW5kZXJOb2lzZUVzdGltYXRvcigKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fYXVkaWJpbGl0eS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
ZWNob19hdWRpYmlsaXR5LmgKaW5kZXggM2IyNTJmM2VhMmI3ZTVjYmQ5MDY1Mzc2YzI3Njk4ODdh
NzYyOThiNy4uYjkwM2NhMGNmMWQ3OWVmYmE4ZTRiNzQ4NTM5MmY3NTAwZjc1NTIyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19hdWRpYmlsaXR5LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZWNob19hdWRpYmlsaXR5LmgKQEAgLTExLDExICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNf
QVVESU9fUFJPQ0VTU0lOR19BRUMzX0VDSE9fQVVESUJJTElUWV9IXwogI2RlZmluZSBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUVDM19FQ0hPX0FVRElCSUxJVFlfSF8KIAotI2luY2x1ZGUgPGFs
Z29yaXRobT4KLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8
bWVtb3J5PgotI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KIAogI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpA
QCAtMjcsOCArMjMsNiBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3MgQXBtRGF0YUR1
bXBlcjsKLQogY2xhc3MgRWNob0F1ZGliaWxpdHkgewogIHB1YmxpYzoKICAgZXhwbGljaXQgRWNo
b0F1ZGliaWxpdHkoYm9vbCB1c2VfcmVuZGVyX3N0YXRpb25hcml0eV9hdF9pbml0KTsKQEAgLTM2
LDkgKzMwLDkgQEAgY2xhc3MgRWNob0F1ZGliaWxpdHkgewogCiAgIC8vIEZlZWQgbmV3IHJlbmRl
ciBkYXRhIHRvIHRoZSBlY2hvIGF1ZGliaWxpdHkgZXN0aW1hdG9yLgogICB2b2lkIFVwZGF0ZShj
b25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCisgICAgICAgICAgICAgIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IGZsb2F0PiByZW5kZXJfcmV2ZXJiX2NvbnRyaWJ1dGlvbl9zcGVjdHJ1bSwK
ICAgICAgICAgICAgICAgaW50IGRlbGF5X2Jsb2NrcywKLSAgICAgICAgICAgICAgYm9vbCBleHRl
cm5hbF9kZWxheV9zZWVuLAotICAgICAgICAgICAgICBmbG9hdCByZXZlcmJfZGVjYXkpOworICAg
ICAgICAgICAgICBib29sIGV4dGVybmFsX2RlbGF5X3NlZW4pOwogICAvLyBHZXQgdGhlIHJlc2lk
dWFsIGVjaG8gc2NhbGluZy4KICAgdm9pZCBHZXRSZXNpZHVhbEVjaG9TY2FsaW5nKGJvb2wgZmls
dGVyX2hhc19oYWRfdGltZV90b19jb252ZXJnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PiByZXNpZHVhbF9zY2FsaW5nKSBjb25zdCB7CkBAIC02
Miw5ICs1NiwxMCBAQCBjbGFzcyBFY2hvQXVkaWJpbGl0eSB7CiAgIHZvaWQgUmVzZXQoKTsKIAog
ICAvLyBVcGRhdGVzIHRoZSByZW5kZXIgc3RhdGlvbmFyaXR5IGZsYWdzIGZvciB0aGUgY3VycmVu
dCBmcmFtZS4KLSAgdm9pZCBVcGRhdGVSZW5kZXJTdGF0aW9uYXJpdHlGbGFncyhjb25zdCBSZW5k
ZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGRlbGF5X2Jsb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByZXZlcmJfZGVjYXkpOworICB2b2lkIFVwZGF0ZVJlbmRlclN0YXRpb25hcml0
eUZsYWdzKAorICAgICAgY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgICAg
cnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHJlbmRlcl9yZXZlcmJfY29udHJpYnV0aW9uX3Nw
ZWN0cnVtLAorICAgICAgaW50IGRlbGF5X2Jsb2Nrcyk7CiAKICAgLy8gVXBkYXRlcyB0aGUgbm9p
c2UgZXN0aW1hdG9yIHdpdGggdGhlIG5ldyByZW5kZXIgZGF0YSBzaW5jZSB0aGUgcHJldmlvdXMK
ICAgLy8gY2FsbCB0byB0aGlzIG1ldGhvZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Vj
aG9fY2FuY2VsbGVyMy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5jYwppbmRl
eCBlNTIxOWM3MmFiN2ZhZTlhOWUwYmZlMmU4ZTVmZjQ1MzA3NmM5NzQwLi5mMDVlZGIxNWMzZTU2
YWY5OGNhNmJmY2E5MDI2MjMxNmY4NmNiMzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9l
Y2hvX2NhbmNlbGxlcjMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19jYW5jZWxsZXIzLmNj
CkBAIC05LDkgKzksMTIgQEAKICAqLwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1
ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9h
ZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5n
L2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5j
bHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTQxLDI1ICs0NCw0
NCBAQCBib29sIEVuYWJsZVJldmVyYk1vZGVsbGluZygpIHsKICAgcmV0dXJuICFmaWVsZF90cmlh
bDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM1JldmVyYk1vZGVsbGluZ0tpbGxTd2l0Y2giKTsKIH0K
IAotYm9vbCBFbmFibGVTdXBwcmVzc29yTmVhcmVuZEF2ZXJhZ2luZygpIHsKLSAgcmV0dXJuICFm
aWVsZF90cmlhbDo6SXNFbmFibGVkKAotICAgICAgIldlYlJUQy1BZWMzU3VwcHJlc3Nvck5lYXJl
bmRBdmVyYWdpbmdLaWxsU3dpdGNoIik7Citib29sIEVuYWJsZVVuaXR5SW5pdGlhbFJhbXB1cEdh
aW4oKSB7CisgIHJldHVybiBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM0VuYWJs
ZVVuaXR5SW5pdGlhbFJhbXB1cEdhaW4iKTsKIH0KIAotYm9vbCBFbmFibGVTbG93RmlsdGVyQWRh
cHRhdGlvbigpIHsKLSAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVj
M1Nsb3dGaWx0ZXJBZGFwdGF0aW9uS2lsbFN3aXRjaCIpOworYm9vbCBFbmFibGVVbml0eU5vblpl
cm9SYW1wdXBHYWluKCkgeworICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRD
LUFlYzNFbmFibGVVbml0eU5vblplcm9SYW1wdXBHYWluIik7CiB9CiAKLWJvb2wgRW5hYmxlU2hh
ZG93RmlsdGVySnVtcHN0YXJ0KCkgewotICByZXR1cm4gIWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQo
IldlYlJUQy1BZWMzU2hhZG93RmlsdGVySnVtcHN0YXJ0S2lsbFN3aXRjaCIpOworYm9vbCBFbmFi
bGVMb25nUmV2ZXJiKCkgeworICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRD
LUFlYzNTaG9ydFJldmVyYktpbGxTd2l0Y2giKTsKIH0KIAotYm9vbCBFbmFibGVVbml0eUluaXRp
YWxSYW1wdXBHYWluKCkgewotICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRD
LUFlYzNFbmFibGVVbml0eUluaXRpYWxSYW1wdXBHYWluIik7Citib29sIEVuYWJsZU5ld0ZpbHRl
clBhcmFtcygpIHsKKyAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVj
M05ld0ZpbHRlclBhcmFtc0tpbGxTd2l0Y2giKTsKIH0KIAotYm9vbCBFbmFibGVVbml0eU5vblpl
cm9SYW1wdXBHYWluKCkgewotICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRD
LUFlYzNFbmFibGVVbml0eU5vblplcm9SYW1wdXBHYWluIik7Citib29sIEVuYWJsZUxlZ2FjeURv
bWluYW50TmVhcmVuZCgpIHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJU
Qy1BZWMzRW5hYmxlTGVnYWN5RG9taW5hbnROZWFyZW5kIik7Cit9CisKK2Jvb2wgVXNlTGVnYWN5
Tm9ybWFsU3VwcHJlc3NvclR1bmluZygpIHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoIldlYlJUQy1BZWMzVXNlTGVnYWN5Tm9ybWFsU3VwcHJlc3NvclR1bmluZyIpOworfQorCiti
b29sIEFjdGl2YXRlU3RhdGlvbmFyaXR5UHJvcGVydGllcygpIHsKKyAgcmV0dXJuIGZpZWxkX3Ry
aWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzVXNlU3RhdGlvbmFyaXR5UHJvcGVydGllcyIpOwor
fQorCitib29sIEFjdGl2YXRlU3RhdGlvbmFyaXR5UHJvcGVydGllc0F0SW5pdCgpIHsKKyAgcmV0
dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzVXNlU3RhdGlvbmFyaXR5UHJv
cGVydGllc0F0SW5pdCIpOworfQorCitib29sIEVuYWJsZU5ld1JlbmRlckJ1ZmZlcmluZygpIHsK
KyAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM05ld1JlbmRlckJ1
ZmZlcmluZ0tpbGxTd2l0Y2giKTsKK30KKworYm9vbCBVc2VFYXJseURlbGF5RGV0ZWN0aW9uKCkg
eworICByZXR1cm4gIWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzRWFybHlEZWxh
eURldGVjdGlvbktpbGxTd2l0Y2giKTsKIH0KIAogLy8gTWV0aG9kIGZvciBhZGp1c3RpbmcgY29u
ZmlnIHBhcmFtZXRlciBkZXBlbmRlbmNpZXMuLgpAQCAtNzEsNjggKzkzLDI3IEBAIEVjaG9DYW5j
ZWxsZXIzQ29uZmlnIEFkanVzdENvbmZpZyhjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29u
ZmlnKSB7CiAgICAgYWRqdXN0ZWRfY2ZnLmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVuID0gMC5mOwog
ICB9CiAKLSAgLy8gVXNlIGN1c3RvbWl6ZWQgcGFyYW1ldGVycyB3aGVuIHRoZSBzeXN0ZW0gaGFz
IGNsb2NrLWRyaWZ0LgotICBpZiAoY29uZmlnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmhhc19jbG9j
a19kcmlmdCkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykKLSAgICAgICAgPDwgIkN1c3RvbWl6
aW5nIHBhcmFtZXRlcnMgdG8gd29yayB3ZWxsIGZvciB0aGUgY2xvY2stZHJpZnQgY2FzZS4iOwot
ICAgIGlmIChjb25maWcuZXBfc3RyZW5ndGguYm91bmRlZF9lcmwpIHsKLSAgICAgIGFkanVzdGVk
X2NmZy5lcF9zdHJlbmd0aC5kZWZhdWx0X2xlbiA9IDAuODVmOwotICAgICAgYWRqdXN0ZWRfY2Zn
LmVwX3N0cmVuZ3RoLmxmID0gMC4wMWY7Ci0gICAgICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGgu
bWYgPSAwLjAxZjsKLSAgICAgIGFkanVzdGVkX2NmZy5lcF9zdHJlbmd0aC5oZiA9IDAuMDFmOwot
ICAgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZSA9IDE7
Ci0gICAgICBhZGp1c3RlZF9jZmcuZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6ZSA9
IDE7Ci0gICAgICBhZGp1c3RlZF9jZmcuZWNob19tb2RlbC5ub25saW5lYXJfaG9sZCA9IDM7Ci0g
ICAgICBhZGp1c3RlZF9jZmcuZWNob19tb2RlbC5ub25saW5lYXJfcmVsZWFzZSA9IDAuMDAxZjsK
LSAgICB9IGVsc2UgewotICAgICAgYWRqdXN0ZWRfY2ZnLmVwX3N0cmVuZ3RoLmJvdW5kZWRfZXJs
ID0gdHJ1ZTsKLSAgICAgIGFkanVzdGVkX2NmZy5kZWxheS5kb3duX3NhbXBsaW5nX2ZhY3RvciA9
IDI7Ci0gICAgICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4gPSAwLjhmOwot
ICAgICAgYWRqdXN0ZWRfY2ZnLmVwX3N0cmVuZ3RoLmxmID0gMC4wMWY7Ci0gICAgICBhZGp1c3Rl
ZF9jZmcuZXBfc3RyZW5ndGgubWYgPSAwLjAxZjsKLSAgICAgIGFkanVzdGVkX2NmZy5lcF9zdHJl
bmd0aC5oZiA9IDAuMDFmOwotICAgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluID0gezMwLCAw
LjFmLCAwLjhmLCAwLjAwMWYsIDIwMDc1MzQ0LmZ9OwotICAgICAgYWRqdXN0ZWRfY2ZnLmZpbHRl
ci5zaGFkb3cgPSB7MzAsIDAuN2YsIDIwMDc1MzQ0LmZ9OwotICAgICAgYWRqdXN0ZWRfY2ZnLmZp
bHRlci5tYWluX2luaXRpYWwgPSB7MzAsIDAuMWYsIDEuNWYsIDAuMDAxZiwgMjAwNzUzNDQuZn07
Ci0gICAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLnNoYWRvd19pbml0aWFsID0gezMwLCAwLjlmLCAy
MDA3NTM0NC5mfTsKLSAgICAgIGFkanVzdGVkX2NmZy5lY2hvX21vZGVsLnJlbmRlcl9wcmVfd2lu
ZG93X3NpemUgPSAyOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rf
d2luZG93X3NpemUgPSAyOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fbW9kZWwubm9ubGluZWFy
X2hvbGQgPSAzOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fbW9kZWwubm9ubGluZWFyX3JlbGVh
c2UgPSAwLjZmOwotICAgIH0KLSAgfQotCiAgIGlmIChVc2VTaG9ydERlbGF5RXN0aW1hdG9yV2lu
ZG93KCkpIHsKICAgICBhZGp1c3RlZF9jZmcuZGVsYXkubnVtX2ZpbHRlcnMgPQogICAgICAgICBz
dGQ6Om1pbihhZGp1c3RlZF9jZmcuZGVsYXkubnVtX2ZpbHRlcnMsIHN0YXRpY19jYXN0PHNpemVf
dD4oNSkpOwogICB9CiAKLSAgaWYgKEVuYWJsZVJldmVyYkJhc2VkT25SZW5kZXIoKSA9PSBmYWxz
ZSkgewotICAgIGFkanVzdGVkX2NmZy5lcF9zdHJlbmd0aC5yZXZlcmJfYmFzZWRfb25fcmVuZGVy
ID0gZmFsc2U7CisgIGJvb2wgdXNlX25ld19yZW5kZXJfYnVmZmVyaW5nID0KKyAgICAgIEVuYWJs
ZU5ld1JlbmRlckJ1ZmZlcmluZygpICYmIGNvbmZpZy5idWZmZXJpbmcudXNlX25ld19yZW5kZXJf
YnVmZmVyaW5nOworICAvLyBPbGQgcmVuZGVyIGJ1ZmZlcmluZyBuZWVkcyBvbmUgbW9yZSBmaWx0
ZXIgdG8gY292ZXIgdGhlIHNhbWUgZGVsYXkuCisgIGlmICghdXNlX25ld19yZW5kZXJfYnVmZmVy
aW5nKSB7CisgICAgYWRqdXN0ZWRfY2ZnLmRlbGF5Lm51bV9maWx0ZXJzICs9IDE7CiAgIH0KIAot
ICBpZiAoIUVuYWJsZVN1cHByZXNzb3JOZWFyZW5kQXZlcmFnaW5nKCkpIHsKLSAgICBhZGp1c3Rl
ZF9jZmcuc3VwcHJlc3Nvci5uZWFyZW5kX2F2ZXJhZ2VfYmxvY2tzID0gMTsKKyAgaWYgKEVuYWJs
ZVJldmVyYkJhc2VkT25SZW5kZXIoKSA9PSBmYWxzZSkgeworICAgIGFkanVzdGVkX2NmZy5lcF9z
dHJlbmd0aC5yZXZlcmJfYmFzZWRfb25fcmVuZGVyID0gZmFsc2U7CiAgIH0KIAotICBpZiAoIUVu
YWJsZVNsb3dGaWx0ZXJBZGFwdGF0aW9uKCkpIHsKLSAgICBpZiAoIUVuYWJsZVNoYWRvd0ZpbHRl
ckp1bXBzdGFydCgpKSB7Ci0gICAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1haW4ubGVha2FnZV9j
b252ZXJnZWQgPSAwLjAwNWY7Ci0gICAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1haW4ubGVha2Fn
ZV9kaXZlcmdlZCA9IDAuMWY7Ci0gICAgfQotICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbl9p
bml0aWFsLmxlYWthZ2VfY29udmVyZ2VkID0gMC4wNWY7Ci0gICAgYWRqdXN0ZWRfY2ZnLmZpbHRl
ci5tYWluX2luaXRpYWwubGVha2FnZV9kaXZlcmdlZCA9IDUuZjsKLSAgfQotCi0gIGlmICghRW5h
YmxlU2hhZG93RmlsdGVySnVtcHN0YXJ0KCkpIHsKLSAgICBpZiAoRW5hYmxlU2xvd0ZpbHRlckFk
YXB0YXRpb24oKSkgewotICAgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluLmxlYWthZ2VfY29u
dmVyZ2VkID0gMC4wMDA1ZjsKLSAgICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbi5sZWFrYWdl
X2RpdmVyZ2VkID0gMC4wMWY7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGFkanVzdGVkX2NmZy5maWx0
ZXIubWFpbi5sZWFrYWdlX2NvbnZlcmdlZCA9IDAuMDA1ZjsKLSAgICAgIGFkanVzdGVkX2NmZy5m
aWx0ZXIubWFpbi5sZWFrYWdlX2RpdmVyZ2VkID0gMC4xZjsKLSAgICB9Ci0gICAgYWRqdXN0ZWRf
Y2ZnLmZpbHRlci5tYWluLmVycm9yX2Zsb29yID0gMC4wMDFmOworICBpZiAoIUVuYWJsZU5ld0Zp
bHRlclBhcmFtcygpKSB7CisgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluLmxlYWthZ2VfZGl2
ZXJnZWQgPSAwLjAxZjsKKyAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1haW4uZXJyb3JfZmxvb3Ig
PSAwLjFmOworICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbi5lcnJvcl9jZWlsID0gMUUxMGY7
CisgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluX2luaXRpYWwuZXJyb3JfY2VpbCA9IDFFMTBm
OwogICB9CiAKICAgaWYgKEVuYWJsZVVuaXR5SW5pdGlhbFJhbXB1cEdhaW4oKSAmJgpAQCAtMTQ3
LDYgKzEyOCw0MiBAQCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBBZGp1c3RDb25maWcoY29uc3QgRWNo
b0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZykgewogICAgIGFkanVzdGVkX2NmZy5lY2hvX3JlbW92
YWxfY29udHJvbC5nYWluX3JhbXB1cC5maXJzdF9ub25femVyb19nYWluID0gMS5mOwogICB9CiAK
KyAgaWYgKEVuYWJsZUxvbmdSZXZlcmIoKSkgeworICAgIGFkanVzdGVkX2NmZy5lcF9zdHJlbmd0
aC5kZWZhdWx0X2xlbiA9IDAuODhmOworICB9CisKKyAgaWYgKEVuYWJsZUxlZ2FjeURvbWluYW50
TmVhcmVuZCgpKSB7CisgICAgYWRqdXN0ZWRfY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcg
PQorICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6U3VwcHJlc3Nvcjo6VHVuaW5nKAorICAg
ICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWc6OlN1cHByZXNzb3I6Ok1hc2tpbmdUaHJlc2hv
bGRzKC4yZiwgLjNmLCAuM2YpLAorICAgICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWc6OlN1
cHByZXNzb3I6Ok1hc2tpbmdUaHJlc2hvbGRzKC4wN2YsIC4xZiwgLjNmKSwKKyAgICAgICAgICAg
IDIuMGYsIDAuMjVmKTsKKyAgfQorCisgIGlmIChVc2VMZWdhY3lOb3JtYWxTdXBwcmVzc29yVHVu
aW5nKCkpIHsKKyAgICBhZGp1c3RlZF9jZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nID0KKyAg
ICAgICAgRWNob0NhbmNlbGxlcjNDb25maWc6OlN1cHByZXNzb3I6OlR1bmluZygKKyAgICAgICAg
ICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpNYXNraW5nVGhyZXNob2xkcygu
MmYsIC4zZiwgLjNmKSwKKyAgICAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpTdXBwcmVz
c29yOjpNYXNraW5nVGhyZXNob2xkcyguMDdmLCAuMWYsIC4zZiksCisgICAgICAgICAgICAyLjBm
LCAwLjI1Zik7CisKKyAgICBhZGp1c3RlZF9jZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5k
X2RldGVjdGlvbi5lbnJfdGhyZXNob2xkID0gMTAuZjsKKyAgICBhZGp1c3RlZF9jZmcuc3VwcHJl
c3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5zbnJfdGhyZXNob2xkID0gMTAuZjsKKyAg
ICBhZGp1c3RlZF9jZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5ob2xk
X2R1cmF0aW9uID0gMjU7CisgIH0KKworICBpZiAoQWN0aXZhdGVTdGF0aW9uYXJpdHlQcm9wZXJ0
aWVzKCkpIHsKKyAgICBhZGp1c3RlZF9jZmcuZWNob19hdWRpYmlsaXR5LnVzZV9zdGF0aW9uYXJ5
X3Byb3BlcnRpZXMgPSB0cnVlOworICB9CisKKyAgaWYgKEFjdGl2YXRlU3RhdGlvbmFyaXR5UHJv
cGVydGllc0F0SW5pdCgpKSB7CisgICAgYWRqdXN0ZWRfY2ZnLmVjaG9fYXVkaWJpbGl0eS51c2Vf
c3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdCA9IHRydWU7CisgIH0KKworICBpZiAoIVVz
ZUVhcmx5RGVsYXlEZXRlY3Rpb24oKSkgeworICAgIGFkanVzdGVkX2NmZy5kZWxheS5kZWxheV9z
ZWxlY3Rpb25fdGhyZXNob2xkcyA9IHsyNSwgMjV9OworICB9CisKICAgcmV0dXJuIGFkanVzdGVk
X2NmZzsKIH0KIApAQCAtMzMwLDEyICszNDcsMTYgQEAgaW50IEVjaG9DYW5jZWxsZXIzOjppbnN0
YW5jZV9jb3VudF8gPSAwOwogRWNob0NhbmNlbGxlcjM6OkVjaG9DYW5jZWxsZXIzKGNvbnN0IEVj
aG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNhbXBsZV9yYXRlX2h6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgdXNlX2hpZ2hwYXNzX2ZpbHRlcikKLSAgICA6IEVjaG9DYW5jZWxsZXIzKAotICAgICAgICAg
IEFkanVzdENvbmZpZyhjb25maWcpLAotICAgICAgICAgIHNhbXBsZV9yYXRlX2h6LAotICAgICAg
ICAgIHVzZV9oaWdocGFzc19maWx0ZXIsCi0gICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2Nr
UHJvY2Vzc29yPigKLSAgICAgICAgICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZShBZGp1c3RD
b25maWcoY29uZmlnKSwgc2FtcGxlX3JhdGVfaHopKSkge30KKyAgICA6IEVjaG9DYW5jZWxsZXIz
KEFkanVzdENvbmZpZyhjb25maWcpLAorICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX3JhdGVf
aHosCisgICAgICAgICAgICAgICAgICAgICB1c2VfaGlnaHBhc3NfZmlsdGVyLAorICAgICAgICAg
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBFbmFibGVOZXdSZW5kZXJCdWZmZXJpbmcoKSAmJgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmJ1ZmZlcmluZy51c2VfbmV3X3JlbmRlcl9idWZm
ZXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBCbG9ja1Byb2Nlc3Nvcjo6Q3Jl
YXRlMihBZGp1c3RDb25maWcoY29uZmlnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfcmF0ZV9oeikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlKEFkanVzdENvbmZpZyhjb25m
aWcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2FtcGxlX3JhdGVfaHopKSkge30KIEVjaG9DYW5jZWxsZXIzOjpFY2hvQ2FuY2VsbGVyMyhj
b25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHVzZV9oaWdocGFzc19maWx0ZXIsCkBAIC00MjUsNiArNDQ2LDEwIEBAIHZvaWQg
RWNob0NhbmNlbGxlcjM6OlByb2Nlc3NDYXB0dXJlKEF1ZGlvQnVmZmVyKiBjYXB0dXJlLCBib29s
IGxldmVsX2NoYW5nZSkgewogICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfY2FsbF9vcmRl
ciIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KEVjaG9DYW5jZWxs
ZXIzQXBpQ2FsbDo6a0NhcHR1cmUpKTsKIAorICAvLyBSZXBvcnQgY2FwdHVyZSBjYWxsIGluIHRo
ZSBtZXRyaWNzIGFuZCBwZXJpb2RpY2FsbHkgdXBkYXRlIEFQSSBjYWxsCisgIC8vIG1ldHJpY3Mu
CisgIGFwaV9jYWxsX21ldHJpY3NfLlJlcG9ydENhcHR1cmVDYWxsKCk7CisKICAgLy8gT3B0aW9u
YWxseSBkZWxheSB0aGUgY2FwdHVyZSBzaWduYWwuCiAgIGlmIChjb25maWdfLmRlbGF5LmZpeGVk
X2NhcHR1cmVfZGVsYXlfc2FtcGxlcyA+IDApIHsKICAgICBibG9ja19kZWxheV9idWZmZXJfLkRl
bGF5U2lnbmFsKGNhcHR1cmUpOwpAQCAtNDc5LDYgKzUwNCw5IEBAIHZvaWQgRWNob0NhbmNlbGxl
cjM6OkVtcHR5UmVuZGVyUXVldWUoKSB7CiAgIGJvb2wgZnJhbWVfdG9fYnVmZmVyID0KICAgICAg
IHJlbmRlcl90cmFuc2Zlcl9xdWV1ZV8uUmVtb3ZlKCZyZW5kZXJfcXVldWVfb3V0cHV0X2ZyYW1l
Xyk7CiAgIHdoaWxlIChmcmFtZV90b19idWZmZXIpIHsKKyAgICAvLyBSZXBvcnQgcmVuZGVyIGNh
bGwgaW4gdGhlIG1ldHJpY3MuCisgICAgYXBpX2NhbGxfbWV0cmljc18uUmVwb3J0UmVuZGVyQ2Fs
bCgpOworCiAgICAgQnVmZmVyUmVuZGVyRnJhbWVDb250ZW50KCZyZW5kZXJfcXVldWVfb3V0cHV0
X2ZyYW1lXywgMCwgJnJlbmRlcl9ibG9ja2VyXywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmxvY2tfcHJvY2Vzc29yXy5nZXQoKSwgJmJsb2NrXywgJnN1Yl9mcmFtZV92aWV3Xyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvZWNob19jYW5jZWxsZXIzLmgKaW5kZXggZjU1MjBiYTNhY2U1YzM0OTJhNmIyYTI2ODk2
Yzg4MzI1NWY4ODU1YS4uNjcxZDI3MTY3Njc1YzY2Yzk5YzNlMjFlMjU3MmM2YmFmNzM0ZTRmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19jYW5jZWxsZXIzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvZWNob19jYW5jZWxsZXIzLmgKQEAgLTExLDcgKzExLDE0IEBACiAjaWZuZGVmIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0VDSE9fQ0FOQ0VMTEVSM19IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FQ0hPX0NBTkNFTExFUjNfSF8KIAorI2luY2x1
ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNp
bmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNl
bGxlcjNfY29uZmlnLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY29udHJvbC5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxsX2ppdHRlcl9tZXRy
aWNzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfZGVs
YXlfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxv
Y2tfZnJhbWVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxv
Y2tfcHJvY2Vzc29yLmgiCkBAIC0xOSw5ICsyNiwxMSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2ZyYW1lX2Jsb2NrZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3JhY2VfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N3YXBfcXVl
dWUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKQEAgLTEzMiw2ICsxNDEsNyBAQCBjbGFzcyBFY2hvQ2FuY2VsbGVyMyA6
IHB1YmxpYyBFY2hvQ29udHJvbCB7CiAgIHN0ZDo6dmVjdG9yPHJ0Yzo6QXJyYXlWaWV3PGZsb2F0
Pj4gc3ViX2ZyYW1lX3ZpZXdfCiAgICAgICBSVENfR1VBUkRFRF9CWShjYXB0dXJlX3JhY2VfY2hl
Y2tlcl8pOwogICBCbG9ja0RlbGF5QnVmZmVyIGJsb2NrX2RlbGF5X2J1ZmZlcl8gUlRDX0dVQVJE
RURfQlkoY2FwdHVyZV9yYWNlX2NoZWNrZXJfKTsKKyAgQXBpQ2FsbEppdHRlck1ldHJpY3MgYXBp
X2NhbGxfbWV0cmljc18gUlRDX0dVQVJERURfQlkoY2FwdHVyZV9yYWNlX2NoZWNrZXJfKTsKIAog
ICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKEVjaG9DYW5jZWxsZXIzKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9yLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvci5jYwppbmRleCA2Mzhk
ZGM0NDA4NGU4NWYyYWM2NzBjOWVmNTIwMjNlY2U0ZjZhMzZmLi42MDY5ZWQ2YmU2OTdkYmM4MzE1
MTcwMzAzNzYzZjZmM2M1Zjk4ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3Bh
dGhfZGVsYXlfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxh
eV9lc3RpbWF0b3IuY2MKQEAgLTksMzEgKzksMjEgQEAKICAqLwogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3IuaCIKIAotI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxhcnJheT4KIAogI2luY2x1ZGUgImFwaS9hdWRp
by9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmll
bGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2Ugewotc2l6ZV90IEdl
dERvd25TYW1wbGluZ0ZhY3Rvcihjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKSB7
Ci0gIC8vIERvIG5vdCB1c2UgZG93biBzYW1wbGluZyBmYWN0b3IgOCBpZiBraWxsIHN3aXRjaCBp
cyB0cmlnZ2VyZWQuCi0gIHJldHVybiAoY29uZmlnLmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9y
ID09IDggJiYKLSAgICAgICAgICBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM0Rv
d25TYW1wbGluZ0ZhY3RvcjhLaWxsU3dpdGNoIikpCi0gICAgICAgICAgICAgPyA0Ci0gICAgICAg
ICAgICAgOiBjb25maWcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3I7Ci19Ci19ICAvLyBuYW1l
c3BhY2UKIAogRWNob1BhdGhEZWxheUVzdGltYXRvcjo6RWNob1BhdGhEZWxheUVzdGltYXRvcigK
ICAgICBBcG1EYXRhRHVtcGVyKiBkYXRhX2R1bXBlciwKICAgICBjb25zdCBFY2hvQ2FuY2VsbGVy
M0NvbmZpZyYgY29uZmlnKQogICAgIDogZGF0YV9kdW1wZXJfKGRhdGFfZHVtcGVyKSwKLSAgICAg
IGRvd25fc2FtcGxpbmdfZmFjdG9yXyhHZXREb3duU2FtcGxpbmdGYWN0b3IoY29uZmlnKSksCisg
ICAgICBkb3duX3NhbXBsaW5nX2ZhY3Rvcl8oY29uZmlnLmRlbGF5LmRvd25fc2FtcGxpbmdfZmFj
dG9yKSwKICAgICAgIHN1Yl9ibG9ja19zaXplXyhkb3duX3NhbXBsaW5nX2ZhY3Rvcl8gIT0gMAog
ICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtCbG9ja1NpemUgLyBkb3duX3NhbXBsaW5nX2Zh
Y3Rvcl8KICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrQmxvY2tTaXplKSwKQEAgLTQ1LDcg
KzM1LDcgQEAgRWNob1BhdGhEZWxheUVzdGltYXRvcjo6RWNob1BhdGhEZWxheUVzdGltYXRvcigK
ICAgICAgICAgICBrTWF0Y2hlZEZpbHRlcldpbmRvd1NpemVTdWJCbG9ja3MsCiAgICAgICAgICAg
Y29uZmlnLmRlbGF5Lm51bV9maWx0ZXJzLAogICAgICAgICAgIGtNYXRjaGVkRmlsdGVyQWxpZ25t
ZW50U2hpZnRTaXplU3ViQmxvY2tzLAotICAgICAgICAgIEdldERvd25TYW1wbGluZ0ZhY3Rvcihj
b25maWcpID09IDgKKyAgICAgICAgICBjb25maWcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3Ig
PT0gOAogICAgICAgICAgICAgICA/IGNvbmZpZy5yZW5kZXJfbGV2ZWxzLnBvb3JfZXhjaXRhdGlv
bl9yZW5kZXJfbGltaXRfZHM4CiAgICAgICAgICAgICAgIDogY29uZmlnLnJlbmRlcl9sZXZlbHMu
cG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdCwKICAgICAgICAgICBjb25maWcuZGVsYXkuZGVs
YXlfZXN0aW1hdGVfc21vb3RoaW5nLApAQCAtNTksMTMgKzQ5LDggQEAgRWNob1BhdGhEZWxheUVz
dGltYXRvcjo6RWNob1BhdGhEZWxheUVzdGltYXRvcigKIAogRWNob1BhdGhEZWxheUVzdGltYXRv
cjo6fkVjaG9QYXRoRGVsYXlFc3RpbWF0b3IoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgRWNob1BhdGhE
ZWxheUVzdGltYXRvcjo6UmVzZXQoYm9vbCBzb2Z0X3Jlc2V0KSB7Ci0gIGlmICghc29mdF9yZXNl
dCkgewotICAgIG1hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yXy5SZXNldCgpOwotICB9Ci0g
IG1hdGNoZWRfZmlsdGVyXy5SZXNldCgpOwotICBvbGRfYWdncmVnYXRlZF9sYWdfID0gYWJzbDo6
bnVsbG9wdDsKLSAgY29uc2lzdGVudF9lc3RpbWF0ZV9jb3VudGVyXyA9IDA7Cit2b2lkIEVjaG9Q
YXRoRGVsYXlFc3RpbWF0b3I6OlJlc2V0KGJvb2wgcmVzZXRfZGVsYXlfY29uZmlkZW5jZSkgewor
ICBSZXNldCh0cnVlLCByZXNldF9kZWxheV9jb25maWRlbmNlKTsKIH0KIAogYWJzbDo6b3B0aW9u
YWw8RGVsYXlFc3RpbWF0ZT4gRWNob1BhdGhEZWxheUVzdGltYXRvcjo6RXN0aW1hdGVEZWxheSgK
QEAgLTg4LDYgKzczLDEyIEBAIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IEVjaG9QYXRo
RGVsYXlFc3RpbWF0b3I6OkVzdGltYXRlRGVsYXkoCiAgICAgICBtYXRjaGVkX2ZpbHRlcl9sYWdf
YWdncmVnYXRvcl8uQWdncmVnYXRlKAogICAgICAgICAgIG1hdGNoZWRfZmlsdGVyXy5HZXRMYWdF
c3RpbWF0ZXMoKSk7CiAKKyAgLy8gUnVuIGNsb2NrZHJpZnQgZGV0ZWN0aW9uLgorICBpZiAoYWdn
cmVnYXRlZF9tYXRjaGVkX2ZpbHRlcl9sYWcgJiYKKyAgICAgICgqYWdncmVnYXRlZF9tYXRjaGVk
X2ZpbHRlcl9sYWcpLnF1YWxpdHkgPT0KKyAgICAgICAgICBEZWxheUVzdGltYXRlOjpRdWFsaXR5
OjprUmVmaW5lZCkKKyAgICBjbG9ja2RyaWZ0X2RldGVjdG9yXy5VcGRhdGUoKCphZ2dyZWdhdGVk
X21hdGNoZWRfZmlsdGVyX2xhZykuZGVsYXkpOworCiAgIC8vIFRPRE8ocGVhaCk6IE1vdmUgdGhp
cyBsb2dnaW5nIG91dHNpZGUgb2YgdGhpcyBjbGFzcyBvbmNlIEVjaG9DYW5jZWxsZXIzCiAgIC8v
IGRldmVsb3BtZW50IGlzIGRvbmUuCiAgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygKQEAgLTExMiwx
MCArMTAzLDE5IEBAIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IEVjaG9QYXRoRGVsYXlF
c3RpbWF0b3I6OkVzdGltYXRlRGVsYXkoCiAgIG9sZF9hZ2dyZWdhdGVkX2xhZ18gPSBhZ2dyZWdh
dGVkX21hdGNoZWRfZmlsdGVyX2xhZzsKICAgY29uc3RleHByIHNpemVfdCBrTnVtQmxvY2tzUGVy
U2Vjb25kQnkyID0ga051bUJsb2Nrc1BlclNlY29uZCAvIDI7CiAgIGlmIChjb25zaXN0ZW50X2Vz
dGltYXRlX2NvdW50ZXJfID4ga051bUJsb2Nrc1BlclNlY29uZEJ5MikgewotICAgIFJlc2V0KHRy
dWUpOworICAgIFJlc2V0KGZhbHNlLCBmYWxzZSk7CiAgIH0KIAogICByZXR1cm4gYWdncmVnYXRl
ZF9tYXRjaGVkX2ZpbHRlcl9sYWc7CiB9CiAKK3ZvaWQgRWNob1BhdGhEZWxheUVzdGltYXRvcjo6
UmVzZXQoYm9vbCByZXNldF9sYWdfYWdncmVnYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCByZXNldF9kZWxheV9jb25maWRlbmNlKSB7CisgIGlmIChyZXNldF9s
YWdfYWdncmVnYXRvcikgeworICAgIG1hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yXy5SZXNl
dChyZXNldF9kZWxheV9jb25maWRlbmNlKTsKKyAgfQorICBtYXRjaGVkX2ZpbHRlcl8uUmVzZXQo
KTsKKyAgb2xkX2FnZ3JlZ2F0ZWRfbGFnXyA9IGFic2w6Om51bGxvcHQ7CisgIGNvbnNpc3RlbnRf
ZXN0aW1hdGVfY291bnRlcl8gPSAwOworfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvci5oCmluZGV4IGNlYTlhYmNiNTE1MTY5
Y2Q3YmMxZmRkM2Y3NzFlNTAzOTRiNjVhNzAuLjFmMTQ3MzVkMWE1MWFmYjBkNGRmYjNhZTY4NjZi
OTJhODI4MDg3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxheV9l
c3RpbWF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9y
LmgKQEAgLTExLDEzICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdf
QUVDM19FQ0hPX1BBVEhfREVMQVlfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9f
UFJPQ0VTU0lOR19BRUMzX0VDSE9fUEFUSF9ERUxBWV9FU1RJTUFUT1JfSF8KIAotI2luY2x1ZGUg
PHZlY3Rvcj4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgor
I2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2RlY2ltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2RlbGF5X2VzdGltYXRlLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXJfbGFnX2FnZ3Jl
Z2F0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCkBAIC0yNSw2
ICsyNSw4IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgQXBtRGF0YUR1bXBlcjsKK3N0
cnVjdCBEb3duc2FtcGxlZFJlbmRlckJ1ZmZlcjsKK3N0cnVjdCBFY2hvQ2FuY2VsbGVyM0NvbmZp
ZzsKIAogLy8gRXN0aW1hdGVzIHRoZSBkZWxheSBvZiB0aGUgZWNobyBwYXRoLgogY2xhc3MgRWNo
b1BhdGhEZWxheUVzdGltYXRvciB7CkBAIC0zMyw5ICszNSw5IEBAIGNsYXNzIEVjaG9QYXRoRGVs
YXlFc3RpbWF0b3IgewogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVjaG9DYW5jZWxs
ZXIzQ29uZmlnJiBjb25maWcpOwogICB+RWNob1BhdGhEZWxheUVzdGltYXRvcigpOwogCi0gIC8v
IFJlc2V0cyB0aGUgZXN0aW1hdGlvbi4gSWYgdGhlIHNvZnQtcmVzZXQgaXMgc3BlY2lmaWVkLCBv
bmx5ICB0aGUgbWF0Y2hlZAotICAvLyBmaWx0ZXJzIGFyZSByZXNldC4KLSAgdm9pZCBSZXNldChi
b29sIHNvZnRfcmVzZXQpOworICAvLyBSZXNldHMgdGhlIGVzdGltYXRpb24uIElmIHRoZSBkZWxh
eSBjb25maWRlbmNlIGlzIHJlc2V0LCB0aGUgcmVzZXQgYmVoYXZpb3IKKyAgLy8gaXMgYXMgaWYg
dGhlIGNhbGwgaXMgcmVzdGFydGVkLgorICB2b2lkIFJlc2V0KGJvb2wgcmVzZXRfZGVsYXlfY29u
ZmlkZW5jZSk7CiAKICAgLy8gUHJvZHVjZSBhIGRlbGF5IGVzdGltYXRlIGlmIHN1Y2ggaXMgYXZh
bGlhYmxlLgogICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBFc3RpbWF0ZURlbGF5KApA
QCAtNDgsNiArNTAsMTEgQEAgY2xhc3MgRWNob1BhdGhEZWxheUVzdGltYXRvciB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bl9zYW1wbGluZ19mYWN0b3JfKTsK
ICAgfQogCisgIC8vIFJldHVybnMgdGhlIGxldmVsIG9mIGRldGVjdGVkIGNsb2NrZHJpZnQuCisg
IENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWwgQ2xvY2tkcmlmdCgpIGNvbnN0IHsKKyAgICByZXR1
cm4gY2xvY2tkcmlmdF9kZXRlY3Rvcl8uQ2xvY2tkcmlmdExldmVsKCk7CisgIH0KKwogIHByaXZh
dGU6CiAgIEFwbURhdGFEdW1wZXIqIGNvbnN0IGRhdGFfZHVtcGVyXzsKICAgY29uc3Qgc2l6ZV90
IGRvd25fc2FtcGxpbmdfZmFjdG9yXzsKQEAgLTU3LDYgKzY0LDEwIEBAIGNsYXNzIEVjaG9QYXRo
RGVsYXlFc3RpbWF0b3IgewogICBNYXRjaGVkRmlsdGVyTGFnQWdncmVnYXRvciBtYXRjaGVkX2Zp
bHRlcl9sYWdfYWdncmVnYXRvcl87CiAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IG9s
ZF9hZ2dyZWdhdGVkX2xhZ187CiAgIHNpemVfdCBjb25zaXN0ZW50X2VzdGltYXRlX2NvdW50ZXJf
ID0gMDsKKyAgQ2xvY2tkcmlmdERldGVjdG9yIGNsb2NrZHJpZnRfZGV0ZWN0b3JfOworCisgIC8v
IEludGVybmFsIHJlc2V0IG1ldGhvZCB3aXRoIG1vcmUgZ3JhbnVsYXJpdHkuCisgIHZvaWQgUmVz
ZXQoYm9vbCByZXNldF9sYWdfYWdncmVnYXRvciwgYm9vbCByZXNldF9kZWxheV9jb25maWRlbmNl
KTsKIAogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEVjaG9QYXRoRGVsYXlFc3RpbWF0
b3IpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxheV9lc3Rp
bWF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfZGVsYXlfZXN0aW1h
dG9yX3VuaXR0ZXN0LmNjCmluZGV4IDMxMWE0YTIyZDVmOGVlMWVjNzY0NzcxMDUwZGQyOWVhMWY2
NDBlM2UuLmE0ZTMxMzNiYjViYWFlMThiMzY1ZWYzNzU4YzRkYmQ2MTFjZjA1NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvcl91bml0dGVzdC5j
YwpAQCAtMzksNyArMzksNyBAQCBURVNUKEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IsIEJhc2ljQXBp
Q2FsbHMpIHsKICAgQXBtRGF0YUR1bXBlciBkYXRhX2R1bXBlcigwKTsKICAgRWNob0NhbmNlbGxl
cjNDb25maWcgY29uZmlnOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJl
bmRlcl9kZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZp
ZywgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAg
IEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IgZXN0aW1hdG9yKCZkYXRhX2R1bXBlciwgY29uZmlnKTsK
ICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiByZW5kZXIoMywgc3RkOjp2ZWN0b3I8
ZmxvYXQ+KGtCbG9ja1NpemUpKTsKICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGNhcHR1cmUoa0Jsb2Nr
U2l6ZSk7CkBAIC02NCwxMiArNjQsOSBAQCBURVNUKEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IsIERl
bGF5RXN0aW1hdGlvbikgewogICAgIGNvbmZpZy5kZWxheS5udW1fZmlsdGVycyA9IDEwOwogICAg
IGZvciAoc2l6ZV90IGRlbGF5X3NhbXBsZXMgOiB7MzAsIDY0LCAxNTAsIDIwMCwgODAwLCA0MDAw
fSkgewogICAgICAgU0NPUEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQoZGVsYXlfc2FtcGxlcywg
ZG93bl9zYW1wbGluZ19mYWN0b3IpKTsKLQotICAgICAgY29uZmlnLmRlbGF5LmFwaV9jYWxsX2pp
dHRlcl9ibG9ja3MgPSA1OwogICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVy
PiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVh
dGUoY29uZmlnLCAzKSk7Ci0gICAgICBEZWxheUJ1ZmZlcjxmbG9hdD4gc2lnbmFsX2RlbGF5X2J1
ZmZlcigKLSAgICAgICAgICBkZWxheV9zYW1wbGVzICsgMiAqIGNvbmZpZy5kZWxheS5hcGlfY2Fs
bF9qaXR0ZXJfYmxvY2tzICogNjQpOworICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVh
dGUyKGNvbmZpZywgMykpOworICAgICAgRGVsYXlCdWZmZXI8ZmxvYXQ+IHNpZ25hbF9kZWxheV9i
dWZmZXIoZGVsYXlfc2FtcGxlcyk7CiAgICAgICBFY2hvUGF0aERlbGF5RXN0aW1hdG9yIGVzdGlt
YXRvcigmZGF0YV9kdW1wZXIsIGNvbmZpZyk7CiAKICAgICAgIGFic2w6Om9wdGlvbmFsPERlbGF5
RXN0aW1hdGU+IGVzdGltYXRlZF9kZWxheV9zYW1wbGVzOwpAQCAtOTcsOSArOTQsNyBAQCBURVNU
KEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IsIERlbGF5RXN0aW1hdGlvbikgewogICAgICAgICAvLyBk
b21haW4uCiAgICAgICAgIHNpemVfdCBkZWxheV9kcyA9IGRlbGF5X3NhbXBsZXMgLyBkb3duX3Nh
bXBsaW5nX2ZhY3RvcjsKICAgICAgICAgc2l6ZV90IGVzdGltYXRlZF9kZWxheV9kcyA9Ci0gICAg
ICAgICAgICAoZXN0aW1hdGVkX2RlbGF5X3NhbXBsZXMtPmRlbGF5IC0KLSAgICAgICAgICAgICAo
Y29uZmlnLmRlbGF5LmFwaV9jYWxsX2ppdHRlcl9ibG9ja3MgKyAxKSAqIDY0KSAvCi0gICAgICAg
ICAgICBkb3duX3NhbXBsaW5nX2ZhY3RvcjsKKyAgICAgICAgICAgIGVzdGltYXRlZF9kZWxheV9z
YW1wbGVzLT5kZWxheSAvIGRvd25fc2FtcGxpbmdfZmFjdG9yOwogICAgICAgICBFWFBFQ1RfTkVB
UihkZWxheV9kcywgZXN0aW1hdGVkX2RlbGF5X2RzLCAxKTsKICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgIEFERF9GQUlMVVJFKCk7CkBAIC0xMTgsNyArMTEzLDcgQEAgVEVTVChFY2hvUGF0aERlbGF5
RXN0aW1hdG9yLCBOb0RlbGF5RXN0aW1hdGVzRm9yTG93TGV2ZWxSZW5kZXJTaWduYWxzKSB7CiAg
IEFwbURhdGFEdW1wZXIgZGF0YV9kdW1wZXIoMCk7CiAgIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3Ig
ZXN0aW1hdG9yKCZkYXRhX2R1bXBlciwgY29uZmlnKTsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
ckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVsYXlCdWZm
ZXI6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCAzKSk7CisgICAgICBSZW5kZXJEZWxh
eUJ1ZmZlcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCAzKSk7CiAgIGZvciAoc2l6
ZV90IGsgPSAwOyBrIDwgMTAwOyArK2spIHsKICAgICBSYW5kb21pemVTYW1wbGVWZWN0b3IoJnJh
bmRvbV9nZW5lcmF0b3IsIHJlbmRlclswXSk7CiAgICAgZm9yIChhdXRvJiByZW5kZXJfayA6IHJl
bmRlclswXSkgewpAQCAtMTQyLDcgKzEzNyw3IEBAIFRFU1QoRWNob1BhdGhEZWxheUVzdGltYXRv
ciwgRElTQUJMRURfV3JvbmdSZW5kZXJCbG9ja1NpemUpIHsKICAgRWNob0NhbmNlbGxlcjNDb25m
aWcgY29uZmlnOwogICBFY2hvUGF0aERlbGF5RXN0aW1hdG9yIGVzdGltYXRvcigmZGF0YV9kdW1w
ZXIsIGNvbmZpZyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVy
X2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAz
KSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKICAgc3Rk
Ojp2ZWN0b3I8ZmxvYXQ+IGNhcHR1cmUoa0Jsb2NrU2l6ZSk7CiAgIEVYUEVDVF9ERUFUSChlc3Rp
bWF0b3IuRXN0aW1hdGVEZWxheSgKICAgICAgICAgICAgICAgICAgICByZW5kZXJfZGVsYXlfYnVm
ZmVyLT5HZXREb3duc2FtcGxlZFJlbmRlckJ1ZmZlcigpLCBjYXB0dXJlKSwKQEAgLTE1Nyw3ICsx
NTIsNyBAQCBURVNUKEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IsIFdyb25nQ2FwdHVyZUJsb2NrU2l6
ZSkgewogICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CiAgIEVjaG9QYXRoRGVsYXlFc3Rp
bWF0b3IgZXN0aW1hdG9yKCZkYXRhX2R1bXBlciwgY29uZmlnKTsKICAgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVs
YXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpD
cmVhdGUyKGNvbmZpZywgMykpOwogICBzdGQ6OnZlY3RvcjxmbG9hdD4gY2FwdHVyZShzdGQ6OnZl
Y3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSAtIDEpKTsKICAgRVhQRUNUX0RFQVRIKGVzdGltYXRvci5F
c3RpbWF0ZURlbGF5KAogICAgICAgICAgICAgICAgICAgIHJlbmRlcl9kZWxheV9idWZmZXItPkdl
dERvd25zYW1wbGVkUmVuZGVyQnVmZmVyKCksIGNhcHR1cmUpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvZWNob19yZW1vdmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyLmNj
CmluZGV4IGFjZGFmMzEwNGI5ZmFlMjgwOTlhMDJkMWQ2Njg2YzRlNWYyNzMxNTYuLmNmYjczOTUx
OTkyY2Q5Nzg0ZDMzMjhmNTY5OGJmYjljYTdlMjQzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2VjaG9fcmVtb3Zlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXIuY2MK
QEAgLTEwLDI2ICsxMCwyOSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2VjaG9fcmVtb3Zlci5oIgogCiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxt
ZW1vcnk+Ci0jaW5jbHVkZSA8bnVtZXJpYz4KLSNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRl
ICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FlYzNfY29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvYWVjM19mZnQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9h
ZWNfc3RhdGUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21m
b3J0X25vaXNlX2dlbmVyYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2VjaG9fcGF0aF92YXJpYWJpbGl0eS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlcl9tZXRyaWNzLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2RhdGEuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hvX2VzdGlt
YXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0
b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9y
X291dHB1dC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHBy
ZXNzaW9uX2ZpbHRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3N1cHByZXNzaW9uX2dhaW4uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
bG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCkBAIC0xNzUsNyArMTc4LDcg
QEAgRWNob1JlbW92ZXJJbXBsOjpFY2hvUmVtb3ZlckltcGwoY29uc3QgRWNob0NhbmNlbGxlcjND
b25maWcmIGNvbmZpZywKICAgICAgIHN1YnRyYWN0b3JfKGNvbmZpZywgZGF0YV9kdW1wZXJfLmdl
dCgpLCBvcHRpbWl6YXRpb25fKSwKICAgICAgIHN1cHByZXNzaW9uX2dhaW5fKGNvbmZpZ18sIG9w
dGltaXphdGlvbl8sIHNhbXBsZV9yYXRlX2h6KSwKICAgICAgIGNuZ18ob3B0aW1pemF0aW9uXyks
Ci0gICAgICBzdXBwcmVzc2lvbl9maWx0ZXJfKHNhbXBsZV9yYXRlX2h6XyksCisgICAgICBzdXBw
cmVzc2lvbl9maWx0ZXJfKG9wdGltaXphdGlvbl8sIHNhbXBsZV9yYXRlX2h6XyksCiAgICAgICBy
ZW5kZXJfc2lnbmFsX2FuYWx5emVyXyhjb25maWdfKSwKICAgICAgIHJlc2lkdWFsX2VjaG9fZXN0
aW1hdG9yXyhjb25maWdfKSwKICAgICAgIGFlY19zdGF0ZV8oY29uZmlnXykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21ldHJpY3MuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9lY2hvX3JlbW92ZXJfbWV0cmljcy5jYwppbmRleCBhMDQwMjZiNGY1ZjU1YmZiNGU0MmE5OGIz
MDYzZGQ0Mzc3MDdjMzY2Li5kYTdhMjI0ZTg2M2E2NDYzMGI4Y2VhMjk4MDEwOTdmOWRjZTY5Njgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJfbWV0cmljcy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJfbWV0cmljcy5jYwpAQCAtMTEsOSArMTEsMTEg
QEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJf
bWV0cmljcy5oIgogCiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxudW1lcmljPgogCisjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIK
ICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlcl9tZXRyaWNzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9lY2hvX3JlbW92ZXJfbWV0cmljcy5oCmluZGV4IDE3YjgwM2ExY2Y5ODg4YmQwYjQ5Yjg3Yzc1
NWNiY2RhM2VmMDEzM2QuLjA3MDdhNWYwMzFkOWFlNjE5YjEzZDFmMTUyZTY5MDJhYjQzZmFkNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlcl9tZXRyaWNzLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21ldHJpY3MuaApAQCAtMTEsNiArMTEsOSBAQAog
I2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FQ0hPX1JFTU9WRVJfTUVUUklD
U19IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FQ0hPX1JFTU9WRVJf
TUVUUklDU19IXwogCisjaW5jbHVkZSA8YXJyYXk+CisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2FlY19zdGF0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVj
dG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX3VuaXR0ZXN0LmNjCmluZGV4
IGRhMDNmNGM4ZThkYjdkZjU2M2ExYTI4ZDAyM2EwYTMzMzNkZWE5MTcuLjhiZjc2YzQwNjBkNjIw
NDViODg4Yjc2NGE1NGIwOGNiOTdjNmQ5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Vj
aG9fcmVtb3Zlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJf
dW5pdHRlc3QuY2MKQEAgLTQ4LDcgKzQ4LDcgQEAgVEVTVChFY2hvUmVtb3ZlciwgQmFzaWNBcGlD
YWxscykgewogICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUpKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RWNob1JlbW92ZXI+IHJlbW92ZXIoCiAgICAgICAgIEVjaG9SZW1vdmVy
OjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgcmF0ZSkpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlcihSZW5kZXJEZWxheUJ1ZmZlcjo6
Q3JlYXRlKAorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1
ZmZlcihSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMigKICAgICAgICAgRWNob0NhbmNlbGxlcjND
b25maWcoKSwgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAKICAgICBzdGQ6OnZlY3RvcjxzdGQ6
OnZlY3RvcjxmbG9hdD4+IHJlbmRlcihOdW1CYW5kc0ZvclJhdGUocmF0ZSksCkBAIC04OSw3ICs4
OSw3IEBAIFRFU1QoRWNob1JlbW92ZXIsIFdyb25nQ2FwdHVyZUJsb2NrU2l6ZSkgewogICAgIFND
T1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RWNob1JlbW92ZXI+IHJlbW92ZXIoCiAgICAgICAgIEVjaG9SZW1vdmVyOjpDcmVhdGUoRWNob0Nh
bmNlbGxlcjNDb25maWcoKSwgcmF0ZSkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxh
eUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlcihSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKAorICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlcihSZW5kZXJEZWxh
eUJ1ZmZlcjo6Q3JlYXRlMigKICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWcoKSwgTnVtQmFu
ZHNGb3JSYXRlKHJhdGUpKSk7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiBj
YXB0dXJlKAogICAgICAgICBOdW1CYW5kc0ZvclJhdGUocmF0ZSksIHN0ZDo6dmVjdG9yPGZsb2F0
PihrQmxvY2tTaXplIC0gMSwgMC5mKSk7CkBAIC0xMTEsNyArMTExLDcgQEAgVEVTVChFY2hvUmVt
b3ZlciwgRElTQUJMRURfV3JvbmdDYXB0dXJlTnVtQmFuZHMpIHsKICAgICBTQ09QRURfVFJBQ0Uo
UHJvZHVjZURlYnVnVGV4dChyYXRlKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9SZW1vdmVy
PiByZW1vdmVyKAogICAgICAgICBFY2hvUmVtb3Zlcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29u
ZmlnKCksIHJhdGUpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJl
bmRlcl9idWZmZXIoUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZSgKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIoUmVuZGVyRGVsYXlCdWZmZXI6OkNy
ZWF0ZTIoCiAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIE51bUJhbmRzRm9yUmF0ZShy
YXRlKSkpOwogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gY2FwdHVyZSgKICAg
ICAgICAgTnVtQmFuZHNGb3JSYXRlKHJhdGUgPT0gNDgwMDAgPyAxNjAwMCA6IHJhdGUgKyAxNjAw
MCksCkBAIC0xMzEsNyArMTMxLDcgQEAgVEVTVChFY2hvUmVtb3ZlciwgTnVsbENhcHR1cmUpIHsK
ICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9SZW1vdmVyPiByZW1vdmVyKAogICAgICAgRWNob1JlbW92
ZXI6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCA4MDAwKSk7CiAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5
QnVmZmVyOjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgMykpOworICAgICAgUmVuZGVy
RGVsYXlCdWZmZXI6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgMykpOwogICBFY2hv
UGF0aFZhcmlhYmlsaXR5IGVjaG9fcGF0aF92YXJpYWJpbGl0eSgKICAgICAgIGZhbHNlLCBFY2hv
UGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6OmtOb25lLCBmYWxzZSk7CiAgIEVYUEVD
VF9ERUFUSCgKQEAgLTE2MSw3ICsxNjEsNyBAQCBURVNUKEVjaG9SZW1vdmVyLCBCYXNpY0VjaG9S
ZW1vdmFsKSB7CiAgICAgICBjb25maWcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3Mg
PSAwOwogICAgICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9SZW1vdmVyPiByZW1vdmVyKEVjaG9SZW1v
dmVyOjpDcmVhdGUoY29uZmlnLCByYXRlKSk7CiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
RGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIoCi0gICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6
OkNyZWF0ZShjb25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOworICAgICAgICAgIFJlbmRl
ckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAg
ICAgICByZW5kZXJfYnVmZmVyLT5TZXREZWxheShkZWxheV9zYW1wbGVzIC8ga0Jsb2NrU2l6ZSk7
CiAKICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZWxheUJ1ZmZlcjxmbG9hdD4+
PiBkZWxheV9idWZmZXJzKHguc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Vy
bF9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxfZXN0aW1hdG9yLmNjCmluZGV4IDJk
YTljZDg4ODM1MDQwNmJmNzg5MDI4MDZmZTU2NDk2ODllNDRlMTAuLjg1YjFlMDIyZGEyZjg3MjY2
ZTBlODU3MmE3NDFjYzg0YjExYzg2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybF9l
c3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsX2VzdGltYXRvci5jYwpAQCAtMTMs
NiArMTMsOCBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxudW1lcmljPgogCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBuYW1l
c3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsX2VzdGltYXRvci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZXJsX2VzdGltYXRvci5oCmluZGV4IGRhY2Q1NDZhNmRlNzMyZjYyNWI1OTli
ZDZkMDQwMzFjOTBiMDIzMzEuLjI5NzE4YzM3ODM2ZThhOGJkMTU2Mjc5MzcxZDgyNzJmMDBjMmRi
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybF9lc3RpbWF0b3IuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9lcmxfZXN0aW1hdG9yLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRVJMX0VTVElNQVRPUl9IXwogI2RlZmluZSBNT0RV
TEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19FUkxfRVNUSU1BVE9SX0hfCiAKKyNpbmNsdWRlIDxz
dGRkZWYuaD4KICNpbmNsdWRlIDxhcnJheT4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2VybGVfZXN0aW1hdG9yLmNjCmluZGV4IDcxMTA4NWY5NmYwODk0YzdjNWMyOWM4NmU3
MjJlOTc3YmI2YjRmNWQuLjY1NmE5YzdmZGY1MzA2NjFlNTI2ZjU1YzA3ZGUzYjllYTY4MGVkOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmNjCkBAIC0xMCwxOSArMTAsMTggQEAKIAogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmgiCiAKLSNp
bmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBFcmxlRXN0aW1hdG9yOjpFcmxlRXN0aW1hdG9y
KHNpemVfdCBzdGFydHVwX3BoYXNlX2xlbmd0aF9ibG9ja3NfLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBtaW5fZXJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgbWF4X2VybGVfbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG1h
eF9lcmxlX2hmKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZyYgY29uZmlnKQogICAgIDogc3RhcnR1cF9waGFzZV9sZW5ndGhfYmxvY2tzX18o
c3RhcnR1cF9waGFzZV9sZW5ndGhfYmxvY2tzXyksCi0gICAgICBmdWxsYmFuZF9lcmxlX2VzdGlt
YXRvcl8obWluX2VybGUsIG1heF9lcmxlX2xmKSwKLSAgICAgIHN1YmJhbmRfZXJsZV9lc3RpbWF0
b3JfKG1pbl9lcmxlLCBtYXhfZXJsZV9sZiwgbWF4X2VybGVfaGYpIHsKKyAgICAgIHVzZV9zaWdu
YWxfZGVwZW5kZW50X2VybGVfKGNvbmZpZy5lcmxlLm51bV9zZWN0aW9ucyA+IDEpLAorICAgICAg
ZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3JfKGNvbmZpZy5lcmxlLm1pbiwgY29uZmlnLmVybGUubWF4
X2wpLAorICAgICAgc3ViYmFuZF9lcmxlX2VzdGltYXRvcl8oY29uZmlnKSwKKyAgICAgIHNpZ25h
bF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3JfKGNvbmZpZykgewogICBSZXNldCh0cnVlKTsKIH0K
IApAQCAtMzEsMjAgKzMwLDI1IEBAIEVybGVFc3RpbWF0b3I6On5FcmxlRXN0aW1hdG9yKCkgPSBk
ZWZhdWx0Owogdm9pZCBFcmxlRXN0aW1hdG9yOjpSZXNldChib29sIGRlbGF5X2NoYW5nZSkgewog
ICBmdWxsYmFuZF9lcmxlX2VzdGltYXRvcl8uUmVzZXQoKTsKICAgc3ViYmFuZF9lcmxlX2VzdGlt
YXRvcl8uUmVzZXQoKTsKKyAgc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvcl8uUmVzZXQo
KTsKICAgaWYgKGRlbGF5X2NoYW5nZSkgewogICAgIGJsb2Nrc19zaW5jZV9yZXNldF8gPSAwOwog
ICB9CiB9CiAKLXZvaWQgRXJsZUVzdGltYXRvcjo6VXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IGZsb2F0PiByZW5kZXJfc3BlY3RydW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6
OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY2FwdHVyZV9zcGVjdHJ1bSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBzdWJ0cmFjdG9yX3NwZWN0
cnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb252ZXJnZWRfZmlsdGVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBvbnNldF9kZXRlY3Rpb24pIHsKLSAgUlRD
X0RDSEVDS19FUShrRmZ0TGVuZ3RoQnkyUGx1czEsIHJlbmRlcl9zcGVjdHJ1bS5zaXplKCkpOwor
dm9pZCBFcmxlRXN0aW1hdG9yOjpVcGRhdGUoCisgICAgY29uc3QgUmVuZGVyQnVmZmVyJiByZW5k
ZXJfYnVmZmVyLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4+JgorICAgICAgICBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAorICAg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZXZlcmJfcmVuZGVyX3NwZWN0cnVtLAorICAg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjYXB0dXJlX3NwZWN0cnVtLAorICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBzdWJ0cmFjdG9yX3NwZWN0cnVtLAorICAgIGJvb2wgY29u
dmVyZ2VkX2ZpbHRlciwKKyAgICBib29sIG9uc2V0X2RldGVjdGlvbikgeworICBSVENfRENIRUNL
X0VRKGtGZnRMZW5ndGhCeTJQbHVzMSwgcmV2ZXJiX3JlbmRlcl9zcGVjdHJ1bS5zaXplKCkpOwog
ICBSVENfRENIRUNLX0VRKGtGZnRMZW5ndGhCeTJQbHVzMSwgY2FwdHVyZV9zcGVjdHJ1bS5zaXpl
KCkpOwogICBSVENfRENIRUNLX0VRKGtGZnRMZW5ndGhCeTJQbHVzMSwgc3VidHJhY3Rvcl9zcGVj
dHJ1bS5zaXplKCkpOwotICBjb25zdCBhdXRvJiBYMiA9IHJlbmRlcl9zcGVjdHJ1bTsKKyAgY29u
c3QgYXV0byYgWDJfcmV2ZXJiID0gcmV2ZXJiX3JlbmRlcl9zcGVjdHJ1bTsKICAgY29uc3QgYXV0
byYgWTIgPSBjYXB0dXJlX3NwZWN0cnVtOwogICBjb25zdCBhdXRvJiBFMiA9IHN1YnRyYWN0b3Jf
c3BlY3RydW07CiAKQEAgLTUyLDE0ICs1NiwyMyBAQCB2b2lkIEVybGVFc3RpbWF0b3I6OlVwZGF0
ZShydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmVuZGVyX3NwZWN0cnVtLAogICAgIHJldHVy
bjsKICAgfQogCi0gIHN1YmJhbmRfZXJsZV9lc3RpbWF0b3JfLlVwZGF0ZShYMiwgWTIsIEUyLCBj
b252ZXJnZWRfZmlsdGVyLCBvbnNldF9kZXRlY3Rpb24pOwotICBmdWxsYmFuZF9lcmxlX2VzdGlt
YXRvcl8uVXBkYXRlKFgyLCBZMiwgRTIsIGNvbnZlcmdlZF9maWx0ZXIpOworICBzdWJiYW5kX2Vy
bGVfZXN0aW1hdG9yXy5VcGRhdGUoWDJfcmV2ZXJiLCBZMiwgRTIsIGNvbnZlcmdlZF9maWx0ZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnNldF9kZXRlY3Rpb24pOworCisg
IGlmICh1c2Vfc2lnbmFsX2RlcGVuZGVudF9lcmxlXykgeworICAgIHNpZ25hbF9kZXBlbmRlbnRf
ZXJsZV9lc3RpbWF0b3JfLlVwZGF0ZSgKKyAgICAgICAgcmVuZGVyX2J1ZmZlciwgZmlsdGVyX2Zy
ZXF1ZW5jeV9yZXNwb25zZSwgWDJfcmV2ZXJiLCBZMiwgRTIsCisgICAgICAgIHN1YmJhbmRfZXJs
ZV9lc3RpbWF0b3JfLkVybGUoKSwgY29udmVyZ2VkX2ZpbHRlcik7CisgIH0KKworICBmdWxsYmFu
ZF9lcmxlX2VzdGltYXRvcl8uVXBkYXRlKFgyX3JldmVyYiwgWTIsIEUyLCBjb252ZXJnZWRfZmls
dGVyKTsKIH0KIAogdm9pZCBFcmxlRXN0aW1hdG9yOjpEdW1wKAogICAgIGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjxBcG1EYXRhRHVtcGVyPiYgZGF0YV9kdW1wZXIpIGNvbnN0IHsKICAgZnVsbGJhbmRf
ZXJsZV9lc3RpbWF0b3JfLkR1bXAoZGF0YV9kdW1wZXIpOwogICBzdWJiYW5kX2VybGVfZXN0aW1h
dG9yXy5EdW1wKGRhdGFfZHVtcGVyKTsKKyAgc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRv
cl8uRHVtcChkYXRhX2R1bXBlcik7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9l
cmxlX2VzdGltYXRvci5oCmluZGV4IDhjYTYwNWZmNzFkNThlYjg2NzljYWE2ZjBkMzZlYzBlYTI1
NjZkM2MuLjgwMzZjMjE5OGI0ZTMyYmY0ZThkYTEyMDI2ODViOWY1YTUwZDRiMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
ZXJsZV9lc3RpbWF0b3IuaApAQCAtMTEsMTMgKzExLDE3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BRUMzX0VSTEVfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BRUMzX0VSTEVfRVNUSU1BVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRl
ICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3IuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCisjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2Vz
dGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YmJh
bmRfZXJsZV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
bG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKIApAQCAtMjgsMTYgKzMyLDE3IEBAIG5hbWVzcGFj
ZSB3ZWJydGMgewogY2xhc3MgRXJsZUVzdGltYXRvciB7CiAgcHVibGljOgogICBFcmxlRXN0aW1h
dG9yKHNpemVfdCBzdGFydHVwX3BoYXNlX2xlbmd0aF9ibG9ja3NfLAotICAgICAgICAgICAgICAg
IGZsb2F0IG1pbl9lcmxlLAotICAgICAgICAgICAgICAgIGZsb2F0IG1heF9lcmxlX2xmLAotICAg
ICAgICAgICAgICAgIGZsb2F0IG1heF9lcmxlX2hmKTsKKyAgICAgICAgICAgICAgICBjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKTsKICAgfkVybGVFc3RpbWF0b3IoKTsKIAogICAv
LyBSZXNldHMgdGhlIGZ1bGxiYW5kIEVSTEUgZXN0aW1hdG9yIGFuZCB0aGUgc3ViYmFuZHMgRVJM
RSBlc3RpbWF0b3JzLgogICB2b2lkIFJlc2V0KGJvb2wgZGVsYXlfY2hhbmdlKTsKIAogICAvLyBV
cGRhdGVzIHRoZSBFUkxFIGVzdGltYXRlcy4KLSAgdm9pZCBVcGRhdGUocnRjOjpBcnJheVZpZXc8
Y29uc3QgZmxvYXQ+IHJlbmRlcl9zcGVjdHJ1bSwKKyAgdm9pZCBVcGRhdGUoY29uc3QgUmVuZGVy
QnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAgICAgICAgICAgICAg
IGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCisgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IGZsb2F0PiByZXZlcmJfcmVuZGVyX3NwZWN0cnVtLAogICAgICAgICAgICAgICBydGM6
OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY2FwdHVyZV9zcGVjdHJ1bSwKICAgICAgICAgICAgICAg
cnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHN1YnRyYWN0b3Jfc3BlY3RydW0sCiAgICAgICAg
ICAgICAgIGJvb2wgY29udmVyZ2VkX2ZpbHRlciwKQEAgLTQ1LDExICs1MCwxMiBAQCBjbGFzcyBF
cmxlRXN0aW1hdG9yIHsKIAogICAvLyBSZXR1cm5zIHRoZSBtb3N0IHJlY2VudCBzdWJiYW5kIEVS
TEUgZXN0aW1hdGVzLgogICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1
czE+JiBFcmxlKCkgY29uc3QgewotICAgIHJldHVybiBzdWJiYW5kX2VybGVfZXN0aW1hdG9yXy5F
cmxlKCk7CisgICAgcmV0dXJuIHVzZV9zaWduYWxfZGVwZW5kZW50X2VybGVfID8gc2lnbmFsX2Rl
cGVuZGVudF9lcmxlX2VzdGltYXRvcl8uRXJsZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogc3ViYmFuZF9lcmxlX2VzdGltYXRvcl8uRXJsZSgpOwogICB9CiAgIC8v
IFJldHVybnMgdGhlIHN1YmJhbmQgRVJMRSB0aGF0IGFyZSBlc3RpbWF0ZWQgZHVyaW5nIG9uc2V0
cy4gVXNlZAogICAvLyBmb3IgbG9nZ2luZy90ZXN0aW5nLgotICBjb25zdCBzdGQ6OmFycmF5PGZs
b2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBFcmxlT25zZXRzKCkgY29uc3QgeworICBydGM6OkFy
cmF5Vmlldzxjb25zdCBmbG9hdD4gRXJsZU9uc2V0cygpIGNvbnN0IHsKICAgICByZXR1cm4gc3Vi
YmFuZF9lcmxlX2VzdGltYXRvcl8uRXJsZU9uc2V0cygpOwogICB9CiAKQEAgLTcwLDggKzc2LDEw
IEBAIGNsYXNzIEVybGVFc3RpbWF0b3IgewogCiAgcHJpdmF0ZToKICAgY29uc3Qgc2l6ZV90IHN0
YXJ0dXBfcGhhc2VfbGVuZ3RoX2Jsb2Nrc19fOworICBjb25zdCBib29sIHVzZV9zaWduYWxfZGVw
ZW5kZW50X2VybGVfOwogICBGdWxsQmFuZEVybGVFc3RpbWF0b3IgZnVsbGJhbmRfZXJsZV9lc3Rp
bWF0b3JfOwogICBTdWJiYW5kRXJsZUVzdGltYXRvciBzdWJiYW5kX2VybGVfZXN0aW1hdG9yXzsK
KyAgU2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvciBzaWduYWxfZGVwZW5kZW50X2VybGVfZXN0
aW1hdG9yXzsKICAgc2l6ZV90IGJsb2Nrc19zaW5jZV9yZXNldF8gPSAwOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9lcmxlX2VzdGltYXRvcl91bml0dGVzdC5jYwppbmRleCAyY2IwNTBhZjNiM2RhMTEy
YWUyZjk3NTg4NGQ1MGQxZWRkYjM1OGViLi41OWE3NDcxNTkzMzdmMzY4OTYwZTQ5N2UzMGQ5YzM1
YmJhZTU2Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvcl91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvcl91bml0dGVzdC5jYwpA
QCAtMTIsNiArMTIsOSBAQAogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3JfYnVmZmVyLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvcmFuZG9tLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTE5LDExICsyMiw5IEBAIG5hbWVzcGFjZSB3ZWJydGMg
ewogbmFtZXNwYWNlIHsKIAogY29uc3RleHByIGludCBrTG93RnJlcXVlbmN5TGltaXQgPSBrRmZ0
TGVuZ3RoQnkyIC8gMjsKLWNvbnN0ZXhwciBmbG9hdCBrTWF4RXJsZUxmID0gOC5mOwotY29uc3Rl
eHByIGZsb2F0IGtNYXhFcmxlSGYgPSAxLjVmOwotY29uc3RleHByIGZsb2F0IGtNaW5FcmxlID0g
MS4wZjsKIGNvbnN0ZXhwciBmbG9hdCBrVHJ1ZUVybGUgPSAxMC5mOwogY29uc3RleHByIGZsb2F0
IGtUcnVlRXJsZU9uc2V0cyA9IDEuMGY7Citjb25zdGV4cHIgZmxvYXQga0VjaG9QYXRoR2FpbiA9
IDMuZjsKIAogdm9pZCBWZXJpZnlFcmxlQmFuZHMocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+
IGVybGUsCiAgICAgICAgICAgICAgICAgICAgICBmbG9hdCByZWZlcmVuY2VfbGYsCkBAIC00NCw4
MCArNDUsMTU3IEBAIHZvaWQgVmVyaWZ5RXJsZShydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4g
ZXJsZSwKICAgRVhQRUNUX05FQVIocmVmZXJlbmNlX2xmLCBlcmxlX3RpbWVfZG9tYWluLCAwLjUp
OwogfQogCi12b2lkIEZvcm1GYXJlbmRGcmFtZShzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3Ro
QnkyUGx1czE+KiBYMiwKK3ZvaWQgRm9ybUZhcmVuZFRpbWVGcmFtZShydGM6OkFycmF5Vmlldzxm
bG9hdD4geCkgeworICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrQmxvY2tTaXplPiBmcmFtZSA9
IHsKKyAgICAgIDc0NTkuODgsIDE3MjA5LjYsIDE3MzgzLCAgIDIwNzY4LjksIDE2ODE2LjcsIDE4
Mzg2LjMsIDQ0OTIuODMsIDk2NzUuODUsCisgICAgICA2NjY1LjUyLCAxNDgwOC42LCA5MzQyLjMs
ICA3NDgzLjI4LCAxOTI2MS43LCA0MTQ1Ljk4LCAxNjIyLjE4LCAxMzQ3NS4yLAorICAgICAgNzE2
Ni4zMiwgNjg1Ni42MSwgMjE5MzcsICAgNzI2My4xNCwgOTU2OS4wNywgMTQ5MTksICAgODQxMy4z
MiwgNzU1MS44OSwKKyAgICAgIDc4NDguNjUsIDYwMTEuMjcsIDEzMDgwLjYsIDE1ODY1LjIsIDEy
NjU2LCAgIDE3NDU5LjYsIDQyNjMuOTMsIDQ1MDMuMDMsCisgICAgICA5MzExLjc5LCAyMTA5NS44
LCAxMjY1Ny45LCAxMzkwNi42LCAxOTI2Ny4yLCAxMTMzOC4xLCAxNjgyOC45LCAxMTUwMS42LAor
ICAgICAgMTE0MDUsICAgMTUwMzEuNCwgMTQ1NDEuNiwgMTk3NjUuNSwgMTgzNDYuMywgMTkzNTAu
MiwgMzE1Ny40NywgMTgwOTUuOCwKKyAgICAgIDE3NDMuNjgsIDIxMzI4LjIsIDE5NzI3LjUsIDcy
OTUuMTYsIDEwMzMyLjQsIDExMDU1LjUsIDIwMTA3LjQsIDE0NzA4LjQsCisgICAgICAxMjQxNi4y
LCAxNjQzNCwgICAyNDU0LjY5LCA5ODQwLjgsICA2ODY3LjIzLCAxNjE1Ljc1LCA2MDU5LjksICA4
Mzk0LjE5fTsKKyAgUlRDX0RDSEVDS19HRSh4LnNpemUoKSwgZnJhbWUuc2l6ZSgpKTsKKyAgc3Rk
Ojpjb3B5KGZyYW1lLmJlZ2luKCksIGZyYW1lLmVuZCgpLCB4LmJlZ2luKCkpOworfQorCit2b2lk
IEZvcm1GYXJlbmRGcmFtZShjb25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+KiBY
MiwKICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4qIEUyLAogICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExl
bmd0aEJ5MlBsdXMxPiogWTIsCiAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBlcmxlKSB7Ci0g
IFgyLT5maWxsKDUwMCAqIDEwMDAuZiAqIDEwMDAuZik7Ci0gIEUyLT5maWxsKDEwMDAuZiAqIDEw
MDAuZik7Ci0gIFkyLT5maWxsKGVybGUgKiAoKkUyKVswXSk7Ci19CisgIGNvbnN0IGF1dG8mIHNw
ZWN0cnVtX2J1ZmZlciA9IHJlbmRlcl9idWZmZXIuR2V0U3BlY3RydW1CdWZmZXIoKTsKKyAgY29u
c3QgYXV0byYgWDJfZnJvbV9idWZmZXIgPSBzcGVjdHJ1bV9idWZmZXIuYnVmZmVyW3NwZWN0cnVt
X2J1ZmZlci53cml0ZV07CisgIHN0ZDo6Y29weShYMl9mcm9tX2J1ZmZlci5iZWdpbigpLCBYMl9m
cm9tX2J1ZmZlci5lbmQoKSwgWDItPmJlZ2luKCkpOworICBzdGQ6OnRyYW5zZm9ybShYMi0+YmVn
aW4oKSwgWDItPmVuZCgpLCBZMi0+YmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgW10oZmxvYXQg
YSkgeyByZXR1cm4gYSAqIGtFY2hvUGF0aEdhaW4gKiBrRWNob1BhdGhHYWluOyB9KTsKKyAgc3Rk
Ojp0cmFuc2Zvcm0oWTItPmJlZ2luKCksIFkyLT5lbmQoKSwgRTItPmJlZ2luKCksCisgICAgICAg
ICAgICAgICAgIFtlcmxlXShmbG9hdCBhKSB7IHJldHVybiBhIC8gZXJsZTsgfSk7CisKK30gIC8v
IG5hbWVzcGFjZQogCi12b2lkIEZvcm1OZWFyZW5kRnJhbWUoc3RkOjphcnJheTxmbG9hdCwga0Zm
dExlbmd0aEJ5MlBsdXMxPiogWDIsCit2b2lkIEZvcm1OZWFyZW5kRnJhbWUocnRjOjpBcnJheVZp
ZXc8ZmxvYXQ+IHgsCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxmbG9hdCwga0Zm
dExlbmd0aEJ5MlBsdXMxPiogWDIsCiAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxm
bG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogRTIsCiAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogWTIpIHsKKyAgeFswXSA9IDAuZjsK
ICAgWDItPmZpbGwoMC5mKTsKICAgWTItPmZpbGwoNTAwLmYgKiAxMDAwLmYgKiAxMDAwLmYpOwog
ICBFMi0+ZmlsbCgoKlkyKVswXSk7CiB9CiAKK3ZvaWQgR2V0RmlsdGVyRnJlcShzdGQ6OnZlY3Rv
cjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAgICAgICAgICAg
ICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICBz
aXplX3QgZGVsYXlfaGVhZHJvb21fYmxvY2tzKSB7CisgIFJUQ19EQ0hFQ0tfR0UoZmlsdGVyX2Zy
ZXF1ZW5jeV9yZXNwb25zZS5zaXplKCksIGRlbGF5X2hlYWRyb29tX2Jsb2Nrcyk7CisgIGZvciAo
YXV0byYgYmxvY2tfZnJlcV9yZXNwIDogZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSkgeworICAg
IGJsb2NrX2ZyZXFfcmVzcC5maWxsKDAuZik7CisgIH0KKworICBmb3IgKHNpemVfdCBrID0gMDsg
ayA8IGtGZnRMZW5ndGhCeTJQbHVzMTsgKytrKSB7CisgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNw
b25zZVtkZWxheV9oZWFkcm9vbV9ibG9ja3NdW2tdID0ga0VjaG9QYXRoR2FpbjsKKyAgfQorfQor
CiB9ICAvLyBuYW1lc3BhY2UKIAogVEVTVChFcmxlRXN0aW1hdG9yLCBWZXJpZnlFcmxlSW5jcmVh
c2VBbmRIb2xkKSB7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gWDI7
CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gRTI7CiAgIHN0ZDo6YXJy
YXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gWTI7CisgIEVjaG9DYW5jZWxsZXIzQ29uZmln
IGNvbmZpZzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiB4KDMsIHN0ZDo6dmVj
dG9yPGZsb2F0PihrQmxvY2tTaXplLCAwLmYpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxm
bG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPj4gZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSgKKyAg
ICAgIGNvbmZpZy5maWx0ZXIubWFpbi5sZW5ndGhfYmxvY2tzKTsKKyAgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAorICAgICAgUmVuZGVyRGVs
YXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAKLSAgRXJsZUVzdGltYXRvciBlc3RpbWF0
b3IoMCwga01pbkVybGUsIGtNYXhFcmxlTGYsIGtNYXhFcmxlSGYpOworICBHZXRGaWx0ZXJGcmVx
KGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsIGNvbmZpZy5kZWxheS5kZWxheV9oZWFkcm9vbV9i
bG9ja3MpOwogCi0gIC8vIFZlcmlmaWVzIHRoYXQgdGhlIEVSTEUgZXN0aW1hdGUgaXMgcHJvcGVy
bHkgaW5jcmVhc2VkIHRvIGhpZ2hlciB2YWx1ZXMuCi0gIEZvcm1GYXJlbmRGcmFtZSgmWDIsICZF
MiwgJlkyLCBrVHJ1ZUVybGUpOworICBFcmxlRXN0aW1hdG9yIGVzdGltYXRvcigwLCBjb25maWcp
OwogCisgIEZvcm1GYXJlbmRUaW1lRnJhbWUoeFswXSk7CisgIHJlbmRlcl9kZWxheV9idWZmZXIt
Pkluc2VydCh4KTsKKyAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+UHJlcGFyZUNhcHR1cmVQcm9jZXNz
aW5nKCk7CisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIEVSTEUgZXN0aW1hdGUgaXMgcHJvcGVybHkg
aW5jcmVhc2VkIHRvIGhpZ2hlciB2YWx1ZXMuCisgIEZvcm1GYXJlbmRGcmFtZSgqcmVuZGVyX2Rl
bGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksICZYMiwgJkUyLCAmWTIsCisgICAgICAgICAg
ICAgICAgICBrVHJ1ZUVybGUpOwogICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDIwMDsgKytrKSB7
Ci0gICAgZXN0aW1hdG9yLlVwZGF0ZShYMiwgWTIsIEUyLCB0cnVlLCB0cnVlKTsKKyAgICByZW5k
ZXJfZGVsYXlfYnVmZmVyLT5JbnNlcnQoeCk7CisgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+UHJl
cGFyZUNhcHR1cmVQcm9jZXNzaW5nKCk7CisgICAgZXN0aW1hdG9yLlVwZGF0ZSgqcmVuZGVyX2Rl
bGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksCisgICAgICAgICAgICAgICAgICAgICBmaWx0
ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLCBYMiwgWTIsIEUyLCB0cnVlLCB0cnVlKTsKICAgfQogICBW
ZXJpZnlFcmxlKGVzdGltYXRvci5FcmxlKCksIHN0ZDo6cG93KDIuZiwgZXN0aW1hdG9yLkZ1bGxi
YW5kRXJsZUxvZzIoKSksCi0gICAgICAgICAgICAga01heEVybGVMZiwga01heEVybGVIZik7Cisg
ICAgICAgICAgICAgY29uZmlnLmVybGUubWF4X2wsIGNvbmZpZy5lcmxlLm1heF9oKTsKIAotICBG
b3JtTmVhcmVuZEZyYW1lKCZYMiwgJkUyLCAmWTIpOworICBGb3JtTmVhcmVuZEZyYW1lKHhbMF0s
ICZYMiwgJkUyLCAmWTIpOwogICAvLyBWZXJpZmllcyB0aGF0IHRoZSBFUkxFIGlzIG5vdCBpbW1l
ZGlhdGVseSBkZWNyZWFzZWQgZHVyaW5nIG5lYXJlbmQKICAgLy8gYWN0aXZpdHkuCiAgIGZvciAo
c2l6ZV90IGsgPSAwOyBrIDwgNTA7ICsraykgewotICAgIGVzdGltYXRvci5VcGRhdGUoWDIsIFky
LCBFMiwgdHJ1ZSwgdHJ1ZSk7CisgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+SW5zZXJ0KHgpOwor
ICAgIHJlbmRlcl9kZWxheV9idWZmZXItPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpOworICAg
IGVzdGltYXRvci5VcGRhdGUoKnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJlbmRlckJ1ZmZlcigp
LAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwgWDIsIFky
LCBFMiwgdHJ1ZSwgdHJ1ZSk7CiAgIH0KICAgVmVyaWZ5RXJsZShlc3RpbWF0b3IuRXJsZSgpLCBz
dGQ6OnBvdygyLmYsIGVzdGltYXRvci5GdWxsYmFuZEVybGVMb2cyKCkpLAotICAgICAgICAgICAg
IGtNYXhFcmxlTGYsIGtNYXhFcmxlSGYpOworICAgICAgICAgICAgIGNvbmZpZy5lcmxlLm1heF9s
LCBjb25maWcuZXJsZS5tYXhfaCk7CiB9CiAKIFRFU1QoRXJsZUVzdGltYXRvciwgVmVyaWZ5RXJs
ZVRyYWNraW5nT25PbnNldHMpIHsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBs
dXMxPiBYMjsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBFMjsKICAg
c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBZMjsKKyAgRWNob0NhbmNlbGxl
cjNDb25maWcgY29uZmlnOworICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IHgoMywg
c3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUsIDAuZikpOworICBzdGQ6OnZlY3RvcjxzdGQ6
OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3Bv
bnNlKAorICAgICAgY29uZmlnLmZpbHRlci5tYWluLmxlbmd0aF9ibG9ja3MpOworCisgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKKyAgICAg
IFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOworCisgIEdldEZpbHRlckZy
ZXEoZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwgY29uZmlnLmRlbGF5LmRlbGF5X2hlYWRyb29t
X2Jsb2Nrcyk7CisKKyAgRXJsZUVzdGltYXRvciBlc3RpbWF0b3IoMCwgY29uZmlnKTsKIAotICBF
cmxlRXN0aW1hdG9yIGVzdGltYXRvcigwLCBrTWluRXJsZSwga01heEVybGVMZiwga01heEVybGVI
Zik7CisgIEZvcm1GYXJlbmRUaW1lRnJhbWUoeFswXSk7CisgIHJlbmRlcl9kZWxheV9idWZmZXIt
Pkluc2VydCh4KTsKKyAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+UHJlcGFyZUNhcHR1cmVQcm9jZXNz
aW5nKCk7CiAKICAgZm9yIChzaXplX3QgYnVyc3QgPSAwOyBidXJzdCA8IDIwOyArK2J1cnN0KSB7
Ci0gICAgRm9ybUZhcmVuZEZyYW1lKCZYMiwgJkUyLCAmWTIsIGtUcnVlRXJsZU9uc2V0cyk7Cisg
ICAgRm9ybUZhcmVuZEZyYW1lKCpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZmZXIo
KSwgJlgyLCAmRTIsICZZMiwKKyAgICAgICAgICAgICAgICAgICAga1RydWVFcmxlT25zZXRzKTsK
ICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEwOyArK2spIHsKLSAgICAgIGVzdGltYXRvci5V
cGRhdGUoWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CisgICAgICByZW5kZXJfZGVsYXlfYnVmZmVy
LT5JbnNlcnQoeCk7CisgICAgICByZW5kZXJfZGVsYXlfYnVmZmVyLT5QcmVwYXJlQ2FwdHVyZVBy
b2Nlc3NpbmcoKTsKKyAgICAgIGVzdGltYXRvci5VcGRhdGUoKnJlbmRlcl9kZWxheV9idWZmZXIt
PkdldFJlbmRlckJ1ZmZlcigpLAorICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfZnJlcXVl
bmN5X3Jlc3BvbnNlLCBYMiwgWTIsIEUyLCB0cnVlLCB0cnVlKTsKICAgICB9Ci0gICAgRm9ybUZh
cmVuZEZyYW1lKCZYMiwgJkUyLCAmWTIsIGtUcnVlRXJsZSk7CisgICAgRm9ybUZhcmVuZEZyYW1l
KCpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZmZXIoKSwgJlgyLCAmRTIsICZZMiwK
KyAgICAgICAgICAgICAgICAgICAga1RydWVFcmxlKTsKICAgICBmb3IgKHNpemVfdCBrID0gMDsg
ayA8IDIwMDsgKytrKSB7Ci0gICAgICBlc3RpbWF0b3IuVXBkYXRlKFgyLCBZMiwgRTIsIHRydWUs
IHRydWUpOworICAgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+SW5zZXJ0KHgpOworICAgICAgcmVu
ZGVyX2RlbGF5X2J1ZmZlci0+UHJlcGFyZUNhcHR1cmVQcm9jZXNzaW5nKCk7CisgICAgICBlc3Rp
bWF0b3IuVXBkYXRlKCpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZmZXIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwgWDIsIFkyLCBF
MiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgfQotICAgIEZvcm1OZWFyZW5kRnJhbWUoJlgyLCAmRTIsICZZ
Mik7CisgICAgRm9ybU5lYXJlbmRGcmFtZSh4WzBdLCAmWDIsICZFMiwgJlkyKTsKICAgICBmb3Ig
KHNpemVfdCBrID0gMDsgayA8IDMwMDsgKytrKSB7Ci0gICAgICBlc3RpbWF0b3IuVXBkYXRlKFgy
LCBZMiwgRTIsIHRydWUsIHRydWUpOworICAgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+SW5zZXJ0
KHgpOworICAgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+UHJlcGFyZUNhcHR1cmVQcm9jZXNzaW5n
KCk7CisgICAgICBlc3RpbWF0b3IuVXBkYXRlKCpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5k
ZXJCdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNw
b25zZSwgWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgfQogICB9Ci0gIFZlcmlmeUVybGVC
YW5kcyhlc3RpbWF0b3IuRXJsZU9uc2V0cygpLCBrTWluRXJsZSwga01pbkVybGUpOwotICBGb3Jt
TmVhcmVuZEZyYW1lKCZYMiwgJkUyLCAmWTIpOworICBWZXJpZnlFcmxlQmFuZHMoZXN0aW1hdG9y
LkVybGVPbnNldHMoKSwgY29uZmlnLmVybGUubWluLCBjb25maWcuZXJsZS5taW4pOworICBGb3Jt
TmVhcmVuZEZyYW1lKHhbMF0sICZYMiwgJkUyLCAmWTIpOwogICBmb3IgKHNpemVfdCBrID0gMDsg
ayA8IDEwMDA7IGsrKykgewotICAgIGVzdGltYXRvci5VcGRhdGUoWDIsIFkyLCBFMiwgdHJ1ZSwg
dHJ1ZSk7CisgICAgZXN0aW1hdG9yLlVwZGF0ZSgqcmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVu
ZGVyQnVmZmVyKCksCisgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3Bv
bnNlLCBYMiwgWTIsIEUyLCB0cnVlLCB0cnVlKTsKICAgfQogICAvLyBWZXJpZmllcyB0aGF0IGR1
cmluZyBuZSBhY3Rpdml0eSwgRXJsZSBjb252ZXJnZXMgdG8gdGhlIEVybGUgZm9yIG9uc2V0cy4K
ICAgVmVyaWZ5RXJsZShlc3RpbWF0b3IuRXJsZSgpLCBzdGQ6OnBvdygyLmYsIGVzdGltYXRvci5G
dWxsYmFuZEVybGVMb2cyKCkpLAotICAgICAgICAgICAgIGtNaW5FcmxlLCBrTWluRXJsZSk7Cisg
ICAgICAgICAgICAgY29uZmlnLmVybGUubWluLCBjb25maWcuZXJsZS5taW4pOwogfQogCiB9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfYnVmZmVy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfYnVmZmVyLmgKaW5kZXggNDdlZGU0MTgyNWNmYzFiNjM1
NWY5YjA5NWYxNTJmNjRiMjNkNDAzYi4uOWY4MWE5MTBhOGZiNzA5NGY4N2QwNTE1YWEyYmFmMzBl
MWQ4MDQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2J1ZmZlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2ZmdF9idWZmZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RV
TEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19GRlRfQlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNf
QVVESU9fUFJPQ0VTU0lOR19BRUMzX0ZGVF9CVUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5o
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2ZmdF9kYXRhLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9maWx0ZXJfYW5h
bHl6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9maWx0ZXJfYW5hbHl6ZXIuY2MKaW5kZXggNzkwY2Ix
ZThiNTJkNmJmZjE4N2I0YmRkNDAyMDE5Y2Y3ZmExZWQ2OC4uNWI4OTBkNzQ3NDZjOWRlMWJjY2Zj
NWYyYWUzMTM0ODAzYmMzMWJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmlsdGVyX2Fu
YWx5emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZpbHRlcl9hbmFseXplci5jYwpAQCAtMTYs
NiArMTYsNyBAQAogI2luY2x1ZGUgPG51bWVyaWM+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9hdG9taWNvcHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2ZpbHRlcl9hbmFseXplci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmlsdGVy
X2FuYWx5emVyLmgKaW5kZXggNDdlOTUzMzY2NjIxZGMyMzg5MzI3OWY1ZDdlYjQ1Y2NhNjY2OTg4
Yy4uOTlhMGUyNTk3Mzc3MjM0YWUyMTkwODFhYThkMzNlMTBmOTc4NTUyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvZmlsdGVyX2FuYWx5emVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmls
dGVyX2FuYWx5emVyLmgKQEAgLTExLDIwICsxMSwyMCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfQUVDM19GSUxURVJfQU5BTFlaRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FFQzNfRklMVEVSX0FOQUxZWkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9y
PgogCi0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJh
eV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgot
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nhc2NhZGVkX2JpcXVhZF9m
aWx0ZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJf
YnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgQXBtRGF0YUR1bXBlcjsKK2NsYXNzIFJlbmRlckJ1ZmZl
cjsKIAogLy8gQ2xhc3MgZm9yIGFuYWx5emluZyB0aGUgcHJvcGVydGllcyBvZiBhbiBhZGFwdGl2
ZSBmaWx0ZXIuCiBjbGFzcyBGaWx0ZXJBbmFseXplciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9mcmFtZV9ibG9ja2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZnJhbWVfYmxvY2tlci5jYwpp
bmRleCAwYTBjMGUyZmFlYTU5OTMwODYzNzYzNDJhYThkZjNkZTY5YzliZWQ5Li5jYTEyMmU1ZWJi
ZGVlOGE3OWFhYjc3YmNhMGRlNTk5MTY2NTg2YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9mcmFtZV9ibG9ja2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZyYW1lX2Jsb2NrZXIuY2MK
QEAgLTEwLDggKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2ZyYW1lX2Jsb2NrZXIuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQorI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9m
dWxsYmFuZF9lcmxlX2VzdGltYXRvci5jYwppbmRleCBkYjliZTdjMTA0ZTk2OWU1MGIyODExZGFj
NjAzMzE3NGQxYmJmYWE1Li43ODkzYjk3YjNhMjdhZWU2NjczYTQzYTA5NDg5YTEzN2Y2ZDU2NjNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mdWxsYmFuZF9lcmxlX2VzdGltYXRvci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mdWxsYmFuZF9lcmxlX2VzdGltYXRvci5jYwpAQCAtMTgsNiAr
MTgsNyBAQAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTI1LDcgKzI2LDcgQEAgbmFtZXNwYWNlIHdlYnJ0
YyB7CiBuYW1lc3BhY2UgewogY29uc3RleHByIGZsb2F0IGtFcHNpbG9uID0gMWUtM2Y7CiBjb25z
dGV4cHIgZmxvYXQga1gyQmFuZEVuZXJneVRocmVzaG9sZCA9IDQ0MDE1MDY4LjBmOwotY29uc3Rl
eHByIGludCBrRXJsZUhvbGQgPSAxMDA7Citjb25zdGV4cHIgaW50IGtCbG9ja3NUb0hvbGRFcmxl
ID0gMTAwOwogY29uc3RleHByIGludCBrUG9pbnRzVG9BY2N1bXVsYXRlID0gNjsKIH0gIC8vIG5h
bWVzcGFjZQogCkBAIC01NCw3ICs1NSw3IEBAIHZvaWQgRnVsbEJhbmRFcmxlRXN0aW1hdG9yOjpV
cGRhdGUocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFgyLAogICAgICAgY29uc3QgZmxvYXQg
WTJfc3VtID0gc3RkOjphY2N1bXVsYXRlKFkyLmJlZ2luKCksIFkyLmVuZCgpLCAwLjBmKTsKICAg
ICAgIGNvbnN0IGZsb2F0IEUyX3N1bSA9IHN0ZDo6YWNjdW11bGF0ZShFMi5iZWdpbigpLCBFMi5l
bmQoKSwgMC4wZik7CiAgICAgICBpZiAoaW5zdGFudGFuZW91c19lcmxlXy5VcGRhdGUoWTJfc3Vt
LCBFMl9zdW0pKSB7Ci0gICAgICAgIGhvbGRfY291bnRlcl90aW1lX2RvbWFpbl8gPSBrRXJsZUhv
bGQ7CisgICAgICAgIGhvbGRfY291bnRlcl90aW1lX2RvbWFpbl8gPSBrQmxvY2tzVG9Ib2xkRXJs
ZTsKICAgICAgICAgZXJsZV90aW1lX2RvbWFpbl9sb2cyXyArPQogICAgICAgICAgICAgMC4xZiAq
ICgoaW5zdGFudGFuZW91c19lcmxlXy5HZXRJbnN0RXJsZUxvZzIoKS52YWx1ZSgpKSAtCiAgICAg
ICAgICAgICAgICAgICAgIGVybGVfdGltZV9kb21haW5fbG9nMl8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvbWFpbl9maWx0ZXJfdXBkYXRlX2dhaW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9t
YWluX2ZpbHRlcl91cGRhdGVfZ2Fpbi5jYwppbmRleCA0ZjQ4Y2Q0NzQ4MGIyYjYwZjI5NzM4YzAw
ZDY1YzY5ZWViMWZhMDVhLi5lZjg3ZDE0MmRiMWZjNTE5YjhiYTg1ODk2NDc3MTE3Y2FmZWEyMjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbi5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbi5jYwpAQCAtMTMsNyAr
MTMsMTIgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0aXZlX2Zpcl9maWx0
ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1v
bi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF92
YXJpYWJpbGl0eS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Zm
dF9kYXRhLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVy
X3NpZ25hbF9hbmFseXplci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWlj
b3BzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCkBAIC0xMjcsNyArMTMyLDEwIEBA
IHZvaWQgTWFpbkZpbHRlclVwZGF0ZUdhaW46OkNvbXB1dGUoCiAgICAgICAgICAgICAgICAgIEhf
ZXJyb3JfaW5jcmVhc2UuYmVnaW4oKSwgc3RkOjptdWx0aXBsaWVzPGZsb2F0PigpKTsKICAgc3Rk
Ojp0cmFuc2Zvcm0oSF9lcnJvcl8uYmVnaW4oKSwgSF9lcnJvcl8uZW5kKCksIEhfZXJyb3JfaW5j
cmVhc2UuYmVnaW4oKSwKICAgICAgICAgICAgICAgICAgSF9lcnJvcl8uYmVnaW4oKSwgWyZdKGZs
b2F0IGEsIGZsb2F0IGIpIHsKLSAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgoYSAr
IGIsIGN1cnJlbnRfY29uZmlnXy5lcnJvcl9mbG9vcik7CisgICAgICAgICAgICAgICAgICAgZmxv
YXQgZXJyb3IgPSBhICsgYjsKKyAgICAgICAgICAgICAgICAgICBlcnJvciA9IHN0ZDo6bWF4KGVy
cm9yLCBjdXJyZW50X2NvbmZpZ18uZXJyb3JfZmxvb3IpOworICAgICAgICAgICAgICAgICAgIGVy
cm9yID0gc3RkOjptaW4oZXJyb3IsIGN1cnJlbnRfY29uZmlnXy5lcnJvcl9jZWlsKTsKKyAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgICAgICAgICAgIH0pOwogCiAgIGRh
dGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19tYWluX2dhaW5fSF9lcnJvciIsIEhfZXJyb3JfKTsK
QEAgLTE1Myw2ICsxNjEsOSBAQCB2b2lkIE1haW5GaWx0ZXJVcGRhdGVHYWluOjpVcGRhdGVDdXJy
ZW50Q29uZmlnKCkgewogICAgICAgY3VycmVudF9jb25maWdfLmVycm9yX2Zsb29yID0KICAgICAg
ICAgICBhdmVyYWdlKG9sZF90YXJnZXRfY29uZmlnXy5lcnJvcl9mbG9vciwgdGFyZ2V0X2NvbmZp
Z18uZXJyb3JfZmxvb3IsCiAgICAgICAgICAgICAgICAgICBjaGFuZ2VfZmFjdG9yKTsKKyAgICAg
IGN1cnJlbnRfY29uZmlnXy5lcnJvcl9jZWlsID0KKyAgICAgICAgICBhdmVyYWdlKG9sZF90YXJn
ZXRfY29uZmlnXy5lcnJvcl9jZWlsLCB0YXJnZXRfY29uZmlnXy5lcnJvcl9jZWlsLAorICAgICAg
ICAgICAgICAgICAgY2hhbmdlX2ZhY3Rvcik7CiAgICAgICBjdXJyZW50X2NvbmZpZ18ubm9pc2Vf
Z2F0ZSA9CiAgICAgICAgICAgYXZlcmFnZShvbGRfdGFyZ2V0X2NvbmZpZ18ubm9pc2VfZ2F0ZSwg
dGFyZ2V0X2NvbmZpZ18ubm9pc2VfZ2F0ZSwKICAgICAgICAgICAgICAgICAgIGNoYW5nZV9mYWN0
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWFpbl9maWx0ZXJfdXBkYXRlX2dhaW4u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3VwZGF0ZV9nYWluLmgKaW5kZXggNTI1YjUy
Mjc5YzQ2YWU2YjBlZTgzMjNlZmI0ZTRjMTVhOGFlMDc1Yi4uODkyZmY2ODlhNDcwZDMwNDQ1YWY2
MjgxNDA0NGMyMWE2YWVjZDVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWFpbl9maWx0
ZXJfdXBkYXRlX2dhaW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2ZpbHRlcl91cGRhdGVf
Z2Fpbi5oCkBAIC0xMSwyMCArMTEsMjIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX0FFQzNfTUFJTl9GSUxURVJfVVBEQVRFX0dBSU5fSF8KICNkZWZpbmUgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FFQzNfTUFJTl9GSUxURVJfVVBEQVRFX0dBSU5fSF8KIAorI2luY2x1ZGUg
PHN0ZGRlZi5oPgorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRl
IDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0aXZlX2Zpcl9m
aWx0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2Nv
bW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0
aF92YXJpYWJpbGl0eS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0
cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNzIEFkYXB0aXZlRmly
RmlsdGVyOwogY2xhc3MgQXBtRGF0YUR1bXBlcjsKK3N0cnVjdCBFY2hvUGF0aFZhcmlhYmlsaXR5
Oworc3RydWN0IEZmdERhdGE7CitjbGFzcyBSZW5kZXJTaWduYWxBbmFseXplcjsKK3N0cnVjdCBT
dWJ0cmFjdG9yT3V0cHV0OwogCiAvLyBQcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciAgY29tcHV0
aW5nIHRoZSBhZGFwdGl2ZSBnYWluIGZvciB0aGUgbWFpbiBmaWx0ZXIuCiBjbGFzcyBNYWluRmls
dGVyVXBkYXRlR2FpbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2ZpbHRlcl91
cGRhdGVfZ2Fpbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3VwZGF0
ZV9nYWluX3VuaXR0ZXN0LmNjCmluZGV4IDhjNDRhZTA2NGUyMTIyZTllMTI4YTdlZjVkODllY2Q0
OWU2ODFjZTkuLjA5M2IxOTQ3MzZmODZkY2FmMzVjOWEzODc1MDY3YzU4YTJiMjRmNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3VwZGF0ZV9nYWluX3VuaXR0ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3VwZGF0ZV9nYWluX3VuaXR0ZXN0LmNj
CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgUnVuRmlsdGVyVXBkYXRlVGVzdChpbnQgbnVtX2Jsb2Nr
c190b19wcm9jZXNzLAogICBjb25maWcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3Mg
PSAwOwogICBjb25maWcuZGVsYXkuZGVmYXVsdF9kZWxheSA9IDE7CiAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRl
bGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6
Q3JlYXRlMihjb25maWcsIDMpKTsKICAgQWVjU3RhdGUgYWVjX3N0YXRlKGNvbmZpZyk7CiAgIFJl
bmRlclNpZ25hbEFuYWx5emVyIHJlbmRlcl9zaWduYWxfYW5hbHl6ZXIoY29uZmlnKTsKICAgYWJz
bDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gZGVsYXlfZXN0aW1hdGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRf
ZmlsdGVyLmNjCmluZGV4IDY3NDRiZDU4MTJhMGM3NWUzZGMyNTM0ZTk0ZTYwMDcxODE5NDU0Yjgu
Ljc1NzIxOWQ1MmMyMmIyMmY5M2I5ZWQ5MmQwODI5MTgzMWI0NTAxYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNo
ZWRfZmlsdGVyLmNjCkBAIC0xOSwxMCArMTksMTQgQEAKICNpbmNsdWRlIDxlbW1pbnRyaW4uaD4K
ICNlbmRpZgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1
ZGUgPGluaXRpYWxpemVyX2xpc3Q+CisjaW5jbHVkZSA8aXRlcmF0b3I+CiAjaW5jbHVkZSA8bnVt
ZXJpYz4KIAotI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVy
X2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2Fw
bV9kYXRhX2R1bXBlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9m
aWx0ZXIuaAppbmRleCAyZWY0ODI4NmQ3OWVlNjIyOTY0MmIyMWEwODBkOTQzMzE1YzBmNjA4Li4y
YTY1MzM5YTRjYmZlZmUzZDFiMDJiMTg3ZmExZDFiMGMyODA4NGQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRf
ZmlsdGVyLmgKQEAgLTExLDE4ICsxMSwxOSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NF
U1NJTkdfQUVDM19NQVRDSEVEX0ZJTFRFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NF
U1NJTkdfQUVDM19NQVRDSEVEX0ZJTFRFUl9IXwogCi0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVk
ZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2lu
Y2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVu
ZGVyX2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKKwor
Y2xhc3MgQXBtRGF0YUR1bXBlcjsKK3N0cnVjdCBEb3duc2FtcGxlZFJlbmRlckJ1ZmZlcjsKKwog
bmFtZXNwYWNlIGFlYzMgewogCiAjaWYgZGVmaW5lZChXRUJSVENfSEFTX05FT04pCkBAIC02NSw3
ICs2Niw2IEBAIHZvaWQgTWF0Y2hlZEZpbHRlckNvcmUoc2l6ZV90IHhfc3RhcnRfaW5kZXgsCiAK
IH0gIC8vIG5hbWVzcGFjZSBhZWMzCiAKLWNsYXNzIEFwbURhdGFEdW1wZXI7CiAKIC8vIFByb2R1
Y2VzIHJlY3Vyc2l2ZWx5IHVwZGF0ZWQgY3Jvc3MtY29ycmVsYXRpb24gZXN0aW1hdGVzIGZvciBz
ZXZlcmFsIHNpZ25hbAogLy8gc2hpZnRzIHdoZXJlIHRoZSBpbnRyYS1zaGlmdCBzcGFjaW5nIGlz
IHVuaWZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlcl9sYWdf
YWdncmVnYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdh
dG9yLmNjCmluZGV4IDdhMDNlNjBkOGJmZDk0NDI4YjRhMzUwN2RjOTJmMTA3OGJkYTQwNzEuLmY1
OTUyNWVlZTllOTAxZWMzYjJhNDQwMjg4OWVhZjEyYWI4Mjg3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL21hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yLmNjCkBAIC05LDcgKzksMTEgQEAK
ICAqLwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmls
dGVyX2xhZ19hZ2dyZWdhdG9yLmgiCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8
aXRlcmF0b3I+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9h
cG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKQEAgLTI3LDExICszMSwxMyBAQCBNYXRjaGVkRmlsdGVyTGFnQWdncmVn
YXRvcjo6TWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3IoCiAKIE1hdGNoZWRGaWx0ZXJMYWdBZ2dy
ZWdhdG9yOjp+TWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3IoKSA9IGRlZmF1bHQ7CiAKLXZvaWQg
TWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3I6OlJlc2V0KCkgewordm9pZCBNYXRjaGVkRmlsdGVy
TGFnQWdncmVnYXRvcjo6UmVzZXQoYm9vbCBoYXJkX3Jlc2V0KSB7CiAgIHN0ZDo6ZmlsbChoaXN0
b2dyYW1fLmJlZ2luKCksIGhpc3RvZ3JhbV8uZW5kKCksIDApOwogICBoaXN0b2dyYW1fZGF0YV8u
ZmlsbCgwKTsKICAgaGlzdG9ncmFtX2RhdGFfaW5kZXhfID0gMDsKLSAgc2lnbmlmaWNhbnRfY2Fu
ZGlkYXRlX2ZvdW5kXyA9IGZhbHNlOworICBpZiAoaGFyZF9yZXNldCkgeworICAgIHNpZ25pZmlj
YW50X2NhbmRpZGF0ZV9mb3VuZF8gPSBmYWxzZTsKKyAgfQogfQogCiBhYnNsOjpvcHRpb25hbDxE
ZWxheUVzdGltYXRlPiBNYXRjaGVkRmlsdGVyTGFnQWdncmVnYXRvcjo6QWdncmVnYXRlKApAQCAt
NzcsOSArODMsMTMgQEAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gTWF0Y2hlZEZpbHRl
ckxhZ0FnZ3JlZ2F0b3I6OkFnZ3JlZ2F0ZSgKICAgICBpZiAoaGlzdG9ncmFtX1tjYW5kaWRhdGVd
ID4gdGhyZXNob2xkc18uY29udmVyZ2VkIHx8CiAgICAgICAgIChoaXN0b2dyYW1fW2NhbmRpZGF0
ZV0gPiB0aHJlc2hvbGRzXy5pbml0aWFsICYmCiAgICAgICAgICAhc2lnbmlmaWNhbnRfY2FuZGlk
YXRlX2ZvdW5kXykpIHsKLSAgICAgIHJldHVybiBEZWxheUVzdGltYXRlKERlbGF5RXN0aW1hdGU6
OlF1YWxpdHk6OmtSZWZpbmVkLCBjYW5kaWRhdGUpOworICAgICAgRGVsYXlFc3RpbWF0ZTo6UXVh
bGl0eSBxdWFsaXR5ID0gc2lnbmlmaWNhbnRfY2FuZGlkYXRlX2ZvdW5kXworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6
a1JlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IERl
bGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtDb2Fyc2U7CisgICAgICByZXR1cm4gRGVsYXlFc3RpbWF0
ZShxdWFsaXR5LCBjYW5kaWRhdGUpOwogICAgIH0KICAgfQorCiAgIHJldHVybiBhYnNsOjpudWxs
b3B0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlcl9sYWdf
YWdncmVnYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXJfbGFnX2FnZ3JlZ2F0
b3IuaAppbmRleCBjNTcwNTFhYTY4NWYzMzc0YTQwOGU5ZDUxYzJkZjZmNzFhOWMzOGQ4Li5kN2Yz
NGFlZDYwNzM0YmY0MTUyYmJjMzc2YzI2ZDViN2Y5MjMwNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9tYXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRvci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL21hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xh
c3MgTWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3IgewogICB+TWF0Y2hlZEZpbHRlckxhZ0FnZ3Jl
Z2F0b3IoKTsKIAogICAvLyBSZXNldHMgdGhlIGFnZ3JlZ2F0b3IuCi0gIHZvaWQgUmVzZXQoKTsK
KyAgdm9pZCBSZXNldChib29sIGhhcmRfcmVzZXQpOwogCiAgIC8vIEFnZ3JlZ2F0ZXMgdGhlIHBy
b3ZpZGVkIGxhZyBlc3RpbWF0ZXMuCiAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IEFn
Z3JlZ2F0ZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXJfdW5pdHRlc3QuY2MKaW5kZXgg
MTZiNjAzYTEzZmUzN2RhZWM2OTBlOWM5MzliYTVkMmVjZjQ2ODE0Zi4uMGMxNzExODk0YjQ0ZjIx
NDU5OWY0YWMxMWVjNWQ3YWZlNDMwNGYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0
Y2hlZF9maWx0ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0
ZXJfdW5pdHRlc3QuY2MKQEAgLTE2NSw3ICsxNjUsNyBAQCBURVNUKE1hdGNoZWRGaWx0ZXIsIExh
Z0VzdGltYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kZWxheS5k
ZWxheV9jYW5kaWRhdGVfZGV0ZWN0aW9uX3RocmVzaG9sZCk7CiAKICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgICAgICBS
ZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgICAgIFJlbmRlckRl
bGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogCiAgICAgICAvLyBBbmFseXplIHRoZSBj
b3JyZWxhdGlvbiBiZXR3ZWVuIHJlbmRlciBhbmQgY2FwdHVyZS4KICAgICAgIGZvciAoc2l6ZV90
IGsgPSAwOyBrIDwgKDYwMCArIGRlbGF5X3NhbXBsZXMgLyBzdWJfYmxvY2tfc2l6ZSk7ICsraykg
ewpAQCAtMjYxLDcgKzI2MSw3IEBAIFRFU1QoTWF0Y2hlZEZpbHRlciwgTGFnTm90UmVsaWFibGVG
b3JVbmNvcnJlbGF0ZWRSZW5kZXJBbmRDYXB0dXJlKSB7CiAgICAgc3RkOjpmaWxsKGNhcHR1cmUu
YmVnaW4oKSwgY2FwdHVyZS5lbmQoKSwgMC5mKTsKICAgICBBcG1EYXRhRHVtcGVyIGRhdGFfZHVt
cGVyKDApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2Rl
bGF5X2J1ZmZlcigKLSAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMp
KTsKKyAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgICAg
TWF0Y2hlZEZpbHRlciBmaWx0ZXIoJmRhdGFfZHVtcGVyLCBEZXRlY3RPcHRpbWl6YXRpb24oKSwg
c3ViX2Jsb2NrX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAga1dpbmRvd1NpemVTdWJC
bG9ja3MsIGtOdW1NYXRjaGVkRmlsdGVycywKICAgICAgICAgICAgICAgICAgICAgICAgICBrQWxp
Z25tZW50U2hpZnRTdWJCbG9ja3MsIDE1MCwKQEAgLTMwNiw3ICszMDYsNyBAQCBURVNUKE1hdGNo
ZWRGaWx0ZXIsIExhZ05vdFVwZGF0ZWRGb3JMb3dMZXZlbFJlbmRlcikgewogICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbmZpZy5kZWxheS5kZWxheV9lc3RpbWF0ZV9zbW9vdGhpbmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRlbGF5LmRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rp
b25fdGhyZXNob2xkKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJl
bmRlcl9kZWxheV9idWZmZXIoCi0gICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29u
ZmlnLCAzKSk7CisgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKEVjaG9DYW5jZWxs
ZXIzQ29uZmlnKCksIDMpKTsKICAgICBEZWNpbWF0b3IgY2FwdHVyZV9kZWNpbWF0b3IoZG93bl9z
YW1wbGluZ19mYWN0b3IpOwogCiAgICAgLy8gQW5hbHl6ZSB0aGUgY29ycmVsYXRpb24gYmV0d2Vl
biByZW5kZXIgYW5kIGNhcHR1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRyaXhf
YnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZlci5jYwppbmRleCBmOTVlN2Y0
NjkwMmUxZjA1ZTMxYTA0NWFhN2I5Mjc0MjIzY2E1YjhhLi5iZDZkYWVhOTVjOTA1Y2E5ZTE3OGY4
YjU2MjJjOGIwYWM5OGZhN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRyaXhfYnVm
ZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIuY2MKQEAgLTEwLDcgKzEw
LDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9i
dWZmZXIuaCIKIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNf
Y29tbW9uLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvbWF0cml4X2J1ZmZlci5oCmluZGV4IDY0YWFjMGE0ZjY1ZTU3N2JiMWViZmQ3OGFmNmUyMmIy
ZDFlNDQ4MmUuLmNhZTM3NTlmOTIwODRhM2Q5ZTFjODA3NjA0ZGE4ZjM5YThiZjIxOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9tYXRyaXhfYnVmZmVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FFQzNfTUFUUklYX0JVRkZFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfQUVDM19NQVRSSVhfQlVGRkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4K
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vY2svbW9ja19yZW5kZXJfZGVsYXlfY29udHJvbGxlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvbW9jay9tb2NrX3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgKaW5k
ZXggZWQ1OTcxY2RhMGQzNmNjYjYxNmY2MGVhZjI2YWE2ZDgyYzdmNjljMi4uNWY2NTJlMTkyZjk3
YTFkOGVkZGVmMDU1OTdiYTQ1OTgyOTJjOWNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
bW9jay9tb2NrX3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
bW9jay9tb2NrX3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAgY2xh
c3MgTW9ja1JlbmRlckRlbGF5Q29udHJvbGxlciA6IHB1YmxpYyBSZW5kZXJEZWxheUNvbnRyb2xs
ZXIgewogICBNb2NrUmVuZGVyRGVsYXlDb250cm9sbGVyKCk7CiAgIHZpcnR1YWwgfk1vY2tSZW5k
ZXJEZWxheUNvbnRyb2xsZXIoKTsKIAotICBNT0NLX01FVEhPRDAoUmVzZXQsIHZvaWQoKSk7Cisg
IE1PQ0tfTUVUSE9EMShSZXNldCwgdm9pZChib29sIHJlc2V0X2RlbGF5X3N0YXRpc3RpY3MpKTsK
ICAgTU9DS19NRVRIT0QwKExvZ1JlbmRlckNhbGwsIHZvaWQoKSk7CiAgIE1PQ0tfTUVUSE9ENChH
ZXREZWxheSwKICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+KApA
QCAtMzMsNiArMzMsNyBAQCBjbGFzcyBNb2NrUmVuZGVyRGVsYXlDb250cm9sbGVyIDogcHVibGlj
IFJlbmRlckRlbGF5Q29udHJvbGxlciB7CiAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlbmRl
cl9kZWxheV9idWZmZXJfZGVsYXksCiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWJzbDo6b3B0
aW9uYWw8aW50PiYgZWNob19yZW1vdmVyX2RlbGF5LAogICAgICAgICAgICAgICAgICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjYXB0dXJlKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChI
YXNDbG9ja2RyaWZ0LCBib29sKCkpOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vdmluZ19hdmVyYWdlLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
bW92aW5nX2F2ZXJhZ2UuY2MKaW5kZXggZTlkNjRlNmIzMjYzMjY2MGY1YTA0NTMzNTIyMzQxOTRl
Zjg3NjEzNS4uN2E4MWVlODllYTY3ZTBkYzhlMzk2MjZjYjYyNTkxOTNhNDczOGYwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvbW92aW5nX2F2ZXJhZ2UuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvbW92aW5nX2F2ZXJhZ2UuY2MKQEAgLTE0LDYgKzE0LDggQEAKICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBhZWMzIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvbW92aW5nX2F2ZXJhZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vdmluZ19h
dmVyYWdlLmgKaW5kZXggOTQ0OTdkNzgyYzhkOWQyYWE0MGMwOWIzNDgyMzdjZWVhMGJkNWU2YS4u
MGY4NTViZWZmYjBmNTBlMmQzOTY4MDM3NDhlNDJkNTYwMTUzMTg3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvbW92aW5nX2F2ZXJhZ2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tb3Zpbmdf
YXZlcmFnZS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BRUMzX01PVklOR19BVkVSQUdFX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BRUMzX01PVklOR19BVkVSQUdFX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1
ZmZlci5oCmluZGV4IGRkNjcyNjhlZmQ3MWJhOGE5OGZlZDJjZDkwMmYxNmZlN2QzOTI1OTQuLjRj
N2M2MGNmODU3ZDdkODNkNDlhZTFkMzI0MzJkZGQ1MjM0ZTJkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVm
ZmVyLmgKQEAgLTExLDE0ICsxMSwxNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJ
TkdfQUVDM19SRU5ERVJfQlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lO
R19BRUMzX1JFTkRFUl9CVUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUg
PGFycmF5PgotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRl
ICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZmZ0X2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2ZmdF9kYXRhLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0
cml4X2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Zl
Y3Rvcl9idWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuY2MKaW5kZXggMzdhMjM3ODczOGNjNWJlMzA2MGQzYzQ1
NjBjNWFmZDY0NGE2MzIxMy4uMWVjMjc3OTBhODQyZGI5NWVkOTc5ZGE3YTRhMjU1OWI5NDcxOWM4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyLmNjCkBAIC0xMCwxNyArMTAsMjEg
QEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxh
eV9idWZmZXIuaCIKIAotI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8bnVtZXJp
Yz4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXJy
YXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNf
Y29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19m
ZnQuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9j
ZXNzb3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kZWNpbWF0
b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfYnVmZmVy
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2RhdGEuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRyaXhfYnVmZmVyLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1
bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKQEAg
LTM1LDE0ICszOSw2IEBAIGJvb2wgRW5hYmxlWmVyb0V4dGVybmFsRGVsYXlIZWFkcm9vbSgpIHsK
ICAgICAgICJXZWJSVEMtQWVjM1plcm9FeHRlcm5hbERlbGF5SGVhZHJvb21LaWxsU3dpdGNoIik7
CiB9CiAKLXNpemVfdCBHZXREb3duU2FtcGxpbmdGYWN0b3IoY29uc3QgRWNob0NhbmNlbGxlcjND
b25maWcmIGNvbmZpZykgewotICAvLyBEbyBub3QgdXNlIGRvd24gc2FtcGxpbmcgZmFjdG9yIDgg
aWYga2lsbCBzd2l0Y2ggaXMgdHJpZ2dlcmVkLgotICByZXR1cm4gKGNvbmZpZy5kZWxheS5kb3du
X3NhbXBsaW5nX2ZhY3RvciA9PSA4ICYmCi0gICAgICAgICAgZmllbGRfdHJpYWw6OklzRW5hYmxl
ZCgiV2ViUlRDLUFlYzNEb3duU2FtcGxpbmdGYWN0b3I4S2lsbFN3aXRjaCIpKQotICAgICAgICAg
ICAgID8gNAotICAgICAgICAgICAgIDogY29uZmlnLmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9y
OwotfQotCiBjbGFzcyBSZW5kZXJEZWxheUJ1ZmZlckltcGwgZmluYWwgOiBwdWJsaWMgUmVuZGVy
RGVsYXlCdWZmZXIgewogIHB1YmxpYzoKICAgUmVuZGVyRGVsYXlCdWZmZXJJbXBsKGNvbnN0IEVj
aG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsIHNpemVfdCBudW1fYmFuZHMpOwpAQCAtMTc3LDcg
KzE3Myw3IEBAIFJlbmRlckRlbGF5QnVmZmVySW1wbDo6UmVuZGVyRGVsYXlCdWZmZXJJbXBsKGNv
bnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICAgICAgbmV3IEFwbURhdGFE
dW1wZXIocnRjOjpBdG9taWNPcHM6OkluY3JlbWVudCgmaW5zdGFuY2VfY291bnRfKSkpLAogICAg
ICAgb3B0aW1pemF0aW9uXyhEZXRlY3RPcHRpbWl6YXRpb24oKSksCiAgICAgICBjb25maWdfKGNv
bmZpZyksCi0gICAgICBkb3duX3NhbXBsaW5nX2ZhY3Rvcl8oR2V0RG93blNhbXBsaW5nRmFjdG9y
KGNvbmZpZykpLAorICAgICAgZG93bl9zYW1wbGluZ19mYWN0b3JfKGNvbmZpZy5kZWxheS5kb3du
X3NhbXBsaW5nX2ZhY3RvciksCiAgICAgICB1c2VfemVyb19leHRlcm5hbF9kZWxheV9oZWFkcm9v
bV8oRW5hYmxlWmVyb0V4dGVybmFsRGVsYXlIZWFkcm9vbSgpKSwKICAgICAgIHN1Yl9ibG9ja19z
aXplXyhzdGF0aWNfY2FzdDxpbnQ+KGRvd25fc2FtcGxpbmdfZmFjdG9yXyA+IDAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtCbG9ja1NpemUgLyBkb3duX3Nh
bXBsaW5nX2ZhY3Rvcl8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9i
dWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuaAppbmRleCBhNmQ2
ODc0ZTNlNDY5NmIxMDVkZTA0YTQwMmMzMzI3MTQxMzg0YTNmLi5iZDI0MmY3NDNmOWIyYTI0MGRk
YjJjNmQ3NjM1OWM4NDJlYjMzYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJf
ZGVsYXlfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5o
CkBAIC0xMiwxNSArMTIsMTAgQEAKICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FF
QzNfUkVOREVSX0RFTEFZX0JVRkZFUl9IXwogCiAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0jaW5jbHVk
ZSA8YXJyYXk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRp
b25hbC5oIgotI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlv
L2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfZGF0YS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CkBAIC0zMywxMiArMjgsMTMgQEAgY2xhc3MgUmVuZGVyRGVsYXlCdWZmZXIgewogICAgIGtOb25l
LAogICAgIGtSZW5kZXJVbmRlcnJ1biwKICAgICBrUmVuZGVyT3ZlcnJ1biwKLSAgICBrQXBpQ2Fs
bFNrZXcsCi0gICAga1JlbmRlckRhdGFMb3N0CisgICAga0FwaUNhbGxTa2V3CiAgIH07CiAKICAg
c3RhdGljIFJlbmRlckRlbGF5QnVmZmVyKiBDcmVhdGUoY29uc3QgRWNob0NhbmNlbGxlcjNDb25m
aWcmIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51
bV9iYW5kcyk7CisgIHN0YXRpYyBSZW5kZXJEZWxheUJ1ZmZlciogQ3JlYXRlMihjb25zdCBFY2hv
Q2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG51bV9iYW5kcyk7CiAgIHZpcnR1YWwgflJlbmRlckRlbGF5QnVmZmVyKCkg
PSBkZWZhdWx0OwogCiAgIC8vIFJlc2V0cyB0aGUgYnVmZmVyIGFsaWdubWVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIyLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmVuZGVyX2RlbGF5X2J1ZmZlcjIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk5MmM1Yjg5ODc2NWYyNTI5
ZDk5YTM1NWE4ODFjZGE1ZjU2ZGI5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JlbmRlcl9kZWxheV9idWZmZXIyLmNjCkBAIC0wLDAgKzEsNDUzIEBACisvKgorICogIENvcHly
aWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisK
KyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3Zp
ZXcuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kZWNpbWF0b3IuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJfYnVmZmVyLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2J1ZmZlci5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9kYXRhLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZlci5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVy
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZl
ci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRh
X2R1bXBlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKworbmFtZXNw
YWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworCitjbGFzcyBSZW5kZXJEZWxheUJ1ZmZlckltcGwy
IGZpbmFsIDogcHVibGljIFJlbmRlckRlbGF5QnVmZmVyIHsKKyBwdWJsaWM6CisgIFJlbmRlckRl
bGF5QnVmZmVySW1wbDIoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywgc2l6ZV90
IG51bV9iYW5kcyk7CisgIFJlbmRlckRlbGF5QnVmZmVySW1wbDIoKSA9IGRlbGV0ZTsKKyAgflJl
bmRlckRlbGF5QnVmZmVySW1wbDIoKSBvdmVycmlkZTsKKworICB2b2lkIFJlc2V0KCkgb3ZlcnJp
ZGU7CisgIEJ1ZmZlcmluZ0V2ZW50IEluc2VydChjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rv
cjxmbG9hdD4+JiBibG9jaykgb3ZlcnJpZGU7CisgIEJ1ZmZlcmluZ0V2ZW50IFByZXBhcmVDYXB0
dXJlUHJvY2Vzc2luZygpIG92ZXJyaWRlOworICBib29sIFNldERlbGF5KHNpemVfdCBkZWxheSkg
b3ZlcnJpZGU7CisgIHNpemVfdCBEZWxheSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbXB1
dGVEZWxheSgpOyB9CisgIHNpemVfdCBNYXhEZWxheSgpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICBy
ZXR1cm4gYmxvY2tzXy5idWZmZXIuc2l6ZSgpIC0gMSAtIGJ1ZmZlcl9oZWFkcm9vbV87CisgIH0K
KyAgUmVuZGVyQnVmZmVyKiBHZXRSZW5kZXJCdWZmZXIoKSBvdmVycmlkZSB7IHJldHVybiAmZWNo
b19yZW1vdmVyX2J1ZmZlcl87IH0KKworICBjb25zdCBEb3duc2FtcGxlZFJlbmRlckJ1ZmZlciYg
R2V0RG93bnNhbXBsZWRSZW5kZXJCdWZmZXIoKSBjb25zdCBvdmVycmlkZSB7CisgICAgcmV0dXJu
IGxvd19yYXRlXzsKKyAgfQorCisgIGludCBCdWZmZXJMYXRlbmN5KCkgY29uc3Q7CisgIGJvb2wg
Q2F1c2FsRGVsYXkoc2l6ZV90IGRlbGF5KSBjb25zdCBvdmVycmlkZTsKKyAgdm9pZCBTZXRBdWRp
b0J1ZmZlckRlbGF5KHNpemVfdCBkZWxheV9tcykgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorICBz
dGF0aWMgaW50IGluc3RhbmNlX2NvdW50XzsKKyAgc3RkOjp1bmlxdWVfcHRyPEFwbURhdGFEdW1w
ZXI+IGRhdGFfZHVtcGVyXzsKKyAgY29uc3QgQWVjM09wdGltaXphdGlvbiBvcHRpbWl6YXRpb25f
OworICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWdfOworICBzaXplX3QgZG93bl9z
YW1wbGluZ19mYWN0b3JfOworICBjb25zdCBpbnQgc3ViX2Jsb2NrX3NpemVfOworICBNYXRyaXhC
dWZmZXIgYmxvY2tzXzsKKyAgVmVjdG9yQnVmZmVyIHNwZWN0cmFfOworICBGZnRCdWZmZXIgZmZ0
c187CisgIGFic2w6Om9wdGlvbmFsPHNpemVfdD4gZGVsYXlfOworICBSZW5kZXJCdWZmZXIgZWNo
b19yZW1vdmVyX2J1ZmZlcl87CisgIERvd25zYW1wbGVkUmVuZGVyQnVmZmVyIGxvd19yYXRlXzsK
KyAgRGVjaW1hdG9yIHJlbmRlcl9kZWNpbWF0b3JfOworICBjb25zdCBBZWMzRmZ0IGZmdF87Cisg
IHN0ZDo6dmVjdG9yPGZsb2F0PiByZW5kZXJfZHNfOworICBjb25zdCBpbnQgYnVmZmVyX2hlYWRy
b29tXzsKKyAgYm9vbCBsYXN0X2NhbGxfd2FzX3JlbmRlcl8gPSBmYWxzZTsKKyAgaW50IG51bV9h
cGlfY2FsbHNfaW5fYV9yb3dfID0gMDsKKyAgaW50IG1heF9vYnNlcnZlZF9qaXR0ZXJfID0gMTsK
KyAgc2l6ZV90IGNhcHR1cmVfY2FsbF9jb3VudGVyXyA9IDA7CisgIHNpemVfdCByZW5kZXJfY2Fs
bF9jb3VudGVyXyA9IDA7CisgIGJvb2wgcmVuZGVyX2FjdGl2aXR5XyA9IGZhbHNlOworICBzaXpl
X3QgcmVuZGVyX2FjdGl2aXR5X2NvdW50ZXJfID0gMDsKKyAgYWJzbDo6b3B0aW9uYWw8c2l6ZV90
PiBleHRlcm5hbF9hdWRpb19idWZmZXJfZGVsYXlfOworICBib29sIGV4dGVybmFsX2F1ZGlvX2J1
ZmZlcl9kZWxheV92ZXJpZmllZF9hZnRlcl9yZXNldF8gPSBmYWxzZTsKKyAgc2l6ZV90IG1pbl9s
YXRlbmN5X2Jsb2Nrc18gPSAwOworICBzaXplX3QgZXhjZXNzX3JlbmRlcl9kZXRlY3Rpb25fY291
bnRlcl8gPSAwOworICBzaXplX3QgbnVtX2JhbmRzXzsKKworICBpbnQgTWFwRGVsYXlUb1RvdGFs
RGVsYXkoc2l6ZV90IGRlbGF5KSBjb25zdDsKKyAgaW50IENvbXB1dGVEZWxheSgpIGNvbnN0Owor
ICB2b2lkIEFwcGx5VG90YWxEZWxheShpbnQgZGVsYXkpOworICB2b2lkIEluc2VydEJsb2NrKGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4mIGJsb2NrLAorICAgICAgICAgICAg
ICAgICAgIGludCBwcmV2aW91c193cml0ZSk7CisgIGJvb2wgRGV0ZWN0QWN0aXZlUmVuZGVyKHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiB4KSBjb25zdDsKKyAgYm9vbCBEZXRlY3RFeGNlc3NS
ZW5kZXJCbG9ja3MoKTsKKyAgdm9pZCBJbmNyZW1lbnRXcml0ZUluZGljZXMoKTsKKyAgdm9pZCBJ
bmNyZW1lbnRMb3dSYXRlUmVhZEluZGljZXMoKTsKKyAgdm9pZCBJbmNyZW1lbnRSZWFkSW5kaWNl
cygpOworICBib29sIFJlbmRlck92ZXJydW4oKTsKKyAgYm9vbCBSZW5kZXJVbmRlcnJ1bigpOwor
fTsKKworaW50IFJlbmRlckRlbGF5QnVmZmVySW1wbDI6Omluc3RhbmNlX2NvdW50XyA9IDA7CisK
K1JlbmRlckRlbGF5QnVmZmVySW1wbDI6OlJlbmRlckRlbGF5QnVmZmVySW1wbDIoCisgICAgY29u
c3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKKyAgICBzaXplX3QgbnVtX2JhbmRzKQor
ICAgIDogZGF0YV9kdW1wZXJfKAorICAgICAgICAgIG5ldyBBcG1EYXRhRHVtcGVyKHJ0Yzo6QXRv
bWljT3BzOjpJbmNyZW1lbnQoJmluc3RhbmNlX2NvdW50XykpKSwKKyAgICAgIG9wdGltaXphdGlv
bl8oRGV0ZWN0T3B0aW1pemF0aW9uKCkpLAorICAgICAgY29uZmlnXyhjb25maWcpLAorICAgICAg
ZG93bl9zYW1wbGluZ19mYWN0b3JfKGNvbmZpZy5kZWxheS5kb3duX3NhbXBsaW5nX2ZhY3Rvciks
CisgICAgICBzdWJfYmxvY2tfc2l6ZV8oc3RhdGljX2Nhc3Q8aW50Pihkb3duX3NhbXBsaW5nX2Zh
Y3Rvcl8gPiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBr
QmxvY2tTaXplIC8gZG93bl9zYW1wbGluZ19mYWN0b3JfCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBrQmxvY2tTaXplKSksCisgICAgICBibG9ja3NfKEdldFJl
bmRlckRlbGF5QnVmZmVyU2l6ZShkb3duX3NhbXBsaW5nX2ZhY3Rvcl8sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGVsYXkubnVtX2ZpbHRlcnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZmlsdGVyLm1haW4ubGVu
Z3RoX2Jsb2NrcyksCisgICAgICAgICAgICAgIG51bV9iYW5kcywKKyAgICAgICAgICAgICAga0Js
b2NrU2l6ZSksCisgICAgICBzcGVjdHJhXyhibG9ja3NfLmJ1ZmZlci5zaXplKCksIGtGZnRMZW5n
dGhCeTJQbHVzMSksCisgICAgICBmZnRzXyhibG9ja3NfLmJ1ZmZlci5zaXplKCkpLAorICAgICAg
ZGVsYXlfKGNvbmZpZ18uZGVsYXkuZGVmYXVsdF9kZWxheSksCisgICAgICBlY2hvX3JlbW92ZXJf
YnVmZmVyXygmYmxvY2tzXywgJnNwZWN0cmFfLCAmZmZ0c18pLAorICAgICAgbG93X3JhdGVfKEdl
dERvd25TYW1wbGVkQnVmZmVyU2l6ZShkb3duX3NhbXBsaW5nX2ZhY3Rvcl8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kZWxheS5udW1fZmlsdGVycykp
LAorICAgICAgcmVuZGVyX2RlY2ltYXRvcl8oZG93bl9zYW1wbGluZ19mYWN0b3JfKSwKKyAgICAg
IGZmdF8oKSwKKyAgICAgIHJlbmRlcl9kc18oc3ViX2Jsb2NrX3NpemVfLCAwLmYpLAorICAgICAg
YnVmZmVyX2hlYWRyb29tXyhjb25maWcuZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2NrcyksCisgICAg
ICBudW1fYmFuZHNfKG51bV9iYW5kcykgeworICBSVENfRENIRUNLX0VRKGJsb2Nrc18uYnVmZmVy
LnNpemUoKSwgZmZ0c18uYnVmZmVyLnNpemUoKSk7CisgIFJUQ19EQ0hFQ0tfRVEoc3BlY3RyYV8u
YnVmZmVyLnNpemUoKSwgZmZ0c18uYnVmZmVyLnNpemUoKSk7CisKKyAgUmVzZXQoKTsKK30KKwor
UmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6flJlbmRlckRlbGF5QnVmZmVySW1wbDIoKSA9IGRlZmF1
bHQ7CisKKy8vIFJlc2V0cyB0aGUgYnVmZmVyIGRlbGF5cyBhbmQgY2xlYXJzIHRoZSByZXBvcnRl
ZCBkZWxheXMuCit2b2lkIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OlJlc2V0KCkgeworICBsYXN0
X2NhbGxfd2FzX3JlbmRlcl8gPSBmYWxzZTsKKyAgbnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPSAx
OworICBtaW5fbGF0ZW5jeV9ibG9ja3NfID0gMDsKKyAgZXhjZXNzX3JlbmRlcl9kZXRlY3Rpb25f
Y291bnRlcl8gPSAwOworCisgIC8vIEluaXRpYWxpemUgdGhlIHJlYWQgaW5kZXggdG8gb25lIHN1
Yi1ibG9jayBiZWZvcmUgdGhlIHdyaXRlIGluZGV4LgorICBsb3dfcmF0ZV8ucmVhZCA9IGxvd19y
YXRlXy5PZmZzZXRJbmRleChsb3dfcmF0ZV8ud3JpdGUsIHN1Yl9ibG9ja19zaXplXyk7CisKKyAg
Ly8gQ2hlY2sgZm9yIGFueSBleHRlcm5hbCBhdWRpbyBidWZmZXIgZGVsYXkgYW5kIHdoZXRoZXIg
aXQgaXMgZmVhc2libGUuCisgIGlmIChleHRlcm5hbF9hdWRpb19idWZmZXJfZGVsYXlfKSB7Cisg
ICAgY29uc3Qgc2l6ZV90IGhlYWRyb29tID0gMjsKKyAgICBzaXplX3QgYXVkaW9fYnVmZmVyX2Rl
bGF5X3RvX3NldDsKKyAgICAvLyBNaW5pbXVtIGRlbGF5IGlzIDEgKGxpa2UgdGhlIGxvdy1yYXRl
IHJlbmRlciBidWZmZXIpLgorICAgIGlmICgqZXh0ZXJuYWxfYXVkaW9fYnVmZmVyX2RlbGF5XyA8
PSBoZWFkcm9vbSkgeworICAgICAgYXVkaW9fYnVmZmVyX2RlbGF5X3RvX3NldCA9IDE7CisgICAg
fSBlbHNlIHsKKyAgICAgIGF1ZGlvX2J1ZmZlcl9kZWxheV90b19zZXQgPSAqZXh0ZXJuYWxfYXVk
aW9fYnVmZmVyX2RlbGF5XyAtIGhlYWRyb29tOworICAgIH0KKworICAgIGF1ZGlvX2J1ZmZlcl9k
ZWxheV90b19zZXQgPSBzdGQ6Om1pbihhdWRpb19idWZmZXJfZGVsYXlfdG9fc2V0LCBNYXhEZWxh
eSgpKTsKKworICAgIC8vIFdoZW4gYW4gZXh0ZXJuYWwgZGVsYXkgZXN0aW1hdGUgaXMgYXZhaWxh
YmxlLCB1c2UgdGhhdCBkZWxheSBhcyB0aGUKKyAgICAvLyBpbml0aWFsIHJlbmRlciBidWZmZXIg
ZGVsYXkuCisgICAgQXBwbHlUb3RhbERlbGF5KGF1ZGlvX2J1ZmZlcl9kZWxheV90b19zZXQpOwor
ICAgIGRlbGF5XyA9IENvbXB1dGVEZWxheSgpOworCisgICAgZXh0ZXJuYWxfYXVkaW9fYnVmZmVy
X2RlbGF5X3ZlcmlmaWVkX2FmdGVyX3Jlc2V0XyA9IGZhbHNlOworICB9IGVsc2UgeworICAgIC8v
IElmIGFuIGV4dGVybmFsIGRlbGF5IGVzdGltYXRlIGlzIG5vdCBhdmFpbGFibGUsIHVzZSB0aGF0
IGRlbGF5IGFzIHRoZQorICAgIC8vIGluaXRpYWwgZGVsYXkuIFNldCB0aGUgcmVuZGVyIGJ1ZmZl
ciBkZWxheXMgdG8gdGhlIGRlZmF1bHQgZGVsYXkuCisgICAgQXBwbHlUb3RhbERlbGF5KGNvbmZp
Z18uZGVsYXkuZGVmYXVsdF9kZWxheSk7CisKKyAgICAvLyBVbnNldCB0aGUgZGVsYXlzIHdoaWNo
IGFyZSBzZXQgYnkgU2V0RGVsYXkuCisgICAgZGVsYXlfID0gYWJzbDo6bnVsbG9wdDsKKyAgfQor
fQorCisvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGludG8gdGhlIHJlbmRlciBidWZmZXJzLgorUmVu
ZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50IFJlbmRlckRlbGF5QnVmZmVySW1wbDI6Oklu
c2VydCgKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+JiBibG9jaykg
eworICArK3JlbmRlcl9jYWxsX2NvdW50ZXJfOworICBpZiAoZGVsYXlfKSB7CisgICAgaWYgKCFs
YXN0X2NhbGxfd2FzX3JlbmRlcl8pIHsKKyAgICAgIGxhc3RfY2FsbF93YXNfcmVuZGVyXyA9IHRy
dWU7CisgICAgICBudW1fYXBpX2NhbGxzX2luX2Ffcm93XyA9IDE7CisgICAgfSBlbHNlIHsKKyAg
ICAgIGlmICgrK251bV9hcGlfY2FsbHNfaW5fYV9yb3dfID4gbWF4X29ic2VydmVkX2ppdHRlcl8p
IHsKKyAgICAgICAgbWF4X29ic2VydmVkX2ppdHRlcl8gPSBudW1fYXBpX2NhbGxzX2luX2Ffcm93
XzsKKyAgICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQorICAgICAgICAgICAgPDwgIk5ldyBtYXgg
bnVtYmVyIGFwaSBqaXR0ZXIgb2JzZXJ2ZWQgYXQgcmVuZGVyIGJsb2NrICIKKyAgICAgICAgICAg
IDw8IHJlbmRlcl9jYWxsX2NvdW50ZXJfIDw8ICI6ICAiIDw8IG51bV9hcGlfY2FsbHNfaW5fYV9y
b3dfCisgICAgICAgICAgICA8PCAiIGJsb2NrcyI7CisgICAgICB9CisgICAgfQorICB9CisKKyAg
Ly8gSW5jcmVhc2UgdGhlIHdyaXRlIGluZGljZXMgdG8gd2hlcmUgdGhlIG5ldyBibG9ja3Mgc2hv
dWxkIGJlIHdyaXR0ZW4uCisgIGNvbnN0IGludCBwcmV2aW91c193cml0ZSA9IGJsb2Nrc18ud3Jp
dGU7CisgIEluY3JlbWVudFdyaXRlSW5kaWNlcygpOworCisgIC8vIEFsbG93IG92ZXJydW4gYW5k
IGRvIGEgcmVzZXQgd2hlbiByZW5kZXIgb3ZlcnJ1biBvY2N1cnJzIGR1ZSB0byBtb3JlIHJlbmRl
cgorICAvLyBkYXRhIGJlaW5nIGluc2VydGVkIHRoYW4gY2FwdHVyZSBkYXRhIGlzIHJlY2VpdmVk
LgorICBCdWZmZXJpbmdFdmVudCBldmVudCA9CisgICAgICBSZW5kZXJPdmVycnVuKCkgPyBCdWZm
ZXJpbmdFdmVudDo6a1JlbmRlck92ZXJydW4gOiBCdWZmZXJpbmdFdmVudDo6a05vbmU7CisKKyAg
Ly8gRGV0ZWN0IGFuZCB1cGRhdGUgcmVuZGVyIGFjdGl2aXR5LgorICBpZiAoIXJlbmRlcl9hY3Rp
dml0eV8pIHsKKyAgICByZW5kZXJfYWN0aXZpdHlfY291bnRlcl8gKz0gRGV0ZWN0QWN0aXZlUmVu
ZGVyKGJsb2NrWzBdKSA/IDEgOiAwOworICAgIHJlbmRlcl9hY3Rpdml0eV8gPSByZW5kZXJfYWN0
aXZpdHlfY291bnRlcl8gPj0gMjA7CisgIH0KKworICAvLyBJbnNlcnQgdGhlIG5ldyByZW5kZXIg
YmxvY2sgaW50byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgorICBJbnNlcnRCbG9jayhibG9jaywg
cHJldmlvdXNfd3JpdGUpOworCisgIGlmIChldmVudCAhPSBCdWZmZXJpbmdFdmVudDo6a05vbmUp
IHsKKyAgICBSZXNldCgpOworICB9CisKKyAgcmV0dXJuIGV2ZW50OworfQorCisvLyBQcmVwYXJl
cyB0aGUgcmVuZGVyIGJ1ZmZlcnMgZm9yIHByb2Nlc3NpbmcgYW5vdGhlciBjYXB0dXJlIGJsb2Nr
LgorUmVuZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50CitSZW5kZXJEZWxheUJ1ZmZlcklt
cGwyOjpQcmVwYXJlQ2FwdHVyZVByb2Nlc3NpbmcoKSB7CisgIFJlbmRlckRlbGF5QnVmZmVyOjpC
dWZmZXJpbmdFdmVudCBldmVudCA9IEJ1ZmZlcmluZ0V2ZW50OjprTm9uZTsKKyAgKytjYXB0dXJl
X2NhbGxfY291bnRlcl87CisKKyAgaWYgKGRlbGF5XykgeworICAgIGlmIChsYXN0X2NhbGxfd2Fz
X3JlbmRlcl8pIHsKKyAgICAgIGxhc3RfY2FsbF93YXNfcmVuZGVyXyA9IGZhbHNlOworICAgICAg
bnVtX2FwaV9jYWxsc19pbl9hX3Jvd18gPSAxOworICAgIH0gZWxzZSB7CisgICAgICBpZiAoKytu
dW1fYXBpX2NhbGxzX2luX2Ffcm93XyA+IG1heF9vYnNlcnZlZF9qaXR0ZXJfKSB7CisgICAgICAg
IG1heF9vYnNlcnZlZF9qaXR0ZXJfID0gbnVtX2FwaV9jYWxsc19pbl9hX3Jvd187CisgICAgICAg
IFJUQ19MT0coTFNfV0FSTklORykKKyAgICAgICAgICAgIDw8ICJOZXcgbWF4IG51bWJlciBhcGkg
aml0dGVyIG9ic2VydmVkIGF0IGNhcHR1cmUgYmxvY2sgIgorICAgICAgICAgICAgPDwgY2FwdHVy
ZV9jYWxsX2NvdW50ZXJfIDw8ICI6ICAiIDw8IG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfCisgICAg
ICAgICAgICA8PCAiIGJsb2NrcyI7CisgICAgICB9CisgICAgfQorICB9CisKKyAgaWYgKERldGVj
dEV4Y2Vzc1JlbmRlckJsb2NrcygpKSB7CisgICAgLy8gVG9vIG1hbnkgcmVuZGVyIGJsb2NrcyBj
b21wYXJlZCB0byBjYXB0dXJlIGJsb2Nrcy4gUmlzayBvZiBkZWxheSBlbmRpbmcKKyAgICAvLyB1
cCBiZWZvcmUgdGhlIGZpbHRlciB1c2VkIGJ5IHRoZSBkZWxheSBlc3RpbWF0b3IuCisgICAgUlRD
X0xPRyhMU19XQVJOSU5HKSA8PCAiRXhjZXNzIHJlbmRlciBibG9ja3MgZGV0ZWN0ZWQgYXQgYmxv
Y2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgY2FwdHVyZV9jYWxsX2NvdW50ZXJfOwor
ICAgIFJlc2V0KCk7CisgICAgZXZlbnQgPSBCdWZmZXJpbmdFdmVudDo6a1JlbmRlck92ZXJydW47
CisgIH0gZWxzZSBpZiAoUmVuZGVyVW5kZXJydW4oKSkgeworICAgIC8vIERvbid0IGluY3JlbWVu
dCB0aGUgcmVhZCBpbmRpY2VzIG9mIHRoZSBsb3cgcmF0ZSBidWZmZXIgaWYgdGhlcmUgaXMgYQor
ICAgIC8vIHJlbmRlciB1bmRlcnJ1bi4KKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJSZW5k
ZXIgYnVmZmVyIHVuZGVycnVuIGRldGVjdGVkIGF0IGJsb2NrICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IGNhcHR1cmVfY2FsbF9jb3VudGVyXzsKKyAgICBJbmNyZW1lbnRSZWFkSW5kaWNl
cygpOworICAgIC8vIEluY3JlbWVudGluZyB0aGUgYnVmZmVyIGluZGV4IHdpdGhvdXQgaW5jcmVh
c2luZyB0aGUgbG93IHJhdGUgYnVmZmVyCisgICAgLy8gaW5kZXggbWVhbnMgdGhhdCB0aGUgZGVs
YXkgaXMgcmVkdWNlZCBieSBvbmUuCisgICAgaWYgKGRlbGF5XyAmJiAqZGVsYXlfID4gMCkKKyAg
ICAgIGRlbGF5XyA9ICpkZWxheV8gLSAxOworICAgIGV2ZW50ID0gQnVmZmVyaW5nRXZlbnQ6OmtS
ZW5kZXJVbmRlcnJ1bjsKKyAgfSBlbHNlIHsKKyAgICAvLyBJbmNyZW1lbnQgdGhlIHJlYWQgaW5k
aWNlcyBpbiB0aGUgcmVuZGVyIGJ1ZmZlcnMgdG8gcG9pbnQgdG8gdGhlIG1vc3QKKyAgICAvLyBy
ZWNlbnQgYmxvY2sgdG8gdXNlIGluIHRoZSBjYXB0dXJlIHByb2Nlc3NpbmcuCisgICAgSW5jcmVt
ZW50TG93UmF0ZVJlYWRJbmRpY2VzKCk7CisgICAgSW5jcmVtZW50UmVhZEluZGljZXMoKTsKKyAg
fQorCisgIGVjaG9fcmVtb3Zlcl9idWZmZXJfLlNldFJlbmRlckFjdGl2aXR5KHJlbmRlcl9hY3Rp
dml0eV8pOworICBpZiAocmVuZGVyX2FjdGl2aXR5XykgeworICAgIHJlbmRlcl9hY3Rpdml0eV9j
b3VudGVyXyA9IDA7CisgICAgcmVuZGVyX2FjdGl2aXR5XyA9IGZhbHNlOworICB9CisKKyAgcmV0
dXJuIGV2ZW50OworfQorCisvLyBTZXRzIHRoZSBkZWxheSBhbmQgcmV0dXJucyBhIGJvb2wgaW5k
aWNhdGluZyB3aGV0aGVyIHRoZSBkZWxheSB3YXMgY2hhbmdlZC4KK2Jvb2wgUmVuZGVyRGVsYXlC
dWZmZXJJbXBsMjo6U2V0RGVsYXkoc2l6ZV90IGRlbGF5KSB7CisgIGlmICghZXh0ZXJuYWxfYXVk
aW9fYnVmZmVyX2RlbGF5X3ZlcmlmaWVkX2FmdGVyX3Jlc2V0XyAmJgorICAgICAgZXh0ZXJuYWxf
YXVkaW9fYnVmZmVyX2RlbGF5XyAmJiBkZWxheV8pIHsKKyAgICBpbnQgZGlmZmVyZW5jZSA9IHN0
YXRpY19jYXN0PGludD4oZGVsYXkpIC0gc3RhdGljX2Nhc3Q8aW50PigqZGVsYXlfKTsKKyAgICBS
VENfTE9HKExTX1dBUk5JTkcpIDw8ICJNaXNtYXRjaCBiZXR3ZWVuIGZpcnN0IGVzdGltYXRlZCBk
ZWxheSBhZnRlciByZXNldCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIGV4dGVy
bmFsbHkgcmVwb3J0ZWQgYXVkaW8gYnVmZmVyIGRlbGF5OiAiCisgICAgICAgICAgICAgICAgICAg
ICAgICA8PCBkaWZmZXJlbmNlIDw8ICIgYmxvY2tzIjsKKyAgICBleHRlcm5hbF9hdWRpb19idWZm
ZXJfZGVsYXlfdmVyaWZpZWRfYWZ0ZXJfcmVzZXRfID0gdHJ1ZTsKKyAgfQorICBpZiAoZGVsYXlf
ICYmICpkZWxheV8gPT0gZGVsYXkpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgZGVsYXlf
ID0gZGVsYXk7CisKKyAgLy8gQ29tcHV0ZSB0aGUgdG90YWwgZGVsYXkgYW5kIGxpbWl0IHRoZSBk
ZWxheSB0byB0aGUgYWxsb3dlZCByYW5nZS4KKyAgaW50IHRvdGFsX2RlbGF5ID0gTWFwRGVsYXlU
b1RvdGFsRGVsYXkoKmRlbGF5Xyk7CisgIHRvdGFsX2RlbGF5ID0KKyAgICAgIHN0ZDo6bWluKE1h
eERlbGF5KCksIHN0YXRpY19jYXN0PHNpemVfdD4oc3RkOjptYXgodG90YWxfZGVsYXksIDApKSk7
CisKKyAgLy8gQXBwbHkgdGhlIGRlbGF5IHRvIHRoZSBidWZmZXJzLgorICBBcHBseVRvdGFsRGVs
YXkodG90YWxfZGVsYXkpOworICByZXR1cm4gdHJ1ZTsKK30KKworLy8gUmV0dXJucyB3aGV0aGVy
IHRoZSBzcGVjaWZpZWQgZGVsYXkgaXMgY2F1c2FsLgorYm9vbCBSZW5kZXJEZWxheUJ1ZmZlcklt
cGwyOjpDYXVzYWxEZWxheShzaXplX3QgZGVsYXkpIGNvbnN0IHsKKyAgLy8gVE9ETyhndXN0YWYp
OiBSZW1vdmUgdGhpcyBmcm9tIFJlbmRlckRlbGF5QnVmZmVyLgorICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpTZXRBdWRpb0J1ZmZlckRlbGF5KHNpemVf
dCBkZWxheV9tcykgeworICBpZiAoIWV4dGVybmFsX2F1ZGlvX2J1ZmZlcl9kZWxheV8pIHsKKyAg
ICBSVENfTE9HKExTX1dBUk5JTkcpCisgICAgICAgIDw8ICJSZWNlaXZpbmcgYSBmaXJzdCBleHRl
cm5hbGx5IHJlcG9ydGVkIGF1ZGlvIGJ1ZmZlciBkZWxheSBvZiAiCisgICAgICAgIDw8IGRlbGF5
X21zIDw8ICIgbXMuIjsKKyAgfQorCisgIC8vIENvbnZlcnQgZGVsYXkgZnJvbSBtaWxsaXNlY29u
ZHMgdG8gYmxvY2tzIChyb3VuZGVkIGRvd24pLgorICBleHRlcm5hbF9hdWRpb19idWZmZXJfZGVs
YXlfID0gZGVsYXlfbXMgPj4gKChudW1fYmFuZHNfID09IDEpID8gMSA6IDIpOworfQorCisvLyBN
YXBzIHRoZSBleHRlcm5hbGx5IGNvbXB1dGVkIGRlbGF5IHRvIHRoZSBkZWxheSB1c2VkIGludGVy
bmFsbHkuCitpbnQgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6TWFwRGVsYXlUb1RvdGFsRGVsYXko
CisgICAgc2l6ZV90IGV4dGVybmFsX2RlbGF5X2Jsb2NrcykgY29uc3QgeworICBjb25zdCBpbnQg
bGF0ZW5jeV9ibG9ja3MgPSBCdWZmZXJMYXRlbmN5KCk7CisgIHJldHVybiBsYXRlbmN5X2Jsb2Nr
cyArIHN0YXRpY19jYXN0PGludD4oZXh0ZXJuYWxfZGVsYXlfYmxvY2tzKTsKK30KKworLy8gUmV0
dXJucyB0aGUgZGVsYXkgKG5vdCBpbmNsdWRpbmcgY2FsbCBqaXR0ZXIpLgoraW50IFJlbmRlckRl
bGF5QnVmZmVySW1wbDI6OkNvbXB1dGVEZWxheSgpIGNvbnN0IHsKKyAgY29uc3QgaW50IGxhdGVu
Y3lfYmxvY2tzID0gQnVmZmVyTGF0ZW5jeSgpOworICBpbnQgaW50ZXJuYWxfZGVsYXkgPSBzcGVj
dHJhXy5yZWFkID49IHNwZWN0cmFfLndyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICA/
IHNwZWN0cmFfLnJlYWQgLSBzcGVjdHJhXy53cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiBzcGVjdHJhXy5zaXplICsgc3BlY3RyYV8ucmVhZCAtIHNwZWN0cmFfLndyaXRlOworCisg
IHJldHVybiBpbnRlcm5hbF9kZWxheSAtIGxhdGVuY3lfYmxvY2tzOworfQorCisvLyBTZXQgdGhl
IHJlYWQgaW5kaWNlcyBhY2NvcmRpbmcgdG8gdGhlIGRlbGF5Lgordm9pZCBSZW5kZXJEZWxheUJ1
ZmZlckltcGwyOjpBcHBseVRvdGFsRGVsYXkoaW50IGRlbGF5KSB7CisgIFJUQ19MT0coTFNfV0FS
TklORykgPDwgIkFwcGx5aW5nIHRvdGFsIGRlbGF5IG9mICIgPDwgZGVsYXkgPDwgIiBibG9ja3Mu
IjsKKyAgYmxvY2tzXy5yZWFkID0gYmxvY2tzXy5PZmZzZXRJbmRleChibG9ja3NfLndyaXRlLCAt
ZGVsYXkpOworICBzcGVjdHJhXy5yZWFkID0gc3BlY3RyYV8uT2Zmc2V0SW5kZXgoc3BlY3RyYV8u
d3JpdGUsIGRlbGF5KTsKKyAgZmZ0c18ucmVhZCA9IGZmdHNfLk9mZnNldEluZGV4KGZmdHNfLndy
aXRlLCBkZWxheSk7Cit9CisKKy8vIEluc2VydHMgYSBibG9jayBpbnRvIHRoZSByZW5kZXIgYnVm
ZmVycy4KK3ZvaWQgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6SW5zZXJ0QmxvY2soCisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiYgYmxvY2ssCisgICAgaW50IHByZXZp
b3VzX3dyaXRlKSB7CisgIGF1dG8mIGIgPSBibG9ja3NfOworICBhdXRvJiBsciA9IGxvd19yYXRl
XzsKKyAgYXV0byYgZHMgPSByZW5kZXJfZHNfOworICBhdXRvJiBmID0gZmZ0c187CisgIGF1dG8m
IHMgPSBzcGVjdHJhXzsKKyAgUlRDX0RDSEVDS19FUShibG9jay5zaXplKCksIGIuYnVmZmVyW2Iu
d3JpdGVdLnNpemUoKSk7CisgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgYmxvY2suc2l6ZSgpOyAr
K2spIHsKKyAgICBSVENfRENIRUNLX0VRKGJsb2NrW2tdLnNpemUoKSwgYi5idWZmZXJbYi53cml0
ZV1ba10uc2l6ZSgpKTsKKyAgICBzdGQ6OmNvcHkoYmxvY2tba10uYmVnaW4oKSwgYmxvY2tba10u
ZW5kKCksIGIuYnVmZmVyW2Iud3JpdGVdW2tdLmJlZ2luKCkpOworICB9CisKKyAgZGF0YV9kdW1w
ZXJfLT5EdW1wV2F2KCJhZWMzX3JlbmRlcl9kZWNpbWF0b3JfaW5wdXQiLCBibG9ja1swXS5zaXpl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1swXS5kYXRhKCksIDE2MDAwLCAxKTsK
KyAgcmVuZGVyX2RlY2ltYXRvcl8uRGVjaW1hdGUoYmxvY2tbMF0sIGRzKTsKKyAgZGF0YV9kdW1w
ZXJfLT5EdW1wV2F2KCJhZWMzX3JlbmRlcl9kZWNpbWF0b3Jfb3V0cHV0IiwgZHMuc2l6ZSgpLCBk
cy5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAxNjAwMCAvIGRvd25fc2FtcGxpbmdf
ZmFjdG9yXywgMSk7CisgIHN0ZDo6Y29weShkcy5yYmVnaW4oKSwgZHMucmVuZCgpLCBsci5idWZm
ZXIuYmVnaW4oKSArIGxyLndyaXRlKTsKKyAgZmZ0Xy5QYWRkZWRGZnQoYmxvY2tbMF0sIGIuYnVm
ZmVyW3ByZXZpb3VzX3dyaXRlXVswXSwgJmYuYnVmZmVyW2Yud3JpdGVdKTsKKyAgZi5idWZmZXJb
Zi53cml0ZV0uU3BlY3RydW0ob3B0aW1pemF0aW9uXywgcy5idWZmZXJbcy53cml0ZV0pOworfQor
Citib29sIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OkRldGVjdEFjdGl2ZVJlbmRlcigKKyAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4geCkgY29uc3QgeworICBjb25zdCBmbG9hdCB4X2Vu
ZXJneSA9IHN0ZDo6aW5uZXJfcHJvZHVjdCh4LmJlZ2luKCksIHguZW5kKCksIHguYmVnaW4oKSwg
MC5mKTsKKyAgcmV0dXJuIHhfZW5lcmd5ID4gKGNvbmZpZ18ucmVuZGVyX2xldmVscy5hY3RpdmVf
cmVuZGVyX2xpbWl0ICoKKyAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18ucmVuZGVyX2xldmVs
cy5hY3RpdmVfcmVuZGVyX2xpbWl0KSAqCisgICAgICAgICAgICAgICAgICAgICAgICBrRmZ0TGVu
Z3RoQnkyOworfQorCitib29sIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OkRldGVjdEV4Y2Vzc1Jl
bmRlckJsb2NrcygpIHsKKyAgYm9vbCBleGNlc3NfcmVuZGVyX2RldGVjdGVkID0gZmFsc2U7Cisg
IGNvbnN0IHNpemVfdCBsYXRlbmN5X2Jsb2NrcyA9IHN0YXRpY19jYXN0PHNpemVfdD4oQnVmZmVy
TGF0ZW5jeSgpKTsKKyAgLy8gVGhlIHJlY2VudGx5IHNlZW4gbWluaW11bSBsYXRlbmN5IGluIGJs
b2Nrcy4gU2hvdWxkIGJlIGNsb3NlIHRvIDAuCisgIG1pbl9sYXRlbmN5X2Jsb2Nrc18gPSBzdGQ6
Om1pbihtaW5fbGF0ZW5jeV9ibG9ja3NfLCBsYXRlbmN5X2Jsb2Nrcyk7CisgIC8vIEFmdGVyIHBy
b2Nlc3NpbmcgYSBjb25maWd1cmFibGUgbnVtYmVyIG9mIGJsb2NrcyB0aGUgbWluaW11bSBsYXRl
bmN5IGlzCisgIC8vIGNoZWNrZWQuCisgIGlmICgrK2V4Y2Vzc19yZW5kZXJfZGV0ZWN0aW9uX2Nv
dW50ZXJfID49CisgICAgICBjb25maWdfLmJ1ZmZlcmluZy5leGNlc3NfcmVuZGVyX2RldGVjdGlv
bl9pbnRlcnZhbF9ibG9ja3MpIHsKKyAgICAvLyBJZiB0aGUgbWluaW11bSBsYXRlbmN5IGlzIG5v
dCBsb3dlciB0aGFuIHRoZSB0aHJlc2hvbGQgdGhlcmUgaGF2ZSBiZWVuCisgICAgLy8gbW9yZSBy
ZW5kZXIgdGhhbiBjYXB0dXJlIGZyYW1lcy4KKyAgICBleGNlc3NfcmVuZGVyX2RldGVjdGVkID0g
bWluX2xhdGVuY3lfYmxvY2tzXyA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZp
Z18uYnVmZmVyaW5nLm1heF9hbGxvd2VkX2V4Y2Vzc19yZW5kZXJfYmxvY2tzOworICAgIC8vIFJl
c2V0IHRoZSBjb3VudGVyIGFuZCBsZXQgdGhlIG1pbmltdW0gbGF0ZW5jeSBiZSB0aGUgY3VycmVu
dCBsYXRlbmN5LgorICAgIG1pbl9sYXRlbmN5X2Jsb2Nrc18gPSBsYXRlbmN5X2Jsb2NrczsKKyAg
ICBleGNlc3NfcmVuZGVyX2RldGVjdGlvbl9jb3VudGVyXyA9IDA7CisgIH0KKworICBkYXRhX2R1
bXBlcl8tPkR1bXBSYXcoImFlYzNfbGF0ZW5jeV9ibG9ja3MiLCBsYXRlbmN5X2Jsb2Nrcyk7Cisg
IGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19taW5fbGF0ZW5jeV9ibG9ja3MiLCBtaW5fbGF0
ZW5jeV9ibG9ja3NfKTsKKyAgZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJhZWMzX2V4Y2Vzc19yZW5k
ZXJfZGV0ZWN0ZWQiLCBleGNlc3NfcmVuZGVyX2RldGVjdGVkKTsKKyAgcmV0dXJuIGV4Y2Vzc19y
ZW5kZXJfZGV0ZWN0ZWQ7Cit9CisKKy8vIENvbXB1dGVzIHRoZSBsYXRlbmN5IGluIHRoZSBidWZm
ZXIgKHRoZSBudW1iZXIgb2YgdW5yZWFkIHN1Yi1ibG9ja3MpLgoraW50IFJlbmRlckRlbGF5QnVm
ZmVySW1wbDI6OkJ1ZmZlckxhdGVuY3koKSBjb25zdCB7CisgIGNvbnN0IERvd25zYW1wbGVkUmVu
ZGVyQnVmZmVyJiBsID0gbG93X3JhdGVfOworICBpbnQgbGF0ZW5jeV9zYW1wbGVzID0gKGwuYnVm
ZmVyLnNpemUoKSArIGwucmVhZCAtIGwud3JpdGUpICUgbC5idWZmZXIuc2l6ZSgpOworICBpbnQg
bGF0ZW5jeV9ibG9ja3MgPSBsYXRlbmN5X3NhbXBsZXMgLyBzdWJfYmxvY2tfc2l6ZV87CisgIHJl
dHVybiBsYXRlbmN5X2Jsb2NrczsKK30KKworLy8gSW5jcmVtZW50cyB0aGUgd3JpdGUgaW5kaWNl
cyBmb3IgdGhlIHJlbmRlciBidWZmZXJzLgordm9pZCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpJ
bmNyZW1lbnRXcml0ZUluZGljZXMoKSB7CisgIGxvd19yYXRlXy5VcGRhdGVXcml0ZUluZGV4KC1z
dWJfYmxvY2tfc2l6ZV8pOworICBibG9ja3NfLkluY1dyaXRlSW5kZXgoKTsKKyAgc3BlY3RyYV8u
RGVjV3JpdGVJbmRleCgpOworICBmZnRzXy5EZWNXcml0ZUluZGV4KCk7Cit9CisKKy8vIEluY3Jl
bWVudHMgdGhlIHJlYWQgaW5kaWNlcyBvZiB0aGUgbG93IHJhdGUgcmVuZGVyIGJ1ZmZlcnMuCit2
b2lkIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OkluY3JlbWVudExvd1JhdGVSZWFkSW5kaWNlcygp
IHsKKyAgbG93X3JhdGVfLlVwZGF0ZVJlYWRJbmRleCgtc3ViX2Jsb2NrX3NpemVfKTsKK30KKwor
Ly8gSW5jcmVtZW50cyB0aGUgcmVhZCBpbmRpY2VzIGZvciB0aGUgcmVuZGVyIGJ1ZmZlcnMuCit2
b2lkIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OkluY3JlbWVudFJlYWRJbmRpY2VzKCkgeworICBp
ZiAoYmxvY2tzXy5yZWFkICE9IGJsb2Nrc18ud3JpdGUpIHsKKyAgICBibG9ja3NfLkluY1JlYWRJ
bmRleCgpOworICAgIHNwZWN0cmFfLkRlY1JlYWRJbmRleCgpOworICAgIGZmdHNfLkRlY1JlYWRJ
bmRleCgpOworICB9Cit9CisKKy8vIENoZWNrcyBmb3IgYSByZW5kZXIgYnVmZmVyIG92ZXJydW4u
Citib29sIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OlJlbmRlck92ZXJydW4oKSB7CisgIHJldHVy
biBsb3dfcmF0ZV8ucmVhZCA9PSBsb3dfcmF0ZV8ud3JpdGUgfHwgYmxvY2tzXy5yZWFkID09IGJs
b2Nrc18ud3JpdGU7Cit9CisKKy8vIENoZWNrcyBmb3IgYSByZW5kZXIgYnVmZmVyIHVuZGVycnVu
LgorYm9vbCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpSZW5kZXJVbmRlcnJ1bigpIHsKKyAgcmV0
dXJuIGxvd19yYXRlXy5yZWFkID09IGxvd19yYXRlXy53cml0ZTsKK30KKworfSAgLy8gbmFtZXNw
YWNlCisKK1JlbmRlckRlbGF5QnVmZmVyKiBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMigKKyAg
ICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgIHNpemVfdCBudW1fYmFu
ZHMpIHsKKyAgcmV0dXJuIG5ldyBSZW5kZXJEZWxheUJ1ZmZlckltcGwyKGNvbmZpZywgbnVtX2Jh
bmRzKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jl
bmRlcl9kZWxheV9idWZmZXJfdW5pdHRlc3QuY2MKaW5kZXggZWU4OTU5NzI2MTlmNDA0MTZkOWNm
ZjJiYzI5MWEwODk4NzFmNDFjNi4uZDE1MzBjNjE0MmM0ZTkwYjNkMjE5YWRhN2RmM2RmZjgxOGJi
NWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlcl91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyX3VuaXR0ZXN0
LmNjCkBAIC0zOCw3ICszOCw3IEBAIFRFU1QoUmVuZGVyRGVsYXlCdWZmZXIsIEJ1ZmZlck92ZXJm
bG93KSB7CiAgIGZvciAoYXV0byByYXRlIDogezgwMDAsIDE2MDAwLCAzMjAwMCwgNDgwMDB9KSB7
CiAgICAgU0NPUEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQocmF0ZSkpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gZGVsYXlfYnVmZmVyKAotICAgICAgICBSZW5kZXJE
ZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CisgICAg
ICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJh
dGUpKSk7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiBibG9ja190b19pbnNl
cnQoCiAgICAgICAgIE51bUJhbmRzRm9yUmF0ZShyYXRlKSwgc3RkOjp2ZWN0b3I8ZmxvYXQ+KGtC
bG9ja1NpemUsIDAuZikpOwogICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgMTA7ICsraykgewpA
QCAtNjIsNyArNjIsNyBAQCBURVNUKFJlbmRlckRlbGF5QnVmZmVyLCBCdWZmZXJPdmVyZmxvdykg
ewogVEVTVChSZW5kZXJEZWxheUJ1ZmZlciwgQXZhaWxhYmxlQmxvY2spIHsKICAgY29uc3RleHBy
IHNpemVfdCBrTnVtQmFuZHMgPSAxOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZm
ZXI+IGRlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoRWNob0Nh
bmNlbGxlcjNDb25maWcoKSwga051bUJhbmRzKSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6
Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBrTnVtQmFuZHMpKTsKICAgc3RkOjp2ZWN0
b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiBpbnB1dF9ibG9jaygKICAgICAgIGtOdW1CYW5kcywgc3Rk
Ojp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUsIDEuZikpOwogICBFWFBFQ1RfRVEoUmVuZGVyRGVs
YXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50OjprTm9uZSwKQEAgLTc0LDcgKzc0LDcgQEAgVEVTVChS
ZW5kZXJEZWxheUJ1ZmZlciwgQXZhaWxhYmxlQmxvY2spIHsKIFRFU1QoUmVuZGVyRGVsYXlCdWZm
ZXIsIFNldERlbGF5KSB7CiAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZzsKICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiBkZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJE
ZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMSkpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6
OkNyZWF0ZTIoY29uZmlnLCAxKSk7CiAgIEFTU0VSVF9UUlVFKGRlbGF5X2J1ZmZlci0+RGVsYXko
KSk7CiAgIGRlbGF5X2J1ZmZlci0+UmVzZXQoKTsKICAgc2l6ZV90IGluaXRpYWxfaW50ZXJuYWxf
ZGVsYXkgPSBjb25maWcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3MgKwpAQCAtOTMs
NyArOTMsNyBAQCBURVNUKFJlbmRlckRlbGF5QnVmZmVyLCBTZXREZWxheSkgewogLy8gdGVzdHMg
b24gdGVzdCBib3RzIGhhcyBiZWVuIGZpeGVkLgogVEVTVChSZW5kZXJEZWxheUJ1ZmZlciwgRElT
QUJMRURfV3JvbmdEZWxheSkgewogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+
IGRlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoRWNob0NhbmNl
bGxlcjNDb25maWcoKSwgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoRWNo
b0NhbmNlbGxlcjNDb25maWcoKSwgMykpOwogICBFWFBFQ1RfREVBVEgoZGVsYXlfYnVmZmVyLT5T
ZXREZWxheSgyMSksICIiKTsKIH0KIApAQCAtMTAxLDcgKzEwMSw3IEBAIFRFU1QoUmVuZGVyRGVs
YXlCdWZmZXIsIERJU0FCTEVEX1dyb25nRGVsYXkpIHsKIFRFU1QoUmVuZGVyRGVsYXlCdWZmZXIs
IFdyb25nTnVtYmVyT2ZCYW5kcykgewogICBmb3IgKGF1dG8gcmF0ZSA6IHsxNjAwMCwgMzIwMDAs
IDQ4MDAwfSkgewogICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUpKTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IGRlbGF5X2J1ZmZlcihSZW5kZXJE
ZWxheUJ1ZmZlcjo6Q3JlYXRlKAorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZl
cj4gZGVsYXlfYnVmZmVyKFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKAogICAgICAgICBFY2hv
Q2FuY2VsbGVyM0NvbmZpZygpLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKICAgICBzdGQ6OnZl
Y3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IGJsb2NrX3RvX2luc2VydCgKICAgICAgICAgTnVtQmFu
ZHNGb3JSYXRlKHJhdGUgPCA0ODAwMCA/IHJhdGUgKyAxNjAwMCA6IDE2MDAwKSwKQEAgLTExNSw3
ICsxMTUsNyBAQCBURVNUKFJlbmRlckRlbGF5QnVmZmVyLCBXcm9uZ0Jsb2NrTGVuZ3RoKSB7CiAg
IGZvciAoYXV0byByYXRlIDogezgwMDAsIDE2MDAwLCAzMjAwMCwgNDgwMDB9KSB7CiAgICAgU0NP
UEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQocmF0ZSkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJEZWxheUJ1ZmZlcj4gZGVsYXlfYnVmZmVyKAotICAgICAgICBSZW5kZXJEZWxheUJ1ZmZl
cjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKKyAgICAgICAgUmVuZGVyRGVs
YXlCdWZmZXI6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgMykpOwogICAgIHN0ZDo6
dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gYmxvY2tfdG9faW5zZXJ0KAogICAgICAgICBOdW1C
YW5kc0ZvclJhdGUocmF0ZSksIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXplIC0gMSwgMC5m
KSk7CiAgICAgRVhQRUNUX0RFQVRIKGRlbGF5X2J1ZmZlci0+SW5zZXJ0KGJsb2NrX3RvX2luc2Vy
dCksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9s
bGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIuY2MKaW5kZXgg
ZjMzNmMzOTJiNGVlNzAzOTYyMzY2ODIyMWQ4NGM4MDVmYjZhOTU4OC4uYzQ2NjVlYWEyMjRkZWMx
ZWRkNDMyNWIyMjgyNjEwNGQ0MTU3YTk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVu
ZGVyX2RlbGF5X2NvbnRyb2xsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5
X2NvbnRyb2xsZXIuY2MKQEAgLTksMTAgKzksOSBAQAogICovCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIuaCIKIAorI2luY2x1
ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtZW1vcnk+Ci0j
aW5jbHVkZSA8bnVtZXJpYz4KLSNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgog
CiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKQEAgLTIwLDcg
KzE5LDkgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3Bh
dGhfZGVsYXlfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljcy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlh
bC5oIgpAQCAtNDQsNiArNDUsMTAgQEAgYm9vbCBVc2VPZmZzZXRCbG9ja3MoKSB7CiAgIHJldHVy
biBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM1VzZU9mZnNldEJsb2NrcyIpOwog
fQogCitib29sIFVzZUVhcmx5RGVsYXlEZXRlY3Rpb24oKSB7CisgIHJldHVybiAhZmllbGRfdHJp
YWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNFYXJseURlbGF5RGV0ZWN0aW9uS2lsbFN3aXRjaCIp
OworfQorCiBjb25zdGV4cHIgaW50IGtTa2V3SGlzdG9yeVNpemVMb2cyID0gODsKIAogY2xhc3Mg
UmVuZGVyRGVsYXlDb250cm9sbGVySW1wbCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJEZWxheUNvbnRy
b2xsZXIgewpAQCAtNTIsMTcgKzU3LDE5IEBAIGNsYXNzIFJlbmRlckRlbGF5Q29udHJvbGxlcklt
cGwgZmluYWwgOiBwdWJsaWMgUmVuZGVyRGVsYXlDb250cm9sbGVyIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbm9uX2NhdXNhbF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6KTsKICAgflJlbmRlckRlbGF5Q29udHJvbGxlcklt
cGwoKSBvdmVycmlkZTsKLSAgdm9pZCBSZXNldCgpIG92ZXJyaWRlOworICB2b2lkIFJlc2V0KGJv
b2wgcmVzZXRfZGVsYXlfY29uZmlkZW5jZSkgb3ZlcnJpZGU7CiAgIHZvaWQgTG9nUmVuZGVyQ2Fs
bCgpIG92ZXJyaWRlOwogICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBHZXREZWxheSgK
ICAgICAgIGNvbnN0IERvd25zYW1wbGVkUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAogICAg
ICAgc2l6ZV90IHJlbmRlcl9kZWxheV9idWZmZXJfZGVsYXksCiAgICAgICBjb25zdCBhYnNsOjpv
cHRpb25hbDxpbnQ+JiBlY2hvX3JlbW92ZXJfZGVsYXksCiAgICAgICBydGM6OkFycmF5Vmlldzxj
b25zdCBmbG9hdD4gY2FwdHVyZSkgb3ZlcnJpZGU7CisgIGJvb2wgSGFzQ2xvY2tkcmlmdCgpIGNv
bnN0IG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAgc3RhdGljIGludCBpbnN0YW5jZV9jb3VudF87
CiAgIHN0ZDo6dW5pcXVlX3B0cjxBcG1EYXRhRHVtcGVyPiBkYXRhX2R1bXBlcl87CisgIGNvbnN0
IGJvb2wgdXNlX2Vhcmx5X2RlbGF5X2RldGVjdGlvbl87CiAgIGNvbnN0IGludCBkZWxheV9oZWFk
cm9vbV9ibG9ja3NfOwogICBjb25zdCBpbnQgaHlzdGVyZXNpc19saW1pdF8xX2Jsb2Nrc187CiAg
IGNvbnN0IGludCBoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzXzsKQEAgLTgxLDYgKzg4LDcgQEAg
Y2xhc3MgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJEZWxh
eUNvbnRyb2xsZXIgewogICBzaXplX3QgY2FwdHVyZV9jYWxsX2NvdW50ZXJfID0gMDsKICAgaW50
IGRlbGF5X2NoYW5nZV9jb3VudGVyXyA9IDA7CiAgIHNpemVfdCBzb2Z0X3Jlc2V0X2NvdW50ZXJf
ID0gMDsKKyAgRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eSBsYXN0X2RlbGF5X2VzdGltYXRlX3F1YWxp
dHlfOwogICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKFJlbmRlckRlbGF5Q29u
dHJvbGxlckltcGwpOwogfTsKIApAQCAtMTI5LDYgKzEzNyw3IEBAIFJlbmRlckRlbGF5Q29udHJv
bGxlckltcGw6OlJlbmRlckRlbGF5Q29udHJvbGxlckltcGwoCiAgICAgaW50IHNhbXBsZV9yYXRl
X2h6KQogICAgIDogZGF0YV9kdW1wZXJfKAogICAgICAgICAgIG5ldyBBcG1EYXRhRHVtcGVyKHJ0
Yzo6QXRvbWljT3BzOjpJbmNyZW1lbnQoJmluc3RhbmNlX2NvdW50XykpKSwKKyAgICAgIHVzZV9l
YXJseV9kZWxheV9kZXRlY3Rpb25fKFVzZUVhcmx5RGVsYXlEZXRlY3Rpb24oKSksCiAgICAgICBk
ZWxheV9oZWFkcm9vbV9ibG9ja3NfKAogICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oY29uZmln
LmRlbGF5LmRlbGF5X2hlYWRyb29tX2Jsb2NrcykpLAogICAgICAgaHlzdGVyZXNpc19saW1pdF8x
X2Jsb2Nrc18oCkBAIC0xMzksNyArMTQ4LDggQEAgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDo6
UmVuZGVyRGVsYXlDb250cm9sbGVySW1wbCgKICAgICAgIHVzZV9vZmZzZXRfYmxvY2tzXyhVc2VP
ZmZzZXRCbG9ja3MoKSksCiAgICAgICBkZWxheV9lc3RpbWF0b3JfKGRhdGFfZHVtcGVyXy5nZXQo
KSwgY29uZmlnKSwKICAgICAgIGRlbGF5X2J1Zl8oa0Jsb2NrU2l6ZSAqIG5vbl9jYXVzYWxfb2Zm
c2V0LCAwLmYpLAotICAgICAgc2tld19lc3RpbWF0b3JfKGtTa2V3SGlzdG9yeVNpemVMb2cyKSB7
CisgICAgICBza2V3X2VzdGltYXRvcl8oa1NrZXdIaXN0b3J5U2l6ZUxvZzIpLAorICAgICAgbGFz
dF9kZWxheV9lc3RpbWF0ZV9xdWFsaXR5XyhEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprQ29hcnNl
KSB7CiAgIFJUQ19EQ0hFQ0soVmFsaWRGdWxsQmFuZFJhdGUoc2FtcGxlX3JhdGVfaHopKTsKICAg
ZGVsYXlfZXN0aW1hdG9yXy5Mb2dEZWxheUVzdGltYXRpb25Qcm9wZXJ0aWVzKHNhbXBsZV9yYXRl
X2h6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVs
YXlfYnVmXy5zaXplKCkpOwpAQCAtMTQ3LDE2ICsxNTcsMTkgQEAgUmVuZGVyRGVsYXlDb250cm9s
bGVySW1wbDo6UmVuZGVyRGVsYXlDb250cm9sbGVySW1wbCgKIAogUmVuZGVyRGVsYXlDb250cm9s
bGVySW1wbDo6flJlbmRlckRlbGF5Q29udHJvbGxlckltcGwoKSA9IGRlZmF1bHQ7CiAKLXZvaWQg
UmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDo6UmVzZXQoKSB7Cit2b2lkIFJlbmRlckRlbGF5Q29u
dHJvbGxlckltcGw6OlJlc2V0KGJvb2wgcmVzZXRfZGVsYXlfY29uZmlkZW5jZSkgewogICBkZWxh
eV8gPSBhYnNsOjpudWxsb3B0OwogICBkZWxheV9zYW1wbGVzXyA9IGFic2w6Om51bGxvcHQ7CiAg
IHNrZXdfID0gYWJzbDo6bnVsbG9wdDsKICAgcHJldmlvdXNfb2Zmc2V0X2Jsb2Nrc18gPSAwOwog
ICBzdGQ6OmZpbGwoZGVsYXlfYnVmXy5iZWdpbigpLCBkZWxheV9idWZfLmVuZCgpLCAwLmYpOwot
ICBkZWxheV9lc3RpbWF0b3JfLlJlc2V0KGZhbHNlKTsKKyAgZGVsYXlfZXN0aW1hdG9yXy5SZXNl
dChyZXNldF9kZWxheV9jb25maWRlbmNlKTsKICAgc2tld19lc3RpbWF0b3JfLlJlc2V0KCk7CiAg
IGRlbGF5X2NoYW5nZV9jb3VudGVyXyA9IDA7CiAgIHNvZnRfcmVzZXRfY291bnRlcl8gPSAwOwor
ICBpZiAocmVzZXRfZGVsYXlfY29uZmlkZW5jZSkgeworICAgIGxhc3RfZGVsYXlfZXN0aW1hdGVf
cXVhbGl0eV8gPSBEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprQ29hcnNlOworICB9CiB9CiAKIHZv
aWQgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDo6TG9nUmVuZGVyQ2FsbCgpIHsKQEAgLTE5NCw5
ICsyMDcsNiBAQCBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBSZW5kZXJEZWxheUNvbnRy
b2xsZXJJbXBsOjpHZXREZWxheSgKICAgYWJzbDo6b3B0aW9uYWw8aW50PiBza2V3ID0gc2tld19l
c3RpbWF0b3JfLkdldFNrZXdGcm9tQ2FwdHVyZSgpOwogCiAgIGlmIChkZWxheV9zYW1wbGVzKSB7
Ci0gICAgLy8gVE9ETyhwZWFoKTogUmVmYWN0b3IgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgdG8gYXNz
dW1lIGEga1JlZmluZWQgZXN0aW1hdGUKLSAgICAvLyBxdWFsaXR5LgotICAgIFJUQ19EQ0hFQ0so
RGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a1JlZmluZWQgPT0gZGVsYXlfc2FtcGxlcy0+cXVhbGl0
eSk7CiAgICAgaWYgKCFkZWxheV9zYW1wbGVzXyB8fCBkZWxheV9zYW1wbGVzLT5kZWxheSAhPSBk
ZWxheV9zYW1wbGVzXy0+ZGVsYXkpIHsKICAgICAgIGRlbGF5X2NoYW5nZV9jb3VudGVyXyA9IDA7
CiAgICAgfQpAQCAtMjM5LDcgKzI0OSw3IEBAIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+
IFJlbmRlckRlbGF5Q29udHJvbGxlckltcGw6OkdldERlbGF5KAogICAgIH0gZWxzZSBpZiAoc29m
dF9yZXNldF9jb3VudGVyXyA+IDEwICoga051bUJsb2Nrc1BlclNlY29uZCkgewogICAgICAgLy8g
U29mdCByZXNldCB0aGUgZGVsYXkgZXN0aW1hdG9yIGlmIHRoZXJlIGlzIGEgc2lnbmlmaWNhbnQg
b2Zmc2V0CiAgICAgICAvLyBkZXRlY3RlZC4KLSAgICAgIGRlbGF5X2VzdGltYXRvcl8uUmVzZXQo
dHJ1ZSk7CisgICAgICBkZWxheV9lc3RpbWF0b3JfLlJlc2V0KGZhbHNlKTsKICAgICAgIHNvZnRf
cmVzZXRfY291bnRlcl8gPSAwOwogICAgIH0KICAgfQpAQCAtMjY0LDE0ICsyNzQsMjAgQEAgYWJz
bDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDo6R2V0
RGVsYXkoCiAKICAgaWYgKGRlbGF5X3NhbXBsZXNfKSB7CiAgICAgLy8gQ29tcHV0ZSB0aGUgcmVu
ZGVyIGRlbGF5IGJ1ZmZlciBkZWxheS4KLSAgICBkZWxheV8gPSBDb21wdXRlQnVmZmVyRGVsYXko
Ci0gICAgICAgIGRlbGF5XywgZGVsYXlfaGVhZHJvb21fYmxvY2tzXywgaHlzdGVyZXNpc19saW1p
dF8xX2Jsb2Nrc18sCi0gICAgICAgIGh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3NfLCBvZmZzZXRf
YmxvY2tzLCAqZGVsYXlfc2FtcGxlc18pOworICAgIGNvbnN0IGJvb2wgdXNlX2h5c3RlcmVzaXMg
PQorICAgICAgICBsYXN0X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlfID09IERlbGF5RXN0aW1hdGU6
OlF1YWxpdHk6OmtSZWZpbmVkICYmCisgICAgICAgIGRlbGF5X3NhbXBsZXNfLT5xdWFsaXR5ID09
IERlbGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVkOworICAgIGRlbGF5XyA9IENvbXB1dGVC
dWZmZXJEZWxheShkZWxheV8sIGRlbGF5X2hlYWRyb29tX2Jsb2Nrc18sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVzZV9oeXN0ZXJlc2lzID8gaHlzdGVyZXNpc19saW1pdF8xX2Js
b2Nrc18gOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfaHlzdGVyZXNp
cyA/IGh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3NfIDogMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0X2Jsb2NrcywgKmRlbGF5X3NhbXBsZXNfKTsKKyAgICBsYXN0X2Rl
bGF5X2VzdGltYXRlX3F1YWxpdHlfID0gZGVsYXlfc2FtcGxlc18tPnF1YWxpdHk7CiAgIH0KIAog
ICBtZXRyaWNzXy5VcGRhdGUoZGVsYXlfc2FtcGxlc18gPyBhYnNsOjpvcHRpb25hbDxzaXplX3Q+
KGRlbGF5X3NhbXBsZXNfLT5kZWxheSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogYWJzbDo6bnVsbG9wdCwKLSAgICAgICAgICAgICAgICAgIGRlbGF5XyA/IGRlbGF5Xy0+ZGVs
YXkgOiAwLCBza2V3X3NoaWZ0KTsKKyAgICAgICAgICAgICAgICAgIGRlbGF5XyA/IGRlbGF5Xy0+
ZGVsYXkgOiAwLCBza2V3X3NoaWZ0LAorICAgICAgICAgICAgICAgICAgZGVsYXlfZXN0aW1hdG9y
Xy5DbG9ja2RyaWZ0KCkpOwogCiAgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19yZW5kZXJf
ZGVsYXlfY29udHJvbGxlcl9kZWxheSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheV9z
YW1wbGVzID8gZGVsYXlfc2FtcGxlcy0+ZGVsYXkgOiAwKTsKQEAgLTI4Nyw2ICszMDMsMTAgQEAg
YWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDo6
R2V0RGVsYXkoCiAgIHJldHVybiBkZWxheV87CiB9CiAKK2Jvb2wgUmVuZGVyRGVsYXlDb250cm9s
bGVySW1wbDo6SGFzQ2xvY2tkcmlmdCgpIGNvbnN0IHsKKyAgcmV0dXJuIGRlbGF5X2VzdGltYXRv
cl8uQ2xvY2tkcmlmdCgpICE9IENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtOb25lOworfQor
CiB9ICAvLyBuYW1lc3BhY2UKIAogUmVuZGVyRGVsYXlDb250cm9sbGVyKiBSZW5kZXJEZWxheUNv
bnRyb2xsZXI6OkNyZWF0ZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxh
eV9jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlci5o
CmluZGV4IGRkZDk1NDgyZmNjZTE4YjhiYmE5MmRhOWY0Njk4NTI1ZWExYzA4OTQuLmI0NmVkODky
NTI3Zjc5Mjg4MWVmNTQ4YzNiMjE5Njk4ZTJjZWI4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVy
X2RlbGF5X2NvbnRyb2xsZXIuaApAQCAtMjcsMTAgKzI3LDEzIEBAIGNsYXNzIFJlbmRlckRlbGF5
Q29udHJvbGxlciB7CiAgIHN0YXRpYyBSZW5kZXJEZWxheUNvbnRyb2xsZXIqIENyZWF0ZShjb25z
dCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG5vbl9jYXVzYWxfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6KTsKKyAgc3RhdGljIFJlbmRl
ckRlbGF5Q29udHJvbGxlciogQ3JlYXRlMihjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29u
ZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVf
cmF0ZV9oeik7CiAgIHZpcnR1YWwgflJlbmRlckRlbGF5Q29udHJvbGxlcigpID0gZGVmYXVsdDsK
IAotICAvLyBSZXNldHMgdGhlIGRlbGF5IGNvbnRyb2xsZXIuCi0gIHZpcnR1YWwgdm9pZCBSZXNl
dCgpID0gMDsKKyAgLy8gUmVzZXRzIHRoZSBkZWxheSBjb250cm9sbGVyLiBJZiB0aGUgZGVsYXkg
Y29uZmlkZW5jZSBpcyByZXNldCwgdGhlIHJlc2V0CisgIC8vIGJlaGF2aW9yIGlzIGFzIGlmIHRo
ZSBjYWxsIGlzIHJlc3RhcnRlZC4KKyAgdmlydHVhbCB2b2lkIFJlc2V0KGJvb2wgcmVzZXRfZGVs
YXlfY29uZmlkZW5jZSkgPSAwOwogCiAgIC8vIExvZ3MgYSByZW5kZXIgY2FsbC4KICAgdmlydHVh
bCB2b2lkIExvZ1JlbmRlckNhbGwoKSA9IDA7CkBAIC00MSw2ICs0NCw5IEBAIGNsYXNzIFJlbmRl
ckRlbGF5Q29udHJvbGxlciB7CiAgICAgICBzaXplX3QgcmVuZGVyX2RlbGF5X2J1ZmZlcl9kZWxh
eSwKICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIGVjaG9fcmVtb3Zlcl9kZWxheSwK
ICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjYXB0dXJlKSA9IDA7CisKKyAgLy8g
UmV0dXJucyB0cnVlIGlmIGNsb2NrZHJpZnQgaGFzIGJlZW4gZGV0ZWN0ZWQuCisgIHZpcnR1YWwg
Ym9vbCBIYXNDbG9ja2RyaWZ0KCkgY29uc3QgPSAwOwogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIyLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAwZGFmOGYyYWY3MWMyZGRhYmIzNzRhY2FkZmVkYjc5Njk5OGU0MjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcjIuY2MKQEAgLTAs
MCArMSwyMTggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisg
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworI2luY2x1ZGUgPHN0ZGRlZi5oPgor
I2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRl
ICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZGVsYXlfZXN0aW1hdGUuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJfYnVmZmVyLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGlt
YXRvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9k
ZWxheV9jb250cm9sbGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2F0b21pY29wcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBl
cnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworbmFtZXNw
YWNlIHsKKworYm9vbCBVc2VFYXJseURlbGF5RGV0ZWN0aW9uKCkgeworICByZXR1cm4gIWZpZWxk
X3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzRWFybHlEZWxheURldGVjdGlvbktpbGxTd2l0
Y2giKTsKK30KKworY2xhc3MgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDIgZmluYWwgOiBwdWJs
aWMgUmVuZGVyRGVsYXlDb250cm9sbGVyIHsKKyBwdWJsaWM6CisgIFJlbmRlckRlbGF5Q29udHJv
bGxlckltcGwyKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeik7CisgIH5SZW5kZXJEZWxheUNv
bnRyb2xsZXJJbXBsMigpIG92ZXJyaWRlOworICB2b2lkIFJlc2V0KGJvb2wgcmVzZXRfZGVsYXlf
Y29uZmlkZW5jZSkgb3ZlcnJpZGU7CisgIHZvaWQgTG9nUmVuZGVyQ2FsbCgpIG92ZXJyaWRlOwor
ICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBHZXREZWxheSgKKyAgICAgIGNvbnN0IERv
d25zYW1wbGVkUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgICAgc2l6ZV90IHJlbmRl
cl9kZWxheV9idWZmZXJfZGVsYXksCisgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBl
Y2hvX3JlbW92ZXJfZGVsYXksCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY2Fw
dHVyZSkgb3ZlcnJpZGU7CisgIGJvb2wgSGFzQ2xvY2tkcmlmdCgpIGNvbnN0IG92ZXJyaWRlOwor
CisgcHJpdmF0ZToKKyAgc3RhdGljIGludCBpbnN0YW5jZV9jb3VudF87CisgIHN0ZDo6dW5pcXVl
X3B0cjxBcG1EYXRhRHVtcGVyPiBkYXRhX2R1bXBlcl87CisgIGNvbnN0IGJvb2wgdXNlX2Vhcmx5
X2RlbGF5X2RldGVjdGlvbl87CisgIGNvbnN0IGludCBkZWxheV9oZWFkcm9vbV9ibG9ja3NfOwor
ICBjb25zdCBpbnQgaHlzdGVyZXNpc19saW1pdF8xX2Jsb2Nrc187CisgIGNvbnN0IGludCBoeXN0
ZXJlc2lzX2xpbWl0XzJfYmxvY2tzXzsKKyAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4g
ZGVsYXlfOworICBFY2hvUGF0aERlbGF5RXN0aW1hdG9yIGRlbGF5X2VzdGltYXRvcl87CisgIFJl
bmRlckRlbGF5Q29udHJvbGxlck1ldHJpY3MgbWV0cmljc187CisgIGFic2w6Om9wdGlvbmFsPERl
bGF5RXN0aW1hdGU+IGRlbGF5X3NhbXBsZXNfOworICBzaXplX3QgY2FwdHVyZV9jYWxsX2NvdW50
ZXJfID0gMDsKKyAgaW50IGRlbGF5X2NoYW5nZV9jb3VudGVyXyA9IDA7CisgIERlbGF5RXN0aW1h
dGU6OlF1YWxpdHkgbGFzdF9kZWxheV9lc3RpbWF0ZV9xdWFsaXR5XzsKKyAgUlRDX0RJU0FMTE9X
X0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsMik7Cit9Owor
CitEZWxheUVzdGltYXRlIENvbXB1dGVCdWZmZXJEZWxheSgKKyAgICBjb25zdCBhYnNsOjpvcHRp
b25hbDxEZWxheUVzdGltYXRlPiYgY3VycmVudF9kZWxheSwKKyAgICBpbnQgZGVsYXlfaGVhZHJv
b21fYmxvY2tzLAorICAgIGludCBoeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzLAorICAgIGludCBo
eXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzLAorICAgIERlbGF5RXN0aW1hdGUgZXN0aW1hdGVkX2Rl
bGF5KSB7CisgIC8vIFRoZSBiZWxvdyBkaXZpc2lvbiBpcyBub3QgZXhhY3QgYW5kIHRoZSB0cnVu
Y2F0aW9uIGlzIGludGVuZGVkLgorICBjb25zdCBpbnQgZWNob19wYXRoX2RlbGF5X2Jsb2NrcyA9
IGVzdGltYXRlZF9kZWxheS5kZWxheSA+PiBrQmxvY2tTaXplTG9nMjsKKworICAvLyBDb21wdXRl
IHRoZSBidWZmZXIgZGVsYXkgaW5jcmVhc2UgcmVxdWlyZWQgdG8gYWNoaWV2ZSB0aGUgZGVzaXJl
ZCBsYXRlbmN5LgorICBzaXplX3QgbmV3X2RlbGF5X2Jsb2NrcyA9CisgICAgICBzdGQ6Om1heChl
Y2hvX3BhdGhfZGVsYXlfYmxvY2tzIC0gZGVsYXlfaGVhZHJvb21fYmxvY2tzLCAwKTsKKworICAv
LyBBZGQgaHlzdGVyZXNpcy4KKyAgaWYgKGN1cnJlbnRfZGVsYXkpIHsKKyAgICBzaXplX3QgY3Vy
cmVudF9kZWxheV9ibG9ja3MgPSBjdXJyZW50X2RlbGF5LT5kZWxheTsKKyAgICBpZiAobmV3X2Rl
bGF5X2Jsb2NrcyA+IGN1cnJlbnRfZGVsYXlfYmxvY2tzKSB7CisgICAgICBpZiAobmV3X2RlbGF5
X2Jsb2NrcyA8PQorICAgICAgICAgIGN1cnJlbnRfZGVsYXlfYmxvY2tzICsgaHlzdGVyZXNpc19s
aW1pdF8xX2Jsb2NrcykgeworICAgICAgICBuZXdfZGVsYXlfYmxvY2tzID0gY3VycmVudF9kZWxh
eV9ibG9ja3M7CisgICAgICB9CisgICAgfSBlbHNlIGlmIChuZXdfZGVsYXlfYmxvY2tzIDwgY3Vy
cmVudF9kZWxheV9ibG9ja3MpIHsKKyAgICAgIHNpemVfdCBoeXN0ZXJlc2lzX2xpbWl0ID0gc3Rk
OjptYXgoCisgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihjdXJyZW50X2RlbGF5X2Jsb2Nrcykg
LSBoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzLAorICAgICAgICAgIDApOworICAgICAgaWYgKG5l
d19kZWxheV9ibG9ja3MgPj0gaHlzdGVyZXNpc19saW1pdCkgeworICAgICAgICBuZXdfZGVsYXlf
YmxvY2tzID0gY3VycmVudF9kZWxheV9ibG9ja3M7CisgICAgICB9CisgICAgfQorICB9CisKKyAg
RGVsYXlFc3RpbWF0ZSBuZXdfZGVsYXkgPSBlc3RpbWF0ZWRfZGVsYXk7CisgIG5ld19kZWxheS5k
ZWxheSA9IG5ld19kZWxheV9ibG9ja3M7CisgIHJldHVybiBuZXdfZGVsYXk7Cit9CisKK2ludCBS
ZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsMjo6aW5zdGFuY2VfY291bnRfID0gMDsKKworUmVuZGVy
RGVsYXlDb250cm9sbGVySW1wbDI6OlJlbmRlckRlbGF5Q29udHJvbGxlckltcGwyKAorICAgIGNv
bnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisgICAgaW50IHNhbXBsZV9yYXRlX2h6
KQorICAgIDogZGF0YV9kdW1wZXJfKAorICAgICAgICAgIG5ldyBBcG1EYXRhRHVtcGVyKHJ0Yzo6
QXRvbWljT3BzOjpJbmNyZW1lbnQoJmluc3RhbmNlX2NvdW50XykpKSwKKyAgICAgIHVzZV9lYXJs
eV9kZWxheV9kZXRlY3Rpb25fKFVzZUVhcmx5RGVsYXlEZXRlY3Rpb24oKSksCisgICAgICBkZWxh
eV9oZWFkcm9vbV9ibG9ja3NfKAorICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oY29uZmlnLmRl
bGF5LmRlbGF5X2hlYWRyb29tX2Jsb2NrcykpLAorICAgICAgaHlzdGVyZXNpc19saW1pdF8xX2Js
b2Nrc18oCisgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihjb25maWcuZGVsYXkuaHlzdGVyZXNp
c19saW1pdF8xX2Jsb2NrcykpLAorICAgICAgaHlzdGVyZXNpc19saW1pdF8yX2Jsb2Nrc18oCisg
ICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihjb25maWcuZGVsYXkuaHlzdGVyZXNpc19saW1pdF8y
X2Jsb2NrcykpLAorICAgICAgZGVsYXlfZXN0aW1hdG9yXyhkYXRhX2R1bXBlcl8uZ2V0KCksIGNv
bmZpZyksCisgICAgICBsYXN0X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlfKERlbGF5RXN0aW1hdGU6
OlF1YWxpdHk6OmtDb2Fyc2UpIHsKKyAgUlRDX0RDSEVDSyhWYWxpZEZ1bGxCYW5kUmF0ZShzYW1w
bGVfcmF0ZV9oeikpOworICBkZWxheV9lc3RpbWF0b3JfLkxvZ0RlbGF5RXN0aW1hdGlvblByb3Bl
cnRpZXMoc2FtcGxlX3JhdGVfaHosIDApOworfQorCitSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBs
Mjo6flJlbmRlckRlbGF5Q29udHJvbGxlckltcGwyKCkgPSBkZWZhdWx0OworCit2b2lkIFJlbmRl
ckRlbGF5Q29udHJvbGxlckltcGwyOjpSZXNldChib29sIHJlc2V0X2RlbGF5X2NvbmZpZGVuY2Up
IHsKKyAgZGVsYXlfID0gYWJzbDo6bnVsbG9wdDsKKyAgZGVsYXlfc2FtcGxlc18gPSBhYnNsOjpu
dWxsb3B0OworICBkZWxheV9lc3RpbWF0b3JfLlJlc2V0KHJlc2V0X2RlbGF5X2NvbmZpZGVuY2Up
OworICBkZWxheV9jaGFuZ2VfY291bnRlcl8gPSAwOworICBpZiAocmVzZXRfZGVsYXlfY29uZmlk
ZW5jZSkgeworICAgIGxhc3RfZGVsYXlfZXN0aW1hdGVfcXVhbGl0eV8gPSBEZWxheUVzdGltYXRl
OjpRdWFsaXR5OjprQ29hcnNlOworICB9Cit9CisKK3ZvaWQgUmVuZGVyRGVsYXlDb250cm9sbGVy
SW1wbDI6OkxvZ1JlbmRlckNhbGwoKSB7fQorCithYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRl
PiBSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsMjo6R2V0RGVsYXkoCisgICAgY29uc3QgRG93bnNh
bXBsZWRSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCisgICAgc2l6ZV90IHJlbmRlcl9kZWxh
eV9idWZmZXJfZGVsYXksCisgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiYgZWNob19yZW1v
dmVyX2RlbGF5LAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjYXB0dXJlKSB7Cisg
IFJUQ19EQ0hFQ0tfRVEoa0Jsb2NrU2l6ZSwgY2FwdHVyZS5zaXplKCkpOworICArK2NhcHR1cmVf
Y2FsbF9jb3VudGVyXzsKKworICBhdXRvIGRlbGF5X3NhbXBsZXMgPSBkZWxheV9lc3RpbWF0b3Jf
LkVzdGltYXRlRGVsYXkocmVuZGVyX2J1ZmZlciwgY2FwdHVyZSk7CisKKyAgLy8gT3ZlcnJ1bGUg
dGhlIGRlbGF5IGVzdGltYXRvciBkZWxheSBpZiB0aGUgZWNobyByZW1vdmVyIHJlcG9ydHMgYSBk
ZWxheS4KKyAgaWYgKGVjaG9fcmVtb3Zlcl9kZWxheSkgeworICAgIGludCB0b3RhbF9lY2hvX3Jl
bW92ZXJfZGVsYXlfc2FtcGxlcyA9CisgICAgICAgIChyZW5kZXJfZGVsYXlfYnVmZmVyX2RlbGF5
ICsgKmVjaG9fcmVtb3Zlcl9kZWxheSkgKiBrQmxvY2tTaXplOworICAgIGRlbGF5X3NhbXBsZXMg
PSBEZWxheUVzdGltYXRlKERlbGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2VjaG9fcmVtb3Zlcl9kZWxheV9zYW1w
bGVzKTsKKyAgfQorCisgIGlmIChkZWxheV9zYW1wbGVzKSB7CisgICAgaWYgKCFkZWxheV9zYW1w
bGVzXyB8fCBkZWxheV9zYW1wbGVzLT5kZWxheSAhPSBkZWxheV9zYW1wbGVzXy0+ZGVsYXkpIHsK
KyAgICAgIGRlbGF5X2NoYW5nZV9jb3VudGVyXyA9IDA7CisgICAgfQorICAgIGlmIChkZWxheV9z
YW1wbGVzXykgeworICAgICAgZGVsYXlfc2FtcGxlc18tPmJsb2Nrc19zaW5jZV9sYXN0X2NoYW5n
ZSA9CisgICAgICAgICAgZGVsYXlfc2FtcGxlc18tPmRlbGF5ID09IGRlbGF5X3NhbXBsZXMtPmRl
bGF5CisgICAgICAgICAgICAgID8gZGVsYXlfc2FtcGxlc18tPmJsb2Nrc19zaW5jZV9sYXN0X2No
YW5nZSArIDEKKyAgICAgICAgICAgICAgOiAwOworICAgICAgZGVsYXlfc2FtcGxlc18tPmJsb2Nr
c19zaW5jZV9sYXN0X3VwZGF0ZSA9IDA7CisgICAgICBkZWxheV9zYW1wbGVzXy0+ZGVsYXkgPSBk
ZWxheV9zYW1wbGVzLT5kZWxheTsKKyAgICAgIGRlbGF5X3NhbXBsZXNfLT5xdWFsaXR5ID0gZGVs
YXlfc2FtcGxlcy0+cXVhbGl0eTsKKyAgICB9IGVsc2UgeworICAgICAgZGVsYXlfc2FtcGxlc18g
PSBkZWxheV9zYW1wbGVzOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBpZiAoZGVsYXlfc2FtcGxl
c18pIHsKKyAgICAgICsrZGVsYXlfc2FtcGxlc18tPmJsb2Nrc19zaW5jZV9sYXN0X2NoYW5nZTsK
KyAgICAgICsrZGVsYXlfc2FtcGxlc18tPmJsb2Nrc19zaW5jZV9sYXN0X3VwZGF0ZTsKKyAgICB9
CisgIH0KKworICBpZiAoZGVsYXlfY2hhbmdlX2NvdW50ZXJfIDwgMiAqIGtOdW1CbG9ja3NQZXJT
ZWNvbmQpIHsKKyAgICArK2RlbGF5X2NoYW5nZV9jb3VudGVyXzsKKyAgfQorCisgIGlmIChkZWxh
eV9zYW1wbGVzXykgeworICAgIC8vIENvbXB1dGUgdGhlIHJlbmRlciBkZWxheSBidWZmZXIgZGVs
YXkuCisgICAgY29uc3QgYm9vbCB1c2VfaHlzdGVyZXNpcyA9CisgICAgICAgIGxhc3RfZGVsYXlf
ZXN0aW1hdGVfcXVhbGl0eV8gPT0gRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a1JlZmluZWQgJiYK
KyAgICAgICAgZGVsYXlfc2FtcGxlc18tPnF1YWxpdHkgPT0gRGVsYXlFc3RpbWF0ZTo6UXVhbGl0
eTo6a1JlZmluZWQ7CisgICAgZGVsYXlfID0gQ29tcHV0ZUJ1ZmZlckRlbGF5KGRlbGF5XywgZGVs
YXlfaGVhZHJvb21fYmxvY2tzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNl
X2h5c3RlcmVzaXMgPyBoeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzXyA6IDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVzZV9oeXN0ZXJlc2lzID8gaHlzdGVyZXNpc19saW1pdF8y
X2Jsb2Nrc18gOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVsYXlfc2Ft
cGxlc18pOworICAgIGxhc3RfZGVsYXlfZXN0aW1hdGVfcXVhbGl0eV8gPSBkZWxheV9zYW1wbGVz
Xy0+cXVhbGl0eTsKKyAgfQorCisgIG1ldHJpY3NfLlVwZGF0ZShkZWxheV9zYW1wbGVzXyA/IGFi
c2w6Om9wdGlvbmFsPHNpemVfdD4oZGVsYXlfc2FtcGxlc18tPmRlbGF5KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBhYnNsOjpudWxsb3B0LAorICAgICAgICAgICAgICAgICAg
ZGVsYXlfID8gZGVsYXlfLT5kZWxheSA6IDAsIDAsIGRlbGF5X2VzdGltYXRvcl8uQ2xvY2tkcmlm
dCgpKTsKKworICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfcmVuZGVyX2RlbGF5X2NvbnRy
b2xsZXJfZGVsYXkiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXlfc2FtcGxlcyA/IGRl
bGF5X3NhbXBsZXMtPmRlbGF5IDogMCk7CisgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19y
ZW5kZXJfZGVsYXlfY29udHJvbGxlcl9idWZmZXJfZGVsYXkiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZGVsYXlfID8gZGVsYXlfLT5kZWxheSA6IDApOworCisgIHJldHVybiBkZWxheV87Cit9
CisKK2Jvb2wgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDI6Okhhc0Nsb2NrZHJpZnQoKSBjb25z
dCB7CisgIHJldHVybiBkZWxheV9lc3RpbWF0b3JfLkNsb2NrZHJpZnQoKSAhPSBDbG9ja2RyaWZ0
RGV0ZWN0b3I6OkxldmVsOjprTm9uZTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK1JlbmRlckRl
bGF5Q29udHJvbGxlciogUmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUyKAorICAgIGNvbnN0
IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisgICAgaW50IHNhbXBsZV9yYXRlX2h6KSB7
CisgIHJldHVybiBuZXcgUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDIoY29uZmlnLCBzYW1wbGVf
cmF0ZV9oeik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3MuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzLmNjCmluZGV4IDA5ZGIzMzk2ODM0
MGUxNzU2NzA1Mzc2NDMzN2NiOWZlMjRjNWQ2NDYuLjU4MmUwMzM0ODI5N2VjMzk2NTZmNzY5NTNh
MmI0ZjM1ZTZhZTgwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9j
b250cm9sbGVyX21ldHJpY3MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2Nv
bnRyb2xsZXJfbWV0cmljcy5jYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9u
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTQ1LDcgKzQ2
LDggQEAgUmVuZGVyRGVsYXlDb250cm9sbGVyTWV0cmljczo6UmVuZGVyRGVsYXlDb250cm9sbGVy
TWV0cmljcygpID0gZGVmYXVsdDsKIHZvaWQgUmVuZGVyRGVsYXlDb250cm9sbGVyTWV0cmljczo6
VXBkYXRlKAogICAgIGFic2w6Om9wdGlvbmFsPHNpemVfdD4gZGVsYXlfc2FtcGxlcywKICAgICBz
aXplX3QgYnVmZmVyX2RlbGF5X2Jsb2NrcywKLSAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IHNrZXdf
c2hpZnRfYmxvY2tzKSB7CisgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBza2V3X3NoaWZ0X2Jsb2Nr
cywKKyAgICBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsIGNsb2NrZHJpZnQpIHsKICAgKytjYWxs
X2NvdW50ZXJfOwogCiAgIGlmICghaW5pdGlhbF91cGRhdGUpIHsKQEAgLTExNCw2ICsxMTYsMTAg
QEAgdm9pZCBSZW5kZXJEZWxheUNvbnRyb2xsZXJNZXRyaWNzOjpVcGRhdGUoCiAgICAgICAgIHN0
YXRpY19jYXN0PGludD4oZGVsYXlfY2hhbmdlcyksCiAgICAgICAgIHN0YXRpY19jYXN0PGludD4o
RGVsYXlDaGFuZ2VzQ2F0ZWdvcnk6OmtOdW1DYXRlZ29yaWVzKSk7CiAKKyAgICBSVENfSElTVE9H
UkFNX0VOVU1FUkFUSU9OKAorICAgICAgICAiV2ViUlRDLkF1ZGlvLkVjaG9DYW5jZWxsZXIuQ2xv
Y2tkcmlmdCIsIHN0YXRpY19jYXN0PGludD4oY2xvY2tkcmlmdCksCisgICAgICAgIHN0YXRpY19j
YXN0PGludD4oQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6a051bUNhdGVnb3JpZXMpKTsKKwog
ICAgIG1ldHJpY3NfcmVwb3J0ZWRfID0gdHJ1ZTsKICAgICBjYWxsX2NvdW50ZXJfID0gMDsKICAg
ICBSZXNldE1ldHJpY3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxh
eV9jb250cm9sbGVyX21ldHJpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250
cm9sbGVyX21ldHJpY3MuaAppbmRleCAxY2ZlODk5YjQ4ODVjYjMwNGIyN2FmZjU5NzFlY2E5NjI3
MDU3ZTJmLi4yMmNjMjAyZTczYTUyZDMxNmIxMjhlYTQ4MmJkNmRkZGMzZmIwMDY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljcy5oCkBAIC0x
MSw3ICsxMSwxMCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRU5E
RVJfREVMQVlfQ09OVFJPTExFUl9NRVRSSUNTX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJP
Q0VTU0lOR19BRUMzX1JFTkRFUl9ERUxBWV9DT05UUk9MTEVSX01FVFJJQ1NfSF8KIAorI2luY2x1
ZGUgPHN0ZGRlZi5oPgorCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3IuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewpAQCAtMjQsNyArMjcsOCBAQCBjbGFzcyBSZW5kZXJEZWxheUNvbnRyb2xsZXJNZXRyaWNz
IHsKICAgLy8gVXBkYXRlcyB0aGUgbWV0cmljIHdpdGggbmV3IGRhdGEuCiAgIHZvaWQgVXBkYXRl
KGFic2w6Om9wdGlvbmFsPHNpemVfdD4gZGVsYXlfc2FtcGxlcywKICAgICAgICAgICAgICAgc2l6
ZV90IGJ1ZmZlcl9kZWxheV9ibG9ja3MsCi0gICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGlu
dD4gc2tld19zaGlmdF9ibG9ja3MpOworICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+
IHNrZXdfc2hpZnRfYmxvY2tzLAorICAgICAgICAgICAgICBDbG9ja2RyaWZ0RGV0ZWN0b3I6Okxl
dmVsIGNsb2NrZHJpZnQpOwogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWV0cmljcyBoYXZl
IGp1c3QgYmVlbiByZXBvcnRlZCwgb3RoZXJ3aXNlIGZhbHNlLgogICBib29sIE1ldHJpY3NSZXBv
cnRlZCgpIHsgcmV0dXJuIG1ldHJpY3NfcmVwb3J0ZWRfOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljc191bml0dGVzdC5jYwpp
bmRleCBlODY3ZGU0ZGY0MjgyODBkZGM2YzFkNGZlZTQ5MDQwYjEzMDAxZDA4Li4yMTZiMGUyMjBk
NGIyNjU3NzdiZDM0YmNhOTIwZmQ5NTZiY2JiM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3NfdW5pdHRlc3QuY2MKQEAg
LTIyLDEwICsyMiwxMiBAQCBURVNUKFJlbmRlckRlbGF5Q29udHJvbGxlck1ldHJpY3MsIE5vcm1h
bFVzYWdlKSB7CiAKICAgZm9yIChpbnQgaiA9IDA7IGogPCAzOyArK2opIHsKICAgICBmb3IgKGlu
dCBrID0gMDsgayA8IGtNZXRyaWNzUmVwb3J0aW5nSW50ZXJ2YWxCbG9ja3MgLSAxOyArK2spIHsK
LSAgICAgIG1ldHJpY3MuVXBkYXRlKGFic2w6Om51bGxvcHQsIDAsIGFic2w6Om51bGxvcHQpOwor
ICAgICAgbWV0cmljcy5VcGRhdGUoYWJzbDo6bnVsbG9wdCwgMCwgYWJzbDo6bnVsbG9wdCwKKyAg
ICAgICAgICAgICAgICAgICAgIENsb2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtOb25lKTsKICAg
ICAgIEVYUEVDVF9GQUxTRShtZXRyaWNzLk1ldHJpY3NSZXBvcnRlZCgpKTsKICAgICB9Ci0gICAg
bWV0cmljcy5VcGRhdGUoYWJzbDo6bnVsbG9wdCwgMCwgYWJzbDo6bnVsbG9wdCk7CisgICAgbWV0
cmljcy5VcGRhdGUoYWJzbDo6bnVsbG9wdCwgMCwgYWJzbDo6bnVsbG9wdCwKKyAgICAgICAgICAg
ICAgICAgICBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjprTm9uZSk7CiAgICAgRVhQRUNUX1RS
VUUobWV0cmljcy5NZXRyaWNzUmVwb3J0ZWQoKSk7CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKaW5kZXggOTNjNjQ5OThl
OWJkNDA4MzM1ODRkOTM3ZjI2ZGIxMTJlZmJhZTUwNy4uZTlmMDJkMzI0YzEzZDM0ZWQ0ZGMyYTQ0
NGUwOGFlMzNiYzcwZDY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5
X2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5
X2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKQEAgLTU3LDEwICs1Nyw5IEBAIFRFU1QoUmVuZGVyRGVs
YXlDb250cm9sbGVyLCBOb1JlbmRlclNpZ25hbCkgewogICAgICAgZm9yIChhdXRvIHJhdGUgOiB7
ODAwMCwgMTYwMDAsIDMyMDAwLCA0ODAwMH0pIHsKICAgICAgICAgU0NPUEVEX1RSQUNFKFByb2R1
Y2VEZWJ1Z1RleHQocmF0ZSkpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlC
dWZmZXI+IGRlbGF5X2J1ZmZlcigKLSAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVh
dGUoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAgICAgICAgICAgIFJlbmRlckRl
bGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5X2NvbnRyb2xs
ZXIoCi0gICAgICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZSgKLSAgICAgICAg
ICAgICAgICBjb25maWcsIFJlbmRlckRlbGF5QnVmZmVyOjpEZWxheUVzdGltYXRvck9mZnNldChj
b25maWcpLCByYXRlKSk7CisgICAgICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0
ZTIoY29uZmlnLCByYXRlKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgMTAwOyAr
K2spIHsKICAgICAgICAgICBhdXRvIGRlbGF5ID0gZGVsYXlfY29udHJvbGxlci0+R2V0RGVsYXko
CiAgICAgICAgICAgICAgIGRlbGF5X2J1ZmZlci0+R2V0RG93bnNhbXBsZWRSZW5kZXJCdWZmZXIo
KSwgZGVsYXlfYnVmZmVyLT5EZWxheSgpLApAQCAtODcsMTEgKzg2LDkgQEAgVEVTVChSZW5kZXJE
ZWxheUNvbnRyb2xsZXIsIEJhc2ljQXBpQ2FsbHMpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8c3Rk
Ojp2ZWN0b3I8ZmxvYXQ+PiByZW5kZXJfYmxvY2soCiAgICAgICAgICAgICBOdW1CYW5kc0ZvclJh
dGUocmF0ZSksIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXplLCAwLmYpKTsKICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAot
ICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIE51bUJhbmRzRm9y
UmF0ZShyYXRlKSkpOworICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29u
ZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlcigKLSAgICAgICAgICAgIFJlbmRl
ckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlKAotICAgICAgICAgICAgICAgIEVjaG9DYW5jZWxsZXIz
Q29uZmlnKCksCi0gICAgICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkRlbGF5RXN0aW1h
dG9yT2Zmc2V0KGNvbmZpZyksIHJhdGUpKTsKKyAgICAgICAgICAgIFJlbmRlckRlbGF5Q29udHJv
bGxlcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCByYXRlKSk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGsgPSAwOyBrIDwgMTA7ICsraykgewogICAgICAgICAgIHJlbmRlcl9kZWxheV9i
dWZmZXItPkluc2VydChyZW5kZXJfYmxvY2spOwogICAgICAgICAgIHJlbmRlcl9kZWxheV9idWZm
ZXItPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpOwpAQCAtMTI4LDExICsxMjUsOSBAQCBURVNU
KFJlbmRlckRlbGF5Q29udHJvbGxlciwgQWxpZ25tZW50KSB7CiAgICAgICAgICAgYWJzbDo6b3B0
aW9uYWw8RGVsYXlFc3RpbWF0ZT4gZGVsYXlfYmxvY2tzOwogICAgICAgICAgIFNDT1BFRF9UUkFD
RShQcm9kdWNlRGVidWdUZXh0KHJhdGUsIGRlbGF5X3NhbXBsZXMpKTsKICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAg
ICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCBOdW1CYW5kc0ZvclJh
dGUocmF0ZSkpKTsKKyAgICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29u
ZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyRGVsYXlDb250cm9sbGVyPiBkZWxheV9jb250cm9sbGVyKAotICAgICAgICAgICAgICBS
ZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgIGNvbmZpZywg
UmVuZGVyRGVsYXlCdWZmZXI6OkRlbGF5RXN0aW1hdG9yT2Zmc2V0KGNvbmZpZyksCi0gICAgICAg
ICAgICAgICAgICByYXRlKSk7CisgICAgICAgICAgICAgIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6
Q3JlYXRlMihjb25maWcsIHJhdGUpKTsKICAgICAgICAgICBEZWxheUJ1ZmZlcjxmbG9hdD4gc2ln
bmFsX2RlbGF5X2J1ZmZlcihkZWxheV9zYW1wbGVzKTsKICAgICAgICAgICBmb3IgKHNpemVfdCBr
ID0gMDsgayA8ICg0MDAgKyBkZWxheV9zYW1wbGVzIC8ga0Jsb2NrU2l6ZSk7ICsraykgewogICAg
ICAgICAgICAgUmFuZG9taXplU2FtcGxlVmVjdG9yKCZyYW5kb21fZ2VuZXJhdG9yLCByZW5kZXJf
YmxvY2tbMF0pOwpAQCAtMTc5LDExICsxNzQsOSBAQCBURVNUKFJlbmRlckRlbGF5Q29udHJvbGxl
ciwgTm9uQ2F1c2FsQWxpZ25tZW50KSB7CiAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8RGVsYXlF
c3RpbWF0ZT4gZGVsYXlfYmxvY2tzOwogICAgICAgICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVi
dWdUZXh0KHJhdGUsIC1kZWxheV9zYW1wbGVzKSk7CiAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgICAgICAgICBS
ZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7
CisgICAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFu
ZHNGb3JSYXRlKHJhdGUpKSk7CiAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5
Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlcigKLSAgICAgICAgICAgICAgUmVuZGVyRGVsYXlD
b250cm9sbGVyOjpDcmVhdGUoCi0gICAgICAgICAgICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZp
ZygpLAotICAgICAgICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkRlbGF5RXN0aW1hdG9y
T2Zmc2V0KGNvbmZpZyksIHJhdGUpKTsKKyAgICAgICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9s
bGVyOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHJhdGUpKTsKICAgICAgICAgICBE
ZWxheUJ1ZmZlcjxmbG9hdD4gc2lnbmFsX2RlbGF5X2J1ZmZlcigtZGVsYXlfc2FtcGxlcyk7CiAg
ICAgICAgICAgZm9yIChpbnQgayA9IDA7CiAgICAgICAgICAgICAgICBrIDwgKDQwMCAtIGRlbGF5
X3NhbXBsZXMgLyBzdGF0aWNfY2FzdDxpbnQ+KGtCbG9ja1NpemUpKTsgKytrKSB7CkBAIC0yMjMs
MTEgKzIxNiw5IEBAIFRFU1QoUmVuZGVyRGVsYXlDb250cm9sbGVyLCBBbGlnbm1lbnRXaXRoSml0
dGVyKSB7CiAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gZGVsYXlfYmxv
Y2tzOwogICAgICAgICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUsIGRlbGF5
X3NhbXBsZXMpKTsKICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+
IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpD
cmVhdGUoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAgICAgICAgICAgICAgUmVu
ZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsK
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPiBkZWxheV9j
b250cm9sbGVyKAotICAgICAgICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZSgK
LSAgICAgICAgICAgICAgICAgIGNvbmZpZywgUmVuZGVyRGVsYXlCdWZmZXI6OkRlbGF5RXN0aW1h
dG9yT2Zmc2V0KGNvbmZpZyksCi0gICAgICAgICAgICAgICAgICByYXRlKSk7CisgICAgICAgICAg
ICAgIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlMihjb25maWcsIHJhdGUpKTsKICAgICAg
ICAgICBEZWxheUJ1ZmZlcjxmbG9hdD4gc2lnbmFsX2RlbGF5X2J1ZmZlcihkZWxheV9zYW1wbGVz
KTsKICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICgxMDAwICsgZGVsYXlfc2FtcGxl
cyAvIGtCbG9ja1NpemUpIC8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnLmRlbGF5LmFwaV9jYWxsX2ppdHRlcl9ibG9ja3MgKwpAQCAtMjgwLDExICsyNzEs
MTAgQEAgVEVTVChSZW5kZXJEZWxheUNvbnRyb2xsZXIsIEluaXRpYWxIZWFkcm9vbSkgewogICAg
ICAgZm9yIChhdXRvIHJhdGUgOiB7ODAwMCwgMTYwMDAsIDMyMDAwLCA0ODAwMH0pIHsKICAgICAg
ICAgU0NPUEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQocmF0ZSkpOwogICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICAg
ICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJh
dGUpKSk7CisgICAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIE51
bUJhbmRzRm9yUmF0ZShyYXRlKSkpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJE
ZWxheUNvbnRyb2xsZXI+IGRlbGF5X2NvbnRyb2xsZXIoCi0gICAgICAgICAgICBSZW5kZXJEZWxh
eUNvbnRyb2xsZXI6OkNyZWF0ZSgKLSAgICAgICAgICAgICAgICBjb25maWcsIFJlbmRlckRlbGF5
QnVmZmVyOjpEZWxheUVzdGltYXRvck9mZnNldChjb25maWcpLCByYXRlKSk7CisgICAgICAgICAg
ICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZTIoY29uZmlnLCByYXRlKSk7CiAgICAgICB9
CiAgICAgfQogICB9CkBAIC0zMDAsMTIgKzI5MCwxMCBAQCBURVNUKFJlbmRlckRlbGF5Q29udHJv
bGxlciwgV3JvbmdDYXB0dXJlU2l6ZSkgewogICBmb3IgKGF1dG8gcmF0ZSA6IHs4MDAwLCAxNjAw
MCwgMzIwMDAsIDQ4MDAwfSkgewogICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJh
dGUpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxh
eV9idWZmZXIoCi0gICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCBOdW1C
YW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIo
Y29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKICAgICBFWFBFQ1RfREVBVEgoCiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+KAotICAgICAgICAgICAg
UmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUoCi0gICAgICAgICAgICAgICAgRWNob0NhbmNl
bGxlcjNDb25maWcoKSwKLSAgICAgICAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6RGVsYXlF
c3RpbWF0b3JPZmZzZXQoY29uZmlnKSwgcmF0ZSkpCisgICAgICAgICAgICBSZW5kZXJEZWxheUNv
bnRyb2xsZXI6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgcmF0ZSkpCiAgICAgICAg
ICAgICAtPkdldERlbGF5KHJlbmRlcl9kZWxheV9idWZmZXItPkdldERvd25zYW1wbGVkUmVuZGVy
QnVmZmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9kZWxheV9idWZmZXItPkRl
bGF5KCksIGVjaG9fcmVtb3Zlcl9kZWxheSwgYmxvY2spLAogICAgICAgICAiIik7CkBAIC0zMjAs
MTEgKzMwOCwxMCBAQCBURVNUKFJlbmRlckRlbGF5Q29udHJvbGxlciwgRElTQUJMRURfV3JvbmdT
YW1wbGVSYXRlKSB7CiAgICAgU0NPUEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQocmF0ZSkpOwog
ICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICAgIFJlbmRlckRlbGF5
QnVmZmVyOjpDcmVhdGUoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAgICAgICAg
UmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkp
KTsKICAgICBFWFBFQ1RfREVBVEgoCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxh
eUNvbnRyb2xsZXI+KFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlKAotICAgICAgICAgICAg
RWNob0NhbmNlbGxlcjNDb25maWcoKSwKLSAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpE
ZWxheUVzdGltYXRvck9mZnNldChjb25maWcpLCByYXRlKSksCisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+KAorICAgICAgICAgICAgUmVuZGVyRGVsYXlDb250
cm9sbGVyOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHJhdGUpKSwKICAgICAgICAg
IiIpOwogICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfcmV2ZXJiX21v
ZGVsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3JldmVyYl9tb2RlbC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YWQ1NGMwY2MzNDVmNjVkNTZkZjJlN2YwNGZjMzk5ZGZjNTZjMzJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3JldmVyYl9tb2RlbC5jYwpAQCAtMCwwICsxLDQ0
IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JlbmRlcl9yZXZlcmJfbW9kZWwuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKworI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitSZW5kZXJSZXZlcmJNb2RlbDo6UmVuZGVy
UmV2ZXJiTW9kZWwoKSB7CisgIFJlc2V0KCk7Cit9CisKK1JlbmRlclJldmVyYk1vZGVsOjp+UmVu
ZGVyUmV2ZXJiTW9kZWwoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVuZGVyUmV2ZXJiTW9kZWw6OlJl
c2V0KCkgeworICByZW5kZXJfcmV2ZXJiXy5SZXNldCgpOworfQorCit2b2lkIFJlbmRlclJldmVy
Yk1vZGVsOjpBcHBseShjb25zdCBWZWN0b3JCdWZmZXImIHNwZWN0cnVtX2J1ZmZlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWxheV9ibG9ja3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCByZXZlcmJfZGVjYXksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OkFycmF5VmlldzxmbG9hdD4gcmV2ZXJiX3Bvd2VyX3NwZWN0cnVtKSB7
CisgIGludCBpZHhfYXRfZGVsYXkgPQorICAgICAgc3BlY3RydW1fYnVmZmVyLk9mZnNldEluZGV4
KHNwZWN0cnVtX2J1ZmZlci5yZWFkLCBkZWxheV9ibG9ja3MpOworICBpbnQgaWR4X3Bhc3QgPSBz
cGVjdHJ1bV9idWZmZXIuSW5jSW5kZXgoaWR4X2F0X2RlbGF5KTsKKyAgY29uc3QgYXV0byYgWDIg
PSBzcGVjdHJ1bV9idWZmZXIuYnVmZmVyW2lkeF9hdF9kZWxheV07CisgIFJUQ19EQ0hFQ0tfRVEo
WDIuc2l6ZSgpLCByZXZlcmJfcG93ZXJfc3BlY3RydW0uc2l6ZSgpKTsKKyAgc3RkOjpjb3B5KFgy
LmJlZ2luKCksIFgyLmVuZCgpLCByZXZlcmJfcG93ZXJfc3BlY3RydW0uYmVnaW4oKSk7CisgIHJl
bmRlcl9yZXZlcmJfLkFkZFJldmVyYk5vRnJlcVNoYXBpbmcoc3BlY3RydW1fYnVmZmVyLmJ1ZmZl
cltpZHhfcGFzdF0sIDEuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV2ZXJiX2RlY2F5LCByZXZlcmJfcG93ZXJfc3BlY3RydW0pOworfQorCit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfcmV2ZXJiX21v
ZGVsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfcmV2ZXJiX21vZGVsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDQwNGE2OWVjZDJmMjBjMDc1OTc5YTg5ZTU0Y2U3YzMxNTQ0OTEyNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9yZXZlcmJfbW9kZWwuaApAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJ
TkdfQUVDM19SRU5ERVJfUkVWRVJCX01PREVMX0hfCisjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJP
Q0VTU0lOR19BRUMzX1JFTkRFUl9SRVZFUkJfTU9ERUxfSF8KKworI2luY2x1ZGUgImFwaS9hcnJh
eV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJi
X21vZGVsLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9y
X2J1ZmZlci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gVGhlIFJlbmRlclJldmVyYk1v
ZGVsIGNsYXNzIGFwcGxpZXMgYW4gZXhwb25lbnRpYWwgcmV2ZXJiZXJhbnQgbW9kZWwgb3ZlciB0
aGUKKy8vIHJlbmRlciBzcGVjdHJ1bS4KK2NsYXNzIFJlbmRlclJldmVyYk1vZGVsIHsKKyBwdWJs
aWM6CisgIFJlbmRlclJldmVyYk1vZGVsKCk7CisgIH5SZW5kZXJSZXZlcmJNb2RlbCgpOworCisg
IC8vIFJlc2V0cyB0aGUgc3RhdGUuCisgIHZvaWQgUmVzZXQoKTsKKworICAvLyBBcHBsaWVzIHRo
ZSByZXZlcmJlcmF0aW9uIG1vZGVsIG92ZXIgdGhlIHJlbmRlciBzcGVjdHJ1bS4gSXQgYWxzbyBy
ZXR1cm5zCisgIC8vIHRoZSByZXZlcmJlcmF0aW9uIHJlbmRlciBwb3dlciBzcGVjdHJ1bSBpbiB0
aGUgYXJyYXkgcmV2ZXJiX3Bvd2VyX3NwZWN0cnVtLgorICB2b2lkIEFwcGx5KGNvbnN0IFZlY3Rv
ckJ1ZmZlciYgc3BlY3RydW1fYnVmZmVyLAorICAgICAgICAgICAgIGludCBkZWxheV9ibG9ja3Ms
CisgICAgICAgICAgICAgZmxvYXQgcmV2ZXJiX2RlY2F5LAorICAgICAgICAgICAgIHJ0Yzo6QXJy
YXlWaWV3PGZsb2F0PiByZXZlcmJfcG93ZXJfc3BlY3RydW0pOworCisgIC8vIEdldHMgdGhlIHJl
dmVyYmVyYXRpb24gc3BlY3RydW0gdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHJlbmRlciBzcGVjdHJ1
bSBmb3IKKyAgLy8gY29tcHV0aW5nIHRoZSByZXZlcmJlcmF0aW9uIHJlbmRlciBzcGVjdHJ1bS4K
KyAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEdldFJldmVyYkNvbnRyaWJ1dGlvblBvd2Vy
U3BlY3RydW0oKSBjb25zdCB7CisgICAgcmV0dXJuIHJlbmRlcl9yZXZlcmJfLkdldFBvd2VyU3Bl
Y3RydW0oKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgUmV2ZXJiTW9kZWwgcmVuZGVyX3JldmVyYl87
Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjLgorCisjZW5kaWYgIC8vIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BRUMzX1JFTkRFUl9SRVZFUkJfTU9ERUxfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9y
ZW5kZXJfc2lnbmFsX2FuYWx5emVyLmNjCmluZGV4IDUwYzM0Y2U0M2Y2MWE1MDJlZGYyODEzY2Mw
N2IwNDQwNjhmNDE0MWMuLjMzYjA0YmY3MGM5ZmY4MGQzZTkwMzkxMWU3OTMxMjFmM2M5OWQ1NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplci5jYwpAQCAtMTIsNyArMTIs
MTAgQEAKIAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVk
ZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmll
dy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuaAppbmRleCBjNjAzYzkyMTQ0N2I5
MDVjZDBmNDJlNTEwMTM4OTA1NjY4M2ZiZDZlLi44YTQ0MjMyY2Y5YTBkMzFjN2ZkNWEyZDYwNTZi
NDdlMDNhZGUzODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2Fu
YWx5emVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplci5oCkBA
IC0xMSwxMyArMTEsMTUgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNf
UkVOREVSX1NJR05BTF9BTkFMWVpFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJ
TkdfQUVDM19SRU5ERVJfU0lHTkFMX0FOQUxZWkVSX0hfCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+
CiAjaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPGNzdGRkZWY+
CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlv
L2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplcl91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXJfdW5pdHRl
c3QuY2MKaW5kZXggZjliMTk1NTgzODc1ZjAyOTY4OTAwMzE0YTMyNmZiNjYyZDI4ZTlhYy4uYTk5
M2Y4ZjhhY2Y4OWNkOWIwMjM1YzM4MDQ0NTcxZmMzMjU5OTg3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5emVyX3VuaXR0ZXN0LmNjCkBAIC01OSw3ICs1OSw3
IEBAIFRFU1QoUmVuZGVyU2lnbmFsQW5hbHl6ZXIsIE5vRmFsc2VEZXRlY3Rpb25PZk5hcnJvd0Jh
bmRzKSB7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4geCgzLCBzdGQ6OnZlY3Rv
cjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMC5mKSk7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtCbG9ja1Np
emU+IHhfb2xkOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9k
ZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKEVjaG9DYW5jZWxs
ZXIzQ29uZmlnKCksIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKEVjaG9D
YW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5
MlBsdXMxPiBtYXNrOwogICB4X29sZC5maWxsKDAuZik7CiAKQEAgLTkzLDcgKzkzLDcgQEAgVEVT
VChSZW5kZXJTaWduYWxBbmFseXplciwgTmFycm93QmFuZERldGVjdGlvbikgewogICBFY2hvQ2Fu
Y2VsbGVyM0NvbmZpZyBjb25maWc7CiAgIGNvbmZpZy5kZWxheS5taW5fZWNob19wYXRoX2RlbGF5
X2Jsb2NrcyA9IDA7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVy
X2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAz
KSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKIAogICBz
dGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IG1hc2s7CiAgIHhfb2xkLmZpbGwo
MC5mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9fZXN0aW1hdG9y
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNob19lc3RpbWF0b3IuY2MKaW5kZXggMmUz
YWQ5ZmVhNzI3ZTI5ZWE0Y2ZjMTcwNmYyOTNkZmY2NzhkODA5YS4uNjI3ZGQ5MDBjNGU4OTUwZTBk
YzY4N2JlZDU0ZDNjNWQ2ZDJkYmI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1
YWxfZWNob19lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNob19l
c3RpbWF0b3IuY2MKQEAgLTExLDkgKzExLDExIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hvX2VzdGltYXRvci5oIgogCi0jaW5jbHVkZSA8
bnVtZXJpYz4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5j
bHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWwuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWxfZmFsbGJhY2suaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKQEAgLTEwNSw5ICsxMDcsMTUgQEAgdm9pZCBSZXNp
ZHVhbEVjaG9Fc3RpbWF0b3I6OkVzdGltYXRlKAogCiAgIC8vIEVzdGltYXRlIHRoZSByZXNpZHVh
bCBlY2hvIHBvd2VyLgogICBpZiAoYWVjX3N0YXRlLlVzYWJsZUxpbmVhckVzdGltYXRlKCkpIHsK
LSAgICBSVENfRENIRUNLKCFhZWNfc3RhdGUuU2F0dXJhdGVkRWNobygpKTsKICAgICBMaW5lYXJF
c3RpbWF0ZShTMl9saW5lYXIsIGFlY19zdGF0ZS5FcmxlKCksIGFlY19zdGF0ZS5FcmxlVW5jZXJ0
YWludHkoKSwKICAgICAgICAgICAgICAgICAgICBSMik7CisKKyAgICAvLyBXaGVuIHRoZXJlIGlz
IHNhdHVyYXRlZCBlY2hvLCBhc3N1bWUgdGhlIHNhbWUgc3BlY3RyYWwgY29udGVudCBhcyBpcwor
ICAgIC8vIHByZXNlbnQgaW4gdGhlIG1pY3JvcG9uZSBzaWduYWwuCisgICAgaWYgKGFlY19zdGF0
ZS5TYXR1cmF0ZWRFY2hvKCkpIHsKKyAgICAgIHN0ZDo6Y29weShZMi5iZWdpbigpLCBZMi5lbmQo
KSwgUjItPmJlZ2luKCkpOworICAgIH0KKwogICAgIC8vIEFkZHMgdGhlIGVzdGltYXRlZCB1bm1v
ZGVsbGVkIGVjaG8gcG93ZXIgdG8gdGhlIHJlc2lkdWFsIGVjaG8gcG93ZXIKICAgICAvLyBlc3Rp
bWF0ZS4KICAgICBpZiAoZWNob19yZXZlcmJfKSB7CkBAIC0xNTEsMTAgKzE1OSwxMCBAQCB2b2lk
IFJlc2lkdWFsRWNob0VzdGltYXRvcjo6RXN0aW1hdGUoCiAgICAgfQogICAgIE5vbkxpbmVhckVz
dGltYXRlKGVjaG9fcGF0aF9nYWluLCBYMiwgWTIsIFIyKTsKIAotICAgIC8vIElmIHRoZSBlY2hv
IGlzIHNhdHVyYXRlZCwgZXN0aW1hdGUgdGhlIGVjaG8gcG93ZXIgYXMgdGhlIG1heGltdW0gZWNo
bwotICAgIC8vIHBvd2VyIHdpdGggYSBsZWFrYWdlIGZhY3Rvci4KKyAgICAvLyBXaGVuIHRoZXJl
IGlzIHNhdHVyYXRlZCBlY2hvLCBhc3N1bWUgdGhlIHNhbWUgc3BlY3RyYWwgY29udGVudCBhcyBp
cworICAgIC8vIHByZXNlbnQgaW4gdGhlIG1pY3JvcG9uZSBzaWduYWwuCiAgICAgaWYgKGFlY19z
dGF0ZS5TYXR1cmF0ZWRFY2hvKCkpIHsKLSAgICAgIFIyLT5maWxsKCgqc3RkOjptYXhfZWxlbWVu
dChSMi0+YmVnaW4oKSwgUjItPmVuZCgpKSkgKiAxMDAuZik7CisgICAgICBzdGQ6OmNvcHkoWTIu
YmVnaW4oKSwgWTIuZW5kKCksIFIyLT5iZWdpbigpKTsKICAgICB9CiAKICAgICBpZiAoIShhZWNf
c3RhdGUuVHJhbnNwYXJlbnRNb2RlKCkgJiYgc29mdF90cmFuc3BhcmVudF9tb2RlXykpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9fZXN0aW1hdG9yLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hvX2VzdGltYXRvci5oCmluZGV4IDZkY2YyNGYwOTA3OTBi
NzI0ZThlMmU0NzQyY2YzM2NhMTQyMTNjYWUuLjUyODg1YTU4ZDg1YTMzODI0MjJjZGY5Y2UyMmVm
MjAzYmExMjlmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9fZXN0
aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNob19lc3RpbWF0b3IuaApA
QCAtMTEsMTggKzExLDE4IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMz
X1JFU0lEVUFMX0VDSE9fRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BRUMzX1JFU0lEVUFMX0VDSE9fRVNUSU1BVE9SX0hfCiAKLSNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHZlY3Rv
cj4KIAotI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9v
cHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsX2ZhbGxi
YWNrLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1
ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIFJlc2lkdWFsRWNob0VzdGltYXRvciB7CiAgICAgICAgICAgICAgICAgc3RkOjph
cnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogUjIpOwogCiAgIC8vIFJldHVybnMgdGhl
IHJldmVyYmVyYW50IHBvd2VyIHNwZWN0cnVtIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIGVjaG8gcmVz
aWR1YWwuCi0gIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIEdl
dFJldmVyYlBvd2VyU3BlY3RydW0oKSBjb25zdCB7CisgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZs
b2F0PiBHZXRSZXZlcmJQb3dlclNwZWN0cnVtKCkgY29uc3QgewogICAgIGlmIChlY2hvX3JldmVy
Yl8pIHsKICAgICAgIHJldHVybiBlY2hvX3JldmVyYl8tPkdldFBvd2VyU3BlY3RydW0oKTsKICAg
ICB9IGVsc2UgewpAQCAtNjYsNyArNjYsNiBAQCBjbGFzcyBSZXNpZHVhbEVjaG9Fc3RpbWF0b3Ig
ewogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4mIFkyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8
ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4qIFIyKTsKIAotCiAgIC8vIEVzdGltYXRlcyB0aGUg
ZWNobyBnZW5lcmF0aW5nIHNpZ25hbCBwb3dlciBhcyBnYXRlZCBtYXhpbWFsIHBvd2VyIG92ZXIg
YQogICAvLyB0aW1lIHdpbmRvdy4KICAgdm9pZCBFY2hvR2VuZXJhdGluZ1Bvd2VyKGNvbnN0IFZl
Y3RvckJ1ZmZlciYgc3BlY3RydW1fYnVmZmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
cmVzaWR1YWxfZWNob19lc3RpbWF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNp
ZHVhbF9lY2hvX2VzdGltYXRvcl91bml0dGVzdC5jYwppbmRleCA4MzJkOGNhMWQzM2I2NTc2NDg5
YWUyMWI4MTAyNWE5YjY2M2MzMjA3Li4yZTczYTdlNjExNjEwMWZjYzZiY2NhMTdmMmM3MDgxYTUx
MWM5YWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hvX2VzdGltYXRv
cl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hvX2VzdGltYXRv
cl91bml0dGVzdC5jYwpAQCAtMjcsNyArMjcsNyBAQCBURVNUKFJlc2lkdWFsRWNob0VzdGltYXRv
ciwgTnVsbFJlc2lkdWFsRWNob1Bvd2VyT3V0cHV0KSB7CiAgIEVjaG9DYW5jZWxsZXIzQ29uZmln
IGNvbmZpZzsKICAgQWVjU3RhdGUgYWVjX3N0YXRlKGNvbmZpZyk7CiAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRl
bGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6
Q3JlYXRlMihjb25maWcsIDMpKTsKICAgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwga0Zm
dExlbmd0aEJ5MlBsdXMxPj4gSDI7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4gUzJfbGluZWFyOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+
IFkyOwpAQCAtNDgsNyArNDgsNyBAQCBURVNUKFJlc2lkdWFsRWNob0VzdGltYXRvciwgRElTQUJM
RURfQmFzaWNUZXN0KSB7CiAgIFJlc2lkdWFsRWNob0VzdGltYXRvciBlc3RpbWF0b3IoY29uZmln
KTsKICAgQWVjU3RhdGUgYWVjX3N0YXRlKGNvbmZpZyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVm
ZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRl
Mihjb25maWcsIDMpKTsKIAogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+
IEUyX21haW47CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gRTJfc2hh
ZG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2RlY2F5X2VzdGltYXRvci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9kZWNheV9lc3RpbWF0b3IuY2MKaW5kZXggZjgwYWZh
MmRmY2JhMDk2M2ZlMTljMjA5ZDMyMDNkMTc3YzBjOGM1OS4uOTVmZDEzYWY1OTYyNjlhZTE1MWFm
ZWFmODc0MTQ2YTE3M2MzYTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2Rl
Y2F5X2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVjYXlfZXN0aW1h
dG9yLmNjCkBAIC0xMCwxMSArMTAsMTMgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JldmVyYl9kZWNheV9lc3RpbWF0b3IuaCIKIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxu
dW1lcmljPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkvYXVk
aW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVjYXlfZXN0aW1hdG9yLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVjYXlfZXN0aW1hdG9yLmgKaW5kZXggNjdhODRhYjhmY2Jm
NTMzZDljN2FmMGRhOGU5OTI4ODgzYTYwYTZkNi4uNGM4ZDBjNjQzNDYyZmVhZTc3ZWRhOWE0NWU1
ZTFhMTc1ZTA2MTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2RlY2F5X2Vz
dGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9kZWNheV9lc3RpbWF0b3IuaApA
QCAtMTYsMTIgKzE2LDEyIEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAj
aW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5j
ZWxsZXIzX2NvbmZpZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2FlYzNfY29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YWVjM19jb21tb24uaCIgIC8vIGtNYXhBZGFwdGl2ZUZpbHRlci4uLgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIAogY2xhc3MgQXBtRGF0YUR1bXBlcjsKK3N0cnVjdCBFY2hvQ2FuY2VsbGVyM0NvbmZp
ZzsKIAogLy8gQ2xhc3MgZm9yIGVzdGltYXRpbmcgdGhlIGRlY2F5IG9mIHRoZSBsYXRlIHJldmVy
Yi4KIGNsYXNzIFJldmVyYkRlY2F5RXN0aW1hdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JldmVyYl9mcmVxdWVuY3lfcmVzcG9uc2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJf
ZnJlcXVlbmN5X3Jlc3BvbnNlLmNjCmluZGV4IDBkODI1MTVlYzRiMjU2ODhkNzM1NGJlMTMyYTgy
MjA4YTk2NWRjNmIuLmQyMTAzZDQ0MmU0YjQ1ZmY4NGUxNmE3NmQ2MDRjOGEwNDY0OWI2NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9mcmVxdWVuY3lfcmVzcG9uc2UuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2ZyZXF1ZW5jeV9yZXNwb25zZS5jYwpAQCAtMTAsMTQg
KzEwLDEyIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZl
cmJfZnJlcXVlbmN5X3Jlc3BvbnNlLmgiCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0jaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPG51bWVyaWM+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmll
dy5oIgotI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVk
ZS9maWVsZF90cmlhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2ZyZXF1
ZW5jeV9yZXNwb25zZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2ZyZXF1ZW5jeV9yZXNwb25z
ZS5oCmluZGV4IDIzNDg1ZTAwOWZiZTMwZWI2ZDMyNzM2MWJlNmExNDA3MzA4MWIwMmMuLmViNjNi
OGU1MmU4NTRiY2NhOWYxODRlZWZhNjUxODczOWNkOGI4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3JldmVyYl9mcmVxdWVuY3lfcmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9y
ZXZlcmJfZnJlcXVlbmN5X3Jlc3BvbnNlLmgKQEAgLTExLDEzICsxMSwxMiBAQAogI2lmbmRlZiBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRVZFUkJfRlJFUVVFTkNZX1JFU1BPTlNFX0hf
CiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1JFVkVSQl9GUkVRVUVOQ1lf
UkVTUE9OU0VfSF8KIAotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxhcnJheT4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVk
ZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9hZWMzX2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9s
b2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2
ZXJiX21vZGVsLmNjCmluZGV4IDBjYTI0OGZjNzU0MzFlYTYzMzc3YzI0ZWQ2OTNjNmJlYzZiOTA3
ZTYuLmYwYTI0YzAyNDk4MjM0ODVkOTk3MzYxYjc1NjZkYjE5MjYzNjM0NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZl
cmJfbW9kZWwuY2MKQEAgLTEwLDEzICsxMCwxMSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmgiCiAKLSNpbmNsdWRlIDxtYXRoLmg+Ci0K
KyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvcmV2ZXJiX21vZGVsLmgKaW5kZXggZDMwODdhNzJkOTEwMjNhNTNkN2NhNTllNmU1
ZmQwNTQ5Mjk3MzhkNS4uNTZlMjI2NmU1NjllNzQ0N2ExZmIwZmMyZjYyNzk4MjBkOTk3MDM0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmV2ZXJiX21vZGVsLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0FFQzNfUkVWRVJCX01PREVMX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BRUMzX1JFVkVSQl9NT0RFTF9IXwogCisjaW5jbHVkZSA8YXJyYXk+CisK
ICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAKQEAgLTUwLDkgKzUyLDcgQEAgY2xhc3MgUmV2
ZXJiTW9kZWwgewogICAgICAgZmxvYXQgcmV2ZXJiX2RlY2F5KTsKIAogICAvLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IHBvd2VyIHNwZWN0cnVtIHJldmVyYmVyYXRpb24gY29udHJpYnV0aW9ucy4KLSAg
Y29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgR2V0UG93ZXJTcGVj
dHJ1bSgpIGNvbnN0IHsKLSAgICByZXR1cm4gcmV2ZXJiXzsKLSAgfQorICBydGM6OkFycmF5Vmll
dzxjb25zdCBmbG9hdD4gR2V0UG93ZXJTcGVjdHJ1bSgpIGNvbnN0IHsgcmV0dXJuIHJldmVyYl87
IH0KIAogIHByaXZhdGU6CiAgIC8vIFVwZGF0ZXMgdGhlIHJldmVyYmVyYXRpb24gY29udHJpYnV0
aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbF9lc3RpbWF0b3Iu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbF9lc3RpbWF0b3IuaAppbmRleCBiNmEzNTkx
ZTA5MTk3MGI5MGM4Y2UwMTJjMDFkN2NhMzQ5NjdjYTBjLi4xMTEyZjkzYTcxOTM1NGJhYWZjM2M5
ODg0NGNjMGI5NDFhNWFjZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9k
ZWxfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsX2VzdGltYXRv
ci5oCkBAIC0xMSwxMSArMTEsMTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5H
X0FFQzNfUkVWRVJCX01PREVMX0VTVElNQVRPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfQUVDM19SRVZFUkJfTU9ERUxfRVNUSU1BVE9SX0hfCiAKKyNpbmNsdWRlIDxhcnJh
eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
CiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19j
YW5jZWxsZXIzX2NvbmZpZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FlYzNfY29tbW9uLmgiICAvLyBrRmZ0TGVuZ3RoQnkyUGx1czEKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVjYXlfZXN0aW1hdG9yLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2ZyZXF1ZW5jeV9yZXNw
b25zZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWxfZmFsbGJh
Y2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbF9mYWxsYmFjay5oCmluZGV4IDFiMmE5
NTNlYTY0MTdjMmJlZTgwNmM2MzdkZTZmMTJlNDczYjU0NTEuLjFiZDJiNTk0ZTA2YWFjMGJhNTA5
ZDZlY2Y1MTkyNTAxYzhjNmYxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9t
b2RlbF9mYWxsYmFjay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbF9mYWxsYmFj
ay5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19B
RUMzX1JFVkVSQl9NT0RFTF9GQUxMQkFDS19IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NF
U1NJTkdfQUVDM19SRVZFUkJfTU9ERUxfRkFMTEJBQ0tfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5o
PgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbi5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
c2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbi5oCmluZGV4IGE5MmJjM2I4YjdmYTAxN2E4OGEzZWI5
NGUwYjc1ZDJiMjZiYmI4ZTYuLjA1ZTYzMmZhNzhiODczMTNlMmVmNWQxZGI3ZmQ3NzRjNWExNjcw
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NoYWRvd19maWx0ZXJfdXBkYXRlX2dhaW4u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaGFkb3dfZmlsdGVyX3VwZGF0ZV9nYWluLmgKQEAgLTEx
LDExICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TSEFE
T1dfRklMVEVSX1VQREFURV9HQUlOX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lO
R19BRUMzX1NIQURPV19GSUxURVJfVVBEQVRFX0dBSU5fSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5o
PgorI2luY2x1ZGUgPGFycmF5PgorCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVy
M19jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMz
X2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRl
cl9idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRf
ZGF0YS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9z
aWduYWxfYW5hbHl6ZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaGFk
b3dfZmlsdGVyX3VwZGF0ZV9nYWluX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2hhZG93
X2ZpbHRlcl91cGRhdGVfZ2Fpbl91bml0dGVzdC5jYwppbmRleCBjMDQwYmJmZjkxZjJiN2JiYmVm
YTU4ZDU0MTJjZjMwMDAwNGZlMmRlLi4wMTdjNjc5NTg4YjFiNzI1ZGU3NjM4NjBlNjA5Y2RiYWJk
YzZjMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaGFkb3dfZmlsdGVyX3VwZGF0ZV9n
YWluX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NoYWRvd19maWx0ZXJfdXBkYXRl
X2dhaW5fdW5pdHRlc3QuY2MKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBSdW5GaWx0ZXJVcGRhdGVU
ZXN0KGludCBudW1fYmxvY2tzX3RvX3Byb2Nlc3MsCiAgIGNvbmZpZy5kZWxheS5taW5fZWNob19w
YXRoX2RlbGF5X2Jsb2NrcyA9IDA7CiAgIGNvbmZpZy5kZWxheS5kZWZhdWx0X2RlbGF5ID0gMTsK
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVy
KAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJl
bmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogCiAgIHN0ZDo6YXJyYXk8Zmxv
YXQsIGtCbG9ja1NpemU+IHhfb2xkOwogICB4X29sZC5maWxsKDAuZik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvci5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MmIzNmFiMjE1YTU0NzFjMWNiOTBkMzkwNTE1YWY3MzhkOTY1MGM5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvci5jYwpAQCAt
MCwwICsxLDM2OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yLmgi
CisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRl
IDxudW1lcmljPgorCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVj
dG9yX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4Lmgi
CisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1lc3BhY2UgeworCitjb25zdGV4cHIgc3RkOjph
cnJheTxzaXplX3QsIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OmtTdWJiYW5kcyArIDE+
CisgICAga0JhbmRCb3VuZGFyaWVzID0gezEsIDgsIDE2LCAyNCwgMzIsIDQ4LCBrRmZ0TGVuZ3Ro
QnkyUGx1czF9OworCitzdGQ6OmFycmF5PHNpemVfdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBGb3Jt
U3ViYmFuZE1hcCgpIHsKKyAgc3RkOjphcnJheTxzaXplX3QsIGtGZnRMZW5ndGhCeTJQbHVzMT4g
bWFwX2JhbmRfdG9fc3ViYmFuZDsKKyAgc2l6ZV90IHN1YmJhbmQgPSAxOworICBmb3IgKHNpemVf
dCBrID0gMDsgayA8IG1hcF9iYW5kX3RvX3N1YmJhbmQuc2l6ZSgpOyArK2spIHsKKyAgICBSVENf
RENIRUNLX0xUKHN1YmJhbmQsIGtCYW5kQm91bmRhcmllcy5zaXplKCkpOworICAgIGlmIChrID49
IGtCYW5kQm91bmRhcmllc1tzdWJiYW5kXSkgeworICAgICAgc3ViYmFuZCsrOworICAgICAgUlRD
X0RDSEVDS19MVChrLCBrQmFuZEJvdW5kYXJpZXNbc3ViYmFuZF0pOworICAgIH0KKyAgICBtYXBf
YmFuZF90b19zdWJiYW5kW2tdID0gc3ViYmFuZCAtIDE7CisgIH0KKyAgcmV0dXJuIG1hcF9iYW5k
X3RvX3N1YmJhbmQ7Cit9CisKKy8vIERlZmluZXMgdGhlIHNpemUgaW4gYmxvY2tzIG9mIHRoZSBz
ZWN0aW9ucyB0aGF0IGFyZSB1c2VkIGZvciBkaXZpZGluZyB0aGUKKy8vIGxpbmVhciBmaWx0ZXIu
IFRoZSBzZWN0aW9ucyBhcmUgc3BsaXQgaW4gYSBub24tbGluZWFyIG1hbm5lciBzbyB0aGF0IGxv
d2VyCisvLyBzZWN0aW9ucyB0aGF0IHR5cGljYWxseSByZXByZXNlbnQgdGhlIGRpcmVjdCBwYXRo
IGhhdmUgYSBsYXJnZXIgcmVzb2x1dGlvbgorLy8gdGhhbiB0aGUgaGlnaGVyIHNlY3Rpb25zIHdo
aWNoIHR5cGljYWxseSByZXByZXNlbnQgbW9yZSByZXZlcmJlcmFudCBhY291c3RpYworLy8gcGF0
aHMuCitzdGQ6OnZlY3RvcjxzaXplX3Q+IERlZmluZUZpbHRlclNlY3Rpb25TaXplcyhzaXplX3Qg
ZGVsYXlfaGVhZHJvb21fYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG51bV9ibG9ja3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX3NlY3Rpb25zKSB7CisgIHNpemVfdCBmaWx0
ZXJfbGVuZ3RoX2Jsb2NrcyA9IG51bV9ibG9ja3MgLSBkZWxheV9oZWFkcm9vbV9ibG9ja3M7Cisg
IHN0ZDo6dmVjdG9yPHNpemVfdD4gc2VjdGlvbl9zaXplcyhudW1fc2VjdGlvbnMpOworICBzaXpl
X3QgcmVtYWluaW5nX2Jsb2NrcyA9IGZpbHRlcl9sZW5ndGhfYmxvY2tzOworICBzaXplX3QgcmVt
YWluaW5nX3NlY3Rpb25zID0gbnVtX3NlY3Rpb25zOworICBzaXplX3QgZXN0aW1hdG9yX3NpemUg
PSAyOworICBzaXplX3QgaWR4ID0gMDsKKyAgd2hpbGUgKHJlbWFpbmluZ19zZWN0aW9ucyA+IDEg
JiYKKyAgICAgICAgIHJlbWFpbmluZ19ibG9ja3MgPiBlc3RpbWF0b3Jfc2l6ZSAqIHJlbWFpbmlu
Z19zZWN0aW9ucykgeworICAgIFJUQ19EQ0hFQ0tfTFQoaWR4LCBzZWN0aW9uX3NpemVzLnNpemUo
KSk7CisgICAgc2VjdGlvbl9zaXplc1tpZHhdID0gZXN0aW1hdG9yX3NpemU7CisgICAgcmVtYWlu
aW5nX2Jsb2NrcyAtPSBlc3RpbWF0b3Jfc2l6ZTsKKyAgICByZW1haW5pbmdfc2VjdGlvbnMtLTsK
KyAgICBlc3RpbWF0b3Jfc2l6ZSAqPSAyOworICAgIGlkeCsrOworICB9CisKKyAgc2l6ZV90IGxh
c3RfZ3JvdXBzX3NpemUgPSByZW1haW5pbmdfYmxvY2tzIC8gcmVtYWluaW5nX3NlY3Rpb25zOwor
ICBmb3IgKDsgaWR4IDwgbnVtX3NlY3Rpb25zOyBpZHgrKykgeworICAgIHNlY3Rpb25fc2l6ZXNb
aWR4XSA9IGxhc3RfZ3JvdXBzX3NpemU7CisgIH0KKyAgc2VjdGlvbl9zaXplc1tudW1fc2VjdGlv
bnMgLSAxXSArPQorICAgICAgcmVtYWluaW5nX2Jsb2NrcyAtIGxhc3RfZ3JvdXBzX3NpemUgKiBy
ZW1haW5pbmdfc2VjdGlvbnM7CisgIHJldHVybiBzZWN0aW9uX3NpemVzOworfQorCisvLyBGb3Jt
cyB0aGUgbGltaXRzIGluIGJsb2NrcyBmb3IgZWFjaCBmaWx0ZXIgc2VjdGlvbi4gVGhvc2Ugc2Vj
dGlvbnMKKy8vIGFyZSB1c2VkIGZvciBhbmFseXppbmcgdGhlIGVjaG8gZXN0aW1hdGVzIGFuZCBp
bnZlc3RpZ2F0aW5nIHdoaWNoCisvLyBsaW5lYXIgZmlsdGVyIHNlY3Rpb25zIGNvbnRyaWJ1dGUg
bW9zdCB0byB0aGUgZWNobyBlc3RpbWF0ZSBlbmVyZ3kuCitzdGQ6OnZlY3RvcjxzaXplX3Q+IFNl
dFNlY3Rpb25zQm91bmRhcmllcyhzaXplX3QgZGVsYXlfaGVhZHJvb21fYmxvY2tzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9ibG9ja3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX3NlY3Rp
b25zKSB7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tz
KG51bV9zZWN0aW9ucyArIDEpOworICBpZiAoZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzLnNp
emUoKSA9PSAyKSB7CisgICAgZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzWzBdID0gMDsKKyAg
ICBlc3RpbWF0b3JfYm91bmRhcmllc19ibG9ja3NbMV0gPSBudW1fYmxvY2tzOworICAgIHJldHVy
biBlc3RpbWF0b3JfYm91bmRhcmllc19ibG9ja3M7CisgIH0KKyAgUlRDX0RDSEVDS19HVChlc3Rp
bWF0b3JfYm91bmRhcmllc19ibG9ja3Muc2l6ZSgpLCAyKTsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8
c2l6ZV90PiBzZWN0aW9uX3NpemVzID0KKyAgICAgIERlZmluZUZpbHRlclNlY3Rpb25TaXplcyhk
ZWxheV9oZWFkcm9vbV9ibG9ja3MsIG51bV9ibG9ja3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzLnNpemUoKSAtIDEpOworCisgIHNp
emVfdCBpZHggPSAwOworICBzaXplX3QgY3VycmVudF9zaXplX2Jsb2NrID0gMDsKKyAgUlRDX0RD
SEVDS19FUShzZWN0aW9uX3NpemVzLnNpemUoKSArIDEsIGVzdGltYXRvcl9ib3VuZGFyaWVzX2Js
b2Nrcy5zaXplKCkpOworICBlc3RpbWF0b3JfYm91bmRhcmllc19ibG9ja3NbMF0gPSBkZWxheV9o
ZWFkcm9vbV9ibG9ja3M7CisgIGZvciAoc2l6ZV90IGsgPSBkZWxheV9oZWFkcm9vbV9ibG9ja3M7
IGsgPCBudW1fYmxvY2tzOyArK2spIHsKKyAgICBjdXJyZW50X3NpemVfYmxvY2srKzsKKyAgICBp
ZiAoY3VycmVudF9zaXplX2Jsb2NrID49IHNlY3Rpb25fc2l6ZXNbaWR4XSkgeworICAgICAgaWR4
ID0gaWR4ICsgMTsKKyAgICAgIGlmIChpZHggPT0gc2VjdGlvbl9zaXplcy5zaXplKCkpIHsKKyAg
ICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBlc3RpbWF0b3JfYm91bmRhcmllc19ibG9ja3Nb
aWR4XSA9IGsgKyAxOworICAgICAgY3VycmVudF9zaXplX2Jsb2NrID0gMDsKKyAgICB9CisgIH0K
KyAgZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzW3NlY3Rpb25fc2l6ZXMuc2l6ZSgpXSA9IG51
bV9ibG9ja3M7CisgIHJldHVybiBlc3RpbWF0b3JfYm91bmRhcmllc19ibG9ja3M7Cit9CisKK3N0
ZDo6YXJyYXk8ZmxvYXQsIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OmtTdWJiYW5kcz4K
K1NldE1heEVybGVTdWJiYW5kcyhmbG9hdCBtYXhfZXJsZV9sLCBmbG9hdCBtYXhfZXJsZV9oLCBz
aXplX3QgbGltaXRfc3ViYmFuZF9sKSB7CisgIHN0ZDo6YXJyYXk8ZmxvYXQsIFNpZ25hbERlcGVu
ZGVudEVybGVFc3RpbWF0b3I6OmtTdWJiYW5kcz4gbWF4X2VybGU7CisgIHN0ZDo6ZmlsbChtYXhf
ZXJsZS5iZWdpbigpLCBtYXhfZXJsZS5iZWdpbigpICsgbGltaXRfc3ViYmFuZF9sLCBtYXhfZXJs
ZV9sKTsKKyAgc3RkOjpmaWxsKG1heF9lcmxlLmJlZ2luKCkgKyBsaW1pdF9zdWJiYW5kX2wsIG1h
eF9lcmxlLmVuZCgpLCBtYXhfZXJsZV9oKTsKKyAgcmV0dXJuIG1heF9lcmxlOworfQorCit9ICAv
LyBuYW1lc3BhY2UKKworU2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvcjo6U2lnbmFsRGVwZW5k
ZW50RXJsZUVzdGltYXRvcigKKyAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmln
KQorICAgIDogbWluX2VybGVfKGNvbmZpZy5lcmxlLm1pbiksCisgICAgICBudW1fc2VjdGlvbnNf
KGNvbmZpZy5lcmxlLm51bV9zZWN0aW9ucyksCisgICAgICBudW1fYmxvY2tzXyhjb25maWcuZmls
dGVyLm1haW4ubGVuZ3RoX2Jsb2NrcyksCisgICAgICBkZWxheV9oZWFkcm9vbV9ibG9ja3NfKGNv
bmZpZy5kZWxheS5kZWxheV9oZWFkcm9vbV9ibG9ja3MpLAorICAgICAgYmFuZF90b19zdWJiYW5k
XyhGb3JtU3ViYmFuZE1hcCgpKSwKKyAgICAgIG1heF9lcmxlXyhTZXRNYXhFcmxlU3ViYmFuZHMo
Y29uZmlnLmVybGUubWF4X2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmZpZy5lcmxlLm1heF9oLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYW5k
X3RvX3N1YmJhbmRfW2tGZnRMZW5ndGhCeTIgLyAyXSkpLAorICAgICAgc2VjdGlvbl9ib3VuZGFy
aWVzX2Jsb2Nrc18oU2V0U2VjdGlvbnNCb3VuZGFyaWVzKGRlbGF5X2hlYWRyb29tX2Jsb2Nrc18s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVtX2Jsb2Nrc18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVtX3NlY3Rpb25zXykpLAorICAgICAgUzJfc2VjdGlvbl9hY2N1bV8obnVt
X3NlY3Rpb25zXyksCisgICAgICBlcmxlX2VzdGltYXRvcnNfKG51bV9zZWN0aW9uc18pLAorICAg
ICAgY29ycmVjdGlvbl9mYWN0b3JzXyhudW1fc2VjdGlvbnNfKSB7CisgIFJUQ19EQ0hFQ0tfTEUo
bnVtX3NlY3Rpb25zXywgbnVtX2Jsb2Nrc18pOworICBSVENfRENIRUNLX0dFKG51bV9zZWN0aW9u
c18sIDEpOworCisgIFJlc2V0KCk7Cit9CisKK1NpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6
On5TaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yKCkgPSBkZWZhdWx0OworCit2b2lkIFNpZ25h
bERlcGVuZGVudEVybGVFc3RpbWF0b3I6OlJlc2V0KCkgeworICBlcmxlXy5maWxsKG1pbl9lcmxl
Xyk7CisgIGZvciAoYXV0byYgZXJsZSA6IGVybGVfZXN0aW1hdG9yc18pIHsKKyAgICBlcmxlLmZp
bGwobWluX2VybGVfKTsKKyAgfQorICBlcmxlX3JlZl8uZmlsbChtaW5fZXJsZV8pOworICBmb3Ig
KGF1dG8mIGZhY3RvciA6IGNvcnJlY3Rpb25fZmFjdG9yc18pIHsKKyAgICBmYWN0b3IuZmlsbCgx
LjBmKTsKKyAgfQorICBudW1fdXBkYXRlc18uZmlsbCgwKTsKK30KKworLy8gVXBkYXRlcyB0aGUg
RXJsZSBlc3RpbWF0ZSBieSBhbmFseXppbmcgdGhlIGN1cnJlbnQgaW5wdXQgc2lnbmFscy4gSXQg
dGFrZXMKKy8vIHRoZSByZW5kZXIgYnVmZmVyIGFuZCB0aGUgZmlsdGVyIGZyZXF1ZW5jeSByZXNw
b25zZSBpbiBvcmRlciB0byBkbyBhbgorLy8gZXN0aW1hdGlvbiBvZiB0aGUgbnVtYmVyIG9mIHNl
Y3Rpb25zIG9mIHRoZSBsaW5lYXIgZmlsdGVyIHRoYXQgYXJlIG5lZWRlZAorLy8gZm9yIGdldHRp
bmcgdGhlIG1ham9yaXR5IG9mIHRoZSBlbmVyZ3kgaW4gdGhlIGVjaG8gZXN0aW1hdGUuIEJhc2Vk
IG9uIHRoYXQKKy8vIG51bWJlciBvZiBzZWN0aW9ucywgaXQgdXBkYXRlcyB0aGUgZXJsZSBlc3Rp
bWF0aW9uIGJ5IGludHJvZHVjaW5nIGEKKy8vIGNvcnJlY3Rpb24gZmFjdG9yIHRvIHRoZSBlcmxl
IHRoYXQgaXMgZ2l2ZW4gYXMgYW4gaW5wdXQgdG8gdGhpcyBtZXRob2QuCit2b2lkIFNpZ25hbERl
cGVuZGVudEVybGVFc3RpbWF0b3I6OlVwZGF0ZSgKKyAgICBjb25zdCBSZW5kZXJCdWZmZXImIHJl
bmRlcl9idWZmZXIsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwga0Zm
dExlbmd0aEJ5MlBsdXMxPj4mCisgICAgICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCisg
ICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFgyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IGZsb2F0PiBZMiwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gRTIsCisgICAg
cnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGF2ZXJhZ2VfZXJsZSwKKyAgICBib29sIGNvbnZl
cmdlZF9maWx0ZXIpIHsKKyAgUlRDX0RDSEVDS19HVChudW1fc2VjdGlvbnNfLCAxKTsKKworICAv
LyBHZXRzIHRoZSBudW1iZXIgb2YgZmlsdGVyIHNlY3Rpb25zIHRoYXQgYXJlIG5lZWRlZCBmb3Ig
YWNoaWV2aW5nIDkwICUKKyAgLy8gb2YgdGhlIHBvd2VyIHNwZWN0cnVtIGVuZXJneSBvZiB0aGUg
ZWNobyBlc3RpbWF0ZS4KKyAgc3RkOjphcnJheTxzaXplX3QsIGtGZnRMZW5ndGhCeTJQbHVzMT4g
bl9hY3RpdmVfc2VjdGlvbnM7CisgIENvbXB1dGVOdW1iZXJPZkFjdGl2ZUZpbHRlclNlY3Rpb25z
KHJlbmRlcl9idWZmZXIsIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5fYWN0aXZlX3NlY3Rpb25zKTsKKworICBpZiAoY29u
dmVyZ2VkX2ZpbHRlcikgeworICAgIC8vIFVwZGF0ZXMgdGhlIGNvcnJlY3Rpb24gZmFjdG9yIHRo
YXQgaXMgdXNlZCBmb3IgY29ycmVjdGluZyB0aGUgZXJsZSBhbmQKKyAgICAvLyBhZGFwdCBpdCB0
byB0aGUgcGFydGljdWxhciBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGlucHV0IHNpZ25hbC4KKyAg
ICBVcGRhdGVDb3JyZWN0aW9uRmFjdG9ycyhYMiwgWTIsIEUyLCBuX2FjdGl2ZV9zZWN0aW9ucyk7
CisgIH0KKworICAvLyBBcHBsaWVzIHRoZSBjb3JyZWN0aW9uIGZhY3RvciB0byB0aGUgaW5wdXQg
ZXJsZSBmb3IgZ2V0dGluZyBhIG1vcmUgcmVmaW5lZAorICAvLyBlcmxlIGVzdGltYXRpb24gZm9y
IHRoZSBjdXJyZW50IGlucHV0IHNpZ25hbC4KKyAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBrRmZ0
TGVuZ3RoQnkyOyArK2spIHsKKyAgICBmbG9hdCBjb3JyZWN0aW9uX2ZhY3RvciA9CisgICAgICAg
IGNvcnJlY3Rpb25fZmFjdG9yc19bbl9hY3RpdmVfc2VjdGlvbnNba11dW2JhbmRfdG9fc3ViYmFu
ZF9ba11dOworICAgIGVybGVfW2tdID0gcnRjOjpTYWZlQ2xhbXAoYXZlcmFnZV9lcmxlW2tdICog
Y29ycmVjdGlvbl9mYWN0b3IsIG1pbl9lcmxlXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1heF9lcmxlX1tiYW5kX3RvX3N1YmJhbmRfW2tdXSk7CisgIH0KK30KKwordm9pZCBTaWdu
YWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjpEdW1wKAorICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxBcG1EYXRhRHVtcGVyPiYgZGF0YV9kdW1wZXIpIGNvbnN0IHsKKyAgZm9yIChhdXRvJiBlcmxl
IDogZXJsZV9lc3RpbWF0b3JzXykgeworICAgIGRhdGFfZHVtcGVyLT5EdW1wUmF3KCJhZWMzX2Fs
bF9lcmxlIiwgZXJsZSk7CisgIH0KKyAgZGF0YV9kdW1wZXItPkR1bXBSYXcoImFlYzNfcmVmX2Vy
bGUiLCBlcmxlX3JlZl8pOworICBmb3IgKGF1dG8mIGZhY3RvciA6IGNvcnJlY3Rpb25fZmFjdG9y
c18pIHsKKyAgICBkYXRhX2R1bXBlci0+RHVtcFJhdygiYWVjM19lcmxlX2NvcnJlY3Rpb25fZmFj
dG9yIiwgZmFjdG9yKTsKKyAgfQorICBkYXRhX2R1bXBlci0+RHVtcFJhdygiYWVjM19lcmxlIiwg
ZXJsZV8pOworfQorCisvLyBFc3RpbWF0ZXMgZm9yIGVhY2ggYmFuZCB0aGUgc21hbGxlc3QgbnVt
YmVyIG9mIHNlY3Rpb25zIGluIHRoZSBmaWx0ZXIgdGhhdAorLy8gdG9nZXRoZXIgY29uc3RpdHV0
ZSA5MCUgb2YgdGhlIGVzdGltYXRlZCBlY2hvIGVuZXJneS4KK3ZvaWQgU2lnbmFsRGVwZW5kZW50
RXJsZUVzdGltYXRvcjo6Q29tcHV0ZU51bWJlck9mQWN0aXZlRmlsdGVyU2VjdGlvbnMoCisgICAg
Y29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+JgorICAgICAgICBmaWx0ZXJf
ZnJlcXVlbmN5X3Jlc3BvbnNlLAorICAgIHJ0Yzo6QXJyYXlWaWV3PHNpemVfdD4gbl9hY3RpdmVf
ZmlsdGVyX3NlY3Rpb25zKSB7CisgIFJUQ19EQ0hFQ0tfR1QobnVtX3NlY3Rpb25zXywgMSk7Cisg
IC8vIENvbXB1dGVzIGFuIGFwcHJveGltYXRpb24gb2YgdGhlIHBvd2VyIHNwZWN0cnVtIGlmIHRo
ZSBmaWx0ZXIgd291bGQgaGF2ZQorICAvLyBiZWVuIGxpbWl0ZWQgdG8gYSBjZXJ0YWluIG51bWJl
ciBvZiBmaWx0ZXIgc2VjdGlvbnMuCisgIENvbXB1dGVFY2hvRXN0aW1hdGVQZXJGaWx0ZXJTZWN0
aW9uKHJlbmRlcl9idWZmZXIsIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UpOworICAvLyBGb3Ig
ZWFjaCBiYW5kLCBjb21wdXRlcyB0aGUgbnVtYmVyIG9mIGZpbHRlciBzZWN0aW9ucyB0aGF0IGFy
ZSBuZWVkZWQgZm9yCisgIC8vIGFjaGlldmluZyB0aGUgOTAgJSBlbmVyZ3kgaW4gdGhlIGVjaG8g
ZXN0aW1hdGUuCisgIENvbXB1dGVBY3RpdmVGaWx0ZXJTZWN0aW9ucyhuX2FjdGl2ZV9maWx0ZXJf
c2VjdGlvbnMpOworfQorCit2b2lkIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OlVwZGF0
ZUNvcnJlY3Rpb25GYWN0b3JzKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwK
KyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWTIsCisgICAgcnRjOjpBcnJheVZpZXc8
Y29uc3QgZmxvYXQ+IEUyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHNpemVfdD4gbl9hY3Rp
dmVfc2VjdGlvbnMpIHsKKyAgY29uc3RleHByIGZsb2F0IGtYMkJhbmRFbmVyZ3lUaHJlc2hvbGQg
PSA0NDAxNTA2OC4wZjsKKyAgY29uc3RleHByIGZsb2F0IGtTbXRoQ29uc3RhbnREZWNyZWFzZXMg
PSAwLjFmOworICBjb25zdGV4cHIgZmxvYXQga1NtdGhDb25zdGFudEluY3JlYXNlcyA9IGtTbXRo
Q29uc3RhbnREZWNyZWFzZXMgLyAyLmY7CisgIGF1dG8gc3ViYmFuZF9wb3dlcnMgPSBbXShydGM6
OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcG93ZXJfc3BlY3RydW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OkFycmF5VmlldzxmbG9hdD4gcG93ZXJfc3BlY3RydW1fc3ViYmFuZHMp
IHsKKyAgICBmb3IgKHNpemVfdCBzdWJiYW5kID0gMDsgc3ViYmFuZCA8IGtTdWJiYW5kczsgKytz
dWJiYW5kKSB7CisgICAgICBSVENfRENIRUNLX0xFKGtCYW5kQm91bmRhcmllc1tzdWJiYW5kICsg
MV0sIHBvd2VyX3NwZWN0cnVtLnNpemUoKSk7CisgICAgICBwb3dlcl9zcGVjdHJ1bV9zdWJiYW5k
c1tzdWJiYW5kXSA9IHN0ZDo6YWNjdW11bGF0ZSgKKyAgICAgICAgICBwb3dlcl9zcGVjdHJ1bS5i
ZWdpbigpICsga0JhbmRCb3VuZGFyaWVzW3N1YmJhbmRdLAorICAgICAgICAgIHBvd2VyX3NwZWN0
cnVtLmJlZ2luKCkgKyBrQmFuZEJvdW5kYXJpZXNbc3ViYmFuZCArIDFdLCAwLmYpOworICAgIH0K
KyAgfTsKKworICBzdGQ6OmFycmF5PGZsb2F0LCBrU3ViYmFuZHM+IFgyX3N1YmJhbmRzLCBFMl9z
dWJiYW5kcywgWTJfc3ViYmFuZHM7CisgIHN1YmJhbmRfcG93ZXJzKFgyLCBYMl9zdWJiYW5kcyk7
CisgIHN1YmJhbmRfcG93ZXJzKEUyLCBFMl9zdWJiYW5kcyk7CisgIHN1YmJhbmRfcG93ZXJzKFky
LCBZMl9zdWJiYW5kcyk7CisgIHN0ZDo6YXJyYXk8c2l6ZV90LCBrU3ViYmFuZHM+IGlkeF9zdWJi
YW5kczsKKyAgZm9yIChzaXplX3Qgc3ViYmFuZCA9IDA7IHN1YmJhbmQgPCBrU3ViYmFuZHM7ICsr
c3ViYmFuZCkgeworICAgIC8vIFdoZW4gYWdncmVnYXRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUg
c2VjdGlvbnMgaW4gdGhlIGZpbHRlciBmb3IKKyAgICAvLyBkaWZmZXJlbnQgYmFuZHMgd2UgY2hv
b3NlIHRvIHRha2UgdGhlIG1pbmltdW0gb2YgYWxsIG9mIHRoZW0uIEFzIGFuCisgICAgLy8gZXhh
bXBsZSwgaWYgZm9yIG9uZSBvZiB0aGUgYmFuZHMgaXQgaXMgdGhlIGRpcmVjdCBwYXRoIGl0cyBt
YWluCisgICAgLy8gY29udHJpYnV0b3IgdG8gdGhlIGZpbmFsIGVjaG8gZXN0aW1hdGUsIHdlIGNv
bnNpZGVyIHRoZSBkaXJlY3QgcGF0aCBpcworICAgIC8vIGFzIHdlbGwgdGhlIG1haW4gY29udHJp
YnV0b3IgZm9yIHRoZSBzdWJiYW5kIHRoYXQgY29udGFpbnMgdGhhdAorICAgIC8vIHBhcnRpY3Vs
YXIgYmFuZC4gVGhhdCBhZ2dyZWdhdGUgbnVtYmVyIG9mIHNlY3Rpb25zIHdpbGwgYmUgbGF0ZXIg
dXNlZCBhcworICAgIC8vIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBlcmxlIGVzdGltYXRvciB0aGF0
IG5lZWRzIHRvIGJlIHVwZGF0ZWQuCisgICAgUlRDX0RDSEVDS19MRShrQmFuZEJvdW5kYXJpZXNb
c3ViYmFuZCArIDFdLCBuX2FjdGl2ZV9zZWN0aW9ucy5zaXplKCkpOworICAgIGlkeF9zdWJiYW5k
c1tzdWJiYW5kXSA9ICpzdGQ6Om1pbl9lbGVtZW50KAorICAgICAgICBuX2FjdGl2ZV9zZWN0aW9u
cy5iZWdpbigpICsga0JhbmRCb3VuZGFyaWVzW3N1YmJhbmRdLAorICAgICAgICBuX2FjdGl2ZV9z
ZWN0aW9ucy5iZWdpbigpICsga0JhbmRCb3VuZGFyaWVzW3N1YmJhbmQgKyAxXSk7CisgIH0KKwor
ICBzdGQ6OmFycmF5PGZsb2F0LCBrU3ViYmFuZHM+IG5ld19lcmxlOworICBzdGQ6OmFycmF5PGJv
b2wsIGtTdWJiYW5kcz4gaXNfZXJsZV91cGRhdGVkOworICBpc19lcmxlX3VwZGF0ZWQuZmlsbChm
YWxzZSk7CisgIG5ld19lcmxlLmZpbGwoMC5mKTsKKyAgZm9yIChzaXplX3Qgc3ViYmFuZCA9IDA7
IHN1YmJhbmQgPCBrU3ViYmFuZHM7ICsrc3ViYmFuZCkgeworICAgIGlmIChYMl9zdWJiYW5kc1tz
dWJiYW5kXSA+IGtYMkJhbmRFbmVyZ3lUaHJlc2hvbGQgJiYKKyAgICAgICAgRTJfc3ViYmFuZHNb
c3ViYmFuZF0gPiAwKSB7CisgICAgICBuZXdfZXJsZVtzdWJiYW5kXSA9IFkyX3N1YmJhbmRzW3N1
YmJhbmRdIC8gRTJfc3ViYmFuZHNbc3ViYmFuZF07CisgICAgICBSVENfRENIRUNLX0dUKG5ld19l
cmxlW3N1YmJhbmRdLCAwKTsKKyAgICAgIGlzX2VybGVfdXBkYXRlZFtzdWJiYW5kXSA9IHRydWU7
CisgICAgICArK251bV91cGRhdGVzX1tzdWJiYW5kXTsKKyAgICB9CisgIH0KKworICBmb3IgKHNp
emVfdCBzdWJiYW5kID0gMDsgc3ViYmFuZCA8IGtTdWJiYW5kczsgKytzdWJiYW5kKSB7CisgICAg
Y29uc3Qgc2l6ZV90IGlkeCA9IGlkeF9zdWJiYW5kc1tzdWJiYW5kXTsKKyAgICBSVENfRENIRUNL
X0xUKGlkeCwgZXJsZV9lc3RpbWF0b3JzXy5zaXplKCkpOworICAgIGZsb2F0IGFscGhhID0gbmV3
X2VybGVbc3ViYmFuZF0gPiBlcmxlX2VzdGltYXRvcnNfW2lkeF1bc3ViYmFuZF0KKyAgICAgICAg
ICAgICAgICAgICAgICA/IGtTbXRoQ29uc3RhbnRJbmNyZWFzZXMKKyAgICAgICAgICAgICAgICAg
ICAgICA6IGtTbXRoQ29uc3RhbnREZWNyZWFzZXM7CisgICAgYWxwaGEgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oaXNfZXJsZV91cGRhdGVkW3N1YmJhbmRdKSAqIGFscGhhOworICAgIGVybGVfZXN0aW1h
dG9yc19baWR4XVtzdWJiYW5kXSArPQorICAgICAgICBhbHBoYSAqIChuZXdfZXJsZVtzdWJiYW5k
XSAtIGVybGVfZXN0aW1hdG9yc19baWR4XVtzdWJiYW5kXSk7CisgICAgZXJsZV9lc3RpbWF0b3Jz
X1tpZHhdW3N1YmJhbmRdID0gcnRjOjpTYWZlQ2xhbXAoCisgICAgICAgIGVybGVfZXN0aW1hdG9y
c19baWR4XVtzdWJiYW5kXSwgbWluX2VybGVfLCBtYXhfZXJsZV9bc3ViYmFuZF0pOworICB9CisK
KyAgZm9yIChzaXplX3Qgc3ViYmFuZCA9IDA7IHN1YmJhbmQgPCBrU3ViYmFuZHM7ICsrc3ViYmFu
ZCkgeworICAgIGZsb2F0IGFscGhhID0gbmV3X2VybGVbc3ViYmFuZF0gPiBlcmxlX3JlZl9bc3Vi
YmFuZF0KKyAgICAgICAgICAgICAgICAgICAgICA/IGtTbXRoQ29uc3RhbnRJbmNyZWFzZXMKKyAg
ICAgICAgICAgICAgICAgICAgICA6IGtTbXRoQ29uc3RhbnREZWNyZWFzZXM7CisgICAgYWxwaGEg
PSBzdGF0aWNfY2FzdDxmbG9hdD4oaXNfZXJsZV91cGRhdGVkW3N1YmJhbmRdKSAqIGFscGhhOwor
ICAgIGVybGVfcmVmX1tzdWJiYW5kXSArPSBhbHBoYSAqIChuZXdfZXJsZVtzdWJiYW5kXSAtIGVy
bGVfcmVmX1tzdWJiYW5kXSk7CisgICAgZXJsZV9yZWZfW3N1YmJhbmRdID0KKyAgICAgICAgcnRj
OjpTYWZlQ2xhbXAoZXJsZV9yZWZfW3N1YmJhbmRdLCBtaW5fZXJsZV8sIG1heF9lcmxlX1tzdWJi
YW5kXSk7CisgIH0KKworICBmb3IgKHNpemVfdCBzdWJiYW5kID0gMDsgc3ViYmFuZCA8IGtTdWJi
YW5kczsgKytzdWJiYW5kKSB7CisgICAgY29uc3RleHByIGludCBrTnVtVXBkYXRlVGhyID0gNTA7
CisgICAgaWYgKGlzX2VybGVfdXBkYXRlZFtzdWJiYW5kXSAmJiBudW1fdXBkYXRlc19bc3ViYmFu
ZF0gPiBrTnVtVXBkYXRlVGhyKSB7CisgICAgICBjb25zdCBzaXplX3QgaWR4ID0gaWR4X3N1YmJh
bmRzW3N1YmJhbmRdOworICAgICAgUlRDX0RDSEVDS19HVChlcmxlX3JlZl9bc3ViYmFuZF0sIDAu
Zik7CisgICAgICAvLyBDb21wdXRlcyB0aGUgcmF0aW8gYmV0d2VlbiB0aGUgZXJsZSB0aGF0IGlz
IHVwZGF0ZWQgdXNpbmcgYWxsIHRoZQorICAgICAgLy8gcG9pbnRzIGFuZCB0aGUgZXJsZSB0aGF0
IGlzIHVwZGF0ZWQgb25seSBvbiBzaWduYWxzIHRoYXQgc2hhcmUgdGhlCisgICAgICAvLyBzYW1l
IG51bWJlciBvZiBhY3RpdmUgZmlsdGVyIHNlY3Rpb25zLgorICAgICAgZmxvYXQgbmV3X2NvcnJl
Y3Rpb25fZmFjdG9yID0KKyAgICAgICAgICBlcmxlX2VzdGltYXRvcnNfW2lkeF1bc3ViYmFuZF0g
LyBlcmxlX3JlZl9bc3ViYmFuZF07CisKKyAgICAgIGNvcnJlY3Rpb25fZmFjdG9yc19baWR4XVtz
dWJiYW5kXSArPQorICAgICAgICAgIDAuMWYgKiAobmV3X2NvcnJlY3Rpb25fZmFjdG9yIC0gY29y
cmVjdGlvbl9mYWN0b3JzX1tpZHhdW3N1YmJhbmRdKTsKKyAgICB9CisgIH0KK30KKwordm9pZCBT
aWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjpDb21wdXRlRWNob0VzdGltYXRlUGVyRmlsdGVy
U2VjdGlvbigKKyAgICBjb25zdCBSZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPj4mCisg
ICAgICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UpIHsKKyAgY29uc3QgVmVjdG9yQnVmZmVy
JiBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVyID0KKyAgICAgIHJlbmRlcl9idWZmZXIuR2V0U3BlY3Ry
dW1CdWZmZXIoKTsKKworICBSVENfRENIRUNLX0VRKFMyX3NlY3Rpb25fYWNjdW1fLnNpemUoKSAr
IDEsCisgICAgICAgICAgICAgICAgc2VjdGlvbl9ib3VuZGFyaWVzX2Jsb2Nrc18uc2l6ZSgpKTsK
KyAgc2l6ZV90IGlkeF9yZW5kZXIgPSByZW5kZXJfYnVmZmVyLlBvc2l0aW9uKCk7CisgIGlkeF9y
ZW5kZXIgPSBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVyLk9mZnNldEluZGV4KAorICAgICAgaWR4X3Jl
bmRlciwgc2VjdGlvbl9ib3VuZGFyaWVzX2Jsb2Nrc19bMF0pOworCisgIGZvciAoc2l6ZV90IHNl
Y3Rpb24gPSAwOyBzZWN0aW9uIDwgbnVtX3NlY3Rpb25zXzsgKytzZWN0aW9uKSB7CisgICAgc3Rk
OjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBYMl9zZWN0aW9uOworICAgIHN0ZDo6
YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gSDJfc2VjdGlvbjsKKyAgICBYMl9zZWN0
aW9uLmZpbGwoMC5mKTsKKyAgICBIMl9zZWN0aW9uLmZpbGwoMC5mKTsKKyAgICBmb3IgKHNpemVf
dCBibG9jayA9IHNlY3Rpb25fYm91bmRhcmllc19ibG9ja3NfW3NlY3Rpb25dOworICAgICAgICAg
YmxvY2sgPCBzZWN0aW9uX2JvdW5kYXJpZXNfYmxvY2tzX1tzZWN0aW9uICsgMV07ICsrYmxvY2sp
IHsKKyAgICAgIHN0ZDo6dHJhbnNmb3JtKFgyX3NlY3Rpb24uYmVnaW4oKSwgWDJfc2VjdGlvbi5l
bmQoKSwKKyAgICAgICAgICAgICAgICAgICAgIHNwZWN0cnVtX3JlbmRlcl9idWZmZXIuYnVmZmVy
W2lkeF9yZW5kZXJdLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgICBYMl9zZWN0aW9uLmJl
Z2luKCksIHN0ZDo6cGx1czxmbG9hdD4oKSk7CisgICAgICBzdGQ6OnRyYW5zZm9ybShIMl9zZWN0
aW9uLmJlZ2luKCksIEgyX3NlY3Rpb24uZW5kKCksCisgICAgICAgICAgICAgICAgICAgICBmaWx0
ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlW2Jsb2NrXS5iZWdpbigpLAorICAgICAgICAgICAgICAgICAg
ICAgSDJfc2VjdGlvbi5iZWdpbigpLCBzdGQ6OnBsdXM8ZmxvYXQ+KCkpOworICAgICAgaWR4X3Jl
bmRlciA9IHNwZWN0cnVtX3JlbmRlcl9idWZmZXIuSW5jSW5kZXgoaWR4X3JlbmRlcik7CisgICAg
fQorCisgICAgc3RkOjp0cmFuc2Zvcm0oWDJfc2VjdGlvbi5iZWdpbigpLCBYMl9zZWN0aW9uLmVu
ZCgpLCBIMl9zZWN0aW9uLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgUzJfc2VjdGlvbl9h
Y2N1bV9bc2VjdGlvbl0uYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6Om11bHRpcGxp
ZXM8ZmxvYXQ+KCkpOworICB9CisKKyAgZm9yIChzaXplX3Qgc2VjdGlvbiA9IDE7IHNlY3Rpb24g
PCBudW1fc2VjdGlvbnNfOyArK3NlY3Rpb24pIHsKKyAgICBzdGQ6OnRyYW5zZm9ybShTMl9zZWN0
aW9uX2FjY3VtX1tzZWN0aW9uIC0gMV0uYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICBTMl9z
ZWN0aW9uX2FjY3VtX1tzZWN0aW9uIC0gMV0uZW5kKCksCisgICAgICAgICAgICAgICAgICAgUzJf
c2VjdGlvbl9hY2N1bV9bc2VjdGlvbl0uYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICBTMl9z
ZWN0aW9uX2FjY3VtX1tzZWN0aW9uXS5iZWdpbigpLCBzdGQ6OnBsdXM8ZmxvYXQ+KCkpOworICB9
Cit9CisKK3ZvaWQgU2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvcjo6Q29tcHV0ZUFjdGl2ZUZp
bHRlclNlY3Rpb25zKAorICAgIHJ0Yzo6QXJyYXlWaWV3PHNpemVfdD4gbnVtYmVyX2FjdGl2ZV9m
aWx0ZXJfc2VjdGlvbnMpIGNvbnN0IHsKKyAgc3RkOjpmaWxsKG51bWJlcl9hY3RpdmVfZmlsdGVy
X3NlY3Rpb25zLmJlZ2luKCksCisgICAgICAgICAgICBudW1iZXJfYWN0aXZlX2ZpbHRlcl9zZWN0
aW9ucy5lbmQoKSwgMCk7CisgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwga0ZmdExlbmd0aEJ5MlBs
dXMxOyArK2spIHsKKyAgICBzaXplX3Qgc2VjdGlvbiA9IG51bV9zZWN0aW9uc187CisgICAgZmxv
YXQgdGFyZ2V0ID0gMC45ZiAqIFMyX3NlY3Rpb25fYWNjdW1fW251bV9zZWN0aW9uc18gLSAxXVtr
XTsKKyAgICB3aGlsZSAoc2VjdGlvbiA+IDAgJiYgUzJfc2VjdGlvbl9hY2N1bV9bc2VjdGlvbiAt
IDFdW2tdID49IHRhcmdldCkgeworICAgICAgbnVtYmVyX2FjdGl2ZV9maWx0ZXJfc2VjdGlvbnNb
a10gPSAtLXNlY3Rpb247CisgICAgfQorICB9Cit9Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9y
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDhiNTZjMmIyMGMzODJkZDIxOWMwZGQyN2FkNjUzNWNiZTQ5NWNkNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0
b3IuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TSUdOQUxfREVQRU5ERU5UX0VSTEVfRVNUSU1B
VE9SX0hfCisjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1NJR05BTF9ERVBF
TkRFTlRfRVJMRV9FU1RJTUFUT1JfSF8KKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS9hdWRp
by9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CisvLyBUaGlzIGNsYXNzIGVzdGltYXRlcyB0aGUgZGVwZW5kZW5jeSBvZiB0aGUgRXJsZSB0byB0
aGUgaW5wdXQgc2lnbmFsLiBCeQorLy8gbG9va2luZyBhdCB0aGUgaW5wdXQgc2lnbmFsLCBhbiBl
c3RpbWF0aW9uIG9uIHdoZXRoZXIgdGhlIGN1cnJlbnQgZWNobworLy8gZXN0aW1hdGUgaXMgZHVl
IHRvIHRoZSBkaXJlY3QgcGF0aCBvciB0byBhIG1vcmUgcmV2ZXJiZXJhbnQgb25lIGlzIHBlcmZv
cm1lZC4KKy8vIE9uY2UgdGhhdCBlc3RpbWF0aW9uIGlzIGRvbmUsIGl0IGlzIHBvc3NpYmxlIHRv
IHJlZmluZSB0aGUgYXZlcmFnZSBFcmxlIHRoYXQKKy8vIHRoaXMgY2xhc3MgcmVjZWl2ZSBhcyBh
biBpbnB1dC4KK2NsYXNzIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3IgeworIHB1YmxpYzoK
KyAgZXhwbGljaXQgU2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvcihjb25zdCBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZyYgY29uZmlnKTsKKworICB+U2lnbmFsRGVwZW5kZW50RXJsZUVzdGltYXRvcigp
OworCisgIHZvaWQgUmVzZXQoKTsKKworICAvLyBSZXR1cm5zIHRoZSBFcmxlIHBlciBmcmVxdWVu
Y3kgc3ViYmFuZC4KKyAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMx
PiYgRXJsZSgpIGNvbnN0IHsgcmV0dXJuIGVybGVfOyB9CisKKyAgLy8gVXBkYXRlcyB0aGUgRXJs
ZSBlc3RpbWF0ZS4gVGhlIEVybGUgdGhhdCBpcyBwYXNzZWQgYXMgYW4gaW5wdXQgaXMgcmVxdWly
ZWQKKyAgLy8gdG8gYmUgYW4gZXN0aW1hdGlvbiBvZiB0aGUgYXZlcmFnZSBFcmxlIGFjaGlldmVk
IGJ5IHRoZSBsaW5lYXIgZmlsdGVyLgorICB2b2lkIFVwZGF0ZShjb25zdCBSZW5kZXJCdWZmZXIm
IHJlbmRlcl9idWZmZXIsCisgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6YXJy
YXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+JgorICAgICAgICAgICAgICAgICAgZmlsdGVy
X2ZyZXF1ZW5jeV9yZXNwb25zZSwKKyAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qg
ZmxvYXQ+IFgyLAorICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWTIs
CisgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBFMiwKKyAgICAgICAg
ICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGF2ZXJhZ2VfZXJsZSwKKyAgICAgICAg
ICAgICAgYm9vbCBjb252ZXJnZWRfZmlsdGVyKTsKKworICB2b2lkIER1bXAoY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPEFwbURhdGFEdW1wZXI+JiBkYXRhX2R1bXBlcikgY29uc3Q7CisKKyAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3Qga1N1YmJhbmRzID0gNjsKKworIHByaXZhdGU6CisgIHZvaWQgQ29t
cHV0ZU51bWJlck9mQWN0aXZlRmlsdGVyU2VjdGlvbnMoCisgICAgICBjb25zdCBSZW5kZXJCdWZm
ZXImIHJlbmRlcl9idWZmZXIsCisgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OmFycmF5PGZs
b2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAgICAgICBmaWx0ZXJfZnJlcXVlbmN5X3Jl
c3BvbnNlLAorICAgICAgcnRjOjpBcnJheVZpZXc8c2l6ZV90PiBuX2FjdGl2ZV9maWx0ZXJfc2Vj
dGlvbnMpOworCisgIHZvaWQgVXBkYXRlQ29ycmVjdGlvbkZhY3RvcnMocnRjOjpBcnJheVZpZXc8
Y29uc3QgZmxvYXQ+IFgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IGZsb2F0PiBZMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gRTIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qgc2l6ZV90PiBuX2FjdGl2ZV9zZWN0aW9ucyk7CisK
KyAgdm9pZCBDb21wdXRlRWNob0VzdGltYXRlUGVyRmlsdGVyU2VjdGlvbigKKyAgICAgIGNvbnN0
IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKKyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+JgorICAgICAgICAgIGZpbHRlcl9m
cmVxdWVuY3lfcmVzcG9uc2UpOworCisgIHZvaWQgQ29tcHV0ZUFjdGl2ZUZpbHRlclNlY3Rpb25z
KAorICAgICAgcnRjOjpBcnJheVZpZXc8c2l6ZV90PiBudW1iZXJfYWN0aXZlX2ZpbHRlcl9zZWN0
aW9ucykgY29uc3Q7CisKKyAgY29uc3QgZmxvYXQgbWluX2VybGVfOworICBjb25zdCBzaXplX3Qg
bnVtX3NlY3Rpb25zXzsKKyAgY29uc3Qgc2l6ZV90IG51bV9ibG9ja3NfOworICBjb25zdCBzaXpl
X3QgZGVsYXlfaGVhZHJvb21fYmxvY2tzXzsKKyAgY29uc3Qgc3RkOjphcnJheTxzaXplX3QsIGtG
ZnRMZW5ndGhCeTJQbHVzMT4gYmFuZF90b19zdWJiYW5kXzsKKyAgY29uc3Qgc3RkOjphcnJheTxm
bG9hdCwga1N1YmJhbmRzPiBtYXhfZXJsZV87CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4g
c2VjdGlvbl9ib3VuZGFyaWVzX2Jsb2Nrc187CisgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5n
dGhCeTJQbHVzMT4gZXJsZV87CisgIHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4+IFMyX3NlY3Rpb25fYWNjdW1fOworICBzdGQ6OnZlY3RvcjxzdGQ6OmFy
cmF5PGZsb2F0LCBrU3ViYmFuZHM+PiBlcmxlX2VzdGltYXRvcnNfOworICBzdGQ6OmFycmF5PGZs
b2F0LCBrU3ViYmFuZHM+IGVybGVfcmVmXzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9h
dCwga1N1YmJhbmRzPj4gY29ycmVjdGlvbl9mYWN0b3JzXzsKKyAgc3RkOjphcnJheTxpbnQsIGtT
dWJiYW5kcz4gbnVtX3VwZGF0ZXNfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisj
ZW5kaWYgIC8vIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1NJR05BTF9ERVBFTkRFTlRf
RVJMRV9FU1RJTUFUT1JfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NpZ25hbF9kZXBl
bmRlbnRfZXJsZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxf
ZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlYzYwNWY3
YWJmMDI4NWQwMzU1MmIyYzExZmIzYTUzMjI2OThhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCkBA
IC0wLDAgKzEsMTU1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3Iu
aCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRl
IDxzdHJpbmc+CisKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZmZXIu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlf
YnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgor
I2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK25hbWVzcGFj
ZSB7CisKK3ZvaWQgR2V0QWN0aXZlRnJhbWUocnRjOjpBcnJheVZpZXc8ZmxvYXQ+IHgpIHsKKyAg
Y29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0Jsb2NrU2l6ZT4gZnJhbWUgPSB7CisgICAgICA3NDU5
Ljg4LCAxNzIwOS42LCAxNzM4MywgICAyMDc2OC45LCAxNjgxNi43LCAxODM4Ni4zLCA0NDkyLjgz
LCA5Njc1Ljg1LAorICAgICAgNjY2NS41MiwgMTQ4MDguNiwgOTM0Mi4zLCAgNzQ4My4yOCwgMTky
NjEuNywgNDE0NS45OCwgMTYyMi4xOCwgMTM0NzUuMiwKKyAgICAgIDcxNjYuMzIsIDY4NTYuNjEs
IDIxOTM3LCAgIDcyNjMuMTQsIDk1NjkuMDcsIDE0OTE5LCAgIDg0MTMuMzIsIDc1NTEuODksCisg
ICAgICA3ODQ4LjY1LCA2MDExLjI3LCAxMzA4MC42LCAxNTg2NS4yLCAxMjY1NiwgICAxNzQ1OS42
LCA0MjYzLjkzLCA0NTAzLjAzLAorICAgICAgOTMxMS43OSwgMjEwOTUuOCwgMTI2NTcuOSwgMTM5
MDYuNiwgMTkyNjcuMiwgMTEzMzguMSwgMTY4MjguOSwgMTE1MDEuNiwKKyAgICAgIDExNDA1LCAg
IDE1MDMxLjQsIDE0NTQxLjYsIDE5NzY1LjUsIDE4MzQ2LjMsIDE5MzUwLjIsIDMxNTcuNDcsIDE4
MDk1LjgsCisgICAgICAxNzQzLjY4LCAyMTMyOC4yLCAxOTcyNy41LCA3Mjk1LjE2LCAxMDMzMi40
LCAxMTA1NS41LCAyMDEwNy40LCAxNDcwOC40LAorICAgICAgMTI0MTYuMiwgMTY0MzQsICAgMjQ1
NC42OSwgOTg0MC44LCAgNjg2Ny4yMywgMTYxNS43NSwgNjA1OS45LCAgODM5NC4xOX07CisgIFJU
Q19EQ0hFQ0tfR0UoeC5zaXplKCksIGZyYW1lLnNpemUoKSk7CisgIHN0ZDo6Y29weShmcmFtZS5i
ZWdpbigpLCBmcmFtZS5lbmQoKSwgeC5iZWdpbigpKTsKK30KKworY2xhc3MgVGVzdElucHV0cyB7
CisgcHVibGljOgorICBleHBsaWNpdCBUZXN0SW5wdXRzKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29u
ZmlnJiBjZmcpOworICB+VGVzdElucHV0cygpOworICBjb25zdCBSZW5kZXJCdWZmZXImIEdldFJl
bmRlckJ1ZmZlcigpIHsgcmV0dXJuICpyZW5kZXJfYnVmZmVyXzsgfQorICBydGM6OkFycmF5Vmll
dzxjb25zdCBmbG9hdD4gR2V0WDIoKSB7IHJldHVybiBYMl87IH0KKyAgcnRjOjpBcnJheVZpZXc8
Y29uc3QgZmxvYXQ+IEdldFkyKCkgeyByZXR1cm4gWTJfOyB9CisgIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IGZsb2F0PiBHZXRFMigpIHsgcmV0dXJuIEUyXzsgfQorICBzdGQ6OnZlY3RvcjxzdGQ6OmFy
cmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiBHZXRIMigpIHsgcmV0dXJuIEgyXzsgfQor
ICB2b2lkIFVwZGF0ZSgpOworCisgcHJpdmF0ZToKKyAgdm9pZCBVcGRhdGVDdXJyZW50UG93ZXJT
cGVjdHJhKCk7CisgIGludCBuXyA9IDA7CisgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1
ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcl87CisgIFJlbmRlckJ1ZmZlciogcmVuZGVyX2J1ZmZl
cl87CisgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gWDJfOworICBzdGQ6
OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFkyXzsKKyAgc3RkOjphcnJheTxmbG9h
dCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBFMl87CisgIHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8Zmxv
YXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+IEgyXzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8
ZmxvYXQ+PiB4XzsKK307CisKK1Rlc3RJbnB1dHM6OlRlc3RJbnB1dHMoY29uc3QgRWNob0NhbmNl
bGxlcjNDb25maWcmIGNmZykKKyAgICA6IHJlbmRlcl9kZWxheV9idWZmZXJfKFJlbmRlckRlbGF5
QnVmZmVyOjpDcmVhdGUyKGNmZywgMSkpLAorICAgICAgSDJfKGNmZy5maWx0ZXIubWFpbi5sZW5n
dGhfYmxvY2tzKSwKKyAgICAgIHhfKDEsIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXplLCAw
LmYpKSB7CisgIHJlbmRlcl9kZWxheV9idWZmZXJfLT5TZXREZWxheSg0KTsKKyAgcmVuZGVyX2J1
ZmZlcl8gPSByZW5kZXJfZGVsYXlfYnVmZmVyXy0+R2V0UmVuZGVyQnVmZmVyKCk7CisgIGZvciAo
YXV0byYgSCA6IEgyXykgeworICAgIEguZmlsbCgwLmYpOworICB9CisgIEgyX1swXS5maWxsKDEu
MGYpOworfQorCitUZXN0SW5wdXRzOjp+VGVzdElucHV0cygpID0gZGVmYXVsdDsKKwordm9pZCBU
ZXN0SW5wdXRzOjpVcGRhdGUoKSB7CisgIGlmIChuXyAlIDIgPT0gMCkgeworICAgIHN0ZDo6Zmls
bCh4X1swXS5iZWdpbigpLCB4X1swXS5lbmQoKSwgMC5mKTsKKyAgfSBlbHNlIHsKKyAgICBHZXRB
Y3RpdmVGcmFtZSh4X1swXSk7CisgIH0KKworICByZW5kZXJfZGVsYXlfYnVmZmVyXy0+SW5zZXJ0
KHhfKTsKKyAgcmVuZGVyX2RlbGF5X2J1ZmZlcl8tPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygp
OworICBVcGRhdGVDdXJyZW50UG93ZXJTcGVjdHJhKCk7CisgICsrbl87Cit9CisKK3ZvaWQgVGVz
dElucHV0czo6VXBkYXRlQ3VycmVudFBvd2VyU3BlY3RyYSgpIHsKKyAgY29uc3QgVmVjdG9yQnVm
ZmVyJiBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVyID0KKyAgICAgIHJlbmRlcl9idWZmZXJfLT5HZXRT
cGVjdHJ1bUJ1ZmZlcigpOworICBzaXplX3QgaWR4ID0gcmVuZGVyX2J1ZmZlcl8tPlBvc2l0aW9u
KCk7CisgIHNpemVfdCBwcmV2X2lkeCA9IHNwZWN0cnVtX3JlbmRlcl9idWZmZXIuT2Zmc2V0SW5k
ZXgoaWR4LCAxKTsKKyAgYXV0byYgWDIgPSBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVyLmJ1ZmZlcltp
ZHhdOworICBhdXRvJiBYMl9wcmV2ID0gc3BlY3RydW1fcmVuZGVyX2J1ZmZlci5idWZmZXJbcHJl
dl9pZHhdOworICBzdGQ6OmNvcHkoWDIuYmVnaW4oKSwgWDIuZW5kKCksIFgyXy5iZWdpbigpKTsK
KyAgUlRDX0RDSEVDS19FUShYMi5zaXplKCksIFkyXy5zaXplKCkpOworICBmb3IgKHNpemVfdCBr
ID0gMDsgayA8IFgyLnNpemUoKTsgKytrKSB7CisgICAgRTJfW2tdID0gMC4wMWYgKiBYMl9wcmV2
W2tdOworICAgIFkyX1trXSA9IFgyW2tdICsgRTJfW2tdOworICB9Cit9CisKK30gIC8vIG5hbWVz
cGFjZQorCitURVNUKFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3IsIFN3ZWVwU2V0dGluZ3Mp
IHsKKyAgRWNob0NhbmNlbGxlcjNDb25maWcgY2ZnOworICBzaXplX3QgbWF4X2xlbmd0aF9ibG9j
a3MgPSA1MDsKKyAgZm9yIChzaXplX3QgYmxvY2tzID0gMDsgYmxvY2tzIDwgbWF4X2xlbmd0aF9i
bG9ja3M7IGJsb2NrcyA9IGJsb2NrcyArIDEwKSB7CisgICAgZm9yIChzaXplX3QgZGVsYXlfaGVh
ZHJvb20gPSAwOyBkZWxheV9oZWFkcm9vbSA8IDU7ICsrZGVsYXlfaGVhZHJvb20pIHsKKyAgICAg
IGZvciAoc2l6ZV90IG51bV9zZWN0aW9ucyA9IDI7IG51bV9zZWN0aW9ucyA8IG1heF9sZW5ndGhf
YmxvY2tzOworICAgICAgICAgICArK251bV9zZWN0aW9ucykgeworICAgICAgICBjZmcuZmlsdGVy
Lm1haW4ubGVuZ3RoX2Jsb2NrcyA9IGJsb2NrczsKKyAgICAgICAgY2ZnLmZpbHRlci5tYWluX2lu
aXRpYWwubGVuZ3RoX2Jsb2NrcyA9CisgICAgICAgICAgICBzdGQ6Om1pbihjZmcuZmlsdGVyLm1h
aW5faW5pdGlhbC5sZW5ndGhfYmxvY2tzLCBibG9ja3MpOworICAgICAgICBjZmcuZGVsYXkuZGVs
YXlfaGVhZHJvb21fYmxvY2tzID0gZGVsYXlfaGVhZHJvb207CisgICAgICAgIGNmZy5lcmxlLm51
bV9zZWN0aW9ucyA9IG51bV9zZWN0aW9uczsKKyAgICAgICAgaWYgKEVjaG9DYW5jZWxsZXIzQ29u
ZmlnOjpWYWxpZGF0ZSgmY2ZnKSkgeworICAgICAgICAgIFNpZ25hbERlcGVuZGVudEVybGVFc3Rp
bWF0b3IgcyhjZmcpOworICAgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4gYXZlcmFnZV9lcmxlOworICAgICAgICAgIGF2ZXJhZ2VfZXJsZS5maWxsKGNmZy5lcmxl
Lm1heF9sKTsKKyAgICAgICAgICBUZXN0SW5wdXRzIGlucHV0cyhjZmcpOworICAgICAgICAgIGZv
ciAoc2l6ZV90IG4gPSAwOyBuIDwgMTA7ICsrbikgeworICAgICAgICAgICAgaW5wdXRzLlVwZGF0
ZSgpOworICAgICAgICAgICAgcy5VcGRhdGUoaW5wdXRzLkdldFJlbmRlckJ1ZmZlcigpLCBpbnB1
dHMuR2V0SDIoKSwgaW5wdXRzLkdldFgyKCksCisgICAgICAgICAgICAgICAgICAgICBpbnB1dHMu
R2V0WTIoKSwgaW5wdXRzLkdldEUyKCksIGF2ZXJhZ2VfZXJsZSwgdHJ1ZSk7CisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9CisKK1RFU1QoU2lnbmFsRGVwZW5k
ZW50RXJsZUVzdGltYXRvciwgTG9uZ2VyUnVuKSB7CisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNm
ZzsKKyAgY2ZnLmZpbHRlci5tYWluLmxlbmd0aF9ibG9ja3MgPSAyOworICBjZmcuZmlsdGVyLm1h
aW5faW5pdGlhbC5sZW5ndGhfYmxvY2tzID0gMTsKKyAgY2ZnLmRlbGF5LmRlbGF5X2hlYWRyb29t
X2Jsb2NrcyA9IDA7CisgIGNmZy5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzID0gMDsK
KyAgY2ZnLmVybGUubnVtX3NlY3Rpb25zID0gMjsKKyAgRVhQRUNUX0VRKEVjaG9DYW5jZWxsZXIz
Q29uZmlnOjpWYWxpZGF0ZSgmY2ZnKSwgdHJ1ZSk7CisgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4gYXZlcmFnZV9lcmxlOworICBhdmVyYWdlX2VybGUuZmlsbChjZmcuZXJs
ZS5tYXhfbCk7CisgIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3IgcyhjZmcpOworICBUZXN0
SW5wdXRzIGlucHV0cyhjZmcpOworICBmb3IgKHNpemVfdCBuID0gMDsgbiA8IDIwMDsgKytuKSB7
CisgICAgaW5wdXRzLlVwZGF0ZSgpOworICAgIHMuVXBkYXRlKGlucHV0cy5HZXRSZW5kZXJCdWZm
ZXIoKSwgaW5wdXRzLkdldEgyKCksIGlucHV0cy5HZXRYMigpLAorICAgICAgICAgICAgIGlucHV0
cy5HZXRZMigpLCBpbnB1dHMuR2V0RTIoKSwgYXZlcmFnZV9lcmxlLCB0cnVlKTsKKyAgfQorfQor
Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9za2V3
X2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdfZXN0aW1hdG9yLmNjCmluZGV4IDMx
MGU0ZTlkZDFkYTIyYzU0MWJhM2EwNzA4YjRhNDRmZWY0YjA1ZmIuLmEyMDk5ZmNkMDEzMDFjMmI5
NTg0ODM2OGE3MzQxZmNkNmQ5ZTc3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdf
ZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdfZXN0aW1hdG9yLmNjCkBAIC0x
MCw3ICsxMCw2IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2tl
d19lc3RpbWF0b3IuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxudW1lcmlj
PgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2tl
d19lc3RpbWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdfZXN0aW1hdG9yLmgKaW5kZXggZmYy
NTI2MDI1YTg3ZmFhZmFmZTY3ZGQwOWMzMGI5Zjc0N2M1MzViYy4uYjA5NDZkODMzZTU0M2E4NzJh
NmFiMjNjN2RkZjAyOGQ5ZWNjYTY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2tld19l
c3RpbWF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9za2V3X2VzdGltYXRvci5oCkBAIC0xMSw2
ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1NLRVdfRVNU
SU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1NLRVdfRVNU
SU1BVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNp
bmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9zdGF0aW9uYXJpdHlfZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3RhdGlvbmFyaXR5
X2VzdGltYXRvci5jYwppbmRleCBlZmVhYmYxMTE3ZjIwOThmNDM0ZjcyODk5NzY1N2E2NDUyOWU4
OGM0Li4yNTEwMGJmZDRhZjU2ZTc0NWM5NWNmZDZkODY2NzZkZjNjN2MyMDgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9zdGF0aW9uYXJpdHlfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3N0YXRpb25hcml0eV9lc3RpbWF0b3IuY2MKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNs
dWRlIDxhcnJheT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmll
dy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9u
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZl
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRh
X2R1bXBlci5oIgpAQCAtNDAsNyArNDEsNiBAQCB2b2lkIFN0YXRpb25hcml0eUVzdGltYXRvcjo6
UmVzZXQoKSB7CiAgIG5vaXNlXy5SZXNldCgpOwogICBoYW5nb3ZlcnNfLmZpbGwoMCk7CiAgIHN0
YXRpb25hcml0eV9mbGFnc18uZmlsbChmYWxzZSk7Ci0gIHJlbmRlcl9yZXZlcmJfLlJlc2V0KCk7
CiB9CiAKIC8vIFVwZGF0ZSBqdXN0IHRoZSBub2lzZSBlc3RpbWF0b3IuIFVzZWZ1bGwgdW50aWwg
dGhlIGRlbGF5IGlzIGtub3duCkBAIC01NCw5ICs1NCw5IEBAIHZvaWQgU3RhdGlvbmFyaXR5RXN0
aW1hdG9yOjpVcGRhdGVOb2lzZUVzdGltYXRvcigKIAogdm9pZCBTdGF0aW9uYXJpdHlFc3RpbWF0
b3I6OlVwZGF0ZVN0YXRpb25hcml0eUZsYWdzKAogICAgIGNvbnN0IFZlY3RvckJ1ZmZlciYgc3Bl
Y3RydW1fYnVmZmVyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZW5kZXJfcmV2
ZXJiX2NvbnRyaWJ1dGlvbl9zcGVjdHJ1bSwKICAgICBpbnQgaWR4X2N1cnJlbnQsCi0gICAgaW50
IG51bV9sb29rYWhlYWQsCi0gICAgZmxvYXQgcmV2ZXJiX2RlY2F5KSB7CisgICAgaW50IG51bV9s
b29rYWhlYWQpIHsKICAgc3RkOjphcnJheTxpbnQsIGtXaW5kb3dMZW5ndGg+IGluZGV4ZXM7CiAg
IGludCBudW1fbG9va2FoZWFkX2JvdW5kZWQgPSBzdGQ6Om1pbihudW1fbG9va2FoZWFkLCBrV2lu
ZG93TGVuZ3RoIC0gMSk7CiAgIGludCBpZHggPSBpZHhfY3VycmVudDsKQEAgLTc5LDEyICs3OSw5
IEBAIHZvaWQgU3RhdGlvbmFyaXR5RXN0aW1hdG9yOjpVcGRhdGVTdGF0aW9uYXJpdHlGbGFncygK
ICAgICAgIHNwZWN0cnVtX2J1ZmZlci5EZWNJbmRleChpbmRleGVzW2tXaW5kb3dMZW5ndGggLSAx
XSksCiAgICAgICBzcGVjdHJ1bV9idWZmZXIuT2Zmc2V0SW5kZXgoaWR4X2N1cnJlbnQsIC0obnVt
X2xvb2thaGVhZF9ib3VuZGVkICsgMSkpKTsKIAotICBpbnQgaWR4X3Bhc3QgPSBzcGVjdHJ1bV9i
dWZmZXIuSW5jSW5kZXgoaWR4X2N1cnJlbnQpOwotICByZW5kZXJfcmV2ZXJiXy5VcGRhdGVSZXZl
cmJDb250cmlidXRpb25zTm9GcmVxU2hhcGluZygKLSAgICAgIHNwZWN0cnVtX2J1ZmZlci5idWZm
ZXJbaWR4X3Bhc3RdLCAxLjBmLCByZXZlcmJfZGVjYXkpOwogICBmb3IgKHNpemVfdCBrID0gMDsg
ayA8IHN0YXRpb25hcml0eV9mbGFnc18uc2l6ZSgpOyArK2spIHsKICAgICBzdGF0aW9uYXJpdHlf
ZmxhZ3NfW2tdID0gRXN0aW1hdGVCYW5kU3RhdGlvbmFyaXR5KAotICAgICAgICBzcGVjdHJ1bV9i
dWZmZXIsIHJlbmRlcl9yZXZlcmJfLkdldFBvd2VyU3BlY3RydW0oKSwgaW5kZXhlcywgayk7Cisg
ICAgICAgIHNwZWN0cnVtX2J1ZmZlciwgcmVuZGVyX3JldmVyYl9jb250cmlidXRpb25fc3BlY3Ry
dW0sIGluZGV4ZXMsIGspOwogICB9CiAgIFVwZGF0ZUhhbmdvdmVyKCk7CiAgIFNtb290aFN0YXRp
b25hcnlQZXJGcmVxKCk7CkBAIC0xMDIsNyArOTksNyBAQCBib29sIFN0YXRpb25hcml0eUVzdGlt
YXRvcjo6SXNCbG9ja1N0YXRpb25hcnkoKSBjb25zdCB7CiAKIGJvb2wgU3RhdGlvbmFyaXR5RXN0
aW1hdG9yOjpFc3RpbWF0ZUJhbmRTdGF0aW9uYXJpdHkoCiAgICAgY29uc3QgVmVjdG9yQnVmZmVy
JiBzcGVjdHJ1bV9idWZmZXIsCi0gICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0
aEJ5MlBsdXMxPiYgcmV2ZXJiLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZXZl
cmIsCiAgICAgY29uc3Qgc3RkOjphcnJheTxpbnQsIGtXaW5kb3dMZW5ndGg+JiBpbmRleGVzLAog
ICAgIHNpemVfdCBiYW5kKSBjb25zdCB7CiAgIGNvbnN0ZXhwciBmbG9hdCBrVGhyU3RhdGlvbmFy
aXR5ID0gMTAuZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N0YXRpb25hcml0eV9lc3Rp
bWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N0YXRpb25hcml0eV9lc3RpbWF0b3IuaAppbmRleCBl
MmM1YTYyNTM0NzFmODQ4NmYxMWJlZTdjNjE5Mzc3NGM1NGFlNmQ5Li43MDQ4NTlhMWZlNzgzYzU5
YzFiOGVlZjc5NDYxYzU1MGYxOWU0MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdGF0
aW9uYXJpdHlfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3RhdGlvbmFyaXR5X2Vz
dGltYXRvci5oCkBAIC0xMSwxOCArMTEsMTkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FFQzNfU1RBVElPTkFSSVRZX0VTVElNQVRPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfQUVDM19TVEFUSU9OQVJJVFlfRVNUSU1BVE9SX0hfCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVk
ZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiICAvLyBrRmZ0TGVuZ3RoQnky
UGx1czEuLi4KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJf
bW9kZWwuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3Jf
YnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogCiBjbGFzcyBBcG1EYXRhRHVtcGVyOworc3RydWN0IFZlY3RvckJ1ZmZlcjsKIAogY2xh
c3MgU3RhdGlvbmFyaXR5RXN0aW1hdG9yIHsKICBwdWJsaWM6CkBAIC0zNywxMCArMzgsMTEgQEAg
Y2xhc3MgU3RhdGlvbmFyaXR5RXN0aW1hdG9yIHsKIAogICAvLyBVcGRhdGUgdGhlIGZsYWcgaW5k
aWNhdGluZyB3aGV0aGVyIHRoaXMgY3VycmVudCBmcmFtZSBpcyBzdGF0aW9uYXJ5LiBGb3IKICAg
Ly8gZ2V0dGluZyBhIG1vcmUgcm9idXN0IGVzdGltYXRpb24sIGl0IGxvb2tzIGF0IGZ1dHVyZSBh
bmQvb3IgcGFzdCBmcmFtZXMuCi0gIHZvaWQgVXBkYXRlU3RhdGlvbmFyaXR5RmxhZ3MoY29uc3Qg
VmVjdG9yQnVmZmVyJiBzcGVjdHJ1bV9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGlkeF9jdXJyZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBudW1fbG9va2FoZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJl
dmVyYl9kZWNheSk7CisgIHZvaWQgVXBkYXRlU3RhdGlvbmFyaXR5RmxhZ3MoCisgICAgICBjb25z
dCBWZWN0b3JCdWZmZXImIHNwZWN0cnVtX2J1ZmZlciwKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IGZsb2F0PiByZW5kZXJfcmV2ZXJiX2NvbnRyaWJ1dGlvbl9zcGVjdHJ1bSwKKyAgICAgIGlu
dCBpZHhfY3VycmVudCwKKyAgICAgIGludCBudW1fbG9va2FoZWFkKTsKIAogICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIGN1cnJlbnQgYmFuZCBpcyBzdGF0aW9uYXJ5LgogICBib29sIElzQmFuZFN0
YXRpb25hcnkoc2l6ZV90IGJhbmQpIGNvbnN0IHsKQEAgLTU3LDExICs1OSwxMCBAQCBjbGFzcyBT
dGF0aW9uYXJpdHlFc3RpbWF0b3IgewogCiAgIC8vIEdldCBhbiBlc3RpbWF0aW9uIG9mIHRoZSBz
dGF0aW9uYXJpdHkgZm9yIHRoZSBjdXJyZW50IGJhbmQgYnkgbG9va2luZwogICAvLyBhdCB0aGUg
cGFzdC9wcmVzZW50L2Z1dHVyZSBhdmFpbGFibGUgZGF0YS4KLSAgYm9vbCBFc3RpbWF0ZUJhbmRT
dGF0aW9uYXJpdHkoCi0gICAgICBjb25zdCBWZWN0b3JCdWZmZXImIHNwZWN0cnVtX2J1ZmZlciwK
LSAgICAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIHJldmVy
YiwKLSAgICAgIGNvbnN0IHN0ZDo6YXJyYXk8aW50LCBrV2luZG93TGVuZ3RoPiYgaW5kZXhlcywK
LSAgICAgIHNpemVfdCBiYW5kKSBjb25zdDsKKyAgYm9vbCBFc3RpbWF0ZUJhbmRTdGF0aW9uYXJp
dHkoY29uc3QgVmVjdG9yQnVmZmVyJiBzcGVjdHJ1bV9idWZmZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZXZlcmIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YXJyYXk8aW50LCBrV2luZG93
TGVuZ3RoPiYgaW5kZXhlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGJhbmQpIGNvbnN0OwogCiAgIC8vIFRydWUgaWYgYWxsIGJhbmRzIGF0IHRoZSBjdXJyZW50IHBv
aW50IGFyZSBzdGF0aW9uYXJ5LgogICBib29sIEFyZUFsbEJhbmRzU3RhdGlvbmFyeSgpOwpAQCAt
MTExLDcgKzExMiw2IEBAIGNsYXNzIFN0YXRpb25hcml0eUVzdGltYXRvciB7CiAgIE5vaXNlU3Bl
Y3RydW0gbm9pc2VfOwogICBzdGQ6OmFycmF5PGludCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBoYW5n
b3ZlcnNfOwogICBzdGQ6OmFycmF5PGJvb2wsIGtGZnRMZW5ndGhCeTJQbHVzMT4gc3RhdGlvbmFy
aXR5X2ZsYWdzXzsKLSAgUmV2ZXJiTW9kZWwgcmVuZGVyX3JldmVyYl87CiB9OwogCiB9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJiYW5kX2VybGVf
ZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3ViYmFuZF9lcmxlX2VzdGltYXRvci5jYwpp
bmRleCBkOGNiN2E3NjMxNWYyNjYyNGExMDY1NDBkNzVlNjlhMzljZWNkNzI1Li45NDUzZTU3Mzlm
MGQ2YTM5MTQzMDg4NzM5YjMxMTg3NWIzNTc5MmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9zdWJiYW5kX2VybGVfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YmJhbmRf
ZXJsZV9lc3RpbWF0b3IuY2MKQEAgLTExLDM1ICsxMSwzOCBAQAogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YmJhbmRfZXJsZV9lc3RpbWF0b3IuaCIKIAogI2luY2x1
ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
IAotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLSNpbmNsdWRlICJhcGkvYXJyYXlf
dmlldy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29t
bW9uLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2Rh
dGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogbmFtZXNwYWNl
IHsKLWNvbnN0ZXhwciBpbnQga1BvaW50c1RvQWNjdW11bGF0ZSA9IDY7CisKIGNvbnN0ZXhwciBm
bG9hdCBrWDJCYW5kRW5lcmd5VGhyZXNob2xkID0gNDQwMTUwNjguMGY7Ci1jb25zdGV4cHIgaW50
IGtFcmxlSG9sZCA9IDEwMDsKLWNvbnN0ZXhwciBpbnQga0Jsb2Nrc0Zvck9uc2V0RGV0ZWN0aW9u
ID0ga0VybGVIb2xkICsgMTUwOworY29uc3RleHByIGludCBrQmxvY2tzVG9Ib2xkRXJsZSA9IDEw
MDsKK2NvbnN0ZXhwciBpbnQga0Jsb2Nrc0Zvck9uc2V0RGV0ZWN0aW9uID0ga0Jsb2Nrc1RvSG9s
ZEVybGUgKyAxNTA7Citjb25zdGV4cHIgaW50IGtQb2ludHNUb0FjY3VtdWxhdGUgPSA2OwogCiBi
b29sIEVuYWJsZUFkYXB0RXJsZU9uTG93UmVuZGVyKCkgewogICByZXR1cm4gIWZpZWxkX3RyaWFs
OjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzQWRhcHRFcmxlT25Mb3dSZW5kZXJLaWxsU3dpdGNoIik7
CiB9CiAKK3N0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gU2V0TWF4RXJsZUJh
bmRzKGZsb2F0IG1heF9lcmxlX2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCBtYXhfZXJsZV9oKSB7CisgIHN0ZDo6YXJyYXk8Zmxv
YXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gbWF4X2VybGU7CisgIHN0ZDo6ZmlsbChtYXhfZXJsZS5i
ZWdpbigpLCBtYXhfZXJsZS5iZWdpbigpICsga0ZmdExlbmd0aEJ5MiAvIDIsIG1heF9lcmxlX2wp
OworICBzdGQ6OmZpbGwobWF4X2VybGUuYmVnaW4oKSArIGtGZnRMZW5ndGhCeTIgLyAyLCBtYXhf
ZXJsZS5lbmQoKSwgbWF4X2VybGVfaCk7CisgIHJldHVybiBtYXhfZXJsZTsKK30KKwogfSAgLy8g
bmFtZXNwYWNlCiAKLVN1YmJhbmRFcmxlRXN0aW1hdG9yOjpTdWJiYW5kRXJsZUVzdGltYXRvcihm
bG9hdCBtaW5fZXJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBtYXhfZXJsZV9sZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBtYXhfZXJsZV9oZikKLSAgICA6IG1pbl9lcmxlXyhtaW5fZXJsZSksCi0g
ICAgICBtYXhfZXJsZV9sZl8obWF4X2VybGVfbGYpLAotICAgICAgbWF4X2VybGVfaGZfKG1heF9l
cmxlX2hmKSwKK1N1YmJhbmRFcmxlRXN0aW1hdG9yOjpTdWJiYW5kRXJsZUVzdGltYXRvcihjb25z
dCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKQorICAgIDogbWluX2VybGVfKGNvbmZpZy5l
cmxlLm1pbiksCisgICAgICBtYXhfZXJsZV8oU2V0TWF4RXJsZUJhbmRzKGNvbmZpZy5lcmxlLm1h
eF9sLCBjb25maWcuZXJsZS5tYXhfaCkpLAogICAgICAgYWRhcHRfb25fbG93X3JlbmRlcl8oRW5h
YmxlQWRhcHRFcmxlT25Mb3dSZW5kZXIoKSkgewogICBSZXNldCgpOwogfQpAQCAtNDksOCArNTIs
OSBAQCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6flN1YmJhbmRFcmxlRXN0aW1hdG9yKCkgPSBkZWZh
dWx0Owogdm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6UmVzZXQoKSB7CiAgIGVybGVfLmZpbGwo
bWluX2VybGVfKTsKICAgZXJsZV9vbnNldHNfLmZpbGwobWluX2VybGVfKTsKLSAgaG9sZF9jb3Vu
dGVyc18uZmlsbCgwKTsKICAgY29taW5nX29uc2V0Xy5maWxsKHRydWUpOworICBob2xkX2NvdW50
ZXJzXy5maWxsKDApOworICBSZXNldEFjY3VtdWxhdGVkU3BlY3RyYSgpOwogfQogCiB2b2lkIFN1
YmJhbmRFcmxlRXN0aW1hdG9yOjpVcGRhdGUocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFgy
LApAQCAtNjIsMTAgKzY2LDggQEAgdm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6VXBkYXRlKHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwKICAgICAvLyBOb3RlIHRoYXQgdGhlIHVzZSBv
ZiB0aGUgY29udmVyZ2VkX2ZpbHRlciBmbGFnIGFscmVhZHkgaW1wb3NlZAogICAgIC8vIGEgbWlu
aW11bSBvZiB0aGUgZXJsZSB0aGF0IGNhbiBiZSBlc3RpbWF0ZWQgYXMgdGhhdCBmbGFnIHdvdWxk
CiAgICAgLy8gYmUgZmFsc2UgaWYgdGhlIGZpbHRlciBpcyBwZXJmb3JtaW5nIHBvb3JseS4KLSAg
ICBjb25zdGV4cHIgc2l6ZV90IGtGZnRMZW5ndGhCeTQgPSBrRmZ0TGVuZ3RoQnkyIC8gMjsKLSAg
ICBVcGRhdGVCYW5kcyhYMiwgWTIsIEUyLCAxLCBrRmZ0TGVuZ3RoQnk0LCBtYXhfZXJsZV9sZl8s
IG9uc2V0X2RldGVjdGlvbik7Ci0gICAgVXBkYXRlQmFuZHMoWDIsIFkyLCBFMiwga0ZmdExlbmd0
aEJ5NCwga0ZmdExlbmd0aEJ5MiwgbWF4X2VybGVfaGZfLAotICAgICAgICAgICAgICAgIG9uc2V0
X2RldGVjdGlvbik7CisgICAgVXBkYXRlQWNjdW11bGF0ZWRTcGVjdHJhKFgyLCBZMiwgRTIpOwor
ICAgIFVwZGF0ZUJhbmRzKG9uc2V0X2RldGVjdGlvbik7CiAgIH0KIAogICBpZiAob25zZXRfZGV0
ZWN0aW9uKSB7CkBAIC03OCw1MyArODAsNDUgQEAgdm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6
VXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwKIAogdm9pZCBTdWJiYW5kRXJs
ZUVzdGltYXRvcjo6RHVtcCgKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8QXBtRGF0YUR1bXBl
cj4mIGRhdGFfZHVtcGVyKSBjb25zdCB7Ci0gIGRhdGFfZHVtcGVyLT5EdW1wUmF3KCJhZWMzX2Vy
bGUiLCBFcmxlKCkpOwogICBkYXRhX2R1bXBlci0+RHVtcFJhdygiYWVjM19lcmxlX29uc2V0Iiwg
RXJsZU9uc2V0cygpKTsKIH0KIAotdm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6VXBkYXRlQmFu
ZHMocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFgyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFkyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxv
YXQ+IEUyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHN0
YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHN0b3As
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBtYXhfZXJsZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgb25zZXRfZGV0ZWN0
aW9uKSB7Ci0gIGF1dG8gZXJsZV9iYW5kX3VwZGF0ZSA9IFtdKGZsb2F0IGVybGVfYmFuZCwgZmxv
YXQgbmV3X2VybGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbG93X3JlbmRl
cl9lbmVyZ3ksIGZsb2F0IGFscGhhX2luYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgYWxwaGFfZGVjLCBmbG9hdCBtaW5fZXJsZSwgZmxvYXQgbWF4X2VybGUpIHsKLSAgICBp
ZiAobmV3X2VybGUgPCBlcmxlX2JhbmQgJiYgbG93X3JlbmRlcl9lbmVyZ3kpIHsKLSAgICAgIC8v
IERlY3JlYXNlcyBhcmUgbm90IGFsbG93ZWQgaWYgbG93IHJlbmRlciBlbmVyZ3kgc2lnbmFscyB3
ZXJlIHVzZWQgZm9yCi0gICAgICAvLyB0aGUgZXJsZSBjb21wdXRhdGlvbi4KLSAgICAgIHJldHVy
biBlcmxlX2JhbmQ7Cit2b2lkIFN1YmJhbmRFcmxlRXN0aW1hdG9yOjpVcGRhdGVCYW5kcyhib29s
IG9uc2V0X2RldGVjdGlvbikgeworICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyPiBu
ZXdfZXJsZTsKKyAgc3RkOjphcnJheTxib29sLCBrRmZ0TGVuZ3RoQnkyPiBpc19lcmxlX3VwZGF0
ZWQ7CisgIGlzX2VybGVfdXBkYXRlZC5maWxsKGZhbHNlKTsKKworICBmb3IgKHNpemVfdCBrID0g
MTsgayA8IGtGZnRMZW5ndGhCeTI7ICsraykgeworICAgIGlmIChhY2N1bV9zcGVjdHJhXy5udW1f
cG9pbnRzX1trXSA9PSBrUG9pbnRzVG9BY2N1bXVsYXRlICYmCisgICAgICAgIGFjY3VtX3NwZWN0
cmFfLkUyX1trXSA+IDAuZikgeworICAgICAgbmV3X2VybGVba10gPSBhY2N1bV9zcGVjdHJhXy5Z
Ml9ba10gLyBhY2N1bV9zcGVjdHJhXy5FMl9ba107CisgICAgICBpc19lcmxlX3VwZGF0ZWRba10g
PSB0cnVlOwogICAgIH0KLSAgICBmbG9hdCBhbHBoYSA9IG5ld19lcmxlID4gZXJsZV9iYW5kID8g
YWxwaGFfaW5jIDogYWxwaGFfZGVjOwotICAgIGZsb2F0IGVybGVfYmFuZF9vdXQgPSBlcmxlX2Jh
bmQ7Ci0gICAgZXJsZV9iYW5kX291dCA9IGVybGVfYmFuZCArIGFscGhhICogKG5ld19lcmxlIC0g
ZXJsZV9iYW5kKTsKLSAgICBlcmxlX2JhbmRfb3V0ID0gcnRjOjpTYWZlQ2xhbXAoZXJsZV9iYW5k
X291dCwgbWluX2VybGUsIG1heF9lcmxlKTsKLSAgICByZXR1cm4gZXJsZV9iYW5kX291dDsKLSAg
fTsKLQotICBmb3IgKHNpemVfdCBrID0gc3RhcnQ7IGsgPCBzdG9wOyArK2spIHsKLSAgICBpZiAo
YWRhcHRfb25fbG93X3JlbmRlcl8gfHwgWDJba10gPiBrWDJCYW5kRW5lcmd5VGhyZXNob2xkKSB7
Ci0gICAgICBib29sIGxvd19yZW5kZXJfZW5lcmd5ID0gZmFsc2U7Ci0gICAgICBhYnNsOjpvcHRp
b25hbDxmbG9hdD4gbmV3X2VybGUgPSBpbnN0YW50YW5lb3VzX2VybGVfLlVwZGF0ZSgKLSAgICAg
ICAgICBYMltrXSwgWTJba10sIEUyW2tdLCBrLCAmbG93X3JlbmRlcl9lbmVyZ3kpOwotICAgICAg
aWYgKG5ld19lcmxlKSB7Ci0gICAgICAgIFJUQ19EQ0hFQ0soYWRhcHRfb25fbG93X3JlbmRlcl8g
fHwgIWxvd19yZW5kZXJfZW5lcmd5KTsKLSAgICAgICAgaWYgKG9uc2V0X2RldGVjdGlvbiAmJiAh
bG93X3JlbmRlcl9lbmVyZ3kpIHsKLSAgICAgICAgICBpZiAoY29taW5nX29uc2V0X1trXSkgewot
ICAgICAgICAgICAgY29taW5nX29uc2V0X1trXSA9IGZhbHNlOwotICAgICAgICAgICAgZXJsZV9v
bnNldHNfW2tdID0gZXJsZV9iYW5kX3VwZGF0ZSgKLSAgICAgICAgICAgICAgICBlcmxlX29uc2V0
c19ba10sIG5ld19lcmxlLnZhbHVlKCksIGxvd19yZW5kZXJfZW5lcmd5LCAwLjE1ZiwKLSAgICAg
ICAgICAgICAgICAwLjNmLCBtaW5fZXJsZV8sIG1heF9lcmxlKTsKLSAgICAgICAgICB9Ci0gICAg
ICAgICAgaG9sZF9jb3VudGVyc19ba10gPSBrQmxvY2tzRm9yT25zZXREZXRlY3Rpb247CisgIH0K
KworICBpZiAob25zZXRfZGV0ZWN0aW9uKSB7CisgICAgZm9yIChzaXplX3QgayA9IDE7IGsgPCBr
RmZ0TGVuZ3RoQnkyOyArK2spIHsKKyAgICAgIGlmIChpc19lcmxlX3VwZGF0ZWRba10gJiYgIWFj
Y3VtX3NwZWN0cmFfLmxvd19yZW5kZXJfZW5lcmd5X1trXSkgeworICAgICAgICBpZiAoY29taW5n
X29uc2V0X1trXSkgeworICAgICAgICAgIGNvbWluZ19vbnNldF9ba10gPSBmYWxzZTsKKyAgICAg
ICAgICBmbG9hdCBhbHBoYSA9IG5ld19lcmxlW2tdIDwgZXJsZV9vbnNldHNfW2tdID8gMC4zZiA6
IDAuMTVmOworICAgICAgICAgIGVybGVfb25zZXRzX1trXSA9IHJ0Yzo6U2FmZUNsYW1wKAorICAg
ICAgICAgICAgICBlcmxlX29uc2V0c19ba10gKyBhbHBoYSAqIChuZXdfZXJsZVtrXSAtIGVybGVf
b25zZXRzX1trXSksCisgICAgICAgICAgICAgIG1pbl9lcmxlXywgbWF4X2VybGVfW2tdKTsKICAg
ICAgICAgfQorICAgICAgICBob2xkX2NvdW50ZXJzX1trXSA9IGtCbG9ja3NGb3JPbnNldERldGVj
dGlvbjsKKyAgICAgIH0KKyAgICB9CisgIH0KIAotICAgICAgICBlcmxlX1trXSA9Ci0gICAgICAg
ICAgICBlcmxlX2JhbmRfdXBkYXRlKGVybGVfW2tdLCBuZXdfZXJsZS52YWx1ZSgpLCBsb3dfcmVu
ZGVyX2VuZXJneSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wNWYsIDAuMWYsIG1p
bl9lcmxlXywgbWF4X2VybGUpOworICBmb3IgKHNpemVfdCBrID0gMTsgayA8IGtGZnRMZW5ndGhC
eTI7ICsraykgeworICAgIGlmIChpc19lcmxlX3VwZGF0ZWRba10pIHsKKyAgICAgIGZsb2F0IGFs
cGhhID0gMC4wNWY7CisgICAgICBpZiAobmV3X2VybGVba10gPCBlcmxlX1trXSkgeworICAgICAg
ICBhbHBoYSA9IGFjY3VtX3NwZWN0cmFfLmxvd19yZW5kZXJfZW5lcmd5X1trXSA/IDAuZiA6IDAu
MWY7CiAgICAgICB9CisgICAgICBlcmxlX1trXSA9IHJ0Yzo6U2FmZUNsYW1wKGVybGVfW2tdICsg
YWxwaGEgKiAobmV3X2VybGVba10gLSBlcmxlX1trXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1pbl9lcmxlXywgbWF4X2VybGVfW2tdKTsKICAgICB9CiAgIH0KIH0KQEAgLTEz
Miw3ICsxMjYsNyBAQCB2b2lkIFN1YmJhbmRFcmxlRXN0aW1hdG9yOjpVcGRhdGVCYW5kcyhydGM6
OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWDIsCiB2b2lkIFN1YmJhbmRFcmxlRXN0aW1hdG9yOjpE
ZWNyZWFzZUVybGVQZXJCYW5kRm9yTG93UmVuZGVyU2lnbmFscygpIHsKICAgZm9yIChzaXplX3Qg
ayA9IDE7IGsgPCBrRmZ0TGVuZ3RoQnkyOyArK2spIHsKICAgICBob2xkX2NvdW50ZXJzX1trXS0t
OwotICAgIGlmIChob2xkX2NvdW50ZXJzX1trXSA8PSAoa0Jsb2Nrc0Zvck9uc2V0RGV0ZWN0aW9u
IC0ga0VybGVIb2xkKSkgeworICAgIGlmIChob2xkX2NvdW50ZXJzX1trXSA8PSAoa0Jsb2Nrc0Zv
ck9uc2V0RGV0ZWN0aW9uIC0ga0Jsb2Nrc1RvSG9sZEVybGUpKSB7CiAgICAgICBpZiAoZXJsZV9b
a10gPiBlcmxlX29uc2V0c19ba10pIHsKICAgICAgICAgZXJsZV9ba10gPSBzdGQ6Om1heChlcmxl
X29uc2V0c19ba10sIDAuOTdmICogZXJsZV9ba10pOwogICAgICAgICBSVENfRENIRUNLX0xFKG1p
bl9lcmxlXywgZXJsZV9ba10pOwpAQCAtMTQ1LDQzICsxMzksNTUgQEAgdm9pZCBTdWJiYW5kRXJs
ZUVzdGltYXRvcjo6RGVjcmVhc2VFcmxlUGVyQmFuZEZvckxvd1JlbmRlclNpZ25hbHMoKSB7CiAg
IH0KIH0KIAotU3ViYmFuZEVybGVFc3RpbWF0b3I6OkVybGVJbnN0YW50YW5lb3VzOjpFcmxlSW5z
dGFudGFuZW91cygpIHsKLSAgUmVzZXQoKTsKK3ZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6OlJl
c2V0QWNjdW11bGF0ZWRTcGVjdHJhKCkgeworICBhY2N1bV9zcGVjdHJhXy5ZMl8uZmlsbCgwLmYp
OworICBhY2N1bV9zcGVjdHJhXy5FMl8uZmlsbCgwLmYpOworICBhY2N1bV9zcGVjdHJhXy5udW1f
cG9pbnRzXy5maWxsKDApOworICBhY2N1bV9zcGVjdHJhXy5sb3dfcmVuZGVyX2VuZXJneV8uZmls
bChmYWxzZSk7CiB9CiAKLVN1YmJhbmRFcmxlRXN0aW1hdG9yOjpFcmxlSW5zdGFudGFuZW91czo6
fkVybGVJbnN0YW50YW5lb3VzKCkgPSBkZWZhdWx0OwotCi1hYnNsOjpvcHRpb25hbDxmbG9hdD4g
U3ViYmFuZEVybGVFc3RpbWF0b3I6OkVybGVJbnN0YW50YW5lb3VzOjpVcGRhdGUoCi0gICAgZmxv
YXQgWDIsCi0gICAgZmxvYXQgWTIsCi0gICAgZmxvYXQgRTIsCi0gICAgc2l6ZV90IGJhbmQsCi0g
ICAgYm9vbCogbG93X3JlbmRlcl9lbmVyZ3kpIHsKLSAgYWJzbDo6b3B0aW9uYWw8ZmxvYXQ+IGVy
bGVfaW5zdGFudGFuZW91cyA9IGFic2w6Om51bGxvcHQ7Ci0gIFJUQ19EQ0hFQ0tfTFQoYmFuZCwg
a0ZmdExlbmd0aEJ5MlBsdXMxKTsKLSAgWTJfYWN1bV9bYmFuZF0gKz0gWTI7Ci0gIEUyX2FjdW1f
W2JhbmRdICs9IEUyOwotICBsb3dfcmVuZGVyX2VuZXJneV9bYmFuZF0gPQotICAgICAgbG93X3Jl
bmRlcl9lbmVyZ3lfW2JhbmRdIHx8IFgyIDwga1gyQmFuZEVuZXJneVRocmVzaG9sZDsKLSAgaWYg
KCsrbnVtX3BvaW50c19bYmFuZF0gPT0ga1BvaW50c1RvQWNjdW11bGF0ZSkgewotICAgIGlmIChF
Ml9hY3VtX1tiYW5kXSkgewotICAgICAgZXJsZV9pbnN0YW50YW5lb3VzID0gWTJfYWN1bV9bYmFu
ZF0gLyBFMl9hY3VtX1tiYW5kXTsKK3ZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6OlVwZGF0ZUFj
Y3VtdWxhdGVkU3BlY3RyYSgKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWDIsCisg
ICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFkyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IGZsb2F0PiBFMikgeworICBhdXRvJiBzdCA9IGFjY3VtX3NwZWN0cmFfOworICBpZiAoYWRh
cHRfb25fbG93X3JlbmRlcl8pIHsKKyAgICBpZiAoc3QubnVtX3BvaW50c19bMF0gPT0ga1BvaW50
c1RvQWNjdW11bGF0ZSkgeworICAgICAgc3QubnVtX3BvaW50c19bMF0gPSAwOworICAgICAgc3Qu
WTJfLmZpbGwoMC5mKTsKKyAgICAgIHN0LkUyXy5maWxsKDAuZik7CisgICAgICBzdC5sb3dfcmVu
ZGVyX2VuZXJneV8uZmlsbChmYWxzZSk7CisgICAgfQorICAgIHN0ZDo6dHJhbnNmb3JtKFkyLmJl
Z2luKCksIFkyLmVuZCgpLCBzdC5ZMl8uYmVnaW4oKSwgc3QuWTJfLmJlZ2luKCksCisgICAgICAg
ICAgICAgICAgICAgc3RkOjpwbHVzPGZsb2F0PigpKTsKKyAgICBzdGQ6OnRyYW5zZm9ybShFMi5i
ZWdpbigpLCBFMi5lbmQoKSwgc3QuRTJfLmJlZ2luKCksIHN0LkUyXy5iZWdpbigpLAorICAgICAg
ICAgICAgICAgICAgIHN0ZDo6cGx1czxmbG9hdD4oKSk7CisKKyAgICBmb3IgKHNpemVfdCBrID0g
MDsgayA8IFgyLnNpemUoKTsgKytrKSB7CisgICAgICBzdC5sb3dfcmVuZGVyX2VuZXJneV9ba10g
PQorICAgICAgICAgIHN0Lmxvd19yZW5kZXJfZW5lcmd5X1trXSB8fCBYMltrXSA8IGtYMkJhbmRF
bmVyZ3lUaHJlc2hvbGQ7CisgICAgfQorICAgIHN0Lm51bV9wb2ludHNfWzBdKys7CisgICAgc3Qu
bnVtX3BvaW50c18uZmlsbChzdC5udW1fcG9pbnRzX1swXSk7CisKKyAgfSBlbHNlIHsKKyAgICAv
LyBUaGUgdXBkYXRlIGlzIGFsd2F5cyBkb25lIHVzaW5nIGhpZ2ggcmVuZGVyIGVuZXJneSBzaWdu
YWxzIGFuZAorICAgIC8vIHRoZXJlZm9yZSB0aGUgZmllbGQgYWNjdW1fc3BlY3RyYV8ubG93X3Jl
bmRlcl9lbmVyZ3lfIGRvZXMgbm90IG5lZWQgdG8KKyAgICAvLyBiZSBtb2RpZmllZC4KKyAgICBm
b3IgKHNpemVfdCBrID0gMDsgayA8IFgyLnNpemUoKTsgKytrKSB7CisgICAgICBpZiAoWDJba10g
PiBrWDJCYW5kRW5lcmd5VGhyZXNob2xkKSB7CisgICAgICAgIGlmIChzdC5udW1fcG9pbnRzX1tr
XSA9PSBrUG9pbnRzVG9BY2N1bXVsYXRlKSB7CisgICAgICAgICAgc3QuWTJfW2tdID0gMC5mOwor
ICAgICAgICAgIHN0LkUyX1trXSA9IDAuZjsKKyAgICAgICAgICBzdC5udW1fcG9pbnRzX1trXSA9
IDA7CisgICAgICAgIH0KKyAgICAgICAgc3QuWTJfW2tdICs9IFkyW2tdOworICAgICAgICBzdC5F
Ml9ba10gKz0gRTJba107CisgICAgICAgIHN0Lm51bV9wb2ludHNfW2tdKys7CisgICAgICB9Cisg
ICAgICBSVENfRENIRUNLX0VRKHN0Lmxvd19yZW5kZXJfZW5lcmd5X1trXSwgZmFsc2UpOwogICAg
IH0KLSAgICAqbG93X3JlbmRlcl9lbmVyZ3kgPSBsb3dfcmVuZGVyX2VuZXJneV9bYmFuZF07Ci0g
ICAgbnVtX3BvaW50c19bYmFuZF0gPSAwOwotICAgIFkyX2FjdW1fW2JhbmRdID0gMC5mOwotICAg
IEUyX2FjdW1fW2JhbmRdID0gMC5mOwotICAgIGxvd19yZW5kZXJfZW5lcmd5X1tiYW5kXSA9IGZh
bHNlOwogICB9Ci0KLSAgcmV0dXJuIGVybGVfaW5zdGFudGFuZW91czsKLX0KLQotdm9pZCBTdWJi
YW5kRXJsZUVzdGltYXRvcjo6RXJsZUluc3RhbnRhbmVvdXM6OlJlc2V0KCkgewotICBZMl9hY3Vt
Xy5maWxsKDAuZik7Ci0gIEUyX2FjdW1fLmZpbGwoMC5mKTsKLSAgbG93X3JlbmRlcl9lbmVyZ3lf
LmZpbGwoZmFsc2UpOwotICBudW1fcG9pbnRzXy5maWxsKDApOwogfQogCiB9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJiYW5kX2VybGVfZXN0aW1h
dG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJiYW5kX2VybGVfZXN0aW1hdG9yLmgKaW5kZXggYWE1
ZTVjY2IyNDg2MzYyNTUzMjE4YTljNTk5MGYzN2MwM2RjZDZiOC4uYjk4NjJkYmM2ZGVmMWYzMTRh
ODdlZDQ0ZWZmZTI2MzNhZDQ3YmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3ViYmFu
ZF9lcmxlX2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YmJhbmRfZXJsZV9lc3Rp
bWF0b3IuaApAQCAtMTEsMTEgKzExLDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BRUMzX1NVQkJBTkRfRVJMRV9FU1RJTUFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FFQzNfU1VCQkFORF9FUkxFX0VTVElNQVRPUl9IXwogCisjaW5jbHVkZSA8
c3RkZGVmLmg+CiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUg
PHZlY3Rvcj4KIAotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJh
cGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29u
ZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21t
b24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0
YV9kdW1wZXIuaCIKIApAQCAtMjQsNyArMjYsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIC8vIEVz
dGltYXRlcyB0aGUgZWNobyByZXR1cm4gbG9zcyBlbmhhbmNlbWVudCBmb3IgZWFjaCBmcmVxdWVu
Y3kgc3ViYmFuZC4KIGNsYXNzIFN1YmJhbmRFcmxlRXN0aW1hdG9yIHsKICBwdWJsaWM6Ci0gIFN1
YmJhbmRFcmxlRXN0aW1hdG9yKGZsb2F0IG1pbl9lcmxlLCBmbG9hdCBtYXhfZXJsZV9sZiwgZmxv
YXQgbWF4X2VybGVfaGYpOworICBleHBsaWNpdCBTdWJiYW5kRXJsZUVzdGltYXRvcihjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKTsKICAgflN1YmJhbmRFcmxlRXN0aW1hdG9yKCk7
CiAKICAgLy8gUmVzZXRzIHRoZSBFUkxFIGVzdGltYXRvci4KQEAgLTQxLDU1ICs0MywzNSBAQCBj
bGFzcyBTdWJiYW5kRXJsZUVzdGltYXRvciB7CiAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtG
ZnRMZW5ndGhCeTJQbHVzMT4mIEVybGUoKSBjb25zdCB7IHJldHVybiBlcmxlXzsgfQogCiAgIC8v
IFJldHVybnMgdGhlIEVSTEUgZXN0aW1hdGUgYXQgb25zZXRzLgotICBjb25zdCBzdGQ6OmFycmF5
PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBFcmxlT25zZXRzKCkgY29uc3QgewotICAgIHJl
dHVybiBlcmxlX29uc2V0c187Ci0gIH0KKyAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEVy
bGVPbnNldHMoKSBjb25zdCB7IHJldHVybiBlcmxlX29uc2V0c187IH0KIAogICB2b2lkIER1bXAo
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPEFwbURhdGFEdW1wZXI+JiBkYXRhX2R1bXBlcikgY29uc3Q7
CiAKICBwcml2YXRlOgotICB2b2lkIFVwZGF0ZUJhbmRzKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZs
b2F0PiBYMiwKLSAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4g
WTIsCi0gICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEUyLAot
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc3RvcCwKLSAgICAgICAgICAgICAgICAgICBmbG9hdCBtYXhfZXJsZSwKLSAgICAgICAgICAg
ICAgICAgICBib29sIG9uc2V0X2RldGVjdGlvbik7Ci0gIHZvaWQgRGVjcmVhc2VFcmxlUGVyQmFu
ZEZvckxvd1JlbmRlclNpZ25hbHMoKTsKLQotICBjbGFzcyBFcmxlSW5zdGFudGFuZW91cyB7Ci0g
ICBwdWJsaWM6Ci0gICAgRXJsZUluc3RhbnRhbmVvdXMoKTsKLSAgICB+RXJsZUluc3RhbnRhbmVv
dXMoKTsKLSAgICAvLyBVcGRhdGVzIHRoZSBFUkxFIGZvciBhIGJhbmQgd2l0aCBhIG5ldyBibG9j
ay4gUmV0dXJucyBhYnNsOjpudWxsb3B0Ci0gICAgLy8gaWYgbm90IGVub3VnaCBwb2ludHMgd2Vy
ZSBhY2N1bXVsYXRlZCBmb3IgZG9pbmcgdGhlIGVzdGltYXRpb24sCi0gICAgLy8gb3RoZXJ3aXNl
LCBpdCByZXR1cm5zIHRoZSBFUkxFLiBXaGVuIHRoZSBFUkxFIGlzIHJldHVybmVkLCB0aGUKLSAg
ICAvLyBsb3dfcmVuZGVyX2VuZXJneSBmbGFnIGNvbnRhaW5zIGluZm9ybWF0aW9uIG9uIHdoZXRo
ZXIgdGhlIGVzdGltYXRpb24gd2FzCi0gICAgLy8gZG9uZSB1c2luZyBsb3cgbGV2ZWwgcmVuZGVy
IHNpZ25hbHMuCi0gICAgYWJzbDo6b3B0aW9uYWw8ZmxvYXQ+IFVwZGF0ZShmbG9hdCBYMiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IFkyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgRTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgYmFuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wq
IGxvd19yZW5kZXJfZW5lcmd5KTsKLSAgICAvLyBSZXNldHMgdGhlIEVSTEUgZXN0aW1hdG9yIHRv
IGl0cyBpbml0aWFsIHN0YXRlLgotICAgIHZvaWQgUmVzZXQoKTsKLQotICAgcHJpdmF0ZToKLSAg
ICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFkyX2FjdW1fOwotICAgIHN0
ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gRTJfYWN1bV87CisgIHN0cnVjdCBB
Y2N1bXVsYXRlZFNwZWN0cmEgeworICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4gWTJfOworICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gRTJf
OwogICAgIHN0ZDo6YXJyYXk8Ym9vbCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBsb3dfcmVuZGVyX2Vu
ZXJneV87CiAgICAgc3RkOjphcnJheTxpbnQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gbnVtX3BvaW50
c187CiAgIH07CiAKLSAgRXJsZUluc3RhbnRhbmVvdXMgaW5zdGFudGFuZW91c19lcmxlXzsKKyAg
dm9pZCBVcGRhdGVBY2N1bXVsYXRlZFNwZWN0cmEocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+
IFgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25z
dCBmbG9hdD4gWTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IGZsb2F0PiBFMik7CisKKyAgdm9pZCBSZXNldEFjY3VtdWxhdGVkU3BlY3RyYSgp
OworCisgIHZvaWQgVXBkYXRlQmFuZHMoYm9vbCBvbnNldF9kZXRlY3Rpb24pOworICB2b2lkIERl
Y3JlYXNlRXJsZVBlckJhbmRGb3JMb3dSZW5kZXJTaWduYWxzKCk7CisKKyAgY29uc3QgZmxvYXQg
bWluX2VybGVfOworICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+
IG1heF9lcmxlXzsKKyAgY29uc3QgYm9vbCBhZGFwdF9vbl9sb3dfcmVuZGVyXzsKKyAgQWNjdW11
bGF0ZWRTcGVjdHJhIGFjY3VtX3NwZWN0cmFfOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVu
Z3RoQnkyUGx1czE+IGVybGVfOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1
czE+IGVybGVfb25zZXRzXzsKICAgc3RkOjphcnJheTxib29sLCBrRmZ0TGVuZ3RoQnkyUGx1czE+
IGNvbWluZ19vbnNldF87CiAgIHN0ZDo6YXJyYXk8aW50LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IGhv
bGRfY291bnRlcnNfOwotICBjb25zdCBmbG9hdCBtaW5fZXJsZV87Ci0gIGNvbnN0IGZsb2F0IG1h
eF9lcmxlX2xmXzsKLSAgY29uc3QgZmxvYXQgbWF4X2VybGVfaGZfOwotICBjb25zdCBib29sIGFk
YXB0X29uX2xvd19yZW5kZXJfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRy
YWN0b3IuY2MKaW5kZXggNjA5ZThhYzdlZDFiOTI3YzcyODA5YjkxNDIxYWY3YzI2Mzg1NGI4ZC4u
OTAwNjljN2E3NDlmYzViYjE1MjNmNzc4ZjQ5ZDc5YTU3OGI3ZDEwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvc3VidHJhY3Rvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9y
LmNjCkBAIC0xMSwxMiArMTEsMTIgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9zdWJ0cmFjdG9yLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8
bnVtZXJpYz4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfZGF0YS5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Z2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgogI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKQEAgLTE5MSw3
ICsxOTEsNyBAQCB2b2lkIFN1YnRyYWN0b3I6OlByb2Nlc3MoY29uc3QgUmVuZGVyQnVmZmVyJiBy
ZW5kZXJfYnVmZmVyLAogICAgICAgICAgICAgICAgICAgYWRhcHRhdGlvbl9kdXJpbmdfc2F0dXJh
dGlvbl8sICZzaGFkb3dfc2F0dXJhdGlvbik7CiAKICAgLy8gQ29tcHV0ZSB0aGUgc2lnbmFsIHBv
d2VycyBpbiB0aGUgc3VidHJhY3RvciBvdXRwdXQuCi0gIG91dHB1dC0+VXBkYXRlUG93ZXJzKHkp
OworICBvdXRwdXQtPkNvbXB1dGVNZXRyaWNzKHkpOwogCiAgIC8vIEFkanVzdCB0aGUgZmlsdGVy
IGlmIG5lZWRlZC4KICAgYm9vbCBtYWluX2ZpbHRlcl9hZGp1c3RlZCA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJh
Y3Rvci5oCmluZGV4IGM5MmE5NzFmMTE3ODM3M2JhMGEzNjJjNGNhNGZiNjY3YmM5N2RiYmQuLmJl
YzAxNGRlZWM5NTdkM2NjZGVlNDcyMmNlMWZiZGQ3ODZiMjA0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3N1YnRyYWN0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yLmgK
QEAgLTExLDExICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVD
M19TVUJUUkFDVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1NV
QlRSQUNUT1JfSF8KIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxtYXRoLmg+Cisj
aW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8dmVjdG9yPgot
I2luY2x1ZGUgIm1hdGguaCIKIAorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVk
ZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZGFwdGl2ZV9maXJfZmlsdGVyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2ZmdC5oIgpAQCAtMjMsMTAgKzI1LDEx
IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX3Zh
cmlhYmlsaXR5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWFp
bl9maWx0ZXJfdXBkYXRlX2dhaW4uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3NoYWRvd19maWx0ZXJfdXBkYXRlX2dhaW4uaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdC5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0
cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jf
b3V0cHV0LmNjCmluZGV4IGFmZmE0YTNhMDZmYTI0ZGIxY2YzZTUyYjI3YzM0MzgyMTJiMGVkNzku
LjkyMmNjM2QxYjNmM2U0MTNlNWYyN2YwYzQ3ZDc1ZWIyNWM5N2FhZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1
YnRyYWN0b3Jfb3V0cHV0LmNjCkBAIC0zMyw3ICszMyw3IEBAIHZvaWQgU3VidHJhY3Rvck91dHB1
dDo6UmVzZXQoKSB7CiAgIHkyID0gMC5mOwogfQogCi12b2lkIFN1YnRyYWN0b3JPdXRwdXQ6OlVw
ZGF0ZVBvd2VycyhydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4geSkgewordm9pZCBTdWJ0cmFj
dG9yT3V0cHV0OjpDb21wdXRlTWV0cmljcyhydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4geSkg
ewogICBjb25zdCBhdXRvIHN1bV9vZl9zcXVhcmVzID0gW10oZmxvYXQgYSwgZmxvYXQgYikgeyBy
ZXR1cm4gYSArIGIgKiBiOyB9OwogICB5MiA9IHN0ZDo6YWNjdW11bGF0ZSh5LmJlZ2luKCksIHku
ZW5kKCksIDAuZiwgc3VtX29mX3NxdWFyZXMpOwogICBlMl9tYWluID0gc3RkOjphY2N1bXVsYXRl
KGVfbWFpbi5iZWdpbigpLCBlX21haW4uZW5kKCksIDAuZiwgc3VtX29mX3NxdWFyZXMpOwpAQCAt
NDIsNiArNDIsMTQgQEAgdm9pZCBTdWJ0cmFjdG9yT3V0cHV0OjpVcGRhdGVQb3dlcnMocnRjOjpB
cnJheVZpZXc8Y29uc3QgZmxvYXQ+IHkpIHsKICAgczJfbWFpbiA9IHN0ZDo6YWNjdW11bGF0ZShz
X21haW4uYmVnaW4oKSwgc19tYWluLmVuZCgpLCAwLmYsIHN1bV9vZl9zcXVhcmVzKTsKICAgczJf
c2hhZG93ID0KICAgICAgIHN0ZDo6YWNjdW11bGF0ZShzX3NoYWRvdy5iZWdpbigpLCBzX3NoYWRv
dy5lbmQoKSwgMC5mLCBzdW1fb2Zfc3F1YXJlcyk7CisKKyAgc19tYWluX21heF9hYnMgPSAqc3Rk
OjptYXhfZWxlbWVudChzX21haW4uYmVnaW4oKSwgc19tYWluLmVuZCgpKTsKKyAgc19tYWluX21h
eF9hYnMgPSBzdGQ6Om1heChzX21haW5fbWF4X2FicywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtKCpzdGQ6Om1pbl9lbGVtZW50KHNfbWFpbi5iZWdpbigpLCBzX21haW4uZW5kKCkpKSk7
CisKKyAgc19zaGFkb3dfbWF4X2FicyA9ICpzdGQ6Om1heF9lbGVtZW50KHNfc2hhZG93LmJlZ2lu
KCksIHNfc2hhZG93LmVuZCgpKTsKKyAgc19zaGFkb3dfbWF4X2FicyA9IHN0ZDo6bWF4KAorICAg
ICAgc19zaGFkb3dfbWF4X2FicywgLSgqc3RkOjptaW5fZWxlbWVudChzX3NoYWRvdy5iZWdpbigp
LCBzX3NoYWRvdy5lbmQoKSkpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3N1YnRyYWN0b3Jfb3V0cHV0LmgKaW5kZXggODk3MjdlOTM5NmYxMjJiYWYzNmJkZjg5NWFiZDRi
ZTQ3OGVmODhiMy4uNWY2ZmQzZWQ3MTIwN2U0MTliNDc2ODg3Zjc0NzM5YjZhYWE4ZmE4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXQuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5oCkBAIC0zNiwxMiArMzYsMTQgQEAgc3RydWN0IFN1
YnRyYWN0b3JPdXRwdXQgewogICBmbG9hdCBlMl9tYWluID0gMC5mOwogICBmbG9hdCBlMl9zaGFk
b3cgPSAwLmY7CiAgIGZsb2F0IHkyID0gMC5mOworICBmbG9hdCBzX21haW5fbWF4X2FicyA9IDAu
ZjsKKyAgZmxvYXQgc19zaGFkb3dfbWF4X2FicyA9IDAuZjsKIAogICAvLyBSZXNldCB0aGUgc3Ry
dWN0IGNvbnRlbnQuCiAgIHZvaWQgUmVzZXQoKTsKIAogICAvLyBVcGRhdGVzIHRoZSBwb3dlcnMg
b2YgdGhlIHNpZ25hbHMuCi0gIHZvaWQgVXBkYXRlUG93ZXJzKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IGZsb2F0PiB5KTsKKyAgdm9pZCBDb21wdXRlTWV0cmljcyhydGM6OkFycmF5Vmlldzxjb25zdCBm
bG9hdD4geSk7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dF9hbmFseXplci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3N1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyLmNjCmluZGV4IDNjYWNiNDU2MzAxNGEzNjVhOWEx
ZTI3OWY5NmMwMmFjNjRmMWExZmIuLjkzNzRiODA5OWY0N2I2YjQzYjE3NTgyY2Y0M2Y4ZDUzY2Ez
Zjg2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5
emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyLmNj
CkBAIC0xMCw5ICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9zdWJ0cmFjdG9yX291dHB1dF9hbmFseXplci5oIgogCi0jaW5jbHVkZSA8YXJyYXk+Ci0j
aW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyLmgKaW5kZXggYjU5YTY4
ZTVlNjBiMTk0NTFlYWE1MDIzODFjYWUyZDVjMjNmMTg0YS4uMGUyM2FkNWRmYWYzOWIwYmI0MGQy
YjVhNzVkZGRkYWIwNzMwOGExMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rv
cl9vdXRwdXRfYW5hbHl6ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1
dF9hbmFseXplci5oCkBAIC0xMSw3ICsxMSw2IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJP
Q0VTU0lOR19BRUMzX1NVQlRSQUNUT1JfT1VUUFVUX0FOQUxZWkVSX0hfCiAjZGVmaW5lIE1PRFVM
RVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1NVQlRSQUNUT1JfT1VUUFVUX0FOQUxZWkVSX0hfCiAK
LSNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3N1YnRyYWN0b3JfdW5pdHRlc3QuY2MKaW5kZXggYmE3NDRhNmE4Mzk2NTM3ZTIx
OWU4NjE5MDIwMmEyZGMxNDBmZWI3OC4uOGQxNGNjMWEwNzI1Mjc4ODc3NzRiZGQ1NzcyOGUzNTVh
MzA2ODA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl91bml0dGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX3VuaXR0ZXN0LmNjCkBAIC00NCw3ICs0
NCw3IEBAIGZsb2F0IFJ1blN1YnRyYWN0b3JUZXN0KGludCBudW1fYmxvY2tzX3RvX3Byb2Nlc3Ms
CiAgIGNvbmZpZy5kZWxheS5taW5fZWNob19wYXRoX2RlbGF5X2Jsb2NrcyA9IDA7CiAgIGNvbmZp
Zy5kZWxheS5kZWZhdWx0X2RlbGF5ID0gMTsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5
QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNy
ZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZp
ZywgMykpOwogICBSZW5kZXJTaWduYWxBbmFseXplciByZW5kZXJfc2lnbmFsX2FuYWx5emVyKGNv
bmZpZyk7CiAgIFJhbmRvbSByYW5kb21fZ2VuZXJhdG9yKDQyVSk7CiAgIEFlYzNGZnQgZmZ0OwpA
QCAtMTI3LDcgKzEyNyw3IEBAIFRFU1QoU3VidHJhY3RvciwgRElTQUJMRURfTnVsbE91dHB1dCkg
ewogICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CiAgIFN1YnRyYWN0b3Igc3VidHJhY3Rv
cihjb25maWcsICZkYXRhX2R1bXBlciwgRGV0ZWN0T3B0aW1pemF0aW9uKCkpOwogICBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICBS
ZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgUmVuZGVyRGVsYXlC
dWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIFJlbmRlclNpZ25hbEFuYWx5emVyIHJlbmRl
cl9zaWduYWxfYW5hbHl6ZXIoY29uZmlnKTsKICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHkoa0Jsb2Nr
U2l6ZSwgMC5mKTsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIFRFU1QoU3VidHJhY3RvciwgV3JvbmdD
YXB0dXJlU2l6ZSkgewogICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CiAgIFN1YnRyYWN0
b3Igc3VidHJhY3Rvcihjb25maWcsICZkYXRhX2R1bXBlciwgRGV0ZWN0T3B0aW1pemF0aW9uKCkp
OwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZm
ZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAg
UmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIFJlbmRlclNpZ25hbEFu
YWx5emVyIHJlbmRlcl9zaWduYWxfYW5hbHl6ZXIoY29uZmlnKTsKICAgc3RkOjp2ZWN0b3I8Zmxv
YXQ+IHkoa0Jsb2NrU2l6ZSAtIDEsIDAuZik7CiAgIFN1YnRyYWN0b3JPdXRwdXQgb3V0cHV0OwpA
QCAtMjEwLDIxICsyMTAsNCBAQCBURVNUKFN1YnRyYWN0b3IsIE5vbkNvbnZlcmdlbmNlT25VbmNv
cnJlbGF0ZWRTaWduYWxzKSB7CiAgIH0KIH0KIAotLy8gVmVyaWZpZXMgdGhhdCB0aGUgc3VidHJh
Y3RvciBpcyBwcm9wZXJseSByZXNldCB3aGVuIHRoZXJlIGlzIGFuIGVjaG8gcGF0aAotLy8gY2hh
bmdlLgotVEVTVChTdWJ0cmFjdG9yLCBFY2hvUGF0aENoYW5nZVJlc2V0KSB7Ci0gIHN0ZDo6dmVj
dG9yPGludD4gYmxvY2tzX3dpdGhfZWNob19wYXRoX2NoYW5nZXM7Ci0gIGJsb2Nrc193aXRoX2Vj
aG9fcGF0aF9jaGFuZ2VzLnB1c2hfYmFjayg5OSk7Ci0gIGZvciAoc2l6ZV90IGZpbHRlcl9sZW5n
dGhfYmxvY2tzIDogezEyLCAyMCwgMzB9KSB7Ci0gICAgZm9yIChzaXplX3QgZGVsYXlfc2FtcGxl
cyA6IHswLCA2NCwgMTUwLCAyMDAsIDMwMX0pIHsKLSAgICAgIFNDT1BFRF9UUkFDRShQcm9kdWNl
RGVidWdUZXh0KGRlbGF5X3NhbXBsZXMsIGZpbHRlcl9sZW5ndGhfYmxvY2tzKSk7Ci0KLSAgICAg
IGZsb2F0IGVjaG9fdG9fbmVhcmVuZF9wb3dlciA9IFJ1blN1YnRyYWN0b3JUZXN0KAotICAgICAg
ICAgIDEwMCwgZGVsYXlfc2FtcGxlcywgZmlsdGVyX2xlbmd0aF9ibG9ja3MsIGZpbHRlcl9sZW5n
dGhfYmxvY2tzLCBmYWxzZSwKLSAgICAgICAgICBibG9ja3Nfd2l0aF9lY2hvX3BhdGhfY2hhbmdl
cyk7Ci0gICAgICBFWFBFQ1RfTkVBUigxLmYsIGVjaG9fdG9fbmVhcmVuZF9wb3dlciwgMC4wMDAw
MDAxZik7Ci0gICAgfQotICB9Ci19Ci0KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRlci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3N1cHByZXNzaW9uX2ZpbHRlci5jYwppbmRleCA4N2UzMDA4ZGM3NmFhZDhiMjZjNzA5YTQ0NjUx
ZmYzZDY3MDM3OTJjLi42ZmUyOTZjMjE5YzYzMjQwOGQ0Nzk3Y2I0MmE5OTY3YmY1MDRiYTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0ZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZmlsdGVyLmNjCkBAIC0xMCwxMyArMTAsMTQgQEAKIAog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRl
ci5oIgogCi0jaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRl
IDxjbWF0aD4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5j
bHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KIAotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdC5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9tYXRoLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC01OSw4ICs2MCwxMCBAQCBjb25zdCBmbG9hdCBrU3FydEhh
bm5pbmdba0ZmdExlbmd0aF0gPSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1TdXBwcmVzc2lvbkZp
bHRlcjo6U3VwcHJlc3Npb25GaWx0ZXIoaW50IHNhbXBsZV9yYXRlX2h6KQotICAgIDogc2FtcGxl
X3JhdGVfaHpfKHNhbXBsZV9yYXRlX2h6KSwKK1N1cHByZXNzaW9uRmlsdGVyOjpTdXBwcmVzc2lv
bkZpbHRlcihBZWMzT3B0aW1pemF0aW9uIG9wdGltaXphdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHopCisgICAgOiBvcHRpbWl6YXRp
b25fKG9wdGltaXphdGlvbiksCisgICAgICBzYW1wbGVfcmF0ZV9oel8oc2FtcGxlX3JhdGVfaHop
LAogICAgICAgZmZ0XygpLAogICAgICAgZV9vdXRwdXRfb2xkXyhOdW1CYW5kc0ZvclJhdGUoc2Ft
cGxlX3JhdGVfaHpfKSkgewogICBSVENfRENIRUNLKFZhbGlkRnVsbEJhbmRSYXRlKHNhbXBsZV9y
YXRlX2h6XykpOwpAQCAtOTAsMTggKzkzLDE3IEBAIHZvaWQgU3VwcHJlc3Npb25GaWx0ZXI6OkFw
cGx5R2FpbigKICAgc3RkOjp0cmFuc2Zvcm0oc3VwcHJlc3Npb25fZ2Fpbi5iZWdpbigpLCBzdXBw
cmVzc2lvbl9nYWluLmVuZCgpLCBFLmltLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgIEUuaW0u
YmVnaW4oKSwgc3RkOjptdWx0aXBsaWVzPGZsb2F0PigpKTsKIAotICAvLyBDb21wdXRlIGFuZCBh
ZGQgdGhlIGNvbWZvcnQgbm9pc2UuCi0gIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4gc2NhbGVkX2NvbWZvcnRfbm9pc2U7CisgIC8vIENvbWZvcnQgbm9pc2UgZ2FpbiBpcyBz
cXJ0KDEtZ14yKSwgd2hlcmUgZyBpcyB0aGUgc3VwcHJlc3Npb24gZ2Fpbi4KKyAgc3RkOjphcnJh
eTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBub2lzZV9nYWluOwogICBzdGQ6OnRyYW5zZm9y
bShzdXBwcmVzc2lvbl9nYWluLmJlZ2luKCksIHN1cHByZXNzaW9uX2dhaW4uZW5kKCksCi0gICAg
ICAgICAgICAgICAgIGNvbWZvcnRfbm9pc2UucmUuYmVnaW4oKSwgc2NhbGVkX2NvbWZvcnRfbm9p
c2UuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgW10oZmxvYXQgYSwgZmxvYXQgYikgeyByZXR1
cm4gc3RkOjptYXgoMS5mIC0gYSwgMC5mKSAqIGI7IH0pOwotICBzdGQ6OnRyYW5zZm9ybShzY2Fs
ZWRfY29tZm9ydF9ub2lzZS5iZWdpbigpLCBzY2FsZWRfY29tZm9ydF9ub2lzZS5lbmQoKSwKLSAg
ICAgICAgICAgICAgICAgRS5yZS5iZWdpbigpLCBFLnJlLmJlZ2luKCksIHN0ZDo6cGx1czxmbG9h
dD4oKSk7Ci0gIHN0ZDo6dHJhbnNmb3JtKHN1cHByZXNzaW9uX2dhaW4uYmVnaW4oKSwgc3VwcHJl
c3Npb25fZ2Fpbi5lbmQoKSwKLSAgICAgICAgICAgICAgICAgY29tZm9ydF9ub2lzZS5pbS5iZWdp
bigpLCBzY2FsZWRfY29tZm9ydF9ub2lzZS5iZWdpbigpLAotICAgICAgICAgICAgICAgICBbXShm
bG9hdCBhLCBmbG9hdCBiKSB7IHJldHVybiBzdGQ6Om1heCgxLmYgLSBhLCAwLmYpICogYjsgfSk7
Ci0gIHN0ZDo6dHJhbnNmb3JtKHNjYWxlZF9jb21mb3J0X25vaXNlLmJlZ2luKCksIHNjYWxlZF9j
b21mb3J0X25vaXNlLmVuZCgpLAotICAgICAgICAgICAgICAgICBFLmltLmJlZ2luKCksIEUuaW0u
YmVnaW4oKSwgc3RkOjpwbHVzPGZsb2F0PigpKTsKKyAgICAgICAgICAgICAgICAgbm9pc2VfZ2Fp
bi5iZWdpbigpLCBbXShmbG9hdCBnKSB7IHJldHVybiAxLmYgLSBnICogZzsgfSk7CisgIGFlYzM6
OlZlY3Rvck1hdGgob3B0aW1pemF0aW9uXykuU3FydChub2lzZV9nYWluKTsKKworICAvLyBTY2Fs
ZSBhbmQgYWRkIHRoZSBjb21mb3J0IG5vaXNlLgorICBmb3IgKHNpemVfdCBrID0gMDsgayA8IGtG
ZnRMZW5ndGhCeTJQbHVzMTsgaysrKSB7CisgICAgRS5yZVtrXSArPSBub2lzZV9nYWluW2tdICog
Y29tZm9ydF9ub2lzZS5yZVtrXTsKKyAgICBFLmltW2tdICs9IG5vaXNlX2dhaW5ba10gKiBjb21m
b3J0X25vaXNlLmltW2tdOworICB9CiAKICAgLy8gU3ludGhlc2lzIGZpbHRlcmJhbmsuCiAgIHN0
ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGg+IGVfZXh0ZW5kZWQ7CkBAIC0xMzUsNyArMTM3LDcg
QEAgdm9pZCBTdXBwcmVzc2lvbkZpbHRlcjo6QXBwbHlHYWluKAogCiAgICAgLy8gU2NhbGUgYW5k
IGFwcGx5IHRoZSBub2lzZSB0byB0aGUgc2lnbmFscy4KICAgICBjb25zdCBmbG9hdCBoaWdoX2Jh
bmRzX25vaXNlX3NjYWxpbmcgPQotICAgICAgICAwLjRmICogc3RkOjptYXgoMS5mIC0gaGlnaF9i
YW5kc19nYWluLCAwLmYpOworICAgICAgICAwLjRmICogc3RkOjpzcXJ0KDEuZiAtIGhpZ2hfYmFu
ZHNfZ2FpbiAqIGhpZ2hfYmFuZHNfZ2Fpbik7CiAKICAgICBzdGQ6OnRyYW5zZm9ybSgKICAgICAg
ICAgKCplKVsxXS5iZWdpbigpLCAoKmUpWzFdLmVuZCgpLCB0aW1lX2RvbWFpbl9oaWdoX2JhbmRf
bm9pc2UuYmVnaW4oKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2Zp
bHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZmlsdGVyLmgKaW5kZXggMjM3NDA4
ZDdmOWRjM2U1OThlZTM4ZWRjZDg5NDI4MmVkN2Q0YjIwNi4uZWRkMTI5MDAxNGQyYTRhYjYyMzcz
YTJhNzk1NWE5MDgzODNmM2QwOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Np
b25fZmlsdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZmlsdGVyLmgKQEAg
LTE2LDEzICsxNiwxNSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9hZWMzX2ZmdC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Zm
dF9kYXRhLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvb291
cmFfZmZ0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgU3VwcHJlc3Npb25GaWx0ZXIgewogIHB1YmxpYzoKLSAg
ZXhwbGljaXQgU3VwcHJlc3Npb25GaWx0ZXIoaW50IHNhbXBsZV9yYXRlX2h6KTsKKyAgU3VwcHJl
c3Npb25GaWx0ZXIoQWVjM09wdGltaXphdGlvbiBvcHRpbWl6YXRpb24sIGludCBzYW1wbGVfcmF0
ZV9oeik7CiAgIH5TdXBwcmVzc2lvbkZpbHRlcigpOwogICB2b2lkIEFwcGx5R2Fpbihjb25zdCBG
ZnREYXRhJiBjb21mb3J0X25vaXNlLAogICAgICAgICAgICAgICAgICBjb25zdCBGZnREYXRhJiBj
b21mb3J0X25vaXNlX2hpZ2hfYmFuZHMsCkBAIC0zMiw2ICszNCw3IEBAIGNsYXNzIFN1cHByZXNz
aW9uRmlsdGVyIHsKICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8Zmxv
YXQ+PiogZSk7CiAKICBwcml2YXRlOgorICBjb25zdCBBZWMzT3B0aW1pemF0aW9uIG9wdGltaXph
dGlvbl87CiAgIGNvbnN0IGludCBzYW1wbGVfcmF0ZV9oel87CiAgIGNvbnN0IE9vdXJhRmZ0IG9v
dXJhX2ZmdF87CiAgIGNvbnN0IEFlYzNGZnQgZmZ0XzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1cHByZXNzaW9uX2ZpbHRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHBy
ZXNzaW9uX2ZpbHRlcl91bml0dGVzdC5jYwppbmRleCBlYWE2MDhlZWQ1ZDdmYWEwNWIzNDZiM2Jk
N2VjOWFmYzU0YTEzZTRhLi45ZTRmZjdjMjhiNGM4MjMxMDMwNGIyMzIxZjAxNzJiNjc1ZThkZmM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0ZXJfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZmlsdGVyX3VuaXR0ZXN0LmNjCkBA
IC00NSwyMSArNDUsMjEgQEAgVEVTVChTdXBwcmVzc2lvbkZpbHRlciwgTnVsbE91dHB1dCkgewog
ICBGZnREYXRhIEU7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gZ2Fp
bjsKIAotICBFWFBFQ1RfREVBVEgoU3VwcHJlc3Npb25GaWx0ZXIoMTYwMDApLkFwcGx5R2Fpbihj
biwgY25faGlnaF9iYW5kcywgZ2FpbiwgMS4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRSwgbnVsbHB0ciksCisgIEVYUEVDVF9ERUFUSChTdXBw
cmVzc2lvbkZpbHRlcihBZWMzT3B0aW1pemF0aW9uOjprTm9uZSwgMTYwMDApCisgICAgICAgICAg
ICAgICAgICAgLkFwcGx5R2FpbihjbiwgY25faGlnaF9iYW5kcywgZ2FpbiwgMS4wZiwgRSwgbnVs
bHB0ciksCiAgICAgICAgICAgICAgICAiIik7CiB9CiAKIC8vIFZlcmlmaWVzIHRoZSBjaGVjayBm
b3IgYWxsb3dlZCBzYW1wbGUgcmF0ZS4KIFRFU1QoU3VwcHJlc3Npb25GaWx0ZXIsIFByb3BlclNh
bXBsZVJhdGUpIHsKLSAgRVhQRUNUX0RFQVRIKFN1cHByZXNzaW9uRmlsdGVyKDE2MDAxKSwgIiIp
OworICBFWFBFQ1RfREVBVEgoU3VwcHJlc3Npb25GaWx0ZXIoQWVjM09wdGltaXphdGlvbjo6a05v
bmUsIDE2MDAxKSwgIiIpOwogfQogCiAjZW5kaWYKIAogLy8gVmVyaWZpZXMgdGhhdCBubyBjb21m
b3J0IG5vaXNlIGlzIGFkZGVkIHdoZW4gdGhlIGdhaW4gaXMgMS4KIFRFU1QoU3VwcHJlc3Npb25G
aWx0ZXIsIENvbWZvcnROb2lzZUluVW5pdHlHYWluKSB7Ci0gIFN1cHByZXNzaW9uRmlsdGVyIGZp
bHRlcig0ODAwMCk7CisgIFN1cHByZXNzaW9uRmlsdGVyIGZpbHRlcihBZWMzT3B0aW1pemF0aW9u
OjprTm9uZSwgNDgwMDApOwogICBGZnREYXRhIGNuOwogICBGZnREYXRhIGNuX2hpZ2hfYmFuZHM7
CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gZ2FpbjsKQEAgLTg5LDcg
Kzg5LDcgQEAgVEVTVChTdXBwcmVzc2lvbkZpbHRlciwgQ29tZm9ydE5vaXNlSW5Vbml0eUdhaW4p
IHsKIAogLy8gVmVyaWZpZXMgdGhhdCB0aGUgc3VwcHJlc3NvciBpcyBhYmxlIHRvIHN1cHByZXNz
IGEgc2lnbmFsLgogVEVTVChTdXBwcmVzc2lvbkZpbHRlciwgU2lnbmFsU3VwcHJlc3Npb24pIHsK
LSAgU3VwcHJlc3Npb25GaWx0ZXIgZmlsdGVyKDQ4MDAwKTsKKyAgU3VwcHJlc3Npb25GaWx0ZXIg
ZmlsdGVyKEFlYzNPcHRpbWl6YXRpb246OmtOb25lLCA0ODAwMCk7CiAgIEZmdERhdGEgY247CiAg
IEZmdERhdGEgY25faGlnaF9iYW5kczsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5
Mj4gZV9vbGRfOwpAQCAtMTMxLDcgKzEzMSw3IEBAIFRFU1QoU3VwcHJlc3Npb25GaWx0ZXIsIFNp
Z25hbFN1cHByZXNzaW9uKSB7CiAvLyBWZXJpZmllcyB0aGF0IHRoZSBzdXBwcmVzc29yIGlzIGFi
bGUgdG8gcGFzcyB0aHJvdWdoIGEgZGVzaXJlZCBzaWduYWwgd2hpbGUKIC8vIGFwcGx5aW5nIHN1
cHByZXNzaW5nIGZvciBzb21lIGZyZXF1ZW5jaWVzLgogVEVTVChTdXBwcmVzc2lvbkZpbHRlciwg
U2lnbmFsVHJhbnNwYXJlbmN5KSB7Ci0gIFN1cHByZXNzaW9uRmlsdGVyIGZpbHRlcig0ODAwMCk7
CisgIFN1cHByZXNzaW9uRmlsdGVyIGZpbHRlcihBZWMzT3B0aW1pemF0aW9uOjprTm9uZSwgNDgw
MDApOwogICBGZnREYXRhIGNuOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyPiBl
X29sZF87CiAgIEFlYzNGZnQgZmZ0OwpAQCAtMTcxLDcgKzE3MSw3IEBAIFRFU1QoU3VwcHJlc3Np
b25GaWx0ZXIsIFNpZ25hbFRyYW5zcGFyZW5jeSkgewogCiAvLyBWZXJpZmllcyB0aGF0IHRoZSBz
dXBwcmVzc29yIGRlbGF5LgogVEVTVChTdXBwcmVzc2lvbkZpbHRlciwgRGVsYXkpIHsKLSAgU3Vw
cHJlc3Npb25GaWx0ZXIgZmlsdGVyKDQ4MDAwKTsKKyAgU3VwcHJlc3Npb25GaWx0ZXIgZmlsdGVy
KEFlYzNPcHRpbWl6YXRpb246OmtOb25lLCA0ODAwMCk7CiAgIEZmdERhdGEgY247CiAgIEZmdERh
dGEgY25faGlnaF9iYW5kczsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5Mj4gZV9v
bGRfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbi5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW4uY2MKaW5kZXggNjEzMjU2NjczMDY5YTU2YWQ5
NzZkZDlhYmQzYTU1ZDBlNGY5ODU1NS4uODhjZmMwYTAxZTRlMGQxODM4NWM1OWJmYzYxODBjN2Nl
OTc3MzY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbi5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluLmNjCkBAIC0xMSw4ICsxMSw4IEBA
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fp
bi5oIgogCiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPG51bWVyaWM+CiAK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tb3ZpbmdfYXZlcmFnZS5o
IgpAQCAtMjAsMTUgKzIwLDEwIEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3Bz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3Bh
Y2UgewogCi1ib29sIEVuYWJsZU5ld1N1cHByZXNzaW9uKCkgewotICByZXR1cm4gIWZpZWxkX3Ry
aWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzTmV3U3VwcHJlc3Npb25LaWxsU3dpdGNoIik7Ci19
Ci0KIC8vIEFkanVzdCB0aGUgZ2FpbnMgYWNjb3JkaW5nIHRvIHRoZSBwcmVzZW5jZSBvZiBrbm93
biBleHRlcm5hbCBmaWx0ZXJzLgogdm9pZCBBZGp1c3RGb3JFeHRlcm5hbEZpbHRlcnMoc3RkOjph
cnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogZ2FpbikgewogICAvLyBMaW1pdCB0aGUg
bG93IGZyZXF1ZW5jeSBnYWlucyB0byBhdm9pZCB0aGUgaW1wYWN0IG9mIHRoZSBoaWdoLXBhc3Mg
ZmlsdGVyCkBAIC04Myw1NyArNzgsNiBAQCB2b2lkIFdlaWdodEVjaG9Gb3JBdWRpYmlsaXR5KGNv
bnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgIHdlaWdoKHRocmVzaG9sZCwgbm9y
bWFsaXplciwgNywga0ZmdExlbmd0aEJ5MlBsdXMxLCBlY2hvLCB3ZWlnaHRlZF9lY2hvKTsKIH0K
IAotLy8gQ29tcHV0ZXMgdGhlIGdhaW4gdG8gcmVkdWNlIHRoZSBlY2hvIHRvIGEgbm9uIGF1ZGli
bGUgbGV2ZWwuCi12b2lkIEdhaW5Ub05vQXVkaWJsZUVjaG9GYWxsYmFjaygKLSAgICBjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAotICAgIGJvb2wgbG93X25vaXNlX3JlbmRlciwK
LSAgICBib29sIHNhdHVyYXRlZF9lY2hvLAotICAgIGJvb2wgbGluZWFyX2VjaG9fZXN0aW1hdGUs
Ci0gICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgbmVhcmVu
ZCwKLSAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiB3ZWln
aHRlZF9lY2hvLAotICAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVz
MT4mIG1hc2tlciwKLSAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1
czE+JiBtaW5fZ2FpbiwKLSAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnky
UGx1czE+JiBtYXhfZ2FpbiwKLSAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3Ro
QnkyUGx1czE+JiBvbmVfYnlfd2VpZ2h0ZWRfZWNobywKLSAgICBzdGQ6OmFycmF5PGZsb2F0LCBr
RmZ0TGVuZ3RoQnkyUGx1czE+KiBnYWluKSB7Ci0gIGZsb2F0IG5lYXJlbmRfbWFza2luZ19tYXJn
aW4gPSAwLmY7Ci0gIGlmIChsaW5lYXJfZWNob19lc3RpbWF0ZSkgewotICAgIG5lYXJlbmRfbWFz
a2luZ19tYXJnaW4gPQotICAgICAgICBsb3dfbm9pc2VfcmVuZGVyCi0gICAgICAgICAgICA/IGNv
bmZpZy5nYWluX21hc2subTkKLSAgICAgICAgICAgIDogKHNhdHVyYXRlZF9lY2hvID8gY29uZmln
LmdhaW5fbWFzay5tMiA6IGNvbmZpZy5nYWluX21hc2subTMpOwotICB9IGVsc2UgewotICAgIG5l
YXJlbmRfbWFza2luZ19tYXJnaW4gPSBjb25maWcuZ2Fpbl9tYXNrLm03OwotICB9Ci0KLSAgUlRD
X0RDSEVDS19MRSgwLmYsIG5lYXJlbmRfbWFza2luZ19tYXJnaW4pOwotICBSVENfRENIRUNLX0dU
KDEuZiwgbmVhcmVuZF9tYXNraW5nX21hcmdpbik7Ci0KLSAgY29uc3QgZmxvYXQgbWFza2VyX21h
cmdpbiA9Ci0gICAgICBsaW5lYXJfZWNob19lc3RpbWF0ZSA/IGNvbmZpZy5nYWluX21hc2subTAg
OiBjb25maWcuZ2Fpbl9tYXNrLm04OwotCi0gIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgZ2Fpbi0+
c2l6ZSgpOyArK2spIHsKLSAgICAvLyBUT0RPKGRldmljZW50ZXBlbmEpOiBFeHBlcmltZW50IGJ5
IHJlbW92aW5nIHRoZSByZXZlcmJlcmF0aW9uIGVzdGltYXRpb24KLSAgICAvLyBmcm9tIHRoZSBu
ZWFyZW5kIHNpZ25hbCBiZWZvcmUgY29tcHV0aW5nIHRoZSBnYWlucy4KLSAgICBjb25zdCBmbG9h
dCB1bml0eV9nYWluX21hc2tlciA9IHN0ZDo6bWF4KG5lYXJlbmRba10sIG1hc2tlcltrXSk7Ci0g
ICAgUlRDX0RDSEVDS19MRSgwLmYsIG5lYXJlbmRfbWFza2luZ19tYXJnaW4gKiB1bml0eV9nYWlu
X21hc2tlcik7Ci0gICAgaWYgKHdlaWdodGVkX2VjaG9ba10gPD0gbmVhcmVuZF9tYXNraW5nX21h
cmdpbiAqIHVuaXR5X2dhaW5fbWFza2VyIHx8Ci0gICAgICAgIHVuaXR5X2dhaW5fbWFza2VyIDw9
IDAuZikgewotICAgICAgKCpnYWluKVtrXSA9IDEuZjsKLSAgICB9IGVsc2UgewotICAgICAgUlRD
X0RDSEVDS19MVCgwLmYsIHVuaXR5X2dhaW5fbWFza2VyKTsKLSAgICAgICgqZ2Fpbilba10gPQot
ICAgICAgICAgIHN0ZDo6bWF4KDAuZiwgKDEuZiAtIGNvbmZpZy5nYWluX21hc2suZ2Fpbl9jdXJ2
ZV9zbG9wZSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodGVkX2Vj
aG9ba10gLyB1bml0eV9nYWluX21hc2tlcikgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbmZpZy5nYWluX21hc2suZ2Fpbl9jdXJ2ZV9vZmZzZXQpOwotICAgICAgKCpnYWluKVtrXSA9
IHN0ZDo6bWF4KG1hc2tlcl9tYXJnaW4gKiBtYXNrZXJba10gKiBvbmVfYnlfd2VpZ2h0ZWRfZWNo
b1trXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKmdhaW4pW2tdKTsKLSAgICB9Ci0K
LSAgICAoKmdhaW4pW2tdID0gc3RkOjptaW4oc3RkOjptYXgoKCpnYWluKVtrXSwgbWluX2dhaW5b
a10pLCBtYXhfZ2FpbltrXSk7Ci0gIH0KLX0KLQogLy8gVE9ETyhwZWFoKTogTWFrZSBhZGFwdGl2
ZSB0byB0YWtlIHRoZSBhY3R1YWwgZmlsdGVyIGVycm9yIGludG8gYWNjb3VudC4KIGNvbnN0ZXhw
ciBzaXplX3Qga1VwcGVyQWNjdXJhdGVCYW5kUGx1czEgPSAyOTsKIApAQCAtMzIxLDMwICsyNjUs
OSBAQCB2b2lkIFN1cHByZXNzaW9uR2Fpbjo6TG93ZXJCYW5kR2FpbigKICAgc3RkOjphcnJheTxm
bG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBtYXhfZ2FpbjsKICAgR2V0TWF4R2FpbihtYXhfZ2Fp
bik7CiAKLSAgLy8gSXRlcmF0aXZlbHkgY29tcHV0ZSB0aGUgZ2FpbiByZXF1aXJlZCB0byBhdHRl
bnVhdGUgdGhlIGVjaG8gdG8gYSBub24KLSAgLy8gbm90aWNlYWJsZSBsZXZlbC4KLQotICBpZiAo
ZW5hYmxlX25ld19zdXBwcmVzc2lvbl8pIHsKICAgICBHYWluVG9Ob0F1ZGlibGVFY2hvKG5lYXJl
bmQsIHdlaWdodGVkX3Jlc2lkdWFsX2VjaG8sIGNvbWZvcnRfbm9pc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtaW5fZ2FpbiwgbWF4X2dhaW4sIGdhaW4pOwogICAgIEFkanVzdEZvckV4dGVy
bmFsRmlsdGVycyhnYWluKTsKLSAgfSBlbHNlIHsKLSAgICBjb25zdCBib29sIGxpbmVhcl9lY2hv
X2VzdGltYXRlID0gYWVjX3N0YXRlLlVzYWJsZUxpbmVhckVzdGltYXRlKCk7Ci0gICAgc3RkOjph
cnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBtYXNrZXI7Ci0gICAgc3RkOjphcnJheTxm
bG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBvbmVfYnlfd2VpZ2h0ZWRfZWNobzsKLSAgICBzdGQ6
OnRyYW5zZm9ybSh3ZWlnaHRlZF9yZXNpZHVhbF9lY2hvLmJlZ2luKCksIHdlaWdodGVkX3Jlc2lk
dWFsX2VjaG8uZW5kKCksCi0gICAgICAgICAgICAgICAgICAgb25lX2J5X3dlaWdodGVkX2VjaG8u
YmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICBbXShmbG9hdCBlKSB7IHJldHVybiBlID4gMC5m
ID8gMS5mIC8gZSA6IDEuZjsgfSk7Ci0gICAgZ2Fpbi0+ZmlsbCgwLmYpOwotICAgIGZvciAoaW50
IGsgPSAwOyBrIDwgMjsgKytrKSB7Ci0gICAgICBzdGQ6OmNvcHkoY29tZm9ydF9ub2lzZS5iZWdp
bigpLCBjb21mb3J0X25vaXNlLmVuZCgpLCBtYXNrZXIuYmVnaW4oKSk7Ci0gICAgICBHYWluVG9O
b0F1ZGlibGVFY2hvRmFsbGJhY2soY29uZmlnXywgbG93X25vaXNlX3JlbmRlciwgc2F0dXJhdGVk
X2VjaG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWFyX2VjaG9fZXN0
aW1hdGUsIG5lYXJlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0
ZWRfcmVzaWR1YWxfZWNobywgbWFza2VyLCBtaW5fZ2FpbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXhfZ2Fpbiwgb25lX2J5X3dlaWdodGVkX2VjaG8sIGdhaW4pOwotICAg
ICAgQWRqdXN0Rm9yRXh0ZXJuYWxGaWx0ZXJzKGdhaW4pOwotICAgIH0KLSAgfQogCiAgIC8vIEFk
anVzdCB0aGUgZ2FpbiBmb3IgZnJlcXVlbmNpZXMgd2hpY2ggaGF2ZSBub3QgeWV0IGNvbnZlcmdl
ZC4KICAgQWRqdXN0Tm9uQ29udmVyZ2VkRnJlcXVlbmNpZXMoZ2Fpbik7CkBAIC0zNzIsNyArMjk1
LDYgQEAgU3VwcHJlc3Npb25HYWluOjpTdXBwcmVzc2lvbkdhaW4oY29uc3QgRWNob0NhbmNlbGxl
cjNDb25maWcmIGNvbmZpZywKICAgICAgIGNvbmZpZ18oY29uZmlnKSwKICAgICAgIHN0YXRlX2No
YW5nZV9kdXJhdGlvbl9ibG9ja3NfKAogICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oY29uZmln
Xy5maWx0ZXIuY29uZmlnX2NoYW5nZV9kdXJhdGlvbl9ibG9ja3MpKSwKLSAgICAgIGVuYWJsZV9u
ZXdfc3VwcHJlc3Npb25fKEVuYWJsZU5ld1N1cHByZXNzaW9uKCkpLAogICAgICAgbW92aW5nX2F2
ZXJhZ2VfKGtGZnRMZW5ndGhCeTJQbHVzMSwKICAgICAgICAgICAgICAgICAgICAgICBjb25maWcu
c3VwcHJlc3Nvci5uZWFyZW5kX2F2ZXJhZ2VfYmxvY2tzKSwKICAgICAgIG5lYXJlbmRfcGFyYW1z
Xyhjb25maWdfLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcpLApAQCAtNDE2LDcgKzMzOCw3IEBA
IHZvaWQgU3VwcHJlc3Npb25HYWluOjpHZXRHYWluKAogCiAgIC8vIFVwZGF0ZSB0aGUgc3RhdGUg
c2VsZWN0aW9uLgogICBkb21pbmFudF9uZWFyZW5kX2RldGVjdG9yXy5VcGRhdGUobmVhcmVuZF9z
cGVjdHJ1bSwgcmVzaWR1YWxfZWNob19zcGVjdHJ1bSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbWZvcnRfbm9pc2Vfc3BlY3RydW0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tZm9ydF9ub2lzZV9zcGVjdHJ1bSwgaW5pdGlhbF9zdGF0ZV8p
OwogCiAgIC8vIENvbXB1dGUgZ2FpbiBmb3IgdGhlIGxvd2VyIGJhbmQuCiAgIGJvb2wgbG93X25v
aXNlX3JlbmRlciA9IGxvd19yZW5kZXJfZGV0ZWN0b3JfLkRldGVjdChyZW5kZXIpOwpAQCAtNDc1
LDE0ICszOTcsMTcgQEAgYm9vbCBTdXBwcmVzc2lvbkdhaW46Okxvd05vaXNlUmVuZGVyRGV0ZWN0
b3I6OkRldGVjdCgKIFN1cHByZXNzaW9uR2Fpbjo6RG9taW5hbnROZWFyZW5kRGV0ZWN0b3I6OkRv
bWluYW50TmVhcmVuZERldGVjdG9yKAogICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpT
dXBwcmVzc29yOjpEb21pbmFudE5lYXJlbmREZXRlY3Rpb24gY29uZmlnKQogICAgIDogZW5yX3Ro
cmVzaG9sZF8oY29uZmlnLmVucl90aHJlc2hvbGQpLAorICAgICAgZW5yX2V4aXRfdGhyZXNob2xk
Xyhjb25maWcuZW5yX2V4aXRfdGhyZXNob2xkKSwKICAgICAgIHNucl90aHJlc2hvbGRfKGNvbmZp
Zy5zbnJfdGhyZXNob2xkKSwKICAgICAgIGhvbGRfZHVyYXRpb25fKGNvbmZpZy5ob2xkX2R1cmF0
aW9uKSwKLSAgICAgIHRyaWdnZXJfdGhyZXNob2xkXyhjb25maWcudHJpZ2dlcl90aHJlc2hvbGQp
IHt9CisgICAgICB0cmlnZ2VyX3RocmVzaG9sZF8oY29uZmlnLnRyaWdnZXJfdGhyZXNob2xkKSwK
KyAgICAgIHVzZV9kdXJpbmdfaW5pdGlhbF9waGFzZV8oY29uZmlnLnVzZV9kdXJpbmdfaW5pdGlh
bF9waGFzZSkge30KIAogdm9pZCBTdXBwcmVzc2lvbkdhaW46OkRvbWluYW50TmVhcmVuZERldGVj
dG9yOjpVcGRhdGUoCiAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IG5lYXJlbmRfc3Bl
Y3RydW0sCiAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHJlc2lkdWFsX2VjaG9fc3Bl
Y3RydW0sCi0gICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNvbWZvcnRfbm9pc2Vfc3Bl
Y3RydW0pIHsKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY29tZm9ydF9ub2lzZV9z
cGVjdHJ1bSwKKyAgICBib29sIGluaXRpYWxfc3RhdGUpIHsKICAgYXV0byBsb3dfZnJlcXVlbmN5
X2VuZXJneSA9IFtdKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBzcGVjdHJ1bSkgewogICAg
IFJUQ19EQ0hFQ0tfTEUoMTYsIHNwZWN0cnVtLnNpemUoKSk7CiAgICAgcmV0dXJuIHN0ZDo6YWNj
dW11bGF0ZShzcGVjdHJ1bS5iZWdpbigpICsgMSwgc3BlY3RydW0uYmVnaW4oKSArIDE2LCAwLmYp
OwpAQCAtNDkzLDcgKzQxOCw4IEBAIHZvaWQgU3VwcHJlc3Npb25HYWluOjpEb21pbmFudE5lYXJl
bmREZXRlY3Rvcjo6VXBkYXRlKAogCiAgIC8vIERldGVjdCBzdHJvbmcgYWN0aXZlIG5lYXJlbmQg
aWYgdGhlIG5lYXJlbmQgaXMgc3VmZmljaWVudGx5IHN0cm9uZ2VyIHRoYW4KICAgLy8gdGhlIGVj
aG8gYW5kIHRoZSBuZWFyZW5kIG5vaXNlLgotICBpZiAobmVfc3VtID4gZW5yX3RocmVzaG9sZF8g
KiBlY2hvX3N1bSAmJgorICBpZiAoKCFpbml0aWFsX3N0YXRlIHx8IHVzZV9kdXJpbmdfaW5pdGlh
bF9waGFzZV8pICYmCisgICAgICBuZV9zdW0gPiBlbnJfdGhyZXNob2xkXyAqIGVjaG9fc3VtICYm
CiAgICAgICBuZV9zdW0gPiBzbnJfdGhyZXNob2xkXyAqIG5vaXNlX3N1bSkgewogICAgIGlmICgr
K3RyaWdnZXJfY291bnRlcl8gPj0gdHJpZ2dlcl90aHJlc2hvbGRfKSB7CiAgICAgICAvLyBBZnRl
ciBhIHBlcmlvZCBvZiBzdHJvbmcgYWN0aXZlIG5lYXJlbmQgYWN0aXZpdHksIGZsYWcgbmVhcmVu
ZCBtb2RlLgpAQCAtNTA1LDYgKzQzMSwxMiBAQCB2b2lkIFN1cHByZXNzaW9uR2Fpbjo6RG9taW5h
bnROZWFyZW5kRGV0ZWN0b3I6OlVwZGF0ZSgKICAgICB0cmlnZ2VyX2NvdW50ZXJfID0gc3RkOjpt
YXgoMCwgdHJpZ2dlcl9jb3VudGVyXyAtIDEpOwogICB9CiAKKyAgLy8gRXhpdCBuZWFyZW5kLXN0
YXRlIGVhcmx5IGF0IHN0cm9uZyBlY2hvLgorICBpZiAobmVfc3VtIDwgZW5yX2V4aXRfdGhyZXNo
b2xkXyAqIGVjaG9fc3VtICYmCisgICAgICBlY2hvX3N1bSA+IHNucl90aHJlc2hvbGRfICogbm9p
c2Vfc3VtKSB7CisgICAgaG9sZF9jb3VudGVyXyA9IDA7CisgIH0KKwogICAvLyBSZW1haW4gaW4g
YW55IG5lYXJlbmQgbW9kZSBmb3IgYSBjZXJ0YWluIGR1cmF0aW9uLgogICBob2xkX2NvdW50ZXJf
ID0gc3RkOjptYXgoMCwgaG9sZF9jb3VudGVyXyAtIDEpOwogICBuZWFyZW5kX3N0YXRlXyA9IGhv
bGRfY291bnRlcl8gPiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25f
Z2Fpbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbi5oCmluZGV4IDRlYjg1ODFh
ODYyYTZkY2NhMzIwMmUwYzA2ZTYwNjNkNzIzN2Y5ZmQuLmU3NGNkOTYzMmIxMjNhYWRiMTA0MmJh
NGI0NmJiODcxZjdkMmU4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9u
X2dhaW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluLmgKQEAgLTEyLDEz
ICsxMiwxOCBAQAogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TVVBQUkVT
U0lPTl9HQUlOX0hfCiAKICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1
ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVy
M19jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMz
X2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlY19z
dGF0ZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9kYXRh
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbW92aW5nX2F2ZXJh
Z2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfc2ln
bmFsX2FuYWx5emVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dp
bmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdp
Yy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTEwMiwxMyArMTA3LDE2IEBAIGNsYXNzIFN1
cHByZXNzaW9uR2FpbiB7CiAgICAgLy8gVXBkYXRlcyB0aGUgc3RhdGUgc2VsZWN0aW9uIGJhc2Vk
IG9uIGxhdGVzdCBzcGVjdHJhbCBlc3RpbWF0ZXMuCiAgICAgdm9pZCBVcGRhdGUocnRjOjpBcnJh
eVZpZXc8Y29uc3QgZmxvYXQ+IG5lYXJlbmRfc3BlY3RydW0sCiAgICAgICAgICAgICAgICAgcnRj
OjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHJlc2lkdWFsX2VjaG9fc3BlY3RydW0sCi0gICAgICAg
ICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNvbWZvcnRfbm9pc2Vfc3BlY3Ry
dW0pOworICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjb21mb3J0
X25vaXNlX3NwZWN0cnVtLAorICAgICAgICAgICAgICAgIGJvb2wgaW5pdGlhbF9zdGF0ZSk7CiAK
ICAgIHByaXZhdGU6CiAgICAgY29uc3QgZmxvYXQgZW5yX3RocmVzaG9sZF87CisgICAgY29uc3Qg
ZmxvYXQgZW5yX2V4aXRfdGhyZXNob2xkXzsKICAgICBjb25zdCBmbG9hdCBzbnJfdGhyZXNob2xk
XzsKICAgICBjb25zdCBpbnQgaG9sZF9kdXJhdGlvbl87CiAgICAgY29uc3QgaW50IHRyaWdnZXJf
dGhyZXNob2xkXzsKKyAgICBjb25zdCBib29sIHVzZV9kdXJpbmdfaW5pdGlhbF9waGFzZV87CiAK
ICAgICBib29sIG5lYXJlbmRfc3RhdGVfID0gZmFsc2U7CiAgICAgaW50IHRyaWdnZXJfY291bnRl
cl8gPSAwOwpAQCAtMTM3LDcgKzE0NSw2IEBAIGNsYXNzIFN1cHByZXNzaW9uR2FpbiB7CiAgIExv
d05vaXNlUmVuZGVyRGV0ZWN0b3IgbG93X3JlbmRlcl9kZXRlY3Rvcl87CiAgIGJvb2wgaW5pdGlh
bF9zdGF0ZV8gPSB0cnVlOwogICBpbnQgaW5pdGlhbF9zdGF0ZV9jaGFuZ2VfY291bnRlcl8gPSAw
OwotICBjb25zdCBib29sIGVuYWJsZV9uZXdfc3VwcHJlc3Npb25fOwogICBhZWMzOjpNb3ZpbmdB
dmVyYWdlIG1vdmluZ19hdmVyYWdlXzsKICAgY29uc3QgR2FpblBhcmFtZXRlcnMgbmVhcmVuZF9w
YXJhbXNfOwogICBjb25zdCBHYWluUGFyYW1ldGVycyBub3JtYWxfcGFyYW1zXzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW5fbGltaXRlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3N1cHByZXNzaW9uX2dhaW5fbGltaXRlci5jYwppbmRleCBlM2Q3YTY2MGJmMDg3OTE5
MzE1NWQwMDllOGM4MjJkYzc5YWRiN2QyLi42NjI1YTc3OWMyNDRhODg5ZmE2YWVkM2IzMGVlMjcw
OTNmYWE0ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluX2xp
bWl0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbl9saW1pdGVyLmNj
CkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbl91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW5fdW5pdHRlc3QuY2MKaW5kZXggMWZmOTZjYTZlMDU1
MmQ4Y2QzYzM1MDgzZWE4MGJkMThjZjYzN2U2Ni4uNjUxZmQzNjc0YmMxM2M5NmVlM2IyMTBmOTMx
NjczZTAxMmYwYzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fp
bl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluX3VuaXR0
ZXN0LmNjCkBAIC03Nyw3ICs3Nyw3IEBAIFRFU1QoU3VwcHJlc3Npb25HYWluLCBCYXNpY0dhaW5D
b21wdXRhdGlvbikgewogICBBcG1EYXRhRHVtcGVyIGRhdGFfZHVtcGVyKDQyKTsKICAgU3VidHJh
Y3RvciBzdWJ0cmFjdG9yKGNvbmZpZywgJmRhdGFfZHVtcGVyLCBEZXRlY3RPcHRpbWl6YXRpb24o
KSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1
ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7CisgICAg
ICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKICAgYWJzbDo6b3B0aW9u
YWw8RGVsYXlFc3RpbWF0ZT4gZGVsYXlfZXN0aW1hdGU7CiAKICAgLy8gRW5zdXJlIHRoYXQgYSBz
dHJvbmcgbm9pc2UgaXMgZGV0ZWN0ZWQgdG8gbWFzayBhbnkgZWNob2VzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9i
dWZmZXIuY2MKaW5kZXggZjQ5MTE2OGQ5YTE0MWFlMTc4OTc3MGVhMDE2OTZjNzQyMzNiNGJlNC4u
MDY4Mjg4NWMwYzcxMDg4ODFjYzQyNjkwNzRiYjZhYTMwY2IwMzlhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3Jf
YnVmZmVyLmNjCkBAIC0xMCw3ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy92ZWN0b3JfYnVmZmVyLmgiCiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9i
dWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuaAppbmRleCBjN2Q0ZjY4YjI3
YzM4ODZmMzliYWM0YjkxOThlY2EwNmQwYTUzMjg4Li40YzAyNTdjY2VhNGNkMGU4OWI1MzY3Mzgx
YWNjODc5NzM0ODNlNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3JfYnVmZmVy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5oCkBAIC0xMSw2ICsxMSw3IEBA
CiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1ZFQ1RPUl9CVUZGRVJfSF8K
ICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfVkVDVE9SX0JVRkZFUl9IXwog
CisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvQlVJTEQuZ24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjX2R1bXAvQlVJTEQuZ24KaW5kZXggZTVmZWUzZTk1ZjcxNTRjOWEyMDc2
ZjdjNjNhMTVhZTBlYmIxY2IwMy4uZDQyNjJjYTQ4NTgzNWRhZDUxNDk3YTM1Yzk1MTM4NmI5ZWYy
YzdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wL0JVSUxELmduCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWNfZHVtcC9CVUlMRC5nbgpAQCAtMTcsNiArMTcsNyBAQCBydGNfc291cmNlX3NldCgi
YWVjX2R1bXAiKSB7CiAgIGRlcHMgPSBbCiAgICAgIi4uLyIsCiAgICAgIi4uLy4uLy4uL3J0Y19i
YXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0
Y19leHBvcnQiLAogICBdCiB9CiAKQEAgLTQyLDYgKzQzLDcgQEAgcnRjX3NvdXJjZV9zZXQoIm1v
Y2tfYWVjX2R1bXBfdW5pdHRlc3RzIikgewogCiAgIGRlcHMgPSBbCiAgICAgIjptb2NrX2FlY19k
dW1wIiwKKyAgICAiLi46YXBpIiwKICAgICAiLi4vIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlY19kdW1wL2FlY19kdW1wX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVt
cC9hZWNfZHVtcF9mYWN0b3J5LmgKaW5kZXggZTNmMDBmNjdhMmUyOGUwYmNlYzRhMTUwNjYxZDFl
NTAyMjlhODBlNC4uMWU1NWQ1OTRlZTMxMzQwZjI5NjU4MzEzNjkwNDBiMTc2Y2VjNzExNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wL2FlY19kdW1wX2ZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjX2R1bXAvYWVjX2R1bXBfZmFjdG9yeS5oCkBAIC0xNiw2ICsxNiw3IEBACiAKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hZWNfZHVtcC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0
ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIGNsYXNzIFRhc2tRdWV1ZTsKQEAg
LTIzLDcgKzI0LDcgQEAgY2xhc3MgVGFza1F1ZXVlOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAot
Y2xhc3MgQWVjRHVtcEZhY3RvcnkgeworY2xhc3MgUlRDX0VYUE9SVCBBZWNEdW1wRmFjdG9yeSB7
CiAgcHVibGljOgogICAvLyBUaGUgfHdvcmtlcl9xdWV1ZXwgbWF5IG5vdCBiZSBudWxsIGFuZCBt
dXN0IG91dGxpdmUgdGhlIGNyZWF0ZWQKICAgLy8gQWVjRHVtcCBpbnN0YW5jZS4gfG1heF9sb2df
c2l6ZV9ieXRlcyA9PSAtMXwgbWVhbnMgdGhlIGxvZyBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjX2R1bXAvYWVjX2R1bXBfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVtcC9hZWNfZHVt
cF9pbXBsLmNjCmluZGV4IDI3MzI5MzQxNDA2ODQ4ODY5NTllZWVhNWE1NjY5MDE5NTYyODgxYTYu
LjkwMjBmMmI5ZGNhMTRlNjM1YjgzNDFmMWQ2NDY5MmIxMDBiZjhhZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWNfZHVtcC9hZWNfZHVtcF9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVt
cC9hZWNfZHVtcF9pbXBsLmNjCkBAIC02NSw3ICs2NSw3IEBAIEFlY0R1bXBJbXBsOjpBZWNEdW1w
SW1wbChzdGQ6OnVuaXF1ZV9wdHI8RmlsZVdyYXBwZXI+IGRlYnVnX2ZpbGUsCiAKIEFlY0R1bXBJ
bXBsOjp+QWVjRHVtcEltcGwoKSB7CiAgIC8vIEJsb2NrIHVudGlsIGFsbCB0YXNrcyBoYXZlIGZp
bmlzaGVkIHJ1bm5pbmcuCi0gIHJ0Yzo6RXZlbnQgdGhyZWFkX3N5bmNfZXZlbnQoZmFsc2UgLyog
bWFudWFsX3Jlc2V0ICovLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgdGhyZWFkX3N5bmNfZXZlbnQ7
CiAgIHdvcmtlcl9xdWV1ZV8tPlBvc3RUYXNrKFsmdGhyZWFkX3N5bmNfZXZlbnRdIHsgdGhyZWFk
X3N5bmNfZXZlbnQuU2V0KCk7IH0pOwogICAvLyBXYWl0IHVudGlsIHRoZSBldmVudCBoYXMgYmVl
biBzaWduYWxlZCB3aXRoIC5TZXQoKS4gQnkgdGhlbiBhbGwKICAgLy8gcGVuZGluZyB0YXNrcyB3
aWxsIGhhdmUgZmluaXNoZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjbS9hZWNtX2NvcmUu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjbS9hZWNtX2NvcmUuY2MKaW5kZXggMGU1NmI1MGM1ZWYzMDZiODli
YjZlMjhhODNmY2QwNTFkN2Q0MDNhMi4uNjdiNzBiZmIzNjY3MGE0Mzk4ZWM4ZDIwMDE5YzQzZTgw
ZmUyMTU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY20vYWVjbV9jb3JlLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWNtL2FlY21fY29yZS5jYwpAQCAtMTIsMTYgKzEyLDE1IEBACiAKICNpbmNsdWRl
IDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KIAog
ZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3JpbmdfYnVmZmVyLmgiCiAjaW5j
bHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvcmVhbF9mZnQuaCIK
IH0KKyNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWdu
YWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlY20vZWNob19jb250cm9sX21vYmlsZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy91dGlsaXR5L2RlbGF5X2VzdGltYXRvcl93cmFwcGVyLmgiCi1leHRlcm4gIkMi
IHsKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jcHVfZmVhdHVyZXNfd3JhcHBl
ci5oIgotfQogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
Y20vZWNob19jb250cm9sX21vYmlsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNtL2VjaG9fY29udHJvbF9t
b2JpbGUuY2MKaW5kZXggYzk0NzU2M2IyODA1ZTJlOTc3MTI0MWYzYmQxZTU0M2M2YWYyZjg0OC4u
MjU3ZGZiZjU2ZTRlODE2MzRjYTg4MTY5MTM0OWExNmRjZmI2ODdiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlY20vZWNob19jb250cm9sX21vYmlsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjbS9l
Y2hvX2NvbnRyb2xfbW9iaWxlLmNjCkBAIC0xNCwxMCArMTQsMTIgQEAKICNpbmNsdWRlIDxzdGRp
by5oPgogI2VuZGlmCiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAK
IGV4dGVybiAiQyIgewogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9yaW5nX2J1ZmZlci5oIgogI2lu
Y2x1ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9j
ZXNzaW5nX2xpYnJhcnkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
bS9hZWNtX2RlZmluZXMuaCIKIH0KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjbS9hZWNtX2NvcmUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2MuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjL2FnYy5jYwppbmRleCAxMmM4Y2ZiN2ZiZDE3MzFkNzgyZmZjNGQ5MzEyZDRl
NDg4ZDk3NmQyLi5jMjRkYjBkZDUyMjViZTI4MjE0MzdhZjg0ZjU5ZGE0M2Q4MmVjYzY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnYy5jYwpA
QCAtMTIsOCArMTIsNiBAQAogCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4K
LQotI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYy9hZ2MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvYWdjLmgKaW5kZXggNWQz
NGMyMTJmM2FiZmY5OGVlNmYzYWFmYmRmNWQ4MDFkOTdkMmQ4NC4uYWJkNjhkNWUzMTFkODFmYThk
MmEyNGI1YzE0ZTNkNTRmMzJhYmViMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2MuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnYy5oCkBAIC0xNyw3ICsxNyw2IEBACiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCi1jbGFzcyBBdWRpb0ZyYW1lOwogY2xhc3MgTG91ZG5lc3NIaXN0b2dyYW07CiAK
IGNsYXNzIEFnYyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnY19tYW5hZ2VyX2RpcmVj
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MvYWdjX21hbmFnZXJfZGlyZWN0LmNjCmluZGV4IGRjNmQ0NTEy
MWNkZDZkYmZkMGY5ZmNjMDE4ODcwY2FmYjFlZmVjMjIuLjVjNGRlZWNjYmYyOWM1ZTkzYWIwMTc0
NWJkNjQzZDNiN2E1ODgwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvYWdjX21hbmFnZXJf
ZGlyZWN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvYWdjX21hbmFnZXJfZGlyZWN0LmNjCkBAIC0x
MCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2Fn
Y19tYW5hZ2VyX2RpcmVjdC5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNt
YXRoPgogCiAjaWZkZWYgV0VCUlRDX0FHQ19ERUJVR19EVU1QCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvbG91ZG5lc3NfaGlz
dG9ncmFtLmNjCmluZGV4IDBlZDU4NTBlNzJkNTY3NTMzYTMyYmFkYWYzMmY0NDg1YTRmYjEzYjcu
LmNkNTdiODJiY2M3MjQ2NWE5MTFhN2YzNjdjMTk0MTU4NDIzOWVhYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MvbG91ZG5lc3NfaGlzdG9ncmFtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvbG91
ZG5lc3NfaGlzdG9ncmFtLmNjCkBAIC0xMCw4ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5oIgogCisjaW5jbHVkZSA8
c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y21hdGg+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KIAogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xvdWRu
ZXNzX2hpc3RvZ3JhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9sb3VkbmVzc19oaXN0b2dyYW0uaAppbmRl
eCBkOGFkNzUxMTc2NGE1YWExODQ2NTQxZjhjYmViYTBhOGQ4OTZkNzM5Li5iMjEwYmU5NmUzYjkx
ZWFhMjgyZDFkZjUzOTM3N2NmYWJkMzlkY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xv
dWRuZXNzX2hpc3RvZ3JhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvbG91ZG5lc3NfaGlzdG9ncmFt
LmgKQEAgLTExLDggKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FH
Q19MT1VETkVTU19ISVNUT0dSQU1fSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5H
X0FHQ19MT1VETkVTU19ISVNUT0dSQU1fSF8KIAotI2luY2x1ZGUgPHN0cmluZy5oPgotCisjaW5j
bHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvQlVJ
TEQuZ24KaW5kZXggMTg2NWZkZTNlOTFlNGZhYmY3NzljYWU2ZjE4MGMzMjZhZDk1YzY1Yi4uNTQz
MWExNTBjMjNjMmI4MGE5ODU1MWFkZTYzMjQ3ZTcwZWM2YWZiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvQlVJTEQuZ24KQEAgLTI3LDYg
KzI3LDcgQEAgcnRjX3NvdXJjZV9zZXQoImxldmVsX2VzdGltYXRpb25fYWdjIikgewogICAgICI6
Z2Fpbl9hcHBsaWVyIiwKICAgICAiOm5vaXNlX2xldmVsX2VzdGltYXRvciIsCiAgICAgIjpybm5f
dmFkX3dpdGhfbGV2ZWwiLAorICAgICIuLjphcGkiLAogICAgICIuLjphcG1fbG9nZ2luZyIsCiAg
ICAgIi4uOmF1ZGlvX2ZyYW1lX3ZpZXciLAogICAgICIuLi8uLi8uLi9hcGk6YXJyYXlfdmlldyIs
CkBAIC01OCw2ICs1OSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhZGFwdGl2ZV9kaWdpdGFsIikgewog
ICAgICI6Z2Fpbl9hcHBsaWVyIiwKICAgICAiOm5vaXNlX2xldmVsX2VzdGltYXRvciIsCiAgICAg
Ijpybm5fdmFkX3dpdGhfbGV2ZWwiLAorICAgICIuLjphcGkiLAogICAgICIuLjphcG1fbG9nZ2lu
ZyIsCiAgICAgIi4uOmF1ZGlvX2ZyYW1lX3ZpZXciLAogICAgICIuLi8uLi8uLi9hcGk6YXJyYXlf
dmlldyIsCkBAIC05NiwxMiArOTgsMTAgQEAgcnRjX3NvdXJjZV9zZXQoImZpeGVkX2RpZ2l0YWwi
KSB7CiAgIHNvdXJjZXMgPSBbCiAgICAgImZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmNj
IiwKICAgICAiZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCIsCi0gICAgImZpeGVkX2dh
aW5fY29udHJvbGxlci5jYyIsCi0gICAgImZpeGVkX2dhaW5fY29udHJvbGxlci5oIiwKLSAgICAi
Z2Fpbl9jdXJ2ZV9hcHBsaWVyLmNjIiwKLSAgICAiZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmgiLAogICAg
ICJpbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYyIsCiAgICAgImludGVycG9sYXRlZF9nYWluX2N1
cnZlLmgiLAorICAgICJsaW1pdGVyLmNjIiwKKyAgICAibGltaXRlci5oIiwKICAgXQogCiAgIGNv
bmZpZ3MgKz0gWyAiLi46YXBtX2RlYnVnX2R1bXAiIF0KQEAgLTEyOCw2ICsxMjgsNyBAQCBydGNf
c291cmNlX3NldCgiZ2Fpbl9hcHBsaWVyIikgewogICBkZXBzID0gWwogICAgICI6Y29tbW9uIiwK
ICAgICAiLi46YXVkaW9fZnJhbWVfdmlldyIsCisgICAgIi4uLy4uLy4uL2FwaTphcnJheV92aWV3
IiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAogICBdCiB9CkBAIC0xOTEs
OCArMTkyLDggQEAgcnRjX3NvdXJjZV9zZXQoImFkYXB0aXZlX2RpZ2l0YWxfdW5pdHRlc3RzIikg
ewogICAgICIuLi8uLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uLy4uL2NvbW1vbl9h
dWRpbyIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uLy4uLy4uL3J0
Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9h
cHByb3ZlZCIsCi0gICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwK
ICAgXQogfQogCkBAIC0yMDMsNyArMjA0LDcgQEAgcnRjX3NvdXJjZV9zZXQoImJpcXVhZF9maWx0
ZXJfdW5pdHRlc3RzIikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIjpiaXF1YWRfZmlsdGVyIiwK
LSAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAorICAgICIuLi8u
Li8uLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgXQogfQogCkBAIC0yMTYsMTEgKzIxNywx
MCBAQCBydGNfc291cmNlX3NldCgiZml4ZWRfZGlnaXRhbF91bml0dGVzdHMiKSB7CiAgICAgImNv
bXB1dGVfaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MiLAogICAgICJjb21wdXRlX2ludGVycG9s
YXRlZF9nYWluX2N1cnZlLmgiLAogICAgICJmaXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvcl91
bml0dGVzdC5jYyIsCi0gICAgImZpeGVkX2dhaW5fY29udHJvbGxlcl91bml0dGVzdC5jYyIsCi0g
ICAgImdhaW5fY3VydmVfYXBwbGllcl91bml0dGVzdC5jYyIsCiAgICAgImludGVycG9sYXRlZF9n
YWluX2N1cnZlX3VuaXR0ZXN0LmNjIiwKLSAgICAibGltaXRlci5jYyIsCi0gICAgImxpbWl0ZXIu
aCIsCisgICAgImxpbWl0ZXJfZGJfZ2Fpbl9jdXJ2ZS5jYyIsCisgICAgImxpbWl0ZXJfZGJfZ2Fp
bl9jdXJ2ZS5oIiwKKyAgICAibGltaXRlcl9kYl9nYWluX2N1cnZlX3VuaXR0ZXN0LmNjIiwKICAg
ICAibGltaXRlcl91bml0dGVzdC5jYyIsCiAgIF0KICAgZGVwcyA9IFsKQEAgLTIzMiw4ICsyMzIs
OCBAQCBydGNfc291cmNlX3NldCgiZml4ZWRfZGlnaXRhbF91bml0dGVzdHMiKSB7CiAgICAgIi4u
Ly4uLy4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vLi4vY29tbW9uX2F1ZGlvIiwKICAg
ICAiLi4vLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6Z3Vu
aXRfaGVscGVycyIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwK
LSAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICIuLi8u
Li8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KQEAgLTI1NCwxNCArMjU0LDI5IEBAIHJ0Y19zb3VyY2Vf
c2V0KCJub2lzZV9lc3RpbWF0b3JfdW5pdHRlc3RzIikgewogICAgICIuLjphdWRpb19mcmFtZV92
aWV3IiwKICAgICAiLi4vLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi8uLi9ydGNf
YmFzZTpjaGVja3MiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAg
ICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICIuLi8uLi8uLi9y
dGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCisgIF0KK30KKworcnRjX3NvdXJjZV9zZXQo
InJubl92YWRfd2l0aF9sZXZlbF91bml0dGVzdHMiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBz
b3VyY2VzID0gWworICAgICJ2YWRfd2l0aF9sZXZlbF91bml0dGVzdC5jYyIsCisgIF0KKyAgZGVw
cyA9IFsKKyAgICAiOnJubl92YWRfd2l0aF9sZXZlbCIsCisgICAgIi4uOmF1ZGlvX2ZyYW1lX3Zp
ZXciLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgXQogfQogCiBy
dGNfc291cmNlX3NldCgidGVzdF91dGlscyIpIHsKICAgdGVzdG9ubHkgPSB0cnVlCi0gIHZpc2li
aWxpdHkgPSBbICI6KiIgXQorICB2aXNpYmlsaXR5ID0gWworICAgICI6KiIsCisgICAgIi4uOmF1
ZGlvX3Byb2Nlc3NpbmdfdW5pdHRlc3RzIiwKKyAgXQogICBzb3VyY2VzID0gWwogICAgICJhZ2My
X3Rlc3RpbmdfY29tbW9uLmNjIiwKICAgICAiYWdjMl90ZXN0aW5nX2NvbW1vbi5oIiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2Fk
YXB0aXZlX2FnYy5jYwppbmRleCBjNzM0NmM2MDQyOTk3ZTAwOWQ5MGRiMmNjY2Q1MTg4MDRjNTEz
OTU4Li5hNWQzNjA4OWM0ODQ5NjRkYmNmYjVkZjAwYzBhMjVhY2Q2ZjI1NTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9hZ2MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRh
cHRpdmVfYWdjLmNjCkBAIC0xMCwxMiArMTAsMTAgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGht
PgotI2luY2x1ZGUgPG51bWVyaWM+Ci0KICNpbmNsdWRlICJjb21tb25fYXVkaW8vaW5jbHVkZS9h
dWRpb191dGlsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFk
X3dpdGhfbGV2ZWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2lu
Zy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTI3LDYgKzI1LDE5IEBAIEFkYXB0aXZlQWdjOjpBZGFwdGl2
ZUFnYyhBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIpCiAgIFJUQ19EQ0hFQ0soYXBtX2Rh
dGFfZHVtcGVyKTsKIH0KIAorQWRhcHRpdmVBZ2M6OkFkYXB0aXZlQWdjKEFwbURhdGFEdW1wZXIq
IGFwbV9kYXRhX2R1bXBlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb1By
b2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIyJiBjb25maWcpCisgICAgOiBzcGVlY2hf
bGV2ZWxfZXN0aW1hdG9yXygKKyAgICAgICAgICBhcG1fZGF0YV9kdW1wZXIsCisgICAgICAgICAg
Y29uZmlnLmFkYXB0aXZlX2RpZ2l0YWwubGV2ZWxfZXN0aW1hdG9yLAorICAgICAgICAgIGNvbmZp
Zy5hZGFwdGl2ZV9kaWdpdGFsLnVzZV9zYXR1cmF0aW9uX3Byb3RlY3RvciwKKyAgICAgICAgICBj
b25maWcuYWRhcHRpdmVfZGlnaXRhbC5leHRyYV9zYXR1cmF0aW9uX21hcmdpbl9kYiksCisgICAg
ICBnYWluX2FwcGxpZXJfKGFwbV9kYXRhX2R1bXBlciksCisgICAgICBhcG1fZGF0YV9kdW1wZXJf
KGFwbV9kYXRhX2R1bXBlciksCisgICAgICBub2lzZV9sZXZlbF9lc3RpbWF0b3JfKGFwbV9kYXRh
X2R1bXBlcikgeworICBSVENfRENIRUNLKGFwbV9kYXRhX2R1bXBlcik7Cit9CisKIEFkYXB0aXZl
QWdjOjp+QWRhcHRpdmVBZ2MoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgQWRhcHRpdmVBZ2M6OlByb2Nl
c3MoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IGZsb2F0X2ZyYW1lLApAQCAtMzcsOSArNDgsOSBAQCB2
b2lkIEFkYXB0aXZlQWdjOjpQcm9jZXNzKEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBmbG9hdF9mcmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfd2l0aF9sZXZlbHMudmFkX3Jl
c3VsdC5zcGVlY2hfcHJvYmFiaWxpdHkpOwogICBhcG1fZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJh
Z2MyX3ZhZF9ybXNfZGJmcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsX3dp
dGhfbGV2ZWxzLnZhZF9yZXN1bHQuc3BlZWNoX3Jtc19kYmZzKTsKLQogICBhcG1fZGF0YV9kdW1w
ZXJfLT5EdW1wUmF3KCJhZ2MyX3ZhZF9wZWFrX2RiZnMiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpZ25hbF93aXRoX2xldmVscy52YWRfcmVzdWx0LnNwZWVjaF9wZWFrX2RiZnMpOwor
CiAgIHNwZWVjaF9sZXZlbF9lc3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRpb24oc2lnbmFsX3dpdGhf
bGV2ZWxzLnZhZF9yZXN1bHQpOwogCiAgIHNpZ25hbF93aXRoX2xldmVscy5pbnB1dF9sZXZlbF9k
YmZzID0KQEAgLTYxLDcgKzcyLDYgQEAgdm9pZCBBZGFwdGl2ZUFnYzo6UHJvY2VzcyhBdWRpb0Zy
YW1lVmlldzxmbG9hdD4gZmxvYXRfZnJhbWUsCiAKICAgLy8gVGhlIGdhaW4gYXBwbGllciBhcHBs
aWVzIHRoZSBnYWluLgogICBnYWluX2FwcGxpZXJfLlByb2Nlc3Moc2lnbmFsX3dpdGhfbGV2ZWxz
KTsKLSAgOwogfQogCiB2b2lkIEFkYXB0aXZlQWdjOjpSZXNldCgpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfYWdj
LmgKaW5kZXggNzkyYjJiYzkxNmRlNWFiOWM2ZmFjZDk5OTYxZmI0N2I4MTcxZTIyZS4uMTZjMDA4
MmVkODE2NmQyZTRhODczMDQxOTEzYjE4ZWQ0NDE0YWJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvYWRhcHRpdmVfYWdjLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfYWdjLmgK
QEAgLTExLDEzICsxMSwxMiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdD
Ml9BREFQVElWRV9BR0NfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJf
QURBUFRJVkVfQUdDX0hfCiAKLSNpbmNsdWRlIDxtZW1vcnk+Ci0KICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2
ZWxfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
bm9pc2VfbGV2ZWxfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvaW5jbHVkZS9hdWRpb19mcmFtZV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIGNsYXNzIEFwbURhdGFEdW1wZXI7CkBAIC0yNSw2ICsyNCw4IEBAIGNsYXNzIEFwbURh
dGFEdW1wZXI7CiBjbGFzcyBBZGFwdGl2ZUFnYyB7CiAgcHVibGljOgogICBleHBsaWNpdCBBZGFw
dGl2ZUFnYyhBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIpOworICBBZGFwdGl2ZUFnYyhB
cG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIsCisgICAgICAgICAgICAgIGNvbnN0IEF1ZGlv
UHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjImIGNvbmZpZyk7CiAgIH5BZGFwdGl2
ZUFnYygpOwogCiAgIHZvaWQgUHJvY2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gZmxvYXRfZnJh
bWUsIGZsb2F0IGxhc3RfYXVkaW9fbGV2ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
YWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2
ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5jYwppbmRleCBkNDU2MGNhZjFhOWQ4NDcxYTdlMjZlODEy
NzI5N2RmNTEzOTNkODI5Li42ZWNlODNiMjM5MjQwZmE4ZTExYWJlNGMwNTQ0YTllN2NlNTcyMWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGll
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5j
YwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlv
X3V0aWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2Nv
bW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9k
YXRhX2R1bXBlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJz
L2luY2x1ZGUvbWV0cmljcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2
ZV9tb2RlX2xldmVsX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVf
bGV2ZWxfZXN0aW1hdG9yLmNjCmluZGV4IGI2NzBmNGI0NjkyMDU2YzQwYWFiN2ZmOGU4ZTk3ZDhh
N2ZkYmI4MDcuLjg2NDAzMjRiNTkzZmZiMTI2ZjE1ZDU0YjIxNzkyZWZlNDE1NWU1MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yLmNjCkBAIC0x
MiwxMyArMTIsMjcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L2FnYzJfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dp
bmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKIEFkYXB0aXZlTW9kZUxldmVsRXN0aW1hdG9yOjpBZGFwdGl2ZU1vZGVMZXZlbEVzdGlt
YXRvcigKICAgICBBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIpCi0gICAgOiBzYXR1cmF0
aW9uX3Byb3RlY3Rvcl8oYXBtX2RhdGFfZHVtcGVyKSwKKyAgICA6IGxldmVsX2VzdGltYXRvcl8o
CisgICAgICAgICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMjo6TGV2
ZWxFc3RpbWF0b3I6OmtSbXMpLAorICAgICAgdXNlX3NhdHVyYXRpb25fcHJvdGVjdG9yXyh0cnVl
KSwKKyAgICAgIHNhdHVyYXRpb25fcHJvdGVjdG9yXyhhcG1fZGF0YV9kdW1wZXIpLAorICAgICAg
YXBtX2RhdGFfZHVtcGVyXyhhcG1fZGF0YV9kdW1wZXIpIHt9CisKK0FkYXB0aXZlTW9kZUxldmVs
RXN0aW1hdG9yOjpBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRvcigKKyAgICBBcG1EYXRhRHVtcGVy
KiBhcG1fZGF0YV9kdW1wZXIsCisgICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250
cm9sbGVyMjo6TGV2ZWxFc3RpbWF0b3IgbGV2ZWxfZXN0aW1hdG9yLAorICAgIGJvb2wgdXNlX3Nh
dHVyYXRpb25fcHJvdGVjdG9yLAorICAgIGZsb2F0IGV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2Ri
KQorICAgIDogbGV2ZWxfZXN0aW1hdG9yXyhsZXZlbF9lc3RpbWF0b3IpLAorICAgICAgdXNlX3Nh
dHVyYXRpb25fcHJvdGVjdG9yXyh1c2Vfc2F0dXJhdGlvbl9wcm90ZWN0b3IpLAorICAgICAgc2F0
dXJhdGlvbl9wcm90ZWN0b3JfKGFwbV9kYXRhX2R1bXBlciwgZXh0cmFfc2F0dXJhdGlvbl9tYXJn
aW5fZGIpLAogICAgICAgYXBtX2RhdGFfZHVtcGVyXyhhcG1fZGF0YV9kdW1wZXIpIHt9CiAKIHZv
aWQgQWRhcHRpdmVNb2RlTGV2ZWxFc3RpbWF0b3I6OlVwZGF0ZUVzdGltYXRpb24oCkBAIC00Miwy
MCArNTYsMzggQEAgdm9pZCBBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRvcjo6VXBkYXRlRXN0aW1h
dGlvbigKIAogICBjb25zdCBmbG9hdCBsZWFrX2ZhY3RvciA9IGJ1ZmZlcl9pc19mdWxsID8ga0Z1
bGxCdWZmZXJMZWFrRmFjdG9yIDogMS5mOwogCisgIC8vIFJlYWQgc3BlZWNoIGxldmVsIGVzdGlt
YXRpb24uCisgIGZsb2F0IHNwZWVjaF9sZXZlbF9kYmZzID0gMC5mOworICB1c2luZyBMZXZlbEVz
dGltYXRvclR5cGUgPQorICAgICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9s
bGVyMjo6TGV2ZWxFc3RpbWF0b3I7CisgIHN3aXRjaCAobGV2ZWxfZXN0aW1hdG9yXykgeworICAg
IGNhc2UgTGV2ZWxFc3RpbWF0b3JUeXBlOjprUm1zOgorICAgICAgc3BlZWNoX2xldmVsX2RiZnMg
PSB2YWRfZGF0YS5zcGVlY2hfcm1zX2RiZnM7CisgICAgICBicmVhazsKKyAgICBjYXNlIExldmVs
RXN0aW1hdG9yVHlwZTo6a1BlYWs6CisgICAgICBzcGVlY2hfbGV2ZWxfZGJmcyA9IHZhZF9kYXRh
LnNwZWVjaF9wZWFrX2RiZnM7CisgICAgICBicmVhazsKKyAgfQorCisgIC8vIFVwZGF0ZSBzcGVl
Y2ggbGV2ZWwgZXN0aW1hdGlvbi4KICAgZXN0aW1hdGVfbnVtZXJhdG9yXyA9IGVzdGltYXRlX251
bWVyYXRvcl8gKiBsZWFrX2ZhY3RvciArCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWRfZGF0
YS5zcGVlY2hfcm1zX2RiZnMgKiB2YWRfZGF0YS5zcGVlY2hfcHJvYmFiaWxpdHk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVlY2hfbGV2ZWxfZGJmcyAqIHZhZF9kYXRhLnNwZWVjaF9wcm9i
YWJpbGl0eTsKICAgZXN0aW1hdGVfZGVub21pbmF0b3JfID0KICAgICAgIGVzdGltYXRlX2Rlbm9t
aW5hdG9yXyAqIGxlYWtfZmFjdG9yICsgdmFkX2RhdGEuc3BlZWNoX3Byb2JhYmlsaXR5OwotCiAg
IGxhc3RfZXN0aW1hdGVfd2l0aF9vZmZzZXRfZGJmc18gPSBlc3RpbWF0ZV9udW1lcmF0b3JfIC8g
ZXN0aW1hdGVfZGVub21pbmF0b3JfOwogCi0gIHNhdHVyYXRpb25fcHJvdGVjdG9yXy5VcGRhdGVN
YXJnaW4odmFkX2RhdGEsIGxhc3RfZXN0aW1hdGVfd2l0aF9vZmZzZXRfZGJmc18pOwotICBEZWJ1
Z0R1bXBFc3RpbWF0ZSgpOworICBpZiAodXNlX3NhdHVyYXRpb25fcHJvdGVjdG9yXykgeworICAg
IHNhdHVyYXRpb25fcHJvdGVjdG9yXy5VcGRhdGVNYXJnaW4odmFkX2RhdGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2VzdGltYXRlX3dpdGhfb2Zmc2V0X2Ri
ZnNfKTsKKyAgICBEZWJ1Z0R1bXBFc3RpbWF0ZSgpOworICB9CiB9CiAKIGZsb2F0IEFkYXB0aXZl
TW9kZUxldmVsRXN0aW1hdG9yOjpMYXRlc3RMZXZlbEVzdGltYXRlKCkgY29uc3QgewogICByZXR1
cm4gcnRjOjpTYWZlQ2xhbXA8ZmxvYXQ+KAotICAgICAgbGFzdF9lc3RpbWF0ZV93aXRoX29mZnNl
dF9kYmZzXyArIHNhdHVyYXRpb25fcHJvdGVjdG9yXy5MYXN0TWFyZ2luKCksCisgICAgICBsYXN0
X2VzdGltYXRlX3dpdGhfb2Zmc2V0X2RiZnNfICsKKyAgICAgICAgICAodXNlX3NhdHVyYXRpb25f
cHJvdGVjdG9yXyA/IHNhdHVyYXRpb25fcHJvdGVjdG9yXy5MYXN0TWFyZ2luKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDAuZiksCiAgICAgICAtOTAuZiwgMzAuZik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0
aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5o
CmluZGV4IDRkNDE4MGM0ODA2ODcwMDA0MTIwYWEzYzkyMWVlNzU1ZThiMWI2MTkuLjYzYjlkZTJh
ZWM0NGExMjRkZWE3MjVhM2E2ZmZjNGY2MDE3MDlhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
YWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3IuaApAQCAtMTEsOCArMTEsMTIgQEAKICNpZm5k
ZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfQURBUFRJVkVfTU9ERV9MRVZFTF9FU1RJ
TUFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfQURBUFRJVkVf
TU9ERV9MRVZFTF9FU1RJTUFUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaCIgIC8vIGtGdWxs
QnVmZmVyU2l6ZU1zLi4uCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
c2F0dXJhdGlvbl9wcm90ZWN0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi92YWRfd2l0aF9sZXZlbC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBj
bGFzcyBBcG1EYXRhRHVtcGVyOwpAQCAtMjAsNiArMjQsMTEgQEAgY2xhc3MgQXBtRGF0YUR1bXBl
cjsKIGNsYXNzIEFkYXB0aXZlTW9kZUxldmVsRXN0aW1hdG9yIHsKICBwdWJsaWM6CiAgIGV4cGxp
Y2l0IEFkYXB0aXZlTW9kZUxldmVsRXN0aW1hdG9yKEFwbURhdGFEdW1wZXIqIGFwbV9kYXRhX2R1
bXBlcik7CisgIEFkYXB0aXZlTW9kZUxldmVsRXN0aW1hdG9yKAorICAgICAgQXBtRGF0YUR1bXBl
ciogYXBtX2RhdGFfZHVtcGVyLAorICAgICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5D
b250cm9sbGVyMjo6TGV2ZWxFc3RpbWF0b3IgbGV2ZWxfZXN0aW1hdG9yLAorICAgICAgYm9vbCB1
c2Vfc2F0dXJhdGlvbl9wcm90ZWN0b3IsCisgICAgICBmbG9hdCBleHRyYV9zYXR1cmF0aW9uX21h
cmdpbl9kYik7CiAgIHZvaWQgVXBkYXRlRXN0aW1hdGlvbihjb25zdCBWYWRXaXRoTGV2ZWw6Okxl
dmVsQW5kUHJvYmFiaWxpdHkmIHZhZF9kYXRhKTsKICAgZmxvYXQgTGF0ZXN0TGV2ZWxFc3RpbWF0
ZSgpIGNvbnN0OwogICB2b2lkIFJlc2V0KCk7CkBAIC0zMCw2ICszOSw5IEBAIGNsYXNzIEFkYXB0
aXZlTW9kZUxldmVsRXN0aW1hdG9yIHsKICBwcml2YXRlOgogICB2b2lkIERlYnVnRHVtcEVzdGlt
YXRlKCk7CiAKKyAgY29uc3QgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVy
Mjo6TGV2ZWxFc3RpbWF0b3IKKyAgICAgIGxldmVsX2VzdGltYXRvcl87CisgIGNvbnN0IGJvb2wg
dXNlX3NhdHVyYXRpb25fcHJvdGVjdG9yXzsKICAgc2l6ZV90IGJ1ZmZlcl9zaXplX21zXyA9IDA7
CiAgIGZsb2F0IGxhc3RfZXN0aW1hdGVfd2l0aF9vZmZzZXRfZGJmc18gPSBrSW5pdGlhbFNwZWVj
aExldmVsRXN0aW1hdGVEYmZzOwogICBmbG9hdCBlc3RpbWF0ZV9udW1lcmF0b3JfID0gMC5mOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3Jf
YWdjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdj
LmNjCmluZGV4IDRjZWU5NjMzZjc3NzhkYWVkYTA1ZjEwZmNmMDY0OWJmZTI4NDQ2NDEuLmI3YzY0
MzczZmM4YTAwYTgyOTEwNDZlNzE3NDFjMTMzZjg3MzllMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuY2MKQEAgLTEwLDYgKzEw
LDEwIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2
ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuaCIKIAorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1
ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2Fn
YzJfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUv
YXVkaW9fZnJhbWVfdmlldy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmgKaW5kZXggNDg0YjEy
ODkzMzI1YTAxZWNlY2JlNmJlNmNhZTg3NDJkMGE4YzU1Ny4uNmQxMjMzOTg4OGMyZTg0MDA1MTNj
M2JmNGUwMjIwMmI2YmMxODI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVf
bW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVf
bW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmgKQEAgLTExLDEwICsxMSwxMiBAQAogI2lmbmRlZiBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9BREFQVElWRV9NT0RFX0xFVkVMX0VTVElNQVRP
Ul9BR0NfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfQURBUFRJVkVf
TU9ERV9MRVZFTF9FU1RJTUFUT1JfQUdDX0hfCiAKLSNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnYy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2F0dXJhdGlvbl9wcm90ZWN0b3IuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZlbC5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9u
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uY2MKaW5kZXggNWRhMzUzZmE4ZmQxMzhm
ZWI0ZmY3YjIzYzU0YzYxYzkyMTI0NDk3Yi4uYWY5NDNkZjc4ZmJiODI4ZjgzYzBhMGNmNmFmMTcy
OGFiMjUwNWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCiAKKyNp
bmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInN5c3RlbV93
cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9hZ2MyX2NvbW1vbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaAppbmRleCA3MWQz
M2U1OTRkYTIzYmRmMjQ5YzRiNmI3Y2JiNmZjMGZmZmYwN2IwLi41NWRkNjQ4ZGI0OWFiMTYxYTFm
OTg1MGVkNGE4N2U2ODljNjFlM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2Nv
bW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgKQEAgLTEzLDggKzEzLDYg
QEAKIAogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCi0jaW5jbHVkZSA8Y21hdGg+Ci0KIG5hbWVzcGFj
ZSB3ZWJydGMgewogCiBjb25zdGV4cHIgZmxvYXQga01pbkZsb2F0UzE2VmFsdWUgPSAtMzI3Njgu
ZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2JpcXVhZF9maWx0ZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9iaXF1YWRfZmlsdGVyLmNjCmluZGV4IDk4NThkNTA1ODQ2NTkxZjg4MGU5NGRiODE3
NGEzMjExMzFhMWYzZjQuLmRhODU1N2MxOTA4MmMxY2ExODA5MWIzYjZmNDg0YWU1ZWJiNDZlZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2JpcXVhZF9maWx0ZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvYmlxdWFkX2ZpbHRlci5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYmlxdWFkX2ZpbHRlci5oIgogCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBUcmFuc3Bvc2VkIGRpcmVj
dCBmb3JtIEkgaW1wbGVtZW50YXRpb24gb2YgYSBiaS1xdWFkIGZpbHRlciBhcHBsaWVkIHRvIGFu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9iaXF1YWRfZmlsdGVyLmgKaW5kZXggMjg0OTMwYzU5NTI4MzFhMGM3ZjEyNTUwMTM2NTA4
YjU1MDRlOWExZS4uM2Q3OGMwNzYwNzg4ODkyMjc2MGZjMDViNjgxYWM1ZWE1Y2FhYzBlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYmlxdWFkX2ZpbHRlci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL2JpcXVhZF9maWx0ZXIuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfQUdDMl9CSVFVQURfRklMVEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BR0MyX0JJUVVBRF9GSUxURVJfSF8KIAorI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKwogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJy
YXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvY29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL2NvbXB1dGVfaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MKaW5kZXgg
ZjM5NWJjZWZmYTFiYzc3Y2Q2Mzc5ZDA2ZDYxOWRmYjQ0YjliZWUxMi4uYmM5MjYxM2I2OTdlNmYx
YTQwNjI0YzJkMzUyYWFhZTUxMGIwYzgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvY29t
cHV0ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9jb21w
dXRlX2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmNjCkBAIC0xOSwyMyArMTksMjQgQEAKIAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl90ZXN0aW5nX2NvbW1vbi5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3Vy
dmUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiBuYW1lc3BhY2UgewogCiBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IENvbXB1dGVMaW5lYXJB
cHByb3hpbWF0aW9uUGFyYW1zKAotICAgIGNvbnN0IExpbWl0ZXIqIGxpbWl0ZXIsCisgICAgY29u
c3QgTGltaXRlckRiR2FpbkN1cnZlKiBsaW1pdGVyLAogICAgIGNvbnN0IGRvdWJsZSB4KSB7CiAg
IGNvbnN0IGRvdWJsZSBtID0gbGltaXRlci0+R2V0R2FpbkZpcnN0RGVyaXZhdGl2ZUxpbmVhcih4
KTsKICAgY29uc3QgZG91YmxlIHEgPSBsaW1pdGVyLT5HZXRHYWluTGluZWFyKHgpIC0gbSAqIHg7
CiAgIHJldHVybiB7bSwgcX07CiB9CiAKLWRvdWJsZSBDb21wdXRlQXJlYVVuZGVyUGllY2V3aXNl
TGluZWFyQXBwcm94aW1hdGlvbihjb25zdCBMaW1pdGVyKiBsaW1pdGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4MCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBkb3VibGUgeDEpIHsKK2RvdWJsZSBDb21wdXRlQXJlYVVuZGVyUGllY2V3aXNlTGluZWFyQXBw
cm94aW1hdGlvbigKKyAgICBjb25zdCBMaW1pdGVyRGJHYWluQ3VydmUqIGxpbWl0ZXIsCisgICAg
Y29uc3QgZG91YmxlIHgwLAorICAgIGNvbnN0IGRvdWJsZSB4MSkgewogICBSVENfQ0hFQ0tfTFQo
eDAsIHgxKTsKIAogICAvLyBMaW5lYXIgYXBwcm94aW1hdGlvbiBpbiB4MCBhbmQgeDEuCkBAIC02
MCw3ICs2MSw3IEBAIGRvdWJsZSBDb21wdXRlQXJlYVVuZGVyUGllY2V3aXNlTGluZWFyQXBwcm94
aW1hdGlvbihjb25zdCBMaW1pdGVyKiBsaW1pdGVyLAogLy8gQ29tcHV0ZXMgdGhlIGFwcHJveGlt
YXRpb24gZXJyb3IgaW4gdGhlIGxpbWl0ZXIgcmVnaW9uIGZvciBhIGdpdmVuIGludGVydmFsLgog
Ly8gVGhlIGVycm9yIGlzIGNvbXB1dGVkIGFzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGFy
ZWFzIGJlbmVhdGggdGhlIGxpbWl0ZXIKIC8vIGN1cnZlIHRvIGFwcHJveGltYXRlIGFuZCBpdHMg
bGluZWFyIHVuZGVyLWFwcHJveGltYXRpb24uCi1kb3VibGUgTGltaXRlclVuZGVyQXBwcm94aW1h
dGlvbk5lZ2F0aXZlRXJyb3IoY29uc3QgTGltaXRlciogbGltaXRlciwKK2RvdWJsZSBMaW1pdGVy
VW5kZXJBcHByb3hpbWF0aW9uTmVnYXRpdmVFcnJvcihjb25zdCBMaW1pdGVyRGJHYWluQ3VydmUq
IGxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZG91YmxlIHgwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGRvdWJsZSB4MSkgewogICBjb25zdCBkb3VibGUgYXJlYV9saW1pdGVyID0g
bGltaXRlci0+R2V0R2FpbkludGVncmFsTGluZWFyKHgwLCB4MSk7CkBAIC03Nyw3ICs3OCw3IEBA
IGRvdWJsZSBMaW1pdGVyVW5kZXJBcHByb3hpbWF0aW9uTmVnYXRpdmVFcnJvcihjb25zdCBMaW1p
dGVyKiBsaW1pdGVyLAogLy8gYXJlIGFzc2lnbmVkIGJ5IGhhbHZpbmcgaW50ZXJ2YWxzIChzdGFy
dGluZyB3aXRoIHRoZSB3aG9sZSBiZXlvbmQta25lZSByZWdpb24KIC8vIGFzIGEgc2luZ2xlIGlu
dGVydmFsKS4gSG93ZXZlciwgZXZlbiBpZiBzdWItb3B0aW1hbCwgdGhpcyBhbGdvcml0aG0gd29y
a3MKIC8vIHdlbGwgaW4gcHJhY3RpY2UgYW5kIGl0IGlzIGVmZmljaWVudGx5IGltcGxlbWVudGVk
IHVzaW5nIHByaW9yaXR5IHF1ZXVlcy4KLXN0ZDo6dmVjdG9yPGRvdWJsZT4gU2FtcGxlTGltaXRl
clJlZ2lvbihjb25zdCBMaW1pdGVyKiBsaW1pdGVyKSB7CitzdGQ6OnZlY3Rvcjxkb3VibGU+IFNh
bXBsZUxpbWl0ZXJSZWdpb24oY29uc3QgTGltaXRlckRiR2FpbkN1cnZlKiBsaW1pdGVyKSB7CiAg
IHN0YXRpY19hc3NlcnQoa0ludGVycG9sYXRlZEdhaW5DdXJ2ZUJleW9uZEtuZWVQb2ludHMgPiAy
LCAiIik7CiAKICAgc3RydWN0IEludGVydmFsIHsKQEAgLTEzMSw3ICsxMzIsNyBAQCBzdGQ6OnZl
Y3Rvcjxkb3VibGU+IFNhbXBsZUxpbWl0ZXJSZWdpb24oY29uc3QgTGltaXRlciogbGltaXRlcikg
ewogLy8gQ29tcHV0ZSB0aGUgcGFyYW1ldGVycyB0byBvdmVyLWFwcHJveGltYXRlIHRoZSBrbmVl
IHJlZ2lvbiB2aWEgbGluZWFyCiAvLyBpbnRlcnBvbGF0aW9uLiBPdmVyLWFwcHJveGltYXRpbmcg
aXMgc2F0dXJhdGlvbi1zYWZlIHNpbmNlIHRoZSBrbmVlIHJlZ2lvbiBpcwogLy8gY29udmV4Lgot
dm9pZCBQcmVjb21wdXRlS25lZUFwcHJveFBhcmFtcyhjb25zdCBMaW1pdGVyKiBsaW1pdGVyLAor
dm9pZCBQcmVjb21wdXRlS25lZUFwcHJveFBhcmFtcyhjb25zdCBMaW1pdGVyRGJHYWluQ3VydmUq
IGxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6OkludGVycG9s
YXRlZFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMpIHsKICAgc3RhdGljX2Fzc2VydChrSW50ZXJwb2xh
dGVkR2FpbkN1cnZlS25lZVBvaW50cyA+IDIsICIiKTsKICAgLy8gR2V0IHxrSW50ZXJwb2xhdGVk
R2FpbkN1cnZlS25lZVBvaW50c3wgLSAxIGVxdWFsbHkgc3BhY2VkIHBvaW50cy4KQEAgLTE2NSw3
ICsxNjYsNyBAQCB2b2lkIFByZWNvbXB1dGVLbmVlQXBwcm94UGFyYW1zKGNvbnN0IExpbWl0ZXIq
IGxpbWl0ZXIsCiAvLyBpbnRlcnBvbGF0aW9uIGFuZCBncmVlZHkgc2FtcGxpbmcuIFVuZGVyLWFw
cHJveGltYXRpbmcgaXMgc2F0dXJhdGlvbi1zYWZlCiAvLyBzaW5jZSB0aGUgYmV5b25kLWtuZWUg
cmVnaW9uIGlzIGNvbmNhdmUuCiB2b2lkIFByZWNvbXB1dGVCZXlvbmRLbmVlQXBwcm94UGFyYW1z
KAotICAgIGNvbnN0IExpbWl0ZXIqIGxpbWl0ZXIsCisgICAgY29uc3QgTGltaXRlckRiR2FpbkN1
cnZlKiBsaW1pdGVyLAogICAgIHRlc3Q6OkludGVycG9sYXRlZFBhcmFtZXRlcnMqIHBhcmFtZXRl
cnMpIHsKICAgLy8gRmluZCBwb2ludHMgb24gd2hpY2ggdGhlIGxpbmVhciBwaWVjZXMgYXJlIHRh
bmdlbnQgdG8gdGhlIGdhaW4gY3VydmUuCiAgIGNvbnN0IGF1dG8gc2FtcGxlcyA9IFNhbXBsZUxp
bWl0ZXJSZWdpb24obGltaXRlcik7CkBAIC0yMTYsNyArMjE3LDcgQEAgbmFtZXNwYWNlIHRlc3Qg
ewogCiBJbnRlcnBvbGF0ZWRQYXJhbWV0ZXJzIENvbXB1dGVJbnRlcnBvbGF0ZWRHYWluQ3VydmVB
cHByb3hpbWF0aW9uUGFyYW1zKCkgewogICBJbnRlcnBvbGF0ZWRQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7Ci0gIExpbWl0ZXIgbGltaXRlcjsKKyAgTGltaXRlckRiR2FpbkN1cnZlIGxpbWl0ZXI7CiAg
IHBhcmFtZXRlcnMuY29tcHV0ZWRfYXBwcm94aW1hdGlvbl9wYXJhbXNfeC5maWxsKDAuMGYpOwog
ICBwYXJhbWV0ZXJzLmNvbXB1dGVkX2FwcHJveGltYXRpb25fcGFyYW1zX20uZmlsbCgwLjBmKTsK
ICAgcGFyYW1ldGVycy5jb21wdXRlZF9hcHByb3hpbWF0aW9uX3BhcmFtc19xLmZpbGwoMC4wZik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRv
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmNjCmlu
ZGV4IDM5Y2M3NjQxODVjMWQ4ZmIxMzVkNGNiODQzZTkzNjY2MTNkODNjYzcuLjk3MWY0ZjYyYjc5
MDE1ODhiNzQwNmNjZDhkNWNiZGVjMDUyMGIyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L2ZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2Zp
eGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmNjCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNtYXRoPgogCisjaW5jbHVkZSAiYXBpL2FycmF5X3Zp
ZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0
YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
Zml4ZWRfZ2Fpbl9jb250cm9sbGVyLmNjCmluZGV4IDBkN2UzYTYxYjE1ZDMwYWM1NDUwNjdkNzY3
Njk1ZmUyZTdjMGU1N2UuLmVmOTA4ZGMzNTgyODQ5NGU0ZDZlYWRmOTJjMDhiYzVmMDhjZWYzZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJvbGxlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xsZXIuY2MKQEAgLTEwLDEzICsxMCw5
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWlu
X2NvbnRyb2xsZXIuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjbWF0aD4K
LQogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2lu
Y2x1ZGUvYXVkaW9fdXRpbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL2FnYzJfY29tbW9uLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCkBAIC0zOSw3ICszNSw3IEBA
IEZpeGVkR2FpbkNvbnRyb2xsZXI6OkZpeGVkR2FpbkNvbnRyb2xsZXIoQXBtRGF0YUR1bXBlciog
YXBtX2RhdGFfZHVtcGVyKQogRml4ZWRHYWluQ29udHJvbGxlcjo6Rml4ZWRHYWluQ29udHJvbGxl
cihBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGhpc3RvZ3JhbV9uYW1lX3ByZWZpeCkKICAg
ICA6IGFwbV9kYXRhX2R1bXBlcl8oYXBtX2RhdGFfZHVtcGVyKSwKLSAgICAgIGdhaW5fY3VydmVf
YXBwbGllcl8oNDgwMDAsIGFwbV9kYXRhX2R1bXBlcl8sIGhpc3RvZ3JhbV9uYW1lX3ByZWZpeCkg
eworICAgICAgbGltaXRlcl8oNDgwMDAsIGFwbV9kYXRhX2R1bXBlcl8sIGhpc3RvZ3JhbV9uYW1l
X3ByZWZpeCkgewogICAvLyBEbyB1cGRhdGUgaGlzdG9ncmFtcy54bWwgd2hlbiBhZGRpbmcgbmFt
ZSBwcmVmaXhlcy4KICAgUlRDX0RDSEVDSyhoaXN0b2dyYW1fbmFtZV9wcmVmaXggPT0gIiIgfHwg
aGlzdG9ncmFtX25hbWVfcHJlZml4ID09ICJUZXN0IiB8fAogICAgICAgICAgICAgIGhpc3RvZ3Jh
bV9uYW1lX3ByZWZpeCA9PSAiQXVkaW9NaXhlciIgfHwKQEAgLTYxLDEyICs1NywxMiBAQCB2b2lk
IEZpeGVkR2FpbkNvbnRyb2xsZXI6OlNldEdhaW4oZmxvYXQgZ2Fpbl90b19hcHBseV9kYikgewog
ICAvLyBSZXNldCB0aGUgZ2FpbiBjdXJ2ZSBhcHBsaWVyIHRvIHF1aWNrbHkgcmVhY3Qgb24gYWJy
dXB0IGxldmVsIGNoYW5nZXMKICAgLy8gY2F1c2VkIGJ5IGxhcmdlIGNoYW5nZXMgb2YgdGhlIGFw
cGxpZWQgZ2Fpbi4KICAgaWYgKHByZXZpb3VzX2FwcGxpZWRfZ2FpbmVkICE9IGdhaW5fdG9fYXBw
bHlfKSB7Ci0gICAgZ2Fpbl9jdXJ2ZV9hcHBsaWVyXy5SZXNldCgpOworICAgIGxpbWl0ZXJfLlJl
c2V0KCk7CiAgIH0KIH0KIAogdm9pZCBGaXhlZEdhaW5Db250cm9sbGVyOjpTZXRTYW1wbGVSYXRl
KHNpemVfdCBzYW1wbGVfcmF0ZV9oeikgewotICBnYWluX2N1cnZlX2FwcGxpZXJfLlNldFNhbXBs
ZVJhdGUoc2FtcGxlX3JhdGVfaHopOworICBsaW1pdGVyXy5TZXRTYW1wbGVSYXRlKHNhbXBsZV9y
YXRlX2h6KTsKIH0KIAogdm9pZCBGaXhlZEdhaW5Db250cm9sbGVyOjpQcm9jZXNzKEF1ZGlvRnJh
bWVWaWV3PGZsb2F0PiBzaWduYWwpIHsKQEAgLTg0LDcgKzgwLDcgQEAgdm9pZCBGaXhlZEdhaW5D
b250cm9sbGVyOjpQcm9jZXNzKEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBzaWduYWwpIHsKICAgfQog
CiAgIC8vIFVzZSB0aGUgbGltaXRlci4KLSAgZ2Fpbl9jdXJ2ZV9hcHBsaWVyXy5Qcm9jZXNzKHNp
Z25hbCk7CisgIGxpbWl0ZXJfLlByb2Nlc3Moc2lnbmFsKTsKIAogICAvLyBEdW1wIGRhdGEgZm9y
IGRlYnVnLgogICBjb25zdCBhdXRvIGNoYW5uZWxfdmlldyA9IHNpZ25hbC5jaGFubmVsKDApOwpA
QCAtMTAwLDYgKzk2LDYgQEAgdm9pZCBGaXhlZEdhaW5Db250cm9sbGVyOjpQcm9jZXNzKEF1ZGlv
RnJhbWVWaWV3PGZsb2F0PiBzaWduYWwpIHsKIH0KIAogZmxvYXQgRml4ZWRHYWluQ29udHJvbGxl
cjo6TGFzdEF1ZGlvTGV2ZWwoKSBjb25zdCB7Ci0gIHJldHVybiBnYWluX2N1cnZlX2FwcGxpZXJf
Lkxhc3RBdWRpb0xldmVsKCk7CisgIHJldHVybiBsaW1pdGVyXy5MYXN0QXVkaW9MZXZlbCgpOwog
fQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4
ZWRfZ2Fpbl9jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xs
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY2YWI4MTE3Mjk0OTRlZDg2ZGJk
ODYyNmE2MzE5YmJhNjFhNGYxZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xsZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0g
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVm
IE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0ZJWEVEX0dBSU5fQ09OVFJPTExFUl9IXwot
I2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9GSVhFRF9HQUlOX0NPTlRST0xM
RVJfSF8KLQotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fY3Vy
dmVfYXBwbGllci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRl
L2F1ZGlvX2ZyYW1lX3ZpZXcuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBBcG1EYXRh
RHVtcGVyOwotCi1jbGFzcyBGaXhlZEdhaW5Db250cm9sbGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxp
Y2l0IEZpeGVkR2FpbkNvbnRyb2xsZXIoQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyKTsK
LSAgRml4ZWRHYWluQ29udHJvbGxlcihBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaGlzdG9ncmFtX25hbWVfcHJlZml4KTsK
LQotICB2b2lkIFByb2Nlc3MoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IHNpZ25hbCk7Ci0KLSAgLy8g
UmF0ZSBhbmQgZ2FpbiBtYXkgYmUgY2hhbmdlZCBhdCBhbnkgdGltZSAoYnV0IG5vdCBjb25jdXJy
ZW50bHkKLSAgLy8gd2l0aCBhbnkgb3RoZXIgbWV0aG9kIGNhbGwpLgotICB2b2lkIFNldEdhaW4o
ZmxvYXQgZ2Fpbl90b19hcHBseV9kYik7Ci0gIHZvaWQgU2V0U2FtcGxlUmF0ZShzaXplX3Qgc2Ft
cGxlX3JhdGVfaHopOwotICBmbG9hdCBMYXN0QXVkaW9MZXZlbCgpIGNvbnN0OwotCi0gcHJpdmF0
ZToKLSAgZmxvYXQgZ2Fpbl90b19hcHBseV8gPSAxLmY7Ci0gIEFwbURhdGFEdW1wZXIqIGFwbV9k
YXRhX2R1bXBlcl8gPSBudWxscHRyOwotICBHYWluQ3VydmVBcHBsaWVyIGdhaW5fY3VydmVfYXBw
bGllcl87Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX0FHQzJfRklYRURfR0FJTl9DT05UUk9MTEVSX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiMTczMmFhNDc2NDhhZDE5MGU2MjZmNjk2Y2ZlNDkzODZk
OTUyYTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251
bGwKQEAgLTEsMjU4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmgiCi0K
LSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJhcGkvYXJyYXlfdmll
dy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfdGVzdGlu
Z19jb21tb24uaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92ZWN0
b3JfZmxvYXRfZnJhbWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9n
Z2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgotI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKLQotbmFtZXNwYWNlIHdl
YnJ0YyB7Ci1uYW1lc3BhY2UgewotCi1jb25zdGV4cHIgZmxvYXQga0lucHV0TGV2ZWxMaW5lYXIg
PSAxNTAwMC5mOwotCi1jb25zdGV4cHIgZmxvYXQga0dhaW5Ub0FwcGx5RGIgPSAxNS5mOwotCi1m
bG9hdCBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoRml4ZWRHYWluQ29u
dHJvbGxlciogZml4ZWRfZ2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZmxvYXQgaW5wdXRfbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bV9mcmFtZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHNhbXBsZV9y
YXRlKSB7Ci0gIC8vIEdpdmUgdGltZSB0byB0aGUgbGV2ZWwgZXRpbWF0b3IgdG8gY29udmVyZ2Uu
Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2ZyYW1lczsgKytpKSB7Ci0gICAgVmVjdG9y
RmxvYXRGcmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUoCi0gICAgICAgIDEsIHJ0Yzo6Q2hl
Y2tlZERpdkV4YWN0KHNhbXBsZV9yYXRlLCAxMDApLCBpbnB1dF9sZXZlbCk7Ci0gICAgZml4ZWRf
Z2MtPlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lLmZsb2F0X2ZyYW1lX3ZpZXcoKSk7
Ci0gIH0KLQotICAvLyBQcm9jZXNzIHRoZSBsYXN0IGZyYW1lIHdpdGggY29uc3RhbnQgaW5wdXQg
bGV2ZWwuCi0gIFZlY3RvckZsb2F0RnJhbWUgdmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lX2xhc3Qo
Ci0gICAgICAxLCBydGM6OkNoZWNrZWREaXZFeGFjdChzYW1wbGVfcmF0ZSwgMTAwKSwgaW5wdXRf
bGV2ZWwpOwotICBmaXhlZF9nYy0+UHJvY2Vzcyh2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWVfbGFz
dC5mbG9hdF9mcmFtZV92aWV3KCkpOwotCi0gIC8vIFJldHVybiB0aGUgbGFzdCBzYW1wbGUgZnJv
bSB0aGUgbGFzdCBwcm9jZXNzZWQgZnJhbWUuCi0gIGNvbnN0IGF1dG8gY2hhbm5lbCA9Ci0gICAg
ICB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWVfbGFzdC5mbG9hdF9mcmFtZV92aWV3KCkuY2hhbm5l
bCgwKTsKLSAgcmV0dXJuIGNoYW5uZWxbY2hhbm5lbC5zaXplKCkgLSAxXTsKLX0KLQotc3RkOjp1
bmlxdWVfcHRyPEFwbURhdGFEdW1wZXI+IEdldEFwbURhdGFEdW1wZXIoKSB7Ci0gIHJldHVybiBh
YnNsOjptYWtlX3VuaXF1ZTxBcG1EYXRhRHVtcGVyPigwKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRy
PEZpeGVkR2FpbkNvbnRyb2xsZXI+IENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIoCi0gICAgZmxv
YXQgZ2Fpbl90b19hcHBseSwKLSAgICBzaXplX3QgcmF0ZSwKLSAgICBzdGQ6OnN0cmluZyBoaXN0
b2dyYW1fbmFtZV9wcmVmaXgsCi0gICAgQXBtRGF0YUR1bXBlciogdGVzdF9kYXRhX2R1bXBlcikg
ewotICBzdGQ6OnVuaXF1ZV9wdHI8Rml4ZWRHYWluQ29udHJvbGxlcj4gZmdjID0KLSAgICAgIGFi
c2w6Om1ha2VfdW5pcXVlPEZpeGVkR2FpbkNvbnRyb2xsZXI+KHRlc3RfZGF0YV9kdW1wZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0b2dyYW1fbmFt
ZV9wcmVmaXgpOwotICBmZ2MtPlNldEdhaW4oZ2Fpbl90b19hcHBseSk7Ci0gIGZnYy0+U2V0U2Ft
cGxlUmF0ZShyYXRlKTsKLSAgcmV0dXJuIGZnYzsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPEZpeGVk
R2FpbkNvbnRyb2xsZXI+IENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIoCi0gICAgZmxvYXQgZ2Fp
bl90b19hcHBseSwKLSAgICBzaXplX3QgcmF0ZSwKLSAgICBBcG1EYXRhRHVtcGVyKiB0ZXN0X2Rh
dGFfZHVtcGVyKSB7Ci0gIHJldHVybiBDcmVhdGVGaXhlZEdhaW5Db250cm9sbGVyKGdhaW5fdG9f
YXBwbHksIHJhdGUsICIiLCB0ZXN0X2RhdGFfZHVtcGVyKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNl
Ci0KLVRFU1QoQXV0b21hdGljR2FpbkNvbnRyb2xsZXIyRml4ZWREaWdpdGFsLCBDcmVhdGVVc2Up
IHsKLSAgY29uc3QgaW50IGtTYW1wbGVSYXRlID0gNDQwMDA7Ci0gIGF1dG8gdGVzdF9kYXRhX2R1
bXBlciA9IEdldEFwbURhdGFEdW1wZXIoKTsKLSAgc3RkOjp1bmlxdWVfcHRyPEZpeGVkR2FpbkNv
bnRyb2xsZXI+IGZpeGVkX2djID0gQ3JlYXRlRml4ZWRHYWluQ29udHJvbGxlcigKLSAgICAgIGtH
YWluVG9BcHBseURiLCBrU2FtcGxlUmF0ZSwgdGVzdF9kYXRhX2R1bXBlci5nZXQoKSk7Ci0gIFZl
Y3RvckZsb2F0RnJhbWUgdmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lKAotICAgICAgMSwgcnRjOjpD
aGVja2VkRGl2RXhhY3Qoa1NhbXBsZVJhdGUsIDEwMCksIGtJbnB1dExldmVsTGluZWFyKTsKLSAg
YXV0byBmbG9hdF9mcmFtZSA9IHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZS5mbG9hdF9mcmFtZV92
aWV3KCk7Ci0gIGZpeGVkX2djLT5Qcm9jZXNzKGZsb2F0X2ZyYW1lKTsKLSAgY29uc3QgYXV0byBj
aGFubmVsID0gZmxvYXRfZnJhbWUuY2hhbm5lbCgwKTsKLSAgRVhQRUNUX0xUKGtJbnB1dExldmVs
TGluZWFyLCBjaGFubmVsWzBdKTsKLX0KLQotVEVTVChBdXRvbWF0aWNHYWluQ29udHJvbGxlcjJG
aXhlZERpZ2l0YWwsIENoZWNrU2F0dXJhdGlvbkJlaGF2aW9yV2l0aExpbWl0ZXIpIHsKLSAgY29u
c3QgZmxvYXQga0lucHV0TGV2ZWwgPSAzMjc2Ny5mOwotICBjb25zdCBzaXplX3Qga051bUZyYW1l
cyA9IDU7Ci0gIGNvbnN0IHNpemVfdCBrU2FtcGxlUmF0ZSA9IDQyMDAwOwotCi0gIGF1dG8gdGVz
dF9kYXRhX2R1bXBlciA9IEdldEFwbURhdGFEdW1wZXIoKTsKLQotICBjb25zdCBhdXRvIGdhaW5z
X25vX3NhdHVyYXRpb24gPQotICAgICAgdGVzdDo6TGluU3BhY2UoMC4xLCB0ZXN0OjprTGltaXRl
ck1heElucHV0TGV2ZWxEYkZzIC0gMC4wMSwgMTApOwotICBmb3IgKGNvbnN0IGF1dG8gZ2Fpbl9k
YiA6IGdhaW5zX25vX3NhdHVyYXRpb24pIHsKLSAgICAvLyBTaW5jZSB8dGVzdDo6a0xpbWl0ZXJN
YXhJbnB1dExldmVsRGJGc3wgPiB8Z2Fpbl9kYnwsIHRoZQotICAgIC8vIGxpbWl0ZXIgd2lsbCBu
b3Qgc2F0dXJhdGUgdGhlIHNpZ25hbC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Rml4ZWRHYWluQ29u
dHJvbGxlcj4gZml4ZWRfZ2Nfbm9fc2F0dXJhdGlvbiA9Ci0gICAgICAgIENyZWF0ZUZpeGVkR2Fp
bkNvbnRyb2xsZXIoZ2Fpbl9kYiwga1NhbXBsZVJhdGUsIHRlc3RfZGF0YV9kdW1wZXIuZ2V0KCkp
OwotCi0gICAgLy8gU2F0dXJhdGlvbiBub3QgZXhwZWN0ZWQuCi0gICAgU0NPUEVEX1RSQUNFKHN0
ZDo6dG9fc3RyaW5nKGdhaW5fZGIpKTsKLSAgICBFWFBFQ1RfTFQoCi0gICAgICAgIFJ1bkZpeGVk
R2FpbkNvbnRyb2xsZXJXaXRoQ29uc3RhbnRJbnB1dCgKLSAgICAgICAgICAgIGZpeGVkX2djX25v
X3NhdHVyYXRpb24uZ2V0KCksIGtJbnB1dExldmVsLCBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0ZSks
Ci0gICAgICAgIDMyNzY3LmYpOwotICB9Ci0KLSAgY29uc3QgYXV0byBnYWluc19zYXR1cmF0aW9u
ID0KLSAgICAgIHRlc3Q6OkxpblNwYWNlKHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnMg
KyAwLjAxLCAxMCwgMTApOwotICBmb3IgKGNvbnN0IGF1dG8gZ2Fpbl9kYiA6IGdhaW5zX3NhdHVy
YXRpb24pIHsKLSAgICAvLyBTaW5jZSB8dGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGc3wg
PCB8Z2FpbnwsIHRoZSBsaW1pdGVyCi0gICAgLy8gd2lsbCBzYXR1cmF0ZSB0aGUgc2lnbmFsLgot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGaXhlZEdhaW5Db250cm9sbGVyPiBmaXhlZF9nY19zYXR1cmF0
aW9uID0KLSAgICAgICAgQ3JlYXRlRml4ZWRHYWluQ29udHJvbGxlcihnYWluX2RiLCBrU2FtcGxl
UmF0ZSwgdGVzdF9kYXRhX2R1bXBlci5nZXQoKSk7Ci0KLSAgICAvLyBTYXR1cmF0aW9uIGV4cGVj
dGVkLgotICAgIFNDT1BFRF9UUkFDRShzdGQ6OnRvX3N0cmluZyhnYWluX2RiKSk7Ci0gICAgRVhQ
RUNUX0ZMT0FUX0VRKAotICAgICAgICBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50
SW5wdXQoCi0gICAgICAgICAgICBmaXhlZF9nY19zYXR1cmF0aW9uLmdldCgpLCBrSW5wdXRMZXZl
bCwga051bUZyYW1lcywga1NhbXBsZVJhdGUpLAotICAgICAgICAzMjc2Ny5mKTsKLSAgfQotfQot
Ci1URVNUKEF1dG9tYXRpY0dhaW5Db250cm9sbGVyMkZpeGVkRGlnaXRhbCwKLSAgICAgQ2hlY2tT
YXR1cmF0aW9uQmVoYXZpb3JXaXRoTGltaXRlclNpbmdsZVNhbXBsZSkgewotICBjb25zdCBmbG9h
dCBrSW5wdXRMZXZlbCA9IDMyNzY3LmY7Ci0gIGNvbnN0IHNpemVfdCBrTnVtRnJhbWVzID0gNTsK
LSAgY29uc3Qgc2l6ZV90IGtTYW1wbGVSYXRlID0gODAwMDsKLQotICBhdXRvIHRlc3RfZGF0YV9k
dW1wZXIgPSBHZXRBcG1EYXRhRHVtcGVyKCk7Ci0KLSAgY29uc3QgYXV0byBnYWluc19ub19zYXR1
cmF0aW9uID0KLSAgICAgIHRlc3Q6OkxpblNwYWNlKDAuMSwgdGVzdDo6a0xpbWl0ZXJNYXhJbnB1
dExldmVsRGJGcyAtIDAuMDEsIDEwKTsKLSAgZm9yIChjb25zdCBhdXRvIGdhaW5fZGIgOiBnYWlu
c19ub19zYXR1cmF0aW9uKSB7Ci0gICAgLy8gU2luY2UgfGdhaW58ID4gfHRlc3Q6OmtMaW1pdGVy
TWF4SW5wdXRMZXZlbERiRnN8LCB0aGUgbGltaXRlciB3aWxsCi0gICAgLy8gbm90IHNhdHVyYXRl
IHRoZSBzaWduYWwuCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZpeGVkR2FpbkNvbnRyb2xsZXI+IGZp
eGVkX2djX25vX3NhdHVyYXRpb24gPQotICAgICAgICBDcmVhdGVGaXhlZEdhaW5Db250cm9sbGVy
KGdhaW5fZGIsIGtTYW1wbGVSYXRlLCB0ZXN0X2RhdGFfZHVtcGVyLmdldCgpKTsKLQotICAgIC8v
IFNhdHVyYXRpb24gbm90IGV4cGVjdGVkLgotICAgIFNDT1BFRF9UUkFDRShzdGQ6OnRvX3N0cmlu
ZyhnYWluX2RiKSk7Ci0gICAgRVhQRUNUX0xUKAotICAgICAgICBSdW5GaXhlZEdhaW5Db250cm9s
bGVyV2l0aENvbnN0YW50SW5wdXQoCi0gICAgICAgICAgICBmaXhlZF9nY19ub19zYXR1cmF0aW9u
LmdldCgpLCBrSW5wdXRMZXZlbCwga051bUZyYW1lcywga1NhbXBsZVJhdGUpLAotICAgICAgICAz
Mjc2Ny5mKTsKLSAgfQotCi0gIGNvbnN0IGF1dG8gZ2FpbnNfc2F0dXJhdGlvbiA9Ci0gICAgICB0
ZXN0OjpMaW5TcGFjZSh0ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzICsgMC4wMSwgMTAs
IDEwKTsKLSAgZm9yIChjb25zdCBhdXRvIGdhaW5fZGIgOiBnYWluc19zYXR1cmF0aW9uKSB7Ci0g
ICAgLy8gU2luZ2UgfGdhaW58IDwgfHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnN8LCB0
aGUgbGltaXRlciB3aWxsCi0gICAgLy8gc2F0dXJhdGUgdGhlIHNpZ25hbC4KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rml4ZWRHYWluQ29udHJvbGxlcj4gZml4ZWRfZ2Nfc2F0dXJhdGlvbiA9Ci0gICAg
ICAgIENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIoZ2Fpbl9kYiwga1NhbXBsZVJhdGUsIHRlc3Rf
ZGF0YV9kdW1wZXIuZ2V0KCkpOwotCi0gICAgLy8gU2F0dXJhdGlvbiBleHBlY3RlZC4KLSAgICBT
Q09QRURfVFJBQ0Uoc3RkOjp0b19zdHJpbmcoZ2Fpbl9kYikpOwotICAgIEVYUEVDVF9GTE9BVF9F
USgKLSAgICAgICAgUnVuRml4ZWRHYWluQ29udHJvbGxlcldpdGhDb25zdGFudElucHV0KAotICAg
ICAgICAgICAgZml4ZWRfZ2Nfc2F0dXJhdGlvbi5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFt
ZXMsIGtTYW1wbGVSYXRlKSwKLSAgICAgICAgMzI3NjcuZik7Ci0gIH0KLX0KLQotVEVTVChBdXRv
bWF0aWNHYWluQ29udHJvbGxlcjJGaXhlZERpZ2l0YWwsIEdhaW5TaG91bGRDaGFuZ2VPblNldEdh
aW4pIHsKLSAgY29uc3RleHByIGZsb2F0IGtJbnB1dExldmVsID0gMTAwMC5mOwotICBjb25zdGV4
cHIgc2l6ZV90IGtOdW1GcmFtZXMgPSA1OwotICBjb25zdGV4cHIgc2l6ZV90IGtTYW1wbGVSYXRl
ID0gODAwMDsKLSAgY29uc3RleHByIGZsb2F0IGtHYWluRGJOb0NoYW5nZSA9IDAuZjsKLSAgY29u
c3RleHByIGZsb2F0IGtHYWluRGJGYWN0b3IxMCA9IDIwLmY7Ci0KLSAgYXV0byB0ZXN0X2RhdGFf
ZHVtcGVyID0gR2V0QXBtRGF0YUR1bXBlcigpOwotICBzdGQ6OnVuaXF1ZV9wdHI8Rml4ZWRHYWlu
Q29udHJvbGxlcj4gZml4ZWRfZ2Nfbm9fc2F0dXJhdGlvbiA9Ci0gICAgICBDcmVhdGVGaXhlZEdh
aW5Db250cm9sbGVyKGtHYWluRGJOb0NoYW5nZSwga1NhbXBsZVJhdGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RfZGF0YV9kdW1wZXIuZ2V0KCkpOwotCi0gIC8vIFNpZ25h
bCBsZXZlbCBpcyB1bmNoYW5nZWQgd2l0aCAwIGRiIGdhaW4uCi0gIEVYUEVDVF9GTE9BVF9FUSgK
LSAgICAgIFJ1bkZpeGVkR2FpbkNvbnRyb2xsZXJXaXRoQ29uc3RhbnRJbnB1dCgKLSAgICAgICAg
ICBmaXhlZF9nY19ub19zYXR1cmF0aW9uLmdldCgpLCBrSW5wdXRMZXZlbCwga051bUZyYW1lcywg
a1NhbXBsZVJhdGUpLAotICAgICAga0lucHV0TGV2ZWwpOwotCi0gIGZpeGVkX2djX25vX3NhdHVy
YXRpb24tPlNldEdhaW4oa0dhaW5EYkZhY3RvcjEwKTsKLQotICAvLyArMjBkYiBzaG91bGQgaW5j
cmVhc2Ugc2lnbmFsIGJ5IGEgZmFjdG9yIG9mIDEwLgotICBFWFBFQ1RfRkxPQVRfRVEoCi0gICAg
ICBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoCi0gICAgICAgICAgZml4
ZWRfZ2Nfbm9fc2F0dXJhdGlvbi5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtTYW1w
bGVSYXRlKSwKLSAgICAgIGtJbnB1dExldmVsICogMTApOwotfQotCi1URVNUKEF1dG9tYXRpY0dh
aW5Db250cm9sbGVyMkZpeGVkRGlnaXRhbCwKLSAgICAgU2V0R2FpblNob3VsZEJlRmFzdEFuZFRp
bWVJbnZhcmlhbnQpIHsKLSAgLy8gTnVtYmVyIG9mIGZyYW1lcyByZXF1aXJlZCBmb3IgdGhlIGZp
eGVkIGdhaW4gY29udHJvbGxlciB0byBhZGFwdCBvbiB0aGUKLSAgLy8gaW5wdXQgc2lnbmFsIHdo
ZW4gdGhlIGdhaW4gY2hhbmdlcy4KLSAgY29uc3RleHByIHNpemVfdCBrTnVtRnJhbWVzID0gNTsK
LQotICBjb25zdGV4cHIgZmxvYXQga0lucHV0TGV2ZWwgPSAxMDAwLmY7Ci0gIGNvbnN0ZXhwciBz
aXplX3Qga1NhbXBsZVJhdGUgPSA4MDAwOwotICBjb25zdGV4cHIgZmxvYXQga0dhaW5EYkxvdyA9
IDAuZjsKLSAgY29uc3RleHByIGZsb2F0IGtHYWluRGJIaWdoID0gNDAuZjsKLSAgc3RhdGljX2Fz
c2VydChrR2FpbkRiTG93IDwga0dhaW5EYkhpZ2gsICIiKTsKLQotICBhdXRvIHRlc3RfZGF0YV9k
dW1wZXIgPSBHZXRBcG1EYXRhRHVtcGVyKCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxGaXhlZEdhaW5D
b250cm9sbGVyPiBmaXhlZF9nYyA9IENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIoCi0gICAgICBr
R2FpbkRiTG93LCBrU2FtcGxlUmF0ZSwgdGVzdF9kYXRhX2R1bXBlci5nZXQoKSk7Ci0KLSAgZml4
ZWRfZ2MtPlNldEdhaW4oa0dhaW5EYkxvdyk7Ci0gIGNvbnN0IGZsb2F0IG91dHB1dF9sZXZlbF9w
cmUgPSBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoCi0gICAgICBmaXhl
ZF9nYy5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtTYW1wbGVSYXRlKTsKLQotICBm
aXhlZF9nYy0+U2V0R2FpbihrR2FpbkRiSGlnaCk7Ci0gIFJ1bkZpeGVkR2FpbkNvbnRyb2xsZXJX
aXRoQ29uc3RhbnRJbnB1dChmaXhlZF9nYy5nZXQoKSwga0lucHV0TGV2ZWwsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0ZSk7
Ci0KLSAgZml4ZWRfZ2MtPlNldEdhaW4oa0dhaW5EYkxvdyk7Ci0gIGNvbnN0IGZsb2F0IG91dHB1
dF9sZXZlbF9wb3N0ID0gUnVuRml4ZWRHYWluQ29udHJvbGxlcldpdGhDb25zdGFudElucHV0KAot
ICAgICAgZml4ZWRfZ2MuZ2V0KCksIGtJbnB1dExldmVsLCBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0
ZSk7Ci0KLSAgRVhQRUNUX0VRKG91dHB1dF9sZXZlbF9wcmUsIG91dHB1dF9sZXZlbF9wb3N0KTsK
LX0KLQotVEVTVChBdXRvbWF0aWNHYWluQ29udHJvbGxlcjJGaXhlZERpZ2l0YWwsIFJlZ2lvbkhp
c3RvZ3JhbUlzVXBkYXRlZCkgewotICBjb25zdGV4cHIgc2l6ZV90IGtTYW1wbGVSYXRlID0gODAw
MDsKLSAgY29uc3RleHByIGZsb2F0IGtHYWluRGIgPSAwLmY7Ci0gIGNvbnN0ZXhwciBmbG9hdCBr
SW5wdXRMZXZlbCA9IDEwMDAuZjsKLSAgY29uc3RleHByIHNpemVfdCBrTnVtRnJhbWVzID0gNTsK
LQotICBtZXRyaWNzOjpSZXNldCgpOwotCi0gIGF1dG8gdGVzdF9kYXRhX2R1bXBlciA9IEdldEFw
bURhdGFEdW1wZXIoKTsKLSAgc3RkOjp1bmlxdWVfcHRyPEZpeGVkR2FpbkNvbnRyb2xsZXI+IGZp
eGVkX2djX25vX3NhdHVyYXRpb24gPQotICAgICAgQ3JlYXRlRml4ZWRHYWluQ29udHJvbGxlcihr
R2FpbkRiLCBrU2FtcGxlUmF0ZSwgIlRlc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0X2RhdGFfZHVtcGVyLmdldCgpKTsKLQotICBzdGF0aWNfY2FzdDx2b2lkPihSdW5G
aXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoCi0gICAgICBmaXhlZF9nY19ub19z
YXR1cmF0aW9uLmdldCgpLCBrSW5wdXRMZXZlbCwga051bUZyYW1lcywga1NhbXBsZVJhdGUpKTsK
LQotICAvLyBEZXN0cm95aW5nIEZpeGVkR2FpbkNvbnRyb2xsZXIgc2hvdWxkIGNhdXNlIHRoZSBs
YXN0IGxpbWl0ZXIgcmVnaW9uIHRvIGJlCi0gIC8vIGxvZ2dlZC4KLSAgZml4ZWRfZ2Nfbm9fc2F0
dXJhdGlvbi5yZXNldCgpOwotCi0gIEVYUEVDVF9FUSgxLCBtZXRyaWNzOjpOdW1TYW1wbGVzKAot
ICAgICAgICAgICAgICAgICAgICJXZWJSVEMuQXVkaW8uVGVzdC5GaXhlZERpZ2l0YWxHYWluQ3Vy
dmVSZWdpb24uSWRlbnRpdHkiKSk7Ci0gIEVYUEVDVF9FUSgwLCBtZXRyaWNzOjpOdW1TYW1wbGVz
KAotICAgICAgICAgICAgICAgICAgICJXZWJSVEMuQXVkaW8uVGVzdC5GaXhlZERpZ2l0YWxHYWlu
Q3VydmVSZWdpb24uS25lZSIpKTsKLSAgRVhQRUNUX0VRKDAsIG1ldHJpY3M6Ok51bVNhbXBsZXMo
Ci0gICAgICAgICAgICAgICAgICAgIldlYlJUQy5BdWRpby5UZXN0LkZpeGVkRGlnaXRhbEdhaW5D
dXJ2ZVJlZ2lvbi5MaW1pdGVyIikpOwotICBFWFBFQ1RfRVEoMCwgbWV0cmljczo6TnVtU2FtcGxl
cygKLSAgICAgICAgICAgICAgICAgICAiV2ViUlRDLkF1ZGlvLlRlc3QuRml4ZWREaWdpdGFsR2Fp
bkN1cnZlUmVnaW9uLlNhdHVyYXRpb24iKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fYXBwbGllci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL2dhaW5fYXBwbGllci5jYwppbmRleCAzOGViMWRlMDNmOTU4OWJiZDdmZWQwNDRiODMwZTg4
ZmMyOGMxNDcwLi44YzQzNzE3N2UzY2JmYTZiZTUwNmE2YmRmNTY3NmE3MGY4OWIxY2Y3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvZ2Fpbl9hcHBsaWVyLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuaCIKIAorI2luY2x1ZGUgImFwaS9h
cnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdj
Ml9jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL2dhaW5fYXBwbGllci5oCmluZGV4IGUyNTY3YjE5ZGJiZGM5YTNiZTE4ZGI0MTQ2YzZhMmFi
MDA5ZGI5Y2EuLjdmOWYwMGUwNzYwMGUyYzgxODQ4OWUyYzYxMWU3YTMyNmJjMzAwMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fYXBwbGllci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L2dhaW5fYXBwbGllci5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9f
UFJPQ0VTU0lOR19BR0MyX0dBSU5fQVBQTElFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfQUdDMl9HQUlOX0FQUExJRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fZnJhbWVfdmll
dy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dh
aW5fY3VydmVfYXBwbGllci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fY3VydmVfYXBwbGllci5j
YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVjYTIxYjk4ZTcxODE3ODcyYTA1NDNh
MGYwOWU4ODU5MWJkYWI1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2N1cnZlX2FwcGxpZXIuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2N1cnZlX2FwcGxpZXIuaCIKLQotI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxjbWF0aD4KLQot
I2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIHsKLQotLy8gVGhpcyBjb25z
dGFudCBhZmZlY3RzIHRoZSB3YXkgc2NhbGluZyBmYWN0b3JzIGFyZSBpbnRlcnBvbGF0ZWQgZm9y
IHRoZSBmaXJzdAotLy8gc3ViLWZyYW1lIG9mIGEgZnJhbWUuIE9ubHkgaW4gdGhlIGNhc2UgaW4g
d2hpY2ggdGhlIGZpcnN0IHN1Yi1mcmFtZSBoYXMgYW4KLS8vIGVzdGltYXRlZCBsZXZlbCB3aGlj
aCBpcyBncmVhdGVyIHRoYW4gdGhlIHRoYXQgb2YgdGhlIHByZXZpb3VzIGFuYWx5emVkCi0vLyBz
dWItZnJhbWUsIGxpbmVhciBpbnRlcnBvbGF0aW9uIGlzIHJlcGxhY2VkIHdpdGggYSBwb3dlciBm
dW5jdGlvbiB3aGljaAotLy8gcmVkdWNlcyB0aGUgY2hhbmNlcyBvZiBvdmVyLXNob290aW5nIChh
bmQgaGVuY2Ugc2F0dXJhdGlvbiksIGhvd2V2ZXIgcmVkdWNpbmcKLS8vIHRoZSBmaXhlZCBnYWlu
IGVmZmVjdGl2ZW5lc3MuCi1jb25zdGV4cHIgZmxvYXQga0F0dGFja0ZpcnN0U3ViZnJhbWVJbnRl
cnBvbGF0aW9uUG93ZXIgPSA4LmY7Ci0KLXZvaWQgSW50ZXJwb2xhdGVGaXJzdFN1YmZyYW1lKGZs
b2F0IGxhc3RfZmFjdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgY3Vy
cmVudF9mYWN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmll
dzxmbG9hdD4gc3ViZnJhbWUpIHsKLSAgY29uc3QgYXV0byBuID0gc3ViZnJhbWUuc2l6ZSgpOwot
ICBjb25zdGV4cHIgYXV0byBwID0ga0F0dGFja0ZpcnN0U3ViZnJhbWVJbnRlcnBvbGF0aW9uUG93
ZXI7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgc3ViZnJhbWVbaV0g
PSBzdGQ6OnBvdygxLmYgLSBpIC8gbiwgcCkgKiAobGFzdF9mYWN0b3IgLSBjdXJyZW50X2ZhY3Rv
cikgKwotICAgICAgICAgICAgICAgICAgY3VycmVudF9mYWN0b3I7Ci0gIH0KLX0KLQotdm9pZCBD
b21wdXRlUGVyU2FtcGxlU3ViZnJhbWVGYWN0b3JzKAotICAgIGNvbnN0IHN0ZDo6YXJyYXk8Zmxv
YXQsIGtTdWJGcmFtZXNJbkZyYW1lICsgMT4mIHNjYWxpbmdfZmFjdG9ycywKLSAgICBzaXplX3Qg
c2FtcGxlc19wZXJfY2hhbm5lbCwKLSAgICBydGM6OkFycmF5VmlldzxmbG9hdD4gcGVyX3NhbXBs
ZV9zY2FsaW5nX2ZhY3RvcnMpIHsKLSAgY29uc3Qgc2l6ZV90IG51bV9zdWJmcmFtZXMgPSBzY2Fs
aW5nX2ZhY3RvcnMuc2l6ZSgpIC0gMTsKLSAgY29uc3Qgc2l6ZV90IHN1YmZyYW1lX3NpemUgPQot
ICAgICAgcnRjOjpDaGVja2VkRGl2RXhhY3Qoc2FtcGxlc19wZXJfY2hhbm5lbCwgbnVtX3N1YmZy
YW1lcyk7Ci0KLSAgLy8gSGFuZGxlIGZpcnN0IHN1Yi1mcmFtZSBkaWZmZXJlbnRseSBpbiBjYXNl
IG9mIGF0dGFjay4KLSAgY29uc3QgYm9vbCBpc19hdHRhY2sgPSBzY2FsaW5nX2ZhY3RvcnNbMF0g
PiBzY2FsaW5nX2ZhY3RvcnNbMV07Ci0gIGlmIChpc19hdHRhY2spIHsKLSAgICBJbnRlcnBvbGF0
ZUZpcnN0U3ViZnJhbWUoCi0gICAgICAgIHNjYWxpbmdfZmFjdG9yc1swXSwgc2NhbGluZ19mYWN0
b3JzWzFdLAotICAgICAgICBydGM6OkFycmF5VmlldzxmbG9hdD4oCi0gICAgICAgICAgICBwZXJf
c2FtcGxlX3NjYWxpbmdfZmFjdG9ycy5zdWJ2aWV3KDAsIHN1YmZyYW1lX3NpemUpKSk7Ci0gIH0K
LQotICBmb3IgKHNpemVfdCBpID0gaXNfYXR0YWNrID8gMSA6IDA7IGkgPCBudW1fc3ViZnJhbWVz
OyArK2kpIHsKLSAgICBjb25zdCBzaXplX3Qgc3ViZnJhbWVfc3RhcnQgPSBpICogc3ViZnJhbWVf
c2l6ZTsKLSAgICBjb25zdCBmbG9hdCBzY2FsaW5nX3N0YXJ0ID0gc2NhbGluZ19mYWN0b3JzW2ld
OwotICAgIGNvbnN0IGZsb2F0IHNjYWxpbmdfZW5kID0gc2NhbGluZ19mYWN0b3JzW2kgKyAxXTsK
LSAgICBjb25zdCBmbG9hdCBzY2FsaW5nX2RpZmYgPSAoc2NhbGluZ19lbmQgLSBzY2FsaW5nX3N0
YXJ0KSAvIHN1YmZyYW1lX3NpemU7Ci0gICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzdWJmcmFt
ZV9zaXplOyArK2opIHsKLSAgICAgIHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzW3N1YmZyYW1l
X3N0YXJ0ICsgal0gPQotICAgICAgICAgIHNjYWxpbmdfc3RhcnQgKyBzY2FsaW5nX2RpZmYgKiBq
OwotICAgIH0KLSAgfQotfQotCi12b2lkIFNjYWxlU2FtcGxlcyhydGM6OkFycmF5Vmlldzxjb25z
dCBmbG9hdD4gcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMsCi0gICAgICAgICAgICAgICAgICBB
dWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFsKSB7Ci0gIGNvbnN0IHNpemVfdCBzYW1wbGVzX3Bl
cl9jaGFubmVsID0gc2lnbmFsLnNhbXBsZXNfcGVyX2NoYW5uZWwoKTsKLSAgUlRDX0RDSEVDS19F
UShzYW1wbGVzX3Blcl9jaGFubmVsLCBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9ycy5zaXplKCkp
OwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpZ25hbC5udW1fY2hhbm5lbHMoKTsgKytpKSB7
Ci0gICAgYXV0byBjaGFubmVsID0gc2lnbmFsLmNoYW5uZWwoaSk7Ci0gICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBzYW1wbGVzX3Blcl9jaGFubmVsOyArK2opIHsKLSAgICAgIGNoYW5uZWxbal0g
Kj0gcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNbal07Ci0gICAgfQotICB9Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZQotCi1HYWluQ3VydmVBcHBsaWVyOjpHYWluQ3VydmVBcHBsaWVyKHNpemVfdCBz
YW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBtRGF0
YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnN0cmluZyBoaXN0b2dyYW1fbmFtZSkKLSAgICA6IGludGVycF9nYWluX2N1cnZl
XyhhcG1fZGF0YV9kdW1wZXIsIGhpc3RvZ3JhbV9uYW1lKSwKLSAgICAgIGxldmVsX2VzdGltYXRv
cl8oc2FtcGxlX3JhdGVfaHosIGFwbV9kYXRhX2R1bXBlciksCi0gICAgICBhcG1fZGF0YV9kdW1w
ZXJfKGFwbV9kYXRhX2R1bXBlcikge30KLQotR2FpbkN1cnZlQXBwbGllcjo6fkdhaW5DdXJ2ZUFw
cGxpZXIoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgR2FpbkN1cnZlQXBwbGllcjo6UHJvY2VzcyhBdWRp
b0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFsKSB7Ci0gIGNvbnN0IGF1dG8gbGV2ZWxfZXN0aW1hdGUg
PSBsZXZlbF9lc3RpbWF0b3JfLkNvbXB1dGVMZXZlbChzaWduYWwpOwotCi0gIFJUQ19EQ0hFQ0tf
RVEobGV2ZWxfZXN0aW1hdGUuc2l6ZSgpICsgMSwgc2NhbGluZ19mYWN0b3JzXy5zaXplKCkpOwot
ICBzY2FsaW5nX2ZhY3RvcnNfWzBdID0gbGFzdF9zY2FsaW5nX2ZhY3Rvcl87Ci0gIHN0ZDo6dHJh
bnNmb3JtKGxldmVsX2VzdGltYXRlLmJlZ2luKCksIGxldmVsX2VzdGltYXRlLmVuZCgpLAotICAg
ICAgICAgICAgICAgICBzY2FsaW5nX2ZhY3RvcnNfLmJlZ2luKCkgKyAxLCBbdGhpc10oZmxvYXQg
eCkgewotICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcnBfZ2Fpbl9jdXJ2ZV8uTG9va1Vw
R2FpblRvQXBwbHkoeCk7Ci0gICAgICAgICAgICAgICAgIH0pOwotCi0gIGNvbnN0IHNpemVfdCBz
YW1wbGVzX3Blcl9jaGFubmVsID0gc2lnbmFsLnNhbXBsZXNfcGVyX2NoYW5uZWwoKTsKLSAgUlRD
X0RDSEVDS19MRShzYW1wbGVzX3Blcl9jaGFubmVsLCBrTWF4aW1hbE51bWJlck9mU2FtcGxlc1Bl
ckNoYW5uZWwpOwotCi0gIGF1dG8gcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMgPSBydGM6OkFy
cmF5VmlldzxmbG9hdD4oCi0gICAgICAmcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNfWzBdLCBz
YW1wbGVzX3Blcl9jaGFubmVsKTsKLSAgQ29tcHV0ZVBlclNhbXBsZVN1YmZyYW1lRmFjdG9ycyhz
Y2FsaW5nX2ZhY3RvcnNfLCBzYW1wbGVzX3Blcl9jaGFubmVsLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzKTsKLSAgU2NhbGVTYW1w
bGVzKHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzLCBzaWduYWwpOwotCi0gIGxhc3Rfc2NhbGlu
Z19mYWN0b3JfID0gc2NhbGluZ19mYWN0b3JzXy5iYWNrKCk7Ci0KLSAgLy8gRHVtcCBkYXRhIGZv
ciBkZWJ1Zy4KLSAgYXBtX2RhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWdjMl9nYWluX2N1cnZlX2Fw
cGxpZXJfc2NhbGluZ19mYWN0b3JzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1w
bGVzX3Blcl9jaGFubmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcl9zYW1wbGVf
c2NhbGluZ19mYWN0b3JzXy5kYXRhKCkpOwotfQotCi1JbnRlcnBvbGF0ZWRHYWluQ3VydmU6OlN0
YXRzIEdhaW5DdXJ2ZUFwcGxpZXI6OkdldEdhaW5DdXJ2ZVN0YXRzKCkgY29uc3QgewotICByZXR1
cm4gaW50ZXJwX2dhaW5fY3VydmVfLmdldF9zdGF0cygpOwotfQotCi12b2lkIEdhaW5DdXJ2ZUFw
cGxpZXI6OlNldFNhbXBsZVJhdGUoc2l6ZV90IHNhbXBsZV9yYXRlX2h6KSB7Ci0gIGxldmVsX2Vz
dGltYXRvcl8uU2V0U2FtcGxlUmF0ZShzYW1wbGVfcmF0ZV9oeik7Ci0gIC8vIENoZWNrIHRoYXQg
cGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNfIGlzIGxhcmdlIGVub3VnaC4KLSAgUlRDX0RDSEVD
S19MRShzYW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICAgICAgICBrTWF4aW1hbE51bWJlck9mU2Ft
cGxlc1BlckNoYW5uZWwgKiAxMDAwIC8ga0ZyYW1lRHVyYXRpb25Ncyk7Ci19Ci0KLXZvaWQgR2Fp
bkN1cnZlQXBwbGllcjo6UmVzZXQoKSB7Ci0gIGxldmVsX2VzdGltYXRvcl8uUmVzZXQoKTsKLX0K
LQotZmxvYXQgR2FpbkN1cnZlQXBwbGllcjo6TGFzdEF1ZGlvTGV2ZWwoKSBjb25zdCB7Ci0gIHJl
dHVybiBsZXZlbF9lc3RpbWF0b3JfLkxhc3RBdWRpb0xldmVsKCk7Ci19Ci0KLX0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fY3VydmVfYXBwbGll
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGUwYmUxOWUwNjk0NGM4M2MxMmVkNjk1Y2JjNTAwNzJkZDhlYmEzNGYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJ
TkdfQUdDMl9HQUlOX0NVUlZFX0FQUExJRVJfSF8KLSNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FHQzJfR0FJTl9DVVJWRV9BUFBMSUVSX0hfCi0KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0K
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9kaWdpdGFsX2xl
dmVsX2VzdGltYXRvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2luY2x1ZGUvYXVkaW9fZnJhbWVfdmlldy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Nv
bnN0cnVjdG9ybWFnaWMuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBBcG1EYXRhRHVt
cGVyOwotCi1jbGFzcyBHYWluQ3VydmVBcHBsaWVyIHsKLSBwdWJsaWM6Ci0gIEdhaW5DdXJ2ZUFw
cGxpZXIoc2l6ZV90IHNhbXBsZV9yYXRlX2h6LAotICAgICAgICAgICAgICAgICAgIEFwbURhdGFE
dW1wZXIqIGFwbV9kYXRhX2R1bXBlciwKLSAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBo
aXN0b2dyYW1fbmFtZV9wcmVmaXgpOwotCi0gIH5HYWluQ3VydmVBcHBsaWVyKCk7Ci0KLSAgdm9p
ZCBQcm9jZXNzKEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBzaWduYWwpOwotICBJbnRlcnBvbGF0ZWRH
YWluQ3VydmU6OlN0YXRzIEdldEdhaW5DdXJ2ZVN0YXRzKCkgY29uc3Q7Ci0KLSAgLy8gU3VwcG9y
dGVkIHJhdGVzIG11c3QgYmUKLSAgLy8gKiBzdXBwb3J0ZWQgYnkgRml4ZWREaWdpdGFsTGV2ZWxF
c3RpbWF0b3IKLSAgLy8gKiBiZWxvdyBrTWF4aW1hbE51bWJlck9mU2FtcGxlc1BlckNoYW5uZWwq
MTAwMC9rRnJhbWVEdXJhdGlvbk1zCi0gIC8vICAgc28gdGhhdCBzYW1wbGVzX3Blcl9jaGFubmVs
IGZpdCBpbiB0aGUKLSAgLy8gICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc18gYXJyYXkuCi0g
IHZvaWQgU2V0U2FtcGxlUmF0ZShzaXplX3Qgc2FtcGxlX3JhdGVfaHopOwotCi0gIC8vIFJlc2V0
cyB0aGUgaW50ZXJuYWwgc3RhdGUuCi0gIHZvaWQgUmVzZXQoKTsKLQotICBmbG9hdCBMYXN0QXVk
aW9MZXZlbCgpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgY29uc3QgSW50ZXJwb2xhdGVkR2FpbkN1
cnZlIGludGVycF9nYWluX2N1cnZlXzsKLSAgRml4ZWREaWdpdGFsTGV2ZWxFc3RpbWF0b3IgbGV2
ZWxfZXN0aW1hdG9yXzsKLSAgQXBtRGF0YUR1bXBlciogY29uc3QgYXBtX2RhdGFfZHVtcGVyXyA9
IG51bGxwdHI7Ci0KLSAgLy8gV29yayBhcnJheSBjb250YWluaW5nIHRoZSBzdWItZnJhbWUgc2Nh
bGluZyBmYWN0b3JzIHRvIGJlIGludGVycG9sYXRlZC4KLSAgc3RkOjphcnJheTxmbG9hdCwga1N1
YkZyYW1lc0luRnJhbWUgKyAxPiBzY2FsaW5nX2ZhY3RvcnNfID0ge307Ci0gIHN0ZDo6YXJyYXk8
ZmxvYXQsIGtNYXhpbWFsTnVtYmVyT2ZTYW1wbGVzUGVyQ2hhbm5lbD4KLSAgICAgIHBlcl9zYW1w
bGVfc2NhbGluZ19mYWN0b3JzXyA9IHt9OwotICBmbG9hdCBsYXN0X3NjYWxpbmdfZmFjdG9yXyA9
IDEuZjsKLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEdhaW5DdXJ2ZUFwcGxpZXIp
OwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19BR0MyX0dBSU5fQ1VSVkVfQVBQTElFUl9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwZjc1ZjYyYzQwN2NiYjNkOTkwNDhmNDA4MmJiYzdjNDlhMWZmMGM4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dh
aW5fY3VydmVfYXBwbGllcl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmgiCi0KLSNpbmNsdWRlICJjb21tb25fYXVk
aW8vaW5jbHVkZS9hdWRpb191dGlsLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvYWdjMl9jb21tb24uaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9hZ2MyX3Rlc3RpbmdfY29tbW9uLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FnYzIvdmVjdG9yX2Zsb2F0X2ZyYW1lLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvZ3VuaXQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLVRFU1QoR2FpbkN1cnZlQXBw
bGllciwgR2FpbkN1cnZlQXBwbGllclNob3VsZENvbnN0cnVjdEFuZFJ1bikgewotICBjb25zdCBp
bnQgc2FtcGxlX3JhdGVfaHogPSA0ODAwMDsKLSAgQXBtRGF0YUR1bXBlciBhcG1fZGF0YV9kdW1w
ZXIoMCk7Ci0KLSAgR2FpbkN1cnZlQXBwbGllciBnYWluX2N1cnZlX2FwcGxpZXIoc2FtcGxlX3Jh
dGVfaHosICZhcG1fZGF0YV9kdW1wZXIsICIiKTsKLQotICBWZWN0b3JGbG9hdEZyYW1lIHZlY3Rv
cnNfd2l0aF9mbG9hdF9mcmFtZSgxLCBzYW1wbGVfcmF0ZV9oeiAvIDEwMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01heEFic0Zsb2F0UzE2VmFsdWUpOwot
ICBnYWluX2N1cnZlX2FwcGxpZXIuUHJvY2Vzcyh2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUuZmxv
YXRfZnJhbWVfdmlldygpKTsKLX0KLQotVEVTVChHYWluQ3VydmVBcHBsaWVyLCBPdXRwdXRWb2x1
bWVBYm92ZVRocmVzaG9sZCkgewotICBjb25zdCBpbnQgc2FtcGxlX3JhdGVfaHogPSA0ODAwMDsK
LSAgY29uc3QgZmxvYXQgaW5wdXRfbGV2ZWwgPQotICAgICAgKGtNYXhBYnNGbG9hdFMxNlZhbHVl
ICsgRGJmc1RvRmxvYXRTMTYodGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGcykpIC8KLSAg
ICAgIDIuZjsKLSAgQXBtRGF0YUR1bXBlciBhcG1fZGF0YV9kdW1wZXIoMCk7Ci0KLSAgR2FpbkN1
cnZlQXBwbGllciBnYWluX2N1cnZlX2FwcGxpZXIoc2FtcGxlX3JhdGVfaHosICZhcG1fZGF0YV9k
dW1wZXIsICIiKTsKLQotICAvLyBHaXZlIHRoZSBsZXZlbCBlc3RpbWF0b3IgdGltZSB0byBhZGFw
dC4KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsKLSAgICBWZWN0b3JGbG9hdEZyYW1l
IHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZSgxLCBzYW1wbGVfcmF0ZV9oeiAvIDEwMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9sZXZlbCk7Ci0g
ICAgZ2Fpbl9jdXJ2ZV9hcHBsaWVyLlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lLmZs
b2F0X2ZyYW1lX3ZpZXcoKSk7Ci0gIH0KLQotICBWZWN0b3JGbG9hdEZyYW1lIHZlY3RvcnNfd2l0
aF9mbG9hdF9mcmFtZSgxLCBzYW1wbGVfcmF0ZV9oeiAvIDEwMCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGV2ZWwpOwotICBnYWluX2N1cnZlX2Fw
cGxpZXIuUHJvY2Vzcyh2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUuZmxvYXRfZnJhbWVfdmlldygp
KTsKLSAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNoYW5uZWwgPQotICAgICAgdmVjdG9y
c193aXRoX2Zsb2F0X2ZyYW1lLmZsb2F0X2ZyYW1lX3ZpZXcoKS5jaGFubmVsKDApOwotCi0gIGZv
ciAoY29uc3QgYXV0byYgc2FtcGxlIDogY2hhbm5lbCkgewotICAgIEVYUEVDVF9MVCgwLjlmICog
a01heEFic0Zsb2F0UzE2VmFsdWUsIHNhbXBsZSk7Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvaW50ZXJwb2xhdGVkX2dhaW5fY3Vy
dmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYwppbmRleCA3
M2U2YThlY2MzNmYxNTYwYzgyNTA5Nzk3ZmZkNTU4NzVmOGJkMGY3Li5mNWQ2YjQ3MTY5YzIyMjZk
NGQxYzJkZDEyNWIzOTZkMDBiNzkyYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRl
cnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRf
Z2Fpbl9jdXJ2ZS5jYwpAQCAtMTAsMTAgKzEwLDEyIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIgogCisjaW5jbHVk
ZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fp
bl9jdXJ2ZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ludGVycG9sYXRlZF9nYWluX2N1
cnZlX3VuaXR0ZXN0LmNjCmluZGV4IGRkNjk2MzEzYWUyNjY1NzRhNGI4NTMxZWU5ZmJiOTY0NTBj
YzJiMGEuLmE4ZTBmMjM2MWM5MWExMjEzMDY3ODA3ZTA0OTU4ZDAxZjU4Zjc4NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2ludGVycG9sYXRlZF9nYWluX2N1cnZlX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2ludGVycG9sYXRlZF9nYWluX2N1cnZlX3VuaXR0ZXN0LmNjCkBA
IC05LDYgKzksNyBAQAogICovCiAKICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDx0eXBlX3Ry
YWl0cz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpA
QCAtMTYsNyArMTcsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L2FnYzJfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
Y29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlci5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXJfZGJfZ2Fpbl9jdXJ2ZS5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0Lmgi
CkBAIC0yNyw3ICsyOCw4IEBAIG5hbWVzcGFjZSB7CiBjb25zdGV4cHIgZG91YmxlIGtMZXZlbEVw
c2lsb24gPSAxZS0yICoga01heEFic0Zsb2F0UzE2VmFsdWU7CiBjb25zdGV4cHIgZmxvYXQga0lu
dGVycG9sYXRlZEdhaW5DdXJ2ZVRvbGVyYW5jZSA9IDEuZiAvIDMyNzY4LmY7CiBBcG1EYXRhRHVt
cGVyIGFwbV9kYXRhX2R1bXBlcigwKTsKLWNvbnN0IExpbWl0ZXIgbGltaXRlcjsKK3N0YXRpY19h
c3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPExpbWl0ZXJEYkdhaW5DdXJ2ZT46
OnZhbHVlLCAiIik7Citjb25zdCBMaW1pdGVyRGJHYWluQ3VydmUgbGltaXRlcjsKIAogfSAgLy8g
bmFtZXNwYWNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9saW1pdGVyLmNjCmluZGV4IGQyYjk4NzdiZTExZWQ0YTM2MWRlOTNmYTZkYWQ3
MzUyMGFhMDBjZGYuLjE1ODlmMDc0MDRkOTkwMDM5ZGRiOTNmZTA2M2M0MWRiZWE1ZWNlYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
bGltaXRlci5jYwpAQCAtMTAsMTI4ICsxMCwxNDEgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxjbWF0aD4KIAotI2luY2x1ZGUgImNvbW1vbl9hdWRp
by9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJp
Y3Mvc2FmZV9taW5tYXguaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogCi1k
b3VibGUgQ29tcHV0ZUtuZWVTdGFydChkb3VibGUgbWF4X2lucHV0X2xldmVsX2RiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgZG91YmxlIGtuZWVfc21vb3RobmVzc19kYiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRvdWJsZSBjb21wcmVzc2lvbl9yYXRpbykgewotICBSVENfQ0hFQ0tfTFQo
KGNvbXByZXNzaW9uX3JhdGlvIC0gMS4wKSAqIGtuZWVfc21vb3RobmVzc19kYiAvCi0gICAgICAg
ICAgICAgICAgICAgKDIuMCAqIGNvbXByZXNzaW9uX3JhdGlvKSwKLSAgICAgICAgICAgICAgIG1h
eF9pbnB1dF9sZXZlbF9kYik7Ci0gIHJldHVybiAta25lZV9zbW9vdGhuZXNzX2RiIC8gMi4wIC0K
LSAgICAgICAgIG1heF9pbnB1dF9sZXZlbF9kYiAvIChjb21wcmVzc2lvbl9yYXRpbyAtIDEuMCk7
CisvLyBUaGlzIGNvbnN0YW50IGFmZmVjdHMgdGhlIHdheSBzY2FsaW5nIGZhY3RvcnMgYXJlIGlu
dGVycG9sYXRlZCBmb3IgdGhlIGZpcnN0CisvLyBzdWItZnJhbWUgb2YgYSBmcmFtZS4gT25seSBp
biB0aGUgY2FzZSBpbiB3aGljaCB0aGUgZmlyc3Qgc3ViLWZyYW1lIGhhcyBhbgorLy8gZXN0aW1h
dGVkIGxldmVsIHdoaWNoIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdGhhdCBvZiB0aGUgcHJldmlvdXMg
YW5hbHl6ZWQKKy8vIHN1Yi1mcmFtZSwgbGluZWFyIGludGVycG9sYXRpb24gaXMgcmVwbGFjZWQg
d2l0aCBhIHBvd2VyIGZ1bmN0aW9uIHdoaWNoCisvLyByZWR1Y2VzIHRoZSBjaGFuY2VzIG9mIG92
ZXItc2hvb3RpbmcgKGFuZCBoZW5jZSBzYXR1cmF0aW9uKSwgaG93ZXZlciByZWR1Y2luZworLy8g
dGhlIGZpeGVkIGdhaW4gZWZmZWN0aXZlbmVzcy4KK2NvbnN0ZXhwciBmbG9hdCBrQXR0YWNrRmly
c3RTdWJmcmFtZUludGVycG9sYXRpb25Qb3dlciA9IDguZjsKKwordm9pZCBJbnRlcnBvbGF0ZUZp
cnN0U3ViZnJhbWUoZmxvYXQgbGFzdF9mYWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCBjdXJyZW50X2ZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PiBzdWJmcmFtZSkgeworICBjb25zdCBhdXRvIG4gPSBzdWJm
cmFtZS5zaXplKCk7CisgIGNvbnN0ZXhwciBhdXRvIHAgPSBrQXR0YWNrRmlyc3RTdWJmcmFtZUlu
dGVycG9sYXRpb25Qb3dlcjsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAg
ICBzdWJmcmFtZVtpXSA9IHN0ZDo6cG93KDEuZiAtIGkgLyBuLCBwKSAqIChsYXN0X2ZhY3RvciAt
IGN1cnJlbnRfZmFjdG9yKSArCisgICAgICAgICAgICAgICAgICBjdXJyZW50X2ZhY3RvcjsKKyAg
fQogfQogCi1zdGQ6OmFycmF5PGRvdWJsZSwgMz4gQ29tcHV0ZUtuZWVSZWdpb25Qb2x5bm9taWFs
KGRvdWJsZSBrbmVlX3N0YXJ0X2RiZnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBrbmVlX3Ntb290aG5lc3NfZGIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBjb21wcmVzc2lv
bl9yYXRpbykgewotICBjb25zdCBkb3VibGUgYSA9ICgxLjAgLSBjb21wcmVzc2lvbl9yYXRpbykg
LwotICAgICAgICAgICAgICAgICAgICgyLjAgKiBrbmVlX3Ntb290aG5lc3NfZGIgKiBjb21wcmVz
c2lvbl9yYXRpbyk7Ci0gIGNvbnN0IGRvdWJsZSBiID0gMS4wIC0gMi4wICogYSAqIGtuZWVfc3Rh
cnRfZGJmczsKLSAgY29uc3QgZG91YmxlIGMgPSBhICoga25lZV9zdGFydF9kYmZzICoga25lZV9z
dGFydF9kYmZzOwotICByZXR1cm4ge3thLCBiLCBjfX07Ci19Cit2b2lkIENvbXB1dGVQZXJTYW1w
bGVTdWJmcmFtZUZhY3RvcnMoCisgICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga1N1YkZyYW1l
c0luRnJhbWUgKyAxPiYgc2NhbGluZ19mYWN0b3JzLAorICAgIHNpemVfdCBzYW1wbGVzX3Blcl9j
aGFubmVsLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PiBwZXJfc2FtcGxlX3NjYWxpbmdfZmFj
dG9ycykgeworICBjb25zdCBzaXplX3QgbnVtX3N1YmZyYW1lcyA9IHNjYWxpbmdfZmFjdG9ycy5z
aXplKCkgLSAxOworICBjb25zdCBzaXplX3Qgc3ViZnJhbWVfc2l6ZSA9CisgICAgICBydGM6OkNo
ZWNrZWREaXZFeGFjdChzYW1wbGVzX3Blcl9jaGFubmVsLCBudW1fc3ViZnJhbWVzKTsKKworICAv
LyBIYW5kbGUgZmlyc3Qgc3ViLWZyYW1lIGRpZmZlcmVudGx5IGluIGNhc2Ugb2YgYXR0YWNrLgor
ICBjb25zdCBib29sIGlzX2F0dGFjayA9IHNjYWxpbmdfZmFjdG9yc1swXSA+IHNjYWxpbmdfZmFj
dG9yc1sxXTsKKyAgaWYgKGlzX2F0dGFjaykgeworICAgIEludGVycG9sYXRlRmlyc3RTdWJmcmFt
ZSgKKyAgICAgICAgc2NhbGluZ19mYWN0b3JzWzBdLCBzY2FsaW5nX2ZhY3RvcnNbMV0sCisgICAg
ICAgIHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PigKKyAgICAgICAgICAgIHBlcl9zYW1wbGVfc2NhbGlu
Z19mYWN0b3JzLnN1YnZpZXcoMCwgc3ViZnJhbWVfc2l6ZSkpKTsKKyAgfQogCi1kb3VibGUgQ29t
cHV0ZUxpbWl0ZXJEMShkb3VibGUgbWF4X2lucHV0X2xldmVsX2RiLCBkb3VibGUgY29tcHJlc3Np
b25fcmF0aW8pIHsKLSAgcmV0dXJuIChzdGQ6OnBvdygxMC4wLCAtbWF4X2lucHV0X2xldmVsX2Ri
IC8gKDIwLjAgKiBjb21wcmVzc2lvbl9yYXRpbykpICoKLSAgICAgICAgICAoMS4wIC0gY29tcHJl
c3Npb25fcmF0aW8pIC8gY29tcHJlc3Npb25fcmF0aW8pIC8KLSAgICAgICAgIGtNYXhBYnNGbG9h
dFMxNlZhbHVlOworICBmb3IgKHNpemVfdCBpID0gaXNfYXR0YWNrID8gMSA6IDA7IGkgPCBudW1f
c3ViZnJhbWVzOyArK2kpIHsKKyAgICBjb25zdCBzaXplX3Qgc3ViZnJhbWVfc3RhcnQgPSBpICog
c3ViZnJhbWVfc2l6ZTsKKyAgICBjb25zdCBmbG9hdCBzY2FsaW5nX3N0YXJ0ID0gc2NhbGluZ19m
YWN0b3JzW2ldOworICAgIGNvbnN0IGZsb2F0IHNjYWxpbmdfZW5kID0gc2NhbGluZ19mYWN0b3Jz
W2kgKyAxXTsKKyAgICBjb25zdCBmbG9hdCBzY2FsaW5nX2RpZmYgPSAoc2NhbGluZ19lbmQgLSBz
Y2FsaW5nX3N0YXJ0KSAvIHN1YmZyYW1lX3NpemU7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGog
PCBzdWJmcmFtZV9zaXplOyArK2opIHsKKyAgICAgIHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3Jz
W3N1YmZyYW1lX3N0YXJ0ICsgal0gPQorICAgICAgICAgIHNjYWxpbmdfc3RhcnQgKyBzY2FsaW5n
X2RpZmYgKiBqOworICAgIH0KKyAgfQogfQogCi1jb25zdGV4cHIgZG91YmxlIENvbXB1dGVMaW1p
dGVyRDIoZG91YmxlIGNvbXByZXNzaW9uX3JhdGlvKSB7Ci0gIHJldHVybiAoMS4wIC0gMi4wICog
Y29tcHJlc3Npb25fcmF0aW8pIC8gY29tcHJlc3Npb25fcmF0aW87Cit2b2lkIFNjYWxlU2FtcGxl
cyhydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMs
CisgICAgICAgICAgICAgICAgICBBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFsKSB7CisgIGNv
bnN0IHNpemVfdCBzYW1wbGVzX3Blcl9jaGFubmVsID0gc2lnbmFsLnNhbXBsZXNfcGVyX2NoYW5u
ZWwoKTsKKyAgUlRDX0RDSEVDS19FUShzYW1wbGVzX3Blcl9jaGFubmVsLCBwZXJfc2FtcGxlX3Nj
YWxpbmdfZmFjdG9ycy5zaXplKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpZ25hbC5u
dW1fY2hhbm5lbHMoKTsgKytpKSB7CisgICAgYXV0byBjaGFubmVsID0gc2lnbmFsLmNoYW5uZWwo
aSk7CisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzYW1wbGVzX3Blcl9jaGFubmVsOyArK2op
IHsKKyAgICAgIGNoYW5uZWxbal0gPSBydGM6OlNhZmVDbGFtcChjaGFubmVsW2pdICogcGVyX3Nh
bXBsZV9zY2FsaW5nX2ZhY3RvcnNbal0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga01pbkZsb2F0UzE2VmFsdWUsIGtNYXhGbG9hdFMxNlZhbHVlKTsKKyAgICB9CisgIH0KIH0K
IAotZG91YmxlIENvbXB1dGVMaW1pdGVySTIoZG91YmxlIG1heF9pbnB1dF9sZXZlbF9kYiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBjb21wcmVzc2lvbl9yYXRpbywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSBnYWluX2N1cnZlX2xpbWl0ZXJfaTEpIHsKLSAgUlRDX0NI
RUNLX05FKGdhaW5fY3VydmVfbGltaXRlcl9pMSwgMC5mKTsKLSAgcmV0dXJuIHN0ZDo6cG93KDEw
LjAsIC1tYXhfaW5wdXRfbGV2ZWxfZGIgLyAoMjAuMCAqIGNvbXByZXNzaW9uX3JhdGlvKSkgLwot
ICAgICAgICAgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxIC8KLSAgICAgICAgIHN0ZDo6cG93KGtNYXhB
YnNGbG9hdFMxNlZhbHVlLCBnYWluX2N1cnZlX2xpbWl0ZXJfaTEgLSAxKTsKK3ZvaWQgQ2hlY2tM
aW1pdGVyU2FtcGxlUmF0ZShzaXplX3Qgc2FtcGxlX3JhdGVfaHopIHsKKyAgLy8gQ2hlY2sgdGhh
dCBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc18gaXMgbGFyZ2UgZW5vdWdoLgorICBSVENfRENI
RUNLX0xFKHNhbXBsZV9yYXRlX2h6LAorICAgICAgICAgICAgICAgIGtNYXhpbWFsTnVtYmVyT2ZT
YW1wbGVzUGVyQ2hhbm5lbCAqIDEwMDAgLyBrRnJhbWVEdXJhdGlvbk1zKTsKIH0KIAogfSAgLy8g
bmFtZXNwYWNlCiAKLUxpbWl0ZXI6OkxpbWl0ZXIoKQotICAgIDogbWF4X2lucHV0X2xldmVsX2xp
bmVhcl8oRGJmc1RvRmxvYXRTMTYobWF4X2lucHV0X2xldmVsX2RiXykpLAotICAgICAga25lZV9z
dGFydF9kYmZzXyhDb21wdXRlS25lZVN0YXJ0KG1heF9pbnB1dF9sZXZlbF9kYl8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga25lZV9zbW9vdGhuZXNzX2RiXywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbl9yYXRpb18p
KSwKLSAgICAgIGtuZWVfc3RhcnRfbGluZWFyXyhEYmZzVG9GbG9hdFMxNihrbmVlX3N0YXJ0X2Ri
ZnNfKSksCi0gICAgICBsaW1pdGVyX3N0YXJ0X2RiZnNfKGtuZWVfc3RhcnRfZGJmc18gKyBrbmVl
X3Ntb290aG5lc3NfZGJfKSwKLSAgICAgIGxpbWl0ZXJfc3RhcnRfbGluZWFyXyhEYmZzVG9GbG9h
dFMxNihsaW1pdGVyX3N0YXJ0X2RiZnNfKSksCi0gICAgICBrbmVlX3JlZ2lvbl9wb2x5bm9taWFs
XyhDb21wdXRlS25lZVJlZ2lvblBvbHlub21pYWwoa25lZV9zdGFydF9kYmZzXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbmVlX3Nt
b290aG5lc3NfZGJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uX3JhdGlvXykpLAotICAgICAgZ2Fpbl9jdXJ2ZV9s
aW1pdGVyX2QxXygKLSAgICAgICAgICBDb21wdXRlTGltaXRlckQxKG1heF9pbnB1dF9sZXZlbF9k
Yl8sIGNvbXByZXNzaW9uX3JhdGlvXykpLAotICAgICAgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2QyXyhD
b21wdXRlTGltaXRlckQyKGNvbXByZXNzaW9uX3JhdGlvXykpLAotICAgICAgZ2Fpbl9jdXJ2ZV9s
aW1pdGVyX2kxXygxLjAgLyBjb21wcmVzc2lvbl9yYXRpb18pLAotICAgICAgZ2Fpbl9jdXJ2ZV9s
aW1pdGVyX2kyXyhDb21wdXRlTGltaXRlckkyKG1heF9pbnB1dF9sZXZlbF9kYl8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25fcmF0aW9f
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhaW5fY3Vy
dmVfbGltaXRlcl9pMV8pKSB7Ci0gIHN0YXRpY19hc3NlcnQoa25lZV9zbW9vdGhuZXNzX2RiXyA+
IDAuMGYsICIiKTsKLSAgc3RhdGljX2Fzc2VydChjb21wcmVzc2lvbl9yYXRpb18gPiAxLjBmLCAi
Iik7Ci0gIFJUQ19DSEVDS19HRShtYXhfaW5wdXRfbGV2ZWxfZGJfLCBrbmVlX3N0YXJ0X2RiZnNf
ICsga25lZV9zbW9vdGhuZXNzX2RiXyk7CitMaW1pdGVyOjpMaW1pdGVyKHNpemVfdCBzYW1wbGVf
cmF0ZV9oeiwKKyAgICAgICAgICAgICAgICAgQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVy
LAorICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBoaXN0b2dyYW1fbmFtZSkKKyAgICA6IGlu
dGVycF9nYWluX2N1cnZlXyhhcG1fZGF0YV9kdW1wZXIsIGhpc3RvZ3JhbV9uYW1lKSwKKyAgICAg
IGxldmVsX2VzdGltYXRvcl8oc2FtcGxlX3JhdGVfaHosIGFwbV9kYXRhX2R1bXBlciksCisgICAg
ICBhcG1fZGF0YV9kdW1wZXJfKGFwbV9kYXRhX2R1bXBlcikgeworICBDaGVja0xpbWl0ZXJTYW1w
bGVSYXRlKHNhbXBsZV9yYXRlX2h6KTsKIH0KIAotY29uc3RleHByIGRvdWJsZSBMaW1pdGVyOjpt
YXhfaW5wdXRfbGV2ZWxfZGJfOwotY29uc3RleHByIGRvdWJsZSBMaW1pdGVyOjprbmVlX3Ntb290
aG5lc3NfZGJfOwotY29uc3RleHByIGRvdWJsZSBMaW1pdGVyOjpjb21wcmVzc2lvbl9yYXRpb187
CitMaW1pdGVyOjp+TGltaXRlcigpID0gZGVmYXVsdDsKIAotZG91YmxlIExpbWl0ZXI6OkdldE91
dHB1dExldmVsRGJmcyhkb3VibGUgaW5wdXRfbGV2ZWxfZGJmcykgY29uc3QgewotICBpZiAoaW5w
dXRfbGV2ZWxfZGJmcyA8IGtuZWVfc3RhcnRfZGJmc18pIHsKLSAgICByZXR1cm4gaW5wdXRfbGV2
ZWxfZGJmczsKLSAgfSBlbHNlIGlmIChpbnB1dF9sZXZlbF9kYmZzIDwgbGltaXRlcl9zdGFydF9k
YmZzXykgewotICAgIHJldHVybiBHZXRLbmVlUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKGlucHV0X2xl
dmVsX2RiZnMpOwotICB9Ci0gIHJldHVybiBHZXRDb21wcmVzc29yUmVnaW9uT3V0cHV0TGV2ZWxE
YmZzKGlucHV0X2xldmVsX2RiZnMpOwotfQordm9pZCBMaW1pdGVyOjpQcm9jZXNzKEF1ZGlvRnJh
bWVWaWV3PGZsb2F0PiBzaWduYWwpIHsKKyAgY29uc3QgYXV0byBsZXZlbF9lc3RpbWF0ZSA9IGxl
dmVsX2VzdGltYXRvcl8uQ29tcHV0ZUxldmVsKHNpZ25hbCk7CiAKLWRvdWJsZSBMaW1pdGVyOjpH
ZXRHYWluTGluZWFyKGRvdWJsZSBpbnB1dF9sZXZlbF9saW5lYXIpIGNvbnN0IHsKLSAgaWYgKGlu
cHV0X2xldmVsX2xpbmVhciA8IGtuZWVfc3RhcnRfbGluZWFyXykgewotICAgIHJldHVybiAxLjA7
Ci0gIH0KLSAgcmV0dXJuIERiZnNUb0Zsb2F0UzE2KAotICAgICAgICAgICAgIEdldE91dHB1dExl
dmVsRGJmcyhGbG9hdFMxNlRvRGJmcyhpbnB1dF9sZXZlbF9saW5lYXIpKSkgLwotICAgICAgICAg
aW5wdXRfbGV2ZWxfbGluZWFyOworICBSVENfRENIRUNLX0VRKGxldmVsX2VzdGltYXRlLnNpemUo
KSArIDEsIHNjYWxpbmdfZmFjdG9yc18uc2l6ZSgpKTsKKyAgc2NhbGluZ19mYWN0b3JzX1swXSA9
IGxhc3Rfc2NhbGluZ19mYWN0b3JfOworICBzdGQ6OnRyYW5zZm9ybShsZXZlbF9lc3RpbWF0ZS5i
ZWdpbigpLCBsZXZlbF9lc3RpbWF0ZS5lbmQoKSwKKyAgICAgICAgICAgICAgICAgc2NhbGluZ19m
YWN0b3JzXy5iZWdpbigpICsgMSwgW3RoaXNdKGZsb2F0IHgpIHsKKyAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaW50ZXJwX2dhaW5fY3VydmVfLkxvb2tVcEdhaW5Ub0FwcGx5KHgpOworICAgICAg
ICAgICAgICAgICB9KTsKKworICBjb25zdCBzaXplX3Qgc2FtcGxlc19wZXJfY2hhbm5lbCA9IHNp
Z25hbC5zYW1wbGVzX3Blcl9jaGFubmVsKCk7CisgIFJUQ19EQ0hFQ0tfTEUoc2FtcGxlc19wZXJf
Y2hhbm5lbCwga01heGltYWxOdW1iZXJPZlNhbXBsZXNQZXJDaGFubmVsKTsKKworICBhdXRvIHBl
cl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzID0gcnRjOjpBcnJheVZpZXc8ZmxvYXQ+KAorICAgICAg
JnBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzX1swXSwgc2FtcGxlc19wZXJfY2hhbm5lbCk7Cisg
IENvbXB1dGVQZXJTYW1wbGVTdWJmcmFtZUZhY3RvcnMoc2NhbGluZ19mYWN0b3JzXywgc2FtcGxl
c19wZXJfY2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJfc2Ft
cGxlX3NjYWxpbmdfZmFjdG9ycyk7CisgIFNjYWxlU2FtcGxlcyhwZXJfc2FtcGxlX3NjYWxpbmdf
ZmFjdG9ycywgc2lnbmFsKTsKKworICBsYXN0X3NjYWxpbmdfZmFjdG9yXyA9IHNjYWxpbmdfZmFj
dG9yc18uYmFjaygpOworCisgIC8vIER1bXAgZGF0YSBmb3IgZGVidWcuCisgIGFwbV9kYXRhX2R1
bXBlcl8tPkR1bXBSYXcoImFnYzJfZ2Fpbl9jdXJ2ZV9hcHBsaWVyX3NjYWxpbmdfZmFjdG9ycyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlc19wZXJfY2hhbm5lbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc18uZGF0YSgp
KTsKIH0KIAotLy8gQ29tcHV0ZXMgdGhlIGZpcnN0IGRlcml2YXRpdmUgb2YgR2V0R2FpbkxpbmVh
cigpIGluIHx4fC4KLWRvdWJsZSBMaW1pdGVyOjpHZXRHYWluRmlyc3REZXJpdmF0aXZlTGluZWFy
KGRvdWJsZSB4KSBjb25zdCB7Ci0gIC8vIEJleW9uZC1rbmVlIHJlZ2lvbiBvbmx5LgotICBSVENf
Q0hFQ0tfR0UoeCwgbGltaXRlcl9zdGFydF9saW5lYXJfIC0gMWUtNyAqIGtNYXhBYnNGbG9hdFMx
NlZhbHVlKTsKLSAgcmV0dXJuIGdhaW5fY3VydmVfbGltaXRlcl9kMV8gKgotICAgICAgICAgc3Rk
Ojpwb3coeCAvIGtNYXhBYnNGbG9hdFMxNlZhbHVlLCBnYWluX2N1cnZlX2xpbWl0ZXJfZDJfKTsK
K0ludGVycG9sYXRlZEdhaW5DdXJ2ZTo6U3RhdHMgTGltaXRlcjo6R2V0R2FpbkN1cnZlU3RhdHMo
KSBjb25zdCB7CisgIHJldHVybiBpbnRlcnBfZ2Fpbl9jdXJ2ZV8uZ2V0X3N0YXRzKCk7CiB9CiAK
LS8vIENvbXB1dGVzIHRoZSBpbnRlZ3JhbCBvZiBHZXRHYWluTGluZWFyKCkgaW4gdGhlIHJhbmdl
IFt4MCwgeDFdLgotZG91YmxlIExpbWl0ZXI6OkdldEdhaW5JbnRlZ3JhbExpbmVhcihkb3VibGUg
eDAsIGRvdWJsZSB4MSkgY29uc3QgewotICBSVENfQ0hFQ0tfTEUoeDAsIHgxKTsgICAgICAgICAg
ICAgICAgICAgICAvLyBWYWxpZCBpbnRlcnZhbC4KLSAgUlRDX0NIRUNLX0dFKHgwLCBsaW1pdGVy
X3N0YXJ0X2xpbmVhcl8pOyAgLy8gQmV5b25kLWtuZWUgcmVnaW9uIG9ubHkuCi0gIGF1dG8gbGlt
aXRlcl9pbnRlZ3JhbCA9IFt0aGlzXShjb25zdCBkb3VibGUmIHgpIHsKLSAgICByZXR1cm4gZ2Fp
bl9jdXJ2ZV9saW1pdGVyX2kyXyAqIHN0ZDo6cG93KHgsIGdhaW5fY3VydmVfbGltaXRlcl9pMV8p
OwotICB9OwotICByZXR1cm4gbGltaXRlcl9pbnRlZ3JhbCh4MSkgLSBsaW1pdGVyX2ludGVncmFs
KHgwKTsKK3ZvaWQgTGltaXRlcjo6U2V0U2FtcGxlUmF0ZShzaXplX3Qgc2FtcGxlX3JhdGVfaHop
IHsKKyAgQ2hlY2tMaW1pdGVyU2FtcGxlUmF0ZShzYW1wbGVfcmF0ZV9oeik7CisgIGxldmVsX2Vz
dGltYXRvcl8uU2V0U2FtcGxlUmF0ZShzYW1wbGVfcmF0ZV9oeik7CiB9CiAKLWRvdWJsZSBMaW1p
dGVyOjpHZXRLbmVlUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKGRvdWJsZSBpbnB1dF9sZXZlbF9kYmZz
KSBjb25zdCB7Ci0gIHJldHVybiBrbmVlX3JlZ2lvbl9wb2x5bm9taWFsX1swXSAqIGlucHV0X2xl
dmVsX2RiZnMgKiBpbnB1dF9sZXZlbF9kYmZzICsKLSAgICAgICAgIGtuZWVfcmVnaW9uX3BvbHlu
b21pYWxfWzFdICogaW5wdXRfbGV2ZWxfZGJmcyArCi0gICAgICAgICBrbmVlX3JlZ2lvbl9wb2x5
bm9taWFsX1syXTsKK3ZvaWQgTGltaXRlcjo6UmVzZXQoKSB7CisgIGxldmVsX2VzdGltYXRvcl8u
UmVzZXQoKTsKIH0KIAotZG91YmxlIExpbWl0ZXI6OkdldENvbXByZXNzb3JSZWdpb25PdXRwdXRM
ZXZlbERiZnMoCi0gICAgZG91YmxlIGlucHV0X2xldmVsX2RiZnMpIGNvbnN0IHsKLSAgcmV0dXJu
IChpbnB1dF9sZXZlbF9kYmZzIC0gbWF4X2lucHV0X2xldmVsX2RiXykgLyBjb21wcmVzc2lvbl9y
YXRpb187CitmbG9hdCBMaW1pdGVyOjpMYXN0QXVkaW9MZXZlbCgpIGNvbnN0IHsKKyAgcmV0dXJu
IGxldmVsX2VzdGltYXRvcl8uTGFzdEF1ZGlvTGV2ZWwoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvbGltaXRlci5oCmluZGV4IGYzNTBiYWVlZjEwNWUzYjlhY2ZmNDcyYmY5NDc4NzJmODBl
YjFkYjguLjFlMGFiNzFhMTgzNzg2ZGQxNjE2YmQ5ZTAzMDg2ZDJkZjdhZTAzNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVy
LmgKQEAgLTExLDYyICsxMSw1MiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdf
QUdDMl9MSU1JVEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0xJ
TUlURVJfSF8KIAotI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRl
IDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2My
X3Rlc3RpbmdfY29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX2ZyYW1lX3ZpZXcuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
eworY2xhc3MgQXBtRGF0YUR1bXBlcjsKIAotLy8gQSBjbGFzcyBmb3IgY29tcHV0aW5nIGdhaW4g
Y3VydmUgcGFyYW1ldGVycy4gVGhlIGdhaW4gY3VydmUgaXMKLS8vIGRlZmluZWQgYnkgY29uc3Rh
bnRzIGtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnMsIGtMaW1pdGVyS25lZVNtb290aG5lc3NEYiwK
LS8vIGtMaW1pdGVyQ29tcHJlc3Npb25SYXRpby4gVGhlIGN1cnZlIGNvbnNpbnRzIG9mIG9uZSBs
aW5lYXIgcGFydCwKLS8vIG9uZSBxdWFkcmF0aWMgcG9seW5vbWlhbCBwYXJ0IGFuZCBhbm90aGVy
IGxpbmVhciBwYXJ0LiBUaGUKLS8vIGNvbnN0YW50cyBkZWZpbmUgdGhlIHBhcmFtZXRlcnMgb2Yg
dGhlIHBhcnRzLgogY2xhc3MgTGltaXRlciB7CiAgcHVibGljOgotICBMaW1pdGVyKCk7CisgIExp
bWl0ZXIoc2l6ZV90IHNhbXBsZV9yYXRlX2h6LAorICAgICAgICAgIEFwbURhdGFEdW1wZXIqIGFw
bV9kYXRhX2R1bXBlciwKKyAgICAgICAgICBzdGQ6OnN0cmluZyBoaXN0b2dyYW1fbmFtZV9wcmVm
aXgpOworICBMaW1pdGVyKGNvbnN0IExpbWl0ZXImIGxpbWl0ZXIpID0gZGVsZXRlOworICBMaW1p
dGVyJiBvcGVyYXRvcj0oY29uc3QgTGltaXRlciYgbGltaXRlcikgPSBkZWxldGU7CisgIH5MaW1p
dGVyKCk7CiAKLSAgZG91YmxlIG1heF9pbnB1dF9sZXZlbF9kYigpIGNvbnN0IHsgcmV0dXJuIG1h
eF9pbnB1dF9sZXZlbF9kYl87IH0KLSAgZG91YmxlIG1heF9pbnB1dF9sZXZlbF9saW5lYXIoKSBj
b25zdCB7IHJldHVybiBtYXhfaW5wdXRfbGV2ZWxfbGluZWFyXzsgfQotICBkb3VibGUga25lZV9z
dGFydF9saW5lYXIoKSBjb25zdCB7IHJldHVybiBrbmVlX3N0YXJ0X2xpbmVhcl87IH0KLSAgZG91
YmxlIGxpbWl0ZXJfc3RhcnRfbGluZWFyKCkgY29uc3QgeyByZXR1cm4gbGltaXRlcl9zdGFydF9s
aW5lYXJfOyB9CisgIC8vIEFwcGxpZXMgbGltaXRlciBhbmQgaGFyZC1jbGlwcGluZyB0byB8c2ln
bmFsfC4KKyAgdm9pZCBQcm9jZXNzKEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBzaWduYWwpOworICBJ
bnRlcnBvbGF0ZWRHYWluQ3VydmU6OlN0YXRzIEdldEdhaW5DdXJ2ZVN0YXRzKCkgY29uc3Q7CiAK
LSAgLy8gVGhlc2UgbWV0aG9kcyBjYW4gYmUgbWFya2VkICdjb25zdGV4cHInIGluIEMrKyAxNC4K
LSAgZG91YmxlIEdldE91dHB1dExldmVsRGJmcyhkb3VibGUgaW5wdXRfbGV2ZWxfZGJmcykgY29u
c3Q7Ci0gIGRvdWJsZSBHZXRHYWluTGluZWFyKGRvdWJsZSBpbnB1dF9sZXZlbF9saW5lYXIpIGNv
bnN0OwotICBkb3VibGUgR2V0R2FpbkZpcnN0RGVyaXZhdGl2ZUxpbmVhcihkb3VibGUgeCkgY29u
c3Q7Ci0gIGRvdWJsZSBHZXRHYWluSW50ZWdyYWxMaW5lYXIoZG91YmxlIHgwLCBkb3VibGUgeDEp
IGNvbnN0OworICAvLyBTdXBwb3J0ZWQgcmF0ZXMgbXVzdCBiZQorICAvLyAqIHN1cHBvcnRlZCBi
eSBGaXhlZERpZ2l0YWxMZXZlbEVzdGltYXRvcgorICAvLyAqIGJlbG93IGtNYXhpbWFsTnVtYmVy
T2ZTYW1wbGVzUGVyQ2hhbm5lbCoxMDAwL2tGcmFtZUR1cmF0aW9uTXMKKyAgLy8gICBzbyB0aGF0
IHNhbXBsZXNfcGVyX2NoYW5uZWwgZml0IGluIHRoZQorICAvLyAgIHBlcl9zYW1wbGVfc2NhbGlu
Z19mYWN0b3JzXyBhcnJheS4KKyAgdm9pZCBTZXRTYW1wbGVSYXRlKHNpemVfdCBzYW1wbGVfcmF0
ZV9oeik7CiAKLSBwcml2YXRlOgotICBkb3VibGUgR2V0S25lZVJlZ2lvbk91dHB1dExldmVsRGJm
cyhkb3VibGUgaW5wdXRfbGV2ZWxfZGJmcykgY29uc3Q7Ci0gIGRvdWJsZSBHZXRDb21wcmVzc29y
UmVnaW9uT3V0cHV0TGV2ZWxEYmZzKGRvdWJsZSBpbnB1dF9sZXZlbF9kYmZzKSBjb25zdDsKLQot
ICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfZGJfID0gdGVzdDo6a0xp
bWl0ZXJNYXhJbnB1dExldmVsRGJGczsKLSAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga25lZV9z
bW9vdGhuZXNzX2RiXyA9IHRlc3Q6OmtMaW1pdGVyS25lZVNtb290aG5lc3NEYjsKLSAgc3RhdGlj
IGNvbnN0ZXhwciBkb3VibGUgY29tcHJlc3Npb25fcmF0aW9fID0gdGVzdDo6a0xpbWl0ZXJDb21w
cmVzc2lvblJhdGlvOwotCi0gIGNvbnN0IGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfbGluZWFyXzsK
LQotICAvLyBEbyBub3QgbW9kaWZ5IHNpZ25hbCB3aXRoIGxldmVsIDw9IGtuZWVfc3RhcnRfZGJm
c18uCi0gIGNvbnN0IGRvdWJsZSBrbmVlX3N0YXJ0X2RiZnNfOwotICBjb25zdCBkb3VibGUga25l
ZV9zdGFydF9saW5lYXJfOworICAvLyBSZXNldHMgdGhlIGludGVybmFsIHN0YXRlLgorICB2b2lk
IFJlc2V0KCk7CiAKLSAgLy8gVGhlIHVwcGVyIGVuZCBvZiB0aGUga25lZSByZWdpb24sIHdoaWNo
IGlzIGJldHdlZW4ga25lZV9zdGFydF9kYmZzXyBhbmQKLSAgLy8gbGltaXRlcl9zdGFydF9kYmZz
Xy4KLSAgY29uc3QgZG91YmxlIGxpbWl0ZXJfc3RhcnRfZGJmc187Ci0gIGNvbnN0IGRvdWJsZSBs
aW1pdGVyX3N0YXJ0X2xpbmVhcl87CisgIGZsb2F0IExhc3RBdWRpb0xldmVsKCkgY29uc3Q7CiAK
LSAgLy8gQ29lZmZpY2llbnRzIHthLCBiLCBjfSBvZiB0aGUga25lZSByZWdpb24gcG9seW5vbWlh
bAotICAvLyBheF4yICsgYnggKyBjIGluIHRoZSBEQiBzY2FsZS4KLSAgY29uc3Qgc3RkOjphcnJh
eTxkb3VibGUsIDM+IGtuZWVfcmVnaW9uX3BvbHlub21pYWxfOwotCi0gIC8vIFBhcmFtZXRlcnMg
Zm9yIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgZmlyc3QgZGVyaXZhdGl2ZSBvZiBHZXRHYWluTGlu
ZWFyKCkuCi0gIGNvbnN0IGRvdWJsZSBnYWluX2N1cnZlX2xpbWl0ZXJfZDFfOwotICBjb25zdCBk
b3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2QyXzsKLQotICAvLyBQYXJhbWV0ZXJzIGZvciB0aGUg
Y29tcHV0YXRpb24gb2YgdGhlIGludGVncmFsIG9mIEdldEdhaW5MaW5lYXIoKS4KLSAgY29uc3Qg
ZG91YmxlIGdhaW5fY3VydmVfbGltaXRlcl9pMV87Ci0gIGNvbnN0IGRvdWJsZSBnYWluX2N1cnZl
X2xpbWl0ZXJfaTJfOworIHByaXZhdGU6CisgIGNvbnN0IEludGVycG9sYXRlZEdhaW5DdXJ2ZSBp
bnRlcnBfZ2Fpbl9jdXJ2ZV87CisgIEZpeGVkRGlnaXRhbExldmVsRXN0aW1hdG9yIGxldmVsX2Vz
dGltYXRvcl87CisgIEFwbURhdGFEdW1wZXIqIGNvbnN0IGFwbV9kYXRhX2R1bXBlcl8gPSBudWxs
cHRyOworCisgIC8vIFdvcmsgYXJyYXkgY29udGFpbmluZyB0aGUgc3ViLWZyYW1lIHNjYWxpbmcg
ZmFjdG9ycyB0byBiZSBpbnRlcnBvbGF0ZWQuCisgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtTdWJGcmFt
ZXNJbkZyYW1lICsgMT4gc2NhbGluZ19mYWN0b3JzXyA9IHt9OworICBzdGQ6OmFycmF5PGZsb2F0
LCBrTWF4aW1hbE51bWJlck9mU2FtcGxlc1BlckNoYW5uZWw+CisgICAgICBwZXJfc2FtcGxlX3Nj
YWxpbmdfZmFjdG9yc18gPSB7fTsKKyAgZmxvYXQgbGFzdF9zY2FsaW5nX2ZhY3Rvcl8gPSAxLmY7
CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9saW1pdGVyX2RiX2dhaW5fY3VydmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dh
aW5fY3VydmUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU1ZWQ1ZGY1OGMxYWE1ZGMxODM0ZjYwMTljMDExMzIy
ZDJlMzdjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXJfZGJfZ2Fp
bl9jdXJ2ZS5jYwpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3Vy
dmUuaCIKKworI2luY2x1ZGUgPGNtYXRoPgorCisjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1
ZGUvYXVkaW9fdXRpbC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L2FnYzJfY29tbW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworbmFtZXNwYWNlIHsKKworZG91YmxlIENvbXB1dGVLbmVlU3RhcnQoZG91Ymxl
IG1heF9pbnB1dF9sZXZlbF9kYiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBrbmVl
X3Ntb290aG5lc3NfZGIsCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgY29tcHJlc3Np
b25fcmF0aW8pIHsKKyAgUlRDX0NIRUNLX0xUKChjb21wcmVzc2lvbl9yYXRpbyAtIDEuMCkgKiBr
bmVlX3Ntb290aG5lc3NfZGIgLworICAgICAgICAgICAgICAgICAgICgyLjAgKiBjb21wcmVzc2lv
bl9yYXRpbyksCisgICAgICAgICAgICAgICBtYXhfaW5wdXRfbGV2ZWxfZGIpOworICByZXR1cm4g
LWtuZWVfc21vb3RobmVzc19kYiAvIDIuMCAtCisgICAgICAgICBtYXhfaW5wdXRfbGV2ZWxfZGIg
LyAoY29tcHJlc3Npb25fcmF0aW8gLSAxLjApOworfQorCitzdGQ6OmFycmF5PGRvdWJsZSwgMz4g
Q29tcHV0ZUtuZWVSZWdpb25Qb2x5bm9taWFsKGRvdWJsZSBrbmVlX3N0YXJ0X2RiZnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBrbmVl
X3Ntb290aG5lc3NfZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSBjb21wcmVzc2lvbl9yYXRpbykgeworICBjb25zdCBkb3VibGUgYSA9
ICgxLjAgLSBjb21wcmVzc2lvbl9yYXRpbykgLworICAgICAgICAgICAgICAgICAgICgyLjAgKiBr
bmVlX3Ntb290aG5lc3NfZGIgKiBjb21wcmVzc2lvbl9yYXRpbyk7CisgIGNvbnN0IGRvdWJsZSBi
ID0gMS4wIC0gMi4wICogYSAqIGtuZWVfc3RhcnRfZGJmczsKKyAgY29uc3QgZG91YmxlIGMgPSBh
ICoga25lZV9zdGFydF9kYmZzICoga25lZV9zdGFydF9kYmZzOworICByZXR1cm4ge3thLCBiLCBj
fX07Cit9CisKK2RvdWJsZSBDb21wdXRlTGltaXRlckQxKGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxf
ZGIsIGRvdWJsZSBjb21wcmVzc2lvbl9yYXRpbykgeworICByZXR1cm4gKHN0ZDo6cG93KDEwLjAs
IC1tYXhfaW5wdXRfbGV2ZWxfZGIgLyAoMjAuMCAqIGNvbXByZXNzaW9uX3JhdGlvKSkgKgorICAg
ICAgICAgICgxLjAgLSBjb21wcmVzc2lvbl9yYXRpbykgLyBjb21wcmVzc2lvbl9yYXRpbykgLwor
ICAgICAgICAga01heEFic0Zsb2F0UzE2VmFsdWU7Cit9CisKK2NvbnN0ZXhwciBkb3VibGUgQ29t
cHV0ZUxpbWl0ZXJEMihkb3VibGUgY29tcHJlc3Npb25fcmF0aW8pIHsKKyAgcmV0dXJuICgxLjAg
LSAyLjAgKiBjb21wcmVzc2lvbl9yYXRpbykgLyBjb21wcmVzc2lvbl9yYXRpbzsKK30KKworZG91
YmxlIENvbXB1dGVMaW1pdGVySTIoZG91YmxlIG1heF9pbnB1dF9sZXZlbF9kYiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSBjb21wcmVzc2lvbl9yYXRpbywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSBnYWluX2N1cnZlX2xpbWl0ZXJfaTEpIHsKKyAgUlRDX0NIRUNLX05F
KGdhaW5fY3VydmVfbGltaXRlcl9pMSwgMC5mKTsKKyAgcmV0dXJuIHN0ZDo6cG93KDEwLjAsIC1t
YXhfaW5wdXRfbGV2ZWxfZGIgLyAoMjAuMCAqIGNvbXByZXNzaW9uX3JhdGlvKSkgLworICAgICAg
ICAgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxIC8KKyAgICAgICAgIHN0ZDo6cG93KGtNYXhBYnNGbG9h
dFMxNlZhbHVlLCBnYWluX2N1cnZlX2xpbWl0ZXJfaTEgLSAxKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlCisKK0xpbWl0ZXJEYkdhaW5DdXJ2ZTo6TGltaXRlckRiR2FpbkN1cnZlKCkKKyAgICA6IG1h
eF9pbnB1dF9sZXZlbF9saW5lYXJfKERiZnNUb0Zsb2F0UzE2KG1heF9pbnB1dF9sZXZlbF9kYl8p
KSwKKyAgICAgIGtuZWVfc3RhcnRfZGJmc18oQ29tcHV0ZUtuZWVTdGFydChtYXhfaW5wdXRfbGV2
ZWxfZGJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtuZWVfc21v
b3RobmVzc19kYl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t
cHJlc3Npb25fcmF0aW9fKSksCisgICAgICBrbmVlX3N0YXJ0X2xpbmVhcl8oRGJmc1RvRmxvYXRT
MTYoa25lZV9zdGFydF9kYmZzXykpLAorICAgICAgbGltaXRlcl9zdGFydF9kYmZzXyhrbmVlX3N0
YXJ0X2RiZnNfICsga25lZV9zbW9vdGhuZXNzX2RiXyksCisgICAgICBsaW1pdGVyX3N0YXJ0X2xp
bmVhcl8oRGJmc1RvRmxvYXRTMTYobGltaXRlcl9zdGFydF9kYmZzXykpLAorICAgICAga25lZV9y
ZWdpb25fcG9seW5vbWlhbF8oQ29tcHV0ZUtuZWVSZWdpb25Qb2x5bm9taWFsKGtuZWVfc3RhcnRf
ZGJmc18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga25lZV9zbW9vdGhuZXNzX2RiXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbl9yYXRpb18pKSwKKyAg
ICAgIGdhaW5fY3VydmVfbGltaXRlcl9kMV8oCisgICAgICAgICAgQ29tcHV0ZUxpbWl0ZXJEMSht
YXhfaW5wdXRfbGV2ZWxfZGJfLCBjb21wcmVzc2lvbl9yYXRpb18pKSwKKyAgICAgIGdhaW5fY3Vy
dmVfbGltaXRlcl9kMl8oQ29tcHV0ZUxpbWl0ZXJEMihjb21wcmVzc2lvbl9yYXRpb18pKSwKKyAg
ICAgIGdhaW5fY3VydmVfbGltaXRlcl9pMV8oMS4wIC8gY29tcHJlc3Npb25fcmF0aW9fKSwKKyAg
ICAgIGdhaW5fY3VydmVfbGltaXRlcl9pMl8oQ29tcHV0ZUxpbWl0ZXJJMihtYXhfaW5wdXRfbGV2
ZWxfZGJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bXByZXNzaW9uX3JhdGlvXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnYWluX2N1cnZlX2xpbWl0ZXJfaTFfKSkgeworICBzdGF0aWNfYXNzZXJ0KGtuZWVf
c21vb3RobmVzc19kYl8gPiAwLjBmLCAiIik7CisgIHN0YXRpY19hc3NlcnQoY29tcHJlc3Npb25f
cmF0aW9fID4gMS4wZiwgIiIpOworICBSVENfQ0hFQ0tfR0UobWF4X2lucHV0X2xldmVsX2RiXywg
a25lZV9zdGFydF9kYmZzXyArIGtuZWVfc21vb3RobmVzc19kYl8pOworfQorCitjb25zdGV4cHIg
ZG91YmxlIExpbWl0ZXJEYkdhaW5DdXJ2ZTo6bWF4X2lucHV0X2xldmVsX2RiXzsKK2NvbnN0ZXhw
ciBkb3VibGUgTGltaXRlckRiR2FpbkN1cnZlOjprbmVlX3Ntb290aG5lc3NfZGJfOworY29uc3Rl
eHByIGRvdWJsZSBMaW1pdGVyRGJHYWluQ3VydmU6OmNvbXByZXNzaW9uX3JhdGlvXzsKKworZG91
YmxlIExpbWl0ZXJEYkdhaW5DdXJ2ZTo6R2V0T3V0cHV0TGV2ZWxEYmZzKGRvdWJsZSBpbnB1dF9s
ZXZlbF9kYmZzKSBjb25zdCB7CisgIGlmIChpbnB1dF9sZXZlbF9kYmZzIDwga25lZV9zdGFydF9k
YmZzXykgeworICAgIHJldHVybiBpbnB1dF9sZXZlbF9kYmZzOworICB9IGVsc2UgaWYgKGlucHV0
X2xldmVsX2RiZnMgPCBsaW1pdGVyX3N0YXJ0X2RiZnNfKSB7CisgICAgcmV0dXJuIEdldEtuZWVS
ZWdpb25PdXRwdXRMZXZlbERiZnMoaW5wdXRfbGV2ZWxfZGJmcyk7CisgIH0KKyAgcmV0dXJuIEdl
dENvbXByZXNzb3JSZWdpb25PdXRwdXRMZXZlbERiZnMoaW5wdXRfbGV2ZWxfZGJmcyk7Cit9CisK
K2RvdWJsZSBMaW1pdGVyRGJHYWluQ3VydmU6OkdldEdhaW5MaW5lYXIoZG91YmxlIGlucHV0X2xl
dmVsX2xpbmVhcikgY29uc3QgeworICBpZiAoaW5wdXRfbGV2ZWxfbGluZWFyIDwga25lZV9zdGFy
dF9saW5lYXJfKSB7CisgICAgcmV0dXJuIDEuMDsKKyAgfQorICByZXR1cm4gRGJmc1RvRmxvYXRT
MTYoCisgICAgICAgICAgICAgR2V0T3V0cHV0TGV2ZWxEYmZzKEZsb2F0UzE2VG9EYmZzKGlucHV0
X2xldmVsX2xpbmVhcikpKSAvCisgICAgICAgICBpbnB1dF9sZXZlbF9saW5lYXI7Cit9CisKKy8v
IENvbXB1dGVzIHRoZSBmaXJzdCBkZXJpdmF0aXZlIG9mIEdldEdhaW5MaW5lYXIoKSBpbiB8eHwu
Citkb3VibGUgTGltaXRlckRiR2FpbkN1cnZlOjpHZXRHYWluRmlyc3REZXJpdmF0aXZlTGluZWFy
KGRvdWJsZSB4KSBjb25zdCB7CisgIC8vIEJleW9uZC1rbmVlIHJlZ2lvbiBvbmx5LgorICBSVENf
Q0hFQ0tfR0UoeCwgbGltaXRlcl9zdGFydF9saW5lYXJfIC0gMWUtNyAqIGtNYXhBYnNGbG9hdFMx
NlZhbHVlKTsKKyAgcmV0dXJuIGdhaW5fY3VydmVfbGltaXRlcl9kMV8gKgorICAgICAgICAgc3Rk
Ojpwb3coeCAvIGtNYXhBYnNGbG9hdFMxNlZhbHVlLCBnYWluX2N1cnZlX2xpbWl0ZXJfZDJfKTsK
K30KKworLy8gQ29tcHV0ZXMgdGhlIGludGVncmFsIG9mIEdldEdhaW5MaW5lYXIoKSBpbiB0aGUg
cmFuZ2UgW3gwLCB4MV0uCitkb3VibGUgTGltaXRlckRiR2FpbkN1cnZlOjpHZXRHYWluSW50ZWdy
YWxMaW5lYXIoZG91YmxlIHgwLCBkb3VibGUgeDEpIGNvbnN0IHsKKyAgUlRDX0NIRUNLX0xFKHgw
LCB4MSk7ICAgICAgICAgICAgICAgICAgICAgLy8gVmFsaWQgaW50ZXJ2YWwuCisgIFJUQ19DSEVD
S19HRSh4MCwgbGltaXRlcl9zdGFydF9saW5lYXJfKTsgIC8vIEJleW9uZC1rbmVlIHJlZ2lvbiBv
bmx5LgorICBhdXRvIGxpbWl0ZXJfaW50ZWdyYWwgPSBbdGhpc10oY29uc3QgZG91YmxlJiB4KSB7
CisgICAgcmV0dXJuIGdhaW5fY3VydmVfbGltaXRlcl9pMl8gKiBzdGQ6OnBvdyh4LCBnYWluX2N1
cnZlX2xpbWl0ZXJfaTFfKTsKKyAgfTsKKyAgcmV0dXJuIGxpbWl0ZXJfaW50ZWdyYWwoeDEpIC0g
bGltaXRlcl9pbnRlZ3JhbCh4MCk7Cit9CisKK2RvdWJsZSBMaW1pdGVyRGJHYWluQ3VydmU6Okdl
dEtuZWVSZWdpb25PdXRwdXRMZXZlbERiZnMoCisgICAgZG91YmxlIGlucHV0X2xldmVsX2RiZnMp
IGNvbnN0IHsKKyAgcmV0dXJuIGtuZWVfcmVnaW9uX3BvbHlub21pYWxfWzBdICogaW5wdXRfbGV2
ZWxfZGJmcyAqIGlucHV0X2xldmVsX2RiZnMgKworICAgICAgICAga25lZV9yZWdpb25fcG9seW5v
bWlhbF9bMV0gKiBpbnB1dF9sZXZlbF9kYmZzICsKKyAgICAgICAgIGtuZWVfcmVnaW9uX3BvbHlu
b21pYWxfWzJdOworfQorCitkb3VibGUgTGltaXRlckRiR2FpbkN1cnZlOjpHZXRDb21wcmVzc29y
UmVnaW9uT3V0cHV0TGV2ZWxEYmZzKAorICAgIGRvdWJsZSBpbnB1dF9sZXZlbF9kYmZzKSBjb25z
dCB7CisgIHJldHVybiAoaW5wdXRfbGV2ZWxfZGJmcyAtIG1heF9pbnB1dF9sZXZlbF9kYl8pIC8g
Y29tcHJlc3Npb25fcmF0aW9fOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3VydmUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL2xpbWl0ZXJfZGJfZ2Fpbl9jdXJ2ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwODZlMjY3MzliN2NmYzIw
ZmU2YTRjMzUzYTRkN2JjNWFhMDY4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9saW1pdGVyX2RiX2dhaW5fY3VydmUuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogIENvcHly
aWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9MSU1JVEVS
X0RCX0dBSU5fQ1VSVkVfSF8KKyNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJf
TElNSVRFUl9EQl9HQUlOX0NVUlZFX0hfCisKKyNpbmNsdWRlIDxhcnJheT4KKworI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfdGVzdGluZ19jb21tb24uaCIKKwor
bmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEEgY2xhc3MgZm9yIGNvbXB1dGluZyBhIGxpbWl0ZXIg
Z2FpbiBjdXJ2ZSAoaW4gZEIgc2NhbGUpIGdpdmVuIGEgc2V0IG9mCisvLyBoYXJkLWNvZGVkIHBh
cmFtZXRlcnMgKG5hbWVseSwga0xpbWl0ZXJEYkdhaW5DdXJ2ZU1heElucHV0TGV2ZWxEYkZzLAor
Ly8ga0xpbWl0ZXJEYkdhaW5DdXJ2ZUtuZWVTbW9vdGhuZXNzRGIsIGFuZAorLy8ga0xpbWl0ZXJE
YkdhaW5DdXJ2ZUNvbXByZXNzaW9uUmF0aW8pLiBUaGUgZ2VuZXJhdGVkIGN1cnZlIGNvbnNpc3Rz
IG9mIGZvdXIKKy8vIHJlZ2lvbnM6IGlkZW50aXR5IChsaW5lYXIpLCBrbmVlIChxdWFkcmF0aWMg
cG9seW5vbWlhbCksIGNvbXByZXNzaW9uCisvLyAobGluZWFyKSwgc2F0dXJhdGlvbiAobGluZWFy
KS4gVGhlIGFmb3JlbWVudGlvbmVkIGNvbnN0YW50cyBhcmUgdXNlZCB0byBzaGFwZQorLy8gdGhl
IGRpZmZlcmVudCByZWdpb25zLgorY2xhc3MgTGltaXRlckRiR2FpbkN1cnZlIHsKKyBwdWJsaWM6
CisgIExpbWl0ZXJEYkdhaW5DdXJ2ZSgpOworCisgIGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfZGIo
KSBjb25zdCB7IHJldHVybiBtYXhfaW5wdXRfbGV2ZWxfZGJfOyB9CisgIGRvdWJsZSBtYXhfaW5w
dXRfbGV2ZWxfbGluZWFyKCkgY29uc3QgeyByZXR1cm4gbWF4X2lucHV0X2xldmVsX2xpbmVhcl87
IH0KKyAgZG91YmxlIGtuZWVfc3RhcnRfbGluZWFyKCkgY29uc3QgeyByZXR1cm4ga25lZV9zdGFy
dF9saW5lYXJfOyB9CisgIGRvdWJsZSBsaW1pdGVyX3N0YXJ0X2xpbmVhcigpIGNvbnN0IHsgcmV0
dXJuIGxpbWl0ZXJfc3RhcnRfbGluZWFyXzsgfQorCisgIC8vIFRoZXNlIG1ldGhvZHMgY2FuIGJl
IG1hcmtlZCAnY29uc3RleHByJyBpbiBDKysgMTQuCisgIGRvdWJsZSBHZXRPdXRwdXRMZXZlbERi
ZnMoZG91YmxlIGlucHV0X2xldmVsX2RiZnMpIGNvbnN0OworICBkb3VibGUgR2V0R2FpbkxpbmVh
cihkb3VibGUgaW5wdXRfbGV2ZWxfbGluZWFyKSBjb25zdDsKKyAgZG91YmxlIEdldEdhaW5GaXJz
dERlcml2YXRpdmVMaW5lYXIoZG91YmxlIHgpIGNvbnN0OworICBkb3VibGUgR2V0R2FpbkludGVn
cmFsTGluZWFyKGRvdWJsZSB4MCwgZG91YmxlIHgxKSBjb25zdDsKKworIHByaXZhdGU6CisgIGRv
dWJsZSBHZXRLbmVlUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKGRvdWJsZSBpbnB1dF9sZXZlbF9kYmZz
KSBjb25zdDsKKyAgZG91YmxlIEdldENvbXByZXNzb3JSZWdpb25PdXRwdXRMZXZlbERiZnMoZG91
YmxlIGlucHV0X2xldmVsX2RiZnMpIGNvbnN0OworCisgIHN0YXRpYyBjb25zdGV4cHIgZG91Ymxl
IG1heF9pbnB1dF9sZXZlbF9kYl8gPSB0ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzOwor
ICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrbmVlX3Ntb290aG5lc3NfZGJfID0gdGVzdDo6a0xp
bWl0ZXJLbmVlU21vb3RobmVzc0RiOworICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBjb21wcmVz
c2lvbl9yYXRpb18gPSB0ZXN0OjprTGltaXRlckNvbXByZXNzaW9uUmF0aW87CisKKyAgY29uc3Qg
ZG91YmxlIG1heF9pbnB1dF9sZXZlbF9saW5lYXJfOworCisgIC8vIERvIG5vdCBtb2RpZnkgc2ln
bmFsIHdpdGggbGV2ZWwgPD0ga25lZV9zdGFydF9kYmZzXy4KKyAgY29uc3QgZG91YmxlIGtuZWVf
c3RhcnRfZGJmc187CisgIGNvbnN0IGRvdWJsZSBrbmVlX3N0YXJ0X2xpbmVhcl87CisKKyAgLy8g
VGhlIHVwcGVyIGVuZCBvZiB0aGUga25lZSByZWdpb24sIHdoaWNoIGlzIGJldHdlZW4ga25lZV9z
dGFydF9kYmZzXyBhbmQKKyAgLy8gbGltaXRlcl9zdGFydF9kYmZzXy4KKyAgY29uc3QgZG91Ymxl
IGxpbWl0ZXJfc3RhcnRfZGJmc187CisgIGNvbnN0IGRvdWJsZSBsaW1pdGVyX3N0YXJ0X2xpbmVh
cl87CisKKyAgLy8gQ29lZmZpY2llbnRzIHthLCBiLCBjfSBvZiB0aGUga25lZSByZWdpb24gcG9s
eW5vbWlhbAorICAvLyBheF4yICsgYnggKyBjIGluIHRoZSBEQiBzY2FsZS4KKyAgY29uc3Qgc3Rk
OjphcnJheTxkb3VibGUsIDM+IGtuZWVfcmVnaW9uX3BvbHlub21pYWxfOworCisgIC8vIFBhcmFt
ZXRlcnMgZm9yIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgZmlyc3QgZGVyaXZhdGl2ZSBvZiBHZXRH
YWluTGluZWFyKCkuCisgIGNvbnN0IGRvdWJsZSBnYWluX2N1cnZlX2xpbWl0ZXJfZDFfOworICBj
b25zdCBkb3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2QyXzsKKworICAvLyBQYXJhbWV0ZXJzIGZv
ciB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGludGVncmFsIG9mIEdldEdhaW5MaW5lYXIoKS4KKyAg
Y29uc3QgZG91YmxlIGdhaW5fY3VydmVfbGltaXRlcl9pMV87CisgIGNvbnN0IGRvdWJsZSBnYWlu
X2N1cnZlX2xpbWl0ZXJfaTJfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5k
aWYgIC8vIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0xJTUlURVJfREJfR0FJTl9DVVJW
RV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWluX2N1cnZlX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWluX2N1cnZlX3VuaXR0ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA0OWM4ZDU2OGVhNTBmMGNhZWYyNzk1MmYxZDdiZmE1ZWQwZDU0YjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3VydmVf
dW5pdHRlc3QuY2MKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3Vy
dmUuaCIKKworI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCitURVNUKEZpeGVkRGlnaXRhbEdhaW5Db250cm9sbGVyMkxpbWl0ZXIsIENvbnN0cnVjdERl
c3RydWN0KSB7CisgIExpbWl0ZXJEYkdhaW5DdXJ2ZSBsOworfQorCitURVNUKEZpeGVkRGlnaXRh
bEdhaW5Db250cm9sbGVyMkxpbWl0ZXIsIEdhaW5DdXJ2ZVNob3VsZEJlTW9ub3RvbmUpIHsKKyAg
TGltaXRlckRiR2FpbkN1cnZlIGw7CisgIGZsb2F0IGxhc3Rfb3V0cHV0X2xldmVsID0gMC5mOwor
ICBib29sIGhhc19sYXN0X291dHB1dF9sZXZlbCA9IGZhbHNlOworICBmb3IgKGZsb2F0IGxldmVs
ID0gLTkwLmY7IGxldmVsIDw9IGwubWF4X2lucHV0X2xldmVsX2RiKCk7IGxldmVsICs9IDAuNWYp
IHsKKyAgICBjb25zdCBmbG9hdCBjdXJyZW50X291dHB1dF9sZXZlbCA9IGwuR2V0T3V0cHV0TGV2
ZWxEYmZzKGxldmVsKTsKKyAgICBpZiAoIWhhc19sYXN0X291dHB1dF9sZXZlbCkgeworICAgICAg
bGFzdF9vdXRwdXRfbGV2ZWwgPSBjdXJyZW50X291dHB1dF9sZXZlbDsKKyAgICAgIGhhc19sYXN0
X291dHB1dF9sZXZlbCA9IHRydWU7CisgICAgfQorICAgIEVYUEVDVF9MRShsYXN0X291dHB1dF9s
ZXZlbCwgY3VycmVudF9vdXRwdXRfbGV2ZWwpOworICAgIGxhc3Rfb3V0cHV0X2xldmVsID0gY3Vy
cmVudF9vdXRwdXRfbGV2ZWw7CisgIH0KK30KKworVEVTVChGaXhlZERpZ2l0YWxHYWluQ29udHJv
bGxlcjJMaW1pdGVyLCBHYWluQ3VydmVTaG91bGRCZUNvbnRpbnVvdXMpIHsKKyAgTGltaXRlckRi
R2FpbkN1cnZlIGw7CisgIGZsb2F0IGxhc3Rfb3V0cHV0X2xldmVsID0gMC5mOworICBib29sIGhh
c19sYXN0X291dHB1dF9sZXZlbCA9IGZhbHNlOworICBjb25zdGV4cHIgZmxvYXQga01heERlbHRh
ID0gMC41ZjsKKyAgZm9yIChmbG9hdCBsZXZlbCA9IC05MC5mOyBsZXZlbCA8PSBsLm1heF9pbnB1
dF9sZXZlbF9kYigpOyBsZXZlbCArPSAwLjVmKSB7CisgICAgY29uc3QgZmxvYXQgY3VycmVudF9v
dXRwdXRfbGV2ZWwgPSBsLkdldE91dHB1dExldmVsRGJmcyhsZXZlbCk7CisgICAgaWYgKCFoYXNf
bGFzdF9vdXRwdXRfbGV2ZWwpIHsKKyAgICAgIGxhc3Rfb3V0cHV0X2xldmVsID0gY3VycmVudF9v
dXRwdXRfbGV2ZWw7CisgICAgICBoYXNfbGFzdF9vdXRwdXRfbGV2ZWwgPSB0cnVlOworICAgIH0K
KyAgICBFWFBFQ1RfTEUoY3VycmVudF9vdXRwdXRfbGV2ZWwsIGxhc3Rfb3V0cHV0X2xldmVsICsg
a01heERlbHRhKTsKKyAgICBsYXN0X291dHB1dF9sZXZlbCA9IGN1cnJlbnRfb3V0cHV0X2xldmVs
OworICB9Cit9CisKK1RFU1QoRml4ZWREaWdpdGFsR2FpbkNvbnRyb2xsZXIyTGltaXRlciwgT3V0
cHV0R2FpblNob3VsZEJlTGVzc1RoYW5GdWxsU2NhbGUpIHsKKyAgTGltaXRlckRiR2FpbkN1cnZl
IGw7CisgIGZvciAoZmxvYXQgbGV2ZWwgPSAtOTAuZjsgbGV2ZWwgPD0gbC5tYXhfaW5wdXRfbGV2
ZWxfZGIoKTsgbGV2ZWwgKz0gMC41ZikgeworICAgIGNvbnN0IGZsb2F0IGN1cnJlbnRfb3V0cHV0
X2xldmVsID0gbC5HZXRPdXRwdXRMZXZlbERiZnMobGV2ZWwpOworICAgIEVYUEVDVF9MRShjdXJy
ZW50X291dHB1dF9sZXZlbCwgMC5mKTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvbGltaXRlcl91bml0dGVzdC5jYwppbmRleCA3MDc5ODEyNjM0NzVhYTNiOWYwZWIz
NTE4OTE3NTk4NWJiM2E3OTMyLi5lNjYyYTdmYzg5MDQ1OGUzOGI1OGY3ODEyZjcwMjk5Mzg3ZmRh
ZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXJfdW5pdHRlc3QuY2MKQEAgLTEwLDUwICsxMCw1MCBAQAog
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlci5oIgogCisj
aW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl90ZXN0aW5nX2NvbW1vbi5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZlY3Rvcl9mbG9hdF9mcmFtZS5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
Ci1URVNUKEZpeGVkRGlnaXRhbEdhaW5Db250cm9sbGVyMkxpbWl0ZXIsIENvbnN0cnVjdERlc3Ry
dWN0KSB7Ci0gIExpbWl0ZXIgbDsKLX0KK1RFU1QoTGltaXRlciwgTGltaXRlclNob3VsZENvbnN0
cnVjdEFuZFJ1bikgeworICBjb25zdCBpbnQgc2FtcGxlX3JhdGVfaHogPSA0ODAwMDsKKyAgQXBt
RGF0YUR1bXBlciBhcG1fZGF0YV9kdW1wZXIoMCk7CiAKLVRFU1QoRml4ZWREaWdpdGFsR2FpbkNv
bnRyb2xsZXIyTGltaXRlciwgR2FpbkN1cnZlU2hvdWxkQmVNb25vdG9uZSkgewotICBMaW1pdGVy
IGw7Ci0gIGZsb2F0IGxhc3Rfb3V0cHV0X2xldmVsID0gMC5mOwotICBib29sIGhhc19sYXN0X291
dHB1dF9sZXZlbCA9IGZhbHNlOwotICBmb3IgKGZsb2F0IGxldmVsID0gLTkwLmY7IGxldmVsIDw9
IGwubWF4X2lucHV0X2xldmVsX2RiKCk7IGxldmVsICs9IDAuNWYpIHsKLSAgICBjb25zdCBmbG9h
dCBjdXJyZW50X291dHB1dF9sZXZlbCA9IGwuR2V0T3V0cHV0TGV2ZWxEYmZzKGxldmVsKTsKLSAg
ICBpZiAoIWhhc19sYXN0X291dHB1dF9sZXZlbCkgewotICAgICAgbGFzdF9vdXRwdXRfbGV2ZWwg
PSBjdXJyZW50X291dHB1dF9sZXZlbDsKLSAgICAgIGhhc19sYXN0X291dHB1dF9sZXZlbCA9IHRy
dWU7Ci0gICAgfQotICAgIEVYUEVDVF9MRShsYXN0X291dHB1dF9sZXZlbCwgY3VycmVudF9vdXRw
dXRfbGV2ZWwpOwotICAgIGxhc3Rfb3V0cHV0X2xldmVsID0gY3VycmVudF9vdXRwdXRfbGV2ZWw7
Ci0gIH0KKyAgTGltaXRlciBsaW1pdGVyKHNhbXBsZV9yYXRlX2h6LCAmYXBtX2RhdGFfZHVtcGVy
LCAiIik7CisKKyAgVmVjdG9yRmxvYXRGcmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUoMSwg
c2FtcGxlX3JhdGVfaHogLyAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtNYXhBYnNGbG9hdFMxNlZhbHVlKTsKKyAgbGltaXRlci5Qcm9jZXNzKHZlY3Rv
cnNfd2l0aF9mbG9hdF9mcmFtZS5mbG9hdF9mcmFtZV92aWV3KCkpOwogfQogCi1URVNUKEZpeGVk
RGlnaXRhbEdhaW5Db250cm9sbGVyMkxpbWl0ZXIsIEdhaW5DdXJ2ZVNob3VsZEJlQ29udGludW91
cykgewotICBMaW1pdGVyIGw7Ci0gIGZsb2F0IGxhc3Rfb3V0cHV0X2xldmVsID0gMC5mOwotICBi
b29sIGhhc19sYXN0X291dHB1dF9sZXZlbCA9IGZhbHNlOwotICBjb25zdGV4cHIgZmxvYXQga01h
eERlbHRhID0gMC41ZjsKLSAgZm9yIChmbG9hdCBsZXZlbCA9IC05MC5mOyBsZXZlbCA8PSBsLm1h
eF9pbnB1dF9sZXZlbF9kYigpOyBsZXZlbCArPSAwLjVmKSB7Ci0gICAgY29uc3QgZmxvYXQgY3Vy
cmVudF9vdXRwdXRfbGV2ZWwgPSBsLkdldE91dHB1dExldmVsRGJmcyhsZXZlbCk7Ci0gICAgaWYg
KCFoYXNfbGFzdF9vdXRwdXRfbGV2ZWwpIHsKLSAgICAgIGxhc3Rfb3V0cHV0X2xldmVsID0gY3Vy
cmVudF9vdXRwdXRfbGV2ZWw7Ci0gICAgICBoYXNfbGFzdF9vdXRwdXRfbGV2ZWwgPSB0cnVlOwot
ICAgIH0KLSAgICBFWFBFQ1RfTEUoY3VycmVudF9vdXRwdXRfbGV2ZWwsIGxhc3Rfb3V0cHV0X2xl
dmVsICsga01heERlbHRhKTsKLSAgICBsYXN0X291dHB1dF9sZXZlbCA9IGN1cnJlbnRfb3V0cHV0
X2xldmVsOworVEVTVChMaW1pdGVyLCBPdXRwdXRWb2x1bWVBYm92ZVRocmVzaG9sZCkgeworICBj
b25zdCBpbnQgc2FtcGxlX3JhdGVfaHogPSA0ODAwMDsKKyAgY29uc3QgZmxvYXQgaW5wdXRfbGV2
ZWwgPQorICAgICAgKGtNYXhBYnNGbG9hdFMxNlZhbHVlICsgRGJmc1RvRmxvYXRTMTYodGVzdDo6
a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGcykpIC8KKyAgICAgIDIuZjsKKyAgQXBtRGF0YUR1bXBl
ciBhcG1fZGF0YV9kdW1wZXIoMCk7CisKKyAgTGltaXRlciBsaW1pdGVyKHNhbXBsZV9yYXRlX2h6
LCAmYXBtX2RhdGFfZHVtcGVyLCAiIik7CisKKyAgLy8gR2l2ZSB0aGUgbGV2ZWwgZXN0aW1hdG9y
IHRpbWUgdG8gYWRhcHQuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgVmVj
dG9yRmxvYXRGcmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUoMSwgc2FtcGxlX3JhdGVfaHog
LyAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXRfbGV2ZWwpOworICAgIGxpbWl0ZXIuUHJvY2Vzcyh2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUu
ZmxvYXRfZnJhbWVfdmlldygpKTsKICAgfQotfQogCi1URVNUKEZpeGVkRGlnaXRhbEdhaW5Db250
cm9sbGVyMkxpbWl0ZXIsIE91dHB1dEdhaW5TaG91bGRCZUxlc3NUaGFuRnVsbFNjYWxlKSB7Ci0g
IExpbWl0ZXIgbDsKLSAgZm9yIChmbG9hdCBsZXZlbCA9IC05MC5mOyBsZXZlbCA8PSBsLm1heF9p
bnB1dF9sZXZlbF9kYigpOyBsZXZlbCArPSAwLjVmKSB7Ci0gICAgY29uc3QgZmxvYXQgY3VycmVu
dF9vdXRwdXRfbGV2ZWwgPSBsLkdldE91dHB1dExldmVsRGJmcyhsZXZlbCk7Ci0gICAgRVhQRUNU
X0xFKGN1cnJlbnRfb3V0cHV0X2xldmVsLCAwLmYpOworICBWZWN0b3JGbG9hdEZyYW1lIHZlY3Rv
cnNfd2l0aF9mbG9hdF9mcmFtZSgxLCBzYW1wbGVfcmF0ZV9oeiAvIDEwMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGV2ZWwpOworICBsaW1pdGVy
LlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lLmZsb2F0X2ZyYW1lX3ZpZXcoKSk7Cisg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjaGFubmVsID0KKyAgICAgIHZlY3RvcnNfd2l0
aF9mbG9hdF9mcmFtZS5mbG9hdF9mcmFtZV92aWV3KCkuY2hhbm5lbCgwKTsKKworICBmb3IgKGNv
bnN0IGF1dG8mIHNhbXBsZSA6IGNoYW5uZWwpIHsKKyAgICBFWFBFQ1RfTFQoMC45ZiAqIGtNYXhB
YnNGbG9hdFMxNlZhbHVlLCBzYW1wbGUpOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL25vaXNlX2xldmVsX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL25vaXNlX2xl
dmVsX2VzdGltYXRvci5jYwppbmRleCBkOWFhZjFmOWJkM2Y2Njg5ZGU3ZmFkMDQ3YjkzMzRhM2Yw
ZjcwNmQyLi42ZTQzNjcyY2UwMzE2ZjI3NjJjZTk2MGU2MjYwN2JjODViOTcyYzZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9sZXZlbF9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvbm9pc2VfbGV2ZWxfZXN0aW1hdG9yLmNjCkBAIC0xMCwxMyArMTAsMTUgQEAKIAog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL25vaXNlX2xldmVsX2VzdGlt
YXRvci5oIgogCi0jaW5jbHVkZSA8bWF0aC5oPgotCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPG51bWVyaWM+CiAK
KyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNs
dWRlL2F1ZGlvX3V0aWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9n
Z2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL25vaXNlX3Nw
ZWN0cnVtX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL25vaXNlX3NwZWN0cnVtX2VzdGlt
YXRvci5jYwppbmRleCA5ZTA4MTI2ZTg5MmUzNzUyYzY5YWIzZmM4MTIwY2U2NGQ1MWEyZDE3Li41
NzM1ZmFmM2QyY2JkMzY0ZDBkNTBjOGI1YWQwYjRhYmIwZDAxY2QyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9ub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmNjCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVk
ZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
bG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBu
YW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZWF0dXJlc19l
eHRyYWN0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZWF0dXJlc19leHRyYWN0aW9u
LmNjCmluZGV4IDhhYjU2NzM2YTJmMmI4YjkxOWY0M2Y2NDE1YmZmMTRiOTAyNDI2MmEuLjhmNDcy
YTU1ZWQ2NDlkMjgxMjFiOWVhNGMyYmMxNTc0NWMwOTZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL3Jubl92YWQvZmVhdHVyZXNfZXh0cmFjdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9ybm5fdmFkL2ZlYXR1cmVzX2V4dHJhY3Rpb24uY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVyZXNfZXh0
cmFjdGlvbi5oIgogCisjaW5jbHVkZSA8YXJyYXk+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2xwX3Jlc2lkdWFsLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVy
ZXNfZXh0cmFjdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZWF0dXJlc19leHRyYWN0
aW9uLmgKaW5kZXggMWY2Mzg4NWM0ZTZkODc3NGMyYzQ0ZGMwMTEyNWY1OThhNzUzYTQwMi4uY2U1
Y2NlMTg1N2NkNDE3YmNiZWE0ZDc5ZDAxMTk0NGNiODZlNWU0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvcm5uX3ZhZC9mZWF0dXJlc19leHRyYWN0aW9uLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvcm5uX3ZhZC9mZWF0dXJlc19leHRyYWN0aW9uLmgKQEAgLTExLDEyICsxMSwxMiBAQAogI2lm
bmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9STk5fVkFEX0ZFQVRVUkVTX0VYVFJB
Q1RJT05fSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9G
RUFUVVJFU19FWFRSQUNUSU9OX0hfCiAKLSNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX2luZm8uaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaC5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc2VxdWVuY2VfYnVm
ZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9z
cGVjdHJhbF9mZWF0dXJlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9m
ZnRfdXRpbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmZ0X3V0aWwuY2MKaW5kZXggMTAx
NzQwMGEyODI0ZDFiYmEyYzQ2MmMwNjczMzQ4YmMxNGE1YmFhMC4uYTFjNWRhYzQ3Nzc0ZTQwYjE4
OTcwOGI2NTQ1ZDVmOWFmOTAxZWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3Zh
ZC9mZnRfdXRpbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2ZmdF91dGlsLmNjCkBA
IC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9ybm5fdmFkL2ZmdF91dGlsLmgiCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxj
bWF0aD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvcm5uX3ZhZC9scF9yZXNpZHVhbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9s
cF9yZXNpZHVhbC5oCmluZGV4IGJmZmFmZDI5MWY5MzZlNzlhNDk2MWIxZjdkZGRiYjRiNWUxNTdm
MjEuLmNkZGVkY2E1ZDYxNGVjOTRhMGYzNjU0NGI3M2Q5MzA5ZTRlOGRkNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvbHBfcmVzaWR1YWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9ybm5fdmFkL2xwX3Jlc2lkdWFsLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9MUF9SRVNJRFVBTF9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9STk5fVkFEX0xQX1JFU0lEVUFMX0hfCiAKKyNp
bmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9z
ZWFyY2guY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaC5jYwppbmRleCAx
Zjg4NTlkNWIwNGQ0NTM1MDZiYTE4NWU3Y2M5MGVlOGQ0YWY5YWYzLi5hYTBiNzUxZDI4YTFhYmQ1
ZTRkNzBjZDVlMmQwYzkxZTY0NGYwODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5f
dmFkL3BpdGNoX3NlYXJjaC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3Nl
YXJjaC5jYwpAQCAtMTAsNiArMTAsMTEgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL3Jubl92YWQvcGl0Y2hfc2VhcmNoLmgiCiAKKyNpbmNsdWRlIDxhcnJheT4K
KyNpbmNsdWRlIDxjc3RkZGVmPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKIG5h
bWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHJubl92YWQgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaF9pbnRlcm5hbC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL3Jubl92YWQvcGl0Y2hfc2VhcmNoX2ludGVybmFsLmNjCmluZGV4IGI3YjQ0ZDI5Mzc2OWMw
YWY5MzI0MTY5MjJiNzVlZDZhYWUwMDI1MzQuLjMyZWU4YzAwZGY4NDliNTY0MjE3MGEwODAzMDRj
NTFkZjNjNjdmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvcGl0Y2hfc2Vh
cmNoX2ludGVybmFsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvcGl0Y2hfc2VhcmNo
X2ludGVybmFsLmNjCkBAIC0xMCwxMCArMTAsMTIgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvcGl0Y2hfc2VhcmNoX2ludGVybmFsLmgiCiAKKyNp
bmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+
CisjaW5jbHVkZSA8Y29tcGxleD4KKyNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPG51bWVy
aWM+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL3Jubl92YWQvY29tbW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaF9pbnRlcm5h
bC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFyY2hfaW50ZXJuYWwuaAppbmRl
eCA3NWY3ZjE3YTQyZmMyOTY4ZjNjMjg3ZWUxNDZkMjY3MzFhZTU4NjkzLi5iYjc0N2JiMDNlNGM1
ZDg5YzEyMmRmYzgyNDQ3NzY5M2QzOGZmYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9y
bm5fdmFkL3BpdGNoX3NlYXJjaF9pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92
YWQvcGl0Y2hfc2VhcmNoX2ludGVybmFsLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9QSVRDSF9TRUFSQ0hfSU5URVJOQUxf
SF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9QSVRDSF9T
RUFSQ0hfSU5URVJOQUxfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGFycmF5
PgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL3Jubl92YWQvcm5uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3Jubi5oCmluZGV4IGIz
YTNiOWM0ODVjMTcyZjYyNzZjYjQ5YTJiYjU0ZDE3YTAzYzhiMTUuLmE3ZDA1N2Q1NzY5NTkwMDFh
NDRmN2QzYjBhNzk2OTk2MDk3NGMyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92
YWQvcm5uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9ybm4uaApAQCAtMTEsNiArMTEs
OCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9STk5fVkFEX1JOTl9I
XwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9STk5fVkFEX1JOTl9IXwog
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8
YXJyYXk+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvcm5uX3ZhZC9ybm5fdmFkX3Rvb2wuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFk
L3Jubl92YWRfdG9vbC5jYwppbmRleCA1ZmJhMGJmYWM4NzdjNGRjNmRmYWY4NDI2ODcwNmM2MzBi
YzY3OWJmLi5iNjZkZmQ2ODRkNzQ0M2M4MzY2OWYyMzdjNTYxZDNhY2U5ZjA1ODY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3Jubl92YWRfdG9vbC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9ybm5fdmFkL3Jubl92YWRfdG9vbC5jYwpAQCAtMjUsMjIgKzI1LDIyIEBAIG5hbWVz
cGFjZSBybm5fdmFkIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIG5hbWVzcGFjZSB7CiAKLURFRklORV9z
dHJpbmcoaSwgIiIsICJQYXRoIHRvIHRoZSBpbnB1dCB3YXYgZmlsZSIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcoaSwgIiIsICJQYXRoIHRvIHRoZSBpbnB1dCB3YXYgZmlsZSIpOwogc3RkOjpzdHJp
bmcgSW5wdXRXYXZGaWxlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZM
QUdfaSk7CiB9CiAKLURFRklORV9zdHJpbmcoZiwgIiIsICJQYXRoIHRvIHRoZSBvdXRwdXQgZmVh
dHVyZXMgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoZiwgIiIsICJQYXRoIHRvIHRoZSBv
dXRwdXQgZmVhdHVyZXMgZmlsZSIpOwogc3RkOjpzdHJpbmcgT3V0cHV0RmVhdHVyZXNGaWxlKCkg
ewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfZik7CiB9CiAKLURFRklO
RV9zdHJpbmcobywgIiIsICJQYXRoIHRvIHRoZSBvdXRwdXQgVkFEIHByb2JhYmlsaXRpZXMgZmls
ZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcobywgIiIsICJQYXRoIHRvIHRoZSBvdXRwdXQgVkFE
IHByb2JhYmlsaXRpZXMgZmlsZSIpOwogc3RkOjpzdHJpbmcgT3V0cHV0VmFkUHJvYnNGaWxlKCkg
ewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfbyk7CiB9CiAKLURFRklO
RV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklO
RV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZSIpOwogCiB9ICAvLyBuYW1l
c3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0
dXJlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJlcy5oCmluZGV4
IGJlZGQ3YWIzZDdkMWFkYTU4MjRmMTc2YTdiNTVhOTc5N2IzYjc1YjguLjVjMzNkY2RkMjQ1NjE2
Yjg5MTMxZDBiN2ZjMzZiZTczMWFiYTRmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Ju
bl92YWQvc3BlY3RyYWxfZmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3Nw
ZWN0cmFsX2ZlYXR1cmVzLmgKQEAgLTEzLDYgKzEzLDcgQEAKIAogI2luY2x1ZGUgPGFycmF5Pgog
I2luY2x1ZGUgPGNvbXBsZXg+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDx2ZWN0b3I+
CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJlc19pbnRlcm5hbC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L3Jubl92YWQvc3BlY3RyYWxfZmVhdHVyZXNfaW50ZXJuYWwuY2MKaW5kZXggOWY0ZTIxODUwZjVm
NzZlOWMwZmI2YjcxYWEyOGY0ZjlkMWFkYWUxMi4uNzQyMTFmZTgxNGRhODg3MTk2OWEzYWIwNjAw
ZTVhNzU1MmE4YzgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVjdHJh
bF9mZWF0dXJlc19pbnRlcm5hbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3NwZWN0
cmFsX2ZlYXR1cmVzX2ludGVybmFsLmNjCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KIAogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5f
dmFkL3NwZWN0cmFsX2ZlYXR1cmVzX2ludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFk
L3NwZWN0cmFsX2ZlYXR1cmVzX2ludGVybmFsLmgKaW5kZXggNDViYjM4MjA3OGU2NTcyNzM0MmQ4
NDYzM2FiYjY1OGQwZDg5MTlkOC4uZWRmZDE4Y2M4NTA2M2IyOGM3MmJmY2Q2YTcyYzljZThiNjMz
OTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJl
c19pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc3BlY3RyYWxfZmVhdHVy
ZXNfaW50ZXJuYWwuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfQUdDMl9STk5fVkFEX1NQRUNUUkFMX0ZFQVRVUkVTX0lOVEVSTkFMX0hfCiAjZGVm
aW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX1JOTl9WQURfU1BFQ1RSQUxfRkVBVFVS
RVNfSU5URVJOQUxfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGFycmF5Pgog
I2luY2x1ZGUgPGNvbXBsZXg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3NhdHVyYXRp
b25fcHJvdGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2F0dXJhdGlvbl9wcm90ZWN0b3IuY2MK
aW5kZXggMDg5NTU4M2I4Mzk2MmZmMzYwYWU2MDEzZTNhNmJiZGY2NmFjZDdlZC4uOTRhNTJlYWFj
YWFkODY3NzcwYTQ3NWRiYzFiYjMzYWJmMmE4NjA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvc2F0dXJhdGlvbl9wcm90ZWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2F0dXJhdGlv
bl9wcm90ZWN0b3IuY2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9zYXR1cmF0aW9uX3Byb3RlY3Rvci5oIgogCiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
bnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKQEAgLTU2LDkgKzU3LDE0IEBAIGZsb2F0IFNhdHVyYXRp
b25Qcm90ZWN0b3I6OlBlYWtFbnZlbG9wZXI6OlF1ZXJ5KCkgY29uc3QgewogfQogCiBTYXR1cmF0
aW9uUHJvdGVjdG9yOjpTYXR1cmF0aW9uUHJvdGVjdG9yKEFwbURhdGFEdW1wZXIqIGFwbV9kYXRh
X2R1bXBlcikKKyAgICA6IFNhdHVyYXRpb25Qcm90ZWN0b3IoYXBtX2RhdGFfZHVtcGVyLCBHZXRF
eHRyYVNhdHVyYXRpb25NYXJnaW5PZmZzZXREYigpKSB7Cit9CisKK1NhdHVyYXRpb25Qcm90ZWN0
b3I6OlNhdHVyYXRpb25Qcm90ZWN0b3IoQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBleHRyYV9zYXR1
cmF0aW9uX21hcmdpbl9kYikKICAgICA6IGFwbV9kYXRhX2R1bXBlcl8oYXBtX2RhdGFfZHVtcGVy
KSwKICAgICAgIGxhc3RfbWFyZ2luXyhHZXRJbml0aWFsU2F0dXJhdGlvbk1hcmdpbkRiKCkpLAot
ICAgICAgZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGJfKEdldEV4dHJhU2F0dXJhdGlvbk1hcmdp
bk9mZnNldERiKCkpIHt9CisgICAgICBleHRyYV9zYXR1cmF0aW9uX21hcmdpbl9kYl8oZXh0cmFf
c2F0dXJhdGlvbl9tYXJnaW5fZGIpIHt9CiAKIHZvaWQgU2F0dXJhdGlvblByb3RlY3Rvcjo6VXBk
YXRlTWFyZ2luKAogICAgIGNvbnN0IFZhZFdpdGhMZXZlbDo6TGV2ZWxBbmRQcm9iYWJpbGl0eSYg
dmFkX2RhdGEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9zYXR1cmF0aW9uX3Byb3RlY3Rv
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvc2F0dXJhdGlvbl9wcm90ZWN0b3IuaAppbmRleCAxNzA1ZjZh
YzVmYmJiYjBhMjFmZjFjZWU0M2JjZTk3NWZlYjVkNjgyLi5lNjM3NDY5MDcwZWFiNjAzMmExZjY2
ZTVmYjVkOTA1OWM4NWFjMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9zYXR1cmF0aW9u
X3Byb3RlY3Rvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3NhdHVyYXRpb25fcHJvdGVjdG9yLmgK
QEAgLTI0LDYgKzI0LDkgQEAgY2xhc3MgU2F0dXJhdGlvblByb3RlY3RvciB7CiAgcHVibGljOgog
ICBleHBsaWNpdCBTYXR1cmF0aW9uUHJvdGVjdG9yKEFwbURhdGFEdW1wZXIqIGFwbV9kYXRhX2R1
bXBlcik7CiAKKyAgU2F0dXJhdGlvblByb3RlY3RvcihBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9k
dW1wZXIsCisgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZXh0cmFfc2F0dXJhdGlvbl9tYXJn
aW5fZGIpOworCiAgIC8vIFVwZGF0ZSBhbmQgcmV0dXJuIG1hcmdpbiBlc3RpbWF0ZS4gVGhpcyBt
ZXRob2Qgc2hvdWxkIGJlIGNhbGxlZAogICAvLyB3aGVuZXZlciBhIGZyYW1lIGlzIHJlbGlhYmx5
IGNsYXNzaWZpZWQgYXMgJ3NwZWVjaCcuCiAgIC8vCkBAIC02MCw3ICs2Myw3IEBAIGNsYXNzIFNh
dHVyYXRpb25Qcm90ZWN0b3IgewogCiAgIGZsb2F0IGxhc3RfbWFyZ2luXzsKICAgUGVha0VudmVs
b3BlciBwZWFrX2VudmVsb3Blcl87Ci0gIGZsb2F0IGV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2Ri
XzsKKyAgY29uc3QgZmxvYXQgZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGJfOwogfTsKIAogfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2lnbmFsX2Ns
YXNzaWZpZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9zaWduYWxfY2xhc3NpZmllci5jYwppbmRleCAw
ZWMzNDE0OGI5MzUzYTg4NGUxYzFhMjA4ZjA0M2FkOTVmZDYzNmFmLi44Nzc4YzQ5NDI2NTc5N2E0
ZmY4OGI2MjBlNzgwNGI5NDRhZjUzZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9zaWdu
YWxfY2xhc3NpZmllci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9zaWduYWxfY2xhc3NpZmllci5j
YwpAQCAtMTgsNyArMTgsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL2Rvd25fc2FtcGxlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL25vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
dmFkX3dpdGhfbGV2ZWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZlbC5jYwppbmRl
eCBkZWNmYWNkMGMxODAzNzYwODM1N2NiN2QxNTNkNmRjOWNjZDgxMzEyLi41Mjk3MGRmZTY3N2Mz
ZDVlNzFlZmMyZmQyZTg3YWI0ZWM0YTM1MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92
YWRfd2l0aF9sZXZlbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZlbC5jYwpA
QCAtMTEsMTAgKzExLDEyIEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvdmFkX3dpdGhfbGV2ZWwuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxh
cnJheT4KKyNpbmNsdWRlIDxjbWF0aD4KIAorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAj
aW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvY29tbW9uLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZlbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhf
bGV2ZWwuaAppbmRleCA2N2EwMGNlZDZjMTA2MDk2Njk5MWRiNGI4ZWM4M2Q1OWNkYTBhODI1Li5i
MGFkODY4ZDRiOTdjNGE2YjUzNjBlY2UxMzYzYWEwNTZiZTA1MTZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi92YWRfd2l0aF9sZXZlbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRo
X2xldmVsLmgKQEAgLTExLDcgKzExLDYgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX0FHQzJfVkFEX1dJVEhfTEVWRUxfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX0FHQzJfVkFEX1dJVEhfTEVWRUxfSF8KIAotI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9pbmNsdWRlL3B1c2hfcmVzYW1wbGVy
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZWF0
dXJlc19leHRyYWN0aW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvcm5uX3ZhZC9ybm4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xl
dmVsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWxfdW5pdHRlc3Qu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjlhZWU2MmJhOWFhYjQxMGFmMWJlMmQwMTk1ODdmZGMyY2Y1NjM5YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVsX3VuaXR0ZXN0
LmNjCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuaCIKKworI2luY2x1
ZGUgInJ0Y19iYXNlL2d1bml0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRl
c3QgeworCitURVNUKEF1dG9tYXRpY0dhaW5Db250cm9sbGVyMlZhZFdpdGhMZXZlbEVzdGltYXRv
ciwKKyAgICAgUGVha0xldmVsR3JlYXRlclRoYW5SbXNMZXZlbCkgeworICBjb25zdGV4cHIgc2l6
ZV90IGtTYW1wbGVSYXRlSHogPSA4MDAwOworCisgIC8vIDEwIG1zIGlucHV0IGZyYW1lLCBjb25z
dGFudCBleGNlcHQgZm9yIG9uZSBwZWFrIHZhbHVlLgorICAvLyBIYW5kY3JhZnRlZCBzbyB0aGF0
IHRoZSBhdmVyYWdlIGlzIGxvd2VyIHRoYW4gdGhlIHBlYWsgdmFsdWUuCisgIHN0ZDo6YXJyYXk8
ZmxvYXQsIGtTYW1wbGVSYXRlSHogLyAxMDA+IGZyYW1lOworICBmcmFtZS5maWxsKDEwMDAuZik7
CisgIGZyYW1lWzEwXSA9IDIwMDAuZjsKKyAgZmxvYXQqIGNvbnN0IGNoYW5uZWwwID0gZnJhbWUu
ZGF0YSgpOworICBBdWRpb0ZyYW1lVmlldzxmbG9hdD4gZnJhbWVfdmlldygmY2hhbm5lbDAsIDEs
IGZyYW1lLnNpemUoKSk7CisKKyAgLy8gQ29tcHV0ZSBhdWRpbyBmcmFtZSBsZXZlbHMgKHRoZSBW
QUQgcmVzdWx0IGlzIGlnbm9yZWQpLgorICBWYWRXaXRoTGV2ZWwgdmFkX3dpdGhfbGV2ZWw7Cisg
IGF1dG8gbGV2ZWxzX2FuZF92YWRfcHJvYiA9IHZhZF93aXRoX2xldmVsLkFuYWx5emVGcmFtZShm
cmFtZV92aWV3KTsKKworICAvLyBDb21wYXJlIHBlYWsgYW5kIFJNUyBsZXZlbHMuCisgIEVYUEVD
VF9MVChsZXZlbHNfYW5kX3ZhZF9wcm9iLnNwZWVjaF9ybXNfZGJmcywKKyAgICAgICAgICAgIGxl
dmVsc19hbmRfdmFkX3Byb2Iuc3BlZWNoX3BlYWtfZGJmcyk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVk
aW9fYnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5jYwppbmRleCBmMTYzZjVhMDdk
ZWQyODkyMzNmZThmYWE4Y2EyOWRkYTA0MWNjNmE1Li4wYzM4YTRmZTgyYjg1NGRlOTA2ZjA2ZTY3
NWZjNjk0ODQyYzliNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuY2MKQEAgLTEwLDExICsxMCwxMyBAQAogCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5oIgogCisjaW5jbHVk
ZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKwogI2luY2x1ZGUgImNvbW1vbl9hdWRp
by9jaGFubmVsX2J1ZmZlci5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlv
X3V0aWwuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vcmVzYW1wbGVyL3B1c2hfc2luY19yZXNh
bXBsZXIuaCIKLSNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVk
ZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9z
cGxpdHRpbmdfZmlsdGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2F1ZGlvX2J1ZmZlci5oCmluZGV4IGFkZTNlZWMxM2RiMmExNzM3N2Q0Y2ViZjA3NGJh
NzcyY2NmYWM1NWEuLjQ2OTY0NmU4ZGI0YjY4ZDlmZDk3NDgyODlmNDVhM2YwZGRkMzY2ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9f
YnVmZmVyLmgKQEAgLTExLDE4ICsxMSwyMSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NF
U1NJTkdfQVVESU9fQlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19B
VURJT19CVUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkv
YXVkaW8vYXVkaW9fZnJhbWUuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vY2hhbm5lbF9idWZm
ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19w
cm9jZXNzaW5nLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3NwbGl0dGlu
Z19maWx0ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ndGVzdF9wcm9kX3V0aWwuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIFB1c2hTaW5jUmVzYW1wbGVyOwogY2xhc3MgSUZDaGFu
bmVsQnVmZmVyOworY2xhc3MgUHVzaFNpbmNSZXNhbXBsZXI7CitjbGFzcyBTcGxpdHRpbmdGaWx0
ZXI7CiAKIGVudW0gQmFuZCB7IGtCYW5kMFRvOGtIeiA9IDAsIGtCYW5kOFRvMTZrSHogPSAxLCBr
QmFuZDE2VG8yNGtIeiA9IDIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nl
c3NpbmdfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGwuY2MKaW5kZXgg
YjkxNTNmYTA4YjkyMDQwYTY2Yjg4YWIyYmZhYWIyMDljOTVlY2I3Mi4uMjkzN2MwNjgwYmY1YWM2
OTliMmMyOGZmOTY4NDE5Njg4MzgxZjFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3By
b2Nlc3NpbmdfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ19pbXBsLmNj
CkBAIC0xMCwxNSArMTAsMTYgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hdWRpb19wcm9jZXNzaW5nX2ltcGwuaCIKIAotI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRl
IDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxzdHJpbmc+CisjaW5j
bHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUg
ImNvbW1vbl9hdWRpby9hdWRpb19jb252ZXJ0ZXIuaCIKLSNpbmNsdWRlICJjb21tb25fYXVkaW8v
Y2hhbm5lbF9idWZmZXIuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191
dGlsLmgiCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUv
c2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMvYWVjX2NvcmUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjL2FnY19tYW5hZ2VyX2RpcmVjdC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2dhaW5fYXBwbGllci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hdWRpb19idWZmZXIuaCIKQEAgLTI4LDYgKzI5LDcgQEAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2Zvcl9leHBlcmltZW50YWxfYWdjLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9pbXBsLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbGxlcjIuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19mcmFtZV92
aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xldmVsX2VzdGltYXRv
cl9pbXBsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBt
X2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvd19j
dXRfZmlsdGVyLmgiCkBAIC0zNywxMCArMzksOSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy92b2ljZV9kZXRlY3Rpb25faW1wbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0
b21pY29wcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fZmlsZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Jl
ZmNvdW50ZWRvYmplY3QuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2
ZW50LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgpAQCAt
MTE1LDI5ICsxMTYsNiBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhBbGxvd2VkVmFsdWVzT2ZT
YW1wbGVzUGVyRnJhbWUgPSA0ODA7CiAvLyBUT0RPKHBlYWgpOiBEZWNyZWFzZSB0aGlzIG9uY2Ug
d2UgcHJvcGVybHkgaGFuZGxlIGh1Z2VseSB1bmJhbGFuY2VkCiAvLyByZXZlcnNlIGFuZCBmb3J3
YXJkIGNhbGwgbnVtYmVycy4KIHN0YXRpYyBjb25zdCBzaXplX3Qga01heE51bUZyYW1lc1RvQnVm
ZmVyID0gMTAwOwotCi1jbGFzcyBIaWdoUGFzc0ZpbHRlckltcGwgOiBwdWJsaWMgSGlnaFBhc3NG
aWx0ZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgSGlnaFBhc3NGaWx0ZXJJbXBsKEF1ZGlvUHJv
Y2Vzc2luZ0ltcGwqIGFwbSkgOiBhcG1fKGFwbSkge30KLSAgfkhpZ2hQYXNzRmlsdGVySW1wbCgp
IG92ZXJyaWRlID0gZGVmYXVsdDsKLQotICAvLyBIaWdoUGFzc0ZpbHRlciBpbXBsZW1lbnRhdGlv
bi4KLSAgaW50IEVuYWJsZShib29sIGVuYWJsZSkgb3ZlcnJpZGUgewotICAgIGFwbV8tPk11dGF0
ZUNvbmZpZyhbZW5hYmxlXShBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZyogY29uZmlnKSB7Ci0gICAg
ICBjb25maWctPmhpZ2hfcGFzc19maWx0ZXIuZW5hYmxlZCA9IGVuYWJsZTsKLSAgICB9KTsKLQot
ICAgIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtOb0Vycm9yOwotICB9Ci0KLSAgYm9vbCBpc19l
bmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIHJldHVybiBhcG1fLT5HZXRDb25maWcoKS5o
aWdoX3Bhc3NfZmlsdGVyLmVuYWJsZWQ7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEF1ZGlvUHJvY2Vz
c2luZ0ltcGwqIGFwbV87Ci0gIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoSGln
aFBhc3NGaWx0ZXJJbXBsKTsKLX07CiB9ICAvLyBuYW1lc3BhY2UKIAogLy8gVGhyb3VnaG91dCB3
ZWJydGMsIGl0J3MgYXNzdW1lZCB0aGF0IHN1Y2Nlc3MgaXMgcmVwcmVzZW50ZWQgYnkgemVyby4K
QEAgLTI0OSw4ICsyMjcsNiBAQCBib29sIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkFwbVN1Ym1vZHVs
ZVN0YXRlczo6TG93Q3V0RmlsdGVyaW5nUmVxdWlyZWQoKSBjb25zdCB7CiBzdHJ1Y3QgQXVkaW9Q
cm9jZXNzaW5nSW1wbDo6QXBtUHVibGljU3VibW9kdWxlcyB7CiAgIEFwbVB1YmxpY1N1Ym1vZHVs
ZXMoKSB7fQogICAvLyBBY2Nlc3NlZCBleHRlcm5hbGx5IG9mIEFQTSB3aXRob3V0IGFueSBsb2Nr
IGFjcXVpcmVkLgotICBzdGQ6OnVuaXF1ZV9wdHI8RWNob0NhbmNlbGxhdGlvbkltcGw+IGVjaG9f
Y2FuY2VsbGF0aW9uOwotICBzdGQ6OnVuaXF1ZV9wdHI8RWNob0NvbnRyb2xNb2JpbGVJbXBsPiBl
Y2hvX2NvbnRyb2xfbW9iaWxlOwogICBzdGQ6OnVuaXF1ZV9wdHI8R2FpbkNvbnRyb2xJbXBsPiBn
YWluX2NvbnRyb2w7CiAgIHN0ZDo6dW5pcXVlX3B0cjxMZXZlbEVzdGltYXRvckltcGw+IGxldmVs
X2VzdGltYXRvcjsKICAgc3RkOjp1bmlxdWVfcHRyPE5vaXNlU3VwcHJlc3Npb25JbXBsPiBub2lz
ZV9zdXBwcmVzc2lvbjsKQEAgLTI3NiwxMSArMjUyLDE0IEBAIHN0cnVjdCBBdWRpb1Byb2Nlc3Np
bmdJbXBsOjpBcG1Qcml2YXRlU3VibW9kdWxlcyB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxHYWluQ29u
dHJvbGxlcjI+IGdhaW5fY29udHJvbGxlcjI7CiAgIHN0ZDo6dW5pcXVlX3B0cjxMb3dDdXRGaWx0
ZXI+IGxvd19jdXRfZmlsdGVyOwogICBydGM6OnNjb3BlZF9yZWZwdHI8RWNob0RldGVjdG9yPiBl
Y2hvX2RldGVjdG9yOworICBzdGQ6OnVuaXF1ZV9wdHI8RWNob0NhbmNlbGxhdGlvbkltcGw+IGVj
aG9fY2FuY2VsbGF0aW9uOwogICBzdGQ6OnVuaXF1ZV9wdHI8RWNob0NvbnRyb2w+IGVjaG9fY29u
dHJvbGxlcjsKKyAgc3RkOjp1bmlxdWVfcHRyPEVjaG9Db250cm9sTW9iaWxlSW1wbD4gZWNob19j
b250cm9sX21vYmlsZTsKICAgc3RkOjp1bmlxdWVfcHRyPEN1c3RvbVByb2Nlc3Npbmc+IGNhcHR1
cmVfcG9zdF9wcm9jZXNzb3I7CiAgIHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21Qcm9jZXNzaW5nPiBy
ZW5kZXJfcHJlX3Byb2Nlc3NvcjsKICAgc3RkOjp1bmlxdWVfcHRyPEdhaW5BcHBsaWVyPiBwcmVf
YW1wbGlmaWVyOwogICBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tQXVkaW9BbmFseXplcj4gY2FwdHVy
ZV9hbmFseXplcjsKKyAgc3RkOjp1bmlxdWVfcHRyPExldmVsRXN0aW1hdG9ySW1wbD4gb3V0cHV0
X2xldmVsX2VzdGltYXRvcjsKIH07CiAKIEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXI6OkF1ZGlvUHJv
Y2Vzc2luZ0J1aWxkZXIoKSA9IGRlZmF1bHQ7CkBAIC0zNTIsNyArMzMxLDYgQEAgQXVkaW9Qcm9j
ZXNzaW5nSW1wbDo6QXVkaW9Qcm9jZXNzaW5nSW1wbCgKICAgICAgIHJlbmRlcl9ydW50aW1lX3Nl
dHRpbmdzXyhrUnVudGltZVNldHRpbmdRdWV1ZVNpemUpLAogICAgICAgY2FwdHVyZV9ydW50aW1l
X3NldHRpbmdzX2VucXVldWVyXygmY2FwdHVyZV9ydW50aW1lX3NldHRpbmdzXyksCiAgICAgICBy
ZW5kZXJfcnVudGltZV9zZXR0aW5nc19lbnF1ZXVlcl8oJnJlbmRlcl9ydW50aW1lX3NldHRpbmdz
XyksCi0gICAgICBoaWdoX3Bhc3NfZmlsdGVyX2ltcGxfKG5ldyBIaWdoUGFzc0ZpbHRlckltcGwo
dGhpcykpLAogICAgICAgZWNob19jb250cm9sX2ZhY3RvcnlfKHN0ZDo6bW92ZShlY2hvX2NvbnRy
b2xfZmFjdG9yeSkpLAogICAgICAgc3VibW9kdWxlX3N0YXRlc18oISFjYXB0dXJlX3Bvc3RfcHJv
Y2Vzc29yLAogICAgICAgICAgICAgICAgICAgICAgICAgISFyZW5kZXJfcHJlX3Byb2Nlc3NvciwK
QEAgLTM5MCwxMCArMzY4LDYgQEAgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6QXVkaW9Qcm9jZXNzaW5n
SW1wbCgKICAgICBjYXB0dXJlX25vbmxvY2tlZF8uZWNob19jb250cm9sbGVyX2VuYWJsZWQgPQog
ICAgICAgICBzdGF0aWNfY2FzdDxib29sPihlY2hvX2NvbnRyb2xfZmFjdG9yeV8pOwogCi0gICAg
cHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi5yZXNldCgKLSAgICAgICAgbmV3
IEVjaG9DYW5jZWxsYXRpb25JbXBsKCZjcml0X3JlbmRlcl8sICZjcml0X2NhcHR1cmVfKSk7Ci0g
ICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLnJlc2V0KAotICAgICAg
ICBuZXcgRWNob0NvbnRyb2xNb2JpbGVJbXBsKCZjcml0X3JlbmRlcl8sICZjcml0X2NhcHR1cmVf
KSk7CiAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5nYWluX2NvbnRyb2wucmVzZXQoCiAgICAgICAg
IG5ldyBHYWluQ29udHJvbEltcGwoJmNyaXRfcmVuZGVyXywgJmNyaXRfY2FwdHVyZV8pKTsKICAg
ICBwdWJsaWNfc3VibW9kdWxlc18tPmxldmVsX2VzdGltYXRvci5yZXNldCgKQEAgLTQxMiw2ICsz
ODYsOCBAQCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpBdWRpb1Byb2Nlc3NpbmdJbXBsKAogICAgICAg
ICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8UmVzaWR1YWxFY2hvRGV0ZWN0b3I+KCk7CiAg
ICAgfQogCisgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24ucmVzZXQo
bmV3IEVjaG9DYW5jZWxsYXRpb25JbXBsKCkpOworICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVj
aG9fY29udHJvbF9tb2JpbGUucmVzZXQobmV3IEVjaG9Db250cm9sTW9iaWxlSW1wbCgpKTsKICAg
ICAvLyBUT0RPKGFsZXNzaW9iKTogTW92ZSB0aGUgaW5qZWN0ZWQgZ2FpbiBjb250cm9sbGVyIG9u
Y2UgaW5qZWN0aW9uIGlzCiAgICAgLy8gaW1wbGVtZW50ZWQuCiAgICAgcHJpdmF0ZV9zdWJtb2R1
bGVzXy0+Z2Fpbl9jb250cm9sbGVyMi5yZXNldChuZXcgR2FpbkNvbnRyb2xsZXIyKCkpOwpAQCAt
NTMwLDE2ICs1MDYsMTYgQEAgaW50IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkluaXRpYWxpemVMb2Nr
ZWQoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0c18uYXBpX2Zvcm1hdC5vdXRwdXRf
c3RyZWFtKCkubnVtX2NoYW5uZWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0c18u
YXBpX2Zvcm1hdC5vdXRwdXRfc3RyZWFtKCkubnVtX2ZyYW1lcygpKSk7CiAKLSAgcHVibGljX3N1
Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+SW5pdGlhbGl6ZSgKKyAgcHJpdmF0ZV9zdWJt
b2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPkluaXRpYWxpemUoCiAgICAgICBwcm9jX3NhbXBs
ZV9yYXRlX2h6KCksIG51bV9yZXZlcnNlX2NoYW5uZWxzKCksIG51bV9vdXRwdXRfY2hhbm5lbHMo
KSwKICAgICAgIG51bV9wcm9jX2NoYW5uZWxzKCkpOwogICBBbGxvY2F0ZVJlbmRlclF1ZXVlKCk7
CiAKLSAgaW50IHN1Y2Nlc3MgPSBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9u
LT5lbmFibGVfbWV0cmljcyh0cnVlKTsKKyAgaW50IHN1Y2Nlc3MgPSBwcml2YXRlX3N1Ym1vZHVs
ZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+ZW5hYmxlX21ldHJpY3ModHJ1ZSk7CiAgIFJUQ19EQ0hF
Q0tfRVEoMCwgc3VjY2Vzcyk7Ci0gIHN1Y2Nlc3MgPSBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9f
Y2FuY2VsbGF0aW9uLT5lbmFibGVfZGVsYXlfbG9nZ2luZyh0cnVlKTsKKyAgc3VjY2VzcyA9IHBy
aXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5lbmFibGVfZGVsYXlfbG9nZ2lu
Zyh0cnVlKTsKICAgUlRDX0RDSEVDS19FUSgwLCBzdWNjZXNzKTsKLSAgcHVibGljX3N1Ym1vZHVs
ZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5Jbml0aWFsaXplKAorICBwcml2YXRlX3N1Ym1vZHVs
ZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5Jbml0aWFsaXplKAogICAgICAgcHJvY19zcGxpdF9z
YW1wbGVfcmF0ZV9oeigpLCBudW1fcmV2ZXJzZV9jaGFubmVscygpLAogICAgICAgbnVtX291dHB1
dF9jaGFubmVscygpKTsKIApAQCAtNjYyLDE4ICs2MzgsMTggQEAgaW50IEF1ZGlvUHJvY2Vzc2lu
Z0ltcGw6OkluaXRpYWxpemVMb2NrZWQoY29uc3QgUHJvY2Vzc2luZ0NvbmZpZyYgY29uZmlnKSB7
CiB9CiAKIHZvaWQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6QXBwbHlDb25maWcoY29uc3QgQXVkaW9Q
cm9jZXNzaW5nOjpDb25maWcmIGNvbmZpZykgewotICBjb25maWdfID0gY29uZmlnOwotCiAgIC8v
IFJ1biBpbiBhIHNpbmdsZS10aHJlYWRlZCBtYW5uZXIgd2hlbiBhcHBseWluZyB0aGUgc2V0dGlu
Z3MuCiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX3JlbmRlcigmY3JpdF9yZW5kZXJfKTsKICAgcnRjOjpD
cml0U2NvcGUgY3NfY2FwdHVyZSgmY3JpdF9jYXB0dXJlXyk7CiAKLSAgcHVibGljX3N1Ym1vZHVs
ZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+RW5hYmxlKAorICBjb25maWdfID0gY29uZmlnOworCisg
IHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5FbmFibGUoCiAgICAgICBj
b25maWdfLmVjaG9fY2FuY2VsbGVyLmVuYWJsZWQgJiYgIWNvbmZpZ18uZWNob19jYW5jZWxsZXIu
bW9iaWxlX21vZGUpOwotICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUt
PkVuYWJsZSgKKyAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+RW5h
YmxlKAogICAgICAgY29uZmlnXy5lY2hvX2NhbmNlbGxlci5lbmFibGVkICYmIGNvbmZpZ18uZWNo
b19jYW5jZWxsZXIubW9iaWxlX21vZGUpOwogCi0gIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19j
YW5jZWxsYXRpb24tPnNldF9zdXBwcmVzc2lvbl9sZXZlbCgKKyAgcHJpdmF0ZV9zdWJtb2R1bGVz
Xy0+ZWNob19jYW5jZWxsYXRpb24tPnNldF9zdXBwcmVzc2lvbl9sZXZlbCgKICAgICAgIGNvbmZp
Zy5lY2hvX2NhbmNlbGxlci5sZWdhY3lfbW9kZXJhdGVfc3VwcHJlc3Npb25fbGV2ZWwKICAgICAg
ICAgICA/IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpTdXBwcmVzc2lvbkxldmVsOjprTW9kZXJhdGVT
dXBwcmVzc2lvbgogICAgICAgICAgIDogRWNob0NhbmNlbGxhdGlvbkltcGw6OlN1cHByZXNzaW9u
TGV2ZWw6OmtIaWdoU3VwcHJlc3Npb24pOwpAQCAtNjk4LDYgKzY3NCwxMyBAQCB2b2lkIEF1ZGlv
UHJvY2Vzc2luZ0ltcGw6OkFwcGx5Q29uZmlnKGNvbnN0IEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmln
JiBjb25maWcpIHsKICAgICAgICAgICAgICAgICAgICA8PCBjb25maWdfLmdhaW5fY29udHJvbGxl
cjIuZW5hYmxlZDsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUHJlLWFtcGxpZmllciBhY3RpdmF0
ZWQ6ICIKICAgICAgICAgICAgICAgICAgICA8PCBjb25maWdfLnByZV9hbXBsaWZpZXIuZW5hYmxl
ZDsKKworICBpZiAoY29uZmlnXy5sZXZlbF9lc3RpbWF0aW9uLmVuYWJsZWQgJiYKKyAgICAgICFw
cml2YXRlX3N1Ym1vZHVsZXNfLT5vdXRwdXRfbGV2ZWxfZXN0aW1hdG9yKSB7CisgICAgcHJpdmF0
ZV9zdWJtb2R1bGVzXy0+b3V0cHV0X2xldmVsX2VzdGltYXRvci5yZXNldCgKKyAgICAgICAgbmV3
IExldmVsRXN0aW1hdG9ySW1wbCgmY3JpdF9jYXB0dXJlXykpOworICAgIHByaXZhdGVfc3VibW9k
dWxlc18tPm91dHB1dF9sZXZlbF9lc3RpbWF0b3ItPkVuYWJsZSh0cnVlKTsKKyAgfQogfQogCiB2
b2lkIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OlNldEV4dHJhT3B0aW9ucyhjb25zdCB3ZWJydGM6OkNv
bmZpZyYgY29uZmlnKSB7CkBAIC03MDUsNyArNjg4LDcgQEAgdm9pZCBBdWRpb1Byb2Nlc3NpbmdJ
bXBsOjpTZXRFeHRyYU9wdGlvbnMoY29uc3Qgd2VicnRjOjpDb25maWcmIGNvbmZpZykgewogICBy
dGM6OkNyaXRTY29wZSBjc19yZW5kZXIoJmNyaXRfcmVuZGVyXyk7CiAgIHJ0Yzo6Q3JpdFNjb3Bl
IGNzX2NhcHR1cmUoJmNyaXRfY2FwdHVyZV8pOwogCi0gIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNo
b19jYW5jZWxsYXRpb24tPlNldEV4dHJhT3B0aW9ucyhjb25maWcpOworICBwcml2YXRlX3N1Ym1v
ZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+U2V0RXh0cmFPcHRpb25zKGNvbmZpZyk7CiAKICAg
aWYgKGNhcHR1cmVfLnRyYW5zaWVudF9zdXBwcmVzc29yX2VuYWJsZWQgIT0KICAgICAgIGNvbmZp
Zy5HZXQ8RXhwZXJpbWVudGFsTnM+KCkuZW5hYmxlZCkgewpAQCAtMTA4MiwxMiArMTA2NSwxMiBA
QCB2b2lkIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkFsbG9jYXRlUmVuZGVyUXVldWUoKSB7CiB2b2lk
IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkVtcHR5UXVldWVkUmVuZGVyQXVkaW8oKSB7CiAgIHJ0Yzo6
Q3JpdFNjb3BlIGNzX2NhcHR1cmUoJmNyaXRfY2FwdHVyZV8pOwogICB3aGlsZSAoYWVjX3JlbmRl
cl9zaWduYWxfcXVldWVfLT5SZW1vdmUoJmFlY19jYXB0dXJlX3F1ZXVlX2J1ZmZlcl8pKSB7Ci0g
ICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+UHJvY2Vzc1JlbmRlckF1
ZGlvKAorICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5Qcm9jZXNz
UmVuZGVyQXVkaW8oCiAgICAgICAgIGFlY19jYXB0dXJlX3F1ZXVlX2J1ZmZlcl8pOwogICB9CiAK
ICAgd2hpbGUgKGFlY21fcmVuZGVyX3NpZ25hbF9xdWV1ZV8tPlJlbW92ZSgmYWVjbV9jYXB0dXJl
X3F1ZXVlX2J1ZmZlcl8pKSB7Ci0gICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xf
bW9iaWxlLT5Qcm9jZXNzUmVuZGVyQXVkaW8oCisgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNo
b19jb250cm9sX21vYmlsZS0+UHJvY2Vzc1JlbmRlckF1ZGlvKAogICAgICAgICBhZWNtX2NhcHR1
cmVfcXVldWVfYnVmZmVyXyk7CiAgIH0KIApAQCAtMTEwOSw5ICsxMDkyLDYgQEAgaW50IEF1ZGlv
UHJvY2Vzc2luZ0ltcGw6OlByb2Nlc3NTdHJlYW0oQXVkaW9GcmFtZSogZnJhbWUpIHsKICAgICAv
LyBBY3F1aXJlIHRoZSBjYXB0dXJlIGxvY2sgaW4gb3JkZXIgdG8gc2FmZWx5IGNhbGwgdGhlIGZ1
bmN0aW9uCiAgICAgLy8gdGhhdCByZXRyaWV2ZXMgdGhlIHJlbmRlciBzaWRlIGRhdGEuIFRoaXMg
ZnVuY3Rpb24gYWNjZXNzZXMgQVBNCiAgICAgLy8gZ2V0dGVycyB0aGF0IG5lZWQgdGhlIGNhcHR1
cmUgbG9jayBoZWxkIHdoZW4gYmVpbmcgY2FsbGVkLgotICAgIC8vIFRoZSBsb2NrIG5lZWRzIHRv
IGJlIHJlbGVhc2VkIGFzCi0gICAgLy8gcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xf
bW9iaWxlLT5pc19lbmFibGVkKCkgYWNxdWlyZXMgdGhpcyBsb2NrCi0gICAgLy8gYXMgd2VsbC4K
ICAgICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKCZjcml0X2NhcHR1cmVfKTsKICAgICBFbXB0
eVF1ZXVlZFJlbmRlckF1ZGlvKCk7CiAgIH0KQEAgLTExODAsOCArMTE2MCw4IEBAIGludCBBdWRp
b1Byb2Nlc3NpbmdJbXBsOjpQcm9jZXNzQ2FwdHVyZVN0cmVhbUxvY2tlZCgpIHsKICAgLy8gRW5z
dXJlIHRoYXQgbm90IGJvdGggdGhlIEFFQyBhbmQgQUVDTSBhcmUgYWN0aXZlIGF0IHRoZSBzYW1l
IHRpbWUuCiAgIC8vIFRPRE8ocGVhaCk6IFNpbXBsaWZ5IG9uY2UgdGhlIHB1YmxpYyBBUEkgRW5h
YmxlIGZ1bmN0aW9ucyBmb3IgdGhlc2UKICAgLy8gYXJlIG1vdmVkIHRvIEFQTS4KLSAgUlRDX0RD
SEVDSyghKHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2VuYWJsZWQo
KSAmJgotICAgICAgICAgICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9i
aWxlLT5pc19lbmFibGVkKCkpKTsKKyAgUlRDX0RDSEVDSyghKHByaXZhdGVfc3VibW9kdWxlc18t
PmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCkgJiYKKyAgICAgICAgICAgICAgIHByaXZh
dGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJsZWQoKSkpOwogCiAg
IE1heWJlVXBkYXRlSGlzdG9ncmFtcygpOwogCkBAIC0xMjY1LDcgKzEyNDUsNyBAQCBpbnQgQXVk
aW9Qcm9jZXNzaW5nSW1wbDo6UHJvY2Vzc0NhcHR1cmVTdHJlYW1Mb2NrZWQoKSB7CiAKICAgLy8g
RW5zdXJlIHRoYXQgdGhlIHN0cmVhbSBkZWxheSB3YXMgc2V0IGJlZm9yZSB0aGUgY2FsbCB0byB0
aGUKICAgLy8gQUVDIFByb2Nlc3NDYXB0dXJlQXVkaW8gZnVuY3Rpb24uCi0gIGlmIChwdWJsaWNf
c3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCkgJiYKKyAgaWYgKHBy
aXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCkgJiYKICAg
ICAgICFwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xsZXIgJiYgIXdhc19zdHJlYW1f
ZGVsYXlfc2V0KCkpIHsKICAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprU3RyZWFtUGFyYW1l
dGVyTm90U2V0RXJyb3I7CiAgIH0KQEAgLTEyODEsMTEgKzEyNjEsMTEgQEAgaW50IEF1ZGlvUHJv
Y2Vzc2luZ0ltcGw6OlByb2Nlc3NDYXB0dXJlU3RyZWFtTG9ja2VkKCkgewogICAgIHByaXZhdGVf
c3VibW9kdWxlc18tPmVjaG9fY29udHJvbGxlci0+UHJvY2Vzc0NhcHR1cmUoCiAgICAgICAgIGNh
cHR1cmVfYnVmZmVyLCBjYXB0dXJlXy5lY2hvX3BhdGhfZ2Fpbl9jaGFuZ2UpOwogICB9IGVsc2Ug
ewotICAgIFJFVFVSTl9PTl9FUlIocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlv
bi0+UHJvY2Vzc0NhcHR1cmVBdWRpbygKKyAgICBSRVRVUk5fT05fRVJSKHByaXZhdGVfc3VibW9k
dWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5Qcm9jZXNzQ2FwdHVyZUF1ZGlvKAogICAgICAgICBj
YXB0dXJlX2J1ZmZlciwgc3RyZWFtX2RlbGF5X21zKCkpKTsKICAgfQogCi0gIGlmIChwdWJsaWNf
c3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJsZWQoKSAmJgorICBpZiAo
cHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+aXNfZW5hYmxlZCgpICYm
CiAgICAgICBwdWJsaWNfc3VibW9kdWxlc18tPm5vaXNlX3N1cHByZXNzaW9uLT5pc19lbmFibGVk
KCkpIHsKICAgICBjYXB0dXJlX2J1ZmZlci0+Q29weUxvd1Bhc3NUb1JlZmVyZW5jZSgpOwogICB9
CkBAIC0xMjkzLDE0ICsxMjczLDE0IEBAIGludCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpQcm9jZXNz
Q2FwdHVyZVN0cmVhbUxvY2tlZCgpIHsKIAogICAvLyBFbnN1cmUgdGhhdCB0aGUgc3RyZWFtIGRl
bGF5IHdhcyBzZXQgYmVmb3JlIHRoZSBjYWxsIHRvIHRoZQogICAvLyBBRUNNIFByb2Nlc3NDYXB0
dXJlQXVkaW8gZnVuY3Rpb24uCi0gIGlmIChwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY29udHJv
bF9tb2JpbGUtPmlzX2VuYWJsZWQoKSAmJgorICBpZiAocHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNo
b19jb250cm9sX21vYmlsZS0+aXNfZW5hYmxlZCgpICYmCiAgICAgICAhd2FzX3N0cmVhbV9kZWxh
eV9zZXQoKSkgewogICAgIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtTdHJlYW1QYXJhbWV0ZXJO
b3RTZXRFcnJvcjsKICAgfQogCiAgIGlmICghKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29u
dHJvbGxlciB8fAotICAgICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9u
LT5pc19lbmFibGVkKCkpKSB7Ci0gICAgUkVUVVJOX09OX0VSUihwdWJsaWNfc3VibW9kdWxlc18t
PmVjaG9fY29udHJvbF9tb2JpbGUtPlByb2Nlc3NDYXB0dXJlQXVkaW8oCisgICAgICAgIHByaXZh
dGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCkpKSB7CisgICAg
UkVUVVJOX09OX0VSUihwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5Q
cm9jZXNzQ2FwdHVyZUF1ZGlvKAogICAgICAgICBjYXB0dXJlX2J1ZmZlciwgc3RyZWFtX2RlbGF5
X21zKCkpKTsKICAgfQogCkBAIC0xMzE1LDcgKzEyOTUsNyBAQCBpbnQgQXVkaW9Qcm9jZXNzaW5n
SW1wbDo6UHJvY2Vzc0NhcHR1cmVTdHJlYW1Mb2NrZWQoKSB7CiAgIH0KICAgUkVUVVJOX09OX0VS
UihwdWJsaWNfc3VibW9kdWxlc18tPmdhaW5fY29udHJvbC0+UHJvY2Vzc0NhcHR1cmVBdWRpbygK
ICAgICAgIGNhcHR1cmVfYnVmZmVyLAotICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2Nh
bmNlbGxhdGlvbi0+c3RyZWFtX2hhc19lY2hvKCkpKTsKKyAgICAgIHByaXZhdGVfc3VibW9kdWxl
c18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zdHJlYW1faGFzX2VjaG8oKSkpOwogCiAgIGlmIChzdWJt
b2R1bGVfc3RhdGVzXy5DYXB0dXJlTXVsdGlCYW5kUHJvY2Vzc2luZ0FjdGl2ZSgpICYmCiAgICAg
ICBTYW1wbGVSYXRlU3VwcG9ydHNNdWx0aUJhbmQoCkBAIC0xMzY0LDYgKzEzNDQsMTMgQEAgaW50
IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OlByb2Nlc3NDYXB0dXJlU3RyZWFtTG9ja2VkKCkgewogCiAg
IC8vIFRoZSBsZXZlbCBlc3RpbWF0b3Igb3BlcmF0ZXMgb24gdGhlIHJlY29tYmluZWQgZGF0YS4K
ICAgcHVibGljX3N1Ym1vZHVsZXNfLT5sZXZlbF9lc3RpbWF0b3ItPlByb2Nlc3NTdHJlYW0oY2Fw
dHVyZV9idWZmZXIpOworICBpZiAoY29uZmlnXy5sZXZlbF9lc3RpbWF0aW9uLmVuYWJsZWQpIHsK
KyAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5vdXRwdXRfbGV2ZWxfZXN0aW1hdG9yLT5Qcm9jZXNz
U3RyZWFtKGNhcHR1cmVfYnVmZmVyKTsKKyAgICBjYXB0dXJlXy5zdGF0cy5vdXRwdXRfcm1zX2Ri
ZnMgPQorICAgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5vdXRwdXRfbGV2ZWxfZXN0aW1hdG9y
LT5STVMoKTsKKyAgfSBlbHNlIHsKKyAgICBjYXB0dXJlXy5zdGF0cy5vdXRwdXRfcm1zX2RiZnMg
PSBhYnNsOjpudWxsb3B0OworICB9CiAKICAgY2FwdHVyZV9vdXRwdXRfcm1zXy5BbmFseXplKHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IGludDE2X3Q+KAogICAgICAgY2FwdHVyZV9idWZmZXItPmNoYW5u
ZWxzX2NvbnN0KClbMF0sCkBAIC0xNjEzLDExMiArMTYwMCw1MiBAQCB2b2lkIEF1ZGlvUHJvY2Vz
c2luZ0ltcGw6OkRldGFjaFBsYXlvdXRBdWRpb0dlbmVyYXRvcigpIHsKICAgLy8gRGVsZXRlIGF1
ZGlvIGdlbmVyYXRvciwgaWYgb25lIGlzIGF0dGFjaGVkLgogfQogCi1BdWRpb1Byb2Nlc3Npbmc6
OkF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3M6OkF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MoKSB7
Ci0gIHJlc2lkdWFsX2VjaG9fcmV0dXJuX2xvc3MuU2V0KC0xMDAuMGYsIC0xMDAuMGYsIC0xMDAu
MGYsIC0xMDAuMGYpOwotICBlY2hvX3JldHVybl9sb3NzLlNldCgtMTAwLjBmLCAtMTAwLjBmLCAt
MTAwLjBmLCAtMTAwLjBmKTsKLSAgZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudC5TZXQoLTEw
MC4wZiwgLTEwMC4wZiwgLTEwMC4wZiwgLTEwMC4wZik7Ci0gIGFfbmxwLlNldCgtMTAwLjBmLCAt
MTAwLjBmLCAtMTAwLjBmLCAtMTAwLjBmKTsKLX0KLQotQXVkaW9Qcm9jZXNzaW5nOjpBdWRpb1By
b2Nlc3NpbmdTdGF0aXN0aWNzOjpBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzKAotICAgIGNvbnN0
IEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MmIG90aGVyKSA9IGRlZmF1bHQ7Ci0KLUF1ZGlvUHJv
Y2Vzc2luZzo6QXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljczo6fkF1ZGlvUHJvY2Vzc2luZ1N0YXRp
c3RpY3MoKSA9Ci0gICAgZGVmYXVsdDsKLQotLy8gVE9ETyhpdm9jKTogUmVtb3ZlIHRoaXMgd2hl
biBHZXRTdGF0aXN0aWNzKCkgYmVjb21lcyBwdXJlIHZpcnR1YWwuCi1BdWRpb1Byb2Nlc3Npbmc6
OkF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MgQXVkaW9Qcm9jZXNzaW5nOjpHZXRTdGF0aXN0aWNz
KCkKLSAgICBjb25zdCB7Ci0gIHJldHVybiBBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzKCk7Ci19
Ci0KLS8vIFRPRE8oaXZvYyk6IFJlbW92ZSB0aGlzIHdoZW4gR2V0U3RhdGlzdGljcygpIGJlY29t
ZXMgcHVyZSB2aXJ0dWFsLgotQXVkaW9Qcm9jZXNzaW5nU3RhdHMgQXVkaW9Qcm9jZXNzaW5nOjpH
ZXRTdGF0aXN0aWNzKAorQXVkaW9Qcm9jZXNzaW5nU3RhdHMgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6
R2V0U3RhdGlzdGljcygKICAgICBib29sIGhhc19yZW1vdGVfdHJhY2tzKSBjb25zdCB7Ci0gIHJl
dHVybiBBdWRpb1Byb2Nlc3NpbmdTdGF0cygpOwotfQotCi1BdWRpb1Byb2Nlc3Npbmc6OkF1ZGlv
UHJvY2Vzc2luZ1N0YXRpc3RpY3MgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6R2V0U3RhdGlzdGljcygp
Ci0gICAgY29uc3QgewotICBBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzIHN0YXRzOworICBydGM6
OkNyaXRTY29wZSBjc19jYXB0dXJlKCZjcml0X2NhcHR1cmVfKTsKKyAgaWYgKCFoYXNfcmVtb3Rl
X3RyYWNrcykgeworICAgIHJldHVybiBjYXB0dXJlXy5zdGF0czsKKyAgfQorICBBdWRpb1Byb2Nl
c3NpbmdTdGF0cyBzdGF0cyA9IGNhcHR1cmVfLnN0YXRzOwogICBFY2hvQ2FuY2VsbGF0aW9uSW1w
bDo6TWV0cmljcyBtZXRyaWNzOwogICBpZiAocHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250
cm9sbGVyKSB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZSgmY3JpdF9jYXB0dXJlXyk7
CiAgICAgYXV0byBlY19tZXRyaWNzID0gcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9s
bGVyLT5HZXRNZXRyaWNzKCk7Ci0gICAgZmxvYXQgZXJsID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGVj
X21ldHJpY3MuZWNob19yZXR1cm5fbG9zcyk7Ci0gICAgZmxvYXQgZXJsZSA9IHN0YXRpY19jYXN0
PGZsb2F0PihlY19tZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQpOwotICAgIC8v
IEluc3RhbnQgdmFsdWUgd2lsbCBhbHNvIGJlIHVzZWQgZm9yIG1pbiwgbWF4IGFuZCBhdmVyYWdl
LgotICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xvc3MuU2V0KGVybCwgZXJsLCBlcmwsIGVybCk7Ci0g
ICAgc3RhdHMuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudC5TZXQoZXJsZSwgZXJsZSwgZXJs
ZSwgZXJsZSk7Ci0gIH0gZWxzZSBpZiAocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxh
dGlvbi0+R2V0TWV0cmljcygmbWV0cmljcykgPT0KKyAgICBzdGF0cy5lY2hvX3JldHVybl9sb3Nz
ID0gZWNfbWV0cmljcy5lY2hvX3JldHVybl9sb3NzOworICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xv
c3NfZW5oYW5jZW1lbnQgPQorICAgICAgICBlY19tZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3NfZW5o
YW5jZW1lbnQ7CisgICAgc3RhdHMuZGVsYXlfbXMgPSBlY19tZXRyaWNzLmRlbGF5X21zOworICB9
IGVsc2UgaWYgKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5HZXRNZXRy
aWNzKCZtZXRyaWNzKSA9PQogICAgICAgICAgICAgIEVycm9yOjprTm9FcnJvcikgewotICAgIHN0
YXRzLmFfbmxwLlNldChtZXRyaWNzLmFfbmxwKTsKLSAgICBzdGF0cy5kaXZlcmdlbnRfZmlsdGVy
X2ZyYWN0aW9uID0gbWV0cmljcy5kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uOwotICAgIHN0YXRz
LmVjaG9fcmV0dXJuX2xvc3MuU2V0KG1ldHJpY3MuZWNob19yZXR1cm5fbG9zcyk7Ci0gICAgc3Rh
dHMuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudC5TZXQoCi0gICAgICAgIG1ldHJpY3MuZWNo
b19yZXR1cm5fbG9zc19lbmhhbmNlbWVudCk7Ci0gICAgc3RhdHMucmVzaWR1YWxfZWNob19yZXR1
cm5fbG9zcy5TZXQobWV0cmljcy5yZXNpZHVhbF9lY2hvX3JldHVybl9sb3NzKTsKKyAgICBpZiAo
bWV0cmljcy5kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uICE9IC0xLjBmKSB7CisgICAgICBzdGF0
cy5kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uID0KKyAgICAgICAgICBhYnNsOjpvcHRpb25hbDxk
b3VibGU+KG1ldHJpY3MuZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbik7CisgICAgfQorICAgIGlm
IChtZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3MuaW5zdGFudCAhPSAtMTAwKSB7CisgICAgICBzdGF0
cy5lY2hvX3JldHVybl9sb3NzID0KKyAgICAgICAgICBhYnNsOjpvcHRpb25hbDxkb3VibGU+KG1l
dHJpY3MuZWNob19yZXR1cm5fbG9zcy5pbnN0YW50KTsKKyAgICB9CisgICAgaWYgKG1ldHJpY3Mu
ZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudC5pbnN0YW50ICE9IC0xMDApIHsKKyAgICAgIHN0
YXRzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPQorICAgICAgICAgIGFic2w6Om9wdGlv
bmFsPGRvdWJsZT4obWV0cmljcy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50Lmluc3RhbnQp
OworICAgIH0KICAgfQotICB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZSgmY3JpdF9j
YXB0dXJlXyk7CisgIGlmIChjb25maWdfLnJlc2lkdWFsX2VjaG9fZGV0ZWN0b3IuZW5hYmxlZCkg
ewogICAgIFJUQ19EQ0hFQ0socHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19kZXRlY3Rvcik7CiAg
ICAgYXV0byBlZF9tZXRyaWNzID0gcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19kZXRlY3Rvci0+
R2V0TWV0cmljcygpOwogICAgIHN0YXRzLnJlc2lkdWFsX2VjaG9fbGlrZWxpaG9vZCA9IGVkX21l
dHJpY3MuZWNob19saWtlbGlob29kOwogICAgIHN0YXRzLnJlc2lkdWFsX2VjaG9fbGlrZWxpaG9v
ZF9yZWNlbnRfbWF4ID0KICAgICAgICAgZWRfbWV0cmljcy5lY2hvX2xpa2VsaWhvb2RfcmVjZW50
X21heDsKICAgfQotICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5HZXRE
ZWxheU1ldHJpY3MoCi0gICAgICAmc3RhdHMuZGVsYXlfbWVkaWFuLCAmc3RhdHMuZGVsYXlfc3Rh
bmRhcmRfZGV2aWF0aW9uLAotICAgICAgJnN0YXRzLmZyYWN0aW9uX3Bvb3JfZGVsYXlzKTsKLSAg
cmV0dXJuIHN0YXRzOwotfQotCi1BdWRpb1Byb2Nlc3NpbmdTdGF0cyBBdWRpb1Byb2Nlc3NpbmdJ
bXBsOjpHZXRTdGF0aXN0aWNzKAotICAgIGJvb2wgaGFzX3JlbW90ZV90cmFja3MpIGNvbnN0IHsK
LSAgQXVkaW9Qcm9jZXNzaW5nU3RhdHMgc3RhdHM7Ci0gIGlmIChoYXNfcmVtb3RlX3RyYWNrcykg
ewotICAgIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpNZXRyaWNzIG1ldHJpY3M7Ci0gICAgaWYgKHBy
aXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbGxlcikgewotICAgICAgcnRjOjpDcml0U2Nv
cGUgY3NfY2FwdHVyZSgmY3JpdF9jYXB0dXJlXyk7Ci0gICAgICBhdXRvIGVjX21ldHJpY3MgPSBw
cml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xsZXItPkdldE1ldHJpY3MoKTsKLSAgICAg
IHN0YXRzLmVjaG9fcmV0dXJuX2xvc3MgPSBlY19tZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3M7Ci0g
ICAgICBzdGF0cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0KLSAgICAgICAgICBlY19t
ZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQ7Ci0gICAgICBzdGF0cy5kZWxheV9t
cyA9IGVjX21ldHJpY3MuZGVsYXlfbXM7Ci0gICAgfSBlbHNlIGlmIChwdWJsaWNfc3VibW9kdWxl
c18tPmVjaG9fY2FuY2VsbGF0aW9uLT5HZXRNZXRyaWNzKCZtZXRyaWNzKSA9PQotICAgICAgICAg
ICAgICAgRXJyb3I6OmtOb0Vycm9yKSB7Ci0gICAgICBpZiAobWV0cmljcy5kaXZlcmdlbnRfZmls
dGVyX2ZyYWN0aW9uICE9IC0xLjBmKSB7Ci0gICAgICAgIHN0YXRzLmRpdmVyZ2VudF9maWx0ZXJf
ZnJhY3Rpb24gPQotICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPihtZXRyaWNzLmRp
dmVyZ2VudF9maWx0ZXJfZnJhY3Rpb24pOwotICAgICAgfQotICAgICAgaWYgKG1ldHJpY3MuZWNo
b19yZXR1cm5fbG9zcy5pbnN0YW50ICE9IC0xMDApIHsKLSAgICAgICAgc3RhdHMuZWNob19yZXR1
cm5fbG9zcyA9Ci0gICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxkb3VibGU+KG1ldHJpY3MuZWNo
b19yZXR1cm5fbG9zcy5pbnN0YW50KTsKLSAgICAgIH0KLSAgICAgIGlmIChtZXRyaWNzLmVjaG9f
cmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQuaW5zdGFudCAhPSAtMTAwKSB7Ci0gICAgICAgIHN0YXRz
LmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPSBhYnNsOjpvcHRpb25hbDxkb3VibGU+KAot
ICAgICAgICAgICAgbWV0cmljcy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50Lmluc3RhbnQp
OwotICAgICAgfQorICBpbnQgZGVsYXlfbWVkaWFuLCBkZWxheV9zdGQ7CisgIGZsb2F0IGZyYWN0
aW9uX3Bvb3JfZGVsYXlzOworICBpZiAocHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxs
YXRpb24tPkdldERlbGF5TWV0cmljcygKKyAgICAgICAgICAmZGVsYXlfbWVkaWFuLCAmZGVsYXlf
c3RkLCAmZnJhY3Rpb25fcG9vcl9kZWxheXMpID09CisgICAgICBFcnJvcjo6a05vRXJyb3IpIHsK
KyAgICBpZiAoZGVsYXlfbWVkaWFuID49IDApIHsKKyAgICAgIHN0YXRzLmRlbGF5X21lZGlhbl9t
cyA9IGFic2w6Om9wdGlvbmFsPGludDMyX3Q+KGRlbGF5X21lZGlhbik7CiAgICAgfQotICAgIGlm
IChjb25maWdfLnJlc2lkdWFsX2VjaG9fZGV0ZWN0b3IuZW5hYmxlZCkgewotICAgICAgcnRjOjpD
cml0U2NvcGUgY3NfY2FwdHVyZSgmY3JpdF9jYXB0dXJlXyk7Ci0gICAgICBSVENfRENIRUNLKHBy
aXZhdGVfc3VibW9kdWxlc18tPmVjaG9fZGV0ZWN0b3IpOwotICAgICAgYXV0byBlZF9tZXRyaWNz
ID0gcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19kZXRlY3Rvci0+R2V0TWV0cmljcygpOwotICAg
ICAgc3RhdHMucmVzaWR1YWxfZWNob19saWtlbGlob29kID0gZWRfbWV0cmljcy5lY2hvX2xpa2Vs
aWhvb2Q7Ci0gICAgICBzdGF0cy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2RfcmVjZW50X21heCA9
Ci0gICAgICAgICAgZWRfbWV0cmljcy5lY2hvX2xpa2VsaWhvb2RfcmVjZW50X21heDsKLSAgICB9
Ci0gICAgaW50IGRlbGF5X21lZGlhbiwgZGVsYXlfc3RkOwotICAgIGZsb2F0IGZyYWN0aW9uX3Bv
b3JfZGVsYXlzOwotICAgIGlmIChwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9u
LT5HZXREZWxheU1ldHJpY3MoCi0gICAgICAgICAgICAmZGVsYXlfbWVkaWFuLCAmZGVsYXlfc3Rk
LCAmZnJhY3Rpb25fcG9vcl9kZWxheXMpID09Ci0gICAgICAgIEVycm9yOjprTm9FcnJvcikgewot
ICAgICAgaWYgKGRlbGF5X21lZGlhbiA+PSAwKSB7Ci0gICAgICAgIHN0YXRzLmRlbGF5X21lZGlh
bl9tcyA9IGFic2w6Om9wdGlvbmFsPGludDMyX3Q+KGRlbGF5X21lZGlhbik7Ci0gICAgICB9Ci0g
ICAgICBpZiAoZGVsYXlfc3RkID49IDApIHsKLSAgICAgICAgc3RhdHMuZGVsYXlfc3RhbmRhcmRf
ZGV2aWF0aW9uX21zID0gYWJzbDo6b3B0aW9uYWw8aW50MzJfdD4oZGVsYXlfc3RkKTsKLSAgICAg
IH0KKyAgICBpZiAoZGVsYXlfc3RkID49IDApIHsKKyAgICAgIHN0YXRzLmRlbGF5X3N0YW5kYXJk
X2RldmlhdGlvbl9tcyA9IGFic2w6Om9wdGlvbmFsPGludDMyX3Q+KGRlbGF5X3N0ZCk7CiAgICAg
fQogICB9CiAgIHJldHVybiBzdGF0czsKQEAgLTE3MzEsMTAgKzE2NTgsNiBAQCBHYWluQ29udHJv
bCogQXVkaW9Qcm9jZXNzaW5nSW1wbDo6Z2Fpbl9jb250cm9sKCkgY29uc3QgewogICByZXR1cm4g
cHVibGljX3N1Ym1vZHVsZXNfLT5nYWluX2NvbnRyb2wuZ2V0KCk7CiB9CiAKLUhpZ2hQYXNzRmls
dGVyKiBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpoaWdoX3Bhc3NfZmlsdGVyKCkgY29uc3QgewotICBy
ZXR1cm4gaGlnaF9wYXNzX2ZpbHRlcl9pbXBsXy5nZXQoKTsKLX0KLQogTGV2ZWxFc3RpbWF0b3Iq
IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OmxldmVsX2VzdGltYXRvcigpIGNvbnN0IHsKICAgcmV0dXJu
IHB1YmxpY19zdWJtb2R1bGVzXy0+bGV2ZWxfZXN0aW1hdG9yLmdldCgpOwogfQpAQCAtMTc2NCw4
ICsxNjg3LDggQEAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWcgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6
R2V0Q29uZmlnKCkgY29uc3QgewogYm9vbCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpVcGRhdGVBY3Rp
dmVTdWJtb2R1bGVTdGF0ZXMoKSB7CiAgIHJldHVybiBzdWJtb2R1bGVfc3RhdGVzXy5VcGRhdGUo
CiAgICAgICBjb25maWdfLmhpZ2hfcGFzc19maWx0ZXIuZW5hYmxlZCwKLSAgICAgIHB1YmxpY19z
dWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2VuYWJsZWQoKSwKLSAgICAgIHB1Ymxp
Y19zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+aXNfZW5hYmxlZCgpLAorICAgICAg
cHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2VuYWJsZWQoKSwKKyAg
ICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJsZWQo
KSwKICAgICAgIGNvbmZpZ18ucmVzaWR1YWxfZWNob19kZXRlY3Rvci5lbmFibGVkLAogICAgICAg
cHVibGljX3N1Ym1vZHVsZXNfLT5ub2lzZV9zdXBwcmVzc2lvbi0+aXNfZW5hYmxlZCgpLAogICAg
ICAgcHVibGljX3N1Ym1vZHVsZXNfLT5nYWluX2NvbnRyb2wtPmlzX2VuYWJsZWQoKSwKQEAgLTE4
NTIsMTUgKzE3NzUsMTUgQEAgdm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpJbml0aWFsaXplUHJl
UHJvY2Vzc29yKCkgewogdm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpNYXliZVVwZGF0ZUhpc3Rv
Z3JhbXMoKSB7CiAgIHN0YXRpYyBjb25zdCBpbnQga01pbkRpZmZEZWxheU1zID0gNjA7CiAKLSAg
aWYgKHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2VuYWJsZWQoKSkg
eworICBpZiAocHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2VuYWJs
ZWQoKSkgewogICAgIC8vIEFjdGl2YXRlIGRlbGF5X2p1bXBzXyBjb3VudGVycyBpZiB3ZSBrbm93
IGVjaG9fY2FuY2VsbGF0aW9uIGlzIHJ1bm5pbmcuCiAgICAgLy8gSWYgYSBzdHJlYW0gaGFzIGVj
aG8gd2Uga25vdyB0aGF0IHRoZSBlY2hvX2NhbmNlbGxhdGlvbiBpcyBpbiBwcm9jZXNzLgogICAg
IGlmIChjYXB0dXJlXy5zdHJlYW1fZGVsYXlfanVtcHMgPT0gLTEgJiYKLSAgICAgICAgcHVibGlj
X3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+c3RyZWFtX2hhc19lY2hvKCkpIHsKKyAg
ICAgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPnN0cmVhbV9oYXNf
ZWNobygpKSB7CiAgICAgICBjYXB0dXJlXy5zdHJlYW1fZGVsYXlfanVtcHMgPSAwOwogICAgIH0K
ICAgICBpZiAoY2FwdHVyZV8uYWVjX3N5c3RlbV9kZWxheV9qdW1wcyA9PSAtMSAmJgotICAgICAg
ICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zdHJlYW1faGFzX2VjaG8o
KSkgeworICAgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+c3Ry
ZWFtX2hhc19lY2hvKCkpIHsKICAgICAgIGNhcHR1cmVfLmFlY19zeXN0ZW1fZGVsYXlfanVtcHMg
PSAwOwogICAgIH0KIApAQCAtMTg4Myw3ICsxODA2LDcgQEAgdm9pZCBBdWRpb1Byb2Nlc3NpbmdJ
bXBsOjpNYXliZVVwZGF0ZUhpc3RvZ3JhbXMoKSB7CiAgICAgICAgIHJ0Yzo6Q2hlY2tlZERpdkV4
YWN0KGNhcHR1cmVfbm9ubG9ja2VkXy5zcGxpdF9yYXRlLCAxMDAwKTsKICAgICBSVENfRENIRUNL
X0xUKDAsIHNhbXBsZXNfcGVyX21zKTsKICAgICBjb25zdCBpbnQgYWVjX3N5c3RlbV9kZWxheV9t
cyA9Ci0gICAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPkdldFN5
c3RlbURlbGF5SW5TYW1wbGVzKCkgLworICAgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hv
X2NhbmNlbGxhdGlvbi0+R2V0U3lzdGVtRGVsYXlJblNhbXBsZXMoKSAvCiAgICAgICAgIHNhbXBs
ZXNfcGVyX21zOwogICAgIGNvbnN0IGludCBkaWZmX2FlY19zeXN0ZW1fZGVsYXlfbXMgPQogICAg
ICAgICBhZWNfc3lzdGVtX2RlbGF5X21zIC0gY2FwdHVyZV8ubGFzdF9hZWNfc3lzdGVtX2RlbGF5
X21zOwpAQCAtMTkyNyw3ICsxODUwLDcgQEAgdm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpXcml0
ZUFlY0R1bXBDb25maWdNZXNzYWdlKGJvb2wgZm9yY2VkKSB7CiAgICAgcmV0dXJuOwogICB9CiAg
IHN0ZDo6c3RyaW5nIGV4cGVyaW1lbnRzX2Rlc2NyaXB0aW9uID0KLSAgICAgIHB1YmxpY19zdWJt
b2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPkdldEV4cGVyaW1lbnRzRGVzY3JpcHRpb24oKTsK
KyAgICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5HZXRFeHBlcmlt
ZW50c0Rlc2NyaXB0aW9uKCk7CiAgIC8vIFRPRE8ocGVhaCk6IEFkZCBzZW1pY29sb24tc2VwYXJh
dGVkIGNvbmNhdGVuYXRpb25zIG9mIGV4cGVyaW1lbnQKICAgLy8gZGVzY3JpcHRpb25zIGZvciBv
dGhlciBzdWJtb2R1bGVzLgogICBpZiAoY29uc3RhbnRzXy5hZ2NfY2xpcHBlZF9sZXZlbF9taW4g
IT0ga0NsaXBwZWRMZXZlbE1pbikgewpAQCAtMTk0MiwyMiArMTg2NSwyMiBAQCB2b2lkIEF1ZGlv
UHJvY2Vzc2luZ0ltcGw6OldyaXRlQWVjRHVtcENvbmZpZ01lc3NhZ2UoYm9vbCBmb3JjZWQpIHsK
IAogICBJbnRlcm5hbEFQTUNvbmZpZyBhcG1fY29uZmlnOwogCi0gIGFwbV9jb25maWcuYWVjX2Vu
YWJsZWQgPSBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVk
KCk7CisgIGFwbV9jb25maWcuYWVjX2VuYWJsZWQgPSBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hv
X2NhbmNlbGxhdGlvbi0+aXNfZW5hYmxlZCgpOwogICBhcG1fY29uZmlnLmFlY19kZWxheV9hZ25v
c3RpY19lbmFibGVkID0KLSAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRp
b24tPmlzX2RlbGF5X2Fnbm9zdGljX2VuYWJsZWQoKTsKKyAgICAgIHByaXZhdGVfc3VibW9kdWxl
c18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19kZWxheV9hZ25vc3RpY19lbmFibGVkKCk7CiAgIGFw
bV9jb25maWcuYWVjX2RyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkID0KLSAgICAgIHB1YmxpY19z
dWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2RyaWZ0X2NvbXBlbnNhdGlvbl9lbmFi
bGVkKCk7CisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+aXNf
ZHJpZnRfY29tcGVuc2F0aW9uX2VuYWJsZWQoKTsKICAgYXBtX2NvbmZpZy5hZWNfZXh0ZW5kZWRf
ZmlsdGVyX2VuYWJsZWQgPQotICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxh
dGlvbi0+aXNfZXh0ZW5kZWRfZmlsdGVyX2VuYWJsZWQoKTsKKyAgICAgIHByaXZhdGVfc3VibW9k
dWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19leHRlbmRlZF9maWx0ZXJfZW5hYmxlZCgpOwog
ICBhcG1fY29uZmlnLmFlY19zdXBwcmVzc2lvbl9sZXZlbCA9IHN0YXRpY19jYXN0PGludD4oCi0g
ICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zdXBwcmVzc2lvbl9s
ZXZlbCgpKTsKKyAgICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5z
dXBwcmVzc2lvbl9sZXZlbCgpKTsKIAogICBhcG1fY29uZmlnLmFlY21fZW5hYmxlZCA9Ci0gICAg
ICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJsZWQoKTsK
KyAgICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJs
ZWQoKTsKICAgYXBtX2NvbmZpZy5hZWNtX2NvbWZvcnRfbm9pc2VfZW5hYmxlZCA9Ci0gICAgICBw
dWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2NvbWZvcnRfbm9pc2Vf
ZW5hYmxlZCgpOwotICBhcG1fY29uZmlnLmFlY21fcm91dGluZ19tb2RlID0KLSAgICAgIHN0YXRp
Y19jYXN0PGludD4ocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5yb3V0
aW5nX21vZGUoKSk7CisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9i
aWxlLT5pc19jb21mb3J0X25vaXNlX2VuYWJsZWQoKTsKKyAgYXBtX2NvbmZpZy5hZWNtX3JvdXRp
bmdfbW9kZSA9IHN0YXRpY19jYXN0PGludD4oCisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5l
Y2hvX2NvbnRyb2xfbW9iaWxlLT5yb3V0aW5nX21vZGUoKSk7CiAKICAgYXBtX2NvbmZpZy5hZ2Nf
ZW5hYmxlZCA9IHB1YmxpY19zdWJtb2R1bGVzXy0+Z2Fpbl9jb250cm9sLT5pc19lbmFibGVkKCk7
CiAgIGFwbV9jb25maWcuYWdjX21vZGUgPQpAQCAtMjAzMiw3ICsxOTU1LDcgQEAgdm9pZCBBdWRp
b1Byb2Nlc3NpbmdJbXBsOjpSZWNvcmRBdWRpb1Byb2Nlc3NpbmdTdGF0ZSgpIHsKICAgQWVjRHVt
cDo6QXVkaW9Qcm9jZXNzaW5nU3RhdGUgYXVkaW9fcHJvY19zdGF0ZTsKICAgYXVkaW9fcHJvY19z
dGF0ZS5kZWxheSA9IGNhcHR1cmVfbm9ubG9ja2VkXy5zdHJlYW1fZGVsYXlfbXM7CiAgIGF1ZGlv
X3Byb2Nfc3RhdGUuZHJpZnQgPQotICAgICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNl
bGxhdGlvbi0+c3RyZWFtX2RyaWZ0X3NhbXBsZXMoKTsKKyAgICAgIHByaXZhdGVfc3VibW9kdWxl
c18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zdHJlYW1fZHJpZnRfc2FtcGxlcygpOwogICBhdWRpb19w
cm9jX3N0YXRlLmxldmVsID0gZ2Fpbl9jb250cm9sKCktPnN0cmVhbV9hbmFsb2dfbGV2ZWwoKTsK
ICAgYXVkaW9fcHJvY19zdGF0ZS5rZXlwcmVzcyA9IGNhcHR1cmVfLmtleV9wcmVzc2VkOwogICBh
ZWNfZHVtcF8tPkFkZEF1ZGlvUHJvY2Vzc2luZ1N0YXRlKGF1ZGlvX3Byb2Nfc3RhdGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3NpbmdfaW1wbC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1
ZGlvX3Byb2Nlc3NpbmdfaW1wbC5oCmluZGV4IDUwY2I4MmJmMTNhZTE3NTJkZjUxOGU0NDE5N2Fj
MGViOWZiN2E3YjguLjJmOTQ2YzVlMTNkODkyMDRkZjc0NjIxYmViNDJjNDgwNDhkMmI4ZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGwuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYXVkaW9fcHJvY2Vzc2luZ19pbXBsLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1bXAuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0
aWNzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3JlbmRlcl9xdWV1ZV9p
dGVtX3ZlcmlmaWVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Jtc19s
ZXZlbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgpAQCAtMTA5LDcg
KzExMCw2IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc2luZ0ltcGwgOiBwdWJsaWMgQXVkaW9Qcm9jZXNz
aW5nIHsKICAgYm9vbCB3YXNfc3RyZWFtX2RlbGF5X3NldCgpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRfY2FwdHVyZV8pOwogCi0gIEF1ZGlv
UHJvY2Vzc2luZ1N0YXRpc3RpY3MgR2V0U3RhdGlzdGljcygpIGNvbnN0IG92ZXJyaWRlOwogICBB
dWRpb1Byb2Nlc3NpbmdTdGF0cyBHZXRTdGF0aXN0aWNzKGJvb2wgaGFzX3JlbW90ZV90cmFja3Mp
IGNvbnN0IG92ZXJyaWRlOwogCiAgIC8vIE1ldGhvZHMgcmV0dXJuaW5nIHBvaW50ZXJzIHRvIEFQ
TSBzdWJtb2R1bGVzLgpAQCAtMTE4LDggKzExOCw2IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc2luZ0lt
cGwgOiBwdWJsaWMgQXVkaW9Qcm9jZXNzaW5nIHsKICAgLy8gY3JlYXRlZCBvbmx5IG9uY2UgaW4g
YSBzaW5nbGUtdHJlYWRlZCBtYW5uZXIKICAgLy8gZHVyaW5nIEFQTSBjcmVhdGlvbikuCiAgIEdh
aW5Db250cm9sKiBnYWluX2NvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKLSAgLy8gVE9ETyhwZWFo
KTogRGVwcmVjYXRlIHRoaXMgQVBJIGNhbGwuCi0gIEhpZ2hQYXNzRmlsdGVyKiBoaWdoX3Bhc3Nf
ZmlsdGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIExldmVsRXN0aW1hdG9yKiBsZXZlbF9lc3RpbWF0
b3IoKSBjb25zdCBvdmVycmlkZTsKICAgTm9pc2VTdXBwcmVzc2lvbiogbm9pc2Vfc3VwcHJlc3Np
b24oKSBjb25zdCBvdmVycmlkZTsKICAgVm9pY2VEZXRlY3Rpb24qIHZvaWNlX2RldGVjdGlvbigp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtMTY0LDkgKzE2Miw2IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc2lu
Z0ltcGwgOiBwdWJsaWMgQXVkaW9Qcm9jZXNzaW5nIHsKICAgUnVudGltZVNldHRpbmdFbnF1ZXVl
ciBjYXB0dXJlX3J1bnRpbWVfc2V0dGluZ3NfZW5xdWV1ZXJfOwogICBSdW50aW1lU2V0dGluZ0Vu
cXVldWVyIHJlbmRlcl9ydW50aW1lX3NldHRpbmdzX2VucXVldWVyXzsKIAotICAvLyBTdWJtb2R1
bGUgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9ucy4KLSAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hQYXNz
RmlsdGVyPiBoaWdoX3Bhc3NfZmlsdGVyX2ltcGxfOwotCiAgIC8vIEVjaG9Db250cm9sIGZhY3Rv
cnkuCiAgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvQ29udHJvbEZhY3Rvcnk+IGVjaG9fY29udHJvbF9m
YWN0b3J5XzsKIApAQCAtMzk2LDYgKzM5MSw3IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc2luZ0ltcGwg
OiBwdWJsaWMgQXVkaW9Qcm9jZXNzaW5nIHsKICAgICBib29sIGVjaG9fcGF0aF9nYWluX2NoYW5n
ZTsKICAgICBpbnQgcHJldl9hbmFsb2dfbWljX2xldmVsOwogICAgIGZsb2F0IHByZXZfcHJlX2Ft
cF9nYWluOworICAgIEF1ZGlvUHJvY2Vzc2luZ1N0YXRzIHN0YXRzOwogICB9IGNhcHR1cmVfIFJU
Q19HVUFSREVEX0JZKGNyaXRfY2FwdHVyZV8pOwogCiAgIHN0cnVjdCBBcG1DYXB0dXJlTm9uTG9j
a2VkU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3NpbmdfaW1wbF9s
b2NraW5nX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3NpbmdfaW1wbF9sb2Nr
aW5nX3VuaXR0ZXN0LmNjCmluZGV4IDBlMGEzM2Y1NzAwNjkzZjEzNDI3NGQ3NzM3YWZhM2M1NDQw
ODkxYjcuLjk2ODVlZjk1ZTljZjU3MWFkNjBjMmM4MDAxZjczZTgxZjQzNTkxNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGxfbG9ja2luZ191bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ19pbXBsX2xvY2tpbmdfdW5pdHRlc3QuY2MK
QEAgLTQ4NywxMCArNDg3LDcgQEAgdm9pZCBQb3B1bGF0ZUF1ZGlvRnJhbWUoQXVkaW9GcmFtZSog
ZnJhbWUsCiB9CiAKIEF1ZGlvUHJvY2Vzc2luZ0ltcGxMb2NrVGVzdDo6QXVkaW9Qcm9jZXNzaW5n
SW1wbExvY2tUZXN0KCkKLSAgICA6IHRlc3RfY29tcGxldGVfKGZhbHNlLCBmYWxzZSksCi0gICAg
ICByZW5kZXJfY2FsbF9ldmVudF8oZmFsc2UsIGZhbHNlKSwKLSAgICAgIGNhcHR1cmVfY2FsbF9l
dmVudF8oZmFsc2UsIGZhbHNlKSwKLSAgICAgIHJlbmRlcl90aHJlYWRfKFJlbmRlclByb2Nlc3Nv
clRocmVhZEZ1bmMsIHRoaXMsICJyZW5kZXIiKSwKKyAgICA6IHJlbmRlcl90aHJlYWRfKFJlbmRl
clByb2Nlc3NvclRocmVhZEZ1bmMsIHRoaXMsICJyZW5kZXIiKSwKICAgICAgIGNhcHR1cmVfdGhy
ZWFkXyhDYXB0dXJlUHJvY2Vzc29yVGhyZWFkRnVuYywgdGhpcywgImNhcHR1cmUiKSwKICAgICAg
IHN0YXRzX3RocmVhZF8oU3RhdHNQcm9jZXNzb3JUaHJlYWRGdW5jLCB0aGlzLCAic3RhdHMiKSwK
ICAgICAgIGFwbV8oQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX3BlcmZvcm1hbmNlX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3NpbmdfcGVyZm9ybWFuY2VfdW5pdHRlc3QuY2MKaW5kZXgg
OTVmNzM2YzIyZjE2OGJmZGI4NzI2NzgzOWQ3YjA0MmVhM2ZlOTkxNi4uODRjYjU3NDMwNzI3MDZi
MDFmODhjYzIxNDE4ZTZlM2UxN2NjOWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3By
b2Nlc3NpbmdfcGVyZm9ybWFuY2VfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3By
b2Nlc3NpbmdfcGVyZm9ybWFuY2VfdW5pdHRlc3QuY2MKQEAgLTE4LDExICsxOCwxMSBAQAogI2lu
Y2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL3Rlc3QvdGVzdF91dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mv
c2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhbmRvbS5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVy
cy9pbmNsdWRlL2Nsb2NrLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZl
bnRfd3JhcHBlci5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L3Rl
c3RzdXBwb3J0L3BlcmZfdGVzdC5oIgogCkBAIC0zOTEsOCArMzkxLDcgQEAgY2xhc3MgVGltZWRU
aHJlYWRBcGlQcm9jZXNzb3IgewogY2xhc3MgQ2FsbFNpbXVsYXRvciA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3RXaXRoUGFyYW08U2ltdWxhdGlvbkNvbmZpZz4gewogIHB1YmxpYzoKICAgQ2FsbFNp
bXVsYXRvcigpCi0gICAgICA6IHRlc3RfY29tcGxldGVfKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkp
LAotICAgICAgICByZW5kZXJfdGhyZWFkXygKKyAgICAgIDogcmVuZGVyX3RocmVhZF8oCiAgICAg
ICAgICAgICBuZXcgcnRjOjpQbGF0Zm9ybVRocmVhZChSZW5kZXJQcm9jZXNzb3JUaHJlYWRGdW5j
LCB0aGlzLCAicmVuZGVyIikpLAogICAgICAgICBjYXB0dXJlX3RocmVhZF8obmV3IHJ0Yzo6UGxh
dGZvcm1UaHJlYWQoQ2FwdHVyZVByb2Nlc3NvclRocmVhZEZ1bmMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLApAQCAtNDAxLDEwICs0MDAsMTAg
QEAgY2xhc3MgQ2FsbFNpbXVsYXRvciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
U2ltdWxhdGlvbkNvbmZpZz4gewogICAgICAgICBzaW11bGF0aW9uX2NvbmZpZ18oc3RhdGljX2Nh
c3Q8U2ltdWxhdGlvbkNvbmZpZz4oR2V0UGFyYW0oKSkpIHt9CiAKICAgLy8gUnVuIHRoZSBjYWxs
IHNpbXVsYXRpb24gd2l0aCBhIHRpbWVvdXQuCi0gIEV2ZW50VHlwZVdyYXBwZXIgUnVuKCkgewor
ICBib29sIFJ1bigpIHsKICAgICBTdGFydFRocmVhZHMoKTsKIAotICAgIEV2ZW50VHlwZVdyYXBw
ZXIgcmVzdWx0ID0gdGVzdF9jb21wbGV0ZV8tPldhaXQoa1Rlc3RUaW1lb3V0KTsKKyAgICBib29s
IHJlc3VsdCA9IHRlc3RfY29tcGxldGVfLldhaXQoa1Rlc3RUaW1lb3V0KTsKIAogICAgIFN0b3BU
aHJlYWRzKCk7CiAKQEAgLTQyMCw3ICs0MTksNyBAQCBjbGFzcyBDYWxsU2ltdWxhdG9yIDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxTaW11bGF0aW9uQ29uZmlnPiB7CiAgIC8vIGRv
bmUuCiAgIGJvb2wgTWF5YmVFbmRUZXN0KCkgewogICAgIGlmIChmcmFtZV9jb3VudGVyc18uQm90
aENvdW50ZXJzRXhjZWVkZVRocmVzaG9sZChrTWluTnVtRnJhbWVzVG9Qcm9jZXNzKSkgewotICAg
ICAgdGVzdF9jb21wbGV0ZV8tPlNldCgpOworICAgICAgdGVzdF9jb21wbGV0ZV8uU2V0KCk7CiAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTcwLDcgKzU2
OSw3IEBAIGNsYXNzIENhbGxTaW11bGF0b3IgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPFNpbXVsYXRpb25Db25maWc+IHsKICAgfQogCiAgIC8vIEV2ZW50IGhhbmRsZXIgZm9yIHRo
ZSB0ZXN0LgotICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPiB0ZXN0X2NvbXBs
ZXRlXzsKKyAgcnRjOjpFdmVudCB0ZXN0X2NvbXBsZXRlXzsKIAogICAvLyBUaHJlYWQgcmVsYXRl
ZCB2YXJpYWJsZXMuCiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlBsYXRmb3JtVGhyZWFkPiByZW5k
ZXJfdGhyZWFkXzsKQEAgLTYxOSw3ICs2MTgsNyBAQCBjb25zdCBmbG9hdCBDYWxsU2ltdWxhdG9y
OjprQ2FwdHVyZUlucHV0RmxvYXRMZXZlbCA9IDAuMDMxMjVmOwogLy8gVE9ETyhwZWFoKTogUmVh
Y3RpdmF0ZSBvbmNlIGlzc3VlIDc3MTIgaGFzIGJlZW4gcmVzb2x2ZWQuCiBURVNUX1AoQ2FsbFNp
bXVsYXRvciwgRElTQUJMRURfQXBpQ2FsbER1cmF0aW9uVGVzdCkgewogICAvLyBSdW4gdGVzdCBh
bmQgdmVyaWZ5IHRoYXQgaXQgZGlkIG5vdCB0aW1lIG91dC4KLSAgRVhQRUNUX0VRKGtFdmVudFNp
Z25hbGVkLCBSdW4oKSk7CisgIEVYUEVDVF9UUlVFKFJ1bigpKTsKIH0KIAogSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ191bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX3VuaXR0ZXN0LmNjCmluZGV4IDNm
MGRlY2M5NTdhNjM0MjE0ZjNkMzkzZjQyYzQ1MTg4MTliNzliODEuLjY4MDlhYjlkY2Q5ZTMxNDBl
MDI5MDZlNDdjNDhhMjQxMGFkMTRjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9j
ZXNzaW5nX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX3VuaXR0
ZXN0LmNjCkBAIC0xMjc4LDcgKzEyNzgsNiBAQCBURVNUX0YoQXBtVGVzdCwgQWxsUHJvY2Vzc2lu
Z0Rpc2FibGVkQnlEZWZhdWx0KSB7CiAgIEVYUEVDVF9GQUxTRShjb25maWcuZWNob19jYW5jZWxs
ZXIuZW5hYmxlZCk7CiAgIEVYUEVDVF9GQUxTRShjb25maWcuaGlnaF9wYXNzX2ZpbHRlci5lbmFi
bGVkKTsKICAgRVhQRUNUX0ZBTFNFKGFwbV8tPmdhaW5fY29udHJvbCgpLT5pc19lbmFibGVkKCkp
OwotICBFWFBFQ1RfRkFMU0UoYXBtXy0+aGlnaF9wYXNzX2ZpbHRlcigpLT5pc19lbmFibGVkKCkp
OwogICBFWFBFQ1RfRkFMU0UoYXBtXy0+bGV2ZWxfZXN0aW1hdG9yKCktPmlzX2VuYWJsZWQoKSk7
CiAgIEVYUEVDVF9GQUxTRShhcG1fLT5ub2lzZV9zdXBwcmVzc2lvbigpLT5pc19lbmFibGVkKCkp
OwogICBFWFBFQ1RfRkFMU0UoYXBtXy0+dm9pY2VfZGV0ZWN0aW9uKCktPmlzX2VuYWJsZWQoKSk7
CkBAIC0yODAyLDQgKzI4MDEsNDIgQEAgVEVTVChNQVlCRV9BcG1TdGF0aXN0aWNzLCBBRUNNRW5h
YmxlZFRlc3QpIHsKICAgRVhQRUNUX0ZBTFNFKHN0YXRzLmRlbGF5X21lZGlhbl9tcyk7CiAgIEVY
UEVDVF9GQUxTRShzdGF0cy5kZWxheV9zdGFuZGFyZF9kZXZpYXRpb25fbXMpOwogfQorCitURVNU
KEFwbVN0YXRpc3RpY3MsIFJlcG9ydE91dHB1dFJtc0RiZnMpIHsKKyAgUHJvY2Vzc2luZ0NvbmZp
ZyBwcm9jZXNzaW5nX2NvbmZpZyA9IHsKKyAgICAgIHt7MzIwMDAsIDF9LCB7MzIwMDAsIDF9LCB7
MzIwMDAsIDF9LCB7MzIwMDAsIDF9fX07CisgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnIGNvbmZp
ZzsKKworICAvLyBTZXQgdXAgYW4gYXVkaW9mcmFtZS4KKyAgQXVkaW9GcmFtZSBmcmFtZTsKKyAg
ZnJhbWUubnVtX2NoYW5uZWxzXyA9IDE7CisgIFNldEZyYW1lU2FtcGxlUmF0ZSgmZnJhbWUsIEF1
ZGlvUHJvY2Vzc2luZzo6TmF0aXZlUmF0ZTo6a1NhbXBsZVJhdGU0OGtIeik7CisKKyAgLy8gRmls
bCB0aGUgYXVkaW8gZnJhbWUgd2l0aCBhIHNhd3Rvb3RoIHBhdHRlcm4uCisgIGludDE2X3QqIHB0
ciA9IGZyYW1lLm11dGFibGVfZGF0YSgpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1l
LmtNYXhEYXRhU2l6ZVNhbXBsZXM7IGkrKykgeworICAgIHB0cltpXSA9IDEwMDAwICogKChpICUg
MykgLSAxKTsKKyAgfQorCisgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Byb2Nlc3Npbmc+IGFwbShB
dWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpOworICBhcG0tPkluaXRpYWxpemUocHJv
Y2Vzc2luZ19jb25maWcpOworCisgIC8vIElmIG5vdCBlbmFibGVkLCBubyBtZXRyaWMgc2hvdWxk
IGJlIHJlcG9ydGVkLgorICBFWFBFQ1RfRVEoYXBtLT5Qcm9jZXNzU3RyZWFtKCZmcmFtZSksIDAp
OworICBFWFBFQ1RfRkFMU0UoYXBtLT5HZXRTdGF0aXN0aWNzKGZhbHNlKS5vdXRwdXRfcm1zX2Ri
ZnMpOworCisgIC8vIElmIGVuYWJsZWQsIG1ldHJpY3Mgc2hvdWxkIGJlIHJlcG9ydGVkLgorICBj
b25maWcubGV2ZWxfZXN0aW1hdGlvbi5lbmFibGVkID0gdHJ1ZTsKKyAgYXBtLT5BcHBseUNvbmZp
Zyhjb25maWcpOworICBFWFBFQ1RfRVEoYXBtLT5Qcm9jZXNzU3RyZWFtKCZmcmFtZSksIDApOwor
ICBhdXRvIHN0YXRzID0gYXBtLT5HZXRTdGF0aXN0aWNzKGZhbHNlKTsKKyAgRVhQRUNUX1RSVUUo
c3RhdHMub3V0cHV0X3Jtc19kYmZzKTsKKyAgRVhQRUNUX0dFKCpzdGF0cy5vdXRwdXRfcm1zX2Ri
ZnMsIDApOworCisgIC8vIElmIHJlLWRpc2FibGVkLCB0aGUgdmFsdWUgaXMgYWdhaW4gbm90IHJl
cG9ydGVkLgorICBjb25maWcubGV2ZWxfZXN0aW1hdGlvbi5lbmFibGVkID0gZmFsc2U7CisgIGFw
bS0+QXBwbHlDb25maWcoY29uZmlnKTsKKyAgRVhQRUNUX0VRKGFwbS0+UHJvY2Vzc1N0cmVhbSgm
ZnJhbWUpLCAwKTsKKyAgRVhQRUNUX0ZBTFNFKGFwbS0+R2V0U3RhdGlzdGljcyhmYWxzZSkub3V0
cHV0X3Jtc19kYmZzKTsKK30KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlvbl9iaXRfZXhhY3RfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvZWNob19jYW5jZWxsYXRpb25fYml0X2V4YWN0X3VuaXR0ZXN0LmNjCmluZGV4IDdmNjBjNGI1
ZDgzODgxZDQ2ZTdmYTJhNjNkMThjZjAxYTY4YjRlY2MuLmFmMDc0MWVlMTc4NDk2YTEzMTllOWNh
NGI1MzE3MzVkNWI3MmI3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlv
bl9iaXRfZXhhY3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9u
X2JpdF9leGFjdF91bml0dGVzdC5jYwpAQCAtNzQsOSArNzQsNyBAQCB2b2lkIFJ1bkJpdGV4YWN0
bmVzc1Rlc3QoCiAgICAgRWNob0NhbmNlbGxhdGlvbkltcGw6OlN1cHByZXNzaW9uTGV2ZWwgc3Vw
cHJlc3Npb25fbGV2ZWwsCiAgICAgYm9vbCBzdHJlYW1faGFzX2VjaG9fcmVmZXJlbmNlLAogICAg
IGNvbnN0IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiYgb3V0cHV0X3JlZmVyZW5jZSkgewot
ICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X3JlbmRlcjsKLSAgcnRjOjpDcml0aWNhbFNlY3Rp
b24gY3JpdF9jYXB0dXJlOwotICBFY2hvQ2FuY2VsbGF0aW9uSW1wbCBlY2hvX2NhbmNlbGxlcigm
Y3JpdF9yZW5kZXIsICZjcml0X2NhcHR1cmUpOworICBFY2hvQ2FuY2VsbGF0aW9uSW1wbCBlY2hv
X2NhbmNlbGxlcjsKICAgU2V0dXBDb21wb25lbnQoc2FtcGxlX3JhdGVfaHosIHN1cHByZXNzaW9u
X2xldmVsLCBkcmlmdF9jb21wZW5zYXRpb25fZW5hYmxlZCwKICAgICAgICAgICAgICAgICAgJmVj
aG9fY2FuY2VsbGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9u
X2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jYW5jZWxsYXRpb25faW1wbC5jYwppbmRleCBlNmZl
NzY5MWM0OTAzZDkyNzlhYjAxYmU1Mzc5NmZmYzcyNDY5N2UyLi43M2ZlNTFiNzUyZjY2ZDJjMGY4
YTI1MWMyOWVlNmFmMTRhYTM0Mjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jYW5jZWxs
YXRpb25faW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jYW5jZWxsYXRpb25faW1wbC5jYwpA
QCAtMTAsMTEgKzEwLDEzIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
ZWNob19jYW5jZWxsYXRpb25faW1wbC5oIgogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVk
ZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2Fl
Y19jb3JlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYy9lY2hvX2Nh
bmNlbGxhdGlvbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19i
dWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9jb25m
aWcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCkBAIC0xMDMsMTEgKzEwNSw4IEBAIGNsYXNz
IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpDYW5jZWxsZXIgewogICB2b2lkKiBzdGF0ZV87CiB9Owog
Ci1FY2hvQ2FuY2VsbGF0aW9uSW1wbDo6RWNob0NhbmNlbGxhdGlvbkltcGwocnRjOjpDcml0aWNh
bFNlY3Rpb24qIGNyaXRfcmVuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uKiBjcml0X2NhcHR1cmUpCi0gICAgOiBjcml0
X3JlbmRlcl8oY3JpdF9yZW5kZXIpLAotICAgICAgY3JpdF9jYXB0dXJlXyhjcml0X2NhcHR1cmUp
LAotICAgICAgZHJpZnRfY29tcGVuc2F0aW9uX2VuYWJsZWRfKGZhbHNlKSwKK0VjaG9DYW5jZWxs
YXRpb25JbXBsOjpFY2hvQ2FuY2VsbGF0aW9uSW1wbCgpCisgICAgOiBkcmlmdF9jb21wZW5zYXRp
b25fZW5hYmxlZF8oZmFsc2UpLAogICAgICAgbWV0cmljc19lbmFibGVkXyh0cnVlKSwKICAgICAg
IHN1cHByZXNzaW9uX2xldmVsXyhrSGlnaFN1cHByZXNzaW9uKSwKICAgICAgIHN0cmVhbV9kcmlm
dF9zYW1wbGVzXygwKSwKQEAgLTExNiwxNiArMTE1LDEyIEBAIEVjaG9DYW5jZWxsYXRpb25JbXBs
OjpFY2hvQ2FuY2VsbGF0aW9uSW1wbChydGM6OkNyaXRpY2FsU2VjdGlvbiogY3JpdF9yZW5kZXIs
CiAgICAgICBkZWxheV9sb2dnaW5nX2VuYWJsZWRfKHRydWUpLAogICAgICAgZXh0ZW5kZWRfZmls
dGVyX2VuYWJsZWRfKGZhbHNlKSwKICAgICAgIGRlbGF5X2Fnbm9zdGljX2VuYWJsZWRfKGZhbHNl
KSwKLSAgICAgIGVuZm9yY2VfemVyb19zdHJlYW1fZGVsYXlfKEVuZm9yY2VaZXJvU3RyZWFtRGVs
YXkoKSkgewotICBSVENfRENIRUNLKGNyaXRfcmVuZGVyKTsKLSAgUlRDX0RDSEVDSyhjcml0X2Nh
cHR1cmUpOwotfQorICAgICAgZW5mb3JjZV96ZXJvX3N0cmVhbV9kZWxheV8oRW5mb3JjZVplcm9T
dHJlYW1EZWxheSgpKSB7fQogCiBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6fkVjaG9DYW5jZWxsYXRp
b25JbXBsKCkgPSBkZWZhdWx0OwogCiB2b2lkIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpQcm9jZXNz
UmVuZGVyQXVkaW8oCiAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHBhY2tlZF9yZW5k
ZXJfYXVkaW8pIHsKLSAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZShjcml0X2NhcHR1cmVfKTsK
ICAgaWYgKCFlbmFibGVkXykgewogICAgIHJldHVybjsKICAgfQpAQCAtMTQ5LDcgKzE0NCw2IEBA
IHZvaWQgRWNob0NhbmNlbGxhdGlvbkltcGw6OlByb2Nlc3NSZW5kZXJBdWRpbygKIAogaW50IEVj
aG9DYW5jZWxsYXRpb25JbXBsOjpQcm9jZXNzQ2FwdHVyZUF1ZGlvKEF1ZGlvQnVmZmVyKiBhdWRp
bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Ry
ZWFtX2RlbGF5X21zKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9jYXB0dXJl
Xyk7CiAgIGlmICghZW5hYmxlZF8pIHsKICAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprTm9F
cnJvcjsKICAgfQpAQCAtMjA2LDEwICsyMDAsNiBAQCBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6
OlByb2Nlc3NDYXB0dXJlQXVkaW8oQXVkaW9CdWZmZXIqIGF1ZGlvLAogfQogCiBpbnQgRWNob0Nh
bmNlbGxhdGlvbkltcGw6OkVuYWJsZShib29sIGVuYWJsZSkgewotICAvLyBSdW4gaW4gYSBzaW5n
bGUtdGhyZWFkZWQgbWFubmVyLgotICBydGM6OkNyaXRTY29wZSBjc19yZW5kZXIoY3JpdF9yZW5k
ZXJfKTsKLSAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZShjcml0X2NhcHR1cmVfKTsKLQogICBp
ZiAoZW5hYmxlICYmICFlbmFibGVkXykgewogICAgIGVuYWJsZWRfID0gZW5hYmxlOyAgLy8gTXVz
dCBiZSBzZXQgYmVmb3JlIEluaXRpYWxpemUoKSBpcyBjYWxsZWQuCiAKQEAgLTIyNyw2OCArMjE3
LDUyIEBAIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6RW5hYmxlKGJvb2wgZW5hYmxlKSB7CiB9
CiAKIGJvb2wgRWNob0NhbmNlbGxhdGlvbkltcGw6OmlzX2VuYWJsZWQoKSBjb25zdCB7Ci0gIHJ0
Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1cm4gZW5hYmxlZF87CiB9CiAK
IGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6c2V0X3N1cHByZXNzaW9uX2xldmVsKFN1cHByZXNz
aW9uTGV2ZWwgbGV2ZWwpIHsKLSAgewotICAgIGlmIChNYXBTZXR0aW5nKGxldmVsKSA9PSAtMSkg
ewotICAgICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFtZXRlckVycm9yOwotICAg
IH0KLSAgICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKLSAgICBzdXBwcmVzc2lv
bl9sZXZlbF8gPSBsZXZlbDsKKyAgaWYgKE1hcFNldHRpbmcobGV2ZWwpID09IC0xKSB7CisgICAg
cmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFtZXRlckVycm9yOwogICB9CisgIHN1cHBy
ZXNzaW9uX2xldmVsXyA9IGxldmVsOwogICByZXR1cm4gQ29uZmlndXJlKCk7CiB9CiAKIEVjaG9D
YW5jZWxsYXRpb25JbXBsOjpTdXBwcmVzc2lvbkxldmVsIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpz
dXBwcmVzc2lvbl9sZXZlbCgpCiAgICAgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0
X2NhcHR1cmVfKTsKICAgcmV0dXJuIHN1cHByZXNzaW9uX2xldmVsXzsKIH0KIAogaW50IEVjaG9D
YW5jZWxsYXRpb25JbXBsOjplbmFibGVfZHJpZnRfY29tcGVuc2F0aW9uKGJvb2wgZW5hYmxlKSB7
Ci0gIHsKLSAgICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKLSAgICBkcmlmdF9j
b21wZW5zYXRpb25fZW5hYmxlZF8gPSBlbmFibGU7Ci0gIH0KKyAgZHJpZnRfY29tcGVuc2F0aW9u
X2VuYWJsZWRfID0gZW5hYmxlOwogICByZXR1cm4gQ29uZmlndXJlKCk7CiB9CiAKIGJvb2wgRWNo
b0NhbmNlbGxhdGlvbkltcGw6OmlzX2RyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkKCkgY29uc3Qg
ewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgcmV0dXJuIGRyaWZ0X2Nv
bXBlbnNhdGlvbl9lbmFibGVkXzsKIH0KIAogdm9pZCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6c2V0
X3N0cmVhbV9kcmlmdF9zYW1wbGVzKGludCBkcmlmdCkgewotICBydGM6OkNyaXRTY29wZSBjcyhj
cml0X2NhcHR1cmVfKTsKICAgd2FzX3N0cmVhbV9kcmlmdF9zZXRfID0gdHJ1ZTsKICAgc3RyZWFt
X2RyaWZ0X3NhbXBsZXNfID0gZHJpZnQ7CiB9CiAKIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6
c3RyZWFtX2RyaWZ0X3NhbXBsZXMoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRf
Y2FwdHVyZV8pOwogICByZXR1cm4gc3RyZWFtX2RyaWZ0X3NhbXBsZXNfOwogfQogCiBpbnQgRWNo
b0NhbmNlbGxhdGlvbkltcGw6OmVuYWJsZV9tZXRyaWNzKGJvb2wgZW5hYmxlKSB7Ci0gIHsKLSAg
ICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKLSAgICBtZXRyaWNzX2VuYWJsZWRf
ID0gZW5hYmxlOwotICB9CisgIG1ldHJpY3NfZW5hYmxlZF8gPSBlbmFibGU7CiAgIHJldHVybiBD
b25maWd1cmUoKTsKIH0KIAogYm9vbCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6YXJlX21ldHJpY3Nf
ZW5hYmxlZCgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAg
IHJldHVybiBlbmFibGVkXyAmJiBtZXRyaWNzX2VuYWJsZWRfOwogfQogCiAvLyBUT0RPKGFqbSk6
IHdlIGN1cnJlbnRseSBqdXN0IHVzZSB0aGUgbWV0cmljcyBmcm9tIHRoZSBmaXJzdCBBRUMuIFRo
aW5rIG1vcmUKIC8vICAgICAgICAgICAgYWJvdWUgdGhlIGJlc3Qgd2F5IHRvIGV4dGVuZCB0aGlz
IHRvIG11bHRpLWNoYW5uZWwuCiBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OkdldE1ldHJpY3Mo
TWV0cmljcyogbWV0cmljcykgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsK
ICAgaWYgKG1ldHJpY3MgPT0gTlVMTCkgewogICAgIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtO
dWxsUG9pbnRlckVycm9yOwogICB9CkBAIC0zMzEsNDYgKzMwNSwzNiBAQCBpbnQgRWNob0NhbmNl
bGxhdGlvbkltcGw6OkdldE1ldHJpY3MoTWV0cmljcyogbWV0cmljcykgewogfQogCiBib29sIEVj
aG9DYW5jZWxsYXRpb25JbXBsOjpzdHJlYW1faGFzX2VjaG8oKSBjb25zdCB7Ci0gIHJ0Yzo6Q3Jp
dFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1cm4gc3RyZWFtX2hhc19lY2hvXzsKIH0K
IAogaW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjplbmFibGVfZGVsYXlfbG9nZ2luZyhib29sIGVu
YWJsZSkgewotICB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7Ci0gICAg
ZGVsYXlfbG9nZ2luZ19lbmFibGVkXyA9IGVuYWJsZTsKLSAgfQorICBkZWxheV9sb2dnaW5nX2Vu
YWJsZWRfID0gZW5hYmxlOwogICByZXR1cm4gQ29uZmlndXJlKCk7CiB9CiAKIGJvb2wgRWNob0Nh
bmNlbGxhdGlvbkltcGw6OmlzX2RlbGF5X2xvZ2dpbmdfZW5hYmxlZCgpIGNvbnN0IHsKLSAgcnRj
OjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVybiBlbmFibGVkXyAmJiBkZWxh
eV9sb2dnaW5nX2VuYWJsZWRfOwogfQogCiBib29sIEVjaG9DYW5jZWxsYXRpb25JbXBsOjppc19k
ZWxheV9hZ25vc3RpY19lbmFibGVkKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0
X2NhcHR1cmVfKTsKICAgcmV0dXJuIGRlbGF5X2Fnbm9zdGljX2VuYWJsZWRfOwogfQogCiBzdGQ6
OnN0cmluZyBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6R2V0RXhwZXJpbWVudHNEZXNjcmlwdGlvbigp
IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVybiByZWZpbmVk
X2FkYXB0aXZlX2ZpbHRlcl9lbmFibGVkXyA/ICJSZWZpbmVkQWRhcHRpdmVGaWx0ZXI7IiA6ICIi
OwogfQogCiBib29sIEVjaG9DYW5jZWxsYXRpb25JbXBsOjppc19yZWZpbmVkX2FkYXB0aXZlX2Zp
bHRlcl9lbmFibGVkKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVf
KTsKICAgcmV0dXJuIHJlZmluZWRfYWRhcHRpdmVfZmlsdGVyX2VuYWJsZWRfOwogfQogCiBib29s
IEVjaG9DYW5jZWxsYXRpb25JbXBsOjppc19leHRlbmRlZF9maWx0ZXJfZW5hYmxlZCgpIGNvbnN0
IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVybiBleHRlbmRl
ZF9maWx0ZXJfZW5hYmxlZF87CiB9CiAKIC8vIFRPRE8oYmpvcm52KTogSG93IHNob3VsZCB3ZSBo
YW5kbGUgdGhlIG11bHRpLWNoYW5uZWwgY2FzZT8KIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6
R2V0RGVsYXlNZXRyaWNzKGludCogbWVkaWFuLCBpbnQqIHN0ZCkgewotICBydGM6OkNyaXRTY29w
ZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgZmxvYXQgZnJhY3Rpb25fcG9vcl9kZWxheXMgPSAwOwog
ICByZXR1cm4gR2V0RGVsYXlNZXRyaWNzKG1lZGlhbiwgc3RkLCAmZnJhY3Rpb25fcG9vcl9kZWxh
eXMpOwogfQpAQCAtMzc4LDcgKzM0Miw2IEBAIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6R2V0
RGVsYXlNZXRyaWNzKGludCogbWVkaWFuLCBpbnQqIHN0ZCkgewogaW50IEVjaG9DYW5jZWxsYXRp
b25JbXBsOjpHZXREZWxheU1ldHJpY3MoaW50KiBtZWRpYW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHN0ZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsb2F0KiBmcmFjdGlvbl9wb29yX2RlbGF5cykgewotICBydGM6
OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgaWYgKG1lZGlhbiA9PSBOVUxMKSB7CiAg
ICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a051bGxQb2ludGVyRXJyb3I7CiAgIH0KQEAgLTQw
MCw3ICszNjMsNiBAQCBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OkdldERlbGF5TWV0cmljcyhp
bnQqIG1lZGlhbiwKIH0KIAogc3RydWN0IEFlY0NvcmUqIEVjaG9DYW5jZWxsYXRpb25JbXBsOjph
ZWNfY29yZSgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAg
IGlmICghZW5hYmxlZF8pIHsKICAgICByZXR1cm4gTlVMTDsKICAgfQpAQCAtNDExLDkgKzM3Myw2
IEBAIHZvaWQgRWNob0NhbmNlbGxhdGlvbkltcGw6OkluaXRpYWxpemUoaW50IHNhbXBsZV9yYXRl
X2h6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX3Jl
dmVyc2VfY2hhbm5lbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBudW1fb3V0cHV0X2NoYW5uZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbnVtX3Byb2NfY2hhbm5lbHMpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3Nf
cmVuZGVyKGNyaXRfcmVuZGVyXyk7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9j
YXB0dXJlXyk7Ci0KICAgc3RyZWFtX3Byb3BlcnRpZXNfLnJlc2V0KAogICAgICAgbmV3IFN0cmVh
bVByb3BlcnRpZXMoc2FtcGxlX3JhdGVfaHosIG51bV9yZXZlcnNlX2NoYW5uZWxzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVtX291dHB1dF9jaGFubmVscywgbnVtX3Byb2NfY2hhbm5l
bHMpKTsKQEAgLTQ0Miw3ICs0MDEsNiBAQCB2b2lkIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpJbml0
aWFsaXplKGludCBzYW1wbGVfcmF0ZV9oeiwKIH0KIAogaW50IEVjaG9DYW5jZWxsYXRpb25JbXBs
OjpHZXRTeXN0ZW1EZWxheUluU2FtcGxlcygpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3Mo
Y3JpdF9jYXB0dXJlXyk7CiAgIFJUQ19EQ0hFQ0soZW5hYmxlZF8pOwogICAvLyBSZXBvcnQgdGhl
IGRlbGF5IGZvciB0aGUgZmlyc3QgQUVDIGNvbXBvbmVudC4KICAgcmV0dXJuIFdlYlJ0Y0FlY19z
eXN0ZW1fZGVsYXkoV2ViUnRjQWVjX2FlY19jb3JlKGNhbmNlbGxlcnNfWzBdLT5zdGF0ZSgpKSk7
CkBAIC00NzEsNyArNDI5LDYgQEAgdm9pZCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6UGFja1JlbmRl
ckF1ZGlvQnVmZmVyKAogCiB2b2lkIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpTZXRFeHRyYU9wdGlv
bnMoY29uc3Qgd2VicnRjOjpDb25maWcmIGNvbmZpZykgewogICB7Ci0gICAgcnRjOjpDcml0U2Nv
cGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgICAgZXh0ZW5kZWRfZmlsdGVyX2VuYWJsZWRfID0gY29u
ZmlnLkdldDxFeHRlbmRlZEZpbHRlcj4oKS5lbmFibGVkOwogICAgIGRlbGF5X2Fnbm9zdGljX2Vu
YWJsZWRfID0gY29uZmlnLkdldDxEZWxheUFnbm9zdGljPigpLmVuYWJsZWQ7CiAgICAgcmVmaW5l
ZF9hZGFwdGl2ZV9maWx0ZXJfZW5hYmxlZF8gPQpAQCAtNDgxLDggKzQzOCw2IEBAIHZvaWQgRWNo
b0NhbmNlbGxhdGlvbkltcGw6OlNldEV4dHJhT3B0aW9ucyhjb25zdCB3ZWJydGM6OkNvbmZpZyYg
Y29uZmlnKSB7CiB9CiAKIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6Q29uZmlndXJlKCkgewot
ICBydGM6OkNyaXRTY29wZSBjc19yZW5kZXIoY3JpdF9yZW5kZXJfKTsKLSAgcnRjOjpDcml0U2Nv
cGUgY3NfY2FwdHVyZShjcml0X2NhcHR1cmVfKTsKICAgQWVjQ29uZmlnIGNvbmZpZzsKICAgY29u
ZmlnLm1ldHJpY3NNb2RlID0gbWV0cmljc19lbmFibGVkXzsKICAgY29uZmlnLm5scE1vZGUgPSBN
YXBTZXR0aW5nKHN1cHByZXNzaW9uX2xldmVsXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNo
b19jYW5jZWxsYXRpb25faW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGwu
aAppbmRleCAwOTFhN2I1MTE2YTJhZDdlNjE4YTljZmUxODQ3NDEzZTdmNDQyYmEyLi5hOGI0M2E4
Y2Q2MmI4ZWMxNTFiODBkZTBiMGFlNjQ5MTM2NzdmZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
ZWNob19jYW5jZWxsYXRpb25faW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlv
bl9pbXBsLmgKQEAgLTExLDEyICsxMSwxNiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NF
U1NJTkdfRUNIT19DQU5DRUxMQVRJT05fSU1QTF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfRUNIT19DQU5DRUxMQVRJT05fSU1QTF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+
CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+
CiAKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9u
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCkBAIC0yOCw4ICszMiw3IEBAIGNsYXNzIEF1ZGlvQnVmZmVyOwogLy8gZm9y
IFBDIGFuZCBJUCBwaG9uZSBhcHBsaWNhdGlvbnMuCiBjbGFzcyBFY2hvQ2FuY2VsbGF0aW9uSW1w
bCB7CiAgcHVibGljOgotICBFY2hvQ2FuY2VsbGF0aW9uSW1wbChydGM6OkNyaXRpY2FsU2VjdGlv
biogY3JpdF9yZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3JpdGljYWxTZWN0
aW9uKiBjcml0X2NhcHR1cmUpOworICBleHBsaWNpdCBFY2hvQ2FuY2VsbGF0aW9uSW1wbCgpOwog
ICB+RWNob0NhbmNlbGxhdGlvbkltcGwoKTsKIAogICB2b2lkIFByb2Nlc3NSZW5kZXJBdWRpbyhy
dGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcGFja2VkX3JlbmRlcl9hdWRpbyk7CkBAIC04MCwx
NyArODMsMjMgQEAgY2xhc3MgRWNob0NhbmNlbGxhdGlvbkltcGwgewogICAvLyBQX2E6ICAgIElu
dGVybmFsIHNpZ25hbCBwb3dlciBhdCB0aGUgcG9pbnQgYmVmb3JlIHRoZSBBRUMncyBub24tbGlu
ZWFyCiAgIC8vICAgICAgICAgcHJvY2Vzc29yLgogICBzdHJ1Y3QgTWV0cmljcyB7CisgICAgc3Ry
dWN0IFN0YXRpc3RpYyB7CisgICAgICBpbnQgaW5zdGFudCA9IDA7ICAvLyBJbnN0YW50YW5lb3Vz
IHZhbHVlLgorICAgICAgaW50IGF2ZXJhZ2UgPSAwOyAgLy8gTG9uZy10ZXJtIGF2ZXJhZ2UuCisg
ICAgICBpbnQgbWF4aW11bSA9IDA7ICAvLyBMb25nLXRlcm0gbWF4aW11bS4KKyAgICAgIGludCBt
aW5pbXVtID0gMDsgIC8vIExvbmctdGVybSBtaW5pbXVtLgorICAgIH07CiAgICAgLy8gUkVSTCA9
IEVSTCArIEVSTEUKLSAgICBBdWRpb1Byb2Nlc3Npbmc6OlN0YXRpc3RpYyByZXNpZHVhbF9lY2hv
X3JldHVybl9sb3NzOworICAgIFN0YXRpc3RpYyByZXNpZHVhbF9lY2hvX3JldHVybl9sb3NzOwog
CiAgICAgLy8gRVJMID0gMTBsb2dfMTAoUF9mYXIgLyBQX2VjaG8pCi0gICAgQXVkaW9Qcm9jZXNz
aW5nOjpTdGF0aXN0aWMgZWNob19yZXR1cm5fbG9zczsKKyAgICBTdGF0aXN0aWMgZWNob19yZXR1
cm5fbG9zczsKIAogICAgIC8vIEVSTEUgPSAxMGxvZ18xMChQX2VjaG8gLyBQX291dCkKLSAgICBB
dWRpb1Byb2Nlc3Npbmc6OlN0YXRpc3RpYyBlY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50Owor
ICAgIFN0YXRpc3RpYyBlY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50OwogCiAgICAgLy8gKFBy
ZSBub24tbGluZWFyIHByb2Nlc3Npbmcgc3VwcHJlc3Npb24pIEFfTkxQID0gMTBsb2dfMTAoUF9l
Y2hvIC8gUF9hKQotICAgIEF1ZGlvUHJvY2Vzc2luZzo6U3RhdGlzdGljIGFfbmxwOworICAgIFN0
YXRpc3RpYyBhX25scDsKIAogICAgIC8vIEZyYWN0aW9uIG9mIHRpbWUgdGhhdCB0aGUgQUVDIGxp
bmVhciBmaWx0ZXIgaXMgZGl2ZXJnZW50LCBpbiBhIDEtc2Vjb25kCiAgICAgLy8gbm9uLW92ZXJs
YXBwZWQgYWdncmVnYXRpb24gd2luZG93LgpAQCAtMTUwLDI4ICsxNTksMjMgQEAgY2xhc3MgRWNo
b0NhbmNlbGxhdGlvbkltcGwgewogICB2b2lkIEFsbG9jYXRlUmVuZGVyUXVldWUoKTsKICAgaW50
IENvbmZpZ3VyZSgpOwogCi0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uKiBjb25zdCBjcml0X3JlbmRl
cl8gUlRDX0FDUVVJUkVEX0JFRk9SRShjcml0X2NhcHR1cmVfKTsKLSAgcnRjOjpDcml0aWNhbFNl
Y3Rpb24qIGNvbnN0IGNyaXRfY2FwdHVyZV87Ci0KICAgYm9vbCBlbmFibGVkXyA9IGZhbHNlOwot
ICBib29sIGRyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkXyBSVENfR1VBUkRFRF9CWShjcml0X2Nh
cHR1cmVfKTsKLSAgYm9vbCBtZXRyaWNzX2VuYWJsZWRfIFJUQ19HVUFSREVEX0JZKGNyaXRfY2Fw
dHVyZV8pOwotICBTdXBwcmVzc2lvbkxldmVsIHN1cHByZXNzaW9uX2xldmVsXyBSVENfR1VBUkRF
RF9CWShjcml0X2NhcHR1cmVfKTsKLSAgaW50IHN0cmVhbV9kcmlmdF9zYW1wbGVzXyBSVENfR1VB
UkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAgYm9vbCB3YXNfc3RyZWFtX2RyaWZ0X3NldF8gUlRD
X0dVQVJERURfQlkoY3JpdF9jYXB0dXJlXyk7Ci0gIGJvb2wgc3RyZWFtX2hhc19lY2hvXyBSVENf
R1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAgYm9vbCBkZWxheV9sb2dnaW5nX2VuYWJsZWRf
IFJUQ19HVUFSREVEX0JZKGNyaXRfY2FwdHVyZV8pOwotICBib29sIGV4dGVuZGVkX2ZpbHRlcl9l
bmFibGVkXyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAgYm9vbCBkZWxheV9hZ25v
c3RpY19lbmFibGVkXyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAgYm9vbCByZWZp
bmVkX2FkYXB0aXZlX2ZpbHRlcl9lbmFibGVkXyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVf
KSA9IGZhbHNlOworICBib29sIGRyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkXzsKKyAgYm9vbCBt
ZXRyaWNzX2VuYWJsZWRfOworICBTdXBwcmVzc2lvbkxldmVsIHN1cHByZXNzaW9uX2xldmVsXzsK
KyAgaW50IHN0cmVhbV9kcmlmdF9zYW1wbGVzXzsKKyAgYm9vbCB3YXNfc3RyZWFtX2RyaWZ0X3Nl
dF87CisgIGJvb2wgc3RyZWFtX2hhc19lY2hvXzsKKyAgYm9vbCBkZWxheV9sb2dnaW5nX2VuYWJs
ZWRfOworICBib29sIGV4dGVuZGVkX2ZpbHRlcl9lbmFibGVkXzsKKyAgYm9vbCBkZWxheV9hZ25v
c3RpY19lbmFibGVkXzsKKyAgYm9vbCByZWZpbmVkX2FkYXB0aXZlX2ZpbHRlcl9lbmFibGVkXyA9
IGZhbHNlOwogCiAgIC8vIE9ubHkgYWN0aXZlIG9uIENocm9tZSBPUyBkZXZpY2VzLgotICBjb25z
dCBib29sIGVuZm9yY2VfemVyb19zdHJlYW1fZGVsYXlfIFJUQ19HVUFSREVEX0JZKGNyaXRfY2Fw
dHVyZV8pOworICBjb25zdCBib29sIGVuZm9yY2VfemVyb19zdHJlYW1fZGVsYXlfOwogCiAgIHN0
ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDYW5jZWxsZXI+PiBjYW5jZWxsZXJzXzsKICAgc3Rk
Ojp1bmlxdWVfcHRyPFN0cmVhbVByb3BlcnRpZXM+IHN0cmVhbV9wcm9wZXJ0aWVzXzsKLQotICBS
VENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKEVjaG9DYW5jZWxsYXRpb25JbXBsKTsK
IH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hv
X2NhbmNlbGxhdGlvbl9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0
aW9uX2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggYzUwYzUyZjg1N2JmNzM1MWI2YjgxNTE1YzdiOTdi
ZDU3NThkZGE1ZS4uOWQ4MWMxZGYzYjc2YjIzYTE5ZDBhYWExMDZkY2M1MmYwYzRkMGNkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGxfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGxfdW5pdHRlc3QuY2MKQEAgLTE4LDkg
KzE4LDcgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBURVNUKEVjaG9DYW5jZWxsYXRpb25JbnRl
cm5hbFRlc3QsIEV4dGVuZGVkRmlsdGVyKSB7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRf
cmVuZGVyOwotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X2NhcHR1cmU7Ci0gIEVjaG9DYW5j
ZWxsYXRpb25JbXBsIGVjaG9fY2FuY2VsbGVyKCZjcml0X3JlbmRlciwgJmNyaXRfY2FwdHVyZSk7
CisgIEVjaG9DYW5jZWxsYXRpb25JbXBsIGVjaG9fY2FuY2VsbGVyOwogICBlY2hvX2NhbmNlbGxl
ci5Jbml0aWFsaXplKEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGUzMmtIeiwgMiwgMiwgMik7
CiAKICAgRVhQRUNUX1RSVUUoZWNob19jYW5jZWxsZXIuYWVjX2NvcmUoKSA9PSBudWxscHRyKTsK
QEAgLTUxLDkgKzQ5LDcgQEAgVEVTVChFY2hvQ2FuY2VsbGF0aW9uSW50ZXJuYWxUZXN0LCBFeHRl
bmRlZEZpbHRlcikgewogfQogCiBURVNUKEVjaG9DYW5jZWxsYXRpb25JbnRlcm5hbFRlc3QsIERl
bGF5QWdub3N0aWMpIHsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9yZW5kZXI7Ci0gIHJ0
Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfY2FwdHVyZTsKLSAgRWNob0NhbmNlbGxhdGlvbkltcGwg
ZWNob19jYW5jZWxsZXIoJmNyaXRfcmVuZGVyLCAmY3JpdF9jYXB0dXJlKTsKKyAgRWNob0NhbmNl
bGxhdGlvbkltcGwgZWNob19jYW5jZWxsZXI7CiAgIGVjaG9fY2FuY2VsbGVyLkluaXRpYWxpemUo
QXVkaW9Qcm9jZXNzaW5nOjprU2FtcGxlUmF0ZTMya0h6LCAxLCAxLCAxKTsKIAogICBFWFBFQ1Rf
VFJVRShlY2hvX2NhbmNlbGxlci5hZWNfY29yZSgpID09IE5VTEwpOwpAQCAtODUsOSArODEsNyBA
QCBURVNUKEVjaG9DYW5jZWxsYXRpb25JbnRlcm5hbFRlc3QsIERlbGF5QWdub3N0aWMpIHsKIH0K
IAogVEVTVChFY2hvQ2FuY2VsbGF0aW9uSW50ZXJuYWxUZXN0LCBJbnRlcmZhY2VDb25maWd1cmF0
aW9uKSB7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfcmVuZGVyOwotICBydGM6OkNyaXRp
Y2FsU2VjdGlvbiBjcml0X2NhcHR1cmU7Ci0gIEVjaG9DYW5jZWxsYXRpb25JbXBsIGVjaG9fY2Fu
Y2VsbGVyKCZjcml0X3JlbmRlciwgJmNyaXRfY2FwdHVyZSk7CisgIEVjaG9DYW5jZWxsYXRpb25J
bXBsIGVjaG9fY2FuY2VsbGVyOwogICBlY2hvX2NhbmNlbGxlci5Jbml0aWFsaXplKEF1ZGlvUHJv
Y2Vzc2luZzo6a1NhbXBsZVJhdGUxNmtIeiwgMSwgMSwgMSk7CiAKICAgRVhQRUNUX0VRKDAsIGVj
aG9fY2FuY2VsbGVyLmVuYWJsZV9kcmlmdF9jb21wZW5zYXRpb24odHJ1ZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfYml0X2V4YWN0X3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfYml0X2V4YWN0X3VuaXR0ZXN0LmNjCmluZGV4
IDhiODM2OTI2MGE1NTY1MWRlYzIwZTg5MWQ5NjM5ZTkyYWYxN2I1MWUuLjc4NDRkYWY1MjI1MjY2
YWNmZTBkYmNjNDYxZDljOGVmMGM3ZTBlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2Nv
bnRyb2xfbW9iaWxlX2JpdF9leGFjdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19j
b250cm9sX21vYmlsZV9iaXRfZXhhY3RfdW5pdHRlc3QuY2MKQEAgLTY0LDkgKzY0LDcgQEAgdm9p
ZCBSdW5CaXRleGFjdG5lc3NUZXN0KGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBFY2hvQ29udHJvbE1vYmlsZUltcGw6OlJvdXRpbmdNb2RlIHJvdXRpbmdfbW9k
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbWZvcnRfbm9pc2VfZW5hYmxlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9h
dD4mIG91dHB1dF9yZWZlcmVuY2UpIHsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9yZW5k
ZXI7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfY2FwdHVyZTsKLSAgRWNob0NvbnRyb2xN
b2JpbGVJbXBsIGVjaG9fY29udHJvbF9tb2JpbGUoJmNyaXRfcmVuZGVyLCAmY3JpdF9jYXB0dXJl
KTsKKyAgRWNob0NvbnRyb2xNb2JpbGVJbXBsIGVjaG9fY29udHJvbF9tb2JpbGU7CiAgIFNldHVw
Q29tcG9uZW50KHNhbXBsZV9yYXRlX2h6LCByb3V0aW5nX21vZGUsIGNvbWZvcnRfbm9pc2VfZW5h
YmxlZCwKICAgICAgICAgICAgICAgICAgJmVjaG9fY29udHJvbF9tb2JpbGUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV9pbXBsLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Vj
aG9fY29udHJvbF9tb2JpbGVfaW1wbC5jYwppbmRleCBiZDEyNWM2ZTBkZTA5YTQ1N2ViMjViYTlh
ZGE1OWRkMmUzZTVlYTcxLi5iOWZiZjQyMDUyNzk3ZGZmYWEzZDYzOWUxNjIwMjY4YjA4NTYwODAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV9pbXBsLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9lY2hvX2NvbnRyb2xfbW9iaWxlX2ltcGwuY2MKQEAgLTExLDExICsxMSwxMyBA
QAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NvbnRyb2xfbW9iaWxl
X2ltcGwuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjbS9lY2hvX2NvbnRyb2xfbW9iaWxl
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Np
bmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
b25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIApAQCAtNTUsMTAgKzU3LDYgQEAgQXVkaW9Qcm9jZXNzaW5nOjpFcnJv
ciBNYXBFcnJvcihpbnQgZXJyKSB7CiB9CiB9ICAvLyBuYW1lc3BhY2UKIAotc2l6ZV90IEVjaG9D
b250cm9sTW9iaWxlSW1wbDo6ZWNob19wYXRoX3NpemVfYnl0ZXMoKSB7Ci0gIHJldHVybiBXZWJS
dGNBZWNtX2VjaG9fcGF0aF9zaXplX2J5dGVzKCk7Ci19Ci0KIHN0cnVjdCBFY2hvQ29udHJvbE1v
YmlsZUltcGw6OlN0cmVhbVByb3BlcnRpZXMgewogICBTdHJlYW1Qcm9wZXJ0aWVzKCkgPSBkZWxl
dGU7CiAgIFN0cmVhbVByb3BlcnRpZXMoaW50IHNhbXBsZV9yYXRlX2h6LApAQCAtOTAsMTcgKzg4
LDEwIEBAIGNsYXNzIEVjaG9Db250cm9sTW9iaWxlSW1wbDo6Q2FuY2VsbGVyIHsKICAgICByZXR1
cm4gc3RhdGVfOwogICB9CiAKLSAgdm9pZCBJbml0aWFsaXplKGludCBzYW1wbGVfcmF0ZV9oeiwK
LSAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGV4dGVybmFsX2VjaG9fcGF0aCwKLSAg
ICAgICAgICAgICAgICAgIHNpemVfdCBlY2hvX3BhdGhfc2l6ZV9ieXRlcykgeworICB2b2lkIElu
aXRpYWxpemUoaW50IHNhbXBsZV9yYXRlX2h6KSB7CiAgICAgUlRDX0RDSEVDSyhzdGF0ZV8pOwog
ICAgIGludCBlcnJvciA9IFdlYlJ0Y0FlY21fSW5pdChzdGF0ZV8sIHNhbXBsZV9yYXRlX2h6KTsK
ICAgICBSVENfRENIRUNLX0VRKEF1ZGlvUHJvY2Vzc2luZzo6a05vRXJyb3IsIGVycm9yKTsKLSAg
ICBpZiAoZXh0ZXJuYWxfZWNob19wYXRoICE9IE5VTEwpIHsKLSAgICAgIGVycm9yID0gV2ViUnRj
QWVjbV9Jbml0RWNob1BhdGgoc3RhdGVfLCBleHRlcm5hbF9lY2hvX3BhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG9fcGF0aF9zaXplX2J5dGVzKTsKLSAgICAg
IFJUQ19EQ0hFQ0tfRVEoQXVkaW9Qcm9jZXNzaW5nOjprTm9FcnJvciwgZXJyb3IpOwotICAgIH0K
ICAgfQogCiAgcHJpdmF0ZToKQEAgLTEwOCwyNyArOTksMTMgQEAgY2xhc3MgRWNob0NvbnRyb2xN
b2JpbGVJbXBsOjpDYW5jZWxsZXIgewogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKENh
bmNlbGxlcik7CiB9OwogCi1FY2hvQ29udHJvbE1vYmlsZUltcGw6OkVjaG9Db250cm9sTW9iaWxl
SW1wbChydGM6OkNyaXRpY2FsU2VjdGlvbiogY3JpdF9yZW5kZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNyaXRpY2FsU2VjdGlvbiogY3JpdF9j
YXB0dXJlKQotICAgIDogY3JpdF9yZW5kZXJfKGNyaXRfcmVuZGVyKSwKLSAgICAgIGNyaXRfY2Fw
dHVyZV8oY3JpdF9jYXB0dXJlKSwKLSAgICAgIHJvdXRpbmdfbW9kZV8oa1NwZWFrZXJwaG9uZSks
Ci0gICAgICBjb21mb3J0X25vaXNlX2VuYWJsZWRfKGZhbHNlKSwKLSAgICAgIGV4dGVybmFsX2Vj
aG9fcGF0aF8oTlVMTCkgewotICBSVENfRENIRUNLKGNyaXRfcmVuZGVyKTsKLSAgUlRDX0RDSEVD
Syhjcml0X2NhcHR1cmUpOwotfQorRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpFY2hvQ29udHJvbE1v
YmlsZUltcGwoKQorICAgIDogcm91dGluZ19tb2RlXyhrU3BlYWtlcnBob25lKSwgY29tZm9ydF9u
b2lzZV9lbmFibGVkXyhmYWxzZSkge30KIAotRWNob0NvbnRyb2xNb2JpbGVJbXBsOjp+RWNob0Nv
bnRyb2xNb2JpbGVJbXBsKCkgewotICBpZiAoZXh0ZXJuYWxfZWNob19wYXRoXyAhPSBOVUxMKSB7
Ci0gICAgZGVsZXRlW10gZXh0ZXJuYWxfZWNob19wYXRoXzsKLSAgICBleHRlcm5hbF9lY2hvX3Bh
dGhfID0gTlVMTDsKLSAgfQotfQorRWNob0NvbnRyb2xNb2JpbGVJbXBsOjp+RWNob0NvbnRyb2xN
b2JpbGVJbXBsKCkge30KIAogdm9pZCBFY2hvQ29udHJvbE1vYmlsZUltcGw6OlByb2Nlc3NSZW5k
ZXJBdWRpbygKICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBpbnQxNl90PiBwYWNrZWRfcmVuZGVy
X2F1ZGlvKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9jYXB0dXJlXyk7CiAg
IGlmICghZW5hYmxlZF8pIHsKICAgICByZXR1cm47CiAgIH0KQEAgLTE4MSw3ICsxNTgsNiBAQCBz
aXplX3QgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpOdW1DYW5jZWxsZXJzUmVxdWlyZWQoCiAKIGlu
dCBFY2hvQ29udHJvbE1vYmlsZUltcGw6OlByb2Nlc3NDYXB0dXJlQXVkaW8oQXVkaW9CdWZmZXIq
IGF1ZGlvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc3RyZWFtX2RlbGF5X21zKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9j
YXB0dXJlXyk7CiAgIGlmICghZW5hYmxlZF8pIHsKICAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5n
OjprTm9FcnJvcjsKICAgfQpAQCAtMjI4LDggKzIwNCw2IEBAIGludCBFY2hvQ29udHJvbE1vYmls
ZUltcGw6OlByb2Nlc3NDYXB0dXJlQXVkaW8oQXVkaW9CdWZmZXIqIGF1ZGlvLAogCiBpbnQgRWNo
b0NvbnRyb2xNb2JpbGVJbXBsOjpFbmFibGUoYm9vbCBlbmFibGUpIHsKICAgLy8gRW5zdXJlIEFF
QyBhbmQgQUVDTSBhcmUgbm90IGJvdGggZW5hYmxlZC4KLSAgcnRjOjpDcml0U2NvcGUgY3NfcmVu
ZGVyKGNyaXRfcmVuZGVyXyk7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9jYXB0
dXJlXyk7CiAgIFJUQ19EQ0hFQ0soc3RyZWFtX3Byb3BlcnRpZXNfKTsKIAogICBpZiAoZW5hYmxl
ICYmCkBAIC0yNTIsNyArMjI2LDYgQEAgaW50IEVjaG9Db250cm9sTW9iaWxlSW1wbDo6RW5hYmxl
KGJvb2wgZW5hYmxlKSB7CiB9CiAKIGJvb2wgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjppc19lbmFi
bGVkKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgcmV0
dXJuIGVuYWJsZWRfOwogfQogCkBAIC0yNjAsOTAgKzIzMywyNiBAQCBpbnQgRWNob0NvbnRyb2xN
b2JpbGVJbXBsOjpzZXRfcm91dGluZ19tb2RlKFJvdXRpbmdNb2RlIG1vZGUpIHsKICAgaWYgKE1h
cFNldHRpbmcobW9kZSkgPT0gLTEpIHsKICAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprQmFk
UGFyYW1ldGVyRXJyb3I7CiAgIH0KLQotICB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9j
YXB0dXJlXyk7CiAgICAgcm91dGluZ19tb2RlXyA9IG1vZGU7Ci0gIH0KICAgcmV0dXJuIENvbmZp
Z3VyZSgpOwogfQogCiBFY2hvQ29udHJvbE1vYmlsZUltcGw6OlJvdXRpbmdNb2RlIEVjaG9Db250
cm9sTW9iaWxlSW1wbDo6cm91dGluZ19tb2RlKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBj
cyhjcml0X2NhcHR1cmVfKTsKICAgcmV0dXJuIHJvdXRpbmdfbW9kZV87CiB9CiAKIGludCBFY2hv
Q29udHJvbE1vYmlsZUltcGw6OmVuYWJsZV9jb21mb3J0X25vaXNlKGJvb2wgZW5hYmxlKSB7Ci0g
IHsKLSAgICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgICBjb21mb3J0X25v
aXNlX2VuYWJsZWRfID0gZW5hYmxlOwotICB9CiAgIHJldHVybiBDb25maWd1cmUoKTsKIH0KIAog
Ym9vbCBFY2hvQ29udHJvbE1vYmlsZUltcGw6OmlzX2NvbWZvcnRfbm9pc2VfZW5hYmxlZCgpIGNv
bnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVybiBjb21m
b3J0X25vaXNlX2VuYWJsZWRfOwogfQogCi1pbnQgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpTZXRF
Y2hvUGF0aChjb25zdCB2b2lkKiBlY2hvX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc2l6ZV9ieXRlcykgewotICB7Ci0gICAgcnRjOjpDcml0U2Nv
cGUgY3NfcmVuZGVyKGNyaXRfcmVuZGVyXyk7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3NfY2FwdHVy
ZShjcml0X2NhcHR1cmVfKTsKLSAgICBpZiAoZWNob19wYXRoID09IE5VTEwpIHsKLSAgICAgIHJl
dHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtOdWxsUG9pbnRlckVycm9yOwotICAgIH0KLSAgICBpZiAo
c2l6ZV9ieXRlcyAhPSBlY2hvX3BhdGhfc2l6ZV9ieXRlcygpKSB7Ci0gICAgICAvLyBTaXplIG1p
c21hdGNoCi0gICAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprQmFkUGFyYW1ldGVyRXJyb3I7
Ci0gICAgfQotCi0gICAgaWYgKGV4dGVybmFsX2VjaG9fcGF0aF8gPT0gTlVMTCkgewotICAgICAg
ZXh0ZXJuYWxfZWNob19wYXRoXyA9IG5ldyB1bnNpZ25lZCBjaGFyW3NpemVfYnl0ZXNdOwotICAg
IH0KLSAgICBtZW1jcHkoZXh0ZXJuYWxfZWNob19wYXRoXywgZWNob19wYXRoLCBzaXplX2J5dGVz
KTsKLSAgfQotCi0gIC8vIFRPRE8ocGVhaCk6IFNpbXBsaWZ5IG9uY2UgdGhlIEVuYWJsZSBmdW5j
dGlvbiBoYXMgYmVlbiByZW1vdmVkIGZyb20KLSAgLy8gdGhlIHB1YmxpYyBBUE0gQVBJLgotICBS
VENfRENIRUNLKHN0cmVhbV9wcm9wZXJ0aWVzXyk7Ci0gIEluaXRpYWxpemUoc3RyZWFtX3Byb3Bl
cnRpZXNfLT5zYW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICAgICBzdHJlYW1fcHJvcGVydGllc18t
Pm51bV9yZXZlcnNlX2NoYW5uZWxzLAotICAgICAgICAgICAgIHN0cmVhbV9wcm9wZXJ0aWVzXy0+
bnVtX291dHB1dF9jaGFubmVscyk7Ci0gIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtOb0Vycm9y
OwotfQotCi1pbnQgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpHZXRFY2hvUGF0aCh2b2lkKiBlY2hv
X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZV9ieXRlcykgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKLSAg
aWYgKGVjaG9fcGF0aCA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a051
bGxQb2ludGVyRXJyb3I7Ci0gIH0KLSAgaWYgKHNpemVfYnl0ZXMgIT0gZWNob19wYXRoX3NpemVf
Ynl0ZXMoKSkgewotICAgIC8vIFNpemUgbWlzbWF0Y2gKLSAgICByZXR1cm4gQXVkaW9Qcm9jZXNz
aW5nOjprQmFkUGFyYW1ldGVyRXJyb3I7Ci0gIH0KLSAgaWYgKCFlbmFibGVkXykgewotICAgIHJl
dHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtOb3RFbmFibGVkRXJyb3I7Ci0gIH0KLQotICAvLyBHZXQg
dGhlIGVjaG8gcGF0aCBmcm9tIHRoZSBmaXJzdCBjaGFubmVsCi0gIGludDMyX3QgZXJyID0KLSAg
ICAgIFdlYlJ0Y0FlY21fR2V0RWNob1BhdGgoY2FuY2VsbGVyc19bMF0tPnN0YXRlKCksIGVjaG9f
cGF0aCwgc2l6ZV9ieXRlcyk7Ci0gIGlmIChlcnIgIT0gMCkgewotICAgIHJldHVybiBNYXBFcnJv
cihlcnIpOwotICB9Ci0KLSAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a05vRXJyb3I7Ci19Ci0K
IHZvaWQgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpJbml0aWFsaXplKGludCBzYW1wbGVfcmF0ZV9o
eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1fcmV2
ZXJzZV9jaGFubmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBudW1fb3V0cHV0X2NoYW5uZWxzKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX3JlbmRlcihj
cml0X3JlbmRlcl8pOwotICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKGNyaXRfY2FwdHVyZV8p
OwotCiAgIHN0cmVhbV9wcm9wZXJ0aWVzXy5yZXNldChuZXcgU3RyZWFtUHJvcGVydGllcygKICAg
ICAgIHNhbXBsZV9yYXRlX2h6LCBudW1fcmV2ZXJzZV9jaGFubmVscywgbnVtX291dHB1dF9jaGFu
bmVscykpOwogCkBAIC0zNjMsMTYgKzI3MiwxMiBAQCB2b2lkIEVjaG9Db250cm9sTW9iaWxlSW1w
bDo6SW5pdGlhbGl6ZShpbnQgc2FtcGxlX3JhdGVfaHosCiAgICAgaWYgKCFjYW5jZWxsZXIpIHsK
ICAgICAgIGNhbmNlbGxlci5yZXNldChuZXcgQ2FuY2VsbGVyKCkpOwogICAgIH0KLSAgICBjYW5j
ZWxsZXItPkluaXRpYWxpemUoc2FtcGxlX3JhdGVfaHosIGV4dGVybmFsX2VjaG9fcGF0aF8sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG9fcGF0aF9zaXplX2J5dGVzKCkpOworICAgIGNh
bmNlbGxlci0+SW5pdGlhbGl6ZShzYW1wbGVfcmF0ZV9oeik7CiAgIH0KLQogICBDb25maWd1cmUo
KTsKIH0KIAogaW50IEVjaG9Db250cm9sTW9iaWxlSW1wbDo6Q29uZmlndXJlKCkgewotICBydGM6
OkNyaXRTY29wZSBjc19yZW5kZXIoY3JpdF9yZW5kZXJfKTsKLSAgcnRjOjpDcml0U2NvcGUgY3Nf
Y2FwdHVyZShjcml0X2NhcHR1cmVfKTsKICAgQWVjbUNvbmZpZyBjb25maWc7CiAgIGNvbmZpZy5j
bmdNb2RlID0gY29tZm9ydF9ub2lzZV9lbmFibGVkXzsKICAgY29uZmlnLmVjaG9Nb2RlID0gTWFw
U2V0dGluZyhyb3V0aW5nX21vZGVfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NvbnRy
b2xfbW9iaWxlX2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NvbnRyb2xfbW9iaWxlX2ltcGwuaApp
bmRleCBhNWI2NmM4MzExYjgwNDQ3YTkxZDU1N2E3NDlmZmU3MDI3MjdhYmJiLi5kNWE4YjBiNDQ1
MTU1ZTY1NWU0MmIzNzAyZjFmMzc1MjNmN2EyZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNo
b19jb250cm9sX21vYmlsZV9pbXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2Jp
bGVfaW1wbC5oCkBAIC0xMSwxNCArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0VDSE9fQ09OVFJPTF9NT0JJTEVfSU1QTF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfRUNIT19DT05UUk9MX01PQklMRV9JTVBMX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVk
aW9fcHJvY2Vzc2luZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9yZW5k
ZXJfcXVldWVfaXRlbV92ZXJpZmllci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9zd2FwX3F1ZXVlLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTI4LDggKzI2LDcgQEAgY2xhc3MgQXVkaW9CdWZmZXI7
CiAvLyByb2J1c3Qgb3B0aW9uIGludGVuZGVkIGZvciB1c2Ugb24gbW9iaWxlIGRldmljZXMuCiBj
bGFzcyBFY2hvQ29udHJvbE1vYmlsZUltcGwgewogIHB1YmxpYzoKLSAgRWNob0NvbnRyb2xNb2Jp
bGVJbXBsKHJ0Yzo6Q3JpdGljYWxTZWN0aW9uKiBjcml0X3JlbmRlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uKiBjcml0X2NhcHR1cmUpOworICBFY2hvQ29u
dHJvbE1vYmlsZUltcGwoKTsKIAogICB+RWNob0NvbnRyb2xNb2JpbGVJbXBsKCk7CiAKQEAgLTU3
LDI2ICs1NCw2IEBAIGNsYXNzIEVjaG9Db250cm9sTW9iaWxlSW1wbCB7CiAgIGludCBlbmFibGVf
Y29tZm9ydF9ub2lzZShib29sIGVuYWJsZSk7CiAgIGJvb2wgaXNfY29tZm9ydF9ub2lzZV9lbmFi
bGVkKCkgY29uc3Q7CiAKLSAgLy8gQSB0eXBpY2FsIHVzZSBjYXNlIGlzIHRvIGluaXRpYWxpemUg
dGhlIGNvbXBvbmVudCB3aXRoIGFuIGVjaG8gcGF0aCBmcm9tIGEKLSAgLy8gcHJldmlvdXMgY2Fs
bC4gVGhlIGVjaG8gcGF0aCBpcyByZXRyaWV2ZWQgdXNpbmcgfEdldEVjaG9QYXRoKCl8LCB0eXBp
Y2FsbHkKLSAgLy8gYXQgdGhlIGVuZCBvZiBhIGNhbGwuIFRoZSBkYXRhIGNhbiB0aGVuIGJlIHN0
b3JlZCBmb3IgbGF0ZXIgdXNlIGFzIGFuCi0gIC8vIGluaXRpYWxpemVyIGJlZm9yZSB0aGUgbmV4
dCBjYWxsLCB1c2luZyB8U2V0RWNob1BhdGgoKXwuCi0gIC8vCi0gIC8vIENvbnRyb2xsaW5nIHRo
ZSBlY2hvIHBhdGggdGhpcyB3YXkgcmVxdWlyZXMgdGhlIGRhdGEgfHNpemVfYnl0ZXN8IHRvIG1h
dGNoCi0gIC8vIHRoZSBpbnRlcm5hbCBlY2hvIHBhdGggc2l6ZS4gVGhpcyBzaXplIGNhbiBiZSBh
Y3F1aXJlZCB1c2luZwotICAvLyB8ZWNob19wYXRoX3NpemVfYnl0ZXMoKXwuIHxTZXRFY2hvUGF0
aCgpfCBjYXVzZXMgYW4gZW50aXJlIHJlc2V0LCB3b3J0aAotICAvLyBub3RpbmcgaWYgaXQgaXMg
dG8gYmUgY2FsbGVkIGR1cmluZyBhbiBvbmdvaW5nIGNhbGwuCi0gIC8vCi0gIC8vIEl0IGlzIHBv
c3NpYmxlIHRoYXQgdmVyc2lvbiBpbmNvbXBhdGliaWxpdGllcyBtYXkgcmVzdWx0IGluIGEgc3Rv
cmVkIGVjaG8KLSAgLy8gcGF0aCBvZiB0aGUgaW5jb3JyZWN0IHNpemUuIEluIHRoaXMgY2FzZSwg
dGhlIHN0b3JlZCBwYXRoIHNob3VsZCBiZQotICAvLyBkaXNjYXJkZWQuCi0gIGludCBTZXRFY2hv
UGF0aChjb25zdCB2b2lkKiBlY2hvX3BhdGgsIHNpemVfdCBzaXplX2J5dGVzKTsKLSAgaW50IEdl
dEVjaG9QYXRoKHZvaWQqIGVjaG9fcGF0aCwgc2l6ZV90IHNpemVfYnl0ZXMpIGNvbnN0OwotCi0g
IC8vIFRoZSByZXR1cm5lZCBwYXRoIHNpemUgaXMgZ3VhcmFudGVlZCBub3QgdG8gY2hhbmdlIGZv
ciB0aGUgbGlmZXRpbWUgb2YKLSAgLy8gdGhlIGFwcGxpY2F0aW9uLgotICBzdGF0aWMgc2l6ZV90
IGVjaG9fcGF0aF9zaXplX2J5dGVzKCk7Ci0KICAgdm9pZCBQcm9jZXNzUmVuZGVyQXVkaW8ocnRj
OjpBcnJheVZpZXc8Y29uc3QgaW50MTZfdD4gcGFja2VkX3JlbmRlcl9hdWRpbyk7CiAgIGludCBQ
cm9jZXNzQ2FwdHVyZUF1ZGlvKEF1ZGlvQnVmZmVyKiBhdWRpbywgaW50IHN0cmVhbV9kZWxheV9t
cyk7CiAKQEAgLTk4LDIwICs3NSwxMyBAQCBjbGFzcyBFY2hvQ29udHJvbE1vYmlsZUltcGwgewog
CiAgIGludCBDb25maWd1cmUoKTsKIAotICBydGM6OkNyaXRpY2FsU2VjdGlvbiogY29uc3QgY3Jp
dF9yZW5kZXJfIFJUQ19BQ1FVSVJFRF9CRUZPUkUoY3JpdF9jYXB0dXJlXyk7Ci0gIHJ0Yzo6Q3Jp
dGljYWxTZWN0aW9uKiBjb25zdCBjcml0X2NhcHR1cmVfOwotCiAgIGJvb2wgZW5hYmxlZF8gPSBm
YWxzZTsKIAotICBSb3V0aW5nTW9kZSByb3V0aW5nX21vZGVfIFJUQ19HVUFSREVEX0JZKGNyaXRf
Y2FwdHVyZV8pOwotICBib29sIGNvbWZvcnRfbm9pc2VfZW5hYmxlZF8gUlRDX0dVQVJERURfQlko
Y3JpdF9jYXB0dXJlXyk7Ci0gIHVuc2lnbmVkIGNoYXIqIGV4dGVybmFsX2VjaG9fcGF0aF8gUlRD
X0dVQVJERURfQlkoY3JpdF9yZW5kZXJfKQotICAgICAgUlRDX0dVQVJERURfQlkoY3JpdF9jYXB0
dXJlXyk7CisgIFJvdXRpbmdNb2RlIHJvdXRpbmdfbW9kZV87CisgIGJvb2wgY29tZm9ydF9ub2lz
ZV9lbmFibGVkXzsKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FuY2VsbGVyPj4g
Y2FuY2VsbGVyc187CiAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJlYW1Qcm9wZXJ0aWVzPiBzdHJlYW1f
cHJvcGVydGllc187Ci0KLSAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhFY2hv
Q29udHJvbE1vYmlsZUltcGwpOwogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvZWNob19jb250cm9sX21vYmlsZV91bml0dGVzdC5jYwppbmRleCBkN2U0NzBjYTEyMGY5Y2Fk
ZGE3ZmViODFhMjFmZTQ5NTcwOTA1MzEyLi5mMGU2MDQ4M2Q0MTFhM2U0ZTQzYjVlNWI4OGFhNzYx
NmFiNDM4Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV91bml0dGVzdC5jYwpA
QCAtMTgsOSArMTgsNyBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIFRFU1QoRWNob0NvbnRyb2xN
b2JpbGVUZXN0LCBJbnRlcmZhY2VDb25maWd1cmF0aW9uKSB7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0
aW9uIGNyaXRfcmVuZGVyOwotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X2NhcHR1cmU7Ci0g
IEVjaG9Db250cm9sTW9iaWxlSW1wbCBhZWNtKCZjcml0X3JlbmRlciwgJmNyaXRfY2FwdHVyZSk7
CisgIEVjaG9Db250cm9sTW9iaWxlSW1wbCBhZWNtOwogICBhZWNtLkluaXRpYWxpemUoQXVkaW9Q
cm9jZXNzaW5nOjprU2FtcGxlUmF0ZTE2a0h6LCAyLCAyKTsKIAogICAvLyBUdXJuIEFFQ00gb24K
QEAgLTQ2LDI4ICs0NCw2IEBAIFRFU1QoRWNob0NvbnRyb2xNb2JpbGVUZXN0LCBJbnRlcmZhY2VD
b25maWd1cmF0aW9uKSB7CiAgIEVYUEVDVF9FUSgwLCBhZWNtLmVuYWJsZV9jb21mb3J0X25vaXNl
KHRydWUpKTsKICAgRVhQRUNUX1RSVUUoYWVjbS5pc19jb21mb3J0X25vaXNlX2VuYWJsZWQoKSk7
CiAKLSAgLy8gU2V0IGFuZCBnZXQgZWNobyBwYXRoCi0gIGNvbnN0IHNpemVfdCBlY2hvX3BhdGhf
c2l6ZSA9IGFlY20uZWNob19wYXRoX3NpemVfYnl0ZXMoKTsKLSAgc3RkOjp2ZWN0b3I8dWludDhf
dD4gZWNob19wYXRoX2luKGVjaG9fcGF0aF9zaXplKTsKLSAgc3RkOjp2ZWN0b3I8dWludDhfdD4g
ZWNob19wYXRoX291dChlY2hvX3BhdGhfc2l6ZSk7Ci0gIEVYUEVDVF9FUShBdWRpb1Byb2Nlc3Np
bmc6OmtOdWxsUG9pbnRlckVycm9yLAotICAgICAgICAgICAgYWVjbS5TZXRFY2hvUGF0aChudWxs
cHRyLCBlY2hvX3BhdGhfc2l6ZSkpOwotICBFWFBFQ1RfRVEoQXVkaW9Qcm9jZXNzaW5nOjprTnVs
bFBvaW50ZXJFcnJvciwKLSAgICAgICAgICAgIGFlY20uR2V0RWNob1BhdGgobnVsbHB0ciwgZWNo
b19wYXRoX3NpemUpKTsKLSAgRVhQRUNUX0VRKEF1ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFtZXRl
ckVycm9yLAotICAgICAgICAgICAgYWVjbS5HZXRFY2hvUGF0aChlY2hvX3BhdGhfb3V0LmRhdGEo
KSwgMSkpOwotICBFWFBFQ1RfRVEoMCwgYWVjbS5HZXRFY2hvUGF0aChlY2hvX3BhdGhfb3V0LmRh
dGEoKSwgZWNob19wYXRoX3NpemUpKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlY2hvX3Bh
dGhfc2l6ZTsgaSsrKSB7Ci0gICAgZWNob19wYXRoX2luW2ldID0gZWNob19wYXRoX291dFtpXSAr
IDE7Ci0gIH0KLSAgRVhQRUNUX0VRKEF1ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFtZXRlckVycm9y
LAotICAgICAgICAgICAgYWVjbS5TZXRFY2hvUGF0aChlY2hvX3BhdGhfaW4uZGF0YSgpLCAxKSk7
Ci0gIEVYUEVDVF9FUSgwLCBhZWNtLlNldEVjaG9QYXRoKGVjaG9fcGF0aF9pbi5kYXRhKCksIGVj
aG9fcGF0aF9zaXplKSk7Ci0gIEVYUEVDVF9FUSgwLCBhZWNtLkdldEVjaG9QYXRoKGVjaG9fcGF0
aF9vdXQuZGF0YSgpLCBlY2hvX3BhdGhfc2l6ZSkpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGVjaG9fcGF0aF9zaXplOyBpKyspIHsKLSAgICBFWFBFQ1RfRVEoZWNob19wYXRoX2luW2ldLCBl
Y2hvX3BhdGhfb3V0W2ldKTsKLSAgfQotCiAgIC8vIFR1cm4gQUVDTSBvZmYKICAgRVhQRUNUX0VR
KDAsIGFlY20uRW5hYmxlKGZhbHNlKSk7CiAgIEVYUEVDVF9GQUxTRShhZWNtLmlzX2VuYWJsZWQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19kZXRlY3Rvci9jaXJjdWxhcl9idWZmZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9lY2hvX2RldGVjdG9yL2NpcmN1bGFyX2J1ZmZlci5oCmluZGV4IDlmNWNk
ZmE5NTM2NDM1OWQ2ZDNhZTNkNTZmNjU5MGUxNDM0YjQ1NDguLmM1MjMxMWY4NjNiNDhiNjI3OGZm
MzMwZjE4M2FkZjVkMmRiYmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2RldGVjdG9y
L2NpcmN1bGFyX2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2RldGVjdG9yL2NpcmN1bGFy
X2J1ZmZlci5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19FQ0hPX0RFVEVDVE9SX0NJUkNVTEFSX0JVRkZFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfRUNIT19ERVRFQ1RPUl9DSVJDVUxBUl9CVUZGRVJfSF8KIAorI2luY2x1
ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMv
b3B0aW9uYWwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xfZm9yX2V4cGVy
aW1lbnRhbF9hZ2MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2Zvcl9leHBlcmltZW50YWxf
YWdjLmNjCmluZGV4IDRhYjg1NmMyYzMzZTU3MDk0MGZhZWI5OGMwZjdmMzg4ZDM1OTg0MGUuLjE0
NzlkNThiNTQzMGM5OGJhNzA3ZGMyNjNhMmYyY2Q5YjhiZDExNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9nYWluX2NvbnRyb2xfZm9yX2V4cGVyaW1lbnRhbF9hZ2MuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2dhaW5fY29udHJvbF9mb3JfZXhwZXJpbWVudGFsX2FnYy5jYwpAQCAtMTMsNyArMTMsNiBAQAog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Np
bmcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0
YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9s
X2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2ltcGwuY2MKaW5kZXggNjg1YTI3ZmY2
NjgxMjA5YWIyYTRiODQyYmM3MTJlMmI0OTRkYmI5MC4uZDUxMThiYTA3M2Q5OTQwY2ZjYmFiMzUz
Yzg4Y2VmZWM3MmFkNjg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9pbXBs
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xfaW1wbC5jYwpAQCAtMTAsMTAgKzEwLDE0
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2lt
cGwuaCIKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlv
bmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9sZWdhY3kvZ2Fp
bl9jb250cm9sLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1
ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlv
X3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2lu
Zy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fp
bl9jb250cm9sX2ltcGwuaAppbmRleCA5NTk0MjJmYjQ0YzIwZWExMzkzNzgxNTdkNmExMjFhYzMw
YTY3YjZlLi5jMjFkOTExMzI2MmQ0NzViODNkNTdjYjI5NmUyMjVlOWFmZDc3NDdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9j
b250cm9sX2ltcGwuaApAQCAtMTEsMTQgKzExLDE2IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9f
UFJPQ0VTU0lOR19HQUlOX0NPTlRST0xfSU1QTF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfR0FJTl9DT05UUk9MX0lNUExfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2lu
Y2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAK
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNz
aW5nLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3JlbmRlcl9xdWV1ZV9p
dGVtX3ZlcmlmaWVyLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1
ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2luY2x1ZGUvZ2Fpbl9jb250cm9sLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL3N3YXBfcXVldWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3Rh
dGlvbnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fp
bl9jb250cm9sbGVyMi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyLmNjCmluZGV4IDI5
YWY5NjJlNzQ1ZmI1MDYzMTcyMjI0MWI5ZDk0OTI5OWM3ZjFlN2QuLjJhMzI3NDQ5ZGYyZTE2NDI4
MmJkMDZjMjhkM2NlOTgxMmRmNzYyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRy
b2xsZXIyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyLmNjCkBAIC0xMCw2ICsx
MCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9s
bGVyMi5oIgogCisjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19mcmFtZV92aWV3Lmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVt
cGVyLmgiCkBAIC0yNCw4ICsyNSwxMCBAQCBpbnQgR2FpbkNvbnRyb2xsZXIyOjppbnN0YW5jZV9j
b3VudF8gPSAwOwogR2FpbkNvbnRyb2xsZXIyOjpHYWluQ29udHJvbGxlcjIoKQogICAgIDogZGF0
YV9kdW1wZXJfKAogICAgICAgICAgIG5ldyBBcG1EYXRhRHVtcGVyKHJ0Yzo6QXRvbWljT3BzOjpJ
bmNyZW1lbnQoJmluc3RhbmNlX2NvdW50XykpKSwKLSAgICAgIGZpeGVkX2dhaW5fY29udHJvbGxl
cl8oZGF0YV9kdW1wZXJfLmdldCgpKSwKLSAgICAgIGFkYXB0aXZlX2FnY18oZGF0YV9kdW1wZXJf
LmdldCgpKSB7fQorICAgICAgZ2Fpbl9hcHBsaWVyXygvKmhhcmRfY2xpcF9zYW1wbGVzPSovZmFs
c2UsCisgICAgICAgICAgICAgICAgICAgIC8qaW5pdGlhbF9nYWluX2ZhY3Rvcj0qLzAuZiksCisg
ICAgICBhZGFwdGl2ZV9hZ2NfKG5ldyBBZGFwdGl2ZUFnYyhkYXRhX2R1bXBlcl8uZ2V0KCkpKSwK
KyAgICAgIGxpbWl0ZXJfKHN0YXRpY19jYXN0PHNpemVfdD4oNDgwMDApLCBkYXRhX2R1bXBlcl8u
Z2V0KCksICJBZ2MyIikge30KIAogR2FpbkNvbnRyb2xsZXIyOjp+R2FpbkNvbnRyb2xsZXIyKCkg
PSBkZWZhdWx0OwogCkBAIC0zNCw3ICszNyw3IEBAIHZvaWQgR2FpbkNvbnRyb2xsZXIyOjpJbml0
aWFsaXplKGludCBzYW1wbGVfcmF0ZV9oeikgewogICAgICAgICAgICAgIHNhbXBsZV9yYXRlX2h6
ID09IEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGUxNmtIeiB8fAogICAgICAgICAgICAgIHNh
bXBsZV9yYXRlX2h6ID09IEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGUzMmtIeiB8fAogICAg
ICAgICAgICAgIHNhbXBsZV9yYXRlX2h6ID09IEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGU0
OGtIeik7Ci0gIGZpeGVkX2dhaW5fY29udHJvbGxlcl8uU2V0U2FtcGxlUmF0ZShzYW1wbGVfcmF0
ZV9oeik7CisgIGxpbWl0ZXJfLlNldFNhbXBsZVJhdGUoc2FtcGxlX3JhdGVfaHopOwogICBkYXRh
X2R1bXBlcl8tPkluaXRpYXRlTmV3U2V0T2ZSZWNvcmRpbmdzKCk7CiAgIGRhdGFfZHVtcGVyXy0+
RHVtcFJhdygic2FtcGxlX3JhdGVfaHoiLCBzYW1wbGVfcmF0ZV9oeik7CiB9CkBAIC00MiwzNyAr
NDUsNzEgQEAgdm9pZCBHYWluQ29udHJvbGxlcjI6OkluaXRpYWxpemUoaW50IHNhbXBsZV9yYXRl
X2h6KSB7CiB2b2lkIEdhaW5Db250cm9sbGVyMjo6UHJvY2VzcyhBdWRpb0J1ZmZlciogYXVkaW8p
IHsKICAgQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IGZsb2F0X2ZyYW1lKGF1ZGlvLT5jaGFubmVsc19m
KCksIGF1ZGlvLT5udW1fY2hhbm5lbHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF1ZGlvLT5udW1fZnJhbWVzKCkpOwotICBpZiAoYWRhcHRpdmVfZGlnaXRhbF9tb2Rl
XykgewotICAgIGFkYXB0aXZlX2FnY18uUHJvY2VzcyhmbG9hdF9mcmFtZSwgZml4ZWRfZ2Fpbl9j
b250cm9sbGVyXy5MYXN0QXVkaW9MZXZlbCgpKTsKKyAgLy8gQXBwbHkgZml4ZWQgZ2FpbiBmaXJz
dCwgdGhlbiB0aGUgYWRhcHRpdmUgb25lLgorICBnYWluX2FwcGxpZXJfLkFwcGx5R2FpbihmbG9h
dF9mcmFtZSk7CisgIGlmIChjb25maWdfLmFkYXB0aXZlX2RpZ2l0YWwuZW5hYmxlZCkgeworICAg
IGFkYXB0aXZlX2FnY18tPlByb2Nlc3MoZmxvYXRfZnJhbWUsIGxpbWl0ZXJfLkxhc3RBdWRpb0xl
dmVsKCkpOwogICB9Ci0gIGZpeGVkX2dhaW5fY29udHJvbGxlcl8uUHJvY2VzcyhmbG9hdF9mcmFt
ZSk7CisgIGxpbWl0ZXJfLlByb2Nlc3MoZmxvYXRfZnJhbWUpOwogfQogCiB2b2lkIEdhaW5Db250
cm9sbGVyMjo6Tm90aWZ5QW5hbG9nTGV2ZWwoaW50IGxldmVsKSB7Ci0gIGlmIChhbmFsb2dfbGV2
ZWxfICE9IGxldmVsICYmIGFkYXB0aXZlX2RpZ2l0YWxfbW9kZV8pIHsKLSAgICBhZGFwdGl2ZV9h
Z2NfLlJlc2V0KCk7CisgIGlmIChhbmFsb2dfbGV2ZWxfICE9IGxldmVsICYmIGNvbmZpZ18uYWRh
cHRpdmVfZGlnaXRhbC5lbmFibGVkKSB7CisgICAgYWRhcHRpdmVfYWdjXy0+UmVzZXQoKTsKICAg
fQogICBhbmFsb2dfbGV2ZWxfID0gbGV2ZWw7CiB9CiAKIHZvaWQgR2FpbkNvbnRyb2xsZXIyOjpB
cHBseUNvbmZpZygKICAgICBjb25zdCBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRy
b2xsZXIyJiBjb25maWcpIHsKLSAgUlRDX0RDSEVDSyhWYWxpZGF0ZShjb25maWcpKTsKKyAgUlRD
X0RDSEVDSyhWYWxpZGF0ZShjb25maWcpKQorICAgICAgPDwgIiB0aGUgaW52YWxpZCBjb25maWcg
d2FzICIgPDwgVG9TdHJpbmcoY29uZmlnKTsKKwogICBjb25maWdfID0gY29uZmlnOwotICBmaXhl
ZF9nYWluX2NvbnRyb2xsZXJfLlNldEdhaW4oY29uZmlnXy5maXhlZF9nYWluX2RiKTsKLSAgYWRh
cHRpdmVfZGlnaXRhbF9tb2RlXyA9IGNvbmZpZ18uYWRhcHRpdmVfZGlnaXRhbF9tb2RlOworICBp
ZiAoY29uZmlnLmZpeGVkX2RpZ2l0YWwuZ2Fpbl9kYiAhPSBjb25maWdfLmZpeGVkX2RpZ2l0YWwu
Z2Fpbl9kYikgeworICAgIC8vIFJlc2V0IHRoZSBsaW1pdGVyIHRvIHF1aWNrbHkgcmVhY3Qgb24g
YWJydXB0IGxldmVsIGNoYW5nZXMgY2F1c2VkIGJ5CisgICAgLy8gbGFyZ2UgY2hhbmdlcyBvZiB0
aGUgZml4ZWQgZ2Fpbi4KKyAgICBsaW1pdGVyXy5SZXNldCgpOworICB9CisgIGdhaW5fYXBwbGll
cl8uU2V0R2FpbkZhY3RvcihEYlRvUmF0aW8oY29uZmlnXy5maXhlZF9kaWdpdGFsLmdhaW5fZGIp
KTsKKyAgYWRhcHRpdmVfYWdjXy5yZXNldChuZXcgQWRhcHRpdmVBZ2MoZGF0YV9kdW1wZXJfLmdl
dCgpLCBjb25maWdfKSk7CiB9CiAKIGJvb2wgR2FpbkNvbnRyb2xsZXIyOjpWYWxpZGF0ZSgKICAg
ICBjb25zdCBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIyJiBjb25maWcp
IHsKLSAgcmV0dXJuIGNvbmZpZy5maXhlZF9nYWluX2RiID49IDAuZjsKKyAgcmV0dXJuIGNvbmZp
Zy5maXhlZF9kaWdpdGFsLmdhaW5fZGIgPj0gMC5mICYmCisgICAgICAgICBjb25maWcuZml4ZWRf
ZGlnaXRhbC5nYWluX2RiIDwgNTAuZiAmJgorICAgICAgICAgY29uZmlnLmFkYXB0aXZlX2RpZ2l0
YWwuZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGIgPj0gMC5mICYmCisgICAgICAgICBjb25maWcu
YWRhcHRpdmVfZGlnaXRhbC5leHRyYV9zYXR1cmF0aW9uX21hcmdpbl9kYiA8PSAxMDAuZjsKIH0K
IAogc3RkOjpzdHJpbmcgR2FpbkNvbnRyb2xsZXIyOjpUb1N0cmluZygKICAgICBjb25zdCBBdWRp
b1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIyJiBjb25maWcpIHsKICAgcnRjOjpT
dHJpbmdCdWlsZGVyIHNzOwotICBzcyA8PCAie2VuYWJsZWQ6ICIgPDwgKGNvbmZpZy5lbmFibGVk
ID8gInRydWUiIDogImZhbHNlIikgPDwgIiwgIgotICAgICA8PCAiZml4ZWRfZ2Fpbl9kQjogIiA8
PCBjb25maWcuZml4ZWRfZ2Fpbl9kYiA8PCAifSI7CisgIHN0ZDo6c3RyaW5nIGFkYXB0aXZlX2Rp
Z2l0YWxfbGV2ZWxfZXN0aW1hdG9yOworICB1c2luZyBMZXZlbEVzdGltYXRvclR5cGUgPQorICAg
ICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMjo6TGV2ZWxFc3RpbWF0
b3I7CisgIHN3aXRjaCAoY29uZmlnLmFkYXB0aXZlX2RpZ2l0YWwubGV2ZWxfZXN0aW1hdG9yKSB7
CisgICAgY2FzZSBMZXZlbEVzdGltYXRvclR5cGU6OmtSbXM6CisgICAgICBhZGFwdGl2ZV9kaWdp
dGFsX2xldmVsX2VzdGltYXRvciA9ICJSTVMiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMZXZl
bEVzdGltYXRvclR5cGU6OmtQZWFrOgorICAgICAgYWRhcHRpdmVfZGlnaXRhbF9sZXZlbF9lc3Rp
bWF0b3IgPSAicGVhayI7CisgICAgICBicmVhazsKKyAgfQorICAvLyBjbGFuZy1mb3JtYXQgb2Zm
CisgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGN1c3RvbSBuZXN0ZWQgc3R5
bGUuCisgIHNzIDw8ICJ7IgorICAgICA8PCAiZW5hYmxlZDogIiA8PCAoY29uZmlnLmVuYWJsZWQg
PyAidHJ1ZSIgOiAiZmFsc2UiKSA8PCAiLCAiCisgICAgIDw8ICJmaXhlZF9kaWdpdGFsOiB7Z2Fp
bl9kYjogIiA8PCBjb25maWcuZml4ZWRfZGlnaXRhbC5nYWluX2RiIDw8ICJ9LCAiCisgICAgIDw8
ICJhZGFwdGl2ZV9kaWdpdGFsOiB7IgorICAgICAgPDwgImVuYWJsZWQ6ICIKKyAgICAgICAgPDwg
KGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFsLmVuYWJsZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKSA8PCAi
LCAiCisgICAgICA8PCAibGV2ZWxfZXN0aW1hdG9yOiAiIDw8IGFkYXB0aXZlX2RpZ2l0YWxfbGV2
ZWxfZXN0aW1hdG9yIDw8ICIsICIKKyAgICAgIDw8ICJleHRyYV9zYXR1cmF0aW9uX21hcmdpbl9k
YjoiCisgICAgICAgIDw8IGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFsLmV4dHJhX3NhdHVyYXRpb25f
bWFyZ2luX2RiIDw8ICJ9IgorICAgICAgPDwgIn0iOworICAvLyBjbGFuZy1mb3JtYXQgb24KICAg
cmV0dXJuIHNzLlJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29u
dHJvbGxlcjIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyLmgKaW5kZXggYjQ3MjdkMGU3
Nzc2OTVlNzBmZDI0ZDQ5Y2ViN2FkOGZhNzk3OWE5Yy4uM2ExMTgxMGJiNTlkOTUzOTU2NmQ4Yzc1
ZTEzMDAwZTA5ODExYzhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbGxlcjIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5oCkBAIC0xNSw3ICsxNSw4IEBACiAj
aW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvYWRhcHRpdmVfYWdjLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvZ2Fpbl9hcHBsaWVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvbGltaXRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1
Y3Rvcm1hZ2ljLmgiCiAKQEAgLTQzLDExICs0NCwxMSBAQCBjbGFzcyBHYWluQ29udHJvbGxlcjIg
ewogIHByaXZhdGU6CiAgIHN0YXRpYyBpbnQgaW5zdGFuY2VfY291bnRfOwogICBzdGQ6OnVuaXF1
ZV9wdHI8QXBtRGF0YUR1bXBlcj4gZGF0YV9kdW1wZXJfOwotICBGaXhlZEdhaW5Db250cm9sbGVy
IGZpeGVkX2dhaW5fY29udHJvbGxlcl87CiAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWlu
Q29udHJvbGxlcjIgY29uZmlnXzsKLSAgQWRhcHRpdmVBZ2MgYWRhcHRpdmVfYWdjXzsKKyAgR2Fp
bkFwcGxpZXIgZ2Fpbl9hcHBsaWVyXzsKKyAgc3RkOjp1bmlxdWVfcHRyPEFkYXB0aXZlQWdjPiBh
ZGFwdGl2ZV9hZ2NfOworICBMaW1pdGVyIGxpbWl0ZXJfOwogICBpbnQgYW5hbG9nX2xldmVsXyA9
IC0xOwotICBib29sIGFkYXB0aXZlX2RpZ2l0YWxfbW9kZV8gPSB0cnVlOwogCiAgIFJUQ19ESVNB
TExPV19DT1BZX0FORF9BU1NJR04oR2FpbkNvbnRyb2xsZXIyKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2Nv
bnRyb2xsZXIyX3VuaXR0ZXN0LmNjCmluZGV4IDViZWRjY2Q2NGE4YmVhNzZjY2E3OWEzNjYzYWM1
MDk4MGZkYWY1YzQuLjI3ZDU0MGExOTg4ZTllODk2OWZjZGIwOGM3NWVhMDJiZmNlNGZkNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyX3VuaXR0ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyX3VuaXR0ZXN0LmNjCkBAIC0xMCwyMCArMTAsMjAgQEAK
IAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5o
IgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FnYzIvYWdjMl90ZXN0aW5nX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy90ZXN0L2F1ZGlvX2J1ZmZlcl90b29scy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy90ZXN0L2JpdGV4YWN0bmVzc190b29scy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7Ci0KIG5hbWVzcGFjZSB7CiAKLWNvbnN0ZXhwciBzaXpl
X3Qga0ZyYW1lU2l6ZU1zID0gMTB1OwotY29uc3RleHByIHNpemVfdCBrU3RlcmVvID0gMnU7Ci0K
IHZvaWQgU2V0QXVkaW9CdWZmZXJTYW1wbGVzKGZsb2F0IHZhbHVlLCBBdWRpb0J1ZmZlciogYWIp
IHsKICAgLy8gU2V0cyBhbGwgdGhlIHNhbXBsZXMgaW4gfGFifCB0byB8dmFsdWV8LgogICBmb3Ig
KHNpemVfdCBrID0gMDsgayA8IGFiLT5udW1fY2hhbm5lbHMoKTsgKytrKSB7CkBAIC0zMiw2ICsz
Miw3NSBAQCB2b2lkIFNldEF1ZGlvQnVmZmVyU2FtcGxlcyhmbG9hdCB2YWx1ZSwgQXVkaW9CdWZm
ZXIqIGFiKSB7CiAgIH0KIH0KIAorZmxvYXQgUnVuQWdjMldpdGhDb25zdGFudElucHV0KEdhaW5D
b250cm9sbGVyMiogYWdjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBp
bnB1dF9sZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2Zy
YW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGUpIHsK
KyAgY29uc3QgaW50IG51bV9zYW1wbGVzID0gcnRjOjpDaGVja2VkRGl2RXhhY3Qoc2FtcGxlX3Jh
dGUsIDEwMCk7CisgIEF1ZGlvQnVmZmVyIGFiKG51bV9zYW1wbGVzLCAxLCBudW1fc2FtcGxlcywg
MSwgbnVtX3NhbXBsZXMpOworCisgIC8vIEdpdmUgdGltZSB0byB0aGUgbGV2ZWwgZXN0aW1hdG9y
IHRvIGNvbnZlcmdlLgorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9mcmFtZXMgKyAxOyAr
K2kpIHsKKyAgICBTZXRBdWRpb0J1ZmZlclNhbXBsZXMoaW5wdXRfbGV2ZWwsICZhYik7CisgICAg
YWdjMi0+UHJvY2VzcygmYWIpOworICB9CisKKyAgLy8gUmV0dXJuIHRoZSBsYXN0IHNhbXBsZSBm
cm9tIHRoZSBsYXN0IHByb2Nlc3NlZCBmcmFtZS4KKyAgcmV0dXJuIGFiLmNoYW5uZWxzX2YoKVsw
XVtudW1fc2FtcGxlcyAtIDFdOworfQorCitBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNv
bnRyb2xsZXIyIENyZWF0ZUFnYzJGaXhlZERpZ2l0YWxNb2RlQ29uZmlnKAorICAgIGZsb2F0IGZp
eGVkX2dhaW5fZGIpIHsKKyAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVy
MiBjb25maWc7CisgIGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFsLmVuYWJsZWQgPSBmYWxzZTsKKyAg
Y29uZmlnLmZpeGVkX2RpZ2l0YWwuZ2Fpbl9kYiA9IGZpeGVkX2dhaW5fZGI7CisgIC8vIFRPRE8o
YWxlc3Npb2IpOiBDaGVjayB3aHkgQVNTRVJUX1RSVUUoKSBiZWxvdyBkb2VzIG5vdCBjb21waWxl
LgorICBFWFBFQ1RfVFJVRShHYWluQ29udHJvbGxlcjI6OlZhbGlkYXRlKGNvbmZpZykpOworICBy
ZXR1cm4gY29uZmlnOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8R2FpbkNvbnRyb2xsZXIyPiBDcmVh
dGVBZ2MyRml4ZWREaWdpdGFsTW9kZSgKKyAgICBmbG9hdCBmaXhlZF9nYWluX2RiLAorICAgIHNp
emVfdCBzYW1wbGVfcmF0ZV9oeikgeworICBhdXRvIGFnYzIgPSBhYnNsOjptYWtlX3VuaXF1ZTxH
YWluQ29udHJvbGxlcjI+KCk7CisgIGFnYzItPkFwcGx5Q29uZmlnKENyZWF0ZUFnYzJGaXhlZERp
Z2l0YWxNb2RlQ29uZmlnKGZpeGVkX2dhaW5fZGIpKTsKKyAgYWdjMi0+SW5pdGlhbGl6ZShzYW1w
bGVfcmF0ZV9oeik7CisgIHJldHVybiBhZ2MyOworfQorCitmbG9hdCBHYWluQWZ0ZXJQcm9jZXNz
aW5nRmlsZShHYWluQ29udHJvbGxlcjIqIGdhaW5fY29udHJvbGxlcikgeworICAvLyBTZXQgdXAg
YW4gQXVkaW9CdWZmZXIgdG8gYmUgZmlsbGVkIGZyb20gdGhlIHNwZWVjaCBmaWxlLgorICBjb25z
dGV4cHIgc2l6ZV90IGtTdGVyZW8gPSAydTsKKyAgY29uc3QgU3RyZWFtQ29uZmlnIGNhcHR1cmVf
Y29uZmlnKEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGU0OGtIeiwga1N0ZXJlbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgQXVkaW9CdWZmZXIgYWIo
Y2FwdHVyZV9jb25maWcubnVtX2ZyYW1lcygpLCBjYXB0dXJlX2NvbmZpZy5udW1fY2hhbm5lbHMo
KSwKKyAgICAgICAgICAgICAgICAgY2FwdHVyZV9jb25maWcubnVtX2ZyYW1lcygpLCBjYXB0dXJl
X2NvbmZpZy5udW1fY2hhbm5lbHMoKSwKKyAgICAgICAgICAgICAgICAgY2FwdHVyZV9jb25maWcu
bnVtX2ZyYW1lcygpKTsKKyAgdGVzdDo6SW5wdXRBdWRpb0ZpbGUgY2FwdHVyZV9maWxlKAorICAg
ICAgdGVzdDo6R2V0QXBtQ2FwdHVyZVRlc3RWZWN0b3JGaWxlTmFtZShBdWRpb1Byb2Nlc3Npbmc6
OmtTYW1wbGVSYXRlNDhrSHopKTsKKyAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGNhcHR1cmVfaW5wdXQo
Y2FwdHVyZV9jb25maWcubnVtX2ZyYW1lcygpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FwdHVyZV9jb25maWcubnVtX2NoYW5uZWxzKCkpOworCisgIC8vIFRoZSBmaWxl
IHNob3VsZCBjb250YWluIGF0IGxlYXN0IHRoaXMgbWFueSBmcmFtZXMuIEV2ZXJ5IGl0ZXJhdGlv
biwgd2UgcHV0CisgIC8vIGEgZnJhbWUgdGhyb3VnaCB0aGUgZ2FpbiBjb250cm9sbGVyLgorICBj
b25zdCBpbnQga051bUZyYW1lc1RvUHJvY2VzcyA9IDEwMDsKKyAgZm9yIChpbnQgZnJhbWVfbm8g
PSAwOyBmcmFtZV9ubyA8IGtOdW1GcmFtZXNUb1Byb2Nlc3M7ICsrZnJhbWVfbm8pIHsKKyAgICBS
ZWFkRmxvYXRTYW1wbGVzRnJvbVN0ZXJlb0ZpbGUoY2FwdHVyZV9jb25maWcubnVtX2ZyYW1lcygp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlX2NvbmZpZy5udW1f
Y2hhbm5lbHMoKSwgJmNhcHR1cmVfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FwdHVyZV9pbnB1dCk7CisKKyAgICB0ZXN0OjpDb3B5VmVjdG9yVG9BdWRpb0J1ZmZl
cihjYXB0dXJlX2NvbmZpZywgY2FwdHVyZV9pbnB1dCwgJmFiKTsKKyAgICBnYWluX2NvbnRyb2xs
ZXItPlByb2Nlc3MoJmFiKTsKKyAgfQorCisgIC8vIFNlbmQgaW4gYSBsYXN0IGZyYW1lIHdpdGgg
dmFsdWVzIGNvbnN0YW50IDEgKEl0J3MgbG93IGVub3VnaCB0byBkZXRlY3QgaGlnaAorICAvLyBn
YWluLCBhbmQgZm9yIGVhc2Ugb2YgY29tcHV0YXRpb24pLiBUaGUgYXBwbGllZCBnYWluIGlzIHRo
ZSByZXN1bHQuCisgIGNvbnN0ZXhwciBmbG9hdCBzYW1wbGVfdmFsdWUgPSAxLmY7CisgIFNldEF1
ZGlvQnVmZmVyU2FtcGxlcyhzYW1wbGVfdmFsdWUsICZhYik7CisgIGdhaW5fY29udHJvbGxlci0+
UHJvY2VzcygmYWIpOworICByZXR1cm4gYWIuY2hhbm5lbHNfZigpWzBdWzBdOworfQorCiB9ICAv
LyBuYW1lc3BhY2UKIAogVEVTVChHYWluQ29udHJvbGxlcjIsIENyZWF0ZUFwcGx5Q29uZmlnKSB7
CkBAIC00NCw0NyArMTEzLDE3MyBAQCBURVNUKEdhaW5Db250cm9sbGVyMiwgQ3JlYXRlQXBwbHlD
b25maWcpIHsKICAgZ2Fpbl9jb250cm9sbGVyMi0+QXBwbHlDb25maWcoY29uZmlnKTsKIAogICAv
LyBDaGVjayB0aGF0IGF0dGVudWF0aW9uIGlzIG5vdCBhbGxvd2VkLgotICBjb25maWcuZml4ZWRf
Z2Fpbl9kYiA9IC01LmY7CisgIGNvbmZpZy5maXhlZF9kaWdpdGFsLmdhaW5fZGIgPSAtNS5mOwog
ICBFWFBFQ1RfRkFMU0UoR2FpbkNvbnRyb2xsZXIyOjpWYWxpZGF0ZShjb25maWcpKTsKIAogICAv
LyBDaGVjayB0aGF0IHZhbGlkIGNvbmZpZ3VyYXRpb25zIGFyZSBhcHBsaWVkLgotICBmb3IgKGNv
bnN0IGZsb2F0JiBmaXhlZF9nYWluX2RiIDogezAuZiwgNS5mLCAxMC5mLCA1MC5mfSkgewotICAg
IGNvbmZpZy5maXhlZF9nYWluX2RiID0gZml4ZWRfZ2Fpbl9kYjsKKyAgZm9yIChjb25zdCBmbG9h
dCYgZml4ZWRfZ2Fpbl9kYiA6IHswLmYsIDUuZiwgMTAuZiwgNDAuZn0pIHsKKyAgICBjb25maWcu
Zml4ZWRfZGlnaXRhbC5nYWluX2RiID0gZml4ZWRfZ2Fpbl9kYjsKICAgICBFWFBFQ1RfVFJVRShH
YWluQ29udHJvbGxlcjI6OlZhbGlkYXRlKGNvbmZpZykpOwogICAgIGdhaW5fY29udHJvbGxlcjIt
PkFwcGx5Q29uZmlnKGNvbmZpZyk7CiAgIH0KIH0KIAogVEVTVChHYWluQ29udHJvbGxlcjIsIFRv
U3RyaW5nKSB7Ci0gIC8vIFRlc3RzIEdhaW5Db250cm9sbGVyMjo6VG9TdHJpbmcoKS4KKyAgLy8g
VGVzdHMgR2FpbkNvbnRyb2xsZXIyOjpUb1N0cmluZygpLiBPbmx5IHRlc3QgdGhlIGVuYWJsZWQg
cHJvcGVydHkuCiAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjIgY29u
ZmlnOwotICBjb25maWcuZml4ZWRfZ2Fpbl9kYiA9IDUuZjsKIAogICBjb25maWcuZW5hYmxlZCA9
IGZhbHNlOwotICBFWFBFQ1RfRVEoIntlbmFibGVkOiBmYWxzZSwgZml4ZWRfZ2Fpbl9kQjogNX0i
LAotICAgICAgICAgICAgR2FpbkNvbnRyb2xsZXIyOjpUb1N0cmluZyhjb25maWcpKTsKKyAgRVhQ
RUNUX0VRKCJ7ZW5hYmxlZDogZmFsc2UiLCBHYWluQ29udHJvbGxlcjI6OlRvU3RyaW5nKGNvbmZp
Zykuc3Vic3RyKDAsIDE1KSk7CiAKICAgY29uZmlnLmVuYWJsZWQgPSB0cnVlOwotICBFWFBFQ1Rf
RVEoIntlbmFibGVkOiB0cnVlLCBmaXhlZF9nYWluX2RCOiA1fSIsCi0gICAgICAgICAgICBHYWlu
Q29udHJvbGxlcjI6OlRvU3RyaW5nKGNvbmZpZykpOworICBFWFBFQ1RfRVEoIntlbmFibGVkOiB0
cnVlIiwgR2FpbkNvbnRyb2xsZXIyOjpUb1N0cmluZyhjb25maWcpLnN1YnN0cigwLCAxNCkpOwog
fQogCi1URVNUKEdhaW5Db250cm9sbGVyMiwgVXNhZ2UpIHsKLSAgLy8gVGVzdHMgR2FpbkNvbnRy
b2xsZXIyOjpQcm9jZXNzKCkgb24gYW4gQXVkaW9CdWZmZXIgaW5zdGFuY2UuCi0gIHN0ZDo6dW5p
cXVlX3B0cjxHYWluQ29udHJvbGxlcjI+IGdhaW5fY29udHJvbGxlcjIobmV3IEdhaW5Db250cm9s
bGVyMigpKTsKLSAgZ2Fpbl9jb250cm9sbGVyMi0+SW5pdGlhbGl6ZShBdWRpb1Byb2Nlc3Npbmc6
OmtTYW1wbGVSYXRlNDhrSHopOwotICBjb25zdCBzaXplX3QgbnVtX2ZyYW1lcyA9IHJ0Yzo6Q2hl
Y2tlZERpdkV4YWN0PHNpemVfdD4oCi0gICAgICBrRnJhbWVTaXplTXMgKiBBdWRpb1Byb2Nlc3Np
bmc6OmtTYW1wbGVSYXRlNDhrSHosIDEwMDApOwotICBBdWRpb0J1ZmZlciBhYihudW1fZnJhbWVz
LCBrU3RlcmVvLCBudW1fZnJhbWVzLCBrU3RlcmVvLCBudW1fZnJhbWVzKTsKLSAgY29uc3RleHBy
IGZsb2F0IHNhbXBsZV92YWx1ZSA9IDEwMDAuZjsKLSAgU2V0QXVkaW9CdWZmZXJTYW1wbGVzKHNh
bXBsZV92YWx1ZSwgJmFiKTsKK1RFU1QoR2FpbkNvbnRyb2xsZXIyRml4ZWREaWdpdGFsLCBHYWlu
U2hvdWxkQ2hhbmdlT25TZXRHYWluKSB7CisgIGNvbnN0ZXhwciBmbG9hdCBrSW5wdXRMZXZlbCA9
IDEwMDAuZjsKKyAgY29uc3RleHByIHNpemVfdCBrTnVtRnJhbWVzID0gNTsKKyAgY29uc3RleHBy
IHNpemVfdCBrU2FtcGxlUmF0ZUh6ID0gODAwMDsKKyAgY29uc3RleHByIGZsb2F0IGtHYWluMERi
ID0gMC5mOworICBjb25zdGV4cHIgZmxvYXQga0dhaW4yMERiID0gMjAuZjsKKworICBhdXRvIGFn
YzJfZml4ZWQgPSBDcmVhdGVBZ2MyRml4ZWREaWdpdGFsTW9kZShrR2FpbjBEYiwga1NhbXBsZVJh
dGVIeik7CisKKyAgLy8gU2lnbmFsIGxldmVsIGlzIHVuY2hhbmdlZCB3aXRoIDAgZGIgZ2Fpbi4K
KyAgRVhQRUNUX0ZMT0FUX0VRKFJ1bkFnYzJXaXRoQ29uc3RhbnRJbnB1dChhZ2MyX2ZpeGVkLmdl
dCgpLCBrSW5wdXRMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0ZUh6KSwKKyAgICAgICAgICAgICAgICAgIGtJbnB1
dExldmVsKTsKKworICAvLyArMjAgZGIgc2hvdWxkIGluY3JlYXNlIHNpZ25hbCBieSBhIGZhY3Rv
ciBvZiAxMC4KKyAgYWdjMl9maXhlZC0+QXBwbHlDb25maWcoQ3JlYXRlQWdjMkZpeGVkRGlnaXRh
bE1vZGVDb25maWcoa0dhaW4yMERiKSk7CisgIEVYUEVDVF9GTE9BVF9FUShSdW5BZ2MyV2l0aENv
bnN0YW50SW5wdXQoYWdjMl9maXhlZC5nZXQoKSwga0lucHV0TGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga051bUZyYW1lcywga1NhbXBsZVJhdGVIeiks
CisgICAgICAgICAgICAgICAgICBrSW5wdXRMZXZlbCAqIDEwKTsKK30KKworVEVTVChHYWluQ29u
dHJvbGxlcjJGaXhlZERpZ2l0YWwsIENoYW5nZUZpeGVkR2FpblNob3VsZEJlRmFzdEFuZFRpbWVJ
bnZhcmlhbnQpIHsKKyAgLy8gTnVtYmVyIG9mIGZyYW1lcyByZXF1aXJlZCBmb3IgdGhlIGZpeGVk
IGdhaW4gY29udHJvbGxlciB0byBhZGFwdCBvbiB0aGUKKyAgLy8gaW5wdXQgc2lnbmFsIHdoZW4g
dGhlIGdhaW4gY2hhbmdlcy4KKyAgY29uc3RleHByIHNpemVfdCBrTnVtRnJhbWVzID0gNTsKKwor
ICBjb25zdGV4cHIgZmxvYXQga0lucHV0TGV2ZWwgPSAxMDAwLmY7CisgIGNvbnN0ZXhwciBzaXpl
X3Qga1NhbXBsZVJhdGVIeiA9IDgwMDA7CisgIGNvbnN0ZXhwciBmbG9hdCBrR2FpbkRiTG93ID0g
MC5mOworICBjb25zdGV4cHIgZmxvYXQga0dhaW5EYkhpZ2ggPSAyNS5mOworICBzdGF0aWNfYXNz
ZXJ0KGtHYWluRGJMb3cgPCBrR2FpbkRiSGlnaCwgIiIpOworCisgIGF1dG8gYWdjMl9maXhlZCA9
IENyZWF0ZUFnYzJGaXhlZERpZ2l0YWxNb2RlKGtHYWluRGJMb3csIGtTYW1wbGVSYXRlSHopOwor
CisgIC8vIFN0YXJ0IHdpdGggYSBsb3dlciBnYWluLgorICBjb25zdCBmbG9hdCBvdXRwdXRfbGV2
ZWxfcHJlID0gUnVuQWdjMldpdGhDb25zdGFudElucHV0KAorICAgICAgYWdjMl9maXhlZC5nZXQo
KSwga0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtTYW1wbGVSYXRlSHopOworCisgIC8vIEluY3Jl
YXNlIGdhaW4uCisgIGFnYzJfZml4ZWQtPkFwcGx5Q29uZmlnKENyZWF0ZUFnYzJGaXhlZERpZ2l0
YWxNb2RlQ29uZmlnKGtHYWluRGJIaWdoKSk7CisgIHN0YXRpY19jYXN0PHZvaWQ+KFJ1bkFnYzJX
aXRoQ29uc3RhbnRJbnB1dChhZ2MyX2ZpeGVkLmdldCgpLCBrSW5wdXRMZXZlbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtOdW1GcmFtZXMsIGtTYW1wbGVS
YXRlSHopKTsKKworICAvLyBCYWNrIHRvIHRoZSBsb3dlciBnYWluLgorICBhZ2MyX2ZpeGVkLT5B
cHBseUNvbmZpZyhDcmVhdGVBZ2MyRml4ZWREaWdpdGFsTW9kZUNvbmZpZyhrR2FpbkRiTG93KSk7
CisgIGNvbnN0IGZsb2F0IG91dHB1dF9sZXZlbF9wb3N0ID0gUnVuQWdjMldpdGhDb25zdGFudElu
cHV0KAorICAgICAgYWdjMl9maXhlZC5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtT
YW1wbGVSYXRlSHopOworCisgIEVYUEVDVF9FUShvdXRwdXRfbGV2ZWxfcHJlLCBvdXRwdXRfbGV2
ZWxfcG9zdCk7Cit9CisKK3N0cnVjdCBGaXhlZERpZ2l0YWxUZXN0UGFyYW1zIHsKKyAgRml4ZWRE
aWdpdGFsVGVzdFBhcmFtcyhmbG9hdCBnYWluX2RiX21pbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCBnYWluX2RiX21heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
c2FtcGxlX3JhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYXR1cmF0aW9uX2V4
cGVjdGVkKQorICAgICAgOiBnYWluX2RiX21pbihnYWluX2RiX21pbiksCisgICAgICAgIGdhaW5f
ZGJfbWF4KGdhaW5fZGJfbWF4KSwKKyAgICAgICAgc2FtcGxlX3JhdGUoc2FtcGxlX3JhdGUpLAor
ICAgICAgICBzYXR1cmF0aW9uX2V4cGVjdGVkKHNhdHVyYXRpb25fZXhwZWN0ZWQpIHt9CisgIGZs
b2F0IGdhaW5fZGJfbWluOworICBmbG9hdCBnYWluX2RiX21heDsKKyAgc2l6ZV90IHNhbXBsZV9y
YXRlOworICBib29sIHNhdHVyYXRpb25fZXhwZWN0ZWQ7Cit9OworCitjbGFzcyBGaXhlZERpZ2l0
YWxUZXN0CisgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKKyAgICAgIHB1YmxpYyB0ZXN0aW5n
OjpXaXRoUGFyYW1JbnRlcmZhY2U8Rml4ZWREaWdpdGFsVGVzdFBhcmFtcz4ge307CisKK1RFU1Rf
UChGaXhlZERpZ2l0YWxUZXN0LCBDaGVja1NhdHVyYXRpb25CZWhhdmlvcldpdGhMaW1pdGVyKSB7
CisgIGNvbnN0IGZsb2F0IGtJbnB1dExldmVsID0gMzI3NjcuZjsKKyAgY29uc3Qgc2l6ZV90IGtO
dW1GcmFtZXMgPSA1OworCisgIGNvbnN0IGF1dG8gcGFyYW1zID0gR2V0UGFyYW0oKTsKKworICBj
b25zdCBhdXRvIGdhaW5zX2RiID0KKyAgICAgIHRlc3Q6OkxpblNwYWNlKHBhcmFtcy5nYWluX2Ri
X21pbiwgcGFyYW1zLmdhaW5fZGJfbWF4LCAxMCk7CisgIGZvciAoY29uc3QgYXV0byBnYWluX2Ri
IDogZ2FpbnNfZGIpIHsKKyAgICBTQ09QRURfVFJBQ0Uoc3RkOjp0b19zdHJpbmcoZ2Fpbl9kYikp
OworICAgIGF1dG8gYWdjMl9maXhlZCA9IENyZWF0ZUFnYzJGaXhlZERpZ2l0YWxNb2RlKGdhaW5f
ZGIsIHBhcmFtcy5zYW1wbGVfcmF0ZSk7CisgICAgY29uc3QgZmxvYXQgcHJvY2Vzc2VkX3NhbXBs
ZSA9IFJ1bkFnYzJXaXRoQ29uc3RhbnRJbnB1dCgKKyAgICAgICAgYWdjMl9maXhlZC5nZXQoKSwg
a0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIHBhcmFtcy5zYW1wbGVfcmF0ZSk7CisgICAgaWYgKHBh
cmFtcy5zYXR1cmF0aW9uX2V4cGVjdGVkKSB7CisgICAgICBFWFBFQ1RfRkxPQVRfRVEocHJvY2Vz
c2VkX3NhbXBsZSwgMzI3NjcuZik7CisgICAgfSBlbHNlIHsKKyAgICAgIEVYUEVDVF9MVChwcm9j
ZXNzZWRfc2FtcGxlLCAzMjc2Ny5mKTsKKyAgICB9CisgIH0KK30KKworc3RhdGljX2Fzc2VydCh0
ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzIDwgMTAsICIiKTsKK0lOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKAorICAgIEdhaW5Db250cm9sbGVyMiwKKyAgICBGaXhlZERpZ2l0YWxUZXN0LAor
ICAgIDo6dGVzdGluZzo6VmFsdWVzKAorICAgICAgICAvLyBXaGVuIGdhaW4gPCB8dGVzdDo6a0xp
bWl0ZXJNYXhJbnB1dExldmVsRGJGc3wsIHRoZSBsaW1pdGVyIHdpbGwgbm90CisgICAgICAgIC8v
IHNhdHVyYXRlIHRoZSBzaWduYWwgKGF0IGFueSBzYW1wbGUgcmF0ZSkuCisgICAgICAgIEZpeGVk
RGlnaXRhbFRlc3RQYXJhbXMoMC4xZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzIC0gMC4wMWYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgODAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxz
ZSksCisgICAgICAgIEZpeGVkRGlnaXRhbFRlc3RQYXJhbXMoMC4xLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnMgLSAwLjAxZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ODAwMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmYWxzZSksCisgICAgICAgIC8vIFdoZW4gZ2FpbiA+IHx0ZXN0OjprTGlt
aXRlck1heElucHV0TGV2ZWxEYkZzfCwgdGhlIGxpbWl0ZXIgd2lsbAorICAgICAgICAvLyBzYXR1
cmF0ZSB0aGUgc2lnbmFsIChhdCBhbnkgc2FtcGxlIHJhdGUpLgorICAgICAgICBGaXhlZERpZ2l0
YWxUZXN0UGFyYW1zKHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnMgKyAwLjAxZiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC5mLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDgwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSksCisg
ICAgICAgIEZpeGVkRGlnaXRhbFRlc3RQYXJhbXModGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVs
RGJGcyArIDAuMDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLmYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDgwMDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ1ZSkpKTsKKworVEVTVChHYWluQ29udHJvbGxlcjIsIFVzYWdlU2F0dXJhdGlv
bk1hcmdpbikgeworICBHYWluQ29udHJvbGxlcjIgZ2Fpbl9jb250cm9sbGVyMjsKKyAgZ2Fpbl9j
b250cm9sbGVyMi5Jbml0aWFsaXplKEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBsZVJhdGU0OGtIeik7
CisKICAgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMiBjb25maWc7Cisg
IC8vIENoZWNrIHRoYXQgc2FtcGxlcyBhcmUgbm90IGFtcGxpZmllZCBhcyBtdWNoIHdoZW4gZXh0
cmEgbWFyZ2luIGlzCisgIC8vIGhpZ2guIFRoZXkgc2hvdWxkIG5vdCBiZSBhbXBsaWZpZWQgYXQg
YWxsLCBidXQgb25seSBhZnRlciBjb252ZXJnZW5jZS4gR0MyCisgIC8vIHN0YXJ0cyB3aXRoIGEg
Z2FpbiwgYW5kIGl0IHRha2VzIHRpbWUgdW50aWwgaXQncyBkb3duIHRvIDAgZEIuCisgIGNvbmZp
Zy5maXhlZF9kaWdpdGFsLmdhaW5fZGIgPSAwLmY7CisgIGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFs
LmVuYWJsZWQgPSB0cnVlOworICBjb25maWcuYWRhcHRpdmVfZGlnaXRhbC5leHRyYV9zYXR1cmF0
aW9uX21hcmdpbl9kYiA9IDUwLmY7CisgIGdhaW5fY29udHJvbGxlcjIuQXBwbHlDb25maWcoY29u
ZmlnKTsKIAotICAvLyBDaGVjayB0aGF0IHNhbXBsZXMgYXJlIGFtcGxpZmllZCB3aGVuIHRoZSBm
aXhlZCBnYWluIGlzIGdyZWF0ZXIgdGhhbiAwIGRCLgotICBjb25maWcuZml4ZWRfZ2Fpbl9kYiA9
IDUuZjsKLSAgZ2Fpbl9jb250cm9sbGVyMi0+QXBwbHlDb25maWcoY29uZmlnKTsKLSAgZ2Fpbl9j
b250cm9sbGVyMi0+UHJvY2VzcygmYWIpOwotICBFWFBFQ1RfTFQoc2FtcGxlX3ZhbHVlLCBhYi5j
aGFubmVsc19mKClbMF1bMF0pOworICBFWFBFQ1RfTFQoR2FpbkFmdGVyUHJvY2Vzc2luZ0ZpbGUo
JmdhaW5fY29udHJvbGxlcjIpLCAyLmYpOworfQorCitURVNUKEdhaW5Db250cm9sbGVyMiwgVXNh
Z2VOb1NhdHVyYXRpb25NYXJnaW4pIHsKKyAgR2FpbkNvbnRyb2xsZXIyIGdhaW5fY29udHJvbGxl
cjI7CisgIGdhaW5fY29udHJvbGxlcjIuSW5pdGlhbGl6ZShBdWRpb1Byb2Nlc3Npbmc6OmtTYW1w
bGVSYXRlNDhrSHopOworCisgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxl
cjIgY29uZmlnOworICAvLyBDaGVjayB0aGF0IHNvbWUgZ2FpbiBpcyBhcHBsaWVkIGlmIHRoZXJl
IGlzIG5vIG1hcmdpbi4KKyAgY29uZmlnLmZpeGVkX2RpZ2l0YWwuZ2Fpbl9kYiA9IDAuZjsKKyAg
Y29uZmlnLmFkYXB0aXZlX2RpZ2l0YWwuZW5hYmxlZCA9IHRydWU7CisgIGNvbmZpZy5hZGFwdGl2
ZV9kaWdpdGFsLmV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2RiID0gMC5mOworICBnYWluX2NvbnRy
b2xsZXIyLkFwcGx5Q29uZmlnKGNvbmZpZyk7CisKKyAgRVhQRUNUX0dUKEdhaW5BZnRlclByb2Nl
c3NpbmdGaWxlKCZnYWluX2NvbnRyb2xsZXIyKSwgMi5mKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
IHRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvaW5jbHVkZS9hZWNfZHVtcC5oCmluZGV4IDMxM2U5ZDdiMWRlMGI2MmUxYWJiNmNhMjU0ZGVk
MDQxNGNmYThiNzIuLmI3MzRhZGZiYmJiMzZhNzc3ZTNlYzliNmJiOTlmNDUwNWZkY2YyMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2lu
Y2x1ZGUvYWVjX2R1bXAuaApAQCAtMTEsMTQgKzExLDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19JTkNMVURFX0FFQ19EVU1QX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9f
UFJPQ0VTU0lOR19JTkNMVURFX0FFQ19EVU1QX0hfCiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KIAot
I2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2Zy
YW1lLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9f
ZnJhbWVfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRl
L2F1ZGlvX3Byb2Nlc3NpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVk
aW9fcHJvY2Vzc2luZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuY2MK
aW5kZXggNzVlZWRhZmMyOTIzODdmMmU5OTE1ZjMxOGQwMDJlYzE1MjBhZmU5Ny4uMjdjZDg4MjRm
ZWMzMDVjNWIzMWY1YTMzNWVmOGQ2M2U2YWYzMmU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2lu
Y2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19w
cm9jZXNzaW5nLmNjCkBAIC0xMCw4ICsxMCw2IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAKLSNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIHZvaWQgQ3VzdG9tUHJvY2Vz
c2luZzo6U2V0UnVudGltZVNldHRpbmcoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9h
dWRpb19wcm9jZXNzaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgK
aW5kZXggMjY4ODBlMzc3NjAyNjRkZGFhYzk0MDRlZTgwZTc0NzllYzEyNjM0ZC4uZGY1MTMxMzIy
OWRhMjhjMTM5MTg3OGFjMzlhOGU5NDM0M2FiMTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2lu
Y2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3By
b2Nlc3NpbmcuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3Jt
X2ZpbGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBv
cnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTQ4LDcgKzQ5LDYgQEAgY2xhc3MgUHJv
Y2Vzc2luZ0NvbmZpZzsKIAogY2xhc3MgRWNob0RldGVjdG9yOwogY2xhc3MgR2FpbkNvbnRyb2w7
Ci1jbGFzcyBIaWdoUGFzc0ZpbHRlcjsKIGNsYXNzIExldmVsRXN0aW1hdG9yOwogY2xhc3MgTm9p
c2VTdXBwcmVzc2lvbjsKIGNsYXNzIEN1c3RvbUF1ZGlvQW5hbHl6ZXI7CkBAIC0yNDAsNyArMjQw
LDYgQEAgY2xhc3MgQXVkaW9Qcm9jZXNzaW5nIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZh
Y2UgewogICAvLyBieSBjaGFuZ2luZyB0aGUgZGVmYXVsdCB2YWx1ZXMgaW4gdGhlIEF1ZGlvUHJv
Y2Vzc2luZzo6Q29uZmlnIHN0cnVjdC4KICAgLy8gVGhlIGNvbmZpZyBpcyBhcHBsaWVkIGJ5IHBh
c3NpbmcgdGhlIHN0cnVjdCB0byB0aGUgQXBwbHlDb25maWcgbWV0aG9kLgogICBzdHJ1Y3QgQ29u
ZmlnIHsKLSAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NTM1KTogQ3VycmVudGx5IHVudXNl
ZC4gVXNlIHRoaXMgdG8gZGV0ZXJtaW5lIEFFQy4KICAgICBzdHJ1Y3QgRWNob0NhbmNlbGxlciB7
CiAgICAgICBib29sIGVuYWJsZWQgPSBmYWxzZTsKICAgICAgIGJvb2wgbW9iaWxlX21vZGUgPSBm
YWxzZTsKQEAgLTI3MSwxMSArMjcwLDI0IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc2luZyA6IHB1Ymxp
YyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICAgICAvLyBmaXJzdCBhcHBsaWVzIGEgZml4ZWQg
Z2Fpbi4gVGhlIGFkYXB0aXZlIGRpZ2l0YWwgQUdDIGNhbiBiZSB0dXJuZWQgb2ZmIGJ5CiAgICAg
Ly8gc2V0dGluZyB8YWRhcHRpdmVfZGlnaXRhbF9tb2RlPWZhbHNlfC4KICAgICBzdHJ1Y3QgR2Fp
bkNvbnRyb2xsZXIyIHsKKyAgICAgIGVudW0gTGV2ZWxFc3RpbWF0b3IgeyBrUm1zLCBrUGVhayB9
OwogICAgICAgYm9vbCBlbmFibGVkID0gZmFsc2U7Ci0gICAgICBib29sIGFkYXB0aXZlX2RpZ2l0
YWxfbW9kZSA9IHRydWU7Ci0gICAgICBmbG9hdCBmaXhlZF9nYWluX2RiID0gMC5mOworICAgICAg
c3RydWN0IHsKKyAgICAgICAgZmxvYXQgZ2Fpbl9kYiA9IDAuZjsKKyAgICAgIH0gZml4ZWRfZGln
aXRhbDsKKyAgICAgIHN0cnVjdCB7CisgICAgICAgIGJvb2wgZW5hYmxlZCA9IGZhbHNlOworICAg
ICAgICBMZXZlbEVzdGltYXRvciBsZXZlbF9lc3RpbWF0b3IgPSBrUm1zOworICAgICAgICBib29s
IHVzZV9zYXR1cmF0aW9uX3Byb3RlY3RvciA9IHRydWU7CisgICAgICAgIGZsb2F0IGV4dHJhX3Nh
dHVyYXRpb25fbWFyZ2luX2RiID0gMi5mOworICAgICAgfSBhZGFwdGl2ZV9kaWdpdGFsOwogICAg
IH0gZ2Fpbl9jb250cm9sbGVyMjsKIAorICAgIC8vIEVuYWJsZXMgcmVwb3J0aW5nIG9mIHxvdXRw
dXRfcm1zX2RiZnN8IGluIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nU3RhdHMuCisgICAgc3RydWN0
IExldmVsRXN0aW1hdGlvbiB7CisgICAgICBib29sIGVuYWJsZWQgPSBmYWxzZTsKKyAgICB9IGxl
dmVsX2VzdGltYXRpb247CisKICAgICAvLyBFeHBsaWNpdCBjb3B5IGFzc2lnbm1lbnQgaW1wbGVt
ZW50YXRpb24gdG8gYXZvaWQgaXNzdWVzIHdpdGggbWVtb3J5CiAgICAgLy8gc2FuaXRpemVyIGNv
bXBsYWludHMgaW4gY2FzZSBvZiBzZWxmLWFzc2lnbm1lbnQuCiAgICAgLy8gVE9ETyhwZWFoKTog
QWRkIGJ1aWxkZmxhZyB0byBlbnN1cmUgdGhhdCB0aGlzIGlzIG9ubHkgaW5jbHVkZWQgZm9yIG1l
bW9yeQpAQCAtNTIwLDg1ICs1MzIsMTcgQEAgY2xhc3MgQXVkaW9Qcm9jZXNzaW5nIDogcHVibGlj
IHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICAvLyBzcGVjaWZpYyBtZW1iZXIgdmFyaWFibGVz
IGFyZSByZXNldC4KICAgdmlydHVhbCB2b2lkIFVwZGF0ZUhpc3RvZ3JhbXNPbkNhbGxFbmQoKSA9
IDA7CiAKLSAgLy8gVE9ETyhpdm9jKTogUmVtb3ZlIHdoZW4gdGhlIGNhbGxpbmcgY29kZSBubyBs
b25nZXIgdXNlcyB0aGUgb2xkIFN0YXRpc3RpY3MKLSAgLy8gICAgICAgICAgICAgQVBJLgotICBz
dHJ1Y3QgU3RhdGlzdGljIHsKLSAgICBpbnQgaW5zdGFudCA9IDA7ICAvLyBJbnN0YW50YW5lb3Vz
IHZhbHVlLgotICAgIGludCBhdmVyYWdlID0gMDsgIC8vIExvbmctdGVybSBhdmVyYWdlLgotICAg
IGludCBtYXhpbXVtID0gMDsgIC8vIExvbmctdGVybSBtYXhpbXVtLgotICAgIGludCBtaW5pbXVt
ID0gMDsgIC8vIExvbmctdGVybSBtaW5pbXVtLgotICB9OwotCi0gIHN0cnVjdCBTdGF0IHsKLSAg
ICB2b2lkIFNldChjb25zdCBTdGF0aXN0aWMmIG90aGVyKSB7Ci0gICAgICBTZXQob3RoZXIuaW5z
dGFudCwgb3RoZXIuYXZlcmFnZSwgb3RoZXIubWF4aW11bSwgb3RoZXIubWluaW11bSk7Ci0gICAg
fQotICAgIHZvaWQgU2V0KGZsb2F0IGluc3RhbnQsIGZsb2F0IGF2ZXJhZ2UsIGZsb2F0IG1heGlt
dW0sIGZsb2F0IG1pbmltdW0pIHsKLSAgICAgIGluc3RhbnRfID0gaW5zdGFudDsKLSAgICAgIGF2
ZXJhZ2VfID0gYXZlcmFnZTsKLSAgICAgIG1heGltdW1fID0gbWF4aW11bTsKLSAgICAgIG1pbmlt
dW1fID0gbWluaW11bTsKLSAgICB9Ci0gICAgZmxvYXQgaW5zdGFudCgpIGNvbnN0IHsgcmV0dXJu
IGluc3RhbnRfOyB9Ci0gICAgZmxvYXQgYXZlcmFnZSgpIGNvbnN0IHsgcmV0dXJuIGF2ZXJhZ2Vf
OyB9Ci0gICAgZmxvYXQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1heGltdW1fOyB9Ci0gICAg
ZmxvYXQgbWluaW11bSgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1fOyB9Ci0KLSAgIHByaXZhdGU6
Ci0gICAgZmxvYXQgaW5zdGFudF8gPSAwLjBmOyAgLy8gSW5zdGFudGFuZW91cyB2YWx1ZS4KLSAg
ICBmbG9hdCBhdmVyYWdlXyA9IDAuMGY7ICAvLyBMb25nLXRlcm0gYXZlcmFnZS4KLSAgICBmbG9h
dCBtYXhpbXVtXyA9IDAuMGY7ICAvLyBMb25nLXRlcm0gbWF4aW11bS4KLSAgICBmbG9hdCBtaW5p
bXVtXyA9IDAuMGY7ICAvLyBMb25nLXRlcm0gbWluaW11bS4KLSAgfTsKLQotICBzdHJ1Y3QgQXVk
aW9Qcm9jZXNzaW5nU3RhdGlzdGljcyB7Ci0gICAgQXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljcygp
OwotICAgIEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MoY29uc3QgQXVkaW9Qcm9jZXNzaW5nU3Rh
dGlzdGljcyYgb3RoZXIpOwotICAgIH5BdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzKCk7Ci0KLSAg
ICAvLyBBRUMgU3RhdGlzdGljcy4KLSAgICAvLyBSRVJMID0gRVJMICsgRVJMRQotICAgIFN0YXQg
cmVzaWR1YWxfZWNob19yZXR1cm5fbG9zczsKLSAgICAvLyBFUkwgPSAxMGxvZ18xMChQX2ZhciAv
IFBfZWNobykKLSAgICBTdGF0IGVjaG9fcmV0dXJuX2xvc3M7Ci0gICAgLy8gRVJMRSA9IDEwbG9n
XzEwKFBfZWNobyAvIFBfb3V0KQotICAgIFN0YXQgZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVu
dDsKLSAgICAvLyAoUHJlIG5vbi1saW5lYXIgcHJvY2Vzc2luZyBzdXBwcmVzc2lvbikgQV9OTFAg
PSAxMGxvZ18xMChQX2VjaG8gLyBQX2EpCi0gICAgU3RhdCBhX25scDsKLSAgICAvLyBGcmFjdGlv
biBvZiB0aW1lIHRoYXQgdGhlIEFFQyBsaW5lYXIgZmlsdGVyIGlzIGRpdmVyZ2VudCwgaW4gYSAx
LXNlY29uZAotICAgIC8vIG5vbi1vdmVybGFwcGVkIGFnZ3JlZ2F0aW9uIHdpbmRvdy4KLSAgICBm
bG9hdCBkaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uID0gLTEuMGY7Ci0KLSAgICAvLyBUaGUgZGVs
YXkgbWV0cmljcyBjb25zaXN0cyBvZiB0aGUgZGVsYXkgbWVkaWFuIGFuZCBzdGFuZGFyZCBkZXZp
YXRpb24uIEl0Ci0gICAgLy8gYWxzbyBjb25zaXN0cyBvZiB0aGUgZnJhY3Rpb24gb2YgZGVsYXkg
ZXN0aW1hdGVzIHRoYXQgY2FuIG1ha2UgdGhlIGVjaG8KLSAgICAvLyBjYW5jZWxsYXRpb24gcGVy
Zm9ybSBwb29ybHkuIFRoZSB2YWx1ZXMgYXJlIGFnZ3JlZ2F0ZWQgdW50aWwgdGhlIGZpcnN0Ci0g
ICAgLy8gY2FsbCB0byB8R2V0U3RhdGlzdGljcygpfCBhbmQgYWZ0ZXJ3YXJkcyBhZ2dyZWdhdGVk
IGFuZCB1cGRhdGVkIGV2ZXJ5Ci0gICAgLy8gc2Vjb25kLiBOb3RlIHRoYXQgaWYgdGhlcmUgYXJl
IHNldmVyYWwgY2xpZW50cyBwdWxsaW5nIG1ldHJpY3MgZnJvbQotICAgIC8vIHxHZXRTdGF0aXN0
aWNzKCl8IGR1cmluZyBhIHNlc3Npb24gdGhlIGZpcnN0IGNhbGwgZnJvbSBhbnkgb2YgdGhlbSB3
aWxsCi0gICAgLy8gY2hhbmdlIHRvIG9uZSBzZWNvbmQgYWdncmVnYXRpb24gd2luZG93IGZvciBh
bGwuCi0gICAgaW50IGRlbGF5X21lZGlhbiA9IC0xOwotICAgIGludCBkZWxheV9zdGFuZGFyZF9k
ZXZpYXRpb24gPSAtMTsKLSAgICBmbG9hdCBmcmFjdGlvbl9wb29yX2RlbGF5cyA9IC0xLjBmOwot
Ci0gICAgLy8gUmVzaWR1YWwgZWNobyBkZXRlY3RvciBsaWtlbGlob29kLgotICAgIGZsb2F0IHJl
c2lkdWFsX2VjaG9fbGlrZWxpaG9vZCA9IC0xLjBmOwotICAgIC8vIE1heGltdW0gcmVzaWR1YWwg
ZWNobyBsaWtlbGlob29kIGZyb20gdGhlIGxhc3QgdGltZSBwZXJpb2QuCi0gICAgZmxvYXQgcmVz
aWR1YWxfZWNob19saWtlbGlob29kX3JlY2VudF9tYXggPSAtMS4wZjsKLSAgfTsKLQotICAvLyBU
T0RPKGl2b2MpOiBNYWtlIHRoaXMgcHVyZSB2aXJ0dWFsIHdoZW4gYWxsIHN1YmNsYXNzZXMgaGF2
ZSBiZWVuIHVwZGF0ZWQuCi0gIHZpcnR1YWwgQXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljcyBHZXRT
dGF0aXN0aWNzKCkgY29uc3Q7Ci0KLSAgLy8gVGhpcyByZXR1cm5zIHRoZSBzdGF0cyBhcyBvcHRp
b25hbHMgYW5kIGl0IHdpbGwgcmVwbGFjZSB0aGUgcmVndWxhcgotICAvLyBHZXRTdGF0aXN0aWNz
LgotICB2aXJ0dWFsIEF1ZGlvUHJvY2Vzc2luZ1N0YXRzIEdldFN0YXRpc3RpY3MoYm9vbCBoYXNf
cmVtb3RlX3RyYWNrcykgY29uc3Q7CisgIC8vIEdldCBhdWRpbyBwcm9jZXNzaW5nIHN0YXRpc3Rp
Y3MuIFRoZSB8aGFzX3JlbW90ZV90cmFja3N8IGFyZ3VtZW50IHNob3VsZCBiZQorICAvLyBzZXQg
aWYgdGhlcmUgYXJlIGFjdGl2ZSByZW1vdGUgdHJhY2tzICh0aGlzIHdvdWxkIHVzdWFsbHkgYmUg
dHJ1ZSBkdXJpbmcKKyAgLy8gYSBjYWxsKS4gSWYgdGhlcmUgYXJlIG5vIHJlbW90ZSB0cmFja3Mg
c29tZSBvZiB0aGUgc3RhdHMgd2lsbCBub3QgYmUgc2V0IGJ5CisgIC8vIEF1ZGlvUHJvY2Vzc2lu
ZywgYmVjYXVzZSB0aGV5IG9ubHkgbWFrZSBzZW5zZSBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUK
KyAgLy8gcmVtb3RlIHRyYWNrLgorICB2aXJ0dWFsIEF1ZGlvUHJvY2Vzc2luZ1N0YXRzIEdldFN0
YXRpc3RpY3MoYm9vbCBoYXNfcmVtb3RlX3RyYWNrcykgY29uc3QgPSAwOwogCiAgIC8vIFRoZXNl
IHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBjb21wb25lbnQgaW50ZXJmYWNlcyBhbmQgc2hvdWxkIG5l
dmVyIHJldHVybgogICAvLyBOVUxMLiBUaGUgcG9pbnRlcnMgd2lsbCBiZSB2YWxpZCBmb3IgdGhl
IGxpZmV0aW1lIG9mIHRoZSBBUE0gaW5zdGFuY2UuCiAgIC8vIFRoZSBtZW1vcnkgZm9yIHRoZXNl
IG9iamVjdHMgaXMgZW50aXJlbHkgbWFuYWdlZCBpbnRlcm5hbGx5LgogICB2aXJ0dWFsIEdhaW5D
b250cm9sKiBnYWluX2NvbnRyb2woKSBjb25zdCA9IDA7Ci0gIC8vIFRPRE8ocGVhaCk6IERlcHJl
Y2F0ZSB0aGlzIEFQSSBjYWxsLgotICB2aXJ0dWFsIEhpZ2hQYXNzRmlsdGVyKiBoaWdoX3Bhc3Nf
ZmlsdGVyKCkgY29uc3QgPSAwOwogICB2aXJ0dWFsIExldmVsRXN0aW1hdG9yKiBsZXZlbF9lc3Rp
bWF0b3IoKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgTm9pc2VTdXBwcmVzc2lvbiogbm9pc2Vfc3Vw
cHJlc3Npb24oKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgVm9pY2VEZXRlY3Rpb24qIHZvaWNlX2Rl
dGVjdGlvbigpIGNvbnN0ID0gMDsKQEAgLTY0OCw3ICs1OTIsNyBAQCBjbGFzcyBBdWRpb1Byb2Nl
c3NpbmcgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgIHN0YXRpYyBjb25zdCBp
bnQga0NodW5rU2l6ZU1zID0gMTA7CiB9OwogCi1jbGFzcyBBdWRpb1Byb2Nlc3NpbmdCdWlsZGVy
IHsKK2NsYXNzIFJUQ19FWFBPUlQgQXVkaW9Qcm9jZXNzaW5nQnVpbGRlciB7CiAgcHVibGljOgog
ICBBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCk7CiAgIH5BdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCk7
CkBAIC03ODgsMTcgKzczMiw2IEBAIGNsYXNzIFByb2Nlc3NpbmdDb25maWcgewogICBTdHJlYW1D
b25maWcgc3RyZWFtc1tTdHJlYW1OYW1lOjprTnVtU3RyZWFtTmFtZXNdOwogfTsKIAotLy8gVE9E
TyhwZWFoKTogUmVtb3ZlIHRoaXMgaW50ZXJmYWNlLgotLy8gQSBmaWx0ZXJpbmcgY29tcG9uZW50
IHdoaWNoIHJlbW92ZXMgREMgb2Zmc2V0IGFuZCBsb3ctZnJlcXVlbmN5IG5vaXNlLgotLy8gUmVj
b21tZW5kZWQgdG8gYmUgZW5hYmxlZCBvbiB0aGUgY2xpZW50LXNpZGUuCi1jbGFzcyBIaWdoUGFz
c0ZpbHRlciB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGludCBFbmFibGUoYm9vbCBlbmFibGUpID0g
MDsKLSAgdmlydHVhbCBib29sIGlzX2VuYWJsZWQoKSBjb25zdCA9IDA7Ci0KLSAgdmlydHVhbCB+
SGlnaFBhc3NGaWx0ZXIoKSB7fQotfTsKLQogLy8gQW4gZXN0aW1hdGlvbiBjb21wb25lbnQgdXNl
ZCB0byByZXRyaWV2ZSBsZXZlbCBtZXRyaWNzLgogY2xhc3MgTGV2ZWxFc3RpbWF0b3IgewogIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmdfc3Rh
dGlzdGljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNz
LmgKaW5kZXggMjM3ZDIzYzViY2U4YjJiZGFkZDdjYmE3ZjQyOThkMWQ2ZTkzNzM5Yy4uNjgzZGIw
NTJlNmM2YjdlNjllODcwMzU4NDBlMWNjNmYyOTJjNzEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2lu
Y2x1ZGUvYXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzLmgKQEAgLTExLDE2ICsxMSwyNyBAQAog
I2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfSU5DTFVERV9BVURJT19QUk9DRVNTSU5H
X1NUQVRJU1RJQ1NfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0lOQ0xVREVf
QVVESU9fUFJPQ0VTU0lOR19TVEFUSVNUSUNTX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwog
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0
ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIC8vIFRoaXMgdmVyc2lvbiBv
ZiB0aGUgc3RhdHMgdXNlcyBPcHRpb25hbHMsIGl0IHdpbGwgcmVwbGFjZSB0aGUgcmVndWxhcgog
Ly8gQXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljcyBzdHJ1Y3QuCi1zdHJ1Y3QgQXVkaW9Qcm9jZXNz
aW5nU3RhdHMgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9Qcm9jZXNzaW5nU3RhdHMgewogICBB
dWRpb1Byb2Nlc3NpbmdTdGF0cygpOwogICBBdWRpb1Byb2Nlc3NpbmdTdGF0cyhjb25zdCBBdWRp
b1Byb2Nlc3NpbmdTdGF0cyYgb3RoZXIpOwogICB+QXVkaW9Qcm9jZXNzaW5nU3RhdHMoKTsKIAor
ICAvLyBUaGUgcm9vdCBtZWFuIHNxdWFyZSAoUk1TKSBsZXZlbCBpbiBkQkZTIChkZWNpYmVscyBm
cm9tIGRpZ2l0YWwKKyAgLy8gZnVsbC1zY2FsZSkgb2YgdGhlIGxhc3QgY2FwdHVyZSBmcmFtZSwg
YWZ0ZXIgcHJvY2Vzc2luZy4gSXQgaXMKKyAgLy8gY29uc3RyYWluZWQgdG8gWy0xMjcsIDBdLgor
ICAvLyBUaGUgY29tcHV0YXRpb24gZm9sbG93czogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzY0NjUKKyAgLy8gd2l0aCB0aGUgaW50ZW50IHRoYXQgaXQgY2FuIHByb3ZpZGUgdGhlIFJU
UCBhdWRpbyBsZXZlbCBpbmRpY2F0aW9uLgorICAvLyBPbmx5IHJlcG9ydGVkIGlmIGxldmVsIGVz
dGltYXRpb24gaXMgZW5hYmxlZCBpbiBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZy4KKyAgYWJzbDo6
b3B0aW9uYWw8aW50PiBvdXRwdXRfcm1zX2RiZnM7CisKICAgLy8gQUVDIFN0YXRpc3RpY3MuCiAg
IC8vIEVSTCA9IDEwbG9nXzEwKFBfZmFyIC8gUF9lY2hvKQogICBhYnNsOjpvcHRpb25hbDxkb3Vi
bGU+IGVjaG9fcmV0dXJuX2xvc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9jb25m
aWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2NvbmZpZy5oCmluZGV4IDM5OGFhYjYxY2ZmZTYzZGQ1
MmYwNTgxZDk4MGFjMGY2N2YxNDRkYTkuLmU3N2QzZmQxNmQ3YjQxOTYzZGUzN2ZhNzliZjYxMDgz
ZGNlOTJkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2NvbmZpZy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9pbmNsdWRlL2NvbmZpZy5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8bWFw
PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC01
Nyw3ICs1OCw3IEBAIGVudW0gY2xhc3MgQ29uZmlnT3B0aW9uSUQgewogLy8gICAgY29uZmlnLlNl
dDxBbGdvMV9Db3N0RnVuY3Rpb24+KG5ldyBTcXJDb3N0KCkpOwogLy8KIC8vIE5vdGU6IFRoaXMg
Y2xhc3MgaXMgdGhyZWFkLWNvbXBhdGlibGUgKGxpa2UgU1RMIGNvbnRhaW5lcnMpLgotY2xhc3Mg
Q29uZmlnIHsKK2NsYXNzIFJUQ19FWFBPUlQgQ29uZmlnIHsKICBwdWJsaWM6CiAgIC8vIFJldHVy
bnMgdGhlIG9wdGlvbiBpZiBzZXQgb3IgYSBkZWZhdWx0IGNvbnN0cnVjdGVkIG9uZS4KICAgLy8g
Q2FsbGVycyB0aGF0IGFjY2VzcyBvcHRpb25zIHRvbyBvZnRlbiBhcmUgZW5jb3VyYWdlZCB0byBj
YWNoZSB0aGUgcmVzdWx0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvbW9ja19hdWRp
b19wcm9jZXNzaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9tb2NrX2F1ZGlvX3Byb2Nlc3Npbmcu
aAppbmRleCA0YTFmZTYyNmJkNWQ1OGIwYjg1ZTE5ZThkMWIyNDJmMDAzNDFkMDQ4Li5mMDBhMTZk
NWUyZDI2MTBiMTcxYjQwYzYyYTEzZGZiODJjYWMzNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
aW5jbHVkZS9tb2NrX2F1ZGlvX3Byb2Nlc3NpbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9t
b2NrX2F1ZGlvX3Byb2Nlc3NpbmcuaApAQCAtNDIsMTMgKzQyLDYgQEAgY2xhc3MgTW9ja0dhaW5D
b250cm9sIDogcHVibGljIEdhaW5Db250cm9sIHsKICAgTU9DS19DT05TVF9NRVRIT0QwKHN0cmVh
bV9pc19zYXR1cmF0ZWQsIGJvb2woKSk7CiB9OwogCi1jbGFzcyBNb2NrSGlnaFBhc3NGaWx0ZXIg
OiBwdWJsaWMgSGlnaFBhc3NGaWx0ZXIgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+TW9ja0hpZ2hQ
YXNzRmlsdGVyKCkge30KLSAgTU9DS19NRVRIT0QxKEVuYWJsZSwgaW50KGJvb2wgZW5hYmxlKSk7
Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChpc19lbmFibGVkLCBib29sKCkpOwotfTsKLQogY2xhc3Mg
TW9ja0xldmVsRXN0aW1hdG9yIDogcHVibGljIExldmVsRXN0aW1hdG9yIHsKICBwdWJsaWM6CiAg
IHZpcnR1YWwgfk1vY2tMZXZlbEVzdGltYXRvcigpIHt9CkBAIC0xMTQsNyArMTA3LDYgQEAgY2xh
c3MgTW9ja0F1ZGlvUHJvY2Vzc2luZyA6IHB1YmxpYyB0ZXN0aW5nOjpOaWNlTW9jazxBdWRpb1By
b2Nlc3Npbmc+IHsKICBwdWJsaWM6CiAgIE1vY2tBdWRpb1Byb2Nlc3NpbmcoKQogICAgICAgOiBn
YWluX2NvbnRyb2xfKG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrR2FpbkNvbnRyb2w+KCkpLAot
ICAgICAgICBoaWdoX3Bhc3NfZmlsdGVyXyhuZXcgdGVzdGluZzo6TmljZU1vY2s8TW9ja0hpZ2hQ
YXNzRmlsdGVyPigpKSwKICAgICAgICAgbGV2ZWxfZXN0aW1hdG9yXyhuZXcgdGVzdGluZzo6Tmlj
ZU1vY2s8TW9ja0xldmVsRXN0aW1hdG9yPigpKSwKICAgICAgICAgbm9pc2Vfc3VwcHJlc3Npb25f
KG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrTm9pc2VTdXBwcmVzc2lvbj4oKSksCiAgICAgICAg
IHZvaWNlX2RldGVjdGlvbl8obmV3IHRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tWb2ljZURldGVjdGlv
bj4oKSkge30KQEAgLTE4MCwxMiArMTcyLDggQEAgY2xhc3MgTW9ja0F1ZGlvUHJvY2Vzc2luZyA6
IHB1YmxpYyB0ZXN0aW5nOjpOaWNlTW9jazxBdWRpb1Byb2Nlc3Npbmc+IHsKICAgTU9DS19NRVRI
T0QwKERldGFjaFBsYXlvdXRBdWRpb0dlbmVyYXRvciwgdm9pZCgpKTsKIAogICBNT0NLX01FVEhP
RDAoVXBkYXRlSGlzdG9ncmFtc09uQ2FsbEVuZCwgdm9pZCgpKTsKLSAgTU9DS19DT05TVF9NRVRI
T0QwKEdldFN0YXRpc3RpY3MsIEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MoKSk7CiAgIE1PQ0tf
Q09OU1RfTUVUSE9EMShHZXRTdGF0aXN0aWNzLCBBdWRpb1Byb2Nlc3NpbmdTdGF0cyhib29sKSk7
CiAgIHZpcnR1YWwgTW9ja0dhaW5Db250cm9sKiBnYWluX2NvbnRyb2woKSBjb25zdCB7IHJldHVy
biBnYWluX2NvbnRyb2xfLmdldCgpOyB9Ci0gIHZpcnR1YWwgTW9ja0hpZ2hQYXNzRmlsdGVyKiBo
aWdoX3Bhc3NfZmlsdGVyKCkgY29uc3QgewotICAgIHJldHVybiBoaWdoX3Bhc3NfZmlsdGVyXy5n
ZXQoKTsKLSAgfQogICB2aXJ0dWFsIE1vY2tMZXZlbEVzdGltYXRvciogbGV2ZWxfZXN0aW1hdG9y
KCkgY29uc3QgewogICAgIHJldHVybiBsZXZlbF9lc3RpbWF0b3JfLmdldCgpOwogICB9CkBAIC0y
MDAsNyArMTg4LDYgQEAgY2xhc3MgTW9ja0F1ZGlvUHJvY2Vzc2luZyA6IHB1YmxpYyB0ZXN0aW5n
OjpOaWNlTW9jazxBdWRpb1Byb2Nlc3Npbmc+IHsKIAogIHByaXZhdGU6CiAgIHN0ZDo6dW5pcXVl
X3B0cjxNb2NrR2FpbkNvbnRyb2w+IGdhaW5fY29udHJvbF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxN
b2NrSGlnaFBhc3NGaWx0ZXI+IGhpZ2hfcGFzc19maWx0ZXJfOwogICBzdGQ6OnVuaXF1ZV9wdHI8
TW9ja0xldmVsRXN0aW1hdG9yPiBsZXZlbF9lc3RpbWF0b3JfOwogICBzdGQ6OnVuaXF1ZV9wdHI8
TW9ja05vaXNlU3VwcHJlc3Npb24+IG5vaXNlX3N1cHByZXNzaW9uXzsKICAgc3RkOjp1bmlxdWVf
cHRyPE1vY2tWb2ljZURldGVjdGlvbj4gdm9pY2VfZGV0ZWN0aW9uXzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9sZXZlbF9lc3RpbWF0b3JfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sZXZlbF9lc3RpbWF0
b3JfaW1wbC5jYwppbmRleCBjOTM3Zjg0NTI1MzRjZWE3MzNiMGMxZjYyMjg1OGU3ZWE1ZWJlMzcy
Li41YjQ5YjM1ZmRjYzU2NTM4MjRlMDg0YWU1NDQ0MjVkZGEwZjA3MjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvbGV2ZWxfZXN0aW1hdG9yX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xldmVsX2Vz
dGltYXRvcl9pbXBsLmNjCkBAIC0xMCw5ICsxMCwxMyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2xldmVsX2VzdGltYXRvcl9pbXBsLmgiCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ybXNfbGV2ZWwuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2Fw
bV9kYXRhX2R1bXBlci5jYwppbmRleCBlMmU4NjAyYjk4OWIzNjZiYzJhNjJmNjc2ODFiNTA4ZWU1
M2ZhYzVmLi5jYzg3OWM4YjA4ZmRjNWQ3ZDZjYmZmOTk0OTE2NmUyYWQ2ODk0MTI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmNjCkBAIC0xMSw3ICsxMSw2IEBACiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAKICNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogLy8gQ2hlY2sgdG8gdmVyaWZ5IHRoYXQgdGhlIGRlZmlu
ZSBpcyBwcm9wZXJseSBzZXQuCiAjaWYgIWRlZmluZWQoV0VCUlRDX0FQTV9ERUJVR19EVU1QKSB8
fCBcCkBAIC0yMCwxNiArMTksMzAgQEAKICNlbmRpZgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLQog
bmFtZXNwYWNlIHsKIAogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi1zdGQ6OnN0cmlu
ZyBGb3JtRmlsZU5hbWUoY29uc3QgY2hhciogbmFtZSwKKworI2lmIGRlZmluZWQoV0VCUlRDX1dJ
TikKK2NvbnN0ZXhwciBjaGFyIGtQYXRoRGVsaW1pdGVyID0gJ1xcJzsKKyNlbHNlCitjb25zdGV4
cHIgY2hhciBrUGF0aERlbGltaXRlciA9ICcvJzsKKyNlbmRpZgorCitzdGQ6OnN0cmluZyBGb3Jt
RmlsZU5hbWUoY29uc3QgY2hhciogb3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnN0YW5j
ZV9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVpbml0X2luZGV4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWZmaXgpIHsKICAgY2hh
ciBidWZbMTAyNF07CiAgIHJ0Yzo6U2ltcGxlU3RyaW5nQnVpbGRlciBzcyhidWYpOworICBjb25z
dCBzaXplX3Qgb3V0cHV0X2Rpcl9zaXplID0gc3RybGVuKG91dHB1dF9kaXIpOworICBpZiAob3V0
cHV0X2Rpcl9zaXplID4gMCkgeworICAgIHNzIDw8IG91dHB1dF9kaXI7CisgICAgaWYgKG91dHB1
dF9kaXJbb3V0cHV0X2Rpcl9zaXplIC0gMV0gIT0ga1BhdGhEZWxpbWl0ZXIpIHsKKyAgICAgIHNz
IDw8IGtQYXRoRGVsaW1pdGVyOworICAgIH0KKyAgfQogICBzcyA8PCBuYW1lIDw8ICJfIiA8PCBp
bnN0YW5jZV9pbmRleCA8PCAiLSIgPDwgcmVpbml0X2luZGV4IDw8IHN1ZmZpeDsKICAgcmV0dXJu
IHNzLnN0cigpOwogfQpAQCAtNDEsMTggKzU0LDIyIEBAIHN0ZDo6c3RyaW5nIEZvcm1GaWxlTmFt
ZShjb25zdCBjaGFyKiBuYW1lLAogQXBtRGF0YUR1bXBlcjo6QXBtRGF0YUR1bXBlcihpbnQgaW5z
dGFuY2VfaW5kZXgpCiAgICAgOiBpbnN0YW5jZV9pbmRleF8oaW5zdGFuY2VfaW5kZXgpIHt9CiAj
ZWxzZQotQXBtRGF0YUR1bXBlcjo6QXBtRGF0YUR1bXBlcihpbnQgaW5zdGFuY2VfaW5kZXgpIHt9
CitBcG1EYXRhRHVtcGVyOjpBcG1EYXRhRHVtcGVyKGludCBpbnN0YW5jZV9pbmRleCl7fTsKICNl
bmRpZgogCi1BcG1EYXRhRHVtcGVyOjp+QXBtRGF0YUR1bXBlcigpIHt9CitBcG1EYXRhRHVtcGVy
Ojp+QXBtRGF0YUR1bXBlcigpID0gZGVmYXVsdDsKIAogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVN
UCA9PSAxCitib29sIEFwbURhdGFEdW1wZXI6OnJlY29yZGluZ19hY3RpdmF0ZWRfID0gZmFsc2U7
CitjaGFyIEFwbURhdGFEdW1wZXI6Om91dHB1dF9kaXJfW10gPSAiIjsKKwogRklMRSogQXBtRGF0
YUR1bXBlcjo6R2V0UmF3RmlsZShjb25zdCBjaGFyKiBuYW1lKSB7Ci0gIHN0ZDo6c3RyaW5nIGZp
bGVuYW1lID0KLSAgICAgIEZvcm1GaWxlTmFtZShuYW1lLCBpbnN0YW5jZV9pbmRleF8sIHJlY29y
ZGluZ19zZXRfaW5kZXhfLCAiLmRhdCIpOworICBzdGQ6OnN0cmluZyBmaWxlbmFtZSA9IEZvcm1G
aWxlTmFtZShvdXRwdXRfZGlyXywgbmFtZSwgaW5zdGFuY2VfaW5kZXhfLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRpbmdfc2V0X2luZGV4XywgIi5kYXQiKTsK
ICAgYXV0byYgZiA9IHJhd19maWxlc19bZmlsZW5hbWVdOwogICBpZiAoIWYpIHsKICAgICBmLnJl
c2V0KGZvcGVuKGZpbGVuYW1lLmNfc3RyKCksICJ3YiIpKTsKKyAgICBSVENfQ0hFQ0soZi5nZXQo
KSkgPDwgIkNhbm5vdCB3cml0ZSB0byAiIDw8IGZpbGVuYW1lIDw8ICIuIjsKICAgfQogICByZXR1
cm4gZi5nZXQoKTsKIH0KQEAgLTYwLDE1ICs3NywxNCBAQCBGSUxFKiBBcG1EYXRhRHVtcGVyOjpH
ZXRSYXdGaWxlKGNvbnN0IGNoYXIqIG5hbWUpIHsKIFdhdldyaXRlciogQXBtRGF0YUR1bXBlcjo6
R2V0V2F2RmlsZShjb25zdCBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbnVtX2NoYW5uZWxzKSB7Ci0gIHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0K
LSAgICAgIEZvcm1GaWxlTmFtZShuYW1lLCBpbnN0YW5jZV9pbmRleF8sIHJlY29yZGluZ19zZXRf
aW5kZXhfLCAiLndhdiIpOworICBzdGQ6OnN0cmluZyBmaWxlbmFtZSA9IEZvcm1GaWxlTmFtZShv
dXRwdXRfZGlyXywgbmFtZSwgaW5zdGFuY2VfaW5kZXhfLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWNvcmRpbmdfc2V0X2luZGV4XywgIi53YXYiKTsKICAgYXV0byYg
ZiA9IHdhdl9maWxlc19bZmlsZW5hbWVdOwogICBpZiAoIWYpIHsKICAgICBmLnJlc2V0KG5ldyBX
YXZXcml0ZXIoZmlsZW5hbWUuY19zdHIoKSwgc2FtcGxlX3JhdGVfaHosIG51bV9jaGFubmVscykp
OwogICB9CiAgIHJldHVybiBmLmdldCgpOwogfQotCiAjZW5kaWYKIAogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaAppbmRleCBkMDQ1MDI3YjM1NDE2
NWEwMjQxOWJhOWQ0NGI3NjhmNjMxM2VmYzJhLi5iNTQxYWU4NGI5Yjg2YTc0OTRhZWY3M2Q3OTcw
Nzk0MTk5NjNiYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1w
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaApAQCAtMTEsMTQg
KzExLDIwIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19MT0dHSU5HX0FQTV9E
QVRBX0RVTVBFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfTE9HR0lOR19B
UE1fREFUQV9EVU1QRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
c3RyaW5nPgorI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCiAjaW5jbHVkZSA8dW5vcmRl
cmVkX21hcD4KKyNlbmRpZgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpZiBXRUJS
VENfQVBNX0RFQlVHX0RVTVAgPT0gMQogI2luY2x1ZGUgImNvbW1vbl9hdWRpby93YXZfZmlsZS5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2VuZGlmCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiAvLyBDaGVjayB0byB2ZXJpZnkgdGhhdCB0aGUgZGVm
aW5lIGlzIHByb3Blcmx5IHNldC4KQEAgLTQ3LDYgKzUzLDIxIEBAIGNsYXNzIEFwbURhdGFEdW1w
ZXIgewogCiAgIH5BcG1EYXRhRHVtcGVyKCk7CiAKKyAgLy8gQWN0aXZhdGVzIG9yIGRlYWN0aXZh
dGUgdGhlIGR1bXBpbmcgZnVuY3Rpb25hbGl0eS4KKyAgc3RhdGljIHZvaWQgU2V0QWN0aXZhdGVk
KGJvb2wgYWN0aXZhdGVkKSB7CisjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKKyAgICBy
ZWNvcmRpbmdfYWN0aXZhdGVkXyA9IGFjdGl2YXRlZDsKKyNlbmRpZgorICB9CisKKyAgLy8gU2V0
IGFuIG9wdGlvbmFsIG91dHB1dCBkaXJlY3RvcnkuCisgIHN0YXRpYyB2b2lkIFNldE91dHB1dERp
cmVjdG9yeShjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2RpcikgeworI2lmIFdFQlJUQ19BUE1f
REVCVUdfRFVNUCA9PSAxCisgICAgUlRDX0NIRUNLX0xUKG91dHB1dF9kaXIuc2l6ZSgpLCBrT3V0
cHV0RGlyTWF4TGVuZ3RoKTsKKyAgICBzdHJuY3B5KG91dHB1dF9kaXJfLCBvdXRwdXRfZGlyLmNf
c3RyKCksIG91dHB1dF9kaXIuc2l6ZSgpKTsKKyNlbmRpZgorICB9CisKICAgLy8gUmVpbml0aWFs
aXplcyB0aGUgZGF0YSBkdW1waW5nIHN1Y2ggdGhhdCBuZXcgdmVyc2lvbnMKICAgLy8gb2YgYWxs
IGZpbGVzIGJlaW5nIGR1bXBlZCB0byBhcmUgY3JlYXRlZC4KICAgdm9pZCBJbml0aWF0ZU5ld1Nl
dE9mUmVjb3JkaW5ncygpIHsKQEAgLTU5LDExNSArODAsMTU1IEBAIGNsYXNzIEFwbURhdGFEdW1w
ZXIgewogICAvLyB2YXJpb3VzIGZvcm1hdHMuCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBu
YW1lLCBkb3VibGUgdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRklM
RSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7Ci0gICAgZndyaXRlKCZ2LCBzaXplb2YodiksIDEs
IGZpbGUpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRklMRSogZmls
ZSA9IEdldFJhd0ZpbGUobmFtZSk7CisgICAgICBmd3JpdGUoJnYsIHNpemVvZih2KSwgMSwgZmls
ZSk7CisgICAgfQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFt
ZSwgc2l6ZV90IHZfbGVuZ3RoLCBjb25zdCBkb3VibGUqIHYpIHsKICNpZiBXRUJSVENfQVBNX0RF
QlVHX0RVTVAgPT0gMQotICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOwotICAgIGZ3
cml0ZSh2LCBzaXplb2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICBpZiAocmVjb3JkaW5n
X2FjdGl2YXRlZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOworICAg
ICAgZndyaXRlKHYsIHNpemVvZih2WzBdKSwgdl9sZW5ndGgsIGZpbGUpOworICAgIH0KICNlbmRp
ZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IGRvdWJsZT4gdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAg
RHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAgIGlmIChyZWNvcmRpbmdfYWN0
aXZhdGVkXykgeworICAgICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAg
IH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIGZsb2F0
IHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAgIEZJTEUqIGZpbGUgPSBH
ZXRSYXdGaWxlKG5hbWUpOwotICAgIGZ3cml0ZSgmdiwgc2l6ZW9mKHYpLCAxLCBmaWxlKTsKKyAg
ICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdG
aWxlKG5hbWUpOworICAgICAgZndyaXRlKCZ2LCBzaXplb2YodiksIDEsIGZpbGUpOworICAgIH0K
ICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHNpemVfdCB2
X2xlbmd0aCwgY29uc3QgZmxvYXQqIHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0g
MQotICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOwotICAgIGZ3cml0ZSh2LCBzaXpl
b2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8p
IHsKKyAgICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOworICAgICAgZndyaXRlKHYs
IHNpemVvZih2WzBdKSwgdl9sZW5ndGgsIGZpbGUpOworICAgIH0KICNlbmRpZgogICB9CiAKICAg
dm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0
PiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBEdW1wUmF3KG5hbWUs
IHYuc2l6ZSgpLCB2LmRhdGEoKSk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7Cisg
ICAgICBEdW1wUmF3KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSk7CisgICAgfQogI2VuZGlmCiAg
IH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFtZSwgYm9vbCB2KSB7CiAjaWYgV0VC
UlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBEdW1wUmF3KG5hbWUsIHN0YXRpY19jYXN0PGlu
dDE2X3Q+KHYpKTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIER1bXBS
YXcobmFtZSwgc3RhdGljX2Nhc3Q8aW50MTZfdD4odikpOworICAgIH0KICNlbmRpZgogICB9CiAK
ICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHNpemVfdCB2X2xlbmd0aCwgY29uc3Qg
Ym9vbCogdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRklMRSogZmls
ZSA9IEdldFJhd0ZpbGUobmFtZSk7Ci0gICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCB2X2xlbmd0
aDsgKytrKSB7Ci0gICAgICBpbnQxNl90IHZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4odltr
XSk7Ci0gICAgICBmd3JpdGUoJnZhbHVlLCBzaXplb2YodmFsdWUpLCAxLCBmaWxlKTsKKyAgICBp
ZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxl
KG5hbWUpOworICAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCB2X2xlbmd0aDsgKytrKSB7Cisg
ICAgICAgIGludDE2X3QgdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQxNl90Pih2W2tdKTsKKyAgICAg
ICAgZndyaXRlKCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgMSwgZmlsZSk7CisgICAgICB9CiAgICAg
fQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFtZSwgcnRjOjpB
cnJheVZpZXc8Y29uc3QgYm9vbD4gdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAx
Ci0gICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAgIGlmIChyZWNvcmRp
bmdfYWN0aXZhdGVkXykgeworICAgICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkp
OworICAgIH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUs
IGludDE2X3QgdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRklMRSog
ZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7Ci0gICAgZndyaXRlKCZ2LCBzaXplb2YodiksIDEsIGZp
bGUpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRklMRSogZmlsZSA9
IEdldFJhd0ZpbGUobmFtZSk7CisgICAgICBmd3JpdGUoJnYsIHNpemVvZih2KSwgMSwgZmlsZSk7
CisgICAgfQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFtZSwg
c2l6ZV90IHZfbGVuZ3RoLCBjb25zdCBpbnQxNl90KiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJV
R19EVU1QID09IDEKLSAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKLSAgICBmd3Jp
dGUodiwgc2l6ZW9mKHZbMF0pLCB2X2xlbmd0aCwgZmlsZSk7CisgICAgaWYgKHJlY29yZGluZ19h
Y3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKKyAgICAg
IGZ3cml0ZSh2LCBzaXplb2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICB9CiAjZW5kaWYK
ICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBydGM6OkFycmF5Vmlldzxj
b25zdCBpbnQxNl90PiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBE
dW1wUmF3KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSk7CisgICAgaWYgKHJlY29yZGluZ19hY3Rp
dmF0ZWRfKSB7CisgICAgICBEdW1wUmF3KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSk7CisgICAg
fQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFtZSwgaW50MzJf
dCB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBGSUxFKiBmaWxlID0g
R2V0UmF3RmlsZShuYW1lKTsKLSAgICBmd3JpdGUoJnYsIHNpemVvZih2KSwgMSwgZmlsZSk7Cisg
ICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxlID0gR2V0UmF3
RmlsZShuYW1lKTsKKyAgICAgIGZ3cml0ZSgmdiwgc2l6ZW9mKHYpLCAxLCBmaWxlKTsKKyAgICB9
CiAjZW5kaWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBzaXplX3Qg
dl9sZW5ndGgsIGNvbnN0IGludDMyX3QqIHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAg
PT0gMQotICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOwotICAgIGZ3cml0ZSh2LCBz
aXplb2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRl
ZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUpOworICAgICAgZndyaXRl
KHYsIHNpemVvZih2WzBdKSwgdl9sZW5ndGgsIGZpbGUpOworICAgIH0KICNlbmRpZgogICB9CiAK
ICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHNpemVfdCB2KSB7CiAjaWYgV0VCUlRD
X0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsK
LSAgICBmd3JpdGUoJnYsIHNpemVvZih2KSwgMSwgZmlsZSk7CisgICAgaWYgKHJlY29yZGluZ19h
Y3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKKyAgICAg
IGZ3cml0ZSgmdiwgc2l6ZW9mKHYpLCAxLCBmaWxlKTsKKyAgICB9CiAjZW5kaWYKICAgfQogCiAg
IHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBzaXplX3Qgdl9sZW5ndGgsIGNvbnN0IHNp
emVfdCogdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRklMRSogZmls
ZSA9IEdldFJhd0ZpbGUobmFtZSk7Ci0gICAgZndyaXRlKHYsIHNpemVvZih2WzBdKSwgdl9sZW5n
dGgsIGZpbGUpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRklMRSog
ZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7CisgICAgICBmd3JpdGUodiwgc2l6ZW9mKHZbMF0pLCB2
X2xlbmd0aCwgZmlsZSk7CisgICAgfQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29u
c3QgY2hhciogbmFtZSwgcnRjOjpBcnJheVZpZXc8Y29uc3QgaW50MzJfdD4gdikgeworI2lmIFdF
QlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7
CisgICAgICBEdW1wUmF3KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSk7CisgICAgfQorI2VuZGlm
CisgIH0KKworICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFtZSwgcnRjOjpBcnJheVZpZXc8
Y29uc3Qgc2l6ZV90PiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKICAgICBE
dW1wUmF3KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSk7CiAjZW5kaWYKQEAgLTE3OSw4ICsyNDAs
MTAgQEAgY2xhc3MgQXBtRGF0YUR1bXBlciB7CiAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3Jh
dGVfaHosCiAgICAgICAgICAgICAgICBpbnQgbnVtX2NoYW5uZWxzKSB7CiAjaWYgV0VCUlRDX0FQ
TV9ERUJVR19EVU1QID09IDEKLSAgICBXYXZXcml0ZXIqIGZpbGUgPSBHZXRXYXZGaWxlKG5hbWUs
IHNhbXBsZV9yYXRlX2h6LCBudW1fY2hhbm5lbHMpOwotICAgIGZpbGUtPldyaXRlU2FtcGxlcyh2
LCB2X2xlbmd0aCk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBXYXZX
cml0ZXIqIGZpbGUgPSBHZXRXYXZGaWxlKG5hbWUsIHNhbXBsZV9yYXRlX2h6LCBudW1fY2hhbm5l
bHMpOworICAgICAgZmlsZS0+V3JpdGVTYW1wbGVzKHYsIHZfbGVuZ3RoKTsKKyAgICB9CiAjZW5k
aWYKICAgfQogCkBAIC0xODksMTIgKzI1MiwxNyBAQCBjbGFzcyBBcG1EYXRhRHVtcGVyIHsKICAg
ICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgIGludCBudW1f
Y2hhbm5lbHMpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAgIER1bXBXYXYo
bmFtZSwgdi5zaXplKCksIHYuZGF0YSgpLCBzYW1wbGVfcmF0ZV9oeiwgbnVtX2NoYW5uZWxzKTsK
KyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIER1bXBXYXYobmFtZSwgdi5z
aXplKCksIHYuZGF0YSgpLCBzYW1wbGVfcmF0ZV9oeiwgbnVtX2NoYW5uZWxzKTsKKyAgICB9CiAj
ZW5kaWYKICAgfQogCiAgcHJpdmF0ZToKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQor
ICBzdGF0aWMgYm9vbCByZWNvcmRpbmdfYWN0aXZhdGVkXzsKKyAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3Qga091dHB1dERpck1heExlbmd0aCA9IDEwMjQ7CisgIHN0YXRpYyBjaGFyIG91dHB1dF9k
aXJfW2tPdXRwdXREaXJNYXhMZW5ndGhdOwogICBjb25zdCBpbnQgaW5zdGFuY2VfaW5kZXhfOwog
ICBpbnQgcmVjb3JkaW5nX3NldF9pbmRleF8gPSAwOwogICBzdGQ6OnVub3JkZXJlZF9tYXA8c3Rk
OjpzdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxGSUxFLCBSYXdGaWxlQ2xvc2VGdW5jdG9yPj4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9sb3dfY3V0X2ZpbHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb3dfY3V0
X2ZpbHRlci5jYwppbmRleCA1MjQ1YzY4ZDAyYTQxOWU2ZjY1NjA1NTBlNmViZDA5ZGUxZmZkYmI0
Li41ODFkNmJjNDJhODgwMzBmNmFmMjAwNzEzMThkYWQ5YWQ3NjgwN2E3IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvbG93X2N1dF9maWx0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvd19jdXRfZmlsdGVy
LmNjCkBAIC0xMCw4ICsxMCwxMyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2xvd19jdXRfZmlsdGVyLmgiCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxj
c3RyaW5nPgorCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1
ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9ub2lzZV9zdXBwcmVzc2lvbl9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL25vaXNlX3N1cHBy
ZXNzaW9uX2ltcGwuY2MKaW5kZXggMTVkNDA0MzIzYzM2Zjg4ZWZmMWYxNjE4ZTA0MjFhMGY2NWFh
YzFjZi4uZDhkOWUzMjM0MGIxY2NmMTJlZWE3ZjdjY2JkMzU3NWYxNDJkZGQxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL25vaXNlX3N1cHByZXNzaW9uX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL25v
aXNlX3N1cHByZXNzaW9uX2ltcGwuY2MKQEAgLTExLDkgKzExLDExIEBACiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL25vaXNlX3N1cHByZXNzaW9uX2ltcGwuaCIKIAogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
CiAjaWYgZGVmaW5lZChXRUJSVENfTlNfRkxPQVQpCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL25zL25vaXNlX3N1cHByZXNzaW9uLmgiCisKICNkZWZpbmUgTlNfQ1JFQVRFIFdl
YlJ0Y05zX0NyZWF0ZQogI2RlZmluZSBOU19GUkVFIFdlYlJ0Y05zX0ZyZWUKICNkZWZpbmUgTlNf
SU5JVCBXZWJSdGNOc19Jbml0CkBAIC0yMSw2ICsyMyw3IEBACiB0eXBlZGVmIE5zSGFuZGxlIE5z
U3RhdGU7CiAjZWxpZiBkZWZpbmVkKFdFQlJUQ19OU19GSVhFRCkKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvbnMvbm9pc2Vfc3VwcHJlc3Npb25feC5oIgorCiAjZGVmaW5lIE5T
X0NSRUFURSBXZWJSdGNOc3hfQ3JlYXRlCiAjZGVmaW5lIE5TX0ZSRUUgV2ViUnRjTnN4X0ZyZWUK
ICNkZWZpbmUgTlNfSU5JVCBXZWJSdGNOc3hfSW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Jl
c2lkdWFsX2VjaG9fZGV0ZWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvcmVzaWR1YWxfZWNob19kZXRlY3Rv
ci5jYwppbmRleCBlODA1MDEzNThlYWFhZmUyNDExMThjN2NiZmJjODI0OGY5ZDQ2NmUxLi4zNDU0
MjE0ZmQ3MzlkNmRkMzZmMGFhZmMwYjhmMjUwM2FkNWJhOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvcmVzaWR1YWxfZWNob19kZXRlY3Rvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvcmVzaWR1YWxfZWNo
b19kZXRlY3Rvci5jYwpAQCAtMTMsOSArMTMsMTEgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8bnVtZXJpYz4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFw
cGVycy9pbmNsdWRlL21ldHJpY3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Jtc19sZXZl
bC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL3Jtc19sZXZlbC5oCmluZGV4IDlhYTU0OWE1N2MxZTMzNmE0ZWM2ZDc5
MzQzN2UzYmZhZjNlYjQ4NzAuLmU2YjU4NDllYWQ4YmRlODhkY2MyZjcxN2MzMDZiNmIyMGIyNjZm
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ybXNfbGV2ZWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvcm1z
X2xldmVsLmgKQEAgLTExLDYgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX1JNU19MRVZFTF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfUk1TX0xF
VkVMX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2lu
Y2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5o
IgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRpb19wcm9jZXNzaW5nX3NpbXVsYXRv
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy90ZXN0L2F1ZGlvX3Byb2Nlc3Npbmdfc2ltdWxhdG9yLmNjCmluZGV4
IDY1ZjNjODc0OTdjODVjZGE2MzVhNGYyNmU4NjgwNmM1MDA0ZWM4ZjMuLmRmOWY0OTc2YmUyN2Qw
YWUwM2M4MDUzYjAwNTJjZDBkYmUzN2VjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2F1
ZGlvX3Byb2Nlc3Npbmdfc2ltdWxhdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2F1ZGlvX3By
b2Nlc3Npbmdfc2ltdWxhdG9yLmNjCkBAIC0xOCwxMiArMTgsMTQgQEAKICNpbmNsdWRlIDx2ZWN0
b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvYXVk
aW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZ19qc29uLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2Vj
aG9fY2FuY2VsbGVyM19mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUv
YXVkaW9fdXRpbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVt
cC9hZWNfZHVtcF9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2VjaG9fY2FuY2VsbGF0aW9uX2ltcGwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvZWNob19jb250cm9sX21vYmlsZV9pbXBsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2Zha2VfcmVjb3JkaW5nX2RldmljZS5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKQEAgLTM0LDYwMyArMzYsMzIgQEAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRl
c3QgewogbmFtZXNwYWNlIHsKLQotLy8gUHJpbnRzIG91dCB0aGUgY3VycmVudGx5IHVzZWQgQUVD
MyBwYXJhbWV0ZXIgdmFsdWVzIGluIEpTT04gZm9ybWF0Lgotdm9pZCBQcmludEFlYzNQYXJhbWV0
ZXJWYWx1ZXMoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNmZykgewotICBzdGQ6OmNvdXQg
PDwgInsiOwotICBzdGQ6OmNvdXQgPDwgIlwiZGVsYXlcIjogeyI7Ci0gIHN0ZDo6Y291dCA8PCAi
XCJkZWZhdWx0X2RlbGF5XCI6ICIgPDwgY2ZnLmRlbGF5LmRlZmF1bHRfZGVsYXkgPDwgIiwiOwot
ICBzdGQ6OmNvdXQgPDwgIlwiZG93bl9zYW1wbGluZ19mYWN0b3JcIjogIiA8PCBjZmcuZGVsYXku
ZG93bl9zYW1wbGluZ19mYWN0b3IKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8
ICJcIm51bV9maWx0ZXJzXCI6ICIgPDwgY2ZnLmRlbGF5Lm51bV9maWx0ZXJzIDw8ICIsIjsKLSAg
c3RkOjpjb3V0IDw8ICJcImFwaV9jYWxsX2ppdHRlcl9ibG9ja3NcIjogIgotICAgICAgICAgICAg
PDwgY2ZnLmRlbGF5LmFwaV9jYWxsX2ppdHRlcl9ibG9ja3MgPDwgIiwiOwotICBzdGQ6OmNvdXQg
PDwgIlwibWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3NcIjogIgotICAgICAgICAgICAgPDwgY2Zn
LmRlbGF5Lm1pbl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8
ICJcImRlbGF5X2hlYWRyb29tX2Jsb2Nrc1wiOiAiIDw8IGNmZy5kZWxheS5kZWxheV9oZWFkcm9v
bV9ibG9ja3MKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImh5c3RlcmVz
aXNfbGltaXRfMV9ibG9ja3NcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmRlbGF5Lmh5c3RlcmVz
aXNfbGltaXRfMV9ibG9ja3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiaHlzdGVyZXNpc19s
aW1pdF8yX2Jsb2Nrc1wiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZGVsYXkuaHlzdGVyZXNpc19s
aW1pdF8yX2Jsb2NrcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJza2V3X2h5c3RlcmVzaXNf
YmxvY2tzXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5kZWxheS5za2V3X2h5c3RlcmVzaXNfYmxv
Y2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImZpeGVkX2NhcHR1cmVfZGVsYXlfc2FtcGxl
c1wiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZGVsYXkuZml4ZWRfY2FwdHVyZV9kZWxheV9zYW1w
bGVzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImRlbGF5X2VzdGltYXRlX3Ntb290aGluZ1wi
OiAiCi0gICAgICAgICAgICA8PCBjZmcuZGVsYXkuZGVsYXlfZXN0aW1hdGVfc21vb3RoaW5nIDw8
ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rpb25fdGhyZXNo
b2xkXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5kZWxheS5kZWxheV9jYW5kaWRhdGVfZGV0ZWN0
aW9uX3RocmVzaG9sZCA8PCAiLCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcImRlbGF5X3NlbGVjdGlv
bl90aHJlc2hvbGRzXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwiaW5pdGlhbFwiOiAiIDw8IGNm
Zy5kZWxheS5kZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcy5pbml0aWFsCi0gICAgICAgICAgICA8
PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJjb252ZXJnZWRcIjogIgotICAgICAgICAgICAgPDwg
Y2ZnLmRlbGF5LmRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzLmNvbnZlcmdlZDsKLSAgc3RkOjpj
b3V0IDw8ICJ9IjsKLQotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwi
ZmlsdGVyXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibWFpblwiOiBbIjsKLSAgc3RkOjpjb3V0
IDw8IGNmZy5maWx0ZXIubWFpbi5sZW5ndGhfYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8
IGNmZy5maWx0ZXIubWFpbi5sZWFrYWdlX2NvbnZlcmdlZCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8
PCBjZmcuZmlsdGVyLm1haW4ubGVha2FnZV9kaXZlcmdlZCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8
PCBjZmcuZmlsdGVyLm1haW4uZXJyb3JfZmxvb3IgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2Zn
LmZpbHRlci5tYWluLm5vaXNlX2dhdGU7Ci0gIHN0ZDo6Y291dCA8PCAiXSwiOwotCi0gIHN0ZDo6
Y291dCA8PCAiXCJzaGFkb3dcIjogWyI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuZmlsdGVyLnNoYWRv
dy5sZW5ndGhfYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIuc2hhZG93
LnJhdGUgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5zaGFkb3cubm9pc2VfZ2F0
ZTsKLSAgc3RkOjpjb3V0IDw8ICJdLCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcIm1haW5faW5pdGlh
bFwiOiBbIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIubWFpbl9pbml0aWFsLmxlbmd0aF9i
bG9ja3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5tYWluX2luaXRpYWwubGVh
a2FnZV9jb252ZXJnZWQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5tYWluX2lu
aXRpYWwubGVha2FnZV9kaXZlcmdlZCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuZmlsdGVy
Lm1haW5faW5pdGlhbC5lcnJvcl9mbG9vciA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuZmls
dGVyLm1haW5faW5pdGlhbC5ub2lzZV9nYXRlOwotICBzdGQ6OmNvdXQgPDwgIl0sIjsKLQotICBz
dGQ6OmNvdXQgPDwgIlwic2hhZG93X2luaXRpYWxcIjogWyI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcu
ZmlsdGVyLnNoYWRvd19pbml0aWFsLmxlbmd0aF9ibG9ja3MgPDwgIiwiOwotICBzdGQ6OmNvdXQg
PDwgY2ZnLmZpbHRlci5zaGFkb3dfaW5pdGlhbC5yYXRlIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8
IGNmZy5maWx0ZXIuc2hhZG93X2luaXRpYWwubm9pc2VfZ2F0ZTsKLSAgc3RkOjpjb3V0IDw8ICJd
LCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcImNvbmZpZ19jaGFuZ2VfZHVyYXRpb25fYmxvY2tzXCI6
ICIKLSAgICAgICAgICAgIDw8IGNmZy5maWx0ZXIuY29uZmlnX2NoYW5nZV9kdXJhdGlvbl9ibG9j
a3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiaW5pdGlhbF9zdGF0ZV9zZWNvbmRzXCI6ICIg
PDwgY2ZnLmZpbHRlci5pbml0aWFsX3N0YXRlX3NlY29uZHMKLSAgICAgICAgICAgIDw8ICIsIjsK
LSAgc3RkOjpjb3V0IDw8ICJcImNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlXCI6ICIKLSAgICAg
ICAgICAgIDw8IChjZmcuZmlsdGVyLmNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlID8gInRydWUi
IDogImZhbHNlIikKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImVuYWJs
ZV9zaGFkb3dfZmlsdGVyX291dHB1dF91c2FnZVwiOiAiCi0gICAgICAgICAgICA8PCAoY2ZnLmZp
bHRlci5lbmFibGVfc2hhZG93X2ZpbHRlcl9vdXRwdXRfdXNhZ2UgPyAidHJ1ZSIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJm
YWxzZSIpOwotCi0gIHN0ZDo6Y291dCA8PCAifSwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJlcmxl
XCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibWluXCI6ICIgPDwgY2ZnLmVybGUubWluIDw8ICIs
IjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1heF9sXCI6ICIgPDwgY2ZnLmVybGUubWF4X2wgPDwgIiwi
OwotICBzdGQ6OmNvdXQgPDwgIlwibWF4X2hcIjogIiA8PCBjZmcuZXJsZS5tYXhfaCA8PCAiLCI7
Ci0gIHN0ZDo6Y291dCA8PCAiXCJvbnNldF9kZXRlY3Rpb25cIjogIgotICAgICAgICAgICAgPDwg
KGNmZy5lcmxlLm9uc2V0X2RldGVjdGlvbiA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotICBzdGQ6OmNv
dXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwiZXBfc3RyZW5ndGhcIjogeyI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJsZlwiOiAiIDw8IGNmZy5lcF9zdHJlbmd0aC5sZiA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJtZlwiOiAiIDw8IGNmZy5lcF9zdHJlbmd0aC5tZiA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJoZlwiOiAiIDw8IGNmZy5lcF9zdHJlbmd0aC5oZiA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJkZWZhdWx0X2xlblwiOiAiIDw8IGNmZy5lcF9zdHJlbmd0aC5kZWZhdWx0
X2xlbiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJyZXZlcmJfYmFzZWRfb25fcmVuZGVyXCI6
ICIKLSAgICAgICAgICAgIDw8IChjZmcuZXBfc3RyZW5ndGgucmV2ZXJiX2Jhc2VkX29uX3JlbmRl
ciA/ICJ0cnVlIiA6ICJmYWxzZSIpCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8
PCAiXCJlY2hvX2Nhbl9zYXR1cmF0ZVwiOiAiCi0gICAgICAgICAgICA8PCAoY2ZnLmVwX3N0cmVu
Z3RoLmVjaG9fY2FuX3NhdHVyYXRlID8gInRydWUiIDogImZhbHNlIikgPDwgIiwiOwotICBzdGQ6
OmNvdXQgPDwgIlwiYm91bmRlZF9lcmxcIjogIgotICAgICAgICAgICAgPDwgKGNmZy5lcF9zdHJl
bmd0aC5ib3VuZGVkX2VybCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotCi0gIHN0ZDo6Y291dCA8PCAi
fSwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJnYWluX21hc2tcIjogeyI7Ci0gIHN0ZDo6Y291dCA8
PCAiXCJtMFwiOiAiIDw8IGNmZy5nYWluX21hc2subTAgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwg
IlwibTFcIjogIiA8PCBjZmcuZ2Fpbl9tYXNrLm0xIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJc
Im0yXCI6ICIgPDwgY2ZnLmdhaW5fbWFzay5tMiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJt
M1wiOiAiIDw8IGNmZy5nYWluX21hc2subTMgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibTVc
IjogIiA8PCBjZmcuZ2Fpbl9tYXNrLm01IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm02XCI6
ICIgPDwgY2ZnLmdhaW5fbWFzay5tNiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJtN1wiOiAi
IDw8IGNmZy5nYWluX21hc2subTcgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibThcIjogIiA8
PCBjZmcuZ2Fpbl9tYXNrLm04IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm05XCI6ICIgPDwg
Y2ZnLmdhaW5fbWFzay5tOSA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJnYWluX2N1cnZlX29m
ZnNldFwiOiAiIDw8IGNmZy5nYWluX21hc2suZ2Fpbl9jdXJ2ZV9vZmZzZXQKLSAgICAgICAgICAg
IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImdhaW5fY3VydmVfc2xvcGVcIjogIiA8PCBjZmcu
Z2Fpbl9tYXNrLmdhaW5fY3VydmVfc2xvcGUKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpj
b3V0IDw8ICJcInRlbXBvcmFsX21hc2tpbmdfbGZcIjogIiA8PCBjZmcuZ2Fpbl9tYXNrLnRlbXBv
cmFsX21hc2tpbmdfbGYKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcInRl
bXBvcmFsX21hc2tpbmdfaGZcIjogIiA8PCBjZmcuZ2Fpbl9tYXNrLnRlbXBvcmFsX21hc2tpbmdf
aGYKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcInRlbXBvcmFsX21hc2tp
bmdfbGZfYmFuZHNcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmdhaW5fbWFzay50ZW1wb3JhbF9t
YXNraW5nX2xmX2JhbmRzOwotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwg
IlwiZWNob19hdWRpYmlsaXR5XCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibG93X3JlbmRlcl9s
aW1pdFwiOiAiIDw8IGNmZy5lY2hvX2F1ZGliaWxpdHkubG93X3JlbmRlcl9saW1pdAotICAgICAg
ICAgICAgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibm9ybWFsX3JlbmRlcl9saW1pdFwiOiAi
Ci0gICAgICAgICAgICA8PCBjZmcuZWNob19hdWRpYmlsaXR5Lm5vcm1hbF9yZW5kZXJfbGltaXQg
PDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZmxvb3JfcG93ZXJcIjogIiA8PCBjZmcuZWNob19h
dWRpYmlsaXR5LmZsb29yX3Bvd2VyIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImF1ZGliaWxp
dHlfdGhyZXNob2xkX2xmXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5lY2hvX2F1ZGliaWxpdHku
YXVkaWJpbGl0eV90aHJlc2hvbGRfbGYgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiYXVkaWJp
bGl0eV90aHJlc2hvbGRfbWZcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmVjaG9fYXVkaWJpbGl0
eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9tZiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJhdWRp
YmlsaXR5X3RocmVzaG9sZF9oZlwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZWNob19hdWRpYmls
aXR5LmF1ZGliaWxpdHlfdGhyZXNob2xkX2hmIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcInVz
ZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXNcIjogIgotICAgICAgICAgICAgPDwgKGNmZy5lY2hvX2F1
ZGliaWxpdHkudXNlX3N0YXRpb25hcnlfcHJvcGVydGllcyA/ICJ0cnVlIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJmYWxz
ZSIpCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJ1c2Vfc3RhdGlvbmFy
aXR5X3Byb3BlcnRpZXNfYXRfaW5pdFwiOiAiCi0gICAgICAgICAgICA8PCAoY2ZnLmVjaG9fYXVk
aWJpbGl0eS51c2Vfc3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdAotICAgICAgICAgICAg
ICAgICAgICA/ICJ0cnVlIgotICAgICAgICAgICAgICAgICAgICA6ICJmYWxzZSIpOwotICBzdGQ6
OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwicmVuZGVyX2xldmVsc1wiOiB7IjsK
LSAgc3RkOjpjb3V0IDw8ICJcImFjdGl2ZV9yZW5kZXJfbGltaXRcIjogIgotICAgICAgICAgICAg
PDwgY2ZnLnJlbmRlcl9sZXZlbHMuYWN0aXZlX3JlbmRlcl9saW1pdCA8PCAiLCI7Ci0gIHN0ZDo6
Y291dCA8PCAiXCJwb29yX2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0XCI6ICIKLSAgICAgICAgICAg
IDw8IGNmZy5yZW5kZXJfbGV2ZWxzLnBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGltaXQgPDwgIiwi
OwotICBzdGQ6OmNvdXQgPDwgIlwicG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdF9kczhcIjog
IgotICAgICAgICAgICAgPDwgY2ZnLnJlbmRlcl9sZXZlbHMucG9vcl9leGNpdGF0aW9uX3JlbmRl
cl9saW1pdF9kczg7Ci0gIHN0ZDo6Y291dCA8PCAifSwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJl
Y2hvX3JlbW92YWxfY29udHJvbFwiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcImdhaW5fcmFtcHVw
XCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwiaW5pdGlhbF9nYWluXCI6ICIKLSAgICAgICAgICAg
IDw8IGNmZy5lY2hvX3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5pbml0aWFsX2dhaW4gPDwg
IiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZmlyc3Rfbm9uX3plcm9fZ2FpblwiOiAiCi0gICAgICAg
ICAgICA8PCBjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZmlyc3Rfbm9uX3pl
cm9fZ2FpbiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJub25femVyb19nYWluX2Jsb2Nrc1wi
OiAiCi0gICAgICAgICAgICA8PCBjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAu
bm9uX3plcm9fZ2Fpbl9ibG9ja3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZnVsbF9nYWlu
X2Jsb2Nrc1wiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fp
bl9yYW1wdXAuZnVsbF9nYWluX2Jsb2NrczsKLSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0gIHN0ZDo6
Y291dCA8PCAiXCJoYXNfY2xvY2tfZHJpZnRcIjogIgotICAgICAgICAgICAgPDwgKGNmZy5lY2hv
X3JlbW92YWxfY29udHJvbC5oYXNfY2xvY2tfZHJpZnQgPyAidHJ1ZSIgOiAiZmFsc2UiKQotICAg
ICAgICAgICAgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibGluZWFyX2FuZF9zdGFibGVfZWNo
b19wYXRoXCI6ICIKLSAgICAgICAgICAgIDw8IChjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wubGlu
ZWFyX2FuZF9zdGFibGVfZWNob19wYXRoID8gInRydWUiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJmYWxzZSIp
OwotCi0gIHN0ZDo6Y291dCA8PCAifSwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJlY2hvX21vZGVs
XCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibm9pc2VfZmxvb3JfaG9sZFwiOiAiIDw8IGNmZy5l
Y2hvX21vZGVsLm5vaXNlX2Zsb29yX2hvbGQKLSAgICAgICAgICAgIDw8ICIsIjsKLSAgc3RkOjpj
b3V0IDw8ICJcIm1pbl9ub2lzZV9mbG9vcl9wb3dlclwiOiAiCi0gICAgICAgICAgICA8PCBjZmcu
ZWNob19tb2RlbC5taW5fbm9pc2VfZmxvb3JfcG93ZXIgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwg
Ilwic3RhdGlvbmFyeV9nYXRlX3Nsb3BlXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5lY2hvX21v
ZGVsLnN0YXRpb25hcnlfZ2F0ZV9zbG9wZSA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJub2lz
ZV9nYXRlX3Bvd2VyXCI6ICIgPDwgY2ZnLmVjaG9fbW9kZWwubm9pc2VfZ2F0ZV9wb3dlcgotICAg
ICAgICAgICAgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibm9pc2VfZ2F0ZV9zbG9wZVwiOiAi
IDw8IGNmZy5lY2hvX21vZGVsLm5vaXNlX2dhdGVfc2xvcGUKLSAgICAgICAgICAgIDw8ICIsIjsK
LSAgc3RkOjpjb3V0IDw8ICJcInJlbmRlcl9wcmVfd2luZG93X3NpemVcIjogIgotICAgICAgICAg
ICAgPDwgY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZSA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJyZW5kZXJfcG9zdF93aW5kb3dfc2l6ZVwiOiAiCi0gICAgICAgICAgICA8
PCBjZmcuZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6ZSA8PCAiLCI7Ci0gIHN0ZDo6
Y291dCA8PCAiXCJyZW5kZXJfcHJlX3dpbmRvd19zaXplX2luaXRcIjogIgotICAgICAgICAgICAg
PDwgY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0IDw8ICIsIjsKLSAg
c3RkOjpjb3V0IDw8ICJcInJlbmRlcl9wb3N0X3dpbmRvd19zaXplX2luaXRcIjogIgotICAgICAg
ICAgICAgPDwgY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemVfaW5pdCA8PCAi
LCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJub25saW5lYXJfaG9sZFwiOiAiIDw8IGNmZy5lY2hvX21v
ZGVsLm5vbmxpbmVhcl9ob2xkIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm5vbmxpbmVhcl9y
ZWxlYXNlXCI6ICIgPDwgY2ZnLmVjaG9fbW9kZWwubm9ubGluZWFyX3JlbGVhc2U7Ci0gIHN0ZDo6
Y291dCA8PCAifSwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJzdXBwcmVzc29yXCI6IHsiOwotICBz
dGQ6OmNvdXQgPDwgIlwibmVhcmVuZF9hdmVyYWdlX2Jsb2Nrc1wiOiAiCi0gICAgICAgICAgICA8
PCBjZmcuc3VwcHJlc3Nvci5uZWFyZW5kX2F2ZXJhZ2VfYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpj
b3V0IDw8ICJcIm5vcm1hbF90dW5pbmdcIjogeyI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJtYXNrX2xm
XCI6IFsiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNr
X2xmLmVucl90cmFuc3BhcmVudCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuc3VwcHJlc3Nv
ci5ub3JtYWxfdHVuaW5nLm1hc2tfbGYuZW5yX3N1cHByZXNzIDw8ICIsIjsKLSAgc3RkOjpjb3V0
IDw8IGNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19sZi5lbXJfdHJhbnNwYXJlbnQ7
Ci0gIHN0ZDo6Y291dCA8PCAiXSwiOwotICBzdGQ6OmNvdXQgPDwgIlwibWFza19oZlwiOiBbIjsK
LSAgc3RkOjpjb3V0IDw8IGNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5lbnJf
dHJhbnNwYXJlbnQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3Iubm9ybWFs
X3R1bmluZy5tYXNrX2hmLmVucl9zdXBwcmVzcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcu
c3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYuZW1yX3RyYW5zcGFyZW50OwotICBzdGQ6
OmNvdXQgPDwgIl0sIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1heF9pbmNfZmFjdG9yXCI6ICIKLSAg
ICAgICAgICAgIDw8IGNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWF4X2luY19mYWN0b3Ig
PDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibWF4X2RlY19mYWN0b3JfbGZcIjogIgotICAgICAg
ICAgICAgPDwgY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXhfZGVjX2ZhY3Rvcl9sZjsK
LSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJuZWFyZW5kX3R1bmluZ1wi
OiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1hc2tfbGZcIjogWyI7Ci0gIHN0ZDo6Y291dCA8PCBj
Zmcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2xmLmVucl90cmFuc3BhcmVudCA8PCAi
LCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2xm
LmVucl9zdXBwcmVzcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuc3VwcHJlc3Nvci5uZWFy
ZW5kX3R1bmluZy5tYXNrX2xmLmVtcl90cmFuc3BhcmVudDsKLSAgc3RkOjpjb3V0IDw8ICJdLCI7
Ci0gIHN0ZDo6Y291dCA8PCAiXCJtYXNrX2hmXCI6IFsiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1
cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19oZi5lbnJfdHJhbnNwYXJlbnQgPDwgIiwiOwot
ICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19oZi5lbnJf
c3VwcHJlc3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90
dW5pbmcubWFza19oZi5lbXJfdHJhbnNwYXJlbnQ7Ci0gIHN0ZDo6Y291dCA8PCAiXSwiOwotICBz
dGQ6OmNvdXQgPDwgIlwibWF4X2luY19mYWN0b3JcIjogIgotICAgICAgICAgICAgPDwgY2ZnLnN1
cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWF4X2luY19mYWN0b3IgPDwgIiwiOwotICBzdGQ6OmNv
dXQgPDwgIlwibWF4X2RlY19mYWN0b3JfbGZcIjogIgotICAgICAgICAgICAgPDwgY2ZnLnN1cHBy
ZXNzb3IubmVhcmVuZF90dW5pbmcubWF4X2RlY19mYWN0b3JfbGY7Ci0gIHN0ZDo6Y291dCA8PCAi
fSwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb25cIjogeyI7
Ci0gIHN0ZDo6Y291dCA8PCAiXCJlbnJfdGhyZXNob2xkXCI6ICIKLSAgICAgICAgICAgIDw8IGNm
Zy5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmVucl90aHJlc2hvbGQgPDwg
IiwiOwotICBzdGQ6OmNvdXQgPDwgIlwic25yX3RocmVzaG9sZFwiOiAiCi0gICAgICAgICAgICA8
PCBjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5zbnJfdGhyZXNob2xk
IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImhvbGRfZHVyYXRpb25cIjogIgotICAgICAgICAg
ICAgPDwgY2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uaG9sZF9kdXJh
dGlvbiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJ0cmlnZ2VyX3RocmVzaG9sZFwiOiAiCi0g
ICAgICAgICAgICA8PCBjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi50
cmlnZ2VyX3RocmVzaG9sZDsKLSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0gIHN0ZDo6Y291dCA8PCAi
XCJoaWdoX2JhbmRzX3N1cHByZXNzaW9uXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwiZW5yX3Ro
cmVzaG9sZFwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuc3VwcHJlc3Nvci5oaWdoX2JhbmRzX3N1
cHByZXNzaW9uLmVucl90aHJlc2hvbGQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibWF4X2dh
aW5fZHVyaW5nX2VjaG9cIjogIgotICAgICAgICAgICAgPDwgY2ZnLnN1cHByZXNzb3IuaGlnaF9i
YW5kc19zdXBwcmVzc2lvbi5tYXhfZ2Fpbl9kdXJpbmdfZWNobzsKLSAgc3RkOjpjb3V0IDw8ICJ9
LCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJmbG9vcl9maXJzdF9pbmNyZWFzZVwiOiAiCi0gICAgICAg
ICAgICA8PCBjZmcuc3VwcHJlc3Nvci5mbG9vcl9maXJzdF9pbmNyZWFzZSA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJlbmZvcmNlX3RyYW5zcGFyZW50XCI6ICIKLSAgICAgICAgICAgIDw8IChj
Zmcuc3VwcHJlc3Nvci5lbmZvcmNlX3RyYW5zcGFyZW50ID8gInRydWUiIDogImZhbHNlIikgPDwg
IiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZW5mb3JjZV9lbXB0eV9oaWdoZXJfYmFuZHNcIjogIgot
ICAgICAgICAgICAgPDwgKGNmZy5zdXBwcmVzc29yLmVuZm9yY2VfZW1wdHlfaGlnaGVyX2JhbmRz
ID8gInRydWUiIDogImZhbHNlIik7Ci0gIHN0ZDo6Y291dCA8PCAifSI7Ci0gIHN0ZDo6Y291dCA8
PCAifSI7Ci0gIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CisvLyBIZWxwZXIgZm9yIHJlYWRpbmcg
SlNPTiBmcm9tIGEgZmlsZSBhbmQgcGFyc2luZyBpdCB0byBhbiBBRUMzIGNvbmZpZ3VyYXRpb24u
CitFY2hvQ2FuY2VsbGVyM0NvbmZpZyBSZWFkQWVjM0NvbmZpZ0Zyb21Kc29uRmlsZShjb25zdCBz
dGQ6OnN0cmluZyYgZmlsZW5hbWUpIHsKKyAgc3RkOjpzdHJpbmcganNvbl9zdHJpbmc7CisgIHN0
ZDo6c3RyaW5nIHM7CisgIHN0ZDo6aWZzdHJlYW0gZihmaWxlbmFtZS5jX3N0cigpKTsKKyAgaWYg
KGYuZmFpbCgpKSB7CisgICAgc3RkOjpjb3V0IDw8ICJGYWlsZWQgdG8gb3BlbiB0aGUgZmlsZSAi
IDw8IGZpbGVuYW1lIDw8IHN0ZDo6ZW5kbDsKKyAgICBSVENfQ0hFQ0soZmFsc2UpOworICB9Cisg
IHdoaWxlIChzdGQ6OmdldGxpbmUoZiwgcykpIHsKKyAgICBqc29uX3N0cmluZyArPSBzOworICB9
CisKKyAgYm9vbCBwYXJzaW5nX3N1Y2Nlc3NmdWw7CisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNm
ZzsKKyAgQWVjM0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGpzb25fc3RyaW5nLCAmY2ZnLCAmcGFyc2lu
Z19zdWNjZXNzZnVsKTsKKyAgaWYgKCFwYXJzaW5nX3N1Y2Nlc3NmdWwpIHsKKyAgICBzdGQ6OmNv
dXQgPDwgIlBhcnNpbmcgb2YganNvbiBzdHJpbmcgZmFpbGVkOiAiIDw8IHN0ZDo6ZW5kbAorICAg
ICAgICAgICAgICA8PCBqc29uX3N0cmluZyA8PCBzdGQ6OmVuZGw7CisgICAgUlRDX0NIRUNLKGZh
bHNlKTsKKyAgfQorICBSVENfQ0hFQ0soRWNob0NhbmNlbGxlcjNDb25maWc6OlZhbGlkYXRlKCZj
ZmcpKTsKKworICByZXR1cm4gY2ZnOwogfQogCi0vLyBDbGFzcyBmb3IgcGFyc2luZyB0aGUgQUVD
MyBwYXJhbWV0ZXJzIGZyb20gYSBKU09OIGZpbGUgYW5kIHByb2R1Y2luZyBhIGNvbmZpZwotLy8g
c3RydWN0LgotY2xhc3MgQWVjM1BhcmFtZXRlcnNQYXJzZXIgewotIHB1YmxpYzoKLSAgc3RhdGlj
IEVjaG9DYW5jZWxsZXIzQ29uZmlnIFBhcnNlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSkg
ewotICAgIHJldHVybiBBZWMzUGFyYW1ldGVyc1BhcnNlcigpLlBhcnNlRmlsZShmaWxlbmFtZSk7
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEFlYzNQYXJhbWV0ZXJzUGFyc2VyKCkgPSBkZWZhdWx0Owot
Ci0gIHZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVlJiByb290LAotICAgICAgICAgICAg
ICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLAotICAgICAgICAgICAgICAgICBib29sKiBwYXJh
bSkgY29uc3QgewotICAgIFJUQ19DSEVDSyhwYXJhbSk7Ci0gICAgYm9vbCB2OwotICAgIGlmIChy
dGM6OkdldEJvb2xGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmdikpIHsKLSAgICAg
ICpwYXJhbSA9IHY7Ci0gICAgfQotICB9Ci0KLSAgdm9pZCBSZWFkUGFyYW0oY29uc3QgSnNvbjo6
VmFsdWUmIHJvb3QsCi0gICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUsCi0g
ICAgICAgICAgICAgICAgIHNpemVfdCogcGFyYW0pIGNvbnN0IHsKLSAgICBSVENfQ0hFQ0socGFy
YW0pOwotICAgIGludCB2OwotICAgIGlmIChydGM6OkdldEludEZyb21Kc29uT2JqZWN0KHJvb3Qs
IHBhcmFtX25hbWUsICZ2KSkgewotICAgICAgKnBhcmFtID0gdjsKLSAgICB9Ci0gIH0KLQotICB2
b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpWYWx1ZSYgcm9vdCwKLSAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwKLSAgICAgICAgICAgICAgICAgaW50KiBwYXJhbSkgY29u
c3QgewotICAgIFJUQ19DSEVDSyhwYXJhbSk7Ci0gICAgaW50IHY7Ci0gICAgaWYgKHJ0Yzo6R2V0
SW50RnJvbUpzb25PYmplY3Qocm9vdCwgcGFyYW1fbmFtZSwgJnYpKSB7Ci0gICAgICAqcGFyYW0g
PSB2OwotICAgIH0KLSAgfQotCi0gIHZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVlJiBy
b290LAotICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLAotICAgICAgICAg
ICAgICAgICBmbG9hdCogcGFyYW0pIGNvbnN0IHsKLSAgICBSVENfQ0hFQ0socGFyYW0pOwotICAg
IGRvdWJsZSB2OwotICAgIGlmIChydGM6OkdldERvdWJsZUZyb21Kc29uT2JqZWN0KHJvb3QsIHBh
cmFtX25hbWUsICZ2KSkgewotICAgICAgKnBhcmFtID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHYpOwot
ICAgIH0KLSAgfQotCi0gIHZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVlJiByb290LAot
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLAotICAgICAgICAgICAgICAg
ICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RmlsdGVyOjpNYWluQ29uZmlndXJhdGlvbiogcGFyYW0p
IGNvbnN0IHsKLSAgICBSVENfQ0hFQ0socGFyYW0pOwotICAgIEpzb246OlZhbHVlIGpzb25fYXJy
YXk7Ci0gICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1l
LCAmanNvbl9hcnJheSkpIHsKLSAgICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsKLSAgICAgIHJ0
Yzo6SnNvbkFycmF5VG9Eb3VibGVWZWN0b3IoanNvbl9hcnJheSwgJnYpOwotICAgICAgaWYgKHYu
c2l6ZSgpICE9IDUpIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJJbmNvcnJlY3QgYXJyYXkgc2l6
ZSBmb3IgIiA8PCBwYXJhbV9uYW1lIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgUlRDX0NIRUNLKGZh
bHNlKTsKLSAgICAgIH0KLSAgICAgIHBhcmFtLT5sZW5ndGhfYmxvY2tzID0gc3RhdGljX2Nhc3Q8
c2l6ZV90Pih2WzBdKTsKLSAgICAgIHBhcmFtLT5sZWFrYWdlX2NvbnZlcmdlZCA9IHN0YXRpY19j
YXN0PGZsb2F0Pih2WzFdKTsKLSAgICAgIHBhcmFtLT5sZWFrYWdlX2RpdmVyZ2VkID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHZbMl0pOwotICAgICAgcGFyYW0tPmVycm9yX2Zsb29yID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHZbM10pOwotICAgICAgcGFyYW0tPm5vaXNlX2dhdGUgPSBzdGF0aWNfY2FzdDxm
bG9hdD4odls0XSk7Ci0gICAgfQotICB9Ci0KLSAgdm9pZCBSZWFkUGFyYW0oCi0gICAgICBjb25z
dCBKc29uOjpWYWx1ZSYgcm9vdCwKLSAgICAgIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUsCi0gICAg
ICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RmlsdGVyOjpTaGFkb3dDb25maWd1cmF0aW9uKiBwYXJh
bSkgY29uc3QgewotICAgIFJUQ19DSEVDSyhwYXJhbSk7Ci0gICAgSnNvbjo6VmFsdWUganNvbl9h
cnJheTsKLSAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsIHBhcmFtX25h
bWUsICZqc29uX2FycmF5KSkgewotICAgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiB2OwotICAgICAg
cnRjOjpKc29uQXJyYXlUb0RvdWJsZVZlY3Rvcihqc29uX2FycmF5LCAmdik7Ci0gICAgICBpZiAo
di5zaXplKCkgIT0gMykgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIkluY29ycmVjdCBhcnJheSBz
aXplIGZvciAiIDw8IHBhcmFtX25hbWUgPDwgc3RkOjplbmRsOwotICAgICAgICBSVENfQ0hFQ0so
ZmFsc2UpOwotICAgICAgfQotICAgICAgcGFyYW0tPmxlbmd0aF9ibG9ja3MgPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHZbMF0pOwotICAgICAgcGFyYW0tPnJhdGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
dlsxXSk7Ci0gICAgICBwYXJhbS0+bm9pc2VfZ2F0ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzJd
KTsKLSAgICB9Ci0gIH0KLQotICB2b2lkIFJlYWRQYXJhbSgKLSAgICAgIGNvbnN0IEpzb246OlZh
bHVlJiByb290LAotICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwKLSAgICAgIEVjaG9DYW5j
ZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpNYXNraW5nVGhyZXNob2xkcyogcGFyYW0pIGNvbnN0
IHsKLSAgICBSVENfQ0hFQ0socGFyYW0pOwotICAgIEpzb246OlZhbHVlIGpzb25fYXJyYXk7Ci0g
ICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmanNv
bl9hcnJheSkpIHsKLSAgICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsKLSAgICAgIHJ0Yzo6SnNv
bkFycmF5VG9Eb3VibGVWZWN0b3IoanNvbl9hcnJheSwgJnYpOwotICAgICAgaWYgKHYuc2l6ZSgp
ICE9IDMpIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJJbmNvcnJlY3QgYXJyYXkgc2l6ZSBmb3Ig
IiA8PCBwYXJhbV9uYW1lIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgUlRDX0NIRUNLKGZhbHNlKTsK
LSAgICAgIH0KLSAgICAgIHBhcmFtLT5lbnJfdHJhbnNwYXJlbnQgPSBzdGF0aWNfY2FzdDxmbG9h
dD4odlswXSk7Ci0gICAgICBwYXJhbS0+ZW5yX3N1cHByZXNzID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHZbMV0pOwotICAgICAgcGFyYW0tPmVtcl90cmFuc3BhcmVudCA9IHN0YXRpY19jYXN0PGZsb2F0
Pih2WzJdKTsKLSAgICB9Ci0gIH0KLQotICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBQYXJzZUZpbGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKSBjb25zdCB7Ci0gICAgRWNob0NhbmNlbGxlcjND
b25maWcgY2ZnOwotICAgIEpzb246OlZhbHVlIHJvb3Q7Ci0gICAgc3RkOjpzdHJpbmcgczsKLSAg
ICBzdGQ6OnN0cmluZyBqc29uX3N0cmluZzsKLSAgICBzdGQ6Omlmc3RyZWFtIGYoZmlsZW5hbWUu
Y19zdHIoKSk7Ci0KLSAgICBpZiAoZi5mYWlsKCkpIHsKLSAgICAgIHN0ZDo6Y291dCA8PCAiRmFp
bGVkIHRvIG9wZW4gdGhlIGZpbGUgIiA8PCBmaWxlbmFtZSA8PCBzdGQ6OmVuZGw7Ci0gICAgICBS
VENfQ0hFQ0soZmFsc2UpOwotICAgIH0KLQotICAgIHdoaWxlIChzdGQ6OmdldGxpbmUoZiwgcykp
IHsKLSAgICAgIGpzb25fc3RyaW5nICs9IHM7Ci0gICAgfQotICAgIGJvb2wgc3VjY2VzcyA9IEpz
b246OlJlYWRlcigpLnBhcnNlKGpzb25fc3RyaW5nLCByb290KTsKLSAgICBpZiAoIXN1Y2Nlc3Mp
IHsKLSAgICAgIHN0ZDo6Y291dCA8PCAiSW5jb3JyZWN0IEpTT04gZm9ybWF0OiIgPDwgc3RkOjpl
bmRsOwotICAgICAgc3RkOjpjb3V0IDw8IGpzb25fc3RyaW5nIDw8IHN0ZDo6ZW5kbDsKLSAgICAg
IFJUQ19DSEVDSyhmYWxzZSk7Ci0gICAgfQotCi0gICAgSnNvbjo6VmFsdWUgc2VjdGlvbjsKLSAg
ICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsICJkZWxheSIsICZzZWN0aW9u
KSkgewotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJkZWZhdWx0X2RlbGF5IiwgJmNmZy5kZWxh
eS5kZWZhdWx0X2RlbGF5KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZG93bl9zYW1wbGlu
Z19mYWN0b3IiLAotICAgICAgICAgICAgICAgICZjZmcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0
b3IpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJudW1fZmlsdGVycyIsICZjZmcuZGVsYXku
bnVtX2ZpbHRlcnMpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJhcGlfY2FsbF9qaXR0ZXJf
YmxvY2tzIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmRlbGF5LmFwaV9jYWxsX2ppdHRlcl9ibG9j
a3MpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtaW5fZWNob19wYXRoX2RlbGF5X2Jsb2Nr
cyIsCi0gICAgICAgICAgICAgICAgJmNmZy5kZWxheS5taW5fZWNob19wYXRoX2RlbGF5X2Jsb2Nr
cyk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImRlbGF5X2hlYWRyb29tX2Jsb2NrcyIsCi0g
ICAgICAgICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9oZWFkcm9vbV9ibG9ja3MpOwotICAgICAg
UmVhZFBhcmFtKHNlY3Rpb24sICJoeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzIiwKLSAgICAgICAg
ICAgICAgICAmY2ZnLmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MpOwotICAgICAgUmVh
ZFBhcmFtKHNlY3Rpb24sICJoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzIiwKLSAgICAgICAgICAg
ICAgICAmY2ZnLmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3MpOwotICAgICAgUmVhZFBh
cmFtKHNlY3Rpb24sICJza2V3X2h5c3RlcmVzaXNfYmxvY2tzIiwKLSAgICAgICAgICAgICAgICAm
Y2ZnLmRlbGF5LnNrZXdfaHlzdGVyZXNpc19ibG9ja3MpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rp
b24sICJmaXhlZF9jYXB0dXJlX2RlbGF5X3NhbXBsZXMiLAotICAgICAgICAgICAgICAgICZjZmcu
ZGVsYXkuZml4ZWRfY2FwdHVyZV9kZWxheV9zYW1wbGVzKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAiZGVsYXlfZXN0aW1hdGVfc21vb3RoaW5nIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmRl
bGF5LmRlbGF5X2VzdGltYXRlX3Ntb290aGluZyk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwg
ImRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rpb25fdGhyZXNob2xkIiwKLSAgICAgICAgICAgICAgICAm
Y2ZnLmRlbGF5LmRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rpb25fdGhyZXNob2xkKTsKLQotICAgICAg
SnNvbjo6VmFsdWUgc3Vic2VjdGlvbjsKLSAgICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25P
YmplY3Qoc2VjdGlvbiwgImRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1YnNlY3Rpb24pKSB7Ci0gICAgICAgIFJlYWRQ
YXJhbShzdWJzZWN0aW9uLCAiaW5pdGlhbCIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLmRlbGF5
LmRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzLmluaXRpYWwpOwotICAgICAgICBSZWFkUGFyYW0o
c3Vic2VjdGlvbiwgImNvbnZlcmdlZCIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLmRlbGF5LmRl
bGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzLmNvbnZlcmdlZCk7Ci0gICAgICB9Ci0gICAgfQotCi0g
ICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCAiZmlsdGVyIiwgJnNlY3Rp
b24pKSB7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1haW4iLCAmY2ZnLmZpbHRlci5tYWlu
KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAic2hhZG93IiwgJmNmZy5maWx0ZXIuc2hhZG93
KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWFpbl9pbml0aWFsIiwgJmNmZy5maWx0ZXIu
bWFpbl9pbml0aWFsKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAic2hhZG93X2luaXRpYWwi
LCAmY2ZnLmZpbHRlci5zaGFkb3dfaW5pdGlhbCk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwg
ImNvbmZpZ19jaGFuZ2VfZHVyYXRpb25fYmxvY2tzIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmZp
bHRlci5jb25maWdfY2hhbmdlX2R1cmF0aW9uX2Jsb2Nrcyk7Ci0gICAgICBSZWFkUGFyYW0oc2Vj
dGlvbiwgImluaXRpYWxfc3RhdGVfc2Vjb25kcyIsCi0gICAgICAgICAgICAgICAgJmNmZy5maWx0
ZXIuaW5pdGlhbF9zdGF0ZV9zZWNvbmRzKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiY29u
c2VydmF0aXZlX2luaXRpYWxfcGhhc2UiLAotICAgICAgICAgICAgICAgICZjZmcuZmlsdGVyLmNv
bnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZW5h
YmxlX3NoYWRvd19maWx0ZXJfb3V0cHV0X3VzYWdlIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmZp
bHRlci5lbmFibGVfc2hhZG93X2ZpbHRlcl9vdXRwdXRfdXNhZ2UpOwotICAgIH0KLQotICAgIGlm
IChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qocm9vdCwgImVybGUiLCAmc2VjdGlvbikpIHsK
LSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWluIiwgJmNmZy5lcmxlLm1pbik7Ci0gICAgICBS
ZWFkUGFyYW0oc2VjdGlvbiwgIm1heF9sIiwgJmNmZy5lcmxlLm1heF9sKTsKLSAgICAgIFJlYWRQ
YXJhbShzZWN0aW9uLCAibWF4X2giLCAmY2ZnLmVybGUubWF4X2gpOwotICAgICAgUmVhZFBhcmFt
KHNlY3Rpb24sICJvbnNldF9kZXRlY3Rpb24iLCAmY2ZnLmVybGUub25zZXRfZGV0ZWN0aW9uKTsK
LSAgICB9Ci0KLSAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsICJlcF9z
dHJlbmd0aCIsICZzZWN0aW9uKSkgewotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJsZiIsICZj
ZmcuZXBfc3RyZW5ndGgubGYpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtZiIsICZjZmcu
ZXBfc3RyZW5ndGgubWYpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJoZiIsICZjZmcuZXBf
c3RyZW5ndGguaGYpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJkZWZhdWx0X2xlbiIsICZj
ZmcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4pOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJy
ZXZlcmJfYmFzZWRfb25fcmVuZGVyIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVwX3N0cmVuZ3Ro
LnJldmVyYl9iYXNlZF9vbl9yZW5kZXIpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJlY2hv
X2Nhbl9zYXR1cmF0ZSIsCi0gICAgICAgICAgICAgICAgJmNmZy5lcF9zdHJlbmd0aC5lY2hvX2Nh
bl9zYXR1cmF0ZSk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImJvdW5kZWRfZXJsIiwgJmNm
Zy5lcF9zdHJlbmd0aC5ib3VuZGVkX2VybCk7Ci0gICAgfQotCi0gICAgaWYgKHJ0Yzo6R2V0VmFs
dWVGcm9tSnNvbk9iamVjdChyb290LCAiZ2Fpbl9tYXNrIiwgJnNlY3Rpb24pKSB7Ci0gICAgICBS
ZWFkUGFyYW0oc2VjdGlvbiwgIm0xIiwgJmNmZy5nYWluX21hc2subTEpOwotICAgICAgUmVhZFBh
cmFtKHNlY3Rpb24sICJtMiIsICZjZmcuZ2Fpbl9tYXNrLm0yKTsKLSAgICAgIFJlYWRQYXJhbShz
ZWN0aW9uLCAibTMiLCAmY2ZnLmdhaW5fbWFzay5tMyk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlv
biwgIm01IiwgJmNmZy5nYWluX21hc2subTUpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJt
NiIsICZjZmcuZ2Fpbl9tYXNrLm02KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibTciLCAm
Y2ZnLmdhaW5fbWFzay5tNyk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm04IiwgJmNmZy5n
YWluX21hc2subTgpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtOSIsICZjZmcuZ2Fpbl9t
YXNrLm05KTsKLQotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJnYWluX2N1cnZlX29mZnNldCIs
ICZjZmcuZ2Fpbl9tYXNrLmdhaW5fY3VydmVfb2Zmc2V0KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAiZ2Fpbl9jdXJ2ZV9zbG9wZSIsICZjZmcuZ2Fpbl9tYXNrLmdhaW5fY3VydmVfc2xvcGUp
OwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJ0ZW1wb3JhbF9tYXNraW5nX2xmIiwKLSAgICAg
ICAgICAgICAgICAmY2ZnLmdhaW5fbWFzay50ZW1wb3JhbF9tYXNraW5nX2xmKTsKLSAgICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAidGVtcG9yYWxfbWFza2luZ19oZiIsCi0gICAgICAgICAgICAgICAg
JmNmZy5nYWluX21hc2sudGVtcG9yYWxfbWFza2luZ19oZik7Ci0gICAgICBSZWFkUGFyYW0oc2Vj
dGlvbiwgInRlbXBvcmFsX21hc2tpbmdfbGZfYmFuZHMiLAotICAgICAgICAgICAgICAgICZjZmcu
Z2Fpbl9tYXNrLnRlbXBvcmFsX21hc2tpbmdfbGZfYmFuZHMpOwotICAgIH0KLQotICAgIGlmIChy
dGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qocm9vdCwgImVjaG9fYXVkaWJpbGl0eSIsICZzZWN0
aW9uKSkgewotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJsb3dfcmVuZGVyX2xpbWl0IiwKLSAg
ICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS5sb3dfcmVuZGVyX2xpbWl0KTsKLSAg
ICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibm9ybWFsX3JlbmRlcl9saW1pdCIsCi0gICAgICAgICAg
ICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHkubm9ybWFsX3JlbmRlcl9saW1pdCk7Ci0KLSAgICAg
IFJlYWRQYXJhbShzZWN0aW9uLCAiZmxvb3JfcG93ZXIiLCAmY2ZnLmVjaG9fYXVkaWJpbGl0eS5m
bG9vcl9wb3dlcik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImF1ZGliaWxpdHlfdGhyZXNo
b2xkX2xmIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS5hdWRpYmlsaXR5
X3RocmVzaG9sZF9sZik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImF1ZGliaWxpdHlfdGhy
ZXNob2xkX21mIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS5hdWRpYmls
aXR5X3RocmVzaG9sZF9tZik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImF1ZGliaWxpdHlf
dGhyZXNob2xkX2hmIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS5hdWRp
YmlsaXR5X3RocmVzaG9sZF9oZik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInVzZV9zdGF0
aW9uYXJ5X3Byb3BlcnRpZXMiLAotICAgICAgICAgICAgICAgICZjZmcuZWNob19hdWRpYmlsaXR5
LnVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXMpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJ1
c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVzX2F0X2luaXQiLAotICAgICAgICAgICAgICAgICZjZmcu
ZWNob19hdWRpYmlsaXR5LnVzZV9zdGF0aW9uYXJpdHlfcHJvcGVydGllc19hdF9pbml0KTsKLSAg
ICB9Ci0KLSAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHJvb3QsICJlY2hvX3Jl
bW92YWxfY29udHJvbCIsICZzZWN0aW9uKSkgewotICAgICAgSnNvbjo6VmFsdWUgc3Vic2VjdGlv
bjsKLSAgICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qoc2VjdGlvbiwgImdhaW5f
cmFtcHVwIiwgJnN1YnNlY3Rpb24pKSB7Ci0gICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAi
aW5pdGlhbF9nYWluIiwKLSAgICAgICAgICAgICAgICAgICZjZmcuZWNob19yZW1vdmFsX2NvbnRy
b2wuZ2Fpbl9yYW1wdXAuaW5pdGlhbF9nYWluKTsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rp
b24sICJmaXJzdF9ub25femVyb19nYWluIiwKLSAgICAgICAgICAgICAgICAgICZjZmcuZWNob19y
ZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZmlyc3Rfbm9uX3plcm9fZ2Fpbik7Ci0gICAgICAg
IFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibm9uX3plcm9fZ2Fpbl9ibG9ja3MiLAotICAgICAgICAg
ICAgICAgICAgJmNmZy5lY2hvX3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5ub25femVyb19n
YWluX2Jsb2Nrcyk7Ci0gICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiZnVsbF9nYWluX2Js
b2NrcyIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5f
cmFtcHVwLmZ1bGxfZ2Fpbl9ibG9ja3MpOwotICAgICAgfQotICAgICAgUmVhZFBhcmFtKHNlY3Rp
b24sICJoYXNfY2xvY2tfZHJpZnQiLAotICAgICAgICAgICAgICAgICZjZmcuZWNob19yZW1vdmFs
X2NvbnRyb2wuaGFzX2Nsb2NrX2RyaWZ0KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibGlu
ZWFyX2FuZF9zdGFibGVfZWNob19wYXRoIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVt
b3ZhbF9jb250cm9sLmxpbmVhcl9hbmRfc3RhYmxlX2VjaG9fcGF0aCk7Ci0gICAgfQotCi0gICAg
aWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCAiZWNob19tb2RlbCIsICZzZWN0
aW9uKSkgewotICAgICAgSnNvbjo6VmFsdWUgc3Vic2VjdGlvbjsKLSAgICAgIFJlYWRQYXJhbShz
ZWN0aW9uLCAibm9pc2VfZmxvb3JfaG9sZCIsICZjZmcuZWNob19tb2RlbC5ub2lzZV9mbG9vcl9o
b2xkKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWluX25vaXNlX2Zsb29yX3Bvd2VyIiwK
LSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fbW9kZWwubWluX25vaXNlX2Zsb29yX3Bvd2VyKTsK
LSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAic3RhdGlvbmFyeV9nYXRlX3Nsb3BlIiwKLSAgICAg
ICAgICAgICAgICAmY2ZnLmVjaG9fbW9kZWwuc3RhdGlvbmFyeV9nYXRlX3Nsb3BlKTsKLSAgICAg
IFJlYWRQYXJhbShzZWN0aW9uLCAibm9pc2VfZ2F0ZV9wb3dlciIsICZjZmcuZWNob19tb2RlbC5u
b2lzZV9nYXRlX3Bvd2VyKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibm9pc2VfZ2F0ZV9z
bG9wZSIsICZjZmcuZWNob19tb2RlbC5ub2lzZV9nYXRlX3Nsb3BlKTsKLSAgICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAicmVuZGVyX3ByZV93aW5kb3dfc2l6ZSIsCi0gICAgICAgICAgICAgICAgJmNm
Zy5lY2hvX21vZGVsLnJlbmRlcl9wcmVfd2luZG93X3NpemUpOwotICAgICAgUmVhZFBhcmFtKHNl
Y3Rpb24sICJyZW5kZXJfcG9zdF93aW5kb3dfc2l6ZSIsCi0gICAgICAgICAgICAgICAgJmNmZy5l
Y2hvX21vZGVsLnJlbmRlcl9wb3N0X3dpbmRvd19zaXplKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAicmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0IiwKLSAgICAgICAgICAgICAgICAmY2Zn
LmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0KTsKLSAgICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAicmVuZGVyX3Bvc3Rfd2luZG93X3NpemVfaW5pdCIsCi0gICAgICAgICAgICAg
ICAgJmNmZy5lY2hvX21vZGVsLnJlbmRlcl9wb3N0X3dpbmRvd19zaXplX2luaXQpOwotICAgICAg
UmVhZFBhcmFtKHNlY3Rpb24sICJub25saW5lYXJfaG9sZCIsICZjZmcuZWNob19tb2RlbC5ub25s
aW5lYXJfaG9sZCk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5vbmxpbmVhcl9yZWxlYXNl
IiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fbW9kZWwubm9ubGluZWFyX3JlbGVhc2UpOwot
ICAgIH0KLQotICAgIEpzb246OlZhbHVlIHN1YnNlY3Rpb247Ci0gICAgaWYgKHJ0Yzo6R2V0VmFs
dWVGcm9tSnNvbk9iamVjdChyb290LCAic3VwcHJlc3NvciIsICZzZWN0aW9uKSkgewotICAgICAg
UmVhZFBhcmFtKHNlY3Rpb24sICJuZWFyZW5kX2F2ZXJhZ2VfYmxvY2tzIiwKLSAgICAgICAgICAg
ICAgICAmY2ZnLnN1cHByZXNzb3IubmVhcmVuZF9hdmVyYWdlX2Jsb2Nrcyk7Ci0KLSAgICAgIGlm
IChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qoc2VjdGlvbiwgIm5vcm1hbF90dW5pbmciLCAm
c3Vic2VjdGlvbikpIHsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJtYXNrX2xmIiwg
JmNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19sZik7Ci0gICAgICAgIFJlYWRQYXJh
bShzdWJzZWN0aW9uLCAibWFza19oZiIsICZjZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1h
c2tfaGYpOwotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9pbmNfZmFjdG9yIiwK
LSAgICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1heF9pbmNf
ZmFjdG9yKTsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJtYXhfZGVjX2ZhY3Rvcl9s
ZiIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXhf
ZGVjX2ZhY3Rvcl9sZik7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpz
b25PYmplY3Qoc2VjdGlvbiwgIm5lYXJlbmRfdHVuaW5nIiwgJnN1YnNlY3Rpb24pKSB7Ci0gICAg
ICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWFza19sZiIsCi0gICAgICAgICAgICAgICAgICAm
Y2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZik7Ci0gICAgICAgIFJlYWRQYXJh
bShzdWJzZWN0aW9uLCAibWFza19oZiIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNz
b3IubmVhcmVuZF90dW5pbmcubWFza19oZik7Ci0gICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9u
LCAibWF4X2luY19mYWN0b3IiLAotICAgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLm5l
YXJlbmRfdHVuaW5nLm1heF9pbmNfZmFjdG9yKTsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rp
b24sICJtYXhfZGVjX2ZhY3Rvcl9sZiIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNz
b3IubmVhcmVuZF90dW5pbmcubWF4X2RlY19mYWN0b3JfbGYpOwotICAgICAgfQotCi0gICAgICBp
ZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rpb24sICJkb21pbmFudF9uZWFyZW5k
X2RldGVjdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJz
ZWN0aW9uKSkgewotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgImVucl90aHJlc2hvbGQi
LAotICAgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRfZGV0
ZWN0aW9uLmVucl90aHJlc2hvbGQpOwotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgInNu
cl90aHJlc2hvbGQiLAotICAgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmRvbWluYW50
X25lYXJlbmRfZGV0ZWN0aW9uLnNucl90aHJlc2hvbGQpOwotICAgICAgICBSZWFkUGFyYW0oc3Vi
c2VjdGlvbiwgImhvbGRfZHVyYXRpb24iLAotICAgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVz
c29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmhvbGRfZHVyYXRpb24pOwotICAgICAgICBS
ZWFkUGFyYW0oc3Vic2VjdGlvbiwgInRyaWdnZXJfdGhyZXNob2xkIiwKLSAgICAgICAgICAgICAg
ICAgICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi50cmlnZ2VyX3Ro
cmVzaG9sZCk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmpl
Y3Qoc2VjdGlvbiwgImhpZ2hfYmFuZHNfc3VwcHJlc3Npb24iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmc3Vic2VjdGlvbikpIHsKLSAgICAgICAgUmVhZFBhcmFtKHN1
YnNlY3Rpb24sICJlbnJfdGhyZXNob2xkIiwKLSAgICAgICAgICAgICAgICAgICZjZmcuc3VwcHJl
c3Nvci5oaWdoX2JhbmRzX3N1cHByZXNzaW9uLmVucl90aHJlc2hvbGQpOwotICAgICAgICBSZWFk
UGFyYW0oc3Vic2VjdGlvbiwgIm1heF9nYWluX2R1cmluZ19lY2hvIiwKLSAgICAgICAgICAgICAg
ICAgICZjZmcuc3VwcHJlc3Nvci5oaWdoX2JhbmRzX3N1cHByZXNzaW9uLm1heF9nYWluX2R1cmlu
Z19lY2hvKTsKLSAgICAgIH0KLQotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJmbG9vcl9maXJz
dF9pbmNyZWFzZSIsCi0gICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmZsb29yX2ZpcnN0
X2luY3JlYXNlKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZW5mb3JjZV90cmFuc3BhcmVu
dCIsCi0gICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmVuZm9yY2VfdHJhbnNwYXJlbnQp
OwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJlbmZvcmNlX2VtcHR5X2hpZ2hlcl9iYW5kcyIs
Ci0gICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmVuZm9yY2VfZW1wdHlfaGlnaGVyX2Jh
bmRzKTsKLSAgICB9Ci0KLSAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwotICAgIHJldHVybiBj
Zmc7Ci0gIH0KLX07Ci0KIHZvaWQgQ29weUZyb21BdWRpb0ZyYW1lKGNvbnN0IEF1ZGlvRnJhbWUm
IHNyYywgQ2hhbm5lbEJ1ZmZlcjxmbG9hdD4qIGRlc3QpIHsKICAgUlRDX0NIRUNLX0VRKHNyYy5u
dW1fY2hhbm5lbHNfLCBkZXN0LT5udW1fY2hhbm5lbHMoKSk7CiAgIFJUQ19DSEVDS19FUShzcmMu
c2FtcGxlc19wZXJfY2hhbm5lbF8sIGRlc3QtPm51bV9mcmFtZXMoKSk7CkBAIC02OTUsNiArMTI2
LDEzIEBAIEF1ZGlvUHJvY2Vzc2luZ1NpbXVsYXRvcjo6QXVkaW9Qcm9jZXNzaW5nU2ltdWxhdG9y
KAogICAgICAgICAgIHNldHRpbmdzLmluaXRpYWxfbWljX2xldmVsLAogICAgICAgICAgIHNldHRp
bmdzXy5zaW11bGF0ZV9taWNfZ2FpbiA/ICpzZXR0aW5ncy5zaW11bGF0ZWRfbWljX2tpbmQgOiAw
KSwKICAgICAgIHdvcmtlcl9xdWV1ZV8oImZpbGVfd3JpdGVyX3Rhc2tfcXVldWUiKSB7CisgIFJU
Q19DSEVDSyghc2V0dGluZ3NfLmR1bXBfaW50ZXJuYWxfZGF0YSB8fCBXRUJSVENfQVBNX0RFQlVH
X0RVTVAgPT0gMSk7CisgIEFwbURhdGFEdW1wZXI6OlNldEFjdGl2YXRlZChzZXR0aW5nc18uZHVt
cF9pbnRlcm5hbF9kYXRhKTsKKyAgaWYgKHNldHRpbmdzXy5kdW1wX2ludGVybmFsX2RhdGFfb3V0
cHV0X2Rpci5oYXNfdmFsdWUoKSkgeworICAgIEFwbURhdGFEdW1wZXI6OlNldE91dHB1dERpcmVj
dG9yeSgKKyAgICAgICAgc2V0dGluZ3NfLmR1bXBfaW50ZXJuYWxfZGF0YV9vdXRwdXRfZGlyLnZh
bHVlKCkpOworICB9CisKICAgaWYgKHNldHRpbmdzXy5lZF9ncmFwaF9vdXRwdXRfZmlsZW5hbWUg
JiYKICAgICAgICFzZXR0aW5nc18uZWRfZ3JhcGhfb3V0cHV0X2ZpbGVuYW1lLT5lbXB0eSgpKSB7
CiAgICAgcmVzaWR1YWxfZWNob19saWtlbGlob29kX2dyYXBoX3dyaXRlcl8ub3BlbigKQEAgLTc3
Niw5ICsyMTQsOSBAQCB2b2lkIEF1ZGlvUHJvY2Vzc2luZ1NpbXVsYXRvcjo6UHJvY2Vzc1N0cmVh
bShib29sIGZpeGVkX2ludGVyZmFjZSkgewogICB9CiAKICAgaWYgKHJlc2lkdWFsX2VjaG9fbGlr
ZWxpaG9vZF9ncmFwaF93cml0ZXJfLmlzX29wZW4oKSkgewotICAgIGF1dG8gc3RhdHMgPSBhcF8t
PkdldFN0YXRpc3RpY3MoKTsKLSAgICByZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2RfZ3JhcGhfd3Jp
dGVyXyA8PCBzdGF0cy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2QKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCAiOworICAgIGF1dG8gc3RhdHMgPSBhcF8t
PkdldFN0YXRpc3RpY3ModHJ1ZSAvKmhhc19yZW1vdGVfdHJhY2tzKi8pOworICAgIHJlc2lkdWFs
X2VjaG9fbGlrZWxpaG9vZF9ncmFwaF93cml0ZXJfCisgICAgICAgIDw8IHN0YXRzLnJlc2lkdWFs
X2VjaG9fbGlrZWxpaG9vZC52YWx1ZV9vcigtMS5mKSA8PCAiLCAiOwogICB9CiAKICAgKytudW1f
cHJvY2Vzc19zdHJlYW1fY2FsbHNfOwpAQCAtOTE4LDEwICszNTYsMTMgQEAgdm9pZCBBdWRpb1By
b2Nlc3NpbmdTaW11bGF0b3I6OkNyZWF0ZUF1ZGlvUHJvY2Vzc29yKCkgewogICB9CiAgIGlmIChz
ZXR0aW5nc18udXNlX2FnYzIpIHsKICAgICBhcG1fY29uZmlnLmdhaW5fY29udHJvbGxlcjIuZW5h
YmxlZCA9ICpzZXR0aW5nc18udXNlX2FnYzI7Ci0gICAgYXBtX2NvbmZpZy5nYWluX2NvbnRyb2xs
ZXIyLmZpeGVkX2dhaW5fZGIgPSBzZXR0aW5nc18uYWdjMl9maXhlZF9nYWluX2RiOworICAgIGFw
bV9jb25maWcuZ2Fpbl9jb250cm9sbGVyMi5maXhlZF9kaWdpdGFsLmdhaW5fZGIgPQorICAgICAg
ICBzZXR0aW5nc18uYWdjMl9maXhlZF9nYWluX2RiOwogICAgIGlmIChzZXR0aW5nc18uYWdjMl91
c2VfYWRhcHRpdmVfZ2FpbikgewotICAgICAgYXBtX2NvbmZpZy5nYWluX2NvbnRyb2xsZXIyLmFk
YXB0aXZlX2RpZ2l0YWxfbW9kZSA9CisgICAgICBhcG1fY29uZmlnLmdhaW5fY29udHJvbGxlcjIu
YWRhcHRpdmVfZGlnaXRhbC5lbmFibGVkID0KICAgICAgICAgICAqc2V0dGluZ3NfLmFnYzJfdXNl
X2FkYXB0aXZlX2dhaW47CisgICAgICBhcG1fY29uZmlnLmdhaW5fY29udHJvbGxlcjIuYWRhcHRp
dmVfZGlnaXRhbC5sZXZlbF9lc3RpbWF0b3IgPQorICAgICAgICAgIHNldHRpbmdzXy5hZ2MyX2Fk
YXB0aXZlX2xldmVsX2VzdGltYXRvcjsKICAgICB9CiAgIH0KICAgaWYgKHNldHRpbmdzXy51c2Vf
cHJlX2FtcGxpZmllcikgewpAQCAtOTQ0LDcgKzM4NSw3IEBAIHZvaWQgQXVkaW9Qcm9jZXNzaW5n
U2ltdWxhdG9yOjpDcmVhdGVBdWRpb1Byb2Nlc3NvcigpIHsKICAgICAgIGlmIChzZXR0aW5nc18u
dXNlX3ZlcmJvc2VfbG9nZ2luZykgewogICAgICAgICBzdGQ6OmNvdXQgPDwgIlJlYWRpbmcgQUVD
MyBQYXJhbWV0ZXJzIGZyb20gSlNPTiBpbnB1dC4iIDw8IHN0ZDo6ZW5kbDsKICAgICAgIH0KLSAg
ICAgIGNmZyA9IEFlYzNQYXJhbWV0ZXJzUGFyc2VyOjpQYXJzZSgqc2V0dGluZ3NfLmFlYzNfc2V0
dGluZ3NfZmlsZW5hbWUpOworICAgICAgY2ZnID0gUmVhZEFlYzNDb25maWdGcm9tSnNvbkZpbGUo
KnNldHRpbmdzXy5hZWMzX3NldHRpbmdzX2ZpbGVuYW1lKTsKICAgICB9CiAgICAgZWNob19jb250
cm9sX2ZhY3RvcnkucmVzZXQobmV3IEVjaG9DYW5jZWxsZXIzRmFjdG9yeShjZmcpKTsKIApAQCAt
OTUyLDcgKzM5Myw3IEBAIHZvaWQgQXVkaW9Qcm9jZXNzaW5nU2ltdWxhdG9yOjpDcmVhdGVBdWRp
b1Byb2Nlc3NvcigpIHsKICAgICAgIGlmICghc2V0dGluZ3NfLnVzZV9xdWlldF9vdXRwdXQpIHsK
ICAgICAgICAgc3RkOjpjb3V0IDw8ICJBRUMzIHNldHRpbmdzOiIgPDwgc3RkOjplbmRsOwogICAg
ICAgfQotICAgICAgUHJpbnRBZWMzUGFyYW1ldGVyVmFsdWVzKGNmZyk7CisgICAgICBzdGQ6OmNv
dXQgPDwgQWVjM0NvbmZpZ1RvSnNvblN0cmluZyhjZmcpIDw8IHN0ZDo6ZW5kbDsKICAgICB9CiAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvYXVkaW9fcHJvY2Vzc2luZ19zaW11bGF0
b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy90ZXN0L2F1ZGlvX3Byb2Nlc3Npbmdfc2ltdWxhdG9yLmgKaW5kZXgg
NGU1ODBiNGZjZWQ5NTQ4ZDU4YWMyZDU1NDQzZjQ0NmZiYjUzZTdjMi4uNGI2NzUzN2I0OWE1YjAw
YjZhNTdkMjYxMDkyNDUyMmUyZmI4MjZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvYXVk
aW9fcHJvY2Vzc2luZ19zaW11bGF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRpb19wcm9j
ZXNzaW5nX3NpbXVsYXRvci5oCkBAIC03NSw2ICs3NSw4IEBAIHN0cnVjdCBTaW11bGF0aW9uU2V0
dGluZ3MgewogICBhYnNsOjpvcHRpb25hbDxpbnQ+IGFnY19jb21wcmVzc2lvbl9nYWluOwogICBh
YnNsOjpvcHRpb25hbDxib29sPiBhZ2MyX3VzZV9hZGFwdGl2ZV9nYWluOwogICBmbG9hdCBhZ2My
X2ZpeGVkX2dhaW5fZGI7CisgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxl
cjI6OkxldmVsRXN0aW1hdG9yCisgICAgICBhZ2MyX2FkYXB0aXZlX2xldmVsX2VzdGltYXRvcjsK
ICAgZmxvYXQgcHJlX2FtcGxpZmllcl9nYWluX2ZhY3RvcjsKICAgYWJzbDo6b3B0aW9uYWw8aW50
PiB2YWRfbGlrZWxpaG9vZDsKICAgYWJzbDo6b3B0aW9uYWw8aW50PiBuc19sZXZlbDsKQEAgLTky
LDYgKzk0LDggQEAgc3RydWN0IFNpbXVsYXRpb25TZXR0aW5ncyB7CiAgIGJvb2wgZml4ZWRfaW50
ZXJmYWNlID0gZmFsc2U7CiAgIGJvb2wgc3RvcmVfaW50ZXJtZWRpYXRlX291dHB1dCA9IGZhbHNl
OwogICBib29sIHByaW50X2FlYzNfcGFyYW1ldGVyX3ZhbHVlcyA9IGZhbHNlOworICBib29sIGR1
bXBfaW50ZXJuYWxfZGF0YSA9IGZhbHNlOworICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4g
ZHVtcF9pbnRlcm5hbF9kYXRhX291dHB1dF9kaXI7CiAgIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3Ry
aW5nPiBjdXN0b21fY2FsbF9vcmRlcl9maWxlbmFtZTsKICAgYWJzbDo6b3B0aW9uYWw8c3RkOjpz
dHJpbmc+IGFlYzNfc2V0dGluZ3NfZmlsZW5hbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3Rlc3QvYXVkaW9wcm9jX2Zsb2F0X2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRpb3Byb2Nf
ZmxvYXRfaW1wbC5jYwppbmRleCAzYTQ0ODg3N2Q4MTlhZDExNjAxMTczYjA5NTdlY2IzZGFkYjEy
YzUxLi4wZmYyODA2ZTZkNWRlY2IwNmQ2ODc3MDBiNmQyM2M0MzIwYzE1NmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdGVzdC9hdWRpb3Byb2NfZmxvYXRfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dGVzdC9hdWRpb3Byb2NfZmxvYXRfaW1wbC5jYwpAQCAtMTQsMTMgKzE0LDE3IEBACiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1
ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmcu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hZWNfZHVtcF9iYXNl
ZF9zaW11bGF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9h
dWRpb19wcm9jZXNzaW5nX3NpbXVsYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy90ZXN0L2F1ZGlvcHJvY19mbG9hdF9pbXBsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL3Rlc3Qvd2F2X2Jhc2VkX3NpbXVsYXRvci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IG5hbWVzcGFjZSB0ZXN0IHsKQEAgLTM3LDE1NSArNDEsMTg1IEBAIGNvbnN0IGNoYXIga1VzYWdl
RGVzY3JpcHRpb25bXSA9CiAgICAgInByb2Nlc3NpbmcgbW9kdWxlLCBlaXRoZXIgYmFzZWQgb24g
d2F2IGZpbGVzIG9yICIKICAgICAicHJvdG9idWYgZGVidWcgZHVtcCByZWNvcmRpbmdzLlxuIjsK
IAotREVGSU5FX3N0cmluZyhkdW1wX2lucHV0LCAiIiwgIkFlYyBkdW1wIGlucHV0IGZpbGVuYW1l
Iik7Ci1ERUZJTkVfc3RyaW5nKGR1bXBfb3V0cHV0LCAiIiwgIkFlYyBkdW1wIG91dHB1dCBmaWxl
bmFtZSIpOwotREVGSU5FX3N0cmluZyhpLCAiIiwgIkZvcndhcmQgc3RyZWFtIGlucHV0IHdhdiBm
aWxlbmFtZSIpOwotREVGSU5FX3N0cmluZyhvLCAiIiwgIkZvcndhcmQgc3RyZWFtIG91dHB1dCB3
YXYgZmlsZW5hbWUiKTsKLURFRklORV9zdHJpbmcocmksICIiLCAiUmV2ZXJzZSBzdHJlYW0gaW5w
dXQgd2F2IGZpbGVuYW1lIik7Ci1ERUZJTkVfc3RyaW5nKHJvLCAiIiwgIlJldmVyc2Ugc3RyZWFt
IG91dHB1dCB3YXYgZmlsZW5hbWUiKTsKLURFRklORV9zdHJpbmcoYXJ0aWZpY2lhbF9uZWFyZW5k
LCAiIiwgIkFydGlmaWNpYWwgbmVhcmVuZCB3YXYgZmlsZW5hbWUiKTsKLURFRklORV9pbnQob3V0
cHV0X251bV9jaGFubmVscywKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVl
LAotICAgICAgICAgICAiTnVtYmVyIG9mIGZvcndhcmQgc3RyZWFtIG91dHB1dCBjaGFubmVscyIp
OwotREVGSU5FX2ludChyZXZlcnNlX291dHB1dF9udW1fY2hhbm5lbHMsCi0gICAgICAgICAgIGtQ
YXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIk51bWJlciBvZiBSZXZlcnNl
IHN0cmVhbSBvdXRwdXQgY2hhbm5lbHMiKTsKLURFRklORV9pbnQob3V0cHV0X3NhbXBsZV9yYXRl
X2h6LAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAg
ICJGb3J3YXJkIHN0cmVhbSBvdXRwdXQgc2FtcGxlIHJhdGUgaW4gSHoiKTsKLURFRklORV9pbnQo
cmV2ZXJzZV9vdXRwdXRfc2FtcGxlX3JhdGVfaHosCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RT
cGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIlJldmVyc2Ugc3RyZWFtIG91dHB1dCBzYW1wbGUg
cmF0ZSBpbiBIeiIpOwotREVGSU5FX2Jvb2woZml4ZWRfaW50ZXJmYWNlLAotICAgICAgICAgICAg
ZmFsc2UsCi0gICAgICAgICAgICAiVXNlIHRoZSBmaXhlZCBpbnRlcmZhY2Ugd2hlbiBvcGVyYXRp
bmcgb24gd2F2IGZpbGVzIik7Ci1ERUZJTkVfaW50KGFlYywKLSAgICAgICAgICAga1BhcmFtZXRl
ck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZh
dGUoMCkgdGhlIGVjaG8gY2FuY2VsbGVyIik7Ci1ERUZJTkVfaW50KGFlY20sCi0gICAgICAgICAg
IGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBv
ciBkZWFjdGl2YXRlKDApIHRoZSBtb2JpbGUgZWNobyBjb250cm9sbGVyIik7Ci1ERUZJTkVfaW50
KGVkLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAg
ICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSAoMCkgdGhlIHJlc2lkdWFsIGVjaG8gZGV0ZWN0
b3IiKTsKLURFRklORV9zdHJpbmcoZWRfZ3JhcGgsICIiLCAiT3V0cHV0IGZpbGVuYW1lIGZvciBn
cmFwaCBvZiBlY2hvIGxpa2VsaWhvb2QiKTsKLURFRklORV9pbnQoYWdjLAotICAgICAgICAgICBr
UGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3Ig
ZGVhY3RpdmF0ZSgwKSB0aGUgQUdDIik7Ci1ERUZJTkVfaW50KGFnYzIsCi0gICAgICAgICAgIGtQ
YXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBk
ZWFjdGl2YXRlKDApIHRoZSBBR0MyIik7Ci1ERUZJTkVfaW50KHByZV9hbXBsaWZpZXIsCi0gICAg
ICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2YXRl
ICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBwcmUgYW1wbGlmaWVyIik7Ci1ERUZJTkVfaW50KGhw
ZiwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAi
QWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIGhpZ2gtcGFzcyBmaWx0ZXIiKTsKLURF
RklORV9pbnQobnMsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAg
ICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBub2lzZSBzdXBwcmVz
c29yIik7Ci1ERUZJTkVfaW50KHRzLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVk
VmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgdHJh
bnNpZW50IHN1cHByZXNzb3IiKTsKLURFRklORV9pbnQodmFkLAotICAgICAgICAgICBrUGFyYW1l
dGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3Rp
dmF0ZSgwKSB0aGUgdm9pY2UgYWN0aXZpdHkgZGV0ZWN0b3IiKTsKLURFRklORV9pbnQobGUsCi0g
ICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2
YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBsZXZlbCBlc3RpbWF0b3IiKTsKLURFRklORV9i
b29sKGFsbF9kZWZhdWx0LAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiQWN0aXZh
dGUgYWxsIG9mIHRoZSBkZWZhdWx0IGNvbXBvbmVudHMgKHdpbGwgYmUgb3ZlcnJpZGRlbiBieSBh
bnkgIgotICAgICAgICAgICAgIm90aGVyIHNldHRpbmdzKSIpOwotREVGSU5FX2ludChhZWNfc3Vw
cHJlc3Npb25fbGV2ZWwsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwK
LSAgICAgICAgICAgIlNldCB0aGUgYWVjIHN1cHByZXNzaW9uIGxldmVsICgwLTIpIik7Ci1ERUZJ
TkVfaW50KGRlbGF5X2Fnbm9zdGljLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVk
VmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgQUVD
IGRlbGF5IGFnbm9zdGljIG1vZGUiKTsKLURFRklORV9pbnQoZXh0ZW5kZWRfZmlsdGVyLAotICAg
ICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0
ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgQUVDIGV4dGVuZGVkIGZpbHRlciBtb2RlIik7Ci1E
RUZJTkVfaW50KGFlYzMsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwK
LSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBleHBlcmltZW50
YWwgQUVDIG1vZGUgQUVDMyIpOwotREVGSU5FX2ludChleHBlcmltZW50YWxfYWdjLAotICAgICAg
ICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAo
MSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgZXhwZXJpbWVudGFsIEFHQyIpOwotREVGSU5FX2ludChl
eHBlcmltZW50YWxfYWdjX2Rpc2FibGVfZGlnaXRhbF9hZGFwdGl2ZSwKLSAgICAgICAgICAga1Bh
cmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiRm9yY2UtZGVhY3RpdmF0ZSAo
MSkgZGlnaXRhbCBhZGFwdGF0aW9uIGluICIKLSAgICAgICAgICAgImV4cGVyaW1lbnRhbCBBR0Mu
IERpZ2l0YWwgYWRhcHRhdGlvbiBpcyBhY3RpdmUgYnkgZGVmYXVsdCAoMCkuIik7Ci1ERUZJTkVf
aW50KGV4cGVyaW1lbnRhbF9hZ2NfYW5hbHl6ZV9iZWZvcmVfYWVjLAotICAgICAgICAgICBrUGFy
YW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJNYWtlIGxldmVsIGVzdGltYXRp
b24gaGFwcGVuIGJlZm9yZSBBRUMiCi0gICAgICAgICAgICIgaW4gdGhlIGV4cGVyaW1lbnRhbCBB
R0MuIEFmdGVyIEFFQyBpcyB0aGUgZGVmYXVsdCAoMCkiKTsKLURFRklORV9pbnQoCitXRUJSVENf
REVGSU5FX3N0cmluZyhkdW1wX2lucHV0LCAiIiwgIkFlYyBkdW1wIGlucHV0IGZpbGVuYW1lIik7
CitXRUJSVENfREVGSU5FX3N0cmluZyhkdW1wX291dHB1dCwgIiIsICJBZWMgZHVtcCBvdXRwdXQg
ZmlsZW5hbWUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGksICIiLCAiRm9yd2FyZCBzdHJlYW0g
aW5wdXQgd2F2IGZpbGVuYW1lIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhvLCAiIiwgIkZvcndh
cmQgc3RyZWFtIG91dHB1dCB3YXYgZmlsZW5hbWUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHJp
LCAiIiwgIlJldmVyc2Ugc3RyZWFtIGlucHV0IHdhdiBmaWxlbmFtZSIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcocm8sICIiLCAiUmV2ZXJzZSBzdHJlYW0gb3V0cHV0IHdhdiBmaWxlbmFtZSIpOwor
V0VCUlRDX0RFRklORV9zdHJpbmcoYXJ0aWZpY2lhbF9uZWFyZW5kLCAiIiwgIkFydGlmaWNpYWwg
bmVhcmVuZCB3YXYgZmlsZW5hbWUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KG91dHB1dF9udW1fY2hh
bm5lbHMsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisg
ICAgICAgICAgICAgICAgICAiTnVtYmVyIG9mIGZvcndhcmQgc3RyZWFtIG91dHB1dCBjaGFubmVs
cyIpOworV0VCUlRDX0RFRklORV9pbnQocmV2ZXJzZV9vdXRwdXRfbnVtX2NoYW5uZWxzLAorICAg
ICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAg
ICAgICAgIk51bWJlciBvZiBSZXZlcnNlIHN0cmVhbSBvdXRwdXQgY2hhbm5lbHMiKTsKK1dFQlJU
Q19ERUZJTkVfaW50KG91dHB1dF9zYW1wbGVfcmF0ZV9oeiwKKyAgICAgICAgICAgICAgICAgIGtQ
YXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJGb3J3YXJkIHN0
cmVhbSBvdXRwdXQgc2FtcGxlIHJhdGUgaW4gSHoiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHJldmVy
c2Vfb3V0cHV0X3NhbXBsZV9yYXRlX2h6LAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5v
dFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIlJldmVyc2Ugc3RyZWFtIG91dHB1
dCBzYW1wbGUgcmF0ZSBpbiBIeiIpOworV0VCUlRDX0RFRklORV9ib29sKGZpeGVkX2ludGVyZmFj
ZSwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiVXNlIHRo
ZSBmaXhlZCBpbnRlcmZhY2Ugd2hlbiBvcGVyYXRpbmcgb24gd2F2IGZpbGVzIik7CitXRUJSVENf
REVGSU5FX2ludChhZWMsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVk
VmFsdWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkg
dGhlIGVjaG8gY2FuY2VsbGVyIik7CitXRUJSVENfREVGSU5FX2ludChhZWNtLAorICAgICAgICAg
ICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAg
IkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBtb2JpbGUgZWNobyBjb250cm9sbGVy
Iik7CitXRUJSVENfREVGSU5FX2ludChlZCwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJO
b3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVh
Y3RpdmF0ZSAoMCkgdGhlIHJlc2lkdWFsIGVjaG8gZGV0ZWN0b3IiKTsKK1dFQlJUQ19ERUZJTkVf
c3RyaW5nKGVkX2dyYXBoLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAg
ICAgICAgICAiT3V0cHV0IGZpbGVuYW1lIGZvciBncmFwaCBvZiBlY2hvIGxpa2VsaWhvb2QiKTsK
K1dFQlJUQ19ERUZJTkVfaW50KGFnYywKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RT
cGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3Rp
dmF0ZSgwKSB0aGUgQUdDIik7CitXRUJSVENfREVGSU5FX2ludChhZ2MyLAorICAgICAgICAgICAg
ICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIkFj
dGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBBR0MyIik7CitXRUJSVENfREVGSU5FX2lu
dChwcmVfYW1wbGlmaWVyLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmll
ZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDAp
IHRoZSBwcmUgYW1wbGlmaWVyIik7CitXRUJSVENfREVGSU5FX2ludChocGYsCisgICAgICAgICAg
ICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAi
QWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIGhpZ2gtcGFzcyBmaWx0ZXIiKTsKK1dF
QlJUQ19ERUZJTkVfaW50KG5zLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNp
ZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRl
KDApIHRoZSBub2lzZSBzdXBwcmVzc29yIik7CitXRUJSVENfREVGSU5FX2ludCh0cywKKyAgICAg
ICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgdHJhbnNpZW50IHN1cHByZXNz
b3IiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZhZCwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0
ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3Ig
ZGVhY3RpdmF0ZSgwKSB0aGUgdm9pY2UgYWN0aXZpdHkgZGV0ZWN0b3IiKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KGxlLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVl
LAorICAgICAgICAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBs
ZXZlbCBlc3RpbWF0b3IiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBhbGxfZGVmYXVsdCwK
KyAgICBmYWxzZSwKKyAgICAiQWN0aXZhdGUgYWxsIG9mIHRoZSBkZWZhdWx0IGNvbXBvbmVudHMg
KHdpbGwgYmUgb3ZlcnJpZGRlbiBieSBhbnkgIgorICAgICJvdGhlciBzZXR0aW5ncykiKTsKK1dF
QlJUQ19ERUZJTkVfaW50KGFlY19zdXBwcmVzc2lvbl9sZXZlbCwKKyAgICAgICAgICAgICAgICAg
IGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJTZXQgdGhl
IGFlYyBzdXBwcmVzc2lvbiBsZXZlbCAoMC0yKSIpOworV0VCUlRDX0RFRklORV9pbnQoZGVsYXlf
YWdub3N0aWMsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUs
CisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIEFF
QyBkZWxheSBhZ25vc3RpYyBtb2RlIik7CitXRUJSVENfREVGSU5FX2ludChleHRlbmRlZF9maWx0
ZXIsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAg
ICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIEFFQyBleHRl
bmRlZCBmaWx0ZXIgbW9kZSIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgYWVjMywKKyAgICBr
UGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2
YXRlKDApIHRoZSBleHBlcmltZW50YWwgQUVDIG1vZGUgQUVDMyIpOworV0VCUlRDX0RFRklORV9p
bnQoZXhwZXJpbWVudGFsX2FnYywKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVj
aWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0
ZSgwKSB0aGUgZXhwZXJpbWVudGFsIEFHQyIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgZXhw
ZXJpbWVudGFsX2FnY19kaXNhYmxlX2RpZ2l0YWxfYWRhcHRpdmUsCisgICAga1BhcmFtZXRlck5v
dFNwZWNpZmllZFZhbHVlLAorICAgICJGb3JjZS1kZWFjdGl2YXRlICgxKSBkaWdpdGFsIGFkYXB0
YXRpb24gaW4gIgorICAgICJleHBlcmltZW50YWwgQUdDLiBEaWdpdGFsIGFkYXB0YXRpb24gaXMg
YWN0aXZlIGJ5IGRlZmF1bHQgKDApLiIpOworV0VCUlRDX0RFRklORV9pbnQoZXhwZXJpbWVudGFs
X2FnY19hbmFseXplX2JlZm9yZV9hZWMsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90
U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiTWFrZSBsZXZlbCBlc3RpbWF0aW9u
IGhhcHBlbiBiZWZvcmUgQUVDIgorICAgICAgICAgICAgICAgICAgIiBpbiB0aGUgZXhwZXJpbWVu
dGFsIEFHQy4gQWZ0ZXIgQUVDIGlzIHRoZSBkZWZhdWx0ICgwKSIpOworV0VCUlRDX0RFRklORV9p
bnQoCiAgICAgZXhwZXJpbWVudGFsX2FnY19hZ2MyX2xldmVsX2VzdGltYXRvciwKICAgICBrUGFy
YW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCiAgICAgIkFHQzIgbGV2ZWwgZXN0aW1hdGlvbiIKICAg
ICAiIGluIHRoZSBleHBlcmltZW50YWwgQUdDLiBBR0MxIGxldmVsIGVzdGltYXRpb24gaXMgdGhl
IGRlZmF1bHQgKDApIik7Ci1ERUZJTkVfaW50KAorV0VCUlRDX0RFRklORV9pbnQoCiAgICAgcmVm
aW5lZF9hZGFwdGl2ZV9maWx0ZXIsCiAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAog
ICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgcmVmaW5lZCBhZGFwdGl2ZSBm
aWx0ZXIgZnVuY3Rpb25hbGl0eSIpOwotREVGSU5FX2ludChhZ2NfbW9kZSwga1BhcmFtZXRlck5v
dFNwZWNpZmllZFZhbHVlLCAiU3BlY2lmeSB0aGUgQUdDIG1vZGUgKDAtMikiKTsKLURFRklORV9p
bnQoYWdjX3RhcmdldF9sZXZlbCwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZh
bHVlLAotICAgICAgICAgICAiU3BlY2lmeSB0aGUgQUdDIHRhcmdldCBsZXZlbCAoMC0zMSkiKTsK
LURFRklORV9pbnQoYWdjX2xpbWl0ZXIsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZp
ZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBs
ZXZlbCBlc3RpbWF0b3IiKTsKLURFRklORV9pbnQoYWdjX2NvbXByZXNzaW9uX2dhaW4sCi0gICAg
ICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIlNwZWNpZnkg
dGhlIEFHQyBjb21wcmVzc2lvbiBnYWluICgwLTkwKSIpOwotREVGSU5FX2Zsb2F0KGFnYzJfZW5h
YmxlX2FkYXB0aXZlX2dhaW4sCi0gICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZh
bHVlLAotICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgQUdD
MiBhZGFwdGl2ZSBnYWluIik7Ci1ERUZJTkVfZmxvYXQoYWdjMl9maXhlZF9nYWluX2RiLCAwLmYs
ICJBR0MyIGZpeGVkIGdhaW4gKGRCKSB0byBhcHBseSIpOwotREVGSU5FX2Zsb2F0KHByZV9hbXBs
aWZpZXJfZ2Fpbl9mYWN0b3IsCi0gICAgICAgICAgICAgMS5mLAotICAgICAgICAgICAgICJQcmUt
YW1wbGlmaWVyIGdhaW4gZmFjdG9yIChsaW5lYXIpIHRvIGFwcGx5Iik7Ci1ERUZJTkVfaW50KHZh
ZF9saWtlbGlob29kLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0g
ICAgICAgICAgICJTcGVjaWZ5IHRoZSBWQUQgbGlrZWxpaG9vZCAoMC0zKSIpOwotREVGSU5FX2lu
dChuc19sZXZlbCwga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLCAiU3BlY2lmeSB0aGUgTlMg
bGV2ZWwgKDAtMykiKTsKLURFRklORV9pbnQoc3RyZWFtX2RlbGF5LAotICAgICAgICAgICBrUGFy
YW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJTcGVjaWZ5IHRoZSBzdHJlYW0g
ZGVsYXkgaW4gbXMgdG8gdXNlIik7Ci1ERUZJTkVfaW50KHVzZV9zdHJlYW1fZGVsYXksCi0gICAg
ICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2YXRl
ICgxKSBvciBkZWFjdGl2YXRlKDApIHJlcG9ydGluZyB0aGUgc3RyZWFtIGRlbGF5Iik7Ci1ERUZJ
TkVfaW50KHN0cmVhbV9kcmlmdF9zYW1wbGVzLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3Bl
Y2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJTcGVjaWZ5IHRoZSBudW1iZXIgb2Ygc3RyZWFtIGRy
aWZ0IHNhbXBsZXMgdG8gdXNlIik7Ci1ERUZJTkVfaW50KGluaXRpYWxfbWljX2xldmVsLCAxMDAs
ICJJbml0aWFsIG1pYyBsZXZlbCAoMC0yNTUpIik7Ci1ERUZJTkVfaW50KHNpbXVsYXRlX21pY19n
YWluLAotICAgICAgICAgICAwLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZh
dGUoMCkgdGhlIGFuYWxvZyBtaWMgZ2FpbiBzaW11bGF0aW9uIik7Ci1ERUZJTkVfaW50KHNpbXVs
YXRlZF9taWNfa2luZCwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAot
ICAgICAgICAgICAiU3BlY2lmeSB3aGljaCBtaWNyb3Bob25lIGtpbmQgdG8gdXNlIGZvciBtaWNy
b3Bob25lIHNpbXVsYXRpb24iKTsKLURFRklORV9ib29sKHBlcmZvcm1hbmNlX3JlcG9ydCwgZmFs
c2UsICJSZXBvcnQgdGhlIEFQTSBwZXJmb3JtYW5jZSAiKTsKLURFRklORV9ib29sKHZlcmJvc2Us
IGZhbHNlLCAiUHJvZHVjZSB2ZXJib3NlIG91dHB1dCIpOwotREVGSU5FX2Jvb2wocXVpZXQsIGZh
bHNlLCAiQXZvaWQgcHJvZHVjaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9ncmVzcy4iKTsK
LURFRklORV9ib29sKGJpdGV4YWN0bmVzc19yZXBvcnQsCi0gICAgICAgICAgICBmYWxzZSwKLSAg
ICAgICAgICAgICJSZXBvcnQgYml0ZXhhY3RuZXNzIGZvciBhZWMgZHVtcCByZXN1bHQgcmVwcm9k
dWN0aW9uIik7Ci1ERUZJTkVfYm9vbChkaXNjYXJkX3NldHRpbmdzX2luX2FlY2R1bXAsCi0gICAg
ICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJEaXNjYXJkIGFueSBjb25maWcgc2V0dGluZ3Mg
c3BlY2lmaWVkIGluIHRoZSBhZWMgZHVtcCIpOwotREVGSU5FX2Jvb2woc3RvcmVfaW50ZXJtZWRp
YXRlX291dHB1dCwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIkNyZWF0ZXMgbmV3
IG91dHB1dCBmaWxlcyBhZnRlciBlYWNoIGluaXQiKTsKLURFRklORV9zdHJpbmcoY3VzdG9tX2Nh
bGxfb3JkZXJfZmlsZSwgIiIsICJDdXN0b20gcHJvY2VzcyBBUEkgY2FsbCBvcmRlciBmaWxlIik7
Ci1ERUZJTkVfYm9vbChwcmludF9hZWMzX3BhcmFtZXRlcl92YWx1ZXMsCi0gICAgICAgICAgICBm
YWxzZSwKLSAgICAgICAgICAgICJQcmludCBwYXJhbWV0ZXIgdmFsdWVzIHVzZWQgaW4gQUVDMyBp
biBKU09OLWZvcm1hdCIpOwotREVGSU5FX3N0cmluZyhhZWMzX3NldHRpbmdzLAotICAgICAgICAg
ICAgICAiIiwKLSAgICAgICAgICAgICAgIkZpbGUgaW4gSlNPTi1mb3JtYXQgd2l0aCBjdXN0b20g
QUVDMyBzZXR0aW5ncyIpOwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1l
c3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGFnY19tb2RlLAorICAgICAgICAgICAgICAgICAg
a1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIlNwZWNpZnkg
dGhlIEFHQyBtb2RlICgwLTIpIik7CitXRUJSVENfREVGSU5FX2ludChhZ2NfdGFyZ2V0X2xldmVs
LAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAg
ICAgICAgICAgICAgIlNwZWNpZnkgdGhlIEFHQyB0YXJnZXQgbGV2ZWwgKDAtMzEpIik7CitXRUJS
VENfREVGSU5FX2ludChhZ2NfbGltaXRlciwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJO
b3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVh
Y3RpdmF0ZSgwKSB0aGUgbGV2ZWwgZXN0aW1hdG9yIik7CitXRUJSVENfREVGSU5FX2ludChhZ2Nf
Y29tcHJlc3Npb25fZ2FpbiwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZp
ZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJTcGVjaWZ5IHRoZSBBR0MgY29tcHJlc3Npb24g
Z2FpbiAoMC05MCkiKTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoYWdjMl9lbmFibGVfYWRhcHRpdmVf
Z2FpbiwKKyAgICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIEFH
QzIgYWRhcHRpdmUgZ2FpbiIpOworV0VCUlRDX0RFRklORV9mbG9hdChhZ2MyX2ZpeGVkX2dhaW5f
ZGIsIDAuZiwgIkFHQzIgZml4ZWQgZ2FpbiAoZEIpIHRvIGFwcGx5Iik7CisKK3N0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiBHZXRBZ2MyQWRhcHRpdmVMZXZlbEVzdGltYXRvck5hbWVzKCkgeworICBy
ZXR1cm4geyJSTVMiLCAicGVhayJ9OworfQorV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgYWdj
Ml9hZGFwdGl2ZV9sZXZlbF9lc3RpbWF0b3IsCisgICAgIlJNUyIsCisgICAgIkFHQzIgYWRhcHRp
dmUgZGlnaXRhbCBsZXZlbCBlc3RpbWF0b3IgdG8gdXNlIFtSTVMsIHBlYWtdIik7CisKK1dFQlJU
Q19ERUZJTkVfZmxvYXQocHJlX2FtcGxpZmllcl9nYWluX2ZhY3RvciwKKyAgICAgICAgICAgICAg
ICAgICAgMS5mLAorICAgICAgICAgICAgICAgICAgICAiUHJlLWFtcGxpZmllciBnYWluIGZhY3Rv
ciAobGluZWFyKSB0byBhcHBseSIpOworV0VCUlRDX0RFRklORV9pbnQodmFkX2xpa2VsaWhvb2Qs
CisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAg
ICAgICAgICAgICAiU3BlY2lmeSB0aGUgVkFEIGxpa2VsaWhvb2QgKDAtMykiKTsKK1dFQlJUQ19E
RUZJTkVfaW50KG5zX2xldmVsLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNp
ZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIlNwZWNpZnkgdGhlIE5TIGxldmVsICgwLTMp
Iik7CitXRUJSVENfREVGSU5FX2ludChzdHJlYW1fZGVsYXksCisgICAgICAgICAgICAgICAgICBr
UGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiU3BlY2lmeSB0
aGUgc3RyZWFtIGRlbGF5IGluIG1zIHRvIHVzZSIpOworV0VCUlRDX0RFRklORV9pbnQodXNlX3N0
cmVhbV9kZWxheSwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1
ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSByZXBv
cnRpbmcgdGhlIHN0cmVhbSBkZWxheSIpOworV0VCUlRDX0RFRklORV9pbnQoc3RyZWFtX2RyaWZ0
X3NhbXBsZXMsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUs
CisgICAgICAgICAgICAgICAgICAiU3BlY2lmeSB0aGUgbnVtYmVyIG9mIHN0cmVhbSBkcmlmdCBz
YW1wbGVzIHRvIHVzZSIpOworV0VCUlRDX0RFRklORV9pbnQoaW5pdGlhbF9taWNfbGV2ZWwsIDEw
MCwgIkluaXRpYWwgbWljIGxldmVsICgwLTI1NSkiKTsKK1dFQlJUQ19ERUZJTkVfaW50KAorICAg
IHNpbXVsYXRlX21pY19nYWluLAorICAgIDAsCisgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2
YXRlKDApIHRoZSBhbmFsb2cgbWljIGdhaW4gc2ltdWxhdGlvbiIpOworV0VCUlRDX0RFRklORV9p
bnQoCisgICAgc2ltdWxhdGVkX21pY19raW5kLAorICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRW
YWx1ZSwKKyAgICAiU3BlY2lmeSB3aGljaCBtaWNyb3Bob25lIGtpbmQgdG8gdXNlIGZvciBtaWNy
b3Bob25lIHNpbXVsYXRpb24iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwZXJmb3JtYW5jZV9yZXBv
cnQsIGZhbHNlLCAiUmVwb3J0IHRoZSBBUE0gcGVyZm9ybWFuY2UgIik7CitXRUJSVENfREVGSU5F
X2Jvb2wodmVyYm9zZSwgZmFsc2UsICJQcm9kdWNlIHZlcmJvc2Ugb3V0cHV0Iik7CitXRUJSVENf
REVGSU5FX2Jvb2wocXVpZXQsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAg
ICAgICAgICAgIkF2b2lkIHByb2R1Y2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvZ3Jlc3Mu
Iik7CitXRUJSVENfREVGSU5FX2Jvb2woYml0ZXhhY3RuZXNzX3JlcG9ydCwKKyAgICAgICAgICAg
ICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUmVwb3J0IGJpdGV4YWN0bmVzcyBm
b3IgYWVjIGR1bXAgcmVzdWx0IHJlcHJvZHVjdGlvbiIpOworV0VCUlRDX0RFRklORV9ib29sKGRp
c2NhcmRfc2V0dGluZ3NfaW5fYWVjZHVtcCwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAiRGlzY2FyZCBhbnkgY29uZmlnIHNldHRpbmdzIHNwZWNpZmllZCBp
biB0aGUgYWVjIGR1bXAiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChzdG9yZV9pbnRlcm1lZGlhdGVf
b3V0cHV0LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJD
cmVhdGVzIG5ldyBvdXRwdXQgZmlsZXMgYWZ0ZXIgZWFjaCBpbml0Iik7CitXRUJSVENfREVGSU5F
X3N0cmluZyhjdXN0b21fY2FsbF9vcmRlcl9maWxlLAorICAgICAgICAgICAgICAgICAgICAgIiIs
CisgICAgICAgICAgICAgICAgICAgICAiQ3VzdG9tIHByb2Nlc3MgQVBJIGNhbGwgb3JkZXIgZmls
ZSIpOworV0VCUlRDX0RFRklORV9ib29sKHByaW50X2FlYzNfcGFyYW1ldGVyX3ZhbHVlcywKKyAg
ICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUHJpbnQgcGFyYW1l
dGVyIHZhbHVlcyB1c2VkIGluIEFFQzMgaW4gSlNPTi1mb3JtYXQiKTsKK1dFQlJUQ19ERUZJTkVf
c3RyaW5nKGFlYzNfc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAg
ICAgICAgICAgICAgICJGaWxlIGluIEpTT04tZm9ybWF0IHdpdGggY3VzdG9tIEFFQzMgc2V0dGlu
Z3MiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChkdW1wX2RhdGEsCisgICAgICAgICAgICAgICAgICAg
ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIkR1bXAgaW50ZXJuYWwgZGF0YSBkdXJpbmcgdGhl
IGNhbGwgKHJlcXVpcmVzIGJ1aWxkIGZsYWcpIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhkdW1w
X2RhdGFfb3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAg
ICAgICAgICAgIkludGVybmFsIGRhdGEgZHVtcCBvdXRwdXQgZGlyZWN0b3J5Iik7CitXRUJSVENf
REVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UiKTsKIAogdm9pZCBT
ZXRTZXR0aW5nSWZTcGVjaWZpZWQoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+KiBwYXJhbWV0ZXIp
IHsKQEAgLTIwOCw2ICsyNDIsMjcgQEAgdm9pZCBTZXRTZXR0aW5nSWZGbGFnU2V0KGludDMyX3Qg
ZmxhZywgYWJzbDo6b3B0aW9uYWw8Ym9vbD4qIHBhcmFtZXRlcikgewogICB9CiB9CiAKK0F1ZGlv
UHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yCitNYXBB
Z2MyQWRhcHRpdmVMZXZlbEVzdGltYXRvcihhYnNsOjpzdHJpbmdfdmlldyBuYW1lKSB7CisgIGlm
IChuYW1lLmNvbXBhcmUoIlJNUyIpID09IDApIHsKKyAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5n
OjpDb25maWc6OkdhaW5Db250cm9sbGVyMjo6TGV2ZWxFc3RpbWF0b3I6OmtSbXM7CisgIH0KKyAg
aWYgKG5hbWUuY29tcGFyZSgicGVhayIpID09IDApIHsKKyAgICByZXR1cm4gQXVkaW9Qcm9jZXNz
aW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMjo6TGV2ZWxFc3RpbWF0b3I6OmtQZWFrOworICB9
CisgIGF1dG8gY29uY2F0X3N0cmluZ3MgPQorICAgICAgW10oY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiBzdHJpbmdzKSAtPiBzdGQ6OnN0cmluZyB7CisgICAgcnRjOjpTdHJpbmdCdWls
ZGVyIHNzOworICAgIGZvciAoY29uc3QgYXV0byYgcyA6IHN0cmluZ3MpIHsKKyAgICAgIHNzIDw8
ICIgIiA8PCBzOworICAgIH0KKyAgICByZXR1cm4gc3MuUmVsZWFzZSgpOworICB9OworICBSVENf
Q0hFQ0soZmFsc2UpCisgICAgICA8PCAiSW52YWxpZCB2YWx1ZSBmb3IgYWdjMl9hZGFwdGl2ZV9s
ZXZlbF9lc3RpbWF0b3IsIHZhbGlkIG9wdGlvbnM6IgorICAgICAgPDwgY29uY2F0X3N0cmluZ3Mo
R2V0QWdjMkFkYXB0aXZlTGV2ZWxFc3RpbWF0b3JOYW1lcygpKSA8PCAiLiI7Cit9CisKIFNpbXVs
YXRpb25TZXR0aW5ncyBDcmVhdGVTZXR0aW5ncygpIHsKICAgU2ltdWxhdGlvblNldHRpbmdzIHNl
dHRpbmdzOwogICBpZiAoRkxBR19hbGxfZGVmYXVsdCkgewpAQCAtMjc1LDYgKzMzMCw4IEBAIFNp
bXVsYXRpb25TZXR0aW5ncyBDcmVhdGVTZXR0aW5ncygpIHsKICAgU2V0U2V0dGluZ0lmRmxhZ1Nl
dChGTEFHX2FnYzJfZW5hYmxlX2FkYXB0aXZlX2dhaW4sCiAgICAgICAgICAgICAgICAgICAgICAg
JnNldHRpbmdzLmFnYzJfdXNlX2FkYXB0aXZlX2dhaW4pOwogICBzZXR0aW5ncy5hZ2MyX2ZpeGVk
X2dhaW5fZGIgPSBGTEFHX2FnYzJfZml4ZWRfZ2Fpbl9kYjsKKyAgc2V0dGluZ3MuYWdjMl9hZGFw
dGl2ZV9sZXZlbF9lc3RpbWF0b3IgPQorICAgICAgTWFwQWdjMkFkYXB0aXZlTGV2ZWxFc3RpbWF0
b3IoRkxBR19hZ2MyX2FkYXB0aXZlX2xldmVsX2VzdGltYXRvcik7CiAgIHNldHRpbmdzLnByZV9h
bXBsaWZpZXJfZ2Fpbl9mYWN0b3IgPSBGTEFHX3ByZV9hbXBsaWZpZXJfZ2Fpbl9mYWN0b3I7CiAg
IFNldFNldHRpbmdJZlNwZWNpZmllZChGTEFHX3ZhZF9saWtlbGlob29kLCAmc2V0dGluZ3MudmFk
X2xpa2VsaWhvb2QpOwogICBTZXRTZXR0aW5nSWZTcGVjaWZpZWQoRkxBR19uc19sZXZlbCwgJnNl
dHRpbmdzLm5zX2xldmVsKTsKQEAgLTI5Niw2ICszNTMsOSBAQCBTaW11bGF0aW9uU2V0dGluZ3Mg
Q3JlYXRlU2V0dGluZ3MoKSB7CiAgIHNldHRpbmdzLmZpeGVkX2ludGVyZmFjZSA9IEZMQUdfZml4
ZWRfaW50ZXJmYWNlOwogICBzZXR0aW5ncy5zdG9yZV9pbnRlcm1lZGlhdGVfb3V0cHV0ID0gRkxB
R19zdG9yZV9pbnRlcm1lZGlhdGVfb3V0cHV0OwogICBzZXR0aW5ncy5wcmludF9hZWMzX3BhcmFt
ZXRlcl92YWx1ZXMgPSBGTEFHX3ByaW50X2FlYzNfcGFyYW1ldGVyX3ZhbHVlczsKKyAgc2V0dGlu
Z3MuZHVtcF9pbnRlcm5hbF9kYXRhID0gRkxBR19kdW1wX2RhdGE7CisgIFNldFNldHRpbmdJZlNw
ZWNpZmllZChGTEFHX2R1bXBfZGF0YV9vdXRwdXRfZGlyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgJnNldHRpbmdzLmR1bXBfaW50ZXJuYWxfZGF0YV9vdXRwdXRfZGlyKTsKIAogICByZXR1cm4g
c2V0dGluZ3M7CiB9CkBAIC00NDYsNiArNTA2LDE1IEBAIHZvaWQgUGVyZm9ybUJhc2ljUGFyYW1l
dGVyU2FuaXR5Q2hlY2tzKGNvbnN0IFNpbXVsYXRpb25TZXR0aW5ncyYgc2V0dGluZ3MpIHsKICAg
ICAgIHNldHRpbmdzLmFydGlmaWNpYWxfbmVhcmVuZF9maWxlbmFtZSAmJgogICAgICAgICAgICF2
YWxpZF93YXZfbmFtZSgqc2V0dGluZ3MuYXJ0aWZpY2lhbF9uZWFyZW5kX2ZpbGVuYW1lKSwKICAg
ICAgICJFcnJvcjogLS1hcnRpZmljYWxfbmVhcmVuZCBtdXN0IGJlIGEgdmFsaWQgLndhdiBmaWxl
IG5hbWUuXG4iKTsKKworICBSZXBvcnRDb25kaXRpb25hbEVycm9yQW5kRXhpdCgKKyAgICAgIFdF
QlJUQ19BUE1fREVCVUdfRFVNUCA9PSAwICYmIHNldHRpbmdzLmR1bXBfaW50ZXJuYWxfZGF0YSwK
KyAgICAgICJFcnJvcjogLS1kdW1wX2RhdGEgY2Fubm90IGJlIHNldCB3aXRob3V0IHByb3BlciBi
dWlsZCBzdXBwb3J0LlxuIik7CisKKyAgUmVwb3J0Q29uZGl0aW9uYWxFcnJvckFuZEV4aXQoCisg
ICAgICAhc2V0dGluZ3MuZHVtcF9pbnRlcm5hbF9kYXRhICYmCisgICAgICAgICAgc2V0dGluZ3Mu
ZHVtcF9pbnRlcm5hbF9kYXRhX291dHB1dF9kaXIuaGFzX3ZhbHVlKCksCisgICAgICAiRXJyb3I6
IC0tZHVtcF9kYXRhX291dHB1dF9kaXIgY2Fubm90IGJlIHNldCB3aXRob3V0IC0tZHVtcF9kYXRh
LlxuIik7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3Qv
Y29udmVyc2F0aW9uYWxfc3BlZWNoL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVyc2F0
aW9uYWxfc3BlZWNoL0JVSUxELmduCmluZGV4IDcyMWViYzdlZTU2NjlmNTUyYTFlZWM5NmI0MjEx
YTgyMmE2NThkNzQuLjU1MTc4MWI4YmM5MGE2YmZhZDUzMGFhMzgxN2U1OGY5YTc5NGI5Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9CVUlMRC5nbgor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvQlVJTEQuZ24KQEAgLTUx
LDYgKzUxLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJsaWIiKSB7CiAgICAgIi4uLy4uLy4uLy4u
L2NvbW1vbl9hdWRpbyIsCiAgICAgIi4uLy4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAg
Ii4uLy4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4v
Li4vdGVzdDpmaWxldXRpbHMiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9t
ZW1vcnkiLAogICBdCiAgIHZpc2liaWxpdHkgPSBbICI6KiIgXSAgIyBPbmx5IHRhcmdldHMgaW4g
dGhpcyBmaWxlIGNhbiBkZXBlbmQgb24gdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0
L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9nZW5lcmF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252
ZXJzYXRpb25hbF9zcGVlY2gvZ2VuZXJhdG9yLmNjCmluZGV4IDc0MWExY2E4NmJhMjEwYmY1ODI5
MGM4MjgwNWExNzVkMmFiOTMyZTUuLmZhNTYxY2Y4ZTA1NTE2YThjMGZhY2NiZWM1Nzc4YmFjYjRi
N2E1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9n
ZW5lcmF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVyc2F0aW9uYWxfc3BlZWNoL2dl
bmVyYXRvci5jYwpAQCAtMzIsMTAgKzMyLDEwIEBAIGNvbnN0IGNoYXIga1VzYWdlRGVzY3JpcHRp
b25bXSA9CiAgICAgIkNvbW1hbmQtbGluZSB0b29sIHRvIGdlbmVyYXRlIG11bHRpcGxlLWVuZCBh
dWRpbyB0cmFja3MgdG8gc2ltdWxhdGUgIgogICAgICJjb252ZXJzYXRpb25hbCBzcGVlY2ggd2l0
aCB0d28gb3IgbW9yZSBwYXJ0aWNpcGFudHMuXG4iOwogCi1ERUZJTkVfc3RyaW5nKGksICIiLCAi
RGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHNwZWVjaCB0dXJuIHdhdiBmaWxlcyIpOwotREVGSU5F
X3N0cmluZyh0LCAiIiwgIlBhdGggdG8gdGhlIHRpbWluZyB0ZXh0IGZpbGUiKTsKLURFRklORV9z
dHJpbmcobywgIiIsICJPdXRwdXQgd2F2IGZpbGVzIGRlc3RpbmF0aW9uIHBhdGgiKTsKLURFRklO
RV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcoaSwgIiIsICJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgc3BlZWNoIHR1cm4gd2F2
IGZpbGVzIik7CitXRUJSVENfREVGSU5FX3N0cmluZyh0LCAiIiwgIlBhdGggdG8gdGhlIHRpbWlu
ZyB0ZXh0IGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKG8sICIiLCAiT3V0cHV0IHdhdiBm
aWxlcyBkZXN0aW5hdGlvbiBwYXRoIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2Us
ICJQcmludHMgdGhpcyBtZXNzYWdlIik7CiAKIH0gIC8vIG5hbWVzcGFjZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbW9ja193YXZyZWFkZXJfZmFj
dG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9tb2NrX3dhdnJl
YWRlcl9mYWN0b3J5LmNjCmluZGV4IGViOGUzYmVkM2M1MTAxODFjY2M0NjkzOGFkNGIzNmNhZjFm
MTc0ZDQuLmE0NWUzYmJmYTcyZmJlZTVjOGE2NTliMDY1YTZhOGY4ZjMwZDI5NWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9tb2NrX3dhdnJlYWRlcl9m
YWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9tb2Nr
X3dhdnJlYWRlcl9mYWN0b3J5LmNjCkBAIC0xMiw3ICsxMiw2IEBACiAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbW9ja193YXZy
ZWFkZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2UvcGF0aHV0aWxzLmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKQEAgLTM5LDkgKzM4LDEwIEBAIE1vY2tXYXZSZWFkZXJGYWN0b3J5Ojp+TW9ja1dhdlJl
YWRlckZhY3RvcnkoKSA9IGRlZmF1bHQ7CiBzdGQ6OnVuaXF1ZV9wdHI8V2F2UmVhZGVySW50ZXJm
YWNlPiBNb2NrV2F2UmVhZGVyRmFjdG9yeTo6Q3JlYXRlTW9jaygKICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgZmlsZXBhdGgpIHsKICAgLy8gU2VhcmNoIHRoZSBwYXJhbWV0ZXJzIGNvcnJlc3BvbmRp
bmcgdG8gZmlsZXBhdGguCi0gIGNvbnN0IHJ0Yzo6UGF0aG5hbWUgYXVkaW90cmFja19maWxlX3Bh
dGgoZmlsZXBhdGgpOwotICBjb25zdCBhdXRvIGl0ID0KLSAgICAgIGF1ZGlvdHJhY2tfbmFtZXNf
cGFyYW1zXy5maW5kKGF1ZGlvdHJhY2tfZmlsZV9wYXRoLmZpbGVuYW1lKCkpOworICBzaXplX3Qg
ZGVsaW1pdGVyID0gZmlsZXBhdGguZmluZF9sYXN0X29mKCIvXFwiKTsgIC8vIEVpdGhlciB3aW5k
b3dzIG9yIHBvc2l4CisgIHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0KKyAgICAgIGZpbGVwYXRoLnN1
YnN0cihkZWxpbWl0ZXIgPT0gc3RkOjpzdHJpbmc6Om5wb3MgPyAwIDogZGVsaW1pdGVyICsgMSk7
CisgIGNvbnN0IGF1dG8gaXQgPSBhdWRpb3RyYWNrX25hbWVzX3BhcmFtc18uZmluZChmaWxlbmFt
ZSk7CiAKICAgLy8gSWYgbm90IGZvdW5kLCB1c2UgZGVmYXVsdCBwYXJhbWV0ZXJzLgogICBpZiAo
aXQgPT0gYXVkaW90cmFja19uYW1lc19wYXJhbXNfLmVuZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbXVsdGllbmRfY2FsbC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9tdWx0aWVuZF9jYWxsLmNjCmluZGV4IGQ2
MzNkOTBlOWM0MjZhMjc2NWY2YWFlMjE5YzViYzkyMDY0NjQ5YzguLjRlMmY1NGQxNTA5NTc5ZDNk
NTNmYTExNTIyZDZhNGRhYzI3NzE3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZl
cnNhdGlvbmFsX3NwZWVjaC9tdWx0aWVuZF9jYWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2Nv
bnZlcnNhdGlvbmFsX3NwZWVjaC9tdWx0aWVuZF9jYWxsLmNjCkBAIC0xNCw3ICsxNCw3IEBACiAj
aW5jbHVkZSA8aXRlcmF0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvcGF0aHV0aWxzLmgiCisjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9m
aWxldXRpbHMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CkBAIC01
MCwxMyArNTAsMTMgQEAgYm9vbCBNdWx0aUVuZENhbGw6OkNyZWF0ZUF1ZGlvVHJhY2tSZWFkZXJz
KCkgewogICAgIGlmIChpdCAhPSBhdWRpb3RyYWNrX3JlYWRlcnNfLmVuZCgpKQogICAgICAgY29u
dGludWU7CiAKLSAgICAvLyBJbnN0YW5jZSBQYXRobmFtZSB0byByZXRyaWV2ZSB0aGUgZnVsbCBw
YXRoIHRvIHRoZSBhdWRpb3RyYWNrIGZpbGUuCi0gICAgY29uc3QgcnRjOjpQYXRobmFtZSBhdWRp
b3RyYWNrX2ZpbGVfcGF0aChhdWRpb3RyYWNrc19wYXRoXywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHR1cm4uYXVkaW90cmFja19maWxlX25hbWUpOworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGF1ZGlvdHJhY2tfZmlsZV9wYXRoID0KKyAgICAgICAgdGVzdDo6
Sm9pbkZpbGVuYW1lKGF1ZGlvdHJhY2tzX3BhdGhfLCB0dXJuLmF1ZGlvdHJhY2tfZmlsZV9uYW1l
KTsKIAogICAgIC8vIE1hcCB0aGUgYXVkaW90cmFjayBmaWxlIG5hbWUgdG8gYSBuZXcgaW5zdGFu
Y2Ugb2YgV2F2UmVhZGVySW50ZXJmYWNlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXZSZWFkZXJJ
bnRlcmZhY2U+IHdhdnJlYWRlciA9Ci0gICAgICAgIHdhdnJlYWRlcl9hYnN0cmFjdF9mYWN0b3J5
Xy0+Q3JlYXRlKGF1ZGlvdHJhY2tfZmlsZV9wYXRoLnBhdGhuYW1lKCkpOworICAgICAgICB3YXZy
ZWFkZXJfYWJzdHJhY3RfZmFjdG9yeV8tPkNyZWF0ZSgKKyAgICAgICAgICAgIHRlc3Q6OkpvaW5G
aWxlbmFtZShhdWRpb3RyYWNrc19wYXRoXywgdHVybi5hdWRpb3RyYWNrX2ZpbGVfbmFtZSkpOwog
CiAgICAgaWYgKHNhbXBsZV9yYXRlX2h6XyA9PSAwKSB7CiAgICAgICBzYW1wbGVfcmF0ZV9oel8g
PSB3YXZyZWFkZXItPlNhbXBsZVJhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2Nv
bnZlcnNhdGlvbmFsX3NwZWVjaC9zaW11bGF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJz
YXRpb25hbF9zcGVlY2gvc2ltdWxhdG9yLmNjCmluZGV4IGMyZmI3ODA4ZTA4ZTYxMDI1NzE1NThm
YmE2MWY1NTcyYmNmZTljNDguLmM0MDA0OTlmZDM0MTAzMDA2YzRkOGEyMGUwOGFhNzNlZjA5NDA2
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9zaW11
bGF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVyc2F0aW9uYWxfc3BlZWNoL3NpbXVs
YXRvci5jYwpAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3BhdGh1
dGlscy5oIgorI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewpAQCAtNDYsMjEgKzQ2LDIwIEBAIEluaXRT
cGVha2VyT3V0cHV0RmlsZVBhdGhzKGNvbnN0IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiYgc3BlYWtl
cl9uYW1lcywKIAogICAvLyBBZGQgbmVhci1lbmQgYW5kIGZhci1lbmQgb3V0cHV0IHBhdGhzIGlu
dG8gdGhlIG1hcC4KICAgZm9yIChjb25zdCBhdXRvJiBzcGVha2VyX25hbWUgOiBzcGVha2VyX25h
bWVzKSB7Ci0gICAgY29uc3QgcnRjOjpQYXRobmFtZSBuZWFyX2VuZF9wYXRoKG91dHB1dF9wYXRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic18iICsgc3BlYWtlcl9u
YW1lICsgIi1uZWFyX2VuZC53YXYiKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBuZWFyX2VuZF9w
YXRoID0KKyAgICAgICAgdGVzdDo6Sm9pbkZpbGVuYW1lKG91dHB1dF9wYXRoLCAic18iICsgc3Bl
YWtlcl9uYW1lICsgIi1uZWFyX2VuZC53YXYiKTsKICAgICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8
ICJUaGUgbmVhci1lbmQgYXVkaW8gdHJhY2sgd2lsbCBiZSBjcmVhdGVkIGluICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IG5lYXJfZW5kX3BhdGgucGF0aG5hbWUoKSA8PCAiLiI7CisgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBuZWFyX2VuZF9wYXRoIDw8ICIuIjsKIAotICAgIGNvbnN0
IHJ0Yzo6UGF0aG5hbWUgZmFyX2VuZF9wYXRoKG91dHB1dF9wYXRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzXyIgKyBzcGVha2VyX25hbWUgKyAiLWZhcl9lbmQud2F2
Iik7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZmFyX2VuZF9wYXRoID0KKyAgICAgICAgdGVzdDo6
Sm9pbkZpbGVuYW1lKG91dHB1dF9wYXRoLCAic18iICsgc3BlYWtlcl9uYW1lICsgIi1mYXJfZW5k
LndhdiIpOwogICAgIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIlRoZSBmYXItZW5kIGF1ZGlvIHRy
YWNrIHdpbGwgYmUgY3JlYXRlZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCBmYXJf
ZW5kX3BhdGgucGF0aG5hbWUoKSA8PCAiLiI7CisgICAgICAgICAgICAgICAgICAgICAgICA8PCBm
YXJfZW5kX3BhdGggPDwgIi4iOwogCiAgICAgLy8gQWRkIHRvIG1hcC4KICAgICBzcGVha2VyX291
dHB1dF9maWxlX3BhdGhzX21hcC0+ZW1wbGFjZSgKICAgICAgICAgc3RkOjpwaWVjZXdpc2VfY29u
c3RydWN0LCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoc3BlYWtlcl9uYW1lKSwKLSAgICAgICAgc3Rk
Ojpmb3J3YXJkX2FzX3R1cGxlKG5lYXJfZW5kX3BhdGgucGF0aG5hbWUoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhcl9lbmRfcGF0aC5wYXRobmFtZSgpKSk7CisgICAgICAgIHN0
ZDo6Zm9yd2FyZF9hc190dXBsZShuZWFyX2VuZF9wYXRoLCBmYXJfZW5kX3BhdGgpKTsKICAgfQog
CiAgIHJldHVybiBzcGVha2VyX291dHB1dF9maWxlX3BhdGhzX21hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vzc21lbnQvYXBt
X3ZhZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fz
c2Vzc21lbnQvYXBtX3ZhZC5jYwppbmRleCBhNjE4NGI1ZjlmZGEwMTFmYTdkNjhhZTRjN2E3ZWY1
MjY3MTY1MTdlLi40YjZhZGEyN2I2YTZmODJjMTdlODZmNTA3N2ZjODgxMjhmZjZhNzFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nl
c3NtZW50L2FwbV92YWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvcHlfcXVhbGl0eV9hc3Nlc3Nt
ZW50L3F1YWxpdHlfYXNzZXNzbWVudC9hcG1fdmFkLmNjCkBAIC0yNCw5ICsyNCw5IEBAIGNvbnN0
ZXhwciBpbnQga01heFNhbXBsZVJhdGUgPSA0ODAwMDsKIGNvbnN0ZXhwciBzaXplX3Qga01heEZy
YW1lTGVuID0KICAgICBrQXVkaW9GcmFtZUxlbmd0aE1pbGxpc2Vjb25kcyAqIGtNYXhTYW1wbGVS
YXRlIC8gMTAwMDsKIAotREVGSU5FX3N0cmluZyhpLCAiIiwgIklucHV0IHdhdiBmaWxlIik7Ci1E
RUZJTkVfc3RyaW5nKG9fcHJvYnMsICIiLCAiVkFEIHByb2JhYmlsaXRpZXMgb3V0cHV0IGZpbGUi
KTsKLURFRklORV9zdHJpbmcob19ybXMsICIiLCAiVkFEIG91dHB1dCBmaWxlIik7CitXRUJSVENf
REVGSU5FX3N0cmluZyhpLCAiIiwgIklucHV0IHdhdiBmaWxlIik7CitXRUJSVENfREVGSU5FX3N0
cmluZyhvX3Byb2JzLCAiIiwgIlZBRCBwcm9iYWJpbGl0aWVzIG91dHB1dCBmaWxlIik7CitXRUJS
VENfREVGSU5FX3N0cmluZyhvX3JtcywgIiIsICJWQUQgb3V0cHV0IGZpbGUiKTsKIAogaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBpZiAocnRjOjpGbGFnTGlzdDo6U2V0Rmxh
Z3NGcm9tQ29tbWFuZExpbmUoJmFyZ2MsIGFyZ3YsIHRydWUpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL3Rlc3QvcHlfcXVhbGl0eV9hc3Nlc3NtZW50L3F1YWxpdHlfYXNzZXNzbWVudC9zb3VuZF9s
ZXZlbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fz
c2Vzc21lbnQvc291bmRfbGV2ZWwuY2MKaW5kZXggOThjZjg0Yzg4OGY3YjVjMTNmODRjMGUzZmJl
NGViMjU5MmJjMDZhYy4uMzVhMmMxMWFlYjIyNzljZGZiM2UzZmQxY2FmYzMxNTdlYjYyNzhlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvcHlfcXVhbGl0eV9hc3Nlc3NtZW50L3F1YWxpdHlf
YXNzZXNzbWVudC9zb3VuZF9sZXZlbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9weV9xdWFsaXR5
X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nlc3NtZW50L3NvdW5kX2xldmVsLmNjCkBAIC0yNiwxMyAr
MjYsMTMgQEAgY29uc3RleHByIHNpemVfdCBrTWF4RnJhbWVMZW4gPSBrTWF4RnJhbWVMZW5NcyAq
IGtNYXhTYW1wbGVSYXRlIC8gMTAwMDsKIAogY29uc3QgZG91YmxlIGtPbmVEYlJlZHVjdGlvbiA9
IERiVG9SYXRpbygtMS4wKTsKIAotREVGSU5FX3N0cmluZyhpLCAiIiwgIklucHV0IHdhdiBmaWxl
Iik7Ci1ERUZJTkVfc3RyaW5nKG9jLCAiIiwgIkNvbmZpZyBvdXRwdXQgZmlsZSIpOwotREVGSU5F
X3N0cmluZyhvbCwgIiIsICJMZXZlbHMgb3V0cHV0IGZpbGUiKTsKLURFRklORV9mbG9hdChhLCA1
LmYsICJBdHRhY2sgKG1zKSIpOwotREVGSU5FX2Zsb2F0KGQsIDIwLmYsICJEZWNheSAobXMpIik7
Ci1ERUZJTkVfaW50KGYsIDEwLCAiRnJhbWUgbGVuZ3RoIChtcykiKTsKLURFRklORV9ib29sKGhl
bHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmco
aSwgIiIsICJJbnB1dCB3YXYgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob2MsICIiLCAi
Q29uZmlnIG91dHB1dCBmaWxlIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhvbCwgIiIsICJMZXZl
bHMgb3V0cHV0IGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoYSwgNS5mLCAiQXR0YWNrICht
cykiKTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoZCwgMjAuZiwgIkRlY2F5IChtcykiKTsKK1dFQlJU
Q19ERUZJTkVfaW50KGYsIDEwLCAiRnJhbWUgbGVuZ3RoIChtcykiKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbChoZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKTsKIAogaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBpZiAocnRjOjpGbGFnTGlzdDo6U2V0RmxhZ3NGcm9t
Q29tbWFuZExpbmUoJmFyZ2MsIGFyZ3YsIHRydWUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nlc3NtZW50L3ZhZC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vzc21lbnQvdmFk
LmNjCmluZGV4IDE5MWNiMWU5ZmNmZDE1MmY5ZTA5NDM3NjhmMGY1YjM2ZGZlNzI1OTguLjhhMTM0
ZWQxODVkOWNlOTYwM2FkN2QxYmM1NTljNGFmYzNiYTM1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vzc21lbnQvdmFkLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vzc21l
bnQvdmFkLmNjCkBAIC0yNyw4ICsyNyw4IEBAIGNvbnN0ZXhwciBzaXplX3Qga01heEZyYW1lTGVu
ID0KIAogY29uc3RleHByIHVpbnQ4X3Qga0JpdG1hc2tCdWZmU2l6ZSA9IDg7CiAKLURFRklORV9z
dHJpbmcoaSwgIiIsICJJbnB1dCB3YXYgZmlsZSIpOwotREVGSU5FX3N0cmluZyhvLCAiIiwgIlZB
RCBvdXRwdXQgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoaSwgIiIsICJJbnB1dCB3YXYg
ZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcobywgIiIsICJWQUQgb3V0cHV0IGZpbGUiKTsK
IAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBpZiAocnRjOjpGbGFnTGlz
dDo6U2V0RmxhZ3NGcm9tQ29tbWFuZExpbmUoJmFyZ2MsIGFyZ3YsIHRydWUpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3RyYW5zaWVudC9tb3ZpbmdfbW9tZW50cy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFu
c2llbnQvbW92aW5nX21vbWVudHMuY2MKaW5kZXggYTE5OWJiMGMxYjlkM2UxYzA3YmNlYTEyODc1
MzRkMWFkZTA5MTc1Mi4uODM4MTBiZmUzYzI3NmViMDAyMmQwYjgzNDhmZTA3MDg4MWY2YTRhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC9tb3ZpbmdfbW9tZW50cy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvdHJhbnNpZW50L21vdmluZ19tb21lbnRzLmNjCkBAIC0xMCw3ICsxMCw3IEBACiAK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L21vdmluZ19tb21l
bnRzLmgiCiAKLSNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVu
dC90cmFuc2llbnRfZGV0ZWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9k
ZXRlY3Rvci5jYwppbmRleCBjM2JmMjgyYjBlMWZmMTdkMWFlN2I0ODc4OWIxNTEyMGI1N2YyMTFj
Li44OTk3ZDRjMDkyMDZmYWFlM2E1YzRjYTQxZDQyMGU5ZWVlZjU4YWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9kZXRlY3Rvci5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dHJhbnNpZW50L3RyYW5zaWVudF9kZXRlY3Rvci5jYwpAQCAtMTMsMTIgKzEzLDEyIEBACiAjaW5j
bHVkZSA8ZmxvYXQuaD4KICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0K
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdHJhbnNpZW50L2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy90cmFuc2llbnQvZGF1YmVjaGllc184X3dhdmVsZXRfY29lZmZzLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC9tb3ZpbmdfbW9tZW50cy5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX25vZGUuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3dwZF90cmVlLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2ll
bnQvdHJhbnNpZW50X2RldGVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9k
ZXRlY3Rvci5oCmluZGV4IDMyNjdiM2E2Y2RjNGE1YTY2NmI3YjRlZDFiODc4NDVmZWFjYTgyOWEu
LjIzYjg4ZjgyYjEwY2YyZTZlYzM3NzI4YjExNjMxYzdhMmUxNzVhYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy90cmFuc2llbnQvdHJhbnNpZW50X2RldGVjdG9yLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Ry
YW5zaWVudC90cmFuc2llbnRfZGV0ZWN0b3IuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfVFJBTlNJRU5UX1RSQU5TSUVOVF9ERVRFQ1RPUl9IXwog
I2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfVFJBTlNJRU5UX1RSQU5TSUVOVF9ERVRF
Q1RPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8ZGVxdWU+CiAjaW5jbHVk
ZSA8bWVtb3J5PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9z
dXBwcmVzc2lvbl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2llbnRfc3VwcHJl
c3Npb25fdGVzdC5jYwppbmRleCA5ZTdlY2Q1Nzg2NTJlNDZiNDQ2MmY5NzczOWM2YTRjZTY1MGFi
MzQyLi5lMTVmNjljMDQyMDE1NTBlYTE2MjJlODQzZDhiN2EyNTJiOTUxMTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9zdXBwcmVzc2lvbl90ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy90cmFuc2llbnQvdHJhbnNpZW50X3N1cHByZXNzaW9uX3Rlc3QuY2MKQEAgLTIz
LDI2ICsyMywyOCBAQAogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L3Rl
c3RzdXBwb3J0L2ZpbGV1dGlscy5oIgogCi1ERUZJTkVfc3RyaW5nKGluX2ZpbGVfbmFtZSwgIiIs
ICJQQ00gZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBzaWduYWwuIik7Ci1ERUZJTkVfc3RyaW5nKGRl
dGVjdGlvbl9maWxlX25hbWUsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiUENN
IGZpbGUgdGhhdCBjb250YWlucyB0aGUgZGV0ZWN0aW9uIHNpZ25hbC4iKTsKLURFRklORV9zdHJp
bmcocmVmZXJlbmNlX2ZpbGVfbmFtZSwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAg
ICJQQ00gZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSByZWZlcmVuY2Ugc2lnbmFsLiIpOwotCi1ERUZJ
TkVfaW50KGNodW5rX3NpemVfbXMsCi0gICAgICAgICAgIDEwLAotICAgICAgICAgICAiVGltZSBi
ZXR3ZWVuIGVhY2ggY2h1bmsgb2Ygc2FtcGxlcyBpbiBtaWxsaXNlY29uZHMuIik7Ci0KLURFRklO
RV9pbnQoc2FtcGxlX3JhdGVfaHosIDE2MDAwLCAiU2FtcGxpbmcgZnJlcXVlbmN5IG9mIHRoZSBz
aWduYWwgaW4gSGVydHouIik7Ci1ERUZJTkVfaW50KGRldGVjdGlvbl9yYXRlX2h6LAotICAgICAg
ICAgICAwLAotICAgICAgICAgICAiU2FtcGxpbmcgZnJlcXVlbmN5IG9mIHRoZSBkZXRlY3Rpb24g
c2lnbmFsIGluIEhlcnR6LiIpOwotCi1ERUZJTkVfaW50KG51bV9jaGFubmVscywgMSwgIk51bWJl
ciBvZiBjaGFubmVscy4iKTsKLQotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlz
IG1lc3NhZ2UuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhpbl9maWxlX25hbWUsICIiLCAiUENN
IGZpbGUgdGhhdCBjb250YWlucyB0aGUgc2lnbmFsLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmco
ZGV0ZWN0aW9uX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAg
ICAgICAgICAgICAgIlBDTSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIGRldGVjdGlvbiBzaWduYWwu
Iik7CitXRUJSVENfREVGSU5FX3N0cmluZyhyZWZlcmVuY2VfZmlsZV9uYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiUENNIGZpbGUgdGhhdCBjb250
YWlucyB0aGUgcmVmZXJlbmNlIHNpZ25hbC4iKTsKKworV0VCUlRDX0RFRklORV9pbnQoY2h1bmtf
c2l6ZV9tcywKKyAgICAgICAgICAgICAgICAgIDEwLAorICAgICAgICAgICAgICAgICAgIlRpbWUg
YmV0d2VlbiBlYWNoIGNodW5rIG9mIHNhbXBsZXMgaW4gbWlsbGlzZWNvbmRzLiIpOworCitXRUJS
VENfREVGSU5FX2ludChzYW1wbGVfcmF0ZV9oeiwKKyAgICAgICAgICAgICAgICAgIDE2MDAwLAor
ICAgICAgICAgICAgICAgICAgIlNhbXBsaW5nIGZyZXF1ZW5jeSBvZiB0aGUgc2lnbmFsIGluIEhl
cnR6LiIpOworV0VCUlRDX0RFRklORV9pbnQoZGV0ZWN0aW9uX3JhdGVfaHosCisgICAgICAgICAg
ICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIlNhbXBsaW5nIGZyZXF1ZW5jeSBvZiB0aGUg
ZGV0ZWN0aW9uIHNpZ25hbCBpbiBIZXJ0ei4iKTsKKworV0VCUlRDX0RFRklORV9pbnQobnVtX2No
YW5uZWxzLCAxLCAiTnVtYmVyIG9mIGNoYW5uZWxzLiIpOworCitXRUJSVENfREVGSU5FX2Jvb2wo
aGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9zdXBwcmVzc29y
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9zdXBwcmVzc29yLmgKaW5kZXggOWFl
M2ZjNjYwYTg4MWUyZGZjNTFmNWY3OWI3M2E0NmFiZWY4MTlhMC4uYWU1MTk2NmEzZDRlYmI4NTBi
NjBjZDQ2OGM1M2UyY2ZmMjA0MWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90
cmFuc2llbnRfc3VwcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvdHJhbnNpZW50
X3N1cHByZXNzb3IuaApAQCAtMTEsOSArMTEsOSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfVFJBTlNJRU5UX1RSQU5TSUVOVF9TVVBQUkVTU09SX0hfCiAjZGVmaW5lIE1PRFVM
RVNfQVVESU9fUFJPQ0VTU0lOR19UUkFOU0lFTlRfVFJBTlNJRU5UX1NVUFBSRVNTT1JfSF8KIAot
I2luY2x1ZGUgPGRlcXVlPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzZXQ+CiAKICNpbmNsdWRlICJydGNfYmFz
ZS9ndGVzdF9wcm9kX3V0aWwuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC93
cGRfdHJlZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX3RyZWUuY2MKaW5kZXggNzJmNGQ3
Njg5MWYzODZkZTNkYzEyNzA3Yjc5ZDE2MTQxZWQwN2Q4NS4uYzhhYTYxNTg4MTdhZmVlY2ViOWMy
NDliMDczN2UwN2FiN2RlNmM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC93cGRf
dHJlZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3dwZF90cmVlLmNjCkBAIC0xMCwxMCAr
MTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC93
cGRfdHJlZS5oIgogCi0jaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCi0j
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC9keWFkaWNfZGVjaW1h
dG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC93cGRf
bm9kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvdHJhbnNpZW50L3dwZF90cmVlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3dwZF90cmVl
LmgKaW5kZXggNzA3YTg5ZDQ0YWMxNmZkYjI0YWJkZjk5ZTljMTU4OTdhZDY0NjFhNy4uYjYyMTM1
ZGFmYThkN2NlZDg5OWFjMWE2NzAyM2RjMWM3ZTQyNjFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3RyYW5zaWVudC93cGRfdHJlZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX3RyZWUu
aApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfVFJB
TlNJRU5UX1dQRF9UUkVFX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19UUkFO
U0lFTlRfV1BEX1RSRUVfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX25v
ZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90eXBpbmdfZGV0ZWN0aW9uLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdHlwaW5nX2RldGVjdGlvbi5oCmluZGV4IDcwZmQ5MDMzNjYxMDkyMTMzYWUzZjczNmY5MzIw
Yzk4MTg5OWEyYjcuLmQ4ZmIzNTkyYzk2NDRkNGQyYWI2OGM3YzllNDE4ZWZhNjg0MzU3ZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy90eXBpbmdfZGV0ZWN0aW9uLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3R5
cGluZ19kZXRlY3Rpb24uaApAQCAtMTEsOSArMTEsMTEgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX1RZUElOR19ERVRFQ1RJT05fSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19Q
Uk9DRVNTSU5HX1RZUElOR19ERVRFQ1RJT05fSF8KIAorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3Rl
bS9ydGNfZXhwb3J0LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBUeXBpbmdEZXRl
Y3Rpb24geworY2xhc3MgUlRDX0VYUE9SVCBUeXBpbmdEZXRlY3Rpb24gewogIHB1YmxpYzoKICAg
VHlwaW5nRGV0ZWN0aW9uKCk7CiAgIHZpcnR1YWwgflR5cGluZ0RldGVjdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvb291cmFfZmZ0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkv
b291cmFfZmZ0LmNjCmluZGV4IGMzMzMzY2VhNWJlYjAwMGE5ZjUyMjYzYzRmMWY3OGM5OTJiNDA3
ZDguLjg2MjhiZDM5ZjBhZWNjMjE5MWMzZDRhMjUyMTEyZDRkMzQyMmY0YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9v
b3VyYV9mZnQuY2MKQEAgLTIzLDggKzIzLDYgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdC5oIgogCi0jaW5jbHVkZSA8bWF0aC5oPgotCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvb291cmFfZmZ0X3RhYmxl
c19jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgogI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9mZWF0dXJlc193cmFwcGVyLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnRfc3NlMi5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGls
aXR5L29vdXJhX2ZmdF9zc2UyLmNjCmluZGV4IDliNWQwZjM3YTQ0OTdjNzQ3NmFkYTM4N2JmZDdi
Yjg2ZmMyZGM4NmMuLjBlNGE0NGJlY2NmNDFlNjIwM2U2ZjA1ODExYWFmM2Y5YWNhNTI2NDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdF9zc2UyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy91dGlsaXR5L29vdXJhX2ZmdF9zc2UyLmNjCkBAIC04LDEwICs4LDEwIEBACiAgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CiAgKi8KIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJh
X2ZmdC5oIgotCiAjaW5jbHVkZSA8ZW1taW50cmluLmg+CisjaW5jbHVkZSA8eG1taW50cmluLmg+
CiAKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnQu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnRf
dGFibGVzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGls
aXR5L29vdXJhX2ZmdF90YWJsZXNfbmVvbl9zc2UyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3lz
dGVtL2FyY2guaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvZ21tLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3ZhZC9nbW0uY2MKaW5kZXggY2Q4YTFhOGEzNzVjN2VkYjg5YTg1MzAyY2EwYjc1NzcxZTY4OGFi
My4uM2I4NzY0YzRkMDJhOWJiMzE3MzNhYWUxYWMxMTIxMTlkMmNlNTZhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3ZhZC9nbW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9nbW0uY2MKQEAgLTExLDcg
KzExLDYgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL2dtbS5oIgog
CiAjaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNlZF92YWQuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvdmFkL3BpdGNoX2Jhc2VkX3ZhZC5jYwppbmRleCAwMjVlZjIwNTlkOTEyYjM2Yjhl
ODdmMzZiMjEwNzM0ZWY0N2E0YzkzLi42OGU2MGRjNjZhZTUxNzZiMjlhY2QwNDc3ZDFjZDQwNTQ0
ZTNlZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BpdGNoX2Jhc2VkX3ZhZC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdmFkL3BpdGNoX2Jhc2VkX3ZhZC5jYwpAQCAtMTAsNyArMTAsNiBAQAogCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNlZF92YWQuaCIK
IAotI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvY29tbW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdmFkL3BpdGNoX2Jhc2VkX3ZhZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNlZF92YWQu
aAppbmRleCA0ZDMyNzY1MmM2ODAxNzI3NTJiOWY2NzMxMDAyNGIxNTZlMDUwMzU1Li4yMmJjMGYy
MjYzOTAxMDA3ZTJhZmRhNzhhYWEwYzY2YmE0NGU2Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dmFkL3BpdGNoX2Jhc2VkX3ZhZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvcGl0Y2hfYmFzZWRfdmFk
LmgKQEAgLTE4LDcgKzE4LDYgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIEF1ZGlv
RnJhbWU7CiBjbGFzcyBWYWRDaXJjdWxhckJ1ZmZlcjsKIAogLy8gQ29tcHV0ZXMgdGhlIHByb2Jh
YmlsaXR5IG9mIHRoZSBpbnB1dCBhdWRpbyBmcmFtZSB0byBiZSBhY3RpdmUgZ2l2ZW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy92YWQvcG9sZV96ZXJvX2ZpbHRlci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQv
cG9sZV96ZXJvX2ZpbHRlci5jYwppbmRleCBiOTk2N2Q3YWVhNWJmNDM5NDQ2NjJjNDM2MWM1ZTVj
ODI1YmUwOGZkLi40MTU2ZDdlNzk1MmE5ZjFhZTRlMDEwNzhiNDNjY2Q2MGM5YzU1ZGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BvbGVfemVyb19maWx0ZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3ZhZC9wb2xlX3plcm9fZmlsdGVyLmNjCkBAIC0xMCw3ICsxMCw2IEBACiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BvbGVfemVyb19maWx0ZXIuaCIKIAotI2luY2x1
ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9zdGFuZGFsb25lX3ZhZC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy92YWQvc3RhbmRhbG9uZV92YWQuY2MKaW5kZXggMTlhNTI4MmMzZjcxNTg0Yjg0MGZkM2M4NWUw
YmE5NTRmYjAxYmQyMi4uMTM5NzY2OGViNGJjYmQyNDMyZmQwM2M3Mjg1NmEyOWQ2NDgxOWQzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9zdGFuZGFsb25lX3ZhZC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdmFkL3N0YW5kYWxvbmVfdmFkLmNjCkBAIC0xMiw3ICsxMiw3IEBACiAKICNpbmNsdWRlIDxz
dHJpbmcuaD4KIAotI2luY2x1ZGUgImF1ZGlvL3V0aWxpdHkvYXVkaW9fZnJhbWVfb3BlcmF0aW9u
cy5oIgorI2luY2x1ZGUgImNvbW1vbl9hdWRpby92YWQvaW5jbHVkZS93ZWJydGNfdmFkLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL3ZhZC9zdGFuZGFsb25lX3ZhZC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9zdGFu
ZGFsb25lX3ZhZC5oCmluZGV4IDc5NjUwZmJlOGM2Y2FlMWMzYWRlZDkzYWNjMTJhZTlmZmQwMzE1
OWYuLjNkZmY0MTYzYzIyZTgxZDMyNWVhMmJlYzVhMGI5MGViNTIwMjlmMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy92YWQvc3RhbmRhbG9uZV92YWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3N0YW5k
YWxvbmVfdmFkLmgKQEAgLTExLDEzICsxMSwxNCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfQUdDX1NUQU5EQUxPTkVfVkFEX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJP
Q0VTU0lOR19BR0NfU1RBTkRBTE9ORV9WQURfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2lu
Y2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3ZhZC9pbmNsdWRlL3dl
YnJ0Y192YWQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL2NvbW1v
bi5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3MgQXVkaW9GcmFtZTsKLQogY2xhc3Mg
U3RhbmRhbG9uZVZhZCB7CiAgcHVibGljOgogICBzdGF0aWMgU3RhbmRhbG9uZVZhZCogQ3JlYXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZhZF9hdWRpb19wcm9jLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdmFkL3ZhZF9hdWRpb19wcm9jLmgKaW5kZXggZTM0MDkxYmRiNmFiZDFlOGEzYjMxYzE1OWYx
ZjAyNGUzNzBkM2IxNi4uOWJlMzQ2N2VmODUyMzA4NjQ3M2JiMjA0NjgxOGVkMjQxMTNmYzhlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92YWRfYXVkaW9fcHJvYy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy92YWQvdmFkX2F1ZGlvX3Byb2MuaApAQCAtMTEsMTMgKzExLDE0IEBACiAjaWZuZGVmIE1PRFVM
RVNfQVVESU9fUFJPQ0VTU0lOR19WQURfVkFEX0FVRElPX1BST0NfSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX1ZBRF9WQURfQVVESU9fUFJPQ19IXwogCisjaW5jbHVkZSA8c3Rk
ZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL2NvbW1vbi5oIiAgLy8gQXVkaW9GZWF0dXJlcywga1Nh
bXBsZVIuLi4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIEF1ZGlvRnJhbWU7CiBjbGFz
cyBQb2xlWmVyb0ZpbHRlcjsKIAogY2xhc3MgVmFkQXVkaW9Qcm9jIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy92YWQvdm9pY2VfYWN0aXZpdHlfZGV0ZWN0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvdm9p
Y2VfYWN0aXZpdHlfZGV0ZWN0b3IuaAppbmRleCBlNDI0YWMxYTI4Mjc4ZTU0NTJlMDI1M2JjNWU1
OTc3YWEwNzQ5M2NlLi5kMTQwZmUyYWEzYTQxNDAzNjFjZGExMDY1NTFkNzdhOTY3OWM2OTRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZvaWNlX2FjdGl2aXR5X2RldGVjdG9yLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3ZhZC92b2ljZV9hY3Rpdml0eV9kZXRlY3Rvci5oCkBAIC0xMSw2ICsxMSw4IEBA
CiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19WQURfVk9JQ0VfQUNUSVZJVFlfREVU
RUNUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX1ZBRF9WT0lDRV9BQ1RJ
VklUWV9ERVRFQ1RPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3ZvaWNlX2RldGVjdGlvbl9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZvaWNlX2RldGVj
dGlvbl9pbXBsLmNjCmluZGV4IDkyODBiZTFlZjlkMGMyNGY1ZWVhOGYxODUwMGFjODgwZTJlYWEx
MmYuLmM1NWNhNGFlZTg3NzFhYjEwYjk4YmE4MGIxZjU4ZTQ0YjU1ZjlhMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy92b2ljZV9kZXRlY3Rpb25faW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2Vf
ZGV0ZWN0aW9uX2ltcGwuY2MKQEAgLTEwLDggKzEwLDEwIEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2VfZGV0ZWN0aW9uX2ltcGwuaCIKIAorI2luY2x1ZGUgImFw
aS9hdWRpby9hdWRpb19mcmFtZS5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby92YWQvaW5jbHVk
ZS93ZWJydGNfdmFkLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlv
X2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3Npbmcvdm9pY2VfZGV0ZWN0aW9uX2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92b2ljZV9kZXRl
Y3Rpb25faW1wbC5oCmluZGV4IDRiNzI0YmRkMjU2NDdlYzNmMWFlNTI0Y2M1N2ZmZWYwNDI0OGRh
YjUuLmM0Mzg0NzM2Nzk5ZTAxMDgzZDQzNThkYWNlMmVjNTExODE3ZWRmNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy92b2ljZV9kZXRlY3Rpb25faW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92b2ljZV9k
ZXRlY3Rpb25faW1wbC5oCkBAIC0xMSwxMSArMTEsMTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX1ZPSUNFX0RFVEVDVElPTl9JTVBMX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fUFJPQ0VTU0lOR19WT0lDRV9ERVRFQ1RJT05fSU1QTF9IXwogCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0
cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNp
bmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKQEAgLTQyLDYgKzQ0LDcgQEAgY2xhc3MgVm9pY2VEZXRlY3Rpb25JbXBsIDogcHVibGlj
IFZvaWNlRGV0ZWN0aW9uIHsKIAogIHByaXZhdGU6CiAgIGNsYXNzIFZhZDsKKwogICBydGM6OkNy
aXRpY2FsU2VjdGlvbiogY29uc3QgY3JpdF87CiAgIGJvb2wgZW5hYmxlZF8gUlRDX0dVQVJERURf
QlkoY3JpdF8pID0gZmFsc2U7CiAgIGJvb2wgc3RyZWFtX2hhc192b2ljZV8gUlRDX0dVQVJERURf
QlkoY3JpdF8pID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9CVUlMRC5nbiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9j
b250cm9sbGVyL0JVSUxELmduCmluZGV4IDcyMDQ2ZjBhMDE1ZTAyYTgyNzJmOTQzMDI5NGJhZDBl
NDg4N2FkZGQuLmI1MDFjYjQ0NTdmMmZlNWY0MGQ5MTBiYjVjMDZlYWUzZWJkNjAzMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Yml0cmF0ZV9jb250cm9sbGVyL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL0JVSUxELmduCkBA
IC0xNSw2ICsxNSw4IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYml0cmF0ZV9jb250cm9sbGVyIikg
ewogICAgICJiaXRyYXRlX2NvbnRyb2xsZXJfaW1wbC5jYyIsCiAgICAgImJpdHJhdGVfY29udHJv
bGxlcl9pbXBsLmgiLAogICAgICJpbmNsdWRlL2JpdHJhdGVfY29udHJvbGxlci5oIiwKKyAgICAi
bG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5jYyIsCisgICAgImxvc3NfYmFzZWRfYmFu
ZHdpZHRoX2VzdGltYXRpb24uaCIsCiAgICAgInNlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlv
bi5jYyIsCiAgICAgInNlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oIiwKICAgXQpAQCAt
MzEsMTAgKzMzLDE2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYml0cmF0ZV9jb250cm9sbGVyIikg
ewogCiAgIGRlcHMgPSBbCiAgICAgIi4uOm1vZHVsZV9hcGkiLAorICAgICIuLi8uLi9hcGkvdHJh
bnNwb3J0Om5ldHdvcmtfY29udHJvbCIsCisgICAgIi4uLy4uL2FwaS91bml0czpkYXRhX3JhdGUi
LAorICAgICIuLi8uLi9hcGkvdW5pdHM6dGltZV9kZWx0YSIsCisgICAgIi4uLy4uL2FwaS91bml0
czp0aW1lc3RhbXAiLAogICAgICIuLi8uLi9sb2dnaW5nOnJ0Y19ldmVudF9id2UiLAogICAgICIu
Li8uLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hl
Y2tzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6ZGVwcmVjYXRpb24iLAogICAgICIuLi8uLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3J0Y19iYXNlL2V4cGVyaW1lbnRz
OmZpZWxkX3RyaWFsX3BhcnNlciIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAg
Ii4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uLy4uL3N5c3RlbV93
cmFwcGVyczptZXRyaWNzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2JpdHJhdGVfY29udHJv
bGxlcl9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvYml0cmF0ZV9jb250cm9sbGVyX2ltcGwuY2MKaW5k
ZXggOTMwNDViNzNhMzZiYjM0NGEzNjVkN2JjYWViZjhiMzhhZDIyMzc5MS4uNTdjODVmNmY2ZmM1
N2ZlMTIxN2Q0OGM2YzBmZjY3NzY5MjAxZjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvYml0
cmF0ZV9jb250cm9sbGVyX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvYml0cmF0ZV9jb250cm9s
bGVyX2ltcGwuY2MKQEAgLTIxLDEwICsyMSwxMCBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5h
bWVzcGFjZSB7Ci1hYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gVG9PcHRpb25hbERhdGFSYXRlKGlu
dCBzdGFydF9iaXRyYXRlX2JwcykgewotICBpZiAoc3RhcnRfYml0cmF0ZV9icHMgPT0gLTEpCi0g
ICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7Ci0gIHJldHVybiBEYXRhUmF0ZTo6YnBzKHN0YXJ0X2Jp
dHJhdGVfYnBzKTsKK2Fic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBUb09wdGlvbmFsRGF0YVJhdGUo
aW50IHNlbmRfYml0cmF0ZV9icHMpIHsKKyAgaWYgKHNlbmRfYml0cmF0ZV9icHMgPiAwKQorICAg
IHJldHVybiBEYXRhUmF0ZTo6YnBzKHNlbmRfYml0cmF0ZV9icHMpOworICByZXR1cm4gYWJzbDo6
bnVsbG9wdDsKIH0KIERhdGFSYXRlIE1heFJhdGUoaW50IG1heF9iaXRyYXRlX2JwcykgewogICBp
ZiAobWF4X2JpdHJhdGVfYnBzID09IC0xKQpAQCAtMTUzLDE0ICsxNTMsMTIgQEAgdm9pZCBCaXRy
YXRlQ29udHJvbGxlckltcGw6Ok9uRGVsYXlCYXNlZEJ3ZVJlc3VsdCgKICAgICBydGM6OkNyaXRT
Y29wZSBjcygmY3JpdHNlY3RfKTsKICAgICBpZiAocmVzdWx0LnByb2JlKSB7CiAgICAgICBiYW5k
d2lkdGhfZXN0aW1hdGlvbl8uU2V0U2VuZEJpdHJhdGUoCi0gICAgICAgICAgRGF0YVJhdGU6OmJw
cyhyZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBzKSwKLSAgICAgICAgICBUaW1lc3RhbXA6Om1zKGNs
b2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpKTsKKyAgICAgICAgICByZXN1bHQudGFyZ2V0X2Jp
dHJhdGUsIFRpbWVzdGFtcDo6bXMoY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSkpOwogICAg
IH0KICAgICAvLyBTaW5jZSBTZXRTZW5kQml0cmF0ZSBub3cgcmVzZXRzIHRoZSBkZWxheS1iYXNl
ZCBlc3RpbWF0ZSwgd2UgaGF2ZSB0byBjYWxsCiAgICAgLy8gVXBkYXRlRGVsYXlCYXNlZEVzdGlt
YXRlIGFmdGVyIFNldFNlbmRCaXRyYXRlLgogICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy5VcGRh
dGVEZWxheUJhc2VkRXN0aW1hdGUoCi0gICAgICAgIFRpbWVzdGFtcDo6bXMoY2xvY2tfLT5UaW1l
SW5NaWxsaXNlY29uZHMoKSksCi0gICAgICAgIERhdGFSYXRlOjpicHMocmVzdWx0LnRhcmdldF9i
aXRyYXRlX2JwcykpOworICAgICAgICBUaW1lc3RhbXA6Om1zKGNsb2NrXy0+VGltZUluTWlsbGlz
ZWNvbmRzKCkpLCByZXN1bHQudGFyZ2V0X2JpdHJhdGUpOwogICB9CiAgIE1heWJlVHJpZ2dlck9u
TmV0d29ya0NoYW5nZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2JpdHJhdGVfY29u
dHJvbGxlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2JpdHJhdGVfY29udHJvbGxlcl91bml0
dGVzdC5jYwppbmRleCA5NmY4YTFlZjI2NmViOWU2MmVjZjBmODAxY2NjMzFkMDhjN2VkYThiLi5j
ZjI4MTIxNGFhM2NmYjQ2ODVlNGJlOGYzOTY1MzIzYjljOTBjZTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29u
dHJvbGxlci9iaXRyYXRlX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIv
Yml0cmF0ZV9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCkBAIC0xNjksNyArMTY5LDcgQEAgVEVTVF9G
KEJpdHJhdGVDb250cm9sbGVyVGVzdCwgT25lQml0cmF0ZU9ic2VydmVyT25lUnRjcE9ic2VydmVy
KSB7CiAgIEVYUEVDVF9FUSgzMDAwMDAsIGJpdHJhdGVfb2JzZXJ2ZXJfLmxhc3RfYml0cmF0ZV8p
OwogCiAgIC8vIFRlc3QgdGhhdCBhIGxvdyBkZWxheS1iYXNlZCBlc3RpbWF0ZSBsaW1pdHMgdGhl
IGNvbWJpbmVkIGVzdGltYXRlLgotICB3ZWJydGM6OkRlbGF5QmFzZWRCd2U6OlJlc3VsdCByZXN1
bHQoZmFsc2UsIDI4MDAwMCk7CisgIHdlYnJ0Yzo6RGVsYXlCYXNlZEJ3ZTo6UmVzdWx0IHJlc3Vs
dChmYWxzZSwgd2VicnRjOjpEYXRhUmF0ZTo6a2JwcygyODApKTsKICAgY29udHJvbGxlcl8tPk9u
RGVsYXlCYXNlZEJ3ZVJlc3VsdChyZXN1bHQpOwogICBFWFBFQ1RfRVEoMjgwMDAwLCBiaXRyYXRl
X29ic2VydmVyXy5sYXN0X2JpdHJhdGVfKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvaW5j
bHVkZS9iaXRyYXRlX2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2luY2x1ZGUvYml0cmF0ZV9j
b250cm9sbGVyLmgKaW5kZXggZjY3NjAwZDE5MDgzNzg0ZTQ2N2QzZmQyMmY3MjdkM2YwZTMzMjMx
MS4uM2UxMWZhNzZhMzI0MWRlNjA4OWU4ZTJhMzQxMGMwYzg2NWYwOWQ2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRl
X2NvbnRyb2xsZXIvaW5jbHVkZS9iaXRyYXRlX2NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxl
ci9pbmNsdWRlL2JpdHJhdGVfY29udHJvbGxlci5oCkBAIC0xNSwxNSArMTUsMTcgQEAKICNpZm5k
ZWYgTU9EVUxFU19CSVRSQVRFX0NPTlRST0xMRVJfSU5DTFVERV9CSVRSQVRFX0NPTlRST0xMRVJf
SF8KICNkZWZpbmUgTU9EVUxFU19CSVRSQVRFX0NPTlRST0xMRVJfSU5DTFVERV9CSVRSQVRFX0NP
TlRST0xMRVJfSF8KIAotI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNs
dWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21v
ZHVsZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvZGVwcmVjYXRpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNz
IENsb2NrOwogY2xhc3MgUnRjRXZlbnRMb2c7CiAKIC8vIERlcHJlY2F0ZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0
ZV9jb250cm9sbGVyL2xvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJv
bGxlci9sb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkN2Y4
YWEyYzM2ZDdmZDY2ZDU2MmFhY2I4NmRlNmNlNzY2NmNlNDcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVf
Y29udHJvbGxlci9sb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjCkBAIC0wLDAgKzEs
MjE1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvYml0cmF0
ZV9jb250cm9sbGVyL2xvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uaCIKKworI2luY2x1
ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisj
aW5jbHVkZSAiYXBpL3VuaXRzL2RhdGFfcmF0ZS5oIgorI2luY2x1ZGUgImFwaS91bml0cy90aW1l
X2RlbHRhLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwu
aCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworY29uc3QgY2hhciBrQndlTG9z
c0Jhc2VkQ29udHJvbFtdID0gIldlYlJUQy1Cd2UtTG9zc0Jhc2VkQ29udHJvbCI7CisKKy8vIElu
Y3JlYXNlIHNsb3dlciB3aGVuIFJUVCBpcyBoaWdoLgorZG91YmxlIEdldEluY3JlYXNlRmFjdG9y
KGNvbnN0IExvc3NCYXNlZENvbnRyb2xDb25maWcmIGNvbmZpZywgVGltZURlbHRhIHJ0dCkgewor
ICAvLyBDbGFtcCB0aGUgUlRUCisgIGlmIChydHQgPCBjb25maWcuaW5jcmVhc2VfbG93X3J0dCkg
eworICAgIHJ0dCA9IGNvbmZpZy5pbmNyZWFzZV9sb3dfcnR0OworICB9IGVsc2UgaWYgKHJ0dCA+
IGNvbmZpZy5pbmNyZWFzZV9oaWdoX3J0dCkgeworICAgIHJ0dCA9IGNvbmZpZy5pbmNyZWFzZV9o
aWdoX3J0dDsKKyAgfQorICBhdXRvIHJ0dF9yYW5nZSA9IGNvbmZpZy5pbmNyZWFzZV9oaWdoX3J0
dC5HZXQoKSAtIGNvbmZpZy5pbmNyZWFzZV9sb3dfcnR0OworICBpZiAocnR0X3JhbmdlIDw9IFRp
bWVEZWx0YTo6WmVybygpKSB7CisgICAgUlRDX0RDSEVDSyhmYWxzZSk7ICAvLyBPbmx5IG9uIG1p
c2NvbmZpZ3VyYXRpb24uCisgICAgcmV0dXJuIGNvbmZpZy5taW5faW5jcmVhc2VfZmFjdG9yOwor
ICB9CisgIGF1dG8gcnR0X29mZnNldCA9IHJ0dCAtIGNvbmZpZy5pbmNyZWFzZV9sb3dfcnR0Owor
ICBhdXRvIHJlbGF0aXZlX29mZnNldCA9IHN0ZDo6bWF4KDAuMCwgc3RkOjptaW4ocnR0X29mZnNl
dCAvIHJ0dF9yYW5nZSwgMS4wKSk7CisgIGF1dG8gZmFjdG9yX3JhbmdlID0gY29uZmlnLm1heF9p
bmNyZWFzZV9mYWN0b3IgLSBjb25maWcubWluX2luY3JlYXNlX2ZhY3RvcjsKKyAgcmV0dXJuIGNv
bmZpZy5taW5faW5jcmVhc2VfZmFjdG9yICsgKDEgLSByZWxhdGl2ZV9vZmZzZXQpICogZmFjdG9y
X3JhbmdlOworfQorCitkb3VibGUgTG9zc0Zyb21CaXRyYXRlKERhdGFSYXRlIGJpdHJhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRlIGxvc3NfYmFuZHdpZHRoX2JhbGFuY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBleHBvbmVudCkgeworICBpZiAobG9zc19iYW5k
d2lkdGhfYmFsYW5jZSA+PSBiaXRyYXRlKQorICAgIHJldHVybiAxLjA7CisgIHJldHVybiBwb3co
bG9zc19iYW5kd2lkdGhfYmFsYW5jZSAvIGJpdHJhdGUsIGV4cG9uZW50KTsKK30KKworRGF0YVJh
dGUgQml0cmF0ZUZyb21Mb3NzKGRvdWJsZSBsb3NzLAorICAgICAgICAgICAgICAgICAgICAgICAg
IERhdGFSYXRlIGxvc3NfYmFuZHdpZHRoX2JhbGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIGV4cG9uZW50KSB7CisgIGlmIChleHBvbmVudCA8PSAwKSB7CisgICAgUlRDX0RD
SEVDSyhmYWxzZSk7CisgICAgcmV0dXJuIERhdGFSYXRlOjpJbmZpbml0eSgpOworICB9CisgIGlm
IChsb3NzIDwgMWUtNSkKKyAgICByZXR1cm4gRGF0YVJhdGU6OkluZmluaXR5KCk7CisgIHJldHVy
biBsb3NzX2JhbmR3aWR0aF9iYWxhbmNlICogcG93KGxvc3MsIC0xLjAgLyBleHBvbmVudCk7Cit9
CisKK2RvdWJsZSBFeHBvbmVudGlhbFVwZGF0ZShUaW1lRGVsdGEgd2luZG93LCBUaW1lRGVsdGEg
aW50ZXJ2YWwpIHsKKyAgLy8gVXNlIHRoZSBjb252ZW50aW9uIHRoYXQgZXhwb25lbnRpYWwgd2lu
ZG93IGxlbmd0aCAod2hpY2ggaXMgcmVhbGx5CisgIC8vIGluZmluaXRlKSBpcyB0aGUgdGltZSBp
dCB0YWtlcyB0byBkYW1wZW4gdG8gMS9lLgorICBpZiAod2luZG93IDw9IFRpbWVEZWx0YTo6WmVy
bygpKSB7CisgICAgUlRDX0RDSEVDSyhmYWxzZSk7CisgICAgcmV0dXJuIDEuMGY7CisgIH0KKyAg
cmV0dXJuIDEuMGYgLSBleHAoaW50ZXJ2YWwgLyB3aW5kb3cgKiAtMS4wKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlCisKK0xvc3NCYXNlZENvbnRyb2xDb25maWc6Okxvc3NCYXNlZENvbnRyb2xDb25m
aWcoKQorICAgIDogZW5hYmxlZChmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtCd2VMb3NzQmFzZWRD
b250cm9sKSksCisgICAgICBtaW5faW5jcmVhc2VfZmFjdG9yKCJtaW5faW5jciIsIDEuMDIpLAor
ICAgICAgbWF4X2luY3JlYXNlX2ZhY3RvcigibWF4X2luY3IiLCAxLjA4KSwKKyAgICAgIGluY3Jl
YXNlX2xvd19ydHQoImluY3JfbG93X3J0dCIsIFRpbWVEZWx0YTo6bXMoMjAwKSksCisgICAgICBp
bmNyZWFzZV9oaWdoX3J0dCgiaW5jcl9oaWdoX3J0dCIsIFRpbWVEZWx0YTo6bXMoODAwKSksCisg
ICAgICBkZWNyZWFzZV9mYWN0b3IoImRlY3IiLCAwLjk5KSwKKyAgICAgIGxvc3Nfd2luZG93KCJs
b3NzX3dpbiIsIFRpbWVEZWx0YTo6bXMoODAwKSksCisgICAgICBsb3NzX21heF93aW5kb3coImxv
c3NfbWF4X3dpbiIsIFRpbWVEZWx0YTo6bXMoODAwKSksCisgICAgICBhY2tub3dsZWRnZWRfcmF0
ZV9tYXhfd2luZG93KCJhY2tyYXRlX21heF93aW4iLCBUaW1lRGVsdGE6Om1zKDgwMCkpLAorICAg
ICAgaW5jcmVhc2Vfb2Zmc2V0KCJpbmNyX29mZnNldCIsIERhdGFSYXRlOjpicHMoMTAwMCkpLAor
ICAgICAgbG9zc19iYW5kd2lkdGhfYmFsYW5jZV9pbmNyZWFzZSgiYmFsYW5jZV9pbmNyIiwgRGF0
YVJhdGU6OmticHMoMC41KSksCisgICAgICBsb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2RlY3JlYXNl
KCJiYWxhbmNlX2RlY3IiLCBEYXRhUmF0ZTo6a2Jwcyg0KSksCisgICAgICBsb3NzX2JhbmR3aWR0
aF9iYWxhbmNlX2V4cG9uZW50KCJleHBvbmVudCIsIDAuNSksCisgICAgICBhbGxvd19yZXNldHMo
InJlc2V0cyIsIGZhbHNlKSwKKyAgICAgIGRlY3JlYXNlX2ludGVydmFsKCJkZWNyX2ludHZsIiwg
VGltZURlbHRhOjptcygzMDApKSwKKyAgICAgIGxvc3NfcmVwb3J0X3RpbWVvdXQoInRpbWVvdXQi
LCBUaW1lRGVsdGE6Om1zKDYwMDApKSB7CisgIHN0ZDo6c3RyaW5nIHRyaWFsX3N0cmluZyA9IGZp
ZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoa0J3ZUxvc3NCYXNlZENvbnRyb2wpOworICBQYXJzZUZp
ZWxkVHJpYWwoCisgICAgICB7Jm1pbl9pbmNyZWFzZV9mYWN0b3IsICZtYXhfaW5jcmVhc2VfZmFj
dG9yLCAmaW5jcmVhc2VfbG93X3J0dCwKKyAgICAgICAmaW5jcmVhc2VfaGlnaF9ydHQsICZkZWNy
ZWFzZV9mYWN0b3IsICZsb3NzX3dpbmRvdywgJmxvc3NfbWF4X3dpbmRvdywKKyAgICAgICAmYWNr
bm93bGVkZ2VkX3JhdGVfbWF4X3dpbmRvdywgJmluY3JlYXNlX29mZnNldCwKKyAgICAgICAmbG9z
c19iYW5kd2lkdGhfYmFsYW5jZV9pbmNyZWFzZSwgJmxvc3NfYmFuZHdpZHRoX2JhbGFuY2VfZGVj
cmVhc2UsCisgICAgICAgJmxvc3NfYmFuZHdpZHRoX2JhbGFuY2VfZXhwb25lbnQsICZhbGxvd19y
ZXNldHMsICZkZWNyZWFzZV9pbnRlcnZhbCwKKyAgICAgICAmbG9zc19yZXBvcnRfdGltZW91dH0s
CisgICAgICB0cmlhbF9zdHJpbmcpOworfQorTG9zc0Jhc2VkQ29udHJvbENvbmZpZzo6TG9zc0Jh
c2VkQ29udHJvbENvbmZpZyhjb25zdCBMb3NzQmFzZWRDb250cm9sQ29uZmlnJikgPQorICAgIGRl
ZmF1bHQ7CitMb3NzQmFzZWRDb250cm9sQ29uZmlnOjp+TG9zc0Jhc2VkQ29udHJvbENvbmZpZygp
ID0gZGVmYXVsdDsKKworTG9zc0Jhc2VkQmFuZHdpZHRoRXN0aW1hdGlvbjo6TG9zc0Jhc2VkQmFu
ZHdpZHRoRXN0aW1hdGlvbigpCisgICAgOiBjb25maWdfKExvc3NCYXNlZENvbnRyb2xDb25maWco
KSksCisgICAgICBhdmVyYWdlX2xvc3NfKDApLAorICAgICAgYXZlcmFnZV9sb3NzX21heF8oMCks
CisgICAgICBsb3NzX2Jhc2VkX2JpdHJhdGVfKERhdGFSYXRlOjpaZXJvKCkpLAorICAgICAgYWNr
bm93bGVkZ2VkX2JpdHJhdGVfbWF4XyhEYXRhUmF0ZTo6WmVybygpKSwKKyAgICAgIGFja25vd2xl
ZGdlZF9iaXRyYXRlX2xhc3RfdXBkYXRlXyhUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKSksCisg
ICAgICB0aW1lX2xhc3RfZGVjcmVhc2VfKFRpbWVzdGFtcDo6TWludXNJbmZpbml0eSgpKSwKKyAg
ICAgIGhhc19kZWNyZWFzZWRfc2luY2VfbGFzdF9sb3NzX3JlcG9ydF8oZmFsc2UpLAorICAgICAg
bGFzdF9sb3NzX3BhY2tldF9yZXBvcnRfKFRpbWVzdGFtcDo6TWludXNJbmZpbml0eSgpKSwKKyAg
ICAgIGxhc3RfbG9zc19yYXRpb18oMCkge30KKwordm9pZCBMb3NzQmFzZWRCYW5kd2lkdGhFc3Rp
bWF0aW9uOjpVcGRhdGVMb3NzU3RhdGlzdGljcygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNr
ZXRSZXN1bHQ+JiBwYWNrZXRfcmVzdWx0cywKKyAgICBUaW1lc3RhbXAgYXRfdGltZSkgeworICBp
ZiAocGFja2V0X3Jlc3VsdHMuZW1wdHkoKSkgeworICAgIFJUQ19EQ0hFQ0soZmFsc2UpOworICAg
IHJldHVybjsKKyAgfQorICBpbnQgbG9zc19jb3VudCA9IDA7CisgIGZvciAoYXV0byBwa3QgOiBw
YWNrZXRfcmVzdWx0cykgeworICAgIGxvc3NfY291bnQgKz0gcGt0LnJlY2VpdmVfdGltZS5Jc0lu
ZmluaXRlKCkgPyAxIDogMDsKKyAgfQorICBsYXN0X2xvc3NfcmF0aW9fID0gc3RhdGljX2Nhc3Q8
ZG91YmxlPihsb3NzX2NvdW50KSAvIHBhY2tldF9yZXN1bHRzLnNpemUoKTsKKyAgY29uc3QgVGlt
ZURlbHRhIHRpbWVfcGFzc2VkID0gbGFzdF9sb3NzX3BhY2tldF9yZXBvcnRfLklzRmluaXRlKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXRfdGltZSAtIGxhc3RfbG9z
c19wYWNrZXRfcmVwb3J0XworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBU
aW1lRGVsdGE6OnNlY29uZHMoMSk7CisgIGxhc3RfbG9zc19wYWNrZXRfcmVwb3J0XyA9IGF0X3Rp
bWU7CisgIGhhc19kZWNyZWFzZWRfc2luY2VfbGFzdF9sb3NzX3JlcG9ydF8gPSBmYWxzZTsKKwor
ICBhdmVyYWdlX2xvc3NfICs9IEV4cG9uZW50aWFsVXBkYXRlKGNvbmZpZ18ubG9zc193aW5kb3cs
IHRpbWVfcGFzc2VkKSAqCisgICAgICAgICAgICAgICAgICAgKGxhc3RfbG9zc19yYXRpb18gLSBh
dmVyYWdlX2xvc3NfKTsKKyAgaWYgKGF2ZXJhZ2VfbG9zc18gPiBhdmVyYWdlX2xvc3NfbWF4Xykg
eworICAgIGF2ZXJhZ2VfbG9zc19tYXhfID0gYXZlcmFnZV9sb3NzXzsKKyAgfSBlbHNlIHsKKyAg
ICBhdmVyYWdlX2xvc3NfbWF4XyArPQorICAgICAgICBFeHBvbmVudGlhbFVwZGF0ZShjb25maWdf
Lmxvc3NfbWF4X3dpbmRvdywgdGltZV9wYXNzZWQpICoKKyAgICAgICAgKGF2ZXJhZ2VfbG9zc18g
LSBhdmVyYWdlX2xvc3NfbWF4Xyk7CisgIH0KK30KKwordm9pZCBMb3NzQmFzZWRCYW5kd2lkdGhF
c3RpbWF0aW9uOjpVcGRhdGVBY2tub3dsZWRnZWRCaXRyYXRlKAorICAgIERhdGFSYXRlIGFja25v
d2xlZGdlZF9iaXRyYXRlLAorICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CisgIGNvbnN0IFRpbWVE
ZWx0YSB0aW1lX3Bhc3NlZCA9CisgICAgICBhY2tub3dsZWRnZWRfYml0cmF0ZV9sYXN0X3VwZGF0
ZV8uSXNGaW5pdGUoKQorICAgICAgICAgID8gYXRfdGltZSAtIGFja25vd2xlZGdlZF9iaXRyYXRl
X2xhc3RfdXBkYXRlXworICAgICAgICAgIDogVGltZURlbHRhOjpzZWNvbmRzKDEpOworICBhY2tu
b3dsZWRnZWRfYml0cmF0ZV9sYXN0X3VwZGF0ZV8gPSBhdF90aW1lOworICBpZiAoYWNrbm93bGVk
Z2VkX2JpdHJhdGUgPiBhY2tub3dsZWRnZWRfYml0cmF0ZV9tYXhfKSB7CisgICAgYWNrbm93bGVk
Z2VkX2JpdHJhdGVfbWF4XyA9IGFja25vd2xlZGdlZF9iaXRyYXRlOworICB9IGVsc2UgeworICAg
IGFja25vd2xlZGdlZF9iaXRyYXRlX21heF8gKz0KKyAgICAgICAgRXhwb25lbnRpYWxVcGRhdGUo
Y29uZmlnXy5hY2tub3dsZWRnZWRfcmF0ZV9tYXhfd2luZG93LCB0aW1lX3Bhc3NlZCkgKgorICAg
ICAgICAoYWNrbm93bGVkZ2VkX2JpdHJhdGUgLSBhY2tub3dsZWRnZWRfYml0cmF0ZV9tYXhfKTsK
KyAgfQorfQorCit2b2lkIExvc3NCYXNlZEJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZShUaW1l
c3RhbXAgYXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERhdGFSYXRlIG1pbl9iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGltZURlbHRhIGxhc3Rfcm91bmRfdHJpcF90aW1lKSB7CisgIC8vIE9ubHkgaW5j
cmVhc2UgaWYgbG9zcyBoYXMgYmVlbiBsb3cgZm9yIHNvbWUgdGltZS4KKyAgY29uc3QgZG91Ymxl
IGxvc3NfZXN0aW1hdGVfZm9yX2luY3JlYXNlID0gYXZlcmFnZV9sb3NzX21heF87CisgIC8vIEF2
b2lkIG11bHRpcGxlIGRlY3JlYXNlcyBmcm9tIGF2ZXJhZ2luZyBvdmVyIG9uZSBsb3NzIHNwaWtl
LgorICBjb25zdCBkb3VibGUgbG9zc19lc3RpbWF0ZV9mb3JfZGVjcmVhc2UgPQorICAgICAgc3Rk
OjptaW4oYXZlcmFnZV9sb3NzXywgbGFzdF9sb3NzX3JhdGlvXyk7CisKKyAgY29uc3QgZG91Ymxl
IGxvc3NfaW5jcmVhc2VfdGhyZXNob2xkID0gTG9zc0Zyb21CaXRyYXRlKAorICAgICAgbG9zc19i
YXNlZF9iaXRyYXRlXywgY29uZmlnXy5sb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2luY3JlYXNlLAor
ICAgICAgY29uZmlnXy5sb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2V4cG9uZW50KTsKKyAgY29uc3Qg
ZG91YmxlIGxvc3NfZGVjcmVhc2VfdGhyZXNob2xkID0gTG9zc0Zyb21CaXRyYXRlKAorICAgICAg
bG9zc19iYXNlZF9iaXRyYXRlXywgY29uZmlnXy5sb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2RlY3Jl
YXNlLAorICAgICAgY29uZmlnXy5sb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2V4cG9uZW50KTsKKyAg
Y29uc3QgYm9vbCBhbGxvd19kZWNyZWFzZSA9CisgICAgICAhaGFzX2RlY3JlYXNlZF9zaW5jZV9s
YXN0X2xvc3NfcmVwb3J0XyAmJgorICAgICAgKGF0X3RpbWUgLSB0aW1lX2xhc3RfZGVjcmVhc2Vf
ID49CisgICAgICAgbGFzdF9yb3VuZF90cmlwX3RpbWUgKyBjb25maWdfLmRlY3JlYXNlX2ludGVy
dmFsKTsKKworICBpZiAobG9zc19lc3RpbWF0ZV9mb3JfaW5jcmVhc2UgPCBsb3NzX2luY3JlYXNl
X3RocmVzaG9sZCkgeworICAgIC8vIEluY3JlYXNlIGJpdHJhdGUgYnkgUlRULWFkYXB0aXZlIHJh
dGlvLgorICAgIERhdGFSYXRlIG5ld19pbmNyZWFzZWRfYml0cmF0ZSA9CisgICAgICAgIG1pbl9i
aXRyYXRlICogR2V0SW5jcmVhc2VGYWN0b3IoY29uZmlnXywgbGFzdF9yb3VuZF90cmlwX3RpbWUp
ICsKKyAgICAgICAgY29uZmlnXy5pbmNyZWFzZV9vZmZzZXQ7CisgICAgLy8gVGhlIGJpdHJhdGUg
dGhhdCB3b3VsZCBtYWtlIHRoZSBsb3NzICJqdXN0IGhpZ2ggZW5vdWdoIi4KKyAgICBjb25zdCBE
YXRhUmF0ZSBuZXdfaW5jcmVhc2VkX2JpdHJhdGVfY2FwID0gQml0cmF0ZUZyb21Mb3NzKAorICAg
ICAgICBsb3NzX2VzdGltYXRlX2Zvcl9pbmNyZWFzZSwgY29uZmlnXy5sb3NzX2JhbmR3aWR0aF9i
YWxhbmNlX2luY3JlYXNlLAorICAgICAgICBjb25maWdfLmxvc3NfYmFuZHdpZHRoX2JhbGFuY2Vf
ZXhwb25lbnQpOworICAgIG5ld19pbmNyZWFzZWRfYml0cmF0ZSA9CisgICAgICAgIHN0ZDo6bWlu
KG5ld19pbmNyZWFzZWRfYml0cmF0ZSwgbmV3X2luY3JlYXNlZF9iaXRyYXRlX2NhcCk7CisgICAg
bG9zc19iYXNlZF9iaXRyYXRlXyA9IHN0ZDo6bWF4KG5ld19pbmNyZWFzZWRfYml0cmF0ZSwgbG9z
c19iYXNlZF9iaXRyYXRlXyk7CisgIH0gZWxzZSBpZiAobG9zc19lc3RpbWF0ZV9mb3JfZGVjcmVh
c2UgPiBsb3NzX2RlY3JlYXNlX3RocmVzaG9sZCAmJgorICAgICAgICAgICAgIGFsbG93X2RlY3Jl
YXNlKSB7CisgICAgRGF0YVJhdGUgbmV3X2RlY3JlYXNlZF9iaXRyYXRlID0KKyAgICAgICAgY29u
ZmlnXy5kZWNyZWFzZV9mYWN0b3IgKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9tYXhfOworICAgIC8v
IFRoZSBiaXRyYXRlIHRoYXQgd291bGQgbWFrZSB0aGUgbG9zcyAianVzdCBhY2NlcHRhYmxlIi4K
KyAgICBjb25zdCBEYXRhUmF0ZSBuZXdfZGVjcmVhc2VkX2JpdHJhdGVfZmxvb3IgPSBCaXRyYXRl
RnJvbUxvc3MoCisgICAgICAgIGxvc3NfZXN0aW1hdGVfZm9yX2RlY3JlYXNlLCBjb25maWdfLmxv
c3NfYmFuZHdpZHRoX2JhbGFuY2VfZGVjcmVhc2UsCisgICAgICAgIGNvbmZpZ18ubG9zc19iYW5k
d2lkdGhfYmFsYW5jZV9leHBvbmVudCk7CisgICAgbmV3X2RlY3JlYXNlZF9iaXRyYXRlID0KKyAg
ICAgICAgc3RkOjptYXgobmV3X2RlY3JlYXNlZF9iaXRyYXRlLCBuZXdfZGVjcmVhc2VkX2JpdHJh
dGVfZmxvb3IpOworICAgIGlmIChuZXdfZGVjcmVhc2VkX2JpdHJhdGUgPCBsb3NzX2Jhc2VkX2Jp
dHJhdGVfKSB7CisgICAgICB0aW1lX2xhc3RfZGVjcmVhc2VfID0gYXRfdGltZTsKKyAgICAgIGhh
c19kZWNyZWFzZWRfc2luY2VfbGFzdF9sb3NzX3JlcG9ydF8gPSB0cnVlOworICAgICAgbG9zc19i
YXNlZF9iaXRyYXRlXyA9IG5ld19kZWNyZWFzZWRfYml0cmF0ZTsKKyAgICB9CisgIH0KK30KKwor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNl
ZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNlZF9iYW5kd2lk
dGhfZXN0aW1hdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmNTYwNzY5YmE0M2M1ZDgyM2ZkNTZmYmJjMDg5
ZTYyN2M5NWU2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9sb3NzX2Jhc2VkX2Jh
bmR3aWR0aF9lc3RpbWF0aW9uLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpZm5kZWYgTU9EVUxFU19CSVRSQVRFX0NPTlRST0xMRVJfTE9TU19CQVNFRF9CQU5E
V0lEVEhfRVNUSU1BVElPTl9IXworI2RlZmluZSBNT0RVTEVTX0JJVFJBVEVfQ09OVFJPTExFUl9M
T1NTX0JBU0VEX0JBTkRXSURUSF9FU1RJTUFUSU9OX0hfCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisK
KyNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9yYXRlLmgiCisjaW5jbHVkZSAiYXBpL3VuaXRzL3Rp
bWVfZGVsdGEuaCIKKyNpbmNsdWRlICJhcGkvdW5pdHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXIuaCIKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CisKK3N0cnVjdCBMb3NzQmFzZWRDb250cm9sQ29uZmlnIHsKKyAgTG9zc0Jhc2VkQ29u
dHJvbENvbmZpZygpOworICBMb3NzQmFzZWRDb250cm9sQ29uZmlnKGNvbnN0IExvc3NCYXNlZENv
bnRyb2xDb25maWcmKTsKKyAgTG9zc0Jhc2VkQ29udHJvbENvbmZpZyYgb3BlcmF0b3I9KGNvbnN0
IExvc3NCYXNlZENvbnRyb2xDb25maWcmKSA9IGRlZmF1bHQ7CisgIH5Mb3NzQmFzZWRDb250cm9s
Q29uZmlnKCk7CisgIGJvb2wgZW5hYmxlZDsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxkb3VibGU+
IG1pbl9pbmNyZWFzZV9mYWN0b3I7CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8ZG91YmxlPiBtYXhf
aW5jcmVhc2VfZmFjdG9yOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4gaW5jcmVh
c2VfbG93X3J0dDsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IGluY3JlYXNlX2hp
Z2hfcnR0OworICBGaWVsZFRyaWFsUGFyYW1ldGVyPGRvdWJsZT4gZGVjcmVhc2VfZmFjdG9yOwor
ICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4gbG9zc193aW5kb3c7CisgIEZpZWxkVHJp
YWxQYXJhbWV0ZXI8VGltZURlbHRhPiBsb3NzX21heF93aW5kb3c7CisgIEZpZWxkVHJpYWxQYXJh
bWV0ZXI8VGltZURlbHRhPiBhY2tub3dsZWRnZWRfcmF0ZV9tYXhfd2luZG93OworICBGaWVsZFRy
aWFsUGFyYW1ldGVyPERhdGFSYXRlPiBpbmNyZWFzZV9vZmZzZXQ7CisgIEZpZWxkVHJpYWxQYXJh
bWV0ZXI8RGF0YVJhdGU+IGxvc3NfYmFuZHdpZHRoX2JhbGFuY2VfaW5jcmVhc2U7CisgIEZpZWxk
VHJpYWxQYXJhbWV0ZXI8RGF0YVJhdGU+IGxvc3NfYmFuZHdpZHRoX2JhbGFuY2VfZGVjcmVhc2U7
CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8ZG91YmxlPiBsb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2V4
cG9uZW50OworICBGaWVsZFRyaWFsUGFyYW1ldGVyPGJvb2w+IGFsbG93X3Jlc2V0czsKKyAgRmll
bGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IGRlY3JlYXNlX2ludGVydmFsOworICBGaWVsZFRy
aWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4gbG9zc19yZXBvcnRfdGltZW91dDsKK307CisKK2NsYXNz
IExvc3NCYXNlZEJhbmR3aWR0aEVzdGltYXRpb24geworIHB1YmxpYzoKKyAgTG9zc0Jhc2VkQmFu
ZHdpZHRoRXN0aW1hdGlvbigpOworICB2b2lkIFVwZGF0ZShUaW1lc3RhbXAgYXRfdGltZSwKKyAg
ICAgICAgICAgICAgRGF0YVJhdGUgbWluX2JpdHJhdGUsCisgICAgICAgICAgICAgIFRpbWVEZWx0
YSBsYXN0X3JvdW5kX3RyaXBfdGltZSk7CisgIHZvaWQgVXBkYXRlQWNrbm93bGVkZ2VkQml0cmF0
ZShEYXRhUmF0ZSBhY2tub3dsZWRnZWRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgdm9pZCBNYXliZVJlc2V0KERhdGFSYXRl
IGJpdHJhdGUpIHsKKyAgICBpZiAoY29uZmlnXy5hbGxvd19yZXNldHMpCisgICAgICBsb3NzX2Jh
c2VkX2JpdHJhdGVfID0gYml0cmF0ZTsKKyAgfQorICB2b2lkIFNldEluaXRpYWxCaXRyYXRlKERh
dGFSYXRlIGJpdHJhdGUpIHsgbG9zc19iYXNlZF9iaXRyYXRlXyA9IGJpdHJhdGU7IH0KKyAgYm9v
bCBFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gY29uZmlnXy5lbmFibGVkOyB9CisgIHZvaWQgVXBk
YXRlTG9zc1N0YXRpc3RpY3MoY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiYgcGFja2V0
X3Jlc3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUp
OworICBEYXRhUmF0ZSBHZXRFc3RpbWF0ZSgpIGNvbnN0IHsgcmV0dXJuIGxvc3NfYmFzZWRfYml0
cmF0ZV87IH0KKworIHByaXZhdGU6CisgIExvc3NCYXNlZENvbnRyb2xDb25maWcgY29uZmlnXzsK
KyAgZG91YmxlIGF2ZXJhZ2VfbG9zc187CisgIGRvdWJsZSBhdmVyYWdlX2xvc3NfbWF4XzsKKyAg
RGF0YVJhdGUgbG9zc19iYXNlZF9iaXRyYXRlXzsKKyAgRGF0YVJhdGUgYWNrbm93bGVkZ2VkX2Jp
dHJhdGVfbWF4XzsKKyAgVGltZXN0YW1wIGFja25vd2xlZGdlZF9iaXRyYXRlX2xhc3RfdXBkYXRl
XzsKKyAgVGltZXN0YW1wIHRpbWVfbGFzdF9kZWNyZWFzZV87CisgIGJvb2wgaGFzX2RlY3JlYXNl
ZF9zaW5jZV9sYXN0X2xvc3NfcmVwb3J0XzsKKyAgVGltZXN0YW1wIGxhc3RfbG9zc19wYWNrZXRf
cmVwb3J0XzsKKyAgZG91YmxlIGxhc3RfbG9zc19yYXRpb187Cit9OworCit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19CSVRSQVRFX0NPTlRST0xMRVJfTE9TU19C
QVNFRF9CQU5EV0lEVEhfRVNUSU1BVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2Vu
ZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2Jh
bmR3aWR0aF9lc3RpbWF0aW9uLmNjCmluZGV4IGNjMTA4YTk1YjA4ZmNiOWY1OTM3NjQyMWUwNjJm
NmU0MTU1YjgyZDEuLjM5NGMxNDc0N2I3YWNiMmFkMDE0YTU0MDA1ZDQ4YTU1N2YwM2I3NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbi5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Jp
dHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24uY2MKQEAgLTEx
LDEyICsxMSwxMiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRf
c2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotI2lu
Y2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5j
bHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVk
ZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIKICNpbmNsdWRlICJs
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2xvc3NfYmFz
ZWQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2Rl
ZmluZXMuaCIKQEAgLTEwNCw2ICsxMDQsODMgQEAgYm9vbCBSZWFkQndlTG9zc0V4cGVyaW1lbnRQ
YXJhbWV0ZXJzKGZsb2F0KiBsb3dfbG9zc190aHJlc2hvbGQsCiB9CiB9ICAvLyBuYW1lc3BhY2UK
IAorTGlua0NhcGFjaXR5VHJhY2tlcjo6TGlua0NhcGFjaXR5VHJhY2tlcigpCisgICAgOiB0cmFj
a2luZ19yYXRlKCJyYXRlIiwgVGltZURlbHRhOjpzZWNvbmRzKDEwKSkgeworICBQYXJzZUZpZWxk
VHJpYWwoeyZ0cmFja2luZ19yYXRlfSwKKyAgICAgICAgICAgICAgICAgIGZpZWxkX3RyaWFsOjpG
aW5kRnVsbE5hbWUoIldlYlJUQy1Cd2UtTGlua0NhcGFjaXR5IikpOworfQorCitMaW5rQ2FwYWNp
dHlUcmFja2VyOjp+TGlua0NhcGFjaXR5VHJhY2tlcigpIHt9CisKK3ZvaWQgTGlua0NhcGFjaXR5
VHJhY2tlcjo6T25PdmVydXNlKERhdGFSYXRlIGFja25vd2xlZGdlZF9yYXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKKyAgY2FwYWNp
dHlfZXN0aW1hdGVfYnBzXyA9CisgICAgICBzdGQ6Om1pbihjYXBhY2l0eV9lc3RpbWF0ZV9icHNf
LCBhY2tub3dsZWRnZWRfcmF0ZS5icHM8ZG91YmxlPigpKTsKKyAgbGFzdF9saW5rX2NhcGFjaXR5
X3VwZGF0ZV8gPSBhdF90aW1lOworfQorCit2b2lkIExpbmtDYXBhY2l0eVRyYWNrZXI6Ok9uU3Rh
cnRpbmdSYXRlKERhdGFSYXRlIHN0YXJ0X3JhdGUpIHsKKyAgaWYgKGxhc3RfbGlua19jYXBhY2l0
eV91cGRhdGVfLklzSW5maW5pdGUoKSkKKyAgICBjYXBhY2l0eV9lc3RpbWF0ZV9icHNfID0gc3Rh
cnRfcmF0ZS5icHM8ZG91YmxlPigpOworfQorCit2b2lkIExpbmtDYXBhY2l0eVRyYWNrZXI6Ok9u
UmF0ZVVwZGF0ZShEYXRhUmF0ZSBhY2tub3dsZWRnZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSkgeworICBpZiAoYWNrbm93bGVkZ2Vk
LmJwcygpID4gY2FwYWNpdHlfZXN0aW1hdGVfYnBzXykgeworICAgIFRpbWVEZWx0YSBkZWx0YSA9
IGF0X3RpbWUgLSBsYXN0X2xpbmtfY2FwYWNpdHlfdXBkYXRlXzsKKyAgICBkb3VibGUgYWxwaGEg
PSBkZWx0YS5Jc0Zpbml0ZSgpID8gZXhwKC0oZGVsdGEgLyB0cmFja2luZ19yYXRlLkdldCgpKSkg
OiAwOworICAgIGNhcGFjaXR5X2VzdGltYXRlX2Jwc18gPSBhbHBoYSAqIGNhcGFjaXR5X2VzdGlt
YXRlX2Jwc18gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSAtIGFscGhhKSAqIGFj
a25vd2xlZGdlZC5icHM8ZG91YmxlPigpOworICB9CisgIGxhc3RfbGlua19jYXBhY2l0eV91cGRh
dGVfID0gYXRfdGltZTsKK30KKwordm9pZCBMaW5rQ2FwYWNpdHlUcmFja2VyOjpPblJ0dEJhY2tv
ZmYoRGF0YVJhdGUgYmFja29mZl9yYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKKyAgY2FwYWNpdHlfZXN0aW1hdGVfYnBzXyA9
CisgICAgICBzdGQ6Om1pbihjYXBhY2l0eV9lc3RpbWF0ZV9icHNfLCBiYWNrb2ZmX3JhdGUuYnBz
PGRvdWJsZT4oKSk7CisgIGxhc3RfbGlua19jYXBhY2l0eV91cGRhdGVfID0gYXRfdGltZTsKK30K
KworRGF0YVJhdGUgTGlua0NhcGFjaXR5VHJhY2tlcjo6ZXN0aW1hdGUoKSBjb25zdCB7CisgIHJl
dHVybiBEYXRhUmF0ZTo6YnBzKGNhcGFjaXR5X2VzdGltYXRlX2Jwc18pOworfQorCitSdHRCYXNl
ZEJhY2tvZmY6OlJ0dEJhc2VkQmFja29mZigpCisgICAgOiBydHRfbGltaXRfKCJsaW1pdCIsIFRp
bWVEZWx0YTo6UGx1c0luZmluaXR5KCkpLAorICAgICAgZHJvcF9mcmFjdGlvbl8oImZyYWN0aW9u
IiwgMC41KSwKKyAgICAgIGRyb3BfaW50ZXJ2YWxfKCJpbnRlcnZhbCIsIFRpbWVEZWx0YTo6bXMo
MzAwKSksCisgICAgICBwZXJzaXN0X29uX3JvdXRlX2NoYW5nZV8oInBlcnNpc3QiKSwKKyAgICAg
IC8vIEJ5IGluaXRpYWxpemluZyB0aGlzIHRvIHBsdXMgaW5maW5pdHksIHdlIG1ha2Ugc3VyZSB0
aGF0IHdlIG5ldmVyCisgICAgICAvLyB0cmlnZ2VyIHJ0dCBiYWNrb2ZmIHVubGVzcyBwYWNrZXQg
ZmVlZGJhY2sgaXMgZW5hYmxlZC4KKyAgICAgIGxhc3RfcHJvcGFnYXRpb25fcnR0X3VwZGF0ZV8o
VGltZXN0YW1wOjpQbHVzSW5maW5pdHkoKSksCisgICAgICBsYXN0X3Byb3BhZ2F0aW9uX3J0dF8o
VGltZURlbHRhOjpaZXJvKCkpIHsKKyAgUGFyc2VGaWVsZFRyaWFsKHsmcnR0X2xpbWl0XywgJmRy
b3BfZnJhY3Rpb25fLCAmZHJvcF9pbnRlcnZhbF8sCisgICAgICAgICAgICAgICAgICAgJnBlcnNp
c3Rfb25fcm91dGVfY2hhbmdlX30sCisgICAgICAgICAgICAgICAgICBmaWVsZF90cmlhbDo6Rmlu
ZEZ1bGxOYW1lKCJXZWJSVEMtQndlLU1heFJ0dExpbWl0IikpOworfQorCit2b2lkIFJ0dEJhc2Vk
QmFja29mZjo6T25Sb3V0ZUNoYW5nZSgpIHsKKyAgaWYgKCFwZXJzaXN0X29uX3JvdXRlX2NoYW5n
ZV8pIHsKKyAgICBsYXN0X3Byb3BhZ2F0aW9uX3J0dF91cGRhdGVfID0gVGltZXN0YW1wOjpQbHVz
SW5maW5pdHkoKTsKKyAgICBsYXN0X3Byb3BhZ2F0aW9uX3J0dF8gPSBUaW1lRGVsdGE6Olplcm8o
KTsKKyAgfQorfQorCit2b2lkIFJ0dEJhc2VkQmFja29mZjo6VXBkYXRlUHJvcGFnYXRpb25SdHQo
VGltZXN0YW1wIGF0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGltZURlbHRhIHByb3BhZ2F0aW9uX3J0dCkgeworICBsYXN0X3Byb3BhZ2F0aW9uX3J0
dF91cGRhdGVfID0gYXRfdGltZTsKKyAgbGFzdF9wcm9wYWdhdGlvbl9ydHRfID0gcHJvcGFnYXRp
b25fcnR0OworfQorCitUaW1lRGVsdGEgUnR0QmFzZWRCYWNrb2ZmOjpSdHRMb3dlckJvdW5kKFRp
bWVzdGFtcCBhdF90aW1lKSBjb25zdCB7CisgIC8vIFRPRE8oc3J0ZSk6IFVzZSB0aW1lIHNpbmNl
IGxhc3QgdW5hY2tub3dsZWRnZWQgcGFja2V0IGZvciB0aGlzLgorICBUaW1lRGVsdGEgdGltZV9z
aW5jZV9ydHQgPSBhdF90aW1lIC0gbGFzdF9wcm9wYWdhdGlvbl9ydHRfdXBkYXRlXzsKKyAgcmV0
dXJuIHRpbWVfc2luY2VfcnR0ICsgbGFzdF9wcm9wYWdhdGlvbl9ydHRfOworfQorCitSdHRCYXNl
ZEJhY2tvZmY6On5SdHRCYXNlZEJhY2tvZmYoKSA9IGRlZmF1bHQ7CisKIFNlbmRTaWRlQmFuZHdp
ZHRoRXN0aW1hdGlvbjo6U2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uKFJ0Y0V2ZW50TG9nKiBl
dmVudF9sb2cpCiAgICAgOiBsb3N0X3BhY2tldHNfc2luY2VfbGFzdF9sb3NzX3VwZGF0ZV8oMCks
CiAgICAgICBleHBlY3RlZF9wYWNrZXRzX3NpbmNlX2xhc3RfbG9zc191cGRhdGVfKDApLApAQCAt
MTUxLDE0ICsyMjgsNDQgQEAgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpTZW5kU2lkZUJh
bmR3aWR0aEVzdGltYXRpb24oUnRjRXZlbnRMb2cqIGV2ZW50X2xvZykKIAogU2VuZFNpZGVCYW5k
d2lkdGhFc3RpbWF0aW9uOjp+U2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uKCkge30KIAordm9p
ZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246Ok9uUm91dGVDaGFuZ2UoKSB7CisgIGxvc3Rf
cGFja2V0c19zaW5jZV9sYXN0X2xvc3NfdXBkYXRlXyA9IDA7CisgIGV4cGVjdGVkX3BhY2tldHNf
c2luY2VfbGFzdF9sb3NzX3VwZGF0ZV8gPSAwOworICBjdXJyZW50X2JpdHJhdGVfID0gRGF0YVJh
dGU6Olplcm8oKTsKKyAgbWluX2JpdHJhdGVfY29uZmlndXJlZF8gPQorICAgICAgRGF0YVJhdGU6
OmJwcyhjb25nZXN0aW9uX2NvbnRyb2xsZXI6OkdldE1pbkJpdHJhdGVCcHMoKSk7CisgIG1heF9i
aXRyYXRlX2NvbmZpZ3VyZWRfID0ga0RlZmF1bHRNYXhCaXRyYXRlOworICBsYXN0X2xvd19iaXRy
YXRlX2xvZ18gPSBUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKTsKKyAgaGFzX2RlY3JlYXNlZF9z
aW5jZV9sYXN0X2ZyYWN0aW9uX2xvc3NfID0gZmFsc2U7CisgIGxhc3RfbG9zc19mZWVkYmFja18g
PSBUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKTsKKyAgbGFzdF9sb3NzX3BhY2tldF9yZXBvcnRf
ID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7CisgIGxhc3RfdGltZW91dF8gPSBUaW1lc3Rh
bXA6Ok1pbnVzSW5maW5pdHkoKTsKKyAgbGFzdF9mcmFjdGlvbl9sb3NzXyA9IDA7CisgIGxhc3Rf
bG9nZ2VkX2ZyYWN0aW9uX2xvc3NfID0gMDsKKyAgbGFzdF9yb3VuZF90cmlwX3RpbWVfID0gVGlt
ZURlbHRhOjpaZXJvKCk7CisgIGJ3ZV9pbmNvbWluZ18gPSBEYXRhUmF0ZTo6WmVybygpOworICBk
ZWxheV9iYXNlZF9iaXRyYXRlXyA9IERhdGFSYXRlOjpaZXJvKCk7CisgIHRpbWVfbGFzdF9kZWNy
ZWFzZV8gPSBUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKTsKKyAgZmlyc3RfcmVwb3J0X3RpbWVf
ID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7CisgIGluaXRpYWxseV9sb3N0X3BhY2tldHNf
ID0gMDsKKyAgYml0cmF0ZV9hdF8yX3NlY29uZHNfID0gRGF0YVJhdGU6Olplcm8oKTsKKyAgdW1h
X3VwZGF0ZV9zdGF0ZV8gPSBrTm9VcGRhdGU7CisgIHVtYV9ydHRfc3RhdGVfID0ga05vVXBkYXRl
OworICBsYXN0X3J0Y19ldmVudF9sb2dfID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7CisK
KyAgcnR0X2JhY2tvZmZfLk9uUm91dGVDaGFuZ2UoKTsKK30KKwogdm9pZCBTZW5kU2lkZUJhbmR3
aWR0aEVzdGltYXRpb246OlNldEJpdHJhdGVzKAogICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRl
PiBzZW5kX2JpdHJhdGUsCiAgICAgRGF0YVJhdGUgbWluX2JpdHJhdGUsCiAgICAgRGF0YVJhdGUg
bWF4X2JpdHJhdGUsCiAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgU2V0TWluTWF4Qml0cmF0
ZShtaW5fYml0cmF0ZSwgbWF4X2JpdHJhdGUpOwotICBpZiAoc2VuZF9iaXRyYXRlKQorICBpZiAo
c2VuZF9iaXRyYXRlKSB7CisgICAgbGlua19jYXBhY2l0eV8uT25TdGFydGluZ1JhdGUoKnNlbmRf
Yml0cmF0ZSk7CiAgICAgU2V0U2VuZEJpdHJhdGUoKnNlbmRfYml0cmF0ZSwgYXRfdGltZSk7Cisg
IH0KIH0KIAogdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlNldFNlbmRCaXRyYXRl
KERhdGFSYXRlIGJpdHJhdGUsCkBAIC0xNjYsNiArMjczLDkgQEAgdm9pZCBTZW5kU2lkZUJhbmR3
aWR0aEVzdGltYXRpb246OlNldFNlbmRCaXRyYXRlKERhdGFSYXRlIGJpdHJhdGUsCiAgIFJUQ19E
Q0hFQ0soYml0cmF0ZSA+IERhdGFSYXRlOjpaZXJvKCkpOwogICAvLyBSZXNldCB0byBhdm9pZCBi
ZWluZyBjYXBwZWQgYnkgdGhlIGVzdGltYXRlLgogICBkZWxheV9iYXNlZF9iaXRyYXRlXyA9IERh
dGFSYXRlOjpaZXJvKCk7CisgIGlmIChsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5F
bmFibGVkKCkpIHsKKyAgICBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5NYXliZVJl
c2V0KGJpdHJhdGUpOworICB9CiAgIENhcEJpdHJhdGVUb1RocmVzaG9sZHMoYXRfdGltZSwgYml0
cmF0ZSk7CiAgIC8vIENsZWFyIGxhc3Qgc2VudCBiaXRyYXRlIGhpc3Rvcnkgc28gdGhlIG5ldyB2
YWx1ZSBjYW4gYmUgdXNlZCBkaXJlY3RseQogICAvLyBhbmQgbm90IGNhcHBlZC4KQEAgLTE5NSw2
ICszMDUsMTAgQEAgdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OkN1cnJlbnRFc3Rp
bWF0ZShpbnQqIGJpdHJhdGUsCiAgICpydHQgPSBsYXN0X3JvdW5kX3RyaXBfdGltZV8ubXM8aW50
NjRfdD4oKTsKIH0KIAorRGF0YVJhdGUgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpHZXRF
c3RpbWF0ZWRMaW5rQ2FwYWNpdHkoKSBjb25zdCB7CisgIHJldHVybiBsaW5rX2NhcGFjaXR5Xy5l
c3RpbWF0ZSgpOworfQorCiB2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRl
UmVjZWl2ZXJFc3RpbWF0ZShUaW1lc3RhbXAgYXRfdGltZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRlIGJhbmR3aWR0aCkg
ewogICBid2VfaW5jb21pbmdfID0gYmFuZHdpZHRoOwpAQCAtMjAzLDEwICszMTcsMzMgQEAgdm9p
ZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZVJlY2VpdmVyRXN0aW1hdGUoVGlt
ZXN0YW1wIGF0X3RpbWUsCiAKIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpVcGRh
dGVEZWxheUJhc2VkRXN0aW1hdGUoVGltZXN0YW1wIGF0X3RpbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRlIGJpdHJh
dGUpIHsKKyAgaWYgKGFja25vd2xlZGdlZF9yYXRlXykgeworICAgIGlmIChiaXRyYXRlIDwgZGVs
YXlfYmFzZWRfYml0cmF0ZV8pIHsKKyAgICAgIGxpbmtfY2FwYWNpdHlfLk9uT3ZlcnVzZSgqYWNr
bm93bGVkZ2VkX3JhdGVfLCBhdF90aW1lKTsKKyAgICB9CisgIH0KICAgZGVsYXlfYmFzZWRfYml0
cmF0ZV8gPSBiaXRyYXRlOwogICBDYXBCaXRyYXRlVG9UaHJlc2hvbGRzKGF0X3RpbWUsIGN1cnJl
bnRfYml0cmF0ZV8pOwogfQogCit2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6U2V0
QWNrbm93bGVkZ2VkUmF0ZSgKKyAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gYWNrbm93bGVk
Z2VkX3JhdGUsCisgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKKyAgYWNrbm93bGVkZ2VkX3JhdGVf
ID0gYWNrbm93bGVkZ2VkX3JhdGU7CisgIGlmIChhY2tub3dsZWRnZWRfcmF0ZSAmJiBsb3NzX2Jh
c2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5FbmFibGVkKCkpIHsKKyAgICBsb3NzX2Jhc2VkX2Jh
bmR3aWR0aF9lc3RpbWF0aW9uXy5VcGRhdGVBY2tub3dsZWRnZWRCaXRyYXRlKAorICAgICAgICAq
YWNrbm93bGVkZ2VkX3JhdGUsIGF0X3RpbWUpOworICB9Cit9CisKK3ZvaWQgU2VuZFNpZGVCYW5k
d2lkdGhFc3RpbWF0aW9uOjpJbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAorICAgIGNvbnN0
IFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayYgcmVwb3J0KSB7CisgIGlmIChsb3NzX2Jhc2VkX2Jh
bmR3aWR0aF9lc3RpbWF0aW9uXy5FbmFibGVkKCkpIHsKKyAgICBsb3NzX2Jhc2VkX2JhbmR3aWR0
aF9lc3RpbWF0aW9uXy5VcGRhdGVMb3NzU3RhdGlzdGljcygKKyAgICAgICAgcmVwb3J0LnBhY2tl
dF9mZWVkYmFja3MsIHJlcG9ydC5mZWVkYmFja190aW1lKTsKKyAgfQorfQorCiB2b2lkIFNlbmRT
aWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRlUmVjZWl2ZXJCbG9jayh1aW50OF90IGZyYWN0
aW9uX2xvc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUaW1lRGVsdGEgcnR0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG51bWJlcl9vZl9wYWNrZXRzLApAQCAtMjk1LDExICs0
MzIsMjQgQEAgdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZVJ0dChUaW1l
RGVsdGEgcnR0LCBUaW1lc3RhbXAgYXRfdGltZSkgewogCiB2b2lkIFNlbmRTaWRlQmFuZHdpZHRo
RXN0aW1hdGlvbjo6VXBkYXRlRXN0aW1hdGUoVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgRGF0YVJh
dGUgbmV3X2JpdHJhdGUgPSBjdXJyZW50X2JpdHJhdGVfOworICBpZiAocnR0X2JhY2tvZmZfLlJ0
dExvd2VyQm91bmQoYXRfdGltZSkgPiBydHRfYmFja29mZl8ucnR0X2xpbWl0XykgeworICAgIGlm
IChhdF90aW1lIC0gdGltZV9sYXN0X2RlY3JlYXNlXyA+PSBydHRfYmFja29mZl8uZHJvcF9pbnRl
cnZhbF8pIHsKKyAgICAgIHRpbWVfbGFzdF9kZWNyZWFzZV8gPSBhdF90aW1lOworICAgICAgbmV3
X2JpdHJhdGUgPSBjdXJyZW50X2JpdHJhdGVfICogcnR0X2JhY2tvZmZfLmRyb3BfZnJhY3Rpb25f
OworICAgICAgbGlua19jYXBhY2l0eV8uT25SdHRCYWNrb2ZmKG5ld19iaXRyYXRlLCBhdF90aW1l
KTsKKyAgICB9CisgICAgQ2FwQml0cmF0ZVRvVGhyZXNob2xkcyhhdF90aW1lLCBuZXdfYml0cmF0
ZSk7CisgICAgcmV0dXJuOworICB9CisKICAgLy8gV2UgdHJ1c3QgdGhlIFJFTUIgYW5kL29yIGRl
bGF5LWJhc2VkIGVzdGltYXRlIGR1cmluZyB0aGUgZmlyc3QgMiBzZWNvbmRzIGlmCiAgIC8vIHdl
IGhhdmVuJ3QgaGFkIGFueSBwYWNrZXQgbG9zcyByZXBvcnRlZCwgdG8gYWxsb3cgc3RhcnR1cCBi
aXRyYXRlIHByb2JpbmcuCiAgIGlmIChsYXN0X2ZyYWN0aW9uX2xvc3NfID09IDAgJiYgSXNJblN0
YXJ0UGhhc2UoYXRfdGltZSkpIHsKICAgICBuZXdfYml0cmF0ZSA9IHN0ZDo6bWF4KGJ3ZV9pbmNv
bWluZ18sIG5ld19iaXRyYXRlKTsKICAgICBuZXdfYml0cmF0ZSA9IHN0ZDo6bWF4KGRlbGF5X2Jh
c2VkX2JpdHJhdGVfLCBuZXdfYml0cmF0ZSk7CisgICAgaWYgKGxvc3NfYmFzZWRfYmFuZHdpZHRo
X2VzdGltYXRpb25fLkVuYWJsZWQoKSkgeworICAgICAgbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0
aW1hdGlvbl8uU2V0SW5pdGlhbEJpdHJhdGUobmV3X2JpdHJhdGUpOworICAgIH0KIAogICAgIGlm
IChuZXdfYml0cmF0ZSAhPSBjdXJyZW50X2JpdHJhdGVfKSB7CiAgICAgICBtaW5fYml0cmF0ZV9o
aXN0b3J5Xy5jbGVhcigpOwpAQCAtMzE0LDYgKzQ2NCwxNSBAQCB2b2lkIFNlbmRTaWRlQmFuZHdp
ZHRoRXN0aW1hdGlvbjo6VXBkYXRlRXN0aW1hdGUoVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgICBD
YXBCaXRyYXRlVG9UaHJlc2hvbGRzKGF0X3RpbWUsIGN1cnJlbnRfYml0cmF0ZV8pOwogICAgIHJl
dHVybjsKICAgfQorCisgIGlmIChsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5FbmFi
bGVkKCkpIHsKKyAgICBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5VcGRhdGUoCisg
ICAgICAgIGF0X3RpbWUsIG1pbl9iaXRyYXRlX2hpc3RvcnlfLmZyb250KCkuc2Vjb25kLCBsYXN0
X3JvdW5kX3RyaXBfdGltZV8pOworICAgIG5ld19iaXRyYXRlID0gTWF5YmVSYW1wdXBPckJhY2tv
ZmYobmV3X2JpdHJhdGUsIGF0X3RpbWUpOworICAgIENhcEJpdHJhdGVUb1RocmVzaG9sZHMoYXRf
dGltZSwgbmV3X2JpdHJhdGUpOworICAgIHJldHVybjsKKyAgfQorCiAgIFRpbWVEZWx0YSB0aW1l
X3NpbmNlX2xvc3NfcGFja2V0X3JlcG9ydCA9IGF0X3RpbWUgLSBsYXN0X2xvc3NfcGFja2V0X3Jl
cG9ydF87CiAgIFRpbWVEZWx0YSB0aW1lX3NpbmNlX2xvc3NfZmVlZGJhY2sgPSBhdF90aW1lIC0g
bGFzdF9sb3NzX2ZlZWRiYWNrXzsKICAgaWYgKHRpbWVfc2luY2VfbG9zc19wYWNrZXRfcmVwb3J0
IDwgMS4yICoga01heFJ0Y3BGZWVkYmFja0ludGVydmFsKSB7CkBAIC0zMjgsNyArNDg3LDcgQEAg
dm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZUVzdGltYXRlKFRpbWVzdGFt
cCBhdF90aW1lKSB7CiAgICAgICAvLyBOb3RlIHRoYXQgYnkgcmVtZW1iZXJpbmcgdGhlIGJpdHJh
dGUgb3ZlciB0aGUgbGFzdCBzZWNvbmQgb25lIGNhbgogICAgICAgLy8gcmFtcHVwIHVwIG9uZSBz
ZWNvbmQgZmFzdGVyIHRoYW4gaWYgb25seSBhbGxvd2VkIHRvIHN0YXJ0IHJhbXBpbmcKICAgICAg
IC8vIGF0IDglIHBlciBzZWNvbmQgcmF0ZSBub3cuIEUuZy46Ci0gICAgICAvLyAgIElmIHNlbmRp
bmcgYSBjb25zdGFudCAxMDBrYnBzIGl0IGNhbiByYW1wdXAgaW1tZWRpYXRseSB0byAxMDhrYnBz
CisgICAgICAvLyAgIElmIHNlbmRpbmcgYSBjb25zdGFudCAxMDBrYnBzIGl0IGNhbiByYW1wdXAg
aW1tZWRpYXRlbHkgdG8gMTA4a2JwcwogICAgICAgLy8gICB3aGVuZXZlciBhIHJlY2VpdmVyIHJl
cG9ydCBpcyByZWNlaXZlZCB3aXRoIGxvd2VyIHBhY2tldCBsb3NzLgogICAgICAgLy8gICBJZiBp
bnN0ZWFkIG9uZSB3b3VsZCBkbzogY3VycmVudF9iaXRyYXRlXyAqPSAxLjA4XihkZWx0YSB0aW1l
KSwKICAgICAgIC8vICAgaXQgd291bGQgdGFrZSBvdmVyIG9uZSBzZWNvbmQgc2luY2UgdGhlIGxv
d2VyIHBhY2tldCBsb3NzIHRvIGFjaGlldmUKQEAgLTM4Miw2ICs1NDEsMTIgQEAgdm9pZCBTZW5k
U2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZUVzdGltYXRlKFRpbWVzdGFtcCBhdF90aW1l
KSB7CiAgIENhcEJpdHJhdGVUb1RocmVzaG9sZHMoYXRfdGltZSwgbmV3X2JpdHJhdGUpOwogfQog
Cit2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRlUHJvcGFnYXRpb25SdHQo
CisgICAgVGltZXN0YW1wIGF0X3RpbWUsCisgICAgVGltZURlbHRhIHByb3BhZ2F0aW9uX3J0dCkg
eworICBydHRfYmFja29mZl8uVXBkYXRlUHJvcGFnYXRpb25SdHQoYXRfdGltZSwgcHJvcGFnYXRp
b25fcnR0KTsKK30KKwogYm9vbCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OklzSW5TdGFy
dFBoYXNlKFRpbWVzdGFtcCBhdF90aW1lKSBjb25zdCB7CiAgIHJldHVybiBmaXJzdF9yZXBvcnRf
dGltZV8uSXNJbmZpbml0ZSgpIHx8CiAgICAgICAgICBhdF90aW1lIC0gZmlyc3RfcmVwb3J0X3Rp
bWVfIDwga1N0YXJ0UGhhc2U7CkBAIC00MDcsNiArNTcyLDM1IEBAIHZvaWQgU2VuZFNpZGVCYW5k
d2lkdGhFc3RpbWF0aW9uOjpVcGRhdGVNaW5IaXN0b3J5KFRpbWVzdGFtcCBhdF90aW1lKSB7CiAg
IG1pbl9iaXRyYXRlX2hpc3RvcnlfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdF90aW1lLCBj
dXJyZW50X2JpdHJhdGVfKSk7CiB9CiAKK0RhdGFSYXRlIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1h
dGlvbjo6TWF5YmVSYW1wdXBPckJhY2tvZmYoRGF0YVJhdGUgbmV3X2JpdHJhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVz
dGFtcCBhdF90aW1lKSB7CisgIC8vIFRPRE8oY3JvZGJybyk6IHJldXNlIHRoaXMgY29kZSBpbiBV
cGRhdGVFc3RpbWF0ZSBpbnN0ZWFkIG9mIGN1cnJlbnQKKyAgLy8gaW5saW5pbmcgb2YgdmVyeSBz
aW1pbGFyIGZ1bmN0aW9uYWxpdHkuCisgIGNvbnN0IFRpbWVEZWx0YSB0aW1lX3NpbmNlX2xvc3Nf
cGFja2V0X3JlcG9ydCA9CisgICAgICBhdF90aW1lIC0gbGFzdF9sb3NzX3BhY2tldF9yZXBvcnRf
OworICBjb25zdCBUaW1lRGVsdGEgdGltZV9zaW5jZV9sb3NzX2ZlZWRiYWNrID0gYXRfdGltZSAt
IGxhc3RfbG9zc19mZWVkYmFja187CisgIGlmICh0aW1lX3NpbmNlX2xvc3NfcGFja2V0X3JlcG9y
dCA8IDEuMiAqIGtNYXhSdGNwRmVlZGJhY2tJbnRlcnZhbCkgeworICAgIG5ld19iaXRyYXRlID0g
bWluX2JpdHJhdGVfaGlzdG9yeV8uZnJvbnQoKS5zZWNvbmQgKiAxLjA4OworICAgIG5ld19iaXRy
YXRlICs9IERhdGFSYXRlOjpicHMoMTAwMCk7CisgIH0gZWxzZSBpZiAodGltZV9zaW5jZV9sb3Nz
X2ZlZWRiYWNrID4KKyAgICAgICAgICAgICAgICAga0ZlZWRiYWNrVGltZW91dEludGVydmFscyAq
IGtNYXhSdGNwRmVlZGJhY2tJbnRlcnZhbCAmJgorICAgICAgICAgICAgIChsYXN0X3RpbWVvdXRf
LklzSW5maW5pdGUoKSB8fAorICAgICAgICAgICAgICBhdF90aW1lIC0gbGFzdF90aW1lb3V0XyA+
IGtUaW1lb3V0SW50ZXJ2YWwpKSB7CisgICAgaWYgKGluX3RpbWVvdXRfZXhwZXJpbWVudF8pIHsK
KyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZlZWRiYWNrIHRpbWVkIG91dCAoIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCBUb1N0cmluZyh0aW1lX3NpbmNlX2xvc3NfZmVlZGJh
Y2spCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIpLCByZWR1Y2luZyBiaXRyYXRlLiI7
CisgICAgICBuZXdfYml0cmF0ZSA9IG5ld19iaXRyYXRlICogMC44OworICAgICAgLy8gUmVzZXQg
YWNjdW11bGF0b3JzIHNpbmNlIHdlJ3ZlIGFscmVhZHkgYWN0ZWQgb24gbWlzc2luZyBmZWVkYmFj
ayBhbmQKKyAgICAgIC8vIHNob3VsZG4ndCB0byBhY3QgYWdhaW4gb24gdGhlc2Ugb2xkIGxvc3Qg
cGFja2V0cy4KKyAgICAgIGxvc3RfcGFja2V0c19zaW5jZV9sYXN0X2xvc3NfdXBkYXRlXyA9IDA7
CisgICAgICBleHBlY3RlZF9wYWNrZXRzX3NpbmNlX2xhc3RfbG9zc191cGRhdGVfID0gMDsKKyAg
ICAgIGxhc3RfdGltZW91dF8gPSBhdF90aW1lOworICAgIH0KKyAgfQorICByZXR1cm4gbmV3X2Jp
dHJhdGU7Cit9CisKIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpDYXBCaXRyYXRl
VG9UaHJlc2hvbGRzKFRpbWVzdGFtcCBhdF90aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVJhdGUgYml0cmF0ZSkgewogICBp
ZiAoYndlX2luY29taW5nXyA+IERhdGFSYXRlOjpaZXJvKCkgJiYgYml0cmF0ZSA+IGJ3ZV9pbmNv
bWluZ18pIHsKQEAgLTQxNiw2ICs2MTAsMTAgQEAgdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGlt
YXRpb246OkNhcEJpdHJhdGVUb1RocmVzaG9sZHMoVGltZXN0YW1wIGF0X3RpbWUsCiAgICAgICBi
aXRyYXRlID4gZGVsYXlfYmFzZWRfYml0cmF0ZV8pIHsKICAgICBiaXRyYXRlID0gZGVsYXlfYmFz
ZWRfYml0cmF0ZV87CiAgIH0KKyAgaWYgKGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb25f
LkVuYWJsZWQoKSAmJgorICAgICAgbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uR2V0
RXN0aW1hdGUoKSA+IERhdGFSYXRlOjpaZXJvKCkpIHsKKyAgICBiaXRyYXRlID0gc3RkOjptaW4o
Yml0cmF0ZSwgbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uR2V0RXN0aW1hdGUoKSk7
CisgIH0KICAgaWYgKGJpdHJhdGUgPiBtYXhfYml0cmF0ZV9jb25maWd1cmVkXykgewogICAgIGJp
dHJhdGUgPSBtYXhfYml0cmF0ZV9jb25maWd1cmVkXzsKICAgfQpAQCAtNDQxLDUgKzYzOSwxMCBA
QCB2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6Q2FwQml0cmF0ZVRvVGhyZXNob2xk
cyhUaW1lc3RhbXAgYXRfdGltZSwKICAgICBsYXN0X3J0Y19ldmVudF9sb2dfID0gYXRfdGltZTsK
ICAgfQogICBjdXJyZW50X2JpdHJhdGVfID0gYml0cmF0ZTsKKworICBpZiAoYWNrbm93bGVkZ2Vk
X3JhdGVfKSB7CisgICAgbGlua19jYXBhY2l0eV8uT25SYXRlVXBkYXRlKHN0ZDo6bWluKGN1cnJl
bnRfYml0cmF0ZV8sICphY2tub3dsZWRnZWRfcmF0ZV8pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdF90aW1lKTsKKyAgfQogfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVf
Y29udHJvbGxlci9zZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24uaAppbmRleCAyYzhiNGVl
M2Q1YWJhMDQ2MzMyOWQ3YzI0YjgyMDAzMjNiNmU0OWI3Li5iMDE2ZmFiYTJlZTNmOTg3OTUxNDUy
ZmFhMWVhNzkwNDhkZTE1Njc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVfYmFu
ZHdpZHRoX2VzdGltYXRpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVfYmFuZHdpZHRo
X2VzdGltYXRpb24uaApAQCAtMTMsMjcgKzEzLDcxIEBACiAjaWZuZGVmIE1PRFVMRVNfQklUUkFU
RV9DT05UUk9MTEVSX1NFTkRfU0lERV9CQU5EV0lEVEhfRVNUSU1BVElPTl9IXwogI2RlZmluZSBN
T0RVTEVTX0JJVFJBVEVfQ09OVFJPTExFUl9TRU5EX1NJREVfQkFORFdJRFRIX0VTVElNQVRJT05f
SF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUgPHV0
aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25h
bC5oIgorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5oIgorI2luY2x1ZGUg
ImFwaS91bml0cy9kYXRhX3JhdGUuaCIKKyNpbmNsdWRlICJhcGkvdW5pdHMvdGltZV9kZWx0YS5o
IgorI2luY2x1ZGUgImFwaS91bml0cy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Jp
dHJhdGVfY29udHJvbGxlci9sb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXIuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKIGNsYXNzIFJ0Y0V2ZW50TG9nOwogCitjbGFzcyBMaW5rQ2FwYWNpdHlU
cmFja2VyIHsKKyBwdWJsaWM6CisgIExpbmtDYXBhY2l0eVRyYWNrZXIoKTsKKyAgfkxpbmtDYXBh
Y2l0eVRyYWNrZXIoKTsKKyAgdm9pZCBPbk92ZXJ1c2UoRGF0YVJhdGUgYWNrbm93bGVkZ2VkX3Jh
dGUsIFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgdm9pZCBPblN0YXJ0aW5nUmF0ZShEYXRhUmF0ZSBz
dGFydF9yYXRlKTsKKyAgdm9pZCBPblJhdGVVcGRhdGUoRGF0YVJhdGUgYWNrbm93bGVkZ2VkLCBU
aW1lc3RhbXAgYXRfdGltZSk7CisgIHZvaWQgT25SdHRCYWNrb2ZmKERhdGFSYXRlIGJhY2tvZmZf
cmF0ZSwgVGltZXN0YW1wIGF0X3RpbWUpOworICBEYXRhUmF0ZSBlc3RpbWF0ZSgpIGNvbnN0Owor
CisgcHJpdmF0ZToKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IHRyYWNraW5nX3Jh
dGU7CisgIGRvdWJsZSBjYXBhY2l0eV9lc3RpbWF0ZV9icHNfID0gMDsKKyAgVGltZXN0YW1wIGxh
c3RfbGlua19jYXBhY2l0eV91cGRhdGVfID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7Cit9
OworCitjbGFzcyBSdHRCYXNlZEJhY2tvZmYgeworIHB1YmxpYzoKKyAgUnR0QmFzZWRCYWNrb2Zm
KCk7CisgIH5SdHRCYXNlZEJhY2tvZmYoKTsKKyAgdm9pZCBPblJvdXRlQ2hhbmdlKCk7CisgIHZv
aWQgVXBkYXRlUHJvcGFnYXRpb25SdHQoVGltZXN0YW1wIGF0X3RpbWUsIFRpbWVEZWx0YSBwcm9w
YWdhdGlvbl9ydHQpOworICBUaW1lRGVsdGEgUnR0TG93ZXJCb3VuZChUaW1lc3RhbXAgYXRfdGlt
ZSkgY29uc3Q7CisKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IHJ0dF9saW1pdF87
CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8ZG91YmxlPiBkcm9wX2ZyYWN0aW9uXzsKKyAgRmllbGRU
cmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IGRyb3BfaW50ZXJ2YWxfOworICBGaWVsZFRyaWFsRmxh
ZyBwZXJzaXN0X29uX3JvdXRlX2NoYW5nZV87CisKKyBwdWJsaWM6CisgIFRpbWVzdGFtcCBsYXN0
X3Byb3BhZ2F0aW9uX3J0dF91cGRhdGVfOworICBUaW1lRGVsdGEgbGFzdF9wcm9wYWdhdGlvbl9y
dHRfOworfTsKKwogY2xhc3MgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uIHsKICBwdWJsaWM6
CiAgIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbigpID0gZGVsZXRlOwogICBleHBsaWNpdCBT
ZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb24oUnRjRXZlbnRMb2cqIGV2ZW50X2xvZyk7Ci0gIHZp
cnR1YWwgflNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbigpOworICB+U2VuZFNpZGVCYW5kd2lk
dGhFc3RpbWF0aW9uKCk7CiAKKyAgdm9pZCBPblJvdXRlQ2hhbmdlKCk7CiAgIHZvaWQgQ3VycmVu
dEVzdGltYXRlKGludCogYml0cmF0ZSwgdWludDhfdCogbG9zcywgaW50NjRfdCogcnR0KSBjb25z
dDsKLQorICBEYXRhUmF0ZSBHZXRFc3RpbWF0ZWRMaW5rQ2FwYWNpdHkoKSBjb25zdDsKICAgLy8g
Q2FsbCBwZXJpb2RpY2FsbHkgdG8gdXBkYXRlIGVzdGltYXRlLgogICB2b2lkIFVwZGF0ZUVzdGlt
YXRlKFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgdm9pZCBPblNlbnRQYWNrZXQoU2VudFBhY2tldCBz
ZW50X3BhY2tldCk7CisgIHZvaWQgVXBkYXRlUHJvcGFnYXRpb25SdHQoVGltZXN0YW1wIGF0X3Rp
bWUsIFRpbWVEZWx0YSBwcm9wYWdhdGlvbl9ydHQpOwogCiAgIC8vIENhbGwgd2hlbiB3ZSByZWNl
aXZlIGEgUlRDUCBtZXNzYWdlIHdpdGggVE1NQlIgb3IgUkVNQi4KICAgdm9pZCBVcGRhdGVSZWNl
aXZlckVzdGltYXRlKFRpbWVzdGFtcCBhdF90aW1lLCBEYXRhUmF0ZSBiYW5kd2lkdGgpOwpAQCAt
NjIsNiArMTA2LDkgQEAgY2xhc3MgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uIHsKICAgdm9p
ZCBTZXRTZW5kQml0cmF0ZShEYXRhUmF0ZSBiaXRyYXRlLCBUaW1lc3RhbXAgYXRfdGltZSk7CiAg
IHZvaWQgU2V0TWluTWF4Qml0cmF0ZShEYXRhUmF0ZSBtaW5fYml0cmF0ZSwgRGF0YVJhdGUgbWF4
X2JpdHJhdGUpOwogICBpbnQgR2V0TWluQml0cmF0ZSgpIGNvbnN0OworICB2b2lkIFNldEFja25v
d2xlZGdlZFJhdGUoYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGFja25vd2xlZGdlZF9yYXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpOworICB2b2lkIElu
Y29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoY29uc3QgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNr
JiByZXBvcnQpOwogCiAgcHJpdmF0ZToKICAgZW51bSBVbWFTdGF0ZSB7IGtOb1VwZGF0ZSwga0Zp
cnN0RG9uZSwga0RvbmUgfTsKQEAgLTc1LDE2ICsxMjIsMjIgQEAgY2xhc3MgU2VuZFNpZGVCYW5k
d2lkdGhFc3RpbWF0aW9uIHsKICAgLy8gbWluIGJpdHJhdGUgdXNlZCBkdXJpbmcgbGFzdCBrQndl
SW5jcmVhc2VJbnRlcnZhbE1zLgogICB2b2lkIFVwZGF0ZU1pbkhpc3RvcnkoVGltZXN0YW1wIGF0
X3RpbWUpOwogCisgIERhdGFSYXRlIE1heWJlUmFtcHVwT3JCYWNrb2ZmKERhdGFSYXRlIG5ld19i
aXRyYXRlLCBUaW1lc3RhbXAgYXRfdGltZSk7CisKICAgLy8gQ2FwIHxiaXRyYXRlfCB0byBbbWlu
X2JpdHJhdGVfY29uZmlndXJlZF8sIG1heF9iaXRyYXRlX2NvbmZpZ3VyZWRfXSBhbmQKICAgLy8g
c2V0IHxjdXJyZW50X2JpdHJhdGVffCB0byB0aGUgY2FwcGVkIHZhbHVlIGFuZCB1cGRhdGVzIHRo
ZSBldmVudCBsb2cuCiAgIHZvaWQgQ2FwQml0cmF0ZVRvVGhyZXNob2xkcyhUaW1lc3RhbXAgYXRf
dGltZSwgRGF0YVJhdGUgYml0cmF0ZSk7CiAKKyAgUnR0QmFzZWRCYWNrb2ZmIHJ0dF9iYWNrb2Zm
XzsKKyAgTGlua0NhcGFjaXR5VHJhY2tlciBsaW5rX2NhcGFjaXR5XzsKKwogICBzdGQ6OmRlcXVl
PHN0ZDo6cGFpcjxUaW1lc3RhbXAsIERhdGFSYXRlPiA+IG1pbl9iaXRyYXRlX2hpc3RvcnlfOwog
CiAgIC8vIGluY29taW5nIGZpbHRlcnMKICAgaW50IGxvc3RfcGFja2V0c19zaW5jZV9sYXN0X2xv
c3NfdXBkYXRlXzsKICAgaW50IGV4cGVjdGVkX3BhY2tldHNfc2luY2VfbGFzdF9sb3NzX3VwZGF0
ZV87CiAKKyAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGFja25vd2xlZGdlZF9yYXRlXzsKICAg
RGF0YVJhdGUgY3VycmVudF9iaXRyYXRlXzsKICAgRGF0YVJhdGUgbWluX2JpdHJhdGVfY29uZmln
dXJlZF87CiAgIERhdGFSYXRlIG1heF9iaXRyYXRlX2NvbmZpZ3VyZWRfOwpAQCAtMTEzLDYgKzE2
Niw3IEBAIGNsYXNzIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbiB7CiAgIGZsb2F0IGxvd19s
b3NzX3RocmVzaG9sZF87CiAgIGZsb2F0IGhpZ2hfbG9zc190aHJlc2hvbGRfOwogICBEYXRhUmF0
ZSBiaXRyYXRlX3RocmVzaG9sZF87CisgIExvc3NCYXNlZEJhbmR3aWR0aEVzdGltYXRpb24gbG9z
c19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl87CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwogI2VuZGlmICAvLyBNT0RVTEVTX0JJVFJBVEVfQ09OVFJPTExFUl9TRU5EX1NJREVfQkFORFdJ
RFRIX0VTVElNQVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRfc2lkZV9iYW5k
d2lkdGhfZXN0aW1hdGlvbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRfc2lkZV9iYW5k
d2lkdGhfZXN0aW1hdGlvbl91bml0dGVzdC5jYwppbmRleCBiZWNjNjE2Y2YzMTU2MWIzYjRlODY5
MTU4ZTNlMGQ0ODI0NmI3NGFmLi5jY2ZiZDg1NTAzMjdlODZmYTE3NTcyNDhmNzQwOWI1YmUxYjQ2
ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRp
b25fdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3Rp
bWF0aW9uX3VuaXR0ZXN0LmNjCkBAIC0yMyw3ICsyMyw3IEBAIE1BVENIRVIoTG9zc0Jhc2VkQndl
VXBkYXRlV2l0aEJpdHJhdGVPbmx5LCAiIikgewogICAgIHJldHVybiBmYWxzZTsKICAgfQogICBh
dXRvIGJ3ZV9ldmVudCA9IHN0YXRpY19jYXN0PFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkKj4o
YXJnKTsKLSAgcmV0dXJuIGJ3ZV9ldmVudC0+Yml0cmF0ZV9icHNfID4gMCAmJiBid2VfZXZlbnQt
PmZyYWN0aW9uX2xvc3NfID09IDA7CisgIHJldHVybiBid2VfZXZlbnQtPmJpdHJhdGVfYnBzKCkg
PiAwICYmIGJ3ZV9ldmVudC0+ZnJhY3Rpb25fbG9zcygpID09IDA7CiB9CiAKIE1BVENIRVIoTG9z
c0Jhc2VkQndlVXBkYXRlV2l0aEJpdHJhdGVBbmRMb3NzRnJhY3Rpb24sICIiKSB7CkBAIC0zMSw3
ICszMSw3IEBAIE1BVENIRVIoTG9zc0Jhc2VkQndlVXBkYXRlV2l0aEJpdHJhdGVBbmRMb3NzRnJh
Y3Rpb24sICIiKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIGF1dG8gYndlX2V2ZW50ID0g
c3RhdGljX2Nhc3Q8UnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQqPihhcmcpOwotICByZXR1cm4g
YndlX2V2ZW50LT5iaXRyYXRlX2Jwc18gPiAwICYmIGJ3ZV9ldmVudC0+ZnJhY3Rpb25fbG9zc18g
PiAwOworICByZXR1cm4gYndlX2V2ZW50LT5iaXRyYXRlX2JwcygpID4gMCAmJiBid2VfZXZlbnQt
PmZyYWN0aW9uX2xvc3MoKSA+IDA7CiB9CiAKIHZvaWQgVGVzdFByb2JpbmcoYm9vbCB1c2VfZGVs
YXlfYmFzZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL0JVSUxELmduIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvQlVJTEQuZ24KaW5kZXggMmZjYjcxMjEyZjUyNDdjZGFiODAwYjIyNTcxZjAxODZh
MDVlOThmNy4uNzNkODFmMTZlYzI3Y2IwMjFhYjlmMTZmNzNkOTg5OGM2ZDk3NzM4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvQlVJTEQu
Z24KQEAgLTIwLDggKzIwLDYgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb25nZXN0aW9uX2NvbnRy
b2xsZXIiKSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIGNvbmZpZ3MgKz0gWyAiOmJ3ZV90
ZXN0X2xvZ2dpbmciIF0KICAgc291cmNlcyA9IFsKLSAgICAiY29uZ2VzdGlvbl93aW5kb3dfcHVz
aGJhY2tfY29udHJvbGxlci5jYyIsCi0gICAgImNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2Nv
bnRyb2xsZXIuaCIsCiAgICAgImluY2x1ZGUvbmV0d29ya19jaGFuZ2VkX29ic2VydmVyLmgiLAog
ICAgICJpbmNsdWRlL3JlY2VpdmVfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaCIsCiAgICAg
ImluY2x1ZGUvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5oIiwKQEAgLTQzLDYgKzQx
LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb25nZXN0aW9uX2NvbnRyb2xsZXIiKSB7CiAgICAg
Ii4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnB0cl91dGlsIiwK
ICAgICAiLi4vLi4vcnRjX2Jhc2U6cmF0ZV9saW1pdGVyIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uv
bmV0d29yazpzZW50X3BhY2tldCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAg
Ii4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uL2JpdHJhdGVfY29u
dHJvbGxlciIsCkBAIC01Miw2ICs1MSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY29uZ2VzdGlv
bl9jb250cm9sbGVyIikgewogICAgICJnb29nX2NjOmRlbGF5X2Jhc2VkX2J3ZSIsCiAgICAgImdv
b2dfY2M6ZXN0aW1hdG9ycyIsCiAgICAgImdvb2dfY2M6cHJvYmVfY29udHJvbGxlciIsCisgICAg
Imdvb2dfY2M6cHVzaGJhY2tfY29udHJvbGxlciIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIApAQCAtOTgsNyArOTgsNiBAQCBpZiAocnRjX2luY2x1
ZGVfdGVzdHMpIHsKICAgICB0ZXN0b25seSA9IHRydWUKIAogICAgIHNvdXJjZXMgPSBbCi0gICAg
ICAiY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl91bml0dGVzdC5jYyIsCiAg
ICAgICAicmVjZWl2ZV9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVzdC5jYyIsCiAg
ICAgICAic2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVzdC5jYyIsCiAgICAg
ICAidHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MiLApAQCAtMTExLDcgKzEx
MCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uLy4uL3J0Y19iYXNlOmNo
ZWNrcyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uLy4uL3J0
Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFz
ZV90ZXN0c191dGlscyIsCisgICAgICAiLi4vLi4vcnRjX2Jhc2UvbmV0d29yazpzZW50X3BhY2tl
dCIsCiAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAgICIuLi8uLi90ZXN0OmZp
ZWxkX3RyaWFsIiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9iYnIvYmJyX25ldHdvcmtfY29udHJvbGxlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2Jici9iYnJfbmV0d29ya19jb250cm9sbGVyLmNjCmluZGV4IGI4MmRlZDQyMjAyY2M0
NzQwZWFmOTkzYzA1YWE3ZTc0M2NiOGFjMGYuLjg2M2NlNGJmOThkOTY5MjI5MmNmOGZlYTQ5MGMy
N2M0YjYzMDQ0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Jici9iYnJfbmV0d29ya19j
b250cm9sbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Jici9iYnJfbmV0d29ya19jb250cm9s
bGVyLmNjCkBAIC00MDEsMTYgKzQwMSwxNSBAQCBib29sIEJick5ldHdvcmtDb250cm9sbGVyOjpJ
c1Byb2JpbmdGb3JNb3JlQmFuZHdpZHRoKCkgY29uc3QgewogCiBOZXR3b3JrQ29udHJvbFVwZGF0
ZSBCYnJOZXR3b3JrQ29udHJvbGxlcjo6T25UcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2soCiAgICAg
VHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrIG1zZykgeworICBpZiAobXNnLnBhY2tldF9mZWVkYmFj
a3MuZW1wdHkoKSkKKyAgICByZXR1cm4gTmV0d29ya0NvbnRyb2xVcGRhdGUoKTsKKwogICBUaW1l
c3RhbXAgZmVlZGJhY2tfcmVjdl90aW1lID0gbXNnLmZlZWRiYWNrX3RpbWU7Ci0gIGFic2w6Om9w
dGlvbmFsPFNlbnRQYWNrZXQ+IGxhc3Rfc2VudF9wYWNrZXQgPQotICAgICAgbXNnLlBhY2tldHNX
aXRoRmVlZGJhY2soKS5iYWNrKCkuc2VudF9wYWNrZXQ7Ci0gIGlmICghbGFzdF9zZW50X3BhY2tl
dC5oYXNfdmFsdWUoKSkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkxhc3QgYWNrIHBh
Y2tldCBub3QgaW4gaGlzdG9yeSwgbm8gUlRUIHVwZGF0ZSI7Ci0gIH0gZWxzZSB7Ci0gICAgVGlt
ZXN0YW1wIHNlbmRfdGltZSA9IGxhc3Rfc2VudF9wYWNrZXQtPnNlbmRfdGltZTsKLSAgICBUaW1l
RGVsdGEgc2VuZF9kZWx0YSA9IGZlZWRiYWNrX3JlY3ZfdGltZSAtIHNlbmRfdGltZTsKLSAgICBy
dHRfc3RhdHNfLlVwZGF0ZVJ0dChzZW5kX2RlbHRhLCBUaW1lRGVsdGE6Olplcm8oKSwgZmVlZGJh
Y2tfcmVjdl90aW1lKTsKLSAgfQorICBTZW50UGFja2V0IGxhc3Rfc2VudF9wYWNrZXQgPSBtc2cu
UGFja2V0c1dpdGhGZWVkYmFjaygpLmJhY2soKS5zZW50X3BhY2tldDsKKworICBUaW1lc3RhbXAg
c2VuZF90aW1lID0gbGFzdF9zZW50X3BhY2tldC5zZW5kX3RpbWU7CisgIFRpbWVEZWx0YSBzZW5k
X2RlbHRhID0gZmVlZGJhY2tfcmVjdl90aW1lIC0gc2VuZF90aW1lOworICBydHRfc3RhdHNfLlVw
ZGF0ZVJ0dChzZW5kX2RlbHRhLCBUaW1lRGVsdGE6Olplcm8oKSwgZmVlZGJhY2tfcmVjdl90aW1l
KTsKIAogICBjb25zdCBEYXRhU2l6ZSB0b3RhbF9kYXRhX2Fja2VkX2JlZm9yZSA9IHNhbXBsZXJf
LT50b3RhbF9kYXRhX2Fja2VkKCk7CiAKQEAgLTQzMSw3ICs0MzAsNyBAQCBOZXR3b3JrQ29udHJv
bFVwZGF0ZSBCYnJOZXR3b3JrQ29udHJvbGxlcjo6T25UcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2so
CiAgIC8vIElucHV0IHRoZSBuZXcgZGF0YSBpbnRvIHRoZSBCQlIgbW9kZWwgb2YgdGhlIGNvbm5l
Y3Rpb24uCiAgIGlmICghYWNrZWRfcGFja2V0cy5lbXB0eSgpKSB7CiAgICAgaW50NjRfdCBsYXN0
X2Fja2VkX3BhY2tldCA9Ci0gICAgICAgIGFja2VkX3BhY2tldHMucmJlZ2luKCktPnNlbnRfcGFj
a2V0LT5zZXF1ZW5jZV9udW1iZXI7CisgICAgICAgIGFja2VkX3BhY2tldHMucmJlZ2luKCktPnNl
bnRfcGFja2V0LnNlcXVlbmNlX251bWJlcjsKIAogICAgIGlzX3JvdW5kX3N0YXJ0ID0gVXBkYXRl
Um91bmRUcmlwQ291bnRlcihsYXN0X2Fja2VkX3BhY2tldCk7CiAgICAgbWluX3J0dF9leHBpcmVk
ID0KQEAgLTQ3Miw3ICs0NzEsNyBAQCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBCYnJOZXR3b3JrQ29u
dHJvbGxlcjo6T25UcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2soCiAgIERhdGFTaXplIGRhdGFfYWNr
ZWQgPSBzYW1wbGVyXy0+dG90YWxfZGF0YV9hY2tlZCgpIC0gdG90YWxfZGF0YV9hY2tlZF9iZWZv
cmU7CiAgIERhdGFTaXplIGRhdGFfbG9zdCA9IERhdGFTaXplOjpaZXJvKCk7CiAgIGZvciAoY29u
c3QgUGFja2V0UmVzdWx0JiBwYWNrZXQgOiBsb3N0X3BhY2tldHMpIHsKLSAgICBkYXRhX2xvc3Qg
Kz0gcGFja2V0LnNlbnRfcGFja2V0LT5zaXplOworICAgIGRhdGFfbG9zdCArPSBwYWNrZXQuc2Vu
dF9wYWNrZXQuc2l6ZTsKICAgfQogCiAgIC8vIEFmdGVyIHRoZSBtb2RlbCBpcyB1cGRhdGVkLCBy
ZWNhbGN1bGF0ZSB0aGUgcGFjaW5nIHJhdGUgYW5kIGNvbmdlc3Rpb24KQEAgLTQ4Myw3ICs0ODIs
NyBAQCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBCYnJOZXR3b3JrQ29udHJvbGxlcjo6T25UcmFuc3Bv
cnRQYWNrZXRzRmVlZGJhY2soCiAgIC8vIENsZWFudXAgaW50ZXJuYWwgc3RhdGUuCiAgIGlmICgh
YWNrZWRfcGFja2V0cy5lbXB0eSgpKSB7CiAgICAgc2FtcGxlcl8tPlJlbW92ZU9ic29sZXRlUGFj
a2V0cygKLSAgICAgICAgYWNrZWRfcGFja2V0cy5iYWNrKCkuc2VudF9wYWNrZXQtPnNlcXVlbmNl
X251bWJlcik7CisgICAgICAgIGFja2VkX3BhY2tldHMuYmFjaygpLnNlbnRfcGFja2V0LnNlcXVl
bmNlX251bWJlcik7CiAgIH0KICAgcmV0dXJuIENyZWF0ZVJhdGVVcGRhdGUobXNnLmZlZWRiYWNr
X3RpbWUpOwogfQpAQCAtNTUwLDcgKzU0OSw3IEBAIHZvaWQgQmJyTmV0d29ya0NvbnRyb2xsZXI6
OkVudGVyUHJvYmVCYW5kd2lkdGhNb2RlKFRpbWVzdGFtcCBub3cpIHsKIHZvaWQgQmJyTmV0d29y
a0NvbnRyb2xsZXI6OkRpc2NhcmRMb3N0UGFja2V0cygKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQ
YWNrZXRSZXN1bHQ+JiBsb3N0X3BhY2tldHMpIHsKICAgZm9yIChjb25zdCBQYWNrZXRSZXN1bHQm
IHBhY2tldCA6IGxvc3RfcGFja2V0cykgewotICAgIHNhbXBsZXJfLT5PblBhY2tldExvc3QocGFj
a2V0LnNlbnRfcGFja2V0LT5zZXF1ZW5jZV9udW1iZXIpOworICAgIHNhbXBsZXJfLT5PblBhY2tl
dExvc3QocGFja2V0LnNlbnRfcGFja2V0LnNlcXVlbmNlX251bWJlcik7CiAgIH0KIH0KIApAQCAt
NTY5LDggKzU2OCw4IEBAIGJvb2wgQmJyTmV0d29ya0NvbnRyb2xsZXI6OlVwZGF0ZUJhbmR3aWR0
aEFuZE1pblJ0dCgKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+JiBhY2tlZF9w
YWNrZXRzKSB7CiAgIFRpbWVEZWx0YSBzYW1wbGVfcnR0ID0gVGltZURlbHRhOjpQbHVzSW5maW5p
dHkoKTsKICAgZm9yIChjb25zdCBhdXRvJiBwYWNrZXQgOiBhY2tlZF9wYWNrZXRzKSB7Ci0gICAg
QmFuZHdpZHRoU2FtcGxlIGJhbmR3aWR0aF9zYW1wbGUgPSBzYW1wbGVyXy0+T25QYWNrZXRBY2tu
b3dsZWRnZWQoCi0gICAgICAgIG5vdywgcGFja2V0LnNlbnRfcGFja2V0LT5zZXF1ZW5jZV9udW1i
ZXIpOworICAgIEJhbmR3aWR0aFNhbXBsZSBiYW5kd2lkdGhfc2FtcGxlID0KKyAgICAgICAgc2Ft
cGxlcl8tPk9uUGFja2V0QWNrbm93bGVkZ2VkKG5vdywgcGFja2V0LnNlbnRfcGFja2V0LnNlcXVl
bmNlX251bWJlcik7CiAgICAgbGFzdF9zYW1wbGVfaXNfYXBwX2xpbWl0ZWRfID0gYmFuZHdpZHRo
X3NhbXBsZS5pc19hcHBfbGltaXRlZDsKICAgICBpZiAoIWJhbmR3aWR0aF9zYW1wbGUucnR0Lklz
WmVybygpKSB7CiAgICAgICBzYW1wbGVfcnR0ID0gc3RkOjptaW4oc2FtcGxlX3J0dCwgYmFuZHdp
ZHRoX3NhbXBsZS5ydHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvY29uZ2VzdGlvbl93
aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Nvbmdlc3Rpb25f
d2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGRhYTUxYmRkZDMwOTc3OTkyZDhhZDBlOWY4NTI5Mzc3YmU2ZDNhZTQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvY29uZ2Vz
dGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYworKysgL2Rldi9udWxsCkBAIC0xLDkz
ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJz
eXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgotCi1uYW1lc3BhY2Ugd2VicnRj
IHsKLQotLy8gV2hlbiBDb25nZXN0aW9uV2luZG93UHVzaGJhY2sgaXMgZW5hYmxlZCwgdGhlIHBh
Y2VyIGlzIG9ibGl2aW91cyB0bwotLy8gdGhlIGNvbmdlc3Rpb24gd2luZG93LiBUaGUgcmVsYXRp
b24gYmV0d2VlbiBvdXRzdGFuZGluZyBkYXRhIGFuZAotLy8gdGhlIGNvbmdlc3Rpb24gd2luZG93
IGFmZmVjdHMgZW5jb2RlciBhbGxvY2F0aW9ucyBkaXJlY3RseS4KLS8vIFRoaXMgZXhwZXJpbWVu
dCBpcyBidWlsZCBvbiB0b3Agb2YgY29uZ2VzdGlvbiB3aW5kb3cgZXhwZXJpbWVudC4KLWNvbnN0
IGNoYXIga0Nvbmdlc3Rpb25QdXNoYmFja0V4cGVyaW1lbnRbXSA9ICJXZWJSVEMtQ29uZ2VzdGlv
bldpbmRvd1B1c2hiYWNrIjsKLWNvbnN0IHVpbnQzMl90IGtEZWZhdWx0TWluUHVzaGJhY2tUYXJn
ZXRCaXRyYXRlQnBzID0gMzAwMDA7Ci0KLWJvb2wgUmVhZENvbmdlc3Rpb25XaW5kb3dQdXNoYmFj
a0V4cGVyaW1lbnRQYXJhbWV0ZXIoCi0gICAgdWludDMyX3QqIG1pbl9wdXNoYmFja190YXJnZXRf
Yml0cmF0ZV9icHMpIHsKLSAgUlRDX0RDSEVDSyhtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVf
YnBzKTsKLSAgc3RkOjpzdHJpbmcgZXhwZXJpbWVudF9zdHJpbmcgPQotICAgICAgd2VicnRjOjpm
aWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtDb25nZXN0aW9uUHVzaGJhY2tFeHBlcmltZW50KTsK
LSAgaW50IHBhcnNlZF92YWx1ZXMgPSBzc2NhbmYoZXhwZXJpbWVudF9zdHJpbmcuY19zdHIoKSwg
IkVuYWJsZWQtJSIgUFJJdTMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fcHVz
aGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzKTsKLSAgaWYgKHBhcnNlZF92YWx1ZXMgPT0gMSkgewot
ICAgIFJUQ19DSEVDS19HRSgqbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2JwcywgMCkKLSAg
ICAgICAgPDwgIk1pbiBwdXNoYmFjayB0YXJnZXQgYml0cmF0ZSBtdXN0IGJlIGdyZWF0ZXIgdGhh
biBvciBlcXVhbCB0byAwLiI7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgcmV0dXJuIGZhbHNl
OwotfQotCi1Db25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyOjpDb25nZXN0aW9uV2lu
ZG93UHVzaGJhY2tDb250cm9sbGVyKCkgewotICBpZiAoIVJlYWRDb25nZXN0aW9uV2luZG93UHVz
aGJhY2tFeHBlcmltZW50UGFyYW1ldGVyKAotICAgICAgICAgICZtaW5fcHVzaGJhY2tfdGFyZ2V0
X2JpdHJhdGVfYnBzXykpIHsKLSAgICBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzXyA9
IGtEZWZhdWx0TWluUHVzaGJhY2tUYXJnZXRCaXRyYXRlQnBzOwotICB9Ci19Ci0KLXZvaWQgQ29u
Z2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6VXBkYXRlT3V0c3RhbmRpbmdEYXRhKAot
ICAgIHNpemVfdCBvdXRzdGFuZGluZ19ieXRlcykgewotICBvdXRzdGFuZGluZ19ieXRlc18gPSBv
dXRzdGFuZGluZ19ieXRlczsKLX0KLQotdm9pZCBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250
cm9sbGVyOjpVcGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEoCi0gICAgc2l6ZV90IG1heF9vdXRzdGFu
ZGluZ19ieXRlcykgewotICBEYXRhU2l6ZSBkYXRhX3dpbmRvdyA9IERhdGFTaXplOjpieXRlcyht
YXhfb3V0c3RhbmRpbmdfYnl0ZXMpOwotICBpZiAoY3VycmVudF9kYXRhX3dpbmRvd18pIHsKLSAg
ICBkYXRhX3dpbmRvdyA9IChkYXRhX3dpbmRvdyArIGN1cnJlbnRfZGF0YV93aW5kb3dfLnZhbHVl
KCkpIC8gMjsKLSAgfQotICBjdXJyZW50X2RhdGFfd2luZG93XyA9IGRhdGFfd2luZG93OwotfQot
Ci12b2lkIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI6OlNldERhdGFXaW5kb3co
RGF0YVNpemUgZGF0YV93aW5kb3cpIHsKLSAgY3VycmVudF9kYXRhX3dpbmRvd18gPSBkYXRhX3dp
bmRvdzsKLX0KLQotdWludDMyX3QgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6
VXBkYXRlVGFyZ2V0Qml0cmF0ZSgKLSAgICB1aW50MzJfdCBiaXRyYXRlX2JwcykgewotICBpZiAo
IWN1cnJlbnRfZGF0YV93aW5kb3dfIHx8IGN1cnJlbnRfZGF0YV93aW5kb3dfLT5Jc1plcm8oKSkK
LSAgICByZXR1cm4gYml0cmF0ZV9icHM7Ci0gIGRvdWJsZSBmaWxsX3JhdGlvID0KLSAgICAgIG91
dHN0YW5kaW5nX2J5dGVzXyAvIHN0YXRpY19jYXN0PGRvdWJsZT4oY3VycmVudF9kYXRhX3dpbmRv
d18tPmJ5dGVzKCkpOwotICBpZiAoZmlsbF9yYXRpbyA+IDEuNSkgewotICAgIGVuY29kaW5nX3Jh
dGVfcmF0aW9fICo9IDAuOTsKLSAgfSBlbHNlIGlmIChmaWxsX3JhdGlvID4gMSkgewotICAgIGVu
Y29kaW5nX3JhdGVfcmF0aW9fICo9IDAuOTU7Ci0gIH0gZWxzZSBpZiAoZmlsbF9yYXRpbyA8IDAu
MSkgewotICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gMS4wOwotICB9IGVsc2UgewotICAgIGVu
Y29kaW5nX3JhdGVfcmF0aW9fICo9IDEuMDU7Ci0gICAgZW5jb2RpbmdfcmF0ZV9yYXRpb18gPSBz
dGQ6Om1pbihlbmNvZGluZ19yYXRlX3JhdGlvXywgMS4wKTsKLSAgfQotICB1aW50MzJfdCBhZGp1
c3RlZF90YXJnZXRfYml0cmF0ZV9icHMgPQotICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJp
dHJhdGVfYnBzICogZW5jb2RpbmdfcmF0ZV9yYXRpb18pOwotCi0gIC8vIERvIG5vdCBhZGp1c3Qg
YmVsb3cgdGhlIG1pbmltdW0gcHVzaGJhY2sgYml0cmF0ZSBidXQgZG8gb2JleSBpZiB0aGUKLSAg
Ly8gb3JpZ2luYWwgZXN0aW1hdGUgaXMgYmVsb3cgaXQuCi0gIGJpdHJhdGVfYnBzID0gYWRqdXN0
ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzIDwgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc18K
LSAgICAgICAgICAgICAgICAgICAgPyBzdGQ6Om1pbihiaXRyYXRlX2JwcywgbWluX3B1c2hiYWNr
X3RhcmdldF9iaXRyYXRlX2Jwc18pCi0gICAgICAgICAgICAgICAgICAgIDogYWRqdXN0ZWRfdGFy
Z2V0X2JpdHJhdGVfYnBzOwotICByZXR1cm4gYml0cmF0ZV9icHM7Ci19Ci0KLX0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Nvbmdlc3Rpb25fd2luZG93
X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Nvbmdlc3Rpb25fd2luZG93
X3B1c2hiYWNrX2NvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYw
ODU5MDU4M2JkYjgxMWY4NDZhNDNjYTllMzU4ODc0NTM5MjQ4OC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dp
bmRvd19wdXNoYmFja19jb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0NPTkdFU1RJT05fQ09O
VFJPTExFUl9DT05HRVNUSU9OX1dJTkRPV19QVVNIQkFDS19DT05UUk9MTEVSX0hfCi0jZGVmaW5l
IE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX0NPTkdFU1RJT05fV0lORE9XX1BVU0hCQUNL
X0NPTlRST0xMRVJfSF8KLQotI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5o
IgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0j
aW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
Zm9ybWF0X21hY3Jvcy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVGhpcyBjbGFzcyBl
bmFibGVzIHB1c2hiYWNrIGZyb20gY29uZ2VzdGlvbiB3aW5kb3cgZGlyZWN0bHkgdG8gdmlkZW8g
ZW5jb2Rlci4KLS8vIFdoZW4gdGhlIGNvbmdlc3Rpb24gd2luZG93IGlzIGZpbGxpbmcgdXAsIHRo
ZSB2aWRlbyBlbmNvZGVyIHRhcmdldCBiaXRyYXRlCi0vLyB3aWxsIGJlIHJlZHVjZWQgYWNjb3Jk
aW5nbHkgdG8gYWNjb21tb2RhdGUgdGhlIG5ldHdvcmsgY2hhbmdlcy4gVG8gYXZvaWQKLS8vIHBh
dXNpbmcgdmlkZW8gdG9vIGZyZXF1ZW50bHksIGEgbWluaW11bSBlbmNvZGVyIHRhcmdldCBiaXRy
YXRlIHRocmVzaG9sZCBpcwotLy8gdXNlZCB0byBwcmV2ZW50IHZpZGVvIHBhdXNlIGR1ZSB0byBh
IGZ1bGwgY29uZ2VzdGlvbiB3aW5kb3cuCi1jbGFzcyBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tD
b250cm9sbGVyIHsKLSBwdWJsaWM6Ci0gIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xs
ZXIoKTsKLSAgdm9pZCBVcGRhdGVPdXRzdGFuZGluZ0RhdGEoc2l6ZV90IG91dHN0YW5kaW5nX2J5
dGVzKTsKLSAgdm9pZCBVcGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEoc2l6ZV90IG1heF9vdXRzdGFu
ZGluZ19ieXRlcyk7Ci0gIHVpbnQzMl90IFVwZGF0ZVRhcmdldEJpdHJhdGUodWludDMyX3QgYml0
cmF0ZV9icHMpOwotICB2b2lkIFNldERhdGFXaW5kb3coRGF0YVNpemUgZGF0YV93aW5kb3cpOwot
Ci0gcHJpdmF0ZToKLSAgYWJzbDo6b3B0aW9uYWw8RGF0YVNpemU+IGN1cnJlbnRfZGF0YV93aW5k
b3dfOwotICBzaXplX3Qgb3V0c3RhbmRpbmdfYnl0ZXNfID0gMDsKLSAgdWludDMyX3QgbWluX3B1
c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc187Ci0gIGRvdWJsZSBlbmNvZGluZ19yYXRlX3JhdGlv
XyA9IDEuMDsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBNT0RV
TEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9DT05HRVNUSU9OX1dJTkRPV19QVVNIQkFDS19DT05U
Uk9MTEVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dpbmRvd19w
dXNoYmFja19jb250cm9sbGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvY29uZ2VzdGlv
bl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDlkNmE3OWQ2MmZmYmM2MGJkZDhhNTU4ZDVlMDFiOTUyNGI1NGYxZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyX3VuaXR0ZXN0LmNjCisr
KyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNp
bmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dpbmRvd19w
dXNoYmFja19jb250cm9sbGVyLmgiCi0jaW5jbHVkZSAidGVzdC9nbW9jay5oIgotI2luY2x1ZGUg
InRlc3QvZ3Rlc3QuaCIKLQotdXNpbmcgdGVzdGluZzo6XzsKLQotbmFtZXNwYWNlIHdlYnJ0YyB7
Ci1uYW1lc3BhY2UgdGVzdCB7Ci0KLWNsYXNzIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRy
b2xsZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBDb25n
ZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyIGN3bmRfY29udHJvbGxlcl87Ci19OwotCi1U
RVNUX0YoQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlclRlc3QsIEZ1bGxDb25nZXN0
aW9uV2luZG93KSB7Ci0gIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlT3V0c3RhbmRpbmdEYXRhKDEw
MDAwMCk7Ci0gIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlTWF4T3V0c3RhbmRpbmdEYXRhKDUwMDAw
KTsKLQotICB1aW50MzJfdCBiaXRyYXRlX2JwcyA9IDgwMDAwOwotICBiaXRyYXRlX2JwcyA9IGN3
bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7Ci0gIEVYUEVD
VF9FUSg3MjAwMHUsIGJpdHJhdGVfYnBzKTsKLQotICBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZU1h
eE91dHN0YW5kaW5nRGF0YSg1MDAwMCk7Ci0gIGJpdHJhdGVfYnBzID0gY3duZF9jb250cm9sbGVy
Xy5VcGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJhdGVfYnBzKTsKLSAgRVhQRUNUX0VRKHN0YXRpY19j
YXN0PHVpbnQzMl90Pig3MjAwMCAqIDAuOSAqIDAuOSksIGJpdHJhdGVfYnBzKTsKLX0KLQotVEVT
VF9GKENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXJUZXN0LCBOb3JtYWxDb25nZXN0
aW9uV2luZG93KSB7Ci0gIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlT3V0c3RhbmRpbmdEYXRhKDEw
MDAwMCk7Ci0gIGN3bmRfY29udHJvbGxlcl8uU2V0RGF0YVdpbmRvdyhEYXRhU2l6ZTo6Ynl0ZXMo
MjAwMDAwKSk7Ci0KLSAgdWludDMyX3QgYml0cmF0ZV9icHMgPSA4MDAwMDsKLSAgYml0cmF0ZV9i
cHMgPSBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZVRhcmdldEJpdHJhdGUoYml0cmF0ZV9icHMpOwot
ICBFWFBFQ1RfRVEoODAwMDB1LCBiaXRyYXRlX2Jwcyk7Ci0KLSAgY3duZF9jb250cm9sbGVyXy5V
cGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEoMjAwMDApOwotICBiaXRyYXRlX2JwcyA9IGN3bmRfY29u
dHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7Ci0gIEVYUEVDVF9FUSg4
MDAwMHUsIGJpdHJhdGVfYnBzKTsKLX0KLQotVEVTVF9GKENvbmdlc3Rpb25XaW5kb3dQdXNoYmFj
a0NvbnRyb2xsZXJUZXN0LCBMb3dCaXRyYXRlKSB7Ci0gIGN3bmRfY29udHJvbGxlcl8uVXBkYXRl
T3V0c3RhbmRpbmdEYXRhKDEwMDAwMCk7Ci0gIGN3bmRfY29udHJvbGxlcl8uU2V0RGF0YVdpbmRv
dyhEYXRhU2l6ZTo6Ynl0ZXMoNTAwMDApKTsKLQotICB1aW50MzJfdCBiaXRyYXRlX2JwcyA9IDM1
MDAwOwotICBiaXRyYXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0
ZShiaXRyYXRlX2Jwcyk7Ci0gIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1aW50MzJfdD4oMzUwMDAg
KiAwLjkpLCBiaXRyYXRlX2Jwcyk7Ci0KLSAgY3duZF9jb250cm9sbGVyXy5VcGRhdGVNYXhPdXRz
dGFuZGluZ0RhdGEoMjAwMDApOwotICBiaXRyYXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8uVXBk
YXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7Ci0gIEVYUEVDVF9FUSgzMDAwMHUsIGJpdHJh
dGVfYnBzKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHRlc3QKLX0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvQlVJTEQuZ24gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL0JVSUxELmduCmluZGV4IGIxMjY5MGI4MTdlMTNjY2NiNWUwMDYzYzkz
NzMyM2NhNzViMGFlYzIuLjM4MTY5YmJiNGQwMjlhM2U4NTcwNmNhNmI5YzRkNzliN2E3NDVlM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvQlVJTEQuZ24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9CVUlMRC5nbgpAQCAtMTksMTAgKzE5LDggQEAgY29uZmlnKCJid2Vf
dGVzdF9sb2dnaW5nIikgewogcnRjX3N0YXRpY19saWJyYXJ5KCJnb29nX2NjIikgewogICBjb25m
aWdzICs9IFsgIjpid2VfdGVzdF9sb2dnaW5nIiBdCiAgIHNvdXJjZXMgPSBbCi0gICAgImdvb2df
Y2NfZmFjdG9yeS5jYyIsCiAgICAgImdvb2dfY2NfbmV0d29ya19jb250cm9sLmNjIiwKICAgICAi
Z29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaCIsCi0gICAgImluY2x1ZGUvZ29vZ19jY19mYWN0b3J5
LmgiLAogICBdCiAKICAgZGVwcyA9IFsKQEAgLTMwLDYgKzI4LDcgQEAgcnRjX3N0YXRpY19saWJy
YXJ5KCJnb29nX2NjIikgewogICAgICI6ZGVsYXlfYmFzZWRfYndlIiwKICAgICAiOmVzdGltYXRv
cnMiLAogICAgICI6cHJvYmVfY29udHJvbGxlciIsCisgICAgIjpwdXNoYmFja19jb250cm9sbGVy
IiwKICAgICAiLi4vLi46bW9kdWxlX2FwaSIsCiAgICAgIi4uLy4uLy4uOndlYnJ0Y19jb21tb24i
LAogICAgICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Om5ldHdvcmtfY29udHJvbCIsCkBAIC00OSw2
ICs0OCwyMCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImdvb2dfY2MiKSB7CiAgIF0KIH0KIAorcnRj
X3NvdXJjZV9zZXQoInB1c2hiYWNrX2NvbnRyb2xsZXIiKSB7CisgIHNvdXJjZXMgPSBbCisgICAg
ImNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MiLAorICAgICJjb25nZXN0
aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAg
Ii4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKKyAgICAiLi4vLi4vLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92
ZWQiLAorICAgICIuLi8uLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KK30KKwog
cnRjX3NvdXJjZV9zZXQoImFscl9kZXRlY3RvciIpIHsKICAgc291cmNlcyA9IFsKICAgICAiYWxy
X2RldGVjdG9yLmNjIiwKQEAgLTg0LDYgKzk3LDcgQEAgcnRjX3NvdXJjZV9zZXQoImVzdGltYXRv
cnMiKSB7CiAgIF0KIAogICBkZXBzID0gWworICAgICIuLi8uLi8uLi9hcGkvdW5pdHM6ZGF0YV9y
YXRlIiwKICAgICAiLi4vLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfYndlIiwKICAgICAiLi4vLi4v
Li4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNo
ZWNrcyIsCkBAIC0xMDcsNiArMTIxLDcgQEAgcnRjX3NvdXJjZV9zZXQoImRlbGF5X2Jhc2VkX2J3
ZSIpIHsKIAogICBkZXBzID0gWwogICAgICI6ZXN0aW1hdG9ycyIsCisgICAgIi4uLy4uLy4uL2Fw
aS90cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKICAgICAiLi4vLi4vLi4vbG9nZ2luZzpydGNf
ZXZlbnRfYndlIiwKICAgICAiLi4vLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCiAg
ICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCkBAIC0xMTUsNyArMTMwLDkgQEAgcnRjX3Nv
dXJjZV9zZXQoImRlbGF5X2Jhc2VkX2J3ZSIpIHsKICAgICAiLi4vLi4vLi4vc3lzdGVtX3dyYXBw
ZXJzOm1ldHJpY3MiLAogICAgICIuLi8uLi9wYWNpbmciLAogICAgICIuLi8uLi9yZW1vdGVfYml0
cmF0ZV9lc3RpbWF0b3IiLAorICAgICIuLi8uLi9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAog
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KIApAQCAtMTQ5
LDYgKzE2Niw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjplc3RpbWF0b3Jz
IiwKICAgICAgICI6Z29vZ19jYyIsCiAgICAgICAiLi46dGVzdF9jb250cm9sbGVyX3ByaW50ZXIi
LAorICAgICAgIi4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6Z29vZ19jYyIsCiAgICAgXQogICB9CiAg
IHJ0Y19zb3VyY2Vfc2V0KCJnb29nX2NjX3VuaXR0ZXN0cyIpIHsKQEAgLTE1Nyw2ICsxNzUsNyBA
QCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBzb3VyY2VzID0gWwogICAgICAgImFja25v
d2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAiYWxyX2RldGVj
dG9yX3VuaXR0ZXN0LmNjIiwKKyAgICAgICJjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250
cm9sbGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJkZWxheV9iYXNlZF9id2VfdW5pdHRlc3QuY2Mi
LAogICAgICAgImRlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdF9oZWxwZXIuY2MiLAogICAgICAgImRl
bGF5X2Jhc2VkX2J3ZV91bml0dGVzdF9oZWxwZXIuaCIsCkBAIC0xNzUsNiArMTk0LDggQEAgaWYg
KHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOmVzdGltYXRvcnMiLAogICAgICAgIjpnb29n
X2NjIiwKICAgICAgICI6cHJvYmVfY29udHJvbGxlciIsCisgICAgICAiOnB1c2hiYWNrX2NvbnRy
b2xsZXIiLAorICAgICAgIi4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6Z29vZ19jYyIsCiAgICAgICAi
Li4vLi4vLi4vYXBpL3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAogICAgICAgIi4uLy4uLy4u
L2FwaS90cmFuc3BvcnQ6bmV0d29ya19jb250cm9sX3Rlc3QiLAogICAgICAgIi4uLy4uLy4uL2xv
Z2dpbmc6bW9ja3MiLApAQCAtMTk0LDQgKzIxNSwzOSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMp
IHsKICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICAgIF0K
ICAgfQorICBydGNfc291cmNlX3NldCgiZ29vZ19jY19zbG93X3Rlc3RzIikgeworICAgIHRlc3Rv
bmx5ID0gdHJ1ZQorCisgICAgc291cmNlcyA9IFsKKyAgICAgICJnb29nX2NjX25ldHdvcmtfY29u
dHJvbF9zbG93dGVzdC5jYyIsCisgICAgXQorICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAm
JiBpc19jbGFuZykgeworICAgICAgc3VwcHJlc3NlZF9jb25maWdzICs9IFsgIi8vYnVpbGQvY29u
ZmlnL2NsYW5nOmZpbmRfYmFkX2NvbnN0cnVjdHMiIF0KKyAgICB9CisgICAgZGVwcyA9IFsKKyAg
ICAgICI6YWxyX2RldGVjdG9yIiwKKyAgICAgICI6ZGVsYXlfYmFzZWRfYndlIiwKKyAgICAgICI6
ZXN0aW1hdG9ycyIsCisgICAgICAiOmdvb2dfY2MiLAorICAgICAgIjpwcm9iZV9jb250cm9sbGVy
IiwKKyAgICAgICI6cHVzaGJhY2tfY29udHJvbGxlciIsCisgICAgICAiLi4vLi4vLi4vYXBpL3Ry
YW5zcG9ydDpnb29nX2NjIiwKKyAgICAgICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Om5ldHdvcmtf
Y29udHJvbCIsCisgICAgICAiLi4vLi4vLi4vYXBpL3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2xf
dGVzdCIsCisgICAgICAiLi4vLi4vLi4vbG9nZ2luZzptb2NrcyIsCisgICAgICAiLi4vLi4vLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHBy
b3ZlZCIsCisgICAgICAiLi4vLi4vLi4vcnRjX2Jhc2UvZXhwZXJpbWVudHM6YWxyX2V4cGVyaW1l
bnQiLAorICAgICAgIi4uLy4uLy4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgICAiLi4vLi4vLi4v
c3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAgICIuLi8uLi8uLi90ZXN0OmZpZWxk
X3RyaWFsIiwKKyAgICAgICIuLi8uLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgICAiLi4v
Li4vLi4vdGVzdC9zY2VuYXJpbyIsCisgICAgICAiLi4vLi4vcGFjaW5nIiwKKyAgICAgICIuLi8u
Li9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IiLAorICAgICAgIi4uLy4uL3J0cF9ydGNwOnJ0cF9y
dGNwX2Zvcm1hdCIsCisgICAgICAiLy90ZXN0aW5nL2dtb2NrIiwKKyAgICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgIF0KKyAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5j
YwppbmRleCAwNzIyYjIyMThiZDU5N2Y3ODczZjhhMTc4NzY2ZGU2OTc1NTc5NzM1Li45MzlkYTRj
YzMzY2VhZmQwYjZiNjJkNDRmN2ZjNmNlNjQyYWI3YzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5jYwpAQCAt
MTAsMTEgKzEwLDE1IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oIgogCisjaW5jbHVkZSA8
c3RkZGVmLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNp
bmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKKyNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIApAQCAtMzEsNyArMzUsOSBAQCBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9y
Ojp+QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcigpIHt9CiAKIEFja25vd2xlZGdlZEJpdHJh
dGVFc3RpbWF0b3I6OkFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3IoCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEJpdHJhdGVFc3RpbWF0b3I+IGJpdHJhdGVfZXN0aW1hdG9yKQotICAgIDogYml0cmF0
ZV9lc3RpbWF0b3JfKHN0ZDo6bW92ZShiaXRyYXRlX2VzdGltYXRvcikpIHt9CisgICAgOiBhY2Nv
dW50X2Zvcl91bmFja25vd2xlZGdlZF90cmFmZmljXygKKyAgICAgICAgICBmaWVsZF90cmlhbDo6
SXNFbmFibGVkKCJXZWJSVEMtQndlLUFjY291bnRGb3JVbmFja2VkIikpLAorICAgICAgYml0cmF0
ZV9lc3RpbWF0b3JfKHN0ZDo6bW92ZShiaXRyYXRlX2VzdGltYXRvcikpIHt9CiAKIHZvaWQgQWNr
bm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcjo6SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigK
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4mIHBhY2tldF9mZWVkYmFja192
ZWN0b3IpIHsKQEAgLTQxLDE4ICs0Nyw0MSBAQCB2b2lkIEFja25vd2xlZGdlZEJpdHJhdGVFc3Rp
bWF0b3I6OkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoCiAgIGZvciAoY29uc3QgYXV0byYg
cGFja2V0IDogcGFja2V0X2ZlZWRiYWNrX3ZlY3RvcikgewogICAgIGlmIChJc0luU2VuZFRpbWVI
aXN0b3J5KHBhY2tldCkpIHsKICAgICAgIE1heWJlRXhwZWN0RmFzdFJhdGVDaGFuZ2UocGFja2V0
LnNlbmRfdGltZV9tcyk7Ci0gICAgICBiaXRyYXRlX2VzdGltYXRvcl8tPlVwZGF0ZShwYWNrZXQu
YXJyaXZhbF90aW1lX21zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpk
Y2hlY2tlZF9jYXN0PGludD4ocGFja2V0LnBheWxvYWRfc2l6ZSkpOworICAgICAgaW50IGFja25v
d2xlZGdlZF9lc3RpbWF0ZSA9IHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ+KHBhY2tldC5wYXlsb2Fk
X3NpemUpOworICAgICAgaWYgKGFjY291bnRfZm9yX3VuYWNrbm93bGVkZ2VkX3RyYWZmaWNfKQor
ICAgICAgICBhY2tub3dsZWRnZWRfZXN0aW1hdGUgKz0gcGFja2V0LnVuYWNrbm93bGVkZ2VkX2Rh
dGE7CisgICAgICBiaXRyYXRlX2VzdGltYXRvcl8tPlVwZGF0ZShwYWNrZXQuYXJyaXZhbF90aW1l
X21zLCBhY2tub3dsZWRnZWRfZXN0aW1hdGUpOwogICAgIH0KICAgfQogfQogCiBhYnNsOjpvcHRp
b25hbDx1aW50MzJfdD4gQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcjo6Yml0cmF0ZV9icHMo
KSBjb25zdCB7CiAgIGF1dG8gZXN0aW1hdGVkX2JpdHJhdGUgPSBiaXRyYXRlX2VzdGltYXRvcl8t
PmJpdHJhdGVfYnBzKCk7Ci0gIHJldHVybiBlc3RpbWF0ZWRfYml0cmF0ZQotICAgICAgICAgICAg
ID8gKmVzdGltYXRlZF9iaXRyYXRlICsKLSAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZWRfYml0
cmF0ZV93aXRob3V0X2ZlZWRiYWNrX2Jwc18udmFsdWVfb3IoMCkKLSAgICAgICAgICAgICA6IGVz
dGltYXRlZF9iaXRyYXRlOworICAvLyBJZiB3ZSBhY2NvdW50IGZvciB1bmFja25vd2xlZGdlZCB0
cmFmZmljLCB3ZSBzaG91bGQgbm90IGFkZCB0aGUgYWxsb2NhdGVkCisgIC8vIGJpdHJhdGUgZm9y
IHVuYWxsb2NhdGVkIHN0cmVhbSBhcyB3ZSBleHBlY3QgaXQgdG8gYmUgaW5jbHVkZWQgYWxyZWFk
eS4KKyAgaWYgKGFjY291bnRfZm9yX3VuYWNrbm93bGVkZ2VkX3RyYWZmaWNfKSB7CisgICAgcmV0
dXJuIGVzdGltYXRlZF9iaXRyYXRlOworICB9IGVsc2UgeworICAgIHJldHVybiBlc3RpbWF0ZWRf
Yml0cmF0ZQorICAgICAgICAgICAgICAgPyAqZXN0aW1hdGVkX2JpdHJhdGUgKyBhbGxvY2F0ZWRf
Yml0cmF0ZV93aXRob3V0X2ZlZWRiYWNrX2Jwc18KKyAgICAgICAgICAgICAgIDogZXN0aW1hdGVk
X2JpdHJhdGU7CisgIH0KK30KKworYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IEFja25vd2xlZGdl
ZEJpdHJhdGVFc3RpbWF0b3I6OlBlZWtCcHMoKSBjb25zdCB7CisgIHJldHVybiBiaXRyYXRlX2Vz
dGltYXRvcl8tPlBlZWtCcHMoKTsKK30KKworYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IEFja25v
d2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I6OmJpdHJhdGUoKSBjb25zdCB7CisgIGlmIChiaXRyYXRl
X2JwcygpKQorICAgIHJldHVybiBEYXRhUmF0ZTo6YnBzKCpiaXRyYXRlX2JwcygpKTsKKyAgcmV0
dXJuIGFic2w6Om51bGxvcHQ7Cit9CisKK2Fic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBBY2tub3ds
ZWRnZWRCaXRyYXRlRXN0aW1hdG9yOjpQZWVrUmF0ZSgpIGNvbnN0IHsKKyAgaWYgKFBlZWtCcHMo
KSkKKyAgICByZXR1cm4gRGF0YVJhdGU6OmJwcygqUGVla0JwcygpKTsKKyAgcmV0dXJuIGFic2w6
Om51bGxvcHQ7CiB9CiAKIHZvaWQgQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcjo6U2V0QWxy
RW5kZWRUaW1lTXMoCkBAIC02Miw3ICs5MSw3IEBAIHZvaWQgQWNrbm93bGVkZ2VkQml0cmF0ZUVz
dGltYXRvcjo6U2V0QWxyRW5kZWRUaW1lTXMoCiAKIHZvaWQgQWNrbm93bGVkZ2VkQml0cmF0ZUVz
dGltYXRvcjo6U2V0QWxsb2NhdGVkQml0cmF0ZVdpdGhvdXRGZWVkYmFjaygKICAgICB1aW50MzJf
dCBiaXRyYXRlX2JwcykgewotICBhbGxvY2F0ZWRfYml0cmF0ZV93aXRob3V0X2ZlZWRiYWNrX2Jw
c18uZW1wbGFjZShiaXRyYXRlX2Jwcyk7CisgIGFsbG9jYXRlZF9iaXRyYXRlX3dpdGhvdXRfZmVl
ZGJhY2tfYnBzXyA9IGJpdHJhdGVfYnBzOwogfQogCiB2b2lkIEFja25vd2xlZGdlZEJpdHJhdGVF
c3RpbWF0b3I6Ok1heWJlRXhwZWN0RmFzdFJhdGVDaGFuZ2UoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaAppbmRleCBj
Y2I5NzE4YjI1MDllNmFjNzgzZmU2OTM1NDczOTYzYWYyOTQyZWE3Li42NDVjMGI5MTNhN2UwNGU2
YjdhMGQ1MTYwMGI3MzM4OGU5ZDJhNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL2Fja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmgKQEAgLTE3LDYgKzE3LDgg
QEAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9iaXRyYXRlX2VzdGltYXRvci5oIgogCisjaW5j
bHVkZSAiYXBpL3VuaXRzL2RhdGFfcmF0ZS5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogc3Ry
dWN0IFBhY2tldEZlZWRiYWNrOwpAQCAtMzIsMTQgKzM0LDE4IEBAIGNsYXNzIEFja25vd2xlZGdl
ZEJpdHJhdGVFc3RpbWF0b3IgewogICB2b2lkIEluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3Io
CiAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4mIHBhY2tldF9mZWVkYmFj
a192ZWN0b3IpOwogICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gYml0cmF0ZV9icHMoKSBjb25z
dDsKKyAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IFBlZWtCcHMoKSBjb25zdDsKKyAgYWJzbDo6
b3B0aW9uYWw8RGF0YVJhdGU+IGJpdHJhdGUoKSBjb25zdDsKKyAgYWJzbDo6b3B0aW9uYWw8RGF0
YVJhdGU+IFBlZWtSYXRlKCkgY29uc3Q7CiAgIHZvaWQgU2V0QWxyRW5kZWRUaW1lTXMoaW50NjRf
dCBhbHJfZW5kZWRfdGltZV9tcyk7CiAgIHZvaWQgU2V0QWxsb2NhdGVkQml0cmF0ZVdpdGhvdXRG
ZWVkYmFjayh1aW50MzJfdCBiaXRyYXRlX2Jwcyk7CiAKICBwcml2YXRlOgogICB2b2lkIE1heWJl
RXhwZWN0RmFzdFJhdGVDaGFuZ2UoaW50NjRfdCBwYWNrZXRfYXJyaXZhbF90aW1lX21zKTsKKyAg
Y29uc3QgYm9vbCBhY2NvdW50X2Zvcl91bmFja25vd2xlZGdlZF90cmFmZmljXzsKICAgYWJzbDo6
b3B0aW9uYWw8aW50NjRfdD4gYWxyX2VuZGVkX3RpbWVfbXNfOwogICBzdGQ6OnVuaXF1ZV9wdHI8
Qml0cmF0ZUVzdGltYXRvcj4gYml0cmF0ZV9lc3RpbWF0b3JfOwotICBhYnNsOjpvcHRpb25hbDx1
aW50MzJfdD4gYWxsb2NhdGVkX2JpdHJhdGVfd2l0aG91dF9mZWVkYmFja19icHNfOworICB1aW50
MzJfdCBhbGxvY2F0ZWRfYml0cmF0ZV93aXRob3V0X2ZlZWRiYWNrX2Jwc18gPSAwOwogfTsKIAog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9hbHJfZGV0ZWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5j
YwppbmRleCBlZDhmM2E2NmY0MTI4YzhjNGJlZjgxYTRlZTc1NjQzODliY2RiZjdmLi5kYjY2OTQy
OGYwMjIxMjNjNTUxZjc3MDRmN2ZhNTRkNjhhNmQ0ZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2Nj
L2Fscl9kZXRlY3Rvci5jYwpAQCAtMTAsMjAgKzEwLDE3IEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5oIgogCi0jaW5jbHVk
ZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8Y3N0ZGlvPgotI2lu
Y2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCiAjaW5jbHVkZSAi
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmgiCiAjaW5j
bHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhw
ZXJpbWVudC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9j
b252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgotI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogQWxyRGV0ZWN0b3I6OkFsckRldGVjdG9yKCkgOiBBbHJEZXRlY3RvcihudWxscHRyKSB7
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvYWxyX2RldGVjdG9yLmgKaW5kZXggODc0MzU0YmM1ODBkOWYy
MGNlZDI4YzFmMWY4MGJmYWI2Yjk4NzM2Ni4uYzMwYmExZDA5MzJkMTdiNTFjZTNlYTgzY2ZiMjRk
ODQzZjg0ZjQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0
b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5oCkBAIC0xMSwx
MCArMTEsMTEgQEAKICNpZm5kZWYgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfR09PR19D
Q19BTFJfREVURUNUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJf
R09PR19DQ19BTFJfREVURUNUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUg
PHN0ZGludC5oPgorCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgotI2luY2x1ZGUg
ImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9k
dWxlcy9wYWNpbmcvaW50ZXJ2YWxfYnVkZ2V0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZV9z
dGF0aXN0aWNzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvYWxyX2RldGVjdG9yX3VuaXR0ZXN0LmNjCmluZGV4IDNhM2QwMDJjMjNiZTA4MWU1
MTFkMTJkMmRiZDdlZTAyNzE3N2Y4ZGYuLjQyNTI2ODUxNGQ4YjNhMzQ1MTBhOGM3ZmMzZjk1ZDM2
MDk0NTcwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWxyX2RldGVjdG9y
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWxyX2RldGVjdG9yX3Vu
aXR0ZXN0LmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5oIgogCisjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1l
bnQuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVz
dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9iaXRyYXRlX2VzdGltYXRv
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3IuY2MKaW5kZXgg
Yzc3NjgyNzgwMmM5ZWMwNTg3MDJiNjhkYjg5MGM1OWI3MDE0MTdiZi4uMGE0MDM5Mjc0MjlmYzlh
MjA3YjAzZmVmMDIxOTQ3NmRlMTIxMGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy9iaXRyYXRlX2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Jp
dHJhdGVfZXN0aW1hdG9yLmNjCkBAIC0xMCwxMSArMTAsMTEgQEAKIAogI2luY2x1ZGUgIm1vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3IuaCIKIAor
I2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8c3RyaW5nPgog
CiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9id2VfdGVz
dF9sb2dnaW5nLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNw
X2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIApAQCAtMTMyLDYgKzEzMiwxMiBA
QCBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gQml0cmF0ZUVzdGltYXRvcjo6Yml0cmF0ZV9icHMo
KSBjb25zdCB7CiAgIHJldHVybiBiaXRyYXRlX2VzdGltYXRlXyAqIDEwMDA7CiB9CiAKK2Fic2w6
Om9wdGlvbmFsPHVpbnQzMl90PiBCaXRyYXRlRXN0aW1hdG9yOjpQZWVrQnBzKCkgY29uc3Qgewor
ICBpZiAoY3VycmVudF93aW5kb3dfbXNfID4gMCkKKyAgICByZXR1cm4gc3VtXyAqIDgwMDAgLyBj
dXJyZW50X3dpbmRvd19tc187CisgIHJldHVybiBhYnNsOjpudWxsb3B0OworfQorCiB2b2lkIEJp
dHJhdGVFc3RpbWF0b3I6OkV4cGVjdEZhc3RSYXRlQ2hhbmdlKCkgewogICAvLyBCeSBzZXR0aW5n
IHRoZSBiaXRyYXRlLWVzdGltYXRlIHZhcmlhbmNlIHRvIGEgaGlnaGVyIHZhbHVlIHdlIGFsbG93
IHRoZQogICAvLyBiaXRyYXRlIHRvIGNoYW5nZSBmYXN0IGZvciB0aGUgbmV4dCBmZXcgc2FtcGxl
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3Iu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3IuaAppbmRleCA2MTBm
YTIxNGU3YTkwMGM5OTkyYjhjMjIxNTg1NjNkMjljMzk3OGMyLi5kM2RmMmI1MTA0NzJkMGE4MTUx
MWE4Yzc4MTljNGQ2ZTBlZjlkZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2Nj
L2JpdHJhdGVfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9iaXRyYXRl
X2VzdGltYXRvci5oCkBAIC0xMSw3ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQ09OR0VTVElP
Tl9DT05UUk9MTEVSX0dPT0dfQ0NfQklUUkFURV9FU1RJTUFUT1JfSF8KICNkZWZpbmUgTU9EVUxF
U19DT05HRVNUSU9OX0NPTlRST0xMRVJfR09PR19DQ19CSVRSQVRFX0VTVElNQVRPUl9IXwogCi0j
aW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPHN0ZGludC5oPgogCiAjaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgogCkBAIC0yOSw2ICsyOSw3IEBAIGNsYXNzIEJpdHJhdGVFc3RpbWF0
b3IgewogICB2aXJ0dWFsIHZvaWQgVXBkYXRlKGludDY0X3Qgbm93X21zLCBpbnQgYnl0ZXMpOwog
CiAgIHZpcnR1YWwgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGJpdHJhdGVfYnBzKCkgY29uc3Q7
CisgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBQZWVrQnBzKCkgY29uc3Q7CiAKICAgdmlydHVh
bCB2b2lkIEV4cGVjdEZhc3RSYXRlQ2hhbmdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxl
ci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xZTU5Y2I1YjRkZmUxMDIxNDRlMGU2YjM5OGU1MWVjZDY2YTYyOWMx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25nZXN0aW9uX3dp
bmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHN0cmluZz4KKwor
I2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlv
bl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKKyNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsK
KworLy8gV2hlbiBDb25nZXN0aW9uV2luZG93UHVzaGJhY2sgaXMgZW5hYmxlZCwgdGhlIHBhY2Vy
IGlzIG9ibGl2aW91cyB0bworLy8gdGhlIGNvbmdlc3Rpb24gd2luZG93LiBUaGUgcmVsYXRpb24g
YmV0d2VlbiBvdXRzdGFuZGluZyBkYXRhIGFuZAorLy8gdGhlIGNvbmdlc3Rpb24gd2luZG93IGFm
ZmVjdHMgZW5jb2RlciBhbGxvY2F0aW9ucyBkaXJlY3RseS4KKy8vIFRoaXMgZXhwZXJpbWVudCBp
cyBidWlsZCBvbiB0b3Agb2YgY29uZ2VzdGlvbiB3aW5kb3cgZXhwZXJpbWVudC4KK2NvbnN0IGNo
YXIga0Nvbmdlc3Rpb25QdXNoYmFja0V4cGVyaW1lbnRbXSA9ICJXZWJSVEMtQ29uZ2VzdGlvbldp
bmRvd1B1c2hiYWNrIjsKK2NvbnN0IHVpbnQzMl90IGtEZWZhdWx0TWluUHVzaGJhY2tUYXJnZXRC
aXRyYXRlQnBzID0gMzAwMDA7CisKK2Jvb2wgUmVhZENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0V4
cGVyaW1lbnRQYXJhbWV0ZXIoCisgICAgdWludDMyX3QqIG1pbl9wdXNoYmFja190YXJnZXRfYml0
cmF0ZV9icHMpIHsKKyAgUlRDX0RDSEVDSyhtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBz
KTsKKyAgc3RkOjpzdHJpbmcgZXhwZXJpbWVudF9zdHJpbmcgPQorICAgICAgd2VicnRjOjpmaWVs
ZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtDb25nZXN0aW9uUHVzaGJhY2tFeHBlcmltZW50KTsKKyAg
aW50IHBhcnNlZF92YWx1ZXMgPSBzc2NhbmYoZXhwZXJpbWVudF9zdHJpbmcuY19zdHIoKSwgIkVu
YWJsZWQtJSIgUFJJdTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fcHVzaGJh
Y2tfdGFyZ2V0X2JpdHJhdGVfYnBzKTsKKyAgaWYgKHBhcnNlZF92YWx1ZXMgPT0gMSkgeworICAg
IFJUQ19DSEVDS19HRSgqbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2JwcywgMCkKKyAgICAg
ICAgPDwgIk1pbiBwdXNoYmFjayB0YXJnZXQgYml0cmF0ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBv
ciBlcXVhbCB0byAwLiI7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgcmV0dXJuIGZhbHNlOwor
fQorCitDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyOjpDb25nZXN0aW9uV2luZG93
UHVzaGJhY2tDb250cm9sbGVyKCkgeworICBpZiAoIVJlYWRDb25nZXN0aW9uV2luZG93UHVzaGJh
Y2tFeHBlcmltZW50UGFyYW1ldGVyKAorICAgICAgICAgICZtaW5fcHVzaGJhY2tfdGFyZ2V0X2Jp
dHJhdGVfYnBzXykpIHsKKyAgICBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzXyA9IGtE
ZWZhdWx0TWluUHVzaGJhY2tUYXJnZXRCaXRyYXRlQnBzOworICB9Cit9CisKK0Nvbmdlc3Rpb25X
aW5kb3dQdXNoYmFja0NvbnRyb2xsZXI6OkNvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xs
ZXIoCisgICAgdWludDMyX3QgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2JwcykKKyAgICA6
IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfKG1pbl9wdXNoYmFja190YXJnZXRfYml0
cmF0ZV9icHMpIHt9CisKK3ZvaWQgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6
VXBkYXRlT3V0c3RhbmRpbmdEYXRhKAorICAgIHNpemVfdCBvdXRzdGFuZGluZ19ieXRlcykgewor
ICBvdXRzdGFuZGluZ19ieXRlc18gPSBvdXRzdGFuZGluZ19ieXRlczsKK30KKwordm9pZCBDb25n
ZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyOjpVcGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEo
CisgICAgc2l6ZV90IG1heF9vdXRzdGFuZGluZ19ieXRlcykgeworICBEYXRhU2l6ZSBkYXRhX3dp
bmRvdyA9IERhdGFTaXplOjpieXRlcyhtYXhfb3V0c3RhbmRpbmdfYnl0ZXMpOworICBpZiAoY3Vy
cmVudF9kYXRhX3dpbmRvd18pIHsKKyAgICBkYXRhX3dpbmRvdyA9IChkYXRhX3dpbmRvdyArIGN1
cnJlbnRfZGF0YV93aW5kb3dfLnZhbHVlKCkpIC8gMjsKKyAgfQorICBjdXJyZW50X2RhdGFfd2lu
ZG93XyA9IGRhdGFfd2luZG93OworfQorCit2b2lkIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0Nv
bnRyb2xsZXI6OlNldERhdGFXaW5kb3coRGF0YVNpemUgZGF0YV93aW5kb3cpIHsKKyAgY3VycmVu
dF9kYXRhX3dpbmRvd18gPSBkYXRhX3dpbmRvdzsKK30KKwordWludDMyX3QgQ29uZ2VzdGlvbldp
bmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6VXBkYXRlVGFyZ2V0Qml0cmF0ZSgKKyAgICB1aW50MzJf
dCBiaXRyYXRlX2JwcykgeworICBpZiAoIWN1cnJlbnRfZGF0YV93aW5kb3dfIHx8IGN1cnJlbnRf
ZGF0YV93aW5kb3dfLT5Jc1plcm8oKSkKKyAgICByZXR1cm4gYml0cmF0ZV9icHM7CisgIGRvdWJs
ZSBmaWxsX3JhdGlvID0KKyAgICAgIG91dHN0YW5kaW5nX2J5dGVzXyAvIHN0YXRpY19jYXN0PGRv
dWJsZT4oY3VycmVudF9kYXRhX3dpbmRvd18tPmJ5dGVzKCkpOworICBpZiAoZmlsbF9yYXRpbyA+
IDEuNSkgeworICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fICo9IDAuOTsKKyAgfSBlbHNlIGlmIChm
aWxsX3JhdGlvID4gMSkgeworICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fICo9IDAuOTU7CisgIH0g
ZWxzZSBpZiAoZmlsbF9yYXRpbyA8IDAuMSkgeworICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0g
MS4wOworICB9IGVsc2UgeworICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fICo9IDEuMDU7CisgICAg
ZW5jb2RpbmdfcmF0ZV9yYXRpb18gPSBzdGQ6Om1pbihlbmNvZGluZ19yYXRlX3JhdGlvXywgMS4w
KTsKKyAgfQorICB1aW50MzJfdCBhZGp1c3RlZF90YXJnZXRfYml0cmF0ZV9icHMgPQorICAgICAg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpdHJhdGVfYnBzICogZW5jb2RpbmdfcmF0ZV9yYXRpb18p
OworCisgIC8vIERvIG5vdCBhZGp1c3QgYmVsb3cgdGhlIG1pbmltdW0gcHVzaGJhY2sgYml0cmF0
ZSBidXQgZG8gb2JleSBpZiB0aGUKKyAgLy8gb3JpZ2luYWwgZXN0aW1hdGUgaXMgYmVsb3cgaXQu
CisgIGJpdHJhdGVfYnBzID0gYWRqdXN0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzIDwgbWluX3B1c2hi
YWNrX3RhcmdldF9iaXRyYXRlX2Jwc18KKyAgICAgICAgICAgICAgICAgICAgPyBzdGQ6Om1pbihi
aXRyYXRlX2JwcywgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc18pCisgICAgICAgICAg
ICAgICAgICAgIDogYWRqdXN0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzOworICByZXR1cm4gYml0cmF0
ZV9icHM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9s
bGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2VmMDk3NGNjZTM0NTk2MTFkOTBhNzRiMmFkNjk2OWNmZjdhYWYz
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93
aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX0dPT0df
Q0NfQ09OR0VTVElPTl9XSU5ET1dfUFVTSEJBQ0tfQ09OVFJPTExFUl9IXworI2RlZmluZSBNT0RV
TEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9HT09HX0NDX0NPTkdFU1RJT05fV0lORE9XX1BVU0hC
QUNLX0NPTlRST0xMRVJfSF8KKworI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya190eXBl
cy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gVGhpcyBjbGFzcyBlbmFibGVzIHB1c2hi
YWNrIGZyb20gY29uZ2VzdGlvbiB3aW5kb3cgZGlyZWN0bHkgdG8gdmlkZW8gZW5jb2Rlci4KKy8v
IFdoZW4gdGhlIGNvbmdlc3Rpb24gd2luZG93IGlzIGZpbGxpbmcgdXAsIHRoZSB2aWRlbyBlbmNv
ZGVyIHRhcmdldCBiaXRyYXRlCisvLyB3aWxsIGJlIHJlZHVjZWQgYWNjb3JkaW5nbHkgdG8gYWNj
b21tb2RhdGUgdGhlIG5ldHdvcmsgY2hhbmdlcy4gVG8gYXZvaWQKKy8vIHBhdXNpbmcgdmlkZW8g
dG9vIGZyZXF1ZW50bHksIGEgbWluaW11bSBlbmNvZGVyIHRhcmdldCBiaXRyYXRlIHRocmVzaG9s
ZCBpcworLy8gdXNlZCB0byBwcmV2ZW50IHZpZGVvIHBhdXNlIGR1ZSB0byBhIGZ1bGwgY29uZ2Vz
dGlvbiB3aW5kb3cuCitjbGFzcyBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyIHsK
KyBwdWJsaWM6CisgIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXIoKTsKKyAgZXhw
bGljaXQgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcigKKyAgICAgIHVpbnQzMl90
IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHMpOworICB2b2lkIFVwZGF0ZU91dHN0YW5k
aW5nRGF0YShzaXplX3Qgb3V0c3RhbmRpbmdfYnl0ZXMpOworICB2b2lkIFVwZGF0ZU1heE91dHN0
YW5kaW5nRGF0YShzaXplX3QgbWF4X291dHN0YW5kaW5nX2J5dGVzKTsKKyAgdWludDMyX3QgVXBk
YXRlVGFyZ2V0Qml0cmF0ZSh1aW50MzJfdCBiaXRyYXRlX2Jwcyk7CisgIHZvaWQgU2V0RGF0YVdp
bmRvdyhEYXRhU2l6ZSBkYXRhX3dpbmRvdyk7CisKKyBwcml2YXRlOgorICBhYnNsOjpvcHRpb25h
bDxEYXRhU2l6ZT4gY3VycmVudF9kYXRhX3dpbmRvd187CisgIHNpemVfdCBvdXRzdGFuZGluZ19i
eXRlc18gPSAwOworICB1aW50MzJfdCBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzXzsK
KyAgZG91YmxlIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gMS4wOworfTsKKworfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX0dP
T0dfQ0NfQ09OR0VTVElPTl9XSU5ET1dfUFVTSEJBQ0tfQ09OVFJPTExFUl9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250
cm9sbGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25nZXN0aW9uX3dp
bmRvd19wdXNoYmFja19jb250cm9sbGVyX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNjE3ZWVi
YjUyY2NlOTgzYjIwYjhlZDRmNzk4YjI1Yzg2NmM2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJf
dW5pdHRlc3QuY2MKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nvbmdlc3Rpb25f
d2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisj
aW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCit1c2luZyB0ZXN0aW5nOjpfOworCituYW1lc3BhY2Ug
d2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworY2xhc3MgQ29uZ2VzdGlvbldpbmRvd1B1c2hi
YWNrQ29udHJvbGxlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6
CisgIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXIgY3duZF9jb250cm9sbGVyXzsK
K307CisKK1RFU1RfRihDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyVGVzdCwgRnVs
bENvbmdlc3Rpb25XaW5kb3cpIHsKKyAgY3duZF9jb250cm9sbGVyXy5VcGRhdGVPdXRzdGFuZGlu
Z0RhdGEoMTAwMDAwKTsKKyAgY3duZF9jb250cm9sbGVyXy5VcGRhdGVNYXhPdXRzdGFuZGluZ0Rh
dGEoNTAwMDApOworCisgIHVpbnQzMl90IGJpdHJhdGVfYnBzID0gODAwMDA7CisgIGJpdHJhdGVf
YnBzID0gY3duZF9jb250cm9sbGVyXy5VcGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJhdGVfYnBzKTsK
KyAgRVhQRUNUX0VRKDcyMDAwdSwgYml0cmF0ZV9icHMpOworCisgIGN3bmRfY29udHJvbGxlcl8u
VXBkYXRlTWF4T3V0c3RhbmRpbmdEYXRhKDUwMDAwKTsKKyAgYml0cmF0ZV9icHMgPSBjd25kX2Nv
bnRyb2xsZXJfLlVwZGF0ZVRhcmdldEJpdHJhdGUoYml0cmF0ZV9icHMpOworICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KDcyMDAwICogMC45ICogMC45KSwgYml0cmF0ZV9icHMpOwor
fQorCitURVNUX0YoQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlclRlc3QsIE5vcm1h
bENvbmdlc3Rpb25XaW5kb3cpIHsKKyAgY3duZF9jb250cm9sbGVyXy5VcGRhdGVPdXRzdGFuZGlu
Z0RhdGEoMTAwMDAwKTsKKyAgY3duZF9jb250cm9sbGVyXy5TZXREYXRhV2luZG93KERhdGFTaXpl
OjpieXRlcygyMDAwMDApKTsKKworICB1aW50MzJfdCBiaXRyYXRlX2JwcyA9IDgwMDAwOworICBi
aXRyYXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRl
X2Jwcyk7CisgIEVYUEVDVF9FUSg4MDAwMHUsIGJpdHJhdGVfYnBzKTsKKworICBjd25kX2NvbnRy
b2xsZXJfLlVwZGF0ZU1heE91dHN0YW5kaW5nRGF0YSgyMDAwMCk7CisgIGJpdHJhdGVfYnBzID0g
Y3duZF9jb250cm9sbGVyXy5VcGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJhdGVfYnBzKTsKKyAgRVhQ
RUNUX0VRKDgwMDAwdSwgYml0cmF0ZV9icHMpOworfQorCitURVNUX0YoQ29uZ2VzdGlvbldpbmRv
d1B1c2hiYWNrQ29udHJvbGxlclRlc3QsIExvd0JpdHJhdGUpIHsKKyAgY3duZF9jb250cm9sbGVy
Xy5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoMTAwMDAwKTsKKyAgY3duZF9jb250cm9sbGVyXy5TZXRE
YXRhV2luZG93KERhdGFTaXplOjpieXRlcyg1MDAwMCkpOworCisgIHVpbnQzMl90IGJpdHJhdGVf
YnBzID0gMzUwMDA7CisgIGJpdHJhdGVfYnBzID0gY3duZF9jb250cm9sbGVyXy5VcGRhdGVUYXJn
ZXRCaXRyYXRlKGJpdHJhdGVfYnBzKTsKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHVpbnQzMl90
PigzNTAwMCAqIDAuOSksIGJpdHJhdGVfYnBzKTsKKworICBjd25kX2NvbnRyb2xsZXJfLlVwZGF0
ZU1heE91dHN0YW5kaW5nRGF0YSgyMDAwMCk7CisgIGJpdHJhdGVfYnBzID0gY3duZF9jb250cm9s
bGVyXy5VcGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJhdGVfYnBzKTsKKyAgRVhQRUNUX0VRKDMwMDAw
dSwgYml0cmF0ZV9icHMpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNl
ZF9id2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5jYwppbmRl
eCBjMjE5NjZjZjdmNTQ0NGRlODcxMjZhMmRjNjhlYWJiMzUwYTM0ZjExLi40ODk0Yzk4NjNiNjgz
NjExM2M1ZTEzYmJhYzM5ZDQ4OTJjZTcwOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Rl
bGF5X2Jhc2VkX2J3ZS5jYwpAQCAtMTEsMjYgKzExLDI1IEBACiAjaW5jbHVkZSAibW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2UuaCIKIAogI2luY2x1
ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2lu
Y2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJhYnNsL21lbW9y
eS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuaCIgIC8v
IEZvciBQYWNlZFBhY2tldEluZm8KKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudC5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X2J3ZV91cGRhdGVfZGVsYXlfYmFzZWQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0
Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvdHJlbmRsaW5lX2VzdGltYXRvci5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2Jp
dHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9id2VfdGVzdF9sb2dn
aW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL21ldHJpY3MuaCIKIAorbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2Ugewotc3Rh
dGljIGNvbnN0IGludDY0X3Qga1N0cmVhbVRpbWVPdXRNcyA9IDIwMDA7Citjb25zdGV4cHIgVGlt
ZURlbHRhIGtTdHJlYW1UaW1lT3V0ID0gVGltZURlbHRhOjpTZWNvbmRzPDI+KCk7CiBjb25zdGV4
cHIgaW50IGtUaW1lc3RhbXBHcm91cExlbmd0aE1zID0gNTsKIGNvbnN0ZXhwciBpbnQga0Fic1Nl
bmRUaW1lRnJhY3Rpb24gPSAxODsKIGNvbnN0ZXhwciBpbnQga0Fic1NlbmRUaW1lSW50ZXJBcnJp
dmFsVXBzaGlmdCA9IDg7CkBAIC02MywyNCArNjIsMjIgQEAgc2l6ZV90IFJlYWRUcmVuZGxpbmVG
aWx0ZXJXaW5kb3dTaXplKCkgewogICAgICAgcmV0dXJuIHdpbmRvd19zaXplOwogICAgIFJUQ19M
T0coV0FSTklORykgPDwgIldpbmRvdyBzaXplIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEuIjsKICAg
fQotICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcGFyc2UgcGFyYW1ldGVycyBm
b3IgQndlVHJlbmRsaW5lRmlsdGVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZXJp
bWVudCBmcm9tIGZpZWxkIHRyaWFsIHN0cmluZy4gVXNpbmcgZGVmYXVsdC4iOworICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcGFyc2UgcGFyYW1ldGVycyBmb3IgQndlV2luZG93
U2l6ZUluUGFja2V0cyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIGV4cGVyaW1lbnQgZnJv
bSBmaWVsZCB0cmlhbCBzdHJpbmcuIFVzaW5nIGRlZmF1bHQuIjsKICAgcmV0dXJuIGtEZWZhdWx0
VHJlbmRsaW5lV2luZG93U2l6ZTsKIH0KIH0gIC8vIG5hbWVzcGFjZQogCi1uYW1lc3BhY2Ugd2Vi
cnRjIHsKLQogRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0OjpSZXN1bHQoKQogICAgIDogdXBkYXRlZChm
YWxzZSksCiAgICAgICBwcm9iZShmYWxzZSksCi0gICAgICB0YXJnZXRfYml0cmF0ZV9icHMoMCks
CisgICAgICB0YXJnZXRfYml0cmF0ZShEYXRhUmF0ZTo6WmVybygpKSwKICAgICAgIHJlY292ZXJl
ZF9mcm9tX292ZXJ1c2UoZmFsc2UpIHt9CiAKLURlbGF5QmFzZWRCd2U6OlJlc3VsdDo6UmVzdWx0
KGJvb2wgcHJvYmUsIHVpbnQzMl90IHRhcmdldF9iaXRyYXRlX2JwcykKK0RlbGF5QmFzZWRCd2U6
OlJlc3VsdDo6UmVzdWx0KGJvb2wgcHJvYmUsIERhdGFSYXRlIHRhcmdldF9iaXRyYXRlKQogICAg
IDogdXBkYXRlZCh0cnVlKSwKICAgICAgIHByb2JlKHByb2JlKSwKLSAgICAgIHRhcmdldF9iaXRy
YXRlX2Jwcyh0YXJnZXRfYml0cmF0ZV9icHMpLAorICAgICAgdGFyZ2V0X2JpdHJhdGUodGFyZ2V0
X2JpdHJhdGUpLAogICAgICAgcmVjb3ZlcmVkX2Zyb21fb3ZlcnVzZShmYWxzZSkge30KIAogRGVs
YXlCYXNlZEJ3ZTo6UmVzdWx0Ojp+UmVzdWx0KCkge30KQEAgLTg5LDkgKzg2LDggQEAgRGVsYXlC
YXNlZEJ3ZTo6RGVsYXlCYXNlZEJ3ZShSdGNFdmVudExvZyogZXZlbnRfbG9nKQogICAgIDogZXZl
bnRfbG9nXyhldmVudF9sb2cpLAogICAgICAgaW50ZXJfYXJyaXZhbF8oKSwKICAgICAgIGRlbGF5
X2RldGVjdG9yXygpLAotICAgICAgbGFzdF9zZWVuX3BhY2tldF9tc18oLTEpLAorICAgICAgbGFz
dF9zZWVuX3BhY2tldF8oVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCkpLAogICAgICAgdW1hX3Jl
Y29yZGVkXyhmYWxzZSksCi0gICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8oZXZlbnRfbG9n
KSwKICAgICAgIHRyZW5kbGluZV93aW5kb3dfc2l6ZV8oCiAgICAgICAgICAgd2VicnRjOjpmaWVs
ZF90cmlhbDo6SXNFbmFibGVkKGtCd2VXaW5kb3dTaXplSW5QYWNrZXRzRXhwZXJpbWVudCkKICAg
ICAgICAgICAgICAgPyBSZWFkVHJlbmRsaW5lRmlsdGVyV2luZG93U2l6ZSgpCkBAIC05OSw3ICs5
NSw3IEBAIERlbGF5QmFzZWRCd2U6OkRlbGF5QmFzZWRCd2UoUnRjRXZlbnRMb2cqIGV2ZW50X2xv
ZykKICAgICAgIHRyZW5kbGluZV9zbW9vdGhpbmdfY29lZmZfKGtEZWZhdWx0VHJlbmRsaW5lU21v
b3RoaW5nQ29lZmYpLAogICAgICAgdHJlbmRsaW5lX3RocmVzaG9sZF9nYWluXyhrRGVmYXVsdFRy
ZW5kbGluZVRocmVzaG9sZEdhaW4pLAogICAgICAgY29uc2VjdXRpdmVfZGVsYXllZF9mZWVkYmFj
a3NfKDApLAotICAgICAgcHJldl9iaXRyYXRlXygwKSwKKyAgICAgIHByZXZfYml0cmF0ZV8oRGF0
YVJhdGU6Olplcm8oKSksCiAgICAgICBwcmV2X3N0YXRlXyhCYW5kd2lkdGhVc2FnZTo6a0J3Tm9y
bWFsKSB7CiAgIFJUQ19MT0coTFNfSU5GTykKICAgICAgIDw8ICJVc2luZyBUcmVuZGxpbmUgZmls
dGVyIGZvciBkZWxheSBjaGFuZ2UgZXN0aW1hdGlvbiB3aXRoIHdpbmRvdyBzaXplICIKQEAgLTEx
Myw4ICsxMDksOSBAQCBEZWxheUJhc2VkQndlOjp+RGVsYXlCYXNlZEJ3ZSgpIHt9CiAKIERlbGF5
QmFzZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndlOjpJbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVj
dG9yKAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiYgcGFja2V0X2ZlZWRi
YWNrX3ZlY3RvciwKLSAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gYWNrZWRfYml0cmF0ZV9i
cHMsCi0gICAgaW50NjRfdCBhdF90aW1lX21zKSB7CisgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJh
dGU+IGFja2VkX2JpdHJhdGUsCisgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IHByb2JlX2Jp
dHJhdGUsCisgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgUlRDX0RDSEVDSyhzdGQ6OmlzX3Nv
cnRlZChwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5lbmQoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYWNrZXRGZWVkYmFja0NvbXBhcmF0b3IoKSkpOwpAQCAtMTQxLDcgKzEzOCw3
IEBAIERlbGF5QmFzZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndlOjpJbmNvbWluZ1BhY2tldEZl
ZWRiYWNrVmVjdG9yKAogICAgIGlmIChwYWNrZXRfZmVlZGJhY2suc2VuZF90aW1lX21zIDwgMCkK
ICAgICAgIGNvbnRpbnVlOwogICAgIGRlbGF5ZWRfZmVlZGJhY2sgPSBmYWxzZTsKLSAgICBJbmNv
bWluZ1BhY2tldEZlZWRiYWNrKHBhY2tldF9mZWVkYmFjaywgYXRfdGltZV9tcyk7CisgICAgSW5j
b21pbmdQYWNrZXRGZWVkYmFjayhwYWNrZXRfZmVlZGJhY2ssIGF0X3RpbWUpOwogICAgIGlmIChw
cmV2X2RldGVjdG9yX3N0YXRlID09IEJhbmR3aWR0aFVzYWdlOjprQndVbmRlcnVzaW5nICYmCiAg
ICAgICAgIGRlbGF5X2RldGVjdG9yXy0+U3RhdGUoKSA9PSBCYW5kd2lkdGhVc2FnZTo6a0J3Tm9y
bWFsKSB7CiAgICAgICByZWNvdmVyZWRfZnJvbV9vdmVydXNlID0gdHJ1ZTsKQEAgLTE1MCw0MyAr
MTQ3LDUxIEBAIERlbGF5QmFzZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndlOjpJbmNvbWluZ1Bh
Y2tldEZlZWRiYWNrVmVjdG9yKAogICB9CiAKICAgaWYgKGRlbGF5ZWRfZmVlZGJhY2spIHsKLSAg
ICArK2NvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXzsKLSAgICBpZiAoY29uc2VjdXRpdmVf
ZGVsYXllZF9mZWVkYmFja3NfID49IGtNYXhDb25zZWN1dGl2ZUZhaWxlZExvb2t1cHMpIHsKLSAg
ICAgIGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXyA9IDA7Ci0gICAgICByZXR1cm4gT25M
b25nRmVlZGJhY2tEZWxheShwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLmJhY2soKS5hcnJpdmFsX3Rp
bWVfbXMpOwotICAgIH0KKyAgICBUaW1lc3RhbXAgYXJyaXZhbF90aW1lID0gVGltZXN0YW1wOjpQ
bHVzSW5maW5pdHkoKTsKKyAgICBpZiAocGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5iYWNrKCkuYXJy
aXZhbF90aW1lX21zID4gMCkKKyAgICAgIGFycml2YWxfdGltZSA9CisgICAgICAgICAgVGltZXN0
YW1wOjptcyhwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLmJhY2soKS5hcnJpdmFsX3RpbWVfbXMpOwor
ICAgIHJldHVybiBPbkRlbGF5ZWRGZWVkYmFjayhhcnJpdmFsX3RpbWUpOworCiAgIH0gZWxzZSB7
CiAgICAgY29uc2VjdXRpdmVfZGVsYXllZF9mZWVkYmFja3NfID0gMDsKLSAgICByZXR1cm4gTWF5
YmVVcGRhdGVFc3RpbWF0ZShhY2tlZF9iaXRyYXRlX2JwcywgcmVjb3ZlcmVkX2Zyb21fb3ZlcnVz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdF90aW1lX21zKTsKKyAgICByZXR1
cm4gTWF5YmVVcGRhdGVFc3RpbWF0ZShhY2tlZF9iaXRyYXRlLCBwcm9iZV9iaXRyYXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY292ZXJlZF9mcm9tX292ZXJ1c2UsIGF0X3Rp
bWUpOworICB9CisgIHJldHVybiBSZXN1bHQoKTsKK30KKworRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0
IERlbGF5QmFzZWRCd2U6Ok9uRGVsYXllZEZlZWRiYWNrKFRpbWVzdGFtcCByZWNlaXZlX3RpbWUp
IHsKKyAgKytjb25zZWN1dGl2ZV9kZWxheWVkX2ZlZWRiYWNrc187CisgIGlmIChjb25zZWN1dGl2
ZV9kZWxheWVkX2ZlZWRiYWNrc18gPj0ga01heENvbnNlY3V0aXZlRmFpbGVkTG9va3Vwcykgewor
ICAgIGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXyA9IDA7CisgICAgcmV0dXJuIE9uTG9u
Z0ZlZWRiYWNrRGVsYXkocmVjZWl2ZV90aW1lKTsKICAgfQogICByZXR1cm4gUmVzdWx0KCk7CiB9
CiAKIERlbGF5QmFzZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndlOjpPbkxvbmdGZWVkYmFja0Rl
bGF5KAotICAgIGludDY0X3QgYXJyaXZhbF90aW1lX21zKSB7CisgICAgVGltZXN0YW1wIGFycml2
YWxfdGltZSkgewogICAvLyBFc3RpbWF0ZSBzaG91bGQgYWx3YXlzIGJlIHZhbGlkIHNpbmNlIGEg
c3RhcnQgYml0cmF0ZSBhbHdheXMgaXMgc2V0IGluIHRoZQogICAvLyBDYWxsIGNvbnN0cnVjdG9y
LiBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0byByZXR1cm4gYW4gZW1wdHkgUmVzdWx0IGhlcmUs
CiAgIC8vIG9yIHRvIGVzdGltYXRlIHRoZSB0aHJvdWdocHV0IGJhc2VkIG9uIHRoZSBmZWVkYmFj
ayB3ZSByZWNlaXZlZC4KICAgUlRDX0RDSEVDSyhyYXRlX2NvbnRyb2xfLlZhbGlkRXN0aW1hdGUo
KSk7Ci0gIHJhdGVfY29udHJvbF8uU2V0RXN0aW1hdGUocmF0ZV9jb250cm9sXy5MYXRlc3RFc3Rp
bWF0ZSgpIC8gMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJpdmFsX3RpbWVfbXMp
OworICByYXRlX2NvbnRyb2xfLlNldEVzdGltYXRlKHJhdGVfY29udHJvbF8uTGF0ZXN0RXN0aW1h
dGUoKSAvIDIsIGFycml2YWxfdGltZSk7CiAgIFJlc3VsdCByZXN1bHQ7CiAgIHJlc3VsdC51cGRh
dGVkID0gdHJ1ZTsKICAgcmVzdWx0LnByb2JlID0gZmFsc2U7Ci0gIHJlc3VsdC50YXJnZXRfYml0
cmF0ZV9icHMgPSByYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7CisgIHJlc3VsdC50YXJn
ZXRfYml0cmF0ZSA9IHJhdGVfY29udHJvbF8uTGF0ZXN0RXN0aW1hdGUoKTsKICAgUlRDX0xPRyhM
U19XQVJOSU5HKSA8PCAiTG9uZyBmZWVkYmFjayBkZWxheSBkZXRlY3RlZCwgcmVkdWNpbmcgQldF
IHRvICIKLSAgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBz
OworICAgICAgICAgICAgICAgICAgICAgIDw8IFRvU3RyaW5nKHJlc3VsdC50YXJnZXRfYml0cmF0
ZSk7CiAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgRGVsYXlCYXNlZEJ3ZTo6SW5jb21pbmdQ
YWNrZXRGZWVkYmFjaygKICAgICBjb25zdCBQYWNrZXRGZWVkYmFjayYgcGFja2V0X2ZlZWRiYWNr
LAotICAgIGludDY0X3QgYXRfdGltZV9tcykgewotICBpbnQ2NF90IG5vd19tcyA9IGF0X3RpbWVf
bXM7CisgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgLy8gUmVzZXQgaWYgdGhlIHN0cmVhbSBo
YXMgdGltZWQgb3V0LgotICBpZiAobGFzdF9zZWVuX3BhY2tldF9tc18gPT0gLTEgfHwKLSAgICAg
IG5vd19tcyAtIGxhc3Rfc2Vlbl9wYWNrZXRfbXNfID4ga1N0cmVhbVRpbWVPdXRNcykgeworICBp
ZiAobGFzdF9zZWVuX3BhY2tldF8uSXNJbmZpbml0ZSgpIHx8CisgICAgICBhdF90aW1lIC0gbGFz
dF9zZWVuX3BhY2tldF8gPiBrU3RyZWFtVGltZU91dCkgewogICAgIGludGVyX2Fycml2YWxfLnJl
c2V0KAogICAgICAgICBuZXcgSW50ZXJBcnJpdmFsKChrVGltZXN0YW1wR3JvdXBMZW5ndGhNcyA8
PCBrSW50ZXJBcnJpdmFsU2hpZnQpIC8gMTAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICBr
VGltZXN0YW1wVG9NcywgdHJ1ZSkpOwpAQCAtMTk0LDcgKzE5OSw3IEBAIHZvaWQgRGVsYXlCYXNl
ZEJ3ZTo6SW5jb21pbmdQYWNrZXRGZWVkYmFjaygKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmVuZGxpbmVfc21vb3RoaW5nX2NvZWZmXywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVuZGxpbmVfdGhy
ZXNob2xkX2dhaW5fKSk7CiAgIH0KLSAgbGFzdF9zZWVuX3BhY2tldF9tc18gPSBub3dfbXM7Cisg
IGxhc3Rfc2Vlbl9wYWNrZXRfID0gYXRfdGltZTsKIAogICB1aW50MzJfdCBzZW5kX3RpbWVfMjRi
aXRzID0KICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PigKQEAgLTIxMSwxMTUgKzIxNiwxMDkg
QEAgdm9pZCBEZWxheUJhc2VkQndlOjpJbmNvbWluZ1BhY2tldEZlZWRiYWNrKAogICBpbnQ2NF90
IHRfZGVsdGEgPSAwOwogICBpbnQgc2l6ZV9kZWx0YSA9IDA7CiAgIGlmIChpbnRlcl9hcnJpdmFs
Xy0+Q29tcHV0ZURlbHRhcyh0aW1lc3RhbXAsIHBhY2tldF9mZWVkYmFjay5hcnJpdmFsX3RpbWVf
bXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3dfbXMsIHBhY2tldF9m
ZWVkYmFjay5wYXlsb2FkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdF90aW1lLm1zKCksIHBhY2tldF9mZWVkYmFjay5wYXlsb2FkX3NpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmdHNfZGVsdGEsICZ0X2RlbHRhLCAmc2l6ZV9kZWx0
YSkpIHsKICAgICBkb3VibGUgdHNfZGVsdGFfbXMgPSAoMTAwMC4wICogdHNfZGVsdGEpIC8gKDEg
PDwga0ludGVyQXJyaXZhbFNoaWZ0KTsKICAgICBkZWxheV9kZXRlY3Rvcl8tPlVwZGF0ZSh0X2Rl
bHRhLCB0c19kZWx0YV9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfZmVl
ZGJhY2suYXJyaXZhbF90aW1lX21zKTsKICAgfQotICBpZiAocGFja2V0X2ZlZWRiYWNrLnBhY2lu
Z19pbmZvLnByb2JlX2NsdXN0ZXJfaWQgIT0KLSAgICAgIFBhY2VkUGFja2V0SW5mbzo6a05vdEFQ
cm9iZSkgewotICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy5IYW5kbGVQcm9iZUFuZEVzdGlt
YXRlQml0cmF0ZShwYWNrZXRfZmVlZGJhY2spOwotICB9CiB9CiAKIERlbGF5QmFzZWRCd2U6OlJl
c3VsdCBEZWxheUJhc2VkQndlOjpNYXliZVVwZGF0ZUVzdGltYXRlKAotICAgIGFic2w6Om9wdGlv
bmFsPHVpbnQzMl90PiBhY2tlZF9iaXRyYXRlX2JwcywKKyAgICBhYnNsOjpvcHRpb25hbDxEYXRh
UmF0ZT4gYWNrZWRfYml0cmF0ZSwKKyAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gcHJvYmVf
Yml0cmF0ZSwKICAgICBib29sIHJlY292ZXJlZF9mcm9tX292ZXJ1c2UsCi0gICAgaW50NjRfdCBh
dF90aW1lX21zKSB7CisgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgUmVzdWx0IHJlc3VsdDsK
LSAgaW50NjRfdCBub3dfbXMgPSBhdF90aW1lX21zOwogCi0gIGFic2w6Om9wdGlvbmFsPGludD4g
cHJvYmVfYml0cmF0ZV9icHMgPQotICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfLkZldGNo
QW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZUJwcygpOwogICAvLyBDdXJyZW50bHkgb3ZlcnVz
aW5nIHRoZSBiYW5kd2lkdGguCiAgIGlmIChkZWxheV9kZXRlY3Rvcl8tPlN0YXRlKCkgPT0gQmFu
ZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZykgewotICAgIGlmIChhY2tlZF9iaXRyYXRlX2JwcyAm
JgotICAgICAgICByYXRlX2NvbnRyb2xfLlRpbWVUb1JlZHVjZUZ1cnRoZXIobm93X21zLCAqYWNr
ZWRfYml0cmF0ZV9icHMpKSB7CisgICAgaWYgKGFja2VkX2JpdHJhdGUgJiYKKyAgICAgICAgcmF0
ZV9jb250cm9sXy5UaW1lVG9SZWR1Y2VGdXJ0aGVyKGF0X3RpbWUsICphY2tlZF9iaXRyYXRlKSkg
ewogICAgICAgcmVzdWx0LnVwZGF0ZWQgPQotICAgICAgICAgIFVwZGF0ZUVzdGltYXRlKG5vd19t
cywgYWNrZWRfYml0cmF0ZV9icHMsICZyZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBzKTsKLSAgICB9
IGVsc2UgaWYgKCFhY2tlZF9iaXRyYXRlX2JwcyAmJiByYXRlX2NvbnRyb2xfLlZhbGlkRXN0aW1h
dGUoKSAmJgotICAgICAgICAgICAgICAgcmF0ZV9jb250cm9sXy5Jbml0aWFsVGltZVRvUmVkdWNl
RnVydGhlcihub3dfbXMpKSB7CisgICAgICAgICAgVXBkYXRlRXN0aW1hdGUoYXRfdGltZSwgYWNr
ZWRfYml0cmF0ZSwgJnJlc3VsdC50YXJnZXRfYml0cmF0ZSk7CisgICAgfSBlbHNlIGlmICghYWNr
ZWRfYml0cmF0ZSAmJiByYXRlX2NvbnRyb2xfLlZhbGlkRXN0aW1hdGUoKSAmJgorICAgICAgICAg
ICAgICAgcmF0ZV9jb250cm9sXy5Jbml0aWFsVGltZVRvUmVkdWNlRnVydGhlcihhdF90aW1lKSkg
ewogICAgICAgLy8gT3ZlcnVzaW5nIGJlZm9yZSB3ZSBoYXZlIGEgbWVhc3VyZWQgYWNrbm93bGVk
Z2VkIGJpdHJhdGUuIFJlZHVjZSBzZW5kCiAgICAgICAvLyByYXRlIGJ5IDUwJSBldmVyeSAyMDAg
bXMuCiAgICAgICAvLyBUT0RPKHRzY2h1bWltKTogSW1wcm92ZSB0aGlzIGFuZC9vciB0aGUgYWNr
bm93bGVkZ2VkIGJpdHJhdGUgZXN0aW1hdG9yCiAgICAgICAvLyBzbyB0aGF0IHdlIChhbG1vc3Qp
IGFsd2F5cyBoYXZlIGEgYml0cmF0ZSBlc3RpbWF0ZS4KLSAgICAgIHJhdGVfY29udHJvbF8uU2V0
RXN0aW1hdGUocmF0ZV9jb250cm9sXy5MYXRlc3RFc3RpbWF0ZSgpIC8gMiwgbm93X21zKTsKKyAg
ICAgIHJhdGVfY29udHJvbF8uU2V0RXN0aW1hdGUocmF0ZV9jb250cm9sXy5MYXRlc3RFc3RpbWF0
ZSgpIC8gMiwgYXRfdGltZSk7CiAgICAgICByZXN1bHQudXBkYXRlZCA9IHRydWU7CiAgICAgICBy
ZXN1bHQucHJvYmUgPSBmYWxzZTsKLSAgICAgIHJlc3VsdC50YXJnZXRfYml0cmF0ZV9icHMgPSBy
YXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7CisgICAgICByZXN1bHQudGFyZ2V0X2JpdHJh
dGUgPSByYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7CiAgICAgfQogICB9IGVsc2Ugewot
ICAgIGlmIChwcm9iZV9iaXRyYXRlX2JwcykgeworICAgIGlmIChwcm9iZV9iaXRyYXRlKSB7CiAg
ICAgICByZXN1bHQucHJvYmUgPSB0cnVlOwogICAgICAgcmVzdWx0LnVwZGF0ZWQgPSB0cnVlOwot
ICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlX2JwcyA9ICpwcm9iZV9iaXRyYXRlX2JwczsKLSAg
ICAgIHJhdGVfY29udHJvbF8uU2V0RXN0aW1hdGUoKnByb2JlX2JpdHJhdGVfYnBzLCBub3dfbXMp
OworICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlID0gKnByb2JlX2JpdHJhdGU7CisgICAgICBy
YXRlX2NvbnRyb2xfLlNldEVzdGltYXRlKCpwcm9iZV9iaXRyYXRlLCBhdF90aW1lKTsKICAgICB9
IGVsc2UgewogICAgICAgcmVzdWx0LnVwZGF0ZWQgPQotICAgICAgICAgIFVwZGF0ZUVzdGltYXRl
KG5vd19tcywgYWNrZWRfYml0cmF0ZV9icHMsICZyZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBzKTsK
KyAgICAgICAgICBVcGRhdGVFc3RpbWF0ZShhdF90aW1lLCBhY2tlZF9iaXRyYXRlLCAmcmVzdWx0
LnRhcmdldF9iaXRyYXRlKTsKICAgICAgIHJlc3VsdC5yZWNvdmVyZWRfZnJvbV9vdmVydXNlID0g
cmVjb3ZlcmVkX2Zyb21fb3ZlcnVzZTsKICAgICB9CiAgIH0KICAgQmFuZHdpZHRoVXNhZ2UgZGV0
ZWN0b3Jfc3RhdGUgPSBkZWxheV9kZXRlY3Rvcl8tPlN0YXRlKCk7Ci0gIGlmICgocmVzdWx0LnVw
ZGF0ZWQgJiYgcHJldl9iaXRyYXRlXyAhPSByZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBzKSB8fAor
ICBpZiAoKHJlc3VsdC51cGRhdGVkICYmIHByZXZfYml0cmF0ZV8gIT0gcmVzdWx0LnRhcmdldF9i
aXRyYXRlKSB8fAogICAgICAgZGV0ZWN0b3Jfc3RhdGUgIT0gcHJldl9zdGF0ZV8pIHsKLSAgICB1
aW50MzJfdCBiaXRyYXRlX2JwcyA9Ci0gICAgICAgIHJlc3VsdC51cGRhdGVkID8gcmVzdWx0LnRh
cmdldF9iaXRyYXRlX2JwcyA6IHByZXZfYml0cmF0ZV87CisgICAgRGF0YVJhdGUgYml0cmF0ZSA9
IHJlc3VsdC51cGRhdGVkID8gcmVzdWx0LnRhcmdldF9iaXRyYXRlIDogcHJldl9iaXRyYXRlXzsK
IAotICAgIEJXRV9URVNUX0xPR0dJTkdfUExPVCgxLCAidGFyZ2V0X2JpdHJhdGVfYnBzIiwgbm93
X21zLCBiaXRyYXRlX2Jwcyk7CisgICAgQldFX1RFU1RfTE9HR0lOR19QTE9UKDEsICJ0YXJnZXRf
Yml0cmF0ZV9icHMiLCBhdF90aW1lLm1zKCksIGJpdHJhdGUuYnBzKCkpOwogCiAgICAgaWYgKGV2
ZW50X2xvZ18pIHsKICAgICAgIGV2ZW50X2xvZ18tPkxvZyhhYnNsOjptYWtlX3VuaXF1ZTxSdGNF
dmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQ+KAotICAgICAgICAgIGJpdHJhdGVfYnBzLCBkZXRlY3Rv
cl9zdGF0ZSkpOworICAgICAgICAgIGJpdHJhdGUuYnBzKCksIGRldGVjdG9yX3N0YXRlKSk7CiAg
ICAgfQogCi0gICAgcHJldl9iaXRyYXRlXyA9IGJpdHJhdGVfYnBzOworICAgIHByZXZfYml0cmF0
ZV8gPSBiaXRyYXRlOwogICAgIHByZXZfc3RhdGVfID0gZGV0ZWN0b3Jfc3RhdGU7CiAgIH0KICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBEZWxheUJhc2VkQndlOjpVcGRhdGVFc3RpbWF0ZShp
bnQ2NF90IG5vd19tcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
b3B0aW9uYWw8dWludDMyX3Q+IGFja2VkX2JpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCogdGFyZ2V0X2JpdHJhdGVfYnBzKSB7Ci0gIGNvbnN0
IFJhdGVDb250cm9sSW5wdXQgaW5wdXQoZGVsYXlfZGV0ZWN0b3JfLT5TdGF0ZSgpLCBhY2tlZF9i
aXRyYXRlX2Jwcyk7Ci0gICp0YXJnZXRfYml0cmF0ZV9icHMgPSByYXRlX2NvbnRyb2xfLlVwZGF0
ZSgmaW5wdXQsIG5vd19tcyk7Citib29sIERlbGF5QmFzZWRCd2U6OlVwZGF0ZUVzdGltYXRlKFRp
bWVzdGFtcCBhdF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNs
OjpvcHRpb25hbDxEYXRhUmF0ZT4gYWNrZWRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGF0YVJhdGUqIHRhcmdldF9yYXRlKSB7CisgIGNvbnN0IFJhdGVDb250
cm9sSW5wdXQgaW5wdXQoZGVsYXlfZGV0ZWN0b3JfLT5TdGF0ZSgpLCBhY2tlZF9iaXRyYXRlKTsK
KyAgKnRhcmdldF9yYXRlID0gcmF0ZV9jb250cm9sXy5VcGRhdGUoJmlucHV0LCBhdF90aW1lKTsK
ICAgcmV0dXJuIHJhdGVfY29udHJvbF8uVmFsaWRFc3RpbWF0ZSgpOwogfQogCi12b2lkIERlbGF5
QmFzZWRCd2U6Ok9uUnR0VXBkYXRlKGludDY0X3QgYXZnX3J0dF9tcykgewotICByYXRlX2NvbnRy
b2xfLlNldFJ0dChhdmdfcnR0X21zKTsKK3ZvaWQgRGVsYXlCYXNlZEJ3ZTo6T25SdHRVcGRhdGUo
VGltZURlbHRhIGF2Z19ydHQpIHsKKyAgcmF0ZV9jb250cm9sXy5TZXRSdHQoYXZnX3J0dCk7CiB9
CiAKIGJvb2wgRGVsYXlCYXNlZEJ3ZTo6TGF0ZXN0RXN0aW1hdGUoc3RkOjp2ZWN0b3I8dWludDMy
X3Q+KiBzc3JjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qq
IGJpdHJhdGVfYnBzKSBjb25zdCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERhdGFSYXRlKiBiaXRyYXRlKSBjb25zdCB7CiAgIC8vIEN1cnJlbnRseSBhY2Nlc3NlZCBmcm9t
IGJvdGggdGhlIHByb2Nlc3MgdGhyZWFkIChzZWUKICAgLy8gTW9kdWxlUnRwUnRjcEltcGw6OlBy
b2Nlc3MoKSkgYW5kIHRoZSBjb25maWd1cmF0aW9uIHRocmVhZCAoc2VlCiAgIC8vIENhbGw6Okdl
dFN0YXRzKCkpLiBTaG91bGQgaW4gdGhlIGZ1dHVyZSBvbmx5IGJlIGFjY2Vzc2VkIGZyb20gYSBz
aW5nbGUKICAgLy8gdGhyZWFkLgogICBSVENfRENIRUNLKHNzcmNzKTsKLSAgUlRDX0RDSEVDSyhi
aXRyYXRlX2Jwcyk7CisgIFJUQ19EQ0hFQ0soYml0cmF0ZSk7CiAgIGlmICghcmF0ZV9jb250cm9s
Xy5WYWxpZEVzdGltYXRlKCkpCiAgICAgcmV0dXJuIGZhbHNlOwogCiAgICpzc3JjcyA9IHtrRml4
ZWRTc3JjfTsKLSAgKmJpdHJhdGVfYnBzID0gcmF0ZV9jb250cm9sXy5MYXRlc3RFc3RpbWF0ZSgp
OworICAqYml0cmF0ZSA9IHJhdGVfY29udHJvbF8uTGF0ZXN0RXN0aW1hdGUoKTsKICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgRGVsYXlCYXNlZEJ3ZTo6U2V0U3RhcnRCaXRyYXRlKGludCBzdGFy
dF9iaXRyYXRlX2JwcykgewotICBSVENfTE9HKExTX0lORk8pIDw8ICJCV0UgU2V0dGluZyBzdGFy
dCBiaXRyYXRlIHRvOiAiIDw8IHN0YXJ0X2JpdHJhdGVfYnBzOwotICByYXRlX2NvbnRyb2xfLlNl
dFN0YXJ0Qml0cmF0ZShzdGFydF9iaXRyYXRlX2Jwcyk7Cit2b2lkIERlbGF5QmFzZWRCd2U6OlNl
dFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZSBzdGFydF9iaXRyYXRlKSB7CisgIFJUQ19MT0coTFNfSU5G
TykgPDwgIkJXRSBTZXR0aW5nIHN0YXJ0IGJpdHJhdGUgdG86ICIKKyAgICAgICAgICAgICAgICAg
ICA8PCBUb1N0cmluZyhzdGFydF9iaXRyYXRlKTsKKyAgcmF0ZV9jb250cm9sXy5TZXRTdGFydEJp
dHJhdGUoc3RhcnRfYml0cmF0ZSk7CiB9CiAKLXZvaWQgRGVsYXlCYXNlZEJ3ZTo6U2V0TWluQml0
cmF0ZShpbnQgbWluX2JpdHJhdGVfYnBzKSB7Cit2b2lkIERlbGF5QmFzZWRCd2U6OlNldE1pbkJp
dHJhdGUoRGF0YVJhdGUgbWluX2JpdHJhdGUpIHsKICAgLy8gQ2FsbGVkIGZyb20gYm90aCB0aGUg
Y29uZmlndXJhdGlvbiB0aHJlYWQgYW5kIHRoZSBuZXR3b3JrIHRocmVhZC4gU2hvdWxkbid0CiAg
IC8vIGJlIGNhbGxlZCBmcm9tIHRoZSBuZXR3b3JrIHRocmVhZCBpbiB0aGUgZnV0dXJlLgotICBy
YXRlX2NvbnRyb2xfLlNldE1pbkJpdHJhdGUobWluX2JpdHJhdGVfYnBzKTsKKyAgcmF0ZV9jb250
cm9sXy5TZXRNaW5CaXRyYXRlKG1pbl9iaXRyYXRlKTsKIH0KIAotaW50NjRfdCBEZWxheUJhc2Vk
QndlOjpHZXRFeHBlY3RlZEJ3ZVBlcmlvZE1zKCkgY29uc3QgewotICByZXR1cm4gcmF0ZV9jb250
cm9sXy5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZE1zKCk7CitUaW1lRGVsdGEgRGVsYXlCYXNl
ZEJ3ZTo6R2V0RXhwZWN0ZWRCd2VQZXJpb2QoKSBjb25zdCB7CisgIHJldHVybiByYXRlX2NvbnRy
b2xfLkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCk7CiB9CiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2UuaAppbmRleCA0MjE2NGJh
YWQ0YWM3MWMyMGU5NzY4NDMyYzFhZGZmNmQ0NGRkYjQ3Li42MTZjNWIwODk2YmRmMmZlMDM0OTBi
NzQ4ZWEwY2UzNDE5ZThkYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Rl
bGF5X2Jhc2VkX2J3ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRf
YndlLmgKQEAgLTExLDE2ICsxMSwxOCBAQAogI2lmbmRlZiBNT0RVTEVTX0NPTkdFU1RJT05fQ09O
VFJPTExFUl9HT09HX0NDX0RFTEFZX0JBU0VEX0JXRV9IXwogI2RlZmluZSBNT0RVTEVTX0NPTkdF
U1RJT05fQ09OVFJPTExFUl9HT09HX0NDX0RFTEFZX0JBU0VEX0JXRV9IXwogCisjaW5jbHVkZSA8
c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1
ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9v
cHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2df
Y2MvZGVsYXlfaW5jcmVhc2VfZGV0ZWN0b3JfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9iaXRyYXRlX2VzdGltYXRvci5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9j
b250cm9sLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5j
bHVkZS9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3JlbW90
ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW50ZXJfYXJyaXZhbC5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9y
dHBfcnRjcF9kZWZpbmVzLmgiICAvLyBGb3IgUGFja2V0RmVlZGJhY2sKICNpbmNsdWRlICJydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmFjZV9jaGVja2Vy
LmgiCiAKQEAgLTMxLDExICszMywxMSBAQCBjbGFzcyBEZWxheUJhc2VkQndlIHsKICBwdWJsaWM6
CiAgIHN0cnVjdCBSZXN1bHQgewogICAgIFJlc3VsdCgpOwotICAgIFJlc3VsdChib29sIHByb2Jl
LCB1aW50MzJfdCB0YXJnZXRfYml0cmF0ZV9icHMpOworICAgIFJlc3VsdChib29sIHByb2JlLCBE
YXRhUmF0ZSB0YXJnZXRfYml0cmF0ZSk7CiAgICAgflJlc3VsdCgpOwogICAgIGJvb2wgdXBkYXRl
ZDsKICAgICBib29sIHByb2JlOwotICAgIHVpbnQzMl90IHRhcmdldF9iaXRyYXRlX2JwczsKKyAg
ICBEYXRhUmF0ZSB0YXJnZXRfYml0cmF0ZSA9IERhdGFSYXRlOjpaZXJvKCk7CiAgICAgYm9vbCBy
ZWNvdmVyZWRfZnJvbV9vdmVydXNlOwogICB9OwogCkBAIC00NCw0MiArNDYsNDMgQEAgY2xhc3Mg
RGVsYXlCYXNlZEJ3ZSB7CiAKICAgUmVzdWx0IEluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3Io
CiAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4mIHBhY2tldF9mZWVkYmFj
a192ZWN0b3IsCi0gICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gYWNrZWRfYml0cmF0ZV9i
cHMsCi0gICAgICBpbnQ2NF90IGF0X3RpbWVfbXMpOwotICB2b2lkIE9uUnR0VXBkYXRlKGludDY0
X3QgYXZnX3J0dF9tcyk7Ci0gIGJvb2wgTGF0ZXN0RXN0aW1hdGUoc3RkOjp2ZWN0b3I8dWludDMy
X3Q+KiBzc3JjcywKLSAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCogYml0cmF0ZV9icHMp
IGNvbnN0OwotICB2b2lkIFNldFN0YXJ0Qml0cmF0ZShpbnQgc3RhcnRfYml0cmF0ZV9icHMpOwot
ICB2b2lkIFNldE1pbkJpdHJhdGUoaW50IG1pbl9iaXRyYXRlX2Jwcyk7Ci0gIGludDY0X3QgR2V0
RXhwZWN0ZWRCd2VQZXJpb2RNcygpIGNvbnN0OworICAgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJh
dGU+IGFja2VkX2JpdHJhdGUsCisgICAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gcHJvYmVf
Yml0cmF0ZSwKKyAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgUmVzdWx0IE9uRGVsYXllZEZl
ZWRiYWNrKFRpbWVzdGFtcCByZWNlaXZlX3RpbWUpOworICB2b2lkIE9uUnR0VXBkYXRlKFRpbWVE
ZWx0YSBhdmdfcnR0KTsKKyAgYm9vbCBMYXRlc3RFc3RpbWF0ZShzdGQ6OnZlY3Rvcjx1aW50MzJf
dD4qIHNzcmNzLCBEYXRhUmF0ZSogYml0cmF0ZSkgY29uc3Q7CisgIHZvaWQgU2V0U3RhcnRCaXRy
YXRlKERhdGFSYXRlIHN0YXJ0X2JpdHJhdGUpOworICB2b2lkIFNldE1pbkJpdHJhdGUoRGF0YVJh
dGUgbWluX2JpdHJhdGUpOworICBUaW1lRGVsdGEgR2V0RXhwZWN0ZWRCd2VQZXJpb2QoKSBjb25z
dDsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyBHb29nQ2NTdGF0ZVByaW50ZXI7CiAgIHZv
aWQgSW5jb21pbmdQYWNrZXRGZWVkYmFjayhjb25zdCBQYWNrZXRGZWVkYmFjayYgcGFja2V0X2Zl
ZWRiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBhdF90aW1lX21z
KTsKLSAgUmVzdWx0IE9uTG9uZ0ZlZWRiYWNrRGVsYXkoaW50NjRfdCBhcnJpdmFsX3RpbWVfbXMp
OwotICBSZXN1bHQgTWF5YmVVcGRhdGVFc3RpbWF0ZShhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4g
YWNrZWRfYml0cmF0ZV9icHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3Rh
bXAgYXRfdGltZSk7CisgIFJlc3VsdCBPbkxvbmdGZWVkYmFja0RlbGF5KFRpbWVzdGFtcCBhcnJp
dmFsX3RpbWUpOworICBSZXN1bHQgTWF5YmVVcGRhdGVFc3RpbWF0ZShhYnNsOjpvcHRpb25hbDxE
YXRhUmF0ZT4gYWNrZWRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6b3B0aW9uYWw8RGF0YVJhdGU+IHByb2JlX2JpdHJhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgcmVxdWVzdF9wcm9iZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBhdF90aW1lX21zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlt
ZXN0YW1wIGF0X3RpbWUpOwogICAvLyBVcGRhdGVzIHRoZSBjdXJyZW50IHJlbW90ZSByYXRlIGVz
dGltYXRlIGFuZCByZXR1cm5zIHRydWUgaWYgYSB2YWxpZAogICAvLyBlc3RpbWF0ZSBleGlzdHMu
Ci0gIGJvb2wgVXBkYXRlRXN0aW1hdGUoaW50NjRfdCBub3dfbXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGFja2VkX2JpdHJhdGVfYnBzLAotICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90KiB0YXJnZXRfYml0cmF0ZV9icHMpOworICBib29sIFVw
ZGF0ZUVzdGltYXRlKFRpbWVzdGFtcCBub3csCisgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
b3B0aW9uYWw8RGF0YVJhdGU+IGFja2VkX2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
RGF0YVJhdGUqIHRhcmdldF9iaXRyYXRlKTsKIAogICBydGM6OlJhY2VDaGVja2VyIG5ldHdvcmtf
cmFjZV87CiAgIFJ0Y0V2ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOwogICBzdGQ6OnVuaXF1ZV9w
dHI8SW50ZXJBcnJpdmFsPiBpbnRlcl9hcnJpdmFsXzsKICAgc3RkOjp1bmlxdWVfcHRyPERlbGF5
SW5jcmVhc2VEZXRlY3RvckludGVyZmFjZT4gZGVsYXlfZGV0ZWN0b3JfOwotICBpbnQ2NF90IGxh
c3Rfc2Vlbl9wYWNrZXRfbXNfOworICBUaW1lc3RhbXAgbGFzdF9zZWVuX3BhY2tldF87CiAgIGJv
b2wgdW1hX3JlY29yZGVkXzsKICAgQWltZFJhdGVDb250cm9sIHJhdGVfY29udHJvbF87Ci0gIFBy
b2JlQml0cmF0ZUVzdGltYXRvciBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl87CiAgIHNpemVfdCB0
cmVuZGxpbmVfd2luZG93X3NpemVfOwogICBkb3VibGUgdHJlbmRsaW5lX3Ntb290aGluZ19jb2Vm
Zl87CiAgIGRvdWJsZSB0cmVuZGxpbmVfdGhyZXNob2xkX2dhaW5fOwogICBpbnQgY29uc2VjdXRp
dmVfZGVsYXllZF9mZWVkYmFja3NfOwotICB1aW50MzJfdCBwcmV2X2JpdHJhdGVfOworICBEYXRh
UmF0ZSBwcmV2X2JpdHJhdGVfOwogICBCYW5kd2lkdGhVc2FnZSBwcmV2X3N0YXRlXzsKIAogICBS
VENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKERlbGF5QmFzZWRCd2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2VfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdC5jYwppbmRl
eCBiMmFkZDNlNmU5NGE4ZjUwMjc4MDA3NmJjMzc3YzkyNjc3ZjEyM2M2Li43ZGUxMWIxNjg0MGYw
MGFmYWQ4ZTcwYWZkNTlmNzMyZTQwNzliMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdC5jYwpAQCAtMjUsMTMgKzI1LDEzIEBAIGNv
bnN0ZXhwciBpbnQga051bVByb2Jlc0NsdXN0ZXIxID0gODsKIGNvbnN0IFBhY2VkUGFja2V0SW5m
byBrUGFjaW5nSW5mbzAoMCwga051bVByb2Jlc0NsdXN0ZXIwLCAyMDAwKTsKIGNvbnN0IFBhY2Vk
UGFja2V0SW5mbyBrUGFjaW5nSW5mbzEoMSwga051bVByb2Jlc0NsdXN0ZXIxLCA0MDAwKTsKIGNv
bnN0ZXhwciBmbG9hdCBrVGFyZ2V0VXRpbGl6YXRpb25GcmFjdGlvbiA9IDAuOTVmOwotY29uc3Rl
eHByIGludDY0X3Qga0R1bW15VGltZXN0YW1wID0gMTAwMDsKK2NvbnN0ZXhwciBUaW1lc3RhbXAg
a0R1bW15VGltZXN0YW1wID0gVGltZXN0YW1wOjpTZWNvbmRzPDEwMDA+KCk7CiB9ICAvLyBuYW1l
c3BhY2UKIAogVEVTVF9GKERlbGF5QmFzZWRCd2VUZXN0LCBOb0NyYXNoRW1wdHlGZWVkYmFjaykg
ewogICBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gcGFja2V0X2ZlZWRiYWNrX3ZlY3RvcjsK
ICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5JbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAotICAg
ICAgcGFja2V0X2ZlZWRiYWNrX3ZlY3RvciwgYWJzbDo6bnVsbG9wdCwga0R1bW15VGltZXN0YW1w
KTsKKyAgICAgIHBhY2tldF9mZWVkYmFja192ZWN0b3IsIGFic2w6Om51bGxvcHQsIGFic2w6Om51
bGxvcHQsIGtEdW1teVRpbWVzdGFtcCk7CiB9CiAKIFRFU1RfRihEZWxheUJhc2VkQndlVGVzdCwg
Tm9DcmFzaE9ubHlMb3N0RmVlZGJhY2spIHsKQEAgLTQzLDcgKzQzLDcgQEAgVEVTVF9GKERlbGF5
QmFzZWRCd2VUZXN0LCBOb0NyYXNoT25seUxvc3RGZWVkYmFjaykgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrZXRGZWVkYmFjazo6a05vU2Vu
ZFRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEsIDE1MDAsIFBhY2VkUGFja2V0SW5mbygpKSk7CiAgIGJpdHJhdGVfZXN0aW1hdG9yXy0+SW5j
b21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKLSAgICAgIHBhY2tldF9mZWVkYmFja192ZWN0b3Is
IGFic2w6Om51bGxvcHQsIGtEdW1teVRpbWVzdGFtcCk7CisgICAgICBwYWNrZXRfZmVlZGJhY2tf
dmVjdG9yLCBhYnNsOjpudWxsb3B0LCBhYnNsOjpudWxsb3B0LCBrRHVtbXlUaW1lc3RhbXApOwog
fQogCiBURVNUX0YoRGVsYXlCYXNlZEJ3ZVRlc3QsIFByb2JlRGV0ZWN0aW9uKSB7CkBAIC0xNDQs
MTIgKzE0NCwxMiBAQCBURVNUX0YoRGVsYXlCYXNlZEJ3ZVRlc3QsIFByb2JlRGV0ZWN0aW9uU2xv
d2VyQXJyaXZhbEhpZ2hCaXRyYXRlKSB7CiB9CiAKIFRFU1RfRihEZWxheUJhc2VkQndlVGVzdCwg
R2V0RXhwZWN0ZWRCd2VQZXJpb2RNcykgewotICBpbnQ2NF90IGRlZmF1bHRfaW50ZXJ2YWxfbXMg
PSBiaXRyYXRlX2VzdGltYXRvcl8tPkdldEV4cGVjdGVkQndlUGVyaW9kTXMoKTsKLSAgRVhQRUNU
X0dUKGRlZmF1bHRfaW50ZXJ2YWxfbXMsIDApOworICBhdXRvIGRlZmF1bHRfaW50ZXJ2YWwgPSBi
aXRyYXRlX2VzdGltYXRvcl8tPkdldEV4cGVjdGVkQndlUGVyaW9kKCk7CisgIEVYUEVDVF9HVChk
ZWZhdWx0X2ludGVydmFsLm1zKCksIDApOwogICBDYXBhY2l0eURyb3BUZXN0SGVscGVyKDEsIHRy
dWUsIDMzMywgMCk7Ci0gIGludDY0X3QgaW50ZXJ2YWxfbXMgPSBiaXRyYXRlX2VzdGltYXRvcl8t
PkdldEV4cGVjdGVkQndlUGVyaW9kTXMoKTsKLSAgRVhQRUNUX0dUKGludGVydmFsX21zLCAwKTsK
LSAgRVhQRUNUX05FKGludGVydmFsX21zLCBkZWZhdWx0X2ludGVydmFsX21zKTsKKyAgYXV0byBp
bnRlcnZhbCA9IGJpdHJhdGVfZXN0aW1hdG9yXy0+R2V0RXhwZWN0ZWRCd2VQZXJpb2QoKTsKKyAg
RVhQRUNUX0dUKGludGVydmFsLm1zKCksIDApOworICBFWFBFQ1RfTkUoaW50ZXJ2YWwubXMoKSwg
ZGVmYXVsdF9pbnRlcnZhbC5tcygpKTsKIH0KIAogVEVTVF9GKERlbGF5QmFzZWRCd2VUZXN0LCBJ
bml0aWFsQmVoYXZpb3IpIHsKQEAgLTE5OSwyMCArMTk5LDIwIEBAIFRFU1RfRihEZWxheUJhc2Vk
QndlVGVzdCwgVGVzdExvbmdUaW1lb3V0QW5kV3JhcCkgewogfQogCiBURVNUX0YoRGVsYXlCYXNl
ZEJ3ZVRlc3QsIFRlc3RJbml0aWFsT3ZlcnVzZSkgewotICBjb25zdCB1aW50MzJfdCBrU3RhcnRC
aXRyYXRlID0gMzAwZTM7Ci0gIGNvbnN0IHVpbnQzMl90IGtJbml0aWFsQ2FwYWNpdHlCcHMgPSAy
MDBlMzsKKyAgY29uc3QgRGF0YVJhdGUga1N0YXJ0Qml0cmF0ZSA9IERhdGFSYXRlOjprYnBzKDMw
MCk7CisgIGNvbnN0IERhdGFSYXRlIGtJbml0aWFsQ2FwYWNpdHkgPSBEYXRhUmF0ZTo6a2Jwcygy
MDApOwogICBjb25zdCB1aW50MzJfdCBrRHVtbXlTc3JjID0gMDsKICAgLy8gSGlnaCBGUFMgdG8g
ZW5zdXJlIHRoYXQgd2Ugc2VuZCBhIGxvdCBvZiBwYWNrZXRzIGluIGEgc2hvcnQgdGltZS4KICAg
Y29uc3QgaW50IGtGcHMgPSA5MDsKIAotICBzdHJlYW1fZ2VuZXJhdG9yXy0+QWRkU3RyZWFtKG5l
dyB0ZXN0OjpSdHBTdHJlYW0oa0Zwcywga1N0YXJ0Qml0cmF0ZSkpOwotICBzdHJlYW1fZ2VuZXJh
dG9yXy0+c2V0X2NhcGFjaXR5X2JwcyhrSW5pdGlhbENhcGFjaXR5QnBzKTsKKyAgc3RyZWFtX2dl
bmVyYXRvcl8tPkFkZFN0cmVhbShuZXcgdGVzdDo6UnRwU3RyZWFtKGtGcHMsIGtTdGFydEJpdHJh
dGUuYnBzKCkpKTsKKyAgc3RyZWFtX2dlbmVyYXRvcl8tPnNldF9jYXBhY2l0eV9icHMoa0luaXRp
YWxDYXBhY2l0eS5icHMoKSk7CiAKICAgLy8gTmVlZGVkIHRvIGluaXRpYWxpemUgdGhlIEFpbWRS
YXRlQ29udHJvbC4KICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5TZXRTdGFydEJpdHJhdGUoa1N0YXJ0
Qml0cmF0ZSk7CiAKICAgLy8gUHJvZHVjZSAzMCBmcmFtZXMgKGluIDEvMyBzZWNvbmQpIGFuZCBn
aXZlIHRoZW0gdG8gdGhlIGVzdGltYXRvci4KLSAgdWludDMyX3QgYml0cmF0ZV9icHMgPSBrU3Rh
cnRCaXRyYXRlOworICBpbnQ2NF90IGJpdHJhdGVfYnBzID0ga1N0YXJ0Qml0cmF0ZS5icHMoKTsK
ICAgYm9vbCBzZWVuX292ZXJ1c2UgPSBmYWxzZTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzMDsg
KytpKSB7CiAgICAgYm9vbCBvdmVydXNlID0gR2VuZXJhdGVBbmRQcm9jZXNzRnJhbWUoa0R1bW15
U3NyYywgYml0cmF0ZV9icHMpOwpAQCAtMjIyLDcgKzIyMiw4IEBAIFRFU1RfRihEZWxheUJhc2Vk
QndlVGVzdCwgVGVzdEluaXRpYWxPdmVydXNlKSB7CiAgICAgRVhQRUNUX0ZBTFNFKGFja25vd2xl
ZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGVfYnBzKCkuaGFzX3ZhbHVlKCkpOwogICAg
IGlmIChvdmVydXNlKSB7CiAgICAgICBFWFBFQ1RfVFJVRShiaXRyYXRlX29ic2VydmVyXy51cGRh
dGVkKCkpOwotICAgICAgRVhQRUNUX05FQVIoYml0cmF0ZV9vYnNlcnZlcl8ubGF0ZXN0X2JpdHJh
dGUoKSwga1N0YXJ0Qml0cmF0ZSAvIDIsIDE1MDAwKTsKKyAgICAgIEVYUEVDVF9ORUFSKGJpdHJh
dGVfb2JzZXJ2ZXJfLmxhdGVzdF9iaXRyYXRlKCksIGtTdGFydEJpdHJhdGUuYnBzKCkgLyAyLAor
ICAgICAgICAgICAgICAgICAgMTUwMDApOwogICAgICAgYml0cmF0ZV9icHMgPSBiaXRyYXRlX29i
c2VydmVyXy5sYXRlc3RfYml0cmF0ZSgpOwogICAgICAgc2Vlbl9vdmVydXNlID0gdHJ1ZTsKICAg
ICAgIGJyZWFrOwpAQCAtMjMyLDcgKzIzMyw4IEBAIFRFU1RfRihEZWxheUJhc2VkQndlVGVzdCwg
VGVzdEluaXRpYWxPdmVydXNlKSB7CiAgICAgfQogICB9CiAgIEVYUEVDVF9UUlVFKHNlZW5fb3Zl
cnVzZSk7Ci0gIEVYUEVDVF9ORUFSKGJpdHJhdGVfb2JzZXJ2ZXJfLmxhdGVzdF9iaXRyYXRlKCks
IGtTdGFydEJpdHJhdGUgLyAyLCAxNTAwMCk7CisgIEVYUEVDVF9ORUFSKGJpdHJhdGVfb2JzZXJ2
ZXJfLmxhdGVzdF9iaXRyYXRlKCksIGtTdGFydEJpdHJhdGUuYnBzKCkgLyAyLAorICAgICAgICAg
ICAgICAxNTAwMCk7CiB9CiAKIGNsYXNzIERlbGF5QmFzZWRCd2VUZXN0V2l0aEJhY2tvZmZUaW1l
b3V0RXhwZXJpbWVudCA6IHB1YmxpYyBEZWxheUJhc2VkQndlVGVzdCB7CkBAIC0yNDMsMjAgKzI0
NSwyMCBAQCBjbGFzcyBEZWxheUJhc2VkQndlVGVzdFdpdGhCYWNrb2ZmVGltZW91dEV4cGVyaW1l
bnQgOiBwdWJsaWMgRGVsYXlCYXNlZEJ3ZVRlc3QgewogCiAvLyBUaGlzIHRlc3Qgc3Vic3VtZXMg
YW5kIGltcHJvdmVzIERlbGF5QmFzZWRCd2VUZXN0LlRlc3RJbml0aWFsT3ZlcnVzZSBhYm92ZS4K
IFRFU1RfRihEZWxheUJhc2VkQndlVGVzdFdpdGhCYWNrb2ZmVGltZW91dEV4cGVyaW1lbnQsIFRl
c3RJbml0aWFsT3ZlcnVzZSkgewotICBjb25zdCB1aW50MzJfdCBrU3RhcnRCaXRyYXRlID0gMzAw
ZTM7Ci0gIGNvbnN0IHVpbnQzMl90IGtJbml0aWFsQ2FwYWNpdHlCcHMgPSAyMDBlMzsKKyAgY29u
c3QgRGF0YVJhdGUga1N0YXJ0Qml0cmF0ZSA9IERhdGFSYXRlOjprYnBzKDMwMCk7CisgIGNvbnN0
IERhdGFSYXRlIGtJbml0aWFsQ2FwYWNpdHkgPSBEYXRhUmF0ZTo6a2JwcygyMDApOwogICBjb25z
dCB1aW50MzJfdCBrRHVtbXlTc3JjID0gMDsKICAgLy8gSGlnaCBGUFMgdG8gZW5zdXJlIHRoYXQg
d2Ugc2VuZCBhIGxvdCBvZiBwYWNrZXRzIGluIGEgc2hvcnQgdGltZS4KICAgY29uc3QgaW50IGtG
cHMgPSA5MDsKIAotICBzdHJlYW1fZ2VuZXJhdG9yXy0+QWRkU3RyZWFtKG5ldyB0ZXN0OjpSdHBT
dHJlYW0oa0Zwcywga1N0YXJ0Qml0cmF0ZSkpOwotICBzdHJlYW1fZ2VuZXJhdG9yXy0+c2V0X2Nh
cGFjaXR5X2JwcyhrSW5pdGlhbENhcGFjaXR5QnBzKTsKKyAgc3RyZWFtX2dlbmVyYXRvcl8tPkFk
ZFN0cmVhbShuZXcgdGVzdDo6UnRwU3RyZWFtKGtGcHMsIGtTdGFydEJpdHJhdGUuYnBzKCkpKTsK
KyAgc3RyZWFtX2dlbmVyYXRvcl8tPnNldF9jYXBhY2l0eV9icHMoa0luaXRpYWxDYXBhY2l0eS5i
cHMoKSk7CiAKICAgLy8gTmVlZGVkIHRvIGluaXRpYWxpemUgdGhlIEFpbWRSYXRlQ29udHJvbC4K
ICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5TZXRTdGFydEJpdHJhdGUoa1N0YXJ0Qml0cmF0ZSk7CiAK
ICAgLy8gUHJvZHVjZSAzMCBmcmFtZXMgKGluIDEvMyBzZWNvbmQpIGFuZCBnaXZlIHRoZW0gdG8g
dGhlIGVzdGltYXRvci4KLSAgdWludDMyX3QgYml0cmF0ZV9icHMgPSBrU3RhcnRCaXRyYXRlOwor
ICBpbnQ2NF90IGJpdHJhdGVfYnBzID0ga1N0YXJ0Qml0cmF0ZS5icHMoKTsKICAgYm9vbCBzZWVu
X292ZXJ1c2UgPSBmYWxzZTsKICAgZm9yIChpbnQgZnJhbWVzID0gMDsgZnJhbWVzIDwgMzAgJiYg
IXNlZW5fb3ZlcnVzZTsgKytmcmFtZXMpIHsKICAgICBib29sIG92ZXJ1c2UgPSBHZW5lcmF0ZUFu
ZFByb2Nlc3NGcmFtZShrRHVtbXlTc3JjLCBiaXRyYXRlX2Jwcyk7CkBAIC0yNjYsNyArMjY4LDgg
QEAgVEVTVF9GKERlbGF5QmFzZWRCd2VUZXN0V2l0aEJhY2tvZmZUaW1lb3V0RXhwZXJpbWVudCwg
VGVzdEluaXRpYWxPdmVydXNlKSB7CiAgICAgRVhQRUNUX0ZBTFNFKGFja25vd2xlZGdlZF9iaXRy
YXRlX2VzdGltYXRvcl8tPmJpdHJhdGVfYnBzKCkuaGFzX3ZhbHVlKCkpOwogICAgIGlmIChvdmVy
dXNlKSB7CiAgICAgICBFWFBFQ1RfVFJVRShiaXRyYXRlX29ic2VydmVyXy51cGRhdGVkKCkpOwot
ICAgICAgRVhQRUNUX05FQVIoYml0cmF0ZV9vYnNlcnZlcl8ubGF0ZXN0X2JpdHJhdGUoKSwga1N0
YXJ0Qml0cmF0ZSAvIDIsIDE1MDAwKTsKKyAgICAgIEVYUEVDVF9ORUFSKGJpdHJhdGVfb2JzZXJ2
ZXJfLmxhdGVzdF9iaXRyYXRlKCksIGtTdGFydEJpdHJhdGUuYnBzKCkgLyAyLAorICAgICAgICAg
ICAgICAgICAgMTUwMDApOwogICAgICAgYml0cmF0ZV9icHMgPSBiaXRyYXRlX29ic2VydmVyXy5s
YXRlc3RfYml0cmF0ZSgpOwogICAgICAgc2Vlbl9vdmVydXNlID0gdHJ1ZTsKICAgICB9IGVsc2Ug
aWYgKGJpdHJhdGVfb2JzZXJ2ZXJfLnVwZGF0ZWQoKSkgewpAQCAtMjgyLDggKzI4NSw4IEBAIFRF
U1RfRihEZWxheUJhc2VkQndlVGVzdFdpdGhCYWNrb2ZmVGltZW91dEV4cGVyaW1lbnQsIFRlc3RJ
bml0aWFsT3ZlcnVzZSkgewogICAgIEVYUEVDVF9GQUxTRShvdmVydXNlKTsKICAgICBpZiAoYml0
cmF0ZV9vYnNlcnZlcl8udXBkYXRlZCgpKSB7CiAgICAgICBiaXRyYXRlX2JwcyA9IGJpdHJhdGVf
b2JzZXJ2ZXJfLmxhdGVzdF9iaXRyYXRlKCk7Ci0gICAgICBFWFBFQ1RfR0UoYml0cmF0ZV9icHMs
IGtTdGFydEJpdHJhdGUgLyAyIC0gMTUwMDApOwotICAgICAgRVhQRUNUX0xFKGJpdHJhdGVfYnBz
LCBrSW5pdGlhbENhcGFjaXR5QnBzICsgMTUwMDApOworICAgICAgRVhQRUNUX0dFKGJpdHJhdGVf
YnBzLCBrU3RhcnRCaXRyYXRlLmJwcygpIC8gMiAtIDE1MDAwKTsKKyAgICAgIEVYUEVDVF9MRShi
aXRyYXRlX2Jwcywga0luaXRpYWxDYXBhY2l0eS5icHMoKSArIDE1MDAwKTsKICAgICAgIGJpdHJh
dGVfb2JzZXJ2ZXJfLlJlc2V0KCk7CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdF9oZWxwZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91bml0dGVzdF9oZWxwZXIuY2MKaW5kZXgg
MmEwMDgwMWViMWM2Y2Q2ODY0MzI0NzlhNzI5ODdjNGViYTM1MTgxMi4uNDcyODhlNWZiYzY0ZmNh
ZDNhOTI0YTIyNzY5OTRjZjYwNDAwNTAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy9kZWxheV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlX3VuaXR0ZXN0X2hlbHBlci5jYwpAQCAtMTU0LDYg
KzE1NCw3IEBAIERlbGF5QmFzZWRCd2VUZXN0OjpEZWxheUJhc2VkQndlVGVzdCgpCiAgICAgICBj
bG9ja18oMTAwMDAwMDAwKSwKICAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8o
CiAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRv
cj4oKSksCisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8obmV3IFByb2JlQml0cmF0ZUVz
dGltYXRvcihudWxscHRyKSksCiAgICAgICBiaXRyYXRlX2VzdGltYXRvcl8obmV3IERlbGF5QmFz
ZWRCd2UobnVsbHB0cikpLAogICAgICAgc3RyZWFtX2dlbmVyYXRvcl8obmV3IHRlc3Q6OlN0cmVh
bUdlbmVyYXRvcigxZTYsICAvLyBDYXBhY2l0eS4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25kcygpKSksCkBA
IC0xNjYsNiArMTY3LDcgQEAgRGVsYXlCYXNlZEJ3ZVRlc3Q6OkRlbGF5QmFzZWRCd2VUZXN0KGNv
bnN0IHN0ZDo6c3RyaW5nJiBmaWVsZF90cmlhbF9zdHJpbmcpCiAgICAgICBjbG9ja18oMTAwMDAw
MDAwKSwKICAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8oCiAgICAgICAgICAg
YWJzbDo6bWFrZV91bmlxdWU8QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcj4oKSksCisgICAg
ICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8obmV3IFByb2JlQml0cmF0ZUVzdGltYXRvcihudWxs
cHRyKSksCiAgICAgICBiaXRyYXRlX2VzdGltYXRvcl8obmV3IERlbGF5QmFzZWRCd2UobnVsbHB0
cikpLAogICAgICAgc3RyZWFtX2dlbmVyYXRvcl8obmV3IHRlc3Q6OlN0cmVhbUdlbmVyYXRvcigx
ZTYsICAvLyBDYXBhY2l0eS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25kcygpKSksCkBAIC0xOTgsMTUgKzIw
MCwyMCBAQCB2b2lkIERlbGF5QmFzZWRCd2VUZXN0OjpJbmNvbWluZ0ZlZWRiYWNrKGludDY0X3Qg
YXJyaXZhbF90aW1lX21zLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVy
LCBwYXlsb2FkX3NpemUsIHBhY2luZ19pbmZvKTsKICAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJh
Y2s+IHBhY2tldHM7CiAgIHBhY2tldHMucHVzaF9iYWNrKHBhY2tldCk7CisgIGlmIChwYWNrZXQu
c2VuZF90aW1lX21zICE9IFBhY2tldEZlZWRiYWNrOjprTm9TZW5kVGltZSAmJgorICAgICAgcGFj
a2V0LnBhY2luZ19pbmZvLnByb2JlX2NsdXN0ZXJfaWQgIT0gUGFjZWRQYWNrZXRJbmZvOjprTm90
QVByb2JlKQorICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy0+SGFuZGxlUHJvYmVBbmRFc3Rp
bWF0ZUJpdHJhdGUocGFja2V0KTsKKwogICBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3Jf
LT5JbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKHBhY2tldHMpOwogICBEZWxheUJhc2VkQndl
OjpSZXN1bHQgcmVzdWx0ID0KICAgICAgIGJpdHJhdGVfZXN0aW1hdG9yXy0+SW5jb21pbmdQYWNr
ZXRGZWVkYmFja1ZlY3RvcigKLSAgICAgICAgICBwYWNrZXRzLCBhY2tub3dsZWRnZWRfYml0cmF0
ZV9lc3RpbWF0b3JfLT5iaXRyYXRlX2JwcygpLAotICAgICAgICAgIGNsb2NrXy5UaW1lSW5NaWxs
aXNlY29uZHMoKSk7CisgICAgICAgICAgcGFja2V0cywgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0
aW1hdG9yXy0+Yml0cmF0ZSgpLAorICAgICAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy0+
RmV0Y2hBbmRSZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRlKCksCisgICAgICAgICAgVGltZXN0YW1w
OjptcyhjbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpKTsKICAgY29uc3QgdWludDMyX3Qga0R1
bW15U3NyYyA9IDA7CiAgIGlmIChyZXN1bHQudXBkYXRlZCkgewogICAgIGJpdHJhdGVfb2JzZXJ2
ZXJfLk9uUmVjZWl2ZUJpdHJhdGVDaGFuZ2VkKHtrRHVtbXlTc3JjfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBz
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQu
dGFyZ2V0X2JpdHJhdGUuYnBzKCkpOwogICB9CiB9CiAKQEAgLTIzMiwxOCArMjM5LDIzIEBAIGJv
b2wgRGVsYXlCYXNlZEJ3ZVRlc3Q6OkdlbmVyYXRlQW5kUHJvY2Vzc0ZyYW1lKHVpbnQzMl90IHNz
cmMsCiAgIGZvciAoYXV0byYgcGFja2V0IDogcGFja2V0cykgewogICAgIFJUQ19DSEVDS19HRShw
YWNrZXQuYXJyaXZhbF90aW1lX21zICsgYXJyaXZhbF90aW1lX29mZnNldF9tc18sIDApOwogICAg
IHBhY2tldC5hcnJpdmFsX3RpbWVfbXMgKz0gYXJyaXZhbF90aW1lX29mZnNldF9tc187CisKKyAg
ICBpZiAocGFja2V0LnNlbmRfdGltZV9tcyAhPSBQYWNrZXRGZWVkYmFjazo6a05vU2VuZFRpbWUg
JiYKKyAgICAgICAgcGFja2V0LnBhY2luZ19pbmZvLnByb2JlX2NsdXN0ZXJfaWQgIT0gUGFjZWRQ
YWNrZXRJbmZvOjprTm90QVByb2JlKQorICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfLT5I
YW5kbGVQcm9iZUFuZEVzdGltYXRlQml0cmF0ZShwYWNrZXQpOwogICB9CiAKICAgYWNrbm93bGVk
Z2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcihwYWNr
ZXRzKTsKICAgRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0IHJlc3VsdCA9CiAgICAgICBiaXRyYXRlX2Vz
dGltYXRvcl8tPkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoCi0gICAgICAgICAgcGFja2V0
cywgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+Yml0cmF0ZV9icHMoKSwKLSAgICAg
ICAgICBjbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOworICAgICAgICAgIHBhY2tldHMsIGFj
a25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGUoKSwKKyAgICAgICAgICBwcm9i
ZV9iaXRyYXRlX2VzdGltYXRvcl8tPkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZSgp
LAorICAgICAgICAgIFRpbWVzdGFtcDo6bXMoY2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpKSk7
CiAgIGNvbnN0IHVpbnQzMl90IGtEdW1teVNzcmMgPSAwOwogICBpZiAocmVzdWx0LnVwZGF0ZWQp
IHsKICAgICBiaXRyYXRlX29ic2VydmVyXy5PblJlY2VpdmVCaXRyYXRlQ2hhbmdlZCh7a0R1bW15
U3NyY30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LnRhcmdldF9iaXRyYXRlX2Jwcyk7Ci0gICAgaWYgKCFmaXJzdF91cGRhdGVfICYmIHJlc3Vs
dC50YXJnZXRfYml0cmF0ZV9icHMgPCBiaXRyYXRlX2JwcykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudGFyZ2V0X2JpdHJhdGUuYnBzKCkpOwor
ICAgIGlmICghZmlyc3RfdXBkYXRlXyAmJiByZXN1bHQudGFyZ2V0X2JpdHJhdGUuYnBzKCkgPCBi
aXRyYXRlX2JwcykKICAgICAgIG92ZXJ1c2UgPSB0cnVlOwogICAgIGZpcnN0X3VwZGF0ZV8gPSBm
YWxzZTsKICAgfQpAQCAtMjg5LDE0ICszMDEsMTQgQEAgdm9pZCBEZWxheUJhc2VkQndlVGVzdDo6
SW5pdGlhbEJlaGF2aW9yVGVzdEhlbHBlcigKICAgY29uc3QgaW50IGtGcmFtZXJhdGUgPSA1MDsg
IC8vIDUwIGZwcyB0byBhdm9pZCByb3VuZGluZyBlcnJvcnMuCiAgIGNvbnN0IGludCBrRnJhbWVJ
bnRlcnZhbE1zID0gMTAwMCAvIGtGcmFtZXJhdGU7CiAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyBr
UGFjaW5nSW5mbygwLCA1LCA1MDAwKTsKLSAgdWludDMyX3QgYml0cmF0ZV9icHMgPSAwOworICBE
YXRhUmF0ZSBiaXRyYXRlID0gRGF0YVJhdGU6Olplcm8oKTsKICAgaW50NjRfdCBzZW5kX3RpbWVf
bXMgPSAwOwogICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIgPSAwOwogICBzdGQ6OnZlY3Rvcjx1
aW50MzJfdD4gc3NyY3M7Ci0gIEVYUEVDVF9GQUxTRShiaXRyYXRlX2VzdGltYXRvcl8tPkxhdGVz
dEVzdGltYXRlKCZzc3JjcywgJmJpdHJhdGVfYnBzKSk7CisgIEVYUEVDVF9GQUxTRShiaXRyYXRl
X2VzdGltYXRvcl8tPkxhdGVzdEVzdGltYXRlKCZzc3JjcywgJmJpdHJhdGUpKTsKICAgRVhQRUNU
X0VRKDB1LCBzc3Jjcy5zaXplKCkpOwogICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMo
MTAwMCk7Ci0gIEVYUEVDVF9GQUxTRShiaXRyYXRlX2VzdGltYXRvcl8tPkxhdGVzdEVzdGltYXRl
KCZzc3JjcywgJmJpdHJhdGVfYnBzKSk7CisgIEVYUEVDVF9GQUxTRShiaXRyYXRlX2VzdGltYXRv
cl8tPkxhdGVzdEVzdGltYXRlKCZzc3JjcywgJmJpdHJhdGUpKTsKICAgRVhQRUNUX0ZBTFNFKGJp
dHJhdGVfb2JzZXJ2ZXJfLnVwZGF0ZWQoKSk7CiAgIGJpdHJhdGVfb2JzZXJ2ZXJfLlJlc2V0KCk7
CiAgIGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKQEAgLTMwOCw3ICszMjAs
NyBAQCB2b2lkIERlbGF5QmFzZWRCd2VUZXN0OjpJbml0aWFsQmVoYXZpb3JUZXN0SGVscGVyKAog
ICAgICAgICBpIDwga0luaXRpYWxQcm9iaW5nUGFja2V0cyA/IGtQYWNpbmdJbmZvIDogUGFjZWRQ
YWNrZXRJbmZvKCk7CiAKICAgICBpZiAoaSA9PSBrTnVtSW5pdGlhbFBhY2tldHMpIHsKLSAgICAg
IEVYUEVDVF9GQUxTRShiaXRyYXRlX2VzdGltYXRvcl8tPkxhdGVzdEVzdGltYXRlKCZzc3Jjcywg
JmJpdHJhdGVfYnBzKSk7CisgICAgICBFWFBFQ1RfRkFMU0UoYml0cmF0ZV9lc3RpbWF0b3JfLT5M
YXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlKSk7CiAgICAgICBFWFBFQ1RfRVEoMHUsIHNz
cmNzLnNpemUoKSk7CiAgICAgICBFWFBFQ1RfRkFMU0UoYml0cmF0ZV9vYnNlcnZlcl8udXBkYXRl
ZCgpKTsKICAgICAgIGJpdHJhdGVfb2JzZXJ2ZXJfLlJlc2V0KCk7CkBAIC0zMTgsMTMgKzMzMCwx
NCBAQCB2b2lkIERlbGF5QmFzZWRCd2VUZXN0OjpJbml0aWFsQmVoYXZpb3JUZXN0SGVscGVyKAog
ICAgIGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwIC8ga0ZyYW1lcmF0ZSk7CiAg
ICAgc2VuZF90aW1lX21zICs9IGtGcmFtZUludGVydmFsTXM7CiAgIH0KLSAgRVhQRUNUX1RSVUUo
Yml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlX2Jwcykp
OworICBFWFBFQ1RfVFJVRShiaXRyYXRlX2VzdGltYXRvcl8tPkxhdGVzdEVzdGltYXRlKCZzc3Jj
cywgJmJpdHJhdGUpKTsKICAgQVNTRVJUX0VRKDF1LCBzc3Jjcy5zaXplKCkpOwogICBFWFBFQ1Rf
RVEoa0RlZmF1bHRTc3JjLCBzc3Jjcy5mcm9udCgpKTsKLSAgRVhQRUNUX05FQVIoZXhwZWN0ZWRf
Y29udmVyZ2VfYml0cmF0ZSwgYml0cmF0ZV9icHMsIGtBY2NlcHRlZEJpdHJhdGVFcnJvckJwcyk7
CisgIEVYUEVDVF9ORUFSKGV4cGVjdGVkX2NvbnZlcmdlX2JpdHJhdGUsIGJpdHJhdGUuYnBzKCks
CisgICAgICAgICAgICAgIGtBY2NlcHRlZEJpdHJhdGVFcnJvckJwcyk7CiAgIEVYUEVDVF9UUlVF
KGJpdHJhdGVfb2JzZXJ2ZXJfLnVwZGF0ZWQoKSk7CiAgIGJpdHJhdGVfb2JzZXJ2ZXJfLlJlc2V0
KCk7Ci0gIEVYUEVDVF9FUShiaXRyYXRlX29ic2VydmVyXy5sYXRlc3RfYml0cmF0ZSgpLCBiaXRy
YXRlX2Jwcyk7CisgIEVYUEVDVF9FUShiaXRyYXRlX29ic2VydmVyXy5sYXRlc3RfYml0cmF0ZSgp
LCBiaXRyYXRlLmJwcygpKTsKIH0KIAogdm9pZCBEZWxheUJhc2VkQndlVGVzdDo6UmF0ZUluY3Jl
YXNlUmVvcmRlcmluZ1Rlc3RIZWxwZXIoCkBAIC01MDksNyArNTIyLDcgQEAgdm9pZCBEZWxheUJh
c2VkQndlVGVzdDo6VGVzdFdyYXBwaW5nSGVscGVyKGludCBzaWxlbmNlX3RpbWVfcykgewogICAg
IGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrRnJhbWVJbnRlcnZhbE1zKTsKICAgICBz
ZW5kX3RpbWVfbXMgKz0ga0ZyYW1lSW50ZXJ2YWxNczsKICAgfQotICB1aW50MzJfdCBiaXRyYXRl
X2JlZm9yZSA9IDA7CisgIERhdGFSYXRlIGJpdHJhdGVfYmVmb3JlID0gRGF0YVJhdGU6Olplcm8o
KTsKICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHNzcmNzOwogICBiaXRyYXRlX2VzdGltYXRvcl8t
PkxhdGVzdEVzdGltYXRlKCZzc3JjcywgJmJpdHJhdGVfYmVmb3JlKTsKIApAQCAtNTIyLDcgKzUz
NSw3IEBAIHZvaWQgRGVsYXlCYXNlZEJ3ZVRlc3Q6OlRlc3RXcmFwcGluZ0hlbHBlcihpbnQgc2ls
ZW5jZV90aW1lX3MpIHsKICAgICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMiAqIGtG
cmFtZUludGVydmFsTXMpOwogICAgIHNlbmRfdGltZV9tcyArPSBrRnJhbWVJbnRlcnZhbE1zOwog
ICB9Ci0gIHVpbnQzMl90IGJpdHJhdGVfYWZ0ZXIgPSAwOworICBEYXRhUmF0ZSBiaXRyYXRlX2Fm
dGVyID0gRGF0YVJhdGU6Olplcm8oKTsKICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3Rp
bWF0ZSgmc3NyY3MsICZiaXRyYXRlX2FmdGVyKTsKICAgRVhQRUNUX0xUKGJpdHJhdGVfYWZ0ZXIs
IGJpdHJhdGVfYmVmb3JlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2Mv
ZGVsYXlfYmFzZWRfYndlX3VuaXR0ZXN0X2hlbHBlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9kZWxheV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmgKaW5kZXggN2JhMThjMzY3NTI3YmI3
MjYzNTRlNGM3NDEyNDQzZTRlZDQwNjZiMS4uNDQ0ZTBjZDY3ZGY0ZmI0Njg1ZTMzOWZjNTMyOGE1
MWYyODU4NTE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNl
ZF9id2VfdW5pdHRlc3RfaGVscGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxh
eV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmgKQEAgLTE3Miw2ICsxNzIsNyBAQCBjbGFzcyBE
ZWxheUJhc2VkQndlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICBTaW11bGF0ZWRD
bG9jayBjbG9ja187ICAvLyBUaW1lIGF0IHRoZSByZWNlaXZlci4KICAgdGVzdDo6VGVzdEJpdHJh
dGVPYnNlcnZlciBiaXRyYXRlX29ic2VydmVyXzsKICAgc3RkOjp1bmlxdWVfcHRyPEFja25vd2xl
ZGdlZEJpdHJhdGVFc3RpbWF0b3I+IGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl87Cisg
IGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQcm9iZUJpdHJhdGVFc3RpbWF0b3I+IHByb2JlX2JpdHJh
dGVfZXN0aW1hdG9yXzsKICAgc3RkOjp1bmlxdWVfcHRyPERlbGF5QmFzZWRCd2U+IGJpdHJhdGVf
ZXN0aW1hdG9yXzsKICAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OlN0cmVhbUdlbmVyYXRvcj4gc3Ry
ZWFtX2dlbmVyYXRvcl87CiAgIGludDY0X3QgYXJyaXZhbF90aW1lX29mZnNldF9tc187CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfZmFjdG9yeS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19mYWN0b3J5LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyZTBjY2MxN2NhNGIzYTNiODE4NmJmZTYzYTE2ZTk2YWQ1MTlhZDE2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvZ29vZ19jY19mYWN0b3J5LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBA
QAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2luY2x1ZGUvZ29vZ19jY19mYWN0b3J5LmgiCi0KLSNpbmNsdWRl
ICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sLmgiCi1uYW1lc3BhY2Ugd2Vi
cnRjIHsKLUdvb2dDY05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6R29vZ0NjTmV0d29ya0NvbnRy
b2xsZXJGYWN0b3J5KAotICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2cpCi0gICAgOiBldmVudF9s
b2dfKGV2ZW50X2xvZykge30KLQotc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250cm9sbGVySW50
ZXJmYWNlPgotR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpDcmVhdGUoTmV0d29ya0Nv
bnRyb2xsZXJDb25maWcgY29uZmlnKSB7Ci0gIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxHb29n
Q2NOZXR3b3JrQ29udHJvbGxlcj4oZXZlbnRfbG9nXywgY29uZmlnLCBmYWxzZSk7Ci19Ci0KLVRp
bWVEZWx0YSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3Rvcnk6OkdldFByb2Nlc3NJbnRlcnZh
bCgpIGNvbnN0IHsKLSAgY29uc3QgaW50NjRfdCBrVXBkYXRlSW50ZXJ2YWxNcyA9IDI1OwotICBy
ZXR1cm4gVGltZURlbHRhOjptcyhrVXBkYXRlSW50ZXJ2YWxNcyk7Ci19Ci0KLUdvb2dDY0ZlZWRi
YWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpHb29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9s
bGVyRmFjdG9yeSgKLSAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nKQotICAgIDogZXZlbnRfbG9n
XyhldmVudF9sb2cpIHt9Ci0KLXN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckludGVy
ZmFjZT4KLUdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpDcmVhdGUoTmV0
d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSB7Ci0gIHJldHVybiBhYnNsOjptYWtlX3VuaXF1
ZTxHb29nQ2NOZXR3b3JrQ29udHJvbGxlcj4oZXZlbnRfbG9nXywgY29uZmlnLCB0cnVlKTsKLX0K
LQotVGltZURlbHRhIEdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpHZXRQ
cm9jZXNzSW50ZXJ2YWwoKSBjb25zdCB7Ci0gIGNvbnN0IGludDY0X3Qga1VwZGF0ZUludGVydmFs
TXMgPSAyNTsKLSAgcmV0dXJuIFRpbWVEZWx0YTo6bXMoa1VwZGF0ZUludGVydmFsTXMpOwotfQot
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29v
Z19jY19uZXR3b3JrX2NvbnRyb2wuY2MKaW5kZXggNGFiOTY5NGYzN2JjMDM3ZTRjOTVlMjZhYzQz
OWI1ZjJjMTVhMWY2ZC4uNDM3Njk1M2I3Y2MxY2Y0OTM1YzIyYWIyYTg3ZGU5MGVmYzBlOWUzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJv
bC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9s
LmNjCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRn
ZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL2dvb2dfY2MvaW5jbHVkZS9nb29nX2NjX2ZhY3RvcnkuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2NvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRl
L2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3IvdGVzdC9id2VfdGVzdF9sb2dnaW5nLmgiCkBAIC0zNiw2ICszNSwxMSBAQCBuYW1lc3BhY2Ug
d2VicnRjIHsKIG5hbWVzcGFjZSB7CiAKIGNvbnN0IGNoYXIga0N3bmRFeHBlcmltZW50W10gPSAi
V2ViUlRDLUN3bmRFeHBlcmltZW50IjsKKy8vIFdoZW4gQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNr
IGlzIGVuYWJsZWQsIHRoZSBwYWNlciBpcyBvYmxpdmlvdXMgdG8KKy8vIHRoZSBjb25nZXN0aW9u
IHdpbmRvdy4gVGhlIHJlbGF0aW9uIGJldHdlZW4gb3V0c3RhbmRpbmcgZGF0YSBhbmQKKy8vIHRo
ZSBjb25nZXN0aW9uIHdpbmRvdyBhZmZlY3RzIGVuY29kZXIgYWxsb2NhdGlvbnMgZGlyZWN0bHku
Citjb25zdCBjaGFyIGtDb25nZXN0aW9uUHVzaGJhY2tFeHBlcmltZW50W10gPSAiV2ViUlRDLUNv
bmdlc3Rpb25XaW5kb3dQdXNoYmFjayI7CisKIGNvbnN0IGludDY0X3Qga0RlZmF1bHRBY2NlcHRl
ZFF1ZXVlTXMgPSAyNTA7CiAKIC8vIEZyb20gUlRDUFNlbmRlciB2aWRlbyByZXBvcnQgaW50ZXJ2
YWwuCkBAIC00OCw2ICs1MiwxOCBAQCBjb25zdGV4cHIgVGltZURlbHRhIGtMb3NzVXBkYXRlSW50
ZXJ2YWwgPSBUaW1lRGVsdGE6Ok1pbGxpczwxMDAwPigpOwogLy8gb3ZlcnNob290cyBmcm9tIHRo
ZSBlbmNvZGVyLgogY29uc3QgZmxvYXQga0RlZmF1bHRQYWNlTXVsdGlwbGllciA9IDIuNWY7CiAK
K2Jvb2wgSXNDb25nZXN0aW9uV2luZG93UHVzaGJhY2tFeHBlcmltZW50RW5hYmxlZCgpIHsKKyAg
cmV0dXJuIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrQ29uZ2VzdGlvblB1c2hiYWNr
RXhwZXJpbWVudCkgJiYKKyAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChr
Q3duZEV4cGVyaW1lbnQpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q29uZ2VzdGlvbldpbmRvd1B1
c2hiYWNrQ29udHJvbGxlcj4KK01heWJlSW5pdGFsaXplQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNr
Q29udHJvbGxlcigpIHsKKyAgcmV0dXJuIElzQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrRXhwZXJp
bWVudEVuYWJsZWQoKQorICAgICAgICAgICAgID8gYWJzbDo6bWFrZV91bmlxdWU8Q29uZ2VzdGlv
bldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcj4oKQorICAgICAgICAgICAgIDogbnVsbHB0cjsKK30K
KwogYm9vbCBDd25kRXhwZXJpbWVudEVuYWJsZWQoKSB7CiAgIHN0ZDo6c3RyaW5nIGV4cGVyaW1l
bnRfc3RyaW5nID0KICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZShrQ3du
ZEV4cGVyaW1lbnQpOwpAQCAtOTAsMTMgKzEwNiwxMCBAQCBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVk
YmFjaz4gUmVjZWl2ZWRQYWNrZXRzRmVlZGJhY2tBc1J0cCgKICAgICBpZiAoZmIucmVjZWl2ZV90
aW1lLklzRmluaXRlKCkpIHsKICAgICAgIFBhY2tldEZlZWRiYWNrIHBmKGZiLnJlY2VpdmVfdGlt
ZS5tcygpLCAwKTsKICAgICAgIHBmLmNyZWF0aW9uX3RpbWVfbXMgPSByZXBvcnQuZmVlZGJhY2tf
dGltZS5tcygpOwotICAgICAgaWYgKGZiLnNlbnRfcGFja2V0Lmhhc192YWx1ZSgpKSB7Ci0gICAg
ICAgIHBmLnBheWxvYWRfc2l6ZSA9IGZiLnNlbnRfcGFja2V0LT5zaXplLmJ5dGVzKCk7Ci0gICAg
ICAgIHBmLnBhY2luZ19pbmZvID0gZmIuc2VudF9wYWNrZXQtPnBhY2luZ19pbmZvOwotICAgICAg
ICBwZi5zZW5kX3RpbWVfbXMgPSBmYi5zZW50X3BhY2tldC0+c2VuZF90aW1lLm1zKCk7Ci0gICAg
ICB9IGVsc2UgewotICAgICAgICBwZi5zZW5kX3RpbWVfbXMgPSBQYWNrZXRGZWVkYmFjazo6a05v
U2VuZFRpbWU7Ci0gICAgICB9CisgICAgICBwZi5wYXlsb2FkX3NpemUgPSBmYi5zZW50X3BhY2tl
dC5zaXplLmJ5dGVzKCk7CisgICAgICBwZi5wYWNpbmdfaW5mbyA9IGZiLnNlbnRfcGFja2V0LnBh
Y2luZ19pbmZvOworICAgICAgcGYuc2VuZF90aW1lX21zID0gZmIuc2VudF9wYWNrZXQuc2VuZF90
aW1lLm1zKCk7CisgICAgICBwZi51bmFja25vd2xlZGdlZF9kYXRhID0gZmIuc2VudF9wYWNrZXQu
cHJpb3JfdW5hY2tlZF9kYXRhLmJ5dGVzKCk7CiAgICAgICBwYWNrZXRfZmVlZGJhY2tfdmVjdG9y
LnB1c2hfYmFjayhwZik7CiAgICAgfQogICB9CkBAIC0xMTQsMjEgKzEyNywyNyBAQCBpbnQ2NF90
IEdldEJwc09yRGVmYXVsdChjb25zdCBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4mIHJhdGUsCiAK
IH0gIC8vIG5hbWVzcGFjZQogCi0KIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpHb29nQ2NOZXR3
b3JrQ29udHJvbGxlcihSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGNv
bmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGZlZWRiYWNrX29ubHkpCiAgICAgOiBldmVudF9sb2dfKGV2ZW50X2xvZyksCiAgICAgICBw
YWNrZXRfZmVlZGJhY2tfb25seV8oZmVlZGJhY2tfb25seSksCisgICAgICBzYWZlX3Jlc2V0X29u
X3JvdXRlX2NoYW5nZV8oIkVuYWJsZWQiKSwKKyAgICAgIHNhZmVfcmVzZXRfYWNrbm93bGVkZ2Vk
X3JhdGVfKCJhY2siKSwKKyAgICAgIHVzZV9zdGFibGVfYmFuZHdpZHRoX2VzdGltYXRlXygKKyAg
ICAgICAgICBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQndlLVN0YWJsZUJhbmR3aWR0
aEVzdGltYXRlIikpLAogICAgICAgcHJvYmVfY29udHJvbGxlcl8obmV3IFByb2JlQ29udHJvbGxl
cigpKSwKKyAgICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfKAorICAg
ICAgICAgIE1heWJlSW5pdGFsaXplQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcigp
KSwKICAgICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXygKICAgICAgICAgICBhYnNsOjptYWtlX3Vu
aXF1ZTxTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb24+KGV2ZW50X2xvZ18pKSwKICAgICAgIGFs
cl9kZXRlY3Rvcl8oYWJzbDo6bWFrZV91bmlxdWU8QWxyRGV0ZWN0b3I+KCkpLAorICAgICAgcHJv
YmVfYml0cmF0ZV9lc3RpbWF0b3JfKG5ldyBQcm9iZUJpdHJhdGVFc3RpbWF0b3IoZXZlbnRfbG9n
KSksCiAgICAgICBkZWxheV9iYXNlZF9id2VfKG5ldyBEZWxheUJhc2VkQndlKGV2ZW50X2xvZ18p
KSwKICAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8oCiAgICAgICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcj4oKSksCiAgICAgICBp
bml0aWFsX2NvbmZpZ18oY29uZmlnKSwKLSAgICAgIGxhc3RfYmFuZHdpZHRoXygqY29uZmlnLmNv
bnN0cmFpbnRzLnN0YXJ0aW5nX3JhdGUpLAorICAgICAgbGFzdF90YXJnZXRfcmF0ZV8oKmNvbmZp
Zy5jb25zdHJhaW50cy5zdGFydGluZ19yYXRlKSwKICAgICAgIHBhY2luZ19mYWN0b3JfKGNvbmZp
Zy5zdHJlYW1fYmFzZWRfY29uZmlnLnBhY2luZ19mYWN0b3IudmFsdWVfb3IoCiAgICAgICAgICAg
a0RlZmF1bHRQYWNlTXVsdGlwbGllcikpLAogICAgICAgbWluX3BhY2luZ19yYXRlXyhjb25maWcu
c3RyZWFtX2Jhc2VkX2NvbmZpZy5taW5fcGFjaW5nX3JhdGUudmFsdWVfb3IoCkBAIC0xMzgsNyAr
MTU3LDEyIEBAIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpHb29nQ2NOZXR3b3JrQ29udHJvbGxl
cihSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgICAgbWF4X3RvdGFsX2FsbG9jYXRlZF9iaXRy
YXRlXyhEYXRhUmF0ZTo6WmVybygpKSwKICAgICAgIGluX2N3bmRfZXhwZXJpbWVudF8oQ3duZEV4
cGVyaW1lbnRFbmFibGVkKCkpLAogICAgICAgYWNjZXB0ZWRfcXVldWVfbXNfKGtEZWZhdWx0QWNj
ZXB0ZWRRdWV1ZU1zKSB7Ci0gIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJhdGUoY29uZ2Vz
dGlvbl9jb250cm9sbGVyOjpHZXRNaW5CaXRyYXRlQnBzKCkpOworICBSVENfRENIRUNLKGNvbmZp
Zy5jb25zdHJhaW50cy5hdF90aW1lLklzRmluaXRlKCkpOworICBQYXJzZUZpZWxkVHJpYWwoCisg
ICAgICB7JnNhZmVfcmVzZXRfb25fcm91dGVfY2hhbmdlXywgJnNhZmVfcmVzZXRfYWNrbm93bGVk
Z2VkX3JhdGVffSwKKyAgICAgIGZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoIldlYlJUQy1Cd2Ut
U2FmZVJlc2V0T25Sb3V0ZUNoYW5nZSIpKTsKKworICBkZWxheV9iYXNlZF9id2VfLT5TZXRNaW5C
aXRyYXRlKGNvbmdlc3Rpb25fY29udHJvbGxlcjo6R2V0TWluQml0cmF0ZSgpKTsKICAgaWYgKGlu
X2N3bmRfZXhwZXJpbWVudF8gJiYKICAgICAgICFSZWFkQ3duZEV4cGVyaW1lbnRQYXJhbWV0ZXIo
JmFjY2VwdGVkX3F1ZXVlX21zXykpIHsKICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWls
ZWQgdG8gcGFyc2UgcGFyYW1ldGVycyBmb3IgQ3duZEV4cGVyaW1lbnQgIgpAQCAtMTY1LDE2ICsx
ODksMzkgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXI6Ok9u
TmV0d29ya1JvdXRlQ2hhbmdlKAogCiAgIENsYW1wQml0cmF0ZXMoJnN0YXJ0X2JpdHJhdGVfYnBz
LCAmbWluX2JpdHJhdGVfYnBzLCAmbWF4X2JpdHJhdGVfYnBzKTsKIAotICBiYW5kd2lkdGhfZXN0
aW1hdGlvbl8gPQotICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2VuZFNpZGVCYW5kd2lkdGhFc3Rp
bWF0aW9uPihldmVudF9sb2dfKTsKKyAgaWYgKHNhZmVfcmVzZXRfb25fcm91dGVfY2hhbmdlXykg
eworICAgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBlc3RpbWF0ZWRfYml0cmF0ZV9icHM7Cisg
ICAgaWYgKHNhZmVfcmVzZXRfYWNrbm93bGVkZ2VkX3JhdGVfKSB7CisgICAgICBlc3RpbWF0ZWRf
Yml0cmF0ZV9icHMgPSBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRyYXRlX2Jw
cygpOworICAgICAgaWYgKCFlc3RpbWF0ZWRfYml0cmF0ZV9icHMpCisgICAgICAgIGVzdGltYXRl
ZF9iaXRyYXRlX2JwcyA9IGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPlBlZWtCcHMo
KTsKKyAgICB9IGVsc2UgeworICAgICAgaW50MzJfdCB0YXJnZXRfYml0cmF0ZV9icHM7CisgICAg
ICB1aW50OF90IGZyYWN0aW9uX2xvc3M7CisgICAgICBpbnQ2NF90IHJ0dF9tczsKKyAgICAgIGJh
bmR3aWR0aF9lc3RpbWF0aW9uXy0+Q3VycmVudEVzdGltYXRlKCZ0YXJnZXRfYml0cmF0ZV9icHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJhY3Rpb25f
bG9zcywgJnJ0dF9tcyk7CisgICAgICBlc3RpbWF0ZWRfYml0cmF0ZV9icHMgPSB0YXJnZXRfYml0
cmF0ZV9icHM7CisgICAgfQorICAgIGlmIChlc3RpbWF0ZWRfYml0cmF0ZV9icHMgJiYgKCFtc2cu
Y29uc3RyYWludHMuc3RhcnRpbmdfcmF0ZSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVzdGltYXRlZF9iaXRyYXRlX2JwcyA8IHN0YXJ0X2JpdHJhdGVfYnBzKSkgeworICAg
ICAgc3RhcnRfYml0cmF0ZV9icHMgPSAqZXN0aW1hdGVkX2JpdHJhdGVfYnBzOworICAgICAgbXNn
LmNvbnN0cmFpbnRzLnN0YXJ0aW5nX3JhdGUgPSBEYXRhUmF0ZTo6YnBzKHN0YXJ0X2JpdHJhdGVf
YnBzKTsKKyAgICB9CisgIH0KKworICBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLnJl
c2V0KG5ldyBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yKCkpOworICBwcm9iZV9iaXRyYXRl
X2VzdGltYXRvcl8ucmVzZXQobmV3IFByb2JlQml0cmF0ZUVzdGltYXRvcihldmVudF9sb2dfKSk7
CisgIGRlbGF5X2Jhc2VkX2J3ZV8ucmVzZXQobmV3IERlbGF5QmFzZWRCd2UoZXZlbnRfbG9nXykp
OworICBpZiAobXNnLmNvbnN0cmFpbnRzLnN0YXJ0aW5nX3JhdGUpCisgICAgZGVsYXlfYmFzZWRf
YndlXy0+U2V0U3RhcnRCaXRyYXRlKCptc2cuY29uc3RyYWludHMuc3RhcnRpbmdfcmF0ZSk7Cisg
IC8vIFRPRE8oc3J0ZSk6IFVzZSBvcmlnaW5hbCB2YWx1ZXMgaW5zdGVhZCBvZiBjb252ZXJ0ZWQu
CisgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJhdGUoRGF0YVJhdGU6OmJwcyhtaW5fYml0
cmF0ZV9icHMpKTsKKyAgYmFuZHdpZHRoX2VzdGltYXRpb25fLT5PblJvdXRlQ2hhbmdlKCk7CiAg
IGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+U2V0Qml0cmF0ZXMoCiAgICAgICBtc2cuY29uc3RyYWlu
dHMuc3RhcnRpbmdfcmF0ZSwgRGF0YVJhdGU6OmJwcyhtaW5fYml0cmF0ZV9icHMpLAogICAgICAg
bXNnLmNvbnN0cmFpbnRzLm1heF9kYXRhX3JhdGUudmFsdWVfb3IoRGF0YVJhdGU6OkluZmluaXR5
KCkpLAogICAgICAgbXNnLmF0X3RpbWUpOwotICBkZWxheV9iYXNlZF9id2VfLnJlc2V0KG5ldyBE
ZWxheUJhc2VkQndlKGV2ZW50X2xvZ18pKTsKLSAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1h
dG9yXy5yZXNldChuZXcgQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcigpKTsKLSAgZGVsYXlf
YmFzZWRfYndlXy0+U2V0U3RhcnRCaXRyYXRlKHN0YXJ0X2JpdHJhdGVfYnBzKTsKLSAgZGVsYXlf
YmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShtaW5fYml0cmF0ZV9icHMpOwogCiAgIHByb2JlX2Nv
bnRyb2xsZXJfLT5SZXNldChtc2cuYXRfdGltZS5tcygpKTsKICAgTmV0d29ya0NvbnRyb2xVcGRh
dGUgdXBkYXRlOwpAQCAtMjM5LDcgKzI4Niw3IEBAIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dD
Y05ldHdvcmtDb250cm9sbGVyOjpPblJvdW5kVHJpcFRpbWVVcGRhdGUoCiAgIGlmIChwYWNrZXRf
ZmVlZGJhY2tfb25seV8pCiAgICAgcmV0dXJuIE5ldHdvcmtDb250cm9sVXBkYXRlKCk7CiAgIGlm
IChtc2cuc21vb3RoZWQpIHsKLSAgICBkZWxheV9iYXNlZF9id2VfLT5PblJ0dFVwZGF0ZShtc2cu
cm91bmRfdHJpcF90aW1lLm1zKCkpOworICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPk9uUnR0VXBkYXRl
KG1zZy5yb3VuZF90cmlwX3RpbWUpOwogICB9IGVsc2UgewogICAgIGJhbmR3aWR0aF9lc3RpbWF0
aW9uXy0+VXBkYXRlUnR0KG1zZy5yb3VuZF90cmlwX3RpbWUsIG1zZy5yZWNlaXZlX3RpbWUpOwog
ICB9CkBAIC0yNTAsNyArMjk3LDIyIEBAIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dDY05ldHdv
cmtDb250cm9sbGVyOjpPblNlbnRQYWNrZXQoCiAgICAgU2VudFBhY2tldCBzZW50X3BhY2tldCkg
ewogICBhbHJfZGV0ZWN0b3JfLT5PbkJ5dGVzU2VudChzZW50X3BhY2tldC5zaXplLmJ5dGVzKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRfcGFja2V0LnNlbmRfdGltZS5tcygp
KTsKLSAgcmV0dXJuIE5ldHdvcmtDb250cm9sVXBkYXRlKCk7CisgIGlmICghZmlyc3RfcGFja2V0
X3NlbnRfKSB7CisgICAgZmlyc3RfcGFja2V0X3NlbnRfID0gdHJ1ZTsKKyAgICAvLyBJbml0aWFs
aXplIGZlZWRiYWNrIHRpbWUgdG8gc2VuZCB0aW1lIHRvIGFsbG93IGVzdGltYXRpb24gb2YgUlRU
IHVudGlsCisgICAgLy8gZmlyc3QgZmVlZGJhY2sgaXMgcmVjZWl2ZWQuCisgICAgYmFuZHdpZHRo
X2VzdGltYXRpb25fLT5VcGRhdGVQcm9wYWdhdGlvblJ0dChzZW50X3BhY2tldC5zZW5kX3RpbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lRGVs
dGE6Olplcm8oKSk7CisgIH0KKyAgaWYgKGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRy
b2xsZXJfKSB7CisgICAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8tPlVw
ZGF0ZU91dHN0YW5kaW5nRGF0YSgKKyAgICAgICAgc2VudF9wYWNrZXQuZGF0YV9pbl9mbGlnaHQu
Ynl0ZXMoKSk7CisgICAgTmV0d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRlOworICAgIE1heWJlVHJp
Z2dlck9uTmV0d29ya0NoYW5nZWQoJnVwZGF0ZSwgc2VudF9wYWNrZXQuc2VuZF90aW1lKTsKKyAg
ICByZXR1cm4gdXBkYXRlOworICB9IGVsc2UgeworICAgIHJldHVybiBOZXR3b3JrQ29udHJvbFVw
ZGF0ZSgpOworICB9CiB9CiAKIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dDY05ldHdvcmtDb250
cm9sbGVyOjpPblN0cmVhbXNDb25maWcoCkBAIC0zMTIsOSArMzc0LDkgQEAgR29vZ0NjTmV0d29y
a0NvbnRyb2xsZXI6OlVwZGF0ZUJpdHJhdGVDb25zdHJhaW50cygKICAgICAgIHN0YXJ0aW5nX3Jh
dGUsIERhdGFSYXRlOjpicHMobWluX2JpdHJhdGVfYnBzKSwKICAgICAgIGNvbnN0cmFpbnRzLm1h
eF9kYXRhX3JhdGUudmFsdWVfb3IoRGF0YVJhdGU6OkluZmluaXR5KCkpLAogICAgICAgY29uc3Ry
YWludHMuYXRfdGltZSk7Ci0gIGlmIChzdGFydF9iaXRyYXRlX2JwcyA+IDApCi0gICAgZGVsYXlf
YmFzZWRfYndlXy0+U2V0U3RhcnRCaXRyYXRlKHN0YXJ0X2JpdHJhdGVfYnBzKTsKLSAgZGVsYXlf
YmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShtaW5fYml0cmF0ZV9icHMpOworICBpZiAoc3RhcnRp
bmdfcmF0ZSkKKyAgICBkZWxheV9iYXNlZF9id2VfLT5TZXRTdGFydEJpdHJhdGUoKnN0YXJ0aW5n
X3JhdGUpOworICBkZWxheV9iYXNlZF9id2VfLT5TZXRNaW5CaXRyYXRlKERhdGFSYXRlOjpicHMo
bWluX2JpdHJhdGVfYnBzKSk7CiAgIHJldHVybiBwcm9iZXM7CiB9CiAKQEAgLTMzMSwzOCArMzkz
LDYxIEBAIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpPblRy
YW5zcG9ydExvc3NSZXBvcnQoCiAKIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dDY05ldHdvcmtD
b250cm9sbGVyOjpPblRyYW5zcG9ydFBhY2tldHNGZWVkYmFjaygKICAgICBUcmFuc3BvcnRQYWNr
ZXRzRmVlZGJhY2sgcmVwb3J0KSB7Ci0gIFRpbWVEZWx0YSBmZWVkYmFja19tYXhfcnR0ID0gVGlt
ZURlbHRhOjpNaW51c0luZmluaXR5KCk7CisgIGlmIChyZXBvcnQucGFja2V0X2ZlZWRiYWNrcy5l
bXB0eSgpKSB7CisgICAgRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0IHJlc3VsdCA9IGRlbGF5X2Jhc2Vk
X2J3ZV8tPk9uRGVsYXllZEZlZWRiYWNrKAorICAgICAgICByZXBvcnQuc2VuZGxlc3NfYXJyaXZh
bF90aW1lcy5iYWNrKCkpOworICAgIE5ldHdvcmtDb250cm9sVXBkYXRlIHVwZGF0ZTsKKyAgICBp
ZiAocmVzdWx0LnVwZGF0ZWQpIHsKKyAgICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+VXBkYXRl
RGVsYXlCYXNlZEVzdGltYXRlKHJlcG9ydC5mZWVkYmFja190aW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnRhcmdldF9iaXRy
YXRlKTsKKyAgICAgIE1heWJlVHJpZ2dlck9uTmV0d29ya0NoYW5nZWQoJnVwZGF0ZSwgcmVwb3J0
LmZlZWRiYWNrX3RpbWUpOworICAgIH0KKyAgICByZXR1cm4gdXBkYXRlOworICB9CisKKyAgaWYg
KGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfKSB7CisgICAgY29uZ2VzdGlv
bl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8tPlVwZGF0ZU91dHN0YW5kaW5nRGF0YSgKKyAg
ICAgICAgcmVwb3J0LmRhdGFfaW5fZmxpZ2h0LmJ5dGVzKCkpOworICB9CisgIFRpbWVEZWx0YSBt
YXhfZmVlZGJhY2tfcnR0ID0gVGltZURlbHRhOjpNaW51c0luZmluaXR5KCk7CisgIFRpbWVEZWx0
YSBtaW5fcHJvcGFnYXRpb25fcnR0ID0gVGltZURlbHRhOjpQbHVzSW5maW5pdHkoKTsKICAgVGlt
ZXN0YW1wIG1heF9yZWN2X3RpbWUgPSBUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKTsKLSAgZm9y
IChjb25zdCBhdXRvJiBwYWNrZXRfZmVlZGJhY2sgOiByZXBvcnQuUmVjZWl2ZWRXaXRoU2VuZElu
Zm8oKSkgewotICAgIFRpbWVEZWx0YSBydHQgPQotICAgICAgICByZXBvcnQuZmVlZGJhY2tfdGlt
ZSAtIHBhY2tldF9mZWVkYmFjay5zZW50X3BhY2tldC0+c2VuZF90aW1lOwotICAgIC8vIG1heCgp
IGlzIHVzZWQgdG8gYWNjb3VudCBmb3IgZmVlZGJhY2sgYmVpbmcgZGVsYXllZCBieSB0aGUKLSAg
ICAvLyByZWNlaXZlci4KLSAgICBmZWVkYmFja19tYXhfcnR0ID0gc3RkOjptYXgoZmVlZGJhY2tf
bWF4X3J0dCwgcnR0KTsKLSAgICBtYXhfcmVjdl90aW1lID0gc3RkOjptYXgobWF4X3JlY3ZfdGlt
ZSwgcGFja2V0X2ZlZWRiYWNrLnJlY2VpdmVfdGltZSk7CisKKyAgc3RkOjp2ZWN0b3I8UGFja2V0
UmVzdWx0PiBmZWVkYmFja3MgPSByZXBvcnQuUmVjZWl2ZWRXaXRoU2VuZEluZm8oKTsKKyAgZm9y
IChjb25zdCBhdXRvJiBmZWVkYmFjayA6IGZlZWRiYWNrcykKKyAgICBtYXhfcmVjdl90aW1lID0g
c3RkOjptYXgobWF4X3JlY3ZfdGltZSwgZmVlZGJhY2sucmVjZWl2ZV90aW1lKTsKKworICBmb3Ig
KGNvbnN0IGF1dG8mIGZlZWRiYWNrIDogZmVlZGJhY2tzKSB7CisgICAgVGltZURlbHRhIGZlZWRi
YWNrX3J0dCA9CisgICAgICAgIHJlcG9ydC5mZWVkYmFja190aW1lIC0gZmVlZGJhY2suc2VudF9w
YWNrZXQuc2VuZF90aW1lOworICAgIFRpbWVEZWx0YSBtaW5fcGVuZGluZ190aW1lID0gZmVlZGJh
Y2sucmVjZWl2ZV90aW1lIC0gbWF4X3JlY3ZfdGltZTsKKyAgICBUaW1lRGVsdGEgcHJvcGFnYXRp
b25fcnR0ID0gZmVlZGJhY2tfcnR0IC0gbWluX3BlbmRpbmdfdGltZTsKKyAgICBtYXhfZmVlZGJh
Y2tfcnR0ID0gc3RkOjptYXgobWF4X2ZlZWRiYWNrX3J0dCwgZmVlZGJhY2tfcnR0KTsKKyAgICBt
aW5fcHJvcGFnYXRpb25fcnR0ID0gc3RkOjptaW4obWluX3Byb3BhZ2F0aW9uX3J0dCwgcHJvcGFn
YXRpb25fcnR0KTsKICAgfQotICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBtaW5fZmVlZGJhY2tf
bWF4X3J0dF9tczsKLSAgaWYgKGZlZWRiYWNrX21heF9ydHQuSXNGaW5pdGUoKSkgewotICAgIGZl
ZWRiYWNrX21heF9ydHRzXy5wdXNoX2JhY2soZmVlZGJhY2tfbWF4X3J0dC5tcygpKTsKKworICBp
ZiAobWF4X2ZlZWRiYWNrX3J0dC5Jc0Zpbml0ZSgpKSB7CisgICAgZmVlZGJhY2tfbWF4X3J0dHNf
LnB1c2hfYmFjayhtYXhfZmVlZGJhY2tfcnR0Lm1zKCkpOwogICAgIGNvbnN0IHNpemVfdCBrTWF4
RmVlZGJhY2tSdHRXaW5kb3cgPSAzMjsKICAgICBpZiAoZmVlZGJhY2tfbWF4X3J0dHNfLnNpemUo
KSA+IGtNYXhGZWVkYmFja1J0dFdpbmRvdykKICAgICAgIGZlZWRiYWNrX21heF9ydHRzXy5wb3Bf
ZnJvbnQoKTsKLSAgICBtaW5fZmVlZGJhY2tfbWF4X3J0dF9tcy5lbXBsYWNlKCpzdGQ6Om1pbl9l
bGVtZW50KAotICAgICAgICBmZWVkYmFja19tYXhfcnR0c18uYmVnaW4oKSwgZmVlZGJhY2tfbWF4
X3J0dHNfLmVuZCgpKSk7CisgICAgLy8gVE9ETyhzcnRlKTogVXNlIHRpbWUgc2luY2UgbGFzdCB1
bmFja25vd2xlZGdlZCBwYWNrZXQuCisgICAgYmFuZHdpZHRoX2VzdGltYXRpb25fLT5VcGRhdGVQ
cm9wYWdhdGlvblJ0dChyZXBvcnQuZmVlZGJhY2tfdGltZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9wcm9wYWdhdGlvbl9ydHQpOwogICB9CiAg
IGlmIChwYWNrZXRfZmVlZGJhY2tfb25seV8pIHsKICAgICBpZiAoIWZlZWRiYWNrX21heF9ydHRz
Xy5lbXB0eSgpKSB7CiAgICAgICBpbnQ2NF90IHN1bV9ydHRfbXMgPSBzdGQ6OmFjY3VtdWxhdGUo
ZmVlZGJhY2tfbWF4X3J0dHNfLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmVlZGJhY2tfbWF4X3J0dHNfLmVuZCgpLCAwKTsKICAgICAgIGludDY0
X3QgbWVhbl9ydHRfbXMgPSBzdW1fcnR0X21zIC8gZmVlZGJhY2tfbWF4X3J0dHNfLnNpemUoKTsK
LSAgICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPk9uUnR0VXBkYXRlKG1lYW5fcnR0X21zKTsKKyAgICAg
IGRlbGF5X2Jhc2VkX2J3ZV8tPk9uUnR0VXBkYXRlKFRpbWVEZWx0YTo6bXMobWVhbl9ydHRfbXMp
KTsKICAgICB9CiAKICAgICBUaW1lRGVsdGEgZmVlZGJhY2tfbWluX3J0dCA9IFRpbWVEZWx0YTo6
UGx1c0luZmluaXR5KCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBwYWNrZXRfZmVlZGJhY2sgOiBy
ZXBvcnQuUmVjZWl2ZWRXaXRoU2VuZEluZm8oKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgcGFj
a2V0X2ZlZWRiYWNrIDogZmVlZGJhY2tzKSB7CiAgICAgICBUaW1lRGVsdGEgcGVuZGluZ190aW1l
ID0gcGFja2V0X2ZlZWRiYWNrLnJlY2VpdmVfdGltZSAtIG1heF9yZWN2X3RpbWU7CiAgICAgICBU
aW1lRGVsdGEgcnR0ID0gcmVwb3J0LmZlZWRiYWNrX3RpbWUgLQotICAgICAgICAgICAgICAgICAg
ICAgIHBhY2tldF9mZWVkYmFjay5zZW50X3BhY2tldC0+c2VuZF90aW1lIC0gcGVuZGluZ190aW1l
OworICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9mZWVkYmFjay5zZW50X3BhY2tldC5zZW5k
X3RpbWUgLSBwZW5kaW5nX3RpbWU7CiAgICAgICAvLyBWYWx1ZSB1c2VkIGZvciBwcmVkaWN0aW5n
IE5BQ0sgcm91bmQgdHJpcCB0aW1lIGluIEZFQyBjb250cm9sbGVyLgogICAgICAgZmVlZGJhY2tf
bWluX3J0dCA9IHN0ZDo6bWluKHJ0dCwgZmVlZGJhY2tfbWluX3J0dCk7CiAgICAgfQpAQCAtNDAw
LDIyICs0ODUsMzMgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgR29vZ0NjTmV0d29ya0NvbnRyb2xs
ZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKAogICBwcmV2aW91c2x5X2luX2FsciA9IGFs
cl9zdGFydF90aW1lLmhhc192YWx1ZSgpOwogICBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0
b3JfLT5JbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAogICAgICAgcmVjZWl2ZWRfZmVlZGJh
Y2tfdmVjdG9yKTsKLSAgYXV0byBhY2tub3dsZWRnZWRfYml0cmF0ZSA9IGFja25vd2xlZGdlZF9i
aXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGVfYnBzKCk7CisgIGF1dG8gYWNrbm93bGVkZ2VkX2Jp
dHJhdGUgPSBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRyYXRlKCk7CisgIGJh
bmR3aWR0aF9lc3RpbWF0aW9uXy0+U2V0QWNrbm93bGVkZ2VkUmF0ZShhY2tub3dsZWRnZWRfYml0
cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9y
dC5mZWVkYmFja190aW1lKTsKKyAgYmFuZHdpZHRoX2VzdGltYXRpb25fLT5JbmNvbWluZ1BhY2tl
dEZlZWRiYWNrVmVjdG9yKHJlcG9ydCk7CisgIGZvciAoY29uc3QgYXV0byYgZmVlZGJhY2sgOiBy
ZWNlaXZlZF9mZWVkYmFja192ZWN0b3IpIHsKKyAgICBpZiAoZmVlZGJhY2sucGFjaW5nX2luZm8u
cHJvYmVfY2x1c3Rlcl9pZCAhPSBQYWNlZFBhY2tldEluZm86OmtOb3RBUHJvYmUpIHsKKyAgICAg
IHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy0+SGFuZGxlUHJvYmVBbmRFc3RpbWF0ZUJpdHJhdGUo
ZmVlZGJhY2spOworICAgIH0KKyAgfQorICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gcHJvYmVf
Yml0cmF0ZSA9CisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8tPkZldGNoQW5kUmVzZXRM
YXN0RXN0aW1hdGVkQml0cmF0ZSgpOworCiAgIERlbGF5QmFzZWRCd2U6OlJlc3VsdCByZXN1bHQ7
CiAgIHJlc3VsdCA9IGRlbGF5X2Jhc2VkX2J3ZV8tPkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0
b3IoCi0gICAgICByZWNlaXZlZF9mZWVkYmFja192ZWN0b3IsIGFja25vd2xlZGdlZF9iaXRyYXRl
LAotICAgICAgcmVwb3J0LmZlZWRiYWNrX3RpbWUubXMoKSk7CisgICAgICByZWNlaXZlZF9mZWVk
YmFja192ZWN0b3IsIGFja25vd2xlZGdlZF9iaXRyYXRlLCBwcm9iZV9iaXRyYXRlLAorICAgICAg
cmVwb3J0LmZlZWRiYWNrX3RpbWUpOwogCiAgIE5ldHdvcmtDb250cm9sVXBkYXRlIHVwZGF0ZTsK
ICAgaWYgKHJlc3VsdC51cGRhdGVkKSB7CiAgICAgaWYgKHJlc3VsdC5wcm9iZSkgewotICAgICAg
YmFuZHdpZHRoX2VzdGltYXRpb25fLT5TZXRTZW5kQml0cmF0ZSgKLSAgICAgICAgICBEYXRhUmF0
ZTo6YnBzKHJlc3VsdC50YXJnZXRfYml0cmF0ZV9icHMpLCByZXBvcnQuZmVlZGJhY2tfdGltZSk7
CisgICAgICBiYW5kd2lkdGhfZXN0aW1hdGlvbl8tPlNldFNlbmRCaXRyYXRlKHJlc3VsdC50YXJn
ZXRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVwb3J0LmZlZWRiYWNrX3RpbWUpOwogICAgIH0KICAgICAvLyBTaW5jZSBTZXRTZW5kQml0cmF0
ZSBub3cgcmVzZXRzIHRoZSBkZWxheS1iYXNlZCBlc3RpbWF0ZSwgd2UgaGF2ZSB0byBjYWxsCiAg
ICAgLy8gVXBkYXRlRGVsYXlCYXNlZEVzdGltYXRlIGFmdGVyIFNldFNlbmRCaXRyYXRlLgotICAg
IGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+VXBkYXRlRGVsYXlCYXNlZEVzdGltYXRlKAotICAgICAg
ICByZXBvcnQuZmVlZGJhY2tfdGltZSwgRGF0YVJhdGU6OmJwcyhyZXN1bHQudGFyZ2V0X2JpdHJh
dGVfYnBzKSk7CisgICAgYmFuZHdpZHRoX2VzdGltYXRpb25fLT5VcGRhdGVEZWxheUJhc2VkRXN0
aW1hdGUocmVwb3J0LmZlZWRiYWNrX3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlKTsKICAgICAvLyBV
cGRhdGUgdGhlIGVzdGltYXRlIGluIHRoZSBQcm9iZUNvbnRyb2xsZXIsIGluIGNhc2Ugd2Ugd2Fu
dCB0byBwcm9iZS4KICAgICBNYXliZVRyaWdnZXJPbk5ldHdvcmtDaGFuZ2VkKCZ1cGRhdGUsIHJl
cG9ydC5mZWVkYmFja190aW1lKTsKICAgfQpAQCAtNDI4LDExICs1MjQsMTQgQEAgTmV0d29ya0Nv
bnRyb2xVcGRhdGUgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0Zl
ZWRiYWNrKAogCiAgIC8vIE5vIHZhbGlkIFJUVCBjb3VsZCBiZSBiZWNhdXNlIHNlbmQtc2lkZSBC
V0UgaXNuJ3QgdXNlZCwgaW4gd2hpY2ggY2FzZQogICAvLyB3ZSBkb24ndCB0cnkgdG8gbGltaXQg
dGhlIG91dHN0YW5kaW5nIHBhY2tldHMuCi0gIGlmIChpbl9jd25kX2V4cGVyaW1lbnRfICYmIG1p
bl9mZWVkYmFja19tYXhfcnR0X21zKSB7CisgIGlmIChpbl9jd25kX2V4cGVyaW1lbnRfICYmIG1h
eF9mZWVkYmFja19ydHQuSXNGaW5pdGUoKSkgeworICAgIGludDY0X3QgbWluX2ZlZWRiYWNrX21h
eF9ydHRfbXMgPQorICAgICAgICAqc3RkOjptaW5fZWxlbWVudChmZWVkYmFja19tYXhfcnR0c18u
YmVnaW4oKSwgZmVlZGJhY2tfbWF4X3J0dHNfLmVuZCgpKTsKKwogICAgIGNvbnN0IERhdGFTaXpl
IGtNaW5Dd25kID0gRGF0YVNpemU6OmJ5dGVzKDIgKiAxNTAwKTsKICAgICBUaW1lRGVsdGEgdGlt
ZV93aW5kb3cgPQotICAgICAgICBUaW1lRGVsdGE6Om1zKCptaW5fZmVlZGJhY2tfbWF4X3J0dF9t
cyArIGFjY2VwdGVkX3F1ZXVlX21zXyk7Ci0gICAgRGF0YVNpemUgZGF0YV93aW5kb3cgPSBsYXN0
X2JhbmR3aWR0aF8gKiB0aW1lX3dpbmRvdzsKKyAgICAgICAgVGltZURlbHRhOjptcyhtaW5fZmVl
ZGJhY2tfbWF4X3J0dF9tcyArIGFjY2VwdGVkX3F1ZXVlX21zXyk7CisgICAgRGF0YVNpemUgZGF0
YV93aW5kb3cgPSBsYXN0X3RhcmdldF9yYXRlXyAqIHRpbWVfd2luZG93OwogICAgIGlmIChjdXJy
ZW50X2RhdGFfd2luZG93XykgewogICAgICAgZGF0YV93aW5kb3cgPQogICAgICAgICAgIHN0ZDo6
bWF4KGtNaW5Dd25kLCAoZGF0YV93aW5kb3cgKyBjdXJyZW50X2RhdGFfd2luZG93Xy52YWx1ZSgp
KSAvIDIpOwpAQCAtNDQwLDEwICs1MzksMTMgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgR29vZ0Nj
TmV0d29ya0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKAogICAgICAgZGF0
YV93aW5kb3cgPSBzdGQ6Om1heChrTWluQ3duZCwgZGF0YV93aW5kb3cpOwogICAgIH0KICAgICBj
dXJyZW50X2RhdGFfd2luZG93XyA9IGRhdGFfd2luZG93OwotICAgIFJUQ19MT0coTFNfSU5GTykg
PDwgIkZlZWRiYWNrIHJ0dDogIiA8PCAqbWluX2ZlZWRiYWNrX21heF9ydHRfbXMKLSAgICAgICAg
ICAgICAgICAgICAgIDw8ICIgQml0cmF0ZTogIiA8PCBsYXN0X2JhbmR3aWR0aF8uYnBzKCk7CiAg
IH0KLSAgdXBkYXRlLmNvbmdlc3Rpb25fd2luZG93ID0gY3VycmVudF9kYXRhX3dpbmRvd187Cisg
IGlmIChjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXyAmJiBjdXJyZW50X2Rh
dGFfd2luZG93XykgeworICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJf
LT5TZXREYXRhV2luZG93KAorICAgICAgICAqY3VycmVudF9kYXRhX3dpbmRvd18pOworICB9IGVs
c2UgeworICAgIHVwZGF0ZS5jb25nZXN0aW9uX3dpbmRvdyA9IGN1cnJlbnRfZGF0YV93aW5kb3df
OworICB9CiAKICAgcmV0dXJuIHVwZGF0ZTsKIH0KQEAgLTQ2MCw3ICs1NjIsNyBAQCBOZXR3b3Jr
Q29udHJvbFVwZGF0ZSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6R2V0TmV0d29ya1N0YXRlKAog
ICAgICAgbGFzdF9lc3RpbWF0ZWRfZnJhY3Rpb25fbG9zc18gLyAyNTUuMDsKICAgdXBkYXRlLnRh
cmdldF9yYXRlLT5uZXR3b3JrX2VzdGltYXRlLnJvdW5kX3RyaXBfdGltZSA9IHJ0dDsKICAgdXBk
YXRlLnRhcmdldF9yYXRlLT5uZXR3b3JrX2VzdGltYXRlLmJ3ZV9wZXJpb2QgPQotICAgICAgVGlt
ZURlbHRhOjptcyhkZWxheV9iYXNlZF9id2VfLT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZE1zKCkpOwor
ICAgICAgZGVsYXlfYmFzZWRfYndlXy0+R2V0RXhwZWN0ZWRCd2VQZXJpb2QoKTsKICAgdXBkYXRl
LnRhcmdldF9yYXRlLT5hdF90aW1lID0gYXRfdGltZTsKICAgdXBkYXRlLnRhcmdldF9yYXRlLT50
YXJnZXRfcmF0ZSA9IGJhbmR3aWR0aDsKICAgdXBkYXRlLnBhY2VyX2NvbmZpZyA9IEdldFBhY2lu
Z1JhdGVzKGF0X3RpbWUpOwpAQCAtNDk2LDI3ICs1OTgsMzggQEAgdm9pZCBHb29nQ2NOZXR3b3Jr
Q29udHJvbGxlcjo6TWF5YmVUcmlnZ2VyT25OZXR3b3JrQ2hhbmdlZCgKIAogICAgIGFscl9kZXRl
Y3Rvcl8tPlNldEVzdGltYXRlZEJpdHJhdGUoZXN0aW1hdGVkX2JpdHJhdGVfYnBzKTsKIAotICAg
IERhdGFSYXRlIGJhbmR3aWR0aCA9IERhdGFSYXRlOjpicHMoZXN0aW1hdGVkX2JpdHJhdGVfYnBz
KTsKLSAgICBsYXN0X2JhbmR3aWR0aF8gPSBiYW5kd2lkdGg7CisgICAgbGFzdF90YXJnZXRfcmF0
ZV8gPSBEYXRhUmF0ZTo6YnBzKGVzdGltYXRlZF9iaXRyYXRlX2Jwcyk7CisgICAgRGF0YVJhdGUg
YmFuZHdpZHRoID0gdXNlX3N0YWJsZV9iYW5kd2lkdGhfZXN0aW1hdGVfCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID8gYmFuZHdpZHRoX2VzdGltYXRpb25fLT5HZXRFc3RpbWF0ZWRMaW5r
Q2FwYWNpdHkoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhc3RfdGFyZ2V0X3Jh
dGVfOwogCi0gICAgVGltZURlbHRhIGJ3ZV9wZXJpb2QgPQotICAgICAgICBUaW1lRGVsdGE6Om1z
KGRlbGF5X2Jhc2VkX2J3ZV8tPkdldEV4cGVjdGVkQndlUGVyaW9kTXMoKSk7CisgICAgVGltZURl
bHRhIGJ3ZV9wZXJpb2QgPSBkZWxheV9iYXNlZF9id2VfLT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZCgp
OwogCi0gICAgVGFyZ2V0VHJhbnNmZXJSYXRlIHRhcmdldF9yYXRlOwotICAgIHRhcmdldF9yYXRl
LmF0X3RpbWUgPSBhdF90aW1lOwogICAgIC8vIFNldCB0aGUgdGFyZ2V0IHJhdGUgdG8gdGhlIGZ1
bGwgZXN0aW1hdGVkIGJhbmR3aWR0aCBzaW5jZSB0aGUgZXN0aW1hdGlvbgogICAgIC8vIGZvciBs
ZWdhY3kgcmVhc29ucyBpbmNsdWRlcyB0YXJnZXQgcmF0ZSBjb25zdHJhaW50cy4KLSAgICB0YXJn
ZXRfcmF0ZS50YXJnZXRfcmF0ZSA9IGJhbmR3aWR0aDsKKyAgICBEYXRhUmF0ZSB0YXJnZXRfcmF0
ZSA9IGxhc3RfdGFyZ2V0X3JhdGVfOworICAgIGlmIChjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFj
a19jb250cm9sbGVyXykgeworICAgICAgaW50NjRfdCBwdXNoYmFja19yYXRlID0KKyAgICAgICAg
ICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXy0+VXBkYXRlVGFyZ2V0Qml0
cmF0ZSgKKyAgICAgICAgICAgICAgdGFyZ2V0X3JhdGUuYnBzKCkpOworICAgICAgcHVzaGJhY2tf
cmF0ZSA9IHN0ZDo6bWF4PGludDY0X3Q+KGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+R2V0TWluQml0
cmF0ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hiYWNr
X3JhdGUpOworICAgICAgdGFyZ2V0X3JhdGUgPSBEYXRhUmF0ZTo6YnBzKHB1c2hiYWNrX3JhdGUp
OworICAgIH0KKworICAgIFRhcmdldFRyYW5zZmVyUmF0ZSB0YXJnZXRfcmF0ZV9tc2c7CisgICAg
dGFyZ2V0X3JhdGVfbXNnLmF0X3RpbWUgPSBhdF90aW1lOworICAgIHRhcmdldF9yYXRlX21zZy50
YXJnZXRfcmF0ZSA9IHRhcmdldF9yYXRlOworICAgIHRhcmdldF9yYXRlX21zZy5uZXR3b3JrX2Vz
dGltYXRlLmF0X3RpbWUgPSBhdF90aW1lOworICAgIHRhcmdldF9yYXRlX21zZy5uZXR3b3JrX2Vz
dGltYXRlLnJvdW5kX3RyaXBfdGltZSA9IFRpbWVEZWx0YTo6bXMocnR0X21zKTsKKyAgICB0YXJn
ZXRfcmF0ZV9tc2cubmV0d29ya19lc3RpbWF0ZS5iYW5kd2lkdGggPSBiYW5kd2lkdGg7CisgICAg
dGFyZ2V0X3JhdGVfbXNnLm5ldHdvcmtfZXN0aW1hdGUubG9zc19yYXRlX3JhdGlvID0gZnJhY3Rp
b25fbG9zcyAvIDI1NS4wZjsKKyAgICB0YXJnZXRfcmF0ZV9tc2cubmV0d29ya19lc3RpbWF0ZS5i
d2VfcGVyaW9kID0gYndlX3BlcmlvZDsKIAotICAgIHRhcmdldF9yYXRlLm5ldHdvcmtfZXN0aW1h
dGUuYXRfdGltZSA9IGF0X3RpbWU7Ci0gICAgdGFyZ2V0X3JhdGUubmV0d29ya19lc3RpbWF0ZS5y
b3VuZF90cmlwX3RpbWUgPSBUaW1lRGVsdGE6Om1zKHJ0dF9tcyk7Ci0gICAgdGFyZ2V0X3JhdGUu
bmV0d29ya19lc3RpbWF0ZS5iYW5kd2lkdGggPSBiYW5kd2lkdGg7Ci0gICAgdGFyZ2V0X3JhdGUu
bmV0d29ya19lc3RpbWF0ZS5sb3NzX3JhdGVfcmF0aW8gPSBmcmFjdGlvbl9sb3NzIC8gMjU1LjBm
OwotICAgIHRhcmdldF9yYXRlLm5ldHdvcmtfZXN0aW1hdGUuYndlX3BlcmlvZCA9IGJ3ZV9wZXJp
b2Q7Ci0gICAgdXBkYXRlLT50YXJnZXRfcmF0ZSA9IHRhcmdldF9yYXRlOworICAgIHVwZGF0ZS0+
dGFyZ2V0X3JhdGUgPSB0YXJnZXRfcmF0ZV9tc2c7CiAKLSAgICBhdXRvIHByb2JlcyA9Ci0gICAg
ICAgIHByb2JlX2NvbnRyb2xsZXJfLT5TZXRFc3RpbWF0ZWRCaXRyYXRlKGJhbmR3aWR0aC5icHMo
KSwgYXRfdGltZS5tcygpKTsKKyAgICBhdXRvIHByb2JlcyA9IHByb2JlX2NvbnRyb2xsZXJfLT5T
ZXRFc3RpbWF0ZWRCaXRyYXRlKAorICAgICAgICBsYXN0X3RhcmdldF9yYXRlXy5icHMoKSwgYXRf
dGltZS5tcygpKTsKICAgICB1cGRhdGUtPnByb2JlX2NsdXN0ZXJfY29uZmlncy5pbnNlcnQodXBk
YXRlLT5wcm9iZV9jbHVzdGVyX2NvbmZpZ3MuZW5kKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2Jlcy5iZWdpbigpLCBwcm9iZXMuZW5kKCkpOwogICAgIHVw
ZGF0ZS0+cGFjZXJfY29uZmlnID0gR2V0UGFjaW5nUmF0ZXMoYXRfdGltZSk7CkBAIC01MjUsOCAr
NjM4LDggQEAgdm9pZCBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6TWF5YmVUcmlnZ2VyT25OZXR3
b3JrQ2hhbmdlZCgKIAogUGFjZXJDb25maWcgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXI6OkdldFBh
Y2luZ1JhdGVzKFRpbWVzdGFtcCBhdF90aW1lKSBjb25zdCB7CiAgIERhdGFSYXRlIHBhY2luZ19y
YXRlID0KLSAgICAgIHN0ZDo6bWF4KG1pbl9wYWNpbmdfcmF0ZV8sIGxhc3RfYmFuZHdpZHRoXykg
KiBwYWNpbmdfZmFjdG9yXzsKLSAgRGF0YVJhdGUgcGFkZGluZ19yYXRlID0gc3RkOjptaW4obWF4
X3BhZGRpbmdfcmF0ZV8sIGxhc3RfYmFuZHdpZHRoXyk7CisgICAgICBzdGQ6Om1heChtaW5fcGFj
aW5nX3JhdGVfLCBsYXN0X3RhcmdldF9yYXRlXykgKiBwYWNpbmdfZmFjdG9yXzsKKyAgRGF0YVJh
dGUgcGFkZGluZ19yYXRlID0gc3RkOjptaW4obWF4X3BhZGRpbmdfcmF0ZV8sIGxhc3RfdGFyZ2V0
X3JhdGVfKTsKICAgUGFjZXJDb25maWcgbXNnOwogICBtc2cuYXRfdGltZSA9IGF0X3RpbWU7CiAg
IG1zZy50aW1lX3dpbmRvdyA9IFRpbWVEZWx0YTo6c2Vjb25kcygxKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaAppbmRleCBmN2VmZGEzOTYy
NzdlNGU2MzNjM2RhMWY4MDUwOWVjYWM5YmU5ZjQ3Li5hNjJmNTliYjQ0YmMwZTBlNWMzYjhhMTJh
YjI0NGUwNTA5OGI0OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2df
Y2NfbmV0d29ya19jb250cm9sLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2Nj
X25ldHdvcmtfY29udHJvbC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9i
aXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRf
Yml0cmF0ZV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVs
YXlfYmFzZWRfYndlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
Z29vZ19jYy9wcm9iZV9jb250cm9sbGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0
b3JtYWdpYy5oIgpAQCAtNjMsMjQgKzY0LDMxIEBAIGNsYXNzIEdvb2dDY05ldHdvcmtDb250cm9s
bGVyIDogcHVibGljIE5ldHdvcmtDb250cm9sbGVySW50ZXJmYWNlIHsKIAogICBSdGNFdmVudExv
ZyogY29uc3QgZXZlbnRfbG9nXzsKICAgY29uc3QgYm9vbCBwYWNrZXRfZmVlZGJhY2tfb25seV87
CisgIEZpZWxkVHJpYWxGbGFnIHNhZmVfcmVzZXRfb25fcm91dGVfY2hhbmdlXzsKKyAgRmllbGRU
cmlhbEZsYWcgc2FmZV9yZXNldF9hY2tub3dsZWRnZWRfcmF0ZV87CisgIGNvbnN0IGJvb2wgdXNl
X3N0YWJsZV9iYW5kd2lkdGhfZXN0aW1hdGVfOwogCiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQ
cm9iZUNvbnRyb2xsZXI+IHByb2JlX2NvbnRyb2xsZXJfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9w
dHI8Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcj4KKyAgICAgIGNvbmdlc3Rpb25f
d2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxTZW5kU2lk
ZUJhbmR3aWR0aEVzdGltYXRpb24+IGJhbmR3aWR0aF9lc3RpbWF0aW9uXzsKICAgc3RkOjp1bmlx
dWVfcHRyPEFsckRldGVjdG9yPiBhbHJfZGV0ZWN0b3JfOworICBzdGQ6OnVuaXF1ZV9wdHI8UHJv
YmVCaXRyYXRlRXN0aW1hdG9yPiBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl87CiAgIHN0ZDo6dW5p
cXVlX3B0cjxEZWxheUJhc2VkQndlPiBkZWxheV9iYXNlZF9id2VfOwogICBzdGQ6OnVuaXF1ZV9w
dHI8QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcj4gYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0
aW1hdG9yXzsKIAogICBhYnNsOjpvcHRpb25hbDxOZXR3b3JrQ29udHJvbGxlckNvbmZpZz4gaW5p
dGlhbF9jb25maWdfOwogCisgIGJvb2wgZmlyc3RfcGFja2V0X3NlbnRfID0gZmFsc2U7CisKICAg
VGltZXN0YW1wIG5leHRfbG9zc191cGRhdGVfID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7
CiAgIGludCBsb3N0X3BhY2tldHNfc2luY2VfbGFzdF9sb3NzX3VwZGF0ZV8gPSAwOwogICBpbnQg
ZXhwZWN0ZWRfcGFja2V0c19zaW5jZV9sYXN0X2xvc3NfdXBkYXRlXyA9IDA7CiAKICAgc3RkOjpk
ZXF1ZTxpbnQ2NF90PiBmZWVkYmFja19tYXhfcnR0c187CiAKLSAgRGF0YVJhdGUgbGFzdF9iYW5k
d2lkdGhfOwotICBhYnNsOjpvcHRpb25hbDxUYXJnZXRUcmFuc2ZlclJhdGU+IGxhc3RfdGFyZ2V0
X3JhdGVfOworICBEYXRhUmF0ZSBsYXN0X3RhcmdldF9yYXRlXzsKIAogICBpbnQzMl90IGxhc3Rf
ZXN0aW1hdGVkX2JpdHJhdGVfYnBzXyA9IDA7CiAgIHVpbnQ4X3QgbGFzdF9lc3RpbWF0ZWRfZnJh
Y3Rpb25fbG9zc18gPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29n
X2NjX25ldHdvcmtfY29udHJvbF9zbG93dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2Mv
Z29vZ19jY19uZXR3b3JrX2NvbnRyb2xfc2xvd3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZhMGQxYzA5
NmRkYTNmNmEzNWE2ZjhjNGFhNjBiM2VkNWJjZWNlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfc2xvd3Rlc3QuY2MKQEAg
LTAsMCArMSwxMjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL3Ry
YW5zcG9ydC9nb29nX2NjX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgi
CisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInRlc3Qvc2NlbmFyaW8vc2NlbmFy
aW8uaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKK1RFU1QoR29v
Z0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBNYWludGFpbnNMb3dSYXRlSW5TYWZlUmVzZXRUcmlh
bCkgeworICBjb25zdCBEYXRhUmF0ZSBrTGlua0NhcGFjaXR5ID0gRGF0YVJhdGU6OmticHMoMjAw
KTsKKyAgY29uc3QgRGF0YVJhdGUga1N0YXJ0UmF0ZSA9IERhdGFSYXRlOjprYnBzKDMwMCk7CisK
KyAgU2NvcGVkRmllbGRUcmlhbHMgdHJpYWwoIldlYlJUQy1Cd2UtU2FmZVJlc2V0T25Sb3V0ZUNo
YW5nZS9FbmFibGVkLyIpOworICBTY2VuYXJpbyBzKCJnb29nY2NfdW5pdC9zYWZlX3Jlc2V0X2xv
dyIsIHRydWUpOworICBhdXRvKiBzZW5kX25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUoWyZd
KE5ldHdvcmtOb2RlQ29uZmlnKiBjKSB7CisgICAgYy0+c2ltdWxhdGlvbi5iYW5kd2lkdGggPSBr
TGlua0NhcGFjaXR5OworICAgIGMtPnNpbXVsYXRpb24uZGVsYXkgPSBUaW1lRGVsdGE6Om1zKDEw
KTsKKyAgfSk7CisgIC8vIFRPRE8oc3J0ZSk6IHJlcGxhY2Ugd2l0aCBTaW11bGF0ZWRUaW1lQ2xp
ZW50IHdoZW4gaXQgc3VwcG9ydHMgcHJvYmluZy4KKyAgYXV0byogY2xpZW50ID0gcy5DcmVhdGVD
bGllbnQoInNlbmQiLCBbJl0oQ2FsbENsaWVudENvbmZpZyogYykgeworICAgIGMtPnRyYW5zcG9y
dC5jYyA9IFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWc6OkNvbmdlc3Rpb25Db250cm9sbGVyOjpr
R29vZ0NjOworICAgIGMtPnRyYW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlID0ga1N0YXJ0UmF0ZTsK
KyAgfSk7CisgIGF1dG8qIHJvdXRlID0gcy5DcmVhdGVSb3V0ZXMoY2xpZW50LCB7c2VuZF9uZXR9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuQ3JlYXRlQ2xpZW50KCJyZXR1cm4i
LCBDYWxsQ2xpZW50Q29uZmlnKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtz
LkNyZWF0ZVNpbXVsYXRpb25Ob2RlKE5ldHdvcmtOb2RlQ29uZmlnKCkpfSk7CisgIHMuQ3JlYXRl
VmlkZW9TdHJlYW0ocm91dGUtPmZvcndhcmQoKSwgVmlkZW9TdHJlYW1Db25maWcoKSk7CisgIC8v
IFRyaWdnZXIgcmVyb3V0ZSBtZXNzYWdlLCBidXQga2VlcCB0cmFuc3BvcnQgdW5jaGFuZ2VkLgor
ICBzLkNoYW5nZVJvdXRlKHJvdXRlLT5mb3J3YXJkKCksIHtzZW5kX25ldH0pOworCisgIC8vIEFs
bG93IHRoZSBjb250cm9sbGVyIHRvIHN0YWJpbGl6ZS4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjpt
cyg1MDApKTsKKyAgRVhQRUNUX05FQVIoY2xpZW50LT5zZW5kX2JhbmR3aWR0aCgpLmticHMoKSwg
a0xpbmtDYXBhY2l0eS5rYnBzKCksIDUwKTsKKyAgcy5DaGFuZ2VSb3V0ZShyb3V0ZS0+Zm9yd2Fy
ZCgpLCB7c2VuZF9uZXR9KTsKKyAgLy8gQWxsb3cgbmV3IHNldHRpbmdzIHRvIHByb3BhZ2F0ZS4K
KyAgcy5SdW5Gb3IoVGltZURlbHRhOjptcygxMDApKTsKKyAgLy8gVW5kZXIgdGhlIHRyaWFsLCB0
aGUgdGFyZ2V0IHNob3VsZCBiZSB1bmNoYW5nZWQgZm9yIGxvdyByYXRlcy4KKyAgRVhQRUNUX05F
QVIoY2xpZW50LT5zZW5kX2JhbmR3aWR0aCgpLmticHMoKSwga0xpbmtDYXBhY2l0eS5rYnBzKCks
IDUwKTsKK30KKworVEVTVChHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIEN1dHNIaWdoUmF0
ZUluU2FmZVJlc2V0VHJpYWwpIHsKKyAgY29uc3QgRGF0YVJhdGUga0xpbmtDYXBhY2l0eSA9IERh
dGFSYXRlOjprYnBzKDEwMDApOworICBjb25zdCBEYXRhUmF0ZSBrU3RhcnRSYXRlID0gRGF0YVJh
dGU6OmticHMoMzAwKTsKKworICBTY29wZWRGaWVsZFRyaWFscyB0cmlhbCgiV2ViUlRDLUJ3ZS1T
YWZlUmVzZXRPblJvdXRlQ2hhbmdlL0VuYWJsZWQvIik7CisgIFNjZW5hcmlvIHMoImdvb2djY191
bml0L3NhZmVfcmVzZXRfaGlnaF9jdXQiLCB0cnVlKTsKKyAgYXV0byBzZW5kX25ldCA9IHMuQ3Jl
YXRlU2ltdWxhdGlvbk5vZGUoWyZdKE5ldHdvcmtOb2RlQ29uZmlnKiBjKSB7CisgICAgYy0+c2lt
dWxhdGlvbi5iYW5kd2lkdGggPSBrTGlua0NhcGFjaXR5OworICAgIGMtPnNpbXVsYXRpb24uZGVs
YXkgPSBUaW1lRGVsdGE6Om1zKDUwKTsKKyAgfSk7CisgIC8vIFRPRE8oc3J0ZSk6IHJlcGxhY2Ug
d2l0aCBTaW11bGF0ZWRUaW1lQ2xpZW50IHdoZW4gaXQgc3VwcG9ydHMgcHJvYmluZy4KKyAgYXV0
byogY2xpZW50ID0gcy5DcmVhdGVDbGllbnQoInNlbmQiLCBbJl0oQ2FsbENsaWVudENvbmZpZyog
YykgeworICAgIGMtPnRyYW5zcG9ydC5jYyA9IFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWc6OkNv
bmdlc3Rpb25Db250cm9sbGVyOjprR29vZ0NjOworICAgIGMtPnRyYW5zcG9ydC5yYXRlcy5zdGFy
dF9yYXRlID0ga1N0YXJ0UmF0ZTsKKyAgfSk7CisgIGF1dG8qIHJvdXRlID0gcy5DcmVhdGVSb3V0
ZXMoY2xpZW50LCB7c2VuZF9uZXR9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMu
Q3JlYXRlQ2xpZW50KCJyZXR1cm4iLCBDYWxsQ2xpZW50Q29uZmlnKCkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHtzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKE5ldHdvcmtOb2RlQ29u
ZmlnKCkpfSk7CisgIHMuQ3JlYXRlVmlkZW9TdHJlYW0ocm91dGUtPmZvcndhcmQoKSwgVmlkZW9T
dHJlYW1Db25maWcoKSk7CisKKyAgcy5DaGFuZ2VSb3V0ZShyb3V0ZS0+Zm9yd2FyZCgpLCB7c2Vu
ZF9uZXR9KTsKKyAgLy8gQWxsb3cgdGhlIGNvbnRyb2xsZXIgdG8gc3RhYmlsaXplLgorICBzLlJ1
bkZvcihUaW1lRGVsdGE6Om1zKDUwMCkpOworICBFWFBFQ1RfTkVBUihjbGllbnQtPnNlbmRfYmFu
ZHdpZHRoKCkua2JwcygpLCBrTGlua0NhcGFjaXR5LmticHMoKSwgMzAwKTsKKyAgcy5DaGFuZ2VS
b3V0ZShyb3V0ZS0+Zm9yd2FyZCgpLCB7c2VuZF9uZXR9KTsKKyAgLy8gQWxsb3cgbmV3IHNldHRp
bmdzIHRvIHByb3BhZ2F0ZS4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjptcyg1MCkpOworICAvLyBV
bmRlciB0aGUgdHJpYWwsIHRoZSB0YXJnZXQgc2hvdWxkIGJlIHJlc2V0IGZyb20gaGlnaCB2YWx1
ZXMuCisgIEVYUEVDVF9ORUFSKGNsaWVudC0+c2VuZF9iYW5kd2lkdGgoKS5rYnBzKCksIGtTdGFy
dFJhdGUua2JwcygpLCAzMCk7Cit9CisKKyNpZmRlZiBXRUJSVENfTElOVVggIC8vIGJ1Z3Mud2Vi
cnRjLm9yZy8xMDAzNgorI2RlZmluZSBNQVlCRV9EZXRlY3RzSGlnaFJhdGVJblNhZmVSZXNldFRy
aWFsIFwKKyAgRElTQUJMRURfRGV0ZWN0c0hpZ2hSYXRlSW5TYWZlUmVzZXRUcmlhbAorI2Vsc2UK
KyNkZWZpbmUgTUFZQkVfRGV0ZWN0c0hpZ2hSYXRlSW5TYWZlUmVzZXRUcmlhbCBEZXRlY3RzSGln
aFJhdGVJblNhZmVSZXNldFRyaWFsCisjZW5kaWYKK1RFU1QoR29vZ0NjTmV0d29ya0NvbnRyb2xs
ZXJUZXN0LCBNQVlCRV9EZXRlY3RzSGlnaFJhdGVJblNhZmVSZXNldFRyaWFsKSB7CisgIFNjb3Bl
ZEZpZWxkVHJpYWxzIHRyaWFsKCJXZWJSVEMtQndlLVNhZmVSZXNldE9uUm91dGVDaGFuZ2UvRW5h
YmxlZC8iKTsKKyAgY29uc3QgRGF0YVJhdGUga0luaXRpYWxMaW5rQ2FwYWNpdHkgPSBEYXRhUmF0
ZTo6a2JwcygyMDApOworICBjb25zdCBEYXRhUmF0ZSBrTmV3TGlua0NhcGFjaXR5ID0gRGF0YVJh
dGU6OmticHMoODAwKTsKKyAgY29uc3QgRGF0YVJhdGUga1N0YXJ0UmF0ZSA9IERhdGFSYXRlOjpr
YnBzKDMwMCk7CisKKyAgU2NlbmFyaW8gcygiZ29vZ2NjX3VuaXQvc2FmZV9yZXNldF9oaWdoX2Rl
dGVjdCIsIHRydWUpOworICBhdXRvKiBpbml0aWFsX25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5v
ZGUoWyZdKE5ldHdvcmtOb2RlQ29uZmlnKiBjKSB7CisgICAgYy0+c2ltdWxhdGlvbi5iYW5kd2lk
dGggPSBrSW5pdGlhbExpbmtDYXBhY2l0eTsKKyAgICBjLT5zaW11bGF0aW9uLmRlbGF5ID0gVGlt
ZURlbHRhOjptcyg1MCk7CisgIH0pOworICBhdXRvKiBuZXdfbmV0ID0gcy5DcmVhdGVTaW11bGF0
aW9uTm9kZShbJl0oTmV0d29ya05vZGVDb25maWcqIGMpIHsKKyAgICBjLT5zaW11bGF0aW9uLmJh
bmR3aWR0aCA9IGtOZXdMaW5rQ2FwYWNpdHk7CisgICAgYy0+c2ltdWxhdGlvbi5kZWxheSA9IFRp
bWVEZWx0YTo6bXMoNTApOworICB9KTsKKyAgLy8gVE9ETyhzcnRlKTogcmVwbGFjZSB3aXRoIFNp
bXVsYXRlZFRpbWVDbGllbnQgd2hlbiBpdCBzdXBwb3J0cyBwcm9iaW5nLgorICBhdXRvKiBjbGll
bnQgPSBzLkNyZWF0ZUNsaWVudCgic2VuZCIsIFsmXShDYWxsQ2xpZW50Q29uZmlnKiBjKSB7Cisg
ICAgYy0+dHJhbnNwb3J0LmNjID0gVHJhbnNwb3J0Q29udHJvbGxlckNvbmZpZzo6Q29uZ2VzdGlv
bkNvbnRyb2xsZXI6OmtHb29nQ2M7CisgICAgYy0+dHJhbnNwb3J0LnJhdGVzLnN0YXJ0X3JhdGUg
PSBrU3RhcnRSYXRlOworICB9KTsKKyAgYXV0byogcm91dGUgPSBzLkNyZWF0ZVJvdXRlcyhjbGll
bnQsIHtpbml0aWFsX25ldH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5DcmVh
dGVDbGllbnQoInJldHVybiIsIENhbGxDbGllbnRDb25maWcoKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge3MuQ3JlYXRlU2ltdWxhdGlvbk5vZGUoTmV0d29ya05vZGVDb25maWco
KSl9KTsKKyAgcy5DcmVhdGVWaWRlb1N0cmVhbShyb3V0ZS0+Zm9yd2FyZCgpLCBWaWRlb1N0cmVh
bUNvbmZpZygpKTsKKyAgcy5DaGFuZ2VSb3V0ZShyb3V0ZS0+Zm9yd2FyZCgpLCB7aW5pdGlhbF9u
ZXR9KTsKKworICAvLyBBbGxvdyB0aGUgY29udHJvbGxlciB0byBzdGFiaWxpemUuCisgIHMuUnVu
Rm9yKFRpbWVEZWx0YTo6bXMoMTAwMCkpOworICBFWFBFQ1RfTkVBUihjbGllbnQtPnNlbmRfYmFu
ZHdpZHRoKCkua2JwcygpLCBrSW5pdGlhbExpbmtDYXBhY2l0eS5rYnBzKCksIDUwKTsKKyAgcy5D
aGFuZ2VSb3V0ZShyb3V0ZS0+Zm9yd2FyZCgpLCB7bmV3X25ldH0pOworICAvLyBBbGxvdyBuZXcg
c2V0dGluZ3MgdG8gcHJvcGFnYXRlLgorICBzLlJ1bkZvcihUaW1lRGVsdGE6Om1zKDEwMCkpOwor
ICAvLyBVbmRlciB0aGUgZmllbGQgdHJpYWwsIHRoZSB0YXJnZXQgcmF0ZSBzaG91bGQgYmUgdW5j
aGFuZ2VkIHNpbmNlIGl0J3MgbG93ZXIKKyAgLy8gdGhhbiB0aGUgc3RhcnRpbmcgcmF0ZS4KKyAg
RVhQRUNUX05FQVIoY2xpZW50LT5zZW5kX2JhbmR3aWR0aCgpLmticHMoKSwga0luaXRpYWxMaW5r
Q2FwYWNpdHkua2JwcygpLCA1MCk7CisgIC8vIEhvd2V2ZXIsIHByb2Jpbmcgc2hvdWxkIGhhdmUg
bWFkZSB1cyBkZXRlY3QgdGhlIGhpZ2hlciByYXRlLgorICBzLlJ1bkZvcihUaW1lRGVsdGE6Om1z
KDIwMDApKTsKKyAgRVhQRUNUX05FQVIoY2xpZW50LT5zZW5kX2JhbmR3aWR0aCgpLmticHMoKSwg
a05ld0xpbmtDYXBhY2l0eS5rYnBzKCksIDIwMCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0
Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
Z29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbF91bml0dGVzdC5jYwppbmRleCBlM2YzYWJm
MmIxMWViZTExNjRmYzNmZDZjYWVjNDlmOWVmOGM0YzM3Li5mZWNkMWIzMmQ0NjRiY2FiMDRhYWYz
N2FjYmYwZTQ5YjQwYTEzYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dv
b2dfY2NfbmV0d29ya19jb250cm9sX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dv
b2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfdW5pdHRlc3QuY2MKQEAgLTgsMTIgKzgsMTIg
QEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KICAqLwogCisjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9nb29nX2NjX2ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L3Rlc3QvbmV0d29ya19jb250cm9sX3Rlc3Rl
ci5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9tb2NrL21vY2tfcnRjX2V2ZW50
X2xvZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2Mv
aW5jbHVkZS9nb29nX2NjX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJ0ZXN0L3NjZW5hcmlvL3NjZW5h
cmlvLmgiCi0KKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9n
dGVzdC5oIgorI2luY2x1ZGUgInRlc3Qvc2NlbmFyaW8vc2NlbmFyaW8uaCIKIAogdXNpbmcgdGVz
dGluZzo6RmllbGQ7CiB1c2luZyB0ZXN0aW5nOjpNYXRjaGVyOwpAQCAtODQsOSArODQsOSBAQCBj
bGFzcyBHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNlZFBhY2tldEluZm8gcGFjaW5nX2lu
Zm8pIHsKICAgICBQYWNrZXRSZXN1bHQgcGFja2V0X3Jlc3VsdDsKICAgICBwYWNrZXRfcmVzdWx0
LnNlbnRfcGFja2V0ID0gU2VudFBhY2tldCgpOwotICAgIHBhY2tldF9yZXN1bHQuc2VudF9wYWNr
ZXQtPnNlbmRfdGltZSA9IFRpbWVzdGFtcDo6bXMoc2VuZF90aW1lX21zKTsKLSAgICBwYWNrZXRf
cmVzdWx0LnNlbnRfcGFja2V0LT5zaXplID0gRGF0YVNpemU6OmJ5dGVzKHBheWxvYWRfc2l6ZSk7
Ci0gICAgcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC0+cGFjaW5nX2luZm8gPSBwYWNpbmdfaW5m
bzsKKyAgICBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LnNlbmRfdGltZSA9IFRpbWVzdGFtcDo6
bXMoc2VuZF90aW1lX21zKTsKKyAgICBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LnNpemUgPSBE
YXRhU2l6ZTo6Ynl0ZXMocGF5bG9hZF9zaXplKTsKKyAgICBwYWNrZXRfcmVzdWx0LnNlbnRfcGFj
a2V0LnBhY2luZ19pbmZvID0gcGFjaW5nX2luZm87CiAgICAgcGFja2V0X3Jlc3VsdC5yZWNlaXZl
X3RpbWUgPSBUaW1lc3RhbXA6Om1zKGFycml2YWxfdGltZV9tcyk7CiAgICAgcmV0dXJuIHBhY2tl
dF9yZXN1bHQ7CiAgIH0KQEAgLTEyMiw3ICsxMjIsNyBAQCBjbGFzcyBHb29nQ2NOZXR3b3JrQ29u
dHJvbGxlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgICBDcmVhdGVS
ZXN1bHQoY3VycmVudF90aW1lXy5tcygpICsgZGVsYXlfYnVpbGR1cCwgY3VycmVudF90aW1lXy5t
cygpLAogICAgICAgICAgICAgICAgICAgICAgICBrUGF5bG9hZFNpemUsIFBhY2VkUGFja2V0SW5m
bygpKTsKICAgICAgIGRlbGF5X2J1aWxkdXAgKz0gZGVsYXk7Ci0gICAgICBjb250cm9sbGVyXy0+
T25TZW50UGFja2V0KCpwYWNrZXQuc2VudF9wYWNrZXQpOworICAgICAgY29udHJvbGxlcl8tPk9u
U2VudFBhY2tldChwYWNrZXQuc2VudF9wYWNrZXQpOwogICAgICAgVHJhbnNwb3J0UGFja2V0c0Zl
ZWRiYWNrIGZlZWRiYWNrOwogICAgICAgZmVlZGJhY2suZmVlZGJhY2tfdGltZSA9IHBhY2tldC5y
ZWNlaXZlX3RpbWU7CiAgICAgICBmZWVkYmFjay5wYWNrZXRfZmVlZGJhY2tzLnB1c2hfYmFjayhw
YWNrZXQpOwpAQCAtMjEzLDE2ICsyMTMsMTMgQEAgVEVTVF9GKEdvb2dDY05ldHdvcmtDb250cm9s
bGVyVGVzdCwgTG9uZ0ZlZWRiYWNrRGVsYXlzKSB7CiAgICAgcGFja2V0cy5wdXNoX2JhY2soCiAg
ICAgICAgIENyZWF0ZVJlc3VsdChpICogMTAwICsgNDAsIDIgKiBpICogMTAwICsgNDAsIDE1MDAs
IGtQYWNpbmdJbmZvMSkpOwogCisgICAgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrIGZlZWRiYWNr
OwogICAgIGZvciAoUGFja2V0UmVzdWx0JiBwYWNrZXQgOiBwYWNrZXRzKSB7Ci0gICAgICBjb250
cm9sbGVyXy0+T25TZW50UGFja2V0KCpwYWNrZXQuc2VudF9wYWNrZXQpOwotICAgICAgLy8gU2lt
dWxhdGUgcGFja2V0IHRpbWVvdXQKLSAgICAgIHBhY2tldC5zZW50X3BhY2tldCA9IGFic2w6Om51
bGxvcHQ7CisgICAgICBjb250cm9sbGVyXy0+T25TZW50UGFja2V0KHBhY2tldC5zZW50X3BhY2tl
dCk7CisgICAgICBmZWVkYmFjay5zZW5kbGVzc19hcnJpdmFsX3RpbWVzLnB1c2hfYmFjayhwYWNr
ZXQucmVjZWl2ZV90aW1lKTsKICAgICB9CiAKLSAgICBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2sg
ZmVlZGJhY2s7CiAgICAgZmVlZGJhY2suZmVlZGJhY2tfdGltZSA9IHBhY2tldHNbMF0ucmVjZWl2
ZV90aW1lOwotICAgIGZlZWRiYWNrLnBhY2tldF9mZWVkYmFja3MgPSBwYWNrZXRzOwotCiAgICAg
QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa0ZlZWRiYWNrVGltZW91dE1zKTsKICAgICBTZW50UGFj
a2V0IGxhdGVyX3BhY2tldDsKICAgICBsYXRlcl9wYWNrZXQuc2VuZF90aW1lID0gVGltZXN0YW1w
OjptcyhrRmVlZGJhY2tUaW1lb3V0TXMgKyBpICogMjAwICsgNDApOwpAQCAtMjQ2LDcgKzI0Myw3
IEBAIFRFU1RfRihHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIExvbmdGZWVkYmFja0RlbGF5
cykgewogICAgIHBhY2tldHMucHVzaF9iYWNrKENyZWF0ZVJlc3VsdCgxNDAsIDI0MCwgMTUwMCwg
a1BhY2luZ0luZm8xKSk7CiAKICAgICBmb3IgKGNvbnN0IFBhY2tldFJlc3VsdCYgcGFja2V0IDog
cGFja2V0cykKLSAgICAgIGNvbnRyb2xsZXJfLT5PblNlbnRQYWNrZXQoKnBhY2tldC5zZW50X3Bh
Y2tldCk7CisgICAgICBjb250cm9sbGVyXy0+T25TZW50UGFja2V0KHBhY2tldC5zZW50X3BhY2tl
dCk7CiAKICAgICBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2sgZmVlZGJhY2s7CiAgICAgZmVlZGJh
Y2suZmVlZGJhY2tfdGltZSA9IHBhY2tldHNbMF0ucmVjZWl2ZV90aW1lOwpAQCAtMzA4LDggKzMw
NSw1MSBAQCBURVNUX0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LAogICAgICAgICAgICAg
ICAyMCk7CiB9CiAKLVRFU1RfRihHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIFNjZW5hcmlv
UXVpY2tUZXN0KSB7Ci0gIFNjZW5hcmlvIHMoImdvb2djY191bml0L3NjZW5hcmlvX3F1aWNrIiwg
ZmFsc2UpOworVEVTVF9GKEdvb2dDY05ldHdvcmtDb250cm9sbGVyVGVzdCwgTGltaXRzVG9NaW5S
YXRlSWZSdHRJc0hpZ2hJblRyaWFsKSB7CisgIC8vIFRoZSBmaWVsZCB0cmlhbCBsaW1pdHMgbWF4
aW11bSBSVFQgdG8gMiBzZWNvbmRzLCBoaWdoZXIgUlRUIG1lYW5zIHRoYXQgdGhlCisgIC8vIGNv
bnRyb2xsZXIgYmFja3Mgb2ZmIHVudGlsIGl0IHJlYWNoZXMgdGhlIG1pbmltdW0gY29uZmlndXJl
ZCBiaXRyYXRlLiBUaGlzCisgIC8vIGFsbG93cyB0aGUgUlRUIHRvIHJlY292ZXIgZmFzdGVyIHRo
YW4gdGhlIHJlZ3VsYXIgY29udHJvbCBtZWNoYW5pc20gd291bGQKKyAgLy8gYWNoaWV2ZS4KKyAg
U2NvcGVkRmllbGRUcmlhbHMgdHJpYWwoIldlYlJUQy1Cd2UtTWF4UnR0TGltaXQvbGltaXQ6MnMv
Iik7CisgIC8vIEluIHRoZSB0ZXN0IGNhc2UsIHdlIGxpbWl0IHRoZSBjYXBhY2l0eSBhbmQgYWRk
IGEgY3Jvc3MgdHJhZmZpYyBwYWNrZXQKKyAgLy8gYnVyc3QgdGhhdCBibG9ja3MgbWVkaWEgZnJv
bSBiZWluZyBzZW50LiBUaGlzIGNhdXNlcyB0aGUgUlRUIHRvIHF1aWNrbHkKKyAgLy8gaW5jcmVh
c2UgYWJvdmUgdGhlIHRocmVzaG9sZCBpbiB0aGUgdHJpYWwuCisgIGNvbnN0IERhdGFSYXRlIGtM
aW5rQ2FwYWNpdHkgPSBEYXRhUmF0ZTo6a2JwcygxMDApOworICBjb25zdCBEYXRhUmF0ZSBrTWlu
UmF0ZSA9IERhdGFSYXRlOjprYnBzKDIwKTsKKyAgY29uc3QgVGltZURlbHRhIGtCdWZmZXJCbG9h
dER1cmF0aW9uID0gVGltZURlbHRhOjpzZWNvbmRzKDEwKTsKKyAgU2NlbmFyaW8gcygiZ29vZ2Nj
X3VuaXQvbGltaXRfdHJpYWwiLCBmYWxzZSk7CisgIE5ldHdvcmtOb2RlQ29uZmlnIG5ldF9jb25m
OworICBhdXRvIHNlbmRfbmV0ID0gcy5DcmVhdGVTaW11bGF0aW9uTm9kZShbPV0oTmV0d29ya05v
ZGVDb25maWcqIGMpIHsKKyAgICBjLT5zaW11bGF0aW9uLmJhbmR3aWR0aCA9IGtMaW5rQ2FwYWNp
dHk7CisgICAgYy0+c2ltdWxhdGlvbi5kZWxheSA9IFRpbWVEZWx0YTo6bXMoMTAwKTsKKyAgICBj
LT51cGRhdGVfZnJlcXVlbmN5ID0gVGltZURlbHRhOjptcyg1KTsKKyAgfSk7CisgIGF1dG8gcmV0
X25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUoW10oTmV0d29ya05vZGVDb25maWcqIGMpIHsK
KyAgICBjLT5zaW11bGF0aW9uLmRlbGF5ID0gVGltZURlbHRhOjptcygxMDApOworICAgIGMtPnVw
ZGF0ZV9mcmVxdWVuY3kgPSBUaW1lRGVsdGE6Om1zKDUpOworICB9KTsKKyAgU2ltdWxhdGVkVGlt
ZUNsaWVudENvbmZpZyBjb25maWc7CisgIGNvbmZpZy50cmFuc3BvcnQuY2MgPQorICAgICAgVHJh
bnNwb3J0Q29udHJvbGxlckNvbmZpZzo6Q29uZ2VzdGlvbkNvbnRyb2xsZXI6OmtHb29nQ2M7Cisg
IGNvbmZpZy50cmFuc3BvcnQucmF0ZXMubWluX3JhdGUgPSBrTWluUmF0ZTsKKyAgY29uZmlnLnRy
YW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlID0ga0xpbmtDYXBhY2l0eTsKKyAgU2ltdWxhdGVkVGlt
ZUNsaWVudCogY2xpZW50ID0gcy5DcmVhdGVTaW11bGF0ZWRUaW1lQ2xpZW50KAorICAgICAgInNl
bmQiLCBjb25maWcsIHtQYWNrZXRTdHJlYW1Db25maWcoKX0sIHtzZW5kX25ldH0sIHtyZXRfbmV0
fSk7CisgIC8vIFJ1biBmb3IgYSBmZXcgc2Vjb25kcyB0byBhbGxvdyB0aGUgY29udHJvbGxlciB0
byBzdGFiaWxpemUuCisgIHMuUnVuRm9yKFRpbWVEZWx0YTo6c2Vjb25kcygxMCkpOworICBjb25z
dCBEYXRhU2l6ZSBrQmxvYXRQYWNrZXRTaXplID0gRGF0YVNpemU6OmJ5dGVzKDEwMDApOworICBj
b25zdCBpbnQga0Jsb2F0UGFja2V0Q291bnQgPQorICAgICAgc3RhdGljX2Nhc3Q8aW50PihrQnVm
ZmVyQmxvYXREdXJhdGlvbiAqIGtMaW5rQ2FwYWNpdHkgLyBrQmxvYXRQYWNrZXRTaXplKTsKKyAg
Ly8gVGhpcyB3aWxsIGNhdXNlIHRoZSBSVFQgdG8gYmUgbGFyZ2UgZm9yIGEgd2hpbGUuCisgIHMu
VHJpZ2dlclBhY2tldEJ1cnN0KHtzZW5kX25ldH0sIGtCbG9hdFBhY2tldENvdW50LCBrQmxvYXRQ
YWNrZXRTaXplLmJ5dGVzKCkpOworICAvLyBXYWl0IHRvIGFsbG93IHRoZSBoaWdoIFJUVCB0byBi
ZSBkZXRlY3RlZCBhbmQgYWN0ZWQgdXBvbi4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjpzZWNvbmRz
KDQpKTsKKyAgLy8gQnkgbm93IHRoZSB0YXJnZXQgcmF0ZSBzaG91bGQgaGF2ZSBkcm9wcGVkIHRv
IHRoZSBtaW5pbXVtIGNvbmZpZ3VyZWQgcmF0ZS4KKyAgRVhQRUNUX05FQVIoY2xpZW50LT50YXJn
ZXRfcmF0ZV9rYnBzKCksIGtNaW5SYXRlLmticHMoKSwgMSk7Cit9CisKK1RFU1RfRihHb29nQ2NO
ZXR3b3JrQ29udHJvbGxlclRlc3QsIFVwZGF0ZXNUYXJnZXRSYXRlQmFzZWRPbkxpbmtDYXBhY2l0
eSkgeworICBTY2VuYXJpbyBzKCJnb29nY2NfdW5pdC90YXJnZXRfY2FwYWNpdHkiLCBmYWxzZSk7
CiAgIFNpbXVsYXRlZFRpbWVDbGllbnRDb25maWcgY29uZmlnOwogICBjb25maWcudHJhbnNwb3J0
LmNjID0KICAgICAgIFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWc6OkNvbmdlc3Rpb25Db250cm9s
bGVyOjprR29vZ0NjRmVlZGJhY2s7CkBAIC0zNTksNSArMzk5LDYxIEBAIFRFU1RfRihHb29nQ2NO
ZXR3b3JrQ29udHJvbGxlclRlc3QsIFNjZW5hcmlvUXVpY2tUZXN0KSB7CiAgIEVYUEVDVF9ORUFS
KGNsaWVudC0+dGFyZ2V0X3JhdGVfa2JwcygpLCA5MCwgMjApOwogfQogCitURVNUX0YoR29vZ0Nj
TmV0d29ya0NvbnRyb2xsZXJUZXN0LCBEZWZhdWx0RXN0aW1hdGVWYXJpZXNJblN0ZWFkeVN0YXRl
KSB7CisgIFNjb3BlZEZpZWxkVHJpYWxzIHRyaWFsKCJXZWJSVEMtQndlLVN0YWJsZUJhbmR3aWR0
aEVzdGltYXRlL0Rpc2FibGVkLyIpOworICBTY2VuYXJpbyBzKCJnb29nY2NfdW5pdC9ub19zdGFi
bGVfdmFyaWVzIiwgZmFsc2UpOworICBTaW11bGF0ZWRUaW1lQ2xpZW50Q29uZmlnIGNvbmZpZzsK
KyAgY29uZmlnLnRyYW5zcG9ydC5jYyA9CisgICAgICBUcmFuc3BvcnRDb250cm9sbGVyQ29uZmln
OjpDb25nZXN0aW9uQ29udHJvbGxlcjo6a0dvb2dDY0ZlZWRiYWNrOworICBOZXR3b3JrTm9kZUNv
bmZpZyBuZXRfY29uZjsKKyAgbmV0X2NvbmYuc2ltdWxhdGlvbi5iYW5kd2lkdGggPSBEYXRhUmF0
ZTo6a2Jwcyg1MDApOworICBuZXRfY29uZi5zaW11bGF0aW9uLmRlbGF5ID0gVGltZURlbHRhOjpt
cygxMDApOworICBuZXRfY29uZi51cGRhdGVfZnJlcXVlbmN5ID0gVGltZURlbHRhOjptcyg1KTsK
KyAgYXV0byBzZW5kX25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUobmV0X2NvbmYpOworICBh
dXRvIHJldF9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKG5ldF9jb25mKTsKKyAgU2ltdWxh
dGVkVGltZUNsaWVudCogY2xpZW50ID0gcy5DcmVhdGVTaW11bGF0ZWRUaW1lQ2xpZW50KAorICAg
ICAgInNlbmQiLCBjb25maWcsIHtQYWNrZXRTdHJlYW1Db25maWcoKX0sIHtzZW5kX25ldH0sIHty
ZXRfbmV0fSk7CisgIC8vIFJ1biBmb3IgYSB3aGlsZSB0byBhbGxvdyB0aGUgZXN0aW1hdGUgdG8g
c3RhYmlsaXplLgorICBzLlJ1bkZvcihUaW1lRGVsdGE6OnNlY29uZHMoMjApKTsKKyAgRGF0YVJh
dGUgbWluX2VzdGltYXRlID0gRGF0YVJhdGU6OlBsdXNJbmZpbml0eSgpOworICBEYXRhUmF0ZSBt
YXhfZXN0aW1hdGUgPSBEYXRhUmF0ZTo6TWludXNJbmZpbml0eSgpOworICAvLyBNZWFzdXJlIHZh
cmlhdGlvbiBpbiBzdGVhZHkgc3RhdGUuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMjA7ICsraSkg
eworICAgIG1pbl9lc3RpbWF0ZSA9IHN0ZDo6bWluKG1pbl9lc3RpbWF0ZSwgY2xpZW50LT5saW5r
X2NhcGFjaXR5KCkpOworICAgIG1heF9lc3RpbWF0ZSA9IHN0ZDo6bWF4KG1heF9lc3RpbWF0ZSwg
Y2xpZW50LT5saW5rX2NhcGFjaXR5KCkpOworICAgIHMuUnVuRm9yKFRpbWVEZWx0YTo6c2Vjb25k
cygxKSk7CisgIH0KKyAgLy8gV2Ugc2hvdWxkIGV4cGVjdCBkcm9wcyBieSBhdCBsZWFzdCAxNSUg
KGRlZmF1bHQgYmFja29mZi4pCisgIEVYUEVDVF9MVChtaW5fZXN0aW1hdGUgLyBtYXhfZXN0aW1h
dGUsIDAuODUpOworfQorCitURVNUX0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBTdGFi
bGVFc3RpbWF0ZURvZXNOb3RWYXJ5SW5TdGVhZHlTdGF0ZSkgeworICBTY29wZWRGaWVsZFRyaWFs
cyB0cmlhbCgiV2ViUlRDLUJ3ZS1TdGFibGVCYW5kd2lkdGhFc3RpbWF0ZS9FbmFibGVkLyIpOwor
ICBTY2VuYXJpbyBzKCJnb29nY2NfdW5pdC9zdGFibGVfaXNfc3RhYmxlIiwgZmFsc2UpOworICBT
aW11bGF0ZWRUaW1lQ2xpZW50Q29uZmlnIGNvbmZpZzsKKyAgY29uZmlnLnRyYW5zcG9ydC5jYyA9
CisgICAgICBUcmFuc3BvcnRDb250cm9sbGVyQ29uZmlnOjpDb25nZXN0aW9uQ29udHJvbGxlcjo6
a0dvb2dDY0ZlZWRiYWNrOworICBOZXR3b3JrTm9kZUNvbmZpZyBuZXRfY29uZjsKKyAgbmV0X2Nv
bmYuc2ltdWxhdGlvbi5iYW5kd2lkdGggPSBEYXRhUmF0ZTo6a2Jwcyg1MDApOworICBuZXRfY29u
Zi5zaW11bGF0aW9uLmRlbGF5ID0gVGltZURlbHRhOjptcygxMDApOworICBuZXRfY29uZi51cGRh
dGVfZnJlcXVlbmN5ID0gVGltZURlbHRhOjptcyg1KTsKKyAgYXV0byBzZW5kX25ldCA9IHMuQ3Jl
YXRlU2ltdWxhdGlvbk5vZGUobmV0X2NvbmYpOworICBhdXRvIHJldF9uZXQgPSBzLkNyZWF0ZVNp
bXVsYXRpb25Ob2RlKG5ldF9jb25mKTsKKyAgU2ltdWxhdGVkVGltZUNsaWVudCogY2xpZW50ID0g
cy5DcmVhdGVTaW11bGF0ZWRUaW1lQ2xpZW50KAorICAgICAgInNlbmQiLCBjb25maWcsIHtQYWNr
ZXRTdHJlYW1Db25maWcoKX0sIHtzZW5kX25ldH0sIHtyZXRfbmV0fSk7CisgIC8vIFJ1biBmb3Ig
YSB3aGlsZSB0byBhbGxvdyB0aGUgZXN0aW1hdGUgdG8gc3RhYmlsaXplLgorICBzLlJ1bkZvcihU
aW1lRGVsdGE6OnNlY29uZHMoMjApKTsKKyAgRGF0YVJhdGUgbWluX2VzdGltYXRlID0gRGF0YVJh
dGU6OlBsdXNJbmZpbml0eSgpOworICBEYXRhUmF0ZSBtYXhfZXN0aW1hdGUgPSBEYXRhUmF0ZTo6
TWludXNJbmZpbml0eSgpOworICAvLyBNZWFzdXJlIHZhcmlhdGlvbiBpbiBzdGVhZHkgc3RhdGUu
CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMjA7ICsraSkgeworICAgIG1pbl9lc3RpbWF0ZSA9IHN0
ZDo6bWluKG1pbl9lc3RpbWF0ZSwgY2xpZW50LT5saW5rX2NhcGFjaXR5KCkpOworICAgIG1heF9l
c3RpbWF0ZSA9IHN0ZDo6bWF4KG1heF9lc3RpbWF0ZSwgY2xpZW50LT5saW5rX2NhcGFjaXR5KCkp
OworICAgIHMuUnVuRm9yKFRpbWVEZWx0YTo6c2Vjb25kcygxKSk7CisgIH0KKyAgLy8gV2UgZXhw
ZWN0IG5vIHZhcmlhdGlvbiB1bmRlciB0aGUgdHJpYWwgaW4gc3RlYWR5IHN0YXRlLgorICBFWFBF
Q1RfR1QobWluX2VzdGltYXRlIC8gbWF4X2VzdGltYXRlLCAwLjk1KTsKK30KKwogfSAgLy8gbmFt
ZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2dvb2dfY2MvaW5jbHVkZS9nb29nX2NjX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvaW5jbHVkZS9nb29nX2NjX2ZhY3RvcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMGQ5MWZmZjY1ZmE5NmQ4YTVjYWMyNTFmYWJlODAzMjY2MDQ2NGFkNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2luY2x1ZGUvZ29vZ19jY19mYWN0b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0NPTkdFU1RJ
T05fQ09OVFJPTExFUl9HT09HX0NDX0lOQ0xVREVfR09PR19DQ19GQUNUT1JZX0hfCi0jZGVmaW5l
IE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX0dPT0dfQ0NfSU5DTFVERV9HT09HX0NDX0ZB
Q1RPUllfSF8KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25l
dHdvcmtfY29udHJvbC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIENsb2NrOwotY2xh
c3MgUnRjRXZlbnRMb2c7Ci0KLWNsYXNzIEdvb2dDY05ldHdvcmtDb250cm9sbGVyRmFjdG9yeQot
ICAgIDogcHVibGljIE5ldHdvcmtDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZSB7Ci0gcHVibGlj
OgotICBleHBsaWNpdCBHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3RvcnkoUnRjRXZlbnRMb2cq
KTsKLSAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250cm9sbGVySW50ZXJmYWNlPiBDcmVhdGUo
Ci0gICAgICBOZXR3b3JrQ29udHJvbGxlckNvbmZpZyBjb25maWcpIG92ZXJyaWRlOwotICBUaW1l
RGVsdGEgR2V0UHJvY2Vzc0ludGVydmFsKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgot
ICBSdGNFdmVudExvZyogY29uc3QgZXZlbnRfbG9nXzsKLX07Ci0KLS8vIEZhY3RvcnkgdG8gY3Jl
YXRlIHBhY2tldCBmZWVkYmFjayBvbmx5IEdvb2dDQywgdGhpcyBjYW4gYmUgdXNlZCBmb3IKLS8v
IGNvbm5lY3Rpb25zIHByb3ZpZGluZyBwYWNrZXQgcmVjZWl2ZSB0aW1lIGZlZWRiYWNrIGJ1dCBu
byBvdGhlciByZXBvcnRzLgotY2xhc3MgR29vZ0NjRmVlZGJhY2tOZXR3b3JrQ29udHJvbGxlckZh
Y3RvcnkKLSAgICA6IHB1YmxpYyBOZXR3b3JrQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2Ugewot
IHB1YmxpYzoKLSAgZXhwbGljaXQgR29vZ0NjRmVlZGJhY2tOZXR3b3JrQ29udHJvbGxlckZhY3Rv
cnkoUnRjRXZlbnRMb2cqKTsKLSAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250cm9sbGVySW50
ZXJmYWNlPiBDcmVhdGUoCi0gICAgICBOZXR3b3JrQ29udHJvbGxlckNvbmZpZyBjb25maWcpIG92
ZXJyaWRlOwotICBUaW1lRGVsdGEgR2V0UHJvY2Vzc0ludGVydmFsKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0KLSBwcml2YXRlOgotICBSdGNFdmVudExvZyogY29uc3QgZXZlbnRfbG9nXzsKLX07Ci19ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxFU19DT05HRVNUSU9OX0NPTlRS
T0xMRVJfR09PR19DQ19JTkNMVURFX0dPT0dfQ0NfRkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvZ29vZ19jYy9tZWRpYW5fc2xvcGVfZXN0aW1hdG9yLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvZ29vZ19jYy9tZWRpYW5fc2xvcGVfZXN0aW1hdG9yLmNjCmluZGV4IDBhZDc3MjgzMDJl
YzIwODc4ZjlhYTUwNGE1YmVjZDhjNTliZTYxMmYuLjQ1ZDJmZTMyMTE0ZWRlYTU5ZmU0MWZlZGI3
OGMyZDk5ZDdhZWFkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvbWVkaWFu
X3Nsb3BlX2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL21lZGlhbl9z
bG9wZV9lc3RpbWF0b3IuY2MKQEAgLTEwLDEyICsxMCwxMCBAQAogCiAjaW5jbHVkZSAibW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9tZWRpYW5fc2xvcGVfZXN0aW1hdG9yLmgi
CiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAi
bW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3QvYndlX3Rlc3Rf
bG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1hdG9yLmNjCmluZGV4IDBmMGQxN2VhNDhk
YjA2MjIxZTRjYmRmMTdmNTNiNzdlZjNjYjU3NTMuLjdiYTJmYjVhMTNiYzk0ZDI4NGVlNjU3ZWNl
NDgyODAxODg2ZGI3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVf
Yml0cmF0ZV9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9i
aXRyYXRlX2VzdGltYXRvci5jYwpAQCAtMTcwLDExICsxNzAsMTMgQEAgaW50IFByb2JlQml0cmF0
ZUVzdGltYXRvcjo6SGFuZGxlUHJvYmVBbmRFc3RpbWF0ZUJpdHJhdGUoCiAgIHJldHVybiAqZXN0
aW1hdGVkX2JpdHJhdGVfYnBzXzsKIH0KIAotYWJzbDo6b3B0aW9uYWw8aW50PgotUHJvYmVCaXRy
YXRlRXN0aW1hdG9yOjpGZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGVCcHMoKSB7Cith
YnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4KK1Byb2JlQml0cmF0ZUVzdGltYXRvcjo6RmV0Y2hBbmRS
ZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRlKCkgewogICBhYnNsOjpvcHRpb25hbDxpbnQ+IGVzdGlt
YXRlZF9iaXRyYXRlX2JwcyA9IGVzdGltYXRlZF9iaXRyYXRlX2Jwc187CiAgIGVzdGltYXRlZF9i
aXRyYXRlX2Jwc18ucmVzZXQoKTsKLSAgcmV0dXJuIGVzdGltYXRlZF9iaXRyYXRlX2JwczsKKyAg
aWYgKGVzdGltYXRlZF9iaXRyYXRlX2JwcykKKyAgICByZXR1cm4gRGF0YVJhdGU6OmJwcygqZXN0
aW1hdGVkX2JpdHJhdGVfYnBzKTsKKyAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CiB9CiAKIHZvaWQg
UHJvYmVCaXRyYXRlRXN0aW1hdG9yOjpFcmFzZU9sZENsdXN0ZXJzKGludDY0X3QgdGltZXN0YW1w
X21zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2JpdHJhdGVf
ZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1h
dG9yLmgKaW5kZXggZWQ5MjUyMTM3ZmVhMWFmZTNmY2ZiNmE3N2NhNGE0NDE1ODhiNmJlYS4uYWU4
M2VkMzgwZmViODc1YzZjOTRlYTQyNWFiOTZkOGFlY2Q5OThhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9iaXRyYXRlX2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2dvb2dfY2MvcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuaApAQCAtMjgsNyArMjgsNyBA
QCBjbGFzcyBQcm9iZUJpdHJhdGVFc3RpbWF0b3IgewogICAvLyBSZXR1cm5zIHRoZSBlc3RpbWF0
ZWQgYml0cmF0ZSBpZiB0aGUgcHJvYmUgY29tcGxldGVzIGEgdmFsaWQgY2x1c3Rlci4KICAgaW50
IEhhbmRsZVByb2JlQW5kRXN0aW1hdGVCaXRyYXRlKGNvbnN0IFBhY2tldEZlZWRiYWNrJiBwYWNr
ZXRfZmVlZGJhY2spOwogCi0gIGFic2w6Om9wdGlvbmFsPGludD4gRmV0Y2hBbmRSZXNldExhc3RF
c3RpbWF0ZWRCaXRyYXRlQnBzKCk7CisgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBGZXRjaEFu
ZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGUoKTsKIAogIHByaXZhdGU6CiAgIHN0cnVjdCBBZ2dy
ZWdhdGVkQ2x1c3RlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2Jl
X2JpdHJhdGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9w
cm9iZV9iaXRyYXRlX2VzdGltYXRvcl91bml0dGVzdC5jYwppbmRleCBmOGE0MGY4MzlmMzg1YTMw
MDViNGE2NjU3NzIyOTJkMDIwYWI4NTU1Li5mY2Y1NTU5MjQ1MzdhYjg2YWQ5M2RlMzQ4MzFlYmI2
NmQ4MmMwMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2JpdHJh
dGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJv
YmVfYml0cmF0ZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKQEAgLTIwMiw3ICsyMDIsNyBAQCBURVNU
X0YoVGVzdFByb2JlQml0cmF0ZUVzdGltYXRvciwgSWdub3JlU2l6ZUZpcnN0UmVjZWl2ZVBhY2tl
dCkgewogfQogCiBURVNUX0YoVGVzdFByb2JlQml0cmF0ZUVzdGltYXRvciwgTm9MYXN0RXN0aW1h
dGVkQml0cmF0ZUJwcykgewotICBFWFBFQ1RfRkFMU0UocHJvYmVfYml0cmF0ZV9lc3RpbWF0b3Jf
LkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZUJwcygpKTsKKyAgRVhQRUNUX0ZBTFNF
KHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy5GZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJh
dGUoKSk7CiB9CiAKIFRFU1RfRihUZXN0UHJvYmVCaXRyYXRlRXN0aW1hdG9yLCBGZXRjaExhc3RF
c3RpbWF0ZWRCaXRyYXRlQnBzKSB7CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBURVNUX0YoVGVzdFBy
b2JlQml0cmF0ZUVzdGltYXRvciwgRmV0Y2hMYXN0RXN0aW1hdGVkQml0cmF0ZUJwcykgewogICBB
ZGRQYWNrZXRGZWVkYmFjaygwLCAxMDAwLCAyMCwgMzApOwogICBBZGRQYWNrZXRGZWVkYmFjaygw
LCAxMDAwLCAzMCwgNDApOwogCi0gIGF1dG8gZXN0aW1hdGVkX2JpdHJhdGVfYnBzID0KLSAgICAg
IHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy5GZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJh
dGVCcHMoKTsKLSAgRVhQRUNUX1RSVUUoZXN0aW1hdGVkX2JpdHJhdGVfYnBzKTsKLSAgRVhQRUNU
X05FQVIoKmVzdGltYXRlZF9iaXRyYXRlX2JwcywgODAwMDAwLCAxMCk7Ci0gIEVYUEVDVF9GQUxT
RShwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8uRmV0Y2hBbmRSZXNldExhc3RFc3RpbWF0ZWRCaXRy
YXRlQnBzKCkpOworICBhdXRvIGVzdGltYXRlZF9iaXRyYXRlID0KKyAgICAgIHByb2JlX2JpdHJh
dGVfZXN0aW1hdG9yXy5GZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGUoKTsKKyAgRVhQ
RUNUX1RSVUUoZXN0aW1hdGVkX2JpdHJhdGUpOworICBFWFBFQ1RfTkVBUihlc3RpbWF0ZWRfYml0
cmF0ZS0+YnBzKCksIDgwMDAwMCwgMTApOworICBFWFBFQ1RfRkFMU0UocHJvYmVfYml0cmF0ZV9l
c3RpbWF0b3JfLkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZSgpKTsKIH0KIAogfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9w
cm9iZV9jb250cm9sbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9jb250cm9s
bGVyLmNjCmluZGV4IGMyYThlMDIzZDdkNDBlYjc4ZWU1MmM5MjQzYjUxZjYwN2NlNGI5MDQuLjdi
YmU4ZTcxMzhhNGU2Mjc2NzlmNmM0ODU2YjJlODQxZTM3ZjJkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvcHJvYmVfY29udHJvbGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL3Byb2JlX2NvbnRyb2xsZXIuY2MKQEAgLTE0Niw2ICsxNDYsNyBAQCBzdGQ6OnZl
Y3RvcjxQcm9iZUNsdXN0ZXJDb25maWc+IFByb2JlQ29udHJvbGxlcjo6T25NYXhUb3RhbEFsbG9j
YXRlZEJpdHJhdGUoCiAgICAgbWF4X3RvdGFsX2FsbG9jYXRlZF9iaXRyYXRlXyA9IG1heF90b3Rh
bF9hbGxvY2F0ZWRfYml0cmF0ZTsKICAgICByZXR1cm4gSW5pdGlhdGVQcm9iaW5nKGF0X3RpbWVf
bXMsIHttYXhfdG90YWxfYWxsb2NhdGVkX2JpdHJhdGV9LCBmYWxzZSk7CiAgIH0KKyAgbWF4X3Rv
dGFsX2FsbG9jYXRlZF9iaXRyYXRlXyA9IG1heF90b3RhbF9hbGxvY2F0ZWRfYml0cmF0ZTsKICAg
cmV0dXJuIHN0ZDo6dmVjdG9yPFByb2JlQ2x1c3RlckNvbmZpZz4oKTsKIH0KIApAQCAtMjYwLDYg
KzI2MSwxNiBAQCBzdGQ6OnZlY3RvcjxQcm9iZUNsdXN0ZXJDb25maWc+IFByb2JlQ29udHJvbGxl
cjo6UmVxdWVzdFByb2JlKAogICByZXR1cm4gc3RkOjp2ZWN0b3I8UHJvYmVDbHVzdGVyQ29uZmln
PigpOwogfQogCitzdGQ6OnZlY3RvcjxQcm9iZUNsdXN0ZXJDb25maWc+IFByb2JlQ29udHJvbGxl
cjo6SW5pdGlhdGVDYXBhY2l0eVByb2JpbmcoCisgICAgaW50NjRfdCBiaXRyYXRlX2JwcywKKyAg
ICBpbnQ2NF90IGF0X3RpbWVfbXMpIHsKKyAgaWYgKHN0YXRlXyAhPSBTdGF0ZTo6a1dhaXRpbmdG
b3JQcm9iaW5nUmVzdWx0KSB7CisgICAgUlRDX0RDSEVDSyhuZXR3b3JrX2F2YWlsYWJsZV8pOwor
ICAgIHJldHVybiBJbml0aWF0ZVByb2JpbmcoYXRfdGltZV9tcywgezIgKiBiaXRyYXRlX2Jwc30s
IHRydWUpOworICB9CisgIHJldHVybiBzdGQ6OnZlY3RvcjxQcm9iZUNsdXN0ZXJDb25maWc+KCk7
Cit9CisKIHZvaWQgUHJvYmVDb250cm9sbGVyOjpSZXNldChpbnQ2NF90IGF0X3RpbWVfbXMpIHsK
ICAgbmV0d29ya19hdmFpbGFibGVfID0gdHJ1ZTsKICAgc3RhdGVfID0gU3RhdGU6OmtJbml0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9jb250cm9sbGVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2NvbnRyb2xsZXIuaAppbmRleCA2YjZkNGFlOGI0
YjUyYTgxNWFhN2U4ZTRlZTkyMTYxYjdlNWQ2NmIzLi40ZGRkNzdmNzVjMzdiNmRiZDliNTM4OTNk
M2MwYjVlOTM5NDRjN2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2Jl
X2NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2NvbnRyb2xs
ZXIuaApAQCAtNjAsNiArNjAsOSBAQCBjbGFzcyBQcm9iZUNvbnRyb2xsZXIgewogICBSVENfV0FS
Tl9VTlVTRURfUkVTVUxUIHN0ZDo6dmVjdG9yPFByb2JlQ2x1c3RlckNvbmZpZz4gUmVxdWVzdFBy
b2JlKAogICAgICAgaW50NjRfdCBhdF90aW1lX21zKTsKIAorICBSVENfV0FSTl9VTlVTRURfUkVT
VUxUIHN0ZDo6dmVjdG9yPFByb2JlQ2x1c3RlckNvbmZpZz4KKyAgSW5pdGlhdGVDYXBhY2l0eVBy
b2JpbmcoaW50NjRfdCBiaXRyYXRlX2JwcywgaW50NjRfdCBhdF90aW1lX21zKTsKKwogICAvLyBS
ZXNldHMgdGhlIFByb2JlQ29udHJvbGxlciB0byBhIHN0YXRlIGVxdWl2YWxlbnQgdG8gYXMgaWYg
aXQgd2FzIGp1c3QKICAgLy8gY3JlYXRlZCBFWENFUFQgZm9yIHxlbmFibGVfcGVyaW9kaWNfYWxy
X3Byb2JpbmdffC4KICAgdm9pZCBSZXNldChpbnQ2NF90IGF0X3RpbWVfbXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90ZXN0L2dvb2dfY2NfcHJpbnRlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvdGVzdC9nb29nX2NjX3ByaW50ZXIuY2MKaW5kZXggMzI2NGIzN2U2
ZGRjMGU0NjM4YjU3ODE5YjBkZTg3ZWQwY2Q4NzY4ZC4uNTlhYWQ1MTFjMDA4YjA4MGNkZWY1YzVl
MmMzYjA1NDNiZmNiY2I1MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90ZXN0
L2dvb2dfY2NfcHJpbnRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Rlc3QvZ29v
Z19jY19wcmludGVyLmNjCkBAIC04LDYgKzgsOSBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAjaW5jbHVkZSAi
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90ZXN0L2dvb2dfY2NfcHJpbnRl
ci5oIgorCisjaW5jbHVkZSA8bWF0aC5oPgorCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvZ29vZ19jYy90cmVuZGxpbmVfZXN0aW1hdG9yLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewpAQCAtMzMsOSArMzYsMTEgQEAgdm9pZCBHb29nQ2NTdGF0ZVByaW50ZXI6OlByaW50
VmFsdWVzKEZJTEUqIG91dCkgewogICBSVENfQ0hFQ0soY29udHJvbGxlcl8pOwogICBhdXRvKiBk
ZXRlY3RvciA9IGNvbnRyb2xsZXJfLT5kZWxheV9iYXNlZF9id2VfLT5kZWxheV9kZXRlY3Rvcl8u
Z2V0KCk7CiAgIGF1dG8qIHRyZW5kbGluZV9lc3RpbWF0b3IgPSByZWludGVycHJldF9jYXN0PFRy
ZW5kbGluZUVzdGltYXRvcio+KGRldGVjdG9yKTsKLSAgZnByaW50ZihvdXQsICIlaSAlaSAlaSAl
LjZsZiAlLjZsZiAlLjZsZiIsCisgIGZwcmludGYob3V0LCAiJWkgJWYgJWkgJS42bGYgJS42bGYg
JS42bGYiLAogICAgICAgICAgIGNvbnRyb2xsZXJfLT5kZWxheV9iYXNlZF9id2VfLT5yYXRlX2Nv
bnRyb2xfLnJhdGVfY29udHJvbF9zdGF0ZV8sCi0gICAgICAgICAgY29udHJvbGxlcl8tPmRlbGF5
X2Jhc2VkX2J3ZV8tPnJhdGVfY29udHJvbF8ucmF0ZV9jb250cm9sX3JlZ2lvbl8sCisgICAgICAg
ICAgY29udHJvbGxlcl8tPmRlbGF5X2Jhc2VkX2J3ZV8tPnJhdGVfY29udHJvbF8KKyAgICAgICAg
ICAgICAgICAgIC5saW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlX29yKE5BTikgKgor
ICAgICAgICAgICAgICAxMDAwIC8gOCwKICAgICAgICAgICBjb250cm9sbGVyXy0+YWxyX2RldGVj
dG9yXy0+YWxyX3N0YXJ0ZWRfdGltZV9tc18uaGFzX3ZhbHVlKCksCiAgICAgICAgICAgdHJlbmRs
aW5lX2VzdGltYXRvci0+cHJldl90cmVuZF8sCiAgICAgICAgICAgdHJlbmRsaW5lX2VzdGltYXRv
ci0+cHJldl9tb2RpZmllZF90cmVuZF8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL3Rlc3QvZ29vZ19jY19wcmludGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Rlc3Qv
Z29vZ19jY19wcmludGVyLmgKaW5kZXggNGRmYzA1OWI0NzlhOTQ3NWFiZWI5NjFmNTM5YjU4Y2Rl
MDQwZDJjNC4uNWQ0ZjJjMTg0MGY0Yzk3YTgzMDc1ZjI5Y2M5ZGNjNmM2ZTU1N2FmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90ZXN0L2dvb2dfY2NfcHJpbnRlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL2dvb2dfY2MvdGVzdC9nb29nX2NjX3ByaW50ZXIuaApAQCAtMTIsOCAr
MTIsOCBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9n
b29nX2NjX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9pbmNsdWRlL2dvb2dfY2NfZmFjdG9yeS5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3Rlc3QvY29udHJvbGxlcl9w
cmludGVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy90cmVuZGxpbmVfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2Nj
L3RyZW5kbGluZV9lc3RpbWF0b3IuaAppbmRleCBhN2QyMmE5NTBlZmFkMDJkYzM4NzU2OWE3ZWIy
NDAwYWU4MWJmYzk3Li4xODI2ZDgxMjQ4MGU0NzIwNzAxYjg2OTYxYTU2ZTUxMDQxYTE5MDhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3RyZW5kbGluZV9lc3RpbWF0b3IuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3RyZW5kbGluZV9lc3RpbWF0b3IuaApAQCAtMTIs
MTEgKzEyLDExIEBACiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4K
LQogI2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2luY3JlYXNlX2RldGVjdG9y
X2ludGVyZmFjZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L2luY2x1ZGUvYndlX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
aW5jbHVkZS9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9pbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaAppbmRleCBiYTI2Mjcy
ZTZmYjQ3YjRjMjBkZjUzYTUxZjhmOWU4M2FjMTYxNDRmLi43NDZlNTkwYTU5ZjQxZTdhYmM0NDUy
ZjNjMzVlMTNiOWNiOTk5N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9pbmNsdWRlL3Nl
bmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9pbmNs
dWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaApAQCAtMTEzLDYgKzExMyw5IEBA
IGNsYXNzIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXIKIAogICB2b2lkIFNldEFsbG9jYXRl
ZEJpdHJhdGVXaXRob3V0RmVlZGJhY2sodWludDMyX3QgYml0cmF0ZV9icHMpIG92ZXJyaWRlOwog
CisgIHZvaWQgRW5hYmxlQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrKGludDY0X3QgYWNjZXB0ZWRf
cXVldWVfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHMpOworCiAgcHJpdmF0ZToKICAgdm9pZCBN
YXliZVRyaWdnZXJPbk5ldHdvcmtDaGFuZ2VkKCk7CiAKQEAgLTEzNiw3ICsxMzksNyBAQCBjbGFz
cyBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyCiAgICAgICBSVENfR1VBUkRFRF9CWShwcm9i
ZV9sb2NrXyk7CiAKICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFJhdGVMaW1pdGVyPiByZXRyYW5z
bWlzc2lvbl9yYXRlX2xpbWl0ZXJfOwotICBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIgdHJhbnNw
b3J0X2ZlZWRiYWNrX2FkYXB0ZXJfOworICBMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIg
dHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfOwogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBuZXR3
b3JrX3N0YXRlX2xvY2tfOwogICB1aW50MzJfdCBsYXN0X3JlcG9ydGVkX2JpdHJhdGVfYnBzXyBS
VENfR1VBUkRFRF9CWShuZXR3b3JrX3N0YXRlX2xvY2tfKTsKICAgdWludDhfdCBsYXN0X3JlcG9y
dGVkX2ZyYWN0aW9uX2xvc3NfIFJUQ19HVUFSREVEX0JZKG5ldHdvcmtfc3RhdGVfbG9ja18pOwpA
QCAtMTQ5LDYgKzE1Miw4IEBAIGNsYXNzIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXIKICAg
Ym9vbCBwYWNlcl9wYXVzZWRfOwogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBid2VfbG9ja187CiAg
IGludCBtaW5fYml0cmF0ZV9icHNfIFJUQ19HVUFSREVEX0JZKGJ3ZV9sb2NrXyk7CisgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9iZUJpdHJhdGVFc3RpbWF0b3I+IHByb2JlX2JpdHJhdGVfZXN0aW1hdG9y
XworICAgICAgUlRDX0dVQVJERURfQlkoYndlX2xvY2tfKTsKICAgc3RkOjp1bmlxdWVfcHRyPERl
bGF5QmFzZWRCd2U+IGRlbGF5X2Jhc2VkX2J3ZV8gUlRDX0dVQVJERURfQlkoYndlX2xvY2tfKTsK
ICAgYm9vbCBpbl9jd25kX2V4cGVyaW1lbnRfOwogICBpbnQ2NF90IGFjY2VwdGVkX3F1ZXVlX21z
XzsKQEAgLTE2MSw3ICsxNjYsNyBAQCBjbGFzcyBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVy
CiAgIGJvb2wgcGFjZXJfcHVzaGJhY2tfZXhwZXJpbWVudF8gPSBmYWxzZTsKICAgZmxvYXQgZW5j
b2RpbmdfcmF0ZV8gPSAxLjA7CiAKLSAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENvbmdlc3Rpb25X
aW5kb3dQdXNoYmFja0NvbnRyb2xsZXI+CisgIHN0ZDo6dW5pcXVlX3B0cjxDb25nZXN0aW9uV2lu
ZG93UHVzaGJhY2tDb250cm9sbGVyPgogICAgICAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tf
Y29udHJvbGxlcl87CiAKICAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhTZW5k
U2lkZUNvbmdlc3Rpb25Db250cm9sbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3Bj
Yy9tb25pdG9yX2ludGVydmFsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcGNjL21vbml0b3JfaW50ZXJ2
YWwuY2MKaW5kZXggZDQzMGI3ZjE3OTBhN2EzOGZlYmQ0MGFkYzYxNTJhNTlmNTQ2NTU0ZC4uMjgx
YjkyMjRmMGMzYmViMDUwM2YzNTMzNjE1N2ZmMDUxMDRjNDhlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvcGNjL21vbml0b3JfaW50ZXJ2YWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcGNj
L21vbml0b3JfaW50ZXJ2YWwuY2MKQEAgLTMxLDI1ICszMSwyNCBAQCBQY2NNb25pdG9ySW50ZXJ2
YWw6OlBjY01vbml0b3JJbnRlcnZhbChjb25zdCBQY2NNb25pdG9ySW50ZXJ2YWwmIG90aGVyKSA9
CiB2b2lkIFBjY01vbml0b3JJbnRlcnZhbDo6T25QYWNrZXRzRmVlZGJhY2soCiAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiYgcGFja2V0c19yZXN1bHRzKSB7CiAgIGZvciAoY29u
c3QgUGFja2V0UmVzdWx0JiBwYWNrZXRfcmVzdWx0IDogcGFja2V0c19yZXN1bHRzKSB7Ci0gICAg
aWYgKCFwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0Lmhhc192YWx1ZSgpIHx8Ci0gICAgICAgIHBh
Y2tldF9yZXN1bHQuc2VudF9wYWNrZXQtPnNlbmRfdGltZSA8PSBzdGFydF90aW1lXykgeworICAg
IGlmIChwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LnNlbmRfdGltZSA8PSBzdGFydF90aW1lXykg
ewogICAgICAgY29udGludWU7CiAgICAgfQogICAgIC8vIEhlcmUgd2UgYXNzdW1lIHRoYXQgaWYg
c29tZSBwYWNrZXRzIGFyZSByZW9yZGVyZWQgd2l0aCBwYWNrZXRzIHNlbnQKICAgICAvLyBhZnRl
ciB0aGUgZW5kIG9mIHRoZSBtb25pdG9yIGludGVydmFsLCB0aGVuIHRoZXkgYXJlIGxvc3QuIChP
dGhlcndpc2UKICAgICAvLyBpdCBpcyBub3QgY2xlYXIgaG93IGxvbmcgc2hvdWxkIHdlIHdhaXQg
Zm9yIHBhY2tldHMgZmVlZGJhY2sgdG8gYXJyaXZlKS4KLSAgICBpZiAocGFja2V0X3Jlc3VsdC5z
ZW50X3BhY2tldC0+c2VuZF90aW1lID4KKyAgICBpZiAocGFja2V0X3Jlc3VsdC5zZW50X3BhY2tl
dC5zZW5kX3RpbWUgPgogICAgICAgICBzdGFydF90aW1lXyArIGludGVydmFsX2R1cmF0aW9uXykg
ewogICAgICAgZmVlZGJhY2tfY29sbGVjdGlvbl9kb25lXyA9IHRydWU7CiAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmIChwYWNrZXRfcmVzdWx0LnJlY2VpdmVfdGltZS5Jc0luZmluaXRlKCkp
IHsKLSAgICAgIGxvc3RfcGFja2V0c19zZW50X3RpbWVfLnB1c2hfYmFjayhwYWNrZXRfcmVzdWx0
LnNlbnRfcGFja2V0LT5zZW5kX3RpbWUpOworICAgICAgbG9zdF9wYWNrZXRzX3NlbnRfdGltZV8u
cHVzaF9iYWNrKHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQuc2VuZF90aW1lKTsKICAgICB9IGVs
c2UgewogICAgICAgcmVjZWl2ZWRfcGFja2V0c18ucHVzaF9iYWNrKAotICAgICAgICAgIHtwYWNr
ZXRfcmVzdWx0LnJlY2VpdmVfdGltZSAtIHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQtPnNlbmRf
dGltZSwKLSAgICAgICAgICAgcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC0+c2VuZF90aW1lfSk7
Ci0gICAgICByZWNlaXZlZF9wYWNrZXRzX3NpemVfICs9IHBhY2tldF9yZXN1bHQuc2VudF9wYWNr
ZXQtPnNpemU7CisgICAgICAgICAge3BhY2tldF9yZXN1bHQucmVjZWl2ZV90aW1lIC0gcGFja2V0
X3Jlc3VsdC5zZW50X3BhY2tldC5zZW5kX3RpbWUsCisgICAgICAgICAgIHBhY2tldF9yZXN1bHQu
c2VudF9wYWNrZXQuc2VuZF90aW1lfSk7CisgICAgICByZWNlaXZlZF9wYWNrZXRzX3NpemVfICs9
IHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQuc2l6ZTsKICAgICB9CiAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL3BjYy9wY2NfbmV0d29ya19jb250cm9sbGVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvcGNjL3BjY19uZXR3b3JrX2NvbnRyb2xsZXIuY2MKaW5kZXggOThjZGE3NDA5YmQx
ZmI0MjI3MTQ5NDE5YzA1MjdhOGI4YjM0NDliNS4uNDdhZDMzZWFjMjI3YmQwNTMyMjE1ODkxNjZl
NzM2MzNhMDZkNjY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcGNjL3BjY19uZXR3b3Jr
X2NvbnRyb2xsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcGNjL3BjY19uZXR3b3JrX2NvbnRy
b2xsZXIuY2MKQEAgLTE0OCw3ICsxNDgsNyBAQCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBQY2NOZXR3
b3JrQ29udHJvbGxlcjo6T25TZW50UGFja2V0KFNlbnRQYWNrZXQgbXNnKSB7CiAgIGlmIChJc1Rp
bWVvdXRFeHBpcmVkKG1zZy5zZW5kX3RpbWUpKSB7CiAgICAgRGF0YVNpemUgcmVjZWl2ZWRfc2l6
ZSA9IERhdGFTaXplOjpaZXJvKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBsYXN0X3Jl
Y2VpdmVkX3BhY2tldHNfLnNpemUoKTsgKytpKSB7Ci0gICAgICByZWNlaXZlZF9zaXplICs9IGxh
c3RfcmVjZWl2ZWRfcGFja2V0c19baV0uc2VudF9wYWNrZXQtPnNpemU7CisgICAgICByZWNlaXZl
ZF9zaXplICs9IGxhc3RfcmVjZWl2ZWRfcGFja2V0c19baV0uc2VudF9wYWNrZXQuc2l6ZTsKICAg
ICB9CiAgICAgVGltZURlbHRhIHNlbmRpbmdfdGltZSA9IFRpbWVEZWx0YTo6WmVybygpOwogICAg
IGlmIChsYXN0X3JlY2VpdmVkX3BhY2tldHNfLnNpemUoKSA+IDApCkBAIC0xNjYsNyArMTY2LDcg
QEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgUGNjTmV0d29ya0NvbnRyb2xsZXI6Ok9uU2VudFBhY2tl
dChTZW50UGFja2V0IG1zZykgewogICAgICAgbXNnLnNlbmRfdGltZSAtIHN0YXJ0X3RpbWVfID49
IGtTdGFydHVwRHVyYXRpb24pIHsKICAgICBEYXRhU2l6ZSByZWNlaXZlZF9zaXplID0gRGF0YVNp
emU6Olplcm8oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxhc3RfcmVjZWl2ZWRfcGFj
a2V0c18uc2l6ZSgpOyArK2kpIHsKLSAgICAgIHJlY2VpdmVkX3NpemUgKz0gbGFzdF9yZWNlaXZl
ZF9wYWNrZXRzX1tpXS5zZW50X3BhY2tldC0+c2l6ZTsKKyAgICAgIHJlY2VpdmVkX3NpemUgKz0g
bGFzdF9yZWNlaXZlZF9wYWNrZXRzX1tpXS5zZW50X3BhY2tldC5zaXplOwogICAgIH0KICAgICBU
aW1lRGVsdGEgc2VuZGluZ190aW1lID0gVGltZURlbHRhOjpaZXJvKCk7CiAgICAgaWYgKGxhc3Rf
cmVjZWl2ZWRfcGFja2V0c18uc2l6ZSgpID4gMCkKQEAgLTI2MCw2ICsyNjAsOCBAQCBib29sIFBj
Y05ldHdvcmtDb250cm9sbGVyOjpJc0ZlZWRiYWNrQ29sbGVjdGlvbkRvbmUoKSBjb25zdCB7CiAK
IE5ldHdvcmtDb250cm9sVXBkYXRlIFBjY05ldHdvcmtDb250cm9sbGVyOjpPblRyYW5zcG9ydFBh
Y2tldHNGZWVkYmFjaygKICAgICBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2sgbXNnKSB7CisgIGlm
IChtc2cucGFja2V0X2ZlZWRiYWNrcy5lbXB0eSgpKQorICAgIHJldHVybiBOZXR3b3JrQ29udHJv
bFVwZGF0ZSgpOwogICAvLyBTYXZlIHBhY2tldHMgdG8gbGFzdF9yZWNlaXZlZF9wYWNrZXRzXyBh
cnJheS4KICAgZm9yIChjb25zdCBQYWNrZXRSZXN1bHQmIHBhY2tldF9yZXN1bHQgOiBtc2cuUmVj
ZWl2ZWRXaXRoU2VuZEluZm8oKSkgewogICAgIGxhc3RfcmVjZWl2ZWRfcGFja2V0c18ucHVzaF9i
YWNrKHBhY2tldF9yZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcGNjL3J0dF90
cmFja2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcGNjL3J0dF90cmFja2VyLmNjCmluZGV4IGEwNTQ1
NzU5ZjlmMTIwOGVkOTE2MWFhZGE0ZDZhNTZkNGZmZTU1YjEuLjUzM2E1NzNhN2FjOGQ0YmI0MDc3
YTY3ZDM3OTE2MzNkM2FlMDQ4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9ydHRf
dHJhY2tlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9wY2MvcnR0X3RyYWNrZXIuY2MKQEAgLTIz
LDEyICsyMywxMSBAQCB2b2lkIFJ0dFRyYWNrZXI6Ok9uUGFja2V0c0ZlZWRiYWNrKAogICAgIFRp
bWVzdGFtcCBmZWVkYmFja19yZWNlaXZlZF90aW1lKSB7CiAgIFRpbWVEZWx0YSBwYWNrZXRfcnR0
ID0gVGltZURlbHRhOjpNaW51c0luZmluaXR5KCk7CiAgIGZvciAoY29uc3QgUGFja2V0UmVzdWx0
JiBwYWNrZXRfcmVzdWx0IDogcGFja2V0X2ZlZWRiYWNrcykgewotICAgIGlmICghcGFja2V0X3Jl
c3VsdC5zZW50X3BhY2tldC5oYXNfdmFsdWUoKSB8fAotICAgICAgICBwYWNrZXRfcmVzdWx0LnJl
Y2VpdmVfdGltZS5Jc0luZmluaXRlKCkpCisgICAgaWYgKHBhY2tldF9yZXN1bHQucmVjZWl2ZV90
aW1lLklzSW5maW5pdGUoKSkKICAgICAgIGNvbnRpbnVlOwogICAgIHBhY2tldF9ydHQgPSBzdGQ6
Om1heDxUaW1lRGVsdGE+KAogICAgICAgICBwYWNrZXRfcnR0LAotICAgICAgICBmZWVkYmFja19y
ZWNlaXZlZF90aW1lIC0gcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC0+c2VuZF90aW1lKTsKKyAg
ICAgICAgZmVlZGJhY2tfcmVjZWl2ZWRfdGltZSAtIHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQu
c2VuZF90aW1lKTsKICAgfQogICBpZiAocGFja2V0X3J0dC5Jc0Zpbml0ZSgpKQogICAgIHJ0dF9l
c3RpbWF0ZV8gPSAoMSAtIGFscGhhXykgKiBydHRfZXN0aW1hdGVfICsgYWxwaGFfICogcGFja2V0
X3J0dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9CVUlMRC5nbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL3J0cC9CVUlMRC5nbgppbmRleCAxMzRmYjk0MGZkZDY1MjhlNjViYTMzMmQ4Mjk0YjE3
NWQxMDc0NTQyLi5iZmZlMWY4OTNlYjU0YmE1YmFjZGM5ODA1NDViYTU4Y2NhOGQ2NzhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
cnRwL0JVSUxELmduCkBAIC0yMSw4ICsyMSw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY29uZ2Vz
dGlvbl9jb250cm9sbGVyIikgewogICBjb25maWdzICs9IFsgIjpid2VfdGVzdF9sb2dnaW5nIiBd
CiAgIHNvdXJjZXMgPSBbCiAgICAgImluY2x1ZGUvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJv
bGxlci5oIiwKLSAgICAicGFjZXJfY29udHJvbGxlci5jYyIsCi0gICAgInBhY2VyX2NvbnRyb2xs
ZXIuaCIsCiAgICAgInNlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MiLAogICBdCiAK
QEAgLTMyLDEwICszMCwxMiBAQCBydGNfc3RhdGljX2xpYnJhcnkoImNvbmdlc3Rpb25fY29udHJv
bGxlciIpIHsKICAgfQogCiAgIGRlcHMgPSBbCisgICAgIjpjb250cm9sX2hhbmRsZXIiLAogICAg
ICI6dHJhbnNwb3J0X2ZlZWRiYWNrIiwKICAgICAiLi4vOmNvbmdlc3Rpb25fY29udHJvbGxlciIs
CiAgICAgIi4uLy4uOm1vZHVsZV9hcGkiLAogICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwK
KyAgICAiLi4vLi4vLi4vYXBpL3RyYW5zcG9ydDpnb29nX2NjIiwKICAgICAiLi4vLi4vLi4vYXBp
L3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpjaGVj
a3MiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpyYXRlX2xpbWl0ZXIiLApAQCAtNDMsMTIgKzQz
LDEyIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY29uZ2VzdGlvbl9jb250cm9sbGVyIikgewogICAg
ICIuLi8uLi8uLi9ydGNfYmFzZTpzYWZlX21pbm1heCIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNl
OnNlcXVlbmNlZF90YXNrX2NoZWNrZXIiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZS9leHBlcmlt
ZW50czpjb25nZXN0aW9uX2NvbnRyb2xsZXJfZXhwZXJpbWVudCIsCisgICAgIi4uLy4uLy4uL3J0
Y19iYXNlL25ldHdvcms6c2VudF9wYWNrZXQiLAogICAgICIuLi8uLi8uLi9zeXN0ZW1fd3JhcHBl
cnMiLAogICAgICIuLi8uLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIu
Li8uLi9wYWNpbmciLAogICAgICIuLi8uLi9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IiLAogICAg
ICIuLi8uLi9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAotICAgICIuLi9nb29nX2NjIiwKICAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQogCkBAIC01Nyw2
ICs1NywzOCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImNvbmdlc3Rpb25fY29udHJvbGxlciIpIHsK
ICAgfQogfQogCitydGNfc291cmNlX3NldCgiY29udHJvbF9oYW5kbGVyIikgeworICB2aXNpYmls
aXR5ID0gWyAiKiIgXQorICBzb3VyY2VzID0gWworICAgICJjb250cm9sX2hhbmRsZXIuY2MiLAor
ICAgICJjb250cm9sX2hhbmRsZXIuaCIsCisgIF0KKworICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21p
dW0gJiYgaXNfY2xhbmcpIHsKKyAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIENocm9t
aXVtIENsYW5nIHBsdWdpbiAoYnVncy53ZWJydGMub3JnLzE2MykuCisgICAgc3VwcHJlc3NlZF9j
b25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2NsYW5nOmZpbmRfYmFkX2NvbnN0cnVjdHMiIF0K
KyAgfQorCisgIGRlcHMgPSBbCisgICAgIi4uLzpjb25nZXN0aW9uX2NvbnRyb2xsZXIiLAorICAg
ICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Om5ldHdvcmtfY29udHJvbCIsCisgICAgIi4uLy4uLy4u
L3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJhdGVfbGltaXRlciIs
CisgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKKyAgICAiLi4vLi4vLi4vcnRj
X2Jhc2U6c2VxdWVuY2VkX3Rhc2tfY2hlY2tlciIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL2V4
cGVyaW1lbnRzOmNvbmdlc3Rpb25fY29udHJvbGxlcl9leHBlcmltZW50IiwKKyAgICAiLi4vLi4v
Li4vc3lzdGVtX3dyYXBwZXJzIiwKKyAgICAiLi4vLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxk
X3RyaWFsIiwKKyAgICAiLi4vLi4vcGFjaW5nIiwKKyAgICAiLi4vLi4vcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yIiwKKyAgICAiLi4vLi4vcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKKyAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgXQorCisgIGlmICghYnVp
bGRfd2l0aF9tb3ppbGxhKSB7CisgICAgZGVwcyArPSBbICIuLi8uLi8uLi9ydGNfYmFzZTpydGNf
YmFzZSIgXQorICB9Cit9CiBydGNfc3RhdGljX2xpYnJhcnkoInRyYW5zcG9ydF9mZWVkYmFjayIp
IHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgc291cmNlcyA9IFsKQEAgLTY5LDggKzEwMSwx
MCBAQCBydGNfc3RhdGljX2xpYnJhcnkoInRyYW5zcG9ydF9mZWVkYmFjayIpIHsKICAgZGVwcyA9
IFsKICAgICAiLi4vLi46bW9kdWxlX2FwaSIsCiAgICAgIi4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6
bmV0d29ya19jb250cm9sIiwKKyAgICAiLi4vLi4vLi4vYXBpL3VuaXRzOmRhdGFfc2l6ZSIsCiAg
ICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0
Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2UvbmV0d29yazpzZW50X3Bh
Y2tldCIsCiAgICAgIi4uLy4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAgIi4uLy4uL3J0cF9y
dGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgIF0KQEAgLTk3LDcgKzEzMSw3IEBAIGlmIChydGNfaW5j
bHVkZV90ZXN0cykgewogICAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgICAi
Li4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0
Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0
c191dGlscyIsCisgICAgICAiLi4vLi4vLi4vcnRjX2Jhc2UvbmV0d29yazpzZW50X3BhY2tldCIs
CiAgICAgICAiLi4vLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAgICIuLi8uLi8uLi90ZXN0
OmZpZWxkX3RyaWFsIiwKICAgICAgICIuLi8uLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvY29udHJvbF9oYW5kbGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmNhZGI3MjBlOWMwYjFj
Y2E1YTI2ZjVlMjIzMjVmOTQ3ZTVkNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5jYwpAQCAtMCwwICsxLDE2OSBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAv
Y29udHJvbF9oYW5kbGVyLmgiCisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2Fm
ZV9taW5tYXguaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlh
bC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7CisKKy8vIFdoZW4gUGFjZXJQ
dXNoYmFja0V4cGVyaW1lbnQgaXMgZW5hYmxlZCwgYnVpbGQtdXAgaW4gdGhlIHBhY2VyIGR1ZSB0
bworLy8gdGhlIGNvbmdlc3Rpb24gd2luZG93IGFuZC9vciBkYXRhIHNwaWtlcyByZWR1Y2VzIGVu
Y29kZXIgYWxsb2NhdGlvbnMuCitib29sIElzUGFjZXJQdXNoYmFja0V4cGVyaW1lbnRFbmFibGVk
KCkgeworICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVBhY2VyUHVzaGJh
Y2tFeHBlcmltZW50Iik7Cit9CisKKy8vIEJ5IGRlZmF1bHQsIHBhY2VyIGVtZXJnZW5jeSBzdG9w
cyBlbmNvZGVyIHdoZW4gYnVmZmVyIHJlYWNoZXMgYSBoaWdoIGxldmVsLgorYm9vbCBJc1BhY2Vy
RW1lcmdlbmN5U3RvcERpc2FibGVkKCkgeworICByZXR1cm4gZmllbGRfdHJpYWw6OklzRW5hYmxl
ZCgiV2ViUlRDLURpc2FibGVQYWNlckVtZXJnZW5jeVN0b3AiKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlCitDb25nZXN0aW9uQ29udHJvbEhhbmRsZXI6OkNvbmdlc3Rpb25Db250cm9sSGFuZGxlcigK
KyAgICBOZXR3b3JrQ2hhbmdlZE9ic2VydmVyKiBvYnNlcnZlciwKKyAgICBQYWNlZFNlbmRlciog
cGFjZXIpCisgICAgOiBvYnNlcnZlcl8ob2JzZXJ2ZXIpLAorICAgICAgcGFjZXJfKHBhY2VyKSwK
KyAgICAgIHBhY2VyX3B1c2hiYWNrX2V4cGVyaW1lbnRfKElzUGFjZXJQdXNoYmFja0V4cGVyaW1l
bnRFbmFibGVkKCkpLAorICAgICAgZGlzYWJsZV9wYWNlcl9lbWVyZ2VuY3lfc3RvcF8oSXNQYWNl
ckVtZXJnZW5jeVN0b3BEaXNhYmxlZCgpKSB7CisgIHNlcXVlbmNlZF9jaGVja2VyXy5EZXRhY2go
KTsKK30KKworQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyOjp+Q29uZ2VzdGlvbkNvbnRyb2xIYW5k
bGVyKCkge30KKwordm9pZCBDb25nZXN0aW9uQ29udHJvbEhhbmRsZXI6OlBvc3RVcGRhdGVzKE5l
dHdvcmtDb250cm9sVXBkYXRlIHVwZGF0ZSkgeworICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5U
SUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7CisgIGlmICh1cGRhdGUuY29uZ2VzdGlvbl93aW5k
b3cpIHsKKyAgICBpZiAodXBkYXRlLmNvbmdlc3Rpb25fd2luZG93LT5Jc0Zpbml0ZSgpKQorICAg
ICAgcGFjZXJfLT5TZXRDb25nZXN0aW9uV2luZG93KHVwZGF0ZS5jb25nZXN0aW9uX3dpbmRvdy0+
Ynl0ZXMoKSk7CisgICAgZWxzZQorICAgICAgcGFjZXJfLT5TZXRDb25nZXN0aW9uV2luZG93KFBh
Y2VkU2VuZGVyOjprTm9Db25nZXN0aW9uV2luZG93KTsKKyAgfQorICBpZiAodXBkYXRlLnBhY2Vy
X2NvbmZpZykgeworICAgIHBhY2VyXy0+U2V0UGFjaW5nUmF0ZXModXBkYXRlLnBhY2VyX2NvbmZp
Zy0+ZGF0YV9yYXRlKCkuYnBzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUu
cGFjZXJfY29uZmlnLT5wYWRfcmF0ZSgpLmJwcygpKTsKKyAgfQorICBmb3IgKGNvbnN0IGF1dG8m
IHByb2JlIDogdXBkYXRlLnByb2JlX2NsdXN0ZXJfY29uZmlncykgeworICAgIGludDY0X3QgYml0
cmF0ZV9icHMgPSBwcm9iZS50YXJnZXRfZGF0YV9yYXRlLmJwcygpOworICAgIHBhY2VyXy0+Q3Jl
YXRlUHJvYmVDbHVzdGVyKGJpdHJhdGVfYnBzKTsKKyAgfQorICBpZiAodXBkYXRlLnRhcmdldF9y
YXRlKSB7CisgICAgY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfID0gKnVwZGF0ZS50YXJnZXRfcmF0
ZTsKKyAgICBPbk5ldHdvcmtJbnZhbGlkYXRpb24oKTsKKyAgfQorfQorCit2b2lkIENvbmdlc3Rp
b25Db250cm9sSGFuZGxlcjo6T25OZXR3b3JrQXZhaWxhYmlsaXR5KE5ldHdvcmtBdmFpbGFiaWxp
dHkgbXNnKSB7CisgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2No
ZWNrZXJfKTsKKyAgaWYgKG5ldHdvcmtfYXZhaWxhYmxlXyAhPSBtc2cubmV0d29ya19hdmFpbGFi
bGUpIHsKKyAgICBuZXR3b3JrX2F2YWlsYWJsZV8gPSBtc2cubmV0d29ya19hdmFpbGFibGU7Cisg
ICAgcGFjZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoMCk7CisgICAgU2V0UGFjZXJTdGF0ZSgh
bXNnLm5ldHdvcmtfYXZhaWxhYmxlKTsKKyAgICBPbk5ldHdvcmtJbnZhbGlkYXRpb24oKTsKKyAg
fQorfQorCit2b2lkIENvbmdlc3Rpb25Db250cm9sSGFuZGxlcjo6T25PdXRzdGFuZGluZ0RhdGEo
RGF0YVNpemUgaW5fZmxpZ2h0X2RhdGEpIHsKKyAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElB
TExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOworICBwYWNlcl8tPlVwZGF0ZU91dHN0YW5kaW5nRGF0
YShpbl9mbGlnaHRfZGF0YS5ieXRlcygpKTsKKyAgT25OZXR3b3JrSW52YWxpZGF0aW9uKCk7Cit9
CisKK3ZvaWQgQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyOjpPblBhY2VyUXVldWVVcGRhdGUoCisg
ICAgVGltZURlbHRhIGV4cGVjdGVkX3F1ZXVlX3RpbWUpIHsKKyAgUlRDX0RDSEVDS19DQUxMRURf
U0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOworICBwYWNlcl9leHBlY3RlZF9xdWV1
ZV9tc18gPSBleHBlY3RlZF9xdWV1ZV90aW1lLm1zKCk7CisgIE9uTmV0d29ya0ludmFsaWRhdGlv
bigpOworfQorCit2b2lkIENvbmdlc3Rpb25Db250cm9sSGFuZGxlcjo6U2V0UGFjZXJTdGF0ZShi
b29sIHBhdXNlZCkgeworICBpZiAocGF1c2VkICYmICFwYWNlcl9wYXVzZWRfKQorICAgIHBhY2Vy
Xy0+UGF1c2UoKTsKKyAgZWxzZSBpZiAoIXBhdXNlZCAmJiBwYWNlcl9wYXVzZWRfKQorICAgIHBh
Y2VyXy0+UmVzdW1lKCk7CisgIHBhY2VyX3BhdXNlZF8gPSBwYXVzZWQ7Cit9CisKK3ZvaWQgQ29u
Z2VzdGlvbkNvbnRyb2xIYW5kbGVyOjpPbk5ldHdvcmtJbnZhbGlkYXRpb24oKSB7CisgIGlmICgh
Y3VycmVudF90YXJnZXRfcmF0ZV9tc2dfLmhhc192YWx1ZSgpKQorICAgIHJldHVybjsKKworICB1
aW50MzJfdCB0YXJnZXRfYml0cmF0ZV9icHMgPSBjdXJyZW50X3RhcmdldF9yYXRlX21zZ18tPnRh
cmdldF9yYXRlLmJwcygpOworICBpbnQ2NF90IHJ0dF9tcyA9CisgICAgICBjdXJyZW50X3Rhcmdl
dF9yYXRlX21zZ18tPm5ldHdvcmtfZXN0aW1hdGUucm91bmRfdHJpcF90aW1lLm1zKCk7CisgIGZs
b2F0IGxvc3NfcmF0ZV9yYXRpbyA9CisgICAgICBjdXJyZW50X3RhcmdldF9yYXRlX21zZ18tPm5l
dHdvcmtfZXN0aW1hdGUubG9zc19yYXRlX3JhdGlvOworCisgIGludCBsb3NzX3JhdGlvXzI1NSA9
IGxvc3NfcmF0ZV9yYXRpbyAqIDI1NTsKKyAgdWludDhfdCBmcmFjdGlvbl9sb3NzID0KKyAgICAg
IHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50OF90PihydGM6OlNhZmVDbGFtcChsb3NzX3JhdGlvXzI1
NSwgMCwgMjU1KSk7CisKKyAgaW50NjRfdCBwcm9iaW5nX2ludGVydmFsX21zID0KKyAgICAgIGN1
cnJlbnRfdGFyZ2V0X3JhdGVfbXNnXy0+bmV0d29ya19lc3RpbWF0ZS5id2VfcGVyaW9kLm1zKCk7
CisKKyAgaWYgKCFuZXR3b3JrX2F2YWlsYWJsZV8pIHsKKyAgICB0YXJnZXRfYml0cmF0ZV9icHMg
PSAwOworICB9IGVsc2UgaWYgKHBhY2VyX3B1c2hiYWNrX2V4cGVyaW1lbnRfKSB7CisgICAgaW50
NjRfdCBxdWV1ZV9sZW5ndGhfbXMgPSBwYWNlcl9leHBlY3RlZF9xdWV1ZV9tc187CisKKyAgICBp
ZiAocXVldWVfbGVuZ3RoX21zID09IDApIHsKKyAgICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0g
MS4wOworICAgIH0gZWxzZSBpZiAocXVldWVfbGVuZ3RoX21zID4gNTApIHsKKyAgICAgIGRvdWJs
ZSBlbmNvZGluZ19yYXRpbyA9IDEuMCAtIHF1ZXVlX2xlbmd0aF9tcyAvIDEwMDAuMDsKKyAgICAg
IGVuY29kaW5nX3JhdGVfcmF0aW9fID0gc3RkOjptaW4oZW5jb2RpbmdfcmF0ZV9yYXRpb18sIGVu
Y29kaW5nX3JhdGlvKTsKKyAgICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gc3RkOjptYXgoZW5j
b2RpbmdfcmF0ZV9yYXRpb18sIDAuMCk7CisgICAgfQorCisgICAgdGFyZ2V0X2JpdHJhdGVfYnBz
ICo9IGVuY29kaW5nX3JhdGVfcmF0aW9fOworICAgIHRhcmdldF9iaXRyYXRlX2JwcyA9IHRhcmdl
dF9iaXRyYXRlX2JwcyA8IDUwMDAwID8gMCA6IHRhcmdldF9iaXRyYXRlX2JwczsKKyAgfSBlbHNl
IGlmICghZGlzYWJsZV9wYWNlcl9lbWVyZ2VuY3lfc3RvcF8pIHsKKyAgICB0YXJnZXRfYml0cmF0
ZV9icHMgPSBJc1NlbmRRdWV1ZUZ1bGwoKSA/IDAgOiB0YXJnZXRfYml0cmF0ZV9icHM7CisgIH0K
KworICBpZiAoSGFzTmV0d29ya1BhcmFtZXRlcnNUb1JlcG9ydENoYW5nZWQodGFyZ2V0X2JpdHJh
dGVfYnBzLCBmcmFjdGlvbl9sb3NzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnR0X21zKSkgeworICAgIG9ic2VydmVyXy0+T25OZXR3b3JrQ2hhbmdlZCh0YXJn
ZXRfYml0cmF0ZV9icHMsIGZyYWN0aW9uX2xvc3MsIHJ0dF9tcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvYmluZ19pbnRlcnZhbF9tcyk7CisgIH0KK30KK2Jvb2wgQ29uZ2Vz
dGlvbkNvbnRyb2xIYW5kbGVyOjpIYXNOZXR3b3JrUGFyYW1ldGVyc1RvUmVwb3J0Q2hhbmdlZCgK
KyAgICBpbnQ2NF90IHRhcmdldF9iaXRyYXRlX2JwcywKKyAgICB1aW50OF90IGZyYWN0aW9uX2xv
c3MsCisgICAgaW50NjRfdCBydHRfbXMpIHsKKyAgYm9vbCBjaGFuZ2VkID0gbGFzdF9yZXBvcnRl
ZF90YXJnZXRfYml0cmF0ZV9icHNfICE9IHRhcmdldF9iaXRyYXRlX2JwcyB8fAorICAgICAgICAg
ICAgICAgICAodGFyZ2V0X2JpdHJhdGVfYnBzID4gMCAmJgorICAgICAgICAgICAgICAgICAgKGxh
c3RfcmVwb3J0ZWRfZnJhY3Rpb25fbG9zc18gIT0gZnJhY3Rpb25fbG9zcyB8fAorICAgICAgICAg
ICAgICAgICAgIGxhc3RfcmVwb3J0ZWRfcnR0X21zXyAhPSBydHRfbXMpKTsKKyAgaWYgKGNoYW5n
ZWQgJiYKKyAgICAgIChsYXN0X3JlcG9ydGVkX3RhcmdldF9iaXRyYXRlX2Jwc18gPT0gMCB8fCB0
YXJnZXRfYml0cmF0ZV9icHMgPT0gMCkpIHsKKyAgICBSVENfTE9HKExTX0lORk8pIDw8ICJCaXRy
YXRlIGVzdGltYXRlIHN0YXRlIGNoYW5nZWQsIEJXRTogIgorICAgICAgICAgICAgICAgICAgICAg
PDwgdGFyZ2V0X2JpdHJhdGVfYnBzIDw8ICIgYnBzLiI7CisgIH0KKyAgbGFzdF9yZXBvcnRlZF90
YXJnZXRfYml0cmF0ZV9icHNfID0gdGFyZ2V0X2JpdHJhdGVfYnBzOworICBsYXN0X3JlcG9ydGVk
X2ZyYWN0aW9uX2xvc3NfID0gZnJhY3Rpb25fbG9zczsKKyAgbGFzdF9yZXBvcnRlZF9ydHRfbXNf
ID0gcnR0X21zOworICByZXR1cm4gY2hhbmdlZDsKK30KKworYm9vbCBDb25nZXN0aW9uQ29udHJv
bEhhbmRsZXI6OklzU2VuZFF1ZXVlRnVsbCgpIGNvbnN0IHsKKyAgcmV0dXJuIHBhY2VyX2V4cGVj
dGVkX3F1ZXVlX21zXyA+IFBhY2VkU2VuZGVyOjprTWF4UXVldWVMZW5ndGhNczsKK30KKworYWJz
bDo6b3B0aW9uYWw8VGFyZ2V0VHJhbnNmZXJSYXRlPgorQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVy
OjpsYXN0X3RyYW5zZmVyX3JhdGUoKSB7CisgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxM
WSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKKyAgcmV0dXJuIGN1cnJlbnRfdGFyZ2V0X3JhdGVfbXNn
XzsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL2NvbnRyb2xfaGFu
ZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ1NmMyYTllMjcxMjg0MDZmNWJiODA0MGE1NmRkNDRjZDg5MDU2
MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvY29udHJvbF9oYW5kbGVy
LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9E
VUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfUlRQX0NPTlRST0xfSEFORExFUl9IXworI2RlZmlu
ZSBNT0RVTEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9SVFBfQ09OVFJPTF9IQU5ETEVSX0hfCisK
KyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYXBp
L3RyYW5zcG9ydC9uZXR3b3JrX2NvbnRyb2wuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9pbmNsdWRlL25ldHdvcmtfY2hhbmdlZF9vYnNlcnZlci5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Nl
cXVlbmNlZF90YXNrX2NoZWNrZXIuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisvLyBUaGlzIGlz
IHVzZWQgdG8gb2JzZXJ2ZSB0aGUgbmV0d29yayBjb250cm9sbGVyIHN0YXRlIGFuZCByb3V0ZSBj
YWxscyB0bworLy8gdGhlIHByb3BlciBoYW5kbGVyLiBJdCBhbHNvIGtlZXBzIGNhY2hlZCB2YWx1
ZXMgZm9yIHNhZmUgYXN5bmNocm9ub3VzIHVzZS4KKy8vIFRoaXMgbWFrZXMgc3VyZSB0aGF0IHRo
aW5ncyBydW5uaW5nIG9uIHRoZSB3b3JrZXIgcXVldWUgY2FuJ3QgYWNjZXNzIHN0YXRlCisvLyBp
biBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyLCB3aGljaCB3b3VsZCByaXNrIGNhdXNpbmcg
ZGF0YSByYWNlIG9uCisvLyBkZXN0cnVjdGlvbiB1bmxlc3MgbWVtYmVycyBhcmUgcHJvcGVybHkg
b3JkZXJlZC4KK2NsYXNzIENvbmdlc3Rpb25Db250cm9sSGFuZGxlciB7CisgcHVibGljOgorICBD
b25nZXN0aW9uQ29udHJvbEhhbmRsZXIoTmV0d29ya0NoYW5nZWRPYnNlcnZlciogb2JzZXJ2ZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNlZFNlbmRlciogcGFjZXIpOworICB+Q29u
Z2VzdGlvbkNvbnRyb2xIYW5kbGVyKCk7CisKKyAgdm9pZCBQb3N0VXBkYXRlcyhOZXR3b3JrQ29u
dHJvbFVwZGF0ZSB1cGRhdGUpOworCisgIHZvaWQgT25OZXR3b3JrQXZhaWxhYmlsaXR5KE5ldHdv
cmtBdmFpbGFiaWxpdHkgbXNnKTsKKyAgdm9pZCBPbk91dHN0YW5kaW5nRGF0YShEYXRhU2l6ZSBp
bl9mbGlnaHRfZGF0YSk7CisgIHZvaWQgT25QYWNlclF1ZXVlVXBkYXRlKFRpbWVEZWx0YSBleHBl
Y3RlZF9xdWV1ZV90aW1lKTsKKworICBhYnNsOjpvcHRpb25hbDxUYXJnZXRUcmFuc2ZlclJhdGU+
IGxhc3RfdHJhbnNmZXJfcmF0ZSgpOworCisgcHJpdmF0ZToKKyAgdm9pZCBTZXRQYWNlclN0YXRl
KGJvb2wgcGF1c2VkKTsKKyAgdm9pZCBPbk5ldHdvcmtJbnZhbGlkYXRpb24oKTsKKyAgYm9vbCBJ
c1NlbmRRdWV1ZUZ1bGwoKSBjb25zdDsKKyAgYm9vbCBIYXNOZXR3b3JrUGFyYW1ldGVyc1RvUmVw
b3J0Q2hhbmdlZChpbnQ2NF90IGJpdHJhdGVfYnBzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsb2F0IGxvc3NfcmF0ZV9yYXRpbywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lRGVsdGEgcnR0KTsKKworICBib29sIEhh
c05ldHdvcmtQYXJhbWV0ZXJzVG9SZXBvcnRDaGFuZ2VkKGludDY0X3QgYml0cmF0ZV9icHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmcmFjdGlv
bl9sb3NzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgcnR0KTsKKyAgTmV0d29ya0NoYW5nZWRPYnNlcnZlciogb2JzZXJ2ZXJfID0gbnVsbHB0cjsK
KyAgUGFjZWRTZW5kZXIqIGNvbnN0IHBhY2VyXzsKKworICBhYnNsOjpvcHRpb25hbDxUYXJnZXRU
cmFuc2ZlclJhdGU+IGN1cnJlbnRfdGFyZ2V0X3JhdGVfbXNnXzsKKyAgYm9vbCBuZXR3b3JrX2F2
YWlsYWJsZV8gPSB0cnVlOworICBib29sIHBhY2VyX3BhdXNlZF8gPSBmYWxzZTsKKyAgaW50NjRf
dCBsYXN0X3JlcG9ydGVkX3RhcmdldF9iaXRyYXRlX2Jwc18gPSAwOworICB1aW50OF90IGxhc3Rf
cmVwb3J0ZWRfZnJhY3Rpb25fbG9zc18gPSAwOworICBpbnQ2NF90IGxhc3RfcmVwb3J0ZWRfcnR0
X21zXyA9IDA7CisgIGNvbnN0IGJvb2wgcGFjZXJfcHVzaGJhY2tfZXhwZXJpbWVudF87CisgIGNv
bnN0IGJvb2wgZGlzYWJsZV9wYWNlcl9lbWVyZ2VuY3lfc3RvcF87CisgIHVpbnQzMl90IG1pbl9w
dXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfOworICBpbnQ2NF90IHBhY2VyX2V4cGVjdGVkX3F1
ZXVlX21zXyA9IDA7CisgIGRvdWJsZSBlbmNvZGluZ19yYXRlX3JhdGlvXyA9IDEuMDsKKworICBy
dGM6OlNlcXVlbmNlZFRhc2tDaGVja2VyIHNlcXVlbmNlZF9jaGVja2VyXzsKKyAgUlRDX0RJU0FM
TE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhDb25nZXN0aW9uQ29udHJvbEhhbmRsZXIpOworfTsK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKyNlbmRpZiAgLy8gTU9EVUxFU19DT05HRVNUSU9OX0NP
TlRST0xMRVJfUlRQX0NPTlRST0xfSEFORExFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvcnRwL2luY2x1ZGUvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvcnRwL2luY2x1ZGUvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5oCmlu
ZGV4IGVmZTRkMmZmNDc3NTZiNDQxZjUyZDY0ZjE0OWJmOGEyZWNhYzI4NTQuLjU1NDY1Y2I3NWY4
OGY2OTVjZWM5ODY2OTdkZmViZGRlYjkxMWYzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L3J0cC9pbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9ydHAvaW5jbHVkZS9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmgK
QEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMu
aCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQog
I2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2luY2x1ZGUvc2VuZF9zaWRl
X2Nvbmdlc3Rpb25fY29udHJvbGxlcl9pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9ydHAvcGFjZXJfY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9jb250cm9sX2hhbmRsZXIuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNr
X2FkYXB0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKQEAgLTQwLDE4ICs0MCwx
MSBAQCBzdHJ1Y3QgU2VudFBhY2tldDsKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBjbGFzcyBDbG9j
azsKLWNsYXNzIFJhdGVMaW1pdGVyOwogY2xhc3MgUnRjRXZlbnRMb2c7CiAKIG5hbWVzcGFjZSB3
ZWJydGNfY2MgewogCiBuYW1lc3BhY2Ugc2VuZF9zaWRlX2NjX2ludGVybmFsIHsKLS8vIFRoaXMg
aXMgdXNlZCB0byBvYnNlcnZlIHRoZSBuZXR3b3JrIGNvbnRyb2xsZXIgc3RhdGUgYW5kIHJvdXRl
IGNhbGxzIHRvCi0vLyB0aGUgcHJvcGVyIGhhbmRsZXIuIEl0IGFsc28ga2VlcHMgY2FjaGVkIHZh
bHVlcyBmb3Igc2FmZSBhc3luY2hyb25vdXMgdXNlLgotLy8gVGhpcyBtYWtlcyBzdXJlIHRoYXQg
dGhpbmdzIHJ1bm5pbmcgb24gdGhlIHdvcmtlciBxdWV1ZSBjYW4ndCBhY2Nlc3Mgc3RhdGUKLS8v
IGluIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXIsIHdoaWNoIHdvdWxkIHJpc2sgY2F1c2lu
ZyBkYXRhIHJhY2Ugb24KLS8vIGRlc3RydWN0aW9uIHVubGVzcyBtZW1iZXJzIGFyZSBwcm9wZXJs
eSBvcmRlcmVkLgotY2xhc3MgQ29udHJvbEhhbmRsZXI7CiAKIC8vIFRPRE8oc3J0ZSk6IE1ha2Ug
c3VyZSB0aGUgUGVyaW9kaWNUYXNrIGltcGxlbWVudGF0aW9uIGlzIHJldXNhYmxlIGFuZCBtb3Zl
IGl0CiAvLyB0byB0YXNrX3F1ZXVlLmguCkBAIC0xODIsMTAgKzE3NSw3IEBAIGNsYXNzIFNlbmRT
aWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXIKICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
b250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4KICAgICAgIGNvbnRyb2xsZXJfZmFjdG9yeV9mYWxs
YmFja18gUlRDX0dVQVJERURfQlkodGFza19xdWV1ZV8pOwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxQYWNlckNvbnRyb2xsZXI+IHBhY2VyX2NvbnRyb2xsZXJfCi0gICAgICBSVENfR1VBUkRF
RF9CWSh0YXNrX3F1ZXVlXyk7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPHNlbmRfc2lkZV9jY19pbnRl
cm5hbDo6Q29udHJvbEhhbmRsZXI+IGNvbnRyb2xfaGFuZGxlcl8KKyAgc3RkOjp1bmlxdWVfcHRy
PENvbmdlc3Rpb25Db250cm9sSGFuZGxlcj4gY29udHJvbF9oYW5kbGVyXwogICAgICAgUlRDX0dV
QVJERURfQlkodGFza19xdWV1ZV8pOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJv
bGxlckludGVyZmFjZT4gY29udHJvbGxlcl8KQEAgLTIwMSw2ICsxOTEsNyBAQCBjbGFzcyBTZW5k
U2lkZUNvbmdlc3Rpb25Db250cm9sbGVyCiAgIE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGluaXRp
YWxfY29uZmlnXyBSVENfR1VBUkRFRF9CWSh0YXNrX3F1ZXVlXyk7CiAgIFN0cmVhbXNDb25maWcg
c3RyZWFtc19jb25maWdfIFJUQ19HVUFSREVEX0JZKHRhc2tfcXVldWVfKTsKIAorICBjb25zdCBi
b29sIHJlc2V0X2ZlZWRiYWNrX29uX3JvdXRlX2NoYW5nZV87CiAgIGNvbnN0IGJvb2wgc2VuZF9z
aWRlX2J3ZV93aXRoX292ZXJoZWFkXzsKICAgLy8gVHJhbnNwb3J0IG92ZXJoZWFkIGlzIHdyaXR0
ZW4gYnkgT25OZXR3b3JrUm91dGVDaGFuZ2VkIGFuZCByZWFkIGJ5CiAgIC8vIEFkZFBhY2tldC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9wYWNlcl9jb250cm9sbGVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvcnRwL3BhY2VyX2NvbnRyb2xsZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGFmMDYyZTg4MWVlZWYyMDgwMGJlMDA3N2JjYzk3NzQzMzMzN2NkNTguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
cnRwL3BhY2VyX2NvbnRyb2xsZXIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0v
KgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
LSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL3J0cC9wYWNlcl9jb250cm9sbGVyLmgiCi0KLSNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMg
ewotCi1QYWNlckNvbnRyb2xsZXI6OlBhY2VyQ29udHJvbGxlcihQYWNlZFNlbmRlciogcGFjZXIp
IDogcGFjZXJfKHBhY2VyKSB7Ci0gIHNlcXVlbmNlZF9jaGVja2VyXy5EZXRhY2goKTsKLX0KLQot
UGFjZXJDb250cm9sbGVyOjp+UGFjZXJDb250cm9sbGVyKCkgPSBkZWZhdWx0OwotCi12b2lkIFBh
Y2VyQ29udHJvbGxlcjo6T25Db25nZXN0aW9uV2luZG93KERhdGFTaXplIGNvbmdlc3Rpb25fd2lu
ZG93KSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNr
ZXJfKTsKLSAgaWYgKGNvbmdlc3Rpb25fd2luZG93LklzRmluaXRlKCkpCi0gICAgcGFjZXJfLT5T
ZXRDb25nZXN0aW9uV2luZG93KGNvbmdlc3Rpb25fd2luZG93LmJ5dGVzKCkpOwotICBlbHNlCi0g
ICAgcGFjZXJfLT5TZXRDb25nZXN0aW9uV2luZG93KFBhY2VkU2VuZGVyOjprTm9Db25nZXN0aW9u
V2luZG93KTsKLX0KLQotdm9pZCBQYWNlckNvbnRyb2xsZXI6Ok9uTmV0d29ya0F2YWlsYWJpbGl0
eShOZXR3b3JrQXZhaWxhYmlsaXR5IG1zZykgewotICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5U
SUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0gIG5ldHdvcmtfYXZhaWxhYmxlXyA9IG1zZy5u
ZXR3b3JrX2F2YWlsYWJsZTsKLSAgcGFjZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoMCk7Ci0g
IFNldFBhY2VyU3RhdGUoIW1zZy5uZXR3b3JrX2F2YWlsYWJsZSk7Ci19Ci0KLXZvaWQgUGFjZXJD
b250cm9sbGVyOjpPbk5ldHdvcmtSb3V0ZUNoYW5nZShOZXR3b3JrUm91dGVDaGFuZ2UpIHsKLSAg
UlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICBw
YWNlcl8tPlVwZGF0ZU91dHN0YW5kaW5nRGF0YSgwKTsKLX0KLQotdm9pZCBQYWNlckNvbnRyb2xs
ZXI6Ok9uUGFjZXJDb25maWcoUGFjZXJDb25maWcgbXNnKSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVE
X1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKLSAgRGF0YVJhdGUgcGFjaW5nX3Jh
dGUgPSBtc2cuZGF0YV93aW5kb3cgLyBtc2cudGltZV93aW5kb3c7Ci0gIERhdGFSYXRlIHBhZGRp
bmdfcmF0ZSA9IG1zZy5wYWRfd2luZG93IC8gbXNnLnRpbWVfd2luZG93OwotICBwYWNlcl8tPlNl
dFBhY2luZ1JhdGVzKHBhY2luZ19yYXRlLmJwcygpLCBwYWRkaW5nX3JhdGUuYnBzKCkpOwotfQot
Ci12b2lkIFBhY2VyQ29udHJvbGxlcjo6T25Qcm9iZUNsdXN0ZXJDb25maWcoUHJvYmVDbHVzdGVy
Q29uZmlnIGNvbmZpZykgewotICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNlcXVl
bmNlZF9jaGVja2VyXyk7Ci0gIGludDY0X3QgYml0cmF0ZV9icHMgPSBjb25maWcudGFyZ2V0X2Rh
dGFfcmF0ZS5icHMoKTsKLSAgcGFjZXJfLT5DcmVhdGVQcm9iZUNsdXN0ZXIoYml0cmF0ZV9icHMp
OwotfQotCi12b2lkIFBhY2VyQ29udHJvbGxlcjo6T25PdXRzdGFuZGluZ0RhdGEoRGF0YVNpemUg
aW5fZmxpZ2h0X2RhdGEpIHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1
ZW5jZWRfY2hlY2tlcl8pOwotICBwYWNlcl8tPlVwZGF0ZU91dHN0YW5kaW5nRGF0YShpbl9mbGln
aHRfZGF0YS5ieXRlcygpKTsKLX0KLQotdm9pZCBQYWNlckNvbnRyb2xsZXI6OlNldFBhY2VyU3Rh
dGUoYm9vbCBwYXVzZWQpIHsKLSAgaWYgKHBhdXNlZCAmJiAhcGFjZXJfcGF1c2VkXykKLSAgICBw
YWNlcl8tPlBhdXNlKCk7Ci0gIGVsc2UgaWYgKCFwYXVzZWQgJiYgcGFjZXJfcGF1c2VkXykKLSAg
ICBwYWNlcl8tPlJlc3VtZSgpOwotICBwYWNlcl9wYXVzZWRfID0gcGF1c2VkOwotfQotCi19ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvcGFjZXJf
Y29udHJvbGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3BhY2VyX2NvbnRyb2xsZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc3OGI3ODQ4OTAzNTU0OTE0NzRhZWVlZTU2MzEy
YmUzNzQ5ODEwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9ydHAvcGFjZXJfY29udHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
LSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19D
T05HRVNUSU9OX0NPTlRST0xMRVJfUlRQX1BBQ0VSX0NPTlRST0xMRVJfSF8KLSNkZWZpbmUgTU9E
VUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfUlRQX1BBQ0VSX0NPTlRST0xMRVJfSF8KLQotI2lu
Y2x1ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL3NlcXVlbmNlZF90YXNrX2NoZWNrZXIuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1j
bGFzcyBDbG9jazsKLQotLy8gV3JhcHBlciBjbGFzcyB0byBjb250cm9sIHBhY2VyIHVzaW5nIHRh
c2sgcXVldWVzLiBOb3RlIHRoYXQgdGhpcyBjbGFzcyBpcwotLy8gb25seSBkZXNpZ25lZCB0byBi
ZSB1c2VkIGZyb20gYSBzaW5nbGUgdGFzayBxdWV1ZSBhbmQgaGFzIG5vIGJ1aWx0IGluCi0vLyBj
b25jdXJyZW5jeSBzYWZldHkuCi0vLyBUT0RPKHNydGUpOiBJbnRlZ3JhdGUgdGhpcyBpbnRlcmZh
Y2UgZGlyZWN0bHkgaW50byBQYWNlZFNlbmRlci4KLWNsYXNzIFBhY2VyQ29udHJvbGxlciB7Ci0g
cHVibGljOgotICBleHBsaWNpdCBQYWNlckNvbnRyb2xsZXIoUGFjZWRTZW5kZXIqIHBhY2VyKTsK
LSAgflBhY2VyQ29udHJvbGxlcigpOwotICB2b2lkIE9uQ29uZ2VzdGlvbldpbmRvdyhEYXRhU2l6
ZSBtc2cpOwotICB2b2lkIE9uTmV0d29ya0F2YWlsYWJpbGl0eShOZXR3b3JrQXZhaWxhYmlsaXR5
IG1zZyk7Ci0gIHZvaWQgT25OZXR3b3JrUm91dGVDaGFuZ2UoTmV0d29ya1JvdXRlQ2hhbmdlIG1z
Zyk7Ci0gIHZvaWQgT25PdXRzdGFuZGluZ0RhdGEoRGF0YVNpemUgaW5fZmxpZ2h0X2RhdGEpOwot
ICB2b2lkIE9uUGFjZXJDb25maWcoUGFjZXJDb25maWcgbXNnKTsKLSAgdm9pZCBPblByb2JlQ2x1
c3RlckNvbmZpZyhQcm9iZUNsdXN0ZXJDb25maWcgbXNnKTsKLQotIHByaXZhdGU6Ci0gIHZvaWQg
U2V0UGFjZXJTdGF0ZShib29sIHBhdXNlZCk7Ci0gIFBhY2VkU2VuZGVyKiBjb25zdCBwYWNlcl87
Ci0KLSAgYWJzbDo6b3B0aW9uYWw8UGFjZXJDb25maWc+IGN1cnJlbnRfcGFjZXJfY29uZmlnXzsK
LSAgYm9vbCBwYWNlcl9wYXVzZWRfID0gZmFsc2U7Ci0gIGJvb2wgbmV0d29ya19hdmFpbGFibGVf
ID0gdHJ1ZTsKLQotICBydGM6OlNlcXVlbmNlZFRhc2tDaGVja2VyIHNlcXVlbmNlZF9jaGVja2Vy
XzsKLSAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhQYWNlckNvbnRyb2xsZXIp
OwotfTsKLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLSNlbmRpZiAgLy8gTU9EVUxFU19DT05HRVNU
SU9OX0NPTlRST0xMRVJfUlRQX1BBQ0VSX0NPTlRST0xMRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvcnRwL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MKaW5kZXggMjY2
YTVkYzc0MDBjYmQxMTA3OTI5NGY1OTgwOWNhZDg3YmM1MTU4NC4uOTgyMzgwZjQ1N2FlZDNjODRm
ZTNkZDA5N2IxZjU0ZGJiNzc2MTVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3Nl
bmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRw
L3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MKQEAgLTE1LDE5ICsxNSwxOSBAQAog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAjaW5jbHVkZSAiYWJzbC9tZW1v
cnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9nb29nX2NjX2ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250
cm9sbGVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9pbmNsdWRlL2dvb2dfY2NfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2Jp
dHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9iaW5kLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdvcmsvc2VudF9w
YWNrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9yYXRlX2xpbWl0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zZXF1ZW5jZWRfdGFz
a19jaGVja2VyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmll
bGRfdHJpYWwuaCIKIApAQCAtMzcsNzAgKzM3LDggQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1l
c3BhY2Ugd2VicnRjX2NjIHsKIG5hbWVzcGFjZSB7CiB1c2luZyBzZW5kX3NpZGVfY2NfaW50ZXJu
YWw6OlBlcmlvZGljVGFzazsKLQotY29uc3QgY2hhciBrQ3duZEV4cGVyaW1lbnRbXSA9ICJXZWJS
VEMtQ3duZEV4cGVyaW1lbnQiOwotCi0vLyBXaGVuIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFjayBp
cyBlbmFibGVkLCB0aGUgcGFjZXIgaXMgb2JsaXZpb3VzIHRvCi0vLyB0aGUgY29uZ2VzdGlvbiB3
aW5kb3cuIFRoZSByZWxhdGlvbiBiZXR3ZWVuIG91dHN0YW5kaW5nIGRhdGEgYW5kCi0vLyB0aGUg
Y29uZ2VzdGlvbiB3aW5kb3cgYWZmZWN0cyBlbmNvZGVyIGFsbG9jYXRpb25zIGRpcmVjdGx5Lgot
Y29uc3QgY2hhciBrQ29uZ2VzdGlvblB1c2hiYWNrRXhwZXJpbWVudFtdID0gIldlYlJUQy1Db25n
ZXN0aW9uV2luZG93UHVzaGJhY2siOwotCi0vLyBXaGVuIFBhY2VyUHVzaGJhY2tFeHBlcmltZW50
IGlzIGVuYWJsZWQsIGJ1aWxkLXVwIGluIHRoZSBwYWNlciBkdWUgdG8KLS8vIHRoZSBjb25nZXN0
aW9uIHdpbmRvdyBhbmQvb3IgZGF0YSBzcGlrZXMgcmVkdWNlcyBlbmNvZGVyIGFsbG9jYXRpb25z
LgotY29uc3QgY2hhciBrUGFjZXJQdXNoYmFja0V4cGVyaW1lbnRbXSA9ICJXZWJSVEMtUGFjZXJQ
dXNoYmFja0V4cGVyaW1lbnQiOwogY29uc3QgaW50NjRfdCBQYWNlclF1ZXVlVXBkYXRlSW50ZXJ2
YWxNcyA9IDI1OwogCi1ib29sIElzUGFjZXJQdXNoYmFja0V4cGVyaW1lbnRFbmFibGVkKCkgewot
ICByZXR1cm4gd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtQYWNlclB1c2hiYWNrRXhw
ZXJpbWVudCk7Ci19Ci0KLWJvb2wgSXNDb25nZXN0aW9uV2luZG93UHVzaGJhY2tFeHBlcmltZW50
RW5hYmxlZCgpIHsKLSAgcmV0dXJuIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrQ29u
Z2VzdGlvblB1c2hiYWNrRXhwZXJpbWVudCkgJiYKLSAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJp
YWw6OklzRW5hYmxlZChrQ3duZEV4cGVyaW1lbnQpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q29u
Z2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcj4KLU1heWJlSW5pdGFsaXplQ29uZ2VzdGlv
bldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcigpIHsKLSAgcmV0dXJuIElzQ29uZ2VzdGlvbldpbmRv
d1B1c2hiYWNrRXhwZXJpbWVudEVuYWJsZWQoKQotICAgICAgICAgICAgID8gYWJzbDo6bWFrZV91
bmlxdWU8Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcj4oKQotICAgICAgICAgICAg
IDogbnVsbHB0cjsKLX0KLQotdm9pZCBTb3J0UGFja2V0RmVlZGJhY2tWZWN0b3Ioc3RkOjp2ZWN0
b3I8d2VicnRjOjpQYWNrZXRGZWVkYmFjaz4qIGlucHV0KSB7Ci0gIHN0ZDo6c29ydChpbnB1dC0+
YmVnaW4oKSwgaW5wdXQtPmVuZCgpLCBQYWNrZXRGZWVkYmFja0NvbXBhcmF0b3IoKSk7Ci19Ci0K
LVBhY2tldFJlc3VsdCBOZXR3b3JrUGFja2V0RmVlZGJhY2tGcm9tUnRwUGFja2V0RmVlZGJhY2so
Ci0gICAgY29uc3Qgd2VicnRjOjpQYWNrZXRGZWVkYmFjayYgcGYpIHsKLSAgUGFja2V0UmVzdWx0
IGZlZWRiYWNrOwotICBpZiAocGYuYXJyaXZhbF90aW1lX21zID09IHdlYnJ0Yzo6UGFja2V0RmVl
ZGJhY2s6OmtOb3RSZWNlaXZlZCkKLSAgICBmZWVkYmFjay5yZWNlaXZlX3RpbWUgPSBUaW1lc3Rh
bXA6OlBsdXNJbmZpbml0eSgpOwotICBlbHNlCi0gICAgZmVlZGJhY2sucmVjZWl2ZV90aW1lID0g
VGltZXN0YW1wOjptcyhwZi5hcnJpdmFsX3RpbWVfbXMpOwotICBpZiAocGYuc2VuZF90aW1lX21z
ICE9IHdlYnJ0Yzo6UGFja2V0RmVlZGJhY2s6OmtOb1NlbmRUaW1lKSB7Ci0gICAgZmVlZGJhY2su
c2VudF9wYWNrZXQgPSBTZW50UGFja2V0KCk7Ci0gICAgZmVlZGJhY2suc2VudF9wYWNrZXQtPnNl
cXVlbmNlX251bWJlciA9IHBmLmxvbmdfc2VxdWVuY2VfbnVtYmVyOwotICAgIGZlZWRiYWNrLnNl
bnRfcGFja2V0LT5zZW5kX3RpbWUgPSBUaW1lc3RhbXA6Om1zKHBmLnNlbmRfdGltZV9tcyk7Ci0g
ICAgZmVlZGJhY2suc2VudF9wYWNrZXQtPnNpemUgPSBEYXRhU2l6ZTo6Ynl0ZXMocGYucGF5bG9h
ZF9zaXplKTsKLSAgICBmZWVkYmFjay5zZW50X3BhY2tldC0+cGFjaW5nX2luZm8gPSBwZi5wYWNp
bmdfaW5mbzsKLSAgfQotICByZXR1cm4gZmVlZGJhY2s7Ci19Ci0KLXN0ZDo6dmVjdG9yPFBhY2tl
dFJlc3VsdD4gUGFja2V0UmVzdWx0c0Zyb21SdHBGZWVkYmFja1ZlY3RvcigKLSAgICBjb25zdCBz
dGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4mIGZlZWRiYWNrX3ZlY3RvcikgewotICBSVENfRENI
RUNLKHN0ZDo6aXNfc29ydGVkKGZlZWRiYWNrX3ZlY3Rvci5iZWdpbigpLCBmZWVkYmFja192ZWN0
b3IuZW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0RmVlZGJhY2tDb21w
YXJhdG9yKCkpKTsKLQotICBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+IHBhY2tldF9mZWVkYmFj
a3M7Ci0gIHBhY2tldF9mZWVkYmFja3MucmVzZXJ2ZShmZWVkYmFja192ZWN0b3Iuc2l6ZSgpKTsK
LSAgZm9yIChjb25zdCBQYWNrZXRGZWVkYmFjayYgcnRwX2ZlZWRiYWNrIDogZmVlZGJhY2tfdmVj
dG9yKSB7Ci0gICAgYXV0byBmZWVkYmFjayA9IE5ldHdvcmtQYWNrZXRGZWVkYmFja0Zyb21SdHBQ
YWNrZXRGZWVkYmFjayhydHBfZmVlZGJhY2spOwotICAgIHBhY2tldF9mZWVkYmFja3MucHVzaF9i
YWNrKGZlZWRiYWNrKTsKLSAgfQotICByZXR1cm4gcGFja2V0X2ZlZWRiYWNrczsKLX0KLQogVGFy
Z2V0UmF0ZUNvbnN0cmFpbnRzIENvbnZlcnRDb25zdHJhaW50cyhpbnQgbWluX2JpdHJhdGVfYnBz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X2JpdHJh
dGVfYnBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Rh
cnRfYml0cmF0ZV9icHMsCkBAIC0xNjYsMTc3ICsxMDQsNiBAQCBzdGF0aWMgUGVyaW9kaWNUYXNr
KiBTdGFydFBlcmlvZGljVGFzayhydGM6OlRhc2tRdWV1ZSogdGFza19xdWV1ZSwKIAogfSAgLy8g
bmFtZXNwYWNlCiAKLW5hbWVzcGFjZSBzZW5kX3NpZGVfY2NfaW50ZXJuYWwgewotY2xhc3MgQ29u
dHJvbEhhbmRsZXIgewotIHB1YmxpYzoKLSAgQ29udHJvbEhhbmRsZXIoTmV0d29ya0NoYW5nZWRP
YnNlcnZlciogb2JzZXJ2ZXIsCi0gICAgICAgICAgICAgICAgIFBhY2VyQ29udHJvbGxlciogcGFj
ZXJfY29udHJvbGxlciwKLSAgICAgICAgICAgICAgICAgY29uc3QgQ2xvY2sqIGNsb2NrKTsKLQot
ICB2b2lkIFBvc3RVcGRhdGVzKE5ldHdvcmtDb250cm9sVXBkYXRlIHVwZGF0ZSk7Ci0KLSAgdm9p
ZCBPbk5ldHdvcmtBdmFpbGFiaWxpdHkoTmV0d29ya0F2YWlsYWJpbGl0eSBtc2cpOwotICB2b2lk
IE9uT3V0c3RhbmRpbmdEYXRhKERhdGFTaXplIGluX2ZsaWdodF9kYXRhKTsKLSAgdm9pZCBPblBh
Y2VyUXVldWVVcGRhdGUoVGltZURlbHRhIGV4cGVjdGVkX3F1ZXVlX3RpbWUpOwotCi0gIGFic2w6
Om9wdGlvbmFsPFRhcmdldFRyYW5zZmVyUmF0ZT4gbGFzdF90cmFuc2Zlcl9yYXRlKCk7Ci0KLSBw
cml2YXRlOgotICB2b2lkIE9uTmV0d29ya0ludmFsaWRhdGlvbigpOwotICBib29sIEdldE5ldHdv
cmtQYXJhbWV0ZXJzKGludDMyX3QqIGVzdGltYXRlZF9iaXRyYXRlX2JwcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90KiBmcmFjdGlvbl9sb3NzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3QqIHJ0dF9tcyk7Ci0gIGJvb2wgSXNTZW5kUXVldWVGdWxsKCkg
Y29uc3Q7Ci0gIGJvb2wgSGFzTmV0d29ya1BhcmFtZXRlcnNUb1JlcG9ydENoYW5nZWQoaW50NjRf
dCBiaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90IGZyYWN0aW9uX2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBydHQpOwotICBOZXR3b3JrQ2hhbmdlZE9ic2VydmVyKiBvYnNl
cnZlcl8gPSBudWxscHRyOwotICBQYWNlckNvbnRyb2xsZXIqIHBhY2VyX2NvbnRyb2xsZXJfOwot
Ci0gIGFic2w6Om9wdGlvbmFsPFRhcmdldFRyYW5zZmVyUmF0ZT4gY3VycmVudF90YXJnZXRfcmF0
ZV9tc2dfOwotICBib29sIG5ldHdvcmtfYXZhaWxhYmxlXyA9IHRydWU7Ci0gIGludDY0X3QgbGFz
dF9yZXBvcnRlZF90YXJnZXRfYml0cmF0ZV9icHNfID0gMDsKLSAgdWludDhfdCBsYXN0X3JlcG9y
dGVkX2ZyYWN0aW9uX2xvc3NfID0gMDsKLSAgaW50NjRfdCBsYXN0X3JlcG9ydGVkX3J0dF9tc18g
PSAwOwotICBjb25zdCBib29sIHBhY2VyX3B1c2hiYWNrX2V4cGVyaW1lbnRfID0gZmFsc2U7Ci0g
IHVpbnQzMl90IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfOwotICBpbnQ2NF90IHBh
Y2VyX2V4cGVjdGVkX3F1ZXVlX21zXyA9IDA7Ci0gIGRvdWJsZSBlbmNvZGluZ19yYXRlX3JhdGlv
XyA9IDEuMDsKLSAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENvbmdlc3Rpb25XaW5kb3dQdXNoYmFj
a0NvbnRyb2xsZXI+Ci0gICAgICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVy
XzsKLQotICBydGM6OlNlcXVlbmNlZFRhc2tDaGVja2VyIHNlcXVlbmNlZF9jaGVja2VyXzsKLSAg
UlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhDb250cm9sSGFuZGxlcik7Ci19Owot
Ci1Db250cm9sSGFuZGxlcjo6Q29udHJvbEhhbmRsZXIoTmV0d29ya0NoYW5nZWRPYnNlcnZlciog
b2JzZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFjZXJDb250cm9sbGVy
KiBwYWNlcl9jb250cm9sbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENsb2NrKiBjbG9jaykKLSAgICA6IG9ic2VydmVyXyhvYnNlcnZlciksCi0gICAgICBwYWNlcl9j
b250cm9sbGVyXyhwYWNlcl9jb250cm9sbGVyKSwKLSAgICAgIHBhY2VyX3B1c2hiYWNrX2V4cGVy
aW1lbnRfKElzUGFjZXJQdXNoYmFja0V4cGVyaW1lbnRFbmFibGVkKCkpLAotICAgICAgY29uZ2Vz
dGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8oCi0gICAgICAgICAgTWF5YmVJbml0YWxp
emVDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyKCkpIHsKLSAgc2VxdWVuY2VkX2No
ZWNrZXJfLkRldGFjaCgpOwotfQotCi12b2lkIENvbnRyb2xIYW5kbGVyOjpQb3N0VXBkYXRlcyhO
ZXR3b3JrQ29udHJvbFVwZGF0ZSB1cGRhdGUpIHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVO
VElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICBpZiAodXBkYXRlLmNvbmdlc3Rpb25fd2lu
ZG93KSB7Ci0gICAgaWYgKGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfKSB7
Ci0gICAgICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXy0+U2V0RGF0YVdp
bmRvdygKLSAgICAgICAgICB1cGRhdGUuY29uZ2VzdGlvbl93aW5kb3cudmFsdWUoKSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgIHBhY2VyX2NvbnRyb2xsZXJfLT5PbkNvbmdlc3Rpb25XaW5kb3coKnVw
ZGF0ZS5jb25nZXN0aW9uX3dpbmRvdyk7Ci0gICAgfQotICB9Ci0gIGlmICh1cGRhdGUucGFjZXJf
Y29uZmlnKSB7Ci0gICAgcGFjZXJfY29udHJvbGxlcl8tPk9uUGFjZXJDb25maWcoKnVwZGF0ZS5w
YWNlcl9jb25maWcpOwotICB9Ci0gIGZvciAoY29uc3QgYXV0byYgcHJvYmUgOiB1cGRhdGUucHJv
YmVfY2x1c3Rlcl9jb25maWdzKSB7Ci0gICAgcGFjZXJfY29udHJvbGxlcl8tPk9uUHJvYmVDbHVz
dGVyQ29uZmlnKHByb2JlKTsKLSAgfQotICBpZiAodXBkYXRlLnRhcmdldF9yYXRlKSB7Ci0gICAg
Y3VycmVudF90YXJnZXRfcmF0ZV9tc2dfID0gKnVwZGF0ZS50YXJnZXRfcmF0ZTsKLSAgICBPbk5l
dHdvcmtJbnZhbGlkYXRpb24oKTsKLSAgfQotfQotCi12b2lkIENvbnRyb2xIYW5kbGVyOjpPbk5l
dHdvcmtBdmFpbGFiaWxpdHkoTmV0d29ya0F2YWlsYWJpbGl0eSBtc2cpIHsKLSAgUlRDX0RDSEVD
S19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICBuZXR3b3JrX2F2
YWlsYWJsZV8gPSBtc2cubmV0d29ya19hdmFpbGFibGU7Ci0gIE9uTmV0d29ya0ludmFsaWRhdGlv
bigpOwotfQotCi12b2lkIENvbnRyb2xIYW5kbGVyOjpPbk91dHN0YW5kaW5nRGF0YShEYXRhU2l6
ZSBpbl9mbGlnaHRfZGF0YSkgewotICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNl
cXVlbmNlZF9jaGVja2VyXyk7Ci0gIGlmIChjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250
cm9sbGVyXykgewotICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfLT5V
cGRhdGVPdXRzdGFuZGluZ0RhdGEoCi0gICAgICAgIGluX2ZsaWdodF9kYXRhLmJ5dGVzKCkpOwot
ICB9Ci0gIE9uTmV0d29ya0ludmFsaWRhdGlvbigpOwotfQotCi12b2lkIENvbnRyb2xIYW5kbGVy
OjpPblBhY2VyUXVldWVVcGRhdGUoVGltZURlbHRhIGV4cGVjdGVkX3F1ZXVlX3RpbWUpIHsKLSAg
UlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICBw
YWNlcl9leHBlY3RlZF9xdWV1ZV9tc18gPSBleHBlY3RlZF9xdWV1ZV90aW1lLm1zKCk7Ci0gIE9u
TmV0d29ya0ludmFsaWRhdGlvbigpOwotfQotCi12b2lkIENvbnRyb2xIYW5kbGVyOjpPbk5ldHdv
cmtJbnZhbGlkYXRpb24oKSB7Ci0gIGlmICghY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfLmhhc192
YWx1ZSgpKQotICAgIHJldHVybjsKLQotICB1aW50MzJfdCB0YXJnZXRfYml0cmF0ZV9icHMgPSBj
dXJyZW50X3RhcmdldF9yYXRlX21zZ18tPnRhcmdldF9yYXRlLmJwcygpOwotICBpbnQ2NF90IHJ0
dF9tcyA9Ci0gICAgICBjdXJyZW50X3RhcmdldF9yYXRlX21zZ18tPm5ldHdvcmtfZXN0aW1hdGUu
cm91bmRfdHJpcF90aW1lLm1zKCk7Ci0gIGZsb2F0IGxvc3NfcmF0ZV9yYXRpbyA9Ci0gICAgICBj
dXJyZW50X3RhcmdldF9yYXRlX21zZ18tPm5ldHdvcmtfZXN0aW1hdGUubG9zc19yYXRlX3JhdGlv
OwotCi0gIGludCBsb3NzX3JhdGlvXzI1NSA9IGxvc3NfcmF0ZV9yYXRpbyAqIDI1NTsKLSAgdWlu
dDhfdCBmcmFjdGlvbl9sb3NzID0KLSAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50OF90Pihy
dGM6OlNhZmVDbGFtcChsb3NzX3JhdGlvXzI1NSwgMCwgMjU1KSk7Ci0KLSAgaW50NjRfdCBwcm9i
aW5nX2ludGVydmFsX21zID0KLSAgICAgIGN1cnJlbnRfdGFyZ2V0X3JhdGVfbXNnXy0+bmV0d29y
a19lc3RpbWF0ZS5id2VfcGVyaW9kLm1zKCk7Ci0KLSAgaWYgKCFuZXR3b3JrX2F2YWlsYWJsZV8p
IHsKLSAgICB0YXJnZXRfYml0cmF0ZV9icHMgPSAwOwotICB9IGVsc2UgaWYgKGNvbmdlc3Rpb25f
d2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfKSB7Ci0gICAgdGFyZ2V0X2JpdHJhdGVfYnBzID0K
LSAgICAgICAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8tPlVwZGF0ZVRh
cmdldEJpdHJhdGUoCi0gICAgICAgICAgICB0YXJnZXRfYml0cmF0ZV9icHMpOwotICB9IGVsc2Ug
aWYgKCFwYWNlcl9wdXNoYmFja19leHBlcmltZW50XykgewotICAgIHRhcmdldF9iaXRyYXRlX2Jw
cyA9IElzU2VuZFF1ZXVlRnVsbCgpID8gMCA6IHRhcmdldF9iaXRyYXRlX2JwczsKLSAgfSBlbHNl
IHsKLSAgICBpbnQ2NF90IHF1ZXVlX2xlbmd0aF9tcyA9IHBhY2VyX2V4cGVjdGVkX3F1ZXVlX21z
XzsKLQotICAgIGlmIChxdWV1ZV9sZW5ndGhfbXMgPT0gMCkgewotICAgICAgZW5jb2RpbmdfcmF0
ZV9yYXRpb18gPSAxLjA7Ci0gICAgfSBlbHNlIGlmIChxdWV1ZV9sZW5ndGhfbXMgPiA1MCkgewot
ICAgICAgZG91YmxlIGVuY29kaW5nX3JhdGlvID0gMS4wIC0gcXVldWVfbGVuZ3RoX21zIC8gMTAw
MC4wOwotICAgICAgZW5jb2RpbmdfcmF0ZV9yYXRpb18gPSBzdGQ6Om1pbihlbmNvZGluZ19yYXRl
X3JhdGlvXywgZW5jb2RpbmdfcmF0aW8pOwotICAgICAgZW5jb2RpbmdfcmF0ZV9yYXRpb18gPSBz
dGQ6Om1heChlbmNvZGluZ19yYXRlX3JhdGlvXywgMC4wKTsKLSAgICB9Ci0KLSAgICB0YXJnZXRf
Yml0cmF0ZV9icHMgKj0gZW5jb2RpbmdfcmF0ZV9yYXRpb187Ci0gICAgdGFyZ2V0X2JpdHJhdGVf
YnBzID0gdGFyZ2V0X2JpdHJhdGVfYnBzIDwgNTAwMDAgPyAwIDogdGFyZ2V0X2JpdHJhdGVfYnBz
OwotICB9Ci0gIGlmIChIYXNOZXR3b3JrUGFyYW1ldGVyc1RvUmVwb3J0Q2hhbmdlZCh0YXJnZXRf
Yml0cmF0ZV9icHMsIGZyYWN0aW9uX2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydHRfbXMpKSB7Ci0gICAgb2JzZXJ2ZXJfLT5Pbk5ldHdvcmtDaGFuZ2Vk
KHRhcmdldF9iaXRyYXRlX2JwcywgZnJhY3Rpb25fbG9zcywgcnR0X21zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9iaW5nX2ludGVydmFsX21zKTsKLSAgfQotfQotYm9vbCBD
b250cm9sSGFuZGxlcjo6SGFzTmV0d29ya1BhcmFtZXRlcnNUb1JlcG9ydENoYW5nZWQoCi0gICAg
aW50NjRfdCB0YXJnZXRfYml0cmF0ZV9icHMsCi0gICAgdWludDhfdCBmcmFjdGlvbl9sb3NzLAot
ICAgIGludDY0X3QgcnR0X21zKSB7Ci0gIGJvb2wgY2hhbmdlZCA9IGxhc3RfcmVwb3J0ZWRfdGFy
Z2V0X2JpdHJhdGVfYnBzXyAhPSB0YXJnZXRfYml0cmF0ZV9icHMgfHwKLSAgICAgICAgICAgICAg
ICAgKHRhcmdldF9iaXRyYXRlX2JwcyA+IDAgJiYKLSAgICAgICAgICAgICAgICAgIChsYXN0X3Jl
cG9ydGVkX2ZyYWN0aW9uX2xvc3NfICE9IGZyYWN0aW9uX2xvc3MgfHwKLSAgICAgICAgICAgICAg
ICAgICBsYXN0X3JlcG9ydGVkX3J0dF9tc18gIT0gcnR0X21zKSk7Ci0gIGlmIChjaGFuZ2VkICYm
Ci0gICAgICAobGFzdF9yZXBvcnRlZF90YXJnZXRfYml0cmF0ZV9icHNfID09IDAgfHwgdGFyZ2V0
X2JpdHJhdGVfYnBzID09IDApKSB7Ci0gICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQml0cmF0ZSBl
c3RpbWF0ZSBzdGF0ZSBjaGFuZ2VkLCBCV0U6ICIKLSAgICAgICAgICAgICAgICAgICAgIDw8IHRh
cmdldF9iaXRyYXRlX2JwcyA8PCAiIGJwcy4iOwotICB9Ci0gIGxhc3RfcmVwb3J0ZWRfdGFyZ2V0
X2JpdHJhdGVfYnBzXyA9IHRhcmdldF9iaXRyYXRlX2JwczsKLSAgbGFzdF9yZXBvcnRlZF9mcmFj
dGlvbl9sb3NzXyA9IGZyYWN0aW9uX2xvc3M7Ci0gIGxhc3RfcmVwb3J0ZWRfcnR0X21zXyA9IHJ0
dF9tczsKLSAgcmV0dXJuIGNoYW5nZWQ7Ci19Ci0KLWJvb2wgQ29udHJvbEhhbmRsZXI6OklzU2Vu
ZFF1ZXVlRnVsbCgpIGNvbnN0IHsKLSAgcmV0dXJuIHBhY2VyX2V4cGVjdGVkX3F1ZXVlX21zXyA+
IFBhY2VkU2VuZGVyOjprTWF4UXVldWVMZW5ndGhNczsKLX0KLQotYWJzbDo6b3B0aW9uYWw8VGFy
Z2V0VHJhbnNmZXJSYXRlPiBDb250cm9sSGFuZGxlcjo6bGFzdF90cmFuc2Zlcl9yYXRlKCkgewot
ICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0g
IHJldHVybiBjdXJyZW50X3RhcmdldF9yYXRlX21zZ187Ci19Ci19ICAvLyBuYW1lc3BhY2Ugc2Vu
ZF9zaWRlX2NjX2ludGVybmFsCi0KIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6OlNlbmRT
aWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXIoCiAgICAgY29uc3QgQ2xvY2sqIGNsb2NrLAogICAgIHJ0
Yzo6VGFza1F1ZXVlKiB0YXNrX3F1ZXVlLApAQCAtMzUyLDEwICsxMTksMTEgQEAgU2VuZFNpZGVD
b25nZXN0aW9uQ29udHJvbGxlcjo6U2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcigKICAgICAg
IGNvbnRyb2xsZXJfZmFjdG9yeV93aXRoX2ZlZWRiYWNrXyhjb250cm9sbGVyX2ZhY3RvcnkpLAog
ICAgICAgY29udHJvbGxlcl9mYWN0b3J5X2ZhbGxiYWNrXygKICAgICAgICAgICBhYnNsOjptYWtl
X3VuaXF1ZTxHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3Rvcnk+KGV2ZW50X2xvZykpLAotICAg
ICAgcGFjZXJfY29udHJvbGxlcl8oYWJzbDo6bWFrZV91bmlxdWU8UGFjZXJDb250cm9sbGVyPihw
YWNlcl8pKSwKICAgICAgIHByb2Nlc3NfaW50ZXJ2YWxfKGNvbnRyb2xsZXJfZmFjdG9yeV9mYWxs
YmFja18tPkdldFByb2Nlc3NJbnRlcnZhbCgpKSwKICAgICAgIGxhc3RfcmVwb3J0X2Jsb2NrX3Rp
bWVfKFRpbWVzdGFtcDo6bXMoY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSkpLAogICAgICAg
b2JzZXJ2ZXJfKG51bGxwdHIpLAorICAgICAgcmVzZXRfZmVlZGJhY2tfb25fcm91dGVfY2hhbmdl
XygKKyAgICAgICAgICAhZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUJ3ZS1Ob0ZlZWRi
YWNrUmVzZXQiKSksCiAgICAgICBzZW5kX3NpZGVfYndlX3dpdGhfb3ZlcmhlYWRfKAogICAgICAg
ICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVNlbmRTaWRlQndlLVdp
dGhPdmVyaGVhZCIpKSwKICAgICAgIHRyYW5zcG9ydF9vdmVyaGVhZF9ieXRlc19wZXJfcGFja2V0
XygwKSwKQEAgLTM5OCw4ICsxNjYsOCBAQCB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xs
ZXI6Ok1heWJlUmVjcmVhdGVDb250cm9sbGVycygpIHsKICAgaWYgKCFuZXR3b3JrX2F2YWlsYWJs
ZV8gfHwgIW9ic2VydmVyXykKICAgICByZXR1cm47CiAgIGlmICghY29udHJvbF9oYW5kbGVyXykg
ewotICAgIGNvbnRyb2xfaGFuZGxlcl8gPSBhYnNsOjptYWtlX3VuaXF1ZTxzZW5kX3NpZGVfY2Nf
aW50ZXJuYWw6OkNvbnRyb2xIYW5kbGVyPigKLSAgICAgICAgb2JzZXJ2ZXJfLCBwYWNlcl9jb250
cm9sbGVyXy5nZXQoKSwgY2xvY2tfKTsKKyAgICBjb250cm9sX2hhbmRsZXJfID0KKyAgICAgICAg
YWJzbDo6bWFrZV91bmlxdWU8Q29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyPihvYnNlcnZlcl8sIHBh
Y2VyXyk7CiAgIH0KIAogICBpbml0aWFsX2NvbmZpZ18uY29uc3RyYWludHMuYXRfdGltZSA9CkBA
IC00ODksOCArMjU3LDkgQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpPbk5l
dHdvcmtSb3V0ZUNoYW5nZWQoCiAgICAgaW50IHN0YXJ0X2JpdHJhdGVfYnBzLAogICAgIGludCBt
aW5fYml0cmF0ZV9icHMsCiAgICAgaW50IG1heF9iaXRyYXRlX2JwcykgewotICB0cmFuc3BvcnRf
ZmVlZGJhY2tfYWRhcHRlcl8uU2V0TmV0d29ya0lkcyhuZXR3b3JrX3JvdXRlLmxvY2FsX25ldHdv
cmtfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdv
cmtfcm91dGUucmVtb3RlX25ldHdvcmtfaWQpOworICBpZiAocmVzZXRfZmVlZGJhY2tfb25fcm91
dGVfY2hhbmdlXykKKyAgICB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl8uU2V0TmV0d29ya0lk
cyhuZXR3b3JrX3JvdXRlLmxvY2FsX25ldHdvcmtfaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29ya19yb3V0ZS5yZW1vdGVfbmV0d29ya19pZCk7
CiAgIHRyYW5zcG9ydF9vdmVyaGVhZF9ieXRlc19wZXJfcGFja2V0XyA9IG5ldHdvcmtfcm91dGUu
cGFja2V0X292ZXJoZWFkOwogCiAgIE5ldHdvcmtSb3V0ZUNoYW5nZSBtc2c7CkBAIC01MDUsNyAr
Mjc0LDcgQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpPbk5ldHdvcmtSb3V0
ZUNoYW5nZWQoCiAgICAgfSBlbHNlIHsKICAgICAgIFVwZGF0ZUluaXRpYWxDb25zdHJhaW50cyht
c2cuY29uc3RyYWludHMpOwogICAgIH0KLSAgICBwYWNlcl9jb250cm9sbGVyXy0+T25OZXR3b3Jr
Um91dGVDaGFuZ2UobXNnKTsKKyAgICBwYWNlcl8tPlVwZGF0ZU91dHN0YW5kaW5nRGF0YSgwKTsK
ICAgfSk7CiB9CiAKQEAgLTU3Miw3ICszNDEsNiBAQCB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNv
bnRyb2xsZXI6OlNpZ25hbE5ldHdvcmtTdGF0ZShOZXR3b3JrU3RhdGUgc3RhdGUpIHsKICAgICBu
ZXR3b3JrX2F2YWlsYWJsZV8gPSBtc2cubmV0d29ya19hdmFpbGFibGU7CiAgICAgaWYgKGNvbnRy
b2xsZXJfKSB7CiAgICAgICBjb250cm9sX2hhbmRsZXJfLT5Qb3N0VXBkYXRlcyhjb250cm9sbGVy
Xy0+T25OZXR3b3JrQXZhaWxhYmlsaXR5KG1zZykpOwotICAgICAgcGFjZXJfY29udHJvbGxlcl8t
Pk9uTmV0d29ya0F2YWlsYWJpbGl0eShtc2cpOwogICAgICAgY29udHJvbF9oYW5kbGVyXy0+T25O
ZXR3b3JrQXZhaWxhYmlsaXR5KG1zZyk7CiAgICAgfSBlbHNlIHsKICAgICAgIE1heWJlQ3JlYXRl
Q29udHJvbGxlcnMoKTsKQEAgLTU4MiwyNyArMzUwLDE2IEBAIHZvaWQgU2VuZFNpZGVDb25nZXN0
aW9uQ29udHJvbGxlcjo6U2lnbmFsTmV0d29ya1N0YXRlKE5ldHdvcmtTdGF0ZSBzdGF0ZSkgewog
CiB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6Ok9uU2VudFBhY2tldCgKICAgICBj
b25zdCBydGM6OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KSB7Ci0gIC8vIFdlJ3JlIG5vdCBpbnRl
cmVzdGVkIGluIHBhY2tldHMgd2l0aG91dCBhbiBpZCwgd2hpY2ggbWF5IGJlIHN0dW4gcGFja2V0
cywKLSAgLy8gZXRjLCBzZW50IG9uIHRoZSBzYW1lIHRyYW5zcG9ydC4KLSAgaWYgKHNlbnRfcGFj
a2V0LnBhY2tldF9pZCA9PSAtMSkKLSAgICByZXR1cm47Ci0gIHRyYW5zcG9ydF9mZWVkYmFja19h
ZGFwdGVyXy5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQucGFja2V0X2lkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRfcGFja2V0LnNlbmRfdGltZV9tcyk7
Ci0gIE1heWJlVXBkYXRlT3V0c3RhbmRpbmdEYXRhKCk7Ci0gIGF1dG8gcGFja2V0ID0gdHJhbnNw
b3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLkdldFBhY2tldChzZW50X3BhY2tldC5wYWNrZXRfaWQpOwot
ICBpZiAocGFja2V0Lmhhc192YWx1ZSgpKSB7Ci0gICAgU2VudFBhY2tldCBtc2c7Ci0gICAgbXNn
LnNpemUgPSBEYXRhU2l6ZTo6Ynl0ZXMocGFja2V0LT5wYXlsb2FkX3NpemUpOwotICAgIG1zZy5z
ZW5kX3RpbWUgPSBUaW1lc3RhbXA6Om1zKHBhY2tldC0+c2VuZF90aW1lX21zKTsKLSAgICBtc2cu
c2VxdWVuY2VfbnVtYmVyID0gcGFja2V0LT5sb25nX3NlcXVlbmNlX251bWJlcjsKLSAgICBtc2cu
ZGF0YV9pbl9mbGlnaHQgPQotICAgICAgICBEYXRhU2l6ZTo6Ynl0ZXModHJhbnNwb3J0X2ZlZWRi
YWNrX2FkYXB0ZXJfLkdldE91dHN0YW5kaW5nQnl0ZXMoKSk7Ci0gICAgdGFza19xdWV1ZV8tPlBv
c3RUYXNrKFt0aGlzLCBtc2ddKCkgeworICBhYnNsOjpvcHRpb25hbDxTZW50UGFja2V0PiBwYWNr
ZXRfbXNnID0KKyAgICAgIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5Qcm9jZXNzU2VudFBh
Y2tldChzZW50X3BhY2tldCk7CisgIGlmIChwYWNrZXRfbXNnKSB7CisgICAgdGFza19xdWV1ZV8t
PlBvc3RUYXNrKFt0aGlzLCBwYWNrZXRfbXNnXSgpIHsKICAgICAgIFJUQ19EQ0hFQ0tfUlVOX09O
KHRhc2tfcXVldWVfKTsKICAgICAgIGlmIChjb250cm9sbGVyXykKLSAgICAgICAgY29udHJvbF9o
YW5kbGVyXy0+UG9zdFVwZGF0ZXMoY29udHJvbGxlcl8tPk9uU2VudFBhY2tldChtc2cpKTsKKyAg
ICAgICAgY29udHJvbF9oYW5kbGVyXy0+UG9zdFVwZGF0ZXMoY29udHJvbGxlcl8tPk9uU2VudFBh
Y2tldCgqcGFja2V0X21zZykpOwogICAgIH0pOwogICB9CisgIE1heWJlVXBkYXRlT3V0c3RhbmRp
bmdEYXRhKCk7CiB9CiAKIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6T25SdHRV
cGRhdGUoaW50NjRfdCBhdmdfcnR0X21zLApAQCAtNjg3LDM5ICs0NDQsMjQgQEAgdm9pZCBTZW5k
U2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpBZGRQYWNrZXQoCiB2b2lkIFNlbmRTaWRlQ29uZ2Vz
dGlvbkNvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0RmVlZGJhY2soCiAgICAgY29uc3QgcnRjcDo6VHJh
bnNwb3J0RmVlZGJhY2smIGZlZWRiYWNrKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOU19TRVJJQUxJWkVE
KCZ3b3JrZXJfcmFjZV8pOwotICBpbnQ2NF90IGZlZWRiYWNrX3RpbWVfbXMgPSBjbG9ja18tPlRp
bWVJbk1pbGxpc2Vjb25kcygpOwogCi0gIERhdGFTaXplIHByaW9yX2luX2ZsaWdodCA9Ci0gICAg
ICBEYXRhU2l6ZTo6Ynl0ZXModHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLkdldE91dHN0YW5k
aW5nQnl0ZXMoKSk7Ci0gIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5PblRyYW5zcG9ydEZl
ZWRiYWNrKGZlZWRiYWNrKTsKLSAgTWF5YmVVcGRhdGVPdXRzdGFuZGluZ0RhdGEoKTsKLQotICBz
dGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gZmVlZGJhY2tfdmVjdG9yID0KLSAgICAgIHRyYW5z
cG9ydF9mZWVkYmFja19hZGFwdGVyXy5HZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3RvcigpOwotICBT
b3J0UGFja2V0RmVlZGJhY2tWZWN0b3IoJmZlZWRiYWNrX3ZlY3Rvcik7Ci0KLSAgaWYgKCFmZWVk
YmFja192ZWN0b3IuZW1wdHkoKSkgewotICAgIFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayBtc2c7
Ci0gICAgbXNnLnBhY2tldF9mZWVkYmFja3MgPSBQYWNrZXRSZXN1bHRzRnJvbVJ0cEZlZWRiYWNr
VmVjdG9yKGZlZWRiYWNrX3ZlY3Rvcik7Ci0gICAgbXNnLmZlZWRiYWNrX3RpbWUgPSBUaW1lc3Rh
bXA6Om1zKGZlZWRiYWNrX3RpbWVfbXMpOwotICAgIG1zZy5wcmlvcl9pbl9mbGlnaHQgPSBwcmlv
cl9pbl9mbGlnaHQ7Ci0gICAgbXNnLmRhdGFfaW5fZmxpZ2h0ID0KLSAgICAgICAgRGF0YVNpemU6
OmJ5dGVzKHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5HZXRPdXRzdGFuZGluZ0J5dGVzKCkp
OwotICAgIHRhc2tfcXVldWVfLT5Qb3N0VGFzayhbdGhpcywgbXNnXSgpIHsKKyAgYWJzbDo6b3B0
aW9uYWw8VHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrPiBmZWVkYmFja19tc2cgPQorICAgICAgdHJh
bnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFj
ayk7CisgIGlmIChmZWVkYmFja19tc2cpIHsKKyAgICB0YXNrX3F1ZXVlXy0+UG9zdFRhc2soW3Ro
aXMsIGZlZWRiYWNrX21zZ10oKSB7CiAgICAgICBSVENfRENIRUNLX1JVTl9PTih0YXNrX3F1ZXVl
Xyk7CiAgICAgICBpZiAoY29udHJvbGxlcl8pCiAgICAgICAgIGNvbnRyb2xfaGFuZGxlcl8tPlBv
c3RVcGRhdGVzKAotICAgICAgICAgICAgY29udHJvbGxlcl8tPk9uVHJhbnNwb3J0UGFja2V0c0Zl
ZWRiYWNrKG1zZykpOworICAgICAgICAgICAgY29udHJvbGxlcl8tPk9uVHJhbnNwb3J0UGFja2V0
c0ZlZWRiYWNrKCpmZWVkYmFja19tc2cpKTsKICAgICB9KTsKICAgfQorICBNYXliZVVwZGF0ZU91
dHN0YW5kaW5nRGF0YSgpOwogfQogCiB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6
Ok1heWJlVXBkYXRlT3V0c3RhbmRpbmdEYXRhKCkgewotICBEYXRhU2l6ZSBpbl9mbGlnaHRfZGF0
YSA9Ci0gICAgICBEYXRhU2l6ZTo6Ynl0ZXModHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLkdl
dE91dHN0YW5kaW5nQnl0ZXMoKSk7CisgIERhdGFTaXplIGluX2ZsaWdodF9kYXRhID0gdHJhbnNw
b3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLkdldE91dHN0YW5kaW5nRGF0YSgpOwogICB0YXNrX3F1ZXVl
Xy0+UG9zdFRhc2soW3RoaXMsIGluX2ZsaWdodF9kYXRhXSgpIHsKICAgICBSVENfRENIRUNLX1JV
Tl9PTih0YXNrX3F1ZXVlXyk7Ci0gICAgcGFjZXJfY29udHJvbGxlcl8tPk9uT3V0c3RhbmRpbmdE
YXRhKGluX2ZsaWdodF9kYXRhKTsKICAgICBpZiAoY29udHJvbF9oYW5kbGVyXykKICAgICAgIGNv
bnRyb2xfaGFuZGxlcl8tPk9uT3V0c3RhbmRpbmdEYXRhKGluX2ZsaWdodF9kYXRhKTsKICAgfSk7
CkBAIC03NDAsNyArNDgyLDcgQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpQ
b3N0UGVyaW9kaWNUYXNrc0ZvclRlc3QoKSB7CiB9CiAKIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9u
Q29udHJvbGxlcjo6V2FpdE9uVGFza3NGb3JUZXN0KCkgewotICBydGM6OkV2ZW50IGV2ZW50KGZh
bHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAgIHRhc2tfcXVldWVfLT5Qb3N0VGFz
ayhbJmV2ZW50XSgpIHsgZXZlbnQuU2V0KCk7IH0pOwogICBldmVudC5XYWl0KHJ0Yzo6RXZlbnQ6
OmtGb3JldmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3NpZGVf
Y29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3Nl
bmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKaW5kZXggZDYxMGFmZTEz
ZDBmM2UyMTQ1MTg3MDYyNzg4YTY5M2Y2ZjRkN2RlNi4uNmVkN2E0OTU1M2YxOTI0Mzc4YWIyZTc4
MDAwZDIyNWMxOTUxZjg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3NlbmRfc2lk
ZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
cnRwL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKQEAgLTE3LDcg
KzE3LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNs
dWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0
cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC90cmFuc3BvcnRfZmVlZGJhY2suaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0LmgiCiAjaW5jbHVkZSAi
c3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3Ry
aWFsLmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgpAQCAtMTA4LDggKzEwOCwxMSBAQCBjbGFz
cyBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgewogICAgIGNvbnRyb2xsZXJfLT5BZGRQYWNrZXQoc3NyYywgcGFja2V0X2ZlZWRiYWNrLnNl
cXVlbmNlX251bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9mZWVkYmFj
ay5wYXlsb2FkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfZmVlZGJh
Y2sucGFjaW5nX2luZm8pOworICAgIHJ0Yzo6UGFja2V0SW5mbyBwYWNrZXRfaW5mbzsKKyAgICBw
YWNrZXRfaW5mby5pbmNsdWRlZF9pbl9mZWVkYmFjayA9IHRydWU7CiAgICAgY29udHJvbGxlcl8t
Pk9uU2VudFBhY2tldChydGM6OlNlbnRQYWNrZXQocGFja2V0X2ZlZWRiYWNrLnNlcXVlbmNlX251
bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNr
ZXRfZmVlZGJhY2suc2VuZF90aW1lX21zKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFja2V0X2ZlZWRiYWNrLnNlbmRfdGltZV9tcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfaW5mbykpOwogICB9
CiAKICAgLy8gQWxsb3dzIHVzIHRvIHRyYWNrIHRoZSB0YXJnZXQgYml0cmF0ZSwgd2l0aG91dCBw
cmVzY3JpYmluZyB0aGUgZXhhY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5k
X3RpbWVfaGlzdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5j
YwppbmRleCA3MzY4MmNkNWIyNDI2NTQ1Y2FlYjUxMzQ2OGI0ZGUzYTk5MDhjNTI1Li4xMTBkYWMz
OTkzMjEyNDg4NjllMWE5ZjgxNTAyYTZmZDQxMzJlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9ydHAvc2VuZF90aW1lX2hpc3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3Nl
bmRfdGltZV9oaXN0b3J5LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTQx
LDggKzQyLDE5IEBAIHZvaWQgU2VuZFRpbWVIaXN0b3J5OjpBZGRBbmRSZW1vdmVPbGQoY29uc3Qg
UGFja2V0RmVlZGJhY2smIHBhY2tldCkgewogICBQYWNrZXRGZWVkYmFjayBwYWNrZXRfY29weSA9
IHBhY2tldDsKICAgcGFja2V0X2NvcHkubG9uZ19zZXF1ZW5jZV9udW1iZXIgPSB1bndyYXBwZWRf
c2VxX251bTsKICAgaGlzdG9yeV8uaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHVud3JhcHBlZF9zZXFf
bnVtLCBwYWNrZXRfY29weSkpOwotICBpZiAocGFja2V0LnNlbmRfdGltZV9tcyA+PSAwKQorICBp
ZiAocGFja2V0LnNlbmRfdGltZV9tcyA+PSAwKSB7CiAgICAgQWRkUGFja2V0Qnl0ZXMocGFja2V0
X2NvcHkpOworICAgIGxhc3Rfc2VuZF90aW1lX21zXyA9IHN0ZDo6bWF4KGxhc3Rfc2VuZF90aW1l
X21zXywgcGFja2V0LnNlbmRfdGltZV9tcyk7CisgIH0KK30KKwordm9pZCBTZW5kVGltZUhpc3Rv
cnk6OkFkZFVudHJhY2tlZChzaXplX3QgcGFja2V0X3NpemUsIGludDY0X3Qgc2VuZF90aW1lX21z
KSB7CisgIGlmIChzZW5kX3RpbWVfbXMgPCBsYXN0X3NlbmRfdGltZV9tc18pIHsKKyAgICBSVENf
TE9HKExTX1dBUk5JTkcpIDw8ICJpZ25vcmluZyB1bnRyYWNrZWQgZGF0YSBmb3Igb3V0IG9mIG9y
ZGVyIHBhY2tldC4iOworICB9CisgIHBlbmRpbmdfdW50cmFja2VkX3NpemVfICs9IHBhY2tldF9z
aXplOworICBsYXN0X3VudHJhY2tlZF9zZW5kX3RpbWVfbXNfID0KKyAgICAgIHN0ZDo6bWF4KGxh
c3RfdW50cmFja2VkX3NlbmRfdGltZV9tc18sIHNlbmRfdGltZV9tcyk7CiB9CiAKIGJvb2wgU2Vu
ZFRpbWVIaXN0b3J5OjpPblNlbnRQYWNrZXQodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLApAQCAt
NTMsOCArNjUsMTcgQEAgYm9vbCBTZW5kVGltZUhpc3Rvcnk6Ok9uU2VudFBhY2tldCh1aW50MTZf
dCBzZXF1ZW5jZV9udW1iZXIsCiAgICAgcmV0dXJuIGZhbHNlOwogICBib29sIHBhY2tldF9yZXRy
YW5zbWl0ID0gaXQtPnNlY29uZC5zZW5kX3RpbWVfbXMgPj0gMDsKICAgaXQtPnNlY29uZC5zZW5k
X3RpbWVfbXMgPSBzZW5kX3RpbWVfbXM7CisgIGxhc3Rfc2VuZF90aW1lX21zXyA9IHN0ZDo6bWF4
KGxhc3Rfc2VuZF90aW1lX21zXywgc2VuZF90aW1lX21zKTsKICAgaWYgKCFwYWNrZXRfcmV0cmFu
c21pdCkKICAgICBBZGRQYWNrZXRCeXRlcyhpdC0+c2Vjb25kKTsKKyAgaWYgKHBlbmRpbmdfdW50
cmFja2VkX3NpemVfID4gMCkgeworICAgIGlmIChzZW5kX3RpbWVfbXMgPCBsYXN0X3VudHJhY2tl
ZF9zZW5kX3RpbWVfbXNfKQorICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQorICAgICAgICAgIDw8
ICJhcHBlbmRpbmcgYWNrbm93bGVkZ2VkIGRhdGEgZm9yIG91dCBvZiBvcmRlciBwYWNrZXQuIChE
aWZmOiAiCisgICAgICAgICAgPDwgbGFzdF91bnRyYWNrZWRfc2VuZF90aW1lX21zXyAtIHNlbmRf
dGltZV9tcyA8PCAiIG1zLikiOworICAgIGl0LT5zZWNvbmQudW5hY2tub3dsZWRnZWRfZGF0YSAr
PSBwZW5kaW5nX3VudHJhY2tlZF9zaXplXzsKKyAgICBwZW5kaW5nX3VudHJhY2tlZF9zaXplXyA9
IDA7CisgIH0KICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkwLDEzICsxMTEsMTMgQEAgYm9vbCBT
ZW5kVGltZUhpc3Rvcnk6OkdldEZlZWRiYWNrKFBhY2tldEZlZWRiYWNrKiBwYWNrZXRfZmVlZGJh
Y2ssCiAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2VuZFRpbWVIaXN0b3J5OjpHZXRPdXRz
dGFuZGluZ0J5dGVzKHVpbnQxNl90IGxvY2FsX25ldF9pZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgcmVtb3RlX25ldF9pZCkgY29uc3Qgewor
RGF0YVNpemUgU2VuZFRpbWVIaXN0b3J5OjpHZXRPdXRzdGFuZGluZ0RhdGEodWludDE2X3QgbG9j
YWxfbmV0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDE2X3QgcmVtb3RlX25ldF9pZCkgY29uc3QgewogICBhdXRvIGl0ID0gaW5fZmxpZ2h0X2J5
dGVzXy5maW5kKHtsb2NhbF9uZXRfaWQsIHJlbW90ZV9uZXRfaWR9KTsKICAgaWYgKGl0ICE9IGlu
X2ZsaWdodF9ieXRlc18uZW5kKCkpIHsKLSAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAgICByZXR1
cm4gRGF0YVNpemU6OmJ5dGVzKGl0LT5zZWNvbmQpOwogICB9IGVsc2UgewotICAgIHJldHVybiAw
OworICAgIHJldHVybiBEYXRhU2l6ZTo6WmVybygpOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRw
L3NlbmRfdGltZV9oaXN0b3J5LmgKaW5kZXggN2NjNmFkNzY0MTQ4ODA0OTExNzhlNTVkNmI2NjRi
MWYxZDgxNzg5NC4uNjU2YjdlMTZhMzRiMWRmZGFiODc3Mjg3ZDIxMTc5ZmZkMWZjMmI1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3NlbmRfdGltZV9oaXN0b3J5LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvcnRwL3NlbmRfdGltZV9oaXN0b3J5LmgKQEAgLTE0LDYgKzE0LDcgQEAKICNp
bmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFwaS91bml0cy9k
YXRhX3NpemUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBl
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIApAQCAtMjksNiAr
MzAsOCBAQCBjbGFzcyBTZW5kVGltZUhpc3RvcnkgewogICAvLyBDbGVhbnVwIG9sZCBlbnRyaWVz
LCB0aGVuIGFkZCBuZXcgcGFja2V0IGluZm8gd2l0aCBwcm92aWRlZCBwYXJhbWV0ZXJzLgogICB2
b2lkIEFkZEFuZFJlbW92ZU9sZChjb25zdCBQYWNrZXRGZWVkYmFjayYgcGFja2V0KTsKIAorICB2
b2lkIEFkZFVudHJhY2tlZChzaXplX3QgcGFja2V0X3NpemUsIGludDY0X3Qgc2VuZF90aW1lX21z
KTsKKwogICAvLyBVcGRhdGVzIHBhY2tldCBpbmZvIGlkZW50aWZpZWQgYnkgfHNlcXVlbmNlX251
bWJlcnwgd2l0aCB8c2VuZF90aW1lX21zfC4KICAgLy8gUmV0dXJuIGZhbHNlIGlmIG5vdCBmb3Vu
ZC4KICAgYm9vbCBPblNlbnRQYWNrZXQodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLCBpbnQ2NF90
IHNlbmRfdGltZV9tcyk7CkBAIC00MSw4ICs0NCw4IEBAIGNsYXNzIFNlbmRUaW1lSGlzdG9yeSB7
CiAgIC8vIHRodXMgYmUgbm9uLW51bGwgYW5kIGhhdmUgdGhlIHNlcXVlbmNlX251bWJlciBmaWVs
ZCBzZXQuCiAgIGJvb2wgR2V0RmVlZGJhY2soUGFja2V0RmVlZGJhY2sqIHBhY2tldF9mZWVkYmFj
aywgYm9vbCByZW1vdmUpOwogCi0gIHNpemVfdCBHZXRPdXRzdGFuZGluZ0J5dGVzKHVpbnQxNl90
IGxvY2FsX25ldF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgcmVt
b3RlX25ldF9pZCkgY29uc3Q7CisgIERhdGFTaXplIEdldE91dHN0YW5kaW5nRGF0YSh1aW50MTZf
dCBsb2NhbF9uZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBy
ZW1vdGVfbmV0X2lkKSBjb25zdDsKIAogIHByaXZhdGU6CiAgIHVzaW5nIFJlbW90ZUFuZExvY2Fs
TmV0d29ya0lkID0gc3RkOjpwYWlyPHVpbnQxNl90LCB1aW50MTZfdD47CkBAIC01Miw2ICs1NSw5
IEBAIGNsYXNzIFNlbmRUaW1lSGlzdG9yeSB7CiAgIHZvaWQgVXBkYXRlQWNrZWRTZXFOdW0oaW50
NjRfdCBhY2tlZF9zZXFfbnVtKTsKICAgY29uc3QgQ2xvY2sqIGNvbnN0IGNsb2NrXzsKICAgY29u
c3QgaW50NjRfdCBwYWNrZXRfYWdlX2xpbWl0X21zXzsKKyAgc2l6ZV90IHBlbmRpbmdfdW50cmFj
a2VkX3NpemVfID0gMDsKKyAgaW50NjRfdCBsYXN0X3NlbmRfdGltZV9tc18gPSAtMTsKKyAgaW50
NjRfdCBsYXN0X3VudHJhY2tlZF9zZW5kX3RpbWVfbXNfID0gLTE7CiAgIFNlcXVlbmNlTnVtYmVy
VW53cmFwcGVyIHNlcV9udW1fdW53cmFwcGVyXzsKICAgc3RkOjptYXA8aW50NjRfdCwgUGFja2V0
RmVlZGJhY2s+IGhpc3RvcnlfOwogICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBsYXN0X2Fja19z
ZXFfbnVtXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVlZGJh
Y2tfYWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRh
cHRlci5jYwppbmRleCBkMWI0ODU1ZTM2OWQ0ZDAyNmEzYzlkNTNmMzNhZTMyMTA3NDViNzg0Li43
M2Q5NTIzMTg0M2I3NGRiNGU2NTM3OWUyNTVlMGJiNmYyNDE2OTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvcnRwL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmNjCkBAIC0xOSw4ICsxOSwy
OCBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL21vZF9vcHMuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7Ci1uYW1lc3BhY2Ugd2VicnRjX2NjIHsKK25hbWVzcGFjZSB7Cit2b2lkIFNvcnRQ
YWNrZXRGZWVkYmFja1ZlY3RvcihzdGQ6OnZlY3Rvcjx3ZWJydGM6OlBhY2tldEZlZWRiYWNrPiog
aW5wdXQpIHsKKyAgc3RkOjpzb3J0KGlucHV0LT5iZWdpbigpLCBpbnB1dC0+ZW5kKCksIFBhY2tl
dEZlZWRiYWNrQ29tcGFyYXRvcigpKTsKK30KIAorUGFja2V0UmVzdWx0IE5ldHdvcmtQYWNrZXRG
ZWVkYmFja0Zyb21SdHBQYWNrZXRGZWVkYmFjaygKKyAgICBjb25zdCB3ZWJydGM6OlBhY2tldEZl
ZWRiYWNrJiBwZikgeworICBQYWNrZXRSZXN1bHQgZmVlZGJhY2s7CisgIGlmIChwZi5hcnJpdmFs
X3RpbWVfbXMgPT0gd2VicnRjOjpQYWNrZXRGZWVkYmFjazo6a05vdFJlY2VpdmVkKSB7CisgICAg
ZmVlZGJhY2sucmVjZWl2ZV90aW1lID0gVGltZXN0YW1wOjpQbHVzSW5maW5pdHkoKTsKKyAgfSBl
bHNlIHsKKyAgICBmZWVkYmFjay5yZWNlaXZlX3RpbWUgPSBUaW1lc3RhbXA6Om1zKHBmLmFycml2
YWxfdGltZV9tcyk7CisgIH0KKyAgZmVlZGJhY2suc2VudF9wYWNrZXQuc2VxdWVuY2VfbnVtYmVy
ID0gcGYubG9uZ19zZXF1ZW5jZV9udW1iZXI7CisgIGZlZWRiYWNrLnNlbnRfcGFja2V0LnNlbmRf
dGltZSA9IFRpbWVzdGFtcDo6bXMocGYuc2VuZF90aW1lX21zKTsKKyAgZmVlZGJhY2suc2VudF9w
YWNrZXQuc2l6ZSA9IERhdGFTaXplOjpieXRlcyhwZi5wYXlsb2FkX3NpemUpOworICBmZWVkYmFj
ay5zZW50X3BhY2tldC5wYWNpbmdfaW5mbyA9IHBmLnBhY2luZ19pbmZvOworICBmZWVkYmFjay5z
ZW50X3BhY2tldC5wcmlvcl91bmFja2VkX2RhdGEgPQorICAgICAgRGF0YVNpemU6OmJ5dGVzKHBm
LnVuYWNrbm93bGVkZ2VkX2RhdGEpOworICByZXR1cm4gZmVlZGJhY2s7Cit9Cit9ICAvLyBuYW1l
c3BhY2UKIGNvbnN0IGludDY0X3Qga05vVGltZXN0YW1wID0gLTE7CiBjb25zdCBpbnQ2NF90IGtT
ZW5kVGltZUhpc3RvcnlXaW5kb3dNcyA9IDYwMDAwOwogY29uc3QgaW50NjRfdCBrQmFzZVRpbWVz
dGFtcFNjYWxlRmFjdG9yID0KQEAgLTc3LDE2ICs5Nyw1OSBAQCB2b2lkIFRyYW5zcG9ydEZlZWRi
YWNrQWRhcHRlcjo6QWRkUGFja2V0KHVpbnQzMl90IHNzcmMsCiAgIH0KIH0KIAotdm9pZCBUcmFu
c3BvcnRGZWVkYmFja0FkYXB0ZXI6Ok9uU2VudFBhY2tldCh1aW50MTZfdCBzZXF1ZW5jZV9udW1i
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qg
c2VuZF90aW1lX21zKSB7CithYnNsOjpvcHRpb25hbDxTZW50UGFja2V0PiBUcmFuc3BvcnRGZWVk
YmFja0FkYXB0ZXI6OlByb2Nlc3NTZW50UGFja2V0KAorICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tl
dCYgc2VudF9wYWNrZXQpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJmxvY2tfKTsKLSAgc2VuZF90
aW1lX2hpc3RvcnlfLk9uU2VudFBhY2tldChzZXF1ZW5jZV9udW1iZXIsIHNlbmRfdGltZV9tcyk7
CisgIC8vIFRPRE8oc3J0ZSk6IE9ubHkgdXNlIG9uZSB3YXkgdG8gaW5kaWNhdGUgdGhhdCBwYWNr
ZXQgZmVlZGJhY2sgaXMgdXNlZC4KKyAgaWYgKHNlbnRfcGFja2V0LmluZm8uaW5jbHVkZWRfaW5f
ZmVlZGJhY2sgfHwgc2VudF9wYWNrZXQucGFja2V0X2lkICE9IC0xKSB7CisgICAgc2VuZF90aW1l
X2hpc3RvcnlfLk9uU2VudFBhY2tldChzZW50X3BhY2tldC5wYWNrZXRfaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50X3BhY2tldC5zZW5kX3RpbWVfbXMpOworICAg
IGFic2w6Om9wdGlvbmFsPFBhY2tldEZlZWRiYWNrPiBwYWNrZXQgPQorICAgICAgICBzZW5kX3Rp
bWVfaGlzdG9yeV8uR2V0UGFja2V0KHNlbnRfcGFja2V0LnBhY2tldF9pZCk7CisgICAgaWYgKHBh
Y2tldCkgeworICAgICAgU2VudFBhY2tldCBtc2c7CisgICAgICBtc2cuc2l6ZSA9IERhdGFTaXpl
OjpieXRlcyhwYWNrZXQtPnBheWxvYWRfc2l6ZSk7CisgICAgICBtc2cuc2VuZF90aW1lID0gVGlt
ZXN0YW1wOjptcyhwYWNrZXQtPnNlbmRfdGltZV9tcyk7CisgICAgICBtc2cuc2VxdWVuY2VfbnVt
YmVyID0gcGFja2V0LT5sb25nX3NlcXVlbmNlX251bWJlcjsKKyAgICAgIG1zZy5wcmlvcl91bmFj
a2VkX2RhdGEgPSBEYXRhU2l6ZTo6Ynl0ZXMocGFja2V0LT51bmFja25vd2xlZGdlZF9kYXRhKTsK
KyAgICAgIG1zZy5kYXRhX2luX2ZsaWdodCA9CisgICAgICAgICAgc2VuZF90aW1lX2hpc3Rvcnlf
LkdldE91dHN0YW5kaW5nRGF0YShsb2NhbF9uZXRfaWRfLCByZW1vdGVfbmV0X2lkXyk7CisgICAg
ICByZXR1cm4gbXNnOworICAgIH0KKyAgfSBlbHNlIGlmIChzZW50X3BhY2tldC5pbmZvLmluY2x1
ZGVkX2luX2FsbG9jYXRpb24pIHsKKyAgICBzZW5kX3RpbWVfaGlzdG9yeV8uQWRkVW50cmFja2Vk
KHNlbnRfcGFja2V0LmluZm8ucGFja2V0X3NpemVfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZW50X3BhY2tldC5zZW5kX3RpbWVfbXMpOworICB9CisgIHJldHVy
biBhYnNsOjpudWxsb3B0OwogfQogCi1hYnNsOjpvcHRpb25hbDxQYWNrZXRGZWVkYmFjaz4gVHJh
bnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpHZXRQYWNrZXQoCi0gICAgdWludDE2X3Qgc2VxdWVuY2Vf
bnVtYmVyKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7Ci0gIHJldHVybiBz
ZW5kX3RpbWVfaGlzdG9yeV8uR2V0UGFja2V0KHNlcXVlbmNlX251bWJlcik7CithYnNsOjpvcHRp
b25hbDxUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2s+CitUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6
OlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjaygKKyAgICBjb25zdCBydGNwOjpUcmFuc3BvcnRGZWVk
YmFjayYgZmVlZGJhY2spIHsKKyAgaW50NjRfdCBmZWVkYmFja190aW1lX21zID0gY2xvY2tfLT5U
aW1lSW5NaWxsaXNlY29uZHMoKTsKKyAgRGF0YVNpemUgcHJpb3JfaW5fZmxpZ2h0ID0gR2V0T3V0
c3RhbmRpbmdEYXRhKCk7CisgIE9uVHJhbnNwb3J0RmVlZGJhY2soZmVlZGJhY2spOworICBzdGQ6
OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gZmVlZGJhY2tfdmVjdG9yID0gbGFzdF9wYWNrZXRfZmVl
ZGJhY2tfdmVjdG9yXzsKKyAgaWYgKGZlZWRiYWNrX3ZlY3Rvci5lbXB0eSgpKQorICAgIHJldHVy
biBhYnNsOjpudWxsb3B0OworCisgIFNvcnRQYWNrZXRGZWVkYmFja1ZlY3RvcigmZmVlZGJhY2tf
dmVjdG9yKTsKKyAgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrIG1zZzsKKyAgZm9yIChjb25zdCBQ
YWNrZXRGZWVkYmFjayYgcnRwX2ZlZWRiYWNrIDogZmVlZGJhY2tfdmVjdG9yKSB7CisgICAgaWYg
KHJ0cF9mZWVkYmFjay5zZW5kX3RpbWVfbXMgIT0gUGFja2V0RmVlZGJhY2s6OmtOb1NlbmRUaW1l
KSB7CisgICAgICBhdXRvIGZlZWRiYWNrID0gTmV0d29ya1BhY2tldEZlZWRiYWNrRnJvbVJ0cFBh
Y2tldEZlZWRiYWNrKHJ0cF9mZWVkYmFjayk7CisgICAgICBtc2cucGFja2V0X2ZlZWRiYWNrcy5w
dXNoX2JhY2soZmVlZGJhY2spOworICAgIH0gZWxzZSBpZiAocnRwX2ZlZWRiYWNrLmFycml2YWxf
dGltZV9tcyA9PSBQYWNrZXRGZWVkYmFjazo6a05vdFJlY2VpdmVkKSB7CisgICAgICBtc2cuc2Vu
ZGxlc3NfYXJyaXZhbF90aW1lcy5wdXNoX2JhY2soVGltZXN0YW1wOjpQbHVzSW5maW5pdHkoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgIG1zZy5zZW5kbGVzc19hcnJpdmFsX3RpbWVzLnB1c2hfYmFj
aygKKyAgICAgICAgICBUaW1lc3RhbXA6Om1zKHJ0cF9mZWVkYmFjay5hcnJpdmFsX3RpbWVfbXMp
KTsKKyAgICB9CisgIH0KKyAgbXNnLmZlZWRiYWNrX3RpbWUgPSBUaW1lc3RhbXA6Om1zKGZlZWRi
YWNrX3RpbWVfbXMpOworICBtc2cucHJpb3JfaW5fZmxpZ2h0ID0gcHJpb3JfaW5fZmxpZ2h0Owor
ICBtc2cuZGF0YV9pbl9mbGlnaHQgPSBHZXRPdXRzdGFuZGluZ0RhdGEoKTsKKyAgcmV0dXJuIG1z
ZzsKIH0KIAogdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OlNldE5ldHdvcmtJZHModWlu
dDE2X3QgbG9jYWxfaWQsCkBAIC05Niw2ICsxNTksMTEgQEAgdm9pZCBUcmFuc3BvcnRGZWVkYmFj
a0FkYXB0ZXI6OlNldE5ldHdvcmtJZHModWludDE2X3QgbG9jYWxfaWQsCiAgIHJlbW90ZV9uZXRf
aWRfID0gcmVtb3RlX2lkOwogfQogCitEYXRhU2l6ZSBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6
OkdldE91dHN0YW5kaW5nRGF0YSgpIGNvbnN0IHsKKyAgcnRjOjpDcml0U2NvcGUgY3MoJmxvY2tf
KTsKKyAgcmV0dXJuIHNlbmRfdGltZV9oaXN0b3J5Xy5HZXRPdXRzdGFuZGluZ0RhdGEobG9jYWxf
bmV0X2lkXywgcmVtb3RlX25ldF9pZF8pOworfQorCiBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFj
az4gVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpHZXRQYWNrZXRGZWVkYmFja1ZlY3RvcigKICAg
ICBjb25zdCBydGNwOjpUcmFuc3BvcnRGZWVkYmFjayYgZmVlZGJhY2spIHsKICAgaW50NjRfdCB0
aW1lc3RhbXBfdXMgPSBmZWVkYmFjay5HZXRCYXNlVGltZVVzKCk7CkBAIC0xODQsMTAgKzI1Miw0
IEBAIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPgogVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVy
OjpHZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3RvcigpIGNvbnN0IHsKICAgcmV0dXJuIGxhc3RfcGFj
a2V0X2ZlZWRiYWNrX3ZlY3Rvcl87CiB9Ci0KLXNpemVfdCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXI6OkdldE91dHN0YW5kaW5nQnl0ZXMoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZs
b2NrXyk7Ci0gIHJldHVybiBzZW5kX3RpbWVfaGlzdG9yeV8uR2V0T3V0c3RhbmRpbmdCeXRlcyhs
b2NhbF9uZXRfaWRfLCByZW1vdGVfbmV0X2lkXyk7Ci19Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRj
X2NjCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9y
dHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFu
c3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oCmluZGV4IGUyNDc3Y2EzMWYzNDQzZmFhMWQyMzQxYjAy
YjI5MGUzMWExYjMwOGYuLjE3NDFkNmQ2NmEwYzQxM2FkMDU2MDViZmY5NWEwMTYyZGEwNDEwNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRl
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5o
CkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVz
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3NlbmRfdGlt
ZV9oaXN0b3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3RocmVhZF9hbm5vdGF0aW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2Vy
LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKQEAgLTI5LDcg
KzMwLDYgQEAgbmFtZXNwYWNlIHJ0Y3AgewogY2xhc3MgVHJhbnNwb3J0RmVlZGJhY2s7CiB9ICAv
LyBuYW1lc3BhY2UgcnRjcAogCi1uYW1lc3BhY2Ugd2VicnRjX2NjIHsKIGNsYXNzIFRyYW5zcG9y
dEZlZWRiYWNrQWRhcHRlciB7CiAgcHVibGljOgogICBleHBsaWNpdCBUcmFuc3BvcnRGZWVkYmFj
a0FkYXB0ZXIoY29uc3QgQ2xvY2sqIGNsb2NrKTsKQEAgLTQyLDIyICs0MiwyMiBAQCBjbGFzcyBU
cmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIgewogICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXF1
ZW5jZV9udW1iZXIsCiAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2luZm8pOwotICB2b2lkIE9uU2Vu
dFBhY2tldCh1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsIGludDY0X3Qgc2VuZF90aW1lX21zKTsK
IAotICAvLyBUT0RPKGhvbG1lcik6IFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gRGVsYXlCYXNl
ZEJ3ZTo6UmVzdWx0IHNvIHRoYXQgd2UKLSAgLy8gY2FuIGdldCByaWQgb2YgdGhlIGRlcGVuZGVu
Y3kgb24gQml0cmF0ZUNvbnRyb2xsZXIuIFJlcXVpcmVzIGNoYW5nZXMKLSAgLy8gdG8gdGhlIENv
bmdlc3Rpb25Db250cm9sbGVyIGludGVyZmFjZS4KLSAgdm9pZCBPblRyYW5zcG9ydEZlZWRiYWNr
KGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiBmZWVkYmFjayk7Ci0gIHN0ZDo6dmVjdG9y
PFBhY2tldEZlZWRiYWNrPiBHZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3RvcigpIGNvbnN0OwotICBh
YnNsOjpvcHRpb25hbDxQYWNrZXRGZWVkYmFjaz4gR2V0UGFja2V0KHVpbnQxNl90IHNlcXVlbmNl
X251bWJlcikgY29uc3Q7CisgIGFic2w6Om9wdGlvbmFsPFNlbnRQYWNrZXQ+IFByb2Nlc3NTZW50
UGFja2V0KAorICAgICAgY29uc3QgcnRjOjpTZW50UGFja2V0JiBzZW50X3BhY2tldCk7CiAKLSAg
dm9pZCBTZXRUcmFuc3BvcnRPdmVyaGVhZChpbnQgdHJhbnNwb3J0X292ZXJoZWFkX2J5dGVzX3Bl
cl9wYWNrZXQpOworICBhYnNsOjpvcHRpb25hbDxUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2s+IFBy
b2Nlc3NUcmFuc3BvcnRGZWVkYmFjaygKKyAgICAgIGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZlZWRi
YWNrJiBmZWVkYmFjayk7CisKKyAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IEdldFRyYW5z
cG9ydEZlZWRiYWNrVmVjdG9yKCkgY29uc3Q7CiAKICAgdm9pZCBTZXROZXR3b3JrSWRzKHVpbnQx
Nl90IGxvY2FsX2lkLCB1aW50MTZfdCByZW1vdGVfaWQpOwogCi0gIHNpemVfdCBHZXRPdXRzdGFu
ZGluZ0J5dGVzKCkgY29uc3Q7CisgIERhdGFTaXplIEdldE91dHN0YW5kaW5nRGF0YSgpIGNvbnN0
OwogCiAgcHJpdmF0ZToKKyAgdm9pZCBPblRyYW5zcG9ydEZlZWRiYWNrKGNvbnN0IHJ0Y3A6OlRy
YW5zcG9ydEZlZWRiYWNrJiBmZWVkYmFjayk7CisKICAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJh
Y2s+IEdldFBhY2tldEZlZWRiYWNrVmVjdG9yKAogICAgICAgY29uc3QgcnRjcDo6VHJhbnNwb3J0
RmVlZGJhY2smIGZlZWRiYWNrKTsKIApAQCAtNzUsNyArNzUsNiBAQCBjbGFzcyBUcmFuc3BvcnRG
ZWVkYmFja0FkYXB0ZXIgewogICAgICAgUlRDX0dVQVJERURfQlkoJm9ic2VydmVyc19sb2NrXyk7
CiB9OwogCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjX2NjCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CiAKICNlbmRpZiAgLy8gTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfUlRQX1RSQU5TUE9S
VF9GRUVEQkFDS19BREFQVEVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJh
bnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAv
dHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MKaW5kZXggNzAwODc2NzhhMjM5
ZGEzOWIxNzE2ODAyZjJlOTM1M2JmYzkwZmY1MC4uZDE0MDRkZjYzZjQxOGQ3MjEzN2ViZDRlNmE2
Y2M0MTE3OTVhMmYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3RyYW5zcG9ydF9m
ZWVkYmFja19hZGFwdGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFu
c3BvcnRfZmVlZGJhY2tfYWRhcHRlcl91bml0dGVzdC5jYwpAQCAtNjksOCArNjksOSBAQCBjbGFz
cyBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CiAgICAgYWRhcHRlcl8tPkFkZFBhY2tldChrU3NyYywgcGFja2V0X2ZlZWRiYWNrLnNlcXVlbmNl
X251bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9mZWVkYmFjay5wYXlsb2Fk
X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfZmVlZGJhY2sucGFjaW5nX2lu
Zm8pOwotICAgIGFkYXB0ZXJfLT5PblNlbnRQYWNrZXQocGFja2V0X2ZlZWRiYWNrLnNlcXVlbmNl
X251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9mZWVkYmFjay5zZW5k
X3RpbWVfbXMpOworICAgIGFkYXB0ZXJfLT5Qcm9jZXNzU2VudFBhY2tldChydGM6OlNlbnRQYWNr
ZXQocGFja2V0X2ZlZWRiYWNrLnNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9mZWVkYmFjay5zZW5kX3RpbWVfbXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBh
Y2tldEluZm8oKSkpOwogICB9CiAKICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBrU3NyYyA9
IDg0OTI7CkBAIC0xMDAsNyArMTAxLDcgQEAgVEVTVF9GKFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRl
clRlc3QsIE9ic2VydmVyU2FuaXR5KSB7CiAgIH0KIAogICBFWFBFQ1RfQ0FMTChtb2NrLCBPblBh
Y2tldEZlZWRiYWNrVmVjdG9yKF8pKS5UaW1lcygxKTsKLSAgYWRhcHRlcl8tPk9uVHJhbnNwb3J0
RmVlZGJhY2soZmVlZGJhY2spOworICBhZGFwdGVyXy0+UHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNr
KGZlZWRiYWNrKTsKIAogICBhZGFwdGVyXy0+RGVSZWdpc3RlclBhY2tldEZlZWRiYWNrT2JzZXJ2
ZXIoJm1vY2spOwogCkBAIC0xMTUsNyArMTE2LDcgQEAgVEVTVF9GKFRyYW5zcG9ydEZlZWRiYWNr
QWRhcHRlclRlc3QsIE9ic2VydmVyU2FuaXR5KSB7CiAgIEVYUEVDVF9UUlVFKGZlZWRiYWNrLkFk
ZFJlY2VpdmVkUGFja2V0KG5ld19wYWNrZXQuc2VxdWVuY2VfbnVtYmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcGFja2V0LmFycml2YWxfdGltZV9tcyAq
IDEwMDApKTsKICAgRVhQRUNUX0NBTEwobW9jaywgT25QYWNrZXRGZWVkYmFja1ZlY3RvcihfKSku
VGltZXMoMCk7Ci0gIGFkYXB0ZXJfLT5PblRyYW5zcG9ydEZlZWRiYWNrKHNlY29uZF9mZWVkYmFj
ayk7CisgIGFkYXB0ZXJfLT5Qcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2soc2Vjb25kX2ZlZWRiYWNr
KTsKIH0KIAogI2lmIFJUQ19EQ0hFQ0tfSVNfT04gJiYgR1RFU1RfSEFTX0RFQVRIX1RFU1QgJiYg
IWRlZmluZWQoV0VCUlRDX0FORFJPSUQpCkBAIC0xNTYsNyArMTU3LDcgQEAgVEVTVF9GKFRyYW5z
cG9ydEZlZWRiYWNrQWRhcHRlclRlc3QsIEFkYXB0c0ZlZWRiYWNrQW5kUG9wdWxhdGVzU2VuZFRp
bWVzKSB7CiAKICAgZmVlZGJhY2suQnVpbGQoKTsKIAotICBhZGFwdGVyXy0+T25UcmFuc3BvcnRG
ZWVkYmFjayhmZWVkYmFjayk7CisgIGFkYXB0ZXJfLT5Qcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2so
ZmVlZGJhY2spOwogICBDb21wYXJlUGFja2V0RmVlZGJhY2tWZWN0b3JzKHBhY2tldHMsIGFkYXB0
ZXJfLT5HZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3RvcigpKTsKIH0KIApAQCAtMTg5LDcgKzE5MCw3
IEBAIFRFU1RfRihUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0LCBGZWVkYmFja1ZlY3RvclJl
cG9ydHNVbnJlY2VpdmVkKSB7CiAKICAgZmVlZGJhY2suQnVpbGQoKTsKIAotICBhZGFwdGVyXy0+
T25UcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7CisgIGFkYXB0ZXJfLT5Qcm9jZXNzVHJhbnNw
b3J0RmVlZGJhY2soZmVlZGJhY2spOwogICBDb21wYXJlUGFja2V0RmVlZGJhY2tWZWN0b3JzKHNl
bnRfcGFja2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGFwdGVyXy0+R2V0
VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSk7CiB9CkBAIC0yMzMsNyArMjM0LDcgQEAgVEVTVF9G
KFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlclRlc3QsIEhhbmRsZXNEcm9wcGVkUGFja2V0cykgewog
ICAgIGV4cGVjdGVkX3BhY2tldHNbaV0ucGFjaW5nX2luZm8gPSBQYWNlZFBhY2tldEluZm8oKTsK
ICAgfQogCi0gIGFkYXB0ZXJfLT5PblRyYW5zcG9ydEZlZWRiYWNrKGZlZWRiYWNrKTsKKyAgYWRh
cHRlcl8tPlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7CiAgIENvbXBhcmVQYWNr
ZXRGZWVkYmFja1ZlY3RvcnMoZXhwZWN0ZWRfcGFja2V0cywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGFwdGVyXy0+R2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSk7CiB9CkBA
IC0yNjksNyArMjcwLDcgQEAgVEVTVF9GKFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlclRlc3QsIFNl
bmRUaW1lV3JhcHNCb3RoV2F5cykgewogICAgIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBl
eHBlY3RlZF9wYWNrZXRzOwogICAgIGV4cGVjdGVkX3BhY2tldHMucHVzaF9iYWNrKHBhY2tldHNb
aV0pOwogCi0gICAgYWRhcHRlcl8tPk9uVHJhbnNwb3J0RmVlZGJhY2soKmZlZWRiYWNrLmdldCgp
KTsKKyAgICBhZGFwdGVyXy0+UHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNrKCpmZWVkYmFjay5nZXQo
KSk7CiAgICAgQ29tcGFyZVBhY2tldEZlZWRiYWNrVmVjdG9ycyhleHBlY3RlZF9wYWNrZXRzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRlcl8tPkdldFRyYW5zcG9ydEZl
ZWRiYWNrVmVjdG9yKCkpOwogICB9CkBAIC0yOTgsNyArMjk5LDcgQEAgVEVTVF9GKFRyYW5zcG9y
dEZlZWRiYWNrQWRhcHRlclRlc3QsIEhhbmRsZXNBcnJpdmFsUmVvcmRlcmluZykgewogICAvLyBB
ZGFwdGVyIGtlZXBzIHRoZSBwYWNrZXRzIG9yZGVyZWQgYnkgc2VxdWVuY2UgbnVtYmVyICh3aGlj
aCBpcyBpdHNlbGYKICAgLy8gYXNzaWduZWQgYnkgdGhlIG9yZGVyIG9mIHRyYW5zbWlzc2lvbiku
IFJlb3JkZXJpbmcgYnkgc29tZSBvdGhlciBjcml0ZXJpYSwKICAgLy8gZWcuIGFycml2YWwgdGlt
ZSwgaXMgdXAgdG8gdGhlIG9ic2VydmVycy4KLSAgYWRhcHRlcl8tPk9uVHJhbnNwb3J0RmVlZGJh
Y2soZmVlZGJhY2spOworICBhZGFwdGVyXy0+UHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNrKGZlZWRi
YWNrKTsKICAgQ29tcGFyZVBhY2tldEZlZWRiYWNrVmVjdG9ycyhwYWNrZXRzLCBhZGFwdGVyXy0+
R2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSk7CiB9CiAKQEAgLTM2Miw3ICszNjMsNyBAQCBU
RVNUX0YoVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyVGVzdCwgVGltZXN0YW1wRGVsdGFzKSB7CiAg
IHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiByZWNlaXZlZF9mZWVkYmFjazsKIAogICBFWFBF
Q1RfVFJVRShmZWVkYmFjay5nZXQoKSAhPSBudWxscHRyKTsKLSAgYWRhcHRlcl8tPk9uVHJhbnNw
b3J0RmVlZGJhY2soKmZlZWRiYWNrLmdldCgpKTsKKyAgYWRhcHRlcl8tPlByb2Nlc3NUcmFuc3Bv
cnRGZWVkYmFjaygqZmVlZGJhY2suZ2V0KCkpOwogICBDb21wYXJlUGFja2V0RmVlZGJhY2tWZWN0
b3JzKHNlbnRfcGFja2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGFwdGVy
Xy0+R2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSk7CiAKQEAgLTM3Nyw3ICszNzgsNyBAQCBU
RVNUX0YoVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyVGVzdCwgVGltZXN0YW1wRGVsdGFzKSB7CiAg
ICAgICBydGNwOjpUcmFuc3BvcnRGZWVkYmFjazo6UGFyc2VGcm9tKHJhd19wYWNrZXQuZGF0YSgp
LCByYXdfcGFja2V0LnNpemUoKSk7CiAKICAgRVhQRUNUX1RSVUUoZmVlZGJhY2suZ2V0KCkgIT0g
bnVsbHB0cik7Ci0gIGFkYXB0ZXJfLT5PblRyYW5zcG9ydEZlZWRiYWNrKCpmZWVkYmFjay5nZXQo
KSk7CisgIGFkYXB0ZXJfLT5Qcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2soKmZlZWRiYWNrLmdldCgp
KTsKICAgewogICAgIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBleHBlY3RlZF9wYWNrZXRz
OwogICAgIGV4cGVjdGVkX3BhY2tldHMucHVzaF9iYWNrKHBhY2tldF9mZWVkYmFjayk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYwppbmRl
eCBmOGIzMTU1YmY5ZGM2NmQ5MGQ0MTU3Mjk2ZWRiYTc1Y2ZmYjI1NjNjLi4xNDdmMTAzZTc4Njk3
NzFkMjZlOTlmM2M1ZjFhZjY3ZmQxNmMxN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9z
ZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3Nl
bmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MKQEAgLTE4LDE2ICsxOCwxNiBAQAogCiAj
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9iaXRyYXRl
X2NvbnRyb2xsZXIvaW5jbHVkZS9iaXRyYXRlX2NvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2Nv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL3Byb2JlX2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3JhdGVfbGltaXRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tl
dC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInN5c3RlbV93
cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKQEAgLTE0Myw2ICsxNDMsNyBAQCBTZW5k
U2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyKAog
ICAgICAgcGF1c2VfcGFjZXJfKGZhbHNlKSwKICAgICAgIHBhY2VyX3BhdXNlZF8oZmFsc2UpLAog
ICAgICAgbWluX2JpdHJhdGVfYnBzXyhjb25nZXN0aW9uX2NvbnRyb2xsZXI6OkdldE1pbkJpdHJh
dGVCcHMoKSksCisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8obmV3IFByb2JlQml0cmF0
ZUVzdGltYXRvcihldmVudF9sb2dfKSksCiAgICAgICBkZWxheV9iYXNlZF9id2VfKG5ldyBEZWxh
eUJhc2VkQndlKGV2ZW50X2xvZ18pKSwKICAgICAgIGluX2N3bmRfZXhwZXJpbWVudF8oQ3duZEV4
cGVyaW1lbnRFbmFibGVkKCkpLAogICAgICAgYWNjZXB0ZWRfcXVldWVfbXNfKGtEZWZhdWx0QWNj
ZXB0ZWRRdWV1ZU1zKSwKQEAgLTE1Myw3ICsxNTQsNyBAQCBTZW5kU2lkZUNvbmdlc3Rpb25Db250
cm9sbGVyOjpTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyKAogICAgICAgcGFjZXJfcHVzaGJh
Y2tfZXhwZXJpbWVudF8oSXNQYWNlclB1c2hiYWNrRXhwZXJpbWVudEVuYWJsZWQoKSksCiAgICAg
ICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXygKICAgICAgICAgICBNYXli
ZUNyZWF0ZUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXIoKSkgewotICBkZWxheV9i
YXNlZF9id2VfLT5TZXRNaW5CaXRyYXRlKG1pbl9iaXRyYXRlX2Jwc18pOworICBkZWxheV9iYXNl
ZF9id2VfLT5TZXRNaW5CaXRyYXRlKERhdGFSYXRlOjpicHMobWluX2JpdHJhdGVfYnBzXykpOwog
ICBpZiAoaW5fY3duZF9leHBlcmltZW50XyAmJgogICAgICAgIVJlYWRDd25kRXhwZXJpbWVudFBh
cmFtZXRlcigmYWNjZXB0ZWRfcXVldWVfbXNfKSkgewogICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIkZhaWxlZCB0byBwYXJzZSBwYXJhbWV0ZXJzIGZvciBDd25kRXhwZXJpbWVudCAiCkBAIC0x
NjQsNiArMTY1LDIzIEBAIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6OlNlbmRTaWRlQ29u
Z2VzdGlvbkNvbnRyb2xsZXIoCiAKIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6On5TZW5k
U2lkZUNvbmdlc3Rpb25Db250cm9sbGVyKCkge30KIAordm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25D
b250cm9sbGVyOjpFbmFibGVDb25nZXN0aW9uV2luZG93UHVzaGJhY2soCisgICAgaW50NjRfdCBh
Y2NlcHRlZF9xdWV1ZV9tcywKKyAgICB1aW50MzJfdCBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJh
dGVfYnBzKSB7CisgIFJUQ19EQ0hFQ0soIWNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRy
b2xsZXJfKQorICAgICAgPDwgIlRoZSBjb25nZXN0aW9uIHB1c2hiYWNrIGlzIGFscmVhZHkgZW5h
YmxlZC4iOworICBSVENfQ0hFQ0tfR0UoYWNjZXB0ZWRfcXVldWVfbXMsIDApCisgICAgICA8PCAi
QWNjZXB0ZWQgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4iOworICBSVENfQ0hF
Q0tfR0UobWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2JwcywgMCkKKyAgICAgIDw8ICJNaW4g
cHVzaGJhY2sgdGFyZ2V0IGJpdHJhdGUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g
MC4iOworCisgIGluX2N3bmRfZXhwZXJpbWVudF8gPSB0cnVlOworICBhY2NlcHRlZF9xdWV1ZV9t
c18gPSBhY2NlcHRlZF9xdWV1ZV9tczsKKyAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29u
dHJvbGxlcl8gPQorICAgICAgYWJzbDo6bWFrZV91bmlxdWU8Q29uZ2VzdGlvbldpbmRvd1B1c2hi
YWNrQ29udHJvbGxlcj4oCisgICAgICAgICAgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jw
cyk7Cit9CisKIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6UmVnaXN0ZXJQYWNr
ZXRGZWVkYmFja09ic2VydmVyKAogICAgIFBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIqIG9ic2VydmVy
KSB7CiAgIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5SZWdpc3RlclBhY2tldEZlZWRiYWNr
T2JzZXJ2ZXIob2JzZXJ2ZXIpOwpAQCAtMjA0LDkgKzIyMiw5IEBAIHZvaWQgU2VuZFNpZGVDb25n
ZXN0aW9uQ29udHJvbGxlcjo6U2V0QndlQml0cmF0ZXMoaW50IG1pbl9iaXRyYXRlX2JwcywKICAg
ewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZid2VfbG9ja18pOwogICAgIGlmIChzdGFydF9iaXRy
YXRlX2JwcyA+IDApCi0gICAgICBkZWxheV9iYXNlZF9id2VfLT5TZXRTdGFydEJpdHJhdGUoc3Rh
cnRfYml0cmF0ZV9icHMpOworICAgICAgZGVsYXlfYmFzZWRfYndlXy0+U2V0U3RhcnRCaXRyYXRl
KERhdGFSYXRlOjpicHMoc3RhcnRfYml0cmF0ZV9icHMpKTsKICAgICBtaW5fYml0cmF0ZV9icHNf
ID0gbWluX2JpdHJhdGVfYnBzOwotICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJhdGUo
bWluX2JpdHJhdGVfYnBzXyk7CisgICAgZGVsYXlfYmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShE
YXRhUmF0ZTo6YnBzKG1pbl9iaXRyYXRlX2Jwc18pKTsKICAgfQogICBNYXliZVRyaWdnZXJPbk5l
dHdvcmtDaGFuZ2VkKCk7CiB9CkBAIC0yNDEsMTAgKzI1OSwxMyBAQCB2b2lkIFNlbmRTaWRlQ29u
Z2VzdGlvbkNvbnRyb2xsZXI6Ok9uTmV0d29ya1JvdXRlQ2hhbmdlZCgKICAgICBydGM6OkNyaXRT
Y29wZSBjcygmYndlX2xvY2tfKTsKICAgICB0cmFuc3BvcnRfb3ZlcmhlYWRfYnl0ZXNfcGVyX3Bh
Y2tldF8gPSBuZXR3b3JrX3JvdXRlLnBhY2tldF9vdmVyaGVhZDsKICAgICBtaW5fYml0cmF0ZV9i
cHNfID0gbWluX2JpdHJhdGVfYnBzOworICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy5yZXNl
dChuZXcgUHJvYmVCaXRyYXRlRXN0aW1hdG9yKGV2ZW50X2xvZ18pKTsKICAgICBkZWxheV9iYXNl
ZF9id2VfLnJlc2V0KG5ldyBEZWxheUJhc2VkQndlKGV2ZW50X2xvZ18pKTsKICAgICBhY2tub3ds
ZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLnJlc2V0KG5ldyBBY2tub3dsZWRnZWRCaXRyYXRlRXN0
aW1hdG9yKCkpOwotICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldFN0YXJ0Qml0cmF0ZShiaXRyYXRl
X2Jwcyk7Ci0gICAgZGVsYXlfYmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShtaW5fYml0cmF0ZV9i
cHMpOworICAgIGlmIChiaXRyYXRlX2JwcyA+IDApIHsKKyAgICAgIGRlbGF5X2Jhc2VkX2J3ZV8t
PlNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZTo6YnBzKGJpdHJhdGVfYnBzKSk7CisgICAgfQorICAg
IGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJhdGUoRGF0YVJhdGU6OmJwcyhtaW5fYml0cmF0
ZV9icHMpKTsKICAgfQogICB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJnByb2JlX2xvY2tfKTsK
QEAgLTMyMSw3ICszNDIsNyBAQCB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6Ok9u
U2VudFBhY2tldCgKIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6T25SdHRVcGRh
dGUoaW50NjRfdCBhdmdfcnR0X21zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IG1heF9ydHRfbXMpIHsKICAgcnRjOjpDcml0U2NvcGUgY3Mo
JmJ3ZV9sb2NrXyk7Ci0gIGRlbGF5X2Jhc2VkX2J3ZV8tPk9uUnR0VXBkYXRlKGF2Z19ydHRfbXMp
OworICBkZWxheV9iYXNlZF9id2VfLT5PblJ0dFVwZGF0ZShUaW1lRGVsdGE6Om1zKGF2Z19ydHRf
bXMpKTsKIH0KIAogaW50NjRfdCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpUaW1lVW50
aWxOZXh0UHJvY2VzcygpIHsKQEAgLTM5Nyw5ICs0MTgsMTYgQEAgdm9pZCBTZW5kU2lkZUNvbmdl
c3Rpb25Db250cm9sbGVyOjpPblRyYW5zcG9ydEZlZWRiYWNrKAogICBEZWxheUJhc2VkQndlOjpS
ZXN1bHQgcmVzdWx0OwogICB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJmJ3ZV9sb2NrXyk7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBwYWNrZXQgOiBmZWVkYmFja192ZWN0b3IpIHsKKyAgICAgIGlm
IChwYWNrZXQuc2VuZF90aW1lX21zICE9IFBhY2tldEZlZWRiYWNrOjprTm9TZW5kVGltZSAmJgor
ICAgICAgICAgIHBhY2tldC5wYWNpbmdfaW5mby5wcm9iZV9jbHVzdGVyX2lkICE9IFBhY2VkUGFj
a2V0SW5mbzo6a05vdEFQcm9iZSkgeworICAgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8t
PkhhbmRsZVByb2JlQW5kRXN0aW1hdGVCaXRyYXRlKHBhY2tldCk7CisgICAgICB9CisgICAgfQog
ICAgIHJlc3VsdCA9IGRlbGF5X2Jhc2VkX2J3ZV8tPkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0
b3IoCi0gICAgICAgIGZlZWRiYWNrX3ZlY3RvciwgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1h
dG9yXy0+Yml0cmF0ZV9icHMoKSwKLSAgICAgICAgY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMo
KSk7CisgICAgICAgIGZlZWRiYWNrX3ZlY3RvciwgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1h
dG9yXy0+Yml0cmF0ZSgpLAorICAgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8tPkZldGNo
QW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZSgpLAorICAgICAgICBUaW1lc3RhbXA6Om1zKGNs
b2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpKTsKICAgfQogICBpZiAocmVzdWx0LnVwZGF0ZWQp
IHsKICAgICBiaXRyYXRlX2NvbnRyb2xsZXJfLT5PbkRlbGF5QmFzZWRCd2VSZXN1bHQocmVzdWx0
KTsKQEAgLTUwMSw3ICs1MjksNyBAQCB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6
Ok1heWJlVHJpZ2dlck9uTmV0d29ya0NoYW5nZWQoKSB7CiAgICAgaW50NjRfdCBwcm9iaW5nX2lu
dGVydmFsX21zOwogICAgIHsKICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZid2VfbG9ja18pOwot
ICAgICAgcHJvYmluZ19pbnRlcnZhbF9tcyA9IGRlbGF5X2Jhc2VkX2J3ZV8tPkdldEV4cGVjdGVk
QndlUGVyaW9kTXMoKTsKKyAgICAgIHByb2JpbmdfaW50ZXJ2YWxfbXMgPSBkZWxheV9iYXNlZF9i
d2VfLT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZCgpLm1zKCk7CiAgICAgfQogICAgIHsKICAgICAgIHJ0
Yzo6Q3JpdFNjb3BlIGNzKCZvYnNlcnZlcl9sb2NrXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVzdC5jYwppbmRl
eCAzNjUzYjhjMjJmNmNjN2E3YWM1NzIwNDViNzAxM2JhYTYxOTFkYzBjLi41ZjU4ZjIxY2RmODk0
NmM0YWM4ZmE4ODU0NTQ2MDZjNGI3NTYzZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9z
ZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKQEAgLTE4
LDcgKzE4LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9p
bmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRl
L3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3BhY2tldC90cmFuc3BvcnRfZmVlZGJhY2suaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zb2Nr
ZXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0LmgiCiAjaW5jbHVk
ZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxk
X3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci90cmFu
c3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYwppbmRleCAzYmFhM2FkNWE1M2M5YWUyZDU4OTU2Y2Ey
NGE4NDIyMzE3ODRlODQyLi5iOGI2MjBkMDA4YjMwMmYzYTUxODczYTQ5YmYxZWZkZGFlNTcyYWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYwpAQCAt
MjYsNyArMjYsOCBAQCBjb25zdCBpbnQ2NF90IGtCYXNlVGltZXN0YW1wU2NhbGVGYWN0b3IgPQog
ICAgIHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrOjprRGVsdGFTY2FsZUZhY3RvciAqICgxIDw8IDgp
OwogY29uc3QgaW50NjRfdCBrQmFzZVRpbWVzdGFtcFJhbmdlU2l6ZVVzID0ga0Jhc2VUaW1lc3Rh
bXBTY2FsZUZhY3RvciAqICgxIDw8IDI0KTsKIAotVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpU
cmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIoY29uc3QgQ2xvY2sqIGNsb2NrKQorTGVnYWN5VHJhbnNw
b3J0RmVlZGJhY2tBZGFwdGVyOjpMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIoCisgICAg
Y29uc3QgQ2xvY2sqIGNsb2NrKQogICAgIDogc2VuZF90aW1lX2hpc3RvcnlfKGNsb2NrLCBrU2Vu
ZFRpbWVIaXN0b3J5V2luZG93TXMpLAogICAgICAgY2xvY2tfKGNsb2NrKSwKICAgICAgIGN1cnJl
bnRfb2Zmc2V0X21zXyhrTm9UaW1lc3RhbXApLApAQCAtMzQsMTEgKzM1LDExIEBAIFRyYW5zcG9y
dEZlZWRiYWNrQWRhcHRlcjo6VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyKGNvbnN0IENsb2NrKiBj
bG9jaykKICAgICAgIGxvY2FsX25ldF9pZF8oMCksCiAgICAgICByZW1vdGVfbmV0X2lkXygwKSB7
fQogCi1UcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6On5UcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIo
KSB7CitMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6On5MZWdhY3lUcmFuc3BvcnRGZWVk
YmFja0FkYXB0ZXIoKSB7CiAgIFJUQ19EQ0hFQ0sob2JzZXJ2ZXJzXy5lbXB0eSgpKTsKIH0KIAot
dm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OlJlZ2lzdGVyUGFja2V0RmVlZGJhY2tPYnNl
cnZlcigKK3ZvaWQgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpSZWdpc3RlclBhY2tl
dEZlZWRiYWNrT2JzZXJ2ZXIoCiAgICAgUGFja2V0RmVlZGJhY2tPYnNlcnZlciogb2JzZXJ2ZXIp
IHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJm9ic2VydmVyc19sb2NrXyk7CiAgIFJUQ19EQ0hFQ0so
b2JzZXJ2ZXIpOwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRl
cjo6UmVnaXN0ZXJQYWNrZXRGZWVkYmFja09ic2VydmVyKAogICBvYnNlcnZlcnNfLnB1c2hfYmFj
ayhvYnNlcnZlcik7CiB9CiAKLXZvaWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpEZVJlZ2lz
dGVyUGFja2V0RmVlZGJhY2tPYnNlcnZlcigKK3ZvaWQgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tB
ZGFwdGVyOjpEZVJlZ2lzdGVyUGFja2V0RmVlZGJhY2tPYnNlcnZlcigKICAgICBQYWNrZXRGZWVk
YmFja09ic2VydmVyKiBvYnNlcnZlcikgewogICBydGM6OkNyaXRTY29wZSBjcygmb2JzZXJ2ZXJz
X2xvY2tfKTsKICAgUlRDX0RDSEVDSyhvYnNlcnZlcik7CkBAIC01NiwxMCArNTcsMTEgQEAgdm9p
ZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkRlUmVnaXN0ZXJQYWNrZXRGZWVkYmFja09ic2Vy
dmVyKAogICBvYnNlcnZlcnNfLmVyYXNlKGl0KTsKIH0KIAotdm9pZCBUcmFuc3BvcnRGZWVkYmFj
a0FkYXB0ZXI6OkFkZFBhY2tldCh1aW50MzJfdCBzc3JjLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFj
aW5nX2luZm8pIHsKK3ZvaWQgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpBZGRQYWNr
ZXQoCisgICAgdWludDMyX3Qgc3NyYywKKyAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsCisg
ICAgc2l6ZV90IGxlbmd0aCwKKyAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZv
KSB7CiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwogICAgIGNvbnN0IGludDY0
X3QgY3JlYXRpb25fdGltZV9tcyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCk7CkBAIC03
NiwyMCArNzgsMjEgQEAgdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkFkZFBhY2tldCh1
aW50MzJfdCBzc3JjLAogICB9CiB9CiAKLXZvaWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpP
blNlbnRQYWNrZXQodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNlbmRfdGltZV9tcykgewordm9pZCBM
ZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6Ok9uU2VudFBhY2tldCh1aW50MTZfdCBzZXF1
ZW5jZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDY0X3Qgc2VuZF90aW1lX21zKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2Nr
Xyk7CiAgIHNlbmRfdGltZV9oaXN0b3J5Xy5PblNlbnRQYWNrZXQoc2VxdWVuY2VfbnVtYmVyLCBz
ZW5kX3RpbWVfbXMpOwogfQogCi12b2lkIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6U2V0TmV0
d29ya0lkcyh1aW50MTZfdCBsb2NhbF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9pZCkgewordm9pZCBMZWdhY3lUcmFuc3Bv
cnRGZWVkYmFja0FkYXB0ZXI6OlNldE5ldHdvcmtJZHModWludDE2X3QgbG9jYWxfaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBy
ZW1vdGVfaWQpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJmxvY2tfKTsKICAgbG9jYWxfbmV0X2lk
XyA9IGxvY2FsX2lkOwogICByZW1vdGVfbmV0X2lkXyA9IHJlbW90ZV9pZDsKIH0KIAotc3RkOjp2
ZWN0b3I8UGFja2V0RmVlZGJhY2s+IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0UGFja2V0
RmVlZGJhY2tWZWN0b3IoCitzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4KK0xlZ2FjeVRyYW5z
cG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0UGFja2V0RmVlZGJhY2tWZWN0b3IoCiAgICAgY29uc3Qg
cnRjcDo6VHJhbnNwb3J0RmVlZGJhY2smIGZlZWRiYWNrKSB7CiAgIGludDY0X3QgdGltZXN0YW1w
X3VzID0gZmVlZGJhY2suR2V0QmFzZVRpbWVVcygpOwogICBpbnQ2NF90IG5vd19tcyA9IGNsb2Nr
Xy0+VGltZUluTWlsbGlzZWNvbmRzKCk7CkBAIC0xNzcsNyArMTgwLDcgQEAgc3RkOjp2ZWN0b3I8
UGFja2V0RmVlZGJhY2s+IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0UGFja2V0RmVlZGJh
Y2tWZWN0b3IoCiAgIHJldHVybiBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yOwogfQogCi12b2lkIFRy
YW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6T25UcmFuc3BvcnRGZWVkYmFjaygKK3ZvaWQgTGVnYWN5
VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpPblRyYW5zcG9ydEZlZWRiYWNrKAogICAgIGNvbnN0
IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiBmZWVkYmFjaykgewogICBsYXN0X3BhY2tldF9mZWVk
YmFja192ZWN0b3JfID0gR2V0UGFja2V0RmVlZGJhY2tWZWN0b3IoZmVlZGJhY2spOwogICB7CkBA
IC0xODksMTggKzE5MiwxOSBAQCB2b2lkIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6T25UcmFu
c3BvcnRGZWVkYmFjaygKIH0KIAogc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+Ci1UcmFuc3Bv
cnRGZWVkYmFja0FkYXB0ZXI6OkdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCkgY29uc3Qgewor
TGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpHZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3Rv
cigpIGNvbnN0IHsKICAgcmV0dXJuIGxhc3RfcGFja2V0X2ZlZWRiYWNrX3ZlY3Rvcl87CiB9CiAK
LWFic2w6Om9wdGlvbmFsPGludDY0X3Q+IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0TWlu
RmVlZGJhY2tMb29wUnR0KCkKK2Fic2w6Om9wdGlvbmFsPGludDY0X3Q+IExlZ2FjeVRyYW5zcG9y
dEZlZWRiYWNrQWRhcHRlcjo6R2V0TWluRmVlZGJhY2tMb29wUnR0KCkKICAgICBjb25zdCB7CiAg
IHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7CiAgIHJldHVybiBtaW5fZmVlZGJhY2tfcnR0XzsK
IH0KIAotc2l6ZV90IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0T3V0c3RhbmRpbmdCeXRl
cygpIGNvbnN0IHsKK3NpemVfdCBMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkdldE91
dHN0YW5kaW5nQnl0ZXMoKSBjb25zdCB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7Ci0g
IHJldHVybiBzZW5kX3RpbWVfaGlzdG9yeV8uR2V0T3V0c3RhbmRpbmdCeXRlcyhsb2NhbF9uZXRf
aWRfLCByZW1vdGVfbmV0X2lkXyk7CisgIHJldHVybiBzZW5kX3RpbWVfaGlzdG9yeV8uR2V0T3V0
c3RhbmRpbmdEYXRhKGxvY2FsX25ldF9pZF8sIHJlbW90ZV9uZXRfaWRfKQorICAgICAgLmJ5dGVz
KCk7CiB9CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvdHJhbnNwb3J0
X2ZlZWRiYWNrX2FkYXB0ZXIuaAppbmRleCAyMDYyMzZjZThiYTdkMmQ5MmQxNjk2MGM3Yzc2MWNl
NDA2YTRkMmE3Li5jNmFjMmFkOWFkNGJhZTliMmQyNTQ4MzJlOTY1MzVhMDdmNjBkZmJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmgKQEAgLTI5LDEwICsy
OSwxMiBAQCBuYW1lc3BhY2UgcnRjcCB7CiBjbGFzcyBUcmFuc3BvcnRGZWVkYmFjazsKIH0gIC8v
IG5hbWVzcGFjZSBydGNwCiAKLWNsYXNzIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlciB7CisvLyBE
ZXByZWNhdGVkLCB1c2UgdmVyc2lvbiBpbgorLy8gbW9kdWxlcy9jb25nZWVzdGlvbl9jb250cm9s
bGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oCitjbGFzcyBMZWdhY3lUcmFuc3Bv
cnRGZWVkYmFja0FkYXB0ZXIgewogIHB1YmxpYzoKLSAgZXhwbGljaXQgVHJhbnNwb3J0RmVlZGJh
Y2tBZGFwdGVyKGNvbnN0IENsb2NrKiBjbG9jayk7Ci0gIHZpcnR1YWwgflRyYW5zcG9ydEZlZWRi
YWNrQWRhcHRlcigpOworICBleHBsaWNpdCBMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIo
Y29uc3QgQ2xvY2sqIGNsb2NrKTsKKyAgdmlydHVhbCB+TGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tB
ZGFwdGVyKCk7CiAKICAgdm9pZCBSZWdpc3RlclBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIoUGFja2V0
RmVlZGJhY2tPYnNlcnZlciogb2JzZXJ2ZXIpOwogICB2b2lkIERlUmVnaXN0ZXJQYWNrZXRGZWVk
YmFja09ic2VydmVyKFBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIqIG9ic2VydmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MK
aW5kZXggMzlhYTcyZTgxNjdlN2FiOGM3NDRjNDc1MmUyZTQ3NTM1ZmVhNmNiOS4uZGM0ZWFiMTNk
NjUxMDgwYzJjOGJkMmQyNWIxYzU5ZTE4MmU4ZTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfdW5pdHRlc3QuY2MKQEAgLTUyLDcgKzUy
LDcgQEAgY2xhc3MgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgewogICB2aXJ0dWFsIH5MZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXJUZXN0KCkge30KIAogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgYWRhcHRlcl8ucmVz
ZXQobmV3IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcigmY2xvY2tfKSk7CisgICAgYWRhcHRlcl8u
cmVzZXQobmV3IExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcigmY2xvY2tfKSk7CiAgIH0K
IAogICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IGFkYXB0ZXJfLnJlc2V0KCk7IH0KQEAgLTc1
LDcgKzc1LDcgQEAgY2xhc3MgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGtTc3Jj
ID0gODQ5MjsKIAogICBTaW11bGF0ZWRDbG9jayBjbG9ja187Ci0gIHN0ZDo6dW5pcXVlX3B0cjxU
cmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI+IGFkYXB0ZXJfOworICBzdGQ6OnVuaXF1ZV9wdHI8TGVn
YWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyPiBhZGFwdGVyXzsKIH07CiAKIFRFU1RfRihMZWdh
Y3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0LCBPYnNlcnZlclNhbml0eSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9CVUlMRC5nbgppbmRleCA3NGRlMTc0
N2FmZDNjMDRiODcxNTk3ZGM4M2IxYmEyMGVlMzAyODY2Li4zOTBmYzBhMDUxYjI2NDA1OGNkMGM2
YzZmZWJkOWM3MjA3YTAxNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9CVUlMRC5nbgorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9CVUlMRC5nbgpAQCAtNiw2ICs2LDcgQEAKICMgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQogIyBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KIAoraW1wb3J0KCIv
L2J1aWxkL2NvbmZpZy9saW51eC9wa2dfY29uZmlnLmduaSIpCiBpbXBvcnQoIi8vYnVpbGQvY29u
ZmlnL3VpLmduaSIpCiBpbXBvcnQoIi4uLy4uL3dlYnJ0Yy5nbmkiKQogCkBAIC0yOCw4ICsyOSw4
IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicHJpbWl0aXZlcyIpIHsKICAgXQogCiAgIGRlcHMgPSBb
Ci0gICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3Mi
LAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIApAQCAtOTUsNyArOTYsNiBAQCBp
ZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6ZGVza3RvcF9jYXB0dXJlIiwKICAgICAg
ICI6ZGVza3RvcF9jYXB0dXJlX21vY2siLAogICAgICAgIjpwcmltaXRpdmVzIiwKLSAgICAgICIu
Li8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAg
ICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi8uLi9zeXN0
ZW1fd3JhcHBlcnM6Y3B1X2ZlYXR1cmVzX2FwaSIsCkBAIC0xNjQsNiArMTY0LDIzIEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICB9CiB9CiAKK2lmIChpc19saW51eCkgeworICBpZiAocnRj
X3VzZV9waXBld2lyZSkgeworICAgIHBrZ19jb25maWcoInBpcGV3aXJlIikgeworICAgICAgcGFj
a2FnZXMgPSBbICJsaWJwaXBld2lyZS0wLjIiIF0KKworICAgICAgZGVmaW5lcyA9IFsgIldFQlJU
Q19VU0VfUElQRVdJUkUiIF0KKyAgICB9CisKKyAgICBwa2dfY29uZmlnKCJnaW8iKSB7CisgICAg
ICBwYWNrYWdlcyA9IFsKKyAgICAgICAgImdpby0yLjAiLAorICAgICAgICAiZ2lvLXVuaXgtMi4w
IiwKKyAgICAgIF0KKyAgICB9CisgIH0KK30KKwogcnRjX3NvdXJjZV9zZXQoImRlc2t0b3BfY2Fw
dHVyZSIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgcHVibGljX2RlcHMgPSBbCkBAIC0z
MjEsMzkgKzMzOCw2OSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImRlc2t0b3BfY2FwdHVyZV9nZW5l
cmljIikgewogICAgIF0KICAgfQogCisgIGlmIChydGNfdXNlX3gxMSB8fCBydGNfdXNlX3BpcGV3
aXJlKSB7CisgICAgc291cmNlcyArPSBbCisgICAgICAibW91c2VfY3Vyc29yX21vbml0b3JfbGlu
dXguY2MiLAorICAgICAgInNjcmVlbl9jYXB0dXJlcl9saW51eC5jYyIsCisgICAgICAid2luZG93
X2NhcHR1cmVyX2xpbnV4LmNjIiwKKyAgICBdCisKKyAgICBpZiAoYnVpbGRfd2l0aF9tb3ppbGxh
KSB7CisgICAgICBzb3VyY2VzICs9IFsgImFwcF9jYXB0dXJlcl9saW51eC5jYyIgXQorICAgIH0K
KyAgfQorCiAgIGlmIChydGNfdXNlX3gxMSkgewogICAgIHNvdXJjZXMgKz0gWwotICAgICAgIm1v
dXNlX2N1cnNvcl9tb25pdG9yX3gxMS5jYyIsCi0gICAgICAic2NyZWVuX2NhcHR1cmVyX3gxMS5j
YyIsCi0gICAgICAid2luZG93X2NhcHR1cmVyX3gxMS5jYyIsCi0gICAgICAid2luZG93X2ZpbmRl
cl94MTEuY2MiLAotICAgICAgIndpbmRvd19maW5kZXJfeDExLmgiLAotICAgICAgIngxMS9zaGFy
ZWRfeF9kaXNwbGF5LmNjIiwKLSAgICAgICJ4MTEvc2hhcmVkX3hfZGlzcGxheS5oIiwKLSAgICAg
ICJ4MTEvd2luZG93X2xpc3RfdXRpbHMuY2MiLAotICAgICAgIngxMS93aW5kb3dfbGlzdF91dGls
cy5oIiwKLSAgICAgICJ4MTEveF9hdG9tX2NhY2hlLmNjIiwKLSAgICAgICJ4MTEveF9hdG9tX2Nh
Y2hlLmgiLAotICAgICAgIngxMS94X2Vycm9yX3RyYXAuY2MiLAotICAgICAgIngxMS94X2Vycm9y
X3RyYXAuaCIsCi0gICAgICAieDExL3hfc2VydmVyX3BpeGVsX2J1ZmZlci5jYyIsCi0gICAgICAi
eDExL3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIiwKKyAgICAgICJsaW51eC9tb3VzZV9jdXJzb3Jf
bW9uaXRvcl94MTEuY2MiLAorICAgICAgImxpbnV4L21vdXNlX2N1cnNvcl9tb25pdG9yX3gxMS5o
IiwKKyAgICAgICJsaW51eC9zY3JlZW5fY2FwdHVyZXJfeDExLmNjIiwKKyAgICAgICJsaW51eC9z
Y3JlZW5fY2FwdHVyZXJfeDExLmgiLAorICAgICAgImxpbnV4L3NoYXJlZF94X2Rpc3BsYXkuY2Mi
LAorICAgICAgImxpbnV4L3NoYXJlZF94X2Rpc3BsYXkuaCIsCisgICAgICAibGludXgvd2luZG93
X2NhcHR1cmVyX3gxMS5jYyIsCisgICAgICAibGludXgvd2luZG93X2NhcHR1cmVyX3gxMS5oIiwK
KyAgICAgICJsaW51eC93aW5kb3dfZmluZGVyX3gxMS5jYyIsCisgICAgICAibGludXgvd2luZG93
X2ZpbmRlcl94MTEuaCIsCisgICAgICAibGludXgvd2luZG93X2xpc3RfdXRpbHMuY2MiLAorICAg
ICAgImxpbnV4L3dpbmRvd19saXN0X3V0aWxzLmgiLAorICAgICAgImxpbnV4L3hfYXRvbV9jYWNo
ZS5jYyIsCisgICAgICAibGludXgveF9hdG9tX2NhY2hlLmgiLAorICAgICAgImxpbnV4L3hfZXJy
b3JfdHJhcC5jYyIsCisgICAgICAibGludXgveF9lcnJvcl90cmFwLmgiLAorICAgICAgImxpbnV4
L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5jYyIsCisgICAgICAibGludXgveF9zZXJ2ZXJfcGl4ZWxf
YnVmZmVyLmgiLAogICAgIF0KICAgICBjb25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2xpbnV4
OngxMSIgXQogCiAgICAgaWYgKGJ1aWxkX3dpdGhfbW96aWxsYSkgewogICAgICAgc291cmNlcyAr
PSBbCi0gICAgICAgICJhcHBfY2FwdHVyZXJfeDExLmNjIiwKLSAgICAgICAgImFwcF9jYXB0dXJl
cl94MTEuaCIsCi0gICAgICAgICJ4MTEvZGVza3RvcF9kZXZpY2VfaW5mb194MTEuY2MiLAotICAg
ICAgICAieDExL2Rlc2t0b3BfZGV2aWNlX2luZm9feDExLmgiLAotICAgICAgICAieDExL3NoYXJl
ZF94X3V0aWwuY2MiLAotICAgICAgICAieDExL3NoYXJlZF94X3V0aWwuaCIsCisgICAgICAgICJs
aW51eC9hcHBfY2FwdHVyZXJfeDExLmNjIiwKKyAgICAgICAgImxpbnV4L2Rlc2t0b3BfZGV2aWNl
X2luZm9fbGludXguY2MiLAorICAgICAgICAibGludXgvZGVza3RvcF9kZXZpY2VfaW5mb19saW51
eC5oIiwKKyAgICAgICAgImxpbnV4L3NoYXJlZF94X3V0aWwuY2MiLAorICAgICAgICAibGludXgv
c2hhcmVkX3hfdXRpbC5oIiwKICAgICAgIF0KICAgICB9CiAgIH0KIAotICBpZiAoIWlzX3dpbiAm
JiAhaXNfbWFjICYmICFydGNfdXNlX3gxMSkgeworICBpZiAocnRjX3VzZV9waXBld2lyZSkgewor
ICAgIHNvdXJjZXMgKz0gWworICAgICAgImxpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUuY2Mi
LAorICAgICAgImxpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUuaCIsCisgICAgICAibGludXgv
c2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmNjIiwKKyAgICAgICJsaW51eC9zY3JlZW5fY2FwdHVy
ZXJfcGlwZXdpcmUuaCIsCisgICAgICAibGludXgvd2luZG93X2NhcHR1cmVyX3BpcGV3aXJlLmNj
IiwKKyAgICAgICJsaW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuaCIsCisgICAgXQorCisg
ICAgY29uZmlncyArPSBbCisgICAgICAiOmdpbyIsCisgICAgICAiOnBpcGV3aXJlIiwKKyAgICBd
CisgIH0KKworICBpZiAoIWlzX3dpbiAmJiAhaXNfbWFjICYmICFydGNfdXNlX3gxMSAmJiAhcnRj
X3VzZV9waXBld2lyZSkgewogICAgIHNvdXJjZXMgKz0gWwogICAgICAgIm1vdXNlX2N1cnNvcl9t
b25pdG9yX251bGwuY2MiLAogICAgICAgInNjcmVlbl9jYXB0dXJlcl9udWxsLmNjIiwKQEAgLTM3
MCwxMiArNDE3LDEyIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiZGVza3RvcF9jYXB0dXJlX2dlbmVy
aWMiKSB7CiAKICAgZGVwcyA9IFsKICAgICAiOnByaW1pdGl2ZXMiLAotICAgICIuLi8uLjp3ZWJy
dGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBpOnJlZmNvdW50ZWRiYXNlIiwKICAgICAiLi4vLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLCAgIyBUT0RP
KGtqZWxsYW5kZXIpOiBDbGVhbnVwIGluIGJ1Z3Mud2VicnRjLm9yZy8zODA2LgogICAgICIuLi8u
Li9ydGNfYmFzZS9zeW5jaHJvbml6YXRpb246cndfbG9ja193cmFwcGVyIiwKICAgICAiLi4vLi4v
cnRjX2Jhc2Uvc3lzdGVtOmFyY2giLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4
cG9ydCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgICAgIi4uLy4uL3N5c3RlbV93
cmFwcGVyczpjcHVfZmVhdHVyZXNfYXBpIiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOm1l
dHJpY3MiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBlZF9kZXNrdG9wX2ZyYW1lLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9jcm9wcGVkX2Rlc2t0b3BfZnJhbWUuaAppbmRleCA1OWRjZWQ0MDE3OWJkZDkzZDgx
YzNiNDdhZTczYTVmNzE5OWM2YTNjLi42NzgyMzk4YTZhYjFlMjFkMzVlMTE1YmM0ODAxYTZhY2Yz
MjgxNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9jcm9wcGVkX2Rlc2t0b3BfZnJhbWUuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9jcm9wcGVkX2Rlc2t0b3BfZnJhbWUuaApAQCAtMTIsNiArMTIsNyBAQAogI2Rl
ZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9DUk9QUEVEX0RFU0tUT1BfRlJBTUVfSF8KIAog
I2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZnJhbWUuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IApAQCAtMjAsOSArMjEsOSBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIC8vIHxmcmFtZXwgc2hvdWxk
IG5vdCBiZSBudWxscHRyLiB8cmVjdHwgaXMgaW4gfGZyYW1lfCBjb29yZGluYXRlLCBpLmUuCiAv
LyB8ZnJhbWV8LT50b3BfbGVmdCgpIGRvZXMgbm90IGltcGFjdCB0aGUgYXJlYSBvZiB8cmVjdHwu
CiAvLyBSZXR1cm5zIG51bGxwdHIgZnJhbWUgaWYgfHJlY3R8IGlzIG5vdCBjb250YWluZWQgYnkg
dGhlIGJvdW5kcyBvZiB8ZnJhbWV8Lgotc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gQ3Jl
YXRlQ3JvcHBlZERlc2t0b3BGcmFtZSgKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1l
PiBmcmFtZSwKLSAgICBjb25zdCBEZXNrdG9wUmVjdCYgcmVjdCk7CitzdGQ6OnVuaXF1ZV9wdHI8
RGVza3RvcEZyYW1lPiBSVENfRVhQT1JUCitDcmVhdGVDcm9wcGVkRGVza3RvcEZyYW1lKHN0ZDo6
dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IGZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBEZXNrdG9wUmVjdCYgcmVjdCk7CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBpbmdfd2luZG93X2NhcHR1cmVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9jcm9wcGluZ193aW5kb3dfY2FwdHVyZXIuaAppbmRleCBjODg5ODAxZGEzYzViYmZlYjVjODQ5
Y2I3NmUwZmM1Yzg2ZjRiNzBmLi4yMjQxOThmYTYxNTExMGIxNDIxNmRjNTBlM2ZjYzAzMTgxYWY3
ZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9jcm9wcGluZ193aW5kb3dfY2FwdHVyZXIuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9jcm9wcGluZ193aW5kb3dfY2FwdHVyZXIuaApAQCAtMTUsMTQgKzE1LDE1IEBA
CiAKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVfb3B0
aW9ucy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVy
ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIAogLy8gV2luZG93Q2FwdHVyZXIgaW1wbGVtZW50YXRpb24gdGhhdCB1c2Vz
IGEgc2NyZWVuIGNhcHR1cmVyIHRvIGNhcHR1cmUgdGhlCiAvLyB3aG9sZSBzY3JlZW4gYW5kIGNy
b3BzIHRoZSB2aWRlbyBmcmFtZSB0byB0aGUgd2luZG93IGFyZWEgd2hlbiB0aGUgY2FwdHVyZWQK
IC8vIHdpbmRvdyBpcyBvbiB0b3AuCi1jbGFzcyBDcm9wcGluZ1dpbmRvd0NhcHR1cmVyIDogcHVi
bGljIERlc2t0b3BDYXB0dXJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgRGVza3RvcENhcHR1cmVyOjpDYWxsYmFjayB7CitjbGFzcyBSVENfRVhQT1JUIENyb3BwaW5n
V2luZG93Q2FwdHVyZXIgOiBwdWJsaWMgRGVza3RvcENhcHR1cmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIERlc2t0b3BDYXB0dXJlcjo6Q2FsbGJh
Y2sgewogIHB1YmxpYzoKICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+
IENyZWF0ZUNhcHR1cmVyKAogICAgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfYW5kX2N1cnNvcl9jb21wb3Nlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvZGVza3RvcF9hbmRfY3Vyc29yX2NvbXBvc2VyLmgKaW5kZXggN2RmZjcxMDFm
MzVkODMzYzY5MzMxZjY2YjdiN2E2ZmIzYzMzMDA4OS4uZmE1ZDE1YzkyZjYwMThmOGZmYmFmMGM0
NGVjZGZjNDMzYTk0ZGY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9hbmRfY3Vyc29y
X2NvbXBvc2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9hbmRfY3Vyc29yX2NvbXBvc2VyLmgK
QEAgLTE3LDE0ICsxNywxNiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rl
c2t0b3BfY2FwdHVyZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3Vz
ZV9jdXJzb3JfbW9uaXRvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIAogLy8gQSB3cmFwcGVyIGZvciBEZXNrdG9wQ2FwdHVyZXIgdGhhdCBhbHNvIGNh
cHR1cmVzIG1vdXNlIHVzaW5nIHNwZWNpZmllZAogLy8gTW91c2VDdXJzb3JNb25pdG9yIGFuZCBy
ZW5kZXJzIGl0IG9uIHRoZSBnZW5lcmF0ZWQgc3RyZWFtcy4KLWNsYXNzIERlc2t0b3BBbmRDdXJz
b3JDb21wb3NlciA6IHB1YmxpYyBEZXNrdG9wQ2FwdHVyZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgRGVza3RvcENhcHR1cmVyOjpDYWxsYmFjaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBNb3VzZUN1cnNvck1vbml0b3I6OkNhbGxi
YWNrIHsKK2NsYXNzIFJUQ19FWFBPUlQgRGVza3RvcEFuZEN1cnNvckNvbXBvc2VyCisgICAgOiBw
dWJsaWMgRGVza3RvcENhcHR1cmVyLAorICAgICAgcHVibGljIERlc2t0b3BDYXB0dXJlcjo6Q2Fs
bGJhY2ssCisgICAgICBwdWJsaWMgTW91c2VDdXJzb3JNb25pdG9yOjpDYWxsYmFjayB7CiAgcHVi
bGljOgogICAvLyBDcmVhdGVzIGEgbmV3IGJsZW5kZXIgdGhhdCBjYXB0dXJlcyBtb3VzZSBjdXJz
b3IgdXNpbmcKICAgLy8gTW91c2VDdXJzb3JNb25pdG9yOjpDcmVhdGUob3B0aW9ucykgYW5kIHJl
bmRlcnMgaXQgaW50byB0aGUgZnJhbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2Nh
cHR1cmVfb3B0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaAppbmRl
eCA2MGFhMDVjM2ZkMzMyOWQyNzQ3ODEyZjBmNDgzODUxNGU3OWQzZjgyLi5lOTU4N2EzZjUwYzMx
YjA4NTM1ZDhkN2EwNWJmZDQ2OWZmMzc3NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9w
X2NhcHR1cmVfb3B0aW9ucy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25z
LmgKQEAgLTEyLDkgKzEyLDEwIEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiAjaWYgZGVmaW5lZChVU0VfWDExKQotI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS9zaGFyZWRfeF9kaXNwbGF5LmgiCisj
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxheS5o
IgogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpICYmICFkZWZpbmVkKFdFQlJUQ19J
T1MpCkBAIC0yNiw3ICsyNyw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBBbiBvYmplY3Qg
dGhhdCBzdG9yZXMgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyBmb3Igc2NyZWVuIGFuZCB3aW5k
b3cKIC8vIGNhcHR1cmVycy4KLWNsYXNzIERlc2t0b3BDYXB0dXJlT3B0aW9ucyB7CitjbGFzcyBS
VENfRVhQT1JUIERlc2t0b3BDYXB0dXJlT3B0aW9ucyB7CiAgcHVibGljOgogICAvLyBSZXR1cm5z
IGluc3RhbmNlIG9mIERlc2t0b3BDYXB0dXJlT3B0aW9ucyB3aXRoIGRlZmF1bHQgcGFyYW1ldGVy
cy4gT24gTGludXgKICAgLy8gYWxzbyBpbml0aWFsaXplcyBYIHdpbmRvdyBjb25uZWN0aW9uLiB4
X2Rpc3BsYXkoKSB3aWxsIGJlIHNldCB0byBudWxsIGlmCkBAIC0xMTQsNiArMTE1LDExIEBAIGNs
YXNzIERlc2t0b3BDYXB0dXJlT3B0aW9ucyB7CiAgIH0KICNlbmRpZgogCisjaWYgZGVmaW5lZChX
RUJSVENfVVNFX1BJUEVXSVJFKQorICBib29sIGFsbG93X3BpcGV3aXJlKCkgY29uc3QgeyByZXR1
cm4gYWxsb3dfcGlwZXdpcmVfOyB9CisgIHZvaWQgc2V0X2FsbG93X3BpcGV3aXJlKGJvb2wgYWxs
b3cpIHsgYWxsb3dfcGlwZXdpcmVfID0gYWxsb3c7IH0KKyNlbmRpZgorCiAgcHJpdmF0ZToKICNp
ZiBkZWZpbmVkKFVTRV9YMTEpCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRYRGlzcGxheT4g
eF9kaXNwbGF5XzsKQEAgLTEzNyw2ICsxNDMsOSBAQCBjbGFzcyBEZXNrdG9wQ2FwdHVyZU9wdGlv
bnMgewogI2VuZGlmCiAgIGJvb2wgZGlzYWJsZV9lZmZlY3RzXyA9IHRydWU7CiAgIGJvb2wgZGV0
ZWN0X3VwZGF0ZWRfcmVnaW9uXyA9IGZhbHNlOworI2lmIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBF
V0lSRSkKKyAgYm9vbCBhbGxvd19waXBld2lyZV8gPSBmYWxzZTsKKyNlbmRpZgogfTsKIAogfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJl
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuY2MKaW5kZXggMTY2ZDk3Y2M1MmFmNjk5
NzdlM2RhMWViOWIxYjk0YzU3MGI4MTA1ZS4uMTkwZjYxZTgxNzU1YTMyNmZmYTA0NmFlZWYzYTAz
YmMyNzkyYzQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmNjCkBAIC04LDYgKzgsOCBAQAogICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgog
ICovCiAKKyNpbmNsdWRlIDxjc3RyaW5nPgorCiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvZGVza3RvcF9jYXB0dXJlci5oIgogCiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKQEAgLTYwLDQgKzYyLDE3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+IERlc2t0b3BDYXB0dXJlcjo6Q3JlYXRlU2NyZWVu
Q2FwdHVyZXIoCiAgIHJldHVybiBjYXB0dXJlcjsKIH0KIAorI2lmIGRlZmluZWQoV0VCUlRDX1VT
RV9QSVBFV0lSRSkgfHwgZGVmaW5lZChVU0VfWDExKQorYm9vbCBEZXNrdG9wQ2FwdHVyZXI6Oklz
UnVubmluZ1VuZGVyV2F5bGFuZCgpIHsKKyAgY29uc3QgY2hhciogeGRnX3Nlc3Npb25fdHlwZSA9
IGdldGVudigiWERHX1NFU1NJT05fVFlQRSIpOworICBpZiAoIXhkZ19zZXNzaW9uX3R5cGUgfHwg
c3RybmNtcCh4ZGdfc2Vzc2lvbl90eXBlLCAid2F5bGFuZCIsIDcpICE9IDApCisgICAgcmV0dXJu
IGZhbHNlOworCisgIGlmICghKGdldGVudigiV0FZTEFORF9ESVNQTEFZIikpKQorICAgIHJldHVy
biBmYWxzZTsKKworICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZiAgLy8gZGVmaW5lZChXRUJSVENf
VVNFX1BJUEVXSVJFKSB8fCBkZWZpbmVkKFVTRV9YMTEpCisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rl
c2t0b3BfY2FwdHVyZXIuaAppbmRleCA0NzE5NmNmZTQ5MTA4M2Q2NjY5MzBlYjk1NTZiMzlhMWMz
ZDcyOTJmLi5mOWRhY2MxZjdhMzg0NzdmN2UzMjgzZWViNjJkODNhOTEzYWJmMGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9j
YXB0dXJlci5oCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvZGVza3RvcF9jYXB0dXJlX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL3NoYXJlZF9tZW1vcnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9y
dC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMjksNyArMzAsNyBAQCBjbGFzcyBEZXNr
dG9wQ2FwdHVyZU9wdGlvbnM7CiBjbGFzcyBEZXNrdG9wRnJhbWU7CiAKIC8vIEFic3RyYWN0IGlu
dGVyZmFjZSBmb3Igc2NyZWVuIGFuZCB3aW5kb3cgY2FwdHVyZXJzLgotY2xhc3MgRGVza3RvcENh
cHR1cmVyIHsKK2NsYXNzIFJUQ19FWFBPUlQgRGVza3RvcENhcHR1cmVyIHsKICBwdWJsaWM6CiAg
IGVudW0gY2xhc3MgUmVzdWx0IHsKICAgICAvLyBUaGUgZnJhbWUgd2FzIGNhcHR1cmVkIHN1Y2Nl
c3NmdWxseS4KQEAgLTEzNCw2ICsxMzUsMTAgQEAgY2xhc3MgRGVza3RvcENhcHR1cmVyIHsKICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+IENyZWF0ZVNjcmVlbkNhcHR1
cmVyKAogICAgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKTsKIAorI2lm
IGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkgfHwgZGVmaW5lZChVU0VfWDExKQorICBzdGF0
aWMgYm9vbCBJc1J1bm5pbmdVbmRlcldheWxhbmQoKTsKKyNlbmRpZiAgLy8gZGVmaW5lZChXRUJS
VENfVVNFX1BJUEVXSVJFKSB8fCBkZWZpbmVkKFVTRV9YMTEpCisKICBwcm90ZWN0ZWQ6CiAgIC8v
IENyb3BwaW5nV2luZG93Q2FwdHVyZXIgbmVlZHMgdG8gY3JlYXRlIHJhdyBjYXB0dXJlcnMgd2l0
aG91dCB3cmFwcGVycywgc28KICAgLy8gdGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFyZSBw
cm90ZWN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9kZXNrdG9wX2ZyYW1lLmgKaW5kZXggNmY3ZWRmY2M0ZjcwOTVlMWVmMjM2NmU4MDg4ZTQ2OTRi
NTM4OTIxOC4uMjliODRiNzE4MzcyY2YwZDIyNzU3Mjk0ODRjNTk2MTQwODkyNjQzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZnJh
bWUuaApAQCAtMTgsMTMgKzE4LDE0IEBACiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvZGVza3RvcF9yZWdpb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9z
aGFyZWRfbWVtb3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogCiBjb25zdCBpbnQga1N0YW5kYXJkRFBJID0gOTY7CiAKIC8vIERlc2t0b3BGcmFtZSBy
ZXByZXNlbnRzIGEgdmlkZW8gZnJhbWUgY2FwdHVyZWQgZnJvbSB0aGUgc2NyZWVuLgotY2xhc3Mg
RGVza3RvcEZyYW1lIHsKK2NsYXNzIFJUQ19FWFBPUlQgRGVza3RvcEZyYW1lIHsKICBwdWJsaWM6
CiAgIC8vIERlc2t0b3BGcmFtZSBvYmplY3RzIGFsd2F5cyBob2xkIFJHQkEgZGF0YS4KICAgc3Rh
dGljIGNvbnN0IGludCBrQnl0ZXNQZXJQaXhlbCA9IDQ7CkBAIC0xMzUsNyArMTM2LDcgQEAgY2xh
c3MgRGVza3RvcEZyYW1lIHsKIH07CiAKIC8vIEEgRGVza3RvcEZyYW1lIHRoYXQgc3RvcmVzIGRh
dGEgaW4gdGhlIGhlYXAuCi1jbGFzcyBCYXNpY0Rlc2t0b3BGcmFtZSA6IHB1YmxpYyBEZXNrdG9w
RnJhbWUgeworY2xhc3MgUlRDX0VYUE9SVCBCYXNpY0Rlc2t0b3BGcmFtZSA6IHB1YmxpYyBEZXNr
dG9wRnJhbWUgewogIHB1YmxpYzoKICAgZXhwbGljaXQgQmFzaWNEZXNrdG9wRnJhbWUoRGVza3Rv
cFNpemUgc2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0cnkuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0cnkuaAppbmRleCAwOWFkNTViYjRiZjE1NmQzY2E5OWY4
MTM2Y2JjNWY2Njg2ZmFjMzk4Li42MjNhNDU1NWY5ZjQ4ZDZjNjEwODMxZDJkMDMzNWExNzliZDZh
N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2dlb21ldHJ5LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvZGVza3RvcF9nZW9tZXRyeS5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8c3RkaW50
Lmg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAg
LTc0LDcgKzc1LDcgQEAgY2xhc3MgRGVza3RvcFNpemUgewogfTsKIAogLy8gUmVwcmVzZW50cyBh
IHJlY3RhbmdsZSBvbiB0aGUgc2NyZWVuLgotY2xhc3MgRGVza3RvcFJlY3QgeworY2xhc3MgUlRD
X0VYUE9SVCBEZXNrdG9wUmVjdCB7CiAgcHVibGljOgogICBzdGF0aWMgRGVza3RvcFJlY3QgTWFr
ZVNpemUoY29uc3QgRGVza3RvcFNpemUmIHNpemUpIHsKICAgICByZXR1cm4gRGVza3RvcFJlY3Qo
MCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2Rlc2t0b3BfcmVnaW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX3JlZ2lvbi5oCmluZGV4IGY0Yjky
MDllMmRjYWZmYzVkMjEyN2ZlYmZmMjc2ZDM0MDM3ZTMzOTAuLmNiYjJkOGM0OGI1MzAzZGE3MzFh
NWI3ZTQ3ZTE3ZjAwZGFlNzczNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfcmVnaW9u
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9yZWdpb24uaApAQCAtMTYsNiArMTYsNyBAQAogCiAj
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9nZW9tZXRyeS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9z
eXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMjMsNyArMjQs
NyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIC8vCiAvLyBJbnRlcm5hbGx5IGVhY2ggcmVnaW9uIGlz
IHN0b3JlZCBhcyBhIHNldCBvZiByb3dzIHdoZXJlIGVhY2ggcm93IGNvbnRhaW5zIG9uZQogLy8g
b3IgbW9yZSByZWN0YW5nbGVzIGFsaWduZWQgdmVydGljYWxseS4KLWNsYXNzIERlc2t0b3BSZWdp
b24geworY2xhc3MgUlRDX0VYUE9SVCBEZXNrdG9wUmVnaW9uIHsKICBwcml2YXRlOgogICAvLyBU
aGUgZm9sbG93aW5nIHByaXZhdGUgdHlwZXMgbmVlZCB0byBiZSBkZWNsYXJlZCBmaXJzdCBiZWNh
dXNlIHRoZXkgYXJlIHVzZWQKICAgLy8gaW4gdGhlIHB1YmxpYyBJdGVyYXRvci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL2Zha2VfZGVza3RvcF9jYXB0dXJlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZmFrZV9kZXNr
dG9wX2NhcHR1cmVyLmgKaW5kZXggODJjMDUzY2JlMDk4Yjk5MWJiYTEwOTYzYmJhYjEzZjU3ZjQ4
NTI2MS4uZmQ4NjdlMzM1ZGExOTIzYTIyNmRmNjJjNTBiMTNmYzNkNTI0OTkwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvZmFrZV9kZXNrdG9wX2NhcHR1cmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZmFrZV9k
ZXNrdG9wX2NhcHR1cmVyLmgKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZV9nZW5lcmF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9zaGFyZWRfbWVtb3J5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lz
dGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTMxLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyBEb3VibGUgYnVmZmVyaW5nIGlzIGd1YXJhbnRlZWQg
YnkgdGhlIEZyYW1lR2VuZXJhdG9yLiBGcmFtZUdlbmVyYXRvcgogLy8gaW1wbGVtZW50cyBpbiBk
ZXNrdG9wX2ZyYW1lX2dlbmVyYXRvci5oIGd1YXJhbnRlZSBkb3VibGUgYnVmZmVyaW5nLCB0aGV5
CiAvLyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIERlc2t0b3BGcmFtZSBlYWNoIHRpbWUuCi1j
bGFzcyBGYWtlRGVza3RvcENhcHR1cmVyIDogcHVibGljIERlc2t0b3BDYXB0dXJlciB7CitjbGFz
cyBSVENfRVhQT1JUIEZha2VEZXNrdG9wQ2FwdHVyZXIgOiBwdWJsaWMgRGVza3RvcENhcHR1cmVy
IHsKICBwdWJsaWM6CiAgIEZha2VEZXNrdG9wQ2FwdHVyZXIoKTsKICAgfkZha2VEZXNrdG9wQ2Fw
dHVyZXIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVy
ZXJfcGlwZXdpcmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYyZDk5OTRkMzJhNTI1ZWU5ZTBmZTU5YjJlZGU2YWUzY2M0MTMxMGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmNj
CkBAIC0wLDAgKzEsODQzIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbGludXgvYmFzZV9jYXB0dXJlcl9waXBld2lyZS5oIgorCisjaW5j
bHVkZSA8Z2lvL2d1bml4ZmRsaXN0Lmg+CisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKworI2lu
Y2x1ZGUgPHNwYS9wYXJhbS9mb3JtYXQtdXRpbHMuaD4KKyNpbmNsdWRlIDxzcGEvcGFyYW0vcHJv
cHMuaD4KKyNpbmNsdWRlIDxzcGEvcGFyYW0vdmlkZW8vcmF3LXV0aWxzLmg+CisjaW5jbHVkZSA8
c3BhL3N1cHBvcnQvdHlwZS1tYXAuaD4KKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1
dGlsaXR5PgorCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAibW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorCituYW1l
c3BhY2Ugd2VicnRjIHsKKworY29uc3QgY2hhciBrRGVza3RvcEJ1c05hbWVbXSA9ICJvcmcuZnJl
ZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiOworY29uc3QgY2hhciBrRGVza3RvcE9iamVjdFBhdGhb
XSA9ICIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIjsKK2NvbnN0IGNoYXIga0Rlc2t0
b3BSZXF1ZXN0T2JqZWN0UGF0aFtdID0KKyAgICAiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVz
a3RvcC9yZXF1ZXN0IjsKK2NvbnN0IGNoYXIga1Nlc3Npb25JbnRlcmZhY2VOYW1lW10gPSAib3Jn
LmZyZWVkZXNrdG9wLnBvcnRhbC5TZXNzaW9uIjsKK2NvbnN0IGNoYXIga1JlcXVlc3RJbnRlcmZh
Y2VOYW1lW10gPSAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5SZXF1ZXN0IjsKK2NvbnN0IGNoYXIg
a1NjcmVlbkNhc3RJbnRlcmZhY2VOYW1lW10gPSAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3Jl
ZW5DYXN0IjsKKworY29uc3QgaW50IGtCeXRlc1BlclBpeGVsID0gNDsKKworLy8gc3RhdGljCit2
b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblN0YXRlQ2hhbmdlZCh2b2lkKiBkYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdfcmVtb3RlX3N0YXRlIG9s
ZF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3X3Jl
bW90ZV9zdGF0ZSBzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGVycm9yX21lc3NhZ2UpIHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUq
IHRoYXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KGRhdGEpOworICBSVENf
RENIRUNLKHRoYXQpOworCisgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFBXX1JFTU9URV9T
VEFURV9FUlJPUjoKKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJQaXBlV2lyZSByZW1vdGUg
c3RhdGUgZXJyb3I6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFdfUkVNT1RFX1NUQVRFX0NPTk5FQ1RFRDoKKyAgICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlBp
cGVXaXJlIHJlbW90ZSBzdGF0ZTogY29ubmVjdGVkLiI7CisgICAgICB0aGF0LT5DcmVhdGVSZWNl
aXZpbmdTdHJlYW0oKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFdfUkVNT1RFX1NUQVRFX0NP
Tk5FQ1RJTkc6CisgICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJQaXBlV2lyZSByZW1vdGUgc3Rh
dGU6IGNvbm5lY3RpbmcuIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFdfUkVNT1RFX1NUQVRF
X1VOQ09OTkVDVEVEOgorICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUGlwZVdpcmUgcmVtb3Rl
IHN0YXRlOiB1bmNvbm5lY3RlZC4iOworICAgICAgYnJlYWs7CisgIH0KK30KKworLy8gc3RhdGlj
Cit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblN0cmVhbVN0YXRlQ2hhbmdlZCh2b2lkKiBk
YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdf
c3RyZWFtX3N0YXRlIG9sZF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB3X3N0cmVhbV9zdGF0ZSBzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yX21lc3NhZ2Up
IHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVy
ZXJQaXBlV2lyZSo+KGRhdGEpOworICBSVENfRENIRUNLKHRoYXQpOworCisgIHN3aXRjaCAoc3Rh
dGUpIHsKKyAgICBjYXNlIFBXX1NUUkVBTV9TVEFURV9FUlJPUjoKKyAgICAgIFJUQ19MT0coTFNf
RVJST1IpIDw8ICJQaXBlV2lyZSBzdHJlYW0gc3RhdGUgZXJyb3I6ICIgPDwgZXJyb3JfbWVzc2Fn
ZTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFdfU1RSRUFNX1NUQVRFX0NPTkZJR1VSRToKKyAg
ICAgIHB3X3N0cmVhbV9zZXRfYWN0aXZlKHRoYXQtPnB3X3N0cmVhbV8sIHRydWUpOworICAgICAg
YnJlYWs7CisgICAgY2FzZSBQV19TVFJFQU1fU1RBVEVfVU5DT05ORUNURUQ6CisgICAgY2FzZSBQ
V19TVFJFQU1fU1RBVEVfQ09OTkVDVElORzoKKyAgICBjYXNlIFBXX1NUUkVBTV9TVEFURV9SRUFE
WToKKyAgICBjYXNlIFBXX1NUUkVBTV9TVEFURV9QQVVTRUQ6CisgICAgY2FzZSBQV19TVFJFQU1f
U1RBVEVfU1RSRUFNSU5HOgorICAgICAgYnJlYWs7CisgIH0KK30KKworLy8gc3RhdGljCit2b2lk
IEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblN0cmVhbUZvcm1hdENoYW5nZWQodm9pZCogZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dHJ1Y3Qgc3BhX3BvZCogZm9ybWF0KSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0g
c3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPihkYXRhKTsKKyAgUlRDX0RDSEVDSyh0
aGF0KTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJQaXBlV2lyZSBzdHJlYW0gZm9ybWF0IGNo
YW5nZWQuIjsKKworICBpZiAoIWZvcm1hdCkgeworICAgIHB3X3N0cmVhbV9maW5pc2hfZm9ybWF0
KHRoYXQtPnB3X3N0cmVhbV8sIC8qcmVzPSovMCwgLypwYXJhbXM9Ki9udWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qbl9wYXJhbXM9Ki8wKTsKKyAgICByZXR1cm47CisgIH0K
KworICB0aGF0LT5zcGFfdmlkZW9fZm9ybWF0XyA9IG5ldyBzcGFfdmlkZW9faW5mb19yYXcoKTsK
KyAgc3BhX2Zvcm1hdF92aWRlb19yYXdfcGFyc2UoZm9ybWF0LCB0aGF0LT5zcGFfdmlkZW9fZm9y
bWF0XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRoYXQtPnB3X3R5cGVfLT5mb3Jt
YXRfdmlkZW8pOworCisgIGF1dG8gd2lkdGggPSB0aGF0LT5zcGFfdmlkZW9fZm9ybWF0Xy0+c2l6
ZS53aWR0aDsKKyAgYXV0byBoZWlnaHQgPSB0aGF0LT5zcGFfdmlkZW9fZm9ybWF0Xy0+c2l6ZS5o
ZWlnaHQ7CisgIGF1dG8gc3RyaWRlID0gU1BBX1JPVU5EX1VQX04od2lkdGggKiBrQnl0ZXNQZXJQ
aXhlbCwgNCk7CisgIGF1dG8gc2l6ZSA9IGhlaWdodCAqIHN0cmlkZTsKKworICB1aW50OF90IGJ1
ZmZlclsxMDI0XSA9IHt9OworICBhdXRvIGJ1aWxkZXIgPSBzcGFfcG9kX2J1aWxkZXJ7YnVmZmVy
LCBzaXplb2YoYnVmZmVyKX07CisKKyAgLy8gU2V0dXAgYnVmZmVycyBhbmQgbWV0YSBoZWFkZXIg
Zm9yIG5ldyBmb3JtYXQuCisgIGNvbnN0IHN0cnVjdCBzcGFfcG9kKiBwYXJhbXNbMl07CisgIHBh
cmFtc1swXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3BhX3BvZCo+KHNwYV9wb2RfYnVpbGRlcl9vYmpl
Y3QoCisgICAgICAmYnVpbGRlciwKKyAgICAgIC8vIGlkIHRvIGVudW1lcmF0ZSBidWZmZXIgcmVx
dWlyZW1lbnRzCisgICAgICB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbS5pZEJ1ZmZlcnMsCisg
ICAgICB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9idWZmZXJzLkJ1ZmZlcnMsCisgICAgICAv
LyBTaXplOiBzcGVjaWZpZWQgYXMgaW50ZWdlciAoaSkgYW5kIHNldCB0byBzcGVjaWZpZWQgc2l6
ZQorICAgICAgIjoiLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9idWZmZXJzLnNpemUsICJp
Iiwgc2l6ZSwKKyAgICAgIC8vIFN0cmlkZTogc3BlY2lmaWVkIGFzIGludGVnZXIgKGkpIGFuZCBz
ZXQgdG8gc3BlY2lmaWVkIHN0cmlkZQorICAgICAgIjoiLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5w
YXJhbV9idWZmZXJzLnN0cmlkZSwgImkiLCBzdHJpZGUsCisgICAgICAvLyBCdWZmZXJzOiBzcGVj
aWZpZXMgaG93IG1hbnkgYnVmZmVycyB3ZSB3YW50IHRvIGRlYWwgd2l0aCwgc2V0IGFzCisgICAg
ICAvLyBpbnRlZ2VyIChpKSB3aGVyZSBwcmVmZXJyZWQgbnVtYmVyIGlzIDgsIHRoZW4gYWxsb3dl
ZCBudW1iZXIgaXMgZGVmaW5lZAorICAgICAgLy8gYXMgcmFuZ2UgKHIpIGZyb20gbWluIGFuZCBt
YXggdmFsdWVzIGFuZCBpdCBpcyB1bmRlY2lkZWQgKHUpIHRvIGFsbG93CisgICAgICAvLyBuZWdv
dGlhdGlvbgorICAgICAgIjoiLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9idWZmZXJzLmJ1
ZmZlcnMsICJpcnUiLCA4LAorICAgICAgU1BBX1BPRF9QUk9QX01JTl9NQVgoMSwgMzIpLAorICAg
ICAgLy8gQWxpZ246IG1lbW9yeSBhbGlnbm1lbnQgb2YgdGhlIGJ1ZmZlciwgc2V0IGFzIGludGVn
ZXIgKGkpIHRvIHNwZWNpZmllZAorICAgICAgLy8gdmFsdWUKKyAgICAgICI6IiwgdGhhdC0+cHdf
Y29yZV90eXBlXy0+cGFyYW1fYnVmZmVycy5hbGlnbiwgImkiLCAxNikpOworICBwYXJhbXNbMV0g
PSByZWludGVycHJldF9jYXN0PHNwYV9wb2QqPihzcGFfcG9kX2J1aWxkZXJfb2JqZWN0KAorICAg
ICAgJmJ1aWxkZXIsCisgICAgICAvLyBpZCB0byBlbnVtZXJhdGUgc3VwcG9ydGVkIG1ldGFkYXRh
CisgICAgICB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbS5pZE1ldGEsIHRoYXQtPnB3X2NvcmVf
dHlwZV8tPnBhcmFtX21ldGEuTWV0YSwKKyAgICAgIC8vIFR5cGU6IHNwZWNpZmllZCBhcyBpZCBv
ciBlbnVtIChJKQorICAgICAgIjoiLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9tZXRhLnR5
cGUsICJJIiwKKyAgICAgIHRoYXQtPnB3X2NvcmVfdHlwZV8tPm1ldGEuSGVhZGVyLAorICAgICAg
Ly8gU2l6ZTogc2l6ZSBvZiB0aGUgbWV0YWRhdGEsIHNwZWNpZmllZCBhcyBpbnRlZ2VyIChpKQor
ICAgICAgIjoiLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9tZXRhLnNpemUsICJpIiwKKyAg
ICAgIHNpemVvZihzdHJ1Y3Qgc3BhX21ldGFfaGVhZGVyKSkpOworCisgIHB3X3N0cmVhbV9maW5p
c2hfZm9ybWF0KHRoYXQtPnB3X3N0cmVhbV8sIC8qcmVzPSovMCwgcGFyYW1zLCAvKm5fcGFyYW1z
PSovMik7Cit9CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25TdHJl
YW1Qcm9jZXNzKHZvaWQqIGRhdGEpIHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUqIHRoYXQgPSBz
dGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KGRhdGEpOworICBSVENfRENIRUNLKHRo
YXQpOworCisgIHB3X2J1ZmZlciogYnVmID0gbnVsbHB0cjsKKworICBpZiAoIShidWYgPSBwd19z
dHJlYW1fZGVxdWV1ZV9idWZmZXIodGhhdC0+cHdfc3RyZWFtXykpKSB7CisgICAgcmV0dXJuOwor
ICB9CisKKyAgdGhhdC0+SGFuZGxlQnVmZmVyKGJ1Zik7CisKKyAgcHdfc3RyZWFtX3F1ZXVlX2J1
ZmZlcih0aGF0LT5wd19zdHJlYW1fLCBidWYpOworfQorCitCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6
QmFzZUNhcHR1cmVyUGlwZVdpcmUoQ2FwdHVyZVNvdXJjZVR5cGUgc291cmNlX3R5cGUpCisgICAg
OiBjYXB0dXJlX3NvdXJjZV90eXBlXyhzb3VyY2VfdHlwZSkge30KKworQmFzZUNhcHR1cmVyUGlw
ZVdpcmU6On5CYXNlQ2FwdHVyZXJQaXBlV2lyZSgpIHsKKyAgaWYgKHB3X21haW5fbG9vcF8pIHsK
KyAgICBwd190aHJlYWRfbG9vcF9zdG9wKHB3X21haW5fbG9vcF8pOworICB9CisKKyAgaWYgKHB3
X3R5cGVfKSB7CisgICAgZGVsZXRlIHB3X3R5cGVfOworICB9CisKKyAgaWYgKHNwYV92aWRlb19m
b3JtYXRfKSB7CisgICAgZGVsZXRlIHNwYV92aWRlb19mb3JtYXRfOworICB9CisKKyAgaWYgKHB3
X3N0cmVhbV8pIHsKKyAgICBwd19zdHJlYW1fZGVzdHJveShwd19zdHJlYW1fKTsKKyAgfQorCisg
IGlmIChwd19yZW1vdGVfKSB7CisgICAgcHdfcmVtb3RlX2Rlc3Ryb3kocHdfcmVtb3RlXyk7Cisg
IH0KKworICBpZiAocHdfY29yZV8pIHsKKyAgICBwd19jb3JlX2Rlc3Ryb3kocHdfY29yZV8pOwor
ICB9CisKKyAgaWYgKHB3X21haW5fbG9vcF8pIHsKKyAgICBwd190aHJlYWRfbG9vcF9kZXN0cm95
KHB3X21haW5fbG9vcF8pOworICB9CisKKyAgaWYgKHB3X2xvb3BfKSB7CisgICAgcHdfbG9vcF9k
ZXN0cm95KHB3X2xvb3BfKTsKKyAgfQorCisgIGlmIChjdXJyZW50X2ZyYW1lXykgeworICAgIGZy
ZWUoY3VycmVudF9mcmFtZV8pOworICB9CisKKyAgaWYgKHN0YXJ0X3JlcXVlc3Rfc2lnbmFsX2lk
XykgeworICAgIGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF91bnN1YnNjcmliZShjb25uZWN0aW9u
Xywgc3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAgfQorICBpZiAoc291cmNlc19yZXF1ZXN0
X3NpZ25hbF9pZF8pIHsKKyAgICBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfdW5zdWJzY3JpYmUo
Y29ubmVjdGlvbl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNv
dXJjZXNfcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAgfQorICBpZiAoc2Vzc2lvbl9yZXF1ZXN0X3Np
Z25hbF9pZF8pIHsKKyAgICBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfdW5zdWJzY3JpYmUoY29u
bmVjdGlvbl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Np
b25fcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAgfQorCisgIGlmIChzZXNzaW9uX2hhbmRsZV8pIHsK
KyAgICBHREJ1c01lc3NhZ2UqIG1lc3NhZ2UgPSBnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Nh
bGwoCisgICAgICAgIGtEZXNrdG9wQnVzTmFtZSwgc2Vzc2lvbl9oYW5kbGVfLCBrU2Vzc2lvbklu
dGVyZmFjZU5hbWUsICJDbG9zZSIpOworICAgIGlmIChtZXNzYWdlKSB7CisgICAgICBHRXJyb3Iq
IGVycm9yID0gbnVsbHB0cjsKKyAgICAgIGdfZGJ1c19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShj
b25uZWN0aW9uXywgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHX0RCVVNfU0VORF9NRVNTQUdFX0ZMQUdTX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLypvdXRfc2VyaWFsPSovbnVsbHB0ciwgJmVycm9yKTsKKyAgICAgIGlm
IChlcnJvcikgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGNsb3Nl
IHRoZSBzZXNzaW9uOiAiIDw8IGVycm9yLT5tZXNzYWdlOworICAgICAgICBnX2Vycm9yX2ZyZWUo
ZXJyb3IpOworICAgICAgfQorICAgICAgZ19vYmplY3RfdW5yZWYobWVzc2FnZSk7CisgICAgfQor
ICB9CisKKyAgZ19mcmVlKHN0YXJ0X2hhbmRsZV8pOworICBnX2ZyZWUoc291cmNlc19oYW5kbGVf
KTsKKyAgZ19mcmVlKHNlc3Npb25faGFuZGxlXyk7CisgIGdfZnJlZShwb3J0YWxfaGFuZGxlXyk7
CisKKyAgaWYgKHByb3h5XykgeworICAgIGdfY2xlYXJfb2JqZWN0KCZwcm94eV8pOworICB9Cit9
CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkluaXRQb3J0YWwoKSB7CisgIGdfZGJ1c19w
cm94eV9uZXdfZm9yX2J1cygKKyAgICAgIEdfQlVTX1RZUEVfU0VTU0lPTiwgR19EQlVTX1BST1hZ
X0ZMQUdTX05PTkUsIC8qaW5mbz0qL251bGxwdHIsCisgICAgICBrRGVza3RvcEJ1c05hbWUsIGtE
ZXNrdG9wT2JqZWN0UGF0aCwga1NjcmVlbkNhc3RJbnRlcmZhY2VOYW1lLAorICAgICAgLypjYW5j
ZWxsYWJsZT0qL251bGxwdHIsCisgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2Fs
bGJhY2s+KE9uUHJveHlSZXF1ZXN0ZWQpLCB0aGlzKTsKK30KKwordm9pZCBCYXNlQ2FwdHVyZXJQ
aXBlV2lyZTo6SW5pdFBpcGVXaXJlKCkgeworICBwd19pbml0KC8qYXJnYz0qL251bGxwdHIsIC8q
YXJnYz0qL251bGxwdHIpOworCisgIHB3X2xvb3BfID0gcHdfbG9vcF9uZXcoLypwcm9wZXJ0aWVz
PSovbnVsbHB0cik7CisgIHB3X21haW5fbG9vcF8gPSBwd190aHJlYWRfbG9vcF9uZXcocHdfbG9v
cF8sICJwaXBld2lyZS1tYWluLWxvb3AiKTsKKworICBwd19jb3JlXyA9IHB3X2NvcmVfbmV3KHB3
X2xvb3BfLCAvKnByb3BlcnRpZXM9Ki9udWxscHRyKTsKKyAgcHdfY29yZV90eXBlXyA9IHB3X2Nv
cmVfZ2V0X3R5cGUocHdfY29yZV8pOworICBwd19yZW1vdGVfID0gcHdfcmVtb3RlX25ldyhwd19j
b3JlXywgbnVsbHB0ciwgLyp1c2VyX2RhdGFfc2l6ZT0qLzApOworCisgIEluaXRQaXBlV2lyZVR5
cGVzKCk7CisKKyAgLy8gSW5pdGlhbGl6ZSBldmVudCBoYW5kbGVycywgcmVtb3RlIGVuZCBhbmQg
c3RyZWFtLXJlbGF0ZWQuCisgIHB3X3JlbW90ZV9ldmVudHNfLnZlcnNpb24gPSBQV19WRVJTSU9O
X1JFTU9URV9FVkVOVFM7CisgIHB3X3JlbW90ZV9ldmVudHNfLnN0YXRlX2NoYW5nZWQgPSAmT25T
dGF0ZUNoYW5nZWQ7CisKKyAgcHdfc3RyZWFtX2V2ZW50c18udmVyc2lvbiA9IFBXX1ZFUlNJT05f
U1RSRUFNX0VWRU5UUzsKKyAgcHdfc3RyZWFtX2V2ZW50c18uc3RhdGVfY2hhbmdlZCA9ICZPblN0
cmVhbVN0YXRlQ2hhbmdlZDsKKyAgcHdfc3RyZWFtX2V2ZW50c18uZm9ybWF0X2NoYW5nZWQgPSAm
T25TdHJlYW1Gb3JtYXRDaGFuZ2VkOworICBwd19zdHJlYW1fZXZlbnRzXy5wcm9jZXNzID0gJk9u
U3RyZWFtUHJvY2VzczsKKworICBwd19yZW1vdGVfYWRkX2xpc3RlbmVyKHB3X3JlbW90ZV8sICZz
cGFfcmVtb3RlX2xpc3RlbmVyXywgJnB3X3JlbW90ZV9ldmVudHNfLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMpOworICBwd19yZW1vdGVfY29ubmVjdF9mZChwd19yZW1vdGVfLCBwd19m
ZF8pOworCisgIGlmIChwd190aHJlYWRfbG9vcF9zdGFydChwd19tYWluX2xvb3BfKSA8IDApIHsK
KyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHN0YXJ0IG1haW4gUGlwZVdpcmUg
bG9vcCI7CisgICAgcG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgIH0KK30KKwordm9pZCBC
YXNlQ2FwdHVyZXJQaXBlV2lyZTo6SW5pdFBpcGVXaXJlVHlwZXMoKSB7CisgIHNwYV90eXBlX21h
cCogbWFwID0gcHdfY29yZV90eXBlXy0+bWFwOworICBwd190eXBlXyA9IG5ldyBQaXBlV2lyZVR5
cGUoKTsKKworICBzcGFfdHlwZV9tZWRpYV90eXBlX21hcChtYXAsICZwd190eXBlXy0+bWVkaWFf
dHlwZSk7CisgIHNwYV90eXBlX21lZGlhX3N1YnR5cGVfbWFwKG1hcCwgJnB3X3R5cGVfLT5tZWRp
YV9zdWJ0eXBlKTsKKyAgc3BhX3R5cGVfZm9ybWF0X3ZpZGVvX21hcChtYXAsICZwd190eXBlXy0+
Zm9ybWF0X3ZpZGVvKTsKKyAgc3BhX3R5cGVfdmlkZW9fZm9ybWF0X21hcChtYXAsICZwd190eXBl
Xy0+dmlkZW9fZm9ybWF0KTsKK30KKwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6Q3JlYXRl
UmVjZWl2aW5nU3RyZWFtKCkgeworICBzcGFfcmVjdGFuZ2xlIHB3TWluU2NyZWVuQm91bmRzID0g
c3BhX3JlY3RhbmdsZXsxLCAxfTsKKyAgc3BhX3JlY3RhbmdsZSBwd1NjcmVlbkJvdW5kcyA9Cisg
ICAgICBzcGFfcmVjdGFuZ2xle3N0YXRpY19jYXN0PHVpbnQzMl90PihkZXNrdG9wX3NpemVfLndp
ZHRoKCkpLAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGVza3Rv
cF9zaXplXy5oZWlnaHQoKSl9OworCisgIHNwYV9mcmFjdGlvbiBwd0ZyYW1lUmF0ZU1pbiA9IHNw
YV9mcmFjdGlvbnswLCAxfTsKKyAgc3BhX2ZyYWN0aW9uIHB3RnJhbWVSYXRlTWF4ID0gc3BhX2Zy
YWN0aW9uezYwLCAxfTsKKworICBwd19wcm9wZXJ0aWVzKiByZXVzZVByb3BzID0gcHdfcHJvcGVy
dGllc19uZXcoInBpcGV3aXJlLmNsaWVudC5yZXVzZSIsICIxIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZW5kIG9mIHZhcmFyZ3MqLyBudWxscHRy
KTsKKyAgcHdfc3RyZWFtXyA9IHB3X3N0cmVhbV9uZXcocHdfcmVtb3RlXywgIndlYnJ0Yy1jb25z
dW1lLXN0cmVhbSIsIHJldXNlUHJvcHMpOworCisgIHVpbnQ4X3QgYnVmZmVyWzEwMjRdID0ge307
CisgIGNvbnN0IHNwYV9wb2QqIHBhcmFtc1sxXTsKKyAgc3BhX3BvZF9idWlsZGVyIGJ1aWxkZXIg
PSBzcGFfcG9kX2J1aWxkZXJ7YnVmZmVyLCBzaXplb2YoYnVmZmVyKX07CisgIHBhcmFtc1swXSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8c3BhX3BvZCo+KHNwYV9wb2RfYnVpbGRlcl9vYmplY3QoCisgICAg
ICAmYnVpbGRlciwKKyAgICAgIC8vIGlkIHRvIGVudW1lcmF0ZSBmb3JtYXRzCisgICAgICBwd19j
b3JlX3R5cGVfLT5wYXJhbS5pZEVudW1Gb3JtYXQsIHB3X2NvcmVfdHlwZV8tPnNwYV9mb3JtYXQs
ICJJIiwKKyAgICAgIHB3X3R5cGVfLT5tZWRpYV90eXBlLnZpZGVvLCAiSSIsIHB3X3R5cGVfLT5t
ZWRpYV9zdWJ0eXBlLnJhdywKKyAgICAgIC8vIFZpZGVvIGZvcm1hdDogc3BlY2lmaWVkIGFzIGlk
IG9yIGVudW0gKEkpLCBwcmVmZXJyZWQgZm9ybWF0IGlzIEJHUngsCisgICAgICAvLyB0aGVuIGFs
bG93ZWQgZm9ybWF0cyBhcmUgZW51bWVyYXRlZCAoZSkgYW5kIHRoZSBmb3JtYXQgaXMgdW5kZWNp
ZGVkICh1KQorICAgICAgLy8gdG8gYWxsb3cgbmVnb3RpYXRpb24KKyAgICAgICI6IiwgcHdfdHlw
ZV8tPmZvcm1hdF92aWRlby5mb3JtYXQsICJJZXUiLCBwd190eXBlXy0+dmlkZW9fZm9ybWF0LkJH
UngsCisgICAgICBTUEFfUE9EX1BST1BfRU5VTSgyLCBwd190eXBlXy0+dmlkZW9fZm9ybWF0LlJH
QngsCisgICAgICAgICAgICAgICAgICAgICAgICBwd190eXBlXy0+dmlkZW9fZm9ybWF0LkJHUngp
LAorICAgICAgLy8gVmlkZW8gc2l6ZTogc3BlY2lmaWVkIGFzIHJlY3RhbmdsZSAoUiksIHByZWZl
cnJlZCBzaXplIGlzIHNwZWNpZmllZCBhcworICAgICAgLy8gZmlyc3QgcGFyYW1ldGVyLCB0aGVu
IGFsbG93ZWQgc2l6ZSBpcyBkZWZpbmVkIGFzIHJhbmdlIChyKSBmcm9tIG1pbiBhbmQKKyAgICAg
IC8vIG1heCB2YWx1ZXMgYW5kIHRoZSBmb3JtYXQgaXMgdW5kZWNpZGVkICh1KSB0byBhbGxvdyBu
ZWdvdGlhdGlvbgorICAgICAgIjoiLCBwd190eXBlXy0+Zm9ybWF0X3ZpZGVvLnNpemUsICJScnUi
LCAmcHdTY3JlZW5Cb3VuZHMsIDIsCisgICAgICAmcHdNaW5TY3JlZW5Cb3VuZHMsICZwd1NjcmVl
bkJvdW5kcywKKyAgICAgIC8vIEZyYW1lIHJhdGU6IHNwZWNpZmllZCBhcyBmcmFjdGlvbiAoRikg
YW5kIHNldCB0byBtaW5pbXVtIGZyYW1lIHJhdGUKKyAgICAgIC8vIHZhbHVlCisgICAgICAiOiIs
IHB3X3R5cGVfLT5mb3JtYXRfdmlkZW8uZnJhbWVyYXRlLCAiRiIsICZwd0ZyYW1lUmF0ZU1pbiwK
KyAgICAgIC8vIE1heCBmcmFtZSByYXRlOiBzcGVjaWZpZWQgYXMgZnJhY3Rpb24gKEYpLCBwcmVm
ZXJyZWQgZnJhbWUgcmF0ZSBpcyBzZXQKKyAgICAgIC8vIHRvIG1heGltdW0gdmFsdWUsIHRoZW4g
YWxsb3dlZCBmcmFtZSByYXRlIGlzIGRlZmluZWQgYXMgcmFuZ2UgKHIpIGZyb20KKyAgICAgIC8v
IG1pbiBhbmQgbWF4IHZhbHVlcyBhbmQgaXQgaXMgdW5kZWNpZGVkICh1KSB0byBhbGxvdyBuZWdv
dGlhdGlvbgorICAgICAgIjoiLCBwd190eXBlXy0+Zm9ybWF0X3ZpZGVvLm1heF9mcmFtZXJhdGUs
ICJGcnUiLCAmcHdGcmFtZVJhdGVNYXgsIDIsCisgICAgICAmcHdGcmFtZVJhdGVNaW4sICZwd0Zy
YW1lUmF0ZU1heCkpOworCisgIHB3X3N0cmVhbV9hZGRfbGlzdGVuZXIocHdfc3RyZWFtXywgJnNw
YV9zdHJlYW1fbGlzdGVuZXJfLCAmcHdfc3RyZWFtX2V2ZW50c18sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcyk7CisgIHB3X3N0cmVhbV9mbGFncyBmbGFncyA9IHN0YXRpY19jYXN0PHB3
X3N0cmVhbV9mbGFncz4oCisgICAgICBQV19TVFJFQU1fRkxBR19BVVRPQ09OTkVDVCB8IFBXX1NU
UkVBTV9GTEFHX0lOQUNUSVZFIHwKKyAgICAgIFBXX1NUUkVBTV9GTEFHX01BUF9CVUZGRVJTKTsK
KyAgaWYgKHB3X3N0cmVhbV9jb25uZWN0KHB3X3N0cmVhbV8sIFBXX0RJUkVDVElPTl9JTlBVVCwg
Lypwb3J0X3BhdGg9Ki9udWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MsIHBh
cmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qbl9wYXJhbXM9Ki8xKSAhPSAwKSB7Cisg
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNvdWxkIG5vdCBjb25uZWN0IHJlY2VpdmluZyBzdHJl
YW0uIjsKKyAgICBwb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0K
K30KKwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6SGFuZGxlQnVmZmVyKHB3X2J1ZmZlciog
YnVmZmVyKSB7CisgIHNwYV9idWZmZXIqIHNwYUJ1ZmZlciA9IGJ1ZmZlci0+YnVmZmVyOworICB2
b2lkKiBzcmMgPSBudWxscHRyOworCisgIGlmICghKHNyYyA9IHNwYUJ1ZmZlci0+ZGF0YXNbMF0u
ZGF0YSkpIHsKKyAgICByZXR1cm47CisgIH0KKworICB1aW50MzJfdCBtYXhTaXplID0gc3BhQnVm
ZmVyLT5kYXRhc1swXS5tYXhzaXplOworICBpbnQzMl90IHNyY1N0cmlkZSA9IHNwYUJ1ZmZlci0+
ZGF0YXNbMF0uY2h1bmstPnN0cmlkZTsKKyAgaWYgKHNyY1N0cmlkZSAhPSAoZGVza3RvcF9zaXpl
Xy53aWR0aCgpICoga0J5dGVzUGVyUGl4ZWwpKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IkdvdCBidWZmZXIgd2l0aCBzdHJpZGUgZGlmZmVyZW50IGZyb20gc2NyZWVuIHN0cmlkZTogIgor
ICAgICAgICAgICAgICAgICAgICAgIDw8IHNyY1N0cmlkZQorICAgICAgICAgICAgICAgICAgICAg
IDw8ICIgIT0gIiA8PCAoZGVza3RvcF9zaXplXy53aWR0aCgpICoga0J5dGVzUGVyUGl4ZWwpOwor
ICAgIHBvcnRhbF9pbml0X2ZhaWxlZF8gPSB0cnVlOworICAgIHJldHVybjsKKyAgfQorCisgIGlm
ICghY3VycmVudF9mcmFtZV8pIHsKKyAgICBjdXJyZW50X2ZyYW1lXyA9IHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihtYWxsb2MobWF4U2l6ZSkpOworICB9CisgIFJUQ19EQ0hFQ0soY3VycmVudF9mcmFt
ZV8gIT0gbnVsbHB0cik7CisKKyAgLy8gSWYgYm90aCBzaWRlcyBkZWNpZGVkIHRvIGdvIHdpdGgg
dGhlIFJHQnggZm9ybWF0IHdlIG5lZWQgdG8gY29udmVydCBpdCB0bworICAvLyBCR1J4IHRvIG1h
dGNoIGNvbG9yIGZvcm1hdCBleHBlY3RlZCBieSBXZWJSVEMuCisgIGlmIChzcGFfdmlkZW9fZm9y
bWF0Xy0+Zm9ybWF0ID09IHB3X3R5cGVfLT52aWRlb19mb3JtYXQuUkdCeCkgeworICAgIHVpbnQ4
X3QqIHRlbXBGcmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYWxsb2MobWF4U2l6ZSkpOwor
ICAgIHN0ZDo6bWVtY3B5KHRlbXBGcmFtZSwgc3JjLCBtYXhTaXplKTsKKyAgICBDb252ZXJ0UkdC
eFRvQkdSeCh0ZW1wRnJhbWUsIG1heFNpemUpOworICAgIHN0ZDo6bWVtY3B5KGN1cnJlbnRfZnJh
bWVfLCB0ZW1wRnJhbWUsIG1heFNpemUpOworICAgIGZyZWUodGVtcEZyYW1lKTsKKyAgfSBlbHNl
IHsKKyAgICBzdGQ6Om1lbWNweShjdXJyZW50X2ZyYW1lXywgc3JjLCBtYXhTaXplKTsKKyAgfQor
fQorCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDb252ZXJ0UkdCeFRvQkdSeCh1aW50OF90
KiBmcmFtZSwgdWludDMyX3Qgc2l6ZSkgeworICAvLyBDaGFuZ2UgY29sb3IgZm9ybWF0IGZvciBL
REUgS1dpbiB3aGljaCB1c2VzIFJHQnggYW5kIG5vdCBCR1J4CisgIGZvciAodWludDMyX3QgaSA9
IDA7IGkgPCBzaXplOyBpICs9IDQpIHsKKyAgICB1aW50OF90IHRlbXBSID0gZnJhbWVbaV07Cisg
ICAgdWludDhfdCB0ZW1wQiA9IGZyYW1lW2kgKyAyXTsKKyAgICBmcmFtZVtpXSA9IHRlbXBCOwor
ICAgIGZyYW1lW2kgKyAyXSA9IHRlbXBSOworICB9Cit9CisKK2d1aW50IEJhc2VDYXB0dXJlclBp
cGVXaXJlOjpTZXR1cFJlcXVlc3RSZXNwb25zZVNpZ25hbCgKKyAgICBjb25zdCBnY2hhciogb2Jq
ZWN0X3BhdGgsCisgICAgR0RCdXNTaWduYWxDYWxsYmFjayBjYWxsYmFjaykgeworICByZXR1cm4g
Z19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3N1YnNjcmliZSgKKyAgICAgIGNvbm5lY3Rpb25fLCBr
RGVza3RvcEJ1c05hbWUsIGtSZXF1ZXN0SW50ZXJmYWNlTmFtZSwgIlJlc3BvbnNlIiwKKyAgICAg
IG9iamVjdF9wYXRoLCAvKmFyZzA9Ki9udWxscHRyLCBHX0RCVVNfU0lHTkFMX0ZMQUdTX05PX01B
VENIX1JVTEUsCisgICAgICBjYWxsYmFjaywgdGhpcywgLyp1c2VyX2RhdGFfZnJlZV9mdW5jPSov
bnVsbHB0cik7Cit9CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25Q
cm94eVJlcXVlc3RlZChHT2JqZWN0KiAvKm9iamVjdCovLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQqIHJlc3VsdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKSB7Cisg
IEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlw
ZVdpcmUqPih1c2VyX2RhdGEpOworICBSVENfRENIRUNLKHRoYXQpOworCisgIEdFcnJvciogZXJy
b3IgPSBudWxscHRyOworICB0aGF0LT5wcm94eV8gPSBnX2RidXNfcHJveHlfbmV3X2ZpbmlzaChy
ZXN1bHQsICZlcnJvcik7CisgIGlmICghdGhhdC0+cHJveHlfKSB7CisgICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIkZhaWxlZCB0byBjcmVhdGUgYSBwcm94eSBmb3IgdGhlIHNjcmVlbiBjYXN0IHBv
cnRhbDogIgorICAgICAgICAgICAgICAgICAgICAgIDw8IGVycm9yLT5tZXNzYWdlOworICAgIGdf
ZXJyb3JfZnJlZShlcnJvcik7CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7
CisgICAgcmV0dXJuOworICB9CisgIHRoYXQtPmNvbm5lY3Rpb25fID0gZ19kYnVzX3Byb3h5X2dl
dF9jb25uZWN0aW9uKHRoYXQtPnByb3h5Xyk7CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQ3Jl
YXRlZCBwcm94eSBmb3IgdGhlIHNjcmVlbiBjYXN0IHBvcnRhbC4iOworICB0aGF0LT5TZXNzaW9u
UmVxdWVzdCgpOworfQorCisvLyBzdGF0aWMKK2djaGFyKiBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6
UHJlcGFyZVNpZ25hbEhhbmRsZShHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIHRv
a2VuKSB7CisgIGdjaGFyKiBzZW5kZXIgPSBnX3N0cmR1cChnX2RidXNfY29ubmVjdGlvbl9nZXRf
dW5pcXVlX25hbWUoY29ubmVjdGlvbikgKyAxKTsKKyAgZm9yIChpbnQgaSA9IDA7IHNlbmRlcltp
XTsgaSsrKSB7CisgICAgaWYgKHNlbmRlcltpXSA9PSAnLicpIHsKKyAgICAgIHNlbmRlcltpXSA9
ICdfJzsKKyAgICB9CisgIH0KKworICBnY2hhciogaGFuZGxlID0gZ19zdHJjb25jYXQoa0Rlc2t0
b3BSZXF1ZXN0T2JqZWN0UGF0aCwgIi8iLCBzZW5kZXIsICIvIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRva2VuLCAvKmVuZCBvZiB2YXJhcmdzKi8gbnVsbHB0cik7CisgIGdfZnJl
ZShzZW5kZXIpOworCisgIHJldHVybiBoYW5kbGU7Cit9CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlw
ZVdpcmU6OlNlc3Npb25SZXF1ZXN0KCkgeworICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKKyAg
Z2NoYXIqIHZhcmlhbnRfc3RyaW5nOworCisgIGdfdmFyaWFudF9idWlsZGVyX2luaXQoJmJ1aWxk
ZXIsIEdfVkFSSUFOVF9UWVBFX1ZBUkRJQ1QpOworICB2YXJpYW50X3N0cmluZyA9CisgICAgICBn
X3N0cmR1cF9wcmludGYoIndlYnJ0Y19zZXNzaW9uJWQiLCBnX3JhbmRvbV9pbnRfcmFuZ2UoMCwg
R19NQVhJTlQpKTsKKyAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJz
ZXNzaW9uX2hhbmRsZV90b2tlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRf
bmV3X3N0cmluZyh2YXJpYW50X3N0cmluZykpOworICBnX2ZyZWUodmFyaWFudF9zdHJpbmcpOwor
ICB2YXJpYW50X3N0cmluZyA9IGdfc3RyZHVwX3ByaW50Zigid2VicnRjJWQiLCBnX3JhbmRvbV9p
bnRfcmFuZ2UoMCwgR19NQVhJTlQpKTsKKyAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVy
LCAie3N2fSIsICJoYW5kbGVfdG9rZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJp
YW50X25ld19zdHJpbmcodmFyaWFudF9zdHJpbmcpKTsKKworICBwb3J0YWxfaGFuZGxlXyA9IFBy
ZXBhcmVTaWduYWxIYW5kbGUoY29ubmVjdGlvbl8sIHZhcmlhbnRfc3RyaW5nKTsKKyAgc2Vzc2lv
bl9yZXF1ZXN0X3NpZ25hbF9pZF8gPSBTZXR1cFJlcXVlc3RSZXNwb25zZVNpZ25hbCgKKyAgICAg
IHBvcnRhbF9oYW5kbGVfLCBPblNlc3Npb25SZXF1ZXN0UmVzcG9uc2VTaWduYWwpOworICBnX2Zy
ZWUodmFyaWFudF9zdHJpbmcpOworCisgIFJUQ19MT0coTFNfSU5GTykgPDwgIlNjcmVlbiBjYXN0
IHNlc3Npb24gcmVxdWVzdGVkLiI7CisgIGdfZGJ1c19wcm94eV9jYWxsKAorICAgICAgcHJveHlf
LCAiQ3JlYXRlU2Vzc2lvbiIsIGdfdmFyaWFudF9uZXcoIihhe3N2fSkiLCAmYnVpbGRlciksCisg
ICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLCAvKnRpbWVvdXQ9Ki8tMSwgLypjYW5jZWxsYWJs
ZT0qL251bGxwdHIsCisgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+
KE9uU2Vzc2lvblJlcXVlc3RlZCksIHRoaXMpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFzZUNh
cHR1cmVyUGlwZVdpcmU6Ok9uU2Vzc2lvblJlcXVlc3RlZChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0
aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPih1c2VyX2RhdGEpOworICBS
VENfRENIRUNLKHRoYXQpOworCisgIEdFcnJvciogZXJyb3IgPSBudWxscHRyOworICBHVmFyaWFu
dCogdmFyaWFudCA9IGdfZGJ1c19wcm94eV9jYWxsX2ZpbmlzaCh0aGF0LT5wcm94eV8sIHJlc3Vs
dCwgJmVycm9yKTsKKyAgaWYgKCF2YXJpYW50KSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IkZhaWxlZCB0byBjcmVhdGUgYSBzY3JlZW4gY2FzdCBzZXNzaW9uOiAiCisgICAgICAgICAgICAg
ICAgICAgICAgPDwgZXJyb3ItPm1lc3NhZ2U7CisgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAg
ICB0aGF0LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKyAg
UlRDX0xPRyhMU19JTkZPKSA8PCAiSW5pdGlhbGl6aW5nIHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9u
LiI7CisKKyAgZ2NoYXIqIGhhbmRsZSA9IG51bGxwdHI7CisgIGdfdmFyaWFudF9nZXRfY2hpbGQo
dmFyaWFudCwgMCwgIm8iLCAmaGFuZGxlKTsKKyAgZ192YXJpYW50X3VucmVmKHZhcmlhbnQpOwor
ICBpZiAoIWhhbmRsZSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gaW5p
dGlhbGl6ZSB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworICAgIGlmICh0aGF0LT5zZXNzaW9u
X3JlcXVlc3Rfc2lnbmFsX2lkXykgeworICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3Vu
c3Vic2NyaWJlKGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhhdC0+c2Vzc2lvbl9yZXF1ZXN0X3NpZ25hbF9pZF8pOworICAgICAgdGhhdC0+
c2Vzc2lvbl9yZXF1ZXN0X3NpZ25hbF9pZF8gPSAwOworICAgIH0KKyAgICB0aGF0LT5wb3J0YWxf
aW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKworICBnX2ZyZWUoaGFuZGxl
KTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJTdWJzY3JpYmluZyB0byB0aGUgc2NyZWVuIGNh
c3Qgc2Vzc2lvbi4iOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6
Ok9uU2Vzc2lvblJlcXVlc3RSZXNwb25zZVNpZ25hbCgKKyAgICBHREJ1c0Nvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sCisgICAgY29uc3QgZ2NoYXIqIHNlbmRlcl9uYW1lLAorICAgIGNvbnN0IGdjaGFy
KiBvYmplY3RfcGF0aCwKKyAgICBjb25zdCBnY2hhciogaW50ZXJmYWNlX25hbWUsCisgICAgY29u
c3QgZ2NoYXIqIHNpZ25hbF9uYW1lLAorICAgIEdWYXJpYW50KiBwYXJhbWV0ZXJzLAorICAgIGdw
b2ludGVyIHVzZXJfZGF0YSkgeworICBCYXNlQ2FwdHVyZXJQaXBlV2lyZSogdGhhdCA9IHN0YXRp
Y19jYXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4odXNlcl9kYXRhKTsKKyAgUlRDX0RDSEVDSyh0
aGF0KTsKKworICBSVENfTE9HKExTX0lORk8pCisgICAgICA8PCAiUmVjZWl2ZWQgcmVzcG9uc2Ug
Zm9yIHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9uIHN1YnNjcmlwdGlvbi4iOworCisgIGd1aW50MzIg
cG9ydGFsX3Jlc3BvbnNlOworICBHVmFyaWFudCogcmVzcG9uc2VfZGF0YTsKKyAgZ192YXJpYW50
X2dldChwYXJhbWV0ZXJzLCAiKHVAYXtzdn0pIiwgJnBvcnRhbF9yZXNwb25zZSwgJnJlc3BvbnNl
X2RhdGEpOworICBnX3ZhcmlhbnRfbG9va3VwKHJlc3BvbnNlX2RhdGEsICJzZXNzaW9uX2hhbmRs
ZSIsICJzIiwKKyAgICAgICAgICAgICAgICAgICAmdGhhdC0+c2Vzc2lvbl9oYW5kbGVfKTsKKyAg
Z192YXJpYW50X3VucmVmKHJlc3BvbnNlX2RhdGEpOworCisgIGlmICghdGhhdC0+c2Vzc2lvbl9o
YW5kbGVfIHx8IHBvcnRhbF9yZXNwb25zZSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpCisgICAg
ICAgIDw8ICJGYWlsZWQgdG8gcmVxdWVzdCB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbiBzdWJzY3Jp
cHRpb24uIjsKKyAgICB0aGF0LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1
cm47CisgIH0KKworICB0aGF0LT5Tb3VyY2VzUmVxdWVzdCgpOworfQorCit2b2lkIEJhc2VDYXB0
dXJlclBpcGVXaXJlOjpTb3VyY2VzUmVxdWVzdCgpIHsKKyAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxk
ZXI7CisgIGdjaGFyKiB2YXJpYW50X3N0cmluZzsKKworICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0
KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgLy8gV2Ugd2FudCB0byByZWNv
cmQgbW9uaXRvciBjb250ZW50LgorICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7
c3Z9IiwgInR5cGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXdfdWlu
dDMyKGNhcHR1cmVfc291cmNlX3R5cGVfKSk7CisgIC8vIFdlIGRvbid0IHdhbnQgdG8gYWxsb3cg
c2VsZWN0aW9uIG9mIG11bHRpcGxlIHNvdXJjZXMuCisgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgm
YnVpbGRlciwgIntzdn0iLCAibXVsdGlwbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgZ192
YXJpYW50X25ld19ib29sZWFuKGZhbHNlKSk7CisgIHZhcmlhbnRfc3RyaW5nID0gZ19zdHJkdXBf
cHJpbnRmKCJ3ZWJydGMlZCIsIGdfcmFuZG9tX2ludF9yYW5nZSgwLCBHX01BWElOVCkpOworICBn
X3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgImhhbmRsZV90b2tlbiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3X3N0cmluZyh2YXJpYW50X3N0cmlu
ZykpOworCisgIHNvdXJjZXNfaGFuZGxlXyA9IFByZXBhcmVTaWduYWxIYW5kbGUoY29ubmVjdGlv
bl8sIHZhcmlhbnRfc3RyaW5nKTsKKyAgc291cmNlc19yZXF1ZXN0X3NpZ25hbF9pZF8gPSBTZXR1
cFJlcXVlc3RSZXNwb25zZVNpZ25hbCgKKyAgICAgIHNvdXJjZXNfaGFuZGxlXywgT25Tb3VyY2Vz
UmVxdWVzdFJlc3BvbnNlU2lnbmFsKTsKKyAgZ19mcmVlKHZhcmlhbnRfc3RyaW5nKTsKKworICBS
VENfTE9HKExTX0lORk8pIDw8ICJSZXF1ZXN0aW5nIHNvdXJjZXMgZnJvbSB0aGUgc2NyZWVuIGNh
c3Qgc2Vzc2lvbi4iOworICBnX2RidXNfcHJveHlfY2FsbCgKKyAgICAgIHByb3h5XywgIlNlbGVj
dFNvdXJjZXMiLAorICAgICAgZ192YXJpYW50X25ldygiKG9he3N2fSkiLCBzZXNzaW9uX2hhbmRs
ZV8sICZidWlsZGVyKSwKKyAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIC8qdGltZW91dD0q
Ly0xLCAvKmNhbmNlbGxhYmxlPSovbnVsbHB0ciwKKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0Fz
eW5jUmVhZHlDYWxsYmFjaz4oT25Tb3VyY2VzUmVxdWVzdGVkKSwgdGhpcyk7Cit9CisKKy8vIHN0
YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25Tb3VyY2VzUmVxdWVzdGVkKEdEQnVz
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQqIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpIHsKKyAgQmFzZUNh
cHR1cmVyUGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+
KHVzZXJfZGF0YSk7CisgIFJUQ19EQ0hFQ0sodGhhdCk7CisKKyAgR0Vycm9yKiBlcnJvciA9IG51
bGxwdHI7CisgIEdWYXJpYW50KiB2YXJpYW50ID0gZ19kYnVzX3Byb3h5X2NhbGxfZmluaXNoKHRo
YXQtPnByb3h5XywgcmVzdWx0LCAmZXJyb3IpOworICBpZiAoIXZhcmlhbnQpIHsKKyAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHJlcXVlc3QgdGhlIHNvdXJjZXM6ICIgPDwgZXJy
b3ItPm1lc3NhZ2U7CisgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAgICB0aGF0LT5wb3J0YWxf
aW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKworICBSVENfTE9HKExTX0lO
Rk8pIDw8ICJTb3VyY2VzIHJlcXVlc3RlZCBmcm9tIHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9uLiI7
CisKKyAgZ2NoYXIqIGhhbmRsZSA9IG51bGxwdHI7CisgIGdfdmFyaWFudF9nZXRfY2hpbGQodmFy
aWFudCwgMCwgIm8iLCAmaGFuZGxlKTsKKyAgZ192YXJpYW50X3VucmVmKHZhcmlhbnQpOworICBp
ZiAoIWhhbmRsZSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gaW5pdGlh
bGl6ZSB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworICAgIGlmICh0aGF0LT5zb3VyY2VzX3Jl
cXVlc3Rfc2lnbmFsX2lkXykgeworICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3Vuc3Vi
c2NyaWJlKGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhhdC0+c291cmNlc19yZXF1ZXN0X3NpZ25hbF9pZF8pOworICAgICAgdGhhdC0+c291
cmNlc19yZXF1ZXN0X3NpZ25hbF9pZF8gPSAwOworICAgIH0KKyAgICB0aGF0LT5wb3J0YWxfaW5p
dF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKworICBnX2ZyZWUoaGFuZGxlKTsK
KworICBSVENfTE9HKExTX0lORk8pIDw8ICJTdWJzY3JpYmVkIHRvIHNvdXJjZXMgc2lnbmFsLiI7
Cit9CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25Tb3VyY2VzUmVx
dWVzdFJlc3BvbnNlU2lnbmFsKAorICAgIEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwKKyAg
ICBjb25zdCBnY2hhciogc2VuZGVyX25hbWUsCisgICAgY29uc3QgZ2NoYXIqIG9iamVjdF9wYXRo
LAorICAgIGNvbnN0IGdjaGFyKiBpbnRlcmZhY2VfbmFtZSwKKyAgICBjb25zdCBnY2hhciogc2ln
bmFsX25hbWUsCisgICAgR1ZhcmlhbnQqIHBhcmFtZXRlcnMsCisgICAgZ3BvaW50ZXIgdXNlcl9k
YXRhKSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNh
cHR1cmVyUGlwZVdpcmUqPih1c2VyX2RhdGEpOworICBSVENfRENIRUNLKHRoYXQpOworCisgIFJU
Q19MT0coTFNfSU5GTykgPDwgIlJlY2VpdmVkIHNvdXJjZXMgc2lnbmFsIGZyb20gc2Vzc2lvbi4i
OworCisgIGd1aW50MzIgcG9ydGFsX3Jlc3BvbnNlOworICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRl
cnMsICIodUBhe3N2fSkiLCAmcG9ydGFsX3Jlc3BvbnNlLCBudWxscHRyKTsKKyAgaWYgKHBvcnRh
bF9yZXNwb25zZSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpCisgICAgICAgIDw8ICJGYWlsZWQg
dG8gc2VsZWN0IHNvdXJjZXMgZm9yIHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9uLiI7CisgICAgdGhh
dC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9CisKKyAgdGhh
dC0+U3RhcnRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OlN0YXJ0
UmVxdWVzdCgpIHsKKyAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7CisgIGdjaGFyKiB2YXJpYW50
X3N0cmluZzsKKworICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRf
VFlQRV9WQVJESUNUKTsKKyAgdmFyaWFudF9zdHJpbmcgPSBnX3N0cmR1cF9wcmludGYoIndlYnJ0
YyVkIiwgZ19yYW5kb21faW50X3JhbmdlKDAsIEdfTUFYSU5UKSk7CisgIGdfdmFyaWFudF9idWls
ZGVyX2FkZCgmYnVpbGRlciwgIntzdn0iLCAiaGFuZGxlX3Rva2VuIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdfdmFyaWFudF9uZXdfc3RyaW5nKHZhcmlhbnRfc3RyaW5nKSk7CisKKyAgc3Rh
cnRfaGFuZGxlXyA9IFByZXBhcmVTaWduYWxIYW5kbGUoY29ubmVjdGlvbl8sIHZhcmlhbnRfc3Ry
aW5nKTsKKyAgc3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfID0KKyAgICAgIFNldHVwUmVxdWVzdFJl
c3BvbnNlU2lnbmFsKHN0YXJ0X2hhbmRsZV8sIE9uU3RhcnRSZXF1ZXN0UmVzcG9uc2VTaWduYWwp
OworICBnX2ZyZWUodmFyaWFudF9zdHJpbmcpOworCisgIC8vICJJZGVudGlmaWVyIGZvciB0aGUg
YXBwbGljYXRpb24gd2luZG93IiwgdGhpcyBpcyBXYXlsYW5kLCBzbyBub3QgIngxMTouLi4iLgor
ICBjb25zdCBnY2hhciBwYXJlbnRfd2luZG93W10gPSAiIjsKKworICBSVENfTE9HKExTX0lORk8p
IDw8ICJTdGFydGluZyB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworICBnX2RidXNfcHJveHlf
Y2FsbCgKKyAgICAgIHByb3h5XywgIlN0YXJ0IiwKKyAgICAgIGdfdmFyaWFudF9uZXcoIihvc2F7
c3Z9KSIsIHNlc3Npb25faGFuZGxlXywgcGFyZW50X3dpbmRvdywgJmJ1aWxkZXIpLAorICAgICAg
R19EQlVTX0NBTExfRkxBR1NfTk9ORSwgLyp0aW1lb3V0PSovLTEsIC8qY2FuY2VsbGFibGU9Ki9u
dWxscHRyLAorICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihPblN0
YXJ0UmVxdWVzdGVkKSwgdGhpcyk7Cit9CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQ
aXBlV2lyZTo6T25TdGFydFJlcXVlc3RlZChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCog
cmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9p
bnRlciB1c2VyX2RhdGEpIHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNf
Y2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KHVzZXJfZGF0YSk7CisgIFJUQ19EQ0hFQ0sodGhh
dCk7CisKKyAgR0Vycm9yKiBlcnJvciA9IG51bGxwdHI7CisgIEdWYXJpYW50KiB2YXJpYW50ID0g
Z19kYnVzX3Byb3h5X2NhbGxfZmluaXNoKHRoYXQtPnByb3h5XywgcmVzdWx0LCAmZXJyb3IpOwor
ICBpZiAoIXZhcmlhbnQpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHN0
YXJ0IHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9uOiAiCisgICAgICAgICAgICAgICAgICAgICAgPDwg
ZXJyb3ItPm1lc3NhZ2U7CisgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAgICB0aGF0LT5wb3J0
YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKworICBSVENfTE9HKExT
X0lORk8pIDw8ICJJbml0aWFsaXppbmcgdGhlIHN0YXJ0IG9mIHRoZSBzY3JlZW4gY2FzdCBzZXNz
aW9uLiI7CisKKyAgZ2NoYXIqIGhhbmRsZSA9IG51bGxwdHI7CisgIGdfdmFyaWFudF9nZXRfY2hp
bGQodmFyaWFudCwgMCwgIm8iLCAmaGFuZGxlKTsKKyAgZ192YXJpYW50X3VucmVmKHZhcmlhbnQp
OworICBpZiAoIWhhbmRsZSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpCisgICAgICAgIDw8ICJG
YWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc3RhcnQgb2YgdGhlIHNjcmVlbiBjYXN0IHNlc3Npb24u
IjsKKyAgICBpZiAodGhhdC0+c3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfKSB7CisgICAgICBnX2Ri
dXNfY29ubmVjdGlvbl9zaWduYWxfdW5zdWJzY3JpYmUoY29ubmVjdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LT5zdGFydF9yZXF1ZXN0X3NpZ25h
bF9pZF8pOworICAgICAgdGhhdC0+c3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfID0gMDsKKyAgICB9
CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9
CisKKyAgZ19mcmVlKGhhbmRsZSk7CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU3Vic2NyaWJl
ZCB0byB0aGUgc3RhcnQgc2lnbmFsLiI7Cit9CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVy
ZXJQaXBlV2lyZTo6T25TdGFydFJlcXVlc3RSZXNwb25zZVNpZ25hbCgKKyAgICBHREJ1c0Nvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sCisgICAgY29uc3QgZ2NoYXIqIHNlbmRlcl9uYW1lLAorICAgIGNv
bnN0IGdjaGFyKiBvYmplY3RfcGF0aCwKKyAgICBjb25zdCBnY2hhciogaW50ZXJmYWNlX25hbWUs
CisgICAgY29uc3QgZ2NoYXIqIHNpZ25hbF9uYW1lLAorICAgIEdWYXJpYW50KiBwYXJhbWV0ZXJz
LAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkgeworICBCYXNlQ2FwdHVyZXJQaXBlV2lyZSogdGhh
dCA9IHN0YXRpY19jYXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4odXNlcl9kYXRhKTsKKyAgUlRD
X0RDSEVDSyh0aGF0KTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJTdGFydCBzaWduYWwgcmVj
ZWl2ZWQuIjsKKyAgZ3VpbnQzMiBwb3J0YWxfcmVzcG9uc2U7CisgIEdWYXJpYW50KiByZXNwb25z
ZV9kYXRhOworICBHVmFyaWFudEl0ZXIqIGl0ZXIgPSBudWxscHRyOworICBnX3ZhcmlhbnRfZ2V0
KHBhcmFtZXRlcnMsICIodUBhe3N2fSkiLCAmcG9ydGFsX3Jlc3BvbnNlLCAmcmVzcG9uc2VfZGF0
YSk7CisgIGlmIChwb3J0YWxfcmVzcG9uc2UgfHwgIXJlc3BvbnNlX2RhdGEpIHsKKyAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHN0YXJ0IHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9u
LiI7CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOwor
ICB9CisKKyAgLy8gQXJyYXkgb2YgUGlwZVdpcmUgc3RyZWFtcy4gU2VlCisgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS9mbGF0cGFrL3hkZy1kZXNrdG9wLXBvcnRhbC9ibG9iL21hc3Rlci9kYXRhL29y
Zy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuQ2FzdC54bWwKKyAgLy8gZG9jdW1lbnRhdGlvbiBm
b3IgPG1ldGhvZCBuYW1lPSJTdGFydCI+LgorICBpZiAoZ192YXJpYW50X2xvb2t1cChyZXNwb25z
ZV9kYXRhLCAic3RyZWFtcyIsICJhKHVhe3N2fSkiLCAmaXRlcikpIHsKKyAgICBHVmFyaWFudCog
dmFyaWFudDsKKworICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9uZXh0KGl0ZXIsICJAKHVhe3N2
fSkiLCAmdmFyaWFudCkpIHsKKyAgICAgIGd1aW50MzIgc3RyZWFtX2lkOworICAgICAgZ2ludDMy
IHdpZHRoOworICAgICAgZ2ludDMyIGhlaWdodDsKKyAgICAgIEdWYXJpYW50KiBvcHRpb25zOwor
CisgICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQsICIodUBhe3N2fSkiLCAmc3RyZWFtX2lkLCAm
b3B0aW9ucyk7CisgICAgICBSVENfRENIRUNLKG9wdGlvbnMgIT0gbnVsbHB0cik7CisKKyAgICAg
IGdfdmFyaWFudF9sb29rdXAob3B0aW9ucywgInNpemUiLCAiKGlpKSIsICZ3aWR0aCwgJmhlaWdo
dCk7CisKKyAgICAgIHRoYXQtPmRlc2t0b3Bfc2l6ZV8uc2V0KHdpZHRoLCBoZWlnaHQpOworCisg
ICAgICBnX3ZhcmlhbnRfdW5yZWYob3B0aW9ucyk7CisgICAgICBnX3ZhcmlhbnRfdW5yZWYodmFy
aWFudCk7CisgICAgfQorICB9CisgIGdfdmFyaWFudF9pdGVyX2ZyZWUoaXRlcik7CisgIGdfdmFy
aWFudF91bnJlZihyZXNwb25zZV9kYXRhKTsKKworICB0aGF0LT5PcGVuUGlwZVdpcmVSZW1vdGUo
KTsKK30KKwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T3BlblBpcGVXaXJlUmVtb3RlKCkg
eworICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKKyAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgm
YnVpbGRlciwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8
PCAiT3BlbmluZyB0aGUgUGlwZVdpcmUgcmVtb3RlLiI7CisKKyAgZ19kYnVzX3Byb3h5X2NhbGxf
d2l0aF91bml4X2ZkX2xpc3QoCisgICAgICBwcm94eV8sICJPcGVuUGlwZVdpcmVSZW1vdGUiLAor
ICAgICAgZ192YXJpYW50X25ldygiKG9he3N2fSkiLCBzZXNzaW9uX2hhbmRsZV8sICZidWlsZGVy
KSwKKyAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsIC8qdGltZW91dD0qLy0xLCAvKmZkX2xp
c3Q9Ki9udWxscHRyLAorICAgICAgLypjYW5jZWxsYWJsZT0qL251bGxwdHIsCisgICAgICByZWlu
dGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KE9uT3BlblBpcGVXaXJlUmVtb3RlUmVx
dWVzdGVkKSwKKyAgICAgIHRoaXMpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFzZUNhcHR1cmVy
UGlwZVdpcmU6Ok9uT3BlblBpcGVXaXJlUmVtb3RlUmVxdWVzdGVkKAorICAgIEdEQnVzQ29ubmVj
dGlvbiogY29ubmVjdGlvbiwKKyAgICBHQXN5bmNSZXN1bHQqIHJlc3VsdCwKKyAgICBncG9pbnRl
ciB1c2VyX2RhdGEpIHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2Fz
dDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KHVzZXJfZGF0YSk7CisgIFJUQ19EQ0hFQ0sodGhhdCk7
CisKKyAgR0Vycm9yKiBlcnJvciA9IG51bGxwdHI7CisgIEdVbml4RkRMaXN0KiBvdXRsaXN0ID0g
bnVsbHB0cjsKKyAgR1ZhcmlhbnQqIHZhcmlhbnQgPSBnX2RidXNfcHJveHlfY2FsbF93aXRoX3Vu
aXhfZmRfbGlzdF9maW5pc2goCisgICAgICB0aGF0LT5wcm94eV8sICZvdXRsaXN0LCByZXN1bHQs
ICZlcnJvcik7CisgIGlmICghdmFyaWFudCkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJG
YWlsZWQgdG8gb3BlbiB0aGUgUGlwZVdpcmUgcmVtb3RlOiAiCisgICAgICAgICAgICAgICAgICAg
ICAgPDwgZXJyb3ItPm1lc3NhZ2U7CisgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAgICB0aGF0
LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKworICBnaW50
MzIgaW5kZXg7CisgIGdfdmFyaWFudF9nZXQodmFyaWFudCwgIihoKSIsICZpbmRleCk7CisKKyAg
aWYgKCh0aGF0LT5wd19mZF8gPSBnX3VuaXhfZmRfbGlzdF9nZXQob3V0bGlzdCwgaW5kZXgsICZl
cnJvcikpID09IC0xKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBnZXQg
ZmlsZSBkZXNjcmlwdG9yIGZyb20gdGhlIGxpc3Q6ICIKKyAgICAgICAgICAgICAgICAgICAgICA8
PCBlcnJvci0+bWVzc2FnZTsKKyAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOworICAgIGdfdmFyaWFu
dF91bnJlZih2YXJpYW50KTsKKyAgICB0aGF0LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsK
KyAgICByZXR1cm47CisgIH0KKworICBnX3ZhcmlhbnRfdW5yZWYodmFyaWFudCk7CisgIGdfb2Jq
ZWN0X3VucmVmKG91dGxpc3QpOworCisgIHRoYXQtPkluaXRQaXBlV2lyZSgpOworICBSVENfTE9H
KExTX0lORk8pIDw8ICJQaXBlV2lyZSByZW1vdGUgb3BlbmVkLiI7Cit9CisKK3ZvaWQgQmFzZUNh
cHR1cmVyUGlwZVdpcmU6OlN0YXJ0KENhbGxiYWNrKiBjYWxsYmFjaykgeworICBSVENfRENIRUNL
KCFjYWxsYmFja18pOworICBSVENfRENIRUNLKGNhbGxiYWNrKTsKKworICBJbml0UG9ydGFsKCk7
CisKKyAgY2FsbGJhY2tfID0gY2FsbGJhY2s7Cit9CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdp
cmU6OkNhcHR1cmVGcmFtZSgpIHsKKyAgaWYgKHBvcnRhbF9pbml0X2ZhaWxlZF8pIHsKKyAgICBj
YWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVOVCwgbnVsbHB0
cik7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKCFjdXJyZW50X2ZyYW1lXykgeworICAgIGNh
bGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfVEVNUE9SQVJZLCBudWxscHRy
KTsKKyAgICByZXR1cm47CisgIH0KKworICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBy
ZXN1bHQobmV3IEJhc2ljRGVza3RvcEZyYW1lKGRlc2t0b3Bfc2l6ZV8pKTsKKyAgcmVzdWx0LT5D
b3B5UGl4ZWxzRnJvbSgKKyAgICAgIGN1cnJlbnRfZnJhbWVfLCAoZGVza3RvcF9zaXplXy53aWR0
aCgpICoga0J5dGVzUGVyUGl4ZWwpLAorICAgICAgRGVza3RvcFJlY3Q6Ok1ha2VXSChkZXNrdG9w
X3NpemVfLndpZHRoKCksIGRlc2t0b3Bfc2l6ZV8uaGVpZ2h0KCkpKTsKKyAgaWYgKCFyZXN1bHQp
IHsKKyAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1RFTVBPUkFS
WSwgbnVsbHB0cik7CisgICAgcmV0dXJuOworICB9CisgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVz
dWx0KFJlc3VsdDo6U1VDQ0VTUywgc3RkOjptb3ZlKHJlc3VsdCkpOworfQorCitib29sIEJhc2VD
YXB0dXJlclBpcGVXaXJlOjpHZXRTb3VyY2VMaXN0KFNvdXJjZUxpc3QqIHNvdXJjZXMpIHsKKyAg
UlRDX0RDSEVDSyhzb3VyY2VzLT5zaXplKCkgPT0gMCk7CisgIC8vIExpc3Qgb2YgYXZhaWxhYmxl
IHNjcmVlbnMgaXMgYWxyZWFkeSBwcmVzZW50ZWQgYnkgdGhlIHhkZy1kZXNrdG9wLXBvcnRhbC4K
KyAgLy8gQnV0IHdlIGhhdmUgdG8gYWRkIGFuIGVtcHR5IHNvdXJjZSBhcyB0aGUgY29kZSBleHBl
Y3RzIGl0LgorICBzb3VyY2VzLT5wdXNoX2JhY2soezB9KTsKKyAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OlNlbGVjdFNvdXJjZShTb3VyY2VJZCBpZCkgewor
ICAvLyBTY3JlZW4gc2VsZWN0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIHhkZy1kZXNrdG9wLXBvcnRh
bC4KKyAgcmV0dXJuIHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmIxMDFhY2JhYTYwMWI4
M2Y4MWM3YjQ4ODkwYzc5ZjNjYjY2NzU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgvYmFzZV9jYXB0dXJlcl9waXBld2lyZS5oCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogIENv
cHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX0JBU0VfQ0FQ
VFVSRVJfUElQRVdJUkVfSF8KKyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhf
QkFTRV9DQVBUVVJFUl9QSVBFV0lSRV9IXworCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2RlZmlu
ZSB0eXBlb2YgX190eXBlb2ZfXworI2luY2x1ZGUgPHBpcGV3aXJlL3BpcGV3aXJlLmg+CisjaW5j
bHVkZSA8c3BhL3BhcmFtL3ZpZGVvL2Zvcm1hdC11dGlscy5oPgorCisjaW5jbHVkZSAibW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3Mg
UGlwZVdpcmVUeXBlIHsKKyBwdWJsaWM6CisgIHNwYV90eXBlX21lZGlhX3R5cGUgbWVkaWFfdHlw
ZTsKKyAgc3BhX3R5cGVfbWVkaWFfc3VidHlwZSBtZWRpYV9zdWJ0eXBlOworICBzcGFfdHlwZV9m
b3JtYXRfdmlkZW8gZm9ybWF0X3ZpZGVvOworICBzcGFfdHlwZV92aWRlb19mb3JtYXQgdmlkZW9f
Zm9ybWF0OworfTsKKworY2xhc3MgQmFzZUNhcHR1cmVyUGlwZVdpcmUgOiBwdWJsaWMgRGVza3Rv
cENhcHR1cmVyIHsKKyBwdWJsaWM6CisgIGVudW0gQ2FwdHVyZVNvdXJjZVR5cGUgeyBTY3JlZW4g
PSAxLCBXaW5kb3cgfTsKKworICBleHBsaWNpdCBCYXNlQ2FwdHVyZXJQaXBlV2lyZShDYXB0dXJl
U291cmNlVHlwZSBzb3VyY2VfdHlwZSk7CisgIH5CYXNlQ2FwdHVyZXJQaXBlV2lyZSgpIG92ZXJy
aWRlOworCisgIC8vIERlc2t0b3BDYXB0dXJlciBpbnRlcmZhY2UuCisgIHZvaWQgU3RhcnQoQ2Fs
bGJhY2sqIGRlbGVnYXRlKSBvdmVycmlkZTsKKyAgdm9pZCBDYXB0dXJlRnJhbWUoKSBvdmVycmlk
ZTsKKyAgYm9vbCBHZXRTb3VyY2VMaXN0KFNvdXJjZUxpc3QqIHNvdXJjZXMpIG92ZXJyaWRlOwor
ICBib29sIFNlbGVjdFNvdXJjZShTb3VyY2VJZCBpZCkgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgor
ICAvLyBQaXBlV2lyZSB0eXBlcyAtLT4KKyAgcHdfY29yZSogcHdfY29yZV8gPSBudWxscHRyOwor
ICBwd190eXBlKiBwd19jb3JlX3R5cGVfID0gbnVsbHB0cjsKKyAgcHdfc3RyZWFtKiBwd19zdHJl
YW1fID0gbnVsbHB0cjsKKyAgcHdfcmVtb3RlKiBwd19yZW1vdGVfID0gbnVsbHB0cjsKKyAgcHdf
bG9vcCogcHdfbG9vcF8gPSBudWxscHRyOworICBwd190aHJlYWRfbG9vcCogcHdfbWFpbl9sb29w
XyA9IG51bGxwdHI7CisgIFBpcGVXaXJlVHlwZSogcHdfdHlwZV8gPSBudWxscHRyOworCisgIHNw
YV9ob29rIHNwYV9zdHJlYW1fbGlzdGVuZXJfID0ge307CisgIHNwYV9ob29rIHNwYV9yZW1vdGVf
bGlzdGVuZXJfID0ge307CisKKyAgcHdfc3RyZWFtX2V2ZW50cyBwd19zdHJlYW1fZXZlbnRzXyA9
IHt9OworICBwd19yZW1vdGVfZXZlbnRzIHB3X3JlbW90ZV9ldmVudHNfID0ge307CisKKyAgc3Bh
X3ZpZGVvX2luZm9fcmF3KiBzcGFfdmlkZW9fZm9ybWF0XyA9IG51bGxwdHI7CisKKyAgZ2ludDMy
IHB3X2ZkXyA9IC0xOworCisgIENhcHR1cmVTb3VyY2VUeXBlIGNhcHR1cmVfc291cmNlX3R5cGVf
ID0KKyAgICAgIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDYXB0dXJlU291cmNlVHlwZTo6U2NyZWVu
OworCisgIC8vIDwtLSBlbmQgb2YgUGlwZVdpcmUgdHlwZXMKKworICBHREJ1c0Nvbm5lY3Rpb24q
IGNvbm5lY3Rpb25fID0gbnVsbHB0cjsKKyAgR0RCdXNQcm94eSogcHJveHlfID0gbnVsbHB0cjsK
KyAgZ2NoYXIqIHBvcnRhbF9oYW5kbGVfID0gbnVsbHB0cjsKKyAgZ2NoYXIqIHNlc3Npb25faGFu
ZGxlXyA9IG51bGxwdHI7CisgIGdjaGFyKiBzb3VyY2VzX2hhbmRsZV8gPSBudWxscHRyOworICBn
Y2hhciogc3RhcnRfaGFuZGxlXyA9IG51bGxwdHI7CisgIGd1aW50IHNlc3Npb25fcmVxdWVzdF9z
aWduYWxfaWRfID0gMDsKKyAgZ3VpbnQgc291cmNlc19yZXF1ZXN0X3NpZ25hbF9pZF8gPSAwOwor
ICBndWludCBzdGFydF9yZXF1ZXN0X3NpZ25hbF9pZF8gPSAwOworCisgIERlc2t0b3BTaXplIGRl
c2t0b3Bfc2l6ZV8gPSB7fTsKKyAgRGVza3RvcENhcHR1cmVPcHRpb25zIG9wdGlvbnNfID0ge307
CisKKyAgdWludDhfdCogY3VycmVudF9mcmFtZV8gPSBudWxscHRyOworICBDYWxsYmFjayogY2Fs
bGJhY2tfID0gbnVsbHB0cjsKKworICBib29sIHBvcnRhbF9pbml0X2ZhaWxlZF8gPSBmYWxzZTsK
KworICB2b2lkIEluaXRQb3J0YWwoKTsKKyAgdm9pZCBJbml0UGlwZVdpcmUoKTsKKyAgdm9pZCBJ
bml0UGlwZVdpcmVUeXBlcygpOworCisgIHZvaWQgQ3JlYXRlUmVjZWl2aW5nU3RyZWFtKCk7Cisg
IHZvaWQgSGFuZGxlQnVmZmVyKHB3X2J1ZmZlciogYnVmZmVyKTsKKworICB2b2lkIENvbnZlcnRS
R0J4VG9CR1J4KHVpbnQ4X3QqIGZyYW1lLCB1aW50MzJfdCBzaXplKTsKKworICBzdGF0aWMgdm9p
ZCBPblN0YXRlQ2hhbmdlZCh2b2lkKiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwd19yZW1vdGVfc3RhdGUgb2xkX3N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwd19yZW1vdGVfc3RhdGUgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGVycm9yKTsKKyAgc3RhdGljIHZvaWQgT25TdHJlYW1TdGF0ZUNoYW5nZWQodm9p
ZCogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdfc3RyZWFtX3N0
YXRlIG9sZF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdfc3Ry
ZWFtX3N0YXRlIHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBlcnJvcl9tZXNzYWdlKTsKKworICBzdGF0aWMgdm9pZCBPblN0cmVhbUZvcm1hdENo
YW5nZWQodm9pZCogZGF0YSwgY29uc3Qgc3RydWN0IHNwYV9wb2QqIGZvcm1hdCk7CisgIHN0YXRp
YyB2b2lkIE9uU3RyZWFtUHJvY2Vzcyh2b2lkKiBkYXRhKTsKKyAgc3RhdGljIHZvaWQgT25OZXdC
dWZmZXIodm9pZCogZGF0YSwgdWludDMyX3QgaWQpOworCisgIGd1aW50IFNldHVwUmVxdWVzdFJl
c3BvbnNlU2lnbmFsKGNvbnN0IGdjaGFyKiBvYmplY3RfcGF0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0RCdXNTaWduYWxDYWxsYmFjayBjYWxsYmFjayk7CisKKyAgc3Rh
dGljIHZvaWQgT25Qcm94eVJlcXVlc3RlZChHT2JqZWN0KiBvYmplY3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworICBzdGF0aWMgZ2NoYXIqIFBy
ZXBhcmVTaWduYWxIYW5kbGUoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIHRva2VuKTsKKworICB2b2lk
IFNlc3Npb25SZXF1ZXN0KCk7CisgIHN0YXRpYyB2b2lkIE9uU2Vzc2lvblJlcXVlc3RlZChHREJ1
c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQXN5bmNSZXN1bHQqIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdwb2ludGVyIHVzZXJfZGF0YSk7CisgIHN0YXRpYyB2b2lkIE9uU2Vzc2lvblJlcXVlc3RSZXNw
b25zZVNpZ25hbChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogc2VuZGVyX25hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciog
b2JqZWN0X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnY2hhciogaW50ZXJmYWNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogc2lnbmFsX25hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCogcGFyYW1ldGVycywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVz
ZXJfZGF0YSk7CisKKyAgdm9pZCBTb3VyY2VzUmVxdWVzdCgpOworICBzdGF0aWMgdm9pZCBPblNv
dXJjZXNSZXF1ZXN0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworICBzdGF0aWMgdm9pZCBP
blNvdXJjZXNSZXF1ZXN0UmVzcG9uc2VTaWduYWwoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No
YXIqIHNlbmRlcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIqIG9iamVjdF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGludGVyZmFjZV9uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIHNpZ25h
bF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Zh
cmlhbnQqIHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworCisgIHZvaWQgU3RhcnRSZXF1ZXN0KCk7Cisg
IHN0YXRpYyB2b2lkIE9uU3RhcnRSZXF1ZXN0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCogcmVzdWx0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7CisgIHN0
YXRpYyB2b2lkIE9uU3RhcnRSZXF1ZXN0UmVzcG9uc2VTaWduYWwoR0RCdXNDb25uZWN0aW9uKiBj
b25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyKiBzZW5kZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciogb2JqZWN0X3BhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGludGVyZmFjZV9uYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBzaWdu
YWxfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFy
aWFudCogcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworCisgIHZvaWQgT3BlblBpcGVXaXJlUmVtb3RlKCk7
CisgIHN0YXRpYyB2b2lkIE9uT3BlblBpcGVXaXJlUmVtb3RlUmVxdWVzdGVkKEdEQnVzQ29ubmVj
dGlvbiogY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKyAgUlRDX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihCYXNlQ2FwdHVyZXJQaXBlV2lyZSk7Cit9OworCit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfQkFT
RV9DQVBUVVJFUl9QSVBFV0lSRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2Vf
Y3Vyc29yX21vbml0b3JfeDExLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2VfY3Vyc29yX21vbml0
b3JfeDExLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NTAzODIyYmNlZDhiYmRiZTQ3ZjNjZDEwNWFiZDhmMTAz
MmYzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9tb3VzZV9jdXJzb3JfbW9u
aXRvcl94MTEuY2MKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDEz
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2VfY3Vyc29yX21vbml0
b3JfeDExLmgiCisKKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5z
aW9ucy9YZml4ZXMuaD4KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxtZW1vcnk+
CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVfb3B0
aW9ucy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVy
ZV90eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZnJh
bWUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2Vycm9yX3Ry
YXAuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3IuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3JfbW9uaXRvci5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKworbmFtZXNwYWNlIHsKKworLy8gV2lu
ZG93Q2FwdHVyZXIgcmV0dXJucyB3aW5kb3cgSURzIG9mIFgxMSB3aW5kb3dzIHdpdGggV01fU1RB
VEUgYXR0cmlidXRlLgorLy8gVGhlc2Ugd2luZG93cyBtYXkgbm90IGJlIGltbWVkaWF0ZSBjaGls
ZHJlbiBvZiB0aGUgcm9vdCB3aW5kb3csIGJlY2F1c2UKKy8vIHdpbmRvdyBtYW5hZ2VycyBtYXkg
cmUtcGFyZW50IHRoZW0gdG8gYWRkIGRlY29yYXRpb25zLiBIb3dldmVyLAorLy8gWFF1ZXJ5UG9p
bnRlcigpIGV4cGVjdHMgdG8gYmUgcGFzc2VkIGNoaWxkcmVuIG9mIHRoZSByb290LiBUaGlzIGZ1
bmN0aW9uCisvLyBzZWFyY2hlcyB1cCB0aGUgbGlzdCBvZiB0aGUgd2luZG93cyB0byBmaW5kIHRo
ZSByb290IGNoaWxkIHRoYXQgY29ycmVzcG9uZHMKKy8vIHRvIHx3aW5kb3d8LgorV2luZG93IEdl
dFRvcExldmVsV2luZG93KERpc3BsYXkqIGRpc3BsYXksIFdpbmRvdyB3aW5kb3cpIHsKKyAgd2hp
bGUgKHRydWUpIHsKKyAgICAvLyBJZiB0aGUgd2luZG93IGlzIGluIFdpdGhkcmF3blN0YXRlIHRo
ZW4gbG9vayBhdCBhbGwgb2YgaXRzIGNoaWxkcmVuLgorICAgIDo6V2luZG93IHJvb3QsIHBhcmVu
dDsKKyAgICA6OldpbmRvdyogY2hpbGRyZW47CisgICAgdW5zaWduZWQgaW50IG51bV9jaGlsZHJl
bjsKKyAgICBpZiAoIVhRdWVyeVRyZWUoZGlzcGxheSwgd2luZG93LCAmcm9vdCwgJnBhcmVudCwg
JmNoaWxkcmVuLAorICAgICAgICAgICAgICAgICAgICAmbnVtX2NoaWxkcmVuKSkgeworICAgICAg
UlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBxdWVyeSBmb3IgY2hpbGQgd2luZG93cyBh
bHRob3VnaCB3aW5kb3ciCisgICAgICAgICAgICAgICAgICAgICAgICA8PCAiZG9lcyBub3QgaGF2
ZSBhIHZhbGlkIFdNX1NUQVRFLiI7CisgICAgICByZXR1cm4gTm9uZTsKKyAgICB9CisgICAgaWYg
KGNoaWxkcmVuKQorICAgICAgWEZyZWUoY2hpbGRyZW4pOworCisgICAgaWYgKHBhcmVudCA9PSBy
b290KQorICAgICAgYnJlYWs7CisKKyAgICB3aW5kb3cgPSBwYXJlbnQ7CisgIH0KKworICByZXR1
cm4gd2luZG93OworfQorCit9ICAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisK
K01vdXNlQ3Vyc29yTW9uaXRvclgxMTo6TW91c2VDdXJzb3JNb25pdG9yWDExKAorICAgIGNvbnN0
IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywKKyAgICBXaW5kb3cgd2luZG93KQorICAg
IDogeF9kaXNwbGF5XyhvcHRpb25zLnhfZGlzcGxheSgpKSwKKyAgICAgIGNhbGxiYWNrXyhOVUxM
KSwKKyAgICAgIG1vZGVfKFNIQVBFX0FORF9QT1NJVElPTiksCisgICAgICB3aW5kb3dfKHdpbmRv
dyksCisgICAgICBoYXZlX3hmaXhlc18oZmFsc2UpLAorICAgICAgeGZpeGVzX2V2ZW50X2Jhc2Vf
KC0xKSwKKyAgICAgIHhmaXhlc19lcnJvcl9iYXNlXygtMSkgeworICAvLyBTZXQgYSBkZWZhdWx0
IGluaXRpYWwgY3Vyc29yIHNoYXBlIGluIGNhc2UgWEZpeGVzIGlzIG5vdCBwcmVzZW50LgorICBj
b25zdCBpbnQga1NpemUgPSA1OworICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBkZWZh
dWx0X2N1cnNvcigKKyAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShEZXNrdG9wU2l6ZShrU2l6
ZSwga1NpemUpKSk7CisgIGNvbnN0IHVpbnQ4X3QgcGl4ZWxzW2tTaXplICoga1NpemVdID0gewor
ICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHhm
ZiwKKyAgICAgIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4ZmYs
IDB4ZmYsCisgICAgICAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwfTsK
KyAgdWludDhfdCogcHRyID0gZGVmYXVsdF9jdXJzb3ItPmRhdGEoKTsKKyAgZm9yIChpbnQgeSA9
IDA7IHkgPCBrU2l6ZTsgKyt5KSB7CisgICAgZm9yIChpbnQgeCA9IDA7IHggPCBrU2l6ZTsgKyt4
KSB7CisgICAgICAqcHRyKysgPSBwaXhlbHNba1NpemUgKiB5ICsgeF07CisgICAgICAqcHRyKysg
PSBwaXhlbHNba1NpemUgKiB5ICsgeF07CisgICAgICAqcHRyKysgPSBwaXhlbHNba1NpemUgKiB5
ICsgeF07CisgICAgICAqcHRyKysgPSAweGZmOworICAgIH0KKyAgfQorICBEZXNrdG9wVmVjdG9y
IGhvdHNwb3QoMiwgMik7CisgIGN1cnNvcl9zaGFwZV8ucmVzZXQobmV3IE1vdXNlQ3Vyc29yKGRl
ZmF1bHRfY3Vyc29yLnJlbGVhc2UoKSwgaG90c3BvdCkpOworfQorCitNb3VzZUN1cnNvck1vbml0
b3JYMTE6On5Nb3VzZUN1cnNvck1vbml0b3JYMTEoKSB7CisgIGlmIChoYXZlX3hmaXhlc18pIHsK
KyAgICB4X2Rpc3BsYXlfLT5SZW1vdmVFdmVudEhhbmRsZXIoeGZpeGVzX2V2ZW50X2Jhc2VfICsg
WEZpeGVzQ3Vyc29yTm90aWZ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzKTsKKyAgfQorfQorCit2b2lkIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6SW5pdChDYWxsYmFj
ayogY2FsbGJhY2ssIE1vZGUgbW9kZSkgeworICAvLyBJbml0IGNhbiBiZSBjYWxsZWQgb25seSBv
bmNlIHBlciBpbnN0YW5jZSBvZiBNb3VzZUN1cnNvck1vbml0b3IuCisgIFJUQ19EQ0hFQ0soIWNh
bGxiYWNrXyk7CisgIFJUQ19EQ0hFQ0soY2FsbGJhY2spOworCisgIGNhbGxiYWNrXyA9IGNhbGxi
YWNrOworICBtb2RlXyA9IG1vZGU7CisKKyAgaGF2ZV94Zml4ZXNfID0KKyAgICAgIFhGaXhlc1F1
ZXJ5RXh0ZW5zaW9uKGRpc3BsYXkoKSwgJnhmaXhlc19ldmVudF9iYXNlXywgJnhmaXhlc19lcnJv
cl9iYXNlXyk7CisKKyAgaWYgKGhhdmVfeGZpeGVzXykgeworICAgIC8vIFJlZ2lzdGVyIGZvciBj
aGFuZ2VzIHRvIHRoZSBjdXJzb3Igc2hhcGUuCisgICAgWEZpeGVzU2VsZWN0Q3Vyc29ySW5wdXQo
ZGlzcGxheSgpLCB3aW5kb3dfLCBYRml4ZXNEaXNwbGF5Q3Vyc29yTm90aWZ5TWFzayk7CisgICAg
eF9kaXNwbGF5Xy0+QWRkRXZlbnRIYW5kbGVyKHhmaXhlc19ldmVudF9iYXNlXyArIFhGaXhlc0N1
cnNvck5vdGlmeSwgdGhpcyk7CisKKyAgICBDYXB0dXJlQ3Vyc29yKCk7CisgIH0gZWxzZSB7Cisg
ICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiWCBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBYRml4ZXMu
IjsKKyAgfQorfQorCit2b2lkIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6Q2FwdHVyZSgpIHsKKyAg
UlRDX0RDSEVDSyhjYWxsYmFja18pOworCisgIC8vIFByb2Nlc3MgWDExIGV2ZW50cyBpbiBjYXNl
IFhGaXhlcyBoYXMgc2VudCBjdXJzb3Igbm90aWZpY2F0aW9uLgorICB4X2Rpc3BsYXlfLT5Qcm9j
ZXNzUGVuZGluZ1hFdmVudHMoKTsKKworICAvLyBjdXJzb3Jfc2hhcGVffCBpcyBzZXQgb25seSBp
ZiB3ZSB3ZXJlIG5vdGlmaWVkIG9mIGEgY3Vyc29yIHNoYXBlIGNoYW5nZS4KKyAgaWYgKGN1cnNv
cl9zaGFwZV8uZ2V0KCkpCisgICAgY2FsbGJhY2tfLT5Pbk1vdXNlQ3Vyc29yKGN1cnNvcl9zaGFw
ZV8ucmVsZWFzZSgpKTsKKworICAvLyBHZXQgY3Vyc29yIHBvc2l0aW9uIGlmIG5lY2Vzc2FyeS4K
KyAgaWYgKG1vZGVfID09IFNIQVBFX0FORF9QT1NJVElPTikgeworICAgIGludCByb290X3g7Cisg
ICAgaW50IHJvb3RfeTsKKyAgICBpbnQgd2luX3g7CisgICAgaW50IHdpbl95OworICAgIFdpbmRv
dyByb290X3dpbmRvdzsKKyAgICBXaW5kb3cgY2hpbGRfd2luZG93OworICAgIHVuc2lnbmVkIGlu
dCBtYXNrOworCisgICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXkoKSk7CisgICAgQm9v
bCByZXN1bHQgPSBYUXVlcnlQb2ludGVyKGRpc3BsYXkoKSwgd2luZG93XywgJnJvb3Rfd2luZG93
LCAmY2hpbGRfd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm9vdF94
LCAmcm9vdF95LCAmd2luX3gsICZ3aW5feSwgJm1hc2spOworICAgIEN1cnNvclN0YXRlIHN0YXRl
OworICAgIGlmICghcmVzdWx0IHx8IGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgp
ICE9IDApIHsKKyAgICAgIHN0YXRlID0gT1VUU0lERTsKKyAgICB9IGVsc2UgeworICAgICAgLy8g
SW4gc2NyZWVuIG1vZGUgKHdpbmRvd18gPT0gcm9vdF93aW5kb3cpIHRoZSBtb3VzZSBpcyBhbHdh
eXMgaW5zaWRlLgorICAgICAgLy8gWFF1ZXJ5UG9pbnRlcigpIHNldHMgfGNoaWxkX3dpbmRvd3wg
dG8gTm9uZSBpZiB0aGUgY3Vyc29yIGlzIG91dHNpZGUKKyAgICAgIC8vIHx3aW5kb3dffC4KKyAg
ICAgIHN0YXRlID0KKyAgICAgICAgICAod2luZG93XyA9PSByb290X3dpbmRvdyB8fCBjaGlsZF93
aW5kb3cgIT0gTm9uZSkgPyBJTlNJREUgOiBPVVRTSURFOworICAgIH0KKworICAgIC8vIEFzIHRo
ZSBjb21tZW50cyB0byBHZXRUb3BMZXZlbFdpbmRvdygpIGFib3ZlIGluZGljYXRlLCBpbiB3aW5k
b3cgY2FwdHVyZSwKKyAgICAvLyB0aGUgY3Vyc29yIHBvc2l0aW9uIGNhcHR1cmUgaGFwcGVucyBp
biB8d2luZG93X3wsIHdoaWxlIHRoZSBmcmFtZSBjYXRwdXJlCisgICAgLy8gaGFwcGVucyBpbiB8
Y2hpbGRfd2luZG93fC4gVGhlc2UgdHdvIHdpbmRvd3MgYXJlIG5vdCBhbHd5YXMgc2FtZSwgYXMK
KyAgICAvLyB3aW5kb3cgbWFuYWdlciBtYXkgYWRkIHNvbWUgZGVjb3JhdGlvbnMgdG8gdGhlIHx3
aW5kb3dffC4gU28gdHJhbnNsYXRlCisgICAgLy8gdGhlIGNvb3JkaW5hdGUgaW4gfHdpbmRvd198
IHRvIHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHxjaGlsZF93aW5kb3d8LgorICAgIGlmICh3aW5k
b3dfICE9IHJvb3Rfd2luZG93ICYmIHN0YXRlID09IElOU0lERSkgeworICAgICAgaW50IHRyYW5z
bGF0ZWRfeCwgdHJhbnNsYXRlZF95OworICAgICAgV2luZG93IHVudXNlZDsKKyAgICAgIGlmIChY
VHJhbnNsYXRlQ29vcmRpbmF0ZXMoZGlzcGxheSgpLCB3aW5kb3dfLCBjaGlsZF93aW5kb3csIHdp
bl94LCB3aW5feSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5zbGF0ZWRf
eCwgJnRyYW5zbGF0ZWRfeSwgJnVudXNlZCkpIHsKKyAgICAgICAgd2luX3ggPSB0cmFuc2xhdGVk
X3g7CisgICAgICAgIHdpbl95ID0gdHJhbnNsYXRlZF95OworICAgICAgfQorICAgIH0KKworICAg
IC8vIFgxMSBhbHdheXMgc3RhcnRzIHRoZSBjb29yZGluYXRlIGZyb20gKDAsIDApLCBzbyB3ZSBk
byBub3QgbmVlZCB0bworICAgIC8vIHRyYW5zbGF0ZSBoZXJlLgorICAgIGNhbGxiYWNrXy0+T25N
b3VzZUN1cnNvclBvc2l0aW9uKERlc2t0b3BWZWN0b3Iocm9vdF94LCByb290X3kpKTsKKyAgfQor
fQorCitib29sIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6SGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVu
dCYgZXZlbnQpIHsKKyAgaWYgKGhhdmVfeGZpeGVzXyAmJiBldmVudC50eXBlID09IHhmaXhlc19l
dmVudF9iYXNlXyArIFhGaXhlc0N1cnNvck5vdGlmeSkgeworICAgIGNvbnN0IFhGaXhlc0N1cnNv
ck5vdGlmeUV2ZW50KiBjdXJzb3JfZXZlbnQgPQorICAgICAgICByZWludGVycHJldF9jYXN0PGNv
bnN0IFhGaXhlc0N1cnNvck5vdGlmeUV2ZW50Kj4oJmV2ZW50KTsKKyAgICBpZiAoY3Vyc29yX2V2
ZW50LT5zdWJ0eXBlID09IFhGaXhlc0Rpc3BsYXlDdXJzb3JOb3RpZnkpIHsKKyAgICAgIENhcHR1
cmVDdXJzb3IoKTsKKyAgICB9CisgICAgLy8gUmV0dXJuIGZhbHNlLCBldmVuIGlmIHRoZSBldmVu
dCBoYXMgYmVlbiBoYW5kbGVkLCBiZWNhdXNlIHRoZXJlIG1pZ2h0IGJlCisgICAgLy8gb3RoZXIg
bGlzdGVuZXJzIGZvciBjdXJzb3Igbm90aWZpY2F0aW9ucy4KKyAgfQorICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgTW91c2VDdXJzb3JNb25pdG9yWDExOjpDYXB0dXJlQ3Vyc29yKCkgeworICBS
VENfRENIRUNLKGhhdmVfeGZpeGVzXyk7CisKKyAgWEZpeGVzQ3Vyc29ySW1hZ2UqIGltZzsKKyAg
eworICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KCkpOworICAgIGltZyA9IFhGaXhl
c0dldEN1cnNvckltYWdlKGRpc3BsYXkoKSk7CisgICAgaWYgKCFpbWcgfHwgZXJyb3JfdHJhcC5H
ZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkKKyAgICAgIHJldHVybjsKKyAgfQorCisgIHN0
ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IGltYWdlKAorICAgICAgbmV3IEJhc2ljRGVza3Rv
cEZyYW1lKERlc2t0b3BTaXplKGltZy0+d2lkdGgsIGltZy0+aGVpZ2h0KSkpOworCisgIHVpbnQ2
NF90KiBzcmMgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4oaW1nLT5waXhlbHMpOworICB1
aW50MzJfdCogZHN0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGltYWdlLT5kYXRhKCkp
OworICB1aW50MzJfdCogZHN0X2VuZCA9IGRzdCArIChpbWctPndpZHRoICogaW1nLT5oZWlnaHQp
OworICB3aGlsZSAoZHN0IDwgZHN0X2VuZCkgeworICAgICpkc3QrKyA9ICpzcmMrKzsKKyAgfQor
CisgIERlc2t0b3BWZWN0b3IgaG90c3BvdChzdGQ6Om1pbihpbWctPndpZHRoLCBpbWctPnhob3Qp
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptaW4oaW1nLT5oZWlnaHQsIGltZy0+eWhv
dCkpOworCisgIFhGcmVlKGltZyk7CisKKyAgY3Vyc29yX3NoYXBlXy5yZXNldChuZXcgTW91c2VD
dXJzb3IoaW1hZ2UucmVsZWFzZSgpLCBob3RzcG90KSk7Cit9CisKKy8vIHN0YXRpYworTW91c2VD
dXJzb3JNb25pdG9yKiBNb3VzZUN1cnNvck1vbml0b3JYMTE6OkNyZWF0ZUZvcldpbmRvdygKKyAg
ICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsCisgICAgV2luZG93SWQgd2lu
ZG93KSB7CisgIGlmICghb3B0aW9ucy54X2Rpc3BsYXkoKSkKKyAgICByZXR1cm4gTlVMTDsKKyAg
d2luZG93ID0gR2V0VG9wTGV2ZWxXaW5kb3cob3B0aW9ucy54X2Rpc3BsYXkoKS0+ZGlzcGxheSgp
LCB3aW5kb3cpOworICBpZiAod2luZG93ID09IE5vbmUpCisgICAgcmV0dXJuIE5VTEw7CisgIHJl
dHVybiBuZXcgTW91c2VDdXJzb3JNb25pdG9yWDExKG9wdGlvbnMsIHdpbmRvdyk7Cit9CisKK01v
dXNlQ3Vyc29yTW9uaXRvciogTW91c2VDdXJzb3JNb25pdG9yWDExOjpDcmVhdGVGb3JTY3JlZW4o
CisgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zLAorICAgIFNjcmVlbklk
IHNjcmVlbikgeworICBpZiAoIW9wdGlvbnMueF9kaXNwbGF5KCkpCisgICAgcmV0dXJuIE5VTEw7
CisgIHJldHVybiBuZXcgTW91c2VDdXJzb3JNb25pdG9yWDExKAorICAgICAgb3B0aW9ucywgRGVm
YXVsdFJvb3RXaW5kb3cob3B0aW9ucy54X2Rpc3BsYXkoKS0+ZGlzcGxheSgpKSk7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxNb3VzZUN1cnNvck1vbml0b3I+IE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6
Q3JlYXRlKAorICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgeworICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1vdXNlQ3Vyc29yTW9uaXRvcj4oCisgICAgICBDcmVhdGVG
b3JTY3JlZW4ob3B0aW9ucywga0Z1bGxEZXNrdG9wU2NyZWVuSWQpKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2VfY3Vyc29yX21v
bml0b3JfeDExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9tb3VzZV9jdXJzb3JfbW9uaXRvcl94MTEuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZThlMGNhNzhjMzI0ZGU0NTFiNmU5NGExMTQxNTZkNWEzNDJlYWFjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2VfY3Vyc29yX21vbml0b3JfeDExLmgK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0RF
U0tUT1BfQ0FQVFVSRV9MSU5VWF9NT1VTRV9DVVJTT1JfTU9OSVRPUl9YMTFfSF8KKyNkZWZpbmUg
TU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfTU9VU0VfQ1VSU09SX01PTklUT1JfWDExX0hf
CisKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorCisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVk
ZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxheS5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25pdG9yLmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBNb3VzZUN1cnNvck1vbml0b3JYMTEgOiBwdWJs
aWMgTW91c2VDdXJzb3JNb25pdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIHsKKyBwdWJsaWM6CisgIE1vdXNlQ3Vy
c29yTW9uaXRvclgxMShjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsIFdpbmRv
dyB3aW5kb3cpOworICB+TW91c2VDdXJzb3JNb25pdG9yWDExKCkgb3ZlcnJpZGU7CisKKyAgc3Rh
dGljIE1vdXNlQ3Vyc29yTW9uaXRvciogQ3JlYXRlRm9yV2luZG93KAorICAgICAgY29uc3QgRGVz
a3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zLAorICAgICAgV2luZG93SWQgd2luZG93KTsKKyAg
c3RhdGljIE1vdXNlQ3Vyc29yTW9uaXRvciogQ3JlYXRlRm9yU2NyZWVuKAorICAgICAgY29uc3Qg
RGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zLAorICAgICAgU2NyZWVuSWQgc2NyZWVuKTsK
KyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNb3VzZUN1cnNvck1vbml0b3I+IENyZWF0ZSgKKyAg
ICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7CisKKyAgdm9pZCBJbml0
KENhbGxiYWNrKiBjYWxsYmFjaywgTW9kZSBtb2RlKSBvdmVycmlkZTsKKyAgdm9pZCBDYXB0dXJl
KCkgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorICAvLyBTaGFyZWRYRGlzcGxheTo6WEV2ZW50SGFu
ZGxlciBpbnRlcmZhY2UuCisgIGJvb2wgSGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVudCYgZXZlbnQp
IG92ZXJyaWRlOworCisgIERpc3BsYXkqIGRpc3BsYXkoKSB7IHJldHVybiB4X2Rpc3BsYXlfLT5k
aXNwbGF5KCk7IH0KKworICAvLyBDYXB0dXJlcyBjdXJyZW50IGN1cnNvciBzaGFwZSBhbmQgc3Rv
cmVzIGl0IGluIHxjdXJzb3Jfc2hhcGVffC4KKyAgdm9pZCBDYXB0dXJlQ3Vyc29yKCk7CisKKyAg
cnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiB4X2Rpc3BsYXlfOworICBDYWxsYmFj
ayogY2FsbGJhY2tfOworICBNb2RlIG1vZGVfOworICBXaW5kb3cgd2luZG93XzsKKworICBib29s
IGhhdmVfeGZpeGVzXzsKKyAgaW50IHhmaXhlc19ldmVudF9iYXNlXzsKKyAgaW50IHhmaXhlc19l
cnJvcl9iYXNlXzsKKworICBzdGQ6OnVuaXF1ZV9wdHI8TW91c2VDdXJzb3I+IGN1cnNvcl9zaGFw
ZV87Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19E
RVNLVE9QX0NBUFRVUkVfTElOVVhfTU9VU0VfQ1VSU09SX01PTklUT1JfWDExX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfcGlwZXdpcmUuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfcGlwZXdpcmUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI0ZDg1Mzdk
MzExNzhkZjQwYWQzMjQwNzRjMzBmNWNjZWQwMDkwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl9waXBld2lyZS5jYwpAQCAtMCwwICsxLDMwIEBACisv
KgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmgiCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNp
bmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK1Nj
cmVlbkNhcHR1cmVyUGlwZVdpcmU6OlNjcmVlbkNhcHR1cmVyUGlwZVdpcmUoKQorICAgIDogQmFz
ZUNhcHR1cmVyUGlwZVdpcmUoQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNhcHR1cmVTb3VyY2VUeXBl
OjpTY3JlZW4pIHt9CitTY3JlZW5DYXB0dXJlclBpcGVXaXJlOjp+U2NyZWVuQ2FwdHVyZXJQaXBl
V2lyZSgpIHt9CisKKy8vIHN0YXRpYworc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0dXJlcj4K
K1NjcmVlbkNhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJhd1NjcmVlbkNhcHR1cmVyKAorICAgIGNv
bnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgeworICByZXR1cm4gYWJzbDo6bWFr
ZV91bmlxdWU8U2NyZWVuQ2FwdHVyZXJQaXBlV2lyZT4oKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3
aXJlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfcGlwZXdpcmUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NmRjZDY4MGUwNmEzMjBmYTM3YWNmYmYwYmFmYjcyYjU2NzBlZWZhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmgKQEAgLTAs
MCArMSwzMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1Bf
Q0FQVFVSRV9MSU5VWF9TQ1JFRU5fQ0FQVFVSRVJfUElQRVdJUkVfSF8KKyNkZWZpbmUgTU9EVUxF
U19ERVNLVE9QX0NBUFRVUkVfTElOVVhfU0NSRUVOX0NBUFRVUkVSX1BJUEVXSVJFX0hfCisKKyNp
bmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51
eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFz
cyBTY3JlZW5DYXB0dXJlclBpcGVXaXJlIDogcHVibGljIEJhc2VDYXB0dXJlclBpcGVXaXJlIHsK
KyBwdWJsaWM6CisgIFNjcmVlbkNhcHR1cmVyUGlwZVdpcmUoKTsKKyAgflNjcmVlbkNhcHR1cmVy
UGlwZVdpcmUoKSBvdmVycmlkZTsKKworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BD
YXB0dXJlcj4gQ3JlYXRlUmF3U2NyZWVuQ2FwdHVyZXIoCisgICAgICBjb25zdCBEZXNrdG9wQ2Fw
dHVyZU9wdGlvbnMmIG9wdGlvbnMpOworCisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04o
U2NyZWVuQ2FwdHVyZXJQaXBlV2lyZSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisK
KyNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfU0NSRUVOX0NBUFRVUkVS
X1BJUEVXSVJFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJf
eDExLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3gxMS5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZDZhMDg1YjY1Y2NmYWFmM2YwZTI4NTNkNzk3Mzc3YzQ2OGE5YTc5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3gxMS5jYwpAQCAtMCwwICsxLDMz
NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfeDExLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcu
aD4KKworI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL1h1dGlsLmg+CisjaW5j
bHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25z
L1hmaXhlcy5oPgorCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRl
IDx1dGlsaXR5PgorCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9j
YXB0dXJlX29wdGlvbnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNr
dG9wX2NhcHR1cmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3Rv
cF9mcmFtZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfc2Vy
dmVyX3BpeGVsX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3Nj
cmVlbl9jYXB0dXJlX2ZyYW1lX3F1ZXVlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvc2NyZWVuX2NhcHR1cmVyX2hlbHBlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL3NoYXJlZF9kZXNrdG9wX2ZyYW1lLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3RpbWV1dGlscy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50LmgiCisKK25hbWVz
cGFjZSB3ZWJydGMgeworCitTY3JlZW5DYXB0dXJlclgxMTo6U2NyZWVuQ2FwdHVyZXJYMTEoKSB7
CisgIGhlbHBlcl8uU2V0TG9nR3JpZFNpemUoNCk7Cit9CisKK1NjcmVlbkNhcHR1cmVyWDExOjp+
U2NyZWVuQ2FwdHVyZXJYMTEoKSB7CisgIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5SZW1vdmVFdmVu
dEhhbmRsZXIoQ29uZmlndXJlTm90aWZ5LCB0aGlzKTsKKyAgaWYgKHVzZV9kYW1hZ2VfKSB7Cisg
ICAgb3B0aW9uc18ueF9kaXNwbGF5KCktPlJlbW92ZUV2ZW50SGFuZGxlcihkYW1hZ2VfZXZlbnRf
YmFzZV8gKyBYRGFtYWdlTm90aWZ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcyk7CisgIH0KKyAgRGVpbml0WGxpYigpOworfQorCitib29sIFNjcmVl
bkNhcHR1cmVyWDExOjpJbml0KGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykg
eworICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJTY3JlZW5DYXB0dXJlclgxMTo6SW5pdCIpOwor
ICBvcHRpb25zXyA9IG9wdGlvbnM7CisKKyAgcm9vdF93aW5kb3dfID0gUm9vdFdpbmRvdyhkaXNw
bGF5KCksIERlZmF1bHRTY3JlZW4oZGlzcGxheSgpKSk7CisgIGlmIChyb290X3dpbmRvd18gPT0g
QmFkVmFsdWUpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVW5hYmxlIHRvIGdldCB0aGUg
cm9vdCB3aW5kb3ciOworICAgIERlaW5pdFhsaWIoKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0K
KworICBnY18gPSBYQ3JlYXRlR0MoZGlzcGxheSgpLCByb290X3dpbmRvd18sIDAsIE5VTEwpOwor
ICBpZiAoZ2NfID09IE5VTEwpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVW5hYmxlIHRv
IGdldCBncmFwaGljcyBjb250ZXh0IjsKKyAgICBEZWluaXRYbGliKCk7CisgICAgcmV0dXJuIGZh
bHNlOworICB9CisKKyAgb3B0aW9uc18ueF9kaXNwbGF5KCktPkFkZEV2ZW50SGFuZGxlcihDb25m
aWd1cmVOb3RpZnksIHRoaXMpOworCisgIC8vIENoZWNrIGZvciBYRml4ZXMgZXh0ZW5zaW9uLiBU
aGlzIGlzIHJlcXVpcmVkIGZvciBjdXJzb3Igc2hhcGUKKyAgLy8gbm90aWZpY2F0aW9ucywgYW5k
IGZvciBvdXIgdXNlIG9mIFhEYW1hZ2UuCisgIGlmIChYRml4ZXNRdWVyeUV4dGVuc2lvbihkaXNw
bGF5KCksICZ4Zml4ZXNfZXZlbnRfYmFzZV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAm
eGZpeGVzX2Vycm9yX2Jhc2VfKSkgeworICAgIGhhc194Zml4ZXNfID0gdHJ1ZTsKKyAgfSBlbHNl
IHsKKyAgICBSVENfTE9HKExTX0lORk8pIDw8ICJYIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IFhG
aXhlcy4iOworICB9CisKKyAgLy8gUmVnaXN0ZXIgZm9yIGNoYW5nZXMgdG8gdGhlIGRpbWVuc2lv
bnMgb2YgdGhlIHJvb3Qgd2luZG93LgorICBYU2VsZWN0SW5wdXQoZGlzcGxheSgpLCByb290X3dp
bmRvd18sIFN0cnVjdHVyZU5vdGlmeU1hc2spOworCisgIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVm
ZmVyXy5Jbml0KGRpc3BsYXkoKSwgRGVmYXVsdFJvb3RXaW5kb3coZGlzcGxheSgpKSkpIHsKKyAg
ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgcGl4ZWwgYnVmZmVy
LiI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgaWYgKG9wdGlvbnNfLnVzZV91cGRhdGVf
bm90aWZpY2F0aW9ucygpKSB7CisgICAgSW5pdFhEYW1hZ2UoKTsKKyAgfQorCisgIHJldHVybiB0
cnVlOworfQorCit2b2lkIFNjcmVlbkNhcHR1cmVyWDExOjpJbml0WERhbWFnZSgpIHsKKyAgLy8g
T3VyIHVzZSBvZiBYRGFtYWdlIHJlcXVpcmVzIFhGaXhlcy4KKyAgaWYgKCFoYXNfeGZpeGVzXykg
eworICAgIHJldHVybjsKKyAgfQorCisgIC8vIENoZWNrIGZvciBYRGFtYWdlIGV4dGVuc2lvbi4K
KyAgaWYgKCFYRGFtYWdlUXVlcnlFeHRlbnNpb24oZGlzcGxheSgpLCAmZGFtYWdlX2V2ZW50X2Jh
c2VfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGFtYWdlX2Vycm9yX2Jhc2VfKSkg
eworICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlggc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgWERh
bWFnZS4iOworICAgIHJldHVybjsKKyAgfQorCisgIC8vIFRPRE8obGFtYnJvc2xhbWJyb3UpOiBE
aXNhYmxlIERBTUFHRSBpbiBzaXR1YXRpb25zIHdoZXJlIGl0IGlzIGtub3duCisgIC8vIHRvIGZh
aWwsIHN1Y2ggYXMgd2hlbiBEZXNrdG9wIEVmZmVjdHMgYXJlIGVuYWJsZWQsIHdpdGggZ3JhcGhp
Y3MKKyAgLy8gZHJpdmVycyAoblZpZGlhLCBBVEkpIHRoYXQgZmFpbCB0byByZXBvcnQgREFNQUdF
IG5vdGlmaWNhdGlvbnMKKyAgLy8gcHJvcGVybHkuCisKKyAgLy8gUmVxdWVzdCBub3RpZmljYXRp
b25zIGV2ZXJ5IHRpbWUgdGhlIHNjcmVlbiBiZWNvbWVzIGRhbWFnZWQuCisgIGRhbWFnZV9oYW5k
bGVfID0KKyAgICAgIFhEYW1hZ2VDcmVhdGUoZGlzcGxheSgpLCByb290X3dpbmRvd18sIFhEYW1h
Z2VSZXBvcnROb25FbXB0eSk7CisgIGlmICghZGFtYWdlX2hhbmRsZV8pIHsKKyAgICBSVENfTE9H
KExTX0VSUk9SKSA8PCAiVW5hYmxlIHRvIGluaXRpYWxpemUgWERhbWFnZS4iOworICAgIHJldHVy
bjsKKyAgfQorCisgIC8vIENyZWF0ZSBhbiBYRml4ZXMgc2VydmVyLXNpZGUgcmVnaW9uIHRvIGNv
bGxhdGUgZGFtYWdlIGludG8uCisgIGRhbWFnZV9yZWdpb25fID0gWEZpeGVzQ3JlYXRlUmVnaW9u
KGRpc3BsYXkoKSwgMCwgMCk7CisgIGlmICghZGFtYWdlX3JlZ2lvbl8pIHsKKyAgICBYRGFtYWdl
RGVzdHJveShkaXNwbGF5KCksIGRhbWFnZV9oYW5kbGVfKTsKKyAgICBSVENfTE9HKExTX0VSUk9S
KSA8PCAiVW5hYmxlIHRvIGNyZWF0ZSBYRml4ZXMgcmVnaW9uLiI7CisgICAgcmV0dXJuOworICB9
CisKKyAgb3B0aW9uc18ueF9kaXNwbGF5KCktPkFkZEV2ZW50SGFuZGxlcihkYW1hZ2VfZXZlbnRf
YmFzZV8gKyBYRGFtYWdlTm90aWZ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMpOworCisgIHVzZV9kYW1hZ2VfID0gdHJ1ZTsKKyAgUlRDX0xPRyhMU19JTkZP
KSA8PCAiVXNpbmcgWERhbWFnZSBleHRlbnNpb24uIjsKK30KKwordm9pZCBTY3JlZW5DYXB0dXJl
clgxMTo6U3RhcnQoQ2FsbGJhY2sqIGNhbGxiYWNrKSB7CisgIFJUQ19EQ0hFQ0soIWNhbGxiYWNr
Xyk7CisgIFJUQ19EQ0hFQ0soY2FsbGJhY2spOworCisgIGNhbGxiYWNrXyA9IGNhbGxiYWNrOwor
fQorCit2b2lkIFNjcmVlbkNhcHR1cmVyWDExOjpDYXB0dXJlRnJhbWUoKSB7CisgIFRSQUNFX0VW
RU5UMCgid2VicnRjIiwgIlNjcmVlbkNhcHR1cmVyWDExOjpDYXB0dXJlRnJhbWUiKTsKKyAgaW50
NjRfdCBjYXB0dXJlX3N0YXJ0X3RpbWVfbmFub3MgPSBydGM6OlRpbWVOYW5vcygpOworCisgIHF1
ZXVlXy5Nb3ZlVG9OZXh0RnJhbWUoKTsKKyAgUlRDX0RDSEVDSyghcXVldWVfLmN1cnJlbnRfZnJh
bWUoKSB8fCAhcXVldWVfLmN1cnJlbnRfZnJhbWUoKS0+SXNTaGFyZWQoKSk7CisKKyAgLy8gUHJv
Y2VzcyBYRXZlbnRzIGZvciBYRGFtYWdlIGFuZCBjdXJzb3Igc2hhcGUgdHJhY2tpbmcuCisgIG9w
dGlvbnNfLnhfZGlzcGxheSgpLT5Qcm9jZXNzUGVuZGluZ1hFdmVudHMoKTsKKworICAvLyBQcm9j
ZXNzUGVuZGluZ1hFdmVudHMoKSBtYXkgY2FsbCBTY3JlZW5Db25maWd1cmF0aW9uQ2hhbmdlZCgp
IHdoaWNoCisgIC8vIHJlaW5pdGlhbGl6ZXMgfHhfc2VydmVyX3BpeGVsX2J1ZmZlcl98LiBDaGVj
ayBpZiB0aGUgcGl4ZWwgYnVmZmVyIGlzIHN0aWxsCisgIC8vIGluIGEgZ29vZCBzaGFwZS4KKyAg
aWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLmlzX2luaXRpYWxpemVkKCkpIHsKKyAgICAvLyBX
ZSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBwaXhlbCBidWZmZXIuCisgICAgUlRDX0xPRyhMU19FUlJP
UikgPDwgIlBpeGVsIGJ1ZmZlciBpcyBub3QgaW5pdGlhbGl6ZWQuIjsKKyAgICBjYWxsYmFja18t
Pk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVOVCwgbnVsbHB0cik7CisgICAg
cmV0dXJuOworICB9CisKKyAgLy8gSWYgdGhlIGN1cnJlbnQgZnJhbWUgaXMgZnJvbSBhbiBvbGRl
ciBnZW5lcmF0aW9uIHRoZW4gYWxsb2NhdGUgYSBuZXcgb25lLgorICAvLyBOb3RlIHRoYXQgd2Ug
Y2FuJ3QgcmVhbGxvY2F0ZSBvdGhlciBidWZmZXJzIGF0IHRoaXMgcG9pbnQsIHNpbmNlIHRoZSBj
YWxsZXIKKyAgLy8gbWF5IHN0aWxsIGJlIHJlYWRpbmcgZnJvbSB0aGVtLgorICBpZiAoIXF1ZXVl
Xy5jdXJyZW50X2ZyYW1lKCkpIHsKKyAgICBxdWV1ZV8uUmVwbGFjZUN1cnJlbnRGcmFtZSgKKyAg
ICAgICAgU2hhcmVkRGVza3RvcEZyYW1lOjpXcmFwKHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJh
bWU+KAorICAgICAgICAgICAgbmV3IEJhc2ljRGVza3RvcEZyYW1lKHhfc2VydmVyX3BpeGVsX2J1
ZmZlcl8ud2luZG93X3NpemUoKSkpKSk7CisgIH0KKworICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3Rv
cEZyYW1lPiByZXN1bHQgPSBDYXB0dXJlU2NyZWVuKCk7CisgIGlmICghcmVzdWx0KSB7CisgICAg
UlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVGVtcG9yYXJpbHkgZmFpbGVkIHRvIGNhcHR1cmUgc2Ny
ZWVuLiI7CisgICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9URU1Q
T1JBUlksIG51bGxwdHIpOworICAgIHJldHVybjsKKyAgfQorCisgIGxhc3RfaW52YWxpZF9yZWdp
b25fID0gcmVzdWx0LT51cGRhdGVkX3JlZ2lvbigpOworICByZXN1bHQtPnNldF9jYXB0dXJlX3Rp
bWVfbXMoKHJ0Yzo6VGltZU5hbm9zKCkgLSBjYXB0dXJlX3N0YXJ0X3RpbWVfbmFub3MpIC8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6a051bU5hbm9zZWNzUGVyTWlsbGlzZWMp
OworICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OlNVQ0NFU1MsIHN0ZDo6bW92
ZShyZXN1bHQpKTsKK30KKworYm9vbCBTY3JlZW5DYXB0dXJlclgxMTo6R2V0U291cmNlTGlzdChT
b3VyY2VMaXN0KiBzb3VyY2VzKSB7CisgIFJUQ19EQ0hFQ0soc291cmNlcy0+c2l6ZSgpID09IDAp
OworICAvLyBUT0RPKGppYXlsKTogaW1wbGVtZW50IHNjcmVlbiBlbnVtZXJhdGlvbi4KKyAgc291
cmNlcy0+cHVzaF9iYWNrKHswfSk7CisgIHJldHVybiB0cnVlOworfQorCitib29sIFNjcmVlbkNh
cHR1cmVyWDExOjpTZWxlY3RTb3VyY2UoU291cmNlSWQgaWQpIHsKKyAgLy8gVE9ETyhqaWF5bCk6
IGltcGxlbWVudCBzY3JlZW4gc2VsZWN0aW9uLgorICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBT
Y3JlZW5DYXB0dXJlclgxMTo6SGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVudCYgZXZlbnQpIHsKKyAg
aWYgKHVzZV9kYW1hZ2VfICYmIChldmVudC50eXBlID09IGRhbWFnZV9ldmVudF9iYXNlXyArIFhE
YW1hZ2VOb3RpZnkpKSB7CisgICAgY29uc3QgWERhbWFnZU5vdGlmeUV2ZW50KiBkYW1hZ2VfZXZl
bnQgPQorICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFhEYW1hZ2VOb3RpZnlFdmVudCo+
KCZldmVudCk7CisgICAgaWYgKGRhbWFnZV9ldmVudC0+ZGFtYWdlICE9IGRhbWFnZV9oYW5kbGVf
KQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIFJUQ19EQ0hFQ0soZGFtYWdlX2V2ZW50LT5sZXZl
bCA9PSBYRGFtYWdlUmVwb3J0Tm9uRW1wdHkpOworICAgIHJldHVybiB0cnVlOworICB9IGVsc2Ug
aWYgKGV2ZW50LnR5cGUgPT0gQ29uZmlndXJlTm90aWZ5KSB7CisgICAgU2NyZWVuQ29uZmlndXJh
dGlvbkNoYW5nZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IFNjcmVlbkNhcHR1cmVyWDExOjpDYXB0
dXJlU2NyZWVuKCkgeworICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkRGVza3RvcEZyYW1lPiBmcmFt
ZSA9IHF1ZXVlXy5jdXJyZW50X2ZyYW1lKCktPlNoYXJlKCk7CisgIFJUQ19EQ0hFQ0soeF9zZXJ2
ZXJfcGl4ZWxfYnVmZmVyXy53aW5kb3dfc2l6ZSgpLmVxdWFscyhmcmFtZS0+c2l6ZSgpKSk7CisK
KyAgLy8gUGFzcyB0aGUgc2NyZWVuIHNpemUgdG8gdGhlIGhlbHBlciwgc28gaXQgY2FuIGNsaXAg
dGhlIGludmFsaWQgcmVnaW9uIGlmIGl0CisgIC8vIGV4cGFuZHMgdGhhdCByZWdpb24gdG8gYSBn
cmlkLgorICBoZWxwZXJfLnNldF9zaXplX21vc3RfcmVjZW50KGZyYW1lLT5zaXplKCkpOworCisg
IC8vIEluIHRoZSBEQU1BR0UgY2FzZSwgZW5zdXJlIHRoZSBmcmFtZSBpcyB1cC10by1kYXRlIHdp
dGggdGhlIHByZXZpb3VzIGZyYW1lCisgIC8vIGlmIGFueS4gIElmIHRoZXJlIGlzbid0IGEgcHJl
dmlvdXMgZnJhbWUsIHRoYXQgbWVhbnMgYSBzY3JlZW4tcmVzb2x1dGlvbgorICAvLyBjaGFuZ2Ug
b2NjdXJyZWQsIGFuZCB8aW52YWxpZF9yZWN0c3wgd2lsbCBiZSB1cGRhdGVkIHRvIGluY2x1ZGUg
dGhlIHdob2xlCisgIC8vIHNjcmVlbi4KKyAgaWYgKHVzZV9kYW1hZ2VfICYmIHF1ZXVlXy5wcmV2
aW91c19mcmFtZSgpKQorICAgIFN5bmNocm9uaXplRnJhbWUoKTsKKworICBEZXNrdG9wUmVnaW9u
KiB1cGRhdGVkX3JlZ2lvbiA9IGZyYW1lLT5tdXRhYmxlX3VwZGF0ZWRfcmVnaW9uKCk7CisKKyAg
eF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5TeW5jaHJvbml6ZSgpOworICBpZiAodXNlX2RhbWFnZV8g
JiYgcXVldWVfLnByZXZpb3VzX2ZyYW1lKCkpIHsKKyAgICAvLyBBdG9taWNhbGx5IGZldGNoIGFu
ZCBjbGVhciB0aGUgZGFtYWdlIHJlZ2lvbi4KKyAgICBYRGFtYWdlU3VidHJhY3QoZGlzcGxheSgp
LCBkYW1hZ2VfaGFuZGxlXywgTm9uZSwgZGFtYWdlX3JlZ2lvbl8pOworICAgIGludCByZWN0c19u
dW0gPSAwOworICAgIFhSZWN0YW5nbGUgYm91bmRzOworICAgIFhSZWN0YW5nbGUqIHJlY3RzID0g
WEZpeGVzRmV0Y2hSZWdpb25BbmRCb3VuZHMoZGlzcGxheSgpLCBkYW1hZ2VfcmVnaW9uXywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZWN0c19u
dW0sICZib3VuZHMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjdHNfbnVtOyArK2kpIHsK
KyAgICAgIHVwZGF0ZWRfcmVnaW9uLT5BZGRSZWN0KERlc2t0b3BSZWN0OjpNYWtlWFlXSCgKKyAg
ICAgICAgICByZWN0c1tpXS54LCByZWN0c1tpXS55LCByZWN0c1tpXS53aWR0aCwgcmVjdHNbaV0u
aGVpZ2h0KSk7CisgICAgfQorICAgIFhGcmVlKHJlY3RzKTsKKyAgICBoZWxwZXJfLkludmFsaWRh
dGVSZWdpb24oKnVwZGF0ZWRfcmVnaW9uKTsKKworICAgIC8vIENhcHR1cmUgdGhlIGRhbWFnZWQg
cG9ydGlvbnMgb2YgdGhlIGRlc2t0b3AuCisgICAgaGVscGVyXy5UYWtlSW52YWxpZFJlZ2lvbih1
cGRhdGVkX3JlZ2lvbik7CisKKyAgICAvLyBDbGlwIHRoZSBkYW1hZ2VkIHBvcnRpb25zIHRvIHRo
ZSBjdXJyZW50IHNjcmVlbiBzaXplLCBqdXN0IGluIGNhc2Ugc29tZQorICAgIC8vIHNwdXJpb3Vz
IFhEYW1hZ2Ugbm90aWZpY2F0aW9ucyB3ZXJlIHJlY2VpdmVkIGZvciBhIHByZXZpb3VzIChsYXJn
ZXIpCisgICAgLy8gc2NyZWVuIHNpemUuCisgICAgdXBkYXRlZF9yZWdpb24tPkludGVyc2VjdFdp
dGgoCisgICAgICAgIERlc2t0b3BSZWN0OjpNYWtlU2l6ZSh4X3NlcnZlcl9waXhlbF9idWZmZXJf
LndpbmRvd19zaXplKCkpKTsKKworICAgIGZvciAoRGVza3RvcFJlZ2lvbjo6SXRlcmF0b3IgaXQo
KnVwZGF0ZWRfcmVnaW9uKTsgIWl0LklzQXRFbmQoKTsKKyAgICAgICAgIGl0LkFkdmFuY2UoKSkg
eworICAgICAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLkNhcHR1cmVSZWN0KGl0LnJlY3Qo
KSwgZnJhbWUuZ2V0KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgIH0gZWxz
ZSB7CisgICAgLy8gRG9pbmcgZnVsbC1zY3JlZW4gcG9sbGluZywgb3IgdGhpcyBpcyB0aGUgZmly
c3QgY2FwdHVyZSBhZnRlciBhCisgICAgLy8gc2NyZWVuLXJlc29sdXRpb24gY2hhbmdlLiAgSW4g
ZWl0aGVyIGNhc2UsIG5lZWQgYSBmdWxsLXNjcmVlbiBjYXB0dXJlLgorICAgIERlc2t0b3BSZWN0
IHNjcmVlbl9yZWN0ID0gRGVza3RvcFJlY3Q6Ok1ha2VTaXplKGZyYW1lLT5zaXplKCkpOworICAg
IGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5DYXB0dXJlUmVjdChzY3JlZW5fcmVjdCwgZnJh
bWUuZ2V0KCkpKQorICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgdXBkYXRlZF9yZWdpb24tPlNl
dFJlY3Qoc2NyZWVuX3JlY3QpOworICB9CisKKyAgcmV0dXJuIHN0ZDo6bW92ZShmcmFtZSk7Cit9
CisKK3ZvaWQgU2NyZWVuQ2FwdHVyZXJYMTE6OlNjcmVlbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKCkg
eworICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJTY3JlZW5DYXB0dXJlclgxMTo6U2NyZWVuQ29u
ZmlndXJhdGlvbkNoYW5nZWQiKTsKKyAgLy8gTWFrZSBzdXJlIHRoZSBmcmFtZSBidWZmZXJzIHdp
bGwgYmUgcmVhbGxvY2F0ZWQuCisgIHF1ZXVlXy5SZXNldCgpOworCisgIGhlbHBlcl8uQ2xlYXJJ
bnZhbGlkUmVnaW9uKCk7CisgIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5Jbml0KGRpc3Bs
YXkoKSwgRGVmYXVsdFJvb3RXaW5kb3coZGlzcGxheSgpKSkpIHsKKyAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgcGl4ZWwgYnVmZmVyIGFmdGVyIHNjcmVlbiAi
CisgICAgICAgICAgICAgICAgICAgICAgICAgImNvbmZpZ3VyYXRpb24gY2hhbmdlLiI7CisgIH0K
K30KKwordm9pZCBTY3JlZW5DYXB0dXJlclgxMTo6U3luY2hyb25pemVGcmFtZSgpIHsKKyAgLy8g
U3luY2hyb25pemUgdGhlIGN1cnJlbnQgYnVmZmVyIHdpdGggdGhlIHByZXZpb3VzIG9uZSBzaW5j
ZSB3ZSBkbyBub3QKKyAgLy8gY2FwdHVyZSB0aGUgZW50aXJlIGRlc2t0b3AuIE5vdGUgdGhhdCBl
bmNvZGVyIG1heSBiZSByZWFkaW5nIGZyb20gdGhlCisgIC8vIHByZXZpb3VzIGJ1ZmZlciBhdCB0
aGlzIHRpbWUgc28gdGhyZWFkIGFjY2VzcyBjb21wbGFpbnRzIGFyZSBmYWxzZQorICAvLyBwb3Np
dGl2ZXMuCisKKyAgLy8gVE9ETyhoY2xhbSk6IFdlIGNhbiByZWR1Y2UgdGhlIGFtb3VudCBvZiBj
b3B5aW5nIGhlcmUgYnkgc3VidHJhY3RpbmcKKyAgLy8gfGNhcHR1cmVyX2hlbHBlcl98cyByZWdp
b24gZnJvbSB8bGFzdF9pbnZhbGlkX3JlZ2lvbl98LgorICAvLyBodHRwOi8vY3JidWcuY29tLzky
MzU0CisgIFJUQ19EQ0hFQ0socXVldWVfLnByZXZpb3VzX2ZyYW1lKCkpOworCisgIERlc2t0b3BG
cmFtZSogY3VycmVudCA9IHF1ZXVlXy5jdXJyZW50X2ZyYW1lKCk7CisgIERlc2t0b3BGcmFtZSog
bGFzdCA9IHF1ZXVlXy5wcmV2aW91c19mcmFtZSgpOworICBSVENfRENIRUNLKGN1cnJlbnQgIT0g
bGFzdCk7CisgIGZvciAoRGVza3RvcFJlZ2lvbjo6SXRlcmF0b3IgaXQobGFzdF9pbnZhbGlkX3Jl
Z2lvbl8pOyAhaXQuSXNBdEVuZCgpOworICAgICAgIGl0LkFkdmFuY2UoKSkgeworICAgIGN1cnJl
bnQtPkNvcHlQaXhlbHNGcm9tKCpsYXN0LCBpdC5yZWN0KCkudG9wX2xlZnQoKSwgaXQucmVjdCgp
KTsKKyAgfQorfQorCit2b2lkIFNjcmVlbkNhcHR1cmVyWDExOjpEZWluaXRYbGliKCkgeworICBp
ZiAoZ2NfKSB7CisgICAgWEZyZWVHQyhkaXNwbGF5KCksIGdjXyk7CisgICAgZ2NfID0gbnVsbHB0
cjsKKyAgfQorCisgIHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uUmVsZWFzZSgpOworCisgIGlmIChk
aXNwbGF5KCkpIHsKKyAgICBpZiAoZGFtYWdlX2hhbmRsZV8pIHsKKyAgICAgIFhEYW1hZ2VEZXN0
cm95KGRpc3BsYXkoKSwgZGFtYWdlX2hhbmRsZV8pOworICAgICAgZGFtYWdlX2hhbmRsZV8gPSAw
OworICAgIH0KKworICAgIGlmIChkYW1hZ2VfcmVnaW9uXykgeworICAgICAgWEZpeGVzRGVzdHJv
eVJlZ2lvbihkaXNwbGF5KCksIGRhbWFnZV9yZWdpb25fKTsKKyAgICAgIGRhbWFnZV9yZWdpb25f
ID0gMDsKKyAgICB9CisgIH0KK30KKworLy8gc3RhdGljCitzdGQ6OnVuaXF1ZV9wdHI8RGVza3Rv
cENhcHR1cmVyPiBTY3JlZW5DYXB0dXJlclgxMTo6Q3JlYXRlUmF3U2NyZWVuQ2FwdHVyZXIoCisg
ICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7CisgIGlmICghb3B0aW9u
cy54X2Rpc3BsYXkoKSkKKyAgICByZXR1cm4gbnVsbHB0cjsKKworICBzdGQ6OnVuaXF1ZV9wdHI8
U2NyZWVuQ2FwdHVyZXJYMTE+IGNhcHR1cmVyKG5ldyBTY3JlZW5DYXB0dXJlclgxMSgpKTsKKyAg
aWYgKCFjYXB0dXJlci5nZXQoKS0+SW5pdChvcHRpb25zKSkgeworICAgIHJldHVybiBudWxscHRy
OworICB9CisKKyAgcmV0dXJuIHN0ZDo6bW92ZShjYXB0dXJlcik7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl94
MTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl94MTEuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZjNiNjBjM2Q4N2U1YjE3ZGQ1OTQ5Nzc3ODUxZmI5Y2M0OWI5OGUzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3gxMS5oCkBAIC0wLDAgKzEsMTIzIEBA
CisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJ
TlVYX1NDUkVFTl9DQVBUVVJFUl9YMTFfSF8KKyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRV
UkVfTElOVVhfU0NSRUVOX0NBUFRVUkVSX1gxMV9IXworCisjaW5jbHVkZSA8WDExL1hsaWIuaD4K
KyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZGFtYWdlLmg+CisKKyNpbmNsdWRlIDxtZW1vcnk+
CisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJtb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVfb3B0aW9ucy5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgiCisjaW5jbHVkZSAibW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVfZnJhbWVfcXVldWUuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fY2FwdHVyZXJfaGVscGVyLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2hhcmVkX2Rlc2t0b3BfZnJhbWUu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisKK25hbWVzcGFjZSB3
ZWJydGMgeworCisvLyBBIGNsYXNzIHRvIHBlcmZvcm0gdmlkZW8gZnJhbWUgY2FwdHVyaW5nIGZv
ciBMaW51eCBvbiBYMTEuCisvLworLy8gSWYgWERhbWFnZSBpcyB1c2VkLCB0aGlzIGNsYXNzIHNl
dHMgRGVza3RvcEZyYW1lOjp1cGRhdGVkX3JlZ2lvbigpIGFjY29yZGluZworLy8gdG8gdGhlIGFy
ZWFzIHJlcG9ydGVkIGJ5IFhEYW1hZ2UuIE90aGVyd2lzZSB0aGlzIGNsYXNzIGRvZXMgbm90IGRl
dGVjdAorLy8gRGVza3RvcEZyYW1lOjp1cGRhdGVkX3JlZ2lvbigpLCB0aGUgZmllbGQgaXMgYWx3
YXlzIHNldCB0byB0aGUgZW50aXJlIGZyYW1lCisvLyByZWN0YW5nbGUuIFNjcmVlbkNhcHR1cmVy
RGlmZmVyV3JhcHBlciBzaG91bGQgYmUgdXNlZCBpZiB0aGF0IGZ1bmN0aW9uYWxpdHkKKy8vIGlz
IG5lY2Vzc2FyeS4KK2NsYXNzIFNjcmVlbkNhcHR1cmVyWDExIDogcHVibGljIERlc2t0b3BDYXB0
dXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNoYXJlZFhEaXNwbGF5OjpY
RXZlbnRIYW5kbGVyIHsKKyBwdWJsaWM6CisgIFNjcmVlbkNhcHR1cmVyWDExKCk7CisgIH5TY3Jl
ZW5DYXB0dXJlclgxMSgpIG92ZXJyaWRlOworCisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVz
a3RvcENhcHR1cmVyPiBDcmVhdGVSYXdTY3JlZW5DYXB0dXJlcigKKyAgICAgIGNvbnN0IERlc2t0
b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7CisKKyAgLy8gVE9ETyhhandvbmcpOiBEbyB3ZSBy
ZWFsbHkgd2FudCB0aGlzIHRvIGJlIHN5bmNocm9ub3VzPworICBib29sIEluaXQoY29uc3QgRGVz
a3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKTsKKworICAvLyBEZXNrdG9wQ2FwdHVyZXIgaW50
ZXJmYWNlLgorICB2b2lkIFN0YXJ0KENhbGxiYWNrKiBkZWxlZ2F0ZSkgb3ZlcnJpZGU7CisgIHZv
aWQgQ2FwdHVyZUZyYW1lKCkgb3ZlcnJpZGU7CisgIGJvb2wgR2V0U291cmNlTGlzdChTb3VyY2VM
aXN0KiBzb3VyY2VzKSBvdmVycmlkZTsKKyAgYm9vbCBTZWxlY3RTb3VyY2UoU291cmNlSWQgaWQp
IG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgRGlzcGxheSogZGlzcGxheSgpIHsgcmV0dXJuIG9w
dGlvbnNfLnhfZGlzcGxheSgpLT5kaXNwbGF5KCk7IH0KKworICAvLyBTaGFyZWRYRGlzcGxheTo6
WEV2ZW50SGFuZGxlciBpbnRlcmZhY2UuCisgIGJvb2wgSGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVu
dCYgZXZlbnQpIG92ZXJyaWRlOworCisgIHZvaWQgSW5pdFhEYW1hZ2UoKTsKKworICAvLyBDYXB0
dXJlIHNjcmVlbiBwaXhlbHMgdG8gdGhlIGN1cnJlbnQgYnVmZmVyIGluIHRoZSBxdWV1ZS4gSW4g
dGhlIERBTUFHRQorICAvLyBjYXNlLCB0aGUgU2NyZWVuQ2FwdHVyZXJIZWxwZXIgYWxyZWFkeSBo
b2xkcyB0aGUgbGlzdCBvZiBpbnZhbGlkIHJlY3RhbmdsZXMKKyAgLy8gZnJvbSBIYW5kbGVYRXZl
bnQoKS4gSW4gdGhlIG5vbi1EQU1BR0UgY2FzZSwgdGhpcyBjYXB0dXJlcyB0aGUKKyAgLy8gd2hv
bGUgc2NyZWVuLCB0aGVuIGNhbGN1bGF0ZXMgc29tZSBpbnZhbGlkIHJlY3RhbmdsZXMgdGhhdCBp
bmNsdWRlIGFueQorICAvLyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2aW91
cyBjYXB0dXJlLgorICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBDYXB0dXJlU2NyZWVu
KCk7CisKKyAgLy8gQ2FsbGVkIHdoZW4gdGhlIHNjcmVlbiBjb25maWd1cmF0aW9uIGlzIGNoYW5n
ZWQuCisgIHZvaWQgU2NyZWVuQ29uZmlndXJhdGlvbkNoYW5nZWQoKTsKKworICAvLyBTeW5jaHJv
bml6ZSB0aGUgY3VycmVudCBidWZmZXIgd2l0aCB8bGFzdF9idWZmZXJffCwgYnkgY29weWluZyBw
aXhlbHMgZnJvbQorICAvLyB0aGUgYXJlYSBvZiB8bGFzdF9pbnZhbGlkX3JlY3RzfC4KKyAgLy8g
Tm90ZSB0aGlzIG9ubHkgd29ya3Mgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBrTnVtQnVmZmVycyA9
PSAyLCBhcworICAvLyB8bGFzdF9pbnZhbGlkX3JlY3RzfCBob2xkcyB0aGUgZGlmZmVyZW5jZXMg
ZnJvbSB0aGUgcHJldmlvdXMgYnVmZmVyIGFuZAorICAvLyB0aGUgb25lIHByaW9yIHRvIHRoYXQg
KHdoaWNoIHdpbGwgdGhlbiBiZSB0aGUgY3VycmVudCBidWZmZXIpLgorICB2b2lkIFN5bmNocm9u
aXplRnJhbWUoKTsKKworICB2b2lkIERlaW5pdFhsaWIoKTsKKworICBEZXNrdG9wQ2FwdHVyZU9w
dGlvbnMgb3B0aW9uc187CisKKyAgQ2FsbGJhY2sqIGNhbGxiYWNrXyA9IG51bGxwdHI7CisKKyAg
Ly8gWDExIGdyYXBoaWNzIGNvbnRleHQuCisgIEdDIGdjXyA9IG51bGxwdHI7CisgIFdpbmRvdyBy
b290X3dpbmRvd18gPSBCYWRWYWx1ZTsKKworICAvLyBYRml4ZXMuCisgIGJvb2wgaGFzX3hmaXhl
c18gPSBmYWxzZTsKKyAgaW50IHhmaXhlc19ldmVudF9iYXNlXyA9IC0xOworICBpbnQgeGZpeGVz
X2Vycm9yX2Jhc2VfID0gLTE7CisKKyAgLy8gWERhbWFnZSBpbmZvcm1hdGlvbi4KKyAgYm9vbCB1
c2VfZGFtYWdlXyA9IGZhbHNlOworICBEYW1hZ2UgZGFtYWdlX2hhbmRsZV8gPSAwOworICBpbnQg
ZGFtYWdlX2V2ZW50X2Jhc2VfID0gLTE7CisgIGludCBkYW1hZ2VfZXJyb3JfYmFzZV8gPSAtMTsK
KyAgWHNlcnZlclJlZ2lvbiBkYW1hZ2VfcmVnaW9uXyA9IDA7CisKKyAgLy8gQWNjZXNzIHRvIHRo
ZSBYIFNlcnZlcidzIHBpeGVsIGJ1ZmZlci4KKyAgWFNlcnZlclBpeGVsQnVmZmVyIHhfc2VydmVy
X3BpeGVsX2J1ZmZlcl87CisKKyAgLy8gQSB0aHJlYWQtc2FmZSBsaXN0IG9mIGludmFsaWQgcmVj
dGFuZ2xlcywgYW5kIHRoZSBzaXplIG9mIHRoZSBtb3N0CisgIC8vIHJlY2VudGx5IGNhcHR1cmVk
IHNjcmVlbi4KKyAgU2NyZWVuQ2FwdHVyZXJIZWxwZXIgaGVscGVyXzsKKworICAvLyBRdWV1ZSBv
ZiB0aGUgZnJhbWVzIGJ1ZmZlcnMuCisgIFNjcmVlbkNhcHR1cmVGcmFtZVF1ZXVlPFNoYXJlZERl
c2t0b3BGcmFtZT4gcXVldWVfOworCisgIC8vIEludmFsaWQgcmVnaW9uIGZyb20gdGhlIHByZXZp
b3VzIGNhcHR1cmUuIFRoaXMgaXMgdXNlZCB0byBzeW5jaHJvbml6ZSB0aGUKKyAgLy8gY3VycmVu
dCB3aXRoIHRoZSBsYXN0IGJ1ZmZlciB1c2VkLgorICBEZXNrdG9wUmVnaW9uIGxhc3RfaW52YWxp
ZF9yZWdpb25fOworCisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2NyZWVuQ2FwdHVy
ZXJYMTEpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVM
RVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1NDUkVFTl9DQVBUVVJFUl9YMTFfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJlZF94X2Rpc3BsYXkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9z
aGFyZWRfeF9kaXNwbGF5LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NzVkYjZlNzg3NTliNTNhYmJlZTk3N2Yw
OWI2MGU0MDU2YWMwNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zaGFyZWRf
eF9kaXNwbGF5LmNjCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDEz
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxheS5o
IgorCisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKworI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
KworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK1NoYXJlZFhEaXNwbGF5OjpTaGFyZWRYRGlzcGxheShE
aXNwbGF5KiBkaXNwbGF5KSA6IGRpc3BsYXlfKGRpc3BsYXkpIHsKKyAgUlRDX0RDSEVDSyhkaXNw
bGF5Xyk7Cit9CisKK1NoYXJlZFhEaXNwbGF5Ojp+U2hhcmVkWERpc3BsYXkoKSB7CisgIFJUQ19E
Q0hFQ0soZXZlbnRfaGFuZGxlcnNfLmVtcHR5KCkpOworICBYQ2xvc2VEaXNwbGF5KGRpc3BsYXlf
KTsKK30KKworLy8gc3RhdGljCitydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVkWERpc3BsYXk+IFNo
YXJlZFhEaXNwbGF5OjpDcmVhdGUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRpc3BsYXlfbmFt
ZSkgeworICBEaXNwbGF5KiBkaXNwbGF5ID0KKyAgICAgIFhPcGVuRGlzcGxheShkaXNwbGF5X25h
bWUuZW1wdHkoKSA/IE5VTEwgOiBkaXNwbGF5X25hbWUuY19zdHIoKSk7CisgIGlmICghZGlzcGxh
eSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJVbmFibGUgdG8gb3BlbiBkaXNwbGF5IjsK
KyAgICByZXR1cm4gTlVMTDsKKyAgfQorICByZXR1cm4gbmV3IFNoYXJlZFhEaXNwbGF5KGRpc3Bs
YXkpOworfQorCisvLyBzdGF0aWMKK3J0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRYRGlzcGxheT4g
U2hhcmVkWERpc3BsYXk6OkNyZWF0ZURlZmF1bHQoKSB7CisgIHJldHVybiBDcmVhdGUoc3RkOjpz
dHJpbmcoKSk7Cit9CisKK3ZvaWQgU2hhcmVkWERpc3BsYXk6OkFkZEV2ZW50SGFuZGxlcihpbnQg
dHlwZSwgWEV2ZW50SGFuZGxlciogaGFuZGxlcikgeworICBldmVudF9oYW5kbGVyc19bdHlwZV0u
cHVzaF9iYWNrKGhhbmRsZXIpOworfQorCit2b2lkIFNoYXJlZFhEaXNwbGF5OjpSZW1vdmVFdmVu
dEhhbmRsZXIoaW50IHR5cGUsIFhFdmVudEhhbmRsZXIqIGhhbmRsZXIpIHsKKyAgRXZlbnRIYW5k
bGVyc01hcDo6aXRlcmF0b3IgaGFuZGxlcnMgPSBldmVudF9oYW5kbGVyc18uZmluZCh0eXBlKTsK
KyAgaWYgKGhhbmRsZXJzID09IGV2ZW50X2hhbmRsZXJzXy5lbmQoKSkKKyAgICByZXR1cm47CisK
KyAgc3RkOjp2ZWN0b3I8WEV2ZW50SGFuZGxlcio+OjppdGVyYXRvciBuZXdfZW5kID0KKyAgICAg
IHN0ZDo6cmVtb3ZlKGhhbmRsZXJzLT5zZWNvbmQuYmVnaW4oKSwgaGFuZGxlcnMtPnNlY29uZC5l
bmQoKSwgaGFuZGxlcik7CisgIGhhbmRsZXJzLT5zZWNvbmQuZXJhc2UobmV3X2VuZCwgaGFuZGxl
cnMtPnNlY29uZC5lbmQoKSk7CisKKyAgLy8gQ2hlY2sgaWYgbm8gaGFuZGxlcnMgbGVmdCBmb3Ig
dGhpcyBldmVudC4KKyAgaWYgKGhhbmRsZXJzLT5zZWNvbmQuZW1wdHkoKSkKKyAgICBldmVudF9o
YW5kbGVyc18uZXJhc2UoaGFuZGxlcnMpOworfQorCit2b2lkIFNoYXJlZFhEaXNwbGF5OjpQcm9j
ZXNzUGVuZGluZ1hFdmVudHMoKSB7CisgIC8vIEhvbGQgcmVmZXJlbmNlIHRvIHx0aGlzfCB0byBw
cmV2ZW50IGl0IGZyb20gYmVpbmcgZGVzdHJveWVkIHdoaWxlCisgIC8vIHByb2Nlc3NpbmcgZXZl
bnRzLgorICBydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVkWERpc3BsYXk+IHNlbGYodGhpcyk7CisK
KyAgLy8gRmluZCB0aGUgbnVtYmVyIG9mIGV2ZW50cyB0aGF0IGFyZSBvdXRzdGFuZGluZyAibm93
LiIgIFdlIGRvbid0IGp1c3QgbG9vcAorICAvLyBvbiBYUGVuZGluZyBiZWNhdXNlIHdlIHdhbnQg
dG8gZ3VhcmFudGVlIHRoaXMgdGVybWluYXRlcy4KKyAgaW50IGV2ZW50c190b19wcm9jZXNzID0g
WFBlbmRpbmcoZGlzcGxheSgpKTsKKyAgWEV2ZW50IGU7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCBldmVudHNfdG9fcHJvY2VzczsgaSsrKSB7CisgICAgWE5leHRFdmVudChkaXNwbGF5KCksICZl
KTsKKyAgICBFdmVudEhhbmRsZXJzTWFwOjppdGVyYXRvciBoYW5kbGVycyA9IGV2ZW50X2hhbmRs
ZXJzXy5maW5kKGUudHlwZSk7CisgICAgaWYgKGhhbmRsZXJzID09IGV2ZW50X2hhbmRsZXJzXy5l
bmQoKSkKKyAgICAgIGNvbnRpbnVlOworICAgIGZvciAoc3RkOjp2ZWN0b3I8WEV2ZW50SGFuZGxl
cio+OjppdGVyYXRvciBpdCA9IGhhbmRsZXJzLT5zZWNvbmQuYmVnaW4oKTsKKyAgICAgICAgIGl0
ICE9IGhhbmRsZXJzLT5zZWNvbmQuZW5kKCk7ICsraXQpIHsKKyAgICAgIGlmICgoKml0KS0+SGFu
ZGxlWEV2ZW50KGUpKQorICAgICAgICBicmVhazsKKyAgICB9CisgIH0KK30KKworfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxh
eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxheS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExNGY0
MWZhYjhhM2I3MzI0MTc3NzQwNWIxYWM0NzYxODhlYTE3MjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9saW51eC9zaGFyZWRfeF9kaXNwbGF5LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhf
U0hBUkVEX1hfRElTUExBWV9IXworI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5V
WF9TSEFSRURfWF9ESVNQTEFZX0hfCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8dmVjdG9y
PgorCisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYXBpL3JlZmNvdW50ZWRiYXNlLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL3Njb3BlZF9yZWZfcHRyLmgiCisKKy8vIEluY2x1ZGluZyBYbGliLmggd2lsbCBpbnZvbHZl
IGV2aWwgZGVmaW5lcyAoQm9vbCwgU3RhdHVzLCBUcnVlLCBGYWxzZSksIHdoaWNoCisvLyBlYXNp
bHkgY29uZmxpY3Qgd2l0aCBvdGhlciBoZWFkZXJzLgordHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5
IERpc3BsYXk7Cit0eXBlZGVmIHVuaW9uIF9YRXZlbnQgWEV2ZW50OworCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworLy8gQSByZWYtY291bnRlZCBvYmplY3QgdG8gc3RvcmUgWERpc3BsYXkgY29ubmVj
dGlvbi4KK2NsYXNzIFNoYXJlZFhEaXNwbGF5IDogcHVibGljIHJ0Yzo6UmVmQ291bnRlZEJhc2Ug
eworIHB1YmxpYzoKKyAgY2xhc3MgWEV2ZW50SGFuZGxlciB7CisgICBwdWJsaWM6CisgICAgdmly
dHVhbCB+WEV2ZW50SGFuZGxlcigpIHt9CisKKyAgICAvLyBQcm9jZXNzZXMgWEV2ZW50LiBSZXR1
cm5zIHRydWUgaWYgdGhlIGV2ZW50IGhhcyBiZWVuIGhhbmRsZWQuCisgICAgdmlydHVhbCBib29s
IEhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSA9IDA7CisgIH07CisKKyAgLy8gVGFr
ZXMgb3duZXJzaGlwIG9mIHxkaXNwbGF5fC4KKyAgZXhwbGljaXQgU2hhcmVkWERpc3BsYXkoRGlz
cGxheSogZGlzcGxheSk7CisKKyAgLy8gQ3JlYXRlcyBhIG5ldyBYMTEgRGlzcGxheSBmb3IgdGhl
IHxkaXNwbGF5X25hbWV8LiBOVUxMIGlzIHJldHVybmVkIGlmIFgxMQorICAvLyBjb25uZWN0aW9u
IGZhaWxlZC4gRXF1aXZhbGVudCB0byBDcmVhdGVEZWZhdWx0KCkgd2hlbiB8ZGlzcGxheV9uYW1l
fCBpcworICAvLyBlbXB0eS4KKyAgc3RhdGljIHJ0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRYRGlz
cGxheT4gQ3JlYXRlKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRpc3BsYXlfbmFtZSk7CisK
KyAgLy8gQ3JlYXRlcyBYMTEgRGlzcGxheSBjb25uZWN0aW9uIGZvciB0aGUgZGVmYXVsdCBkaXNw
bGF5IChlLmcuIHNwZWNpZmllZCBpbgorICAvLyBESVNQTEFZKS4gTlVMTCBpcyByZXR1cm5lZCBp
ZiBYMTEgY29ubmVjdGlvbiBmYWlsZWQuCisgIHN0YXRpYyBydGM6OnNjb3BlZF9yZWZwdHI8U2hh
cmVkWERpc3BsYXk+IENyZWF0ZURlZmF1bHQoKTsKKworICBEaXNwbGF5KiBkaXNwbGF5KCkgeyBy
ZXR1cm4gZGlzcGxheV87IH0KKworICAvLyBBZGRzIGEgbmV3IGV2ZW50IHxoYW5kbGVyfCBmb3Ig
WEV2ZW50J3Mgb2YgfHR5cGV8LgorICB2b2lkIEFkZEV2ZW50SGFuZGxlcihpbnQgdHlwZSwgWEV2
ZW50SGFuZGxlciogaGFuZGxlcik7CisKKyAgLy8gUmVtb3ZlcyBldmVudCB8aGFuZGxlcnwgYWRk
ZWQgdXNpbmcgfEFkZEV2ZW50SGFuZGxlcnwuIERvZXNuJ3QgZG8gYW55dGhpbmcKKyAgLy8gaWYg
fGhhbmRsZXJ8IGlzIG5vdCByZWdpc3RlcmVkLgorICB2b2lkIFJlbW92ZUV2ZW50SGFuZGxlcihp
bnQgdHlwZSwgWEV2ZW50SGFuZGxlciogaGFuZGxlcik7CisKKyAgLy8gUHJvY2Vzc2VzIHBlbmRp
bmcgWEV2ZW50cywgY2FsbGluZyBjb3JyZXNwb25kaW5nIGV2ZW50IGhhbmRsZXJzLgorICB2b2lk
IFByb2Nlc3NQZW5kaW5nWEV2ZW50cygpOworCisgcHJvdGVjdGVkOgorICB+U2hhcmVkWERpc3Bs
YXkoKSBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIHR5cGVkZWYgc3RkOjptYXA8aW50LCBzdGQ6
OnZlY3RvcjxYRXZlbnRIYW5kbGVyKj4gPiBFdmVudEhhbmRsZXJzTWFwOworCisgIERpc3BsYXkq
IGRpc3BsYXlfOworCisgIEV2ZW50SGFuZGxlcnNNYXAgZXZlbnRfaGFuZGxlcnNfOworCisgIFJU
Q19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2hhcmVkWERpc3BsYXkpOworfTsKKworfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJ
TlVYX1NIQVJFRF9YX0RJU1BMQVlfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRv
d19jYXB0dXJlcl9waXBld2lyZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl9w
aXBld2lyZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzE5NWFhZjRhMDE0MjM0MDdjNzI3Y2I2MDJjNTRlZDc2
ZTlkOWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVy
X3BpcGV3aXJlLmNjCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNs
dWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdp
cmUuaCIKKworI2luY2x1ZGUgPG1lbW9yeT4KKworI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9y
eS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworV2luZG93Q2FwdHVyZXJQaXBlV2lyZTo6V2lu
ZG93Q2FwdHVyZXJQaXBlV2lyZSgpCisgICAgOiBCYXNlQ2FwdHVyZXJQaXBlV2lyZShCYXNlQ2Fw
dHVyZXJQaXBlV2lyZTo6Q2FwdHVyZVNvdXJjZVR5cGU6OldpbmRvdykge30KK1dpbmRvd0NhcHR1
cmVyUGlwZVdpcmU6On5XaW5kb3dDYXB0dXJlclBpcGVXaXJlKCkge30KKworLy8gc3RhdGljCitz
dGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPgorV2luZG93Q2FwdHVyZXJQaXBlV2lyZTo6
Q3JlYXRlUmF3V2luZG93Q2FwdHVyZXIoCisgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25z
JiBvcHRpb25zKSB7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxXaW5kb3dDYXB0dXJlclBp
cGVXaXJlPigpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dp
bmRvd19jYXB0dXJlcl9waXBld2lyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMTg0ZWYyOTk5MmRmY2I3ODg0
Y2VmZTMyZWJhNTkxZDcxNmY0NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93
aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogIENvcHly
aWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRPV19DQVBU
VVJFUl9QSVBFV0lSRV9IXworI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9X
SU5ET1dfQ0FQVFVSRVJfUElQRVdJUkVfSF8KKworI2luY2x1ZGUgPG1lbW9yeT4KKworI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUu
aCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIFdpbmRvd0NhcHR1cmVyUGlwZVdpcmUg
OiBwdWJsaWMgQmFzZUNhcHR1cmVyUGlwZVdpcmUgeworIHB1YmxpYzoKKyAgV2luZG93Q2FwdHVy
ZXJQaXBlV2lyZSgpOworICB+V2luZG93Q2FwdHVyZXJQaXBlV2lyZSgpIG92ZXJyaWRlOworCisg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBDcmVhdGVSYXdXaW5kb3dD
YXB0dXJlcigKKyAgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7CisK
KyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihXaW5kb3dDYXB0dXJlclBpcGVXaXJlKTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tU
T1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfQ0FQVFVSRVJfUElQRVdJUkVfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl94MTEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93
aW5kb3dfY2FwdHVyZXJfeDExLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlZjdjNWNiMzg4MmVlYmY0YTMyNWIw
MTY2NGY5MzVkNTZiMzQyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5k
b3dfY2FwdHVyZXJfeDExLmNjCkBAIC0wLDAgKzEsMjQ0IEBACisvKgorICogIENvcHlyaWdodCAo
YykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0
dXJlcl94MTEuaCIKKworI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgorI2luY2x1ZGUgPFgxMS9leHRl
bnNpb25zL1hjb21wb3NpdGUuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YcmVuZGVyLmg+
CisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxp
dHk+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxh
eS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19maW5k
ZXJfeDExLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93
X2xpc3RfdXRpbHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsK
KworV2luZG93Q2FwdHVyZXJYMTE6OldpbmRvd0NhcHR1cmVyWDExKGNvbnN0IERlc2t0b3BDYXB0
dXJlT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IHhfZGlzcGxheV8ob3B0aW9ucy54X2Rpc3BsYXko
KSksCisgICAgICBhdG9tX2NhY2hlXyhkaXNwbGF5KCkpLAorICAgICAgd2luZG93X2ZpbmRlcl8o
JmF0b21fY2FjaGVfKSB7CisgIGludCBldmVudF9iYXNlLCBlcnJvcl9iYXNlLCBtYWpvcl92ZXJz
aW9uLCBtaW5vcl92ZXJzaW9uOworICBpZiAoWENvbXBvc2l0ZVF1ZXJ5RXh0ZW5zaW9uKGRpc3Bs
YXkoKSwgJmV2ZW50X2Jhc2UsICZlcnJvcl9iYXNlKSAmJgorICAgICAgWENvbXBvc2l0ZVF1ZXJ5
VmVyc2lvbihkaXNwbGF5KCksICZtYWpvcl92ZXJzaW9uLCAmbWlub3JfdmVyc2lvbikgJiYKKyAg
ICAgIC8vIFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKCkgcmVxdWlyZXMgdmVyc2lvbiAwLjIK
KyAgICAgIChtYWpvcl92ZXJzaW9uID4gMCB8fCBtaW5vcl92ZXJzaW9uID49IDIpKSB7CisgICAg
aGFzX2NvbXBvc2l0ZV9leHRlbnNpb25fID0gdHJ1ZTsKKyAgfSBlbHNlIHsKKyAgICBSVENfTE9H
KExTX0lORk8pIDw8ICJYY29tcG9zaXRlIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlIG9yIHRvbyBv
bGQuIjsKKyAgfQorCisgIHhfZGlzcGxheV8tPkFkZEV2ZW50SGFuZGxlcihDb25maWd1cmVOb3Rp
ZnksIHRoaXMpOworfQorCitXaW5kb3dDYXB0dXJlclgxMTo6fldpbmRvd0NhcHR1cmVyWDExKCkg
eworICB4X2Rpc3BsYXlfLT5SZW1vdmVFdmVudEhhbmRsZXIoQ29uZmlndXJlTm90aWZ5LCB0aGlz
KTsKK30KKworYm9vbCBXaW5kb3dDYXB0dXJlclgxMTo6R2V0U291cmNlTGlzdChTb3VyY2VMaXN0
KiBzb3VyY2VzKSB7CisgIHJldHVybiBHZXRXaW5kb3dMaXN0KCZhdG9tX2NhY2hlXywgW3RoaXMs
IHNvdXJjZXNdKDo6V2luZG93IHdpbmRvdykgeworICAgIFNvdXJjZSB3OworICAgIHcuaWQgPSB3
aW5kb3c7CisgICAgaWYgKHRoaXMtPkdldFdpbmRvd1RpdGxlKHdpbmRvdywgJncudGl0bGUpKSB7
CisgICAgICBzb3VyY2VzLT5wdXNoX2JhY2sodyk7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
ICB9KTsKK30KKworYm9vbCBXaW5kb3dDYXB0dXJlclgxMTo6U2VsZWN0U291cmNlKFNvdXJjZUlk
IGlkKSB7CisgIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5Jbml0KGRpc3BsYXkoKSwgaWQp
KQorICAgIHJldHVybiBmYWxzZTsKKworICAvLyBUZWxsIHRoZSBYIHNlcnZlciB0byBzZW5kIHVz
IHdpbmRvdyByZXNpemluZyBldmVudHMuCisgIFhTZWxlY3RJbnB1dChkaXNwbGF5KCksIGlkLCBT
dHJ1Y3R1cmVOb3RpZnlNYXNrKTsKKworICBzZWxlY3RlZF93aW5kb3dfID0gaWQ7CisKKyAgLy8g
SW4gYWRkaXRpb24gdG8gbmVlZGluZyBYMTEgc2VydmVyLXNpZGUgc3VwcG9ydCBmb3IgWGNvbXBv
c2l0ZSwgaXQgYWN0dWFsbHkKKyAgLy8gbmVlZHMgdG8gYmUgdHVybmVkIG9uIGZvciB0aGUgd2lu
ZG93LiBJZiB0aGUgdXNlciBoYXMgbW9kZXJuCisgIC8vIGhhcmR3YXJlL2RyaXZlcnMgYnV0IGlz
bid0IHVzaW5nIGEgY29tcG9zaXRpbmcgd2luZG93IG1hbmFnZXIsIHRoYXQgd29uJ3QKKyAgLy8g
YmUgdGhlIGNhc2UuIEhlcmUgd2UgYXV0b21hdGljYWxseSB0dXJuIGl0IG9uLgorCisgIC8vIFJl
ZGlyZWN0IGRyYXdpbmcgdG8gYW4gb2Zmc2NyZWVuIGJ1ZmZlciAoaWUsIHR1cm4gb24gY29tcG9z
aXRpbmcpLiBYMTEKKyAgLy8gcmVtZW1iZXJzIHdobyBoYXMgcmVxdWVzdGVkIHRoaXMgYW5kIHdp
bGwgdHVybiBpdCBvZmYgZm9yIHVzIHdoZW4gd2UgZXhpdC4KKyAgWENvbXBvc2l0ZVJlZGlyZWN0
V2luZG93KGRpc3BsYXkoKSwgaWQsIENvbXBvc2l0ZVJlZGlyZWN0QXV0b21hdGljKTsKKworICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXaW5kb3dDYXB0dXJlclgxMTo6Rm9jdXNPblNlbGVjdGVk
U291cmNlKCkgeworICBpZiAoIXNlbGVjdGVkX3dpbmRvd18pCisgICAgcmV0dXJuIGZhbHNlOwor
CisgIHVuc2lnbmVkIGludCBudW1fY2hpbGRyZW47CisgIDo6V2luZG93KiBjaGlsZHJlbjsKKyAg
OjpXaW5kb3cgcGFyZW50OworICA6OldpbmRvdyByb290OworICAvLyBGaW5kIHRoZSByb290IHdp
bmRvdyB0byBwYXNzIGV2ZW50IHRvLgorICBpbnQgc3RhdHVzID0gWFF1ZXJ5VHJlZShkaXNwbGF5
KCksIHNlbGVjdGVkX3dpbmRvd18sICZyb290LCAmcGFyZW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAmY2hpbGRyZW4sICZudW1fY2hpbGRyZW4pOworICBpZiAoc3RhdHVzID09IDApIHsK
KyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHF1ZXJ5IGZvciB0aGUgcm9vdCB3
aW5kb3cuIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBpZiAoY2hpbGRyZW4pCisgICAg
WEZyZWUoY2hpbGRyZW4pOworCisgIFhSYWlzZVdpbmRvdyhkaXNwbGF5KCksIHNlbGVjdGVkX3dp
bmRvd18pOworCisgIC8vIFNvbWUgd2luZG93IG1hbmFnZXJzIChlLmcuLCBtZXRhY2l0eSBpbiBH
Tk9NRSkgY29uc2lkZXIgaXQgaWxsZWdhbCB0bworICAvLyByYWlzZSBhIHdpbmRvdyB3aXRob3V0
IGFsc28gZ2l2aW5nIGl0IGlucHV0IGZvY3VzIHdpdGgKKyAgLy8gX05FVF9BQ1RJVkVfV0lORE9X
LCBzbyBYUmFpc2VXaW5kb3coKSBvbiBpdHMgb3duIGlzbid0IGVub3VnaC4KKyAgQXRvbSBhdG9t
ID0gWEludGVybkF0b20oZGlzcGxheSgpLCAiX05FVF9BQ1RJVkVfV0lORE9XIiwgVHJ1ZSk7Cisg
IGlmIChhdG9tICE9IE5vbmUpIHsKKyAgICBYRXZlbnQgeGV2OworICAgIHhldi54Y2xpZW50LnR5
cGUgPSBDbGllbnRNZXNzYWdlOworICAgIHhldi54Y2xpZW50LnNlcmlhbCA9IDA7CisgICAgeGV2
LnhjbGllbnQuc2VuZF9ldmVudCA9IFRydWU7CisgICAgeGV2LnhjbGllbnQud2luZG93ID0gc2Vs
ZWN0ZWRfd2luZG93XzsKKyAgICB4ZXYueGNsaWVudC5tZXNzYWdlX3R5cGUgPSBhdG9tOworCisg
ICAgLy8gVGhlIGZvcm1hdCBtZW1iZXIgaXMgc2V0IHRvIDgsIDE2LCBvciAzMiBhbmQgc3BlY2lm
aWVzIHdoZXRoZXIgdGhlCisgICAgLy8gZGF0YSBzaG91bGQgYmUgdmlld2VkIGFzIGEgbGlzdCBv
ZiBieXRlcywgc2hvcnRzLCBvciBsb25ncy4KKyAgICB4ZXYueGNsaWVudC5mb3JtYXQgPSAzMjsK
KworICAgIG1lbXNldCh4ZXYueGNsaWVudC5kYXRhLmwsIDAsIHNpemVvZih4ZXYueGNsaWVudC5k
YXRhLmwpKTsKKworICAgIFhTZW5kRXZlbnQoZGlzcGxheSgpLCByb290LCBGYWxzZSwKKyAgICAg
ICAgICAgICAgIFN1YnN0cnVjdHVyZVJlZGlyZWN0TWFzayB8IFN1YnN0cnVjdHVyZU5vdGlmeU1h
c2ssICZ4ZXYpOworICB9CisgIFhGbHVzaChkaXNwbGF5KCkpOworICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBXaW5kb3dDYXB0dXJlclgxMTo6U3RhcnQoQ2FsbGJhY2sqIGNhbGxiYWNrKSB7Cisg
IFJUQ19EQ0hFQ0soIWNhbGxiYWNrXyk7CisgIFJUQ19EQ0hFQ0soY2FsbGJhY2spOworCisgIGNh
bGxiYWNrXyA9IGNhbGxiYWNrOworfQorCit2b2lkIFdpbmRvd0NhcHR1cmVyWDExOjpDYXB0dXJl
RnJhbWUoKSB7CisgIFRSQUNFX0VWRU5UMCgid2VicnRjIiwgIldpbmRvd0NhcHR1cmVyWDExOjpD
YXB0dXJlRnJhbWUiKTsKKworICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uSXNXaW5kb3dW
YWxpZCgpKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlRoZSB3aW5kb3cgaXMgbm8gbG9u
Z2VyIHZhbGlkLiI7CisgICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJP
Ul9QRVJNQU5FTlQsIG51bGxwdHIpOworICAgIHJldHVybjsKKyAgfQorCisgIHhfZGlzcGxheV8t
PlByb2Nlc3NQZW5kaW5nWEV2ZW50cygpOworCisgIGlmICghaGFzX2NvbXBvc2l0ZV9leHRlbnNp
b25fKSB7CisgICAgLy8gV2l0aG91dCB0aGUgWGNvbXBvc2l0ZSBleHRlbnNpb24gd2UgY2FwdHVy
ZSB3aGVuIHRoZSB3aG9sZSB3aW5kb3cgaXMKKyAgICAvLyB2aXNpYmxlIG9uIHNjcmVlbiBhbmQg
bm90IGNvdmVyZWQgYnkgYW55IG90aGVyIHdpbmRvdy4gVGhpcyBpcyBub3QKKyAgICAvLyBzb21l
dGhpbmcgd2Ugd2FudCBzbyBpbnN0ZWFkLCBqdXN0IGJhaWwgb3V0LgorICAgIFJUQ19MT0coTFNf
RVJST1IpIDw8ICJObyBYY29tcG9zaXRlIGV4dGVuc2lvbiBkZXRlY3RlZC4iOworICAgIGNhbGxi
YWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfUEVSTUFORU5ULCBudWxscHRyKTsK
KyAgICByZXR1cm47CisgIH0KKworICBpZiAoR2V0V2luZG93U3RhdGUoJmF0b21fY2FjaGVfLCBz
ZWxlY3RlZF93aW5kb3dfKSA9PSBJY29uaWNTdGF0ZSkgeworICAgIC8vIFdpbmRvdyBpcyBpbiBt
aW5pbWl6ZWQuIFJldHVybiBhIDF4MSBmcmFtZSBhcyBzYW1lIGFzIE9TWC9XaW4gZG9lcy4KKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBmcmFtZSgKKyAgICAgICAgbmV3IEJhc2lj
RGVza3RvcEZyYW1lKERlc2t0b3BTaXplKDEsIDEpKSk7CisgICAgY2FsbGJhY2tfLT5PbkNhcHR1
cmVSZXN1bHQoUmVzdWx0OjpTVUNDRVNTLCBzdGQ6Om1vdmUoZnJhbWUpKTsKKyAgICByZXR1cm47
CisgIH0KKworICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBmcmFtZSgKKyAgICAgIG5l
dyBCYXNpY0Rlc2t0b3BGcmFtZSh4X3NlcnZlcl9waXhlbF9idWZmZXJfLndpbmRvd19zaXplKCkp
KTsKKworICB4X3NlcnZlcl9waXhlbF9idWZmZXJfLlN5bmNocm9uaXplKCk7CisgIGlmICgheF9z
ZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5DYXB0dXJlUmVjdChEZXNrdG9wUmVjdDo6TWFrZVNpemUoZnJh
bWUtPnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmFtZS5nZXQoKSkpIHsKKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJUZW1wb3JhcmlseSBm
YWlsZWQgdG8gY2FwdHVyZSB3aW5vZHcuIjsKKyAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3Vs
dChSZXN1bHQ6OkVSUk9SX1RFTVBPUkFSWSwgbnVsbHB0cik7CisgICAgcmV0dXJuOworICB9CisK
KyAgZnJhbWUtPm11dGFibGVfdXBkYXRlZF9yZWdpb24oKS0+U2V0UmVjdCgKKyAgICAgIERlc2t0
b3BSZWN0OjpNYWtlU2l6ZShmcmFtZS0+c2l6ZSgpKSk7CisgIGZyYW1lLT5zZXRfdG9wX2xlZnQo
eF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy53aW5kb3dfcmVjdCgpLnRvcF9sZWZ0KCkpOworCisgIGNh
bGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6U1VDQ0VTUywgc3RkOjptb3ZlKGZyYW1l
KSk7Cit9CisKK2Jvb2wgV2luZG93Q2FwdHVyZXJYMTE6OklzT2NjbHVkZWQoY29uc3QgRGVza3Rv
cFZlY3RvciYgcG9zKSB7CisgIHJldHVybiB3aW5kb3dfZmluZGVyXy5HZXRXaW5kb3dVbmRlclBv
aW50KHBvcykgIT0KKyAgICAgICAgIHN0YXRpY19jYXN0PFdpbmRvd0lkPihzZWxlY3RlZF93aW5k
b3dfKTsKK30KKworYm9vbCBXaW5kb3dDYXB0dXJlclgxMTo6SGFuZGxlWEV2ZW50KGNvbnN0IFhF
dmVudCYgZXZlbnQpIHsKKyAgaWYgKGV2ZW50LnR5cGUgPT0gQ29uZmlndXJlTm90aWZ5KSB7Cisg
ICAgWENvbmZpZ3VyZUV2ZW50IHhjZSA9IGV2ZW50Lnhjb25maWd1cmU7CisgICAgaWYgKHhjZS53
aW5kb3cgPT0gc2VsZWN0ZWRfd2luZG93XykgeworICAgICAgaWYgKCFEZXNrdG9wUmVjdEZyb21Y
QXR0cmlidXRlcyh4Y2UpLmVxdWFscygKKyAgICAgICAgICAgICAgeF9zZXJ2ZXJfcGl4ZWxfYnVm
ZmVyXy53aW5kb3dfcmVjdCgpKSkgeworICAgICAgICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZl
cl8uSW5pdChkaXNwbGF5KCksIHNlbGVjdGVkX3dpbmRvd18pKSB7CisgICAgICAgICAgUlRDX0xP
RyhMU19FUlJPUikKKyAgICAgICAgICAgICAgPDwgIkZhaWxlZCB0byBpbml0aWFsaXplIHBpeGVs
IGJ1ZmZlciBhZnRlciByZXNpemluZy4iOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9
CisKKyAgLy8gQWx3YXlzIHJldHVybnMgZmFsc2UsIHNvIG90aGVyIG9ic2VydmVycyBjYW4gc3Rp
bGwgcmVjZWl2ZSB0aGUgZXZlbnRzLgorICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2luZG93
Q2FwdHVyZXJYMTE6OkdldFdpbmRvd1RpdGxlKDo6V2luZG93IHdpbmRvdywgc3RkOjpzdHJpbmcq
IHRpdGxlKSB7CisgIGludCBzdGF0dXM7CisgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgIFhUZXh0
UHJvcGVydHkgd2luZG93X25hbWU7CisgIHdpbmRvd19uYW1lLnZhbHVlID0gbnVsbHB0cjsKKyAg
aWYgKHdpbmRvdykgeworICAgIHN0YXR1cyA9IFhHZXRXTU5hbWUoZGlzcGxheSgpLCB3aW5kb3cs
ICZ3aW5kb3dfbmFtZSk7CisgICAgaWYgKHN0YXR1cyAmJiB3aW5kb3dfbmFtZS52YWx1ZSAmJiB3
aW5kb3dfbmFtZS5uaXRlbXMpIHsKKyAgICAgIGludCBjbnQ7CisgICAgICBjaGFyKiogbGlzdCA9
IG51bGxwdHI7CisgICAgICBzdGF0dXMgPQorICAgICAgICAgIFh1dGY4VGV4dFByb3BlcnR5VG9U
ZXh0TGlzdChkaXNwbGF5KCksICZ3aW5kb3dfbmFtZSwgJmxpc3QsICZjbnQpOworICAgICAgaWYg
KHN0YXR1cyA+PSBTdWNjZXNzICYmIGNudCAmJiAqbGlzdCkgeworICAgICAgICBpZiAoY250ID4g
MSkgeworICAgICAgICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIldpbmRvdyBoYXMgIiA8PCBjbnQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgdGV4dCBwcm9wZXJ0aWVzLCBvbmx5IHVz
aW5nIHRoZSBmaXJzdCBvbmUuIjsKKyAgICAgICAgfQorICAgICAgICAqdGl0bGUgPSAqbGlzdDsK
KyAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChsaXN0KQorICAgICAg
ICBYRnJlZVN0cmluZ0xpc3QobGlzdCk7CisgICAgfQorICAgIGlmICh3aW5kb3dfbmFtZS52YWx1
ZSkKKyAgICAgIFhGcmVlKHdpbmRvd19uYW1lLnZhbHVlKTsKKyAgfQorICByZXR1cm4gcmVzdWx0
OworfQorCisvLyBzdGF0aWMKK3N0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+IFdpbmRv
d0NhcHR1cmVyWDExOjpDcmVhdGVSYXdXaW5kb3dDYXB0dXJlcigKKyAgICBjb25zdCBEZXNrdG9w
Q2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKKyAgaWYgKCFvcHRpb25zLnhfZGlzcGxheSgpKQor
ICAgIHJldHVybiBudWxscHRyOworICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0
dXJlcj4obmV3IFdpbmRvd0NhcHR1cmVyWDExKG9wdGlvbnMpKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3gx
MS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3gxMS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRj
ZDJjOTdjYjlmZGRlYTVhNzg3NWZkZTIzNjQ5NWMxN2Y1NTkxYjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfeDExLmgKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5V
WF9XSU5ET1dfQ0FQVFVSRVJfWDExX0hfCisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJF
X0xJTlVYX1dJTkRPV19DQVBUVVJFUl9YMTFfSF8KKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNs
dWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9w
X2NhcHR1cmVfb3B0aW9ucy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rl
c2t0b3BfY2FwdHVyZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51
eC93aW5kb3dfZmluZGVyX3gxMS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2xpbnV4L3hfYXRvbV9jYWNoZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2xpbnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0
cnVjdG9ybWFnaWMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIFdpbmRvd0NhcHR1
cmVyWDExIDogcHVibGljIERlc2t0b3BDYXB0dXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIHsKKyBwdWJsaWM6CisgIGV4
cGxpY2l0IFdpbmRvd0NhcHR1cmVyWDExKGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0
aW9ucyk7CisgIH5XaW5kb3dDYXB0dXJlclgxMSgpIG92ZXJyaWRlOworCisgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBDcmVhdGVSYXdXaW5kb3dDYXB0dXJlcigKKyAg
ICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7CisKKyAgLy8gRGVza3Rv
cENhcHR1cmVyIGludGVyZmFjZS4KKyAgdm9pZCBTdGFydChDYWxsYmFjayogY2FsbGJhY2spIG92
ZXJyaWRlOworICB2b2lkIENhcHR1cmVGcmFtZSgpIG92ZXJyaWRlOworICBib29sIEdldFNvdXJj
ZUxpc3QoU291cmNlTGlzdCogc291cmNlcykgb3ZlcnJpZGU7CisgIGJvb2wgU2VsZWN0U291cmNl
KFNvdXJjZUlkIGlkKSBvdmVycmlkZTsKKyAgYm9vbCBGb2N1c09uU2VsZWN0ZWRTb3VyY2UoKSBv
dmVycmlkZTsKKyAgYm9vbCBJc09jY2x1ZGVkKGNvbnN0IERlc2t0b3BWZWN0b3ImIHBvcykgb3Zl
cnJpZGU7CisKKyAgLy8gU2hhcmVkWERpc3BsYXk6OlhFdmVudEhhbmRsZXIgaW50ZXJmYWNlLgor
ICBib29sIEhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSBvdmVycmlkZTsKKworIHBy
aXZhdGU6CisgIERpc3BsYXkqIGRpc3BsYXkoKSB7IHJldHVybiB4X2Rpc3BsYXlfLT5kaXNwbGF5
KCk7IH0KKworICAvLyBSZXR1cm5zIHdpbmRvdyB0aXRsZSBmb3IgdGhlIHNwZWNpZmllZCBYIHx3
aW5kb3d8LgorICBib29sIEdldFdpbmRvd1RpdGxlKDo6V2luZG93IHdpbmRvdywgc3RkOjpzdHJp
bmcqIHRpdGxlKTsKKworICBDYWxsYmFjayogY2FsbGJhY2tfID0gbnVsbHB0cjsKKworICBydGM6
OnNjb3BlZF9yZWZwdHI8U2hhcmVkWERpc3BsYXk+IHhfZGlzcGxheV87CisKKyAgYm9vbCBoYXNf
Y29tcG9zaXRlX2V4dGVuc2lvbl8gPSBmYWxzZTsKKworICA6OldpbmRvdyBzZWxlY3RlZF93aW5k
b3dfID0gMDsKKyAgWFNlcnZlclBpeGVsQnVmZmVyIHhfc2VydmVyX3BpeGVsX2J1ZmZlcl87Cisg
IFhBdG9tQ2FjaGUgYXRvbV9jYWNoZV87CisgIFdpbmRvd0ZpbmRlclgxMSB3aW5kb3dfZmluZGVy
XzsKKworICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFdpbmRvd0NhcHR1cmVyWDExKTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tU
T1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfQ0FQVFVSRVJfWDExX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9saW51eC93aW5kb3dfZmluZGVyX3gxMS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19m
aW5kZXJfeDExLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZmFkYzJjNmZiNDMyOTJkYmE2MTM3MDZiZGMzMDJm
ZTljODE5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfZmluZGVy
X3gxMS5jYwpAQCAtMCwwICsxLDUxIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19maW5kZXJfeDExLmgiCisK
KyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfbGlzdF91dGlscy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKwor
V2luZG93RmluZGVyWDExOjpXaW5kb3dGaW5kZXJYMTEoWEF0b21DYWNoZSogY2FjaGUpIDogY2Fj
aGVfKGNhY2hlKSB7CisgIFJUQ19EQ0hFQ0soY2FjaGVfKTsKK30KKworV2luZG93RmluZGVyWDEx
Ojp+V2luZG93RmluZGVyWDExKCkgPSBkZWZhdWx0OworCitXaW5kb3dJZCBXaW5kb3dGaW5kZXJY
MTE6OkdldFdpbmRvd1VuZGVyUG9pbnQoRGVza3RvcFZlY3RvciBwb2ludCkgeworICBXaW5kb3dJ
ZCBpZCA9IGtOdWxsV2luZG93SWQ7CisgIEdldFdpbmRvd0xpc3QoY2FjaGVfLCBbJmlkLCB0aGlz
LCBwb2ludF0oOjpXaW5kb3cgd2luZG93KSB7CisgICAgRGVza3RvcFJlY3QgcmVjdDsKKyAgICBp
ZiAoR2V0V2luZG93UmVjdCh0aGlzLT5jYWNoZV8tPmRpc3BsYXkoKSwgd2luZG93LCAmcmVjdCkg
JiYKKyAgICAgICAgcmVjdC5Db250YWlucyhwb2ludCkpIHsKKyAgICAgIGlkID0gd2luZG93Owor
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSk7CisgIHJl
dHVybiBpZDsKK30KKworLy8gc3RhdGljCitzdGQ6OnVuaXF1ZV9wdHI8V2luZG93RmluZGVyPiBX
aW5kb3dGaW5kZXI6OkNyZWF0ZSgKKyAgICBjb25zdCBXaW5kb3dGaW5kZXI6Ok9wdGlvbnMmIG9w
dGlvbnMpIHsKKyAgaWYgKG9wdGlvbnMuY2FjaGUgPT0gbnVsbHB0cikgeworICAgIHJldHVybiBu
dWxscHRyOworICB9CisKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFdpbmRvd0ZpbmRlclgx
MT4ob3B0aW9ucy5jYWNoZSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19maW5kZXJfeDExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93
aW5kb3dfZmluZGVyX3gxMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYmJhODY5N2I1Zjc1NDRkNGQ2Y2NjZGU2
ZjEyY2U1NmE5Y2U0ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3df
ZmluZGVyX3gxMS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE3
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRPV19GSU5ERVJfWDExX0hf
CisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRPV19GSU5ERVJfWDEx
X0hfCisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyLmgi
CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBYQXRvbUNhY2hlOworCisvLyBUaGUgaW1w
bGVtZW50YXRpb24gb2YgV2luZG93RmluZGVyIGZvciBYMTEuCitjbGFzcyBXaW5kb3dGaW5kZXJY
MTEgZmluYWwgOiBwdWJsaWMgV2luZG93RmluZGVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFdp
bmRvd0ZpbmRlclgxMShYQXRvbUNhY2hlKiBjYWNoZSk7CisgIH5XaW5kb3dGaW5kZXJYMTEoKSBv
dmVycmlkZTsKKworICAvLyBXaW5kb3dGaW5kZXIgaW1wbGVtZW50YXRpb24uCisgIFdpbmRvd0lk
IEdldFdpbmRvd1VuZGVyUG9pbnQoRGVza3RvcFZlY3RvciBwb2ludCkgb3ZlcnJpZGU7CisKKyBw
cml2YXRlOgorICBYQXRvbUNhY2hlKiBjb25zdCBjYWNoZV87Cit9OworCit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfV0lO
RE9XX0ZJTkRFUl9YMTFfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0
X3V0aWxzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2xpc3RfdXRpbHMuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmQ4ZjVmNzJjZDVlNWU1ZTA1MTI5MDlmNzk3YTMwMjI5ZGUwZGM5NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmNjCkBAIC0wLDAgKzEsMjQ2
IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmgiCisKKyNpbmNsdWRlIDxYMTEvWGF0b20u
aD4KKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgorI2luY2x1
ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisjaW5jbHVkZSAibW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9lcnJvcl90cmFwLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK25hbWVz
cGFjZSB7CisKK2NsYXNzIERlZmVyWEZyZWUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgRGVmZXJY
RnJlZSh2b2lkKiBkYXRhKSA6IGRhdGFfKGRhdGEpIHt9CisgIH5EZWZlclhGcmVlKCk7CisKKyBw
cml2YXRlOgorICB2b2lkKiBjb25zdCBkYXRhXzsKK307CisKK0RlZmVyWEZyZWU6On5EZWZlclhG
cmVlKCkgeworICBpZiAoZGF0YV8pCisgICAgWEZyZWUoZGF0YV8pOworfQorCisvLyBDb252ZW5p
ZW5jZSB3cmFwcGVyIGZvciBYR2V0V2luZG93UHJvcGVydHkoKSByZXN1bHRzLgordGVtcGxhdGUg
PGNsYXNzIFByb3BlcnR5VHlwZT4KK2NsYXNzIFhXaW5kb3dQcm9wZXJ0eSB7CisgcHVibGljOgor
ICBYV2luZG93UHJvcGVydHkoRGlzcGxheSogZGlzcGxheSwgV2luZG93IHdpbmRvdywgQXRvbSBw
cm9wZXJ0eSkgeworICAgIGNvbnN0IGludCBrQml0c1BlckJ5dGUgPSA4OworICAgIEF0b20gYWN0
dWFsX3R5cGU7CisgICAgaW50IGFjdHVhbF9mb3JtYXQ7CisgICAgdW5zaWduZWQgbG9uZyBieXRl
c19hZnRlcjsgIC8vIE5PTElOVDogdHlwZSByZXF1aXJlZCBieSBYR2V0V2luZG93UHJvcGVydHkK
KyAgICBpbnQgc3RhdHVzID0gWEdldFdpbmRvd1Byb3BlcnR5KAorICAgICAgICBkaXNwbGF5LCB3
aW5kb3csIHByb3BlcnR5LCAwTCwgfjBMLCBGYWxzZSwgQW55UHJvcGVydHlUeXBlLAorICAgICAg
ICAmYWN0dWFsX3R5cGUsICZhY3R1YWxfZm9ybWF0LCAmc2l6ZV8sICZieXRlc19hZnRlciwgJmRh
dGFfKTsKKyAgICBpZiAoc3RhdHVzICE9IFN1Y2Nlc3MpIHsKKyAgICAgIGRhdGFfID0gbnVsbHB0
cjsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHNpemVvZihQcm9wZXJ0eVR5cGUpICog
a0JpdHNQZXJCeXRlICE9IGFjdHVhbF9mb3JtYXQpIHsKKyAgICAgIHNpemVfID0gMDsKKyAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpc192YWxpZF8gPSB0cnVlOworICB9CisKKyAgflhXaW5k
b3dQcm9wZXJ0eSgpIHsKKyAgICBpZiAoZGF0YV8pCisgICAgICBYRnJlZShkYXRhXyk7CisgIH0K
KworICAvLyBUcnVlIGlmIHdlIGdvdCBwcm9wZXJseSB2YWx1ZSBzdWNjZXNzZnVsbHkuCisgIGJv
b2wgaXNfdmFsaWQoKSBjb25zdCB7IHJldHVybiBpc192YWxpZF87IH0KKworICAvLyBTaXplIGFu
ZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuCisgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
c2l6ZV87IH0KKyAgY29uc3QgUHJvcGVydHlUeXBlKiBkYXRhKCkgY29uc3QgeworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFByb3BlcnR5VHlwZSo+KGRhdGFfKTsKKyAgfQorICBQcm9wZXJ0
eVR5cGUqIGRhdGEoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFByb3BlcnR5VHlwZSo+KGRh
dGFfKTsgfQorCisgcHJpdmF0ZToKKyAgYm9vbCBpc192YWxpZF8gPSBmYWxzZTsKKyAgdW5zaWdu
ZWQgbG9uZyBzaXplXyA9IDA7ICAvLyBOT0xJTlQ6IHR5cGUgcmVxdWlyZWQgYnkgWEdldFdpbmRv
d1Byb3BlcnR5CisgIHVuc2lnbmVkIGNoYXIqIGRhdGFfID0gbnVsbHB0cjsKKworICBSVENfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKFhXaW5kb3dQcm9wZXJ0eSk7Cit9OworCisvLyBJdGVyYXRl
cyB0aHJvdWdoIHx3aW5kb3d8IGhpZXJhcmNoeSB0byBmaW5kIGZpcnN0IHZpc2libGUgd2luZG93
LCBpLmUuIG9uZQorLy8gdGhhdCBoYXMgV01fU1RBVEUgcHJvcGVydHkgc2V0IHRvIE5vcm1hbFN0
YXRlLgorLy8gU2VlIGh0dHA6Ly90cm9uY2hlLmNvbS9ndWkveC9pY2NjbS9zZWMtNC5odG1sI3Mt
NC4xLjMuMSAuCis6OldpbmRvdyBHZXRBcHBsaWNhdGlvbldpbmRvdyhYQXRvbUNhY2hlKiBjYWNo
ZSwgOjpXaW5kb3cgd2luZG93KSB7CisgIGludDMyX3Qgc3RhdGUgPSBHZXRXaW5kb3dTdGF0ZShj
YWNoZSwgd2luZG93KTsKKyAgaWYgKHN0YXRlID09IE5vcm1hbFN0YXRlKSB7CisgICAgLy8gV2lu
ZG93IGhhcyBXTV9TVEFURT09Tm9ybWFsU3RhdGUuIFJldHVybiBpdC4KKyAgICByZXR1cm4gd2lu
ZG93OworICB9IGVsc2UgaWYgKHN0YXRlID09IEljb25pY1N0YXRlKSB7CisgICAgLy8gV2luZG93
IGlzIGluIG1pbmltaXplZC4gU2tpcCBpdC4KKyAgICByZXR1cm4gMDsKKyAgfQorCisgIFJUQ19E
Q0hFQ0tfRVEoc3RhdGUsIFdpdGhkcmF3blN0YXRlKTsKKyAgLy8gSWYgdGhlIHdpbmRvdyBpcyBp
biBXaXRoZHJhd25TdGF0ZSB0aGVuIGxvb2sgYXQgYWxsIG9mIGl0cyBjaGlsZHJlbi4KKyAgOjpX
aW5kb3cgcm9vdCwgcGFyZW50OworICA6OldpbmRvdyogY2hpbGRyZW47CisgIHVuc2lnbmVkIGlu
dCBudW1fY2hpbGRyZW47CisgIGlmICghWFF1ZXJ5VHJlZShjYWNoZS0+ZGlzcGxheSgpLCB3aW5k
b3csICZyb290LCAmcGFyZW50LCAmY2hpbGRyZW4sCisgICAgICAgICAgICAgICAgICAmbnVtX2No
aWxkcmVuKSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gcXVlcnkgZm9y
IGNoaWxkIHdpbmRvd3MgYWx0aG91Z2ggd2luZG93IgorICAgICAgICAgICAgICAgICAgICAgIDw8
ICJkb2VzIG5vdCBoYXZlIGEgdmFsaWQgV01fU1RBVEUuIjsKKyAgICByZXR1cm4gMDsKKyAgfQor
ICA6OldpbmRvdyBhcHBfd2luZG93ID0gMDsKKyAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBudW1fY2hpbGRyZW47ICsraSkgeworICAgIGFwcF93aW5kb3cgPSBHZXRBcHBsaWNhdGlvbldp
bmRvdyhjYWNoZSwgY2hpbGRyZW5baV0pOworICAgIGlmIChhcHBfd2luZG93KQorICAgICAgYnJl
YWs7CisgIH0KKworICBpZiAoY2hpbGRyZW4pCisgICAgWEZyZWUoY2hpbGRyZW4pOworICByZXR1
cm4gYXBwX3dpbmRvdzsKK30KKworLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB8d2luZG93fCBpcyBh
IGRlc2t0b3AgZWxlbWVudC4KK2Jvb2wgSXNEZXNrdG9wRWxlbWVudChYQXRvbUNhY2hlKiBjYWNo
ZSwgOjpXaW5kb3cgd2luZG93KSB7CisgIFJUQ19EQ0hFQ0soY2FjaGUpOworICBpZiAod2luZG93
ID09IDApCisgICAgcmV0dXJuIGZhbHNlOworCisgIC8vIEZpcnN0IGxvb2sgZm9yIF9ORVRfV01f
V0lORE9XX1RZUEUuIFRoZSBzdGFuZGFyZAorICAvLyAoaHR0cDovL3N0YW5kYXJkcy5mcmVlZGVz
a3RvcC5vcmcvd20tc3BlYy9sYXRlc3QvYXIwMXMwNS5odG1sI2lkMjc2MDMwNikKKyAgLy8gc2F5
cyB0aGlzIGhpbnQgKnNob3VsZCogYmUgcHJlc2VudCBvbiBhbGwgd2luZG93cywgYW5kIHdlIHVz
ZSB0aGUgZXhpc3RlbmNlCisgIC8vIG9mIF9ORVRfV01fV0lORE9XX1RZUEVfTk9STUFMIGluIHRo
ZSBwcm9wZXJ0eSB0byBpbmRpY2F0ZSBhIHdpbmRvdyBpcyBub3QKKyAgLy8gYSBkZXNrdG9wIGVs
ZW1lbnQgKHRoYXQgaXMsIG9ubHkgIm5vcm1hbCIgd2luZG93cyBzaG91bGQgYmUgc2hhcmVhYmxl
KS4KKyAgWFdpbmRvd1Byb3BlcnR5PHVpbnQzMl90PiB3aW5kb3dfdHlwZShjYWNoZS0+ZGlzcGxh
eSgpLCB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fj
aGUtPldpbmRvd1R5cGUoKSk7CisgIGlmICh3aW5kb3dfdHlwZS5pc192YWxpZCgpICYmIHdpbmRv
d190eXBlLnNpemUoKSA+IDApIHsKKyAgICB1aW50MzJfdCogZW5kID0gd2luZG93X3R5cGUuZGF0
YSgpICsgd2luZG93X3R5cGUuc2l6ZSgpOworICAgIGJvb2wgaXNfbm9ybWFsID0KKyAgICAgICAg
KGVuZCAhPSBzdGQ6OmZpbmQod2luZG93X3R5cGUuZGF0YSgpLCBlbmQsIGNhY2hlLT5XaW5kb3dU
eXBlTm9ybWFsKCkpKTsKKyAgICByZXR1cm4gIWlzX25vcm1hbDsKKyAgfQorCisgIC8vIEZhbGwg
YmFjayBvbiB1c2luZyB0aGUgaGludC4KKyAgWENsYXNzSGludCBjbGFzc19oaW50OworICBTdGF0
dXMgc3RhdHVzID0gWEdldENsYXNzSGludChjYWNoZS0+ZGlzcGxheSgpLCB3aW5kb3csICZjbGFz
c19oaW50KTsKKyAgaWYgKHN0YXR1cyA9PSAwKSB7CisgICAgLy8gTm8gaGludHMsIGFzc3VtZSB0
aGlzIGlzIGEgbm9ybWFsIGFwcGxpY2F0aW9uIHdpbmRvdy4KKyAgICByZXR1cm4gZmFsc2U7Cisg
IH0KKworICBEZWZlclhGcmVlIGZyZWVfcmVzX25hbWUoY2xhc3NfaGludC5yZXNfbmFtZSk7Cisg
IERlZmVyWEZyZWUgZnJlZV9yZXNfY2xhc3MoY2xhc3NfaGludC5yZXNfY2xhc3MpOworICByZXR1
cm4gc3RyY21wKCJnbm9tZS1wYW5lbCIsIGNsYXNzX2hpbnQucmVzX25hbWUpID09IDAgfHwKKyAg
ICAgICAgIHN0cmNtcCgiZGVza3RvcF93aW5kb3ciLCBjbGFzc19oaW50LnJlc19uYW1lKSA9PSAw
OworfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50MzJfdCBHZXRXaW5kb3dTdGF0ZShYQXRvbUNh
Y2hlKiBjYWNoZSwgOjpXaW5kb3cgd2luZG93KSB7CisgIC8vIEdldCBXTV9TVEFURSBwcm9wZXJ0
eSBvZiB0aGUgd2luZG93LgorICBYV2luZG93UHJvcGVydHk8dWludDMyX3Q+IHdpbmRvd19zdGF0
ZShjYWNoZS0+ZGlzcGxheSgpLCB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhY2hlLT5XbVN0YXRlKCkpOworCisgIC8vIFdNX1NUQVRFIGlzIGNvbnNp
ZGVyZWQgdG8gYmUgc2V0IHRvIFdpdGhkcmF3blN0YXRlIHdoZW4gaXQgbWlzc2luZy4KKyAgcmV0
dXJuIHdpbmRvd19zdGF0ZS5pc192YWxpZCgpID8gKndpbmRvd19zdGF0ZS5kYXRhKCkgOiBXaXRo
ZHJhd25TdGF0ZTsKK30KKworYm9vbCBHZXRXaW5kb3dMaXN0KFhBdG9tQ2FjaGUqIGNhY2hlLAor
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PGJvb2woOjpXaW5kb3cpPiBvbl93
aW5kb3cpIHsKKyAgUlRDX0RDSEVDSyhjYWNoZSk7CisgIFJUQ19EQ0hFQ0sob25fd2luZG93KTsK
KyAgOjpEaXNwbGF5KiBjb25zdCBkaXNwbGF5ID0gY2FjaGUtPmRpc3BsYXkoKTsKKworICBpbnQg
ZmFpbGVkX3NjcmVlbnMgPSAwOworICBjb25zdCBpbnQgbnVtX3NjcmVlbnMgPSBYU2NyZWVuQ291
bnQoZGlzcGxheSk7CisgIGZvciAoaW50IHNjcmVlbiA9IDA7IHNjcmVlbiA8IG51bV9zY3JlZW5z
OyBzY3JlZW4rKykgeworICAgIDo6V2luZG93IHJvb3Rfd2luZG93ID0gWFJvb3RXaW5kb3coZGlz
cGxheSwgc2NyZWVuKTsKKyAgICA6OldpbmRvdyBwYXJlbnQ7CisgICAgOjpXaW5kb3cqIGNoaWxk
cmVuOworICAgIHVuc2lnbmVkIGludCBudW1fY2hpbGRyZW47CisgICAgeworICAgICAgWEVycm9y
VHJhcCBlcnJvcl90cmFwKGRpc3BsYXkpOworICAgICAgaWYgKFhRdWVyeVRyZWUoZGlzcGxheSwg
cm9vdF93aW5kb3csICZyb290X3dpbmRvdywgJnBhcmVudCwgJmNoaWxkcmVuLAorICAgICAgICAg
ICAgICAgICAgICAgJm51bV9jaGlsZHJlbikgPT0gMCB8fAorICAgICAgICAgIGVycm9yX3RyYXAu
R2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApIHsKKyAgICAgICAgZmFpbGVkX3NjcmVlbnMr
KzsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBxdWVyeSBmb3IgY2hp
bGQgd2luZG93cyBmb3Igc2NyZWVuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc2Ny
ZWVuOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBEZWZlclhGcmVl
IGZyZWVfY2hpbGRyZW4oY2hpbGRyZW4pOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBudW1fY2hpbGRyZW47IGkrKykgeworICAgICAgLy8gSXRlcmF0ZXMgaW4gcmV2ZXJzZSBv
cmRlciB0byByZXR1cm4gd2luZG93cyBmcm9tIGZyb250IHRvIGJhY2suCisgICAgICA6OldpbmRv
dyBhcHBfd2luZG93ID0KKyAgICAgICAgICBHZXRBcHBsaWNhdGlvbldpbmRvdyhjYWNoZSwgY2hp
bGRyZW5bbnVtX2NoaWxkcmVuIC0gMSAtIGldKTsKKyAgICAgIGlmIChhcHBfd2luZG93ICYmICFJ
c0Rlc2t0b3BFbGVtZW50KGNhY2hlLCBhcHBfd2luZG93KSkgeworICAgICAgICBpZiAoIW9uX3dp
bmRvdyhhcHBfd2luZG93KSkgeworICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICB9CisgICAgfQorICB9CisKKyAgcmV0dXJuIGZhaWxlZF9zY3JlZW5zIDwgbnVtX3NjcmVl
bnM7Cit9CisKK2Jvb2wgR2V0V2luZG93UmVjdCg6OkRpc3BsYXkqIGRpc3BsYXksCisgICAgICAg
ICAgICAgICAgICAgOjpXaW5kb3cgd2luZG93LAorICAgICAgICAgICAgICAgICAgIERlc2t0b3BS
ZWN0KiByZWN0LAorICAgICAgICAgICAgICAgICAgIFhXaW5kb3dBdHRyaWJ1dGVzKiBhdHRyaWJ1
dGVzIC8qID0gbnVsbHB0ciAqLykgeworICBYV2luZG93QXR0cmlidXRlcyBsb2NhbF9hdHRyaWJ1
dGVzOworICBpbnQgb2Zmc2V0X3g7CisgIGludCBvZmZzZXRfeTsKKyAgaWYgKGF0dHJpYnV0ZXMg
PT0gbnVsbHB0cikgeworICAgIGF0dHJpYnV0ZXMgPSAmbG9jYWxfYXR0cmlidXRlczsKKyAgfQor
CisgIHsKKyAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheSk7CisgICAgaWYgKCFYR2V0
V2luZG93QXR0cmlidXRlcyhkaXNwbGF5LCB3aW5kb3csIGF0dHJpYnV0ZXMpIHx8CisgICAgICAg
IGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApIHsKKyAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgIH0KKyAgKnJlY3QgPSBEZXNrdG9wUmVjdEZyb21YQXR0cmlidXRl
cygqYXR0cmlidXRlcyk7CisKKyAgeworICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5
KTsKKyAgICA6OldpbmRvdyBjaGlsZDsKKyAgICBpZiAoIVhUcmFuc2xhdGVDb29yZGluYXRlcyhk
aXNwbGF5LCB3aW5kb3csIGF0dHJpYnV0ZXMtPnJvb3QsIC1yZWN0LT5sZWZ0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLXJlY3QtPnRvcCgpLCAmb2Zmc2V0X3gsICZvZmZzZXRf
eSwgJmNoaWxkKSB8fAorICAgICAgICBlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUo
KSAhPSAwKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgIHJlY3QtPlRyYW5z
bGF0ZShvZmZzZXRfeCwgb2Zmc2V0X3kpOworICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2xpc3RfdXRp
bHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA1
N2M5OWI4NGMyM2U0NzcyZmM1NmFjYzM1NGFmYjRlZTFlYmE4MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmgKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElO
VVhfV0lORE9XX0xJU1RfVVRJTFNfSF8KKyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVf
TElOVVhfV0lORE9XX0xJU1RfVVRJTFNfSF8KKworI2luY2x1ZGUgPFgxMS9YbGliLmg+CisKKyNp
bmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2dlb21ldHJ5LmgiCisjaW5j
bHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9hdG9tX2NhY2hlLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvZnVuY3Rpb25fdmlldy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKwor
Ly8gU3luY2hyb25vdXNseSBpdGVyYXRlcyBhbGwgb24tc2NyZWVuIHdpbmRvd3MgaW4gfGNhY2hl
fC5kaXNwbGF5KCkgaW4KKy8vIGRlY3JlYXNpbmcgei1vcmRlciBhbmQgc2VuZHMgdGhlbSBvbmUt
Ynktb25lIHRvIHxvbl93aW5kb3d8IGZ1bmN0aW9uIGJlZm9yZQorLy8gR2V0V2luZG93TGlzdCgp
IHJldHVybnMuIElmIHxvbl93aW5kb3d8IHJldHVybnMgZmFsc2UsIHRoaXMgZnVuY3Rpb24gaWdu
b3JlcworLy8gb3RoZXIgd2luZG93cyBhbmQgcmV0dXJucyBpbW1lZGlhdGVseS4gR2V0V2luZG93
TGlzdCgpIHJldHVybnMgZmFsc2UgaWYKKy8vIG5hdGl2ZSBBUElzIGZhaWxlZC4gSWYgbXVsdGlw
bGUgc2NyZWVucyBhcmUgYXR0YWNoZWQgdG8gdGhlIHxkaXNwbGF5fCwgdGhpcworLy8gZnVuY3Rp
b24gcmV0dXJucyBmYWxzZSBvbmx5IHdoZW4gbmF0aXZlIEFQSXMgZmFpbGVkIG9uIGFsbCBzY3Jl
ZW5zLiBNZW51cywKKy8vIHBhbmVscyBhbmQgbWluaW1pemVkIHdpbmRvd3Mgd2lsbCBiZSBpZ25v
cmVkLgorYm9vbCBHZXRXaW5kb3dMaXN0KFhBdG9tQ2FjaGUqIGNhY2hlLAorICAgICAgICAgICAg
ICAgICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PGJvb2woOjpXaW5kb3cpPiBvbl93aW5kb3cpOworCisv
LyBSZXR1cm5zIFdNX1NUQVRFIHByb3BlcnR5IG9mIHRoZSB8d2luZG93fC4gVGhpcyBmdW5jdGlv
biByZXR1cm5zCisvLyBXaXRoZHJhd25TdGF0ZSBpZiB0aGUgfHdpbmRvd3wgaXMgbWlzc2luZy4K
K2ludDMyX3QgR2V0V2luZG93U3RhdGUoWEF0b21DYWNoZSogY2FjaGUsIDo6V2luZG93IHdpbmRv
dyk7CisKKy8vIFJldHVybnMgdGhlIHJlY3RhbmdsZSBvZiB0aGUgfHdpbmRvd3wgaW4gdGhlIGNv
b3JkaW5hdGVzIG9mIHxkaXNwbGF5fC4gVGhpcworLy8gZnVuY3Rpb24gcmV0dXJucyBmYWxzZSBp
ZiBuYXRpdmUgQVBJcyBmYWlsZWQuIElmIHxhdHRyaWJ1dGVzfCBpcyBwcm92aWRlZCwgaXQKKy8v
IHdpbGwgYmUgZmlsbGVkIHdpdGggdGhlIGF0dHJpYnV0ZXMgb2YgfHdpbmRvd3wuIFRoZSB8cmVj
dHwgaXMgaW4gc3lzdGVtCisvLyBjb29yZGluYXRlLCBpLmUuIHRoZSBwcmltYXJ5IG1vbml0b3Ig
YWx3YXlzIHN0YXJ0cyBmcm9tICgwLCAwKS4KK2Jvb2wgR2V0V2luZG93UmVjdCg6OkRpc3BsYXkq
IGRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgOjpXaW5kb3cgd2luZG93LAorICAgICAgICAg
ICAgICAgICAgIERlc2t0b3BSZWN0KiByZWN0LAorICAgICAgICAgICAgICAgICAgIFhXaW5kb3dB
dHRyaWJ1dGVzKiBhdHRyaWJ1dGVzID0gbnVsbHB0cik7CisKKy8vIENyZWF0ZXMgYSBEZXNrdG9w
UmVjdCBmcm9tIHxhdHRyaWJ1dGVzfC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorRGVza3RvcFJl
Y3QgRGVza3RvcFJlY3RGcm9tWEF0dHJpYnV0ZXMoY29uc3QgVCYgYXR0cmlidXRlcykgeworICBy
ZXR1cm4gRGVza3RvcFJlY3Q6Ok1ha2VYWVdIKGF0dHJpYnV0ZXMueCwgYXR0cmlidXRlcy55LCBh
dHRyaWJ1dGVzLndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZXMuaGVpZ2h0KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1P
RFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRPV19MSVNUX1VUSUxTX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9saW51eC94X2F0b21fY2FjaGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2F0
b21fY2FjaGUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODMyZTYxNjZjYjQzNWNkYTg3ZTNhOWQxYjQ2ZjRlYTQ5
YWE2YzBiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfYXRvbV9jYWNoZS5j
YwpAQCAtMCwwICsxLDQ3IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfYXRvbV9jYWNoZS5oIgorCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitYQXRvbUNhY2hlOjpY
QXRvbUNhY2hlKDo6RGlzcGxheSogZGlzcGxheSkgOiBkaXNwbGF5XyhkaXNwbGF5KSB7CisgIFJU
Q19EQ0hFQ0soZGlzcGxheV8pOworfQorCitYQXRvbUNhY2hlOjp+WEF0b21DYWNoZSgpID0gZGVm
YXVsdDsKKworOjpEaXNwbGF5KiBYQXRvbUNhY2hlOjpkaXNwbGF5KCkgY29uc3QgeworICByZXR1
cm4gZGlzcGxheV87Cit9CisKK0F0b20gWEF0b21DYWNoZTo6V21TdGF0ZSgpIHsKKyAgcmV0dXJu
IENyZWF0ZUlmTm90RXhpc3QoJndtX3N0YXRlXywgIldNX1NUQVRFIik7Cit9CisKK0F0b20gWEF0
b21DYWNoZTo6V2luZG93VHlwZSgpIHsKKyAgcmV0dXJuIENyZWF0ZUlmTm90RXhpc3QoJndpbmRv
d190eXBlXywgIl9ORVRfV01fV0lORE9XX1RZUEUiKTsKK30KKworQXRvbSBYQXRvbUNhY2hlOjpX
aW5kb3dUeXBlTm9ybWFsKCkgeworICByZXR1cm4gQ3JlYXRlSWZOb3RFeGlzdCgmd2luZG93X3R5
cGVfbm9ybWFsXywgIl9ORVRfV01fV0lORE9XX1RZUEVfTk9STUFMIik7Cit9CisKK0F0b20gWEF0
b21DYWNoZTo6Q3JlYXRlSWZOb3RFeGlzdChBdG9tKiBhdG9tLCBjb25zdCBjaGFyKiBuYW1lKSB7
CisgIFJUQ19EQ0hFQ0soYXRvbSk7CisgIGlmICgqYXRvbSA9PSBOb25lKSB7CisgICAgKmF0b20g
PSBYSW50ZXJuQXRvbShkaXNwbGF5KCksIG5hbWUsIFRydWUpOworICB9CisgIHJldHVybiAqYXRv
bTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgveF9hdG9tX2NhY2hlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2F0b21fY2FjaGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MTc4OWYwNTEyNGUxMDEwMGJmYTBkMjkwODgzYmE4MmYxYzM2MmVlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9hdG9tX2NhY2hlLmgKQEAgLTAsMCArMSw0MyBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
CisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVf
TElOVVhfWF9BVE9NX0NBQ0hFX0hfCisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJ
TlVYX1hfQVRPTV9DQUNIRV9IXworCisjaW5jbHVkZSA8WDExL1hhdG9tLmg+CisjaW5jbHVkZSA8
WDExL1hsaWIuaD4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEEgY2FjaGUgb2YgQXRvbS4g
RWFjaCBBdG9tIG9iamVjdCBpcyBjcmVhdGVkIG9uIGRlbWFuZC4KK2NsYXNzIFhBdG9tQ2FjaGUg
ZmluYWwgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgWEF0b21DYWNoZSg6OkRpc3BsYXkqIGRpc3Bs
YXkpOworICB+WEF0b21DYWNoZSgpOworCisgIDo6RGlzcGxheSogZGlzcGxheSgpIGNvbnN0Owor
CisgIEF0b20gV21TdGF0ZSgpOworICBBdG9tIFdpbmRvd1R5cGUoKTsKKyAgQXRvbSBXaW5kb3dU
eXBlTm9ybWFsKCk7CisKKyBwcml2YXRlOgorICAvLyBJZiB8KmF0b218IGlzIE5vbmUsIHRoaXMg
ZnVuY3Rpb24gdXNlcyBYSW50ZXJuQXRvbSgpIHRvIHJldHJpZXZlIGFuIEF0b20uCisgIEF0b20g
Q3JlYXRlSWZOb3RFeGlzdChBdG9tKiBhdG9tLCBjb25zdCBjaGFyKiBuYW1lKTsKKworICA6OkRp
c3BsYXkqIGNvbnN0IGRpc3BsYXlfOworICBBdG9tIHdtX3N0YXRlXyA9IE5vbmU7CisgIEF0b20g
d2luZG93X3R5cGVfID0gTm9uZTsKKyAgQXRvbSB3aW5kb3dfdHlwZV9ub3JtYWxfID0gTm9uZTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tU
T1BfQ0FQVFVSRV9MSU5VWF9YX0FUT01fQ0FDSEVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L3hfZXJyb3JfdHJhcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfZXJyb3JfdHJhcC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iYjVjYTQ1MTJkYzYyYTI4MjUzMjI4YTdmNjAzMTEzZmNhYTFkOTk2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9lcnJvcl90cmFwLmNjCkBAIC0wLDAgKzEsNjgg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbGludXgveF9lcnJvcl90cmFwLmgiCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworI2lm
IGRlZmluZWQoVE9PTEtJVF9HVEspCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2VuZGlmICAvLyAh
ZGVmaW5lZChUT09MS0lUX0dUSykKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK25hbWVzcGFjZSB7
CisKKyNpZiAhZGVmaW5lZChUT09MS0lUX0dUSykKKworLy8gVE9ETyhzZXJnZXl1KTogVGhpcyBj
b2RlIGlzIG5vdCB0aHJlYWQgc2FmZS4gRml4IGl0LiBCdWcgMjIwMi4KK3N0YXRpYyBib29sIGdf
eHNlcnZlcl9lcnJvcl90cmFwX2VuYWJsZWQgPSBmYWxzZTsKK3N0YXRpYyBpbnQgZ19sYXN0X3hz
ZXJ2ZXJfZXJyb3JfY29kZSA9IDA7CisKK2ludCBYU2VydmVyRXJyb3JIYW5kbGVyKERpc3BsYXkq
IGRpc3BsYXksIFhFcnJvckV2ZW50KiBlcnJvcl9ldmVudCkgeworICBhc3NlcnQoZ194c2VydmVy
X2Vycm9yX3RyYXBfZW5hYmxlZCk7CisgIGdfbGFzdF94c2VydmVyX2Vycm9yX2NvZGUgPSBlcnJv
cl9ldmVudC0+ZXJyb3JfY29kZTsKKyAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAgLy8gIWRlZmlu
ZWQoVE9PTEtJVF9HVEspCisKK30gIC8vIG5hbWVzcGFjZQorCitYRXJyb3JUcmFwOjpYRXJyb3JU
cmFwKERpc3BsYXkqIGRpc3BsYXkpCisgICAgOiBvcmlnaW5hbF9lcnJvcl9oYW5kbGVyXyhOVUxM
KSwgZW5hYmxlZF8odHJ1ZSkgeworI2lmIGRlZmluZWQoVE9PTEtJVF9HVEspCisgIGdka19lcnJv
cl90cmFwX3B1c2goKTsKKyNlbHNlICAgLy8gIWRlZmluZWQoVE9PTEtJVF9HVEspCisgIGFzc2Vy
dCghZ194c2VydmVyX2Vycm9yX3RyYXBfZW5hYmxlZCk7CisgIG9yaWdpbmFsX2Vycm9yX2hhbmRs
ZXJfID0gWFNldEVycm9ySGFuZGxlcigmWFNlcnZlckVycm9ySGFuZGxlcik7CisgIGdfeHNlcnZl
cl9lcnJvcl90cmFwX2VuYWJsZWQgPSB0cnVlOworICBnX2xhc3RfeHNlcnZlcl9lcnJvcl9jb2Rl
ID0gMDsKKyNlbmRpZiAgLy8gIWRlZmluZWQoVE9PTEtJVF9HVEspCit9CisKK2ludCBYRXJyb3JU
cmFwOjpHZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgeworICBlbmFibGVkXyA9IGZhbHNlOworI2lm
IGRlZmluZWQoVE9PTEtJVF9HVEspCisgIHJldHVybiBnZGtfZXJyb3JfdHJhcF9wdXNoKCk7Cisj
ZWxzZSAgIC8vICFkZWZpbmVkKFRPT0xLSVRfR1RLKQorICBhc3NlcnQoZ194c2VydmVyX2Vycm9y
X3RyYXBfZW5hYmxlZCk7CisgIFhTZXRFcnJvckhhbmRsZXIob3JpZ2luYWxfZXJyb3JfaGFuZGxl
cl8pOworICBnX3hzZXJ2ZXJfZXJyb3JfdHJhcF9lbmFibGVkID0gZmFsc2U7CisgIHJldHVybiBn
X2xhc3RfeHNlcnZlcl9lcnJvcl9jb2RlOworI2VuZGlmICAvLyAhZGVmaW5lZChUT09MS0lUX0dU
SykKK30KKworWEVycm9yVHJhcDo6flhFcnJvclRyYXAoKSB7CisgIGlmIChlbmFibGVkXykKKyAg
ICBHZXRMYXN0RXJyb3JBbmREaXNhYmxlKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfZXJyb3JfdHJhcC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgveF9lcnJvcl90cmFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTlkMDU5YTBiYzM2MDhlNmQxNWU2ZTk2NzRl
YWViODllMzk2YmQzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfZXJyb3Jf
dHJhcC5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVm
IE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1hfRVJST1JfVFJBUF9IXworI2RlZmluZSBN
T0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9YX0VSUk9SX1RSQVBfSF8KKworI2luY2x1ZGUg
PFgxMS9YbGliLmg+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBIZWxwZXIgY2xhc3MgdGhhdCByZWdpc3RlcnMgWCBX
aW5kb3cgZXJyb3IgaGFuZGxlci4gQ2FsbGVyIGNhbiB1c2UKKy8vIEdldExhc3RFcnJvckFuZERp
c2FibGUoKSB0byBnZXQgdGhlIGxhc3QgZXJyb3IgdGhhdCB3YXMgY2F1Z2h0LCBpZiBhbnkuCitj
bGFzcyBYRXJyb3JUcmFwIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFhFcnJvclRyYXAoRGlzcGxh
eSogZGlzcGxheSk7CisgIH5YRXJyb3JUcmFwKCk7CisKKyAgLy8gUmV0dXJucyBsYXN0IGVycm9y
IGFuZCByZW1vdmVzIHVucmVnaXN0ZXJzIHRoZSBlcnJvciBoYW5kbGVyLgorICBpbnQgR2V0TGFz
dEVycm9yQW5kRGlzYWJsZSgpOworCisgcHJpdmF0ZToKKyAgWEVycm9ySGFuZGxlciBvcmlnaW5h
bF9lcnJvcl9oYW5kbGVyXzsKKyAgYm9vbCBlbmFibGVkXzsKKworICBSVENfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOKFhFcnJvclRyYXApOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywor
CisjZW5kaWYgIC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1hfRVJST1JfVFJBUF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZGQx
Mzk4YzljYjBmNmM2NDAwOWM1NzVlZjBmYzUxMTVjMWRiNWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9saW51eC94X3NlcnZlcl9waXhlbF9idWZmZXIuY2MKQEAgLTAsMCArMSwzNTEgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDxzeXMvc2htLmg+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9kZXNrdG9wX2ZyYW1lLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgvd2luZG93X2xpc3RfdXRpbHMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9saW51eC94X2Vycm9yX3RyYXAuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1l
c3BhY2UgeworCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyB8bWFza3wgaGFzIHRvIGJl
IHNoaWZ0ZWQgbGVmdCBzbyBpdHMgbGFzdAorLy8gKG1vc3Qtc2lnbmlmaWNhbnQpIGJpdCBzZXQg
YmVjb21lcyB0aGUgbW9zdC1zaWduaWZpY2FudCBiaXQgb2YgdGhlIHdvcmQuCisvLyBXaGVuIHxt
YXNrfCBpcyAwIHRoZSBmdW5jdGlvbiByZXR1cm5zIDMxLgordWludDMyX3QgTWFza1RvU2hpZnQo
dWludDMyX3QgbWFzaykgeworICBpbnQgc2hpZnQgPSAwOworICBpZiAoKG1hc2sgJiAweGZmZmYw
MDAwdSkgPT0gMCkgeworICAgIG1hc2sgPDw9IDE2OworICAgIHNoaWZ0ICs9IDE2OworICB9Cisg
IGlmICgobWFzayAmIDB4ZmYwMDAwMDB1KSA9PSAwKSB7CisgICAgbWFzayA8PD0gODsKKyAgICBz
aGlmdCArPSA4OworICB9CisgIGlmICgobWFzayAmIDB4ZjAwMDAwMDB1KSA9PSAwKSB7CisgICAg
bWFzayA8PD0gNDsKKyAgICBzaGlmdCArPSA0OworICB9CisgIGlmICgobWFzayAmIDB4YzAwMDAw
MDB1KSA9PSAwKSB7CisgICAgbWFzayA8PD0gMjsKKyAgICBzaGlmdCArPSAyOworICB9CisgIGlm
ICgobWFzayAmIDB4ODAwMDAwMDB1KSA9PSAwKQorICAgIHNoaWZ0ICs9IDE7CisKKyAgcmV0dXJu
IHNoaWZ0OworfQorCisvLyBSZXR1cm5zIHRydWUgaWYgfGltYWdlfCBpcyBpbiBSR0IgZm9ybWF0
LgorYm9vbCBJc1hJbWFnZVJHQkZvcm1hdChYSW1hZ2UqIGltYWdlKSB7CisgIHJldHVybiBpbWFn
ZS0+Yml0c19wZXJfcGl4ZWwgPT0gMzIgJiYgaW1hZ2UtPnJlZF9tYXNrID09IDB4ZmYwMDAwICYm
CisgICAgICAgICBpbWFnZS0+Z3JlZW5fbWFzayA9PSAweGZmMDAgJiYgaW1hZ2UtPmJsdWVfbWFz
ayA9PSAweGZmOworfQorCisvLyBXZSBleHBvc2UgdHdvIGZvcm1zIG9mIGJsaXR0aW5nIHRvIGhh
bmRsZSB2YXJpYXRpb25zIGluIHRoZSBwaXhlbCBmb3JtYXQuCisvLyBJbiBGYXN0QmxpdCgpLCB0
aGUgb3BlcmF0aW9uIGlzIGVmZmVjdGl2ZWx5IGEgbWVtY3B5Lgordm9pZCBGYXN0QmxpdChYSW1h
Z2UqIHhfaW1hZ2UsCisgICAgICAgICAgICAgIHVpbnQ4X3QqIHNyY19wb3MsCisgICAgICAgICAg
ICAgIGNvbnN0IERlc2t0b3BSZWN0JiByZWN0LAorICAgICAgICAgICAgICBEZXNrdG9wRnJhbWUq
IGZyYW1lKSB7CisgIGludCBzcmNfc3RyaWRlID0geF9pbWFnZS0+Ynl0ZXNfcGVyX2xpbmU7Cisg
IGludCBkc3RfeCA9IHJlY3QubGVmdCgpLCBkc3RfeSA9IHJlY3QudG9wKCk7CisKKyAgdWludDhf
dCogZHN0X3BvcyA9IGZyYW1lLT5kYXRhKCkgKyBmcmFtZS0+c3RyaWRlKCkgKiBkc3RfeTsKKyAg
ZHN0X3BvcyArPSBkc3RfeCAqIERlc2t0b3BGcmFtZTo6a0J5dGVzUGVyUGl4ZWw7CisKKyAgaW50
IGhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7CisgIGludCByb3dfYnl0ZXMgPSByZWN0LndpZHRoKCkg
KiBEZXNrdG9wRnJhbWU6OmtCeXRlc1BlclBpeGVsOworICBmb3IgKGludCB5ID0gMDsgeSA8IGhl
aWdodDsgKyt5KSB7CisgICAgbWVtY3B5KGRzdF9wb3MsIHNyY19wb3MsIHJvd19ieXRlcyk7Cisg
ICAgc3JjX3BvcyArPSBzcmNfc3RyaWRlOworICAgIGRzdF9wb3MgKz0gZnJhbWUtPnN0cmlkZSgp
OworICB9Cit9CisKK3ZvaWQgU2xvd0JsaXQoWEltYWdlKiB4X2ltYWdlLAorICAgICAgICAgICAg
ICB1aW50OF90KiBzcmNfcG9zLAorICAgICAgICAgICAgICBjb25zdCBEZXNrdG9wUmVjdCYgcmVj
dCwKKyAgICAgICAgICAgICAgRGVza3RvcEZyYW1lKiBmcmFtZSkgeworICBpbnQgc3JjX3N0cmlk
ZSA9IHhfaW1hZ2UtPmJ5dGVzX3Blcl9saW5lOworICBpbnQgZHN0X3ggPSByZWN0LmxlZnQoKSwg
ZHN0X3kgPSByZWN0LnRvcCgpOworICBpbnQgd2lkdGggPSByZWN0LndpZHRoKCksIGhlaWdodCA9
IHJlY3QuaGVpZ2h0KCk7CisKKyAgdWludDMyX3QgcmVkX21hc2sgPSB4X2ltYWdlLT5yZWRfbWFz
azsKKyAgdWludDMyX3QgZ3JlZW5fbWFzayA9IHhfaW1hZ2UtPnJlZF9tYXNrOworICB1aW50MzJf
dCBibHVlX21hc2sgPSB4X2ltYWdlLT5ibHVlX21hc2s7CisKKyAgdWludDMyX3QgcmVkX3NoaWZ0
ID0gTWFza1RvU2hpZnQocmVkX21hc2spOworICB1aW50MzJfdCBncmVlbl9zaGlmdCA9IE1hc2tU
b1NoaWZ0KGdyZWVuX21hc2spOworICB1aW50MzJfdCBibHVlX3NoaWZ0ID0gTWFza1RvU2hpZnQo
Ymx1ZV9tYXNrKTsKKworICBpbnQgYml0c19wZXJfcGl4ZWwgPSB4X2ltYWdlLT5iaXRzX3Blcl9w
aXhlbDsKKworICB1aW50OF90KiBkc3RfcG9zID0gZnJhbWUtPmRhdGEoKSArIGZyYW1lLT5zdHJp
ZGUoKSAqIGRzdF95OworICBkc3RfcG9zICs9IGRzdF94ICogRGVza3RvcEZyYW1lOjprQnl0ZXNQ
ZXJQaXhlbDsKKyAgLy8gVE9ETyhoY2xhbSk6IE9wdGltaXplLCBwZXJoYXBzIHVzaW5nIE1NWCBj
b2RlIG9yIGJ5IGNvbnZlcnRpbmcgdG8KKyAgLy8gWVVWIGRpcmVjdGx5LgorICAvLyBUT0RPKHNl
cmdleXUpOiBUaGlzIGNvZGUgZG9lc24ndCBoYW5kbGUgWEltYWdlIGJ5dGUgb3JkZXIgcHJvcGVy
bHkgYW5kCisgIC8vIHdvbid0IHdvcmsgd2l0aCAyNGJwcCBpbWFnZXMuIEZpeCBpdC4KKyAgZm9y
IChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgIHVpbnQzMl90KiBkc3RfcG9zXzMy
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGRzdF9wb3MpOworICAgIHVpbnQzMl90KiBz
cmNfcG9zXzMyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHNyY19wb3MpOworICAgIHVp
bnQxNl90KiBzcmNfcG9zXzE2ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KHNyY19wb3Mp
OworICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworICAgICAgLy8gRGVyZWZl
cmVuY2UgdGhyb3VnaCBhbiBhcHByb3ByaWF0ZWx5LWFsaWduZWQgcG9pbnRlci4KKyAgICAgIHVp
bnQzMl90IHBpeGVsOworICAgICAgaWYgKGJpdHNfcGVyX3BpeGVsID09IDMyKSB7CisgICAgICAg
IHBpeGVsID0gc3JjX3Bvc18zMlt4XTsKKyAgICAgIH0gZWxzZSBpZiAoYml0c19wZXJfcGl4ZWwg
PT0gMTYpIHsKKyAgICAgICAgcGl4ZWwgPSBzcmNfcG9zXzE2W3hdOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcGl4ZWwgPSBzcmNfcG9zW3hdOworICAgICAgfQorICAgICAgdWludDMyX3QgciA9
IChwaXhlbCAmIHJlZF9tYXNrKSA8PCByZWRfc2hpZnQ7CisgICAgICB1aW50MzJfdCBnID0gKHBp
eGVsICYgZ3JlZW5fbWFzaykgPDwgZ3JlZW5fc2hpZnQ7CisgICAgICB1aW50MzJfdCBiID0gKHBp
eGVsICYgYmx1ZV9tYXNrKSA8PCBibHVlX3NoaWZ0OworICAgICAgLy8gV3JpdGUgYXMgMzItYml0
IFJHQi4KKyAgICAgIGRzdF9wb3NfMzJbeF0gPQorICAgICAgICAgICgociA+PiA4KSAmIDB4ZmYw
MDAwKSB8ICgoZyA+PiAxNikgJiAweGZmMDApIHwgKChiID4+IDI0KSAmIDB4ZmYpOworICAgIH0K
KyAgICBkc3RfcG9zICs9IGZyYW1lLT5zdHJpZGUoKTsKKyAgICBzcmNfcG9zICs9IHNyY19zdHJp
ZGU7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlCisKK1hTZXJ2ZXJQaXhlbEJ1ZmZlcjo6WFNl
cnZlclBpeGVsQnVmZmVyKCkge30KKworWFNlcnZlclBpeGVsQnVmZmVyOjp+WFNlcnZlclBpeGVs
QnVmZmVyKCkgeworICBSZWxlYXNlKCk7Cit9CisKK3ZvaWQgWFNlcnZlclBpeGVsQnVmZmVyOjpS
ZWxlYXNlKCkgeworICBpZiAoeF9pbWFnZV8pIHsKKyAgICBYRGVzdHJveUltYWdlKHhfaW1hZ2Vf
KTsKKyAgICB4X2ltYWdlXyA9IG51bGxwdHI7CisgIH0KKyAgaWYgKHhfc2htX2ltYWdlXykgewor
ICAgIFhEZXN0cm95SW1hZ2UoeF9zaG1faW1hZ2VfKTsKKyAgICB4X3NobV9pbWFnZV8gPSBudWxs
cHRyOworICB9CisgIGlmIChzaG1fcGl4bWFwXykgeworICAgIFhGcmVlUGl4bWFwKGRpc3BsYXlf
LCBzaG1fcGl4bWFwXyk7CisgICAgc2htX3BpeG1hcF8gPSAwOworICB9CisgIGlmIChzaG1fZ2Nf
KSB7CisgICAgWEZyZWVHQyhkaXNwbGF5Xywgc2htX2djXyk7CisgICAgc2htX2djXyA9IG51bGxw
dHI7CisgIH0KKworICBSZWxlYXNlU2hhcmVkTWVtb3J5U2VnbWVudCgpOworCisgIHdpbmRvd18g
PSAwOworfQorCit2b2lkIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6UmVsZWFzZVNoYXJlZE1lbW9yeVNl
Z21lbnQoKSB7CisgIGlmICghc2htX3NlZ21lbnRfaW5mb18pCisgICAgcmV0dXJuOworICBpZiAo
c2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIgIT0gbnVsbHB0cikKKyAgICBzaG1kdChzaG1fc2Vn
bWVudF9pbmZvXy0+c2htYWRkcik7CisgIGlmIChzaG1fc2VnbWVudF9pbmZvXy0+c2htaWQgIT0g
LTEpCisgICAgc2htY3RsKHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCwgSVBDX1JNSUQsIDApOwor
ICBkZWxldGUgc2htX3NlZ21lbnRfaW5mb187CisgIHNobV9zZWdtZW50X2luZm9fID0gbnVsbHB0
cjsKK30KKworYm9vbCBYU2VydmVyUGl4ZWxCdWZmZXI6OkluaXQoRGlzcGxheSogZGlzcGxheSwg
V2luZG93IHdpbmRvdykgeworICBSZWxlYXNlKCk7CisgIGRpc3BsYXlfID0gZGlzcGxheTsKKwor
ICBYV2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICBpZiAoIUdldFdpbmRvd1JlY3QoZGlz
cGxheV8sIHdpbmRvdywgJndpbmRvd19yZWN0XywgJmF0dHJpYnV0ZXMpKSB7CisgICAgcmV0dXJu
IGZhbHNlOworICB9CisKKyAgd2luZG93XyA9IHdpbmRvdzsKKyAgSW5pdFNobShhdHRyaWJ1dGVz
KTsKKworICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBYU2VydmVyUGl4ZWxCdWZmZXI6OkluaXRT
aG0oY29uc3QgWFdpbmRvd0F0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIHsKKyAgVmlzdWFsKiBkZWZh
dWx0X3Zpc3VhbCA9IGF0dHJpYnV0ZXMudmlzdWFsOworICBpbnQgZGVmYXVsdF9kZXB0aCA9IGF0
dHJpYnV0ZXMuZGVwdGg7CisKKyAgaW50IG1ham9yLCBtaW5vcjsKKyAgQm9vbCBoYXZlX3BpeG1h
cHM7CisgIGlmICghWFNobVF1ZXJ5VmVyc2lvbihkaXNwbGF5XywgJm1ham9yLCAmbWlub3IsICZo
YXZlX3BpeG1hcHMpKSB7CisgICAgLy8gU2hhcmVkIG1lbW9yeSBub3Qgc3VwcG9ydGVkLiBDYXB0
dXJlUmVjdCB3aWxsIHVzZSB0aGUgWEltYWdlIEFQSSBpbnN0ZWFkLgorICAgIHJldHVybjsKKyAg
fQorCisgIGJvb2wgdXNpbmdfc2htID0gZmFsc2U7CisgIHNobV9zZWdtZW50X2luZm9fID0gbmV3
IFhTaG1TZWdtZW50SW5mbzsKKyAgc2htX3NlZ21lbnRfaW5mb18tPnNobWlkID0gLTE7CisgIHNo
bV9zZWdtZW50X2luZm9fLT5zaG1hZGRyID0gbnVsbHB0cjsKKyAgc2htX3NlZ21lbnRfaW5mb18t
PnJlYWRPbmx5ID0gRmFsc2U7CisgIHhfc2htX2ltYWdlXyA9IFhTaG1DcmVhdGVJbWFnZShkaXNw
bGF5XywgZGVmYXVsdF92aXN1YWwsIGRlZmF1bHRfZGVwdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBaUGl4bWFwLCAwLCBzaG1fc2VnbWVudF9pbmZvXywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd19yZWN0Xy53aWR0aCgpLCB3aW5kb3dfcmVjdF8u
aGVpZ2h0KCkpOworICBpZiAoeF9zaG1faW1hZ2VfKSB7CisgICAgc2htX3NlZ21lbnRfaW5mb18t
PnNobWlkID0KKyAgICAgICAgc2htZ2V0KElQQ19QUklWQVRFLCB4X3NobV9pbWFnZV8tPmJ5dGVz
X3Blcl9saW5lICogeF9zaG1faW1hZ2VfLT5oZWlnaHQsCisgICAgICAgICAgICAgICBJUENfQ1JF
QVQgfCAwNjAwKTsKKyAgICBpZiAoc2htX3NlZ21lbnRfaW5mb18tPnNobWlkICE9IC0xKSB7Cisg
ICAgICB2b2lkKiBzaG1hdF9yZXN1bHQgPSBzaG1hdChzaG1fc2VnbWVudF9pbmZvXy0+c2htaWQs
IDAsIDApOworICAgICAgaWYgKHNobWF0X3Jlc3VsdCAhPSByZWludGVycHJldF9jYXN0PHZvaWQq
PigtMSkpIHsKKyAgICAgICAgc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIgPSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihzaG1hdF9yZXN1bHQpOworICAgICAgICB4X3NobV9pbWFnZV8tPmRhdGEg
PSBzaG1fc2VnbWVudF9pbmZvXy0+c2htYWRkcjsKKworICAgICAgICBYRXJyb3JUcmFwIGVycm9y
X3RyYXAoZGlzcGxheV8pOworICAgICAgICB1c2luZ19zaG0gPSBYU2htQXR0YWNoKGRpc3BsYXlf
LCBzaG1fc2VnbWVudF9pbmZvXyk7CisgICAgICAgIFhTeW5jKGRpc3BsYXlfLCBGYWxzZSk7Cisg
ICAgICAgIGlmIChlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKQorICAg
ICAgICAgIHVzaW5nX3NobSA9IGZhbHNlOworICAgICAgICBpZiAodXNpbmdfc2htKSB7CisgICAg
ICAgICAgUlRDX0xPRyhMU19WRVJCT1NFKQorICAgICAgICAgICAgICA8PCAiVXNpbmcgWCBzaGFy
ZWQgbWVtb3J5IHNlZ21lbnQgIiA8PCBzaG1fc2VnbWVudF9pbmZvXy0+c2htaWQ7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
RmFpbGVkIHRvIGdldCBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlBlcmZvcm1hbmNlIG1heSBiZSBkZWdyYWRlZC4iOworICAgIH0KKyAgfQor
CisgIGlmICghdXNpbmdfc2htKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKQorICAgICAgICA8
PCAiTm90IHVzaW5nIHNoYXJlZCBtZW1vcnkuIFBlcmZvcm1hbmNlIG1heSBiZSBkZWdyYWRlZC4i
OworICAgIFJlbGVhc2VTaGFyZWRNZW1vcnlTZWdtZW50KCk7CisgICAgcmV0dXJuOworICB9CisK
KyAgaWYgKGhhdmVfcGl4bWFwcykKKyAgICBoYXZlX3BpeG1hcHMgPSBJbml0UGl4bWFwcyhkZWZh
dWx0X2RlcHRoKTsKKworICBzaG1jdGwoc2htX3NlZ21lbnRfaW5mb18tPnNobWlkLCBJUENfUk1J
RCwgMCk7CisgIHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCA9IC0xOworCisgIFJUQ19MT0coTFNf
VkVSQk9TRSkgPDwgIlVzaW5nIFggc2hhcmVkIG1lbW9yeSBleHRlbnNpb24gdiIgPDwgbWFqb3Ig
PDwgIi4iCisgICAgICAgICAgICAgICAgICAgICAgPDwgbWlub3IgPDwgIiB3aXRoIiA8PCAoaGF2
ZV9waXhtYXBzID8gIiIgOiAib3V0IikKKyAgICAgICAgICAgICAgICAgICAgICA8PCAiIHBpeG1h
cHMuIjsKK30KKworYm9vbCBYU2VydmVyUGl4ZWxCdWZmZXI6OkluaXRQaXhtYXBzKGludCBkZXB0
aCkgeworICBpZiAoWFNobVBpeG1hcEZvcm1hdChkaXNwbGF5XykgIT0gWlBpeG1hcCkKKyAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgeworICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5Xyk7
CisgICAgc2htX3BpeG1hcF8gPSBYU2htQ3JlYXRlUGl4bWFwKAorICAgICAgICBkaXNwbGF5Xywg
d2luZG93Xywgc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIsIHNobV9zZWdtZW50X2luZm9fLAor
ICAgICAgICB3aW5kb3dfcmVjdF8ud2lkdGgoKSwgd2luZG93X3JlY3RfLmhlaWdodCgpLCBkZXB0
aCk7CisgICAgWFN5bmMoZGlzcGxheV8sIEZhbHNlKTsKKyAgICBpZiAoZXJyb3JfdHJhcC5HZXRM
YXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgeworICAgICAgLy8gfHNobV9waXhtYXBffCBpcyBu
b3Qgbm90IHZhbGlkIGJlY2F1c2UgdGhlIHJlcXVlc3Qgd2FzIG5vdCBwcm9jZXNzZWQKKyAgICAg
IC8vIGJ5IHRoZSBYIFNlcnZlciwgc28gemVybyBpdC4KKyAgICAgIHNobV9waXhtYXBfID0gMDsK
KyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKworICB7CisgICAgWEVycm9yVHJhcCBl
cnJvcl90cmFwKGRpc3BsYXlfKTsKKyAgICBYR0NWYWx1ZXMgc2htX2djX3ZhbHVlczsKKyAgICBz
aG1fZ2NfdmFsdWVzLnN1YndpbmRvd19tb2RlID0gSW5jbHVkZUluZmVyaW9yczsKKyAgICBzaG1f
Z2NfdmFsdWVzLmdyYXBoaWNzX2V4cG9zdXJlcyA9IEZhbHNlOworICAgIHNobV9nY18gPSBYQ3Jl
YXRlR0MoZGlzcGxheV8sIHdpbmRvd18sCisgICAgICAgICAgICAgICAgICAgICAgICBHQ1N1Yndp
bmRvd01vZGUgfCBHQ0dyYXBoaWNzRXhwb3N1cmVzLCAmc2htX2djX3ZhbHVlcyk7CisgICAgWFN5
bmMoZGlzcGxheV8sIEZhbHNlKTsKKyAgICBpZiAoZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JBbmRE
aXNhYmxlKCkgIT0gMCkgeworICAgICAgWEZyZWVQaXhtYXAoZGlzcGxheV8sIHNobV9waXhtYXBf
KTsKKyAgICAgIHNobV9waXhtYXBfID0gMDsKKyAgICAgIHNobV9nY18gPSAwOyAgLy8gU2VlIHNo
bV9waXhtYXBfIGNvbW1lbnQgYWJvdmUuCisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9
CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgWFNlcnZlclBpeGVsQnVmZmVyOjpJc1dpbmRv
d1ZhbGlkKCkgY29uc3QgeworICBYV2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICB7Cisg
ICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXlfKTsKKyAgICBpZiAoIVhHZXRXaW5kb3dB
dHRyaWJ1dGVzKGRpc3BsYXlfLCB3aW5kb3dfLCAmYXR0cmlidXRlcykgfHwKKyAgICAgICAgZXJy
b3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgeworICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBYU2VydmVyUGl4ZWxC
dWZmZXI6OlN5bmNocm9uaXplKCkgeworICBpZiAoc2htX3NlZ21lbnRfaW5mb18gJiYgIXNobV9w
aXhtYXBfKSB7CisgICAgLy8gWFNobUdldEltYWdlIGNhbiBmYWlsIGlmIHRoZSBkaXNwbGF5IGlz
IGJlaW5nIHJlY29uZmlndXJlZC4KKyAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheV8p
OworICAgIC8vIFhTaG1HZXRJbWFnZSBmYWlscyBpZiB0aGUgd2luZG93IGlzIHBhcnRpYWxseSBv
dXQgb2Ygc2NyZWVuLgorICAgIHhzaG1fZ2V0X2ltYWdlX3N1Y2NlZWRlZF8gPQorICAgICAgICBY
U2htR2V0SW1hZ2UoZGlzcGxheV8sIHdpbmRvd18sIHhfc2htX2ltYWdlXywgMCwgMCwgQWxsUGxh
bmVzKTsKKyAgfQorfQorCitib29sIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6Q2FwdHVyZVJlY3QoY29u
c3QgRGVza3RvcFJlY3QmIHJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGVza3RvcEZyYW1lKiBmcmFtZSkgeworICBSVENfRENIRUNLX0xFKHJlY3QucmlnaHQoKSwg
d2luZG93X3JlY3RfLndpZHRoKCkpOworICBSVENfRENIRUNLX0xFKHJlY3QuYm90dG9tKCksIHdp
bmRvd19yZWN0Xy5oZWlnaHQoKSk7CisKKyAgWEltYWdlKiBpbWFnZTsKKyAgdWludDhfdCogZGF0
YTsKKworICBpZiAoc2htX3NlZ21lbnRfaW5mb18gJiYgKHNobV9waXhtYXBfIHx8IHhzaG1fZ2V0
X2ltYWdlX3N1Y2NlZWRlZF8pKSB7CisgICAgaWYgKHNobV9waXhtYXBfKSB7CisgICAgICBYQ29w
eUFyZWEoZGlzcGxheV8sIHdpbmRvd18sIHNobV9waXhtYXBfLCBzaG1fZ2NfLCByZWN0LmxlZnQo
KSwKKyAgICAgICAgICAgICAgICByZWN0LnRvcCgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCksIHJlY3QubGVmdCgpLAorICAgICAgICAgICAgICAgIHJlY3QudG9wKCkpOworICAgICAgWFN5
bmMoZGlzcGxheV8sIEZhbHNlKTsKKyAgICB9CisKKyAgICBpbWFnZSA9IHhfc2htX2ltYWdlXzsK
KyAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW1hZ2UtPmRhdGEpICsKKyAg
ICAgICAgICAgcmVjdC50b3AoKSAqIGltYWdlLT5ieXRlc19wZXJfbGluZSArCisgICAgICAgICAg
IHJlY3QubGVmdCgpICogaW1hZ2UtPmJpdHNfcGVyX3BpeGVsIC8gODsKKworICB9IGVsc2Ugewor
ICAgIGlmICh4X2ltYWdlXykKKyAgICAgIFhEZXN0cm95SW1hZ2UoeF9pbWFnZV8pOworICAgIHhf
aW1hZ2VfID0gWEdldEltYWdlKGRpc3BsYXlfLCB3aW5kb3dfLCByZWN0LmxlZnQoKSwgcmVjdC50
b3AoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCksIEFsbFBsYW5lcywgWlBpeG1hcCk7CisgICAgaWYgKCF4X2ltYWdlXykKKyAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGltYWdlID0geF9pbWFnZV87CisgICAgZGF0YSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGltYWdlLT5kYXRhKTsKKyAgfQorCisgIGlmIChJc1hJbWFnZVJHQkZv
cm1hdChpbWFnZSkpIHsKKyAgICBGYXN0QmxpdChpbWFnZSwgZGF0YSwgcmVjdCwgZnJhbWUpOwor
ICB9IGVsc2UgeworICAgIFNsb3dCbGl0KGltYWdlLCBkYXRhLCByZWN0LCBmcmFtZSk7CisgIH0K
KworICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51
eC94X3NlcnZlcl9waXhlbF9idWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTM5OGRhYzk5NjgwMTY5ODFm
M2UzZmVhNTdhM2U4NmU1YmQ0OWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgv
eF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqICBDb3B5cmln
aHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKy8vIERvbid0IGluY2x1ZGUgdGhpcyBmaWxlIGluIGFueSAuaCBmaWxlcyBiZWNh
dXNlIGl0IHB1bGxzIGluIHNvbWUgWCBoZWFkZXJzLgorCisjaWZuZGVmIE1PRFVMRVNfREVTS1RP
UF9DQVBUVVJFX0xJTlVYX1hfU0VSVkVSX1BJWEVMX0JVRkZFUl9IXworI2RlZmluZSBNT0RVTEVT
X0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9YX1NFUlZFUl9QSVhFTF9CVUZGRVJfSF8KKworI2luY2x1
ZGUgPFgxMS9YdXRpbC5oPgorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hTaG0uaD4KKworI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0cnkuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CitjbGFzcyBEZXNrdG9wRnJhbWU7CisKKy8vIEEgY2xhc3MgdG8gYWxsb3cgdGhlIFggc2VydmVy
J3MgcGl4ZWwgYnVmZmVyIHRvIGJlIGFjY2Vzc2VkIGFzIGVmZmljaWVudGx5CisvLyBhcyBwb3Nz
aWJsZS4KK2NsYXNzIFhTZXJ2ZXJQaXhlbEJ1ZmZlciB7CisgcHVibGljOgorICBYU2VydmVyUGl4
ZWxCdWZmZXIoKTsKKyAgflhTZXJ2ZXJQaXhlbEJ1ZmZlcigpOworCisgIHZvaWQgUmVsZWFzZSgp
OworCisgIC8vIEFsbG9jYXRlIChvciByZWFsbG9jYXRlKSB0aGUgcGl4ZWwgYnVmZmVyIGZvciB8
d2luZG93fC4gUmV0dXJucyBmYWxzZSBpbgorICAvLyBjYXNlIG9mIGFuIGVycm9yIChlLmcuIHdp
bmRvdyBkb2Vzbid0IGV4aXN0KS4KKyAgYm9vbCBJbml0KERpc3BsYXkqIGRpc3BsYXksIFdpbmRv
dyB3aW5kb3cpOworCisgIGJvb2wgaXNfaW5pdGlhbGl6ZWQoKSB7IHJldHVybiB3aW5kb3dfICE9
IDA7IH0KKworICAvLyBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cgdGhlIGJ1ZmZlciB3
YXMgaW5pdGlhbGl6ZWQgZm9yLgorICBEZXNrdG9wU2l6ZSB3aW5kb3dfc2l6ZSgpIHsgcmV0dXJu
IHdpbmRvd19yZWN0Xy5zaXplKCk7IH0KKworICAvLyBSZXR1cm5zIHRoZSByZWN0YW5nbGUgb2Yg
dGhlIHdpbmRvdyB0aGUgYnVmZmVyIHdhcyBpbml0aWFsaXplZCBmb3IuCisgIGNvbnN0IERlc2t0
b3BSZWN0JiB3aW5kb3dfcmVjdCgpIHsgcmV0dXJuIHdpbmRvd19yZWN0XzsgfQorCisgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGNhbiBiZSBmb3VuZC4KKyAgYm9vbCBJc1dpbmRvd1Zh
bGlkKCkgY29uc3Q7CisKKyAgLy8gSWYgc2hhcmVkIG1lbW9yeSBpcyBiZWluZyB1c2VkIHdpdGhv
dXQgcGl4bWFwcywgc3luY2hyb25pemUgdGhpcyBwaXhlbAorICAvLyBidWZmZXIgd2l0aCB0aGUg
cm9vdCB3aW5kb3cgY29udGVudHMgKG90aGVyd2lzZSwgdGhpcyBpcyBhIG5vLW9wKS4KKyAgLy8g
VGhpcyBpcyB0byBhdm9pZCBkb2luZyBhIGZ1bGwtc2NyZWVuIGNhcHR1cmUgZm9yIGVhY2ggaW5k
aXZpZHVhbAorICAvLyByZWN0YW5nbGUgaW4gdGhlIGNhcHR1cmUgbGlzdCwgd2hlbiBpdCBvbmx5
IG5lZWRzIHRvIGJlIGRvbmUgb25jZSBhdCB0aGUKKyAgLy8gYmVnaW5uaW5nLgorICB2b2lkIFN5
bmNocm9uaXplKCk7CisKKyAgLy8gQ2FwdHVyZSB0aGUgc3BlY2lmaWVkIHJlY3RhbmdsZSBhbmQg
c3RvcmVzIGl0IGluIHRoZSB8ZnJhbWV8LiBJbiB0aGUgY2FzZQorICAvLyB3aGVyZSB0aGUgZnVs
bC1zY3JlZW4gZGF0YSBpcyBjYXB0dXJlZCBieSBTeW5jaHJvbml6ZSgpLCB0aGlzIHNpbXBseQor
ICAvLyByZXR1cm5zIHRoZSBwb2ludGVyIHdpdGhvdXQgZG9pbmcgYW55IG1vcmUgd29yay4gVGhl
IGNhbGxlciBtdXN0IGVuc3VyZQorICAvLyB0aGF0IHxyZWN0fCBpcyBub3QgbGFyZ2VyIHRoYW4g
d2luZG93X3NpemUoKS4KKyAgYm9vbCBDYXB0dXJlUmVjdChjb25zdCBEZXNrdG9wUmVjdCYgcmVj
dCwgRGVza3RvcEZyYW1lKiBmcmFtZSk7CisKKyBwcml2YXRlOgorICB2b2lkIFJlbGVhc2VTaGFy
ZWRNZW1vcnlTZWdtZW50KCk7CisKKyAgdm9pZCBJbml0U2htKGNvbnN0IFhXaW5kb3dBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzKTsKKyAgYm9vbCBJbml0UGl4bWFwcyhpbnQgZGVwdGgpOworCisgIERp
c3BsYXkqIGRpc3BsYXlfID0gbnVsbHB0cjsKKyAgV2luZG93IHdpbmRvd18gPSAwOworICBEZXNr
dG9wUmVjdCB3aW5kb3dfcmVjdF87CisgIFhJbWFnZSogeF9pbWFnZV8gPSBudWxscHRyOworICBY
U2htU2VnbWVudEluZm8qIHNobV9zZWdtZW50X2luZm9fID0gbnVsbHB0cjsKKyAgWEltYWdlKiB4
X3NobV9pbWFnZV8gPSBudWxscHRyOworICBQaXhtYXAgc2htX3BpeG1hcF8gPSAwOworICBHQyBz
aG1fZ2NfID0gbnVsbHB0cjsKKyAgYm9vbCB4c2htX2dldF9pbWFnZV9zdWNjZWVkZWRfID0gZmFs
c2U7CisKKyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihYU2VydmVyUGl4ZWxCdWZmZXIp
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfREVT
S1RPUF9DQVBUVVJFX0xJTlVYX1hfU0VSVkVSX1BJWEVMX0JVRkZFUl9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvbWFjL2Rlc2t0b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
bWFjL2Rlc2t0b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmNjCmluZGV4IGQ0MzY0YmVkYzJiZTVl
M2Q2ZmRjYjU1ZGIzZmE3M2UxYjI0OTcxYWEuLjlhMzJmNjM4ZDhmZGI5ZjNhYmMxZWM0MzQ0Mjky
ODAyMTQxNmI2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21hYy9kZXNrdG9wX2NvbmZpZ3VyYXRp
b25fbW9uaXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tYWMvZGVza3RvcF9jb25maWd1cmF0aW9uX21v
bml0b3IuY2MKQEAgLTE3LDE5ICsxNywxMiBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotLy8g
VGhlIGFtb3VudCBvZiB0aW1lIGFsbG93ZWQgZm9yIGRpc3BsYXlzIHRvIHJlY29uZmlndXJlLgot
c3RhdGljIGNvbnN0IGludDY0X3Qga0Rpc3BsYXlDb25maWd1cmF0aW9uRXZlbnRUaW1lb3V0TXMg
PSAxMCAqIDEwMDA7Ci0KLURlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcjo6RGVza3RvcENvbmZp
Z3VyYXRpb25Nb25pdG9yKCkKLSAgICA6IGRpc3BsYXlfY29uZmlndXJhdGlvbl9jYXB0dXJlX2V2
ZW50XyhFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSB7CitEZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0
b3I6OkRlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcigpIHsKICAgQ0dFcnJvciBlcnIgPSBDR0Rp
c3BsYXlSZWdpc3RlclJlY29uZmlndXJhdGlvbkNhbGxiYWNrKAogICAgICAgRGVza3RvcENvbmZp
Z3VyYXRpb25Nb25pdG9yOjpEaXNwbGF5c1JlY29uZmlndXJlZENhbGxiYWNrLCB0aGlzKTsKLSAg
aWYgKGVyciAhPSBrQ0dFcnJvclN1Y2Nlc3MpIHsKKyAgaWYgKGVyciAhPSBrQ0dFcnJvclN1Y2Nl
c3MpCiAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNHRGlzcGxheVJlZ2lzdGVyUmVjb25maWd1
cmF0aW9uQ2FsbGJhY2sgIiA8PCBlcnI7Ci0gICAgYWJvcnQoKTsKLSAgfQotICBkaXNwbGF5X2Nv
bmZpZ3VyYXRpb25fY2FwdHVyZV9ldmVudF8tPlNldCgpOwotCisgIHJ0Yzo6Q3JpdFNjb3BlIGNz
KCZkZXNrdG9wX2NvbmZpZ3VyYXRpb25fbG9ja18pOwogICBkZXNrdG9wX2NvbmZpZ3VyYXRpb25f
ID0gTWFjRGVza3RvcENvbmZpZ3VyYXRpb246OkdldEN1cnJlbnQoCiAgICAgICBNYWNEZXNrdG9w
Q29uZmlndXJhdGlvbjo6VG9wTGVmdE9yaWdpbik7CiB9CkBAIC00MSwxOSArMzQsMTMgQEAgRGVz
a3RvcENvbmZpZ3VyYXRpb25Nb25pdG9yOjp+RGVza3RvcENvbmZpZ3VyYXRpb25Nb25pdG9yKCkg
ewogICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDR0Rpc3BsYXlSZW1vdmVSZWNvbmZpZ3VyYXRp
b25DYWxsYmFjayAiIDw8IGVycjsKIH0KIAotdm9pZCBEZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0
b3I6OkxvY2soKSB7Ci0gIGlmICghZGlzcGxheV9jb25maWd1cmF0aW9uX2NhcHR1cmVfZXZlbnRf
LT5XYWl0KAotICAgICAgICAgIGtEaXNwbGF5Q29uZmlndXJhdGlvbkV2ZW50VGltZW91dE1zKSkg
ewotICAgIFJUQ19MT0dfRihMU19FUlJPUikgPDwgIkV2ZW50IHdhaXQgdGltZWQgb3V0LiI7Ci0g
ICAgYWJvcnQoKTsKLSAgfQotfQotCi12b2lkIERlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcjo6
VW5sb2NrKCkgewotICBkaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2FwdHVyZV9ldmVudF8tPlNldCgp
OworTWFjRGVza3RvcENvbmZpZ3VyYXRpb24gRGVza3RvcENvbmZpZ3VyYXRpb25Nb25pdG9yOjpk
ZXNrdG9wX2NvbmZpZ3VyYXRpb24oKSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJmRlc2t0b3Bf
Y29uZmlndXJhdGlvbl9sb2NrXyk7CisgIHJldHVybiBkZXNrdG9wX2NvbmZpZ3VyYXRpb25fOwog
fQogCiAvLyBzdGF0aWMKKy8vIFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgb24gYW55IHN5c3Rl
bSB0aHJlYWQuCiB2b2lkIERlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcjo6RGlzcGxheXNSZWNv
bmZpZ3VyZWRDYWxsYmFjaygKICAgICBDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5LAogICAgIENH
RGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyBmbGFncywKQEAgLTcyLDI0ICs1OSwxNSBAQCB2b2lk
IERlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcjo6RGlzcGxheXNSZWNvbmZpZ3VyZWQoCiAgICAg
ICAgICAgICAgICAgICAgPDwgZmxhZ3M7CiAKICAgaWYgKGZsYWdzICYga0NHRGlzcGxheUJlZ2lu
Q29uZmlndXJhdGlvbkZsYWcpIHsKLSAgICBpZiAocmVjb25maWd1cmluZ19kaXNwbGF5c18uZW1w
dHkoKSkgewotICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgZGlzcGxheSB0byBzdGFydCBy
ZWNvbmZpZ3VyaW5nIHRoZW4gd2FpdCBvbgotICAgICAgLy8gfGRpc3BsYXlfY29uZmlndXJhdGlv
bl9jYXB0dXJlX2V2ZW50X3wgdG8gYmxvY2sgdGhlIGNhcHR1cmUgdGhyZWFkCi0gICAgICAvLyBm
cm9tIGFjY2Vzc2luZyBkaXNwbGF5IG1lbW9yeSB1bnRpbCB0aGUgcmVjb25maWd1cmF0aW9uIGNv
bXBsZXRlcy4KLSAgICAgIGlmICghZGlzcGxheV9jb25maWd1cmF0aW9uX2NhcHR1cmVfZXZlbnRf
LT5XYWl0KAotICAgICAgICAgICAgICBrRGlzcGxheUNvbmZpZ3VyYXRpb25FdmVudFRpbWVvdXRN
cykpIHsKLSAgICAgICAgUlRDX0xPR19GKExTX0VSUk9SKSA8PCAiRXZlbnQgd2FpdCB0aW1lZCBv
dXQuIjsKLSAgICAgICAgYWJvcnQoKTsKLSAgICAgIH0KLSAgICB9CiAgICAgcmVjb25maWd1cmlu
Z19kaXNwbGF5c18uaW5zZXJ0KGRpc3BsYXkpOwotICB9IGVsc2UgewotICAgIHJlY29uZmlndXJp
bmdfZGlzcGxheXNfLmVyYXNlKGRpc3BsYXkpOwotICAgIGlmIChyZWNvbmZpZ3VyaW5nX2Rpc3Bs
YXlzXy5lbXB0eSgpKSB7Ci0gICAgICBkZXNrdG9wX2NvbmZpZ3VyYXRpb25fID0gTWFjRGVza3Rv
cENvbmZpZ3VyYXRpb246OkdldEN1cnJlbnQoCi0gICAgICAgICAgTWFjRGVza3RvcENvbmZpZ3Vy
YXRpb246OlRvcExlZnRPcmlnaW4pOwotICAgICAgZGlzcGxheV9jb25maWd1cmF0aW9uX2NhcHR1
cmVfZXZlbnRfLT5TZXQoKTsKLSAgICB9CisgICAgcmV0dXJuOworICB9CisKKyAgcmVjb25maWd1
cmluZ19kaXNwbGF5c18uZXJhc2UoZGlzcGxheSk7CisgIGlmIChyZWNvbmZpZ3VyaW5nX2Rpc3Bs
YXlzXy5lbXB0eSgpKSB7CisgICAgcnRjOjpDcml0U2NvcGUgY3MoJmRlc2t0b3BfY29uZmlndXJh
dGlvbl9sb2NrXyk7CisgICAgZGVza3RvcF9jb25maWd1cmF0aW9uXyA9IE1hY0Rlc2t0b3BDb25m
aWd1cmF0aW9uOjpHZXRDdXJyZW50KAorICAgICAgICBNYWNEZXNrdG9wQ29uZmlndXJhdGlvbjo6
VG9wTGVmdE9yaWdpbik7CiAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbWFjL2Rlc2t0
b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tYWMvZGVza3RvcF9jb25maWd1
cmF0aW9uX21vbml0b3IuaAppbmRleCA1MjE1ZTU0OTZhZGU4ZDJiMDEyY2IwYzU4MmY5NTViYjRk
MDJiNjM0Li5jYmY1ODBiMjM1MzAxZjZhMzdmZDM4OWVmYWQ5ZDc1YTFkYjc5NTRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9tYWMvZGVza3RvcF9jb25maWd1cmF0aW9uX21vbml0b3IuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9tYWMvZGVza3RvcF9jb25maWd1cmF0aW9uX21vbml0b3IuaApAQCAtMTksMjUgKzE5
LDE3IEBACiAjaW5jbHVkZSAiYXBpL3JlZmNvdW50ZWRiYXNlLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbWFjL2Rlc2t0b3BfY29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNh
bHNlY3Rpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIEV2ZW50V3JhcHBlcjsK
LQogLy8gVGhlIGNsYXNzIHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBzeW5jaHJvbml6ZSBjYXB0dXJp
bmcgYW5kIGRpc3BsYXkKIC8vIHJlY29uZmlndXJpbmcgYWNyb3NzIHRocmVhZHMsIGFuZCB0aGUg
dXAtdG8tZGF0ZSBNYWNEZXNrdG9wQ29uZmlndXJhdGlvbi4KIGNsYXNzIERlc2t0b3BDb25maWd1
cmF0aW9uTW9uaXRvciA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRCYXNlIHsKICBwdWJsaWM6CiAg
IERlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcigpOwotICAvLyBBY3F1aXJlcyBhIGxvY2sgb24g
dGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KLSAgdm9pZCBMb2NrKCk7Ci0gIC8vIFJlbGVhc2Vz
IHRoZSBsb2NrIHByZXZpb3VzbHkgYWNxdWlyZWQuCi0gIHZvaWQgVW5sb2NrKCk7Ci0gIC8vIFJl
dHVybnMgdGhlIGN1cnJlbnQgZGVza3RvcCBjb25maWd1cmF0aW9uLiBTaG91bGQgb25seSBiZSBj
YWxsZWQgd2hlbiB0aGUKLSAgLy8gbG9jayBoYXMgYmVlbiBhY3F1aXJlZC4KLSAgY29uc3QgTWFj
RGVza3RvcENvbmZpZ3VyYXRpb24mIGRlc2t0b3BfY29uZmlndXJhdGlvbigpIHsKLSAgICByZXR1
cm4gZGVza3RvcF9jb25maWd1cmF0aW9uXzsKLSAgfQorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50
IGRlc2t0b3AgY29uZmlndXJhdGlvbi4KKyAgTWFjRGVza3RvcENvbmZpZ3VyYXRpb24gZGVza3Rv
cF9jb25maWd1cmF0aW9uKCk7CiAKICBwcm90ZWN0ZWQ6CiAgIH5EZXNrdG9wQ29uZmlndXJhdGlv
bk1vbml0b3IoKSBvdmVycmlkZTsKQEAgLTQ5LDkgKzQxLDEwIEBAIGNsYXNzIERlc2t0b3BDb25m
aWd1cmF0aW9uTW9uaXRvciA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRCYXNlIHsKICAgdm9pZCBE
aXNwbGF5c1JlY29uZmlndXJlZChDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyBmbGFncyk7CiAK
KyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gZGVza3RvcF9jb25maWd1cmF0aW9uX2xvY2tfOworICBN
YWNEZXNrdG9wQ29uZmlndXJhdGlvbiBkZXNrdG9wX2NvbmZpZ3VyYXRpb25fCisgICAgICBSVENf
R1VBUkRFRF9CWSgmZGVza3RvcF9jb25maWd1cmF0aW9uX2xvY2tfKTsKICAgc3RkOjpzZXQ8Q0dE
aXJlY3REaXNwbGF5SUQ+IHJlY29uZmlndXJpbmdfZGlzcGxheXNfOwotICBNYWNEZXNrdG9wQ29u
ZmlndXJhdGlvbiBkZXNrdG9wX2NvbmZpZ3VyYXRpb25fOwotICBzdGQ6OnVuaXF1ZV9wdHI8RXZl
bnRXcmFwcGVyPiBkaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2FwdHVyZV9ldmVudF87CiAKICAgUlRD
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihEZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3IpOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21hYy9zY3JlZW5fY2FwdHVyZXJfbWFjLm1tIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbWFjL3NjcmVlbl9jYXB0dXJlcl9tYWMubW0KaW5kZXggMGQ0ZmEwNzJiNWY2NDMzYWYw
MDgyMmUyYTM3NjM3OGY1MWY0M2YyOC4uNTQyZDFjNWY0M2ZlNzRmYTgwZDVmYTUyZjM5ZTcwNGQ5
YTQzODc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbWFjL3NjcmVlbl9jYXB0dXJlcl9tYWMubW0K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvbWFjL3NjcmVlbl9jYXB0dXJlcl9tYWMubW0KQEAgLTE2NywxMSArMTY3
LDcgQEAgU2NyZWVuQ2FwdHVyZXJNYWM6On5TY3JlZW5DYXB0dXJlck1hYygpIHsKIAogYm9vbCBT
Y3JlZW5DYXB0dXJlck1hYzo6SW5pdCgpIHsKICAgVFJBQ0VfRVZFTlQwKCJ3ZWJydGMiLCAiU2Ny
ZWVuQ2FwdHVyZXJNYWM6OkluaXQiKTsKLQotICBkZXNrdG9wX2NvbmZpZ19tb25pdG9yXy0+TG9j
aygpOwogICBkZXNrdG9wX2NvbmZpZ18gPSBkZXNrdG9wX2NvbmZpZ19tb25pdG9yXy0+ZGVza3Rv
cF9jb25maWd1cmF0aW9uKCk7Ci0gIGRlc2t0b3BfY29uZmlnX21vbml0b3JfLT5VbmxvY2soKTsK
LQogICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjA3LDcgKzIwMyw2IEBAIHZvaWQgU2NyZWVuQ2Fw
dHVyZXJNYWM6OkNhcHR1cmVGcmFtZSgpIHsKICAgcXVldWVfLk1vdmVUb05leHRGcmFtZSgpOwog
ICBSVENfRENIRUNLKCFxdWV1ZV8uY3VycmVudF9mcmFtZSgpIHx8ICFxdWV1ZV8uY3VycmVudF9m
cmFtZSgpLT5Jc1NoYXJlZCgpKTsKIAotICBkZXNrdG9wX2NvbmZpZ19tb25pdG9yXy0+TG9jaygp
OwogICBNYWNEZXNrdG9wQ29uZmlndXJhdGlvbiBuZXdfY29uZmlnID0gZGVza3RvcF9jb25maWdf
bW9uaXRvcl8tPmRlc2t0b3BfY29uZmlndXJhdGlvbigpOwogICBpZiAoIWRlc2t0b3BfY29uZmln
Xy5FcXVhbHMobmV3X2NvbmZpZykpIHsKICAgICBkZXNrdG9wX2NvbmZpZ18gPSBuZXdfY29uZmln
OwpAQCAtMjM0LDcgKzIyOSw2IEBAIHZvaWQgU2NyZWVuQ2FwdHVyZXJNYWM6OkNhcHR1cmVGcmFt
ZSgpIHsKICAgRGVza3RvcEZyYW1lKiBjdXJyZW50X2ZyYW1lID0gcXVldWVfLmN1cnJlbnRfZnJh
bWUoKTsKIAogICBpZiAoIUNnQmxpdCgqY3VycmVudF9mcmFtZSwgcmVnaW9uKSkgewotICAgIGRl
c2t0b3BfY29uZmlnX21vbml0b3JfLT5VbmxvY2soKTsKICAgICBjYWxsYmFja18tPk9uQ2FwdHVy
ZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVOVCwgbnVsbHB0cik7CiAgICAgcmV0dXJuOwog
ICB9CkBAIC0yNTYsMTAgKzI1MCw2IEBAIHZvaWQgU2NyZWVuQ2FwdHVyZXJNYWM6OkNhcHR1cmVG
cmFtZSgpIHsKIAogICBoZWxwZXJfLnNldF9zaXplX21vc3RfcmVjZW50KG5ld19mcmFtZS0+c2l6
ZSgpKTsKIAotICAvLyBTaWduYWwgdGhhdCB3ZSBhcmUgZG9uZSBjYXB0dXJpbmcgZGF0YSBmcm9t
IHRoZSBkaXNwbGF5IGZyYW1lYnVmZmVyLAotICAvLyBhbmQgYWNjZXNzaW5nIGRpc3BsYXkgc3Ry
dWN0dXJlcy4KLSAgZGVza3RvcF9jb25maWdfbW9uaXRvcl8tPlVubG9jaygpOwotCiAgIG5ld19m
cmFtZS0+c2V0X2NhcHR1cmVfdGltZV9tcygocnRjOjpUaW1lTmFub3MoKSAtIGNhcHR1cmVfc3Rh
cnRfdGltZV9uYW5vcykgLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpr
TnVtTmFub3NlY3NQZXJNaWxsaXNlYyk7CiAgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJl
c3VsdDo6U1VDQ0VTUywgc3RkOjptb3ZlKG5ld19mcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvbW91c2VfY3Vyc29yX21vbml0b3JfbGludXguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3Jf
bW9uaXRvcl9saW51eC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWYzNDRlZjQwOGE2OTYyNzA2YzFlOTQwODRk
MjA3ZGFhNjg3Y2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2VfY3Vyc29yX21v
bml0b3JfbGludXguY2MKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25pdG9yLmgiCisK
KyNpZiBkZWZpbmVkKFVTRV9YMTEpCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
bGludXgvbW91c2VfY3Vyc29yX21vbml0b3JfeDExLmgiCisjZW5kaWYgIC8vIGRlZmluZWQoVVNF
X1gxMSkKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIHN0YXRpYworTW91c2VDdXJzb3JNb25p
dG9yKiBNb3VzZUN1cnNvck1vbml0b3I6OkNyZWF0ZUZvcldpbmRvdygKKyAgICBjb25zdCBEZXNr
dG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsCisgICAgV2luZG93SWQgd2luZG93KSB7CisjaWYg
ZGVmaW5lZChVU0VfWDExKQorICByZXR1cm4gTW91c2VDdXJzb3JNb25pdG9yWDExOjpDcmVhdGVG
b3JXaW5kb3cob3B0aW9ucywgd2luZG93KTsKKyNlbHNlCisgIHJldHVybiBudWxscHRyOworI2Vu
ZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCit9CisKKy8vIHN0YXRpYworTW91c2VDdXJzb3JNb25p
dG9yKiBNb3VzZUN1cnNvck1vbml0b3I6OkNyZWF0ZUZvclNjcmVlbigKKyAgICBjb25zdCBEZXNr
dG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsCisgICAgU2NyZWVuSWQgc2NyZWVuKSB7CisjaWYg
ZGVmaW5lZChVU0VfWDExKQorICByZXR1cm4gTW91c2VDdXJzb3JNb25pdG9yWDExOjpDcmVhdGVG
b3JTY3JlZW4ob3B0aW9ucywgc2NyZWVuKTsKKyNlbHNlCisgIHJldHVybiBudWxscHRyOworI2Vu
ZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCit9CisKKy8vIHN0YXRpYworc3RkOjp1bmlxdWVfcHRy
PE1vdXNlQ3Vyc29yTW9uaXRvcj4gTW91c2VDdXJzb3JNb25pdG9yOjpDcmVhdGUoCisgICAgY29u
c3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7CisjaWYgZGVmaW5lZChVU0VfWDEx
KQorICByZXR1cm4gTW91c2VDdXJzb3JNb25pdG9yWDExOjpDcmVhdGUob3B0aW9ucyk7CisjZWxz
ZQorICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAgLy8gZGVmaW5lZChVU0VfWDExKQorfQorCit9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3Jf
bW9uaXRvcl9tYWMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3JfbW9uaXRvcl9tYWMubW0KaW5k
ZXggZGU4ODc2NDM4ZjhhOTg2MGU5YjU0MGNlOWU4ZmRkMTY1Yzc4NWZiNy4uMzQwMmE1ZmZiYmNi
ZTA0MGRkMTUzYmFmNGY0Y2RkY2JmYzZlMzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2Vf
Y3Vyc29yX21vbml0b3JfbWFjLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25pdG9y
X21hYy5tbQpAQCAtMTE3LDEwICsxMTcsOCBAQCB2b2lkIE1vdXNlQ3Vyc29yTW9uaXRvck1hYzo6
Q2FwdHVyZSgpIHsKIAogICBEZXNrdG9wVmVjdG9yIHBvc2l0aW9uKGdjX3Bvc2l0aW9uLngsIGdj
X3Bvc2l0aW9uLnkpOwogCi0gIGNvbmZpZ3VyYXRpb25fbW9uaXRvcl8tPkxvY2soKTsKICAgTWFj
RGVza3RvcENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9CiAgICAgICBjb25maWd1cmF0aW9u
X21vbml0b3JfLT5kZXNrdG9wX2NvbmZpZ3VyYXRpb24oKTsKLSAgY29uZmlndXJhdGlvbl9tb25p
dG9yXy0+VW5sb2NrKCk7CiAgIGZsb2F0IHNjYWxlID0gR2V0U2NhbGVGYWN0b3JBdFBvc2l0aW9u
KGNvbmZpZ3VyYXRpb24sIHBvc2l0aW9uKTsKIAogICBDYXB0dXJlSW1hZ2Uoc2NhbGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbW91c2VfY3Vyc29yX21vbml0b3JfeDExLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
bW91c2VfY3Vyc29yX21vbml0b3JfeDExLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0MTc0OWJkMjg0MWJiNWY2YWFkYjI3NmJiNDI5ZTUwYTQ4NGI2YTRkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9t
b25pdG9yX3gxMS5jYworKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0vKgotICogIENv
cHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0g
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgIm1vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25pdG9yLmgiCi0KLSNpbmNsdWRlIDxYMTEvWGxp
Yi5oPgotI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hm
aXhlcy5oPgotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0
dXJlX29wdGlvbnMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9w
X2NhcHR1cmVfdHlwZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNr
dG9wX2ZyYW1lLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2VfY3Vy
c29yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfZXJyb3JfdHJh
cC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIHsKLQotLy8g
V2luZG93Q2FwdHVyZXIgcmV0dXJucyB3aW5kb3cgSURzIG9mIFgxMSB3aW5kb3dzIHdpdGggV01f
U1RBVEUgYXR0cmlidXRlLgotLy8gVGhlc2Ugd2luZG93cyBtYXkgbm90IGJlIGltbWVkaWF0ZSBj
aGlsZHJlbiBvZiB0aGUgcm9vdCB3aW5kb3csIGJlY2F1c2UKLS8vIHdpbmRvdyBtYW5hZ2VycyBt
YXkgcmUtcGFyZW50IHRoZW0gdG8gYWRkIGRlY29yYXRpb25zLiBIb3dldmVyLAotLy8gWFF1ZXJ5
UG9pbnRlcigpIGV4cGVjdHMgdG8gYmUgcGFzc2VkIGNoaWxkcmVuIG9mIHRoZSByb290LiBUaGlz
IGZ1bmN0aW9uCi0vLyBzZWFyY2hlcyB1cCB0aGUgbGlzdCBvZiB0aGUgd2luZG93cyB0byBmaW5k
IHRoZSByb290IGNoaWxkIHRoYXQgY29ycmVzcG9uZHMKLS8vIHRvIHx3aW5kb3d8LgotV2luZG93
IEdldFRvcExldmVsV2luZG93KERpc3BsYXkqIGRpc3BsYXksIFdpbmRvdyB3aW5kb3cpIHsKLSAg
d2hpbGUgKHRydWUpIHsKLSAgICAvLyBJZiB0aGUgd2luZG93IGlzIGluIFdpdGhkcmF3blN0YXRl
IHRoZW4gbG9vayBhdCBhbGwgb2YgaXRzIGNoaWxkcmVuLgotICAgIDo6V2luZG93IHJvb3QsIHBh
cmVudDsKLSAgICA6OldpbmRvdyogY2hpbGRyZW47Ci0gICAgdW5zaWduZWQgaW50IG51bV9jaGls
ZHJlbjsKLSAgICBpZiAoIVhRdWVyeVRyZWUoZGlzcGxheSwgd2luZG93LCAmcm9vdCwgJnBhcmVu
dCwgJmNoaWxkcmVuLAotICAgICAgICAgICAgICAgICAgICAmbnVtX2NoaWxkcmVuKSkgewotICAg
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBxdWVyeSBmb3IgY2hpbGQgd2luZG93
cyBhbHRob3VnaCB3aW5kb3ciCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiZG9lcyBub3Qg
aGF2ZSBhIHZhbGlkIFdNX1NUQVRFLiI7Ci0gICAgICByZXR1cm4gTm9uZTsKLSAgICB9Ci0gICAg
aWYgKGNoaWxkcmVuKQotICAgICAgWEZyZWUoY2hpbGRyZW4pOwotCi0gICAgaWYgKHBhcmVudCA9
PSByb290KQotICAgICAgYnJlYWs7Ci0KLSAgICB3aW5kb3cgPSBwYXJlbnQ7Ci0gIH0KLQotICBy
ZXR1cm4gd2luZG93OwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotbmFtZXNwYWNlIHdlYnJ0YyB7
Ci0KLWNsYXNzIE1vdXNlQ3Vyc29yTW9uaXRvclgxMSA6IHB1YmxpYyBNb3VzZUN1cnNvck1vbml0
b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU2hhcmVkWERpc3BsYXk6
OlhFdmVudEhhbmRsZXIgewotIHB1YmxpYzoKLSAgTW91c2VDdXJzb3JNb25pdG9yWDExKGNvbnN0
IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywgV2luZG93IHdpbmRvdyk7Ci0gIH5Nb3Vz
ZUN1cnNvck1vbml0b3JYMTEoKSBvdmVycmlkZTsKLQotICB2b2lkIEluaXQoQ2FsbGJhY2sqIGNh
bGxiYWNrLCBNb2RlIG1vZGUpIG92ZXJyaWRlOwotICB2b2lkIENhcHR1cmUoKSBvdmVycmlkZTsK
LQotIHByaXZhdGU6Ci0gIC8vIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIGludGVyZmFj
ZS4KLSAgYm9vbCBIYW5kbGVYRXZlbnQoY29uc3QgWEV2ZW50JiBldmVudCkgb3ZlcnJpZGU7Ci0K
LSAgRGlzcGxheSogZGlzcGxheSgpIHsgcmV0dXJuIHhfZGlzcGxheV8tPmRpc3BsYXkoKTsgfQot
Ci0gIC8vIENhcHR1cmVzIGN1cnJlbnQgY3Vyc29yIHNoYXBlIGFuZCBzdG9yZXMgaXQgaW4gfGN1
cnNvcl9zaGFwZV98LgotICB2b2lkIENhcHR1cmVDdXJzb3IoKTsKLQotICBydGM6OnNjb3BlZF9y
ZWZwdHI8U2hhcmVkWERpc3BsYXk+IHhfZGlzcGxheV87Ci0gIENhbGxiYWNrKiBjYWxsYmFja187
Ci0gIE1vZGUgbW9kZV87Ci0gIFdpbmRvdyB3aW5kb3dfOwotCi0gIGJvb2wgaGF2ZV94Zml4ZXNf
OwotICBpbnQgeGZpeGVzX2V2ZW50X2Jhc2VfOwotICBpbnQgeGZpeGVzX2Vycm9yX2Jhc2VfOwot
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxNb3VzZUN1cnNvcj4gY3Vyc29yX3NoYXBlXzsKLX07Ci0KLU1v
dXNlQ3Vyc29yTW9uaXRvclgxMTo6TW91c2VDdXJzb3JNb25pdG9yWDExKAotICAgIGNvbnN0IERl
c2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywKLSAgICBXaW5kb3cgd2luZG93KQotICAgIDog
eF9kaXNwbGF5XyhvcHRpb25zLnhfZGlzcGxheSgpKSwKLSAgICAgIGNhbGxiYWNrXyhOVUxMKSwK
LSAgICAgIG1vZGVfKFNIQVBFX0FORF9QT1NJVElPTiksCi0gICAgICB3aW5kb3dfKHdpbmRvdyks
Ci0gICAgICBoYXZlX3hmaXhlc18oZmFsc2UpLAotICAgICAgeGZpeGVzX2V2ZW50X2Jhc2VfKC0x
KSwKLSAgICAgIHhmaXhlc19lcnJvcl9iYXNlXygtMSkgewotICAvLyBTZXQgYSBkZWZhdWx0IGlu
aXRpYWwgY3Vyc29yIHNoYXBlIGluIGNhc2UgWEZpeGVzIGlzIG5vdCBwcmVzZW50LgotICBjb25z
dCBpbnQga1NpemUgPSA1OwotICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBkZWZhdWx0
X2N1cnNvcigKLSAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShEZXNrdG9wU2l6ZShrU2l6ZSwg
a1NpemUpKSk7Ci0gIGNvbnN0IHVpbnQ4X3QgcGl4ZWxzW2tTaXplICoga1NpemVdID0gewotICAg
ICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHhmZiwK
LSAgICAgIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4
ZmYsCi0gICAgICAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwfTsKLSAg
dWludDhfdCogcHRyID0gZGVmYXVsdF9jdXJzb3ItPmRhdGEoKTsKLSAgZm9yIChpbnQgeSA9IDA7
IHkgPCBrU2l6ZTsgKyt5KSB7Ci0gICAgZm9yIChpbnQgeCA9IDA7IHggPCBrU2l6ZTsgKyt4KSB7
Ci0gICAgICAqcHRyKysgPSBwaXhlbHNba1NpemUgKiB5ICsgeF07Ci0gICAgICAqcHRyKysgPSBw
aXhlbHNba1NpemUgKiB5ICsgeF07Ci0gICAgICAqcHRyKysgPSBwaXhlbHNba1NpemUgKiB5ICsg
eF07Ci0gICAgICAqcHRyKysgPSAweGZmOwotICAgIH0KLSAgfQotICBEZXNrdG9wVmVjdG9yIGhv
dHNwb3QoMiwgMik7Ci0gIGN1cnNvcl9zaGFwZV8ucmVzZXQobmV3IE1vdXNlQ3Vyc29yKGRlZmF1
bHRfY3Vyc29yLnJlbGVhc2UoKSwgaG90c3BvdCkpOwotfQotCi1Nb3VzZUN1cnNvck1vbml0b3JY
MTE6On5Nb3VzZUN1cnNvck1vbml0b3JYMTEoKSB7Ci0gIGlmIChoYXZlX3hmaXhlc18pIHsKLSAg
ICB4X2Rpc3BsYXlfLT5SZW1vdmVFdmVudEhhbmRsZXIoeGZpeGVzX2V2ZW50X2Jhc2VfICsgWEZp
eGVzQ3Vyc29yTm90aWZ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
KTsKLSAgfQotfQotCi12b2lkIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6SW5pdChDYWxsYmFjayog
Y2FsbGJhY2ssIE1vZGUgbW9kZSkgewotICAvLyBJbml0IGNhbiBiZSBjYWxsZWQgb25seSBvbmNl
IHBlciBpbnN0YW5jZSBvZiBNb3VzZUN1cnNvck1vbml0b3IuCi0gIFJUQ19EQ0hFQ0soIWNhbGxi
YWNrXyk7Ci0gIFJUQ19EQ0hFQ0soY2FsbGJhY2spOwotCi0gIGNhbGxiYWNrXyA9IGNhbGxiYWNr
OwotICBtb2RlXyA9IG1vZGU7Ci0KLSAgaGF2ZV94Zml4ZXNfID0KLSAgICAgIFhGaXhlc1F1ZXJ5
RXh0ZW5zaW9uKGRpc3BsYXkoKSwgJnhmaXhlc19ldmVudF9iYXNlXywgJnhmaXhlc19lcnJvcl9i
YXNlXyk7Ci0KLSAgaWYgKGhhdmVfeGZpeGVzXykgewotICAgIC8vIFJlZ2lzdGVyIGZvciBjaGFu
Z2VzIHRvIHRoZSBjdXJzb3Igc2hhcGUuCi0gICAgWEZpeGVzU2VsZWN0Q3Vyc29ySW5wdXQoZGlz
cGxheSgpLCB3aW5kb3dfLCBYRml4ZXNEaXNwbGF5Q3Vyc29yTm90aWZ5TWFzayk7Ci0gICAgeF9k
aXNwbGF5Xy0+QWRkRXZlbnRIYW5kbGVyKHhmaXhlc19ldmVudF9iYXNlXyArIFhGaXhlc0N1cnNv
ck5vdGlmeSwgdGhpcyk7Ci0KLSAgICBDYXB0dXJlQ3Vyc29yKCk7Ci0gIH0gZWxzZSB7Ci0gICAg
UlRDX0xPRyhMU19JTkZPKSA8PCAiWCBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBYRml4ZXMuIjsK
LSAgfQotfQotCi12b2lkIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6Q2FwdHVyZSgpIHsKLSAgUlRD
X0RDSEVDSyhjYWxsYmFja18pOwotCi0gIC8vIFByb2Nlc3MgWDExIGV2ZW50cyBpbiBjYXNlIFhG
aXhlcyBoYXMgc2VudCBjdXJzb3Igbm90aWZpY2F0aW9uLgotICB4X2Rpc3BsYXlfLT5Qcm9jZXNz
UGVuZGluZ1hFdmVudHMoKTsKLQotICAvLyBjdXJzb3Jfc2hhcGVffCBpcyBzZXQgb25seSBpZiB3
ZSB3ZXJlIG5vdGlmaWVkIG9mIGEgY3Vyc29yIHNoYXBlIGNoYW5nZS4KLSAgaWYgKGN1cnNvcl9z
aGFwZV8uZ2V0KCkpCi0gICAgY2FsbGJhY2tfLT5Pbk1vdXNlQ3Vyc29yKGN1cnNvcl9zaGFwZV8u
cmVsZWFzZSgpKTsKLQotICAvLyBHZXQgY3Vyc29yIHBvc2l0aW9uIGlmIG5lY2Vzc2FyeS4KLSAg
aWYgKG1vZGVfID09IFNIQVBFX0FORF9QT1NJVElPTikgewotICAgIGludCByb290X3g7Ci0gICAg
aW50IHJvb3RfeTsKLSAgICBpbnQgd2luX3g7Ci0gICAgaW50IHdpbl95OwotICAgIFdpbmRvdyBy
b290X3dpbmRvdzsKLSAgICBXaW5kb3cgY2hpbGRfd2luZG93OwotICAgIHVuc2lnbmVkIGludCBt
YXNrOwotCi0gICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXkoKSk7Ci0gICAgQm9vbCBy
ZXN1bHQgPSBYUXVlcnlQb2ludGVyKGRpc3BsYXkoKSwgd2luZG93XywgJnJvb3Rfd2luZG93LCAm
Y2hpbGRfd2luZG93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm9vdF94LCAm
cm9vdF95LCAmd2luX3gsICZ3aW5feSwgJm1hc2spOwotICAgIEN1cnNvclN0YXRlIHN0YXRlOwot
ICAgIGlmICghcmVzdWx0IHx8IGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9
IDApIHsKLSAgICAgIHN0YXRlID0gT1VUU0lERTsKLSAgICB9IGVsc2UgewotICAgICAgLy8gSW4g
c2NyZWVuIG1vZGUgKHdpbmRvd18gPT0gcm9vdF93aW5kb3cpIHRoZSBtb3VzZSBpcyBhbHdheXMg
aW5zaWRlLgotICAgICAgLy8gWFF1ZXJ5UG9pbnRlcigpIHNldHMgfGNoaWxkX3dpbmRvd3wgdG8g
Tm9uZSBpZiB0aGUgY3Vyc29yIGlzIG91dHNpZGUKLSAgICAgIC8vIHx3aW5kb3dffC4KLSAgICAg
IHN0YXRlID0KLSAgICAgICAgICAod2luZG93XyA9PSByb290X3dpbmRvdyB8fCBjaGlsZF93aW5k
b3cgIT0gTm9uZSkgPyBJTlNJREUgOiBPVVRTSURFOwotICAgIH0KLQotICAgIC8vIEFzIHRoZSBj
b21tZW50cyB0byBHZXRUb3BMZXZlbFdpbmRvdygpIGFib3ZlIGluZGljYXRlLCBpbiB3aW5kb3cg
Y2FwdHVyZSwKLSAgICAvLyB0aGUgY3Vyc29yIHBvc2l0aW9uIGNhcHR1cmUgaGFwcGVucyBpbiB8
d2luZG93X3wsIHdoaWxlIHRoZSBmcmFtZSBjYXRwdXJlCi0gICAgLy8gaGFwcGVucyBpbiB8Y2hp
bGRfd2luZG93fC4gVGhlc2UgdHdvIHdpbmRvd3MgYXJlIG5vdCBhbHd5YXMgc2FtZSwgYXMKLSAg
ICAvLyB3aW5kb3cgbWFuYWdlciBtYXkgYWRkIHNvbWUgZGVjb3JhdGlvbnMgdG8gdGhlIHx3aW5k
b3dffC4gU28gdHJhbnNsYXRlCi0gICAgLy8gdGhlIGNvb3JkaW5hdGUgaW4gfHdpbmRvd198IHRv
IHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHxjaGlsZF93aW5kb3d8LgotICAgIGlmICh3aW5kb3df
ICE9IHJvb3Rfd2luZG93ICYmIHN0YXRlID09IElOU0lERSkgewotICAgICAgaW50IHRyYW5zbGF0
ZWRfeCwgdHJhbnNsYXRlZF95OwotICAgICAgV2luZG93IHVudXNlZDsKLSAgICAgIGlmIChYVHJh
bnNsYXRlQ29vcmRpbmF0ZXMoZGlzcGxheSgpLCB3aW5kb3dfLCBjaGlsZF93aW5kb3csIHdpbl94
LCB3aW5feSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5zbGF0ZWRfeCwg
JnRyYW5zbGF0ZWRfeSwgJnVudXNlZCkpIHsKLSAgICAgICAgd2luX3ggPSB0cmFuc2xhdGVkX3g7
Ci0gICAgICAgIHdpbl95ID0gdHJhbnNsYXRlZF95OwotICAgICAgfQotICAgIH0KLQotICAgIC8v
IFgxMSBhbHdheXMgc3RhcnRzIHRoZSBjb29yZGluYXRlIGZyb20gKDAsIDApLCBzbyB3ZSBkbyBu
b3QgbmVlZCB0bwotICAgIC8vIHRyYW5zbGF0ZSBoZXJlLgotICAgIGNhbGxiYWNrXy0+T25Nb3Vz
ZUN1cnNvclBvc2l0aW9uKERlc2t0b3BWZWN0b3Iocm9vdF94LCByb290X3kpKTsKLSAgfQotfQot
Ci1ib29sIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6SGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVudCYg
ZXZlbnQpIHsKLSAgaWYgKGhhdmVfeGZpeGVzXyAmJiBldmVudC50eXBlID09IHhmaXhlc19ldmVu
dF9iYXNlXyArIFhGaXhlc0N1cnNvck5vdGlmeSkgewotICAgIGNvbnN0IFhGaXhlc0N1cnNvck5v
dGlmeUV2ZW50KiBjdXJzb3JfZXZlbnQgPQotICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0
IFhGaXhlc0N1cnNvck5vdGlmeUV2ZW50Kj4oJmV2ZW50KTsKLSAgICBpZiAoY3Vyc29yX2V2ZW50
LT5zdWJ0eXBlID09IFhGaXhlc0Rpc3BsYXlDdXJzb3JOb3RpZnkpIHsKLSAgICAgIENhcHR1cmVD
dXJzb3IoKTsKLSAgICB9Ci0gICAgLy8gUmV0dXJuIGZhbHNlLCBldmVuIGlmIHRoZSBldmVudCBo
YXMgYmVlbiBoYW5kbGVkLCBiZWNhdXNlIHRoZXJlIG1pZ2h0IGJlCi0gICAgLy8gb3RoZXIgbGlz
dGVuZXJzIGZvciBjdXJzb3Igbm90aWZpY2F0aW9ucy4KLSAgfQotICByZXR1cm4gZmFsc2U7Ci19
Ci0KLXZvaWQgTW91c2VDdXJzb3JNb25pdG9yWDExOjpDYXB0dXJlQ3Vyc29yKCkgewotICBSVENf
RENIRUNLKGhhdmVfeGZpeGVzXyk7Ci0KLSAgWEZpeGVzQ3Vyc29ySW1hZ2UqIGltZzsKLSAgewot
ICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KCkpOwotICAgIGltZyA9IFhGaXhlc0dl
dEN1cnNvckltYWdlKGRpc3BsYXkoKSk7Ci0gICAgaWYgKCFpbWcgfHwgZXJyb3JfdHJhcC5HZXRM
YXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkKLSAgICAgIHJldHVybjsKLSAgfQotCi0gIHN0ZDo6
dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IGltYWdlKAotICAgICAgbmV3IEJhc2ljRGVza3RvcEZy
YW1lKERlc2t0b3BTaXplKGltZy0+d2lkdGgsIGltZy0+aGVpZ2h0KSkpOwotCi0gIC8vIFhsaWIg
c3RvcmVzIDMyLWJpdCBkYXRhIGluIGxvbmdzLCBldmVuIGlmIGxvbmdzIGFyZSA2NC1iaXRzIGxv
bmcuCi0gIHVuc2lnbmVkIGxvbmcqIHNyYyA9IGltZy0+cGl4ZWxzOwotICB1aW50MzJfdCogZHN0
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGltYWdlLT5kYXRhKCkpOwotICB1aW50MzJf
dCogZHN0X2VuZCA9IGRzdCArIChpbWctPndpZHRoICogaW1nLT5oZWlnaHQpOwotICB3aGlsZSAo
ZHN0IDwgZHN0X2VuZCkgewotICAgICpkc3QrKyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pigqc3Jj
KyspOwotICB9Ci0KLSAgRGVza3RvcFZlY3RvciBob3RzcG90KHN0ZDo6bWluKGltZy0+d2lkdGgs
IGltZy0+eGhvdCksCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1pbihpbWctPmhlaWdo
dCwgaW1nLT55aG90KSk7Ci0KLSAgWEZyZWUoaW1nKTsKLQotICBjdXJzb3Jfc2hhcGVfLnJlc2V0
KG5ldyBNb3VzZUN1cnNvcihpbWFnZS5yZWxlYXNlKCksIGhvdHNwb3QpKTsKLX0KLQotLy8gc3Rh
dGljCi1Nb3VzZUN1cnNvck1vbml0b3IqIE1vdXNlQ3Vyc29yTW9uaXRvcjo6Q3JlYXRlRm9yV2lu
ZG93KAotICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywKLSAgICBXaW5k
b3dJZCB3aW5kb3cpIHsKLSAgaWYgKCFvcHRpb25zLnhfZGlzcGxheSgpKQotICAgIHJldHVybiBO
VUxMOwotICB3aW5kb3cgPSBHZXRUb3BMZXZlbFdpbmRvdyhvcHRpb25zLnhfZGlzcGxheSgpLT5k
aXNwbGF5KCksIHdpbmRvdyk7Ci0gIGlmICh3aW5kb3cgPT0gTm9uZSkKLSAgICByZXR1cm4gTlVM
TDsKLSAgcmV0dXJuIG5ldyBNb3VzZUN1cnNvck1vbml0b3JYMTEob3B0aW9ucywgd2luZG93KTsK
LX0KLQotTW91c2VDdXJzb3JNb25pdG9yKiBNb3VzZUN1cnNvck1vbml0b3I6OkNyZWF0ZUZvclNj
cmVlbigKLSAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsCi0gICAgU2Ny
ZWVuSWQgc2NyZWVuKSB7Ci0gIGlmICghb3B0aW9ucy54X2Rpc3BsYXkoKSkKLSAgICByZXR1cm4g
TlVMTDsKLSAgcmV0dXJuIG5ldyBNb3VzZUN1cnNvck1vbml0b3JYMTEoCi0gICAgICBvcHRpb25z
LCBEZWZhdWx0Um9vdFdpbmRvdyhvcHRpb25zLnhfZGlzcGxheSgpLT5kaXNwbGF5KCkpKTsKLX0K
LQotc3RkOjp1bmlxdWVfcHRyPE1vdXNlQ3Vyc29yTW9uaXRvcj4gTW91c2VDdXJzb3JNb25pdG9y
OjpDcmVhdGUoCi0gICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7Ci0g
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TW91c2VDdXJzb3JNb25pdG9yPigKLSAgICAgIENyZWF0
ZUZvclNjcmVlbihvcHRpb25zLCBrRnVsbERlc2t0b3BTY3JlZW5JZCkpOwotfQotCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fY2FwdHVyZXJfbGlu
dXguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fY2FwdHVyZXJfbGludXguY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y4
YTlkZDBlMGRiNDAwOGUxN2Y0M2FhMjUwN2U3NDkxMDY3MmI0NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL3NjcmVlbl9jYXB0dXJlcl9saW51eC5jYwpAQCAtMCwwICsxLDQwIEBACisvKgor
ICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3Rv
cF9jYXB0dXJlX29wdGlvbnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9k
ZXNrdG9wX2NhcHR1cmVyLmgiCisKKyNpZiBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpCisj
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3Bp
cGV3aXJlLmgiCisjZW5kaWYgIC8vIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkKKworI2lm
IGRlZmluZWQoVVNFX1gxMSkKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51
eC9zY3JlZW5fY2FwdHVyZXJfeDExLmgiCisjZW5kaWYgIC8vIGRlZmluZWQoVVNFX1gxMSkKKwor
bmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIHN0YXRpYworc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BD
YXB0dXJlcj4gRGVza3RvcENhcHR1cmVyOjpDcmVhdGVSYXdTY3JlZW5DYXB0dXJlcigKKyAgICBj
b25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKKyNpZiBkZWZpbmVkKFdFQlJU
Q19VU0VfUElQRVdJUkUpCisgIGlmIChvcHRpb25zLmFsbG93X3BpcGV3aXJlKCkgJiYgRGVza3Rv
cENhcHR1cmVyOjpJc1J1bm5pbmdVbmRlcldheWxhbmQoKSkgeworICAgIHJldHVybiBTY3JlZW5D
YXB0dXJlclBpcGVXaXJlOjpDcmVhdGVSYXdTY3JlZW5DYXB0dXJlcihvcHRpb25zKTsKKyAgfQor
I2VuZGlmICAvLyBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpCisKKyNpZiBkZWZpbmVkKFVT
RV9YMTEpCisgIHJldHVybiBTY3JlZW5DYXB0dXJlclgxMTo6Q3JlYXRlUmF3U2NyZWVuQ2FwdHVy
ZXIob3B0aW9ucyk7CisjZW5kaWYgIC8vIGRlZmluZWQoVVNFX1gxMSkKKworICByZXR1cm4gbnVs
bHB0cjsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
c2NyZWVuX2NhcHR1cmVyX3gxMS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9jYXB0dXJlcl94MTEuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NWZjY2MyMDgyYTk3MDQyYWFmZmI4ZGRk
NmMyNDM0ZGY0OTdlNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVyX3gxMS5jYworKysgL2Rldi9udWxsCkBAIC0x
LDQyNSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQot
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPHN0cmluZy5o
PgotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDx1dGlsaXR5
PgotCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KLSNpbmNs
dWRlIDxYMTEvZXh0ZW5zaW9ucy9YZGFtYWdlLmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMv
WGZpeGVzLmg+Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2Nh
cHR1cmVfb3B0aW9ucy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0
b3BfY2FwdHVyZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9w
X2ZyYW1lLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1
cmVfZnJhbWVfcXVldWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3Jl
ZW5fY2FwdHVyZXJfaGVscGVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
c2hhcmVkX2Rlc2t0b3BfZnJhbWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLW5hbWVz
cGFjZSB7Ci0KLS8vIEEgY2xhc3MgdG8gcGVyZm9ybSB2aWRlbyBmcmFtZSBjYXB0dXJpbmcgZm9y
IExpbnV4LgotLy8KLS8vIElmIFhEYW1hZ2UgaXMgdXNlZCwgdGhpcyBjbGFzcyBzZXRzIERlc2t0
b3BGcmFtZTo6dXBkYXRlZF9yZWdpb24oKSBhY2NvcmRpbmcKLS8vIHRvIHRoZSBhcmVhcyByZXBv
cnRlZCBieSBYRGFtYWdlLiBPdGhlcndpc2UgdGhpcyBjbGFzcyBkb2VzIG5vdCBkZXRlY3QKLS8v
IERlc2t0b3BGcmFtZTo6dXBkYXRlZF9yZWdpb24oKSwgdGhlIGZpZWxkIGlzIGFsd2F5cyBzZXQg
dG8gdGhlIGVudGlyZSBmcmFtZQotLy8gcmVjdGFuZ2xlLiBTY3JlZW5DYXB0dXJlckRpZmZlcldy
YXBwZXIgc2hvdWxkIGJlIHVzZWQgaWYgdGhhdCBmdW5jdGlvbmFsaXR5Ci0vLyBpcyBuZWNlc3Nh
cnkuCi1jbGFzcyBTY3JlZW5DYXB0dXJlckxpbnV4IDogcHVibGljIERlc2t0b3BDYXB0dXJlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU2hhcmVkWERpc3BsYXk6OlhFdmVu
dEhhbmRsZXIgewotIHB1YmxpYzoKLSAgU2NyZWVuQ2FwdHVyZXJMaW51eCgpOwotICB+U2NyZWVu
Q2FwdHVyZXJMaW51eCgpIG92ZXJyaWRlOwotCi0gIC8vIFRPRE8oYWp3b25nKTogRG8gd2UgcmVh
bGx5IHdhbnQgdGhpcyB0byBiZSBzeW5jaHJvbm91cz8KLSAgYm9vbCBJbml0KGNvbnN0IERlc2t0
b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7Ci0KLSAgLy8gRGVza3RvcENhcHR1cmVyIGludGVy
ZmFjZS4KLSAgdm9pZCBTdGFydChDYWxsYmFjayogZGVsZWdhdGUpIG92ZXJyaWRlOwotICB2b2lk
IENhcHR1cmVGcmFtZSgpIG92ZXJyaWRlOwotICBib29sIEdldFNvdXJjZUxpc3QoU291cmNlTGlz
dCogc291cmNlcykgb3ZlcnJpZGU7Ci0gIGJvb2wgU2VsZWN0U291cmNlKFNvdXJjZUlkIGlkKSBv
dmVycmlkZTsKLQotIHByaXZhdGU6Ci0gIERpc3BsYXkqIGRpc3BsYXkoKSB7IHJldHVybiBvcHRp
b25zXy54X2Rpc3BsYXkoKS0+ZGlzcGxheSgpOyB9Ci0KLSAgLy8gU2hhcmVkWERpc3BsYXk6OlhF
dmVudEhhbmRsZXIgaW50ZXJmYWNlLgotICBib29sIEhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQm
IGV2ZW50KSBvdmVycmlkZTsKLQotICB2b2lkIEluaXRYRGFtYWdlKCk7Ci0KLSAgLy8gQ2FwdHVy
ZSBzY3JlZW4gcGl4ZWxzIHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBpbiB0aGUgcXVldWUuIEluIHRo
ZSBEQU1BR0UKLSAgLy8gY2FzZSwgdGhlIFNjcmVlbkNhcHR1cmVySGVscGVyIGFscmVhZHkgaG9s
ZHMgdGhlIGxpc3Qgb2YgaW52YWxpZCByZWN0YW5nbGVzCi0gIC8vIGZyb20gSGFuZGxlWEV2ZW50
KCkuIEluIHRoZSBub24tREFNQUdFIGNhc2UsIHRoaXMgY2FwdHVyZXMgdGhlCi0gIC8vIHdob2xl
IHNjcmVlbiwgdGhlbiBjYWxjdWxhdGVzIHNvbWUgaW52YWxpZCByZWN0YW5nbGVzIHRoYXQgaW5j
bHVkZSBhbnkKLSAgLy8gZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGFuZCB0aGUgcHJldmlvdXMg
Y2FwdHVyZS4KLSAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gQ2FwdHVyZVNjcmVlbigp
OwotCi0gIC8vIENhbGxlZCB3aGVuIHRoZSBzY3JlZW4gY29uZmlndXJhdGlvbiBpcyBjaGFuZ2Vk
LgotICB2b2lkIFNjcmVlbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7Ci0KLSAgLy8gU3luY2hyb25p
emUgdGhlIGN1cnJlbnQgYnVmZmVyIHdpdGggfGxhc3RfYnVmZmVyX3wsIGJ5IGNvcHlpbmcgcGl4
ZWxzIGZyb20KLSAgLy8gdGhlIGFyZWEgb2YgfGxhc3RfaW52YWxpZF9yZWN0c3wuCi0gIC8vIE5v
dGUgdGhpcyBvbmx5IHdvcmtzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQga051bUJ1ZmZlcnMgPT0g
MiwgYXMKLSAgLy8gfGxhc3RfaW52YWxpZF9yZWN0c3wgaG9sZHMgdGhlIGRpZmZlcmVuY2VzIGZy
b20gdGhlIHByZXZpb3VzIGJ1ZmZlciBhbmQKLSAgLy8gdGhlIG9uZSBwcmlvciB0byB0aGF0ICh3
aGljaCB3aWxsIHRoZW4gYmUgdGhlIGN1cnJlbnQgYnVmZmVyKS4KLSAgdm9pZCBTeW5jaHJvbml6
ZUZyYW1lKCk7Ci0KLSAgdm9pZCBEZWluaXRYbGliKCk7Ci0KLSAgRGVza3RvcENhcHR1cmVPcHRp
b25zIG9wdGlvbnNfOwotCi0gIENhbGxiYWNrKiBjYWxsYmFja18gPSBudWxscHRyOwotCi0gIC8v
IFgxMSBncmFwaGljcyBjb250ZXh0LgotICBHQyBnY18gPSBudWxscHRyOwotICBXaW5kb3cgcm9v
dF93aW5kb3dfID0gQmFkVmFsdWU7Ci0KLSAgLy8gWEZpeGVzLgotICBib29sIGhhc194Zml4ZXNf
ID0gZmFsc2U7Ci0gIGludCB4Zml4ZXNfZXZlbnRfYmFzZV8gPSAtMTsKLSAgaW50IHhmaXhlc19l
cnJvcl9iYXNlXyA9IC0xOwotCi0gIC8vIFhEYW1hZ2UgaW5mb3JtYXRpb24uCi0gIGJvb2wgdXNl
X2RhbWFnZV8gPSBmYWxzZTsKLSAgRGFtYWdlIGRhbWFnZV9oYW5kbGVfID0gMDsKLSAgaW50IGRh
bWFnZV9ldmVudF9iYXNlXyA9IC0xOwotICBpbnQgZGFtYWdlX2Vycm9yX2Jhc2VfID0gLTE7Ci0g
IFhzZXJ2ZXJSZWdpb24gZGFtYWdlX3JlZ2lvbl8gPSAwOwotCi0gIC8vIEFjY2VzcyB0byB0aGUg
WCBTZXJ2ZXIncyBwaXhlbCBidWZmZXIuCi0gIFhTZXJ2ZXJQaXhlbEJ1ZmZlciB4X3NlcnZlcl9w
aXhlbF9idWZmZXJfOwotCi0gIC8vIEEgdGhyZWFkLXNhZmUgbGlzdCBvZiBpbnZhbGlkIHJlY3Rh
bmdsZXMsIGFuZCB0aGUgc2l6ZSBvZiB0aGUgbW9zdAotICAvLyByZWNlbnRseSBjYXB0dXJlZCBz
Y3JlZW4uCi0gIFNjcmVlbkNhcHR1cmVySGVscGVyIGhlbHBlcl87Ci0KLSAgLy8gUXVldWUgb2Yg
dGhlIGZyYW1lcyBidWZmZXJzLgotICBTY3JlZW5DYXB0dXJlRnJhbWVRdWV1ZTxTaGFyZWREZXNr
dG9wRnJhbWU+IHF1ZXVlXzsKLQotICAvLyBJbnZhbGlkIHJlZ2lvbiBmcm9tIHRoZSBwcmV2aW91
cyBjYXB0dXJlLiBUaGlzIGlzIHVzZWQgdG8gc3luY2hyb25pemUgdGhlCi0gIC8vIGN1cnJlbnQg
d2l0aCB0aGUgbGFzdCBidWZmZXIgdXNlZC4KLSAgRGVza3RvcFJlZ2lvbiBsYXN0X2ludmFsaWRf
cmVnaW9uXzsKLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNjcmVlbkNhcHR1cmVy
TGludXgpOwotfTsKLQotU2NyZWVuQ2FwdHVyZXJMaW51eDo6U2NyZWVuQ2FwdHVyZXJMaW51eCgp
IHsKLSAgaGVscGVyXy5TZXRMb2dHcmlkU2l6ZSg0KTsKLX0KLQotU2NyZWVuQ2FwdHVyZXJMaW51
eDo6flNjcmVlbkNhcHR1cmVyTGludXgoKSB7Ci0gIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5SZW1v
dmVFdmVudEhhbmRsZXIoQ29uZmlndXJlTm90aWZ5LCB0aGlzKTsKLSAgaWYgKHVzZV9kYW1hZ2Vf
KSB7Ci0gICAgb3B0aW9uc18ueF9kaXNwbGF5KCktPlJlbW92ZUV2ZW50SGFuZGxlcihkYW1hZ2Vf
ZXZlbnRfYmFzZV8gKyBYRGFtYWdlTm90aWZ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcyk7Ci0gIH0KLSAgRGVpbml0WGxpYigpOwotfQotCi1ib29s
IFNjcmVlbkNhcHR1cmVyTGludXg6OkluaXQoY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBv
cHRpb25zKSB7Ci0gIFRSQUNFX0VWRU5UMCgid2VicnRjIiwgIlNjcmVlbkNhcHR1cmVyTGludXg6
OkluaXQiKTsKLSAgb3B0aW9uc18gPSBvcHRpb25zOwotCi0gIHJvb3Rfd2luZG93XyA9IFJvb3RX
aW5kb3coZGlzcGxheSgpLCBEZWZhdWx0U2NyZWVuKGRpc3BsYXkoKSkpOwotICBpZiAocm9vdF93
aW5kb3dfID09IEJhZFZhbHVlKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVuYWJsZSB0
byBnZXQgdGhlIHJvb3Qgd2luZG93IjsKLSAgICBEZWluaXRYbGliKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotICB9Ci0KLSAgZ2NfID0gWENyZWF0ZUdDKGRpc3BsYXkoKSwgcm9vdF93aW5kb3dfLCAw
LCBOVUxMKTsKLSAgaWYgKGdjXyA9PSBOVUxMKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IlVuYWJsZSB0byBnZXQgZ3JhcGhpY3MgY29udGV4dCI7Ci0gICAgRGVpbml0WGxpYigpOwotICAg
IHJldHVybiBmYWxzZTsKLSAgfQotCi0gIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5BZGRFdmVudEhh
bmRsZXIoQ29uZmlndXJlTm90aWZ5LCB0aGlzKTsKLQotICAvLyBDaGVjayBmb3IgWEZpeGVzIGV4
dGVuc2lvbi4gVGhpcyBpcyByZXF1aXJlZCBmb3IgY3Vyc29yIHNoYXBlCi0gIC8vIG5vdGlmaWNh
dGlvbnMsIGFuZCBmb3Igb3VyIHVzZSBvZiBYRGFtYWdlLgotICBpZiAoWEZpeGVzUXVlcnlFeHRl
bnNpb24oZGlzcGxheSgpLCAmeGZpeGVzX2V2ZW50X2Jhc2VfLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnhmaXhlc19lcnJvcl9iYXNlXykpIHsKLSAgICBoYXNfeGZpeGVzXyA9IHRydWU7
Ci0gIH0gZWxzZSB7Ci0gICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiWCBzZXJ2ZXIgZG9lcyBub3Qg
c3VwcG9ydCBYRml4ZXMuIjsKLSAgfQotCi0gIC8vIFJlZ2lzdGVyIGZvciBjaGFuZ2VzIHRvIHRo
ZSBkaW1lbnNpb25zIG9mIHRoZSByb290IHdpbmRvdy4KLSAgWFNlbGVjdElucHV0KGRpc3BsYXko
KSwgcm9vdF93aW5kb3dfLCBTdHJ1Y3R1cmVOb3RpZnlNYXNrKTsKLQotICBpZiAoIXhfc2VydmVy
X3BpeGVsX2J1ZmZlcl8uSW5pdChkaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KGRpc3BsYXko
KSkpKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBpbml0aWFsaXplIHBp
eGVsIGJ1ZmZlci4iOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGlmIChvcHRpb25zXy51
c2VfdXBkYXRlX25vdGlmaWNhdGlvbnMoKSkgewotICAgIEluaXRYRGFtYWdlKCk7Ci0gIH0KLQot
ICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBTY3JlZW5DYXB0dXJlckxpbnV4OjpJbml0WERhbWFn
ZSgpIHsKLSAgLy8gT3VyIHVzZSBvZiBYRGFtYWdlIHJlcXVpcmVzIFhGaXhlcy4KLSAgaWYgKCFo
YXNfeGZpeGVzXykgewotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIENoZWNrIGZvciBYRGFtYWdl
IGV4dGVuc2lvbi4KLSAgaWYgKCFYRGFtYWdlUXVlcnlFeHRlbnNpb24oZGlzcGxheSgpLCAmZGFt
YWdlX2V2ZW50X2Jhc2VfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGFtYWdlX2Vy
cm9yX2Jhc2VfKSkgewotICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlggc2VydmVyIGRvZXMgbm90
IHN1cHBvcnQgWERhbWFnZS4iOwotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIFRPRE8obGFtYnJv
c2xhbWJyb3UpOiBEaXNhYmxlIERBTUFHRSBpbiBzaXR1YXRpb25zIHdoZXJlIGl0IGlzIGtub3du
Ci0gIC8vIHRvIGZhaWwsIHN1Y2ggYXMgd2hlbiBEZXNrdG9wIEVmZmVjdHMgYXJlIGVuYWJsZWQs
IHdpdGggZ3JhcGhpY3MKLSAgLy8gZHJpdmVycyAoblZpZGlhLCBBVEkpIHRoYXQgZmFpbCB0byBy
ZXBvcnQgREFNQUdFIG5vdGlmaWNhdGlvbnMKLSAgLy8gcHJvcGVybHkuCi0KLSAgLy8gUmVxdWVz
dCBub3RpZmljYXRpb25zIGV2ZXJ5IHRpbWUgdGhlIHNjcmVlbiBiZWNvbWVzIGRhbWFnZWQuCi0g
IGRhbWFnZV9oYW5kbGVfID0KLSAgICAgIFhEYW1hZ2VDcmVhdGUoZGlzcGxheSgpLCByb290X3dp
bmRvd18sIFhEYW1hZ2VSZXBvcnROb25FbXB0eSk7Ci0gIGlmICghZGFtYWdlX2hhbmRsZV8pIHsK
LSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVW5hYmxlIHRvIGluaXRpYWxpemUgWERhbWFnZS4i
OwotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIENyZWF0ZSBhbiBYRml4ZXMgc2VydmVyLXNpZGUg
cmVnaW9uIHRvIGNvbGxhdGUgZGFtYWdlIGludG8uCi0gIGRhbWFnZV9yZWdpb25fID0gWEZpeGVz
Q3JlYXRlUmVnaW9uKGRpc3BsYXkoKSwgMCwgMCk7Ci0gIGlmICghZGFtYWdlX3JlZ2lvbl8pIHsK
LSAgICBYRGFtYWdlRGVzdHJveShkaXNwbGF5KCksIGRhbWFnZV9oYW5kbGVfKTsKLSAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiVW5hYmxlIHRvIGNyZWF0ZSBYRml4ZXMgcmVnaW9uLiI7Ci0gICAg
cmV0dXJuOwotICB9Ci0KLSAgb3B0aW9uc18ueF9kaXNwbGF5KCktPkFkZEV2ZW50SGFuZGxlcihk
YW1hZ2VfZXZlbnRfYmFzZV8gKyBYRGFtYWdlTm90aWZ5LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMpOwotCi0gIHVzZV9kYW1hZ2VfID0gdHJ1ZTsKLSAgUlRD
X0xPRyhMU19JTkZPKSA8PCAiVXNpbmcgWERhbWFnZSBleHRlbnNpb24uIjsKLX0KLQotdm9pZCBT
Y3JlZW5DYXB0dXJlckxpbnV4OjpTdGFydChDYWxsYmFjayogY2FsbGJhY2spIHsKLSAgUlRDX0RD
SEVDSyghY2FsbGJhY2tfKTsKLSAgUlRDX0RDSEVDSyhjYWxsYmFjayk7Ci0KLSAgY2FsbGJhY2tf
ID0gY2FsbGJhY2s7Ci19Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZXJMaW51eDo6Q2FwdHVyZUZyYW1l
KCkgewotICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJTY3JlZW5DYXB0dXJlckxpbnV4OjpDYXB0
dXJlRnJhbWUiKTsKLSAgaW50NjRfdCBjYXB0dXJlX3N0YXJ0X3RpbWVfbmFub3MgPSBydGM6OlRp
bWVOYW5vcygpOwotCi0gIHF1ZXVlXy5Nb3ZlVG9OZXh0RnJhbWUoKTsKLSAgUlRDX0RDSEVDSygh
cXVldWVfLmN1cnJlbnRfZnJhbWUoKSB8fCAhcXVldWVfLmN1cnJlbnRfZnJhbWUoKS0+SXNTaGFy
ZWQoKSk7Ci0KLSAgLy8gUHJvY2VzcyBYRXZlbnRzIGZvciBYRGFtYWdlIGFuZCBjdXJzb3Igc2hh
cGUgdHJhY2tpbmcuCi0gIG9wdGlvbnNfLnhfZGlzcGxheSgpLT5Qcm9jZXNzUGVuZGluZ1hFdmVu
dHMoKTsKLQotICAvLyBQcm9jZXNzUGVuZGluZ1hFdmVudHMoKSBtYXkgY2FsbCBTY3JlZW5Db25m
aWd1cmF0aW9uQ2hhbmdlZCgpIHdoaWNoCi0gIC8vIHJlaW5pdGlhbGl6ZXMgfHhfc2VydmVyX3Bp
eGVsX2J1ZmZlcl98LiBDaGVjayBpZiB0aGUgcGl4ZWwgYnVmZmVyIGlzIHN0aWxsCi0gIC8vIGlu
IGEgZ29vZCBzaGFwZS4KLSAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLmlzX2luaXRpYWxp
emVkKCkpIHsKLSAgICAvLyBXZSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBwaXhlbCBidWZmZXIuCi0g
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlBpeGVsIGJ1ZmZlciBpcyBub3QgaW5pdGlhbGl6ZWQu
IjsKLSAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVO
VCwgbnVsbHB0cik7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgLy8gSWYgdGhlIGN1cnJlbnQgZnJh
bWUgaXMgZnJvbSBhbiBvbGRlciBnZW5lcmF0aW9uIHRoZW4gYWxsb2NhdGUgYSBuZXcgb25lLgot
ICAvLyBOb3RlIHRoYXQgd2UgY2FuJ3QgcmVhbGxvY2F0ZSBvdGhlciBidWZmZXJzIGF0IHRoaXMg
cG9pbnQsIHNpbmNlIHRoZSBjYWxsZXIKLSAgLy8gbWF5IHN0aWxsIGJlIHJlYWRpbmcgZnJvbSB0
aGVtLgotICBpZiAoIXF1ZXVlXy5jdXJyZW50X2ZyYW1lKCkpIHsKLSAgICBxdWV1ZV8uUmVwbGFj
ZUN1cnJlbnRGcmFtZSgKLSAgICAgICAgU2hhcmVkRGVza3RvcEZyYW1lOjpXcmFwKHN0ZDo6dW5p
cXVlX3B0cjxEZXNrdG9wRnJhbWU+KAotICAgICAgICAgICAgbmV3IEJhc2ljRGVza3RvcEZyYW1l
KHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8ud2luZG93X3NpemUoKSkpKSk7Ci0gIH0KLQotICBzdGQ6
OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiByZXN1bHQgPSBDYXB0dXJlU2NyZWVuKCk7Ci0gIGlm
ICghcmVzdWx0KSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVGVtcG9yYXJpbHkgZmFp
bGVkIHRvIGNhcHR1cmUgc2NyZWVuLiI7Ci0gICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQo
UmVzdWx0OjpFUlJPUl9URU1QT1JBUlksIG51bGxwdHIpOwotICAgIHJldHVybjsKLSAgfQotCi0g
IGxhc3RfaW52YWxpZF9yZWdpb25fID0gcmVzdWx0LT51cGRhdGVkX3JlZ2lvbigpOwotICByZXN1
bHQtPnNldF9jYXB0dXJlX3RpbWVfbXMoKHJ0Yzo6VGltZU5hbm9zKCkgLSBjYXB0dXJlX3N0YXJ0
X3RpbWVfbmFub3MpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6a051bU5h
bm9zZWNzUGVyTWlsbGlzZWMpOwotICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6
OlNVQ0NFU1MsIHN0ZDo6bW92ZShyZXN1bHQpKTsKLX0KLQotYm9vbCBTY3JlZW5DYXB0dXJlckxp
bnV4OjpHZXRTb3VyY2VMaXN0KFNvdXJjZUxpc3QqIHNvdXJjZXMpIHsKLSAgUlRDX0RDSEVDSyhz
b3VyY2VzLT5zaXplKCkgPT0gMCk7Ci0gIC8vIFRPRE8oamlheWwpOiBpbXBsZW1lbnQgc2NyZWVu
IGVudW1lcmF0aW9uLgotICBzb3VyY2VzLT5wdXNoX2JhY2soezB9KTsKLSAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgU2NyZWVuQ2FwdHVyZXJMaW51eDo6U2VsZWN0U291cmNlKFNvdXJjZUlkIGlk
KSB7Ci0gIC8vIFRPRE8oamlheWwpOiBpbXBsZW1lbnQgc2NyZWVuIHNlbGVjdGlvbi4KLSAgcmV0
dXJuIHRydWU7Ci19Ci0KLWJvb2wgU2NyZWVuQ2FwdHVyZXJMaW51eDo6SGFuZGxlWEV2ZW50KGNv
bnN0IFhFdmVudCYgZXZlbnQpIHsKLSAgaWYgKHVzZV9kYW1hZ2VfICYmIChldmVudC50eXBlID09
IGRhbWFnZV9ldmVudF9iYXNlXyArIFhEYW1hZ2VOb3RpZnkpKSB7Ci0gICAgY29uc3QgWERhbWFn
ZU5vdGlmeUV2ZW50KiBkYW1hZ2VfZXZlbnQgPQotICAgICAgICByZWludGVycHJldF9jYXN0PGNv
bnN0IFhEYW1hZ2VOb3RpZnlFdmVudCo+KCZldmVudCk7Ci0gICAgaWYgKGRhbWFnZV9ldmVudC0+
ZGFtYWdlICE9IGRhbWFnZV9oYW5kbGVfKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFJUQ19E
Q0hFQ0soZGFtYWdlX2V2ZW50LT5sZXZlbCA9PSBYRGFtYWdlUmVwb3J0Tm9uRW1wdHkpOwotICAg
IHJldHVybiB0cnVlOwotICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gQ29uZmlndXJlTm90aWZ5
KSB7Ci0gICAgU2NyZWVuQ29uZmlndXJhdGlvbkNoYW5nZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LSAgfQotICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+
IFNjcmVlbkNhcHR1cmVyTGludXg6OkNhcHR1cmVTY3JlZW4oKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0
cjxTaGFyZWREZXNrdG9wRnJhbWU+IGZyYW1lID0gcXVldWVfLmN1cnJlbnRfZnJhbWUoKS0+U2hh
cmUoKTsKLSAgUlRDX0RDSEVDSyh4X3NlcnZlcl9waXhlbF9idWZmZXJfLndpbmRvd19zaXplKCku
ZXF1YWxzKGZyYW1lLT5zaXplKCkpKTsKLQotICAvLyBQYXNzIHRoZSBzY3JlZW4gc2l6ZSB0byB0
aGUgaGVscGVyLCBzbyBpdCBjYW4gY2xpcCB0aGUgaW52YWxpZCByZWdpb24gaWYgaXQKLSAgLy8g
ZXhwYW5kcyB0aGF0IHJlZ2lvbiB0byBhIGdyaWQuCi0gIGhlbHBlcl8uc2V0X3NpemVfbW9zdF9y
ZWNlbnQoZnJhbWUtPnNpemUoKSk7Ci0KLSAgLy8gSW4gdGhlIERBTUFHRSBjYXNlLCBlbnN1cmUg
dGhlIGZyYW1lIGlzIHVwLXRvLWRhdGUgd2l0aCB0aGUgcHJldmlvdXMgZnJhbWUKLSAgLy8gaWYg
YW55LiAgSWYgdGhlcmUgaXNuJ3QgYSBwcmV2aW91cyBmcmFtZSwgdGhhdCBtZWFucyBhIHNjcmVl
bi1yZXNvbHV0aW9uCi0gIC8vIGNoYW5nZSBvY2N1cnJlZCwgYW5kIHxpbnZhbGlkX3JlY3RzfCB3
aWxsIGJlIHVwZGF0ZWQgdG8gaW5jbHVkZSB0aGUgd2hvbGUKLSAgLy8gc2NyZWVuLgotICBpZiAo
dXNlX2RhbWFnZV8gJiYgcXVldWVfLnByZXZpb3VzX2ZyYW1lKCkpCi0gICAgU3luY2hyb25pemVG
cmFtZSgpOwotCi0gIERlc2t0b3BSZWdpb24qIHVwZGF0ZWRfcmVnaW9uID0gZnJhbWUtPm11dGFi
bGVfdXBkYXRlZF9yZWdpb24oKTsKLQotICB4X3NlcnZlcl9waXhlbF9idWZmZXJfLlN5bmNocm9u
aXplKCk7Ci0gIGlmICh1c2VfZGFtYWdlXyAmJiBxdWV1ZV8ucHJldmlvdXNfZnJhbWUoKSkgewot
ICAgIC8vIEF0b21pY2FsbHkgZmV0Y2ggYW5kIGNsZWFyIHRoZSBkYW1hZ2UgcmVnaW9uLgotICAg
IFhEYW1hZ2VTdWJ0cmFjdChkaXNwbGF5KCksIGRhbWFnZV9oYW5kbGVfLCBOb25lLCBkYW1hZ2Vf
cmVnaW9uXyk7Ci0gICAgaW50IHJlY3RzX251bSA9IDA7Ci0gICAgWFJlY3RhbmdsZSBib3VuZHM7
Ci0gICAgWFJlY3RhbmdsZSogcmVjdHMgPSBYRml4ZXNGZXRjaFJlZ2lvbkFuZEJvdW5kcyhkaXNw
bGF5KCksIGRhbWFnZV9yZWdpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnJlY3RzX251bSwgJmJvdW5kcyk7Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCByZWN0c19udW07ICsraSkgewotICAgICAgdXBkYXRlZF9yZWdpb24tPkFkZFJlY3Qo
RGVza3RvcFJlY3Q6Ok1ha2VYWVdIKAotICAgICAgICAgIHJlY3RzW2ldLngsIHJlY3RzW2ldLnks
IHJlY3RzW2ldLndpZHRoLCByZWN0c1tpXS5oZWlnaHQpKTsKLSAgICB9Ci0gICAgWEZyZWUocmVj
dHMpOwotICAgIGhlbHBlcl8uSW52YWxpZGF0ZVJlZ2lvbigqdXBkYXRlZF9yZWdpb24pOwotCi0g
ICAgLy8gQ2FwdHVyZSB0aGUgZGFtYWdlZCBwb3J0aW9ucyBvZiB0aGUgZGVza3RvcC4KLSAgICBo
ZWxwZXJfLlRha2VJbnZhbGlkUmVnaW9uKHVwZGF0ZWRfcmVnaW9uKTsKLQotICAgIC8vIENsaXAg
dGhlIGRhbWFnZWQgcG9ydGlvbnMgdG8gdGhlIGN1cnJlbnQgc2NyZWVuIHNpemUsIGp1c3QgaW4g
Y2FzZSBzb21lCi0gICAgLy8gc3B1cmlvdXMgWERhbWFnZSBub3RpZmljYXRpb25zIHdlcmUgcmVj
ZWl2ZWQgZm9yIGEgcHJldmlvdXMgKGxhcmdlcikKLSAgICAvLyBzY3JlZW4gc2l6ZS4KLSAgICB1
cGRhdGVkX3JlZ2lvbi0+SW50ZXJzZWN0V2l0aCgKLSAgICAgICAgRGVza3RvcFJlY3Q6Ok1ha2VT
aXplKHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8ud2luZG93X3NpemUoKSkpOwotCi0gICAgZm9yIChE
ZXNrdG9wUmVnaW9uOjpJdGVyYXRvciBpdCgqdXBkYXRlZF9yZWdpb24pOyAhaXQuSXNBdEVuZCgp
OwotICAgICAgICAgaXQuQWR2YW5jZSgpKSB7Ci0gICAgICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1
ZmZlcl8uQ2FwdHVyZVJlY3QoaXQucmVjdCgpLCBmcmFtZS5nZXQoKSkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICAvLyBEb2luZyBmdWxsLXNjcmVlbiBw
b2xsaW5nLCBvciB0aGlzIGlzIHRoZSBmaXJzdCBjYXB0dXJlIGFmdGVyIGEKLSAgICAvLyBzY3Jl
ZW4tcmVzb2x1dGlvbiBjaGFuZ2UuICBJbiBlaXRoZXIgY2FzZSwgbmVlZCBhIGZ1bGwtc2NyZWVu
IGNhcHR1cmUuCi0gICAgRGVza3RvcFJlY3Qgc2NyZWVuX3JlY3QgPSBEZXNrdG9wUmVjdDo6TWFr
ZVNpemUoZnJhbWUtPnNpemUoKSk7Ci0gICAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLkNh
cHR1cmVSZWN0KHNjcmVlbl9yZWN0LCBmcmFtZS5nZXQoKSkpCi0gICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB1cGRhdGVkX3JlZ2lvbi0+U2V0UmVjdChzY3JlZW5fcmVjdCk7Ci0gIH0KLQotICBy
ZXR1cm4gc3RkOjptb3ZlKGZyYW1lKTsKLX0KLQotdm9pZCBTY3JlZW5DYXB0dXJlckxpbnV4OjpT
Y3JlZW5Db25maWd1cmF0aW9uQ2hhbmdlZCgpIHsKLSAgVFJBQ0VfRVZFTlQwKCJ3ZWJydGMiLCAi
U2NyZWVuQ2FwdHVyZXJMaW51eDo6U2NyZWVuQ29uZmlndXJhdGlvbkNoYW5nZWQiKTsKLSAgLy8g
TWFrZSBzdXJlIHRoZSBmcmFtZSBidWZmZXJzIHdpbGwgYmUgcmVhbGxvY2F0ZWQuCi0gIHF1ZXVl
Xy5SZXNldCgpOwotCi0gIGhlbHBlcl8uQ2xlYXJJbnZhbGlkUmVnaW9uKCk7Ci0gIGlmICgheF9z
ZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5Jbml0KGRpc3BsYXkoKSwgRGVmYXVsdFJvb3RXaW5kb3coZGlz
cGxheSgpKSkpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGluaXRpYWxp
emUgcGl4ZWwgYnVmZmVyIGFmdGVyIHNjcmVlbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ImNvbmZpZ3VyYXRpb24gY2hhbmdlLiI7Ci0gIH0KLX0KLQotdm9pZCBTY3JlZW5DYXB0dXJlckxp
bnV4OjpTeW5jaHJvbml6ZUZyYW1lKCkgewotICAvLyBTeW5jaHJvbml6ZSB0aGUgY3VycmVudCBi
dWZmZXIgd2l0aCB0aGUgcHJldmlvdXMgb25lIHNpbmNlIHdlIGRvIG5vdAotICAvLyBjYXB0dXJl
IHRoZSBlbnRpcmUgZGVza3RvcC4gTm90ZSB0aGF0IGVuY29kZXIgbWF5IGJlIHJlYWRpbmcgZnJv
bSB0aGUKLSAgLy8gcHJldmlvdXMgYnVmZmVyIGF0IHRoaXMgdGltZSBzbyB0aHJlYWQgYWNjZXNz
IGNvbXBsYWludHMgYXJlIGZhbHNlCi0gIC8vIHBvc2l0aXZlcy4KLQotICAvLyBUT0RPKGhjbGFt
KTogV2UgY2FuIHJlZHVjZSB0aGUgYW1vdW50IG9mIGNvcHlpbmcgaGVyZSBieSBzdWJ0cmFjdGlu
ZwotICAvLyB8Y2FwdHVyZXJfaGVscGVyX3xzIHJlZ2lvbiBmcm9tIHxsYXN0X2ludmFsaWRfcmVn
aW9uX3wuCi0gIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vOTIzNTQKLSAgUlRDX0RDSEVDSyhxdWV1ZV8u
cHJldmlvdXNfZnJhbWUoKSk7Ci0KLSAgRGVza3RvcEZyYW1lKiBjdXJyZW50ID0gcXVldWVfLmN1
cnJlbnRfZnJhbWUoKTsKLSAgRGVza3RvcEZyYW1lKiBsYXN0ID0gcXVldWVfLnByZXZpb3VzX2Zy
YW1lKCk7Ci0gIFJUQ19EQ0hFQ0soY3VycmVudCAhPSBsYXN0KTsKLSAgZm9yIChEZXNrdG9wUmVn
aW9uOjpJdGVyYXRvciBpdChsYXN0X2ludmFsaWRfcmVnaW9uXyk7ICFpdC5Jc0F0RW5kKCk7Ci0g
ICAgICAgaXQuQWR2YW5jZSgpKSB7Ci0gICAgY3VycmVudC0+Q29weVBpeGVsc0Zyb20oKmxhc3Qs
IGl0LnJlY3QoKS50b3BfbGVmdCgpLCBpdC5yZWN0KCkpOwotICB9Ci19Ci0KLXZvaWQgU2NyZWVu
Q2FwdHVyZXJMaW51eDo6RGVpbml0WGxpYigpIHsKLSAgaWYgKGdjXykgewotICAgIFhGcmVlR0Mo
ZGlzcGxheSgpLCBnY18pOwotICAgIGdjXyA9IG51bGxwdHI7Ci0gIH0KLQotICB4X3NlcnZlcl9w
aXhlbF9idWZmZXJfLlJlbGVhc2UoKTsKLQotICBpZiAoZGlzcGxheSgpKSB7Ci0gICAgaWYgKGRh
bWFnZV9oYW5kbGVfKSB7Ci0gICAgICBYRGFtYWdlRGVzdHJveShkaXNwbGF5KCksIGRhbWFnZV9o
YW5kbGVfKTsKLSAgICAgIGRhbWFnZV9oYW5kbGVfID0gMDsKLSAgICB9Ci0KLSAgICBpZiAoZGFt
YWdlX3JlZ2lvbl8pIHsKLSAgICAgIFhGaXhlc0Rlc3Ryb3lSZWdpb24oZGlzcGxheSgpLCBkYW1h
Z2VfcmVnaW9uXyk7Ci0gICAgICBkYW1hZ2VfcmVnaW9uXyA9IDA7Ci0gICAgfQotICB9Ci19Ci0K
LX0gIC8vIG5hbWVzcGFjZQotCi0vLyBzdGF0aWMKLXN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2Fw
dHVyZXI+IERlc2t0b3BDYXB0dXJlcjo6Q3JlYXRlUmF3U2NyZWVuQ2FwdHVyZXIoCi0gICAgY29u
c3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7Ci0gIGlmICghb3B0aW9ucy54X2Rp
c3BsYXkoKSkKLSAgICByZXR1cm4gbnVsbHB0cjsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8U2NyZWVu
Q2FwdHVyZXJMaW51eD4gY2FwdHVyZXIobmV3IFNjcmVlbkNhcHR1cmVyTGludXgoKSk7Ci0gIGlm
ICghY2FwdHVyZXIuZ2V0KCktPkluaXQob3B0aW9ucykpIHsKLSAgICByZXR1cm4gbnVsbHB0cjsK
LSAgfQotCi0gIHJldHVybiBzdGQ6Om1vdmUoY2FwdHVyZXIpOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fZHJhd2VyX2xpbnV4LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvc2NyZWVuX2RyYXdlcl9saW51eC5jYwppbmRleCAzOWNlY2E3ZGM2MTc5OWM0NmI3
MzIyNTE4ZTY2NTFhMzU2ZDUxMDE3Li4yYWI1ZTc0ODkxYzYyYWY5MDc0ZTZlZGE0ODYzOTdkNjdm
ODJlNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fZHJhd2VyX2xpbnV4LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL3NjcmVlbl9kcmF3ZXJfbGludXguY2MKQEAgLTE0LDkgKzE0LDkgQEAKICNpbmNs
dWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zaGFyZWRfeF9kaXNwbGF5LmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2RyYXdlci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9kcmF3ZXJfbG9ja19wb3NpeC5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS9zaGFyZWRfeF9kaXNwbGF5LmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2lu
Y2x1ZGUvc2xlZXAuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2RyYXdlcl91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9kcmF3ZXJfdW5pdHRlc3QuY2MKaW5kZXggNWYwZjNj
YzU3MzM1MThkNTdhYmM5YTg2ZWQwZDdjYjRlYjJmYmQzYS4uZDQ4ZmE4OWMwYjViYzBhNjIxZWVm
Njk5MmE1ODg3ZTJmMWM0ZjliYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2RyYXdlcl91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fZHJhd2VyX3VuaXR0ZXN0LmNjCkBAIC0x
NDAsNyArMTQwLDEyIEBAIFRFU1QoU2NyZWVuRHJhd2VyVGVzdCwgRElTQUJMRURfRHJhd1JlY3Rh
bmdsZXMpIHsKICAgU2xlZXBNcygxMDAwMCk7CiB9CiAKLVRFU1QoU2NyZWVuRHJhd2VyVGVzdCwg
VHdvU2NyZWVuRHJhd2VyTG9ja3MpIHsKKyNpZiBkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpICAv
LyBidWdzLndlYnJ0Yy5vcmcvMTAwMTkKKyNkZWZpbmUgTUFZQkVfVHdvU2NyZWVuRHJhd2VyTG9j
a3MgRElTQUJMRURfVHdvU2NyZWVuRHJhd2VyTG9ja3MKKyNlbHNlCisjZGVmaW5lIE1BWUJFX1R3
b1NjcmVlbkRyYXdlckxvY2tzIFR3b1NjcmVlbkRyYXdlckxvY2tzCisjZW5kaWYKK1RFU1QoU2Ny
ZWVuRHJhd2VyVGVzdCwgTUFZQkVfVHdvU2NyZWVuRHJhd2VyTG9ja3MpIHsKICNpZiBkZWZpbmVk
KFdFQlJUQ19QT1NJWCkKICAgLy8gU2NyZWVuRHJhd2VyTG9ja1Bvc2l4IHdvbid0IGJlIGFibGUg
dG8gdW5saW5rIHRoZSBuYW1lZCBzZW1hcGhvcmUuIFNvIHVzZSBhCiAgIC8vIGRpZmZlcmVudCBz
ZW1hcGhvcmUgbmFtZSBoZXJlIHRvIGF2b2lkIGRlYWRsb2NrLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvc2hhcmVkX2Rlc2t0b3BfZnJhbWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NoYXJlZF9kZXNrdG9wX2ZyYW1l
LmgKaW5kZXggZjcwNTA4Y2VlMTViNjkwNmMyNGU2ZDEzNjYzMmUzYjNhNTI0YzBmZC4uZWExMmMw
MDBmMmE2NDUyOGY1YzA4ZmM3M2MyN2QxMmUxOThiYjkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
c2hhcmVkX2Rlc2t0b3BfZnJhbWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zaGFyZWRfZGVza3RvcF9mcmFt
ZS5oCkBAIC0xNiwxMiArMTYsMTMgQEAKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9zY29wZWRfcmVmX3B0ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBTaGFyZWREZXNrdG9wRnJhbWUgaXMgYSBE
ZXNrdG9wRnJhbWUgdGhhdCBtYXkgaGF2ZSBtdWx0aXBsZSBpbnN0YW5jZXMgYWxsCiAvLyBzaGFy
aW5nIHRoZSBzYW1lIGJ1ZmZlci4KLWNsYXNzIFNoYXJlZERlc2t0b3BGcmFtZSA6IHB1YmxpYyBE
ZXNrdG9wRnJhbWUgeworY2xhc3MgUlRDX0VYUE9SVCBTaGFyZWREZXNrdG9wRnJhbWUgOiBwdWJs
aWMgRGVza3RvcEZyYW1lIHsKICBwdWJsaWM6CiAgIH5TaGFyZWREZXNrdG9wRnJhbWUoKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX2xpbnV4LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX2xpbnV4LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMzU5ZTUwYzJk
YjE5Yzc0OGU0MTdiY2VlYzZiNTg4ZTRlZDEwMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS93aW5kb3dfY2FwdHVyZXJfbGludXguY2MKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVy
ZV9vcHRpb25zLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9j
YXB0dXJlci5oIgorCisjaWYgZGVmaW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQorI2luY2x1ZGUg
Im1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl9waXBld2lyZS5o
IgorI2VuZGlmICAvLyBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpCisKKyNpZiBkZWZpbmVk
KFVTRV9YMTEpCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93
X2NhcHR1cmVyX3gxMS5oIgorI2VuZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworCisvLyBzdGF0aWMKK3N0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+
IERlc2t0b3BDYXB0dXJlcjo6Q3JlYXRlUmF3V2luZG93Q2FwdHVyZXIoCisgICAgY29uc3QgRGVz
a3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKSB7CisjaWYgZGVmaW5lZChXRUJSVENfVVNFX1BJ
UEVXSVJFKQorICBpZiAob3B0aW9ucy5hbGxvd19waXBld2lyZSgpICYmIERlc2t0b3BDYXB0dXJl
cjo6SXNSdW5uaW5nVW5kZXJXYXlsYW5kKCkpIHsKKyAgICByZXR1cm4gV2luZG93Q2FwdHVyZXJQ
aXBlV2lyZTo6Q3JlYXRlUmF3V2luZG93Q2FwdHVyZXIob3B0aW9ucyk7CisgIH0KKyNlbmRpZiAg
Ly8gZGVmaW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQorCisjaWYgZGVmaW5lZChVU0VfWDExKQor
ICByZXR1cm4gV2luZG93Q2FwdHVyZXJYMTE6OkNyZWF0ZVJhd1dpbmRvd0NhcHR1cmVyKG9wdGlv
bnMpOworI2VuZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCisKKyAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19j
YXB0dXJlcl9tYWMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfbWFjLm1tCmluZGV4IDk1
ZTYyMmE3N2ExYzNjYmMxYjkwYjI2NzIyYjdkNzcxMDg2NmMzZWUuLmIwNjQ3ZjA0MWI2ZDg2MDg1
MTc1ZGUwZTc1YjgyNDIwYTFmYjRhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19jYXB0
dXJlcl9tYWMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX21hYy5tbQpAQCAtMTQw
LDkgKzE0MCw3IEBAIGJvb2wgV2luZG93Q2FwdHVyZXJNYWM6OkZvY3VzT25TZWxlY3RlZFNvdXJj
ZSgpIHsKIGJvb2wgV2luZG93Q2FwdHVyZXJNYWM6OklzT2NjbHVkZWQoY29uc3QgRGVza3RvcFZl
Y3RvciYgcG9zKSB7CiAgIERlc2t0b3BWZWN0b3Igc3lzX3BvcyA9IHBvczsKICAgaWYgKGNvbmZp
Z3VyYXRpb25fbW9uaXRvcl8pIHsKLSAgICBjb25maWd1cmF0aW9uX21vbml0b3JfLT5Mb2NrKCk7
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbl9tb25pdG9yXy0+ZGVza3Rv
cF9jb25maWd1cmF0aW9uKCk7Ci0gICAgY29uZmlndXJhdGlvbl9tb25pdG9yXy0+VW5sb2NrKCk7
CiAgICAgc3lzX3BvcyA9IHBvcy5hZGQoY29uZmlndXJhdGlvbi5ib3VuZHMudG9wX2xlZnQoKSk7
CiAgIH0KICAgcmV0dXJuIHdpbmRvd19maW5kZXJfLkdldFdpbmRvd1VuZGVyUG9pbnQoc3lzX3Bv
cykgIT0gd2luZG93X2lkXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19jYXB0dXJlcl94
MTEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfeDExLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjNGNhM2FlNWU4YzQwMDk2YTk0NWU5ZjEyMGZmYzliYmJhNTg0NjViLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dp
bmRvd19jYXB0dXJlcl94MTEuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotLyoK
LSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0g
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPFgx
MS9YdXRpbC5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KLSNpbmNs
dWRlIDxYMTEvZXh0ZW5zaW9ucy9YcmVuZGVyLmg+Ci0KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi0j
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMu
aCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXJfeDExLmgiCi0jaW5j
bHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3NoYXJlZF94X2Rpc3BsYXkuaCIKLSNp
bmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvd2luZG93X2xpc3RfdXRpbHMuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9hdG9tX2NhY2hlLmgiCi0j
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfc2VydmVyX3BpeGVsX2J1ZmZl
ci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Nv
bnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9l
dmVudC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotbmFtZXNwYWNlIHsKLQotY2xhc3MgV2lu
ZG93Q2FwdHVyZXJMaW51eCA6IHB1YmxpYyBEZXNrdG9wQ2FwdHVyZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIHsKLSBw
dWJsaWM6Ci0gIFdpbmRvd0NhcHR1cmVyTGludXgoY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25z
JiBvcHRpb25zKTsKLSAgfldpbmRvd0NhcHR1cmVyTGludXgoKSBvdmVycmlkZTsKLQotICAvLyBE
ZXNrdG9wQ2FwdHVyZXIgaW50ZXJmYWNlLgotICB2b2lkIFN0YXJ0KENhbGxiYWNrKiBjYWxsYmFj
aykgb3ZlcnJpZGU7Ci0gIHZvaWQgQ2FwdHVyZUZyYW1lKCkgb3ZlcnJpZGU7Ci0gIGJvb2wgR2V0
U291cmNlTGlzdChTb3VyY2VMaXN0KiBzb3VyY2VzKSBvdmVycmlkZTsKLSAgYm9vbCBTZWxlY3RT
b3VyY2UoU291cmNlSWQgaWQpIG92ZXJyaWRlOwotICBib29sIEZvY3VzT25TZWxlY3RlZFNvdXJj
ZSgpIG92ZXJyaWRlOwotICBib29sIElzT2NjbHVkZWQoY29uc3QgRGVza3RvcFZlY3RvciYgcG9z
KSBvdmVycmlkZTsKLQotICAvLyBTaGFyZWRYRGlzcGxheTo6WEV2ZW50SGFuZGxlciBpbnRlcmZh
Y2UuCi0gIGJvb2wgSGFuZGxlWEV2ZW50KGNvbnN0IFhFdmVudCYgZXZlbnQpIG92ZXJyaWRlOwot
Ci0gcHJpdmF0ZToKLSAgRGlzcGxheSogZGlzcGxheSgpIHsgcmV0dXJuIHhfZGlzcGxheV8tPmRp
c3BsYXkoKTsgfQotCi0gIC8vIFJldHVybnMgd2luZG93IHRpdGxlIGZvciB0aGUgc3BlY2lmaWVk
IFggfHdpbmRvd3wuCi0gIGJvb2wgR2V0V2luZG93VGl0bGUoOjpXaW5kb3cgd2luZG93LCBzdGQ6
OnN0cmluZyogdGl0bGUpOwotCi0gIENhbGxiYWNrKiBjYWxsYmFja18gPSBudWxscHRyOwotCi0g
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRYRGlzcGxheT4geF9kaXNwbGF5XzsKLQotICBib29s
IGhhc19jb21wb3NpdGVfZXh0ZW5zaW9uXyA9IGZhbHNlOwotCi0gIDo6V2luZG93IHNlbGVjdGVk
X3dpbmRvd18gPSAwOwotICBYU2VydmVyUGl4ZWxCdWZmZXIgeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVy
XzsKLSAgWEF0b21DYWNoZSBhdG9tX2NhY2hlXzsKLSAgV2luZG93RmluZGVyWDExIHdpbmRvd19m
aW5kZXJfOwotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oV2luZG93Q2FwdHVyZXJM
aW51eCk7Ci19OwotCi1XaW5kb3dDYXB0dXJlckxpbnV4OjpXaW5kb3dDYXB0dXJlckxpbnV4KGNv
bnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykKLSAgICA6IHhfZGlzcGxheV8ob3B0
aW9ucy54X2Rpc3BsYXkoKSksCi0gICAgICBhdG9tX2NhY2hlXyhkaXNwbGF5KCkpLAotICAgICAg
d2luZG93X2ZpbmRlcl8oJmF0b21fY2FjaGVfKSB7Ci0gIGludCBldmVudF9iYXNlLCBlcnJvcl9i
YXNlLCBtYWpvcl92ZXJzaW9uLCBtaW5vcl92ZXJzaW9uOwotICBpZiAoWENvbXBvc2l0ZVF1ZXJ5
RXh0ZW5zaW9uKGRpc3BsYXkoKSwgJmV2ZW50X2Jhc2UsICZlcnJvcl9iYXNlKSAmJgotICAgICAg
WENvbXBvc2l0ZVF1ZXJ5VmVyc2lvbihkaXNwbGF5KCksICZtYWpvcl92ZXJzaW9uLCAmbWlub3Jf
dmVyc2lvbikgJiYKLSAgICAgIC8vIFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKCkgcmVxdWly
ZXMgdmVyc2lvbiAwLjIKLSAgICAgIChtYWpvcl92ZXJzaW9uID4gMCB8fCBtaW5vcl92ZXJzaW9u
ID49IDIpKSB7Ci0gICAgaGFzX2NvbXBvc2l0ZV9leHRlbnNpb25fID0gdHJ1ZTsKLSAgfSBlbHNl
IHsKLSAgICBSVENfTE9HKExTX0lORk8pIDw8ICJYY29tcG9zaXRlIGV4dGVuc2lvbiBub3QgYXZh
aWxhYmxlIG9yIHRvbyBvbGQuIjsKLSAgfQotCi0gIHhfZGlzcGxheV8tPkFkZEV2ZW50SGFuZGxl
cihDb25maWd1cmVOb3RpZnksIHRoaXMpOwotfQotCi1XaW5kb3dDYXB0dXJlckxpbnV4Ojp+V2lu
ZG93Q2FwdHVyZXJMaW51eCgpIHsKLSAgeF9kaXNwbGF5Xy0+UmVtb3ZlRXZlbnRIYW5kbGVyKENv
bmZpZ3VyZU5vdGlmeSwgdGhpcyk7Ci19Ci0KLWJvb2wgV2luZG93Q2FwdHVyZXJMaW51eDo6R2V0
U291cmNlTGlzdChTb3VyY2VMaXN0KiBzb3VyY2VzKSB7Ci0gIHJldHVybiBHZXRXaW5kb3dMaXN0
KCZhdG9tX2NhY2hlXywgW3RoaXMsIHNvdXJjZXNdKDo6V2luZG93IHdpbmRvdykgewotICAgIFNv
dXJjZSB3OwotICAgIHcuaWQgPSB3aW5kb3c7Ci0gICAgaWYgKHRoaXMtPkdldFdpbmRvd1RpdGxl
KHdpbmRvdywgJncudGl0bGUpKSB7Ci0gICAgICBzb3VyY2VzLT5wdXNoX2JhY2sodyk7Ci0gICAg
fQotICAgIHJldHVybiB0cnVlOwotICB9KTsKLX0KLQotYm9vbCBXaW5kb3dDYXB0dXJlckxpbnV4
OjpTZWxlY3RTb3VyY2UoU291cmNlSWQgaWQpIHsKLSAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZm
ZXJfLkluaXQoZGlzcGxheSgpLCBpZCkpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIC8vIFRlbGwg
dGhlIFggc2VydmVyIHRvIHNlbmQgdXMgd2luZG93IHJlc2l6aW5nIGV2ZW50cy4KLSAgWFNlbGVj
dElucHV0KGRpc3BsYXkoKSwgaWQsIFN0cnVjdHVyZU5vdGlmeU1hc2spOwotCi0gIHNlbGVjdGVk
X3dpbmRvd18gPSBpZDsKLQotICAvLyBJbiBhZGRpdGlvbiB0byBuZWVkaW5nIFgxMSBzZXJ2ZXIt
c2lkZSBzdXBwb3J0IGZvciBYY29tcG9zaXRlLCBpdCBhY3R1YWxseQotICAvLyBuZWVkcyB0byBi
ZSB0dXJuZWQgb24gZm9yIHRoZSB3aW5kb3cuIElmIHRoZSB1c2VyIGhhcyBtb2Rlcm4KLSAgLy8g
aGFyZHdhcmUvZHJpdmVycyBidXQgaXNuJ3QgdXNpbmcgYSBjb21wb3NpdGluZyB3aW5kb3cgbWFu
YWdlciwgdGhhdCB3b24ndAotICAvLyBiZSB0aGUgY2FzZS4gSGVyZSB3ZSBhdXRvbWF0aWNhbGx5
IHR1cm4gaXQgb24uCi0KLSAgLy8gUmVkaXJlY3QgZHJhd2luZyB0byBhbiBvZmZzY3JlZW4gYnVm
ZmVyIChpZSwgdHVybiBvbiBjb21wb3NpdGluZykuIFgxMQotICAvLyByZW1lbWJlcnMgd2hvIGhh
cyByZXF1ZXN0ZWQgdGhpcyBhbmQgd2lsbCB0dXJuIGl0IG9mZiBmb3IgdXMgd2hlbiB3ZSBleGl0
LgotICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5kb3coZGlzcGxheSgpLCBpZCwgQ29tcG9zaXRlUmVk
aXJlY3RBdXRvbWF0aWMpOwotCi0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIFdpbmRvd0NhcHR1
cmVyTGludXg6OkZvY3VzT25TZWxlY3RlZFNvdXJjZSgpIHsKLSAgaWYgKCFzZWxlY3RlZF93aW5k
b3dfKQotICAgIHJldHVybiBmYWxzZTsKLQotICB1bnNpZ25lZCBpbnQgbnVtX2NoaWxkcmVuOwot
ICA6OldpbmRvdyogY2hpbGRyZW47Ci0gIDo6V2luZG93IHBhcmVudDsKLSAgOjpXaW5kb3cgcm9v
dDsKLSAgLy8gRmluZCB0aGUgcm9vdCB3aW5kb3cgdG8gcGFzcyBldmVudCB0by4KLSAgaW50IHN0
YXR1cyA9IFhRdWVyeVRyZWUoZGlzcGxheSgpLCBzZWxlY3RlZF93aW5kb3dfLCAmcm9vdCwgJnBh
cmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoaWxkcmVuLCAmbnVtX2NoaWxkcmVu
KTsKLSAgaWYgKHN0YXR1cyA9PSAwKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxl
ZCB0byBxdWVyeSBmb3IgdGhlIHJvb3Qgd2luZG93LiI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9
Ci0KLSAgaWYgKGNoaWxkcmVuKQotICAgIFhGcmVlKGNoaWxkcmVuKTsKLQotICBYUmFpc2VXaW5k
b3coZGlzcGxheSgpLCBzZWxlY3RlZF93aW5kb3dfKTsKLQotICAvLyBTb21lIHdpbmRvdyBtYW5h
Z2VycyAoZS5nLiwgbWV0YWNpdHkgaW4gR05PTUUpIGNvbnNpZGVyIGl0IGlsbGVnYWwgdG8KLSAg
Ly8gcmFpc2UgYSB3aW5kb3cgd2l0aG91dCBhbHNvIGdpdmluZyBpdCBpbnB1dCBmb2N1cyB3aXRo
Ci0gIC8vIF9ORVRfQUNUSVZFX1dJTkRPVywgc28gWFJhaXNlV2luZG93KCkgb24gaXRzIG93biBp
c24ndCBlbm91Z2guCi0gIEF0b20gYXRvbSA9IFhJbnRlcm5BdG9tKGRpc3BsYXkoKSwgIl9ORVRf
QUNUSVZFX1dJTkRPVyIsIFRydWUpOwotICBpZiAoYXRvbSAhPSBOb25lKSB7Ci0gICAgWEV2ZW50
IHhldjsKLSAgICB4ZXYueGNsaWVudC50eXBlID0gQ2xpZW50TWVzc2FnZTsKLSAgICB4ZXYueGNs
aWVudC5zZXJpYWwgPSAwOwotICAgIHhldi54Y2xpZW50LnNlbmRfZXZlbnQgPSBUcnVlOwotICAg
IHhldi54Y2xpZW50LndpbmRvdyA9IHNlbGVjdGVkX3dpbmRvd187Ci0gICAgeGV2LnhjbGllbnQu
bWVzc2FnZV90eXBlID0gYXRvbTsKLQotICAgIC8vIFRoZSBmb3JtYXQgbWVtYmVyIGlzIHNldCB0
byA4LCAxNiwgb3IgMzIgYW5kIHNwZWNpZmllcyB3aGV0aGVyIHRoZQotICAgIC8vIGRhdGEgc2hv
dWxkIGJlIHZpZXdlZCBhcyBhIGxpc3Qgb2YgYnl0ZXMsIHNob3J0cywgb3IgbG9uZ3MuCi0gICAg
eGV2LnhjbGllbnQuZm9ybWF0ID0gMzI7Ci0KLSAgICBtZW1zZXQoeGV2LnhjbGllbnQuZGF0YS5s
LCAwLCBzaXplb2YoeGV2LnhjbGllbnQuZGF0YS5sKSk7Ci0KLSAgICBYU2VuZEV2ZW50KGRpc3Bs
YXkoKSwgcm9vdCwgRmFsc2UsCi0gICAgICAgICAgICAgICBTdWJzdHJ1Y3R1cmVSZWRpcmVjdE1h
c2sgfCBTdWJzdHJ1Y3R1cmVOb3RpZnlNYXNrLCAmeGV2KTsKLSAgfQotICBYRmx1c2goZGlzcGxh
eSgpKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2luZG93Q2FwdHVyZXJMaW51eDo6U3Rh
cnQoQ2FsbGJhY2sqIGNhbGxiYWNrKSB7Ci0gIFJUQ19EQ0hFQ0soIWNhbGxiYWNrXyk7Ci0gIFJU
Q19EQ0hFQ0soY2FsbGJhY2spOwotCi0gIGNhbGxiYWNrXyA9IGNhbGxiYWNrOwotfQotCi12b2lk
IFdpbmRvd0NhcHR1cmVyTGludXg6OkNhcHR1cmVGcmFtZSgpIHsKLSAgVFJBQ0VfRVZFTlQwKCJ3
ZWJydGMiLCAiV2luZG93Q2FwdHVyZXJMaW51eDo6Q2FwdHVyZUZyYW1lIik7Ci0KLSAgaWYgKCF4
X3NlcnZlcl9waXhlbF9idWZmZXJfLklzV2luZG93VmFsaWQoKSkgewotICAgIFJUQ19MT0coTFNf
RVJST1IpIDw8ICJUaGUgd2luZG93IGlzIG5vIGxvbmdlciB2YWxpZC4iOwotICAgIGNhbGxiYWNr
Xy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfUEVSTUFORU5ULCBudWxscHRyKTsKLSAg
ICByZXR1cm47Ci0gIH0KLQotICB4X2Rpc3BsYXlfLT5Qcm9jZXNzUGVuZGluZ1hFdmVudHMoKTsK
LQotICBpZiAoIWhhc19jb21wb3NpdGVfZXh0ZW5zaW9uXykgewotICAgIC8vIFdpdGhvdXQgdGhl
IFhjb21wb3NpdGUgZXh0ZW5zaW9uIHdlIGNhcHR1cmUgd2hlbiB0aGUgd2hvbGUgd2luZG93IGlz
Ci0gICAgLy8gdmlzaWJsZSBvbiBzY3JlZW4gYW5kIG5vdCBjb3ZlcmVkIGJ5IGFueSBvdGhlciB3
aW5kb3cuIFRoaXMgaXMgbm90Ci0gICAgLy8gc29tZXRoaW5nIHdlIHdhbnQgc28gaW5zdGVhZCwg
anVzdCBiYWlsIG91dC4KLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiTm8gWGNvbXBvc2l0ZSBl
eHRlbnNpb24gZGV0ZWN0ZWQuIjsKLSAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1
bHQ6OkVSUk9SX1BFUk1BTkVOVCwgbnVsbHB0cik7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYg
KEdldFdpbmRvd1N0YXRlKCZhdG9tX2NhY2hlXywgc2VsZWN0ZWRfd2luZG93XykgPT0gSWNvbmlj
U3RhdGUpIHsKLSAgICAvLyBXaW5kb3cgaXMgaW4gbWluaW1pemVkLiBSZXR1cm4gYSAxeDEgZnJh
bWUgYXMgc2FtZSBhcyBPU1gvV2luIGRvZXMuCi0gICAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BG
cmFtZT4gZnJhbWUoCi0gICAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShEZXNrdG9wU2l6ZSgx
LCAxKSkpOwotICAgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6U1VDQ0VTUywg
c3RkOjptb3ZlKGZyYW1lKSk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgc3RkOjp1bmlxdWVfcHRy
PERlc2t0b3BGcmFtZT4gZnJhbWUoCi0gICAgICBuZXcgQmFzaWNEZXNrdG9wRnJhbWUoeF9zZXJ2
ZXJfcGl4ZWxfYnVmZmVyXy53aW5kb3dfc2l6ZSgpKSk7Ci0KLSAgeF9zZXJ2ZXJfcGl4ZWxfYnVm
ZmVyXy5TeW5jaHJvbml6ZSgpOwotICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uQ2FwdHVy
ZVJlY3QoRGVza3RvcFJlY3Q6Ok1ha2VTaXplKGZyYW1lLT5zaXplKCkpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUuZ2V0KCkpKSB7Ci0gICAgUlRDX0xP
RyhMU19XQVJOSU5HKSA8PCAiVGVtcG9yYXJpbHkgZmFpbGVkIHRvIGNhcHR1cmUgd2lub2R3LiI7
Ci0gICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9URU1QT1JBUlks
IG51bGxwdHIpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGZyYW1lLT5tdXRhYmxlX3VwZGF0ZWRf
cmVnaW9uKCktPlNldFJlY3QoCi0gICAgICBEZXNrdG9wUmVjdDo6TWFrZVNpemUoZnJhbWUtPnNp
emUoKSkpOwotICBmcmFtZS0+c2V0X3RvcF9sZWZ0KHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8ud2lu
ZG93X3JlY3QoKS50b3BfbGVmdCgpKTsKLQotICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChS
ZXN1bHQ6OlNVQ0NFU1MsIHN0ZDo6bW92ZShmcmFtZSkpOwotfQotCi1ib29sIFdpbmRvd0NhcHR1
cmVyTGludXg6OklzT2NjbHVkZWQoY29uc3QgRGVza3RvcFZlY3RvciYgcG9zKSB7Ci0gIHJldHVy
biB3aW5kb3dfZmluZGVyXy5HZXRXaW5kb3dVbmRlclBvaW50KHBvcykgIT0KLSAgICAgICAgIHN0
YXRpY19jYXN0PFdpbmRvd0lkPihzZWxlY3RlZF93aW5kb3dfKTsKLX0KLQotYm9vbCBXaW5kb3dD
YXB0dXJlckxpbnV4OjpIYW5kbGVYRXZlbnQoY29uc3QgWEV2ZW50JiBldmVudCkgewotICBpZiAo
ZXZlbnQudHlwZSA9PSBDb25maWd1cmVOb3RpZnkpIHsKLSAgICBYQ29uZmlndXJlRXZlbnQgeGNl
ID0gZXZlbnQueGNvbmZpZ3VyZTsKLSAgICBpZiAoeGNlLndpbmRvdyA9PSBzZWxlY3RlZF93aW5k
b3dfKSB7Ci0gICAgICBpZiAoIURlc2t0b3BSZWN0RnJvbVhBdHRyaWJ1dGVzKHhjZSkuZXF1YWxz
KAotICAgICAgICAgICAgICB4X3NlcnZlcl9waXhlbF9idWZmZXJfLndpbmRvd19yZWN0KCkpKSB7
Ci0gICAgICAgIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5Jbml0KGRpc3BsYXkoKSwgc2Vs
ZWN0ZWRfd2luZG93XykpIHsKLSAgICAgICAgICBSVENfTE9HKExTX0VSUk9SKQotICAgICAgICAg
ICAgICA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgcGl4ZWwgYnVmZmVyIGFmdGVyIHJlc2l6aW5n
LiI7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvLyBBbHdheXMgcmV0dXJu
cyBmYWxzZSwgc28gb3RoZXIgb2JzZXJ2ZXJzIGNhbiBzdGlsbCByZWNlaXZlIHRoZSBldmVudHMu
Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXaW5kb3dDYXB0dXJlckxpbnV4OjpHZXRXaW5k
b3dUaXRsZSg6OldpbmRvdyB3aW5kb3csIHN0ZDo6c3RyaW5nKiB0aXRsZSkgewotICBpbnQgc3Rh
dHVzOwotICBib29sIHJlc3VsdCA9IGZhbHNlOwotICBYVGV4dFByb3BlcnR5IHdpbmRvd19uYW1l
OwotICB3aW5kb3dfbmFtZS52YWx1ZSA9IG51bGxwdHI7Ci0gIGlmICh3aW5kb3cpIHsKLSAgICBz
dGF0dXMgPSBYR2V0V01OYW1lKGRpc3BsYXkoKSwgd2luZG93LCAmd2luZG93X25hbWUpOwotICAg
IGlmIChzdGF0dXMgJiYgd2luZG93X25hbWUudmFsdWUgJiYgd2luZG93X25hbWUubml0ZW1zKSB7
Ci0gICAgICBpbnQgY250OwotICAgICAgY2hhcioqIGxpc3QgPSBudWxscHRyOwotICAgICAgc3Rh
dHVzID0KLSAgICAgICAgICBYdXRmOFRleHRQcm9wZXJ0eVRvVGV4dExpc3QoZGlzcGxheSgpLCAm
d2luZG93X25hbWUsICZsaXN0LCAmY250KTsKLSAgICAgIGlmIChzdGF0dXMgPj0gU3VjY2VzcyAm
JiBjbnQgJiYgKmxpc3QpIHsKLSAgICAgICAgaWYgKGNudCA+IDEpIHsKLSAgICAgICAgICBSVENf
TE9HKExTX0lORk8pIDw8ICJXaW5kb3cgaGFzICIgPDwgY250Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiIHRleHQgcHJvcGVydGllcywgb25seSB1c2luZyB0aGUgZmlyc3Qgb25lLiI7
Ci0gICAgICAgIH0KLSAgICAgICAgKnRpdGxlID0gKmxpc3Q7Ci0gICAgICAgIHJlc3VsdCA9IHRy
dWU7Ci0gICAgICB9Ci0gICAgICBpZiAobGlzdCkKLSAgICAgICAgWEZyZWVTdHJpbmdMaXN0KGxp
c3QpOwotICAgIH0KLSAgICBpZiAod2luZG93X25hbWUudmFsdWUpCi0gICAgICBYRnJlZSh3aW5k
b3dfbmFtZS52YWx1ZSk7Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAgLy8gbmFtZXNw
YWNlCi0KLS8vIHN0YXRpYwotc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0dXJlcj4gRGVza3Rv
cENhcHR1cmVyOjpDcmVhdGVSYXdXaW5kb3dDYXB0dXJlcigKLSAgICBjb25zdCBEZXNrdG9wQ2Fw
dHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKLSAgaWYgKCFvcHRpb25zLnhfZGlzcGxheSgpKQotICAg
IHJldHVybiBudWxscHRyOwotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0dXJl
cj4obmV3IFdpbmRvd0NhcHR1cmVyTGludXgob3B0aW9ucykpOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl91bml0dGVzdC5jYwppbmRleCA4ODMyN2FhYWM1NDgz
YWQ5NTE5OTgxMDE3N2U4NzVlMmY2ODM4MTIwLi5kZjkwNjdlZjJjYjU5NzMzNTczMmFlZmU0OTFj
ZWEyNGE0ZTM4YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyX3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXJfdW5pdHRlc3QuY2MKQEAgLTIxLDggKzIx
LDggQEAKIAogI2lmIGRlZmluZWQoVVNFX1gxMSkKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1v
cnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hfZGlz
cGxheS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2F0b21fY2Fj
aGUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zaGFyZWRfeF9k
aXNwbGF5LmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9hdG9t
X2NhY2hlLmgiCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL3dpbmRvd19maW5kZXJfeDExLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl94
MTEuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNjk0MzI2ZDJmZDg0MGZiNGU5
MzJhMjkwZThkYWRhMTdhZWQ1MmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl94MTEuY2MKKysrIC9kZXYvbnVsbApA
QCAtMSw0OSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXJfeDExLmgiCi0KLSNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEv
d2luZG93X2xpc3RfdXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLQotbmFt
ZXNwYWNlIHdlYnJ0YyB7Ci0KLVdpbmRvd0ZpbmRlclgxMTo6V2luZG93RmluZGVyWDExKFhBdG9t
Q2FjaGUqIGNhY2hlKSA6IGNhY2hlXyhjYWNoZSkgewotICBSVENfRENIRUNLKGNhY2hlXyk7Ci19
Ci0KLVdpbmRvd0ZpbmRlclgxMTo6fldpbmRvd0ZpbmRlclgxMSgpID0gZGVmYXVsdDsKLQotV2lu
ZG93SWQgV2luZG93RmluZGVyWDExOjpHZXRXaW5kb3dVbmRlclBvaW50KERlc2t0b3BWZWN0b3Ig
cG9pbnQpIHsKLSAgV2luZG93SWQgaWQgPSBrTnVsbFdpbmRvd0lkOwotICBHZXRXaW5kb3dMaXN0
KGNhY2hlXywgWyZpZCwgdGhpcywgcG9pbnRdKDo6V2luZG93IHdpbmRvdykgewotICAgIERlc2t0
b3BSZWN0IHJlY3Q7Ci0gICAgaWYgKEdldFdpbmRvd1JlY3QodGhpcy0+Y2FjaGVfLT5kaXNwbGF5
KCksIHdpbmRvdywgJnJlY3QpICYmCi0gICAgICAgIHJlY3QuQ29udGFpbnMocG9pbnQpKSB7Ci0g
ICAgICBpZCA9IHdpbmRvdzsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci0gIH0pOwotICByZXR1cm4gaWQ7Ci19Ci0KLS8vIHN0YXRpYwotc3RkOjp1bmlxdWVf
cHRyPFdpbmRvd0ZpbmRlcj4gV2luZG93RmluZGVyOjpDcmVhdGUoCi0gICAgY29uc3QgV2luZG93
RmluZGVyOjpPcHRpb25zJiBvcHRpb25zKSB7Ci0gIGlmIChvcHRpb25zLmNhY2hlID09IG51bGxw
dHIpIHsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSAgfQotCi0gIHJldHVybiBhYnNsOjptYWtlX3Vu
aXF1ZTxXaW5kb3dGaW5kZXJYMTE+KG9wdGlvbnMuY2FjaGUpOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyX3gxMS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvd2luZG93X2ZpbmRlcl94MTEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzhjMzBjNDY3MGJhYzgyZTM5OTVjOWUxMTc3Y2ExNGNiYTZkN2VkMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyX3gx
MS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMp
IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICov
Ci0KLSNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfV0lORE9XX0ZJTkRFUl9YMTFfSF8K
LSNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfV0lORE9XX0ZJTkRFUl9YMTFfSF8KLQot
I2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXIuaCIKLQotbmFt
ZXNwYWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIFhBdG9tQ2FjaGU7Ci0KLS8vIFRoZSBpbXBsZW1lbnRh
dGlvbiBvZiBXaW5kb3dGaW5kZXIgZm9yIFgxMS4KLWNsYXNzIFdpbmRvd0ZpbmRlclgxMSBmaW5h
bCA6IHB1YmxpYyBXaW5kb3dGaW5kZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgV2luZG93Rmlu
ZGVyWDExKFhBdG9tQ2FjaGUqIGNhY2hlKTsKLSAgfldpbmRvd0ZpbmRlclgxMSgpIG92ZXJyaWRl
OwotCi0gIC8vIFdpbmRvd0ZpbmRlciBpbXBsZW1lbnRhdGlvbi4KLSAgV2luZG93SWQgR2V0V2lu
ZG93VW5kZXJQb2ludChEZXNrdG9wVmVjdG9yIHBvaW50KSBvdmVycmlkZTsKLQotIHByaXZhdGU6
Ci0gIFhBdG9tQ2FjaGUqIGNvbnN0IGNhY2hlXzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKLQotI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9XSU5ET1dfRklOREVSX1gx
MV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3NoYXJlZF94X2Rpc3BsYXkuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS94MTEvc2hhcmVkX3hfZGlzcGxheS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGI2YTY0YjgxZDliNzUxYmE5NWEzY2FmMmJlOWIyZTg3MTlhYTFkMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hf
ZGlzcGxheS5jYworKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3NoYXJlZF94
X2Rpc3BsYXkuaCIKLQotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0
aG0+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1TaGFyZWRYRGlzcGxheTo6U2hhcmVk
WERpc3BsYXkoRGlzcGxheSogZGlzcGxheSkgOiBkaXNwbGF5XyhkaXNwbGF5KSB7Ci0gIFJUQ19E
Q0hFQ0soZGlzcGxheV8pOwotfQotCi1TaGFyZWRYRGlzcGxheTo6flNoYXJlZFhEaXNwbGF5KCkg
ewotICBSVENfRENIRUNLKGV2ZW50X2hhbmRsZXJzXy5lbXB0eSgpKTsKLSAgWENsb3NlRGlzcGxh
eShkaXNwbGF5Xyk7Ci19Ci0KLS8vIHN0YXRpYwotcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhE
aXNwbGF5PiBTaGFyZWRYRGlzcGxheTo6Q3JlYXRlKAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBk
aXNwbGF5X25hbWUpIHsKLSAgRGlzcGxheSogZGlzcGxheSA9Ci0gICAgICBYT3BlbkRpc3BsYXko
ZGlzcGxheV9uYW1lLmVtcHR5KCkgPyBOVUxMIDogZGlzcGxheV9uYW1lLmNfc3RyKCkpOwotICBp
ZiAoIWRpc3BsYXkpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVW5hYmxlIHRvIG9wZW4g
ZGlzcGxheSI7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLSAgcmV0dXJuIG5ldyBTaGFyZWRYRGlz
cGxheShkaXNwbGF5KTsKLX0KLQotLy8gc3RhdGljCi1ydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVk
WERpc3BsYXk+IFNoYXJlZFhEaXNwbGF5OjpDcmVhdGVEZWZhdWx0KCkgewotICByZXR1cm4gQ3Jl
YXRlKHN0ZDo6c3RyaW5nKCkpOwotfQotCi12b2lkIFNoYXJlZFhEaXNwbGF5OjpBZGRFdmVudEhh
bmRsZXIoaW50IHR5cGUsIFhFdmVudEhhbmRsZXIqIGhhbmRsZXIpIHsKLSAgZXZlbnRfaGFuZGxl
cnNfW3R5cGVdLnB1c2hfYmFjayhoYW5kbGVyKTsKLX0KLQotdm9pZCBTaGFyZWRYRGlzcGxheTo6
UmVtb3ZlRXZlbnRIYW5kbGVyKGludCB0eXBlLCBYRXZlbnRIYW5kbGVyKiBoYW5kbGVyKSB7Ci0g
IEV2ZW50SGFuZGxlcnNNYXA6Oml0ZXJhdG9yIGhhbmRsZXJzID0gZXZlbnRfaGFuZGxlcnNfLmZp
bmQodHlwZSk7Ci0gIGlmIChoYW5kbGVycyA9PSBldmVudF9oYW5kbGVyc18uZW5kKCkpCi0gICAg
cmV0dXJuOwotCi0gIHN0ZDo6dmVjdG9yPFhFdmVudEhhbmRsZXIqPjo6aXRlcmF0b3IgbmV3X2Vu
ZCA9Ci0gICAgICBzdGQ6OnJlbW92ZShoYW5kbGVycy0+c2Vjb25kLmJlZ2luKCksIGhhbmRsZXJz
LT5zZWNvbmQuZW5kKCksIGhhbmRsZXIpOwotICBoYW5kbGVycy0+c2Vjb25kLmVyYXNlKG5ld19l
bmQsIGhhbmRsZXJzLT5zZWNvbmQuZW5kKCkpOwotCi0gIC8vIENoZWNrIGlmIG5vIGhhbmRsZXJz
IGxlZnQgZm9yIHRoaXMgZXZlbnQuCi0gIGlmIChoYW5kbGVycy0+c2Vjb25kLmVtcHR5KCkpCi0g
ICAgZXZlbnRfaGFuZGxlcnNfLmVyYXNlKGhhbmRsZXJzKTsKLX0KLQotdm9pZCBTaGFyZWRYRGlz
cGxheTo6UHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCkgewotICAvLyBIb2xkIHJlZmVyZW5jZSB0byB8
dGhpc3wgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nIGRlc3Ryb3llZCB3aGlsZQotICAvLyBwcm9j
ZXNzaW5nIGV2ZW50cy4KLSAgcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiBzZWxm
KHRoaXMpOwotCi0gIC8vIEZpbmQgdGhlIG51bWJlciBvZiBldmVudHMgdGhhdCBhcmUgb3V0c3Rh
bmRpbmcgIm5vdy4iICBXZSBkb24ndCBqdXN0IGxvb3AKLSAgLy8gb24gWFBlbmRpbmcgYmVjYXVz
ZSB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGlzIHRlcm1pbmF0ZXMuCi0gIGludCBldmVudHNfdG9f
cHJvY2VzcyA9IFhQZW5kaW5nKGRpc3BsYXkoKSk7Ci0gIFhFdmVudCBlOwotCi0gIGZvciAoaW50
IGkgPSAwOyBpIDwgZXZlbnRzX3RvX3Byb2Nlc3M7IGkrKykgewotICAgIFhOZXh0RXZlbnQoZGlz
cGxheSgpLCAmZSk7Ci0gICAgRXZlbnRIYW5kbGVyc01hcDo6aXRlcmF0b3IgaGFuZGxlcnMgPSBl
dmVudF9oYW5kbGVyc18uZmluZChlLnR5cGUpOwotICAgIGlmIChoYW5kbGVycyA9PSBldmVudF9o
YW5kbGVyc18uZW5kKCkpCi0gICAgICBjb250aW51ZTsKLSAgICBmb3IgKHN0ZDo6dmVjdG9yPFhF
dmVudEhhbmRsZXIqPjo6aXRlcmF0b3IgaXQgPSBoYW5kbGVycy0+c2Vjb25kLmJlZ2luKCk7Ci0g
ICAgICAgICBpdCAhPSBoYW5kbGVycy0+c2Vjb25kLmVuZCgpOyArK2l0KSB7Ci0gICAgICBpZiAo
KCppdCktPkhhbmRsZVhFdmVudChlKSkKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci19Ci0K
LX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS9zaGFyZWRf
eF9kaXNwbGF5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hfZGlzcGxheS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0ZDkzYjNiMTc1MTQ0ZDE0YzdkMzYzYjRjMWIzYzYyNzg3YzQ4
Y2VmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL3gxMS9zaGFyZWRfeF9kaXNwbGF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVS
RV9YMTFfU0hBUkVEX1hfRElTUExBWV9IXwotI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVS
RV9YMTFfU0hBUkVEX1hfRElTUExBWV9IXwotCi0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHZl
Y3Rvcj4KLQotI2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgImFwaS9yZWZjb3VudGVkYmFz
ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgotCi0vLyBJbmNsdWRpbmcgWGxpYi5oIHdpbGwgaW52
b2x2ZSBldmlsIGRlZmluZXMgKEJvb2wsIFN0YXR1cywgVHJ1ZSwgRmFsc2UpLCB3aGljaAotLy8g
ZWFzaWx5IGNvbmZsaWN0IHdpdGggb3RoZXIgaGVhZGVycy4KLXR5cGVkZWYgc3RydWN0IF9YRGlz
cGxheSBEaXNwbGF5OwotdHlwZWRlZiB1bmlvbiBfWEV2ZW50IFhFdmVudDsKLQotbmFtZXNwYWNl
IHdlYnJ0YyB7Ci0KLS8vIEEgcmVmLWNvdW50ZWQgb2JqZWN0IHRvIHN0b3JlIFhEaXNwbGF5IGNv
bm5lY3Rpb24uCi1jbGFzcyBTaGFyZWRYRGlzcGxheSA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRC
YXNlIHsKLSBwdWJsaWM6Ci0gIGNsYXNzIFhFdmVudEhhbmRsZXIgewotICAgcHVibGljOgotICAg
IHZpcnR1YWwgflhFdmVudEhhbmRsZXIoKSB7fQotCi0gICAgLy8gUHJvY2Vzc2VzIFhFdmVudC4g
UmV0dXJucyB0cnVlIGlmIHRoZSBldmVudCBoYXMgYmVlbiBoYW5kbGVkLgotICAgIHZpcnR1YWwg
Ym9vbCBIYW5kbGVYRXZlbnQoY29uc3QgWEV2ZW50JiBldmVudCkgPSAwOwotICB9OwotCi0gIC8v
IFRha2VzIG93bmVyc2hpcCBvZiB8ZGlzcGxheXwuCi0gIGV4cGxpY2l0IFNoYXJlZFhEaXNwbGF5
KERpc3BsYXkqIGRpc3BsYXkpOwotCi0gIC8vIENyZWF0ZXMgYSBuZXcgWDExIERpc3BsYXkgZm9y
IHRoZSB8ZGlzcGxheV9uYW1lfC4gTlVMTCBpcyByZXR1cm5lZCBpZiBYMTEKLSAgLy8gY29ubmVj
dGlvbiBmYWlsZWQuIEVxdWl2YWxlbnQgdG8gQ3JlYXRlRGVmYXVsdCgpIHdoZW4gfGRpc3BsYXlf
bmFtZXwgaXMKLSAgLy8gZW1wdHkuCi0gIHN0YXRpYyBydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVk
WERpc3BsYXk+IENyZWF0ZSgKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXNwbGF5X25hbWUp
OwotCi0gIC8vIENyZWF0ZXMgWDExIERpc3BsYXkgY29ubmVjdGlvbiBmb3IgdGhlIGRlZmF1bHQg
ZGlzcGxheSAoZS5nLiBzcGVjaWZpZWQgaW4KLSAgLy8gRElTUExBWSkuIE5VTEwgaXMgcmV0dXJu
ZWQgaWYgWDExIGNvbm5lY3Rpb24gZmFpbGVkLgotICBzdGF0aWMgcnRjOjpzY29wZWRfcmVmcHRy
PFNoYXJlZFhEaXNwbGF5PiBDcmVhdGVEZWZhdWx0KCk7Ci0KLSAgRGlzcGxheSogZGlzcGxheSgp
IHsgcmV0dXJuIGRpc3BsYXlfOyB9Ci0KLSAgLy8gQWRkcyBhIG5ldyBldmVudCB8aGFuZGxlcnwg
Zm9yIFhFdmVudCdzIG9mIHx0eXBlfC4KLSAgdm9pZCBBZGRFdmVudEhhbmRsZXIoaW50IHR5cGUs
IFhFdmVudEhhbmRsZXIqIGhhbmRsZXIpOwotCi0gIC8vIFJlbW92ZXMgZXZlbnQgfGhhbmRsZXJ8
IGFkZGVkIHVzaW5nIHxBZGRFdmVudEhhbmRsZXJ8LiBEb2Vzbid0IGRvIGFueXRoaW5nCi0gIC8v
IGlmIHxoYW5kbGVyfCBpcyBub3QgcmVnaXN0ZXJlZC4KLSAgdm9pZCBSZW1vdmVFdmVudEhhbmRs
ZXIoaW50IHR5cGUsIFhFdmVudEhhbmRsZXIqIGhhbmRsZXIpOwotCi0gIC8vIFByb2Nlc3NlcyBw
ZW5kaW5nIFhFdmVudHMsIGNhbGxpbmcgY29ycmVzcG9uZGluZyBldmVudCBoYW5kbGVycy4KLSAg
dm9pZCBQcm9jZXNzUGVuZGluZ1hFdmVudHMoKTsKLQotIHByb3RlY3RlZDoKLSAgflNoYXJlZFhE
aXNwbGF5KCkgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICB0eXBlZGVmIHN0ZDo6bWFwPGludCwg
c3RkOjp2ZWN0b3I8WEV2ZW50SGFuZGxlcio+ID4gRXZlbnRIYW5kbGVyc01hcDsKLQotICBEaXNw
bGF5KiBkaXNwbGF5XzsKLQotICBFdmVudEhhbmRsZXJzTWFwIGV2ZW50X2hhbmRsZXJzXzsKLQot
ICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNoYXJlZFhEaXNwbGF5KTsKLX07Ci0KLX0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVS
RV9YMTFfU0hBUkVEX1hfRElTUExBWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3dpbmRv
d19saXN0X3V0aWxzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3dpbmRvd19saXN0X3V0aWxzLmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTA3MGQ4ODc4MjRjMGFmNjVhOWY2NTc5MTdlZTky
ODZjYmFjYTVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL3gxMS93aW5kb3dfbGlzdF91dGlscy5jYworKysgL2Rldi9udWxsCkBAIC0xLDI0
NiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL3gxMS93aW5kb3dfbGlzdF91dGlscy5oIgotCi0jaW5jbHVkZSA8WDExL1hh
dG9tLmg+Ci0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KLSNp
bmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1ZGUgIm1v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2Vycm9yX3RyYXAuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotbmFt
ZXNwYWNlIHsKLQotY2xhc3MgRGVmZXJYRnJlZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBEZWZl
clhGcmVlKHZvaWQqIGRhdGEpIDogZGF0YV8oZGF0YSkge30KLSAgfkRlZmVyWEZyZWUoKTsKLQot
IHByaXZhdGU6Ci0gIHZvaWQqIGNvbnN0IGRhdGFfOwotfTsKLQotRGVmZXJYRnJlZTo6fkRlZmVy
WEZyZWUoKSB7Ci0gIGlmIChkYXRhXykKLSAgICBYRnJlZShkYXRhXyk7Ci19Ci0KLS8vIENvbnZl
bmllbmNlIHdyYXBwZXIgZm9yIFhHZXRXaW5kb3dQcm9wZXJ0eSgpIHJlc3VsdHMuCi10ZW1wbGF0
ZSA8Y2xhc3MgUHJvcGVydHlUeXBlPgotY2xhc3MgWFdpbmRvd1Byb3BlcnR5IHsKLSBwdWJsaWM6
Ci0gIFhXaW5kb3dQcm9wZXJ0eShEaXNwbGF5KiBkaXNwbGF5LCBXaW5kb3cgd2luZG93LCBBdG9t
IHByb3BlcnR5KSB7Ci0gICAgY29uc3QgaW50IGtCaXRzUGVyQnl0ZSA9IDg7Ci0gICAgQXRvbSBh
Y3R1YWxfdHlwZTsKLSAgICBpbnQgYWN0dWFsX2Zvcm1hdDsKLSAgICB1bnNpZ25lZCBsb25nIGJ5
dGVzX2FmdGVyOyAgLy8gTk9MSU5UOiB0eXBlIHJlcXVpcmVkIGJ5IFhHZXRXaW5kb3dQcm9wZXJ0
eQotICAgIGludCBzdGF0dXMgPSBYR2V0V2luZG93UHJvcGVydHkoCi0gICAgICAgIGRpc3BsYXks
IHdpbmRvdywgcHJvcGVydHksIDBMLCB+MEwsIEZhbHNlLCBBbnlQcm9wZXJ0eVR5cGUsCi0gICAg
ICAgICZhY3R1YWxfdHlwZSwgJmFjdHVhbF9mb3JtYXQsICZzaXplXywgJmJ5dGVzX2FmdGVyLCAm
ZGF0YV8pOwotICAgIGlmIChzdGF0dXMgIT0gU3VjY2VzcykgewotICAgICAgZGF0YV8gPSBudWxs
cHRyOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoc2l6ZW9mKFByb3BlcnR5VHlwZSkg
KiBrQml0c1BlckJ5dGUgIT0gYWN0dWFsX2Zvcm1hdCkgewotICAgICAgc2l6ZV8gPSAwOwotICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlzX3ZhbGlkXyA9IHRydWU7Ci0gIH0KLQotICB+WFdp
bmRvd1Byb3BlcnR5KCkgewotICAgIGlmIChkYXRhXykKLSAgICAgIFhGcmVlKGRhdGFfKTsKLSAg
fQotCi0gIC8vIFRydWUgaWYgd2UgZ290IHByb3Blcmx5IHZhbHVlIHN1Y2Nlc3NmdWxseS4KLSAg
Ym9vbCBpc192YWxpZCgpIGNvbnN0IHsgcmV0dXJuIGlzX3ZhbGlkXzsgfQotCi0gIC8vIFNpemUg
YW5kIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4KLSAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBzaXplXzsgfQotICBjb25zdCBQcm9wZXJ0eVR5cGUqIGRhdGEoKSBjb25zdCB7Ci0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UHJvcGVydHlUeXBlKj4oZGF0YV8pOwotICB9Ci0gIFByb3Bl
cnR5VHlwZSogZGF0YSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UHJvcGVydHlUeXBlKj4o
ZGF0YV8pOyB9Ci0KLSBwcml2YXRlOgotICBib29sIGlzX3ZhbGlkXyA9IGZhbHNlOwotICB1bnNp
Z25lZCBsb25nIHNpemVfID0gMDsgIC8vIE5PTElOVDogdHlwZSByZXF1aXJlZCBieSBYR2V0V2lu
ZG93UHJvcGVydHkKLSAgdW5zaWduZWQgY2hhciogZGF0YV8gPSBudWxscHRyOwotCi0gIFJUQ19E
SVNBTExPV19DT1BZX0FORF9BU1NJR04oWFdpbmRvd1Byb3BlcnR5KTsKLX07Ci0KLS8vIEl0ZXJh
dGVzIHRocm91Z2ggfHdpbmRvd3wgaGllcmFyY2h5IHRvIGZpbmQgZmlyc3QgdmlzaWJsZSB3aW5k
b3csIGkuZS4gb25lCi0vLyB0aGF0IGhhcyBXTV9TVEFURSBwcm9wZXJ0eSBzZXQgdG8gTm9ybWFs
U3RhdGUuCi0vLyBTZWUgaHR0cDovL3Ryb25jaGUuY29tL2d1aS94L2ljY2NtL3NlYy00Lmh0bWwj
cy00LjEuMy4xIC4KLTo6V2luZG93IEdldEFwcGxpY2F0aW9uV2luZG93KFhBdG9tQ2FjaGUqIGNh
Y2hlLCA6OldpbmRvdyB3aW5kb3cpIHsKLSAgaW50MzJfdCBzdGF0ZSA9IEdldFdpbmRvd1N0YXRl
KGNhY2hlLCB3aW5kb3cpOwotICBpZiAoc3RhdGUgPT0gTm9ybWFsU3RhdGUpIHsKLSAgICAvLyBX
aW5kb3cgaGFzIFdNX1NUQVRFPT1Ob3JtYWxTdGF0ZS4gUmV0dXJuIGl0LgotICAgIHJldHVybiB3
aW5kb3c7Ci0gIH0gZWxzZSBpZiAoc3RhdGUgPT0gSWNvbmljU3RhdGUpIHsKLSAgICAvLyBXaW5k
b3cgaXMgaW4gbWluaW1pemVkLiBTa2lwIGl0LgotICAgIHJldHVybiAwOwotICB9Ci0KLSAgUlRD
X0RDSEVDS19FUShzdGF0ZSwgV2l0aGRyYXduU3RhdGUpOwotICAvLyBJZiB0aGUgd2luZG93IGlz
IGluIFdpdGhkcmF3blN0YXRlIHRoZW4gbG9vayBhdCBhbGwgb2YgaXRzIGNoaWxkcmVuLgotICA6
OldpbmRvdyByb290LCBwYXJlbnQ7Ci0gIDo6V2luZG93KiBjaGlsZHJlbjsKLSAgdW5zaWduZWQg
aW50IG51bV9jaGlsZHJlbjsKLSAgaWYgKCFYUXVlcnlUcmVlKGNhY2hlLT5kaXNwbGF5KCksIHdp
bmRvdywgJnJvb3QsICZwYXJlbnQsICZjaGlsZHJlbiwKLSAgICAgICAgICAgICAgICAgICZudW1f
Y2hpbGRyZW4pKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBxdWVyeSBm
b3IgY2hpbGQgd2luZG93cyBhbHRob3VnaCB3aW5kb3ciCi0gICAgICAgICAgICAgICAgICAgICAg
PDwgImRvZXMgbm90IGhhdmUgYSB2YWxpZCBXTV9TVEFURS4iOwotICAgIHJldHVybiAwOwotICB9
Ci0gIDo6V2luZG93IGFwcF93aW5kb3cgPSAwOwotICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IG51bV9jaGlsZHJlbjsgKytpKSB7Ci0gICAgYXBwX3dpbmRvdyA9IEdldEFwcGxpY2F0aW9u
V2luZG93KGNhY2hlLCBjaGlsZHJlbltpXSk7Ci0gICAgaWYgKGFwcF93aW5kb3cpCi0gICAgICBi
cmVhazsKLSAgfQotCi0gIGlmIChjaGlsZHJlbikKLSAgICBYRnJlZShjaGlsZHJlbik7Ci0gIHJl
dHVybiBhcHBfd2luZG93OwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHx3aW5kb3d8IGlz
IGEgZGVza3RvcCBlbGVtZW50LgotYm9vbCBJc0Rlc2t0b3BFbGVtZW50KFhBdG9tQ2FjaGUqIGNh
Y2hlLCA6OldpbmRvdyB3aW5kb3cpIHsKLSAgUlRDX0RDSEVDSyhjYWNoZSk7Ci0gIGlmICh3aW5k
b3cgPT0gMCkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgLy8gRmlyc3QgbG9vayBmb3IgX05FVF9X
TV9XSU5ET1dfVFlQRS4gVGhlIHN0YW5kYXJkCi0gIC8vIChodHRwOi8vc3RhbmRhcmRzLmZyZWVk
ZXNrdG9wLm9yZy93bS1zcGVjL2xhdGVzdC9hcjAxczA1Lmh0bWwjaWQyNzYwMzA2KQotICAvLyBz
YXlzIHRoaXMgaGludCAqc2hvdWxkKiBiZSBwcmVzZW50IG9uIGFsbCB3aW5kb3dzLCBhbmQgd2Ug
dXNlIHRoZSBleGlzdGVuY2UKLSAgLy8gb2YgX05FVF9XTV9XSU5ET1dfVFlQRV9OT1JNQUwgaW4g
dGhlIHByb3BlcnR5IHRvIGluZGljYXRlIGEgd2luZG93IGlzIG5vdAotICAvLyBhIGRlc2t0b3Ag
ZWxlbWVudCAodGhhdCBpcywgb25seSAibm9ybWFsIiB3aW5kb3dzIHNob3VsZCBiZSBzaGFyZWFi
bGUpLgotICBYV2luZG93UHJvcGVydHk8dWludDMyX3Q+IHdpbmRvd190eXBlKGNhY2hlLT5kaXNw
bGF5KCksIHdpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YWNoZS0+V2luZG93VHlwZSgpKTsKLSAgaWYgKHdpbmRvd190eXBlLmlzX3ZhbGlkKCkgJiYgd2lu
ZG93X3R5cGUuc2l6ZSgpID4gMCkgewotICAgIHVpbnQzMl90KiBlbmQgPSB3aW5kb3dfdHlwZS5k
YXRhKCkgKyB3aW5kb3dfdHlwZS5zaXplKCk7Ci0gICAgYm9vbCBpc19ub3JtYWwgPQotICAgICAg
ICAoZW5kICE9IHN0ZDo6ZmluZCh3aW5kb3dfdHlwZS5kYXRhKCksIGVuZCwgY2FjaGUtPldpbmRv
d1R5cGVOb3JtYWwoKSkpOwotICAgIHJldHVybiAhaXNfbm9ybWFsOwotICB9Ci0KLSAgLy8gRmFs
bCBiYWNrIG9uIHVzaW5nIHRoZSBoaW50LgotICBYQ2xhc3NIaW50IGNsYXNzX2hpbnQ7Ci0gIFN0
YXR1cyBzdGF0dXMgPSBYR2V0Q2xhc3NIaW50KGNhY2hlLT5kaXNwbGF5KCksIHdpbmRvdywgJmNs
YXNzX2hpbnQpOwotICBpZiAoc3RhdHVzID09IDApIHsKLSAgICAvLyBObyBoaW50cywgYXNzdW1l
IHRoaXMgaXMgYSBub3JtYWwgYXBwbGljYXRpb24gd2luZG93LgotICAgIHJldHVybiBmYWxzZTsK
LSAgfQotCi0gIERlZmVyWEZyZWUgZnJlZV9yZXNfbmFtZShjbGFzc19oaW50LnJlc19uYW1lKTsK
LSAgRGVmZXJYRnJlZSBmcmVlX3Jlc19jbGFzcyhjbGFzc19oaW50LnJlc19jbGFzcyk7Ci0gIHJl
dHVybiBzdHJjbXAoImdub21lLXBhbmVsIiwgY2xhc3NfaGludC5yZXNfbmFtZSkgPT0gMCB8fAot
ICAgICAgICAgc3RyY21wKCJkZXNrdG9wX3dpbmRvdyIsIGNsYXNzX2hpbnQucmVzX25hbWUpID09
IDA7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQzMl90IEdldFdpbmRvd1N0YXRlKFhBdG9t
Q2FjaGUqIGNhY2hlLCA6OldpbmRvdyB3aW5kb3cpIHsKLSAgLy8gR2V0IFdNX1NUQVRFIHByb3Bl
cnR5IG9mIHRoZSB3aW5kb3cuCi0gIFhXaW5kb3dQcm9wZXJ0eTx1aW50MzJfdD4gd2luZG93X3N0
YXRlKGNhY2hlLT5kaXNwbGF5KCksIHdpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FjaGUtPldtU3RhdGUoKSk7Ci0KLSAgLy8gV01fU1RBVEUgaXMgY29u
c2lkZXJlZCB0byBiZSBzZXQgdG8gV2l0aGRyYXduU3RhdGUgd2hlbiBpdCBtaXNzaW5nLgotICBy
ZXR1cm4gd2luZG93X3N0YXRlLmlzX3ZhbGlkKCkgPyAqd2luZG93X3N0YXRlLmRhdGEoKSA6IFdp
dGhkcmF3blN0YXRlOwotfQotCi1ib29sIEdldFdpbmRvd0xpc3QoWEF0b21DYWNoZSogY2FjaGUs
Ci0gICAgICAgICAgICAgICAgICAgcnRjOjpGdW5jdGlvblZpZXc8Ym9vbCg6OldpbmRvdyk+IG9u
X3dpbmRvdykgewotICBSVENfRENIRUNLKGNhY2hlKTsKLSAgUlRDX0RDSEVDSyhvbl93aW5kb3cp
OwotICA6OkRpc3BsYXkqIGNvbnN0IGRpc3BsYXkgPSBjYWNoZS0+ZGlzcGxheSgpOwotCi0gIGlu
dCBmYWlsZWRfc2NyZWVucyA9IDA7Ci0gIGNvbnN0IGludCBudW1fc2NyZWVucyA9IFhTY3JlZW5D
b3VudChkaXNwbGF5KTsKLSAgZm9yIChpbnQgc2NyZWVuID0gMDsgc2NyZWVuIDwgbnVtX3NjcmVl
bnM7IHNjcmVlbisrKSB7Ci0gICAgOjpXaW5kb3cgcm9vdF93aW5kb3cgPSBYUm9vdFdpbmRvdyhk
aXNwbGF5LCBzY3JlZW4pOwotICAgIDo6V2luZG93IHBhcmVudDsKLSAgICA6OldpbmRvdyogY2hp
bGRyZW47Ci0gICAgdW5zaWduZWQgaW50IG51bV9jaGlsZHJlbjsKLSAgICB7Ci0gICAgICBYRXJy
b3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheSk7Ci0gICAgICBpZiAoWFF1ZXJ5VHJlZShkaXNwbGF5
LCByb290X3dpbmRvdywgJnJvb3Rfd2luZG93LCAmcGFyZW50LCAmY2hpbGRyZW4sCi0gICAgICAg
ICAgICAgICAgICAgICAmbnVtX2NoaWxkcmVuKSA9PSAwIHx8Ci0gICAgICAgICAgZXJyb3JfdHJh
cC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgewotICAgICAgICBmYWlsZWRfc2NyZWVu
cysrOwotICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHF1ZXJ5IGZvciBj
aGlsZCB3aW5kb3dzIGZvciBzY3JlZW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBz
Y3JlZW47Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgIH0KLQotICAgIERlZmVyWEZy
ZWUgZnJlZV9jaGlsZHJlbihjaGlsZHJlbik7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IG51bV9jaGlsZHJlbjsgaSsrKSB7Ci0gICAgICAvLyBJdGVyYXRlcyBpbiByZXZlcnNl
IG9yZGVyIHRvIHJldHVybiB3aW5kb3dzIGZyb20gZnJvbnQgdG8gYmFjay4KLSAgICAgIDo6V2lu
ZG93IGFwcF93aW5kb3cgPQotICAgICAgICAgIEdldEFwcGxpY2F0aW9uV2luZG93KGNhY2hlLCBj
aGlsZHJlbltudW1fY2hpbGRyZW4gLSAxIC0gaV0pOwotICAgICAgaWYgKGFwcF93aW5kb3cgJiYg
IUlzRGVza3RvcEVsZW1lbnQoY2FjaGUsIGFwcF93aW5kb3cpKSB7Ci0gICAgICAgIGlmICghb25f
d2luZG93KGFwcF93aW5kb3cpKSB7Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICByZXR1cm4gZmFpbGVkX3NjcmVlbnMgPCBudW1fc2Ny
ZWVuczsKLX0KLQotYm9vbCBHZXRXaW5kb3dSZWN0KDo6RGlzcGxheSogZGlzcGxheSwKLSAgICAg
ICAgICAgICAgICAgICA6OldpbmRvdyB3aW5kb3csCi0gICAgICAgICAgICAgICAgICAgRGVza3Rv
cFJlY3QqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgWFdpbmRvd0F0dHJpYnV0ZXMqIGF0dHJp
YnV0ZXMgLyogPSBudWxscHRyICovKSB7Ci0gIFhXaW5kb3dBdHRyaWJ1dGVzIGxvY2FsX2F0dHJp
YnV0ZXM7Ci0gIGludCBvZmZzZXRfeDsKLSAgaW50IG9mZnNldF95OwotICBpZiAoYXR0cmlidXRl
cyA9PSBudWxscHRyKSB7Ci0gICAgYXR0cmlidXRlcyA9ICZsb2NhbF9hdHRyaWJ1dGVzOwotICB9
Ci0KLSAgewotICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KTsKLSAgICBpZiAoIVhH
ZXRXaW5kb3dBdHRyaWJ1dGVzKGRpc3BsYXksIHdpbmRvdywgYXR0cmlidXRlcykgfHwKLSAgICAg
ICAgZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgewotICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgfQotICAqcmVjdCA9IERlc2t0b3BSZWN0RnJvbVhBdHRyaWJ1
dGVzKCphdHRyaWJ1dGVzKTsKLQotICB7Ci0gICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3Bs
YXkpOwotICAgIDo6V2luZG93IGNoaWxkOwotICAgIGlmICghWFRyYW5zbGF0ZUNvb3JkaW5hdGVz
KGRpc3BsYXksIHdpbmRvdywgYXR0cmlidXRlcy0+cm9vdCwgLXJlY3QtPmxlZnQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAtcmVjdC0+dG9wKCksICZvZmZzZXRfeCwgJm9mZnNl
dF95LCAmY2hpbGQpIHx8Ci0gICAgICAgIGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJs
ZSgpICE9IDApIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgcmVjdC0+VHJh
bnNsYXRlKG9mZnNldF94LCBvZmZzZXRfeSk7Ci0gIHJldHVybiB0cnVlOwotfQotCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvd2luZG93X2xpc3RfdXRp
bHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL3gxMS93aW5kb3dfbGlzdF91dGlscy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3MmQyYTcwZDIxMDdkZGRhOTE5ZGI3OGQ5MTEzMGRlMmQ0ODEzZTJlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gx
MS93aW5kb3dfbGlzdF91dGlscy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoK
LSAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0g
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDEx
X1dJTkRPV19MSVNUX1VUSUxTX0hfCi0jZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1gx
MV9XSU5ET1dfTElTVF9VVElMU19IXwotCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLQotI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0cnkuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9hdG9tX2NhY2hlLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvZnVuY3Rpb25fdmlldy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gU3lu
Y2hyb25vdXNseSBpdGVyYXRlcyBhbGwgb24tc2NyZWVuIHdpbmRvd3MgaW4gfGNhY2hlfC5kaXNw
bGF5KCkgaW4KLS8vIGRlY3JlYXNpbmcgei1vcmRlciBhbmQgc2VuZHMgdGhlbSBvbmUtYnktb25l
IHRvIHxvbl93aW5kb3d8IGZ1bmN0aW9uIGJlZm9yZQotLy8gR2V0V2luZG93TGlzdCgpIHJldHVy
bnMuIElmIHxvbl93aW5kb3d8IHJldHVybnMgZmFsc2UsIHRoaXMgZnVuY3Rpb24gaWdub3Jlcwot
Ly8gb3RoZXIgd2luZG93cyBhbmQgcmV0dXJucyBpbW1lZGlhdGVseS4gR2V0V2luZG93TGlzdCgp
IHJldHVybnMgZmFsc2UgaWYKLS8vIG5hdGl2ZSBBUElzIGZhaWxlZC4gSWYgbXVsdGlwbGUgc2Ny
ZWVucyBhcmUgYXR0YWNoZWQgdG8gdGhlIHxkaXNwbGF5fCwgdGhpcwotLy8gZnVuY3Rpb24gcmV0
dXJucyBmYWxzZSBvbmx5IHdoZW4gbmF0aXZlIEFQSXMgZmFpbGVkIG9uIGFsbCBzY3JlZW5zLiBN
ZW51cywKLS8vIHBhbmVscyBhbmQgbWluaW1pemVkIHdpbmRvd3Mgd2lsbCBiZSBpZ25vcmVkLgot
Ym9vbCBHZXRXaW5kb3dMaXN0KFhBdG9tQ2FjaGUqIGNhY2hlLAotICAgICAgICAgICAgICAgICAg
IHJ0Yzo6RnVuY3Rpb25WaWV3PGJvb2woOjpXaW5kb3cpPiBvbl93aW5kb3cpOwotCi0vLyBSZXR1
cm5zIFdNX1NUQVRFIHByb3BlcnR5IG9mIHRoZSB8d2luZG93fC4gVGhpcyBmdW5jdGlvbiByZXR1
cm5zCi0vLyBXaXRoZHJhd25TdGF0ZSBpZiB0aGUgfHdpbmRvd3wgaXMgbWlzc2luZy4KLWludDMy
X3QgR2V0V2luZG93U3RhdGUoWEF0b21DYWNoZSogY2FjaGUsIDo6V2luZG93IHdpbmRvdyk7Ci0K
LS8vIFJldHVybnMgdGhlIHJlY3RhbmdsZSBvZiB0aGUgfHdpbmRvd3wgaW4gdGhlIGNvb3JkaW5h
dGVzIG9mIHxkaXNwbGF5fC4gVGhpcwotLy8gZnVuY3Rpb24gcmV0dXJucyBmYWxzZSBpZiBuYXRp
dmUgQVBJcyBmYWlsZWQuIElmIHxhdHRyaWJ1dGVzfCBpcyBwcm92aWRlZCwgaXQKLS8vIHdpbGwg
YmUgZmlsbGVkIHdpdGggdGhlIGF0dHJpYnV0ZXMgb2YgfHdpbmRvd3wuIFRoZSB8cmVjdHwgaXMg
aW4gc3lzdGVtCi0vLyBjb29yZGluYXRlLCBpLmUuIHRoZSBwcmltYXJ5IG1vbml0b3IgYWx3YXlz
IHN0YXJ0cyBmcm9tICgwLCAwKS4KLWJvb2wgR2V0V2luZG93UmVjdCg6OkRpc3BsYXkqIGRpc3Bs
YXksCi0gICAgICAgICAgICAgICAgICAgOjpXaW5kb3cgd2luZG93LAotICAgICAgICAgICAgICAg
ICAgIERlc2t0b3BSZWN0KiByZWN0LAotICAgICAgICAgICAgICAgICAgIFhXaW5kb3dBdHRyaWJ1
dGVzKiBhdHRyaWJ1dGVzID0gbnVsbHB0cik7Ci0KLS8vIENyZWF0ZXMgYSBEZXNrdG9wUmVjdCBm
cm9tIHxhdHRyaWJ1dGVzfC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotRGVza3RvcFJlY3QgRGVz
a3RvcFJlY3RGcm9tWEF0dHJpYnV0ZXMoY29uc3QgVCYgYXR0cmlidXRlcykgewotICByZXR1cm4g
RGVza3RvcFJlY3Q6Ok1ha2VYWVdIKGF0dHJpYnV0ZXMueCwgYXR0cmlidXRlcy55LCBhdHRyaWJ1
dGVzLndpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuaGVp
Z2h0KTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE1PRFVMRVNf
REVTS1RPUF9DQVBUVVJFX1gxMV9XSU5ET1dfTElTVF9VVElMU19IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUveDExL3hfYXRvbV9jYWNoZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2F0b21fY2FjaGUuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhM2ExZmRlYmRkZDVkOTFiYjk5YTg3YThk
MGRjNmIxNmMzZDU4YTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUveDExL3hfYXRvbV9jYWNoZS5jYworKysgL2Rldi9udWxsCkBAIC0xLDQ3
ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUveDExL3hfYXRvbV9jYWNoZS5oIgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1YQXRvbUNhY2hlOjpYQXRvbUNhY2hlKDo6
RGlzcGxheSogZGlzcGxheSkgOiBkaXNwbGF5XyhkaXNwbGF5KSB7Ci0gIFJUQ19EQ0hFQ0soZGlz
cGxheV8pOwotfQotCi1YQXRvbUNhY2hlOjp+WEF0b21DYWNoZSgpID0gZGVmYXVsdDsKLQotOjpE
aXNwbGF5KiBYQXRvbUNhY2hlOjpkaXNwbGF5KCkgY29uc3QgewotICByZXR1cm4gZGlzcGxheV87
Ci19Ci0KLUF0b20gWEF0b21DYWNoZTo6V21TdGF0ZSgpIHsKLSAgcmV0dXJuIENyZWF0ZUlmTm90
RXhpc3QoJndtX3N0YXRlXywgIldNX1NUQVRFIik7Ci19Ci0KLUF0b20gWEF0b21DYWNoZTo6V2lu
ZG93VHlwZSgpIHsKLSAgcmV0dXJuIENyZWF0ZUlmTm90RXhpc3QoJndpbmRvd190eXBlXywgIl9O
RVRfV01fV0lORE9XX1RZUEUiKTsKLX0KLQotQXRvbSBYQXRvbUNhY2hlOjpXaW5kb3dUeXBlTm9y
bWFsKCkgewotICByZXR1cm4gQ3JlYXRlSWZOb3RFeGlzdCgmd2luZG93X3R5cGVfbm9ybWFsXywg
Il9ORVRfV01fV0lORE9XX1RZUEVfTk9STUFMIik7Ci19Ci0KLUF0b20gWEF0b21DYWNoZTo6Q3Jl
YXRlSWZOb3RFeGlzdChBdG9tKiBhdG9tLCBjb25zdCBjaGFyKiBuYW1lKSB7Ci0gIFJUQ19EQ0hF
Q0soYXRvbSk7Ci0gIGlmICgqYXRvbSA9PSBOb25lKSB7Ci0gICAgKmF0b20gPSBYSW50ZXJuQXRv
bShkaXNwbGF5KCksIG5hbWUsIFRydWUpOwotICB9Ci0gIHJldHVybiAqYXRvbTsKLX0KLQotfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfYXRvbV9jYWNo
ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUveDExL3hfYXRvbV9jYWNoZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1MjQ2YzJiYjVjOWE4NmI4YjBkYjFjNjZlOTViNmUyNDE1ZDdlNjg2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2F0
b21fY2FjaGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KLSAqLwotCi0jaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1gxMV9YX0FUT01fQ0FD
SEVfSF8KLSNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDExX1hfQVRPTV9DQUNIRV9I
XwotCi0jaW5jbHVkZSA8WDExL1hhdG9tLmg+Ci0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLQotbmFt
ZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIEEgY2FjaGUgb2YgQXRvbS4gRWFjaCBBdG9tIG9iamVjdCBp
cyBjcmVhdGVkIG9uIGRlbWFuZC4KLWNsYXNzIFhBdG9tQ2FjaGUgZmluYWwgewotIHB1YmxpYzoK
LSAgZXhwbGljaXQgWEF0b21DYWNoZSg6OkRpc3BsYXkqIGRpc3BsYXkpOwotICB+WEF0b21DYWNo
ZSgpOwotCi0gIDo6RGlzcGxheSogZGlzcGxheSgpIGNvbnN0OwotCi0gIEF0b20gV21TdGF0ZSgp
OwotICBBdG9tIFdpbmRvd1R5cGUoKTsKLSAgQXRvbSBXaW5kb3dUeXBlTm9ybWFsKCk7Ci0KLSBw
cml2YXRlOgotICAvLyBJZiB8KmF0b218IGlzIE5vbmUsIHRoaXMgZnVuY3Rpb24gdXNlcyBYSW50
ZXJuQXRvbSgpIHRvIHJldHJpZXZlIGFuIEF0b20uCi0gIEF0b20gQ3JlYXRlSWZOb3RFeGlzdChB
dG9tKiBhdG9tLCBjb25zdCBjaGFyKiBuYW1lKTsKLQotICA6OkRpc3BsYXkqIGNvbnN0IGRpc3Bs
YXlfOwotICBBdG9tIHdtX3N0YXRlXyA9IE5vbmU7Ci0gIEF0b20gd2luZG93X3R5cGVfID0gTm9u
ZTsKLSAgQXRvbSB3aW5kb3dfdHlwZV9ub3JtYWxfID0gTm9uZTsKLX07Ci0KLX0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9YMTFfWF9B
VE9NX0NBQ0hFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9lcnJvcl90cmFwLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUveDExL3hfZXJyb3JfdHJhcC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjU1OWMzZGJlOWY1MTY2NTY0YWU4YWJiNjA4YmMyZWUyNzdiMzlkNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9lcnJvcl90
cmFwLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
KGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
ICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9lcnJvcl90cmFw
LmgiCi0KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLQotI2lmIGRlZmluZWQoVE9PTEtJVF9HVEspCi0j
aW5jbHVkZSA8Z2RrL2dkay5oPgotI2VuZGlmICAvLyAhZGVmaW5lZChUT09MS0lUX0dUSykKLQot
bmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLW5hbWVzcGFjZSB7Ci0KLSNpZiAhZGVmaW5lZChUT09MS0lU
X0dUSykKLQotLy8gVE9ETyhzZXJnZXl1KTogVGhpcyBjb2RlIGlzIG5vdCB0aHJlYWQgc2FmZS4g
Rml4IGl0LiBCdWcgMjIwMi4KLXN0YXRpYyBib29sIGdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJs
ZWQgPSBmYWxzZTsKLXN0YXRpYyBpbnQgZ19sYXN0X3hzZXJ2ZXJfZXJyb3JfY29kZSA9IDA7Ci0K
LWludCBYU2VydmVyRXJyb3JIYW5kbGVyKERpc3BsYXkqIGRpc3BsYXksIFhFcnJvckV2ZW50KiBl
cnJvcl9ldmVudCkgewotICBhc3NlcnQoZ194c2VydmVyX2Vycm9yX3RyYXBfZW5hYmxlZCk7Ci0g
IGdfbGFzdF94c2VydmVyX2Vycm9yX2NvZGUgPSBlcnJvcl9ldmVudC0+ZXJyb3JfY29kZTsKLSAg
cmV0dXJuIDA7Ci19Ci0KLSNlbmRpZiAgLy8gIWRlZmluZWQoVE9PTEtJVF9HVEspCi0KLX0gIC8v
IG5hbWVzcGFjZQotCi1YRXJyb3JUcmFwOjpYRXJyb3JUcmFwKERpc3BsYXkqIGRpc3BsYXkpCi0g
ICAgOiBvcmlnaW5hbF9lcnJvcl9oYW5kbGVyXyhOVUxMKSwgZW5hYmxlZF8odHJ1ZSkgewotI2lm
IGRlZmluZWQoVE9PTEtJVF9HVEspCi0gIGdka19lcnJvcl90cmFwX3B1c2goKTsKLSNlbHNlICAg
Ly8gIWRlZmluZWQoVE9PTEtJVF9HVEspCi0gIGFzc2VydCghZ194c2VydmVyX2Vycm9yX3RyYXBf
ZW5hYmxlZCk7Ci0gIG9yaWdpbmFsX2Vycm9yX2hhbmRsZXJfID0gWFNldEVycm9ySGFuZGxlcigm
WFNlcnZlckVycm9ySGFuZGxlcik7Ci0gIGdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJsZWQgPSB0
cnVlOwotICBnX2xhc3RfeHNlcnZlcl9lcnJvcl9jb2RlID0gMDsKLSNlbmRpZiAgLy8gIWRlZmlu
ZWQoVE9PTEtJVF9HVEspCi19Ci0KLWludCBYRXJyb3JUcmFwOjpHZXRMYXN0RXJyb3JBbmREaXNh
YmxlKCkgewotICBlbmFibGVkXyA9IGZhbHNlOwotI2lmIGRlZmluZWQoVE9PTEtJVF9HVEspCi0g
IHJldHVybiBnZGtfZXJyb3JfdHJhcF9wdXNoKCk7Ci0jZWxzZSAgIC8vICFkZWZpbmVkKFRPT0xL
SVRfR1RLKQotICBhc3NlcnQoZ194c2VydmVyX2Vycm9yX3RyYXBfZW5hYmxlZCk7Ci0gIFhTZXRF
cnJvckhhbmRsZXIob3JpZ2luYWxfZXJyb3JfaGFuZGxlcl8pOwotICBnX3hzZXJ2ZXJfZXJyb3Jf
dHJhcF9lbmFibGVkID0gZmFsc2U7Ci0gIHJldHVybiBnX2xhc3RfeHNlcnZlcl9lcnJvcl9jb2Rl
OwotI2VuZGlmICAvLyAhZGVmaW5lZChUT09MS0lUX0dUSykKLX0KLQotWEVycm9yVHJhcDo6flhF
cnJvclRyYXAoKSB7Ci0gIGlmIChlbmFibGVkXykKLSAgICBHZXRMYXN0RXJyb3JBbmREaXNhYmxl
KCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gx
MS94X2Vycm9yX3RyYXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2Vycm9yX3RyYXAuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWE5ZWJmNjcwYjdlYTEwZmU3NTI4YTYyMDdhMTRmMTlhNmZl
YzkwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS94MTEveF9lcnJvcl90cmFwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0v
KgotICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
LSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9Y
MTFfWF9FUlJPUl9UUkFQX0hfCi0jZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1gxMV9Y
X0VSUk9SX1RSQVBfSF8KLQotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0KLSNpbmNsdWRlICJydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBIZWxw
ZXIgY2xhc3MgdGhhdCByZWdpc3RlcnMgWCBXaW5kb3cgZXJyb3IgaGFuZGxlci4gQ2FsbGVyIGNh
biB1c2UKLS8vIEdldExhc3RFcnJvckFuZERpc2FibGUoKSB0byBnZXQgdGhlIGxhc3QgZXJyb3Ig
dGhhdCB3YXMgY2F1Z2h0LCBpZiBhbnkuCi1jbGFzcyBYRXJyb3JUcmFwIHsKLSBwdWJsaWM6Ci0g
IGV4cGxpY2l0IFhFcnJvclRyYXAoRGlzcGxheSogZGlzcGxheSk7Ci0gIH5YRXJyb3JUcmFwKCk7
Ci0KLSAgLy8gUmV0dXJucyBsYXN0IGVycm9yIGFuZCByZW1vdmVzIHVucmVnaXN0ZXJzIHRoZSBl
cnJvciBoYW5kbGVyLgotICBpbnQgR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpOwotCi0gcHJpdmF0
ZToKLSAgWEVycm9ySGFuZGxlciBvcmlnaW5hbF9lcnJvcl9oYW5kbGVyXzsKLSAgYm9vbCBlbmFi
bGVkXzsKLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFhFcnJvclRyYXApOwotfTsK
LQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE1PRFVMRVNfREVTS1RPUF9D
QVBUVVJFX1gxMV9YX0VSUk9SX1RSQVBfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X3Nl
cnZlcl9waXhlbF9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVy
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzI3ZDNmYzdkZGUyYTIxMjgzOTg3
ZWE0ODgyMjEzZGQ1MTRkMGNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X3NlcnZlcl9waXhlbF9idWZmZXIuY2MKKysrIC9kZXYv
bnVsbApAQCAtMSwzNTEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRl
ICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgiCi0K
LSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzeXMvc2htLmg+Ci0KLSNpbmNsdWRlICJt
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgiCi0jaW5jbHVkZSAibW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUveDExL3dpbmRvd19saXN0X3V0aWxzLmgiCi0jaW5jbHVkZSAibW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfZXJyb3JfdHJhcC5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLQotbmFtZXNwYWNl
IHdlYnJ0YyB7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFJldHVybnMgdGhlIG51bWJlciBvZiBiaXRz
IHxtYXNrfCBoYXMgdG8gYmUgc2hpZnRlZCBsZWZ0IHNvIGl0cyBsYXN0Ci0vLyAobW9zdC1zaWdu
aWZpY2FudCkgYml0IHNldCBiZWNvbWVzIHRoZSBtb3N0LXNpZ25pZmljYW50IGJpdCBvZiB0aGUg
d29yZC4KLS8vIFdoZW4gfG1hc2t8IGlzIDAgdGhlIGZ1bmN0aW9uIHJldHVybnMgMzEuCi11aW50
MzJfdCBNYXNrVG9TaGlmdCh1aW50MzJfdCBtYXNrKSB7Ci0gIGludCBzaGlmdCA9IDA7Ci0gIGlm
ICgobWFzayAmIDB4ZmZmZjAwMDB1KSA9PSAwKSB7Ci0gICAgbWFzayA8PD0gMTY7Ci0gICAgc2hp
ZnQgKz0gMTY7Ci0gIH0KLSAgaWYgKChtYXNrICYgMHhmZjAwMDAwMHUpID09IDApIHsKLSAgICBt
YXNrIDw8PSA4OwotICAgIHNoaWZ0ICs9IDg7Ci0gIH0KLSAgaWYgKChtYXNrICYgMHhmMDAwMDAw
MHUpID09IDApIHsKLSAgICBtYXNrIDw8PSA0OwotICAgIHNoaWZ0ICs9IDQ7Ci0gIH0KLSAgaWYg
KChtYXNrICYgMHhjMDAwMDAwMHUpID09IDApIHsKLSAgICBtYXNrIDw8PSAyOwotICAgIHNoaWZ0
ICs9IDI7Ci0gIH0KLSAgaWYgKChtYXNrICYgMHg4MDAwMDAwMHUpID09IDApCi0gICAgc2hpZnQg
Kz0gMTsKLQotICByZXR1cm4gc2hpZnQ7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiB8aW1hZ2V8
IGlzIGluIFJHQiBmb3JtYXQuCi1ib29sIElzWEltYWdlUkdCRm9ybWF0KFhJbWFnZSogaW1hZ2Up
IHsKLSAgcmV0dXJuIGltYWdlLT5iaXRzX3Blcl9waXhlbCA9PSAzMiAmJiBpbWFnZS0+cmVkX21h
c2sgPT0gMHhmZjAwMDAgJiYKLSAgICAgICAgIGltYWdlLT5ncmVlbl9tYXNrID09IDB4ZmYwMCAm
JiBpbWFnZS0+Ymx1ZV9tYXNrID09IDB4ZmY7Ci19Ci0KLS8vIFdlIGV4cG9zZSB0d28gZm9ybXMg
b2YgYmxpdHRpbmcgdG8gaGFuZGxlIHZhcmlhdGlvbnMgaW4gdGhlIHBpeGVsIGZvcm1hdC4KLS8v
IEluIEZhc3RCbGl0KCksIHRoZSBvcGVyYXRpb24gaXMgZWZmZWN0aXZlbHkgYSBtZW1jcHkuCi12
b2lkIEZhc3RCbGl0KFhJbWFnZSogeF9pbWFnZSwKLSAgICAgICAgICAgICAgdWludDhfdCogc3Jj
X3BvcywKLSAgICAgICAgICAgICAgY29uc3QgRGVza3RvcFJlY3QmIHJlY3QsCi0gICAgICAgICAg
ICAgIERlc2t0b3BGcmFtZSogZnJhbWUpIHsKLSAgaW50IHNyY19zdHJpZGUgPSB4X2ltYWdlLT5i
eXRlc19wZXJfbGluZTsKLSAgaW50IGRzdF94ID0gcmVjdC5sZWZ0KCksIGRzdF95ID0gcmVjdC50
b3AoKTsKLQotICB1aW50OF90KiBkc3RfcG9zID0gZnJhbWUtPmRhdGEoKSArIGZyYW1lLT5zdHJp
ZGUoKSAqIGRzdF95OwotICBkc3RfcG9zICs9IGRzdF94ICogRGVza3RvcEZyYW1lOjprQnl0ZXNQ
ZXJQaXhlbDsKLQotICBpbnQgaGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsKLSAgaW50IHJvd19ieXRl
cyA9IHJlY3Qud2lkdGgoKSAqIERlc2t0b3BGcmFtZTo6a0J5dGVzUGVyUGl4ZWw7Ci0gIGZvciAo
aW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKLSAgICBtZW1jcHkoZHN0X3Bvcywgc3JjX3Bv
cywgcm93X2J5dGVzKTsKLSAgICBzcmNfcG9zICs9IHNyY19zdHJpZGU7Ci0gICAgZHN0X3BvcyAr
PSBmcmFtZS0+c3RyaWRlKCk7Ci0gIH0KLX0KLQotdm9pZCBTbG93QmxpdChYSW1hZ2UqIHhfaW1h
Z2UsCi0gICAgICAgICAgICAgIHVpbnQ4X3QqIHNyY19wb3MsCi0gICAgICAgICAgICAgIGNvbnN0
IERlc2t0b3BSZWN0JiByZWN0LAotICAgICAgICAgICAgICBEZXNrdG9wRnJhbWUqIGZyYW1lKSB7
Ci0gIGludCBzcmNfc3RyaWRlID0geF9pbWFnZS0+Ynl0ZXNfcGVyX2xpbmU7Ci0gIGludCBkc3Rf
eCA9IHJlY3QubGVmdCgpLCBkc3RfeSA9IHJlY3QudG9wKCk7Ci0gIGludCB3aWR0aCA9IHJlY3Qu
d2lkdGgoKSwgaGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsKLQotICB1aW50MzJfdCByZWRfbWFzayA9
IHhfaW1hZ2UtPnJlZF9tYXNrOwotICB1aW50MzJfdCBncmVlbl9tYXNrID0geF9pbWFnZS0+cmVk
X21hc2s7Ci0gIHVpbnQzMl90IGJsdWVfbWFzayA9IHhfaW1hZ2UtPmJsdWVfbWFzazsKLQotICB1
aW50MzJfdCByZWRfc2hpZnQgPSBNYXNrVG9TaGlmdChyZWRfbWFzayk7Ci0gIHVpbnQzMl90IGdy
ZWVuX3NoaWZ0ID0gTWFza1RvU2hpZnQoZ3JlZW5fbWFzayk7Ci0gIHVpbnQzMl90IGJsdWVfc2hp
ZnQgPSBNYXNrVG9TaGlmdChibHVlX21hc2spOwotCi0gIGludCBiaXRzX3Blcl9waXhlbCA9IHhf
aW1hZ2UtPmJpdHNfcGVyX3BpeGVsOwotCi0gIHVpbnQ4X3QqIGRzdF9wb3MgPSBmcmFtZS0+ZGF0
YSgpICsgZnJhbWUtPnN0cmlkZSgpICogZHN0X3k7Ci0gIGRzdF9wb3MgKz0gZHN0X3ggKiBEZXNr
dG9wRnJhbWU6OmtCeXRlc1BlclBpeGVsOwotICAvLyBUT0RPKGhjbGFtKTogT3B0aW1pemUsIHBl
cmhhcHMgdXNpbmcgTU1YIGNvZGUgb3IgYnkgY29udmVydGluZyB0bwotICAvLyBZVVYgZGlyZWN0
bHkuCi0gIC8vIFRPRE8oc2VyZ2V5dSk6IFRoaXMgY29kZSBkb2Vzbid0IGhhbmRsZSBYSW1hZ2Ug
Ynl0ZSBvcmRlciBwcm9wZXJseSBhbmQKLSAgLy8gd29uJ3Qgd29yayB3aXRoIDI0YnBwIGltYWdl
cy4gRml4IGl0LgotICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7Ci0gICAgdWlu
dDMyX3QqIGRzdF9wb3NfMzIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oZHN0X3Bvcyk7
Ci0gICAgdWludDMyX3QqIHNyY19wb3NfMzIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4o
c3JjX3Bvcyk7Ci0gICAgdWludDE2X3QqIHNyY19wb3NfMTYgPSByZWludGVycHJldF9jYXN0PHVp
bnQxNl90Kj4oc3JjX3Bvcyk7Ci0gICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7
Ci0gICAgICAvLyBEZXJlZmVyZW5jZSB0aHJvdWdoIGFuIGFwcHJvcHJpYXRlbHktYWxpZ25lZCBw
b2ludGVyLgotICAgICAgdWludDMyX3QgcGl4ZWw7Ci0gICAgICBpZiAoYml0c19wZXJfcGl4ZWwg
PT0gMzIpIHsKLSAgICAgICAgcGl4ZWwgPSBzcmNfcG9zXzMyW3hdOwotICAgICAgfSBlbHNlIGlm
IChiaXRzX3Blcl9waXhlbCA9PSAxNikgewotICAgICAgICBwaXhlbCA9IHNyY19wb3NfMTZbeF07
Ci0gICAgICB9IGVsc2UgewotICAgICAgICBwaXhlbCA9IHNyY19wb3NbeF07Ci0gICAgICB9Ci0g
ICAgICB1aW50MzJfdCByID0gKHBpeGVsICYgcmVkX21hc2spIDw8IHJlZF9zaGlmdDsKLSAgICAg
IHVpbnQzMl90IGcgPSAocGl4ZWwgJiBncmVlbl9tYXNrKSA8PCBncmVlbl9zaGlmdDsKLSAgICAg
IHVpbnQzMl90IGIgPSAocGl4ZWwgJiBibHVlX21hc2spIDw8IGJsdWVfc2hpZnQ7Ci0gICAgICAv
LyBXcml0ZSBhcyAzMi1iaXQgUkdCLgotICAgICAgZHN0X3Bvc18zMlt4XSA9Ci0gICAgICAgICAg
KChyID4+IDgpICYgMHhmZjAwMDApIHwgKChnID4+IDE2KSAmIDB4ZmYwMCkgfCAoKGIgPj4gMjQp
ICYgMHhmZik7Ci0gICAgfQotICAgIGRzdF9wb3MgKz0gZnJhbWUtPnN0cmlkZSgpOwotICAgIHNy
Y19wb3MgKz0gc3JjX3N0cmlkZTsKLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotWFNlcnZl
clBpeGVsQnVmZmVyOjpYU2VydmVyUGl4ZWxCdWZmZXIoKSB7fQotCi1YU2VydmVyUGl4ZWxCdWZm
ZXI6On5YU2VydmVyUGl4ZWxCdWZmZXIoKSB7Ci0gIFJlbGVhc2UoKTsKLX0KLQotdm9pZCBYU2Vy
dmVyUGl4ZWxCdWZmZXI6OlJlbGVhc2UoKSB7Ci0gIGlmICh4X2ltYWdlXykgewotICAgIFhEZXN0
cm95SW1hZ2UoeF9pbWFnZV8pOwotICAgIHhfaW1hZ2VfID0gbnVsbHB0cjsKLSAgfQotICBpZiAo
eF9zaG1faW1hZ2VfKSB7Ci0gICAgWERlc3Ryb3lJbWFnZSh4X3NobV9pbWFnZV8pOwotICAgIHhf
c2htX2ltYWdlXyA9IG51bGxwdHI7Ci0gIH0KLSAgaWYgKHNobV9waXhtYXBfKSB7Ci0gICAgWEZy
ZWVQaXhtYXAoZGlzcGxheV8sIHNobV9waXhtYXBfKTsKLSAgICBzaG1fcGl4bWFwXyA9IDA7Ci0g
IH0KLSAgaWYgKHNobV9nY18pIHsKLSAgICBYRnJlZUdDKGRpc3BsYXlfLCBzaG1fZ2NfKTsKLSAg
ICBzaG1fZ2NfID0gbnVsbHB0cjsKLSAgfQotCi0gIFJlbGVhc2VTaGFyZWRNZW1vcnlTZWdtZW50
KCk7Ci0KLSAgd2luZG93XyA9IDA7Ci19Ci0KLXZvaWQgWFNlcnZlclBpeGVsQnVmZmVyOjpSZWxl
YXNlU2hhcmVkTWVtb3J5U2VnbWVudCgpIHsKLSAgaWYgKCFzaG1fc2VnbWVudF9pbmZvXykKLSAg
ICByZXR1cm47Ci0gIGlmIChzaG1fc2VnbWVudF9pbmZvXy0+c2htYWRkciAhPSBudWxscHRyKQot
ICAgIHNobWR0KHNobV9zZWdtZW50X2luZm9fLT5zaG1hZGRyKTsKLSAgaWYgKHNobV9zZWdtZW50
X2luZm9fLT5zaG1pZCAhPSAtMSkKLSAgICBzaG1jdGwoc2htX3NlZ21lbnRfaW5mb18tPnNobWlk
LCBJUENfUk1JRCwgMCk7Ci0gIGRlbGV0ZSBzaG1fc2VnbWVudF9pbmZvXzsKLSAgc2htX3NlZ21l
bnRfaW5mb18gPSBudWxscHRyOwotfQotCi1ib29sIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6SW5pdChE
aXNwbGF5KiBkaXNwbGF5LCBXaW5kb3cgd2luZG93KSB7Ci0gIFJlbGVhc2UoKTsKLSAgZGlzcGxh
eV8gPSBkaXNwbGF5OwotCi0gIFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Ci0gIGlmICgh
R2V0V2luZG93UmVjdChkaXNwbGF5Xywgd2luZG93LCAmd2luZG93X3JlY3RfLCAmYXR0cmlidXRl
cykpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICB3aW5kb3dfID0gd2luZG93OwotICBJ
bml0U2htKGF0dHJpYnV0ZXMpOwotCi0gIHJldHVybiB0cnVlOwotfQotCi12b2lkIFhTZXJ2ZXJQ
aXhlbEJ1ZmZlcjo6SW5pdFNobShjb25zdCBYV2luZG93QXR0cmlidXRlcyYgYXR0cmlidXRlcykg
ewotICBWaXN1YWwqIGRlZmF1bHRfdmlzdWFsID0gYXR0cmlidXRlcy52aXN1YWw7Ci0gIGludCBk
ZWZhdWx0X2RlcHRoID0gYXR0cmlidXRlcy5kZXB0aDsKLQotICBpbnQgbWFqb3IsIG1pbm9yOwot
ICBCb29sIGhhdmVfcGl4bWFwczsKLSAgaWYgKCFYU2htUXVlcnlWZXJzaW9uKGRpc3BsYXlfLCAm
bWFqb3IsICZtaW5vciwgJmhhdmVfcGl4bWFwcykpIHsKLSAgICAvLyBTaGFyZWQgbWVtb3J5IG5v
dCBzdXBwb3J0ZWQuIENhcHR1cmVSZWN0IHdpbGwgdXNlIHRoZSBYSW1hZ2UgQVBJIGluc3RlYWQu
Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgYm9vbCB1c2luZ19zaG0gPSBmYWxzZTsKLSAgc2htX3Nl
Z21lbnRfaW5mb18gPSBuZXcgWFNobVNlZ21lbnRJbmZvOwotICBzaG1fc2VnbWVudF9pbmZvXy0+
c2htaWQgPSAtMTsKLSAgc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIgPSBudWxscHRyOwotICBz
aG1fc2VnbWVudF9pbmZvXy0+cmVhZE9ubHkgPSBGYWxzZTsKLSAgeF9zaG1faW1hZ2VfID0gWFNo
bUNyZWF0ZUltYWdlKGRpc3BsYXlfLCBkZWZhdWx0X3Zpc3VhbCwgZGVmYXVsdF9kZXB0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpQaXhtYXAsIDAsIHNobV9zZWdtZW50X2lu
Zm9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93X3JlY3RfLndpZHRo
KCksIHdpbmRvd19yZWN0Xy5oZWlnaHQoKSk7Ci0gIGlmICh4X3NobV9pbWFnZV8pIHsKLSAgICBz
aG1fc2VnbWVudF9pbmZvXy0+c2htaWQgPQotICAgICAgICBzaG1nZXQoSVBDX1BSSVZBVEUsIHhf
c2htX2ltYWdlXy0+Ynl0ZXNfcGVyX2xpbmUgKiB4X3NobV9pbWFnZV8tPmhlaWdodCwKLSAgICAg
ICAgICAgICAgIElQQ19DUkVBVCB8IDA2MDApOwotICAgIGlmIChzaG1fc2VnbWVudF9pbmZvXy0+
c2htaWQgIT0gLTEpIHsKLSAgICAgIHZvaWQqIHNobWF0X3Jlc3VsdCA9IHNobWF0KHNobV9zZWdt
ZW50X2luZm9fLT5zaG1pZCwgMCwgMCk7Ci0gICAgICBpZiAoc2htYXRfcmVzdWx0ICE9IHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkgewotICAgICAgICBzaG1fc2VnbWVudF9pbmZvXy0+c2ht
YWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNobWF0X3Jlc3VsdCk7Ci0gICAgICAgIHhf
c2htX2ltYWdlXy0+ZGF0YSA9IHNobV9zZWdtZW50X2luZm9fLT5zaG1hZGRyOwotCi0gICAgICAg
IFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5Xyk7Ci0gICAgICAgIHVzaW5nX3NobSA9IFhT
aG1BdHRhY2goZGlzcGxheV8sIHNobV9zZWdtZW50X2luZm9fKTsKLSAgICAgICAgWFN5bmMoZGlz
cGxheV8sIEZhbHNlKTsKLSAgICAgICAgaWYgKGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlz
YWJsZSgpICE9IDApCi0gICAgICAgICAgdXNpbmdfc2htID0gZmFsc2U7Ci0gICAgICAgIGlmICh1
c2luZ19zaG0pIHsKLSAgICAgICAgICBSVENfTE9HKExTX1ZFUkJPU0UpCi0gICAgICAgICAgICAg
IDw8ICJVc2luZyBYIHNoYXJlZCBtZW1vcnkgc2VnbWVudCAiIDw8IHNobV9zZWdtZW50X2luZm9f
LT5zaG1pZDsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gZ2V0IHNoYXJlZCBtZW1vcnkgc2VnbWVudC4gIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyZm9ybWFuY2UgbWF5IGJlIGRlZ3JhZGVk
LiI7Ci0gICAgfQotICB9Ci0KLSAgaWYgKCF1c2luZ19zaG0pIHsKLSAgICBSVENfTE9HKExTX1dB
Uk5JTkcpCi0gICAgICAgIDw8ICJOb3QgdXNpbmcgc2hhcmVkIG1lbW9yeS4gUGVyZm9ybWFuY2Ug
bWF5IGJlIGRlZ3JhZGVkLiI7Ci0gICAgUmVsZWFzZVNoYXJlZE1lbW9yeVNlZ21lbnQoKTsKLSAg
ICByZXR1cm47Ci0gIH0KLQotICBpZiAoaGF2ZV9waXhtYXBzKQotICAgIGhhdmVfcGl4bWFwcyA9
IEluaXRQaXhtYXBzKGRlZmF1bHRfZGVwdGgpOwotCi0gIHNobWN0bChzaG1fc2VnbWVudF9pbmZv
Xy0+c2htaWQsIElQQ19STUlELCAwKTsKLSAgc2htX3NlZ21lbnRfaW5mb18tPnNobWlkID0gLTE7
Ci0KLSAgUlRDX0xPRyhMU19WRVJCT1NFKSA8PCAiVXNpbmcgWCBzaGFyZWQgbWVtb3J5IGV4dGVu
c2lvbiB2IiA8PCBtYWpvciA8PCAiLiIKLSAgICAgICAgICAgICAgICAgICAgICA8PCBtaW5vciA8
PCAiIHdpdGgiIDw8IChoYXZlX3BpeG1hcHMgPyAiIiA6ICJvdXQiKQotICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIgcGl4bWFwcy4iOwotfQotCi1ib29sIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6SW5p
dFBpeG1hcHMoaW50IGRlcHRoKSB7Ci0gIGlmIChYU2htUGl4bWFwRm9ybWF0KGRpc3BsYXlfKSAh
PSBaUGl4bWFwKQotICAgIHJldHVybiBmYWxzZTsKLQotICB7Ci0gICAgWEVycm9yVHJhcCBlcnJv
cl90cmFwKGRpc3BsYXlfKTsKLSAgICBzaG1fcGl4bWFwXyA9IFhTaG1DcmVhdGVQaXhtYXAoCi0g
ICAgICAgIGRpc3BsYXlfLCB3aW5kb3dfLCBzaG1fc2VnbWVudF9pbmZvXy0+c2htYWRkciwgc2ht
X3NlZ21lbnRfaW5mb18sCi0gICAgICAgIHdpbmRvd19yZWN0Xy53aWR0aCgpLCB3aW5kb3dfcmVj
dF8uaGVpZ2h0KCksIGRlcHRoKTsKLSAgICBYU3luYyhkaXNwbGF5XywgRmFsc2UpOwotICAgIGlm
IChlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKSB7Ci0gICAgICAvLyB8
c2htX3BpeG1hcF98IGlzIG5vdCBub3QgdmFsaWQgYmVjYXVzZSB0aGUgcmVxdWVzdCB3YXMgbm90
IHByb2Nlc3NlZAotICAgICAgLy8gYnkgdGhlIFggU2VydmVyLCBzbyB6ZXJvIGl0LgotICAgICAg
c2htX3BpeG1hcF8gPSAwOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotCi0gIHsK
LSAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheV8pOwotICAgIFhHQ1ZhbHVlcyBzaG1f
Z2NfdmFsdWVzOwotICAgIHNobV9nY192YWx1ZXMuc3Vid2luZG93X21vZGUgPSBJbmNsdWRlSW5m
ZXJpb3JzOwotICAgIHNobV9nY192YWx1ZXMuZ3JhcGhpY3NfZXhwb3N1cmVzID0gRmFsc2U7Ci0g
ICAgc2htX2djXyA9IFhDcmVhdGVHQyhkaXNwbGF5Xywgd2luZG93XywKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEdDU3Vid2luZG93TW9kZSB8IEdDR3JhcGhpY3NFeHBvc3VyZXMsICZzaG1fZ2Nf
dmFsdWVzKTsKLSAgICBYU3luYyhkaXNwbGF5XywgRmFsc2UpOwotICAgIGlmIChlcnJvcl90cmFw
LkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKSB7Ci0gICAgICBYRnJlZVBpeG1hcChkaXNw
bGF5Xywgc2htX3BpeG1hcF8pOwotICAgICAgc2htX3BpeG1hcF8gPSAwOwotICAgICAgc2htX2dj
XyA9IDA7ICAvLyBTZWUgc2htX3BpeG1hcF8gY29tbWVudCBhYm92ZS4KLSAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBYU2VydmVyUGl4
ZWxCdWZmZXI6OklzV2luZG93VmFsaWQoKSBjb25zdCB7Ci0gIFhXaW5kb3dBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXM7Ci0gIHsKLSAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheV8pOwotICAg
IGlmICghWEdldFdpbmRvd0F0dHJpYnV0ZXMoZGlzcGxheV8sIHdpbmRvd18sICZhdHRyaWJ1dGVz
KSB8fAotICAgICAgICBlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKSB7
Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi12
b2lkIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6U3luY2hyb25pemUoKSB7Ci0gIGlmIChzaG1fc2VnbWVu
dF9pbmZvXyAmJiAhc2htX3BpeG1hcF8pIHsKLSAgICAvLyBYU2htR2V0SW1hZ2UgY2FuIGZhaWwg
aWYgdGhlIGRpc3BsYXkgaXMgYmVpbmcgcmVjb25maWd1cmVkLgotICAgIFhFcnJvclRyYXAgZXJy
b3JfdHJhcChkaXNwbGF5Xyk7Ci0gICAgLy8gWFNobUdldEltYWdlIGZhaWxzIGlmIHRoZSB3aW5k
b3cgaXMgcGFydGlhbGx5IG91dCBvZiBzY3JlZW4uCi0gICAgeHNobV9nZXRfaW1hZ2Vfc3VjY2Vl
ZGVkXyA9Ci0gICAgICAgIFhTaG1HZXRJbWFnZShkaXNwbGF5Xywgd2luZG93XywgeF9zaG1faW1h
Z2VfLCAwLCAwLCBBbGxQbGFuZXMpOwotICB9Ci19Ci0KLWJvb2wgWFNlcnZlclBpeGVsQnVmZmVy
OjpDYXB0dXJlUmVjdChjb25zdCBEZXNrdG9wUmVjdCYgcmVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEZXNrdG9wRnJhbWUqIGZyYW1lKSB7Ci0gIFJUQ19EQ0hFQ0tf
TEUocmVjdC5yaWdodCgpLCB3aW5kb3dfcmVjdF8ud2lkdGgoKSk7Ci0gIFJUQ19EQ0hFQ0tfTEUo
cmVjdC5ib3R0b20oKSwgd2luZG93X3JlY3RfLmhlaWdodCgpKTsKLQotICBYSW1hZ2UqIGltYWdl
OwotICB1aW50OF90KiBkYXRhOwotCi0gIGlmIChzaG1fc2VnbWVudF9pbmZvXyAmJiAoc2htX3Bp
eG1hcF8gfHwgeHNobV9nZXRfaW1hZ2Vfc3VjY2VlZGVkXykpIHsKLSAgICBpZiAoc2htX3BpeG1h
cF8pIHsKLSAgICAgIFhDb3B5QXJlYShkaXNwbGF5Xywgd2luZG93Xywgc2htX3BpeG1hcF8sIHNo
bV9nY18sIHJlY3QubGVmdCgpLAotICAgICAgICAgICAgICAgIHJlY3QudG9wKCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSwgcmVjdC5sZWZ0KCksCi0gICAgICAgICAgICAgICAgcmVjdC50
b3AoKSk7Ci0gICAgICBYU3luYyhkaXNwbGF5XywgRmFsc2UpOwotICAgIH0KLQotICAgIGltYWdl
ID0geF9zaG1faW1hZ2VfOwotICAgIGRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihp
bWFnZS0+ZGF0YSkgKwotICAgICAgICAgICByZWN0LnRvcCgpICogaW1hZ2UtPmJ5dGVzX3Blcl9s
aW5lICsKLSAgICAgICAgICAgcmVjdC5sZWZ0KCkgKiBpbWFnZS0+Yml0c19wZXJfcGl4ZWwgLyA4
OwotCi0gIH0gZWxzZSB7Ci0gICAgaWYgKHhfaW1hZ2VfKQotICAgICAgWERlc3Ryb3lJbWFnZSh4
X2ltYWdlXyk7Ci0gICAgeF9pbWFnZV8gPSBYR2V0SW1hZ2UoZGlzcGxheV8sIHdpbmRvd18sIHJl
Y3QubGVmdCgpLCByZWN0LnRvcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSwgQWxsUGxhbmVzLCBaUGl4bWFwKTsKLSAgICBpZiAoIXhfaW1h
Z2VfKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaW1hZ2UgPSB4X2ltYWdlXzsKLSAgICBk
YXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW1hZ2UtPmRhdGEpOwotICB9Ci0KLSAg
aWYgKElzWEltYWdlUkdCRm9ybWF0KGltYWdlKSkgewotICAgIEZhc3RCbGl0KGltYWdlLCBkYXRh
LCByZWN0LCBmcmFtZSk7Ci0gIH0gZWxzZSB7Ci0gICAgU2xvd0JsaXQoaW1hZ2UsIGRhdGEsIHJl
Y3QsIGZyYW1lKTsKLSAgfQotCi0gIHJldHVybiB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdlMjA5NDVmM2Q1MjljYWZlZTBiZTM2NTYwNGE0ZmYzNWViOTllNDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDEx
L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAot
LyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
Ci0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgotICovCi0KLS8vIERvbid0IGluY2x1ZGUgdGhpcyBmaWxlIGluIGFu
eSAuaCBmaWxlcyBiZWNhdXNlIGl0IHB1bGxzIGluIHNvbWUgWCBoZWFkZXJzLgotCi0jaWZuZGVm
IE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1gxMV9YX1NFUlZFUl9QSVhFTF9CVUZGRVJfSF8KLSNk
ZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDExX1hfU0VSVkVSX1BJWEVMX0JVRkZFUl9I
XwotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9nZW9tZXRyeS5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLQotI2luY2x1ZGUgPFgx
MS9YdXRpbC5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hTaG0uaD4KLQotbmFtZXNwYWNl
IHdlYnJ0YyB7Ci0KLWNsYXNzIERlc2t0b3BGcmFtZTsKLQotLy8gQSBjbGFzcyB0byBhbGxvdyB0
aGUgWCBzZXJ2ZXIncyBwaXhlbCBidWZmZXIgdG8gYmUgYWNjZXNzZWQgYXMgZWZmaWNpZW50bHkK
LS8vIGFzIHBvc3NpYmxlLgotY2xhc3MgWFNlcnZlclBpeGVsQnVmZmVyIHsKLSBwdWJsaWM6Ci0g
IFhTZXJ2ZXJQaXhlbEJ1ZmZlcigpOwotICB+WFNlcnZlclBpeGVsQnVmZmVyKCk7Ci0KLSAgdm9p
ZCBSZWxlYXNlKCk7Ci0KLSAgLy8gQWxsb2NhdGUgKG9yIHJlYWxsb2NhdGUpIHRoZSBwaXhlbCBi
dWZmZXIgZm9yIHx3aW5kb3d8LiBSZXR1cm5zIGZhbHNlIGluCi0gIC8vIGNhc2Ugb2YgYW4gZXJy
b3IgKGUuZy4gd2luZG93IGRvZXNuJ3QgZXhpc3QpLgotICBib29sIEluaXQoRGlzcGxheSogZGlz
cGxheSwgV2luZG93IHdpbmRvdyk7Ci0KLSAgYm9vbCBpc19pbml0aWFsaXplZCgpIHsgcmV0dXJu
IHdpbmRvd18gIT0gMDsgfQotCi0gIC8vIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHdpbmRvdyB0
aGUgYnVmZmVyIHdhcyBpbml0aWFsaXplZCBmb3IuCi0gIERlc2t0b3BTaXplIHdpbmRvd19zaXpl
KCkgeyByZXR1cm4gd2luZG93X3JlY3RfLnNpemUoKTsgfQotCi0gIC8vIFJldHVybnMgdGhlIHJl
Y3RhbmdsZSBvZiB0aGUgd2luZG93IHRoZSBidWZmZXIgd2FzIGluaXRpYWxpemVkIGZvci4KLSAg
Y29uc3QgRGVza3RvcFJlY3QmIHdpbmRvd19yZWN0KCkgeyByZXR1cm4gd2luZG93X3JlY3RfOyB9
Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgY2FuIGJlIGZvdW5kLgotICBib29s
IElzV2luZG93VmFsaWQoKSBjb25zdDsKLQotICAvLyBJZiBzaGFyZWQgbWVtb3J5IGlzIGJlaW5n
IHVzZWQgd2l0aG91dCBwaXhtYXBzLCBzeW5jaHJvbml6ZSB0aGlzIHBpeGVsCi0gIC8vIGJ1ZmZl
ciB3aXRoIHRoZSByb290IHdpbmRvdyBjb250ZW50cyAob3RoZXJ3aXNlLCB0aGlzIGlzIGEgbm8t
b3ApLgotICAvLyBUaGlzIGlzIHRvIGF2b2lkIGRvaW5nIGEgZnVsbC1zY3JlZW4gY2FwdHVyZSBm
b3IgZWFjaCBpbmRpdmlkdWFsCi0gIC8vIHJlY3RhbmdsZSBpbiB0aGUgY2FwdHVyZSBsaXN0LCB3
aGVuIGl0IG9ubHkgbmVlZHMgdG8gYmUgZG9uZSBvbmNlIGF0IHRoZQotICAvLyBiZWdpbm5pbmcu
Ci0gIHZvaWQgU3luY2hyb25pemUoKTsKLQotICAvLyBDYXB0dXJlIHRoZSBzcGVjaWZpZWQgcmVj
dGFuZ2xlIGFuZCBzdG9yZXMgaXQgaW4gdGhlIHxmcmFtZXwuIEluIHRoZSBjYXNlCi0gIC8vIHdo
ZXJlIHRoZSBmdWxsLXNjcmVlbiBkYXRhIGlzIGNhcHR1cmVkIGJ5IFN5bmNocm9uaXplKCksIHRo
aXMgc2ltcGx5Ci0gIC8vIHJldHVybnMgdGhlIHBvaW50ZXIgd2l0aG91dCBkb2luZyBhbnkgbW9y
ZSB3b3JrLiBUaGUgY2FsbGVyIG11c3QgZW5zdXJlCi0gIC8vIHRoYXQgfHJlY3R8IGlzIG5vdCBs
YXJnZXIgdGhhbiB3aW5kb3dfc2l6ZSgpLgotICBib29sIENhcHR1cmVSZWN0KGNvbnN0IERlc2t0
b3BSZWN0JiByZWN0LCBEZXNrdG9wRnJhbWUqIGZyYW1lKTsKLQotIHByaXZhdGU6Ci0gIHZvaWQg
UmVsZWFzZVNoYXJlZE1lbW9yeVNlZ21lbnQoKTsKLQotICB2b2lkIEluaXRTaG0oY29uc3QgWFdp
bmRvd0F0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpOwotICBib29sIEluaXRQaXhtYXBzKGludCBkZXB0
aCk7Ci0KLSAgRGlzcGxheSogZGlzcGxheV8gPSBudWxscHRyOwotICBXaW5kb3cgd2luZG93XyA9
IDA7Ci0gIERlc2t0b3BSZWN0IHdpbmRvd19yZWN0XzsKLSAgWEltYWdlKiB4X2ltYWdlXyA9IG51
bGxwdHI7Ci0gIFhTaG1TZWdtZW50SW5mbyogc2htX3NlZ21lbnRfaW5mb18gPSBudWxscHRyOwot
ICBYSW1hZ2UqIHhfc2htX2ltYWdlXyA9IG51bGxwdHI7Ci0gIFBpeG1hcCBzaG1fcGl4bWFwXyA9
IDA7Ci0gIEdDIHNobV9nY18gPSBudWxscHRyOwotICBib29sIHhzaG1fZ2V0X2ltYWdlX3N1Y2Nl
ZWRlZF8gPSBmYWxzZTsKLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFhTZXJ2ZXJQ
aXhlbEJ1ZmZlcik7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8g
TU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDExX1hfU0VSVkVSX1BJWEVMX0JVRkZFUl9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5j
YwppbmRleCA0YWQ1ZDE0NDRlOWM1N2E3MTIxNWI1OTY5MDM3YWYzNzJkNWUyNWE3Li44MGViYTJl
MzA1MWNkMmQxZmRmMGFhNTFmNjJmNTA0OGRhMDVlYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2Nv
bW1vbl90eXBlcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5jYwpAQCAtMTEsNiArMTEs
NyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAK
ICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHV0aWxp
dHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMu
aAppbmRleCA5OGZmNzY3MzExMGNkMDM5ZWM2Y2QzMjU0N2FlNzE4ZDljYmRkYTdjLi5lMDU4Y2M4
NGU2NmZmNzk1NDVhZmUwZTA4M2IzMTEyNDZhODlmM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2Nv
bW1vbl90eXBlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgKQEAgLTE5LDYgKzE5LDcg
QEAKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlc19wdWJsaWMu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2ZlY190eXBlcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApA
QCAtMzMsNyArMzQsNyBAQCBzdHJ1Y3QgV2ViUnRjUlRQSGVhZGVyIHsKICAgaW50NjRfdCBudHBf
dGltZV9tczsKIH07CiAKLWNsYXNzIFJUUEZyYWdtZW50YXRpb25IZWFkZXIgeworY2xhc3MgUlRD
X0VYUE9SVCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyIHsKICBwdWJsaWM6CiAgIFJUUEZyYWdtZW50
YXRpb25IZWFkZXIoKTsKICAgUlRQRnJhZ21lbnRhdGlvbkhlYWRlcihjb25zdCBSVFBGcmFnbWVu
dGF0aW9uSGVhZGVyJikgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9CVUlMRC5nbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL0JVSUxELmdu
CmluZGV4IGEwNjIzM2FkOTAxMzFiNDA3YjAxOTY4NGVhZDgxZmQ3MzMwZDBhYTQuLjliYzYxOTM2
ZjE2ODIyYjdkOGVhYjM3YTUwZmE1NWJmOGZhMzY1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL0JVSUxELmduCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFj
aW5nL0JVSUxELmduCkBAIC0yOSw3ICsyOSw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicGFjaW5n
IikgewogICBkZXBzID0gWwogICAgICI6aW50ZXJ2YWxfYnVkZ2V0IiwKICAgICAiLi46bW9kdWxl
X2FwaSIsCi0gICAgIi4uLy4uLzp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBpL3RyYW5z
cG9ydDpuZXR3b3JrX2NvbnRyb2wiLAogICAgICIuLi8uLi9sb2dnaW5nOnJ0Y19ldmVudF9id2Ui
LAogICAgICIuLi8uLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKQEAgLTU2LDcgKzU1LDYg
QEAgcnRjX3NvdXJjZV9zZXQoImludGVydmFsX2J1ZGdldCIpIHsKICAgXQogCiAgIGRlcHMgPSBb
Ci0gICAgIi4uLy4uLzp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tz
IiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICBdCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Bh
Y2luZy9iaXRyYXRlX3Byb2Jlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmNjCmluZGV4IGNiZjFkMmI5
N2VmYjkyNzJlYjI1OWNhZWIwZGMzY2RlOTMyMDVmYTAuLjRmZjdjMGQ1ODNkZDFkNzA4ZGQ5MDAz
NGYxMDA4ZTAxM2VkMWFiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2Jp
dHJhdGVfcHJvYmVyLmNjCkBAIC0xMyw5ICsxMyw5IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
CiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9jbHVzdGVyX2NyZWF0ZWQuaCIKICNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgotI2luY2x1ZGUgIm1vZHVs
ZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIApAQCAtOTYsOCArOTYsOSBAQCB2b2lkIEJp
dHJhdGVQcm9iZXI6OkNyZWF0ZVByb2JlQ2x1c3RlcihpbnQgYml0cmF0ZV9icHMsIGludDY0X3Qg
bm93X21zKSB7CiAgIFByb2JlQ2x1c3RlciBjbHVzdGVyOwogICBjbHVzdGVyLnRpbWVfY3JlYXRl
ZF9tcyA9IG5vd19tczsKICAgY2x1c3Rlci5wYWNlX2luZm8ucHJvYmVfY2x1c3Rlcl9taW5fcHJv
YmVzID0ga01pblByb2JlUGFja2V0c1NlbnQ7Ci0gIGNsdXN0ZXIucGFjZV9pbmZvLnByb2JlX2Ns
dXN0ZXJfbWluX2J5dGVzID0KLSAgICAgIGJpdHJhdGVfYnBzICoga01pblByb2JlRHVyYXRpb25N
cyAvIDgwMDA7CisgIGNsdXN0ZXIucGFjZV9pbmZvLnByb2JlX2NsdXN0ZXJfbWluX2J5dGVzID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4oCisgICAgICBzdGF0aWNfY2FzdDxpbnQ2NF90PihiaXRyYXRl
X2JwcykgKiBrTWluUHJvYmVEdXJhdGlvbk1zIC8gODAwMCk7CisgIFJUQ19EQ0hFQ0tfR0UoY2x1
c3Rlci5wYWNlX2luZm8ucHJvYmVfY2x1c3Rlcl9taW5fYnl0ZXMsIDApOwogICBjbHVzdGVyLnBh
Y2VfaW5mby5zZW5kX2JpdHJhdGVfYnBzID0gYml0cmF0ZV9icHM7CiAgIGNsdXN0ZXIucGFjZV9p
bmZvLnByb2JlX2NsdXN0ZXJfaWQgPSBuZXh0X2NsdXN0ZXJfaWRfKys7CiAgIGNsdXN0ZXJzXy5w
dXNoKGNsdXN0ZXIpOwpAQCAtMTI2LDkgKzEyNyw5IEBAIGludCBCaXRyYXRlUHJvYmVyOjpUaW1l
VW50aWxOZXh0UHJvYmUoaW50NjRfdCBub3dfbXMpIHsKICAgaWYgKG5leHRfcHJvYmVfdGltZV9t
c18gPj0gMCkgewogICAgIHRpbWVfdW50aWxfcHJvYmVfbXMgPSBuZXh0X3Byb2JlX3RpbWVfbXNf
IC0gbm93X21zOwogICAgIGlmICh0aW1lX3VudGlsX3Byb2JlX21zIDwgLWtNYXhQcm9iZURlbGF5
TXMpIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlByb2JlIGRlbGF5IHRvbyBoaWdo
IgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIChuZXh0X21zOiIgPDwgbmV4dF9wcm9i
ZV90aW1lX21zXwotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBub3dfbXM6ICIgPDwg
bm93X21zIDw8ICIpIjsKKyAgICAgIFJUQ19ETE9HKExTX1dBUk5JTkcpIDw8ICJQcm9iZSBkZWxh
eSB0b28gaGlnaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgKG5leHRfbXM6IiA8
PCBuZXh0X3Byb2JlX3RpbWVfbXNfCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBu
b3dfbXM6ICIgPDwgbm93X21zIDw8ICIpIjsKICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5oCmluZGV4IGIy
NTQ4YzAwNmRlODNmNWU1OTdkMzY1MmRmNDhmZWIyMGMyNWM2N2MuLmJiOTgxMDBkZmFjNWM2Yzc0
OTY2Y2VjNjA1OGM3MjM0NzlhZDU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNp
bmcvYml0cmF0ZV9wcm9iZXIuaApAQCAtMTEsMTAgKzExLDExIEBACiAjaWZuZGVmIE1PRFVMRVNf
UEFDSU5HX0JJVFJBVEVfUFJPQkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfUEFDSU5HX0JJVFJBVEVf
UFJPQkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNp
bmNsdWRlIDxxdWV1ZT4KIAogI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogY2xhc3MgUnRjRXZlbnRMb2c7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRl
X3Byb2Jlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyX3VuaXR0ZXN0LmNjCmluZGV4IGRj
NTk2OTgyZGIwMjJiM2E5MzM0YTFlY2JiOWEwMzg1YmNmMTAyNDcuLjk1ZDI2NTkzY2JkZGI5MWZj
NjMyNWY1MmY0MDI0NzlhOGY5MDM4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyX3VuaXR0ZXN0LmNjCkBAIC0xNDcsNiArMTQ3LDI0
IEBAIFRFU1QoQml0cmF0ZVByb2JlclRlc3QsIFNjYWxlQnl0ZXNVc2VkRm9yUHJvYmluZykgewog
ICBFWFBFQ1RfRkFMU0UocHJvYmVyLklzUHJvYmluZygpKTsKIH0KIAorVEVTVChCaXRyYXRlUHJv
YmVyVGVzdCwgSGlnaEJpdHJhdGVQcm9iaW5nKSB7CisgIEJpdHJhdGVQcm9iZXIgcHJvYmVyOwor
ICBjb25zdGV4cHIgaW50IGtCaXRyYXRlQnBzID0gMTAwMDAwMDAwMDsgIC8vIDEgR2Jwcy4KKyAg
Y29uc3RleHByIGludCBrUGFja2V0U2l6ZUJ5dGVzID0gMTAwMDsKKyAgY29uc3RleHByIGludCBr
RXhwZWN0ZWRCeXRlc1NlbnQgPSAoa0JpdHJhdGVCcHMgLyA4MDAwKSAqIDE1OworCisgIHByb2Jl
ci5DcmVhdGVQcm9iZUNsdXN0ZXIoa0JpdHJhdGVCcHMsIDApOworICBwcm9iZXIuT25JbmNvbWlu
Z1BhY2tldChrUGFja2V0U2l6ZUJ5dGVzKTsKKyAgaW50IGJ5dGVzX3NlbnQgPSAwOworICB3aGls
ZSAoYnl0ZXNfc2VudCA8IGtFeHBlY3RlZEJ5dGVzU2VudCkgeworICAgIEFTU0VSVF9UUlVFKHBy
b2Jlci5Jc1Byb2JpbmcoKSk7CisgICAgcHJvYmVyLlByb2JlU2VudCgwLCBrUGFja2V0U2l6ZUJ5
dGVzKTsKKyAgICBieXRlc19zZW50ICs9IGtQYWNrZXRTaXplQnl0ZXM7CisgIH0KKworICBFWFBF
Q1RfRkFMU0UocHJvYmVyLklzUHJvYmluZygpKTsKK30KKwogVEVTVChCaXRyYXRlUHJvYmVyVGVz
dCwgUHJvYmVDbHVzdGVyVGltZW91dCkgewogICBCaXRyYXRlUHJvYmVyIHByb2JlcjsKICAgY29u
c3RleHByIGludCBrQml0cmF0ZUJwcyA9IDMwMDAwMDsgIC8vIDMwMCBrYnBzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2lu
Zy9pbnRlcnZhbF9idWRnZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcGFjaW5nL2ludGVydmFsX2J1ZGdldC5oCmluZGV4IDg4MGZlNzg0YmE3
NGYwN2VlODEyZTk0ZGZlYTljYWQ1ZWYzZDVjZTMuLmQwOWIwNmUzNDAzNGFlMjQzZjZiZjFhMTBj
MmZkZGM2NDVjZmMxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2ludGVydmFsX2J1ZGdldC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2ludGVy
dmFsX2J1ZGdldC5oCkBAIC0xMSw3ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfUEFDSU5HX0lO
VEVSVkFMX0JVREdFVF9IXwogI2RlZmluZSBNT0RVTEVTX1BBQ0lOR19JTlRFUlZBTF9CVURHRVRf
SF8KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuY2MK
aW5kZXggOGNjNDQyYzIyOGU4NDlmZGZiZjJkZDZiOGViZmIzM2VmZDE3MzA3ZS4uN2UwYWM3ODFl
MmI3ODRjYjdlOWE2OGExNTk5MjYwOTcxY2RhMzU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcGFjZWRfc2VuZGVy
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5jYwpAQCAtMTEsMTUgKzExLDExIEBACiAjaW5jbHVkZSAi
bW9kdWxlcy9wYWNpbmcvcGFjZWRfc2VuZGVyLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0j
aW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHF1ZXVlPgotI2luY2x1ZGUgPHNldD4KICNpbmNsdWRl
IDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0
ZWN0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9wYWNpbmcvaW50ZXJ2YWxfYnVkZ2V0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy91dGls
aXR5L2luY2x1ZGUvcHJvY2Vzc190aHJlYWQuaCIKQEAgLTU4LDkgKzU0LDkgQEAgUGFjZWRTZW5k
ZXI6OlBhY2VkU2VuZGVyKGNvbnN0IENsb2NrKiBjbG9jaywKICAgICAgIHZpZGVvX2Jsb2Nrc19h
dWRpb18oIWZpZWxkX3RyaWFsOjpJc0Rpc2FibGVkKCJXZWJSVEMtUGFjZXItQmxvY2tBdWRpbyIp
KSwKICAgICAgIGxhc3RfdGltZXN0YW1wX21zXyhjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygp
KSwKICAgICAgIHBhdXNlZF8oZmFsc2UpLAotICAgICAgbWVkaWFfYnVkZ2V0XyhhYnNsOjptYWtl
X3VuaXF1ZTxJbnRlcnZhbEJ1ZGdldD4oMCkpLAotICAgICAgcGFkZGluZ19idWRnZXRfKGFic2w6
Om1ha2VfdW5pcXVlPEludGVydmFsQnVkZ2V0PigwKSksCi0gICAgICBwcm9iZXJfKGFic2w6Om1h
a2VfdW5pcXVlPEJpdHJhdGVQcm9iZXI+KGV2ZW50X2xvZykpLAorICAgICAgbWVkaWFfYnVkZ2V0
XygwKSwKKyAgICAgIHBhZGRpbmdfYnVkZ2V0XygwKSwKKyAgICAgIHByb2Jlcl8oZXZlbnRfbG9n
KSwKICAgICAgIHByb2Jpbmdfc2VuZF9mYWlsdXJlXyhmYWxzZSksCiAgICAgICBlc3RpbWF0ZWRf
Yml0cmF0ZV9icHNfKDApLAogICAgICAgbWluX3NlbmRfYml0cmF0ZV9rYnBzXygwdSksCkBAIC02
OSw3ICs2NSw3IEBAIFBhY2VkU2VuZGVyOjpQYWNlZFNlbmRlcihjb25zdCBDbG9jayogY2xvY2ss
CiAgICAgICB0aW1lX2xhc3RfcHJvY2Vzc191c18oY2xvY2stPlRpbWVJbk1pY3Jvc2Vjb25kcygp
KSwKICAgICAgIGxhc3Rfc2VuZF90aW1lX3VzXyhjbG9jay0+VGltZUluTWljcm9zZWNvbmRzKCkp
LAogICAgICAgZmlyc3Rfc2VudF9wYWNrZXRfbXNfKC0xKSwKLSAgICAgIHBhY2tldHNfKGNsb2Nr
KSwKKyAgICAgIHBhY2tldHNfKGNsb2NrLT5UaW1lSW5NaWNyb3NlY29uZHMoKSksCiAgICAgICBw
YWNrZXRfY291bnRlcl8oMCksCiAgICAgICBwYWNpbmdfZmFjdG9yXyhrRGVmYXVsdFBhY2VNdWx0
aXBsaWVyKSwKICAgICAgIHF1ZXVlX3RpbWVfbGltaXQoa01heFF1ZXVlTGVuZ3RoTXMpLApAQCAt
ODQsNyArODAsNyBAQCBQYWNlZFNlbmRlcjo6flBhY2VkU2VuZGVyKCkge30KIAogdm9pZCBQYWNl
ZFNlbmRlcjo6Q3JlYXRlUHJvYmVDbHVzdGVyKGludCBiaXRyYXRlX2JwcykgewogICBydGM6OkNy
aXRTY29wZSBjcygmY3JpdHNlY3RfKTsKLSAgcHJvYmVyXy0+Q3JlYXRlUHJvYmVDbHVzdGVyKGJp
dHJhdGVfYnBzLCBUaW1lTWlsbGlzZWNvbmRzKCkpOworICBwcm9iZXJfLkNyZWF0ZVByb2JlQ2x1
c3RlcihiaXRyYXRlX2JwcywgVGltZU1pbGxpc2Vjb25kcygpKTsKIH0KIAogdm9pZCBQYWNlZFNl
bmRlcjo6UGF1c2UoKSB7CkBAIC0xNDksNyArMTQ1LDcgQEAgaW50NjRfdCBQYWNlZFNlbmRlcjo6
VGltZU1pbGxpc2Vjb25kcygpIGNvbnN0IHsKIHZvaWQgUGFjZWRTZW5kZXI6OlNldFByb2JpbmdF
bmFibGVkKGJvb2wgZW5hYmxlZCkgewogICBydGM6OkNyaXRTY29wZSBjcygmY3JpdHNlY3RfKTsK
ICAgUlRDX0NIRUNLX0VRKDAsIHBhY2tldF9jb3VudGVyXyk7Ci0gIHByb2Jlcl8tPlNldEVuYWJs
ZWQoZW5hYmxlZCk7CisgIHByb2Jlcl8uU2V0RW5hYmxlZChlbmFibGVkKTsKIH0KIAogdm9pZCBQ
YWNlZFNlbmRlcjo6U2V0RXN0aW1hdGVkQml0cmF0ZSh1aW50MzJfdCBiaXRyYXRlX2JwcykgewpA
QCAtMTU3LDcgKzE1Myw3IEBAIHZvaWQgUGFjZWRTZW5kZXI6OlNldEVzdGltYXRlZEJpdHJhdGUo
dWludDMyX3QgYml0cmF0ZV9icHMpIHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiUGFjZWRT
ZW5kZXIgaXMgbm90IGRlc2lnbmVkIHRvIGhhbmRsZSAwIGJpdHJhdGUuIjsKICAgcnRjOjpDcml0
U2NvcGUgY3MoJmNyaXRzZWN0Xyk7CiAgIGVzdGltYXRlZF9iaXRyYXRlX2Jwc18gPSBiaXRyYXRl
X2JwczsKLSAgcGFkZGluZ19idWRnZXRfLT5zZXRfdGFyZ2V0X3JhdGVfa2JwcygKKyAgcGFkZGlu
Z19idWRnZXRfLnNldF90YXJnZXRfcmF0ZV9rYnBzKAogICAgICAgc3RkOjptaW4oZXN0aW1hdGVk
X2JpdHJhdGVfYnBzXyAvIDEwMDAsIG1heF9wYWRkaW5nX2JpdHJhdGVfa2Jwc18pKTsKICAgcGFj
aW5nX2JpdHJhdGVfa2Jwc18gPQogICAgICAgc3RkOjptYXgobWluX3NlbmRfYml0cmF0ZV9rYnBz
XywgZXN0aW1hdGVkX2JpdHJhdGVfYnBzXyAvIDEwMDApICoKQEAgLTE3Myw3ICsxNjksNyBAQCB2
b2lkIFBhY2VkU2VuZGVyOjpTZXRTZW5kQml0cmF0ZUxpbWl0cyhpbnQgbWluX3NlbmRfYml0cmF0
ZV9icHMsCiAgICAgICBzdGQ6Om1heChtaW5fc2VuZF9iaXRyYXRlX2ticHNfLCBlc3RpbWF0ZWRf
Yml0cmF0ZV9icHNfIC8gMTAwMCkgKgogICAgICAgcGFjaW5nX2ZhY3Rvcl87CiAgIG1heF9wYWRk
aW5nX2JpdHJhdGVfa2Jwc18gPSBwYWRkaW5nX2JpdHJhdGUgLyAxMDAwOwotICBwYWRkaW5nX2J1
ZGdldF8tPnNldF90YXJnZXRfcmF0ZV9rYnBzKAorICBwYWRkaW5nX2J1ZGdldF8uc2V0X3Rhcmdl
dF9yYXRlX2ticHMoCiAgICAgICBzdGQ6Om1pbihlc3RpbWF0ZWRfYml0cmF0ZV9icHNfIC8gMTAw
MCwgbWF4X3BhZGRpbmdfYml0cmF0ZV9rYnBzXykpOwogfQogCkBAIC0xODIsNyArMTc4LDcgQEAg
dm9pZCBQYWNlZFNlbmRlcjo6U2V0UGFjaW5nUmF0ZXModWludDMyX3QgcGFjaW5nX3JhdGVfYnBz
LAogICBydGM6OkNyaXRTY29wZSBjcygmY3JpdHNlY3RfKTsKICAgUlRDX0RDSEVDSyhwYWNpbmdf
cmF0ZV9icHMgPiAwKTsKICAgcGFjaW5nX2JpdHJhdGVfa2Jwc18gPSBwYWNpbmdfcmF0ZV9icHMg
LyAxMDAwOwotICBwYWRkaW5nX2J1ZGdldF8tPnNldF90YXJnZXRfcmF0ZV9rYnBzKHBhZGRpbmdf
cmF0ZV9icHMgLyAxMDAwKTsKKyAgcGFkZGluZ19idWRnZXRfLnNldF90YXJnZXRfcmF0ZV9rYnBz
KHBhZGRpbmdfcmF0ZV9icHMgLyAxMDAwKTsKIH0KIAogdm9pZCBQYWNlZFNlbmRlcjo6SW5zZXJ0
UGFja2V0KFJ0cFBhY2tldFNlbmRlcjo6UHJpb3JpdHkgcHJpb3JpdHksCkBAIC0xOTYsNyArMTky
LDcgQEAgdm9pZCBQYWNlZFNlbmRlcjo6SW5zZXJ0UGFja2V0KFJ0cFBhY2tldFNlbmRlcjo6UHJp
b3JpdHkgcHJpb3JpdHksCiAgICAgICA8PCAiU2V0UGFjaW5nUmF0ZSBtdXN0IGJlIGNhbGxlZCBi
ZWZvcmUgSW5zZXJ0UGFja2V0LiI7CiAKICAgaW50NjRfdCBub3dfbXMgPSBUaW1lTWlsbGlzZWNv
bmRzKCk7Ci0gIHByb2Jlcl8tPk9uSW5jb21pbmdQYWNrZXQoYnl0ZXMpOworICBwcm9iZXJfLk9u
SW5jb21pbmdQYWNrZXQoYnl0ZXMpOwogCiAgIGlmIChjYXB0dXJlX3RpbWVfbXMgPCAwKQogICAg
IGNhcHR1cmVfdGltZV9tcyA9IG5vd19tczsKQEAgLTI1NCwxNyArMjUwLDE1IEBAIGludDY0X3Qg
UGFjZWRTZW5kZXI6OlRpbWVVbnRpbE5leHRQcm9jZXNzKCkgewogICBpZiAocGF1c2VkXykKICAg
ICByZXR1cm4gc3RkOjptYXg8aW50NjRfdD4oa1BhdXNlZFByb2Nlc3NJbnRlcnZhbE1zIC0gZWxh
cHNlZF90aW1lX21zLCAwKTsKIAotICBpZiAocHJvYmVyXy0+SXNQcm9iaW5nKCkpIHsKLSAgICBp
bnQ2NF90IHJldCA9IHByb2Jlcl8tPlRpbWVVbnRpbE5leHRQcm9iZShUaW1lTWlsbGlzZWNvbmRz
KCkpOworICBpZiAocHJvYmVyXy5Jc1Byb2JpbmcoKSkgeworICAgIGludDY0X3QgcmV0ID0gcHJv
YmVyXy5UaW1lVW50aWxOZXh0UHJvYmUoVGltZU1pbGxpc2Vjb25kcygpKTsKICAgICBpZiAocmV0
ID4gMCB8fCAocmV0ID09IDAgJiYgIXByb2Jpbmdfc2VuZF9mYWlsdXJlXykpCiAgICAgICByZXR1
cm4gcmV0OwogICB9CiAgIHJldHVybiBzdGQ6Om1heDxpbnQ2NF90PihrTWluUGFja2V0TGltaXRN
cyAtIGVsYXBzZWRfdGltZV9tcywgMCk7CiB9CiAKLXZvaWQgUGFjZWRTZW5kZXI6OlByb2Nlc3Mo
KSB7Ci0gIGludDY0X3Qgbm93X3VzID0gY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsKLSAg
cnRjOjpDcml0U2NvcGUgY3MoJmNyaXRzZWN0Xyk7CitpbnQ2NF90IFBhY2VkU2VuZGVyOjpVcGRh
dGVUaW1lQW5kR2V0RWxhcHNlZE1zKGludDY0X3Qgbm93X3VzKSB7CiAgIGludDY0X3QgZWxhcHNl
ZF90aW1lX21zID0gKG5vd191cyAtIHRpbWVfbGFzdF9wcm9jZXNzX3VzXyArIDUwMCkgLyAxMDAw
OwogICB0aW1lX2xhc3RfcHJvY2Vzc191c18gPSBub3dfdXM7CiAgIGlmIChlbGFwc2VkX3RpbWVf
bXMgPiBrTWF4RWxhcHNlZFRpbWVNcykgewpAQCAtMjczLDYgKzI2NywxMCBAQCB2b2lkIFBhY2Vk
U2VuZGVyOjpQcm9jZXNzKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgPDwga01heEVsYXBz
ZWRUaW1lTXMgPDwgIiBtcyI7CiAgICAgZWxhcHNlZF90aW1lX21zID0ga01heEVsYXBzZWRUaW1l
TXM7CiAgIH0KKyAgcmV0dXJuIGVsYXBzZWRfdGltZV9tczsKK30KKworYm9vbCBQYWNlZFNlbmRl
cjo6U2hvdWxkU2VuZEtlZXBhbGl2ZShpbnQ2NF90IG5vd191cykgY29uc3QgewogICBpZiAoc2Vu
ZF9wYWRkaW5nX2lmX3NpbGVudF8gfHwgcGF1c2VkXyB8fCBDb25nZXN0ZWQoKSkgewogICAgIC8v
IFdlIHNlbmQgYSBwYWRkaW5nIHBhY2tldCBldmVyeSA1MDAgbXMgdG8gZW5zdXJlIHdlIHdvbid0
IGdldCBzdHVjayBpbgogICAgIC8vIGNvbmdlc3RlZCBzdGF0ZSBkdWUgdG8gbm8gZmVlZGJhY2sg
YmVpbmcgcmVjZWl2ZWQuCkBAIC0yODEsMTIgKzI3OSwyNSBAQCB2b2lkIFBhY2VkU2VuZGVyOjpQ
cm9jZXNzKCkgewogICAgICAgLy8gV2UgY2FuIG5vdCBzZW5kIHBhZGRpbmcgdW5sZXNzIGEgbm9y
bWFsIHBhY2tldCBoYXMgZmlyc3QgYmVlbiBzZW50LiBJZgogICAgICAgLy8gd2UgZG8sIHRpbWVz
dGFtcHMgZ2V0IG1lc3NlZCB1cC4KICAgICAgIGlmIChwYWNrZXRfY291bnRlcl8gPiAwKSB7Ci0g
ICAgICAgIFBhY2VkUGFja2V0SW5mbyBwYWNpbmdfaW5mbzsKLSAgICAgICAgc2l6ZV90IGJ5dGVz
X3NlbnQgPSBTZW5kUGFkZGluZygxLCBwYWNpbmdfaW5mbyk7Ci0gICAgICAgIGFscl9kZXRlY3Rv
cl8tPk9uQnl0ZXNTZW50KGJ5dGVzX3NlbnQsIG5vd191cyAvIDEwMDApOworICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgIH0KICAgICB9CiAgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IFBhY2VkU2VuZGVyOjpQcm9jZXNzKCkgeworICBydGM6OkNyaXRTY29wZSBjcygmY3JpdHNlY3Rf
KTsKKyAgaW50NjRfdCBub3dfdXMgPSBjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOworICBp
bnQ2NF90IGVsYXBzZWRfdGltZV9tcyA9IFVwZGF0ZVRpbWVBbmRHZXRFbGFwc2VkTXMobm93X3Vz
KTsKKyAgaWYgKFNob3VsZFNlbmRLZWVwYWxpdmUobm93X3VzKSkgeworICAgIGNyaXRzZWN0Xy5M
ZWF2ZSgpOworICAgIHNpemVfdCBieXRlc19zZW50ID0gcGFja2V0X3NlbmRlcl8tPlRpbWVUb1Nl
bmRQYWRkaW5nKDEsIFBhY2VkUGFja2V0SW5mbygpKTsKKyAgICBjcml0c2VjdF8uRW50ZXIoKTsK
KyAgICBPblBhZGRpbmdTZW50KGJ5dGVzX3NlbnQpOworICAgIGFscl9kZXRlY3Rvcl8tPk9uQnl0
ZXNTZW50KGJ5dGVzX3NlbnQsIG5vd191cyAvIDEwMDApOworICB9CisKICAgaWYgKHBhdXNlZF8p
CiAgICAgcmV0dXJuOwogCkBAIC0zMDgsMzUgKzMxOSwzOSBAQCB2b2lkIFBhY2VkU2VuZGVyOjpQ
cm9jZXNzKCkgewogICAgICAgfQogICAgIH0KIAotICAgIG1lZGlhX2J1ZGdldF8tPnNldF90YXJn
ZXRfcmF0ZV9rYnBzKHRhcmdldF9iaXRyYXRlX2ticHMpOworICAgIG1lZGlhX2J1ZGdldF8uc2V0
X3RhcmdldF9yYXRlX2ticHModGFyZ2V0X2JpdHJhdGVfa2Jwcyk7CiAgICAgVXBkYXRlQnVkZ2V0
V2l0aEVsYXBzZWRUaW1lKGVsYXBzZWRfdGltZV9tcyk7CiAgIH0KIAotICBib29sIGlzX3Byb2Jp
bmcgPSBwcm9iZXJfLT5Jc1Byb2JpbmcoKTsKKyAgYm9vbCBpc19wcm9iaW5nID0gcHJvYmVyXy5J
c1Byb2JpbmcoKTsKICAgUGFjZWRQYWNrZXRJbmZvIHBhY2luZ19pbmZvOwogICBzaXplX3QgYnl0
ZXNfc2VudCA9IDA7CiAgIHNpemVfdCByZWNvbW1lbmRlZF9wcm9iZV9zaXplID0gMDsKICAgaWYg
KGlzX3Byb2JpbmcpIHsKLSAgICBwYWNpbmdfaW5mbyA9IHByb2Jlcl8tPkN1cnJlbnRDbHVzdGVy
KCk7Ci0gICAgcmVjb21tZW5kZWRfcHJvYmVfc2l6ZSA9IHByb2Jlcl8tPlJlY29tbWVuZGVkTWlu
UHJvYmVTaXplKCk7CisgICAgcGFjaW5nX2luZm8gPSBwcm9iZXJfLkN1cnJlbnRDbHVzdGVyKCk7
CisgICAgcmVjb21tZW5kZWRfcHJvYmVfc2l6ZSA9IHByb2Jlcl8uUmVjb21tZW5kZWRNaW5Qcm9i
ZVNpemUoKTsKICAgfQotICAvLyBUaGUgcGF1c2VkIHN0YXRlIGlzIGNoZWNrZWQgaW4gdGhlIGxv
b3Agc2luY2UgU2VuZFBhY2tldCBsZWF2ZXMgdGhlCi0gIC8vIGNyaXRpY2FsIHNlY3Rpb24gYWxs
b3dpbmcgdGhlIHBhdXNlZCBzdGF0ZSB0byBiZSBjaGFuZ2VkIGZyb20gb3RoZXIgY29kZS4KKyAg
Ly8gVGhlIHBhdXNlZCBzdGF0ZSBpcyBjaGVja2VkIGluIHRoZSBsb29wIHNpbmNlIGl0IGxlYXZl
cyB0aGUgY3JpdGljYWwKKyAgLy8gc2VjdGlvbiBhbGxvd2luZyB0aGUgcGF1c2VkIHN0YXRlIHRv
IGJlIGNoYW5nZWQgZnJvbSBvdGhlciBjb2RlLgogICB3aGlsZSAoIXBhY2tldHNfLkVtcHR5KCkg
JiYgIXBhdXNlZF8pIHsKLSAgICAvLyBTaW5jZSB3ZSBuZWVkIHRvIHJlbGVhc2UgdGhlIGxvY2sg
aW4gb3JkZXIgdG8gc2VuZCwgd2UgZmlyc3QgcG9wIHRoZQotICAgIC8vIGVsZW1lbnQgZnJvbSB0
aGUgcHJpb3JpdHkgcXVldWUgYnV0IGtlZXAgaXQgaW4gc3RvcmFnZSwgc28gdGhhdCB3ZSBjYW4K
LSAgICAvLyByZWluc2VydCBpdCBpZiBzZW5kIGZhaWxzLgotICAgIGNvbnN0IFJvdW5kUm9iaW5Q
YWNrZXRRdWV1ZTo6UGFja2V0JiBwYWNrZXQgPSBwYWNrZXRzXy5CZWdpblBvcCgpOworICAgIGNv
bnN0IGF1dG8qIHBhY2tldCA9IEdldFBlbmRpbmdQYWNrZXQocGFjaW5nX2luZm8pOworICAgIGlm
IChwYWNrZXQgPT0gbnVsbHB0cikKKyAgICAgIGJyZWFrOwogCi0gICAgaWYgKFNlbmRQYWNrZXQo
cGFja2V0LCBwYWNpbmdfaW5mbykpIHsKLSAgICAgIGJ5dGVzX3NlbnQgKz0gcGFja2V0LmJ5dGVz
OworICAgIGNyaXRzZWN0Xy5MZWF2ZSgpOworICAgIGJvb2wgc3VjY2VzcyA9IHBhY2tldF9zZW5k
ZXJfLT5UaW1lVG9TZW5kUGFja2V0KAorICAgICAgICBwYWNrZXQtPnNzcmMsIHBhY2tldC0+c2Vx
dWVuY2VfbnVtYmVyLCBwYWNrZXQtPmNhcHR1cmVfdGltZV9tcywKKyAgICAgICAgcGFja2V0LT5y
ZXRyYW5zbWlzc2lvbiwgcGFjaW5nX2luZm8pOworICAgIGNyaXRzZWN0Xy5FbnRlcigpOworICAg
IGlmIChzdWNjZXNzKSB7CisgICAgICBieXRlc19zZW50ICs9IHBhY2tldC0+Ynl0ZXM7CiAgICAg
ICAvLyBTZW5kIHN1Y2NlZWRlZCwgcmVtb3ZlIGl0IGZyb20gdGhlIHF1ZXVlLgotICAgICAgcGFj
a2V0c18uRmluYWxpemVQb3AocGFja2V0KTsKKyAgICAgIE9uUGFja2V0U2VudChzdGQ6Om1vdmUo
cGFja2V0KSk7CiAgICAgICBpZiAoaXNfcHJvYmluZyAmJiBieXRlc19zZW50ID4gcmVjb21tZW5k
ZWRfcHJvYmVfc2l6ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfSBlbHNlIHsKICAgICAgIC8vIFNl
bmQgZmFpbGVkLCBwdXQgaXQgYmFjayBpbnRvIHRoZSBxdWV1ZS4KLSAgICAgIHBhY2tldHNfLkNh
bmNlbFBvcChwYWNrZXQpOworICAgICAgcGFja2V0c18uQ2FuY2VsUG9wKCpwYWNrZXQpOwogICAg
ICAgYnJlYWs7CiAgICAgfQogICB9CkBAIC0zNDcsMTYgKzM2MiwyMSBAQCB2b2lkIFBhY2VkU2Vu
ZGVyOjpQcm9jZXNzKCkgewogICAgIGlmIChwYWNrZXRfY291bnRlcl8gPiAwKSB7CiAgICAgICBp
bnQgcGFkZGluZ19uZWVkZWQgPQogICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oaXNfcHJvYmlu
ZyA/IChyZWNvbW1lbmRlZF9wcm9iZV9zaXplIC0gYnl0ZXNfc2VudCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBwYWRkaW5nX2J1ZGdldF8tPmJ5dGVzX3JlbWFpbmlu
ZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwYWRkaW5nX2J1
ZGdldF8uYnl0ZXNfcmVtYWluaW5nKCkpOwogICAgICAgaWYgKHBhZGRpbmdfbmVlZGVkID4gMCkg
ewotICAgICAgICBieXRlc19zZW50ICs9IFNlbmRQYWRkaW5nKHBhZGRpbmdfbmVlZGVkLCBwYWNp
bmdfaW5mbyk7CisgICAgICAgIGNyaXRzZWN0Xy5MZWF2ZSgpOworICAgICAgICBzaXplX3QgcGFk
ZGluZ19zZW50ID0KKyAgICAgICAgICAgIHBhY2tldF9zZW5kZXJfLT5UaW1lVG9TZW5kUGFkZGlu
ZyhwYWRkaW5nX25lZWRlZCwgcGFjaW5nX2luZm8pOworICAgICAgICBjcml0c2VjdF8uRW50ZXIo
KTsKKyAgICAgICAgYnl0ZXNfc2VudCArPSBwYWRkaW5nX3NlbnQ7CisgICAgICAgIE9uUGFkZGlu
Z1NlbnQocGFkZGluZ19zZW50KTsKICAgICAgIH0KICAgICB9CiAgIH0KICAgaWYgKGlzX3Byb2Jp
bmcpIHsKICAgICBwcm9iaW5nX3NlbmRfZmFpbHVyZV8gPSBieXRlc19zZW50ID09IDA7CiAgICAg
aWYgKCFwcm9iaW5nX3NlbmRfZmFpbHVyZV8pCi0gICAgICBwcm9iZXJfLT5Qcm9iZVNlbnQoVGlt
ZU1pbGxpc2Vjb25kcygpLCBieXRlc19zZW50KTsKKyAgICAgIHByb2Jlcl8uUHJvYmVTZW50KFRp
bWVNaWxsaXNlY29uZHMoKSwgYnl0ZXNfc2VudCk7CiAgIH0KICAgYWxyX2RldGVjdG9yXy0+T25C
eXRlc1NlbnQoYnl0ZXNfc2VudCwgbm93X3VzIC8gMTAwMCk7CiB9CkBAIC0zNjcsNjYgKzM4Nyw1
OCBAQCB2b2lkIFBhY2VkU2VuZGVyOjpQcm9jZXNzVGhyZWFkQXR0YWNoZWQoUHJvY2Vzc1RocmVh
ZCogcHJvY2Vzc190aHJlYWQpIHsKICAgcHJvY2Vzc190aHJlYWRfID0gcHJvY2Vzc190aHJlYWQ7
CiB9CiAKLWJvb2wgUGFjZWRTZW5kZXI6OlNlbmRQYWNrZXQoY29uc3QgUm91bmRSb2JpblBhY2tl
dFF1ZXVlOjpQYWNrZXQmIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbykgewotICBSVENfRENIRUNLKCFwYXVzZWRf
KTsKLSAgYm9vbCBhdWRpb19wYWNrZXQgPSBwYWNrZXQucHJpb3JpdHkgPT0ga0hpZ2hQcmlvcml0
eTsKK2NvbnN0IFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6UGFja2V0KiBQYWNlZFNlbmRlcjo6R2V0
UGVuZGluZ1BhY2tldCgKKyAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKSB7
CisgIC8vIFNpbmNlIHdlIG5lZWQgdG8gcmVsZWFzZSB0aGUgbG9jayBpbiBvcmRlciB0byBzZW5k
LCB3ZSBmaXJzdCBwb3AgdGhlCisgIC8vIGVsZW1lbnQgZnJvbSB0aGUgcHJpb3JpdHkgcXVldWUg
YnV0IGtlZXAgaXQgaW4gc3RvcmFnZSwgc28gdGhhdCB3ZSBjYW4KKyAgLy8gcmVpbnNlcnQgaXQg
aWYgc2VuZCBmYWlscy4KKyAgY29uc3QgUm91bmRSb2JpblBhY2tldFF1ZXVlOjpQYWNrZXQqIHBh
Y2tldCA9ICZwYWNrZXRzXy5CZWdpblBvcCgpOworICBib29sIGF1ZGlvX3BhY2tldCA9IHBhY2tl
dC0+cHJpb3JpdHkgPT0ga0hpZ2hQcmlvcml0eTsKICAgYm9vbCBhcHBseV9wYWNpbmcgPQogICAg
ICAgIWF1ZGlvX3BhY2tldCB8fCBhY2NvdW50X2Zvcl9hdWRpb18gfHwgdmlkZW9fYmxvY2tzX2F1
ZGlvXzsKLSAgaWYgKGFwcGx5X3BhY2luZyAmJiAoQ29uZ2VzdGVkKCkgfHwgKG1lZGlhX2J1ZGdl
dF8tPmJ5dGVzX3JlbWFpbmluZygpID09IDAgJiYKKyAgaWYgKGFwcGx5X3BhY2luZyAmJiAoQ29u
Z2VzdGVkKCkgfHwgKG1lZGlhX2J1ZGdldF8uYnl0ZXNfcmVtYWluaW5nKCkgPT0gMCAmJgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFjaW5nX2luZm8ucHJvYmVfY2x1
c3Rlcl9pZCA9PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
Y2VkUGFja2V0SW5mbzo6a05vdEFQcm9iZSkpKSB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHBh
Y2tldHNfLkNhbmNlbFBvcCgqcGFja2V0KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKICAgfQorICBy
ZXR1cm4gcGFja2V0OworfQogCi0gIGNyaXRzZWN0Xy5MZWF2ZSgpOwotICBjb25zdCBib29sIHN1
Y2Nlc3MgPSBwYWNrZXRfc2VuZGVyXy0+VGltZVRvU2VuZFBhY2tldCgKLSAgICAgIHBhY2tldC5z
c3JjLCBwYWNrZXQuc2VxdWVuY2VfbnVtYmVyLCBwYWNrZXQuY2FwdHVyZV90aW1lX21zLAotICAg
ICAgcGFja2V0LnJldHJhbnNtaXNzaW9uLCBwYWNpbmdfaW5mbyk7Ci0gIGNyaXRzZWN0Xy5FbnRl
cigpOwotCi0gIGlmIChzdWNjZXNzKSB7Ci0gICAgaWYgKGZpcnN0X3NlbnRfcGFja2V0X21zXyA9
PSAtMSkKLSAgICAgIGZpcnN0X3NlbnRfcGFja2V0X21zXyA9IFRpbWVNaWxsaXNlY29uZHMoKTsK
LSAgICBpZiAoIWF1ZGlvX3BhY2tldCB8fCBhY2NvdW50X2Zvcl9hdWRpb18pIHsKLSAgICAgIC8v
IFVwZGF0ZSBtZWRpYSBieXRlcyBzZW50LgotICAgICAgLy8gVE9ETyhlbGFkYWxvbik6IFRpbWVU
b1NlbmRQYWNrZXQoKSBjYW4gYWxzbyByZXR1cm4gfHRydWV8IGluIHNvbWUKLSAgICAgIC8vIHNp
dHVhdGlvbnMgd2hlcmUgbm90aGluZyBhY3R1YWxseSBlbmRlZCB1cCBiZWluZyBzZW50IHRvIHRo
ZSBuZXR3b3JrLAotICAgICAgLy8gYW5kIHdlIHByb2JhYmx5IGRvbid0IHdhbnQgdG8gdXBkYXRl
IHRoZSBidWRnZXQgaW4gc3VjaCBjYXNlcy4KLSAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1
bS5vcmcvcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD04MDUyCi0gICAgICBVcGRhdGVCdWRnZXRX
aXRoQnl0ZXNTZW50KHBhY2tldC5ieXRlcyk7Ci0gICAgICBsYXN0X3NlbmRfdGltZV91c18gPSBj
bG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOwotICAgIH0KK3ZvaWQgUGFjZWRTZW5kZXI6Ok9u
UGFja2V0U2VudChjb25zdCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlBhY2tldCogcGFja2V0KSB7
CisgIGlmIChmaXJzdF9zZW50X3BhY2tldF9tc18gPT0gLTEpCisgICAgZmlyc3Rfc2VudF9wYWNr
ZXRfbXNfID0gVGltZU1pbGxpc2Vjb25kcygpOworICBib29sIGF1ZGlvX3BhY2tldCA9IHBhY2tl
dC0+cHJpb3JpdHkgPT0ga0hpZ2hQcmlvcml0eTsKKyAgaWYgKCFhdWRpb19wYWNrZXQgfHwgYWNj
b3VudF9mb3JfYXVkaW9fKSB7CisgICAgLy8gVXBkYXRlIG1lZGlhIGJ5dGVzIHNlbnQuCisgICAg
Ly8gVE9ETyhlbGFkYWxvbik6IFRpbWVUb1NlbmRQYWNrZXQoKSBjYW4gYWxzbyByZXR1cm4gfHRy
dWV8IGluIHNvbWUKKyAgICAvLyBzaXR1YXRpb25zIHdoZXJlIG5vdGhpbmcgYWN0dWFsbHkgZW5k
ZWQgdXAgYmVpbmcgc2VudCB0byB0aGUgbmV0d29yaywKKyAgICAvLyBhbmQgd2UgcHJvYmFibHkg
ZG9uJ3Qgd2FudCB0byB1cGRhdGUgdGhlIGJ1ZGdldCBpbiBzdWNoIGNhc2VzLgorICAgIC8vIGh0
dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD04MDUyCisg
ICAgVXBkYXRlQnVkZ2V0V2l0aEJ5dGVzU2VudChwYWNrZXQtPmJ5dGVzKTsKKyAgICBsYXN0X3Nl
bmRfdGltZV91c18gPSBjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpOwogICB9Ci0KLSAgcmV0
dXJuIHN1Y2Nlc3M7CisgIC8vIFNlbmQgc3VjY2VlZGVkLCByZW1vdmUgaXQgZnJvbSB0aGUgcXVl
dWUuCisgIHBhY2tldHNfLkZpbmFsaXplUG9wKCpwYWNrZXQpOwogfQogCi1zaXplX3QgUGFjZWRT
ZW5kZXI6OlNlbmRQYWRkaW5nKHNpemVfdCBwYWRkaW5nX25lZWRlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbykgewot
ICBSVENfRENIRUNLX0dUKHBhY2tldF9jb3VudGVyXywgMCk7Ci0gIGNyaXRzZWN0Xy5MZWF2ZSgp
OwotICBzaXplX3QgYnl0ZXNfc2VudCA9Ci0gICAgICBwYWNrZXRfc2VuZGVyXy0+VGltZVRvU2Vu
ZFBhZGRpbmcocGFkZGluZ19uZWVkZWQsIHBhY2luZ19pbmZvKTsKLSAgY3JpdHNlY3RfLkVudGVy
KCk7Ci0KK3ZvaWQgUGFjZWRTZW5kZXI6Ok9uUGFkZGluZ1NlbnQoc2l6ZV90IGJ5dGVzX3NlbnQp
IHsKICAgaWYgKGJ5dGVzX3NlbnQgPiAwKSB7CiAgICAgVXBkYXRlQnVkZ2V0V2l0aEJ5dGVzU2Vu
dChieXRlc19zZW50KTsKICAgfQogICBsYXN0X3NlbmRfdGltZV91c18gPSBjbG9ja18tPlRpbWVJ
bk1pY3Jvc2Vjb25kcygpOwotICByZXR1cm4gYnl0ZXNfc2VudDsKIH0KIAogdm9pZCBQYWNlZFNl
bmRlcjo6VXBkYXRlQnVkZ2V0V2l0aEVsYXBzZWRUaW1lKGludDY0X3QgZGVsdGFfdGltZV9tcykg
ewogICBkZWx0YV90aW1lX21zID0gc3RkOjptaW4oa01heEludGVydmFsVGltZU1zLCBkZWx0YV90
aW1lX21zKTsKLSAgbWVkaWFfYnVkZ2V0Xy0+SW5jcmVhc2VCdWRnZXQoZGVsdGFfdGltZV9tcyk7
Ci0gIHBhZGRpbmdfYnVkZ2V0Xy0+SW5jcmVhc2VCdWRnZXQoZGVsdGFfdGltZV9tcyk7CisgIG1l
ZGlhX2J1ZGdldF8uSW5jcmVhc2VCdWRnZXQoZGVsdGFfdGltZV9tcyk7CisgIHBhZGRpbmdfYnVk
Z2V0Xy5JbmNyZWFzZUJ1ZGdldChkZWx0YV90aW1lX21zKTsKIH0KIAogdm9pZCBQYWNlZFNlbmRl
cjo6VXBkYXRlQnVkZ2V0V2l0aEJ5dGVzU2VudChzaXplX3QgYnl0ZXNfc2VudCkgewogICBvdXRz
dGFuZGluZ19ieXRlc18gKz0gYnl0ZXNfc2VudDsKLSAgbWVkaWFfYnVkZ2V0Xy0+VXNlQnVkZ2V0
KGJ5dGVzX3NlbnQpOwotICBwYWRkaW5nX2J1ZGdldF8tPlVzZUJ1ZGdldChieXRlc19zZW50KTsK
KyAgbWVkaWFfYnVkZ2V0Xy5Vc2VCdWRnZXQoYnl0ZXNfc2VudCk7CisgIHBhZGRpbmdfYnVkZ2V0
Xy5Vc2VCdWRnZXQoYnl0ZXNfc2VudCk7CiB9CiAKIHZvaWQgUGFjZWRTZW5kZXI6OlNldFBhY2lu
Z0ZhY3RvcihmbG9hdCBwYWNpbmdfZmFjdG9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFj
aW5nL3BhY2VkX3NlbmRlci5oCmluZGV4IGYxMjkxNzQwOGE2YjQxNjg0MjI4ZmIwNDA5ODNkMjli
M2Y4MzgxMjAuLjQ1ODZkMjljY2E5N2U3NmUwNWI3NjE1ZWRmMDdmMmIyZGE3NjM1YTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cGFjaW5nL3BhY2VkX3NlbmRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oCkBAIC0xMSwyMCArMTEs
MjUgQEAKICNpZm5kZWYgTU9EVUxFU19QQUNJTkdfUEFDRURfU0VOREVSX0hfCiAjZGVmaW5lIE1P
RFVMRVNfUEFDSU5HX1BBQ0VEX1NFTkRFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5j
bHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiYWJzbC90eXBl
cy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVyLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9wYWNpbmcvaW50ZXJ2YWxfYnVkZ2V0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9wYWNpbmcv
cGFjZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9yb3VuZF9yb2Jpbl9wYWNrZXRfcXVl
dWUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5l
cy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3NfdGhyZWFkLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgQWxy
RGV0ZWN0b3I7Ci1jbGFzcyBCaXRyYXRlUHJvYmVyOwogY2xhc3MgQ2xvY2s7CiBjbGFzcyBSdGNF
dmVudExvZzsKLWNsYXNzIEludGVydmFsQnVkZ2V0OwogCiBjbGFzcyBQYWNlZFNlbmRlciA6IHB1
YmxpYyBQYWNlciB7CiAgcHVibGljOgpAQCAtMTM4LDE5ICsxNDMsMjUgQEAgY2xhc3MgUGFjZWRT
ZW5kZXIgOiBwdWJsaWMgUGFjZXIgewogICB2b2lkIFNldFF1ZXVlVGltZUxpbWl0KGludCBsaW1p
dF9tcyk7CiAKICBwcml2YXRlOgorICBpbnQ2NF90IFVwZGF0ZVRpbWVBbmRHZXRFbGFwc2VkTXMo
aW50NjRfdCBub3dfdXMpCisgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRz
ZWN0Xyk7CisgIGJvb2wgU2hvdWxkU2VuZEtlZXBhbGl2ZShpbnQ2NF90IGF0X3RpbWVfdXMpIGNv
bnN0CisgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7CisKICAg
Ly8gVXBkYXRlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlIHNlbnQgZm9yIHRoZSBu
ZXh0IHRpbWUgaW50ZXJ2YWwuCiAgIHZvaWQgVXBkYXRlQnVkZ2V0V2l0aEVsYXBzZWRUaW1lKGlu
dDY0X3QgZGVsdGFfdGltZV9pbl9tcykKICAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlS
RUQoY3JpdHNlY3RfKTsKICAgdm9pZCBVcGRhdGVCdWRnZXRXaXRoQnl0ZXNTZW50KHNpemVfdCBi
eXRlcykKICAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoY3JpdHNlY3RfKTsKIAot
ICBib29sIFNlbmRQYWNrZXQoY29uc3QgUm91bmRSb2JpblBhY2tldFF1ZXVlOjpQYWNrZXQmIHBh
Y2tldCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgY2x1c3Rlcl9p
bmZvKQorICBjb25zdCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlBhY2tldCogR2V0UGVuZGluZ1Bh
Y2tldCgKKyAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2luZm8pCisgICAgICBS
VENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7CisgIHZvaWQgT25QYWNrZXRT
ZW50KGNvbnN0IFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6UGFja2V0KiBwYWNrZXQpCiAgICAgICBS
VENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7Ci0gIHNpemVfdCBTZW5kUGFk
ZGluZyhzaXplX3QgcGFkZGluZ19uZWVkZWQsIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgY2x1c3Rl
cl9pbmZvKQorICB2b2lkIE9uUGFkZGluZ1NlbnQoc2l6ZV90IHBhZGRpbmdfc2VudCkKICAgICAg
IFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoY3JpdHNlY3RfKTsKIAotICB2b2lkIE9uQnl0
ZXNTZW50KHNpemVfdCBieXRlc19zZW50KSBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNy
aXRzZWN0Xyk7CiAgIGJvb2wgQ29uZ2VzdGVkKCkgY29uc3QgUlRDX0VYQ0xVU0lWRV9MT0NLU19S
RVFVSVJFRChjcml0c2VjdF8pOwogICBpbnQ2NF90IFRpbWVNaWxsaXNlY29uZHMoKSBjb25zdCBS
VENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7CiAKQEAgLTE2OSwxNSArMTgw
LDEzIEBAIGNsYXNzIFBhY2VkU2VuZGVyIDogcHVibGljIFBhY2VyIHsKICAgYm9vbCBwYXVzZWRf
IFJUQ19HVUFSREVEX0JZKGNyaXRzZWN0Xyk7CiAgIC8vIFRoaXMgaXMgdGhlIG1lZGlhIGJ1ZGdl
dCwga2VlcGluZyB0cmFjayBvZiBob3cgbWFueSBiaXRzIG9mIG1lZGlhCiAgIC8vIHdlIGNhbiBw
YWNlIG91dCBkdXJpbmcgdGhlIGN1cnJlbnQgaW50ZXJ2YWwuCi0gIGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxJbnRlcnZhbEJ1ZGdldD4gbWVkaWFfYnVkZ2V0XwotICAgICAgUlRDX1BUX0dVQVJERURf
QlkoY3JpdHNlY3RfKTsKKyAgSW50ZXJ2YWxCdWRnZXQgbWVkaWFfYnVkZ2V0XyBSVENfR1VBUkRF
RF9CWShjcml0c2VjdF8pOwogICAvLyBUaGlzIGlzIHRoZSBwYWRkaW5nIGJ1ZGdldCwga2VlcGlu
ZyB0cmFjayBvZiBob3cgbWFueSBiaXRzIG9mIHBhZGRpbmcgd2UncmUKICAgLy8gYWxsb3dlZCB0
byBzZW5kIG91dCBkdXJpbmcgdGhlIGN1cnJlbnQgaW50ZXJ2YWwuIFRoaXMgYnVkZ2V0IHdpbGwg
YmUKICAgLy8gdXRpbGl6ZWQgd2hlbiB0aGVyZSdzIG5vIG1lZGlhIHRvIHNlbmQuCi0gIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxJbnRlcnZhbEJ1ZGdldD4gcGFkZGluZ19idWRnZXRfCi0gICAgICBS
VENfUFRfR1VBUkRFRF9CWShjcml0c2VjdF8pOworICBJbnRlcnZhbEJ1ZGdldCBwYWRkaW5nX2J1
ZGdldF8gUlRDX0dVQVJERURfQlkoY3JpdHNlY3RfKTsKIAotICBjb25zdCBzdGQ6OnVuaXF1ZV9w
dHI8Qml0cmF0ZVByb2Jlcj4gcHJvYmVyXyBSVENfUFRfR1VBUkRFRF9CWShjcml0c2VjdF8pOwor
ICBCaXRyYXRlUHJvYmVyIHByb2Jlcl8gUlRDX0dVQVJERURfQlkoY3JpdHNlY3RfKTsKICAgYm9v
bCBwcm9iaW5nX3NlbmRfZmFpbHVyZV8gUlRDX0dVQVJERURfQlkoY3JpdHNlY3RfKTsKICAgLy8g
QWN0dWFsIGNvbmZpZ3VyZWQgYml0cmF0ZXMgKG1lZGlhX2J1ZGdldF8gbWF5IHRlbXBvcmFyaWx5
IGJlIGhpZ2hlciBpbgogICAvLyBvcmRlciB0byBtZWV0IHBhY2UgdGltZSBjb25zdHJhaW50KS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmNjCmluZGV4IGIy
N2M3M2MyZjBjN2U3ZTc2YmE4NmZiZWI4MDNkMzY1OTZjOGM3YTguLjI0YmU3ZWViZjJhOWUzMmRi
NzcyODZjNjg3YWY0MWFkZjlmNGE1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNp
bmcvcGFja2V0X3JvdXRlci5jYwpAQCAtMTEsOCArMTEsMTAgQEAKICNpbmNsdWRlICJtb2R1bGVz
L3BhY2luZy9wYWNrZXRfcm91dGVyLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVk
ZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxsaW1pdHM+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRf
ZmVlZGJhY2suaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIu
aAppbmRleCBmMDFlOWVmNDkzMzk2NTQxYTZmODgzZjJkODRjOGU2OGFlMzdiOWE3Li5iN2NjNWZm
MTk2Njg3ZGEyYmM4YTQ5MGJmOGYyODM2YjEzMjNkMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91
dGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9wYWNpbmcvcGFja2V0X3JvdXRlci5oCkBAIC0xMSwxNiArMTEsMTcgQEAKICNpZm5kZWYg
TU9EVUxFU19QQUNJTkdfUEFDS0VUX1JPVVRFUl9IXwogI2RlZmluZSBNT0RVTEVTX1BBQ0lOR19Q
QUNLRVRfUk9VVEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQu
aD4KICNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYXBpL3RyYW5z
cG9ydC9uZXR3b3JrX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9wYWNpbmcvcGFjZWRfc2Vu
ZGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVk
ZS9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVj
dG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9yYWNlX2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRf
YW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9yb3VuZF9y
b2Jpbl9wYWNrZXRfcXVldWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9yb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuY2MKaW5kZXgg
ZTg5MmRkYjRlYTJiNTA4NjQ4MWJkOTAyMTNlNTYwYmRiYWFiNWRkMS4uZTYxZDY4MjE1YWNhOGE3
NDc2YmFiZTM0ODc4YjZkZTYwNDZhYjM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5fcGFja2V0
X3F1ZXVlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcGFjaW5nL3JvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5jYwpAQCAtMTEsOSArMTEs
MTAgQEAKICNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9yb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUu
aCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUg
PHV0aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAt
NTMsOCArNTQsOCBAQCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlN0cmVhbTo6U3RyZWFtKCkgOiBi
eXRlcygwKSwgc3NyYygwKSB7fQogUm91bmRSb2JpblBhY2tldFF1ZXVlOjpTdHJlYW06OlN0cmVh
bShjb25zdCBTdHJlYW0mIHN0cmVhbSkgPSBkZWZhdWx0OwogUm91bmRSb2JpblBhY2tldFF1ZXVl
OjpTdHJlYW06On5TdHJlYW0oKSB7fQogCi1Sb3VuZFJvYmluUGFja2V0UXVldWU6OlJvdW5kUm9i
aW5QYWNrZXRRdWV1ZShjb25zdCBDbG9jayogY2xvY2spCi0gICAgOiB0aW1lX2xhc3RfdXBkYXRl
ZF8oY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKSB7fQorUm91bmRSb2JpblBhY2tldFF1ZXVl
OjpSb3VuZFJvYmluUGFja2V0UXVldWUoaW50NjRfdCBzdGFydF90aW1lX3VzKQorICAgIDogdGlt
ZV9sYXN0X3VwZGF0ZWRfbXNfKHN0YXJ0X3RpbWVfdXMgLyAxMDAwKSB7fQogCiBSb3VuZFJvYmlu
UGFja2V0UXVldWU6On5Sb3VuZFJvYmluUGFja2V0UXVldWUoKSB7fQogCkBAIC0xMzIsNyArMTMz
LDcgQEAgdm9pZCBSb3VuZFJvYmluUGFja2V0UXVldWU6OkZpbmFsaXplUG9wKGNvbnN0IFBhY2tl
dCYgcGFja2V0KSB7CiAgICAgLy8gYnkgc3VidHJhY3RpbmcgaXQgbm93IHdlIGVmZmVjdGl2ZWx5
IHJlbW92ZSB0aGUgdGltZSBzcGVudCBpbiBpbiB0aGUKICAgICAvLyBxdWV1ZSB3aGlsZSBpbiBh
IHBhdXNlZCBzdGF0ZS4KICAgICBpbnQ2NF90IHRpbWVfaW5fbm9uX3BhdXNlZF9zdGF0ZV9tcyA9
Ci0gICAgICAgIHRpbWVfbGFzdF91cGRhdGVkXyAtIHBhY2tldC5lbnF1ZXVlX3RpbWVfbXMgLSBw
YXVzZV90aW1lX3N1bV9tc187CisgICAgICAgIHRpbWVfbGFzdF91cGRhdGVkX21zXyAtIHBhY2tl
dC5lbnF1ZXVlX3RpbWVfbXMgLSBwYXVzZV90aW1lX3N1bV9tc187CiAgICAgcXVldWVfdGltZV9z
dW1fbXNfIC09IHRpbWVfaW5fbm9uX3BhdXNlZF9zdGF0ZV9tczsKIAogICAgIFJUQ19DSEVDSyhw
YWNrZXQuZW5xdWV1ZV90aW1lX2l0ICE9IGVucXVldWVfdGltZXNfLmVuZCgpKTsKQEAgLTE4OSwx
MSArMTkwLDExIEBAIGludDY0X3QgUm91bmRSb2JpblBhY2tldFF1ZXVlOjpPbGRlc3RFbnF1ZXVl
VGltZU1zKCkgY29uc3QgewogfQogCiB2b2lkIFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6VXBkYXRl
UXVldWVUaW1lKGludDY0X3QgdGltZXN0YW1wX21zKSB7Ci0gIFJUQ19DSEVDS19HRSh0aW1lc3Rh
bXBfbXMsIHRpbWVfbGFzdF91cGRhdGVkXyk7Ci0gIGlmICh0aW1lc3RhbXBfbXMgPT0gdGltZV9s
YXN0X3VwZGF0ZWRfKQorICBSVENfQ0hFQ0tfR0UodGltZXN0YW1wX21zLCB0aW1lX2xhc3RfdXBk
YXRlZF9tc18pOworICBpZiAodGltZXN0YW1wX21zID09IHRpbWVfbGFzdF91cGRhdGVkX21zXykK
ICAgICByZXR1cm47CiAKLSAgaW50NjRfdCBkZWx0YV9tcyA9IHRpbWVzdGFtcF9tcyAtIHRpbWVf
bGFzdF91cGRhdGVkXzsKKyAgaW50NjRfdCBkZWx0YV9tcyA9IHRpbWVzdGFtcF9tcyAtIHRpbWVf
bGFzdF91cGRhdGVkX21zXzsKIAogICBpZiAocGF1c2VkXykgewogICAgIHBhdXNlX3RpbWVfc3Vt
X21zXyArPSBkZWx0YV9tczsKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIFJvdW5kUm9iaW5QYWNr
ZXRRdWV1ZTo6VXBkYXRlUXVldWVUaW1lKGludDY0X3QgdGltZXN0YW1wX21zKSB7CiAgICAgcXVl
dWVfdGltZV9zdW1fbXNfICs9IGRlbHRhX21zICogc2l6ZV9wYWNrZXRzXzsKICAgfQogCi0gIHRp
bWVfbGFzdF91cGRhdGVkXyA9IHRpbWVzdGFtcF9tczsKKyAgdGltZV9sYXN0X3VwZGF0ZWRfbXNf
ID0gdGltZXN0YW1wX21zOwogfQogCiB2b2lkIFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6U2V0UGF1
c2VTdGF0ZShib29sIHBhdXNlZCwgaW50NjRfdCB0aW1lc3RhbXBfbXMpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5n
L3JvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmgK
aW5kZXggZWU5MWUyZWZjMGM5MzQ0NGZiNjk1OTU1MWY5ZmNiMTBkMDdjY2YzOC4uNzRiODU1YTQ4
M2Q1NWUxNTdiYTBhMDlmNjYyMDRiMmFjNzk5OGJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5f
cGFja2V0X3F1ZXVlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmgKQEAgLTExLDE4
ICsxMSwyMiBAQAogI2lmbmRlZiBNT0RVTEVTX1BBQ0lOR19ST1VORF9ST0JJTl9QQUNLRVRfUVVF
VUVfSF8KICNkZWZpbmUgTU9EVUxFU19QQUNJTkdfUk9VTkRfUk9CSU5fUEFDS0VUX1FVRVVFX0hf
CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxs
aXN0PgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxxdWV1ZT4KICNpbmNsdWRlIDxzZXQ+CiAK
KyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBl
cnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgUm91bmRS
b2JpblBhY2tldFF1ZXVlIHsKICBwdWJsaWM6Ci0gIGV4cGxpY2l0IFJvdW5kUm9iaW5QYWNrZXRR
dWV1ZShjb25zdCBDbG9jayogY2xvY2spOworICBleHBsaWNpdCBSb3VuZFJvYmluUGFja2V0UXVl
dWUoaW50NjRfdCBzdGFydF90aW1lX3VzKTsKICAgflJvdW5kUm9iaW5QYWNrZXRRdWV1ZSgpOwog
CiAgIHN0cnVjdCBQYWNrZXQgewpAQCAtMTA1LDcgKzEwOSw3IEBAIGNsYXNzIFJvdW5kUm9iaW5Q
YWNrZXRRdWV1ZSB7CiAgIC8vIEp1c3QgdXNlZCB0byB2ZXJpZnkgY29ycmVjdG5lc3MuCiAgIGJv
b2wgSXNTc3JjU2NoZWR1bGVkKHVpbnQzMl90IHNzcmMpIGNvbnN0OwogCi0gIGludDY0X3QgdGlt
ZV9sYXN0X3VwZGF0ZWRfOworICBpbnQ2NF90IHRpbWVfbGFzdF91cGRhdGVkX21zXzsKICAgYWJz
bDo6b3B0aW9uYWw8UGFja2V0PiBwb3BfcGFja2V0XzsKICAgYWJzbDo6b3B0aW9uYWw8U3RyZWFt
Kj4gcG9wX3N0cmVhbV87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3IvQlVJTEQuZ24KaW5kZXggYThkNjg1MDc0OWNjOTA4MWY5M2Nj
ZDkzYjVlOTIzMTE2ZmU2YWQxNC4uZjY5OTFlYTY5ZDQwM2NmZDdkNTBkMWJjYTllNjE2M2I4Mzdh
NzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvQlVJTEQuZ24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0
ZV9lc3RpbWF0b3IvQlVJTEQuZ24KQEAgLTQyLDcgKzQyLDkgQEAgcnRjX3N0YXRpY19saWJyYXJ5
KCJyZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IiKSB7CiAgIGRlcHMgPSBbCiAgICAgIi4uLy4uOndl
YnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9hcGkvdW5pdHM6ZGF0YV9yYXRlIiwKKyAgICAiLi4v
Li4vYXBpL3VuaXRzOnRpbWVzdGFtcCIsCiAgICAgIi4uLy4uL21vZHVsZXM6bW9kdWxlX2FwaSIs
CisgICAgIi4uLy4uL21vZHVsZXM6bW9kdWxlX2FwaV9wdWJsaWMiLAogICAgICIuLi8uLi9tb2R1
bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNr
cyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKQEAgLTIyNyw2ICsy
MjksNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi8uLi9ydGNfYmFzZTpy
dGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vLi4vdGVzdDpmaWxldXRpbHMiLAogICAgICAg
Ii4uLy4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIs
CiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICBdCiAgICAgZGF0YSA9IFsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3Rp
bWF0b3IvYWltZF9yYXRlX2NvbnRyb2wuY2MKaW5kZXggYTZlNjQzNjg5NzdmNWFiMDZiMDA0YmE4
YTZlOWQyMTZlODhmMTk5Ny4uYjJjYTgwMTI4ODljNmQ5NTNlMzU5OWVmYmQyN2NiZWJhNWY3NDNi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRyb2wuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRyb2wuY2MKQEAgLTExLDcgKzExLDYg
QEAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9haW1kX3JhdGVf
Y29udHJvbC5oIgogCiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLQogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNtYXRoPgpAQCAtMTksOSArMTgsNyBA
QAogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3JlbW90
ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0
b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90ZXN0L2J3
ZV90ZXN0X2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9t
aW5tYXguaCIKQEAgLTI5LDI1ICsyNiwyNCBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotc3Rh
dGljIGNvbnN0IGludDY0X3Qga0RlZmF1bHRSdHRNcyA9IDIwMDsKLXN0YXRpYyBjb25zdCBpbnQ2
NF90IGtNYXhGZWVkYmFja0ludGVydmFsTXMgPSAxMDAwOwotc3RhdGljIGNvbnN0IGZsb2F0IGtE
ZWZhdWx0QmFja29mZkZhY3RvciA9IDAuODVmOwotc3RhdGljIGNvbnN0IGludDY0X3Qga0RlZmF1
bHRJbml0aWFsQmFja09mZkludGVydmFsTXMgPSAyMDA7Citjb25zdGV4cHIgVGltZURlbHRhIGtE
ZWZhdWx0UnR0ID0gVGltZURlbHRhOjpNaWxsaXM8MjAwPigpOworY29uc3RleHByIGRvdWJsZSBr
RGVmYXVsdEJhY2tvZmZGYWN0b3IgPSAwLjg1OworY29uc3RleHByIFRpbWVEZWx0YSBrRGVmYXVs
dEluaXRpYWxCYWNrT2ZmSW50ZXJ2YWwgPSBUaW1lRGVsdGE6Ok1pbGxpczwyMDA+KCk7CiAKIGNv
bnN0IGNoYXIga0J3ZUJhY2tPZmZGYWN0b3JFeHBlcmltZW50W10gPSAiV2ViUlRDLUJ3ZUJhY2tP
ZmZGYWN0b3IiOwogY29uc3QgY2hhciBrQndlSW5pdGlhbEJhY2tPZmZJbnRlcnZhbEV4cGVyaW1l
bnRbXSA9CiAgICAgIldlYlJUQy1Cd2VJbml0aWFsQmFja09mZkludGVydmFsIjsKIAotZmxvYXQg
UmVhZEJhY2tvZmZGYWN0b3IoKSB7Citkb3VibGUgUmVhZEJhY2tvZmZGYWN0b3IoKSB7CiAgIHN0
ZDo6c3RyaW5nIGV4cGVyaW1lbnRfc3RyaW5nID0KICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6
OkZpbmRGdWxsTmFtZShrQndlQmFja09mZkZhY3RvckV4cGVyaW1lbnQpOwotICBmbG9hdCBiYWNr
b2ZmX2ZhY3RvcjsKKyAgZG91YmxlIGJhY2tvZmZfZmFjdG9yOwogICBpbnQgcGFyc2VkX3ZhbHVl
cyA9Ci0gICAgICBzc2NhbmYoZXhwZXJpbWVudF9zdHJpbmcuY19zdHIoKSwgIkVuYWJsZWQtJWYi
LCAmYmFja29mZl9mYWN0b3IpOworICAgICAgc3NjYW5mKGV4cGVyaW1lbnRfc3RyaW5nLmNfc3Ry
KCksICJFbmFibGVkLSVsZiIsICZiYWNrb2ZmX2ZhY3Rvcik7CiAgIGlmIChwYXJzZWRfdmFsdWVz
ID09IDEpIHsKLSAgICBpZiAoYmFja29mZl9mYWN0b3IgPj0gMS4wZikgeworICAgIGlmIChiYWNr
b2ZmX2ZhY3RvciA+PSAxLjApIHsKICAgICAgIFJUQ19MT0coV0FSTklORykgPDwgIkJhY2stb2Zm
IGZhY3RvciBtdXN0IGJlIGxlc3MgdGhhbiAxLiI7Ci0gICAgfSBlbHNlIGlmIChiYWNrb2ZmX2Zh
Y3RvciA8PSAwLjBmKSB7CisgICAgfSBlbHNlIGlmIChiYWNrb2ZmX2ZhY3RvciA8PSAwLjApIHsK
ICAgICAgIFJUQ19MT0coV0FSTklORykgPDwgIkJhY2stb2ZmIGZhY3RvciBtdXN0IGJlIGdyZWF0
ZXIgdGhhbiAwLiI7CiAgICAgfSBlbHNlIHsKICAgICAgIHJldHVybiBiYWNrb2ZmX2ZhY3RvcjsK
QEAgLTU4LDcgKzU0LDcgQEAgZmxvYXQgUmVhZEJhY2tvZmZGYWN0b3IoKSB7CiAgIHJldHVybiBr
RGVmYXVsdEJhY2tvZmZGYWN0b3I7CiB9CiAKLWludDY0X3QgUmVhZEluaXRpYWxCYWNrb2ZmSW50
ZXJ2YWxNcygpIHsKK1RpbWVEZWx0YSBSZWFkSW5pdGlhbEJhY2tvZmZJbnRlcnZhbCgpIHsKICAg
c3RkOjpzdHJpbmcgZXhwZXJpbWVudF9zdHJpbmcgPQogICAgICAgd2VicnRjOjpmaWVsZF90cmlh
bDo6RmluZEZ1bGxOYW1lKGtCd2VJbml0aWFsQmFja09mZkludGVydmFsRXhwZXJpbWVudCk7CiAg
IGludDY0X3QgYmFja29mZl9pbnRlcnZhbDsKQEAgLTY2LDcgKzYyLDcgQEAgaW50NjRfdCBSZWFk
SW5pdGlhbEJhY2tvZmZJbnRlcnZhbE1zKCkgewogICAgICAgc3NjYW5mKGV4cGVyaW1lbnRfc3Ry
aW5nLmNfc3RyKCksICJFbmFibGVkLSUiIFNDTmQ2NCwgJmJhY2tvZmZfaW50ZXJ2YWwpOwogICBp
ZiAocGFyc2VkX3ZhbHVlcyA9PSAxKSB7CiAgICAgaWYgKDEwIDw9IGJhY2tvZmZfaW50ZXJ2YWwg
JiYgYmFja29mZl9pbnRlcnZhbCA8PSAyMDApIHsKLSAgICAgIHJldHVybiBiYWNrb2ZmX2ludGVy
dmFsOworICAgICAgcmV0dXJuIFRpbWVEZWx0YTo6bXMoYmFja29mZl9pbnRlcnZhbCk7CiAgICAg
fQogICAgIFJUQ19MT0coV0FSTklORykKICAgICAgICAgPDwgIkluaXRpYWwgYmFjay1vZmYgaW50
ZXJ2YWwgbXVzdCBiZSBiZXR3ZWVuIDEwIGFuZCAyMDAgbXMuIjsKQEAgLTc0LDMzNCArNzAsMzQ3
IEBAIGludDY0X3QgUmVhZEluaXRpYWxCYWNrb2ZmSW50ZXJ2YWxNcygpIHsKICAgUlRDX0xPRyhM
U19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlcnMgZm9yICIKICAgICAgICAg
ICAgICAgICAgICAgICA8PCBrQndlSW5pdGlhbEJhY2tPZmZJbnRlcnZhbEV4cGVyaW1lbnQKICAg
ICAgICAgICAgICAgICAgICAgICA8PCAiIGV4cGVyaW1lbnQuIFVzaW5nIGRlZmF1bHQuIjsKLSAg
cmV0dXJuIGtEZWZhdWx0SW5pdGlhbEJhY2tPZmZJbnRlcnZhbE1zOworICByZXR1cm4ga0RlZmF1
bHRJbml0aWFsQmFja09mZkludGVydmFsOwogfQogCiBBaW1kUmF0ZUNvbnRyb2w6OkFpbWRSYXRl
Q29udHJvbCgpCi0gICAgOiBtaW5fY29uZmlndXJlZF9iaXRyYXRlX2Jwc18oY29uZ2VzdGlvbl9j
b250cm9sbGVyOjpHZXRNaW5CaXRyYXRlQnBzKCkpLAotICAgICAgbWF4X2NvbmZpZ3VyZWRfYml0
cmF0ZV9icHNfKDMwMDAwMDAwKSwKLSAgICAgIGN1cnJlbnRfYml0cmF0ZV9icHNfKG1heF9jb25m
aWd1cmVkX2JpdHJhdGVfYnBzXyksCi0gICAgICBsYXRlc3RfZXN0aW1hdGVkX3Rocm91Z2hwdXRf
YnBzXyhjdXJyZW50X2JpdHJhdGVfYnBzXyksCi0gICAgICBhdmdfbWF4X2JpdHJhdGVfa2Jwc18o
LTEuMGYpLAotICAgICAgdmFyX21heF9iaXRyYXRlX2ticHNfKDAuNGYpLAorICAgIDogbWluX2Nv
bmZpZ3VyZWRfYml0cmF0ZV8oY29uZ2VzdGlvbl9jb250cm9sbGVyOjpHZXRNaW5CaXRyYXRlKCkp
LAorICAgICAgbWF4X2NvbmZpZ3VyZWRfYml0cmF0ZV8oRGF0YVJhdGU6OmticHMoMzAwMDApKSwK
KyAgICAgIGN1cnJlbnRfYml0cmF0ZV8obWF4X2NvbmZpZ3VyZWRfYml0cmF0ZV8pLAorICAgICAg
bGF0ZXN0X2VzdGltYXRlZF90aHJvdWdocHV0XyhjdXJyZW50X2JpdHJhdGVfKSwKKyAgICAgIGxp
bmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18oKSwKKyAgICAgIHZhcl9saW5rX2NhcGFjaXR5X2Vz
dGltYXRlX2ticHNfKDAuNCksCiAgICAgICByYXRlX2NvbnRyb2xfc3RhdGVfKGtSY0hvbGQpLAot
ICAgICAgcmF0ZV9jb250cm9sX3JlZ2lvbl8oa1JjTWF4VW5rbm93biksCi0gICAgICB0aW1lX2xh
c3RfYml0cmF0ZV9jaGFuZ2VfKC0xKSwKLSAgICAgIHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNl
XygtMSksCi0gICAgICB0aW1lX2ZpcnN0X3Rocm91Z2hwdXRfZXN0aW1hdGVfKC0xKSwKKyAgICAg
IHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8oVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCkpLAor
ICAgICAgdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfKFRpbWVzdGFtcDo6TWludXNJbmZpbml0
eSgpKSwKKyAgICAgIHRpbWVfZmlyc3RfdGhyb3VnaHB1dF9lc3RpbWF0ZV8oVGltZXN0YW1wOjpN
aW51c0luZmluaXR5KCkpLAogICAgICAgYml0cmF0ZV9pc19pbml0aWFsaXplZF8oZmFsc2UpLAog
ICAgICAgYmV0YV8od2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtCd2VCYWNrT2ZmRmFj
dG9yRXhwZXJpbWVudCkKICAgICAgICAgICAgICAgICA/IFJlYWRCYWNrb2ZmRmFjdG9yKCkKICAg
ICAgICAgICAgICAgICA6IGtEZWZhdWx0QmFja29mZkZhY3RvciksCi0gICAgICBydHRfKGtEZWZh
dWx0UnR0TXMpLAorICAgICAgcnR0XyhrRGVmYXVsdFJ0dCksCiAgICAgICBpbl9leHBlcmltZW50
XyghQWRhcHRpdmVUaHJlc2hvbGRFeHBlcmltZW50SXNEaXNhYmxlZCgpKSwKICAgICAgIHNtb290
aGluZ19leHBlcmltZW50XygKICAgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoIldlYlJUQy1BdWRpby1CYW5kd2lkdGhTbW9vdGhpbmciKSksCiAgICAgICBpbl9pbml0aWFs
X2JhY2tvZmZfaW50ZXJ2YWxfZXhwZXJpbWVudF8oCiAgICAgICAgICAgd2VicnRjOjpmaWVsZF90
cmlhbDo6SXNFbmFibGVkKGtCd2VJbml0aWFsQmFja09mZkludGVydmFsRXhwZXJpbWVudCkpLAot
ICAgICAgaW5pdGlhbF9iYWNrb2ZmX2ludGVydmFsX21zXyhrRGVmYXVsdEluaXRpYWxCYWNrT2Zm
SW50ZXJ2YWxNcykgeworICAgICAgaW5pdGlhbF9iYWNrb2ZmX2ludGVydmFsXyhrRGVmYXVsdElu
aXRpYWxCYWNrT2ZmSW50ZXJ2YWwpIHsKICAgaWYgKGluX2luaXRpYWxfYmFja29mZl9pbnRlcnZh
bF9leHBlcmltZW50XykgewotICAgIGluaXRpYWxfYmFja29mZl9pbnRlcnZhbF9tc18gPSBSZWFk
SW5pdGlhbEJhY2tvZmZJbnRlcnZhbE1zKCk7CisgICAgaW5pdGlhbF9iYWNrb2ZmX2ludGVydmFs
XyA9IFJlYWRJbml0aWFsQmFja29mZkludGVydmFsKCk7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8
PCAiVXNpbmcgYWltZCByYXRlIGNvbnRyb2wgd2l0aCBpbml0aWFsIGJhY2stb2ZmIGludGVydmFs
IgotICAgICAgICAgICAgICAgICAgICAgPDwgIiAiIDw8IGluaXRpYWxfYmFja29mZl9pbnRlcnZh
bF9tc18gPDwgIiBtcy4iOworICAgICAgICAgICAgICAgICAgICAgPDwgIiAiIDw8IFRvU3RyaW5n
KGluaXRpYWxfYmFja29mZl9pbnRlcnZhbF8pIDw8ICIuIjsKICAgfQogICBSVENfTE9HKExTX0lO
Rk8pIDw8ICJVc2luZyBhaW1kIHJhdGUgY29udHJvbCB3aXRoIGJhY2sgb2ZmIGZhY3RvciAiIDw8
IGJldGFfOwogfQogCiBBaW1kUmF0ZUNvbnRyb2w6On5BaW1kUmF0ZUNvbnRyb2woKSB7fQogCi12
b2lkIEFpbWRSYXRlQ29udHJvbDo6U2V0U3RhcnRCaXRyYXRlKGludCBzdGFydF9iaXRyYXRlX2Jw
cykgewotICBjdXJyZW50X2JpdHJhdGVfYnBzXyA9IHN0YXJ0X2JpdHJhdGVfYnBzOwotICBsYXRl
c3RfZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzXyA9IGN1cnJlbnRfYml0cmF0ZV9icHNfOwordm9p
ZCBBaW1kUmF0ZUNvbnRyb2w6OlNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZSBzdGFydF9iaXRyYXRl
KSB7CisgIGN1cnJlbnRfYml0cmF0ZV8gPSBzdGFydF9iaXRyYXRlOworICBsYXRlc3RfZXN0aW1h
dGVkX3Rocm91Z2hwdXRfID0gY3VycmVudF9iaXRyYXRlXzsKICAgYml0cmF0ZV9pc19pbml0aWFs
aXplZF8gPSB0cnVlOwogfQogCi12b2lkIEFpbWRSYXRlQ29udHJvbDo6U2V0TWluQml0cmF0ZShp
bnQgbWluX2JpdHJhdGVfYnBzKSB7Ci0gIG1pbl9jb25maWd1cmVkX2JpdHJhdGVfYnBzXyA9IG1p
bl9iaXRyYXRlX2JwczsKLSAgY3VycmVudF9iaXRyYXRlX2Jwc18gPSBzdGQ6Om1heDxpbnQ+KG1p
bl9iaXRyYXRlX2JwcywgY3VycmVudF9iaXRyYXRlX2Jwc18pOwordm9pZCBBaW1kUmF0ZUNvbnRy
b2w6OlNldE1pbkJpdHJhdGUoRGF0YVJhdGUgbWluX2JpdHJhdGUpIHsKKyAgbWluX2NvbmZpZ3Vy
ZWRfYml0cmF0ZV8gPSBtaW5fYml0cmF0ZTsKKyAgY3VycmVudF9iaXRyYXRlXyA9IHN0ZDo6bWF4
KG1pbl9iaXRyYXRlLCBjdXJyZW50X2JpdHJhdGVfKTsKIH0KIAogYm9vbCBBaW1kUmF0ZUNvbnRy
b2w6OlZhbGlkRXN0aW1hdGUoKSBjb25zdCB7CiAgIHJldHVybiBiaXRyYXRlX2lzX2luaXRpYWxp
emVkXzsKIH0KIAotaW50NjRfdCBBaW1kUmF0ZUNvbnRyb2w6OkdldEZlZWRiYWNrSW50ZXJ2YWwo
KSBjb25zdCB7CitUaW1lRGVsdGEgQWltZFJhdGVDb250cm9sOjpHZXRGZWVkYmFja0ludGVydmFs
KCkgY29uc3QgewogICAvLyBFc3RpbWF0ZSBob3cgb2Z0ZW4gd2UgY2FuIHNlbmQgUlRDUCBpZiB3
ZSBhbGxvY2F0ZSB1cCB0byA1JSBvZiBiYW5kd2lkdGgKICAgLy8gdG8gZmVlZGJhY2suCi0gIHN0
YXRpYyBjb25zdCBpbnQga1J0Y3BTaXplID0gODA7Ci0gIGNvbnN0IGludDY0X3QgaW50ZXJ2YWwg
PSBzdGF0aWNfY2FzdDxpbnQ2NF90PigKLSAgICAgIGtSdGNwU2l6ZSAqIDguMCAqIDEwMDAuMCAv
ICgwLjA1ICogY3VycmVudF9iaXRyYXRlX2Jwc18pICsgMC41KTsKLSAgY29uc3QgaW50NjRfdCBr
TWluRmVlZGJhY2tJbnRlcnZhbE1zID0gMjAwOwotICByZXR1cm4gcnRjOjpTYWZlQ2xhbXAoaW50
ZXJ2YWwsIGtNaW5GZWVkYmFja0ludGVydmFsTXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBr
TWF4RmVlZGJhY2tJbnRlcnZhbE1zKTsKKyAgY29uc3QgRGF0YVNpemUga1J0Y3BTaXplID0gRGF0
YVNpemU6OmJ5dGVzKDgwKTsKKyAgY29uc3QgRGF0YVJhdGUgcnRjcF9iaXRyYXRlID0gY3VycmVu
dF9iaXRyYXRlXyAqIDAuMDU7CisgIGNvbnN0IFRpbWVEZWx0YSBpbnRlcnZhbCA9IGtSdGNwU2l6
ZSAvIHJ0Y3BfYml0cmF0ZTsKKyAgY29uc3QgVGltZURlbHRhIGtNaW5GZWVkYmFja0ludGVydmFs
ID0gVGltZURlbHRhOjptcygyMDApOworICBjb25zdCBUaW1lRGVsdGEga01heEZlZWRiYWNrSW50
ZXJ2YWwgPSBUaW1lRGVsdGE6Om1zKDEwMDApOworICByZXR1cm4gaW50ZXJ2YWwuQ2xhbXBlZChr
TWluRmVlZGJhY2tJbnRlcnZhbCwga01heEZlZWRiYWNrSW50ZXJ2YWwpOwogfQogCi1ib29sIEFp
bWRSYXRlQ29udHJvbDo6VGltZVRvUmVkdWNlRnVydGhlcigKLSAgICBpbnQ2NF90IG5vd19tcywK
LSAgICB1aW50MzJfdCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpIGNvbnN0IHsKLSAgY29uc3Qg
aW50NjRfdCBiaXRyYXRlX3JlZHVjdGlvbl9pbnRlcnZhbCA9Ci0gICAgICBzdGQ6Om1heDxpbnQ2
NF90PihzdGQ6Om1pbjxpbnQ2NF90PihydHRfLCAyMDApLCAxMCk7Ci0gIGlmIChub3dfbXMgLSB0
aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfID49IGJpdHJhdGVfcmVkdWN0aW9uX2ludGVydmFsKSB7
Citib29sIEFpbWRSYXRlQ29udHJvbDo6VGltZVRvUmVkdWNlRnVydGhlcihUaW1lc3RhbXAgYXRf
dGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRl
IGVzdGltYXRlZF90aHJvdWdocHV0KSBjb25zdCB7CisgIGNvbnN0IFRpbWVEZWx0YSBiaXRyYXRl
X3JlZHVjdGlvbl9pbnRlcnZhbCA9CisgICAgICBydHRfLkNsYW1wZWQoVGltZURlbHRhOjptcygx
MCksIFRpbWVEZWx0YTo6bXMoMjAwKSk7CisgIGlmIChhdF90aW1lIC0gdGltZV9sYXN0X2JpdHJh
dGVfY2hhbmdlXyA+PSBiaXRyYXRlX3JlZHVjdGlvbl9pbnRlcnZhbCkgewogICAgIHJldHVybiB0
cnVlOwogICB9CiAgIGlmIChWYWxpZEVzdGltYXRlKCkpIHsKICAgICAvLyBUT0RPKHRlcmVsaXVz
L2hvbG1lcik6IEludmVzdGlnYXRlIGNvbnNlcXVlbmNlcyBvZiBpbmNyZWFzaW5nCiAgICAgLy8g
dGhlIHRocmVzaG9sZCB0byAwLjk1ICogTGF0ZXN0RXN0aW1hdGUoKS4KLSAgICBjb25zdCB1aW50
MzJfdCB0aHJlc2hvbGQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oMC41ICogTGF0ZXN0RXN0aW1h
dGUoKSk7Ci0gICAgcmV0dXJuIGVzdGltYXRlZF90aHJvdWdocHV0X2JwcyA8IHRocmVzaG9sZDsK
KyAgICBjb25zdCBEYXRhUmF0ZSB0aHJlc2hvbGQgPSAwLjUgKiBMYXRlc3RFc3RpbWF0ZSgpOwor
ICAgIHJldHVybiBlc3RpbWF0ZWRfdGhyb3VnaHB1dCA8IHRocmVzaG9sZDsKICAgfQogICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgQWltZFJhdGVDb250cm9sOjpJbml0aWFsVGltZVRvUmVkdWNl
RnVydGhlcihpbnQ2NF90IG5vd19tcykgY29uc3QgeworYm9vbCBBaW1kUmF0ZUNvbnRyb2w6Oklu
aXRpYWxUaW1lVG9SZWR1Y2VGdXJ0aGVyKFRpbWVzdGFtcCBhdF90aW1lKSBjb25zdCB7CiAgIGlm
ICghaW5faW5pdGlhbF9iYWNrb2ZmX2ludGVydmFsX2V4cGVyaW1lbnRfKSB7CiAgICAgcmV0dXJu
IFZhbGlkRXN0aW1hdGUoKSAmJgotICAgICAgICAgICBUaW1lVG9SZWR1Y2VGdXJ0aGVyKG5vd19t
cywgTGF0ZXN0RXN0aW1hdGUoKSAvIDIgLSAxKTsKKyAgICAgICAgICAgVGltZVRvUmVkdWNlRnVy
dGhlcihhdF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhdGVzdEVzdGlt
YXRlKCkgLyAyIC0gRGF0YVJhdGU6OmJwcygxKSk7CiAgIH0KICAgLy8gVE9ETyh0ZXJlbGl1cyk6
IFdlIGNvdWxkIHVzZSB0aGUgUlRUIChjbGFtcGVkIHRvIHN1aXRhYmxlIGxpbWl0cykgaW5zdGVh
ZAogICAvLyBvZiBhIGZpeGVkIGJpdHJhdGVfcmVkdWN0aW9uX2ludGVydmFsLgotICBpZiAodGlt
ZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfID09IC0xIHx8Ci0gICAgICBub3dfbXMgLSB0aW1lX2xh
c3RfYml0cmF0ZV9kZWNyZWFzZV8gPj0gaW5pdGlhbF9iYWNrb2ZmX2ludGVydmFsX21zXykgewor
ICBpZiAodGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfLklzSW5maW5pdGUoKSB8fAorICAgICAg
YXRfdGltZSAtIHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNlXyA+PSBpbml0aWFsX2JhY2tvZmZf
aW50ZXJ2YWxfKSB7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KICAgcmV0dXJuIGZhbHNlOwogfQog
Ci11aW50MzJfdCBBaW1kUmF0ZUNvbnRyb2w6OkxhdGVzdEVzdGltYXRlKCkgY29uc3QgewotICBy
ZXR1cm4gY3VycmVudF9iaXRyYXRlX2Jwc187CitEYXRhUmF0ZSBBaW1kUmF0ZUNvbnRyb2w6Okxh
dGVzdEVzdGltYXRlKCkgY29uc3QgeworICByZXR1cm4gY3VycmVudF9iaXRyYXRlXzsKIH0KIAot
dm9pZCBBaW1kUmF0ZUNvbnRyb2w6OlNldFJ0dChpbnQ2NF90IHJ0dCkgewordm9pZCBBaW1kUmF0
ZUNvbnRyb2w6OlNldFJ0dChUaW1lRGVsdGEgcnR0KSB7CiAgIHJ0dF8gPSBydHQ7CiB9CiAKLXVp
bnQzMl90IEFpbWRSYXRlQ29udHJvbDo6VXBkYXRlKGNvbnN0IFJhdGVDb250cm9sSW5wdXQqIGlu
cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBub3dfbXMpIHsK
K0RhdGFSYXRlIEFpbWRSYXRlQ29udHJvbDo6VXBkYXRlKGNvbnN0IFJhdGVDb250cm9sSW5wdXQq
IGlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3Rp
bWUpIHsKICAgUlRDX0NIRUNLKGlucHV0KTsKIAogICAvLyBTZXQgdGhlIGluaXRpYWwgYml0IHJh
dGUgdmFsdWUgdG8gd2hhdCB3ZSdyZSByZWNlaXZpbmcgdGhlIGZpcnN0IGhhbGYKICAgLy8gc2Vj
b25kLgogICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85Mzc5KTogVGhlIGNvbW1lbnQgYWJvdmUg
ZG9lc24ndCBtYXRjaCB0byB0aGUgY29kZS4KICAgaWYgKCFiaXRyYXRlX2lzX2luaXRpYWxpemVk
XykgewotICAgIGNvbnN0IGludDY0X3Qga0luaXRpYWxpemF0aW9uVGltZU1zID0gNTAwMDsKLSAg
ICBSVENfRENIRUNLX0xFKGtCaXRyYXRlV2luZG93TXMsIGtJbml0aWFsaXphdGlvblRpbWVNcyk7
Ci0gICAgaWYgKHRpbWVfZmlyc3RfdGhyb3VnaHB1dF9lc3RpbWF0ZV8gPCAwKSB7Ci0gICAgICBp
ZiAoaW5wdXQtPmVzdGltYXRlZF90aHJvdWdocHV0X2JwcykKLSAgICAgICAgdGltZV9maXJzdF90
aHJvdWdocHV0X2VzdGltYXRlXyA9IG5vd19tczsKLSAgICB9IGVsc2UgaWYgKG5vd19tcyAtIHRp
bWVfZmlyc3RfdGhyb3VnaHB1dF9lc3RpbWF0ZV8gPgotICAgICAgICAgICAgICAgICAgIGtJbml0
aWFsaXphdGlvblRpbWVNcyAmJgotICAgICAgICAgICAgICAgaW5wdXQtPmVzdGltYXRlZF90aHJv
dWdocHV0X2JwcykgewotICAgICAgY3VycmVudF9iaXRyYXRlX2Jwc18gPSAqaW5wdXQtPmVzdGlt
YXRlZF90aHJvdWdocHV0X2JwczsKKyAgICBjb25zdCBUaW1lRGVsdGEga0luaXRpYWxpemF0aW9u
VGltZSA9IFRpbWVEZWx0YTo6c2Vjb25kcyg1KTsKKyAgICBSVENfRENIRUNLX0xFKGtCaXRyYXRl
V2luZG93TXMsIGtJbml0aWFsaXphdGlvblRpbWUubXMoKSk7CisgICAgaWYgKHRpbWVfZmlyc3Rf
dGhyb3VnaHB1dF9lc3RpbWF0ZV8uSXNJbmZpbml0ZSgpKSB7CisgICAgICBpZiAoaW5wdXQtPmVz
dGltYXRlZF90aHJvdWdocHV0KQorICAgICAgICB0aW1lX2ZpcnN0X3Rocm91Z2hwdXRfZXN0aW1h
dGVfID0gYXRfdGltZTsKKyAgICB9IGVsc2UgaWYgKGF0X3RpbWUgLSB0aW1lX2ZpcnN0X3Rocm91
Z2hwdXRfZXN0aW1hdGVfID4KKyAgICAgICAgICAgICAgICAgICBrSW5pdGlhbGl6YXRpb25UaW1l
ICYmCisgICAgICAgICAgICAgICBpbnB1dC0+ZXN0aW1hdGVkX3Rocm91Z2hwdXQpIHsKKyAgICAg
IGN1cnJlbnRfYml0cmF0ZV8gPSAqaW5wdXQtPmVzdGltYXRlZF90aHJvdWdocHV0OwogICAgICAg
Yml0cmF0ZV9pc19pbml0aWFsaXplZF8gPSB0cnVlOwogICAgIH0KICAgfQogCi0gIGN1cnJlbnRf
Yml0cmF0ZV9icHNfID0gQ2hhbmdlQml0cmF0ZShjdXJyZW50X2JpdHJhdGVfYnBzXywgKmlucHV0
LCBub3dfbXMpOwotICByZXR1cm4gY3VycmVudF9iaXRyYXRlX2Jwc187CisgIGN1cnJlbnRfYml0
cmF0ZV8gPSBDaGFuZ2VCaXRyYXRlKGN1cnJlbnRfYml0cmF0ZV8sICppbnB1dCwgYXRfdGltZSk7
CisgIHJldHVybiBjdXJyZW50X2JpdHJhdGVfOwogfQogCi12b2lkIEFpbWRSYXRlQ29udHJvbDo6
U2V0RXN0aW1hdGUoaW50IGJpdHJhdGVfYnBzLCBpbnQ2NF90IG5vd19tcykgewordm9pZCBBaW1k
UmF0ZUNvbnRyb2w6OlNldEVzdGltYXRlKERhdGFSYXRlIGJpdHJhdGUsIFRpbWVzdGFtcCBhdF90
aW1lKSB7CiAgIGJpdHJhdGVfaXNfaW5pdGlhbGl6ZWRfID0gdHJ1ZTsKLSAgdWludDMyX3QgcHJl
dl9iaXRyYXRlX2JwcyA9IGN1cnJlbnRfYml0cmF0ZV9icHNfOwotICBjdXJyZW50X2JpdHJhdGVf
YnBzXyA9IENsYW1wQml0cmF0ZShiaXRyYXRlX2JwcywgYml0cmF0ZV9icHMpOwotICB0aW1lX2xh
c3RfYml0cmF0ZV9jaGFuZ2VfID0gbm93X21zOwotICBpZiAoY3VycmVudF9iaXRyYXRlX2Jwc18g
PCBwcmV2X2JpdHJhdGVfYnBzKSB7Ci0gICAgdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfID0g
bm93X21zOworICBEYXRhUmF0ZSBwcmV2X2JpdHJhdGUgPSBjdXJyZW50X2JpdHJhdGVfOworICBj
dXJyZW50X2JpdHJhdGVfID0gQ2xhbXBCaXRyYXRlKGJpdHJhdGUsIGJpdHJhdGUpOworICB0aW1l
X2xhc3RfYml0cmF0ZV9jaGFuZ2VfID0gYXRfdGltZTsKKyAgaWYgKGN1cnJlbnRfYml0cmF0ZV8g
PCBwcmV2X2JpdHJhdGUpIHsKKyAgICB0aW1lX2xhc3RfYml0cmF0ZV9kZWNyZWFzZV8gPSBhdF90
aW1lOwogICB9CiB9CiAKLWludCBBaW1kUmF0ZUNvbnRyb2w6OkdldE5lYXJNYXhJbmNyZWFzZVJh
dGVCcHMoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0tfR1QoY3VycmVudF9iaXRyYXRlX2Jwc18sIDAp
OwotICBkb3VibGUgYml0c19wZXJfZnJhbWUgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGN1cnJlbnRf
Yml0cmF0ZV9icHNfKSAvIDMwLjA7Ci0gIGRvdWJsZSBwYWNrZXRzX3Blcl9mcmFtZSA9IHN0ZDo6
Y2VpbChiaXRzX3Blcl9mcmFtZSAvICg4LjAgKiAxMjAwLjApKTsKLSAgZG91YmxlIGF2Z19wYWNr
ZXRfc2l6ZV9iaXRzID0gYml0c19wZXJfZnJhbWUgLyBwYWNrZXRzX3Blcl9mcmFtZTsKK2RvdWJs
ZSBBaW1kUmF0ZUNvbnRyb2w6OkdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJTZWNvbmQoKSBj
b25zdCB7CisgIFJUQ19EQ0hFQ0soIWN1cnJlbnRfYml0cmF0ZV8uSXNaZXJvKCkpOworICBjb25z
dCBUaW1lRGVsdGEga0ZyYW1lSW50ZXJ2YWwgPSBUaW1lRGVsdGE6OnNlY29uZHMoMSkgLyAzMDsK
KyAgRGF0YVNpemUgZnJhbWVfc2l6ZSA9IGN1cnJlbnRfYml0cmF0ZV8gKiBrRnJhbWVJbnRlcnZh
bDsKKyAgY29uc3QgRGF0YVNpemUga1BhY2tldFNpemUgPSBEYXRhU2l6ZTo6Ynl0ZXMoMTIwMCk7
CisgIGRvdWJsZSBwYWNrZXRzX3Blcl9mcmFtZSA9IHN0ZDo6Y2VpbChmcmFtZV9zaXplIC8ga1Bh
Y2tldFNpemUpOworICBEYXRhU2l6ZSBhdmdfcGFja2V0X3NpemUgPSBmcmFtZV9zaXplIC8gcGFj
a2V0c19wZXJfZnJhbWU7CiAKICAgLy8gQXBwcm94aW1hdGUgdGhlIG92ZXItdXNlIGVzdGltYXRv
ciBkZWxheSB0byAxMDAgbXMuCi0gIGNvbnN0IGludDY0X3QgcmVzcG9uc2VfdGltZSA9IGluX2V4
cGVyaW1lbnRfID8gKHJ0dF8gKyAxMDApICogMiA6IHJ0dF8gKyAxMDA7Ci0gIGNvbnN0ZXhwciBk
b3VibGUga01pbkluY3JlYXNlUmF0ZUJwcyA9IDQwMDA7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHN0ZDo6bWF4KAotICAgICAga01pbkluY3JlYXNlUmF0ZUJwcywgKGF2Z19wYWNrZXRfc2l6
ZV9iaXRzICogMTAwMCkgLyByZXNwb25zZV90aW1lKSk7CisgIFRpbWVEZWx0YSByZXNwb25zZV90
aW1lID0gcnR0XyArIFRpbWVEZWx0YTo6bXMoMTAwKTsKKyAgaWYgKGluX2V4cGVyaW1lbnRfKQor
ICAgIHJlc3BvbnNlX3RpbWUgPSByZXNwb25zZV90aW1lICogMjsKKyAgZG91YmxlIGluY3JlYXNl
X3JhdGVfYnBzX3Blcl9zZWNvbmQgPQorICAgICAgKGF2Z19wYWNrZXRfc2l6ZSAvIHJlc3BvbnNl
X3RpbWUpLmJwczxkb3VibGU+KCk7CisgIGRvdWJsZSBrTWluSW5jcmVhc2VSYXRlQnBzUGVyU2Vj
b25kID0gNDAwMDsKKyAgcmV0dXJuIHN0ZDo6bWF4KGtNaW5JbmNyZWFzZVJhdGVCcHNQZXJTZWNv
bmQsIGluY3JlYXNlX3JhdGVfYnBzX3Blcl9zZWNvbmQpOwogfQogCi1pbnQgQWltZFJhdGVDb250
cm9sOjpHZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZE1zKCkgY29uc3QgewotICBjb25zdCBpbnQg
a01pblBlcmlvZE1zID0gc21vb3RoaW5nX2V4cGVyaW1lbnRfID8gNTAwIDogMjAwMDsKLSAgY29u
c3RleHByIGludCBrRGVmYXVsdFBlcmlvZE1zID0gMzAwMDsKLSAgY29uc3RleHByIGludCBrTWF4
UGVyaW9kTXMgPSA1MDAwMDsKK1RpbWVEZWx0YSBBaW1kUmF0ZUNvbnRyb2w6OkdldEV4cGVjdGVk
QmFuZHdpZHRoUGVyaW9kKCkgY29uc3QgeworICBjb25zdCBUaW1lRGVsdGEga01pblBlcmlvZCA9
CisgICAgICBzbW9vdGhpbmdfZXhwZXJpbWVudF8gPyBUaW1lRGVsdGE6Om1zKDUwMCkgOiBUaW1l
RGVsdGE6OnNlY29uZHMoMik7CisgIGNvbnN0IFRpbWVEZWx0YSBrRGVmYXVsdFBlcmlvZCA9IFRp
bWVEZWx0YTo6c2Vjb25kcygzKTsKKyAgY29uc3QgVGltZURlbHRhIGtNYXhQZXJpb2QgPSBUaW1l
RGVsdGE6OnNlY29uZHMoNTApOwogCi0gIGludCBpbmNyZWFzZV9yYXRlID0gR2V0TmVhck1heElu
Y3JlYXNlUmF0ZUJwcygpOworICBkb3VibGUgaW5jcmVhc2VfcmF0ZV9icHNfcGVyX3NlY29uZCA9
IEdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJTZWNvbmQoKTsKICAgaWYgKCFsYXN0X2RlY3Jl
YXNlXykKLSAgICByZXR1cm4gc21vb3RoaW5nX2V4cGVyaW1lbnRfID8ga01pblBlcmlvZE1zIDog
a0RlZmF1bHRQZXJpb2RNczsKLQotICByZXR1cm4gc3RkOjptaW4oa01heFBlcmlvZE1zLAotICAg
ICAgICAgICAgICAgICAgc3RkOjptYXg8aW50PigxMDAwICogc3RhdGljX2Nhc3Q8aW50NjRfdD4o
Kmxhc3RfZGVjcmVhc2VfKSAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmNyZWFzZV9yYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTWluUGVyaW9k
TXMpKTsKKyAgICByZXR1cm4gc21vb3RoaW5nX2V4cGVyaW1lbnRfID8ga01pblBlcmlvZCA6IGtE
ZWZhdWx0UGVyaW9kOworICBkb3VibGUgdGltZV90b19yZWNvdmVyX2RlY3JlYXNlX3NlY29uZHMg
PQorICAgICAgbGFzdF9kZWNyZWFzZV8tPmJwcygpIC8gaW5jcmVhc2VfcmF0ZV9icHNfcGVyX3Nl
Y29uZDsKKyAgVGltZURlbHRhIHBlcmlvZCA9IFRpbWVEZWx0YTo6c2Vjb25kcyh0aW1lX3RvX3Jl
Y292ZXJfZGVjcmVhc2Vfc2Vjb25kcyk7CisgIHJldHVybiBwZXJpb2QuQ2xhbXBlZChrTWluUGVy
aW9kLCBrTWF4UGVyaW9kKTsKIH0KIAotdWludDMyX3QgQWltZFJhdGVDb250cm9sOjpDaGFuZ2VC
aXRyYXRlKHVpbnQzMl90IG5ld19iaXRyYXRlX2JwcywKK0RhdGFSYXRlIEFpbWRSYXRlQ29udHJv
bDo6Q2hhbmdlQml0cmF0ZShEYXRhUmF0ZSBuZXdfYml0cmF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSYXRlQ29udHJvbElucHV0JiBpbnB1dCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG5vd19tcykgewot
ICB1aW50MzJfdCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMgPQotICAgICAgaW5wdXQuZXN0aW1h
dGVkX3Rocm91Z2hwdXRfYnBzLnZhbHVlX29yKGxhdGVzdF9lc3RpbWF0ZWRfdGhyb3VnaHB1dF9i
cHNfKTsKLSAgaWYgKGlucHV0LmVzdGltYXRlZF90aHJvdWdocHV0X2JwcykKLSAgICBsYXRlc3Rf
ZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzXyA9ICppbnB1dC5lc3RpbWF0ZWRfdGhyb3VnaHB1dF9i
cHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0
X3RpbWUpIHsKKyAgRGF0YVJhdGUgZXN0aW1hdGVkX3Rocm91Z2hwdXQgPQorICAgICAgaW5wdXQu
ZXN0aW1hdGVkX3Rocm91Z2hwdXQudmFsdWVfb3IobGF0ZXN0X2VzdGltYXRlZF90aHJvdWdocHV0
Xyk7CisgIGlmIChpbnB1dC5lc3RpbWF0ZWRfdGhyb3VnaHB1dCkKKyAgICBsYXRlc3RfZXN0aW1h
dGVkX3Rocm91Z2hwdXRfID0gKmlucHV0LmVzdGltYXRlZF90aHJvdWdocHV0OwogCiAgIC8vIEFu
IG92ZXItdXNlIHNob3VsZCBhbHdheXMgdHJpZ2dlciB1cyB0byByZWR1Y2UgdGhlIGJpdHJhdGUs
IGV2ZW4gdGhvdWdoCiAgIC8vIHdlIGhhdmUgbm90IHlldCBlc3RhYmxpc2hlZCBvdXIgZmlyc3Qg
ZXN0aW1hdGUuIEJ5IGFjdGluZyBvbiB0aGUgb3Zlci11c2UsCiAgIC8vIHdlIHdpbGwgZW5kIHVw
IHdpdGggYSB2YWxpZCBlc3RpbWF0ZS4KICAgaWYgKCFiaXRyYXRlX2lzX2luaXRpYWxpemVkXyAm
JgogICAgICAgaW5wdXQuYndfc3RhdGUgIT0gQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZykK
LSAgICByZXR1cm4gY3VycmVudF9iaXRyYXRlX2Jwc187CisgICAgcmV0dXJuIGN1cnJlbnRfYml0
cmF0ZV87CiAKLSAgQ2hhbmdlU3RhdGUoaW5wdXQsIG5vd19tcyk7CisgIENoYW5nZVN0YXRlKGlu
cHV0LCBhdF90aW1lKTsKICAgLy8gQ2FsY3VsYXRlZCBoZXJlIGJlY2F1c2UgaXQncyB1c2VkIGlu
IG11bHRpcGxlIHBsYWNlcy4KLSAgY29uc3QgZmxvYXQgZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2Jw
cyA9IGVzdGltYXRlZF90aHJvdWdocHV0X2JwcyAvIDEwMDAuMGY7CisgIGNvbnN0IGRvdWJsZSBl
c3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzID0gZXN0aW1hdGVkX3Rocm91Z2hwdXQua2Jwczxkb3Vi
bGU+KCk7CisKICAgLy8gQ2FsY3VsYXRlIHRoZSBtYXggYml0IHJhdGUgc3RkIGRldiBnaXZlbiB0
aGUgbm9ybWFsaXplZAotICAvLyB2YXJpYW5jZSBhbmQgdGhlIGN1cnJlbnQgdGhyb3VnaHB1dCBi
aXRyYXRlLgotICBjb25zdCBmbG9hdCBzdGRfbWF4X2JpdF9yYXRlID0KLSAgICAgIHNxcnQodmFy
X21heF9iaXRyYXRlX2ticHNfICogYXZnX21heF9iaXRyYXRlX2ticHNfKTsKKyAgLy8gdmFyaWFu
Y2UgYW5kIHRoZSBjdXJyZW50IHRocm91Z2hwdXQgYml0cmF0ZS4gVGhlIHN0YW5kYXJkIGRldmlh
dGlvbiB3aWxsCisgIC8vIG9ubHkgYmUgdXNlZCBpZiBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ti
cHNfIGhhcyBhIHZhbHVlLgorICBjb25zdCBkb3VibGUgc3RkX2xpbmtfY2FwYWNpdHlfa2JwcyA9
CisgICAgICBzcXJ0KHZhcl9saW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfICoKKyAgICAgICAg
ICAgbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy52YWx1ZV9vcigwKSk7CiAgIHN3aXRjaCAo
cmF0ZV9jb250cm9sX3N0YXRlXykgewogICAgIGNhc2Uga1JjSG9sZDoKICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBrUmNJbmNyZWFzZToKLSAgICAgIGlmIChhdmdfbWF4X2JpdHJhdGVfa2Jwc18g
Pj0gMCAmJgotICAgICAgICAgIGVzdGltYXRlZF90aHJvdWdocHV0X2ticHMgPgotICAgICAgICAg
ICAgICBhdmdfbWF4X2JpdHJhdGVfa2Jwc18gKyAzICogc3RkX21heF9iaXRfcmF0ZSkgewotICAg
ICAgICByYXRlX2NvbnRyb2xfcmVnaW9uXyA9IGtSY01heFVua25vd247Ci0KLSAgICAgICAgYXZn
X21heF9iaXRyYXRlX2ticHNfID0gLTEuMDsKKyAgICAgIGlmIChsaW5rX2NhcGFjaXR5X2VzdGlt
YXRlX2ticHNfLmhhc192YWx1ZSgpICYmCisgICAgICAgICAgZXN0aW1hdGVkX3Rocm91Z2hwdXRf
a2JwcyA+IGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18udmFsdWUoKSArCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzICogc3RkX2xpbmtfY2FwYWNpdHlfa2Jw
cykgeworICAgICAgICAvLyBUaGUgbGluayBjYXBhY2l0eSBhcHBlYXJzIHRvIGhhdmUgY2hhbmdl
ZC4gRm9yZ2V0IHRoZSBwcmV2aW91cworICAgICAgICAvLyBlc3RpbWF0ZSBhbmQgdXNlIG11bHRp
cGxpY2F0aXZlIGluY3JlYXNlIHRvIHF1aWNrbHkgZGlzY292ZXIgbmV3CisgICAgICAgIC8vIGNh
cGFjaXR5LgorICAgICAgICBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnJlc2V0KCk7CiAg
ICAgICB9Ci0gICAgICBpZiAocmF0ZV9jb250cm9sX3JlZ2lvbl8gPT0ga1JjTmVhck1heCkgewot
ICAgICAgICB1aW50MzJfdCBhZGRpdGl2ZV9pbmNyZWFzZV9icHMgPQotICAgICAgICAgICAgQWRk
aXRpdmVSYXRlSW5jcmVhc2Uobm93X21zLCB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfKTsKLSAg
ICAgICAgbmV3X2JpdHJhdGVfYnBzICs9IGFkZGl0aXZlX2luY3JlYXNlX2JwczsKKyAgICAgIGlm
IChsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLmhhc192YWx1ZSgpKSB7CisgICAgICAgIC8v
IFRoZSBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfIGlzIHJlc2V0IGlmIHRoZSBtZWFzdXJl
ZCB0aHJvdWdocHV0CisgICAgICAgIC8vIGlzIHRvbyBmYXIgZnJvbSB0aGUgZXN0aW1hdGUuIFdl
IGNhbiB0aGVyZWZvcmUgYXNzdW1lIHRoYXQgb3VyIHRhcmdldAorICAgICAgICAvLyByYXRlIGlz
IHJlYXNvbmFibHkgY2xvc2UgdG8gbGluayBjYXBhY2l0eSBhbmQgdXNlIGFkZGl0aXZlIGluY3Jl
YXNlLgorICAgICAgICBEYXRhUmF0ZSBhZGRpdGl2ZV9pbmNyZWFzZSA9CisgICAgICAgICAgICBB
ZGRpdGl2ZVJhdGVJbmNyZWFzZShhdF90aW1lLCB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfKTsK
KyAgICAgICAgbmV3X2JpdHJhdGUgKz0gYWRkaXRpdmVfaW5jcmVhc2U7CiAgICAgICB9IGVsc2Ug
ewotICAgICAgICB1aW50MzJfdCBtdWx0aXBsaWNhdGl2ZV9pbmNyZWFzZV9icHMgPSBNdWx0aXBs
aWNhdGl2ZVJhdGVJbmNyZWFzZSgKLSAgICAgICAgICAgIG5vd19tcywgdGltZV9sYXN0X2JpdHJh
dGVfY2hhbmdlXywgbmV3X2JpdHJhdGVfYnBzKTsKLSAgICAgICAgbmV3X2JpdHJhdGVfYnBzICs9
IG11bHRpcGxpY2F0aXZlX2luY3JlYXNlX2JwczsKKyAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2
ZSBhbiBlc3RpbWF0ZSBvZiB0aGUgbGluayBjYXBhY2l0eSwgdXNlIGZhc3RlciByYW1wIHVwCisg
ICAgICAgIC8vIHRvIGRpc2NvdmVyIHRoZSBjYXBhY2l0eS4KKyAgICAgICAgRGF0YVJhdGUgbXVs
dGlwbGljYXRpdmVfaW5jcmVhc2UgPSBNdWx0aXBsaWNhdGl2ZVJhdGVJbmNyZWFzZSgKKyAgICAg
ICAgICAgIGF0X3RpbWUsIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8sIG5ld19iaXRyYXRlKTsK
KyAgICAgICAgbmV3X2JpdHJhdGUgKz0gbXVsdGlwbGljYXRpdmVfaW5jcmVhc2U7CiAgICAgICB9
CiAKLSAgICAgIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8gPSBub3dfbXM7CisgICAgICB0aW1l
X2xhc3RfYml0cmF0ZV9jaGFuZ2VfID0gYXRfdGltZTsKICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBrUmNEZWNyZWFzZToKLSAgICAgIC8vIFNldCBiaXQgcmF0ZSB0byBzb21ldGhpbmcgc2xpZ2h0
bHkgbG93ZXIgdGhhbiBtYXgKKyAgICAgIC8vIFNldCBiaXQgcmF0ZSB0byBzb21ldGhpbmcgc2xp
Z2h0bHkgbG93ZXIgdGhhbiB0aGUgbWVhc3VyZWQgdGhyb3VnaHB1dAogICAgICAgLy8gdG8gZ2V0
IHJpZCBvZiBhbnkgc2VsZi1pbmR1Y2VkIGRlbGF5LgotICAgICAgbmV3X2JpdHJhdGVfYnBzID0K
LSAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYmV0YV8gKiBlc3RpbWF0ZWRfdGhyb3Vn
aHB1dF9icHMgKyAwLjUpOwotICAgICAgaWYgKG5ld19iaXRyYXRlX2JwcyA+IGN1cnJlbnRfYml0
cmF0ZV9icHNfKSB7CisgICAgICBuZXdfYml0cmF0ZSA9IGVzdGltYXRlZF90aHJvdWdocHV0ICog
YmV0YV87CisgICAgICBpZiAobmV3X2JpdHJhdGUgPiBjdXJyZW50X2JpdHJhdGVfKSB7CiAgICAg
ICAgIC8vIEF2b2lkIGluY3JlYXNpbmcgdGhlIHJhdGUgd2hlbiBvdmVyLXVzaW5nLgotICAgICAg
ICBpZiAocmF0ZV9jb250cm9sX3JlZ2lvbl8gIT0ga1JjTWF4VW5rbm93bikgewotICAgICAgICAg
IG5ld19iaXRyYXRlX2JwcyA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigKLSAgICAgICAgICAgICAg
YmV0YV8gKiBhdmdfbWF4X2JpdHJhdGVfa2Jwc18gKiAxMDAwICsgMC41Zik7CisgICAgICAgIGlm
IChsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLmhhc192YWx1ZSgpKSB7CisgICAgICAgICAg
bmV3X2JpdHJhdGUgPQorICAgICAgICAgICAgICBEYXRhUmF0ZTo6a2JwcyhiZXRhXyAqIGxpbmtf
Y2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18udmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgbmV3
X2JpdHJhdGVfYnBzID0gc3RkOjptaW4obmV3X2JpdHJhdGVfYnBzLCBjdXJyZW50X2JpdHJhdGVf
YnBzXyk7CisgICAgICAgIG5ld19iaXRyYXRlID0gc3RkOjptaW4obmV3X2JpdHJhdGUsIGN1cnJl
bnRfYml0cmF0ZV8pOwogICAgICAgfQotICAgICAgcmF0ZV9jb250cm9sX3JlZ2lvbl8gPSBrUmNO
ZWFyTWF4OwogCi0gICAgICBpZiAoYml0cmF0ZV9pc19pbml0aWFsaXplZF8gJiYKLSAgICAgICAg
ICBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMgPCBjdXJyZW50X2JpdHJhdGVfYnBzXykgewotICAg
ICAgICBjb25zdGV4cHIgZmxvYXQga0RlZ3JhZGF0aW9uRmFjdG9yID0gMC45ZjsKKyAgICAgIGlm
IChiaXRyYXRlX2lzX2luaXRpYWxpemVkXyAmJiBlc3RpbWF0ZWRfdGhyb3VnaHB1dCA8IGN1cnJl
bnRfYml0cmF0ZV8pIHsKKyAgICAgICAgY29uc3RleHByIGRvdWJsZSBrRGVncmFkYXRpb25GYWN0
b3IgPSAwLjk7CiAgICAgICAgIGlmIChzbW9vdGhpbmdfZXhwZXJpbWVudF8gJiYKLSAgICAgICAg
ICAgIG5ld19iaXRyYXRlX2JwcyA8Ci0gICAgICAgICAgICAgICAga0RlZ3JhZGF0aW9uRmFjdG9y
ICogYmV0YV8gKiBjdXJyZW50X2JpdHJhdGVfYnBzXykgeworICAgICAgICAgICAgbmV3X2JpdHJh
dGUgPCBrRGVncmFkYXRpb25GYWN0b3IgKiBiZXRhXyAqIGN1cnJlbnRfYml0cmF0ZV8pIHsKICAg
ICAgICAgICAvLyBJZiBiaXRyYXRlIGRlY3JlYXNlcyBtb3JlIHRoYW4gYSBub3JtYWwgYmFjayBv
ZmYgYWZ0ZXIgb3ZlcnVzZSwgaXQKICAgICAgICAgICAvLyBpbmRpY2F0ZXMgYSByZWFsIG5ldHdv
cmsgZGVncmFkYXRpb24uIFdlIGRvIG5vdCBsZXQgc3VjaCBhIGRlY3JlYXNlCiAgICAgICAgICAg
Ly8gdG8gZGV0ZXJtaW5lIHRoZSBiYW5kd2lkdGggZXN0aW1hdGlvbiBwZXJpb2QuCiAgICAgICAg
ICAgbGFzdF9kZWNyZWFzZV8gPSBhYnNsOjpudWxsb3B0OwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgIGxhc3RfZGVjcmVhc2VfID0gY3VycmVudF9iaXRyYXRlX2Jwc18gLSBuZXdfYml0cmF0
ZV9icHM7CisgICAgICAgICAgbGFzdF9kZWNyZWFzZV8gPSBjdXJyZW50X2JpdHJhdGVfIC0gbmV3
X2JpdHJhdGU7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGlmIChlc3RpbWF0ZWRfdGhyb3Vn
aHB1dF9rYnBzIDwKLSAgICAgICAgICBhdmdfbWF4X2JpdHJhdGVfa2Jwc18gLSAzICogc3RkX21h
eF9iaXRfcmF0ZSkgewotICAgICAgICBhdmdfbWF4X2JpdHJhdGVfa2Jwc18gPSAtMS4wZjsKKyAg
ICAgIGlmIChsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLmhhc192YWx1ZSgpICYmCisgICAg
ICAgICAgZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwcyA8IGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVf
a2Jwc18udmFsdWUoKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzICogc3RkX2xpbmtfY2FwYWNpdHlfa2JwcykgeworICAgICAgICAvLyBUaGUgY3VycmVudCB0
aHJvdWdocHV0IGlzIGZhciBmcm9tIHRoZSBlc3RpbWF0ZWQgbGluayBjYXBhY2l0eS4gQ2xlYXIK
KyAgICAgICAgLy8gdGhlIGVzdGltYXRlIHRvIGFsbG93IGFuIGZhc3QgdXBkYXRlIGluIFVwZGF0
ZUxpbmtDYXBhY2l0eUVzdGltYXRlLgorICAgICAgICBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ti
cHNfLnJlc2V0KCk7CiAgICAgICB9CiAKICAgICAgIGJpdHJhdGVfaXNfaW5pdGlhbGl6ZWRfID0g
dHJ1ZTsKLSAgICAgIFVwZGF0ZU1heFRocm91Z2hwdXRFc3RpbWF0ZShlc3RpbWF0ZWRfdGhyb3Vn
aHB1dF9rYnBzKTsKKyAgICAgIFVwZGF0ZUxpbmtDYXBhY2l0eUVzdGltYXRlKGVzdGltYXRlZF90
aHJvdWdocHV0X2ticHMpOwogICAgICAgLy8gU3RheSBvbiBob2xkIHVudGlsIHRoZSBwaXBlcyBh
cmUgY2xlYXJlZC4KICAgICAgIHJhdGVfY29udHJvbF9zdGF0ZV8gPSBrUmNIb2xkOwotICAgICAg
dGltZV9sYXN0X2JpdHJhdGVfY2hhbmdlXyA9IG5vd19tczsKLSAgICAgIHRpbWVfbGFzdF9iaXRy
YXRlX2RlY3JlYXNlXyA9IG5vd19tczsKKyAgICAgIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8g
PSBhdF90aW1lOworICAgICAgdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfID0gYXRfdGltZTsK
ICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKICAgICAgIGFzc2VydChmYWxzZSk7CiAgIH0K
LSAgcmV0dXJuIENsYW1wQml0cmF0ZShuZXdfYml0cmF0ZV9icHMsIGVzdGltYXRlZF90aHJvdWdo
cHV0X2Jwcyk7CisgIHJldHVybiBDbGFtcEJpdHJhdGUobmV3X2JpdHJhdGUsIGVzdGltYXRlZF90
aHJvdWdocHV0KTsKIH0KIAotdWludDMyX3QgQWltZFJhdGVDb250cm9sOjpDbGFtcEJpdHJhdGUo
Ci0gICAgdWludDMyX3QgbmV3X2JpdHJhdGVfYnBzLAotICAgIHVpbnQzMl90IGVzdGltYXRlZF90
aHJvdWdocHV0X2JwcykgY29uc3QgeworRGF0YVJhdGUgQWltZFJhdGVDb250cm9sOjpDbGFtcEJp
dHJhdGUoRGF0YVJhdGUgbmV3X2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEYXRhUmF0ZSBlc3RpbWF0ZWRfdGhyb3VnaHB1dCkgY29uc3QgewogICAvLyBE
b24ndCBjaGFuZ2UgdGhlIGJpdCByYXRlIGlmIHRoZSBzZW5kIHNpZGUgaXMgdG9vIGZhciBvZmYu
CiAgIC8vIFdlIGFsbG93IGEgYml0IG1vcmUgbGFnIGF0IHZlcnkgbG93IHJhdGVzIHRvIG5vdCB0
b28gZWFzaWx5IGdldCBzdHVjayBpZgogICAvLyB0aGUgZW5jb2RlciBwcm9kdWNlcyB1bmV2ZW4g
b3V0cHV0cy4KLSAgY29uc3QgdWludDMyX3QgbWF4X2JpdHJhdGVfYnBzID0KLSAgICAgIHN0YXRp
Y19jYXN0PHVpbnQzMl90PigxLjVmICogZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzKSArIDEwMDAw
OwotICBpZiAobmV3X2JpdHJhdGVfYnBzID4gY3VycmVudF9iaXRyYXRlX2Jwc18gJiYKLSAgICAg
IG5ld19iaXRyYXRlX2JwcyA+IG1heF9iaXRyYXRlX2JwcykgewotICAgIG5ld19iaXRyYXRlX2Jw
cyA9IHN0ZDo6bWF4KGN1cnJlbnRfYml0cmF0ZV9icHNfLCBtYXhfYml0cmF0ZV9icHMpOworICBj
b25zdCBEYXRhUmF0ZSBtYXhfYml0cmF0ZSA9IDEuNSAqIGVzdGltYXRlZF90aHJvdWdocHV0ICsg
RGF0YVJhdGU6OmticHMoMTApOworICBpZiAobmV3X2JpdHJhdGUgPiBjdXJyZW50X2JpdHJhdGVf
ICYmIG5ld19iaXRyYXRlID4gbWF4X2JpdHJhdGUpIHsKKyAgICBuZXdfYml0cmF0ZSA9IHN0ZDo6
bWF4KGN1cnJlbnRfYml0cmF0ZV8sIG1heF9iaXRyYXRlKTsKICAgfQotICBuZXdfYml0cmF0ZV9i
cHMgPSBzdGQ6Om1heChuZXdfYml0cmF0ZV9icHMsIG1pbl9jb25maWd1cmVkX2JpdHJhdGVfYnBz
Xyk7Ci0gIHJldHVybiBuZXdfYml0cmF0ZV9icHM7CisgIG5ld19iaXRyYXRlID0gc3RkOjptYXgo
bmV3X2JpdHJhdGUsIG1pbl9jb25maWd1cmVkX2JpdHJhdGVfKTsKKyAgcmV0dXJuIG5ld19iaXRy
YXRlOwogfQogCi11aW50MzJfdCBBaW1kUmF0ZUNvbnRyb2w6Ok11bHRpcGxpY2F0aXZlUmF0ZUlu
Y3JlYXNlKAotICAgIGludDY0X3Qgbm93X21zLAotICAgIGludDY0X3QgbGFzdF9tcywKLSAgICB1
aW50MzJfdCBjdXJyZW50X2JpdHJhdGVfYnBzKSBjb25zdCB7CitEYXRhUmF0ZSBBaW1kUmF0ZUNv
bnRyb2w6Ok11bHRpcGxpY2F0aXZlUmF0ZUluY3JlYXNlKAorICAgIFRpbWVzdGFtcCBhdF90aW1l
LAorICAgIFRpbWVzdGFtcCBsYXN0X3RpbWUsCisgICAgRGF0YVJhdGUgY3VycmVudF9iaXRyYXRl
KSBjb25zdCB7CiAgIGRvdWJsZSBhbHBoYSA9IDEuMDg7Ci0gIGlmIChsYXN0X21zID4gLTEpIHsK
LSAgICBhdXRvIHRpbWVfc2luY2VfbGFzdF91cGRhdGVfbXMgPQotICAgICAgICBydGM6OlNhZmVN
aW48aW50NjRfdD4obm93X21zIC0gbGFzdF9tcywgMTAwMCk7Ci0gICAgYWxwaGEgPSBwb3coYWxw
aGEsIHRpbWVfc2luY2VfbGFzdF91cGRhdGVfbXMgLyAxMDAwLjApOworICBpZiAobGFzdF90aW1l
LklzRmluaXRlKCkpIHsKKyAgICBhdXRvIHRpbWVfc2luY2VfbGFzdF91cGRhdGUgPSBhdF90aW1l
IC0gbGFzdF90aW1lOworICAgIGFscGhhID0gcG93KGFscGhhLCBzdGQ6Om1pbih0aW1lX3NpbmNl
X2xhc3RfdXBkYXRlLnNlY29uZHM8ZG91YmxlPigpLCAxLjApKTsKICAgfQotICB1aW50MzJfdCBt
dWx0aXBsaWNhdGl2ZV9pbmNyZWFzZV9icHMgPQotICAgICAgc3RkOjptYXgoY3VycmVudF9iaXRy
YXRlX2JwcyAqIChhbHBoYSAtIDEuMCksIDEwMDAuMCk7Ci0gIHJldHVybiBtdWx0aXBsaWNhdGl2
ZV9pbmNyZWFzZV9icHM7CisgIERhdGFSYXRlIG11bHRpcGxpY2F0aXZlX2luY3JlYXNlID0KKyAg
ICAgIHN0ZDo6bWF4KGN1cnJlbnRfYml0cmF0ZSAqIChhbHBoYSAtIDEuMCksIERhdGFSYXRlOjpi
cHMoMTAwMCkpOworICByZXR1cm4gbXVsdGlwbGljYXRpdmVfaW5jcmVhc2U7CiB9CiAKLXVpbnQz
Ml90IEFpbWRSYXRlQ29udHJvbDo6QWRkaXRpdmVSYXRlSW5jcmVhc2UoaW50NjRfdCBub3dfbXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qg
bGFzdF9tcykgY29uc3QgewotICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KChub3dfbXMg
LSBsYXN0X21zKSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0TmVhck1heElu
Y3JlYXNlUmF0ZUJwcygpIC8gMTAwMCk7CitEYXRhUmF0ZSBBaW1kUmF0ZUNvbnRyb2w6OkFkZGl0
aXZlUmF0ZUluY3JlYXNlKFRpbWVzdGFtcCBhdF90aW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgbGFzdF90aW1lKSBjb25zdCB7Cisg
IGRvdWJsZSB0aW1lX3BlcmlvZF9zZWNvbmRzID0gKGF0X3RpbWUgLSBsYXN0X3RpbWUpLnNlY29u
ZHM8ZG91YmxlPigpOworICBkb3VibGUgZGF0YV9yYXRlX2luY3JlYXNlX2JwcyA9CisgICAgICBH
ZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzUGVyU2Vjb25kKCkgKiB0aW1lX3BlcmlvZF9zZWNvbmRz
OworICByZXR1cm4gRGF0YVJhdGU6OmJwcyhkYXRhX3JhdGVfaW5jcmVhc2VfYnBzKTsKIH0KIAot
dm9pZCBBaW1kUmF0ZUNvbnRyb2w6OlVwZGF0ZU1heFRocm91Z2hwdXRFc3RpbWF0ZSgKLSAgICBm
bG9hdCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzKSB7Ci0gIGNvbnN0IGZsb2F0IGFscGhhID0g
MC4wNWY7Ci0gIGlmIChhdmdfbWF4X2JpdHJhdGVfa2Jwc18gPT0gLTEuMGYpIHsKLSAgICBhdmdf
bWF4X2JpdHJhdGVfa2Jwc18gPSBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzOwordm9pZCBBaW1k
UmF0ZUNvbnRyb2w6OlVwZGF0ZUxpbmtDYXBhY2l0eUVzdGltYXRlKAorICAgIGRvdWJsZSBlc3Rp
bWF0ZWRfdGhyb3VnaHB1dF9rYnBzKSB7CisgIGNvbnN0IGRvdWJsZSBhbHBoYSA9IDAuMDU7Cisg
IGlmICghbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy5oYXNfdmFsdWUoKSkgeworICAgIGxp
bmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18gPSBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzOwog
ICB9IGVsc2UgewotICAgIGF2Z19tYXhfYml0cmF0ZV9rYnBzXyA9Ci0gICAgICAgICgxIC0gYWxw
aGEpICogYXZnX21heF9iaXRyYXRlX2ticHNfICsgYWxwaGEgKiBlc3RpbWF0ZWRfdGhyb3VnaHB1
dF9rYnBzOworICAgIGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18gPQorICAgICAgICAoMSAt
IGFscGhhKSAqIGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18udmFsdWUoKSArCisgICAgICAg
IGFscGhhICogZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwczsKICAgfQotICAvLyBFc3RpbWF0ZSB0
aGUgbWF4IGJpdCByYXRlIHZhcmlhbmNlIGFuZCBub3JtYWxpemUgdGhlIHZhcmlhbmNlCi0gIC8v
IHdpdGggdGhlIGF2ZXJhZ2UgbWF4IGJpdCByYXRlLgotICBjb25zdCBmbG9hdCBub3JtID0gc3Rk
OjptYXgoYXZnX21heF9iaXRyYXRlX2ticHNfLCAxLjBmKTsKLSAgdmFyX21heF9iaXRyYXRlX2ti
cHNfID0KLSAgICAgICgxIC0gYWxwaGEpICogdmFyX21heF9iaXRyYXRlX2ticHNfICsKLSAgICAg
IGFscGhhICogKGF2Z19tYXhfYml0cmF0ZV9rYnBzXyAtIGVzdGltYXRlZF90aHJvdWdocHV0X2ti
cHMpICoKLSAgICAgICAgICAoYXZnX21heF9iaXRyYXRlX2ticHNfIC0gZXN0aW1hdGVkX3Rocm91
Z2hwdXRfa2JwcykgLyBub3JtOworICAvLyBFc3RpbWF0ZSB0aGUgdmFyaWFuY2Ugb2YgdGhlIGxp
bmsgY2FwYWNpdHkgZXN0aW1hdGUgYW5kIG5vcm1hbGl6ZSB0aGUKKyAgLy8gdmFyaWFuY2Ugd2l0
aCB0aGUgbGluayBjYXBhY2l0eSBlc3RpbWF0ZS4KKyAgY29uc3QgZG91YmxlIG5vcm0gPSBzdGQ6
Om1heChsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlKCksIDEuMCk7CisgIHZhcl9s
aW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfID0KKyAgICAgICgxIC0gYWxwaGEpICogdmFyX2xp
bmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18gKworICAgICAgYWxwaGEgKgorICAgICAgICAgIChs
aW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlKCkgLSBlc3RpbWF0ZWRfdGhyb3VnaHB1
dF9rYnBzKSAqCisgICAgICAgICAgKGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18udmFsdWUo
KSAtIGVzdGltYXRlZF90aHJvdWdocHV0X2ticHMpIC8KKyAgICAgICAgICBub3JtOwogICAvLyAw
LjQgfj0gMTQga2JpdC9zIGF0IDUwMCBrYml0L3MKLSAgaWYgKHZhcl9tYXhfYml0cmF0ZV9rYnBz
XyA8IDAuNGYpIHsKLSAgICB2YXJfbWF4X2JpdHJhdGVfa2Jwc18gPSAwLjRmOworICBpZiAodmFy
X2xpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18gPCAwLjQpIHsKKyAgICB2YXJfbGlua19jYXBh
Y2l0eV9lc3RpbWF0ZV9rYnBzXyA9IDAuNDsKICAgfQotICAvLyAyLjVmIH49IDM1IGtiaXQvcyBh
dCA1MDAga2JpdC9zCi0gIGlmICh2YXJfbWF4X2JpdHJhdGVfa2Jwc18gPiAyLjVmKSB7Ci0gICAg
dmFyX21heF9iaXRyYXRlX2ticHNfID0gMi41ZjsKKyAgLy8gMi41IH49IDM1IGtiaXQvcyBhdCA1
MDAga2JpdC9zCisgIGlmICh2YXJfbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXyA+IDIuNSkg
eworICAgIHZhcl9saW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfID0gMi41OwogICB9CiB9CiAK
IHZvaWQgQWltZFJhdGVDb250cm9sOjpDaGFuZ2VTdGF0ZShjb25zdCBSYXRlQ29udHJvbElucHV0
JiBpbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG5vd19t
cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1l
KSB7CiAgIHN3aXRjaCAoaW5wdXQuYndfc3RhdGUpIHsKICAgICBjYXNlIEJhbmR3aWR0aFVzYWdl
OjprQndOb3JtYWw6CiAgICAgICBpZiAocmF0ZV9jb250cm9sX3N0YXRlXyA9PSBrUmNIb2xkKSB7
Ci0gICAgICAgIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8gPSBub3dfbXM7CisgICAgICAgIHRp
bWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8gPSBhdF90aW1lOwogICAgICAgICByYXRlX2NvbnRyb2xf
c3RhdGVfID0ga1JjSW5jcmVhc2U7CiAgICAgICB9CiAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3Rl
X2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRv
ci9haW1kX3JhdGVfY29udHJvbC5oCmluZGV4IDJhM2Y3MWQ5OGFlOGE3NTU4YTE1MmZkNzU0ZWI4
MTdiNDE5NjA5NDYuLmFkYjk1OWExNGI5YzM4YjA1OGU1ZTA2MWFmYjllZGFjZTVmZmJkY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0
cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRyb2wuaApAQCAtMTEsOCArMTEsMTMgQEAKICNp
Zm5kZWYgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1JfQUlNRF9SQVRFX0NPTlRST0xf
SF8KICNkZWZpbmUgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1JfQUlNRF9SQVRFX0NP
TlRST0xfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAiYWJzbC90eXBlcy9v
cHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2lu
Y2x1ZGUvYndlX2RlZmluZXMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2lj
LmgiCisKKyNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9yYXRlLmgiCisjaW5jbHVkZSAiYXBpL3Vu
aXRzL3RpbWVzdGFtcC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMzAsMjggKzM1LDI4
IEBAIGNsYXNzIEFpbWRSYXRlQ29udHJvbCB7CiAgIC8vIGVpdGhlciBpZiBpdCBoYXMgYmVlbiBl
eHBsaWNpdGx5IHNldCB2aWEgU2V0U3RhcnRCaXRyYXRlL1NldEVzdGltYXRlLCBvciBpZgogICAv
LyB3ZSBoYXZlIG1lYXN1cmVkIGEgdGhyb3VnaHB1dC4KICAgYm9vbCBWYWxpZEVzdGltYXRlKCkg
Y29uc3Q7Ci0gIHZvaWQgU2V0U3RhcnRCaXRyYXRlKGludCBzdGFydF9iaXRyYXRlX2Jwcyk7Ci0g
IHZvaWQgU2V0TWluQml0cmF0ZShpbnQgbWluX2JpdHJhdGVfYnBzKTsKLSAgaW50NjRfdCBHZXRG
ZWVkYmFja0ludGVydmFsKCkgY29uc3Q7CisgIHZvaWQgU2V0U3RhcnRCaXRyYXRlKERhdGFSYXRl
IHN0YXJ0X2JpdHJhdGUpOworICB2b2lkIFNldE1pbkJpdHJhdGUoRGF0YVJhdGUgbWluX2JpdHJh
dGUpOworICBUaW1lRGVsdGEgR2V0RmVlZGJhY2tJbnRlcnZhbCgpIGNvbnN0OwogCiAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgYml0cmF0ZSBlc3RpbWF0ZSBoYXNuJ3QgYmVlbiBjaGFuZ2VkIGZv
ciBtb3JlIHRoYW4KICAgLy8gYW4gUlRULCBvciBpZiB0aGUgZXN0aW1hdGVkX3Rocm91Z2hwdXQg
aXMgbGVzcyB0aGFuIGhhbGYgb2YgdGhlIGN1cnJlbnQKICAgLy8gZXN0aW1hdGUuIFNob3VsZCBi
ZSB1c2VkIHRvIGRlY2lkZSBpZiB3ZSBzaG91bGQgcmVkdWNlIHRoZSByYXRlIGZ1cnRoZXIKICAg
Ly8gd2hlbiBvdmVyLXVzaW5nLgotICBib29sIFRpbWVUb1JlZHVjZUZ1cnRoZXIoaW50NjRfdCBu
b3dfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBlc3RpbWF0ZWRfdGhy
b3VnaHB1dF9icHMpIGNvbnN0OworICBib29sIFRpbWVUb1JlZHVjZUZ1cnRoZXIoVGltZXN0YW1w
IGF0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSBlc3RpbWF0ZWRf
dGhyb3VnaHB1dCkgY29uc3Q7CiAgIC8vIEFzIGFib3ZlLiBUbyBiZSB1c2VkIGlmIG92ZXJ1c2lu
ZyBiZWZvcmUgd2UgaGF2ZSBtZWFzdXJlZCBhIHRocm91Z2hwdXQuCi0gIGJvb2wgSW5pdGlhbFRp
bWVUb1JlZHVjZUZ1cnRoZXIoaW50NjRfdCBub3dfbXMpIGNvbnN0OworICBib29sIEluaXRpYWxU
aW1lVG9SZWR1Y2VGdXJ0aGVyKFRpbWVzdGFtcCBhdF90aW1lKSBjb25zdDsKIAotICB1aW50MzJf
dCBMYXRlc3RFc3RpbWF0ZSgpIGNvbnN0OwotICB2b2lkIFNldFJ0dChpbnQ2NF90IHJ0dCk7Ci0g
IHVpbnQzMl90IFVwZGF0ZShjb25zdCBSYXRlQ29udHJvbElucHV0KiBpbnB1dCwgaW50NjRfdCBu
b3dfbXMpOwotICB2b2lkIFNldEVzdGltYXRlKGludCBiaXRyYXRlX2JwcywgaW50NjRfdCBub3df
bXMpOworICBEYXRhUmF0ZSBMYXRlc3RFc3RpbWF0ZSgpIGNvbnN0OworICB2b2lkIFNldFJ0dChU
aW1lRGVsdGEgcnR0KTsKKyAgRGF0YVJhdGUgVXBkYXRlKGNvbnN0IFJhdGVDb250cm9sSW5wdXQq
IGlucHV0LCBUaW1lc3RhbXAgYXRfdGltZSk7CisgIHZvaWQgU2V0RXN0aW1hdGUoRGF0YVJhdGUg
Yml0cmF0ZSwgVGltZXN0YW1wIGF0X3RpbWUpOwogCiAgIC8vIFJldHVybnMgdGhlIGluY3JlYXNl
IHJhdGUgd2hlbiB1c2VkIGJhbmR3aWR0aCBpcyBuZWFyIHRoZSBsaW5rIGNhcGFjaXR5LgotICBp
bnQgR2V0TmVhck1heEluY3JlYXNlUmF0ZUJwcygpIGNvbnN0OworICBkb3VibGUgR2V0TmVhck1h
eEluY3JlYXNlUmF0ZUJwc1BlclNlY29uZCgpIGNvbnN0OwogICAvLyBSZXR1cm5zIHRoZSBleHBl
Y3RlZCB0aW1lIGJldHdlZW4gb3ZlcnVzZSBzaWduYWxzIChhc3N1bWluZyBzdGVhZHkgc3RhdGUp
LgotICBpbnQgR2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RNcygpIGNvbnN0OworICBUaW1lRGVs
dGEgR2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKSBjb25zdDsKIAogIHByaXZhdGU6CiAgIGZy
aWVuZCBjbGFzcyBHb29nQ2NTdGF0ZVByaW50ZXI7CkBAIC02Miw0MSArNjcsNDAgQEAgY2xhc3Mg
QWltZFJhdGVDb250cm9sIHsKICAgLy8gaW4gdGhlICJkZWNyZWFzZSIgc3RhdGUgdGhlIGJpdHJh
dGUgd2lsbCBiZSBkZWNyZWFzZWQgdG8gc2xpZ2h0bHkgYmVsb3cgdGhlCiAgIC8vIGN1cnJlbnQg
dGhyb3VnaHB1dC4gV2hlbiBpbiB0aGUgImhvbGQiIHN0YXRlIHRoZSBiaXRyYXRlIHdpbGwgYmUg
a2VwdAogICAvLyBjb25zdGFudCB0byBhbGxvdyBidWlsdCB1cCBxdWV1ZXMgdG8gZHJhaW4uCi0g
IHVpbnQzMl90IENoYW5nZUJpdHJhdGUodWludDMyX3QgY3VycmVudF9iaXRyYXRlLAorICBEYXRh
UmF0ZSBDaGFuZ2VCaXRyYXRlKERhdGFSYXRlIGN1cnJlbnRfYml0cmF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBSYXRlQ29udHJvbElucHV0JiBpbnB1dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IG5vd19tcyk7Ci0gIC8vIENsYW1wcyBuZXdfYml0cmF0ZV9i
cHMgdG8gd2l0aGluIHRoZSBjb25maWd1cmVkIG1pbiBiaXRyYXRlIGFuZCBhIGxpbmVhcgorICAg
ICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgLy8gQ2xhbXBzIG5l
d19iaXRyYXRlIHRvIHdpdGhpbiB0aGUgY29uZmlndXJlZCBtaW4gYml0cmF0ZSBhbmQgYSBsaW5l
YXIKICAgLy8gZnVuY3Rpb24gb2YgdGhlIHRocm91Z2hwdXQsIHNvIHRoYXQgdGhlIG5ldyBiaXRy
YXRlIGNhbid0IGdyb3cgdG9vCiAgIC8vIGxhcmdlIGNvbXBhcmVkIHRvIHRoZSBiaXRyYXRlIGFj
dHVhbGx5IGJlaW5nIHJlY2VpdmVkIGJ5IHRoZSBvdGhlciBlbmQuCi0gIHVpbnQzMl90IENsYW1w
Qml0cmF0ZSh1aW50MzJfdCBuZXdfYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpIGNvbnN0OwotICB1aW50MzJfdCBN
dWx0aXBsaWNhdGl2ZVJhdGVJbmNyZWFzZShpbnQ2NF90IG5vd19tcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBsYXN0X21zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjdXJyZW50X2JpdHJhdGVfYnBzKSBjb25z
dDsKLSAgdWludDMyX3QgQWRkaXRpdmVSYXRlSW5jcmVhc2UoaW50NjRfdCBub3dfbXMsIGludDY0
X3QgbGFzdF9tcykgY29uc3Q7Ci0gIHZvaWQgVXBkYXRlQ2hhbmdlUGVyaW9kKGludDY0X3Qgbm93
X21zKTsKLSAgdm9pZCBVcGRhdGVNYXhUaHJvdWdocHV0RXN0aW1hdGUoZmxvYXQgZXN0aW1hdGVk
X3Rocm91Z2hwdXRfa2Jwcyk7Ci0gIHZvaWQgQ2hhbmdlU3RhdGUoY29uc3QgUmF0ZUNvbnRyb2xJ
bnB1dCYgaW5wdXQsIGludDY0X3Qgbm93X21zKTsKKyAgRGF0YVJhdGUgQ2xhbXBCaXRyYXRlKERh
dGFSYXRlIG5ld19iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVJhdGUgZXN0
aW1hdGVkX3Rocm91Z2hwdXQpIGNvbnN0OworICBEYXRhUmF0ZSBNdWx0aXBsaWNhdGl2ZVJhdGVJ
bmNyZWFzZShUaW1lc3RhbXAgYXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGltZXN0YW1wIGxhc3RfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERhdGFSYXRlIGN1cnJlbnRfYml0cmF0ZSkgY29uc3Q7CisgIERhdGFSYXRlIEFk
ZGl0aXZlUmF0ZUluY3JlYXNlKFRpbWVzdGFtcCBhdF90aW1lLCBUaW1lc3RhbXAgbGFzdF90aW1l
KSBjb25zdDsKKyAgdm9pZCBVcGRhdGVDaGFuZ2VQZXJpb2QoVGltZXN0YW1wIGF0X3RpbWUpOwor
ICB2b2lkIFVwZGF0ZUxpbmtDYXBhY2l0eUVzdGltYXRlKGRvdWJsZSBlc3RpbWF0ZWRfdGhyb3Vn
aHB1dF9rYnBzKTsKKyAgdm9pZCBDaGFuZ2VTdGF0ZShjb25zdCBSYXRlQ29udHJvbElucHV0JiBp
bnB1dCwgVGltZXN0YW1wIGF0X3RpbWUpOwogCi0gIHVpbnQzMl90IG1pbl9jb25maWd1cmVkX2Jp
dHJhdGVfYnBzXzsKLSAgdWludDMyX3QgbWF4X2NvbmZpZ3VyZWRfYml0cmF0ZV9icHNfOwotICB1
aW50MzJfdCBjdXJyZW50X2JpdHJhdGVfYnBzXzsKLSAgdWludDMyX3QgbGF0ZXN0X2VzdGltYXRl
ZF90aHJvdWdocHV0X2Jwc187Ci0gIGZsb2F0IGF2Z19tYXhfYml0cmF0ZV9rYnBzXzsKLSAgZmxv
YXQgdmFyX21heF9iaXRyYXRlX2ticHNfOworICBEYXRhUmF0ZSBtaW5fY29uZmlndXJlZF9iaXRy
YXRlXzsKKyAgRGF0YVJhdGUgbWF4X2NvbmZpZ3VyZWRfYml0cmF0ZV87CisgIERhdGFSYXRlIGN1
cnJlbnRfYml0cmF0ZV87CisgIERhdGFSYXRlIGxhdGVzdF9lc3RpbWF0ZWRfdGhyb3VnaHB1dF87
CisgIGFic2w6Om9wdGlvbmFsPGRvdWJsZT4gbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXzsK
KyAgZG91YmxlIHZhcl9saW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfOwogICBSYXRlQ29udHJv
bFN0YXRlIHJhdGVfY29udHJvbF9zdGF0ZV87Ci0gIFJhdGVDb250cm9sUmVnaW9uIHJhdGVfY29u
dHJvbF9yZWdpb25fOwotICBpbnQ2NF90IHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV87Ci0gIGlu
dDY0X3QgdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfOwotICBpbnQ2NF90IHRpbWVfZmlyc3Rf
dGhyb3VnaHB1dF9lc3RpbWF0ZV87CisgIFRpbWVzdGFtcCB0aW1lX2xhc3RfYml0cmF0ZV9jaGFu
Z2VfOworICBUaW1lc3RhbXAgdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfOworICBUaW1lc3Rh
bXAgdGltZV9maXJzdF90aHJvdWdocHV0X2VzdGltYXRlXzsKICAgYm9vbCBiaXRyYXRlX2lzX2lu
aXRpYWxpemVkXzsKLSAgZmxvYXQgYmV0YV87Ci0gIGludDY0X3QgcnR0XzsKKyAgZG91YmxlIGJl
dGFfOworICBUaW1lRGVsdGEgcnR0XzsKICAgY29uc3QgYm9vbCBpbl9leHBlcmltZW50XzsKICAg
Y29uc3QgYm9vbCBzbW9vdGhpbmdfZXhwZXJpbWVudF87CiAgIGNvbnN0IGJvb2wgaW5faW5pdGlh
bF9iYWNrb2ZmX2ludGVydmFsX2V4cGVyaW1lbnRfOwotICBpbnQ2NF90IGluaXRpYWxfYmFja29m
Zl9pbnRlcnZhbF9tc187Ci0gIGFic2w6Om9wdGlvbmFsPGludD4gbGFzdF9kZWNyZWFzZV87Cisg
IFRpbWVEZWx0YSBpbml0aWFsX2JhY2tvZmZfaW50ZXJ2YWxfOworICBhYnNsOjpvcHRpb25hbDxE
YXRhUmF0ZT4gbGFzdF9kZWNyZWFzZV87CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbF91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sX3VuaXR0ZXN0LmNjCmluZGV4
IDVjZGU3Y2VkYWY0OTJkYmRhNWEzZjNiYjBmMzBkN2UxMWU1ZTAwNzIuLjRiZWM5ZThmZjUwMDc4
MWQyNTNmNWNkMzQ3NWE2MjdiMjAyZDRiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L2FpbWRfcmF0ZV9jb250cm9sX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2Fp
bWRfcmF0ZV9jb250cm9sX3VuaXR0ZXN0LmNjCkBAIC00MCwxMyArNDAsMjYgQEAgQWltZFJhdGVD
b250cm9sU3RhdGVzIENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0YXRlcygpIHsKICAgc3RhdGVzLnNp
bXVsYXRlZF9jbG9jay5yZXNldChuZXcgU2ltdWxhdGVkQ2xvY2soa0Nsb2NrSW5pdGlhbFRpbWUp
KTsKICAgcmV0dXJuIHN0YXRlczsKIH0KLQorYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IE9wdGlv
bmFsUmF0ZUZyb21PcHRpb25hbEJwcygKKyAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IGJpdHJhdGVf
YnBzKSB7CisgIGlmIChiaXRyYXRlX2JwcykgeworICAgIHJldHVybiBEYXRhUmF0ZTo6YnBzKCpi
aXRyYXRlX2Jwcyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0K
K30KIHZvaWQgVXBkYXRlUmF0ZUNvbnRyb2woY29uc3QgQWltZFJhdGVDb250cm9sU3RhdGVzJiBz
dGF0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhbmR3aWR0aFVzYWdlJiBiYW5k
d2lkdGhfdXNhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQz
Ml90PiB0aHJvdWdocHV0X2VzdGltYXRlLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IG5vd19tcykgewotICBSYXRlQ29udHJvbElucHV0IGlucHV0KGJhbmR3aWR0aF91c2FnZSwgdGhy
b3VnaHB1dF9lc3RpbWF0ZSk7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+VXBkYXRlKCZp
bnB1dCwgbm93X21zKTsKKyAgUmF0ZUNvbnRyb2xJbnB1dCBpbnB1dChiYW5kd2lkdGhfdXNhZ2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWxSYXRlRnJvbU9wdGlvbmFsQnBzKHRo
cm91Z2hwdXRfZXN0aW1hdGUpKTsKKyAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5VcGRhdGUo
JmlucHV0LCBUaW1lc3RhbXA6Om1zKG5vd19tcykpOworfQordm9pZCBTZXRFc3RpbWF0ZShjb25z
dCBBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMmIHN0YXRlcywgaW50IGJpdHJhdGVfYnBzKSB7CisgIHN0
YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCisgICAgICBEYXRhUmF0ZTo6YnBz
KGJpdHJhdGVfYnBzKSwKKyAgICAgIFRpbWVzdGFtcDo6bXMoc3RhdGVzLnNpbXVsYXRlZF9jbG9j
ay0+VGltZUluTWlsbGlzZWNvbmRzKCkpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCkBAIC01NCw0
MCArNjcsNDAgQEAgdm9pZCBVcGRhdGVSYXRlQ29udHJvbChjb25zdCBBaW1kUmF0ZUNvbnRyb2xT
dGF0ZXMmIHN0YXRlcywKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgTWluTmVhck1heEluY3Jl
YXNlUmF0ZU9uTG93QmFuZHdpdGgpIHsKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVBaW1kUmF0ZUNv
bnRyb2xTdGF0ZXMoKTsKICAgY29uc3RleHByIGludCBrQml0cmF0ZSA9IDMwMDAwOwotICBzdGF0
ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAgICAga0JpdHJhdGUsIHN0YXRl
cy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKLSAgRVhQRUNUX0VRKDQw
MDAsIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0TmVhck1heEluY3JlYXNlUmF0ZUJwcygp
KTsKKyAgU2V0RXN0aW1hdGUoc3RhdGVzLCBrQml0cmF0ZSk7CisgIEVYUEVDVF9FUSg0MDAwLAor
ICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXROZWFyTWF4SW5jcmVhc2VS
YXRlQnBzUGVyU2Vjb25kKCkpOwogfQogCiBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIE5lYXJN
YXhJbmNyZWFzZVJhdGVJczVrYnBzT245MGticHNBbmQyMDBtc1J0dCkgewogICBhdXRvIHN0YXRl
cyA9IENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0YXRlcygpOwogICBjb25zdGV4cHIgaW50IGtCaXRy
YXRlID0gOTAwMDA7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCi0g
ICAgICBrQml0cmF0ZSwgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRz
KCkpOwotICBFWFBFQ1RfRVEoNTAwMCwgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXROZWFy
TWF4SW5jcmVhc2VSYXRlQnBzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0ZXMsIGtCaXRyYXRlKTsK
KyAgRVhQRUNUX0VRKDUwMDAsCisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wt
PkdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJTZWNvbmQoKSk7CiB9CiAKIFRFU1QoQWltZFJh
dGVDb250cm9sVGVzdCwgTmVhck1heEluY3JlYXNlUmF0ZUlzNWticHNPbjYwa2Jwc0FuZDEwMG1z
UnR0KSB7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAg
IGNvbnN0ZXhwciBpbnQga0JpdHJhdGUgPSA2MDAwMDsKLSAgc3RhdGVzLmFpbWRfcmF0ZV9jb250
cm9sLT5TZXRFc3RpbWF0ZSgKLSAgICAgIGtCaXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2Nr
LT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0
UnR0KDEwMCk7Ci0gIEVYUEVDVF9FUSg1MDAwLCBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdl
dE5lYXJNYXhJbmNyZWFzZVJhdGVCcHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRlcywga0JpdHJh
dGUpOworICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldFJ0dChUaW1lRGVsdGE6Om1zKDEw
MCkpOworICBFWFBFQ1RfRVEoNTAwMCwKKyAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29u
dHJvbC0+R2V0TmVhck1heEluY3JlYXNlUmF0ZUJwc1BlclNlY29uZCgpKTsKIH0KIAogVEVTVChB
aW1kUmF0ZUNvbnRyb2xUZXN0LCBHZXRJbmNyZWFzZVJhdGVBbmRCYW5kd2lkdGhQZXJpb2QpIHsK
ICAgLy8gU21vb3RoaW5nIGV4cGVyaW1lbnQgZGlzYWJsZWQKICAgYXV0byBzdGF0ZXMgPSBDcmVh
dGVBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKTsKICAgY29uc3RleHByIGludCBrQml0cmF0ZSA9IDMw
MDAwMDsKLSAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRFc3RpbWF0ZSgKLSAgICAgIGtC
aXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Cisg
IFNldEVzdGltYXRlKHN0YXRlcywga0JpdHJhdGUpOwogICBVcGRhdGVSYXRlQ29udHJvbChzdGF0
ZXMsIEJhbmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmcsIGtCaXRyYXRlLAogICAgICAgICAgICAg
ICAgICAgICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Ci0g
IEVYUEVDVF9ORUFSKDE0MDAwLCBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldE5lYXJNYXhJ
bmNyZWFzZVJhdGVCcHMoKSwKKyAgRVhQRUNUX05FQVIoMTQwMDAsCisgICAgICAgICAgICAgIHN0
YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0TmVhck1heEluY3JlYXNlUmF0ZUJwc1BlclNlY29u
ZCgpLAogICAgICAgICAgICAgICAxMDAwKTsKICAgRVhQRUNUX0VRKGtEZWZhdWx0UGVyaW9kTXNO
b1Ntb290aGluZ0V4cCwKLSAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0
RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RNcygpKTsKKyAgICAgICAgICAgIHN0YXRlcy5haW1kX3Jh
dGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKS5tcygpKTsKIH0KIAogVEVT
VChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBHZXRJbmNyZWFzZVJhdGVBbmRCYW5kd2lkdGhQZXJpb2RT
bW9vdGhpbmdFeHApIHsKQEAgLTk1LDIxICsxMDgsMjAgQEAgVEVTVChBaW1kUmF0ZUNvbnRyb2xU
ZXN0LCBHZXRJbmNyZWFzZVJhdGVBbmRCYW5kd2lkdGhQZXJpb2RTbW9vdGhpbmdFeHApIHsKICAg
dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKGtTbW9vdGhpbmdF
eHBGaWVsZFRyaWFsKTsKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVBaW1kUmF0ZUNvbnRyb2xTdGF0
ZXMoKTsKICAgY29uc3RleHByIGludCBrQml0cmF0ZSA9IDMwMDAwMDsKLSAgc3RhdGVzLmFpbWRf
cmF0ZV9jb250cm9sLT5TZXRFc3RpbWF0ZSgKLSAgICAgIGtCaXRyYXRlLCBzdGF0ZXMuc2ltdWxh
dGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRlcywg
a0JpdHJhdGUpOwogICBVcGRhdGVSYXRlQ29udHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdlOjpr
QndPdmVydXNpbmcsIGtCaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICBzdGF0ZXMuc2ltdWxh
dGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Ci0gIEVYUEVDVF9ORUFSKDE0MDAwLCBz
dGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHMoKSwKKyAg
RVhQRUNUX05FQVIoMTQwMDAsCisgICAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJv
bC0+R2V0TmVhck1heEluY3JlYXNlUmF0ZUJwc1BlclNlY29uZCgpLAogICAgICAgICAgICAgICAx
MDAwKTsKICAgRVhQRUNUX0VRKGtNaW5Cd2VQZXJpb2RNc1Ntb290aGluZ0V4cCwKLSAgICAgICAg
ICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RN
cygpKTsKKyAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0RXhwZWN0ZWRC
YW5kd2lkdGhQZXJpb2QoKS5tcygpKTsKIH0KIAogVEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBC
d2VMaW1pdGVkQnlBY2tlZEJpdHJhdGUpIHsKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVBaW1kUmF0
ZUNvbnRyb2xTdGF0ZXMoKTsKICAgY29uc3RleHByIGludCBrQWNrZWRCaXRyYXRlID0gMTAwMDA7
Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCi0gICAgICBrQWNrZWRC
aXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Cisg
IFNldEVzdGltYXRlKHN0YXRlcywga0Fja2VkQml0cmF0ZSk7CiAgIHdoaWxlIChzdGF0ZXMuc2lt
dWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSAtIGtDbG9ja0luaXRpYWxUaW1lIDwK
ICAgICAgICAgIDIwMDAwKSB7CiAgICAgVXBkYXRlUmF0ZUNvbnRyb2woc3RhdGVzLCBCYW5kd2lk
dGhVc2FnZTo6a0J3Tm9ybWFsLCBrQWNrZWRCaXRyYXRlLApAQCAtMTE4LDE0ICsxMzAsMTMgQEAg
VEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBCd2VMaW1pdGVkQnlBY2tlZEJpdHJhdGUpIHsKICAg
fQogICBBU1NFUlRfVFJVRShzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlZhbGlkRXN0aW1hdGUo
KSk7CiAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1aW50MzJfdD4oMS41ICoga0Fja2VkQml0cmF0
ZSArIDEwMDAwKSwKLSAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+TGF0ZXN0
RXN0aW1hdGUoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkxhdGVz
dEVzdGltYXRlKCkuYnBzKCkpOwogfQogCiBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIEJ3ZU5v
dExpbWl0ZWRCeURlY3JlYXNpbmdBY2tlZEJpdHJhdGUpIHsKICAgYXV0byBzdGF0ZXMgPSBDcmVh
dGVBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKTsKICAgY29uc3RleHByIGludCBrQWNrZWRCaXRyYXRl
ID0gMTAwMDAwOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAg
ICAga0Fja2VkQml0cmF0ZSwgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNv
bmRzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0ZXMsIGtBY2tlZEJpdHJhdGUpOwogICB3aGlsZSAo
c3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkgLSBrQ2xvY2tJbml0
aWFsVGltZSA8CiAgICAgICAgICAyMDAwMCkgewogICAgIFVwZGF0ZVJhdGVDb250cm9sKHN0YXRl
cywgQmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1hbCwga0Fja2VkQml0cmF0ZSwKQEAgLTEzNSwxMCAr
MTQ2LDEwIEBAIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgQndlTm90TGltaXRlZEJ5RGVjcmVh
c2luZ0Fja2VkQml0cmF0ZSkgewogICBBU1NFUlRfVFJVRShzdGF0ZXMuYWltZF9yYXRlX2NvbnRy
b2wtPlZhbGlkRXN0aW1hdGUoKSk7CiAgIC8vIElmIHRoZSBhY2tlZCBiaXRyYXRlIGRlY3JlYXNl
cyB0aGUgQldFIHNob3VsZG4ndCBiZSByZWR1Y2VkIHRvIDEuNXgKICAgLy8gd2hhdCdzIGJlaW5n
IGFja2VkLCBidXQgYWxzbyBzaG91bGRuJ3QgZ2V0IHRvIGluY3JlYXNlIG1vcmUuCi0gIHVpbnQz
Ml90IHByZXZfZXN0aW1hdGUgPSBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkxhdGVzdEVzdGlt
YXRlKCk7CisgIHVpbnQzMl90IHByZXZfZXN0aW1hdGUgPSBzdGF0ZXMuYWltZF9yYXRlX2NvbnRy
b2wtPkxhdGVzdEVzdGltYXRlKCkuYnBzKCk7CiAgIFVwZGF0ZVJhdGVDb250cm9sKHN0YXRlcywg
QmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1hbCwga0Fja2VkQml0cmF0ZSAvIDIsCiAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsK
LSAgdWludDMyX3QgbmV3X2VzdGltYXRlID0gc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5MYXRl
c3RFc3RpbWF0ZSgpOworICB1aW50MzJfdCBuZXdfZXN0aW1hdGUgPSBzdGF0ZXMuYWltZF9yYXRl
X2NvbnRyb2wtPkxhdGVzdEVzdGltYXRlKCkuYnBzKCk7CiAgIEVYUEVDVF9ORUFSKG5ld19lc3Rp
bWF0ZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEuNSAqIGtBY2tlZEJpdHJhdGUgKyAxMDAwMCks
CiAgICAgICAgICAgICAgIDIwMDApOwogICBFWFBFQ1RfRVEobmV3X2VzdGltYXRlLCBwcmV2X2Vz
dGltYXRlKTsKQEAgLTE0NywzNSArMTU4LDM0IEBAIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwg
QndlTm90TGltaXRlZEJ5RGVjcmVhc2luZ0Fja2VkQml0cmF0ZSkgewogVEVTVChBaW1kUmF0ZUNv
bnRyb2xUZXN0LCBEZWZhdWx0UGVyaW9kVW50aWxGaXJzdE92ZXJ1c2UpIHsKICAgLy8gU21vb3Ro
aW5nIGV4cGVyaW1lbnQgZGlzYWJsZWQKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVBaW1kUmF0ZUNv
bnRyb2xTdGF0ZXMoKTsKLSAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRTdGFydEJpdHJh
dGUoMzAwMDAwKTsKKyAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRTdGFydEJpdHJhdGUo
RGF0YVJhdGU6OmticHMoMzAwKSk7CiAgIEVYUEVDVF9FUShrRGVmYXVsdFBlcmlvZE1zTm9TbW9v
dGhpbmdFeHAsCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVj
dGVkQmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2Nv
bnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiAgIHN0YXRlcy5zaW11
bGF0ZWRfY2xvY2stPkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMCk7CiAgIFVwZGF0ZVJhdGVD
b250cm9sKHN0YXRlcywgQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZywgMjgwMDAwLAogICAg
ICAgICAgICAgICAgICAgICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29u
ZHMoKSk7CiAgIEVYUEVDVF9ORShrRGVmYXVsdFBlcmlvZE1zTm9TbW9vdGhpbmdFeHAsCi0gICAg
ICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVy
aW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVj
dGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9sVGVz
dCwgTWluUGVyaW9kVW50aWxGaXJzdE92ZXJ1c2VTbW9vdGhpbmdFeHApIHsKICAgLy8gU21vb3Ro
aW5nIGV4cGVyaW1lbnQgZW5hYmxlZAogICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBvdmVycmlk
ZV9maWVsZF90cmlhbHMoa1Ntb290aGluZ0V4cEZpZWxkVHJpYWwpOwogICBhdXRvIHN0YXRlcyA9
IENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0YXRlcygpOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRy
b2wtPlNldFN0YXJ0Qml0cmF0ZSgzMDAwMDApOworICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wt
PlNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZTo6a2JwcygzMDApKTsKICAgRVhQRUNUX0VRKGtNaW5C
d2VQZXJpb2RNc1Ntb290aGluZ0V4cCwKLSAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29u
dHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2RNcygpKTsKKyAgICAgICAgICAgIHN0YXRl
cy5haW1kX3JhdGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKS5tcygpKTsK
ICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwKTsK
ICAgVXBkYXRlUmF0ZUNvbnRyb2woc3RhdGVzLCBCYW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5n
LCAyODAwMDAsCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRp
bWVJbk1pbGxpc2Vjb25kcygpKTsKICAgRVhQRUNUX05FKGtNaW5Cd2VQZXJpb2RNc1Ntb290aGlu
Z0V4cCwKLSAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0RXhwZWN0ZWRC
YW5kd2lkdGhQZXJpb2RNcygpKTsKKyAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJv
bC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKS5tcygpKTsKIH0KIAogVEVTVChBaW1kUmF0
ZUNvbnRyb2xUZXN0LCBFeHBlY3RlZFBlcmlvZEFmdGVyMjBrYnBzRHJvcEFuZDVrYnBzSW5jcmVh
c2UpIHsKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKTsKICAg
Y29uc3RleHByIGludCBrSW5pdGlhbEJpdHJhdGUgPSAxMTAwMDA7Ci0gIHN0YXRlcy5haW1kX3Jh
dGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCi0gICAgICBrSW5pdGlhbEJpdHJhdGUsIHN0YXRlcy5z
aW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgU2V0RXN0aW1hdGUoc3Rh
dGVzLCBrSW5pdGlhbEJpdHJhdGUpOwogICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5BZHZhbmNl
VGltZU1pbGxpc2Vjb25kcygxMDApOwogICAvLyBNYWtlIHRoZSBiaXRyYXRlIGRyb3AgYnkgMjAg
a2JwcyB0byBnZXQgdG8gOTAga2Jwcy4KICAgLy8gVGhlIHJhdGUgaW5jcmVhc2UgYXQgOTAga2Jw
cyBzaG91bGQgYmUgNSBrYnBzLCBzbyB0aGUgcGVyaW9kIHNob3VsZCBiZSA0IHMuCkBAIC0xODMs
OCArMTkzLDkgQEAgVEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBFeHBlY3RlZFBlcmlvZEFmdGVy
MjBrYnBzRHJvcEFuZDVrYnBzSW5jcmVhc2UpIHsKICAgICAgIChrSW5pdGlhbEJpdHJhdGUgLSAy
MDAwMCkgLyBrRnJhY3Rpb25BZnRlck92ZXJ1c2U7CiAgIFVwZGF0ZVJhdGVDb250cm9sKHN0YXRl
cywgQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZywga0Fja2VkQml0cmF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkp
OwotICBFWFBFQ1RfRVEoNTAwMCwgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXROZWFyTWF4
SW5jcmVhc2VSYXRlQnBzKCkpOwotICBFWFBFQ1RfRVEoNDAwMCwgc3RhdGVzLmFpbWRfcmF0ZV9j
b250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZE1zKCkpOworICBFWFBFQ1RfRVEoNTAw
MCwKKyAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0TmVhck1heEluY3Jl
YXNlUmF0ZUJwc1BlclNlY29uZCgpKTsKKyAgRVhQRUNUX0VRKDQwMDAsIHN0YXRlcy5haW1kX3Jh
dGVfY29udHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKS5tcygpKTsKIH0KIAogVEVT
VChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBNaW5QZXJpb2RBZnRlckxhcmdlQml0cmF0ZURlY3JlYXNl
U21vb3RoaW5nRXhwKSB7CkBAIC0xOTIsOCArMjAzLDcgQEAgVEVTVChBaW1kUmF0ZUNvbnRyb2xU
ZXN0LCBNaW5QZXJpb2RBZnRlckxhcmdlQml0cmF0ZURlY3JlYXNlU21vb3RoaW5nRXhwKSB7CiAg
IHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscyhrU21vb3RoaW5n
RXhwRmllbGRUcmlhbCk7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3Rh
dGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0luaXRpYWxCaXRyYXRlID0gMTEwMDAwOwotICBzdGF0
ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAgICAga0luaXRpYWxCaXRyYXRl
LCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CisgIFNldEVz
dGltYXRlKHN0YXRlcywga0luaXRpYWxCaXRyYXRlKTsKICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9j
ay0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwKTsKICAgLy8gTWFrZSBzdWNoIGEgbGFyZ2Ug
ZHJvcCBpbiBiaXRyYXRlIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgbmV0d29yawogICAvLyBk
ZWdyYWRhdGlvbi4KQEAgLTIwMSwyMCArMjExLDE5IEBAIFRFU1QoQWltZFJhdGVDb250cm9sVGVz
dCwgTWluUGVyaW9kQWZ0ZXJMYXJnZUJpdHJhdGVEZWNyZWFzZVNtb290aGluZ0V4cCkgewogICBV
cGRhdGVSYXRlQ29udHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmcsIGtB
Y2tlZEJpdHJhdGUsCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2st
PlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKICAgRVhQRUNUX0VRKGtNaW5Cd2VQZXJpb2RNc1Ntb290
aGluZ0V4cCwKLSAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0RXhwZWN0
ZWRCYW5kd2lkdGhQZXJpb2RNcygpKTsKKyAgICAgICAgICAgIHN0YXRlcy5haW1kX3JhdGVfY29u
dHJvbC0+R2V0RXhwZWN0ZWRCYW5kd2lkdGhQZXJpb2QoKS5tcygpKTsKIH0KIAogVEVTVChBaW1k
UmF0ZUNvbnRyb2xUZXN0LCBCYW5kd2lkdGhQZXJpb2RJc05vdEJlbG93TWluKSB7CiAgIGF1dG8g
c3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQg
a0luaXRpYWxCaXRyYXRlID0gMTAwMDA7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0
RXN0aW1hdGUoCi0gICAgICBrSW5pdGlhbEJpdHJhdGUsIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2st
PlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgU2V0RXN0aW1hdGUoc3RhdGVzLCBrSW5pdGlhbEJp
dHJhdGUpOwogICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5BZHZhbmNlVGltZU1pbGxpc2Vjb25k
cygxMDApOwogICAvLyBNYWtlIGEgc21hbGwgKDEuNSBrYnBzKSBiaXRyYXRlIGRyb3AgdG8gOC41
IGticHMuCiAgIFVwZGF0ZVJhdGVDb250cm9sKHN0YXRlcywgQmFuZHdpZHRoVXNhZ2U6OmtCd092
ZXJ1c2luZywga0luaXRpYWxCaXRyYXRlIC0gMSwKICAgICAgICAgICAgICAgICAgICAgc3RhdGVz
LnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwogICBFWFBFQ1RfRVEoa01p
bkJ3ZVBlcmlvZE1zTm9TbW9vdGhpbmdFeHAsCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRl
X2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAgICBz
dGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMo
KSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgQmFuZHdpZHRoUGVyaW9kSXNOb3RB
Ym92ZU1heFNtb290aGluZ0V4cCkgewpAQCAtMjIyLDI5ICsyMzEsMjcgQEAgVEVTVChBaW1kUmF0
ZUNvbnRyb2xUZXN0LCBCYW5kd2lkdGhQZXJpb2RJc05vdEFib3ZlTWF4U21vb3RoaW5nRXhwKSB7
CiAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscyhrU21vb3Ro
aW5nRXhwRmllbGRUcmlhbCk7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9s
U3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0luaXRpYWxCaXRyYXRlID0gNTAwMDAwMDA7Ci0g
IHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCi0gICAgICBrSW5pdGlhbEJp
dHJhdGUsIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAg
U2V0RXN0aW1hdGUoc3RhdGVzLCBrSW5pdGlhbEJpdHJhdGUpOwogICBzdGF0ZXMuc2ltdWxhdGVk
X2Nsb2NrLT5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDApOwogICAvLyBNYWtlIGEgbGFyZ2Ug
KDEwIE1icHMpIGJpdHJhdGUgZHJvcCB0byAxMCBrYnBzLgogICBjb25zdGV4cHIgaW50IGtBY2tl
ZEJpdHJhdGUgPSA0MDAwMDAwMCAvIGtGcmFjdGlvbkFmdGVyT3ZlcnVzZTsKICAgVXBkYXRlUmF0
ZUNvbnRyb2woc3RhdGVzLCBCYW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5nLCBrQWNrZWRCaXRy
YXRlLAogICAgICAgICAgICAgICAgICAgICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5N
aWxsaXNlY29uZHMoKSk7CiAgIEVYUEVDVF9FUShrTWF4QndlUGVyaW9kTXMsCi0gICAgICAgICAg
ICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMo
KSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFu
ZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgQmFu
ZHdpZHRoUGVyaW9kSXNOb3RBYm92ZU1heE5vU21vb3RoaW5nRXhwKSB7CiAgIGF1dG8gc3RhdGVz
ID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0luaXRp
YWxCaXRyYXRlID0gMTAwMTAwMDA7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0
aW1hdGUoCi0gICAgICBrSW5pdGlhbEJpdHJhdGUsIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRp
bWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgU2V0RXN0aW1hdGUoc3RhdGVzLCBrSW5pdGlhbEJpdHJh
dGUpOwogICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygx
MDApOwogICAvLyBNYWtlIGEgbGFyZ2UgKDEwIE1icHMpIGJpdHJhdGUgZHJvcCB0byAxMCBrYnBz
LgogICBjb25zdGV4cHIgaW50IGtBY2tlZEJpdHJhdGUgPSAxMDAwMCAvIGtGcmFjdGlvbkFmdGVy
T3ZlcnVzZTsKICAgVXBkYXRlUmF0ZUNvbnRyb2woc3RhdGVzLCBCYW5kd2lkdGhVc2FnZTo6a0J3
T3ZlcnVzaW5nLCBrQWNrZWRCaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICBzdGF0ZXMuc2lt
dWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgIEVYUEVDVF9FUShrTWF4Qndl
UGVyaW9kTXMsCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVj
dGVkQmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2Nv
bnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAKIFRFU1QoQWlt
ZFJhdGVDb250cm9sVGVzdCwgU2VuZGluZ1JhdGVCb3VuZGVkV2hlblRocm91Z2hwdXROb3RFc3Rp
bWF0ZWQpIHsKQEAgLTI2NSw3ICsyNzIsNyBAQCBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIFNl
bmRpbmdSYXRlQm91bmRlZFdoZW5UaHJvdWdocHV0Tm90RXN0aW1hdGVkKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkp
OwogICAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEw
MCk7CiAgIH0KLSAgRVhQRUNUX0xFKHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+TGF0ZXN0RXN0
aW1hdGUoKSwKKyAgRVhQRUNUX0xFKHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+TGF0ZXN0RXN0
aW1hdGUoKS5icHMoKSwKICAgICAgICAgICAgIGtJbml0aWFsQml0cmF0ZUJwcyAqIDEuNSArIDEw
MDAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYndlX2RlZmluZXMuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90
ZV9iaXRyYXRlX2VzdGltYXRvci9id2VfZGVmaW5lcy5jYwppbmRleCA2Y2JlNDY4MzQ4OTY3NzE4
NjNhMzhhMDczZDVkMTkwYzU0NWIzYjNjLi45MWYzY2Q0MDUwYjc4ZjBmZjcyZDI0NmYwNWZiMzgz
MTdmNzRhMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9id2VfZGVmaW5lcy5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci9id2VfZGVmaW5lcy5jYwpAQCAtMzQsOCArMzQsOCBAQCBE
YXRhUmF0ZSBHZXRNaW5CaXRyYXRlKCkgewogCiBSYXRlQ29udHJvbElucHV0OjpSYXRlQ29udHJv
bElucHV0KAogICAgIEJhbmR3aWR0aFVzYWdlIGJ3X3N0YXRlLAotICAgIGNvbnN0IGFic2w6Om9w
dGlvbmFsPHVpbnQzMl90PiYgZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzKQotICAgIDogYndfc3Rh
dGUoYndfc3RhdGUpLCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMoZXN0aW1hdGVkX3Rocm91Z2hw
dXRfYnBzKSB7fQorICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiYgZXN0aW1hdGVk
X3Rocm91Z2hwdXQpCisgICAgOiBid19zdGF0ZShid19zdGF0ZSksIGVzdGltYXRlZF90aHJvdWdo
cHV0KGVzdGltYXRlZF90aHJvdWdocHV0KSB7fQogCiBSYXRlQ29udHJvbElucHV0Ojp+UmF0ZUNv
bnRyb2xJbnB1dCgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Iv
aW5jbHVkZS9id2VfZGVmaW5lcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVm
aW5lcy5oCmluZGV4IGQ5MTg1ZGU5OWNhZGIwZjBjNDQzNDU4NmNlNjQ3NjhiM2Y4YmZkMWMuLjUy
MjNhNmI0MjRiMWEwMDU3ZWVhZWNkMmFjYzU1YTFhNDFmNDc4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJh
dGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRv
ci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9EVUxF
U19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1JfSU5DTFVERV9CV0VfREVGSU5FU19IXwogI2RlZmlu
ZSBNT0RVTEVTX1JFTU9URV9CSVRSQVRFX0VTVElNQVRPUl9JTkNMVURFX0JXRV9ERUZJTkVTX0hf
CiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKICNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9yYXRlLmgiCiAKQEAgLTQ1LDE1ICs0NywxMyBA
QCBlbnVtIGNsYXNzIEJhbmR3aWR0aFVzYWdlIHsKIAogZW51bSBSYXRlQ29udHJvbFN0YXRlIHsg
a1JjSG9sZCwga1JjSW5jcmVhc2UsIGtSY0RlY3JlYXNlIH07CiAKLWVudW0gUmF0ZUNvbnRyb2xS
ZWdpb24geyBrUmNOZWFyTWF4LCBrUmNBYm92ZU1heCwga1JjTWF4VW5rbm93biB9OwotCiBzdHJ1
Y3QgUmF0ZUNvbnRyb2xJbnB1dCB7CiAgIFJhdGVDb250cm9sSW5wdXQoQmFuZHdpZHRoVXNhZ2Ug
Yndfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDMy
X3Q+JiBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpOworICAgICAgICAgICAgICAgICAgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiYgZXN0aW1hdGVkX3Rocm91Z2hwdXQpOwogICB+UmF0
ZUNvbnRyb2xJbnB1dCgpOwogCiAgIEJhbmR3aWR0aFVzYWdlIGJ3X3N0YXRlOwotICBhYnNsOjpv
cHRpb25hbDx1aW50MzJfdD4gZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzOworICBhYnNsOjpvcHRp
b25hbDxEYXRhUmF0ZT4gZXN0aW1hdGVkX3Rocm91Z2hwdXQ7CiB9OwogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbnRlcl9hcnJpdmFsLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3IvaW50ZXJfYXJyaXZhbC5jYwppbmRleCAzYTBmNTc5MDUyZjkw
ZjRkOTA0OTljNTE2OTQxNzE4ZmE3NDBkYmNkLi5iOGU2ODNiODlhNmYyZWZjMmYzOTU4MDM5NGMx
MzYzMDlkZDY3NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbnRlcl9hcnJpdmFs
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2ludGVyX2Fycml2YWwuY2MKQEAgLTEwLDEwICsx
MCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbnRl
cl9hcnJpdmFsLmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y2Fzc2VydD4K
IAotI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXNfcHVibGljLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci9vdmVydXNlX2RldGVjdG9yLmNjCmluZGV4IDc3NmNhNDJhNTZmZjIyMDMyNjJiMDE0OWE2
Mjk1OGUyYjc0MWMxZTYuLmYzZGJlMWU5OTg4Mjk1ODAwNDdkOTUxNTEzY2RkNjczZDliOTNjODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0b3IuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVf
Yml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9kZXRlY3Rvci5jYwpAQCAtMTIsMTUgKzEyLDEyIEBA
CiAKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRs
aWIuaD4KLQogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNs
dWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVz
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9id2Vf
dGVzdF9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlu
bWF4LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9kZXRlY3Rvci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0
cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9kZXRlY3Rvci5oCmluZGV4IGYzMjJjMzA0OTYwOTdmYzE1
YjYzMDI4MzUxYWRlNmUwZWZkN2YyODMuLjYxZDFjM2Y3MDdlMzIwNmExMzlkZmYzM2UwNzQyMTYw
MTM2OWM0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0b3Iu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2RldGVjdG9yLmgKQEAgLTEwLDkgKzEw
LDggQEAKICNpZm5kZWYgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1JfT1ZFUlVTRV9E
RVRFQ1RPUl9IXwogI2RlZmluZSBNT0RVTEVTX1JFTU9URV9CSVRSQVRFX0VTVElNQVRPUl9PVkVS
VVNFX0RFVEVDVE9SX0hfCiAKLSNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHN0ZGludC5oPgog
Ci0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90
ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yL292ZXJ1c2VfZXN0aW1hdG9yLmNjCmluZGV4IDA5ZGU1YzZlN2MxYzYyNzljZWJkMTM1ZGIx
YzQxY2U0NzVjOGRkNjYuLjIwNmNlYmE4NGMyNDY4ZTZmODM1OWI2YjkwMDRlOTYyZjBhYjViNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZXN0aW1hdG9yLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3Rl
X2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZXN0aW1hdG9yLmNjCkBAIC0xMiw5ICsxMiw3IEBA
CiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8c3Rk
bGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKICNp
bmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZp
bmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGltYXRvci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9lc3RpbWF0b3IuaAppbmRleCA0YzkyNDkzOGFh
MGI4NjRjMDgxODhjNjQ2NGFmZjUyOGQyNmY1YTRkLi4zZDdiZDE2YmU0N2U3Mzc5OTIzMDQwZGM1
YTg2ODU5MmZmNzYxNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2Vz
dGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZXN0aW1hdG9yLmgKQEAg
LTEwLDYgKzEwLDcgQEAKICNpZm5kZWYgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1Jf
T1ZFUlVTRV9FU1RJTUFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJ
TUFUT1JfT1ZFUlVTRV9FU1RJTUFUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPGRlcXVlPgogCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQv
aW5jbHVkZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvcl9hYnNfc2VuZF90aW1lLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVtb3RlX2JpdHJh
dGVfZXN0aW1hdG9yX2Fic19zZW5kX3RpbWUuY2MKaW5kZXggYTdjZmU0YzkwYWNjNmJiMGYwMGIw
YTdhMjQyYzkzZTg5NmJkMmY3NS4uMWFkMzVjN2JmMGRiNzQxYmQ2YTcyNTNmNjg1OGE3ZmEyOGRh
YmI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yX2Fic19zZW5kX3RpbWUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVtb3RlX2JpdHJh
dGVfZXN0aW1hdG9yX2Fic19zZW5kX3RpbWUuY2MKQEAgLTIyLDYgKzIyLDE2IEBACiAjaW5jbHVk
ZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKK25hbWVzcGFjZSB7CithYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gT3B0aW9uYWxSYXRlRnJv
bU9wdGlvbmFsQnBzKAorICAgIGFic2w6Om9wdGlvbmFsPGludD4gYml0cmF0ZV9icHMpIHsKKyAg
aWYgKGJpdHJhdGVfYnBzKSB7CisgICAgcmV0dXJuIERhdGFSYXRlOjpicHMoKmJpdHJhdGVfYnBz
KTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorfQorfSAgLy8g
bmFtZXNwYWNlCiAKIGVudW0gewogICBrVGltZXN0YW1wR3JvdXBMZW5ndGhNcyA9IDUsCkBAIC0x
ODgsNyArMTk4LDggQEAgUmVtb3RlQml0cmF0ZUVzdGltYXRvckFic1NlbmRUaW1lOjpQcm9jZXNz
Q2x1c3RlcnMoaW50NjRfdCBub3dfbXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBi
cHMuIE1lYW4gc2VuZCBkZWx0YTogIiA8PCBiZXN0X2l0LT5zZW5kX21lYW5fbXMKICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIiBtcywgbWVhbiByZWN2IGRlbHRhOiAiIDw8IGJlc3RfaXQtPnJl
Y3ZfbWVhbl9tcwogICAgICAgICAgICAgICAgICAgICAgICA8PCAiIG1zLCBudW0gcHJvYmVzOiAi
IDw8IGJlc3RfaXQtPmNvdW50OwotICAgICAgcmVtb3RlX3JhdGVfLlNldEVzdGltYXRlKHByb2Jl
X2JpdHJhdGVfYnBzLCBub3dfbXMpOworICAgICAgcmVtb3RlX3JhdGVfLlNldEVzdGltYXRlKERh
dGFSYXRlOjpicHMocHJvYmVfYml0cmF0ZV9icHMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRpbWVzdGFtcDo6bXMobm93X21zKSk7CiAgICAgICByZXR1cm4gUHJvYmVSZXN1bHQ6
OmtCaXRyYXRlVXBkYXRlZDsKICAgICB9CiAgIH0KQEAgLTIwNSw3ICsyMTYsNyBAQCBib29sIFJl
bW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGltZTo6SXNCaXRyYXRlSW1wcm92aW5nKAogICBi
b29sIGluaXRpYWxfcHJvYmUgPSAhcmVtb3RlX3JhdGVfLlZhbGlkRXN0aW1hdGUoKSAmJiBuZXdf
Yml0cmF0ZV9icHMgPiAwOwogICBib29sIGJpdHJhdGVfYWJvdmVfZXN0aW1hdGUgPQogICAgICAg
cmVtb3RlX3JhdGVfLlZhbGlkRXN0aW1hdGUoKSAmJgotICAgICAgbmV3X2JpdHJhdGVfYnBzID4g
c3RhdGljX2Nhc3Q8aW50PihyZW1vdGVfcmF0ZV8uTGF0ZXN0RXN0aW1hdGUoKSk7CisgICAgICBu
ZXdfYml0cmF0ZV9icHMgPiByZW1vdGVfcmF0ZV8uTGF0ZXN0RXN0aW1hdGUoKS5icHM8aW50Pigp
OwogICByZXR1cm4gaW5pdGlhbF9wcm9iZSB8fCBiaXRyYXRlX2Fib3ZlX2VzdGltYXRlOwogfQog
CkBAIC0zMTYsMTMgKzMyNywxNCBAQCB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5k
VGltZTo6SW5jb21pbmdQYWNrZXRJbmZvKAogICAgICAgLy8gQ2hlY2sgaWYgaXQncyB0aW1lIGZv
ciBhIHBlcmlvZGljIHVwZGF0ZSBvciBpZiB3ZSBzaG91bGQgdXBkYXRlIGJlY2F1c2UKICAgICAg
IC8vIG9mIGFuIG92ZXItdXNlLgogICAgICAgaWYgKGxhc3RfdXBkYXRlX21zXyA9PSAtMSB8fAot
ICAgICAgICAgIG5vd19tcyAtIGxhc3RfdXBkYXRlX21zXyA+IHJlbW90ZV9yYXRlXy5HZXRGZWVk
YmFja0ludGVydmFsKCkpIHsKKyAgICAgICAgICBub3dfbXMgLSBsYXN0X3VwZGF0ZV9tc18gPiBy
ZW1vdGVfcmF0ZV8uR2V0RmVlZGJhY2tJbnRlcnZhbCgpLm1zKCkpIHsKICAgICAgICAgdXBkYXRl
X2VzdGltYXRlID0gdHJ1ZTsKICAgICAgIH0gZWxzZSBpZiAoZGV0ZWN0b3JfLlN0YXRlKCkgPT0g
QmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZykgewogICAgICAgICBhYnNsOjpvcHRpb25hbDx1
aW50MzJfdD4gaW5jb21pbmdfcmF0ZSA9CiAgICAgICAgICAgICBpbmNvbWluZ19iaXRyYXRlXy5S
YXRlKGFycml2YWxfdGltZV9tcyk7CiAgICAgICAgIGlmIChpbmNvbWluZ19yYXRlICYmCi0gICAg
ICAgICAgICByZW1vdGVfcmF0ZV8uVGltZVRvUmVkdWNlRnVydGhlcihub3dfbXMsICppbmNvbWlu
Z19yYXRlKSkgeworICAgICAgICAgICAgcmVtb3RlX3JhdGVfLlRpbWVUb1JlZHVjZUZ1cnRoZXIo
VGltZXN0YW1wOjptcyhub3dfbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGF0YVJhdGU6OmJwcygqaW5jb21pbmdfcmF0ZSkpKSB7CiAgICAgICAgICAg
dXBkYXRlX2VzdGltYXRlID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgfQpAQCAtMzMyLDkgKzM0
NCwxMSBAQCB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGltZTo6SW5jb21pbmdQ
YWNrZXRJbmZvKAogICAgICAgLy8gVGhlIGZpcnN0IG92ZXJ1c2Ugc2hvdWxkIGltbWVkaWF0ZWx5
IHRyaWdnZXIgYSBuZXcgZXN0aW1hdGUuCiAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gdXBkYXRl
IHRoZSBlc3RpbWF0ZSBpbW1lZGlhdGVseSBpZiB3ZSBhcmUgb3ZlcnVzaW5nCiAgICAgICAvLyBh
bmQgdGhlIHRhcmdldCBiaXRyYXRlIGlzIHRvbyBoaWdoIGNvbXBhcmVkIHRvIHdoYXQgd2UgYXJl
IHJlY2VpdmluZy4KLSAgICAgIGNvbnN0IFJhdGVDb250cm9sSW5wdXQgaW5wdXQoZGV0ZWN0b3Jf
LlN0YXRlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX2Jp
dHJhdGVfLlJhdGUoYXJyaXZhbF90aW1lX21zKSk7Ci0gICAgICB0YXJnZXRfYml0cmF0ZV9icHMg
PSByZW1vdGVfcmF0ZV8uVXBkYXRlKCZpbnB1dCwgbm93X21zKTsKKyAgICAgIGNvbnN0IFJhdGVD
b250cm9sSW5wdXQgaW5wdXQoCisgICAgICAgICAgZGV0ZWN0b3JfLlN0YXRlKCksCisgICAgICAg
ICAgT3B0aW9uYWxSYXRlRnJvbU9wdGlvbmFsQnBzKGluY29taW5nX2JpdHJhdGVfLlJhdGUoYXJy
aXZhbF90aW1lX21zKSkpOworICAgICAgdGFyZ2V0X2JpdHJhdGVfYnBzID0KKyAgICAgICAgICBy
ZW1vdGVfcmF0ZV8uVXBkYXRlKCZpbnB1dCwgVGltZXN0YW1wOjptcyhub3dfbXMpKS5icHM8dWlu
dDMyX3Q+KCk7CiAgICAgICB1cGRhdGVfZXN0aW1hdGUgPSByZW1vdGVfcmF0ZV8uVmFsaWRFc3Rp
bWF0ZSgpOwogICAgICAgc3NyY3MgPSBLZXlzKHNzcmNzXyk7CiAgICAgfQpAQCAtMzc0LDcgKzM4
OCw3IEBAIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvckFic1NlbmRUaW1lOjpUaW1lb3V0U3Ry
ZWFtcyhpbnQ2NF90IG5vd19tcykgewogdm9pZCBSZW1vdGVCaXRyYXRlRXN0aW1hdG9yQWJzU2Vu
ZFRpbWU6Ok9uUnR0VXBkYXRlKGludDY0X3QgYXZnX3J0dF9tcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG1heF9ydHRfbXMpIHsK
ICAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF8pOwotICByZW1vdGVfcmF0ZV8uU2V0UnR0KGF2
Z19ydHRfbXMpOworICByZW1vdGVfcmF0ZV8uU2V0UnR0KFRpbWVEZWx0YTo6bXMoYXZnX3J0dF9t
cykpOwogfQogCiB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGltZTo6UmVtb3Zl
U3RyZWFtKHVpbnQzMl90IHNzcmMpIHsKQEAgLTM5OSw3ICs0MTMsNyBAQCBib29sIFJlbW90ZUJp
dHJhdGVFc3RpbWF0b3JBYnNTZW5kVGltZTo6TGF0ZXN0RXN0aW1hdGUoCiAgIGlmIChzc3Jjc18u
ZW1wdHkoKSkgewogICAgICpiaXRyYXRlX2JwcyA9IDA7CiAgIH0gZWxzZSB7Ci0gICAgKmJpdHJh
dGVfYnBzID0gcmVtb3RlX3JhdGVfLkxhdGVzdEVzdGltYXRlKCk7CisgICAgKmJpdHJhdGVfYnBz
ID0gcmVtb3RlX3JhdGVfLkxhdGVzdEVzdGltYXRlKCkuYnBzPHVpbnQzMl90PigpOwogICB9CiAg
IHJldHVybiB0cnVlOwogfQpAQCAtNDA4LDYgKzQyMiw2IEBAIHZvaWQgUmVtb3RlQml0cmF0ZUVz
dGltYXRvckFic1NlbmRUaW1lOjpTZXRNaW5CaXRyYXRlKGludCBtaW5fYml0cmF0ZV9icHMpIHsK
ICAgLy8gQ2FsbGVkIGZyb20gYm90aCB0aGUgY29uZmlndXJhdGlvbiB0aHJlYWQgYW5kIHRoZSBu
ZXR3b3JrIHRocmVhZC4gU2hvdWxkbid0CiAgIC8vIGJlIGNhbGxlZCBmcm9tIHRoZSBuZXR3b3Jr
IHRocmVhZCBpbiB0aGUgZnV0dXJlLgogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7Ci0g
IHJlbW90ZV9yYXRlXy5TZXRNaW5CaXRyYXRlKG1pbl9iaXRyYXRlX2Jwcyk7CisgIHJlbW90ZV9y
YXRlXy5TZXRNaW5CaXRyYXRlKERhdGFSYXRlOjpicHMobWluX2JpdHJhdGVfYnBzKSk7CiB9CiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmNjCmluZGV4IDNkNzkxZjc4
NDg3ZDliNGRhODc3YjBkY2VhMDFkNWU5MWY1YTY5NjQuLmEyNjcwNTE5NDRiMTBmMTliOGExMGRl
ZGQ1MjJlYjdiNzIzZTlkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9i
aXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmNjCkBAIC0xMCwxNyArMTAs
MzMgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90
ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmgiCiAKKyNpbmNsdWRlIDxhc3NlcnQu
aD4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJ
TlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci9haW1kX3JhdGVfY29udHJvbC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJh
dGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbnRlcl9hcnJpdmFsLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9kZXRlY3Rvci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZXN0aW1hdG9yLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAjaW5jbHVkZSAi
c3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
K25hbWVzcGFjZSB7CithYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gT3B0aW9uYWxSYXRlRnJvbU9w
dGlvbmFsQnBzKAorICAgIGFic2w6Om9wdGlvbmFsPGludD4gYml0cmF0ZV9icHMpIHsKKyAgaWYg
KGJpdHJhdGVfYnBzKSB7CisgICAgcmV0dXJuIERhdGFSYXRlOjpicHMoKmJpdHJhdGVfYnBzKTsK
KyAgfSBlbHNlIHsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorfQorfSAgLy8gbmFt
ZXNwYWNlCiAKIGVudW0geyBrVGltZXN0YW1wR3JvdXBMZW5ndGhNcyA9IDUgfTsKIHN0YXRpYyBj
b25zdCBkb3VibGUga1RpbWVzdGFtcFRvTXMgPSAxLjAgLyA5MC4wOwpAQCAtMTI3LDcgKzE0Myw4
IEBAIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvclNpbmdsZVN0cmVhbTo6SW5jb21pbmdQYWNr
ZXQoCiAgICAgICAgIGluY29taW5nX2JpdHJhdGVfLlJhdGUobm93X21zKTsKICAgICBpZiAoaW5j
b21pbmdfYml0cmF0ZV9icHMgJiYKICAgICAgICAgKHByaW9yX3N0YXRlICE9IEJhbmR3aWR0aFVz
YWdlOjprQndPdmVydXNpbmcgfHwKLSAgICAgICAgIEdldFJlbW90ZVJhdGUoKS0+VGltZVRvUmVk
dWNlRnVydGhlcihub3dfbXMsICppbmNvbWluZ19iaXRyYXRlX2JwcykpKSB7CisgICAgICAgICBH
ZXRSZW1vdGVSYXRlKCktPlRpbWVUb1JlZHVjZUZ1cnRoZXIoCisgICAgICAgICAgICAgVGltZXN0
YW1wOjptcyhub3dfbXMpLCBEYXRhUmF0ZTo6YnBzKCppbmNvbWluZ19iaXRyYXRlX2JwcykpKSkg
ewogICAgICAgLy8gVGhlIGZpcnN0IG92ZXJ1c2Ugc2hvdWxkIGltbWVkaWF0ZWx5IHRyaWdnZXIg
YSBuZXcgZXN0aW1hdGUuCiAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gdXBkYXRlIHRoZSBlc3Rp
bWF0ZSBpbW1lZGlhdGVseSBpZiB3ZSBhcmUgb3ZlcnVzaW5nCiAgICAgICAvLyBhbmQgdGhlIHRh
cmdldCBiaXRyYXRlIGlzIHRvbyBoaWdoIGNvbXBhcmVkIHRvIHdoYXQgd2UgYXJlIHJlY2Vpdmlu
Zy4KQEAgLTE4MSwxMCArMTk4LDEyIEBAIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvclNpbmds
ZVN0cmVhbTo6VXBkYXRlRXN0aW1hdGUoaW50NjRfdCBub3dfbXMpIHsKICAgfQogICBBaW1kUmF0
ZUNvbnRyb2wqIHJlbW90ZV9yYXRlID0gR2V0UmVtb3RlUmF0ZSgpOwogCi0gIGNvbnN0IFJhdGVD
b250cm9sSW5wdXQgaW5wdXQoYndfc3RhdGUsIGluY29taW5nX2JpdHJhdGVfLlJhdGUobm93X21z
KSk7Ci0gIHVpbnQzMl90IHRhcmdldF9iaXRyYXRlID0gcmVtb3RlX3JhdGUtPlVwZGF0ZSgmaW5w
dXQsIG5vd19tcyk7CisgIGNvbnN0IFJhdGVDb250cm9sSW5wdXQgaW5wdXQoCisgICAgICBid19z
dGF0ZSwgT3B0aW9uYWxSYXRlRnJvbU9wdGlvbmFsQnBzKGluY29taW5nX2JpdHJhdGVfLlJhdGUo
bm93X21zKSkpOworICB1aW50MzJfdCB0YXJnZXRfYml0cmF0ZSA9CisgICAgICByZW1vdGVfcmF0
ZS0+VXBkYXRlKCZpbnB1dCwgVGltZXN0YW1wOjptcyhub3dfbXMpKS5icHM8dWludDMyX3Q+KCk7
CiAgIGlmIChyZW1vdGVfcmF0ZS0+VmFsaWRFc3RpbWF0ZSgpKSB7Ci0gICAgcHJvY2Vzc19pbnRl
cnZhbF9tc18gPSByZW1vdGVfcmF0ZS0+R2V0RmVlZGJhY2tJbnRlcnZhbCgpOworICAgIHByb2Nl
c3NfaW50ZXJ2YWxfbXNfID0gcmVtb3RlX3JhdGUtPkdldEZlZWRiYWNrSW50ZXJ2YWwoKS5tcygp
OwogICAgIFJUQ19EQ0hFQ0tfR1QocHJvY2Vzc19pbnRlcnZhbF9tc18sIDApOwogICAgIHN0ZDo6
dmVjdG9yPHVpbnQzMl90PiBzc3JjczsKICAgICBHZXRTc3Jjcygmc3NyY3MpOwpAQCAtMTk2LDcg
KzIxNSw3IEBAIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvclNpbmdsZVN0cmVhbTo6VXBkYXRl
RXN0aW1hdGUoaW50NjRfdCBub3dfbXMpIHsKIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvclNp
bmdsZVN0cmVhbTo6T25SdHRVcGRhdGUoaW50NjRfdCBhdmdfcnR0X21zLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG1heF9ydHRf
bXMpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRfc2VjdF8pOwotICBHZXRSZW1vdGVSYXRl
KCktPlNldFJ0dChhdmdfcnR0X21zKTsKKyAgR2V0UmVtb3RlUmF0ZSgpLT5TZXRSdHQoVGltZURl
bHRhOjptcyhhdmdfcnR0X21zKSk7CiB9CiAKIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvclNp
bmdsZVN0cmVhbTo6UmVtb3ZlU3RyZWFtKHVuc2lnbmVkIGludCBzc3JjKSB7CkBAIC0yMjAsNyAr
MjM5LDcgQEAgYm9vbCBSZW1vdGVCaXRyYXRlRXN0aW1hdG9yU2luZ2xlU3RyZWFtOjpMYXRlc3RF
c3RpbWF0ZSgKICAgaWYgKHNzcmNzLT5lbXB0eSgpKQogICAgICpiaXRyYXRlX2JwcyA9IDA7CiAg
IGVsc2UKLSAgICAqYml0cmF0ZV9icHMgPSByZW1vdGVfcmF0ZV8tPkxhdGVzdEVzdGltYXRlKCk7
CisgICAgKmJpdHJhdGVfYnBzID0gcmVtb3RlX3JhdGVfLT5MYXRlc3RFc3RpbWF0ZSgpLmJwczx1
aW50MzJfdD4oKTsKICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI0Myw3ICsyNjIsNyBAQCBBaW1k
UmF0ZUNvbnRyb2wqIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJlYW06OkdldFJlbW90
ZVJhdGUoKSB7CiAKIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvclNpbmdsZVN0cmVhbTo6U2V0
TWluQml0cmF0ZShpbnQgbWluX2JpdHJhdGVfYnBzKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZj
cml0X3NlY3RfKTsKLSAgcmVtb3RlX3JhdGVfLT5TZXRNaW5CaXRyYXRlKG1pbl9iaXRyYXRlX2Jw
cyk7CisgIHJlbW90ZV9yYXRlXy0+U2V0TWluQml0cmF0ZShEYXRhUmF0ZTo6YnBzKG1pbl9iaXRy
YXRlX2JwcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVf
Yml0cmF0ZV9lc3RpbWF0b3IvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yX3NpbmdsZV9zdHJlYW0u
aAppbmRleCAxOGI0MzVhZmZkZDA5NDkzMWEzMzFmMmY0ZmNmMWYzMmRlYzZmNjFlLi42MzhmMGQ2
ODAyN2FiYzU1MDhjMWM4YTAxYTY5ZDZkZmMwMGZmMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2Jp
dHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmgK
QEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFU
T1JfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX1NJTkdMRV9TVFJFQU1fSF8KICNkZWZpbmUgTU9E
VUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1JfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX1NJ
TkdMRV9TVFJFQU1fSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgpA
QCAtMjAsOSArMjIsMTMgQEAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvcmF0ZV9zdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRp
b25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBDbG9jazsKK3N0cnVjdCBSVFBI
ZWFkZXI7CisKIGNsYXNzIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJlYW0gOiBwdWJs
aWMgUmVtb3RlQml0cmF0ZUVzdGltYXRvciB7CiAgcHVibGljOgogICBSZW1vdGVCaXRyYXRlRXN0
aW1hdG9yU2luZ2xlU3RyZWFtKFJlbW90ZUJpdHJhdGVPYnNlcnZlciogb2JzZXJ2ZXIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xl
X3N0cmVhbV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvcl9zaW5nbGVfc3RyZWFtX3VuaXR0ZXN0LmNjCmluZGV4IDEyMGRiMTNjN2YyODU0ZDc2
MzEzNDI0ZWY5YWJiNGM3YjU3MGRmNTcuLjJhNGVmMDY0NzM3M2I2NjUxODZkYjVmNzgzMWMzNTRk
MGRjYTc2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvcl9zaW5nbGVfc3RyZWFtX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtX3VuaXR0ZXN0LmNjCkBAIC01
NSw3ICs1NSw3IEBAIFRFU1RfRihSZW1vdGVCaXRyYXRlRXN0aW1hdG9yU2luZ2xlVGVzdCwgQ2Fw
YWNpdHlEcm9wVGhyZWVTdHJlYW1zV3JhcCkgewogfQogCiBURVNUX0YoUmVtb3RlQml0cmF0ZUVz
dGltYXRvclNpbmdsZVRlc3QsIENhcGFjaXR5RHJvcFRoaXJ0ZWVuU3RyZWFtc1dyYXApIHsKLSAg
Q2FwYWNpdHlEcm9wVGVzdEhlbHBlcigxMywgdHJ1ZSwgNzMzLCAwKTsKKyAgQ2FwYWNpdHlEcm9w
VGVzdEhlbHBlcigxMywgdHJ1ZSwgNTY3LCAwKTsKIH0KIAogVEVTVF9GKFJlbW90ZUJpdHJhdGVF
c3RpbWF0b3JTaW5nbGVUZXN0LCBDYXBhY2l0eURyb3BOaW5ldGVlblN0cmVhbXNXcmFwKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90ZXN0L2VzdGltYXRvcnMvc2VuZF9zaWRlLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9lc3RpbWF0b3JzL3NlbmRfc2lkZS5jYwppbmRleCBh
NDQ0NDM3NTgwNWI0YmU2ZTUyNjg4ZDRkYmJlN2RjMGVhYTI0NmM0Li4yODlmZjcwZWUyMTU3ZWNl
MzE1ZTBhMjMxMWMwOTRiNTdlNzA0MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90
ZXN0L2VzdGltYXRvcnMvc2VuZF9zaWRlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3Qv
ZXN0aW1hdG9ycy9zZW5kX3NpZGUuY2MKQEAgLTMyLDYgKzMyLDcgQEAgU2VuZFNpZGVCd2VTZW5k
ZXI6OlNlbmRTaWRlQndlU2VuZGVyKGludCBrYnBzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXZlbnRfbG9nXykpLAogICAgICAgYWNrbm93
bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXygKICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxB
Y2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yPigpKSwKKyAgICAgIHByb2JlX2JpdHJhdGVfZXN0
aW1hdG9yXyhuZXcgUHJvYmVCaXRyYXRlRXN0aW1hdG9yKG51bGxwdHIpKSwKICAgICAgIGJ3ZV8o
bmV3IERlbGF5QmFzZWRCd2UobnVsbHB0cikpLAogICAgICAgZmVlZGJhY2tfb2JzZXJ2ZXJfKGJp
dHJhdGVfY29udHJvbGxlcl8uZ2V0KCkpLAogICAgICAgY2xvY2tfKGNsb2NrKSwKQEAgLTQ0LDcg
KzQ1LDcgQEAgU2VuZFNpZGVCd2VTZW5kZXI6OlNlbmRTaWRlQndlU2VuZGVyKGludCBrYnBzLAog
ICBiaXRyYXRlX2NvbnRyb2xsZXJfLT5TZXRTdGFydEJpdHJhdGUoMTAwMCAqIGticHMpOwogICBi
aXRyYXRlX2NvbnRyb2xsZXJfLT5TZXRNaW5NYXhCaXRyYXRlKDEwMDAgKiBrTWluQml0cmF0ZUti
cHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMCAqIGtNYXhC
aXRyYXRlS2Jwcyk7Ci0gIGJ3ZV8tPlNldE1pbkJpdHJhdGUoMTAwMCAqIGtNaW5CaXRyYXRlS2Jw
cyk7CisgIGJ3ZV8tPlNldE1pbkJpdHJhdGUoRGF0YVJhdGU6OmticHMoa01pbkJpdHJhdGVLYnBz
KSk7CiB9CiAKIFNlbmRTaWRlQndlU2VuZGVyOjp+U2VuZFNpZGVCd2VTZW5kZXIoKSB7fQpAQCAt
NzIsMTYgKzczLDIyIEBAIHZvaWQgU2VuZFNpZGVCd2VTZW5kZXI6OkdpdmVGZWVkYmFjayhjb25z
dCBGZWVkYmFja1BhY2tldCYgZmVlZGJhY2spIHsKIAogICBpbnQ2NF90IHJ0dF9tcyA9CiAgICAg
ICBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpIC0gZmVlZGJhY2subGF0ZXN0X3NlbmRfdGlt
ZV9tcygpOwotICBid2VfLT5PblJ0dFVwZGF0ZShydHRfbXMpOworICBid2VfLT5PblJ0dFVwZGF0
ZShUaW1lRGVsdGE6Om1zKHJ0dF9tcykpOwogICBCV0VfVEVTVF9MT0dHSU5HX1BMT1QoMSwgIlJU
VCIsIGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCksIHJ0dF9tcyk7CiAKICAgc3RkOjpzb3J0
KHBhY2tldF9mZWVkYmFja192ZWN0b3IuYmVnaW4oKSwgcGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5l
bmQoKSwKICAgICAgICAgICAgIFBhY2tldEZlZWRiYWNrQ29tcGFyYXRvcigpKTsKICAgYWNrbm93
bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigK
ICAgICAgIHBhY2tldF9mZWVkYmFja192ZWN0b3IpOworICBmb3IgKFBhY2tldEZlZWRiYWNrJiBw
YWNrZXQgOiBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yKSB7CisgICAgaWYgKHBhY2tldC5zZW5kX3Rp
bWVfbXMgIT0gUGFja2V0RmVlZGJhY2s6OmtOb1NlbmRUaW1lICYmCisgICAgICAgIHBhY2tldC5w
YWNpbmdfaW5mby5wcm9iZV9jbHVzdGVyX2lkICE9IFBhY2VkUGFja2V0SW5mbzo6a05vdEFQcm9i
ZSkKKyAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy0+SGFuZGxlUHJvYmVBbmRFc3RpbWF0
ZUJpdHJhdGUocGFja2V0KTsKKyAgfQogICBEZWxheUJhc2VkQndlOjpSZXN1bHQgcmVzdWx0ID0g
YndlXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKLSAgICAgIHBhY2tldF9mZWVkYmFj
a192ZWN0b3IsIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGVfYnBzKCks
Ci0gICAgICBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgICAgIHBhY2tldF9mZWVk
YmFja192ZWN0b3IsIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGUoKSwK
KyAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy0+RmV0Y2hBbmRSZXNldExhc3RFc3RpbWF0
ZWRCaXRyYXRlKCksCisgICAgICBUaW1lc3RhbXA6Om1zKGNsb2NrXy0+VGltZUluTWlsbGlzZWNv
bmRzKCkpKTsKICAgaWYgKHJlc3VsdC51cGRhdGVkKQogICAgIGJpdHJhdGVfY29udHJvbGxlcl8t
Pk9uRGVsYXlCYXNlZEJ3ZVJlc3VsdChyZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvci90ZXN0L2VzdGltYXRvcnMvc2VuZF9zaWRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90
ZXN0L2VzdGltYXRvcnMvc2VuZF9zaWRlLmgKaW5kZXggNmU5MzljMWYwMzU3MDZhZGRjZDM1ZjIw
NjM3MTgxZWI3Nzk0ZTUwYi4uNWI0NWU2NmZiY2E3NTRiODkzODQ3ZDQ4NTFjNjQ4MzMwZTQ3ZGY1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9lc3RpbWF0b3JzL3NlbmRfc2lk
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3QvZXN0aW1hdG9ycy9zZW5kX3NpZGUuaApA
QCAtMzksNiArMzksNyBAQCBjbGFzcyBTZW5kU2lkZUJ3ZVNlbmRlciA6IHB1YmxpYyBCd2VTZW5k
ZXIsIHB1YmxpYyBSZW1vdGVCaXRyYXRlT2JzZXJ2ZXIgewogIHByb3RlY3RlZDoKICAgc3RkOjp1
bmlxdWVfcHRyPEJpdHJhdGVDb250cm9sbGVyPiBiaXRyYXRlX2NvbnRyb2xsZXJfOwogICBzdGQ6
OnVuaXF1ZV9wdHI8QWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcj4gYWNrbm93bGVkZ2VkX2Jp
dHJhdGVfZXN0aW1hdG9yXzsKKyAgc3RkOjp1bmlxdWVfcHRyPFByb2JlQml0cmF0ZUVzdGltYXRv
cj4gcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfOwogICBzdGQ6OnVuaXF1ZV9wdHI8RGVsYXlCYXNl
ZEJ3ZT4gYndlXzsKICAgUnRjcEJhbmR3aWR0aE9ic2VydmVyKiBmZWVkYmFja19vYnNlcnZlcl87
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rvb2xzL2J3ZV9ydHAuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvci90b29scy9id2VfcnRwLmNjCmluZGV4IDAyMzBkYjE3ZGMwMWMyZGRjMTU5
Mjg3ZTIzMjA1MTlhMmE3Yjk1MGMuLmQ3Y2RiNTRkOTI4NzlhNDJjODdhYTdiZDZmNWYyMDcyY2U4
ZmFkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rvb2xzL2J3ZV9ydHAuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3IvdG9vbHMvYndlX3J0cC5jYwpAQCAtMjQsMjggKzI0LDMwIEBA
CiAKIG5hbWVzcGFjZSBmbGFncyB7CiAKLURFRklORV9zdHJpbmcoZXh0ZW5zaW9uX3R5cGUsCi0g
ICAgICAgICAgICAgICJhYnMiLAotICAgICAgICAgICAgICAiRXh0ZW5zaW9uIHR5cGUsIGVpdGhl
ciBhYnMgZm9yIGFic29sdXRlIHNlbmQgdGltZSBvciB0c29mZnNldCAiCi0gICAgICAgICAgICAg
ICJmb3IgdGltZXN0YW1wIG9mZnNldC4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIGV4
dGVuc2lvbl90eXBlLAorICAgICJhYnMiLAorICAgICJFeHRlbnNpb24gdHlwZSwgZWl0aGVyIGFi
cyBmb3IgYWJzb2x1dGUgc2VuZCB0aW1lIG9yIHRzb2Zmc2V0ICIKKyAgICAiZm9yIHRpbWVzdGFt
cCBvZmZzZXQuIik7CiBzdGQ6OnN0cmluZyBFeHRlbnNpb25UeXBlKCkgewogICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfZXh0ZW5zaW9uX3R5cGUpOwogfQogCi1ERUZJTkVf
aW50KGV4dGVuc2lvbl9pZCwgMywgIkV4dGVuc2lvbiBpZC4iKTsKK1dFQlJUQ19ERUZJTkVfaW50
KGV4dGVuc2lvbl9pZCwgMywgIkV4dGVuc2lvbiBpZC4iKTsKIGludCBFeHRlbnNpb25JZCgpIHsK
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19leHRlbnNpb25faWQpOwogfQogCi1ERUZJ
TkVfc3RyaW5nKGlucHV0X2ZpbGUsICIiLCAiSW5wdXQgZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVf
c3RyaW5nKGlucHV0X2ZpbGUsICIiLCAiSW5wdXQgZmlsZS4iKTsKIHN0ZDo6c3RyaW5nIElucHV0
RmlsZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2lucHV0X2Zp
bGUpOwogfQogCi1ERUZJTkVfc3RyaW5nKHNzcmNfZmlsdGVyLAotICAgICAgICAgICAgICAiIiwK
LSAgICAgICAgICAgICAgIkNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIFNTUkNzIGluIGhleGFkZWNp
bWFsIHdoaWNoIGFyZSB0byBiZSAiCi0gICAgICAgICAgICAgICJ1c2VkIGFzIGlucHV0IHRvIHRo
ZSBCV0UgKG9ubHkgYXBwbGljYWJsZSB0byBwY2FwIGZpbGVzKS4iKTsKK1dFQlJUQ19ERUZJTkVf
c3RyaW5nKAorICAgIHNzcmNfZmlsdGVyLAorICAgICIiLAorICAgICJDb21tYS1zZXBhcmF0ZWQg
bGlzdCBvZiBTU1JDcyBpbiBoZXhhZGVjaW1hbCB3aGljaCBhcmUgdG8gYmUgIgorICAgICJ1c2Vk
IGFzIGlucHV0IHRvIHRoZSBCV0UgKG9ubHkgYXBwbGljYWJsZSB0byBwY2FwIGZpbGVzKS4iKTsK
IHN0ZDo6c2V0PHVpbnQzMl90PiBTc3JjRmlsdGVyKCkgewogICBzdGQ6OnN0cmluZyBzc3JjX2Zp
bHRlcl9zdHJpbmcgPSBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zc3JjX2ZpbHRlcik7
CiAgIGlmIChzc3JjX2ZpbHRlcl9zdHJpbmcuZW1wdHkoKSkKQEAgLTY0LDcgKzY2LDcgQEAgc3Rk
OjpzZXQ8dWludDMyX3Q+IFNzcmNGaWx0ZXIoKSB7CiAgIHJldHVybiBzc3JjczsKIH0KIAotREVG
SU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CitXRUJSVENfREVG
SU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CiB9ICAvLyBuYW1l
c3BhY2UgZmxhZ3MKIAogYm9vbCBQYXJzZUFyZ3NBbmRTZXR1cEVzdGltYXRvcihpbnQgYXJnYywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3AvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL0JVSUxELmduCmluZGV4IDRiMzcyOTA3NjUyNzNl
ZmM2OTNjMWExNGFhN2ExMDU2OTIzMzcxZmYuLmVkYjk4MWJjNjdlZGMxNzJkMWFkODU4YjU5NDM1
YTQwYTBiNjU4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9CVUlMRC5nbgpAQCAt
MTEsNiArMTEsNyBAQCBpbXBvcnQoIi4uLy4uL3dlYnJ0Yy5nbmkiKQogcnRjX3NvdXJjZV9zZXQo
InJ0cF9ydGNwX2Zvcm1hdCIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgcHVibGljID0g
WworICAgICJpbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oIiwKICAgICAiaW5jbHVkZS9ydHBfY3Zv
LmgiLAogICAgICJpbmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5oIiwKICAgICAiaW5j
bHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiLApAQCAtODUsNiArODYsNyBAQCBydGNfc291cmNlX3Nl
dCgicnRwX3J0Y3BfZm9ybWF0IikgewogCiAgIGRlcHMgPSBbCiAgICAgIi4uOm1vZHVsZV9hcGki
LAorICAgICIuLjptb2R1bGVfYXBpX3B1YmxpYyIsCiAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24i
LAogICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uL2FwaTpsaWJqaW5nbGVf
cGVlcmNvbm5lY3Rpb25fYXBpIiwKQEAgLTk2LDYgKzk4LDcgQEAgcnRjX3NvdXJjZV9zZXQoInJ0
cF9ydGNwX2Zvcm1hdCIpIHsKICAgICAiLi4vLi4vcnRjX2Jhc2U6ZGVwcmVjYXRpb24iLAogICAg
ICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uL3N5c3RlbV93
cmFwcGVycyIsCisgICAgIi4uL3ZpZGVvX2NvZGluZzpjb2RlY19nbG9iYWxzX2hlYWRlcnMiLAog
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOnZhcmlhbnQiLAogICBdCkBAIC0x
ODYsNyArMTg5LDEwIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRwX3J0Y3AiKSB7CiAKICAgZGVw
cyA9IFsKICAgICAiOnJ0cF9ydGNwX2Zvcm1hdCIsCisgICAgIjpydHBfdmlkZW9faGVhZGVyIiwK
ICAgICAiLi46bW9kdWxlX2FwaSIsCisgICAgIi4uOm1vZHVsZV9hcGlfcHVibGljIiwKKyAgICAi
Li46bW9kdWxlX2ZlY19hcGkiLAogICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4v
Li4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0
aW9uX2FwaSIsCkBAIC0yMTcsOSArMjIzLDEyIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRwX3J0
Y3AiKSB7CiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKICAgICAiLi4vYXVk
aW9fY29kaW5nOmF1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uIiwKICAgICAiLi4vcmVtb3RlX2JpdHJh
dGVfZXN0aW1hdG9yIiwKKyAgICAiLi4vdmlkZW9fY29kaW5nOmNvZGVjX2dsb2JhbHNfaGVhZGVy
cyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lcjppbmxpbmVk
X3ZlY3RvciIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOnZhcmlhbnQiLAogICBdCiB9CiAKQEAgLTI2NCw2ICsy
NzMsNyBAQCBydGNfc291cmNlX3NldCgicnRwX3ZpZGVvX2hlYWRlciIpIHsKICAgICAiLi4vLi4v
YXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAiLi4vLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6
Y29kZWNfZ2xvYmFsc19oZWFkZXJzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyOmlubGluZWRfdmVjdG9yIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlczp2YXJpYW50IiwKICAgXQogfQpAQCAtMzIyLDYgKzMzMiw3IEBAIGlmIChydGNf
aW5jbHVkZV90ZXN0cykgewogICAgICAgIjpydHBfcnRjcCIsCiAgICAgICAiLi4vLi4vdGVzdDpm
aWxldXRpbHMiLAogICAgICAgIi4uLy4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIuLi8uLi90
ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICBdCiAgIH0g
ICMgdGVzdF9wYWNrZXRfbWFza3NfbWV0cmljcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL2ZsZXhm
ZWNfcmVjZWl2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3JlY2VpdmVyLmgKaW5kZXggZjAwNjEx
MWUxMTdiNjJmYjNkZTk5NGFlMGMyMDg5YTJhZTg2OTI1OC4uZjBlZDU3NmM4NzU2MDc5M2MzOWIz
NzkzMzM4Y2IwNGI4OGVkMTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL2ZsZXhmZWNfcmVjZWl2
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZlY19yZWNlaXZlci5oCkBAIC0xMSwxNiArMTEsMjAg
QEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX0ZMRVhGRUNfUkVDRUlWRVJfSF8K
ICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX0ZMRVhGRUNfUkVDRUlWRVJfSF8KIAor
I2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9pbmNsdWRlL3VscGZlY19yZWNlaXZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvY2xvY2suaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlv
bnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKK2NsYXNzIENsb2NrOworCiBjbGFzcyBGbGV4
ZmVjUmVjZWl2ZXIgewogIHB1YmxpYzoKICAgRmxleGZlY1JlY2VpdmVyKHVpbnQzMl90IHNzcmMs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZlY19zZW5kZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4
ZmVjX3NlbmRlci5oCmluZGV4IDEyMjc3ZTEyOGY1NTU0OTE5ZmYyOTc2M2QyZjNhZGY4MzY3N2Q4
NTAuLmFjZWUxMTc2NGMwYWFmMTVhYjY3MjM0YmIwMjg4MzUzZmVjNGY1NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3AvaW5jbHVkZS9mbGV4ZmVjX3NlbmRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3NlbmRl
ci5oCkBAIC0xOCwxNyArMTgsMTUgQEAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2lu
Y2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21v
ZHVsZV9jb21tb25fdHlwZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUv
ZmxleGZlY19zZW5kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRw
X2hlYWRlcl9leHRlbnNpb25fbWFwLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvdWxwZmVjX2dlbmVyYXRvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhbmRvbS5o
IgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCitjbGFzcyBDbG9jazsKIGNsYXNzIFJ0cFBhY2tldFRvU2VuZDsKIAogLy8g
Tm90ZSB0aGF0IHRoaXMgY2xhc3MgaXMgbm90IHRocmVhZCBzYWZlLCBhbmQgdGh1cyByZXF1aXJl
cyBleHRlcm5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlY2VpdmVfc3RhdGlzdGljcy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9pbmNsdWRlL3JlY2VpdmVfc3RhdGlzdGljcy5oCmluZGV4IDI0ZDZmODEyMzdhNWI2ZWVmYmQy
NjQ4MDY2NTBmMDE0M2NiOTk0YjQuLmMyOTllYTY5ZDY2ZWMwM2JkNDgxZGM3OWU4NmM1Mzk3MzQ1
NDFkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZWNlaXZlX3N0YXRpc3RpY3MuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvcmVjZWl2ZV9zdGF0aXN0aWNzLmgKQEAgLTEyLDExICsxMiwxMyBAQAogI2RlZmlu
ZSBNT0RVTEVTX1JUUF9SVENQX0lOQ0xVREVfUkVDRUlWRV9TVEFUSVNUSUNTX0hfCiAKICNpbmNs
dWRlIDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1
ZGUgImNhbGwvcnRwX3BhY2tldF9zaW5rX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
aW5jbHVkZS9tb2R1bGUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1v
bl90eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydGNwX3N0YXRp
c3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVm
aW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3Jl
cG9ydF9ibG9jay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgiCkBAIC01NCwx
NCArNTYsMTQgQEAgY2xhc3MgUmVjZWl2ZVN0YXRpc3RpY3MgOiBwdWJsaWMgUmVjZWl2ZVN0YXRp
c3RpY3NQcm92aWRlciwKICBwdWJsaWM6CiAgIH5SZWNlaXZlU3RhdGlzdGljcygpIG92ZXJyaWRl
ID0gZGVmYXVsdDsKIAotICBzdGF0aWMgUmVjZWl2ZVN0YXRpc3RpY3MqIENyZWF0ZShDbG9jayog
Y2xvY2spOworICBzdGF0aWMgUmVjZWl2ZVN0YXRpc3RpY3MqIENyZWF0ZShDbG9jayogY2xvY2sp
IHsKKyAgICByZXR1cm4gQ3JlYXRlKGNsb2NrLCBudWxscHRyLCBudWxscHRyKS5yZWxlYXNlKCk7
CisgIH0KIAotICAvLyBVcGRhdGVzIHRoZSByZWNlaXZlIHN0YXRpc3RpY3Mgd2l0aCB0aGlzIHBh
Y2tldC4KLSAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODAxNik6IERlcHJlY2F0ZWQuIERlbGV0
ZSBhcyBzb29uIGFzCi0gIC8vIGRvd25zdHJlYW0gY29kZSBpcyB1cGRhdGVkIHRvIHVzZSBPblJ0
cFBhY2tldC4KLSAgUlRDX0RFUFJFQ0FURUQKLSAgdmlydHVhbCB2b2lkIEluY29taW5nUGFja2V0
KGNvbnN0IFJUUEhlYWRlciYgcnRwX2hlYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBwYWNrZXRfbGVuZ3RoKSA9IDA7CisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UmVjZWl2ZVN0YXRpc3RpY3M+IENyZWF0ZSgKKyAgICAgIENsb2NrKiBjbG9jaywKKyAgICAgIFJ0
Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIHJ0Y3BfY2FsbGJhY2ssCisgICAgICBTdHJlYW1EYXRhQ291
bnRlcnNDYWxsYmFjayogcnRwX2NhbGxiYWNrKTsKIAogICAvLyBJbmNyZW1lbnQgY291bnRlciBm
b3IgbnVtYmVyIG9mIEZFQyBwYWNrZXRzIHJlY2VpdmVkLgogICB2aXJ0dWFsIHZvaWQgRmVjUGFj
a2V0UmVjZWl2ZWQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgPSAwOwpAQCAtNzQs
MTQgKzc2LDYgQEAgY2xhc3MgUmVjZWl2ZVN0YXRpc3RpY3MgOiBwdWJsaWMgUmVjZWl2ZVN0YXRp
c3RpY3NQcm92aWRlciwKICAgLy8gRGV0ZWN0IHJldHJhbnNtaXNzaW9ucywgZW5hYmxpbmcgdXBk
YXRlcyBvZiB0aGUgcmV0cmFuc21pdHRlZCBjb3VudGVycy4gVGhlCiAgIC8vIGRlZmF1bHQgaXMg
ZmFsc2UuCiAgIHZpcnR1YWwgdm9pZCBFbmFibGVSZXRyYW5zbWl0RGV0ZWN0aW9uKHVpbnQzMl90
IHNzcmMsIGJvb2wgZW5hYmxlKSA9IDA7Ci0KLSAgLy8gQ2FsbGVkIG9uIG5ldyBSVENQIHN0YXRz
IGNyZWF0aW9uLgotICB2aXJ0dWFsIHZvaWQgUmVnaXN0ZXJSdGNwU3RhdGlzdGljc0NhbGxiYWNr
KAotICAgICAgUnRjcFN0YXRpc3RpY3NDYWxsYmFjayogY2FsbGJhY2spID0gMDsKLQotICAvLyBD
YWxsZWQgb24gbmV3IFJUUCBzdGF0cyBjcmVhdGlvbi4KLSAgdmlydHVhbCB2b2lkIFJlZ2lzdGVy
UnRwU3RhdGlzdGljc0NhbGxiYWNrKAotICAgICAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sq
IGNhbGxiYWNrKSA9IDA7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL2luY2x1ZGUvcmVtb3RlX250cF90aW1lX2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlbW90
ZV9udHBfdGltZV9lc3RpbWF0b3IuaAppbmRleCA1MTk1ZThhYjdlMzE2YzllZGVmNzQxMGNkYWE2
NWIxZGYxYjA0YjFhLi5lNmQyNjljNGRkYWJiMWI5YjUzYmE4OGUzNWVmNzY3NTQyZDUzODMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL2luY2x1ZGUvcmVtb3RlX250cF90aW1lX2VzdGltYXRvci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yLmgKQEAgLTExLDcgKzExLDcgQEAKICNp
Zm5kZWYgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JFTU9URV9OVFBfVElNRV9FU1RJTUFUT1Jf
SF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JFTU9URV9OVFBfVElNRV9FU1RJ
TUFUT1JfSF8KIAotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9u
dW1lcmljcy9tb3ZpbmdfbWVkaWFuX2ZpbHRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0
Y3Bfc3RhdGlzdGljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUxZDU3NmRlMmQ4NmZhOGU4NTIyNmJiZmI1OWY1YTZiMzg3NGJmNjIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL2luY2x1ZGUvcnRjcF9zdGF0aXN0aWNzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JUQ1Bf
U1RBVElTVElDU19IXworI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX0lOQ0xVREVfUlRDUF9TVEFU
SVNUSUNTX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisK
Ky8vIFN0YXRpc3RpY3MgZm9yIGFuIFJUQ1AgY2hhbm5lbAorc3RydWN0IFJ0Y3BTdGF0aXN0aWNz
IHsKKyAgdWludDhfdCBmcmFjdGlvbl9sb3N0ID0gMDsKKyAgaW50MzJfdCBwYWNrZXRzX2xvc3Qg
PSAwOyAgLy8gRGVmaW5lZCBhcyBhIDI0IGJpdCBzaWduZWQgaW50ZWdlciBpbiBSVENQCisgIHVp
bnQzMl90IGV4dGVuZGVkX2hpZ2hlc3Rfc2VxdWVuY2VfbnVtYmVyID0gMDsKKyAgdWludDMyX3Qg
aml0dGVyID0gMDsKK307CisKK2NsYXNzIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sgeworIHB1Ymxp
YzoKKyAgdmlydHVhbCB+UnRjcFN0YXRpc3RpY3NDYWxsYmFjaygpIHt9CisKKyAgdmlydHVhbCB2
b2lkIFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFJ0Y3BTdGF0aXN0aWNzJiBzdGF0aXN0aWNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYykgPSAwOworICB2
aXJ0dWFsIHZvaWQgQ05hbWVDaGFuZ2VkKGNvbnN0IGNoYXIqIGNuYW1lLCB1aW50MzJfdCBzc3Jj
KSA9IDA7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisjZW5kaWYgIC8vIE1PRFVMRVNf
UlRQX1JUQ1BfSU5DTFVERV9SVENQX1NUQVRJU1RJQ1NfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVk
ZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVu
c2lvbl9tYXAuaAppbmRleCBiOGYyN2ExMzEyNDUzMmU1YjQyZWVjNjI2MDYzZTliMzFjOThjODJk
Li4zOTFjNWJlYWE1YTYyYmNiMDc5ZDE5MTIzMWE2MjViYTJhODMyYWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9o
ZWFkZXJfZXh0ZW5zaW9uX21hcC5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNf
UlRQX1JUQ1BfSU5DTFVERV9SVFBfSEVBREVSX0VYVEVOU0lPTl9NQVBfSF8KICNkZWZpbmUgTU9E
VUxFU19SVFBfUlRDUF9JTkNMVURFX1JUUF9IRUFERVJfRVhURU5TSU9OX01BUF9IXwogCisjaW5j
bHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5
X3ZpZXcuaCIKQEAgLTI2LDYgKzI3LDcgQEAgY2xhc3MgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwIHsK
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQga0ludmFsaWRJZCA9IDA7CiAKICAgUnRwSGVhZGVyRXh0
ZW5zaW9uTWFwKCk7CisgIGV4cGxpY2l0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcChib29sIGV4dG1h
cF9hbGxvd19taXhlZCk7CiAgIGV4cGxpY2l0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcChydGM6OkFy
cmF5Vmlldzxjb25zdCBSdHBFeHRlbnNpb24+IGV4dGVuc2lvbnMpOwogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBFeHRlbnNpb24+CkBAIC01MywxOCArNTUsMTkgQEAgY2xhc3MgUnRwSGVhZGVyRXh0
ZW5zaW9uTWFwIHsKICAgfQogICBpbnQzMl90IERlcmVnaXN0ZXIoUlRQRXh0ZW5zaW9uVHlwZSB0
eXBlKTsKIAotICBib29sIElzTWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKCkgY29uc3Qg
ewotICAgIHJldHVybiBtaXhlZF9vbmVfdHdvX2J5dGVfaGVhZGVyX3N1cHBvcnRlZF87Ci0gIH0K
LSAgdm9pZCBTZXRNaXhlZE9uZVR3b0J5dGVIZWFkZXJTdXBwb3J0ZWQoYm9vbCBzdXBwb3J0ZWQp
IHsKLSAgICBtaXhlZF9vbmVfdHdvX2J5dGVfaGVhZGVyX3N1cHBvcnRlZF8gPSBzdXBwb3J0ZWQ7
CisgIC8vIENvcnJlc3BvbmRzIHRvIHRoZSBTRFAgYXR0cmlidXRlIGV4dG1hcC1hbGxvdy1taXhl
ZCwgc2VlIFJGQzgyODUuCisgIC8vIFNldCB0byB0cnVlIGlmIGl0J3MgYWxsb3dlZCB0byBtaXgg
b25lLSBhbmQgdHdvLWJ5dGUgUlRQIGhlYWRlciBleHRlbnNpb25zCisgIC8vIGluIHRoZSBzYW1l
IHN0cmVhbS4KKyAgYm9vbCBFeHRtYXBBbGxvd01peGVkKCkgY29uc3QgeyByZXR1cm4gZXh0bWFw
X2FsbG93X21peGVkXzsgfQorICB2b2lkIFNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBf
YWxsb3dfbWl4ZWQpIHsKKyAgICBleHRtYXBfYWxsb3dfbWl4ZWRfID0gZXh0bWFwX2FsbG93X21p
eGVkOwogICB9CiAKICBwcml2YXRlOgogICBib29sIFJlZ2lzdGVyKGludCBpZCwgUlRQRXh0ZW5z
aW9uVHlwZSB0eXBlLCBjb25zdCBjaGFyKiB1cmkpOwogCiAgIHVpbnQ4X3QgaWRzX1trUnRwRXh0
ZW5zaW9uTnVtYmVyT2ZFeHRlbnNpb25zXTsKLSAgYm9vbCBtaXhlZF9vbmVfdHdvX2J5dGVfaGVh
ZGVyX3N1cHBvcnRlZF87CisgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkXzsKIH07CiAKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX3BhcnNl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfcGFyc2VyLmgKaW5kZXggMmQ4NGZjMWU2OTAzOTIw
Zjk5N2RmNDRiNmRmMDg4NjNkYmYwNTdkOC4uODVlYWI5MGE3M2FjZDUyMTQ3YTE3Y2JlNTk0NDQ1
YzMyNjM1MjM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfcGFyc2VyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfcGFyc2VyLmgKQEAgLTEwLDYgKzEwLDcgQEAKICNpZm5k
ZWYgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JUUF9IRUFERVJfUEFSU0VSX0hfCiAjZGVmaW5l
IE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9SVFBfSEVBREVSX1BBUlNFUl9IXwogCisjaW5jbHVk
ZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1
ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTM2LDggKzM3
LDE0IEBAIGNsYXNzIFJ0cEhlYWRlclBhcnNlciB7CiAgIHZpcnR1YWwgYm9vbCBSZWdpc3RlclJ0
cEhlYWRlckV4dGVuc2lvbihSVFBFeHRlbnNpb25UeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGlkKSA9IDA7CiAKKyAgLy8gUmVnaXN0
ZXJzIGFuIFJUUCBoZWFkZXIgZXh0ZW5zaW9uLgorICB2aXJ0dWFsIGJvb2wgUmVnaXN0ZXJSdHBI
ZWFkZXJFeHRlbnNpb24oUnRwRXh0ZW5zaW9uIGV4dGVuc2lvbikgPSAwOworCiAgIC8vIERlLXJl
Z2lzdGVycyBhbiBSVFAgaGVhZGVyIGV4dGVuc2lvbi4KICAgdmlydHVhbCBib29sIERlcmVnaXN0
ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlKSA9IDA7CisKKyAgLy8g
RGUtcmVnaXN0ZXJzIGFuIFJUUCBoZWFkZXIgZXh0ZW5zaW9uLgorICB2aXJ0dWFsIGJvb2wgRGVy
ZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihSdHBFeHRlbnNpb24gZXh0ZW5zaW9uKSA9IDA7CiB9
OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogI2VuZGlmICAvLyBNT0RVTEVTX1JUUF9SVENQX0lO
Q0xVREVfUlRQX0hFQURFUl9QQVJTRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRj
cC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwLmgKaW5kZXggOWIyOWY3NjIyZTJmZjEzNDIzMGNhMDU2
YjFkOGE2NTU1M2Q2ZTJjNS4uZDEzNmE1ZTZlOWEzYmE3NjIzY2NiM2M0YzczMjEzMTIxMjcxNGQ2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9y
dGNwLmgKQEAgLTE4LDkgKzE4LDkgQEAKIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCi0jaW5j
bHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRl
ICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL2ZsZXhmZWNfc2VuZGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL3JlY2VpdmVfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgiCkBAIC0yOCw2ICsyOCw3
IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCitjbGFz
cyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsKIGNsYXNzIE92ZXJoZWFkT2JzZXJ2ZXI7CiBjbGFz
cyBSYXRlTGltaXRlcjsKIGNsYXNzIFJlY2VpdmVTdGF0aXN0aWNzUHJvdmlkZXI7CkBAIC05Miwx
MSArOTMsMjAgQEAgY2xhc3MgUnRwUnRjcCA6IHB1YmxpYyBNb2R1bGUsIHB1YmxpYyBSdGNwRmVl
ZGJhY2tTZW5kZXJJbnRlcmZhY2UgewogICAgIFJhdGVMaW1pdGVyKiByZXRyYW5zbWlzc2lvbl9y
YXRlX2xpbWl0ZXIgPSBudWxscHRyOwogICAgIE92ZXJoZWFkT2JzZXJ2ZXIqIG92ZXJoZWFkX29i
c2VydmVyID0gbnVsbHB0cjsKICAgICBSdHBLZWVwQWxpdmVDb25maWcga2VlcGFsaXZlX2NvbmZp
ZzsKLSAgICBSdGNwSW50ZXJ2YWxDb25maWcgcnRjcF9pbnRlcnZhbF9jb25maWc7CisKKyAgICBp
bnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPSAwOwogCiAgICAgLy8gVXBkYXRlIG5ldHdvcmsy
IGluc3RlYWQgb2YgcGFjZXJfZXhpdCBmaWVsZCBvZiB2aWRlbyB0aW1pbmcgZXh0ZW5zaW9uLgog
ICAgIGJvb2wgcG9wdWxhdGVfbmV0d29yazJfdGltZXN0YW1wID0gZmFsc2U7CiAKKyAgICAvLyBF
MkVFIEN1c3RvbSBWaWRlbyBGcmFtZSBFbmNyeXB0aW9uCisgICAgRnJhbWVFbmNyeXB0b3JJbnRl
cmZhY2UqIGZyYW1lX2VuY3J5cHRvciA9IG51bGxwdHI7CisgICAgLy8gUmVxdWlyZSBhbGwgb3V0
Z29pbmcgZnJhbWVzIHRvIGJlIGVuY3J5cHRlZCB3aXRoIGEgRnJhbWVFbmNyeXB0b3IuCisgICAg
Ym9vbCByZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24gPSBmYWxzZTsKKworICAgIC8vIENvcnJlc3Bv
bmRzIHRvIGV4dG1hcC1hbGxvdy1taXhlZCBpbiBTRFAgbmVnb3RpYXRpb24uCisgICAgYm9vbCBl
eHRtYXBfYWxsb3dfbWl4ZWQgPSBmYWxzZTsKKwogICAgcHJpdmF0ZToKICAgICBSVENfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKENvbmZpZ3VyYXRpb24pOwogICB9OwpAQCAtMTM2LDYgKzE0Niw4
IEBAIGNsYXNzIFJ0cFJ0Y3AgOiBwdWJsaWMgTW9kdWxlLCBwdWJsaWMgUnRjcEZlZWRiYWNrU2Vu
ZGVySW50ZXJmYWNlIHsKICAgLy8gUmV0dXJucyAtMSBvbiBmYWlsdXJlIGVsc2UgMC4KICAgdmly
dHVhbCBpbnQzMl90IERlUmVnaXN0ZXJTZW5kUGF5bG9hZChpbnQ4X3QgcGF5bG9hZF90eXBlKSA9
IDA7CiAKKyAgdmlydHVhbCB2b2lkIFNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxs
b3dfbWl4ZWQpID0gMDsKKwogICAvLyAoRGUpcmVnaXN0ZXJzIFJUUCBoZWFkZXIgZXh0ZW5zaW9u
IHR5cGUgYW5kIGlkLgogICAvLyBSZXR1cm5zIC0xIG9uIGZhaWx1cmUgZWxzZSAwLgogICB2aXJ0
dWFsIGludDMyX3QgUmVnaXN0ZXJTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5
cGUgdHlwZSwKQEAgLTIxMyw2ICsyMjUsMTAgQEAgY2xhc3MgUnRwUnRjcCA6IHB1YmxpYyBNb2R1
bGUsIHB1YmxpYyBSdGNwRmVlZGJhY2tTZW5kZXJJbnRlcmZhY2UgewogICAvLyBSZXR1cm5zIGN1
cnJlbnQgbWVkaWEgc2VuZGluZyBzdGF0dXMuCiAgIHZpcnR1YWwgYm9vbCBTZW5kaW5nTWVkaWEo
KSBjb25zdCA9IDA7CiAKKyAgLy8gSW5kaWNhdGUgdGhhdCB0aGUgcGFja2V0cyBzZW50IGJ5IHRo
aXMgbW9kdWxlIHNob3VsZCBiZSBjb3VudGVkIHRvd2FyZHMgdGhlCisgIC8vIGJpdHJhdGUgZXN0
aW1hdGUgc2luY2UgdGhlIHN0cmVhbSBwYXJ0aWNpcGF0ZXMgaW4gdGhlIGJpdHJhdGUgYWxsb2Nh
dGlvbi4KKyAgdmlydHVhbCB2b2lkIFNldEFzUGFydE9mQWxsb2NhdGlvbihib29sIHBhcnRfb2Zf
YWxsb2NhdGlvbikgPSAwOworCiAgIC8vIFJldHVybnMgY3VycmVudCBiaXRyYXRlIGluIEtiaXQv
cy4KICAgdmlydHVhbCB2b2lkIEJpdHJhdGVTZW50KHVpbnQzMl90KiB0b3RhbF9yYXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QqIHZpZGVvX3JhdGUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZp
bmVzLmNjCmluZGV4IGY4NmIyMzhiN2RhZWJlNjMyZjFmZTRkYWQyM2E0NDgzNDQ0YThjOWMuLmQ3
NDNmNTJmN2U2ZGYzZWEyNjgzMjEyMDBjMzM3NTg1MTZmMjllZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9ydHBfcnRjcF9kZWZpbmVzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVz
LmNjCkBAIC05LDYgKzksMTQgQEAKICAqLwogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfcGFja2V0LmgiCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2lu
Y2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC01NCw0
ICs2Miw4MCBAQCBQYXlsb2FkVW5pb246On5QYXlsb2FkVW5pb24oKSA9IGRlZmF1bHQ7CiBQYXls
b2FkVW5pb24mIFBheWxvYWRVbmlvbjo6b3BlcmF0b3I9KGNvbnN0IFBheWxvYWRVbmlvbiYpID0g
ZGVmYXVsdDsKIFBheWxvYWRVbmlvbiYgUGF5bG9hZFVuaW9uOjpvcGVyYXRvcj0oUGF5bG9hZFVu
aW9uJiYpID0gZGVmYXVsdDsKIAorUGFja2V0RmVlZGJhY2s6OlBhY2tldEZlZWRiYWNrKGludDY0
X3QgYXJyaXZhbF90aW1lX21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQx
Nl90IHNlcXVlbmNlX251bWJlcikKKyAgICA6IFBhY2tldEZlZWRiYWNrKC0xLAorICAgICAgICAg
ICAgICAgICAgICAgYXJyaXZhbF90aW1lX21zLAorICAgICAgICAgICAgICAgICAgICAga05vU2Vu
ZFRpbWUsCisgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIsCisgICAgICAgICAg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAg
ICAgIDAsCisgICAgICAgICAgICAgICAgICAgICBQYWNlZFBhY2tldEluZm8oKSkge30KKworUGFj
a2V0RmVlZGJhY2s6OlBhY2tldEZlZWRiYWNrKGludDY0X3QgYXJyaXZhbF90aW1lX21zLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qgc2VuZF90aW1lX21zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZF9zaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2luZm8p
CisgICAgOiBQYWNrZXRGZWVkYmFjaygtMSwKKyAgICAgICAgICAgICAgICAgICAgIGFycml2YWxf
dGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgIHNlbmRfdGltZV9tcywKKyAgICAgICAgICAg
ICAgICAgICAgIHNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRf
c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAwLAor
ICAgICAgICAgICAgICAgICAgICAgcGFjaW5nX2luZm8pIHt9CisKK1BhY2tldEZlZWRiYWNrOjpQ
YWNrZXRGZWVkYmFjayhpbnQ2NF90IGNyZWF0aW9uX3RpbWVfbXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkX3NpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDE2X3QgbG9jYWxfbmV0X2lkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9uZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbykKKyAgICA6IFBhY2tl
dEZlZWRiYWNrKGNyZWF0aW9uX3RpbWVfbXMsCisgICAgICAgICAgICAgICAgICAgICBrTm90UmVj
ZWl2ZWQsCisgICAgICAgICAgICAgICAgICAgICBrTm9TZW5kVGltZSwKKyAgICAgICAgICAgICAg
ICAgICAgIHNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRfc2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgIGxvY2FsX25ldF9pZCwKKyAgICAgICAgICAgICAgICAg
ICAgIHJlbW90ZV9uZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICBwYWNpbmdfaW5mbykge30K
KworUGFja2V0RmVlZGJhY2s6OlBhY2tldEZlZWRiYWNrKGludDY0X3QgY3JlYXRpb25fdGltZV9t
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGFycml2YWxfdGltZV9t
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNlbmRfdGltZV9tcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBsb2NhbF9uZXRfaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgcmVtb3RlX25ldF9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19p
bmZvKQorICAgIDogY3JlYXRpb25fdGltZV9tcyhjcmVhdGlvbl90aW1lX21zKSwKKyAgICAgIGFy
cml2YWxfdGltZV9tcyhhcnJpdmFsX3RpbWVfbXMpLAorICAgICAgc2VuZF90aW1lX21zKHNlbmRf
dGltZV9tcyksCisgICAgICBzZXF1ZW5jZV9udW1iZXIoc2VxdWVuY2VfbnVtYmVyKSwKKyAgICAg
IHBheWxvYWRfc2l6ZShwYXlsb2FkX3NpemUpLAorICAgICAgdW5hY2tub3dsZWRnZWRfZGF0YSgw
KSwKKyAgICAgIGxvY2FsX25ldF9pZChsb2NhbF9uZXRfaWQpLAorICAgICAgcmVtb3RlX25ldF9p
ZChyZW1vdGVfbmV0X2lkKSwKKyAgICAgIHBhY2luZ19pbmZvKHBhY2luZ19pbmZvKSB7fQorCitQ
YWNrZXRGZWVkYmFjazo6UGFja2V0RmVlZGJhY2soY29uc3QgUGFja2V0RmVlZGJhY2smKSA9IGRl
ZmF1bHQ7CitQYWNrZXRGZWVkYmFjayYgUGFja2V0RmVlZGJhY2s6Om9wZXJhdG9yPShjb25zdCBQ
YWNrZXRGZWVkYmFjayYpID0gZGVmYXVsdDsKK1BhY2tldEZlZWRiYWNrOjp+UGFja2V0RmVlZGJh
Y2soKSA9IGRlZmF1bHQ7CisKK2Jvb2wgUGFja2V0RmVlZGJhY2s6Om9wZXJhdG9yPT0oY29uc3Qg
UGFja2V0RmVlZGJhY2smIHJocykgY29uc3QgeworICByZXR1cm4gYXJyaXZhbF90aW1lX21zID09
IHJocy5hcnJpdmFsX3RpbWVfbXMgJiYKKyAgICAgICAgIHNlbmRfdGltZV9tcyA9PSByaHMuc2Vu
ZF90aW1lX21zICYmCisgICAgICAgICBzZXF1ZW5jZV9udW1iZXIgPT0gcmhzLnNlcXVlbmNlX251
bWJlciAmJgorICAgICAgICAgcGF5bG9hZF9zaXplID09IHJocy5wYXlsb2FkX3NpemUgJiYgcGFj
aW5nX2luZm8gPT0gcmhzLnBhY2luZ19pbmZvOworfQorCit2b2lkIFJ0cFBhY2tldENvdW50ZXI6
OkFkZFBhY2tldChjb25zdCBSdHBQYWNrZXQmIHBhY2tldCkgeworICArK3BhY2tldHM7CisgIGhl
YWRlcl9ieXRlcyArPSBwYWNrZXQuaGVhZGVyc19zaXplKCk7CisgIHBhZGRpbmdfYnl0ZXMgKz0g
cGFja2V0LnBhZGRpbmdfc2l6ZSgpOworICBwYXlsb2FkX2J5dGVzICs9IHBhY2tldC5wYXlsb2Fk
X3NpemUoKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL3J0cF9ydGNwX2RlZmluZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgKaW5k
ZXggNjUwM2I0ZWRjYzNhM2I4OGQ3ZmUwY2U2NTdiMDNlZjdiNzgwYWQ2Yy4uYWI0ZmNhZWNjNzlh
NDgxMDcxYmMxNjZkYzc5YTUyZmViMGE2MjU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9y
dGNwX2RlZmluZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oCkBAIC0yNywy
OCArMjcsMjAgQEAKICNkZWZpbmUgSVBfUEFDS0VUX1NJWkUgMTUwMCAgLy8gd2UgYXNzdW1lIGV0
aGVybmV0CiAKIG5hbWVzcGFjZSB3ZWJydGMgeworY2xhc3MgUnRwUGFja2V0OwogbmFtZXNwYWNl
IHJ0Y3AgewogY2xhc3MgVHJhbnNwb3J0RmVlZGJhY2s7CiB9CiAKIGNvbnN0IGludCBrVmlkZW9Q
YXlsb2FkVHlwZUZyZXF1ZW5jeSA9IDkwMDAwOwotLy8gVE9ETyhzb2xlbmJlcmcpOiBSVFAgdGlt
ZSBzdGFtcCByYXRlIGZvciBSVENQIGlzIGZpeGVkIGF0IDhrLCB0aGlzIGlzIGxlZ2FjeQotLy8g
YW5kIHNob3VsZCBiZSBmaXhlZC4KLS8vIFNlZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9w
L3dlYnJ0Yy9pc3N1ZXMvZGV0YWlsP2lkPTY0NTgKKworLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcv
NjQ1OCk6IFJlbW92ZSB0aGlzIHdoZW4gYWxsIHRoZSBkZXBlbmRpbmcgcHJvamVjdHMgYXJlCisv
LyB1cGRhdGVkIHRvIGNvcnJlY3RseSBzZXQgcnRwIHJhdGUgZm9yIFJ0Y3BTZW5kZXIuCiBjb25z
dCBpbnQga0JvZ3VzUnRwUmF0ZUZvckF1ZGlvUnRjcCA9IDgwMDA7CiAKIC8vIE1pbmltdW0gUlRQ
IGhlYWRlciBzaXplIGluIGJ5dGVzLgogY29uc3QgdWludDhfdCBrUnRwSGVhZGVyU2l6ZSA9IDEy
OwogCi1zdHJ1Y3QgUnRjcEludGVydmFsQ29uZmlnIGZpbmFsIHsKLSAgUnRjcEludGVydmFsQ29u
ZmlnKCkgPSBkZWZhdWx0OwotICBSdGNwSW50ZXJ2YWxDb25maWcoaW50NjRfdCB2aWRlb19pbnRl
cnZhbF9tcywgaW50NjRfdCBhdWRpb19pbnRlcnZhbF9tcykKLSAgICAgIDogdmlkZW9faW50ZXJ2
YWxfbXModmlkZW9faW50ZXJ2YWxfbXMpLAotICAgICAgICBhdWRpb19pbnRlcnZhbF9tcyhhdWRp
b19pbnRlcnZhbF9tcykge30KLSAgaW50NjRfdCB2aWRlb19pbnRlcnZhbF9tcyA9IDEwMDA7Ci0g
IGludDY0X3QgYXVkaW9faW50ZXJ2YWxfbXMgPSA1MDAwOwotfTsKLQogc3RydWN0IEF1ZGlvUGF5
bG9hZCB7CiAgIFNkcEF1ZGlvRm9ybWF0IGZvcm1hdDsKICAgdWludDMyX3QgcmF0ZTsKQEAgLTEx
Miw2ICsxMDQsNyBAQCBlbnVtIFJUUEV4dGVuc2lvblR5cGUgOiBpbnQgewogICBrUnRwRXh0ZW5z
aW9uUmVwYWlyZWRSdHBTdHJlYW1JZCwKICAga1J0cEV4dGVuc2lvbk1pZCwKICAga1J0cEV4dGVu
c2lvbkdlbmVyaWNGcmFtZURlc2NyaXB0b3IsCisgIGtSdHBFeHRlbnNpb25Db2xvclNwYWNlLAog
ICBrUnRwRXh0ZW5zaW9uTnVtYmVyT2ZFeHRlbnNpb25zICAvLyBNdXN0IGJlIHRoZSBsYXN0IGVu
dGl0eSBpbiB0aGUgZW51bS4KIH07CiAKQEAgLTIyMiwxNSArMjE1LDYgQEAgc3RydWN0IFJ0cFN0
YXRlIHsKICAgYm9vbCBtZWRpYV9oYXNfYmVlbl9zZW50OwogfTsKIAotY2xhc3MgUnRwRGF0YSB7
Ci0gcHVibGljOgotICB2aXJ0dWFsIH5SdHBEYXRhKCkge30KLQotICB2aXJ0dWFsIGludDMyX3Qg
T25SZWNlaXZlZFBheWxvYWREYXRhKGNvbnN0IHVpbnQ4X3QqIHBheWxvYWRfZGF0YSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZF9zaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJ0Y1JUUEhl
YWRlciogcnRwX2hlYWRlcikgPSAwOwotfTsKLQogLy8gQ2FsbGJhY2sgaW50ZXJmYWNlIGZvciBw
YWNrZXRzIHJlY292ZXJlZCBieSBGbGV4RkVDIG9yIFVMUEZFQy4gSW4KIC8vIHRoZSBGbGV4RkVD
IGNhc2UsIHRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgYWJsZSB0byBkZW11bHRpcGxleAog
Ly8gdGhlIHJlY292ZXJlZCBSVFAgcGFja2V0cyBiYXNlZCBvbiBTU1JDLgpAQCAtMjYzLDQ0ICsy
NDcsMjAgQEAgY2xhc3MgUnRjcEJhbmR3aWR0aE9ic2VydmVyIHsKIH07CiAKIHN0cnVjdCBQYWNr
ZXRGZWVkYmFjayB7Ci0gIFBhY2tldEZlZWRiYWNrKGludDY0X3QgYXJyaXZhbF90aW1lX21zLCB1
aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIpCi0gICAgICA6IFBhY2tldEZlZWRiYWNrKC0xLAotICAg
ICAgICAgICAgICAgICAgICAgICBhcnJpdmFsX3RpbWVfbXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgIGtOb1NlbmRUaW1lLAotICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgIDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgIFBhY2VkUGFj
a2V0SW5mbygpKSB7fQorICBQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGFycml2YWxfdGltZV9tcywg
dWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyKTsKIAogICBQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGFy
cml2YWxfdGltZV9tcywKICAgICAgICAgICAgICAgICAgaW50NjRfdCBzZW5kX3RpbWVfbXMsCiAg
ICAgICAgICAgICAgICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwKICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgY29uc3QgUGFjZWRQYWNr
ZXRJbmZvJiBwYWNpbmdfaW5mbykKLSAgICAgIDogUGFja2V0RmVlZGJhY2soLTEsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGFycml2YWxfdGltZV9tcywKLSAgICAgICAgICAgICAgICAgICAgICAg
c2VuZF90aW1lX21zLAotICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAg
cGFjaW5nX2luZm8pIHt9CisgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYg
cGFjaW5nX2luZm8pOwogCiAgIFBhY2tldEZlZWRiYWNrKGludDY0X3QgY3JlYXRpb25fdGltZV9t
cywKICAgICAgICAgICAgICAgICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAogICAgICAgICAg
ICAgICAgICBzaXplX3QgcGF5bG9hZF9zaXplLAogICAgICAgICAgICAgICAgICB1aW50MTZfdCBs
b2NhbF9uZXRfaWQsCiAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9uZXRfaWQsCi0g
ICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2luZm8pCi0gICAg
ICA6IFBhY2tldEZlZWRiYWNrKGNyZWF0aW9uX3RpbWVfbXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgIGtOb3RSZWNlaXZlZCwKLSAgICAgICAgICAgICAgICAgICAgICAga05vU2VuZFRpbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgcGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9uZXRfaWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9uZXRfaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgIHBhY2luZ19pbmZvKSB7fQorICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tl
dEluZm8mIHBhY2luZ19pbmZvKTsKIAogICBQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGNyZWF0aW9u
X3RpbWVfbXMsCiAgICAgICAgICAgICAgICAgIGludDY0X3QgYXJyaXZhbF90aW1lX21zLApAQCAt
MzA5LDE1ICsyNjksMTAgQEAgc3RydWN0IFBhY2tldEZlZWRiYWNrIHsKICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwKICAgICAgICAgICAgICAgICAgdWludDE2X3QgbG9jYWxf
bmV0X2lkLAogICAgICAgICAgICAgICAgICB1aW50MTZfdCByZW1vdGVfbmV0X2lkLAotICAgICAg
ICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKQotICAgICAgOiBj
cmVhdGlvbl90aW1lX21zKGNyZWF0aW9uX3RpbWVfbXMpLAotICAgICAgICBhcnJpdmFsX3RpbWVf
bXMoYXJyaXZhbF90aW1lX21zKSwKLSAgICAgICAgc2VuZF90aW1lX21zKHNlbmRfdGltZV9tcyks
Ci0gICAgICAgIHNlcXVlbmNlX251bWJlcihzZXF1ZW5jZV9udW1iZXIpLAotICAgICAgICBwYXls
b2FkX3NpemUocGF5bG9hZF9zaXplKSwKLSAgICAgICAgbG9jYWxfbmV0X2lkKGxvY2FsX25ldF9p
ZCksCi0gICAgICAgIHJlbW90ZV9uZXRfaWQocmVtb3RlX25ldF9pZCksCi0gICAgICAgIHBhY2lu
Z19pbmZvKHBhY2luZ19pbmZvKSB7fQorICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tl
dEluZm8mIHBhY2luZ19pbmZvKTsKKyAgUGFja2V0RmVlZGJhY2soY29uc3QgUGFja2V0RmVlZGJh
Y2smKTsKKyAgUGFja2V0RmVlZGJhY2smIG9wZXJhdG9yPShjb25zdCBQYWNrZXRGZWVkYmFjayYp
OworICB+UGFja2V0RmVlZGJhY2soKTsKIAogICBzdGF0aWMgY29uc3RleHByIGludCBrTm90QVBy
b2JlID0gLTE7CiAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBrTm90UmVjZWl2ZWQgPSAtMTsK
QEAgLTMyOCwxMiArMjgzLDcgQEAgc3RydWN0IFBhY2tldEZlZWRiYWNrIHsKICAgLy8gICAgICAg
Zm9yIGJvb2sta2VlcGluZywgYW5kIGlzIG9mIG5vIGludGVyZXN0IG91dHNpZGUgdGhhdCBjbGFz
cy4KICAgLy8gVE9ETyhwaGlsaXBlbCk6IFJlbW92ZSB8Y3JlYXRpb25fdGltZV9tc3wgZnJvbSBQ
YWNrZXRGZWVkYmFjayB3aGVuIGNsZWFuaW5nCiAgIC8vICAgICAgICAgICAgICAgICB1cCBTZW5k
VGltZUhpc3RvcnkuCi0gIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYWNrZXRGZWVkYmFjayYgcmhz
KSBjb25zdCB7Ci0gICAgcmV0dXJuIGFycml2YWxfdGltZV9tcyA9PSByaHMuYXJyaXZhbF90aW1l
X21zICYmCi0gICAgICAgICAgIHNlbmRfdGltZV9tcyA9PSByaHMuc2VuZF90aW1lX21zICYmCi0g
ICAgICAgICAgIHNlcXVlbmNlX251bWJlciA9PSByaHMuc2VxdWVuY2VfbnVtYmVyICYmCi0gICAg
ICAgICAgIHBheWxvYWRfc2l6ZSA9PSByaHMucGF5bG9hZF9zaXplICYmIHBhY2luZ19pbmZvID09
IHJocy5wYWNpbmdfaW5mbzsKLSAgfQorICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFja2V0RmVl
ZGJhY2smIHJocykgY29uc3Q7CiAKICAgLy8gVGltZSBjb3JyZXNwb25kaW5nIHRvIHdoZW4gdGhp
cyBvYmplY3Qgd2FzIGNyZWF0ZWQuCiAgIGludDY0X3QgY3JlYXRpb25fdGltZV9tczsKQEAgLTM1
Miw2ICszMDIsOCBAQCBzdHJ1Y3QgUGFja2V0RmVlZGJhY2sgewogICBpbnQ2NF90IGxvbmdfc2Vx
dWVuY2VfbnVtYmVyOwogICAvLyBTaXplIG9mIHRoZSBwYWNrZXQgZXhjbHVkaW5nIFJUUCBoZWFk
ZXJzLgogICBzaXplX3QgcGF5bG9hZF9zaXplOworICAvLyBTaXplIG9mIHByZWNlZWRpbmcgcGFj
a2V0cyB0aGF0IGFyZSBub3QgcGFydCBvZiBmZWVkYmFjay4KKyAgc2l6ZV90IHVuYWNrbm93bGVk
Z2VkX2RhdGE7CiAgIC8vIFRoZSBuZXR3b3JrIHJvdXRlIGlkcyB0aGF0IHRoaXMgcGFja2V0IGlz
IGFzc29jaWF0ZWQgd2l0aC4KICAgdWludDE2X3QgbG9jYWxfbmV0X2lkOwogICB1aW50MTZfdCBy
ZW1vdGVfbmV0X2lkOwpAQCAtNDg5LDEzICs0NDEsOCBAQCBzdHJ1Y3QgUnRwUGFja2V0Q291bnRl
ciB7CiAgICAgcGFja2V0cyAtPSBvdGhlci5wYWNrZXRzOwogICB9CiAKLSAgdm9pZCBBZGRQYWNr
ZXQoc2l6ZV90IHBhY2tldF9sZW5ndGgsIGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyKSB7Ci0gICAg
KytwYWNrZXRzOwotICAgIGhlYWRlcl9ieXRlcyArPSBoZWFkZXIuaGVhZGVyTGVuZ3RoOwotICAg
IHBhZGRpbmdfYnl0ZXMgKz0gaGVhZGVyLnBhZGRpbmdMZW5ndGg7Ci0gICAgcGF5bG9hZF9ieXRl
cyArPQotICAgICAgICBwYWNrZXRfbGVuZ3RoIC0gKGhlYWRlci5oZWFkZXJMZW5ndGggKyBoZWFk
ZXIucGFkZGluZ0xlbmd0aCk7Ci0gIH0KKyAgLy8gTm90IGlubGluZWQsIHNpbmNlIHVzZSBvZiBS
dHBQYWNrZXQgd291bGQgcmVzdWx0IGluIGNpcmN1bGFyIGluY2x1ZGVzLgorICB2b2lkIEFkZFBh
Y2tldChjb25zdCBSdHBQYWNrZXQmIHBhY2tldCk7CiAKICAgc2l6ZV90IFRvdGFsQnl0ZXMoKSBj
b25zdCB7CiAgICAgcmV0dXJuIGhlYWRlcl9ieXRlcyArIHBheWxvYWRfYnl0ZXMgKyBwYWRkaW5n
X2J5dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9tb2Nrcy9tb2NrX3J0cF9ydGNwLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9tb2Nrcy9t
b2NrX3J0cF9ydGNwLmNjCmluZGV4IGQyNGMxYjA5NGM1MWY5OThlZGFiNjVkNmRlZjllMzc5Mzdh
OGJmZTMuLjA2MWY4Mjc2NWNjNzViYWEzY2EwNGNkZDQzYzY0ZjE5OTJkZDVlYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL21vY2tzL21vY2tfcnRwX3J0Y3Au
Y2MKQEAgLTEyLDkgKzEyLDYgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLU1vY2tSdHBEYXRh
OjpNb2NrUnRwRGF0YSgpID0gZGVmYXVsdDsKLU1vY2tSdHBEYXRhOjp+TW9ja1J0cERhdGEoKSA9
IGRlZmF1bHQ7Ci0KIE1vY2tSdHBSdGNwOjpNb2NrUnRwUnRjcCgpID0gZGVmYXVsdDsKIE1vY2tS
dHBSdGNwOjp+TW9ja1J0cFJ0Y3AoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvbW9ja3Mv
bW9ja19ydHBfcnRjcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9tb2Nrcy9tb2NrX3J0cF9ydGNwLmgKaW5kZXggNmQ1YmRlNDc4
OGY0YTZhZTQ4ZmY2YThkZGMwODRmNzY2MzQ0ZmFkZS4uM2I5Yjk0M2M0NTM5NTA0MTMwZDI2ZDU1
YmM0ZWNmMzRhOWNjYjVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9tb2Nrcy9tb2NrX3J0cF9ydGNwLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9tb2Nrcy9tb2NrX3J0cF9ydGNwLmgKQEAgLTI3LDE3ICsyNyw2IEBACiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCi1jbGFzcyBNb2NrUnRwRGF0YSA6IHB1YmxpYyBSdHBEYXRhIHsKLSBwdWJs
aWM6Ci0gIE1vY2tSdHBEYXRhKCk7Ci0gIH5Nb2NrUnRwRGF0YSgpOwotCi0gIE1PQ0tfTUVUSE9E
MyhPblJlY2VpdmVkUGF5bG9hZERhdGEsCi0gICAgICAgICAgICAgICBpbnQzMl90KGNvbnN0IHVp
bnQ4X3QqIHBheWxvYWRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBheWxv
YWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUnRjUlRQSGVhZGVyKiBy
dHBfaGVhZGVyKSk7Ci19OwotCiBjbGFzcyBNb2NrUnRwUnRjcCA6IHB1YmxpYyBSdHBSdGNwIHsK
ICBwdWJsaWM6CiAgIE1vY2tSdHBSdGNwKCk7CkBAIC01Miw2ICs0MSw3IEBAIGNsYXNzIE1vY2tS
dHBSdGNwIDogcHVibGljIFJ0cFJ0Y3AgewogICBNT0NLX01FVEhPRDIoUmVnaXN0ZXJWaWRlb1Nl
bmRQYXlsb2FkLAogICAgICAgICAgICAgICAgdm9pZChpbnQgcGF5bG9hZF90eXBlLCBjb25zdCBj
aGFyKiBwYXlsb2FkX25hbWUpKTsKICAgTU9DS19NRVRIT0QxKERlUmVnaXN0ZXJTZW5kUGF5bG9h
ZCwgaW50MzJfdChpbnQ4X3QgcGF5bG9hZF90eXBlKSk7CisgIE1PQ0tfTUVUSE9EMShTZXRFeHRt
YXBBbGxvd01peGVkLCB2b2lkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSk7CiAgIE1PQ0tfTUVU
SE9EMihSZWdpc3RlclNlbmRSdHBIZWFkZXJFeHRlbnNpb24sCiAgICAgICAgICAgICAgICBpbnQz
Ml90KFJUUEV4dGVuc2lvblR5cGUgdHlwZSwgdWludDhfdCBpZCkpOwogICBNT0NLX01FVEhPRDIo
UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24sCkBAIC04Myw2ICs3Myw3IEBAIGNsYXNzIE1vY2tS
dHBSdGNwIDogcHVibGljIFJ0cFJ0Y3AgewogICBNT0NLX0NPTlNUX01FVEhPRDAoU2VuZGluZywg
Ym9vbCgpKTsKICAgTU9DS19NRVRIT0QxKFNldFNlbmRpbmdNZWRpYVN0YXR1cywgdm9pZChib29s
IHNlbmRpbmcpKTsKICAgTU9DS19DT05TVF9NRVRIT0QwKFNlbmRpbmdNZWRpYSwgYm9vbCgpKTsK
KyAgTU9DS19NRVRIT0QxKFNldEFzUGFydE9mQWxsb2NhdGlvbiwgdm9pZChib29sKSk7CiAgIE1P
Q0tfQ09OU1RfTUVUSE9ENChCaXRyYXRlU2VudCwKICAgICAgICAgICAgICAgICAgICAgIHZvaWQo
dWludDMyX3QqIHRvdGFsX3JhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
KiB2aWRlb19yYXRlLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXMu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9jb250cmlidXRpbmdfc291cmNlcy5jYwppbmRleCA4NTM3MDZjNGY1ZGMx
NDA5MDllZTIyYzllMjZjMDJkNDdmYWMxYjk0Li42NGRjNDQzZTI5NWY1YzQ2ZDhhNzBhMGQ3MWRm
M2ZmY2Y1YzgzNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9jb250cmlidXRpbmdfc291cmNlcy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9jb250cmlidXRpbmdfc291cmNlcy5jYwpAQCAtMjUsOSArMjUsMTEg
QEAgQ29udHJpYnV0aW5nU291cmNlczo6Q29udHJpYnV0aW5nU291cmNlcygpID0gZGVmYXVsdDsK
IENvbnRyaWJ1dGluZ1NvdXJjZXM6On5Db250cmlidXRpbmdTb3VyY2VzKCkgPSBkZWZhdWx0Owog
CiB2b2lkIENvbnRyaWJ1dGluZ1NvdXJjZXM6OlVwZGF0ZShpbnQ2NF90IG5vd19tcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQzMl90
PiBjc3JjcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZp
ZXc8Y29uc3QgdWludDMyX3Q+IGNzcmNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gYXVkaW9fbGV2ZWwpIHsKKyAgRW50cnkgZW50cnkg
PSB7IG5vd19tcywgYXVkaW9fbGV2ZWwgfTsKICAgZm9yICh1aW50MzJfdCBjc3JjIDogY3NyY3Mp
IHsKLSAgICBsYXN0X3NlZW5fbXNfW2NzcmNdID0gbm93X21zOworICAgIGFjdGl2ZV9jc3Jjc19b
Y3NyY10gPSBlbnRyeTsKICAgfQogICBpZiAoIW5leHRfcHJ1bmluZ19tc18pIHsKICAgICBuZXh0
X3BydW5pbmdfbXNfID0gbm93X21zICsga1BydW5pbmdJbnRlcnZhbE1zOwpAQCAtNDMsOSArNDUs
MTYgQEAgdm9pZCBDb250cmlidXRpbmdTb3VyY2VzOjpVcGRhdGUoaW50NjRfdCBub3dfbXMsCiAv
LyBub24tY29uc3QuCiBzdGQ6OnZlY3RvcjxSdHBTb3VyY2U+IENvbnRyaWJ1dGluZ1NvdXJjZXM6
OkdldFNvdXJjZXMoaW50NjRfdCBub3dfbXMpIGNvbnN0IHsKICAgc3RkOjp2ZWN0b3I8UnRwU291
cmNlPiBzb3VyY2VzOwotICBmb3IgKGF1dG8mIHJlY29yZCA6IGxhc3Rfc2Vlbl9tc18pIHsKLSAg
ICBpZiAocmVjb3JkLnNlY29uZCA+PSBub3dfbXMgLSBrSGlzdG9yeU1zKSB7Ci0gICAgICBzb3Vy
Y2VzLmVtcGxhY2VfYmFjayhyZWNvcmQuc2Vjb25kLCByZWNvcmQuZmlyc3QsIFJ0cFNvdXJjZVR5
cGU6OkNTUkMpOworICBmb3IgKGF1dG8mIHJlY29yZCA6IGFjdGl2ZV9jc3Jjc18pIHsKKyAgICBp
ZiAocmVjb3JkLnNlY29uZC5sYXN0X3NlZW5fbXMgPj0gbm93X21zIC0ga0hpc3RvcnlNcykgewor
ICAgICAgaWYgKHJlY29yZC5zZWNvbmQuYXVkaW9fbGV2ZWwuaGFzX3ZhbHVlKCkpIHsKKyAgICAg
ICAgc291cmNlcy5lbXBsYWNlX2JhY2socmVjb3JkLnNlY29uZC5sYXN0X3NlZW5fbXMsIHJlY29y
ZC5maXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwU291cmNlVHlwZTo6Q1NS
QywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlY29yZC5zZWNvbmQuYXVkaW9fbGV2
ZWwpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc291cmNlcy5lbXBsYWNlX2JhY2socmVjb3Jk
LnNlY29uZC5sYXN0X3NlZW5fbXMsIHJlY29yZC5maXJzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUnRwU291cmNlVHlwZTo6Q1NSQyk7CisgICAgICB9CiAgICAgfQogICB9CiAKQEAg
LTU0LDE1ICs2MywyMCBAQCBzdGQ6OnZlY3RvcjxSdHBTb3VyY2U+IENvbnRyaWJ1dGluZ1NvdXJj
ZXM6OkdldFNvdXJjZXMoaW50NjRfdCBub3dfbXMpIGNvbnN0IHsKIAogLy8gRGVsZXRlIHN0YWxl
IGVudHJpZXMuCiB2b2lkIENvbnRyaWJ1dGluZ1NvdXJjZXM6OkRlbGV0ZU9sZEVudHJpZXMoaW50
NjRfdCBub3dfbXMpIHsKLSAgZm9yIChhdXRvIGl0ID0gbGFzdF9zZWVuX21zXy5iZWdpbigpOyBp
dCAhPSBsYXN0X3NlZW5fbXNfLmVuZCgpOykgewotICAgIGlmIChpdC0+c2Vjb25kID49IG5vd19t
cyAtIGtIaXN0b3J5TXMpIHsKKyAgZm9yIChhdXRvIGl0ID0gYWN0aXZlX2NzcmNzXy5iZWdpbigp
OyBpdCAhPSBhY3RpdmVfY3NyY3NfLmVuZCgpOykgeworICAgIGlmIChpdC0+c2Vjb25kLmxhc3Rf
c2Vlbl9tcyA+PSBub3dfbXMgLSBrSGlzdG9yeU1zKSB7CiAgICAgICAvLyBTdGlsbCByZWxldmFu
dC4KICAgICAgICsraXQ7CiAgICAgfSBlbHNlIHsKLSAgICAgIGl0ID0gbGFzdF9zZWVuX21zXy5l
cmFzZShpdCk7CisgICAgICBpdCA9IGFjdGl2ZV9jc3Jjc18uZXJhc2UoaXQpOwogICAgIH0KICAg
fQogICBuZXh0X3BydW5pbmdfbXNfID0gbm93X21zICsga1BydW5pbmdJbnRlcnZhbE1zOwogfQog
CitDb250cmlidXRpbmdTb3VyY2VzOjpFbnRyeTo6RW50cnkoKSA9IGRlZmF1bHQ7CitDb250cmli
dXRpbmdTb3VyY2VzOjpFbnRyeTo6RW50cnkoaW50NjRfdCB0aW1lc3RhbXBfbXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gYXVkaW9f
bGV2ZWxfYXJnKQorICAgIDogbGFzdF9zZWVuX21zKHRpbWVzdGFtcF9tcyksIGF1ZGlvX2xldmVs
KGF1ZGlvX2xldmVsX2FyZykge30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1dGlu
Z19zb3VyY2VzLmgKaW5kZXggMWE0YTU3MmQ4ZjU0NDMxYmE2YTUyM2U0MGY1ZDMzYWYwMWY4ZmIy
Mi4uNWUzNDUzOWNlNDc3ZTBiN2JlZGFmODBkMDk5YTc0NDczNTExNGU2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9jb250cmlidXRp
bmdfc291cmNlcy5oCkBAIC0xOCw3ICsxOCw4IEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJhcGkvcnRw
cmVjZWl2ZXJpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJhcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2Uu
aCIgIC8vIEZvciBSdHBTb3VyY2UKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIgICAg
ICAgIC8vIEZvciBrTnVtTWlsbGlzZWNzUGVyU2VjCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBA
IC0zMSwxOCArMzIsMjUgQEAgY2xhc3MgQ29udHJpYnV0aW5nU291cmNlcyB7CiAgIENvbnRyaWJ1
dGluZ1NvdXJjZXMoKTsKICAgfkNvbnRyaWJ1dGluZ1NvdXJjZXMoKTsKIAotICAvLyBUT0RPKGJ1
Z3Mud2VicnRjLm9yZy8zMzMzKTogTmVlZHMgdG8gYmUgZXh0ZW5kZWQgd2l0aCBhdWRpby1sZXZl
bCwgdG8KLSAgLy8gc3VwcG9ydCBSRkM2NDY1LgotICB2b2lkIFVwZGF0ZShpbnQ2NF90IG5vd19t
cywgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDMyX3Q+IGNzcmNzKTsKKyAgdm9pZCBVcGRhdGUo
aW50NjRfdCBub3dfbXMsIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQzMl90PiBjc3JjcywKKyAg
ICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gYXVkaW9fbGV2ZWwpOwogCiAgIC8v
IFJldHVybnMgY29udHJpYnV0aW5nIHNvdXJjZXMgc2VlbiB0aGUgbGFzdCAxMCBzLgogICBzdGQ6
OnZlY3RvcjxSdHBTb3VyY2U+IEdldFNvdXJjZXMoaW50NjRfdCBub3dfbXMpIGNvbnN0OwogCiAg
cHJpdmF0ZToKKyAgc3RydWN0IEVudHJ5IHsKKyAgICBFbnRyeSgpOworICAgIEVudHJ5KGludDY0
X3QgdGltZXN0YW1wX21zLCBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBhdWRpb19sZXZlbCk7CisK
KyAgICBpbnQ2NF90IGxhc3Rfc2Vlbl9tczsKKyAgICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBh
dWRpb19sZXZlbDsKKyAgfTsKKwogICB2b2lkIERlbGV0ZU9sZEVudHJpZXMoaW50NjRfdCBub3df
bXMpOwogCiAgIC8vIEluZGV4ZWQgYnkgY3NyYy4KLSAgc3RkOjptYXA8dWludDMyX3QsIGludDY0
X3Q+IGxhc3Rfc2Vlbl9tc187CisgIHN0ZDo6bWFwPHVpbnQzMl90LCBFbnRyeT4gYWN0aXZlX2Nz
cmNzXzsKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbmV4dF9wcnVuaW5nX21zXzsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1dGluZ19zb3VyY2VzX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXNfdW5pdHRlc3QuY2MKaW5kZXggOGIyMmQyNmM5
NDgwNGNmNDQyMmMwZGI2MWQ2NTg3M2MxOGU0YmNkMi4uNWYxZDhkM2QxMTIwNDJjODk0MjQxNTY3
OWJkN2RiYjkyZTZmYzFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJj
ZXNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXNfdW5pdHRl
c3QuY2MKQEAgLTMwLDcgKzMwLDcgQEAgVEVTVChDb250cmlidXRpbmdTb3VyY2VzVGVzdCwgUmVj
b3JkU291cmNlcykgewogICBDb250cmlidXRpbmdTb3VyY2VzIGNzcmNzOwogICBjb25zdGV4cHIg
dWludDMyX3Qga0NzcmNzW10gPSB7a0NzcmMxLCBrQ3NyYzJ9OwogICBjb25zdGV4cHIgaW50NjRf
dCBrVGltZTEgPSAxMDsKLSAgY3NyY3MuVXBkYXRlKGtUaW1lMSwga0NzcmNzKTsKKyAgY3NyY3Mu
VXBkYXRlKGtUaW1lMSwga0NzcmNzLCBhYnNsOjpudWxsb3B0KTsKICAgRVhQRUNUX1RIQVQoCiAg
ICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtUaW1lMSksCiAgICAgICBVbm9yZGVyZWRFbGVtZW50c0Fy
ZShSdHBTb3VyY2Uoa1RpbWUxLCBrQ3NyYzEsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpLApAQCAtNDUs
MTIgKzQ1LDEyIEBAIFRFU1QoQ29udHJpYnV0aW5nU291cmNlc1Rlc3QsIFVwZGF0ZVNvdXJjZXMp
IHsKICAgY29uc3RleHByIHVpbnQzMl90IGtDc3JjczJbXSA9IHtrQ3NyYzIsIGtDc3JjM307CiAg
IGNvbnN0ZXhwciBpbnQ2NF90IGtUaW1lMSA9IDEwOwogICBjb25zdGV4cHIgaW50NjRfdCBrVGlt
ZTIgPSBrVGltZTEgKyA1ICogcnRjOjprTnVtTWlsbGlzZWNzUGVyU2VjOwotICBjc3Jjcy5VcGRh
dGUoa1RpbWUxLCBrQ3NyY3MxKTsKKyAgY3NyY3MuVXBkYXRlKGtUaW1lMSwga0NzcmNzMSwgYWJz
bDo6bnVsbG9wdCk7CiAgIEVYUEVDVF9USEFUKAogICAgICAgY3NyY3MuR2V0U291cmNlcyhrVGlt
ZTEpLAogICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoUnRwU291cmNlKGtUaW1lMSwga0NzcmMx
LCBSdHBTb3VyY2VUeXBlOjpDU1JDKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFNv
dXJjZShrVGltZTEsIGtDc3JjMiwgUnRwU291cmNlVHlwZTo6Q1NSQykpKTsKLSAgY3NyY3MuVXBk
YXRlKGtUaW1lMiwga0NzcmNzMik7CisgIGNzcmNzLlVwZGF0ZShrVGltZTIsIGtDc3JjczIsIGFi
c2w6Om51bGxvcHQpOwogICBFWFBFQ1RfVEhBVCgKICAgICAgIGNzcmNzLkdldFNvdXJjZXMoa1Rp
bWUyKSwKICAgICAgIFVub3JkZXJlZEVsZW1lbnRzQXJlKFJ0cFNvdXJjZShrVGltZTEsIGtDc3Jj
MSwgUnRwU291cmNlVHlwZTo6Q1NSQyksCkBAIC02NSwxMiArNjUsMTIgQEAgVEVTVChDb250cmli
dXRpbmdTb3VyY2VzVGVzdCwgUmV0dXJuUmVjZW50T25seSkgewogICBjb25zdGV4cHIgaW50NjRf
dCBrVGltZTEgPSAxMDsKICAgY29uc3RleHByIGludDY0X3Qga1RpbWUyID0ga1RpbWUxICsgNSAq
IHJ0Yzo6a051bU1pbGxpc2Vjc1BlclNlYzsKICAgY29uc3RleHByIGludDY0X3Qga1RpbWUzID0g
a1RpbWUxICsgMTIgKiBydGM6OmtOdW1NaWxsaXNlY3NQZXJTZWM7Ci0gIGNzcmNzLlVwZGF0ZShr
VGltZTEsIGtDc3JjczEpOworICBjc3Jjcy5VcGRhdGUoa1RpbWUxLCBrQ3NyY3MxLCBhYnNsOjpu
dWxsb3B0KTsKICAgRVhQRUNUX1RIQVQoCiAgICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtUaW1lMSks
CiAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShSdHBTb3VyY2Uoa1RpbWUxLCBrQ3NyYzEsIFJ0
cFNvdXJjZVR5cGU6OkNTUkMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwU291cmNl
KGtUaW1lMSwga0NzcmMyLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSkpOwotICBjc3Jjcy5VcGRhdGUo
a1RpbWUyLCBrQ3NyY3MyKTsKKyAgY3NyY3MuVXBkYXRlKGtUaW1lMiwga0NzcmNzMiwgYWJzbDo6
bnVsbG9wdCk7CiAgIEVYUEVDVF9USEFUKAogICAgICAgY3NyY3MuR2V0U291cmNlcyhrVGltZTMp
LAogICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoUnRwU291cmNlKGtUaW1lMiwga0NzcmMyLCBS
dHBTb3VyY2VUeXBlOjpDU1JDKSwKQEAgLTg0LDE4ICs4NCwxOCBAQCBURVNUKENvbnRyaWJ1dGlu
Z1NvdXJjZXNUZXN0LCBQdXJnZU9sZFNvdXJjZXMpIHsKICAgY29uc3RleHByIGludDY0X3Qga1Rp
bWUxID0gMTA7CiAgIGNvbnN0ZXhwciBpbnQ2NF90IGtUaW1lMiA9IGtUaW1lMSArIDEwICogcnRj
OjprTnVtTWlsbGlzZWNzUGVyU2VjOwogICBjb25zdGV4cHIgaW50NjRfdCBrVGltZTMgPSBrVGlt
ZTEgKyAyMCAqIHJ0Yzo6a051bU1pbGxpc2Vjc1BlclNlYzsKLSAgY3NyY3MuVXBkYXRlKGtUaW1l
MSwga0NzcmNzMSk7CisgIGNzcmNzLlVwZGF0ZShrVGltZTEsIGtDc3JjczEsIGFic2w6Om51bGxv
cHQpOwogICBFWFBFQ1RfVEhBVCgKICAgICAgIGNzcmNzLkdldFNvdXJjZXMoa1RpbWUyKSwKICAg
ICAgIFVub3JkZXJlZEVsZW1lbnRzQXJlKFJ0cFNvdXJjZShrVGltZTEsIGtDc3JjMSwgUnRwU291
cmNlVHlwZTo6Q1NSQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBTb3VyY2Uoa1Rp
bWUxLCBrQ3NyYzIsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpKSk7Ci0gIGNzcmNzLlVwZGF0ZShrVGlt
ZTIsIGtDc3JjczIpOworICBjc3Jjcy5VcGRhdGUoa1RpbWUyLCBrQ3NyY3MyLCBhYnNsOjpudWxs
b3B0KTsKICAgRVhQRUNUX1RIQVQoCiAgICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtUaW1lMiksCiAg
ICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShSdHBTb3VyY2Uoa1RpbWUxLCBrQ3NyYzEsIFJ0cFNv
dXJjZVR5cGU6OkNTUkMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwU291cmNlKGtU
aW1lMiwga0NzcmMyLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJ0cFNvdXJjZShrVGltZTIsIGtDc3JjMywgUnRwU291cmNlVHlwZTo6Q1NSQykpKTsK
LSAgY3NyY3MuVXBkYXRlKGtUaW1lMywga0NzcmNzMik7CisgIGNzcmNzLlVwZGF0ZShrVGltZTMs
IGtDc3JjczIsIGFic2w6Om51bGxvcHQpOwogICBFWFBFQ1RfVEhBVCgKICAgICAgIGNzcmNzLkdl
dFNvdXJjZXMoa1RpbWUzKSwKICAgICAgIFVub3JkZXJlZEVsZW1lbnRzQXJlKFJ0cFNvdXJjZShr
VGltZTMsIGtDc3JjMiwgUnRwU291cmNlVHlwZTo6Q1NSQyksCkBAIC0xMDgsNCArMTA4LDIyIEBA
IFRFU1QoQ29udHJpYnV0aW5nU291cmNlc1Rlc3QsIFB1cmdlT2xkU291cmNlcykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUnRwU291cmNlKGtUaW1lMywga0NzcmMzLCBSdHBTb3VyY2VU
eXBlOjpDU1JDKSkpOwogfQogCitURVNUKENvbnRyaWJ1dGluZ1NvdXJjZXNUZXN0LCBBdWRpb0xl
dmVsKSB7CisgIENvbnRyaWJ1dGluZ1NvdXJjZXMgY3NyY3M7CisgIGNvbnN0ZXhwciB1aW50MzJf
dCBrQ3NyY3NbXSA9IHtrQ3NyYzEsIGtDc3JjMn07CisgIGNvbnN0ZXhwciBpbnQ2NF90IGtUaW1l
MSA9IDEwOworICBjc3Jjcy5VcGRhdGUoa1RpbWUxLCBrQ3NyY3MsIDQ3KTsKKyAgRVhQRUNUX1RI
QVQoCisgICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtUaW1lMSksCisgICAgICBVbm9yZGVyZWRFbGVt
ZW50c0FyZShSdHBTb3VyY2Uoa1RpbWUxLCBrQ3NyYzEsIFJ0cFNvdXJjZVR5cGU6OkNTUkMsIDQ3
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFNvdXJjZShrVGltZTEsIGtDc3JjMiwg
UnRwU291cmNlVHlwZTo6Q1NSQywgNDcpKSk7CisKKyAgY29uc3RleHByIHVpbnQzMl90IGtDc3Jj
c1N1YnNldFtdID0ge2tDc3JjMX07CisgIGNzcmNzLlVwZGF0ZShrVGltZTEgKyAxLCBrQ3NyY3NT
dWJzZXQsIGFic2w6Om51bGxvcHQpOworICBFWFBFQ1RfVEhBVCgKKyAgICAgIGNzcmNzLkdldFNv
dXJjZXMoa1RpbWUxICsgMSksCisgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShSdHBTb3VyY2Uo
a1RpbWUxICsgMSwga0NzcmMxLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJ0cFNvdXJjZShrVGltZTEsIGtDc3JjMiwgUnRwU291cmNlVHlwZTo6Q1NS
QywgNDcpKSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL2R0bWZfcXVldWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9kdG1mX3F1ZXVlLmNjCmluZGV4IDg2ZGRiMTA1
ZjkyNGU5OThmMTlkZWUyOTZiMGUxOWMwYzVhMTg0ZTEuLjEwZTY3NDc4OWE0YmEwZmNmNjc2MWI3
ZmMzM2JiNWE5ZDk1YThmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZfcXVldWUuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvZHRtZl9xdWV1ZS5jYwpAQCAtMTAsNiArMTAsMTAgQEAKIAogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZfcXVldWUuaCIKIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKIG5hbWVzcGFjZSB7CiBjb25z
dGV4cHIgc2l6ZV90IGtEdG1mT3V0YmFuZE1heCA9IDIwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvZHRtZl9xdWV1ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZHRtZl9xdWV1ZS5oCmluZGV4IGRiNzBjOTc1MDgw
MDI4NmZhN2UzODFmMjI5ZDJlNTE5M2U0MDY5NjEuLmU1OTU1YTEyOTdjNDQzODNkYTE5YzU1ZDQx
Mzg4NWFkM2ZkMjFmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZfcXVldWUuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9kdG1mX3F1ZXVlLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19S
VFBfUlRDUF9TT1VSQ0VfRFRNRl9RVUVVRV9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NP
VVJDRV9EVE1GX1FVRVVFX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxsaXN0
PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9mbGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZl
Y19oZWFkZXJfcmVhZGVyX3dyaXRlci5jYwppbmRleCBkNzY2NmUxMTkyYTMzOWNhZmIxOTI1MTY3
MzUzMDlmYWM2M2I4YWRkLi5iODEzMzQwZWE2OGQ4NTU1ZTQ1Mzk2ODdhZWM4NWY1ZmJmNTk5NTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mbGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL2ZsZXhmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuY2MKQEAgLTEyLDEyICsx
MiwxMSBAQAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNsdWRlIDx1dGlsaXR5PgotCiAj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRlcm5hbC5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dp
bmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19oZWFkZXJfcmVhZGVyX3dy
aXRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5oCmluZGV4IDFk
NmRkZGE0YjQwOTg1ZjRiNjEyMTY2YTQ1MTEyOWRiMzc5NmM5MzAuLmQzMDVjNGMyODhkZTE0ZmRi
ODQwYjdhY2NhMmVhZDgzY2YxYzIyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfaGVh
ZGVyX3JlYWRlcl93cml0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mbGV4ZmVjX2hlYWRlcl9yZWFkZXJf
d3JpdGVyLmgKQEAgLTExLDYgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VS
Q0VfRkxFWEZFQ19IRUFERVJfUkVBREVSX1dSSVRFUl9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9S
VENQX1NPVVJDRV9GTEVYRkVDX0hFQURFUl9SRUFERVJfV1JJVEVSX0hfCiAKKyNpbmNsdWRlIDxz
dGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfcmVjZWl2ZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9m
bGV4ZmVjX3JlY2VpdmVyLmNjCmluZGV4IGMzZWQ0ZDUzYjJhNDNmZjllNmRlYzkwOWNmZGU0YjE2
NTk1MWQzYTkuLjFhNjJiY2VkNjhhNGQyZjIyZmIxYTZlMjMwZjcyOGM1MTJiNGYwMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfcmVjZWl2ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZl
Y19yZWNlaXZlci5jYwpAQCAtMTAsNiArMTAsOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL2ZsZXhmZWNfcmVjZWl2ZXIuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgor
CisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2Nv
cGVkX3JlZl9wdHIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfc2VuZGVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvZmxleGZlY19zZW5kZXIuY2MKaW5kZXggMjg2ZjQ3YzVmZTgwOGQyNjc0OWY1YWJm
MGZhZmFlNTQyZWExZTFiZi4uMTIwNGIyZDk3OGM0NGNmZjFkYmI3MDlmNTFiYzJhZDg4MDA2ZGVi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19zZW5kZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
ZmxleGZlY19zZW5kZXIuY2MKQEAgLTEwLDExICsxMCwxNSBAQAogCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9pbmNsdWRlL2ZsZXhmZWNfc2VuZGVyLmgiCiAKKyNpbmNsdWRlIDxzdHJpbmcu
aD4KKyNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2Nv
cnJlY3Rpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uY2MKaW5kZXgg
Yjc0MzExMGIyZDYwMjRlZjAxNTBhYTc5MzQ4N2ZjZDVlYTFlZGNiYi4uYTUyZmVjYWQxOGU3MGYz
YzM3MmM4Y2U5ZDA4OGQxNjhmNjA0OTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9l
cnJvcl9jb3JyZWN0aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlv
bi5jYwpAQCAtMTEsMTEgKzExLDEwIEBACiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KLQog
I2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDx1dGls
aXR5PgogCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXNfcHVi
bGljLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmlu
ZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19oZWFkZXJfcmVhZGVyX3dyaXRl
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaAppbmRleCA4MTlmNmJjZWM1NmExNmVh
NzA3OGI0NWZjYmFkZDMwM2YwMWZhMzY0Li5hZGI3NTcyYWU2NzBhOTY0ZWVmNWMwZmIxMTA5YWZj
ZGJkMzEwZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaApAQCAtMTEsMTYgKzEx
LDE1IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX0ZPUldBUkRfRVJST1JfQ09S
UkVDVElPTl9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9GT1JXQVJEX0VSUk9S
X0NPUlJFQ1RJT05fSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGludC5o
PgotCiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9y
PgogCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9mZWNfdHlwZXMuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRl
cm5hbC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9yZWZjb3VudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRy
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9l
cnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3Jy
ZWN0aW9uX2ludGVybmFsLmNjCmluZGV4IDdlNWZkOTFlMDM1NjQ0ZTAxYjZkMTkzZTI0MTE5YmEz
OGE2ODAzODcuLjliMDIwMjZhNzdjNTA1ZjM4Zjg2NzdjNTVlNTg2YmJjZWY4YzhiOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRlcm5hbC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuY2MKQEAgLTEwLDYg
KzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJy
b3JfY29ycmVjdGlvbl9pbnRlcm5hbC5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmVjX3By
aXZhdGVfdGFibGVzX2J1cnN0eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJv
cl9jb3JyZWN0aW9uX2ludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rp
b25faW50ZXJuYWwuaAppbmRleCAyZThhMjAyMTEzYWY5NDg2N2IxYjFhNTg2OGQ2MGJlNWYwYWVj
MzBjLi5lZDkzZjUyMGU1MjZmYzc4OGJjNjJlZWUzY2Q3ZTJlMDRjMTQ0YmJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuaApAQCAtMTEsOSArMTEsMTEg
QEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfRk9SV0FSRF9FUlJPUl9DT1JSRUNU
SU9OX0lOVEVSTkFMX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX0ZPUldBUkRf
RVJST1JfQ09SUkVDVElPTl9JTlRFUk5BTF9IXwogCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRl
L21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxz
dGRpbnQuaD4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxl
cy9pbmNsdWRlL21vZHVsZV9mZWNfdHlwZXMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3BhY2tldF9sb3NzX3N0YXRzLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGFja2V0
X2xvc3Nfc3RhdHMuY2MKaW5kZXggMDc2MzQ4ZDJkYTNlMDg5M2UxYjA1NDkwY2Y2MGRhODI3OWQ3
ODRkNi4uMzZmMGE2M2Q1OTY2NTdiZTY0MzM5MWZkZDRiZGUwZGM4YzBlZmRkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcGFja2V0X2xvc3Nfc3RhdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGFja2V0X2xv
c3Nfc3RhdHMuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3BhY2tldF9sb3NzX3N0YXRzLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgorI2lu
Y2x1ZGUgPGl0ZXJhdG9yPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGxheW91dF9kZWxheV9vcmFjbGUuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9wbGF5b3V0X2RlbGF5X29yYWNsZS5jYwppbmRleCBkM2E3NWRkMTNhYTM0YTk5
ZjFkZmM5MDBjMDdmNDQyMzIzMzgwNmY1Li5kYzMzZmFkNTM2ZGVkM2QwNjdmNzUyNTAwMjA5ZDEy
OWIzZDI4NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9wbGF5b3V0X2RlbGF5X29yYWNsZS5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9wbGF5b3V0X2RlbGF5X29yYWNsZS5jYwpAQCAtMTMsNyArMTMsNiBAQAog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2lu
Zy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGxheW91
dF9kZWxheV9vcmFjbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3BsYXlvdXRfZGVsYXlfb3JhY2xlLmgKaW5kZXgg
NmU2ZTI1M2M4Yzc2ZTU2ZDkyZDhhYjVhZTFjMjYzZjI1ZmY4MzY4MS4uMGUzYmQzOWE3ZWY1ZWUx
YWU4NWRmZjI1NmFiYmI3OTQzMjY4ZWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGxheW91dF9k
ZWxheV9vcmFjbGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9wbGF5b3V0X2RlbGF5X29yYWNsZS5oCkBAIC0x
Myw4ICsxMywxMCBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKLSNpbmNsdWRlICJtb2R1bGVz
L2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21v
ZHVsZV9jb21tb25fdHlwZXNfcHVibGljLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rv
cm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVjZWl2ZV9zdGF0aXN0aWNz
X2ltcGwuY2MKaW5kZXggYWJlMDI4ZDY3MDIzN2E4OTIxYTYzZDAzZTIzZTAwYmY3ZGE3MDlmOS4u
YmM3NDJkMWVhNjNmZjdiZDQ3OTRjY2VhYzNkZGJkODMzZDEyYzQ5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcmVjZWl2ZV9zdGF0aXN0aWNzX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVjZWl2ZV9z
dGF0aXN0aWNzX2ltcGwuY2MKQEAgLTExLDEwICsxMSwxMSBAQAogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmgiCiAKICNpbmNsdWRlIDxt
YXRoLmg+Ci0KICNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90ZXN0L2J3ZV90ZXN0X2xvZ2dpbmcuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfY29uZmlnLmgiCkBA
IC0zMywxMyArMzQsMTQgQEAgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6U3RyZWFtU3RhdGlzdGlj
aWFuSW1wbCgKICAgICB1aW50MzJfdCBzc3JjLAogICAgIENsb2NrKiBjbG9jaywKICAgICBib29s
IGVuYWJsZV9yZXRyYW5zbWl0X2RldGVjdGlvbiwKKyAgICBpbnQgbWF4X3Jlb3JkZXJpbmdfdGhy
ZXNob2xkLAogICAgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIHJ0Y3BfY2FsbGJhY2ssCiAgICAg
U3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIHJ0cF9jYWxsYmFjaykKICAgICA6IHNzcmNfKHNz
cmMpLAogICAgICAgY2xvY2tfKGNsb2NrKSwKICAgICAgIGluY29taW5nX2JpdHJhdGVfKGtTdGF0
aXN0aWNzUHJvY2Vzc0ludGVydmFsTXMsCiAgICAgICAgICAgICAgICAgICAgICAgICBSYXRlU3Rh
dGlzdGljczo6a0Jwc1NjYWxlKSwKLSAgICAgIG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZF8oa0Rl
ZmF1bHRNYXhSZW9yZGVyaW5nVGhyZXNob2xkKSwKKyAgICAgIG1heF9yZW9yZGVyaW5nX3RocmVz
aG9sZF8obWF4X3Jlb3JkZXJpbmdfdGhyZXNob2xkKSwKICAgICAgIGVuYWJsZV9yZXRyYW5zbWl0
X2RldGVjdGlvbl8oZW5hYmxlX3JldHJhbnNtaXRfZGV0ZWN0aW9uKSwKICAgICAgIGppdHRlcl9x
NF8oMCksCiAgICAgICBjdW11bGF0aXZlX2xvc3NfKDApLApAQCAtNDgsNyArNTAsNiBAQCBTdHJl
YW1TdGF0aXN0aWNpYW5JbXBsOjpTdHJlYW1TdGF0aXN0aWNpYW5JbXBsKAogICAgICAgcmVjZWl2
ZWRfc2VxX2ZpcnN0XygwKSwKICAgICAgIHJlY2VpdmVkX3NlcV9tYXhfKDApLAogICAgICAgcmVj
ZWl2ZWRfc2VxX3dyYXBzXygwKSwKLSAgICAgIHJlY2VpdmVkX3BhY2tldF9vdmVyaGVhZF8oMTIp
LAogICAgICAgbGFzdF9yZXBvcnRfaW5vcmRlcl9wYWNrZXRzXygwKSwKICAgICAgIGxhc3RfcmVw
b3J0X29sZF9wYWNrZXRzXygwKSwKICAgICAgIGxhc3RfcmVwb3J0X3NlcV9tYXhfKDApLApAQCAt
NTcsNzkgKzU4LDcxIEBAIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OlN0cmVhbVN0YXRpc3RpY2lh
bkltcGwoCiAKIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6On5TdHJlYW1TdGF0aXN0aWNpYW5JbXBs
KCkgPSBkZWZhdWx0OwogCi12b2lkIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OkluY29taW5nUGFj
a2V0KGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgcGFja2V0X2xlbmd0aCkgewotICBTdHJlYW1EYXRhQ291
bnRlcnMgY291bnRlcnM7Ci0gIHsKLSAgICBydGM6OkNyaXRTY29wZSBjcygmc3RyZWFtX2xvY2tf
KTsKLQotICAgIGJvb2wgcmV0cmFuc21pdHRlZCA9Ci0gICAgICAgIGVuYWJsZV9yZXRyYW5zbWl0
X2RldGVjdGlvbl8gJiYgSXNSZXRyYW5zbWl0T2ZPbGRQYWNrZXQoaGVhZGVyKTsKLSAgICBjb3Vu
dGVycyA9IFVwZGF0ZUNvdW50ZXJzKGhlYWRlciwgcGFja2V0X2xlbmd0aCwgcmV0cmFuc21pdHRl
ZCk7Ci0gIH0KLSAgcnRwX2NhbGxiYWNrXy0+RGF0YUNvdW50ZXJzVXBkYXRlZChjb3VudGVycywg
c3NyY18pOwordm9pZCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpPblJ0cFBhY2tldChjb25zdCBS
dHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CisgIFN0cmVhbURhdGFDb3VudGVycyBjb3VudGVy
cyA9IFVwZGF0ZUNvdW50ZXJzKHBhY2tldCk7CisgIGlmIChydHBfY2FsbGJhY2tfKQorICAgIHJ0
cF9jYWxsYmFja18tPkRhdGFDb3VudGVyc1VwZGF0ZWQoY291bnRlcnMsIHNzcmNfKTsKIH0KIAog
U3RyZWFtRGF0YUNvdW50ZXJzIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OlVwZGF0ZUNvdW50ZXJz
KAotICAgIGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyLAotICAgIHNpemVfdCBwYWNrZXRfbGVuZ3Ro
LAotICAgIGJvb2wgcmV0cmFuc21pdHRlZCkgewotICBib29sIGluX29yZGVyID0gSW5PcmRlclBh
Y2tldEludGVybmFsKGhlYWRlci5zZXF1ZW5jZU51bWJlcik7Ci0gIFJUQ19EQ0hFQ0tfRVEoc3Ny
Y18sIGhlYWRlci5zc3JjKTsKLSAgaW5jb21pbmdfYml0cmF0ZV8uVXBkYXRlKHBhY2tldF9sZW5n
dGgsIGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwotICByZWNlaXZlX2NvdW50ZXJzXy50
cmFuc21pdHRlZC5BZGRQYWNrZXQocGFja2V0X2xlbmd0aCwgaGVhZGVyKTsKLSAgaWYgKCFpbl9v
cmRlciAmJiByZXRyYW5zbWl0dGVkKSB7Ci0gICAgcmVjZWl2ZV9jb3VudGVyc18ucmV0cmFuc21p
dHRlZC5BZGRQYWNrZXQocGFja2V0X2xlbmd0aCwgaGVhZGVyKTsKKyAgICBjb25zdCBSdHBQYWNr
ZXRSZWNlaXZlZCYgcGFja2V0KSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZzdHJlYW1fbG9ja18p
OworICBSVENfRENIRUNLX0VRKHNzcmNfLCBwYWNrZXQuU3NyYygpKTsKKyAgdWludDE2X3Qgc2Vx
dWVuY2VfbnVtYmVyID0gcGFja2V0LlNlcXVlbmNlTnVtYmVyKCk7CisgIGJvb2wgaW5fb3JkZXIg
PQorICAgICAgLy8gRmlyc3QgcGFja2V0IGlzIGFsd2F5cyBpbiBvcmRlci4KKyAgICAgIGxhc3Rf
cmVjZWl2ZV90aW1lX21zXyA9PSAwIHx8CisgICAgICBJc05ld2VyU2VxdWVuY2VOdW1iZXIoc2Vx
dWVuY2VfbnVtYmVyLCByZWNlaXZlZF9zZXFfbWF4XykgfHwKKyAgICAgIC8vIElmIHdlIGhhdmUg
YSByZXN0YXJ0IG9mIHRoZSByZW1vdGUgc2lkZSB0aGlzIHBhY2tldCBpcyBzdGlsbCBpbiBvcmRl
ci4KKyAgICAgICFJc05ld2VyU2VxdWVuY2VOdW1iZXIoc2VxdWVuY2VfbnVtYmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZF9zZXFfbWF4XyAtIG1heF9yZW9yZGVyaW5n
X3RocmVzaG9sZF8pOworICBpbnQ2NF90IG5vd19tcyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNv
bmRzKCk7CisKKyAgaW5jb21pbmdfYml0cmF0ZV8uVXBkYXRlKHBhY2tldC5zaXplKCksIG5vd19t
cyk7CisgIHJlY2VpdmVfY291bnRlcnNfLnRyYW5zbWl0dGVkLkFkZFBhY2tldChwYWNrZXQpOwor
ICBpZiAoIWluX29yZGVyICYmIGVuYWJsZV9yZXRyYW5zbWl0X2RldGVjdGlvbl8gJiYKKyAgICAg
IElzUmV0cmFuc21pdE9mT2xkUGFja2V0KHBhY2tldCwgbm93X21zKSkgeworICAgIHJlY2VpdmVf
Y291bnRlcnNfLnJldHJhbnNtaXR0ZWQuQWRkUGFja2V0KHBhY2tldCk7CiAgIH0KIAogICBpZiAo
cmVjZWl2ZV9jb3VudGVyc18udHJhbnNtaXR0ZWQucGFja2V0cyA9PSAxKSB7Ci0gICAgcmVjZWl2
ZWRfc2VxX2ZpcnN0XyA9IGhlYWRlci5zZXF1ZW5jZU51bWJlcjsKLSAgICByZWNlaXZlX2NvdW50
ZXJzXy5maXJzdF9wYWNrZXRfdGltZV9tcyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCk7
CisgICAgcmVjZWl2ZWRfc2VxX2ZpcnN0XyA9IHBhY2tldC5TZXF1ZW5jZU51bWJlcigpOworICAg
IHJlY2VpdmVfY291bnRlcnNfLmZpcnN0X3BhY2tldF90aW1lX21zID0gbm93X21zOwogICB9CiAK
ICAgLy8gQ291bnQgb25seSB0aGUgbmV3IHBhY2tldHMgcmVjZWl2ZWQuIFRoYXQgaXMsIGlmIHBh
Y2tldHMgMSwgMiwgMywgNSwgNCwgNgogICAvLyBhcmUgcmVjZWl2ZWQsIDQgd2lsbCBiZSBpZ25v
cmVkLgogICBpZiAoaW5fb3JkZXIpIHsKLSAgICAvLyBDdXJyZW50IHRpbWUgaW4gc2FtcGxlcy4K
LSAgICBOdHBUaW1lIHJlY2VpdmVfdGltZSA9IGNsb2NrXy0+Q3VycmVudE50cFRpbWUoKTsKLQog
ICAgIC8vIFdyb25nIGlmIHdlIHVzZSBSZXRyYW5zbWl0T2ZPbGRQYWNrZXQuCiAgICAgaWYgKHJl
Y2VpdmVfY291bnRlcnNfLnRyYW5zbWl0dGVkLnBhY2tldHMgPiAxICYmCi0gICAgICAgIHJlY2Vp
dmVkX3NlcV9tYXhfID4gaGVhZGVyLnNlcXVlbmNlTnVtYmVyKSB7CisgICAgICAgIHJlY2VpdmVk
X3NlcV9tYXhfID4gcGFja2V0LlNlcXVlbmNlTnVtYmVyKCkpIHsKICAgICAgIC8vIFdyYXAgYXJv
dW5kIGRldGVjdGVkLgogICAgICAgcmVjZWl2ZWRfc2VxX3dyYXBzXysrOwogICAgIH0KICAgICAv
LyBOZXcgbWF4LgotICAgIHJlY2VpdmVkX3NlcV9tYXhfID0gaGVhZGVyLnNlcXVlbmNlTnVtYmVy
OworICAgIHJlY2VpdmVkX3NlcV9tYXhfID0gcGFja2V0LlNlcXVlbmNlTnVtYmVyKCk7CiAKICAg
ICAvLyBJZiBuZXcgdGltZSBzdGFtcCBhbmQgbW9yZSB0aGFuIG9uZSBpbi1vcmRlciBwYWNrZXQg
cmVjZWl2ZWQsIGNhbGN1bGF0ZQogICAgIC8vIG5ldyBqaXR0ZXIgc3RhdGlzdGljcy4KLSAgICBp
ZiAoaGVhZGVyLnRpbWVzdGFtcCAhPSBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF8gJiYKKyAgICBp
ZiAocGFja2V0LlRpbWVzdGFtcCgpICE9IGxhc3RfcmVjZWl2ZWRfdGltZXN0YW1wXyAmJgogICAg
ICAgICAocmVjZWl2ZV9jb3VudGVyc18udHJhbnNtaXR0ZWQucGFja2V0cyAtCiAgICAgICAgICBy
ZWNlaXZlX2NvdW50ZXJzXy5yZXRyYW5zbWl0dGVkLnBhY2tldHMpID4gMSkgewotICAgICAgVXBk
YXRlSml0dGVyKGhlYWRlciwgcmVjZWl2ZV90aW1lKTsKKyAgICAgIFVwZGF0ZUppdHRlcihwYWNr
ZXQsIG5vd19tcyk7CiAgICAgfQotICAgIGxhc3RfcmVjZWl2ZWRfdGltZXN0YW1wXyA9IGhlYWRl
ci50aW1lc3RhbXA7Ci0gICAgbGFzdF9yZWNlaXZlX3RpbWVfbnRwXyA9IHJlY2VpdmVfdGltZTsK
LSAgICBsYXN0X3JlY2VpdmVfdGltZV9tc18gPSBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygp
OworICAgIGxhc3RfcmVjZWl2ZWRfdGltZXN0YW1wXyA9IHBhY2tldC5UaW1lc3RhbXAoKTsKKyAg
ICBsYXN0X3JlY2VpdmVfdGltZV9tc18gPSBub3dfbXM7CiAgIH0KLQotICBzaXplX3QgcGFja2V0
X29oID0gaGVhZGVyLmhlYWRlckxlbmd0aCArIGhlYWRlci5wYWRkaW5nTGVuZ3RoOwotCi0gIC8v
IE91ciBtZWFzdXJlZCBvdmVyaGVhZC4gRmlsdGVyIGZyb20gUkZDIDUxMDQgNC4yLjEuMjoKLSAg
Ly8gYXZnX09IIChuZXcpID0gMTUvMTYqYXZnX09IIChvbGQpICsgMS8xNipwY2t0X09ILAotICBy
ZWNlaXZlZF9wYWNrZXRfb3ZlcmhlYWRfID0gKDE1ICogcmVjZWl2ZWRfcGFja2V0X292ZXJoZWFk
XyArIHBhY2tldF9vaCkgPj4gNDsKICAgcmV0dXJuIHJlY2VpdmVfY291bnRlcnNfOwogfQogCi12
b2lkIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OlVwZGF0ZUppdHRlcihjb25zdCBSVFBIZWFkZXIm
IGhlYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE50cFRp
bWUgcmVjZWl2ZV90aW1lKSB7Ci0gIHVpbnQzMl90IHJlY2VpdmVfdGltZV9ydHAgPQotICAgICAg
TnRwVG9SdHAocmVjZWl2ZV90aW1lLCBoZWFkZXIucGF5bG9hZF90eXBlX2ZyZXF1ZW5jeSk7Ci0g
IHVpbnQzMl90IGxhc3RfcmVjZWl2ZV90aW1lX3J0cCA9Ci0gICAgICBOdHBUb1J0cChsYXN0X3Jl
Y2VpdmVfdGltZV9udHBfLCBoZWFkZXIucGF5bG9hZF90eXBlX2ZyZXF1ZW5jeSk7Ci0gIGludDMy
X3QgdGltZV9kaWZmX3NhbXBsZXMgPSAocmVjZWl2ZV90aW1lX3J0cCAtIGxhc3RfcmVjZWl2ZV90
aW1lX3J0cCkgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhlYWRlci50aW1lc3Rh
bXAgLSBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF8pOwordm9pZCBTdHJlYW1TdGF0aXN0aWNpYW5J
bXBsOjpVcGRhdGVKaXR0ZXIoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcmVjZWl2ZV90aW1l
X21zKSB7CisgIGludDY0X3QgcmVjZWl2ZV9kaWZmX21zID0gcmVjZWl2ZV90aW1lX21zIC0gbGFz
dF9yZWNlaXZlX3RpbWVfbXNfOworICBSVENfRENIRUNLX0dFKHJlY2VpdmVfZGlmZl9tcywgMCk7
CisgIHVpbnQzMl90IHJlY2VpdmVfZGlmZl9ydHAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oCisg
ICAgICAocmVjZWl2ZV9kaWZmX21zICogcGFja2V0LnBheWxvYWRfdHlwZV9mcmVxdWVuY3koKSkg
LyAxMDAwKTsKKyAgaW50MzJfdCB0aW1lX2RpZmZfc2FtcGxlcyA9CisgICAgICByZWNlaXZlX2Rp
ZmZfcnRwIC0gKHBhY2tldC5UaW1lc3RhbXAoKSAtIGxhc3RfcmVjZWl2ZWRfdGltZXN0YW1wXyk7
CiAKICAgdGltZV9kaWZmX3NhbXBsZXMgPSBzdGQ6OmFicyh0aW1lX2RpZmZfc2FtcGxlcyk7CiAK
QEAgLTE0MywxNSArMTM2LDE2IEBAIHZvaWQgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6VXBkYXRl
Sml0dGVyKGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyLAogICB9CiB9CiAKLXZvaWQgU3RyZWFtU3Rh
dGlzdGljaWFuSW1wbDo6RmVjUGFja2V0UmVjZWl2ZWQoY29uc3QgUlRQSGVhZGVyJiBoZWFkZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBw
YWNrZXRfbGVuZ3RoKSB7Cit2b2lkIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OkZlY1BhY2tldFJl
Y2VpdmVkKAorICAgIGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIHsKICAgU3RyZWFt
RGF0YUNvdW50ZXJzIGNvdW50ZXJzOwogICB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJnN0cmVh
bV9sb2NrXyk7Ci0gICAgcmVjZWl2ZV9jb3VudGVyc18uZmVjLkFkZFBhY2tldChwYWNrZXRfbGVu
Z3RoLCBoZWFkZXIpOworICAgIHJlY2VpdmVfY291bnRlcnNfLmZlYy5BZGRQYWNrZXQocGFja2V0
KTsKICAgICBjb3VudGVycyA9IHJlY2VpdmVfY291bnRlcnNfOwogICB9Ci0gIHJ0cF9jYWxsYmFj
a18tPkRhdGFDb3VudGVyc1VwZGF0ZWQoY291bnRlcnMsIHNzcmNfKTsKKyAgaWYgKHJ0cF9jYWxs
YmFja18pCisgICAgcnRwX2NhbGxiYWNrXy0+RGF0YUNvdW50ZXJzVXBkYXRlZChjb3VudGVycywg
c3NyY18pOwogfQogCiB2b2lkIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OlNldE1heFJlb3JkZXJp
bmdUaHJlc2hvbGQoCkBAIC0xODgsNyArMTgyLDggQEAgYm9vbCBTdHJlYW1TdGF0aXN0aWNpYW5J
bXBsOjpHZXRTdGF0aXN0aWNzKFJ0Y3BTdGF0aXN0aWNzKiBzdGF0aXN0aWNzLAogICAgICpzdGF0
aXN0aWNzID0gQ2FsY3VsYXRlUnRjcFN0YXRpc3RpY3MoKTsKICAgfQogCi0gIHJ0Y3BfY2FsbGJh
Y2tfLT5TdGF0aXN0aWNzVXBkYXRlZCgqc3RhdGlzdGljcywgc3NyY18pOworICBpZiAocnRjcF9j
YWxsYmFja18pCisgICAgcnRjcF9jYWxsYmFja18tPlN0YXRpc3RpY3NVcGRhdGVkKCpzdGF0aXN0
aWNzLCBzc3JjXyk7CiAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xOTYsNyArMTkxLDcgQEAgYm9v
bCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpHZXRBY3RpdmVTdGF0aXN0aWNzQW5kUmVzZXQoCiAg
ICAgUnRjcFN0YXRpc3RpY3MqIHN0YXRpc3RpY3MpIHsKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3Bl
IGNzKCZzdHJlYW1fbG9ja18pOwotICAgIGlmIChjbG9ja18tPkN1cnJlbnROdHBJbk1pbGxpc2Vj
b25kcygpIC0gbGFzdF9yZWNlaXZlX3RpbWVfbnRwXy5Ub01zKCkgPj0KKyAgICBpZiAoY2xvY2tf
LT5UaW1lSW5NaWxsaXNlY29uZHMoKSAtIGxhc3RfcmVjZWl2ZV90aW1lX21zXyA+PQogICAgICAg
ICBrU3RhdGlzdGljc1RpbWVvdXRNcykgewogICAgICAgLy8gTm90IGFjdGl2ZS4KICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTIxMCw3ICsyMDUsOCBAQCBib29sIFN0cmVhbVN0YXRpc3RpY2lhbklt
cGw6OkdldEFjdGl2ZVN0YXRpc3RpY3NBbmRSZXNldCgKICAgICAqc3RhdGlzdGljcyA9IENhbGN1
bGF0ZVJ0Y3BTdGF0aXN0aWNzKCk7CiAgIH0KIAotICBydGNwX2NhbGxiYWNrXy0+U3RhdGlzdGlj
c1VwZGF0ZWQoKnN0YXRpc3RpY3MsIHNzcmNfKTsKKyAgaWYgKHJ0Y3BfY2FsbGJhY2tfKQorICAg
IHJ0Y3BfY2FsbGJhY2tfLT5TdGF0aXN0aWNzVXBkYXRlZCgqc3RhdGlzdGljcywgc3NyY18pOwog
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzEyLDE3ICszMDgsMTUgQEAgdWludDMyX3QgU3RyZWFt
U3RhdGlzdGljaWFuSW1wbDo6Qml0cmF0ZVJlY2VpdmVkKCkgY29uc3QgewogfQogCiBib29sIFN0
cmVhbVN0YXRpc3RpY2lhbkltcGw6OklzUmV0cmFuc21pdE9mT2xkUGFja2V0KAotICAgIGNvbnN0
IFJUUEhlYWRlciYgaGVhZGVyKSBjb25zdCB7Ci0gIGlmIChJbk9yZGVyUGFja2V0SW50ZXJuYWwo
aGVhZGVyLnNlcXVlbmNlTnVtYmVyKSkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICB1aW50
MzJfdCBmcmVxdWVuY3lfa2h6ID0gaGVhZGVyLnBheWxvYWRfdHlwZV9mcmVxdWVuY3kgLyAxMDAw
OwotICBhc3NlcnQoZnJlcXVlbmN5X2toeiA+IDApOworICAgIGNvbnN0IFJ0cFBhY2tldFJlY2Vp
dmVkJiBwYWNrZXQsCisgICAgaW50NjRfdCBub3dfbXMpIGNvbnN0IHsKKyAgdWludDMyX3QgZnJl
cXVlbmN5X2toeiA9IHBhY2tldC5wYXlsb2FkX3R5cGVfZnJlcXVlbmN5KCkgLyAxMDAwOworICBS
VENfRENIRUNLX0dUKGZyZXF1ZW5jeV9raHosIDApOwogCi0gIGludDY0X3QgdGltZV9kaWZmX21z
ID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSAtIGxhc3RfcmVjZWl2ZV90aW1lX21zXzsK
KyAgaW50NjRfdCB0aW1lX2RpZmZfbXMgPSBub3dfbXMgLSBsYXN0X3JlY2VpdmVfdGltZV9tc187
CiAKICAgLy8gRGlmZiBpbiB0aW1lIHN0YW1wIHNpbmNlIGxhc3QgcmVjZWl2ZWQgaW4gb3JkZXIu
Ci0gIHVpbnQzMl90IHRpbWVzdGFtcF9kaWZmID0gaGVhZGVyLnRpbWVzdGFtcCAtIGxhc3RfcmVj
ZWl2ZWRfdGltZXN0YW1wXzsKKyAgdWludDMyX3QgdGltZXN0YW1wX2RpZmYgPSBwYWNrZXQuVGlt
ZXN0YW1wKCkgLSBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF87CiAgIHVpbnQzMl90IHJ0cF90aW1l
X3N0YW1wX2RpZmZfbXMgPSB0aW1lc3RhbXBfZGlmZiAvIGZyZXF1ZW5jeV9raHo7CiAKICAgaW50
NjRfdCBtYXhfZGVsYXlfbXMgPSAwOwpAQCAtMzQxLDMwICszMzUsMjMgQEAgYm9vbCBTdHJlYW1T
dGF0aXN0aWNpYW5JbXBsOjpJc1JldHJhbnNtaXRPZk9sZFBhY2tldCgKICAgcmV0dXJuIHRpbWVf
ZGlmZl9tcyA+IHJ0cF90aW1lX3N0YW1wX2RpZmZfbXMgKyBtYXhfZGVsYXlfbXM7CiB9CiAKLWJv
b2wgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6SW5PcmRlclBhY2tldEludGVybmFsKAotICAgIHVp
bnQxNl90IHNlcXVlbmNlX251bWJlcikgY29uc3QgewotICAvLyBGaXJzdCBwYWNrZXQgaXMgYWx3
YXlzIGluIG9yZGVyLgotICBpZiAobGFzdF9yZWNlaXZlX3RpbWVfbXNfID09IDApCi0gICAgcmV0
dXJuIHRydWU7Ci0KLSAgaWYgKElzTmV3ZXJTZXF1ZW5jZU51bWJlcihzZXF1ZW5jZV9udW1iZXIs
IHJlY2VpdmVkX3NlcV9tYXhfKSkgewotICAgIHJldHVybiB0cnVlOwotICB9IGVsc2UgewotICAg
IC8vIElmIHdlIGhhdmUgYSByZXN0YXJ0IG9mIHRoZSByZW1vdGUgc2lkZSB0aGlzIHBhY2tldCBp
cyBzdGlsbCBpbiBvcmRlci4KLSAgICByZXR1cm4gIUlzTmV3ZXJTZXF1ZW5jZU51bWJlcigKLSAg
ICAgICAgc2VxdWVuY2VfbnVtYmVyLCByZWNlaXZlZF9zZXFfbWF4XyAtIG1heF9yZW9yZGVyaW5n
X3RocmVzaG9sZF8pOwotICB9Ci19Ci0KLVJlY2VpdmVTdGF0aXN0aWNzKiBSZWNlaXZlU3RhdGlz
dGljczo6Q3JlYXRlKENsb2NrKiBjbG9jaykgewotICByZXR1cm4gbmV3IFJlY2VpdmVTdGF0aXN0
aWNzSW1wbChjbG9jayk7CitzdGQ6OnVuaXF1ZV9wdHI8UmVjZWl2ZVN0YXRpc3RpY3M+IFJlY2Vp
dmVTdGF0aXN0aWNzOjpDcmVhdGUoCisgICAgQ2xvY2sqIGNsb2NrLAorICAgIFJ0Y3BTdGF0aXN0
aWNzQ2FsbGJhY2sqIHJ0Y3BfY2FsbGJhY2ssCisgICAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJh
Y2sqIHJ0cF9jYWxsYmFjaykgeworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8UmVjZWl2ZVN0
YXRpc3RpY3NJbXBsPihjbG9jaywgcnRjcF9jYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX2NhbGxiYWNrKTsKIH0KIAotUmVjZWl2
ZVN0YXRpc3RpY3NJbXBsOjpSZWNlaXZlU3RhdGlzdGljc0ltcGwoQ2xvY2sqIGNsb2NrKQorUmVj
ZWl2ZVN0YXRpc3RpY3NJbXBsOjpSZWNlaXZlU3RhdGlzdGljc0ltcGwoCisgICAgQ2xvY2sqIGNs
b2NrLAorICAgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIHJ0Y3BfY2FsbGJhY2ssCisgICAgU3Ry
ZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIHJ0cF9jYWxsYmFjaykKICAgICA6IGNsb2NrXyhjbG9j
ayksCiAgICAgICBsYXN0X3JldHVybmVkX3NzcmNfKDApLAotICAgICAgcnRjcF9zdGF0c19jYWxs
YmFja18oTlVMTCksCi0gICAgICBydHBfc3RhdHNfY2FsbGJhY2tfKE5VTEwpIHt9CisgICAgICBt
YXhfcmVvcmRlcmluZ190aHJlc2hvbGRfKGtEZWZhdWx0TWF4UmVvcmRlcmluZ1RocmVzaG9sZCks
CisgICAgICBydGNwX3N0YXRzX2NhbGxiYWNrXyhydGNwX2NhbGxiYWNrKSwKKyAgICAgIHJ0cF9z
dGF0c19jYWxsYmFja18ocnRwX2NhbGxiYWNrKSB7fQogCiBSZWNlaXZlU3RhdGlzdGljc0ltcGw6
On5SZWNlaXZlU3RhdGlzdGljc0ltcGwoKSB7CiAgIHdoaWxlICghc3RhdGlzdGljaWFuc18uZW1w
dHkoKSkgewpAQCAtMzc0LDMxICszNjEsMjQgQEAgUmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjp+UmVj
ZWl2ZVN0YXRpc3RpY3NJbXBsKCkgewogfQogCiB2b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6
T25SdHBQYWNrZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgewotICBSVFBIZWFk
ZXIgaGVhZGVyOwotICBwYWNrZXQuR2V0SGVhZGVyKCZoZWFkZXIpOwotICBJbmNvbWluZ1BhY2tl
dChoZWFkZXIsIHBhY2tldC5zaXplKCkpOwotfQotCi12b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1w
bDo6SW5jb21pbmdQYWNrZXQoY29uc3QgUlRQSGVhZGVyJiBoZWFkZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhY2tldF9sZW5ndGgpIHsKICAg
U3RyZWFtU3RhdGlzdGljaWFuSW1wbCogaW1wbDsKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNz
KCZyZWNlaXZlX3N0YXRpc3RpY3NfbG9ja18pOwotICAgIGF1dG8gaXQgPSBzdGF0aXN0aWNpYW5z
Xy5maW5kKGhlYWRlci5zc3JjKTsKKyAgICBhdXRvIGl0ID0gc3RhdGlzdGljaWFuc18uZmluZChw
YWNrZXQuU3NyYygpKTsKICAgICBpZiAoaXQgIT0gc3RhdGlzdGljaWFuc18uZW5kKCkpIHsKICAg
ICAgIGltcGwgPSBpdC0+c2Vjb25kOwogICAgIH0gZWxzZSB7CiAgICAgICBpbXBsID0gbmV3IFN0
cmVhbVN0YXRpc3RpY2lhbkltcGwoCi0gICAgICAgICAgaGVhZGVyLnNzcmMsIGNsb2NrXywgLyog
ZW5hYmxlX3JldHJhbnNtaXRfZGV0ZWN0aW9uID0gKi8gZmFsc2UsIHRoaXMsCi0gICAgICAgICAg
dGhpcyk7Ci0gICAgICBzdGF0aXN0aWNpYW5zX1toZWFkZXIuc3NyY10gPSBpbXBsOworICAgICAg
ICAgIHBhY2tldC5Tc3JjKCksIGNsb2NrXywgLyogZW5hYmxlX3JldHJhbnNtaXRfZGV0ZWN0aW9u
ID0gKi8gZmFsc2UsCisgICAgICAgICAgbWF4X3Jlb3JkZXJpbmdfdGhyZXNob2xkXywgcnRjcF9z
dGF0c19jYWxsYmFja18sIHJ0cF9zdGF0c19jYWxsYmFja18pOworICAgICAgc3RhdGlzdGljaWFu
c19bcGFja2V0LlNzcmMoKV0gPSBpbXBsOwogICAgIH0KICAgfQogICAvLyBTdHJlYW1TdGF0aXN0
aWNpYW5JbXBsIGluc3RhbmNlIGlzIGNyZWF0ZWQgb25jZSBhbmQgb25seSBkZXN0cm95ZWQgd2hl
bgogICAvLyB0aGlzIHdob2xlIFJlY2VpdmVTdGF0aXN0aWNzSW1wbCBpcyBkZXN0cm95ZWQuIFN0
cmVhbVN0YXRpc3RpY2lhbkltcGwgaGFzCiAgIC8vIGl0J3Mgb3duIGxvY2tpbmcgc28gZG9uJ3Qg
aG9sZCByZWNlaXZlX3N0YXRpc3RpY3NfbG9ja18gKHBvdGVudGlhbAogICAvLyBkZWFkbG9jayku
Ci0gIGltcGwtPkluY29taW5nUGFja2V0KGhlYWRlciwgcGFja2V0X2xlbmd0aCk7CisgIGltcGwt
Pk9uUnRwUGFja2V0KHBhY2tldCk7CiB9CiAKIHZvaWQgUmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjpG
ZWNQYWNrZXRSZWNlaXZlZChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CkBAIC00
MTEsOSArMzkxLDcgQEAgdm9pZCBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OkZlY1BhY2tldFJlY2Vp
dmVkKGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIHsKICAgICAgIHJldHVybjsKICAg
ICBpbXBsID0gaXQtPnNlY29uZDsKICAgfQotICBSVFBIZWFkZXIgaGVhZGVyOwotICBwYWNrZXQu
R2V0SGVhZGVyKCZoZWFkZXIpOwotICBpbXBsLT5GZWNQYWNrZXRSZWNlaXZlZChoZWFkZXIsIHBh
Y2tldC5zaXplKCkpOworICBpbXBsLT5GZWNQYWNrZXRSZWNlaXZlZChwYWNrZXQpOwogfQogCiBT
dHJlYW1TdGF0aXN0aWNpYW4qIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6R2V0U3RhdGlzdGljaWFu
KApAQCAtNDI3LDggKzQwNSwxMyBAQCBTdHJlYW1TdGF0aXN0aWNpYW4qIFJlY2VpdmVTdGF0aXN0
aWNzSW1wbDo6R2V0U3RhdGlzdGljaWFuKAogCiB2b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6
U2V0TWF4UmVvcmRlcmluZ1RocmVzaG9sZCgKICAgICBpbnQgbWF4X3Jlb3JkZXJpbmdfdGhyZXNo
b2xkKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZyZWNlaXZlX3N0YXRpc3RpY3NfbG9ja18pOwot
ICBmb3IgKGF1dG8mIHN0YXRpc3RpY2lhbiA6IHN0YXRpc3RpY2lhbnNfKSB7CisgIHN0ZDo6bWFw
PHVpbnQzMl90LCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsKj4gc3RhdGlzdGljaWFuczsKKyAgewor
ICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZyZWNlaXZlX3N0YXRpc3RpY3NfbG9ja18pOworICAgIG1h
eF9yZW9yZGVyaW5nX3RocmVzaG9sZF8gPSBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGQ7CisgICAg
c3RhdGlzdGljaWFucyA9IHN0YXRpc3RpY2lhbnNfOworICB9CisgIGZvciAoYXV0byYgc3RhdGlz
dGljaWFuIDogc3RhdGlzdGljaWFucykgewogICAgIHN0YXRpc3RpY2lhbi5zZWNvbmQtPlNldE1h
eFJlb3JkZXJpbmdUaHJlc2hvbGQobWF4X3Jlb3JkZXJpbmdfdGhyZXNob2xkKTsKICAgfQogfQpA
QCAtNDQwLDcgKzQyMyw5IEBAIHZvaWQgUmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjpFbmFibGVSZXRy
YW5zbWl0RGV0ZWN0aW9uKHVpbnQzMl90IHNzcmMsCiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJnJl
Y2VpdmVfc3RhdGlzdGljc19sb2NrXyk7CiAgICAgU3RyZWFtU3RhdGlzdGljaWFuSW1wbComIGlt
cGxfcmVmID0gc3RhdGlzdGljaWFuc19bc3NyY107CiAgICAgaWYgKGltcGxfcmVmID09IG51bGxw
dHIpIHsgIC8vIG5ldyBlbGVtZW50Ci0gICAgICBpbXBsX3JlZiA9IG5ldyBTdHJlYW1TdGF0aXN0
aWNpYW5JbXBsKHNzcmMsIGNsb2NrXywgZW5hYmxlLCB0aGlzLCB0aGlzKTsKKyAgICAgIGltcGxf
cmVmID0gbmV3IFN0cmVhbVN0YXRpc3RpY2lhbkltcGwoCisgICAgICAgICAgc3NyYywgY2xvY2tf
LCBlbmFibGUsIG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZF8sIHJ0Y3Bfc3RhdHNfY2FsbGJhY2tf
LAorICAgICAgICAgIHJ0cF9zdGF0c19jYWxsYmFja18pOwogICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBpbXBsID0gaW1wbF9yZWY7CkBAIC00NDgsNDMgKzQzMyw2IEBAIHZvaWQgUmVjZWl2ZVN0
YXRpc3RpY3NJbXBsOjpFbmFibGVSZXRyYW5zbWl0RGV0ZWN0aW9uKHVpbnQzMl90IHNzcmMsCiAg
IGltcGwtPkVuYWJsZVJldHJhbnNtaXREZXRlY3Rpb24oZW5hYmxlKTsKIH0KIAotdm9pZCBSZWNl
aXZlU3RhdGlzdGljc0ltcGw6OlJlZ2lzdGVyUnRjcFN0YXRpc3RpY3NDYWxsYmFjaygKLSAgICBS
dGNwU3RhdGlzdGljc0NhbGxiYWNrKiBjYWxsYmFjaykgewotICBydGM6OkNyaXRTY29wZSBjcygm
cmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKLSAgaWYgKGNhbGxiYWNrICE9IE5VTEwpCi0gICAg
YXNzZXJ0KHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfID09IE5VTEwpOwotICBydGNwX3N0YXRzX2NhbGxi
YWNrXyA9IGNhbGxiYWNrOwotfQotCi12b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6U3RhdGlz
dGljc1VwZGF0ZWQoY29uc3QgUnRjcFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYykgewotICBy
dGM6OkNyaXRTY29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKLSAgaWYgKHJ0Y3Bf
c3RhdHNfY2FsbGJhY2tfKQotICAgIHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfLT5TdGF0aXN0aWNzVXBk
YXRlZChzdGF0aXN0aWNzLCBzc3JjKTsKLX0KLQotdm9pZCBSZWNlaXZlU3RhdGlzdGljc0ltcGw6
OkNOYW1lQ2hhbmdlZChjb25zdCBjaGFyKiBjbmFtZSwgdWludDMyX3Qgc3NyYykgewotICBydGM6
OkNyaXRTY29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKLSAgaWYgKHJ0Y3Bfc3Rh
dHNfY2FsbGJhY2tfKQotICAgIHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfLT5DTmFtZUNoYW5nZWQoY25h
bWUsIHNzcmMpOwotfQotCi12b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6UmVnaXN0ZXJSdHBT
dGF0aXN0aWNzQ2FsbGJhY2soCi0gICAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIGNhbGxi
YWNrKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZyZWNlaXZlX3N0YXRpc3RpY3NfbG9ja18pOwot
ICBpZiAoY2FsbGJhY2sgIT0gTlVMTCkKLSAgICBhc3NlcnQocnRwX3N0YXRzX2NhbGxiYWNrXyA9
PSBOVUxMKTsKLSAgcnRwX3N0YXRzX2NhbGxiYWNrXyA9IGNhbGxiYWNrOwotfQotCi12b2lkIFJl
Y2VpdmVTdGF0aXN0aWNzSW1wbDo6RGF0YUNvdW50ZXJzVXBkYXRlZChjb25zdCBTdHJlYW1EYXRh
Q291bnRlcnMmIHN0YXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3Qgc3NyYykgewotICBydGM6OkNyaXRTY29wZSBjcygmcmVjZWl2ZV9z
dGF0aXN0aWNzX2xvY2tfKTsKLSAgaWYgKHJ0cF9zdGF0c19jYWxsYmFja18pIHsKLSAgICBydHBf
c3RhdHNfY2FsbGJhY2tfLT5EYXRhQ291bnRlcnNVcGRhdGVkKHN0YXRzLCBzc3JjKTsKLSAgfQot
fQotCiBzdGQ6OnZlY3RvcjxydGNwOjpSZXBvcnRCbG9jaz4gUmVjZWl2ZVN0YXRpc3RpY3NJbXBs
OjpSdGNwUmVwb3J0QmxvY2tzKAogICAgIHNpemVfdCBtYXhfYmxvY2tzKSB7CiAgIHN0ZDo6bWFw
PHVpbnQzMl90LCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsKj4gc3RhdGlzdGljaWFuczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZWNl
aXZlX3N0YXRpc3RpY3NfaW1wbC5oCmluZGV4IDU2YmZkMmI0YTQwNWNlNmQxNzg2NTY2YmRkNjlh
MWI5YzAzNTAxMGQuLjgxNTNjNDQwMGQ0MGJjZjU5NWZkYjgyMGRiODI5YTVhYWQ3MmZkOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcmVjZWl2ZV9zdGF0aXN0aWNzX2ltcGwuaApAQCAtMTksMTUgKzE5LDE3IEBACiAKICNpbmNs
dWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9yYXRl
X3N0YXRpc3RpY3MuaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9udHBfdGlt
ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIAotY2xhc3MgU3RyZWFtU3RhdGlzdGljaWFuSW1wbCA6IHB1YmxpYyBTdHJl
YW1TdGF0aXN0aWNpYW4geworY2xhc3MgU3RyZWFtU3RhdGlzdGljaWFuSW1wbCA6IHB1YmxpYyBT
dHJlYW1TdGF0aXN0aWNpYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFJ0cFBhY2tldFNpbmtJbnRlcmZhY2UgewogIHB1YmxpYzoKICAgU3RyZWFtU3RhdGlzdGljaWFu
SW1wbCh1aW50MzJfdCBzc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgIENsb2NrKiBjbG9j
aywKICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZV9yZXRyYW5zbWl0X2RldGVj
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X3Jlb3JkZXJpbmdfdGhyZXNo
b2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIHJ0
Y3BfY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtRGF0YUNvdW50ZXJz
Q2FsbGJhY2sqIHJ0cF9jYWxsYmFjayk7CiAgIH5TdHJlYW1TdGF0aXN0aWNpYW5JbXBsKCkgb3Zl
cnJpZGU7CkBAIC00MSwyNCArNDMsMjIgQEAgY2xhc3MgU3RyZWFtU3RhdGlzdGljaWFuSW1wbCA6
IHB1YmxpYyBTdHJlYW1TdGF0aXN0aWNpYW4gewogICAgICAgU3RyZWFtRGF0YUNvdW50ZXJzKiBk
YXRhX2NvdW50ZXJzKSBjb25zdCBvdmVycmlkZTsKICAgdWludDMyX3QgQml0cmF0ZVJlY2VpdmVk
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgdm9pZCBJbmNvbWluZ1BhY2tldChjb25zdCBSVFBIZWFk
ZXImIHJ0cF9oZWFkZXIsIHNpemVfdCBwYWNrZXRfbGVuZ3RoKTsKLSAgdm9pZCBGZWNQYWNrZXRS
ZWNlaXZlZChjb25zdCBSVFBIZWFkZXImIGhlYWRlciwgc2l6ZV90IHBhY2tldF9sZW5ndGgpOwor
ICAvLyBJbXBsZW1lbnRzIFJ0cFBhY2tldFNpbmtJbnRlcmZhY2UKKyAgdm9pZCBPblJ0cFBhY2tl
dChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSBvdmVycmlkZTsKKworICB2b2lkIEZl
Y1BhY2tldFJlY2VpdmVkKGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpOwogICB2b2lk
IFNldE1heFJlb3JkZXJpbmdUaHJlc2hvbGQoaW50IG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZCk7
CiAgIHZvaWQgRW5hYmxlUmV0cmFuc21pdERldGVjdGlvbihib29sIGVuYWJsZSk7CiAKICBwcml2
YXRlOgotICBib29sIElzUmV0cmFuc21pdE9mT2xkUGFja2V0KGNvbnN0IFJUUEhlYWRlciYgaGVh
ZGVyKSBjb25zdAotICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChzdHJlYW1fbG9j
a18pOwotICBib29sIEluT3JkZXJQYWNrZXRJbnRlcm5hbCh1aW50MTZfdCBzZXF1ZW5jZV9udW1i
ZXIpIGNvbnN0CisgIGJvb2wgSXNSZXRyYW5zbWl0T2ZPbGRQYWNrZXQoY29uc3QgUnRwUGFja2V0
UmVjZWl2ZWQmIHBhY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IG5vd19tcykgY29uc3QKICAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoc3RyZWFt
X2xvY2tfKTsKICAgUnRjcFN0YXRpc3RpY3MgQ2FsY3VsYXRlUnRjcFN0YXRpc3RpY3MoKQogICAg
ICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChzdHJlYW1fbG9ja18pOwotICB2b2lkIFVw
ZGF0ZUppdHRlcihjb25zdCBSVFBIZWFkZXImIGhlYWRlciwgTnRwVGltZSByZWNlaXZlX3RpbWUp
Ci0gICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKHN0cmVhbV9sb2NrXyk7Ci0gIFN0
cmVhbURhdGFDb3VudGVycyBVcGRhdGVDb3VudGVycyhjb25zdCBSVFBIZWFkZXImIHJ0cF9oZWFk
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFja2V0X2xl
bmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmV0cmFuc21p
dHRlZCkKKyAgdm9pZCBVcGRhdGVKaXR0ZXIoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tl
dCwgaW50NjRfdCByZWNlaXZlX3RpbWVfbXMpCiAgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JF
UVVJUkVEKHN0cmVhbV9sb2NrXyk7CisgIFN0cmVhbURhdGFDb3VudGVycyBVcGRhdGVDb3VudGVy
cyhjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KTsKIAogICBjb25zdCB1aW50MzJfdCBz
c3JjXzsKICAgQ2xvY2sqIGNvbnN0IGNsb2NrXzsKQEAgLTczLDE0ICs3MywxMiBAQCBjbGFzcyBT
dHJlYW1TdGF0aXN0aWNpYW5JbXBsIDogcHVibGljIFN0cmVhbVN0YXRpc3RpY2lhbiB7CiAgIHVp
bnQzMl90IGN1bXVsYXRpdmVfbG9zc18gUlRDX0dVQVJERURfQlkoJnN0cmVhbV9sb2NrXyk7CiAK
ICAgaW50NjRfdCBsYXN0X3JlY2VpdmVfdGltZV9tc18gUlRDX0dVQVJERURfQlkoJnN0cmVhbV9s
b2NrXyk7Ci0gIE50cFRpbWUgbGFzdF9yZWNlaXZlX3RpbWVfbnRwXyBSVENfR1VBUkRFRF9CWSgm
c3RyZWFtX2xvY2tfKTsKICAgdWludDMyX3QgbGFzdF9yZWNlaXZlZF90aW1lc3RhbXBfIFJUQ19H
VUFSREVEX0JZKCZzdHJlYW1fbG9ja18pOwogICB1aW50MTZfdCByZWNlaXZlZF9zZXFfZmlyc3Rf
IFJUQ19HVUFSREVEX0JZKCZzdHJlYW1fbG9ja18pOwogICB1aW50MTZfdCByZWNlaXZlZF9zZXFf
bWF4XyBSVENfR1VBUkRFRF9CWSgmc3RyZWFtX2xvY2tfKTsKICAgdWludDE2X3QgcmVjZWl2ZWRf
c2VxX3dyYXBzXyBSVENfR1VBUkRFRF9CWSgmc3RyZWFtX2xvY2tfKTsKIAogICAvLyBDdXJyZW50
IGNvdW50ZXIgdmFsdWVzLgotICBzaXplX3QgcmVjZWl2ZWRfcGFja2V0X292ZXJoZWFkXyBSVENf
R1VBUkRFRF9CWSgmc3RyZWFtX2xvY2tfKTsKICAgU3RyZWFtRGF0YUNvdW50ZXJzIHJlY2VpdmVf
Y291bnRlcnNfIFJUQ19HVUFSREVEX0JZKCZzdHJlYW1fbG9ja18pOwogCiAgIC8vIENvdW50ZXIg
dmFsdWVzIHdoZW4gd2Ugc2VudCB0aGUgbGFzdCByZXBvcnQuCkBAIC05NCw0NyArOTIsMzYgQEAg
Y2xhc3MgU3RyZWFtU3RhdGlzdGljaWFuSW1wbCA6IHB1YmxpYyBTdHJlYW1TdGF0aXN0aWNpYW4g
ewogICBTdHJlYW1EYXRhQ291bnRlcnNDYWxsYmFjayogY29uc3QgcnRwX2NhbGxiYWNrXzsKIH07
CiAKLWNsYXNzIFJlY2VpdmVTdGF0aXN0aWNzSW1wbCA6IHB1YmxpYyBSZWNlaXZlU3RhdGlzdGlj
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBSdGNwU3RhdGlzdGljc0Nh
bGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFN0cmVhbURhdGFD
b3VudGVyc0NhbGxiYWNrIHsKK2NsYXNzIFJlY2VpdmVTdGF0aXN0aWNzSW1wbCA6IHB1YmxpYyBS
ZWNlaXZlU3RhdGlzdGljcyB7CiAgcHVibGljOgotICBleHBsaWNpdCBSZWNlaXZlU3RhdGlzdGlj
c0ltcGwoQ2xvY2sqIGNsb2NrKTsKKyAgUmVjZWl2ZVN0YXRpc3RpY3NJbXBsKENsb2NrKiBjbG9j
aywKKyAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIHJ0Y3Bf
Y2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1EYXRhQ291bnRlcnNDYWxs
YmFjayogcnRwX2NhbGxiYWNrKTsKIAogICB+UmVjZWl2ZVN0YXRpc3RpY3NJbXBsKCkgb3ZlcnJp
ZGU7CiAKLSAgLy8gSW1wbGVtZW50IFJlY2VpdmVTdGF0aXN0aWNzUHJvdmlkZXIuCisgIC8vIElt
cGxlbWVudHMgUmVjZWl2ZVN0YXRpc3RpY3NQcm92aWRlci4KICAgc3RkOjp2ZWN0b3I8cnRjcDo6
UmVwb3J0QmxvY2s+IFJ0Y3BSZXBvcnRCbG9ja3Moc2l6ZV90IG1heF9ibG9ja3MpIG92ZXJyaWRl
OwogCi0gIC8vIEltcGxlbWVudCBSdHBQYWNrZXRTaW5rSW50ZXJmYWNlCisgIC8vIEltcGxlbWVu
dHMgUnRwUGFja2V0U2lua0ludGVyZmFjZQogICB2b2lkIE9uUnRwUGFja2V0KGNvbnN0IFJ0cFBh
Y2tldFJlY2VpdmVkJiBwYWNrZXQpIG92ZXJyaWRlOwogCi0gIC8vIEltcGxlbWVudCBSZWNlaXZl
U3RhdGlzdGljcy4KLSAgdm9pZCBJbmNvbWluZ1BhY2tldChjb25zdCBSVFBIZWFkZXImIGhlYWRl
ciwgc2l6ZV90IHBhY2tldF9sZW5ndGgpIG92ZXJyaWRlOworICAvLyBJbXBsZW1lbnRzIFJlY2Vp
dmVTdGF0aXN0aWNzLgogICB2b2lkIEZlY1BhY2tldFJlY2VpdmVkKGNvbnN0IFJ0cFBhY2tldFJl
Y2VpdmVkJiBwYWNrZXQpIG92ZXJyaWRlOwogICBTdHJlYW1TdGF0aXN0aWNpYW4qIEdldFN0YXRp
c3RpY2lhbih1aW50MzJfdCBzc3JjKSBjb25zdCBvdmVycmlkZTsKICAgdm9pZCBTZXRNYXhSZW9y
ZGVyaW5nVGhyZXNob2xkKGludCBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGQpIG92ZXJyaWRlOwog
ICB2b2lkIEVuYWJsZVJldHJhbnNtaXREZXRlY3Rpb24odWludDMyX3Qgc3NyYywgYm9vbCBlbmFi
bGUpIG92ZXJyaWRlOwogCi0gIHZvaWQgUmVnaXN0ZXJSdGNwU3RhdGlzdGljc0NhbGxiYWNrKAot
ICAgICAgUnRjcFN0YXRpc3RpY3NDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwotCi0gIHZv
aWQgUmVnaXN0ZXJSdHBTdGF0aXN0aWNzQ2FsbGJhY2soCi0gICAgICBTdHJlYW1EYXRhQ291bnRl
cnNDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwotCiAgcHJpdmF0ZToKLSAgdm9pZCBTdGF0
aXN0aWNzVXBkYXRlZChjb25zdCBSdGNwU3RhdGlzdGljcyYgc3RhdGlzdGljcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBzc3JjKSBvdmVycmlkZTsKLSAgdm9pZCBDTmFtZUNo
YW5nZWQoY29uc3QgY2hhciogY25hbWUsIHVpbnQzMl90IHNzcmMpIG92ZXJyaWRlOwotICB2b2lk
IERhdGFDb3VudGVyc1VwZGF0ZWQoY29uc3QgU3RyZWFtRGF0YUNvdW50ZXJzJiBjb3VudGVycywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNzcmMpIG92ZXJyaWRlOwotCiAg
IENsb2NrKiBjb25zdCBjbG9ja187CiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHJlY2VpdmVfc3Rh
dGlzdGljc19sb2NrXzsKICAgdWludDMyX3QgbGFzdF9yZXR1cm5lZF9zc3JjXzsKLSAgc3RkOjpt
YXA8dWludDMyX3QsIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwqPiBzdGF0aXN0aWNpYW5zXzsKKyAg
aW50IG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZF8gUlRDX0dVQVJERURfQlkocmVjZWl2ZV9zdGF0
aXN0aWNzX2xvY2tfKTsKKyAgc3RkOjptYXA8dWludDMyX3QsIFN0cmVhbVN0YXRpc3RpY2lhbklt
cGwqPiBzdGF0aXN0aWNpYW5zXworICAgICAgUlRDX0dVQVJERURfQlkocmVjZWl2ZV9zdGF0aXN0
aWNzX2xvY2tfKTsKIAotICBSdGNwU3RhdGlzdGljc0NhbGxiYWNrKiBydGNwX3N0YXRzX2NhbGxi
YWNrXzsKLSAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIHJ0cF9zdGF0c19jYWxsYmFja187
CisgIFJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2sqIGNvbnN0IHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfOwor
ICBTdHJlYW1EYXRhQ291bnRlcnNDYWxsYmFjayogY29uc3QgcnRwX3N0YXRzX2NhbGxiYWNrXzsK
IH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAjZW5kaWYgIC8vIE1PRFVMRVNfUlRQX1JUQ1Bf
U09VUkNFX1JFQ0VJVkVfU1RBVElTVElDU19JTVBMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
ZWNlaXZlX3N0YXRpc3RpY3NfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZWNlaXZlX3N0YXRpc3Rp
Y3NfdW5pdHRlc3QuY2MKaW5kZXggMTg0NDhjYjc3ZWM2ZTU1NTFiOTJkODFkOWRlYTJkNTVhYWJm
ZjhlNy4uMjUzOTM2MzFkZjliODliY2UxZDcxOTc5MWIzZGIwNmQ4NDgyNjVkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcmVjZWl2ZV9zdGF0aXN0aWNzX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3JlY2VpdmVfc3RhdGlzdGljc191bml0dGVzdC5jYwpAQCAtNDgsMTAgKzQ4LDcgQEAgUnRwUGFj
a2V0UmVjZWl2ZWQgQ3JlYXRlUnRwUGFja2V0KHVpbnQzMl90IHNzcmMsCiAgICAgcGFja2V0LlNl
dENzcmNzKGNzcmNzKTsKICAgfQogICBwYWNrZXQuU2V0UGF5bG9hZFNpemUocGF5bG9hZF9zaXpl
KTsKLSAgaWYgKHBhZGRpbmdfc2l6ZSA+IDApIHsKLSAgICBSYW5kb20gcmFuZG9tKDE3KTsKLSAg
ICBwYWNrZXQuU2V0UGFkZGluZyhwYWRkaW5nX3NpemUsICZyYW5kb20pOwotICB9CisgIHBhY2tl
dC5TZXRQYWRkaW5nKHBhZGRpbmdfc2l6ZSk7CiAgIHJldHVybiBwYWNrZXQ7CiB9CiAKQEAgLTc0
LDcgKzcxLDkgQEAgdm9pZCBJbmNyZW1lbnRUaW1lc3RhbXAoUnRwUGFja2V0UmVjZWl2ZWQqIHBh
Y2tldCwgdWludDMyX3QgaW5jcikgewogY2xhc3MgUmVjZWl2ZVN0YXRpc3RpY3NUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CiAgcHVibGljOgogICBSZWNlaXZlU3RhdGlzdGljc1Rlc3Qo
KQotICAgICAgOiBjbG9ja18oMCksIHJlY2VpdmVfc3RhdGlzdGljc18oUmVjZWl2ZVN0YXRpc3Rp
Y3M6OkNyZWF0ZSgmY2xvY2tfKSkgeworICAgICAgOiBjbG9ja18oMCksCisgICAgICAgIHJlY2Vp
dmVfc3RhdGlzdGljc18oCisgICAgICAgICAgICBSZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRlKCZj
bG9ja18sIG51bGxwdHIsIG51bGxwdHIpKSB7CiAgICAgcGFja2V0MV8gPSBDcmVhdGVSdHBQYWNr
ZXQoa1NzcmMxLCBrUGFja2V0U2l6ZTEpOwogICAgIHBhY2tldDJfID0gQ3JlYXRlUnRwUGFja2V0
KGtTc3JjMiwga1BhY2tldFNpemUyKTsKICAgfQpAQCAtMjU0LDcgKzI1Myw3IEBAIFRFU1RfRihS
ZWNlaXZlU3RhdGlzdGljc1Rlc3QsIFJ0Y3BDYWxsYmFja3MpIHsKICAgICBSdGNwU3RhdGlzdGlj
cyBzdGF0c187CiAgIH0gY2FsbGJhY2s7CiAKLSAgcmVjZWl2ZV9zdGF0aXN0aWNzXy0+UmVnaXN0
ZXJSdGNwU3RhdGlzdGljc0NhbGxiYWNrKCZjYWxsYmFjayk7CisgIHJlY2VpdmVfc3RhdGlzdGlj
c18gPSBSZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRlKCZjbG9ja18sICZjYWxsYmFjaywgbnVsbHB0
cik7CiAgIHJlY2VpdmVfc3RhdGlzdGljc18tPkVuYWJsZVJldHJhbnNtaXREZXRlY3Rpb24oa1Nz
cmMxLCB0cnVlKTsKIAogICAvLyBBZGQgc29tZSBhcmJpdHJhcnkgZGF0YSwgd2l0aCBsb3NzIGFu
ZCBqaXR0ZXIuCkBAIC0yOTQsMzMgKzI5Myw2IEBAIFRFU1RfRihSZWNlaXZlU3RhdGlzdGljc1Rl
c3QsIFJ0Y3BDYWxsYmFja3MpIHsKICAgRVhQRUNUX0VRKDEsIHN0YXRpc3RpY3MucGFja2V0c19s
b3N0KTsKICAgRVhQRUNUX0VRKDV1LCBzdGF0aXN0aWNzLmV4dGVuZGVkX2hpZ2hlc3Rfc2VxdWVu
Y2VfbnVtYmVyKTsKICAgRVhQRUNUX0VRKDE3N3UsIHN0YXRpc3RpY3Muaml0dGVyKTsKLQotICBy
ZWNlaXZlX3N0YXRpc3RpY3NfLT5SZWdpc3RlclJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2soTlVMTCk7
Ci0KLSAgLy8gQWRkIHNvbWUgbW9yZSBkYXRhLgotICBwYWNrZXQxXy5TZXRTZXF1ZW5jZU51bWJl
cigxKTsKLSAgY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDcpOwotICBJbmNyZW1lbnRU
aW1lc3RhbXAoJnBhY2tldDFfLCAzKTsKLSAgcmVjZWl2ZV9zdGF0aXN0aWNzXy0+T25SdHBQYWNr
ZXQocGFja2V0MV8pOwotICBJbmNyZW1lbnRTZXF1ZW5jZU51bWJlcigmcGFja2V0MV8sIDIpOwot
ICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoOSk7Ci0gIEluY3JlbWVudFRpbWVzdGFt
cCgmcGFja2V0MV8sIDkpOwotICByZWNlaXZlX3N0YXRpc3RpY3NfLT5PblJ0cFBhY2tldChwYWNr
ZXQxXyk7Ci0gIEluY3JlbWVudFNlcXVlbmNlTnVtYmVyKCZwYWNrZXQxXywgLTEpOwotICBjbG9j
a18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTMpOwotICBJbmNyZW1lbnRUaW1lc3RhbXAoJnBh
Y2tldDFfLCA0Nyk7Ci0gIHJlY2VpdmVfc3RhdGlzdGljc18tPk9uUnRwUGFja2V0KHBhY2tldDFf
KTsKLSAgSW5jcmVtZW50U2VxdWVuY2VOdW1iZXIoJnBhY2tldDFfLCAzKTsKLSAgY2xvY2tfLkFk
dmFuY2VUaW1lTWlsbGlzZWNvbmRzKDExKTsKLSAgSW5jcmVtZW50VGltZXN0YW1wKCZwYWNrZXQx
XywgMTcpOwotICByZWNlaXZlX3N0YXRpc3RpY3NfLT5PblJ0cFBhY2tldChwYWNrZXQxXyk7Ci0g
IEluY3JlbWVudFNlcXVlbmNlTnVtYmVyKCZwYWNrZXQxXyk7Ci0KLSAgcmVjZWl2ZV9zdGF0aXN0
aWNzXy0+R2V0U3RhdGlzdGljaWFuKGtTc3JjMSktPkdldFN0YXRpc3RpY3MoJnN0YXRpc3RpY3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRydWUpOwotCi0gIC8vIFNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhZnRlciBk
ZXJlZ2lzdGVyLgotICBFWFBFQ1RfRVEoMXUsIGNhbGxiYWNrLm51bV9jYWxsc18pOwogfQogCiBj
bGFzcyBSdHBUZXN0Q2FsbGJhY2sgOiBwdWJsaWMgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sg
ewpAQCAtMzYxLDcgKzMzMyw3IEBAIGNsYXNzIFJ0cFRlc3RDYWxsYmFjayA6IHB1YmxpYyBTdHJl
YW1EYXRhQ291bnRlcnNDYWxsYmFjayB7CiAKIFRFU1RfRihSZWNlaXZlU3RhdGlzdGljc1Rlc3Qs
IFJ0cENhbGxiYWNrcykgewogICBSdHBUZXN0Q2FsbGJhY2sgY2FsbGJhY2s7Ci0gIHJlY2VpdmVf
c3RhdGlzdGljc18tPlJlZ2lzdGVyUnRwU3RhdGlzdGljc0NhbGxiYWNrKCZjYWxsYmFjayk7Cisg
IHJlY2VpdmVfc3RhdGlzdGljc18gPSBSZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRlKCZjbG9ja18s
IG51bGxwdHIsICZjYWxsYmFjayk7CiAgIHJlY2VpdmVfc3RhdGlzdGljc18tPkVuYWJsZVJldHJh
bnNtaXREZXRlY3Rpb24oa1NzcmMxLCB0cnVlKTsKIAogICBjb25zdCBzaXplX3Qga0hlYWRlckxl
bmd0aCA9IDIwOwpAQCAtNDIwLDE5ICszOTIsMTEgQEAgVEVTVF9GKFJlY2VpdmVTdGF0aXN0aWNz
VGVzdCwgUnRwQ2FsbGJhY2tzKSB7CiAgIGV4cGVjdGVkLmZlYy5oZWFkZXJfYnl0ZXMgPSBrSGVh
ZGVyTGVuZ3RoOwogICBleHBlY3RlZC5mZWMucGFja2V0cyA9IDE7CiAgIGNhbGxiYWNrLk1hdGNo
ZXMoNSwga1NzcmMxLCBleHBlY3RlZCk7Ci0KLSAgcmVjZWl2ZV9zdGF0aXN0aWNzXy0+UmVnaXN0
ZXJSdHBTdGF0aXN0aWNzQ2FsbGJhY2soTlVMTCk7Ci0KLSAgLy8gTmV3IHN0YXRzLCBidXQgY2Fs
bGJhY2sgc2hvdWxkIG5vdCBiZSBjYWxsZWQuCi0gIEluY3JlbWVudFNlcXVlbmNlTnVtYmVyKCZw
YWNrZXQxKTsKLSAgY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDUpOwotICByZWNlaXZl
X3N0YXRpc3RpY3NfLT5PblJ0cFBhY2tldChwYWNrZXQxKTsKLSAgY2FsbGJhY2suTWF0Y2hlcyg1
LCBrU3NyYzEsIGV4cGVjdGVkKTsKIH0KIAogVEVTVF9GKFJlY2VpdmVTdGF0aXN0aWNzVGVzdCwg
UnRwQ2FsbGJhY2tzRmVjRmlyc3QpIHsKICAgUnRwVGVzdENhbGxiYWNrIGNhbGxiYWNrOwotICBy
ZWNlaXZlX3N0YXRpc3RpY3NfLT5SZWdpc3RlclJ0cFN0YXRpc3RpY3NDYWxsYmFjaygmY2FsbGJh
Y2spOworICByZWNlaXZlX3N0YXRpc3RpY3NfID0gUmVjZWl2ZVN0YXRpc3RpY3M6OkNyZWF0ZSgm
Y2xvY2tfLCBudWxscHRyLCAmY2FsbGJhY2spOwogCiAgIGNvbnN0IHVpbnQzMl90IGtIZWFkZXJM
ZW5ndGggPSAyMDsKICAgUnRwUGFja2V0UmVjZWl2ZWQgcGFja2V0ID0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZW1vdGVfbnRw
X3RpbWVfZXN0aW1hdG9yLmNjCmluZGV4IGZjODY3YTQ5MWEzNzQ5ODk2NjIwZmNmODc2MzBiZWFm
MWYxODIwOGUuLmZkMTliMTM4M2E0NGUzYzhlOWZhZWI2ODM3YjNkYmQzZjIwOGUyMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcmVtb3RlX250cF90aW1lX2VzdGltYXRvci5jYwpAQCAtMTAsOCArMTAsOSBAQAogCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3Iu
aCIKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvdGltZS90aW1lc3RhbXBfZXh0cmFwb2xhdG9yLmgiCiAjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcmVtb3RlX250cF90aW1lX2VzdGltYXRvcl91bml0dGVzdC5jYwpp
bmRleCA1MjU0Y2Q1N2JiOTMzYjQxMDg5NGQxMmZhYzc3MTVlYWY5MWQyZjBmLi5iMzAxNDYxNDI3
YjY5N2M5NTA0OTYxOWIwYmE1YjdkYThjM2U4ODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZW1v
dGVfbnRwX3RpbWVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlbW90ZV9u
dHBfdGltZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKQEAgLTU2LDcgKzU2LDggQEAgY2xhc3MgUmVt
b3RlTnRwVGltZUVzdGltYXRvclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgbmV0d29ya2luZ19kZWxheV9tcykgewog
ICAgIHVpbnQzMl90IHJ0Y3BfdGltZXN0YW1wID0gR2V0UmVtb3RlVGltZXN0YW1wKCk7CiAgICAg
aW50NjRfdCBudHBfZXJyb3JfZnJhY3Rpb25zID0KLSAgICAgICAgbnRwX2Vycm9yX21zICogTnRw
VGltZTo6a0ZyYWN0aW9uc1BlclNlY29uZCAvIDEwMDA7CisgICAgICAgIG50cF9lcnJvcl9tcyAq
IHN0YXRpY19jYXN0PGludDY0X3Q+KE50cFRpbWU6OmtGcmFjdGlvbnNQZXJTZWNvbmQpIC8KKyAg
ICAgICAgMTAwMDsKICAgICBOdHBUaW1lIG50cChzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVtb3Rl
X2Nsb2NrXy5DdXJyZW50TnRwVGltZSgpKSArCiAgICAgICAgICAgICAgICAgbnRwX2Vycm9yX2Zy
YWN0aW9ucyk7CiAgICAgQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa1Rlc3RSdHQgLyAyICsgbmV0
d29ya2luZ19kZWxheV9tcyk7CkBAIC0xMTAsNyArMTExLDE3IEBAIFRFU1RfRihSZW1vdGVOdHBU
aW1lRXN0aW1hdG9yVGVzdCwgRXN0aW1hdGUpIHsKIH0KIAogVEVTVF9GKFJlbW90ZU50cFRpbWVF
c3RpbWF0b3JUZXN0LCBBdmVyYWdlc0Vycm9yc091dCkgewotICAvLyBSZW1vdGUgcGVlciBzZW5k
cyBmaXJzdCA1IFJUQ1AgU1Igd2l0aG91dCBlcnJvcnMuCisgIC8vIFJlbW90ZSBwZWVyIHNlbmRz
IGZpcnN0IDEwIFJUQ1AgU1Igd2l0aG91dCBlcnJvcnMuCisgIEFkdmFuY2VUaW1lTWlsbGlzZWNv
bmRzKDEwMDApOworICBTZW5kUnRjcFNyKCk7CisgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEw
MDApOworICBTZW5kUnRjcFNyKCk7CisgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDApOwor
ICBTZW5kUnRjcFNyKCk7CisgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDApOworICBTZW5k
UnRjcFNyKCk7CisgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDApOworICBTZW5kUnRjcFNy
KCk7CiAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDApOwogICBTZW5kUnRjcFNyKCk7CiAg
IEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDApOwpAQCAtMTIyLDE4ICsxMzMsMTcgQEAgVEVT
VF9GKFJlbW90ZU50cFRpbWVFc3RpbWF0b3JUZXN0LCBBdmVyYWdlc0Vycm9yc091dCkgewogICBB
ZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKICAgU2VuZFJ0Y3BTcigpOwogCi0gIEFkdmFu
Y2VUaW1lTWlsbGlzZWNvbmRzKDE1KTsKKyAgQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTUwKTsK
ICAgdWludDMyX3QgcnRwX3RpbWVzdGFtcCA9IEdldFJlbW90ZVRpbWVzdGFtcCgpOwogICBpbnQ2
NF90IGNhcHR1cmVfbnRwX3RpbWVfbXMgPSBsb2NhbF9jbG9ja18uQ3VycmVudE50cEluTWlsbGlz
ZWNvbmRzKCk7Ci0KICAgLy8gTG9jYWwgcGVlciBnZXRzIGVub3VnaCBSVENQIFNSIHRvIGNhbGN1
bGF0ZSB0aGUgY2FwdHVyZSB0aW1lLgogICBFWFBFQ1RfRVEoY2FwdHVyZV9udHBfdGltZV9tcywg
ZXN0aW1hdG9yXy0+RXN0aW1hdGUocnRwX3RpbWVzdGFtcCkpOwogCiAgIC8vIFJlbW90ZSBzZW5k
cyBjb3JydXB0ZWQgUlRDUCBTUnMKICAgQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwMCk7Ci0g
IFNlbmRSdGNwU3JJbmFjY3VyYXRlbHkoMTAsIDEwKTsKKyAgU2VuZFJ0Y3BTckluYWNjdXJhdGVs
eSgvKm50cF9lcnJvcl9tcz0qLzIsIC8qbmV0d29ya2luZ19kZWxheV9tcz0qLy0xKTsKICAgQWR2
YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwMCk7Ci0gIFNlbmRSdGNwU3JJbmFjY3VyYXRlbHkoLTIw
LCA1KTsKKyAgU2VuZFJ0Y3BTckluYWNjdXJhdGVseSgvKm50cF9lcnJvcl9tcz0qLy0yLCAvKm5l
dHdvcmtpbmdfZGVsYXlfbXM9Ki8xKTsKIAogICAvLyBOZXcgUlRQIHBhY2tldCB0byBlc3RpbWF0
ZSB0aW1lc3RhbXAuCiAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDE1MCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydGNwX25hY2tfc3RhdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX25hY2tfc3RhdHMu
Y2MKaW5kZXggMjRiNzA4NTAyZWU2YzI3NTFhZWViMGMxYjQxZDQzZGMwMzE2NjQ0ZC4uMWQ2NTJk
MGI1YmE3YmM3NTgxYmUwYmY5MjBhYTUxNGE2OGUyYmU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRjcF9uYWNrX3N0YXRzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfbmFja19zdGF0cy5jYwpAQCAt
MTAsNyArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9u
YWNrX3N0YXRzLmgiCiAKLSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90
eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1
YmxpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0LmgKaW5kZXggMTEwMzdjYmQ4MmQ2Mjcz
NzZiY2RhYWI0OTc5MjRkZDUzZGJhNTZkNS4uNDBlNTFlODdhZDMzZDZmMGEwMDQxN2FjZTgwYjJk
MGIwZTFlYmRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC5oCkBAIC0xMSw2ICsxMSwxMCBAQAogI2lmbmRlZiBNT0RVTEVTX1JU
UF9SVENQX1NPVVJDRV9SVENQX1BBQ0tFVF9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NP
VVJDRV9SVENQX1BBQ0tFVF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3Rk
aW50Lmg+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Z1bmN0aW9uX3ZpZXcuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYXBwLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
YXBwLmNjCmluZGV4IDRlMjFiYzkzZTQ4Nzk5MDBhNzk4OTM0NDc2NDY3YzQyMTNlZTk5ZTAuLmVh
ZGQ0ZDljMzUyZjhmZmY0NzNmYTM2ZDE0NTU4YjMzNWRhODgyYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfcGFja2V0L2FwcC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9hcHAuY2MK
QEAgLTEwLDYgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcGFja2V0L2FwcC5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3N0ZGlu
dD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9jb21tb25faGVhZGVyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC9hcHAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2FwcC5oCmluZGV4IDE5YTk3ZTBl
ZDkyMGEzMWE1NGFlMjVkMzdiNjQzNWRlMWI5MDY1ZmYuLmE5NjAyYTgwY2ZiNWE4NzhiOGI1YmNk
MzY5ZjA0NWI4MDk4NDYxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2FwcC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2FwcC5oCkBAIC0xMSw2ICsxMSw5IEBACiAjaWZu
ZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfUEFDS0VUX0FQUF9IXwogI2RlZmluZSBN
T0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVENQX1BBQ0tFVF9BUFBfSF8KIAorI2luY2x1ZGUgPHN0
ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF9wYWNrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYnllLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9w
YWNrZXQvYnllLmNjCmluZGV4IDBlMmViOWU0MWEzZTFkMmMyNzY1MmM1ZTEwNTgwZjYxOTk5OTcz
YTQuLjIzYWMzNWY4NTZiNTM4OTEzM2RkMGZiNTRkOGY3ZTU5NzEzZTNmYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0Y3BfcGFja2V0L2J5ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9i
eWUuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfcGFja2V0L2J5ZS5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8
Y3N0ZGludD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvYnl0ZV9pby5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvZXh0
ZW5kZWRfaml0dGVyX3JlcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2V4dGVuZGVkX2pp
dHRlcl9yZXBvcnQuY2MKaW5kZXggMjdlZDRjY2VmNGY2MzIxYWEyM2U4NjFmZDNkZjJjM2NjNGQ5
MjY1NC4uNWU3ZGFkZDFmNDgyYTExZDM4ZGVhMGJhN2YxNGIxZTRhZDZjNTk3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvZXh0ZW5kZWRfaml0dGVyX3JlcG9ydC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRlZF9qaXR0ZXJfcmVwb3J0LmNjCkBAIC0xMCw2ICsx
MCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9l
eHRlbmRlZF9qaXR0ZXJfcmVwb3J0LmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRlZF9yZXBvcnRzLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF9wYWNrZXQvZXh0ZW5kZWRfcmVwb3J0cy5jYwppbmRleCA1NTEzZjM3ZGJh
MGIxZjM3NGI3YzEzYTIzZjlhYTJjNzZhZjc0MGFjLi4yYjVmOWNhY2Q3MjgyMTM5MmJiODhiMmUz
OTE5MTdjOWIzMmY4YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRl
ZF9yZXBvcnRzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2V4dGVuZGVkX3JlcG9ydHMu
Y2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0Y3BfcGFja2V0L2V4dGVuZGVkX3JlcG9ydHMuaCIKIAorI2luY2x1ZGUgPHZlY3Rvcj4KKwog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9jb21tb25faGVhZGVyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tl
dC9uYWNrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvbmFjay5jYwppbmRleCA2YTRhMGJkYzBl
NDNiYTdjMzQ4ZWZmNzVjMDlmYTM5Zjk4MjFkNTZhLi42ZmU3ZWFkZTYyYjY0NzgwOTZiMmRiYmFk
ZTIzY2IzMjgzNWQ5MWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9uYWNrLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L25hY2suY2MKQEAgLTExLDYgKzExLDcgQEAKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9uYWNrLmgiCiAKICNp
bmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx1dGlsaXR5
PgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcHNmYi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
cHNmYi5oCmluZGV4IGFlNjZhMTcyMzg3ZWNjODZlMTc3ZjEzNTdjMTY2ZTEyMzM5ZGFlYzYuLjQ2
ZWUyOTEyODUwNDYwODViZjQzMzYzY2ZlNWY5NjViYzE2Mjg3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfcGFja2V0L3BzZmIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9wc2ZiLmgK
QEAgLTEyLDYgKzEyLDkgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9Q
QUNLRVRfUFNGQl9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVENQX1BBQ0tF
VF9QU0ZCX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0LmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVjZWl2ZXJf
cmVwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9yZWNlaXZlcl9yZXBvcnQuaAppbmRleCA4
ZjE0M2RhNzJjMDkwMWVmNjNjMGFhZGEyYzI4OWRlYzk0MDU3YTgyLi43NDcwZDFkMmUxMGFiYjcy
Y2RiN2RhZjUzMDRiZjM0NDEyYTgyOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tl
dC9yZWNlaXZlcl9yZXBvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9yZWNlaXZlcl9y
ZXBvcnQuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJD
RV9SVENQX1BBQ0tFVF9SRUNFSVZFUl9SRVBPUlRfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRD
UF9TT1VSQ0VfUlRDUF9QQUNLRVRfUkVDRUlWRVJfUkVQT1JUX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9wYWNrZXQvcmVtYi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3JlbWIuY2MK
aW5kZXggMDI0MDYxMTZmNmU3OTNlNmIwMmI2NDY2ZmE4OTM5MDIyMTY1YjljOS4uM2VkMWZiZGI4
MDNlNjQzNGExZjI1NTg1YmFiYmU0YTU5ZTZhZWNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQvcmVtYi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9yZW1iLmNjCkBAIC0x
MCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3Bh
Y2tldC9yZW1iLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ycnRyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ycnRy
LmgKaW5kZXggYTQ3MGIxYTIxN2M1NTZiNTMwNDg2ZThhODA1ZjRiMmJlYmQ4MWMzMy4uOGViNGNl
NjJhZGVmOGI4NmE4YWQ2ZDlmZDVkN2NkNzU2NjgxMWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRjcF9wYWNrZXQvcnJ0ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3JydHIuaApAQCAt
MTIsNiArMTIsOSBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVENQX1BBQ0tF
VF9SUlRSX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfUEFDS0VUX1JS
VFJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbnRwX3RpbWUuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ydHBmYi5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9wYWNrZXQvcnRwZmIuaAppbmRleCBhMDQwNzQxMWFiMzg4MDBjMDk2YmJiMTZhMTgy
ZmE2ODU5NGQxNGRmLi4yMTk3NzczNmI2MTllNDg3YmU4ZDllOWMwZGFmYzI5ZWQ2NTc2NmNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ydHBmYi5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcGFja2V0L3J0cGZiLmgKQEAgLTEyLDYgKzEyLDkgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBf
UlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRfUlRQRkJfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRD
UF9TT1VSQ0VfUlRDUF9QQUNLRVRfUlRQRkJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2lu
Y2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3BhY2tldC9zZGVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvc2Rlcy5jYwppbmRleCAz
MzdjOGIwNGE4NDg3MDkyZTQ2Y2UwYTM2ODI4ZTQzZjQ0MmNlZDdiLi4wZWY0MzI5MDNkYjU1ZWZm
NDcyMTYzMjQ1NWIwODNjOTQxN2VhODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tl
dC9zZGVzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3NkZXMuY2MKQEAgLTEwLDYgKzEw
LDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3Nk
ZXMuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC90bW1ibi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJuLmNj
CmluZGV4IDRkMzhiM2I2ZGJiMzA5MWQ1ZDI5ZjhjZjAxZWE1ZDVjM2QzYjZlMjguLmY1N2U1NzQ5
YzJkZWQwNWE5Y2ExYmMyZjg2MjBjN2FlMjMxZmNjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcGFja2V0L3RtbWJuLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJuLmNjCkBA
IC0xMCw3ICsxMCw2IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC90bW1ibi5oIgogCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0
ZV9pby5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2Nv
bW1vbl9oZWFkZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1i
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJyLmNjCmluZGV4IGQ4ZjA3M2I4N2YzMDlk
ZjQ2NDliNTY5ZDM5NThiOTdkOTc1NTRhOTcuLjlkYzc0NWU1MDljNDhhMDkwZTgxZjkyZTk4MzA4
MzM5YTFmMzVhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJyLmNjCkBAIC0xMCw3ICsxMCw2IEBACiAKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1ici5oIgogCi0j
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2NvbW1vbl9oZWFkZXIuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRfZmVlZGJhY2suY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRfZmVlZGJhY2suY2MKaW5kZXggNDcwM2QzMTMy
ZWU4NzJiM2I4OTE3ZGFkNjA4NTFjM2I0ODkzYTM1NC4uMjgxNjU1OTRiZWM0Yzk5NWUwOTBhYWJl
Y2RjYmFiYjY2NDc3ODZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdHJhbnNw
b3J0X2ZlZWRiYWNrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RyYW5zcG9ydF9mZWVk
YmFjay5jYwpAQCAtMTEsOSArMTEsMTAgQEAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRfZmVlZGJhY2suaCIKIAogI2luY2x1ZGUgPGFsZ29y
aXRobT4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNpbmNsdWRl
ICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3BhY2tldC9jb21tb25faGVhZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9yZWNlaXZlci5jYwppbmRleCA0OTY2NzU0OTdhZDIzZTNiNWNlY2M0NDExOGY5YmM0
N2M2ODIyNjhjLi4zODNmNzg1ZGZlYTgyMDYyMjUxZDBhNGZjYTcxZTZmYWI5YTI3OGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVj
ZWl2ZXIuY2MKQEAgLTEzMSw2ICsxMzEsNyBAQCBSVENQUmVjZWl2ZXI6OlJUQ1BSZWNlaXZlcigK
ICAgICBSdGNwSW50cmFGcmFtZU9ic2VydmVyKiBydGNwX2ludHJhX2ZyYW1lX29ic2VydmVyLAog
ICAgIFRyYW5zcG9ydEZlZWRiYWNrT2JzZXJ2ZXIqIHRyYW5zcG9ydF9mZWVkYmFja19vYnNlcnZl
ciwKICAgICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2JzZXJ2ZXIqIGJpdHJhdGVfYWxsb2NhdGlv
bl9vYnNlcnZlciwKKyAgICBpbnQgcmVwb3J0X2ludGVydmFsX21zLAogICAgIE1vZHVsZVJ0cFJ0
Y3AqIG93bmVyKQogICAgIDogY2xvY2tfKGNsb2NrKSwKICAgICAgIHJlY2VpdmVyX29ubHlfKHJl
Y2VpdmVyX29ubHkpLApAQCAtMTM5LDYgKzE0MCw3IEBAIFJUQ1BSZWNlaXZlcjo6UlRDUFJlY2Vp
dmVyKAogICAgICAgcnRjcF9pbnRyYV9mcmFtZV9vYnNlcnZlcl8ocnRjcF9pbnRyYV9mcmFtZV9v
YnNlcnZlciksCiAgICAgICB0cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2ZXJfKHRyYW5zcG9ydF9m
ZWVkYmFja19vYnNlcnZlciksCiAgICAgICBiaXRyYXRlX2FsbG9jYXRpb25fb2JzZXJ2ZXJfKGJp
dHJhdGVfYWxsb2NhdGlvbl9vYnNlcnZlciksCisgICAgICByZXBvcnRfaW50ZXJ2YWxfbXNfKHJl
cG9ydF9pbnRlcnZhbF9tcyksCiAgICAgICBtYWluX3NzcmNfKDApLAogICAgICAgcmVtb3RlX3Nz
cmNfKDApLAogICAgICAgcmVtb3RlX3NlbmRlcl9ydHBfdGltZV8oMCksCkBAIC0yODAsNyArMjgy
LDggQEAgUlRDUFJlY2VpdmVyOjpDb25zdW1lUmVjZWl2ZWRYclJlZmVyZW5jZVRpbWVJbmZvKCkg
ewogICBzdGQ6OnZlY3RvcjxydGNwOjpSZWNlaXZlVGltZUluZm8+IGxhc3RfeHJfcnRpczsKICAg
bGFzdF94cl9ydGlzLnJlc2VydmUobGFzdF94cl9ydGlzX3NpemUpOwogCi0gIGNvbnN0IHVpbnQz
Ml90IG5vd19udHAgPSBDb21wYWN0TnRwKGNsb2NrXy0+Q3VycmVudE50cFRpbWUoKSk7CisgIGNv
bnN0IHVpbnQzMl90IG5vd19udHAgPQorICAgICAgQ29tcGFjdE50cChUaW1lTWljcm9zVG9OdHAo
Y2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSkpOwogCiAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGFzdF94cl9ydGlzX3NpemU7ICsraSkgewogICAgIFJydHJJbmZvcm1hdGlvbiYgcnJ0ciA9
IHJlY2VpdmVkX3JydHJzXy5mcm9udCgpOwpAQCAtNDI3LDcgKzQzMCw3IEBAIHZvaWQgUlRDUFJl
Y2VpdmVyOjpIYW5kbGVTZW5kZXJSZXBvcnQoY29uc3QgQ29tbW9uSGVhZGVyJiBydGNwX2Jsb2Nr
LAogCiAgICAgcmVtb3RlX3NlbmRlcl9udHBfdGltZV8gPSBzZW5kZXJfcmVwb3J0Lm50cCgpOwog
ICAgIHJlbW90ZV9zZW5kZXJfcnRwX3RpbWVfID0gc2VuZGVyX3JlcG9ydC5ydHBfdGltZXN0YW1w
KCk7Ci0gICAgbGFzdF9yZWNlaXZlZF9zcl9udHBfID0gY2xvY2tfLT5DdXJyZW50TnRwVGltZSgp
OworICAgIGxhc3RfcmVjZWl2ZWRfc3JfbnRwXyA9IFRpbWVNaWNyb3NUb050cChjbG9ja18tPlRp
bWVJbk1pY3Jvc2Vjb25kcygpKTsKICAgfSBlbHNlIHsKICAgICAvLyBXZSB3aWxsIG9ubHkgc3Rv
cmUgdGhlIHNlbmQgcmVwb3J0IGZyb20gb25lIHNvdXJjZSwgYnV0CiAgICAgLy8gd2Ugd2lsbCBz
dG9yZSBhbGwgdGhlIHJlY2VpdmUgYmxvY2tzLgpAQCAtNTAzLDEwICs1MDYsMTggQEAgdm9pZCBS
VENQUmVjZWl2ZXI6OkhhbmRsZVJlcG9ydEJsb2NrKGNvbnN0IFJlcG9ydEJsb2NrJiByZXBvcnRf
YmxvY2ssCiAgIC8vIElmIG5vIFNSIGhhcyBiZWVuIHJlY2VpdmVkIHlldCwgdGhlIGZpZWxkIGlz
IHNldCB0byB6ZXJvLgogICAvLyBSZWNlaXZlciBydHBfcnRjcCBtb2R1bGUgaXMgbm90IGV4cGVj
dGVkIHRvIGNhbGN1bGF0ZSBydHQgdXNpbmcKICAgLy8gU2VuZGVyIFJlcG9ydHMgZXZlbiBpZiBp
dCBhY2NpZGVudGFsbHkgY2FuLgotICBpZiAoIXJlY2VpdmVyX29ubHlfICYmIHNlbmRfdGltZV9u
dHAgIT0gMCkgeworCisgIC8vIFRPRE8obmlzc2UpOiBVc2UgdGhpcyB3YXkgdG8gZGV0ZXJtaW5l
IHRoZSBSVFQgb25seSB3aGVuIHxyZWNlaXZlcl9vbmx5X3wKKyAgLy8gaXMgZmFsc2UuIEhvd2V2
ZXIsIHRoYXQgY3VycmVudGx5IGJyZWFrcyB0aGUgdGVzdHMgb2YgdGhlCisgIC8vIGdvb2dDYXB0
dXJlU3RhcnROdHBUaW1lTXMgc3RhdCBmb3IgYXVkaW8gcmVjZWl2ZSBzdHJlYW1zLiBUbyBmaXgs
IGVpdGhlcgorICAvLyBkZWxldGUgYWxsIGRlcGVuZGVuY2llcyBvbiBSVFQgbWVhc3VyZW1lbnRz
IGZvciBhdWRpbyByZWNlaXZlIHN0cmVhbXMsIG9yCisgIC8vIGVuc3VyZSB0aGF0IGF1ZGlvIHJl
Y2VpdmUgc3RyZWFtcyB0aGF0IG5lZWQgUlRUIGFuZCBzdGF0cyB0aGF0IGRlcGVuZCBvbiBpdAor
ICAvLyBhcmUgY29uZmlndXJlZCB3aXRoIGFuIGFzc29jaWF0ZWQgYXVkaW8gc2VuZCBzdHJlYW0u
CisgIGlmIChzZW5kX3RpbWVfbnRwICE9IDApIHsKICAgICB1aW50MzJfdCBkZWxheV9udHAgPSBy
ZXBvcnRfYmxvY2suZGVsYXlfc2luY2VfbGFzdF9zcigpOwogICAgIC8vIExvY2FsIE5UUCB0aW1l
LgotICAgIHVpbnQzMl90IHJlY2VpdmVfdGltZV9udHAgPSBDb21wYWN0TnRwKGNsb2NrXy0+Q3Vy
cmVudE50cFRpbWUoKSk7CisgICAgdWludDMyX3QgcmVjZWl2ZV90aW1lX250cCA9CisgICAgICAg
IENvbXBhY3ROdHAoVGltZU1pY3Jvc1RvTnRwKGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkp
KTsKIAogICAgIC8vIFJUVCBpbiAxLygyXjE2KSBzZWNvbmRzLgogICAgIHVpbnQzMl90IHJ0dF9u
dHAgPSByZWNlaXZlX3RpbWVfbnRwIC0gZGVsYXlfbnRwIC0gc2VuZF90aW1lX250cDsKQEAgLTU1
MiwxMiArNTYzLDEyIEBAIFJUQ1BSZWNlaXZlcjo6VG1tYnJJbmZvcm1hdGlvbiogUlRDUFJlY2Vp
dmVyOjpHZXRUbW1ickluZm9ybWF0aW9uKAogICByZXR1cm4gJml0LT5zZWNvbmQ7CiB9CiAKLWJv
b2wgUlRDUFJlY2VpdmVyOjpSdGNwUnJUaW1lb3V0KGludDY0X3QgcnRjcF9pbnRlcnZhbF9tcykg
eworYm9vbCBSVENQUmVjZWl2ZXI6OlJ0Y3BSclRpbWVvdXQoKSB7CiAgIHJ0Yzo6Q3JpdFNjb3Bl
IGxvY2soJnJ0Y3BfcmVjZWl2ZXJfbG9ja18pOwogICBpZiAobGFzdF9yZWNlaXZlZF9yYl9tc18g
PT0gMCkKICAgICByZXR1cm4gZmFsc2U7CiAKLSAgaW50NjRfdCB0aW1lX291dF9tcyA9IGtSclRp
bWVvdXRJbnRlcnZhbHMgKiBydGNwX2ludGVydmFsX21zOworICBpbnQ2NF90IHRpbWVfb3V0X21z
ID0ga1JyVGltZW91dEludGVydmFscyAqIHJlcG9ydF9pbnRlcnZhbF9tc187CiAgIGlmIChjbG9j
a18tPlRpbWVJbk1pbGxpc2Vjb25kcygpID4gbGFzdF9yZWNlaXZlZF9yYl9tc18gKyB0aW1lX291
dF9tcykgewogICAgIC8vIFJlc2V0IHRoZSB0aW1lciB0byBvbmx5IHRyaWdnZXIgb25lIGxvZy4K
ICAgICBsYXN0X3JlY2VpdmVkX3JiX21zXyA9IDA7CkBAIC01NjYsMTIgKzU3NywxMiBAQCBib29s
IFJUQ1BSZWNlaXZlcjo6UnRjcFJyVGltZW91dChpbnQ2NF90IHJ0Y3BfaW50ZXJ2YWxfbXMpIHsK
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJUQ1BSZWNlaXZlcjo6UnRjcFJyU2VxdWVuY2VO
dW1iZXJUaW1lb3V0KGludDY0X3QgcnRjcF9pbnRlcnZhbF9tcykgeworYm9vbCBSVENQUmVjZWl2
ZXI6OlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dCgpIHsKICAgcnRjOjpDcml0U2NvcGUgbG9j
aygmcnRjcF9yZWNlaXZlcl9sb2NrXyk7CiAgIGlmIChsYXN0X2luY3JlYXNlZF9zZXF1ZW5jZV9u
dW1iZXJfbXNfID09IDApCiAgICAgcmV0dXJuIGZhbHNlOwogCi0gIGludDY0X3QgdGltZV9vdXRf
bXMgPSBrUnJUaW1lb3V0SW50ZXJ2YWxzICogcnRjcF9pbnRlcnZhbF9tczsKKyAgaW50NjRfdCB0
aW1lX291dF9tcyA9IGtSclRpbWVvdXRJbnRlcnZhbHMgKiByZXBvcnRfaW50ZXJ2YWxfbXNfOwog
ICBpZiAoY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSA+CiAgICAgICBsYXN0X2luY3JlYXNl
ZF9zZXF1ZW5jZV9udW1iZXJfbXNfICsgdGltZV9vdXRfbXMpIHsKICAgICAvLyBSZXNldCB0aGUg
dGltZXIgdG8gb25seSB0cmlnZ2VyIG9uZSBsb2cuCkBAIC03MjAsNyArNzMxLDggQEAgdm9pZCBS
VENQUmVjZWl2ZXI6OkhhbmRsZVhyKGNvbnN0IENvbW1vbkhlYWRlciYgcnRjcF9ibG9jaywKIHZv
aWQgUlRDUFJlY2VpdmVyOjpIYW5kbGVYclJlY2VpdmVSZWZlcmVuY2VUaW1lKHVpbnQzMl90IHNl
bmRlcl9zc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjcDo6UnJ0ciYgcnJ0cikgewogICB1aW50MzJfdCByZWNlaXZlZF9yZW1vdGVf
bWlkX250cF90aW1lID0gQ29tcGFjdE50cChycnRyLm50cCgpKTsKLSAgdWludDMyX3QgbG9jYWxf
cmVjZWl2ZV9taWRfbnRwX3RpbWUgPSBDb21wYWN0TnRwKGNsb2NrXy0+Q3VycmVudE50cFRpbWUo
KSk7CisgIHVpbnQzMl90IGxvY2FsX3JlY2VpdmVfbWlkX250cF90aW1lID0KKyAgICAgIENvbXBh
Y3ROdHAoVGltZU1pY3Jvc1RvTnRwKGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkpKTsKIAog
ICBhdXRvIGl0ID0gcmVjZWl2ZWRfcnJ0cnNfc3NyY19pdF8uZmluZChzZW5kZXJfc3NyYyk7CiAg
IGlmIChpdCAhPSByZWNlaXZlZF9ycnRyc19zc3JjX2l0Xy5lbmQoKSkgewpAQCAtNzU0LDcgKzc2
Niw3IEBAIHZvaWQgUlRDUFJlY2VpdmVyOjpIYW5kbGVYckRscnJSZXBvcnRCbG9jayhjb25zdCBy
dGNwOjpSZWNlaXZlVGltZUluZm8mIHJ0aSkgewogICAgIHJldHVybjsKIAogICB1aW50MzJfdCBk
ZWxheV9udHAgPSBydGkuZGVsYXlfc2luY2VfbGFzdF9ycjsKLSAgdWludDMyX3Qgbm93X250cCA9
IENvbXBhY3ROdHAoY2xvY2tfLT5DdXJyZW50TnRwVGltZSgpKTsKKyAgdWludDMyX3Qgbm93X250
cCA9IENvbXBhY3ROdHAoVGltZU1pY3Jvc1RvTnRwKGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRz
KCkpKTsKIAogICB1aW50MzJfdCBydHRfbnRwID0gbm93X250cCAtIGRlbGF5X250cCAtIHNlbmRf
dGltZV9udHA7CiAgIHhyX3JyX3J0dF9tc18gPSBDb21wYWN0TnRwUnR0VG9NcyhydHRfbnRwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVjZWl2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVj
ZWl2ZXIuaAppbmRleCBhODYzY2FlZmY3YjY5ZTZjOTdiMDM0ZWI3MzA2MDEzZTE4NzEzYjMxLi5i
ZTRjNzBlM2NlYTQ5MTg2ZTAwOWJkMTdmNmQwY2Q0ZTFiNDQ4NjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3JlY2VpdmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZlci5oCkBAIC0x
Nyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydGNwX3N0YXRpc3RpY3MuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfbmFja19zdGF0cy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2RscnIuaCIKQEAgLTU2LDYgKzU3
LDcgQEAgY2xhc3MgUlRDUFJlY2VpdmVyIHsKICAgICAgICAgICAgICAgIFJ0Y3BJbnRyYUZyYW1l
T2JzZXJ2ZXIqIHJ0Y3BfaW50cmFfZnJhbWVfb2JzZXJ2ZXIsCiAgICAgICAgICAgICAgICBUcmFu
c3BvcnRGZWVkYmFja09ic2VydmVyKiB0cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2ZXIsCiAgICAg
ICAgICAgICAgICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2JzZXJ2ZXIqIGJpdHJhdGVfYWxsb2Nh
dGlvbl9vYnNlcnZlciwKKyAgICAgICAgICAgICAgIGludCByZXBvcnRfaW50ZXJ2YWxfbXMsCiAg
ICAgICAgICAgICAgICBNb2R1bGVSdHBSdGNwKiBvd25lcik7CiAgIHZpcnR1YWwgflJUQ1BSZWNl
aXZlcigpOwogCkBAIC05NCwxMyArOTYsMTMgQEAgY2xhc3MgUlRDUFJlY2VpdmVyIHsKIAogICAv
LyBSZXR1cm5zIHRydWUgaWYgd2UgaGF2ZW4ndCByZWNlaXZlZCBhbiBSVENQIFJSIGZvciBzZXZl
cmFsIFJUQ1AKICAgLy8gaW50ZXJ2YWxzLCBidXQgb25seSB0cmlnZ2VycyB0cnVlIG9uY2UuCi0g
IGJvb2wgUnRjcFJyVGltZW91dChpbnQ2NF90IHJ0Y3BfaW50ZXJ2YWxfbXMpOworICBib29sIFJ0
Y3BSclRpbWVvdXQoKTsKIAogICAvLyBSZXR1cm5zIHRydWUgaWYgd2UgaGF2ZW4ndCByZWNlaXZl
ZCBhbiBSVENQIFJSIHRlbGxpbmcgdGhlIHJlY2VpdmUgc2lkZQogICAvLyBoYXMgbm90IHJlY2Vp
dmVkIFJUUCBwYWNrZXRzIGZvciB0b28gbG9uZywgaS5lLiBleHRlbmRlZCBoaWdoZXN0IHNlcXVl
bmNlCiAgIC8vIG51bWJlciBoYXNuJ3QgaW5jcmVhc2VkIGZvciBzZXZlcmFsIFJUQ1AgaW50ZXJ2
YWxzLiBUaGUgZnVuY3Rpb24gb25seQogICAvLyByZXR1cm5zIHRydWUgb25jZSB1bnRpbCBhIG5l
dyBSUiBpcyByZWNlaXZlZC4KLSAgYm9vbCBSdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoaW50
NjRfdCBydGNwX2ludGVydmFsX21zKTsKKyAgYm9vbCBSdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVv
dXQoKTsKIAogICBzdGQ6OnZlY3RvcjxydGNwOjpUbW1iSXRlbT4gVG1tYnJSZWNlaXZlZCgpOwog
ICAvLyBSZXR1cm4gdHJ1ZSBpZiBuZXcgYmFuZHdpZHRoIHNob3VsZCBiZSBzZXQuCkBAIC0yMTUs
NiArMjE3LDcgQEAgY2xhc3MgUlRDUFJlY2VpdmVyIHsKICAgUnRjcEludHJhRnJhbWVPYnNlcnZl
ciogY29uc3QgcnRjcF9pbnRyYV9mcmFtZV9vYnNlcnZlcl87CiAgIFRyYW5zcG9ydEZlZWRiYWNr
T2JzZXJ2ZXIqIGNvbnN0IHRyYW5zcG9ydF9mZWVkYmFja19vYnNlcnZlcl87CiAgIFZpZGVvQml0
cmF0ZUFsbG9jYXRpb25PYnNlcnZlciogY29uc3QgYml0cmF0ZV9hbGxvY2F0aW9uX29ic2VydmVy
XzsKKyAgY29uc3QgaW50IHJlcG9ydF9pbnRlcnZhbF9tc187CiAKICAgcnRjOjpDcml0aWNhbFNl
Y3Rpb24gcnRjcF9yZWNlaXZlcl9sb2NrXzsKICAgdWludDMyX3QgbWFpbl9zc3JjXyBSVENfR1VB
UkRFRF9CWShydGNwX3JlY2VpdmVyX2xvY2tfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
cmVjZWl2ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyX3VuaXR0ZXN0LmNj
CmluZGV4IGM3NzA4ZjBiZGRkOTdjYWE0YmJkNjRkZjQ4MzYwZjY4NjYyZmYwNGEuLmE1NzZmZGM1
ZTlhNTc2MzkxOTg1ZmU4NDM3OWQ4YzE0MzIwNGRiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcmVjZWl2ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZlcl91bml0
dGVzdC5jYwpAQCAtMTA3LDYgKzEwNyw4IEBAIGNvbnN0ZXhwciB1aW50MzJfdCBrUmVjZWl2ZXJF
eHRyYVNzcmMgPSAweDEyMzQ1Njc7CiBjb25zdGV4cHIgdWludDMyX3Qga05vdFRvVXNTc3JjID0g
MHg2NTQzMjE7CiBjb25zdGV4cHIgdWludDMyX3Qga1Vua25vd25TZW5kZXJTc3JjID0gMHg1NDMy
MTsKIAorY29uc3RleHByIGludDY0X3Qga1J0Y3BJbnRlcnZhbE1zID0gMTAwMDsKKwogfSAgLy8g
bmFtZXNwYWNlCiAKIGNsYXNzIFJ0Y3BSZWNlaXZlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKQEAgLTEyMCw2ICsxMjIsNyBAQCBjbGFzcyBSdGNwUmVjZWl2ZXJUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICZpbnRyYV9mcmFtZV9v
YnNlcnZlcl8sCiAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFuc3BvcnRfZmVlZGJhY2tfb2Jz
ZXJ2ZXJfLAogICAgICAgICAgICAgICAgICAgICAgICAmYml0cmF0ZV9hbGxvY2F0aW9uX29ic2Vy
dmVyXywKKyAgICAgICAgICAgICAgICAgICAgICAga1J0Y3BJbnRlcnZhbE1zLAogICAgICAgICAg
ICAgICAgICAgICAgICAmcnRwX3J0Y3BfaW1wbF8pIHt9CiAgIHZvaWQgU2V0VXAoKSB7CiAgICAg
c3RkOjpzZXQ8dWludDMyX3Q+IHNzcmNzID0ge2tSZWNlaXZlck1haW5Tc3JjLCBrUmVjZWl2ZXJF
eHRyYVNzcmN9OwpAQCAtMjA4LDcgKzIxMSw4IEBAIFRFU1RfRihSdGNwUmVjZWl2ZXJUZXN0LCBJ
bmplY3RTclBhY2tldENhbGN1bGF0ZXNSVFQpIHsKICAgRVhQRUNUX0VRKAogICAgICAgLTEsIHJ0
Y3BfcmVjZWl2ZXJfLlJUVChrU2VuZGVyU3NyYywgJnJ0dF9tcywgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0cikpOwogCi0gIHVpbnQzMl90IHNlbnRfbnRwID0gQ29tcGFjdE50cChzeXN0ZW1fY2xv
Y2tfLkN1cnJlbnROdHBUaW1lKCkpOworICB1aW50MzJfdCBzZW50X250cCA9CisgICAgICBDb21w
YWN0TnRwKFRpbWVNaWNyb3NUb050cChzeXN0ZW1fY2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25kcygp
KSk7CiAgIHN5c3RlbV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa1J0dE1zICsga0Rl
bGF5TXMpOwogCiAgIHJ0Y3A6OlNlbmRlclJlcG9ydCBzcjsKQEAgLTIzOCw3ICsyNDIsOCBAQCBU
RVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgSW5qZWN0U3JQYWNrZXRDYWxjdWxhdGVzTmVnYXRpdmVS
VFRBc09uZSkgewogICBFWFBFQ1RfRVEoCiAgICAgICAtMSwgcnRjcF9yZWNlaXZlcl8uUlRUKGtT
ZW5kZXJTc3JjLCAmcnR0X21zLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7CiAKLSAgdWlu
dDMyX3Qgc2VudF9udHAgPSBDb21wYWN0TnRwKHN5c3RlbV9jbG9ja18uQ3VycmVudE50cFRpbWUo
KSk7CisgIHVpbnQzMl90IHNlbnRfbnRwID0KKyAgICAgIENvbXBhY3ROdHAoVGltZU1pY3Jvc1Rv
TnRwKHN5c3RlbV9jbG9ja18uVGltZUluTWljcm9zZWNvbmRzKCkpKTsKICAgc3lzdGVtX2Nsb2Nr
Xy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrUnR0TXMgKyBrRGVsYXlNcyk7CiAKICAgcnRjcDo6
U2VuZGVyUmVwb3J0IHNyOwpAQCAtMjY2LDcgKzI3MSw4IEBAIFRFU1RfRigKICAgY29uc3QgdWlu
dDMyX3Qga0RlbGF5TnRwID0gMTIzMDAwOwogICBjb25zdCBpbnQ2NF90IGtEZWxheU1zID0gQ29t
cGFjdE50cFJ0dFRvTXMoa0RlbGF5TnRwKTsKIAotICB1aW50MzJfdCBzZW50X250cCA9IENvbXBh
Y3ROdHAoc3lzdGVtX2Nsb2NrXy5DdXJyZW50TnRwVGltZSgpKTsKKyAgdWludDMyX3Qgc2VudF9u
dHAgPQorICAgICAgQ29tcGFjdE50cChUaW1lTWljcm9zVG9OdHAoc3lzdGVtX2Nsb2NrXy5UaW1l
SW5NaWNyb3NlY29uZHMoKSkpOwogICBzeXN0ZW1fY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNv
bmRzKGtSdHRNcyArIGtEZWxheU1zKTsKIAogICBydGNwOjpTZW5kZXJSZXBvcnQgc3I7CkBAIC03
MzcsNyArNzQzLDggQEAgVEVTVF9GKFJ0Y3BSZWNlaXZlclRlc3QsIEluamVjdEV4dGVuZGVkUmVw
b3J0c0RscnJQYWNrZXRXaXRoU3ViQmxvY2spIHsKIAogICBJbmplY3RSdGNwUGFja2V0KHhyKTsK
IAotICB1aW50MzJfdCBjb21wYWN0X250cF9ub3cgPSBDb21wYWN0TnRwKHN5c3RlbV9jbG9ja18u
Q3VycmVudE50cFRpbWUoKSk7CisgIHVpbnQzMl90IGNvbXBhY3RfbnRwX25vdyA9CisgICAgICBD
b21wYWN0TnRwKFRpbWVNaWNyb3NUb050cChzeXN0ZW1fY2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25k
cygpKSk7CiAgIEVYUEVDVF9UUlVFKHJ0Y3BfcmVjZWl2ZXJfLkdldEFuZFJlc2V0WHJSclJ0dCgm
cnR0X21zKSk7CiAgIHVpbnQzMl90IHJ0dF9udHAgPSBjb21wYWN0X250cF9ub3cgLSBrRGVsYXkg
LSBrTGFzdFJSOwogICBFWFBFQ1RfTkVBUihDb21wYWN0TnRwUnR0VG9NcyhydHRfbnRwKSwgcnR0
X21zLCAxKTsKQEAgLTc1Niw3ICs3NjMsOCBAQCBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgSW5q
ZWN0RXh0ZW5kZWRSZXBvcnRzRGxyclBhY2tldFdpdGhNdWx0aXBsZVN1YkJsb2NrcykgewogCiAg
IEluamVjdFJ0Y3BQYWNrZXQoeHIpOwogCi0gIHVpbnQzMl90IGNvbXBhY3RfbnRwX25vdyA9IENv
bXBhY3ROdHAoc3lzdGVtX2Nsb2NrXy5DdXJyZW50TnRwVGltZSgpKTsKKyAgdWludDMyX3QgY29t
cGFjdF9udHBfbm93ID0KKyAgICAgIENvbXBhY3ROdHAoVGltZU1pY3Jvc1RvTnRwKHN5c3RlbV9j
bG9ja18uVGltZUluTWljcm9zZWNvbmRzKCkpKTsKICAgaW50NjRfdCBydHRfbXMgPSAwOwogICBF
WFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5HZXRBbmRSZXNldFhyUnJSdHQoJnJ0dF9tcykpOwog
ICB1aW50MzJfdCBydHRfbnRwID0gY29tcGFjdF9udHBfbm93IC0ga0RlbGF5IC0ga0xhc3RSUjsK
QEAgLTgxOCw3ICs4MjYsNyBAQCBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgUnR0Q2FsY3VsYXRl
ZEFmdGVyRXh0ZW5kZWRSZXBvcnRzRGxycikgewogICBjb25zdCB1aW50MzJfdCBrRGVsYXlOdHAg
PSByYW5kLlJhbmQoMCwgMHg3ZmZmZmZmZik7CiAgIGNvbnN0IGludDY0X3Qga0RlbGF5TXMgPSBD
b21wYWN0TnRwUnR0VG9NcyhrRGVsYXlOdHApOwogICBydGNwX3JlY2VpdmVyXy5TZXRSdGNwWHJS
cnRyU3RhdHVzKHRydWUpOwotICBOdHBUaW1lIG5vdyA9IHN5c3RlbV9jbG9ja18uQ3VycmVudE50
cFRpbWUoKTsKKyAgTnRwVGltZSBub3cgPSBUaW1lTWljcm9zVG9OdHAoc3lzdGVtX2Nsb2NrXy5U
aW1lSW5NaWNyb3NlY29uZHMoKSk7CiAgIHVpbnQzMl90IHNlbnRfbnRwID0gQ29tcGFjdE50cChu
b3cpOwogICBzeXN0ZW1fY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtSdHRNcyArIGtE
ZWxheU1zKTsKIApAQCAtODM4LDcgKzg0Niw3IEBAIFRFU1RfRihSdGNwUmVjZWl2ZXJUZXN0LCBY
ckRscnJDYWxjdWxhdGVzTmVnYXRpdmVSdHRBc09uZSkgewogICBjb25zdCBpbnQ2NF90IGtSdHRN
cyA9IHJhbmQuUmFuZCgtMzYwMCAqIDEwMDAsIC0xKTsKICAgY29uc3QgdWludDMyX3Qga0RlbGF5
TnRwID0gcmFuZC5SYW5kKDAsIDB4N2ZmZmZmZmYpOwogICBjb25zdCBpbnQ2NF90IGtEZWxheU1z
ID0gQ29tcGFjdE50cFJ0dFRvTXMoa0RlbGF5TnRwKTsKLSAgTnRwVGltZSBub3cgPSBzeXN0ZW1f
Y2xvY2tfLkN1cnJlbnROdHBUaW1lKCk7CisgIE50cFRpbWUgbm93ID0gVGltZU1pY3Jvc1RvTnRw
KHN5c3RlbV9jbG9ja18uVGltZUluTWljcm9zZWNvbmRzKCkpOwogICB1aW50MzJfdCBzZW50X250
cCA9IENvbXBhY3ROdHAobm93KTsKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vj
b25kcyhrUnR0TXMgKyBrRGVsYXlNcyk7CiAgIHJ0Y3BfcmVjZWl2ZXJfLlNldFJ0Y3BYclJydHJT
dGF0dXModHJ1ZSk7CkBAIC05MzYsMTMgKzk0NCwxMiBAQCBURVNUX0YoUnRjcFJlY2VpdmVyVGVz
dCwgU3RvcmVzTGFzdFJlY2VpdmVkUnJ0clBlclNzcmMpIHsKIH0KIAogVEVTVF9GKFJ0Y3BSZWNl
aXZlclRlc3QsIFJlY2VpdmVSZXBvcnRUaW1lb3V0KSB7Ci0gIGNvbnN0IGludDY0X3Qga1J0Y3BJ
bnRlcnZhbE1zID0gMTAwMDsKICAgY29uc3QgdWludDE2X3Qga1NlcXVlbmNlTnVtYmVyID0gMTIz
NDsKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygzICoga1J0Y3BJbnRl
cnZhbE1zKTsKIAogICAvLyBObyBSUiByZWNlaXZlZCwgc2hvdWxkbid0IHRyaWdnZXIgYSB0aW1l
b3V0LgotICBFWFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dChrUnRjcElu
dGVydmFsTXMpKTsKLSAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNl
TnVtYmVyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKKyAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVj
ZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoKSk7CisgIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5S
dGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoKSk7CiAKICAgLy8gQWRkIGEgUlIgYW5kIGFkdmFu
Y2UgdGhlIGNsb2NrIGp1c3QgZW5vdWdoIHRvIG5vdCB0cmlnZ2VyIGEgdGltZW91dC4KICAgcnRj
cDo6UmVwb3J0QmxvY2sgcmIxOwpAQCAtOTU3LDggKzk2NCw4IEBAIFRFU1RfRihSdGNwUmVjZWl2
ZXJUZXN0LCBSZWNlaXZlUmVwb3J0VGltZW91dCkgewogICBJbmplY3RSdGNwUGFja2V0KHJyMSk7
CiAKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygzICoga1J0Y3BJbnRl
cnZhbE1zIC0gMSk7Ci0gIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0
KGtSdGNwSW50ZXJ2YWxNcykpOwotICBFWFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRjcFJy
U2VxdWVuY2VOdW1iZXJUaW1lb3V0KGtSdGNwSW50ZXJ2YWxNcykpOworICBFWFBFQ1RfRkFMU0Uo
cnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVj
ZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dCgpKTsKIAogICAvLyBBZGQgYSBSUiB3
aXRoIHRoZSBzYW1lIGV4dGVuZGVkIG1heCBhcyB0aGUgcHJldmlvdXMgUlIgdG8gdHJpZ2dlciBh
CiAgIC8vIHNlcXVlbmNlIG51bWJlciB0aW1lb3V0LCBidXQgbm90IGEgUlIgdGltZW91dC4KQEAg
LTk2NywxNyArOTc0LDE3IEBAIFRFU1RfRihSdGNwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlUmVwb3J0
VGltZW91dCkgewogICBJbmplY3RSdGNwUGFja2V0KHJyMSk7CiAKICAgc3lzdGVtX2Nsb2NrXy5B
ZHZhbmNlVGltZU1pbGxpc2Vjb25kcygyKTsKLSAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJf
LlJ0Y3BSclRpbWVvdXQoa1J0Y3BJbnRlcnZhbE1zKSk7Ci0gIEVYUEVDVF9UUlVFKHJ0Y3BfcmVj
ZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKKyAg
RVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoKSk7CisgIEVYUEVDVF9U
UlVFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dCgpKTsKIAogICAv
LyBBZHZhbmNlIGNsb2NrIGVub3VnaCB0byB0cmlnZ2VyIGFuIFJSIHRpbWVvdXQgdG9vLgogICBz
eXN0ZW1fY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDMgKiBrUnRjcEludGVydmFsTXMp
OwotICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KGtSdGNwSW50ZXJ2
YWxNcykpOworICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KCkpOwog
CiAgIC8vIFdlIHNob3VsZCBvbmx5IGdldCBvbmUgdGltZW91dCBldmVuIHRob3VnaCB3ZSBzdGls
bCBoYXZlbid0IHJlY2VpdmVkIGEgbmV3CiAgIC8vIFJSLgotICBFWFBFQ1RfRkFMU0UocnRjcF9y
ZWNlaXZlcl8uUnRjcFJyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKLSAgRVhQRUNUX0ZBTFNF
KHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dChrUnRjcEludGVydmFs
TXMpKTsKKyAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoKSk7Cisg
IEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQo
KSk7CiAKICAgLy8gQWRkIGEgbmV3IFJSIHdpdGggaW5jcmVhc2Ugc2VxdWVuY2UgbnVtYmVyIHRv
IHJlc2V0IHRpbWVycy4KICAgcnRjcDo6UmVwb3J0QmxvY2sgcmIyOwpAQCAtOTkxLDggKzk5OCw4
IEBAIFRFU1RfRihSdGNwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlUmVwb3J0VGltZW91dCkgewogICBF
WFBFQ1RfQ0FMTChiYW5kd2lkdGhfb2JzZXJ2ZXJfLCBPblJlY2VpdmVkUnRjcFJlY2VpdmVyUmVw
b3J0KF8sIF8sIF8pKTsKICAgSW5qZWN0UnRjcFBhY2tldChycjIpOwogCi0gIEVYUEVDVF9GQUxT
RShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KGtSdGNwSW50ZXJ2YWxNcykpOwotICBFWFBF
Q1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRjcFJyU2VxdWVuY2VOdW1iZXJUaW1lb3V0KGtSdGNw
SW50ZXJ2YWxNcykpOworICBFWFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91
dCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVy
VGltZW91dCgpKTsKIAogICAvLyBWZXJpZnkgd2UgY2FuIGdldCBhIHRpbWVvdXQgYWdhaW4gb25j
ZSB3ZSd2ZSByZWNlaXZlZCBuZXcgUlIuCiAgIHN5c3RlbV9jbG9ja18uQWR2YW5jZVRpbWVNaWxs
aXNlY29uZHMoMiAqIGtSdGNwSW50ZXJ2YWxNcyk7CkBAIC0xMDAxLDExICsxMDA4LDExIEBAIFRF
U1RfRihSdGNwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlUmVwb3J0VGltZW91dCkgewogICBJbmplY3RS
dGNwUGFja2V0KHJyMik7CiAKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25k
cyhrUnRjcEludGVydmFsTXMgKyAxKTsKLSAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0
Y3BSclRpbWVvdXQoa1J0Y3BJbnRlcnZhbE1zKSk7Ci0gIEVYUEVDVF9UUlVFKHJ0Y3BfcmVjZWl2
ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKKyAgRVhQ
RUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoKSk7CisgIEVYUEVDVF9UUlVF
KHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dCgpKTsKIAogICBzeXN0
ZW1fY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDIgKiBrUnRjcEludGVydmFsTXMpOwot
ICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KGtSdGNwSW50ZXJ2YWxN
cykpOworICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KCkpOwogfQog
CiBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgVG1tYnJSZWNlaXZlZFdpdGhOb0luY29taW5nUGFj
a2V0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3Bfc2VuZGVyLmNjCmluZGV4IGJmZGRjNDIyZjAxMjhiZTI3ZmNjZDE4ODY5MGExOGIyYzBmZDQy
NWMuLjI1ODE0ODc5MjdiZjg0MDk0ZWJmY2YwZGU2ZGViNTk0MzI5MmZhMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0Y3Bfc2VuZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bfc2VuZGVyLmNjCkBA
IC0xMCw3ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3NlbmRlci5oIgogCi0jaW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBtZW1jcHkKKyNpbmNsdWRlIDxz
dHJpbmcuaD4gICAvLyBtZW1jcHkKKyNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBzdGQ6Om1pbgog
CiAjaW5jbHVkZSA8dXRpbGl0eT4KIApAQCAtOTksMTYgKzEwMCwxNiBAQCBjbGFzcyBSVENQU2Vu
ZGVyOjpSdGNwQ29udGV4dCB7CiAgIFJ0Y3BDb250ZXh0KGNvbnN0IEZlZWRiYWNrU3RhdGUmIGZl
ZWRiYWNrX3N0YXRlLAogICAgICAgICAgICAgICBpbnQzMl90IG5hY2tfc2l6ZSwKICAgICAgICAg
ICAgICAgY29uc3QgdWludDE2X3QqIG5hY2tfbGlzdCwKLSAgICAgICAgICAgICAgTnRwVGltZSBu
b3cpCisgICAgICAgICAgICAgIGludDY0X3Qgbm93X3VzKQogICAgICAgOiBmZWVkYmFja19zdGF0
ZV8oZmVlZGJhY2tfc3RhdGUpLAogICAgICAgICBuYWNrX3NpemVfKG5hY2tfc2l6ZSksCiAgICAg
ICAgIG5hY2tfbGlzdF8obmFja19saXN0KSwKLSAgICAgICAgbm93Xyhub3cpIHt9CisgICAgICAg
IG5vd191c18obm93X3VzKSB7fQogCiAgIGNvbnN0IEZlZWRiYWNrU3RhdGUmIGZlZWRiYWNrX3N0
YXRlXzsKICAgY29uc3QgaW50MzJfdCBuYWNrX3NpemVfOwogICBjb25zdCB1aW50MTZfdCogbmFj
a19saXN0XzsKLSAgY29uc3QgTnRwVGltZSBub3dfOworICBjb25zdCBpbnQ2NF90IG5vd191c187
CiB9OwogCiBSVENQU2VuZGVyOjpSVENQU2VuZGVyKApAQCAtMTE4LDE1ICsxMTksMTQgQEAgUlRD
UFNlbmRlcjo6UlRDUFNlbmRlcigKICAgICBSdGNwUGFja2V0VHlwZUNvdW50ZXJPYnNlcnZlciog
cGFja2V0X3R5cGVfY291bnRlcl9vYnNlcnZlciwKICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9n
LAogICAgIFRyYW5zcG9ydCogb3V0Z29pbmdfdHJhbnNwb3J0LAotICAgIFJ0Y3BJbnRlcnZhbENv
bmZpZyBpbnRlcnZhbF9jb25maWcpCisgICAgaW50IHJlcG9ydF9pbnRlcnZhbF9tcykKICAgICA6
IGF1ZGlvXyhhdWRpbyksCiAgICAgICBjbG9ja18oY2xvY2spLAogICAgICAgcmFuZG9tXyhjbG9j
a18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSwKICAgICAgIG1ldGhvZF8oUnRjcE1vZGU6OmtPZmYp
LAogICAgICAgZXZlbnRfbG9nXyhldmVudF9sb2cpLAogICAgICAgdHJhbnNwb3J0XyhvdXRnb2lu
Z190cmFuc3BvcnQpLAotICAgICAgaW50ZXJ2YWxfY29uZmlnXyhpbnRlcnZhbF9jb25maWcpLAot
ICAgICAgdXNpbmdfbmFja18oZmFsc2UpLAorICAgICAgcmVwb3J0X2ludGVydmFsX21zXyhyZXBv
cnRfaW50ZXJ2YWxfbXMpLAogICAgICAgc2VuZGluZ18oZmFsc2UpLAogICAgICAgbmV4dF90aW1l
X3RvX3NlbmRfcnRjcF8oMCksCiAgICAgICB0aW1lc3RhbXBfb2Zmc2V0XygwKSwKQEAgLTE1MSw3
ICsxNTEsOCBAQCBSVENQU2VuZGVyOjpSVENQU2VuZGVyKAogCiAgICAgICB4cl9zZW5kX3JlY2Vp
dmVyX3JlZmVyZW5jZV90aW1lX2VuYWJsZWRfKGZhbHNlKSwKICAgICAgIHBhY2tldF90eXBlX2Nv
dW50ZXJfb2JzZXJ2ZXJfKHBhY2tldF90eXBlX2NvdW50ZXJfb2JzZXJ2ZXIpLAotICAgICAgc2Vu
ZF92aWRlb19iaXRyYXRlX2FsbG9jYXRpb25fKGZhbHNlKSB7CisgICAgICBzZW5kX3ZpZGVvX2Jp
dHJhdGVfYWxsb2NhdGlvbl8oZmFsc2UpLAorICAgICAgbGFzdF9wYXlsb2FkX3R5cGVfKC0xKSB7
CiAgIFJUQ19EQ0hFQ0sodHJhbnNwb3J0XyAhPSBudWxscHRyKTsKIAogICBidWlsZGVyc19ba1J0
Y3BTcl0gPSAmUlRDUFNlbmRlcjo6QnVpbGRTUjsKQEAgLTE4MCw5ICsxODEsOCBAQCB2b2lkIFJU
Q1BTZW5kZXI6OlNldFJUQ1BTdGF0dXMoUnRjcE1vZGUgbmV3X21ldGhvZCkgewogCiAgIGlmICht
ZXRob2RfID09IFJ0Y3BNb2RlOjprT2ZmICYmIG5ld19tZXRob2QgIT0gUnRjcE1vZGU6OmtPZmYp
IHsKICAgICAvLyBXaGVuIHN3aXRjaGluZyBvbiwgcmVzY2hlZHVsZSB0aGUgbmV4dCBwYWNrZXQK
LSAgICBpbnQ2NF90IGludGVydmFsX21zID0gYXVkaW9fID8gaW50ZXJ2YWxfY29uZmlnXy5hdWRp
b19pbnRlcnZhbF9tcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRlcnZh
bF9jb25maWdfLnZpZGVvX2ludGVydmFsX21zOwotICAgIG5leHRfdGltZV90b19zZW5kX3J0Y3Bf
ID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSArIChpbnRlcnZhbF9tcyAvIDIpOworICAg
IG5leHRfdGltZV90b19zZW5kX3J0Y3BfID0KKyAgICAgICAgY2xvY2tfLT5UaW1lSW5NaWxsaXNl
Y29uZHMoKSArIChyZXBvcnRfaW50ZXJ2YWxfbXNfIC8gMik7CiAgIH0KICAgbWV0aG9kXyA9IG5l
d19tZXRob2Q7CiB9CkBAIC0yNTQsOCArMjU0LDE0IEBAIHZvaWQgUlRDUFNlbmRlcjo6U2V0VGlt
ZXN0YW1wT2Zmc2V0KHVpbnQzMl90IHRpbWVzdGFtcF9vZmZzZXQpIHsKIH0KIAogdm9pZCBSVENQ
U2VuZGVyOjpTZXRMYXN0UnRwVGltZSh1aW50MzJfdCBydHBfdGltZXN0YW1wLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGNhcHR1cmVfdGltZV9tcykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGNhcHR1cmVfdGltZV9tcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50OF90IHBheWxvYWRfdHlwZSkgewogICBydGM6
OkNyaXRTY29wZSBsb2NrKCZjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2VuZGVyXyk7CisgIC8vIEZv
ciBjb21wYXRpYmlsaXR5IHdpdGggY2xpZW50cyB3aG8gZG9uJ3Qgc2V0IHBheWxvYWQgdHlwZSBj
b3JyZWN0bHkgb24gYWxsCisgIC8vIGNhbGxzLgorICBpZiAocGF5bG9hZF90eXBlICE9IC0xKSB7
CisgICAgbGFzdF9wYXlsb2FkX3R5cGVfID0gcGF5bG9hZF90eXBlOworICB9CiAgIGxhc3RfcnRw
X3RpbWVzdGFtcF8gPSBydHBfdGltZXN0YW1wOwogICBpZiAoY2FwdHVyZV90aW1lX21zIDwgMCkg
ewogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBnZXQgYSBjYXB0dXJlIHRpbWUgZnJvbSBWb2lj
ZUVuZ2luZS4KQEAgLTI2NSw2ICsyNzEsMTEgQEAgdm9pZCBSVENQU2VuZGVyOjpTZXRMYXN0UnRw
VGltZSh1aW50MzJfdCBydHBfdGltZXN0YW1wLAogICB9CiB9CiAKK3ZvaWQgUlRDUFNlbmRlcjo6
U2V0UnRwQ2xvY2tSYXRlKGludDhfdCBwYXlsb2FkX3R5cGUsIGludCBydHBfY2xvY2tfcmF0ZV9o
eikgeworICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2VuZGVy
Xyk7CisgIHJ0cF9jbG9ja19yYXRlc19raHpfW3BheWxvYWRfdHlwZV0gPSBydHBfY2xvY2tfcmF0
ZV9oeiAvIDEwMDA7Cit9CisKIHVpbnQzMl90IFJUQ1BTZW5kZXI6OlNTUkMoKSBjb25zdCB7CiAg
IHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRpY2FsX3NlY3Rpb25fcnRjcF9zZW5kZXJfKTsKICAg
cmV0dXJuIHNzcmNfOwpAQCAtNDExLDE1ICs0MjIsMjEgQEAgc3RkOjp1bmlxdWVfcHRyPHJ0Y3A6
OlJ0Y3BQYWNrZXQ+IFJUQ1BTZW5kZXI6OkJ1aWxkU1IoY29uc3QgUnRjcENvbnRleHQmIGN0eCkg
ewogICAvLyB0aGUgZnJhbWUgYmVpbmcgY2FwdHVyZWQgYXQgdGhpcyBtb21lbnQuIFdlIGFyZSBj
YWxjdWxhdGluZyB0aGF0CiAgIC8vIHRpbWVzdGFtcCBhcyB0aGUgbGFzdCBmcmFtZSdzIHRpbWVz
dGFtcCArIHRoZSB0aW1lIHNpbmNlIHRoZSBsYXN0IGZyYW1lCiAgIC8vIHdhcyBjYXB0dXJlZC4K
LSAgdWludDMyX3QgcnRwX3JhdGUgPQotICAgICAgKGF1ZGlvXyA/IGtCb2d1c1J0cFJhdGVGb3JB
dWRpb1J0Y3AgOiBrVmlkZW9QYXlsb2FkVHlwZUZyZXF1ZW5jeSkgLyAxMDAwOworICBpbnQgcnRw
X3JhdGUgPSBydHBfY2xvY2tfcmF0ZXNfa2h6X1tsYXN0X3BheWxvYWRfdHlwZV9dOworICBpZiAo
cnRwX3JhdGUgPD0gMCkgeworICAgIHJ0cF9yYXRlID0KKyAgICAgICAgKGF1ZGlvXyA/IGtCb2d1
c1J0cFJhdGVGb3JBdWRpb1J0Y3AgOiBrVmlkZW9QYXlsb2FkVHlwZUZyZXF1ZW5jeSkgLworICAg
ICAgICAxMDAwOworICB9CisgIC8vIFJvdW5kIG5vd191c18gdG8gdGhlIGNsb3Nlc3QgbWlsbGlz
ZWNvbmQsIGJlY2F1c2UgTnRwIHRpbWUgaXMgcm91bmRlZAorICAvLyB3aGVuIGNvbnZlcnRlZCB0
byBtaWxsaXNlY29uZHMsCiAgIHVpbnQzMl90IHJ0cF90aW1lc3RhbXAgPQogICAgICAgdGltZXN0
YW1wX29mZnNldF8gKyBsYXN0X3J0cF90aW1lc3RhbXBfICsKLSAgICAgIChjbG9ja18tPlRpbWVJ
bk1pbGxpc2Vjb25kcygpIC0gbGFzdF9mcmFtZV9jYXB0dXJlX3RpbWVfbXNfKSAqIHJ0cF9yYXRl
OworICAgICAgKChjdHgubm93X3VzXyArIDUwMCkgLyAxMDAwIC0gbGFzdF9mcmFtZV9jYXB0dXJl
X3RpbWVfbXNfKSAqIHJ0cF9yYXRlOwogCiAgIHJ0Y3A6OlNlbmRlclJlcG9ydCogcmVwb3J0ID0g
bmV3IHJ0Y3A6OlNlbmRlclJlcG9ydCgpOwogICByZXBvcnQtPlNldFNlbmRlclNzcmMoc3NyY18p
OwotICByZXBvcnQtPlNldE50cChjdHgubm93Xyk7CisgIHJlcG9ydC0+U2V0TnRwKFRpbWVNaWNy
b3NUb050cChjdHgubm93X3VzXykpOwogICByZXBvcnQtPlNldFJ0cFRpbWVzdGFtcChydHBfdGlt
ZXN0YW1wKTsKICAgcmVwb3J0LT5TZXRQYWNrZXRDb3VudChjdHguZmVlZGJhY2tfc3RhdGVfLnBh
Y2tldHNfc2VudCk7CiAgIHJlcG9ydC0+U2V0T2N0ZXRDb3VudChjdHguZmVlZGJhY2tfc3RhdGVf
Lm1lZGlhX2J5dGVzX3NlbnQpOwpAQCAtNjAwLDcgKzYxNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxy
dGNwOjpSdGNwUGFja2V0PiBSVENQU2VuZGVyOjpCdWlsZEV4dGVuZGVkUmVwb3J0cygKIAogICBp
ZiAoIXNlbmRpbmdfICYmIHhyX3NlbmRfcmVjZWl2ZXJfcmVmZXJlbmNlX3RpbWVfZW5hYmxlZF8p
IHsKICAgICBydGNwOjpScnRyIHJydHI7Ci0gICAgcnJ0ci5TZXROdHAoY3R4Lm5vd18pOworICAg
IHJydHIuU2V0TnRwKFRpbWVNaWNyb3NUb050cChjdHgubm93X3VzXykpOwogICAgIHhyLT5TZXRS
cnRyKHJydHIpOwogICB9CiAKQEAgLTY3NSw3ICs2OTIsNyBAQCBpbnQzMl90IFJUQ1BTZW5kZXI6
OlNlbmRDb21wb3VuZFJUQ1AoCiAKICAgICAvLyBXZSBuZWVkIHRvIHNlbmQgb3VyIE5UUCBldmVu
IGlmIHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW55IHJlcG9ydHMuCiAgICAgUnRjcENvbnRleHQgY29u
dGV4dChmZWVkYmFja19zdGF0ZSwgbmFja19zaXplLCBuYWNrX2xpc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjbG9ja18tPkN1cnJlbnROdHBUaW1lKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSk7CiAKICAgICBQcmVwYXJlUmVwb3J0
KGZlZWRiYWNrX3N0YXRlKTsKIApAQCAtNzQ4LDI4ICs3NjUsMjQgQEAgdm9pZCBSVENQU2VuZGVy
OjpQcmVwYXJlUmVwb3J0KGNvbnN0IEZlZWRiYWNrU3RhdGUmIGZlZWRiYWNrX3N0YXRlKSB7CiAg
ICAgfQogCiAgICAgLy8gZ2VuZXJhdGUgbmV4dCB0aW1lIHRvIHNlbmQgYW4gUlRDUCByZXBvcnQK
LSAgICB1aW50MzJfdCBtaW5JbnRlcnZhbE1zID0KLSAgICAgICAgcnRjOjpkY2hlY2tlZF9jYXN0
PHVpbnQzMl90PihpbnRlcnZhbF9jb25maWdfLmF1ZGlvX2ludGVydmFsX21zKTsKLQotICAgIGlm
ICghYXVkaW9fKSB7Ci0gICAgICBpZiAoc2VuZGluZ18pIHsKLSAgICAgICAgLy8gQ2FsY3VsYXRl
IGJhbmR3aWR0aCBmb3IgdmlkZW87IDM2MCAvIHNlbmQgYmFuZHdpZHRoIGluIGtiaXQvcy4KLSAg
ICAgICAgdWludDMyX3Qgc2VuZF9iaXRyYXRlX2tiaXQgPSBmZWVkYmFja19zdGF0ZS5zZW5kX2Jp
dHJhdGUgLyAxMDAwOwotICAgICAgICBpZiAoc2VuZF9iaXRyYXRlX2tiaXQgIT0gMCkKLSAgICAg
ICAgICBtaW5JbnRlcnZhbE1zID0gMzYwMDAwIC8gc2VuZF9iaXRyYXRlX2tiaXQ7Ci0gICAgICB9
Ci0gICAgICBpZiAobWluSW50ZXJ2YWxNcyA+Ci0gICAgICAgICAgcnRjOjpkY2hlY2tlZF9jYXN0
PHVpbnQzMl90PihpbnRlcnZhbF9jb25maWdfLnZpZGVvX2ludGVydmFsX21zKSkgewotICAgICAg
ICBtaW5JbnRlcnZhbE1zID0KLSAgICAgICAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50MzJf
dD4oaW50ZXJ2YWxfY29uZmlnXy52aWRlb19pbnRlcnZhbF9tcyk7CisgICAgaW50IG1pbl9pbnRl
cnZhbF9tcyA9IHJlcG9ydF9pbnRlcnZhbF9tc187CisKKyAgICBpZiAoIWF1ZGlvXyAmJiBzZW5k
aW5nXykgeworICAgICAgLy8gQ2FsY3VsYXRlIGJhbmR3aWR0aCBmb3IgdmlkZW87IDM2MCAvIHNl
bmQgYmFuZHdpZHRoIGluIGtiaXQvcy4KKyAgICAgIGludCBzZW5kX2JpdHJhdGVfa2JpdCA9IGZl
ZWRiYWNrX3N0YXRlLnNlbmRfYml0cmF0ZSAvIDEwMDA7CisgICAgICBpZiAoc2VuZF9iaXRyYXRl
X2tiaXQgIT0gMCkgeworICAgICAgICBtaW5faW50ZXJ2YWxfbXMgPSAzNjAwMDAgLyBzZW5kX2Jp
dHJhdGVfa2JpdDsKKyAgICAgICAgbWluX2ludGVydmFsX21zID0gc3RkOjptaW4obWluX2ludGVy
dmFsX21zLCByZXBvcnRfaW50ZXJ2YWxfbXNfKTsKICAgICAgIH0KICAgICB9CiAKICAgICAvLyBU
aGUgaW50ZXJ2YWwgYmV0d2VlbiBSVENQIHBhY2tldHMgaXMgdmFyaWVkIHJhbmRvbWx5IG92ZXIg
dGhlCiAgICAgLy8gcmFuZ2UgWzEvMiwzLzJdIHRpbWVzIHRoZSBjYWxjdWxhdGVkIGludGVydmFs
LgotICAgIHVpbnQzMl90IHRpbWVUb05leHQgPQotICAgICAgICByYW5kb21fLlJhbmQobWluSW50
ZXJ2YWxNcyAqIDEgLyAyLCBtaW5JbnRlcnZhbE1zICogMyAvIDIpOwotICAgIG5leHRfdGltZV90
b19zZW5kX3J0Y3BfID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSArIHRpbWVUb05leHQ7
CisgICAgaW50IHRpbWVfdG9fbmV4dCA9CisgICAgICAgIHJhbmRvbV8uUmFuZChtaW5faW50ZXJ2
YWxfbXMgKiAxIC8gMiwgbWluX2ludGVydmFsX21zICogMyAvIDIpOworCisgICAgUlRDX0RDSEVD
S19HVCh0aW1lX3RvX25leHQsIDApOworICAgIG5leHRfdGltZV90b19zZW5kX3J0Y3BfID0gY2xv
Y2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSArIHRpbWVfdG9fbmV4dDsKIAogICAgIC8vIFJ0Y3BT
ZW5kZXIgZXhwZWN0ZWQgdG8gYmUgdXNlZCBmb3Igc2VuZGluZyBlaXRoZXIganVzdCBzZW5kZXIg
cmVwb3J0cwogICAgIC8vIG9yIGp1c3QgcmVjZWl2ZXIgcmVwb3J0cy4KQEAgLTc5MSw3ICs4MDQs
NyBAQCBzdGQ6OnZlY3RvcjxydGNwOjpSZXBvcnRCbG9jaz4gUlRDUFNlbmRlcjo6Q3JlYXRlUmVw
b3J0QmxvY2tzKAogICBpZiAoIXJlc3VsdC5lbXB0eSgpICYmICgoZmVlZGJhY2tfc3RhdGUubGFz
dF9ycl9udHBfc2VjcyAhPSAwKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAoZmVlZGJh
Y2tfc3RhdGUubGFzdF9ycl9udHBfZnJhYyAhPSAwKSkpIHsKICAgICAvLyBHZXQgb3VyIE5UUCBh
cyBsYXRlIGFzIHBvc3NpYmxlIHRvIGF2b2lkIGEgcmFjZS4KLSAgICB1aW50MzJfdCBub3cgPSBD
b21wYWN0TnRwKGNsb2NrXy0+Q3VycmVudE50cFRpbWUoKSk7CisgICAgdWludDMyX3Qgbm93ID0g
Q29tcGFjdE50cChUaW1lTWljcm9zVG9OdHAoY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSkp
OwogCiAgICAgdWludDMyX3QgcmVjZWl2ZV90aW1lID0gZmVlZGJhY2tfc3RhdGUubGFzdF9ycl9u
dHBfc2VjcyAmIDB4MDAwMEZGRkY7CiAgICAgcmVjZWl2ZV90aW1lIDw8PSAxNjsKQEAgLTk0OSwx
MiArOTYyLDQgQEAgYm9vbCBSVENQU2VuZGVyOjpTZW5kRmVlZGJhY2tQYWNrZXQoY29uc3QgcnRj
cDo6VHJhbnNwb3J0RmVlZGJhY2smIHBhY2tldCkgewogICByZXR1cm4gcGFja2V0LkJ1aWxkKG1h
eF9wYWNrZXRfc2l6ZSwgY2FsbGJhY2spICYmICFzZW5kX2ZhaWx1cmU7CiB9CiAKLWludDY0X3Qg
UlRDUFNlbmRlcjo6UnRjcEF1ZGlvUmVwb3J0SW52ZXJ2YWwoKSBjb25zdCB7Ci0gIHJldHVybiBp
bnRlcnZhbF9jb25maWdfLmF1ZGlvX2ludGVydmFsX21zOwotfQotCi1pbnQ2NF90IFJUQ1BTZW5k
ZXI6OlJ0Y3BWaWRlb1JlcG9ydEludmVydmFsKCkgY29uc3QgewotICByZXR1cm4gaW50ZXJ2YWxf
Y29uZmlnXy52aWRlb19pbnRlcnZhbF9tczsKLX0KLQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9zZW5kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bfc2VuZGVy
LmgKaW5kZXggYzkyMjBkZDM1YzdhOWRmYTAwYWQyYWM1ZDA5NzFiNWQzMzU3MzdmOS4uMDg0NTM5
N2RhM2JmNmQyMjQ1NzhmNTFiMDU3YWNjYzgxM2FjMjQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRjcF9zZW5kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlci5oCkBAIC02OCw3ICs2OCw3
IEBAIGNsYXNzIFJUQ1BTZW5kZXIgewogICAgICAgICAgICAgIFJ0Y3BQYWNrZXRUeXBlQ291bnRl
ck9ic2VydmVyKiBwYWNrZXRfdHlwZV9jb3VudGVyX29ic2VydmVyLAogICAgICAgICAgICAgIFJ0
Y0V2ZW50TG9nKiBldmVudF9sb2csCiAgICAgICAgICAgICAgVHJhbnNwb3J0KiBvdXRnb2luZ190
cmFuc3BvcnQsCi0gICAgICAgICAgICAgUnRjcEludGVydmFsQ29uZmlnIGludGVydmFsX2NvbmZp
Zyk7CisgICAgICAgICAgICAgaW50IHJlcG9ydF9pbnRlcnZhbF9tcyk7CiAgIHZpcnR1YWwgflJU
Q1BTZW5kZXIoKTsKIAogICBSdGNwTW9kZSBTdGF0dXMoKSBjb25zdDsKQEAgLTgyLDcgKzgyLDEz
IEBAIGNsYXNzIFJUQ1BTZW5kZXIgewogCiAgIHZvaWQgU2V0VGltZXN0YW1wT2Zmc2V0KHVpbnQz
Ml90IHRpbWVzdGFtcF9vZmZzZXQpOwogCi0gIHZvaWQgU2V0TGFzdFJ0cFRpbWUodWludDMyX3Qg
cnRwX3RpbWVzdGFtcCwgaW50NjRfdCBjYXB0dXJlX3RpbWVfbXMpOworICAvLyBUT0RPKGJ1Z3Mu
d2VicnRjLm9yZy82NDU4KTogUmVtb3ZlIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIHdoZW4gYWxs
IHRoZQorICAvLyBkZXBlbmRpbmcgcHJvamVjdHMgYXJlIHVwZGF0ZWQgdG8gY29ycmVjdGx5IHNl
dCBwYXlsb2FkIHR5cGUuCisgIHZvaWQgU2V0TGFzdFJ0cFRpbWUodWludDMyX3QgcnRwX3RpbWVz
dGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGNhcHR1cmVfdGltZV9tcywKKyAg
ICAgICAgICAgICAgICAgICAgICBpbnQ4X3QgcGF5bG9hZF90eXBlID0gLTEpOworCisgIHZvaWQg
U2V0UnRwQ2xvY2tSYXRlKGludDhfdCBwYXlsb2FkX3R5cGUsIGludCBydHBfY2xvY2tfcmF0ZV9o
eik7CiAKICAgdWludDMyX3QgU1NSQygpIGNvbnN0OwogCkBAIC0xMzUsOSArMTQxLDYgQEAgY2xh
c3MgUlRDUFNlbmRlciB7CiAgIHZvaWQgU2V0VmlkZW9CaXRyYXRlQWxsb2NhdGlvbihjb25zdCBW
aWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlKTsKICAgYm9vbCBTZW5kRmVlZGJhY2tQYWNr
ZXQoY29uc3QgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2smIHBhY2tldCk7CiAKLSAgaW50NjRfdCBS
dGNwQXVkaW9SZXBvcnRJbnZlcnZhbCgpIGNvbnN0OwotICBpbnQ2NF90IFJ0Y3BWaWRlb1JlcG9y
dEludmVydmFsKCkgY29uc3Q7Ci0KICBwcml2YXRlOgogICBjbGFzcyBSdGNwQ29udGV4dDsKIApA
QCAtMTg0LDEwICsxODcsOSBAQCBjbGFzcyBSVENQU2VuZGVyIHsKICAgUnRjRXZlbnRMb2cqIGNv
bnN0IGV2ZW50X2xvZ187CiAgIFRyYW5zcG9ydCogY29uc3QgdHJhbnNwb3J0XzsKIAotICBjb25z
dCBSdGNwSW50ZXJ2YWxDb25maWcgaW50ZXJ2YWxfY29uZmlnXzsKKyAgY29uc3QgaW50IHJlcG9y
dF9pbnRlcnZhbF9tc187CiAKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdGljYWxfc2VjdGlv
bl9ydGNwX3NlbmRlcl87Ci0gIGJvb2wgdXNpbmdfbmFja18gUlRDX0dVQVJERURfQlkoY3JpdGlj
YWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8pOwogICBib29sIHNlbmRpbmdfIFJUQ19HVUFSREVEX0JZ
KGNyaXRpY2FsX3NlY3Rpb25fcnRjcF9zZW5kZXJfKTsKIAogICBpbnQ2NF90IG5leHRfdGltZV90
b19zZW5kX3J0Y3BfIFJUQ19HVUFSREVEX0JZKGNyaXRpY2FsX3NlY3Rpb25fcnRjcF9zZW5kZXJf
KTsKQEAgLTI0NCw2ICsyNDYsMTEgQEAgY2xhc3MgUlRDUFNlbmRlciB7CiAgICAgICBSVENfR1VB
UkRFRF9CWShjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2VuZGVyXyk7CiAgIGJvb2wgc2VuZF92aWRl
b19iaXRyYXRlX2FsbG9jYXRpb25fCiAgICAgICBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0
aW9uX3J0Y3Bfc2VuZGVyXyk7CisKKyAgc3RkOjptYXA8aW50OF90LCBpbnQ+IHJ0cF9jbG9ja19y
YXRlc19raHpfCisgICAgICBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2Vu
ZGVyXyk7CisgIGludDhfdCBsYXN0X3BheWxvYWRfdHlwZV8gUlRDX0dVQVJERURfQlkoY3JpdGlj
YWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8pOworCiAgIGFic2w6Om9wdGlvbmFsPFZpZGVvQml0cmF0
ZUFsbG9jYXRpb24+IENoZWNrQW5kVXBkYXRlTGF5ZXJTdHJ1Y3R1cmUoCiAgICAgICBjb25zdCBW
aWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlKSBjb25zdAogICAgICAgUlRDX0VYQ0xVU0lW
RV9MT0NLU19SRVFVSVJFRChjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2VuZGVyXyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bfc2Vu
ZGVyX3VuaXR0ZXN0LmNjCmluZGV4IGJjZmZjODEyMTNkOWYxMjQ5YzgzMzQzMzg4M2U2NTVmMzU5
MjIzYmUuLmUxYTQzNmI4NDUyZmY3MjkxYzk0YjhmZjcxODBlZGI1ZjFjM2I4NWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3Bfc2VuZGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
c2VuZGVyX3VuaXR0ZXN0LmNjCkBAIC0xMSwxMSArMTEsMTMgQEAKICNpbmNsdWRlIDxtZW1vcnk+
CiAKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQor
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYnllLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvY29tbW9uX2hlYWRlci5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bfc2VuZGVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2ltcGwuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90aW1lX3V0aWwuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9yYXRlX2xpbWl0ZXIuaCIKICNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCiAjaW5jbHVkZSAidGVz
dC9ndGVzdC5oIgpAQCAtNDMsNyArNDUsNyBAQCBjbGFzcyBSdGNwUGFja2V0VHlwZUNvdW50ZXJP
YnNlcnZlckltcGwgOiBwdWJsaWMgUnRjcFBhY2tldFR5cGVDb3VudGVyT2JzZXJ2ZXIgewogICBS
dGNwUGFja2V0VHlwZUNvdW50ZXIgY291bnRlcl87CiB9OwogCi1jbGFzcyBUZXN0VHJhbnNwb3J0
IDogcHVibGljIFRyYW5zcG9ydCwgcHVibGljIFJ0cERhdGEgeworY2xhc3MgVGVzdFRyYW5zcG9y
dCA6IHB1YmxpYyBUcmFuc3BvcnQgewogIHB1YmxpYzoKICAgVGVzdFRyYW5zcG9ydCgpIHt9CiAK
QEAgLTU2LDExICs1OCw2IEBAIGNsYXNzIFRlc3RUcmFuc3BvcnQgOiBwdWJsaWMgVHJhbnNwb3J0
LCBwdWJsaWMgUnRwRGF0YSB7CiAgICAgcGFyc2VyXy5QYXJzZShkYXRhLCBsZW4pOwogICAgIHJl
dHVybiB0cnVlOwogICB9Ci0gIGludCBPblJlY2VpdmVkUGF5bG9hZERhdGEoY29uc3QgdWludDhf
dCogcGF5bG9hZF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXls
b2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUnRjUlRQSGVh
ZGVyKiBydHBfaGVhZGVyKSBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KICAgdGVzdDo6
UnRjcFBhY2tldFBhcnNlciBwYXJzZXJfOwogfTsKIApAQCAtODIsMTUgKzc5LDE3IEBAIGNsYXNz
IFJ0Y3BTZW5kZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgY29uZmlndXJh
dGlvbi5jbG9jayA9ICZjbG9ja187CiAgICAgY29uZmlndXJhdGlvbi5vdXRnb2luZ190cmFuc3Bv
cnQgPSAmdGVzdF90cmFuc3BvcnRfOwogICAgIGNvbmZpZ3VyYXRpb24ucmV0cmFuc21pc3Npb25f
cmF0ZV9saW1pdGVyID0gJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl87CisgICAgY29uZmln
dXJhdGlvbi5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IDEwMDA7CiAKICAgICBydHBfcnRjcF9p
bXBsXy5yZXNldChuZXcgTW9kdWxlUnRwUnRjcEltcGwoY29uZmlndXJhdGlvbikpOwogICAgIHJ0
Y3Bfc2VuZGVyXy5yZXNldChuZXcgUlRDUFNlbmRlcihmYWxzZSwgJmNsb2NrXywgcmVjZWl2ZV9z
dGF0aXN0aWNzXy5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwgbnVsbHB0ciwgJnRlc3RfdHJhbnNwb3J0XywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5ydGNwX2ludGVydmFsX2NvbmZpZykpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnJ0Y3Bf
cmVwb3J0X2ludGVydmFsX21zKSk7CiAgICAgcnRjcF9zZW5kZXJfLT5TZXRTU1JDKGtTZW5kZXJT
c3JjKTsKICAgICBydGNwX3NlbmRlcl8tPlNldFJlbW90ZVNTUkMoa1JlbW90ZVNzcmMpOwogICAg
IHJ0Y3Bfc2VuZGVyXy0+U2V0VGltZXN0YW1wT2Zmc2V0KGtTdGFydFJ0cFRpbWVzdGFtcCk7Ci0g
ICAgcnRjcF9zZW5kZXJfLT5TZXRMYXN0UnRwVGltZShrUnRwVGltZXN0YW1wLCBjbG9ja18uVGlt
ZUluTWlsbGlzZWNvbmRzKCkpOworICAgIHJ0Y3Bfc2VuZGVyXy0+U2V0TGFzdFJ0cFRpbWUoa1J0
cFRpbWVzdGFtcCwgY2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLypwYXlscGFkX3R5cGU9Ki8wKTsKICAgfQogCiAgIHZvaWQgSW5z
ZXJ0SW5jb21pbmdQYWNrZXQodWludDMyX3QgcmVtb3RlX3NzcmMsIHVpbnQxNl90IHNlcV9udW0p
IHsKQEAgLTE0MSw3ICsxNDAsNyBAQCBURVNUX0YoUnRjcFNlbmRlclRlc3QsIFNlbmRTcikgewog
ICBydGNwX3NlbmRlcl8tPlNldFNlbmRpbmdTdGF0dXMoZmVlZGJhY2tfc3RhdGUsIHRydWUpOwog
ICBmZWVkYmFja19zdGF0ZS5wYWNrZXRzX3NlbnQgPSBrUGFja2V0Q291bnQ7CiAgIGZlZWRiYWNr
X3N0YXRlLm1lZGlhX2J5dGVzX3NlbnQgPSBrT2N0ZXRDb3VudDsKLSAgTnRwVGltZSBudHAgPSBj
bG9ja18uQ3VycmVudE50cFRpbWUoKTsKKyAgTnRwVGltZSBudHAgPSBUaW1lTWljcm9zVG9OdHAo
Y2xvY2tfLlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKICAgRVhQRUNUX0VRKDAsIHJ0Y3Bfc2VuZGVy
Xy0+U2VuZFJUQ1AoZmVlZGJhY2tfc3RhdGUsIGtSdGNwU3IpKTsKICAgRVhQRUNUX0VRKDEsIHBh
cnNlcigpLT5zZW5kZXJfcmVwb3J0KCktPm51bV9wYWNrZXRzKCkpOwogICBFWFBFQ1RfRVEoa1Nl
bmRlclNzcmMsIHBhcnNlcigpLT5zZW5kZXJfcmVwb3J0KCktPnNlbmRlcl9zc3JjKCkpOwpAQCAt
MTUzLDEwICsxNTIsNDIgQEAgVEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBTZW5kU3IpIHsKICAgRVhQ
RUNUX0VRKDBVLCBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5yZXBvcnRfYmxvY2tzKCkuc2l6
ZSgpKTsKIH0KIAorVEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBTZW5kQ29uc2VjdXRpdmVTcldpdGhF
eGFjdFNsb3BlKSB7CisgIGNvbnN0IHVpbnQzMl90IGtQYWNrZXRDb3VudCA9IDB4MTIzNDU7Cisg
IGNvbnN0IHVpbnQzMl90IGtPY3RldENvdW50ID0gMHgyMzQ1NjsKKyAgY29uc3QgaW50IGtUaW1l
QmV0d2VlblNSc1VzID0gMTAwNDM7ICAvLyBOb3QgZXhhY3QgdmFsdWUgaW4gbWlsbGlzZWNvbmRz
LgorICBjb25zdCBpbnQga0V4dHJhUGFja2V0cyA9IDMwOworICAvLyBNYWtlIHN1cmUgY2xvY2sg
aXMgbm90IGV4YWN0bHkgYXQgc29tZSBtaWxsaXNlY29uZHMgcG9pbnQuCisgIGNsb2NrXy5BZHZh
bmNlVGltZU1pY3Jvc2Vjb25kcyhrVGltZUJldHdlZW5TUnNVcyk7CisgIHJ0Y3Bfc2VuZGVyXy0+
U2V0UlRDUFN0YXR1cyhSdGNwTW9kZTo6a1JlZHVjZWRTaXplKTsKKyAgUlRDUFNlbmRlcjo6RmVl
ZGJhY2tTdGF0ZSBmZWVkYmFja19zdGF0ZSA9IHJ0cF9ydGNwX2ltcGxfLT5HZXRGZWVkYmFja1N0
YXRlKCk7CisgIHJ0Y3Bfc2VuZGVyXy0+U2V0U2VuZGluZ1N0YXR1cyhmZWVkYmFja19zdGF0ZSwg
dHJ1ZSk7CisgIGZlZWRiYWNrX3N0YXRlLnBhY2tldHNfc2VudCA9IGtQYWNrZXRDb3VudDsKKyAg
ZmVlZGJhY2tfc3RhdGUubWVkaWFfYnl0ZXNfc2VudCA9IGtPY3RldENvdW50OworCisgIEVYUEVD
VF9FUSgwLCBydGNwX3NlbmRlcl8tPlNlbmRSVENQKGZlZWRiYWNrX3N0YXRlLCBrUnRjcFNyKSk7
CisgIEVYUEVDVF9FUSgxLCBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5udW1fcGFja2V0cygp
KTsKKyAgTnRwVGltZSBudHAxID0gcGFyc2VyKCktPnNlbmRlcl9yZXBvcnQoKS0+bnRwKCk7Cisg
IHVpbnQzMl90IHJ0cDEgPSBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5ydHBfdGltZXN0YW1w
KCk7CisKKyAgLy8gU2VuZCBtb3JlIFNScyB0byBlbnN1cmUgc2xvcGUgaXMgYWx3YXlzIGV4YWN0
IGZvciBkaWZmZXJlbnQgb2Zmc2V0cworICBmb3IgKGludCBwYWNrZXRzID0gMTsgcGFja2V0cyA8
PSBrRXh0cmFQYWNrZXRzOyArK3BhY2tldHMpIHsKKyAgICBjbG9ja18uQWR2YW5jZVRpbWVNaWNy
b3NlY29uZHMoa1RpbWVCZXR3ZWVuU1JzVXMpOworICAgIEVYUEVDVF9FUSgwLCBydGNwX3NlbmRl
cl8tPlNlbmRSVENQKGZlZWRiYWNrX3N0YXRlLCBrUnRjcFNyKSk7CisgICAgRVhQRUNUX0VRKHBh
Y2tldHMgKyAxLCBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5udW1fcGFja2V0cygpKTsKKwor
ICAgIE50cFRpbWUgbnRwMiA9IHBhcnNlcigpLT5zZW5kZXJfcmVwb3J0KCktPm50cCgpOworICAg
IHVpbnQzMl90IHJ0cDIgPSBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5ydHBfdGltZXN0YW1w
KCk7CisKKyAgICB1aW50MzJfdCBudHBfZGlmZl9pbl9ydHBfdW5pdHMgPQorICAgICAgICAobnRw
Mi5Ub01zKCkgLSBudHAxLlRvTXMoKSkgKiAoa1ZpZGVvUGF5bG9hZFR5cGVGcmVxdWVuY3kgLyAx
MDAwKTsKKyAgICBFWFBFQ1RfRVEocnRwMiAtIHJ0cDEsIG50cF9kaWZmX2luX3J0cF91bml0cyk7
CisgIH0KK30KKwogVEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBEb05vdFNlbmRTckJlZm9yZVJ0cCkg
ewogICBydGNwX3NlbmRlcl8ucmVzZXQobmV3IFJUQ1BTZW5kZXIoZmFsc2UsICZjbG9ja18sIHJl
Y2VpdmVfc3RhdGlzdGljc18uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLCBudWxscHRyLCAmdGVzdF90cmFuc3BvcnRfLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUnRjcEludGVydmFsQ29uZmlne30pKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsICZ0ZXN0X3RyYW5zcG9y
dF8sIDEwMDApKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRTU1JDKGtTZW5kZXJTc3JjKTsKICAgcnRj
cF9zZW5kZXJfLT5TZXRSZW1vdGVTU1JDKGtSZW1vdGVTc3JjKTsKICAgcnRjcF9zZW5kZXJfLT5T
ZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprUmVkdWNlZFNpemUpOwpAQCAtMTc0LDggKzIwNSw3IEBA
IFRFU1RfRihSdGNwU2VuZGVyVGVzdCwgRG9Ob3RTZW5kU3JCZWZvcmVSdHApIHsKIAogVEVTVF9G
KFJ0Y3BTZW5kZXJUZXN0LCBEb05vdFNlbmRDb21wdW5kQmVmb3JlUnRwKSB7CiAgIHJ0Y3Bfc2Vu
ZGVyXy5yZXNldChuZXcgUlRDUFNlbmRlcihmYWxzZSwgJmNsb2NrXywgcmVjZWl2ZV9zdGF0aXN0
aWNzXy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
IG51bGxwdHIsICZ0ZXN0X3RyYW5zcG9ydF8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSdGNwSW50ZXJ2YWxDb25maWd7fSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgJnRlc3RfdHJhbnNwb3J0XywgMTAwMCkpOwog
ICBydGNwX3NlbmRlcl8tPlNldFNTUkMoa1NlbmRlclNzcmMpOwogICBydGNwX3NlbmRlcl8tPlNl
dFJlbW90ZVNTUkMoa1JlbW90ZVNzcmMpOwogICBydGNwX3NlbmRlcl8tPlNldFJUQ1BTdGF0dXMo
UnRjcE1vZGU6OmtDb21wb3VuZCk7CkBAIC00NDcsNyArNDc3LDcgQEAgVEVTVF9GKFJ0Y3BTZW5k
ZXJUZXN0LCBTZW5kWHJXaXRoUnJ0cikgewogICBydGNwX3NlbmRlcl8tPlNldFJUQ1BTdGF0dXMo
UnRjcE1vZGU6OmtDb21wb3VuZCk7CiAgIEVYUEVDVF9FUSgwLCBydGNwX3NlbmRlcl8tPlNldFNl
bmRpbmdTdGF0dXMoZmVlZGJhY2tfc3RhdGUoKSwgZmFsc2UpKTsKICAgcnRjcF9zZW5kZXJfLT5T
ZW5kUnRjcFhyUmVjZWl2ZXJSZWZlcmVuY2VUaW1lKHRydWUpOwotICBOdHBUaW1lIG50cCA9IGNs
b2NrXy5DdXJyZW50TnRwVGltZSgpOworICBOdHBUaW1lIG50cCA9IFRpbWVNaWNyb3NUb050cChj
bG9ja18uVGltZUluTWljcm9zZWNvbmRzKCkpOwogICBFWFBFQ1RfRVEoMCwgcnRjcF9zZW5kZXJf
LT5TZW5kUlRDUChmZWVkYmFja19zdGF0ZSgpLCBrUnRjcFJlcG9ydCkpOwogICBFWFBFQ1RfRVEo
MSwgcGFyc2VyKCktPnhyKCktPm51bV9wYWNrZXRzKCkpOwogICBFWFBFQ1RfRVEoa1NlbmRlclNz
cmMsIHBhcnNlcigpLT54cigpLT5zZW5kZXJfc3NyYygpKTsKQEAgLTQ3Niw3ICs1MDYsNyBAQCBU
RVNUX0YoUnRjcFNlbmRlclRlc3QsIFRlc3RSZWdpc3RlclJ0Y3BQYWNrZXRUeXBlT2JzZXJ2ZXIp
IHsKICAgUnRjcFBhY2tldFR5cGVDb3VudGVyT2JzZXJ2ZXJJbXBsIG9ic2VydmVyOwogICBydGNw
X3NlbmRlcl8ucmVzZXQobmV3IFJUQ1BTZW5kZXIoZmFsc2UsICZjbG9ja18sIHJlY2VpdmVfc3Rh
dGlzdGljc18uZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2Jz
ZXJ2ZXIsIG51bGxwdHIsICZ0ZXN0X3RyYW5zcG9ydF8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSdGNwSW50ZXJ2YWxDb25maWd7fSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTAwMCkpOwogICBydGNwX3NlbmRlcl8tPlNldFJlbW90ZVNTUkMo
a1JlbW90ZVNzcmMpOwogICBydGNwX3NlbmRlcl8tPlNldFJUQ1BTdGF0dXMoUnRjcE1vZGU6OmtS
ZWR1Y2VkU2l6ZSk7CiAgIEVYUEVDVF9FUSgwLCBydGNwX3NlbmRlcl8tPlNlbmRSVENQKGZlZWRi
YWNrX3N0YXRlKCksIGtSdGNwUGxpKSk7CkBAIC01OTgsMTIgKzYyOCwxMiBAQCBURVNUX0YoUnRj
cFNlbmRlclRlc3QsIEJ5ZU11c3RCZUxhc3QpIHsKIAogICAvLyBSZS1jb25maWd1cmUgcnRjcF9z
ZW5kZXJfIHdpdGggbW9ja190cmFuc3BvcnRfCiAgIHJ0Y3Bfc2VuZGVyXy5yZXNldChuZXcgUlRD
UFNlbmRlcihmYWxzZSwgJmNsb2NrXywgcmVjZWl2ZV9zdGF0aXN0aWNzXy5nZXQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsICZtb2NrX3Ry
YW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BJbnRlcnZh
bENvbmZpZ3t9KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LCBudWxscHRyLCAmbW9ja190cmFuc3BvcnQsIDEwMDApKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRT
U1JDKGtTZW5kZXJTc3JjKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRSZW1vdGVTU1JDKGtSZW1vdGVT
c3JjKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRUaW1lc3RhbXBPZmZzZXQoa1N0YXJ0UnRwVGltZXN0
YW1wKTsKLSAgcnRjcF9zZW5kZXJfLT5TZXRMYXN0UnRwVGltZShrUnRwVGltZXN0YW1wLCBjbG9j
a18uVGltZUluTWlsbGlzZWNvbmRzKCkpOworICBydGNwX3NlbmRlcl8tPlNldExhc3RSdHBUaW1l
KGtSdHBUaW1lc3RhbXAsIGNsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKnBheWxwYWRfdHlwZT0qLzApOwogCiAgIC8vIFNldCB1cCBS
RU1CIGluZm8gdG8gYmUgaW5jbHVkZWQgd2l0aCBCWUUuCiAgIHJ0Y3Bfc2VuZGVyXy0+U2V0UlRD
UFN0YXR1cyhSdGNwTW9kZTo6a0NvbXBvdW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
dHJhbnNjZWl2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyLmNjCmluZGV4IDc3YjEw
Y2EwNTJkOTg2NDk5M2ZkYTFiZWFlNGFkZTBjNzFiMjIzNDYuLjU3ZDIxNDJmZmFkNGZmZjFlMTcy
OTU1ZmM2ZjMxZDZjZTg5ZGU5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlci5jYwpAQCAtMzksMTAgKzM5LDEw
IEBAIFJ0Y3BUcmFuc2NlaXZlcjo6flJ0Y3BUcmFuc2NlaXZlcigpIHsKICAgUlRDX0RDSEVDSygh
cnRjcF90cmFuc2NlaXZlcl8pOwogfQogCi12b2lkIFJ0Y3BUcmFuc2NlaXZlcjo6U3RvcChzdGQ6
OnVuaXF1ZV9wdHI8cnRjOjpRdWV1ZWRUYXNrPiBvbl9kZXN0cm95ZWQpIHsKK3ZvaWQgUnRjcFRy
YW5zY2VpdmVyOjpTdG9wKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBvbl9kZXN0cm95ZWQpIHsKICAg
UlRDX0RDSEVDSyhydGNwX3RyYW5zY2VpdmVyXyk7Ci0gIHRhc2tfcXVldWVfLT5Qb3N0VGFza0Fu
ZFJlcGx5KERlc3RydWN0b3J7c3RkOjptb3ZlKHJ0Y3BfdHJhbnNjZWl2ZXJfKX0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShvbl9kZXN0cm95ZWQpKTsKKyAgdGFz
a19xdWV1ZV8tPlBvc3RUYXNrKHJ0Yzo6TmV3Q2xvc3VyZSgKKyAgICAgIERlc3RydWN0b3J7c3Rk
Ojptb3ZlKHJ0Y3BfdHJhbnNjZWl2ZXJfKX0sIHN0ZDo6bW92ZShvbl9kZXN0cm95ZWQpKSk7CiAg
IFJUQ19EQ0hFQ0soIXJ0Y3BfdHJhbnNjZWl2ZXJfKTsKIH0KIApAQCAtNTksMTMgKzU5LDE0IEBA
IHZvaWQgUnRjcFRyYW5zY2VpdmVyOjpBZGRNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKAogdm9p
ZCBSdGNwVHJhbnNjZWl2ZXI6OlJlbW92ZU1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIoCiAgICAg
dWludDMyX3QgcmVtb3RlX3NzcmMsCiAgICAgTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlciogb2Jz
ZXJ2ZXIsCi0gICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6UXVldWVkVGFzaz4gb25fcmVtb3ZlZCkg
eworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBvbl9yZW1vdmVkKSB7CiAgIFJUQ19DSEVDSyhy
dGNwX3RyYW5zY2VpdmVyXyk7CiAgIFJ0Y3BUcmFuc2NlaXZlckltcGwqIHB0ciA9IHJ0Y3BfdHJh
bnNjZWl2ZXJfLmdldCgpOwogICBhdXRvIHJlbW92ZSA9IFtwdHIsIHJlbW90ZV9zc3JjLCBvYnNl
cnZlcl0gewogICAgIHB0ci0+UmVtb3ZlTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlcihyZW1vdGVf
c3NyYywgb2JzZXJ2ZXIpOwogICB9OwotICB0YXNrX3F1ZXVlXy0+UG9zdFRhc2tBbmRSZXBseShz
dGQ6Om1vdmUocmVtb3ZlKSwgc3RkOjptb3ZlKG9uX3JlbW92ZWQpKTsKKyAgdGFza19xdWV1ZV8t
PlBvc3RUYXNrKAorICAgICAgcnRjOjpOZXdDbG9zdXJlKHN0ZDo6bW92ZShyZW1vdmUpLCBzdGQ6
Om1vdmUob25fcmVtb3ZlZCkpKTsKIH0KIAogdm9pZCBSdGNwVHJhbnNjZWl2ZXI6OlNldFJlYWR5
VG9TZW5kKGJvb2wgcmVhZHkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2
ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXIuaAppbmRleCBmYzk0ODhjNGFiZDY0MGM1
MDdmNWZjZTQzOWYzN2I4YjNlNTViYmVhLi45Yzk2NzUxMTBmYTYwZTM5NWY1MTI1MDM0MWYxYjBl
MGM5MGM5OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlci5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1P
RFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfVFJBTlNDRUlWRVJfSF8KICNkZWZpbmUgTU9EVUxF
U19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9UUkFOU0NFSVZFUl9IXwogCisjaW5jbHVkZSA8ZnVuY3Rp
b25hbD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZl
Y3Rvcj4KQEAgLTQyLDE4ICs0MywxNyBAQCBjbGFzcyBSdGNwVHJhbnNjZWl2ZXIgOiBwdWJsaWMg
UnRjcEZlZWRiYWNrU2VuZGVySW50ZXJmYWNlIHsKICAgLy8gTm90ZSB0aGF0IGludGVyZmFjZXMg
cHJvdmlkZWQgaW4gY29uc3RydWN0b3Igb3IgcmVnaXN0ZXJlZCB3aXRoIEFkZE9ic2VydmVyCiAg
IC8vIHN0aWxsIG1pZ2h0IGJlIHVzZWQgYnkgdGhlIHRyYW5zY2VpdmVyIG9uIHRoZSB0YXNrIHF1
ZXVlCiAgIC8vIHVudGlsIHxvbl9kZXN0cm95ZWR8IHJ1bnMuCi0gIHZvaWQgU3RvcChzdGQ6OnVu
aXF1ZV9wdHI8cnRjOjpRdWV1ZWRUYXNrPiBvbl9kZXN0cm95ZWQpOworICB2b2lkIFN0b3Aoc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IG9uX2Rlc3Ryb3llZCk7CiAKICAgLy8gUmVnaXN0ZXJzIG9ic2Vy
dmVyIHRvIGJlIG5vdGlmaWVkIGFib3V0IGluY29taW5nIHJ0Y3AgcGFja2V0cy4KICAgLy8gQ2Fs
bHMgdG8gb2JzZXJ2ZXIgd2lsbCBiZSBkb25lIG9uIHRoZSB8Y29uZmlnLnRhc2tfcXVldWV8Lgog
ICB2b2lkIEFkZE1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIodWludDMyX3QgcmVtb3RlX3NzcmMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVJlY2VpdmVyUnRjcE9i
c2VydmVyKiBvYnNlcnZlcik7CiAgIC8vIERlcmVnaXN0ZXJzIHRoZSBvYnNlcnZlci4gTWlnaHQg
cmV0dXJuIGJlZm9yZSBvYnNlcnZlciBpcyBkZXJlZ2lzdGVyZWQuCi0gIC8vIFBvc3RzIHxvbl9y
ZW1vdmVkfCB0YXNrIHdoZW4gb2JzZXJ2ZXIgaXMgZGVyZWdpc3RlcmVkLgotICB2b2lkIFJlbW92
ZU1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIoCi0gICAgICB1aW50MzJfdCByZW1vdGVfc3NyYywK
LSAgICAgIE1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIqIG9ic2VydmVyLAotICAgICAgc3RkOjp1
bmlxdWVfcHRyPHJ0Yzo6UXVldWVkVGFzaz4gb25fcmVtb3ZlZCk7CisgIC8vIFJ1bnMgfG9uX3Jl
bW92ZWR8IHdoZW4gb2JzZXJ2ZXIgaXMgZGVyZWdpc3RlcmVkLgorICB2b2lkIFJlbW92ZU1lZGlh
UmVjZWl2ZXJSdGNwT2JzZXJ2ZXIodWludDMyX3QgcmVtb3RlX3NzcmMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKiBvYnNl
cnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBvbl9yZW1vdmVkKTsKIAogICAvLyBFbmFibGVzL2Rpc2FibGVzIHNlbmRpbmcg
cnRjcCBwYWNrZXRzIGV2ZW50dWFsbHkuCiAgIC8vIFBhY2tldHMgbWF5IGJlIHNlbnQgYWZ0ZXIg
dGhlIFNldFJlYWR5VG9TZW5kKGZhbHNlKSByZXR1cm5zLCBidXQgbm8gbmV3CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFu
c2NlaXZlcl9jb25maWcuaAppbmRleCAwZGExOGUyY2MxYjEyOGEzZmQzYmYyNzAzMjU1YThiZmYw
YzhmZmRmLi4wMTMzMGQwYmM3ZGZiMGFmZjE2NDk3NjBmYWZiNWU3ZjFmNmZmMmQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfdHJhbnNjZWl2ZXJfY29uZmlnLmgKQEAgLTk3LDExICs5Nyw2IEBAIHN0cnVjdCBSdGNwVHJh
bnNjZWl2ZXJDb25maWcgewogICAvLyBFc3RpbWF0ZSBSVFQgYXMgbm9uLXNlbmRlciBhcyBkZXNj
cmliZWQgaW4KICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM2MTEjc2VjdGlv
bi00LjQgYW5kICNzZWN0aW9uLTQuNQogICBib29sIG5vbl9zZW5kZXJfcnR0X21lYXN1cmVtZW50
ID0gZmFsc2U7Ci0gIC8vIENvcGllcyBMYXN0U1IvRGVsYXlTaW5jZUxhc3RTUiBmb3IgcHJldmlv
dXMgcmVwb3J0IGJsb2NrIHRvIGF2b2lkCi0gIC8vIHRyaWdnZXJpbmcgYnVnIGluIG9sZGVyIHZl
cnNpb24gb2YgUnRjcFJlY2VpdmVyLgotICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84ODA1KTog
Q2hhbmdlIHRvIGZhbHNlIGJ5IGRlZmF1bHQgdGhlbiByZW1vdmUgd2hlbgotICAvLyBhbGwgbWFq
b3Igd2VicnRjIGNsaWVudHMgdXBkYXRlZCB3aXRoIHRoZSBmaXggaW4gUnRjcFJlY2VpdmVyLgot
ICBib29sIGF2b2lkX3plcm9fbGFzdF9zcl9pbl9sYXN0X3JlcG9ydF9ibG9jayA9IHRydWU7CiB9
OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3Ry
YW5zY2VpdmVyX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2ltcGwuY2MKaW5k
ZXggMmM2YzNhY2MzOTEzNjVjYTU4ZjY2ZTNkYzdlNzU2OTYzMDI3NGNjOS4uOTdjMmFjMDE4YjMx
ZDBhNTZmMjIyYTBkMDg0NDJlNWYzY2I3YWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90
cmFuc2NlaXZlcl9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXJfaW1wbC5j
YwpAQCAtNDIxLDEyICs0MjEsNiBAQCBzdGQ6OnZlY3RvcjxydGNwOjpSZXBvcnRCbG9jaz4gUnRj
cFRyYW5zY2VpdmVySW1wbDo6Q3JlYXRlUmVwb3J0QmxvY2tzKAogICAgIGF1dG8gaXQgPSByZW1v
dGVfc2VuZGVyc18uZmluZChyZXBvcnRfYmxvY2suc291cmNlX3NzcmMoKSk7CiAgICAgaWYgKGl0
ID09IHJlbW90ZV9zZW5kZXJzXy5lbmQoKSB8fAogICAgICAgICAhaXQtPnNlY29uZC5sYXN0X3Jl
Y2VpdmVkX3NlbmRlcl9yZXBvcnQpIHsKLSAgICAgIGlmIChjb25maWdfLmF2b2lkX3plcm9fbGFz
dF9zcl9pbl9sYXN0X3JlcG9ydF9ibG9jayAmJiBsYXN0X3NyICE9IDApIHsKLSAgICAgICAgLy8g
U2ltdWxhdGUgYmVoYXZpb3VyIG9mIHRoZSBSdGNwU2VuZGVyIHRvIGF2b2lkIGhpdHRpbmcgYnVn
IGluCi0gICAgICAgIC8vIFJ0Y3BSZWNlaXZlci4KLSAgICAgICAgcmVwb3J0X2Jsb2NrLlNldExh
c3RTcihsYXN0X3NyKTsKLSAgICAgICAgcmVwb3J0X2Jsb2NrLlNldERlbGF5TGFzdFNyKGxhc3Rf
ZGVsYXkpOwotICAgICAgfQogICAgICAgY29udGludWU7CiAgICAgfQogICAgIGNvbnN0IFNlbmRl
clJlcG9ydFRpbWVzJiBsYXN0X3NlbmRlcl9yZXBvcnQgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRjcF90cmFuc2NlaXZlcl9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2Nl
aXZlcl9pbXBsX3VuaXR0ZXN0LmNjCmluZGV4IGU1ZGIwODYyY2M0NzYxMDliY2M5M2IyYWJiNGIx
ZGY2ZWVlNzY1ZGMuLmU4NmQ2N2Y1NzkwYzdmMmNjZWEyZGIyNzFmZmRlNzljMTVlZjljZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXJfaW1wbF91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2ltcGxfdW5pdHRlc3QuY2MKQEAgLTc3LDcgKzc3
LDYgQEAgY29uc3RleHByIGludCBrQWxtb3N0Rm9yZXZlck1zID0gMTAwMDsKIC8vIEhlbHBlciB0
byB3YWl0IGZvciBhbiBydGNwIHBhY2tldCBwcm9kdWNlZCBvbiBhIGRpZmZlcmVudCB0aHJlYWQv
dGFzayBxdWV1ZS4KIGNsYXNzIEZha2VSdGNwVHJhbnNwb3J0IDogcHVibGljIHdlYnJ0Yzo6VHJh
bnNwb3J0IHsKICBwdWJsaWM6Ci0gIEZha2VSdGNwVHJhbnNwb3J0KCkgOiBzZW50X3J0Y3BfKGZh
bHNlLCBmYWxzZSkge30KICAgYm9vbCBTZW5kUnRjcChjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgb3ZlcnJpZGUgewogICAgIHNlbnRfcnRjcF8uU2V0KCk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xNDgsNyArMTQ3LDcgQEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJJbXBsVGVzdCwgQ2Fu
RGVzdHJveU9uVGFza1F1ZXVlKSB7CiAgIC8vIFdhaXQgZm9yIGEgcGVyaW9kaWMgcGFja2V0Lgog
ICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnQuV2FpdFBhY2tldCgpKTsKIAotICBydGM6OkV2ZW50IGRv
bmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICBxdWV1ZS5Qb3N0VGFzayhb
cnRjcF90cmFuc2NlaXZlciwgJmRvbmVdIHsKICAgICBkZWxldGUgcnRjcF90cmFuc2NlaXZlcjsK
ICAgICBkb25lLlNldCgpOwpAQCAtMTg3LDcgKzE4Niw3IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVy
SW1wbFRlc3QsIERlbGF5c1NlbmRpbmdGaXJzdENvbXBvbmRQYWNrZXQpIHsKICAgRVhQRUNUX0dF
KHJ0Yzo6VGltZU1pbGxpcygpIC0gc3RhcnRlZF9tcywgY29uZmlnLmluaXRpYWxfcmVwb3J0X2Rl
bGF5X21zKTsKIAogICAvLyBDbGVhbnVwLgotICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNl
KTsKKyAgcnRjOjpFdmVudCBkb25lOwogICBxdWV1ZS5Qb3N0VGFzayhbJl0gewogICAgIHJ0Y3Bf
dHJhbnNjZWl2ZXIucmVzZXQoKTsKICAgICBkb25lLlNldCgpOwpAQCAtMjIwLDcgKzIxOSw3IEBA
IFRFU1QoUnRjcFRyYW5zY2VpdmVySW1wbFRlc3QsIFBlcmlvZGljYWxseVNlbmRzUGFja2V0cykg
ewogICAgICAgICAgICAgY29uZmlnLnJlcG9ydF9wZXJpb2RfbXMgLSAxKTsKIAogICAvLyBDbGVh
bnVwLgotICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25l
OwogICBxdWV1ZS5Qb3N0VGFzayhbJl0gewogICAgIHJ0Y3BfdHJhbnNjZWl2ZXIucmVzZXQoKTsK
ICAgICBkb25lLlNldCgpOwpAQCAtMjQyLDcgKzI0MSw3IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVy
SW1wbFRlc3QsIFNlbmRDb21wb3VuZFBhY2tldERlbGF5c1BlcmlvZGljU2VuZFBhY2tldHMpIHsK
ICAgLy8gV2FpdCBmb3IgZmlyc3QgcGFja2V0LgogICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnQuV2Fp
dFBhY2tldCgpKTsKICAgLy8gU2VuZCBub24gcGVyaW9kaWMgb25lIGFmdGVyIGhhbGYgcGVyaW9k
LgotICBydGM6OkV2ZW50IG5vbl9wZXJpb2RpYyhmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50
IG5vbl9wZXJpb2RpYzsKICAgaW50NjRfdCB0aW1lX29mX25vbl9wZXJpb2RpY19wYWNrZXRfbXMg
PSAwOwogICBxdWV1ZS5Qb3N0RGVsYXllZFRhc2soCiAgICAgICBbJl0gewpAQCAtMjY1LDcgKzI2
NCw3IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVySW1wbFRlc3QsIFNlbmRDb21wb3VuZFBhY2tldERl
bGF5c1BlcmlvZGljU2VuZFBhY2tldHMpIHsKICAgICAgICAgICAgIGNvbmZpZy5yZXBvcnRfcGVy
aW9kX21zIC0gMSk7CiAKICAgLy8gQ2xlYW51cC4KLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBm
YWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgcXVldWUuUG9zdFRhc2soWyZdIHsKICAgICBy
dGNwX3RyYW5zY2VpdmVyLnJlc2V0KCk7CiAgICAgZG9uZS5TZXQoKTsKQEAgLTMyOSw3ICszMjgs
NyBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlckltcGxUZXN0LCBTZW5kc1BlcmlvZGljUnRjcFdoZW5O
ZXR3b3JrU3RhdGVJc1VwKSB7CiAgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydC5XYWl0UGFja2V0KCkp
OwogCiAgIC8vIENsZWFudXAuCi0gIHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFsc2UpOworICBy
dGM6OkV2ZW50IGRvbmU7CiAgIHF1ZXVlLlBvc3RUYXNrKFsmXSB7CiAgICAgcnRjcF90cmFuc2Nl
aXZlci5yZXNldCgpOwogICAgIGRvbmUuU2V0KCk7CkBAIC02NzEsNyArNjcwLDYgQEAgVEVTVChS
dGNwVHJhbnNjZWl2ZXJJbXBsVGVzdCwKIAogICBSdGNwVHJhbnNjZWl2ZXJDb25maWcgY29uZmln
OwogICBjb25maWcuc2NoZWR1bGVfcGVyaW9kaWNfY29tcG91bmRfcGFja2V0cyA9IGZhbHNlOwot
ICBjb25maWcuYXZvaWRfemVyb19sYXN0X3NyX2luX2xhc3RfcmVwb3J0X2Jsb2NrID0gZmFsc2U7
CiAgIFJ0Y3BQYWNrZXRQYXJzZXIgcnRjcF9wYXJzZXI7CiAgIFJ0Y3BQYXJzZXJUcmFuc3BvcnQg
dHJhbnNwb3J0KCZydGNwX3BhcnNlcik7CiAgIGNvbmZpZy5vdXRnb2luZ190cmFuc3BvcnQgPSAm
dHJhbnNwb3J0OwpAQCAtNzAzLDUyICs3MDEsNiBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlckltcGxU
ZXN0LAogICBFWFBFQ1RfRVEocmVwb3J0X2Jsb2Nrc1sxXS5sYXN0X3NyKCksIDB1KTsKIH0KIAot
VEVTVChSdGNwVHJhbnNjZWl2ZXJJbXBsVGVzdCwgQXZvaWRMYXN0UmVwb3J0QmxvY2tUb0hhdmVa
ZXJvTGFzdFNyRmllbGQpIHsKLSAgY29uc3QgdWludDMyX3Qga1JlbW90ZVNzcmMxID0gNTQzMjE7
Ci0gIGNvbnN0IHVpbnQzMl90IGtSZW1vdGVTc3JjMiA9IDU0MzIzOwotICBNb2NrUmVjZWl2ZVN0
YXRpc3RpY3NQcm92aWRlciByZWNlaXZlX3N0YXRpc3RpY3M7Ci0gIHN0ZDo6dmVjdG9yPFJlcG9y
dEJsb2NrPiBzdGF0aXN0aWNzX3JlcG9ydF9ibG9ja3MoMik7Ci0gIHN0YXRpc3RpY3NfcmVwb3J0
X2Jsb2Nrc1swXS5TZXRNZWRpYVNzcmMoa1JlbW90ZVNzcmMxKTsKLSAgc3RhdGlzdGljc19yZXBv
cnRfYmxvY2tzWzFdLlNldE1lZGlhU3NyYyhrUmVtb3RlU3NyYzIpOwotICBPTl9DQUxMKHJlY2Vp
dmVfc3RhdGlzdGljcywgUnRjcFJlcG9ydEJsb2NrcyhfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0
KFJldHVybihzdGF0aXN0aWNzX3JlcG9ydF9ibG9ja3MpKTsKLQotICBSdGNwVHJhbnNjZWl2ZXJD
b25maWcgY29uZmlnOwotICBjb25maWcuc2NoZWR1bGVfcGVyaW9kaWNfY29tcG91bmRfcGFja2V0
cyA9IGZhbHNlOwotICBjb25maWcuYXZvaWRfemVyb19sYXN0X3NyX2luX2xhc3RfcmVwb3J0X2Js
b2NrID0gdHJ1ZTsKLSAgUnRjcFBhY2tldFBhcnNlciBydGNwX3BhcnNlcjsKLSAgUnRjcFBhcnNl
clRyYW5zcG9ydCB0cmFuc3BvcnQoJnJ0Y3BfcGFyc2VyKTsKLSAgY29uZmlnLm91dGdvaW5nX3Ry
YW5zcG9ydCA9ICZ0cmFuc3BvcnQ7Ci0gIGNvbmZpZy5yZWNlaXZlX3N0YXRpc3RpY3MgPSAmcmVj
ZWl2ZV9zdGF0aXN0aWNzOwotICBSdGNwVHJhbnNjZWl2ZXJJbXBsIHJ0Y3BfdHJhbnNjZWl2ZXIo
Y29uZmlnKTsKLQotICBjb25zdCBOdHBUaW1lIGtSZW1vdGVOdHAoMHg5ODc2NTQzMjExKTsKLSAg
Ly8gUmVjZWl2ZSBTZW5kZXJSZXBvcnQgZm9yIFJlbW90ZVNzcmMxLCBidXQgbm8gcmVwb3J0IGZv
ciBSZW1vdGVTc3JjMi4KLSAgU2VuZGVyUmVwb3J0IHNyOwotICBzci5TZXRTZW5kZXJTc3JjKGtS
ZW1vdGVTc3JjMSk7Ci0gIHNyLlNldE50cChrUmVtb3RlTnRwKTsKLSAgYXV0byByYXdfcGFja2V0
ID0gc3IuQnVpbGQoKTsKLSAgcnRjcF90cmFuc2NlaXZlci5SZWNlaXZlUGFja2V0KHJhd19wYWNr
ZXQsIC8qbm93X3VzPSovMCk7Ci0KLSAgLy8gVHJpZ2dlciBzZW5kaW5nIFJlY2VpdmVyUmVwb3J0
LgotICBydGNwX3RyYW5zY2VpdmVyLlNlbmRDb21wb3VuZFBhY2tldCgpOwotCi0gIEVYUEVDVF9H
VChydGNwX3BhcnNlci5yZWNlaXZlcl9yZXBvcnQoKS0+bnVtX3BhY2tldHMoKSwgMCk7Ci0gIGNv
bnN0IGF1dG8mIHJlcG9ydF9ibG9ja3MgPSBydGNwX3BhcnNlci5yZWNlaXZlcl9yZXBvcnQoKS0+
cmVwb3J0X2Jsb2NrcygpOwotICBBU1NFUlRfRVEocmVwb3J0X2Jsb2Nrcy5zaXplKCksIDJ1KTsK
LSAgLy8gUnRjcFRyYW5zY2VpdmVySW1wbCBkb2Vzbid0IGd1YXJhbnRlZSBvcmRlciBvZiB0aGUg
cmVwb3J0IGJsb2NrcwotICAvLyBtYXRjaCByZXN1bHQgb2YgUmVjZWl2ZVN0YXRpc3RpY3NQcm92
aWRlcjo6UnRjcFJlcG9ydEJsb2NrcyBjYWxsYmFjaywKLSAgLy8gYnV0IGZvciBzaW1wbGljaXR5
IG9mIHRoZSB0ZXN0IGFzdW1lIGl0IGlzIHRoZSBzYW1lLgotICBBU1NFUlRfRVEocmVwb3J0X2Js
b2Nrc1swXS5zb3VyY2Vfc3NyYygpLCBrUmVtb3RlU3NyYzEpOwotICBFWFBFQ1RfTkUocmVwb3J0
X2Jsb2Nrc1swXS5sYXN0X3NyKCksIDB1KTsKLQotICBBU1NFUlRfRVEocmVwb3J0X2Jsb2Nrc1sx
XS5zb3VyY2Vfc3NyYygpLCBrUmVtb3RlU3NyYzIpOwotICAvLyBObyBTZW5kZXIgUmVwb3J0IGZv
ciBrUmVtb3RlU3NyYzIsIHVzZSBzYW1lIExhc3RTUiBhcyBmb3Iga1JlbW90ZVNzcmMxCi0gIEVY
UEVDVF9FUShyZXBvcnRfYmxvY2tzWzFdLmxhc3Rfc3IoKSwgcmVwb3J0X2Jsb2Nrc1swXS5sYXN0
X3NyKCkpOwotICBFWFBFQ1RfRVEocmVwb3J0X2Jsb2Nrc1sxXS5kZWxheV9zaW5jZV9sYXN0X3Ny
KCksCi0gICAgICAgICAgICByZXBvcnRfYmxvY2tzWzBdLmRlbGF5X3NpbmNlX2xhc3Rfc3IoKSk7
Ci19Ci0KIFRFU1QoUnRjcFRyYW5zY2VpdmVySW1wbFRlc3QsCiAgICAgIFdoZW5TZW5kc1JlY2Vp
dmVyUmVwb3J0Q2FsY3VsYXRlc0RlbGF5U2luY2VMYXN0U2VuZGVyUmVwb3J0KSB7CiAgIGNvbnN0
IHVpbnQzMl90IGtSZW1vdGVTc3JjMSA9IDQzMjE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3RyYW5zY2VpdmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlcl91bml0
dGVzdC5jYwppbmRleCAyZWE1YmM5YjUzNzdkMjEyYzg3ZTMxOTBiYTUwNzM0Mjk1MzZkNzBiLi5k
NzE5MThkYjAzYjRmN2E1NmMzMzhjNzZiNWQ0OGFjMGUxMmFhYmYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3RyYW5zY2VpdmVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJh
bnNjZWl2ZXJfdW5pdHRlc3QuY2MKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgTW9ja01lZGlhUmVj
ZWl2ZXJSdGNwT2JzZXJ2ZXIgOiBwdWJsaWMgd2VicnRjOjpNZWRpYVJlY2VpdmVyUnRjcE9ic2Vy
dmVyIHsKIGNvbnN0ZXhwciBpbnQga1RpbWVvdXRNcyA9IDEwMDA7CiAKIHZvaWQgV2FpdFBvc3Rl
ZFRhc2tzKHJ0Yzo6VGFza1F1ZXVlKiBxdWV1ZSkgewotICBydGM6OkV2ZW50IGRvbmUoZmFsc2Us
IGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICBxdWV1ZS0+UG9zdFRhc2soWyZkb25lXSB7
IGRvbmUuU2V0KCk7IH0pOwogICBBU1NFUlRfVFJVRShkb25lLldhaXQoa1RpbWVvdXRNcykpOwog
fQpAQCAtMTA4LDggKzEwOCw4IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVyVGVzdCwgQ2FuQmVEZXN0
cm95ZWRXaXRob3V0QmxvY2tpbmcpIHsKICAgYXV0byogcnRjcF90cmFuc2NlaXZlciA9IG5ldyBS
dGNwVHJhbnNjZWl2ZXIoY29uZmlnKTsKICAgcnRjcF90cmFuc2NlaXZlci0+U2VuZENvbXBvdW5k
UGFja2V0KCk7CiAKLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7Ci0gIHJ0Yzo6RXZl
bnQgaGVhdnlfdGFzayhmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CisgIHJ0Yzo6
RXZlbnQgaGVhdnlfdGFzazsKICAgcXVldWUuUG9zdFRhc2soWyZdIHsKICAgICBFWFBFQ1RfVFJV
RShoZWF2eV90YXNrLldhaXQoa1RpbWVvdXRNcykpOwogICAgIGRvbmUuU2V0KCk7CkBAIC0xMjgs
NyArMTI4LDcgQEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJUZXN0LCBNYXlTZW5kUGFja2V0c0FmdGVy
RGVzdHJ1Y3RvcikgeyAgLy8gaS5lLiBCZSBjYXJlZnVsIQogICBjb25maWcudGFza19xdWV1ZSA9
ICZxdWV1ZTsKICAgYXV0byogcnRjcF90cmFuc2NlaXZlciA9IG5ldyBSdGNwVHJhbnNjZWl2ZXIo
Y29uZmlnKTsKIAotICBydGM6OkV2ZW50IGhlYXZ5X3Rhc2soZmFsc2UsIGZhbHNlKTsKKyAgcnRj
OjpFdmVudCBoZWF2eV90YXNrOwogICBxdWV1ZS5Qb3N0VGFzayhbJl0geyBFWFBFQ1RfVFJVRSho
ZWF2eV90YXNrLldhaXQoa1RpbWVvdXRNcykpOyB9KTsKICAgcnRjcF90cmFuc2NlaXZlci0+U2Vu
ZENvbXBvdW5kUGFja2V0KCk7CiAgIGRlbGV0ZSBydGNwX3RyYW5zY2VpdmVyOwpAQCAtMTU4LDcg
KzE1OCw3IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVyVGVzdCwgRG9lc250UG9zdFRvUnRjcE9ic2Vy
dmVyQWZ0ZXJDYWxsVG9SZW1vdmUpIHsKICAgY29uZmlnLm91dGdvaW5nX3RyYW5zcG9ydCA9ICZu
dWxsX3RyYW5zcG9ydDsKICAgY29uZmlnLnRhc2tfcXVldWUgPSAmcXVldWU7CiAgIFJ0Y3BUcmFu
c2NlaXZlciBydGNwX3RyYW5zY2VpdmVyKGNvbmZpZyk7Ci0gIHJ0Yzo6RXZlbnQgb2JzZXJ2ZXJf
ZGVsZXRlZChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IG9ic2VydmVyX2RlbGV0ZWQ7CiAK
ICAgYXV0byBvYnNlcnZlciA9IGFic2w6Om1ha2VfdW5pcXVlPE1vY2tNZWRpYVJlY2VpdmVyUnRj
cE9ic2VydmVyPigpOwogICBFWFBFQ1RfQ0FMTCgqb2JzZXJ2ZXIsIE9uU2VuZGVyUmVwb3J0KGtS
ZW1vdGVTc3JjLCBfLCAxKSk7CkBAIC0xNjYsMTIgKzE2NiwxMSBAQCBURVNUKFJ0Y3BUcmFuc2Nl
aXZlclRlc3QsIERvZXNudFBvc3RUb1J0Y3BPYnNlcnZlckFmdGVyQ2FsbFRvUmVtb3ZlKSB7CiAK
ICAgcnRjcF90cmFuc2NlaXZlci5BZGRNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKGtSZW1vdGVT
c3JjLCBvYnNlcnZlci5nZXQoKSk7CiAgIHJ0Y3BfdHJhbnNjZWl2ZXIuUmVjZWl2ZVBhY2tldChD
cmVhdGVTZW5kZXJSZXBvcnQoa1JlbW90ZVNzcmMsIDEpKTsKLSAgcnRjcF90cmFuc2NlaXZlci5S
ZW1vdmVNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKAotICAgICAga1JlbW90ZVNzcmMsIG9ic2Vy
dmVyLmdldCgpLAotICAgICAgLypvbl9yZW1vdmVkPSovcnRjOjpOZXdDbG9zdXJlKFsmXSB7Ci0g
ICAgICAgIG9ic2VydmVyLnJlc2V0KCk7Ci0gICAgICAgIG9ic2VydmVyX2RlbGV0ZWQuU2V0KCk7
Ci0gICAgICB9KSk7CisgIHJ0Y3BfdHJhbnNjZWl2ZXIuUmVtb3ZlTWVkaWFSZWNlaXZlclJ0Y3BP
YnNlcnZlcihrUmVtb3RlU3NyYywgb2JzZXJ2ZXIuZ2V0KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm9uX3JlbW92ZWQ9Ki9bJl0geworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZl
ci5yZXNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYnNlcnZlcl9kZWxldGVkLlNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgIHJ0Y3BfdHJhbnNjZWl2ZXIuUmVjZWl2
ZVBhY2tldChDcmVhdGVTZW5kZXJSZXBvcnQoa1JlbW90ZVNzcmMsIDIpKTsKIAogICBFWFBFQ1Rf
VFJVRShvYnNlcnZlcl9kZWxldGVkLldhaXQoa1RpbWVvdXRNcykpOwpAQCAtMTg5LDE1ICsxODgs
MTQgQEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJUZXN0LCBSZW1vdmVNZWRpYVJlY2VpdmVyUnRjcE9i
c2VydmVySXNOb25CbG9ja2luZykgewogICBhdXRvIG9ic2VydmVyID0gYWJzbDo6bWFrZV91bmlx
dWU8TW9ja01lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXI+KCk7CiAgIHJ0Y3BfdHJhbnNjZWl2ZXIu
QWRkTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlcihrUmVtb3RlU3NyYywgb2JzZXJ2ZXIuZ2V0KCkp
OwogCi0gIHJ0Yzo6RXZlbnQgcXVldWVfYmxvY2tlcihmYWxzZSwgZmFsc2UpOwotICBydGM6OkV2
ZW50IG9ic2VydmVyX2RlbGV0ZWQoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBxdWV1ZV9i
bG9ja2VyOworICBydGM6OkV2ZW50IG9ic2VydmVyX2RlbGV0ZWQ7CiAgIHF1ZXVlLlBvc3RUYXNr
KFsmXSB7IEVYUEVDVF9UUlVFKHF1ZXVlX2Jsb2NrZXIuV2FpdChrVGltZW91dE1zKSk7IH0pOwot
ICBydGNwX3RyYW5zY2VpdmVyLlJlbW92ZU1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIoCi0gICAg
ICBrUmVtb3RlU3NyYywgb2JzZXJ2ZXIuZ2V0KCksCi0gICAgICAvKm9uX3JlbW92ZWQ9Ki9ydGM6
Ok5ld0Nsb3N1cmUoWyZdIHsKLSAgICAgICAgb2JzZXJ2ZXIucmVzZXQoKTsKLSAgICAgICAgb2Jz
ZXJ2ZXJfZGVsZXRlZC5TZXQoKTsKLSAgICAgIH0pKTsKKyAgcnRjcF90cmFuc2NlaXZlci5SZW1v
dmVNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKGtSZW1vdGVTc3JjLCBvYnNlcnZlci5nZXQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qb25f
cmVtb3ZlZD0qL1smXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9ic2VydmVyLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyX2RlbGV0ZWQuU2V0KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKIAogICBF
WFBFQ1RfVEhBVChvYnNlcnZlciwgTm90KElzTnVsbCgpKSk7CiAgIHF1ZXVlX2Jsb2NrZXIuU2V0
KCk7CkBAIC0yNDIsMTIgKzI0MCwxMiBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlclRlc3QsIERvZXNu
dFNlbmRQYWNrZXRzQWZ0ZXJTdG9wQ2FsbGJhY2spIHsKICAgY29uZmlnLnNjaGVkdWxlX3Blcmlv
ZGljX2NvbXBvdW5kX3BhY2tldHMgPSB0cnVlOwogCiAgIGF1dG8gcnRjcF90cmFuc2NlaXZlciA9
IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y3BUcmFuc2NlaXZlcj4oY29uZmlnKTsKLSAgcnRjOjpFdmVu
dCBkb25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgcnRjcF90cmFuc2Nl
aXZlci0+U2VuZENvbXBvdW5kUGFja2V0KCk7Ci0gIHJ0Y3BfdHJhbnNjZWl2ZXItPlN0b3AocnRj
OjpOZXdDbG9zdXJlKFsmXSB7CisgIHJ0Y3BfdHJhbnNjZWl2ZXItPlN0b3AoWyZdIHsKICAgICBF
WFBFQ1RfQ0FMTChvdXRnb2luZ190cmFuc3BvcnQsIFNlbmRSdGNwKS5UaW1lcygwKTsKICAgICBk
b25lLlNldCgpOwotICB9KSk7CisgIH0pOwogICBydGNwX3RyYW5zY2VpdmVyID0gbnVsbHB0cjsK
ICAgRVhQRUNUX1RSVUUoZG9uZS5XYWl0KGtUaW1lb3V0TXMpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF9mb3JtYXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmNjCmluZGV4IDEzZWMw
YWZlOWY3YmQ2NzVhYzk4NDFiZTQxY2I5OThiOWVmMTUxYjAuLjAwMTBkOTA3NTBmMjllZmQwMDFh
OGE1ZDJiODExMzZiZWZlOWMzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXQuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5jYwpAQCAtMTAsMTMgKzEwLDE1IEBACiAKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmgiCiAKLSNpbmNsdWRlIDx1
dGlsaXR5PgotCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJz
bC90eXBlcy92YXJpYW50LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2Zvcm1hdF9oMjY0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zv
cm1hdF92aWRlb19nZW5lcmljLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX2Zvcm1hdF92cDguaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
Zm9ybWF0X3ZwOS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0
L2luY2x1ZGUvaDI2NF9nbG9iYWxzLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF9nbG9iYWxzLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOS9pbmNsdWRlL3ZwOV9nbG9iYWxzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNjMsNiArNjUsMTEgQEAg
c3RkOjp2ZWN0b3I8aW50PiBSdHBQYWNrZXRpemVyOjpTcGxpdEFib3V0RXF1YWxseSgKICAgUlRD
X0RDSEVDS19HRShsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiwgMCk7CiAKICAgc3Rk
Ojp2ZWN0b3I8aW50PiByZXN1bHQ7CisgIGlmIChsaW1pdHMubWF4X3BheWxvYWRfbGVuID49Cisg
ICAgICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuICsgcGF5bG9hZF9sZW4pIHsK
KyAgICByZXN1bHQucHVzaF9iYWNrKHBheWxvYWRfbGVuKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
ICB9CiAgIGlmIChsaW1pdHMubWF4X3BheWxvYWRfbGVuIC0gbGltaXRzLmZpcnN0X3BhY2tldF9y
ZWR1Y3Rpb25fbGVuIDwgMSB8fAogICAgICAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiAtIGxpbWl0
cy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuIDwgMSkgewogICAgIC8vIENhcGFjaXR5IGlzIG5v
dCBlbm91Z2ggdG8gcHV0IGEgc2luZ2xlIGJ5dGUgaW50byBvbmUgb2YgdGhlIHBhY2tldHMuCkBA
IC03Nyw2ICs4NCwxMCBAQCBzdGQ6OnZlY3RvcjxpbnQ+IFJ0cFBhY2tldGl6ZXI6OlNwbGl0QWJv
dXRFcXVhbGx5KAogICAvLyBJbnRlZ2VyIGRpdmlzaW9ucyB3aXRoIHJvdW5kaW5nIHVwLgogICBp
bnQgbnVtX3BhY2tldHNfbGVmdCA9CiAgICAgICAodG90YWxfYnl0ZXMgKyBsaW1pdHMubWF4X3Bh
eWxvYWRfbGVuIC0gMSkgLyBsaW1pdHMubWF4X3BheWxvYWRfbGVuOworICBpZiAobnVtX3BhY2tl
dHNfbGVmdCA9PSAxKSB7CisgICAgLy8gU2luZ2xlIHBhY2tldCBpcyBhIHNwZWNpYWwgY2FzZSBo
YW5kbGVkIGFib3ZlLgorICAgIG51bV9wYWNrZXRzX2xlZnQgPSAyOworICB9CiAKICAgaWYgKHBh
eWxvYWRfbGVuIDwgbnVtX3BhY2tldHNfbGVmdCkgewogICAgIC8vIEVkZ2UgY2FzZSB3aGVyZSBs
aW1pdHMgZm9yY2UgdG8gaGF2ZSBtb3JlIHBhY2tldHMgdGhhbiB0aGVyZSBhcmUgcGF5bG9hZApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5o
CmluZGV4IDlmYWQ0Y2Y4Zjk3NjFjYWNiZjNjODdjYTQwNTFkNWI0YmU2MjFlNGQuLjcxYzdkYzVl
MGVjZDhkNGZhODBhMDc5YjE5MWE3OGY0MjNjZmI0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9mb3JtYXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmgKQEAgLTExLDE3ICsxMSwxNyBA
QAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfRk9STUFUX0hfCiAjZGVmaW5l
IE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9GT1JNQVRfSF8KIAorI2luY2x1ZGUgPHN0ZGlu
dC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJjb21tb25fdHlw
ZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVk
ZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3ZpZGVvX2hlYWRl
ci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKKwogY2xhc3MgUnRwUGFja2V0VG9TZW5kOwogCiBj
bGFzcyBSdHBQYWNrZXRpemVyIHsKQEAgLTMwLDYgKzMwLDggQEAgY2xhc3MgUnRwUGFja2V0aXpl
ciB7CiAgICAgaW50IG1heF9wYXlsb2FkX2xlbiA9IDEyMDA7CiAgICAgaW50IGZpcnN0X3BhY2tl
dF9yZWR1Y3Rpb25fbGVuID0gMDsKICAgICBpbnQgbGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9
IDA7CisgICAgLy8gUmVkdWN0aW9uIGxlbiBmb3IgcGFja2V0IHRoYXQgaXMgZmlyc3QgJiBsYXN0
IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgaW50IHNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9
IDA7CiAgIH07CiAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0aXplcj4gQ3JlYXRl
KAogICAgICAgVmlkZW9Db2RlY1R5cGUgdHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9m
b3JtYXRfaDI2NC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfaDI2NC5jYwppbmRleCA5NzkzZWJh
ZTI1OTEzMWRkZmVjODFlMzE3NmUyNzg4ZmEyNDhlMDdkLi43YTdiY2RmYmI4OWM4NzQ4OTFmYTJj
ZTIyMDIyZWM1YzllNzFhZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gyNjQu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0LmNjCkBAIC0xMSwxMCArMTEsMTYgQEAK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gyNjQuaCIKIAog
I2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y3N0ZGlu
dD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dXRp
bGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFs
LmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy92YXJpYW50LmgiCisjaW5jbHVkZSAiY29tbW9uX3R5
cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJjb21tb25fdmlkZW8v
aDI2NC9oMjY0X2NvbW1vbi5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0L3Bwc19wYXJz
ZXIuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9zcHNfcGFyc2VyLmgiCkBAIC0xODYs
OSArMTkyLDExIEBAIGJvb2wgUnRwUGFja2V0aXplckgyNjQ6OkdlbmVyYXRlUGFja2V0cygKICAg
ICAgIGNhc2UgSDI2NFBhY2tldGl6YXRpb25Nb2RlOjpOb25JbnRlcmxlYXZlZDoKICAgICAgICAg
aW50IGZyYWdtZW50X2xlbiA9IGlucHV0X2ZyYWdtZW50c19baV0ubGVuZ3RoOwogICAgICAgICBp
bnQgc2luZ2xlX3BhY2tldF9jYXBhY2l0eSA9IGxpbWl0c18ubWF4X3BheWxvYWRfbGVuOwotICAg
ICAgICBpZiAoaSA9PSAwKQorICAgICAgICBpZiAoaW5wdXRfZnJhZ21lbnRzXy5zaXplKCkgPT0g
MSkKKyAgICAgICAgICBzaW5nbGVfcGFja2V0X2NhcGFjaXR5IC09IGxpbWl0c18uc2luZ2xlX3Bh
Y2tldF9yZWR1Y3Rpb25fbGVuOworICAgICAgICBlbHNlIGlmIChpID09IDApCiAgICAgICAgICAg
c2luZ2xlX3BhY2tldF9jYXBhY2l0eSAtPSBsaW1pdHNfLmZpcnN0X3BhY2tldF9yZWR1Y3Rpb25f
bGVuOwotICAgICAgICBpZiAoaSArIDEgPT0gaW5wdXRfZnJhZ21lbnRzXy5zaXplKCkpCisgICAg
ICAgIGVsc2UgaWYgKGkgKyAxID09IGlucHV0X2ZyYWdtZW50c18uc2l6ZSgpKQogICAgICAgICAg
IHNpbmdsZV9wYWNrZXRfY2FwYWNpdHkgLT0gbGltaXRzXy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25f
bGVuOwogCiAgICAgICAgIGlmIChmcmFnbWVudF9sZW4gPiBzaW5nbGVfcGFja2V0X2NhcGFjaXR5
KSB7CkBAIC0yMTEsNyArMjE5LDEwIEBAIGJvb2wgUnRwUGFja2V0aXplckgyNjQ6OlBhY2tldGl6
ZUZ1QShzaXplX3QgZnJhZ21lbnRfaW5kZXgpIHsKICAgUGF5bG9hZFNpemVMaW1pdHMgbGltaXRz
ID0gbGltaXRzXzsKICAgLy8gTGVhdmUgcm9vbSBmb3IgdGhlIEZVLUEgaGVhZGVyLgogICBsaW1p
dHMubWF4X3BheWxvYWRfbGVuIC09IGtGdUFIZWFkZXJTaXplOwotICAvLyBJZ25vcmUgZmlyc3Qv
bGFzdCBwYWNrZXQgcmVkdWN0aW9ucyB1bmxlc3MgaXQgaXMgZmlyc3QvbGFzdCBmcmFnbWVudC4K
KyAgLy8gSWdub3JlIHNpbmdsZS9maXJzdC9sYXN0IHBhY2tldCByZWR1Y3Rpb25zIHVubGVzcyBp
dCBpcyBzaW5nbGUvZmlyc3QvbGFzdAorICAvLyBmcmFnbWVudC4KKyAgaWYgKGlucHV0X2ZyYWdt
ZW50c18uc2l6ZSgpICE9IDEpCisgICAgbGltaXRzLnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xl
biA9IDA7CiAgIGlmIChmcmFnbWVudF9pbmRleCAhPSAwKQogICAgIGxpbWl0cy5maXJzdF9wYWNr
ZXRfcmVkdWN0aW9uX2xlbiA9IDA7CiAgIGlmIChmcmFnbWVudF9pbmRleCAhPSBpbnB1dF9mcmFn
bWVudHNfLnNpemUoKSAtIDEpCkBAIC0yNDMsMTcgKzI1NCwzMSBAQCBib29sIFJ0cFBhY2tldGl6
ZXJIMjY0OjpQYWNrZXRpemVGdUEoc2l6ZV90IGZyYWdtZW50X2luZGV4KSB7CiBzaXplX3QgUnRw
UGFja2V0aXplckgyNjQ6OlBhY2tldGl6ZVN0YXBBKHNpemVfdCBmcmFnbWVudF9pbmRleCkgewog
ICAvLyBBZ2dyZWdhdGUgZnJhZ21lbnRzIGludG8gb25lIHBhY2tldCAoU1RBUC1BKS4KICAgc2l6
ZV90IHBheWxvYWRfc2l6ZV9sZWZ0ID0gbGltaXRzXy5tYXhfcGF5bG9hZF9sZW47Ci0gIGlmIChm
cmFnbWVudF9pbmRleCA9PSAwKQorICBpZiAoaW5wdXRfZnJhZ21lbnRzXy5zaXplKCkgPT0gMSkK
KyAgICBwYXlsb2FkX3NpemVfbGVmdCAtPSBsaW1pdHNfLnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9u
X2xlbjsKKyAgZWxzZSBpZiAoZnJhZ21lbnRfaW5kZXggPT0gMCkKICAgICBwYXlsb2FkX3NpemVf
bGVmdCAtPSBsaW1pdHNfLmZpcnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuOwogICBpbnQgYWdncmVn
YXRlZF9mcmFnbWVudHMgPSAwOwogICBzaXplX3QgZnJhZ21lbnRfaGVhZGVyc19sZW5ndGggPSAw
OwogICBjb25zdCBGcmFnbWVudCogZnJhZ21lbnQgPSAmaW5wdXRfZnJhZ21lbnRzX1tmcmFnbWVu
dF9pbmRleF07CiAgIFJUQ19DSEVDS19HRShwYXlsb2FkX3NpemVfbGVmdCwgZnJhZ21lbnQtPmxl
bmd0aCk7CiAgICsrbnVtX3BhY2tldHNfbGVmdF87Ci0gIHdoaWxlIChwYXlsb2FkX3NpemVfbGVm
dCA+PSBmcmFnbWVudC0+bGVuZ3RoICsgZnJhZ21lbnRfaGVhZGVyc19sZW5ndGggJiYKLSAgICAg
ICAgIChmcmFnbWVudF9pbmRleCArIDEgPCBpbnB1dF9mcmFnbWVudHNfLnNpemUoKSB8fAotICAg
ICAgICAgIHBheWxvYWRfc2l6ZV9sZWZ0ID49IGZyYWdtZW50LT5sZW5ndGggKyBmcmFnbWVudF9o
ZWFkZXJzX2xlbmd0aCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0
c18ubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbikpIHsKKworICBhdXRvIHBheWxvYWRfc2l6ZV9u
ZWVkZWQgPSBbJl0geworICAgIHNpemVfdCBmcmFnbWVudF9zaXplID0gZnJhZ21lbnQtPmxlbmd0
aCArIGZyYWdtZW50X2hlYWRlcnNfbGVuZ3RoOworICAgIGlmIChpbnB1dF9mcmFnbWVudHNfLnNp
emUoKSA9PSAxKSB7CisgICAgICAvLyBTaW5nbGUgZnJhZ21lbnQsIHNpbmdsZSBwYWNrZXQsIHBh
eWxvYWRfc2l6ZV9sZWZ0IGFscmVhZHkgYWRqdXN0ZWQKKyAgICAgIC8vIHdpdGggbGltaXRzXy5z
aW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW4uCisgICAgICByZXR1cm4gZnJhZ21lbnRfc2l6ZTsK
KyAgICB9CisgICAgaWYgKGZyYWdtZW50X2luZGV4ID09IGlucHV0X2ZyYWdtZW50c18uc2l6ZSgp
IC0gMSkgeworICAgICAgLy8gTGFzdCBmcmFnbWVudCwgc28gU3RyYXBBIG1pZ2h0IGJlIHRoZSBs
YXN0IHBhY2tldC4KKyAgICAgIHJldHVybiBmcmFnbWVudF9zaXplICsgbGltaXRzXy5sYXN0X3Bh
Y2tldF9yZWR1Y3Rpb25fbGVuOworICAgIH0KKyAgICByZXR1cm4gZnJhZ21lbnRfc2l6ZTsKKyAg
fTsKKworICB3aGlsZSAocGF5bG9hZF9zaXplX2xlZnQgPj0gcGF5bG9hZF9zaXplX25lZWRlZCgp
KSB7CiAgICAgUlRDX0NIRUNLX0dUKGZyYWdtZW50LT5sZW5ndGgsIDApOwogICAgIHBhY2tldHNf
LnB1c2goUGFja2V0VW5pdCgqZnJhZ21lbnQsIGFnZ3JlZ2F0ZWRfZnJhZ21lbnRzID09IDAsIGZh
bHNlLCB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudC0+YnVmZmVy
WzBdKSk7CkBAIC0yODIsOSArMzA3LDExIEBAIHNpemVfdCBSdHBQYWNrZXRpemVySDI2NDo6UGFj
a2V0aXplU3RhcEEoc2l6ZV90IGZyYWdtZW50X2luZGV4KSB7CiBib29sIFJ0cFBhY2tldGl6ZXJI
MjY0OjpQYWNrZXRpemVTaW5nbGVOYWx1KHNpemVfdCBmcmFnbWVudF9pbmRleCkgewogICAvLyBB
ZGQgYSBzaW5nbGUgTkFMVSB0byB0aGUgcXVldWUsIG5vIGFnZ3JlZ2F0aW9uLgogICBzaXplX3Qg
cGF5bG9hZF9zaXplX2xlZnQgPSBsaW1pdHNfLm1heF9wYXlsb2FkX2xlbjsKLSAgaWYgKGZyYWdt
ZW50X2luZGV4ID09IDApCisgIGlmIChpbnB1dF9mcmFnbWVudHNfLnNpemUoKSA9PSAxKQorICAg
IHBheWxvYWRfc2l6ZV9sZWZ0IC09IGxpbWl0c18uc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVu
OworICBlbHNlIGlmIChmcmFnbWVudF9pbmRleCA9PSAwKQogICAgIHBheWxvYWRfc2l6ZV9sZWZ0
IC09IGxpbWl0c18uZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW47Ci0gIGlmIChmcmFnbWVudF9p
bmRleCArIDEgPT0gaW5wdXRfZnJhZ21lbnRzXy5zaXplKCkpCisgIGVsc2UgaWYgKGZyYWdtZW50
X2luZGV4ICsgMSA9PSBpbnB1dF9mcmFnbWVudHNfLnNpemUoKSkKICAgICBwYXlsb2FkX3NpemVf
bGVmdCAtPSBsaW1pdHNfLmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW47CiAgIGNvbnN0IEZyYWdt
ZW50KiBmcmFnbWVudCA9ICZpbnB1dF9mcmFnbWVudHNfW2ZyYWdtZW50X2luZGV4XTsKICAgaWYg
KHBheWxvYWRfc2l6ZV9sZWZ0IDwgZnJhZ21lbnQtPmxlbmd0aCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX2Zvcm1hdF9oMjY0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gyNjQuaAppbmRl
eCA3M2U0MDg3OGExOGJkOWVkZDFkNTAxNmYwYmY2YjkzMDNiMGNlYWExLi5mYmQ0ZmQ5NTA5MDc1
ZDhmYjg1MmUzM2Q0NTI2YmIzMmUzMzhkMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9y
bWF0X2gyNjQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gyNjQuaApAQCAtMTEsMTIgKzEx
LDE3IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9GT1JNQVRfSDI2NF9I
XwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfRk9STUFUX0gyNjRfSF8KIAor
I2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPGRlcXVl
PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxxdWV1ZT4KLSNpbmNsdWRlIDxzdHJpbmc+
CiAKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVk
ZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX2Zvcm1hdC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9w
YWNrZXRfdG9fc2VuZC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9o
MjY0L2luY2x1ZGUvaDI2NF9nbG9iYWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfZm9ybWF0X2gyNjRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0
X2gyNjRfdW5pdHRlc3QuY2MKaW5kZXggZWRmOTA3YWFjODU5Y2Y0N2VmMTBmMDZhOWJlMGFmODZj
YzlkOWZmOC4uYWVhYjgxM2I1M2UyNjUxYzRkZWIwMjA5NDQ3NDY1NGFjZmI1NGJhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9mb3JtYXRfaDI2NF91bml0dGVzdC5jYwpAQCAtMzkwLDcgKzM5MCw3IEBAIHN0ZDo6dmVj
dG9yPGludD4gVGVzdEZ1YShzaXplX3QgZnJhbWVfcGF5bG9hZF9zaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vRnJhZ21lbnRhdGlvbihmcmFtZSkpOwogICBzdGQ6OnZlY3Rv
cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tldHMgPSBGZXRjaEFsbFBhY2tldHMoJnBhY2tldGl6ZXIp
OwogCi0gIFJUQ19DSEVDS19HRShwYWNrZXRzLnNpemUoKSwgMik7ICAvLyBTaW5nbGUgcGFja2V0
IGluZGljYXRlcyBpdCBpcyBub3QgRnVBLgorICBFWFBFQ1RfR0UocGFja2V0cy5zaXplKCksIDJ1
KTsgIC8vIFNpbmdsZSBwYWNrZXQgaW5kaWNhdGVzIGl0IGlzIG5vdCBGdUEuCiAgIHN0ZDo6dmVj
dG9yPHVpbnQxNl90PiBmdWFfaGVhZGVyOwogICBzdGQ6OnZlY3RvcjxpbnQ+IHBheWxvYWRfc2l6
ZXM7CiAKQEAgLTQyMiw2ICs0MjIsNyBAQCBURVNUKFJ0cFBhY2tldGl6ZXJIMjY0VGVzdCwgRlVB
V2l0aEZpcnN0UGFja2V0UmVkdWN0aW9uKSB7CiAgIFJ0cFBhY2tldGl6ZXI6OlBheWxvYWRTaXpl
TGltaXRzIGxpbWl0czsKICAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiA9IDEyMDA7CiAgIGxpbWl0
cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDQ7CisgIGxpbWl0cy5zaW5nbGVfcGFja2V0
X3JlZHVjdGlvbl9sZW4gPSA0OwogICBFWFBFQ1RfVEhBVChUZXN0RnVhKDExOTgsIGxpbWl0cyks
IEVsZW1lbnRzQXJlKDU5NywgNjAxKSk7CiB9CiAKQEAgLTQyOSwxNCArNDMwLDE0IEBAIFRFU1Qo
UnRwUGFja2V0aXplckgyNjRUZXN0LCBGVUFXaXRoTGFzdFBhY2tldFJlZHVjdGlvbikgewogICBS
dHBQYWNrZXRpemVyOjpQYXlsb2FkU2l6ZUxpbWl0cyBsaW1pdHM7CiAgIGxpbWl0cy5tYXhfcGF5
bG9hZF9sZW4gPSAxMjAwOwogICBsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDQ7
CisgIGxpbWl0cy5zaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA0OwogICBFWFBFQ1RfVEhB
VChUZXN0RnVhKDExOTgsIGxpbWl0cyksIEVsZW1lbnRzQXJlKDYwMSwgNTk3KSk7CiB9CiAKLVRF
U1QoUnRwUGFja2V0aXplckgyNjRUZXN0LCBGVUFXaXRoRmlyc3RBbmRMYXN0UGFja2V0UmVkdWN0
aW9uKSB7CitURVNUKFJ0cFBhY2tldGl6ZXJIMjY0VGVzdCwgRlVBV2l0aFNpbmdsZVBhY2tldFJl
ZHVjdGlvbikgewogICBSdHBQYWNrZXRpemVyOjpQYXlsb2FkU2l6ZUxpbWl0cyBsaW1pdHM7CiAg
IGxpbWl0cy5tYXhfcGF5bG9hZF9sZW4gPSAxMTk5OwotICBsaW1pdHMuZmlyc3RfcGFja2V0X3Jl
ZHVjdGlvbl9sZW4gPSAxMDA7Ci0gIGxpbWl0cy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0g
MTAwOworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMjAwOwogICBFWFBF
Q1RfVEhBVChUZXN0RnVhKDEwMDAsIGxpbWl0cyksIEVsZW1lbnRzQXJlKDUwMCwgNTAwKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfZm9ybWF0X3VuaXR0ZXN0LmNjCmluZGV4IGE3OWM0MzRiNjI5ZjMyNWIxZWY2NDI0YTI2
NWJlMzYzMGM3OTE4M2MuLmFlMWI1YjA1NGFkZmEzZTRlMjE1MGVhYjQxODcxZWI1MDE5OGYzYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX2Zvcm1hdF91bml0dGVzdC5jYwpAQCAtMTk5LDIxICsxOTksMzIgQEAgVEVTVChSdHBQ
YWNrZXRpemVyU3BsaXRBYm91dEVxdWFsbHksIEdpdmVzTm9uWmVyb1BheWxvYWRMZW5ndGhFYWNo
UGFja2V0KSB7CiB9CiAKIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5LAotICAg
ICBPbmVQYWNrZXRXaGVuRXh0cmFTcGFjZUlzRW5vdWdoRm9yU3VtT2ZGaXJzdEFuZExhc3RQYWNr
ZXRSZWR1Y3Rpb25zKSB7CisgICAgIElnbm9yZXNGaXJzdEFuZExhc3RQYWNrZXRSZWR1Y3Rpb25X
aGVuUGF5bG9hZEZpdHNJbnRvU2luZ2xlUGFja2V0KSB7CiAgIFJ0cFBhY2tldGl6ZXI6OlBheWxv
YWRTaXplTGltaXRzIGxpbWl0czsKICAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiA9IDMwOwotICBs
aW1pdHMuZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA2OwotICBsaW1pdHMubGFzdF9wYWNr
ZXRfcmVkdWN0aW9uX2xlbiA9IDQ7CisgIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xl
biA9IDI5OworICBsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDI5OworICBsaW1p
dHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMTA7CiAKICAgRVhQRUNUX1RIQVQoUnRw
UGFja2V0aXplcjo6U3BsaXRBYm91dEVxdWFsbHkoMjAsIGxpbWl0cyksIEVsZW1lbnRzQXJlKDIw
KSk7CiB9CiAKIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5LAotICAgICBUd29Q
YWNrZXRzV2hlbkV4dHJhU3BhY2VJc1Rvb1NtYWxsRm9yU3VtT2ZGaXJzdEFuZExhc3RQYWNrZXRS
ZWR1Y3Rpb25zKSB7CisgICAgIE9uZVBhY2tldFdoZW5FeHRyYVNwYWNlSXNFbm91Z2hGb3JTaW5n
bGVQYWNrZXRSZWR1Y3Rpb24pIHsKKyAgUnRwUGFja2V0aXplcjo6UGF5bG9hZFNpemVMaW1pdHMg
bGltaXRzOworICBsaW1pdHMubWF4X3BheWxvYWRfbGVuID0gMzA7CisgIGxpbWl0cy5zaW5nbGVf
cGFja2V0X3JlZHVjdGlvbl9sZW4gPSAxMDsKKworICBFWFBFQ1RfVEhBVChSdHBQYWNrZXRpemVy
OjpTcGxpdEFib3V0RXF1YWxseSgyMCwgbGltaXRzKSwgRWxlbWVudHNBcmUoMjApKTsKK30KKwor
VEVTVChSdHBQYWNrZXRpemVyU3BsaXRBYm91dEVxdWFsbHksCisgICAgIFR3b1BhY2tldHNXaGVu
RXh0cmFTcGFjZUlzVG9vU21hbGxGb3JTaW5nbGVQYWNrZXRSZWR1Y3Rpb24pIHsKICAgUnRwUGFj
a2V0aXplcjo6UGF5bG9hZFNpemVMaW1pdHMgbGltaXRzOwogICBsaW1pdHMubWF4X3BheWxvYWRf
bGVuID0gMjk7Ci0gIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDY7Ci0gIGxp
bWl0cy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNDsKKyAgbGltaXRzLmZpcnN0X3BhY2tl
dF9yZWR1Y3Rpb25fbGVuID0gMzsKKyAgbGltaXRzLmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4g
PSAxOworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMTA7CiAKICAgLy8g
Rmlyc3QgcGFja2V0IG5lZWRzIHR3byBtb3JlIGV4dHJhIGJ5dGVzIGNvbXBhcmVkIHRvIGxhc3Qg
b25lLAogICAvLyBzbyBzaG91bGQgaGF2ZSB0d28gbGVzcyBwYXlsb2FkIGJ5dGVzLgpAQCAtMjQ2
LDggKzI1Nyw3IEBAIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5LCBSZWplY3Rz
WmVyb0xhc3RQYWNrZXRMZW4pIHsKIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5
LCBDYW50UHV0U2luZ2xlUGF5bG9hZEJ5dGVJblR3b1BhY2tldHMpIHsKICAgUnRwUGFja2V0aXpl
cjo6UGF5bG9hZFNpemVMaW1pdHMgbGltaXRzOwogICBsaW1pdHMubWF4X3BheWxvYWRfbGVuID0g
MTA7Ci0gIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDY7Ci0gIGxpbWl0cy5s
YXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNDsKKyAgbGltaXRzLnNpbmdsZV9wYWNrZXRfcmVk
dWN0aW9uX2xlbiA9IDEwOwogCiAgIEVYUEVDVF9USEFUKFJ0cFBhY2tldGl6ZXI6OlNwbGl0QWJv
dXRFcXVhbGx5KDEsIGxpbWl0cyksIElzRW1wdHkoKSk7CiB9CkBAIC0yNTUsOCArMjY1LDcgQEAg
VEVTVChSdHBQYWNrZXRpemVyU3BsaXRBYm91dEVxdWFsbHksIENhbnRQdXRTaW5nbGVQYXlsb2Fk
Qnl0ZUluVHdvUGFja2V0cykgewogVEVTVChSdHBQYWNrZXRpemVyU3BsaXRBYm91dEVxdWFsbHks
IENhblB1dFR3b1BheWxvYWRCeXRlc0luVHdvUGFja2V0cykgewogICBSdHBQYWNrZXRpemVyOjpQ
YXlsb2FkU2l6ZUxpbWl0cyBsaW1pdHM7CiAgIGxpbWl0cy5tYXhfcGF5bG9hZF9sZW4gPSAxMDsK
LSAgbGltaXRzLmZpcnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNjsKLSAgbGltaXRzLmxhc3Rf
cGFja2V0X3JlZHVjdGlvbl9sZW4gPSA0OworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rp
b25fbGVuID0gMTA7CiAKICAgRVhQRUNUX1RIQVQoUnRwUGFja2V0aXplcjo6U3BsaXRBYm91dEVx
dWFsbHkoMiwgbGltaXRzKSwgRWxlbWVudHNBcmUoMSwgMSkpOwogfQpAQCAtMjY0LDggKzI3Myw3
IEBAIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5LCBDYW5QdXRUd29QYXlsb2Fk
Qnl0ZXNJblR3b1BhY2tldHMpIHsKIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5
LCBDYW5QdXRTaW5nbGVQYXlsb2FkQnl0ZUluT25lUGFja2V0KSB7CiAgIFJ0cFBhY2tldGl6ZXI6
OlBheWxvYWRTaXplTGltaXRzIGxpbWl0czsKICAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiA9IDEx
OwotICBsaW1pdHMuZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA2OwotICBsaW1pdHMubGFz
dF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDQ7CisgIGxpbWl0cy5zaW5nbGVfcGFja2V0X3JlZHVj
dGlvbl9sZW4gPSAxMDsKIAogICBFWFBFQ1RfVEhBVChSdHBQYWNrZXRpemVyOjpTcGxpdEFib3V0
RXF1YWxseSgxLCBsaW1pdHMpLCBFbGVtZW50c0FyZSgxKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3Zp
ZGVvX2dlbmVyaWMuY2MKaW5kZXggZWRkMWUzYzUzMDUxNjM1NDM1YjhjMGUxMWE4NTExM2NhY2Iz
ODQyNS4uOTJhYWRhNDY4OGE4NWZhNWNiY2M3NTg3MjBhNzg1NjkxZDUwOTg2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9mb3JtYXRfdmlkZW9fZ2VuZXJpYy5jYwpAQCAtOCwxMSArOCwxMyBAQAogICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICov
CiAKLSNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3Ry
aW5nLmg+CiAKLSNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5o
IgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmlj
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuaAppbmRleCAwMzUwOWY1MDQx
ZGY2ZjdjZjZkNDhhZTc4OGI4ODk1NjVlMzJkY2IwLi4zNDU4ZDQ5NDIzMjlhMTVjMTIwZGNmZjU5
ZTMwZmY3Y2IxMjZkYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dl
bmVyaWMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuaApAQCAtMTAs
NiArMTAsNyBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfRk9STUFUX1ZJ
REVPX0dFTkVSSUNfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX0ZPUk1B
VF9WSURFT19HRU5FUklDX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpAQCAtMTgsNiArMTksMTAgQEAKICNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
eworCitjbGFzcyBSdHBQYWNrZXRUb1NlbmQ7CitzdHJ1Y3QgUlRQVmlkZW9IZWFkZXI7CisKIG5h
bWVzcGFjZSBSdHBGb3JtYXRWaWRlb0dlbmVyaWMgewogc3RhdGljIGNvbnN0IHVpbnQ4X3Qga0tl
eUZyYW1lQml0ID0gMHgwMTsKIHN0YXRpYyBjb25zdCB1aW50OF90IGtGaXJzdFBhY2tldEJpdCA9
IDB4MDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9mb3JtYXRfdnA4LmNjCmluZGV4IGY0MDQzNGU3ZTAzMWY3MjlmMGQ0MzEyMjg1NWM5NWJj
OTIzZGMyMDAuLmExMjQ4Y2YwNDBiMTczYzVjMDdhZDRiNzRmZGRkYzE3OTQyNThkYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA4LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3Jt
YXRfdnA4LmNjCkBAIC0xMCwxMyArMTAsMTMgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA4LmgiCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxzdHJpbmcuaD4gIC8vIG1lbWNweQotCi0jaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUg
PHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgi
ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvaW50ZXJmYWNlL2NvbW1vbl9jb25zdGFudHMuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA4LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOC5oCmlu
ZGV4IGU0YmMzNmUzZjNmNGVlMjVmNjM2YzljMWVlNzg1Y2E3Yjg0N2I2MzYuLjQ0NDI5OGZiYmY4
MDlkNTU1YmJjZDQwOGY2MmQ1YzhlNjc0YjU2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9m
b3JtYXRfdnA4LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDguaApAQCAtMjUsMTMgKzI1
LDE1IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9GT1JNQVRfVlA4X0hf
CiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9GT1JNQVRfVlA4X0hfCiAKLSNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4K
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbmxpbmVkX3Zl
Y3Rvci5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9p
bmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfZm9ybWF0LmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX3BhY2tldF90b19zZW5kLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC9pbmNsdWRlL3ZwOF9nbG9iYWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3Ry
dWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9mb3JtYXRfdnA5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDkuY2MKaW5kZXggNDQx
OWQxYTMwYzBiNWY5ODNiNTQyNDI4YWI0OThlM2M2YWQ4MGUxNy4uOWNkNzUxNDNiOGMyOTcxYWYz
MmFhYjU0MGE0OGZjNjQzZDU0ZWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92
cDkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDkuY2MKQEAgLTEyLDkgKzEyLDkgQEAK
IAogI2luY2x1ZGUgPHN0cmluZy5oPgogCi0jaW5jbHVkZSA8Y21hdGg+Ci0KKyNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9pbnRlcmZhY2UvY29tbW9uX2NvbnN0YW50cy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKQEAgLTQ1MSw2ICs0NTEsNyBAQCBSdHBQ
YWNrZXRpemVyVnA5OjpSdHBQYWNrZXRpemVyVnA5KHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4
X3Q+IHBheWxvYWQsCiAgICAgICByZW1haW5pbmdfcGF5bG9hZF8ocGF5bG9hZCkgewogICBsaW1p
dHMubWF4X3BheWxvYWRfbGVuIC09IGhlYWRlcl9zaXplXzsKICAgbGltaXRzLmZpcnN0X3BhY2tl
dF9yZWR1Y3Rpb25fbGVuICs9IGZpcnN0X3BhY2tldF9leHRyYV9oZWFkZXJfc2l6ZV87CisgIGxp
bWl0cy5zaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW4gKz0gZmlyc3RfcGFja2V0X2V4dHJhX2hl
YWRlcl9zaXplXzsKIAogICBwYXlsb2FkX3NpemVzXyA9IFNwbGl0QWJvdXRFcXVhbGx5KHBheWxv
YWQuc2l6ZSgpLCBsaW1pdHMpOwogICBjdXJyZW50X3BhY2tldF8gPSBwYXlsb2FkX3NpemVzXy5i
ZWdpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDkuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9mb3JtYXRfdnA5LmgKaW5kZXggOGEyYTJhNjA0YzgxNGQzMjI1NTU4OTM0MzQxOWVmZGI5
MjZlOWVhOS4uYzNiOGYxN2E0YjA5ODFiYWMxNDgxYzk2NGU1MzM4NDc0ZTRhZTY5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0
X3ZwOS5oCkBAIC0yMSwxMiArMjEsMTQgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VS
Q0VfUlRQX0ZPUk1BVF9WUDlfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQ
X0ZPUk1BVF9WUDlfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5j
bHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgiCisjaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9pbmNsdWRlL3ZwOV9nbG9iYWxzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmNjCmluZGV4IDFiOTMxMzI3YmFkMWY4YTc5
MTI5NzQyMGI2MzU3NjM4MzZjZTFkOTQuLmMyN2ZiNmUzZjZmODVmYjkxZGE5NDA5ZTg2MzI2ZWQ4
YzgzMzNkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0
b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5jYwpAQCAt
MTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dl
bmVyaWNfZnJhbWVfZGVzY3JpcHRvci5oIgogCisjaW5jbHVkZSA8Y3N0ZGludD4KKwogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTU2LDYgKzU4
LDE2IEBAIHZvaWQgUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvcjo6U2V0U3BhdGlhbExheWVyc0Jp
dG1hc2soCiAgIHNwYXRpYWxfbGF5ZXJzXyA9IHNwYXRpYWxfbGF5ZXJzOwogfQogCit2b2lkIFJ0
cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I6OlNldFJlc29sdXRpb24oaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KSB7CisgIFJUQ19EQ0hFQ0soRmlyc3RQYWNrZXRJblN1YkZyYW1lKCkpOworICBSVENfRENI
RUNLX0dFKHdpZHRoLCAwKTsKKyAgUlRDX0RDSEVDS19MRSh3aWR0aCwgMHhGRkZGKTsKKyAgUlRD
X0RDSEVDS19HRShoZWlnaHQsIDApOworICBSVENfRENIRUNLX0xFKGhlaWdodCwgMHhGRkZGKTsK
KyAgd2lkdGhfID0gd2lkdGg7CisgIGhlaWdodF8gPSBoZWlnaHQ7Cit9CisKIHVpbnQxNl90IFJ0
cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I6OkZyYW1lSWQoKSBjb25zdCB7CiAgIFJUQ19EQ0hFQ0so
Rmlyc3RQYWNrZXRJblN1YkZyYW1lKCkpOwogICByZXR1cm4gZnJhbWVfaWRfOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5oCmluZGV4IDFiZGU0ZmE1NmRjYzc4OWY4ZjZjYzNi
NmM3ZWJhMWY4NjFlNDI5ZTMuLjNhNmMzNGQ1OWZmMjYzMGZhMTQzNmRlNTdmNGZjZTY5NjhhMTA0
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmgKQEAgLTUwLDYgKzUw
LDEwIEBAIGNsYXNzIFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3IgewogICB1aW50OF90IFNwYXRp
YWxMYXllcnNCaXRtYXNrKCkgY29uc3Q7CiAgIHZvaWQgU2V0U3BhdGlhbExheWVyc0JpdG1hc2so
dWludDhfdCBzcGF0aWFsX2xheWVycyk7CiAKKyAgaW50IFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
d2lkdGhfOyB9CisgIGludCBIZWlnaHQoKSBjb25zdCB7IHJldHVybiBoZWlnaHRfOyB9CisgIHZv
aWQgU2V0UmVzb2x1dGlvbihpbnQgd2lkdGgsIGludCBoZWlnaHQpOworCiAgIHVpbnQxNl90IEZy
YW1lSWQoKSBjb25zdDsKICAgdm9pZCBTZXRGcmFtZUlkKHVpbnQxNl90IGZyYW1lX2lkKTsKIApA
QCAtNzIsNiArNzYsOSBAQCBjbGFzcyBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yIHsKICAgdWlu
dDhfdCB0ZW1wb3JhbF9sYXllcl8gPSAwOwogICBzaXplX3QgbnVtX2ZyYW1lX2RlcHNfID0gMDsK
ICAgdWludDE2X3QgZnJhbWVfZGVwc19pZF9kaWZmc19ba01heE51bUZyYW1lRGVwZW5kZW5jaWVz
XTsKKyAgaW50IHdpZHRoXyA9IDA7CisgIGludCBoZWlnaHRfID0gMDsKKwogICBzdGQ6OnZlY3Rv
cjx1aW50OF90PiBieXRlX3JlcHJlc2VudGF0aW9uXzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb24uY2MKaW5kZXggYzdiNTJkNWJh
NjgwZDE0ZmQ4NjU2MmZhNGE4NWJiMTBmMDkwMjc4Yy4uN2NkMTIwZDlmNDVjMzk1NzA2ZTc1MTkz
NTBkOTU5MWY4MmMzMjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVf
ZGVzY3JpcHRvcl9leHRlbnNpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVf
ZGVzY3JpcHRvcl9leHRlbnNpb24uY2MKQEAgLTM2LDYgKzM2LDE0IEBAIGNvbnN0ZXhwciB1aW50
OF90IGtGbGFnZVh0ZW5kZWRPZmZzZXQgPSAweDAyOwogLy8gQjogICArICAgICAgRklEICAgICAg
KwogLy8gICAgICB8ICAgICAgICAgICAgICAgfAogLy8gICAgICArLSstKy0rLSstKy0rLSstKwor
Ly8gICAgICB8ICAgICAgICAgICAgICAgfAorLy8gICAgICArICAgICBXaWR0aCAgICAgKworLy8g
Qj0xICB8ICAgICAgICAgICAgICAgfAorLy8gYW5kICArLSstKy0rLSstKy0rLSstKworLy8gRD0w
ICB8ICAgICAgICAgICAgICAgfAorLy8gICAgICArICAgICBIZWlnaHQgICAgKworLy8gICAgICB8
ICAgICAgICAgICAgICAgfAorLy8gICAgICArLSstKy0rLSstKy0rLSstKwogLy8gRDogICB8ICAg
IEZESUZGICB8WHxNfAogLy8gICAgICArLS0tLS0tLS0tLS0tLS0tKwogLy8gWDogICB8ICAgICAg
Li4uICAgICAgfApAQCAtNzUsNiArODMsMTIgQEAgYm9vbCBSdHBHZW5lcmljRnJhbWVEZXNjcmlw
dG9yRXh0ZW5zaW9uOjpQYXJzZSgKICAgZGVzY3JpcHRvci0+Q2xlYXJGcmFtZURlcGVuZGVuY2ll
cygpOwogICBzaXplX3Qgb2Zmc2V0ID0gNDsKICAgYm9vbCBoYXNfbW9yZV9kZXBlbmRlbmNpZXMg
PSAoZGF0YVswXSAmIGtGbGFnRGVwZW5kZW5jaWVzKSAhPSAwOworICBpZiAoIWhhc19tb3JlX2Rl
cGVuZGVuY2llcyAmJiBkYXRhLnNpemUoKSA+PSBvZmZzZXQgKyA0KSB7CisgICAgdWludDE2X3Qg
d2lkdGggPSAoZGF0YVtvZmZzZXRdIDw8IDgpIHwgZGF0YVtvZmZzZXQgKyAxXTsKKyAgICB1aW50
MTZfdCBoZWlnaHQgPSAoZGF0YVtvZmZzZXQgKyAyXSA8PCA4KSB8IGRhdGFbb2Zmc2V0ICsgM107
CisgICAgZGVzY3JpcHRvci0+U2V0UmVzb2x1dGlvbih3aWR0aCwgaGVpZ2h0KTsKKyAgICBvZmZz
ZXQgKz0gNDsKKyAgfQogICB3aGlsZSAoaGFzX21vcmVfZGVwZW5kZW5jaWVzKSB7CiAgICAgaWYg
KGRhdGEuc2l6ZSgpID09IG9mZnNldCkKICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkxLDcgKzEw
NSw3IEBAIGJvb2wgUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbjo6UGFyc2UoCiAg
ICAgaWYgKCFkZXNjcmlwdG9yLT5BZGRGcmFtZURlcGVuZGVuY3lEaWZmKGZkaWZmKSkKICAgICAg
IHJldHVybiBmYWxzZTsKICAgfQotICByZXR1cm4gZGF0YS5zaXplKCkgPT0gb2Zmc2V0OworICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc2l6ZV90IFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3JFeHRlbnNp
b246OlZhbHVlU2l6ZSgKQEAgLTEwMyw2ICsxMTcsMTEgQEAgc2l6ZV90IFJ0cEdlbmVyaWNGcmFt
ZURlc2NyaXB0b3JFeHRlbnNpb246OlZhbHVlU2l6ZSgKICAgZm9yICh1aW50MTZfdCBmZGlmZiA6
IGRlc2NyaXB0b3IuRnJhbWVEZXBlbmRlbmNpZXNEaWZmcygpKSB7CiAgICAgc2l6ZSArPSAoZmRp
ZmYgPj0gKDEgPDwgNikpID8gMiA6IDE7CiAgIH0KKyAgaWYgKGRlc2NyaXB0b3IuRmlyc3RQYWNr
ZXRJblN1YkZyYW1lKCkgJiYKKyAgICAgIGRlc2NyaXB0b3IuRnJhbWVEZXBlbmRlbmNpZXNEaWZm
cygpLmVtcHR5KCkgJiYgZGVzY3JpcHRvci5XaWR0aCgpID4gMCAmJgorICAgICAgZGVzY3JpcHRv
ci5IZWlnaHQoKSA+IDApIHsKKyAgICBzaXplICs9IDQ7CisgIH0KICAgcmV0dXJuIHNpemU7CiB9
CiAKQEAgLTEyOSw2ICsxNDgsMTMgQEAgYm9vbCBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0
ZW5zaW9uOjpXcml0ZSgKICAgZGF0YVszXSA9IGZyYW1lX2lkID4+IDg7CiAgIHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IHVpbnQxNl90PiBmZGlmZnMgPSBkZXNjcmlwdG9yLkZyYW1lRGVwZW5kZW5jaWVz
RGlmZnMoKTsKICAgc2l6ZV90IG9mZnNldCA9IDQ7CisgIGlmIChkZXNjcmlwdG9yLkZpcnN0UGFj
a2V0SW5TdWJGcmFtZSgpICYmIGZkaWZmcy5lbXB0eSgpICYmCisgICAgICBkZXNjcmlwdG9yLldp
ZHRoKCkgPiAwICYmIGRlc2NyaXB0b3IuSGVpZ2h0KCkgPiAwKSB7CisgICAgZGF0YVtvZmZzZXQr
K10gPSAoZGVzY3JpcHRvci5XaWR0aCgpID4+IDgpOworICAgIGRhdGFbb2Zmc2V0KytdID0gKGRl
c2NyaXB0b3IuV2lkdGgoKSAmIDB4RkYpOworICAgIGRhdGFbb2Zmc2V0KytdID0gKGRlc2NyaXB0
b3IuSGVpZ2h0KCkgPj4gOCk7CisgICAgZGF0YVtvZmZzZXQrK10gPSAoZGVzY3JpcHRvci5IZWln
aHQoKSAmIDB4RkYpOworICB9CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmRpZmZzLnNpemUo
KTsgaSsrKSB7CiAgICAgYm9vbCBleHRlbmRlZCA9IGZkaWZmc1tpXSA+PSAoMSA8PCA2KTsKICAg
ICBib29sIG1vcmUgPSBpIDwgZmRpZmZzLnNpemUoKSAtIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb24uaAppbmRleCAyZGQ5ZGQ0OWViZTEy
ZTAyYTljMDVmZTI2YzNiZGI0MzFlMTgyZWUwLi4wZDY3M2UwNjAxOThkODFkYzBmYWYzNzhjZmU4
ZTg1M2JiMjgwYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNj
cmlwdG9yX2V4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2Ny
aXB0b3JfZXh0ZW5zaW9uLmgKQEAgLTIxLDYgKzIxLDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
IGNsYXNzIFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3JFeHRlbnNpb24gewogIHB1YmxpYzoKKyAg
dXNpbmcgdmFsdWVfdHlwZSA9IFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I7CiAgIHN0YXRpYyBj
b25zdGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0ZW5zaW9uR2VuZXJpY0ZyYW1l
RGVzY3JpcHRvcjsKICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtVcmlbXSA9CiAgICAgICAiaHR0
cDovL3d3dy53ZWJydGMub3JnL2V4cGVyaW1lbnRzL3J0cC1oZHJleHQvIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb25fdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbl91bml0
dGVzdC5jYwppbmRleCBiYjY5ZTE0NTVkZDk0MGNhZjU3YmIxNTI4MGJjMzE5NWY1Y2U3NDczLi43
ZjhmYTJmNWE0MWU0NDdmY2Q5MzVjNTljNGU1NTA0NmY4ZTcyNGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbl91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbl91bml0
dGVzdC5jYwpAQCAtMjc5LDUgKzI3OSwzMiBAQCBURVNUKFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0
b3JFeHRlbnNpb25UZXN0LCBXcml0ZVR3b0ZyYW1lRGVwZW5kZW5jaWVzKSB7CiAgIEVYUEVDVF9U
SEFUKGJ1ZmZlciwgRWxlbWVudHNBcmVBcnJheShrUmF3KSk7CiB9CiAKK1RFU1QoUnRwR2VuZXJp
Y0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvblRlc3QsCisgICAgIFBhcnNlUmVzb2x1dGlvbk9uSW5k
ZXBlbmRlbnRGcmFtZSkgeworICBjb25zdGV4cHIgaW50IGtXaWR0aCA9IDB4MjQ2ODsKKyAgY29u
c3RleHByIGludCBrSGVpZ2h0ID0gMHg2NTQzOworICBjb25zdGV4cHIgdWludDhfdCBrUmF3W10g
PSB7MHg4MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgyNCwgMHg2OCwgMHg2NSwgMHg0M307CisgIFJ0
cEdlbmVyaWNGcmFtZURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKworICBBU1NFUlRfVFJVRShSdHBH
ZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uOjpQYXJzZShrUmF3LCAmZGVzY3JpcHRvcikp
OworICBFWFBFQ1RfRVEoZGVzY3JpcHRvci5XaWR0aCgpLCBrV2lkdGgpOworICBFWFBFQ1RfRVEo
ZGVzY3JpcHRvci5IZWlnaHQoKSwga0hlaWdodCk7Cit9CisKK1RFU1QoUnRwR2VuZXJpY0ZyYW1l
RGVzY3JpcHRvckV4dGVuc2lvblRlc3QsCisgICAgIFdyaXRlUmVzb2x1dGlvbk9uSW5kZXBlbmRl
bnRGcmFtZSkgeworICBjb25zdGV4cHIgaW50IGtXaWR0aCA9IDB4MjQ2ODsKKyAgY29uc3RleHBy
IGludCBrSGVpZ2h0ID0gMHg2NTQzOworICBjb25zdGV4cHIgdWludDhfdCBrUmF3W10gPSB7MHg4
MCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgyNCwgMHg2OCwgMHg2NSwgMHg0M307CisgIFJ0cEdlbmVy
aWNGcmFtZURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAgZGVzY3JpcHRvci5TZXRGaXJzdFBhY2tl
dEluU3ViRnJhbWUodHJ1ZSk7CisgIGRlc2NyaXB0b3IuU2V0UmVzb2x1dGlvbihrV2lkdGgsIGtI
ZWlnaHQpOworCisgIEFTU0VSVF9FUShSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9u
OjpWYWx1ZVNpemUoZGVzY3JpcHRvciksCisgICAgICAgICAgICBzaXplb2Yoa1JhdykpOworICB1
aW50OF90IGJ1ZmZlcltzaXplb2Yoa1JhdyldOworICBFWFBFQ1RfVFJVRShSdHBHZW5lcmljRnJh
bWVEZXNjcmlwdG9yRXh0ZW5zaW9uOjpXcml0ZShidWZmZXIsIGRlc2NyaXB0b3IpKTsKKyAgRVhQ
RUNUX1RIQVQoYnVmZmVyLCBFbGVtZW50c0FyZUFycmF5KGtSYXcpKTsKK30KIH0gIC8vIG5hbWVz
cGFjZQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hl
YWRlcl9leHRlbnNpb25fbWFwLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFw
LmNjCmluZGV4IDE2ODY2NWFmYzQ1MzJkZWI0ZDllODYzNWEyZDdlMGFiMzIwODQyYWIuLjhlMGE0
ODRkOTc3NGU2MDZlYWQ4NDVjZGE0NmU0MDg3MjY2Y2M3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4
dGVuc2lvbl9tYXAuY2MKQEAgLTQzLDYgKzQzLDcgQEAgY29uc3RleHByIEV4dGVuc2lvbkluZm8g
a0V4dGVuc2lvbnNbXSA9IHsKICAgICBDcmVhdGVFeHRlbnNpb25JbmZvPFJlcGFpcmVkUnRwU3Ry
ZWFtSWQ+KCksCiAgICAgQ3JlYXRlRXh0ZW5zaW9uSW5mbzxSdHBNaWQ+KCksCiAgICAgQ3JlYXRl
RXh0ZW5zaW9uSW5mbzxSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uPigpLAorICAg
IENyZWF0ZUV4dGVuc2lvbkluZm88Q29sb3JTcGFjZUV4dGVuc2lvbj4oKSwKIH07CiAKIC8vIEJl
Y2F1c2Ugb2Yga1J0cEV4dGVuc2lvbk5vbmUsIE51bWJlck9mRXh0ZW5zaW9uIGlzIDEgYmlnZ2Vy
IHRoYW4gdGhlIGFjdHVhbApAQCAtNTYsMTUgKzU3LDE3IEBAIHN0YXRpY19hc3NlcnQoYXJyYXlz
aXplKGtFeHRlbnNpb25zKSA9PQogY29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUgUnRwSGVhZGVy
RXh0ZW5zaW9uTWFwOjprSW52YWxpZFR5cGU7CiBjb25zdGV4cHIgaW50IFJ0cEhlYWRlckV4dGVu
c2lvbk1hcDo6a0ludmFsaWRJZDsKIAotUnRwSGVhZGVyRXh0ZW5zaW9uTWFwOjpSdHBIZWFkZXJF
eHRlbnNpb25NYXAoKQotICAgIDogbWl4ZWRfb25lX3R3b19ieXRlX2hlYWRlcl9zdXBwb3J0ZWRf
KGZhbHNlKSB7CitSdHBIZWFkZXJFeHRlbnNpb25NYXA6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCgp
IDogUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGZhbHNlKSB7fQorCitSdHBIZWFkZXJFeHRlbnNpb25N
YXA6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcChib29sIGV4dG1hcF9hbGxvd19taXhlZCkKKyAgICA6
IGV4dG1hcF9hbGxvd19taXhlZF8oZXh0bWFwX2FsbG93X21peGVkKSB7CiAgIGZvciAoYXV0byYg
aWQgOiBpZHNfKQogICAgIGlkID0ga0ludmFsaWRJZDsKIH0KIAogUnRwSGVhZGVyRXh0ZW5zaW9u
TWFwOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAoCiAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRw
RXh0ZW5zaW9uPiBleHRlbnNpb25zKQotICAgIDogUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKCkgewor
ICAgIDogUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGZhbHNlKSB7CiAgIGZvciAoY29uc3QgUnRwRXh0
ZW5zaW9uJiBleHRlbnNpb24gOiBleHRlbnNpb25zKQogICAgIFJlZ2lzdGVyQnlVcmkoZXh0ZW5z
aW9uLmlkLCBleHRlbnNpb24udXJpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFk
ZXJfZXh0ZW5zaW9ucy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5jYwppbmRl
eCBmYzRiN2NlYjkyODFhZjVjMTIyZTViNDliZGE1MGQ1NGNjYWZlNzU5Li45MjY5NGNkNWEzYTQ2
NmEzMjhkODFjNDM3N2YwNDU2MWIyOGIyMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVh
ZGVyX2V4dGVuc2lvbnMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmNj
CkBAIC0xMCwxMCArMTAsMTQgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8Y21hdGg+CisKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2N2by5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKKy8vIFRPRE8o
YnVnOjk4NTUpIE1vdmUga05vU3BhdGlhbElkeCBmcm9tIHZwOV9nbG9iYWxzLmggdG8gY29tbW9u
X2NvbnN0YW50cworI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9pbnRlcmZh
Y2UvY29tbW9uX2NvbnN0YW50cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyBBYnNv
bHV0ZSBzZW5kIHRpbWUgaW4gUlRQIHN0cmVhbXMuCkBAIC00MzAsNiArNDM0LDE3MiBAQCBib29s
IEZyYW1lTWFya2luZ0V4dGVuc2lvbjo6V3JpdGUocnRjOjpBcnJheVZpZXc8dWludDhfdD4gZGF0
YSwKICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIENvbG9yIHNwYWNlIGluY2x1ZGluZyBIRFIgbWV0
YWRhdGEgYXMgYW4gb3B0aW9uYWwgZmllbGQuCisvLworLy8gUlRQIGhlYWRlciBleHRlbnNpb24g
dG8gY2FycnkgSERSIG1ldGFkYXRhLgorLy8gRmxvYXQgdmFsdWVzIGFyZSB1cHNjYWxlZCBieSBh
IHN0YXRpYyBmYWN0b3IgYW5kIHRyYW5zbWl0dGVkIGFzIGludGVnZXJzLgorLy8KKy8vIERhdGEg
bGF5b3V0IHdpdGggSERSIG1ldGFkYXRhCisvLyAgICAwICAgICAgICAgICAgICAgICAgIDEgICAg
ICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAzCisvLyAgICAwIDEgMiAzIDQgNSA2
IDcgOCA5IDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMgorLy8g
ICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rCisvLyAgIHwgICAgICAgSUQgICAgICB8ICAgbGVuZ3RoPTMwICAgIHwgICBQ
cmltYXJpZXMgICB8ICAgIFRyYW5zZmVyICAgIHwKKy8vICAgKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKworLy8gICB8ICAg
ICBNYXRyaXggICAgfCAgICAgIFJhbmdlICAgICB8ICAgICAgICAgICAgICAgICBsdW1pbmFuY2Vf
bWF4ICB8CisvLyAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSsKKy8vICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICBsdW1pbmFuY2VfbWluICAgICAgICAgICAgICAgICAgfAorLy8gICArLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
CisvLyAgIHwgICAgICAgICAgICAgIG1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X3IueCBhbmQg
LnkgICAgICAgICAgICAgIHwKKy8vICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKworLy8gICB8ICAgICAgICAgICAgICBt
YXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9nLnggYW5kIC55ICAgICAgICAgICAgICB8CisvLyAg
ICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSsKKy8vICAgfCAgICAgICAgICAgICAgbWFzdGVyaW5nX21ldGFkYXRhLnByaW1h
cnlfYi54IGFuZCAueSAgICAgICAgICAgICAgfAorLy8gICArLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCisvLyAgIHwgICAg
ICAgICAgICAgICAgbWFzdGVyaW5nX21ldGFkYXRhLndoaXRlLnggYW5kIC55ICAgICAgICAgICAg
ICAgIHwKKy8vICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKworLy8gICB8ICAgICBtYXhfY29udGVudF9saWdodF9sZXZl
bCAgICB8IG1heF9mcmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVsICB8CisvLyAgICstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsK
Ky8vCisvLyBEYXRhIGxheW91dCB3aXRob3V0IEhEUiBtZXRhZGF0YQorLy8gICAgMCAgICAgICAg
ICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgICAgMworLy8g
ICAgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYg
NyA4IDkgMCAxIDIKKy8vICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKworLy8gICB8ICAgICAgIElEICAgICAgfCAgICBs
ZW5ndGg9NCAgICB8ICAgUHJpbWFyaWVzICAgfCAgICBUcmFuc2ZlciAgICB8CisvLyAgICstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSsKKy8vICAgfCAgICAgTWF0cml4ICAgIHwgICAgICBSYW5nZSAgICAgfAorLy8gICArLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstCisKK2NvbnN0ZXhwciBSVFBFeHRlbnNpb25U
eXBlIENvbG9yU3BhY2VFeHRlbnNpb246OmtJZDsKK2NvbnN0ZXhwciB1aW50OF90IENvbG9yU3Bh
Y2VFeHRlbnNpb246OmtWYWx1ZVNpemVCeXRlczsKK2NvbnN0ZXhwciBjb25zdCBjaGFyIENvbG9y
U3BhY2VFeHRlbnNpb246OmtVcmlbXTsKKworYm9vbCBDb2xvclNwYWNlRXh0ZW5zaW9uOjpQYXJz
ZShydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBkYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb2xvclNwYWNlKiBjb2xvcl9zcGFjZSkgeworICBSVENfRENIRUNLKGNv
bG9yX3NwYWNlKTsKKyAgaWYgKGRhdGEuc2l6ZSgpICE9IGtWYWx1ZVNpemVCeXRlcyAmJgorICAg
ICAgZGF0YS5zaXplKCkgIT0ga1ZhbHVlU2l6ZUJ5dGVzV2l0aG91dEhkck1ldGFkYXRhKQorICAg
IHJldHVybiBmYWxzZTsKKworICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgLy8gUmVhZCBjb2xvciBz
cGFjZSBpbmZvcm1hdGlvbi4KKyAgaWYgKCFjb2xvcl9zcGFjZS0+c2V0X3ByaW1hcmllc19mcm9t
X3VpbnQ4KGRhdGEuZGF0YSgpW29mZnNldCsrXSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAo
IWNvbG9yX3NwYWNlLT5zZXRfdHJhbnNmZXJfZnJvbV91aW50OChkYXRhLmRhdGEoKVtvZmZzZXQr
K10pKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKCFjb2xvcl9zcGFjZS0+c2V0X21hdHJpeF9m
cm9tX3VpbnQ4KGRhdGEuZGF0YSgpW29mZnNldCsrXSkpCisgICAgcmV0dXJuIGZhbHNlOworICBp
ZiAoIWNvbG9yX3NwYWNlLT5zZXRfcmFuZ2VfZnJvbV91aW50OChkYXRhLmRhdGEoKVtvZmZzZXQr
K10pKQorICAgIHJldHVybiBmYWxzZTsKKworICAvLyBSZWFkIEhEUiBtZXRhZGF0YSBpZiBpdCBl
eGlzdHMsIG90aGVyd2lzZSBjbGVhciBpdC4KKyAgaWYgKGRhdGEuc2l6ZSgpID09IGtWYWx1ZVNp
emVCeXRlc1dpdGhvdXRIZHJNZXRhZGF0YSkgeworICAgIGNvbG9yX3NwYWNlLT5zZXRfaGRyX21l
dGFkYXRhKG51bGxwdHIpOworICB9IGVsc2UgeworICAgIEhkck1ldGFkYXRhIGhkcl9tZXRhZGF0
YTsKKyAgICBvZmZzZXQgKz0gUGFyc2VMdW1pbmFuY2UoZGF0YS5kYXRhKCkgKyBvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFk
YXRhLmx1bWluYW5jZV9tYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtMdW1pbmFu
Y2VNYXhEZW5vbWluYXRvcik7CisgICAgb2Zmc2V0ICs9IFBhcnNlTHVtaW5hbmNlKGRhdGEuZGF0
YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGRyX21ldGFkYXRh
Lm1hc3RlcmluZ19tZXRhZGF0YS5sdW1pbmFuY2VfbWluLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrTHVtaW5hbmNlTWluRGVub21pbmF0b3IpOworICAgIG9mZnNldCArPSBQYXJzZUNo
cm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9yKTsKKyAg
ICBvZmZzZXQgKz0gUGFyc2VDaHJvbWF0aWNpdHkoZGF0YS5kYXRhKCkgKyBvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFk
YXRhLnByaW1hcnlfZyk7CisgICAgb2Zmc2V0ICs9IFBhcnNlQ2hyb21hdGljaXR5KGRhdGEuZGF0
YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGRyX21ldGFk
YXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2IpOworICAgIG9mZnNldCArPSBQYXJzZUNo
cm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEud2hpdGVfcG9pbnQpOwor
ICAgIGhkcl9tZXRhZGF0YS5tYXhfY29udGVudF9saWdodF9sZXZlbCA9CisgICAgICAgIEJ5dGVS
ZWFkZXI8dWludDE2X3Q+OjpSZWFkQmlnRW5kaWFuKGRhdGEuZGF0YSgpICsgb2Zmc2V0KTsKKyAg
ICBvZmZzZXQgKz0gMjsKKyAgICBoZHJfbWV0YWRhdGEubWF4X2ZyYW1lX2F2ZXJhZ2VfbGlnaHRf
bGV2ZWwgPQorICAgICAgICBCeXRlUmVhZGVyPHVpbnQxNl90Pjo6UmVhZEJpZ0VuZGlhbihkYXRh
LmRhdGEoKSArIG9mZnNldCk7CisgICAgb2Zmc2V0ICs9IDI7CisgICAgY29sb3Jfc3BhY2UtPnNl
dF9oZHJfbWV0YWRhdGEoJmhkcl9tZXRhZGF0YSk7CisgIH0KKyAgUlRDX0RDSEVDS19FUShWYWx1
ZVNpemUoKmNvbG9yX3NwYWNlKSwgb2Zmc2V0KTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
Q29sb3JTcGFjZUV4dGVuc2lvbjo6V3JpdGUocnRjOjpBcnJheVZpZXc8dWludDhfdD4gZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29sb3JTcGFjZSYgY29sb3Jf
c3BhY2UpIHsKKyAgUlRDX0RDSEVDSyhkYXRhLnNpemUoKSA+PSBWYWx1ZVNpemUoY29sb3Jfc3Bh
Y2UpKTsKKyAgc2l6ZV90IG9mZnNldCA9IDA7CisgIC8vIFdyaXRlIGNvbG9yIHNwYWNlIGluZm9y
bWF0aW9uLgorICBkYXRhLmRhdGEoKVtvZmZzZXQrK10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihj
b2xvcl9zcGFjZS5wcmltYXJpZXMoKSk7CisgIGRhdGEuZGF0YSgpW29mZnNldCsrXSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KGNvbG9yX3NwYWNlLnRyYW5zZmVyKCkpOworICBkYXRhLmRhdGEoKVtv
ZmZzZXQrK10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvcl9zcGFjZS5tYXRyaXgoKSk7Cisg
IGRhdGEuZGF0YSgpW29mZnNldCsrXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNvbG9yX3NwYWNl
LnJhbmdlKCkpOworCisgIC8vIFdyaXRlIEhEUiBtZXRhZGF0YSBpZiBpdCBleGlzdHMuCisgIGlm
IChjb2xvcl9zcGFjZS5oZHJfbWV0YWRhdGEoKSkgeworICAgIGNvbnN0IEhkck1ldGFkYXRhJiBo
ZHJfbWV0YWRhdGEgPSAqY29sb3Jfc3BhY2UuaGRyX21ldGFkYXRhKCk7CisgICAgb2Zmc2V0ICs9
IFdyaXRlTHVtaW5hbmNlKGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLmx1bWluYW5jZV9tYXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtMdW1pbmFuY2VNYXhEZW5vbWluYXRvcik7
CisgICAgb2Zmc2V0ICs9IFdyaXRlTHVtaW5hbmNlKGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRh
Lmx1bWluYW5jZV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtMdW1pbmFuY2VN
aW5EZW5vbWluYXRvcik7CisgICAgb2Zmc2V0ICs9IFdyaXRlQ2hyb21hdGljaXR5KGRhdGEuZGF0
YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRh
dGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfcik7CisgICAgb2Zmc2V0ICs9IFdyaXRlQ2hy
b21hdGljaXR5KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfZyk7CisgICAg
b2Zmc2V0ICs9IFdyaXRlQ2hyb21hdGljaXR5KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRh
LnByaW1hcnlfYik7CisgICAgb2Zmc2V0ICs9IFdyaXRlQ2hyb21hdGljaXR5KGRhdGEuZGF0YSgp
ICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZHJfbWV0YWRhdGEu
bWFzdGVyaW5nX21ldGFkYXRhLndoaXRlX3BvaW50KTsKKworICAgIEJ5dGVXcml0ZXI8dWludDE2
X3Q+OjpXcml0ZUJpZ0VuZGlhbihkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyX21ldGFkYXRhLm1heF9jb250ZW50X2xpZ2h0
X2xldmVsKTsKKyAgICBvZmZzZXQgKz0gMjsKKyAgICBCeXRlV3JpdGVyPHVpbnQxNl90Pjo6V3Jp
dGVCaWdFbmRpYW4oCisgICAgICAgIGRhdGEuZGF0YSgpICsgb2Zmc2V0LCBoZHJfbWV0YWRhdGEu
bWF4X2ZyYW1lX2F2ZXJhZ2VfbGlnaHRfbGV2ZWwpOworICAgIG9mZnNldCArPSAyOworICB9Cisg
IFJUQ19EQ0hFQ0tfRVEoVmFsdWVTaXplKGNvbG9yX3NwYWNlKSwgb2Zmc2V0KTsKKyAgcmV0dXJu
IHRydWU7Cit9CisKK3NpemVfdCBDb2xvclNwYWNlRXh0ZW5zaW9uOjpQYXJzZUNocm9tYXRpY2l0
eSgKKyAgICBjb25zdCB1aW50OF90KiBkYXRhLAorICAgIEhkck1hc3RlcmluZ01ldGFkYXRhOjpD
aHJvbWF0aWNpdHkqIHApIHsKKyAgdWludDE2X3QgY2hyb21hdGljaXR5X3hfc2NhbGVkID0gQnl0
ZVJlYWRlcjx1aW50MTZfdD46OlJlYWRCaWdFbmRpYW4oZGF0YSk7CisgIHVpbnQxNl90IGNocm9t
YXRpY2l0eV95X3NjYWxlZCA9CisgICAgICBCeXRlUmVhZGVyPHVpbnQxNl90Pjo6UmVhZEJpZ0Vu
ZGlhbihkYXRhICsgMik7CisgIHAtPnggPSBzdGF0aWNfY2FzdDxmbG9hdD4oY2hyb21hdGljaXR5
X3hfc2NhbGVkKSAvIGtDaHJvbWF0aWNpdHlEZW5vbWluYXRvcjsKKyAgcC0+eSA9IHN0YXRpY19j
YXN0PGZsb2F0PihjaHJvbWF0aWNpdHlfeV9zY2FsZWQpIC8ga0Nocm9tYXRpY2l0eURlbm9taW5h
dG9yOworICByZXR1cm4gNDsgIC8vIFJldHVybiBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KK30KKwor
c2l6ZV90IENvbG9yU3BhY2VFeHRlbnNpb246OlBhcnNlTHVtaW5hbmNlKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQq
IGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlbm9t
aW5hdG9yKSB7CisgIHVpbnQzMl90IGx1bWluYW5jZV9zY2FsZWQgPSBCeXRlUmVhZGVyPHVpbnQz
Ml90LCAzPjo6UmVhZEJpZ0VuZGlhbihkYXRhKTsKKyAgKmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
bHVtaW5hbmNlX3NjYWxlZCkgLyBkZW5vbWluYXRvcjsKKyAgcmV0dXJuIDM7ICAvLyBSZXR1cm4g
bnVtYmVyIG9mIGJ5dGVzIHJlYWQuCit9CisKK3NpemVfdCBDb2xvclNwYWNlRXh0ZW5zaW9uOjpX
cml0ZUNocm9tYXRpY2l0eSgKKyAgICB1aW50OF90KiBkYXRhLAorICAgIGNvbnN0IEhkck1hc3Rl
cmluZ01ldGFkYXRhOjpDaHJvbWF0aWNpdHkmIHApIHsKKyAgUlRDX0RDSEVDS19HRShwLngsIDAu
MGYpOworICBSVENfRENIRUNLX0dFKHAueSwgMC4wZik7CisgIEJ5dGVXcml0ZXI8dWludDE2X3Q+
OjpXcml0ZUJpZ0VuZGlhbigKKyAgICAgIGRhdGEsIHN0ZDo6cm91bmQocC54ICoga0Nocm9tYXRp
Y2l0eURlbm9taW5hdG9yKSk7CisgIEJ5dGVXcml0ZXI8dWludDE2X3Q+OjpXcml0ZUJpZ0VuZGlh
bigKKyAgICAgIGRhdGEgKyAyLCBzdGQ6OnJvdW5kKHAueSAqIGtDaHJvbWF0aWNpdHlEZW5vbWlu
YXRvcikpOworICByZXR1cm4gNDsgIC8vIFJldHVybiBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4K
K30KKworc2l6ZV90IENvbG9yU3BhY2VFeHRlbnNpb246OldyaXRlTHVtaW5hbmNlKHVpbnQ4X3Qq
IGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVub21p
bmF0b3IpIHsKKyAgUlRDX0RDSEVDS19HRShmLCAwLjBmKTsKKyAgQnl0ZVdyaXRlcjx1aW50MzJf
dCwgMz46OldyaXRlQmlnRW5kaWFuKGRhdGEsIHN0ZDo6cm91bmQoZiAqIGRlbm9taW5hdG9yKSk7
CisgIHJldHVybiAzOyAgLy8gUmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorfQorCiBi
b29sIEJhc2VSdHBTdHJpbmdFeHRlbnNpb246OlBhcnNlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVp
bnQ4X3Q+IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1J0
cEhlYWRlckV4dGVuc2lvbiogc3RyKSB7CiAgIGlmIChkYXRhLmVtcHR5KCkgfHwgZGF0YVswXSA9
PSAwKSAgLy8gVmFsaWQgc3RyaW5nIGV4dGVuc2lvbiBjYW4ndCBiZSBlbXB0eS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRl
cl9leHRlbnNpb25zLmgKaW5kZXggODRlOTgzMTQ3OWRiM2U5NGU5OTViNmZiNjVmYTQwM2EzZmNj
ZTFiMC4uNDJhNjIxNmM3YjUyOTg5MmY1YmQ1OGQyN2NkOTQwYzg5NTAxMmRkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hl
YWRlcl9leHRlbnNpb25zLmgKQEAgLTEwLDE5ICsxMCwyNSBAQAogI2lmbmRlZiBNT0RVTEVTX1JU
UF9SVENQX1NPVVJDRV9SVFBfSEVBREVSX0VYVEVOU0lPTlNfSF8KICNkZWZpbmUgTU9EVUxFU19S
VFBfUlRDUF9TT1VSQ0VfUlRQX0hFQURFUl9FWFRFTlNJT05TX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRl
ICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS9ydHBfaGVhZGVycy5oIgorI2luY2x1
ZGUgImFwaS92aWRlby9jb2xvcl9zcGFjZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19j
b250ZW50X3R5cGUuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfbWFya2luZy5o
IgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19yb3RhdGlvbi5oIgogI2luY2x1ZGUgImFwaS92
aWRlby92aWRlb190aW1pbmcuaCIKKyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElO
VChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBf
cnRjcF9kZWZpbmVzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBjbGFzcyBBYnNvbHV0ZVNl
bmRUaW1lIHsKICBwdWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB1aW50MzJfdDsKICAgc3Rh
dGljIGNvbnN0ZXhwciBSVFBFeHRlbnNpb25UeXBlIGtJZCA9IGtSdHBFeHRlbnNpb25BYnNvbHV0
ZVNlbmRUaW1lOwogICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qga1ZhbHVlU2l6ZUJ5dGVzID0g
MzsKICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyIGtVcmlbXSA9CkBAIC01Nyw2ICs2Myw3
IEBAIGNsYXNzIEF1ZGlvTGV2ZWwgewogCiBjbGFzcyBUcmFuc21pc3Npb25PZmZzZXQgewogIHB1
YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IGludDMyX3Q7CiAgIHN0YXRpYyBjb25zdGV4cHIg
UlRQRXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0ZW5zaW9uVHJhbnNtaXNzaW9uVGltZU9mZnNl
dDsKICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRlcyA9IDM7CiAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciBrVXJpW10gPSAidXJuOmlldGY6cGFyYW1zOnJ0cC1o
ZHJleHQ6dG9mZnNldCI7CkBAIC02OCw2ICs3NSw3IEBAIGNsYXNzIFRyYW5zbWlzc2lvbk9mZnNl
dCB7CiAKIGNsYXNzIFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyIHsKICBwdWJsaWM6CisgIHVzaW5n
IHZhbHVlX3R5cGUgPSB1aW50MTZfdDsKICAgc3RhdGljIGNvbnN0ZXhwciBSVFBFeHRlbnNpb25U
eXBlIGtJZCA9IGtSdHBFeHRlbnNpb25UcmFuc3BvcnRTZXF1ZW5jZU51bWJlcjsKICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRlcyA9IDI7CiAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgY2hhciBrVXJpW10gPQpAQCAtODAsNiArODgsNyBAQCBjbGFzcyBUcmFuc3BvcnRT
ZXF1ZW5jZU51bWJlciB7CiAKIGNsYXNzIFZpZGVvT3JpZW50YXRpb24gewogIHB1YmxpYzoKKyAg
dXNpbmcgdmFsdWVfdHlwZSA9IFZpZGVvUm90YXRpb247CiAgIHN0YXRpYyBjb25zdGV4cHIgUlRQ
RXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0ZW5zaW9uVmlkZW9Sb3RhdGlvbjsKICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRlcyA9IDE7CiAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgY2hhciBrVXJpW10gPSAidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iOwpAQCAt
OTQsNiArMTAzLDcgQEAgY2xhc3MgVmlkZW9PcmllbnRhdGlvbiB7CiAKIGNsYXNzIFBsYXlvdXRE
ZWxheUxpbWl0cyB7CiAgcHVibGljOgorICB1c2luZyB2YWx1ZV90eXBlID0gUGxheW91dERlbGF5
OwogICBzdGF0aWMgY29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUga0lkID0ga1J0cEV4dGVuc2lv
blBsYXlvdXREZWxheTsKICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRl
cyA9IDM7CiAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciBrVXJpW10gPQpAQCAtMTE3LDYg
KzEyNyw3IEBAIGNsYXNzIFBsYXlvdXREZWxheUxpbWl0cyB7CiAKIGNsYXNzIFZpZGVvQ29udGVu
dFR5cGVFeHRlbnNpb24gewogIHB1YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IFZpZGVvQ29u
dGVudFR5cGU7CiAgIHN0YXRpYyBjb25zdGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRw
RXh0ZW5zaW9uVmlkZW9Db250ZW50VHlwZTsKICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtW
YWx1ZVNpemVCeXRlcyA9IDE7CiAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciBrVXJpW10g
PQpAQCAtMTMzLDYgKzE0NCw3IEBAIGNsYXNzIFZpZGVvQ29udGVudFR5cGVFeHRlbnNpb24gewog
CiBjbGFzcyBWaWRlb1RpbWluZ0V4dGVuc2lvbiB7CiAgcHVibGljOgorICB1c2luZyB2YWx1ZV90
eXBlID0gVmlkZW9TZW5kVGltaW5nOwogICBzdGF0aWMgY29uc3RleHByIFJUUEV4dGVuc2lvblR5
cGUga0lkID0ga1J0cEV4dGVuc2lvblZpZGVvVGltaW5nOwogICBzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3Qga1ZhbHVlU2l6ZUJ5dGVzID0gMTM7CiAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hh
ciBrVXJpW10gPQpAQCAtMTU1LDYgKzE2Nyw3IEBAIGNsYXNzIFZpZGVvVGltaW5nRXh0ZW5zaW9u
IHsKIAogY2xhc3MgRnJhbWVNYXJraW5nRXh0ZW5zaW9uIHsKICBwdWJsaWM6CisgIHVzaW5nIHZh
bHVlX3R5cGUgPSBGcmFtZU1hcmtpbmc7CiAgIHN0YXRpYyBjb25zdGV4cHIgUlRQRXh0ZW5zaW9u
VHlwZSBrSWQgPSBrUnRwRXh0ZW5zaW9uRnJhbWVNYXJraW5nOwogICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IGNoYXIga1VyaVtdID0KICAgICAgICJodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9k
cmFmdC1pZXRmLWF2dGV4dC1mcmFtZW1hcmtpbmctMDciOwpAQCAtMTY5LDEwICsxODIsNDEgQEAg
Y2xhc3MgRnJhbWVNYXJraW5nRXh0ZW5zaW9uIHsKICAgc3RhdGljIGJvb2wgSXNTY2FsYWJsZSh1
aW50OF90IHRlbXBvcmFsX2lkLCB1aW50OF90IGxheWVyX2lkKTsKIH07CiAKK2NsYXNzIENvbG9y
U3BhY2VFeHRlbnNpb24geworIHB1YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IENvbG9yU3Bh
Y2U7CisgIHN0YXRpYyBjb25zdGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0ZW5z
aW9uQ29sb3JTcGFjZTsKKyAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRl
cyA9IDMwOworICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qga1ZhbHVlU2l6ZUJ5dGVzV2l0aG91
dEhkck1ldGFkYXRhID0gNDsKKyAgLy8gVE9ETyh3ZWJydGM6ODY1MSk6IENoYW5nZSB0byBhIHZh
bGlkIHVyaS4KKyAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyIGtVcmlbXSA9ICJydHAtY29s
b3JzcGFjZS11cmktcGxhY2Vob2xkZXIiOworCisgIHN0YXRpYyBib29sIFBhcnNlKHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IGRhdGEsCisgICAgICAgICAgICAgICAgICAgIENvbG9yU3Bh
Y2UqIGNvbG9yX3NwYWNlKTsKKyAgc3RhdGljIHNpemVfdCBWYWx1ZVNpemUoY29uc3QgQ29sb3JT
cGFjZSYgY29sb3Jfc3BhY2UpIHsKKyAgICByZXR1cm4gY29sb3Jfc3BhY2UuaGRyX21ldGFkYXRh
KCkgPyBrVmFsdWVTaXplQnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiBrVmFsdWVTaXplQnl0ZXNXaXRob3V0SGRyTWV0YWRhdGE7CisgIH0KKyAgc3RhdGljIGJv
b2wgV3JpdGUocnRjOjpBcnJheVZpZXc8dWludDhfdD4gZGF0YSwKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ29sb3JTcGFjZSYgY29sb3Jfc3BhY2UpOworCisgcHJpdmF0ZToKKyAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQga0Nocm9tYXRpY2l0eURlbm9taW5hdG9yID0gMTAwMDA7ICAvLyAwLjAw
MDEgcmVzb2x1dGlvbi4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga0x1bWluYW5jZU1heERlbm9t
aW5hdG9yID0gMTAwOyAgICAvLyAwLjAxIHJlc29sdXRpb24uCisgIHN0YXRpYyBjb25zdGV4cHIg
aW50IGtMdW1pbmFuY2VNaW5EZW5vbWluYXRvciA9IDEwMDAwOyAgLy8gMC4wMDAxIHJlc29sdXRp
b24uCisgIHN0YXRpYyBzaXplX3QgUGFyc2VDaHJvbWF0aWNpdHkoY29uc3QgdWludDhfdCogZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZHJNYXN0ZXJpbmdNZXRhZGF0
YTo6Q2hyb21hdGljaXR5KiBwKTsKKyAgc3RhdGljIHNpemVfdCBQYXJzZUx1bWluYW5jZShjb25z
dCB1aW50OF90KiBkYXRhLCBmbG9hdCogZiwgaW50IGRlbm9taW5hdG9yKTsKKyAgc3RhdGljIHNp
emVfdCBXcml0ZUNocm9tYXRpY2l0eSh1aW50OF90KiBkYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEhkck1hc3RlcmluZ01ldGFkYXRhOjpDaHJvbWF0aWNpdHkm
IHApOworICBzdGF0aWMgc2l6ZV90IFdyaXRlTHVtaW5hbmNlKHVpbnQ4X3QqIGRhdGEsIGZsb2F0
IGYsIGludCBkZW5vbWluYXRvcik7Cit9OworCiAvLyBCYXNlIGV4dGVuc2lvbiBjbGFzcyBmb3Ig
UlRQIGhlYWRlciBleHRlbnNpb25zIHdoaWNoIGFyZSBzdHJpbmdzLgogLy8gU3ViY2xhc3NlcyBt
dXN0IGRlZmluZWQga0lkIGFuZCBrVXJpIHN0YXRpYyBjb25zdGV4cHIgbWVtYmVycy4KIGNsYXNz
IEJhc2VSdHBTdHJpbmdFeHRlbnNpb24gewogIHB1YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9
IHN0ZDo6c3RyaW5nOwogICAvLyBTdHJpbmcgUlRQIGhlYWRlciBleHRlbnNpb25zIGFyZSBsaW1p
dGVkIHRvIDE2IGJ5dGVzIGJlY2F1c2UgaXQgaXMgdGhlCiAgIC8vIG1heGltdW0gbGVuZ3RoIHRo
YXQgY2FuIGJlIGVuY29kZWQgd2l0aCBvbmUtYnl0ZSBoZWFkZXIgZXh0ZW5zaW9ucy4KICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50OF90IGtNYXhWYWx1ZVNpemVCeXRlcyA9IDE2OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9wYXJzZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX3Bh
cnNlci5jYwppbmRleCBkZjY4Zjc0ZGQ5Mzc3MjIyMzE5ZDZmZTBhMzBmYzFhYTgzMjdjY2JmLi42
NDgxYTQwM2EwNDM2YTNkM2U0NmY0NWNjNzdiMmUyY2IxNGExMmIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfaGVhZGVyX3BhcnNlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX3BhcnNl
ci5jYwpAQCAtOSw5ICs5LDEyIEBACiAgKi8KICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2lu
Y2x1ZGUvcnRwX2hlYWRlcl9wYXJzZXIuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgorCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91dGlsaXR5LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhy
ZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yNSw4ICsyOCwx
MCBAQCBjbGFzcyBSdHBIZWFkZXJQYXJzZXJJbXBsIDogcHVibGljIFJ0cEhlYWRlclBhcnNlciB7
CiAgICAgICAgICAgICAgUlRQSGVhZGVyKiBoZWFkZXIpIGNvbnN0IG92ZXJyaWRlOwogCiAgIGJv
b2wgUmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlLCB1aW50
OF90IGlkKSBvdmVycmlkZTsKKyAgYm9vbCBSZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihSdHBF
eHRlbnNpb24gZXh0ZW5zaW9uKSBvdmVycmlkZTsKIAogICBib29sIERlcmVnaXN0ZXJSdHBIZWFk
ZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlKSBvdmVycmlkZTsKKyAgYm9vbCBEZXJl
Z2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJ0cEV4dGVuc2lvbiBleHRlbnNpb24pIG92ZXJyaWRl
OwogCiAgcHJpdmF0ZToKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdGljYWxfc2VjdGlvbl87
CkBAIC02Myw2ICs2OCwxMCBAQCBib29sIFJ0cEhlYWRlclBhcnNlckltcGw6OlBhcnNlKGNvbnN0
IHVpbnQ4X3QqIHBhY2tldCwKICAgfQogICByZXR1cm4gdHJ1ZTsKIH0KK2Jvb2wgUnRwSGVhZGVy
UGFyc2VySW1wbDo6UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUnRwRXh0ZW5zaW9uIGV4dGVu
c2lvbikgeworICBydGM6OkNyaXRTY29wZSBjcygmY3JpdGljYWxfc2VjdGlvbl8pOworICByZXR1
cm4gcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXy5SZWdpc3RlckJ5VXJpKGV4dGVuc2lvbi5pZCwg
ZXh0ZW5zaW9uLnVyaSk7Cit9CiAKIGJvb2wgUnRwSGVhZGVyUGFyc2VySW1wbDo6UmVnaXN0ZXJS
dHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGlkKSB7CkBAIC03
MCw2ICs3OSwxMiBAQCBib29sIFJ0cEhlYWRlclBhcnNlckltcGw6OlJlZ2lzdGVyUnRwSGVhZGVy
RXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUgdHlwZSwKICAgcmV0dXJuIHJ0cF9oZWFkZXJfZXh0
ZW5zaW9uX21hcF8uUmVnaXN0ZXJCeVR5cGUoaWQsIHR5cGUpOwogfQogCitib29sIFJ0cEhlYWRl
clBhcnNlckltcGw6OkRlcmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUnRwRXh0ZW5zaW9uIGV4
dGVuc2lvbikgeworICBydGM6OkNyaXRTY29wZSBjcygmY3JpdGljYWxfc2VjdGlvbl8pOworICBy
ZXR1cm4gcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXy5EZXJlZ2lzdGVyKAorICAgICAgcnRwX2hl
YWRlcl9leHRlbnNpb25fbWFwXy5HZXRUeXBlKGV4dGVuc2lvbi5pZCkpOworfQorCiBib29sIFJ0
cEhlYWRlclBhcnNlckltcGw6OkRlcmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5z
aW9uVHlwZSB0eXBlKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0aWNhbF9zZWN0aW9uXyk7
CiAgIHJldHVybiBydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXBfLkRlcmVnaXN0ZXIodHlwZSkgPT0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFj
a2V0LmNjCmluZGV4IDBiOWVkODBhZjU2ZWQ4NjdhNTRjOTU4MGZjYmNjNjM0NGIzZWNkYzguLjlk
NGRjZTRkZWEyN2U0ZGIwNDk1MWZmYzRmMTRkN2Y1YjAwNGZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9wYWNrZXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldC5jYwpAQCAtMTAsMTYg
KzEwLDE1IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0
LmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8
dXRpbGl0eT4KIAogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiY29t
bW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVy
aWNzL3NhZmVfY29udmVyc2lvbnMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9yYW5kb20uaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewpAQCAtMjEyLDggKzIxMSw3IEBAIHJ0Yzo6
QXJyYXlWaWV3PHVpbnQ4X3Q+IFJ0cFBhY2tldDo6QWxsb2NhdGVSYXdFeHRlbnNpb24oaW50IGlk
LCBzaXplX3QgbGVuZ3RoKSB7CiAgIGNvbnN0IGJvb2wgdHdvX2J5dGVfaGVhZGVyX3JlcXVpcmVk
ID0KICAgICAgIGlkID4gUnRwRXh0ZW5zaW9uOjprT25lQnl0ZUhlYWRlckV4dGVuc2lvbk1heElk
IHx8CiAgICAgICBsZW5ndGggPiBSdHBFeHRlbnNpb246OmtPbmVCeXRlSGVhZGVyRXh0ZW5zaW9u
TWF4VmFsdWVTaXplIHx8IGxlbmd0aCA9PSAwOwotICBSVENfQ0hFQ0soIXR3b19ieXRlX2hlYWRl
cl9yZXF1aXJlZCB8fAotICAgICAgICAgICAgZXh0ZW5zaW9uc18uSXNNaXhlZE9uZVR3b0J5dGVI
ZWFkZXJTdXBwb3J0ZWQoKSk7CisgIFJUQ19DSEVDSyghdHdvX2J5dGVfaGVhZGVyX3JlcXVpcmVk
IHx8IGV4dGVuc2lvbnNfLkV4dG1hcEFsbG93TWl4ZWQoKSk7CiAKICAgdWludDE2X3QgcHJvZmls
ZV9pZDsKICAgaWYgKGV4dGVuc2lvbnNfc2l6ZV8gPiAwKSB7CkBAIC0zNTksMjIgKzM1NywyMCBA
QCB1aW50OF90KiBSdHBQYWNrZXQ6OlNldFBheWxvYWRTaXplKHNpemVfdCBzaXplX2J5dGVzKSB7
CiAgIHJldHVybiBXcml0ZUF0KHBheWxvYWRfb2Zmc2V0Xyk7CiB9CiAKLWJvb2wgUnRwUGFja2V0
OjpTZXRQYWRkaW5nKHVpbnQ4X3Qgc2l6ZV9ieXRlcywgUmFuZG9tKiByYW5kb20pIHsKLSAgUlRD
X0RDSEVDSyhyYW5kb20pOwotICBpZiAocGF5bG9hZF9vZmZzZXRfICsgcGF5bG9hZF9zaXplXyAr
IHNpemVfYnl0ZXMgPiBjYXBhY2l0eSgpKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
Q2Fubm90IHNldCBwYWRkaW5nIHNpemUgIiA8PCBzaXplX2J5dGVzIDw8ICIsIG9ubHkgIgorYm9v
bCBSdHBQYWNrZXQ6OlNldFBhZGRpbmcoc2l6ZV90IHBhZGRpbmdfYnl0ZXMpIHsKKyAgaWYgKHBh
eWxvYWRfb2Zmc2V0XyArIHBheWxvYWRfc2l6ZV8gKyBwYWRkaW5nX2J5dGVzID4gY2FwYWNpdHko
KSkgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNhbm5vdCBzZXQgcGFkZGluZyBzaXpl
ICIgPDwgcGFkZGluZ19ieXRlcworICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgb25seSAi
CiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAoY2FwYWNpdHkoKSAtIHBheWxvYWRfb2Zmc2V0
XyAtIHBheWxvYWRfc2l6ZV8pCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGJ5dGVzIGxl
ZnQgaW4gYnVmZmVyLiI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9Ci0gIHBhZGRpbmdfc2l6ZV8g
PSBzaXplX2J5dGVzOworICBwYWRkaW5nX3NpemVfID0gcnRjOjpkY2hlY2tlZF9jYXN0PHVpbnQ4
X3Q+KHBhZGRpbmdfYnl0ZXMpOwogICBidWZmZXJfLlNldFNpemUocGF5bG9hZF9vZmZzZXRfICsg
cGF5bG9hZF9zaXplXyArIHBhZGRpbmdfc2l6ZV8pOwogICBpZiAocGFkZGluZ19zaXplXyA+IDAp
IHsKICAgICBzaXplX3QgcGFkZGluZ19vZmZzZXQgPSBwYXlsb2FkX29mZnNldF8gKyBwYXlsb2Fk
X3NpemVfOwogICAgIHNpemVfdCBwYWRkaW5nX2VuZCA9IHBhZGRpbmdfb2Zmc2V0ICsgcGFkZGlu
Z19zaXplXzsKLSAgICBmb3IgKHNpemVfdCBvZmZzZXQgPSBwYWRkaW5nX29mZnNldDsgb2Zmc2V0
IDwgcGFkZGluZ19lbmQgLSAxOyArK29mZnNldCkgewotICAgICAgV3JpdGVBdChvZmZzZXQsIHJh
bmRvbS0+UmFuZDx1aW50OF90PigpKTsKLSAgICB9CisgICAgbWVtc2V0KFdyaXRlQXQocGFkZGlu
Z19vZmZzZXQpLCAwLCBwYWRkaW5nX3NpemVfIC0gMSk7CiAgICAgV3JpdGVBdChwYWRkaW5nX2Vu
ZCAtIDEsIHBhZGRpbmdfc2l6ZV8pOwogICAgIFdyaXRlQXQoMCwgZGF0YSgpWzBdIHwgMHgyMCk7
ICAvLyBTZXQgcGFkZGluZyBiaXQuCiAgIH0gZWxzZSB7CkBAIC01NTYsNyArNTUyLDcgQEAgcnRj
OjpBcnJheVZpZXc8dWludDhfdD4gUnRwUGFja2V0OjpBbGxvY2F0ZUV4dGVuc2lvbihFeHRlbnNp
b25UeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBsZW5ndGgpIHsKICAgLy8gVE9ETyh3ZWJydGM6Nzk5MCk6IEFkZCBz
dXBwb3J0IGZvciBlbXB0eSBleHRlbnNpb25zIChsZW5ndGg9PTApLgogICBpZiAobGVuZ3RoID09
IDAgfHwgbGVuZ3RoID4gUnRwRXh0ZW5zaW9uOjprTWF4VmFsdWVTaXplIHx8Ci0gICAgICAoIWV4
dGVuc2lvbnNfLklzTWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKCkgJiYKKyAgICAgICgh
ZXh0ZW5zaW9uc18uRXh0bWFwQWxsb3dNaXhlZCgpICYmCiAgICAgICAgbGVuZ3RoID4gUnRwRXh0
ZW5zaW9uOjprT25lQnl0ZUhlYWRlckV4dGVuc2lvbk1heFZhbHVlU2l6ZSkpIHsKICAgICByZXR1
cm4gbnVsbHB0cjsKICAgfQpAQCAtNTY2LDcgKzU2Miw3IEBAIHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4
X3Q+IFJ0cFBhY2tldDo6QWxsb2NhdGVFeHRlbnNpb24oRXh0ZW5zaW9uVHlwZSB0eXBlLAogICAg
IC8vIEV4dGVuc2lvbiBub3QgcmVnaXN0ZXJlZC4KICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQot
ICBpZiAoIWV4dGVuc2lvbnNfLklzTWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKCkgJiYK
KyAgaWYgKCFleHRlbnNpb25zXy5FeHRtYXBBbGxvd01peGVkKCkgJiYKICAgICAgIGlkID4gUnRw
RXh0ZW5zaW9uOjprT25lQnl0ZUhlYWRlckV4dGVuc2lvbk1heElkKSB7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXQuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9wYWNrZXQuaAppbmRleCAxNWMzODY1YjM1OTRkYzg3NmU0MTgwNmE0NzgzZjE3NDYyNTNk
ZDc0Li43NjY2NmI3ZjEyZDc2Mzc1MTlmMDUyMzM5MzA5MTIzY2UyMTVlN2I0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfcGFja2V0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldC5oCkBAIC0x
MiwxMCArMTIsMTIgQEAKIAogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvdHlw
ZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZGVw
cmVjYXRpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBSYW5kb207CkBAIC05NCw4
ICs5NiwxMSBAQCBjbGFzcyBSdHBQYWNrZXQgewogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXh0ZW5z
aW9uPgogICBib29sIEhhc0V4dGVuc2lvbigpIGNvbnN0OwogCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBFeHRlbnNpb24sIHR5cGVuYW1lLi4uIFZhbHVlcz4KLSAgYm9vbCBHZXRFeHRlbnNpb24oVmFs
dWVzLi4uKSBjb25zdDsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEV4dGVuc2lvbiwgdHlwZW5hbWUg
Rmlyc3RWYWx1ZSwgdHlwZW5hbWUuLi4gVmFsdWVzPgorICBib29sIEdldEV4dGVuc2lvbihGaXJz
dFZhbHVlLCBWYWx1ZXMuLi4pIGNvbnN0OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBFeHRlbnNp
b24+CisgIGFic2w6Om9wdGlvbmFsPHR5cGVuYW1lIEV4dGVuc2lvbjo6dmFsdWVfdHlwZT4gR2V0
RXh0ZW5zaW9uKCkgY29uc3Q7CiAKICAgLy8gUmV0dXJucyB2aWV3IG9mIHRoZSByYXcgZXh0ZW5z
aW9uIG9yIGVtcHR5IHZpZXcgb24gZmFpbHVyZS4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIEV4dGVu
c2lvbj4KQEAgLTExMSw3ICsxMTYsMTIgQEAgY2xhc3MgUnRwUGFja2V0IHsKICAgdWludDhfdCog
U2V0UGF5bG9hZFNpemUoc2l6ZV90IHNpemVfYnl0ZXMpOwogICAvLyBTYW1lIGFzIFNldFBheWxv
YWRTaXplIGJ1dCBkb2Vzbid0IGd1YXJhbnRlZSB0byBrZWVwIGN1cnJlbnQgcGF5bG9hZC4KICAg
dWludDhfdCogQWxsb2NhdGVQYXlsb2FkKHNpemVfdCBzaXplX2J5dGVzKTsKLSAgYm9vbCBTZXRQ
YWRkaW5nKHVpbnQ4X3Qgc2l6ZV9ieXRlcywgUmFuZG9tKiByYW5kb20pOworICBSVENfREVQUkVD
QVRFRAorICBib29sIFNldFBhZGRpbmcodWludDhfdCBzaXplX2J5dGVzLCBSYW5kb20qIHJhbmRv
bSkgeworICAgIHJldHVybiBTZXRQYWRkaW5nKHNpemVfYnl0ZXMpOworICB9CisKKyAgYm9vbCBT
ZXRQYWRkaW5nKHNpemVfdCBwYWRkaW5nX3NpemUpOwogCiAgcHJpdmF0ZToKICAgc3RydWN0IEV4
dGVuc2lvbkluZm8gewpAQCAtMTc3LDEyICsxODcsMjEgQEAgYm9vbCBSdHBQYWNrZXQ6Okhhc0V4
dGVuc2lvbigpIGNvbnN0IHsKICAgcmV0dXJuICFGaW5kRXh0ZW5zaW9uKEV4dGVuc2lvbjo6a0lk
KS5lbXB0eSgpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRXh0ZW5zaW9uLCB0eXBlbmFtZS4u
LiBWYWx1ZXM+Ci1ib29sIFJ0cFBhY2tldDo6R2V0RXh0ZW5zaW9uKFZhbHVlcy4uLiB2YWx1ZXMp
IGNvbnN0IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBFeHRlbnNpb24sIHR5cGVuYW1lIEZpcnN0VmFs
dWUsIHR5cGVuYW1lLi4uIFZhbHVlcz4KK2Jvb2wgUnRwUGFja2V0OjpHZXRFeHRlbnNpb24oRmly
c3RWYWx1ZSBmaXJzdCwgVmFsdWVzLi4uIHZhbHVlcykgY29uc3QgewogICBhdXRvIHJhdyA9IEZp
bmRFeHRlbnNpb24oRXh0ZW5zaW9uOjprSWQpOwogICBpZiAocmF3LmVtcHR5KCkpCiAgICAgcmV0
dXJuIGZhbHNlOwotICByZXR1cm4gRXh0ZW5zaW9uOjpQYXJzZShyYXcsIHZhbHVlcy4uLik7Cisg
IHJldHVybiBFeHRlbnNpb246OlBhcnNlKHJhdywgZmlyc3QsIHZhbHVlcy4uLik7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBFeHRlbnNpb24+CithYnNsOjpvcHRpb25hbDx0eXBlbmFtZSBFeHRl
bnNpb246OnZhbHVlX3R5cGU+IFJ0cFBhY2tldDo6R2V0RXh0ZW5zaW9uKCkgY29uc3QgeworICBh
YnNsOjpvcHRpb25hbDx0eXBlbmFtZSBFeHRlbnNpb246OnZhbHVlX3R5cGU+IHJlc3VsdDsKKyAg
YXV0byByYXcgPSBGaW5kRXh0ZW5zaW9uKEV4dGVuc2lvbjo6a0lkKTsKKyAgaWYgKHJhdy5lbXB0
eSgpIHx8ICFFeHRlbnNpb246OlBhcnNlKHJhdywgJnJlc3VsdC5lbXBsYWNlKCkpKQorICAgIHJl
c3VsdCA9IGFic2w6Om51bGxvcHQ7CisgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBFeHRlbnNpb24+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3Rv
cnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnkuY2MKaW5kZXggZTEzNzRmZWI1N2Zj
ZDk5NjEyMTUxMjhlMTExZjIzMzdlYzY4ZmFlMC4uOGMxYzhlYmJiZmFlOTFjYWI2ZWEwNGM1Mjhh
MzZkOWM5OTc0YjljYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfaGlzdG9yeS5jYwpAQCAtOTcsNiArOTcsMTUgQEAg
dm9pZCBSdHBQYWNrZXRIaXN0b3J5OjpQdXRSdHBQYWNrZXQoc3RkOjp1bmlxdWVfcHRyPFJ0cFBh
Y2tldFRvU2VuZD4gcGFja2V0LAogICBjb25zdCB1aW50MTZfdCBydHBfc2VxX25vID0gcGFja2V0
LT5TZXF1ZW5jZU51bWJlcigpOwogICBTdG9yZWRQYWNrZXQmIHN0b3JlZF9wYWNrZXQgPSBwYWNr
ZXRfaGlzdG9yeV9bcnRwX3NlcV9ub107CiAgIFJUQ19EQ0hFQ0soc3RvcmVkX3BhY2tldC5wYWNr
ZXQgPT0gbnVsbHB0cik7CisgIGlmIChzdG9yZWRfcGFja2V0LnBhY2tldCkgeworICAgIC8vIEl0
IGlzIGFuIGVycm9yIGlmIHRoaXMgaGFwcGVuLiBCdXQgaXQgY2FuIGhhcHBlbiBpZiB0aGUgc2Vx
dWVuY2UgbnVtYmVycworICAgIC8vIGZvciBzb21lIHJlYXNvbiByZXN0YXJ0IHdpdGhvdXQgdGhh
dCB0aGUgaGlzdG9yeSBoYXMgYmVlbiByZXNldC4KKyAgICBhdXRvIHNpemVfaXRlcmF0b3IgPSBw
YWNrZXRfc2l6ZV8uZmluZChzdG9yZWRfcGFja2V0LnBhY2tldC0+c2l6ZSgpKTsKKyAgICBpZiAo
c2l6ZV9pdGVyYXRvciAhPSBwYWNrZXRfc2l6ZV8uZW5kKCkgJiYKKyAgICAgICAgc2l6ZV9pdGVy
YXRvci0+c2Vjb25kID09IHN0b3JlZF9wYWNrZXQucGFja2V0LT5TZXF1ZW5jZU51bWJlcigpKSB7
CisgICAgICBwYWNrZXRfc2l6ZV8uZXJhc2Uoc2l6ZV9pdGVyYXRvcik7CisgICAgfQorICB9CiAg
IHN0b3JlZF9wYWNrZXQucGFja2V0ID0gc3RkOjptb3ZlKHBhY2tldCk7CiAKICAgaWYgKHN0b3Jl
ZF9wYWNrZXQucGFja2V0LT5jYXB0dXJlX3RpbWVfbXMoKSA8PSAwKSB7CkBAIC0xMTYsOCArMTI1
LDcgQEAgdm9pZCBSdHBQYWNrZXRIaXN0b3J5OjpQdXRSdHBQYWNrZXQoc3RkOjp1bmlxdWVfcHRy
PFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0LAogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0
VG9TZW5kPiBSdHBQYWNrZXRIaXN0b3J5OjpHZXRQYWNrZXRBbmRTZXRTZW5kVGltZSgKLSAgICB1
aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsCi0gICAgYm9vbCB2ZXJpZnlfcnR0KSB7CisgICAgdWlu
dDE2X3Qgc2VxdWVuY2VfbnVtYmVyKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7CiAg
IGlmIChtb2RlXyA9PSBTdG9yYWdlTW9kZTo6a0Rpc2FibGVkKSB7CiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xMzAsNyArMTM4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4g
UnRwUGFja2V0SGlzdG9yeTo6R2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoCiAgIH0KIAogICBTdG9y
ZWRQYWNrZXQmIHBhY2tldCA9IHJ0cF9pdC0+c2Vjb25kOwotICBpZiAodmVyaWZ5X3J0dCAmJiAh
VmVyaWZ5UnR0KHJ0cF9pdC0+c2Vjb25kLCBub3dfbXMpKSB7CisgIGlmICghVmVyaWZ5UnR0KHJ0
cF9pdC0+c2Vjb25kLCBub3dfbXMpKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KIApAQCAt
MTUwLDggKzE1OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IFJ0cFBhY2tl
dEhpc3Rvcnk6OkdldFBhY2tldEFuZFNldFNlbmRUaW1lKAogfQogCiBhYnNsOjpvcHRpb25hbDxS
dHBQYWNrZXRIaXN0b3J5OjpQYWNrZXRTdGF0ZT4gUnRwUGFja2V0SGlzdG9yeTo6R2V0UGFja2V0
U3RhdGUoCi0gICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAotICAgIGJvb2wgdmVyaWZ5X3J0
dCkgY29uc3QgeworICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlcikgY29uc3QgewogICBydGM6
OkNyaXRTY29wZSBjcygmbG9ja18pOwogICBpZiAobW9kZV8gPT0gU3RvcmFnZU1vZGU6OmtEaXNh
YmxlZCkgewogICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwpAQCAtMTYyLDcgKzE2OSw3IEBAIGFi
c2w6Om9wdGlvbmFsPFJ0cFBhY2tldEhpc3Rvcnk6OlBhY2tldFN0YXRlPiBSdHBQYWNrZXRIaXN0
b3J5OjpHZXRQYWNrZXRTdGF0ZSgKICAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKICAgfQogCi0g
IGlmICh2ZXJpZnlfcnR0ICYmICFWZXJpZnlSdHQocnRwX2l0LT5zZWNvbmQsIGNsb2NrXy0+VGlt
ZUluTWlsbGlzZWNvbmRzKCkpKSB7CisgIGlmICghVmVyaWZ5UnR0KHJ0cF9pdC0+c2Vjb25kLCBj
bG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSkgewogICAgIHJldHVybiBhYnNsOjpudWxsb3B0
OwogICB9CiAKQEAgLTIwOSw4ICsyMTYsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRv
U2VuZD4gUnRwUGFja2V0SGlzdG9yeTo6R2V0QmVzdEZpdHRpbmdQYWNrZXQoCiAgIGNvbnN0IHVp
bnQxNl90IHNlcV9ubyA9IHVwcGVyX2JvdW5kX2RpZmYgPCBsb3dlcl9ib3VuZF9kaWZmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNpemVfaXRlcl91cHBlci0+c2Vjb25kCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNpemVfaXRlcl9sb3dlci0+c2Vjb25kOwotICBS
dHBQYWNrZXRUb1NlbmQqIGJlc3RfcGFja2V0ID0KLSAgICAgIHBhY2tldF9oaXN0b3J5Xy5maW5k
KHNlcV9ubyktPnNlY29uZC5wYWNrZXQuZ2V0KCk7CisgIGF1dG8gaGlzdG9yeV9pdCA9IHBhY2tl
dF9oaXN0b3J5Xy5maW5kKHNlcV9ubyk7CisgIGlmIChoaXN0b3J5X2l0ID09IHBhY2tldF9oaXN0
b3J5Xy5lbmQoKSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBmaW5kIHBhY2tl
dCBpbiBoaXN0b3J5IHdpdGggc2VxX25vIiA8PCBzZXFfbm87CisgICAgUlRDX0RDSEVDSyhmYWxz
ZSk7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKyAgaWYgKCFoaXN0b3J5X2l0LT5zZWNvbmQu
cGFja2V0KSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlBhY2tldCBwb2ludGVyIGlzIG51
bGwgaW4gaGlzdG9yeSBmb3Igc2VxX25vIgorICAgICAgICAgICAgICAgICAgICAgIDw8IHNlcV9u
bzsKKyAgICBSVENfRENIRUNLKGZhbHNlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorICBS
dHBQYWNrZXRUb1NlbmQqIGJlc3RfcGFja2V0ID0gaGlzdG9yeV9pdC0+c2Vjb25kLnBhY2tldC5n
ZXQoKTsKICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFJ0cFBhY2tldFRvU2VuZD4oKmJlc3Rf
cGFja2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnkuaAppbmRleCAxNjQ2YmE3Yzc2ZjNhZmE1ZTky
NjVlMjYzMDkyOWE3NmZmM2RhMDcyLi4wOTU0MjRlM2Q3MTMxMjNjOWMzYmIzYjcwOTZkYmNkZDVl
YTUwNzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnkuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnkuaApAQCAtNzYsMTYgKzc2LDEzIEBAIGNsYXNzIFJ0
cFBhY2tldEhpc3RvcnkgewogICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ2
NF90PiBzZW5kX3RpbWVfbXMpOwogCiAgIC8vIEdldHMgc3RvcmVkIFJUUCBwYWNrZXQgY29ycmVz
cG9uZGluZyB0byB0aGUgaW5wdXQgfHNlcXVlbmNlIG51bWJlcnwuCi0gIC8vIFJldHVybnMgbnVs
bHB0ciBpZiBwYWNrZXQgaXMgbm90IGZvdW5kLiBJZiB8dmVyaWZ5X3J0dHwgaXMgdHJ1ZSwgZG9l
c24ndAotICAvLyByZXR1cm4gcGFja2V0IHRoYXQgd2FzIChyZSlzZW50IHRvbyByZWNlbnRseS4K
KyAgLy8gUmV0dXJucyBudWxscHRyIGlmIHBhY2tldCBpcyBub3QgZm91bmQgb3Igd2FzIChyZSlz
ZW50IHRvbyByZWNlbnRseS4KICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gR2V0
UGFja2V0QW5kU2V0U2VuZFRpbWUoCi0gICAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsCi0g
ICAgICBib29sIHZlcmlmeV9ydHQpOworICAgICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyKTsK
IAogICAvLyBTaW1pbGFyIHRvIEdldFBhY2tldEFuZFNldFNlbmRUaW1lKCksIGJ1dCBvbmx5IHJl
dHVybnMgYSBzbmFwc2hvdCBvZiB0aGUKICAgLy8gY3VycmVudCBzdGF0ZSBmb3IgcGFja2V0LCBh
bmQgbmV2ZXIgdXBkYXRlcyBpbnRlcm5hbCBzdGF0ZS4KLSAgYWJzbDo6b3B0aW9uYWw8UGFja2V0
U3RhdGU+IEdldFBhY2tldFN0YXRlKHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmVyaWZ5X3J0dCkgY29u
c3Q7CisgIGFic2w6Om9wdGlvbmFsPFBhY2tldFN0YXRlPiBHZXRQYWNrZXRTdGF0ZSh1aW50MTZf
dCBzZXF1ZW5jZV9udW1iZXIpIGNvbnN0OwogCiAgIC8vIEdldCB0aGUgcGFja2V0IChpZiBhbnkp
IGZyb20gdGhlIGhpc3RvcnksIHdpdGggc2l6ZSBjbG9zZXN0IHRvCiAgIC8vIHxwYWNrZXRfc2l6
ZXwuIFRoZSBleGFjdCBzaXplIG9mIHRoZSBwYWNrZXQgaXMgbm90IGd1YXJhbnRlZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X2hpc3RvcnlfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfcGFja2V0X2hpc3RvcnlfdW5pdHRlc3QuY2MKaW5kZXggODVlOWViMjhjZDc0NTNhNDYy
ZDI4N2E2MTBkM2Q0NmU0MjZjOTAyMC4uMTQwNDM0Y2JiZGU3OWE2ZDFhMjU5NDJmZjgwMWVhZjFm
NmQ5OTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5X3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfaGlzdG9yeV91bml0dGVzdC5jYwpAQCAtNjMs
MTEgKzYzLDExIEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgQ2xlYXJzSGlzdG9yeUFm
dGVyU2V0U3RvcmVTdGF0dXMpIHsKICAgLy8gU3RvcmUgYSBwYWNrZXQsIGJ1dCB3aXRoIHNlbmQt
dGltZS4gSXQgc2hvdWxkIHRoZW4gbm90IGJlIHJlbW92ZWQuCiAgIGhpc3RfLlB1dFJ0cFBhY2tl
dChDcmVhdGVSdHBQYWNrZXQoa1N0YXJ0U2VxTnVtKSwga0FsbG93UmV0cmFuc21pc3Npb24sCiAg
ICAgICAgICAgICAgICAgICAgICBhYnNsOjpudWxsb3B0KTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8u
R2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0
Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBDaGFuZ2luZyBzdG9yZSBz
dGF0dXMsIGV2ZW4gdG8gdGhlIGN1cnJlbnQgb25lLCB3aWxsIGNsZWFyIHRoZSBoaXN0b3J5Lgog
ICBoaXN0Xy5TZXRTdG9yZVBhY2tldHNTdGF0dXMoU3RvcmFnZU1vZGU6OmtTdG9yZSwgMTApOwot
ICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkp
OworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiB9
CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgU3RhcnRTZXFSZXNldEFmdGVyUmVzZXQp
IHsKQEAgLTc1LDE2ICs3NSwxNiBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFN0YXJ0
U2VxUmVzZXRBZnRlclJlc2V0KSB7CiAgIC8vIFN0b3JlIGEgcGFja2V0LCBidXQgd2l0aCBzZW5k
LXRpbWUuIEl0IHNob3VsZCB0aGVuIG5vdCBiZSByZW1vdmVkLgogICBoaXN0Xy5QdXRSdHBQYWNr
ZXQoQ3JlYXRlUnRwUGFja2V0KGtTdGFydFNlcU51bSksIGtBbGxvd1JldHJhbnNtaXNzaW9uLAog
ICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bnVsbG9wdCk7Ci0gIEVYUEVDVF9UUlVFKGhpc3Rf
LkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlz
dF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQ2hhbmdpbmcgc3RvcmUg
c3RhdHVzLCB0byBjbGVhciB0aGUgaGlzdG9yeS4KICAgaGlzdF8uU2V0U3RvcmVQYWNrZXRzU3Rh
dHVzKFN0b3JhZ2VNb2RlOjprU3RvcmVBbmRDdWxsLCAxMCk7Ci0gIEVYUEVDVF9GQUxTRShoaXN0
Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9GQUxTRSho
aXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBBZGQgYSBuZXcgcGFj
a2V0LgogICBoaXN0Xy5QdXRSdHBQYWNrZXQoQ3JlYXRlUnRwUGFja2V0KGtTdGFydFNlcU51bSAr
IDEpLCBrQWxsb3dSZXRyYW5zbWlzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om51
bGxvcHQpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0g
KyAxLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRT
ZXFOdW0gKyAxKSk7CiAKICAgLy8gQWR2YW5jZSB0aW1lIHBhc3Qgd2hlcmUgcGFja2V0IGV4cGly
ZXMuCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKApAQCAtOTQsOSArOTQs
OSBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFN0YXJ0U2VxUmVzZXRBZnRlclJlc2V0
KSB7CiAgIC8vIEFkZCBvbmUgbW9yZSBwYWNrZXQgYW5kIHZlcmlmeSBubyBzdGF0ZSBsZWZ0IGZy
b20gcGFja2V0IGJlZm9yZSByZXNldC4KICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBh
Y2tldChUbzE2dShrU3RhcnRTZXFOdW0gKyAyKSksCiAgICAgICAgICAgICAgICAgICAgICBrQWxs
b3dSZXRyYW5zbWlzc2lvbiwgYWJzbDo6bnVsbG9wdCk7Ci0gIEVYUEVDVF9GQUxTRShoaXN0Xy5H
ZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7Ci0gIEVYUEVDVF9UUlVFKGhpc3Rf
LkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSArIDEsIGZhbHNlKSk7Ci0gIEVYUEVDVF9UUlVF
KGhpc3RfLkdldFBhY2tldFN0YXRlKFRvMTZ1KGtTdGFydFNlcU51bSArIDIpLCBmYWxzZSkpOwor
ICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CisgIEVY
UEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSArIDEpKTsKKyAgRVhQ
RUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoVG8xNnUoa1N0YXJ0U2VxTnVtICsgMikpKTsK
IH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBOb1N0b3JlU3RhdHVzKSB7CkBAIC0x
MDQsMjEgKzEwNCwyMSBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIE5vU3RvcmVTdGF0
dXMpIHsKICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0ID0gQ3JlYXRl
UnRwUGFja2V0KGtTdGFydFNlcU51bSk7CiAgIGhpc3RfLlB1dFJ0cFBhY2tldChzdGQ6Om1vdmUo
cGFja2V0KSwga0FsbG93UmV0cmFuc21pc3Npb24sIGFic2w6Om51bGxvcHQpOwogICAvLyBQYWNr
ZXQgc2hvdWxkIG5vdCBiZSBzdG9yZWQuCi0gIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRT
dGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNr
ZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0
LCBHZXRSdHBQYWNrZXRfTm90U3RvcmVkKSB7CiAgIGhpc3RfLlNldFN0b3JlUGFja2V0c1N0YXR1
cyhTdG9yYWdlTW9kZTo6a1N0b3JlLCAxMCk7Ci0gIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNr
ZXRTdGF0ZSgwLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUo
MCkpOwogfQogCiBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFB1dFJ0cFBhY2tldCkgewog
ICBoaXN0Xy5TZXRTdG9yZVBhY2tldHNTdGF0dXMoU3RvcmFnZU1vZGU6OmtTdG9yZSwgMTApOwog
ICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXQgPSBDcmVhdGVSdHBQYWNr
ZXQoa1N0YXJ0U2VxTnVtKTsKIAotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUo
a1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3Rh
dGUoa1N0YXJ0U2VxTnVtKSk7CiAgIGhpc3RfLlB1dFJ0cFBhY2tldChzdGQ6Om1vdmUocGFja2V0
KSwga0FsbG93UmV0cmFuc21pc3Npb24sIGFic2w6Om51bGxvcHQpOwotICBFWFBFQ1RfVFJVRSho
aXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9UUlVF
KGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOwogfQogCiBURVNUX0YoUnRwUGFj
a2V0SGlzdG9yeVRlc3QsIEdldFJ0cFBhY2tldCkgewpAQCAtMTMwLDcgKzEzMCw3IEBAIFRFU1Rf
RihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgR2V0UnRwUGFja2V0KSB7CiAgIGhpc3RfLlB1dFJ0cFBh
Y2tldChzdGQ6Om1vdmUocGFja2V0KSwga0FsbG93UmV0cmFuc21pc3Npb24sIGFic2w6Om51bGxv
cHQpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tldF9vdXQgPQot
ICAgICAgaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCBmYWxzZSk7
CisgICAgICBoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0pOwogICBF
WFBFQ1RfVFJVRShwYWNrZXRfb3V0KTsKICAgRVhQRUNUX0VRKGJ1ZmZlciwgcGFja2V0X291dC0+
QnVmZmVyKCkpOwogICBFWFBFQ1RfRVEoY2FwdHVyZV90aW1lX21zLCBwYWNrZXRfb3V0LT5jYXB0
dXJlX3RpbWVfbXMoKSk7CkBAIC0xNDYsNyArMTQ2LDcgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3Rv
cnlUZXN0LCBOb0NhcHR1cmVUaW1lKSB7CiAgIGhpc3RfLlB1dFJ0cFBhY2tldChzdGQ6Om1vdmUo
cGFja2V0KSwga0FsbG93UmV0cmFuc21pc3Npb24sIGFic2w6Om51bGxvcHQpOwogCiAgIHN0ZDo6
dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tldF9vdXQgPQotICAgICAgaGlzdF8uR2V0
UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCBmYWxzZSk7CisgICAgICBoaXN0Xy5H
ZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0pOwogICBFWFBFQ1RfVFJVRShwYWNr
ZXRfb3V0KTsKICAgRVhQRUNUX0VRKGJ1ZmZlciwgcGFja2V0X291dC0+QnVmZmVyKCkpOwogICBF
WFBFQ1RfRVEoY2FwdHVyZV90aW1lX21zLCBwYWNrZXRfb3V0LT5jYXB0dXJlX3RpbWVfbXMoKSk7
CkBAIC0xNjEsMTkgKzE2MSwyMSBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIERvbnRS
ZXRyYW5zbWl0KSB7CiAKICAgLy8gR2V0IHRoZSBwYWNrZXQgYW5kIHZlcmlmeSBkYXRhLgogICBz
dGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXRfb3V0OwotICBwYWNrZXRfb3V0
ID0gaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCBmYWxzZSk7Cisg
IHBhY2tldF9vdXQgPSBoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0p
OwogICBBU1NFUlRfVFJVRShwYWNrZXRfb3V0KTsKICAgRVhQRUNUX0VRKGJ1ZmZlci5zaXplKCks
IHBhY2tldF9vdXQtPnNpemUoKSk7CiAgIEVYUEVDVF9FUShjYXB0dXJlX3RpbWVfbXMsIHBhY2tl
dF9vdXQtPmNhcHR1cmVfdGltZV9tcygpKTsKIAogICAvLyBOb24tcmV0cmFuc21pdHRhYmxlIHBh
Y2tldHMgYXJlIGltbWVkaWF0ZWx5IHJlbW92ZWQsIHNvIGdldHRpbmcgaW4gYWdhaW4KICAgLy8g
c2hvdWxkIGZhaWwuCi0gIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGlt
ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRB
bmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0pKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3Rv
cnlUZXN0LCBQYWNrZXRTdGF0ZUlzQ29ycmVjdCkgewogICBjb25zdCB1aW50MzJfdCBrU3NyYyA9
IDkyMzg0NzYyOworICBjb25zdCBpbnQ2NF90IGtSdHRNcyA9IDEwMDsKICAgaGlzdF8uU2V0U3Rv
cmVQYWNrZXRzU3RhdHVzKFN0b3JhZ2VNb2RlOjprU3RvcmVBbmRDdWxsLCAxMCk7CisgIGhpc3Rf
LlNldFJ0dChrUnR0TXMpOwogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNr
ZXQgPSBDcmVhdGVSdHBQYWNrZXQoa1N0YXJ0U2VxTnVtKTsKICAgcGFja2V0LT5TZXRTc3JjKGtT
c3JjKTsKICAgcGFja2V0LT5TZXRQYXlsb2FkU2l6ZSgxMjM0KTsKQEAgLTE4Myw3ICsxODUsNyBA
QCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFBhY2tldFN0YXRlSXNDb3JyZWN0KSB7CiAg
ICAgICAgICAgICAgICAgICAgICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAK
ICAgYWJzbDo6b3B0aW9uYWw8UnRwUGFja2V0SGlzdG9yeTo6UGFja2V0U3RhdGU+IHN0YXRlID0K
LSAgICAgIGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpOworICAgICAg
aGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKTsKICAgQVNTRVJUX1RSVUUoc3RhdGUp
OwogICBFWFBFQ1RfRVEoc3RhdGUtPnJ0cF9zZXF1ZW5jZV9udW1iZXIsIGtTdGFydFNlcU51bSk7
CiAgIEVYUEVDVF9FUShzdGF0ZS0+c2VuZF90aW1lX21zLCBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxs
aXNlY29uZHMoKSk7CkBAIC0xOTMsOSArMTk1LDEwIEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5
VGVzdCwgUGFja2V0U3RhdGVJc0NvcnJlY3QpIHsKICAgRVhQRUNUX0VRKHN0YXRlLT50aW1lc19y
ZXRyYW5zbWl0dGVkLCAwdSk7CiAKICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29u
ZHMoMSk7Ci0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtTdGFy
dFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2Vu
ZFRpbWUoa1N0YXJ0U2VxTnVtKSk7CisgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNv
bmRzKGtSdHRNcyArIDEpOwogCi0gIHN0YXRlID0gaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0
U2VxTnVtLCBmYWxzZSk7CisgIHN0YXRlID0gaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2Vx
TnVtKTsKICAgQVNTRVJUX1RSVUUoc3RhdGUpOwogICBFWFBFQ1RfRVEoc3RhdGUtPnRpbWVzX3Jl
dHJhbnNtaXR0ZWQsIDF1KTsKIH0KQEAgLTIxMSw3ICsyMTQsNyBAQCBURVNUX0YoUnRwUGFja2V0
SGlzdG9yeVRlc3QsIE1pblJlc2VuZFRpbWVXaXRoUGFjZXIpIHsKICAgaGlzdF8uUHV0UnRwUGFj
a2V0KHN0ZDo6bW92ZShwYWNrZXQpLCBrQWxsb3dSZXRyYW5zbWlzc2lvbiwgYWJzbDo6bnVsbG9w
dCk7CiAKICAgLy8gRmlyc3QgdHJhbnNtaXNzaW9uOiBUaW1lVG9TZW5kUGFja2V0KCkgY2FsbCBm
cm9tIHBhY2VyLgotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShr
U3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldEFuZFNl
dFNlbmRUaW1lKGtTdGFydFNlcU51bSkpOwogCiAgIC8vIEZpcnN0IHJldHJhbnNtaXNzaW9uIC0g
YWxsb3cgZWFybHkgcmV0cmFuc21pc3Npb24uCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWls
bGlzZWNvbmRzKDEpOwpAQCAtMjIxLDI2ICsyMjQsMjQgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3Rv
cnlUZXN0LCBNaW5SZXNlbmRUaW1lV2l0aFBhY2VyKSB7CiAgIC8vICAgIHBhY2tldCBpcyB0aGVy
ZSBhbmQgdmVyaWZ5IFJUVCBjb25zdHJhaW50cy4gVGhlbiB3ZSB1c2UgdGhlIHNzcmMKICAgLy8g
ICAgYW5kIHNlcXVlbmNlIG51bWJlciB0byBlbnF1ZXVlIHRoZSByZXRyYW5zbWlzc2lvbiBpbiB0
aGUgcGFjZXIKICAgLy8gMikgV2hlbiB0aGUgcGFjZXIgZGV0ZXJtaW5lcyB0aGF0IGl0IGlzIHRp
bWUgdG8gc2VuZCB0aGUgcGFja2V0LCBpdCBjYWxscwotICAvLyAgICBHZXRQYWNrZXRBbmRTZXRT
ZW5kVGltZSgpLiBUaGlzIHRpbWUgd2UgZG8gbm90IG5lZWQgdG8gdmVyaWZ5IFJUVCBhcwotICAv
LyAgICBoYXMgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRvbmUuCisgIC8vICAgIEdldFBhY2tldEFu
ZFNldFNlbmRUaW1lKCkuCiAgIGFic2w6Om9wdGlvbmFsPFJ0cFBhY2tldEhpc3Rvcnk6OlBhY2tl
dFN0YXRlPiBwYWNrZXRfc3RhdGUgPQotICAgICAgaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0
U2VxTnVtLCAvKnZlcmlmeV9ydHQ9Ki90cnVlKTsKKyAgICAgIGhpc3RfLkdldFBhY2tldFN0YXRl
KGtTdGFydFNlcU51bSk7CiAgIEVYUEVDVF9UUlVFKHBhY2tldF9zdGF0ZSk7CiAgIEVYUEVDVF9F
UShsZW4sIHBhY2tldF9zdGF0ZS0+cGF5bG9hZF9zaXplKTsKICAgRVhQRUNUX0VRKGNhcHR1cmVf
dGltZV9tcywgcGFja2V0X3N0YXRlLT5jYXB0dXJlX3RpbWVfbXMpOwogCiAgIC8vIFJldHJhbnNt
aXNzaW9uIHdhcyBhbGxvd2VkLCBuZXh0IHNlbmQgaXQgZnJvbSBwYWNlci4KLSAgRVhQRUNUX1RS
VUUoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnZlcmlmeV9ydHQ9Ki9mYWxzZSkp
OworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFO
dW0pKTsKIAogICAvLyBTZWNvbmQgcmV0cmFuc21pc3Npb24gLSBhZHZhbmNlIHRpbWUgdG8ganVz
dCBiZWZvcmUgcmV0cmFuc21pc3Npb24gT0suCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWls
bGlzZWNvbmRzKGtNaW5SZXRyYW5zbWl0SW50ZXJ2YWxNcyAtIDEpOwotICBFWFBFQ1RfRkFMU0Uo
aGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCAvKnZlcmlmeV9ydHQ9Ki90cnVlKSk7
CisgIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIAog
ICAvLyBBZHZhbmNlIHRpbWUgdG8ganVzdCBhZnRlciByZXRyYW5zbWlzc2lvbiBPSy4KICAgZmFr
ZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMSk7Ci0gIEVYUEVDVF9UUlVFKGhpc3Rf
LkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgLyp2ZXJpZnlfcnR0PSovdHJ1ZSkpOwotICBF
WFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0sIGZh
bHNlKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkp
OworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFO
dW0pKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBNaW5SZXNlbmRUaW1lV2l0
aG91dFBhY2VyKSB7CkBAIC0yNTYsMTggKzI1NywxOCBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9y
eVRlc3QsIE1pblJlc2VuZFRpbWVXaXRob3V0UGFjZXIpIHsKIAogICAvLyBGaXJzdCByZXRyYW5z
bWlzc2lvbiAtIGFsbG93IGVhcmx5IHJldHJhbnNtaXNzaW9uLgogICBmYWtlX2Nsb2NrXy5BZHZh
bmNlVGltZU1pbGxpc2Vjb25kcygxKTsKLSAgcGFja2V0ID0gaGlzdF8uR2V0UGFja2V0QW5kU2V0
U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCB0cnVlKTsKKyAgcGFja2V0ID0gaGlzdF8uR2V0UGFja2V0
QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKTsKICAgRVhQRUNUX1RSVUUocGFja2V0KTsKICAg
RVhQRUNUX0VRKGxlbiwgcGFja2V0LT5zaXplKCkpOwogICBFWFBFQ1RfRVEoY2FwdHVyZV90aW1l
X21zLCBwYWNrZXQtPmNhcHR1cmVfdGltZV9tcygpKTsKIAogICAvLyBTZWNvbmQgcmV0cmFuc21p
c3Npb24gLSBhZHZhbmNlIHRpbWUgdG8ganVzdCBiZWZvcmUgcmV0cmFuc21pc3Npb24gT0suCiAg
IGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtNaW5SZXRyYW5zbWl0SW50ZXJ2
YWxNcyAtIDEpOwotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUo
a1N0YXJ0U2VxTnVtLCB0cnVlKSk7CisgIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRBbmRT
ZXRTZW5kVGltZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBBZHZhbmNlIHRpbWUgdG8ganVzdCBh
ZnRlciByZXRyYW5zbWlzc2lvbiBPSy4KICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNl
Y29uZHMoMSk7Ci0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtT
dGFydFNlcU51bSwgdHJ1ZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRT
ZW5kVGltZShrU3RhcnRTZXFOdW0pKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0
LCBSZW1vdmVzT2xkZXN0U2VudFBhY2tldFdoZW5BdE1heFNpemUpIHsKQEAgLTI4OSw3ICsyOTAs
NyBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFJlbW92ZXNPbGRlc3RTZW50UGFja2V0
V2hlbkF0TWF4U2l6ZSkgewogICB9CiAKICAgLy8gRmlyc3QgcGFja2V0IHNob3VsZCBzdGlsbCBi
ZSB0aGVyZS4KLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVt
LCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFO
dW0pKTsKIAogICAvLyBIaXN0b3J5IGlzIGZ1bGwsIG9sZGVzdCBvbmUgc2hvdWxkIGJlIG92ZXJ3
cml0dGVuLgogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXQgPQpAQCAt
Mjk4LDggKzI5OSw4IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgUmVtb3Zlc09sZGVz
dFNlbnRQYWNrZXRXaGVuQXRNYXhTaXplKSB7CiAgICAgICAgICAgICAgICAgICAgICBmYWtlX2Ns
b2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAKICAgLy8gT2xkZXN0IHBhY2tldCBzaG91bGQg
YmUgZ29uZSwgYnV0IHBhY2tldCBhZnRlciB0aGFuIG9uZSBzdGlsbCBwcmVzZW50LgotICBFWFBF
Q1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOwotICBF
WFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAxLCBmYWxzZSkp
OworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7Cisg
IEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSArIDEpKTsKIH0K
IAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBSZW1vdmVzT2xkZXN0UGFja2V0V2hlbkF0
TWF4Q2FwYWNpdHkpIHsKQEAgLTMxNyw3ICszMTgsNyBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9y
eVRlc3QsIFJlbW92ZXNPbGRlc3RQYWNrZXRXaGVuQXRNYXhDYXBhY2l0eSkgewogICB9CiAKICAg
Ly8gRmlyc3QgcGFja2V0IHNob3VsZCBzdGlsbCBiZSB0aGVyZS4KLSAgRVhQRUNUX1RSVUUoaGlz
dF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRSho
aXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBIaXN0b3J5IGlzIGZ1
bGwsIG9sZGVzdCBvbmUgc2hvdWxkIGJlIG92ZXJ3cml0dGVuLgogICBzdGQ6OnVuaXF1ZV9wdHI8
UnRwUGFja2V0VG9TZW5kPiBwYWNrZXQgPQpAQCAtMzI2LDggKzMyNyw4IEBAIFRFU1RfRihSdHBQ
YWNrZXRIaXN0b3J5VGVzdCwgUmVtb3Zlc09sZGVzdFBhY2tldFdoZW5BdE1heENhcGFjaXR5KSB7
CiAgICAgICAgICAgICAgICAgICAgICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7
CiAKICAgLy8gT2xkZXN0IHBhY2tldCBzaG91bGQgYmUgZ29uZSwgYnV0IHBhY2tldCBhZnRlciB0
aGFuIG9uZSBzdGlsbCBwcmVzZW50LgotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3Rh
dGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRT
dGF0ZShrU3RhcnRTZXFOdW0gKyAxLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0
UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tl
dFN0YXRlKGtTdGFydFNlcU51bSArIDEpKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlU
ZXN0LCBEb250UmVtb3ZlVW5zZW50UGFja2V0cykgewpAQCAtMzQzLDI1ICszNDQsMjUgQEAgVEVT
VF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBEb250UmVtb3ZlVW5zZW50UGFja2V0cykgewogICBm
YWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhSdHBQYWNrZXRIaXN0b3J5OjprTWlu
UGFja2V0RHVyYXRpb25Ncyk7CiAKICAgLy8gRmlyc3QgcGFja2V0IHNob3VsZCBzdGlsbCBiZSB0
aGVyZS4KLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBm
YWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0p
KTsKIAogICAvLyBIaXN0b3J5IGlzIGZ1bGwsIGJ1dCBvbGQgcGFja2V0cyBub3Qgc2VudCwgc28g
YWxsb3cgZXhwYW5zaW9uLgogICBoaXN0Xy5QdXRSdHBQYWNrZXQoQ3JlYXRlUnRwUGFja2V0KFRv
MTZ1KGtTdGFydFNlcU51bSArIGtNYXhOdW1QYWNrZXRzKSksCiAgICAgICAgICAgICAgICAgICAg
ICBrQWxsb3dSZXRyYW5zbWlzc2lvbiwgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkp
OwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNl
KSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOwog
CiAgIC8vIFNldCBhbGwgcGFja2V0IGFzIHNlbnQgYW5kIGFkdmFuY2UgdGltZSBwYXN0IG1pbiBw
YWNrZXQgZHVyYXRpb24gdGltZSwKICAgLy8gb3RoZXJ3aXNlIHBhY2tldHMgdGlsbCBzdGlsbCBi
ZSBwcmV2ZW50ZWQgZnJvbSBiZWluZyByZW1vdmVkLgogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
PSBrTWF4TnVtUGFja2V0czsgKytpKSB7Ci0gICAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0
QW5kU2V0U2VuZFRpbWUoVG8xNnUoa1N0YXJ0U2VxTnVtICsgaSksIGZhbHNlKSk7CisgICAgRVhQ
RUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoVG8xNnUoa1N0YXJ0U2VxTnVt
ICsgaSkpKTsKICAgfQogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhSdHBQ
YWNrZXRIaXN0b3J5OjprTWluUGFja2V0RHVyYXRpb25Ncyk7CiAgIC8vIEFkZCBhIG5ldyBwYWNr
ZXQsIHRoaXMgbWVhbnMgdGhlIHR3byBvbGRlc3Qgb25lcyB3aWxsIGJlIGN1bGxlZC4KICAgaGlz
dF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChUbzE2dShrU3RhcnRTZXFOdW0gKyBrTWF4
TnVtUGFja2V0cyArIDEpKSwKICAgICAgICAgICAgICAgICAgICAgIGtBbGxvd1JldHJhbnNtaXNz
aW9uLCBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Ci0gIEVYUEVDVF9GQUxTRSho
aXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7Ci0gIEVYUEVDVF9GQUxT
RShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAxLCBmYWxzZSkpOwotICBFWFBF
Q1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShUbzE2dShrU3RhcnRTZXFOdW0gKyAyKSwgZmFs
c2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkp
OworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtICsgMSkp
OworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShUbzE2dShrU3RhcnRTZXFOdW0g
KyAyKSkpOwogfQogCiBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIERvbnRSZW1vdmVUb29S
ZWNlbnRseVRyYW5zbWl0dGVkUGFja2V0cykgewpAQCAtMzc4LDE1ICszNzksMTUgQEAgVEVTVF9G
KFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBEb250UmVtb3ZlVG9vUmVjZW50bHlUcmFuc21pdHRlZFBh
Y2tldHMpIHsKICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChrU3RhcnRTZXFO
dW0gKyAxKSwga0FsbG93UmV0cmFuc21pc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICBmYWtl
X2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgIC8vIEZpcnN0IHBhY2tldCBzaG91bGQg
c3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFy
dFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0
YXJ0U2VxTnVtKSk7CiAKICAgLy8gQWR2YW5jZSB0aW1lIHRvIHdoZXJlIHBhY2tldCB3aWxsIGJl
IGVsaWdpYmxlIGZvciByZW1vdmFsIGFuZCB0cnkgYWdhaW4uCiAgIGZha2VfY2xvY2tfLkFkdmFu
Y2VUaW1lTWlsbGlzZWNvbmRzKDEpOwogICBoaXN0Xy5QdXRSdHBQYWNrZXQoQ3JlYXRlUnRwUGFj
a2V0KFRvMTZ1KGtTdGFydFNlcU51bSArIDIpKSwKICAgICAgICAgICAgICAgICAgICAgIGtBbGxv
d1JldHJhbnNtaXNzaW9uLCBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgIC8v
IEZpcnN0IHBhY2tldCBzaG91bGQgbm8gYmUgZ29uZSwgYnV0IG5leHQgb25lIHN0aWxsIHRoZXJl
LgotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxz
ZSkpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAx
LCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2Vx
TnVtKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSAr
IDEpKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBEb250UmVtb3ZlVG9vUmVj
ZW50bHlUcmFuc21pdHRlZFBhY2tldHNIaWdoUnR0KSB7CkBAIC00MDcsMTUgKzQwOCwxNSBAQCBU
RVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIERvbnRSZW1vdmVUb29SZWNlbnRseVRyYW5zbWl0
dGVkUGFja2V0c0hpZ2hSdHQpIHsKICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tl
dChrU3RhcnRTZXFOdW0gKyAxKSwga0FsbG93UmV0cmFuc21pc3Npb24sCiAgICAgICAgICAgICAg
ICAgICAgICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CiAgIC8vIEZpcnN0IHBh
Y2tldCBzaG91bGQgc3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tl
dFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFj
a2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQWR2YW5jZSB0aW1lIHRvIHdoZXJlIHBh
Y2tldCB3aWxsIGJlIGVsaWdpYmxlIGZvciByZW1vdmFsIGFuZCB0cnkgYWdhaW4uCiAgIGZha2Vf
Y2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEpOwogICBoaXN0Xy5QdXRSdHBQYWNrZXQo
Q3JlYXRlUnRwUGFja2V0KFRvMTZ1KGtTdGFydFNlcU51bSArIDIpKSwKICAgICAgICAgICAgICAg
ICAgICAgIGtBbGxvd1JldHJhbnNtaXNzaW9uLCBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29u
ZHMoKSk7CiAgIC8vIEZpcnN0IHBhY2tldCBzaG91bGQgbm8gYmUgZ29uZSwgYnV0IG5leHQgb25l
IHN0aWxsIHRoZXJlLgotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0
U2VxTnVtLCBmYWxzZSkpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3Rh
cnRTZXFOdW0gKyAxLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3Rh
dGUoa1N0YXJ0U2VxTnVtKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtT
dGFydFNlcU51bSArIDEpKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBSZW1v
dmVzT2xkV2l0aEN1bGxpbmcpIHsKQEAgLTQzMSwxNCArNDMyLDE0IEBAIFRFU1RfRihSdHBQYWNr
ZXRIaXN0b3J5VGVzdCwgUmVtb3Zlc09sZFdpdGhDdWxsaW5nKSB7CiAgIGZha2VfY2xvY2tfLkFk
dmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtNYXhQYWNrZXREdXJhdGlvbk1zIC0gMSk7CiAKICAgLy8g
Rmlyc3QgcGFja2V0IHNob3VsZCBzdGlsbCBiZSB0aGVyZS4KLSAgRVhQRUNUX1RSVUUoaGlzdF8u
R2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0
Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBBZHZhbmNlIHRvIHdoZXJl
IHBhY2tldCBjYW4gYmUgY3VsbGVkLCBldmVuIGlmIGJ1ZmZlciBpcyBub3QgZnVsbC4KICAgZmFr
ZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMSk7CiAgIGhpc3RfLlB1dFJ0cFBhY2tl
dChDcmVhdGVSdHBQYWNrZXQoa1N0YXJ0U2VxTnVtICsgMSksIGtBbGxvd1JldHJhbnNtaXNzaW9u
LAogICAgICAgICAgICAgICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkp
OwogCi0gIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZh
bHNlKSk7CisgIEVYUEVDVF9GQUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0p
KTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBSZW1vdmVzT2xkV2l0aEN1bGxp
bmdIaWdoUnR0KSB7CkBAIC00NTcsMTQgKzQ1OCwxNCBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9y
eVRlc3QsIFJlbW92ZXNPbGRXaXRoQ3VsbGluZ0hpZ2hSdHQpIHsKICAgZmFrZV9jbG9ja18uQWR2
YW5jZVRpbWVNaWxsaXNlY29uZHMoa01heFBhY2tldER1cmF0aW9uTXMgLSAxKTsKIAogICAvLyBG
aXJzdCBwYWNrZXQgc2hvdWxkIHN0aWxsIGJlIHRoZXJlLgotICBFWFBFQ1RfVFJVRShoaXN0Xy5H
ZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9UUlVFKGhpc3Rf
LkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOwogCiAgIC8vIEFkdmFuY2UgdG8gd2hlcmUg
cGFja2V0IGNhbiBiZSBjdWxsZWQsIGV2ZW4gaWYgYnVmZmVyIGlzIG5vdCBmdWxsLgogICBmYWtl
X2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxKTsKICAgaGlzdF8uUHV0UnRwUGFja2V0
KENyZWF0ZVJ0cFBhY2tldChrU3RhcnRTZXFOdW0gKyAxKSwga0FsbG93UmV0cmFuc21pc3Npb24s
CiAgICAgICAgICAgICAgICAgICAgICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSk7
CiAKLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFs
c2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkp
OwogfQogCiBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIEdldEJlc3RGaXR0aW5nUGFja2V0
KSB7CkBAIC01MDMsNyArNTA0LDcgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LAogICBB
U1NFUlRfVEhBVChwYWNrZXQsIDo6dGVzdGluZzo6Tm90TnVsbCgpKTsKIAogICAvLyBTZW5kIHRo
ZSBwYWNrZXQgYW5kIGFkdmFuY2UgdGltZSBwYXN0IHdoZXJlIHBhY2tldCBleHBpcmVzLgotICBB
U1NFUlRfVEhBVChoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0sIGZh
bHNlKSwKKyAgQVNTRVJUX1RIQVQoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0
U2VxTnVtKSwKICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpOb3ROdWxsKCkpOwogICBmYWtlX2Ns
b2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygKICAgICAgIFJ0cFBhY2tldEhpc3Rvcnk6OmtQ
YWNrZXRDdWxsaW5nRGVsYXlGYWN0b3IgKgpAQCAtNTEzLDcgKzUxNCw3IEBAIFRFU1RfRihSdHBQ
YWNrZXRIaXN0b3J5VGVzdCwKICAgcGFja2V0LT5TZXRQYXlsb2FkU2l6ZSgxMDApOwogICBoaXN0
Xy5QdXRSdHBQYWNrZXQoc3RkOjptb3ZlKHBhY2tldCksIGtBbGxvd1JldHJhbnNtaXNzaW9uLAog
ICAgICAgICAgICAgICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwot
ICBBU1NFUlRfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkp
OworICBBU1NFUlRfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAK
ICAgYXV0byBiZXN0X3BhY2tldCA9IGhpc3RfLkdldEJlc3RGaXR0aW5nUGFja2V0KHRhcmdldF9w
YWNrZXRfc2l6ZSArIDIpOwogICBBU1NFUlRfVEhBVChiZXN0X3BhY2tldCwgOjp0ZXN0aW5nOjpO
b3ROdWxsKCkpOwpAQCAtNTczLDcgKzU3NCw3IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVz
dCwKICAgaGlzdF8uUHV0UnRwUGFja2V0KHN0ZDo6bW92ZShwYWNrZXQpLCBrRG9udFJldHJhbnNt
aXQsCiAgICAgICAgICAgICAgICAgICAgICBmYWtlX2Nsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMo
KSk7CiAgIEVYUEVDVF9USEFUKGhpc3RfLkdldEJlc3RGaXR0aW5nUGFja2V0KDUwKSwgOjp0ZXN0
aW5nOjpJc051bGwoKSk7Ci0gIEVYUEVDVF9USEFUKGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRU
aW1lKGtTdGFydFNlcU51bSwgZmFsc2UpLAorICBFWFBFQ1RfVEhBVChoaXN0Xy5HZXRQYWNrZXRB
bmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0pLAogICAgICAgICAgICAgICA6OnRlc3Rpbmc6Ok5v
dE51bGwoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmNjCmluZGV4IGM4ZGViOTlkOTBlNTU4
NmZhNGM0MTUyNWRmNGFkZjdmOTU1MjRkZDMuLmY4MGZhZDY4ZTBkMzI2ZDZlZmZlYjU1OTVhMjQw
ZjI0MTczYTk4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5jYwpAQCAtMTAsNiArMTAsOCBAQAog
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5o
IgogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx2
ZWN0b3I+CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4
dGVuc2lvbnMuaCIKQEAgLTY3LDYgKzY5LDcgQEAgdm9pZCBSdHBQYWNrZXRSZWNlaXZlZDo6R2V0
SGVhZGVyKFJUUEhlYWRlciogaGVhZGVyKSBjb25zdCB7CiAgIEdldEV4dGVuc2lvbjxSZXBhaXJl
ZFJ0cFN0cmVhbUlkPigmaGVhZGVyLT5leHRlbnNpb24ucmVwYWlyZWRfc3RyZWFtX2lkKTsKICAg
R2V0RXh0ZW5zaW9uPFJ0cE1pZD4oJmhlYWRlci0+ZXh0ZW5zaW9uLm1pZCk7CiAgIEdldEV4dGVu
c2lvbjxQbGF5b3V0RGVsYXlMaW1pdHM+KCZoZWFkZXItPmV4dGVuc2lvbi5wbGF5b3V0X2RlbGF5
KTsKKyAgaGVhZGVyLT5leHRlbnNpb24uY29sb3Jfc3BhY2UgPSBHZXRFeHRlbnNpb248Q29sb3JT
cGFjZUV4dGVuc2lvbj4oKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9y
ZWNlaXZlZC5oCmluZGV4IDg2OTAwMzEwZTQ5ZTMxOThlOWU0OTEyNWQzNWIzOGE2NzA4NTg4NTEu
LjU2NmIxMTZhMTBhNjEzYzI0NjA5M2YzNzkyOWJkZmQzZDYxNTlmN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3Jl
Y2VpdmVkLmgKQEAgLTEwLDkgKzEwLDExIEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09V
UkNFX1JUUF9QQUNLRVRfUkVDRUlWRURfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VS
Q0VfUlRQX1BBQ0tFVF9SRUNFSVZFRF9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQv
aW5jbHVkZSkKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS9ydHBf
aGVhZGVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXQu
aCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9udHBfdGltZS5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFj
a2V0X3RvX3NlbmQuY2MKaW5kZXggMDE1M2JiZTczYWMyMjllZDM0MDA3MjhmNWMwYmUwNjJiMmQw
MWQ5My4uYjU1ZTc0YWFmMDFmODA3ZGQyOTc1ODUyMWEyM2U4ZGU5ZTMwZmQ5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNr
ZXRfdG9fc2VuZC5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50Pgor
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogUnRwUGFja2V0VG9TZW5kOjpSdHBQYWNrZXRUb1NlbmQo
Y29uc3QgRXh0ZW5zaW9uTWFuYWdlciogZXh0ZW5zaW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9wYWNrZXRfdG9fc2VuZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgKaW5k
ZXggMWVkN2RkYTQ3ODI2OTc3MjA0N2ViNjcwZjNhODdiNDNkMjllZjdlYS4uNTZiMTAyNGEwNTlk
N2FjNWJkYWFlMWQzZDBiMjIzMDNmNGNjZGYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3Bh
Y2tldF90b19zZW5kLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmgKQEAgLTEw
LDkgKzEwLDEyIEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9QQUNLRVRf
VE9fU0VORF9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfUEFDS0VUX1RP
X1NFTkRfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAi
YXBpL3ZpZGVvL3ZpZGVvX3RpbWluZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF9wYWNrZXQuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdW5pdHRlc3QuY2MKaW5kZXggMTI1MDAw
ZDJkYzk0ZWQ0YmUxNzg2MmUwNGIyNDQwNmJmM2QyNzQ3Yy4uYjFjMGU0MjUyNWVhZTUyNjc3YzBm
ODBhMGNjZjY0MTcxNDU5ZTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3VuaXR0ZXN0LmNjCkBAIC0xOSw2ICsx
OSw3IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIDo6dGVzdGlu
Zzo6RWFjaDsKIHVzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmU7CiB1c2luZyA6OnRlc3Rpbmc6
OkVsZW1lbnRzQXJlQXJyYXk7CiB1c2luZyA6OnRlc3Rpbmc6OklzRW1wdHk7CkBAIC0xODQsNiAr
MTg1LDUyIEBAIGNvbnN0ZXhwciB1aW50OF90IGtQYWNrZXRXaXRoTGVnYWN5VGltaW5nRXh0ZW5z
aW9uW10gPSB7CiAgICAgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwKICAgICAweDAwLCAweDAwLCAw
eDAwLCAweDAwfTsKIC8vIGNsYW5nLWZvcm1hdCBvbgorCitIZHJNZXRhZGF0YSBDcmVhdGVUZXN0
SGRyTWV0YWRhdGEoKSB7CisgIC8vIFJhbmRvbSBidXQgcmVhc29uYWJsZSBIRFIgbWV0YWRhdGEu
CisgIEhkck1ldGFkYXRhIGhkcl9tZXRhZGF0YTsKKyAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19t
ZXRhZGF0YS5sdW1pbmFuY2VfbWF4ID0gMjAwMC4wOworICBoZHJfbWV0YWRhdGEubWFzdGVyaW5n
X21ldGFkYXRhLmx1bWluYW5jZV9taW4gPSAyLjAwMDE7CisgIGhkcl9tZXRhZGF0YS5tYXN0ZXJp
bmdfbWV0YWRhdGEucHJpbWFyeV9yLnggPSAwLjMwMDM7CisgIGhkcl9tZXRhZGF0YS5tYXN0ZXJp
bmdfbWV0YWRhdGEucHJpbWFyeV9yLnkgPSAwLjQwMDQ7CisgIGhkcl9tZXRhZGF0YS5tYXN0ZXJp
bmdfbWV0YWRhdGEucHJpbWFyeV9nLnggPSAwLjMyMDE7CisgIGhkcl9tZXRhZGF0YS5tYXN0ZXJp
bmdfbWV0YWRhdGEucHJpbWFyeV9nLnkgPSAwLjQ2MDQ7CisgIGhkcl9tZXRhZGF0YS5tYXN0ZXJp
bmdfbWV0YWRhdGEucHJpbWFyeV9iLnggPSAwLjM0MDk7CisgIGhkcl9tZXRhZGF0YS5tYXN0ZXJp
bmdfbWV0YWRhdGEucHJpbWFyeV9iLnkgPSAwLjQ5MDc7CisgIGhkcl9tZXRhZGF0YS5tYXN0ZXJp
bmdfbWV0YWRhdGEud2hpdGVfcG9pbnQueCA9IDAuNDEwMzsKKyAgaGRyX21ldGFkYXRhLm1hc3Rl
cmluZ19tZXRhZGF0YS53aGl0ZV9wb2ludC55ID0gMC40ODA2OworICBoZHJfbWV0YWRhdGEubWF4
X2NvbnRlbnRfbGlnaHRfbGV2ZWwgPSAyMzQ1OworICBoZHJfbWV0YWRhdGEubWF4X2ZyYW1lX2F2
ZXJhZ2VfbGlnaHRfbGV2ZWwgPSAxNzg5OworICByZXR1cm4gaGRyX21ldGFkYXRhOworfQorCitD
b2xvclNwYWNlIENyZWF0ZVRlc3RDb2xvclNwYWNlKGJvb2wgd2l0aF9oZHJfbWV0YWRhdGEpIHsK
KyAgQ29sb3JTcGFjZSBjb2xvcl9zcGFjZSgKKyAgICAgIENvbG9yU3BhY2U6OlByaW1hcnlJRDo6
a0JUNzA5LCBDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjprR0FNTUEyMiwKKyAgICAgIENvbG9yU3Bh
Y2U6Ok1hdHJpeElEOjprU01QVEUyMDg1LCBDb2xvclNwYWNlOjpSYW5nZUlEOjprRnVsbCk7Cisg
IGlmICh3aXRoX2hkcl9tZXRhZGF0YSkgeworICAgIEhkck1ldGFkYXRhIGhkcl9tZXRhZGF0YSA9
IENyZWF0ZVRlc3RIZHJNZXRhZGF0YSgpOworICAgIGNvbG9yX3NwYWNlLnNldF9oZHJfbWV0YWRh
dGEoJmhkcl9tZXRhZGF0YSk7CisgIH0KKyAgcmV0dXJuIGNvbG9yX3NwYWNlOworfQorCit2b2lk
IFRlc3RDcmVhdGVBbmRQYXJzZUNvbG9yU3BhY2VFeHRlbnNpb24oYm9vbCB3aXRoX2hkcl9tZXRh
ZGF0YSkgeworICAvLyBDcmVhdGUgcGFja2V0IHdpdGggZXh0ZW5zaW9uLgorICBSdHBQYWNrZXQ6
OkV4dGVuc2lvbk1hbmFnZXIgZXh0ZW5zaW9ucygvKmV4dG1hcC1hbGxvdy1taXhlZD0qL3RydWUp
OworICBleHRlbnNpb25zLlJlZ2lzdGVyPENvbG9yU3BhY2VFeHRlbnNpb24+KDEpOworICBSdHBQ
YWNrZXQgcGFja2V0KCZleHRlbnNpb25zKTsKKyAgY29uc3QgQ29sb3JTcGFjZSBrQ29sb3JTcGFj
ZSA9IENyZWF0ZVRlc3RDb2xvclNwYWNlKHdpdGhfaGRyX21ldGFkYXRhKTsKKyAgRVhQRUNUX1RS
VUUocGFja2V0LlNldEV4dGVuc2lvbjxDb2xvclNwYWNlRXh0ZW5zaW9uPihrQ29sb3JTcGFjZSkp
OworICBwYWNrZXQuU2V0UGF5bG9hZFNpemUoNDIpOworCisgIC8vIFJlYWQgcGFja2V0IHdpdGgg
dGhlIGV4dGVuc2lvbi4KKyAgUnRwUGFja2V0UmVjZWl2ZWQgcGFyc2VkKCZleHRlbnNpb25zKTsK
KyAgRVhQRUNUX1RSVUUocGFyc2VkLlBhcnNlKHBhY2tldC5CdWZmZXIoKSkpOworICBDb2xvclNw
YWNlIHBhcnNlZF9jb2xvcl9zcGFjZTsKKyAgRVhQRUNUX1RSVUUocGFyc2VkLkdldEV4dGVuc2lv
bjxDb2xvclNwYWNlRXh0ZW5zaW9uPigmcGFyc2VkX2NvbG9yX3NwYWNlKSk7CisgIEVYUEVDVF9F
UShrQ29sb3JTcGFjZSwgcGFyc2VkX2NvbG9yX3NwYWNlKTsKK30KIH0gIC8vIG5hbWVzcGFjZQog
CiBURVNUKFJ0cFBhY2tldFRlc3QsIENyZWF0ZU1pbmltdW0pIHsKQEAgLTIyNSw4ICsyNzIsNyBA
QCBURVNUKFJ0cFBhY2tldFRlc3QsIENyZWF0ZVdpdGgyRXh0ZW5zaW9ucykgewogfQogCiBURVNU
KFJ0cFBhY2tldFRlc3QsIENyZWF0ZVdpdGhUd29CeXRlSGVhZGVyRXh0ZW5zaW9uRmlyc3QpIHsK
LSAgUnRwUGFja2V0VG9TZW5kOjpFeHRlbnNpb25NYW5hZ2VyIGV4dGVuc2lvbnM7Ci0gIGV4dGVu
c2lvbnMuU2V0TWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKHRydWUpOworICBSdHBQYWNr
ZXRUb1NlbmQ6OkV4dGVuc2lvbk1hbmFnZXIgZXh0ZW5zaW9ucyh0cnVlKTsKICAgZXh0ZW5zaW9u
cy5SZWdpc3RlcihrUnRwRXh0ZW5zaW9uVHJhbnNtaXNzaW9uVGltZU9mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICBrVHJhbnNtaXNzaW9uT2Zmc2V0RXh0ZW5zaW9uSWQpOwogICBleHRlbnNp
b25zLlJlZ2lzdGVyKGtSdHBFeHRlbnNpb25BdWRpb0xldmVsLCBrQXVkaW9MZXZlbEV4dGVuc2lv
bklkKTsKQEAgLTI0Nyw4ICsyOTMsNyBAQCBURVNUKFJ0cFBhY2tldFRlc3QsIENyZWF0ZVdpdGhU
d29CeXRlSGVhZGVyRXh0ZW5zaW9uRmlyc3QpIHsKIAogVEVTVChSdHBQYWNrZXRUZXN0LCBDcmVh
dGVXaXRoVHdvQnl0ZUhlYWRlckV4dGVuc2lvbkxhc3QpIHsKICAgLy8gVGhpcyB0ZXN0IHdpbGwg
dHJpZ2dlciBSdHBQYWNrZXQ6OlByb21vdGVUb1R3b0J5dGVIZWFkZXJFeHRlbnNpb24oKS4KLSAg
UnRwUGFja2V0VG9TZW5kOjpFeHRlbnNpb25NYW5hZ2VyIGV4dGVuc2lvbnM7Ci0gIGV4dGVuc2lv
bnMuU2V0TWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKHRydWUpOworICBSdHBQYWNrZXRU
b1NlbmQ6OkV4dGVuc2lvbk1hbmFnZXIgZXh0ZW5zaW9ucyh0cnVlKTsKICAgZXh0ZW5zaW9ucy5S
ZWdpc3RlcihrUnRwRXh0ZW5zaW9uVHJhbnNtaXNzaW9uVGltZU9mZnNldCwKICAgICAgICAgICAg
ICAgICAgICAgICBrVHJhbnNtaXNzaW9uT2Zmc2V0RXh0ZW5zaW9uSWQpOwogICBleHRlbnNpb25z
LlJlZ2lzdGVyKGtSdHBFeHRlbnNpb25BdWRpb0xldmVsLCBrQXVkaW9MZXZlbEV4dGVuc2lvbklk
KTsKQEAgLTM2NywxMSArNDEyLDEwIEBAIFRFU1QoUnRwUGFja2V0VGVzdCwgQ3JlYXRlUHVyZVBh
ZGRpbmcpIHsKICAgcGFja2V0LlNldFNlcXVlbmNlTnVtYmVyKGtTZXFOdW0pOwogICBwYWNrZXQu
U2V0VGltZXN0YW1wKGtUaW1lc3RhbXApOwogICBwYWNrZXQuU2V0U3NyYyhrU3NyYyk7Ci0gIFJh
bmRvbSByYW5kb20oMHgxMjM0NTY3ODkpOwogCiAgIEVYUEVDVF9MVChwYWNrZXQuc2l6ZSgpLCBw
YWNrZXQuY2FwYWNpdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShwYWNrZXQuU2V0UGFkZGluZyhrUGFk
ZGluZ1NpemUgKyAxLCAmcmFuZG9tKSk7Ci0gIEVYUEVDVF9UUlVFKHBhY2tldC5TZXRQYWRkaW5n
KGtQYWRkaW5nU2l6ZSwgJnJhbmRvbSkpOworICBFWFBFQ1RfRkFMU0UocGFja2V0LlNldFBhZGRp
bmcoa1BhZGRpbmdTaXplICsgMSkpOworICBFWFBFQ1RfVFJVRShwYWNrZXQuU2V0UGFkZGluZyhr
UGFkZGluZ1NpemUpKTsKICAgRVhQRUNUX0VRKHBhY2tldC5zaXplKCksIHBhY2tldC5jYXBhY2l0
eSgpKTsKIH0KIApAQCAtMzgzLDEzICs0MjcsNDggQEAgVEVTVChSdHBQYWNrZXRUZXN0LCBDcmVh
dGVVbmFsaWduZWRQYWRkaW5nKSB7CiAgIHBhY2tldC5TZXRUaW1lc3RhbXAoa1RpbWVzdGFtcCk7
CiAgIHBhY2tldC5TZXRTc3JjKGtTc3JjKTsKICAgcGFja2V0LlNldFBheWxvYWRTaXplKGtQYXls
b2FkU2l6ZSk7Ci0gIFJhbmRvbSByKDB4MTIzNDU2Nzg5KTsKIAogICBFWFBFQ1RfTFQocGFja2V0
LnNpemUoKSwgcGFja2V0LmNhcGFjaXR5KCkpOwotICBFWFBFQ1RfVFJVRShwYWNrZXQuU2V0UGFk
ZGluZyhrTWF4UGFkZGluZ1NpemUsICZyKSk7CisgIEVYUEVDVF9UUlVFKHBhY2tldC5TZXRQYWRk
aW5nKGtNYXhQYWRkaW5nU2l6ZSkpOwogICBFWFBFQ1RfRVEocGFja2V0LnNpemUoKSwgcGFja2V0
LmNhcGFjaXR5KCkpOwogfQogCitURVNUKFJ0cFBhY2tldFRlc3QsIFdyaXRlc1BhZGRpbmdTaXpl
VG9MYXN0Qnl0ZSkgeworICBjb25zdCBzaXplX3Qga1BhZGRpbmdTaXplID0gNTsKKyAgUnRwUGFj
a2V0IHBhY2tldDsKKworICBFWFBFQ1RfVFJVRShwYWNrZXQuU2V0UGFkZGluZyhrUGFkZGluZ1Np
emUpKTsKKyAgRVhQRUNUX0VRKHBhY2tldC5kYXRhKClbcGFja2V0LnNpemUoKSAtIDFdLCBrUGFk
ZGluZ1NpemUpOworfQorCitURVNUKFJ0cFBhY2tldFRlc3QsIFVzZXNaZXJvc0ZvclBhZGRpbmcp
IHsKKyAgY29uc3Qgc2l6ZV90IGtQYWRkaW5nU2l6ZSA9IDU7CisgIFJ0cFBhY2tldCBwYWNrZXQ7
CisKKyAgRVhQRUNUX1RSVUUocGFja2V0LlNldFBhZGRpbmcoa1BhZGRpbmdTaXplKSk7CisgIEVY
UEVDVF9USEFUKHJ0Yzo6TWFrZUFycmF5VmlldyhwYWNrZXQuZGF0YSgpICsgMTIsIGtQYWRkaW5n
U2l6ZSAtIDEpLAorICAgICAgICAgICAgICBFYWNoKDApKTsKK30KKworVEVTVChSdHBQYWNrZXRU
ZXN0LCBDcmVhdGVPbmVCeXRlUGFkZGluZykgeworICBzaXplX3Qga1BheWxvYWRTaXplID0gMTIz
OworICBSdHBQYWNrZXQgcGFja2V0KG51bGxwdHIsIDEyICsga1BheWxvYWRTaXplICsgMSk7Cisg
IHBhY2tldC5TZXRQYXlsb2FkU2l6ZShrUGF5bG9hZFNpemUpOworCisgIEVYUEVDVF9UUlVFKHBh
Y2tldC5TZXRQYWRkaW5nKDEpKTsKKworICBFWFBFQ1RfRVEocGFja2V0LnNpemUoKSwgMTIgKyBr
UGF5bG9hZFNpemUgKyAxKTsKKyAgRVhQRUNUX0VRKHBhY2tldC5wYWRkaW5nX3NpemUoKSwgMXUp
OworfQorCitURVNUKFJ0cFBhY2tldFRlc3QsIEZhaWxzVG9BZGRQYWRkaW5nV2l0aG91dENhcGFj
aXR5KSB7CisgIHNpemVfdCBrUGF5bG9hZFNpemUgPSAxMjM7CisgIFJ0cFBhY2tldCBwYWNrZXQo
bnVsbHB0ciwgMTIgKyBrUGF5bG9hZFNpemUpOworICBwYWNrZXQuU2V0UGF5bG9hZFNpemUoa1Bh
eWxvYWRTaXplKTsKKworICBFWFBFQ1RfRkFMU0UocGFja2V0LlNldFBhZGRpbmcoMSkpOworfQor
CiBURVNUKFJ0cFBhY2tldFRlc3QsIFBhcnNlTWluaW11bSkgewogICBSdHBQYWNrZXRSZWNlaXZl
ZCBwYWNrZXQ7CiAgIEVYUEVDVF9UUlVFKHBhY2tldC5QYXJzZShrTWluaW11bVBhY2tldCwgc2l6
ZW9mKGtNaW5pbXVtUGFja2V0KSkpOwpAQCAtNDMzLDYgKzUxMiwyMyBAQCBURVNUKFJ0cFBhY2tl
dFRlc3QsIFBhcnNlV2l0aEV4dGVuc2lvbikgewogICBFWFBFQ1RfRVEoMHUsIHBhY2tldC5wYWRk
aW5nX3NpemUoKSk7CiB9CiAKK1RFU1QoUnRwUGFja2V0VGVzdCwgR2V0RXh0ZW5zaW9uV2l0aG91
dFBhcmFtZXRlcnNSZXR1cm5zT3B0aW9uYWxWYWx1ZSkgeworICBSdHBQYWNrZXQ6OkV4dGVuc2lv
bk1hbmFnZXIgZXh0ZW5zaW9uczsKKyAgZXh0ZW5zaW9ucy5SZWdpc3RlcjxUcmFuc21pc3Npb25P
ZmZzZXQ+KGtUcmFuc21pc3Npb25PZmZzZXRFeHRlbnNpb25JZCk7CisgIGV4dGVuc2lvbnMuUmVn
aXN0ZXI8UnRwU3RyZWFtSWQ+KGtSdHBTdHJlYW1JZEV4dGVuc2lvbklkKTsKKworICBSdHBQYWNr
ZXRSZWNlaXZlZCBwYWNrZXQoJmV4dGVuc2lvbnMpOworICBFWFBFQ1RfVFJVRShwYWNrZXQuUGFy
c2Uoa1BhY2tldFdpdGhUTywgc2l6ZW9mKGtQYWNrZXRXaXRoVE8pKSk7CisKKyAgYXV0byB0aW1l
X29mZnNldCA9IHBhY2tldC5HZXRFeHRlbnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0PigpOworICBz
dGF0aWNfYXNzZXJ0KAorICAgICAgc3RkOjppc19zYW1lPGRlY2x0eXBlKHRpbWVfb2Zmc2V0KSwK
KyAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxUcmFuc21pc3Npb25PZmZzZXQ6OnZh
bHVlX3R5cGU+Pjo6dmFsdWUsCisgICAgICAiIik7CisgIEVYUEVDVF9FUSh0aW1lX29mZnNldCwg
a1RpbWVPZmZzZXQpOworICBFWFBFQ1RfRkFMU0UocGFja2V0LkdldEV4dGVuc2lvbjxSdHBTdHJl
YW1JZD4oKS5oYXNfdmFsdWUoKSk7Cit9CisKIFRFU1QoUnRwUGFja2V0VGVzdCwgR2V0UmF3RXh0
ZW5zaW9uV2hlblByZXNlbnQpIHsKICAgY29uc3RleHByIHVpbnQ4X3Qga1Jhd1BhY2tldFtdID0g
ewogICAgICAgLy8gY29tbWVudCBmb3IgY2xhbmctZm9ybWF0IHRvIGFsaWduIGtSYXdQYWNrZXQg
bmljZXIuCkBAIC03NTEsNCArODQ3LDEyIEBAIFRFU1QoUnRwUGFja2V0VGVzdCwgUGFyc2VMZWdh
Y3lUaW1pbmdGcmFtZUV4dGVuc2lvbikgewogICBFWFBFQ1RfRVEocmVjZWl2aWVkX3RpbWluZy5m
bGFncywgMCk7CiB9CiAKK1RFU1QoUnRwUGFja2V0VGVzdCwgQ3JlYXRlQW5kUGFyc2VDb2xvclNw
YWNlRXh0ZW5zaW9uKSB7CisgIFRlc3RDcmVhdGVBbmRQYXJzZUNvbG9yU3BhY2VFeHRlbnNpb24o
Lyp3aXRoX2hkcl9tZXRhZGF0YT0qL3RydWUpOworfQorCitURVNUKFJ0cFBhY2tldFRlc3QsIENy
ZWF0ZUFuZFBhcnNlQ29sb3JTcGFjZUV4dGVuc2lvbldpdGhvdXRIZHJNZXRhZGF0YSkgeworICBU
ZXN0Q3JlYXRlQW5kUGFyc2VDb2xvclNwYWNlRXh0ZW5zaW9uKC8qd2l0aF9oZHJfbWV0YWRhdGE9
Ki9mYWxzZSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9ydGNwX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsLmNjCmluZGV4IDE3
NWE5NGJlODAyMTYxZWYwNzc5OTYwYzU4YWRmMzBmMGU0NmNiZDEuLjBkMGNhOTYxODg4MDM3M2Jk
NGVmMTA2ODc0MzlkYmVhMjdiNjU5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2lt
cGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbC5jYwpAQCAtMTEsMTIgKzExLDE0IEBA
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbC5oIgogCiAj
aW5jbHVkZSA8c3RyaW5nLmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0
ZGludD4KICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxp
dHk+CiAKLSNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2RscnIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9jb25maWcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKQEAgLTMxLDYgKzMzLDggQEAg
Y29uc3QgaW50NjRfdCBrUnRwUnRjcE1heElkbGVUaW1lUHJvY2Vzc01zID0gNTsKIGNvbnN0IGlu
dDY0X3Qga1J0cFJ0Y3BSdHRQcm9jZXNzVGltZU1zID0gMTAwMDsKIGNvbnN0IGludDY0X3Qga1J0
cFJ0Y3BCaXRyYXRlUHJvY2Vzc1RpbWVNcyA9IDEwOwogY29uc3QgaW50NjRfdCBrRGVmYXVsdEV4
cGVjdGVkUmV0cmFuc21pc3Npb25UaW1lTXMgPSAxMjU7Citjb25zdGV4cHIgaW50MzJfdCBrRGVm
YXVsdFZpZGVvUmVwb3J0SW50ZXJ2YWwgPSAxMDAwOworY29uc3RleHByIGludDMyX3Qga0RlZmF1
bHRBdWRpb1JlcG9ydEludGVydmFsID0gNTAwMDsKIH0gIC8vIG5hbWVzcGFjZQogCiBSdHBSdGNw
OjpDb25maWd1cmF0aW9uOjpDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OwpAQCAtNjIsNyArNjYs
MTAgQEAgTW9kdWxlUnRwUnRjcEltcGw6Ok1vZHVsZVJ0cFJ0Y3BJbXBsKGNvbnN0IENvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5y
dGNwX3BhY2tldF90eXBlX2NvdW50ZXJfb2JzZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgY29u
ZmlndXJhdGlvbi5ldmVudF9sb2csCiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5v
dXRnb2luZ190cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5ydGNw
X2ludGVydmFsX2NvbmZpZyksCisgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5ydGNw
X3JlcG9ydF9pbnRlcnZhbF9tcyA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgPyBjb25maWd1
cmF0aW9uLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zCisgICAgICAgICAgICAgICAgICAgICAgIDog
KGNvbmZpZ3VyYXRpb24uYXVkaW8gPyBrRGVmYXVsdEF1ZGlvUmVwb3J0SW50ZXJ2YWwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGtEZWZhdWx0VmlkZW9S
ZXBvcnRJbnRlcnZhbCkpLAogICAgICAgcnRjcF9yZWNlaXZlcl8oY29uZmlndXJhdGlvbi5jbG9j
aywKICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucmVjZWl2ZXJfb25seSwKICAg
ICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucnRjcF9wYWNrZXRfdHlwZV9jb3VudGVy
X29ic2VydmVyLApAQCAtNzAsNiArNzcsMTAgQEAgTW9kdWxlUnRwUnRjcEltcGw6Ok1vZHVsZVJ0
cFJ0Y3BJbXBsKGNvbnN0IENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uLmludHJhX2ZyYW1lX2NhbGxiYWNrLAogICAgICAgICAg
ICAgICAgICAgICAgY29uZmlndXJhdGlvbi50cmFuc3BvcnRfZmVlZGJhY2tfY2FsbGJhY2ssCiAg
ICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLmJpdHJhdGVfYWxsb2NhdGlvbl9vYnNl
cnZlciwKKyAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucnRjcF9yZXBvcnRfaW50
ZXJ2YWxfbXMgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb25maWd1cmF0aW9uLnJ0
Y3BfcmVwb3J0X2ludGVydmFsX21zCisgICAgICAgICAgICAgICAgICAgICAgICAgOiAoY29uZmln
dXJhdGlvbi5hdWRpbyA/IGtEZWZhdWx0QXVkaW9SZXBvcnRJbnRlcnZhbAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrRGVmYXVsdFZpZGVvUmVwb3J0
SW50ZXJ2YWwpLAogICAgICAgICAgICAgICAgICAgICAgdGhpcyksCiAgICAgICBjbG9ja18oY29u
ZmlndXJhdGlvbi5jbG9jayksCiAgICAgICBhdWRpb18oY29uZmlndXJhdGlvbi5hdWRpbyksCkBA
IC05OSw3ICsxMTAsOSBAQCBNb2R1bGVSdHBSdGNwSW1wbDo6TW9kdWxlUnRwUnRjcEltcGwoY29u
c3QgQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAgICAgY29uZmlndXJhdGlvbi5z
ZW5kX3BhY2tldF9vYnNlcnZlciwKICAgICAgICAgY29uZmlndXJhdGlvbi5yZXRyYW5zbWlzc2lv
bl9yYXRlX2xpbWl0ZXIsCiAgICAgICAgIGNvbmZpZ3VyYXRpb24ub3ZlcmhlYWRfb2JzZXJ2ZXIs
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ucG9wdWxhdGVfbmV0d29yazJfdGltZXN0YW1wKSk7Cisg
ICAgICAgIGNvbmZpZ3VyYXRpb24ucG9wdWxhdGVfbmV0d29yazJfdGltZXN0YW1wLAorICAgICAg
ICBjb25maWd1cmF0aW9uLmZyYW1lX2VuY3J5cHRvciwgY29uZmlndXJhdGlvbi5yZXF1aXJlX2Zy
YW1lX2VuY3J5cHRpb24sCisgICAgICAgIGNvbmZpZ3VyYXRpb24uZXh0bWFwX2FsbG93X21peGVk
KSk7CiAgICAgLy8gTWFrZSBzdXJlIHJ0Y3Agc2VuZGVyIHVzZSBzYW1lIHRpbWVzdGFtcCBvZmZz
ZXQgYXMgcnRwIHNlbmRlci4KICAgICBydGNwX3NlbmRlcl8uU2V0VGltZXN0YW1wT2Zmc2V0KHJ0
cF9zZW5kZXJfLT5UaW1lc3RhbXBPZmZzZXQoKSk7CiAKQEAgLTE3NSwxMCArMTg4LDkgQEAgdm9p
ZCBNb2R1bGVSdHBSdGNwSW1wbDo6UHJvY2VzcygpIHsKIAogICAgIC8vIFZlcmlmeSByZWNlaXZl
ciByZXBvcnRzIGFyZSBkZWxpdmVyZWQgYW5kIHRoZSByZXBvcnRlZCBzZXF1ZW5jZSBudW1iZXIK
ICAgICAvLyBpcyBpbmNyZWFzaW5nLgotICAgIGludDY0X3QgcnRjcF9pbnRlcnZhbCA9IFJ0Y3BS
ZXBvcnRJbnRlcnZhbCgpOwotICAgIGlmIChydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KHJ0
Y3BfaW50ZXJ2YWwpKSB7CisgICAgaWYgKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoKSkg
ewogICAgICAgUlRDX0xPR19GKExTX1dBUk5JTkcpIDw8ICJUaW1lb3V0OiBObyBSVENQIFJSIHJl
Y2VpdmVkLiI7Ci0gICAgfSBlbHNlIGlmIChydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51
bWJlclRpbWVvdXQocnRjcF9pbnRlcnZhbCkpIHsKKyAgICB9IGVsc2UgaWYgKHJ0Y3BfcmVjZWl2
ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dCgpKSB7CiAgICAgICBSVENfTE9HX0YoTFNf
V0FSTklORykgPDwgIlRpbWVvdXQ6IE5vIGluY3JlYXNlIGluIFJUQ1AgUlIgZXh0ZW5kZWQgIgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoaWdoZXN0IHNlcXVlbmNlIG51bWJlci4i
OwogICAgIH0KQEAgLTI1Myw2ICsyNjUsNyBAQCB2b2lkIE1vZHVsZVJ0cFJ0Y3BJbXBsOjpJbmNv
bWluZ1J0Y3BQYWNrZXQoY29uc3QgdWludDhfdCogcnRjcF9wYWNrZXQsCiB9CiAKIGludDMyX3Qg
TW9kdWxlUnRwUnRjcEltcGw6OlJlZ2lzdGVyU2VuZFBheWxvYWQoY29uc3QgQ29kZWNJbnN0JiB2
b2ljZV9jb2RlYykgeworICBydGNwX3NlbmRlcl8uU2V0UnRwQ2xvY2tSYXRlKHZvaWNlX2NvZGVj
LnBsdHlwZSwgdm9pY2VfY29kZWMucGxmcmVxKTsKICAgcmV0dXJuIHJ0cF9zZW5kZXJfLT5SZWdp
c3RlclBheWxvYWQoCiAgICAgICB2b2ljZV9jb2RlYy5wbG5hbWUsIHZvaWNlX2NvZGVjLnBsdHlw
ZSwgdm9pY2VfY29kZWMucGxmcmVxLAogICAgICAgdm9pY2VfY29kZWMuY2hhbm5lbHMsICh2b2lj
ZV9jb2RlYy5yYXRlIDwgMCkgPyAwIDogdm9pY2VfY29kZWMucmF0ZSk7CkBAIC0yNjAsOCArMjcz
LDEwIEBAIGludDMyX3QgTW9kdWxlUnRwUnRjcEltcGw6OlJlZ2lzdGVyU2VuZFBheWxvYWQoY29u
c3QgQ29kZWNJbnN0JiB2b2ljZV9jb2RlYykgewogCiB2b2lkIE1vZHVsZVJ0cFJ0Y3BJbXBsOjpS
ZWdpc3RlclZpZGVvU2VuZFBheWxvYWQoaW50IHBheWxvYWRfdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwYXlsb2FkX25h
bWUpIHsKLSAgUlRDX0NIRUNLX0VRKAotICAgICAgMCwgcnRwX3NlbmRlcl8tPlJlZ2lzdGVyUGF5
bG9hZChwYXlsb2FkX25hbWUsIHBheWxvYWRfdHlwZSwgOTAwMDAsIDAsIDApKTsKKyAgcnRjcF9z
ZW5kZXJfLlNldFJ0cENsb2NrUmF0ZShwYXlsb2FkX3R5cGUsIGtWaWRlb1BheWxvYWRUeXBlRnJl
cXVlbmN5KTsKKyAgUlRDX0NIRUNLX0VRKDAsCisgICAgICAgICAgICAgICBydHBfc2VuZGVyXy0+
UmVnaXN0ZXJQYXlsb2FkKHBheWxvYWRfbmFtZSwgcGF5bG9hZF90eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVmlkZW9QYXlsb2FkVHlwZUZyZXF1ZW5j
eSwgMCwgMCkpOwogfQogCiBpbnQzMl90IE1vZHVsZVJ0cFJ0Y3BJbXBsOjpEZVJlZ2lzdGVyU2Vu
ZFBheWxvYWQoY29uc3QgaW50OF90IHBheWxvYWRfdHlwZSkgewpAQCAtMzkyLDYgKzQwNywxMSBA
QCBib29sIE1vZHVsZVJ0cFJ0Y3BJbXBsOjpTZW5kaW5nTWVkaWEoKSBjb25zdCB7CiAgIHJldHVy
biBydHBfc2VuZGVyXyA/IHJ0cF9zZW5kZXJfLT5TZW5kaW5nTWVkaWEoKSA6IGZhbHNlOwogfQog
Cit2b2lkIE1vZHVsZVJ0cFJ0Y3BJbXBsOjpTZXRBc1BhcnRPZkFsbG9jYXRpb24oYm9vbCBwYXJ0
X29mX2FsbG9jYXRpb24pIHsKKyAgUlRDX0NIRUNLKHJ0cF9zZW5kZXJfKTsKKyAgcnRwX3NlbmRl
cl8tPlNldEFzUGFydE9mQWxsb2NhdGlvbihwYXJ0X29mX2FsbG9jYXRpb24pOworfQorCiBib29s
IE1vZHVsZVJ0cFJ0Y3BJbXBsOjpTZW5kT3V0Z29pbmdEYXRhKAogICAgIEZyYW1lVHlwZSBmcmFt
ZV90eXBlLAogICAgIGludDhfdCBwYXlsb2FkX3R5cGUsCkBAIC00MDIsNyArNDIyLDcgQEAgYm9v
bCBNb2R1bGVSdHBSdGNwSW1wbDo6U2VuZE91dGdvaW5nRGF0YSgKICAgICBjb25zdCBSVFBGcmFn
bWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uLAogICAgIGNvbnN0IFJUUFZpZGVvSGVhZGVy
KiBydHBfdmlkZW9faGVhZGVyLAogICAgIHVpbnQzMl90KiB0cmFuc3BvcnRfZnJhbWVfaWRfb3V0
KSB7Ci0gIHJ0Y3Bfc2VuZGVyXy5TZXRMYXN0UnRwVGltZSh0aW1lX3N0YW1wLCBjYXB0dXJlX3Rp
bWVfbXMpOworICBydGNwX3NlbmRlcl8uU2V0TGFzdFJ0cFRpbWUodGltZV9zdGFtcCwgY2FwdHVy
ZV90aW1lX21zLCBwYXlsb2FkX3R5cGUpOwogICAvLyBNYWtlIHN1cmUgYW4gUlRDUCByZXBvcnQg
aXNuJ3QgcXVldWVkIGJlaGluZCBhIGtleSBmcmFtZS4KICAgaWYgKHJ0Y3Bfc2VuZGVyXy5UaW1l
VG9TZW5kUlRDUFJlcG9ydChrVmlkZW9GcmFtZUtleSA9PSBmcmFtZV90eXBlKSkgewogICAgIHJ0
Y3Bfc2VuZGVyXy5TZW5kUlRDUChHZXRGZWVkYmFja1N0YXRlKCksIGtSdGNwUmVwb3J0KTsKQEAg
LTYwNCw2ICs2MjQsMTAgQEAgdm9pZCBNb2R1bGVSdHBSdGNwSW1wbDo6VW5zZXRSZW1iKCkgewog
ICBydGNwX3NlbmRlcl8uVW5zZXRSZW1iKCk7CiB9CiAKK3ZvaWQgTW9kdWxlUnRwUnRjcEltcGw6
OlNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgcnRwX3Nl
bmRlcl8tPlNldEV4dG1hcEFsbG93TWl4ZWQoZXh0bWFwX2FsbG93X21peGVkKTsKK30KKwogaW50
MzJfdCBNb2R1bGVSdHBSdGNwSW1wbDo6UmVnaXN0ZXJTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKAog
ICAgIGNvbnN0IFJUUEV4dGVuc2lvblR5cGUgdHlwZSwKICAgICBjb25zdCB1aW50OF90IGlkKSB7
CkBAIC04NDMsMTMgKzg2Nyw2IEBAIHN0ZDo6dmVjdG9yPHJ0Y3A6OlRtbWJJdGVtPiBNb2R1bGVS
dHBSdGNwSW1wbDo6Qm91bmRpbmdTZXQoYm9vbCogdG1tYnJfb3duZXIpIHsKICAgcmV0dXJuIHJ0
Y3BfcmVjZWl2ZXJfLkJvdW5kaW5nU2V0KHRtbWJyX293bmVyKTsKIH0KIAotaW50NjRfdCBNb2R1
bGVSdHBSdGNwSW1wbDo6UnRjcFJlcG9ydEludGVydmFsKCkgewotICBpZiAoYXVkaW9fKQotICAg
IHJldHVybiBydGNwX3NlbmRlcl8uUnRjcEF1ZGlvUmVwb3J0SW52ZXJ2YWwoKTsKLSAgZWxzZQot
ICAgIHJldHVybiBydGNwX3NlbmRlcl8uUnRjcFZpZGVvUmVwb3J0SW52ZXJ2YWwoKTsKLX0KLQog
dm9pZCBNb2R1bGVSdHBSdGNwSW1wbDo6U2V0UnRjcFJlY2VpdmVyU3NyY3ModWludDMyX3QgbWFp
bl9zc3JjKSB7CiAgIHN0ZDo6c2V0PHVpbnQzMl90PiBzc3JjczsKICAgc3NyY3MuaW5zZXJ0KG1h
aW5fc3NyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfcnRjcF9pbXBsLmgKaW5kZXggNjA0NDE0YWRmMmZmNDU0MTE4NTI5OGExNTUwZTM0MmFk
ZWNlZWQ4NC4uOGU5NzUxZGNjMWYwYjIzNzk2MGU0ZmQ1NDk2Y2E3MzkyMTAzMDJhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2lt
cGwuaApAQCAtMTEsMTcgKzExLDI0IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNF
X1JUUF9SVENQX0lNUExfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX1JU
Q1BfSU1QTF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5j
bHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL3J0cF9oZWFkZXJzLmgiCiAjaW5jbHVkZSAiYXBp
L3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgorI2luY2x1ZGUgImNvbW1vbl90eXBl
cy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRl
L21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxl
X2ZlY190eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L2luY2x1ZGUvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2lu
Y2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIiAgLy8gUlRDUFBhY2tldFR5cGUKICNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9wYWNrZXRfbG9zc19zdGF0cy5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RtbWJfaXRlbS5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9zZW5kZXIuaCIKQEAgLTMwLDYgKzM3LDEwIEBACiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCitjbGFzcyBDbG9jazsKK3N0cnVjdCBQYWNlZFBhY2tldEluZm87CitzdHJ1
Y3QgUlRQVmlkZW9IZWFkZXI7CisKIGNsYXNzIE1vZHVsZVJ0cFJ0Y3BJbXBsIDogcHVibGljIFJ0
cFJ0Y3AsIHB1YmxpYyBSVENQUmVjZWl2ZXI6Ok1vZHVsZVJ0cFJ0Y3AgewogIHB1YmxpYzoKICAg
ZXhwbGljaXQgTW9kdWxlUnRwUnRjcEltcGwoY29uc3QgUnRwUnRjcDo6Q29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbik7CkBAIC01OSw2ICs3MCw4IEBAIGNsYXNzIE1vZHVsZVJ0cFJ0Y3BJbXBs
IDogcHVibGljIFJ0cFJ0Y3AsIHB1YmxpYyBSVENQUmVjZWl2ZXI6Ok1vZHVsZVJ0cFJ0Y3Agewog
CiAgIGludDMyX3QgRGVSZWdpc3RlclNlbmRQYXlsb2FkKGludDhfdCBwYXlsb2FkX3R5cGUpIG92
ZXJyaWRlOwogCisgIHZvaWQgU2V0RXh0bWFwQWxsb3dNaXhlZChib29sIGV4dG1hcF9hbGxvd19t
aXhlZCkgb3ZlcnJpZGU7CisKICAgLy8gUmVnaXN0ZXIgUlRQIGhlYWRlciBleHRlbnNpb24uCiAg
IGludDMyX3QgUmVnaXN0ZXJTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUg
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBp
ZCkgb3ZlcnJpZGU7CkBAIC0xMTUsNiArMTI4LDggQEAgY2xhc3MgTW9kdWxlUnRwUnRjcEltcGwg
OiBwdWJsaWMgUnRwUnRjcCwgcHVibGljIFJUQ1BSZWNlaXZlcjo6TW9kdWxlUnRwUnRjcCB7CiAK
ICAgYm9vbCBTZW5kaW5nTWVkaWEoKSBjb25zdCBvdmVycmlkZTsKIAorICB2b2lkIFNldEFzUGFy
dE9mQWxsb2NhdGlvbihib29sIHBhcnRfb2ZfYWxsb2NhdGlvbikgb3ZlcnJpZGU7CisKICAgLy8g
VXNlZCBieSB0aGUgY29kZWMgbW9kdWxlIHRvIGRlbGl2ZXIgYSB2aWRlbyBvciBhdWRpbyBmcmFt
ZSBmb3IKICAgLy8gcGFja2V0aXphdGlvbi4KICAgYm9vbCBTZW5kT3V0Z29pbmdEYXRhKEZyYW1l
VHlwZSBmcmFtZV90eXBlLApAQCAtMzExLDcgKzMyNiw2IEBAIGNsYXNzIE1vZHVsZVJ0cFJ0Y3BJ
bXBsIDogcHVibGljIFJ0cFJ0Y3AsIHB1YmxpYyBSVENQUmVjZWl2ZXI6Ok1vZHVsZVJ0cFJ0Y3Ag
ewogIHByaXZhdGU6CiAgIEZSSUVORF9URVNUX0FMTF9QUkVGSVhFUyhSdHBSdGNwSW1wbFRlc3Qs
IFJ0dCk7CiAgIEZSSUVORF9URVNUX0FMTF9QUkVGSVhFUyhSdHBSdGNwSW1wbFRlc3QsIFJ0dEZv
clJlY2VpdmVyT25seSk7Ci0gIGludDY0X3QgUnRjcFJlcG9ydEludGVydmFsKCk7CiAgIHZvaWQg
U2V0UnRjcFJlY2VpdmVyU3NyY3ModWludDMyX3QgbWFpbl9zc3JjKTsKIAogICB2b2lkIHNldF9y
dHRfbXMoaW50NjRfdCBydHRfbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1w
bF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2ltcGxfdW5pdHRlc3QuY2MKaW5kZXgg
NTE2MGE2NGJlNzNkODkyMjcwZWMzY2U4MTFlYWQ4MDNlYWI2N2QyNC4uNjMyYTUzN2U4MDI5MTAx
YjUwNjlmZDI2OTEzZGM3NDQ1ZjkwYTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3Bf
aW1wbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsX3VuaXR0ZXN0LmNj
CkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFJ0Y3BSdHRTdGF0c1Rlc3RJbXBsIDogcHVibGljIFJ0
Y3BSdHRTdGF0cyB7CiAgIGludDY0X3QgcnR0X21zXzsKIH07CiAKLWNsYXNzIFNlbmRUcmFuc3Bv
cnQgOiBwdWJsaWMgVHJhbnNwb3J0LCBwdWJsaWMgUnRwRGF0YSB7CitjbGFzcyBTZW5kVHJhbnNw
b3J0IDogcHVibGljIFRyYW5zcG9ydCB7CiAgcHVibGljOgogICBTZW5kVHJhbnNwb3J0KCkKICAg
ICAgIDogcmVjZWl2ZXJfKG51bGxwdHIpLApAQCAtOTAsMTEgKzkwLDYgQEAgY2xhc3MgU2VuZFRy
YW5zcG9ydCA6IHB1YmxpYyBUcmFuc3BvcnQsIHB1YmxpYyBSdHBEYXRhIHsKICAgICArK3J0Y3Bf
cGFja2V0c19zZW50XzsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQotICBpbnQzMl90IE9uUmVjZWl2
ZWRQYXlsb2FkRGF0YShjb25zdCB1aW50OF90KiBwYXlsb2FkX2RhdGEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciogcnRwX2hlYWRlcikgb3ZlcnJp
ZGUgewotICAgIHJldHVybiAwOwotICB9CiAgIHZvaWQgU2V0S2VlcGFsaXZlUGF5bG9hZFR5cGUo
dWludDhfdCBwYXlsb2FkX3R5cGUpIHsKICAgICBrZWVwYWxpdmVfcGF5bG9hZF90eXBlXyA9IHBh
eWxvYWRfdHlwZTsKICAgfQpAQCAtMTI5LDcgKzEyNCw3IEBAIGNsYXNzIFJ0cFJ0Y3BNb2R1bGUg
OiBwdWJsaWMgUnRjcFBhY2tldFR5cGVDb3VudGVyT2JzZXJ2ZXIgewogICBzdGQ6OnVuaXF1ZV9w
dHI8TW9kdWxlUnRwUnRjcEltcGw+IGltcGxfOwogICB1aW50MzJfdCByZW1vdGVfc3NyY187CiAg
IFJ0cEtlZXBBbGl2ZUNvbmZpZyBrZWVwYWxpdmVfY29uZmlnXzsKLSAgUnRjcEludGVydmFsQ29u
ZmlnIHJ0Y3BfaW50ZXJ2YWxfY29uZmlnXzsKKyAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21z
XyA9IDA7CiAKICAgdm9pZCBTZXRSZW1vdGVTc3JjKHVpbnQzMl90IHNzcmMpIHsKICAgICByZW1v
dGVfc3NyY18gPSBzc3JjOwpAQCAtMTY0LDggKzE1OSw4IEBAIGNsYXNzIFJ0cFJ0Y3BNb2R1bGUg
OiBwdWJsaWMgUnRjcFBhY2tldFR5cGVDb3VudGVyT2JzZXJ2ZXIgewogICAgIENyZWF0ZU1vZHVs
ZUltcGwoKTsKICAgICB0cmFuc3BvcnRfLlNldEtlZXBhbGl2ZVBheWxvYWRUeXBlKGNvbmZpZy5w
YXlsb2FkX3R5cGUpOwogICB9Ci0gIHZvaWQgU2V0UnRjcEludGVydmFsQ29uZmlnQW5kUmVzZXQo
Y29uc3QgUnRjcEludGVydmFsQ29uZmlnJiBjb25maWcpIHsKLSAgICBydGNwX2ludGVydmFsX2Nv
bmZpZ18gPSBjb25maWc7CisgIHZvaWQgU2V0UnRjcFJlcG9ydEludGVydmFsQW5kUmVzZXQoaW50
IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zKSB7CisgICAgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXNf
ID0gcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM7CiAgICAgQ3JlYXRlTW9kdWxlSW1wbCgpOwogICB9
CiAKQEAgLTE3OSw3ICsxNzQsNyBAQCBjbGFzcyBSdHBSdGNwTW9kdWxlIDogcHVibGljIFJ0Y3BQ
YWNrZXRUeXBlQ291bnRlck9ic2VydmVyIHsKICAgICBjb25maWcucnRjcF9wYWNrZXRfdHlwZV9j
b3VudGVyX29ic2VydmVyID0gdGhpczsKICAgICBjb25maWcucnR0X3N0YXRzID0gJnJ0dF9zdGF0
c187CiAgICAgY29uZmlnLmtlZXBhbGl2ZV9jb25maWcgPSBrZWVwYWxpdmVfY29uZmlnXzsKLSAg
ICBjb25maWcucnRjcF9pbnRlcnZhbF9jb25maWcgPSBydGNwX2ludGVydmFsX2NvbmZpZ187Cisg
ICAgY29uZmlnLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0gcnRjcF9yZXBvcnRfaW50ZXJ2YWxf
bXNfOwogCiAgICAgaW1wbF8ucmVzZXQobmV3IE1vZHVsZVJ0cFJ0Y3BJbXBsKGNvbmZpZykpOwog
ICAgIGltcGxfLT5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprQ29tcG91bmQpOwpAQCAtNjQ4LDEx
ICs2NDMsOCBAQCBURVNUX0YoUnRwUnRjcEltcGxUZXN0LCBTZW5kc0tlZXBhbGl2ZUFmdGVyVGlt
b3V0KSB7CiBURVNUX0YoUnRwUnRjcEltcGxUZXN0LCBDb25maWd1cmFibGVSdGNwUmVwb3J0SW50
ZXJ2YWwpIHsKICAgY29uc3QgaW50IGtWaWRlb1JlcG9ydEludGVydmFsID0gMzAwMDsKIAotICBS
dGNwSW50ZXJ2YWxDb25maWcgY29uZmlnOwotICBjb25maWcudmlkZW9faW50ZXJ2YWxfbXMgPSBr
VmlkZW9SZXBvcnRJbnRlcnZhbDsKLQogICAvLyBSZWNyZWF0ZSBzZW5kZXIgaW1wbCB3aXRoIG5l
dyBjb25maWd1cmF0aW9uLCBhbmQgcmVkbyBzZXR1cC4KLSAgc2VuZGVyXy5TZXRSdGNwSW50ZXJ2
YWxDb25maWdBbmRSZXNldChjb25maWcpOworICBzZW5kZXJfLlNldFJ0Y3BSZXBvcnRJbnRlcnZh
bEFuZFJlc2V0KGtWaWRlb1JlcG9ydEludGVydmFsKTsKICAgU2V0VXAoKTsKIAogICBTZW5kRnJh
bWUoJnNlbmRlcl8sIGtCYXNlTGF5ZXJUaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3Nl
bmRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXIuY2MKaW5kZXggOWYxMGM0MGU1NzU0MDI2OTU1
MjM0ODUyMDA3MTk3ZTE3NWJkNzM2OS4uZGRmOTFmNWY1YTJkNTgwZDVmOTlmZjdmOTJlNzc3ZjQw
NDM2ZTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfc2VuZGVyLmNjCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KIAog
I2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9t
YXRjaC5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X3J0cF9wYWNrZXRfb3V0Z29pbmcuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cv
cnRjX2V2ZW50X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yL3Rlc3QvYndlX3Rlc3RfbG9nZ2luZy5oIgpAQCAtOTQsMTQgKzk1LDYgQEAgY29uc3QgY2hh
ciogRnJhbWVUeXBlVG9TdHJpbmcoRnJhbWVUeXBlIGZyYW1lX3R5cGUpIHsKICAgfQogICByZXR1
cm4gIiI7CiB9Ci0KLXZvaWQgQ291bnRQYWNrZXQoUnRwUGFja2V0Q291bnRlciogY291bnRlciwg
Y29uc3QgUnRwUGFja2V0VG9TZW5kJiBwYWNrZXQpIHsKLSAgKytjb3VudGVyLT5wYWNrZXRzOwot
ICBjb3VudGVyLT5oZWFkZXJfYnl0ZXMgKz0gcGFja2V0LmhlYWRlcnNfc2l6ZSgpOwotICBjb3Vu
dGVyLT5wYWRkaW5nX2J5dGVzICs9IHBhY2tldC5wYWRkaW5nX3NpemUoKTsKLSAgY291bnRlci0+
cGF5bG9hZF9ieXRlcyArPSBwYWNrZXQucGF5bG9hZF9zaXplKCk7Ci19Ci0KIH0gIC8vIG5hbWVz
cGFjZQogCiBSVFBTZW5kZXI6OlJUUFNlbmRlcigKQEAgLTExOSwyNCArMTEyLDMzIEBAIFJUUFNl
bmRlcjo6UlRQU2VuZGVyKAogICAgIFNlbmRQYWNrZXRPYnNlcnZlciogc2VuZF9wYWNrZXRfb2Jz
ZXJ2ZXIsCiAgICAgUmF0ZUxpbWl0ZXIqIHJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlciwKICAg
ICBPdmVyaGVhZE9ic2VydmVyKiBvdmVyaGVhZF9vYnNlcnZlciwKLSAgICBib29sIHBvcHVsYXRl
X25ldHdvcmsyX3RpbWVzdGFtcCkKKyAgICBib29sIHBvcHVsYXRlX25ldHdvcmsyX3RpbWVzdGFt
cCwKKyAgICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAgIGJv
b2wgcmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uLAorICAgIGJvb2wgZXh0bWFwX2FsbG93X21peGVk
KQogICAgIDogY2xvY2tfKGNsb2NrKSwKICAgICAgIC8vIFRPRE8oaG9sbWVyKTogUmVtb3ZlIHRo
aXMgY29udmVyc2lvbj8KICAgICAgIGNsb2NrX2RlbHRhX21zXyhjbG9ja18tPlRpbWVJbk1pbGxp
c2Vjb25kcygpIC0gcnRjOjpUaW1lTWlsbGlzKCkpLAogICAgICAgcmFuZG9tXyhjbG9ja18tPlRp
bWVJbk1pY3Jvc2Vjb25kcygpKSwKICAgICAgIGF1ZGlvX2NvbmZpZ3VyZWRfKGF1ZGlvKSwKICAg
ICAgIGF1ZGlvXyhhdWRpbyA/IG5ldyBSVFBTZW5kZXJBdWRpbyhjbG9jaywgdGhpcykgOiBudWxs
cHRyKSwKLSAgICAgIHZpZGVvXyhhdWRpbyA/IG51bGxwdHIgOiBuZXcgUlRQU2VuZGVyVmlkZW8o
Y2xvY2ssIHRoaXMsIGZsZXhmZWNfc2VuZGVyKSksCisgICAgICB2aWRlb18oYXVkaW8gPyBudWxs
cHRyCisgICAgICAgICAgICAgICAgICAgOiBuZXcgUlRQU2VuZGVyVmlkZW8oY2xvY2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4ZmVjX3NlbmRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9lbmNyeXB0b3IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uKSksCiAg
ICAgICBwYWNlZF9zZW5kZXJfKHBhY2VkX3NlbmRlciksCiAgICAgICB0cmFuc3BvcnRfc2VxdWVu
Y2VfbnVtYmVyX2FsbG9jYXRvcl8oc2VxdWVuY2VfbnVtYmVyX2FsbG9jYXRvciksCiAgICAgICB0
cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2ZXJfKHRyYW5zcG9ydF9mZWVkYmFja19vYnNlcnZlciks
CiAgICAgICBsYXN0X2NhcHR1cmVfdGltZV9tc19zZW50XygwKSwKICAgICAgIHRyYW5zcG9ydF8o
dHJhbnNwb3J0KSwKLSAgICAgIHNlbmRpbmdfbWVkaWFfKHRydWUpLCAgICAgICAgICAgICAgICAg
ICAvLyBEZWZhdWx0IHRvIHNlbmRpbmcgbWVkaWEuCisgICAgICBzZW5kaW5nX21lZGlhXyh0cnVl
KSwgIC8vIERlZmF1bHQgdG8gc2VuZGluZyBtZWRpYS4KKyAgICAgIGZvcmNlX3BhcnRfb2ZfYWxs
b2NhdGlvbl8oZmFsc2UpLAogICAgICAgbWF4X3BhY2tldF9zaXplXyhJUF9QQUNLRVRfU0laRSAt
IDI4KSwgIC8vIERlZmF1bHQgaXMgSVAtdjQvVURQLgogICAgICAgbGFzdF9wYXlsb2FkX3R5cGVf
KC0xKSwKICAgICAgIHBheWxvYWRfdHlwZV9tYXBfKCksCi0gICAgICBydHBfaGVhZGVyX2V4dGVu
c2lvbl9tYXBfKCksCisgICAgICBydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXBfKGV4dG1hcF9hbGxv
d19taXhlZCksCiAgICAgICBwYWNrZXRfaGlzdG9yeV8oY2xvY2spLAogICAgICAgZmxleGZlY19w
YWNrZXRfaGlzdG9yeV8oY2xvY2spLAogICAgICAgLy8gU3RhdGlzdGljcwpAQCAtMTY3LDkgKzE2
OSw3IEBAIFJUUFNlbmRlcjo6UlRQU2VuZGVyKAogICAgICAgb3ZlcmhlYWRfb2JzZXJ2ZXJfKG92
ZXJoZWFkX29ic2VydmVyKSwKICAgICAgIHBvcHVsYXRlX25ldHdvcmsyX3RpbWVzdGFtcF8ocG9w
dWxhdGVfbmV0d29yazJfdGltZXN0YW1wKSwKICAgICAgIHNlbmRfc2lkZV9id2Vfd2l0aF9vdmVy
aGVhZF8oCi0gICAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMt
U2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikpLAotICAgICAgdW5saW1pdGVkX3JldHJhbnNtaXNz
aW9uX2V4cGVyaW1lbnRfKAotICAgICAgICAgIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJU
Qy1VbmxpbWl0ZWRTY3JlZW5zaGFyZVJldHJhbnNtaXNzaW9uIikpIHsKKyAgICAgICAgICB3ZWJy
dGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1TZW5kU2lkZUJ3ZS1XaXRoT3Zlcmhl
YWQiKSkgewogICAvLyBUaGlzIHJhbmRvbSBpbml0aWFsaXphdGlvbiBpcyBub3QgaW50ZW5kZWQg
dG8gYmUgY3J5cHRvZ3JhcGhpYyBzdHJvbmcuCiAgIHRpbWVzdGFtcF9vZmZzZXRfID0gcmFuZG9t
Xy5SYW5kPHVpbnQzMl90PigpOwogICAvLyBSYW5kb20gc3RhcnQsIDE2IGJpdHMuIENhbid0IGJl
IDAuCkBAIC0yMzksNiArMjM5LDExIEBAIHVpbnQzMl90IFJUUFNlbmRlcjo6TmFja092ZXJoZWFk
UmF0ZSgpIGNvbnN0IHsKICAgcmV0dXJuIG5hY2tfYml0cmF0ZV9zZW50Xy5SYXRlKGNsb2NrXy0+
VGltZUluTWlsbGlzZWNvbmRzKCkpLnZhbHVlX29yKDApOwogfQogCit2b2lkIFJUUFNlbmRlcjo6
U2V0RXh0bWFwQWxsb3dNaXhlZChib29sIGV4dG1hcF9hbGxvd19taXhlZCkgeworICBydGM6OkNy
aXRTY29wZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7CisgIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX21h
cF8uU2V0RXh0bWFwQWxsb3dNaXhlZChleHRtYXBfYWxsb3dfbWl4ZWQpOworfQorCiBpbnQzMl90
IFJUUFNlbmRlcjo6UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgaWQpIHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2VuZF9jcml0c2VjdF8pOwpAQCAtMjYw
LDEzICsyNjUsMTIgQEAgaW50MzJfdCBSVFBTZW5kZXI6OkRlcmVnaXN0ZXJSdHBIZWFkZXJFeHRl
bnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlKSB7CiAgIHJldHVybiBydHBfaGVhZGVyX2V4dGVu
c2lvbl9tYXBfLkRlcmVnaXN0ZXIodHlwZSk7CiB9CiAKLWludDMyX3QgUlRQU2VuZGVyOjpSZWdp
c3RlclBheWxvYWQoCi0gICAgY29uc3QgY2hhciBwYXlsb2FkX25hbWVbUlRQX1BBWUxPQURfTkFN
RV9TSVpFXSwKLSAgICBpbnQ4X3QgcGF5bG9hZF9udW1iZXIsCi0gICAgdWludDMyX3QgZnJlcXVl
bmN5LAotICAgIHNpemVfdCBjaGFubmVscywKLSAgICB1aW50MzJfdCByYXRlKSB7Ci0gIFJUQ19E
Q0hFQ0tfTFQoc3RybGVuKHBheWxvYWRfbmFtZSksIFJUUF9QQVlMT0FEX05BTUVfU0laRSk7Citp
bnQzMl90IFJUUFNlbmRlcjo6UmVnaXN0ZXJQYXlsb2FkKGFic2w6OnN0cmluZ192aWV3IHBheWxv
YWRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50OF90IHBheWxv
YWRfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBm
cmVxdWVuY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjaGFu
bmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmF0ZSkg
eworICBSVENfRENIRUNLX0xUKHBheWxvYWRfbmFtZS5zaXplKCksIFJUUF9QQVlMT0FEX05BTUVf
U0laRSk7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsKIAogICBzdGQ6
Om1hcDxpbnQ4X3QsIFJ0cFV0aWxpdHk6OlBheWxvYWQqPjo6aXRlcmF0b3IgaXQgPQpAQCAtMjc4
LDggKzI4Miw3IEBAIGludDMyX3QgUlRQU2VuZGVyOjpSZWdpc3RlclBheWxvYWQoCiAgICAgUlRD
X0RDSEVDSyhwYXlsb2FkKTsKIAogICAgIC8vIENoZWNrIGlmIGl0J3MgdGhlIHNhbWUgYXMgd2Ug
YWxyZWFkeSBoYXZlLgotICAgIGlmIChSdHBVdGlsaXR5OjpTdHJpbmdDb21wYXJlKHBheWxvYWQt
Pm5hbWUsIHBheWxvYWRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
VFBfUEFZTE9BRF9OQU1FX1NJWkUgLSAxKSkgeworICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVD
YXNlKHBheWxvYWQtPm5hbWUsIHBheWxvYWRfbmFtZSkpIHsKICAgICAgIGlmIChhdWRpb19jb25m
aWd1cmVkXyAmJiBwYXlsb2FkLT50eXBlU3BlY2lmaWMuaXNfYXVkaW8oKSkgewogICAgICAgICBh
dXRvJiBwID0gcGF5bG9hZC0+dHlwZVNwZWNpZmljLmF1ZGlvX3BheWxvYWQoKTsKICAgICAgICAg
aWYgKHJ0Yzo6U2FmZUVxKHAuZm9ybWF0LmNsb2NrcmF0ZV9oeiwgZnJlcXVlbmN5KSAmJgpAQCAt
NDI2LDExICs0MjksNiBAQCBib29sIFJUUFNlbmRlcjo6U2VuZE91dGdvaW5nRGF0YShGcmFtZVR5
cGUgZnJhbWVfdHlwZSwKICAgICAgICp0cmFuc3BvcnRfZnJhbWVfaWRfb3V0ID0gcnRwX3RpbWVz
dGFtcDsKICAgICBpZiAoIXNlbmRpbmdfbWVkaWFfKQogICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICAvLyBDYWNoZSB2aWRlbyBjb250ZW50IHR5cGUuCi0gICAgaWYgKCFhdWRpb19jb25maWd1cmVk
XyAmJiBydHBfaGVhZGVyKSB7Ci0gICAgICB2aWRlb19jb250ZW50X3R5cGVfID0gcnRwX2hlYWRl
ci0+Y29udGVudF90eXBlOwotICAgIH0KICAgfQogICBWaWRlb0NvZGVjVHlwZSB2aWRlb190eXBl
ID0ga1ZpZGVvQ29kZWNHZW5lcmljOwogICBpZiAoQ2hlY2tQYXlsb2FkVHlwZShwYXlsb2FkX3R5
cGUsICZ2aWRlb190eXBlKSAhPSAwKSB7CkBAIC02MTksMTAgKzYxNywxNiBAQCBzaXplX3QgUlRQ
U2VuZGVyOjpTZW5kUGFkRGF0YShzaXplX3QgYnl0ZXMsCiAgICAgUGFja2V0T3B0aW9ucyBvcHRp
b25zOwogICAgIC8vIFBhZGRpbmcgcGFja2V0cyBhcmUgbmV2ZXIgcmV0cmFuc21pc3Npb25zLgog
ICAgIG9wdGlvbnMuaXNfcmV0cmFuc21pdCA9IGZhbHNlOwotICAgIGJvb2wgaGFzX3RyYW5zcG9y
dF9zZXFfbnVtID0KLSAgICAgICAgVXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoJnBhZGRp
bmdfcGFja2V0LCAmb3B0aW9ucy5wYWNrZXRfaWQpOwotICAgIHBhZGRpbmdfcGFja2V0LlNldFBh
ZGRpbmcocGFkZGluZ19ieXRlc19pbl9wYWNrZXQsICZyYW5kb21fKTsKLQorICAgIGJvb2wgaGFz
X3RyYW5zcG9ydF9zZXFfbnVtOworICAgIHsKKyAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNl
bmRfY3JpdHNlY3RfKTsKKyAgICAgIGhhc190cmFuc3BvcnRfc2VxX251bSA9CisgICAgICAgICAg
VXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoJnBhZGRpbmdfcGFja2V0LCAmb3B0aW9ucy5w
YWNrZXRfaWQpOworICAgICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0KKyAgICAg
ICAgICBoYXNfdHJhbnNwb3J0X3NlcV9udW0gfHwgZm9yY2VfcGFydF9vZl9hbGxvY2F0aW9uXzsK
KyAgICAgIG9wdGlvbnMuaW5jbHVkZWRfaW5fZmVlZGJhY2sgPSBoYXNfdHJhbnNwb3J0X3NlcV9u
dW07CisgICAgfQorICAgIHBhZGRpbmdfcGFja2V0LlNldFBhZGRpbmcocGFkZGluZ19ieXRlc19p
bl9wYWNrZXQpOwogICAgIGlmIChoYXNfdHJhbnNwb3J0X3NlcV9udW0pIHsKICAgICAgIEFkZFBh
Y2tldFRvVHJhbnNwb3J0RmVlZGJhY2sob3B0aW9ucy5wYWNrZXRfaWQsIHBhZGRpbmdfcGFja2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNpbmdfaW5mbyk7CkBAIC02
NTQsNyArNjU4LDcgQEAgaW50MzJfdCBSVFBTZW5kZXI6OlJlU2VuZFBhY2tldCh1aW50MTZfdCBw
YWNrZXRfaWQpIHsKICAgLy8gVHJ5IHRvIGZpbmQgcGFja2V0IGluIFJUUCBwYWNrZXQgaGlzdG9y
eS4gQWxzbyB2ZXJpZnkgUlRUIGhlcmUsIHNvIHRoYXQgd2UKICAgLy8gZG9uJ3QgcmV0cmFuc21p
dCB0b28gb2Z0ZW4uCiAgIGFic2w6Om9wdGlvbmFsPFJ0cFBhY2tldEhpc3Rvcnk6OlBhY2tldFN0
YXRlPiBzdG9yZWRfcGFja2V0ID0KLSAgICAgIHBhY2tldF9oaXN0b3J5Xy5HZXRQYWNrZXRTdGF0
ZShwYWNrZXRfaWQsIHRydWUpOworICAgICAgcGFja2V0X2hpc3RvcnlfLkdldFBhY2tldFN0YXRl
KHBhY2tldF9pZCk7CiAgIGlmICghc3RvcmVkX3BhY2tldCkgewogICAgIC8vIFBhY2tldCBub3Qg
Zm91bmQuCiAgICAgcmV0dXJuIDA7CkBAIC02NjQsMjAgKzY2OCw5IEBAIGludDMyX3QgUlRQU2Vu
ZGVyOjpSZVNlbmRQYWNrZXQodWludDE2X3QgcGFja2V0X2lkKSB7CiAKICAgLy8gU2tpcCByZXRy
YW5zbWlzc2lvbiByYXRlIGNoZWNrIGlmIG5vdCBjb25maWd1cmVkLgogICBpZiAocmV0cmFuc21p
c3Npb25fcmF0ZV9saW1pdGVyXykgewotICAgIC8vIFNraXAgcmV0cmFuc21pc3Npb24gcmF0ZSBj
aGVjayBpZiBzZW5kaW5nIHNjcmVlbnNoYXJlIGFuZCB0aGUgZXhwZXJpbWVudAotICAgIC8vIGlz
IG9uLgotICAgIGJvb2wgc2tpcF9yZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ID0gZmFsc2U7Ci0g
ICAgaWYgKHVubGltaXRlZF9yZXRyYW5zbWlzc2lvbl9leHBlcmltZW50XykgewotICAgICAgcnRj
OjpDcml0U2NvcGUgbG9jaygmc2VuZF9jcml0c2VjdF8pOwotICAgICAgc2tpcF9yZXRyYW5zbWlz
c2lvbl9yYXRlX2xpbWl0ID0KLSAgICAgICAgICB2aWRlb19jb250ZW50X3R5cGVfICYmCi0gICAg
ICAgICAgdmlkZW9jb250ZW50dHlwZWhlbHBlcnM6OklzU2NyZWVuc2hhcmUoKnZpZGVvX2NvbnRl
bnRfdHlwZV8pOwotICAgIH0KLQogICAgIC8vIENoZWNrIGlmIHdlJ3JlIG92ZXJ1c2luZyByZXRy
YW5zbWlzc2lvbiBiaXRyYXRlLgogICAgIC8vIFRPRE8oc3ByYW5nKTogQWRkIGhpc3RvZ3JhbXMg
Zm9yIG5hY2sgc3VjY2VzcyBvciBmYWlsdXJlIHJlYXNvbnMuCi0gICAgaWYgKCFza2lwX3JldHJh
bnNtaXNzaW9uX3JhdGVfbGltaXQgJiYKLSAgICAgICAgIXJldHJhbnNtaXNzaW9uX3JhdGVfbGlt
aXRlcl8tPlRyeVVzZVJhdGUocGFja2V0X3NpemUpKSB7CisgICAgaWYgKCFyZXRyYW5zbWlzc2lv
bl9yYXRlX2xpbWl0ZXJfLT5UcnlVc2VSYXRlKHBhY2tldF9zaXplKSkgewogICAgICAgcmV0dXJu
IC0xOwogICAgIH0KICAgfQpAQCAtNjk2LDcgKzY4OSw3IEBAIGludDMyX3QgUlRQU2VuZGVyOjpS
ZVNlbmRQYWNrZXQodWludDE2X3QgcGFja2V0X2lkKSB7CiAgIH0KIAogICBzdGQ6OnVuaXF1ZV9w
dHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXQgPQotICAgICAgcGFja2V0X2hpc3RvcnlfLkdldFBh
Y2tldEFuZFNldFNlbmRUaW1lKHBhY2tldF9pZCwgdHJ1ZSk7CisgICAgICBwYWNrZXRfaGlzdG9y
eV8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUocGFja2V0X2lkKTsKICAgaWYgKCFwYWNrZXQpIHsK
ICAgICAvLyBQYWNrZXQgY291bGQgdGhlb3JldGljYWxseSB0aW1lIG91dCBiZXR3ZWVuIHRoZSBm
aXJzdCBjaGVjayBhbmQgdGhpcyBvbmUuCiAgICAgcmV0dXJuIDA7CkBAIC03NzQsMTcgKzc2Nywx
NCBAQCBib29sIFJUUFNlbmRlcjo6VGltZVRvU2VuZFBhY2tldCh1aW50MzJfdCBzc3JjLAogICAg
IHJldHVybiB0cnVlOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tl
dDsKLSAgLy8gTm8gbmVlZCB0byB2ZXJpZnkgUlRUIGhlcmUsIGl0IGhhcyBhbHJlYWR5IGJlZW4g
Y2hlY2tlZCBiZWZvcmUgcHV0dGluZyB0aGUKLSAgLy8gcGFja2V0IGludG8gdGhlIHBhY2VyLiBC
dXQgX2RvXyB1cGRhdGUgdGhlIHNlbmQgdGltZS4KICAgaWYgKHNzcmMgPT0gU1NSQygpKSB7Ci0g
ICAgcGFja2V0ID0gcGFja2V0X2hpc3RvcnlfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKHNlcXVl
bmNlX251bWJlciwgZmFsc2UpOworICAgIHBhY2tldCA9IHBhY2tldF9oaXN0b3J5Xy5HZXRQYWNr
ZXRBbmRTZXRTZW5kVGltZShzZXF1ZW5jZV9udW1iZXIpOwogICB9IGVsc2UgaWYgKHNzcmMgPT0g
RmxleGZlY1NzcmMoKSkgewotICAgIHBhY2tldCA9Ci0gICAgICAgIGZsZXhmZWNfcGFja2V0X2hp
c3RvcnlfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKHNlcXVlbmNlX251bWJlciwgZmFsc2UpOwor
ICAgIHBhY2tldCA9IGZsZXhmZWNfcGFja2V0X2hpc3RvcnlfLkdldFBhY2tldEFuZFNldFNlbmRU
aW1lKHNlcXVlbmNlX251bWJlcik7CiAgIH0KIAogICBpZiAoIXBhY2tldCkgewotICAgIC8vIFBh
Y2tldCBjYW5ub3QgYmUgZm91bmQuCisgICAgLy8gUGFja2V0IGNhbm5vdCBiZSBmb3VuZCBvciB3
YXMgcmVzZW5kIHRvbyByZWNlbnRseS4KICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCkBAIC04Mzgs
NyArODI4LDE2IEBAIGJvb2wgUlRQU2VuZGVyOjpQcmVwYXJlQW5kU2VuZFBhY2tldChzdGQ6OnVu
aXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXQsCiAgIC8vIEUuZy4gUlRQU2VuZGVyOjpU
cnlTZW5kUmVkdW5kYW50UGF5bG9hZHMgY2FsbHMgUHJlcGFyZUFuZFNlbmRQYWNrZXQgd2l0aAog
ICAvLyBzZW5kX292ZXJfcnR4ID0gdHJ1ZSBidXQgaXNfcmV0cmFuc21pdCA9IGZhbHNlLgogICBv
cHRpb25zLmlzX3JldHJhbnNtaXQgPSBpc19yZXRyYW5zbWl0IHx8IHNlbmRfb3Zlcl9ydHg7Ci0g
IGlmIChVcGRhdGVUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihwYWNrZXRfdG9fc2VuZCwgJm9wdGlv
bnMucGFja2V0X2lkKSkgeworICBib29sIGhhc190cmFuc3BvcnRfc2VxX251bTsKKyAgeworICAg
IHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsKKyAgICBoYXNfdHJhbnNwb3J0
X3NlcV9udW0gPQorICAgICAgICBVcGRhdGVUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihwYWNrZXRf
dG9fc2VuZCwgJm9wdGlvbnMucGFja2V0X2lkKTsKKyAgICBvcHRpb25zLmluY2x1ZGVkX2luX2Fs
bG9jYXRpb24gPQorICAgICAgICBoYXNfdHJhbnNwb3J0X3NlcV9udW0gfHwgZm9yY2VfcGFydF9v
Zl9hbGxvY2F0aW9uXzsKKyAgICBvcHRpb25zLmluY2x1ZGVkX2luX2ZlZWRiYWNrID0gaGFzX3Ry
YW5zcG9ydF9zZXFfbnVtOworICB9CisgIGlmIChoYXNfdHJhbnNwb3J0X3NlcV9udW0pIHsKICAg
ICBBZGRQYWNrZXRUb1RyYW5zcG9ydEZlZWRiYWNrKG9wdGlvbnMucGFja2V0X2lkLCAqcGFja2V0
X3RvX3NlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNpbmdfaW5mbyk7
CiAgIH0KQEAgLTg3NiwxMyArODc1LDEzIEBAIHZvaWQgUlRQU2VuZGVyOjpVcGRhdGVSdHBTdGF0
cyhjb25zdCBSdHBQYWNrZXRUb1NlbmQmIHBhY2tldCwKICAgICBjb3VudGVycy0+Zmlyc3RfcGFj
a2V0X3RpbWVfbXMgPSBub3dfbXM7CiAKICAgaWYgKElzRmVjUGFja2V0KHBhY2tldCkpCi0gICAg
Q291bnRQYWNrZXQoJmNvdW50ZXJzLT5mZWMsIHBhY2tldCk7CisgICAgY291bnRlcnMtPmZlYy5B
ZGRQYWNrZXQocGFja2V0KTsKIAogICBpZiAoaXNfcmV0cmFuc21pdCkgewotICAgIENvdW50UGFj
a2V0KCZjb3VudGVycy0+cmV0cmFuc21pdHRlZCwgcGFja2V0KTsKKyAgICBjb3VudGVycy0+cmV0
cmFuc21pdHRlZC5BZGRQYWNrZXQocGFja2V0KTsKICAgICBuYWNrX2JpdHJhdGVfc2VudF8uVXBk
YXRlKHBhY2tldC5zaXplKCksIG5vd19tcyk7CiAgIH0KLSAgQ291bnRQYWNrZXQoJmNvdW50ZXJz
LT50cmFuc21pdHRlZCwgcGFja2V0KTsKKyAgY291bnRlcnMtPnRyYW5zbWl0dGVkLkFkZFBhY2tl
dChwYWNrZXQpOwogCiAgIGlmIChydHBfc3RhdHNfY2FsbGJhY2tfKQogICAgIHJ0cF9zdGF0c19j
YWxsYmFja18tPkRhdGFDb3VudGVyc1VwZGF0ZWQoKmNvdW50ZXJzLCBwYWNrZXQuU3NyYygpKTsK
QEAgLTkyMCwxNSArOTE5LDYgQEAgYm9vbCBSVFBTZW5kZXI6OlNlbmRUb05ldHdvcmsoc3RkOjp1
bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0LAogICBSVENfRENIRUNLKHBhY2tldCk7
CiAgIGludDY0X3Qgbm93X21zID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKTsKIAotICAv
LyB8Y2FwdHVyZV90aW1lX21zfCA8PSAwIGlzIGNvbnNpZGVyZWQgaW52YWxpZC4KLSAgLy8gVE9E
Tyhob2xtZXIpOiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIGFsbCBvdmVyIFZpZGVvIEVuZ2luZSBz
byB0aGF0IG5lZ2F0aXZlCi0gIC8vIHRpbWUgaXMgY29uc2lkZXIgaW52YWxpZCwgd2hpbGUgMCBp
cyBjb25zaWRlcmVkIGEgdmFsaWQgdGltZS4KLSAgaWYgKHBhY2tldC0+Y2FwdHVyZV90aW1lX21z
KCkgPiAwKSB7Ci0gICAgcGFja2V0LT5TZXRFeHRlbnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0PigK
LSAgICAgICAga1RpbWVzdGFtcFRpY2tzUGVyTXMgKiAobm93X21zIC0gcGFja2V0LT5jYXB0dXJl
X3RpbWVfbXMoKSkpOwotICB9Ci0gIHBhY2tldC0+U2V0RXh0ZW5zaW9uPEFic29sdXRlU2VuZFRp
bWU+KEFic29sdXRlU2VuZFRpbWU6Ok1zVG8yNEJpdHMobm93X21zKSk7Ci0KICAgaWYgKHZpZGVv
XykgewogICAgIEJXRV9URVNUX0xPR0dJTkdfUExPVF9XSVRIX1NTUkMoMSwgIlZpZGVvVG90Qml0
cmF0ZV9rYnBzIiwgbm93X21zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWN0dWFsU2VuZEJpdHJhdGVLYml0KCksIHBhY2tldC0+U3NyYygpKTsKQEAgLTk3MSw3ICs5NjEs
MzEgQEAgYm9vbCBSVFBTZW5kZXI6OlNlbmRUb05ldHdvcmsoc3RkOjp1bmlxdWVfcHRyPFJ0cFBh
Y2tldFRvU2VuZD4gcGFja2V0LAogCiAgIFBhY2tldE9wdGlvbnMgb3B0aW9uczsKICAgb3B0aW9u
cy5pc19yZXRyYW5zbWl0ID0gZmFsc2U7Ci0gIGlmIChVcGRhdGVUcmFuc3BvcnRTZXF1ZW5jZU51
bWJlcihwYWNrZXQuZ2V0KCksICZvcHRpb25zLnBhY2tldF9pZCkpIHsKKworICAvLyB8Y2FwdHVy
ZV90aW1lX21zfCA8PSAwIGlzIGNvbnNpZGVyZWQgaW52YWxpZC4KKyAgLy8gVE9ETyhob2xtZXIp
OiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIGFsbCBvdmVyIFZpZGVvIEVuZ2luZSBzbyB0aGF0IG5l
Z2F0aXZlCisgIC8vIHRpbWUgaXMgY29uc2lkZXIgaW52YWxpZCwgd2hpbGUgMCBpcyBjb25zaWRl
cmVkIGEgdmFsaWQgdGltZS4KKyAgaWYgKHBhY2tldC0+Y2FwdHVyZV90aW1lX21zKCkgPiAwKSB7
CisgICAgcGFja2V0LT5TZXRFeHRlbnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0PigKKyAgICAgICAg
a1RpbWVzdGFtcFRpY2tzUGVyTXMgKiAobm93X21zIC0gcGFja2V0LT5jYXB0dXJlX3RpbWVfbXMo
KSkpOworCisgICAgaWYgKHBvcHVsYXRlX25ldHdvcmsyX3RpbWVzdGFtcF8gJiYKKyAgICAgICAg
cGFja2V0LT5IYXNFeHRlbnNpb248VmlkZW9UaW1pbmdFeHRlbnNpb24+KCkpIHsKKyAgICAgIHBh
Y2tldC0+c2V0X25ldHdvcmsyX3RpbWVfbXMobm93X21zKTsKKyAgICB9CisgIH0KKyAgcGFja2V0
LT5TZXRFeHRlbnNpb248QWJzb2x1dGVTZW5kVGltZT4oQWJzb2x1dGVTZW5kVGltZTo6TXNUbzI0
Qml0cyhub3dfbXMpKTsKKworICBib29sIGhhc190cmFuc3BvcnRfc2VxX251bTsKKyAgeworICAg
IHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsKKyAgICBoYXNfdHJhbnNwb3J0
X3NlcV9udW0gPQorICAgICAgICBVcGRhdGVUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihwYWNrZXQu
Z2V0KCksICZvcHRpb25zLnBhY2tldF9pZCk7CisgICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9hbGxv
Y2F0aW9uID0KKyAgICAgICAgaGFzX3RyYW5zcG9ydF9zZXFfbnVtIHx8IGZvcmNlX3BhcnRfb2Zf
YWxsb2NhdGlvbl87CisgICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9mZWVkYmFjayA9IGhhc190cmFu
c3BvcnRfc2VxX251bTsKKyAgfQorICBpZiAoaGFzX3RyYW5zcG9ydF9zZXFfbnVtKSB7CiAgICAg
QWRkUGFja2V0VG9UcmFuc3BvcnRGZWVkYmFjayhvcHRpb25zLnBhY2tldF9pZCwgKnBhY2tldC5n
ZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2VkUGFja2V0SW5mbygp
KTsKICAgfQpAQCAtMTE0MSw4ICsxMTU1LDE1IEBAIHZvaWQgUlRQU2VuZGVyOjpHZXREYXRhQ291
bnRlcnMoU3RyZWFtRGF0YUNvdW50ZXJzKiBydHBfc3RhdHMsCiAKIHN0ZDo6dW5pcXVlX3B0cjxS
dHBQYWNrZXRUb1NlbmQ+IFJUUFNlbmRlcjo6QWxsb2NhdGVQYWNrZXQoKSBjb25zdCB7CiAgIHJ0
Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0
cFBhY2tldFRvU2VuZD4gcGFja2V0KAotICAgICAgbmV3IFJ0cFBhY2tldFRvU2VuZCgmcnRwX2hl
YWRlcl9leHRlbnNpb25fbWFwXywgbWF4X3BhY2tldF9zaXplXykpOworICAvLyBUT0RPKGRhbmls
Y2hhcCk6IEZpbmQgYmV0dGVyIG1vdGl2YXRvciBhbmQgdmFsdWUgZm9yIGV4dHJhIGNhcGFjaXR5
LgorICAvLyBSdHBQYWNrZXRpemVyIG1pZ2h0IHNsaWdodGx5IG1pc2NhbHVsYXRlIG5lZWRlZCBz
aXplLAorICAvLyBTUlRQIG1heSBiZW5lZml0IGZyb20gZXh0cmEgc3BhY2UgaW4gdGhlIGJ1ZmZl
ciBhbmQgZG8gZW5jcnlwdGlvbiBpbiBwbGFjZQorICAvLyBzYXZpbmcgcmVhbGxvY2F0aW9uLgor
ICAvLyBXaGlsZSBzZW5kaW5nIHNsaWdodGx5IG92ZXJzaXplZCBwYWNrZXQgaW5jcmVhc2UgY2hh
bmNlIG9mIGRyb3BwZWQgcGFja2V0LAorICAvLyBpdCBpcyBiZXR0ZXIgdGhhbiBjcmFzaCBvbiBk
cm9wIHBhY2tldCB3aXRob3V0IHRyeWluZyB0byBzZW5kIGl0LgorICBzdGF0aWMgY29uc3RleHBy
IGludCBrRXh0cmFDYXBhY2l0eSA9IDE2OworICBhdXRvIHBhY2tldCA9IGFic2w6Om1ha2VfdW5p
cXVlPFJ0cFBhY2tldFRvU2VuZD4oCisgICAgICAmcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXywg
bWF4X3BhY2tldF9zaXplXyArIGtFeHRyYUNhcGFjaXR5KTsKICAgUlRDX0RDSEVDSyhzc3JjXyk7
CiAgIHBhY2tldC0+U2V0U3NyYygqc3NyY18pOwogICBwYWNrZXQtPlNldENzcmNzKGNzcmNzXyk7
CkBAIC0xMTgxLDEwICsxMjAyLDkgQEAgYm9vbCBSVFBTZW5kZXI6OkFzc2lnblNlcXVlbmNlTnVt
YmVyKFJ0cFBhY2tldFRvU2VuZCogcGFja2V0KSB7CiB9CiAKIGJvb2wgUlRQU2VuZGVyOjpVcGRh
dGVUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihSdHBQYWNrZXRUb1NlbmQqIHBhY2tldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHBhY2tldF9pZCkg
Y29uc3QgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCogcGFja2V0X2lkKSB7CiAgIFJUQ19EQ0hFQ0socGFja2V0KTsKICAgUlRDX0RDSEVDSyhwYWNr
ZXRfaWQpOwotICBydGM6OkNyaXRTY29wZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7CiAgIGlmICgh
cnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXy5Jc1JlZ2lzdGVyZWQoVHJhbnNwb3J0U2VxdWVuY2VO
dW1iZXI6OmtJZCkpCiAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMjA5LDYgKzEyMjksMTEgQEAg
Ym9vbCBSVFBTZW5kZXI6OlNlbmRpbmdNZWRpYSgpIGNvbnN0IHsKICAgcmV0dXJuIHNlbmRpbmdf
bWVkaWFfOwogfQogCit2b2lkIFJUUFNlbmRlcjo6U2V0QXNQYXJ0T2ZBbGxvY2F0aW9uKGJvb2wg
cGFydF9vZl9hbGxvY2F0aW9uKSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNl
Y3RfKTsKKyAgZm9yY2VfcGFydF9vZl9hbGxvY2F0aW9uXyA9IHBhcnRfb2ZfYWxsb2NhdGlvbjsK
K30KKwogdm9pZCBSVFBTZW5kZXI6OlNldFRpbWVzdGFtcE9mZnNldCh1aW50MzJfdCB0aW1lc3Rh
bXApIHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2VuZF9jcml0c2VjdF8pOwogICB0aW1lc3Rh
bXBfb2Zmc2V0XyA9IHRpbWVzdGFtcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9zZW5kZXIuaAppbmRleCA1YTkzZDdhNTIwMjFlMTRjNTA4ZDc1NGQz
MDZlMGEyZDg4NGViZjFiLi5mOWJiYmRkOWUyMmEyM2RmMDFkMjJjMTlkODdjYzcyYjY5YzZkY2Q3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3Nl
bmRlci5oCkBAIC0xNywxMCArMTcsMTAgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgogI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgog
I2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgotI2luY2x1ZGUgImFwaS92aWRlby92aWRl
b19jb250ZW50X3R5cGUuaCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChi
dWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVj
X3NlbmRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVy
X2V4dGVuc2lvbl9tYXAuaCIKQEAgLTM4LDYgKzM4LDcgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKK2NsYXNzIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlOwogY2xhc3MgT3ZlcmhlYWRPYnNlcnZl
cjsKIGNsYXNzIFJhdGVMaW1pdGVyOwogY2xhc3MgUnRjRXZlbnRMb2c7CkBAIC02Myw3ICs2NCwx
MCBAQCBjbGFzcyBSVFBTZW5kZXIgewogICAgICAgICAgICAgU2VuZFBhY2tldE9ic2VydmVyKiBz
ZW5kX3BhY2tldF9vYnNlcnZlciwKICAgICAgICAgICAgIFJhdGVMaW1pdGVyKiBuYWNrX3JhdGVf
bGltaXRlciwKICAgICAgICAgICAgIE92ZXJoZWFkT2JzZXJ2ZXIqIG92ZXJoZWFkX29ic2VydmVy
LAotICAgICAgICAgICAgYm9vbCBwb3B1bGF0ZV9uZXR3b3JrMl90aW1lc3RhbXApOworICAgICAg
ICAgICAgYm9vbCBwb3B1bGF0ZV9uZXR3b3JrMl90aW1lc3RhbXAsCisgICAgICAgICAgICBGcmFt
ZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAgICAgICAgICAgYm9vbCBy
ZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24sCisgICAgICAgICAgICBib29sIGV4dG1hcF9hbGxvd19t
aXhlZCk7CiAKICAgflJUUFNlbmRlcigpOwogCkBAIC03NSw3ICs3OSw3IEBAIGNsYXNzIFJUUFNl
bmRlciB7CiAgIHVpbnQzMl90IEZlY092ZXJoZWFkUmF0ZSgpIGNvbnN0OwogICB1aW50MzJfdCBO
YWNrT3ZlcmhlYWRSYXRlKCkgY29uc3Q7CiAKLSAgaW50MzJfdCBSZWdpc3RlclBheWxvYWQoY29u
c3QgY2hhciogcGF5bG9hZF9uYW1lLAorICBpbnQzMl90IFJlZ2lzdGVyUGF5bG9hZChhYnNsOjpz
dHJpbmdfdmlldyBwYXlsb2FkX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludDhfdCBwYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQzMl90IGZyZXF1ZW5jeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90
IGNoYW5uZWxzLApAQCAtODYsNiArOTAsOCBAQCBjbGFzcyBSVFBTZW5kZXIgewogICB2b2lkIFNl
dFNlbmRpbmdNZWRpYVN0YXR1cyhib29sIGVuYWJsZWQpOwogICBib29sIFNlbmRpbmdNZWRpYSgp
IGNvbnN0OwogCisgIHZvaWQgU2V0QXNQYXJ0T2ZBbGxvY2F0aW9uKGJvb2wgcGFydF9vZl9hbGxv
Y2F0aW9uKTsKKwogICB2b2lkIEdldERhdGFDb3VudGVycyhTdHJlYW1EYXRhQ291bnRlcnMqIHJ0
cF9zdGF0cywKICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtRGF0YUNvdW50ZXJzKiBydHhf
c3RhdHMpIGNvbnN0OwogCkBAIC0xMTQsNiArMTIwLDggQEAgY2xhc3MgUlRQU2VuZGVyIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiB0cmFuc3BvcnRfZnJhbWVfaWRfb3V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBleHBlY3RlZF9yZXRyYW5zbWlzc2lvbl90
aW1lX21zKTsKIAorICB2b2lkIFNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3df
bWl4ZWQpOworCiAgIC8vIFJUUCBoZWFkZXIgZXh0ZW5zaW9uCiAgIGludDMyX3QgUmVnaXN0ZXJS
dHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlwZSB0eXBlLCB1aW50OF90IGlkKTsKICAg
Ym9vbCBSZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihjb25zdCBzdGQ6OnN0cmluZyYgdXJpLCBp
bnQgaWQpOwpAQCAtMjQ3LDggKzI1NSw4IEBAIGNsYXNzIFJUUFNlbmRlciB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDY0X3QgY2FwdHVyZV90aW1lX21zLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBzc3JjKTsKIAotICBib29sIFVwZGF0ZVRyYW5zcG9ydFNlcXVl
bmNlTnVtYmVyKFJ0cFBhY2tldFRvU2VuZCogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCogcGFja2V0X2lkKSBjb25zdDsKKyAgYm9vbCBVcGRhdGVUcmFu
c3BvcnRTZXF1ZW5jZU51bWJlcihSdHBQYWNrZXRUb1NlbmQqIHBhY2tldCwgaW50KiBwYWNrZXRf
aWQpCisgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKHNlbmRfY3JpdHNlY3RfKTsK
IAogICB2b2lkIFVwZGF0ZVJ0cFN0YXRzKGNvbnN0IFJ0cFBhY2tldFRvU2VuZCYgcGFja2V0LAog
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfcnR4LApAQCAtMjc3LDcgKzI4NSw3IEBAIGNs
YXNzIFJUUFNlbmRlciB7CiAKICAgVHJhbnNwb3J0KiB0cmFuc3BvcnRfOwogICBib29sIHNlbmRp
bmdfbWVkaWFfIFJUQ19HVUFSREVEX0JZKHNlbmRfY3JpdHNlY3RfKTsKLQorICBib29sIGZvcmNl
X3BhcnRfb2ZfYWxsb2NhdGlvbl8gUlRDX0dVQVJERURfQlkoc2VuZF9jcml0c2VjdF8pOwogICBz
aXplX3QgbWF4X3BhY2tldF9zaXplXzsKIAogICBpbnQ4X3QgbGFzdF9wYXlsb2FkX3R5cGVfIFJU
Q19HVUFSREVEX0JZKHNlbmRfY3JpdHNlY3RfKTsKQEAgLTM0MywxMSArMzUxLDYgQEAgY2xhc3Mg
UlRQU2VuZGVyIHsKIAogICBjb25zdCBib29sIHNlbmRfc2lkZV9id2Vfd2l0aF9vdmVyaGVhZF87
CiAKLSAgY29uc3QgYm9vbCB1bmxpbWl0ZWRfcmV0cmFuc21pc3Npb25fZXhwZXJpbWVudF87Ci0K
LSAgYWJzbDo6b3B0aW9uYWw8VmlkZW9Db250ZW50VHlwZT4gdmlkZW9fY29udGVudF90eXBlXwot
ICAgICAgUlRDX0dVQVJERURfQlkoc2VuZF9jcml0c2VjdF8pOwotCiAgIFJUQ19ESVNBTExPV19J
TVBMSUNJVF9DT05TVFJVQ1RPUlMoUlRQU2VuZGVyKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9zZW5kZXJfYXVkaW8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX2F1ZGlvLmNjCmlu
ZGV4IGJmODZhMzkzMzliZTczZjkwNzgzNTljNzc1NWJkZWQ4Nzc0MWVjNDYuLjYzNmNjY2NmMGQ5
YjdmZjkwYTBkYWQ0ZDNkNTI5YWFiNmZkYjBmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9z
ZW5kZXJfYXVkaW8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl9hdWRpby5jYwpAQCAtMTEs
MTYgKzExLDE4IEBACiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRl
cl9hdWRpby5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgorI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX3BhY2tldC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9wYWNrZXRfdG9fc2VuZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMu
aCIKICNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKQEAgLTMwLDE0ICszMiwxMyBAQCBSVFBTZW5kZXJBdWRpbzo6UlRQU2VuZGVyQXVkaW8oQ2xv
Y2sqIGNsb2NrLCBSVFBTZW5kZXIqIHJ0cF9zZW5kZXIpCiAKIFJUUFNlbmRlckF1ZGlvOjp+UlRQ
U2VuZGVyQXVkaW8oKSB7fQogCi1pbnQzMl90IFJUUFNlbmRlckF1ZGlvOjpSZWdpc3RlckF1ZGlv
UGF5bG9hZCgKLSAgICBjb25zdCBjaGFyIHBheWxvYWROYW1lW1JUUF9QQVlMT0FEX05BTUVfU0la
RV0sCi0gICAgY29uc3QgaW50OF90IHBheWxvYWRfdHlwZSwKLSAgICBjb25zdCB1aW50MzJfdCBm
cmVxdWVuY3ksCi0gICAgY29uc3Qgc2l6ZV90IGNoYW5uZWxzLAotICAgIGNvbnN0IHVpbnQzMl90
IHJhdGUsCi0gICAgUnRwVXRpbGl0eTo6UGF5bG9hZCoqIHBheWxvYWQpIHsKLSAgaWYgKFJ0cFV0
aWxpdHk6OlN0cmluZ0NvbXBhcmUocGF5bG9hZE5hbWUsICJjbiIsIDIpKSB7CitpbnQzMl90IFJU
UFNlbmRlckF1ZGlvOjpSZWdpc3RlckF1ZGlvUGF5bG9hZChhYnNsOjpzdHJpbmdfdmlldyBwYXls
b2FkX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbnQ4X3QgcGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgZnJlcXVlbmN5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGNoYW5uZWxzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3Qg
cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFV0
aWxpdHk6OlBheWxvYWQqKiBwYXlsb2FkKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KHBheWxvYWRfbmFtZSwgImNuIikpIHsKICAgICBydGM6OkNyaXRTY29wZSBjcygmc2VuZF9hdWRp
b19jcml0c2VjdF8pOwogICAgIC8vICB3ZSBjYW4gaGF2ZSBtdWx0aXBsZSBDTkcgcGF5bG9hZCB0
eXBlcwogICAgIHN3aXRjaCAoZnJlcXVlbmN5KSB7CkBAIC01Niw3ICs1Nyw3IEBAIGludDMyX3Qg
UlRQU2VuZGVyQXVkaW86OlJlZ2lzdGVyQXVkaW9QYXlsb2FkKAogICAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgfSBlbHNlIGlmIChSdHBVdGlsaXR5OjpTdHJpbmdD
b21wYXJlKHBheWxvYWROYW1lLCAidGVsZXBob25lLWV2ZW50IiwgMTUpKSB7CisgIH0gZWxzZSBp
ZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25hbWUsICJ0ZWxlcGhvbmUtZXZlbnQi
KSkgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZzZW5kX2F1ZGlvX2NyaXRzZWN0Xyk7CiAgICAg
Ly8gRG9uJ3QgYWRkIGl0IHRvIHRoZSBsaXN0CiAgICAgLy8gd2UgZG9udCB3YW50IHRvIGFsbG93
IHNlbmQgd2l0aCBhIERUTUYgcGF5bG9hZHR5cGUKQEAgLTY1LDkgKzY2LDkgQEAgaW50MzJfdCBS
VFBTZW5kZXJBdWRpbzo6UmVnaXN0ZXJBdWRpb1BheWxvYWQoCiAgICAgcmV0dXJuIDA7CiAgIH0K
ICAgKnBheWxvYWQgPSBuZXcgUnRwVXRpbGl0eTo6UGF5bG9hZCgKLSAgICAgIHBheWxvYWROYW1l
LAorICAgICAgcGF5bG9hZF9uYW1lLAogICAgICAgUGF5bG9hZFVuaW9uKEF1ZGlvUGF5bG9hZHsK
LSAgICAgICAgICBTZHBBdWRpb0Zvcm1hdChwYXlsb2FkTmFtZSwgZnJlcXVlbmN5LCBjaGFubmVs
cyksIHJhdGV9KSk7CisgICAgICAgICAgU2RwQXVkaW9Gb3JtYXQocGF5bG9hZF9uYW1lLCBmcmVx
dWVuY3ksIGNoYW5uZWxzKSwgcmF0ZX0pKTsKICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9zZW5kZXJfYXVkaW8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfYXVkaW8u
aAppbmRleCA2M2RmYzJiOTljMzkzODUyNzgzZDZjODBmNzk3YTRhNTBkM2NhMmNkLi4xZGJlNWI1
ODE3Y2MzZDE2NzQ2Mjk3MTFiMTA2MzQzNDQ1YjEwMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfc2VuZGVyX2F1ZGlvLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl9hdWRpby5oCkBAIC0x
MSwxNCArMTEsMTkgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX1NFTkRF
Ul9BVURJT19IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfU0VOREVSX0FV
RElPX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2lu
Y2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBl
cy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvZHRtZl9xdWV1ZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9ydGNwX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9zZW5kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0
eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9vbmV0aW1lZXZl
bnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKKyNpbmNsdWRl
ICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IApAQCAtMjcsNyArMzIsNyBAQCBjbGFzcyBSVFBTZW5kZXJBdWRpbyB7CiAgIFJUUFNlbmRlckF1
ZGlvKENsb2NrKiBjbG9jaywgUlRQU2VuZGVyKiBydHBfc2VuZGVyKTsKICAgflJUUFNlbmRlckF1
ZGlvKCk7CiAKLSAgaW50MzJfdCBSZWdpc3RlckF1ZGlvUGF5bG9hZChjb25zdCBjaGFyIHBheWxv
YWROYW1lW1JUUF9QQVlMT0FEX05BTUVfU0laRV0sCisgIGludDMyX3QgUmVnaXN0ZXJBdWRpb1Bh
eWxvYWQoYWJzbDo6c3RyaW5nX3ZpZXcgcGF5bG9hZF9uYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDhfdCBwYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgZnJlcXVlbmN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBjaGFubmVscywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3VuaXR0ZXN0LmNjCmluZGV4IDg2YjkyZGEy
ZTAwYjljZDE0Y2JkMzYwNmMzNTU1YjhiYjQxZjc4MTYuLmE2ODdiY2JiMzViMjdhZGM3M2I2N2Vj
ZmEwODIwNDRiODIyOTE2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl91bml0dGVzdC5jYwpAQCAtMTg0LDcgKzE4
NCw4IEBAIGNsYXNzIFJ0cFNlbmRlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPGJvb2w+IHsKICAgICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIHBh
Y2VyID8gJm1vY2tfcGFjZWRfc2VuZGVyXyA6IG51bGxwdHIsCiAgICAgICAgIG51bGxwdHIsICZz
ZXFfbnVtX2FsbG9jYXRvcl8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCiAg
ICAgICAgICZtb2NrX3J0Y19ldmVudF9sb2dfLCAmc2VuZF9wYWNrZXRfb2JzZXJ2ZXJfLAotICAg
ICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgcG9wdWxhdGVfbmV0
d29yazIpKTsKKyAgICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIs
IHBvcHVsYXRlX25ldHdvcmsyLCBudWxscHRyLAorICAgICAgICBmYWxzZSwgZmFsc2UpKTsKICAg
ICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAgICAgcnRwX3NlbmRl
cl8tPlNldFRpbWVzdGFtcE9mZnNldCgwKTsKICAgICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3Ny
Yyk7CkBAIC0yNzYsNyArMjc3LDcgQEAgY2xhc3MgVGVzdFJ0cFNlbmRlclZpZGVvIDogcHVibGlj
IFJUUFNlbmRlclZpZGVvIHsKICAgVGVzdFJ0cFNlbmRlclZpZGVvKENsb2NrKiBjbG9jaywKICAg
ICAgICAgICAgICAgICAgICAgIFJUUFNlbmRlciogcnRwX3NlbmRlciwKICAgICAgICAgICAgICAg
ICAgICAgIEZsZXhmZWNTZW5kZXIqIGZsZXhmZWNfc2VuZGVyKQotICAgICAgOiBSVFBTZW5kZXJW
aWRlbyhjbG9jaywgcnRwX3NlbmRlciwgZmxleGZlY19zZW5kZXIpIHt9CisgICAgICA6IFJUUFNl
bmRlclZpZGVvKGNsb2NrLCBydHBfc2VuZGVyLCBmbGV4ZmVjX3NlbmRlciwgbnVsbHB0ciwgZmFs
c2UpIHt9CiAgIH5UZXN0UnRwU2VuZGVyVmlkZW8oKSBvdmVycmlkZSB7fQogCiAgIFN0b3JhZ2VU
eXBlIEdldFN0b3JhZ2VUeXBlKGNvbnN0IFJUUFZpZGVvSGVhZGVyJiBoZWFkZXIsCkBAIC0zODIs
NyArMzgzLDggQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIEFzc2lnblNlcXVlbmNlTnVtYmVyQWxs
b3dzUGFkZGluZ09uQXVkaW8pIHsKICAgcnRwX3NlbmRlcl8ucmVzZXQobmV3IFJUUFNlbmRlcigK
ICAgICAgIGtFbmFibGVBdWRpbywgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0LCAmbW9ja19wYWNl
ZF9zZW5kZXJfLCBudWxscHRyLAogICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgJm1vY2tfcnRjX2V2ZW50X2xvZ18sCi0gICAgICBudWxscHRyLCAmcmV0
cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgICAgIG51bGxw
dHIsICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0
ciwgZmFsc2UsCisgICAgICBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0VGltZXN0YW1wT2Zm
c2V0KDApOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7CiAKQEAgLTQyOCw3ICs0MzAs
OCBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwKICAgcnRwX3NlbmRlcl8ucmVz
ZXQobmV3IFJUUFNlbmRlcigKICAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRf
LCBudWxscHRyLCBudWxscHRyLCAmc2VxX251bV9hbGxvY2F0b3JfLAogICAgICAgJmZlZWRiYWNr
X29ic2VydmVyXywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJm1vY2tfcnRjX2V2ZW50X2xv
Z18sCi0gICAgICBudWxscHRyLCAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgJm1vY2tf
b3ZlcmhlYWRfb2JzZXJ2ZXIsIGZhbHNlKSk7CisgICAgICBudWxscHRyLCAmcmV0cmFuc21pc3Np
b25fcmF0ZV9saW1pdGVyXywgJm1vY2tfb3ZlcmhlYWRfb2JzZXJ2ZXIsIGZhbHNlLAorICAgICAg
bnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsK
ICAgRVhQRUNUX0VRKDAsIHJ0cF9zZW5kZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbigK
ICAgICAgICAgICAgICAgICAgICBrUnRwRXh0ZW5zaW9uVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIs
CkBAIC00NTUsNyArNDU4LDggQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3RXaXRob3V0UGFjZXIsIFNl
bmRzUGFja2V0c1dpdGhUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcikgewogICBydHBfc2VuZGVyXy5y
ZXNldChuZXcgUlRQU2VuZGVyKAogICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9y
dF8sIG51bGxwdHIsIG51bGxwdHIsICZzZXFfbnVtX2FsbG9jYXRvcl8sCiAgICAgICAmZmVlZGJh
Y2tfb2JzZXJ2ZXJfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAmbW9ja19ydGNfZXZlbnRf
bG9nXywKLSAgICAgICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sICZyZXRyYW5zbWlzc2lvbl9yYXRl
X2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSkpOworICAgICAgJnNlbmRfcGFja2V0X29ic2VydmVy
XywgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlLAorICAgICAg
bnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsK
ICAgRVhQRUNUX0VRKDAsIHJ0cF9zZW5kZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbigK
ICAgICAgICAgICAgICAgICAgICBrUnRwRXh0ZW5zaW9uVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIs
CkBAIC00NzksMTMgKzQ4MywxNSBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwg
U2VuZHNQYWNrZXRzV2l0aFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKSB7CiAgIEFTU0VSVF9UUlVF
KHBhY2tldC5HZXRFeHRlbnNpb248VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI+KCZ0cmFuc3BvcnRf
c2VxX25vKSk7CiAgIEVYUEVDVF9FUShrVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIsIHRyYW5zcG9y
dF9zZXFfbm8pOwogICBFWFBFQ1RfRVEodHJhbnNwb3J0Xy5sYXN0X29wdGlvbnNfLnBhY2tldF9p
ZCwgdHJhbnNwb3J0X3NlcV9ubyk7CisgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydF8ubGFzdF9vcHRp
b25zXy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uKTsKIH0KIAogVEVTVF9QKFJ0cFNlbmRlclRlc3RX
aXRob3V0UGFjZXIsIFBhY2tldE9wdGlvbnNOb1JldHJhbnNtaXNzaW9uKSB7CiAgIHJ0cF9zZW5k
ZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCiAgICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJh
bnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0ciwgJnNlcV9udW1fYWxsb2NhdG9yXywKICAgICAgICZm
ZWVkYmFja19vYnNlcnZlcl8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsICZtb2NrX3J0Y19l
dmVudF9sb2dfLAotICAgICAgJnNlbmRfcGFja2V0X29ic2VydmVyXywgJnJldHJhbnNtaXNzaW9u
X3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgICAgICAmc2VuZF9wYWNrZXRfb2Jz
ZXJ2ZXJfLCAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsCisg
ICAgICBudWxscHRyLCBmYWxzZSwgZmFsc2UpKTsKICAgcnRwX3NlbmRlcl8tPlNldFNTUkMoa1Nz
cmMpOwogCiAgIFNlbmRHZW5lcmljUGF5bG9hZCgpOwpAQCAtNDkzLDE2ICs0OTksNTMgQEAgVEVT
VF9QKFJ0cFNlbmRlclRlc3RXaXRob3V0UGFjZXIsIFBhY2tldE9wdGlvbnNOb1JldHJhbnNtaXNz
aW9uKSB7CiAgIEVYUEVDVF9GQUxTRSh0cmFuc3BvcnRfLmxhc3Rfb3B0aW9uc18uaXNfcmV0cmFu
c21pdCk7CiB9CiAKLVRFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLCBOb0FsbG9jYXRp
b25JZk5vdFJlZ2lzdGVyZWQpIHsKK1RFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLAor
ICAgICAgIFNldHNJbmNsdWRlZEluRmVlZGJhY2tXaGVuVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJF
eHRlbnNpb25Jc1JlZ2lzdGVyZWQpIHsKKyAgU2V0VXBSdHBTZW5kZXIoZmFsc2UsIGZhbHNlKTsK
KyAgcnRwX3NlbmRlcl8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKGtSdHBFeHRlbnNpb25U
cmFuc3BvcnRTZXF1ZW5jZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtUcmFuc3BvcnRTZXF1ZW5jZU51bWJlckV4dGVuc2lvbklkKTsKKyAgRVhQRUNU
X0NBTEwoc2VxX251bV9hbGxvY2F0b3JfLCBBbGxvY2F0ZVNlcXVlbmNlTnVtYmVyKCkpCisgICAg
ICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKGtUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcikpOwor
ICBFWFBFQ1RfQ0FMTChzZW5kX3BhY2tldF9vYnNlcnZlcl8sIE9uU2VuZFBhY2tldCkuVGltZXMo
MSk7CisgIFNlbmRHZW5lcmljUGF5bG9hZCgpOworICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnRfLmxh
c3Rfb3B0aW9uc18uaW5jbHVkZWRfaW5fZmVlZGJhY2spOworfQorCitURVNUX1AoCisgICAgUnRw
U2VuZGVyVGVzdFdpdGhvdXRQYWNlciwKKyAgICBTZXRzSW5jbHVkZWRJbkFsbG9jYXRpb25XaGVu
VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJFeHRlbnNpb25Jc1JlZ2lzdGVyZWQpIHsKKyAgU2V0VXBS
dHBTZW5kZXIoZmFsc2UsIGZhbHNlKTsKKyAgcnRwX3NlbmRlcl8tPlJlZ2lzdGVyUnRwSGVhZGVy
RXh0ZW5zaW9uKGtSdHBFeHRlbnNpb25UcmFuc3BvcnRTZXF1ZW5jZU51bWJlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtUcmFuc3BvcnRTZXF1ZW5jZU51bWJl
ckV4dGVuc2lvbklkKTsKKyAgRVhQRUNUX0NBTEwoc2VxX251bV9hbGxvY2F0b3JfLCBBbGxvY2F0
ZVNlcXVlbmNlTnVtYmVyKCkpCisgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKGtUcmFu
c3BvcnRTZXF1ZW5jZU51bWJlcikpOworICBFWFBFQ1RfQ0FMTChzZW5kX3BhY2tldF9vYnNlcnZl
cl8sIE9uU2VuZFBhY2tldCkuVGltZXMoMSk7CiAgIFNlbmRHZW5lcmljUGF5bG9hZCgpOworICBF
WFBFQ1RfVFJVRSh0cmFuc3BvcnRfLmxhc3Rfb3B0aW9uc18uaW5jbHVkZWRfaW5fYWxsb2NhdGlv
bik7Cit9CisKK1RFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLAorICAgICAgIFNldHNJ
bmNsdWRlZEluQWxsb2NhdGlvbldoZW5Gb3JjZWRBc1BhcnRPZkFsbG9jYXRpb24pIHsKKyAgU2V0
VXBSdHBTZW5kZXIoZmFsc2UsIGZhbHNlKTsKKyAgcnRwX3NlbmRlcl8tPlNldEFzUGFydE9mQWxs
b2NhdGlvbih0cnVlKTsKKyAgU2VuZEdlbmVyaWNQYXlsb2FkKCk7CisgIEVYUEVDVF9GQUxTRSh0
cmFuc3BvcnRfLmxhc3Rfb3B0aW9uc18uaW5jbHVkZWRfaW5fZmVlZGJhY2spOworICBFWFBFQ1Rf
VFJVRSh0cmFuc3BvcnRfLmxhc3Rfb3B0aW9uc18uaW5jbHVkZWRfaW5fYWxsb2NhdGlvbik7Cit9
CisKK1RFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLCBEb2VzblNldEluY2x1ZGVkSW5B
bGxvY2F0aW9uQnlEZWZhdWx0KSB7CisgIFNldFVwUnRwU2VuZGVyKGZhbHNlLCBmYWxzZSk7Cisg
IFNlbmRHZW5lcmljUGF5bG9hZCgpOworICBFWFBFQ1RfRkFMU0UodHJhbnNwb3J0Xy5sYXN0X29w
dGlvbnNfLmluY2x1ZGVkX2luX2ZlZWRiYWNrKTsKKyAgRVhQRUNUX0ZBTFNFKHRyYW5zcG9ydF8u
bGFzdF9vcHRpb25zXy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uKTsKIH0KIAogVEVTVF9QKFJ0cFNl
bmRlclRlc3RXaXRob3V0UGFjZXIsIE9uU2VuZFNpZGVEZWxheVVwZGF0ZWQpIHsKICAgdGVzdGlu
Zzo6U3RyaWN0TW9jazxNb2NrU2VuZFNpZGVEZWxheU9ic2VydmVyPiBzZW5kX3NpZGVfZGVsYXlf
b2JzZXJ2ZXJfOwotICBydHBfc2VuZGVyXy5yZXNldCgKLSAgICAgIG5ldyBSVFBTZW5kZXIoZmFs
c2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
Ci0gICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsICZzZW5kX3Np
ZGVfZGVsYXlfb2JzZXJ2ZXJfLAotICAgICAgICAgICAgICAgICAgICAmbW9ja19ydGNfZXZlbnRf
bG9nXywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgZmFsc2UpKTsKKyAgcnRwX3NlbmRlcl8u
cmVzZXQobmV3IFJUUFNlbmRlcigKKyAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3Bv
cnRfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAorICAgICAgbnVsbHB0ciwg
bnVsbHB0ciwgJnNlbmRfc2lkZV9kZWxheV9vYnNlcnZlcl8sICZtb2NrX3J0Y19ldmVudF9sb2df
LAorICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZhbHNl
LCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7CiAKICAgY29uc3QgdWlu
dDhfdCBrUGF5bG9hZFR5cGUgPSAxMjc7CkBAIC01ODAsNyArNjIzLDcgQEAgVEVTVF9QKFJ0cFNl
bmRlclRlc3QsIFNlbmRzUGFja2V0c1dpdGhUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcikgewogICAg
ICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sICZtb2NrX3BhY2VkX3NlbmRlcl8s
IG51bGxwdHIsCiAgICAgICAmc2VxX251bV9hbGxvY2F0b3JfLCAmZmVlZGJhY2tfb2JzZXJ2ZXJf
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAogICAgICAgJm1vY2tfcnRjX2V2ZW50X2xvZ18s
ICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sCi0gICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1p
dGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0
ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5k
ZXJfLT5TZXRTZXF1ZW5jZU51bWJlcihrU2VxTnVtKTsKICAgcnRwX3NlbmRlcl8tPlNldFNTUkMo
a1NzcmMpOwogICBydHBfc2VuZGVyXy0+U2V0U3RvcmVQYWNrZXRzU3RhdHVzKHRydWUsIDEwKTsK
QEAgLTY0Nyw4ICs2OTAsOCBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdCwgV3JpdGVzUGFjZXJFeGl0
VG9UaW1pbmdFeHRlbnNpb24pIHsKICAgRVhQRUNUX0VRKGtTdG9yZWRUaW1lSW5NcywgdmlkZW9f
dGltaW5nLnBhY2VyX2V4aXRfZGVsdGFfbXMpOwogfQogCi1URVNUX1AoUnRwU2VuZGVyVGVzdCwg
V3JpdGVzTmV0d29yazJUb1RpbWluZ0V4dGVuc2lvbikgewotICBTZXRVcFJ0cFNlbmRlcih0cnVl
LCB0cnVlKTsKK1RFU1RfUChSdHBTZW5kZXJUZXN0LCBXcml0ZXNOZXR3b3JrMlRvVGltaW5nRXh0
ZW5zaW9uV2l0aFBhY2VyKSB7CisgIFNldFVwUnRwU2VuZGVyKC8qcGFjZXI9Ki90cnVlLCAvKnBv
cHVsYXRlX25ldHdvcmsyPSovdHJ1ZSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTdG9yZVBhY2tldHNT
dGF0dXModHJ1ZSwgMTApOwogICBFWFBFQ1RfRVEoMCwgcnRwX3NlbmRlcl8tPlJlZ2lzdGVyUnRw
SGVhZGVyRXh0ZW5zaW9uKAogICAgICAgICAgICAgICAgICAgIGtSdHBFeHRlbnNpb25WaWRlb1Rp
bWluZywga1ZpZGVvVGltaW5nRXh0ZW5zaW9uSWQpKTsKQEAgLTY4Niw2ICs3MjksMzEgQEAgVEVT
VF9QKFJ0cFNlbmRlclRlc3QsIFdyaXRlc05ldHdvcmsyVG9UaW1pbmdFeHRlbnNpb24pIHsKICAg
RVhQRUNUX0VRKGtQYWNlckV4aXRNcywgdmlkZW9fdGltaW5nLnBhY2VyX2V4aXRfZGVsdGFfbXMp
OwogfQogCitURVNUX1AoUnRwU2VuZGVyVGVzdCwgV3JpdGVzTmV0d29yazJUb1RpbWluZ0V4dGVu
c2lvbldpdGhvdXRQYWNlcikgeworICBTZXRVcFJ0cFNlbmRlcigvKnBhY2VyPSovZmFsc2UsIC8q
cG9wdWxhdGVfbmV0d29yazI9Ki90cnVlKTsKKyAgRVhQRUNUX0VRKDAsIHJ0cF9zZW5kZXJfLT5S
ZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbigKKyAgICAgICAgICAgICAgICAgICBrUnRwRXh0ZW5z
aW9uVmlkZW9UaW1pbmcsIGtWaWRlb1RpbWluZ0V4dGVuc2lvbklkKSk7CisgIGF1dG8gcGFja2V0
ID0gcnRwX3NlbmRlcl8tPkFsbG9jYXRlUGFja2V0KCk7CisgIHBhY2tldC0+U2V0TWFya2VyKHRy
dWUpOworICBwYWNrZXQtPnNldF9jYXB0dXJlX3RpbWVfbXMoZmFrZV9jbG9ja18uVGltZUluTWls
bGlzZWNvbmRzKCkpOworICBjb25zdCBWaWRlb1NlbmRUaW1pbmcga1ZpZGVvVGltaW5nID0gezB1
LCAwdSwgMHUsIDB1LCAwdSwgMHUsIHRydWV9OworICBwYWNrZXQtPlNldEV4dGVuc2lvbjxWaWRl
b1RpbWluZ0V4dGVuc2lvbj4oa1ZpZGVvVGltaW5nKTsKKyAgRVhQRUNUX1RSVUUocnRwX3NlbmRl
cl8tPkFzc2lnblNlcXVlbmNlTnVtYmVyKHBhY2tldC5nZXQoKSkpOworCisgIGNvbnN0IGludCBr
UHJvcGFnYXRlVGltZU1zID0gMTA7CisgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNv
bmRzKGtQcm9wYWdhdGVUaW1lTXMpOworCisgIEVYUEVDVF9UUlVFKHJ0cF9zZW5kZXJfLT5TZW5k
VG9OZXR3b3JrKHN0ZDo6bW92ZShwYWNrZXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrQWxsb3dSZXRyYW5zbWlzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUnRwUGFja2V0U2VuZGVyOjprTm9ybWFsUHJpb3JpdHkpKTsK
KworICBFWFBFQ1RfRVEoMSwgdHJhbnNwb3J0Xy5wYWNrZXRzX3NlbnQoKSk7CisgIGFic2w6Om9w
dGlvbmFsPFZpZGVvU2VuZFRpbWluZz4gdmlkZW9fdGltaW5nID0KKyAgICAgIHRyYW5zcG9ydF8u
bGFzdF9zZW50X3BhY2tldCgpLkdldEV4dGVuc2lvbjxWaWRlb1RpbWluZ0V4dGVuc2lvbj4oKTsK
KyAgQVNTRVJUX1RSVUUodmlkZW9fdGltaW5nKTsKKyAgRVhQRUNUX0VRKGtQcm9wYWdhdGVUaW1l
TXMsIHZpZGVvX3RpbWluZy0+bmV0d29yazJfdGltZXN0YW1wX2RlbHRhX21zKTsKK30KKwogVEVT
VF9QKFJ0cFNlbmRlclRlc3QsIFRyYWZmaWNTbW9vdGhpbmdXaXRoRXh0ZW5zaW9ucykgewogICBF
WFBFQ1RfQ0FMTChtb2NrX3BhY2VkX3NlbmRlcl8sIEluc2VydFBhY2tldChSdHBQYWNrZXRTZW5k
ZXI6OmtOb3JtYWxQcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga1NzcmMsIGtTZXFOdW0sIF8sIF8sIF8pKTsKQEAgLTk0MCw3ICsxMDA4LDcg
QEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIE9uU2VuZFBhY2tldE5vdFVwZGF0ZWRXaXRob3V0U2Vx
TnVtQWxsb2NhdG9yKSB7CiAgICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0Xywg
Jm1vY2tfcGFjZWRfc2VuZGVyXywgbnVsbHB0ciwKICAgICAgIG51bGxwdHIgLyogVHJhbnNwb3J0
U2VxdWVuY2VOdW1iZXJBbGxvY2F0b3IgKi8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCiAg
ICAgICBudWxscHRyLCBudWxscHRyLCAmc2VuZF9wYWNrZXRfb2JzZXJ2ZXJfLCAmcmV0cmFuc21p
c3Npb25fcmF0ZV9saW1pdGVyXywKLSAgICAgIG51bGxwdHIsIGZhbHNlKSk7CisgICAgICBudWxs
cHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRT
ZXF1ZW5jZU51bWJlcihrU2VxTnVtKTsKICAgcnRwX3NlbmRlcl8tPlNldFNTUkMoa1NzcmMpOwog
ICBFWFBFQ1RfRVEoMCwgcnRwX3NlbmRlcl8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKApA
QCAtOTY2LDcgKzEwMzQsNyBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdCwgU2VuZFJlZHVuZGFudFBh
eWxvYWRzKSB7CiAgIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCiAgICAgICBmYWxz
ZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0LCAmbW9ja19wYWNlZF9zZW5kZXJfLCBudWxscHRy
LCBudWxscHRyLAogICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJm1v
Y2tfcnRjX2V2ZW50X2xvZ18sIG51bGxwdHIsCi0gICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9s
aW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xp
bWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9z
ZW5kZXJfLT5TZXRTZXF1ZW5jZU51bWJlcihrU2VxTnVtKTsKICAgcnRwX3NlbmRlcl8tPlNldFNT
UkMoa1NzcmMpOwogICBydHBfc2VuZGVyXy0+U2V0UnR4UGF5bG9hZFR5cGUoa1J0eFBheWxvYWQs
IGtQYXlsb2FkKTsKQEAgLTEwOTAsNyArMTE1OCw3IEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBT
ZW5kRmxleGZlY1BhY2tldHMpIHsKICAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3Bv
cnRfLCAmbW9ja19wYWNlZF9zZW5kZXJfLCAmZmxleGZlY19zZW5kZXIsCiAgICAgICAmc2VxX251
bV9hbGxvY2F0b3JfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAogICAgICAg
Jm1vY2tfcnRjX2V2ZW50X2xvZ18sICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sCi0gICAgICAmcmV0
cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgICAgICZyZXRy
YW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2Us
IGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtNZWRpYVNzcmMpOwogICBydHBfc2Vu
ZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTdG9y
ZVBhY2tldHNTdGF0dXModHJ1ZSwgMTApOwpAQCAtMTE1MCw3ICsxMjE4LDcgQEAgVEVTVF9QKFJ0
cFNlbmRlclRlc3QsIE5vRmxleGZlY0ZvclRpbWluZ0ZyYW1lcykgewogICAgICAgZmFsc2UsICZm
YWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sICZtb2NrX3BhY2VkX3NlbmRlcl8sICZmbGV4ZmVjX3Nl
bmRlciwKICAgICAgICZzZXFfbnVtX2FsbG9jYXRvcl8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsCiAgICAgICAmbW9ja19ydGNfZXZlbnRfbG9nXywgJnNlbmRfcGFja2V0X29i
c2VydmVyXywKLSAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBm
YWxzZSkpOworICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZh
bHNlLCBudWxscHRyLCBmYWxzZSwgZmFsc2UpKTsKICAgcnRwX3NlbmRlcl8tPlNldFNTUkMoa01l
ZGlhU3NyYyk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTZXF1ZW5jZU51bWJlcihrU2VxTnVtKTsKICAg
cnRwX3NlbmRlcl8tPlNldFN0b3JlUGFja2V0c1N0YXR1cyh0cnVlLCAxMCk7CkBAIC0xMjQ1LDEx
ICsxMzEzLDExIEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLCBTZW5kRmxleGZl
Y1BhY2tldHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyIC8qIHJ0
cF9zdGF0ZSAqLywgJmZha2VfY2xvY2tfKTsKIAogICAvLyBSZXNldCB8cnRwX3NlbmRlcl98IHRv
IHVzZSBGbGV4RkVDLgotICBydHBfc2VuZGVyXy5yZXNldCgKLSAgICAgIG5ldyBSVFBTZW5kZXIo
ZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsICZmbGV4ZmVjX3NlbmRl
ciwKLSAgICAgICAgICAgICAgICAgICAgJnNlcV9udW1fYWxsb2NhdG9yXywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgJm1vY2tfcnRjX2V2
ZW50X2xvZ18sICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sCi0gICAgICAgICAgICAgICAgICAgICZy
ZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSkpOworICBydHBfc2Vu
ZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAorICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRy
YW5zcG9ydF8sIG51bGxwdHIsICZmbGV4ZmVjX3NlbmRlciwKKyAgICAgICZzZXFfbnVtX2FsbG9j
YXRvcl8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAmbW9ja19y
dGNfZXZlbnRfbG9nXywgJnNlbmRfcGFja2V0X29ic2VydmVyXywKKyAgICAgICZyZXRyYW5zbWlz
c2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNl
KSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtNZWRpYVNzcmMpOwogICBydHBfc2VuZGVyXy0+
U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAKQEAgLTEzMTMsNyArMTM4MSw3IEBAIFRFU1Rf
UChSdHBTZW5kZXJUZXN0LCBGZWNPdmVyaGVhZFJhdGUpIHsKICAgICAgIGZhbHNlLCAmZmFrZV9j
bG9ja18sICZ0cmFuc3BvcnRfLCAmbW9ja19wYWNlZF9zZW5kZXJfLCAmZmxleGZlY19zZW5kZXIs
CiAgICAgICAmc2VxX251bV9hbGxvY2F0b3JfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLAogICAgICAgJm1vY2tfcnRjX2V2ZW50X2xvZ18sICZzZW5kX3BhY2tldF9vYnNlcnZl
cl8sCi0gICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2Up
KTsKKyAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwg
bnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtNZWRpYVNz
cmMpOwogICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAKQEAgLTEz
NjUsNyArMTQzMyw3IEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBGcmFtZUNvdW50Q2FsbGJhY2tz
KSB7CiAgIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCiAgICAgICBmYWxzZSwgJmZh
a2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgJm1vY2tfcGFjZWRfc2VuZGVyXywgbnVsbHB0ciwgbnVs
bHB0ciwKICAgICAgIG51bGxwdHIsIG51bGxwdHIsICZjYWxsYmFjaywgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwKLSAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRy
LCBmYWxzZSkpOworICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIs
IGZhbHNlLCBudWxscHRyLCBmYWxzZSwgZmFsc2UpKTsKICAgcnRwX3NlbmRlcl8tPlNldFNTUkMo
a1NzcmMpOwogICBjaGFyIHBheWxvYWRfbmFtZVtSVFBfUEFZTE9BRF9OQU1FX1NJWkVdID0gIkdF
TkVSSUMiOwogICBjb25zdCB1aW50OF90IHBheWxvYWRfdHlwZSA9IDEyNzsKQEAgLTE0MjUsMTAg
KzE0OTMsMTAgQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIEJpdHJhdGVDYWxsYmFja3MpIHsKICAg
ICB1aW50MzJfdCB0b3RhbF9iaXRyYXRlXzsKICAgICB1aW50MzJfdCByZXRyYW5zbWl0X2JpdHJh
dGVfOwogICB9IGNhbGxiYWNrOwotICBydHBfc2VuZGVyXy5yZXNldCgKLSAgICAgIG5ldyBSVFBT
ZW5kZXIoZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgIG51bGxwdHIsICZjYWxsYmFjaywgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgJnJldHJh
bnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgIHJ0cF9zZW5kZXJf
LnJlc2V0KG5ldyBSVFBTZW5kZXIoCisgICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNw
b3J0XywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICZjYWxsYmFj
aywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICZyZXRyYW5zbWlz
c2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNl
KSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsKIAogICAvLyBTaW11bGF0ZSBrTnVt
UGFja2V0cyBzZW50IHdpdGgga1BhY2tldEludGVydmFsIG1zIGludGVydmFscywgd2l0aCB0aGUK
QEAgLTE0ODUsMTAgKzE1NTMsMTAgQEAgY2xhc3MgUnRwU2VuZGVyQXVkaW9UZXN0IDogcHVibGlj
IFJ0cFNlbmRlclRlc3QgewogCiAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7CiAgICAgcGF5bG9h
ZF8gPSBrQXVkaW9QYXlsb2FkOwotICAgIHJ0cF9zZW5kZXJfLnJlc2V0KAotICAgICAgICBuZXcg
UlRQU2VuZGVyKHRydWUsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxw
dHIsCi0gICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCAm
cmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgICBydHBf
c2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAorICAgICAgICB0cnVlLCAmZmFrZV9jbG9ja18s
ICZ0cmFuc3BvcnRfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAorICAgICAg
ICBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAorICAgICAgICAm
cmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZh
bHNlLCBmYWxzZSkpOwogICAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsKICAgICBydHBf
c2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAgIH0KQEAgLTIxNTEsMTAgKzIy
MTksMTEgQEAgVEVTVF9QKFJ0cFNlbmRlclZpZGVvVGVzdCwKIAogVEVTVF9QKFJ0cFNlbmRlclRl
c3QsIE9uT3ZlcmhlYWRDaGFuZ2VkKSB7CiAgIE1vY2tPdmVyaGVhZE9ic2VydmVyIG1vY2tfb3Zl
cmhlYWRfb2JzZXJ2ZXI7Ci0gIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCi0gICAg
ICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwKLSAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsCi0gICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgJm1vY2tfb3Zl
cmhlYWRfb2JzZXJ2ZXIsIGZhbHNlKSk7CisgIHJ0cF9zZW5kZXJfLnJlc2V0KAorICAgICAgbmV3
IFJUUFNlbmRlcihmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgJnJl
dHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sICZtb2NrX292ZXJoZWFkX29ic2VydmVyLAorICAg
ICAgICAgICAgICAgICAgICBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9z
ZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsKIAogICAvLyBSVFAgb3ZlcmhlYWQgaXMgMTJCLgpAQCAt
MjE3MiwxMCArMjI0MSwxMSBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdCwgT25PdmVyaGVhZENoYW5n
ZWQpIHsKIAogVEVTVF9QKFJ0cFNlbmRlclRlc3QsIERvZXNOb3RVcGRhdGVPdmVyaGVhZE9uRXF1
YWxTaXplKSB7CiAgIE1vY2tPdmVyaGVhZE9ic2VydmVyIG1vY2tfb3ZlcmhlYWRfb2JzZXJ2ZXI7
Ci0gIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCi0gICAgICBmYWxzZSwgJmZha2Vf
Y2xvY2tfLCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwK
LSAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAg
ICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgJm1vY2tfb3ZlcmhlYWRfb2JzZXJ2ZXIs
IGZhbHNlKSk7CisgIHJ0cF9zZW5kZXJfLnJlc2V0KAorICAgICAgbmV3IFJUUFNlbmRlcihmYWxz
ZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgJnJldHJhbnNtaXNzaW9uX3Jh
dGVfbGltaXRlcl8sICZtb2NrX292ZXJoZWFkX29ic2VydmVyLAorICAgICAgICAgICAgICAgICAg
ICBmYWxzZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JD
KGtTc3JjKTsKIAogICBFWFBFQ1RfQ0FMTChtb2NrX292ZXJoZWFkX29ic2VydmVyLCBPbk92ZXJo
ZWFkQ2hhbmdlZChfKSkuVGltZXMoMSk7CkBAIC0yMTg1LDEwICsyMjU1LDEwIEBAIFRFU1RfUChS
dHBTZW5kZXJUZXN0LCBEb2VzTm90VXBkYXRlT3ZlcmhlYWRPbkVxdWFsU2l6ZSkgewogCiBURVNU
X1AoUnRwU2VuZGVyVGVzdCwgU2VuZHNLZWVwQWxpdmUpIHsKICAgTW9ja1RyYW5zcG9ydCB0cmFu
c3BvcnQ7Ci0gIHJ0cF9zZW5kZXJfLnJlc2V0KAotICAgICAgbmV3IFJUUFNlbmRlcihmYWxzZSwg
JmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAotICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAmbW9j
a19ydGNfZXZlbnRfbG9nXywKLSAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgJnJldHJhbnNt
aXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgIHJ0cF9zZW5kZXJfLnJl
c2V0KG5ldyBSVFBTZW5kZXIoCisgICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAorICAgICAgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgJm1vY2tfcnRjX2V2ZW50X2xvZ18sIG51bGxwdHIsCisgICAgICAmcmV0
cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZhbHNl
LCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAg
IHJ0cF9zZW5kZXJfLT5TZXRUaW1lc3RhbXBPZmZzZXQoMCk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRT
U1JDKGtTc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdmlkZW8uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfc2VuZGVyX3ZpZGVvLmNjCmluZGV4IGU4ZjBlYTVjOGRlMDcxODBhY2JmMTkz
MGM2NTJhMjhhYTFkYjg2MzUuLmNiMGI2NjU2MDg0NTU3NDVjY2QwNWNiN2E1Y2E5ZTliNTBiNzEy
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdmlkZW8uY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX3NlbmRlcl92aWRlby5jYwpAQCAtMTksNiArMTksOCBAQAogI2luY2x1ZGUgPHZlY3Rv
cj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9tYXRjaC5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVlbmNyeXB0b3JpbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5l
cy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuaCIK
QEAgLTkxLDYgKzkzLDExIEBAIHZvaWQgQWRkUnRwSGVhZGVyRXh0ZW5zaW9ucyhjb25zdCBSVFBW
aWRlb0hlYWRlciYgdmlkZW9faGVhZGVyLAogICAgICAgZ2VuZXJpY19kZXNjcmlwdG9yLlNldFNw
YXRpYWxMYXllcnNCaXRtYXNrKHNwYXRpYWxfYmltYXNrKTsKIAogICAgICAgZ2VuZXJpY19kZXNj
cmlwdG9yLlNldFRlbXBvcmFsTGF5ZXIodmlkZW9faGVhZGVyLmdlbmVyaWMtPnRlbXBvcmFsX2lu
ZGV4KTsKKworICAgICAgaWYgKGZyYW1lX3R5cGUgPT0ga1ZpZGVvRnJhbWVLZXkpIHsKKyAgICAg
ICAgZ2VuZXJpY19kZXNjcmlwdG9yLlNldFJlc29sdXRpb24odmlkZW9faGVhZGVyLndpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb19oZWFkZXIuaGVp
Z2h0KTsKKyAgICAgIH0KICAgICB9CiAgICAgcGFja2V0LT5TZXRFeHRlbnNpb248UnRwR2VuZXJp
Y0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbj4oCiAgICAgICAgIGdlbmVyaWNfZGVzY3JpcHRvcik7
CkBAIC0xMTUsNyArMTIyLDkgQEAgYm9vbCBNaW5pbWl6ZURlc2NyaXB0b3IoY29uc3QgUlRQVmlk
ZW9IZWFkZXImIGZ1bGwsIFJUUFZpZGVvSGVhZGVyKiBtaW5pbWl6ZWQpIHsKIAogUlRQU2VuZGVy
VmlkZW86OlJUUFNlbmRlclZpZGVvKENsb2NrKiBjbG9jaywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSVFBTZW5kZXIqIHJ0cF9zZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmxleGZlY1NlbmRlciogZmxleGZlY19zZW5kZXIpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmxleGZlY1NlbmRlciogZmxleGZlY19zZW5kZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5
cHRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlcXVpcmVfZnJhbWVf
ZW5jcnlwdGlvbikKICAgICA6IHJ0cF9zZW5kZXJfKHJ0cF9zZW5kZXIpLAogICAgICAgY2xvY2tf
KGNsb2NrKSwKICAgICAgIHZpZGVvX3R5cGVfKGtWaWRlb0NvZGVjR2VuZXJpYyksCkBAIC0xMjgs
NyArMTM3LDkgQEAgUlRQU2VuZGVyVmlkZW86OlJUUFNlbmRlclZpZGVvKENsb2NrKiBjbG9jaywK
ICAgICAgIGRlbHRhX2ZlY19wYXJhbXNfezAsIDEsIGtGZWNNYXNrUmFuZG9tfSwKICAgICAgIGtl
eV9mZWNfcGFyYW1zX3swLCAxLCBrRmVjTWFza1JhbmRvbX0sCiAgICAgICBmZWNfYml0cmF0ZV8o
MTAwMCwgUmF0ZVN0YXRpc3RpY3M6OmtCcHNTY2FsZSksCi0gICAgICB2aWRlb19iaXRyYXRlXygx
MDAwLCBSYXRlU3RhdGlzdGljczo6a0Jwc1NjYWxlKSB7fQorICAgICAgdmlkZW9fYml0cmF0ZV8o
MTAwMCwgUmF0ZVN0YXRpc3RpY3M6OmtCcHNTY2FsZSksCisgICAgICBmcmFtZV9lbmNyeXB0b3Jf
KGZyYW1lX2VuY3J5cHRvciksCisgICAgICByZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb25fKHJlcXVp
cmVfZnJhbWVfZW5jcnlwdGlvbikge30KIAogUlRQU2VuZGVyVmlkZW86On5SVFBTZW5kZXJWaWRl
bygpIHt9CiAKQEAgLTE0MiwxOCArMTUzLDE4IEBAIFZpZGVvQ29kZWNUeXBlIFJUUFNlbmRlclZp
ZGVvOjpWaWRlb0NvZGVjVHlwZSgpIGNvbnN0IHsKIAogLy8gU3RhdGljLgogUnRwVXRpbGl0eTo6
UGF5bG9hZCogUlRQU2VuZGVyVmlkZW86OkNyZWF0ZVZpZGVvUGF5bG9hZCgKLSAgICBjb25zdCBj
aGFyIHBheWxvYWRfbmFtZVtSVFBfUEFZTE9BRF9OQU1FX1NJWkVdLAorICAgIGFic2w6OnN0cmlu
Z192aWV3IHBheWxvYWRfbmFtZSwKICAgICBpbnQ4X3QgcGF5bG9hZF90eXBlKSB7CiAgIGVudW0g
VmlkZW9Db2RlY1R5cGUgdmlkZW9fdHlwZSA9IGtWaWRlb0NvZGVjR2VuZXJpYzsKLSAgaWYgKFJ0
cFV0aWxpdHk6OlN0cmluZ0NvbXBhcmUocGF5bG9hZF9uYW1lLCAiVlA4IiwgMykpIHsKKyAgaWYg
KGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGF5bG9hZF9uYW1lLCAiVlA4IikpIHsKICAgICB2aWRl
b190eXBlID0ga1ZpZGVvQ29kZWNWUDg7Ci0gIH0gZWxzZSBpZiAoUnRwVXRpbGl0eTo6U3RyaW5n
Q29tcGFyZShwYXlsb2FkX25hbWUsICJWUDkiLCAzKSkgeworICB9IGVsc2UgaWYgKGFic2w6OkVx
dWFsc0lnbm9yZUNhc2UocGF5bG9hZF9uYW1lLCAiVlA5IikpIHsKICAgICB2aWRlb190eXBlID0g
a1ZpZGVvQ29kZWNWUDk7Ci0gIH0gZWxzZSBpZiAoUnRwVXRpbGl0eTo6U3RyaW5nQ29tcGFyZShw
YXlsb2FkX25hbWUsICJIMjY0IiwgNCkpIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKHBheWxvYWRfbmFtZSwgIkgyNjQiKSkgewogICAgIHZpZGVvX3R5cGUgPSBrVmlkZW9D
b2RlY0gyNjQ7Ci0gIH0gZWxzZSBpZiAoUnRwVXRpbGl0eTo6U3RyaW5nQ29tcGFyZShwYXlsb2Fk
X25hbWUsICJJNDIwIiwgNCkpIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KHBheWxvYWRfbmFtZSwgIkk0MjAiKSkgewogICAgIHZpZGVvX3R5cGUgPSBrVmlkZW9Db2RlY0dl
bmVyaWM7Ci0gIH0gZWxzZSBpZiAoUnRwVXRpbGl0eTo6U3RyaW5nQ29tcGFyZShwYXlsb2FkX25h
bWUsICJzdGVyZW8iLCA2KSkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uo
cGF5bG9hZF9uYW1lLCAic3RlcmVvIikpIHsKICAgICB2aWRlb190eXBlID0ga1ZpZGVvQ29kZWNH
ZW5lcmljOwogICB9IGVsc2UgewogICAgIHZpZGVvX3R5cGUgPSBrVmlkZW9Db2RlY0dlbmVyaWM7
CkBAIC0zODcsMjAgKzM5OCwxOSBAQCBib29sIFJUUFNlbmRlclZpZGVvOjpTZW5kVmlkZW8oZW51
bSBWaWRlb0NvZGVjVHlwZSB2aWRlb190eXBlLAogICBpbnQgcGFja2V0X2NhcGFjaXR5ID0gcnRw
X3NlbmRlcl8tPk1heFJ0cFBhY2tldFNpemUoKSAtIGZlY19wYWNrZXRfb3ZlcmhlYWQgLQogICAg
ICAgICAgICAgICAgICAgICAgICAgKHJ0cF9zZW5kZXJfLT5SdHhTdGF0dXMoKSA/IGtSdHhIZWFk
ZXJTaXplIDogMCk7CiAKLSAgYXV0byBjcmVhdGVfcGFja2V0ID0gWyZdIHsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBydHBfcGFja2V0ID0gcnRwX3NlbmRlcl8tPkFsbG9j
YXRlUGFja2V0KCk7Ci0gICAgUlRDX0RDSEVDS19MRShwYWNrZXRfY2FwYWNpdHksIHJ0cF9wYWNr
ZXQtPmNhcGFjaXR5KCkpOwotCi0gICAgcnRwX3BhY2tldC0+U2V0UGF5bG9hZFR5cGUocGF5bG9h
ZF90eXBlKTsKLSAgICBydHBfcGFja2V0LT5TZXRUaW1lc3RhbXAocnRwX3RpbWVzdGFtcCk7Ci0g
ICAgcnRwX3BhY2tldC0+c2V0X2NhcHR1cmVfdGltZV9tcyhjYXB0dXJlX3RpbWVfbXMpOwotICAg
IHJldHVybiBydHBfcGFja2V0OwotICB9OworICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9T
ZW5kPiBzaW5nbGVfcGFja2V0ID0KKyAgICAgIHJ0cF9zZW5kZXJfLT5BbGxvY2F0ZVBhY2tldCgp
OworICBSVENfRENIRUNLX0xFKHBhY2tldF9jYXBhY2l0eSwgc2luZ2xlX3BhY2tldC0+Y2FwYWNp
dHkoKSk7CisgIHNpbmdsZV9wYWNrZXQtPlNldFBheWxvYWRUeXBlKHBheWxvYWRfdHlwZSk7Cisg
IHNpbmdsZV9wYWNrZXQtPlNldFRpbWVzdGFtcChydHBfdGltZXN0YW1wKTsKKyAgc2luZ2xlX3Bh
Y2tldC0+c2V0X2NhcHR1cmVfdGltZV9tcyhjYXB0dXJlX3RpbWVfbXMpOwogCi0gIGF1dG8gZmly
c3RfcGFja2V0ID0gY3JlYXRlX3BhY2tldCgpOwotICBhdXRvIG1pZGRsZV9wYWNrZXQgPSBhYnNs
OjptYWtlX3VuaXF1ZTxSdHBQYWNrZXRUb1NlbmQ+KCpmaXJzdF9wYWNrZXQpOwotICBhdXRvIGxh
c3RfcGFja2V0ID0gYWJzbDo6bWFrZV91bmlxdWU8UnRwUGFja2V0VG9TZW5kPigqZmlyc3RfcGFj
a2V0KTsKKyAgYXV0byBmaXJzdF9wYWNrZXQgPSBhYnNsOjptYWtlX3VuaXF1ZTxSdHBQYWNrZXRU
b1NlbmQ+KCpzaW5nbGVfcGFja2V0KTsKKyAgYXV0byBtaWRkbGVfcGFja2V0ID0gYWJzbDo6bWFr
ZV91bmlxdWU8UnRwUGFja2V0VG9TZW5kPigqc2luZ2xlX3BhY2tldCk7CisgIGF1dG8gbGFzdF9w
YWNrZXQgPSBhYnNsOjptYWtlX3VuaXF1ZTxSdHBQYWNrZXRUb1NlbmQ+KCpzaW5nbGVfcGFja2V0
KTsKICAgLy8gU2ltcGxlc3Qgd2F5IHRvIGVzdGltYXRlIGhvdyBtdWNoIGV4dGVuc2lvbnMgd291
bGQgb2NjdXB5IGlzIHRvIHNldCB0aGVtLgorICBBZGRSdHBIZWFkZXJFeHRlbnNpb25zKCp2aWRl
b19oZWFkZXIsIGZyYW1lX3R5cGUsIHNldF92aWRlb19yb3RhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAvKmZpcnN0PSovdHJ1ZSwgLypsYXN0PSovdHJ1ZSwgc2luZ2xlX3BhY2tldC5n
ZXQoKSk7CiAgIEFkZFJ0cEhlYWRlckV4dGVuc2lvbnMoKnZpZGVvX2hlYWRlciwgZnJhbWVfdHlw
ZSwgc2V0X3ZpZGVvX3JvdGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgIC8qZmlyc3Q9
Ki90cnVlLCAvKmxhc3Q9Ki9mYWxzZSwgZmlyc3RfcGFja2V0LmdldCgpKTsKICAgQWRkUnRwSGVh
ZGVyRXh0ZW5zaW9ucygqdmlkZW9faGVhZGVyLCBmcmFtZV90eXBlLCBzZXRfdmlkZW9fcm90YXRp
b24sCkBAIC00MDgsMTIgKzQxOCwxNyBAQCBib29sIFJUUFNlbmRlclZpZGVvOjpTZW5kVmlkZW8o
ZW51bSBWaWRlb0NvZGVjVHlwZSB2aWRlb190eXBlLAogICBBZGRSdHBIZWFkZXJFeHRlbnNpb25z
KCp2aWRlb19oZWFkZXIsIGZyYW1lX3R5cGUsIHNldF92aWRlb19yb3RhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKmZpcnN0PSovZmFsc2UsIC8qbGFzdD0qL3RydWUsIGxhc3RfcGFj
a2V0LmdldCgpKTsKIAorICBSVENfRENIRUNLX0dUKHBhY2tldF9jYXBhY2l0eSwgc2luZ2xlX3Bh
Y2tldC0+aGVhZGVyc19zaXplKCkpOwogICBSVENfRENIRUNLX0dUKHBhY2tldF9jYXBhY2l0eSwg
Zmlyc3RfcGFja2V0LT5oZWFkZXJzX3NpemUoKSk7CiAgIFJUQ19EQ0hFQ0tfR1QocGFja2V0X2Nh
cGFjaXR5LCBtaWRkbGVfcGFja2V0LT5oZWFkZXJzX3NpemUoKSk7CiAgIFJUQ19EQ0hFQ0tfR1Qo
cGFja2V0X2NhcGFjaXR5LCBsYXN0X3BhY2tldC0+aGVhZGVyc19zaXplKCkpOwogICBSdHBQYWNr
ZXRpemVyOjpQYXlsb2FkU2l6ZUxpbWl0cyBsaW1pdHM7CiAgIGxpbWl0cy5tYXhfcGF5bG9hZF9s
ZW4gPSBwYWNrZXRfY2FwYWNpdHkgLSBtaWRkbGVfcGFja2V0LT5oZWFkZXJzX3NpemUoKTsKIAor
ICBSVENfRENIRUNLX0dFKHNpbmdsZV9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpLCBtaWRkbGVfcGFj
a2V0LT5oZWFkZXJzX3NpemUoKSk7CisgIGxpbWl0cy5zaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9s
ZW4gPQorICAgICAgc2luZ2xlX3BhY2tldC0+aGVhZGVyc19zaXplKCkgLSBtaWRkbGVfcGFja2V0
LT5oZWFkZXJzX3NpemUoKTsKKwogICBSVENfRENIRUNLX0dFKGZpcnN0X3BhY2tldC0+aGVhZGVy
c19zaXplKCksIG1pZGRsZV9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpKTsKICAgbGltaXRzLmZpcnN0
X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0KICAgICAgIGZpcnN0X3BhY2tldC0+aGVhZGVyc19zaXpl
KCkgLSBtaWRkbGVfcGFja2V0LT5oZWFkZXJzX3NpemUoKTsKQEAgLTQyNCw5ICs0MzksNDIgQEAg
Ym9vbCBSVFBTZW5kZXJWaWRlbzo6U2VuZFZpZGVvKGVudW0gVmlkZW9Db2RlY1R5cGUgdmlkZW9f
dHlwZSwKIAogICBSVFBWaWRlb0hlYWRlciBtaW5pbWl6ZWRfdmlkZW9faGVhZGVyOwogICBjb25z
dCBSVFBWaWRlb0hlYWRlciogcGFja2V0aXplX3ZpZGVvX2hlYWRlciA9IHZpZGVvX2hlYWRlcjsK
LSAgaWYgKGZpcnN0X3BhY2tldC0+SGFzRXh0ZW5zaW9uPFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0
b3JFeHRlbnNpb24+KCkgJiYKLSAgICAgIE1pbmltaXplRGVzY3JpcHRvcigqdmlkZW9faGVhZGVy
LCAmbWluaW1pemVkX3ZpZGVvX2hlYWRlcikpIHsKLSAgICBwYWNrZXRpemVfdmlkZW9faGVhZGVy
ID0gJm1pbmltaXplZF92aWRlb19oZWFkZXI7CisgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4
X3Q+IGdlbmVyaWNfZGVzY3JpcHRvcl9yYXcgPQorICAgICAgZmlyc3RfcGFja2V0LT5HZXRSYXdF
eHRlbnNpb248UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbj4oKTsKKyAgaWYgKCFn
ZW5lcmljX2Rlc2NyaXB0b3JfcmF3LmVtcHR5KCkpIHsKKyAgICBpZiAoTWluaW1pemVEZXNjcmlw
dG9yKCp2aWRlb19oZWFkZXIsICZtaW5pbWl6ZWRfdmlkZW9faGVhZGVyKSkgeworICAgICAgcGFj
a2V0aXplX3ZpZGVvX2hlYWRlciA9ICZtaW5pbWl6ZWRfdmlkZW9faGVhZGVyOworICAgIH0KKyAg
fQorCisgIC8vIFRPRE8oYmVud3JpZ2h0QHdlYnJ0Yy5vcmcpIC0gQWxsb2NhdGUgZW5vdWdoIHRv
IGFsd2F5cyBlbmNyeXB0IGlubGluZS4KKyAgcnRjOjpCdWZmZXIgZW5jcnlwdGVkX3ZpZGVvX3Bh
eWxvYWQ7CisgIGlmIChmcmFtZV9lbmNyeXB0b3JfICE9IG51bGxwdHIpIHsKKyAgICBpZiAoZ2Vu
ZXJpY19kZXNjcmlwdG9yX3Jhdy5lbXB0eSgpKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgY29uc3Qgc2l6ZV90IG1heF9jaXBoZXJ0ZXh0X3NpemUgPQorICAgICAgICBmcmFt
ZV9lbmNyeXB0b3JfLT5HZXRNYXhDaXBoZXJ0ZXh0Qnl0ZVNpemUoY3JpY2tldDo6TUVESUFfVFlQ
RV9WSURFTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBheWxvYWRfc2l6ZSk7CisgICAgZW5jcnlwdGVkX3ZpZGVvX3BheWxvYWQuU2V0U2l6ZSht
YXhfY2lwaGVydGV4dF9zaXplKTsKKworICAgIHNpemVfdCBieXRlc193cml0dGVuID0gMDsKKyAg
ICBpZiAoZnJhbWVfZW5jcnlwdG9yXy0+RW5jcnlwdCgKKyAgICAgICAgICAgIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfVklERU8sIGZpcnN0X3BhY2tldC0+U3NyYygpLAorICAgICAgICAgICAgLyphZGRp
dGlvbmFsX2RhdGE9Ki9udWxscHRyLAorICAgICAgICAgICAgcnRjOjpNYWtlQXJyYXlWaWV3KHBh
eWxvYWRfZGF0YSwgcGF5bG9hZF9zaXplKSwKKyAgICAgICAgICAgIGVuY3J5cHRlZF92aWRlb19w
YXlsb2FkLCAmYnl0ZXNfd3JpdHRlbikgIT0gMCkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGVuY3J5cHRlZF92aWRlb19wYXlsb2FkLlNldFNpemUoYnl0ZXNfd3JpdHRlbik7
CisgICAgcGF5bG9hZF9kYXRhID0gZW5jcnlwdGVkX3ZpZGVvX3BheWxvYWQuZGF0YSgpOworICAg
IHBheWxvYWRfc2l6ZSA9IGVuY3J5cHRlZF92aWRlb19wYXlsb2FkLnNpemUoKTsKKyAgfSBlbHNl
IGlmIChyZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb25fKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5H
KQorICAgICAgICA8PCAiTm8gRnJhbWVFbmNyeXB0b3IgaXMgYXR0YWNoZWQgdG8gdGhpcyB2aWRl
byBzZW5kaW5nIHN0cmVhbSBidXQgIgorICAgICAgICA8PCAib25lIGlzIHJlcXVpcmVkIHNpbmNl
IHJlcXVpcmVfZnJhbWVfZW5jcnlwdG9yIGlzIHNldCI7CiAgIH0KIAogICBzdGQ6OnVuaXF1ZV9w
dHI8UnRwUGFja2V0aXplcj4gcGFja2V0aXplciA9IFJ0cFBhY2tldGl6ZXI6OkNyZWF0ZSgKQEAg
LTQ0NywxNiArNDk1LDkgQEAgYm9vbCBSVFBTZW5kZXJWaWRlbzo6U2VuZFZpZGVvKGVudW0gVmlk
ZW9Db2RlY1R5cGUgdmlkZW9fdHlwZSwKICAgICBpbnQgZXhwZWN0ZWRfcGF5bG9hZF9jYXBhY2l0
eTsKICAgICAvLyBDaG9vc2UgcmlnaHQgcGFja2V0IHRlbXBsYXRlOgogICAgIGlmIChudW1fcGFj
a2V0cyA9PSAxKSB7Ci0gICAgICAvLyBObyBwcmVwYXJlZCB0ZW1wbGF0ZSwgY3JlYXRlIGEgbmV3
IHBhY2tldC4KLSAgICAgIHBhY2tldCA9IGNyZWF0ZV9wYWNrZXQoKTsKLSAgICAgIEFkZFJ0cEhl
YWRlckV4dGVuc2lvbnMoKnZpZGVvX2hlYWRlciwgZnJhbWVfdHlwZSwgc2V0X3ZpZGVvX3JvdGF0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmZpcnN0PSovdHJ1ZSwgLypsYXN0
PSovdHJ1ZSwgcGFja2V0LmdldCgpKTsKLSAgICAgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzc5
OTApOiBSZXZpc2l0IHRoaXMgY2FzZSB3aGVuIHR3byBieXRlIGhlYWRlcgotICAgICAgLy8gZXh0
ZW5zaW9uIGFyZSBpbXBsZW1lbnRlZCBiZWNhdXNlIHRoZW4gc2luZ2xlIHBhY2tldCBtaWdodCBu
ZWVkIG1vcmUKLSAgICAgIC8vIHNwYWNlIGZvciBleHRlbnNpb25zIHRoYW4gc3VtIG9mIGZpcnN0
IGFuZCBsYXN0IHBhY2tldCByZWR1Y3Rpb25zLgotICAgICAgZXhwZWN0ZWRfcGF5bG9hZF9jYXBh
Y2l0eSA9IGxpbWl0cy5tYXhfcGF5bG9hZF9sZW4gLQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiAtCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzLmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW47
CisgICAgICBwYWNrZXQgPSBzdGQ6Om1vdmUoc2luZ2xlX3BhY2tldCk7CisgICAgICBleHBlY3Rl
ZF9wYXlsb2FkX2NhcGFjaXR5ID0KKyAgICAgICAgICBsaW1pdHMubWF4X3BheWxvYWRfbGVuIC0g
bGltaXRzLnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbjsKICAgICB9IGVsc2UgaWYgKGkgPT0g
MCkgewogICAgICAgcGFja2V0ID0gc3RkOjptb3ZlKGZpcnN0X3BhY2tldCk7CiAgICAgICBleHBl
Y3RlZF9wYXlsb2FkX2NhcGFjaXR5ID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJf
dmlkZW8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdmlkZW8uaAppbmRleCBjZTdiZTE2MTQ5YzNi
MzdhNDRkNzQ2OTMxMTdkNGRjNGVhNjM5YzlhLi5kM2E4OThiNDBhMzA2YTdkYmM0MTA2MDI5Yzk5
ZGU2MWZlYTUzOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3ZpZGVvLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3NlbmRlcl92aWRlby5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVk
ZSA8bWFwPgogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJp
bmdfdmlldy5oIgogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3NlbmRlci5oIgpAQCAtMjksNiArMzAsOCBAQAog
I2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKKworY2xhc3MgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U7CiBjbGFzcyBSdHBQYWNrZXRp
emVyOwogY2xhc3MgUnRwUGFja2V0VG9TZW5kOwogCkBAIC0zOCwxNCArNDEsMTUgQEAgY2xhc3Mg
UlRQU2VuZGVyVmlkZW8gewogCiAgIFJUUFNlbmRlclZpZGVvKENsb2NrKiBjbG9jaywKICAgICAg
ICAgICAgICAgICAgUlRQU2VuZGVyKiBydHBTZW5kZXIsCi0gICAgICAgICAgICAgICAgIEZsZXhm
ZWNTZW5kZXIqIGZsZXhmZWNfc2VuZGVyKTsKKyAgICAgICAgICAgICAgICAgRmxleGZlY1NlbmRl
ciogZmxleGZlY19zZW5kZXIsCisgICAgICAgICAgICAgICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJm
YWNlKiBmcmFtZV9lbmNyeXB0b3IsCisgICAgICAgICAgICAgICAgIGJvb2wgcmVxdWlyZV9mcmFt
ZV9lbmNyeXB0aW9uKTsKICAgdmlydHVhbCB+UlRQU2VuZGVyVmlkZW8oKTsKIAogICB2aXJ0dWFs
IGVudW0gVmlkZW9Db2RlY1R5cGUgVmlkZW9Db2RlY1R5cGUoKSBjb25zdDsKIAotICBzdGF0aWMg
UnRwVXRpbGl0eTo6UGF5bG9hZCogQ3JlYXRlVmlkZW9QYXlsb2FkKAotICAgICAgY29uc3QgY2hh
ciBwYXlsb2FkX25hbWVbUlRQX1BBWUxPQURfTkFNRV9TSVpFXSwKLSAgICAgIGludDhfdCBwYXls
b2FkX3R5cGUpOworICBzdGF0aWMgUnRwVXRpbGl0eTo6UGF5bG9hZCogQ3JlYXRlVmlkZW9QYXls
b2FkKGFic2w6OnN0cmluZ192aWV3IHBheWxvYWRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ4X3QgcGF5bG9hZF90eXBlKTsKIAogICBi
b29sIFNlbmRWaWRlbyhlbnVtIFZpZGVvQ29kZWNUeXBlIHZpZGVvX3R5cGUsCiAgICAgICAgICAg
ICAgICAgIEZyYW1lVHlwZSBmcmFtZV90eXBlLApAQCAtMTU4LDYgKzE2MiwxMyBAQCBjbGFzcyBS
VFBTZW5kZXJWaWRlbyB7CiAgICAgICBSVENfR1VBUkRFRF9CWShzdGF0c19jcml0Xyk7CiAKICAg
T25lVGltZUV2ZW50IGZpcnN0X2ZyYW1lX3NlbnRfOworCisgIC8vIEUyRUUgQ3VzdG9tIFZpZGVv
IEZyYW1lIEVuY3J5cHRvciAob3B0aW9uYWwpCisgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBj
b25zdCBmcmFtZV9lbmNyeXB0b3JfID0gbnVsbHB0cjsKKyAgLy8gSWYgc2V0IHRvIHRydWUgd2ls
bCByZXF1aXJlIGFsbCBvdXRnb2luZyBmcmFtZXMgdG8gcGFzcyB0aHJvdWdoIGFuCisgIC8vIGlu
aXRpYWxpemVkIGZyYW1lX2VuY3J5cHRvcl8gYmVmb3JlIGJlaW5nIHNlbnQgb3V0IG9mIHRoZSBu
ZXR3b3JrLgorICAvLyBPdGhlcndpc2UgdGhlc2UgcGF5bG9hZHMgd2lsbCBiZSBkcm9wcGVkLgor
ICBib29sIHJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbl87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF91dGlsaXR5LmNjCmluZGV4IDIyODU3MmY4ZDE2OWMyMWNiMGI3NmQ2YmEwNDUzOWNlZTQ2NDdj
ZjMuLjQ0YzY3MWY1MDY3ZWFmMzdiZmFkZjhmOTYwYWZiOGZjOGM1M2NmODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF91dGlsaXR5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91dGlsaXR5LmNjCkBA
IC0xMCw5ICsxMCwxOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X3V0aWxpdHkuaCIKIAorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgor
CisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9f
Y29udGVudF90eXBlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lX21hcmtpbmcu
aCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fcm90YXRpb24uaCIKKyNpbmNsdWRlICJhcGkv
dmlkZW8vdmlkZW9fdGltaW5nLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRl
L3J0cF9jdm8uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25z
LmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2ludGVyZmFjZS9jb21t
b25fY29uc3RhbnRzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAK
QEAgLTMzLDEwICs0Myw2IEBAIGVudW0gewogICogTWlzYyB1dGlsaXR5IHJvdXRpbmVzCiAgKi8K
IAotYm9vbCBTdHJpbmdDb21wYXJlKGNvbnN0IGNoYXIqIHN0cjEsIGNvbnN0IGNoYXIqIHN0cjIs
IGNvbnN0IHVpbnQzMl90IGxlbmd0aCkgewotICByZXR1cm4gX3N0cm5pY21wKHN0cjEsIHN0cjIs
IGxlbmd0aCkgPT0gMDsKLX0KLQogc2l6ZV90IFdvcmQzMkFsaWduKHNpemVfdCBzaXplKSB7CiAg
IHVpbnQzMl90IHJlbWFpbmRlciA9IHNpemUgJSA0OwogICBpZiAocmVtYWluZGVyICE9IDApCkBA
IC01MDEsNiArNTA3LDEwIEBAIHZvaWQgUnRwSGVhZGVyUGFyc2VyOjpQYXJzZU9uZUJ5dGVFeHRl
bnNpb25IZWFkZXIoCiAgICAgICAgICAgUlRDX0xPRyhXQVJOSU5HKQogICAgICAgICAgICAgICA8
PCAiUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvciB1bnN1cHBvcnRlZCBieSBydHAgaGVhZGVyIHBh
cnNlci4iOwogICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtSdHBFeHRlbnNpb25Db2xv
clNwYWNlOgorICAgICAgICAgIFJUQ19MT0coV0FSTklORykKKyAgICAgICAgICAgICAgPDwgIlJ0
cEV4dGVuc2lvbkNvbG9yU3BhY2UgdW5zdXBwb3J0ZWQgYnkgcnRwIGhlYWRlciBwYXJzZXIuIjsK
KyAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBrUnRwRXh0ZW5zaW9uTm9uZToKICAgICAg
ICAgY2FzZSBrUnRwRXh0ZW5zaW9uTnVtYmVyT2ZFeHRlbnNpb25zOiB7CiAgICAgICAgICAgUlRD
X05PVFJFQUNIRUQoKSA8PCAiSW52YWxpZCBleHRlbnNpb24gdHlwZTogIiA8PCB0eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX3V0aWxpdHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91dGlsaXR5LmgK
aW5kZXggNzYyZjk2NGEyZTJmMzFlYWFjZTE1NDg1OTYwZjM4OTFlM2RiOTZiZi4uNDA4NTE3NDgx
YmI0OTVlNTQyNGViNjZjZjBkMDc4ZTVkMjRjYjgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X3V0aWxpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5oCkBAIC0xMSwxNCArMTEsMTQg
QEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX1VUSUxJVFlfSF8KICNkZWZp
bmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX1VUSUxJVFlfSF8KIAotI2luY2x1ZGUgPGNz
dHJpbmc+Ci0jaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGFs
Z29yaXRobT4KIAotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZWNlaXZlX3N0
YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKyNpbmNs
dWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKKyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9y
dHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2lu
Y2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9ydGNwX2NvbmZpZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yNywxNiArMjcsMTUgQEAgY29uc3QgdWludDhf
dCBrUnRwTWFya2VyQml0TWFzayA9IDB4ODA7CiBuYW1lc3BhY2UgUnRwVXRpbGl0eSB7CiAKIHN0
cnVjdCBQYXlsb2FkIHsKLSAgUGF5bG9hZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBQYXlsb2Fk
VW5pb24mIHB1KSA6IHR5cGVTcGVjaWZpYyhwdSkgewotICAgIHN0ZDo6c3RybmNweSh0aGlzLT5u
YW1lLCBuYW1lLCBzaXplb2YodGhpcy0+bmFtZSkgLSAxKTsKLSAgICB0aGlzLT5uYW1lW3NpemVv
Zih0aGlzLT5uYW1lKSAtIDFdID0gJ1wwJzsKKyAgUGF5bG9hZChhYnNsOjpzdHJpbmdfdmlldyBw
YXlsb2FkX25hbWUsIGNvbnN0IFBheWxvYWRVbmlvbiYgcHUpCisgICAgICA6IHR5cGVTcGVjaWZp
YyhwdSkgeworICAgIHNpemVfdCBjbGlwcGVkX3NpemUgPSBwYXlsb2FkX25hbWUuY29weShuYW1l
LCBzaXplb2YobmFtZSkgLSAxKTsKKyAgICBuYW1lW2NsaXBwZWRfc2l6ZV0gPSAnXDAnOwogICB9
CiAgIGNoYXIgbmFtZVtSVFBfUEFZTE9BRF9OQU1FX1NJWkVdOwogICBQYXlsb2FkVW5pb24gdHlw
ZVNwZWNpZmljOwogfTsKIAotYm9vbCBTdHJpbmdDb21wYXJlKGNvbnN0IGNoYXIqIHN0cjEsIGNv
bnN0IGNoYXIqIHN0cjIsIGNvbnN0IHVpbnQzMl90IGxlbmd0aCk7Ci0KIC8vIFJvdW5kIHVwIHRv
IHRoZSBuZWFyZXN0IHNpemUgdGhhdCBpcyBhIG11bHRpcGxlIG9mIDQuCiBzaXplX3QgV29yZDMy
QWxpZ24oc2l6ZV90IHNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdmlkZW9faGVh
ZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX3ZpZGVvX2hlYWRlci5jYwppbmRleCBhM2VlOGJhYTgzZTEz
YWZiZDU1ZjUyODkwMWMyOTAzYmZjZjhmYWY3Li5iYjk0MTNkZGQ1ZTI4YTg5ZjM5ZDc3YzM0NTJh
YjFiZTNiYTYxNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdmlkZW9faGVhZGVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIuY2MKQEAgLTEyLDcgKzEyLDcgQEAKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKLVJUUFZpZGVvSGVhZGVyOjpSVFBWaWRlb0hlYWRlcigpIDogcGxh
eW91dF9kZWxheSgpLCB2aWRlb190aW1pbmcoKSB7fQorUlRQVmlkZW9IZWFkZXI6OlJUUFZpZGVv
SGVhZGVyKCkgOiB2aWRlb190aW1pbmcoKSB7fQogUlRQVmlkZW9IZWFkZXI6OlJUUFZpZGVvSGVh
ZGVyKGNvbnN0IFJUUFZpZGVvSGVhZGVyJiBvdGhlcikgPSBkZWZhdWx0OwogUlRQVmlkZW9IZWFk
ZXI6On5SVFBWaWRlb0hlYWRlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX3ZpZGVvX2hlYWRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3ZpZGVvX2hlYWRlci5oCmluZGV4IDI4
OGI3ZDAzYTAyNjBlNTJmM2RlMGUxMjU5N2M0NDY1ZWM2NmQwY2UuLjFjNzVmNTM5YTFlODZiYjYz
ZmYxYTcxN2UwZTFhYjI1NmRhNDczYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92aWRlb19o
ZWFkZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdmlkZW9faGVhZGVyLmgKQEAgLTEwLDggKzEwLDEy
IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9WSURFT19IRUFERVJfSF8K
ICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX1ZJREVPX0hFQURFUl9IXwogCisj
aW5jbHVkZSA8Y3N0ZGludD4KKwogI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2lubGluZWRfdmVj
dG9yLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFic2wv
dHlwZXMvdmFyaWFudC5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19jb2RlY190eXBlLmgi
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5oIgogI2luY2x1ZGUgImFw
aS92aWRlby92aWRlb19mcmFtZV9tYXJraW5nLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVv
X3JvdGF0aW9uLmgiCkBAIC01Niw3ICs2MCw3IEBAIHN0cnVjdCBSVFBWaWRlb0hlYWRlciB7CiAg
IHVpbnQ4X3Qgc2ltdWxjYXN0SWR4ID0gMDsKICAgVmlkZW9Db2RlY1R5cGUgY29kZWMgPSBWaWRl
b0NvZGVjVHlwZTo6a1ZpZGVvQ29kZWNHZW5lcmljOwogCi0gIFBsYXlvdXREZWxheSBwbGF5b3V0
X2RlbGF5OworICBQbGF5b3V0RGVsYXkgcGxheW91dF9kZWxheSA9IHstMSwgLTF9OwogICBWaWRl
b1NlbmRUaW1pbmcgdmlkZW9fdGltaW5nOwogICBGcmFtZU1hcmtpbmcgZnJhbWVfbWFya2luZzsK
ICAgUlRQVmlkZW9UeXBlSGVhZGVyIHZpZGVvX3R5cGVfaGVhZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvdGltZV91dGlsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdGltZV91dGlsLmNjCmluZGV4IDZhYzI4MGE2
MWRiN2U5M2U3NTdhOGNmN2E1ZDJjZTgwMGNhODU4ZDUuLmU2NTMyOWQwNmI3ODA1MmIyMDQwNTNi
MmZkOWRhNDU3MTYwZGUwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RpbWVfdXRpbC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS90aW1lX3V0aWwuY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgPGFs
Z29yaXRobT4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3RpbWV1dGlscy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTIyLDIwICsyMywyNyBA
QCBpbmxpbmUgaW50NjRfdCBEaXZpZGVSb3VuZFRvTmVhcmVzdChpbnQ2NF90IHgsIHVpbnQzMl90
IHkpIHsKICAgcmV0dXJuICh4ICsgeSAvIDIpIC8geTsKIH0KIAotaW50NjRfdCBOdHBPZmZzZXRV
cygpIHsKK2ludDY0X3QgTnRwT2Zmc2V0TXNDYWxsZWRPbmNlKCkgewogICBjb25zdGV4cHIgaW50
NjRfdCBrTnRwSmFuMTk3MFNlYyA9IDIyMDg5ODg4MDA7Ci0gIGludDY0X3QgY2xvY2tfdGltZSA9
IHJ0Yzo6VGltZU1pY3JvcygpOwotICBpbnQ2NF90IHV0Y190aW1lID0gcnRjOjpUaW1lVVRDTWlj
cm9zKCk7Ci0gIHJldHVybiB1dGNfdGltZSAtIGNsb2NrX3RpbWUgKyBrTnRwSmFuMTk3MFNlYyAq
IHJ0Yzo6a051bU1pY3Jvc2Vjc1BlclNlYzsKKyAgaW50NjRfdCBjbG9ja190aW1lID0gcnRjOjpU
aW1lTWlsbGlzKCk7CisgIGludDY0X3QgdXRjX3RpbWUgPSBydGM6OlRpbWVVVENNaWxsaXMoKTsK
KyAgcmV0dXJuIHV0Y190aW1lIC0gY2xvY2tfdGltZSArIGtOdHBKYW4xOTcwU2VjICogcnRjOjpr
TnVtTWlsbGlzZWNzUGVyU2VjOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKIAotTnRwVGltZSBUaW1l
TWljcm9zVG9OdHAoaW50NjRfdCB0aW1lX3VzKSB7CitpbnQ2NF90IE50cE9mZnNldE1zKCkgewog
ICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCBvbmNlLgotICBzdGF0aWMgaW50NjRfdCBudHBfb2Zm
c2V0X3VzID0gTnRwT2Zmc2V0VXMoKTsKKyAgc3RhdGljIGludDY0X3QgbnRwX29mZnNldF9tcyA9
IE50cE9mZnNldE1zQ2FsbGVkT25jZSgpOworICByZXR1cm4gbnRwX29mZnNldF9tczsKK30KIAot
ICBpbnQ2NF90IHRpbWVfbnRwX3VzID0gdGltZV91cyArIG50cF9vZmZzZXRfdXM7CitOdHBUaW1l
IFRpbWVNaWNyb3NUb050cChpbnQ2NF90IHRpbWVfdXMpIHsKKyAgLy8gU2luY2UgdGhpcyBkb2Vz
bid0IHJldHVybiBhIHdhbGxjbG9jayB0aW1lLCBidXQgb25seSBOVFAgcmVwcmVzZW50YXRpb24K
KyAgLy8gb2YgcnRjOjpUaW1lTWlsbGlzKCkgY2xvY2ssIHRoZSBleGFjdCBvZmZzZXQgZG9lc24n
dCBtYXR0ZXIuCisgIC8vIFRvIHNpbXBsaWZ5IGNvbnZlcnNpb25zIGJldHdlZW4gTlRQIGFuZCBS
VFAgdGltZSwgdGhpcyBvZmZzZXQgaXMKKyAgLy8gbGltaXRlZCB0byBtaWxsaXNlY29uZHMgaW4g
cmVzb2x1dGlvbi4KKyAgaW50NjRfdCB0aW1lX250cF91cyA9IHRpbWVfdXMgKyBOdHBPZmZzZXRN
cygpICogMTAwMDsKICAgUlRDX0RDSEVDS19HRSh0aW1lX250cF91cywgMCk7ICAvLyBUaW1lIGJl
Zm9yZSB5ZWFyIDE5MDAgaXMgdW5zdXBwb3J0ZWQuCiAKICAgLy8gVE9ETyhkYW5pbGNoYXApOiBD
b252ZXJ0IGJvdGggc2Vjb25kcyBhbmQgZnJhY3Rpb24gdG9nZXRoZXIgdXNpbmcgaW50MTI4CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS90aW1lX3V0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RpbWVfdXRpbC5oCmlu
ZGV4IDY3MjcyMmMwN2Y5OWFjMGZiNzI3NzMxNzc2MDBlMjdhNTA5ZTAxOTQuLjk0YjkxNDMxMGNj
ZjIwZGNhYjZjYTYwNDQ4YjI5YTlhZTFmMzkyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RpbWVf
dXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RpbWVfdXRpbC5oCkBAIC0yMiwxMyArMjIsMTQgQEAgbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAvLyBkaWZmZXJlbmNlIG9mIHRoZSBwYXNzZWQgdmFsdWVzLgogLy8g
QXMgYSByZXN1bHQgVGltZU1pY3Jvc1RvTnRwKHJ0Yzo6VGltZU1pY3JvcygpKSBkb2Vzbid0IGd1
YXJhbnRlZSB0byBtYXRjaAogLy8gc3lzdGVtIHRpbWUuCisvLyBIb3dldmVyLCBUaW1lTWljcm9z
VG9OdHAgR3VhcmFudGVlcyB0aGF0IHJldHVybmVkIE50cFRpbWUgd2lsbCBiZSBvZmZzZXR0ZWQK
Ky8vIGZyb20gcnRjOjpUaW1lTWljcm9zKCkgYnkgaW50ZWdyYWwgbnVtYmVyIG9mIG1pbGxpc2Vj
b25kcy4KKy8vIFVzZSBOdHBPZmZzZXRNcygpIHRvIGdldCB0aGF0IG9mZnNldCB2YWx1ZS4KIE50
cFRpbWUgVGltZU1pY3Jvc1RvTnRwKGludDY0X3QgdGltZV91cyk7CiAKLS8vIENvbnZlcnRzIE5U
UCB0aW1lc3RhbXAgdG8gUlRQIHRpbWVzdGFtcC4KLWlubGluZSB1aW50MzJfdCBOdHBUb1J0cChO
dHBUaW1lIG50cCwgdWludDMyX3QgZnJlcSkgewotICB1aW50MzJfdCB0bXAgPSAoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG50cC5mcmFjdGlvbnMoKSkgKiBmcmVxKSA+PiAzMjsKLSAgcmV0dXJuIG50
cC5zZWNvbmRzKCkgKiBmcmVxICsgdG1wOwotfQorLy8gRGlmZmVyZW5jZSBiZXR3ZWVuIE50cCB0
aW1lIGFuZCBsb2NhbCByZWxhdGl2ZSB0aW1lIHJldHVybmVkIGJ5CisvLyBydGM6OlRpbWVNaWNy
b3MoKQoraW50NjRfdCBOdHBPZmZzZXRNcygpOwogCiAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGNv
bXBhY3QgbnRwIHJlcHJlc2VudGF0aW9uOgogLy8gUkZDIDM1NTAsIFNlY3Rpb24gNC4gVGltZSBG
b3JtYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90bW1icl9oZWxwLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdG1t
YnJfaGVscC5jYwppbmRleCA4YWE0NTMwMjExMzUzYzVhZDU4NGI0YTljMmZmNzk1YTQ5Y2FiMGE2
Li4zMTVhNGMyMTIwOWVhZGJlMmJhZjgyMzYzZDM4ZjQ5YTE0MzE4ZWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS90bW1icl9oZWxwLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RtbWJyX2hlbHAuY2MKQEAgLTEw
LDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RtbWJyX2hl
bHAuaCIKIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDxsaW1pdHM+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RtbWJyX2hlbHAuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3RtbWJyX2hlbHAuaAppbmRleCA5MWFlYWY0NjQxMDFjMmNmYzBiMzZhODMyZTkwOTE4ZDA3
NGE3ZTA2Li5iZjg2ZjY1MjIyYzdlMDkyY2M4NDhiNDZlNDJjMGNiNDY2NWQxN2MwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS90bW1icl9oZWxwLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdG1tYnJfaGVscC5oCkBA
IC0xMSw3ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1RNTUJSX0hF
TFBfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfVE1NQlJfSEVMUF9IXwogCisj
aW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dmVjdG9yPgorCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdG1tYl9pdGVtLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2dlbmVyYXRvci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3VscGZlY19nZW5lcmF0b3IuY2MKaW5kZXggZTU3NzdlZGFiODUwNGIxNzQwYjE2NGE2YjE5
ZGZmOWFiODRkNjBjNS4uNTZkYWUyOTQ1MGU5NTBlZGQ1NmE3NWYzMzBlM2IwNTk4NTljYTNiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2dlbmVyYXRvci5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91
bHBmZWNfZ2VuZXJhdG9yLmNjCkBAIC0xMCwxMiArMTAsMTUgQEAKIAogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19nZW5lcmF0b3IuaCIKIAorI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0
aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVm
aW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24u
aCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJl
Y3Rpb25faW50ZXJuYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
dXRpbGl0eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS91bHBmZWNfZ2VuZXJhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfZ2VuZXJhdG9yLmgK
aW5kZXggZWZjNzUzZjRjNzQxMzIzMzFhZTZjNTM1N2NjY2NjMmI5ZWNlOTYzNC4uNzRhMWQ4MDI1
NmVhOWM5YzNiOTY1NjRjYjMwZDdhYmFhZjE5Nzg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxw
ZmVjX2dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19nZW5lcmF0b3IuaApAQCAtMTEs
MTAgKzExLDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1VMUEZFQ19HRU5F
UkFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfVUxQRkVDX0dFTkVSQVRP
Ul9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVk
ZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVk
ZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9mZWNfdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfaGVhZGVyX3JlYWRlcl93cml0
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuY2MKaW5kZXggYzU0
ZDNjZGQ4ZjkwYjFmMzQxMjRjOWZkNDg5ZTRiMTgzYTBhYjE4MS4uMjJhZjdlNzczNjkwNGJiMjRk
OWI4Mzc2N2NiYjQ1YmJjOTczYzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2hlYWRl
cl9yZWFkZXJfd3JpdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19oZWFkZXJfcmVhZGVyX3dy
aXRlci5jYwpAQCAtMTAsMTEgKzEwLDEyIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS91bHBmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuaCIKIAotI2luY2x1ZGUgPHV0aWxp
dHk+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2Fy
ZF9lcnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19oZWFkZXJfcmVhZGVyX3dyaXRl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvdWxwZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmgKaW5kZXggZmM4M2Fm
ZGYwY2MwMjVhOTI5NjZiYTM1NWY2ZGU2YTZjYjc0NGJjMS4uYThiYjczN2RiYjU4ZGEwNWViMmRl
YTY4ZTFlNWYyNjg1N2MyMGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2hlYWRlcl9y
ZWFkZXJfd3JpdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVy
LmgKQEAgLTExLDYgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfVUxQ
RkVDX0hFQURFUl9SRUFERVJfV1JJVEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09V
UkNFX1VMUEZFQ19IRUFERVJfUkVBREVSX1dSSVRFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+
CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZl
Y19yZWNlaXZlcl9pbXBsLmNjCmluZGV4IGViMDljOTU4MTM0MTNkNTc1OTVlYmQ5NGFiODk5Njg0
YWI4MzhkZDQuLjdkYTZiODhhMDA3Y2Y1ZGRlZmRjYThjMjE4ZWJiMTk3NWY4NmY2NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3VscGZlY19yZWNlaXZlcl9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3Vs
cGZlY19yZWNlaXZlcl9pbXBsLmNjCkBAIC0xMCwxMiArMTAsMTMgQEAKIAogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19yZWNlaXZlcl9pbXBsLmgiCiAKKyNpbmNsdWRl
IDxzdHJpbmcuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5j
bHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3VscGZlY19yZWNlaXZlcl9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1wbC5o
CmluZGV4IDk2MzY3ZGM3YWE4MjFlZGNjODU2ZTdlZGE2MWVlM2MzNTQzOWZhZjguLjA5NDMyNjYx
NjE4MDJjNzg0MmRkMjQ2MDg0YTZmOWM1MDc4ODcyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3Vs
cGZlY19yZWNlaXZlcl9pbXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX3JlY2VpdmVyX2ltcGwu
aApAQCAtMTEsOSArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfVUxQ
RkVDX1JFQ0VJVkVSX0lNUExfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfVUxQ
RkVDX1JFQ0VJVkVSX0lNUExfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRl
ICJhcGkvcnRwX2hlYWRlcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUv
cnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS91
bHBmZWNfcmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3
YXJkX2Vycm9yX2NvcnJlY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9CVUlMRC5nbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9CVUlMRC5n
bgppbmRleCAzMmRhMTA5NTBmMjkzZTYyNmE5MmY5N2Y2OGYwYWY1NWY3YWRjMDI4Li4xZDc4MGIw
ZTRhNzcwZmQxZWZmMzU2NWVmMTFlNjQ0OTU3MmY2OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvQlVJTEQuZ24K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy91
dGlsaXR5L0JVSUxELmduCkBAIC0yNiw3ICsyNiw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgidXRp
bGl0eSIpIHsKIAogICBkZXBzID0gWwogICAgICIuLjptb2R1bGVfYXBpIiwKLSAgICAiLi4vLi46
d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL2NvbW1vbl9hdWRpbyIsCiAgICAgIi4uLy4uL3J0
Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJvY2Vzc190aHJlYWRfaW1wbC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJv
Y2Vzc190aHJlYWRfaW1wbC5jYwppbmRleCA5NzI3MmRhMmJmMTBhNzZlMzJiYWYxMDVlMzRhYjdj
ZTNmNTE4ZTkwLi4yMGYyNmQ5MjdhMzk0NjM4OTg1NzJiYTlmNWY4NzcxMjZhNTRkNzk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3V0aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy91dGlsaXR5L3NvdXJjZS9wcm9j
ZXNzX3RocmVhZF9pbXBsLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L3V0aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuaCIKIAorI2luY2x1ZGUgPHN0cmlu
Zz4KKwogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGUuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVlLmgiCkBAIC00Miw5
ICs0NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyZWFkPiBQcm9jZXNzVGhyZWFkOjpD
cmVhdGUoY29uc3QgY2hhciogdGhyZWFkX25hbWUpIHsKIH0KIAogUHJvY2Vzc1RocmVhZEltcGw6
OlByb2Nlc3NUaHJlYWRJbXBsKGNvbnN0IGNoYXIqIHRocmVhZF9uYW1lKQotICAgIDogd2FrZV91
cF8oRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCi0gICAgICBzdG9wXyhmYWxzZSksCi0gICAgICB0
aHJlYWRfbmFtZV8odGhyZWFkX25hbWUpIHt9CisgICAgOiBzdG9wXyhmYWxzZSksIHRocmVhZF9u
YW1lXyh0aHJlYWRfbmFtZSkge30KIAogUHJvY2Vzc1RocmVhZEltcGw6On5Qcm9jZXNzVGhyZWFk
SW1wbCgpIHsKICAgUlRDX0RDSEVDSyh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVh
ZCgpKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBQcm9jZXNzVGhyZWFkSW1wbDo6U3RvcCgpIHsK
ICAgICBzdG9wXyA9IHRydWU7CiAgIH0KIAotICB3YWtlX3VwXy0+U2V0KCk7CisgIHdha2VfdXBf
LlNldCgpOwogCiAgIHRocmVhZF8tPlN0b3AoKTsKICAgc3RvcF8gPSBmYWxzZTsKQEAgLTEwMiw3
ICsxMDIsNyBAQCB2b2lkIFByb2Nlc3NUaHJlYWRJbXBsOjpXYWtlVXAoTW9kdWxlKiBtb2R1bGUp
IHsKICAgICAgICAgbS5uZXh0X2NhbGxiYWNrID0ga0NhbGxQcm9jZXNzSW1tZWRpYXRlbHk7CiAg
ICAgfQogICB9Ci0gIHdha2VfdXBfLT5TZXQoKTsKKyAgd2FrZV91cF8uU2V0KCk7CiB9CiAKIHZv
aWQgUHJvY2Vzc1RocmVhZEltcGw6OlBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxydGM6OlF1ZXVl
ZFRhc2s+IHRhc2spIHsKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFByb2Nlc3NUaHJlYWRJbXBs
OjpQb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpRdWV1ZWRUYXNrPiB0YXNrKSB7CiAgICAg
cnRjOjpDcml0U2NvcGUgbG9jaygmbG9ja18pOwogICAgIHF1ZXVlXy5wdXNoKHRhc2sucmVsZWFz
ZSgpKTsKICAgfQotICB3YWtlX3VwXy0+U2V0KCk7CisgIHdha2VfdXBfLlNldCgpOwogfQogCiB2
b2lkIFByb2Nlc3NUaHJlYWRJbXBsOjpSZWdpc3Rlck1vZHVsZShNb2R1bGUqIG1vZHVsZSwKQEAg
LTE0NSw3ICsxNDUsNyBAQCB2b2lkIFByb2Nlc3NUaHJlYWRJbXBsOjpSZWdpc3Rlck1vZHVsZShN
b2R1bGUqIG1vZHVsZSwKICAgLy8gV2FrZSB0aGUgdGhyZWFkIGNhbGxpbmcgUHJvY2Vzc1RocmVh
ZEltcGw6OlByb2Nlc3MoKSB0byB1cGRhdGUgdGhlCiAgIC8vIHdhaXRpbmcgdGltZS4gVGhlIHdh
aXRpbmcgdGltZSBmb3IgdGhlIGp1c3QgcmVnaXN0ZXJlZCBtb2R1bGUgbWF5IGJlCiAgIC8vIHNo
b3J0ZXIgdGhhbiBhbGwgb3RoZXIgcmVnaXN0ZXJlZCBtb2R1bGVzLgotICB3YWtlX3VwXy0+U2V0
KCk7CisgIHdha2VfdXBfLlNldCgpOwogfQogCiB2b2lkIFByb2Nlc3NUaHJlYWRJbXBsOjpEZVJl
Z2lzdGVyTW9kdWxlKE1vZHVsZSogbW9kdWxlKSB7CkBAIC0yMTUsNyArMjE1LDcgQEAgYm9vbCBQ
cm9jZXNzVGhyZWFkSW1wbDo6UHJvY2VzcygpIHsKIAogICBpbnQ2NF90IHRpbWVfdG9fd2FpdCA9
IG5leHRfY2hlY2twb2ludCAtIHJ0Yzo6VGltZU1pbGxpcygpOwogICBpZiAodGltZV90b193YWl0
ID4gMCkKLSAgICB3YWtlX3VwXy0+V2FpdChzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih0aW1l
X3RvX3dhaXQpKTsKKyAgICB3YWtlX3VwXy5XYWl0KHN0YXRpY19jYXN0PGludD4odGltZV90b193
YWl0KSk7CiAKICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nlc3Nf
dGhyZWFkX2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJvY2Vzc190aHJlYWRfaW1wbC5oCmluZGV4IGMxZjZl
ZDQ0NDc1ZDZkNzQ4NTcwNDI0N2ViNmJkMGRiYTI1ODFmZjEuLmZmZjIxZDA0NjE5YzAyOTY0MWE2
OTBjY2I0N2RkNjNmMjdmN2VmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJvY2Vzc190aHJlYWRf
aW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJvY2Vzc190aHJlYWRfaW1wbC5oCkBAIC0xMSwxNiArMTEs
MTkgQEAKICNpZm5kZWYgTU9EVUxFU19VVElMSVRZX1NPVVJDRV9QUk9DRVNTX1RIUkVBRF9JTVBM
X0hfCiAjZGVmaW5lIE1PRFVMRVNfVVRJTElUWV9TT1VSQ0VfUFJPQ0VTU19USFJFQURfSU1QTF9I
XwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8cXVldWU+CiAKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxl
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy91dGlsaXR5L2luY2x1ZGUvcHJvY2Vzc190aHJlYWQuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCi0jaW5jbHVkZSAic3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IApAQCAtNzIsNyArNzUsNyBAQCBjbGFzcyBQcm9jZXNzVGhyZWFkSW1wbCA6IHB1YmxpYyBQcm9j
ZXNzVGhyZWFkIHsKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gbG9ja187ICAvLyBVc2VkIHRvIGd1
YXJkIG1vZHVsZXNfLCB0YXNrc18gYW5kIHN0b3BfLgogCiAgIHJ0Yzo6VGhyZWFkQ2hlY2tlciB0
aHJlYWRfY2hlY2tlcl87Ci0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+IHdh
a2VfdXBfOworICBydGM6OkV2ZW50IHdha2VfdXBfOwogICAvLyBUT0RPKHBib3MpOiBSZW1vdmUg
dW5pcXVlX3B0ciBhbmQgc3RvcCByZWNyZWF0aW5nIHRoZSB0aHJlYWQuCiAgIHN0ZDo6dW5pcXVl
X3B0cjxydGM6OlBsYXRmb3JtVGhyZWFkPiB0aHJlYWRfOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNl
L3Byb2Nlc3NfdGhyZWFkX2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFk
X2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggZDU5MjZiMjZjM2UyY2E0YjA3NzIyNjYzY2FjNmJiMGM0
NmUxNWM3MC4uMTkxNTc5NjNhM2JiYmY5ZjkzZDc4ZGMzM2JhMDU1YjQyOTlkOGVkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy91
dGlsaXR5L3NvdXJjZS9wcm9jZXNzX3RocmVhZF9pbXBsX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9zb3Vy
Y2UvcHJvY2Vzc190aHJlYWRfaW1wbF91bml0dGVzdC5jYwpAQCAtNDIsMTQgKzQyLDE0IEBAIGNs
YXNzIE1vY2tNb2R1bGUgOiBwdWJsaWMgTW9kdWxlIHsKIAogY2xhc3MgUmFpc2VFdmVudFRhc2sg
OiBwdWJsaWMgcnRjOjpRdWV1ZWRUYXNrIHsKICBwdWJsaWM6Ci0gIFJhaXNlRXZlbnRUYXNrKEV2
ZW50V3JhcHBlciogZXZlbnQpIDogZXZlbnRfKGV2ZW50KSB7fQorICBSYWlzZUV2ZW50VGFzayhy
dGM6OkV2ZW50KiBldmVudCkgOiBldmVudF8oZXZlbnQpIHt9CiAgIGJvb2wgUnVuKCkgb3ZlcnJp
ZGUgewogICAgIGV2ZW50Xy0+U2V0KCk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogIHByaXZh
dGU6Ci0gIEV2ZW50V3JhcHBlciogZXZlbnRfOworICBydGM6OkV2ZW50KiBldmVudF87CiB9Owog
CiBBQ1RJT05fUChTZXRFdmVudCwgZXZlbnQpIHsKQEAgLTgzLDE5ICs4MywxOSBAQCBURVNUKFBy
b2Nlc3NUaHJlYWRJbXBsLCBQcm9jZXNzQ2FsbCkgewogICBQcm9jZXNzVGhyZWFkSW1wbCB0aHJl
YWQoIlByb2Nlc3NUaHJlYWQiKTsKICAgdGhyZWFkLlN0YXJ0KCk7CiAKLSAgc3RkOjp1bmlxdWVf
cHRyPEV2ZW50V3JhcHBlcj4gZXZlbnQoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSk7CisgIHJ0Yzo6
RXZlbnQgZXZlbnQ7CiAKICAgTW9ja01vZHVsZSBtb2R1bGU7CiAgIEVYUEVDVF9DQUxMKG1vZHVs
ZSwgVGltZVVudGlsTmV4dFByb2Nlc3MoKSkKICAgICAgIC5XaWxsT25jZShSZXR1cm4oMCkpCiAg
ICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDEpKTsKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQ
cm9jZXNzKCkpCi0gICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0RXZlbnQoZXZlbnQuZ2V0KCkpLCBS
ZXR1cm4oKSkpCisgICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0RXZlbnQoJmV2ZW50KSwgUmV0dXJu
KCkpKQogICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigpKTsKICAgRVhQRUNUX0NBTEwobW9k
dWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQoJnRocmVhZCkpLlRpbWVzKDEpOwogCiAgIHRocmVh
ZC5SZWdpc3Rlck1vZHVsZSgmbW9kdWxlLCBSVENfRlJPTV9IRVJFKTsKLSAgRVhQRUNUX0VRKGtF
dmVudFNpZ25hbGVkLCBldmVudC0+V2FpdChrRXZlbnRXYWl0VGltZW91dCkpOworICBFWFBFQ1Rf
VFJVRShldmVudC5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CiAKICAgRVhQRUNUX0NBTEwobW9k
dWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQobnVsbHB0cikpLlRpbWVzKDEpOwogICB0aHJlYWQu
U3RvcCgpOwpAQCAtMTA1LDIxICsxMDUsMjEgQEAgVEVTVChQcm9jZXNzVGhyZWFkSW1wbCwgUHJv
Y2Vzc0NhbGwpIHsKIC8vIGNhbGwgdG8gU3RhcnQoKS4KIFRFU1QoUHJvY2Vzc1RocmVhZEltcGws
IFByb2Nlc3NDYWxsMikgewogICBQcm9jZXNzVGhyZWFkSW1wbCB0aHJlYWQoIlByb2Nlc3NUaHJl
YWQiKTsKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gZXZlbnQoRXZlbnRXcmFwcGVy
OjpDcmVhdGUoKSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgTW9ja01vZHVsZSBtb2R1bGU7
CiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgVGltZVVudGlsTmV4dFByb2Nlc3MoKSkKICAgICAgIC5X
aWxsT25jZShSZXR1cm4oMCkpCiAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDEpKTsKICAg
RVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzKCkpCi0gICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0
RXZlbnQoZXZlbnQuZ2V0KCkpLCBSZXR1cm4oKSkpCisgICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0
RXZlbnQoJmV2ZW50KSwgUmV0dXJuKCkpKQogICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigp
KTsKIAogICB0aHJlYWQuUmVnaXN0ZXJNb2R1bGUoJm1vZHVsZSwgUlRDX0ZST01fSEVSRSk7CiAK
ICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQoJnRocmVhZCkpLlRp
bWVzKDEpOwogICB0aHJlYWQuU3RhcnQoKTsKLSAgRVhQRUNUX0VRKGtFdmVudFNpZ25hbGVkLCBl
dmVudC0+V2FpdChrRXZlbnRXYWl0VGltZW91dCkpOworICBFWFBFQ1RfVFJVRShldmVudC5XYWl0
KGtFdmVudFdhaXRUaW1lb3V0KSk7CiAKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhy
ZWFkQXR0YWNoZWQobnVsbHB0cikpLlRpbWVzKDEpOwogICB0aHJlYWQuU3RvcCgpOwpAQCAtMTI5
LDcgKzEyOSw3IEBAIFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIFByb2Nlc3NDYWxsMikgewogLy8g
QWZ0ZXIgdW5yZWdpc3RyYXRpb24sIHdlIHNob3VsZCBub3QgcmVjZWl2ZSBhbnkgZnVydGhlciBj
YWxsYmFja3MuCiBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBEZXJlZ2lzdGVyKSB7CiAgIFByb2Nl
c3NUaHJlYWRJbXBsIHRocmVhZCgiUHJvY2Vzc1RocmVhZCIpOwotICBzdGQ6OnVuaXF1ZV9wdHI8
RXZlbnRXcmFwcGVyPiBldmVudChFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKTsKKyAgcnRjOjpFdmVu
dCBldmVudDsKIAogICBpbnQgcHJvY2Vzc19jb3VudCA9IDA7CiAgIE1vY2tNb2R1bGUgbW9kdWxl
OwpAQCAtMTM3LDggKzEzNyw3IEBAIFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIERlcmVnaXN0ZXIp
IHsKICAgICAgIC5XaWxsT25jZShSZXR1cm4oMCkpCiAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0
dXJuKDEpKTsKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzKCkpCi0gICAgICAuV2lsbE9u
Y2UoCi0gICAgICAgICAgRG9BbGwoU2V0RXZlbnQoZXZlbnQuZ2V0KCkpLCBJbmNyZW1lbnQoJnBy
b2Nlc3NfY291bnQpLCBSZXR1cm4oKSkpCisgICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0RXZlbnQo
JmV2ZW50KSwgSW5jcmVtZW50KCZwcm9jZXNzX2NvdW50KSwgUmV0dXJuKCkpKQogICAgICAgLldp
bGxSZXBlYXRlZGx5KERvQWxsKEluY3JlbWVudCgmcHJvY2Vzc19jb3VudCksIFJldHVybigpKSk7
CiAKICAgdGhyZWFkLlJlZ2lzdGVyTW9kdWxlKCZtb2R1bGUsIFJUQ19GUk9NX0hFUkUpOwpAQCAt
MTQ2LDcgKzE0NSw3IEBAIFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIERlcmVnaXN0ZXIpIHsKICAg
RVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQoJnRocmVhZCkpLlRpbWVz
KDEpOwogICB0aHJlYWQuU3RhcnQoKTsKIAotICBFWFBFQ1RfRVEoa0V2ZW50U2lnbmFsZWQsIGV2
ZW50LT5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CisgIEVYUEVDVF9UUlVFKGV2ZW50LldhaXQo
a0V2ZW50V2FpdFRpbWVvdXQpKTsKIAogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFByb2Nlc3NUaHJl
YWRBdHRhY2hlZChudWxscHRyKSkuVGltZXMoMSk7CiAgIHRocmVhZC5EZVJlZ2lzdGVyTW9kdWxl
KCZtb2R1bGUpOwpAQCAtMTU1LDcgKzE1NCw3IEBAIFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIERl
cmVnaXN0ZXIpIHsKICAgaW50IGNvdW50X2FmdGVyX2RlcmVnaXN0ZXIgPSBwcm9jZXNzX2NvdW50
OwogCiAgIC8vIFdlIHNob3VsZG4ndCBnZXQgYW55IG1vcmUgY2FsbGJhY2tzLgotICBFWFBFQ1Rf
RVEoa0V2ZW50VGltZW91dCwgZXZlbnQtPldhaXQoMjApKTsKKyAgRVhQRUNUX0ZBTFNFKGV2ZW50
LldhaXQoMjApKTsKICAgRVhQRUNUX0VRKGNvdW50X2FmdGVyX2RlcmVnaXN0ZXIsIHByb2Nlc3Nf
Y291bnQpOwogICB0aHJlYWQuU3RvcCgpOwogfQpAQCAtMTY3LDcgKzE2Niw3IEBAIHZvaWQgUHJv
Y2Vzc0NhbGxBZnRlckFGZXdNcyhpbnQ2NF90IG1pbGxpc2Vjb25kcykgewogICBQcm9jZXNzVGhy
ZWFkSW1wbCB0aHJlYWQoIlByb2Nlc3NUaHJlYWQiKTsKICAgdGhyZWFkLlN0YXJ0KCk7CiAKLSAg
c3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gZXZlbnQoRXZlbnRXcmFwcGVyOjpDcmVhdGUo
KSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgTW9ja01vZHVsZSBtb2R1bGU7CiAgIGludDY0
X3Qgc3RhcnRfdGltZSA9IDA7CkBAIC0xNzYsOCArMTc1LDcgQEAgdm9pZCBQcm9jZXNzQ2FsbEFm
dGVyQUZld01zKGludDY0X3QgbWlsbGlzZWNvbmRzKSB7CiAgICAgICAuV2lsbE9uY2UoRG9BbGwo
U2V0VGltZXN0YW1wKCZzdGFydF90aW1lKSwgUmV0dXJuKG1pbGxpc2Vjb25kcykpKQogICAgICAg
LldpbGxSZXBlYXRlZGx5KFJldHVybihtaWxsaXNlY29uZHMpKTsKICAgRVhQRUNUX0NBTEwobW9k
dWxlLCBQcm9jZXNzKCkpCi0gICAgICAuV2lsbE9uY2UoCi0gICAgICAgICAgRG9BbGwoU2V0VGlt
ZXN0YW1wKCZjYWxsZWRfdGltZSksIFNldEV2ZW50KGV2ZW50LmdldCgpKSwgUmV0dXJuKCkpKQor
ICAgICAgLldpbGxPbmNlKERvQWxsKFNldFRpbWVzdGFtcCgmY2FsbGVkX3RpbWUpLCBTZXRFdmVu
dCgmZXZlbnQpLCBSZXR1cm4oKSkpCiAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCkpOwog
CiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKCZ0aHJlYWQpKS5U
aW1lcygxKTsKQEAgLTE4NSw3ICsxODMsNyBAQCB2b2lkIFByb2Nlc3NDYWxsQWZ0ZXJBRmV3TXMo
aW50NjRfdCBtaWxsaXNlY29uZHMpIHsKIAogICAvLyBBZGQgYSBidWZmZXIgb2YgNTBtcyBkdWUg
dG8gc2xvd25lc3Mgb2Ygc29tZSB0cnlib3RzCiAgIC8vIChlLmcuIHdpbl9kcm1lbW9yeV9saWdo
dCkKLSAgRVhQRUNUX0VRKGtFdmVudFNpZ25hbGVkLCBldmVudC0+V2FpdChtaWxsaXNlY29uZHMg
KyA1MCkpOworICBFWFBFQ1RfVFJVRShldmVudC5XYWl0KG1pbGxpc2Vjb25kcyArIDUwKSk7CiAK
ICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQobnVsbHB0cikpLlRp
bWVzKDEpOwogICB0aHJlYWQuU3RvcCgpOwpAQCAtMjMwLDcgKzIyOCw3IEBAIFRFU1QoUHJvY2Vz
c1RocmVhZEltcGwsIERJU0FCTEVEX1Byb2Nlc3M1MFRpbWVzKSB7CiAgIFByb2Nlc3NUaHJlYWRJ
bXBsIHRocmVhZCgiUHJvY2Vzc1RocmVhZCIpOwogICB0aHJlYWQuU3RhcnQoKTsKIAotICBzdGQ6
OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPiBldmVudChFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKTsK
KyAgcnRjOjpFdmVudCBldmVudDsKIAogICBNb2NrTW9kdWxlIG1vZHVsZTsKICAgaW50IGNhbGxi
YWNrX2NvdW50ID0gMDsKQEAgLTI0Miw3ICsyNDAsNyBAQCBURVNUKFByb2Nlc3NUaHJlYWRJbXBs
LCBESVNBQkxFRF9Qcm9jZXNzNTBUaW1lcykgewogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFByb2Nl
c3NUaHJlYWRBdHRhY2hlZCgmdGhyZWFkKSkuVGltZXMoMSk7CiAgIHRocmVhZC5SZWdpc3Rlck1v
ZHVsZSgmbW9kdWxlLCBSVENfRlJPTV9IRVJFKTsKIAotICBFWFBFQ1RfRVEoa0V2ZW50VGltZW91
dCwgZXZlbnQtPldhaXQoMTAwMCkpOworICBFWFBFQ1RfVFJVRShldmVudC5XYWl0KDEwMDApKTsK
IAogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFByb2Nlc3NUaHJlYWRBdHRhY2hlZChudWxscHRyKSku
VGltZXMoMSk7CiAgIHRocmVhZC5TdG9wKCk7CkBAIC0yNjEsOCArMjU5LDggQEAgVEVTVChQcm9j
ZXNzVGhyZWFkSW1wbCwgV2FrZVVwKSB7CiAgIFByb2Nlc3NUaHJlYWRJbXBsIHRocmVhZCgiUHJv
Y2Vzc1RocmVhZCIpOwogICB0aHJlYWQuU3RhcnQoKTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8RXZl
bnRXcmFwcGVyPiBzdGFydGVkKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpOwotICBzdGQ6OnVuaXF1
ZV9wdHI8RXZlbnRXcmFwcGVyPiBjYWxsZWQoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSk7CisgIHJ0
Yzo6RXZlbnQgc3RhcnRlZDsKKyAgcnRjOjpFdmVudCBjYWxsZWQ7CiAKICAgTW9ja01vZHVsZSBt
b2R1bGU7CiAgIGludDY0X3Qgc3RhcnRfdGltZTsKQEAgLTI3NiwyMCArMjc0LDE5IEBAIFRFU1Qo
UHJvY2Vzc1RocmVhZEltcGwsIFdha2VVcCkgewogICAvLyBUaGUgc2Vjb25kIHRpbWUgVGltZVVu
dGlsTmV4dFByb2Nlc3MgaXMgdGhlbiBjYWxsZWQsIGlzIGFmdGVyIFByb2Nlc3MKICAgLy8gaGFz
IGJlZW4gY2FsbGVkIGFuZCB3ZSBkb24ndCBleHBlY3QgYW55IG1vcmUgY2FsbHMuCiAgIEVYUEVD
VF9DQUxMKG1vZHVsZSwgVGltZVVudGlsTmV4dFByb2Nlc3MoKSkKLSAgICAgIC5XaWxsT25jZShE
b0FsbChTZXRUaW1lc3RhbXAoJnN0YXJ0X3RpbWUpLCBTZXRFdmVudChzdGFydGVkLmdldCgpKSwK
LSAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4oMTAwMCkpKQorICAgICAgLldpbGxPbmNlKAor
ICAgICAgICAgIERvQWxsKFNldFRpbWVzdGFtcCgmc3RhcnRfdGltZSksIFNldEV2ZW50KCZzdGFy
dGVkKSwgUmV0dXJuKDEwMDApKSkKICAgICAgIC5XaWxsT25jZShSZXR1cm4oMTAwMCkpOwogICBF
WFBFQ1RfQ0FMTChtb2R1bGUsIFByb2Nlc3MoKSkKLSAgICAgIC5XaWxsT25jZSgKLSAgICAgICAg
ICBEb0FsbChTZXRUaW1lc3RhbXAoJmNhbGxlZF90aW1lKSwgU2V0RXZlbnQoY2FsbGVkLmdldCgp
KSwgUmV0dXJuKCkpKQorICAgICAgLldpbGxPbmNlKERvQWxsKFNldFRpbWVzdGFtcCgmY2FsbGVk
X3RpbWUpLCBTZXRFdmVudCgmY2FsbGVkKSwgUmV0dXJuKCkpKQogICAgICAgLldpbGxSZXBlYXRl
ZGx5KFJldHVybigpKTsKIAogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFByb2Nlc3NUaHJlYWRBdHRh
Y2hlZCgmdGhyZWFkKSkuVGltZXMoMSk7CiAgIHRocmVhZC5SZWdpc3Rlck1vZHVsZSgmbW9kdWxl
LCBSVENfRlJPTV9IRVJFKTsKIAotICBFWFBFQ1RfRVEoa0V2ZW50U2lnbmFsZWQsIHN0YXJ0ZWQt
PldhaXQoa0V2ZW50V2FpdFRpbWVvdXQpKTsKKyAgRVhQRUNUX1RSVUUoc3RhcnRlZC5XYWl0KGtF
dmVudFdhaXRUaW1lb3V0KSk7CiAgIHRocmVhZC5XYWtlVXAoJm1vZHVsZSk7Ci0gIEVYUEVDVF9F
UShrRXZlbnRTaWduYWxlZCwgY2FsbGVkLT5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CisgIEVY
UEVDVF9UUlVFKGNhbGxlZC5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CiAKICAgRVhQRUNUX0NB
TEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQobnVsbHB0cikpLlRpbWVzKDEpOwogICB0
aHJlYWQuU3RvcCgpOwpAQCAtMzA0LDExICszMDEsMTEgQEAgVEVTVChQcm9jZXNzVGhyZWFkSW1w
bCwgV2FrZVVwKSB7CiAvLyB0aHJlYWQuCiBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBQb3N0VGFz
aykgewogICBQcm9jZXNzVGhyZWFkSW1wbCB0aHJlYWQoIlByb2Nlc3NUaHJlYWQiKTsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gdGFza19yYW4oRXZlbnRXcmFwcGVyOjpDcmVhdGUo
KSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSYWlzZUV2ZW50VGFzaz4gdGFzayhuZXcgUmFpc2VFdmVu
dFRhc2sodGFza19yYW4uZ2V0KCkpKTsKKyAgcnRjOjpFdmVudCB0YXNrX3JhbjsKKyAgc3RkOjp1
bmlxdWVfcHRyPFJhaXNlRXZlbnRUYXNrPiB0YXNrKG5ldyBSYWlzZUV2ZW50VGFzaygmdGFza19y
YW4pKTsKICAgdGhyZWFkLlN0YXJ0KCk7CiAgIHRocmVhZC5Qb3N0VGFzayhzdGQ6Om1vdmUodGFz
aykpOwotICBFWFBFQ1RfRVEoa0V2ZW50U2lnbmFsZWQsIHRhc2tfcmFuLT5XYWl0KGtFdmVudFdh
aXRUaW1lb3V0KSk7CisgIEVYUEVDVF9UUlVFKHRhc2tfcmFuLldhaXQoa0V2ZW50V2FpdFRpbWVv
dXQpKTsKICAgdGhyZWFkLlN0b3AoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jYXB0dXJlL0JVSUxELmduCmluZGV4IGVmNmYzMzVlNDkzOWQ1NzZjZTYxODFlODkwOTRhZWJm
ZmMxMGM0YWIuLjQ0ZGIyZWI0NzdhYTI4YTUzZmM2YjEwOTFiYWVlMGNmNzY0YmM3OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY2FwdHVyZS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvQlVJTEQuZ24KQEAgLTM4LDYgKzM4
LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlb19jYXB0dXJlX21vZHVsZSIpIHsKICAgICAi
Li4vLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAogICAgICIuLi8uLi9ydGNfYmFzZS9zeW5jaHJv
bml6YXRpb246cndfbG9ja193cmFwcGVyIiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwK
KyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhp
cmRfcGFydHkvbGlieXV2IiwKICAgXQogfQpAQCAtMTkwLDYgKzE5MSw3IEBAIGlmICghYnVpbGRf
d2l0aF9jaHJvbWl1bSkgewogICAgICAgICAiLi4vLi4vY29tbW9uX3ZpZGVvOmNvbW1vbl92aWRl
byIsCiAgICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAg
ICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6c3lzdGVtX3dyYXBwZXJzIiwKKyAgICAgICAgIi4uLy4u
L3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICAgIi4uLy4uL3Rlc3Q6dmlkZW9fdGVzdF9jb21t
b24iLAogICAgICAgICAiLi4vdXRpbGl0eSIsCiAgICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jYXB0dXJlL2RldmljZV9pbmZvX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvZGV2aWNlX2lu
Zm9faW1wbC5jYwppbmRleCAyZjBhMzlmMjk2NGZiMzdjNzAzZjk4NjRmMTRhZDc3YTBlYjM2MWZh
Li5jZGNiNWRkYzRhODI3NDRjYzI5OGRlNTEyZDgyMDRlMjdhODAyNmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nh
cHR1cmUvZGV2aWNlX2luZm9faW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvZGV2aWNlX2luZm9faW1wbC5j
YwpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jYXB0dXJlL2RldmljZV9pbmZvX2ltcGwuaCIKICNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NhcHR1cmUvdmlkZW9fY2FwdHVyZV9jb25maWcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCkBAIC00MiwxNCArNDMsMTIgQEAgaW50MzJfdCBEZXZpY2VJbmZvSW1wbDo6TnVt
YmVyT2ZDYXBhYmlsaXRpZXMoY29uc3QgY2hhciogZGV2aWNlVW5pcXVlSWRVVEY4KSB7CiAKICAg
X2FwaUxvY2suQWNxdWlyZUxvY2tTaGFyZWQoKTsKIAotICBpZiAoX2xhc3RVc2VkRGV2aWNlTmFt
ZUxlbmd0aCA9PSBzdHJsZW4oKGNoYXIqKWRldmljZVVuaXF1ZUlkVVRGOCkpIHsKLSAgICAvLyBJ
cyBpdCB0aGUgc2FtZSBkZXZpY2UgdGhhdCBpcyBhc2tlZCBmb3IgYWdhaW4uCi0gICAgaWYgKF9z
dHJuaWNtcCgoY2hhciopX2xhc3RVc2VkRGV2aWNlTmFtZSwgKGNoYXIqKWRldmljZVVuaXF1ZUlk
VVRGOCwKLSAgICAgICAgICAgICAgICAgIF9sYXN0VXNlZERldmljZU5hbWVMZW5ndGgpID09IDAp
IHsKLSAgICAgIC8vIHllcwotICAgICAgX2FwaUxvY2suUmVsZWFzZUxvY2tTaGFyZWQoKTsKLSAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihfY2FwdHVyZUNhcGFiaWxpdGllcy5zaXpl
KCkpOwotICAgIH0KKyAgLy8gSXMgaXQgdGhlIHNhbWUgZGV2aWNlIHRoYXQgaXMgYXNrZWQgZm9y
IGFnYWluLgorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZSgKKyAgICAgICAgICBkZXZpY2VV
bmlxdWVJZFVURjgsCisgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoX2xhc3RVc2VkRGV2aWNl
TmFtZSwgX2xhc3RVc2VkRGV2aWNlTmFtZUxlbmd0aCkpKSB7CisgICAgX2FwaUxvY2suUmVsZWFz
ZUxvY2tTaGFyZWQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oX2NhcHR1cmVD
YXBhYmlsaXRpZXMuc2l6ZSgpKTsKICAgfQogICAvLyBOZWVkIHRvIGdldCBleGNsdXNpdmUgcmln
aHRzIHRvIGNyZWF0ZSB0aGUgbmV3IGNhcGFiaWxpdHkgbWFwLgogICBfYXBpTG9jay5SZWxlYXNl
TG9ja1NoYXJlZCgpOwpAQCAtNjYsOSArNjUsOSBAQCBpbnQzMl90IERldmljZUluZm9JbXBsOjpH
ZXRDYXBhYmlsaXR5KGNvbnN0IGNoYXIqIGRldmljZVVuaXF1ZUlkVVRGOCwKIAogICBSZWFkTG9j
a1Njb3BlZCBjcyhfYXBpTG9jayk7CiAKLSAgaWYgKChfbGFzdFVzZWREZXZpY2VOYW1lTGVuZ3Ro
ICE9IHN0cmxlbigoY2hhciopZGV2aWNlVW5pcXVlSWRVVEY4KSkgfHwKLSAgICAgIChfc3Rybmlj
bXAoKGNoYXIqKV9sYXN0VXNlZERldmljZU5hbWUsIChjaGFyKilkZXZpY2VVbmlxdWVJZFVURjgs
Ci0gICAgICAgICAgICAgICAgIF9sYXN0VXNlZERldmljZU5hbWVMZW5ndGgpICE9IDApKSB7Cisg
IGlmICghYWJzbDo6RXF1YWxzSWdub3JlQ2FzZSgKKyAgICAgICAgICBkZXZpY2VVbmlxdWVJZFVU
RjgsCisgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoX2xhc3RVc2VkRGV2aWNlTmFtZSwgX2xh
c3RVc2VkRGV2aWNlTmFtZUxlbmd0aCkpKSB7CiAgICAgX2FwaUxvY2suUmVsZWFzZUxvY2tTaGFy
ZWQoKTsKICAgICBfYXBpTG9jay5BY3F1aXJlTG9ja0V4Y2x1c2l2ZSgpOwogICAgIGlmICgtMSA9
PSBDcmVhdGVDYXBhYmlsaXR5TWFwKGRldmljZVVuaXF1ZUlkVVRGOCkpIHsKQEAgLTEwMCw5ICs5
OSw5IEBAIGludDMyX3QgRGV2aWNlSW5mb0ltcGw6OkdldEJlc3RNYXRjaGVkQ2FwYWJpbGl0eSgK
ICAgICByZXR1cm4gLTE7CiAKICAgUmVhZExvY2tTY29wZWQgY3MoX2FwaUxvY2spOwotICBpZiAo
KF9sYXN0VXNlZERldmljZU5hbWVMZW5ndGggIT0gc3RybGVuKChjaGFyKilkZXZpY2VVbmlxdWVJ
ZFVURjgpKSB8fAotICAgICAgKF9zdHJuaWNtcCgoY2hhciopX2xhc3RVc2VkRGV2aWNlTmFtZSwg
KGNoYXIqKWRldmljZVVuaXF1ZUlkVVRGOCwKLSAgICAgICAgICAgICAgICAgX2xhc3RVc2VkRGV2
aWNlTmFtZUxlbmd0aCkgIT0gMCkpIHsKKyAgaWYgKCFhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKAor
ICAgICAgICAgIGRldmljZVVuaXF1ZUlkVVRGOCwKKyAgICAgICAgICBhYnNsOjpzdHJpbmdfdmll
dyhfbGFzdFVzZWREZXZpY2VOYW1lLCBfbGFzdFVzZWREZXZpY2VOYW1lTGVuZ3RoKSkpIHsKICAg
ICBfYXBpTG9jay5SZWxlYXNlTG9ja1NoYXJlZCgpOwogICAgIF9hcGlMb2NrLkFjcXVpcmVMb2Nr
RXhjbHVzaXZlKCk7CiAgICAgaWYgKC0xID09IENyZWF0ZUNhcGFiaWxpdHlNYXAoZGV2aWNlVW5p
cXVlSWRVVEY4KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL3ZpZGVvX2NhcHR1cmVfaW1wbC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y2FwdHVyZS92aWRlb19jYXB0dXJlX2ltcGwuY2MKaW5kZXggNTNhZmVkMDBiNjQ0ZTg5NWZkMmRh
NWUwODNiMzI4NzcwNzEzMDQ0YS4uMjM1ZmQzNDM4YTIxNjQ2OWU3ODI5N2FjYWRlNTY4MTMyNTc0
YWFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL3ZpZGVvX2NhcHR1cmVfaW1wbC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1
cmUvdmlkZW9fY2FwdHVyZV9pbXBsLmNjCkBAIC0xNDMsNyArMTQzLDcgQEAgaW50MzJfdCBWaWRl
b0NhcHR1cmVJbXBsOjpJbmNvbWluZ0ZyYW1lKHVpbnQ4X3QqIHZpZGVvRnJhbWUsCiAgIGludCBz
dHJpZGVfeSA9IHdpZHRoOwogICBpbnQgc3RyaWRlX3V2ID0gKHdpZHRoICsgMSkgLyAyOwogICBp
bnQgdGFyZ2V0X3dpZHRoID0gd2lkdGg7Ci0gIGludCB0YXJnZXRfaGVpZ2h0ID0gaGVpZ2h0Owor
ICBpbnQgdGFyZ2V0X2hlaWdodCA9IGFicyhoZWlnaHQpOwogCiAgIC8vIFNldEFwcGx5Um90YXRp
b24gZG9lc24ndCB0YWtlIGFueSBsb2NrLiBNYWtlIGEgbG9jYWwgY29weSBoZXJlLgogICBib29s
IGFwcGx5X3JvdGF0aW9uID0gYXBwbHlfcm90YXRpb25fOwpAQCAtMTYzLDcgKzE2Myw3IEBAIGlu
dDMyX3QgVmlkZW9DYXB0dXJlSW1wbDo6SW5jb21pbmdGcmFtZSh1aW50OF90KiB2aWRlb0ZyYW1l
LAogCiAgIC8vIFRPRE8obmlzc2UpOiBVc2UgYSBwb29sPwogICBydGM6OnNjb3BlZF9yZWZwdHI8
STQyMEJ1ZmZlcj4gYnVmZmVyID0gSTQyMEJ1ZmZlcjo6Q3JlYXRlKAotICAgICAgdGFyZ2V0X3dp
ZHRoLCBhYnModGFyZ2V0X2hlaWdodCksIHN0cmlkZV95LCBzdHJpZGVfdXYsIHN0cmlkZV91dik7
CisgICAgICB0YXJnZXRfd2lkdGgsIHRhcmdldF9oZWlnaHQsIHN0cmlkZV95LCBzdHJpZGVfdXYs
IHN0cmlkZV91dik7CiAKICAgbGlieXV2OjpSb3RhdGlvbk1vZGUgcm90YXRpb25fbW9kZSA9IGxp
Ynl1djo6a1JvdGF0ZTA7CiAgIGlmIChhcHBseV9yb3RhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0
dXJlL3dpbmRvd3MvdmlkZW9fY2FwdHVyZV9kcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS93aW5kb3dzL3ZpZGVvX2Nh
cHR1cmVfZHMuY2MKaW5kZXggNzc4ZmQ4NzYxYWMxOWIzOTYxYWMyNTc0N2E1Yzc0M2FjNTgxMTU3
Yy4uZWEzNzdhM2IwNWNiNmQ1ZDVhNDU0ZmJlZjYzMDdlNWJjYjMxYjc4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
YXB0dXJlL3dpbmRvd3MvdmlkZW9fY2FwdHVyZV9kcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvd2luZG93cy92
aWRlb19jYXB0dXJlX2RzLmNjCkBAIC05NSw2ICs5NSwxMCBAQCBpbnQzMl90IFZpZGVvQ2FwdHVy
ZURTOjpJbml0KGNvbnN0IGNoYXIqIGRldmljZVVuaXF1ZUlkVVRGOCkgewogICB9CiAKICAgX291
dHB1dENhcHR1cmVQaW4gPSBHZXRPdXRwdXRQaW4oX2NhcHR1cmVGaWx0ZXIsIFBJTl9DQVRFR09S
WV9DQVBUVVJFKTsKKyAgaWYgKCFfb3V0cHV0Q2FwdHVyZVBpbikgeworICAgIFJUQ19MT0coTFNf
SU5GTykgPDwgIkZhaWxlZCB0byBnZXQgb3V0cHV0IGNhcHR1cmUgcGluIjsKKyAgICByZXR1cm4g
LTE7CisgIH0KIAogICAvLyBDcmVhdGUgdGhlIHNpbmsgZmlsdGUgdXNlZCBmb3IgcmVjZWl2aW5n
IENhcHR1cmVkIGZyYW1lcy4KICAgX3NpbmtGaWx0ZXIgPSBuZXcgQ2FwdHVyZVNpbmtGaWx0ZXIo
U0lOS19GSUxURVJfTkFNRSwgTlVMTCwgJmhyLCAqdGhpcyk7CkBAIC0xMDksNyArMTEzLDEyIEBA
IGludDMyX3QgVmlkZW9DYXB0dXJlRFM6OkluaXQoY29uc3QgY2hhciogZGV2aWNlVW5pcXVlSWRV
VEY4KSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiRmFpbGVkIHRvIGFkZCB0aGUgc2VuZCBm
aWx0ZXIgdG8gdGhlIGdyYXBoLiI7CiAgICAgcmV0dXJuIC0xOwogICB9CisKICAgX2lucHV0U2Vu
ZFBpbiA9IEdldElucHV0UGluKF9zaW5rRmlsdGVyKTsKKyAgaWYgKCFfaW5wdXRTZW5kUGluKSB7
CisgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiRmFpbGVkIHRvIGdldCBpbnB1dCBzZW5kIHBpbiI7
CisgICAgcmV0dXJuIC0xOworICB9CiAKICAgLy8gVGVtcG9yYXJ5IGNvbm5lY3QgaGVyZS4KICAg
Ly8gVGhpcyBpcyBkb25lIHNvIHRoYXQgbm8gb25lIGVsc2UgY2FuIHVzZSB0aGUgY2FwdHVyZSBk
ZXZpY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL0JVSUxELmduCmluZGV4
IGU3NTlhNGE3ZThkZDVlNjM1ZGQ3ZjJjZWY0MGU1NTg0OGQ2YmFjYjguLmFjMzU5YmM2NGY4Mjc3
MTJlZjI1NDA2ZDdkMmNiMDZmNWE5ZGE0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL0JVSUxELmduCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL0JVSUxELmduCkBAIC0xNyw4ICsxNyw4IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgi
ZW5jb2RlZF9mcmFtZSIpIHsKICAgZGVwcyA9IFsKICAgICAiOnZpZGVvX2NvZGVjX2ludGVyZmFj
ZSIsCiAgICAgIi4uLy4uLzp3ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4vYXBpL3ZpZGVvOmVu
Y29kZWRfaW1hZ2UiLAogICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCi0g
ICAgIi4uLy4uL2NvbW1vbl92aWRlbzpjb21tb25fdmlkZW8iLAogICAgICIuLi8uLi9tb2R1bGVz
Om1vZHVsZV9hcGkiLAogICAgICIuLi8uLi9tb2R1bGVzOm1vZHVsZV9hcGlfcHVibGljIiwKICAg
ICAiLi4vLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kaW5nX3V0aWxpdHkiLApAQCAt
NTcsNiArNTcsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoIm5hY2tfbW9kdWxlIikgewogICAgICIu
Li8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0
Y19udW1lcmljcyIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgIi4uLy4uL3N5
c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uL3V0aWxpdHk6dXRpbGl0eSIsCiAg
IF0KIH0KQEAgLTE1OCw2ICsxNTksNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoInZpZGVvX2NvZGlu
ZyIpIHsKICAgICAiLi46bW9kdWxlX2FwaV9wdWJsaWMiLAogICAgICIuLi8uLjp3ZWJydGNfY29t
bW9uIiwKICAgICAiLi4vLi4vYXBpOmZlY19jb250cm9sbGVyX2FwaSIsCisgICAgIi4uLy4uL2Fw
aS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICIu
Li8uLi9hcGkvdmlkZW86ZW5jb2RlZF9mcmFtZSIsCiAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRl
b19iaXRyYXRlX2FsbG9jYXRvciIsCiAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIs
CkBAIC0xNjUsMTIgKzE2NywxNCBAQCBydGNfc3RhdGljX2xpYnJhcnkoInZpZGVvX2NvZGluZyIp
IHsKICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAi
Li4vLi4vY29tbW9uX3ZpZGVvIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAi
Li4vLi4vcnRjX2Jhc2U6ZGVwcmVjYXRpb24iLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFz
ZSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4vLi4v
cnRjX2Jhc2U6cnRjX251bWVyaWNzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVl
dWUiLAogICAgICIuLi8uLi9ydGNfYmFzZTpzZXF1ZW5jZWRfdGFza19jaGVja2VyIiwKICAgICAi
Li4vLi4vcnRjX2Jhc2UvZXhwZXJpbWVudHM6YWxyX2V4cGVyaW1lbnQiLAorICAgICIuLi8uLi9y
dGNfYmFzZS9leHBlcmltZW50czpqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudCIsCiAgICAg
Ii4uLy4uL3J0Y19iYXNlL2V4cGVyaW1lbnRzOnJ0dF9tdWx0X2V4cGVyaW1lbnQiLAogICAgICIu
Li8uLi9ydGNfYmFzZS9zeXN0ZW06ZmFsbHRocm91Z2giLAogICAgICIuLi8uLi9ydGNfYmFzZS90
aGlyZF9wYXJ0eS9iYXNlNjQiLApAQCAtMjM4LDggKzI0Miw2IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ2
aWRlb19jb2RpbmdfdXRpbGl0eSIpIHsKICAgICAidXRpbGl0eS9mcmFtZXJhdGVfY29udHJvbGxl
ci5oIiwKICAgICAidXRpbGl0eS9pdmZfZmlsZV93cml0ZXIuY2MiLAogICAgICJ1dGlsaXR5L2l2
Zl9maWxlX3dyaXRlci5oIiwKLSAgICAidXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5jYyIsCi0gICAg
InV0aWxpdHkvbW92aW5nX2F2ZXJhZ2UuaCIsCiAgICAgInV0aWxpdHkvcXVhbGl0eV9zY2FsZXIu
Y2MiLAogICAgICJ1dGlsaXR5L3F1YWxpdHlfc2NhbGVyLmgiLAogICAgICJ1dGlsaXR5L3NpbXVs
Y2FzdF9yYXRlX2FsbG9jYXRvci5jYyIsCkBAIC0yNjEsNiArMjYzLDcgQEAgcnRjX3NvdXJjZV9z
ZXQoInZpZGVvX2NvZGluZ191dGlsaXR5IikgewogICAgICI6dmlkZW9fY29kZWNfaW50ZXJmYWNl
IiwKICAgICAiLi46bW9kdWxlX2FwaSIsCiAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAorICAg
ICIuLi8uLi9hcGkvdmlkZW86ZW5jb2RlZF9pbWFnZSIsCiAgICAgIi4uLy4uL2FwaS92aWRlbzp2
aWRlb19iaXRyYXRlX2FsbG9jYXRvciIsCiAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6dmlk
ZW9fY29kZWNzX2FwaSIsCiAgICAgIi4uLy4uL2NvbW1vbl92aWRlbyIsCkBAIC0zMDIsOCArMzA1
LDEwIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX2gyNjQiKSB7CiAgICAgIi4uLy4uL21l
ZGlhOnJ0Y19tZWRpYV9iYXNlIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAi
Li4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAorICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRj
X2V4cG9ydCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKICAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvbGlieXV2IiwKICAg
XQogCkBAIC0zNzYsNiArMzgxLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNfbXVsdGlw
bGV4IikgewogICAgICI6dmlkZW9fY29kaW5nX3V0aWxpdHkiLAogICAgICIuLjptb2R1bGVfYXBp
IiwKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaS92aWRlbzplbmNv
ZGVkX2ltYWdlIiwKICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAiLi4v
Li4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAogICAgICIuLi8uLi9hcGkvdmlkZW9fY29k
ZWNzOnZpZGVvX2NvZGVjc19hcGkiLApAQCAtMzkxLDIyICszOTcsMTMgQEAgcnRjX3N0YXRpY19s
aWJyYXJ5KCJ3ZWJydGNfdnA4IikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBwb2lzb25v
dXMgPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0KICAgc291cmNlcyA9IFsKLSAgICAiY29k
ZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5jYyIsCi0gICAgImNvZGVjcy92cDgvZGVm
YXVsdF90ZW1wb3JhbF9sYXllcnMuaCIsCi0gICAgImNvZGVjcy92cDgvaW5jbHVkZS90ZW1wb3Jh
bF9sYXllcnNfY2hlY2tlci5oIiwKICAgICAiY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIiwKLSAg
ICAiY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIsCiAgICAgImNvZGVj
cy92cDgvbGlidnB4X2ludGVyZmFjZS5jYyIsCiAgICAgImNvZGVjcy92cDgvbGlidnB4X2ludGVy
ZmFjZS5oIiwKICAgICAiY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIuY2MiLAogICAgICJj
b2RlY3MvdnA4L2xpYnZweF92cDhfZGVjb2Rlci5oIiwKICAgICAiY29kZWNzL3ZwOC9saWJ2cHhf
dnA4X2VuY29kZXIuY2MiLAogICAgICJjb2RlY3MvdnA4L2xpYnZweF92cDhfZW5jb2Rlci5oIiwK
LSAgICAiY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuY2MiLAotICAgICJjb2RlY3MvdnA4
L3NjcmVlbnNoYXJlX2xheWVycy5oIiwKLSAgICAiY29kZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnMu
aCIsCi0gICAgImNvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2MiLAotICAgICJj
b2RlY3MvdnA4L3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MiLAogICBdCiAKICAgaWYgKCFidWlsZF93
aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CkBAIC00MTgsMTQgKzQxNSwxOCBAQCBydGNfc3Rh
dGljX2xpYnJhcnkoIndlYnJ0Y192cDgiKSB7CiAgICAgIjpjb2RlY19nbG9iYWxzX2hlYWRlcnMi
LAogICAgICI6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKICAgICAiOnZpZGVvX2NvZGluZ191dGls
aXR5IiwKKyAgICAiOndlYnJ0Y192cDhfdGVtcG9yYWxfbGF5ZXJzIiwKICAgICAiLi46bW9kdWxl
X2FwaSIsCiAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAorICAgICIuLi8uLi9hcGkvdmlkZW86
ZW5jb2RlZF9pbWFnZSIsCiAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCisgICAg
Ii4uLy4uL2FwaS92aWRlb19jb2RlY3M6Y3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMiLAogICAg
ICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9j
b21tb25fdmlkZW8iLAogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8uLi9y
dGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19udW1l
cmljcyIsCisgICAgIi4uLy4uL3J0Y19iYXNlL2V4cGVyaW1lbnRzOmNwdV9zcGVlZF9leHBlcmlt
ZW50IiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAiLi4vLi4vc3lzdGVtX3dy
YXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3Mi
LApAQCAtNDM4LDYgKzQzOSw0MSBAQCBydGNfc3RhdGljX2xpYnJhcnkoIndlYnJ0Y192cDgiKSB7
CiAgIH0KIH0KIAorcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNfdnA4X3RlbXBvcmFsX2xheWVy
cyIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgc291cmNlcyA9IFsKKyAgICAiY29kZWNz
L3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5jYyIsCisgICAgImNvZGVjcy92cDgvZGVmYXVs
dF90ZW1wb3JhbF9sYXllcnMuaCIsCisgICAgImNvZGVjcy92cDgvaW5jbHVkZS90ZW1wb3JhbF9s
YXllcnNfY2hlY2tlci5oIiwKKyAgICAiY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuY2Mi
LAorICAgICJjb2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVycy5oIiwKKyAgICAiY29kZWNzL3Zw
OC90ZW1wb3JhbF9sYXllcnMuaCIsCisgICAgImNvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzX2No
ZWNrZXIuY2MiLAorICBdCisKKyAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5n
KSB7CisgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVn
aW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgorICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIv
L2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCisgIH0KKworICBkZXBz
ID0gWworICAgICI6Y29kZWNfZ2xvYmFsc19oZWFkZXJzIiwKKyAgICAiOnZpZGVvX2NvZGVjX2lu
dGVyZmFjZSIsCisgICAgIjp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCisgICAgIi4uOm1vZHVsZV9h
cGkiLAorICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4vYXBpL3ZpZGVvX2Nv
ZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAg
ICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFz
ZTpydGNfbnVtZXJpY3MiLAorICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAorICAgICIuLi8u
Li9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBl
cnM6bWV0cmljcyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAg
XQorfQorCiAjIFRoaXMgdGFyZ2V0IGluY2x1ZGVzIFZQOSBmaWxlcyB0aGF0IG1heSBiZSB1c2Vk
IGZvciBhbnkgVlA5IGNvZGVjLCBpbnRlcm5hbCBTVyBvciBleHRlcm5hbCBIVy4KIHJ0Y19zdGF0
aWNfbGlicmFyeSgid2VicnRjX3ZwOV9oZWxwZXJzIikgewogICBzb3VyY2VzID0gWwpAQCAtNDY1
LDE5ICs1MDEsMTQgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNfdnA5X2hlbHBlcnMiKSB7
CiBydGNfc3RhdGljX2xpYnJhcnkoIndlYnJ0Y192cDkiKSB7CiAgIHZpc2liaWxpdHkgPSBbICIq
IiBdCiAgIHBvaXNvbm91cyA9IFsgInNvZnR3YXJlX3ZpZGVvX2NvZGVjcyIgXQotICBpZiAocnRj
X2xpYnZweF9idWlsZF92cDkpIHsKLSAgICBzb3VyY2VzID0gWwotICAgICAgImNvZGVjcy92cDkv
aW5jbHVkZS92cDkuaCIsCi0gICAgICAiY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVmZmVyX3Bvb2wu
Y2MiLAotICAgICAgImNvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmgiLAotICAgICAg
ImNvZGVjcy92cDkvdnA5X2ltcGwuY2MiLAotICAgICAgImNvZGVjcy92cDkvdnA5X2ltcGwuaCIs
Ci0gICAgXQotICB9IGVsc2UgewotICAgIHNvdXJjZXMgPSBbCi0gICAgICAiY29kZWNzL3ZwOS92
cDlfbm9vcC5jYyIsCi0gICAgXQotICB9CisgIHNvdXJjZXMgPSBbCisgICAgImNvZGVjcy92cDkv
aW5jbHVkZS92cDkuaCIsCisgICAgImNvZGVjcy92cDkvdnA5LmNjIiwKKyAgICAiY29kZWNzL3Zw
OS92cDlfZnJhbWVfYnVmZmVyX3Bvb2wuY2MiLAorICAgICJjb2RlY3MvdnA5L3ZwOV9mcmFtZV9i
dWZmZXJfcG9vbC5oIiwKKyAgICAiY29kZWNzL3ZwOS92cDlfaW1wbC5jYyIsCisgICAgImNvZGVj
cy92cDkvdnA5X2ltcGwuaCIsCisgIF0KIAogICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYg
aXNfY2xhbmcpIHsKICAgICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIENocm9taXVtIENs
YW5nIHBsdWdpbiAoYnVncy53ZWJydGMub3JnLzE2MykuCkBAIC01NzQsNyArNjA1LDEwIEBAIGlm
IChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjp2aWRlb19jb2RpbmciLAogICAgICAgIjp2
aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAgICAgICAiLi4vLi4vOndlYnJ0Y19jb21tb24iLAorICAg
ICAgIi4uLy4uL2FwaTptb2NrX3ZpZGVvX2RlY29kZXIiLAorICAgICAgIi4uLy4uL2FwaTptb2Nr
X3ZpZGVvX2VuY29kZXIiLAogICAgICAgIi4uLy4uL2FwaTpzaW11bGNhc3RfdGVzdF9maXh0dXJl
X2FwaSIsCisgICAgICAiLi4vLi4vYXBpL3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICAgIi4u
Ly4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVv
X2ZyYW1lX2k0MjAiLAogICAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNz
X2FwaSIsCkBAIC02MDYsNiArNjQwLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAg
ICAiOndlYnJ0Y192cDlfaGVscGVycyIsCiAgICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAg
ICAgICAiLi4vLi4vYXBpOnZpZGVvY29kZWNfdGVzdF9maXh0dXJlX2FwaSIsCisgICAgICAiLi4v
Li4vYXBpL3ZpZGVvOmJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAg
ICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yIiwKICAgICAgICIu
Li8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRl
b19mcmFtZV9pNDIwIiwKQEAgLTY3NCw2ICs3MDksNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMp
IHsKICAgICAgICI6d2VicnRjX3ZwOV9oZWxwZXJzIiwKICAgICAgICIuLi8uLjp3ZWJydGNfY29t
bW9uIiwKICAgICAgICIuLi8uLi9hcGk6dmlkZW9jb2RlY190ZXN0X2ZpeHR1cmVfYXBpIiwKKyAg
ICAgICIuLi8uLi9hcGkvdGVzdC92aWRlbzpmdW5jdGlvbl92aWRlb19mYWN0b3J5IiwKICAgICAg
ICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAogICAgICAgIi4uLy4u
L2NhbGw6dmlkZW9fc3RyZWFtX2FwaSIsCiAgICAgICAiLi4vLi4vY29tbW9uX3ZpZGVvIiwKQEAg
LTcxOSw2ICs3NTUsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICB9CiAKICAgICBk
ZXBzID0gWworICAgICAgIjptb2NrX2hlYWRlcnMiLAogICAgICAgIjp2aWRlb19jb2RlY3NfdGVz
dF9mcmFtZXdvcmsiLAogICAgICAgIjp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAgICAgICAiOnZp
ZGVvY29kZWNfdGVzdF9pbXBsIiwKQEAgLTczMCw3ICs3NjcsMTAgQEAgaWYgKHJ0Y19pbmNsdWRl
X3Rlc3RzKSB7CiAgICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4vLi4vYXBp
OmNyZWF0ZV92aWRlb2NvZGVjX3Rlc3RfZml4dHVyZV9hcGkiLAogICAgICAgIi4uLy4uL2FwaTpt
b2NrX3ZpZGVvX2NvZGVjX2ZhY3RvcnkiLAorICAgICAgIi4uLy4uL2FwaTptb2NrX3ZpZGVvX2Rl
Y29kZXIiLAorICAgICAgIi4uLy4uL2FwaTptb2NrX3ZpZGVvX2VuY29kZXIiLAogICAgICAgIi4u
Ly4uL2FwaTp2aWRlb2NvZGVjX3Rlc3RfZml4dHVyZV9hcGkiLAorICAgICAgIi4uLy4uL2FwaS90
ZXN0L3ZpZGVvOmZ1bmN0aW9uX3ZpZGVvX2ZhY3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS92aWRl
bzp2aWRlb19mcmFtZSIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAi
LAogICAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6cnRjX3NvZnR3YXJlX2ZhbGxiYWNrX3dy
YXBwZXJzIiwKQEAgLTczOSwxMSArNzc5LDExIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewog
ICAgICAgIi4uLy4uL21lZGlhOnJ0Y19oMjY0X3Byb2ZpbGVfaWQiLAogICAgICAgIi4uLy4uL21l
ZGlhOnJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3MiLAogICAgICAgIi4uLy4uL21lZGlhOnJ0Y19t
ZWRpYV9iYXNlIiwKKyAgICAgICIuLi8uLi9tZWRpYTpydGNfc2ltdWxjYXN0X2VuY29kZXJfYWRh
cHRlciIsCiAgICAgICAiLi4vLi4vbWVkaWE6cnRjX3ZwOV9wcm9maWxlIiwKICAgICAgICIuLi8u
Li9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgICAiLi4vLi4vdGVzdDpmaWVsZF90cmlhbCIsCiAg
ICAgICAiLi4vLi4vdGVzdDpmaWxldXRpbHMiLAotICAgICAgIi4uLy4uL3Rlc3Q6dGVzdF9jb21t
b24iLAogICAgICAgIi4uLy4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICIuLi8uLi90ZXN0
OnZpZGVvX3Rlc3RfY29tbW9uIiwKICAgICAgICIuLi9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQi
LApAQCAtNzc0LDYgKzgxNCwxMCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICMg
U3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2luIChidWdzLndl
YnJ0Yy5vcmcvMTYzKS4KICAgICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1aWxkL2Nv
bmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCiAgICAgfQorCisgICAgaWYgKHJ0Y19i
dWlsZF9saWJ2cHgpIHsKKyAgICAgIGRlcHMgKz0gWyBydGNfbGlidnB4X2RpciBdCisgICAgfQog
ICB9CiAKICAgcnRjX3NvdXJjZV9zZXQoInZpZGVvX2NvZGluZ191bml0dGVzdHMiKSB7CkBAIC04
MDQsMTMgKzg0OCwxMSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJzZXNzaW9u
X2luZm9fdW5pdHRlc3QuY2MiLAogICAgICAgInRlc3Qvc3RyZWFtX2dlbmVyYXRvci5jYyIsCiAg
ICAgICAidGVzdC9zdHJlYW1fZ2VuZXJhdG9yLmgiLAotICAgICAgInRlc3QvdGVzdF91dGlsLmgi
LAogICAgICAgInRpbWluZ191bml0dGVzdC5jYyIsCiAgICAgICAidXRpbGl0eS9kZWZhdWx0X3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICJ1dGlsaXR5L2ZyYW1l
X2Ryb3BwZXJfdW5pdHRlc3QuY2MiLAogICAgICAgInV0aWxpdHkvZnJhbWVyYXRlX2NvbnRyb2xs
ZXJfdW5pdHRlc3QuY2MiLAogICAgICAgInV0aWxpdHkvaXZmX2ZpbGVfd3JpdGVyX3VuaXR0ZXN0
LmNjIiwKLSAgICAgICJ1dGlsaXR5L21vdmluZ19hdmVyYWdlX3VuaXR0ZXN0LmNjIiwKICAgICAg
ICJ1dGlsaXR5L3F1YWxpdHlfc2NhbGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJ1dGlsaXR5L3Np
bXVsY2FzdF9yYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAidmlkZW9fY29kZWNf
aW5pdGlhbGl6ZXJfdW5pdHRlc3QuY2MiLApAQCAtODM5LDE2ICs4ODEsMjMgQEAgaWYgKHJ0Y19p
bmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOnZpZGVvY29kZWNfdGVzdF9pbXBsIiwKICAgICAgICI6
d2VicnRjX2gyNjQiLAogICAgICAgIjp3ZWJydGNfdnA4IiwKKyAgICAgICI6d2VicnRjX3ZwOF90
ZW1wb3JhbF9sYXllcnMiLAogICAgICAgIjp3ZWJydGNfdnA5IiwKICAgICAgICI6d2VicnRjX3Zw
OV9oZWxwZXJzIiwKICAgICAgICIuLjptb2R1bGVfYXBpIiwKICAgICAgICIuLi8uLjp3ZWJydGNf
Y29tbW9uIiwKICAgICAgICIuLi8uLi9hcGk6Y3JlYXRlX3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmVf
YXBpIiwKKyAgICAgICIuLi8uLi9hcGk6bW9ja192aWRlb19kZWNvZGVyIiwKKyAgICAgICIuLi8u
Li9hcGk6bW9ja192aWRlb19lbmNvZGVyIiwKICAgICAgICIuLi8uLi9hcGk6c2ltdWxjYXN0X3Rl
c3RfZml4dHVyZV9hcGkiLAogICAgICAgIi4uLy4uL2FwaTp2aWRlb2NvZGVjX3Rlc3RfZml4dHVy
ZV9hcGkiLAorICAgICAgIi4uLy4uL2FwaS90ZXN0L3ZpZGVvOmZ1bmN0aW9uX3ZpZGVvX2ZhY3Rv
cnkiLAorICAgICAgIi4uLy4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9j
YXRvciIsCisgICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2Zh
Y3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgICAiLi4v
Li4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAorICAgICAgIi4uLy4uL2FwaS92aWRlb19j
b2RlY3M6Y3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMiLAogICAgICAgIi4uLy4uL2FwaS92aWRl
b19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgICAiLi4vLi4vY29tbW9uX3ZpZGVvOmNv
bW1vbl92aWRlbyIsCiAgICAgICAiLi4vLi4vbWVkaWE6cnRjX21lZGlhX2Jhc2UiLApAQCAtODU5
LDYgKzkwOCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uLy4uL3J0Y19i
YXNlOnJ0Y19udW1lcmljcyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUi
LAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlX2Zvcl90ZXN0IiwKKyAgICAg
ICIuLi8uLi9ydGNfYmFzZS9leHBlcmltZW50czpqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVu
dCIsCiAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAgICIuLi8uLi9zeXN0ZW1f
d3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRy
aWNzIiwKQEAgLTg3MCw2ICs5MjAsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAg
ICIuLi8uLi90ZXN0OnZpZGVvX3Rlc3Rfc3VwcG9ydCIsCiAgICAgICAiLi4vcnRwX3J0Y3A6cnRw
X3J0Y3BfZm9ybWF0IiwKICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1v
cnkiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKICAgICBdCiAgICAgaWYgKHJ0Y19idWlsZF9saWJ2cHgpIHsKICAgICAgIGRlcHMgKz0gWyBy
dGNfbGlidnB4X2RpciBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29k
ZXJfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNjCmluZGV4
IDczZDQ1ODM3YWY3N2Q2OTlmNmE3OTZjMWRjZjUxZGYzMjE2ZWFkZWIuLmUyMTMyMjNjYTRmODEx
ZDcxZTk5YjVmYzhiZjEzOThjODljYzc3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0
L2gyNjRfZGVjb2Rlcl9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rl
cl9pbXBsLmNjCkBAIC0zMjMsMTMgKzMyMywxMSBAQCBpbnQzMl90IEgyNjREZWNvZGVySW1wbDo6
RGVjb2RlKGNvbnN0IEVuY29kZWRJbWFnZSYgaW5wdXRfaW1hZ2UsCiAgIC8vIHdpdGhvdXQgY29w
eWluZyB0aGUgdW5kZXJseWluZyBidWZmZXIuCiAgIGlmIChhdl9mcmFtZV8tPndpZHRoICE9IGk0
MjBfYnVmZmVyLT53aWR0aCgpIHx8CiAgICAgICBhdl9mcmFtZV8tPmhlaWdodCAhPSBpNDIwX2J1
ZmZlci0+aGVpZ2h0KCkpIHsKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9GcmFtZUJ1ZmZl
cj4gY3JvcHBlZF9idWYoCi0gICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8V3JhcHBl
ZEk0MjBCdWZmZXI+KAotICAgICAgICAgICAgYXZfZnJhbWVfLT53aWR0aCwgYXZfZnJhbWVfLT5o
ZWlnaHQsCi0gICAgICAgICAgICBpNDIwX2J1ZmZlci0+RGF0YVkoKSwgaTQyMF9idWZmZXItPlN0
cmlkZVkoKSwKLSAgICAgICAgICAgIGk0MjBfYnVmZmVyLT5EYXRhVSgpLCBpNDIwX2J1ZmZlci0+
U3RyaWRlVSgpLAotICAgICAgICAgICAgaTQyMF9idWZmZXItPkRhdGFWKCksIGk0MjBfYnVmZmVy
LT5TdHJpZGVWKCksCi0gICAgICAgICAgICBydGM6OktlZXBSZWZVbnRpbERvbmUoaTQyMF9idWZm
ZXIpKSk7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvRnJhbWVCdWZmZXI+IGNyb3BwZWRf
YnVmID0gV3JhcEk0MjBCdWZmZXIoCisgICAgICAgIGF2X2ZyYW1lXy0+d2lkdGgsIGF2X2ZyYW1l
Xy0+aGVpZ2h0LCBpNDIwX2J1ZmZlci0+RGF0YVkoKSwKKyAgICAgICAgaTQyMF9idWZmZXItPlN0
cmlkZVkoKSwgaTQyMF9idWZmZXItPkRhdGFVKCksIGk0MjBfYnVmZmVyLT5TdHJpZGVVKCksCisg
ICAgICAgIGk0MjBfYnVmZmVyLT5EYXRhVigpLCBpNDIwX2J1ZmZlci0+U3RyaWRlVigpLAorICAg
ICAgICBydGM6OktlZXBSZWZVbnRpbERvbmUoaTQyMF9idWZmZXIpKTsKICAgICBWaWRlb0ZyYW1l
IGNyb3BwZWRfZnJhbWUgPQogICAgICAgICBWaWRlb0ZyYW1lOjpCdWlsZGVyKCkKICAgICAgICAg
ICAgIC5zZXRfdmlkZW9fZnJhbWVfYnVmZmVyKGNyb3BwZWRfYnVmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL2gyNjQvaDI2NF9lbmNvZGVyX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9o
MjY0X2VuY29kZXJfaW1wbC5jYwppbmRleCA0ZWZmY2RiYzUyNGZlYTk5NzcyN2YyYmU0ZWY2ODZl
ZmQ5NDIxZTQxLi5mMTkxZjJjNjQwMzJhYTk3NDUzYzBjODE5OWRmNDI0NWZiNmRiOGM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2VuY29kZXJfaW1wbC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvaDI2NC9oMjY0X2VuY29kZXJfaW1wbC5jYwpAQCAtMTksNiArMTksNyBAQAogI2lu
Y2x1ZGUgInRoaXJkX3BhcnR5L29wZW5oMjY0L3NyYy9jb2RlYy9hcGkvc3ZjL2NvZGVjX2RlZi5o
IgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L29wZW5oMjY0L3NyYy9jb2RlYy9hcGkvc3ZjL2NvZGVj
X3Zlci5oIgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiY29t
bW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9jYXRvci5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3V0aWxpdHkuaCIK
QEAgLTE2Nyw3ICsxNjgsNyBAQCBIMjY0RW5jb2RlckltcGw6OkgyNjRFbmNvZGVySW1wbChjb25z
dCBjcmlja2V0OjpWaWRlb0NvZGVjJiBjb2RlYykKICAgICAgIGVuY29kZWRfaW1hZ2VfY2FsbGJh
Y2tfKG51bGxwdHIpLAogICAgICAgaGFzX3JlcG9ydGVkX2luaXRfKGZhbHNlKSwKICAgICAgIGhh
c19yZXBvcnRlZF9lcnJvcl8oZmFsc2UpIHsKLSAgUlRDX0NIRUNLKGNyaWNrZXQ6OkNvZGVjTmFt
ZXNFcShjb2RlYy5uYW1lLCBjcmlja2V0OjprSDI2NENvZGVjTmFtZSkpOworICBSVENfQ0hFQ0so
YWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBjcmlja2V0OjprSDI2NENvZGVjTmFt
ZSkpOwogICBzdGQ6OnN0cmluZyBwYWNrZXRpemF0aW9uX21vZGVfc3RyaW5nOwogICBpZiAoY29k
ZWMuR2V0UGFyYW0oY3JpY2tldDo6a0gyNjRGbXRwUGFja2V0aXphdGlvbk1vZGUsCiAgICAgICAg
ICAgICAgICAgICAgICAmcGFja2V0aXphdGlvbl9tb2RlX3N0cmluZykgJiYKQEAgLTMxMCw3ICsz
MTEsNyBAQCBpbnQzMl90IEgyNjRFbmNvZGVySW1wbDo6SW5pdEVuY29kZShjb25zdCBWaWRlb0Nv
ZGVjKiBpbnN0LAogICB9CiAKICAgU2ltdWxjYXN0UmF0ZUFsbG9jYXRvciBpbml0X2FsbG9jYXRv
cihjb2RlY18pOwotICBCaXRyYXRlQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0gaW5pdF9hbGxvY2F0
b3IuR2V0QWxsb2NhdGlvbigKKyAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0g
aW5pdF9hbGxvY2F0b3IuR2V0QWxsb2NhdGlvbigKICAgICAgIGNvZGVjXy5zdGFydEJpdHJhdGUg
KiAxMDAwLCBjb2RlY18ubWF4RnJhbWVyYXRlKTsKICAgcmV0dXJuIFNldFJhdGVBbGxvY2F0aW9u
KGFsbG9jYXRpb24sIGNvZGVjXy5tYXhGcmFtZXJhdGUpOwogfQpAQCAtMzM5LDcgKzM0MCw3IEBA
IGludDMyX3QgSDI2NEVuY29kZXJJbXBsOjpSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2so
CiB9CiAKIGludDMyX3QgSDI2NEVuY29kZXJJbXBsOjpTZXRSYXRlQWxsb2NhdGlvbigKLSAgICBj
b25zdCBCaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSwKKyAgICBjb25zdCBWaWRlb0JpdHJhdGVB
bGxvY2F0aW9uJiBiaXRyYXRlLAogICAgIHVpbnQzMl90IG5ld19mcmFtZXJhdGUpIHsKICAgaWYg
KGVuY29kZXJzXy5lbXB0eSgpKQogICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfVU5JTklU
SUFMSVpFRDsKQEAgLTUzNCwxMCArNTM1LDYgQEAgaW50MzJfdCBIMjY0RW5jb2RlckltcGw6OkVu
Y29kZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9mcmFtZSwKICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19PSzsKIH0KIAotY29uc3QgY2hhciogSDI2NEVuY29kZXJJbXBsOjpJbXBsZW1lbnRh
dGlvbk5hbWUoKSBjb25zdCB7Ci0gIHJldHVybiAiT3BlbkgyNjQiOwotfQotCiAvLyBJbml0aWFs
aXphdGlvbiBwYXJhbWV0ZXJzLgogLy8gVGhlcmUgYXJlIHR3byB3YXlzIHRvIGluaXRpYWxpemUu
IFRoZXJlIGlzIFNFbmNQYXJhbUJhc2UgKGNsZWFyZWQgd2l0aAogLy8gbWVtc2V0KCZwLCAwLCBz
aXplb2YoU0VuY1BhcmFtQmFzZSkpIHVzZWQgaW4gSW5pdGlhbGl6ZSwgYW5kIFNFbmNQYXJhbUV4
dApAQCAtNjI0LDE0ICs2MjEsMTMgQEAgdm9pZCBIMjY0RW5jb2RlckltcGw6OlJlcG9ydEVycm9y
KCkgewogICBoYXNfcmVwb3J0ZWRfZXJyb3JfID0gdHJ1ZTsKIH0KIAotaW50MzJfdCBIMjY0RW5j
b2RlckltcGw6OlNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0KSB7
Ci0gIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Ci19Ci0KLVZpZGVvRW5jb2Rlcjo6U2Nh
bGluZ1NldHRpbmdzIEgyNjRFbmNvZGVySW1wbDo6R2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qg
ewotICByZXR1cm4gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3Moa0xvd0gyNjRRcFRocmVz
aG9sZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtIaWdoSDI2NFFw
VGhyZXNob2xkKTsKK1ZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gSDI2NEVuY29kZXJJbXBsOjpH
ZXRFbmNvZGVySW5mbygpIGNvbnN0IHsKKyAgRW5jb2RlckluZm8gaW5mbzsKKyAgaW5mby5zdXBw
b3J0c19uYXRpdmVfaGFuZGxlID0gZmFsc2U7CisgIGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSA9
ICJPcGVuSDI2NCI7CisgIGluZm8uc2NhbGluZ19zZXR0aW5ncyA9CisgICAgICBWaWRlb0VuY29k
ZXI6OlNjYWxpbmdTZXR0aW5ncyhrTG93SDI2NFFwVGhyZXNob2xkLCBrSGlnaEgyNjRRcFRocmVz
aG9sZCk7CisgIHJldHVybiBpbmZvOwogfQogCiB2b2lkIEgyNjRFbmNvZGVySW1wbDo6TGF5ZXJD
b25maWc6OlNldFN0cmVhbVN0YXRlKGJvb2wgc2VuZF9zdHJlYW0pIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy9oMjY0L2gyNjRfZW5jb2Rlcl9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9o
MjY0X2VuY29kZXJfaW1wbC5oCmluZGV4IDBkMjU5NjYwZjY5OWI2YjU1YWIzYjU2MzFiYzc2Mjc0
ZDZkM2ExMzguLmRhMzI1NjNjOWIyZGUyZjdlZjJmMDk0ODRkMGY4OGQxMTQxZmNmMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZW5jb2Rlcl9pbXBsLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL2gyNjQvaDI2NF9lbmNvZGVyX2ltcGwuaApAQCAtNzAsMTIgKzcwLDcgQEAgY2xhc3Mg
SDI2NEVuY29kZXJJbXBsIDogcHVibGljIEgyNjRFbmNvZGVyIHsKICAgICAgICAgICAgICAgICAg
Y29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1lVHlwZT4qIGZyYW1lX3R5cGVzKSBvdmVycmlk
ZTsKIAotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsK
LQotICBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBj
b25zdCBvdmVycmlkZTsKLQotICAvLyBVbnN1cHBvcnRlZCAvIERvIG5vdGhpbmcuCi0gIGludDMy
X3QgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsIGludDY0X3QgcnR0
KSBvdmVycmlkZTsKKyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlk
ZTsKIAogICAvLyBFeHBvc2VkIGZvciB0ZXN0aW5nLgogICBIMjY0UGFja2V0aXphdGlvbk1vZGUg
UGFja2V0aXphdGlvbk1vZGVGb3JUZXN0aW5nKCkgY29uc3QgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL2gyNjQvaDI2NF9zaW11bGNhc3RfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2
NC9oMjY0X3NpbXVsY2FzdF91bml0dGVzdC5jYwppbmRleCA2YzZmYWU4YzFhMGQxNDNhYWExMmEy
NzMxZTQxYTdlYzg4MTI0OWYwLi4zYjcyMGIzODQzMGI0NzA5NzNlZTQ0NTRmYmRjMjljZjdiN2U3
ZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X3NpbXVsY2FzdF91bml0dGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X3NpbXVsY2FzdF91bml0dGVzdC5jYwpA
QCAtMTMsOSArMTMsOSBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1
ZGUgImFwaS90ZXN0L2NyZWF0ZV9zaW11bGNhc3RfdGVzdF9maXh0dXJlLmgiCiAjaW5jbHVkZSAi
YXBpL3Rlc3Qvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oIgorI2luY2x1ZGUgImFwaS90ZXN0L3Zp
ZGVvL2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS90ZXN0
L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2luY2x1ZGUvaDI2NC5oIgotI2luY2x1ZGUgInRl
c3QvZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAidGVzdC9mdW5j
dGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaW5jbHVk
ZS9oMjY0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9pbmNsdWRlL2gyNjQuaAppbmRleCBlMjM4MThi
NzU2Yjg2ZjMwMzNlYjZiOTUzYTM2ODhiYTNjODA2YTMyLi5mNWNlYmNmZTYyMTIyYzVlZjcyN2Yz
NzcwNTAzYjYzZjdmZDRmMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9pbmNsdWRl
L2gyNjQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9pbmNsdWRlL2gyNjQuaApAQCAtMTcsNiAr
MTcsNyBAQAogCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
QEAgLTI2LDEzICsyNywxMyBAQCBzdHJ1Y3QgU2RwVmlkZW9Gb3JtYXQ7CiAvLyB8cnRjX3VzZV9o
MjY0fCBidWlsZCBmbGFnIGlzIHRydWUgKGlmIGZhbHNlLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90
aGluZykuCiAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBiZWZvcmUgb3Ig
ZHVyaW5nIFdlYlJUQyBpbml0aWFsaXphdGlvbgogLy8gYW5kIGlzIG5vdCB0aHJlYWQtc2FmZS4K
LXZvaWQgRGlzYWJsZVJ0Y1VzZUgyNjQoKTsKK1JUQ19FWFBPUlQgdm9pZCBEaXNhYmxlUnRjVXNl
SDI2NCgpOwogCiAvLyBSZXR1cm5zIGEgdmVjdG9yIHdpdGggYWxsIHN1cHBvcnRlZCBpbnRlcm5h
bCBIMjY0IHByb2ZpbGVzIHRoYXQgd2UgY2FuCiAvLyBuZWdvdGlhdGUgaW4gU0RQLCBpbiBvcmRl
ciBvZiBwcmVmZXJlbmNlLgogc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IFN1cHBvcnRlZEgy
NjRDb2RlY3MoKTsKIAotY2xhc3MgSDI2NEVuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsK
K2NsYXNzIFJUQ19FWFBPUlQgSDI2NEVuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICBw
dWJsaWM6CiAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SDI2NEVuY29kZXI+IENyZWF0ZShjb25z
dCBjcmlja2V0OjpWaWRlb0NvZGVjJiBjb2RlYyk7CiAgIC8vIElmIEguMjY0IGlzIHN1cHBvcnRl
ZCAoYW55IGltcGxlbWVudGF0aW9uKS4KQEAgLTQxLDcgKzQyLDcgQEAgY2xhc3MgSDI2NEVuY29k
ZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgfkgyNjRFbmNvZGVyKCkgb3ZlcnJpZGUge30K
IH07CiAKLWNsYXNzIEgyNjREZWNvZGVyIDogcHVibGljIFZpZGVvRGVjb2RlciB7CitjbGFzcyBS
VENfRVhQT1JUIEgyNjREZWNvZGVyIDogcHVibGljIFZpZGVvRGVjb2RlciB7CiAgcHVibGljOgog
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEgyNjREZWNvZGVyPiBDcmVhdGUoKTsKICAgc3RhdGlj
IGJvb2wgSXNTdXBwb3J0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L3Rlc3Qv
aDI2NF9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvdGVzdC9oMjY0X2ltcGxf
dW5pdHRlc3QuY2MKaW5kZXggMTRiYjZiY2M0N2U2M2YxNTJmOGQxYTNhZjkwMzVhZTVlMzhmNzVh
NC4uODJjMTRiN2ZkNTI5YzA2ZTQ2YWNhMDEwYWFmOWY2ZjJjOTU0YWE2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL2gyNjQvdGVzdC9oMjY0X2ltcGxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL2gyNjQvdGVzdC9oMjY0X2ltcGxfdW5pdHRlc3QuY2MKQEAgLTU2LDcgKzU2LDcgQEAg
VEVTVF9GKFRlc3RIMjY0SW1wbCwgTUFZQkVfRW5jb2RlRGVjb2RlKSB7CiAgIEFTU0VSVF9UUlVF
KGRlY29kZWRfZnJhbWUpOwogICBFWFBFQ1RfR1QoSTQyMFBTTlIoaW5wdXRfZnJhbWUsIGRlY29k
ZWRfZnJhbWUuZ2V0KCkpLCAzNik7CiAKLSAgY29uc3QgQ29sb3JTcGFjZSBjb2xvcl9zcGFjZSA9
IGRlY29kZWRfZnJhbWUtPmNvbG9yX3NwYWNlKCkudmFsdWUoKTsKKyAgY29uc3QgQ29sb3JTcGFj
ZSBjb2xvcl9zcGFjZSA9ICpkZWNvZGVkX2ZyYW1lLT5jb2xvcl9zcGFjZSgpOwogICBFWFBFQ1Rf
RVEoQ29sb3JTcGFjZTo6UHJpbWFyeUlEOjprSW52YWxpZCwgY29sb3Jfc3BhY2UucHJpbWFyaWVz
KCkpOwogICBFWFBFQ1RfRVEoQ29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6a0ludmFsaWQsIGNvbG9y
X3NwYWNlLnRyYW5zZmVyKCkpOwogICBFWFBFQ1RfRVEoQ29sb3JTcGFjZTo6TWF0cml4SUQ6OmtJ
bnZhbGlkLCBjb2xvcl9zcGFjZS5tYXRyaXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
aTQyMC9pbmNsdWRlL2k0MjAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9pNDIwL2luY2x1ZGUvaTQyMC5oCmlu
ZGV4IDU4MGJjMTZjMmY4YTljMDM0NWU3N2Y5NTMwYzk2NGZmMDVlNDEyNWEuLjk2NzI4NmY0MmNi
NDNlMGZjMzZiNzhhYWIyYTZlZGMwNjgyZWUxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9p
NDIwL2luY2x1ZGUvaTQyMC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9pNDIwL2luY2x1ZGUvaTQyMC5o
CkBAIC02NSwxMCArNjUsNiBAQCBjbGFzcyBJNDIwRW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29k
ZXIgewogICAvLyBSZXR1cm4gdmFsdWUgICAgICAgICAgICAgICAgOiBXRUJSVENfVklERU9fQ09E
RUNfT0sgaWYgT0ssIDwgMCBvdGhlcndpc2UuCiAgIGludCBSZWxlYXNlKCkgb3ZlcnJpZGU7CiAK
LSAgaW50IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IC8qcGFja2V0TG9zcyovLCBpbnQ2
NF90IC8qcnR0Ki8pIG92ZXJyaWRlIHsKLSAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09L
OwotICB9Ci0KICBwcml2YXRlOgogICBzdGF0aWMgdWludDhfdCogSW5zZXJ0SGVhZGVyKHVpbnQ4
X3QqIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCB3aWR0
aCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvaW5jbHVkZS9tdWx0aXBsZXhf
ZW5jb2Rlcl9hZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L2luY2x1ZGUvbXVsdGlw
bGV4X2VuY29kZXJfYWRhcHRlci5oCmluZGV4IDUzMWQwNzg3MGU3NmRlMWVhNDdkZTcwYTllZmJj
OWRlZTljMTQ2NjMuLjIzNWEzNjAzMGIwNzhjZmFlYTJiZjMxMDhkNDI5NWI1ZWIzNjAwOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvaW5jbHVkZS9tdWx0aXBsZXhfZW5jb2Rl
cl9hZGFwdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9pbmNsdWRlL211bHRpcGxl
eF9lbmNvZGVyX2FkYXB0ZXIuaApAQCAtNDYsMTEgKzQ2LDEwIEBAIGNsYXNzIE11bHRpcGxleEVu
Y29kZXJBZGFwdGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgICAgICAgICAgICAgY29uc3Qg
Q29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCiAgICAgICAgICAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiogZnJhbWVfdHlwZXMpIG92ZXJyaWRlOwogICBpbnQg
UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxs
YmFjaykgb3ZlcnJpZGU7Ci0gIGludCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNr
ZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwogICBpbnQgU2V0UmF0ZUFsbG9jYXRpb24o
Y29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IG5ld19mcmFtZXJhdGUpIG92ZXJyaWRlOwogICBpbnQgUmVsZWFzZSgp
IG92ZXJyaWRlOwotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZTsKIAog
ICBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6UmVzdWx0IE9uRW5jb2RlZEltYWdlKAogICAgICAgQWxw
aGFDb2RlY1N0cmVhbSBzdHJlYW1faWR4LApAQCAtODEsNiArODAsOCBAQCBjbGFzcyBNdWx0aXBs
ZXhFbmNvZGVyQWRhcHRlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogCiAgIGNvbnN0IGJvb2wg
c3VwcG9ydHNfYXVnbWVudGVkX2RhdGFfOwogICBpbnQgYXVnbWVudGluZ19kYXRhX3NpemVfID0g
MDsKKworICBFbmNvZGVySW5mbyBlbmNvZGVyX2luZm9fOwogfTsKIAogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9tdWx0aXBsZXhfZGVj
b2Rlcl9hZGFwdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9tdWx0aXBsZXhfZGVjb2Rl
cl9hZGFwdGVyLmNjCmluZGV4IGNjNTg4ZDAzNDdhNTg1NTI3MDIxMzViMzY4NTI2YjRhMWRmNzNh
OTYuLmEyN2JjOGQyNTg4MzQ1ZjUwNDhhMmM0ZDc5MzU0YjQxZjE3OGZiOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlwbGV4X2RlY29kZXJfYWRhcHRlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211bHRpcGxleF9kZWNvZGVyX2FkYXB0ZXIuY2MKQEAg
LTEwLDkgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9t
dWx0aXBsZXgvaW5jbHVkZS9tdWx0aXBsZXhfZGVjb2Rlcl9hZGFwdGVyLmgiCiAKKyNpbmNsdWRl
ICJhcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1
ZmZlci5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZV9idWZmZXIuaCIKLSNpbmNs
dWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgImNvbW1v
bl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oIgogI2luY2x1ZGUgImNvbW1vbl92
aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9pbmNsdWRlL2F1Z21lbnRlZF92aWRlb19mcmFt
ZV9idWZmZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlwbGV4
X2VuY29kZWRfaW1hZ2VfcGFja2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211bHRpcGxl
eF9lbmNvZGVkX2ltYWdlX3BhY2tlci5oCmluZGV4IGVhMzdmMGM0ZDlmZjQ2NTE2MGNlOGZhNTM1
N2FlZGY3NTU5M2Q2NTQuLjBkMmY5ZmEyNmVhMzVkNWE4YzRiMTU0MzU0Nzk2ZWUwNTdjMzAyZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlwbGV4X2VuY29kZWRfaW1h
Z2VfcGFja2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9tdWx0aXBsZXhfZW5jb2Rl
ZF9pbWFnZV9wYWNrZXIuaApAQCAtMTQsOCArMTQsOCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oIgog
I2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0jaW5j
bHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlwbGV4X2Vu
Y29kZXJfYWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlwbGV4X2VuY29k
ZXJfYWRhcHRlci5jYwppbmRleCBjM2E3NTA2MmI1NGViZTU4OTE0OTM5YWQyNzE0YzhiMmQ2ZDEy
ZGIxLi40ZGFiY2E3N2ZkMDA1OWE1MWIzODMyMzE2MDFkMDM1OTM1MDBlMWJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211bHRpcGxleF9lbmNvZGVyX2FkYXB0ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL211bHRpcGxleC9tdWx0aXBsZXhfZW5jb2Rlcl9hZGFwdGVyLmNjCkBA
IC0xMiw3ICsxMiw3IEBACiAKICNpbmNsdWRlIDxjc3RyaW5nPgogCi0jaW5jbHVkZSAiY29tbW9u
X3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vZW5jb2Rl
ZF9pbWFnZS5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lX2J1
ZmZlci5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGli
eXV2LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIK
QEAgLTUzLDYgKzUzLDcgQEAgTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXI6Ok11bHRpcGxleEVuY29k
ZXJBZGFwdGVyKAogICAgIDogZmFjdG9yeV8oZmFjdG9yeSksCiAgICAgICBhc3NvY2lhdGVkX2Zv
cm1hdF8oYXNzb2NpYXRlZF9mb3JtYXQpLAogICAgICAgZW5jb2RlZF9jb21wbGV0ZV9jYWxsYmFj
a18obnVsbHB0ciksCisgICAgICBrZXlfZnJhbWVfaW50ZXJ2YWxfKDApLAogICAgICAgc3VwcG9y
dHNfYXVnbWVudGVkX2RhdGFfKHN1cHBvcnRzX2F1Z21lbnRlZF9kYXRhKSB7fQogCiBNdWx0aXBs
ZXhFbmNvZGVyQWRhcHRlcjo6fk11bHRpcGxleEVuY29kZXJBZGFwdGVyKCkgewpAQCAtOTIsNiAr
OTMsMTEgQEAgaW50IE11bHRpcGxleEVuY29kZXJBZGFwdGVyOjpJbml0RW5jb2RlKGNvbnN0IFZp
ZGVvQ29kZWMqIGluc3QsCiAgICAgICBicmVhazsKICAgfQogCisgIGVuY29kZXJfaW5mb18gPSBF
bmNvZGVySW5mbygpOworICBlbmNvZGVyX2luZm9fLmltcGxlbWVudGF0aW9uX25hbWUgPSAiTXVs
dGlwbGV4RW5jb2RlckFkYXB0ZXIgKCI7CisgIC8vIFRoaXMgbmVlZHMgdG8gYmUgZmFsc2Ugc28g
dGhhdCB3ZSBjYW4gZG8gdGhlIHNwbGl0IGluIEVuY29kZSgpLgorICBlbmNvZGVyX2luZm9fLnN1
cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBmYWxzZTsKKwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGtBbHBoYUNvZGVjU3RyZWFtczsgKytpKSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5j
b2Rlcj4gZW5jb2RlciA9CiAgICAgICAgIGZhY3RvcnlfLT5DcmVhdGVWaWRlb0VuY29kZXIoYXNz
b2NpYXRlZF9mb3JtYXRfKTsKQEAgLTEwNCw4ICsxMTAsMTcgQEAgaW50IE11bHRpcGxleEVuY29k
ZXJBZGFwdGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsCiAgICAgYWRhcHRl
cl9jYWxsYmFja3NfLmVtcGxhY2VfYmFjayhuZXcgQWRhcHRlckVuY29kZWRJbWFnZUNhbGxiYWNr
KAogICAgICAgICB0aGlzLCBzdGF0aWNfY2FzdDxBbHBoYUNvZGVjU3RyZWFtPihpKSkpOwogICAg
IGVuY29kZXItPlJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhhZGFwdGVyX2NhbGxiYWNr
c18uYmFjaygpLmdldCgpKTsKKworICAgIGNvbnN0IEVuY29kZXJJbmZvJiBlbmNvZGVyX2ltcGxf
aW5mbyA9IGVuY29kZXItPkdldEVuY29kZXJJbmZvKCk7CisgICAgZW5jb2Rlcl9pbmZvXy5pbXBs
ZW1lbnRhdGlvbl9uYW1lICs9IGVuY29kZXJfaW1wbF9pbmZvLmltcGxlbWVudGF0aW9uX25hbWU7
CisgICAgaWYgKGkgIT0ga0FscGhhQ29kZWNTdHJlYW1zIC0gMSkgeworICAgICAgZW5jb2Rlcl9p
bmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lICs9ICIsICI7CisgICAgfQorCiAgICAgZW5jb2RlcnNf
LmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoZW5jb2RlcikpOwogICB9CisgIGVuY29kZXJfaW5mb18u
aW1wbGVtZW50YXRpb25fbmFtZSArPSAiKSI7CisKICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19PSzsKIH0KIApAQCAtMTg3LDE2ICsyMDIsNiBAQCBpbnQgTXVsdGlwbGV4RW5jb2RlckFkYXB0
ZXI6OlJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaygKICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19PSzsKIH0KIAotaW50IE11bHRpcGxleEVuY29kZXJBZGFwdGVyOjpTZXRDaGFubmVs
UGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBydHQpIHsKLSAgZm9yIChhdXRvJiBl
bmNvZGVyIDogZW5jb2RlcnNfKSB7Ci0gICAgY29uc3QgaW50IHJ2ID0gZW5jb2Rlci0+U2V0Q2hh
bm5lbFBhcmFtZXRlcnMocGFja2V0X2xvc3MsIHJ0dCk7Ci0gICAgaWYgKHJ2KQotICAgICAgcmV0
dXJuIHJ2OwotICB9Ci0gIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Ci19Ci0KIGludCBN
dWx0aXBsZXhFbmNvZGVyQWRhcHRlcjo6U2V0UmF0ZUFsbG9jYXRpb24oCiAgICAgY29uc3QgVmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSwKICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIHsK
QEAgLTIzOCw4ICsyNDMsOCBAQCBpbnQgTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXI6OlJlbGVhc2Uo
KSB7CiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKLWNvbnN0IGNoYXIqIE11
bHRpcGxleEVuY29kZXJBZGFwdGVyOjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7Ci0gIHJl
dHVybiAiTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXIiOworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5m
byBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlcjo6R2V0RW5jb2RlckluZm8oKSBjb25zdCB7CisgIHJl
dHVybiBlbmNvZGVyX2luZm9fOwogfQogCiBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6UmVzdWx0IE11
bHRpcGxleEVuY29kZXJBZGFwdGVyOjpPbkVuY29kZWRJbWFnZSgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy90ZXN0L3ZpZGVvX2NvZGVjX3VuaXR0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92
aWRlb19jb2RlY191bml0dGVzdC5oCmluZGV4IDQ4ODYwYzM1YTZmMzQ5NzE1OTJlM2QzZWM5YjRj
NzA3ZWRkYjdlNTEuLjlhNGQ2MGNlYzI2Nzg3MjY2MTNhMWE3MmMxODZhNzA1ZTcxNWM1NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvX2NvZGVjX3VuaXR0ZXN0LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9fY29kZWNfdW5pdHRlc3QuaApAQCAtMzIsMTEgKzMyLDcg
QEAgY2xhc3MgVmlkZW9Db2RlY1VuaXRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAg
IFZpZGVvQ29kZWNVbml0VGVzdCgpCiAgICAgICA6IGVuY29kZV9jb21wbGV0ZV9jYWxsYmFja18o
dGhpcyksCiAgICAgICAgIGRlY29kZV9jb21wbGV0ZV9jYWxsYmFja18odGhpcyksCi0gICAgICAg
IGVuY29kZWRfZnJhbWVfZXZlbnRfKGZhbHNlIC8qIG1hbnVhbCByZXNldCAqLywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaW5pdGlhbGx5IHNpZ25hbGVkICovKSwKICAg
ICAgICAgd2FpdF9mb3JfZW5jb2RlZF9mcmFtZXNfdGhyZXNob2xkXygxKSwKLSAgICAgICAgZGVj
b2RlZF9mcmFtZV9ldmVudF8oZmFsc2UgLyogbWFudWFsIHJlc2V0ICovLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpbml0aWFsbHkgc2lnbmFsZWQgKi8pLAogICAgICAg
ICBsYXN0X2lucHV0X2ZyYW1lX3RpbWVzdGFtcF8oMCkge30KIAogIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9maXh0dXJlX2ltcGwuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfZml4dHVyZV9pbXBsLmNjCmluZGV4
IDRkYzI2OGEwNDMxZjA5NWVmZDk0NDNjNzNhY2NkODg5Njk5ODZlNTIuLjg0N2U4NDc4NWJjYjQz
MjZkNDczMzYxMzFmZTZiNGZjYzA3Njc0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0
L3ZpZGVvY29kZWNfdGVzdF9maXh0dXJlX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3Qv
dmlkZW9jb2RlY190ZXN0X2ZpeHR1cmVfaW1wbC5jYwpAQCAtMTMwLDkgKzEzMCw3IEBAIGJvb2wg
UnVuRW5jb2RlSW5SZWFsVGltZShjb25zdCBWaWRlb0NvZGVjVGVzdEZpeHR1cmVJbXBsOjpDb25m
aWcmIGNvbmZpZykgewogCiBzdGQ6OnN0cmluZyBGaWxlbmFtZVdpdGhQYXJhbXMoCiAgICAgY29u
c3QgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlSW1wbDo6Q29uZmlnJiBjb25maWcpIHsKLSAgc3RkOjpz
dHJpbmcgaW1wbGVtZW50YXRpb25fdHlwZSA9IGNvbmZpZy5od19lbmNvZGVyID8gImh3IiA6ICJz
dyI7CiAgIHJldHVybiBjb25maWcuZmlsZW5hbWUgKyAiXyIgKyBjb25maWcuQ29kZWNOYW1lKCkg
KyAiXyIgKwotICAgICAgICAgaW1wbGVtZW50YXRpb25fdHlwZSArICJfIiArCiAgICAgICAgICBz
dGQ6OnRvX3N0cmluZyhjb25maWcuY29kZWNfc2V0dGluZ3Muc3RhcnRCaXRyYXRlKTsKIH0KIApA
QCAtNDQ2LDcgKzQ0NCw3IEBAIHZvaWQgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlSW1wbDo6UHJvY2Vz
c0FsbEZyYW1lcygKICAgfQogCiAgIC8vIFdhaXQgdW50aWwgd2Uga25vdyB0aGF0IHRoZSBsYXN0
IGZyYW1lIGhhcyBiZWVuIHNlbnQgZm9yIGVuY29kZS4KLSAgcnRjOjpFdmVudCBzeW5jX2V2ZW50
KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgc3luY19ldmVudDsKICAgdGFza19xdWV1ZS0+
UG9zdFRhc2soWyZzeW5jX2V2ZW50XSB7IHN5bmNfZXZlbnQuU2V0KCk7IH0pOwogICBzeW5jX2V2
ZW50LldhaXQocnRjOjpFdmVudDo6a0ZvcmV2ZXIpOwogCkBAIC02NzMsNyArNjcxLDcgQEAgdm9p
ZCBWaWRlb0NvZGVjVGVzdEZpeHR1cmVJbXBsOjpQcmludFNldHRpbmdzKAogICBzdGQ6OnN0cmlu
ZyBlbmNvZGVyX25hbWU7CiAgIHN0ZDo6c3RyaW5nIGRlY29kZXJfbmFtZTsKICAgdGFza19xdWV1
ZS0+U2VuZFRhc2soW3RoaXMsICZlbmNvZGVyX25hbWUsICZkZWNvZGVyX25hbWVdIHsKLSAgICBl
bmNvZGVyX25hbWUgPSBlbmNvZGVyXy0+SW1wbGVtZW50YXRpb25OYW1lKCk7CisgICAgZW5jb2Rl
cl9uYW1lID0gZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkuaW1wbGVtZW50YXRpb25fbmFtZTsK
ICAgICBkZWNvZGVyX25hbWUgPSBkZWNvZGVyc18uYXQoMCktPkltcGxlbWVudGF0aW9uTmFtZSgp
OwogICB9KTsKICAgcHJpbnRmKCJlbmNfaW1wbF9uYW1lOiAlc1xuIiwgZW5jb2Rlcl9uYW1lLmNf
c3RyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X2xp
YnZweC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9saWJ2cHguY2MKaW5k
ZXggOTU4NmNlOWM3OTIzODIxMzM0MjFhZWQ4MTZjYmFmNWVkZWU4ZDA0OC4uZjY5ZmRlNjg4NDAx
MGZjMzVmYzM5NjcwMmUyNDNiYjI3NmFiNDMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rl
c3QvdmlkZW9jb2RlY190ZXN0X2xpYnZweC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRl
b2NvZGVjX3Rlc3RfbGlidnB4LmNjCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvdGVzdC9jcmVhdGVfdmlkZW9jb2RlY190
ZXN0X2ZpeHR1cmUuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19l
bmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19m
b3JtYXQuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVk
ZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuaCIKQEAgLTE5LDcgKzIwLDYg
QEAKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvdnA4X2hlYWRlcl9wYXJzZXIu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3ZwOV91bmNvbXByZXNz
ZWRfaGVhZGVyX3BhcnNlci5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3QvdGVz
dHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKQEAgLTYzLDggKzYzLDYgQEAgVmlkZW9Db2RlY1Rlc3RG
aXh0dXJlOjpDb25maWcgQ3JlYXRlQ29uZmlnKCkgewogICBjb25maWcuZmlsZXBhdGggPSBSZXNv
dXJjZVBhdGgoY29uZmlnLmZpbGVuYW1lLCAieXV2Iik7CiAgIGNvbmZpZy5udW1fZnJhbWVzID0g
a051bUZyYW1lc0xvbmc7CiAgIGNvbmZpZy51c2Vfc2luZ2xlX2NvcmUgPSB0cnVlOwotICBjb25m
aWcuaHdfZW5jb2RlciA9IGZhbHNlOwotICBjb25maWcuaHdfZGVjb2RlciA9IGZhbHNlOwogICBy
ZXR1cm4gY29uZmlnOwogfQogCkBAIC05Miw3ICs5MCw3IEBAIHZvaWQgUHJpbnRSZFBlcmYoc3Rk
OjptYXA8c2l6ZV90LCBzdGQ6OnZlY3RvcjxWaWRlb1N0YXRpc3RpY3M+PiByZF9zdGF0cykgewog
fQogfSAgLy8gbmFtZXNwYWNlCiAKLSNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjaWYg
ZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIEhpZ2hC
aXRyYXRlVlA5KSB7CiAgIGF1dG8gY29uZmlnID0gQ3JlYXRlQ29uZmlnKCk7CiAgIGNvbmZpZy5T
ZXRDb2RlY1NldHRpbmdzKGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUsIDEsIDEsIDEsIGZhbHNlLCB0
cnVlLCBmYWxzZSwKQEAgLTEwNSw3ICsxMDMsNyBAQCBURVNUKFZpZGVvQ29kZWNUZXN0TGlidnB4
LCBIaWdoQml0cmF0ZVZQOSkgewogICBzdGQ6OnZlY3RvcjxSYXRlUHJvZmlsZT4gcmF0ZV9wcm9m
aWxlcyA9IHt7NTAwLCAzMCwga051bUZyYW1lc1Nob3J0fX07CiAKICAgc3RkOjp2ZWN0b3I8UmF0
ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAgICAgezUsIDEsIDAsIDAu
MTEsIDAuMywgMC4xLCAwLCAxfX07CisgICAgICB7NSwgMSwgMCwgMSwgMC4zLCAwLjEsIDAsIDF9
fTsKIAogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNob2xkcz4gcXVhbGl0eV90aHJlc2hvbGRz
ID0ge3szNywgMzYsIDAuOTQsIDAuOTJ9fTsKIApAQCAtMTI2LDkgKzEyNCw5IEBAIFRFU1QoVmlk
ZW9Db2RlY1Rlc3RMaWJ2cHgsIENoYW5nZUJpdHJhdGVWUDkpIHsKICAgICAgIHs1MDAsIDMwLCBr
TnVtRnJhbWVzTG9uZ319OwogCiAgIHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4g
cmNfdGhyZXNob2xkcyA9IHsKLSAgICAgIHs1LCAxLCAwLCAwLjE1LCAwLjUsIDAuMSwgMCwgMX0s
Ci0gICAgICB7MTUsIDIsIDAsIDAuMiwgMC41LCAwLjEsIDAsIDB9LAotICAgICAgezEwLCAxLCAw
LCAwLjMsIDAuNSwgMC4xLCAwLCAwfX07CisgICAgICB7NSwgMSwgMCwgMSwgMC41LCAwLjEsIDAs
IDF9LAorICAgICAgezE1LCAyLCAwLCAxLCAwLjUsIDAuMSwgMCwgMH0sCisgICAgICB7MTAsIDEs
IDAsIDEsIDAuNSwgMC4xLCAwLCAwfX07CiAKICAgc3RkOjp2ZWN0b3I8UXVhbGl0eVRocmVzaG9s
ZHM+IHF1YWxpdHlfdGhyZXNob2xkcyA9IHsKICAgICAgIHszNCwgMzMsIDAuOTAsIDAuODh9LCB7
MzgsIDM1LCAwLjk1LCAwLjkxfSwgezM1LCAzNCwgMC45MywgMC45MH19OwpAQCAtMTUxLDkgKzE0
OSw5IEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIENoYW5nZUZyYW1lcmF0ZVZQOSkgewog
CiAgIC8vIEZyYW1lcmF0ZSBtaXNtYXRjaCBzaG91bGQgYmUgbG93ZXIgZm9yIGxvd2VyIGZyYW1l
cmF0ZS4KICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRz
ID0gewotICAgICAgezEwLCAyLCA0MCwgMC40LCAwLjUsIDAuMiwgMCwgMX0sCi0gICAgICB7OCwg
MiwgNSwgMC4yLCAwLjUsIDAuMiwgMCwgMH0sCi0gICAgICB7NSwgMiwgMCwgMC4yMSwgMC41LCAw
LjMsIDAsIDB9fTsKKyAgICAgIHsxMCwgMiwgNDAsIDEsIDAuNSwgMC4yLCAwLCAxfSwKKyAgICAg
IHs4LCAyLCA1LCAxLCAwLjUsIDAuMiwgMCwgMH0sCisgICAgICB7NSwgMiwgMCwgMSwgMC41LCAw
LjMsIDAsIDB9fTsKIAogICAvLyBRdWFsaXR5IHNob3VsZCBiZSBoaWdoZXIgZm9yIGxvd2VyIGZy
YW1lcmF0ZXMgZm9yIHRoZSBzYW1lIGNvbnRlbnQuCiAgIHN0ZDo6dmVjdG9yPFF1YWxpdHlUaHJl
c2hvbGRzPiBxdWFsaXR5X3RocmVzaG9sZHMgPSB7CkBAIC0xNzQsNyArMTcyLDcgQEAgVEVTVChW
aWRlb0NvZGVjVGVzdExpYnZweCwgRGVub2lzZXJPblZQOSkgewogICBzdGQ6OnZlY3RvcjxSYXRl
UHJvZmlsZT4gcmF0ZV9wcm9maWxlcyA9IHt7NTAwLCAzMCwga051bUZyYW1lc1Nob3J0fX07CiAK
ICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewot
ICAgICAgezUsIDEsIDAsIDAuMTEsIDAuMywgMC4xLCAwLCAxfX07CisgICAgICB7NSwgMSwgMCwg
MSwgMC4zLCAwLjEsIDAsIDF9fTsKIAogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNob2xkcz4g
cXVhbGl0eV90aHJlc2hvbGRzID0ge3szNy41LCAzNiwgMC45NCwgMC45M319OwogCkBAIC0xOTIs
NyArMTkwLDcgQEAgVEVTVChWaWRlb0NvZGVjVGVzdExpYnZweCwgVmVyeUxvd0JpdHJhdGVWUDkp
IHsKICAgc3RkOjp2ZWN0b3I8UmF0ZVByb2ZpbGU+IHJhdGVfcHJvZmlsZXMgPSB7ezUwLCAzMCwg
a051bUZyYW1lc0xvbmd9fTsKIAogICBzdGQ6OnZlY3RvcjxSYXRlQ29udHJvbFRocmVzaG9sZHM+
IHJjX3RocmVzaG9sZHMgPSB7Ci0gICAgICB7MTUsIDMsIDc1LCAxLjAsIDAuNSwgMC40LCAxLCAx
fX07CisgICAgICB7MTUsIDMsIDc1LCAxLCAwLjUsIDAuNCwgMSwgMX19OwogCiAgIHN0ZDo6dmVj
dG9yPFF1YWxpdHlUaHJlc2hvbGRzPiBxdWFsaXR5X3RocmVzaG9sZHMgPSB7ezI4LCAyNSwgMC44
MCwgMC42NX19OwogCkBAIC0yMDIsNyArMjAwLDcgQEAgVEVTVChWaWRlb0NvZGVjVGVzdExpYnZw
eCwgVmVyeUxvd0JpdHJhdGVWUDkpIHsKIC8vIFRPRE8obWFycGFuKTogQWRkIHRlbXBvcmFsIGxh
eWVyIHRlc3QgZm9yIFZQOSwgb25jZSBjaGFuZ2VzIGFyZSBpbgogLy8gdnA5IHdyYXBwZXIgZm9y
IHRoaXMuCiAKLSNlbmRpZiAgLy8gIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2VuZGlmICAv
LyBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogCiBURVNUKFZpZGVvQ29kZWNUZXN0TGlidnB4LCBI
aWdoQml0cmF0ZVZQOCkgewogICBhdXRvIGNvbmZpZyA9IENyZWF0ZUNvbmZpZygpOwpAQCAtMjE2
LDcgKzIxNCw3IEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIEhpZ2hCaXRyYXRlVlA4KSB7
CiAgIHN0ZDo6dmVjdG9yPFJhdGVQcm9maWxlPiByYXRlX3Byb2ZpbGVzID0ge3s1MDAsIDMwLCBr
TnVtRnJhbWVzU2hvcnR9fTsKIAogICBzdGQ6OnZlY3RvcjxSYXRlQ29udHJvbFRocmVzaG9sZHM+
IHJjX3RocmVzaG9sZHMgPSB7Ci0gICAgICB7NSwgMSwgMCwgMC4xLCAwLjIsIDAuMSwgMCwgMX19
OworICAgICAgezUsIDEsIDAsIDEsIDAuMiwgMC4xLCAwLCAxfX07CiAKICNpZiBkZWZpbmVkKFdF
QlJUQ19BUkNIX0FSTSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02NCkKICAgc3RkOjp2ZWN0
b3I8UXVhbGl0eVRocmVzaG9sZHM+IHF1YWxpdHlfdGhyZXNob2xkcyA9IHt7MzUsIDMzLCAwLjkx
LCAwLjg5fX07CkBAIC0yNTUsOSArMjUzLDkgQEAgVEVTVChWaWRlb0NvZGVjVGVzdExpYnZweCwg
TUFZQkVfQ2hhbmdlQml0cmF0ZVZQOCkgewogICAgICAgezUwMCwgMzAsIGtOdW1GcmFtZXNMb25n
fX07CiAKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRz
ID0gewotICAgICAgezUsIDEsIDAsIDAuMSwgMC4yLCAwLjEsIDAsIDF9LAotICAgICAgezE1LjUs
IDEsIDAsIDAuMSwgMC4yLCAwLjEsIDAsIDB9LAotICAgICAgezE1LCAxLCAwLCAwLjMsIDAuMiwg
MC4xLCAwLCAwfX07CisgICAgICB7NSwgMSwgMCwgMSwgMC4yLCAwLjEsIDAsIDF9LAorICAgICAg
ezE1LjUsIDEsIDAsIDEsIDAuMiwgMC4xLCAwLCAwfSwKKyAgICAgIHsxNSwgMSwgMCwgMSwgMC4y
LCAwLjEsIDAsIDB9fTsKIAogI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNKSB8fCBkZWZpbmVk
KFdFQlJUQ19BUkNIX0FSTTY0KQogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNob2xkcz4gcXVh
bGl0eV90aHJlc2hvbGRzID0gewpAQCAtMjkwLDE0ICsyODgsMTQgQEAgVEVTVChWaWRlb0NvZGVj
VGVzdExpYnZweCwgTUFZQkVfQ2hhbmdlRnJhbWVyYXRlVlA4KSB7CiAKICNpZiBkZWZpbmVkKFdF
QlJUQ19BUkNIX0FSTSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02NCkKICAgc3RkOjp2ZWN0
b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAgICAgezEwLCAy
LCA2MCwgMC41LCAwLjMsIDAuMywgMCwgMX0sCi0gICAgICB7MTAsIDIsIDMwLCAwLjMsIDAuMywg
MC4zLCAwLCAwfSwKLSAgICAgIHsxMCwgMiwgMTAsIDAuMiwgMC4zLCAwLjIsIDAsIDB9fTsKKyAg
ICAgIHsxMCwgMiwgNjAsIDEsIDAuMywgMC4zLCAwLCAxfSwKKyAgICAgIHsxMCwgMiwgMzAsIDEs
IDAuMywgMC4zLCAwLCAwfSwKKyAgICAgIHsxMCwgMiwgMTAsIDEsIDAuMywgMC4yLCAwLCAwfX07
CiAjZWxzZQogICBzdGQ6OnZlY3RvcjxSYXRlQ29udHJvbFRocmVzaG9sZHM+IHJjX3RocmVzaG9s
ZHMgPSB7Ci0gICAgICB7MTAsIDIsIDIwLCAwLjQsIDAuMywgMC4xLCAwLCAxfSwKLSAgICAgIHs1
LCAyLCA1LCAwLjMsIDAuMywgMC4xLCAwLCAwfSwKLSAgICAgIHs0LCAyLCAxLCAwLjIsIDAuMywg
MC4yLCAwLCAwfX07CisgICAgICB7MTAsIDIsIDIwLCAxLCAwLjMsIDAuMSwgMCwgMX0sCisgICAg
ICB7NSwgMiwgNSwgMSwgMC4zLCAwLjEsIDAsIDB9LAorICAgICAgezQsIDIsIDEsIDEsIDAuMywg
MC4yLCAwLCAwfX07CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNKSB8fCBk
ZWZpbmVkKFdFQlJUQ19BUkNIX0FSTTY0KQpAQCAtMzI4LDEwICszMjYsMTAgQEAgVEVTVChWaWRl
b0NvZGVjVGVzdExpYnZweCwgTUFZQkVfVGVtcG9yYWxMYXllcnNWUDgpIHsKIAogI2lmIGRlZmlu
ZWQoV0VCUlRDX0FSQ0hfQVJNKSB8fCBkZWZpbmVkKFdFQlJUQ19BUkNIX0FSTTY0KQogICBzdGQ6
OnZlY3RvcjxSYXRlQ29udHJvbFRocmVzaG9sZHM+IHJjX3RocmVzaG9sZHMgPSB7Ci0gICAgICB7
MTAsIDEsIDIsIDAuMywgMC4yLCAwLjEsIDAsIDF9LCB7MTIsIDIsIDMsIDAuMSwgMC4yLCAwLjEs
IDAsIDF9fTsKKyAgICAgIHsxMCwgMSwgMiwgMSwgMC4yLCAwLjEsIDAsIDF9LCB7MTIsIDIsIDMs
IDEsIDAuMiwgMC4xLCAwLCAxfX07CiAjZWxzZQogICBzdGQ6OnZlY3RvcjxSYXRlQ29udHJvbFRo
cmVzaG9sZHM+IHJjX3RocmVzaG9sZHMgPSB7Ci0gICAgICB7NSwgMSwgMCwgMC4xLCAwLjIsIDAu
MSwgMCwgMX0sIHsxMCwgMiwgMCwgMC4xLCAwLjIsIDAuMSwgMCwgMX19OworICAgICAgezUsIDEs
IDAsIDEsIDAuMiwgMC4xLCAwLCAxfSwgezEwLCAyLCAwLCAxLCAwLjIsIDAuMSwgMCwgMX19Owog
I2VuZGlmCiAvLyBNaW4gU1NJTSBkcm9wcyBiZWNhdXNlIG9mIGhpZ2ggbW90aW9uIHNjZW5lIHdp
dGggY29tcGxleCBiYWNrZ291bmQgKHRyZWVzKS4KICNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX0FS
TSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02NCkKQEAgLTM2NCw3ICszNjIsNyBAQCBURVNU
KFZpZGVvQ29kZWNUZXN0TGlidnB4LCBNQVlCRV9NdWx0aXJlc1ZQOCkgewogICBzdGQ6OnZlY3Rv
cjxSYXRlUHJvZmlsZT4gcmF0ZV9wcm9maWxlcyA9IHt7MTUwMCwgMzAsIGNvbmZpZy5udW1fZnJh
bWVzfX07CiAKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hv
bGRzID0gewotICAgICAgezUsIDEsIDUsIDAuMiwgMC4zLCAwLjEsIDAsIDF9fTsKKyAgICAgIHs1
LCAxLCA1LCAxLCAwLjMsIDAuMSwgMCwgMX19OwogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNo
b2xkcz4gcXVhbGl0eV90aHJlc2hvbGRzID0ge3szNCwgMzIsIDAuOTAsIDAuODh9fTsKIAogICBm
aXh0dXJlLT5SdW5UZXN0KHJhdGVfcHJvZmlsZXMsICZyY190aHJlc2hvbGRzLCAmcXVhbGl0eV90
aHJlc2hvbGRzLCBudWxscHRyKTsKQEAgLTQwMSw3ICszOTksNyBAQCBURVNUKFZpZGVvQ29kZWNU
ZXN0TGlidnB4LCBNQVlCRV9TaW11bGNhc3RWUDgpIHsKICAgc3RkOjp2ZWN0b3I8UmF0ZVByb2Zp
bGU+IHJhdGVfcHJvZmlsZXMgPSB7ezE1MDAsIDMwLCBjb25maWcubnVtX2ZyYW1lc319OwogCiAg
IHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4gcmNfdGhyZXNob2xkcyA9IHsKLSAg
ICAgIHsyMCwgNSwgOTAsIDAuOCwgMC41LCAwLjMsIDAsIDF9fTsKKyAgICAgIHsyMCwgNSwgOTAs
IDEsIDAuNSwgMC4zLCAwLCAxfX07CiAgIHN0ZDo6dmVjdG9yPFF1YWxpdHlUaHJlc2hvbGRzPiBx
dWFsaXR5X3RocmVzaG9sZHMgPSB7ezM0LCAzMiwgMC45MCwgMC44OH19OwogCiAgIGZpeHR1cmUt
PlJ1blRlc3QocmF0ZV9wcm9maWxlcywgJnJjX3RocmVzaG9sZHMsICZxdWFsaXR5X3RocmVzaG9s
ZHMsIG51bGxwdHIpOwpAQCAtNDI2LDcgKzQyNCw3IEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2
cHgsIE1BWUJFX1N2Y1ZQOSkgewogICBzdGQ6OnZlY3RvcjxSYXRlUHJvZmlsZT4gcmF0ZV9wcm9m
aWxlcyA9IHt7MTUwMCwgMzAsIGNvbmZpZy5udW1fZnJhbWVzfX07CiAKICAgc3RkOjp2ZWN0b3I8
UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAgICAgezUsIDEsIDUs
IDAuMiwgMC4zLCAwLjEsIDAsIDF9fTsKKyAgICAgIHs1LCAxLCA1LCAxLCAwLjMsIDAuMSwgMCwg
MX19OwogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNob2xkcz4gcXVhbGl0eV90aHJlc2hvbGRz
ID0ge3szNiwgMzQsIDAuOTMsIDAuOTB9fTsKIAogICBmaXh0dXJlLT5SdW5UZXN0KHJhdGVfcHJv
ZmlsZXMsICZyY190aHJlc2hvbGRzLCAmcXVhbGl0eV90aHJlc2hvbGRzLCBudWxscHRyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9tZWRpYWNvZGVjLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X21lZGlhY29kZWMuY2MKaW5kZXgg
OTliMWFlZDhjMGE1ODA1MzY3OTgwMjVhOGM2NThmNTdiMzZiNzI0NS4uZWRmYzIxMWMyMjZkNTQ5
Y2MwYzU5MzRmNzIzZjM1Y2UwNzkyNmU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3Qv
dmlkZW9jb2RlY190ZXN0X21lZGlhY29kZWMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3Qvdmlk
ZW9jb2RlY190ZXN0X21lZGlhY29kZWMuY2MKQEAgLTMzLDggKzMzLDYgQEAgVmlkZW9Db2RlY1Rl
c3RGaXh0dXJlOjpDb25maWcgQ3JlYXRlQ29uZmlnKCkgewogICBjb25maWcuZmlsZW5hbWUgPSAi
Zm9yZW1hbl9jaWYiOwogICBjb25maWcuZmlsZXBhdGggPSBSZXNvdXJjZVBhdGgoY29uZmlnLmZp
bGVuYW1lLCAieXV2Iik7CiAgIGNvbmZpZy5udW1fZnJhbWVzID0ga0ZvcmVtYW5OdW1GcmFtZXM7
Ci0gIGNvbmZpZy5od19lbmNvZGVyID0gdHJ1ZTsKLSAgY29uZmlnLmh3X2RlY29kZXIgPSB0cnVl
OwogICAvLyBJbiBvcmRlciB0byBub3Qgb3ZlcndoZWxtIHRoZSBPcGVuTUFYIGJ1ZmZlcnMgaW4g
dGhlIEFuZHJvaWQgTWVkaWFDb2RlYy4KICAgY29uZmlnLmVuY29kZV9pbl9yZWFsX3RpbWUgPSB0
cnVlOwogICByZXR1cm4gY29uZmlnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3Qvdmlk
ZW9jb2RlY190ZXN0X29wZW5oMjY0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190
ZXN0X29wZW5oMjY0LmNjCmluZGV4IGU1Y2Y3MWJhOTBmOTA0MmVlNjkzYzExNmQ5M2JhYmExM2Vk
ZGUwZjMuLmJkNGJiNTJiODUxOTFkYzU2MGFmM2E4ZDA5YzRlMzlmODJjMzczNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9vcGVuaDI2NC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3Rfb3BlbmgyNjQuY2MKQEAgLTMyLDggKzMy
LDYgQEAgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlOjpDb25maWcgQ3JlYXRlQ29uZmlnKCkgewogICBj
b25maWcubnVtX2ZyYW1lcyA9IGtOdW1GcmFtZXM7CiAgIC8vIE9ubHkgYWxsb3cgZW5jb2Rlci9k
ZWNvZGVyIHRvIHVzZSBzaW5nbGUgY29yZSwgZm9yIHByZWRpY3RhYmlsaXR5LgogICBjb25maWcu
dXNlX3NpbmdsZV9jb3JlID0gdHJ1ZTsKLSAgY29uZmlnLmh3X2VuY29kZXIgPSBmYWxzZTsKLSAg
Y29uZmlnLmh3X2RlY29kZXIgPSBmYWxzZTsKICAgcmV0dXJuIGNvbmZpZzsKIH0KIH0gIC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X3Bh
cmFtZXRlcml6ZWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfcGFyYW1l
dGVyaXplZC5jYwppbmRleCAwZDQ5YjgwZDk1YWYzMGM1YjI5MTQwMTNjNGE0ZDU2YzU0OWZkOTEz
Li5lZmM4MGFkZDJkYTVjMWQyMzkyMzkxNzE2OWYzMDEyNDI2NjJlMmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfcGFyYW1ldGVyaXplZC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfcGFyYW1ldGVyaXplZC5jYwpAQCAtMjAs
NyArMjAsNiBAQCBuYW1lc3BhY2UgewogLy8gTG9vcCB2YXJpYWJsZXMuCiBjb25zdCBzaXplX3Qg
a0JpdHJhdGVzW10gPSB7NTAwfTsKIGNvbnN0IFZpZGVvQ29kZWNUeXBlIGtWaWRlb0NvZGVjVHlw
ZVtdID0ge2tWaWRlb0NvZGVjVlA4fTsKLWNvbnN0IGJvb2wga0h3Q29kZWNbXSA9IHtmYWxzZX07
CiAKIC8vIENvZGVjIHNldHRpbmdzLgogY29uc3QgaW50IGtOdW1TcGF0aWFsTGF5ZXJzID0gMTsK
QEAgLTM5LDEyICszOCwxMSBAQCBjb25zdCBpbnQga051bUZyYW1lcyA9IDMwOwogY2xhc3MgVmlk
ZW9Db2RlY1Rlc3RQYXJhbWV0ZXJpemVkCiAgICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0LAog
ICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPAotICAgICAgICAgIDo6
dGVzdGluZzo6dHVwbGU8c2l6ZV90LCBWaWRlb0NvZGVjVHlwZSwgYm9vbD4+IHsKKyAgICAgICAg
ICA6OnRlc3Rpbmc6OnR1cGxlPHNpemVfdCwgVmlkZW9Db2RlY1R5cGU+PiB7CiAgcHJvdGVjdGVk
OgogICBWaWRlb0NvZGVjVGVzdFBhcmFtZXRlcml6ZWQoKQogICAgICAgOiBiaXRyYXRlXyg6OnRl
c3Rpbmc6OmdldDwwPihHZXRQYXJhbSgpKSksCi0gICAgICAgIGNvZGVjX3R5cGVfKDo6dGVzdGlu
Zzo6Z2V0PDE+KEdldFBhcmFtKCkpKSwKLSAgICAgICAgaHdfY29kZWNfKDo6dGVzdGluZzo6Z2V0
PDI+KEdldFBhcmFtKCkpKSB7fQorICAgICAgICBjb2RlY190eXBlXyg6OnRlc3Rpbmc6OmdldDwx
PihHZXRQYXJhbSgpKSkge30KICAgflZpZGVvQ29kZWNUZXN0UGFyYW1ldGVyaXplZCgpIG92ZXJy
aWRlID0gZGVmYXVsdDsKIAogICB2b2lkIFJ1blRlc3Qoc2l6ZV90IHdpZHRoLApAQCAtNTYsOCAr
NTQsNiBAQCBjbGFzcyBWaWRlb0NvZGVjVGVzdFBhcmFtZXRlcml6ZWQKICAgICBjb25maWcuZmls
ZXBhdGggPSBSZXNvdXJjZVBhdGgoZmlsZW5hbWUsICJ5dXYiKTsKICAgICBjb25maWcudXNlX3Np
bmdsZV9jb3JlID0ga1VzZVNpbmdsZUNvcmU7CiAgICAgY29uZmlnLm1lYXN1cmVfY3B1ID0ga01l
YXN1cmVDcHU7Ci0gICAgY29uZmlnLmh3X2VuY29kZXIgPSBod19jb2RlY187Ci0gICAgY29uZmln
Lmh3X2RlY29kZXIgPSBod19jb2RlY187CiAgICAgY29uZmlnLm51bV9mcmFtZXMgPSBrTnVtRnJh
bWVzOwogCiAgICAgY29uc3Qgc2l6ZV90IG51bV9zaW11bGNhc3Rfc3RyZWFtcyA9CkBAIC04MCwx
NCArNzYsMTMgQEAgY2xhc3MgVmlkZW9Db2RlY1Rlc3RQYXJhbWV0ZXJpemVkCiAgIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb0NvZGVjVGVzdEZpeHR1cmU+IGZpeHR1cmVfOwogICBjb25zdCBzaXplX3Qg
Yml0cmF0ZV87CiAgIGNvbnN0IFZpZGVvQ29kZWNUeXBlIGNvZGVjX3R5cGVfOwotICBjb25zdCBi
b29sIGh3X2NvZGVjXzsKIH07CiAKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKENvZGVjU2V0dGlu
Z3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0NvZGVjVGVzdFBhcmFtZXRlcml6ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OkNvbWJpbmUoOjp0ZXN0aW5nOjpW
YWx1ZXNJbihrQml0cmF0ZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4oa1ZpZGVvQ29kZWNUeXBlKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKGtId0Nv
ZGVjKSkpOworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisgICAgQ29kZWNTZXR0aW5ncywKKyAg
ICBWaWRlb0NvZGVjVGVzdFBhcmFtZXRlcml6ZWQsCisgICAgOjp0ZXN0aW5nOjpDb21iaW5lKDo6
dGVzdGluZzo6VmFsdWVzSW4oa0JpdHJhdGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjpWYWx1ZXNJbihrVmlkZW9Db2RlY1R5cGUpKSk7CiAKIFRFU1RfUChWaWRlb0NvZGVj
VGVzdFBhcmFtZXRlcml6ZWQsIEZvcmVtYW5fMzUyeDI4OF8zMCkgewogICBSdW5UZXN0KDM1Miwg
Mjg4LCAzMCwgImZvcmVtYW5fY2lmIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92
aWRlb2NvZGVjX3Rlc3RfdmlkZW90b29sYm94LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9j
b2RlY190ZXN0X3ZpZGVvdG9vbGJveC5jYwppbmRleCBmMzFmZjU0OGE4MTI1NWJlYzQ0NTk3M2Vj
NzUwYzM2NzAzMjhmMDU3Li42ZGZiOTkzY2U4ODFjN2VlZWQ0NmM4MTY0ZWYxZGI4ODY1YjRkNmFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfdmlkZW90b29s
Ym94LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF92aWRlb3Rvb2xi
b3guY2MKQEAgLTI4LDggKzI4LDYgQEAgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlOjpDb25maWcgQ3Jl
YXRlQ29uZmlnKCkgewogICBjb25maWcuZmlsZW5hbWUgPSAiZm9yZW1hbl9jaWYiOwogICBjb25m
aWcuZmlsZXBhdGggPSBSZXNvdXJjZVBhdGgoY29uZmlnLmZpbGVuYW1lLCAieXV2Iik7CiAgIGNv
bmZpZy5udW1fZnJhbWVzID0ga0ZvcmVtYW5OdW1GcmFtZXM7Ci0gIGNvbmZpZy5od19lbmNvZGVy
ID0gdHJ1ZTsKLSAgY29uZmlnLmh3X2RlY29kZXIgPSB0cnVlOwogICByZXR1cm4gY29uZmlnOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb3Byb2Nlc3Nvci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy90ZXN0L3ZpZGVvcHJvY2Vzc29yLmNjCmluZGV4IDVlOTgwY2RjZjFhY2M4MTU1
Zjg0MWU0ZjdlMDQ3NzkzYmEyMDZkNzQuLjY5NTgyNjYwZjkxMTg4YmFiODA5ZGFlMzQ0MTQ5ZjFh
NmZjOWY1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvcHJvY2Vzc29yLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvcHJvY2Vzc29yLmNjCkBAIC0xNCw2ICsxNCw3
IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJh
cGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgi
ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9o
MjY0X2NvbW1vbi5oIgpAQCAtMTczLDggKzE3NCw5IEBAIFZpZGVvUHJvY2Vzc29yOjpWaWRlb1By
b2Nlc3Nvcih3ZWJydGM6OlZpZGVvRW5jb2RlciogZW5jb2RlciwKICAgICAgIHN0YXRzXyhzdGF0
cyksCiAgICAgICBlbmNvZGVyXyhlbmNvZGVyKSwKICAgICAgIGRlY29kZXJzXyhkZWNvZGVycyks
Ci0gICAgICBiaXRyYXRlX2FsbG9jYXRvcl8oVmlkZW9Db2RlY0luaXRpYWxpemVyOjpDcmVhdGVC
aXRyYXRlQWxsb2NhdG9yKAotICAgICAgICAgIGNvbmZpZ18uY29kZWNfc2V0dGluZ3MpKSwKKyAg
ICAgIGJpdHJhdGVfYWxsb2NhdG9yXygKKyAgICAgICAgICBDcmVhdGVCdWlsdGluVmlkZW9CaXRy
YXRlQWxsb2NhdG9yRmFjdG9yeSgpCisgICAgICAgICAgICAgIC0+Q3JlYXRlVmlkZW9CaXRyYXRl
QWxsb2NhdG9yKGNvbmZpZ18uY29kZWNfc2V0dGluZ3MpKSwKICAgICAgIGZyYW1lcmF0ZV9mcHNf
KDApLAogICAgICAgZW5jb2RlX2NhbGxiYWNrXyh0aGlzKSwKICAgICAgIGlucHV0X2ZyYW1lX3Jl
YWRlcl8oaW5wdXRfZnJhbWVfcmVhZGVyKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0
L3ZpZGVvcHJvY2Vzc29yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9wcm9j
ZXNzb3JfdW5pdHRlc3QuY2MKaW5kZXggNTg5YTNkODk4YThlZTQ4OGE0MDE2ZWI2MjNjOWVhZDQz
ODU0YTU3OC4uM2Q0MWFkOTk4ZmViZmM2MjA2Mzc4N2NhMGJkMzVmZGUxOGY3ZjM2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9wcm9jZXNzb3JfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9wcm9jZXNzb3JfdW5pdHRlc3QuY2MKQEAgLTExLDEzICsx
MSwxNCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9y
eS5oIgorI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5oIgorI2luY2x1ZGUg
ImFwaS90ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVv
Y29kZWNfdGVzdF9maXh0dXJlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgi
CiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNp
bmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X3N0YXRzX2ltcGwuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb3Byb2Nlc3Nvci5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvbW9jay9tb2NrX3ZpZGVv
X2NvZGVjX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1
ZGUvdmlkZW9fY29kaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS90YXNrX3F1ZXVlX2Zvcl90ZXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZh
dWx0X3RlbXBvcmFsX2xheWVycy5jYwppbmRleCBkNTNmNDY5OTRkMzYwOGVmMzllM2UwNmU2MWVk
YWZhYWMzYTliODc1Li5jNWUxNjNmY2Y3MjBiOGIyOGVjOTgyNzUzMjE3NzQ3MzVhOTA3NzM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuY2MKQEAgLTcsOCAr
Nyw2IEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCiAgKi8KIAotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuaCIKLQogI2luY2x1ZGUgPHN0ZGxpYi5o
PgogI2luY2x1ZGUgPHN0cmluZy5oPgogCkBAIC0yMCw2ICsxOCw3IEBACiAjaW5jbHVkZSA8dmVj
dG9yPgogCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9y
YWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRl
b19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCkBAIC0yNywyNyArMjYsMzAgQEAKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKLVRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZzo6RnJhbWVDb25maWcoKQor
VnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnOjpGcmFtZUNvbmZpZygpCiAgICAgOiBGcmFt
ZUNvbmZpZyhrTm9uZSwga05vbmUsIGtOb25lLCBmYWxzZSkge30KIAotVGVtcG9yYWxMYXllcnM6
OkZyYW1lQ29uZmlnOjpGcmFtZUNvbmZpZyhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgbGFz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcG9yYWxMYXll
cnM6OkJ1ZmZlckZsYWdzIGdvbGRlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGFyZikKK1ZwOFRlbXBvcmFsTGF5
ZXJzOjpGcmFtZUNvbmZpZzo6RnJhbWVDb25maWcoCisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1
ZmZlckZsYWdzIGxhc3QsCisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGdvbGRl
biwKKyAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgYXJmKQogICAgIDogRnJhbWVD
b25maWcobGFzdCwgZ29sZGVuLCBhcmYsIGZhbHNlKSB7fQogCi1UZW1wb3JhbExheWVyczo6RnJh
bWVDb25maWc6OkZyYW1lQ29uZmlnKFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBsYXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wb3JhbExheWVyczo6
QnVmZmVyRmxhZ3MgZ29sZGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgYXJmLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGcmVlemVFbnRyb3B5KQorVnA4VGVtcG9yYWxMYXllcnM6
OkZyYW1lQ29uZmlnOjpGcmFtZUNvbmZpZygKKyAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVy
RmxhZ3MgbGFzdCwKKyAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgZ29sZGVuLAor
ICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBhcmYsCisgICAgRnJlZXplRW50cm9w
eSkKICAgICA6IEZyYW1lQ29uZmlnKGxhc3QsIGdvbGRlbiwgYXJmLCB0cnVlKSB7fQogCi1UZW1w
b3JhbExheWVyczo6RnJhbWVDb25maWc6OkZyYW1lQ29uZmlnKFRlbXBvcmFsTGF5ZXJzOjpCdWZm
ZXJGbGFncyBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgZ29sZGVuLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgYXJmLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyZWV6ZV9lbnRyb3B5
KQotICAgIDogZHJvcF9mcmFtZShsYXN0ID09IFRlbXBvcmFsTGF5ZXJzOjprTm9uZSAmJgotICAg
ICAgICAgICAgICAgICBnb2xkZW4gPT0gVGVtcG9yYWxMYXllcnM6OmtOb25lICYmCi0gICAgICAg
ICAgICAgICAgIGFyZiA9PSBUZW1wb3JhbExheWVyczo6a05vbmUpLAorVnA4VGVtcG9yYWxMYXll
cnM6OkZyYW1lQ29uZmlnOjpGcmFtZUNvbmZpZygKKyAgICBWcDhUZW1wb3JhbExheWVyczo6QnVm
ZmVyRmxhZ3MgbGFzdCwKKyAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgZ29sZGVu
LAorICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBhcmYsCisgICAgYm9vbCBmcmVl
emVfZW50cm9weSkKKyAgICA6IGRyb3BfZnJhbWUobGFzdCA9PSBWcDhUZW1wb3JhbExheWVyczo6
a05vbmUgJiYKKyAgICAgICAgICAgICAgICAgZ29sZGVuID09IFZwOFRlbXBvcmFsTGF5ZXJzOjpr
Tm9uZSAmJgorICAgICAgICAgICAgICAgICBhcmYgPT0gVnA4VGVtcG9yYWxMYXllcnM6OmtOb25l
KSwKICAgICAgIGxhc3RfYnVmZmVyX2ZsYWdzKGxhc3QpLAogICAgICAgZ29sZGVuX2J1ZmZlcl9m
bGFncyhnb2xkZW4pLAogICAgICAgYXJmX2J1ZmZlcl9mbGFncyhhcmYpLApAQCAtMTA2LDE1ICsx
MDgsMTUgQEAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgaW50PiBHZXRUZW1wb3JhbElkcyhzaXplX3Qg
bnVtX2xheWVycykgewogICByZXR1cm4gezB9OwogfQogCi11aW50OF90IEdldFVwZGF0ZWRCdWZm
ZXJzKGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgY29uZmlnKSB7Cit1aW50OF90
IEdldFVwZGF0ZWRCdWZmZXJzKGNvbnN0IFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYg
Y29uZmlnKSB7CiAgIHVpbnQ4X3QgZmxhZ3MgPSAwOwotICBpZiAoY29uZmlnLmxhc3RfYnVmZmVy
X2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7CisgIGlmIChj
b25maWcubGFzdF9idWZmZXJfZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6
OmtVcGRhdGUpIHsKICAgICBmbGFncyB8PSBzdGF0aWNfY2FzdDx1aW50OF90PihWcDhCdWZmZXJS
ZWZlcmVuY2U6OmtMYXN0KTsKICAgfQotICBpZiAoY29uZmlnLmdvbGRlbl9idWZmZXJfZmxhZ3Mg
JiBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtVcGRhdGUpIHsKKyAgaWYgKGNvbmZpZy5n
b2xkZW5fYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBk
YXRlKSB7CiAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVnA4QnVmZmVyUmVmZXJl
bmNlOjprR29sZGVuKTsKICAgfQotICBpZiAoY29uZmlnLmFyZl9idWZmZXJfZmxhZ3MgJiBUZW1w
b3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtVcGRhdGUpIHsKKyAgaWYgKGNvbmZpZy5hcmZfYnVm
ZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7CiAg
ICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVnA4QnVmZmVyUmVmZXJlbmNlOjprQWx0
cmVmKTsKICAgfQogICByZXR1cm4gZmxhZ3M7CkBAIC0xMjIsMTAgKzEyNCwxMCBAQCB1aW50OF90
IEdldFVwZGF0ZWRCdWZmZXJzKGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgY29u
ZmlnKSB7CiAKIC8vIEZpbmQgdGhlIHNldCBvZiBidWZmZXJzIHRoYXQgYXJlIG5ldmVyIHVwZGF0
ZWQgYnkgdGhlIGdpdmVuIHBhdHRlcm4uCiBzdGQ6OnNldDxWcDhCdWZmZXJSZWZlcmVuY2U+IEZp
bmRLZkJ1ZmZlcnMoCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVtcG9yYWxMYXllcnM6OkZyYW1l
Q29uZmlnPiYgZnJhbWVfY29uZmlncykgeworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZwOFRlbXBv
cmFsTGF5ZXJzOjpGcmFtZUNvbmZpZz4mIGZyYW1lX2NvbmZpZ3MpIHsKICAgc3RkOjpzZXQ8VnA4
QnVmZmVyUmVmZXJlbmNlPiBrZl9idWZmZXJzKGtBbGxCdWZmZXJzLmJlZ2luKCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQWxsQnVmZmVycy5lbmQoKSk7Ci0g
IGZvciAoVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIGNvbmZpZyA6IGZyYW1lX2NvbmZpZ3Mp
IHsKKyAgZm9yIChWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgY29uZmlnIDogZnJhbWVf
Y29uZmlncykgewogICAgIC8vIEdldCBiaXQtbWFza2VkIHNldCBvZiB1cGRhdGUgYnVmZmVycyBm
b3IgdGhpcyBmcmFtZSBjb25maWcuCiAgICAgdWludDhfdCB1cGRhdGVkX2J1ZmZlcnMgPSBHZXRV
cGRhdGVkQnVmZmVycyhjb25maWcpOwogICAgIGZvciAoVnA4QnVmZmVyUmVmZXJlbmNlIGJ1ZmZl
ciA6IGtBbGxCdWZmZXJzKSB7CkBAIC0xMzgsNyArMTQwLDcgQEAgc3RkOjpzZXQ8VnA4QnVmZmVy
UmVmZXJlbmNlPiBGaW5kS2ZCdWZmZXJzKAogfQogfSAgLy8gbmFtZXNwYWNlCiAKLXN0ZDo6dmVj
dG9yPFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZz4KK3N0ZDo6dmVjdG9yPFZwOFRlbXBvcmFs
TGF5ZXJzOjpGcmFtZUNvbmZpZz4KIERlZmF1bHRUZW1wb3JhbExheWVyczo6R2V0VGVtcG9yYWxQ
YXR0ZXJuKHNpemVfdCBudW1fbGF5ZXJzKSB7CiAgIC8vIEZvciBpbmRleGluZyBpbiB0aGUgcGF0
dGVybnMgZGVzY3JpYmVkIGJlbG93ICh3aGljaCB0ZW1wb3JhbCBsYXllcnMgdGhleQogICAvLyBi
ZWxvbmcgdG8pLCBzZWUgdGhlIGRpYWdyYW0gYWJvdmUuCkBAIC0yNjIsNyArMjY0LDcgQEAgRGVm
YXVsdFRlbXBvcmFsTGF5ZXJzOjpEZWZhdWx0VGVtcG9yYWxMYXllcnMoaW50IG51bWJlcl9vZl90
ZW1wb3JhbF9sYXllcnMpCiAgICAgICBrZl9idWZmZXJzXyhGaW5kS2ZCdWZmZXJzKHRlbXBvcmFs
X3BhdHRlcm5fKSksCiAgICAgICBwYXR0ZXJuX2lkeF8oa1VuaW5pdGlhbGl6ZWRQYXR0ZXJuSW5k
ZXgpLAogICAgICAgY2hlY2tlcl8oVGVtcG9yYWxMYXllcnNDaGVja2VyOjpDcmVhdGVUZW1wb3Jh
bExheWVyc0NoZWNrZXIoCi0gICAgICAgICAgVGVtcG9yYWxMYXllcnNUeXBlOjprRml4ZWRQYXR0
ZXJuLAorICAgICAgICAgIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybiwKICAg
ICAgICAgICBudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzKSkgewogICBSVENfQ0hFQ0tfR0Uoa01h
eFRlbXBvcmFsU3RyZWFtcywgbnVtYmVyX29mX3RlbXBvcmFsX2xheWVycyk7CiAgIFJUQ19DSEVD
S19HRShudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzLCAwKTsKQEAgLTI3OCw2ICsyODAsOCBAQCBE
ZWZhdWx0VGVtcG9yYWxMYXllcnM6OkRlZmF1bHRUZW1wb3JhbExheWVycyhpbnQgbnVtYmVyX29m
X3RlbXBvcmFsX2xheWVycykKICAgfQogfQogCitEZWZhdWx0VGVtcG9yYWxMYXllcnM6On5EZWZh
dWx0VGVtcG9yYWxMYXllcnMoKSA9IGRlZmF1bHQ7CisKIGJvb2wgRGVmYXVsdFRlbXBvcmFsTGF5
ZXJzOjpTdXBwb3J0c0VuY29kZXJGcmFtZURyb3BwaW5nKCkgY29uc3QgewogICAvLyBUaGlzIGNs
YXNzIGFsbG93cyB0aGUgZW5jb2RlciBkcm9wIGZyYW1lcyBhcyBpdCBzZWVzIGZpdC4KICAgcmV0
dXJuIHRydWU7CkBAIC0zNDYsMTMgKzM1MCwxMyBAQCBib29sIERlZmF1bHRUZW1wb3JhbExheWVy
czo6SXNTeW5jRnJhbWUoY29uc3QgRnJhbWVDb25maWcmIGNvbmZpZykgY29uc3QgewogICByZXR1
cm4gdHJ1ZTsKIH0KIAotVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIERlZmF1bHRUZW1wb3Jh
bExheWVyczo6VXBkYXRlTGF5ZXJDb25maWcoCitWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25m
aWcgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzOjpVcGRhdGVMYXllckNvbmZpZygKICAgICB1aW50MzJf
dCB0aW1lc3RhbXApIHsKICAgUlRDX0RDSEVDS19HVChudW1fbGF5ZXJzXywgMCk7CiAgIFJUQ19E
Q0hFQ0tfTFQoMCwgdGVtcG9yYWxfcGF0dGVybl8uc2l6ZSgpKTsKIAogICBwYXR0ZXJuX2lkeF8g
PSAocGF0dGVybl9pZHhfICsgMSkgJSB0ZW1wb3JhbF9wYXR0ZXJuXy5zaXplKCk7Ci0gIFRlbXBv
cmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0ZW1wb3JhbF9wYXR0ZXJuX1twYXR0
ZXJuX2lkeF9dOworICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0g
dGVtcG9yYWxfcGF0dGVybl9bcGF0dGVybl9pZHhfXTsKICAgdGxfY29uZmlnLmVuY29kZXJfbGF5
ZXJfaWQgPSB0bF9jb25maWcucGFja2V0aXplcl90ZW1wb3JhbF9pZHggPQogICAgICAgdGVtcG9y
YWxfaWRzX1twYXR0ZXJuX2lkeF8gJSB0ZW1wb3JhbF9pZHNfLnNpemUoKV07CiAKQEAgLTU2MCw5
ICs1NjQsMTEgQEAgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6RGVmYXVsdFRlbXBvcmFs
TGF5ZXJzQ2hlY2tlcigKICAgfQogfQogCitEZWZhdWx0VGVtcG9yYWxMYXllcnNDaGVja2VyOjp+
RGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcigpID0gZGVmYXVsdDsKKwogYm9vbCBEZWZhdWx0
VGVtcG9yYWxMYXllcnNDaGVja2VyOjpDaGVja1RlbXBvcmFsQ29uZmlnKAogICAgIGJvb2wgZnJh
bWVfaXNfa2V5ZnJhbWUsCi0gICAgY29uc3QgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiBm
cmFtZV9jb25maWcpIHsKKyAgICBjb25zdCBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcm
IGZyYW1lX2NvbmZpZykgewogICBpZiAoIVRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q2hlY2tUZW1w
b3JhbENvbmZpZyhmcmFtZV9pc19rZXlmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfY29uZmlnKSkgewogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTYxMyw3ICs2MTksNyBAQCBib29sIERlZmF1bHRUZW1wb3JhbExheWVyc0NoZWNrZXI6
OkNoZWNrVGVtcG9yYWxDb25maWcoCiAgIHN0ZDo6dmVjdG9yPGludD4gZGVwZW5kZW5jaWVzOwog
CiAgIGlmIChmcmFtZV9jb25maWcubGFzdF9idWZmZXJfZmxhZ3MgJgotICAgICAgVGVtcG9yYWxM
YXllcnM6OkJ1ZmZlckZsYWdzOjprUmVmZXJlbmNlKSB7CisgICAgICBWcDhUZW1wb3JhbExheWVy
czo6QnVmZmVyRmxhZ3M6OmtSZWZlcmVuY2UpIHsKICAgICB1aW50OF90IHJlZmVyZW5jZWRfbGF5
ZXIgPSB0ZW1wb3JhbF9pZHNfW2xhc3RfLnBhdHRlcm5faWR4XTsKICAgICBpZiAocmVmZXJlbmNl
ZF9sYXllciA+IDApIHsKICAgICAgIG5lZWRfc3luYyA9IGZhbHNlOwpAQCAtNjI4LDcgKzYzNCw4
IEBAIGJvb2wgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q2hlY2tUZW1wb3JhbENvbmZp
ZygKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAotICBpZiAoZnJhbWVfY29uZmlnLmFyZl9idWZm
ZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtSZWZlcmVuY2UpIHsKKyAg
aWYgKGZyYW1lX2NvbmZpZy5hcmZfYnVmZmVyX2ZsYWdzICYKKyAgICAgIFZwOFRlbXBvcmFsTGF5
ZXJzOjpCdWZmZXJGbGFnczo6a1JlZmVyZW5jZSkgewogICAgIHVpbnQ4X3QgcmVmZXJlbmNlZF9s
YXllciA9IHRlbXBvcmFsX2lkc19bYXJmXy5wYXR0ZXJuX2lkeF07CiAgICAgaWYgKHJlZmVyZW5j
ZWRfbGF5ZXIgPiAwKSB7CiAgICAgICBuZWVkX3N5bmMgPSBmYWxzZTsKQEAgLTY0NCw3ICs2NTEs
NyBAQCBib29sIERlZmF1bHRUZW1wb3JhbExheWVyc0NoZWNrZXI6OkNoZWNrVGVtcG9yYWxDb25m
aWcoCiAgIH0KIAogICBpZiAoZnJhbWVfY29uZmlnLmdvbGRlbl9idWZmZXJfZmxhZ3MgJgotICAg
ICAgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprUmVmZXJlbmNlKSB7CisgICAgICBWcDhU
ZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtSZWZlcmVuY2UpIHsKICAgICB1aW50OF90IHJl
ZmVyZW5jZWRfbGF5ZXIgPSB0ZW1wb3JhbF9pZHNfW2dvbGRlbl8ucGF0dGVybl9pZHhdOwogICAg
IGlmIChyZWZlcmVuY2VkX2xheWVyID4gMCkgewogICAgICAgbmVlZF9zeW5jID0gZmFsc2U7CkBA
IC02ODAsMTcgKzY4NywxOSBAQCBib29sIERlZmF1bHRUZW1wb3JhbExheWVyc0NoZWNrZXI6OkNo
ZWNrVGVtcG9yYWxDb25maWcoCiAgICAgfQogICB9CiAKLSAgaWYgKGZyYW1lX2NvbmZpZy5sYXN0
X2J1ZmZlcl9mbGFncyAmIFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkgewor
ICBpZiAoZnJhbWVfY29uZmlnLmxhc3RfYnVmZmVyX2ZsYWdzICYKKyAgICAgIFZwOFRlbXBvcmFs
TGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkgewogICAgIGxhc3RfLmlzX3VwZGF0ZWRfdGhp
c19jeWNsZSA9IHRydWU7CiAgICAgbGFzdF8ucGF0dGVybl9pZHggPSBwYXR0ZXJuX2lkeF87CiAg
ICAgbGFzdF8uaXNfa2V5ZnJhbWUgPSBmYWxzZTsKICAgfQotICBpZiAoZnJhbWVfY29uZmlnLmFy
Zl9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtVcGRhdGUpIHsK
KyAgaWYgKGZyYW1lX2NvbmZpZy5hcmZfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6
OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7CiAgICAgYXJmXy5pc191cGRhdGVkX3RoaXNfY3ljbGUg
PSB0cnVlOwogICAgIGFyZl8ucGF0dGVybl9pZHggPSBwYXR0ZXJuX2lkeF87CiAgICAgYXJmXy5p
c19rZXlmcmFtZSA9IGZhbHNlOwogICB9Ci0gIGlmIChmcmFtZV9jb25maWcuZ29sZGVuX2J1ZmZl
cl9mbGFncyAmIFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkgeworICBpZiAo
ZnJhbWVfY29uZmlnLmdvbGRlbl9idWZmZXJfZmxhZ3MgJgorICAgICAgVnA4VGVtcG9yYWxMYXll
cnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7CiAgICAgZ29sZGVuXy5pc191cGRhdGVkX3RoaXNf
Y3ljbGUgPSB0cnVlOwogICAgIGdvbGRlbl8ucGF0dGVybl9pZHggPSBwYXR0ZXJuX2lkeF87CiAg
ICAgZ29sZGVuXy5pc19rZXlmcmFtZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZhdWx0
X3RlbXBvcmFsX2xheWVycy5oCmluZGV4IGJkYTQzY2Q2ZDkzYjQxNGJiZTdhNGJhYWE1YmQyNjYx
ZmM3NDlkNmIuLmZmZjYyYTU1N2QzNmUwZGU5ZmZkYWJmYjBjY2QwMDgxNTMyMDIzODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmgKQEAgLTE4LDIzICsxOCwy
MyBAQAogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNr
ZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUv
dnA4X3RlbXBvcmFsX2xheWVycy5oIgotCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCisj
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3RlbXBvcmFs
X2xheWVyc19jaGVja2VyLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBEZWZhdWx0
VGVtcG9yYWxMYXllcnMgOiBwdWJsaWMgVGVtcG9yYWxMYXllcnMgeworY2xhc3MgRGVmYXVsdFRl
bXBvcmFsTGF5ZXJzIDogcHVibGljIFZwOFRlbXBvcmFsTGF5ZXJzIHsKICBwdWJsaWM6CiAgIGV4
cGxpY2l0IERlZmF1bHRUZW1wb3JhbExheWVycyhpbnQgbnVtYmVyX29mX3RlbXBvcmFsX2xheWVy
cyk7Ci0gIHZpcnR1YWwgfkRlZmF1bHRUZW1wb3JhbExheWVycygpIHt9CisgIH5EZWZhdWx0VGVt
cG9yYWxMYXllcnMoKSBvdmVycmlkZTsKIAogICBib29sIFN1cHBvcnRzRW5jb2RlckZyYW1lRHJv
cHBpbmcoKSBjb25zdCBvdmVycmlkZTsKIAogICAvLyBSZXR1cm5zIHRoZSByZWNvbW1lbmRlZCBW
UDggZW5jb2RlIGZsYWdzIG5lZWRlZC4gTWF5IHJlZnJlc2ggdGhlIGRlY29kZXIKICAgLy8gYW5k
L29yIHVwZGF0ZSB0aGUgcmVmZXJlbmNlIGJ1ZmZlcnMuCi0gIFRlbXBvcmFsTGF5ZXJzOjpGcmFt
ZUNvbmZpZyBVcGRhdGVMYXllckNvbmZpZyh1aW50MzJfdCB0aW1lc3RhbXApIG92ZXJyaWRlOwor
ICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgVXBkYXRlTGF5ZXJDb25maWcodWludDMy
X3QgdGltZXN0YW1wKSBvdmVycmlkZTsKIAogICAvLyBOZXcgdGFyZ2V0IGJpdHJhdGUsIHBlciB0
ZW1wb3JhbCBsYXllci4KICAgdm9pZCBPblJhdGVzVXBkYXRlZChjb25zdCBzdGQ6OnZlY3Rvcjx1
aW50MzJfdD4mIGJpdHJhdGVzX2JwcywKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgRGVmYXVsdFRl
bXBvcmFsTGF5ZXJzIDogcHVibGljIFRlbXBvcmFsTGF5ZXJzIHsKIAogIHByaXZhdGU6CiAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtLZXlmcmFtZUJ1ZmZlciA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCk7Ci0gIHN0YXRpYyBzdGQ6OnZlY3RvcjxUZW1wb3JhbExheWVyczo6
RnJhbWVDb25maWc+IEdldFRlbXBvcmFsUGF0dGVybigKKyAgc3RhdGljIHN0ZDo6dmVjdG9yPFZw
OFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZz4gR2V0VGVtcG9yYWxQYXR0ZXJuKAogICAgICAg
c2l6ZV90IG51bV9sYXllcnMpOwogICBib29sIElzU3luY0ZyYW1lKGNvbnN0IEZyYW1lQ29uZmln
JiBjb25maWcpIGNvbnN0OwogICB2b2lkIFZhbGlkYXRlUmVmZXJlbmNlcyhCdWZmZXJGbGFncyog
ZmxhZ3MsIFZwOEJ1ZmZlclJlZmVyZW5jZSByZWYpIGNvbnN0OwpAQCAtNTgsNyArNTgsNyBAQCBj
bGFzcyBEZWZhdWx0VGVtcG9yYWxMYXllcnMgOiBwdWJsaWMgVGVtcG9yYWxMYXllcnMgewogCiAg
IGNvbnN0IHNpemVfdCBudW1fbGF5ZXJzXzsKICAgY29uc3Qgc3RkOjp2ZWN0b3I8dW5zaWduZWQg
aW50PiB0ZW1wb3JhbF9pZHNfOwotICBjb25zdCBzdGQ6OnZlY3RvcjxUZW1wb3JhbExheWVyczo6
RnJhbWVDb25maWc+IHRlbXBvcmFsX3BhdHRlcm5fOworICBjb25zdCBzdGQ6OnZlY3RvcjxWcDhU
ZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc+IHRlbXBvcmFsX3BhdHRlcm5fOwogICAvLyBTZXQg
b2YgYnVmZmVycyB0aGF0IGFyZSBuZXZlciB1cGRhdGVkIGV4Y2VwdCBieSBrZXlmcmFtZXMuCiAg
IGNvbnN0IHN0ZDo6c2V0PFZwOEJ1ZmZlclJlZmVyZW5jZT4ga2ZfYnVmZmVyc187CiAKQEAgLTk1
LDkgKzk1LDExIEBAIGNsYXNzIERlZmF1bHRUZW1wb3JhbExheWVycyA6IHB1YmxpYyBUZW1wb3Jh
bExheWVycyB7CiBjbGFzcyBEZWZhdWx0VGVtcG9yYWxMYXllcnNDaGVja2VyIDogcHVibGljIFRl
bXBvcmFsTGF5ZXJzQ2hlY2tlciB7CiAgcHVibGljOgogICBleHBsaWNpdCBEZWZhdWx0VGVtcG9y
YWxMYXllcnNDaGVja2VyKGludCBudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzKTsKKyAgfkRlZmF1
bHRUZW1wb3JhbExheWVyc0NoZWNrZXIoKSBvdmVycmlkZTsKKwogICBib29sIENoZWNrVGVtcG9y
YWxDb25maWcoCiAgICAgICBib29sIGZyYW1lX2lzX2tleWZyYW1lLAotICAgICAgY29uc3QgVGVt
cG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiBmcmFtZV9jb25maWcpIG92ZXJyaWRlOworICAgICAg
Y29uc3QgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiBmcmFtZV9jb25maWcpIG92ZXJy
aWRlOwogCiAgcHJpdmF0ZToKICAgc3RydWN0IEJ1ZmZlclN0YXRlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnNfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzX3VuaXR0ZXN0LmNjCmluZGV4IGFk
MzFhNmVmNGEwYWVjYmIzMzJiMTAxNTZmZTlkNzk5ODhmZDBmMWMuLjVlZTY1MjA1NWNlYTUxNzc4
MmIzY2NlZGNmMDk5NDNkYWY3MWM3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvZGVm
YXVsdF90ZW1wb3JhbF9sYXllcnNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9k
ZWZhdWx0X3RlbXBvcmFsX2xheWVyc191bml0dGVzdC5jYwpAQCAtNzQsNyArNzQsNyBAQCBjb25z
dGV4cHIgaW50IGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSA9CiBjb25zdGV4cHIgaW50IGtEZWZhdWx0
UXAgPSAyOwogfSAgLy8gbmFtZXNwYWNlCiAKLXVzaW5nIEJ1ZmZlckZsYWdzID0gVGVtcG9yYWxM
YXllcnM6OkJ1ZmZlckZsYWdzOwordXNpbmcgQnVmZmVyRmxhZ3MgPSBWcDhUZW1wb3JhbExheWVy
czo6QnVmZmVyRmxhZ3M7CiAKIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCAyTGF5ZXJzKSB7CiAg
IGNvbnN0ZXhwciBpbnQga051bUxheWVycyA9IDI7CkBAIC0xMTQsNyArMTE0LDcgQEAgVEVTVChU
ZW1wb3JhbExheWVyc1Rlc3QsIDJMYXllcnMpIHsKIAogICB1aW50MzJfdCB0aW1lc3RhbXAgPSAw
OwogICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyArK2kpIHsKLSAgICBUZW1wb3JhbExheWVyczo6
RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsK
KyAgICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRl
TGF5ZXJDb25maWcodGltZXN0YW1wKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZmxhZ3NbaV0s
IExpYnZweFZwOEVuY29kZXI6OkVuY29kZUZsYWdzKHRsX2NvbmZpZykpIDw8IGk7CiAgICAgdGwu
T25FbmNvZGVEb25lKHRpbWVzdGFtcCwga0RlZmF1bHRCeXRlc1BlckZyYW1lLCBpID09IDAsIGtE
ZWZhdWx0UXAsCiAgICAgICAgICAgICAgICAgICAgICZ2cDhfaW5mbyk7CkBAIC0xNjYsNyArMTY2
LDcgQEAgVEVTVChUZW1wb3JhbExheWVyc1Rlc3QsIDNMYXllcnMpIHsKIAogICB1bnNpZ25lZCBp
bnQgdGltZXN0YW1wID0gMDsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytpKSB7Ci0gICAg
VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29u
ZmlnKHRpbWVzdGFtcCk7CisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2Nv
bmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgICAgRVhQRUNUX0VRKGV4
cGVjdGVkX2ZsYWdzW2ldLCBMaWJ2cHhWcDhFbmNvZGVyOjpFbmNvZGVGbGFncyh0bF9jb25maWcp
KSA8PCBpOwogICAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0Qnl0ZXNQZXJG
cmFtZSwgaSA9PSAwLCBrRGVmYXVsdFFwLAogICAgICAgICAgICAgICAgICAgICAmdnA4X2luZm8p
OwpAQCAtMjA3LDcgKzIwNyw3IEBAIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCBBbHRlcm5hdGl2
ZTNMYXllcnMpIHsKIAogICB1bnNpZ25lZCBpbnQgdGltZXN0YW1wID0gMDsKICAgZm9yIChpbnQg
aSA9IDA7IGkgPCA4OyArK2kpIHsKLSAgICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxf
Y29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKKyAgICBWcDhUZW1wb3Jh
bExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGlt
ZXN0YW1wKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZmxhZ3NbaV0sIExpYnZweFZwOEVuY29k
ZXI6OkVuY29kZUZsYWdzKHRsX2NvbmZpZykpIDw8IGk7CiAgICAgdGwuT25FbmNvZGVEb25lKHRp
bWVzdGFtcCwga0RlZmF1bHRCeXRlc1BlckZyYW1lLCBpID09IDAsIGtEZWZhdWx0UXAsCiAgICAg
ICAgICAgICAgICAgICAgICZ2cDhfaW5mbyk7CkBAIC0yMzgsNyArMjM4LDcgQEAgVEVTVChUZW1w
b3JhbExheWVyc1Rlc3QsIFNlYXJjaE9yZGVyKSB7CiAKICAgLy8gU3RhcnQgd2l0aCBhIGtleS1m
cmFtZS4gdGxfY29uZmlnIGZsYWdzIGNhbiBiZSBpZ25vcmVkLgogICB1aW50MzJfdCB0aW1lc3Rh
bXAgPSAwOwotICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBk
YXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKKyAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29u
ZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgIHRsLk9u
RW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwgdHJ1ZSwga0RlZmF1
bHRRcCwKICAgICAgICAgICAgICAgICAgICZ2cDhfaW5mbyk7CiAKQEAgLTI4Miw3ICsyODIsNyBA
QCBURVNUKFRlbXBvcmFsTGF5ZXJzVGVzdCwgU2VhcmNoT3JkZXJXaXRoRHJvcCkgewogCiAgIC8v
IFN0YXJ0IHdpdGggYSBrZXktZnJhbWUuIHRsX2NvbmZpZyBmbGFncyBjYW4gYmUgaWdub3JlZC4K
ICAgdWludDMyX3QgdGltZXN0YW1wID0gMDsKLSAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmln
IHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgIFZwOFRlbXBv
cmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVMYXllckNvbmZpZyh0
aW1lc3RhbXApOwogICB0bC5PbkVuY29kZURvbmUodGltZXN0YW1wLCBrRGVmYXVsdEJ5dGVzUGVy
RnJhbWUsIHRydWUsIGtEZWZhdWx0UXAsCiAgICAgICAgICAgICAgICAgICAmdnA4X2luZm8pOwog
CkBAIC0zNDMsNyArMzQzLDcgQEAgVEVTVChUZW1wb3JhbExheWVyc1Rlc3QsIDRMYXllcnMpIHsK
IAogICB1aW50MzJfdCB0aW1lc3RhbXAgPSAwOwogICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyAr
K2kpIHsKLSAgICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBk
YXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKKyAgICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVD
b25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRfZmxhZ3NbaV0sIExpYnZweFZwOEVuY29kZXI6OkVuY29kZUZsYWdz
KHRsX2NvbmZpZykpIDw8IGk7CiAgICAgdGwuT25FbmNvZGVEb25lKHRpbWVzdGFtcCwga0RlZmF1
bHRCeXRlc1BlckZyYW1lLCBpID09IDAsIGtEZWZhdWx0UXAsCiAgICAgICAgICAgICAgICAgICAg
ICZ2cDhfaW5mbyk7CkBAIC0zNzMsNyArMzczLDcgQEAgVEVTVChUZW1wb3JhbExheWVyc1Rlc3Qs
IERvZXNOb3RSZWZlcmVuY2VEcm9wcGVkRnJhbWVzKSB7CiAKICAgLy8gU3RhcnQgd2l0aCBhIGtl
eWZyYW1lLgogICB1aW50MzJfdCB0aW1lc3RhbXAgPSAwOwotICBUZW1wb3JhbExheWVyczo6RnJh
bWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKKyAg
VnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVy
Q29uZmlnKHRpbWVzdGFtcCk7CiAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0
Qnl0ZXNQZXJGcmFtZSwgdHJ1ZSwga0RlZmF1bHRRcCwKICAgICAgICAgICAgICAgICAgICZ2cDhf
aW5mbyk7CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBURVNUKFRlbXBvcmFsTGF5ZXJzVGVzdCwgRG9l
c05vdFJlZmVyZW5jZVVubGVzc0d1YXJhbnRlZWRUb0V4aXN0KSB7CiAKICAgLy8gU3RhcnQgd2l0
aCBhIGtleWZyYW1lLgogICB1aW50MzJfdCB0aW1lc3RhbXAgPSAwOwotICBUZW1wb3JhbExheWVy
czo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1w
KTsKKyAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0
ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtE
ZWZhdWx0Qnl0ZXNQZXJGcmFtZSwgdHJ1ZSwga0RlZmF1bHRRcCwKICAgICAgICAgICAgICAgICAg
ICZ2cDhfaW5mbyk7CiAKQEAgLTUzMCw3ICs1MzAsNyBAQCBURVNUKFRlbXBvcmFsTGF5ZXJzVGVz
dCwgRG9lc05vdFJlZmVyZW5jZVVubGVzc0d1YXJhbnRlZWRUb0V4aXN0TG9uZ0RlbGF5KSB7CiAK
ICAgLy8gU3RhcnQgd2l0aCBhIGtleWZyYW1lLgogICB1aW50MzJfdCB0aW1lc3RhbXAgPSAwOwot
ICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJD
b25maWcodGltZXN0YW1wKTsKKyAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2Nv
bmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgIHRsLk9uRW5jb2RlRG9u
ZSh0aW1lc3RhbXAsIGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwgdHJ1ZSwga0RlZmF1bHRRcCwKICAg
ICAgICAgICAgICAgICAgICZ2cDhfaW5mbyk7CiAKQEAgLTYxMCw3ICs2MTAsOCBAQCBURVNUKFRl
bXBvcmFsTGF5ZXJzVGVzdCwgS2V5RnJhbWUpIHsKICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBp
OyArK2opIHsKICAgICAgIC8vIFNpbmNlIGxhc3QgZnJhbWUgd2FzIGFsd2F5cyBhIGtleWZyYW1l
IGFuZCB0aHVzIGluZGV4IDAgaW4gdGhlIHBhdHRlcm4sCiAgICAgICAvLyB0aGlzIGxvb3Agc3Rh
cnRzIGF0IGluZGV4IDEuCi0gICAgICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29u
ZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKKyAgICAgIFZwOFRlbXBvcmFs
TGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPQorICAgICAgICAgIHRsLlVwZGF0ZUxheWVy
Q29uZmlnKHRpbWVzdGFtcCk7CiAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZmxhZ3Nbal0sIExp
YnZweFZwOEVuY29kZXI6OkVuY29kZUZsYWdzKHRsX2NvbmZpZykpCiAgICAgICAgICAgPDwgajsK
ICAgICAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwg
ZmFsc2UsIGtEZWZhdWx0UXAsCkBAIC02MjIsNyArNjIzLDcgQEAgVEVTVChUZW1wb3JhbExheWVy
c1Rlc3QsIEtleUZyYW1lKSB7CiAgICAgICB0aW1lc3RhbXAgKz0gMzAwMDsKICAgICB9CiAKLSAg
ICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJD
b25maWcodGltZXN0YW1wKTsKKyAgICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxf
Y29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKICAgICB0bC5PbkVuY29k
ZURvbmUodGltZXN0YW1wLCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUsIHRydWUsIGtEZWZhdWx0UXAs
CiAgICAgICAgICAgICAgICAgICAgICZ2cDhfaW5mbyk7CiAgICAgRVhQRUNUX1RSVUUodnA4X2lu
Zm8ubGF5ZXJTeW5jKSA8PCAiS2V5IGZyYW1lIHNob3VsZCBiZSBtYXJrZWQgbGF5ZXIgc3luYy4i
OwpAQCAtNjUyLDkgKzY1Myw5IEBAIGNsYXNzIFRlbXBvcmFsTGF5ZXJzUmVmZXJlbmNlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7CiAgICAgYm9vbCBzeW5jOwog
ICB9OwogCi0gIGJvb2wgVXBkYXRlU3luY1JlZlN0YXRlKGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpC
dWZmZXJGbGFncyYgZmxhZ3MsCisgIGJvb2wgVXBkYXRlU3luY1JlZlN0YXRlKGNvbnN0IFZwOFRl
bXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyYgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEJ1ZmZlclN0YXRlKiBidWZmZXJfc3RhdGUpIHsKLSAgICBpZiAoZmxhZ3MgJiBUZW1wb3Jh
bExheWVyczo6a1JlZmVyZW5jZSkgeworICAgIGlmIChmbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJz
OjprUmVmZXJlbmNlKSB7CiAgICAgICBpZiAoYnVmZmVyX3N0YXRlLT50ZW1wb3JhbF9pZHggPT0g
LTEpCiAgICAgICAgIHJldHVybiB0cnVlOyAgLy8gUmVmZXJlbmNlcyBrZXktZnJhbWUuCiAgICAg
ICBpZiAoYnVmZmVyX3N0YXRlLT50ZW1wb3JhbF9pZHggPT0gMCkgewpAQCAtNjY4LDEwICs2Njks
MTAgQEAgY2xhc3MgVGVtcG9yYWxMYXllcnNSZWZlcmVuY2VUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKICAgICByZXR1cm4gdHJ1ZTsgIC8vIE5vIHJlZmVyZW5j
ZSwgZG9lcyBub3QgYWZmZWN0IHN5bmMgZnJhbWUgc3RhdHVzLgogICB9CiAKLSAgdm9pZCBWYWxp
ZGF0ZVJlZmVyZW5jZShjb25zdCBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MmIGZsYWdzLAor
ICB2b2lkIFZhbGlkYXRlUmVmZXJlbmNlKGNvbnN0IFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJG
bGFncyYgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnVmZmVyU3RhdGUm
IGJ1ZmZlcl9zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGVtcG9yYWxfbGF5
ZXIpIHsKLSAgICBpZiAoZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgeworICAg
IGlmIChmbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjprUmVmZXJlbmNlKSB7CiAgICAgICBpZiAo
dGVtcG9yYWxfbGF5ZXIgPiAwICYmIGJ1ZmZlcl9zdGF0ZS50aW1lc3RhbXAgPiAwKSB7CiAgICAg
ICAgIC8vIENoZWNrIHRoYXQgaGlnaCBsYXllciByZWZlcmVuY2UgZG9lcyBub3QgZ28gcGFzdCBs
YXN0IHN5bmMgZnJhbWUuCiAgICAgICAgIEVYUEVDVF9HRShidWZmZXJfc3RhdGUudGltZXN0YW1w
LCBsYXN0X3N5bmNfdGltZXN0YW1wXyk7CkBAIC03MDksOSArNzEwLDkgQEAgVEVTVF9QKFRlbXBv
cmFsTGF5ZXJzUmVmZXJlbmNlVGVzdCwgVmFsaWRGcmFtZUNvbmZpZ3MpIHsKICAgLy8gKGFueSku
IElmIGEgZ2l2ZW4gYnVmZmVyIGlzIG5ldmVyIHVwZGF0ZWQsIGl0IGlzIGxlZ2FsIHRvIHJlZmVy
ZW5jZSBpdAogICAvLyBldmVuIGZvciBzeW5jIGZyYW1lcy4gSW4gb3JkZXIgdG8gYmUgZ2VuZXJh
bCwgZG9uJ3QgYXNzdW1lIFRMMCBhbHdheXMKICAgLy8gdXBkYXRlcyB8bGFzdHwuCi0gIHN0ZDo6
dmVjdG9yPFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZz4gdGxfY29uZmlncyhrTWF4UGF0dGVy
bkxlbmd0aCk7CisgIHN0ZDo6dmVjdG9yPFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZz4g
dGxfY29uZmlncyhrTWF4UGF0dGVybkxlbmd0aCk7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwga01h
eFBhdHRlcm5MZW5ndGg7ICsraSkgewotICAgIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0
bF9jb25maWcgPSB0bC5VcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXBfKTsKKyAgICBWcDhUZW1w
b3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWco
dGltZXN0YW1wXyk7CiAgICAgdGwuT25FbmNvZGVEb25lKHRpbWVzdGFtcF8sIGtEZWZhdWx0Qnl0
ZXNQZXJGcmFtZSwgaSA9PSAwLCBrRGVmYXVsdFFwLAogICAgICAgICAgICAgICAgICAgICAmdnA4
X3NwZWNpZmljcyk7CiAgICAgKyt0aW1lc3RhbXBfOwpAQCAtNzUyLDExICs3NTMsMTEgQEAgVEVT
VF9QKFRlbXBvcmFsTGF5ZXJzUmVmZXJlbmNlVGVzdCwgVmFsaWRGcmFtZUNvbmZpZ3MpIHsKIAog
ICAgIC8vIFVwZGF0ZSB0aGUgY3VycmVudCBsYXllciBzdGF0ZS4KICAgICBCdWZmZXJTdGF0ZSBz
dGF0ZSA9IHt0ZW1wb3JhbF9pZHgsIHRpbWVzdGFtcF8sIGlzX3N5bmNfZnJhbWV9OwotICAgIGlm
ICh0bF9jb25maWcubGFzdF9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1VwZGF0ZSkK
KyAgICBpZiAodGxfY29uZmlnLmxhc3RfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6
OmtVcGRhdGUpCiAgICAgICBsYXN0X3N0YXRlID0gc3RhdGU7Ci0gICAgaWYgKHRsX2NvbmZpZy5n
b2xkZW5fYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpCisgICAgaWYgKHRs
X2NvbmZpZy5nb2xkZW5fYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OmtVcGRhdGUp
CiAgICAgICBnb2xkZW5fc3RhdGUgPSBzdGF0ZTsKLSAgICBpZiAodGxfY29uZmlnLmFyZl9idWZm
ZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1VwZGF0ZSkKKyAgICBpZiAodGxfY29uZmlnLmFy
Zl9idWZmZXJfZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6a1VwZGF0ZSkKICAgICAgIGFsdHJl
Zl9zdGF0ZSA9IHN0YXRlOwogICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2lu
Y2x1ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVk
ZS90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5oCmluZGV4IDk4NzhhYzlmM2ExYzZiZGNkMTViY2Zl
NzlmOTRiMTRmMDI4MTAwOTAuLmFlMTRmNjgyMzYxYzNmNDU0OWZiYmI3NjYxZWE2MGZhMDk4MjZl
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS90ZW1wb3JhbF9sYXllcnNf
Y2hlY2tlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS90ZW1wb3JhbF9sYXllcnNf
Y2hlY2tlci5oCkBAIC0xNSw3ICsxNSw3IEBACiAKICNpbmNsdWRlIDxtZW1vcnk+CiAKLSNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFs
X2xheWVycy5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVy
cy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMjksMTAgKzI5LDEwIEBAIGNsYXNzIFRl
bXBvcmFsTGF5ZXJzQ2hlY2tlciB7CiAKICAgdmlydHVhbCBib29sIENoZWNrVGVtcG9yYWxDb25m
aWcoCiAgICAgICBib29sIGZyYW1lX2lzX2tleWZyYW1lLAotICAgICAgY29uc3QgVGVtcG9yYWxM
YXllcnM6OkZyYW1lQ29uZmlnJiBmcmFtZV9jb25maWcpOworICAgICAgY29uc3QgVnA4VGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnJiBmcmFtZV9jb25maWcpOwogCiAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8VGVtcG9yYWxMYXllcnNDaGVja2VyPiBDcmVhdGVUZW1wb3JhbExheWVyc0NoZWNr
ZXIoCi0gICAgICBUZW1wb3JhbExheWVyc1R5cGUgdHlwZSwKKyAgICAgIFZwOFRlbXBvcmFsTGF5
ZXJzVHlwZSB0eXBlLAogICAgICAgaW50IG51bV90ZW1wb3JhbF9sYXllcnMpOwogCiAgcHJpdmF0
ZToKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgVGVtcG9yYWxMYXllcnNDaGVja2VyIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wqIG5lZWRfc3luYywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZnJhbWVfaXNfa2V5ZnJhbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHRlbXBvcmFsX2xheWVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpUZW1wb3JhbExheWVyczo6QnVmZmVyRmxh
Z3MgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlZwOFRl
bXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IHNlcXVlbmNlX251bWJlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90KiBsb3dlc3Rfc2VxdWVuY2VfcmVmZXJlbmNlZCk7CiAgIEJ1
ZmZlclN0YXRlIGxhc3RfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3Zw
OF90ZW1wb3JhbF9sYXllcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVtcG9y
YWxfbGF5ZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZGJjNGVjMmJmYzJi
NjAxM2JhNGFhMjIyYTA3ZGUwZTRmYzM4ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9s
YXllcnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDE5OCArMCwwIEBACi0vKgotICogIENvcHlyaWdo
dCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
Ci0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX1ZJREVPX0NPRElOR19DT0RFQ1NfVlA4X0lOQ0xVREVf
VlA4X1RFTVBPUkFMX0xBWUVSU19IXwotI2RlZmluZSBNT0RVTEVTX1ZJREVPX0NPRElOR19DT0RF
Q1NfVlA4X0lOQ0xVREVfVlA4X1RFTVBPUkFMX0xBWUVSU19IXwotCi0jaW5jbHVkZSA8bWVtb3J5
PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFNvbWUgbm90
ZXMgb24gdGhlIHByZXJlcXVpc2l0ZXMgb2YgdGhlIFRlbXBvcmFsTGF5ZXJzIGludGVyZmFjZS4K
LS8vICogSW1wbGVtZW50YXRpb25zIG9mIFRlbXBvcmFsTGF5ZXJzIG1heSBub3QgY29udGFpbiBp
bnRlcm5hbCBzeW5jaHJvbml6YXRpb24KLS8vICAgc28gY2FsbGVyIG11c3QgbWFrZSBzdXJlIGRv
aW5nIHNvIHRocmVhZCBzYWZlLgotLy8gKiBUaGUgZW5jb2RlciBpcyBhc3N1bWVkIHRvIGVuY29k
ZSBhbGwgZnJhbWVzIGluIG9yZGVyLCBhbmQgY2FsbGJhY2tzIHRvCi0vLyAgIFBvcHVsYXRlQ29k
ZWNTcGVjaWZpYygpIC8gRnJhbWVFbmNvZGVkKCkgbXVzdCBoYXBwZW4gaW4gdGhlIHNhbWUgb3Jk
ZXIuCi0vLwotLy8gVGhpcyBtZWFucyB0aGF0IGluIHRoZSBjYXNlIG9mIHBpcGVsaW5pbmcgZW5j
b2RlcnMsIGl0IGlzIE9LIHRvIGhhdmUgYSBjaGFpbgotLy8gb2YgY2FsbHMgc3VjaCBhcyB0aGlz
OgotLy8gLSBVcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXBBKQotLy8gLSBVcGRhdGVMYXllckNv
bmZpZyh0aW1lc3RhbXBCKQotLy8gLSBQb3B1bGF0ZUNvZGVjU3BlY2lmaWModGltZXN0YW1wQSwg
Li4uKQotLy8gLSBVcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXBDKQotLy8gLSBPbkVuY29kZURv
bmUodGltZXN0YW1wQSwgMTIzNCwgLi4uKQotLy8gLSBVcGRhdGVMYXllckNvbmZpZyh0aW1lc3Rh
bXBDKQotLy8gLSBPbkVuY29kZURvbmUodGltZXN0YW1wQiwgMCwgLi4uKQotLy8gLSBPbkVuY29k
ZURvbmUodGltZXN0YW1wQywgMTIzNCwgLi4uKQotLy8gTm90ZSB0aGF0IFVwZGF0ZUxheWVyQ29u
ZmlnKCkgZm9yIGEgbmV3IGZyYW1lIGNhbiBoYXBwZW4gYmVmb3JlCi0vLyBGcmFtZUVuY29kZWQo
KSBmb3IgYSBwcmV2aW91cyBvbmUsIGJ1dCBjYWxscyB0aGVtc2VsdmVzIG11c3QgYmUgYm90aAot
Ly8gc3luY2hyb25pemVkIChlLmcuIHJ1biBvbiBhIHRhc2sgcXVldWUpIGFuZCBpbiBvcmRlciAo
cGVyIHR5cGUpLgotCi1lbnVtIGNsYXNzIFRlbXBvcmFsTGF5ZXJzVHlwZSB7IGtGaXhlZFBhdHRl
cm4sIGtCaXRyYXRlRHluYW1pYyB9OwotCi1zdHJ1Y3QgQ29kZWNTcGVjaWZpY0luZm9WUDg7Ci1l
bnVtIGNsYXNzIFZwOEJ1ZmZlclJlZmVyZW5jZSA6IHVpbnQ4X3QgewotICBrTm9uZSA9IDAsCi0g
IGtMYXN0ID0gMSwKLSAga0dvbGRlbiA9IDIsCi0gIGtBbHRyZWYgPSA0Ci19OwotCi1zdHJ1Y3Qg
VnA4RW5jb2RlckNvbmZpZyB7Ci0gIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtNYXhQZXJpb2Rp
Y2l0eSA9IDE2OwotICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrTWF4TGF5ZXJzID0gNTsKLQot
ICAvLyBOdW1iZXIgb2YgYWN0aXZlIHRlbXBvcmFsIGxheWVycy4gU2V0IHRvIDAgaWYgbm90IHVz
ZWQuCi0gIHVpbnQzMl90IHRzX251bWJlcl9sYXllcnM7Ci0gIC8vIEFycmF5cyBvZiBsZW5ndGgg
fHRzX251bWJlcl9sYXllcnN8LCBpbmRpY2F0aW5nIChjdW11bGF0aXZlKSB0YXJnZXQgYml0cmF0
ZQotICAvLyBhbmQgcmF0ZSBkZWNpbWF0b3IgKGUuZy4gNCBpZiBldmVyeSA0dGggZnJhbWUgaXMg
aW4gdGhlIGdpdmVuIGxheWVyKSBmb3IKLSAgLy8gZWFjaCBhY3RpdmUgdGVtcG9yYWwgbGF5ZXIs
IHN0YXJ0aW5nIHdpdGggdGVtcG9yYWwgaWQgMC4KLSAgdWludDMyX3QgdHNfdGFyZ2V0X2JpdHJh
dGVba01heExheWVyc107Ci0gIHVpbnQzMl90IHRzX3JhdGVfZGVjaW1hdG9yW2tNYXhMYXllcnNd
OwotCi0gIC8vIFRoZSBwZXJpb2RpY2l0eSBvZiB0aGUgdGVtcG9yYWwgcGF0dGVybi4gU2V0IHRv
IDAgaWYgbm90IHVzZWQuCi0gIHVpbnQzMl90IHRzX3BlcmlvZGljaXR5OwotICAvLyBBcnJheSBv
ZiBsZW5ndGggfHRzX3BlcmlvZGljaXR5fCBpbmRpY2F0aW5nIHRoZSBzZXF1ZW5jZSBvZiB0ZW1w
b3JhbCBpZCdzCi0gIC8vIHRvIGFzc2lnbiB0byBpbmNvbWluZyBmcmFtZXMuCi0gIHVpbnQzMl90
IHRzX2xheWVyX2lkW2tNYXhQZXJpb2RpY2l0eV07Ci0KLSAgLy8gVGFyZ2V0IGJpdHJhdGUsIGlu
IGJwcy4KLSAgdWludDMyX3QgcmNfdGFyZ2V0X2JpdHJhdGU7Ci0KLSAgLy8gQ2xhbXAgUVAgdG8g
bWluL21heC4gVXNlIDAgdG8gZGlzYWJsZSBjbGFtcGluZy4KLSAgdWludDMyX3QgcmNfbWluX3F1
YW50aXplcjsKLSAgdWludDMyX3QgcmNfbWF4X3F1YW50aXplcjsKLX07Ci0KLS8vIFRoaXMgaW50
ZXJmYWNlIGRlZmluZXMgYSB3YXkgb2YgZ2V0dGluZyB0aGUgZW5jb2RlciBzZXR0aW5ncyBuZWVk
ZWQgdG8KLS8vIHJlYWxpemUgYSB0ZW1wb3JhbCBsYXllciBzdHJ1Y3R1cmUgb2YgcHJlZGVmaW5l
ZCBzaXplLgotY2xhc3MgVGVtcG9yYWxMYXllcnMgewotIHB1YmxpYzoKLSAgZW51bSBCdWZmZXJG
bGFncyA6IGludCB7Ci0gICAga05vbmUgPSAwLAotICAgIGtSZWZlcmVuY2UgPSAxLAotICAgIGtV
cGRhdGUgPSAyLAotICAgIGtSZWZlcmVuY2VBbmRVcGRhdGUgPSBrUmVmZXJlbmNlIHwga1VwZGF0
ZSwKLSAgfTsKLSAgZW51bSBGcmVlemVFbnRyb3B5IHsga0ZyZWV6ZUVudHJvcHkgfTsKLQotICBz
dHJ1Y3QgRnJhbWVDb25maWcgewotICAgIEZyYW1lQ29uZmlnKCk7Ci0KLSAgICBGcmFtZUNvbmZp
ZyhCdWZmZXJGbGFncyBsYXN0LCBCdWZmZXJGbGFncyBnb2xkZW4sIEJ1ZmZlckZsYWdzIGFyZik7
Ci0gICAgRnJhbWVDb25maWcoQnVmZmVyRmxhZ3MgbGFzdCwKLSAgICAgICAgICAgICAgICBCdWZm
ZXJGbGFncyBnb2xkZW4sCi0gICAgICAgICAgICAgICAgQnVmZmVyRmxhZ3MgYXJmLAotICAgICAg
ICAgICAgICAgIEZyZWV6ZUVudHJvcHkpOwotCi0gICAgYm9vbCBkcm9wX2ZyYW1lOwotICAgIEJ1
ZmZlckZsYWdzIGxhc3RfYnVmZmVyX2ZsYWdzOwotICAgIEJ1ZmZlckZsYWdzIGdvbGRlbl9idWZm
ZXJfZmxhZ3M7Ci0gICAgQnVmZmVyRmxhZ3MgYXJmX2J1ZmZlcl9mbGFnczsKLQotICAgIC8vIFRo
ZSBlbmNvZGVyIGxheWVyIElEIGlzIHVzZWQgdG8gdXRpbGl6ZSB0aGUgY29ycmVjdCBiaXRyYXRl
IGFsbG9jYXRvcgotICAgIC8vIGluc2lkZSB0aGUgZW5jb2Rlci4gSXQgZG9lcyBub3QgY29udHJv
bCByZWZlcmVuY2VzIG5vciBkZXRlcm1pbmUgd2hpY2gKLSAgICAvLyAiYWN0dWFsIiB0ZW1wb3Jh
bCBsYXllciB0aGlzIGlzLiBUaGUgcGFja2V0aXplciB0ZW1wb3JhbCBpbmRleCBkZXRlcm1pbmVz
Ci0gICAgLy8gd2hpY2ggbGF5ZXIgdGhlIGVuY29kZWQgZnJhbWUgc2hvdWxkIGJlIHBhY2tldGl6
ZWQgaW50by4KLSAgICAvLyBOb3JtYWxseSB0aGVzZSBhcmUgdGhlIHNhbWUsIGJ1dCBjdXJyZW50
IHRlbXBvcmFsLWxheWVyIHN0cmF0ZWdpZXMgZm9yCi0gICAgLy8gc2NyZWVuc2hhcmUgdXNlIG9u
ZSBiaXRyYXRlIGFsbG9jYXRvciBmb3IgYWxsIGxheWVycywgYnV0IGF0dGVtcHQgdG8KLSAgICAv
LyBwYWNrZXRpemUgLyB1dGlsaXplIHJlZmVyZW5jZXMgdG8gc3BsaXQgYSBzdHJlYW0gaW50byBt
dWx0aXBsZSBsYXllcnMsCi0gICAgLy8gd2l0aCBkaWZmZXJlbnQgcXVhbnRpemVyIHNldHRpbmdz
LCB0byBoaXQgdGFyZ2V0IGJpdHJhdGUuCi0gICAgLy8gVE9ETyhwYm9zKTogU2NyZWVuc2hhcmUg
bGF5ZXJzIGFyZSBiZWluZyByZWNvbnNpZGVyZWQgYXQgdGhlIHRpbWUgb2YKLSAgICAvLyB3cml0
aW5nLCB3ZSBtaWdodCBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIGRpc3RpbmN0aW9uLCBhbmQgaGF2
ZSBhIHRlbXBvcmFsCi0gICAgLy8gbGF5ZXIgaW1wbHkgYm90aCAodGhlIG5vcm1hbCBjYXNlKS4K
LSAgICBpbnQgZW5jb2Rlcl9sYXllcl9pZDsKLSAgICBpbnQgcGFja2V0aXplcl90ZW1wb3JhbF9p
ZHg7Ci0KLSAgICBib29sIGxheWVyX3N5bmM7Ci0KLSAgICBib29sIGZyZWV6ZV9lbnRyb3B5Owot
Ci0gICAgLy8gSW5kaWNhdGVzIGluIHdoaWNoIG9yZGVyIHRoZSBlbmNvZGVyIHNob3VsZCBzZWFy
Y2ggdGhlIHJlZmVyZW5jZSBidWZmZXJzCi0gICAgLy8gd2hlbiBkb2luZyBtb3Rpb24gcHJlZGlj
dGlvbi4gU2V0IHRvIGtOb25lIHRvIHVzZSB1bnNwZWNpZmllZCBvcmRlci4gQW55Ci0gICAgLy8g
YnVmZmVyIGluZGljYXRlZCBoZXJlIG11c3Qgbm90IGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgbm9f
cmVmIGJpdCBzZXQuCi0gICAgLy8gSWYgYWxsIHRocmVlIGJ1ZmZlcnMgY2FuIGJlIHJlZmVyZW5j
ZSwgdGhlIG9uZSBub3QgbGlzdGVkIGhlcmUgc2hvdWxkIGJlCi0gICAgLy8gc2VhcmNoZWQgbGFz
dC4KLSAgICBWcDhCdWZmZXJSZWZlcmVuY2UgZmlyc3RfcmVmZXJlbmNlOwotICAgIFZwOEJ1ZmZl
clJlZmVyZW5jZSBzZWNvbmRfcmVmZXJlbmNlOwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZyYW1lQ29uZmlnJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRnJhbWVD
b25maWcmIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KLQotICAgcHJpdmF0ZToK
LSAgICBGcmFtZUNvbmZpZyhCdWZmZXJGbGFncyBsYXN0LAotICAgICAgICAgICAgICAgIEJ1ZmZl
ckZsYWdzIGdvbGRlbiwKLSAgICAgICAgICAgICAgICBCdWZmZXJGbGFncyBhcmYsCi0gICAgICAg
ICAgICAgICAgYm9vbCBmcmVlemVfZW50cm9weSk7Ci0gIH07Ci0KLSAgLy8gRmFjdG9yeSBmb3Ig
VGVtcG9yYWxMYXllciBzdHJhdGVneS4gRGVmYXVsdCBiZWhhdmlvciBpcyBhIGZpeGVkIHBhdHRl
cm4KLSAgLy8gb2YgdGVtcG9yYWwgbGF5ZXJzLiBTZWUgZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMu
Y2MKLSAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUZW1wb3JhbExheWVycz4gQ3JlYXRlVGVtcG9y
YWxMYXllcnMoCi0gICAgICBUZW1wb3JhbExheWVyc1R5cGUgdHlwZSwKLSAgICAgIGludCBudW1f
dGVtcG9yYWxfbGF5ZXJzKTsKLQotICB2aXJ0dWFsIH5UZW1wb3JhbExheWVycygpID0gZGVmYXVs
dDsKLQotICAvLyBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUsIHRoZSBlbmNvZGVyIGlzIGZy
ZWUgdG8gZHJvcCBmcmFtZXMgZm9yCi0gIC8vIGluc3RhbmNlIGluIGFuIGVmZm9ydCB0byB1cGhv
bGQgZW5jb2RpbmcgYml0cmF0ZS4KLSAgLy8gSWYgdGhpcyByZXR1cm4gZmFsc2UsIHRoZSBlbmNv
ZGVyIG11c3Qgbm90IGRyb3AgYW55IGZyYW1lcyB1bmxlc3M6Ci0gIC8vICAxLiBSZXF1ZXN0ZWQg
dG8gZG8gc28gdmlhIEZyYW1lQ29uZmlnLmRyb3BfZnJhbWUKLSAgLy8gIDIuIFRoZSBmcmFtZSB0
byBiZSBlbmNvZGVkIGlzIHJlcXVlc3RlZCB0byBiZSBhIGtleWZyYW1lCi0gIC8vICAzLiBUaGUg
ZW5jb2RlZCBkZXRlY3RlZCBhIGxhcmdlIG92ZXJzaG9vdCBhbmQgZGVjaWRlZCB0byBkcm9wIGFu
ZCB0aGVuCi0gIC8vICAgICByZS1lbmNvZGUgdGhlIGltYWdlIGF0IGEgbG93IGJpdHJhdGUuIElu
IHRoaXMgY2FzZSB0aGUgZW5jb2RlciBzaG91bGQKLSAgLy8gICAgIGNhbGwgT25FbmNvZGVEb25l
KCkgb25jZSB3aXRoIHNpemUgPSAwIHRvIGluZGljYXRlIGRyb3AsIGFuZCB0aGVuIGNhbGwKLSAg
Ly8gICAgIE9uRW5jb2RlRG9uZSgpIGFnYWluIHdoZW4gdGhlIGZyYW1lIGhhcyBhY3R1YWxseSBi
ZWVuIGVuY29kZWQuCi0gIHZpcnR1YWwgYm9vbCBTdXBwb3J0c0VuY29kZXJGcmFtZURyb3BwaW5n
KCkgY29uc3QgPSAwOwotCi0gIC8vIE5ldyB0YXJnZXQgYml0cmF0ZSwgcGVyIHRlbXBvcmFsIGxh
eWVyLgotICB2aXJ0dWFsIHZvaWQgT25SYXRlc1VwZGF0ZWQoY29uc3Qgc3RkOjp2ZWN0b3I8dWlu
dDMyX3Q+JiBiaXRyYXRlc19icHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
ZnJhbWVyYXRlX2ZwcykgPSAwOwotCi0gIC8vIENhbGxlZCBieSB0aGUgZW5jb2RlciBiZWZvcmUg
ZW5jb2RpbmcgYSBmcmFtZS4gfGNmZ3wgY29udGFpbnMgdGhlIGN1cnJlbnQKLSAgLy8gY29uZmln
dXJhdGlvbi4gSWYgdGhlIFRlbXBvcmFsTGF5ZXJzIGluc3RhbmNlIHdpc2hlcyBhbnkgcGFydCBv
ZiB0aGF0Ci0gIC8vIHRvIGJlIGNoYW5nZWQgYmVmb3JlIHRoZSBlbmNvZGUgc3RlcCwgfGNmZ3wg
c2hvdWxkIGJlIGNoYW5nZWQgYW5kIHRoZW4KLSAgLy8gcmV0dXJuIHRydWUuIElmIGZhbHNlIGlz
IHJldHVybmVkLCB0aGUgZW5jb2RlciB3aWxsIHByb2NlZWQgd2l0aG91dAotICAvLyB1cGRhdGlu
ZyB0aGUgY29uZmlndXJhdGlvbi4KLSAgdmlydHVhbCBib29sIFVwZGF0ZUNvbmZpZ3VyYXRpb24o
VnA4RW5jb2RlckNvbmZpZyogY2ZnKSA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0aGUgcmVjb21tZW5k
ZWQgVlA4IGVuY29kZSBmbGFncyBuZWVkZWQsIGFuZCBtb3ZlcyB0aGUgdGVtcG9yYWwKLSAgLy8g
cGF0dGVybiB0byB0aGUgbmV4dCBmcmFtZS4KLSAgLy8gVGhlIHRpbWVzdGFtcCBtYXkgYmUgdXNl
ZCBhcyBib3RoIGEgdGltZSBhbmQgYSB1bmlxdWUgaWRlbnRpZmllciwgYW5kIHNvCi0gIC8vIHRo
ZSBjYWxsZXIgbXVzdCBtYWtlIHN1cmUgbm8gdHdvIGZyYW1lcyB1c2UgdGhlIHNhbWUgdGltZXN0
YW1wLgotICAvLyBUaGUgdGltZXN0YW1wIHVzZXMgYSA5MGtIeiBSVFAgY2xvY2suCi0gIC8vIEFm
dGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGZpcnN0IGNhbGwgdGhlIGFjdHVhbCBlbmNvZGVyIHdp
dGggdGhlIHByb3ZpZGVkCi0gIC8vIGZyYW1lIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGVuIE9uRW5j
b2RlRG9uZSgpIGJlbG93LgotICB2aXJ0dWFsIEZyYW1lQ29uZmlnIFVwZGF0ZUxheWVyQ29uZmln
KHVpbnQzMl90IHJ0cF90aW1lc3RhbXApID0gMDsKLQotICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGVu
Y29kZSBzdGVwIGlzIGRvbmUuIHxydHBfdGltZXN0YW1wfCBtdXN0IG1hdGNoIHRoZQotICAvLyBw
YXJhbWV0ZXIgdXNlIGluIHRoZSBVcGRhdGVMYXllckNvbmZpZygpIGNhbGwuCi0gIC8vIHxpc19r
ZXlmcmFtZXwgbXVzdCBiZSB0cnVlIGlmZiB0aGUgZW5jb2RlciBkZWNpZGVkIHRvIGVuY29kZSB0
aGlzIGZyYW1lIGFzCi0gIC8vIGEga2V5ZnJhbWUuCi0gIC8vIElmIHRoZSBlbmNvZGVyIGRlY2lk
ZWQgdG8gZHJvcCB0aGlzIGZyYW1lLCB8c2l6ZV9ieXRlc3wgbXVzdCBiZSBzZXQgdG8gMCwKLSAg
Ly8gb3RoZXJ3aXNlIGl0IHNob3VsZCBpbmRpY2F0ZSB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUg
ZW5jb2RlZCBmcmFtZS4KLSAgLy8gSWYgfHNpemVfYnl0ZXN8ID4gMCwgYW5kIHx2cDhfaW5mb3wg
aXMgbm90IG51bGwsIHRoZSBUZW1wb3JhbExheWVycwotICAvLyBpbnN0YW5jZSBteSB1cGRhdGUg
fHZwOF9pbmZvfCB3aXRoIGNvZGVjIHNwZWNpZmljIGRhdGEgc3VjaCBhcyB0ZW1wb3JhbCBpZC4K
LSAgLy8gU29tZSBmaWVsZHMgb2YgdGhpcyBzdHJ1Y3QgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHBv
cHVsYXRlZCBieSB0aGUgZW5jb2RlciwKLSAgLy8gY2hlY2sgYmVmb3JlIG92ZXJ3cml0aW5nLgot
ICAvLyBJZiB8c2l6ZV9ieXRlc3wgPiAwLCB8cXB8IHNob3VsZCBpbmRpY2F0ZSB0aGUgZnJhbWUt
bGV2ZWwgUVAgdGhpcyBmcmFtZSB3YXMKLSAgLy8gZW5jb2RlZCBhdC4gSWYgdGhlIGVuY29kZXIg
ZG9lcyBub3Qgc3VwcG9ydCBleHRyYWN0aW5nIHRoaXMsIHxxcHwgc2hvdWxkIGJlCi0gIC8vIHNl
dCB0byAwLgotICB2aXJ0dWFsIHZvaWQgT25FbmNvZGVEb25lKHVpbnQzMl90IHJ0cF90aW1lc3Rh
bXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemVfYnl0ZXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19rZXlmcmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgcXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZWNT
cGVjaWZpY0luZm9WUDgqIHZwOF9pbmZvKSA9IDA7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOF9JTkNMVURF
X1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGli
dnB4X3ZwOF9kZWNvZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIu
Y2MKaW5kZXggMjA2ODRkMWQzOTE4NWU2MmUxMGZjNzEzZTNkOTk1MzU4ODY4MjkxMy4uNDg4Mzhl
OTNlN2YzNjliNmNhMGRjNjcyZjU1NDU4MDliY2MyNTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2
cHhfdnA4X2RlY29kZXIuY2MKQEAgLTEyLDcgKzEyLDYgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAK
ICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8v
bGlieXV2L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3MvZXhwX2ZpbHRlci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmgKaW5kZXggM2E2Y2Y5MjQwNWNjN2VkYzhi
NWEzMDRhNDU0ZDBjZDYzMjA1Y2I0OC4uY2ZmOWU4OTk4ODQxYjljMzg0ODQ2OTQ1NWRmZjM2YmJm
ODhmNzhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZGVjb2Rlci5oCkBAIC0xMywxMCAr
MTMsMTAgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgImFwaS92aWRlby9lbmNv
ZGVkX2ltYWdlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyLmgi
CiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNp
bmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS9pNDIwX2J1ZmZlcl9wb29sLmgiCi0jaW5jbHVk
ZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVv
X2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2VuY29kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xp
YnZweF92cDhfZW5jb2Rlci5jYwppbmRleCA0MWRhZDQwZDllNDBiZjNmOWM2ZmEwZWEzYmQ2NDYz
ZGU5NjBhMTdiLi5iZTUyNDJjMWI5MTY4YjA2ZjlhZGIxZDY2MDRlNGE5YzAxNmY4YzUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZW5jb2Rlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZW5jb2Rlci5jYwpAQCAtMTQsNiArMTQsOCBAQAogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKKyNpbmNs
dWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJj
b21tb25fdmlkZW8vbGlieXV2L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9lbmNvZGVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0
b3IuaCIKQEAgLTI3LDcgKzI5LDggQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2Ug
ewotY29uc3QgY2hhciBrVnA4R2ZCb29zdEZpZWxkVHJpYWxbXSA9ICJXZWJSVEMtVlA4LUdmQm9v
c3QiOworY29uc3QgY2hhciBrVnA4VHJ1c3RlZFJhdGVDb250cm9sbGVyRmllbGRUcmlhbFtdID0K
KyAgICAiV2ViUlRDLUxpYnZweFZwOFRydXN0ZWRSYXRlQ29udHJvbGxlciI7CiAKIC8vIFFQIGlz
IG9idGFpbmVkIGZyb20gVlA4LWJpdHN0cmVhbSBmb3IgSFcsIHNvIHRoZSBRUCBjb3JyZXNwb25k
cyB0byB0aGUKIC8vIGJpdHN0cmVhbSByYW5nZSBvZiBbMCwgMTI3XSBhbmQgbm90IHRoZSB1c2Vy
LWxldmVsIHJhbmdlIG9mIFswLDYzXS4KQEAgLTU5LDIwICs2Miw2IEBAIHN0YXRpYyBpbnQgR0NE
KGludCBhLCBpbnQgYikgewogICByZXR1cm4gYjsKIH0KIAotYm9vbCBHZXRHZkJvb3N0UGVyY2Vu
dGFnZUZyb21GaWVsZFRyaWFsR3JvdXAoaW50KiBib29zdF9wZXJjZW50YWdlKSB7Ci0gIHN0ZDo6
c3RyaW5nIGdyb3VwID0gd2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtWcDhHZkJv
b3N0RmllbGRUcmlhbCk7Ci0gIGlmIChncm91cC5lbXB0eSgpKQotICAgIHJldHVybiBmYWxzZTsK
LQotICBpZiAoc3NjYW5mKGdyb3VwLmNfc3RyKCksICJFbmFibGVkLSVkIiwgYm9vc3RfcGVyY2Vu
dGFnZSkgIT0gMSkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKCpib29zdF9wZXJjZW50YWdl
IDwgMCB8fCAqYm9vc3RfcGVyY2VudGFnZSA+IDEwMCkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
cmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpY19hc3NlcnQoVnA4RW5jb2RlckNvbmZpZzo6a01heFBl
cmlvZGljaXR5ID09IFZQWF9UU19NQVhfUEVSSU9ESUNJVFksCiAgICAgICAgICAgICAgICJWcDhF
bmNvZGVyQ29uZmlnOjprTWF4UGVyaW9kaWNpdHkgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0
aGUgIgogICAgICAgICAgICAgICAiY29uc3RhbnQgaW4gbGlidnB4LiIpOwpAQCAtMTEzLDcgKzEw
Miw3IEBAIHN0YXRpYyB2b2lkIEZpbGxJbkVuY29kZXJDb25maWcodnB4X2NvZGVjX2VuY19jZmcq
IHZweF9jb25maWcsCiAgIHZweF9jb25maWctPnJjX21heF9xdWFudGl6ZXIgPSBjb25maWcucmNf
bWF4X3F1YW50aXplcjsKIH0KIAotYm9vbCBVcGRhdGVWcHhDb25maWd1cmF0aW9uKFRlbXBvcmFs
TGF5ZXJzKiB0ZW1wb3JhbF9sYXllcnMsCitib29sIFVwZGF0ZVZweENvbmZpZ3VyYXRpb24oVnA4
VGVtcG9yYWxMYXllcnMqIHRlbXBvcmFsX2xheWVycywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2cHhfY29kZWNfZW5jX2NmZ190KiBjZmcpIHsKICAgVnA4RW5jb2RlckNvbmZpZyBjb25m
aWcgPSBHZXRFbmNvZGVyQ29uZmlnKGNmZyk7CiAgIGNvbnN0IGJvb2wgcmVzID0gdGVtcG9yYWxf
bGF5ZXJzLT5VcGRhdGVDb25maWd1cmF0aW9uKCZjb25maWcpOwpAQCAtMTI5LDIyICsxMTgsMjIg
QEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gVlA4RW5jb2Rlcjo6Q3JlYXRlKCkgewog
fQogCiB2cHhfZW5jX2ZyYW1lX2ZsYWdzX3QgTGlidnB4VnA4RW5jb2Rlcjo6RW5jb2RlRmxhZ3Mo
Ci0gICAgY29uc3QgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiByZWZlcmVuY2VzKSB7Cisg
ICAgY29uc3QgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiByZWZlcmVuY2VzKSB7CiAg
IFJUQ19EQ0hFQ0soIXJlZmVyZW5jZXMuZHJvcF9mcmFtZSk7CiAKICAgdnB4X2VuY19mcmFtZV9m
bGFnc190IGZsYWdzID0gMDsKIAotICBpZiAoKHJlZmVyZW5jZXMubGFzdF9idWZmZXJfZmxhZ3Mg
JiBUZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgPT0gMCkKKyAgaWYgKChyZWZlcmVuY2VzLmxh
c3RfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OmtSZWZlcmVuY2UpID09IDApCiAg
ICAgZmxhZ3MgfD0gVlA4X0VGTEFHX05PX1JFRl9MQVNUOwotICBpZiAoKHJlZmVyZW5jZXMubGFz
dF9idWZmZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1VwZGF0ZSkgPT0gMCkKKyAgaWYgKChy
ZWZlcmVuY2VzLmxhc3RfYnVmZmVyX2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OmtVcGRhdGUp
ID09IDApCiAgICAgZmxhZ3MgfD0gVlA4X0VGTEFHX05PX1VQRF9MQVNUOwotICBpZiAoKHJlZmVy
ZW5jZXMuZ29sZGVuX2J1ZmZlcl9mbGFncyAmIFRlbXBvcmFsTGF5ZXJzOjprUmVmZXJlbmNlKSA9
PSAwKQorICBpZiAoKHJlZmVyZW5jZXMuZ29sZGVuX2J1ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFs
TGF5ZXJzOjprUmVmZXJlbmNlKSA9PSAwKQogICAgIGZsYWdzIHw9IFZQOF9FRkxBR19OT19SRUZf
R0Y7Ci0gIGlmICgocmVmZXJlbmNlcy5nb2xkZW5fYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXll
cnM6OmtVcGRhdGUpID09IDApCisgIGlmICgocmVmZXJlbmNlcy5nb2xkZW5fYnVmZmVyX2ZsYWdz
ICYgVnA4VGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpID09IDApCiAgICAgZmxhZ3MgfD0gVlA4X0VG
TEFHX05PX1VQRF9HRjsKLSAgaWYgKChyZWZlcmVuY2VzLmFyZl9idWZmZXJfZmxhZ3MgJiBUZW1w
b3JhbExheWVyczo6a1JlZmVyZW5jZSkgPT0gMCkKKyAgaWYgKChyZWZlcmVuY2VzLmFyZl9idWZm
ZXJfZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgPT0gMCkKICAgICBmbGFn
cyB8PSBWUDhfRUZMQUdfTk9fUkVGX0FSRjsKLSAgaWYgKChyZWZlcmVuY2VzLmFyZl9idWZmZXJf
ZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1VwZGF0ZSkgPT0gMCkKKyAgaWYgKChyZWZlcmVuY2Vz
LmFyZl9idWZmZXJfZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6a1VwZGF0ZSkgPT0gMCkKICAg
ICBmbGFncyB8PSBWUDhfRUZMQUdfTk9fVVBEX0FSRjsKICAgaWYgKHJlZmVyZW5jZXMuZnJlZXpl
X2VudHJvcHkpCiAgICAgZmxhZ3MgfD0gVlA4X0VGTEFHX05PX1VQRF9FTlRST1BZOwpAQCAtMTU3
LDcgKzE0Niw5IEBAIExpYnZweFZwOEVuY29kZXI6OkxpYnZweFZwOEVuY29kZXIoKQogCiBMaWJ2
cHhWcDhFbmNvZGVyOjpMaWJ2cHhWcDhFbmNvZGVyKHN0ZDo6dW5pcXVlX3B0cjxMaWJ2cHhJbnRl
cmZhY2U+IGludGVyZmFjZSkKICAgICA6IGxpYnZweF8oc3RkOjptb3ZlKGludGVyZmFjZSkpLAot
ICAgICAgdXNlX2dmX2Jvb3N0Xyh3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa1ZwOEdm
Qm9vc3RGaWVsZFRyaWFsKSksCisgICAgICBleHBlcmltZW50YWxfY3B1X3NwZWVkX2NvbmZpZ19h
cm1fKENwdVNwZWVkRXhwZXJpbWVudDo6R2V0Q29uZmlncygpKSwKKyAgICAgIHRydXN0ZWRfcmF0
ZV9jb250cm9sbGVyXygKKyAgICAgICAgICBmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtWcDhUcnVz
dGVkUmF0ZUNvbnRyb2xsZXJGaWVsZFRyaWFsKSksCiAgICAgICBlbmNvZGVkX2NvbXBsZXRlX2Nh
bGxiYWNrXyhudWxscHRyKSwKICAgICAgIGluaXRlZF8oZmFsc2UpLAogICAgICAgdGltZXN0YW1w
XygwKSwKQEAgLTE2Nyw3ICsxNTgsNiBAQCBMaWJ2cHhWcDhFbmNvZGVyOjpMaWJ2cHhWcDhFbmNv
ZGVyKHN0ZDo6dW5pcXVlX3B0cjxMaWJ2cHhJbnRlcmZhY2U+IGludGVyZmFjZSkKICAgICAgIHJj
X21heF9pbnRyYV90YXJnZXRfKDApLAogICAgICAga2V5X2ZyYW1lX3JlcXVlc3RfKGtNYXhTaW11
bGNhc3RTdHJlYW1zLCBmYWxzZSkgewogICB0ZW1wb3JhbF9sYXllcnNfLnJlc2VydmUoa01heFNp
bXVsY2FzdFN0cmVhbXMpOwotICB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlcnNfLnJlc2VydmUoa01h
eFNpbXVsY2FzdFN0cmVhbXMpOwogICByYXdfaW1hZ2VzXy5yZXNlcnZlKGtNYXhTaW11bGNhc3RT
dHJlYW1zKTsKICAgZW5jb2RlZF9pbWFnZXNfLnJlc2VydmUoa01heFNpbXVsY2FzdFN0cmVhbXMp
OwogICBzZW5kX3N0cmVhbV8ucmVzZXJ2ZShrTWF4U2ltdWxjYXN0U3RyZWFtcyk7CkBAIC0yMDYs
NyArMTk2LDYgQEAgaW50IExpYnZweFZwOEVuY29kZXI6OlJlbGVhc2UoKSB7CiAgICAgcmF3X2lt
YWdlc18ucG9wX2JhY2soKTsKICAgfQogICB0ZW1wb3JhbF9sYXllcnNfLmNsZWFyKCk7Ci0gIHRl
bXBvcmFsX2xheWVyc19jaGVja2Vyc18uY2xlYXIoKTsKICAgaW5pdGVkXyA9IGZhbHNlOwogICBy
ZXR1cm4gcmV0X3ZhbDsKIH0KQEAgLTI3OCwxMCArMjY3LDYgQEAgaW50IExpYnZweFZwOEVuY29k
ZXI6OlNldFJhdGVBbGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGJpdHJh
dGUsCiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKLWNvbnN0IGNoYXIqIExp
YnZweFZwOEVuY29kZXI6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJuICJs
aWJ2cHgiOwotfQotCiB2b2lkIExpYnZweFZwOEVuY29kZXI6OlNldFN0cmVhbVN0YXRlKGJvb2wg
c2VuZF9zdHJlYW0sIGludCBzdHJlYW1faWR4KSB7CiAgIGlmIChzZW5kX3N0cmVhbSAmJiAhc2Vu
ZF9zdHJlYW1fW3N0cmVhbV9pZHhdKSB7CiAgICAgLy8gTmVlZCBhIGtleSBmcmFtZSBpZiB3ZSBo
YXZlIG5vdCBzZW50IHRoaXMgc3RyZWFtIGJlZm9yZS4KQEAgLTI5NCwyMSArMjc5LDE4IEBAIHZv
aWQgTGlidnB4VnA4RW5jb2Rlcjo6U2V0dXBUZW1wb3JhbExheWVycyhjb25zdCBWaWRlb0NvZGVj
JiBjb2RlYykgewogICBSVENfRENIRUNLKHRlbXBvcmFsX2xheWVyc18uZW1wdHkoKSk7CiAgIGlu
dCBudW1fc3RyZWFtcyA9IFNpbXVsY2FzdFV0aWxpdHk6Ok51bWJlck9mU2ltdWxjYXN0U3RyZWFt
cyhjb2RlYyk7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3N0cmVhbXM7ICsraSkgewotICAg
IFRlbXBvcmFsTGF5ZXJzVHlwZSB0eXBlOworICAgIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZSB0eXBl
OwogICAgIGludCBudW1fdGVtcG9yYWxfbGF5ZXJzID0KICAgICAgICAgU2ltdWxjYXN0VXRpbGl0
eTo6TnVtYmVyT2ZUZW1wb3JhbExheWVycyhjb2RlYywgaSk7CiAgICAgaWYgKFNpbXVsY2FzdFV0
aWxpdHk6OklzQ29uZmVyZW5jZU1vZGVTY3JlZW5zaGFyZShjb2RlYykgJiYgaSA9PSAwKSB7Ci0g
ICAgICB0eXBlID0gVGVtcG9yYWxMYXllcnNUeXBlOjprQml0cmF0ZUR5bmFtaWM7CisgICAgICB0
eXBlID0gVnA4VGVtcG9yYWxMYXllcnNUeXBlOjprQml0cmF0ZUR5bmFtaWM7CiAgICAgICAvLyBM
ZWdhY3kgc2NyZWVuc2hhcmUgbGF5ZXJzIHN1cHBvcnRzIG1heCAyIGxheWVycy4KICAgICAgIG51
bV90ZW1wb3JhbF9sYXllcnMgPSBzdGQ6Om1heDxpbnQ+KDIsIG51bV90ZW1wb3JhbF9sYXllcnMp
OwogICAgIH0gZWxzZSB7Ci0gICAgICB0eXBlID0gVGVtcG9yYWxMYXllcnNUeXBlOjprRml4ZWRQ
YXR0ZXJuOworICAgICAgdHlwZSA9IFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVy
bjsKICAgICB9CiAgICAgdGVtcG9yYWxfbGF5ZXJzXy5lbXBsYWNlX2JhY2soCi0gICAgICAgIFRl
bXBvcmFsTGF5ZXJzOjpDcmVhdGVUZW1wb3JhbExheWVycyh0eXBlLCBudW1fdGVtcG9yYWxfbGF5
ZXJzKSk7Ci0gICAgdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXJzXy5lbXBsYWNlX2JhY2soCi0gICAg
ICAgIFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q3JlYXRlVGVtcG9yYWxMYXllcnNDaGVja2VyKAot
ICAgICAgICAgICAgdHlwZSwgbnVtX3RlbXBvcmFsX2xheWVycykpOworICAgICAgICBDcmVhdGVW
cDhUZW1wb3JhbExheWVycyh0eXBlLCBudW1fdGVtcG9yYWxfbGF5ZXJzKSk7CiAgIH0KIH0KIApA
QCAtNDUzLDEwICs0MzUsMTAgQEAgaW50IExpYnZweFZwOEVuY29kZXI6OkluaXRFbmNvZGUoY29u
c3QgVmlkZW9Db2RlYyogaW5zdCwKICAgfQogICBjcHVfc3BlZWRfZGVmYXVsdF8gPSBjcHVfc3Bl
ZWRfWzBdOwogICAvLyBTZXQgZW5jb2RpbmcgY29tcGxleGl0eSAoY3B1X3NwZWVkKSBiYXNlZCBv
biByZXNvbHV0aW9uIGFuZC9vciBwbGF0Zm9ybS4KLSAgY3B1X3NwZWVkX1swXSA9IFNldENwdVNw
ZWVkKGluc3QtPndpZHRoLCBpbnN0LT5oZWlnaHQpOworICBjcHVfc3BlZWRfWzBdID0gR2V0Q3B1
U3BlZWQoaW5zdC0+d2lkdGgsIGluc3QtPmhlaWdodCk7CiAgIGZvciAoaW50IGkgPSAxOyBpIDwg
bnVtYmVyX29mX3N0cmVhbXM7ICsraSkgewogICAgIGNwdV9zcGVlZF9baV0gPQotICAgICAgICBT
ZXRDcHVTcGVlZChpbnN0LT5zaW11bGNhc3RTdHJlYW1bbnVtYmVyX29mX3N0cmVhbXMgLSAxIC0g
aV0ud2lkdGgsCisgICAgICAgIEdldENwdVNwZWVkKGluc3QtPnNpbXVsY2FzdFN0cmVhbVtudW1i
ZXJfb2Zfc3RyZWFtcyAtIDEgLSBpXS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgaW5zdC0+
c2ltdWxjYXN0U3RyZWFtW251bWJlcl9vZl9zdHJlYW1zIC0gMSAtIGldLmhlaWdodCk7CiAgIH0K
ICAgY29uZmlndXJhdGlvbnNfWzBdLmdfdyA9IGluc3QtPndpZHRoOwpAQCAtNTI4LDcgKzUxMCw3
IEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGlu
c3QsCiAgIHJldHVybiBJbml0QW5kU2V0Q29udHJvbFNldHRpbmdzKCk7CiB9CiAKLWludCBMaWJ2
cHhWcDhFbmNvZGVyOjpTZXRDcHVTcGVlZChpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKK2ludCBM
aWJ2cHhWcDhFbmNvZGVyOjpHZXRDcHVTcGVlZChpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKICNp
ZiBkZWZpbmVkKFdFQlJUQ19BUkNIX0FSTSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02NCkg
fHwgXAogICAgIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCiAgIC8vIE9uIG1vYmlsZSBwbGF0Zm9y
bSwgdXNlIGEgbG93ZXIgc3BlZWQgc2V0dGluZyBmb3IgbG93ZXIgcmVzb2x1dGlvbnMgZm9yCkBA
IC01MzcsNiArNTE5LDExIEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpTZXRDcHVTcGVlZChpbnQg
d2lkdGgsIGludCBoZWlnaHQpIHsKICAgaWYgKG51bWJlcl9vZl9jb3Jlc18gPD0gMykKICAgICBy
ZXR1cm4gLTEyOwogCisgIGlmIChleHBlcmltZW50YWxfY3B1X3NwZWVkX2NvbmZpZ19hcm1fKSB7
CisgICAgcmV0dXJuIENwdVNwZWVkRXhwZXJpbWVudDo6R2V0VmFsdWUod2lkdGggKiBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4cGVyaW1lbnRhbF9j
cHVfc3BlZWRfY29uZmlnX2FybV8pOworICB9CisKICAgaWYgKHdpZHRoICogaGVpZ2h0IDw9IDM1
MiAqIDI4OCkKICAgICByZXR1cm4gLTg7CiAgIGVsc2UgaWYgKHdpZHRoICogaGVpZ2h0IDw9IDY0
MCAqIDQ4MCkKQEAgLTY0NCwxNCArNjMxLDYgQEAgaW50IExpYnZweFZwOEVuY29kZXI6OkluaXRB
bmRTZXRDb250cm9sU2V0dGluZ3MoKSB7CiAgICAgbGlidnB4Xy0+Y29kZWNfY29udHJvbCgKICAg
ICAgICAgJihlbmNvZGVyc19baV0pLCBWUDhFX1NFVF9TQ1JFRU5fQ09OVEVOVF9NT0RFLAogICAg
ICAgICBjb2RlY18ubW9kZSA9PSBWaWRlb0NvZGVjTW9kZTo6a1NjcmVlbnNoYXJpbmcgPyAydSA6
IDB1KTsKLSAgICAvLyBBcHBseSBib29zdCBvbiBnb2xkZW4gZnJhbWVzIChoYXMgb25seSBlZmZl
Y3Qgd2hlbiByZXNpbGllbmNlIGlzIG9mZikuCi0gICAgaWYgKHVzZV9nZl9ib29zdF8gJiYgY29u
ZmlndXJhdGlvbnNfWzBdLmdfZXJyb3JfcmVzaWxpZW50ID09IDApIHsKLSAgICAgIGludCBnZl9i
b29zdF9wZXJjZW50OwotICAgICAgaWYgKEdldEdmQm9vc3RQZXJjZW50YWdlRnJvbUZpZWxkVHJp
YWxHcm91cCgmZ2ZfYm9vc3RfcGVyY2VudCkpIHsKLSAgICAgICAgbGlidnB4Xy0+Y29kZWNfY29u
dHJvbCgmKGVuY29kZXJzX1tpXSksIFZQOEVfU0VUX0dGX0NCUl9CT09TVF9QQ1QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2ZfYm9vc3RfcGVyY2VudCk7Ci0gICAgICB9Ci0gICAg
fQogICB9CiAgIGluaXRlZF8gPSB0cnVlOwogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09L
OwpAQCAtNzUwLDcgKzcyOSw3IEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpFbmNvZGUoY29uc3Qg
VmlkZW9GcmFtZSYgZnJhbWUsCiAgICAgfQogICB9CiAgIHZweF9lbmNfZnJhbWVfZmxhZ3NfdCBm
bGFnc1trTWF4U2ltdWxjYXN0U3RyZWFtc107Ci0gIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZp
ZyB0bF9jb25maWdzW2tNYXhTaW11bGNhc3RTdHJlYW1zXTsKKyAgVnA4VGVtcG9yYWxMYXllcnM6
OkZyYW1lQ29uZmlnIHRsX2NvbmZpZ3Nba01heFNpbXVsY2FzdFN0cmVhbXNdOwogICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGVuY29kZXJzXy5zaXplKCk7ICsraSkgewogICAgIHRsX2NvbmZpZ3Nb
aV0gPSB0ZW1wb3JhbF9sYXllcnNfW2ldLT5VcGRhdGVMYXllckNvbmZpZyhmcmFtZS50aW1lc3Rh
bXAoKSk7CiAgICAgaWYgKHRsX2NvbmZpZ3NbaV0uZHJvcF9mcmFtZSkgewpAQCAtODMxLDEwICs4
MTAsMTEgQEAgaW50IExpYnZweFZwOEVuY29kZXI6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBm
cmFtZSwKICAgICB9CiAgICAgaWYgKGVycm9yKQogICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19D
T0RFQ19FUlJPUjsKLSAgICB0aW1lc3RhbXBfICs9IGR1cmF0aW9uOwogICAgIC8vIEV4YW1pbmVz
IGZyYW1lIHRpbWVzdGFtcHMgb25seS4KICAgICBlcnJvciA9IEdldEVuY29kZWRQYXJ0aXRpb25z
KGZyYW1lKTsKICAgfQorICAvLyBUT0RPKHNwcmFuZyk6IFNob3VsZG4ndCB3ZSB1c2UgdGhlIGZy
YW1lIHRpbWVzdGFtcCBpbnN0ZWFkPworICB0aW1lc3RhbXBfICs9IGR1cmF0aW9uOwogICByZXR1
cm4gZXJyb3I7CiB9CiAKQEAgLTg0NSw3ICs4MjUsNiBAQCB2b2lkIExpYnZweFZwOEVuY29kZXI6
OlBvcHVsYXRlQ29kZWNTcGVjaWZpYyhDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0
aW1lc3RhbXApIHsKICAgYXNzZXJ0KGNvZGVjX3NwZWNpZmljICE9IE5VTEwpOwogICBjb2RlY19z
cGVjaWZpYy0+Y29kZWNUeXBlID0ga1ZpZGVvQ29kZWNWUDg7Ci0gIGNvZGVjX3NwZWNpZmljLT5j
b2RlY19uYW1lID0gSW1wbGVtZW50YXRpb25OYW1lKCk7CiAgIENvZGVjU3BlY2lmaWNJbmZvVlA4
KiB2cDhJbmZvID0gJihjb2RlY19zcGVjaWZpYy0+Y29kZWNTcGVjaWZpYy5WUDgpOwogICB2cDhJ
bmZvLT5rZXlJZHggPSBrTm9LZXlJZHg7ICAvLyBUT0RPKGhsdW5kaW4pIHBvcHVsYXRlIHRoaXMK
ICAgdnA4SW5mby0+bm9uUmVmZXJlbmNlID0gKHBrdC5kYXRhLmZyYW1lLmZsYWdzICYgVlBYX0ZS
QU1FX0lTX0RST1BQQUJMRSkgIT0gMDsKQEAgLTg2MywxNCArODQyLDkgQEAgaW50IExpYnZweFZw
OEVuY29kZXI6OkdldEVuY29kZWRQYXJ0aXRpb25zKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2lt
YWdlKSB7CiAgIGZvciAoc2l6ZV90IGVuY29kZXJfaWR4ID0gMDsgZW5jb2Rlcl9pZHggPCBlbmNv
ZGVyc18uc2l6ZSgpOwogICAgICAgICsrZW5jb2Rlcl9pZHgsIC0tc3RyZWFtX2lkeCkgewogICAg
IHZweF9jb2RlY19pdGVyX3QgaXRlciA9IE5VTEw7Ci0gICAgaW50IHBhcnRfaWR4ID0gMDsKICAg
ICBlbmNvZGVkX2ltYWdlc19bZW5jb2Rlcl9pZHhdLl9sZW5ndGggPSAwOwogICAgIGVuY29kZWRf
aW1hZ2VzX1tlbmNvZGVyX2lkeF0uX2ZyYW1lVHlwZSA9IGtWaWRlb0ZyYW1lRGVsdGE7Ci0gICAg
UlRQRnJhZ21lbnRhdGlvbkhlYWRlciBmcmFnX2luZm87Ci0gICAgLy8ga1Rva2VuUGFydGl0aW9u
cyBpcyBudW1iZXIgb2YgYml0cyB1c2VkLgotICAgIGZyYWdfaW5mby5WZXJpZnlBbmRBbGxvY2F0
ZUZyYWdtZW50YXRpb25IZWFkZXIoKDEgPDwga1Rva2VuUGFydGl0aW9ucykgKyAxKTsKICAgICBD
b2RlY1NwZWNpZmljSW5mbyBjb2RlY19zcGVjaWZpYzsKLSAgICBib29sIGlzX2tleWZyYW1lID0g
ZmFsc2U7CiAgICAgY29uc3QgdnB4X2NvZGVjX2N4X3BrdF90KiBwa3QgPSBOVUxMOwogICAgIHdo
aWxlICgocGt0ID0gbGlidnB4Xy0+Y29kZWNfZ2V0X2N4X2RhdGEoJmVuY29kZXJzX1tlbmNvZGVy
X2lkeF0sICZpdGVyKSkgIT0KICAgICAgICAgICAgTlVMTCkgewpAQCAtODg3LDEzICs4NjEsOCBA
QCBpbnQgTGlidnB4VnA4RW5jb2Rlcjo6R2V0RW5jb2RlZFBhcnRpdGlvbnMoY29uc3QgVmlkZW9G
cmFtZSYgaW5wdXRfaW1hZ2UpIHsKICAgICAgICAgICB9CiAgICAgICAgICAgbWVtY3B5KCZlbmNv
ZGVkX2ltYWdlc19bZW5jb2Rlcl9pZHhdLl9idWZmZXJbbGVuZ3RoXSwKICAgICAgICAgICAgICAg
ICAgcGt0LT5kYXRhLmZyYW1lLmJ1ZiwgcGt0LT5kYXRhLmZyYW1lLnN6KTsKLSAgICAgICAgICBm
cmFnX2luZm8uZnJhZ21lbnRhdGlvbk9mZnNldFtwYXJ0X2lkeF0gPSBsZW5ndGg7Ci0gICAgICAg
ICAgZnJhZ19pbmZvLmZyYWdtZW50YXRpb25MZW5ndGhbcGFydF9pZHhdID0gcGt0LT5kYXRhLmZy
YW1lLnN6OwotICAgICAgICAgIGZyYWdfaW5mby5mcmFnbWVudGF0aW9uUGxUeXBlW3BhcnRfaWR4
XSA9IDA7ICAvLyBub3Qga25vd24gaGVyZQotICAgICAgICAgIGZyYWdfaW5mby5mcmFnbWVudGF0
aW9uVGltZURpZmZbcGFydF9pZHhdID0gMDsKICAgICAgICAgICBlbmNvZGVkX2ltYWdlc19bZW5j
b2Rlcl9pZHhdLl9sZW5ndGggKz0gcGt0LT5kYXRhLmZyYW1lLnN6OwogICAgICAgICAgIGFzc2Vy
dChsZW5ndGggPD0gZW5jb2RlZF9pbWFnZXNfW2VuY29kZXJfaWR4XS5fc2l6ZSk7Ci0gICAgICAg
ICAgKytwYXJ0X2lkeDsKICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZh
dWx0OgpAQCAtOTA0LDcgKzg3Myw2IEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpHZXRFbmNvZGVk
UGFydGl0aW9ucyhjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9pbWFnZSkgewogICAgICAgICAvLyBj
aGVjayBpZiBlbmNvZGVkIGZyYW1lIGlzIGEga2V5IGZyYW1lCiAgICAgICAgIGlmIChwa3QtPmRh
dGEuZnJhbWUuZmxhZ3MgJiBWUFhfRlJBTUVfSVNfS0VZKSB7CiAgICAgICAgICAgZW5jb2RlZF9p
bWFnZXNfW2VuY29kZXJfaWR4XS5fZnJhbWVUeXBlID0ga1ZpZGVvRnJhbWVLZXk7Ci0gICAgICAg
ICAgaXNfa2V5ZnJhbWUgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGVuY29kZWRfaW1hZ2Vz
X1tlbmNvZGVyX2lkeF0uU2V0U3BhdGlhbEluZGV4KHN0cmVhbV9pZHgpOwogICAgICAgICBQb3B1
bGF0ZUNvZGVjU3BlY2lmaWMoJmNvZGVjX3NwZWNpZmljLCAqcGt0LCBzdHJlYW1faWR4LCBlbmNv
ZGVyX2lkeCwKQEAgLTkzNSw3ICs5MDMsNyBAQCBpbnQgTGlidnB4VnA4RW5jb2Rlcjo6R2V0RW5j
b2RlZFBhcnRpdGlvbnMoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRfaW1hZ2UpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmcXBfMTI4KTsKICAgICAgICAgZW5jb2RlZF9pbWFnZXNf
W2VuY29kZXJfaWR4XS5xcF8gPSBxcF8xMjg7CiAgICAgICAgIGVuY29kZWRfY29tcGxldGVfY2Fs
bGJhY2tfLT5PbkVuY29kZWRJbWFnZShlbmNvZGVkX2ltYWdlc19bZW5jb2Rlcl9pZHhdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvZGVjX3Nw
ZWNpZmljLCAmZnJhZ19pbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZjb2RlY19zcGVjaWZpYywgbnVsbHB0cik7CiAgICAgICB9IGVsc2Ug
aWYgKCF0ZW1wb3JhbF9sYXllcnNfW3N0cmVhbV9pZHhdCiAgICAgICAgICAgICAgICAgICAgICAg
LT5TdXBwb3J0c0VuY29kZXJGcmFtZURyb3BwaW5nKCkpIHsKICAgICAgICAgcmVzdWx0ID0gV0VC
UlRDX1ZJREVPX0NPREVDX1RBUkdFVF9CSVRSQVRFX09WRVJTSE9PVDsKQEAgLTk1MCwxNyArOTE4
LDIxIEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpHZXRFbmNvZGVkUGFydGl0aW9ucyhjb25zdCBW
aWRlb0ZyYW1lJiBpbnB1dF9pbWFnZSkgewogICByZXR1cm4gcmVzdWx0OwogfQogCi1WaWRlb0Vu
Y29kZXI6OlNjYWxpbmdTZXR0aW5ncyBMaWJ2cHhWcDhFbmNvZGVyOjpHZXRTY2FsaW5nU2V0dGlu
Z3MoKSBjb25zdCB7CitWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIExpYnZweFZwOEVuY29kZXI6
OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICBFbmNvZGVySW5mbyBpbmZvOworICBpbmZvLnN1
cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBmYWxzZTsKKyAgaW5mby5pbXBsZW1lbnRhdGlvbl9uYW1l
ID0gImxpYnZweCI7CisgIGluZm8uaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyID0gdHJ1c3Rl
ZF9yYXRlX2NvbnRyb2xsZXJfOworCiAgIGNvbnN0IGJvb2wgZW5hYmxlX3NjYWxpbmcgPSBlbmNv
ZGVyc18uc2l6ZSgpID09IDEgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb25zX1swXS5yY19kcm9wZnJhbWVfdGhyZXNoID4gMCAmJgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29kZWNfLlZQOCgpLmF1dG9tYXRpY1Jlc2l6ZU9uOwotICByZXR1cm4g
ZW5hYmxlX3NjYWxpbmcgPyBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyhrTG93VnA4UXBU
aHJlc2hvbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtIaWdoVnA4UXBUaHJlc2hvbGQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6
IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjprT2ZmOwotfQorICBpbmZvLnNjYWxpbmdf
c2V0dGluZ3MgPSBlbmFibGVfc2NhbGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PyBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncygKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtMb3dWcDhRcFRocmVzaG9sZCwga0hpZ2hWcDhRcFRocmVzaG9sZCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGlu
Z3M6OmtPZmY7CiAKLWludCBMaWJ2cHhWcDhFbmNvZGVyOjpTZXRDaGFubmVsUGFyYW1ldGVycyh1
aW50MzJfdCBwYWNrZXRMb3NzLCBpbnQ2NF90IHJ0dCkgewotICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX09LOworICByZXR1cm4gaW5mbzsKIH0KIAogaW50IExpYnZweFZwOEVuY29kZXI6OlJl
Z2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaygKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDgvbGlidnB4X3ZwOF9lbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZW5j
b2Rlci5oCmluZGV4IDNjMjA2NzJkZjJjZDRlNjA0MWEwZmI1Mzg5YTg0MjVlNDI1YjZhMzEuLmRm
MmRiY2VlNTllNjYzYWMyN2QzYTdiMTFlMmQxMWFkNGY0OTllOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDgvbGlidnB4X3ZwOF9lbmNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9s
aWJ2cHhfdnA4X2VuY29kZXIuaApAQCAtMTQsMTUgKzE0LDE1IEBACiAjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdl
LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92
cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJ
TlQoYnVpbGQvaW5jbHVkZSkKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19m
cmFtZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVk
ZS90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X2ludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNl
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVkX2V4cGVyaW1lbnQu
aCIKIAogI2luY2x1ZGUgInZweC92cDhjeC5oIgogI2luY2x1ZGUgInZweC92cHhfZW5jb2Rlci5o
IgpAQCAtNDcsMjMgKzQ3LDE5IEBAIGNsYXNzIExpYnZweFZwOEVuY29kZXIgOiBwdWJsaWMgVmlk
ZW9FbmNvZGVyIHsKIAogICBpbnQgUmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKEVuY29k
ZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAKLSAgaW50IFNldENoYW5uZWxQ
YXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7Ci0K
ICAgaW50IFNldFJhdGVBbGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGJp
dHJhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBuZXdfZnJhbWVyYXRlKSBv
dmVycmlkZTsKIAotICBTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgc3RhdGljIHZweF9lbmNfZnJhbWVfZmxhZ3NfdCBFbmNvZGVGbGFncygKLSAgICAgIGNvbnN0
IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgcmVmZXJlbmNlcyk7CisgICAgICBjb25zdCBW
cDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcmIHJlZmVyZW5jZXMpOwogCiAgcHJpdmF0ZToK
ICAgdm9pZCBTZXR1cFRlbXBvcmFsTGF5ZXJzKGNvbnN0IFZpZGVvQ29kZWMmIGNvZGVjKTsKIAot
ICAvLyBTZXQgdGhlIGNwdV9zcGVlZCBzZXR0aW5nIGZvciBlbmNvZGVyIGJhc2VkIG9uIHJlc29s
dXRpb24gYW5kL29yIHBsYXRmb3JtLgotICBpbnQgU2V0Q3B1U3BlZWQoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KTsKKyAgLy8gR2V0IHRoZSBjcHVfc3BlZWQgc2V0dGluZyBmb3IgZW5jb2RlciBiYXNl
ZCBvbiByZXNvbHV0aW9uIGFuZC9vciBwbGF0Zm9ybS4KKyAgaW50IEdldENwdVNwZWVkKGludCB3
aWR0aCwgaW50IGhlaWdodCk7CiAKICAgLy8gRGV0ZXJtaW5lIG51bWJlciBvZiBlbmNvZGVyIHRo
cmVhZHMgdG8gdXNlLgogICBpbnQgTnVtYmVyT2ZUaHJlYWRzKGludCB3aWR0aCwgaW50IGhlaWdo
dCwgaW50IG51bWJlcl9vZl9jb3Jlcyk7CkBAIC04Nyw3ICs4MywxMCBAQCBjbGFzcyBMaWJ2cHhW
cDhFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgIHVpbnQzMl90IEZyYW1lRHJvcFRo
cmVzaG9sZChzaXplX3Qgc3BhdGlhbF9pZHgpIGNvbnN0OwogCiAgIGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxMaWJ2cHhJbnRlcmZhY2U+IGxpYnZweF87Ci0gIGNvbnN0IGJvb2wgdXNlX2dmX2Jvb3N0
XzsKKworICBjb25zdCBhYnNsOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxDcHVTcGVlZEV4cGVyaW1l
bnQ6OkNvbmZpZz4+CisgICAgICBleHBlcmltZW50YWxfY3B1X3NwZWVkX2NvbmZpZ19hcm1fOwor
ICBjb25zdCBib29sIHRydXN0ZWRfcmF0ZV9jb250cm9sbGVyXzsKIAogICBFbmNvZGVkSW1hZ2VD
YWxsYmFjayogZW5jb2RlZF9jb21wbGV0ZV9jYWxsYmFja187CiAgIFZpZGVvQ29kZWMgY29kZWNf
OwpAQCAtOTcsOCArOTYsNyBAQCBjbGFzcyBMaWJ2cHhWcDhFbmNvZGVyIDogcHVibGljIFZpZGVv
RW5jb2RlciB7CiAgIGludCBjcHVfc3BlZWRfZGVmYXVsdF87CiAgIGludCBudW1iZXJfb2ZfY29y
ZXNfOwogICB1aW50MzJfdCByY19tYXhfaW50cmFfdGFyZ2V0XzsKLSAgc3RkOjp2ZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPFRlbXBvcmFsTGF5ZXJzPj4gdGVtcG9yYWxfbGF5ZXJzXzsKLSAgc3RkOjp2
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcj4+IHRlbXBvcmFsX2xh
eWVyc19jaGVja2Vyc187CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxWcDhUZW1wb3Jh
bExheWVycz4+IHRlbXBvcmFsX2xheWVyc187CiAgIHN0ZDo6dmVjdG9yPGJvb2w+IGtleV9mcmFt
ZV9yZXF1ZXN0XzsKICAgc3RkOjp2ZWN0b3I8Ym9vbD4gc2VuZF9zdHJlYW1fOwogICBzdGQ6OnZl
Y3RvcjxpbnQ+IGNwdV9zcGVlZF87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZw
eF92cDhfc2ltdWxjYXN0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfc2lt
dWxjYXN0X3Rlc3QuY2MKaW5kZXggNWY5NzRkNjQzYmIwZWUzMmNkNmY3NmRiZTAwYWUzYjE5ZjE1
NWQxZS4uZDQ5M2UyYWNlYjY0ODc3MWZhOTVlZDVlMjNjYzIwOGUzMGFiMmMxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X3NpbXVsY2FzdF90ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9zaW11bGNhc3RfdGVzdC5jYwpAQCAtMTMsOSArMTMs
OSBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImFwaS90ZXN0
L2NyZWF0ZV9zaW11bGNhc3RfdGVzdF9maXh0dXJlLmgiCiAjaW5jbHVkZSAiYXBpL3Rlc3Qvc2lt
dWxjYXN0X3Rlc3RfZml4dHVyZS5oIgorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9u
X3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0
aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3Zp
ZGVvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuY2MKaW5kZXggNzZjNDM4MmEy
MWY4ZGZlZWNlN2VlMjZjYzBmZjc4ZDMxZTJmZWQ0Ni4uZWRlMjFlNTU0ZDcyNjQ4YTk5MDA1ZThh
NzdkOWNiZGE5ZjZhNzI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFy
ZV9sYXllcnMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuY2MK
QEAgLTUzLDcgKzUzLDcgQEAgU2NyZWVuc2hhcmVMYXllcnM6OlNjcmVlbnNoYXJlTGF5ZXJzKGlu
dCBudW1fdGVtcG9yYWxfbGF5ZXJzLCBDbG9jayogY2xvY2spCiAgICAgICBlbmNvZGVfZnJhbWVy
YXRlXygxMDAwLjBmLCAxMDAwLjBmKSwgIC8vIDEgc2Vjb25kIHdpbmRvdywgc2Vjb25kIHNjYWxl
LgogICAgICAgYml0cmF0ZV91cGRhdGVkXyhmYWxzZSksCiAgICAgICBjaGVja2VyXyhUZW1wb3Jh
bExheWVyc0NoZWNrZXI6OkNyZWF0ZVRlbXBvcmFsTGF5ZXJzQ2hlY2tlcigKLSAgICAgICAgICBU
ZW1wb3JhbExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1pYywKKyAgICAgICAgICBWcDhUZW1wb3Jh
bExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1pYywKICAgICAgICAgICBudW1fdGVtcG9yYWxfbGF5
ZXJzKSkgewogICBSVENfQ0hFQ0tfR1QobnVtYmVyX29mX3RlbXBvcmFsX2xheWVyc18sIDApOwog
ICBSVENfQ0hFQ0tfTEUobnVtYmVyX29mX3RlbXBvcmFsX2xheWVyc18sIGtNYXhOdW1UZW1wb3Jh
bExheWVycyk7CkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgU2NyZWVuc2hhcmVMYXllcnM6OlN1cHBv
cnRzRW5jb2RlckZyYW1lRHJvcHBpbmcoKSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAot
VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFNjcmVlbnNoYXJlTGF5ZXJzOjpVcGRhdGVMYXll
ckNvbmZpZygKK1ZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyBTY3JlZW5zaGFyZUxheWVy
czo6VXBkYXRlTGF5ZXJDb25maWcoCiAgICAgdWludDMyX3QgdGltZXN0YW1wKSB7CiAgIGF1dG8g
aXQgPSBwZW5kaW5nX2ZyYW1lX2NvbmZpZ3NfLmZpbmQodGltZXN0YW1wKTsKICAgaWYgKGl0ICE9
IHBlbmRpbmdfZnJhbWVfY29uZmlnc18uZW5kKCkpIHsKQEAgLTc5LDcgKzc5LDcgQEAgVGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnIFNjcmVlbnNoYXJlTGF5ZXJzOjpVcGRhdGVMYXllckNvbmZp
ZygKICAgaWYgKG51bWJlcl9vZl90ZW1wb3JhbF9sYXllcnNfIDw9IDEpIHsKICAgICAvLyBObyBm
bGFncyBuZWVkZWQgZm9yIDEgbGF5ZXIgc2NyZWVuc2hhcmUuCiAgICAgLy8gVE9ETyhwYm9zKTog
Q29uc2lkZXIgdXBkYXRpbmcgb25seSBsYXN0LCBhbmQgbm90IGFsbCBidWZmZXJzLgotICAgIFRl
bXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcoCisgICAgVnA4VGVtcG9yYWxMYXll
cnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZygKICAgICAgICAga1JlZmVyZW5jZUFuZFVwZGF0ZSwg
a1JlZmVyZW5jZUFuZFVwZGF0ZSwga1JlZmVyZW5jZUFuZFVwZGF0ZSk7CiAgICAgcGVuZGluZ19m
cmFtZV9jb25maWdzX1t0aW1lc3RhbXBdID0gdGxfY29uZmlnOwogICAgIHJldHVybiB0bF9jb25m
aWc7CkBAIC0xMDAsNyArMTAwLDcgQEAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFNjcmVl
bnNoYXJlTGF5ZXJzOjpVcGRhdGVMYXllckNvbmZpZygKICAgICAvLyBhdmVyYWdpbmcgd2luZG93
LCBvciBpZiBmcmFtZSBpbnRlcnZhbCBpcyBiZWxvdyA5MCUgb2YgZGVzaXJlZCB2YWx1ZSwKICAg
ICAvLyBkcm9wIGZyYW1lLgogICAgIGlmIChlbmNvZGVfZnJhbWVyYXRlXy5SYXRlKG5vd19tcyku
dmFsdWVfb3IoMCkgPiAqdGFyZ2V0X2ZyYW1lcmF0ZV8pCi0gICAgICByZXR1cm4gVGVtcG9yYWxM
YXllcnM6OkZyYW1lQ29uZmlnKGtOb25lLCBrTm9uZSwga05vbmUpOworICAgICAgcmV0dXJuIFZw
OFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrTm9uZSwga05vbmUsIGtOb25lKTsKIAogICAg
IC8vIFByaW1hcmlseSBjaGVjayBpZiBmcmFtZSBpbnRlcnZhbCBpcyB0b28gc2hvcnQgdXNpbmcg
ZnJhbWUgdGltZXN0YW1wcywKICAgICAvLyBhcyBpZiB0aGV5IGFyZSBjb3JyZWN0IHRoZXkgd29u
J3QgYmUgYWZmZWN0ZWQgYnkgcXVldWluZyBpbiB3ZWJydGMuCkBAIC0xMDgsNyArMTA4LDcgQEAg
VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFNjcmVlbnNoYXJlTGF5ZXJzOjpVcGRhdGVMYXll
ckNvbmZpZygKICAgICAgICAga09uZVNlY29uZDkwS2h6IC8gKnRhcmdldF9mcmFtZXJhdGVfOwog
ICAgIGlmIChsYXN0X3RpbWVzdGFtcF8gIT0gLTEgJiYgdHNfZGlmZiA+IDApIHsKICAgICAgIGlm
ICh0c19kaWZmIDwgODUgKiBleHBlY3RlZF9mcmFtZV9pbnRlcnZhbF85MGtoeiAvIDEwMCkgewot
ICAgICAgICByZXR1cm4gVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnKGtOb25lLCBrTm9uZSwg
a05vbmUpOworICAgICAgICByZXR1cm4gVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnKGtO
b25lLCBrTm9uZSwga05vbmUpOwogICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAvLyBUaW1l
c3RhbXBzIGxvb2tzIG9mZiwgdXNlIHJlYWx0aW1lIGNsb2NrIGhlcmUgaW5zdGVhZC4KQEAgLTEx
Niw3ICsxMTYsNyBAQCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgU2NyZWVuc2hhcmVMYXll
cnM6OlVwZGF0ZUxheWVyQ29uZmlnKAogICAgICAgaWYgKGxhc3RfZnJhbWVfdGltZV9tc18gIT0g
LTEgJiYKICAgICAgICAgICBub3dfbXMgLSBsYXN0X2ZyYW1lX3RpbWVfbXNfIDwKICAgICAgICAg
ICAgICAgKDg1ICogZXhwZWN0ZWRfZnJhbWVfaW50ZXJ2YWxfbXMpIC8gMTAwKSB7Ci0gICAgICAg
IHJldHVybiBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa05vbmUsIGtOb25lLCBrTm9uZSk7
CisgICAgICAgIHJldHVybiBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa05vbmUsIGtO
b25lLCBrTm9uZSk7CiAgICAgICB9CiAgICAgfQogICB9CkBAIC0xODIsMzAgKzE4MiwzMCBAQCBU
ZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgU2NyZWVuc2hhcmVMYXllcnM6OlVwZGF0ZUxheWVy
Q29uZmlnKAogICAgICAgUlRDX05PVFJFQUNIRUQoKTsKICAgfQogCi0gIFRlbXBvcmFsTGF5ZXJz
OjpGcmFtZUNvbmZpZyB0bF9jb25maWc7CisgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZp
ZyB0bF9jb25maWc7CiAgIC8vIFRPRE8ocGJvcyk6IENvbnNpZGVyIHJlZmVyZW5jaW5nIGJ1dCBu
b3QgdXBkYXRpbmcgdGhlICdhbHQnIGJ1ZmZlciBmb3IgYWxsCiAgIC8vIGxheWVycy4KICAgc3dp
dGNoIChsYXllcl9zdGF0ZSkgewogICAgIGNhc2UgVGVtcG9yYWxMYXllclN0YXRlOjprRHJvcDoK
LSAgICAgIHRsX2NvbmZpZyA9IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrTm9uZSwga05v
bmUsIGtOb25lKTsKKyAgICAgIHRsX2NvbmZpZyA9IFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNv
bmZpZyhrTm9uZSwga05vbmUsIGtOb25lKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGVtcG9y
YWxMYXllclN0YXRlOjprVGwwOgogICAgICAgLy8gVEwwIG9ubHkgcmVmZXJlbmNlcyBhbmQgdXBk
YXRlcyAnbGFzdCcuCiAgICAgICB0bF9jb25maWcgPQotICAgICAgICAgIFRlbXBvcmFsTGF5ZXJz
OjpGcmFtZUNvbmZpZyhrUmVmZXJlbmNlQW5kVXBkYXRlLCBrTm9uZSwga05vbmUpOworICAgICAg
ICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrUmVmZXJlbmNlQW5kVXBkYXRlLCBr
Tm9uZSwga05vbmUpOwogICAgICAgdGxfY29uZmlnLnBhY2tldGl6ZXJfdGVtcG9yYWxfaWR4ID0g
MDsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGVtcG9yYWxMYXllclN0YXRlOjprVGwxOgogICAg
ICAgLy8gVEwxIHJlZmVyZW5jZXMgYm90aCAnbGFzdCcgYW5kICdnb2xkZW4nIGJ1dCBvbmx5IHVw
ZGF0ZXMgJ2dvbGRlbicuCi0gICAgICB0bF9jb25maWcgPQotICAgICAgICAgIFRlbXBvcmFsTGF5
ZXJzOjpGcmFtZUNvbmZpZyhrUmVmZXJlbmNlLCBrUmVmZXJlbmNlQW5kVXBkYXRlLCBrTm9uZSk7
CisgICAgICB0bF9jb25maWcgPSBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa1JlZmVy
ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
UmVmZXJlbmNlQW5kVXBkYXRlLCBrTm9uZSk7CiAgICAgICB0bF9jb25maWcucGFja2V0aXplcl90
ZW1wb3JhbF9pZHggPSAxOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZW1wb3JhbExheWVyU3Rh
dGU6OmtUbDFTeW5jOgogICAgICAgLy8gUHJlZGljdCBmcm9tIG9ubHkgVEwwIHRvIGFsbG93IHBh
cnRpY2lwYW50cyB0byBzd2l0Y2ggdG8gdGhlIGhpZ2gKICAgICAgIC8vIGJpdHJhdGUgc3RyZWFt
LiBVcGRhdGVzICdnb2xkZW4nIHNvIHRoYXQgVEwxIGNhbiBjb250aW51ZSB0byByZWZlciB0bwog
ICAgICAgLy8gYW5kIHVwZGF0ZSAnZ29sZGVuJyBmcm9tIHRoaXMgcG9pbnQgb24uCi0gICAgICB0
bF9jb25maWcgPSBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa1JlZmVyZW5jZSwga1VwZGF0
ZSwga05vbmUpOworICAgICAgdGxfY29uZmlnID0gVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29u
ZmlnKGtSZWZlcmVuY2UsIGtVcGRhdGUsIGtOb25lKTsKICAgICAgIHRsX2NvbmZpZy5wYWNrZXRp
emVyX3RlbXBvcmFsX2lkeCA9IDE7CiAgICAgICBicmVhazsKICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2Ny
ZWVuc2hhcmVfbGF5ZXJzLmgKaW5kZXggNjE5M2JlMzYwMDEwZGY2NmI3YjRmMjgxZjJhNGM2YjQ5
MDhhYTIzOC4uMDM1OWIyYzMzZmM1OTBjYzBmY2MxY2VjYTQ0MjVlNTU3NmI1N2Q0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVycy5oCkBAIC0xMyw4ICsxMyw4IEBACiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS92aWRlb19jb2Rl
Y3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDgvaW5jbHVkZS90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5
ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9mcmFtZV9kcm9w
cGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZV9zdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvdGltZXV0aWxzLmgiCkBAIC0yNCw3ICsyNCw3IEBAIG5hbWVzcGFjZSB3ZWJydGMg
ewogc3RydWN0IENvZGVjU3BlY2lmaWNJbmZvVlA4OwogY2xhc3MgQ2xvY2s7CiAKLWNsYXNzIFNj
cmVlbnNoYXJlTGF5ZXJzIDogcHVibGljIFRlbXBvcmFsTGF5ZXJzIHsKK2NsYXNzIFNjcmVlbnNo
YXJlTGF5ZXJzIDogcHVibGljIFZwOFRlbXBvcmFsTGF5ZXJzIHsKICBwdWJsaWM6CiAgIHN0YXRp
YyBjb25zdCBkb3VibGUga01heFRMMEZwc1JlZHVjdGlvbjsKICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSBrQWNjZXB0YWJsZVRhcmdldE92ZXJzaG9vdDsKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2Ny
ZWVuc2hhcmVMYXllcnMgOiBwdWJsaWMgVGVtcG9yYWxMYXllcnMgewogCiAgIC8vIFJldHVybnMg
dGhlIHJlY29tbWVuZGVkIFZQOCBlbmNvZGUgZmxhZ3MgbmVlZGVkLiBNYXkgcmVmcmVzaCB0aGUg
ZGVjb2RlcgogICAvLyBhbmQvb3IgdXBkYXRlIHRoZSByZWZlcmVuY2UgYnVmZmVycy4KLSAgVGVt
cG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFVwZGF0ZUxheWVyQ29uZmlnKAorICBWcDhUZW1wb3Jh
bExheWVyczo6RnJhbWVDb25maWcgVXBkYXRlTGF5ZXJDb25maWcoCiAgICAgICB1aW50MzJfdCBy
dHBfdGltZXN0YW1wKSBvdmVycmlkZTsKIAogICAvLyBOZXcgdGFyZ2V0IGJpdHJhdGUsIHBlciB0
ZW1wb3JhbCBsYXllci4KQEAgLTc0LDcgKzc0LDcgQEAgY2xhc3MgU2NyZWVuc2hhcmVMYXllcnMg
OiBwdWJsaWMgVGVtcG9yYWxMYXllcnMgewogICBpbnQgbWF4X3FwXzsKICAgdWludDMyX3QgbWF4
X2RlYnRfYnl0ZXNfOwogCi0gIHN0ZDo6bWFwPHVpbnQzMl90LCBUZW1wb3JhbExheWVyczo6RnJh
bWVDb25maWc+IHBlbmRpbmdfZnJhbWVfY29uZmlnc187CisgIHN0ZDo6bWFwPHVpbnQzMl90LCBW
cDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc+IHBlbmRpbmdfZnJhbWVfY29uZmlnc187CiAK
ICAgLy8gQ29uZmlndXJlZCBtYXggZnJhbWVyYXRlLgogICBhYnNsOjpvcHRpb25hbDx1aW50MzJf
dD4gdGFyZ2V0X2ZyYW1lcmF0ZV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3NjcmVl
bnNoYXJlX2xheWVyc191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVf
bGF5ZXJzX3VuaXR0ZXN0LmNjCmluZGV4IDRhZTdlZDVlN2U0MjViNmFlNWM3MDhkYjQwNGRiY2Mw
YzUzZjRjZjQuLjQ3NGU0ZjgyNWI1OTdlZTEwZTRkOTY0NDE1ZmE3YmM1ZjY3OWM5ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzX3VuaXR0ZXN0LmNjCkBAIC04
Nyw3ICs4Nyw3IEBAIGNsYXNzIFNjcmVlbnNoYXJlTGF5ZXJUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7CiAgICAgcmV0dXJuIGZsYWdzOwogICB9CiAKLSAgVGVtcG9yYWxMYXllcnM6OkZy
YW1lQ29uZmlnIFVwZGF0ZUxheWVyQ29uZmlnKHVpbnQzMl90IHRpbWVzdGFtcCkgeworICBWcDhU
ZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgVXBkYXRlTGF5ZXJDb25maWcodWludDMyX3QgdGlt
ZXN0YW1wKSB7CiAgICAgaW50NjRfdCB0aW1lc3RhbXBfbXMgPSB0aW1lc3RhbXAgLyA5MDsKICAg
ICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHModGltZXN0YW1wX21zIC0gY2xvY2tfLlRp
bWVJbk1pbGxpc2Vjb25kcygpKTsKICAgICByZXR1cm4gbGF5ZXJzXy0+VXBkYXRlTGF5ZXJDb25m
aWcodGltZXN0YW1wKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBjbGFzcyBTY3JlZW5zaGFyZUxheWVy
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICBzdGQ6OnVuaXF1ZV9wdHI8U2NyZWVu
c2hhcmVMYXllcnM+IGxheWVyc187CiAKICAgdWludDMyX3QgdGltZXN0YW1wXzsKLSAgVGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZ187CisgIFZwOFRlbXBvcmFsTGF5ZXJzOjpG
cmFtZUNvbmZpZyB0bF9jb25maWdfOwogICBWcDhFbmNvZGVyQ29uZmlnIGNmZ187CiAgIGJvb2wg
Y29uZmlnX3VwZGF0ZWRfOwogICBDb2RlY1NwZWNpZmljSW5mb1ZQOCB2cDhfaW5mb187CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3RlbXBvcmFsX2xheWVycy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3ZwOC90ZW1wb3JhbF9sYXllcnMuaAppbmRleCA3ODhkNjlhMjdiYjMxNzRlNjIyYWYwNDUwODA5
Y2UzODUxYzc1ODgwLi45NTc2ZmIyN2JlYWE2MzE3YzExOTQ1ZTEzZGEwOGI0MzcwNzA3OGUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3RlbXBvcmFsX2xheWVycy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzLmgKQEAgLTEyLDYgKzEyLDYgQEAKICNkZWZpbmUg
TU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8KIAogLy8g
VE9ETyh3ZWJydGM6OTAxMikgUmVtb3ZlIHRoaXMgZmlsZSB3aGVuIGRvd25zdHJlYW0gcHJvamVj
dHMgaGF2ZSB1cGRhdGVkLgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2Nv
ZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAKICNlbmRpZiAgLy8gTU9EVUxFU19WSURFT19D
T0RJTkdfQ09ERUNTX1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3Rl
bXBvcmFsX2xheWVyc19jaGVja2VyLmNjCmluZGV4IGMwYTczNmE0ZWRkYTlmZDk0YzAxYzA3YTJm
NTY0YWZlMTllMDcwYWQuLjRkYmE3YTM2NmE5ZDkyOGZiZTQwOGMwYzQyZmFhNzg1NGUzZTUyMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYwpAQCAtMTcs
MTMgKzE3LDEzIEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogc3RkOjp1bmlxdWVfcHRyPFRlbXBv
cmFsTGF5ZXJzQ2hlY2tlcj4KLVRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q3JlYXRlVGVtcG9yYWxM
YXllcnNDaGVja2VyKFRlbXBvcmFsTGF5ZXJzVHlwZSB0eXBlLAorVGVtcG9yYWxMYXllcnNDaGVj
a2VyOjpDcmVhdGVUZW1wb3JhbExheWVyc0NoZWNrZXIoVnA4VGVtcG9yYWxMYXllcnNUeXBlIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbnVtX3RlbXBvcmFsX2xheWVycykgewogICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFRl
bXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybjoKKyAgICBjYXNlIFZwOFRlbXBvcmFsTGF5
ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybjoKICAgICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxE
ZWZhdWx0VGVtcG9yYWxMYXllcnNDaGVja2VyPigKICAgICAgICAgICBudW1fdGVtcG9yYWxfbGF5
ZXJzKTsKLSAgICBjYXNlIFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0JpdHJhdGVEeW5hbWljOgorICAg
IGNhc2UgVnA4VGVtcG9yYWxMYXllcnNUeXBlOjprQml0cmF0ZUR5bmFtaWM6CiAgICAgICAvLyBD
b25mZXJlbmNlIG1vZGUgdGVtcG9yYWwgbGF5ZXJpbmcgZm9yIHNjcmVlbiBjb250ZW50IGluIGJh
c2Ugc3RyZWFtLgogICAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFRlbXBvcmFsTGF5ZXJz
Q2hlY2tlcj4obnVtX3RlbXBvcmFsX2xheWVycyk7CiAgIH0KQEAgLTQwLDEwICs0MCwxMCBAQCBi
b29sIFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q2hlY2tBbmRVcGRhdGVCdWZmZXJTdGF0ZSgKICAg
ICBib29sKiBuZWVkX3N5bmMsCiAgICAgYm9vbCBmcmFtZV9pc19rZXlmcmFtZSwKICAgICB1aW50
OF90IHRlbXBvcmFsX2xheWVyLAotICAgIHdlYnJ0Yzo6VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZs
YWdzIGZsYWdzLAorICAgIHdlYnJ0Yzo6VnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGZs
YWdzLAogICAgIHVpbnQzMl90IHNlcXVlbmNlX251bWJlciwKICAgICB1aW50MzJfdCogbG93ZXN0
X3NlcXVlbmNlX3JlZmVyZW5jZWQpIHsKLSAgaWYgKGZsYWdzICYgVGVtcG9yYWxMYXllcnM6OkJ1
ZmZlckZsYWdzOjprUmVmZXJlbmNlKSB7CisgIGlmIChmbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJz
OjpCdWZmZXJGbGFnczo6a1JlZmVyZW5jZSkgewogICAgIGlmIChzdGF0ZS0+dGVtcG9yYWxfbGF5
ZXIgPiAwICYmICFzdGF0ZS0+aXNfa2V5ZnJhbWUpIHsKICAgICAgICpuZWVkX3N5bmMgPSBmYWxz
ZTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgVGVtcG9yYWxMYXllcnNDaGVja2VyOjpD
aGVja0FuZFVwZGF0ZUJ1ZmZlclN0YXRlKAogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
fQotICBpZiAoKGZsYWdzICYgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSkg
eworICBpZiAoKGZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRl
KSkgewogICAgIHN0YXRlLT50ZW1wb3JhbF9sYXllciA9IHRlbXBvcmFsX2xheWVyOwogICAgIHN0
YXRlLT5zZXF1ZW5jZV9udW1iZXIgPSBzZXF1ZW5jZV9udW1iZXI7CiAgICAgc3RhdGUtPmlzX2tl
eWZyYW1lID0gZnJhbWVfaXNfa2V5ZnJhbWU7CkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgVGVtcG9y
YWxMYXllcnNDaGVja2VyOjpDaGVja0FuZFVwZGF0ZUJ1ZmZlclN0YXRlKAogCiBib29sIFRlbXBv
cmFsTGF5ZXJzQ2hlY2tlcjo6Q2hlY2tUZW1wb3JhbENvbmZpZygKICAgICBib29sIGZyYW1lX2lz
X2tleWZyYW1lLAotICAgIGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgZnJhbWVf
Y29uZmlnKSB7CisgICAgY29uc3QgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiBmcmFt
ZV9jb25maWcpIHsKICAgaWYgKGZyYW1lX2NvbmZpZy5kcm9wX2ZyYW1lIHx8CiAgICAgICBmcmFt
ZV9jb25maWcucGFja2V0aXplcl90ZW1wb3JhbF9pZHggPT0ga05vVGVtcG9yYWxJZHgpIHsKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVzdC9tb2NrX2xp
YnZweF9pbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVzdC9tb2NrX2xpYnZweF9pbnRl
cmZhY2UuaAppbmRleCA1ODA0ZTgxNGVjOTE0ODg1OGRkYzgzZGM3ZTc3NmI1MjdjNTdlZWYyLi5k
Y2ZmMWU2YTE4ODQ2YWRiZTNkZTQxOTAyNmUxNzczZTc5OGM2YWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvdnA4L3Rlc3QvbW9ja19saWJ2cHhfaW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC90ZXN0L21vY2tfbGlidnB4X2ludGVyZmFjZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNs
YXNzIE1vY2tMaWJ2cHhWcDhJbnRlcmZhY2UgOiBwdWJsaWMgTGlidnB4SW50ZXJmYWNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMShp
bWdfZnJlZSwgdnB4X2NvZGVjX2Vycl90KGNvbnN0IHZweF9jb2RlY19lbmNfY2ZnX3QqKSk7Cisg
IE1PQ0tfQ09OU1RfTUVUSE9EMShpbWdfZnJlZSwgdm9pZCh2cHhfaW1hZ2VfdCogaW1nKSk7CiAg
IE1PQ0tfQ09OU1RfTUVUSE9EMihjb2RlY19lbmNfY29uZmlnX3NldCwKICAgICAgICAgICAgICAg
ICAgICAgIHZweF9jb2RlY19lcnJfdCh2cHhfY29kZWNfY3R4X3QqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZweF9jb2RlY19lbmNfY2ZnX3QqKSk7CkBAIC04
NCw3ICs4NCw3IEBAIGNsYXNzIE1vY2tMaWJ2cHhWcDhJbnRlcmZhY2UgOiBwdWJsaWMgTGlidnB4
SW50ZXJmYWNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRf
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cHhfZW5jX2ZyYW1lX2Zs
YWdzX3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QpKTsK
LSAgTU9DS19DT05TVF9NRVRIT0QzKGNvZGVjX2dldF9jeF9kYXRhLAorICBNT0NLX0NPTlNUX01F
VEhPRDIoY29kZWNfZ2V0X2N4X2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2cHhf
Y29kZWNfY3hfcGt0X3QqKHZweF9jb2RlY19jdHhfdCosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZweF9jb2RlY19pdGVyX3QqKSk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZXN0L3ZwOF9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOC90ZXN0L3ZwOF9pbXBsX3VuaXR0ZXN0LmNjCmluZGV4IDQ1YTA5MGRmMzczNmRl
OTEwNjYzNDQ1Y2FiZDc2OWE5MmIxOWMxMDkuLjVlZWQ1ZDM4MGNmNmE2ZjAxMmNlMWY4MGQyZDkw
ZDc1NTBhNDlhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVzdC92cDhfaW1wbF91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3Rlc3QvdnA4X2ltcGxfdW5pdHRlc3Qu
Y2MKQEAgLTEyLDE2ICsxMiwyNSBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAi
YXBpL3Rlc3QvbW9ja192aWRlb19kZWNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192
aWRlb19lbmNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxf
bGF5ZXJzLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19s
aWJ5dXYuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRl
b19jb2RlY191bml0dGVzdC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvaW5jbHVkZS92cDguaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9lbmNvZGVyLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZXN0L21vY2tfbGlidnB4X2ludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvdnA4X2hlYWRlcl9w
YXJzZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJ0ZXN0
L3ZpZGVvX2NvZGVjX3NldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCit1c2luZyB0
ZXN0aW5nOjpJbnZva2U7Cit1c2luZyB0ZXN0aW5nOjpOaWNlTW9jazsKK3VzaW5nIHRlc3Rpbmc6
OlJldHVybjsKK3VzaW5nIHRlc3Rpbmc6Ol87CisKIG5hbWVzcGFjZSB7CiBjb25zdGV4cHIgdWlu
dDMyX3Qga0luaXRpYWxUaW1lc3RhbXBSdHAgPSAxMjM7CiBjb25zdGV4cHIgaW50NjRfdCBrVGVz
dE50cFRpbWVNcyA9IDQ1NjsKQEAgLTY4LDcgKzc3LDcgQEAgY2xhc3MgVGVzdFZwOEltcGwgOiBw
dWJsaWMgVmlkZW9Db2RlY1VuaXRUZXN0IHsKICAgICAgICAgICAgICAgZW5jb2Rlcl8tPkVuY29k
ZShpbnB1dF9mcmFtZSwgbnVsbHB0ciwgJmZyYW1lX3R5cGVzKSk7CiAgICAgQVNTRVJUX1RSVUUo
V2FpdEZvckVuY29kZWRGcmFtZShlbmNvZGVkX2ZyYW1lLCBjb2RlY19zcGVjaWZpY19pbmZvKSk7
CiAgICAgVmVyaWZ5UXBQYXJzZXIoKmVuY29kZWRfZnJhbWUpOwotICAgIEVYUEVDVF9TVFJFUSgi
bGlidnB4IiwgY29kZWNfc3BlY2lmaWNfaW5mby0+Y29kZWNfbmFtZSk7CisgICAgRVhQRUNUX0VR
KCJsaWJ2cHgiLCBlbmNvZGVyXy0+R2V0RW5jb2RlckluZm8oKS5pbXBsZW1lbnRhdGlvbl9uYW1l
KTsKICAgICBFWFBFQ1RfRVEoa1ZpZGVvQ29kZWNWUDgsIGNvZGVjX3NwZWNpZmljX2luZm8tPmNv
ZGVjVHlwZSk7CiAgICAgRVhQRUNUX0VRKDAsIGVuY29kZWRfZnJhbWUtPlNwYXRpYWxJbmRleCgp
KTsKICAgfQpAQCAtMzI1LDcgKzMzNCw4IEBAIFRFU1RfRihUZXN0VnA4SW1wbCwgU2NhbGluZ0Rp
c2FibGVkSWZBdXRvbWF0aWNSZXNpemVPZmYpIHsKICAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19D
T0RFQ19PSywKICAgICAgICAgICAgIGVuY29kZXJfLT5Jbml0RW5jb2RlKCZjb2RlY19zZXR0aW5n
c18sIGtOdW1Db3Jlcywga01heFBheWxvYWRTaXplKSk7CiAKLSAgVmlkZW9FbmNvZGVyOjpTY2Fs
aW5nU2V0dGluZ3Mgc2V0dGluZ3MgPSBlbmNvZGVyXy0+R2V0U2NhbGluZ1NldHRpbmdzKCk7Cisg
IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIHNldHRpbmdzID0KKyAgICAgIGVuY29kZXJf
LT5HZXRFbmNvZGVySW5mbygpLnNjYWxpbmdfc2V0dGluZ3M7CiAgIEVYUEVDVF9GQUxTRShzZXR0
aW5ncy50aHJlc2hvbGRzLmhhc192YWx1ZSgpKTsKIH0KIApAQCAtMzM1LDcgKzM0NSw4IEBAIFRF
U1RfRihUZXN0VnA4SW1wbCwgU2NhbGluZ0VuYWJsZWRJZkF1dG9tYXRpY1Jlc2l6ZU9uKSB7CiAg
IEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCiAgICAgICAgICAgICBlbmNvZGVyXy0+
SW5pdEVuY29kZSgmY29kZWNfc2V0dGluZ3NfLCBrTnVtQ29yZXMsIGtNYXhQYXlsb2FkU2l6ZSkp
OwogCi0gIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIHNldHRpbmdzID0gZW5jb2Rlcl8t
PkdldFNjYWxpbmdTZXR0aW5ncygpOworICBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBz
ZXR0aW5ncyA9CisgICAgICBlbmNvZGVyXy0+R2V0RW5jb2RlckluZm8oKS5zY2FsaW5nX3NldHRp
bmdzOwogICBFWFBFQ1RfVFJVRShzZXR0aW5ncy50aHJlc2hvbGRzLmhhc192YWx1ZSgpKTsKICAg
RVhQRUNUX0VRKGtEZWZhdWx0TWluUGl4ZWxzUGVyRnJhbWUsIHNldHRpbmdzLm1pbl9waXhlbHNf
cGVyX2ZyYW1lKTsKIH0KQEAgLTM4MCw0ICszOTEsNDEgQEAgVEVTVF9GKFRlc3RWcDhJbXBsLCBE
b250RHJvcEtleWZyYW1lcykgewogICBFbmNvZGVBbmRFeHBlY3RGcmFtZVdpdGgoKk5leHRJbnB1
dEZyYW1lKCksIDAsIHRydWUpOwogfQogCitURVNUX0YoVGVzdFZwOEltcGwsIEtlZXBzVGltZXN0
YW1wT25SZWVuY29kZSkgeworICBhdXRvKiBjb25zdCB2cHggPSBuZXcgTmljZU1vY2s8TW9ja0xp
YnZweFZwOEludGVyZmFjZT4oKTsKKyAgTGlidnB4VnA4RW5jb2RlciBlbmNvZGVyKChzdGQ6OnVu
aXF1ZV9wdHI8TGlidnB4SW50ZXJmYWNlPih2cHgpKSk7CisKKyAgLy8gU2V0dGluZ3MgbmVlZGVk
IHRvIHRyaWdnZXIgU2NyZWVuc2hhcmVMYXllcnMgdXNhZ2UsIHdoaWNoIGlzIHJlcXVpcmVkIGZv
cgorICAvLyBvdmVyc2hvb3QtZHJvcC1yZWVuY29kZSBsb2dpYy4KKyAgY29kZWNfc2V0dGluZ3Nf
LnRhcmdldEJpdHJhdGUgPSAyMDA7CisgIGNvZGVjX3NldHRpbmdzXy5tYXhCaXRyYXRlID0gMTAw
MDsKKyAgY29kZWNfc2V0dGluZ3NfLm1vZGUgPSBWaWRlb0NvZGVjTW9kZTo6a1NjcmVlbnNoYXJp
bmc7CisgIGNvZGVjX3NldHRpbmdzXy5WUDgoKS0+bnVtYmVyT2ZUZW1wb3JhbExheWVycyA9IDI7
CisKKyAgRVhQRUNUX0NBTEwoKnZweCwgaW1nX3dyYXAoXywgXywgXywgXywgXywgXykpCisgICAg
ICAuV2lsbE9uY2UoSW52b2tlKFtdKHZweF9pbWFnZV90KiBpbWcsIHZweF9pbWdfZm10X3QgZm10
LCB1bnNpZ25lZCBpbnQgZF93LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgZF9oLCB1bnNpZ25lZCBpbnQgc3RyaWRlX2FsaWduLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyKiBpbWdfZGF0YSkgeworICAgICAgICBpbWctPmZtdCA9IGZtdDsK
KyAgICAgICAgaW1nLT5kX3cgPSBkX3c7CisgICAgICAgIGltZy0+ZF9oID0gZF9oOworICAgICAg
ICBpbWctPmltZ19kYXRhID0gaW1nX2RhdGE7CisgICAgICAgIHJldHVybiBpbWc7CisgICAgICB9
KSk7CisgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCisgICAgICAgICAgICBlbmNv
ZGVyLkluaXRFbmNvZGUoJmNvZGVjX3NldHRpbmdzXywgMSwgMTAwMCkpOworICBNb2NrRW5jb2Rl
ZEltYWdlQ2FsbGJhY2sgY2FsbGJhY2s7CisgIGVuY29kZXIuUmVnaXN0ZXJFbmNvZGVDb21wbGV0
ZUNhbGxiYWNrKCZjYWxsYmFjayk7CisKKyAgLy8gU2ltdWxhdGUgb3ZlcnNob290IGRyb3AsIHJl
LWVuY29kZTogZW5jb2RlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHR3aWNlCisgIC8vIHdpdGgg
dGhlIHNhbWUgcGFyYW1ldGVycy4gY29kZWNfZ2V0X2N4X2RhdGEoKSB3aWxsIGJ5IGRlZmF1bHQg
cmV0dXJuIG5vCisgIC8vIGltYWdlIGRhdGEgYW5kIGJlIGludGVycHJldGVkIGFzIGRyb3AuCisg
IEVYUEVDVF9DQUxMKCp2cHgsIGNvZGVjX2VuY29kZShfLCBfLCAvKiBwdHMgPSAqLyAwLCBfLCBf
LCBfKSkKKyAgICAgIC5UaW1lcygyKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybih2cHhf
Y29kZWNfZXJyX3Q6OlZQWF9DT0RFQ19PSykpOworCisgIGF1dG8gZGVsdGFfZnJhbWUgPSBzdGQ6
OnZlY3RvcjxGcmFtZVR5cGU+e2tWaWRlb0ZyYW1lRGVsdGF9OworICBlbmNvZGVyLkVuY29kZSgq
TmV4dElucHV0RnJhbWUoKSwgbnVsbHB0ciwgJmRlbHRhX2ZyYW1lKTsKK30KKwogfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC92cDhfdGVtcG9yYWxf
bGF5ZXJzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTU4NDQxNGE5MTEzNzBkNzQ5Njg2YjQzMGNhMWU1
MDk4ZWZjZDZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvdnA4X3RlbXBvcmFsX2xheWVycy5jYworKysgL2Rldi9udWxsCkBA
IC0xLDQyICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCi0KLSNp
bmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmgiCi0jaW5jbHVkZSAibW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnMuaCIKLSNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgotCi1uYW1lc3BhY2Ugd2VicnRj
IHsKLQotYm9vbCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc6Om9wZXJhdG9yPT0oY29uc3Qg
RnJhbWVDb25maWcmIG8pIGNvbnN0IHsKLSAgcmV0dXJuIGRyb3BfZnJhbWUgPT0gby5kcm9wX2Zy
YW1lICYmCi0gICAgICAgICBsYXN0X2J1ZmZlcl9mbGFncyA9PSBvLmxhc3RfYnVmZmVyX2ZsYWdz
ICYmCi0gICAgICAgICBnb2xkZW5fYnVmZmVyX2ZsYWdzID09IG8uZ29sZGVuX2J1ZmZlcl9mbGFn
cyAmJgotICAgICAgICAgYXJmX2J1ZmZlcl9mbGFncyA9PSBvLmFyZl9idWZmZXJfZmxhZ3MgJiYg
bGF5ZXJfc3luYyA9PSBvLmxheWVyX3N5bmMgJiYKLSAgICAgICAgIGZyZWV6ZV9lbnRyb3B5ID09
IG8uZnJlZXplX2VudHJvcHkgJiYKLSAgICAgICAgIGVuY29kZXJfbGF5ZXJfaWQgPT0gby5lbmNv
ZGVyX2xheWVyX2lkICYmCi0gICAgICAgICBwYWNrZXRpemVyX3RlbXBvcmFsX2lkeCA9PSBvLnBh
Y2tldGl6ZXJfdGVtcG9yYWxfaWR4OwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8VGVtcG9yYWxMYXll
cnM+IFRlbXBvcmFsTGF5ZXJzOjpDcmVhdGVUZW1wb3JhbExheWVycygKLSAgICBUZW1wb3JhbExh
eWVyc1R5cGUgdHlwZSwKLSAgICBpbnQgbnVtX3RlbXBvcmFsX2xheWVycykgewotICBzd2l0Y2gg
KHR5cGUpIHsKLSAgICBjYXNlIFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybjoKLSAg
ICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxEZWZhdWx0VGVtcG9yYWxMYXllcnM+KG51bV90
ZW1wb3JhbF9sYXllcnMpOwotICAgIGNhc2UgVGVtcG9yYWxMYXllcnNUeXBlOjprQml0cmF0ZUR5
bmFtaWM6Ci0gICAgICAvLyBDb25mZXJlbmNlIG1vZGUgdGVtcG9yYWwgbGF5ZXJpbmcgZm9yIHNj
cmVlbiBjb250ZW50IGluIGJhc2Ugc3RyZWFtLgotICAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5p
cXVlPFNjcmVlbnNoYXJlTGF5ZXJzPihudW1fdGVtcG9yYWxfbGF5ZXJzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVD
bG9jaygpKTsKLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA5L3N2Y19jb25maWcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19jb25m
aWcuY2MKaW5kZXggNjgwNzY5ODI0NmU4ZmYzMzU1ZTlhYzJhYzA0NTJmYjkxYWVhNmFiMC4uM2U5
MjI4MDE0ODM5MjhjYzEzZWEzMWM3ZGVhMTNhNTRiZGVlZjNiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOS9zdmNfY29uZmlnLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX2NvbmZp
Zy5jYwpAQCAtMjIsOSArMjIsOSBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CiBj
b25zdCBzaXplX3Qga01pblZwOVN2Y0JpdHJhdGVLYnBzID0gMzA7CiAKLWNvbnN0IHNpemVfdCBr
TWF4TnVtTGF5ZXJzRm9yU2NyZWVuU2hhcmluZyA9IDI7Ci1jb25zdCBmbG9hdCBrTWF4U2NyZWVu
U2hhcmluZ0xheWVyRnJhbWVyYXRlRnBzW10gPSB7NS4wLCA1LjB9OwotY29uc3Qgc2l6ZV90IGtN
YXhTY3JlZW5TaGFyaW5nTGF5ZXJCaXRyYXRlS2Jwc1tdID0gezIwMCwgNTAwfTsKK2NvbnN0IHNp
emVfdCBrTWF4TnVtTGF5ZXJzRm9yU2NyZWVuU2hhcmluZyA9IDM7Citjb25zdCBmbG9hdCBrTWF4
U2NyZWVuU2hhcmluZ0xheWVyRnJhbWVyYXRlRnBzW10gPSB7NS4wLCA1LjAsIDMwLjB9OworY29u
c3Qgc2l6ZV90IGtNYXhTY3JlZW5TaGFyaW5nTGF5ZXJCaXRyYXRlS2Jwc1tdID0gezIwMCwgNTAw
LCAxMjUwfTsKIH0gIC8vIG5hbWVzcGFjZQogCiBzdGQ6OnZlY3RvcjxTcGF0aWFsTGF5ZXI+IENv
bmZpZ3VyZVN2Y1NjcmVlblNoYXJpbmcoc2l6ZV90IGlucHV0X3dpZHRoLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOS9zdmNfY29uZmlnX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Zw
OS9zdmNfY29uZmlnX3VuaXR0ZXN0LmNjCmluZGV4IDI1N2M1ZGYyZjAzN2JhMGY1MDJkY2Y1YTRm
N2VmMGMyZTc4MWRjNWUuLmI5OTc3Njc0NjU2NjFlOGIxODQ0YjQ1NzUwZmQxNzZlYzhkN2UxMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX2NvbmZpZ191bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA5L3N2Y19jb25maWdfdW5pdHRlc3QuY2MKQEAgLTQ5LDEyICs0OSwx
MyBAQCBURVNUKFN2Y0NvbmZpZywgU2NyZWVuU2hhcmluZykgewogICBzdGQ6OnZlY3RvcjxTcGF0
aWFsTGF5ZXI+IHNwYXRpYWxfbGF5ZXJzID0KICAgICAgIEdldFN2Y0NvbmZpZygxOTIwLCAxMDgw
LCAzMCwgMywgMywgdHJ1ZSk7CiAKLSAgRVhQRUNUX0VRKHNwYXRpYWxfbGF5ZXJzLnNpemUoKSwg
MlVMKTsKKyAgRVhQRUNUX0VRKHNwYXRpYWxfbGF5ZXJzLnNpemUoKSwgM1VMKTsKIAotICBmb3Ig
KGNvbnN0IFNwYXRpYWxMYXllciYgbGF5ZXIgOiBzcGF0aWFsX2xheWVycykgeworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgIGNvbnN0IFNwYXRpYWxMYXllciYgbGF5ZXIg
PSBzcGF0aWFsX2xheWVyc1tpXTsKICAgICBFWFBFQ1RfRVEobGF5ZXIud2lkdGgsIDE5MjApOwog
ICAgIEVYUEVDVF9FUShsYXllci5oZWlnaHQsIDEwODApOwotICAgIEVYUEVDVF9FUShsYXllci5t
YXhGcmFtZXJhdGUsIDUpOworICAgIEVYUEVDVF9FUShsYXllci5tYXhGcmFtZXJhdGUsIChpIDwg
MikgPyA1IDogMzApOwogICAgIEVYUEVDVF9FUShsYXllci5udW1iZXJPZlRlbXBvcmFsTGF5ZXJz
LCAxKTsKICAgICBFWFBFQ1RfTEUobGF5ZXIubWluQml0cmF0ZSwgbGF5ZXIubWF4Qml0cmF0ZSk7
CiAgICAgRVhQRUNUX0xFKGxheWVyLm1pbkJpdHJhdGUsIGxheWVyLnRhcmdldEJpdHJhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3JfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19yYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYwppbmRl
eCAwNDhiZjdkNjk0NzExMTFlNzc0NjFhYTFjYjg1OTI4MTc0NTJjYjY5Li5lZWMyYjlkNDE5OWVh
OWY3N2UzYzk5YjZjYjJkNDc4NDliZDlmNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5
L3N2Y19yYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2
Y19yYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYwpAQCAtMTQ5LDcgKzE0OSw3IEBAIFRFU1QoU3Zj
UmF0ZUFsbG9jYXRvclRlc3QsIE1pbkJpdHJhdGVUb0dldFF1YWxpdHlMYXllcikgewogCiAgIGNv
bnN0IFNwYXRpYWxMYXllciogbGF5ZXJzID0gY29kZWMuc3BhdGlhbExheWVyczsKIAotICBFWFBF
Q1RfTEUoY29kZWMuVlA5KCktPm51bWJlck9mU3BhdGlhbExheWVycywgMlUpOworICBFWFBFQ1Rf
TEUoY29kZWMuVlA5KCktPm51bWJlck9mU3BhdGlhbExheWVycywgM1UpOwogCiAgIFZpZGVvQml0
cmF0ZUFsbG9jYXRpb24gYWxsb2NhdGlvbiA9CiAgICAgICBhbGxvY2F0b3IuR2V0QWxsb2NhdGlv
bihsYXllcnNbMF0ubWluQml0cmF0ZSAqIDEwMDAsIDMwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy92cDkvdGVzdC92cDlfaW1wbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdGVz
dC92cDlfaW1wbF91bml0dGVzdC5jYwppbmRleCA0NzMzYWQ5NzlhNDk5NWExYWNiM2I2ZmQwMGJi
OWNjZGZhNGEyMmNhLi44NWZhMjc4YTBkMzc2ZWFmNTUxMmVjMDc1OGI4Y2I3ZGQ3MjFlYWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3Rlc3QvdnA5X2ltcGxfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOS90ZXN0L3ZwOV9pbXBsX3VuaXR0ZXN0LmNjCkBAIC0xMDQsNiAr
MTA0LDMzIEBAIGNsYXNzIFRlc3RWcDlJbXBsIDogcHVibGljIFZpZGVvQ29kZWNVbml0VGVzdCB7
CiAgICAgICBjb2RlY19zZXR0aW5nc18uc3BhdGlhbExheWVyc1tpXSA9IGxheWVyc1tpXTsKICAg
ICB9CiAgIH0KKworICBIZHJNZXRhZGF0YSBDcmVhdGVUZXN0SGRyTWV0YWRhdGEoKSBjb25zdCB7
CisgICAgLy8gUmFuZG9tIGJ1dCByZWFzb25hYmxlIEhEUiBtZXRhZGF0YS4KKyAgICBIZHJNZXRh
ZGF0YSBoZHJfbWV0YWRhdGE7CisgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5s
dW1pbmFuY2VfbWF4ID0gMjAwMC4wOworICAgIGhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRh
dGEubHVtaW5hbmNlX21pbiA9IDIuMDAwMTsKKyAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21l
dGFkYXRhLnByaW1hcnlfci54ID0gMC4zMDsKKyAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21l
dGFkYXRhLnByaW1hcnlfci55ID0gMC40MDsKKyAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21l
dGFkYXRhLnByaW1hcnlfZy54ID0gMC4zMjsKKyAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21l
dGFkYXRhLnByaW1hcnlfZy55ID0gMC40NjsKKyAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21l
dGFkYXRhLnByaW1hcnlfYi54ID0gMC4zNDsKKyAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21l
dGFkYXRhLnByaW1hcnlfYi55ID0gMC40OTsKKyAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21l
dGFkYXRhLndoaXRlX3BvaW50LnggPSAwLjQxOworICAgIGhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdf
bWV0YWRhdGEud2hpdGVfcG9pbnQueSA9IDAuNDg7CisgICAgaGRyX21ldGFkYXRhLm1heF9jb250
ZW50X2xpZ2h0X2xldmVsID0gMjM0NTsKKyAgICBoZHJfbWV0YWRhdGEubWF4X2ZyYW1lX2F2ZXJh
Z2VfbGlnaHRfbGV2ZWwgPSAxNzg5OworICAgIHJldHVybiBoZHJfbWV0YWRhdGE7CisgIH0KKwor
ICBDb2xvclNwYWNlIENyZWF0ZVRlc3RDb2xvclNwYWNlKCkgY29uc3QgeworICAgIEhkck1ldGFk
YXRhIGhkcl9tZXRhZGF0YSA9IENyZWF0ZVRlc3RIZHJNZXRhZGF0YSgpOworICAgIENvbG9yU3Bh
Y2UgY29sb3Jfc3BhY2UoQ29sb3JTcGFjZTo6UHJpbWFyeUlEOjprQlQ3MDksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjprR0FNTUEyMiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbG9yU3BhY2U6Ok1hdHJpeElEOjprU01QVEUyMDg1LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZTo6UmFuZ2VJRDo6a0Z1bGwsICZo
ZHJfbWV0YWRhdGEpOworICAgIHJldHVybiBjb2xvcl9zcGFjZTsKKyAgfQogfTsKIAogLy8gRGlz
YWJsZWQgb24gaW9zIGFzIGZsYWtlLCBzZWUgaHR0cHM6Ly9jcmJ1Zy5jb20vd2VicnRjLzcwNTcK
QEAgLTEyOCw3ICsxNTUsNyBAQCBURVNUX0YoVGVzdFZwOUltcGwsIEVuY29kZURlY29kZSkgewog
ICBBU1NFUlRfVFJVRShkZWNvZGVkX2ZyYW1lKTsKICAgRVhQRUNUX0dUKEk0MjBQU05SKGlucHV0
X2ZyYW1lLCBkZWNvZGVkX2ZyYW1lLmdldCgpKSwgMzYpOwogCi0gIGNvbnN0IENvbG9yU3BhY2Ug
Y29sb3Jfc3BhY2UgPSBkZWNvZGVkX2ZyYW1lLT5jb2xvcl9zcGFjZSgpLnZhbHVlKCk7CisgIGNv
bnN0IENvbG9yU3BhY2UgY29sb3Jfc3BhY2UgPSAqZGVjb2RlZF9mcmFtZS0+Y29sb3Jfc3BhY2Uo
KTsKICAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlByaW1hcnlJRDo6a0ludmFsaWQsIGNvbG9yX3Nw
YWNlLnByaW1hcmllcygpKTsKICAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OmtJ
bnZhbGlkLCBjb2xvcl9zcGFjZS50cmFuc2ZlcigpKTsKICAgRVhQRUNUX0VRKENvbG9yU3BhY2U6
Ok1hdHJpeElEOjprSW52YWxpZCwgY29sb3Jfc3BhY2UubWF0cml4KCkpOwpAQCAtMTU3LDYgKzE4
NCw2MCBAQCBURVNUX0YoVGVzdFZwOUltcGwsIEVuY29kZWRSb3RhdGlvbkVxdWFsc0lucHV0Um90
YXRpb24pIHsKICAgRVhQRUNUX0VRKGtWaWRlb1JvdGF0aW9uXzkwLCBlbmNvZGVkX2ZyYW1lLnJv
dGF0aW9uXyk7CiB9CiAKK1RFU1RfRihUZXN0VnA5SW1wbCwgRW5jb2RlZENvbG9yU3BhY2VFcXVh
bHNJbnB1dENvbG9yU3BhY2UpIHsKKyAgLy8gVmlkZW8gZnJhbWUgd2l0aG91dCBleHBsaWNpdCBj
b2xvciBzcGFjZSBpbmZvcm1hdGlvbi4KKyAgVmlkZW9GcmFtZSogaW5wdXRfZnJhbWUgPSBOZXh0
SW5wdXRGcmFtZSgpOworICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLAorICAgICAg
ICAgICAgZW5jb2Rlcl8tPkVuY29kZSgqaW5wdXRfZnJhbWUsIG51bGxwdHIsIG51bGxwdHIpKTsK
KyAgRW5jb2RlZEltYWdlIGVuY29kZWRfZnJhbWU7CisgIENvZGVjU3BlY2lmaWNJbmZvIGNvZGVj
X3NwZWNpZmljX2luZm87CisgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWUoJmVuY29k
ZWRfZnJhbWUsICZjb2RlY19zcGVjaWZpY19pbmZvKSk7CisgIEVYUEVDVF9GQUxTRShlbmNvZGVk
X2ZyYW1lLkNvbG9yU3BhY2UoKSk7CisKKyAgLy8gVmlkZW8gZnJhbWUgd2l0aCBleHBsaWNpdCBj
b2xvciBzcGFjZSBpbmZvcm1hdGlvbi4KKyAgQ29sb3JTcGFjZSBjb2xvcl9zcGFjZSA9IENyZWF0
ZVRlc3RDb2xvclNwYWNlKCk7CisgIFZpZGVvRnJhbWUgaW5wdXRfZnJhbWVfd19oZHIgPQorICAg
ICAgVmlkZW9GcmFtZTo6QnVpbGRlcigpCisgICAgICAgICAgLnNldF92aWRlb19mcmFtZV9idWZm
ZXIoaW5wdXRfZnJhbWUtPnZpZGVvX2ZyYW1lX2J1ZmZlcigpKQorICAgICAgICAgIC5zZXRfY29s
b3Jfc3BhY2UoJmNvbG9yX3NwYWNlKQorICAgICAgICAgIC5idWlsZCgpOworICBFWFBFQ1RfRVEo
V0VCUlRDX1ZJREVPX0NPREVDX09LLAorICAgICAgICAgICAgZW5jb2Rlcl8tPkVuY29kZShpbnB1
dF9mcmFtZV93X2hkciwgbnVsbHB0ciwgbnVsbHB0cikpOworICBBU1NFUlRfVFJVRShXYWl0Rm9y
RW5jb2RlZEZyYW1lKCZlbmNvZGVkX2ZyYW1lLCAmY29kZWNfc3BlY2lmaWNfaW5mbykpOworICBB
U1NFUlRfVFJVRShlbmNvZGVkX2ZyYW1lLkNvbG9yU3BhY2UoKSk7CisgIEVYUEVDVF9FUSgqZW5j
b2RlZF9mcmFtZS5Db2xvclNwYWNlKCksIGNvbG9yX3NwYWNlKTsKK30KKworVEVTVF9GKFRlc3RW
cDlJbXBsLCBEZWNvZGVkSGRyTWV0YWRhdGFFcXVhbHNFbmNvZGVkSGRyTWV0YWRhdGEpIHsKKyAg
RVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAgICAgICAgICAgIGVuY29kZXJfLT5F
bmNvZGUoKk5leHRJbnB1dEZyYW1lKCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgRW5jb2RlZElt
YWdlIGVuY29kZWRfZnJhbWU7CisgIENvZGVjU3BlY2lmaWNJbmZvIGNvZGVjX3NwZWNpZmljX2lu
Zm87CisgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJhbWUoJmVuY29kZWRfZnJhbWUsICZj
b2RlY19zcGVjaWZpY19pbmZvKSk7CisKKyAgLy8gRW5jb2RlZCBmcmFtZSB3aXRob3V0IGV4cGxp
Y2l0IGNvbG9yIHNwYWNlIGluZm9ybWF0aW9uLgorICBFWFBFQ1RfRVEoV0VCUlRDX1ZJREVPX0NP
REVDX09LLAorICAgICAgICAgICAgZGVjb2Rlcl8tPkRlY29kZShlbmNvZGVkX2ZyYW1lLCBmYWxz
ZSwgbnVsbHB0ciwgMCkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9GcmFtZT4gZGVjb2RlZF9m
cmFtZTsKKyAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gZGVjb2RlZF9xcDsKKyAgQVNTRVJUX1RS
VUUoV2FpdEZvckRlY29kZWRGcmFtZSgmZGVjb2RlZF9mcmFtZSwgJmRlY29kZWRfcXApKTsKKyAg
QVNTRVJUX1RSVUUoZGVjb2RlZF9mcmFtZSk7CisgIC8vIENvbG9yIHNwYWNlIHByZXNlbnQgZnJv
bSBlbmNvZGVkIGJpdHN0cmVhbS4KKyAgQVNTRVJUX1RSVUUoZGVjb2RlZF9mcmFtZS0+Y29sb3Jf
c3BhY2UoKSk7CisgIC8vIE5vIEhEUiBtZXRhZGF0YSBwcmVzZW50LgorICBFWFBFQ1RfRkFMU0Uo
ZGVjb2RlZF9mcmFtZS0+Y29sb3Jfc3BhY2UoKS0+aGRyX21ldGFkYXRhKCkpOworCisgIC8vIEVu
Y29kZWQgZnJhbWUgd2l0aCBleHBsaWNpdCBjb2xvciBzcGFjZSBpbmZvcm1hdGlvbi4KKyAgQ29s
b3JTcGFjZSBjb2xvcl9zcGFjZSA9IENyZWF0ZVRlc3RDb2xvclNwYWNlKCk7CisgIGVuY29kZWRf
ZnJhbWUuU2V0Q29sb3JTcGFjZSgmY29sb3Jfc3BhY2UpOworICBFWFBFQ1RfRVEoV0VCUlRDX1ZJ
REVPX0NPREVDX09LLAorICAgICAgICAgICAgZGVjb2Rlcl8tPkRlY29kZShlbmNvZGVkX2ZyYW1l
LCBmYWxzZSwgbnVsbHB0ciwgMCkpOworICBBU1NFUlRfVFJVRShXYWl0Rm9yRGVjb2RlZEZyYW1l
KCZkZWNvZGVkX2ZyYW1lLCAmZGVjb2RlZF9xcCkpOworICBBU1NFUlRfVFJVRShkZWNvZGVkX2Zy
YW1lKTsKKyAgQVNTRVJUX1RSVUUoZGVjb2RlZF9mcmFtZS0+Y29sb3Jfc3BhY2UoKSk7CisgIEVY
UEVDVF9FUShjb2xvcl9zcGFjZSwgKmRlY29kZWRfZnJhbWUtPmNvbG9yX3NwYWNlKCkpOworfQor
CiBURVNUX0YoVGVzdFZwOUltcGwsIERlY29kZWRRcEVxdWFsc0VuY29kZWRRcCkgewogICBFWFBF
Q1RfRVEoV0VCUlRDX1ZJREVPX0NPREVDX09LLAogICAgICAgICAgICAgZW5jb2Rlcl8tPkVuY29k
ZSgqTmV4dElucHV0RnJhbWUoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwpAQCAtMzkzLDcgKzQ3NCw3
IEBAIFRFU1RfRihUZXN0VnA5SW1wbCwgSW50ZXJMYXllclByZWQpIHsKICAgQ29uZmlndXJlU3Zj
KG51bV9zcGF0aWFsX2xheWVycyk7CiAgIGNvZGVjX3NldHRpbmdzXy5WUDkoKS0+ZnJhbWVEcm9w
cGluZ09uID0gZmFsc2U7CiAKLSAgQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxvY2F0aW9u
OworICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbjsKICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1fc3BhdGlhbF9sYXllcnM7ICsraSkgewogICAgIGJpdHJhdGVf
YWxsb2NhdGlvbi5TZXRCaXRyYXRlKAogICAgICAgICBpLCAwLCBjb2RlY19zZXR0aW5nc18uc3Bh
dGlhbExheWVyc1tpXS50YXJnZXRCaXRyYXRlICogMTAwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdnA5L3ZwOS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIy
YTA4ODgxMjA4YTEyOWViNTJlMzVhNjBkNjlmOTZiNDMyZjMyYmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA5L3ZwOS5jYwpAQCAtMCwwICsxLDc1IEBACisvKgorICogIENvcHly
aWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvaW5j
bHVkZS92cDkuaCIKKworI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUg
ImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKKyNpbmNsdWRlICJ2cHgvdnA4Y3guaCIKKyNpbmNsdWRlICJ2cHgvdnA4ZHguaCIK
KyNpbmNsdWRlICJ2cHgvdnB4X2NvZGVjLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitzdGQ6
OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gU3VwcG9ydGVkVlA5Q29kZWNzKCkgeworI2lmZGVmIFJU
Q19FTkFCTEVfVlA5CisgIC8vIFByb2ZpbGUgMiBtaWdodCBub3QgYmUgYXZhaWxhYmxlIG9uIHNv
bWUgcGxhdGZvcm1zIHVudGlsCisgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC93ZWJt
L2lzc3Vlcy9kZXRhaWw/aWQ9MTU0NCBpcyBzb2x2ZWQuCisgIHN0YXRpYyBib29sIHZweF9zdXBw
b3J0c19oaWdoX2JpdF9kZXB0aCA9CisgICAgICAodnB4X2NvZGVjX2dldF9jYXBzKHZweF9jb2Rl
Y192cDlfY3goKSkgJiBWUFhfQ09ERUNfQ0FQX0hJR0hCSVRERVBUSCkgIT0KKyAgICAgICAgICAw
ICYmCisgICAgICAodnB4X2NvZGVjX2dldF9jYXBzKHZweF9jb2RlY192cDlfZHgoKSkgJiBWUFhf
Q09ERUNfQ0FQX0hJR0hCSVRERVBUSCkgIT0KKyAgICAgICAgICAwOworCisgIHN0ZDo6dmVjdG9y
PFNkcFZpZGVvRm9ybWF0PiBzdXBwb3J0ZWRfZm9ybWF0c3tTZHBWaWRlb0Zvcm1hdCgKKyAgICAg
IGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUsCisgICAgICB7e2tWUDlGbXRwUHJvZmlsZUlkLCBWUDlQ
cm9maWxlVG9TdHJpbmcoVlA5UHJvZmlsZTo6a1Byb2ZpbGUwKX19KX07CisgIGlmICh2cHhfc3Vw
cG9ydHNfaGlnaF9iaXRfZGVwdGgpIHsKKyAgICBzdXBwb3J0ZWRfZm9ybWF0cy5wdXNoX2JhY2so
U2RwVmlkZW9Gb3JtYXQoCisgICAgICAgIGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUsCisgICAgICAg
IHt7a1ZQOUZtdHBQcm9maWxlSWQsIFZQOVByb2ZpbGVUb1N0cmluZyhWUDlQcm9maWxlOjprUHJv
ZmlsZTIpfX0pKTsKKyAgfQorICByZXR1cm4gc3VwcG9ydGVkX2Zvcm1hdHM7CisjZWxzZQorICBy
ZXR1cm4gc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+KCk7CisjZW5kaWYKK30KKworc3RkOjp1
bmlxdWVfcHRyPFZQOUVuY29kZXI+IFZQOUVuY29kZXI6OkNyZWF0ZSgpIHsKKyNpZmRlZiBSVENf
RU5BQkxFX1ZQOQorICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8VlA5RW5jb2RlckltcGw+KGNy
aWNrZXQ6OlZpZGVvQ29kZWMoKSk7CisjZWxzZQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1
cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCitzdGQ6OnVuaXF1ZV9wdHI8VlA5RW5jb2Rlcj4gVlA5
RW5jb2Rlcjo6Q3JlYXRlKAorICAgIGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29kZWMmIGNvZGVjKSB7
CisjaWZkZWYgUlRDX0VOQUJMRV9WUDkKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFZQOUVu
Y29kZXJJbXBsPihjb2RlYyk7CisjZWxzZQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4g
bnVsbHB0cjsKKyNlbmRpZgorfQorCitzdGQ6OnVuaXF1ZV9wdHI8VlA5RGVjb2Rlcj4gVlA5RGVj
b2Rlcjo6Q3JlYXRlKCkgeworI2lmZGVmIFJUQ19FTkFCTEVfVlA5CisgIHJldHVybiBhYnNsOjpt
YWtlX3VuaXF1ZTxWUDlEZWNvZGVySW1wbD4oKTsKKyNlbHNlCisgIFJUQ19OT1RSRUFDSEVEKCk7
CisgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVmZmVyX3Bvb2wuY2MKaW5kZXggNjkxMDFjYjUw
NmYzNTA0MzE5OTAwODFmM2NiZjY2ZjUwMDg1ZWJmNy4uZWNiZGE0Y2IzYmQwZjI0ZDM2OTY5NzQ2
ZDhkNTg5NjgxNTRhMGI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfZnJhbWVf
YnVmZmVyX3Bvb2wuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVmZmVyX3Bv
b2wuY2MKQEAgLTksNiArOSw4IEBACiAgKgogICovCiAKKyNpZmRlZiBSVENfRU5BQkxFX1ZQOQor
CiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVm
ZmVyX3Bvb2wuaCIKIAogI2luY2x1ZGUgInZweC92cHhfY29kZWMuaCIKQEAgLTEzOCwzICsxNDAs
NSBAQCBpbnQzMl90IFZwOUZyYW1lQnVmZmVyUG9vbDo6VnB4UmVsZWFzZUZyYW1lQnVmZmVyKHZv
aWQqIHVzZXJfcHJpdiwKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8v
IFJUQ19FTkFCTEVfVlA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9mcmFtZV9i
dWZmZXJfcG9vbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVmZmVyX3Bvb2wuaApp
bmRleCA5YjAzNWViOTRhZGU3MzdkZWQzYjM1YmI2N2EyN2RjZjk4ODkzZjZjLi4wMmVkZTI0MzI5
NTVmZGVhNTcyYjFjNTllY2NhOGY1MTNmOWMzYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA5L3ZwOV9mcmFtZV9idWZmZXJfcG9vbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2Zy
YW1lX2J1ZmZlcl9wb29sLmgKQEAgLTEyLDYgKzEyLDggQEAKICNpZm5kZWYgTU9EVUxFU19WSURF
T19DT0RJTkdfQ09ERUNTX1ZQOV9WUDlfRlJBTUVfQlVGRkVSX1BPT0xfSF8KICNkZWZpbmUgTU9E
VUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOV9WUDlfRlJBTUVfQlVGRkVSX1BPT0xfSF8KIAor
I2lmZGVmIFJUQ19FTkFCTEVfVlA5CisKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJy
dGNfYmFzZS9idWZmZXIuaCIKQEAgLTEyMCw0ICsxMjIsNiBAQCBjbGFzcyBWcDlGcmFtZUJ1ZmZl
clBvb2wgewogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKKyNlbmRpZiAgLy8gUlRDX0VOQUJM
RV9WUDkKKwogI2VuZGlmICAvLyBNT0RVTEVTX1ZJREVPX0NPRElOR19DT0RFQ1NfVlA5X1ZQOV9G
UkFNRV9CVUZGRVJfUE9PTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfaW1w
bC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwuY2MKaW5kZXggNmI5ODJhOGExMzIzODlk
MmFlYTUxZGZlYWFjOTJiZWRmOWMyYWY3Zi4uNjE1NDJjNTA4MjExNDk2Mjk3YjM2Y2VjZGU0Nzk0
YjQ2Mjg0ZTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfaW1wbC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9pbXBsLmNjCkBAIC05LDYgKzksOCBAQAogICoKICAqLwog
CisjaWZkZWYgUlRDX0VOQUJMRV9WUDkKKwogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDkvdnA5X2ltcGwuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTM3LDEx
ICszOSwxNiBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIG5hbWVzcGFjZSB7Citjb25zdCBjaGFy
IGtWcDlUcnVzdGVkUmF0ZUNvbnRyb2xsZXJGaWVsZFRyaWFsW10gPQorICAgICJXZWJSVEMtTGli
dnB4VnA5VHJ1c3RlZFJhdGVDb250cm9sbGVyIjsKKwogLy8gTWFwcyBmcm9tIGdvZl9pZHggdG8g
ZW5jb2RlciBpbnRlcm5hbCByZWZlcmVuY2UgZnJhbWUgYnVmZmVyIGluZGV4LiBUaGVzZQogLy8g
bWFwcyB3b3JrIGZvciAxLDIgYW5kIDMgdGVtcG9yYWwgbGF5ZXJzIHdpdGggR09GIGxlbmd0aCBv
ZiAxLDIgYW5kIDQgZnJhbWVzLgogdWludDhfdCBrUmVmQnVmSWR4WzRdID0gezAsIDAsIDAsIDF9
OwogdWludDhfdCBrVXBkQnVmSWR4WzRdID0gezAsIDAsIDEsIDB9OwogCitpbnQga01heE51bVRp
bGVzNGtWaWRlbyA9IDg7CisKIC8vIE9ubHkgcG9zaXRpdmUgc3BlZWRzLCByYW5nZSBmb3IgcmVh
bC10aW1lIGNvZGluZyBjdXJyZW50bHkgaXM6IDUgLSA4LgogLy8gTG93ZXIgbWVhbnMgc2xvd2Vy
L2JldHRlciBxdWFsaXR5LCBoaWdoZXIgbWVhbnMgZmFzdGVzdC9sb3dlciBxdWFsaXR5LgogaW50
IEdldENwdVNwZWVkKGludCB3aWR0aCwgaW50IGhlaWdodCkgewpAQCAtMTE5LDIzICsxMjYsNiBA
QCBDb2xvclNwYWNlIEV4dHJhY3RWUDlDb2xvclNwYWNlKHZweF9jb2xvcl9zcGFjZV90IHNwYWNl
X3QsCiB9CiB9ICAvLyBuYW1lc3BhY2UKIAotc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IFN1
cHBvcnRlZFZQOUNvZGVjcygpIHsKLSAgLy8gVE9ETyhlbWlyY2FuKTogQWRkIFByb2ZpbGUgMiBz
dXBwb3J0IGFmdGVyIGZpeGluZyBicm93c2VyX3Rlc3RzLgotICBzdGQ6OnZlY3RvcjxTZHBWaWRl
b0Zvcm1hdD4gc3VwcG9ydGVkX2Zvcm1hdHN7U2RwVmlkZW9Gb3JtYXQoCi0gICAgICBjcmlja2V0
OjprVnA5Q29kZWNOYW1lLAotICAgICAge3trVlA5Rm10cFByb2ZpbGVJZCwgVlA5UHJvZmlsZVRv
U3RyaW5nKFZQOVByb2ZpbGU6OmtQcm9maWxlMCl9fSl9OwotICByZXR1cm4gc3VwcG9ydGVkX2Zv
cm1hdHM7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxWUDlFbmNvZGVyPiBWUDlFbmNvZGVyOjpDcmVh
dGUoKSB7Ci0gIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxWUDlFbmNvZGVySW1wbD4oY3JpY2tl
dDo6VmlkZW9Db2RlYygpKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFZQOUVuY29kZXI+IFZQOUVu
Y29kZXI6OkNyZWF0ZSgKLSAgICBjb25zdCBjcmlja2V0OjpWaWRlb0NvZGVjJiBjb2RlYykgewot
ICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8VlA5RW5jb2RlckltcGw+KGNvZGVjKTsKLX0KLQog
dm9pZCBWUDlFbmNvZGVySW1wbDo6RW5jb2Rlck91dHB1dENvZGVkUGFja2V0Q2FsbGJhY2sodnB4
X2NvZGVjX2N4X3BrdCogcGt0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCogdXNlcl9kYXRhKSB7CiAgIFZQOUVuY29kZXJJbXBsKiBl
bmMgPSBzdGF0aWNfY2FzdDxWUDlFbmNvZGVySW1wbCo+KHVzZXJfZGF0YSk7CkBAIC0xNjAsMTIg
KzE1MCwxNiBAQCBWUDlFbmNvZGVySW1wbDo6VlA5RW5jb2RlckltcGwoY29uc3QgY3JpY2tldDo6
VmlkZW9Db2RlYyYgY29kZWMpCiAgICAgICBudW1fdGVtcG9yYWxfbGF5ZXJzXygwKSwKICAgICAg
IG51bV9zcGF0aWFsX2xheWVyc18oMCksCiAgICAgICBudW1fYWN0aXZlX3NwYXRpYWxfbGF5ZXJz
XygwKSwKLSAgICAgIGxheWVyX2RlYWN0aXZhdGlvbl9yZXF1aXJlc19rZXlfZnJhbWVfKHdlYnJ0
Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgKLSAgICAgICAgICAiV2ViUlRDLVZwOUlzc3VlS2V5
RnJhbWVPbkxheWVyRGVhY3RpdmF0aW9uIikpLAorICAgICAgbGF5ZXJfZGVhY3RpdmF0aW9uX3Jl
cXVpcmVzX2tleV9mcmFtZV8oCisgICAgICAgICAgZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2Vi
UlRDLVZwOUlzc3VlS2V5RnJhbWVPbkxheWVyRGVhY3RpdmF0aW9uIikpLAogICAgICAgaXNfc3Zj
XyhmYWxzZSksCiAgICAgICBpbnRlcl9sYXllcl9wcmVkXyhJbnRlckxheWVyUHJlZE1vZGU6OmtP
biksCiAgICAgICBleHRlcm5hbF9yZWZfY29udHJvbF8oCi0gICAgICAgICAgd2VicnRjOjpmaWVs
ZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtVnA5RXh0ZXJuYWxSZWZDdHJsIikpLAorICAgICAg
ICAgIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1WcDlFeHRlcm5hbFJlZkN0cmwiKSks
CisgICAgICB0cnVzdGVkX3JhdGVfY29udHJvbGxlcl8oCisgICAgICAgICAgZmllbGRfdHJpYWw6
OklzRW5hYmxlZChrVnA5VHJ1c3RlZFJhdGVDb250cm9sbGVyRmllbGRUcmlhbCkpLAorICAgICAg
ZnVsbF9zdXBlcmZyYW1lX2Ryb3BfKHRydWUpLAorICAgICAgZmlyc3RfZnJhbWVfaW5fcGljdHVy
ZV8odHJ1ZSksCiAgICAgICBpc19mbGV4aWJsZV9tb2RlXyhmYWxzZSkgewogICBtZW1zZXQoJmNv
ZGVjXywgMCwgc2l6ZW9mKGNvZGVjXykpOwogICBtZW1zZXQoJnN2Y19wYXJhbXNfLCAwLCBzaXpl
b2YodnB4X3N2Y19leHRyYV9jZmdfdCkpOwpAQCAtNjI3LDcgKzYyMSw4IEBAIGludCBWUDlFbmNv
ZGVySW1wbDo6SW5pdEFuZFNldENvbnRyb2xTZXR0aW5ncyhjb25zdCBWaWRlb0NvZGVjKiBpbnN0
KSB7CiAgICAgLy8gcXVhbGl0eSBmbGlja2VyaW5nIGFuZCBpcyBub3QgY29tcGF0aWJsZSB3aXRo
IFJUUCBub24tZmxleGlibGUgbW9kZS4KICAgICB2cHhfc3ZjX2ZyYW1lX2Ryb3BfdCBzdmNfZHJv
cF9mcmFtZTsKICAgICBtZW1zZXQoJnN2Y19kcm9wX2ZyYW1lLCAwLCBzaXplb2Yoc3ZjX2Ryb3Bf
ZnJhbWUpKTsKLSAgICBzdmNfZHJvcF9mcmFtZS5mcmFtZWRyb3BfbW9kZSA9IEZVTExfU1VQRVJG
UkFNRV9EUk9QOworICAgIHN2Y19kcm9wX2ZyYW1lLmZyYW1lZHJvcF9tb2RlID0KKyAgICAgICAg
ZnVsbF9zdXBlcmZyYW1lX2Ryb3BfID8gRlVMTF9TVVBFUkZSQU1FX0RST1AgOiBDT05TVFJBSU5F
RF9MQVlFUl9EUk9QOwogICAgIHN2Y19kcm9wX2ZyYW1lLm1heF9jb25zZWNfZHJvcCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1fc3BhdGlhbF9sYXllcnNfOyArK2kpIHsKICAgICAgIHN2Y19kcm9wX2ZyYW1lLmZyYW1lZHJv
cF90aHJlc2hbaV0gPSBjb25maWdfLT5yY19kcm9wZnJhbWVfdGhyZXNoOwpAQCAtNzAxLDMwICs2
OTYsMzMgQEAgaW50IFZQOUVuY29kZXJJbXBsOjpFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYgaW5w
dXRfaW1hZ2UsCiAgICAgfQogICB9CiAKLSAgaWYgKFZpZGVvQ29kZWNNb2RlOjprU2NyZWVuc2hh
cmluZyA9PSBjb2RlY18ubW9kZSAmJiAhZm9yY2Vfa2V5X2ZyYW1lXykgewotICAgIC8vIFNraXAg
ZW5jb2Rpbmcgc3BhdGlhbCBsYXllciBmcmFtZXMgaWYgdGhlaXIgdGFyZ2V0IGZyYW1lIHJhdGUg
aXMgbG93ZXIKLSAgICAvLyB0aGFuIGFjdHVhbCBpbnB1dCBmcmFtZSByYXRlLgorICBzaXplX3Qg
Zmlyc3RfYWN0aXZlX3NwYXRpYWxfbGF5ZXJfaWQgPSAwOworICBpZiAoVmlkZW9Db2RlY01vZGU6
OmtTY3JlZW5zaGFyaW5nID09IGNvZGVjXy5tb2RlKSB7CiAgICAgdnB4X3N2Y19sYXllcl9pZF90
IGxheWVyX2lkID0gezB9OwotICAgIGNvbnN0IHNpemVfdCBnb2ZfaWR4ID0gKHBpY3Nfc2luY2Vf
a2V5XyArIDEpICUgZ29mXy5udW1fZnJhbWVzX2luX2dvZjsKLSAgICBsYXllcl9pZC50ZW1wb3Jh
bF9sYXllcl9pZCA9IGdvZl8udGVtcG9yYWxfaWR4W2dvZl9pZHhdOworICAgIGlmICghZm9yY2Vf
a2V5X2ZyYW1lXykgeworICAgICAgLy8gU2tpcCBlbmNvZGluZyBzcGF0aWFsIGxheWVyIGZyYW1l
cyBpZiB0aGVpciB0YXJnZXQgZnJhbWUgcmF0ZSBpcyBsb3dlcgorICAgICAgLy8gdGhhbiBhY3R1
YWwgaW5wdXQgZnJhbWUgcmF0ZS4KKyAgICAgIGNvbnN0IHNpemVfdCBnb2ZfaWR4ID0gKHBpY3Nf
c2luY2Vfa2V5XyArIDEpICUgZ29mXy5udW1fZnJhbWVzX2luX2dvZjsKKyAgICAgIGxheWVyX2lk
LnRlbXBvcmFsX2xheWVyX2lkID0gZ29mXy50ZW1wb3JhbF9pZHhbZ29mX2lkeF07CiAKLSAgICBj
b25zdCB1aW50MzJfdCBmcmFtZV90aW1lc3RhbXBfbXMgPQotICAgICAgICAxMDAwICogaW5wdXRf
aW1hZ2UudGltZXN0YW1wKCkgLyBrVmlkZW9QYXlsb2FkVHlwZUZyZXF1ZW5jeTsKKyAgICAgIGNv
bnN0IHVpbnQzMl90IGZyYW1lX3RpbWVzdGFtcF9tcyA9CisgICAgICAgICAgMTAwMCAqIGlucHV0
X2ltYWdlLnRpbWVzdGFtcCgpIC8ga1ZpZGVvUGF5bG9hZFR5cGVGcmVxdWVuY3k7CiAKLSAgICBm
b3IgKHVpbnQ4X3Qgc2xfaWR4ID0gMDsgc2xfaWR4IDwgbnVtX2FjdGl2ZV9zcGF0aWFsX2xheWVy
c187ICsrc2xfaWR4KSB7Ci0gICAgICBpZiAoZnJhbWVyYXRlX2NvbnRyb2xsZXJfW3NsX2lkeF0u
RHJvcEZyYW1lKGZyYW1lX3RpbWVzdGFtcF9tcykpIHsKLSAgICAgICAgKytsYXllcl9pZC5zcGF0
aWFsX2xheWVyX2lkOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgYnJlYWs7CisgICAgICBmb3Ig
KHVpbnQ4X3Qgc2xfaWR4ID0gMDsgc2xfaWR4IDwgbnVtX2FjdGl2ZV9zcGF0aWFsX2xheWVyc187
ICsrc2xfaWR4KSB7CisgICAgICAgIGlmIChmcmFtZXJhdGVfY29udHJvbGxlcl9bc2xfaWR4XS5E
cm9wRnJhbWUoZnJhbWVfdGltZXN0YW1wX21zKSkgeworICAgICAgICAgICsrbGF5ZXJfaWQuc3Bh
dGlhbF9sYXllcl9pZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgfQotICAgIH0KIAotICAgIFJUQ19EQ0hFQ0tfTEUobGF5ZXJfaWQuc3BhdGlh
bF9sYXllcl9pZCwgbnVtX2FjdGl2ZV9zcGF0aWFsX2xheWVyc18pOwotICAgIGlmIChsYXllcl9p
ZC5zcGF0aWFsX2xheWVyX2lkID49IG51bV9hY3RpdmVfc3BhdGlhbF9sYXllcnNfKSB7Ci0gICAg
ICAvLyBEcm9wIGVudGlyZSBwaWN0dXJlLgotICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19PSzsKKyAgICAgIFJUQ19EQ0hFQ0tfTEUobGF5ZXJfaWQuc3BhdGlhbF9sYXllcl9pZCwgbnVt
X2FjdGl2ZV9zcGF0aWFsX2xheWVyc18pOworICAgICAgaWYgKGxheWVyX2lkLnNwYXRpYWxfbGF5
ZXJfaWQgPj0gbnVtX2FjdGl2ZV9zcGF0aWFsX2xheWVyc18pIHsKKyAgICAgICAgLy8gRHJvcCBl
bnRpcmUgcGljdHVyZS4KKyAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKKyAg
ICAgIH0KICAgICB9Ci0KKyAgICBmaXJzdF9hY3RpdmVfc3BhdGlhbF9sYXllcl9pZCA9IGxheWVy
X2lkLnNwYXRpYWxfbGF5ZXJfaWQ7CiAgICAgdnB4X2NvZGVjX2NvbnRyb2woZW5jb2Rlcl8sIFZQ
OUVfU0VUX1NWQ19MQVlFUl9JRCwgJmxheWVyX2lkKTsKICAgfQogCkBAIC03ODUsMTAgKzc4Mywy
MSBAQCBpbnQgVlA5RW5jb2RlckltcGw6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9p
bWFnZSwKICAgfQogCiAgIGlmIChleHRlcm5hbF9yZWZfY29udHJvbF8pIHsKLSAgICB2cHhfc3Zj
X3JlZl9mcmFtZV9jb25maWdfdCByZWZfY29uZmlnID0gU2V0UmVmZXJlbmNlcyhmb3JjZV9rZXlf
ZnJhbWVfKTsKKyAgICB2cHhfc3ZjX3JlZl9mcmFtZV9jb25maWdfdCByZWZfY29uZmlnID0KKyAg
ICAgICAgU2V0UmVmZXJlbmNlcyhmb3JjZV9rZXlfZnJhbWVfLCBmaXJzdF9hY3RpdmVfc3BhdGlh
bF9sYXllcl9pZCk7CisKKyAgICBpZiAoVmlkZW9Db2RlY01vZGU6OmtTY3JlZW5zaGFyaW5nID09
IGNvZGVjXy5tb2RlKSB7CisgICAgICBmb3IgKHVpbnQ4X3Qgc2xfaWR4ID0gMDsgc2xfaWR4IDwg
bnVtX2FjdGl2ZV9zcGF0aWFsX2xheWVyc187ICsrc2xfaWR4KSB7CisgICAgICAgIHJlZl9jb25m
aWcuZHVyYXRpb25bc2xfaWR4XSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KAorICAgICAgICAgICAg
OTAwMDAgLyBmcmFtZXJhdGVfY29udHJvbGxlcl9bc2xfaWR4XS5HZXRUYXJnZXRSYXRlKCkpOwor
ICAgICAgfQorICAgIH0KKwogICAgIHZweF9jb2RlY19jb250cm9sKGVuY29kZXJfLCBWUDlFX1NF
VF9TVkNfUkVGX0ZSQU1FX0NPTkZJRywgJnJlZl9jb25maWcpOwogICB9CiAKKyAgZmlyc3RfZnJh
bWVfaW5fcGljdHVyZV8gPSB0cnVlOworCiAgIC8vIFRPRE8oc3NpbGtpbik6IEZyYW1lIGR1cmF0
aW9uIHNob3VsZCBiZSBzcGVjaWZpZWQgcGVyIHNwYXRpYWwgbGF5ZXIKICAgLy8gc2luY2UgdGhl
aXIgZnJhbWUgcmF0ZSBjYW4gYmUgZGlmZmVyZW50LiBGb3Igbm93IGNhbGN1bGF0ZSBmcmFtZSBk
dXJhdGlvbgogICAvLyBiYXNlZCBvbiB0YXJnZXQgZnJhbWUgcmF0ZSBvZiB0aGUgaGlnaGVzdCBz
cGF0aWFsIGxheWVyLCB3aGljaCBmcmFtZSByYXRlCkBAIC04MTQsOCArODIzLDEwIEBAIGludCBW
UDlFbmNvZGVySW1wbDo6RW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2ltYWdlLAogICB9
CiAgIHRpbWVzdGFtcF8gKz0gZHVyYXRpb247CiAKLSAgY29uc3QgYm9vbCBlbmRfb2ZfcGljdHVy
ZSA9IHRydWU7Ci0gIERlbGl2ZXJCdWZmZXJlZEZyYW1lKGVuZF9vZl9waWN0dXJlKTsKKyAgaWYg
KCFmdWxsX3N1cGVyZnJhbWVfZHJvcF8pIHsKKyAgICBjb25zdCBib29sIGVuZF9vZl9waWN0dXJl
ID0gdHJ1ZTsKKyAgICBEZWxpdmVyQnVmZmVyZWRGcmFtZShlbmRfb2ZfcGljdHVyZSk7CisgIH0K
IAogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQpAQCAtODIzLDE0ICs4MzQsMTIg
QEAgaW50IFZQOUVuY29kZXJJbXBsOjpFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRfaW1h
Z2UsCiB2b2lkIFZQOUVuY29kZXJJbXBsOjpQb3B1bGF0ZUNvZGVjU3BlY2lmaWMoQ29kZWNTcGVj
aWZpY0luZm8qIGNvZGVjX3NwZWNpZmljLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGludD4qIHNwYXRpYWxfaWR4LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZweF9jb2RlY19jeF9wa3Qm
IHBrdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCB0aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBmaXJzdF9mcmFtZV9pbl9waWN0dXJlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZXN0YW1wKSB7CiAgIFJUQ19DSEVDSyhjb2Rl
Y19zcGVjaWZpYyAhPSBudWxscHRyKTsKICAgY29kZWNfc3BlY2lmaWMtPmNvZGVjVHlwZSA9IGtW
aWRlb0NvZGVjVlA5OwotICBjb2RlY19zcGVjaWZpYy0+Y29kZWNfbmFtZSA9IEltcGxlbWVudGF0
aW9uTmFtZSgpOwogICBDb2RlY1NwZWNpZmljSW5mb1ZQOSogdnA5X2luZm8gPSAmKGNvZGVjX3Nw
ZWNpZmljLT5jb2RlY1NwZWNpZmljLlZQOSk7CiAKLSAgdnA5X2luZm8tPmZpcnN0X2ZyYW1lX2lu
X3BpY3R1cmUgPSBmaXJzdF9mcmFtZV9pbl9waWN0dXJlOworICB2cDlfaW5mby0+Zmlyc3RfZnJh
bWVfaW5fcGljdHVyZSA9IGZpcnN0X2ZyYW1lX2luX3BpY3R1cmVfOwogICB2cDlfaW5mby0+Zmxl
eGlibGVfbW9kZSA9IGlzX2ZsZXhpYmxlX21vZGVfOwogICB2cDlfaW5mby0+c3NfZGF0YV9hdmFp
bGFibGUgPQogICAgICAgKHBrdC5kYXRhLmZyYW1lLmZsYWdzICYgVlBYX0ZSQU1FX0lTX0tFWSkg
PyB0cnVlIDogZmFsc2U7CkBAIC04NjEsNyArODcwLDcgQEAgdm9pZCBWUDlFbmNvZGVySW1wbDo6
UG9wdWxhdGVDb2RlY1NwZWNpZmljKENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpYywK
IAogICBpZiAocGt0LmRhdGEuZnJhbWUuZmxhZ3MgJiBWUFhfRlJBTUVfSVNfS0VZKSB7CiAgICAg
cGljc19zaW5jZV9rZXlfID0gMDsKLSAgfSBlbHNlIGlmIChmaXJzdF9mcmFtZV9pbl9waWN0dXJl
KSB7CisgIH0gZWxzZSBpZiAoZmlyc3RfZnJhbWVfaW5fcGljdHVyZV8pIHsKICAgICArK3BpY3Nf
c2luY2Vfa2V5XzsKICAgfQogCkBAIC04NzcsNyArODg2LDcgQEAgdm9pZCBWUDlFbmNvZGVySW1w
bDo6UG9wdWxhdGVDb2RlY1NwZWNpZmljKENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZp
YywKICAgLy8gaWYgbG93IGxheWVyIGZyYW1lIGlzIGxvc3QpIHRoZW4gcmVjZWl2ZXIgd29uJ3Qg
YmUgYWJsZSB0byBkZWNvZGUgbmV4dCBoaWdoCiAgIC8vIGxheWVyIGZyYW1lIHdoaWNoIHVzZXMg
SUxQLgogICB2cDlfaW5mby0+aW50ZXJfbGF5ZXJfcHJlZGljdGVkID0KLSAgICAgIGZpcnN0X2Zy
YW1lX2luX3BpY3R1cmUgPyBmYWxzZSA6IGlzX2ludGVyX2xheWVyX3ByZWRfYWxsb3dlZDsKKyAg
ICAgIGZpcnN0X2ZyYW1lX2luX3BpY3R1cmVfID8gZmFsc2UgOiBpc19pbnRlcl9sYXllcl9wcmVk
X2FsbG93ZWQ7CiAKICAgLy8gTWFyayBhbGwgbG93IHNwYXRpYWwgbGF5ZXIgZnJhbWVzIGFzIHJl
ZmVyZW5jZXMgKG5vdCBqdXN0IGZyYW1lcyBvZgogICAvLyBhY3RpdmUgbG93IHNwYXRpYWwgbGF5
ZXJzKSBpZiBpbnRlci1sYXllciBwcmVkaWN0aW9uIGlzIGVuYWJsZWQgc2luY2UKQEAgLTkyMSw2
ICs5MzAsOCBAQCB2b2lkIFZQOUVuY29kZXJJbXBsOjpQb3B1bGF0ZUNvZGVjU3BlY2lmaWMoQ29k
ZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljLAogICAgICAgdnA5X2luZm8tPmdvZi5Db3B5
R29mSW5mb1ZQOShnb2ZfKTsKICAgICB9CiAgIH0KKworICBmaXJzdF9mcmFtZV9pbl9waWN0dXJl
XyA9IGZhbHNlOwogfQogCiB2b2lkIFZQOUVuY29kZXJJbXBsOjpGaWxsUmVmZXJlbmNlSW5kaWNl
cyhjb25zdCB2cHhfY29kZWNfY3hfcGt0JiBwa3QsCkBAIC05NzgsNiArOTg5LDggQEAgdm9pZCBW
UDlFbmNvZGVySW1wbDo6RmlsbFJlZmVyZW5jZUluZGljZXMoY29uc3QgdnB4X2NvZGVjX2N4X3Br
dCYgcGt0LAogCiAgIHNpemVfdCBtYXhfcmVmX3RlbXBvcmFsX2xheWVyX2lkID0gMDsKIAorICBz
dGQ6OnZlY3RvcjxzaXplX3Q+IHJlZl9waWRfbGlzdDsKKwogICB2cDlfaW5mby0+bnVtX3JlZl9w
aWNzID0gMDsKICAgZm9yIChjb25zdCBSZWZGcmFtZUJ1ZmZlciYgcmVmX2J1ZiA6IHJlZl9idWZf
bGlzdCkgewogICAgIFJUQ19EQ0hFQ0tfTEUocmVmX2J1Zi5waWNfbnVtLCBwaWNfbnVtKTsKQEAg
LTk5MCw2ICsxMDAzLDE2IEBAIHZvaWQgVlA5RW5jb2RlckltcGw6OkZpbGxSZWZlcmVuY2VJbmRp
Y2VzKGNvbnN0IHZweF9jb2RlY19jeF9wa3QmIHBrdCwKICAgICAgIH0KICAgICAgIFJUQ19EQ0hF
Q0tfTEUocmVmX2J1Zi50ZW1wb3JhbF9sYXllcl9pZCwgbGF5ZXJfaWQudGVtcG9yYWxfbGF5ZXJf
aWQpOwogCisgICAgICAvLyBFbmNvZGVyIG1heSByZWZlcmVuY2Ugc2V2ZXJhbCBzcGF0aWFsIGxh
eWVycyBvbiB0aGUgc2FtZSBwcmV2aW91cworICAgICAgLy8gZnJhbWUgaW4gY2FzZSBpZiBzb21l
IHNwYXRpYWwgbGF5ZXJzIGFyZSBza2lwcGVkIG9uIHRoZSBjdXJyZW50IGZyYW1lLgorICAgICAg
Ly8gV2Ugc2hvdWxkbid0IHB1dCBkdXBsaWNhdGUgcmVmZXJlbmNlcyBhcyBpdCBtYXkgYnJlYWsg
c29tZSBvbGQKKyAgICAgIC8vIGNsaWVudHMgYW5kIGlzbid0IFJUUCBjb21wYXRpYmxlLgorICAg
ICAgaWYgKHN0ZDo6ZmluZChyZWZfcGlkX2xpc3QuYmVnaW4oKSwgcmVmX3BpZF9saXN0LmVuZCgp
LAorICAgICAgICAgICAgICAgICAgICByZWZfYnVmLnBpY19udW0pICE9IHJlZl9waWRfbGlzdC5l
bmQoKSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIHJlZl9waWRfbGlzdC5w
dXNoX2JhY2socmVmX2J1Zi5waWNfbnVtKTsKKwogICAgICAgY29uc3Qgc2l6ZV90IHBfZGlmZiA9
IHBpY19udW0gLSByZWZfYnVmLnBpY19udW07CiAgICAgICBSVENfRENIRUNLX0xFKHBfZGlmZiwg
MTI3VUwpOwogCkBAIC0xMDU0LDcgKzEwNzcsOSBAQCB2b2lkIFZQOUVuY29kZXJJbXBsOjpVcGRh
dGVSZWZlcmVuY2VCdWZmZXJzKGNvbnN0IHZweF9jb2RlY19jeF9wa3QmIHBrdCwKICAgfQogfQog
Ci12cHhfc3ZjX3JlZl9mcmFtZV9jb25maWdfdCBWUDlFbmNvZGVySW1wbDo6U2V0UmVmZXJlbmNl
cyhib29sIGlzX2tleV9waWMpIHsKK3ZweF9zdmNfcmVmX2ZyYW1lX2NvbmZpZ190IFZQOUVuY29k
ZXJJbXBsOjpTZXRSZWZlcmVuY2VzKAorICAgIGJvb2wgaXNfa2V5X3BpYywKKyAgICBzaXplX3Qg
Zmlyc3RfYWN0aXZlX3NwYXRpYWxfbGF5ZXJfaWQpIHsKICAgLy8ga1JlZkJ1ZklkeCwga1VwZEJ1
ZklkeCBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gc3VwcG9ydCBsb25nZXIgR09Gcy4KICAgUlRDX0RD
SEVDS19MRShnb2ZfLm51bV9mcmFtZXNfaW5fZ29mLCA0KTsKIApAQCAtMTEwNiwxMyArMTEzMSwx
NCBAQCB2cHhfc3ZjX3JlZl9mcmFtZV9jb25maWdfdCBWUDlFbmNvZGVySW1wbDo6U2V0UmVmZXJl
bmNlcyhib29sIGlzX2tleV9waWMpIHsKICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoaXNfaW50
ZXJfbGF5ZXJfcHJlZF9hbGxvd2VkICYmIHNsX2lkeCA+IDApIHsKKyAgICBpZiAoaXNfaW50ZXJf
bGF5ZXJfcHJlZF9hbGxvd2VkICYmIHNsX2lkeCA+IGZpcnN0X2FjdGl2ZV9zcGF0aWFsX2xheWVy
X2lkKSB7CiAgICAgICAvLyBTZXQgdXAgc3BhdGlhbCByZWZlcmVuY2UuCiAgICAgICBSVENfRENI
RUNLKGxhc3RfdXBkYXRlZF9idWZfaWR4KTsKICAgICAgIHJlZl9jb25maWcuZ2xkX2ZiX2lkeFtz
bF9pZHhdID0gKmxhc3RfdXBkYXRlZF9idWZfaWR4OwogICAgICAgcmVmX2NvbmZpZy5yZWZlcmVu
Y2VfZ29sZGVuW3NsX2lkeF0gPSAxOwogICAgIH0gZWxzZSB7Ci0gICAgICBSVENfRENIRUNLKHJl
Zl9jb25maWcucmVmZXJlbmNlX2xhc3Rbc2xfaWR4XSAhPSAwIHx8IHNsX2lkeCA9PSAwIHx8Cisg
ICAgICBSVENfRENIRUNLKHJlZl9jb25maWcucmVmZXJlbmNlX2xhc3Rbc2xfaWR4XSAhPSAwIHx8
CisgICAgICAgICAgICAgICAgIHNsX2lkeCA9PSBmaXJzdF9hY3RpdmVfc3BhdGlhbF9sYXllcl9p
ZCB8fAogICAgICAgICAgICAgICAgICBpbnRlcl9sYXllcl9wcmVkXyA9PSBJbnRlckxheWVyUHJl
ZE1vZGU6OmtPZmYpOwogICAgIH0KIApAQCAtMTE0NywxMiArMTE3MywxMSBAQCBpbnQgVlA5RW5j
b2RlckltcGw6OkdldEVuY29kZWRMYXllckZyYW1lKGNvbnN0IHZweF9jb2RlY19jeF9wa3QqIHBr
dCkgewogICB2cHhfc3ZjX2xheWVyX2lkX3QgbGF5ZXJfaWQgPSB7MH07CiAgIHZweF9jb2RlY19j
b250cm9sKGVuY29kZXJfLCBWUDlFX0dFVF9TVkNfTEFZRVJfSUQsICZsYXllcl9pZCk7CiAKLSAg
Y29uc3QgYm9vbCBmaXJzdF9mcmFtZV9pbl9waWN0dXJlID0gZW5jb2RlZF9pbWFnZV8uX2xlbmd0
aCA9PSAwOwotICAvLyBFbnN1cmUgd2UgZG9uJ3QgYnVmZmVyIGxheWVycyBvZiBwcmV2aW91cyBw
aWN0dXJlIChzdXBlcmZyYW1lKS4KLSAgUlRDX0RDSEVDSyhmaXJzdF9mcmFtZV9pbl9waWN0dXJl
IHx8IGxheWVyX2lkLnNwYXRpYWxfbGF5ZXJfaWQgPiAwKTsKLQotICBjb25zdCBib29sIGVuZF9v
Zl9waWN0dXJlID0gZmFsc2U7Ci0gIERlbGl2ZXJCdWZmZXJlZEZyYW1lKGVuZF9vZl9waWN0dXJl
KTsKKyAgaWYgKCFmdWxsX3N1cGVyZnJhbWVfZHJvcF8pIHsKKyAgICAvLyBEZWxpdmVyIGJ1ZmZl
cmVkIGxvdyBzcGF0aWFsIGxheWVyIGZyYW1lLgorICAgIGNvbnN0IGJvb2wgZW5kX29mX3BpY3R1
cmUgPSBmYWxzZTsKKyAgICBEZWxpdmVyQnVmZmVyZWRGcmFtZShlbmRfb2ZfcGljdHVyZSk7Cisg
IH0KIAogICBpZiAocGt0LT5kYXRhLmZyYW1lLnN6ID4gZW5jb2RlZF9pbWFnZV8uX3NpemUpIHsK
ICAgICBkZWxldGVbXSBlbmNvZGVkX2ltYWdlXy5fYnVmZmVyOwpAQCAtMTE3OCw3ICsxMjAzLDcg
QEAgaW50IFZQOUVuY29kZXJJbXBsOjpHZXRFbmNvZGVkTGF5ZXJGcmFtZShjb25zdCB2cHhfY29k
ZWNfY3hfcGt0KiBwa3QpIHsKICAgbWVtc2V0KCZjb2RlY19zcGVjaWZpY18sIDAsIHNpemVvZihj
b2RlY19zcGVjaWZpY18pKTsKICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzcGF0aWFsX2luZGV4Owog
ICBQb3B1bGF0ZUNvZGVjU3BlY2lmaWMoJmNvZGVjX3NwZWNpZmljXywgJnNwYXRpYWxfaW5kZXgs
ICpwa3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pbWFnZV8tPnRpbWVzdGFtcCgp
LCBmaXJzdF9mcmFtZV9pbl9waWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0
X2ltYWdlXy0+dGltZXN0YW1wKCkpOwogICBlbmNvZGVkX2ltYWdlXy5TZXRTcGF0aWFsSW5kZXgo
c3BhdGlhbF9pbmRleCk7CiAKICAgaWYgKGlzX2ZsZXhpYmxlX21vZGVfKSB7CkBAIC0xMjAwLDYg
KzEyMjUsMTMgQEAgaW50IFZQOUVuY29kZXJJbXBsOjpHZXRFbmNvZGVkTGF5ZXJGcmFtZShjb25z
dCB2cHhfY29kZWNfY3hfcGt0KiBwa3QpIHsKICAgaW50IHFwID0gLTE7CiAgIHZweF9jb2RlY19j
b250cm9sKGVuY29kZXJfLCBWUDhFX0dFVF9MQVNUX1FVQU5USVpFUiwgJnFwKTsKICAgZW5jb2Rl
ZF9pbWFnZV8ucXBfID0gcXA7CisgIGVuY29kZWRfaW1hZ2VfLlNldENvbG9yU3BhY2UoaW5wdXRf
aW1hZ2VfLT5jb2xvcl9zcGFjZSgpKTsKKworICBpZiAoZnVsbF9zdXBlcmZyYW1lX2Ryb3BfKSB7
CisgICAgY29uc3QgYm9vbCBlbmRfb2ZfcGljdHVyZSA9IGVuY29kZWRfaW1hZ2VfLlNwYXRpYWxJ
bmRleCgpLnZhbHVlX29yKDApICsgMSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudW1fYWN0aXZlX3NwYXRpYWxfbGF5ZXJzXzsKKyAgICBEZWxpdmVyQnVmZmVyZWRGcmFtZShl
bmRfb2ZfcGljdHVyZSk7CisgIH0KIAogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwog
fQpAQCAtMTIzMCwyMiArMTI2MiwxOSBAQCB2b2lkIFZQOUVuY29kZXJJbXBsOjpEZWxpdmVyQnVm
ZmVyZWRGcmFtZShib29sIGVuZF9vZl9waWN0dXJlKSB7CiAgIH0KIH0KIAotaW50IFZQOUVuY29k
ZXJJbXBsOjpTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRf
dCBydHQpIHsKLSAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLX0KLQogaW50IFZQOUVu
Y29kZXJJbXBsOjpSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgICAgRW5jb2RlZElt
YWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSB7CiAgIGVuY29kZWRfY29tcGxldGVfY2FsbGJhY2tfID0g
Y2FsbGJhY2s7CiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKLWNvbnN0IGNo
YXIqIFZQOUVuY29kZXJJbXBsOjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7Ci0gIHJldHVy
biAibGlidnB4IjsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFZQOURlY29kZXI+IFZQOURlY29kZXI6
OkNyZWF0ZSgpIHsKLSAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFZQOURlY29kZXJJbXBsPigp
OworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBWUDlFbmNvZGVySW1wbDo6R2V0RW5jb2Rlcklu
Zm8oKSBjb25zdCB7CisgIEVuY29kZXJJbmZvIGluZm87CisgIGluZm8uc3VwcG9ydHNfbmF0aXZl
X2hhbmRsZSA9IGZhbHNlOworICBpbmZvLmltcGxlbWVudGF0aW9uX25hbWUgPSAibGlidnB4IjsK
KyAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6
OmtPZmY7CisgIGluZm8uaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyID0gdHJ1c3RlZF9yYXRl
X2NvbnRyb2xsZXJfOworICByZXR1cm4gaW5mbzsKIH0KIAogVlA5RGVjb2RlckltcGw6OlZQOURl
Y29kZXJJbXBsKCkKQEAgLTEyNzIsMTMgKzEzMDEsMTggQEAgaW50IFZQOURlY29kZXJJbXBsOjpJ
bml0RGVjb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGluc3QsIGludCBudW1iZXJfb2ZfY29yZXMpIHsK
ICAgaWYgKHJldF92YWwgPCAwKSB7CiAgICAgcmV0dXJuIHJldF92YWw7CiAgIH0KKwogICBpZiAo
ZGVjb2Rlcl8gPT0gbnVsbHB0cikgewogICAgIGRlY29kZXJfID0gbmV3IHZweF9jb2RlY19jdHhf
dDsKICAgfQogICB2cHhfY29kZWNfZGVjX2NmZ190IGNmZzsKLSAgLy8gU2V0dGluZyBudW1iZXIg
b2YgdGhyZWFkcyB0byBhIGNvbnN0YW50IHZhbHVlICgxKQotICBjZmcudGhyZWFkcyA9IDE7Ci0g
IGNmZy5oID0gY2ZnLncgPSAwOyAgLy8gc2V0IGFmdGVyIGRlY29kZQorICBtZW1zZXQoJmNmZywg
MCwgc2l6ZW9mKGNmZykpOworCisgIC8vIFdlIHdhbnQgdG8gdXNlIG11bHRpdGhyZWFkaW5nIHdo
ZW4gZGVjb2RpbmcgaGlnaCByZXNvbHV0aW9uIHZpZGVvcy4gQnV0LAorICAvLyBzaW5jZSB3ZSBk
b24ndCBrbm93IHJlc29sdXRpb24gb2YgaW5wdXQgc3RyZWFtIGF0IHRoaXMgc3RhZ2UsIHdlIGFs
d2F5cworICAvLyBlbmFibGUgaXQuCisgIGNmZy50aHJlYWRzID0gc3RkOjptaW4obnVtYmVyX29m
X2NvcmVzLCBrTWF4TnVtVGlsZXM0a1ZpZGVvKTsKKwogICB2cHhfY29kZWNfZmxhZ3NfdCBmbGFn
cyA9IDA7CiAgIGlmICh2cHhfY29kZWNfZGVjX2luaXQoZGVjb2Rlcl8sIHZweF9jb2RlY192cDlf
ZHgoKSwgJmNmZywgZmxhZ3MpKSB7CiAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19NRU1P
Ulk7CkBAIC0xMzM2LDggKzEzNzAsOCBAQCBpbnQgVlA5RGVjb2RlckltcGw6OkRlY29kZShjb25z
dCBFbmNvZGVkSW1hZ2UmIGlucHV0X2ltYWdlLAogICB2cHhfY29kZWNfZXJyX3QgdnB4X3JldCA9
CiAgICAgICB2cHhfY29kZWNfY29udHJvbChkZWNvZGVyXywgVlBYRF9HRVRfTEFTVF9RVUFOVEla
RVIsICZxcCk7CiAgIFJUQ19EQ0hFQ0tfRVEodnB4X3JldCwgVlBYX0NPREVDX09LKTsKLSAgaW50
IHJldCA9Ci0gICAgICBSZXR1cm5GcmFtZShpbWcsIGlucHV0X2ltYWdlLlRpbWVzdGFtcCgpLCBp
bnB1dF9pbWFnZS5udHBfdGltZV9tc18sIHFwKTsKKyAgaW50IHJldCA9IFJldHVybkZyYW1lKGlt
ZywgaW5wdXRfaW1hZ2UuVGltZXN0YW1wKCksIGlucHV0X2ltYWdlLm50cF90aW1lX21zXywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHFwLCBpbnB1dF9pbWFnZS5Db2xvclNwYWNlKCkpOwogICBp
ZiAocmV0ICE9IDApIHsKICAgICByZXR1cm4gcmV0OwogICB9CkBAIC0xMzQ3LDcgKzEzODEsOCBA
QCBpbnQgVlA5RGVjb2RlckltcGw6OkRlY29kZShjb25zdCBFbmNvZGVkSW1hZ2UmIGlucHV0X2lt
YWdlLAogaW50IFZQOURlY29kZXJJbXBsOjpSZXR1cm5GcmFtZShjb25zdCB2cHhfaW1hZ2VfdCog
aW1nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0aW1lc3RhbXAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgbnRwX3RpbWVfbXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBxcCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgcXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvbG9yU3BhY2UqIGV4cGxpY2l0X2NvbG9yX3NwYWNlKSB7CiAgIGlmIChpbWcgPT0g
bnVsbHB0cikgewogICAgIC8vIERlY29kZXIgT0sgYW5kIG51bGxwdHIgaW1hZ2UgPT4gTm8gc2hv
dyBmcmFtZS4KICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX05PX09VVFBVVDsKQEAgLTEz
ODksMTUgKzE0MjQsMjEgQEAgaW50IFZQOURlY29kZXJJbXBsOjpSZXR1cm5GcmFtZShjb25zdCB2
cHhfaW1hZ2VfdCogaW1nLAogICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19OT19PVVRQ
VVQ7CiAgIH0KIAotICBWaWRlb0ZyYW1lIGRlY29kZWRfaW1hZ2UgPSBWaWRlb0ZyYW1lOjpCdWls
ZGVyKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRfdmlkZW9fZnJhbWVf
YnVmZmVyKGltZ193cmFwcGVkX2J1ZmZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC5zZXRfdGltZXN0YW1wX21zKDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAuc2V0X3RpbWVzdGFtcF9ydHAodGltZXN0YW1wKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLnNldF9udHBfdGltZV9tcyhudHBfdGltZV9tcykKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC5zZXRfcm90YXRpb24od2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldF9jb2xvcl9zcGFjZShFeHRyYWN0
VlA5Q29sb3JTcGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWct
PmNzLCBpbWctPnJhbmdlLCBpbWctPmJpdF9kZXB0aCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAuYnVpbGQoKTsKKyAgYXV0byBidWlsZGVyID0gVmlkZW9GcmFtZTo6QnVpbGRl
cigpCisgICAgICAgICAgICAgICAgICAgICAuc2V0X3ZpZGVvX2ZyYW1lX2J1ZmZlcihpbWdfd3Jh
cHBlZF9idWZmZXIpCisgICAgICAgICAgICAgICAgICAgICAuc2V0X3RpbWVzdGFtcF9tcygwKQor
ICAgICAgICAgICAgICAgICAgICAgLnNldF90aW1lc3RhbXBfcnRwKHRpbWVzdGFtcCkKKyAgICAg
ICAgICAgICAgICAgICAgIC5zZXRfbnRwX3RpbWVfbXMobnRwX3RpbWVfbXMpCisgICAgICAgICAg
ICAgICAgICAgICAuc2V0X3JvdGF0aW9uKHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCk7CisgIGlm
IChleHBsaWNpdF9jb2xvcl9zcGFjZSkgeworICAgIGJ1aWxkZXIuc2V0X2NvbG9yX3NwYWNlKGV4
cGxpY2l0X2NvbG9yX3NwYWNlKTsKKyAgfSBlbHNlIHsKKyAgICBidWlsZGVyLnNldF9jb2xvcl9z
cGFjZSgKKyAgICAgICAgRXh0cmFjdFZQOUNvbG9yU3BhY2UoaW1nLT5jcywgaW1nLT5yYW5nZSwg
aW1nLT5iaXRfZGVwdGgpKTsKKyAgfQorCisgIFZpZGVvRnJhbWUgZGVjb2RlZF9pbWFnZSA9IGJ1
aWxkZXIuYnVpbGQoKTsKKwogICBkZWNvZGVfY29tcGxldGVfY2FsbGJhY2tfLT5EZWNvZGVkKGRl
Y29kZWRfaW1hZ2UsIGFic2w6Om51bGxvcHQsIHFwKTsKICAgcmV0dXJuIFdFQlJUQ19WSURFT19D
T0RFQ19PSzsKIH0KQEAgLTE0MzUsMyArMTQ3Niw1IEBAIGNvbnN0IGNoYXIqIFZQOURlY29kZXJJ
bXBsOjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKKworI2VuZGlmICAvLyBSVENfRU5BQkxFX1ZQOQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOS92cDlfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfaW1wbC5oCmluZGV4IGQ4
Y2UxZmYyYWI1ZWZiMjM3NzNjZjdmMjAyODA4YmYzMTRmYjllNzIuLjNiZmFiOWFkNWZkNTg5YmFk
ZDUyM2I0MTlmODE4ZDFmMmU4MjA3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5
X2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9pbXBsLmgKQEAgLTEyLDYgKzEyLDgg
QEAKICNpZm5kZWYgTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOV9WUDlfSU1QTF9IXwog
I2RlZmluZSBNT0RVTEVTX1ZJREVPX0NPRElOR19DT0RFQ1NfVlA5X1ZQOV9JTVBMX0hfCiAKKyNp
ZmRlZiBSVENfRU5BQkxFX1ZQOQorCiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx2ZWN0b3I+CkBAIC00NiwxMiArNDgsMTAgQEAgY2xhc3MgVlA5RW5jb2Rlcklt
cGwgOiBwdWJsaWMgVlA5RW5jb2RlciB7CiAKICAgaW50IFJlZ2lzdGVyRW5jb2RlQ29tcGxldGVD
YWxsYmFjayhFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwogCi0gIGlu
dCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQp
IG92ZXJyaWRlOwotCiAgIGludCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVB
bGxvY2F0aW9uJiBiaXRyYXRlX2FsbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCBmcmFtZV9yYXRlKSBvdmVycmlkZTsKIAotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRh
dGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8o
KSBjb25zdCBvdmVycmlkZTsKIAogIHByaXZhdGU6CiAgIC8vIERldGVybWluZSBudW1iZXIgb2Yg
ZW5jb2RlciB0aHJlYWRzIHRvIHVzZS4KQEAgLTYzLDE1ICs2MywxNiBAQCBjbGFzcyBWUDlFbmNv
ZGVySW1wbCA6IHB1YmxpYyBWUDlFbmNvZGVyIHsKICAgdm9pZCBQb3B1bGF0ZUNvZGVjU3BlY2lm
aWMoQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+KiBzcGF0aWFsX2lkeCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdnB4X2NvZGVjX2N4X3BrdCYgcGt0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgZmlyc3RfZnJhbWVfaW5fcGljdHVyZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVzdGFtcCk7CiAgIHZvaWQgRmlsbFJlZmVyZW5j
ZUluZGljZXMoY29uc3QgdnB4X2NvZGVjX2N4X3BrdCYgcGt0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHNpemVfdCBwaWNfbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGJvb2wgaW50ZXJfbGF5ZXJfcHJlZGljdGVkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvZGVjU3BlY2lmaWNJbmZvVlA5KiB2cDlfaW5mbyk7CiAgIHZvaWQgVXBkYXRl
UmVmZXJlbmNlQnVmZmVycyhjb25zdCB2cHhfY29kZWNfY3hfcGt0JiBwa3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgcGljX251bSk7Ci0gIHZweF9zdmNfcmVm
X2ZyYW1lX2NvbmZpZ190IFNldFJlZmVyZW5jZXMoYm9vbCBpc19rZXlfcGljKTsKKyAgdnB4X3N2
Y19yZWZfZnJhbWVfY29uZmlnX3QgU2V0UmVmZXJlbmNlcygKKyAgICAgIGJvb2wgaXNfa2V5X3Bp
YywKKyAgICAgIHNpemVfdCBmaXJzdF9hY3RpdmVfc3BhdGlhbF9sYXllcl9pZCk7CiAKICAgYm9v
bCBFeHBsaWNpdGx5Q29uZmlndXJlZFNwYXRpYWxMYXllcnMoKSBjb25zdDsKICAgYm9vbCBTZXRT
dmNSYXRlcyhjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlX2FsbG9jYXRpb24p
OwpAQCAtMTE5LDYgKzEyMCw5IEBAIGNsYXNzIFZQOUVuY29kZXJJbXBsIDogcHVibGljIFZQOUVu
Y29kZXIgewogICBib29sIGlzX3N2Y187CiAgIEludGVyTGF5ZXJQcmVkTW9kZSBpbnRlcl9sYXll
cl9wcmVkXzsKICAgYm9vbCBleHRlcm5hbF9yZWZfY29udHJvbF87CisgIGNvbnN0IGJvb2wgdHJ1
c3RlZF9yYXRlX2NvbnRyb2xsZXJfOworICBjb25zdCBib29sIGZ1bGxfc3VwZXJmcmFtZV9kcm9w
XzsKKyAgYm9vbCBmaXJzdF9mcmFtZV9pbl9waWN0dXJlXzsKIAogICBzdGQ6OnZlY3RvcjxGcmFt
ZXJhdGVDb250cm9sbGVyPiBmcmFtZXJhdGVfY29udHJvbGxlcl87CiAKQEAgLTE2OCw3ICsxNzIs
OCBAQCBjbGFzcyBWUDlEZWNvZGVySW1wbCA6IHB1YmxpYyBWUDlEZWNvZGVyIHsKICAgaW50IFJl
dHVybkZyYW1lKGNvbnN0IHZweF9pbWFnZV90KiBpbWcsCiAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCB0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG50cF90aW1lX21zLAot
ICAgICAgICAgICAgICAgICAgaW50IHFwKTsKKyAgICAgICAgICAgICAgICAgIGludCBxcCwKKyAg
ICAgICAgICAgICAgICAgIGNvbnN0IENvbG9yU3BhY2UqIGV4cGxpY2l0X2NvbG9yX3NwYWNlKTsK
IAogICAvLyBNZW1vcnkgcG9vbCB1c2VkIHRvIHNoYXJlIGJ1ZmZlcnMgYmV0d2VlbiBsaWJ2cHgg
YW5kIHdlYnJ0Yy4KICAgVnA5RnJhbWVCdWZmZXJQb29sIGZyYW1lX2J1ZmZlcl9wb29sXzsKQEAg
LTE3OSw0ICsxODQsNiBAQCBjbGFzcyBWUDlEZWNvZGVySW1wbCA6IHB1YmxpYyBWUDlEZWNvZGVy
IHsKIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKKyNlbmRpZiAgLy8gUlRDX0VOQUJMRV9W
UDkKKwogI2VuZGlmICAvLyBNT0RVTEVTX1ZJREVPX0NPRElOR19DT0RFQ1NfVlA5X1ZQOV9JTVBM
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9lbmNvZGVkX2ZyYW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9lbmNvZGVkX2Zy
YW1lLmgKaW5kZXggYTA4ZWIwNzY5Yzc3ZjlmNGFlYjMzZmM5ZTFmMTVjMmRhZWMxNDhhNS4uYzdl
ZmQ0MDA3MjdiODY0YWZkZWU0OTBkNjI5YjFlYTE3NDdlOTljNiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
ZW5jb2RlZF9mcmFtZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2VuY29kZWRfZnJhbWUuaApAQCAtMTMsOCArMTMs
OCBAQAogCiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRf
aW1hZ2UuaCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlKQotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nX2RlZmluZXMu
aCIKQEAgLTYwLDExICs2MCwyMSBAQCBjbGFzcyBWQ01FbmNvZGVkRnJhbWUgOiBwcm90ZWN0ZWQg
RW5jb2RlZEltYWdlIHsKICAgICogICBHZXQgcG9pbnRlciB0byBmcmFtZSBidWZmZXIKICAgICov
CiAgIGNvbnN0IHVpbnQ4X3QqIEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIF9idWZmZXI7IH0KKyAg
LyoqCisgICAqICAgR2V0IHBvaW50ZXIgdG8gZnJhbWUgYnVmZmVyIHRoYXQgY2FuIGJlIG11dGF0
ZWQuCisgICAqLworICB1aW50OF90KiBNdXRhYmxlQnVmZmVyKCkgeyByZXR1cm4gX2J1ZmZlcjsg
fQogICAvKioKICAgICogICBHZXQgZnJhbWUgbGVuZ3RoCiAgICAqLwogICBzaXplX3QgTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gX2xlbmd0aDsgfQotCisgIC8qKgorICAgKiAgIFNldCBmcmFtZSBs
ZW5ndGgKKyAgICovCisgIHZvaWQgU2V0TGVuZ3RoKHNpemVfdCBsZW5ndGgpIHsKKyAgICBSVENf
RENIRUNLKGxlbmd0aCA8PSBfc2l6ZSk7CisgICAgX2xlbmd0aCA9IGxlbmd0aDsKKyAgfQogICAv
KioKICAgICogICBGcmFtZSBSVFAgdGltZXN0YW1wICg5MGtIeikKICAgICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9mZWNfY29udHJvbGxlcl9kZWZhdWx0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZmVjX2NvbnRyb2xsZXJf
ZGVmYXVsdC5jYwppbmRleCA1ZmUzOGU2Mjk3ZGQxMzc5YjBlMzQ4M2JjZmRhODJlNDVjY2JhZjAz
Li44NDFlZDc0MmRhYzUwOWU1NzcyYTAyNjc0MDQ0YzNmYmVmNDc0YThmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9mZWNfY29udHJvbGxlcl9kZWZhdWx0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZlY19jb250cm9sbGVy
X2RlZmF1bHQuY2MKQEAgLTgsMTAgKzgsMTcgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCi0jaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvZmVjX2NvbnRyb2xsZXJfZGVmYXVsdC5oIgorI2luY2x1ZGUg
PGFsZ29yaXRobT4KKworI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2ZlY19jb250cm9s
bGVyX2RlZmF1bHQuaCIgIC8vIE5PTElOVAorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
KyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIHVzaW5nIHJ0Yzo6Q3JpdFNjb3BlOworCitjb25zdCBmbG9hdCBrUHJv
dGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVzaG9sZCA9IDAuNTsKKwogRmVjQ29udHJvbGxlckRlZmF1
bHQ6OkZlY0NvbnRyb2xsZXJEZWZhdWx0KAogICAgIENsb2NrKiBjbG9jaywKICAgICBWQ01Qcm90
ZWN0aW9uQ2FsbGJhY2sqIHByb3RlY3Rpb25fY2FsbGJhY2spCkBAIC0xOSwxMyArMjYsMTUgQEAg
RmVjQ29udHJvbGxlckRlZmF1bHQ6OkZlY0NvbnRyb2xsZXJEZWZhdWx0KAogICAgICAgcHJvdGVj
dGlvbl9jYWxsYmFja18ocHJvdGVjdGlvbl9jYWxsYmFjayksCiAgICAgICBsb3NzX3Byb3RfbG9n
aWNfKG5ldyBtZWRpYV9vcHRpbWl6YXRpb246OlZDTUxvc3NQcm90ZWN0aW9uTG9naWMoCiAgICAg
ICAgICAgY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSkpLAotICAgICAgbWF4X3BheWxvYWRf
c2l6ZV8oMTQ2MCkge30KKyAgICAgIG1heF9wYXlsb2FkX3NpemVfKDE0NjApLAorICAgICAgb3Zl
cmhlYWRfdGhyZXNob2xkXyhHZXRQcm90ZWN0aW9uT3ZlcmhlYWRSYXRlVGhyZXNob2xkKCkpIHt9
CiAKIEZlY0NvbnRyb2xsZXJEZWZhdWx0OjpGZWNDb250cm9sbGVyRGVmYXVsdChDbG9jayogY2xv
Y2spCiAgICAgOiBjbG9ja18oY2xvY2spLAogICAgICAgbG9zc19wcm90X2xvZ2ljXyhuZXcgbWVk
aWFfb3B0aW1pemF0aW9uOjpWQ01Mb3NzUHJvdGVjdGlvbkxvZ2ljKAogICAgICAgICAgIGNsb2Nr
Xy0+VGltZUluTWlsbGlzZWNvbmRzKCkpKSwKLSAgICAgIG1heF9wYXlsb2FkX3NpemVfKDE0NjAp
IHt9CisgICAgICBtYXhfcGF5bG9hZF9zaXplXygxNDYwKSwKKyAgICAgIG92ZXJoZWFkX3RocmVz
aG9sZF8oR2V0UHJvdGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVzaG9sZCgpKSB7fQogCiBGZWNDb250
cm9sbGVyRGVmYXVsdDo6fkZlY0NvbnRyb2xsZXJEZWZhdWx0KHZvaWQpIHsKICAgbG9zc19wcm90
X2xvZ2ljXy0+UmVsZWFzZSgpOwpAQCAtNDYsNiArNTUsMjUgQEAgdm9pZCBGZWNDb250cm9sbGVy
RGVmYXVsdDo6U2V0RW5jb2RpbmdEYXRhKHNpemVfdCB3aWR0aCwKICAgbWF4X3BheWxvYWRfc2l6
ZV8gPSBtYXhfcGF5bG9hZF9zaXplOwogfQogCitmbG9hdCBGZWNDb250cm9sbGVyRGVmYXVsdDo6
R2V0UHJvdGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVzaG9sZCgpIHsKKyAgZmxvYXQgb3ZlcmhlYWRf
dGhyZXNob2xkID0KKyAgICAgIHN0cnRvZih3ZWJydGM6OmZpZWxkX3RyaWFsOjpGaW5kRnVsbE5h
bWUoCisgICAgICAgICAgICAgICAgICJXZWJSVEMtUHJvdGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVz
aG9sZCIpCisgICAgICAgICAgICAgICAgIC5jX3N0cigpLAorICAgICAgICAgICAgIG51bGxwdHIp
OworICBpZiAob3ZlcmhlYWRfdGhyZXNob2xkID4gMCAmJiBvdmVyaGVhZF90aHJlc2hvbGQgPD0g
MSkgeworICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlByb3RlY3Rpb25PdmVyaGVhZFJhdGVUaHJl
c2hvbGQgaXMgc2V0IHRvICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IG92ZXJoZWFkX3RocmVz
aG9sZDsKKyAgICByZXR1cm4gb3ZlcmhlYWRfdGhyZXNob2xkOworICB9IGVsc2UgaWYgKG92ZXJo
ZWFkX3RocmVzaG9sZCA8IDAgfHwgb3ZlcmhlYWRfdGhyZXNob2xkID4gMSkgeworICAgIFJUQ19M
T0coV0FSTklORykgPDwgIlByb3RlY3Rpb25PdmVyaGVhZFJhdGVUaHJlc2hvbGQgZmllbGQgdHJp
YWwgaXMgc2V0IHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbiBpbnZhbGlkIHZhbHVl
LCBleHBlY3RpbmcgYSB2YWx1ZSBiZXR3ZWVuICgwLCAxXS4iOworICB9CisgIC8vIFdlYlJUQy1Q
cm90ZWN0aW9uT3ZlcmhlYWRSYXRlVGhyZXNob2xkIGZpZWxkIHRyaWFsIHN0cmluZyBpcyBub3Qg
Zm91bmQsIHVzZQorICAvLyB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgcmV0dXJuIGtQcm90ZWN0aW9u
T3ZlcmhlYWRSYXRlVGhyZXNob2xkOworfQorCiB1aW50MzJfdCBGZWNDb250cm9sbGVyRGVmYXVs
dDo6VXBkYXRlRmVjUmF0ZXMoCiAgICAgdWludDMyX3QgZXN0aW1hdGVkX2JpdHJhdGVfYnBzLAog
ICAgIGludCBhY3R1YWxfZnJhbWVyYXRlX2ZwcywKQEAgLTEyNSw5ICsxNTMsOSBAQCB1aW50MzJf
dCBGZWNDb250cm9sbGVyRGVmYXVsdDo6VXBkYXRlRmVjUmF0ZXMoCiAgICAgICAgIHN0YXRpY19j
YXN0PGZsb2F0PihzZW50X25hY2tfcmF0ZV9icHMgKyBzZW50X2ZlY19yYXRlX2JwcykgLwogICAg
ICAgICBzZW50X3RvdGFsX3JhdGVfYnBzOwogICB9Ci0gIC8vIENhcCB0aGUgb3ZlcmhlYWQgZXN0
aW1hdGUgdG8gNTAlLgotICBpZiAocHJvdGVjdGlvbl9vdmVyaGVhZF9yYXRlID4gMC41KQotICAg
IHByb3RlY3Rpb25fb3ZlcmhlYWRfcmF0ZSA9IDAuNTsKKyAgLy8gQ2FwIHRoZSBvdmVyaGVhZCBl
c3RpbWF0ZSB0byBhIHRocmVzaG9sZCwgZGVmYXVsdCBpcyA1MCUuCisgIHByb3RlY3Rpb25fb3Zl
cmhlYWRfcmF0ZSA9CisgICAgICBzdGQ6Om1pbihwcm90ZWN0aW9uX292ZXJoZWFkX3JhdGUsIG92
ZXJoZWFkX3RocmVzaG9sZF8pOwogICAvLyBTb3VyY2UgY29kaW5nIHJhdGU6IHRvdGFsIHJhdGUg
LSBwcm90ZWN0aW9uIG92ZXJoZWFkLgogICByZXR1cm4gZXN0aW1hdGVkX2JpdHJhdGVfYnBzICog
KDEuMCAtIHByb3RlY3Rpb25fb3ZlcmhlYWRfcmF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9m
ZWNfY29udHJvbGxlcl9kZWZhdWx0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mZWNfY29udHJvbGxlcl9kZWZhdWx0LmgK
aW5kZXggYTk1ZWNlZDI0NWEyMjA4YTAyNDIwZDEyYmFjZDU2ODkxZjYxNzkwMC4uOWQ3OWE2MWQy
OGViYmFlZWQ3ZjBmMzFhNTFjN2Y3NjgwYWU0NGFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZmVjX2Nv
bnRyb2xsZXJfZGVmYXVsdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZlY19jb250cm9sbGVyX2RlZmF1bHQuaApA
QCAtNDIsNiArNDIsNyBAQCBjbGFzcyBGZWNDb250cm9sbGVyRGVmYXVsdCA6IHB1YmxpYyBGZWND
b250cm9sbGVyIHsKICAgdm9pZCBVcGRhdGVXaXRoRW5jb2RlZERhdGEoY29uc3Qgc2l6ZV90IGVu
Y29kZWRfaW1hZ2VfbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBG
cmFtZVR5cGUgZW5jb2RlZF9pbWFnZV9mcmFtZXR5cGUpIG92ZXJyaWRlOwogICBib29sIFVzZUxv
c3NWZWN0b3JNYXNrKCkgb3ZlcnJpZGU7CisgIGZsb2F0IEdldFByb3RlY3Rpb25PdmVyaGVhZFJh
dGVUaHJlc2hvbGQoKTsKIAogIHByaXZhdGU6CiAgIGVudW0geyBrQml0cmF0ZUF2ZXJhZ2VXaW5N
cyA9IDEwMDAgfTsKQEAgLTUyLDYgKzUzLDcgQEAgY2xhc3MgRmVjQ29udHJvbGxlckRlZmF1bHQg
OiBwdWJsaWMgRmVjQ29udHJvbGxlciB7CiAgICAgICBSVENfR1VBUkRFRF9CWShjcml0X3NlY3Rf
KTsKICAgc2l6ZV90IG1heF9wYXlsb2FkX3NpemVfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8p
OwogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZlY0NvbnRyb2xsZXJEZWZhdWx0KTsK
KyAgY29uc3QgZmxvYXQgb3ZlcmhlYWRfdGhyZXNob2xkXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFt
ZV9idWZmZXIyLmNjCmluZGV4IDM3NzYxMWU1ZTI3MTQzNzUwNmFkOTg0N2VhNjg0MGM5ZTFkNmQ2
MDYuLjA0ZmJhODRjYWY1NWI0NDdjMDU3ZGE5M2QwNmU2NTQwMTZlYzFlYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2ZyYW1lX2J1ZmZlcjIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVyMi5jYwpAQCAt
NDYsMTEgKzQ2LDkgQEAgRnJhbWVCdWZmZXI6OkZyYW1lQnVmZmVyKENsb2NrKiBjbG9jaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICBWQ01UaW1pbmcqIHRpbWluZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICBWQ01SZWNlaXZlU3RhdGlzdGljc0NhbGxiYWNrKiBzdGF0c19jYWxsYmFjaykK
ICAgICA6IGNsb2NrXyhjbG9jayksCi0gICAgICBuZXdfY29udGludW91c19mcmFtZV9ldmVudF8o
ZmFsc2UsIGZhbHNlKSwKICAgICAgIGppdHRlcl9lc3RpbWF0b3JfKGppdHRlcl9lc3RpbWF0b3Ip
LAogICAgICAgdGltaW5nXyh0aW1pbmcpLAogICAgICAgaW50ZXJfZnJhbWVfZGVsYXlfKGNsb2Nr
Xy0+VGltZUluTWlsbGlzZWNvbmRzKCkpLAotICAgICAgbGFzdF9kZWNvZGVkX2ZyYW1lX3RpbWVz
dGFtcF8oMCksCiAgICAgICBsYXN0X2RlY29kZWRfZnJhbWVfaXRfKGZyYW1lc18uZW5kKCkpLAog
ICAgICAgbGFzdF9jb250aW51b3VzX2ZyYW1lX2l0XyhmcmFtZXNfLmVuZCgpKSwKICAgICAgIG51
bV9mcmFtZXNfaGlzdG9yeV8oMCksCkBAIC0xMTUsMTAgKzExMywxOSBAQCBGcmFtZUJ1ZmZlcjo6
UmV0dXJuUmVhc29uIEZyYW1lQnVmZmVyOjpOZXh0RnJhbWUoCiAgICAgICAgIGlmIChrZXlmcmFt
ZV9yZXF1aXJlZCAmJiAhZnJhbWUtPmlzX2tleWZyYW1lKCkpCiAgICAgICAgICAgY29udGludWU7
CiAKKyAgICAgICAgLy8gVE9ETyhodHRwczovL2J1Z3Mud2VicnRjLm9yZy85OTc0KTogY29uc2lk
ZXIgcmVtb3ZpbmcgdGhpcyBjaGVjaworICAgICAgICAvLyBhcyBpdCBtYXkgbWFrZSBhIHN0cmVh
bSB1bmRlY29kYWJsZSBhZnRlciBhIHZlcnkgbG9uZyBkZWxheSBiZXR3ZWVuCisgICAgICAgIC8v
IGZyYW1lcy4KKyAgICAgICAgaWYgKGxhc3RfZGVjb2RlZF9mcmFtZV90aW1lc3RhbXBfICYmCisg
ICAgICAgICAgICBBaGVhZE9mKCpsYXN0X2RlY29kZWRfZnJhbWVfdGltZXN0YW1wXywgZnJhbWUt
PlRpbWVzdGFtcCgpKSkgeworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAg
ICAgbmV4dF9mcmFtZV9pdF8gPSBmcmFtZV9pdDsKLSAgICAgICAgaWYgKGZyYW1lLT5SZW5kZXJU
aW1lKCkgPT0gLTEpCisgICAgICAgIGlmIChmcmFtZS0+UmVuZGVyVGltZSgpID09IC0xKSB7CiAg
ICAgICAgICAgZnJhbWUtPlNldFJlbmRlclRpbWUoCiAgICAgICAgICAgICAgIHRpbWluZ18tPlJl
bmRlclRpbWVNcyhmcmFtZS0+VGltZXN0YW1wKCksIG5vd19tcykpOworICAgICAgICB9CiAgICAg
ICAgIHdhaXRfbXMgPSB0aW1pbmdfLT5NYXhXYWl0aW5nVGltZShmcmFtZS0+UmVuZGVyVGltZSgp
LCBub3dfbXMpOwogCiAgICAgICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB0aGUgZnJhbWUgYnVmZmVy
IHRvIHByZWZlciBoaWdoIGZyYW1lcmF0ZSByYXRoZXIKQEAgLTE3NSwzMyArMTgyLDYgQEAgRnJh
bWVCdWZmZXI6OlJldHVyblJlYXNvbiBGcmFtZUJ1ZmZlcjo6TmV4dEZyYW1lKAogICAgICAgVXBk
YXRlVGltaW5nRnJhbWVJbmZvKCk7CiAgICAgICBQcm9wYWdhdGVEZWNvZGFiaWxpdHkobmV4dF9m
cmFtZV9pdF8tPnNlY29uZCk7CiAKLSAgICAgIC8vIFNhbml0eSBjaGVjayBmb3IgUlRQIHRpbWVz
dGFtcCBtb25vdG9uaWNpdHkuCi0gICAgICBpZiAobGFzdF9kZWNvZGVkX2ZyYW1lX2l0XyAhPSBm
cmFtZXNfLmVuZCgpKSB7Ci0gICAgICAgIGNvbnN0IFZpZGVvTGF5ZXJGcmFtZUlkJiBsYXN0X2Rl
Y29kZWRfZnJhbWVfa2V5ID0KLSAgICAgICAgICAgIGxhc3RfZGVjb2RlZF9mcmFtZV9pdF8tPmZp
cnN0OwotICAgICAgICBjb25zdCBWaWRlb0xheWVyRnJhbWVJZCYgZnJhbWVfa2V5ID0gbmV4dF9m
cmFtZV9pdF8tPmZpcnN0OwotCi0gICAgICAgIGNvbnN0IGJvb2wgZnJhbWVfaXNfaGlnaGVyX3Nw
YXRpYWxfbGF5ZXJfb2ZfbGFzdF9kZWNvZGVkX2ZyYW1lID0KLSAgICAgICAgICAgIGxhc3RfZGVj
b2RlZF9mcmFtZV90aW1lc3RhbXBfID09IGZyYW1lLT5UaW1lc3RhbXAoKSAmJgotICAgICAgICAg
ICAgbGFzdF9kZWNvZGVkX2ZyYW1lX2tleS5waWN0dXJlX2lkID09IGZyYW1lX2tleS5waWN0dXJl
X2lkICYmCi0gICAgICAgICAgICBsYXN0X2RlY29kZWRfZnJhbWVfa2V5LnNwYXRpYWxfbGF5ZXIg
PCBmcmFtZV9rZXkuc3BhdGlhbF9sYXllcjsKLQotICAgICAgICBpZiAoQWhlYWRPckF0KGxhc3Rf
ZGVjb2RlZF9mcmFtZV90aW1lc3RhbXBfLCBmcmFtZS0+VGltZXN0YW1wKCkpICYmCi0gICAgICAg
ICAgICAhZnJhbWVfaXNfaGlnaGVyX3NwYXRpYWxfbGF5ZXJfb2ZfbGFzdF9kZWNvZGVkX2ZyYW1l
KSB7Ci0gICAgICAgICAgLy8gVE9ETyhicmFuZHRyKTogQ29uc2lkZXIgY2xlYXJpbmcgdGhlIGVu
dGlyZSBidWZmZXIgd2hlbiB3ZSBoaXQKLSAgICAgICAgICAvLyB0aGVzZSBjb25kaXRpb25zLgot
ICAgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykKLSAgICAgICAgICAgICAgPDwgIkZyYW1lIHdp
dGggKHRpbWVzdGFtcDpwaWN0dXJlX2lkOnNwYXRpYWxfaWQpICgiCi0gICAgICAgICAgICAgIDw8
IGZyYW1lLT5UaW1lc3RhbXAoKSA8PCAiOiIgPDwgZnJhbWUtPmlkLnBpY3R1cmVfaWQgPDwgIjoi
Ci0gICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oZnJhbWUtPmlkLnNwYXRpYWxfbGF5
ZXIpIDw8ICIpIgotICAgICAgICAgICAgICA8PCAiIHNlbnQgdG8gZGVjb2RlciBhZnRlciBmcmFt
ZSB3aXRoIgotICAgICAgICAgICAgICA8PCAiICh0aW1lc3RhbXA6cGljdHVyZV9pZDpzcGF0aWFs
X2lkKSAoIgotICAgICAgICAgICAgICA8PCBsYXN0X2RlY29kZWRfZnJhbWVfdGltZXN0YW1wXyA8
PCAiOiIKLSAgICAgICAgICAgICAgPDwgbGFzdF9kZWNvZGVkX2ZyYW1lX2tleS5waWN0dXJlX2lk
IDw8ICI6IgotICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KGxhc3RfZGVjb2RlZF9m
cmFtZV9rZXkuc3BhdGlhbF9sYXllcikgPDwgIikuIjsKLSAgICAgICAgfQotICAgICAgfQotCiAg
ICAgICBBZHZhbmNlTGFzdERlY29kZWRGcmFtZShuZXh0X2ZyYW1lX2l0Xyk7CiAgICAgICBsYXN0
X2RlY29kZWRfZnJhbWVfdGltZXN0YW1wXyA9IGZyYW1lLT5UaW1lc3RhbXAoKTsKICAgICAgICpm
cmFtZV9vdXQgPSBzdGQ6Om1vdmUoZnJhbWUpOwpAQCAtMjY3LDYgKzI0NywxMSBAQCB2b2lkIEZy
YW1lQnVmZmVyOjpTdG9wKCkgewogICBuZXdfY29udGludW91c19mcmFtZV9ldmVudF8uU2V0KCk7
CiB9CiAKK3ZvaWQgRnJhbWVCdWZmZXI6OkNsZWFyKCkgeworICBydGM6OkNyaXRTY29wZSBsb2Nr
KCZjcml0Xyk7CisgIENsZWFyRnJhbWVzQW5kSGlzdG9yeSgpOworfQorCiB2b2lkIEZyYW1lQnVm
ZmVyOjpVcGRhdGVSdHQoaW50NjRfdCBydHRfbXMpIHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygm
Y3JpdF8pOwogICBqaXR0ZXJfZXN0aW1hdG9yXy0+VXBkYXRlUnR0KHJ0dF9tcyk7CkBAIC0zNDgs
NyArMzMzLDcgQEAgaW50NjRfdCBGcmFtZUJ1ZmZlcjo6SW5zZXJ0RnJhbWUoc3RkOjp1bmlxdWVf
cHRyPEVuY29kZWRGcmFtZT4gZnJhbWUpIHsKIAogICBpZiAobGFzdF9kZWNvZGVkX2ZyYW1lX2l0
XyAhPSBmcmFtZXNfLmVuZCgpICYmCiAgICAgICBpZCA8PSBsYXN0X2RlY29kZWRfZnJhbWVfaXRf
LT5maXJzdCkgewotICAgIGlmIChBaGVhZE9mKGZyYW1lLT5UaW1lc3RhbXAoKSwgbGFzdF9kZWNv
ZGVkX2ZyYW1lX3RpbWVzdGFtcF8pICYmCisgICAgaWYgKEFoZWFkT2YoZnJhbWUtPlRpbWVzdGFt
cCgpLCAqbGFzdF9kZWNvZGVkX2ZyYW1lX3RpbWVzdGFtcF8pICYmCiAgICAgICAgIGZyYW1lLT5p
c19rZXlmcmFtZSgpKSB7CiAgICAgICAvLyBJZiB0aGlzIGZyYW1lIGhhcyBhIG5ld2VyIHRpbWVz
dGFtcCBidXQgYW4gZWFybGllciBwaWN0dXJlIGlkIHRoZW4gd2UKICAgICAgIC8vIGFzc3VtZSB0
aGVyZSBoYXMgYmVlbiBhIGp1bXAgaW4gdGhlIHBpY3R1cmUgaWQgZHVlIHRvIHNvbWUgZW5jb2Rl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVyMi5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVy
Mi5oCmluZGV4IGFlODRmY2Y5ZTZjMjkzODEwZDQ0NDMyZWYzYTAwOWRiNDFlZWY3NGUuLmRjNWU1
YTJlMzcyZmRjMTBhYzgwYWM2ZWU3MWY3NjljOGQ4NmM5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Zy
YW1lX2J1ZmZlcjIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyLmgKQEAgLTc5LDYgKzc5LDkg
QEAgY2xhc3MgRnJhbWVCdWZmZXIgewogICAvLyBVcGRhdGVzIHRoZSBSVFQgZm9yIGppdHRlciBi
dWZmZXIgZXN0aW1hdGlvbi4KICAgdm9pZCBVcGRhdGVSdHQoaW50NjRfdCBydHRfbXMpOwogCisg
IC8vIENsZWFycyB0aGUgRnJhbWVCdWZmZXIsIHJlbW92aW5nIGFsbCB0aGUgYnVmZmVyZWQgZnJh
bWVzLgorICB2b2lkIENsZWFyKCk7CisKICBwcml2YXRlOgogICBzdHJ1Y3QgRnJhbWVJbmZvIHsK
ICAgICBGcmFtZUluZm8oKTsKQEAgLTE2MSw3ICsxNjQsNyBAQCBjbGFzcyBGcmFtZUJ1ZmZlciB7
CiAgIFZDTUppdHRlckVzdGltYXRvciogY29uc3Qgaml0dGVyX2VzdGltYXRvcl8gUlRDX0dVQVJE
RURfQlkoY3JpdF8pOwogICBWQ01UaW1pbmcqIGNvbnN0IHRpbWluZ18gUlRDX0dVQVJERURfQlko
Y3JpdF8pOwogICBWQ01JbnRlckZyYW1lRGVsYXkgaW50ZXJfZnJhbWVfZGVsYXlfIFJUQ19HVUFS
REVEX0JZKGNyaXRfKTsKLSAgdWludDMyX3QgbGFzdF9kZWNvZGVkX2ZyYW1lX3RpbWVzdGFtcF8g
UlRDX0dVQVJERURfQlkoY3JpdF8pOworICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gbGFzdF9k
ZWNvZGVkX2ZyYW1lX3RpbWVzdGFtcF8gUlRDX0dVQVJERURfQlkoY3JpdF8pOwogICBGcmFtZU1h
cDo6aXRlcmF0b3IgbGFzdF9kZWNvZGVkX2ZyYW1lX2l0XyBSVENfR1VBUkRFRF9CWShjcml0Xyk7
CiAgIEZyYW1lTWFwOjppdGVyYXRvciBsYXN0X2NvbnRpbnVvdXNfZnJhbWVfaXRfIFJUQ19HVUFS
REVEX0JZKGNyaXRfKTsKICAgRnJhbWVNYXA6Oml0ZXJhdG9yIG5leHRfZnJhbWVfaXRfIFJUQ19H
VUFSREVEX0JZKGNyaXRfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjJfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyX3VuaXR0ZXN0LmNjCmluZGV4IDM1N2JhODY1NDA1
NTFmOTkyYWVkNTYxYzVmZjkxMzg1MzJkZTAyZDMuLmUxMGY3ODUyNzk1N2U3N2MwNzVhMGYwODI3
YjM3ZDZkN2JmNGNhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjJfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVyMl91bml0dGVzdC5jYwpAQCAtMTM3LDkgKzEzNyw3
IEBAIGNsYXNzIFRlc3RGcmFtZUJ1ZmZlcjIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXRzX2NhbGxiYWNrXykpLAogICAgICAg
ICByYW5kXygweDM0Njc4MjEzKSwKICAgICAgICAgdGVhcl9kb3duXyhmYWxzZSksCi0gICAgICAg
IGV4dHJhY3RfdGhyZWFkXygmRXh0cmFjdExvb3AsIHRoaXMsICJFeHRyYWN0IFRocmVhZCIpLAot
ICAgICAgICB0cmlnZ2VyX2V4dHJhY3RfZXZlbnRfKGZhbHNlLCBmYWxzZSksCi0gICAgICAgIGNy
aXRfYWNxdWlyZWRfZXZlbnRfKGZhbHNlLCBmYWxzZSkge30KKyAgICAgICAgZXh0cmFjdF90aHJl
YWRfKCZFeHRyYWN0TG9vcCwgdGhpcywgIkV4dHJhY3QgVGhyZWFkIikge30KIAogICB2b2lkIFNl
dFVwKCkgb3ZlcnJpZGUgeyBleHRyYWN0X3RocmVhZF8uU3RhcnQoKTsgfQogCkBAIC02MDAsNSAr
NTk4LDIxIEBAIFRFU1RfRihUZXN0RnJhbWVCdWZmZXIyLCBEb250VXBkYXRlT25VbmRlY29kYWJs
ZUZyYW1lKSB7CiAgIEV4dHJhY3RGcmFtZSgwLCB0cnVlKTsKIH0KIAorVEVTVF9GKFRlc3RGcmFt
ZUJ1ZmZlcjIsIERvbnREZWNvZGVPbGRlclRpbWVzdGFtcCkgeworICBJbnNlcnRGcmFtZSgyLCAw
LCAxLCBmYWxzZSk7CisgIEluc2VydEZyYW1lKDEsIDAsIDIsIGZhbHNlKTsgIC8vIE9sZGVyIHBp
Y3R1cmUgaWQgYnV0IG5ld2VyIHRpbWVzdGFtcC4KKyAgRXh0cmFjdEZyYW1lKDApOworICBFeHRy
YWN0RnJhbWUoMCk7CisgIENoZWNrRnJhbWUoMCwgMSwgMCk7CisgIENoZWNrTm9GcmFtZSgxKTsK
KworICBJbnNlcnRGcmFtZSgzLCAwLCA0LCBmYWxzZSk7CisgIEluc2VydEZyYW1lKDQsIDAsIDMs
IGZhbHNlKTsgIC8vIE5ld2VyIHBpY3R1cmUgaWQgYnV0IG9sZGVyIHRpbWVzdGFtcC4KKyAgRXh0
cmFjdEZyYW1lKDApOworICBFeHRyYWN0RnJhbWUoMCk7CisgIENoZWNrRnJhbWUoMiwgMywgMCk7
CisgIENoZWNrTm9GcmFtZSgzKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHZpZGVvX2NvZGluZwog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZ2VuZXJpY19lbmNvZGVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvZ2VuZXJpY19lbmNvZGVyLmNjCmluZGV4IGIxZDdjMjhhYmQyNDczMzczOGY2
MDg3ZjhjOTM5M2FhMDVmZWUwYjMuLmQ1Y2MwYThiYTA2OGRjZmRmZWY1ZWFmMjRkNzg5MTExNTZl
YmI5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2dlbmVyaWNfZW5jb2Rlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9n
ZW5lcmljX2VuY29kZXIuY2MKQEAgLTEwMSwyNiArMTAxLDE0IEBAIGludDMyX3QgVkNNR2VuZXJp
Y0VuY29kZXI6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwKIAogdm9pZCBWQ01HZW5l
cmljRW5jb2Rlcjo6U2V0RW5jb2RlclBhcmFtZXRlcnMoY29uc3QgRW5jb2RlclBhcmFtZXRlcnMm
IHBhcmFtcykgewogICBSVENfRENIRUNLX1JVTlNfU0VSSUFMSVpFRCgmcmFjZV9jaGVja2VyXyk7
Ci0gIGJvb2wgY2hhbm5lbF9wYXJhbWV0ZXJzX2hhdmVfY2hhbmdlZDsKICAgYm9vbCByYXRlc19o
YXZlX2NoYW5nZWQ7CiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZwYXJhbXNfbG9ja18p
OwotICAgIGNoYW5uZWxfcGFyYW1ldGVyc19oYXZlX2NoYW5nZWQgPQotICAgICAgICBwYXJhbXMu
bG9zc19yYXRlICE9IGVuY29kZXJfcGFyYW1zXy5sb3NzX3JhdGUgfHwKLSAgICAgICAgcGFyYW1z
LnJ0dCAhPSBlbmNvZGVyX3BhcmFtc18ucnR0OwogICAgIHJhdGVzX2hhdmVfY2hhbmdlZCA9CiAg
ICAgICAgIHBhcmFtcy50YXJnZXRfYml0cmF0ZSAhPSBlbmNvZGVyX3BhcmFtc18udGFyZ2V0X2Jp
dHJhdGUgfHwKICAgICAgICAgcGFyYW1zLmlucHV0X2ZyYW1lX3JhdGUgIT0gZW5jb2Rlcl9wYXJh
bXNfLmlucHV0X2ZyYW1lX3JhdGU7CiAgICAgZW5jb2Rlcl9wYXJhbXNfID0gcGFyYW1zOwogICB9
Ci0gIGlmIChjaGFubmVsX3BhcmFtZXRlcnNfaGF2ZV9jaGFuZ2VkKSB7Ci0gICAgaW50IHJlcyA9
IGVuY29kZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYXJhbXMubG9zc19yYXRlLCBwYXJhbXMu
cnR0KTsKLSAgICBpZiAocmVzICE9IDApIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwg
IkVycm9yIHNldCBlbmNvZGVyIHBhcmFtZXRlcnMgKGxvc3MgPSAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IHBhcmFtcy5sb3NzX3JhdGUgPDwgIiwgcnR0ID0gIiA8PCBwYXJhbXMucnR0
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIpOiAiIDw8IHJlczsKLSAgICB9Ci0gIH0K
ICAgaWYgKHJhdGVzX2hhdmVfY2hhbmdlZCkgewogICAgIGludCByZXMgPSBlbmNvZGVyXy0+U2V0
UmF0ZUFsbG9jYXRpb24ocGFyYW1zLnRhcmdldF9iaXRyYXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmlucHV0X2ZyYW1lX3JhdGUpOwpAQCAtMTY0
LDkgKzE1Miw5IEBAIGJvb2wgVkNNR2VuZXJpY0VuY29kZXI6OkludGVybmFsU291cmNlKCkgY29u
c3QgewogICByZXR1cm4gaW50ZXJuYWxfc291cmNlXzsKIH0KIAotYm9vbCBWQ01HZW5lcmljRW5j
b2Rlcjo6U3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCB7CitWaWRlb0VuY29kZXI6OkVuY29k
ZXJJbmZvIFZDTUdlbmVyaWNFbmNvZGVyOjpHZXRFbmNvZGVySW5mbygpIGNvbnN0IHsKICAgUlRD
X0RDSEVDS19SVU5TX1NFUklBTElaRUQoJnJhY2VfY2hlY2tlcl8pOwotICByZXR1cm4gZW5jb2Rl
cl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCk7CisgIHJldHVybiBlbmNvZGVyXy0+R2V0RW5jb2Rl
ckluZm8oKTsKIH0KIAogVkNNRW5jb2RlZEZyYW1lQ2FsbGJhY2s6OlZDTUVuY29kZWRGcmFtZUNh
bGxiYWNrKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZ2VuZXJpY19lbmNvZGVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9nZW5l
cmljX2VuY29kZXIuaAppbmRleCAxNTFlOTNlNDk3NTk3OTYwOTVhZWRmZWVmOWE0MGQxM2I0MTBh
ZDljLi4yZjg0MWIzNGRkODE1ZDI5OTVlNDhiNGFjOTY4MTNiMGYwODc0ZGQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9nZW5lcmljX2VuY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9nZW5lcmljX2VuY29kZXIuaApA
QCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIFZDTUdlbmVyaWNFbmNvZGVyIHsKIAogICBpbnQzMl90
IFJlcXVlc3RGcmFtZShjb25zdCBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+JiBmcmFtZV90eXBlcyk7
CiAgIGJvb2wgSW50ZXJuYWxTb3VyY2UoKSBjb25zdDsKLSAgYm9vbCBTdXBwb3J0c05hdGl2ZUhh
bmRsZSgpIGNvbnN0OworICBWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZv
KCkgY29uc3Q7CiAKICBwcml2YXRlOgogICBydGM6OlJhY2VDaGVja2VyIHJhY2VfY2hlY2tlcl87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL21vY2svbW9ja192aWRlb19jb2RlY19pbnRlcmZh
Y2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2luY2x1ZGUvbW9jay9tb2NrX3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oCmlu
ZGV4IGMyOWVmZWVhZDY4ZDQ2MzBjMzkxN2I2MTBiYTM1MTgyYWIxNDQ5M2MuLjdkMDAzNTkxZWEz
ZDk1Y2M3ZWE3NDQxMDNkYTM5ZDQyNjdiNzEwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUv
bW9jay9tb2NrX3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvbW9j
ay9tb2NrX3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oCkBAIC0xOSw2ICsxOSw4IEBACiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCisvLyBOT1RFOiBEZXByZWNhdGVkIGZpbGUsIGluY2x1ZGUgYXBpL21v
Y2tfdmlkZW9fKGVuY29kZXJ8ZGVjb2RlcikuaCBpbnN0ZWFkLgorCiBjbGFzcyBNb2NrRW5jb2Rl
ZEltYWdlQ2FsbGJhY2sgOiBwdWJsaWMgRW5jb2RlZEltYWdlQ2FsbGJhY2sgewogIHB1YmxpYzoK
ICAgTU9DS19NRVRIT0QzKE9uRW5jb2RlZEltYWdlLApAQCAtNDIsNyArNDQsNiBAQCBjbGFzcyBN
b2NrVmlkZW9FbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgICAgICAgICAgICAgICBp
bnQzMl90KEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykpOwogICBNT0NLX01FVEhPRDAo
UmVsZWFzZSwgaW50MzJfdCgpKTsKICAgTU9DS19NRVRIT0QwKFJlc2V0LCBpbnQzMl90KCkpOwot
ICBNT0NLX01FVEhPRDIoU2V0Q2hhbm5lbFBhcmFtZXRlcnMsIGludDMyX3QodWludDMyX3QgcGFj
a2V0TG9zcywgaW50NjRfdCBydHQpKTsKICAgTU9DS19NRVRIT0QyKFNldFJhdGVzLCBpbnQzMl90
KHVpbnQzMl90IG5ld0JpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkpOwogICBNT0NLX01FVEhP
RDIoU2V0UmF0ZUFsbG9jYXRpb24sCiAgICAgICAgICAgICAgICBpbnQzMl90KGNvbnN0IFZpZGVv
Qml0cmF0ZUFsbG9jYXRpb24mIG5ld0JpdFJhdGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRl
L3ZpZGVvX2NvZGVjX2luaXRpYWxpemVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2lu
aXRpYWxpemVyLmgKaW5kZXggZWU3MDgxMGY2MmVkNzNkMzU4NDkxYjE3MjE2Y2EzMjEwNzEzYjdi
OS4uZTk3OWY5Yzg2Nzc2ZTJiOWVkYmU3NDZiZDZkOTU4MjNkYmM5MjNkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbml0aWFsaXplci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1
ZGUvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIuaApAQCAtMzAsMTUgKzMwLDkgQEAgY2xhc3MgVmlk
ZW9Db2RlY0luaXRpYWxpemVyIHsKICAgLy8gdHlwZSB1c2VkLiBGb3IgaW5zdGFuY2UsIFZQOCB3
aWxsIGNyZWF0ZSBhbiBhbGxvY2F0b3IgdGhhbiBjYW4gaGFuZGxlCiAgIC8vIHNpbXVsY2FzdCBh
bmQgdGVtcG9yYWwgbGF5ZXJpbmcuCiAgIC8vIEdldEJpdHJhdGVBbGxvY2F0b3IgaXMgY2FsbGVk
IGltcGxpY2l0bHkgZnJvbSBoZXJlLCBubyBuZWVkIHRvIGNhbGwgYWdhaW4uCi0gIHN0YXRpYyBi
b29sIFNldHVwQ29kZWMoCi0gICAgICBjb25zdCBWaWRlb0VuY29kZXJDb25maWcmIGNvbmZpZywK
LSAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiYgc3RyZWFtcywKLSAgICAgIFZp
ZGVvQ29kZWMqIGNvZGVjLAotICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9j
YXRvcj4qIGJpdHJhdGVfYWxsb2NhdG9yKTsKLQotICAvLyBDcmVhdGUgYSBiaXRyYXRlIGFsbG9j
YXRvciBmb3IgdGhlIHNwZWNpZmllZCBjb2RlYy4KLSAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0JpdHJhdGVBbGxvY2F0b3I+IENyZWF0ZUJpdHJhdGVBbGxvY2F0b3IoCi0gICAgICBjb25z
dCBWaWRlb0NvZGVjJiBjb2RlYyk7CisgIHN0YXRpYyBib29sIFNldHVwQ29kZWMoY29uc3QgVmlk
ZW9FbmNvZGVyQ29uZmlnJiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+JiBzdHJlYW1zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFZpZGVvQ29kZWMqIGNvZGVjKTsKIAogIHByaXZhdGU6CiAgIHN0YXRpYyBWaWRlb0NvZGVj
IFZpZGVvRW5jb2RlckNvbmZpZ1RvVmlkZW9Db2RlYygKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1
ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2lu
dGVyZmFjZS5oCmluZGV4IGQyYmFkZjkyMDFiMjFlZTRhYTMyNjM4NmQyMDFjNDk1NDFhMTliNGUu
LjM4NTgzYmZhM2I0MTBjNjI4NWIzMmNmMmI5NjU0YjdlMDc2ZjJmOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92
aWRlb19jb2RlY19pbnRlcmZhY2UuaApAQCAtNzksNiArNzksNyBAQCBzdHJ1Y3QgQ29kZWNTcGVj
aWZpY0luZm8gewogICAgIG1lbXNldCgmY29kZWNTcGVjaWZpYywgMCwgc2l6ZW9mKGNvZGVjU3Bl
Y2lmaWMpKTsKICAgfQogICBWaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGU7CisgIC8vIHxjb2RlY19u
YW1lfCBpcyBkZXByZWNhdGVkLCB1c2UgbmFtZSBwcm92aWRlZCBieSBWaWRlb0VuY29kZXIgaW5z
dGVhZC4KICAgY29uc3QgY2hhciogY29kZWNfbmFtZTsKICAgQ29kZWNTcGVjaWZpY0luZm9Vbmlv
biBjb2RlY1NwZWNpZmljOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29k
aW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZy5oCmluZGV4IDhlZjA0NmFhMjMxOTNm
N2YzMGYyYjFlY2RlZDExZmY3M2M4MzRkNjUuLjA4ODliMjMxZGVhMzQ3Y2NlMDQ3YzA1NDdkYmVh
N2NlODA1MzQxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RpbmcuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUv
bW9kdWxlX2NvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2lu
Y2x1ZGUvdmlkZW9fY29kaW5nX2RlZmluZXMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNh
dGlvbi5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zNywyMCArMzgsNiBAQCBjbGFzcyBWaWRlb0Rl
Y29kZXI7CiBjbGFzcyBWaWRlb0VuY29kZXI7CiBzdHJ1Y3QgQ29kZWNTcGVjaWZpY0luZm87CiAK
LWNsYXNzIEV2ZW50RmFjdG9yeSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5FdmVudEZhY3Rvcnko
KSB7fQotCi0gIHZpcnR1YWwgRXZlbnRXcmFwcGVyKiBDcmVhdGVFdmVudCgpID0gMDsKLX07Ci0K
LWNsYXNzIEV2ZW50RmFjdG9yeUltcGwgOiBwdWJsaWMgRXZlbnRGYWN0b3J5IHsKLSBwdWJsaWM6
Ci0gIH5FdmVudEZhY3RvcnlJbXBsKCkgb3ZlcnJpZGUge30KLQotICBFdmVudFdyYXBwZXIqIENy
ZWF0ZUV2ZW50KCkgb3ZlcnJpZGU7Ci19OwotCiAvLyBVc2VkIHRvIGluZGljYXRlIHdoaWNoIGRl
Y29kZSB3aXRoIGVycm9ycyBtb2RlIHNob3VsZCBiZSB1c2VkLgogZW51bSBWQ01EZWNvZGVFcnJv
ck1vZGUgewogICBrTm9FcnJvcnMsICAgICAgICAgLy8gTmV2ZXIgZGVjb2RlIHdpdGggZXJyb3Jz
LiBWaWRlbyB3aWxsIGZyZWV6ZQpAQCAtNjksNyArNTYsNyBAQCBjbGFzcyBWaWRlb0NvZGluZ01v
ZHVsZSA6IHB1YmxpYyBNb2R1bGUgewogICBlbnVtIFNlbmRlck5hY2tNb2RlIHsga05hY2tOb25l
LCBrTmFja0FsbCwga05hY2tTZWxlY3RpdmUgfTsKIAogICAvLyBERVBSRUNBVEVELgotICBzdGF0
aWMgVmlkZW9Db2RpbmdNb2R1bGUqIENyZWF0ZShDbG9jayogY2xvY2ssIEV2ZW50RmFjdG9yeSog
ZXZlbnRfZmFjdG9yeSk7CisgIHN0YXRpYyBWaWRlb0NvZGluZ01vZHVsZSogQ3JlYXRlKENsb2Nr
KiBjbG9jayk7CiAKICAgLyoKICAgICogICBTZW5kZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1
ZGUvdmlkZW9fY29kaW5nX2RlZmluZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nX2Rl
ZmluZXMuaAppbmRleCA3ZmI2ZjU4MzY0NzczZjhmYTgxODM5NmUxY2I3ZjY4NGY4ZWRiMDZmLi43
YmJjOThmZDQ4MzFhOGUyOGE0NDBjZWU5YWQyN2Y2ODI2OTYwYzE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9pbmNsdWRlL3ZpZGVvX2NvZGluZ19kZWZpbmVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRl
b19jb2RpbmdfZGVmaW5lcy5oCkBAIC0xNSw4ICsxNSw2IEBACiAjaW5jbHVkZSA8dmVjdG9yPgog
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCi0vLyBGb3IgRW5jb2RlZEltYWdl
Ci0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKQEAgLTQzLDcgKzQxLDcgQEAgZW51bSB7CiAgIC8vIHxrRGVmYXVsdFRpbWluZ0ZyYW1l
c0RlbGF5TXN8LCBvciBpZiB0aGUgZnJhbWUgaXMgYXQgbGVhc3QKICAgLy8gfGtEZWZhdWx0T3V0
bGlzZXJGcmFtZVNpemVQZXJjZW50fCBpbiBzaXplIG9mIGF2ZXJhZ2UgZnJhbWUuCiAgIGtEZWZh
dWx0VGltaW5nRnJhbWVzRGVsYXlNcyA9IDIwMCwKLSAga0RlZmF1bHRPdXRsaWVyRnJhbWVTaXpl
UGVyY2VudCA9IDI1MCwKKyAga0RlZmF1bHRPdXRsaWVyRnJhbWVTaXplUGVyY2VudCA9IDUwMCwK
ICAgLy8gTWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIGZvciB3aGF0IHdlIHN0b3JlIGVuY29kZSBz
dGFydCB0aW1pbmcgaW5mb3JtYXRpb24uCiAgIGtNYXhFbmNvZGVTdGFydFRpbWVMaXN0U2l6ZSA9
IDUwLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9idWZmZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRl
cl9idWZmZXIuaAppbmRleCBmNjQ5YWRjOGIzYWIzNTkzMDRhZDFjNWNjYmNlM2IyNDZmODg0ODAw
Li40ODI2Mjc2MDQ1NTNjZDMyMTIyMmYyYmRhODRkNmNlNWQ5NzU5MDQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9qaXR0ZXJfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2J1ZmZlci5oCkBAIC0zNSw3
ICszNSw2IEBAIGVudW0gVkNNTmFja01vZGUgeyBrTmFjaywga05vTmFjayB9OwogCiAvLyBmb3J3
YXJkIGRlY2xhcmF0aW9ucwogY2xhc3MgQ2xvY2s7Ci1jbGFzcyBFdmVudEZhY3Rvcnk7CiBjbGFz
cyBFdmVudFdyYXBwZXI7CiBjbGFzcyBWQ01GcmFtZUJ1ZmZlcjsKIGNsYXNzIFZDTVBhY2tldDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9idWZmZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0
ZXJfYnVmZmVyX3VuaXR0ZXN0LmNjCmluZGV4IDZhZTY1ZDYyZTk4NmM3MjhjYWQ5OGQ0N2Q0ZWFj
YmJiMWVjYjZkMGMuLjNlZDE4YTkzODY1MGI3YmUwZGNkYzY1MzllY2ViZDI2MWEwYmVlNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9idWZmZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0
dGVyX2J1ZmZlcl91bml0dGVzdC5jYwpAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL21lZGlhX29wdF91dGlsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvcGFja2V0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdGVzdC9z
dHJlYW1fZ2VuZXJhdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdGVzdC90
ZXN0X3V0aWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgogI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJz
L2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKQEAgLTIyMCw5ICsyMTksNyBAQCBjbGFzcyBUZXN0QmFz
aWNKaXR0ZXJCdWZmZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6c3Ry
aW5nPiwKICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsKICAgICBjbG9ja18ucmVzZXQobmV3IFNp
bXVsYXRlZENsb2NrKDApKTsKICAgICBqaXR0ZXJfYnVmZmVyXy5yZXNldChuZXcgVkNNSml0dGVy
QnVmZmVyKAotICAgICAgICBjbG9ja18uZ2V0KCksCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxF
dmVudFdyYXBwZXI+KGV2ZW50X2ZhY3RvcnlfLkNyZWF0ZUV2ZW50KCkpLCB0aGlzLAotICAgICAg
ICB0aGlzKSk7CisgICAgICAgIGNsb2NrXy5nZXQoKSwgYWJzbDo6V3JhcFVuaXF1ZShFdmVudFdy
YXBwZXI6OkNyZWF0ZSgpKSwgdGhpcywgdGhpcykpOwogICAgIGppdHRlcl9idWZmZXJfLT5TdGFy
dCgpOwogICAgIHNlcV9udW1fID0gMTIzNDsKICAgICB0aW1lc3RhbXBfID0gMDsKQEAgLTMxMyw3
ICszMTAsNiBAQCBjbGFzcyBUZXN0QmFzaWNKaXR0ZXJCdWZmZXIgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiwKICAgdWludDhfdCBkYXRhX1sxNTAwXTsKICAg
c3RkOjp1bmlxdWVfcHRyPFZDTVBhY2tldD4gcGFja2V0XzsKICAgc3RkOjp1bmlxdWVfcHRyPFNp
bXVsYXRlZENsb2NrPiBjbG9ja187Ci0gIE51bGxFdmVudEZhY3RvcnkgZXZlbnRfZmFjdG9yeV87
CiAgIHN0ZDo6dW5pcXVlX3B0cjxWQ01KaXR0ZXJCdWZmZXI+IGppdHRlcl9idWZmZXJfOwogfTsK
IApAQCAtMzM5LDkgKzMzNSw3IEBAIGNsYXNzIFRlc3RSdW5uaW5nSml0dGVyQnVmZmVyIDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4sCiAgICAgbWF4X25hY2tf
bGlzdF9zaXplXyA9IDE1MDsKICAgICBvbGRlc3RfcGFja2V0X3RvX25hY2tfID0gMjUwOwogICAg
IGppdHRlcl9idWZmZXJfID0gbmV3IFZDTUppdHRlckJ1ZmZlcigKLSAgICAgICAgY2xvY2tfLmdl
dCgpLAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPihldmVudF9mYWN0b3J5
Xy5DcmVhdGVFdmVudCgpKSwgdGhpcywKLSAgICAgICAgdGhpcyk7CisgICAgICAgIGNsb2NrXy5n
ZXQoKSwgYWJzbDo6V3JhcFVuaXF1ZShFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSwgdGhpcywgdGhp
cyk7CiAgICAgc3RyZWFtX2dlbmVyYXRvcl8gPSBuZXcgU3RyZWFtR2VuZXJhdG9yKDAsIGNsb2Nr
Xy0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwogICAgIGppdHRlcl9idWZmZXJfLT5TdGFydCgpOwog
ICAgIGppdHRlcl9idWZmZXJfLT5TZXROYWNrU2V0dGluZ3MobWF4X25hY2tfbGlzdF9zaXplXywg
b2xkZXN0X3BhY2tldF90b19uYWNrXywKQEAgLTQzMyw3ICs0MjcsNiBAQCBjbGFzcyBUZXN0UnVu
bmluZ0ppdHRlckJ1ZmZlciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08c3RkOjpz
dHJpbmc+LAogICBWQ01KaXR0ZXJCdWZmZXIqIGppdHRlcl9idWZmZXJfOwogICBTdHJlYW1HZW5l
cmF0b3IqIHN0cmVhbV9nZW5lcmF0b3JfOwogICBzdGQ6OnVuaXF1ZV9wdHI8U2ltdWxhdGVkQ2xv
Y2s+IGNsb2NrXzsKLSAgTnVsbEV2ZW50RmFjdG9yeSBldmVudF9mYWN0b3J5XzsKICAgc2l6ZV90
IG1heF9uYWNrX2xpc3Rfc2l6ZV87CiAgIGludCBvbGRlc3RfcGFja2V0X3RvX25hY2tfOwogICB1
aW50OF90IGRhdGFfYnVmZmVyX1trRGF0YUJ1ZmZlclNpemVdOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
aml0dGVyX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3IuY2MKaW5kZXggNWU3
NTRmMTA4ODVlZGM2NjU1ZTJlNzE1MmE0NDdiZWQ0MDM4NTk3Yi4uMGQwZmFjNzI5MWU4ZmRkZDQx
ZGM2YjM1NWE5MzVmNjQ5NmQxNjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2VzdGltYXRv
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmNjCkBAIC0xNCwxOCArMTQsMjQgQEAK
ICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5n
Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9p
bnRlcm5hbF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvcnR0X2Zp
bHRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2ppdHRlcl91cHBlcl9ib3Vu
ZF9leHBlcmltZW50LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2su
aCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKLQotZW51bSB7IGtTdGFydHVwRGVsYXlTYW1wbGVzID0gMzAgfTsK
LWVudW0geyBrRnNBY2N1U3RhcnR1cFNhbXBsZXMgPSA1IH07Ci1lbnVtIHsga01heEZyYW1lcmF0
ZUVzdGltYXRlID0gMjAwIH07CituYW1lc3BhY2Ugeworc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBrU3RhcnR1cERlbGF5U2FtcGxlcyA9IDMwOworc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IGtG
c0FjY3VTdGFydHVwU2FtcGxlcyA9IDU7CitzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrTWF4RnJh
bWVyYXRlRXN0aW1hdGUgPSAyMDAuMDsKK3N0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBrTmFja0Nv
dW50VGltZW91dE1zID0gNjAwMDA7CitzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrRGVmYXVsdE1h
eFRpbWVzdGFtcERldmlhdGlvbkluU2lnbWFzID0gMy41OworfSAgLy8gbmFtZXNwYWNlCiAKIFZD
TUppdHRlckVzdGltYXRvcjo6VkNNSml0dGVyRXN0aW1hdG9yKGNvbnN0IENsb2NrKiBjbG9jaywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgdmNtSWQsCkBA
IC00NSw3ICs1MSw5IEBAIFZDTUppdHRlckVzdGltYXRvcjo6VkNNSml0dGVyRXN0aW1hdG9yKGNv
bnN0IENsb2NrKiBjbG9jaywKICAgICAgIF9ydHRGaWx0ZXIoKSwKICAgICAgIGZwc19jb3VudGVy
XygzMCksICAvLyBUT0RPKHNwcmFuZyk6IFVzZSBhbiBlc3RpbWF0b3Igd2l0aCBsaW1pdCBiYXNl
ZCBvbgogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRpbWUsIHJhdGhlciB0aGFuIG51bWJl
ciBvZiBzYW1wbGVzLgotICAgICAgbG93X3JhdGVfZXhwZXJpbWVudF8oa0luaXQpLAorICAgICAg
dGltZV9kZXZpYXRpb25fdXBwZXJfYm91bmRfKAorICAgICAgICAgIEppdHRlclVwcGVyQm91bmRF
eHBlcmltZW50OjpHZXRVcHBlckJvdW5kU2lnbWFzKCkudmFsdWVfb3IoCisgICAgICAgICAgICAg
IGtEZWZhdWx0TWF4VGltZXN0YW1wRGV2aWF0aW9uSW5TaWdtYXMpKSwKICAgICAgIGNsb2NrXyhj
bG9jaykgewogICBSZXNldCgpOwogfQpAQCAtNzUsNiArODMsNyBAQCBWQ01KaXR0ZXJFc3RpbWF0
b3ImIFZDTUppdHRlckVzdGltYXRvcjo6b3BlcmF0b3I9KAogICAgIF9sYXRlc3ROYWNrVGltZXN0
YW1wID0gcmhzLl9sYXRlc3ROYWNrVGltZXN0YW1wOwogICAgIF9uYWNrQ291bnQgPSByaHMuX25h
Y2tDb3VudDsKICAgICBfcnR0RmlsdGVyID0gcmhzLl9ydHRGaWx0ZXI7CisgICAgY2xvY2tfID0g
cmhzLmNsb2NrXzsKICAgfQogICByZXR1cm4gKnRoaXM7CiB9CkBAIC0xMDIsNiArMTExLDcgQEAg
dm9pZCBWQ01KaXR0ZXJFc3RpbWF0b3I6OlJlc2V0KCkgewogICBfZmlsdGVySml0dGVyRXN0aW1h
dGUgPSAwLjA7CiAgIF9sYXRlc3ROYWNrVGltZXN0YW1wID0gMDsKICAgX25hY2tDb3VudCA9IDA7
CisgIF9sYXRlc3ROYWNrVGltZXN0YW1wID0gMDsKICAgX2ZzU3VtID0gMDsKICAgX2ZzQ291bnQg
PSAwOwogICBfc3RhcnR1cENvdW50ID0gMDsKQEAgLTE1NSw2ICsxNjUsMTIgQEAgdm9pZCBWQ01K
aXR0ZXJFc3RpbWF0b3I6OlVwZGF0ZUVzdGltYXRlKGludDY0X3QgZnJhbWVEZWxheU1TLAogICB9
CiAgIF9wcmV2RnJhbWVTaXplID0gZnJhbWVTaXplQnl0ZXM7CiAKKyAgLy8gQ2FwIGZyYW1lRGVs
YXlNUyBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lIGRldmlhdGlvbiBub2lzZS4KKyAgaW50NjRf
dCBtYXhfdGltZV9kZXZpYXRpb25fbXMgPQorICAgICAgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGlt
ZV9kZXZpYXRpb25fdXBwZXJfYm91bmRfICogc3FydChfdmFyTm9pc2UpICsgMC41KTsKKyAgZnJh
bWVEZWxheU1TID0gc3RkOjptYXgoc3RkOjptaW4oZnJhbWVEZWxheU1TLCBtYXhfdGltZV9kZXZp
YXRpb25fbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAtbWF4X3RpbWVfZGV2aWF0aW9u
X21zKTsKKwogICAvLyBPbmx5IHVwZGF0ZSB0aGUgS2FsbWFuIGZpbHRlciBpZiB0aGUgc2FtcGxl
IGlzIG5vdCBjb25zaWRlcmVkCiAgIC8vIGFuIGV4dHJlbWUgb3V0bGllci4gRXZlbiBpZiBpdCBp
cyBhbiBleHRyZW1lIG91dGxpZXIgZnJvbSBhCiAgIC8vIGRlbGF5IHBvaW50IG9mIHZpZXcsIGlm
IHRoZSBmcmFtZSBzaXplIGFsc28gaXMgbGFyZ2UgdGhlCkBAIC0xOTMsMTUgKzIwOSwxMCBAQCB2
b2lkIFZDTUppdHRlckVzdGltYXRvcjo6VXBkYXRlRXN0aW1hdGUoaW50NjRfdCBmcmFtZURlbGF5
TVMsCiAKIC8vIFVwZGF0ZXMgdGhlIG5hY2svcGFja2V0IHJhdGlvCiB2b2lkIFZDTUppdHRlckVz
dGltYXRvcjo6RnJhbWVOYWNrZWQoKSB7Ci0gIC8vIFdhaXQgdW50aWwgX25hY2tMaW1pdCByZXRy
YW5zbWlzc2lvbnMgaGFzIGJlZW4gcmVjZWl2ZWQsCi0gIC8vIHRoZW4gYWx3YXlzIGFkZCB+MSBS
VFQgZGVsYXkuCi0gIC8vIFRPRE8oaG9sbWVyKTogU2hvdWxkIHdlIGV2ZXIgcmVtb3ZlIHRoZSBh
ZGRpdGlvbmFsIGRlbGF5IGlmIHRoZQotICAvLyB0aGUgcGFja2V0IGxvc3NlcyBzZWVtIHRvIGhh
dmUgc3RvcHBlZD8gV2UgY291bGQgZm9yIGluc3RhbmNlIHNjYWxlCi0gIC8vIHRoZSBudW1iZXIg
b2YgUlRUcyB0byBhZGQgd2l0aCB0aGUgYW1vdW50IG9mIHJldHJhbnNtaXNzaW9ucyBpbiBhIGdp
dmVuCi0gIC8vIHRpbWUgaW50ZXJ2YWwsIG9yIHNpbWlsYXIuCiAgIGlmIChfbmFja0NvdW50IDwg
X25hY2tMaW1pdCkgewogICAgIF9uYWNrQ291bnQrKzsKICAgfQorICBfbGF0ZXN0TmFja1RpbWVz
dGFtcCA9IGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCk7CiB9CiAKIC8vIFVwZGF0ZXMgS2Fs
bWFuIGVzdGltYXRlIG9mIHRoZSBjaGFubmVsCkBAIC0zMDksMjIgKzMyMCwyMCBAQCB2b2lkIFZD
TUppdHRlckVzdGltYXRvcjo6RXN0aW1hdGVSYW5kb21KaXR0ZXIoZG91YmxlIGRfZFQsCiAgIGlm
IChfYWxwaGFDb3VudCA+IF9hbHBoYUNvdW50TWF4KQogICAgIF9hbHBoYUNvdW50ID0gX2FscGhh
Q291bnRNYXg7CiAKLSAgaWYgKExvd1JhdGVFeHBlcmltZW50RW5hYmxlZCgpKSB7Ci0gICAgLy8g
SW4gb3JkZXIgdG8gYXZvaWQgYSBsb3cgZnJhbWUgcmF0ZSBzdHJlYW0gdG8gcmVhY3Qgc2xvd2Vy
IHRvIGNoYW5nZXMsCi0gICAgLy8gc2NhbGUgdGhlIGFscGhhIHdlaWdodCByZWxhdGl2ZSBhIDMw
IGZwcyBzdHJlYW0uCi0gICAgZG91YmxlIGZwcyA9IEdldEZyYW1lUmF0ZSgpOwotICAgIGlmIChm
cHMgPiAwLjApIHsKLSAgICAgIGRvdWJsZSByYXRlX3NjYWxlID0gMzAuMCAvIGZwczsKLSAgICAg
IC8vIEF0IHN0YXJ0dXAsIHRoZXJlIGNhbiBiZSBhIGxvdCBvZiBub2lzZSBpbiB0aGUgZnBzIGVz
dGltYXRlLgotICAgICAgLy8gSW50ZXJwb2xhdGUgcmF0ZV9zY2FsZSBsaW5lYXJseSwgZnJvbSAx
LjAgYXQgc2FtcGxlICMxLCB0byAzMC4wIC8gZnBzCi0gICAgICAvLyBhdCBzYW1wbGUgI2tTdGFy
dHVwRGVsYXlTYW1wbGVzLgotICAgICAgaWYgKF9hbHBoYUNvdW50IDwga1N0YXJ0dXBEZWxheVNh
bXBsZXMpIHsKLSAgICAgICAgcmF0ZV9zY2FsZSA9Ci0gICAgICAgICAgICAoX2FscGhhQ291bnQg
KiByYXRlX3NjYWxlICsgKGtTdGFydHVwRGVsYXlTYW1wbGVzIC0gX2FscGhhQ291bnQpKSAvCi0g
ICAgICAgICAgICBrU3RhcnR1cERlbGF5U2FtcGxlczsKLSAgICAgIH0KLSAgICAgIGFscGhhID0g
cG93KGFscGhhLCByYXRlX3NjYWxlKTsKKyAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgYSBsb3cgZnJh
bWUgcmF0ZSBzdHJlYW0gdG8gcmVhY3Qgc2xvd2VyIHRvIGNoYW5nZXMsCisgIC8vIHNjYWxlIHRo
ZSBhbHBoYSB3ZWlnaHQgcmVsYXRpdmUgYSAzMCBmcHMgc3RyZWFtLgorICBkb3VibGUgZnBzID0g
R2V0RnJhbWVSYXRlKCk7CisgIGlmIChmcHMgPiAwLjApIHsKKyAgICBkb3VibGUgcmF0ZV9zY2Fs
ZSA9IDMwLjAgLyBmcHM7CisgICAgLy8gQXQgc3RhcnR1cCwgdGhlcmUgY2FuIGJlIGEgbG90IG9m
IG5vaXNlIGluIHRoZSBmcHMgZXN0aW1hdGUuCisgICAgLy8gSW50ZXJwb2xhdGUgcmF0ZV9zY2Fs
ZSBsaW5lYXJseSwgZnJvbSAxLjAgYXQgc2FtcGxlICMxLCB0byAzMC4wIC8gZnBzCisgICAgLy8g
YXQgc2FtcGxlICNrU3RhcnR1cERlbGF5U2FtcGxlcy4KKyAgICBpZiAoX2FscGhhQ291bnQgPCBr
U3RhcnR1cERlbGF5U2FtcGxlcykgeworICAgICAgcmF0ZV9zY2FsZSA9CisgICAgICAgICAgKF9h
bHBoYUNvdW50ICogcmF0ZV9zY2FsZSArIChrU3RhcnR1cERlbGF5U2FtcGxlcyAtIF9hbHBoYUNv
dW50KSkgLworICAgICAgICAgIGtTdGFydHVwRGVsYXlTYW1wbGVzOwogICAgIH0KKyAgICBhbHBo
YSA9IHBvdyhhbHBoYSwgcmF0ZV9zY2FsZSk7CiAgIH0KIAogICBkb3VibGUgYXZnTm9pc2UgPSBh
bHBoYSAqIF9hdmdOb2lzZSArICgxIC0gYWxwaGEpICogZF9kVDsKQEAgLTM4Niw0NiArMzk1LDM1
IEBAIHZvaWQgVkNNSml0dGVyRXN0aW1hdG9yOjpVcGRhdGVNYXhGcmFtZVNpemUodWludDMyX3Qg
ZnJhbWVTaXplQnl0ZXMpIHsKIC8vIG90aGVyd2lzZSB0cmllcyB0byBjYWxjdWxhdGUgYW4gZXN0
aW1hdGUuCiBpbnQgVkNNSml0dGVyRXN0aW1hdG9yOjpHZXRKaXR0ZXJFc3RpbWF0ZShkb3VibGUg
cnR0TXVsdGlwbGllcikgewogICBkb3VibGUgaml0dGVyTVMgPSBDYWxjdWxhdGVFc3RpbWF0ZSgp
ICsgT1BFUkFUSU5HX1NZU1RFTV9KSVRURVI7CisgIHVpbnQ2NF90IG5vdyA9IGNsb2NrXy0+VGlt
ZUluTWljcm9zZWNvbmRzKCk7CisKKyAgaWYgKG5vdyAtIF9sYXRlc3ROYWNrVGltZXN0YW1wID4g
a05hY2tDb3VudFRpbWVvdXRNcyAqIDEwMDApCisgICAgX25hY2tDb3VudCA9IDA7CisKICAgaWYg
KF9maWx0ZXJKaXR0ZXJFc3RpbWF0ZSA+IGppdHRlck1TKQogICAgIGppdHRlck1TID0gX2ZpbHRl
ckppdHRlckVzdGltYXRlOwogICBpZiAoX25hY2tDb3VudCA+PSBfbmFja0xpbWl0KQogICAgIGpp
dHRlck1TICs9IF9ydHRGaWx0ZXIuUnR0TXMoKSAqIHJ0dE11bHRpcGxpZXI7CiAKLSAgaWYgKExv
d1JhdGVFeHBlcmltZW50RW5hYmxlZCgpKSB7Ci0gICAgc3RhdGljIGNvbnN0IGRvdWJsZSBrSml0
dGVyU2NhbGVMb3dUaHJlc2hvbGQgPSA1LjA7Ci0gICAgc3RhdGljIGNvbnN0IGRvdWJsZSBrSml0
dGVyU2NhbGVIaWdoVGhyZXNob2xkID0gMTAuMDsKLSAgICBkb3VibGUgZnBzID0gR2V0RnJhbWVS
YXRlKCk7Ci0gICAgLy8gSWdub3JlIGppdHRlciBmb3IgdmVyeSBsb3cgZnBzIHN0cmVhbXMuCi0g
ICAgaWYgKGZwcyA8IGtKaXR0ZXJTY2FsZUxvd1RocmVzaG9sZCkgewotICAgICAgaWYgKGZwcyA9
PSAwLjApIHsKLSAgICAgICAgcmV0dXJuIGppdHRlck1TOwotICAgICAgfQotICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotCi0gICAgLy8gU2VtaS1sb3cgZnJhbWUgcmF0ZTsgc2NhbGUgYnkgZmFjdG9y
IGxpbmVhcmx5IGludGVycG9sYXRlZCBmcm9tIDAuMCBhdAotICAgIC8vIGtKaXR0ZXJTY2FsZUxv
d1RocmVzaG9sZCB0byAxLjAgYXQga0ppdHRlclNjYWxlSGlnaFRocmVzaG9sZC4KLSAgICBpZiAo
ZnBzIDwga0ppdHRlclNjYWxlSGlnaFRocmVzaG9sZCkgewotICAgICAgaml0dGVyTVMgPQotICAg
ICAgICAgICgxLjAgLyAoa0ppdHRlclNjYWxlSGlnaFRocmVzaG9sZCAtIGtKaXR0ZXJTY2FsZUxv
d1RocmVzaG9sZCkpICoKLSAgICAgICAgICAoZnBzIC0ga0ppdHRlclNjYWxlTG93VGhyZXNob2xk
KSAqIGppdHRlck1TOworICBzdGF0aWMgY29uc3QgZG91YmxlIGtKaXR0ZXJTY2FsZUxvd1RocmVz
aG9sZCA9IDUuMDsKKyAgc3RhdGljIGNvbnN0IGRvdWJsZSBrSml0dGVyU2NhbGVIaWdoVGhyZXNo
b2xkID0gMTAuMDsKKyAgZG91YmxlIGZwcyA9IEdldEZyYW1lUmF0ZSgpOworICAvLyBJZ25vcmUg
aml0dGVyIGZvciB2ZXJ5IGxvdyBmcHMgc3RyZWFtcy4KKyAgaWYgKGZwcyA8IGtKaXR0ZXJTY2Fs
ZUxvd1RocmVzaG9sZCkgeworICAgIGlmIChmcHMgPT0gMC4wKSB7CisgICAgICByZXR1cm4gcnRj
OjpjaGVja2VkX2Nhc3Q8aW50PihzdGQ6Om1heCgwLjAsIGppdHRlck1TKSArIDAuNSk7CiAgICAg
fQorICAgIHJldHVybiAwOwogICB9CiAKLSAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90Pihq
aXR0ZXJNUyArIDAuNSk7Ci19Ci0KLWJvb2wgVkNNSml0dGVyRXN0aW1hdG9yOjpMb3dSYXRlRXhw
ZXJpbWVudEVuYWJsZWQoKSB7Ci0gIGlmIChsb3dfcmF0ZV9leHBlcmltZW50XyA9PSBrSW5pdCkg
ewotICAgIHN0ZDo6c3RyaW5nIGdyb3VwID0KLSAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6
RmluZEZ1bGxOYW1lKCJXZWJSVEMtUmVkdWNlZEppdHRlckRlbGF5Iik7Ci0gICAgaWYgKGdyb3Vw
ID09ICJEaXNhYmxlZCIpIHsKLSAgICAgIGxvd19yYXRlX2V4cGVyaW1lbnRfID0ga0Rpc2FibGVk
OwotICAgIH0gZWxzZSB7Ci0gICAgICBsb3dfcmF0ZV9leHBlcmltZW50XyA9IGtFbmFibGVkOwot
ICAgIH0KKyAgLy8gU2VtaS1sb3cgZnJhbWUgcmF0ZTsgc2NhbGUgYnkgZmFjdG9yIGxpbmVhcmx5
IGludGVycG9sYXRlZCBmcm9tIDAuMCBhdAorICAvLyBrSml0dGVyU2NhbGVMb3dUaHJlc2hvbGQg
dG8gMS4wIGF0IGtKaXR0ZXJTY2FsZUhpZ2hUaHJlc2hvbGQuCisgIGlmIChmcHMgPCBrSml0dGVy
U2NhbGVIaWdoVGhyZXNob2xkKSB7CisgICAgaml0dGVyTVMgPSAoMS4wIC8gKGtKaXR0ZXJTY2Fs
ZUhpZ2hUaHJlc2hvbGQgLSBrSml0dGVyU2NhbGVMb3dUaHJlc2hvbGQpKSAqCisgICAgICAgICAg
ICAgICAoZnBzIC0ga0ppdHRlclNjYWxlTG93VGhyZXNob2xkKSAqIGppdHRlck1TOwogICB9Ci0g
IHJldHVybiBsb3dfcmF0ZV9leHBlcmltZW50XyA9PSBrRW5hYmxlZCA/IHRydWUgOiBmYWxzZTsK
KworICByZXR1cm4gcnRjOjpjaGVja2VkX2Nhc3Q8aW50PihzdGQ6Om1heCgwLjAsIGppdHRlck1T
KSArIDAuNSk7CiB9CiAKIGRvdWJsZSBWQ01KaXR0ZXJFc3RpbWF0b3I6OkdldEZyYW1lUmF0ZSgp
IGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3IuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2pp
dHRlcl9lc3RpbWF0b3IuaAppbmRleCBhZWJhM2VkZWQzM2NkMTU3YzU0Y2U3NWNhMzFkMWZjZjQz
Mzg2YzBkLi41NmI1MzI4NTFkOTM5Y2U4OTM2NjA2ZGM2MmNmY2NjZTRiNzE4NzFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2VzdGltYXRv
ci5oCkBAIC03Miw4ICs3Miw2IEBAIGNsYXNzIFZDTUppdHRlckVzdGltYXRvciB7CiAgIGRvdWJs
ZSBfdGhldGFbMl07ICAvLyBFc3RpbWF0ZWQgbGluZSBwYXJhbWV0ZXJzIChzbG9wZSwgb2Zmc2V0
KQogICBkb3VibGUgX3Zhck5vaXNlOyAgLy8gVmFyaWFuY2Ugb2YgdGhlIHRpbWUtZGV2aWF0aW9u
IGZyb20gdGhlIGxpbmUKIAotICB2aXJ0dWFsIGJvb2wgTG93UmF0ZUV4cGVyaW1lbnRFbmFibGVk
KCk7Ci0KICBwcml2YXRlOgogICAvLyBVcGRhdGVzIHRoZSBLYWxtYW4gZmlsdGVyIGZvciB0aGUg
bGluZSBkZXNjcmliaW5nCiAgIC8vIHRoZSBmcmFtZSBzaXplIGRlcGVuZGVudCBqaXR0ZXIuCkBA
IC0xNTksOCArMTU3LDcgQEAgY2xhc3MgVkNNSml0dGVyRXN0aW1hdG9yIHsKICAgVkNNUnR0Rmls
dGVyIF9ydHRGaWx0ZXI7CiAKICAgcnRjOjpSb2xsaW5nQWNjdW11bGF0b3I8dWludDY0X3Q+IGZw
c19jb3VudGVyXzsKLSAgZW51bSBFeHBlcmltZW50RmxhZyB7IGtJbml0LCBrRW5hYmxlZCwga0Rp
c2FibGVkIH07Ci0gIEV4cGVyaW1lbnRGbGFnIGxvd19yYXRlX2V4cGVyaW1lbnRfOworICBjb25z
dCBkb3VibGUgdGltZV9kZXZpYXRpb25fdXBwZXJfYm91bmRfOwogICBjb25zdCBDbG9jayogY2xv
Y2tfOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2VzdGltYXRvcl90ZXN0cy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2ppdHRlcl9lc3RpbWF0b3JfdGVzdHMuY2MKaW5kZXggZjAwZTFlZjZkYThiNjQ1NjU5
NzJjOGNkYWNkNzQ5M2VkMjQyMmZiNy4uNDUyNjJlZjgzNjAyZTdjMTVlMmE5Y2YzYjllODA2NmYz
NWE5Mjc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2VzdGltYXRvcl90ZXN0cy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yX3Rlc3RzLmNjCkBAIC05LDM4ICs5LDMwIEBACiAKICNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmgiCiAKKyNpbmNs
dWRlICJydGNfYmFzZS9leHBlcmltZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9udW1l
cmljcy9oaXN0b2dyYW1fcGVyY2VudGlsZV9jb3VudGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
dGltZXV0aWxzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIK
KyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3MgVGVzdEVzdGltYXRvciA6IHB1YmxpYyBWQ01K
aXR0ZXJFc3RpbWF0b3IgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgVGVzdEVzdGltYXRvcihib29s
IGV4cF9lbmFibGVkKQotICAgICAgOiBWQ01KaXR0ZXJFc3RpbWF0b3IoJmZha2VfY2xvY2tfLCAw
LCAwKSwKLSAgICAgICAgZmFrZV9jbG9ja18oMCksCi0gICAgICAgIGV4cF9lbmFibGVkXyhleHBf
ZW5hYmxlZCkge30KK2NsYXNzIFRlc3RWQ01KaXR0ZXJFc3RpbWF0b3IgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFRlc3RWQ01KaXR0ZXJFc3RpbWF0b3IoKSA6IGZh
a2VfY2xvY2tfKDApIHt9CiAKLSAgdmlydHVhbCBib29sIExvd1JhdGVFeHBlcmltZW50RW5hYmxl
ZCgpIHsgcmV0dXJuIGV4cF9lbmFibGVkXzsgfQorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Cisg
ICAgZXN0aW1hdG9yXyA9IGFic2w6Om1ha2VfdW5pcXVlPFZDTUppdHRlckVzdGltYXRvcj4oJmZh
a2VfY2xvY2tfLCAwLCAwKTsKKyAgfQogCiAgIHZvaWQgQWR2YW5jZUNsb2NrKGludDY0X3QgbWlj
cm9zZWNvbmRzKSB7CiAgICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWNyb3NlY29uZHMobWlj
cm9zZWNvbmRzKTsKICAgfQogCi0gcHJpdmF0ZToKICAgU2ltdWxhdGVkQ2xvY2sgZmFrZV9jbG9j
a187Ci0gIGNvbnN0IGJvb2wgZXhwX2VuYWJsZWRfOwotfTsKLQotY2xhc3MgVGVzdFZDTUppdHRl
ckVzdGltYXRvciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVz
dFZDTUppdHRlckVzdGltYXRvcigpCi0gICAgICA6IHJlZ3VsYXJfZXN0aW1hdG9yXyhmYWxzZSks
IGxvd19yYXRlX2VzdGltYXRvcl8odHJ1ZSkge30KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
IHJlZ3VsYXJfZXN0aW1hdG9yXy5SZXNldCgpOyB9Ci0KLSAgVGVzdEVzdGltYXRvciByZWd1bGFy
X2VzdGltYXRvcl87Ci0gIFRlc3RFc3RpbWF0b3IgbG93X3JhdGVfZXN0aW1hdG9yXzsKKyAgc3Rk
Ojp1bmlxdWVfcHRyPFZDTUppdHRlckVzdGltYXRvcj4gZXN0aW1hdG9yXzsKIH07CiAKIC8vIEdl
bmVyYXRlcyBzb21lIHNpbXBsZSB0ZXN0IGRhdGEgaW4gdGhlIGZvcm0gb2YgYSBzYXd0b290aCB3
YXZlLgpAQCAtNjQsOTggKzU2LDU2IEBAIGNsYXNzIFZhbHVlR2VuZXJhdG9yIHsKIC8vIDUgZnBz
LCBkaXNhYmxlIGppdHRlciBkZWxheSBhbHRvZ2V0aGVyLgogVEVTVF9GKFRlc3RWQ01KaXR0ZXJF
c3RpbWF0b3IsIFRlc3RMb3dSYXRlKSB7CiAgIFZhbHVlR2VuZXJhdG9yIGdlbigxMCk7Ci0gIHVp
bnQ2NF90IHRpbWVfZGVsdGEgPSAxMDAwMDAwIC8gNTsKKyAgdWludDY0X3QgdGltZV9kZWx0YV91
cyA9IHJ0Yzo6a051bU1pY3Jvc2Vjc1BlclNlYyAvIDU7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwg
NjA7ICsraSkgewotICAgIHJlZ3VsYXJfZXN0aW1hdG9yXy5VcGRhdGVFc3RpbWF0ZShnZW4uRGVs
YXkoKSwgZ2VuLkZyYW1lU2l6ZSgpKTsKLSAgICByZWd1bGFyX2VzdGltYXRvcl8uQWR2YW5jZUNs
b2NrKHRpbWVfZGVsdGEpOwotICAgIGxvd19yYXRlX2VzdGltYXRvcl8uVXBkYXRlRXN0aW1hdGUo
Z2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7Ci0gICAgbG93X3JhdGVfZXN0aW1hdG9yXy5B
ZHZhbmNlQ2xvY2sodGltZV9kZWx0YSk7Ci0gICAgRVhQRUNUX0dUKHJlZ3VsYXJfZXN0aW1hdG9y
Xy5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSwgMCk7CisgICAgZXN0aW1hdG9yXy0+VXBkYXRlRXN0aW1h
dGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7CisgICAgQWR2YW5jZUNsb2NrKHRpbWVf
ZGVsdGFfdXMpOwogICAgIGlmIChpID4gMikKLSAgICAgIEVYUEVDVF9FUShsb3dfcmF0ZV9lc3Rp
bWF0b3JfLkdldEppdHRlckVzdGltYXRlKDApLCAwKTsKLSAgICBnZW4uQWR2YW5jZSgpOwotICB9
Ci19Ci0KLS8vIDggZnBzLCBzdGVhZHkgc3RhdGUgZXN0aW1hdGUgc2hvdWxkIGJlIGluIGludGVy
cG9sYXRlZCBpbnRlcnZhbCBiZXR3ZWVuIDAKLS8vIGFuZCB2YWx1ZSBvZiBwcmV2aW91cyBtZXRo
b2QuCi1URVNUX0YoVGVzdFZDTUppdHRlckVzdGltYXRvciwgVGVzdE1pZFJhdGUpIHsKLSAgVmFs
dWVHZW5lcmF0b3IgZ2VuKDEwKTsKLSAgdWludDY0X3QgdGltZV9kZWx0YSA9IDEwMDAwMDAgLyA4
OwotICBmb3IgKGludCBpID0gMDsgaSA8IDYwOyArK2kpIHsKLSAgICByZWd1bGFyX2VzdGltYXRv
cl8uVXBkYXRlRXN0aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7Ci0gICAgcmVn
dWxhcl9lc3RpbWF0b3JfLkFkdmFuY2VDbG9jayh0aW1lX2RlbHRhKTsKLSAgICBsb3dfcmF0ZV9l
c3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgpLCBnZW4uRnJhbWVTaXplKCkpOwot
ICAgIGxvd19yYXRlX2VzdGltYXRvcl8uQWR2YW5jZUNsb2NrKHRpbWVfZGVsdGEpOwotICAgIEVY
UEVDVF9HVChyZWd1bGFyX2VzdGltYXRvcl8uR2V0Sml0dGVyRXN0aW1hdGUoMCksIDApOwotICAg
IEVYUEVDVF9HVChsb3dfcmF0ZV9lc3RpbWF0b3JfLkdldEppdHRlckVzdGltYXRlKDApLCAwKTsK
LSAgICBFWFBFQ1RfR0UocmVndWxhcl9lc3RpbWF0b3JfLkdldEppdHRlckVzdGltYXRlKDApLAot
ICAgICAgICAgICAgICBsb3dfcmF0ZV9lc3RpbWF0b3JfLkdldEppdHRlckVzdGltYXRlKDApKTsK
KyAgICAgIEVYUEVDVF9FUShlc3RpbWF0b3JfLT5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSwgMCk7CiAg
ICAgZ2VuLkFkdmFuY2UoKTsKICAgfQogfQogCi0vLyAzMCBmcHMsIHN0ZWFkeSBzdGF0ZSBlc3Rp
bWF0ZSBzaG91bGQgYmUgc2FtZSBhcyBwcmV2aW91cyBtZXRob2QuCi1URVNUX0YoVGVzdFZDTUpp
dHRlckVzdGltYXRvciwgVGVzdEhpZ2hSYXRlKSB7Ci0gIFZhbHVlR2VuZXJhdG9yIGdlbigxMCk7
Ci0gIHVpbnQ2NF90IHRpbWVfZGVsdGEgPSAxMDAwMDAwIC8gMzA7Ci0gIGZvciAoaW50IGkgPSAw
OyBpIDwgNjA7ICsraSkgewotICAgIHJlZ3VsYXJfZXN0aW1hdG9yXy5VcGRhdGVFc3RpbWF0ZShn
ZW4uRGVsYXkoKSwgZ2VuLkZyYW1lU2l6ZSgpKTsKLSAgICByZWd1bGFyX2VzdGltYXRvcl8uQWR2
YW5jZUNsb2NrKHRpbWVfZGVsdGEpOwotICAgIGxvd19yYXRlX2VzdGltYXRvcl8uVXBkYXRlRXN0
aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7Ci0gICAgbG93X3JhdGVfZXN0aW1h
dG9yXy5BZHZhbmNlQ2xvY2sodGltZV9kZWx0YSk7Ci0gICAgRVhQRUNUX0VRKHJlZ3VsYXJfZXN0
aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSwKLSAgICAgICAgICAgICAgbG93X3JhdGVfZXN0
aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSk7Ci0gICAgZ2VuLkFkdmFuY2UoKTsKLSAgfQot
fQotCi0vLyAxMCBmcHMsIGhpZ2ggaml0dGVyIHRoZW4gbG93IGppdHRlci4gTG93IHJhdGUgZXN0
aW1hdG9yIHNob3VsZCBjb252ZXJnZQotLy8gZmFzdGVyIHRvIGxvdyBub2lzZSBlc3RpbWF0ZS4K
LVRFU1RfRihUZXN0VkNNSml0dGVyRXN0aW1hdG9yLCBUZXN0Q29udmVyZ2VuY2UpIHsKLSAgLy8g
UmVhY2ggYSBzdGVhZHkgc3RhdGUgd2l0aCBoaWdoIG5vaXNlLgotICBWYWx1ZUdlbmVyYXRvciBn
ZW4oNTApOwotICB1aW50NjRfdCB0aW1lX2RlbHRhID0gMTAwMDAwMCAvIDEwOwotICBmb3IgKGlu
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0gICAgcmVndWxhcl9lc3RpbWF0b3JfLlVwZGF0ZUVz
dGltYXRlKGdlbi5EZWxheSgpLCBnZW4uRnJhbWVTaXplKCkpOwotICAgIHJlZ3VsYXJfZXN0aW1h
dG9yXy5BZHZhbmNlQ2xvY2sodGltZV9kZWx0YSAqIDIpOwotICAgIGxvd19yYXRlX2VzdGltYXRv
cl8uVXBkYXRlRXN0aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNpemUoKSk7Ci0gICAgbG93
X3JhdGVfZXN0aW1hdG9yXy5BZHZhbmNlQ2xvY2sodGltZV9kZWx0YSAqIDIpOwotICAgIGdlbi5B
ZHZhbmNlKCk7Ci0gIH0KLQotICBpbnQgdGhyZXNob2xkID0gcmVndWxhcl9lc3RpbWF0b3JfLkdl
dEppdHRlckVzdGltYXRlKDApIC8gMjsKLQotICAvLyBOZXcgZ2VuZXJhdG9yIHdpdGggemVybyBu
b2lzZS4KLSAgVmFsdWVHZW5lcmF0b3IgbG93X2dlbigwKTsKLSAgaW50IHJlZ3VsYXJfaXRlcmF0
aW9ucyA9IDA7Ci0gIGludCBsb3dfcmF0ZV9pdGVyYXRpb25zID0gMDsKLSAgZm9yIChpbnQgaSA9
IDA7IGkgPCA1MDA7ICsraSkgewotICAgIGlmIChyZWd1bGFyX2l0ZXJhdGlvbnMgPT0gMCkgewot
ICAgICAgcmVndWxhcl9lc3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRlKGxvd19nZW4uRGVsYXkoKSwg
bG93X2dlbi5GcmFtZVNpemUoKSk7Ci0gICAgICByZWd1bGFyX2VzdGltYXRvcl8uQWR2YW5jZUNs
b2NrKHRpbWVfZGVsdGEpOwotICAgICAgaWYgKHJlZ3VsYXJfZXN0aW1hdG9yXy5HZXRKaXR0ZXJF
c3RpbWF0ZSgwKSA8IHRocmVzaG9sZCkgewotICAgICAgICByZWd1bGFyX2l0ZXJhdGlvbnMgPSBp
OwotICAgICAgfQorVEVTVF9GKFRlc3RWQ01KaXR0ZXJFc3RpbWF0b3IsIFRlc3RVcHBlckJvdW5k
KSB7CisgIHN0cnVjdCBUZXN0Q29udGV4dCB7CisgICAgVGVzdENvbnRleHQoKSA6IHVwcGVyX2Jv
dW5kKDAuMCksIHBlcmNlbnRpbGVzKDEwMDApIHt9CisgICAgZG91YmxlIHVwcGVyX2JvdW5kOwor
ICAgIHJ0Yzo6SGlzdG9ncmFtUGVyY2VudGlsZUNvdW50ZXIgcGVyY2VudGlsZXM7CisgIH07Cisg
IHN0ZDo6dmVjdG9yPFRlc3RDb250ZXh0PiB0ZXN0X2Nhc2VzKDIpOworCisgIHRlc3RfY2FzZXNb
MF0udXBwZXJfYm91bmQgPSAxMDAuMDsgIC8vIEZpcnN0IHVzZSBlc3NlbnRpYWxseSBubyBjYXAu
CisgIHRlc3RfY2FzZXNbMV0udXBwZXJfYm91bmQgPSAzLjU7ICAgIC8vIFNlY29uZCwgcmVhc29u
YWJseSBzbWFsbCBjYXAuCisKKyAgZm9yIChUZXN0Q29udGV4dCYgY29udGV4dCA6IHRlc3RfY2Fz
ZXMpIHsKKyAgICAvLyBTZXQgdXAgZmllbGQgdHJpYWwgYW5kIHJlc2V0IGppdHRlciBlc3RpbWF0
b3IuCisgICAgY2hhciBzdHJpbmdfYnVmWzY0XTsKKyAgICBydGM6OlNpbXBsZVN0cmluZ0J1aWxk
ZXIgc3NiKHN0cmluZ19idWYpOworICAgIHNzYiA8PCBKaXR0ZXJVcHBlckJvdW5kRXhwZXJpbWVu
dDo6a0ppdHRlclVwcGVyQm91bmRFeHBlcmltZW50TmFtZQorICAgICAgICA8PCAiL0VuYWJsZWQt
IiA8PCBjb250ZXh0LnVwcGVyX2JvdW5kIDw8ICIvIjsKKyAgICB0ZXN0OjpTY29wZWRGaWVsZFRy
aWFscyBmaWVsZF90cmlhbHMoc3NiLnN0cigpKTsKKyAgICBTZXRVcCgpOworCisgICAgVmFsdWVH
ZW5lcmF0b3IgZ2VuKDUwKTsKKyAgICB1aW50NjRfdCB0aW1lX2RlbHRhX3VzID0gcnRjOjprTnVt
TWljcm9zZWNzUGVyU2VjIC8gMzA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSkg
eworICAgICAgZXN0aW1hdG9yXy0+VXBkYXRlRXN0aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFt
ZVNpemUoKSk7CisgICAgICBBZHZhbmNlQ2xvY2sodGltZV9kZWx0YV91cyk7CisgICAgICBjb250
ZXh0LnBlcmNlbnRpbGVzLkFkZCgKKyAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXN0
aW1hdG9yXy0+R2V0Sml0dGVyRXN0aW1hdGUoMCkpKTsKKyAgICAgIGdlbi5BZHZhbmNlKCk7CiAg
ICAgfQotCi0gICAgaWYgKGxvd19yYXRlX2l0ZXJhdGlvbnMgPT0gMCkgewotICAgICAgbG93X3Jh
dGVfZXN0aW1hdG9yXy5VcGRhdGVFc3RpbWF0ZShsb3dfZ2VuLkRlbGF5KCksIGxvd19nZW4uRnJh
bWVTaXplKCkpOwotICAgICAgbG93X3JhdGVfZXN0aW1hdG9yXy5BZHZhbmNlQ2xvY2sodGltZV9k
ZWx0YSk7Ci0gICAgICBpZiAobG93X3JhdGVfZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgw
KSA8IHRocmVzaG9sZCkgewotICAgICAgICBsb3dfcmF0ZV9pdGVyYXRpb25zID0gaTsKLSAgICAg
IH0KLSAgICB9Ci0KLSAgICBpZiAocmVndWxhcl9pdGVyYXRpb25zICE9IDAgJiYgbG93X3JhdGVf
aXRlcmF0aW9ucyAhPSAwKSB7Ci0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBnZW4uQWR2YW5j
ZSgpOwogICB9CiAKLSAgRVhQRUNUX05FKHJlZ3VsYXJfaXRlcmF0aW9ucywgMCk7Ci0gIEVYUEVD
VF9ORShsb3dfcmF0ZV9pdGVyYXRpb25zLCAwKTsKLSAgRVhQRUNUX0xFKGxvd19yYXRlX2l0ZXJh
dGlvbnMsIHJlZ3VsYXJfaXRlcmF0aW9ucyk7CisgIC8vIE1lZGlhbiBzaG91bGQgYmUgc2ltaWxh
ciBhZnRlciB0aHJlZSBzZWNvbmRzLiBBbGxvdyA1JSBlcnJvciBtYXJnaW4uCisgIHVpbnQzMl90
IG1lZGlhbl91bmJvdW5kID0gKnRlc3RfY2FzZXNbMF0ucGVyY2VudGlsZXMuR2V0UGVyY2VudGls
ZSgwLjUpOworICB1aW50MzJfdCBtZWRpYW5fYm91bmRlZCA9ICp0ZXN0X2Nhc2VzWzFdLnBlcmNl
bnRpbGVzLkdldFBlcmNlbnRpbGUoMC41KTsKKyAgRVhQRUNUX05FQVIobWVkaWFuX3VuYm91bmQs
IG1lZGlhbl9ib3VuZGVkLCAobWVkaWFuX3VuYm91bmQgKiA1KSAvIDEwMCk7CisKKyAgLy8gTWF4
IHNob3VsZCBiZSBsb3dlciBmb3IgdGhlIGJvdW5kZWQgY2FzZS4KKyAgdWludDMyX3QgbWF4X3Vu
Ym91bmQgPSAqdGVzdF9jYXNlc1swXS5wZXJjZW50aWxlcy5HZXRQZXJjZW50aWxlKDEuMCk7Cisg
IHVpbnQzMl90IG1heF9ib3VuZGVkID0gKnRlc3RfY2FzZXNbMV0ucGVyY2VudGlsZXMuR2V0UGVy
Y2VudGlsZSgxLjApOworICBFWFBFQ1RfR1QobWF4X3VuYm91bmQsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtYXhfYm91bmRlZCAqIDEuMjUpKTsKIH0KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1bGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9uYWNrX21vZHVsZS5jYwpp
bmRleCA3ZmJjZjM0YjQxYTkxMzczYmQ3ODYxYWUwZjVkZmUzZThlMWY3ZmQxLi4wYzY5YjU3NzQ5
MzQ5ZmZhZmNlMWQwODc3ZTVmZDUwNzA0YTcxMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9uYWNrX21v
ZHVsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9uYWNrX21vZHVsZS5jYwpAQCAtMTYsNiArMTYsNyBAQAogI2lu
Y2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3NfdGhyZWFkLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCkBAIC0yOCwxNCArMjksMjkgQEAgY29uc3QgaW50IGtQcm9jZXNzRnJlcXVl
bmN5ID0gNTA7CiBjb25zdCBpbnQga1Byb2Nlc3NJbnRlcnZhbE1zID0gMTAwMCAvIGtQcm9jZXNz
RnJlcXVlbmN5OwogY29uc3QgaW50IGtNYXhSZW9yZGVyZWRQYWNrZXRzID0gMTI4OwogY29uc3Qg
aW50IGtOdW1SZW9yZGVyaW5nQnVja2V0cyA9IDEwOworY29uc3QgaW50IGtEZWZhdWx0U2VuZE5h
Y2tEZWxheU1zID0gMDsKKworaW50NjRfdCBHZXRTZW5kTmFja0RlbGF5KCkgeworICBpbnQ2NF90
IGRlbGF5X21zID0gc3RydG9sKAorICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxO
YW1lKCJXZWJSVEMtU2VuZE5hY2tEZWxheU1zIikuY19zdHIoKSwKKyAgICAgIG51bGxwdHIsIDEw
KTsKKyAgaWYgKGRlbGF5X21zID4gMCAmJiBkZWxheV9tcyA8PSAyMCkgeworICAgIFJUQ19MT0co
TFNfSU5GTykgPDwgIlNlbmROYWNrRGVsYXkgaXMgc2V0IHRvICIgPDwgZGVsYXlfbXM7CisgICAg
cmV0dXJuIGRlbGF5X21zOworICB9CisgIHJldHVybiBrRGVmYXVsdFNlbmROYWNrRGVsYXlNczsK
K30KIH0gIC8vIG5hbWVzcGFjZQogCiBOYWNrTW9kdWxlOjpOYWNrSW5mbzo6TmFja0luZm8oKQog
ICAgIDogc2VxX251bSgwKSwgc2VuZF9hdF9zZXFfbnVtKDApLCBzZW50X2F0X3RpbWUoLTEpLCBy
ZXRyaWVzKDApIHt9CiAKLU5hY2tNb2R1bGU6Ok5hY2tJbmZvOjpOYWNrSW5mbyh1aW50MTZfdCBz
ZXFfbnVtLCB1aW50MTZfdCBzZW5kX2F0X3NlcV9udW0pCitOYWNrTW9kdWxlOjpOYWNrSW5mbzo6
TmFja0luZm8odWludDE2X3Qgc2VxX251bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MTZfdCBzZW5kX2F0X3NlcV9udW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBjcmVhdGVkX2F0X3RpbWUpCiAgICAgOiBzZXFfbnVtKHNlcV9udW0pLAogICAg
ICAgc2VuZF9hdF9zZXFfbnVtKHNlbmRfYXRfc2VxX251bSksCisgICAgICBjcmVhdGVkX2F0X3Rp
bWUoY3JlYXRlZF9hdF90aW1lKSwKICAgICAgIHNlbnRfYXRfdGltZSgtMSksCiAgICAgICByZXRy
aWVzKDApIHt9CiAKQEAgLTQ5LDEzICs2NSwyMCBAQCBOYWNrTW9kdWxlOjpOYWNrTW9kdWxlKENs
b2NrKiBjbG9jaywKICAgICAgIGluaXRpYWxpemVkXyhmYWxzZSksCiAgICAgICBydHRfbXNfKGtE
ZWZhdWx0UnR0TXMpLAogICAgICAgbmV3ZXN0X3NlcV9udW1fKDApLAotICAgICAgbmV4dF9wcm9j
ZXNzX3RpbWVfbXNfKC0xKSB7CisgICAgICBuZXh0X3Byb2Nlc3NfdGltZV9tc18oLTEpLAorICAg
ICAgc2VuZF9uYWNrX2RlbGF5X21zXyhHZXRTZW5kTmFja0RlbGF5KCkpIHsKICAgUlRDX0RDSEVD
SyhjbG9ja18pOwogICBSVENfRENIRUNLKG5hY2tfc2VuZGVyXyk7CiAgIFJUQ19EQ0hFQ0soa2V5
ZnJhbWVfcmVxdWVzdF9zZW5kZXJfKTsKIH0KIAogaW50IE5hY2tNb2R1bGU6Ok9uUmVjZWl2ZWRQ
YWNrZXQodWludDE2X3Qgc2VxX251bSwgYm9vbCBpc19rZXlmcmFtZSkgeworICByZXR1cm4gT25S
ZWNlaXZlZFBhY2tldChzZXFfbnVtLCBpc19rZXlmcmFtZSwgZmFsc2UpOworfQorCitpbnQgTmFj
a01vZHVsZTo6T25SZWNlaXZlZFBhY2tldCh1aW50MTZfdCBzZXFfbnVtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19rZXlmcmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNfcmVjb3ZlcmVkKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxv
Y2soJmNyaXRfKTsKICAgLy8gVE9ETyhwaGlsaXBlbCk6IFdoZW4gdGhlIHBhY2tldCBpbmNsdWRl
cyBpbmZvcm1hdGlvbiB3aGV0aGVyIGl0IGlzCiAgIC8vICAgICAgICAgICAgICAgICByZXRyYW5z
bWl0dGVkIG9yIG5vdCwgdXNlIHRoYXQgdmFsdWUgaW5zdGVhZC4gRm9yCkBAIC04OCw4ICsxMTEs
NiBAQCBpbnQgTmFja01vZHVsZTo6T25SZWNlaXZlZFBhY2tldCh1aW50MTZfdCBzZXFfbnVtLCBi
b29sIGlzX2tleWZyYW1lKSB7CiAgICAgICBVcGRhdGVSZW9yZGVyaW5nU3RhdGlzdGljcyhzZXFf
bnVtKTsKICAgICByZXR1cm4gbmFja3Nfc2VudF9mb3JfcGFja2V0OwogICB9Ci0gIEFkZFBhY2tl
dHNUb05hY2sobmV3ZXN0X3NlcV9udW1fICsgMSwgc2VxX251bSk7Ci0gIG5ld2VzdF9zZXFfbnVt
XyA9IHNlcV9udW07CiAKICAgLy8gS2VlcCB0cmFjayBvZiBuZXcga2V5ZnJhbWVzLgogICBpZiAo
aXNfa2V5ZnJhbWUpCkBAIC0xMDAsNiArMTIxLDIxIEBAIGludCBOYWNrTW9kdWxlOjpPblJlY2Vp
dmVkUGFja2V0KHVpbnQxNl90IHNlcV9udW0sIGJvb2wgaXNfa2V5ZnJhbWUpIHsKICAgaWYgKGl0
ICE9IGtleWZyYW1lX2xpc3RfLmJlZ2luKCkpCiAgICAga2V5ZnJhbWVfbGlzdF8uZXJhc2Uoa2V5
ZnJhbWVfbGlzdF8uYmVnaW4oKSwgaXQpOwogCisgIGlmIChpc19yZWNvdmVyZWQpIHsKKyAgICBy
ZWNvdmVyZWRfbGlzdF8uaW5zZXJ0KHNlcV9udW0pOworCisgICAgLy8gUmVtb3ZlIG9sZCBvbmVz
IHNvIHdlIGRvbid0IGFjY3VtdWxhdGUgcmVjb3ZlcmVkIHBhY2tldHMuCisgICAgYXV0byBpdCA9
IHJlY292ZXJlZF9saXN0Xy5sb3dlcl9ib3VuZChzZXFfbnVtIC0ga01heFBhY2tldEFnZSk7Cisg
ICAgaWYgKGl0ICE9IHJlY292ZXJlZF9saXN0Xy5iZWdpbigpKQorICAgICAgcmVjb3ZlcmVkX2xp
c3RfLmVyYXNlKHJlY292ZXJlZF9saXN0Xy5iZWdpbigpLCBpdCk7CisKKyAgICAvLyBEbyBub3Qg
c2VuZCBuYWNrIGZvciBwYWNrZXRzIHJlY292ZXJlZCBieSBGRUMgb3IgUlRYLgorICAgIHJldHVy
biAwOworICB9CisKKyAgQWRkUGFja2V0c1RvTmFjayhuZXdlc3Rfc2VxX251bV8gKyAxLCBzZXFf
bnVtKTsKKyAgbmV3ZXN0X3NlcV9udW1fID0gc2VxX251bTsKKwogICAvLyBBcmUgdGhlcmUgYW55
IG5hY2tzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIHRoaXMgc2VxX251bS4KICAgc3RkOjp2ZWN0b3I8
dWludDE2X3Q+IG5hY2tfYmF0Y2ggPSBHZXROYWNrQmF0Y2goa1NlcU51bU9ubHkpOwogICBpZiAo
IW5hY2tfYmF0Y2guZW1wdHkoKSkKQEAgLTExMyw2ICsxNDksOCBAQCB2b2lkIE5hY2tNb2R1bGU6
OkNsZWFyVXBUbyh1aW50MTZfdCBzZXFfbnVtKSB7CiAgIG5hY2tfbGlzdF8uZXJhc2UobmFja19s
aXN0Xy5iZWdpbigpLCBuYWNrX2xpc3RfLmxvd2VyX2JvdW5kKHNlcV9udW0pKTsKICAga2V5ZnJh
bWVfbGlzdF8uZXJhc2Uoa2V5ZnJhbWVfbGlzdF8uYmVnaW4oKSwKICAgICAgICAgICAgICAgICAg
ICAgICAga2V5ZnJhbWVfbGlzdF8ubG93ZXJfYm91bmQoc2VxX251bSkpOworICByZWNvdmVyZWRf
bGlzdF8uZXJhc2UocmVjb3ZlcmVkX2xpc3RfLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICByZWNvdmVyZWRfbGlzdF8ubG93ZXJfYm91bmQoc2VxX251bSkpOwogfQogCiB2b2lkIE5h
Y2tNb2R1bGU6OlVwZGF0ZVJ0dChpbnQ2NF90IHJ0dF9tcykgewpAQCAtMTI0LDYgKzE2Miw3IEBA
IHZvaWQgTmFja01vZHVsZTo6Q2xlYXIoKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRf
KTsKICAgbmFja19saXN0Xy5jbGVhcigpOwogICBrZXlmcmFtZV9saXN0Xy5jbGVhcigpOworICBy
ZWNvdmVyZWRfbGlzdF8uY2xlYXIoKTsKIH0KIAogaW50NjRfdCBOYWNrTW9kdWxlOjpUaW1lVW50
aWxOZXh0UHJvY2VzcygpIHsKQEAgLTIwMCw3ICsyMzksMTEgQEAgdm9pZCBOYWNrTW9kdWxlOjpB
ZGRQYWNrZXRzVG9OYWNrKHVpbnQxNl90IHNlcV9udW1fc3RhcnQsCiAgIH0KIAogICBmb3IgKHVp
bnQxNl90IHNlcV9udW0gPSBzZXFfbnVtX3N0YXJ0OyBzZXFfbnVtICE9IHNlcV9udW1fZW5kOyAr
K3NlcV9udW0pIHsKLSAgICBOYWNrSW5mbyBuYWNrX2luZm8oc2VxX251bSwgc2VxX251bSArIFdh
aXROdW1iZXJPZlBhY2tldHMoMC41KSk7CisgICAgLy8gRG8gbm90IHNlbmQgbmFjayBmb3IgcGFj
a2V0cyB0aGF0IGFyZSBhbHJlYWR5IHJlY292ZXJlZCBieSBGRUMgb3IgUlRYCisgICAgaWYgKHJl
Y292ZXJlZF9saXN0Xy5maW5kKHNlcV9udW0pICE9IHJlY292ZXJlZF9saXN0Xy5lbmQoKSkKKyAg
ICAgIGNvbnRpbnVlOworICAgIE5hY2tJbmZvIG5hY2tfaW5mbyhzZXFfbnVtLCBzZXFfbnVtICsg
V2FpdE51bWJlck9mUGFja2V0cygwLjUpLAorICAgICAgICAgICAgICAgICAgICAgICBjbG9ja18t
PlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKICAgICBSVENfRENIRUNLKG5hY2tfbGlzdF8uZmluZChz
ZXFfbnVtKSA9PSBuYWNrX2xpc3RfLmVuZCgpKTsKICAgICBuYWNrX2xpc3RfW3NlcV9udW1dID0g
bmFja19pbmZvOwogICB9CkBAIC0yMTMsMjIgKzI1NiwxNCBAQCBzdGQ6OnZlY3Rvcjx1aW50MTZf
dD4gTmFja01vZHVsZTo6R2V0TmFja0JhdGNoKE5hY2tGaWx0ZXJPcHRpb25zIG9wdGlvbnMpIHsK
ICAgc3RkOjp2ZWN0b3I8dWludDE2X3Q+IG5hY2tfYmF0Y2g7CiAgIGF1dG8gaXQgPSBuYWNrX2xp
c3RfLmJlZ2luKCk7CiAgIHdoaWxlIChpdCAhPSBuYWNrX2xpc3RfLmVuZCgpKSB7Ci0gICAgaWYg
KGNvbnNpZGVyX3NlcV9udW0gJiYgaXQtPnNlY29uZC5zZW50X2F0X3RpbWUgPT0gLTEgJiYKLSAg
ICAgICAgQWhlYWRPckF0KG5ld2VzdF9zZXFfbnVtXywgaXQtPnNlY29uZC5zZW5kX2F0X3NlcV9u
dW0pKSB7Ci0gICAgICBuYWNrX2JhdGNoLmVtcGxhY2VfYmFjayhpdC0+c2Vjb25kLnNlcV9udW0p
OwotICAgICAgKytpdC0+c2Vjb25kLnJldHJpZXM7Ci0gICAgICBpdC0+c2Vjb25kLnNlbnRfYXRf
dGltZSA9IG5vd19tczsKLSAgICAgIGlmIChpdC0+c2Vjb25kLnJldHJpZXMgPj0ga01heE5hY2tS
ZXRyaWVzKSB7Ci0gICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlNlcXVlbmNlIG51bWJl
ciAiIDw8IGl0LT5zZWNvbmQuc2VxX251bQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICIgcmVtb3ZlZCBmcm9tIE5BQ0sgbGlzdCBkdWUgdG8gbWF4IHJldHJpZXMuIjsKLSAgICAgICAg
aXQgPSBuYWNrX2xpc3RfLmVyYXNlKGl0KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICsraXQ7
Ci0gICAgICB9Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICBpZiAoY29uc2lkZXJfdGlt
ZXN0YW1wICYmIGl0LT5zZWNvbmQuc2VudF9hdF90aW1lICsgcnR0X21zXyA8PSBub3dfbXMpIHsK
KyAgICBib29sIGRlbGF5X3RpbWVkX291dCA9CisgICAgICAgIG5vd19tcyAtIGl0LT5zZWNvbmQu
Y3JlYXRlZF9hdF90aW1lID49IHNlbmRfbmFja19kZWxheV9tc187CisgICAgYm9vbCBuYWNrX29u
X3J0dF9wYXNzZWQgPSBub3dfbXMgLSBpdC0+c2Vjb25kLnNlbnRfYXRfdGltZSA+PSBydHRfbXNf
OworICAgIGJvb2wgbmFja19vbl9zZXFfbnVtX3Bhc3NlZCA9CisgICAgICAgIGl0LT5zZWNvbmQu
c2VudF9hdF90aW1lID09IC0xICYmCisgICAgICAgIEFoZWFkT3JBdChuZXdlc3Rfc2VxX251bV8s
IGl0LT5zZWNvbmQuc2VuZF9hdF9zZXFfbnVtKTsKKyAgICBpZiAoZGVsYXlfdGltZWRfb3V0ICYm
ICgoY29uc2lkZXJfc2VxX251bSAmJiBuYWNrX29uX3NlcV9udW1fcGFzc2VkKSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChjb25zaWRlcl90aW1lc3RhbXAgJiYgbmFja19vbl9ydHRf
cGFzc2VkKSkpIHsKICAgICAgIG5hY2tfYmF0Y2guZW1wbGFjZV9iYWNrKGl0LT5zZWNvbmQuc2Vx
X251bSk7CiAgICAgICArK2l0LT5zZWNvbmQucmV0cmllczsKICAgICAgIGl0LT5zZWNvbmQuc2Vu
dF9hdF90aW1lID0gbm93X21zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1bGUuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL25hY2tfbW9kdWxlLmgKaW5kZXggNDQzNDBlOWQ0Y2E0NzY0NTRjYTdkMGIzYjVhNjg3ZjU3
ZGQ3NDNlOS4uZjg2ZGQxNmRiMjhhYzMwZTBmNGExMzZjMDRjNWI1M2E5YTk1MzJiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvbmFja19tb2R1bGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9uYWNrX21vZHVsZS5oCkBAIC0z
Miw2ICszMiw4IEBAIGNsYXNzIE5hY2tNb2R1bGUgOiBwdWJsaWMgTW9kdWxlIHsKICAgICAgICAg
ICAgICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKTsKIAog
ICBpbnQgT25SZWNlaXZlZFBhY2tldCh1aW50MTZfdCBzZXFfbnVtLCBib29sIGlzX2tleWZyYW1l
KTsKKyAgaW50IE9uUmVjZWl2ZWRQYWNrZXQodWludDE2X3Qgc2VxX251bSwgYm9vbCBpc19rZXlm
cmFtZSwgYm9vbCBpc19yZWNvdmVyZWQpOworCiAgIHZvaWQgQ2xlYXJVcFRvKHVpbnQxNl90IHNl
cV9udW0pOwogICB2b2lkIFVwZGF0ZVJ0dChpbnQ2NF90IHJ0dF9tcyk7CiAgIHZvaWQgQ2xlYXIo
KTsKQEAgLTUwLDEwICs1MiwxMyBAQCBjbGFzcyBOYWNrTW9kdWxlIDogcHVibGljIE1vZHVsZSB7
CiAgIC8vIHdlIGhhdmUgdHJpZWQgdG8gbmFjayB0aGlzIHBhY2tldC4KICAgc3RydWN0IE5hY2tJ
bmZvIHsKICAgICBOYWNrSW5mbygpOwotICAgIE5hY2tJbmZvKHVpbnQxNl90IHNlcV9udW0sIHVp
bnQxNl90IHNlbmRfYXRfc2VxX251bSk7CisgICAgTmFja0luZm8odWludDE2X3Qgc2VxX251bSwK
KyAgICAgICAgICAgICB1aW50MTZfdCBzZW5kX2F0X3NlcV9udW0sCisgICAgICAgICAgICAgaW50
NjRfdCBjcmVhdGVkX2F0X3RpbWUpOwogCiAgICAgdWludDE2X3Qgc2VxX251bTsKICAgICB1aW50
MTZfdCBzZW5kX2F0X3NlcV9udW07CisgICAgaW50NjRfdCBjcmVhdGVkX2F0X3RpbWU7CiAgICAg
aW50NjRfdCBzZW50X2F0X3RpbWU7CiAgICAgaW50IHJldHJpZXM7CiAgIH07CkBAIC04Nyw2ICs5
Miw4IEBAIGNsYXNzIE5hY2tNb2R1bGUgOiBwdWJsaWMgTW9kdWxlIHsKICAgICAgIFJUQ19HVUFS
REVEX0JZKGNyaXRfKTsKICAgc3RkOjpzZXQ8dWludDE2X3QsIERlc2NlbmRpbmdTZXFOdW1Db21w
PHVpbnQxNl90Pj4ga2V5ZnJhbWVfbGlzdF8KICAgICAgIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsK
KyAgc3RkOjpzZXQ8dWludDE2X3QsIERlc2NlbmRpbmdTZXFOdW1Db21wPHVpbnQxNl90Pj4gcmVj
b3ZlcmVkX2xpc3RfCisgICAgICBSVENfR1VBUkRFRF9CWShjcml0Xyk7CiAgIHZpZGVvX2NvZGlu
Zzo6SGlzdG9ncmFtIHJlb3JkZXJpbmdfaGlzdG9ncmFtXyBSVENfR1VBUkRFRF9CWShjcml0Xyk7
CiAgIGJvb2wgaW5pdGlhbGl6ZWRfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKICAgaW50NjRfdCBy
dHRfbXNfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKQEAgLTk0LDYgKzEwMSw5IEBAIGNsYXNzIE5h
Y2tNb2R1bGUgOiBwdWJsaWMgTW9kdWxlIHsKIAogICAvLyBPbmx5IHRvdWNoZWQgb24gdGhlIHBy
b2Nlc3MgdGhyZWFkLgogICBpbnQ2NF90IG5leHRfcHJvY2Vzc190aW1lX21zXzsKKworICAvLyBB
ZGRzIGEgZGVsYXkgYmVmb3JlIHNlbmQgbmFjayBvbiBwYWNrZXQgcmVjZWl2ZWQuCisgIGNvbnN0
IGludDY0X3Qgc2VuZF9uYWNrX2RlbGF5X21zXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL25hY2tfbW9kdWxlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbmFj
a19tb2R1bGVfdW5pdHRlc3QuY2MKaW5kZXggOGE1ZjQ2YmY3ZmJhNTY4NzJmMjU5MzYzMjg3YzAz
ZDlkMzg3MTYwOC4uOGVmYjhhYzE1NDlmOWQ0YjRjYjc5OGU0NWE5YmEzNjY1OTdlZDExMyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvbmFja19tb2R1bGVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19t
b2R1bGVfdW5pdHRlc3QuY2MKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZ19kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1bGUuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBl
cnMvaW5jbHVkZS9jbG9jay5oIgorI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKICNpbmNs
dWRlICJ0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNDAsMzggKzQxLDM4
IEBAIGNsYXNzIFRlc3ROYWNrTW9kdWxlIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCwKIH07CiAK
IFRFU1RfRihUZXN0TmFja01vZHVsZSwgTmFja09uZVBhY2tldCkgewotICBuYWNrX21vZHVsZV8u
T25SZWNlaXZlZFBhY2tldCgxLCBmYWxzZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFj
a2V0KDMsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMSwgZmFsc2Us
IGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMywgZmFsc2UsIGZhbHNl
KTsKICAgRVhQRUNUX0VRKDF1LCBzZW50X25hY2tzXy5zaXplKCkpOwogICBFWFBFQ1RfRVEoMiwg
c2VudF9uYWNrc19bMF0pOwogfQogCiBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIFdyYXBwaW5nU2Vx
TnVtKSB7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDB4ZmZmZSwgZmFsc2UpOwot
ICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxl
Xy5PblJlY2VpdmVkUGFja2V0KDB4ZmZmZSwgZmFsc2UsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVf
Lk9uUmVjZWl2ZWRQYWNrZXQoMSwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDJ1LCBzZW50
X25hY2tzXy5zaXplKCkpOwogICBFWFBFQ1RfRVEoMHhmZmZmLCBzZW50X25hY2tzX1swXSk7CiAg
IEVYUEVDVF9FUSgwLCBzZW50X25hY2tzX1sxXSk7CiB9CiAKIFRFU1RfRihUZXN0TmFja01vZHVs
ZSwgV3JhcHBpbmdTZXFOdW1DbGVhclRvS2V5ZnJhbWUpIHsKLSAgbmFja19tb2R1bGVfLk9uUmVj
ZWl2ZWRQYWNrZXQoMHhmZmZlLCBmYWxzZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFj
a2V0KDEsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMHhmZmZlLCBm
YWxzZSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBmYWxzZSwg
ZmFsc2UpOwogICBFWFBFQ1RfRVEoMnUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAgIEVYUEVDVF9F
USgweGZmZmYsIHNlbnRfbmFja3NfWzBdKTsKICAgRVhQRUNUX0VRKDAsIHNlbnRfbmFja3NfWzFd
KTsKIAogICBzZW50X25hY2tzXy5jbGVhcigpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBh
Y2tldCgyLCB0cnVlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMiwgdHJ1ZSwg
ZmFsc2UpOwogICBFWFBFQ1RfRVEoMHUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAKLSAgbmFja19t
b2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNTAxLCB0cnVlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVj
ZWl2ZWRQYWNrZXQoNTAxLCB0cnVlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSg0OTh1LCBzZW50X25h
Y2tzXy5zaXplKCkpOwogICBmb3IgKGludCBzZXFfbnVtID0gMzsgc2VxX251bSA8IDUwMTsgKytz
ZXFfbnVtKQogICAgIEVYUEVDVF9FUShzZXFfbnVtLCBzZW50X25hY2tzX1tzZXFfbnVtIC0gM10p
OwogCiAgIHNlbnRfbmFja3NfLmNsZWFyKCk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFj
a2V0KDEwMDEsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwMSwg
ZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDQ5OXUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAg
IGZvciAoaW50IHNlcV9udW0gPSA1MDI7IHNlcV9udW0gPCAxMDAxOyArK3NlcV9udW0pCiAgICAg
RVhQRUNUX0VRKHNlcV9udW0sIHNlbnRfbmFja3NfW3NlcV9udW0gLSA1MDJdKTsKQEAgLTkxLDcg
KzkyLDcgQEAgVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBXcmFwcGluZ1NlcU51bUNsZWFyVG9LZXlm
cmFtZSkgewogICAvLyBJdCB3aWxsIHRoZW4gY2xlYXIgYWxsIG5hY2tzIHVwIHRvIHRoZSBuZXh0
IGtleWZyYW1lIChzZXEgbnVtIDIpLAogICAvLyB0aHVzIHJlbW92aW5nIDB4ZmZmZiBhbmQgMCBm
cm9tIHRoZSBuYWNrIGxpc3QuCiAgIHNlbnRfbmFja3NfLmNsZWFyKCk7Ci0gIG5hY2tfbW9kdWxl
Xy5PblJlY2VpdmVkUGFja2V0KDEwMDQsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2
ZWRQYWNrZXQoMTAwNCwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDJ1LCBzZW50X25hY2tz
Xy5zaXplKCkpOwogICBFWFBFQ1RfRVEoMTAwMiwgc2VudF9uYWNrc19bMF0pOwogICBFWFBFQ1Rf
RVEoMTAwMywgc2VudF9uYWNrc19bMV0pOwpAQCAtMTA3LDcgKzEwOCw3IEBAIFRFU1RfRihUZXN0
TmFja01vZHVsZSwgV3JhcHBpbmdTZXFOdW1DbGVhclRvS2V5ZnJhbWUpIHsKIAogICAvLyBBZGRp
bmcgcGFja2V0IDEwMDcgd2lsbCBjYXVzZSB0aGUgbmFjayBtb2R1bGUgdG8gb3ZlcmZsb3cgYWdh
aW4sIHRodXMKICAgLy8gY2xlYXJpbmcgZXZlcnl0aGluZyB1cCB0byA1MDEgd2hpY2ggaXMgdGhl
IG5leHQga2V5ZnJhbWUuCi0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMDcsIGZh
bHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwNywgZmFsc2UsIGZhbHNl
KTsKICAgc2VudF9uYWNrc18uY2xlYXIoKTsKICAgY2xvY2tfLT5BZHZhbmNlVGltZU1pbGxpc2Vj
b25kcygxMDApOwogICBuYWNrX21vZHVsZV8uUHJvY2VzcygpOwpAQCAtMTQ2LDggKzE0Nyw4IEBA
IFRFU1RfRihUZXN0TmFja01vZHVsZSwgRG9udEJ1cnN0T25UaW1lU2tpcCkgewogfQogCiBURVNU
X0YoVGVzdE5hY2tNb2R1bGUsIFJlc2VuZE5hY2spIHsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2
ZWRQYWNrZXQoMSwgZmFsc2UpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgzLCBm
YWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIGZhbHNlLCBmYWxzZSk7
CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDMsIGZhbHNlLCBmYWxzZSk7CiAgIEVY
UEVDVF9FUSgxdSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQRUNUX0VRKDIsIHNlbnRfbmFj
a3NfWzBdKTsKIApAQCAtMTY5LDE1ICsxNzAsMTUgQEAgVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBS
ZXNlbmROYWNrKSB7CiAgIG5hY2tfbW9kdWxlXy5Qcm9jZXNzKCk7CiAgIEVYUEVDVF9FUSg0dSwg
c2VudF9uYWNrc18uc2l6ZSgpKTsKIAotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgy
LCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDIsIGZhbHNlLCBmYWxz
ZSk7CiAgIGNsb2NrXy0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoNTApOwogICBuYWNrX21vZHVs
ZV8uUHJvY2VzcygpOwogICBFWFBFQ1RfRVEoNHUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiB9CiAK
IFRFU1RfRihUZXN0TmFja01vZHVsZSwgUmVzZW5kUGFja2V0TWF4UmV0cmllcykgewotICBuYWNr
X21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBmYWxzZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJl
Y2VpdmVkUGFja2V0KDMsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQo
MSwgZmFsc2UsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMywgZmFs
c2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDF1LCBzZW50X25hY2tzXy5zaXplKCkpOwogICBFWFBF
Q1RfRVEoMiwgc2VudF9uYWNrc19bMF0pOwogCkBAIC0xOTMsMzUgKzE5NCwzNSBAQCBURVNUX0Yo
VGVzdE5hY2tNb2R1bGUsIFJlc2VuZFBhY2tldE1heFJldHJpZXMpIHsKIH0KIAogVEVTVF9GKFRl
c3ROYWNrTW9kdWxlLCBUb29MYXJnZU5hY2tMaXN0KSB7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2Vp
dmVkUGFja2V0KDAsIGZhbHNlKTsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAw
MSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgwLCBmYWxzZSwgZmFs
c2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAxLCBmYWxzZSwgZmFsc2Up
OwogICBFWFBFQ1RfRVEoMTAwMHUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAgIEVYUEVDVF9FUSgw
LCBrZXlmcmFtZXNfcmVxdWVzdGVkXyk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0
KDEwMDMsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwMywgZmFs
c2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDEwMDB1LCBzZW50X25hY2tzXy5zaXplKCkpOwogICBF
WFBFQ1RfRVEoMSwga2V5ZnJhbWVzX3JlcXVlc3RlZF8pOwotICBuYWNrX21vZHVsZV8uT25SZWNl
aXZlZFBhY2tldCgxMDA0LCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0
KDEwMDQsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSgxMDAwdSwgc2VudF9uYWNrc18uc2l6
ZSgpKTsKICAgRVhQRUNUX0VRKDEsIGtleWZyYW1lc19yZXF1ZXN0ZWRfKTsKIH0KIAogVEVTVF9G
KFRlc3ROYWNrTW9kdWxlLCBUb29MYXJnZU5hY2tMaXN0V2l0aEtleUZyYW1lKSB7Ci0gIG5hY2tf
bW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDAsIGZhbHNlKTsKLSAgbmFja19tb2R1bGVfLk9uUmVj
ZWl2ZWRQYWNrZXQoMSwgdHJ1ZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEw
MDEsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwgZmFsc2UsIGZh
bHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMSwgdHJ1ZSwgZmFsc2UpOwor
ICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAxLCBmYWxzZSwgZmFsc2UpOwogICBF
WFBFQ1RfRVEoOTk5dSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQRUNUX0VRKDAsIGtleWZy
YW1lc19yZXF1ZXN0ZWRfKTsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwMywg
ZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAzLCBmYWxzZSwgZmFs
c2UpOwogICBFWFBFQ1RfRVEoMTAwMHUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAgIEVYUEVDVF9F
USgwLCBrZXlmcmFtZXNfcmVxdWVzdGVkXyk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFj
a2V0KDEwMDUsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwNSwg
ZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDEwMDB1LCBzZW50X25hY2tzXy5zaXplKCkpOwog
ICBFWFBFQ1RfRVEoMSwga2V5ZnJhbWVzX3JlcXVlc3RlZF8pOwogfQogCiBURVNUX0YoVGVzdE5h
Y2tNb2R1bGUsIENsZWFyVXBUbykgewotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgw
LCBmYWxzZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMCwgZmFsc2UpOwor
ICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgwLCBmYWxzZSwgZmFsc2UpOworICBuYWNr
X21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9F
USg5OXUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAKICAgc2VudF9uYWNrc18uY2xlYXIoKTsKQEAg
LTIzMyw4ICsyMzQsOCBAQCBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIENsZWFyVXBUbykgewogfQog
CiBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIENsZWFyVXBUb1dyYXApIHsKLSAgbmFja19tb2R1bGVf
Lk9uUmVjZWl2ZWRQYWNrZXQoMHhmZmYwLCBmYWxzZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2Vp
dmVkUGFja2V0KDB4ZiwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgw
eGZmZjAsIGZhbHNlLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDB4
ZiwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDMwdSwgc2VudF9uYWNrc18uc2l6ZSgpKTsK
IAogICBzZW50X25hY2tzXy5jbGVhcigpOwpAQCAtMjQ2LDIwICsyNDcsMjAgQEAgVEVTVF9GKFRl
c3ROYWNrTW9kdWxlLCBDbGVhclVwVG9XcmFwKSB7CiB9CiAKIFRFU1RfRihUZXN0TmFja01vZHVs
ZSwgUGFja2V0TmFja0NvdW50KSB7Ci0gIEVYUEVDVF9FUSgwLCBuYWNrX21vZHVsZV8uT25SZWNl
aXZlZFBhY2tldCgwLCBmYWxzZSkpOwotICBFWFBFQ1RfRVEoMCwgbmFja19tb2R1bGVfLk9uUmVj
ZWl2ZWRQYWNrZXQoMiwgZmFsc2UpKTsKLSAgRVhQRUNUX0VRKDEsIG5hY2tfbW9kdWxlXy5PblJl
Y2VpdmVkUGFja2V0KDEsIGZhbHNlKSk7CisgIEVYUEVDVF9FUSgwLCBuYWNrX21vZHVsZV8uT25S
ZWNlaXZlZFBhY2tldCgwLCBmYWxzZSwgZmFsc2UpKTsKKyAgRVhQRUNUX0VRKDAsIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDIsIGZhbHNlLCBmYWxzZSkpOworICBFWFBFQ1RfRVEoMSwg
bmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgc2Vu
dF9uYWNrc18uY2xlYXIoKTsKICAgbmFja19tb2R1bGVfLlVwZGF0ZVJ0dCgxMDApOwotICBFWFBF
Q1RfRVEoMCwgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNSwgZmFsc2UpKTsKKyAgRVhQ
RUNUX0VRKDAsIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDUsIGZhbHNlLCBmYWxzZSkp
OwogICBjbG9ja18tPkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMCk7CiAgIG5hY2tfbW9kdWxl
Xy5Qcm9jZXNzKCk7CiAgIGNsb2NrXy0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwKTsKICAg
bmFja19tb2R1bGVfLlByb2Nlc3MoKTsKLSAgRVhQRUNUX0VRKDMsIG5hY2tfbW9kdWxlXy5PblJl
Y2VpdmVkUGFja2V0KDMsIGZhbHNlKSk7Ci0gIEVYUEVDVF9FUSgzLCBuYWNrX21vZHVsZV8uT25S
ZWNlaXZlZFBhY2tldCg0LCBmYWxzZSkpOwotICBFWFBFQ1RfRVEoMCwgbmFja19tb2R1bGVfLk9u
UmVjZWl2ZWRQYWNrZXQoNCwgZmFsc2UpKTsKKyAgRVhQRUNUX0VRKDMsIG5hY2tfbW9kdWxlXy5P
blJlY2VpdmVkUGFja2V0KDMsIGZhbHNlLCBmYWxzZSkpOworICBFWFBFQ1RfRVEoMywgbmFja19t
b2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNCwgZmFsc2UsIGZhbHNlKSk7CisgIEVYUEVDVF9FUSgw
LCBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCg0LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAog
VEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBOYWNrTGlzdEZ1bGxBbmROb092ZXJsYXBXaXRoS2V5ZnJh
bWVzKSB7CkBAIC0yNjcsMTQgKzI2OCw2MyBAQCBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIE5hY2tM
aXN0RnVsbEFuZE5vT3ZlcmxhcFdpdGhLZXlmcmFtZXMpIHsKICAgY29uc3QgdW5zaWduZWQgaW50
IGtGaXJzdEdhcCA9IGtNYXhOYWNrUGFja2V0cyAtIDIwOwogICBjb25zdCB1bnNpZ25lZCBpbnQg
a1NlY29uZEdhcCA9IDIwMDsKICAgdWludDE2X3Qgc2VxX251bSA9IDA7Ci0gIG5hY2tfbW9kdWxl
Xy5PblJlY2VpdmVkUGFja2V0KHNlcV9udW0rKywgdHJ1ZSk7CisgIG5hY2tfbW9kdWxlXy5PblJl
Y2VpdmVkUGFja2V0KHNlcV9udW0rKywgdHJ1ZSwgZmFsc2UpOwogICBzZXFfbnVtICs9IGtGaXJz
dEdhcDsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoc2VxX251bSsrLCB0cnVlKTsK
KyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoc2VxX251bSsrLCB0cnVlLCBmYWxzZSk7
CiAgIEVYUEVDVF9FUShrRmlyc3RHYXAsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAgIHNlbnRfbmFj
a3NfLmNsZWFyKCk7CiAgIHNlcV9udW0gKz0ga1NlY29uZEdhcDsKLSAgbmFja19tb2R1bGVfLk9u
UmVjZWl2ZWRQYWNrZXQoc2VxX251bSwgdHJ1ZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVk
UGFja2V0KHNlcV9udW0sIHRydWUsIGZhbHNlKTsKICAgRVhQRUNUX0VRKGtTZWNvbmRHYXAsIHNl
bnRfbmFja3NfLnNpemUoKSk7CiB9CiAKK1RFU1RfRihUZXN0TmFja01vZHVsZSwgSGFuZGxlRmVj
UmVjb3ZlcmVkUGFja2V0KSB7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIGZh
bHNlLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDQsIGZhbHNlLCB0
cnVlKTsKKyAgRVhQRUNUX0VRKDB1LCBzZW50X25hY2tzXy5zaXplKCkpOworICBuYWNrX21vZHVs
ZV8uT25SZWNlaXZlZFBhY2tldCg1LCBmYWxzZSwgZmFsc2UpOworICBFWFBFQ1RfRVEoMnUsIHNl
bnRfbmFja3NfLnNpemUoKSk7Cit9CisKK1RFU1RfRihUZXN0TmFja01vZHVsZSwgU2VuZE5hY2tX
aXRob3V0RGVsYXkpIHsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwgZmFsc2Us
IGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwLCBmYWxzZSwgZmFs
c2UpOworICBFWFBFQ1RfRVEoOTl1LCBzZW50X25hY2tzXy5zaXplKCkpOworfQorCitjbGFzcyBU
ZXN0TmFja01vZHVsZVdpdGhGaWVsZFRyaWFsIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgTmFja1NlbmRlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgS2V5RnJhbWVSZXF1ZXN0
U2VuZGVyIHsKKyBwcm90ZWN0ZWQ6CisgIFRlc3ROYWNrTW9kdWxlV2l0aEZpZWxkVHJpYWwoKQor
ICAgICAgOiBuYWNrX2RlbGF5X2ZpZWxkX3RyaWFsXygiV2ViUlRDLVNlbmROYWNrRGVsYXlNcy8x
MC8iKSwKKyAgICAgICAgY2xvY2tfKG5ldyBTaW11bGF0ZWRDbG9jaygwKSksCisgICAgICAgIG5h
Y2tfbW9kdWxlXyhjbG9ja18uZ2V0KCksIHRoaXMsIHRoaXMpLAorICAgICAgICBrZXlmcmFtZXNf
cmVxdWVzdGVkXygwKSB7fQorCisgIHZvaWQgU2VuZE5hY2soY29uc3Qgc3RkOjp2ZWN0b3I8dWlu
dDE2X3Q+JiBzZXF1ZW5jZV9udW1iZXJzKSBvdmVycmlkZSB7CisgICAgc2VudF9uYWNrc18uaW5z
ZXJ0KHNlbnRfbmFja3NfLmVuZCgpLCBzZXF1ZW5jZV9udW1iZXJzLmJlZ2luKCksCisgICAgICAg
ICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMuZW5kKCkpOworICB9CisKKyAgdm9pZCBS
ZXF1ZXN0S2V5RnJhbWUoKSBvdmVycmlkZSB7ICsra2V5ZnJhbWVzX3JlcXVlc3RlZF87IH0KKwor
ICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBuYWNrX2RlbGF5X2ZpZWxkX3RyaWFsXzsKKyAgc3Rk
Ojp1bmlxdWVfcHRyPFNpbXVsYXRlZENsb2NrPiBjbG9ja187CisgIE5hY2tNb2R1bGUgbmFja19t
b2R1bGVfOworICBzdGQ6OnZlY3Rvcjx1aW50MTZfdD4gc2VudF9uYWNrc187CisgIGludCBrZXlm
cmFtZXNfcmVxdWVzdGVkXzsKK307CisKK1RFU1RfRihUZXN0TmFja01vZHVsZVdpdGhGaWVsZFRy
aWFsLCBTZW5kTmFja1dpdGhEZWxheSkgeworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tl
dCgwLCBmYWxzZSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAs
IGZhbHNlLCBmYWxzZSk7CisgIEVYUEVDVF9FUSgwdSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKKyAg
Y2xvY2tfLT5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMCk7CisgIG5hY2tfbW9kdWxlXy5PblJl
Y2VpdmVkUGFja2V0KDEwNiwgZmFsc2UsIGZhbHNlKTsKKyAgRVhQRUNUX0VRKDk5dSwgc2VudF9u
YWNrc18uc2l6ZSgpKTsKKyAgY2xvY2tfLT5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMCk7Cisg
IG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwOSwgZmFsc2UsIGZhbHNlKTsKKyAgRVhQ
RUNUX0VRKDEwNHUsIHNlbnRfbmFja3NfLnNpemUoKSk7Cit9CiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3JlY2VpdmVyLmNjCmlu
ZGV4IDdmMjJiNzNhNWE2MjFhMjg5ZTg2MGEwYmQ0ZjlkOTI2MzU0MzYwYTUuLjViZjI3MjU3YjA3
YTMxYTZiOWQwYWZjN2M1Y2VjNDIyMDI3YWRhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3JlY2VpdmVy
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL3JlY2VpdmVyLmNjCkBAIC0yOCwzMiArMjgsMjUgQEAgbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKIGVudW0geyBrTWF4UmVjZWl2ZXJEZWxheU1zID0gMTAwMDAgfTsKIAotVkNN
UmVjZWl2ZXI6OlZDTVJlY2VpdmVyKFZDTVRpbWluZyogdGltaW5nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIENsb2NrKiBjbG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudEZh
Y3RvcnkqIGV2ZW50X2ZhY3RvcnkpCitWQ01SZWNlaXZlcjo6VkNNUmVjZWl2ZXIoVkNNVGltaW5n
KiB0aW1pbmcsIENsb2NrKiBjbG9jaykKICAgICA6IFZDTVJlY2VpdmVyOjpWQ01SZWNlaXZlcih0
aW1pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2ssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXZlbnRfZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpXcmFwVW5pcXVlKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OldyYXBVbmlxdWUoRXZlbnRXcmFwcGVy
OjpDcmVhdGUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgIC8v
IE5hY2tTZW5kZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKSAgLy8g
S2V5ZnJhbWVSZXF1ZXN0U2VuZGVyCiB7fQogCiBWQ01SZWNlaXZlcjo6VkNNUmVjZWl2ZXIoVkNN
VGltaW5nKiB0aW1pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvY2sqIGNsb2NrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50RmFjdG9yeSogZXZlbnRfZmFjdG9yeSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBOYWNrU2VuZGVyKiBuYWNrX3NlbmRlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1lX3JlcXVlc3Rf
c2VuZGVyKQotICAgIDogVkNNUmVjZWl2ZXIoCi0gICAgICAgICAgdGltaW5nLAotICAgICAgICAg
IGNsb2NrLAotICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+KGV2ZW50X2Zh
Y3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBldmVu
dF9mYWN0b3J5LT5DcmVhdGVFdmVudCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCi0gICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4oZXZlbnRfZmFjdG9yeQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/IGV2ZW50X2ZhY3RvcnktPkNyZWF0ZUV2ZW50KCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBFdmVudFdyYXBw
ZXI6OkNyZWF0ZSgpKSwKLSAgICAgICAgICBuYWNrX3NlbmRlciwKLSAgICAgICAgICBrZXlmcmFt
ZV9yZXF1ZXN0X3NlbmRlcikge30KKyAgICA6IFZDTVJlY2VpdmVyKHRpbWluZywKKyAgICAgICAg
ICAgICAgICAgIGNsb2NrLAorICAgICAgICAgICAgICAgICAgYWJzbDo6V3JhcFVuaXF1ZShFdmVu
dFdyYXBwZXI6OkNyZWF0ZSgpKSwKKyAgICAgICAgICAgICAgICAgIGFic2w6OldyYXBVbmlxdWUo
RXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCisgICAgICAgICAgICAgICAgICBuYWNrX3NlbmRlciwK
KyAgICAgICAgICAgICAgICAgIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKSB7fQogCiBWQ01SZWNl
aXZlcjo6VkNNUmVjZWl2ZXIoVkNNVGltaW5nKiB0aW1pbmcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ2xvY2sqIGNsb2NrLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcmVjZWl2ZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L3JlY2VpdmVyLmgKaW5kZXggNGY2NTkwZDI3NDgyMmYzOTJkYzJhZGVhYWNhMTA2M2ZkMzZiOWM0
MS4uNTAzY2FlN2M4ZGVlZGQ2N2U5YzRkZGIwYzIxYTU5NjYwYWRlMjZkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvcmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlci5oCkBAIC0zMCwxNyArMzAsMTYg
QEAgY2xhc3MgVkNNUmVjZWl2ZXIgewogIHB1YmxpYzoKICAgLy8gQ29uc3RydWN0b3IgZm9yIGN1
cnJlbnQgaW50ZXJmYWNlLCB3aWxsIGJlIHJlbW92ZWQgd2hlbiB0aGUKICAgLy8gbmV3IGppdHRl
ciBidWZmZXIgaXMgaW4gcGxhY2UuCi0gIFZDTVJlY2VpdmVyKFZDTVRpbWluZyogdGltaW5nLCBD
bG9jayogY2xvY2ssIEV2ZW50RmFjdG9yeSogZXZlbnRfZmFjdG9yeSk7CisgIFZDTVJlY2VpdmVy
KFZDTVRpbWluZyogdGltaW5nLCBDbG9jayogY2xvY2spOwogCiAgIC8vIENyZWF0ZSBtZXRob2Qg
Zm9yIHRoZSBuZXcgaml0dGVyIGJ1ZmZlci4KICAgVkNNUmVjZWl2ZXIoVkNNVGltaW5nKiB0aW1p
bmcsCiAgICAgICAgICAgICAgIENsb2NrKiBjbG9jaywKLSAgICAgICAgICAgICAgRXZlbnRGYWN0
b3J5KiBldmVudF9mYWN0b3J5LAogICAgICAgICAgICAgICBOYWNrU2VuZGVyKiBuYWNrX3NlbmRl
ciwKICAgICAgICAgICAgICAgS2V5RnJhbWVSZXF1ZXN0U2VuZGVyKiBrZXlmcmFtZV9yZXF1ZXN0
X3NlbmRlcik7CiAKLSAgLy8gVXNpbmcgdGhpcyBjb25zdHJ1Y3RvciwgeW91IGNhbiBzcGVjaWZ5
IGEgZGlmZmVyZW50IGV2ZW50IGZhY3RvcnkgZm9yIHRoZQotICAvLyBqaXR0ZXIgYnVmZmVyLiBV
c2VmdWwgZm9yIHVuaXQgdGVzdHMgd2hlbiB5b3Ugd2FudCB0byBzaW11bGF0ZSBpbmNvbWluZwor
ICAvLyBVc2luZyB0aGlzIGNvbnN0cnVjdG9yLCB5b3UgY2FuIHNwZWNpZnkgYSBkaWZmZXJlbnQg
ZXZlbnQgaW1wbGVtZXRhdGlvbiBmb3IKKyAgLy8gdGhlIGppdHRlciBidWZmZXIuIFVzZWZ1bCBm
b3IgdW5pdCB0ZXN0cyB3aGVuIHlvdSB3YW50IHRvIHNpbXVsYXRlIGluY29taW5nCiAgIC8vIHBh
Y2tldHMsIGluIHdoaWNoIGNhc2UgdGhlIGppdHRlciBidWZmZXIncyB3YWl0IGV2ZW50IGlzIGRp
ZmZlcmVudCBmcm9tCiAgIC8vIHRoYXQgb2YgVkNNUmVjZWl2ZXIgaXRzZWxmLgogICAvLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvcmVjZWl2ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlcl91bml0
dGVzdC5jYwppbmRleCAxZmY4NjYyOThlMmNjZGY0NjE2NjMxZmI5MTFkZDhhYzgwNDlmZWZkLi5i
YTM1ZjY5MzU4MmQ0ODFjM2NiYjEyMDRjZDNmZDQwNzkxM2E0ZWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9yZWNlaXZlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlcl91bml0dGVzdC5jYwpA
QCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3BhY2tldC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3JlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvdGVzdC9zdHJlYW1fZ2VuZXJhdG9yLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvdGVzdC90ZXN0X3V0aWwuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy90aW1pbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgpAQCAtMzEsNyArMzAsNyBA
QCBjbGFzcyBUZXN0VkNNUmVjZWl2ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgVGVz
dFZDTVJlY2VpdmVyKCkKICAgICAgIDogY2xvY2tfKG5ldyBTaW11bGF0ZWRDbG9jaygwKSksCiAg
ICAgICAgIHRpbWluZ18oY2xvY2tfLmdldCgpKSwKLSAgICAgICAgcmVjZWl2ZXJfKCZ0aW1pbmdf
LCBjbG9ja18uZ2V0KCksICZldmVudF9mYWN0b3J5XykgeworICAgICAgICByZWNlaXZlcl8oJnRp
bWluZ18sIGNsb2NrXy5nZXQoKSkgewogICAgIHN0cmVhbV9nZW5lcmF0b3JfLnJlc2V0KAogICAg
ICAgICBuZXcgU3RyZWFtR2VuZXJhdG9yKDAsIGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkp
KTsKICAgfQpAQCAtODEsNyArODAsNiBAQCBjbGFzcyBUZXN0VkNNUmVjZWl2ZXIgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8U2ltdWxhdGVkQ2xvY2s+IGNs
b2NrXzsKICAgVkNNVGltaW5nIHRpbWluZ187Ci0gIE51bGxFdmVudEZhY3RvcnkgZXZlbnRfZmFj
dG9yeV87CiAgIFZDTVJlY2VpdmVyIHJlY2VpdmVyXzsKICAgc3RkOjp1bmlxdWVfcHRyPFN0cmVh
bUdlbmVyYXRvcj4gc3RyZWFtX2dlbmVyYXRvcl87CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdGVz
dC90ZXN0X3V0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL3Rlc3QvdGVzdF91dGlsLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGEzOGZjNThiMTI4NGJjNzgxYjFjNmY1Y2Q2NDJmN2Y2NmRjM2FlNDguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdGVzdC90
ZXN0X3V0aWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IChjKSAyMDEyIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KLSAqLwotCi0jaWZuZGVmIE1PRFVMRVNfVklERU9fQ09ESU5HX1RFU1RfVEVTVF9VVElMX0hf
Ci0jZGVmaW5lIE1PRFVMRVNfVklERU9fQ09ESU5HX1RFU1RfVEVTVF9VVElMX0hfCi0KLSNpbmNs
dWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmgiCi0KLWNsYXNzIE51
bGxFdmVudEZhY3RvcnkgOiBwdWJsaWMgd2VicnRjOjpFdmVudEZhY3RvcnkgewotIHB1YmxpYzoK
LSAgdmlydHVhbCB+TnVsbEV2ZW50RmFjdG9yeSgpIHt9Ci0KLSAgd2VicnRjOjpFdmVudFdyYXBw
ZXIqIENyZWF0ZUV2ZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gbmV3IE51bGxFdmVudDsgfQotCi0g
cHJpdmF0ZToKLSAgLy8gUHJpdmF0ZSBjbGFzcyB0byBhdm9pZCBtb3JlIGRlcGVuZGVuY2llcyBv
biBpdCBpbiB0ZXN0cy4KLSAgY2xhc3MgTnVsbEV2ZW50IDogcHVibGljIHdlYnJ0Yzo6RXZlbnRX
cmFwcGVyIHsKLSAgIHB1YmxpYzoKLSAgICB+TnVsbEV2ZW50KCkgb3ZlcnJpZGUge30KLSAgICBi
b29sIFNldCgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB3ZWJydGM6OkV2ZW50VHlw
ZVdyYXBwZXIgV2FpdCh1bnNpZ25lZCBsb25nIG1heF90aW1lKSBvdmVycmlkZSB7ICAvLyBOT0xJ
TlQKLSAgICAgIHJldHVybiB3ZWJydGM6OmtFdmVudFRpbWVvdXQ7Ci0gICAgfQotICB9OwotfTsK
LQotI2VuZGlmICAvLyBNT0RVTEVTX1ZJREVPX0NPRElOR19URVNUX1RFU1RfVVRJTF9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvdXRpbGl0eS9pdmZfZmlsZV93cml0ZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkv
aXZmX2ZpbGVfd3JpdGVyLmgKaW5kZXggN2Q5MTdlZDM1ZWU5YjEwZjk4N2VjZmM5NGExY2VhODgw
M2FhZmQzMi4uNDc3NWJlZGRhYzg1YTUxYjY5Mjk4YzViMTM1NTJlNzRhNTM5NWRlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvdXRpbGl0eS9pdmZfZmlsZV93cml0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5
L2l2Zl9maWxlX3dyaXRlci5oCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHN0cmluZz4KIAotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVv
X2ZyYW1lLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9maWxlLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdlLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9t
b3ZpbmdfYXZlcmFnZS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIyM2UzZDky
ZjNlNjA2M2VhY2RlZGZkODgwMmE5ZmZhODNkMWM3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdlLmNjCisr
KyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTYg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdlLmgiCi0K
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1Nb3ZpbmdBdmVy
YWdlOjpNb3ZpbmdBdmVyYWdlKHNpemVfdCBzKSA6IHN1bV9oaXN0b3J5XyhzICsgMSwgMCkge30K
LU1vdmluZ0F2ZXJhZ2U6On5Nb3ZpbmdBdmVyYWdlKCkgPSBkZWZhdWx0OwotCi12b2lkIE1vdmlu
Z0F2ZXJhZ2U6OkFkZFNhbXBsZShpbnQgc2FtcGxlKSB7Ci0gIGNvdW50XysrOwotICBzdW1fICs9
IHNhbXBsZTsKLSAgc3VtX2hpc3RvcnlfW2NvdW50XyAlIHN1bV9oaXN0b3J5Xy5zaXplKCldID0g
c3VtXzsKLX0KLQotYWJzbDo6b3B0aW9uYWw8aW50PiBNb3ZpbmdBdmVyYWdlOjpHZXRBdmVyYWdl
KCkgY29uc3QgewotICByZXR1cm4gR2V0QXZlcmFnZShzaXplKCkpOwotfQotCi1hYnNsOjpvcHRp
b25hbDxpbnQ+IE1vdmluZ0F2ZXJhZ2U6OkdldEF2ZXJhZ2Uoc2l6ZV90IG51bV9zYW1wbGVzKSBj
b25zdCB7Ci0gIGlmIChudW1fc2FtcGxlcyA+IHNpemUoKSB8fCBudW1fc2FtcGxlcyA9PSAwKQot
ICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwotICBpbnQgc3VtID0gc3VtXyAtIHN1bV9oaXN0b3J5
X1soY291bnRfIC0gbnVtX3NhbXBsZXMpICUgc3VtX2hpc3RvcnlfLnNpemUoKV07Ci0gIHJldHVy
biBzdW0gLyBzdGF0aWNfY2FzdDxpbnQ+KG51bV9zYW1wbGVzKTsKLX0KLQotdm9pZCBNb3ZpbmdB
dmVyYWdlOjpSZXNldCgpIHsKLSAgY291bnRfID0gMDsKLSAgc3VtXyA9IDA7Ci0gIHN0ZDo6Zmls
bChzdW1faGlzdG9yeV8uYmVnaW4oKSwgc3VtX2hpc3RvcnlfLmVuZCgpLCAwKTsKLX0KLQotc2l6
ZV90IE1vdmluZ0F2ZXJhZ2U6OnNpemUoKSBjb25zdCB7Ci0gIHJldHVybiBzdGQ6Om1pbihjb3Vu
dF8sIHN1bV9oaXN0b3J5Xy5zaXplKCkgLSAxKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRp
bGl0eS9tb3ZpbmdfYXZlcmFnZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2Nl
NjMzYjE4ZmNjMTZmNmYwMDFkNzE3ZDAxZDE2ZGQ1YWRiNzk2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvbW92aW5nX2F2ZXJhZ2Uu
aAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAy
MDE1IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwot
Ci0jaWZuZGVmIE1PRFVMRVNfVklERU9fQ09ESU5HX1VUSUxJVFlfTU9WSU5HX0FWRVJBR0VfSF8K
LSNkZWZpbmUgTU9EVUxFU19WSURFT19DT0RJTkdfVVRJTElUWV9NT1ZJTkdfQVZFUkFHRV9IXwot
Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgot
Ci1uYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIE1vdmluZ0F2ZXJhZ2UgewotIHB1YmxpYzoKLSAg
ZXhwbGljaXQgTW92aW5nQXZlcmFnZShzaXplX3Qgcyk7Ci0gIH5Nb3ZpbmdBdmVyYWdlKCk7Ci0g
IHZvaWQgQWRkU2FtcGxlKGludCBzYW1wbGUpOwotICBhYnNsOjpvcHRpb25hbDxpbnQ+IEdldEF2
ZXJhZ2UoKSBjb25zdDsKLSAgYWJzbDo6b3B0aW9uYWw8aW50PiBHZXRBdmVyYWdlKHNpemVfdCBu
dW1fc2FtcGxlcykgY29uc3Q7Ci0gIHZvaWQgUmVzZXQoKTsKLSAgc2l6ZV90IHNpemUoKSBjb25z
dDsKLQotIHByaXZhdGU6Ci0gIHNpemVfdCBjb3VudF8gPSAwOwotICBpbnQgc3VtXyA9IDA7Ci0g
IHN0ZDo6dmVjdG9yPGludD4gc3VtX2hpc3RvcnlfOwotfTsKLX0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKLQotI2VuZGlmICAvLyBNT0RVTEVTX1ZJREVPX0NPRElOR19VVElMSVRZX01PVklOR19BVkVS
QUdFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdlX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZV91bml0dGVzdC5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzJmYzc3NWE4MjczMmRjZDE3NWJlNzYxZWI2MjBkODVkZDYw
ZDZhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy91dGlsaXR5L21vdmluZ19hdmVyYWdlX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEs
NjIgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdlLmgiCi0KLSNpbmNsdWRlICJ0ZXN0L2d0
ZXN0LmgiCi0KLVRFU1QoTW92aW5nQXZlcmFnZVRlc3QsIEVtcHR5QXZlcmFnZSkgewotICB3ZWJy
dGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMSk7Ci0gIEVYUEVDVF9FUSgwdSwgbW92
aW5nX2F2ZXJhZ2Uuc2l6ZSgpKTsKLSAgRVhQRUNUX0ZBTFNFKG1vdmluZ19hdmVyYWdlLkdldEF2
ZXJhZ2UoMCkpOwotfQotCi0vLyBUZXN0IHNpbmdsZSB2YWx1ZS4KLVRFU1QoTW92aW5nQXZlcmFn
ZVRlc3QsIE9uZUVsZW1lbnQpIHsKLSAgd2VicnRjOjpNb3ZpbmdBdmVyYWdlIG1vdmluZ19hdmVy
YWdlKDEpOwotICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoMyk7Ci0gIEVYUEVDVF9FUSgxdSwg
bW92aW5nX2F2ZXJhZ2Uuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDMsICptb3ZpbmdfYXZlcmFnZS5H
ZXRBdmVyYWdlKCkpOwotICBFWFBFQ1RfRVEoMywgKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2Uo
MSkpOwotICBFWFBFQ1RfRkFMU0UobW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZSgyKSk7Ci19Ci0K
LVRFU1QoTW92aW5nQXZlcmFnZVRlc3QsIEdldEF2ZXJhZ2UpIHsKLSAgd2VicnRjOjpNb3ZpbmdB
dmVyYWdlIG1vdmluZ19hdmVyYWdlKDEwMjQpOwotICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUo
MSk7Ci0gIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgxKTsKLSAgbW92aW5nX2F2ZXJhZ2UuQWRk
U2FtcGxlKDMpOwotICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoMyk7Ci0gIEVYUEVDVF9FUSgq
bW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZSg0KSwgMik7Ci0gIEVYUEVDVF9FUSgqbW92aW5nX2F2
ZXJhZ2UuR2V0QXZlcmFnZSgyKSwgMyk7Ci0gIEVYUEVDVF9GQUxTRShtb3ZpbmdfYXZlcmFnZS5H
ZXRBdmVyYWdlKDApKTsKLX0KLQotVEVTVChNb3ZpbmdBdmVyYWdlVGVzdCwgUmVzZXQpIHsKLSAg
d2VicnRjOjpNb3ZpbmdBdmVyYWdlIG1vdmluZ19hdmVyYWdlKDUpOwotICBtb3ZpbmdfYXZlcmFn
ZS5BZGRTYW1wbGUoMSk7Ci0gIEVYUEVDVF9FUSgxLCAqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFn
ZSgxKSk7Ci0gIG1vdmluZ19hdmVyYWdlLlJlc2V0KCk7Ci0gIEVYUEVDVF9GQUxTRShtb3Zpbmdf
YXZlcmFnZS5HZXRBdmVyYWdlKDEpKTsKLSAgRVhQRUNUX0ZBTFNFKG1vdmluZ19hdmVyYWdlLkdl
dEF2ZXJhZ2UoNikpOwotfQotCi1URVNUKE1vdmluZ0F2ZXJhZ2VUZXN0LCBNYW55U2FtcGxlcykg
ewotICB3ZWJydGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMTApOwotICBmb3IgKGlu
dCBpID0gMTsgaSA8IDExOyBpKyspIHsKLSAgICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoaSk7
Ci0gIH0KLSAgRVhQRUNUX0VRKCptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlKCksIDUpOwotICBt
b3ZpbmdfYXZlcmFnZS5SZXNldCgpOwotICBmb3IgKGludCBpID0gMTsgaSA8IDIwMDE7IGkrKykg
ewotICAgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZShpKTsKLSAgfQotICBFWFBFQ1RfRVEoKm1v
dmluZ19hdmVyYWdlLkdldEF2ZXJhZ2UoKSwgMTk5NSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91
dGlsaXR5L3F1YWxpdHlfc2NhbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxlci5j
YwppbmRleCBlYTE5ZTQxOGM5ZDRlOTIxZmNlMGM5N2Q2ZDZhOTM0MzFmNmNlNzI1Li4zMmFlMTY2
YTljNjc3YTIxY2MzOTQ2ZjJhMjY1NzJmNTJkNWRiMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGls
aXR5L3F1YWxpdHlfc2NhbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0eV9zY2FsZXIu
Y2MKQEAgLTE3Myw4ICsxNzMsOCBAQCB2b2lkIFF1YWxpdHlTY2FsZXI6OkNoZWNrUXAoKSB7CiAg
IC8vIElmIHdlIGhhdmUgbm90IG9ic2VydmVkIGF0IGxlYXN0IHRoaXMgbWFueSBmcmFtZXMgd2Ug
Y2FuJ3QgbWFrZSBhIGdvb2QKICAgLy8gc2NhbGluZyBkZWNpc2lvbi4KICAgY29uc3Qgc2l6ZV90
IGZyYW1lcyA9IGNvbmZpZ18udXNlX2FsbF9kcm9wX3JlYXNvbnMKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA/IGZyYW1lZHJvcF9wZXJjZW50X2FsbF8uc2l6ZSgpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBmcmFtZWRyb3BfcGVyY2VudF9tZWRpYV9vcHRfLnNpemUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZyYW1lZHJvcF9wZXJjZW50X2FsbF8uU2l6ZSgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmcmFtZWRyb3BfcGVyY2VudF9tZWRpYV9v
cHRfLlNpemUoKTsKICAgaWYgKGZyYW1lcyA8IGtNaW5GcmFtZXNOZWVkZWRUb1NjYWxlKSB7CiAg
ICAgb2JzZXJ2ZWRfZW5vdWdoX2ZyYW1lc18gPSBmYWxzZTsKICAgICByZXR1cm47CkBAIC0xODMs
OCArMTgzLDkgQEAgdm9pZCBRdWFsaXR5U2NhbGVyOjpDaGVja1FwKCkgewogCiAgIC8vIENoZWNr
IGlmIHdlIHNob3VsZCBzY2FsZSBkb3duIGR1ZSB0byBoaWdoIGZyYW1lIGRyb3AuCiAgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPGludD4gZHJvcF9yYXRlID0KLSAgICAgIGNvbmZpZ18udXNlX2FsbF9k
cm9wX3JlYXNvbnMgPyBmcmFtZWRyb3BfcGVyY2VudF9hbGxfLkdldEF2ZXJhZ2UoKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZyYW1lZHJvcF9wZXJjZW50X21lZGlhX29w
dF8uR2V0QXZlcmFnZSgpOworICAgICAgY29uZmlnXy51c2VfYWxsX2Ryb3BfcmVhc29ucworICAg
ICAgICAgID8gZnJhbWVkcm9wX3BlcmNlbnRfYWxsXy5HZXRBdmVyYWdlUm91bmRlZERvd24oKQor
ICAgICAgICAgIDogZnJhbWVkcm9wX3BlcmNlbnRfbWVkaWFfb3B0Xy5HZXRBdmVyYWdlUm91bmRl
ZERvd24oKTsKICAgaWYgKGRyb3BfcmF0ZSAmJiAqZHJvcF9yYXRlID49IGtGcmFtZWRyb3BQZXJj
ZW50VGhyZXNob2xkKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUmVwb3J0aW5nIGhpZ2gg
UVAsIGZyYW1lZHJvcCBwZXJjZW50ICIgPDwgKmRyb3BfcmF0ZTsKICAgICBSZXBvcnRRcEhpZ2go
KTsKQEAgLTE5MiwxMSArMTkzLDEyIEBAIHZvaWQgUXVhbGl0eVNjYWxlcjo6Q2hlY2tRcCgpIHsK
ICAgfQogCiAgIC8vIENoZWNrIGlmIHdlIHNob3VsZCBzY2FsZSB1cCBvciBkb3duIGJhc2VkIG9u
IFFQLgotICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+IGF2Z19xcF9oaWdoID0gcXBfc21vb3Ro
ZXJfaGlnaF8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/
IHFwX3Ntb290aGVyX2hpZ2hfLT5HZXRBdmcoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogYXZlcmFnZV9xcF8uR2V0QXZlcmFnZSgpOworICBjb25zdCBh
YnNsOjpvcHRpb25hbDxpbnQ+IGF2Z19xcF9oaWdoID0KKyAgICAgIHFwX3Ntb290aGVyX2hpZ2hf
ID8gcXBfc21vb3RoZXJfaGlnaF8tPkdldEF2ZygpCisgICAgICAgICAgICAgICAgICAgICAgICA6
IGF2ZXJhZ2VfcXBfLkdldEF2ZXJhZ2VSb3VuZGVkRG93bigpOwogICBjb25zdCBhYnNsOjpvcHRp
b25hbDxpbnQ+IGF2Z19xcF9sb3cgPQotICAgICAgcXBfc21vb3RoZXJfbG93XyA/IHFwX3Ntb290
aGVyX2xvd18tPkdldEF2ZygpIDogYXZlcmFnZV9xcF8uR2V0QXZlcmFnZSgpOworICAgICAgcXBf
c21vb3RoZXJfbG93XyA/IHFwX3Ntb290aGVyX2xvd18tPkdldEF2ZygpCisgICAgICAgICAgICAg
ICAgICAgICAgIDogYXZlcmFnZV9xcF8uR2V0QXZlcmFnZVJvdW5kZWREb3duKCk7CiAgIGlmIChh
dmdfcXBfaGlnaCAmJiBhdmdfcXBfbG93KSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQ2hl
Y2tpbmcgYXZlcmFnZSBRUCAiIDw8ICphdmdfcXBfaGlnaCA8PCAiICgiCiAgICAgICAgICAgICAg
ICAgICAgICA8PCAqYXZnX3FwX2xvdyA8PCAiKS4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0
eS9xdWFsaXR5X3NjYWxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxlci5oCmluZGV4
IDMwOTFlYmYzNmM0MmU5ZDk2NzI4ZTAwN2U3MTY2NDJiN2E3NzIzOWUuLjI3MmMwMmU1M2E4MDM4
MTUxMzQ5M2QxMjczOTU0NjkzMmZiNzE0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvcXVh
bGl0eV9zY2FsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3F1YWxpdHlfc2NhbGVyLmgKQEAgLTE3
LDggKzE3LDggQEAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAi
YXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVz
LmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJp
bWVudHMvcXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9u
dW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NlcXVlbmNlZF90
YXNrX2NoZWNrZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC03OSw5ICs3OSwxMCBAQCBj
bGFzcyBRdWFsaXR5U2NhbGVyIHsKICAgY29uc3QgVmlkZW9FbmNvZGVyOjpRcFRocmVzaG9sZHMg
dGhyZXNob2xkc187CiAgIGNvbnN0IGludDY0X3Qgc2FtcGxpbmdfcGVyaW9kX21zXzsKICAgYm9v
bCBmYXN0X3JhbXB1cF8gUlRDX0dVQVJERURfQlkoJnRhc2tfY2hlY2tlcl8pOwotICBNb3ZpbmdB
dmVyYWdlIGF2ZXJhZ2VfcXBfIFJUQ19HVUFSREVEX0JZKCZ0YXNrX2NoZWNrZXJfKTsKLSAgTW92
aW5nQXZlcmFnZSBmcmFtZWRyb3BfcGVyY2VudF9tZWRpYV9vcHRfIFJUQ19HVUFSREVEX0JZKCZ0
YXNrX2NoZWNrZXJfKTsKLSAgTW92aW5nQXZlcmFnZSBmcmFtZWRyb3BfcGVyY2VudF9hbGxfIFJU
Q19HVUFSREVEX0JZKCZ0YXNrX2NoZWNrZXJfKTsKKyAgcnRjOjpNb3ZpbmdBdmVyYWdlIGF2ZXJh
Z2VfcXBfIFJUQ19HVUFSREVEX0JZKCZ0YXNrX2NoZWNrZXJfKTsKKyAgcnRjOjpNb3ZpbmdBdmVy
YWdlIGZyYW1lZHJvcF9wZXJjZW50X21lZGlhX29wdF8KKyAgICAgIFJUQ19HVUFSREVEX0JZKCZ0
YXNrX2NoZWNrZXJfKTsKKyAgcnRjOjpNb3ZpbmdBdmVyYWdlIGZyYW1lZHJvcF9wZXJjZW50X2Fs
bF8gUlRDX0dVQVJERURfQlkoJnRhc2tfY2hlY2tlcl8pOwogCiAgIC8vIFVzZWQgYnkgUXVhbGl0
eVNjYWxpbmdFeHBlcmltZW50LgogICBjb25zdCBib29sIGV4cGVyaW1lbnRfZW5hYmxlZF87CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3F1YWxpdHlfc2NhbGVyX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxlcl91bml0dGVzdC5jYwppbmRleCBiMTcwNjJkZjVjMTU4
Y2E1YWZkYmJhMjJhMmE3OWRjZWUzNjZhMTdhLi5lZDc5Mzc5OTI5NzliMzBiNWJmYjY4NDY2ZjI0
MDI3ZjIzMDBjYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3F1YWxpdHlfc2NhbGVyX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0eV9zY2FsZXJfdW5pdHRlc3QuY2MK
QEAgLTI4LDE5ICsyOCwxOCBAQCBzdGF0aWMgY29uc3QgaW50IGtNaW5GcmFtZXNOZWVkZWRUb1Nj
YWxlID0gNjA7ICAvLyBGcm9tIHF1YWxpdHlfc2NhbGVyLmNjLgogc3RhdGljIGNvbnN0IHNpemVf
dCBrRGVmYXVsdFRpbWVvdXRNcyA9IDE1MDsKIH0gIC8vIG5hbWVzcGFjZQogCi0jZGVmaW5lIERP
X1NZTkMocSwgYmxvY2spICAgICAgICAgICBcCi0gIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgcnRjOjpFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOyBcCi0gICAgcS0+
UG9zdFRhc2soW3RoaXMsICZldmVudF0geyAgICBcCi0gICAgICBibG9jazsgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICBldmVudC5TZXQoKTsgICAgICAgICAgICAgICAgICBcCi0gICAg
fSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgUlRDX0NIRUNLKGV2ZW50Lldh
aXQoMTAwMCkpOyAgICBcCisjZGVmaW5lIERPX1NZTkMocSwgYmxvY2spICAgICAgICBcCisgIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcnRjOjpFdmVudCBldmVudDsgICAg
ICAgICAgICBcCisgICAgcS0+UG9zdFRhc2soW3RoaXMsICZldmVudF0geyBcCisgICAgICBibG9j
azsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBldmVudC5TZXQoKTsgICAgICAgICAgICAg
ICBcCisgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUlRDX0NIRUNLKGV2
ZW50LldhaXQoMTAwMCkpOyBcCiAgIH0gd2hpbGUgKDApCiAKIGNsYXNzIE1vY2tBZGFwdGF0aW9u
T2JzZXJ2ZXIgOiBwdWJsaWMgQWRhcHRhdGlvbk9ic2VydmVySW50ZXJmYWNlIHsKICBwdWJsaWM6
Ci0gIE1vY2tBZGFwdGF0aW9uT2JzZXJ2ZXIoKSA6IGV2ZW50KGZhbHNlLCBmYWxzZSkge30KICAg
dmlydHVhbCB+TW9ja0FkYXB0YXRpb25PYnNlcnZlcigpIHt9CiAKICAgdm9pZCBBZGFwdFVwKEFk
YXB0UmVhc29uIHIpIG92ZXJyaWRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxj
YXN0X3JhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3Rf
cmF0ZV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKaW5kZXggN2Y1NDkzMmE4MTNkZGI1MTQxYzhkM2Ix
NGY4ZDEzNjI3NmFkMzBlNi4uYmJlM2YxOWZiNzMyMGQ5ZTY0MWU1Mjg2ZmUzNTgxNzI0OWY5ZjVh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3JfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3JfdW5p
dHRlc3QuY2MKQEAgLTE1LDggKzE1LDcgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5j
bHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCi0KKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNz
L3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAj
aW5jbHVkZSAidGVzdC9nbW9jay5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKQEAgLTM0LDkg
KzMzLDkgQEAgY29uc3RleHByIHVpbnQzMl90IGtMZWdhY3lTY3JlZW5zaGFyZU1heEJpdHJhdGVL
YnBzID0gMTAwMDsKIGNvbnN0ZXhwciB1aW50MzJfdCBrU2ltdWxjYXN0U2NyZWVuc2hhcmVNaW5C
aXRyYXRlS2JwcyA9IDYwMDsKIGNvbnN0ZXhwciB1aW50MzJfdCBrU2ltdWxjYXN0U2NyZWVuc2hh
cmVNYXhCaXRyYXRlS2JwcyA9IDEyNTA7CiAKLWNsYXNzIE1vY2tUZW1wb3JhbExheWVycyA6IHB1
YmxpYyBUZW1wb3JhbExheWVycyB7CitjbGFzcyBNb2NrVGVtcG9yYWxMYXllcnMgOiBwdWJsaWMg
VnA4VGVtcG9yYWxMYXllcnMgewogIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKFVwZGF0ZUxheWVy
Q29uZmlnLCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcodWludDMyX3QpKTsKKyAgTU9DS19N
RVRIT0QxKFVwZGF0ZUxheWVyQ29uZmlnLCBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWco
dWludDMyX3QpKTsKICAgTU9DS19NRVRIT0QyKE9uUmF0ZXNVcGRhdGVkLCB2b2lkKGNvbnN0IHN0
ZDo6dmVjdG9yPHVpbnQzMl90PiYsIGludCkpOwogICBNT0NLX01FVEhPRDEoVXBkYXRlQ29uZmln
dXJhdGlvbiwgYm9vbChWcDhFbmNvZGVyQ29uZmlnKikpOwogICBNT0NLX01FVEhPRDUoT25FbmNv
ZGVEb25lLApAQCAtNDQsNyArNDMsNyBAQCBjbGFzcyBNb2NrVGVtcG9yYWxMYXllcnMgOiBwdWJs
aWMgVGVtcG9yYWxMYXllcnMgewogICBNT0NLX01FVEhPRDMoRnJhbWVFbmNvZGVkLCB2b2lkKHVp
bnQzMl90LCBzaXplX3QsIGludCkpOwogICBNT0NLX0NPTlNUX01FVEhPRDAoVGwwUGljSWR4LCB1
aW50OF90KCkpOwogICBNT0NLX0NPTlNUX01FVEhPRDEoR2V0VGVtcG9yYWxMYXllcklkLAotICAg
ICAgICAgICAgICAgICAgICAgaW50KGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYp
KTsKKyAgICAgICAgICAgICAgICAgICAgIGludChjb25zdCBWcDhUZW1wb3JhbExheWVyczo6RnJh
bWVDb25maWcmKSk7CiB9OwogfSAgLy8gbmFtZXNwYWNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0
aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11
bGNhc3RfdGVzdF9maXh0dXJlX2ltcGwuY2MKaW5kZXggNGFmNTI2YzY2MzE5Y2Q3NzJkY2U4MWM1
YTBjOTliZjA3NTNhNDQwYy4uOTkyNzczZWNjNjA5ZWVmZDg5ODYxMDc4NmYyNTIyZDA2ZGJjMmY0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2ltcGwu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2ltcGwuY2MKQEAg
LTE1LDkgKzE1LDEwIEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAor
I2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1
ZGUvdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vbGlieXV2L2luY2x1ZGUv
d2VicnRjX2xpYnl1di5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUv
dmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
aW5jbHVkZS92aWRlb19jb2RpbmdfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKQEAgLTgxOSw1ICs4MjAsNjcgQEAgdm9pZCBT
aW11bGNhc3RUZXN0Rml4dHVyZUltcGw6OlRlc3RTdHJpZGVFbmNvZGVEZWNvZGUoKSB7CiAgIEVY
UEVDVF9FUSgyLCBkZWNvZGVyX2NhbGxiYWNrLkRlY29kZWRGcmFtZXMoKSk7CiB9CiAKK3ZvaWQg
U2ltdWxjYXN0VGVzdEZpeHR1cmVJbXBsOjpUZXN0RGVjb2RlV2lkdGhIZWlnaHRTZXQoKSB7Cisg
IE1vY2tFbmNvZGVkSW1hZ2VDYWxsYmFjayBlbmNvZGVyX2NhbGxiYWNrOworICBNb2NrRGVjb2Rl
ZEltYWdlQ2FsbGJhY2sgZGVjb2Rlcl9jYWxsYmFjazsKKworICBFbmNvZGVkSW1hZ2UgZW5jb2Rl
ZF9mcmFtZVszXTsKKyAgU2V0UmF0ZXMoa01heEJpdHJhdGVzWzJdLCAzMCk7ICAvLyBUbyBnZXQg
YWxsIHRocmVlIHN0cmVhbXMuCisgIGVuY29kZXJfLT5SZWdpc3RlckVuY29kZUNvbXBsZXRlQ2Fs
bGJhY2soJmVuY29kZXJfY2FsbGJhY2spOworICBkZWNvZGVyXy0+UmVnaXN0ZXJEZWNvZGVDb21w
bGV0ZUNhbGxiYWNrKCZkZWNvZGVyX2NhbGxiYWNrKTsKKworICBFWFBFQ1RfQ0FMTChlbmNvZGVy
X2NhbGxiYWNrLCBPbkVuY29kZWRJbWFnZShfLCBfLCBfKSkKKyAgICAgIC5UaW1lcygzKQorICAg
ICAgLldpbGxSZXBlYXRlZGx5KAorICAgICAgICAgIHRlc3Rpbmc6Okludm9rZShbJl0oY29uc3Qg
RW5jb2RlZEltYWdlJiBlbmNvZGVkX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFn
bWVudGF0aW9uKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZW5jb2RlZF9pbWFnZS5fZnJhbWVU
eXBlLCBrVmlkZW9GcmFtZUtleSk7CisKKyAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IGVuY29k
ZWRfaW1hZ2UuU3BhdGlhbEluZGV4KCkudmFsdWVfb3IoMCk7CisgICAgICAgICAgICBlbmNvZGVk
X2ZyYW1lW2luZGV4XS5fYnVmZmVyID0gbmV3IHVpbnQ4X3RbZW5jb2RlZF9pbWFnZS5fc2l6ZV07
CisgICAgICAgICAgICBlbmNvZGVkX2ZyYW1lW2luZGV4XS5fc2l6ZSA9IGVuY29kZWRfaW1hZ2Uu
X3NpemU7CisgICAgICAgICAgICBlbmNvZGVkX2ZyYW1lW2luZGV4XS5fbGVuZ3RoID0gZW5jb2Rl
ZF9pbWFnZS5fbGVuZ3RoOworICAgICAgICAgICAgZW5jb2RlZF9mcmFtZVtpbmRleF0uX2ZyYW1l
VHlwZSA9IGVuY29kZWRfaW1hZ2UuX2ZyYW1lVHlwZTsKKyAgICAgICAgICAgIGVuY29kZWRfZnJh
bWVbaW5kZXhdLl9jb21wbGV0ZUZyYW1lID0gZW5jb2RlZF9pbWFnZS5fY29tcGxldGVGcmFtZTsK
KyAgICAgICAgICAgIG1lbWNweShlbmNvZGVkX2ZyYW1lW2luZGV4XS5fYnVmZmVyLCBlbmNvZGVk
X2ltYWdlLl9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgZW5jb2RlZF9pbWFnZS5fbGVuZ3Ro
KTsKKyAgICAgICAgICAgIHJldHVybiBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6UmVzdWx0KAorICAg
ICAgICAgICAgICAgIEVuY29kZWRJbWFnZUNhbGxiYWNrOjpSZXN1bHQ6Ok9LLCAwKTsKKyAgICAg
ICAgICB9KSk7CisgIEVYUEVDVF9FUSgwLCBlbmNvZGVyXy0+RW5jb2RlKCppbnB1dF9mcmFtZV8s
IE5VTEwsIE5VTEwpKTsKKworICBFWFBFQ1RfQ0FMTChkZWNvZGVyX2NhbGxiYWNrLCBEZWNvZGVk
KF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6Okludm9rZShbXShWaWRlb0ZyYW1l
JiBkZWNvZGVkSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6
Om9wdGlvbmFsPGludDMyX3Q+IGRlY29kZV90aW1lX21zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBxcCkgeworICAgICAgICBFWFBF
Q1RfRVEoZGVjb2RlZEltYWdlLndpZHRoKCksIGtEZWZhdWx0V2lkdGggLyA0KTsKKyAgICAgICAg
RVhQRUNUX0VRKGRlY29kZWRJbWFnZS5oZWlnaHQoKSwga0RlZmF1bHRIZWlnaHQgLyA0KTsKKyAg
ICAgIH0pKTsKKyAgRVhQRUNUX0VRKDAsIGRlY29kZXJfLT5EZWNvZGUoZW5jb2RlZF9mcmFtZVsw
XSwgZmFsc2UsIE5VTEwsIDApKTsKKworICBFWFBFQ1RfQ0FMTChkZWNvZGVyX2NhbGxiYWNrLCBE
ZWNvZGVkKF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6Okludm9rZShbXShWaWRl
b0ZyYW1lJiBkZWNvZGVkSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFic2w6Om9wdGlvbmFsPGludDMyX3Q+IGRlY29kZV90aW1lX21zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBxcCkgeworICAgICAg
ICBFWFBFQ1RfRVEoZGVjb2RlZEltYWdlLndpZHRoKCksIGtEZWZhdWx0V2lkdGggLyAyKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGRlY29kZWRJbWFnZS5oZWlnaHQoKSwga0RlZmF1bHRIZWlnaHQgLyAy
KTsKKyAgICAgIH0pKTsKKyAgRVhQRUNUX0VRKDAsIGRlY29kZXJfLT5EZWNvZGUoZW5jb2RlZF9m
cmFtZVsxXSwgZmFsc2UsIE5VTEwsIDApKTsKKworICBFWFBFQ1RfQ0FMTChkZWNvZGVyX2NhbGxi
YWNrLCBEZWNvZGVkKF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6Okludm9rZShb
XShWaWRlb0ZyYW1lJiBkZWNvZGVkSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFic2w6Om9wdGlvbmFsPGludDMyX3Q+IGRlY29kZV90aW1lX21zLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBxcCkgewor
ICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZEltYWdlLndpZHRoKCksIGtEZWZhdWx0V2lkdGgpOwor
ICAgICAgICBFWFBFQ1RfRVEoZGVjb2RlZEltYWdlLmhlaWdodCgpLCBrRGVmYXVsdEhlaWdodCk7
CisgICAgICB9KSk7CisgIEVYUEVDVF9FUSgwLCBkZWNvZGVyXy0+RGVjb2RlKGVuY29kZWRfZnJh
bWVbMl0sIGZhbHNlLCBOVUxMLCAwKSk7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kp
IHsKKyAgICBkZWxldGUgW10gZW5jb2RlZF9mcmFtZVtpXS5fYnVmZmVyOworICB9Cit9CisKIH0g
IC8vIG5hbWVzcGFjZSB0ZXN0CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy91dGlsaXR5L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmVfaW1wbC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0
eS9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2ltcGwuaAppbmRleCA2NjM0YTY5YWQxY2E1NDM0MDJm
N2UzZmVmMDk0MTFiN2NlMjZlODAwLi4yZjgzNGJkZmI1NWZjMjQzOWIyODg4ZmEyOWEyMWUyNmQ5
ODk4YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmVf
aW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9pbXBsLmgK
QEAgLTE0LDYgKzE0LDggQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgog
CisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192aWRlb19kZWNvZGVyLmgiCisjaW5jbHVkZSAiYXBp
L3Rlc3QvbW9ja192aWRlb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL3Rlc3Qvc2ltdWxjYXN0
X3Rlc3RfZml4dHVyZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZlci5oIgogI2lu
Y2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgpAQCAtMjEsNyArMjMsNiBAQAogI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAi
Y29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9jYXRvci5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvbW9jay9tb2NrX3ZpZGVvX2NvZGVj
X2ludGVyZmFjZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKQEAg
LTUwLDYgKzUxLDcgQEAgY2xhc3MgU2ltdWxjYXN0VGVzdEZpeHR1cmVJbXBsIGZpbmFsIDogcHVi
bGljIFNpbXVsY2FzdFRlc3RGaXh0dXJlIHsKICAgdm9pZCBUZXN0U3BhdGlvVGVtcG9yYWxMYXll
cnMzMzNQYXR0ZXJuRW5jb2RlcigpIG92ZXJyaWRlOwogICB2b2lkIFRlc3RTcGF0aW9UZW1wb3Jh
bExheWVyczMyMVBhdHRlcm5FbmNvZGVyKCkgb3ZlcnJpZGU7CiAgIHZvaWQgVGVzdFN0cmlkZUVu
Y29kZURlY29kZSgpIG92ZXJyaWRlOworICB2b2lkIFRlc3REZWNvZGVXaWR0aEhlaWdodFNldCgp
IG92ZXJyaWRlOwogCiAgIHN0YXRpYyB2b2lkIERlZmF1bHRTZXR0aW5ncyhWaWRlb0NvZGVjKiBz
ZXR0aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCogdGVtcG9y
YWxfbGF5ZXJfcHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVjX2luaXRpYWxp
emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIuY2MKaW5kZXggZTcxMjVjZTI3
ODIzMTNmOGZiYzI2MDZiOTZkYmU0NmFiM2VjNGU1Yy4uODZhNWFiMmE0ODIwOTk0ZmQ3NDAyODc0
ZTlmMzRmMmJiZTJlZjM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kZWNfaW5pdGlhbGl6
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIuY2MKQEAgLTI0LDE1ICsy
NCwxMyBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotYm9vbCBWaWRlb0NvZGVjSW5pdGlhbGl6
ZXI6OlNldHVwQ29kZWMoCi0gICAgY29uc3QgVmlkZW9FbmNvZGVyQ29uZmlnJiBjb25maWcsCi0g
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+JiBzdHJlYW1zLAotICAgIFZpZGVvQ29k
ZWMqIGNvZGVjLAotICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+KiBi
aXRyYXRlX2FsbG9jYXRvcikgeworYm9vbCBWaWRlb0NvZGVjSW5pdGlhbGl6ZXI6OlNldHVwQ29k
ZWMoY29uc3QgVmlkZW9FbmNvZGVyQ29uZmlnJiBjb25maWcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4mIHN0cmVh
bXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0NvZGVjKiBj
b2RlYykgewogICBpZiAoY29uZmlnLmNvZGVjX3R5cGUgPT0ga1ZpZGVvQ29kZWNNdWx0aXBsZXgp
IHsKICAgICBWaWRlb0VuY29kZXJDb25maWcgYXNzb2NpYXRlZF9jb25maWcgPSBjb25maWcuQ29w
eSgpOwogICAgIGFzc29jaWF0ZWRfY29uZmlnLmNvZGVjX3R5cGUgPSBrVmlkZW9Db2RlY1ZQOTsK
LSAgICBpZiAoIVNldHVwQ29kZWMoYXNzb2NpYXRlZF9jb25maWcsIHN0cmVhbXMsIGNvZGVjLCBi
aXRyYXRlX2FsbG9jYXRvcikpIHsKKyAgICBpZiAoIVNldHVwQ29kZWMoYXNzb2NpYXRlZF9jb25m
aWcsIHN0cmVhbXMsIGNvZGVjKSkgewogICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxl
ZCB0byBjcmVhdGUgc3RlcmVvIGVuY29kZXIgY29uZmlndXJhdGlvbi4iOwogICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KQEAgLTQxLDMxICszOSw5IEBAIGJvb2wgVmlkZW9Db2RlY0luaXRpYWxp
emVyOjpTZXR1cENvZGVjKAogICB9CiAKICAgKmNvZGVjID0gVmlkZW9FbmNvZGVyQ29uZmlnVG9W
aWRlb0NvZGVjKGNvbmZpZywgc3RyZWFtcyk7Ci0gICpiaXRyYXRlX2FsbG9jYXRvciA9IENyZWF0
ZUJpdHJhdGVBbGxvY2F0b3IoKmNvZGVjKTsKLQogICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvcj4KLVZpZGVvQ29kZWNJbml0aWFsaXplcjo6
Q3JlYXRlQml0cmF0ZUFsbG9jYXRvcihjb25zdCBWaWRlb0NvZGVjJiBjb2RlYykgewotICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiByYXRlX2FsbG9jYXRvcjsKLQotICBz
d2l0Y2ggKGNvZGVjLmNvZGVjVHlwZSkgewotICAgIGNhc2Uga1ZpZGVvQ29kZWNWUDg6Ci0gICAg
ICBSVENfRkFMTFRIUk9VR0goKTsKLSAgICBjYXNlIGtWaWRlb0NvZGVjSDI2NDoKLSAgICAgIHJh
dGVfYWxsb2NhdG9yLnJlc2V0KG5ldyBTaW11bGNhc3RSYXRlQWxsb2NhdG9yKGNvZGVjKSk7Ci0g
ICAgICBicmVhazsKLSAgICBjYXNlIGtWaWRlb0NvZGVjVlA5OgotICAgICAgcmF0ZV9hbGxvY2F0
b3IucmVzZXQobmV3IFN2Y1JhdGVBbGxvY2F0b3IoY29kZWMpKTsKLSAgICAgIGJyZWFrOwotICAg
IGRlZmF1bHQ6Ci0gICAgICByYXRlX2FsbG9jYXRvci5yZXNldChuZXcgRGVmYXVsdFZpZGVvQml0
cmF0ZUFsbG9jYXRvcihjb2RlYykpOwotICB9Ci0KLSAgcmV0dXJuIHJhdGVfYWxsb2NhdG9yOwot
fQotCiAvLyBUT0RPKHNwcmFuZyk6IFNwbGl0IHRoaXMgdXAgYW5kIHNlcGFyYXRlIHRoZSBjb2Rl
YyBzcGVjaWZpYyBwYXJ0cy4KIFZpZGVvQ29kZWMgVmlkZW9Db2RlY0luaXRpYWxpemVyOjpWaWRl
b0VuY29kZXJDb25maWdUb1ZpZGVvQ29kZWMoCiAgICAgY29uc3QgVmlkZW9FbmNvZGVyQ29uZmln
JiBjb25maWcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19pbml0aWFsaXplcl91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVjX2luaXRpYWxpemVyX3VuaXR0ZXN0LmNjCmluZGV4
IGZiNjAxZjBkNDI5OWVjOTUyYzJmNDY1NzYwNmJiZDYxOGY1YmRlMjMuLmNlZmYxZWJhZjc0Mjdi
ZjkyOGZlN2U2YWRiZTAzYzUzMGExODdjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVj
X2luaXRpYWxpemVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVjX2luaXRpYWxp
emVyX3VuaXR0ZXN0LmNjCkBAIC05LDExICs5LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIuaCIKLSNpbmNs
dWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJhcGkv
dmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCisjaW5jbHVk
ZSAiYXBpL3ZpZGVvX2NvZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgorI2luY2x1ZGUgImFwaS92aWRl
b19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L2luY2x1ZGUvdnA5X2dsb2JhbHMuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVk
b2JqZWN0LmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCkBAIC03NCwyMSArNzYsMjIgQEAg
Y2xhc3MgVmlkZW9Db2RlY0luaXRpYWxpemVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
ewogCiAgIGJvb2wgSW5pdGlhbGl6ZUNvZGVjKCkgewogICAgIGNvZGVjX291dF8gPSBWaWRlb0Nv
ZGVjKCk7Ci0gICAgYml0cmF0ZV9hbGxvY2F0b3Jfb3V0Xy5yZXNldCgpOwogICAgIHRlbXBvcmFs
X2xheWVyc18uY2xlYXIoKTsKLSAgICBpZiAoIVZpZGVvQ29kZWNJbml0aWFsaXplcjo6U2V0dXBD
b2RlYyhjb25maWdfLCBzdHJlYW1zXywgJmNvZGVjX291dF8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmJpdHJhdGVfYWxsb2NhdG9yX291dF8pKSB7CisgICAg
aWYgKCFWaWRlb0NvZGVjSW5pdGlhbGl6ZXI6OlNldHVwQ29kZWMoY29uZmlnXywgc3RyZWFtc18s
ICZjb2RlY19vdXRfKSkgewogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICBiaXRyYXRl
X2FsbG9jYXRvcl8gPSBDcmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Q3JlYXRlVmlkZW9CaXRyYXRlQWxsb2Nh
dG9yKGNvZGVjX291dF8pOworICAgIFJUQ19DSEVDSyhiaXRyYXRlX2FsbG9jYXRvcl8pOwogICAg
IGlmIChjb2RlY19vdXRfLmNvZGVjVHlwZSA9PSBWaWRlb0NvZGVjVHlwZTo6a1ZpZGVvQ29kZWNN
dWx0aXBsZXgpCiAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0ZW1wb3Jh
bCBsYXllcnMgaW5zdGFuY2VzIGhhdmUgYmVlbiBjcmVhdGVkLgogICAgIGlmIChjb2RlY19vdXRf
LmNvZGVjVHlwZSA9PSBWaWRlb0NvZGVjVHlwZTo6a1ZpZGVvQ29kZWNWUDgpIHsKICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgY29kZWNfb3V0Xy5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXM7ICsr
aSkgewotICAgICAgICB0ZW1wb3JhbF9sYXllcnNfLmVtcGxhY2VfYmFjayhUZW1wb3JhbExheWVy
czo6Q3JlYXRlVGVtcG9yYWxMYXllcnMoCi0gICAgICAgICAgICBUZW1wb3JhbExheWVyc1R5cGU6
OmtGaXhlZFBhdHRlcm4sCi0gICAgICAgICAgICBjb2RlY19vdXRfLlZQOCgpLT5udW1iZXJPZlRl
bXBvcmFsTGF5ZXJzKSk7CisgICAgICAgIHRlbXBvcmFsX2xheWVyc18uZW1wbGFjZV9iYWNrKAor
ICAgICAgICAgICAgQ3JlYXRlVnA4VGVtcG9yYWxMYXllcnMoVnA4VGVtcG9yYWxMYXllcnNUeXBl
OjprRml4ZWRQYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29k
ZWNfb3V0Xy5WUDgoKS0+bnVtYmVyT2ZUZW1wb3JhbExheWVycykpOwogICAgICAgfQogICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyNSw4ICsxMjgsOCBAQCBjbGFzcyBWaWRlb0NvZGVjSW5p
dGlhbGl6ZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAKICAgLy8gT3V0cHV0Lgog
ICBWaWRlb0NvZGVjIGNvZGVjX291dF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVB
bGxvY2F0b3I+IGJpdHJhdGVfYWxsb2NhdG9yX291dF87Ci0gIHN0ZDo6dmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxUZW1wb3JhbExheWVycz4+IHRlbXBvcmFsX2xheWVyc187CisgIHN0ZDo6dW5pcXVl
X3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+IGJpdHJhdGVfYWxsb2NhdG9yXzsKKyAgc3RkOjp2
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZwOFRlbXBvcmFsTGF5ZXJzPj4gdGVtcG9yYWxfbGF5ZXJz
XzsKIH07CiAKIFRFU1RfRihWaWRlb0NvZGVjSW5pdGlhbGl6ZXJUZXN0LCBTaW5nbGVTdHJlYW1W
cDhTY3JlZW5zaGFyZSkgewpAQCAtMTM0LDkgKzEzNyw4IEBAIFRFU1RfRihWaWRlb0NvZGVjSW5p
dGlhbGl6ZXJUZXN0LCBTaW5nbGVTdHJlYW1WcDhTY3JlZW5zaGFyZSkgewogICBzdHJlYW1zXy5w
dXNoX2JhY2soRGVmYXVsdFN0cmVhbSgpKTsKICAgRVhQRUNUX1RSVUUoSW5pdGlhbGl6ZUNvZGVj
KCkpOwogCi0gIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxvY2F0aW9uID0KLSAg
ICAgIGJpdHJhdGVfYWxsb2NhdG9yX291dF8tPkdldEFsbG9jYXRpb24oa0RlZmF1bHRUYXJnZXRC
aXRyYXRlQnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
RGVmYXVsdEZyYW1lUmF0ZSk7CisgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxv
Y2F0aW9uID0gYml0cmF0ZV9hbGxvY2F0b3JfLT5HZXRBbGxvY2F0aW9uKAorICAgICAga0RlZmF1
bHRUYXJnZXRCaXRyYXRlQnBzLCBrRGVmYXVsdEZyYW1lUmF0ZSk7CiAgIEVYUEVDVF9FUSgxdSwg
Y29kZWNfb3V0Xy5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMpOwogICBFWFBFQ1RfRVEoMXUsIGNv
ZGVjX291dF8uVlA4KCktPm51bWJlck9mVGVtcG9yYWxMYXllcnMpOwogICBFWFBFQ1RfRVEoa0Rl
ZmF1bHRUYXJnZXRCaXRyYXRlQnBzLCBiaXRyYXRlX2FsbG9jYXRpb24uZ2V0X3N1bV9icHMoKSk7
CkBAIC0xNDksOSArMTUxLDggQEAgVEVTVF9GKFZpZGVvQ29kZWNJbml0aWFsaXplclRlc3QsIFNp
bmdsZVN0cmVhbVZwOFNjcmVlbnNoYXJlSW5hY3RpdmUpIHsKICAgc3RyZWFtc18ucHVzaF9iYWNr
KGluYWN0aXZlX3N0cmVhbSk7CiAgIEVYUEVDVF9UUlVFKEluaXRpYWxpemVDb2RlYygpKTsKIAot
ICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbiA9Ci0gICAgICBiaXRy
YXRlX2FsbG9jYXRvcl9vdXRfLT5HZXRBbGxvY2F0aW9uKGtEZWZhdWx0VGFyZ2V0Qml0cmF0ZUJw
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRG
cmFtZVJhdGUpOworICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbiA9
IGJpdHJhdGVfYWxsb2NhdG9yXy0+R2V0QWxsb2NhdGlvbigKKyAgICAgIGtEZWZhdWx0VGFyZ2V0
Qml0cmF0ZUJwcywga0RlZmF1bHRGcmFtZVJhdGUpOwogICBFWFBFQ1RfRVEoMXUsIGNvZGVjX291
dF8ubnVtYmVyT2ZTaW11bGNhc3RTdHJlYW1zKTsKICAgRVhQRUNUX0VRKDF1LCBjb2RlY19vdXRf
LlZQOCgpLT5udW1iZXJPZlRlbXBvcmFsTGF5ZXJzKTsKICAgRVhQRUNUX0VRKDBVLCBiaXRyYXRl
X2FsbG9jYXRpb24uZ2V0X3N1bV9icHMoKSk7CkBAIC0xNjQsOSArMTY1LDggQEAgVEVTVF9GKFZp
ZGVvQ29kZWNJbml0aWFsaXplclRlc3QsIFRlbXBvcmFsTGF5ZXJlZFZwOFNjcmVlbnNoYXJlKSB7
CiAKICAgRVhQRUNUX0VRKDF1LCBjb2RlY19vdXRfLm51bWJlck9mU2ltdWxjYXN0U3RyZWFtcyk7
CiAgIEVYUEVDVF9FUSgydSwgY29kZWNfb3V0Xy5WUDgoKS0+bnVtYmVyT2ZUZW1wb3JhbExheWVy
cyk7Ci0gIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxvY2F0aW9uID0KLSAgICAg
IGJpdHJhdGVfYWxsb2NhdG9yX291dF8tPkdldEFsbG9jYXRpb24oa1NjcmVlbnNoYXJlQ29kZWNU
YXJnZXRCaXRyYXRlQnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrU2NyZWVuc2hhcmVEZWZhdWx0RnJhbWVyYXRlKTsKKyAgVmlkZW9CaXRyYXRlQWxsb2Nh
dGlvbiBiaXRyYXRlX2FsbG9jYXRpb24gPSBiaXRyYXRlX2FsbG9jYXRvcl8tPkdldEFsbG9jYXRp
b24oCisgICAgICBrU2NyZWVuc2hhcmVDb2RlY1RhcmdldEJpdHJhdGVCcHMsIGtTY3JlZW5zaGFy
ZURlZmF1bHRGcmFtZXJhdGUpOwogICBFWFBFQ1RfRVEoa1NjcmVlbnNoYXJlQ29kZWNUYXJnZXRC
aXRyYXRlQnBzLAogICAgICAgICAgICAgYml0cmF0ZV9hbGxvY2F0aW9uLmdldF9zdW1fYnBzKCkp
OwogICBFWFBFQ1RfRVEoa1NjcmVlbnNoYXJlVGwwQml0cmF0ZUJwcywgYml0cmF0ZV9hbGxvY2F0
aW9uLkdldEJpdHJhdGUoMCwgMCkpOwpAQCAtMTg0LDkgKzE4NCw4IEBAIFRFU1RfRihWaWRlb0Nv
ZGVjSW5pdGlhbGl6ZXJUZXN0LCBTaW11bGNhc3RWcDhTY3JlZW5zaGFyZSkgewogICBFWFBFQ1Rf
RVEoMXUsIGNvZGVjX291dF8uVlA4KCktPm51bWJlck9mVGVtcG9yYWxMYXllcnMpOwogICBjb25z
dCB1aW50MzJfdCBtYXhfYml0cmF0ZV9icHMgPQogICAgICAgc3RyZWFtc19bMF0udGFyZ2V0X2Jp
dHJhdGVfYnBzICsgc3RyZWFtc19bMV0ubWF4X2JpdHJhdGVfYnBzOwotICBWaWRlb0JpdHJhdGVB
bGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbiA9Ci0gICAgICBiaXRyYXRlX2FsbG9jYXRvcl9v
dXRfLT5HZXRBbGxvY2F0aW9uKG1heF9iaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga1NjcmVlbnNoYXJlRGVmYXVsdEZyYW1lcmF0ZSk7Cisg
IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxvY2F0aW9uID0gYml0cmF0ZV9hbGxv
Y2F0b3JfLT5HZXRBbGxvY2F0aW9uKAorICAgICAgbWF4X2JpdHJhdGVfYnBzLCBrU2NyZWVuc2hh
cmVEZWZhdWx0RnJhbWVyYXRlKTsKICAgRVhQRUNUX0VRKG1heF9iaXRyYXRlX2JwcywgYml0cmF0
ZV9hbGxvY2F0aW9uLmdldF9zdW1fYnBzKCkpOwogICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHN0cmVhbXNfWzBdLnRhcmdldF9iaXRyYXRlX2JwcyksCiAgICAgICAgICAgICBiaXRy
YXRlX2FsbG9jYXRpb24uR2V0U3BhdGlhbExheWVyU3VtKDApKTsKQEAgLTIwOSw5ICsyMDgsOCBA
QCBURVNUX0YoVmlkZW9Db2RlY0luaXRpYWxpemVyVGVzdCwgU2ltdWxjYXN0VnA4U2NyZWVuc2hh
cmVJbmFjdGl2ZSkgewogICBFWFBFQ1RfRVEoMXUsIGNvZGVjX291dF8uVlA4KCktPm51bWJlck9m
VGVtcG9yYWxMYXllcnMpOwogICBjb25zdCB1aW50MzJfdCB0YXJnZXRfYml0cmF0ZSA9CiAgICAg
ICBzdHJlYW1zX1swXS50YXJnZXRfYml0cmF0ZV9icHMgKyBzdHJlYW1zX1sxXS50YXJnZXRfYml0
cmF0ZV9icHM7Ci0gIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxvY2F0aW9uID0K
LSAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX291dF8tPkdldEFsbG9jYXRpb24odGFyZ2V0X2JpdHJh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtTY3JlZW5z
aGFyZURlZmF1bHRGcmFtZXJhdGUpOworICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVf
YWxsb2NhdGlvbiA9IGJpdHJhdGVfYWxsb2NhdG9yXy0+R2V0QWxsb2NhdGlvbigKKyAgICAgIHRh
cmdldF9iaXRyYXRlLCBrU2NyZWVuc2hhcmVEZWZhdWx0RnJhbWVyYXRlKTsKICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PHVpbnQzMl90PihzdHJlYW1zX1swXS5tYXhfYml0cmF0ZV9icHMpLAogICAg
ICAgICAgICAgYml0cmF0ZV9hbGxvY2F0aW9uLmdldF9zdW1fYnBzKCkpOwogICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0cmVhbXNfWzBdLm1heF9iaXRyYXRlX2JwcyksCkBAIC0y
MzQsNyArMjMyLDcgQEAgVEVTVF9GKFZpZGVvQ29kZWNJbml0aWFsaXplclRlc3QsIEhpZ2hGcHNT
aW11bGNhc3RWcDhTY3JlZW5zaGFyZSkgewogICBjb25zdCB1aW50MzJfdCBtYXhfYml0cmF0ZV9i
cHMgPQogICAgICAgc3RyZWFtc19bMF0udGFyZ2V0X2JpdHJhdGVfYnBzICsgc3RyZWFtc19bMV0u
bWF4X2JpdHJhdGVfYnBzOwogICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2Nh
dGlvbiA9Ci0gICAgICBiaXRyYXRlX2FsbG9jYXRvcl9vdXRfLT5HZXRBbGxvY2F0aW9uKG1heF9i
aXRyYXRlX2Jwcywga0RlZmF1bHRGcmFtZVJhdGUpOworICAgICAgYml0cmF0ZV9hbGxvY2F0b3Jf
LT5HZXRBbGxvY2F0aW9uKG1heF9iaXRyYXRlX2Jwcywga0RlZmF1bHRGcmFtZVJhdGUpOwogICBF
WFBFQ1RfRVEobWF4X2JpdHJhdGVfYnBzLCBiaXRyYXRlX2FsbG9jYXRpb24uZ2V0X3N1bV9icHMo
KSk7CiAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RyZWFtc19bMF0udGFyZ2V0
X2JpdHJhdGVfYnBzKSwKICAgICAgICAgICAgIGJpdHJhdGVfYWxsb2NhdGlvbi5HZXRTcGF0aWFs
TGF5ZXJTdW0oMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kaW5nX2ltcGwuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy92aWRlb19jb2RpbmdfaW1wbC5jYwppbmRleCBhMDYxYzE4ZmQ3MGUyMjJlY2NjYjc0MmZh
MDc1ZGYzMTUxNmMyNTA5Li41ODM5N2FkMzg2ZDMyMjFlMDNmYjcyYjZkYmZlMDcxNjU3OGM4M2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RpbmdfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRl
b19jb2RpbmdfaW1wbC5jYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9f
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19i
aXRyYXRlX2FsbG9jYXRvci5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5U
KGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dl
YnJ0Y19saWJ5dXYuaCIKQEAgLTI3LDEwICsyOCw2IEBACiAjaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci1FdmVudFdyYXBwZXIq
IEV2ZW50RmFjdG9yeUltcGw6OkNyZWF0ZUV2ZW50KCkgewotICByZXR1cm4gRXZlbnRXcmFwcGVy
OjpDcmVhdGUoKTsKLX0KLQogbmFtZXNwYWNlIHZjbSB7CiAKIGludDY0X3QgVkNNUHJvY2Vzc1Rp
bWVyOjpQZXJpb2QoKSBjb25zdCB7CkBAIC04MSwxNyArNzgsMTMgQEAgY2xhc3MgRW5jb2RlZElt
YWdlQ2FsbGJhY2tXcmFwcGVyIDogcHVibGljIEVuY29kZWRJbWFnZUNhbGxiYWNrIHsKIGNsYXNz
IFZpZGVvQ29kaW5nTW9kdWxlSW1wbCA6IHB1YmxpYyBWaWRlb0NvZGluZ01vZHVsZSB7CiAgcHVi
bGljOgogICBWaWRlb0NvZGluZ01vZHVsZUltcGwoQ2xvY2sqIGNsb2NrLAotICAgICAgICAgICAg
ICAgICAgICAgICAgRXZlbnRGYWN0b3J5KiBldmVudF9mYWN0b3J5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgTmFja1NlbmRlciogbmFja19zZW5kZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKQogICAgICAg
OiBWaWRlb0NvZGluZ01vZHVsZSgpLAogICAgICAgICBzZW5kZXJfKGNsb2NrLCAmcG9zdF9lbmNv
ZGVfY2FsbGJhY2tfKSwKKyAgICAgICAgcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8oQ3JlYXRlQnVp
bHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSksCiAgICAgICAgIHRpbWluZ18obmV3
IFZDTVRpbWluZyhjbG9jaykpLAotICAgICAgICByZWNlaXZlcl8oY2xvY2ssCi0gICAgICAgICAg
ICAgICAgICBldmVudF9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgdGltaW5nXy5nZXQoKSwK
LSAgICAgICAgICAgICAgICAgIG5hY2tfc2VuZGVyLAotICAgICAgICAgICAgICAgICAga2V5ZnJh
bWVfcmVxdWVzdF9zZW5kZXIpIHt9CisgICAgICAgIHJlY2VpdmVyXyhjbG9jaywgdGltaW5nXy5n
ZXQoKSwgbmFja19zZW5kZXIsIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKSB7fQogCiAgIHZpcnR1
YWwgflZpZGVvQ29kaW5nTW9kdWxlSW1wbCgpIHt9CiAKQEAgLTExNCw3ICsxMDcsOCBAQCBjbGFz
cyBWaWRlb0NvZGluZ01vZHVsZUltcGwgOiBwdWJsaWMgVmlkZW9Db2RpbmdNb2R1bGUgewogICAg
ICAgLy8gYXN5bmNocm9ub3VzbHkga2VlcCB0aGUgaW5zdGFuY2UgYWxpdmUgdW50aWwgZGVzdHJ1
Y3Rpb24gb3IgdW50aWwgYQogICAgICAgLy8gbmV3IHNlbmQgY29kZWMgaXMgcmVnaXN0ZXJlZC4K
ICAgICAgIFZpZGVvQ29kZWMgY29kZWMgPSAqc2VuZENvZGVjOwotICAgICAgcmF0ZV9hbGxvY2F0
b3JfID0gVmlkZW9Db2RlY0luaXRpYWxpemVyOjpDcmVhdGVCaXRyYXRlQWxsb2NhdG9yKGNvZGVj
KTsKKyAgICAgIHJhdGVfYWxsb2NhdG9yXyA9CisgICAgICAgICAgcmF0ZV9hbGxvY2F0b3JfZmFj
dG9yeV8tPkNyZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRvcihjb2RlYyk7CiAgICAgICByZXR1cm4g
c2VuZGVyXy5SZWdpc3RlclNlbmRDb2RlYygmY29kZWMsIG51bWJlck9mQ29yZXMsIG1heFBheWxv
YWRTaXplKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbmRlcl8uUmVnaXN0ZXJTZW5kQ29kZWMoc2Vu
ZENvZGVjLCBudW1iZXJPZkNvcmVzLCBtYXhQYXlsb2FkU2l6ZSk7CkBAIC0xNDIsNyArMTM2LDcg
QEAgY2xhc3MgVmlkZW9Db2RpbmdNb2R1bGVJbXBsIDogcHVibGljIFZpZGVvQ29kaW5nTW9kdWxl
IHsKIAogICBpbnQzMl90IEFkZFZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9GcmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2Rl
Y1NwZWNpZmljSW5mbykgb3ZlcnJpZGUgewotICAgIHJldHVybiBzZW5kZXJfLkFkZFZpZGVvRnJh
bWUodmlkZW9GcmFtZSwgY29kZWNTcGVjaWZpY0luZm8pOworICAgIHJldHVybiBzZW5kZXJfLkFk
ZFZpZGVvRnJhbWUodmlkZW9GcmFtZSwgY29kZWNTcGVjaWZpY0luZm8sIGFic2w6Om51bGxvcHQp
OwogICB9CiAKICAgaW50MzJfdCBJbnRyYUZyYW1lUmVxdWVzdChzaXplX3Qgc3RyZWFtX2luZGV4
KSBvdmVycmlkZSB7CkBAIC0yMTMsMTkgKzIwNywxOCBAQCBjbGFzcyBWaWRlb0NvZGluZ01vZHVs
ZUltcGwgOiBwdWJsaWMgVmlkZW9Db2RpbmdNb2R1bGUgewogICBydGM6OlRocmVhZENoZWNrZXIg
Y29uc3RydWN0aW9uX3RocmVhZF87CiAgIEVuY29kZWRJbWFnZUNhbGxiYWNrV3JhcHBlciBwb3N0
X2VuY29kZV9jYWxsYmFja187CiAgIHZjbTo6VmlkZW9TZW5kZXIgc2VuZGVyXzsKKyAgY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+IHJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnlfOwogICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiBy
YXRlX2FsbG9jYXRvcl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxWQ01UaW1pbmc+IHRpbWluZ187Cisg
IGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxWQ01UaW1pbmc+IHRpbWluZ187CiAgIHZjbTo6VmlkZW9S
ZWNlaXZlciByZWNlaXZlcl87CiB9OwogfSAgLy8gbmFtZXNwYWNlCiAKIC8vIERFUFJFQ0FURUQu
ICBDcmVhdGUgbWV0aG9kIGZvciBjdXJyZW50IGludGVyZmFjZSwgd2lsbCBiZSByZW1vdmVkIHdo
ZW4gdGhlCiAvLyBuZXcgaml0dGVyIGJ1ZmZlciBpcyBpbiBwbGFjZS4KLVZpZGVvQ29kaW5nTW9k
dWxlKiBWaWRlb0NvZGluZ01vZHVsZTo6Q3JlYXRlKENsb2NrKiBjbG9jaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50RmFjdG9yeSogZXZlbnRfZmFj
dG9yeSkgeworVmlkZW9Db2RpbmdNb2R1bGUqIFZpZGVvQ29kaW5nTW9kdWxlOjpDcmVhdGUoQ2xv
Y2sqIGNsb2NrKSB7CiAgIFJUQ19EQ0hFQ0soY2xvY2spOwotICBSVENfRENIRUNLKGV2ZW50X2Zh
Y3RvcnkpOwotICByZXR1cm4gbmV3IFZpZGVvQ29kaW5nTW9kdWxlSW1wbChjbG9jaywgZXZlbnRf
ZmFjdG9yeSwgbnVsbHB0ciwgbnVsbHB0cik7CisgIHJldHVybiBuZXcgVmlkZW9Db2RpbmdNb2R1
bGVJbXBsKGNsb2NrLCBudWxscHRyLCBudWxscHRyKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kaW5nX2ltcGwuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVv
X2NvZGluZ19pbXBsLmgKaW5kZXggM2MwOWY5NmUyNjlmOWZjMGFhM2U0ZDBjMTQ4ZmMyZDIyZmYz
MDY2NS4uZTI3YTJmZTc2MDExZWU1ZDJmYTY0ZDM1MmJlYzg3YTU1Y2UyOGZiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvdmlkZW9fY29kaW5nX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RpbmdfaW1w
bC5oCkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rv
cj4KIAotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL2ZyYW1lX2NhbGxiYWNrLmgiCisj
aW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2RlY29kZXJfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9lbmNvZGVyX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvZnJh
bWVfYnVmZmVyLmgiCkBAIC05NCw3ICs5NCw4IEBAIGNsYXNzIFZpZGVvU2VuZGVyIHsKICAgICAg
IFZpZGVvQml0cmF0ZUFsbG9jYXRpb25PYnNlcnZlciogYml0cmF0ZV91cGRhdGVkX2NhbGxiYWNr
KTsKIAogICBpbnQzMl90IEFkZFZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9GcmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2Rl
Y1NwZWNpZmljSW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNp
ZmljSW5mbyogY29kZWNTcGVjaWZpY0luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNs
OjpvcHRpb25hbDxWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvPiBlbmNvZGVyX2luZm8pOwogCiAg
IGludDMyX3QgSW50cmFGcmFtZVJlcXVlc3Qoc2l6ZV90IHN0cmVhbV9pbmRleCk7CiAgIGludDMy
X3QgRW5hYmxlRnJhbWVEcm9wcGVyKGJvb2wgZW5hYmxlKTsKQEAgLTExMyw3ICsxMTQsMTggQEAg
Y2xhc3MgVmlkZW9TZW5kZXIgewogICBWQ01FbmNvZGVkRnJhbWVDYWxsYmFjayBfZW5jb2RlZEZy
YW1lQ2FsbGJhY2sgUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9jcml0Xyk7CiAgIEVuY29kZWRJbWFn
ZUNhbGxiYWNrKiBjb25zdCBwb3N0X2VuY29kZV9jYWxsYmFja187CiAgIFZDTUVuY29kZXJEYXRh
QmFzZSBfY29kZWNEYXRhQmFzZSBSVENfR1VBUkRFRF9CWShlbmNvZGVyX2NyaXRfKTsKLSAgYm9v
bCBmcmFtZV9kcm9wcGVyX2VuYWJsZWRfIFJUQ19HVUFSREVEX0JZKGVuY29kZXJfY3JpdF8pOwor
CisgIC8vIHxmcmFtZV9kcm9wcGVyX3JlcXVlc3RlZF98IHNwZWNpZmllcyBpZiB0aGUgdXNlciBv
ZiB0aGlzIGNsYXNzIGhhcworICAvLyByZXF1ZXN0ZWQgZnJhbWUgZHJvcHBpbmcgdG8gYmUgZW5h
YmxlZCwgdmlhIEVuYWJsZUZyYW1lRHJvcHBlcigpLgorICAvLyBEZXBlbmRpbmcgb24gdmlkZW8g
ZW5jb2RlciBjb25maWd1cmF0aW9uLCB0aGlzIHNldHRpbmcgbWF5IGJlIG92ZXJyaWRkZW4KKyAg
Ly8gYW5kIHRoZSBmcmFtZSBkcm9wcGVyIGJlIGZvcmNlIGRpc2FibGVkLiBJZiBzbywKKyAgLy8g
fGZvcmNlX2Rpc2FibGVfZnJhbWVfZHJvcHBlcl98IHdpbGwgYmUgc2V0IHRvIHRydWUuCisgIC8v
IElmIGZyYW1lIGRyb3BwZXIgaXMgcmVxdWVzdGVkLCBhbmQgaXMgbm90IGZvcmNlIGRpc2FibGVk
LCBmcmFtZSBkcm9wcGluZworICAvLyBtaWdodCBzdGlsbCBiZSBkaXNhYmxlZCBpZiBWaWRlb0Vu
Y29kZXI6OkdldEVuY29kZXJJbmZvKCkgaW5kaWNhdGVzIHRoYXQKKyAgLy8gdGhlIGVuY29kZXIg
aGFzIGEgdHJ1c3RlZCByYXRlIGNvbnRyb2xsZXIuIFRoaXMgaXMgZGV0ZXJtaW5lZCBvbiBhCisg
IC8vIHBlci1mcmFtZSBiYXNpcywgYXMgdGhlIGVuY29kZXIgYmVoYXZpb3IgbWlnaHQgZHluYW1p
Y2FsbHkgY2hhbmdlLgorICBib29sIGZyYW1lX2Ryb3BwZXJfcmVxdWVzdGVkXyBSVENfR1VBUkRF
RF9CWShlbmNvZGVyX2NyaXRfKTsKKyAgYm9vbCBmb3JjZV9kaXNhYmxlX2ZyYW1lX2Ryb3BwZXJf
IFJUQ19HVUFSREVEX0JZKGVuY29kZXJfY3JpdF8pOwogCiAgIC8vIE11c3QgYmUgYWNjZXNzZWQg
b24gdGhlIGNvbnN0cnVjdGlvbiB0aHJlYWQgb2YgVmlkZW9TZW5kZXIuCiAgIFZpZGVvQ29kZWMg
Y3VycmVudF9jb2RlY187CkBAIC0xMjgsNyArMTQwLDYgQEAgY2xhc3MgVmlkZW9TZW5kZXIgewog
Y2xhc3MgVmlkZW9SZWNlaXZlciA6IHB1YmxpYyBNb2R1bGUgewogIHB1YmxpYzoKICAgVmlkZW9S
ZWNlaXZlcihDbG9jayogY2xvY2ssCi0gICAgICAgICAgICAgICAgRXZlbnRGYWN0b3J5KiBldmVu
dF9mYWN0b3J5LAogICAgICAgICAgICAgICAgIFZDTVRpbWluZyogdGltaW5nLAogICAgICAgICAg
ICAgICAgIE5hY2tTZW5kZXIqIG5hY2tfc2VuZGVyID0gbnVsbHB0ciwKICAgICAgICAgICAgICAg
ICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyID0gbnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19wYWNrZXRfYnVmZmVyX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvdmlkZW9fcGFja2V0X2J1ZmZlcl91bml0dGVzdC5jYwppbmRleCA0MjU1NDJjOTQ5YzAz
NjUyMjJlNGFjYTA0YjVmMWM2NzEzYjhhNjhkLi4xM2U2NGVlYmFiNDFmMDlkNzNhOGM1MWE4YjQz
OWEyNDdmNGY4YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19wYWNrZXRfYnVmZmVyX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3BhY2tldF9idWZmZXJfdW5pdHRlc3QuY2MKQEAgLTEy
MCwxNCArMTIwLDcgQEAgVEVTVF9GKFRlc3RQYWNrZXRCdWZmZXIsIEluc2VydER1cGxpY2F0ZVBh
Y2tldCkgewogICBFWFBFQ1RfVFJVRShJbnNlcnQoc2VxX251bSwga0tleUZyYW1lLCBrRmlyc3Qs
IGtMYXN0KSk7CiB9CiAKLSNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQotLy8gRmFpbHMgb24g
YW5kcm9pZCBhZnRlciBjbGFuZyB1cGRhdGUKLS8vIFRPRE8oY3JidWcuY29tLzg4NzQ2NCk6IFJl
ZW5hYmxlIHRoaXMKLSNkZWZpbmUgTUFZQkVfU2VxTnVtV3JhcE9uZUZyYW1lIERJU0FCTEVEX1Nl
cU51bVdyYXBPbmVGcmFtZQotI2Vsc2UKLSNkZWZpbmUgTUFZQkVfU2VxTnVtV3JhcE9uZUZyYW1l
IFNlcU51bVdyYXBPbmVGcmFtZQotI2VuZGlmCi1URVNUX0YoVGVzdFBhY2tldEJ1ZmZlciwgTUFZ
QkVfU2VxTnVtV3JhcE9uZUZyYW1lKSB7CitURVNUX0YoVGVzdFBhY2tldEJ1ZmZlciwgU2VxTnVt
V3JhcE9uZUZyYW1lKSB7CiAgIEVYUEVDVF9UUlVFKEluc2VydCgweEZGRkYsIGtLZXlGcmFtZSwg
a0ZpcnN0LCBrTm90TGFzdCkpOwogICBFWFBFQ1RfVFJVRShJbnNlcnQoMHgwLCBrS2V5RnJhbWUs
IGtOb3RGaXJzdCwga0xhc3QpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fcmVjZWl2ZXIu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy92aWRlb19yZWNlaXZlci5jYwppbmRleCBkOTRiYTVlNjlmOWVmNzBjMDQ1OGRj
YjJhMmU1MjZlOGFlMzM4OGIxLi44YjRlZTc4NWVlZjc5ODdjMjQ5ZTA0MjUxYjMyZjQ5MDYzMzI5
NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19yZWNlaXZlci5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRl
b19yZWNlaXZlci5jYwpAQCAtMjYsNyArMjYsNiBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVz
cGFjZSB2Y20gewogCiBWaWRlb1JlY2VpdmVyOjpWaWRlb1JlY2VpdmVyKENsb2NrKiBjbG9jaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRGYWN0b3J5KiBldmVudF9mYWN0b3J5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQ01UaW1pbmcqIHRpbWluZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmFja1NlbmRlciogbmFja19zZW5kZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEtleUZyYW1lUmVxdWVzdFNlbmRlcioga2V5ZnJhbWVfcmVx
dWVzdF9zZW5kZXIpCkBAIC0zNCw3ICszMyw2IEBAIFZpZGVvUmVjZWl2ZXI6OlZpZGVvUmVjZWl2
ZXIoQ2xvY2sqIGNsb2NrLAogICAgICAgX3RpbWluZyh0aW1pbmcpLAogICAgICAgX3JlY2VpdmVy
KF90aW1pbmcsCiAgICAgICAgICAgICAgICAgY2xvY2tfLAotICAgICAgICAgICAgICAgIGV2ZW50
X2ZhY3RvcnksCiAgICAgICAgICAgICAgICAgbmFja19zZW5kZXIsCiAgICAgICAgICAgICAgICAg
a2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIpLAogICAgICAgX2RlY29kZWRGcmFtZUNhbGxiYWNrKF90
aW1pbmcsIGNsb2NrXyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19yZWNlaXZlcl91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL3ZpZGVvX3JlY2VpdmVyX3VuaXR0ZXN0LmNjCmluZGV4IGI3YTQ2ZjkyZWE4
OGU3ZWUyZDViZDE1MTRlMzVkMDFiMTQ5MjJiZjMuLmY5OWRhYzQ5MjAwYTNiYzk1NWE4ODc1YmVj
N2I2ZGFmZGY2ZGEwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3JlY2VpdmVyX3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3JlY2VpdmVyX3VuaXR0ZXN0LmNjCkBAIC0xMSwxMCArMTEs
OSBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJh
cGkvdGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9pbmNsdWRlL21vY2svbW9ja192Y21fY2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jb2RpbmcvaW5jbHVkZS9tb2NrL21vY2tfdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RpbmcuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy90ZXN0L3Rlc3RfdXRpbC5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3RpbWluZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlk
ZW9fY29kaW5nL3ZpZGVvX2NvZGluZ19pbXBsLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJz
L2luY2x1ZGUvY2xvY2suaCIKQEAgLTM3LDcgKzM2LDcgQEAgY2xhc3MgVGVzdFZpZGVvUmVjZWl2
ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIAogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
CiAgICAgdGltaW5nXy5yZXNldChuZXcgVkNNVGltaW5nKCZjbG9ja18pKTsKLSAgICByZWNlaXZl
cl8ucmVzZXQobmV3IFZpZGVvUmVjZWl2ZXIoJmNsb2NrXywgJmV2ZW50X2ZhY3RvcnlfLCB0aW1p
bmdfLmdldCgpKSk7CisgICAgcmVjZWl2ZXJfLnJlc2V0KG5ldyBWaWRlb1JlY2VpdmVyKCZjbG9j
a18sIHRpbWluZ18uZ2V0KCkpKTsKICAgICByZWNlaXZlcl8tPlJlZ2lzdGVyRXh0ZXJuYWxEZWNv
ZGVyKCZkZWNvZGVyXywga1VudXNlZFBheWxvYWRUeXBlKTsKICAgICBjb25zdCBzaXplX3Qga01h
eE5hY2tMaXN0U2l6ZSA9IDI1MDsKICAgICBjb25zdCBpbnQga01heFBhY2tldEFnZVRvTmFjayA9
IDQ1MDsKQEAgLTgxLDcgKzgwLDYgQEAgY2xhc3MgVGVzdFZpZGVvUmVjZWl2ZXIgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKICAgfQogCiAgIFNpbXVsYXRlZENsb2NrIGNsb2NrXzsKLSAgTnVs
bEV2ZW50RmFjdG9yeSBldmVudF9mYWN0b3J5XzsKICAgVmlkZW9Db2RlYyBzZXR0aW5nc187CiAg
IE5pY2VNb2NrPE1vY2tWaWRlb0RlY29kZXI+IGRlY29kZXJfOwogICBOaWNlTW9jazxNb2NrUGFj
a2V0UmVxdWVzdENhbGxiYWNrPiBwYWNrZXRfcmVxdWVzdF9jYWxsYmFja187CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy92aWRlb19zZW5kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19zZW5kZXIuY2MKaW5kZXggNGMx
ZTI0MzYxMjA0ZGMwNTliOGUzN2FkYWZmYTQwMWI2ZTUzNjNlZi4uNGJkNTI1MzBjOWY1MDIwYTdm
YmMyNzg2YzhjZjQ1OWEwYWIzMmE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fc2VuZGVyLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL3ZpZGVvX3NlbmRlci5jYwpAQCAtNDAsNyArNDAsOCBAQCBWaWRlb1NlbmRl
cjo6VmlkZW9TZW5kZXIoQ2xvY2sqIGNsb2NrLAogICAgICAgX2VuY29kZWRGcmFtZUNhbGxiYWNr
KHBvc3RfZW5jb2RlX2NhbGxiYWNrLCAmX21lZGlhT3B0KSwKICAgICAgIHBvc3RfZW5jb2RlX2Nh
bGxiYWNrXyhwb3N0X2VuY29kZV9jYWxsYmFjayksCiAgICAgICBfY29kZWNEYXRhQmFzZSgmX2Vu
Y29kZWRGcmFtZUNhbGxiYWNrKSwKLSAgICAgIGZyYW1lX2Ryb3BwZXJfZW5hYmxlZF8odHJ1ZSks
CisgICAgICBmcmFtZV9kcm9wcGVyX3JlcXVlc3RlZF8odHJ1ZSksCisgICAgICBmb3JjZV9kaXNh
YmxlX2ZyYW1lX2Ryb3BwZXJfKGZhbHNlKSwKICAgICAgIGN1cnJlbnRfY29kZWNfKCksCiAgICAg
ICBlbmNvZGVyX3BhcmFtc18oe1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24oKSwgMCwgMCwgMH0pLAog
ICAgICAgZW5jb2Rlcl9oYXNfaW50ZXJuYWxfc291cmNlXyhmYWxzZSksCkBAIC05NiwxNSArOTcs
MTIgQEAgaW50MzJfdCBWaWRlb1NlbmRlcjo6UmVnaXN0ZXJTZW5kQ29kZWMoY29uc3QgVmlkZW9D
b2RlYyogc2VuZENvZGVjLAogICAgIG51bUxheWVycyA9IDE7CiAgIH0KIAotICAvLyBJZiB3ZSBo
YXZlIHNjcmVlbnNoYXJpbmcgYW5kIHdlIGhhdmUgbGF5ZXJzLCB3ZSBkaXNhYmxlIGZyYW1lIGRy
b3BwZXIuCi0gIGNvbnN0IGJvb2wgZGlzYWJsZV9mcmFtZV9kcm9wcGVyID0KKyAgLy8gRm9yY2Ut
ZGlzYWJsZSBmcmFtZSBkcm9wcGVyIGlmIGVpdGhlcjoKKyAgLy8gICogV2UgaGF2ZSBzY3JlZW5z
aGFyaW5nIHdpdGggbGF5ZXJzLgorICAvLyAgKiAiV2ViUlRDLUZyYW1lRHJvcHBlciIgZmllbGQg
dHJpYWwgaXMgIkRpc2FibGVkIi4KKyAgZm9yY2VfZGlzYWJsZV9mcmFtZV9kcm9wcGVyXyA9CiAg
ICAgICBmaWVsZF90cmlhbDo6SXNEaXNhYmxlZChrRnJhbWVEcm9wcGVyRmllbGRUcmlhbCkgfHwK
ICAgICAgIChudW1MYXllcnMgPiAxICYmIHNlbmRDb2RlYy0+bW9kZSA9PSBWaWRlb0NvZGVjTW9k
ZTo6a1NjcmVlbnNoYXJpbmcpOwotICBpZiAoZGlzYWJsZV9mcmFtZV9kcm9wcGVyKSB7Ci0gICAg
X21lZGlhT3B0LkVuYWJsZUZyYW1lRHJvcHBlcihmYWxzZSk7Ci0gIH0gZWxzZSBpZiAoZnJhbWVf
ZHJvcHBlcl9lbmFibGVkXykgewotICAgIF9tZWRpYU9wdC5FbmFibGVGcmFtZURyb3BwZXIodHJ1
ZSk7Ci0gIH0KIAogICB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJnBhcmFtc19jcml0Xyk7CkBA
IC0yNDcsOCArMjQ1LDEwIEBAIHZvaWQgVmlkZW9TZW5kZXI6OlNldEVuY29kZXJQYXJhbWV0ZXJz
KEVuY29kZXJQYXJhbWV0ZXJzIHBhcmFtcywKIH0KIAogLy8gQWRkIG9uZSByYXcgdmlkZW8gZnJh
bWUgdG8gdGhlIGVuY29kZXIsIGJsb2NraW5nLgotaW50MzJfdCBWaWRlb1NlbmRlcjo6QWRkVmlk
ZW9GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNTcGVjaWZpY0lu
Zm8pIHsKK2ludDMyX3QgVmlkZW9TZW5kZXI6OkFkZFZpZGVvRnJhbWUoCisgICAgY29uc3QgVmlk
ZW9GcmFtZSYgdmlkZW9GcmFtZSwKKyAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNT
cGVjaWZpY0luZm8sCisgICAgYWJzbDo6b3B0aW9uYWw8VmlkZW9FbmNvZGVyOjpFbmNvZGVySW5m
bz4gZW5jb2Rlcl9pbmZvKSB7CiAgIEVuY29kZXJQYXJhbWV0ZXJzIGVuY29kZXJfcGFyYW1zOwog
ICBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+IG5leHRfZnJhbWVfdHlwZXM7CiAgIGJvb2wgZW5jb2Rl
cl9oYXNfaW50ZXJuYWxfc291cmNlID0gZmFsc2U7CkBAIC0yNjIsNiArMjYyLDE3IEBAIGludDMy
X3QgVmlkZW9TZW5kZXI6OkFkZFZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9GcmFt
ZSwKICAgaWYgKF9lbmNvZGVyID09IG51bGxwdHIpCiAgICAgcmV0dXJuIFZDTV9VTklOSVRJQUxJ
WkVEOwogICBTZXRFbmNvZGVyUGFyYW1ldGVycyhlbmNvZGVyX3BhcmFtcywgZW5jb2Rlcl9oYXNf
aW50ZXJuYWxfc291cmNlKTsKKyAgaWYgKCFlbmNvZGVyX2luZm8pIHsKKyAgICBlbmNvZGVyX2lu
Zm8gPSBfZW5jb2Rlci0+R2V0RW5jb2RlckluZm8oKTsKKyAgfQorCisgIC8vIEZyYW1lIGRyb3Bw
aW5nIGlzIGVuYWJsZWQgaWZmIGZyYW1lIGRyb3BwaW5nIGhhcyBiZWVuIHJlcXVlc3RlZCwgYW5k
CisgIC8vIGZyYW1lIGRyb3BwaW5nIGlzIG5vdCBmb3JjZS1kaXNhYmxlZCwgYW5kIHJhdGUgY29u
dHJvbGxlciBpcyBub3QgdHJ1c3RlZC4KKyAgY29uc3QgYm9vbCBmcmFtZV9kcm9wcGluZ19lbmFi
bGVkID0KKyAgICAgIGZyYW1lX2Ryb3BwZXJfcmVxdWVzdGVkXyAmJiAhZm9yY2VfZGlzYWJsZV9m
cmFtZV9kcm9wcGVyXyAmJgorICAgICAgIWVuY29kZXJfaW5mby0+aGFzX3RydXN0ZWRfcmF0ZV9j
b250cm9sbGVyOworICBfbWVkaWFPcHQuRW5hYmxlRnJhbWVEcm9wcGVyKGZyYW1lX2Ryb3BwaW5n
X2VuYWJsZWQpOworCiAgIGlmIChfbWVkaWFPcHQuRHJvcEZyYW1lKCkpIHsKICAgICBSVENfTE9H
KExTX1ZFUkJPU0UpIDw8ICJEcm9wIEZyYW1lICIKICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJ0YXJnZXQgYml0cmF0ZSAiCkBAIC0yODcsNyArMjk4LDcgQEAgaW50MzJfdCBWaWRlb1NlbmRl
cjo6QWRkVmlkZW9GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLAogICBjb25zdCBi
b29sIGlzX2J1ZmZlcl90eXBlX3N1cHBvcnRlZCA9CiAgICAgICBidWZmZXJfdHlwZSA9PSBWaWRl
b0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCB8fAogICAgICAgKGJ1ZmZlcl90eXBlID09IFZpZGVv
RnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUgJiYKLSAgICAgICBfZW5jb2Rlci0+U3VwcG9ydHNO
YXRpdmVIYW5kbGUoKSk7CisgICAgICAgZW5jb2Rlcl9pbmZvLT5zdXBwb3J0c19uYXRpdmVfaGFu
ZGxlKTsKICAgaWYgKCFpc19idWZmZXJfdHlwZV9zdXBwb3J0ZWQpIHsKICAgICAvLyBUaGlzIG1v
ZHVsZSBvbmx5IHN1cHBvcnRzIHNvZnR3YXJlIGVuY29kaW5nLgogICAgIC8vIFRPRE8ocGJvcyk6
IE9mZmxvYWQgY29udmVyc2lvbiBmcm9tIHRoZSBlbmNvZGVyIHRocmVhZC4KQEAgLTM1NSw3ICsz
NjYsNyBAQCBpbnQzMl90IFZpZGVvU2VuZGVyOjpJbnRyYUZyYW1lUmVxdWVzdChzaXplX3Qgc3Ry
ZWFtX2luZGV4KSB7CiAKIGludDMyX3QgVmlkZW9TZW5kZXI6OkVuYWJsZUZyYW1lRHJvcHBlcihi
b29sIGVuYWJsZSkgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZlbmNvZGVyX2NyaXRfKTsKLSAg
ZnJhbWVfZHJvcHBlcl9lbmFibGVkXyA9IGVuYWJsZTsKKyAgZnJhbWVfZHJvcHBlcl9yZXF1ZXN0
ZWRfID0gZW5hYmxlOwogICBfbWVkaWFPcHQuRW5hYmxlRnJhbWVEcm9wcGVyKGVuYWJsZSk7CiAg
IHJldHVybiBWQ01fT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19zZW5kZXJfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy92aWRlb19zZW5kZXJfdW5pdHRlc3QuY2MKaW5kZXggM2NkOWNhZjY1YzMw
Njc5OGY4ODhmOWRjNWNhN2M3MDFhZDMyZDliOC4uYzJmZjBmNjIwN2MxMjlhOWRjODM4YmI3ZTg1
NWZiMWZmM2FhYTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fc2VuZGVyX3VuaXR0ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL3ZpZGVvX3NlbmRlcl91bml0dGVzdC5jYwpAQCAtMTEsMTEgKzExLDExIEBA
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS90
ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZl
ci5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIK
LSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3Rl
bXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUv
bW9jay9tb2NrX3ZjbV9jYWxsYmFja3MuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9pbmNsdWRlL21vY2svbW9ja192aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZy5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvZGVmYXVsdF92aWRlb19iaXRyYXRlX2FsbG9jYXRv
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Jh
dGVfYWxsb2NhdG9yLmgiCkBAIC0xODYsNyArMTg2LDEwIEBAIGNsYXNzIFRlc3RWaWRlb1NlbmRl
ciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogCiAgIHZvaWQgQWRkRnJhbWUoKSB7CiAgICAg
YXNzZXJ0KGdlbmVyYXRvcl8uZ2V0KCkpOwotICAgIHNlbmRlcl8tPkFkZFZpZGVvRnJhbWUoKmdl
bmVyYXRvcl8tPk5leHRGcmFtZSgpLCBOVUxMKTsKKyAgICBzZW5kZXJfLT5BZGRWaWRlb0ZyYW1l
KCpnZW5lcmF0b3JfLT5OZXh0RnJhbWUoKSwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVuY29kZXJfID8gYWJzbDo6b3B0aW9uYWw8VmlkZW9FbmNvZGVyOjpFbmNvZGVySW5m
bz4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyXy0+
R2V0RW5jb2RlckluZm8oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
YWJzbDo6bnVsbG9wdCk7CiAgIH0KIAogICBTaW11bGF0ZWRDbG9jayBjbG9ja187CkBAIC0zNjks
OSArMzcyLDYgQEAgVEVTVF9GKFRlc3RWaWRlb1NlbmRlcldpdGhNb2NrRW5jb2RlciwKICAgLy8g
RXhwZWN0IGluaXRpYWwgY2FsbCB0byBTZXRDaGFubmVsUGFyYW1ldGVycy4gUmF0ZXMgYXJlIGlu
aXRpYWxpemVkIHRocm91Z2gKICAgLy8gSW5pdEVuY29kZSBhbmQgZXhwZWN0cyBubyBhZGRpdGlv
bmFsIGNhbGwgYmVmb3JlIHRoZSBmcmFtZXJhdGUgKG9yIGJpdHJhdGUpCiAgIC8vIHVwZGF0ZXMu
Ci0gIEVYUEVDVF9DQUxMKGVuY29kZXJfLCBTZXRDaGFubmVsUGFyYW1ldGVycyhrTG9zc1JhdGUs
IGtSdHQpKQotICAgICAgLlRpbWVzKDEpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDApKTsKICAg
c2VuZGVyXy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMoc2V0dGluZ3NfLnN0YXJ0Qml0cmF0ZSAqIDEw
MDAsIGtMb3NzUmF0ZSwga1J0dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0
ZV9hbGxvY2F0b3JfLmdldCgpLCBudWxscHRyKTsKICAgd2hpbGUgKGNsb2NrXy5UaW1lSW5NaWxs
aXNlY29uZHMoKSA8IHN0YXJ0X3RpbWUgKyBrUmF0ZVN0YXRzV2luZG93TXMpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvQlVJTEQu
Z24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL0JVSUxE
LmduCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjUxNjVhMDM3YmU1ZmNlZGZiMTFl
YzBmOGRiZjUwYWM2Mjg1ZDU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMv
QlVJTEQuZ24KKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMp
IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0j
Ci0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCi0jIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSMgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotIyBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLQotaW1wb3J0KCIuLi93
ZWJydGMuZ25pIikKLWlmIChpc19hbmRyb2lkKSB7Ci0gIGltcG9ydCgiLy9idWlsZC9jb25maWcv
YW5kcm9pZC9jb25maWcuZ25pIikKLSAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9hbmRyb2lkL3J1
bGVzLmduaSIpCi19Ci0KLXJ0Y19zdGF0aWNfbGlicmFyeSgib3J0YyIpIHsKLSAgZGVmaW5lcyA9
IFtdCi0gIHNvdXJjZXMgPSBbCi0gICAgIm9ydGNmYWN0b3J5LmNjIiwKLSAgICAib3J0Y2ZhY3Rv
cnkuaCIsCi0gICAgIm9ydGNydHByZWNlaXZlcmFkYXB0ZXIuY2MiLAotICAgICJvcnRjcnRwcmVj
ZWl2ZXJhZGFwdGVyLmgiLAotICAgICJvcnRjcnRwc2VuZGVyYWRhcHRlci5jYyIsCi0gICAgIm9y
dGNydHBzZW5kZXJhZGFwdGVyLmgiLAotICAgICJydHB0cmFuc3BvcnRhZGFwdGVyLmNjIiwKLSAg
ICAicnRwdHJhbnNwb3J0YWRhcHRlci5oIiwKLSAgICAicnRwdHJhbnNwb3J0Y29udHJvbGxlcmFk
YXB0ZXIuY2MiLAotICAgICJydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5oIiwKLSAgXQot
Ci0gICMgVE9ETyhkZWFkYmVlZik6IENyZWF0ZSBhIHNlcGFyYXRlIHRhcmdldCBmb3IgdGhlIGNv
bW1vbiB0aGluZ3MgT1JUQyBhbmQKLSAgIyBQZWVyQ29ubmVjdGlvbiBjb2RlIHNoYXJlcywgc28g
dGhhdCBvcnRjIGNhbiBkZXBlbmQgb24gdGhhdCBpbnN0ZWFkIG9mCi0gICMgbGliamluZ2xlX3Bl
ZXJjb25uZWN0aW9uLgotICBkZXBzID0gWwotICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25u
ZWN0aW9uX2FwaSIsCi0gICAgIi4uL2FwaTpvcnRjX2FwaSIsCi0gICAgIi4uL2FwaS92aWRlb19j
b2RlY3M6YnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkiLAotICAgICIuLi9hcGkvdmlkZW9f
Y29kZWNzOmJ1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5IiwKLSAgICAiLi4vY2FsbDpjYWxs
X2ludGVyZmFjZXMiLAotICAgICIuLi9jYWxsOnJ0cF9zZW5kZXIiLAotICAgICIuLi9sb2dnaW5n
OnJ0Y19ldmVudF9sb2dfYXBpIiwKLSAgICAiLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2ltcGxf
YmFzZSIsCi0gICAgIi4uL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCi0gICAgIi4uL21lZGlhOnJ0
Y19tZWRpYSIsCi0gICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKLSAgICAiLi4vbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAotICAgICIuLi9wMnA6cnRjX3Ay
cCIsCi0gICAgIi4uL3BjOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbiIsCi0gICAgIi4uL3BjOnBl
ZXJjb25uZWN0aW9uIiwKLSAgICAiLi4vcGM6cnRjX3BjIiwKLSAgICAiLi4vcGM6cnRjX3BjX2Jh
c2UiLAotICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAotICAgICIuLi9ydGNfYmFzZTpydGNfYmFz
ZSIsCi0gICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAiLi4vcnRjX2Jh
c2UvdGhpcmRfcGFydHkvc2lnc2xvdCIsCi0gICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21lbW9yeSIsCi0gICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9w
dGlvbmFsIiwKLSAgXQotCi0gIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykg
ewotICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2lu
IChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KLSAgICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAiLy9i
dWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRfY29uc3RydWN0cyIgXQotICB9Ci19Ci0KLWlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewotICBydGNfdGVzdCgib3J0Y191bml0dGVzdHMiKSB7Ci0gICAg
dGVzdG9ubHkgPSB0cnVlCi0KLSAgICBzb3VyY2VzID0gWwotICAgICAgIm9ydGNmYWN0b3J5X2lu
dGVncmF0aW9udGVzdC5jYyIsCi0gICAgICAib3J0Y2ZhY3RvcnlfdW5pdHRlc3QuY2MiLAotICAg
ICAgIm9ydGNydHByZWNlaXZlcl91bml0dGVzdC5jYyIsCi0gICAgICAib3J0Y3J0cHNlbmRlcl91
bml0dGVzdC5jYyIsCi0gICAgICAicnRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjIiwKLSAgICAgICJy
dHB0cmFuc3BvcnRjb250cm9sbGVyX3VuaXR0ZXN0LmNjIiwKLSAgICAgICJzcnRwdHJhbnNwb3J0
X3VuaXR0ZXN0LmNjIiwKLSAgICAgICJ0ZXN0cnRwcGFyYW1ldGVycy5jYyIsCi0gICAgICAidGVz
dHJ0cHBhcmFtZXRlcnMuaCIsCi0gICAgXQotCi0gICAgZGVwcyA9IFsKLSAgICAgICI6b3J0YyIs
Ci0gICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAotICAgICAgIi4u
L2FwaTpvcnRjX2FwaSIsCi0gICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlv
X2RlY29kZXJfZmFjdG9yeSIsCi0gICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1
ZGlvX2VuY29kZXJfZmFjdG9yeSIsCi0gICAgICAiLi4vbWVkaWE6cnRjX21lZGlhX3Rlc3RzX3V0
aWxzIiwKLSAgICAgICIuLi9wMnA6cDJwX3Rlc3RfdXRpbHMiLAotICAgICAgIi4uL3AycDpydGNf
cDJwIiwKLSAgICAgICIuLi9wYzpwY190ZXN0X3V0aWxzIiwKLSAgICAgICIuLi9wYzpwZWVyY29u
bmVjdGlvbiIsCi0gICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAotICAgICAgIi4uL3J0Y19i
YXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0
c19tYWluIiwKLSAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCi0gICAg
ICAiLi4vcnRjX2Jhc2Uvc3lzdGVtOmFyY2giLAotICAgIF0KLQotICAgIGlmICghYnVpbGRfd2l0
aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewotICAgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9t
IHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgotICAgICAg
c3VwcHJlc3NlZF9jb25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2NsYW5nOmZpbmRfYmFkX2Nv
bnN0cnVjdHMiIF0KLSAgICB9Ci0KLSAgICBpZiAoaXNfYW5kcm9pZCkgewotICAgICAgZGVwcyAr
PSBbICIvL3Rlc3RpbmcvYW5kcm9pZC9uYXRpdmVfdGVzdDpuYXRpdmVfdGVzdF9zdXBwb3J0IiBd
Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9vcnRjL0RFUFMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9vcnRjL0RFUFMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYmYw
MzBiODI5MGU2MjkwYzkzMjY5OTlkMWU1ZWFkYzE3ZmU2ZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvb3J0Yy9ERVBTCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotaW5j
bHVkZV9ydWxlcyA9IFsKLSAgIithcGkiLAotICAiK2NhbGwiLAotICAiK2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZyIsCi0gICIrbWVkaWEiLAotICAiK21vZHVsZXMvYXVkaW9fY29kaW5nIiwKLSAgIitt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmciLAotICAiK3AycCIsCi0gICIrcGMiLAotCi0gICIrbW9k
dWxlcy9ydHBfcnRjcCIsCi0gICIrc3lzdGVtX3dyYXBwZXJzIiwKLQotICAiK21vZHVsZXMvYXVk
aW9fZGV2aWNlIiwKLSAgIittb2R1bGVzL3ZpZGVvX2NvZGluZyIsCi0gICIrbW9kdWxlcy92aWRl
b19yZW5kZXIiLAotXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvb3J0Yy9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9vcnRjL09XTkVSUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGMw
OGZmZjUwYjhmMmVhNzM5M2Q5YWI5ZDNlNzVkN2U0YjZjZDMwMS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9vcnRjL09XTkVSUworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAot
cHRoYXRjaGVyQHdlYnJ0Yy5vcmcKLXN0ZXZlYW50b25Ad2VicnRjLm9yZwotCi0jIFRoZXNlIGFy
ZSBmb3IgdGhlIGNvbW1vbiBjYXNlIG9mIGFkZGluZyBvciByZW5hbWluZyBmaWxlcy4gSWYgeW91
J3JlIGRvaW5nCi0jIHN0cnVjdHVyYWwgY2hhbmdlcywgcGxlYXNlIGdldCBhIHJldmlldyBmcm9t
IGEgcmV2aWV3ZXIgaW4gdGhpcyBmaWxlLgotcGVyLWZpbGUgKi5nbj0qCi1wZXItZmlsZSAqLmdu
aT0qCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9vcnRjL29ydGNmYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2I2M2QyNjE3NGJhNjc4NjQwOTU0NGZjMTU0ZTJiMTM1NWVmMmY1OS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNmYWN0b3J5LmNjCisrKyAvZGV2L251bGwKQEAg
LTEsNTYzICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJvcnRjL29ydGNm
YWN0b3J5LmgiCi0KLSNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6bW92ZS4KLSNpbmNs
dWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRl
ICJhcGkvbWVkaWFzdHJlYW10cmFja3Byb3h5LmgiCi0jaW5jbHVkZSAiYXBpL3Byb3h5LmgiCi0j
aW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWls
dGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
YnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJhcGkvdmlkZW9zb3Vy
Y2Vwcm94eS5oIgotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9n
LmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgotI2luY2x1ZGUgIm1l
ZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKLSNpbmNsdWRlICJvcnRjL29ydGNydHBy
ZWNlaXZlcmFkYXB0ZXIuaCIKLSNpbmNsdWRlICJvcnRjL29ydGNydHBzZW5kZXJhZGFwdGVyLmgi
Ci0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmgiCi0jaW5jbHVkZSAib3J0Yy9y
dHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5oIgotI2luY2x1ZGUgInAycC9iYXNlL2Jhc2lj
cGFja2V0c29ja2V0ZmFjdG9yeS5oIgotI2luY2x1ZGUgInAycC9iYXNlL3VkcHRyYW5zcG9ydC5o
IgotI2luY2x1ZGUgInBjL2F1ZGlvdHJhY2suaCIKLSNpbmNsdWRlICJwYy9jaGFubmVsbWFuYWdl
ci5oIgotI2luY2x1ZGUgInBjL2xvY2FsYXVkaW9zb3VyY2UuaCIKLSNpbmNsdWRlICJwYy9ydHBw
YXJhbWV0ZXJzY29udmVyc2lvbi5oIgotI2luY2x1ZGUgInBjL3ZpZGVvdHJhY2suaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Jp
bmQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9o
ZWxwZXJzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKLQotbmFtZXNwYWNlIHsKLQotY29uc3QgaW50
IGtEZWZhdWx0UnRjcENuYW1lTGVuZ3RoID0gMTY7Ci0KLS8vIEFzc2VydHMgdGhhdCBhbGwgb2Yg
dGhlIGJ1aWx0LWluIGNhcGFiaWxpdGllcyBjYW4gYmUgY29udmVydGVkIHRvCi0vLyBSdHBDYXBh
YmlsaXRpZXMuIElmIHRoZXkgY2FuJ3QsIHNvbWV0aGluZydzIHdyb25nIChmb3IgZXhhbXBsZSwg
bWF5YmUgYSBuZXcKLS8vIGZlZWRiYWNrIG1lY2hhbmlzbSBpcyBzdXBwb3J0ZWQsIGJ1dCBhbiBl
bnVtIHZhbHVlIHdhc24ndCBhZGRlZCB0bwotLy8gcnRwcGFyYW1ldGVycy5oKS4KLXRlbXBsYXRl
IDx0eXBlbmFtZSBDPgotd2VicnRjOjpSdHBDYXBhYmlsaXRpZXMgVG9SdHBDYXBhYmlsaXRpZXNX
aXRoQXNzZXJ0cygKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxDPiYgY3JpY2tldF9jb2RlY3MsCi0g
ICAgY29uc3QgY3JpY2tldDo6UnRwSGVhZGVyRXh0ZW5zaW9ucyYgY3JpY2tldF9leHRlbnNpb25z
KSB7Ci0gIHdlYnJ0Yzo6UnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcyA9Ci0gICAgICB3ZWJy
dGM6OlRvUnRwQ2FwYWJpbGl0aWVzKGNyaWNrZXRfY29kZWNzLCBjcmlja2V0X2V4dGVuc2lvbnMp
OwotICBSVENfRENIRUNLX0VRKGNhcGFiaWxpdGllcy5jb2RlY3Muc2l6ZSgpLCBjcmlja2V0X2Nv
ZGVjcy5zaXplKCkpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhcGFiaWxpdGllcy5jb2Rl
Y3Muc2l6ZSgpOyArK2kpIHsKLSAgICBSVENfRENIRUNLX0VRKGNhcGFiaWxpdGllcy5jb2RlY3Nb
aV0ucnRjcF9mZWVkYmFjay5zaXplKCksCi0gICAgICAgICAgICAgICAgICBjcmlja2V0X2NvZGVj
c1tpXS5mZWVkYmFja19wYXJhbXMucGFyYW1zKCkuc2l6ZSgpKTsKLSAgfQotICBSVENfRENIRUNL
X0VRKGNhcGFiaWxpdGllcy5oZWFkZXJfZXh0ZW5zaW9ucy5zaXplKCksCi0gICAgICAgICAgICAg
ICAgY3JpY2tldF9leHRlbnNpb25zLnNpemUoKSk7Ci0gIHJldHVybiBjYXBhYmlsaXRpZXM7Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gTm90ZSB0aGF0
IHRoaXMgcHJveHkgY2xhc3MgdXNlcyB0aGUgbmV0d29yayB0aHJlYWQgYXMgdGhlICJ3b3JrZXIi
IHRocmVhZC4KLUJFR0lOX09XTkVEX1BST1hZX01BUChPcnRjRmFjdG9yeSkKLVBST1hZX1NJR05B
TElOR19USFJFQURfREVTVFJVQ1RPUigpCi1QUk9YWV9NRVRIT0QwKFJUQ0Vycm9yT3I8c3RkOjp1
bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+PiwKLSAgICAgICAgICAg
ICAgQ3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcikKLVBST1hZX01FVEhPRDQoUlRDRXJyb3JP
cjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4sCi0gICAgICAgICAgICAg
IENyZWF0ZVJ0cFRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgY29uc3QgUnRwVHJhbnNwb3J0UGFy
YW1ldGVycyYsCi0gICAgICAgICAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSosCi0gICAg
ICAgICAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSosCi0gICAgICAgICAgICAgIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UqKQotCi1QUk9YWV9NRVRIT0Q0KFJUQ0Vycm9yT3I8
c3RkOjp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+PiwKLSAgICAgICAgICAgICAg
Q3JlYXRlU3J0cFRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgY29uc3QgUnRwVHJhbnNwb3J0UGFy
YW1ldGVycyYsCi0gICAgICAgICAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSosCi0gICAg
ICAgICAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSosCi0gICAgICAgICAgICAgIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UqKQotCi1QUk9YWV9DT05TVE1FVEhPRDEoUnRwQ2Fw
YWJpbGl0aWVzLAotICAgICAgICAgICAgICAgICAgIEdldFJ0cFNlbmRlckNhcGFiaWxpdGllcywK
LSAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpNZWRpYVR5cGUpCi1QUk9YWV9NRVRIT0QyKFJU
Q0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PiwKLSAgICAg
ICAgICAgICAgQ3JlYXRlUnRwU2VuZGVyLAotICAgICAgICAgICAgICBydGM6OnNjb3BlZF9yZWZw
dHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4sCi0gICAgICAgICAgICAgIFJ0cFRyYW5zcG9y
dEludGVyZmFjZSopCi1QUk9YWV9NRVRIT0QyKFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9y
dGNSdHBTZW5kZXJJbnRlcmZhY2U+PiwKLSAgICAgICAgICAgICAgQ3JlYXRlUnRwU2VuZGVyLAot
ICAgICAgICAgICAgICBjcmlja2V0OjpNZWRpYVR5cGUsCi0gICAgICAgICAgICAgIFJ0cFRyYW5z
cG9ydEludGVyZmFjZSopCi1QUk9YWV9DT05TVE1FVEhPRDEoUnRwQ2FwYWJpbGl0aWVzLAotICAg
ICAgICAgICAgICAgICAgIEdldFJ0cFJlY2VpdmVyQ2FwYWJpbGl0aWVzLAotICAgICAgICAgICAg
ICAgICAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSkKLVBST1hZX01FVEhPRDIoUlRDRXJyb3JPcjxzdGQ6
OnVuaXF1ZV9wdHI8T3J0Y1J0cFJlY2VpdmVySW50ZXJmYWNlPj4sCi0gICAgICAgICAgICAgIENy
ZWF0ZVJ0cFJlY2VpdmVyLAotICAgICAgICAgICAgICBjcmlja2V0OjpNZWRpYVR5cGUsCi0gICAg
ICAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSopCi1QUk9YWV9XT1JLRVJfTUVUSE9EMyhS
VENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxVZHBUcmFuc3BvcnRJbnRlcmZhY2U+PiwKLSAgICAg
ICAgICAgICAgICAgICAgIENyZWF0ZVVkcFRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAg
IGludCwKLSAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90LAotICAgICAgICAgICAgICAgICAg
ICAgdWludDE2X3QpCi1QUk9YWV9NRVRIT0QxKHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1NvdXJj
ZUludGVyZmFjZT4sCi0gICAgICAgICAgICAgIENyZWF0ZUF1ZGlvU291cmNlLAotICAgICAgICAg
ICAgICBjb25zdCBjcmlja2V0OjpBdWRpb09wdGlvbnMmKQotUFJPWFlfTUVUSE9EMihydGM6OnNj
b3BlZF9yZWZwdHI8VmlkZW9UcmFja0ludGVyZmFjZT4sCi0gICAgICAgICAgICAgIENyZWF0ZVZp
ZGVvVHJhY2ssCi0gICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiwKLSAgICAgICAgICAg
ICAgVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZSopCi1QUk9YWV9NRVRIT0QyKHJ0Yzo6c2NvcGVk
X3JlZnB0cjxBdWRpb1RyYWNrSW50ZXJmYWNlPiwKLSAgICAgICAgICAgICAgQ3JlYXRlQXVkaW9U
cmFjaywKLSAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmLAotICAgICAgICAgICAgICBB
dWRpb1NvdXJjZUludGVyZmFjZSopCi1FTkRfUFJPWFlfTUFQKCkKLQotLy8gc3RhdGljCi1SVENF
cnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4+IE9ydGNGYWN0b3J5
OjpDcmVhdGUoCi0gICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhy
ZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgIHJ0Yzo6TmV0d29ya01hbmFnZXIqIG5ldHdvcmtf
bWFuYWdlciwKLSAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAot
ICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG0sCi0gICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6
Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUsCi0gICAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
KSB7Ci0gIC8vIEhvcCB0byBzaWduYWxpbmcgdGhyZWFkIGlmIG5lZWRlZC4KLSAgaWYgKHNpZ25h
bGluZ190aHJlYWQgJiYgIXNpZ25hbGluZ190aHJlYWQtPklzQ3VycmVudCgpKSB7Ci0gICAgcmV0
dXJuIHNpZ25hbGluZ190aHJlYWQKLSAgICAgICAgLT5JbnZva2U8UlRDRXJyb3JPcjxzdGQ6OnVu
aXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+Pj4oCi0gICAgICAgICAgICBSVENfRlJPTV9I
RVJFLAotICAgICAgICAgICAgcnRjOjpCaW5kKCZPcnRjRmFjdG9yeTo6Q3JlYXRlX3MsIG5ldHdv
cmtfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgIG5ldHdv
cmtfbWFuYWdlciwgc29ja2V0X2ZhY3RvcnksIGFkbSwKLSAgICAgICAgICAgICAgICAgICAgICBt
ZWRpYV9lbmdpbmUucmVsZWFzZSgpLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICAgICAg
ICAgICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KSk7Ci0gIH0KLSAgcmV0dXJuIENyZWF0
ZV9zKG5ldHdvcmtfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBuZXR3b3JrX21hbmFnZXIsCi0g
ICAgICAgICAgICAgICAgICBzb2NrZXRfZmFjdG9yeSwgYWRtLCBtZWRpYV9lbmdpbmUucmVsZWFz
ZSgpLAotICAgICAgICAgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnkpOwotfQotCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9y
eUludGVyZmFjZT4+IE9ydGNGYWN0b3J5SW50ZXJmYWNlOjpDcmVhdGUoCi0gICAgcnRjOjpUaHJl
YWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAot
ICAgIHJ0Yzo6TmV0d29ya01hbmFnZXIqIG5ldHdvcmtfbWFuYWdlciwKLSAgICBydGM6OlBhY2tl
dFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAotICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBh
ZG0sCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2Vu
Y29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9y
eT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KSB7Ci0gIHJldHVybiBPcnRjRmFjdG9yeTo6Q3JlYXRl
KG5ldHdvcmtfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBuZXR3b3JrX21hbmFnZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF9mYWN0b3J5LCBhZG0sIG51bGxwdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5KTsKLX0KLQotT3J0Y0ZhY3Rvcnk6Ok9ydGNGYWN0b3J5KAotICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3Ro
cmVhZCwKLSAgICBydGM6Ok5ldHdvcmtNYW5hZ2VyKiBuZXR3b3JrX21hbmFnZXIsCi0gICAgcnRj
OjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFjdG9yeSwKLSAgICBBdWRpb0RldmljZU1v
ZHVsZSogYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBh
dWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2Rl
ckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSkKLSAgICA6IG5ldHdvcmtfdGhyZWFkXyhu
ZXR3b3JrX3RocmVhZCksCi0gICAgICBzaWduYWxpbmdfdGhyZWFkXyhzaWduYWxpbmdfdGhyZWFk
KSwKLSAgICAgIG5ldHdvcmtfbWFuYWdlcl8obmV0d29ya19tYW5hZ2VyKSwKLSAgICAgIHNvY2tl
dF9mYWN0b3J5Xyhzb2NrZXRfZmFjdG9yeSksCi0gICAgICBhZG1fKGFkbSksCi0gICAgICBudWxs
X2V2ZW50X2xvZ18oUnRjRXZlbnRMb2c6OkNyZWF0ZU51bGwoKSksCi0gICAgICBhdWRpb19lbmNv
ZGVyX2ZhY3RvcnlfKGF1ZGlvX2VuY29kZXJfZmFjdG9yeSksCi0gICAgICBhdWRpb19kZWNvZGVy
X2ZhY3RvcnlfKGF1ZGlvX2RlY29kZXJfZmFjdG9yeSkgewotICBpZiAoIXJ0Yzo6Q3JlYXRlUmFu
ZG9tU3RyaW5nKGtEZWZhdWx0UnRjcENuYW1lTGVuZ3RoLCAmZGVmYXVsdF9jbmFtZV8pKSB7Ci0g
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBnZW5lcmF0ZSBDTkFNRT8iOwotICAg
IFJUQ19OT1RSRUFDSEVEKCk7Ci0gIH0KLSAgaWYgKCFuZXR3b3JrX3RocmVhZF8pIHsKLSAgICBv
d25lZF9uZXR3b3JrX3RocmVhZF8gPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZl
cigpOwotICAgIG93bmVkX25ldHdvcmtfdGhyZWFkXy0+U3RhcnQoKTsKLSAgICBuZXR3b3JrX3Ro
cmVhZF8gPSBvd25lZF9uZXR3b3JrX3RocmVhZF8uZ2V0KCk7Ci0gIH0KLQotICAvLyBUaGUgd29y
a2VyIHRocmVhZCBpcyBjcmVhdGVkIGludGVybmFsbHkgYmVjYXVzZSBpdCdzIGFuIGltcGxlbWVu
dGF0aW9uCi0gIC8vIGRldGFpbCwgYW5kIGNvbnN1bWVycyBvZiB0aGUgQVBJIGRvbid0IG5lZWQg
dG8gcmVhbGx5IGtub3cgYWJvdXQgaXQuCi0gIHdvcmtlcl90aHJlYWRfID0gcnRjOjpUaHJlYWQ6
OkNyZWF0ZSgpOwotICB3b3JrZXJfdGhyZWFkXy0+U2V0TmFtZSgiT1JUQy13b3JrZXIiLCB0aGlz
KTsKLSAgd29ya2VyX3RocmVhZF8tPlN0YXJ0KCk7Ci0KLSAgaWYgKHNpZ25hbGluZ190aHJlYWRf
KSB7Ci0gICAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICB9IGVsc2Ug
ewotICAgIHNpZ25hbGluZ190aHJlYWRfID0gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKTsKLSAgICBp
ZiAoIXNpZ25hbGluZ190aHJlYWRfKSB7Ci0gICAgICAvLyBJZiB0aGlzIHRocmVhZCBpc24ndCBh
bHJlYWR5IHdyYXBwZWQgYnkgYW4gcnRjOjpUaHJlYWQsIGNyZWF0ZSBhCi0gICAgICAvLyB3cmFw
cGVyIGFuZCBvd24gaXQgaW4gdGhpcyBjbGFzcy4KLSAgICAgIHNpZ25hbGluZ190aHJlYWRfID0g
cnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVudFRocmVhZCgpOwotICAg
ICAgd3JhcHNfc2lnbmFsaW5nX3RocmVhZF8gPSB0cnVlOwotICAgIH0KLSAgfQotCi0gIGlmIChz
aWduYWxpbmdfdGhyZWFkXy0+bmFtZSgpLmVtcHR5KCkpIHsKLSAgICBzaWduYWxpbmdfdGhyZWFk
Xy0+U2V0TmFtZSgiT1JUQy1zaWduYWxpbmciLCB0aGlzKTsKLSAgfQotCi0gIGlmICghbmV0d29y
a19tYW5hZ2VyXykgewotICAgIG93bmVkX25ldHdvcmtfbWFuYWdlcl8ucmVzZXQobmV3IHJ0Yzo6
QmFzaWNOZXR3b3JrTWFuYWdlcigpKTsKLSAgICBuZXR3b3JrX21hbmFnZXJfID0gb3duZWRfbmV0
d29ya19tYW5hZ2VyXy5nZXQoKTsKLSAgfQotICBpZiAoIXNvY2tldF9mYWN0b3J5XykgewotICAg
IG93bmVkX3NvY2tldF9mYWN0b3J5Xy5yZXNldCgKLSAgICAgICAgbmV3IHJ0Yzo6QmFzaWNQYWNr
ZXRTb2NrZXRGYWN0b3J5KG5ldHdvcmtfdGhyZWFkXykpOwotICAgIHNvY2tldF9mYWN0b3J5XyA9
IG93bmVkX3NvY2tldF9mYWN0b3J5Xy5nZXQoKTsKLSAgfQotfQotCi1PcnRjRmFjdG9yeTo6fk9y
dGNGYWN0b3J5KCkgewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0g
IGlmICh3cmFwc19zaWduYWxpbmdfdGhyZWFkXykgewotICAgIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6
SW5zdGFuY2UoKS0+VW53cmFwQ3VycmVudFRocmVhZCgpOwotICB9Ci19Ci0KLVJUQ0Vycm9yT3I8
c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+PgotT3J0Y0Zh
Y3Rvcnk6OkNyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIoKSB7Ci0gIFJUQ19EQ0hFQ0tfUlVO
X09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgcmV0dXJuIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJB
ZGFwdGVyOjpDcmVhdGVQcm94aWVkKAotICAgICAgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgY2hh
bm5lbF9tYW5hZ2VyXy5nZXQoKSwgbnVsbF9ldmVudF9sb2dfLmdldCgpLAotICAgICAgc2lnbmFs
aW5nX3RocmVhZF8sIHdvcmtlcl90aHJlYWRfLmdldCgpLCBuZXR3b3JrX3RocmVhZF8pOwotfQot
Ci1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+PgotT3J0
Y0ZhY3Rvcnk6OkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAot
ICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICBSdHBUcmFuc3BvcnRDb250
cm9sbGVySW50ZXJmYWNlKiB0cmFuc3BvcnRfY29udHJvbGxlcikgewotICBSVENfRENIRUNLX1JV
Tl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgY29waWVk
X3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwotICBpZiAoY29waWVkX3BhcmFtZXRlcnMucnRjcC5j
bmFtZS5lbXB0eSgpKSB7Ci0gICAgY29waWVkX3BhcmFtZXRlcnMucnRjcC5jbmFtZSA9IGRlZmF1
bHRfY25hbWVfOwotICB9Ci0gIGlmICh0cmFuc3BvcnRfY29udHJvbGxlcikgewotICAgIHJldHVy
biB0cmFuc3BvcnRfY29udHJvbGxlci0+R2V0SW50ZXJuYWwoKS0+Q3JlYXRlUHJveGllZFJ0cFRy
YW5zcG9ydCgKLSAgICAgICAgY29waWVkX3BhcmFtZXRlcnMsIHJ0cCwgcnRjcCk7Ci0gIH0gZWxz
ZSB7Ci0gICAgLy8gSWYgfHRyYW5zcG9ydF9jb250cm9sbGVyfCBpcyBudWxsLCBjcmVhdGUgb25l
IGF1dG9tYXRpY2FsbHksIHdoaWNoIHRoZQotICAgIC8vIHJldHVybmVkIFJ0cFRyYW5zcG9ydCB3
aWxsIG93bi4KLSAgICBhdXRvIGNvbnRyb2xsZXJfcmVzdWx0ID0gQ3JlYXRlUnRwVHJhbnNwb3J0
Q29udHJvbGxlcigpOwotICAgIGlmICghY29udHJvbGxlcl9yZXN1bHQub2soKSkgewotICAgICAg
cmV0dXJuIGNvbnRyb2xsZXJfcmVzdWx0Lk1vdmVFcnJvcigpOwotICAgIH0KLSAgICBhdXRvIGNv
bnRyb2xsZXIgPSBjb250cm9sbGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRvIHRyYW5z
cG9ydF9yZXN1bHQgPQotICAgICAgICBjb250cm9sbGVyLT5HZXRJbnRlcm5hbCgpLT5DcmVhdGVQ
cm94aWVkUnRwVHJhbnNwb3J0KGNvcGllZF9wYXJhbWV0ZXJzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cCwgcnRjcCk7Ci0g
ICAgLy8gSWYgUnRwVHJhbnNwb3J0IHdhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCwgdHJhbnNmZXIg
b3duZXJzaGlwIG9mCi0gICAgLy8gfHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcnwuIE90aGVyd2lz
ZSBpdCB3aWxsIGdvIG91dCBvZiBzY29wZSBhbmQgYmUKLSAgICAvLyBkZWxldGVkIGF1dG9tYXRp
Y2FsbHkuCi0gICAgaWYgKHRyYW5zcG9ydF9yZXN1bHQub2soKSkgewotICAgICAgdHJhbnNwb3J0
X3Jlc3VsdC52YWx1ZSgpCi0gICAgICAgICAgLT5HZXRJbnRlcm5hbCgpCi0gICAgICAgICAgLT5U
YWtlT3duZXJzaGlwT2ZSdHBUcmFuc3BvcnRDb250cm9sbGVyKHN0ZDo6bW92ZShjb250cm9sbGVy
KSk7Ci0gICAgfQotICAgIHJldHVybiB0cmFuc3BvcnRfcmVzdWx0OwotICB9Ci19Ci0KLVJUQ0Vy
cm9yT3I8c3RkOjp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+PgotT3J0Y0ZhY3Rv
cnk6OkNyZWF0ZVNydHBUcmFuc3BvcnQoCi0gICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycywKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwKLSAgICBQ
YWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0Y3AsCi0gICAgUnRwVHJhbnNwb3J0Q29udHJvbGxl
ckludGVyZmFjZSogdHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04o
c2lnbmFsaW5nX3RocmVhZF8pOwotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIGNvcGllZF9wYXJh
bWV0ZXJzID0gcGFyYW1ldGVyczsKLSAgaWYgKGNvcGllZF9wYXJhbWV0ZXJzLnJ0Y3AuY25hbWUu
ZW1wdHkoKSkgewotICAgIGNvcGllZF9wYXJhbWV0ZXJzLnJ0Y3AuY25hbWUgPSBkZWZhdWx0X2Nu
YW1lXzsKLSAgfQotICBpZiAodHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgICByZXR1cm4gdHJh
bnNwb3J0X2NvbnRyb2xsZXItPkdldEludGVybmFsKCktPkNyZWF0ZVByb3hpZWRTcnRwVHJhbnNw
b3J0KAotICAgICAgICBjb3BpZWRfcGFyYW1ldGVycywgcnRwLCBydGNwKTsKLSAgfSBlbHNlIHsK
LSAgICAvLyBJZiB8dHJhbnNwb3J0X2NvbnRyb2xsZXJ8IGlzIG51bGwsIGNyZWF0ZSBvbmUgYXV0
b21hdGljYWxseSwgd2hpY2ggdGhlCi0gICAgLy8gcmV0dXJuZWQgU3J0cFRyYW5zcG9ydCB3aWxs
IG93bi4KLSAgICBhdXRvIGNvbnRyb2xsZXJfcmVzdWx0ID0gQ3JlYXRlUnRwVHJhbnNwb3J0Q29u
dHJvbGxlcigpOwotICAgIGlmICghY29udHJvbGxlcl9yZXN1bHQub2soKSkgewotICAgICAgcmV0
dXJuIGNvbnRyb2xsZXJfcmVzdWx0Lk1vdmVFcnJvcigpOwotICAgIH0KLSAgICBhdXRvIGNvbnRy
b2xsZXIgPSBjb250cm9sbGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRvIHRyYW5zcG9y
dF9yZXN1bHQgPQotICAgICAgICBjb250cm9sbGVyLT5HZXRJbnRlcm5hbCgpLT5DcmVhdGVQcm94
aWVkU3J0cFRyYW5zcG9ydChjb3BpZWRfcGFyYW1ldGVycywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwLCBydGNwKTsKLSAg
ICAvLyBJZiBTcnRwVHJhbnNwb3J0IHdhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCwgdHJhbnNmZXIg
b3duZXJzaGlwIG9mCi0gICAgLy8gfHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcnwuIE90aGVyd2lz
ZSBpdCB3aWxsIGdvIG91dCBvZiBzY29wZSBhbmQgYmUKLSAgICAvLyBkZWxldGVkIGF1dG9tYXRp
Y2FsbHkuCi0gICAgaWYgKHRyYW5zcG9ydF9yZXN1bHQub2soKSkgewotICAgICAgdHJhbnNwb3J0
X3Jlc3VsdC52YWx1ZSgpCi0gICAgICAgICAgLT5HZXRJbnRlcm5hbCgpCi0gICAgICAgICAgLT5U
YWtlT3duZXJzaGlwT2ZSdHBUcmFuc3BvcnRDb250cm9sbGVyKHN0ZDo6bW92ZShjb250cm9sbGVy
KSk7Ci0gICAgfQotICAgIHJldHVybiB0cmFuc3BvcnRfcmVzdWx0OwotICB9Ci19Ci0KLVJ0cENh
cGFiaWxpdGllcyBPcnRjRmFjdG9yeTo6R2V0UnRwU2VuZGVyQ2FwYWJpbGl0aWVzKAotICAgIGNy
aWNrZXQ6Ok1lZGlhVHlwZSBraW5kKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25h
bGluZ190aHJlYWRfKTsKLSAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJ
QV9UWVBFX0FVRElPOiB7Ci0gICAgICBjcmlja2V0OjpBdWRpb0NvZGVjcyBjcmlja2V0X2NvZGVj
czsKLSAgICAgIGNyaWNrZXQ6OlJ0cEhlYWRlckV4dGVuc2lvbnMgY3JpY2tldF9leHRlbnNpb25z
OwotICAgICAgY2hhbm5lbF9tYW5hZ2VyXy0+R2V0U3VwcG9ydGVkQXVkaW9TZW5kQ29kZWNzKCZj
cmlja2V0X2NvZGVjcyk7Ci0gICAgICBjaGFubmVsX21hbmFnZXJfLT5HZXRTdXBwb3J0ZWRBdWRp
b1J0cEhlYWRlckV4dGVuc2lvbnMoCi0gICAgICAgICAgJmNyaWNrZXRfZXh0ZW5zaW9ucyk7Ci0g
ICAgICByZXR1cm4gVG9SdHBDYXBhYmlsaXRpZXNXaXRoQXNzZXJ0cyhjcmlja2V0X2NvZGVjcywg
Y3JpY2tldF9leHRlbnNpb25zKTsKLSAgICB9Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBF
X1ZJREVPOiB7Ci0gICAgICBjcmlja2V0OjpWaWRlb0NvZGVjcyBjcmlja2V0X2NvZGVjczsKLSAg
ICAgIGNyaWNrZXQ6OlJ0cEhlYWRlckV4dGVuc2lvbnMgY3JpY2tldF9leHRlbnNpb25zOwotICAg
ICAgY2hhbm5lbF9tYW5hZ2VyXy0+R2V0U3VwcG9ydGVkVmlkZW9Db2RlY3MoJmNyaWNrZXRfY29k
ZWNzKTsKLSAgICAgIGNoYW5uZWxfbWFuYWdlcl8tPkdldFN1cHBvcnRlZFZpZGVvUnRwSGVhZGVy
RXh0ZW5zaW9ucygKLSAgICAgICAgICAmY3JpY2tldF9leHRlbnNpb25zKTsKLSAgICAgIHJldHVy
biBUb1J0cENhcGFiaWxpdGllc1dpdGhBc3NlcnRzKGNyaWNrZXRfY29kZWNzLCBjcmlja2V0X2V4
dGVuc2lvbnMpOwotICAgIH0KLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQToKLSAg
ICAgIHJldHVybiBSdHBDYXBhYmlsaXRpZXMoKTsKLSAgfQotICAvLyBOb3QgcmVhY2hlZDsgYXZv
aWRzIGNvbXBpbGUgd2FybmluZy4KLSAgRkFUQUwoKTsKLX0KLQotUlRDRXJyb3JPcjxzdGQ6OnVu
aXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVyZmFjZT4+Ci1PcnRjRmFjdG9yeTo6Q3JlYXRlUnRw
U2VuZGVyKAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNl
PiB0cmFjaywKLSAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgewotICBSVENf
RENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIGlmICghdHJhY2spIHsKLSAgICBM
T0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBudWxsIHRyYWNrIGludG8gQ3JlYXRl
UnRwU2VuZGVyLiIpOwotICB9Ci0gIGF1dG8gcmVzdWx0ID0KLSAgICAgIENyZWF0ZVJ0cFNlbmRl
cihjcmlja2V0OjpNZWRpYVR5cGVGcm9tU3RyaW5nKHRyYWNrLT5raW5kKCkpLCB0cmFuc3BvcnQp
OwotICBpZiAoIXJlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotICBhdXRv
IGVyciA9IHJlc3VsdC52YWx1ZSgpLT5TZXRUcmFjayh0cmFjayk7Ci0gIGlmICghZXJyLm9rKCkp
IHsKLSAgICByZXR1cm4gc3RkOjptb3ZlKGVycik7Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVyZmFjZT4+Ci1P
cnRjRmFjdG9yeTo6Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9y
dCkgewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIGlmIChraW5k
ID09IGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQSkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9S
KFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIkNhbm5vdCBjcmVhdGUgZGF0YSBSdHBTZW5kZXIuIik7Ci0gIH0KLSAgaWYgKCF0cmFuc3Bv
cnQpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFS
QU1FVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBudWxsIHRyYW5z
cG9ydCBpbnRvIENyZWF0ZVJ0cFNlbmRlci4iKTsKLSAgfQotICByZXR1cm4gdHJhbnNwb3J0LT5H
ZXRJbnRlcm5hbCgpCi0gICAgICAtPnJ0cF90cmFuc3BvcnRfY29udHJvbGxlcigpCi0gICAgICAt
PkNyZWF0ZVByb3hpZWRSdHBTZW5kZXIoa2luZCwgdHJhbnNwb3J0KTsKLX0KLQotUnRwQ2FwYWJp
bGl0aWVzIE9ydGNGYWN0b3J5OjpHZXRSdHBSZWNlaXZlckNhcGFiaWxpdGllcygKLSAgICBjcmlj
a2V0OjpNZWRpYVR5cGUga2luZCkgY29uc3QgewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxp
bmdfdGhyZWFkXyk7Ci0gIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgY3JpY2tldDo6TUVESUFf
VFlQRV9BVURJTzogewotICAgICAgY3JpY2tldDo6QXVkaW9Db2RlY3MgY3JpY2tldF9jb2RlY3M7
Ci0gICAgICBjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb25zIGNyaWNrZXRfZXh0ZW5zaW9uczsK
LSAgICAgIGNoYW5uZWxfbWFuYWdlcl8tPkdldFN1cHBvcnRlZEF1ZGlvUmVjZWl2ZUNvZGVjcygm
Y3JpY2tldF9jb2RlY3MpOwotICAgICAgY2hhbm5lbF9tYW5hZ2VyXy0+R2V0U3VwcG9ydGVkQXVk
aW9SdHBIZWFkZXJFeHRlbnNpb25zKAotICAgICAgICAgICZjcmlja2V0X2V4dGVuc2lvbnMpOwot
ICAgICAgcmV0dXJuIFRvUnRwQ2FwYWJpbGl0aWVzV2l0aEFzc2VydHMoY3JpY2tldF9jb2RlY3Ms
IGNyaWNrZXRfZXh0ZW5zaW9ucyk7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQ
RV9WSURFTzogewotICAgICAgY3JpY2tldDo6VmlkZW9Db2RlY3MgY3JpY2tldF9jb2RlY3M7Ci0g
ICAgICBjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb25zIGNyaWNrZXRfZXh0ZW5zaW9uczsKLSAg
ICAgIGNoYW5uZWxfbWFuYWdlcl8tPkdldFN1cHBvcnRlZFZpZGVvQ29kZWNzKCZjcmlja2V0X2Nv
ZGVjcyk7Ci0gICAgICBjaGFubmVsX21hbmFnZXJfLT5HZXRTdXBwb3J0ZWRWaWRlb1J0cEhlYWRl
ckV4dGVuc2lvbnMoCi0gICAgICAgICAgJmNyaWNrZXRfZXh0ZW5zaW9ucyk7Ci0gICAgICByZXR1
cm4gVG9SdHBDYXBhYmlsaXRpZXNXaXRoQXNzZXJ0cyhjcmlja2V0X2NvZGVjcywgY3JpY2tldF9l
eHRlbnNpb25zKTsKLSAgICB9Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEE6Ci0g
ICAgICByZXR1cm4gUnRwQ2FwYWJpbGl0aWVzKCk7Ci0gIH0KLSAgLy8gTm90IHJlYWNoZWQ7IGF2
b2lkcyBjb21waWxlIHdhcm5pbmcuCi0gIEZBVEFMKCk7Ci19Ci0KLVJUQ0Vycm9yT3I8c3RkOjp1
bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckludGVyZmFjZT4+Ci1PcnRjRmFjdG9yeTo6Q3JlYXRl
UnRwUmVjZWl2ZXIoY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQpIHsKLSAgUlRDX0RD
SEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBpZiAoa2luZCA9PSBjcmlja2V0OjpN
RURJQV9UWVBFX0RBVEEpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6
OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgY3Jl
YXRlIGRhdGEgUnRwUmVjZWl2ZXIuIik7Ci0gIH0KLSAgaWYgKCF0cmFuc3BvcnQpIHsKLSAgICBM
T0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBudWxsIHRyYW5zcG9ydCBpbnRvIENy
ZWF0ZVJ0cFJlY2VpdmVyLiIpOwotICB9Ci0gIHJldHVybiB0cmFuc3BvcnQtPkdldEludGVybmFs
KCkKLSAgICAgIC0+cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyKCkKLSAgICAgIC0+Q3JlYXRlUHJv
eGllZFJ0cFJlY2VpdmVyKGtpbmQsIHRyYW5zcG9ydCk7Ci19Ci0KLS8vIFVkcFRyYW5zcG9ydCBl
eHBlY3RzIGFsbCBtZXRob2RzIHRvIGJlIGNhbGxlZCBvbiBvbmUgdGhyZWFkLCB3aGljaCBuZWVk
cyB0bwotLy8gYmUgdGhlIG5ldHdvcmsgdGhyZWFkLCBzaW5jZSB0aGF0J3Mgd2hlcmUgaXRzIHNv
Y2tldCBjYW4gc2FmZWx5IGJlIHVzZWQuIFNvCi0vLyByZXR1cm4gYSBwcm94eSB0byB0aGUgY3Jl
YXRlZCBVZHBUcmFuc3BvcnQuCi1CRUdJTl9PV05FRF9QUk9YWV9NQVAoVWRwVHJhbnNwb3J0KQot
UFJPWFlfV09SS0VSX1RIUkVBRF9ERVNUUlVDVE9SKCkKLVBST1hZX1dPUktFUl9DT05TVE1FVEhP
RDAocnRjOjpTb2NrZXRBZGRyZXNzLCBHZXRMb2NhbEFkZHJlc3MpCi1QUk9YWV9XT1JLRVJfTUVU
SE9EMShib29sLCBTZXRSZW1vdGVBZGRyZXNzLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmKQot
UFJPWFlfV09SS0VSX0NPTlNUTUVUSE9EMChydGM6OlNvY2tldEFkZHJlc3MsIEdldFJlbW90ZUFk
ZHJlc3MpCi1wcm90ZWN0ZWQ6Ci1ydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiBHZXRJbnRl
cm5hbCgpIG92ZXJyaWRlIHsKLSAgcmV0dXJuIGludGVybmFsKCk7Ci19Ci1FTkRfUFJPWFlfTUFQ
KCkKLQotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8VWRwVHJhbnNwb3J0SW50ZXJmYWNlPj4K
LU9ydGNGYWN0b3J5OjpDcmVhdGVVZHBUcmFuc3BvcnQoaW50IGZhbWlseSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWluX3BvcnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQxNl90IG1heF9wb3J0KSB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09O
KG5ldHdvcmtfdGhyZWFkXyk7Ci0gIGlmIChmYW1pbHkgIT0gQUZfSU5FVCAmJiBmYW1pbHkgIT0g
QUZfSU5FVDYpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFM
SURfUEFSQU1FVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJBZGRyZXNzIGZhbWlseSBt
dXN0IGJlIEFGX0lORVQgb3IgQUZfSU5FVDYuIik7Ci0gIH0KLSAgaWYgKG1pbl9wb3J0ID4gbWF4
X3BvcnQpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURf
UkFOR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlBvcnQgcmFuZ2UgaW52YWxpZDsgbWlu
aW11bSBwb3J0IG11c3QgYmUgbGVzcyB0aGFuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAi
b3IgZXF1YWwgdG8gbWF4IHBvcnQuIik7Ci0gIH0KLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQ+IHNvY2tldCgKLSAgICAgIHNvY2tldF9mYWN0b3J5Xy0+Q3JlYXRlVWRw
U29ja2V0KAotICAgICAgICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyhydGM6OkdldEFueUlQKGZhbWls
eSksIDApLCBtaW5fcG9ydCwgbWF4X3BvcnQpKTsKLSAgaWYgKCFzb2NrZXQpIHsKLSAgICAvLyBP
bmx5IGxvZyBhdCB3YXJuaW5nIGxldmVsLCBiZWNhdXNlIHRoaXMgbWV0aG9kIG1heSBiZSBjYWxs
ZWQgd2l0aAotICAgIC8vIHNwZWNpZmljIHBvcnQgcmFuZ2VzIHRvIGRldGVybWluZSBpZiBhIHBv
cnQgaXMgYXZhaWxhYmxlLCBleHBlY3RpbmcgdGhlCi0gICAgLy8gcG9zc2liaWxpdHkgb2YgYW4g
ZXJyb3IuCi0gICAgTE9HX0FORF9SRVRVUk5fRVJST1JfRVgoUlRDRXJyb3JUeXBlOjpSRVNPVVJD
RV9FWEhBVVNURUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxvY2FsIHNvY2tldCBh
bGxvY2F0aW9uIGZhaWx1cmUuIiwgTFNfV0FSTklORyk7Ci0gIH0KLSAgUlRDX0xPRyhMU19JTkZP
KSA8PCAiQ3JlYXRlZCBVRFAgc29ja2V0IHdpdGggYWRkcmVzcyAiCi0gICAgICAgICAgICAgICAg
ICAgPDwgc29ja2V0LT5HZXRMb2NhbEFkZHJlc3MoKS5Ub1NlbnNpdGl2ZVN0cmluZygpIDw8ICIu
IjsKLSAgLy8gTWFrZSBhIHVuaXF1ZSBkZWJ1ZyBuYW1lIChmb3IgbG9nZ2luZy9kaWFnbm9zdGlj
cyBvbmx5KS4KLSAgcnRjOjpTdHJpbmdCdWlsZGVyIG9zczsKLSAgc3RhdGljIGludCB1ZHBfaWQg
PSAwOwotICBvc3MgPDwgInVkcCIgPDwgdWRwX2lkKys7Ci0gIHJldHVybiBVZHBUcmFuc3BvcnRQ
cm94eVdpdGhJbnRlcm5hbDxjcmlja2V0OjpVZHBUcmFuc3BvcnQ+OjpDcmVhdGUoCi0gICAgICBz
aWduYWxpbmdfdGhyZWFkXywgbmV0d29ya190aHJlYWRfLAotICAgICAgc3RkOjp1bmlxdWVfcHRy
PGNyaWNrZXQ6OlVkcFRyYW5zcG9ydD4oCi0gICAgICAgICAgbmV3IGNyaWNrZXQ6OlVkcFRyYW5z
cG9ydChvc3Muc3RyKCksIHN0ZDo6bW92ZShzb2NrZXQpKSkpOwotfQotCi1ydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9Tb3VyY2VJbnRlcmZhY2U+IE9ydGNGYWN0b3J5OjpDcmVhdGVBdWRpb1NvdXJj
ZSgKLSAgICBjb25zdCBjcmlja2V0OjpBdWRpb09wdGlvbnMmIG9wdGlvbnMpIHsKLSAgUlRDX0RD
SEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICByZXR1cm4gcnRjOjpzY29wZWRfcmVm
cHRyPExvY2FsQXVkaW9Tb3VyY2U+KAotICAgICAgTG9jYWxBdWRpb1NvdXJjZTo6Q3JlYXRlKCZv
cHRpb25zKSk7Ci19Ci0KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlb1RyYWNrSW50ZXJmYWNlPiBP
cnRjRmFjdG9yeTo6Q3JlYXRlVmlkZW9UcmFjaygKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgaWQs
Ci0gICAgVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZSogc291cmNlKSB7Ci0gIFJUQ19EQ0hFQ0tf
UlVOX09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvVHJh
Y2tJbnRlcmZhY2U+IHRyYWNrKAotICAgICAgVmlkZW9UcmFjazo6Q3JlYXRlKGlkLCBzb3VyY2Us
IHdvcmtlcl90aHJlYWRfLmdldCgpKSk7Ci0gIHJldHVybiBWaWRlb1RyYWNrUHJveHk6OkNyZWF0
ZShzaWduYWxpbmdfdGhyZWFkXywgd29ya2VyX3RocmVhZF8uZ2V0KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFjayk7Ci19Ci0KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b1RyYWNrSW50ZXJmYWNlPiBPcnRjRmFjdG9yeTo6Q3JlYXRlQXVkaW9UcmFjaygKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyYgaWQsCi0gICAgQXVkaW9Tb3VyY2VJbnRlcmZhY2UqIHNvdXJjZSkgewot
ICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb1RyYWNrSW50ZXJmYWNlPiB0cmFjayhBdWRpb1RyYWNrOjpDcmVhdGUoaWQsIHNv
dXJjZSkpOwotICByZXR1cm4gQXVkaW9UcmFja1Byb3h5OjpDcmVhdGUoc2lnbmFsaW5nX3RocmVh
ZF8sIHRyYWNrKTsKLX0KLQotLy8gc3RhdGljCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxP
cnRjRmFjdG9yeUludGVyZmFjZT4+IE9ydGNGYWN0b3J5OjpDcmVhdGVfcygKLSAgICBydGM6OlRo
cmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQs
Ci0gICAgcnRjOjpOZXR3b3JrTWFuYWdlciogbmV0d29ya19tYW5hZ2VyLAotICAgIHJ0Yzo6UGFj
a2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnksCi0gICAgQXVkaW9EZXZpY2VNb2R1bGUq
IGFkbSwKLSAgICBjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZSogbWVkaWFfZW5naW5lLAot
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVy
X2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1
ZGlvX2RlY29kZXJfZmFjdG9yeSkgewotICAvLyBBZGQgdGhlIHVuaXF1ZV9wdHIgd3JhcHBlciBi
YWNrLgotICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IG93
bmVkX21lZGlhX2VuZ2luZSgKLSAgICAgIG1lZGlhX2VuZ2luZSk7Ci0gIHN0ZDo6dW5pcXVlX3B0
cjxPcnRjRmFjdG9yeT4gbmV3X2ZhY3RvcnkobmV3IE9ydGNGYWN0b3J5KAotICAgICAgbmV0d29y
a190aHJlYWQsIHNpZ25hbGluZ190aHJlYWQsIG5ldHdvcmtfbWFuYWdlciwgc29ja2V0X2ZhY3Rv
cnksIGFkbSwKLSAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5KSk7Ci0gIFJUQ0Vycm9yIGVyciA9IG5ld19mYWN0b3J5LT5Jbml0aWFsaXplKHN0ZDo6bW92
ZShvd25lZF9tZWRpYV9lbmdpbmUpKTsKLSAgaWYgKCFlcnIub2soKSkgewotICAgIHJldHVybiBz
dGQ6Om1vdmUoZXJyKTsKLSAgfQotICAvLyBSZXR1cm4gYSBwcm94eSBzbyB0aGF0IGFueSBjYWxs
cyBvbiB0aGUgcmV0dXJuZWQgb2JqZWN0IChpbmNsdWRpbmcKLSAgLy8gZGVzdHJ1Y3RvcikgaGFw
cGVuIG9uIHRoZSBzaWduYWxpbmcgdGhyZWFkLgotICBydGM6OlRocmVhZCogc2lnbmFsaW5nID0g
bmV3X2ZhY3RvcnktPnNpZ25hbGluZ190aHJlYWQoKTsKLSAgcnRjOjpUaHJlYWQqIG5ldHdvcmsg
PSBuZXdfZmFjdG9yeS0+bmV0d29ya190aHJlYWQoKTsKLSAgcmV0dXJuIE9ydGNGYWN0b3J5UHJv
eHk6OkNyZWF0ZShzaWduYWxpbmcsIG5ldHdvcmssIHN0ZDo6bW92ZShuZXdfZmFjdG9yeSkpOwot
fQotCi1SVENFcnJvciBPcnRjRmFjdG9yeTo6SW5pdGlhbGl6ZSgKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2VuZ2luZSkgewotICBSVENf
RENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIC8vIFRPRE8oZGVhZGJlZWYpOiBH
ZXQgcmlkIG9mIHJlcXVpcmVtZW50IHRvIGhvcCB0byB3b3JrZXIgdGhyZWFkIGhlcmUuCi0gIGlm
ICghbWVkaWFfZW5naW5lKSB7Ci0gICAgbWVkaWFfZW5naW5lID0KLSAgICAgICAgd29ya2VyX3Ro
cmVhZF8tPkludm9rZTxzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZh
Y2U+PigKLSAgICAgICAgICAgIFJUQ19GUk9NX0hFUkUsIHJ0Yzo6QmluZCgmT3J0Y0ZhY3Rvcnk6
OkNyZWF0ZU1lZGlhRW5naW5lX3csIHRoaXMpKTsKLSAgfQotCi0gIGNoYW5uZWxfbWFuYWdlcl8u
cmVzZXQobmV3IGNyaWNrZXQ6OkNoYW5uZWxNYW5hZ2VyKAotICAgICAgc3RkOjptb3ZlKG1lZGlh
X2VuZ2luZSksIGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OlJ0cERhdGFFbmdpbmU+KCksCi0g
ICAgICB3b3JrZXJfdGhyZWFkXy5nZXQoKSwgbmV0d29ya190aHJlYWRfKSk7Ci0gIGNoYW5uZWxf
bWFuYWdlcl8tPlNldFZpZGVvUnR4RW5hYmxlZCh0cnVlKTsKLSAgaWYgKCFjaGFubmVsX21hbmFn
ZXJfLT5Jbml0KCkpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklO
VEVSTkFMX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gaW5pdGlh
bGl6ZSBDaGFubmVsTWFuYWdlci4iKTsKLSAgfQotICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7Ci19
Ci0KLXN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4KLU9ydGNG
YWN0b3J5OjpDcmVhdGVNZWRpYUVuZ2luZV93KCkgewotICBSVENfRENIRUNLX1JVTl9PTih3b3Jr
ZXJfdGhyZWFkXy5nZXQoKSk7Ci0gIC8vIFRoZSBudWxsIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwg
ZmFjdG9yaWVzIHRoYXQgY291bGQgYmUgcGFzc2VkIGludG8gdGhlCi0gIC8vIE9ydGNGYWN0b3J5
LCBidXQgYXJlbid0IHlldC4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0IHxhZG1ffCBtYXkgYmUgbnVs
bCwgaW4gd2hpY2ggY2FzZSB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgZGVmYXVsdAotICAvLyBBdWRp
b0RldmljZU1vZHVsZSB3aWxsIGJlIHVzZWQuCi0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Y3Jp
Y2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+KAotICAgICAgY3JpY2tldDo6V2ViUnRjTWVkaWFF
bmdpbmVGYWN0b3J5OjpDcmVhdGUoCi0gICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9EZXZpY2VNb2R1bGU+KGFkbV8pLAotICAgICAgICAgIGF1ZGlvX2VuY29kZXJfZmFj
dG9yeV8sIGF1ZGlvX2RlY29kZXJfZmFjdG9yeV8sCi0gICAgICAgICAgd2VicnRjOjpDcmVhdGVC
dWlsdGluVmlkZW9FbmNvZGVyRmFjdG9yeSgpLAotICAgICAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVp
bHRpblZpZGVvRGVjb2RlckZhY3RvcnkoKSwgbnVsbHB0ciwKLSAgICAgICAgICB3ZWJydGM6OkF1
ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKSkpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9vcnRjL29ydGNmYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9vcnRjL29ydGNmYWN0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ3MmY2MTIxZGJiZDkyYTM4ZTY5YWY1Y2E3MDNjODFhNDM1ODIzMmUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTU2ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgT1JUQ19PUlRDRkFD
VE9SWV9IXwotI2RlZmluZSBPUlRDX09SVENGQUNUT1JZX0hfCi0KLSNpbmNsdWRlIDxtZW1vcnk+
Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVkZSAiYXBpL29ydGMvb3J0Y2ZhY3RvcnlpbnRl
cmZhY2UuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhZW5naW5lLmgiCi0jaW5jbHVkZSAi
bWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lLmgiCi0jaW5jbHVkZSAicGMvY2hhbm5lbG1h
bmFnZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8v
IEltcGxlbWVudGF0aW9uIG9mIE9ydGNGYWN0b3J5SW50ZXJmYWNlLgotLy8KLS8vIFNlZSBvcnRj
ZmFjdG9yeWludGVyZmFjZS5oIGZvciBkb2N1bWVudGF0aW9uLgotY2xhc3MgT3J0Y0ZhY3Rvcnkg
OiBwdWJsaWMgT3J0Y0ZhY3RvcnlJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgfk9ydGNGYWN0b3J5
KCkgb3ZlcnJpZGU7Ci0KLSAgLy8gSW50ZXJuYWwtb25seSBDcmVhdGUgbWV0aG9kIHRoYXQgYWxs
b3dzIHBhc3NpbmcgaW4gYSBmYWtlIG1lZGlhIGVuZ2luZSwKLSAgLy8gZm9yIHRlc3RpbmcuCi0g
IHN0YXRpYyBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4+
IENyZWF0ZSgKLSAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICAgIHJ0Yzo6
VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgICAgcnRjOjpOZXR3b3JrTWFuYWdlciogbmV0
d29ya19tYW5hZ2VyLAotICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFj
dG9yeSwKLSAgICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG0sCi0gICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2VuZ2luZSwKLSAgICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3Rv
cnksCi0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5KTsKLQotICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFu
c3BvcnRDb250cm9sbGVySW50ZXJmYWNlPj4KLSAgQ3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxl
cigpIG92ZXJyaWRlOwotCi0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9y
dEludGVyZmFjZT4+IENyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9y
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2Uq
IHJ0cCwKLSAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICAgIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UqIHRyYW5zcG9ydF9jb250cm9sbGVyKSBvdmVycmlk
ZTsKLQotICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNl
Pj4gQ3JlYXRlU3J0cFRyYW5zcG9ydCgKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwKLSAg
ICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICAgIFJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJJbnRlcmZhY2UqIHRyYW5zcG9ydF9jb250cm9sbGVyKSBvdmVycmlkZTsKLQotICBS
dHBDYXBhYmlsaXRpZXMgR2V0UnRwU2VuZGVyQ2FwYWJpbGl0aWVzKAotICAgICAgY3JpY2tldDo6
TWVkaWFUeXBlIGtpbmQpIGNvbnN0IG92ZXJyaWRlOwotCi0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlx
dWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PiBDcmVhdGVSdHBTZW5kZXIoCi0gICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4gdHJhY2ssCi0gICAg
ICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgb3ZlcnJpZGU7Ci0KLSAgUlRDRXJy
b3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVyZmFjZT4+IENyZWF0ZVJ0cFNl
bmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAgICAgUnRwVHJhbnNwb3J0
SW50ZXJmYWNlKiB0cmFuc3BvcnQpIG92ZXJyaWRlOwotCi0gIFJ0cENhcGFiaWxpdGllcyBHZXRS
dHBSZWNlaXZlckNhcGFiaWxpdGllcygKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kKSBj
b25zdCBvdmVycmlkZTsKLQotICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwUmVj
ZWl2ZXJJbnRlcmZhY2U+PiBDcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1lZGlh
VHlwZSBraW5kLAotICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQpIG92ZXJy
aWRlOwotCi0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFVkcFRyYW5zcG9ydEludGVyZmFj
ZT4+Ci0gIENyZWF0ZVVkcFRyYW5zcG9ydChpbnQgZmFtaWx5LCB1aW50MTZfdCBtaW5fcG9ydCwg
dWludDE2X3QgbWF4X3BvcnQpIG92ZXJyaWRlOwotCi0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b1NvdXJjZUludGVyZmFjZT4gQ3JlYXRlQXVkaW9Tb3VyY2UoCi0gICAgICBjb25zdCBjcmlja2V0
OjpBdWRpb09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlOwotCi0gIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxWaWRlb1RyYWNrSW50ZXJmYWNlPiBDcmVhdGVWaWRlb1RyYWNrKAotICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGlkLAotICAgICAgVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZSogc291cmNlKSBv
dmVycmlkZTsKLQotICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9UcmFja0ludGVyZmFjZT4gQ3Jl
YXRlQXVkaW9UcmFjaygKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwKLSAgICAgIEF1ZGlv
U291cmNlSW50ZXJmYWNlKiBzb3VyY2UpIG92ZXJyaWRlOwotCi0gIHJ0Yzo6VGhyZWFkKiBuZXR3
b3JrX3RocmVhZCgpIHsgcmV0dXJuIG5ldHdvcmtfdGhyZWFkXzsgfQotICBydGM6OlRocmVhZCog
d29ya2VyX3RocmVhZCgpIHsgcmV0dXJuIHdvcmtlcl90aHJlYWRfLmdldCgpOyB9Ci0gIHJ0Yzo6
VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkKCkgeyByZXR1cm4gc2lnbmFsaW5nX3RocmVhZF87IH0K
LQotIHByaXZhdGU6Ci0gIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSBPcnRjRmFjdG9yeUlu
dGVyZmFjZTo6Q3JlYXRlLgotICBPcnRjRmFjdG9yeShydGM6OlRocmVhZCogbmV0d29ya190aHJl
YWQsCi0gICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgICAg
ICAgICAgICBydGM6Ok5ldHdvcmtNYW5hZ2VyKiBuZXR3b3JrX21hbmFnZXIsCi0gICAgICAgICAg
ICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnksCi0gICAgICAgICAg
ICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG0sCi0gICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICAg
ICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnkpOwotCi0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJJbnRlcmZhY2U+PgotICBDcmVhdGVSdHBUcmFuc3BvcnRDb250cm9sbGVyKGNv
bnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwotCi0gIC8vIFRocmVhZDo6
SW52b2tlIGRvZXNuJ3Qgc3VwcG9ydCBtb3ZlLW9ubHkgYXJndW1lbnRzLCBzbyB3ZSBuZWVkIHRv
IHJlbW92ZQotICAvLyB0aGUgdW5pcXVlX3B0ciB3cmFwcGVyIGZyb20gbWVkaWFfZW5naW5lLiBU
T0RPKGRlYWRiZWVmKTogRml4IHRoaXMuCi0gIHN0YXRpYyBSVENFcnJvck9yPHN0ZDo6dW5pcXVl
X3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4+IENyZWF0ZV9zKAotICAgICAgcnRjOjpUaHJlYWQq
IG5ldHdvcmtfdGhyZWFkLAotICAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0g
ICAgICBydGM6Ok5ldHdvcmtNYW5hZ2VyKiBuZXR3b3JrX21hbmFnZXIsCi0gICAgICBydGM6OlBh
Y2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAotICAgICAgQXVkaW9EZXZpY2VNb2R1
bGUqIGFkbSwKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlKiBtZWRpYV9lbmdp
bmUsCi0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5LAotICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZh
Y3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSk7Ci0KLSAgLy8gUGVyZm9ybXMgaW5pdGlhbGl6
YXRpb24gdGhhdCBjYW4gZmFpbC4gQ2FsbGVkIGJ5IGZhY3RvcnkgbWV0aG9kIGFmdGVyCi0gIC8v
IGNvbnN0cnVjdGlvbiwgYW5kIGlmIGl0IGZhaWxzLCBubyBvYmplY3QgaXMgcmV0dXJuZWQuCi0g
IFJUQ0Vycm9yIEluaXRpYWxpemUoCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVk
aWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2VuZ2luZSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxjcmlj
a2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gQ3JlYXRlTWVkaWFFbmdpbmVfdygpOwotCi0gIC8v
IFRocmVhZHMgYW5kIG5ldHdvcmtpbmcgb2JqZWN0cy4KLSAgcnRjOjpUaHJlYWQqIG5ldHdvcmtf
dGhyZWFkXzsKLSAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWRfOwotICBydGM6Ok5ldHdv
cmtNYW5hZ2VyKiBuZXR3b3JrX21hbmFnZXJfOwotICBydGM6OlBhY2tldFNvY2tldEZhY3Rvcnkq
IHNvY2tldF9mYWN0b3J5XzsKLSAgQXVkaW9EZXZpY2VNb2R1bGUqIGFkbV87Ci0gIC8vIElmIHdl
IGNyZWF0ZWQvb3duIHRoZSBvYmplY3RzIGFib3ZlLCB0aGVzZSB3aWxsIGJlIG5vbi1udWxsIGFu
ZCB0aHVzIHdpbGwKLSAgLy8gYmUgcmVsZWFzZWQgYXV0b21hdGljYWxseSB1cG9uIGRlc3RydWN0
aW9uLgotICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IG93bmVkX25ldHdvcmtfdGhyZWFk
XzsKLSAgYm9vbCB3cmFwc19zaWduYWxpbmdfdGhyZWFkXyA9IGZhbHNlOwotICBzdGQ6OnVuaXF1
ZV9wdHI8cnRjOjpOZXR3b3JrTWFuYWdlcj4gb3duZWRfbmV0d29ya19tYW5hZ2VyXzsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeT4gb3duZWRfc29ja2V0X2ZhY3Rv
cnlfOwotICAvLyBXZSBhbHdheXMgb3duIHRoZSB3b3JrZXIgdGhyZWFkLgotICBzdGQ6OnVuaXF1
ZV9wdHI8cnRjOjpUaHJlYWQ+IHdvcmtlcl90aHJlYWRfOwotICAvLyBNZWRpYS1yZWxlYXRlZCBv
YmplY3RzLgotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2c+IG51bGxfZXZlbnRfbG9nXzsK
LSAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJf
ZmFjdG9yeV87Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRp
b19kZWNvZGVyX2ZhY3RvcnlfOwotICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6Q2hhbm5lbE1h
bmFnZXI+IGNoYW5uZWxfbWFuYWdlcl87Ci0gIC8vIERlZmF1bHQgQ05BTUUgdG8gdXNlIGZvciBS
dHBUcmFuc3BvcnRzIGlmIG5vbmUgaXMgcGFzc2VkIGluLgotICBzdGQ6OnN0cmluZyBkZWZhdWx0
X2NuYW1lXzsKLQotICBmcmllbmQgY2xhc3MgT3J0Y0ZhY3RvcnlJbnRlcmZhY2U7Ci0KLSAgUlRD
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihPcnRjRmFjdG9yeSk7Ci19OwotCi19ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gT1JUQ19PUlRDRkFDVE9SWV9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFj
dG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9vcnRjL29ydGNmYWN0b3J5X2ludGVncmF0aW9udGVzdC5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjJmMjk1MjBlZDhkNzY4ODhhNzE4OTBhNzcxNTk2N2ExOTEx
OGYxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNmYWN0b3J5X2lu
dGVncmF0aW9udGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDcyNCArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBG
b3Igc3RkOjpwYWlyLCBzdGQ6Om1vdmUuCi0KLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1
aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVj
cy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImFwaS9vcnRjL29y
dGNmYWN0b3J5aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAib3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5o
IgotI2luY2x1ZGUgInAycC9iYXNlL3VkcHRyYW5zcG9ydC5oIgotI2luY2x1ZGUgInBjL3Rlc3Qv
ZmFrZWF1ZGlvY2FwdHVyZW1vZHVsZS5oIgotI2luY2x1ZGUgInBjL3Rlc3QvZmFrZXBlcmlvZGlj
dmlkZW90cmFja3NvdXJjZS5oIgotI2luY2x1ZGUgInBjL3Rlc3QvZmFrZXZpZGVvdHJhY2tyZW5k
ZXJlci5oIgotI2luY2x1ZGUgInBjL3ZpZGVvdHJhY2tzb3VyY2UuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9mYWtlbmV0d29yay5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVt
L2FyY2guaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmgiCi0KLW5hbWVzcGFjZSB7Ci0KLWNvbnN0IGludCBr
RGVmYXVsdFRpbWVvdXQgPSAxMDAwMDsgICAgLy8gMTAgc2Vjb25kcy4KLWNvbnN0IGludCBrUmVj
ZWl2aW5nRHVyYXRpb24gPSAxMDAwOyAgLy8gMSBzZWNvbmQuCi0KLS8vIERlZmF1bHQgbnVtYmVy
IG9mIGF1ZGlvL3ZpZGVvIGZyYW1lcyB0byB3YWl0IGZvciBiZWZvcmUgY29uc2lkZXJpbmcgYSB0
ZXN0IGEKLS8vIHN1Y2Nlc3MuCi1jb25zdCBpbnQga0RlZmF1bHROdW1GcmFtZXMgPSAzOwotY29u
c3QgcnRjOjpJUEFkZHJlc3Mga0lQdjRMb2NhbEhvc3RBZGRyZXNzID0KLSAgICBydGM6OklQQWRk
cmVzcygweDdGMDAwMDAxKTsgIC8vIDEyNy4wLjAuMQotCi1zdGF0aWMgY29uc3QgY2hhciBrVGVz
dEtleVBhcmFtczFbXSA9Ci0gICAgImlubGluZTpXVk5mWDE5elpXMWpkR3dnS3NrZ2V3a3lNakE3
ZlFwOUNuVnViR1Z6IjsKLXN0YXRpYyBjb25zdCBjaGFyIGtUZXN0S2V5UGFyYW1zMltdID0KLSAg
ICAiaW5saW5lOlBTMXVRQ1ZlZUNGQ2FuVm1jamtwYXl3ak5XaGNZRDBtWFh0eGFWQlIiOwotc3Rh
dGljIGNvbnN0IGNoYXIga1Rlc3RLZXlQYXJhbXMzW10gPQotICAgICJpbmxpbmU6V1ZOZlgxOXpa
VzFqZEd3Z0tza2dld2t5TWpBN2ZRcDlDblZ1YkdWYSI7Ci1zdGF0aWMgY29uc3QgY2hhciBrVGVz
dEtleVBhcmFtczRbXSA9Ci0gICAgImlubGluZTpXVk5mWDE5elpXMWpkR3dnS3NrZ2V3a3lNakE3
ZlFwOUNuVnViR1ZiIjsKLXN0YXRpYyBjb25zdCBjcmlja2V0OjpDcnlwdG9QYXJhbXMga1Rlc3RD
cnlwdG9QYXJhbXMxKDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1Rlc3RLZXlQYXJhbXMxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIp
Owotc3RhdGljIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1BhcmFtcyBrVGVzdENyeXB0b1BhcmFtczIo
MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJBRVNfQ01fMTI4X0hNQUNfU0hBMV84MCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrVGVzdEtleVBhcmFtczIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIik7Ci1zdGF0aWMgY29u
c3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1zIGtUZXN0Q3J5cHRvUGFyYW1zMygxLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFFU19DTV8xMjhf
SE1BQ19TSEExXzgwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtUZXN0S2V5UGFyYW1zMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiKTsKLXN0YXRpYyBjb25zdCBjcmlja2V0OjpD
cnlwdG9QYXJhbXMga1Rlc3RDcnlwdG9QYXJhbXM0KDEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a1Rlc3RLZXlQYXJhbXM0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiIpOwotfSAgLy8gbmFtZXNwYWNlCi0KLW5hbWVzcGFjZSB3ZWJydGMg
ewotCi0vLyBVc2VkIHRvIHRlc3QgdGhhdCB0aGluZ3Mgd29yayBlbmQtdG8tZW5kIHdoZW4gdXNp
bmcgdGhlIGRlZmF1bHQKLS8vIGltcGxlbWVudGF0aW9ucyBvZiB0aHJlYWRzL2V0Yy4gcHJvdmlk
ZWQgYnkgT3J0Y0ZhY3RvcnksIHdpdGggdGhlIGV4Y2VwdGlvbgotLy8gb2YgdXNpbmcgYSB2aXJ0
dWFsIG5ldHdvcmsuCi0vLwotLy8gQnkgZGVmYXVsdCwgdGhlIHZpcnR1YWwgbmV0d29yayBtYW5h
Z2VyIGRvZXNuJ3QgZW51bWVyYXRlIGFueSBuZXR3b3JrcywgYnV0Ci0vLyBzb2NrZXRzIGNhbiBz
dGlsbCBiZSBjcmVhdGVkIGluIHRoaXMgc3RhdGUuCi1jbGFzcyBPcnRjRmFjdG9yeUludGVncmF0
aW9uVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6Ci0gIE9ydGNGYWN0b3J5
SW50ZWdyYXRpb25UZXN0KCkKLSAgICAgIDogbmV0d29ya190aHJlYWRfKCZ2aXJ0dWFsX3NvY2tl
dF9zZXJ2ZXJfKSwKLSAgICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTFfKEZha2VBdWRp
b0NhcHR1cmVNb2R1bGU6OkNyZWF0ZSgpKSwKLSAgICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21v
ZHVsZTJfKEZha2VBdWRpb0NhcHR1cmVNb2R1bGU6OkNyZWF0ZSgpKSB7Ci0gICAgLy8gU29ja2V0
cyBhcmUgYm91bmQgdG8gdGhlIEFOWSBhZGRyZXNzLCBzbyB0aGlzIGlzIG5lZWRlZCB0byB0ZWxs
IHRoZQotICAgIC8vIHZpcnR1YWwgbmV0d29yayB3aGljaCBhZGRyZXNzIHRvIHVzZSBpbiB0aGlz
IGNhc2UuCi0gICAgdmlydHVhbF9zb2NrZXRfc2VydmVyXy5TZXREZWZhdWx0Um91dGUoa0lQdjRM
b2NhbEhvc3RBZGRyZXNzKTsKLSAgICBuZXR3b3JrX3RocmVhZF8uU2V0TmFtZSgiVGVzdE5ldHdv
cmtUaHJlYWQiLCB0aGlzKTsKLSAgICBuZXR3b3JrX3RocmVhZF8uU3RhcnQoKTsKLSAgICAvLyBO
ZWVkIHRvIGNyZWF0ZSBhZnRlciBuZXR3b3JrIHRocmVhZCBpcyBzdGFydGVkLgotICAgIG9ydGNf
ZmFjdG9yeTFfID0KLSAgICAgICAgT3J0Y0ZhY3RvcnlJbnRlcmZhY2U6OkNyZWF0ZSgKLSAgICAg
ICAgICAgICZuZXR3b3JrX3RocmVhZF8sIG51bGxwdHIsICZmYWtlX25ldHdvcmtfbWFuYWdlcl8s
IG51bGxwdHIsCi0gICAgICAgICAgICBmYWtlX2F1ZGlvX2NhcHR1cmVfbW9kdWxlMV8sIENyZWF0
ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCi0gICAgICAgICAgICBDcmVhdGVCdWlsdGlu
QXVkaW9EZWNvZGVyRmFjdG9yeSgpKQotICAgICAgICAgICAgLk1vdmVWYWx1ZSgpOwotICAgIG9y
dGNfZmFjdG9yeTJfID0KLSAgICAgICAgT3J0Y0ZhY3RvcnlJbnRlcmZhY2U6OkNyZWF0ZSgKLSAg
ICAgICAgICAgICZuZXR3b3JrX3RocmVhZF8sIG51bGxwdHIsICZmYWtlX25ldHdvcmtfbWFuYWdl
cl8sIG51bGxwdHIsCi0gICAgICAgICAgICBmYWtlX2F1ZGlvX2NhcHR1cmVfbW9kdWxlMl8sIENy
ZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCi0gICAgICAgICAgICBDcmVhdGVCdWls
dGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpKQotICAgICAgICAgICAgLk1vdmVWYWx1ZSgpOwotICB9
Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHR5cGVkZWYgc3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxVZHBU
cmFuc3BvcnRJbnRlcmZhY2U+LAotICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VWRwVHJhbnNwb3J0SW50ZXJmYWNlPj4KLSAgICAgIFVkcFRyYW5zcG9ydFBhaXI7Ci0gIHR5cGVk
ZWYgc3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+LAotICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4K
LSAgICAgIFJ0cFRyYW5zcG9ydFBhaXI7Ci0gIHR5cGVkZWYgc3RkOjpwYWlyPHN0ZDo6dW5pcXVl
X3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNlPiwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+PgotICAgICAgU3J0cFRyYW5zcG9ydFBh
aXI7Ci0gIHR5cGVkZWYgc3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250
cm9sbGVySW50ZXJmYWNlPiwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+PgotICAgICAgUnRwVHJhbnNwb3J0Q29udHJv
bGxlclBhaXI7Ci0KLSAgLy8gSGVscGVyIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBvbmUgVURQIHRy
YW5zcG9ydCBlYWNoIGZvciB8b3J0Y19mYWN0b3J5MV98Ci0gIC8vIGFuZCB8b3J0Y19mYWN0b3J5
Ml98LCBhbmQgY29ubmVjdHMgdGhlbS4KLSAgVWRwVHJhbnNwb3J0UGFpciBDcmVhdGVBbmRDb25u
ZWN0VWRwVHJhbnNwb3J0UGFpcigpIHsKLSAgICBhdXRvIHRyYW5zcG9ydDEgPSBvcnRjX2ZhY3Rv
cnkxXy0+Q3JlYXRlVWRwVHJhbnNwb3J0KEFGX0lORVQpLk1vdmVWYWx1ZSgpOwotICAgIGF1dG8g
dHJhbnNwb3J0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVVZHBUcmFuc3BvcnQoQUZfSU5FVCku
TW92ZVZhbHVlKCk7Ci0gICAgdHJhbnNwb3J0MS0+U2V0UmVtb3RlQWRkcmVzcygKLSAgICAgICAg
cnRjOjpTb2NrZXRBZGRyZXNzKHZpcnR1YWxfc29ja2V0X3NlcnZlcl8uR2V0RGVmYXVsdFJvdXRl
KEFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0Mi0+R2V0TG9j
YWxBZGRyZXNzKCkucG9ydCgpKSk7Ci0gICAgdHJhbnNwb3J0Mi0+U2V0UmVtb3RlQWRkcmVzcygK
LSAgICAgICAgcnRjOjpTb2NrZXRBZGRyZXNzKHZpcnR1YWxfc29ja2V0X3NlcnZlcl8uR2V0RGVm
YXVsdFJvdXRlKEFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0
MS0+R2V0TG9jYWxBZGRyZXNzKCkucG9ydCgpKSk7Ci0gICAgcmV0dXJuIHtzdGQ6Om1vdmUodHJh
bnNwb3J0MSksIHN0ZDo6bW92ZSh0cmFuc3BvcnQyKX07Ci0gIH0KLQotICAvLyBDcmVhdGVzIG9u
ZSB0cmFuc3BvcnQgY29udHJvbGxlciBlYWNoIGZvciB8b3J0Y19mYWN0b3J5MV98IGFuZAotICAv
LyB8b3J0Y19mYWN0b3J5Ml98LgotICBSdHBUcmFuc3BvcnRDb250cm9sbGVyUGFpciBDcmVhdGVS
dHBUcmFuc3BvcnRDb250cm9sbGVyUGFpcigpIHsKLSAgICByZXR1cm4ge29ydGNfZmFjdG9yeTFf
LT5DcmVhdGVSdHBUcmFuc3BvcnRDb250cm9sbGVyKCkuTW92ZVZhbHVlKCksCi0gICAgICAgICAg
ICBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcigpLk1vdmVWYWx1
ZSgpfTsKLSAgfQotCi0gIC8vIEhlbHBlciBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYSBwYWlyIG9m
IFJ0cFRyYW5zcG9ydHMgYmV0d2VlbgotICAvLyB8b3J0Y19mYWN0b3J5MV98IGFuZCB8b3J0Y19m
YWN0b3J5Ml98LiBFeHBlY3RlZCB0byBiZSBjYWxsZWQgd2l0aCB0aGUKLSAgLy8gcmVzdWx0IG9m
IENyZWF0ZUFuZENvbm5lY3RVZHBUcmFuc3BvcnRQYWlyLiB8cnRjcF91ZHBfdHJhbnNwb3J0c3wg
Y2FuIGJlCi0gIC8vIGVtcHR5IGlmIFJUQ1AgbXV4aW5nIGlzIHVzZWQuIHx0cmFuc3BvcnRfY29u
dHJvbGxlcnN8IGNhbiBiZSBlbXB0eSBpZgotICAvLyB0aGVzZSB0cmFuc3BvcnRzIGFyZSBiZWlu
ZyBjcmVhdGVkIHVzaW5nIGEgZGVmYXVsdCB0cmFuc3BvcnQgY29udHJvbGxlci4KLSAgUnRwVHJh
bnNwb3J0UGFpciBDcmVhdGVSdHBUcmFuc3BvcnRQYWlyKAotICAgICAgY29uc3QgUnRwVHJhbnNw
b3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywKLSAgICAgIGNvbnN0IFVkcFRyYW5zcG9ydFBhaXIm
IHJ0cF91ZHBfdHJhbnNwb3J0cywKLSAgICAgIGNvbnN0IFVkcFRyYW5zcG9ydFBhaXImIHJ0Y3Bf
dWRwX3RyYW5zcG9ydHMsCi0gICAgICBjb25zdCBSdHBUcmFuc3BvcnRDb250cm9sbGVyUGFpciYg
dHJhbnNwb3J0X2NvbnRyb2xsZXJzKSB7Ci0gICAgYXV0byB0cmFuc3BvcnRfcmVzdWx0MSA9IG9y
dGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICAgIHBhcmFtZXRlcnMsIHJ0
cF91ZHBfdHJhbnNwb3J0cy5maXJzdC5nZXQoKSwKLSAgICAgICAgcnRjcF91ZHBfdHJhbnNwb3J0
cy5maXJzdC5nZXQoKSwgdHJhbnNwb3J0X2NvbnRyb2xsZXJzLmZpcnN0LmdldCgpKTsKLSAgICBh
dXRvIHRyYW5zcG9ydF9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0cFRyYW5zcG9y
dCgKLSAgICAgICAgcGFyYW1ldGVycywgcnRwX3VkcF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSwK
LSAgICAgICAgcnRjcF91ZHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCksIHRyYW5zcG9ydF9jb250
cm9sbGVycy5zZWNvbmQuZ2V0KCkpOwotICAgIHJldHVybiB7dHJhbnNwb3J0X3Jlc3VsdDEuTW92
ZVZhbHVlKCksIHRyYW5zcG9ydF9yZXN1bHQyLk1vdmVWYWx1ZSgpfTsKLSAgfQotCi0gIFNydHBU
cmFuc3BvcnRQYWlyIENyZWF0ZVNydHBUcmFuc3BvcnRQYWlyKAotICAgICAgY29uc3QgUnRwVHJh
bnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywKLSAgICAgIGNvbnN0IFVkcFRyYW5zcG9ydFBh
aXImIHJ0cF91ZHBfdHJhbnNwb3J0cywKLSAgICAgIGNvbnN0IFVkcFRyYW5zcG9ydFBhaXImIHJ0
Y3BfdWRwX3RyYW5zcG9ydHMsCi0gICAgICBjb25zdCBSdHBUcmFuc3BvcnRDb250cm9sbGVyUGFp
ciYgdHJhbnNwb3J0X2NvbnRyb2xsZXJzKSB7Ci0gICAgYXV0byB0cmFuc3BvcnRfcmVzdWx0MSA9
IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVTcnRwVHJhbnNwb3J0KAotICAgICAgICBwYXJhbWV0ZXJz
LCBydHBfdWRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCksCi0gICAgICAgIHJ0Y3BfdWRwX3RyYW5z
cG9ydHMuZmlyc3QuZ2V0KCksIHRyYW5zcG9ydF9jb250cm9sbGVycy5maXJzdC5nZXQoKSk7Ci0g
ICAgYXV0byB0cmFuc3BvcnRfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVTcnRwVHJh
bnNwb3J0KAotICAgICAgICBwYXJhbWV0ZXJzLCBydHBfdWRwX3RyYW5zcG9ydHMuc2Vjb25kLmdl
dCgpLAotICAgICAgICBydGNwX3VkcF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSwgdHJhbnNwb3J0
X2NvbnRyb2xsZXJzLnNlY29uZC5nZXQoKSk7Ci0gICAgcmV0dXJuIHt0cmFuc3BvcnRfcmVzdWx0
MS5Nb3ZlVmFsdWUoKSwgdHJhbnNwb3J0X3Jlc3VsdDIuTW92ZVZhbHVlKCl9OwotICB9Ci0KLSAg
Ly8gRm9yIGNvbnZlbmllbmNlIHdoZW4gfHJ0Y3BfdWRwX3RyYW5zcG9ydHN8IGFuZCB8dHJhbnNw
b3J0X2NvbnRyb2xsZXJzfAotICAvLyBhcmVuJ3QgbmVlZGVkLgotICBSdHBUcmFuc3BvcnRQYWly
IENyZWF0ZVJ0cFRyYW5zcG9ydFBhaXIoCi0gICAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLAotICAgICAgY29uc3QgVWRwVHJhbnNwb3J0UGFpciYgcnRwX3VkcF90
cmFuc3BvcnRzKSB7Ci0gICAgcmV0dXJuIENyZWF0ZVJ0cFRyYW5zcG9ydFBhaXIocGFyYW1ldGVy
cywgcnRwX3VkcF90cmFuc3BvcnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVkcFRyYW5zcG9ydFBhaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
dHBUcmFuc3BvcnRDb250cm9sbGVyUGFpcigpKTsKLSAgfQotCi0gIFNydHBUcmFuc3BvcnRQYWly
IENyZWF0ZVNydHBUcmFuc3BvcnRQYWlyQW5kU2V0S2V5cygKLSAgICAgIGNvbnN0IFJ0cFRyYW5z
cG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICBjb25zdCBVZHBUcmFuc3BvcnRQYWly
JiBydHBfdWRwX3RyYW5zcG9ydHMpIHsKLSAgICBTcnRwVHJhbnNwb3J0UGFpciBzcnRwX3RyYW5z
cG9ydHMgPSBDcmVhdGVTcnRwVHJhbnNwb3J0UGFpcigKLSAgICAgICAgcGFyYW1ldGVycywgcnRw
X3VkcF90cmFuc3BvcnRzLCBVZHBUcmFuc3BvcnRQYWlyKCksCi0gICAgICAgIFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJQYWlyKCkpOwotICAgIEVYUEVDVF9UUlVFKHNydHBfdHJhbnNwb3J0cy5maXJz
dC0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJhbXMxKS5vaygpKTsKLSAgICBFWFBFQ1Rf
VFJVRSgKLSAgICAgICAgc3J0cF90cmFuc3BvcnRzLmZpcnN0LT5TZXRTcnRwUmVjZWl2ZUtleShr
VGVzdENyeXB0b1BhcmFtczIpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKAotICAgICAgICBzcnRw
X3RyYW5zcG9ydHMuc2Vjb25kLT5TZXRTcnRwU2VuZEtleShrVGVzdENyeXB0b1BhcmFtczIpLm9r
KCkpOwotICAgIEVYUEVDVF9UUlVFKAotICAgICAgICBzcnRwX3RyYW5zcG9ydHMuc2Vjb25kLT5T
ZXRTcnRwUmVjZWl2ZUtleShrVGVzdENyeXB0b1BhcmFtczEpLm9rKCkpOwotICAgIHJldHVybiBz
cnRwX3RyYW5zcG9ydHM7Ci0gIH0KLQotICBTcnRwVHJhbnNwb3J0UGFpciBDcmVhdGVTcnRwVHJh
bnNwb3J0UGFpckFuZFNldE1pc21hdGNoaW5nS2V5cygKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9y
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICBjb25zdCBVZHBUcmFuc3BvcnRQYWlyJiBy
dHBfdWRwX3RyYW5zcG9ydHMpIHsKLSAgICBTcnRwVHJhbnNwb3J0UGFpciBzcnRwX3RyYW5zcG9y
dHMgPSBDcmVhdGVTcnRwVHJhbnNwb3J0UGFpcigKLSAgICAgICAgcGFyYW1ldGVycywgcnRwX3Vk
cF90cmFuc3BvcnRzLCBVZHBUcmFuc3BvcnRQYWlyKCksCi0gICAgICAgIFJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJQYWlyKCkpOwotICAgIEVYUEVDVF9UUlVFKHNydHBfdHJhbnNwb3J0cy5maXJzdC0+
U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJhbXMxKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJV
RSgKLSAgICAgICAgc3J0cF90cmFuc3BvcnRzLmZpcnN0LT5TZXRTcnRwUmVjZWl2ZUtleShrVGVz
dENyeXB0b1BhcmFtczIpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKAotICAgICAgICBzcnRwX3Ry
YW5zcG9ydHMuc2Vjb25kLT5TZXRTcnRwU2VuZEtleShrVGVzdENyeXB0b1BhcmFtczEpLm9rKCkp
OwotICAgIEVYUEVDVF9UUlVFKAotICAgICAgICBzcnRwX3RyYW5zcG9ydHMuc2Vjb25kLT5TZXRT
cnRwUmVjZWl2ZUtleShrVGVzdENyeXB0b1BhcmFtczIpLm9rKCkpOwotICAgIHJldHVybiBzcnRw
X3RyYW5zcG9ydHM7Ci0gIH0KLQotICAvLyBFbmRzIHVwIHVzaW5nIGZha2UgYXVkaW8gY2FwdHVy
ZSBtb2R1bGUsIHdoaWNoIHdhcyBwYXNzZWQgaW50byBPcnRjRmFjdG9yeQotICAvLyBvbiBjcmVh
dGlvbi4KLSAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4g
Q3JlYXRlTG9jYWxBdWRpb1RyYWNrKAotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlkLAotICAg
ICAgT3J0Y0ZhY3RvcnlJbnRlcmZhY2UqIG9ydGNfZmFjdG9yeSkgewotICAgIC8vIERpc2FibGUg
ZWNobyBjYW5jZWxsYXRpb24gdG8gbWFrZSB0ZXN0IG1vcmUgZWZmaWNpZW50LgotICAgIGNyaWNr
ZXQ6OkF1ZGlvT3B0aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuZWNob19jYW5jZWxsYXRpb24u
ZW1wbGFjZSh0cnVlKTsKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1NvdXJj
ZUludGVyZmFjZT4gc291cmNlID0KLSAgICAgICAgb3J0Y19mYWN0b3J5LT5DcmVhdGVBdWRpb1Nv
dXJjZShvcHRpb25zKTsKLSAgICByZXR1cm4gb3J0Y19mYWN0b3J5LT5DcmVhdGVBdWRpb1RyYWNr
KGlkLCBzb3VyY2UpOwotICB9Ci0KLSAgLy8gU3RvcmVzIGNyZWF0ZWQgdmlkZW8gc291cmNlIGlu
IHxmYWtlX3ZpZGVvX3RyYWNrX3NvdXJjZXNffC4KLSAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4KLSAgQ3JlYXRlTG9jYWxWaWRlb1RyYWNrQW5kRmFrZVNv
dXJjZShjb25zdCBzdGQ6OnN0cmluZyYgaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgT3J0Y0ZhY3RvcnlJbnRlcmZhY2UqIG9ydGNfZmFjdG9yeSkgewotICAgIEZha2VQ
ZXJpb2RpY1ZpZGVvU291cmNlOjpDb25maWcgY29uZmlnOwotICAgIGNvbmZpZy50aW1lc3RhbXBf
b2Zmc2V0X21zID0gcnRjOjpUaW1lTWlsbGlzKCk7Ci0gICAgZmFrZV92aWRlb190cmFja19zb3Vy
Y2VzXy5lbXBsYWNlX2JhY2soCi0gICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8RmFr
ZVBlcmlvZGljVmlkZW9UcmFja1NvdXJjZT4oCi0gICAgICAgICAgICBjb25maWcsIGZhbHNlIC8q
IHJlbW90ZSAqLykpOwotICAgIHJldHVybiBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9UcmFja0lu
dGVyZmFjZT4oCi0gICAgICAgIG9ydGNfZmFjdG9yeS0+Q3JlYXRlVmlkZW9UcmFjayhpZCwgZmFr
ZV92aWRlb190cmFja19zb3VyY2VzXy5iYWNrKCkpKTsKLSAgfQotCi0gIC8vIEhlbHBlciBmdW5j
dGlvbiB1c2VkIHRvIHRlc3QgdHdvIHdheSBSVFAgc2VuZGVycyBhbmQgcmVjZWl2ZXJzIHdpdGgg
YmFzaWMKLSAgLy8gY29uZmlndXJhdGlvbnMuCi0gIC8vIElmIHxleHBlY3Rfc3VjY2Vzc3wgaXMg
dHJ1ZSwgd2FpdHMgZm9yIGtEZWZhdWx0VGltZW91dCBmb3IKLSAgLy8ga0RlZmF1bHROdW1GcmFt
ZXMgZnJhbWVzIHRvIGJlIHJlY2VpdmVkIGJ5IGFsbCBSdHBSZWNlaXZlcnMuCi0gIC8vIElmIHxl
eHBlY3Rfc3VjY2Vzc3wgaXMgZmFsc2UsIHNpbXBseSB3YWl0cyBmb3IgfGtSZWNlaXZpbmdEdXJh
dGlvbnwsIGFuZAotICAvLyBzdG9yZXMgdGhlIG51bWJlciBvZiByZWNlaXZlZCBmcmFtZXMgaW4g
fHJlY2VpdmVkX2F1ZGlvX2ZyYW1lMV98IGV0Yy4KLSAgdm9pZCBCYXNpY1R3b1dheVJ0cFNlbmRl
cnNBbmRSZWNlaXZlcnNUZXN0KFJ0cFRyYW5zcG9ydFBhaXIgc3J0cF90cmFuc3BvcnRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBlY3Rfc3Vj
Y2VzcykgewotICAgIHJlY2VpdmVkX2F1ZGlvX2ZyYW1lczFfID0gMDsKLSAgICByZWNlaXZlZF9h
dWRpb19mcmFtZXMyXyA9IDA7Ci0gICAgcmVuZGVyZWRfdmlkZW9fZnJhbWVzMV8gPSAwOwotICAg
IHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczJfID0gMDsKLSAgICAvLyBDcmVhdGUgYWxsIHRoZSBzZW5k
ZXJzIGFuZCByZWNlaXZlcnMgKGZvdXIgcGVyIGVuZHBvaW50KS4KLSAgICBhdXRvIGF1ZGlvX3Nl
bmRlcl9yZXN1bHQxID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgICAg
Y3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgc3J0cF90cmFuc3BvcnRzLmZpcnN0LmdldCgpKTsK
LSAgICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQxID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0
cFNlbmRlcigKLSAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgc3J0cF90cmFuc3Bv
cnRzLmZpcnN0LmdldCgpKTsKLSAgICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDEgPSBvcnRj
X2ZhY3RvcnkxXy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfQVVESU8sIHNydHBfdHJhbnNwb3J0cy5maXJzdC5nZXQoKSk7Ci0gICAgYXV0byB2aWRlb19y
ZWNlaXZlcl9yZXN1bHQxID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAg
ICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBzcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0
KCkpOwotICAgIEFTU0VSVF9UUlVFKGF1ZGlvX3NlbmRlcl9yZXN1bHQxLm9rKCkpOwotICAgIEFT
U0VSVF9UUlVFKHZpZGVvX3NlbmRlcl9yZXN1bHQxLm9rKCkpOwotICAgIEFTU0VSVF9UUlVFKGF1
ZGlvX3JlY2VpdmVyX3Jlc3VsdDEub2soKSk7Ci0gICAgQVNTRVJUX1RSVUUodmlkZW9fcmVjZWl2
ZXJfcmVzdWx0MS5vaygpKTsKLSAgICBhdXRvIGF1ZGlvX3NlbmRlcjEgPSBhdWRpb19zZW5kZXJf
cmVzdWx0MS5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRvIHZpZGVvX3NlbmRlcjEgPSB2aWRlb19zZW5k
ZXJfcmVzdWx0MS5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRvIGF1ZGlvX3JlY2VpdmVyMSA9IGF1ZGlv
X3JlY2VpdmVyX3Jlc3VsdDEuTW92ZVZhbHVlKCk7Ci0gICAgYXV0byB2aWRlb19yZWNlaXZlcjEg
PSB2aWRlb19yZWNlaXZlcl9yZXN1bHQxLk1vdmVWYWx1ZSgpOwotCi0gICAgYXV0byBhdWRpb19z
ZW5kZXJfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICAg
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHNydHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCkp
OwotICAgIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdDIgPSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRl
UnRwU2VuZGVyKAotICAgICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBzcnRwX3RyYW5z
cG9ydHMuc2Vjb25kLmdldCgpKTsKLSAgICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDIgPSBv
cnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICAgIGNyaWNrZXQ6Ok1FRElB
X1RZUEVfQVVESU8sIHNydHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCkpOwotICAgIGF1dG8gdmlk
ZW9fcmVjZWl2ZXJfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBSZWNlaXZlcigK
LSAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgc3J0cF90cmFuc3BvcnRzLnNlY29u
ZC5nZXQoKSk7Ci0gICAgQVNTRVJUX1RSVUUoYXVkaW9fc2VuZGVyX3Jlc3VsdDIub2soKSk7Ci0g
ICAgQVNTRVJUX1RSVUUodmlkZW9fc2VuZGVyX3Jlc3VsdDIub2soKSk7Ci0gICAgQVNTRVJUX1RS
VUUoYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Mi5vaygpKTsKLSAgICBBU1NFUlRfVFJVRSh2aWRlb19y
ZWNlaXZlcl9yZXN1bHQyLm9rKCkpOwotICAgIGF1dG8gYXVkaW9fc2VuZGVyMiA9IGF1ZGlvX3Nl
bmRlcl9yZXN1bHQyLk1vdmVWYWx1ZSgpOwotICAgIGF1dG8gdmlkZW9fc2VuZGVyMiA9IHZpZGVv
X3NlbmRlcl9yZXN1bHQyLk1vdmVWYWx1ZSgpOwotICAgIGF1dG8gYXVkaW9fcmVjZWl2ZXIyID0g
YXVkaW9fcmVjZWl2ZXJfcmVzdWx0Mi5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRvIHZpZGVvX3JlY2Vp
dmVyMiA9IHZpZGVvX3JlY2VpdmVyX3Jlc3VsdDIuTW92ZVZhbHVlKCk7Ci0KLSAgICAvLyBBZGQg
ZmFrZSB0cmFja3MuCi0gICAgUlRDRXJyb3IgZXJyb3IgPSBhdWRpb19zZW5kZXIxLT5TZXRUcmFj
aygKLSAgICAgICAgQ3JlYXRlTG9jYWxBdWRpb1RyYWNrKCJhdWRpbyIsIG9ydGNfZmFjdG9yeTFf
LmdldCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0gICAgZXJyb3IgPSB2aWRl
b19zZW5kZXIxLT5TZXRUcmFjaygKLSAgICAgICAgQ3JlYXRlTG9jYWxWaWRlb1RyYWNrQW5kRmFr
ZVNvdXJjZSgidmlkZW8iLCBvcnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwotICAgIEVYUEVDVF9UUlVF
KGVycm9yLm9rKCkpOwotICAgIGVycm9yID0gYXVkaW9fc2VuZGVyMi0+U2V0VHJhY2soCi0gICAg
ICAgIENyZWF0ZUxvY2FsQXVkaW9UcmFjaygiYXVkaW8iLCBvcnRjX2ZhY3RvcnkyXy5nZXQoKSkp
OwotICAgIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwotICAgIGVycm9yID0gdmlkZW9fc2VuZGVy
Mi0+U2V0VHJhY2soCi0gICAgICAgIENyZWF0ZUxvY2FsVmlkZW9UcmFja0FuZEZha2VTb3VyY2Uo
InZpZGVvIiwgb3J0Y19mYWN0b3J5Ml8uZ2V0KCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcnJvci5v
aygpKTsKLQotICAgIC8vICJzZW50X1hfcGFyYW1ldGVyczEiIGFyZSB0aGUgcGFyYW1ldGVycyB0
aGF0IGVuZHBvaW50IDEgc2VuZHMgd2l0aCBhbmQKLSAgICAvLyBlbmRwb2ludCAyIHJlY2VpdmVz
IHdpdGguCi0gICAgUnRwUGFyYW1ldGVycyBzZW50X29wdXNfcGFyYW1ldGVyczEgPQotICAgICAg
ICBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aFNzcmMoMHhkZWFkYmVlZik7Ci0gICAgUnRw
UGFyYW1ldGVycyBzZW50X3ZwOF9wYXJhbWV0ZXJzMSA9Ci0gICAgICAgIE1ha2VNaW5pbWFsVnA4
UGFyYW1ldGVyc1dpdGhTc3JjKDB4YmFhZGZlZWQpOwotICAgIFJ0cFBhcmFtZXRlcnMgc2VudF9v
cHVzX3BhcmFtZXRlcnMyID0KLSAgICAgICAgTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVyc1dpdGhT
c3JjKDB4MTMzMzMzMzcpOwotICAgIFJ0cFBhcmFtZXRlcnMgc2VudF92cDhfcGFyYW1ldGVyczIg
PQotICAgICAgICBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoU3NyYygweDEyMzQ1Njc4KTsK
LQotICAgIC8vIENvbmZpZ3VyZSB0aGUgc2VuZGVycycgYW5kIHJlY2VpdmVycycgcGFyYW1ldGVy
cy4KLSAgICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlcjEtPlJlY2VpdmUoc2VudF9vcHVzX3Bh
cmFtZXRlcnMyKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZlcjEtPlJlY2Vp
dmUoc2VudF92cDhfcGFyYW1ldGVyczIpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKGF1ZGlvX3Jl
Y2VpdmVyMi0+UmVjZWl2ZShzZW50X29wdXNfcGFyYW1ldGVyczEpLm9rKCkpOwotICAgIEVYUEVD
VF9UUlVFKHZpZGVvX3JlY2VpdmVyMi0+UmVjZWl2ZShzZW50X3ZwOF9wYXJhbWV0ZXJzMSkub2so
KSk7Ci0gICAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyMS0+U2VuZChzZW50X29wdXNfcGFyYW1l
dGVyczEpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlcjEtPlNlbmQoc2VudF92
cDhfcGFyYW1ldGVyczEpLm9rKCkpOwotICAgIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlcjItPlNl
bmQoc2VudF9vcHVzX3BhcmFtZXRlcnMyKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRSh2aWRlb19z
ZW5kZXIyLT5TZW5kKHNlbnRfdnA4X3BhcmFtZXRlcnMyKS5vaygpKTsKLQotICAgIEZha2VWaWRl
b1RyYWNrUmVuZGVyZXIgZmFrZV92aWRlb19yZW5kZXJlcjEoCi0gICAgICAgIHN0YXRpY19jYXN0
PFZpZGVvVHJhY2tJbnRlcmZhY2UqPih2aWRlb19yZWNlaXZlcjEtPkdldFRyYWNrKCkuZ2V0KCkp
KTsKLSAgICBGYWtlVmlkZW9UcmFja1JlbmRlcmVyIGZha2VfdmlkZW9fcmVuZGVyZXIyKAotICAg
ICAgICBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrSW50ZXJmYWNlKj4odmlkZW9fcmVjZWl2ZXIyLT5H
ZXRUcmFjaygpLmdldCgpKSk7Ci0KLSAgICBpZiAoZXhwZWN0X3N1Y2Nlc3MpIHsKLSAgICAgIEVY
UEVDVF9UUlVFX1dBSVQoCi0gICAgICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTFfLT5m
cmFtZXNfcmVjZWl2ZWQoKSA+IGtEZWZhdWx0TnVtRnJhbWVzICYmCi0gICAgICAgICAgICAgIGZh
a2VfdmlkZW9fcmVuZGVyZXIxLm51bV9yZW5kZXJlZF9mcmFtZXMoKSA+IGtEZWZhdWx0TnVtRnJh
bWVzICYmCi0gICAgICAgICAgICAgIGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUyXy0+ZnJhbWVz
X3JlY2VpdmVkKCkgPgotICAgICAgICAgICAgICAgICAga0RlZmF1bHROdW1GcmFtZXMgJiYKLSAg
ICAgICAgICAgICAgZmFrZV92aWRlb19yZW5kZXJlcjIubnVtX3JlbmRlcmVkX2ZyYW1lcygpID4g
a0RlZmF1bHROdW1GcmFtZXMsCi0gICAgICAgICAga0RlZmF1bHRUaW1lb3V0KQotICAgICAgICAg
IDw8ICJBdWRpbyBjYXB0dXJlIG1vZHVsZSAxIHJlY2VpdmVkICIKLSAgICAgICAgICA8PCBmYWtl
X2F1ZGlvX2NhcHR1cmVfbW9kdWxlMV8tPmZyYW1lc19yZWNlaXZlZCgpCi0gICAgICAgICAgPDwg
IiBmcmFtZXMsIFZpZGVvIHJlbmRlcmVyIDEgcmVuZGVyZWQgIgotICAgICAgICAgIDw8IGZha2Vf
dmlkZW9fcmVuZGVyZXIxLm51bV9yZW5kZXJlZF9mcmFtZXMoKQotICAgICAgICAgIDw8ICIgZnJh
bWVzLCBBdWRpbyBjYXB0dXJlIG1vZHVsZSAyIHJlY2VpdmVkICIKLSAgICAgICAgICA8PCBmYWtl
X2F1ZGlvX2NhcHR1cmVfbW9kdWxlMl8tPmZyYW1lc19yZWNlaXZlZCgpCi0gICAgICAgICAgPDwg
IiBmcmFtZXMsIFZpZGVvIHJlbmRlcmVyIDIgcmVuZGVyZWQgIgotICAgICAgICAgIDw8IGZha2Vf
dmlkZW9fcmVuZGVyZXIyLm51bV9yZW5kZXJlZF9mcmFtZXMoKSA8PCAiIGZyYW1lcy4iOwotICAg
IH0gZWxzZSB7Ci0gICAgICBXQUlUKGZhbHNlLCBrUmVjZWl2aW5nRHVyYXRpb24pOwotICAgICAg
cmVuZGVyZWRfdmlkZW9fZnJhbWVzMV8gPSBmYWtlX3ZpZGVvX3JlbmRlcmVyMS5udW1fcmVuZGVy
ZWRfZnJhbWVzKCk7Ci0gICAgICByZW5kZXJlZF92aWRlb19mcmFtZXMyXyA9IGZha2VfdmlkZW9f
cmVuZGVyZXIyLm51bV9yZW5kZXJlZF9mcmFtZXMoKTsKLSAgICAgIHJlY2VpdmVkX2F1ZGlvX2Zy
YW1lczFfID0gZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTFfLT5mcmFtZXNfcmVjZWl2ZWQoKTsK
LSAgICAgIHJlY2VpdmVkX2F1ZGlvX2ZyYW1lczJfID0gZmFrZV9hdWRpb19jYXB0dXJlX21vZHVs
ZTJfLT5mcmFtZXNfcmVjZWl2ZWQoKTsKLSAgICB9Ci0gIH0KLQotICBydGM6OlZpcnR1YWxTb2Nr
ZXRTZXJ2ZXIgdmlydHVhbF9zb2NrZXRfc2VydmVyXzsKLSAgcnRjOjpUaHJlYWQgbmV0d29ya190
aHJlYWRfOwotICBydGM6OkZha2VOZXR3b3JrTWFuYWdlciBmYWtlX25ldHdvcmtfbWFuYWdlcl87
Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGYWtlQXVkaW9DYXB0dXJlTW9kdWxlPiBmYWtlX2F1ZGlv
X2NhcHR1cmVfbW9kdWxlMV87Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGYWtlQXVkaW9DYXB0dXJl
TW9kdWxlPiBmYWtlX2F1ZGlvX2NhcHR1cmVfbW9kdWxlMl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxP
cnRjRmFjdG9yeUludGVyZmFjZT4gb3J0Y19mYWN0b3J5MV87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxP
cnRjRmFjdG9yeUludGVyZmFjZT4gb3J0Y19mYWN0b3J5Ml87Ci0gIHN0ZDo6dmVjdG9yPHJ0Yzo6
c2NvcGVkX3JlZnB0cjxWaWRlb1RyYWNrU291cmNlPj4gZmFrZV92aWRlb190cmFja19zb3VyY2Vz
XzsKLSAgaW50IHJlY2VpdmVkX2F1ZGlvX2ZyYW1lczFfID0gMDsKLSAgaW50IHJlY2VpdmVkX2F1
ZGlvX2ZyYW1lczJfID0gMDsKLSAgaW50IHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczFfID0gMDsKLSAg
aW50IHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczJfID0gMDsKLX07Ci0KLS8vIERpc2FibGUgZm9yIFRT
YW4gdjIsIHNlZQotLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3dlYnJ0Yy9pc3N1ZXMv
ZGV0YWlsP2lkPTczNjYgZm9yIGRldGFpbHMuCi0jaWYgIWRlZmluZWQoVEhSRUFEX1NBTklUSVpF
UikKLQotLy8gVmVyeSBiYXNpYyBlbmQtdG8tZW5kIHRlc3Qgd2l0aCBhIHNpbmdsZSBwYWlyIG9m
IGF1ZGlvIFJUUCBzZW5kZXIgYW5kCi0vLyByZWNlaXZlci4KLS8vCi0vLyBVc2VzIG11eGVkIFJU
Q1AsIGFuZCBtaW5pbWFsIHBhcmFtZXRlcnMgd2l0aCBhIGhhcmQtY29kZWQgY29uZmlnIHRoYXQn
cwotLy8ga25vd24gdG8gd29yay4KLVRFU1RfRihPcnRjRmFjdG9yeUludGVncmF0aW9uVGVzdCwg
QmFzaWNPbmVXYXlBdWRpb1J0cFNlbmRlckFuZFJlY2VpdmVyKSB7Ci0gIGF1dG8gdWRwX3RyYW5z
cG9ydHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwotICBhdXRvIHJ0cF90
cmFuc3BvcnRzID0KLSAgICAgIENyZWF0ZVJ0cFRyYW5zcG9ydFBhaXIoTWFrZVJ0Y3BNdXhQYXJh
bWV0ZXJzKCksIHVkcF90cmFuc3BvcnRzKTsKLQotICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRj
X2ZhY3RvcnkxXy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9B
VURJTywgcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICBhdXRvIHJlY2VpdmVyX3Jlc3Vs
dCA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSk7Ci0gIEFTU0VSVF9U
UlVFKHNlbmRlcl9yZXN1bHQub2soKSk7Ci0gIEFTU0VSVF9UUlVFKHJlY2VpdmVyX3Jlc3VsdC5v
aygpKTsKLSAgYXV0byBzZW5kZXIgPSBzZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBhdXRv
IHJlY2VpdmVyID0gcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIFJUQ0Vycm9yIGVy
cm9yID0KLSAgICAgIHNlbmRlci0+U2V0VHJhY2soQ3JlYXRlTG9jYWxBdWRpb1RyYWNrKCJhdWRp
byIsIG9ydGNfZmFjdG9yeTFfLmdldCgpKSk7Ci0gIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwot
Ci0gIFJ0cFBhcmFtZXRlcnMgb3B1c19wYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxPcHVzUGFyYW1l
dGVycygpOwotICBFWFBFQ1RfVFJVRShyZWNlaXZlci0+UmVjZWl2ZShvcHVzX3BhcmFtZXRlcnMp
Lm9rKCkpOwotICBFWFBFQ1RfVFJVRShzZW5kZXItPlNlbmQob3B1c19wYXJhbWV0ZXJzKS5vaygp
KTsKLSAgLy8gU2VuZGVyIGFuZCByZWNlaXZlciBhcmUgY29ubmVjdGVkIGFuZCBjb25maWd1cmVk
OyBhdWRpbyBmcmFtZXMgc2hvdWxkIGJlCi0gIC8vIGFibGUgdG8gZmxvdyBhdCB0aGlzIHBvaW50
LgotICBFWFBFQ1RfVFJVRV9XQUlUKAotICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTJf
LT5mcmFtZXNfcmVjZWl2ZWQoKSA+IGtEZWZhdWx0TnVtRnJhbWVzLAotICAgICAga0RlZmF1bHRU
aW1lb3V0KTsKLX0KLQotLy8gVmVyeSBiYXNpYyBlbmQtdG8tZW5kIHRlc3Qgd2l0aCBhIHNpbmds
ZSBwYWlyIG9mIHZpZGVvIFJUUCBzZW5kZXIgYW5kCi0vLyByZWNlaXZlci4KLS8vCi0vLyBVc2Vz
IG11eGVkIFJUQ1AsIGFuZCBtaW5pbWFsIHBhcmFtZXRlcnMgd2l0aCBhIGhhcmQtY29kZWQgY29u
ZmlnIHRoYXQncwotLy8ga25vd24gdG8gd29yay4KLVRFU1RfRihPcnRjRmFjdG9yeUludGVncmF0
aW9uVGVzdCwgQmFzaWNPbmVXYXlWaWRlb1J0cFNlbmRlckFuZFJlY2VpdmVyKSB7Ci0gIGF1dG8g
dWRwX3RyYW5zcG9ydHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwotICBh
dXRvIHJ0cF90cmFuc3BvcnRzID0KLSAgICAgIENyZWF0ZVJ0cFRyYW5zcG9ydFBhaXIoTWFrZVJ0
Y3BNdXhQYXJhbWV0ZXJzKCksIHVkcF90cmFuc3BvcnRzKTsKLQotICBhdXRvIHNlbmRlcl9yZXN1
bHQgPSBvcnRjX2ZhY3RvcnkxXy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVE
SUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICBhdXRvIHJlY2Vp
dmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNy
aWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSk7Ci0g
IEFTU0VSVF9UUlVFKHNlbmRlcl9yZXN1bHQub2soKSk7Ci0gIEFTU0VSVF9UUlVFKHJlY2VpdmVy
X3Jlc3VsdC5vaygpKTsKLSAgYXV0byBzZW5kZXIgPSBzZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgp
OwotICBhdXRvIHJlY2VpdmVyID0gcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIFJU
Q0Vycm9yIGVycm9yID0gc2VuZGVyLT5TZXRUcmFjaygKLSAgICAgIENyZWF0ZUxvY2FsVmlkZW9U
cmFja0FuZEZha2VTb3VyY2UoInZpZGVvIiwgb3J0Y19mYWN0b3J5MV8uZ2V0KCkpKTsKLSAgRVhQ
RUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0KLSAgUnRwUGFyYW1ldGVycyB2cDhfcGFyYW1ldGVycyA9
IE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJVRShyZWNlaXZlci0+UmVj
ZWl2ZSh2cDhfcGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9UUlVFKHNlbmRlci0+U2VuZCh2
cDhfcGFyYW1ldGVycykub2soKSk7Ci0gIEZha2VWaWRlb1RyYWNrUmVuZGVyZXIgZmFrZV9yZW5k
ZXJlcigKLSAgICAgIHN0YXRpY19jYXN0PFZpZGVvVHJhY2tJbnRlcmZhY2UqPihyZWNlaXZlci0+
R2V0VHJhY2soKS5nZXQoKSkpOwotICAvLyBTZW5kZXIgYW5kIHJlY2VpdmVyIGFyZSBjb25uZWN0
ZWQgYW5kIGNvbmZpZ3VyZWQ7IHZpZGVvIGZyYW1lcyBzaG91bGQgYmUKLSAgLy8gYWJsZSB0byBm
bG93IGF0IHRoaXMgcG9pbnQuCi0gIEVYUEVDVF9UUlVFX1dBSVQoZmFrZV9yZW5kZXJlci5udW1f
cmVuZGVyZWRfZnJhbWVzKCkgPiBrRGVmYXVsdE51bUZyYW1lcywKLSAgICAgICAgICAgICAgICAg
ICBrRGVmYXVsdFRpbWVvdXQpOwotfQotCi0vLyBUZXN0IHRoYXQgaWYgdGhlIHRyYWNrIGlzIGNo
YW5nZWQgd2hpbGUgc2VuZGluZywgdGhlIHNlbmRlciBzZWFtbGVzc2x5Ci0vLyB0cmFuc2l0aW9u
cyB0byBzZW5kaW5nIGl0IGFuZCBmcmFtZXMgYXJlIHJlY2VpdmVkIGVuZC10by1lbmQuCi0vLwot
Ly8gT25seSBkb2luZyB0aGlzIGZvciB2aWRlbywgc2luY2UgZ2l2ZW4gdGhhdCBhdWRpbyBpcyBz
b3VyY2VkIGZyb20gYSBzaW5nbGUKLS8vIGZha2UgYXVkaW8gY2FwdHVyZSBtb2R1bGUsIHRoZSBh
dWRpbyB0cmFjayBpcyBqdXN0IGEgZHVtbXkgb2JqZWN0LgotLy8gVE9ETyhkZWFkYmVlZik6IENo
YW5nZSB0aGlzIHdoZW4gcG9zc2libGUuCi1URVNUX0YoT3J0Y0ZhY3RvcnlJbnRlZ3JhdGlvblRl
c3QsIFNldFRyYWNrV2hpbGVTZW5kaW5nKSB7Ci0gIGF1dG8gdWRwX3RyYW5zcG9ydHMgPSBDcmVh
dGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwotICBhdXRvIHJ0cF90cmFuc3BvcnRzID0K
LSAgICAgIENyZWF0ZVJ0cFRyYW5zcG9ydFBhaXIoTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCksIHVk
cF90cmFuc3BvcnRzKTsKLQotICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnkxXy0+
Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3Ry
YW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICBhdXRvIHJlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFj
dG9yeTJfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklE
RU8sIHJ0cF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKHNlbmRlcl9y
ZXN1bHQub2soKSk7Ci0gIEFTU0VSVF9UUlVFKHJlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLSAgYXV0
byBzZW5kZXIgPSBzZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBhdXRvIHJlY2VpdmVyID0g
cmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIFJUQ0Vycm9yIGVycm9yID0gc2VuZGVy
LT5TZXRUcmFjaygKLSAgICAgIENyZWF0ZUxvY2FsVmlkZW9UcmFja0FuZEZha2VTb3VyY2UoInZp
ZGVvXzEiLCBvcnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwotICBFWFBFQ1RfVFJVRShlcnJvci5vaygp
KTsKLSAgUnRwUGFyYW1ldGVycyB2cDhfcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA4UGFyYW1l
dGVycygpOwotICBFWFBFQ1RfVFJVRShyZWNlaXZlci0+UmVjZWl2ZSh2cDhfcGFyYW1ldGVycyku
b2soKSk7Ci0gIEVYUEVDVF9UUlVFKHNlbmRlci0+U2VuZCh2cDhfcGFyYW1ldGVycykub2soKSk7
Ci0gIEZha2VWaWRlb1RyYWNrUmVuZGVyZXIgZmFrZV9yZW5kZXJlcigKLSAgICAgIHN0YXRpY19j
YXN0PFZpZGVvVHJhY2tJbnRlcmZhY2UqPihyZWNlaXZlci0+R2V0VHJhY2soKS5nZXQoKSkpOwot
ICAvLyBFeHBlY3QgZm9yIHNvbWUgaW5pdGlhbCBudW1iZXIgb2YgZnJhbWVzIHRvIGJlIHJlY2Vp
dmVkLgotICBFWFBFQ1RfVFJVRV9XQUlUKGZha2VfcmVuZGVyZXIubnVtX3JlbmRlcmVkX2ZyYW1l
cygpID4ga0RlZmF1bHROdW1GcmFtZXMsCi0gICAgICAgICAgICAgICAgICAga0RlZmF1bHRUaW1l
b3V0KTsKLSAgLy8gRGVzdHJveSBvbGQgc291cmNlLCBzZXQgYSBuZXcgdHJhY2ssIGFuZCB2ZXJp
ZnkgbmV3IGZyYW1lcyBhcmUgcmVjZWl2ZWQKLSAgLy8gZnJvbSB0aGUgbmV3IHRyYWNrLiBUaGUg
VmlkZW9UcmFja1NvdXJjZSBpcyByZWZlcmVuY2UgY291bnRlZCBhbmQgbWF5IGxpdmUKLSAgLy8g
YSBsaXR0bGUgbG9uZ2VyLCBzbyB0ZWxsIGl0IHRoYXQgaXRzIHNvdXJjZSBpcyBnb2luZyBhd2F5
IG5vdy4KLSAgZmFrZV92aWRlb190cmFja19zb3VyY2VzX1swXSA9IG51bGxwdHI7Ci0gIGludCBw
cmV2X251bV9mcmFtZXMgPSBmYWtlX3JlbmRlcmVyLm51bV9yZW5kZXJlZF9mcmFtZXMoKTsKLSAg
ZXJyb3IgPSBzZW5kZXItPlNldFRyYWNrKAotICAgICAgQ3JlYXRlTG9jYWxWaWRlb1RyYWNrQW5k
RmFrZVNvdXJjZSgidmlkZW9fMiIsIG9ydGNfZmFjdG9yeTFfLmdldCgpKSk7Ci0gIEVYUEVDVF9U
UlVFKGVycm9yLm9rKCkpOwotICBFWFBFQ1RfVFJVRV9XQUlUKAotICAgICAgZmFrZV9yZW5kZXJl
ci5udW1fcmVuZGVyZWRfZnJhbWVzKCkgPiBrRGVmYXVsdE51bUZyYW1lcyArIHByZXZfbnVtX2Zy
YW1lcywKLSAgICAgIGtEZWZhdWx0VGltZW91dCk7Ci19Ci0KLS8vIFRPRE8od2VicnRjOjc5MTUs
IHdlYnJ0Yzo5MTg0KTogVGVzdHMgYmVsb3cgYXJlIGRpc2FibGVkIGZvciBpT1MgNjQgb24gZGVi
dWcKLS8vIGJ1aWxkcyBiZWNhdXNlIG9mIGZsYWtpbmVzcy4KLSNpZiAhKGRlZmluZWQoV0VCUlRD
X0lPUykgJiYgZGVmaW5lZChXRUJSVENfQVJDSF82NF9CSVRTKSAmJiAhZGVmaW5lZChOREVCVUcp
KQotI2RlZmluZSBNQVlCRV9CYXNpY1R3b1dheUF1ZGlvVmlkZW9SdHBTZW5kZXJzQW5kUmVjZWl2
ZXJzIFwKLSAgQmFzaWNUd29XYXlBdWRpb1ZpZGVvUnRwU2VuZGVyc0FuZFJlY2VpdmVycwotI2Rl
ZmluZSBNQVlCRV9CYXNpY1R3b1dheUF1ZGlvVmlkZW9TcnRwU2VuZGVyc0FuZFJlY2VpdmVycyBc
Ci0gIEJhc2ljVHdvV2F5QXVkaW9WaWRlb1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzCi0jZGVmaW5l
IE1BWUJFX1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzV2l0aE1pc21hdGNoaW5nS2V5cyBcCi0gIFNy
dHBTZW5kZXJzQW5kUmVjZWl2ZXJzV2l0aE1pc21hdGNoaW5nS2V5cwotI2RlZmluZSBNQVlCRV9P
bmVTaWRlU3J0cFNlbmRlckFuZFJlY2VpdmVyIE9uZVNpZGVTcnRwU2VuZGVyQW5kUmVjZWl2ZXIK
LSNkZWZpbmUgTUFZQkVfRnVsbFR3b1dheUF1ZGlvVmlkZW9TcnRwU2VuZGVyc0FuZFJlY2VpdmVy
cyBcCi0gIEZ1bGxUd29XYXlBdWRpb1ZpZGVvU3J0cFNlbmRlcnNBbmRSZWNlaXZlcnMKLSNlbHNl
Ci0jZGVmaW5lIE1BWUJFX0Jhc2ljVHdvV2F5QXVkaW9WaWRlb1J0cFNlbmRlcnNBbmRSZWNlaXZl
cnMgXAotICBESVNBQkxFRF9CYXNpY1R3b1dheUF1ZGlvVmlkZW9SdHBTZW5kZXJzQW5kUmVjZWl2
ZXJzCi0jZGVmaW5lIE1BWUJFX0Jhc2ljVHdvV2F5QXVkaW9WaWRlb1NydHBTZW5kZXJzQW5kUmVj
ZWl2ZXJzIFwKLSAgRElTQUJMRURfQmFzaWNUd29XYXlBdWRpb1ZpZGVvU3J0cFNlbmRlcnNBbmRS
ZWNlaXZlcnMKLSNkZWZpbmUgTUFZQkVfU3J0cFNlbmRlcnNBbmRSZWNlaXZlcnNXaXRoTWlzbWF0
Y2hpbmdLZXlzIFwKLSAgRElTQUJMRURfU3J0cFNlbmRlcnNBbmRSZWNlaXZlcnNXaXRoTWlzbWF0
Y2hpbmdLZXlzCi0jZGVmaW5lIE1BWUJFX09uZVNpZGVTcnRwU2VuZGVyQW5kUmVjZWl2ZXIgRElT
QUJMRURfT25lU2lkZVNydHBTZW5kZXJBbmRSZWNlaXZlcgotI2RlZmluZSBNQVlCRV9GdWxsVHdv
V2F5QXVkaW9WaWRlb1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzIFwKLSAgRElTQUJMRURfRnVsbFR3
b1dheUF1ZGlvVmlkZW9TcnRwU2VuZGVyc0FuZFJlY2VpdmVycwotI2VuZGlmCi0KLS8vIEVuZC10
by1lbmQgdGVzdCB3aXRoIHR3byBwYWlycyBvZiBSVFAgc2VuZGVycyBhbmQgcmVjZWl2ZXJzLCBm
b3IgYXVkaW8gYW5kCi0vLyB2aWRlby4KLS8vCi0vLyBVc2VzIG11eGVkIFJUQ1AsIGFuZCBtaW5p
bWFsIHBhcmFtZXRlcnMgd2l0aCBoYXJkLWNvZGVkIGNvbmZpZ3MgdGhhdCBhcmUKLS8vIGtub3du
IHRvIHdvcmsuCi1URVNUX0YoT3J0Y0ZhY3RvcnlJbnRlZ3JhdGlvblRlc3QsCi0gICAgICAgTUFZ
QkVfQmFzaWNUd29XYXlBdWRpb1ZpZGVvUnRwU2VuZGVyc0FuZFJlY2VpdmVycykgewotICBhdXRv
IHVkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5zcG9ydFBhaXIoKTsKLSAg
YXV0byBydHBfdHJhbnNwb3J0cyA9Ci0gICAgICBDcmVhdGVSdHBUcmFuc3BvcnRQYWlyKE1ha2VS
dGNwTXV4UGFyYW1ldGVycygpLCB1ZHBfdHJhbnNwb3J0cyk7Ci0gIGJvb2wgZXhwZWN0X3N1Y2Nl
c3MgPSB0cnVlOwotICBCYXNpY1R3b1dheVJ0cFNlbmRlcnNBbmRSZWNlaXZlcnNUZXN0KHN0ZDo6
bW92ZShydHBfdHJhbnNwb3J0cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0X3N1Y2Nlc3MpOwotfQotCi1URVNUX0YoT3J0Y0ZhY3RvcnlJbnRlZ3JhdGlv
blRlc3QsCi0gICAgICAgTUFZQkVfQmFzaWNUd29XYXlBdWRpb1ZpZGVvU3J0cFNlbmRlcnNBbmRS
ZWNlaXZlcnMpIHsKLSAgYXV0byB1ZHBfdHJhbnNwb3J0cyA9IENyZWF0ZUFuZENvbm5lY3RVZHBU
cmFuc3BvcnRQYWlyKCk7Ci0gIGF1dG8gc3J0cF90cmFuc3BvcnRzID0gQ3JlYXRlU3J0cFRyYW5z
cG9ydFBhaXJBbmRTZXRLZXlzKAotICAgICAgTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCksIHVkcF90
cmFuc3BvcnRzKTsKLSAgYm9vbCBleHBlY3Rfc3VjY2VzcyA9IHRydWU7Ci0gIEJhc2ljVHdvV2F5
UnRwU2VuZGVyc0FuZFJlY2VpdmVyc1Rlc3Qoc3RkOjptb3ZlKHNydHBfdHJhbnNwb3J0cyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3N1Y2Nlc3MpOwot
fQotCi0vLyBUZXN0cyB0aGF0IHRoZSBwYWNrZXRzIGNhbm5vdCBiZSBkZWNvZGVkIGlmIHRoZSBr
ZXlzIGFyZSBtaXNtYXRjaGVkLgotLy8gVE9ETyh3ZWJydGM6OTE4NCk6IERpc2FibGVkIGJlY2F1
c2UgdGhpcyB0ZXN0IGlzIGZsYWt5LgotVEVTVF9GKE9ydGNGYWN0b3J5SW50ZWdyYXRpb25UZXN0
LAotICAgICAgIE1BWUJFX1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzV2l0aE1pc21hdGNoaW5nS2V5
cykgewotICBhdXRvIHVkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5zcG9y
dFBhaXIoKTsKLSAgYXV0byBzcnRwX3RyYW5zcG9ydHMgPSBDcmVhdGVTcnRwVHJhbnNwb3J0UGFp
ckFuZFNldE1pc21hdGNoaW5nS2V5cygKLSAgICAgIE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCB1
ZHBfdHJhbnNwb3J0cyk7Ci0gIGJvb2wgZXhwZWN0X3N1Y2Nlc3MgPSBmYWxzZTsKLSAgQmFzaWNU
d29XYXlSdHBTZW5kZXJzQW5kUmVjZWl2ZXJzVGVzdChzdGQ6Om1vdmUoc3J0cF90cmFuc3BvcnRz
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc3VjY2Vz
cyk7Ci0gIC8vIE5vIGZyYW1lcyBhcmUgZXhwZWN0ZWQgdG8gYmUgZGVjb2RlZC4KLSAgRVhQRUNU
X1RSVUUocmVjZWl2ZWRfYXVkaW9fZnJhbWVzMV8gPT0gMCAmJiByZWNlaXZlZF9hdWRpb19mcmFt
ZXMyXyA9PSAwICYmCi0gICAgICAgICAgICAgIHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczFfID09IDAg
JiYgcmVuZGVyZWRfdmlkZW9fZnJhbWVzMl8gPT0gMCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhl
IGZyYW1lcyBjYW5ub3QgYmUgZGVjb2RlZCBpZiBvbmx5IG9uZSBzaWRlIHVzZXMgU1JUUC4KLVRF
U1RfRihPcnRjRmFjdG9yeUludGVncmF0aW9uVGVzdCwgTUFZQkVfT25lU2lkZVNydHBTZW5kZXJB
bmRSZWNlaXZlcikgewotICBhdXRvIHJ0Y3BfcGFyYW1ldGVycyA9IE1ha2VSdGNwTXV4UGFyYW1l
dGVycygpOwotICBhdXRvIHVkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5z
cG9ydFBhaXIoKTsKLSAgYXV0byBydGNwX3VkcF90cmFuc3BvcnRzID0gVWRwVHJhbnNwb3J0UGFp
cigpOwotICBhdXRvIHRyYW5zcG9ydF9jb250cm9sbGVycyA9IFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJQYWlyKCk7Ci0gIGF1dG8gdHJhbnNwb3J0X3Jlc3VsdDEgPSBvcnRjX2ZhY3RvcnkxXy0+Q3Jl
YXRlUnRwVHJhbnNwb3J0KAotICAgICAgcnRjcF9wYXJhbWV0ZXJzLCB1ZHBfdHJhbnNwb3J0cy5m
aXJzdC5nZXQoKSwKLSAgICAgIHJ0Y3BfdWRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCksIHRyYW5z
cG9ydF9jb250cm9sbGVycy5maXJzdC5nZXQoKSk7Ci0gIGF1dG8gdHJhbnNwb3J0X3Jlc3VsdDIg
PSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlU3J0cFRyYW5zcG9ydCgKLSAgICAgIHJ0Y3BfcGFyYW1l
dGVycywgdWRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpLAotICAgICAgcnRjcF91ZHBfdHJhbnNw
b3J0cy5zZWNvbmQuZ2V0KCksIHRyYW5zcG9ydF9jb250cm9sbGVycy5zZWNvbmQuZ2V0KCkpOwot
Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydCA9IHRyYW5zcG9ydF9yZXN1bHQxLk1vdmVWYWx1ZSgpOwot
ICBhdXRvIHNydHBfdHJhbnNwb3J0ID0gdHJhbnNwb3J0X3Jlc3VsdDIuTW92ZVZhbHVlKCk7Ci0g
IEVYUEVDVF9UUlVFKHNydHBfdHJhbnNwb3J0LT5TZXRTcnRwU2VuZEtleShrVGVzdENyeXB0b1Bh
cmFtczEpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydC0+U2V0U3J0cFJlY2Vp
dmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMyKS5vaygpKTsKLSAgYm9vbCBleHBlY3Rfc3VjY2VzcyA9
IGZhbHNlOwotICBCYXNpY1R3b1dheVJ0cFNlbmRlcnNBbmRSZWNlaXZlcnNUZXN0KAotICAgICAg
e3N0ZDo6bW92ZShydHBfdHJhbnNwb3J0KSwgc3RkOjptb3ZlKHNydHBfdHJhbnNwb3J0KX0sIGV4
cGVjdF9zdWNjZXNzKTsKLQotICAvLyBUaGUgU1JUUCBzaWRlIGlzIG5vdCBleHBlY3RlZCB0byBk
ZWNvZGUgYW55IGF1ZGlvIG9yIHZpZGVvIGZyYW1lcy4KLSAgLy8gVGhlIFJUUCBzaWRlIGlzIG5v
dCBleHBlY3RlZCB0byBkZWNvZGUgYW55IHZpZGVvIGZyYW1lcyB3aGlsZSBpdCBpcwotICAvLyBw
b3NzaWJsZSB0aGF0IHRoZSBlbmNyeXB0ZWQgYXVkaW8gZnJhbWVzIGNhbiBiZSBhY2NpZGVudGFs
bHkgZGVjb2RlZCB3aGljaAotICAvLyBpcyB3aHkgcmVjZWl2ZWRfYXVkaW9fZnJhbWVzMV8gaXMg
bm90IHZhbGlkYXRlZC4KLSAgRVhQRUNUX1RSVUUocmVjZWl2ZWRfYXVkaW9fZnJhbWVzMl8gPT0g
MCAmJiByZW5kZXJlZF92aWRlb19mcmFtZXMxXyA9PSAwICYmCi0gICAgICAgICAgICAgIHJlbmRl
cmVkX3ZpZGVvX2ZyYW1lczJfID09IDApOwotfQotCi0vLyBFbmQtdG8tZW5kIHRlc3Qgd2l0aCB0
d28gcGFpcnMgb2YgUlRQIHNlbmRlcnMgYW5kIHJlY2VpdmVycywgZm9yIGF1ZGlvIGFuZAotLy8g
dmlkZW8uIFVubGlrZSB0aGUgdGVzdCBhYm92ZSwgdGhpcyBhdHRlbXB0cyB0byBtYWtlIHRoZSBw
YXJhbWV0ZXJzIGFzCi0vLyBjb21wbGV4IGFzIHBvc3NpYmxlLiBUaGUgc2VuZGVycyBhbmQgcmVj
ZWl2ZXJzIHVzZSB0aGUgU1JUUCB0cmFuc3BvcnQgd2l0aAotLy8gZGlmZmVyZW50IGtleXMuCi0v
LwotLy8gVXNlcyBub24tbXV4ZWQgUlRDUCwgd2l0aCBzZXBhcmF0ZSBhdWRpby92aWRlbyB0cmFu
c3BvcnRzLCBhbmQgYSBmdWxsIHNldCBvZgotLy8gcGFyYW1ldGVycywgYXMgd291bGQgbm9ybWFs
bHkgYmUgdXNlZCBpbiBhIFBlZXJDb25uZWN0aW9uLgotLy8KLS8vIFRPRE8oZGVhZGJlZWYpOiBV
cGRhdGUgdGhpcyB0ZXN0IGFzIG1vcmUgYXVkaW8vdmlkZW8gZmVhdHVyZXMgYmVjb21lCi0vLyBz
dXBwb3J0ZWQuCi1URVNUX0YoT3J0Y0ZhY3RvcnlJbnRlZ3JhdGlvblRlc3QsCi0gICAgICAgTUFZ
QkVfRnVsbFR3b1dheUF1ZGlvVmlkZW9TcnRwU2VuZGVyc0FuZFJlY2VpdmVycykgewotICAvLyBX
ZSB3YW50IGZvdXIgcGFpcnMgb2YgVURQIHRyYW5zcG9ydHMgZm9yIHRoaXMgdGVzdCwgZm9yIGF1
ZGlvL3ZpZGVvIGFuZAotICAvLyBSVFAvUlRDUC4KLSAgYXV0byBhdWRpb19ydHBfdWRwX3RyYW5z
cG9ydHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwotICBhdXRvIGF1ZGlv
X3J0Y3BfdWRwX3RyYW5zcG9ydHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigp
OwotICBhdXRvIHZpZGVvX3J0cF91ZHBfdHJhbnNwb3J0cyA9IENyZWF0ZUFuZENvbm5lY3RVZHBU
cmFuc3BvcnRQYWlyKCk7Ci0gIGF1dG8gdmlkZW9fcnRjcF91ZHBfdHJhbnNwb3J0cyA9IENyZWF0
ZUFuZENvbm5lY3RVZHBUcmFuc3BvcnRQYWlyKCk7Ci0KLSAgLy8gU2luY2Ugd2UgaGF2ZSBtdWx0
aXBsZSBSVFAgdHJhbnNwb3J0cyBvbiBlYWNoIHNpZGUsIHdlIG5lZWQgYW4gUlRQCi0gIC8vIHRy
YW5zcG9ydCBjb250cm9sbGVyLgotICBhdXRvIHRyYW5zcG9ydF9jb250cm9sbGVycyA9IENyZWF0
ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXJQYWlyKCk7Ci0KLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVy
cyBhdWRpb19ydHBfdHJhbnNwb3J0X3BhcmFtZXRlcnM7Ci0gIGF1ZGlvX3J0cF90cmFuc3BvcnRf
cGFyYW1ldGVycy5ydGNwLm11eCA9IGZhbHNlOwotICBhdXRvIGF1ZGlvX3NydHBfdHJhbnNwb3J0
cyA9IENyZWF0ZVNydHBUcmFuc3BvcnRQYWlyKAotICAgICAgYXVkaW9fcnRwX3RyYW5zcG9ydF9w
YXJhbWV0ZXJzLCBhdWRpb19ydHBfdWRwX3RyYW5zcG9ydHMsCi0gICAgICBhdWRpb19ydGNwX3Vk
cF90cmFuc3BvcnRzLCB0cmFuc3BvcnRfY29udHJvbGxlcnMpOwotCi0gIFJ0cFRyYW5zcG9ydFBh
cmFtZXRlcnMgdmlkZW9fcnRwX3RyYW5zcG9ydF9wYXJhbWV0ZXJzOwotICB2aWRlb19ydHBfdHJh
bnNwb3J0X3BhcmFtZXRlcnMucnRjcC5tdXggPSBmYWxzZTsKLSAgdmlkZW9fcnRwX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzLnJ0Y3AucmVkdWNlZF9zaXplID0gdHJ1ZTsKLSAgYXV0byB2aWRlb19zcnRw
X3RyYW5zcG9ydHMgPSBDcmVhdGVTcnRwVHJhbnNwb3J0UGFpcigKLSAgICAgIHZpZGVvX3J0cF90
cmFuc3BvcnRfcGFyYW1ldGVycywgdmlkZW9fcnRwX3VkcF90cmFuc3BvcnRzLAotICAgICAgdmlk
ZW9fcnRjcF91ZHBfdHJhbnNwb3J0cywgdHJhbnNwb3J0X2NvbnRyb2xsZXJzKTsKLQotICAvLyBT
ZXQga2V5cyBmb3IgU1JUUCB0cmFuc3BvcnRzLgotICBhdWRpb19zcnRwX3RyYW5zcG9ydHMuZmly
c3QtPlNldFNydHBTZW5kS2V5KGtUZXN0Q3J5cHRvUGFyYW1zMSk7Ci0gIGF1ZGlvX3NydHBfdHJh
bnNwb3J0cy5maXJzdC0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMyKTsKLSAg
dmlkZW9fc3J0cF90cmFuc3BvcnRzLmZpcnN0LT5TZXRTcnRwU2VuZEtleShrVGVzdENyeXB0b1Bh
cmFtczMpOwotICB2aWRlb19zcnRwX3RyYW5zcG9ydHMuZmlyc3QtPlNldFNydHBSZWNlaXZlS2V5
KGtUZXN0Q3J5cHRvUGFyYW1zNCk7Ci0KLSAgYXVkaW9fc3J0cF90cmFuc3BvcnRzLnNlY29uZC0+
U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJhbXMyKTsKLSAgYXVkaW9fc3J0cF90cmFuc3Bv
cnRzLnNlY29uZC0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMxKTsKLSAgdmlk
ZW9fc3J0cF90cmFuc3BvcnRzLnNlY29uZC0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJh
bXM0KTsKLSAgdmlkZW9fc3J0cF90cmFuc3BvcnRzLnNlY29uZC0+U2V0U3J0cFJlY2VpdmVLZXko
a1Rlc3RDcnlwdG9QYXJhbXMzKTsKLQotICAvLyBDcmVhdGUgYWxsIHRoZSBzZW5kZXJzIGFuZCBy
ZWNlaXZlcnMgKGZvdXIgcGVyIGVuZHBvaW50KS4KLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0
MSA9IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJ
QV9UWVBFX0FVRElPLCBhdWRpb19zcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICBhdXRv
IHZpZGVvX3NlbmRlcl9yZXN1bHQxID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0cFNlbmRlcigK
LSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3NydHBfdHJhbnNwb3J0cy5m
aXJzdC5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0MSA9IG9ydGNfZmFjdG9y
eTFfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8s
IGF1ZGlvX3NydHBfdHJhbnNwb3J0cy5maXJzdC5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2
ZXJfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNy
aWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3NydHBfdHJhbnNwb3J0cy5maXJzdC5nZXQo
KSk7Ci0gIEFTU0VSVF9UUlVFKGF1ZGlvX3NlbmRlcl9yZXN1bHQxLm9rKCkpOwotICBBU1NFUlRf
VFJVRSh2aWRlb19zZW5kZXJfcmVzdWx0MS5vaygpKTsKLSAgQVNTRVJUX1RSVUUoYXVkaW9fcmVj
ZWl2ZXJfcmVzdWx0MS5vaygpKTsKLSAgQVNTRVJUX1RSVUUodmlkZW9fcmVjZWl2ZXJfcmVzdWx0
MS5vaygpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIxID0gYXVkaW9fc2VuZGVyX3Jlc3VsdDEuTW92
ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyMSA9IHZpZGVvX3NlbmRlcl9yZXN1bHQxLk1v
dmVWYWx1ZSgpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyMSA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3Vs
dDEuTW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXIxID0gdmlkZW9fcmVjZWl2ZXJf
cmVzdWx0MS5Nb3ZlVmFsdWUoKTsKLQotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQyID0gb3J0
Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVf
QVVESU8sIGF1ZGlvX3NydHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCkpOwotICBhdXRvIHZpZGVv
X3NlbmRlcl9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAg
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3NydHBfdHJhbnNwb3J0cy5zZWNvbmQu
Z2V0KCkpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDIgPSBvcnRjX2ZhY3RvcnkyXy0+
Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBhdWRp
b19zcnRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpKTsKLSAgYXV0byB2aWRlb19yZWNlaXZlcl9y
ZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tl
dDo6TUVESUFfVFlQRV9WSURFTywgdmlkZW9fc3J0cF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSk7
Ci0gIEFTU0VSVF9UUlVFKGF1ZGlvX3NlbmRlcl9yZXN1bHQyLm9rKCkpOwotICBBU1NFUlRfVFJV
RSh2aWRlb19zZW5kZXJfcmVzdWx0Mi5vaygpKTsKLSAgQVNTRVJUX1RSVUUoYXVkaW9fcmVjZWl2
ZXJfcmVzdWx0Mi5vaygpKTsKLSAgQVNTRVJUX1RSVUUodmlkZW9fcmVjZWl2ZXJfcmVzdWx0Mi5v
aygpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdDIuTW92ZVZh
bHVlKCk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyMiA9IHZpZGVvX3NlbmRlcl9yZXN1bHQyLk1vdmVW
YWx1ZSgpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyMiA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDIu
TW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXIyID0gdmlkZW9fcmVjZWl2ZXJfcmVz
dWx0Mi5Nb3ZlVmFsdWUoKTsKLQotICBSVENFcnJvciBlcnJvciA9IGF1ZGlvX3NlbmRlcjEtPlNl
dFRyYWNrKAotICAgICAgQ3JlYXRlTG9jYWxBdWRpb1RyYWNrKCJhdWRpbyIsIG9ydGNfZmFjdG9y
eTFfLmdldCgpKSk7Ci0gIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwotICBlcnJvciA9IHZpZGVv
X3NlbmRlcjEtPlNldFRyYWNrKAotICAgICAgQ3JlYXRlTG9jYWxWaWRlb1RyYWNrQW5kRmFrZVNv
dXJjZSgidmlkZW8iLCBvcnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwotICBFWFBFQ1RfVFJVRShlcnJv
ci5vaygpKTsKLSAgZXJyb3IgPSBhdWRpb19zZW5kZXIyLT5TZXRUcmFjaygKLSAgICAgIENyZWF0
ZUxvY2FsQXVkaW9UcmFjaygiYXVkaW8iLCBvcnRjX2ZhY3RvcnkyXy5nZXQoKSkpOwotICBFWFBF
Q1RfVFJVRShlcnJvci5vaygpKTsKLSAgZXJyb3IgPSB2aWRlb19zZW5kZXIyLT5TZXRUcmFjaygK
LSAgICAgIENyZWF0ZUxvY2FsVmlkZW9UcmFja0FuZEZha2VTb3VyY2UoInZpZGVvIiwgb3J0Y19m
YWN0b3J5Ml8uZ2V0KCkpKTsKLSAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0KLSAgLy8gVXNl
IGRpZmZlcmVudCBjb2RlY3MgaW4gZGlmZmVyZW50IGRpcmVjdGlvbnMgZm9yIGV4dHJhIGNoYWxs
ZW5nZS4KLSAgUnRwUGFyYW1ldGVycyBvcHVzX3NlbmRfcGFyYW1ldGVycyA9IE1ha2VGdWxsT3B1
c1BhcmFtZXRlcnMoKTsKLSAgUnRwUGFyYW1ldGVycyBpc2FjX3NlbmRfcGFyYW1ldGVycyA9IE1h
a2VGdWxsSXNhY1BhcmFtZXRlcnMoKTsKLSAgUnRwUGFyYW1ldGVycyB2cDhfc2VuZF9wYXJhbWV0
ZXJzID0gTWFrZUZ1bGxWcDhQYXJhbWV0ZXJzKCk7Ci0gIFJ0cFBhcmFtZXRlcnMgdnA5X3NlbmRf
cGFyYW1ldGVycyA9IE1ha2VGdWxsVnA5UGFyYW1ldGVycygpOwotCi0gIC8vIFJlbW92ZSAicGF5
bG9hZF90eXBlIiBmcm9tIHJlY2VpdmUgcGFyYW1ldGVycy4gUmVjZWl2ZXIgd2lsbCBuZWVkIHRv
Ci0gIC8vIGRpc2Nlcm4gdGhlIHBheWxvYWQgdHlwZSBmcm9tIHBhY2tldHMgcmVjZWl2ZWQuCi0g
IFJ0cFBhcmFtZXRlcnMgb3B1c19yZWNlaXZlX3BhcmFtZXRlcnMgPSBvcHVzX3NlbmRfcGFyYW1l
dGVyczsKLSAgUnRwUGFyYW1ldGVycyBpc2FjX3JlY2VpdmVfcGFyYW1ldGVycyA9IGlzYWNfc2Vu
ZF9wYXJhbWV0ZXJzOwotICBSdHBQYXJhbWV0ZXJzIHZwOF9yZWNlaXZlX3BhcmFtZXRlcnMgPSB2
cDhfc2VuZF9wYXJhbWV0ZXJzOwotICBSdHBQYXJhbWV0ZXJzIHZwOV9yZWNlaXZlX3BhcmFtZXRl
cnMgPSB2cDlfc2VuZF9wYXJhbWV0ZXJzOwotICBvcHVzX3JlY2VpdmVfcGFyYW1ldGVycy5lbmNv
ZGluZ3NbMF0uY29kZWNfcGF5bG9hZF90eXBlLnJlc2V0KCk7Ci0gIGlzYWNfcmVjZWl2ZV9wYXJh
bWV0ZXJzLmVuY29kaW5nc1swXS5jb2RlY19wYXlsb2FkX3R5cGUucmVzZXQoKTsKLSAgdnA4X3Jl
Y2VpdmVfcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uY29kZWNfcGF5bG9hZF90eXBlLnJlc2V0KCk7
Ci0gIHZwOV9yZWNlaXZlX3BhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLmNvZGVjX3BheWxvYWRfdHlw
ZS5yZXNldCgpOwotCi0gIC8vIENvbmZpZ3VyZSB0aGUgc2VuZGVycycgYW5kIHJlY2VpdmVycycg
cGFyYW1ldGVycy4KLSAgLy8KLSAgLy8gTm90ZTogSW50ZW50aW9uYWxseSwgdGhlIHRvcCBjb2Rl
YyBpbiB0aGUgcmVjZWl2ZSBwYXJhbWV0ZXJzIGRvZXMgbm90Ci0gIC8vIG1hdGNoIHRoZSBjb2Rl
YyBzZW50IGJ5IHRoZSBvdGhlciBzaWRlLiBJZiAiUmVjZWl2ZSIgaXMgY2FsbGVkIHdpdGggYSBs
aXN0Ci0gIC8vIG9mIGNvZGVjcywgdGhlIHJlY2VpdmVyIHNob3VsZCBiZSBwcmVwYXJlZCB0byBy
ZWNlaXZlIGFueSBvZiB0aGVtLCBub3QKLSAgLy8ganVzdCB0aGUgb25lIG9uIHRvcC4KLSAgRVhQ
RUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXIxLT5SZWNlaXZlKG9wdXNfcmVjZWl2ZV9wYXJhbWV0ZXJz
KS5vaygpKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXIxLT5SZWNlaXZlKHZwOF9yZWNl
aXZlX3BhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlcjItPlJl
Y2VpdmUoaXNhY19yZWNlaXZlX3BhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfVFJVRSh2aWRl
b19yZWNlaXZlcjItPlJlY2VpdmUodnA5X3JlY2VpdmVfcGFyYW1ldGVycykub2soKSk7Ci0gIEVY
UEVDVF9UUlVFKGF1ZGlvX3NlbmRlcjEtPlNlbmQob3B1c19zZW5kX3BhcmFtZXRlcnMpLm9rKCkp
OwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXIxLT5TZW5kKHZwOF9zZW5kX3BhcmFtZXRlcnMp
Lm9rKCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXIyLT5TZW5kKGlzYWNfc2VuZF9wYXJh
bWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyMi0+U2VuZCh2cDlfc2Vu
ZF9wYXJhbWV0ZXJzKS5vaygpKTsKLQotICBGYWtlVmlkZW9UcmFja1JlbmRlcmVyIGZha2Vfdmlk
ZW9fcmVuZGVyZXIxKAotICAgICAgc3RhdGljX2Nhc3Q8VmlkZW9UcmFja0ludGVyZmFjZSo+KHZp
ZGVvX3JlY2VpdmVyMS0+R2V0VHJhY2soKS5nZXQoKSkpOwotICBGYWtlVmlkZW9UcmFja1JlbmRl
cmVyIGZha2VfdmlkZW9fcmVuZGVyZXIyKAotICAgICAgc3RhdGljX2Nhc3Q8VmlkZW9UcmFja0lu
dGVyZmFjZSo+KHZpZGVvX3JlY2VpdmVyMi0+R2V0VHJhY2soKS5nZXQoKSkpOwotCi0gIC8vIFNl
bmRlcnMgYW5kIHJlY2VpdmVycyBhcmUgY29ubmVjdGVkIGFuZCBjb25maWd1cmVkOyBhdWRpbyBh
bmQgdmlkZW8gZnJhbWVzCi0gIC8vIHNob3VsZCBiZSBhYmxlIHRvIGZsb3cgYXQgdGhpcyBwb2lu
dC4KLSAgRVhQRUNUX1RSVUVfV0FJVCgKLSAgICAgIGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUx
Xy0+ZnJhbWVzX3JlY2VpdmVkKCkgPiBrRGVmYXVsdE51bUZyYW1lcyAmJgotICAgICAgICAgIGZh
a2VfdmlkZW9fcmVuZGVyZXIxLm51bV9yZW5kZXJlZF9mcmFtZXMoKSA+IGtEZWZhdWx0TnVtRnJh
bWVzICYmCi0gICAgICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTJfLT5mcmFtZXNfcmVj
ZWl2ZWQoKSA+IGtEZWZhdWx0TnVtRnJhbWVzICYmCi0gICAgICAgICAgZmFrZV92aWRlb19yZW5k
ZXJlcjIubnVtX3JlbmRlcmVkX2ZyYW1lcygpID4ga0RlZmF1bHROdW1GcmFtZXMsCi0gICAgICBr
RGVmYXVsdFRpbWVvdXQpOwotfQotCi0vLyBUT0RPKGRlYWRiZWVmKTogRW5kLXRvLWVuZCB0ZXN0
IGZvciBtdWx0aXBsZSBzZW5kZXJzL3JlY2VpdmVycyBvZiB0aGUgc2FtZQotLy8gbWVkaWEgdHlw
ZSwgb25jZSB0aGF0J3Mgc3VwcG9ydGVkLiBDdXJyZW50bHksIGl0IGlzIG5vdCBiZWNhdXNlIHRo
ZQotLy8gQmFzZUNoYW5uZWwgbW9kZWwgcmVsaWVzIG9uIHRoZXJlIGJlaW5nIGEgc2luZ2xlIFZv
aWNlQ2hhbm5lbCBhbmQKLS8vIFZpZGVvQ2hhbm5lbCwgYW5kIHRoZXNlIG9ubHkgc3VwcG9ydCBh
IHNpbmdsZSBzZXQgb2YgY29kZWNzL2V0Yy4gcGVyCi0vLyBzZW5kL3JlY2VpdmUgZGlyZWN0aW9u
LgotCi0vLyBUT0RPKGRlYWRiZWVmKTogRW5kLXRvLWVuZCB0ZXN0IGZvciBzaW11bGNhc3QsIG9u
Y2UgdGhhdCdzIHN1cHBvcnRlZCBieSB0aGlzCi0vLyBBUEkuCi0KLSNlbmRpZiAgLy8gaWYgIWRl
ZmluZWQoVEhSRUFEX1NBTklUSVpFUikKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRj
ZmFjdG9yeV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL29ydGMvb3J0Y2ZhY3RvcnlfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQwYWZiZDMyOGI2ZGZlMTc2YTY4ZTExYjIzMjNjODRlMzM1OTM4NTUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeV91bml0dGVzdC5jYwor
KysgL2Rldi9udWxsCkBAIC0xLDI1MCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
Ci0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5j
bHVkZSA8bWVtb3J5PgotCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlv
X2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9h
dWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2VtZWRpYWVu
Z2luZS5oIgotI2luY2x1ZGUgIm9ydGMvb3J0Y2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJvcnRjL3Rl
c3RydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAicDJwL2Jhc2UvZmFrZXBhY2tldHRyYW5zcG9y
dC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Zha2VuZXR3b3JrLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2UvZ3VuaXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmgiCi0K
LW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBUaGlzIHRlc3QgdXNlcyBhIHZpcnR1YWwgbmV0d29y
ayBhbmQgZmFrZSBtZWRpYSBlbmdpbmUsIGluIG9yZGVyIHRvIHRlc3QgdGhlCi0vLyBPcnRjRmFj
dG9yeSBhdCBvbmx5IGFuIEFQSSBsZXZlbC4gQW55IGVuZC10by1lbmQgdGVzdCBzaG91bGQgZ28g
aW4KLS8vIG9ydGNmYWN0b3J5X2ludGVncmF0aW9udGVzdC5jYyBpbnN0ZWFkLgotY2xhc3MgT3J0
Y0ZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgT3J0Y0Zh
Y3RvcnlUZXN0KCkKLSAgICAgIDogdGhyZWFkXygmdmlydHVhbF9zb2NrZXRfc2VydmVyXyksCi0g
ICAgICAgIGZha2VfcGFja2V0X3RyYW5zcG9ydF8oImZha2UgdHJhbnNwb3J0IikgewotICAgIG9y
dGNfZmFjdG9yeV8gPQotICAgICAgICBPcnRjRmFjdG9yeTo6Q3JlYXRlKCZ0aHJlYWRfLCBudWxs
cHRyLCAmZmFrZV9uZXR3b3JrX21hbmFnZXJfLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPigKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3IGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZSgpKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0
b3J5KCkpCi0gICAgICAgICAgICAuTW92ZVZhbHVlKCk7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAg
Ly8gVXNlcyBhIHNpbmdsZSBwcmUtbWFkZSBGYWtlUGFja2V0VHJhbnNwb3J0LCBzbyBzaG91bGRu
J3QgYmUgY2FsbGVkIHR3aWNlIGluCi0gIC8vIHRoZSBzYW1lIHRlc3QuCi0gIHN0ZDo6dW5pcXVl
X3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+Ci0gIENyZWF0ZVJ0cFRyYW5zcG9ydFdpdGhGYWtl
UGFja2V0VHJhbnNwb3J0KCkgewotICAgIHJldHVybiBvcnRjX2ZhY3RvcnlfCi0gICAgICAgIC0+
Q3JlYXRlUnRwVHJhbnNwb3J0KE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCAmZmFrZV9wYWNrZXRf
dHJhbnNwb3J0XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0
cikKLSAgICAgICAgLk1vdmVWYWx1ZSgpOwotICB9Ci0KLSAgcnRjOjpWaXJ0dWFsU29ja2V0U2Vy
dmVyIHZpcnR1YWxfc29ja2V0X3NlcnZlcl87Ci0gIHJ0Yzo6QXV0b1NvY2tldFNlcnZlclRocmVh
ZCB0aHJlYWRfOwotICBydGM6OkZha2VOZXR3b3JrTWFuYWdlciBmYWtlX25ldHdvcmtfbWFuYWdl
cl87Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBmYWtlX3BhY2tldF90cmFuc3BvcnRfOwot
ICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+IG9ydGNfZmFjdG9yeV87Ci19
OwotCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDYW5DcmVhdGVNdWx0aXBsZVJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJzKSB7Ci0gIGF1dG8gY29udHJvbGxlcl9yZXN1bHQxID0gb3J0Y19mYWN0b3J5
Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcigpOwotICBFWFBFQ1RfVFJVRShjb250cm9s
bGVyX3Jlc3VsdDEub2soKSk7Ci0gIGF1dG8gY29udHJvbGxlcl9yZXN1bHQyID0gb3J0Y19mYWN0
b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcigpOwotICBFWFBFQ1RfVFJVRShjb250
cm9sbGVyX3Jlc3VsdDEub2soKSk7Ci19Ci0KLS8vIFNpbXBsZSB0ZXN0IGZvciB0aGUgc3VjY2Vz
c2Z1bCBjYXNlcyBvZiBDcmVhdGVSdHBUcmFuc3BvcnQuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0
LCBDcmVhdGVSdHBUcmFuc3BvcnRXaXRoQW5kV2l0aG91dE11eCkgewotICBydGM6OkZha2VQYWNr
ZXRUcmFuc3BvcnQgcnRwKCJydHAiKTsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0Y3Ao
InJ0Y3AiKTsKLSAgLy8gV2l0aCBtdXhlZCBSVENQLgotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJz
IHBhcmFtZXRlcnMgPSBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKTsKLSAgYXV0byByZXN1bHQgPQot
ICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KHBhcmFtZXRlcnMsICZydHAs
IG51bGxwdHIsIG51bGxwdHIpOwotICBFWFBFQ1RfVFJVRShyZXN1bHQub2soKSk7Ci0gIHJlc3Vs
dC5Nb3ZlVmFsdWUoKS5yZXNldCgpOwotICAvLyBXaXRoIG5vbi1tdXhlZCBSVENQLgotICBwYXJh
bWV0ZXJzLnJ0Y3AubXV4ID0gZmFsc2U7Ci0gIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFRyYW5zcG9ydChwYXJhbWV0ZXJzLCAmcnRwLCAmcnRjcCwgbnVsbHB0cik7Ci0gIEVYUEVD
VF9UUlVFKHJlc3VsdC5vaygpKTsKLX0KLQotLy8gU2ltcGxlIHRlc3QgZm9yIHRoZSBzdWNjZXNz
ZnVsIGNhc2VzIG9mIENyZWF0ZVNydHBUcmFuc3BvcnQuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0
LCBDcmVhdGVTcnRwVHJhbnNwb3J0KSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBydHAo
InJ0cCIpOwotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRjcCgicnRjcCIpOwotICAvLyBX
aXRoIG11eGVkIFJUQ1AuCi0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1h
a2VSdGNwTXV4UGFyYW1ldGVycygpOwotICBhdXRvIHJlc3VsdCA9Ci0gICAgICBvcnRjX2ZhY3Rv
cnlfLT5DcmVhdGVTcnRwVHJhbnNwb3J0KHBhcmFtZXRlcnMsICZydHAsIG51bGxwdHIsIG51bGxw
dHIpOwotICBFWFBFQ1RfVFJVRShyZXN1bHQub2soKSk7Ci0gIHJlc3VsdC5Nb3ZlVmFsdWUoKS5y
ZXNldCgpOwotICAvLyBXaXRoIG5vbi1tdXhlZCBSVENQLgotICBwYXJhbWV0ZXJzLnJ0Y3AubXV4
ID0gZmFsc2U7Ci0gIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVNydHBUcmFuc3BvcnQo
cGFyYW1ldGVycywgJnJ0cCwgJnJ0Y3AsIG51bGxwdHIpOwotICBFWFBFQ1RfVFJVRShyZXN1bHQu
b2soKSk7Ci19Ci0KLS8vIElmIG5vIENOQU1FIGlzIHByb3ZpZGVkLCBvbmUgc2hvdWxkIGJlIGdl
bmVyYXRlZCBhbmQgcmV0dXJuZWQgYnkKLS8vIEdldFJ0cFBhcmFtZXRlcnMuCi1URVNUX0YoT3J0
Y0ZhY3RvcnlUZXN0LCBDcmVhdGVSdHBUcmFuc3BvcnRHZW5lcmF0ZXNDbmFtZSkgewotICBydGM6
OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRwKCJydHAiKTsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2Zh
Y3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCksICZydHAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsIG51bGxwdHIpOwotICBBU1NFUlRfVFJVRShyZXN1bHQub2soKSk7Ci0gIEVYUEVDVF9GQUxT
RShyZXN1bHQudmFsdWUoKS0+R2V0UGFyYW1ldGVycygpLnJ0Y3AuY25hbWUuZW1wdHkoKSk7Ci19
Ci0KLS8vIEV4dGVuc2lvbiBvZiB0aGUgYWJvdmUgdGVzdDsgbXVsdGlwbGUgdHJhbnNwb3J0cyBj
cmVhdGVkIGJ5IHRoZSBzYW1lIGZhY3RvcnkKLS8vIHNob3VsZCB1c2UgdGhlIHNhbWUgZ2VuZXJh
dGVkIENOQU1FLgotVEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgTXVsdGlwbGVSdHBUcmFuc3BvcnRz
VXNlU2FtZUdlbmVyYXRlZENuYW1lKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBwYWNr
ZXRfdHJhbnNwb3J0MSgiMSIpOwotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcGFja2V0X3Ry
YW5zcG9ydDIoIjIiKTsKLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gTWFr
ZVJ0Y3BNdXhQYXJhbWV0ZXJzKCk7Ci0gIC8vIFNhbml0eSBjaGVjay4KLSAgQVNTRVJUX1RSVUUo
cGFyYW1ldGVycy5ydGNwLmNuYW1lLmVtcHR5KCkpOwotICBhdXRvIHJlc3VsdCA9IG9ydGNfZmFj
dG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIHBhcmFtZXRlcnMsICZwYWNrZXRfdHJh
bnNwb3J0MSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIEFTU0VSVF9UUlVFKHJlc3VsdC5vaygpKTsK
LSAgYXV0byBydHBfdHJhbnNwb3J0MSA9IHJlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgcmVzdWx0ID0g
b3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KHBhcmFtZXRlcnMsICZwYWNrZXRfdHJh
bnNwb3J0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIpOwotICBBU1NFUlRfVFJVRShyZXN1bHQub2soKSk7Ci0gIGF1dG8gcnRw
X3RyYW5zcG9ydDIgPSByZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIFJ0Y3BQYXJhbWV0ZXJzIHBhcmFt
czEgPSBydHBfdHJhbnNwb3J0MS0+R2V0UGFyYW1ldGVycygpLnJ0Y3A7Ci0gIFJ0Y3BQYXJhbWV0
ZXJzIHBhcmFtczIgPSBydHBfdHJhbnNwb3J0Mi0+R2V0UGFyYW1ldGVycygpLnJ0Y3A7Ci0gIEVY
UEVDVF9GQUxTRShwYXJhbXMxLmNuYW1lLmVtcHR5KCkpOwotICBFWFBFQ1RfRVEocGFyYW1zMS5j
bmFtZSwgcGFyYW1zMi5jbmFtZSk7Ci19Ci0KLVRFU1RfRihPcnRjRmFjdG9yeVRlc3QsIENyZWF0
ZVJ0cFRyYW5zcG9ydFdpdGhOb1BhY2tldFRyYW5zcG9ydCkgewotICBhdXRvIHJlc3VsdCA9IG9y
dGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydChNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURf
UEFSQU1FVEVSLCByZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotfQotCi0vLyBJZiB0aGUgfG11eHwg
bWVtYmVyIG9mIHRoZSBSdGNwUGFyYW1ldGVycyBpcyBmYWxzZSwgYm90aCBhbiBSVFAgYW5kIFJU
Q1AKLS8vIHBhY2tldCB0cmFuc3BvcnQgYXJlIG5lZWRlZC4KLVRFU1RfRihPcnRjRmFjdG9yeVRl
c3QsIENyZWF0ZVJ0cFRyYW5zcG9ydFdpdGhNaXNzaW5nUnRjcFRyYW5zcG9ydCkgewotICBydGM6
OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRwKCJydHAiKTsKLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwotICBwYXJhbWV0ZXJzLnJ0Y3AubXV4ID0gZmFsc2U7Ci0gIGF1dG8gcmVz
dWx0ID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydChwYXJhbWV0ZXJz
LCAmcnRwLCBudWxscHRyLCBudWxscHRyKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5W
QUxJRF9QQVJBTUVURVIsIHJlc3VsdC5lcnJvcigpLnR5cGUoKSk7Ci19Ci0KLS8vIElmIHRoZSB8
bXV4fCBtZW1iZXIgb2YgdGhlIFJ0Y3BQYXJhbWV0ZXJzIGlzIHRydWUsIG9ubHkgYW4gUlRQIHBh
Y2tldAotLy8gdHJhbnNwb3J0IGlzIG5lY2Vzc2FyeS4gU28sIHBhc3NpbmcgaW4gYW4gUlRDUCB0
cmFuc3BvcnQgaXMgbW9zdCBsaWtlbHkKLS8vIGFuIGFjY2lkZW50LCBhbmQgdGh1cyBzaG91bGQg
YmUgdHJlYXRlZCBhcyBhbiBlcnJvci4KLVRFU1RfRihPcnRjRmFjdG9yeVRlc3QsIENyZWF0ZVJ0
cFRyYW5zcG9ydFdpdGhFeHRyYW5lb3VzUnRjcFRyYW5zcG9ydCkgewotICBydGM6OkZha2VQYWNr
ZXRUcmFuc3BvcnQgcnRwKCJydHAiKTsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0Y3Ao
InJ0Y3AiKTsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3Bv
cnQoTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCksICZydHAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZydGNwLCBudWxscHRyKTsKLSAgRVhQRUNUX0VR
KFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsIHJlc3VsdC5lcnJvcigpLnR5cGUoKSk7
Ci19Ci0KLS8vIEJhc2ljIHRlc3QgdGhhdCBDcmVhdGVVZHBUcmFuc3BvcnQgd29ya3Mgd2l0aCBB
Rl9JTkVUIGFuZCBBRl9JTkVUNi4KLVRFU1RfRihPcnRjRmFjdG9yeVRlc3QsIENyZWF0ZVVkcFRy
YW5zcG9ydCkgewotICBhdXRvIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVVkcFRyYW5z
cG9ydChBRl9JTkVUKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0Lm9rKCkpOwotICByZXN1bHQgPSBv
cnRjX2ZhY3RvcnlfLT5DcmVhdGVVZHBUcmFuc3BvcnQoQUZfSU5FVDYpOwotICBFWFBFQ1RfVFJV
RShyZXN1bHQub2soKSk7Ci19Ci0KLS8vIFRlc3QgQ3JlYXRlVWRwUG9ydCB3aXRoIHRoZSB8bWlu
X3BvcnR8IGFuZCB8bWF4X3BvcnR8IGFyZ3VtZW50cy4KLVRFU1RfRihPcnRjRmFjdG9yeVRlc3Qs
IENyZWF0ZVVkcFRyYW5zcG9ydFdpdGhQb3J0UmFuZ2UpIHsKLSAgYXV0byBzb2NrZXRfcmVzdWx0
MSA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVVkcFRyYW5zcG9ydChBRl9JTkVULCAyMDAwLCAyMDAy
KTsKLSAgQVNTRVJUX1RSVUUoc29ja2V0X3Jlc3VsdDEub2soKSk7Ci0gIEVYUEVDVF9FUSgyMDAw
LCBzb2NrZXRfcmVzdWx0MS52YWx1ZSgpLT5HZXRMb2NhbEFkZHJlc3MoKS5wb3J0KCkpOwotICBh
dXRvIHNvY2tldF9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlVWRwVHJhbnNwb3J0KEFG
X0lORVQsIDIwMDAsIDIwMDIpOwotICBBU1NFUlRfVFJVRShzb2NrZXRfcmVzdWx0Mi5vaygpKTsK
LSAgRVhQRUNUX0VRKDIwMDEsIHNvY2tldF9yZXN1bHQyLnZhbHVlKCktPkdldExvY2FsQWRkcmVz
cygpLnBvcnQoKSk7Ci0gIGF1dG8gc29ja2V0X3Jlc3VsdDMgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVVZHBUcmFuc3BvcnQoQUZfSU5FVCwgMjAwMCwgMjAwMik7Ci0gIEFTU0VSVF9UUlVFKHNvY2tl
dF9yZXN1bHQzLm9rKCkpOwotICBFWFBFQ1RfRVEoMjAwMiwgc29ja2V0X3Jlc3VsdDMudmFsdWUo
KS0+R2V0TG9jYWxBZGRyZXNzKCkucG9ydCgpKTsKLQotICAvLyBBbGwgc29ja2V0cyBpbiB0aGUg
cmFuZ2UgaGF2ZSBiZWVuIGV4aGF1c3RlZCwgc28gdGhlIG5leHQgY2FsbCBzaG91bGQKLSAgLy8g
ZmFpbC4KLSAgYXV0byBmYWlsZWRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlVWRwVHJh
bnNwb3J0KEFGX0lORVQsIDIwMDAsIDIwMDIpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpS
RVNPVVJDRV9FWEhBVVNURUQsIGZhaWxlZF9yZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotCi0gIC8v
IElmIG9uZSBzb2NrZXQgaXMgZGVzdHJveWVkLCB0aGF0IHBvcnQgc2hvdWxkIGJlIGZyZWVkIHVw
IGFnYWluLgotICBzb2NrZXRfcmVzdWx0Mi5Nb3ZlVmFsdWUoKS5yZXNldCgpOwotICBhdXRvIHNv
Y2tldF9yZXN1bHQ0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlVWRwVHJhbnNwb3J0KEFGX0lORVQs
IDIwMDAsIDIwMDIpOwotICBBU1NFUlRfVFJVRShzb2NrZXRfcmVzdWx0NC5vaygpKTsKLSAgRVhQ
RUNUX0VRKDIwMDEsIHNvY2tldF9yZXN1bHQ0LnZhbHVlKCktPkdldExvY2FsQWRkcmVzcygpLnBv
cnQoKSk7Ci19Ci0KLS8vIEJhc2ljIHRlc3QgdGhhdCBDcmVhdGVVZHBUcmFuc3BvcnQgd29ya3Mg
d2l0aCBBRl9JTkVUIGFuZCBBRl9JTkVUNi4KLVRFU1RfRihPcnRjRmFjdG9yeVRlc3QsIENyZWF0
ZVVkcFRyYW5zcG9ydFdpdGhJbnZhbGlkQWRkcmVzc0ZhbWlseSkgewotICBhdXRvIHJlc3VsdCA9
IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVVkcFRyYW5zcG9ydCgxMjM0NSk7Ci0gIEVYUEVDVF9FUShS
VENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCByZXN1bHQuZXJyb3IoKS50eXBlKCkpOwot
fQotCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVVZHBUcmFuc3BvcnRXaXRoSW52YWxp
ZFBvcnRSYW5nZSkgewotICBhdXRvIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVVkcFRy
YW5zcG9ydChBRl9JTkVULCAzMDAwLCAyMDAwKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6
SU5WQUxJRF9SQU5HRSwgcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLX0KLQotLy8gSnVzdCBzYW5p
dHkgY2hlY2sgdGhhdCBlYWNoICJHZXRDYXBhYmlsaXRpZXMiIG1ldGhvZCByZXR1cm5zIHNvbWUg
Y29kZWNzLgotVEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgR2V0U2VuZGVyQW5kUmVjZWl2ZXJDYXBh
YmlsaXRpZXMpIHsKLSAgUnRwQ2FwYWJpbGl0aWVzIGF1ZGlvX3NlbmRfY2FwcyA9Ci0gICAgICBv
cnRjX2ZhY3RvcnlfLT5HZXRSdHBTZW5kZXJDYXBhYmlsaXRpZXMoY3JpY2tldDo6TUVESUFfVFlQ
RV9BVURJTyk7Ci0gIEVYUEVDVF9HVChhdWRpb19zZW5kX2NhcHMuY29kZWNzLnNpemUoKSwgMHUp
OwotICBSdHBDYXBhYmlsaXRpZXMgdmlkZW9fc2VuZF9jYXBzID0KLSAgICAgIG9ydGNfZmFjdG9y
eV8tPkdldFJ0cFNlbmRlckNhcGFiaWxpdGllcyhjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPKTsK
LSAgRVhQRUNUX0dUKHZpZGVvX3NlbmRfY2Fwcy5jb2RlY3Muc2l6ZSgpLCAwdSk7Ci0gIFJ0cENh
cGFiaWxpdGllcyBhdWRpb19yZWNlaXZlX2NhcHMgPQotICAgICAgb3J0Y19mYWN0b3J5Xy0+R2V0
UnRwUmVjZWl2ZXJDYXBhYmlsaXRpZXMoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTyk7Ci0gIEVY
UEVDVF9HVChhdWRpb19yZWNlaXZlX2NhcHMuY29kZWNzLnNpemUoKSwgMHUpOwotICBSdHBDYXBh
YmlsaXRpZXMgdmlkZW9fcmVjZWl2ZV9jYXBzID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkdldFJ0
cFJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8pOwotICBFWFBF
Q1RfR1QodmlkZW9fcmVjZWl2ZV9jYXBzLmNvZGVjcy5zaXplKCksIDB1KTsKLX0KLQotLy8gQ2Fs
bGluZyBDcmVhdGVSdHBTZW5kZXIgd2l0aCBhIG51bGwgdHJhY2sgc2hvdWxkIGZhaWwsIHNpbmNl
IHRoYXQgbWFrZXMgaXQKLS8vIGltcG9zc2libGUgdG8ga25vdyB3aGV0aGVyIHRvIGNyZWF0ZSBh
biBhdWRpbyBvciB2aWRlbyBzZW5kZXIuIFRoZQotLy8gYXBwbGljYXRpb24gc2hvdWxkIGJlIHVz
aW5nIHRoZSBtZXRob2QgdGhhdCB0YWtlcyBhIGNyaWNrZXQ6Ok1lZGlhVHlwZQotLy8gaW5zdGVh
ZC4KLVRFU1RfRihPcnRjRmFjdG9yeVRlc3QsIENyZWF0ZVNlbmRlcldpdGhOdWxsVHJhY2spIHsK
LSAgYXV0byBydHBfdHJhbnNwb3J0ID0gQ3JlYXRlUnRwVHJhbnNwb3J0V2l0aEZha2VQYWNrZXRU
cmFuc3BvcnQoKTsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5k
ZXIobnVsbHB0ciwgcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5
cGU6OklOVkFMSURfUEFSQU1FVEVSLCByZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotfQotCi0vLyBD
YWxsaW5nIENyZWF0ZVJ0cFNlbmRlciBvciBDcmVhdGVSdHBSZWNlaXZlciB3aXRoIE1FRElBX1RZ
UEVfREFUQSBzaG91bGQKLS8vIGZhaWwuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVT
ZW5kZXJPclJlY2VpZXZlcldpdGhJbnZhbGlkS2luZCkgewotICBhdXRvIHJ0cF90cmFuc3BvcnQg
PSBDcmVhdGVSdHBUcmFuc3BvcnRXaXRoRmFrZVBhY2tldFRyYW5zcG9ydCgpOwotICBhdXRvIHNl
bmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoY3JpY2tldDo6TUVE
SUFfVFlQRV9EQVRBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5
cGU6OklOVkFMSURfUEFSQU1FVEVSLCBzZW5kZXJfcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLSAg
YXV0byByZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigK
LSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQSwgcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0g
IEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCByZWNlaXZlcl9yZXN1
bHQuZXJyb3IoKS50eXBlKCkpOwotfQotCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVT
ZW5kZXJzT3JSZWNlaWV2ZXJzV2l0aE51bGxUcmFuc3BvcnQpIHsKLSAgYXV0byBzZW5kZXJfcmVz
dWx0ID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcihjcmlja2V0OjpNRURJ
QV9UWVBFX0FVRElPLCBudWxscHRyKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJ
RF9QQVJBTUVURVIsIHNlbmRlcl9yZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotICBhdXRvIHJlY2Vp
dmVyX3Jlc3VsdCA9Ci0gICAgICBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcihjcmlj
a2V0OjpNRURJQV9UWVBFX0FVRElPLCBudWxscHRyKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlw
ZTo6SU5WQUxJRF9QQVJBTUVURVIsIHJlY2VpdmVyX3Jlc3VsdC5lcnJvcigpLnR5cGUoKSk7Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRw
cmVjZWl2ZXJfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZTky
Mzg3MTQ1ZWFjNjRhOWY2ZDgwOGYyNGVmYWZhOWZlYTM1ZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSw1NTAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9y
eT4KLQotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2Zh
Y3RvcnkuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rl
cl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKLSNp
bmNsdWRlICJvcnRjL29ydGNmYWN0b3J5LmgiCi0jaW5jbHVkZSAib3J0Yy90ZXN0cnRwcGFyYW1l
dGVycy5oIgotI2luY2x1ZGUgInAycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaCIKLSNpbmNs
dWRlICJwYy90ZXN0L2Zha2V2aWRlb3RyYWNrc291cmNlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
Z3VuaXQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFRoaXMgdGVzdCB1c2VzIGFuIGlu
ZGl2aWR1YWwgUnRwUmVjZWl2ZXIgdXNpbmcgb25seSB0aGUgcHVibGljIGludGVyZmFjZSwKLS8v
IGFuZCB2ZXJpZmllcyB0aGF0IGl0IGJlaGF2ZXMgYXMgZGVzaWduZWQgYXQgYW4gQVBJIGxldmVs
LiBBbHNvIHRlc3RzIHRoYXQKLS8vIHBhcmFtZXRlcnMgYXJlIGFwcGxpZWQgdG8gdGhlIGF1ZGlv
L3ZpZGVvIGVuZ2luZXMgYXMgZXhwZWN0ZWQuIE5ldHdvcmsgYW5kCi0vLyBtZWRpYSBpbnRlcmZh
Y2VzIGFyZSBmYWtlZCB0byBpc29sYXRlIHdoYXQncyBiZWluZyB0ZXN0ZWQuCi0vLwotLy8gVGhp
cyB0ZXN0IHNob3VsZG4ndCByZXN1bHQgYW55IGFueSBhY3R1YWwgbWVkaWEgYmVpbmcgc2VudC4g
VGhhdCBzb3J0IG9mCi0vLyB0ZXN0IHNob3VsZCBnbyBpbiBvcnRjZmFjdG9yeV9pbnRlZ3JhdGlv
bnRlc3QuY2MuCi1jbGFzcyBPcnRjUnRwUmVjZWl2ZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotIHB1YmxpYzoKLSAgT3J0Y1J0cFJlY2VpdmVyVGVzdCgpIDogZmFrZV9wYWNrZXRfdHJh
bnNwb3J0XygiZmFrZSIpIHsKLSAgICBmYWtlX21lZGlhX2VuZ2luZV8gPSBuZXcgY3JpY2tldDo6
RmFrZU1lZGlhRW5naW5lKCk7Ci0gICAgLy8gTm90ZTogVGhpcyBkb2Vzbid0IG5lZWQgdG8gdXNl
IGZha2UgbmV0d29yayBjbGFzc2VzLCBzaW5jZSB3ZSBhbHJlYWR5Ci0gICAgLy8gdXNlIEZha2VQ
YWNrZXRUcmFuc3BvcnQuCi0gICAgYXV0byBvcnRjX2ZhY3RvcnlfcmVzdWx0ID0gT3J0Y0ZhY3Rv
cnk6OkNyZWF0ZSgKLSAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50
ZXJmYWNlPihmYWtlX21lZGlhX2VuZ2luZV8pLAotICAgICAgICBDcmVhdGVCdWlsdGluQXVkaW9F
bmNvZGVyRmFjdG9yeSgpLCBDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpKTsKLSAg
ICBvcnRjX2ZhY3RvcnlfID0gb3J0Y19mYWN0b3J5X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgICBS
dHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5ydGNwLm11
eCA9IHRydWU7Ci0gICAgYXV0byBydHBfdHJhbnNwb3J0X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8t
PkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgICAgcGFyYW1ldGVycywgJmZha2VfcGFja2V0X3Ry
YW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIpOwotICAgIHJ0cF90cmFuc3BvcnRfID0gcnRwX3Ry
YW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgLy8gT3du
ZWQgYnkgfG9ydGNfZmFjdG9yeV98LgotICBjcmlja2V0OjpGYWtlTWVkaWFFbmdpbmUqIGZha2Vf
bWVkaWFfZW5naW5lXzsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IGZha2VfcGFja2V0X3Ry
YW5zcG9ydF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4gb3J0Y19m
YWN0b3J5XzsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVyZmFjZT4gcnRwX3Ry
YW5zcG9ydF87Ci19OwotCi0vLyBTZWUgb3J0Y3J0cHJlY2VpdmVyaW50ZXJmYWNlLmggZm9yIHRo
ZSBjdXJyZW50IGV4cGVjdGF0aW9ucyBvZiB3aGF0IEdldFRyYWNrCi0vLyB3aWxsIHJldHVybiBh
ZnRlciBjYWxscyB0byBSZWNlaXZlLgotLy8gVE9ETyhkZWFkYmVlZik6IFJlcGxhY2UgdGhpcyB0
ZXN0IHdoZW4gdGhlIG5vbi1zdGFuZGFyZCBiZWhhdmlvciBpcyBmaXhlZAotLy8gYW5kIEdldFRy
YWNrIHN0YXJ0cyByZXR1cm5pbmcgdGhlIHNhbWUgdHJhY2sgZm9yIHRoZSBsaWZldGltZSBvZiB0
aGUKLS8vIHJlY2VpdmVyLgotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIEdldFRyYWNrKSB7
Ci0gIGF1dG8gcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2
ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQo
KSk7Ci0gIEFTU0VSVF9UUlVFKHJlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLSAgYXV0byByZWNlaXZl
ciA9IHJlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAvLyBUcmFjayBpbml0aWFsbHkg
ZXhwZWN0ZWQgdG8gYmUgbnVsbC4KLSAgRVhQRUNUX0VRKG51bGxwdHIsIHJlY2VpdmVyX3Jlc3Vs
dC52YWx1ZSgpLmdldCgpKTsKLQotICBFWFBFQ1RfVFJVRShyZWNlaXZlci0+UmVjZWl2ZShNYWtl
TWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoTm9Tc3JjKCkpLm9rKCkpOwotICBhdXRvIGluaXRpYWxf
dHJhY2sgPSByZWNlaXZlci0+R2V0VHJhY2soKTsKLSAgRVhQRUNUX05FKG51bGxwdHIsIGluaXRp
YWxfdHJhY2spOwotCi0gIC8vIENvZGVjIGNoYW5naW5nIGJ1dCBTU1JDIChvciBsYWNrIHRoZXJl
b2YpIGlzbid0OyBzaG91bGRuJ3QgY3JlYXRlIG5ldyB0cmFjawotICBFWFBFQ1RfVFJVRShyZWNl
aXZlci0+UmVjZWl2ZShNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnNXaXRoTm9Tc3JjKCkpLm9rKCkp
OwotICBFWFBFQ1RfRVEoaW5pdGlhbF90cmFjaywgcmVjZWl2ZXItPkdldFRyYWNrKCkpOwotCi0g
IC8vIEV4cGxpY2l0bHkgc2V0IFNTUkMgYW5kIGV4cGVjdCBhIGRpZmZlcmVudCB0cmFjay4KLSAg
RVhQRUNUX1RSVUUoCi0gICAgICByZWNlaXZlci0+UmVjZWl2ZShNYWtlTWluaW1hbFZwOVBhcmFt
ZXRlcnNXaXRoU3NyYygweGRlYWRiZWVmKSkub2soKSk7Ci0gIGF1dG8gbmV4dF90cmFjayA9IHJl
Y2VpdmVyLT5HZXRUcmFjaygpOwotICBFWFBFQ1RfTkUobmV4dF90cmFjaywgaW5pdGlhbF90cmFj
ayk7Ci0KLSAgLy8gRGVhY3RpdmF0aW5nIHRoZSBlbmNvZGluZyBzaG91bGRuJ3QgY2hhbmdlIHRo
ZSB0cmFjay4KLSAgUnRwUGFyYW1ldGVycyBpbmFjdGl2ZV9lbmNvZGluZyA9Ci0gICAgICBNYWtl
TWluaW1hbFZwOVBhcmFtZXRlcnNXaXRoU3NyYygweGRlYWRiZWVmKTsKLSAgaW5hY3RpdmVfZW5j
b2RpbmcuZW5jb2RpbmdzWzBdLmFjdGl2ZSA9IGZhbHNlOwotICBFWFBFQ1RfVFJVRShyZWNlaXZl
ci0+UmVjZWl2ZShpbmFjdGl2ZV9lbmNvZGluZykub2soKSk7Ci0gIEVYUEVDVF9FUShuZXh0X3Ry
YWNrLCByZWNlaXZlci0+R2V0VHJhY2soKSk7Ci0KLSAgLy8gUmVtb3ZpbmcgYWxsIGVuY29kaW5n
cyAqaXMqIGV4cGVjdGVkIHRvIGNsZWFyIHRoZSB0cmFjay4KLSAgUnRwUGFyYW1ldGVycyBub19l
bmNvZGluZ3MgPSBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnNXaXRoU3NyYygweGRlYWRiZWVmKTsK
LSAgbm9fZW5jb2RpbmdzLmVuY29kaW5ncy5jbGVhcigpOwotICBFWFBFQ1RfVFJVRShyZWNlaXZl
ci0+UmVjZWl2ZShub19lbmNvZGluZ3MpLm9rKCkpOwotICBFWFBFQ1RfRVEobnVsbHB0ciwgcmVj
ZWl2ZXItPkdldFRyYWNrKCkpOwotfQotCi0vLyBDdXJyZW50bHkgU2V0VHJhbnNwb3J0IGlzbid0
IHN1cHBvcnRlZC4gV2hlbiBpdCBpcywgcmVwbGFjZSB0aGlzIHRlc3Qgd2l0aCBhCi0vLyB0ZXN0
L3Rlc3RzIGZvciBpdC4KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBTZXRUcmFuc3BvcnRG
YWlscykgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRfdHJhbnNwb3J0
KCJhbm90aGVyX3RyYW5zcG9ydCIpOwotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7Ci0gIHBhcmFtZXRlcnMucnRjcC5tdXggPSB0cnVlOwotICBhdXRvIHJ0cF90cmFuc3BvcnRf
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgcGFyYW1l
dGVycywgJmZha2VfcGFja2V0X3RyYW5zcG9ydCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIGF1dG8g
cnRwX3RyYW5zcG9ydCA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIGF1
dG8gcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0g
ICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0g
IGF1dG8gcmVjZWl2ZXIgPSByZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9F
UShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgIHJlY2Vp
dmVyLT5TZXRUcmFuc3BvcnQocnRwX3RyYW5zcG9ydC5nZXQoKSkudHlwZSgpKTsKLX0KLQotVEVT
VF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIEdldFRyYW5zcG9ydCkgewotICBhdXRvIHJlc3VsdCA9
IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVE
SU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRw
X3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfRVEocnRwX3RyYW5zcG9ydF8uZ2V0KCksIHJl
c3VsdC52YWx1ZSgpLT5HZXRUcmFuc3BvcnQoKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCAiUmVjZWl2
ZSIgY2F1c2VzIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIG1l
ZGlhCi0vLyBlbmdpbmUgbGV2ZWwsIGZvciBhbiBhdWRpbyByZWNlaXZlci4KLVRFU1RfRihPcnRj
UnRwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlQXBwbGllc0F1ZGlvUGFyYW1ldGVyc1RvTWVkaWFFbmdp
bmUpIHsKLSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFu
c3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9IGF1ZGlvX3JlY2VpdmVyX3Jl
c3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAvLyBGaXJzdCwgY3JlYXRlIHBhcmFtZXRlcnMgd2l0aCBh
bGwgdGhlIGJlbGxzIGFuZCB3aGlzdGxlcy4KLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwot
Ci0gIFJ0cENvZGVjUGFyYW1ldGVycyBvcHVzX2NvZGVjOwotICBvcHVzX2NvZGVjLm5hbWUgPSAi
b3B1cyI7Ci0gIG9wdXNfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87Ci0g
IG9wdXNfY29kZWMucGF5bG9hZF90eXBlID0gMTIwOwotICBvcHVzX2NvZGVjLmNsb2NrX3JhdGUu
ZW1wbGFjZSg0ODAwMCk7Ci0gIG9wdXNfY29kZWMubnVtX2NoYW5uZWxzLmVtcGxhY2UoMik7Ci0g
IG9wdXNfY29kZWMucGFyYW1ldGVyc1sibWlucHRpbWUiXSA9ICIxMCI7Ci0gIG9wdXNfY29kZWMu
cnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6VFJBTlNQT1JUX0ND
KTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShvcHVzX2NvZGVjKSk7
Ci0KLSAgLy8gQWRkIHR3byBjb2RlY3MsIGV4cGVjdGluZyB0aGUgZmlyc3QgdG8gYmUgdXNlZC4K
LSAgLy8gVE9ETyhkZWFkYmVlZik6IE9uY2UgImNvZGVjX3BheWxvYWRfdHlwZSIgaXMgc3VwcG9y
dGVkLCB1c2UgaXQgdG8gc2VsZWN0IGEKLSAgLy8gY29kZWMgdGhhdCdzIG5vdCBhdCB0aGUgdG9w
IG9mIHRoZSBsaXN0LgotICBSdHBDb2RlY1BhcmFtZXRlcnMgaXNhY19jb2RlYzsKLSAgaXNhY19j
b2RlYy5uYW1lID0gIklTQUMiOwotICBpc2FjX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPOwotICBpc2FjX2NvZGVjLnBheWxvYWRfdHlwZSA9IDExMDsKLSAgaXNhY19jb2Rl
Yy5jbG9ja19yYXRlLmVtcGxhY2UoMTYwMDApOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2Jh
Y2soc3RkOjptb3ZlKGlzYWNfY29kZWMpKTsKLQotICBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgZW5j
b2Rpbmc7Ci0gIGVuY29kaW5nLnNzcmMuZW1wbGFjZSgweGRlYWRiZWVmKTsKLSAgcGFyYW1ldGVy
cy5lbmNvZGluZ3MucHVzaF9iYWNrKHN0ZDo6bW92ZShlbmNvZGluZykpOwotCi0gIHBhcmFtZXRl
cnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAotICAgICAgInVybjppZXRmOnBhcmFt
czpydHAtaGRyZXh0OnNzcmMtYXVkaW8tbGV2ZWwiLCAzKTsKLQotICBFWFBFQ1RfVFJVRShhdWRp
b19yZWNlaXZlci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5vaygpKTsKLQotICAvLyBOb3cgdmVyaWZ5
IHRoYXQgdGhlIHBhcmFtZXRlcnMgd2VyZSBhcHBsaWVkIHRvIHRoZSBmYWtlIG1lZGlhIGVuZ2lu
ZSBsYXllcgotICAvLyB0aGF0IGV4aXN0cyBiZWxvdyBCYXNlQ2hhbm5lbC4KLSAgY3JpY2tldDo6
RmFrZVZvaWNlTWVkaWFDaGFubmVsKiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9t
ZWRpYV9lbmdpbmVfLT5HZXRWb2ljZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBm
YWtlX3ZvaWNlX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnBs
YXlvdXQoKSk7Ci0KLSAgLy8gVmVyaWZ5IGNvZGVjIHBhcmFtZXRlcnMuCi0gIEFTU0VSVF9HVChm
YWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3ZfY29kZWNzKCkuc2l6ZSgpLCAwdSk7Ci0gIGNvbnN0IGNy
aWNrZXQ6OkF1ZGlvQ29kZWMmIHRvcF9jb2RlYyA9IGZha2Vfdm9pY2VfY2hhbm5lbC0+cmVjdl9j
b2RlY3MoKVswXTsKLSAgRVhQRUNUX0VRKCJvcHVzIiwgdG9wX2NvZGVjLm5hbWUpOwotICBFWFBF
Q1RfRVEoMTIwLCB0b3BfY29kZWMuaWQpOwotICBFWFBFQ1RfRVEoNDgwMDAsIHRvcF9jb2RlYy5j
bG9ja3JhdGUpOwotICBFWFBFQ1RfRVEoMnUsIHRvcF9jb2RlYy5jaGFubmVscyk7Ci0gIEFTU0VS
VF9ORSh0b3BfY29kZWMucGFyYW1zLmVuZCgpLCB0b3BfY29kZWMucGFyYW1zLmZpbmQoIm1pbnB0
aW1lIikpOwotICBFWFBFQ1RfRVEoIjEwIiwgdG9wX2NvZGVjLnBhcmFtcy5hdCgibWlucHRpbWUi
KSk7Ci0KLSAgLy8gVmVyaWZ5IGVuY29kaW5nIHBhcmFtZXRlcnMuCi0gIEFTU0VSVF9FUSgxdSwg
ZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2X3N0cmVhbXMoKS5zaXplKCkpOwotICBjb25zdCBjcmlj
a2V0OjpTdHJlYW1QYXJhbXMmIHJlY3Zfc3RyZWFtID0KLSAgICAgIGZha2Vfdm9pY2VfY2hhbm5l
bC0+cmVjdl9zdHJlYW1zKClbMF07Ci0gIEVYUEVDVF9FUSgxdSwgcmVjdl9zdHJlYW0uc3NyY3Mu
c2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDB4ZGVhZGJlZWYsIHJlY3Zfc3RyZWFtLmZpcnN0X3NzcmMo
KSk7Ci0KLSAgLy8gVmVyaWZ5IGhlYWRlciBleHRlbnNpb25zLgotICBBU1NFUlRfRVEoMXUsIGZh
a2Vfdm9pY2VfY2hhbm5lbC0+cmVjdl9leHRlbnNpb25zKCkuc2l6ZSgpKTsKLSAgY29uc3QgUnRw
RXh0ZW5zaW9uJiBleHRlbnNpb24gPSBmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3ZfZXh0ZW5zaW9u
cygpWzBdOwotICBFWFBFQ1RfRVEoInVybjppZXRmOnBhcmFtczpydHAtaGRyZXh0OnNzcmMtYXVk
aW8tbGV2ZWwiLCBleHRlbnNpb24udXJpKTsKLSAgRVhQRUNUX0VRKDMsIGV4dGVuc2lvbi5pZCk7
Ci19Ci0KLS8vIFRlc3QgdGhhdCAiUmVjZWl2ZSIgY2F1c2VzIHRoZSBleHBlY3RlZCBwYXJhbWV0
ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIG1lZGlhCi0vLyBlbmdpbmUgbGV2ZWwsIGZvciBhIHZp
ZGVvIHJlY2VpdmVyLgotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIFJlY2VpdmVBcHBsaWVz
VmlkZW9QYXJhbWV0ZXJzVG9NZWRpYUVuZ2luZSkgewotICBhdXRvIHZpZGVvX3JlY2VpdmVyX3Jl
c3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6
TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3Jl
Y2VpdmVyID0gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIC8vIEZpcnN0
LCBjcmVhdGUgcGFyYW1ldGVycyB3aXRoIGFsbCB0aGUgYmVsbHMgYW5kIHdoaXN0bGVzLgotICBS
dHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHZwOF9jb2Rl
YzsKLSAgdnA4X2NvZGVjLm5hbWUgPSAiVlA4IjsKLSAgdnA4X2NvZGVjLmtpbmQgPSBjcmlja2V0
OjpNRURJQV9UWVBFX1ZJREVPOwotICB2cDhfY29kZWMucGF5bG9hZF90eXBlID0gOTk7Ci0gIC8v
IFRyeSBhIGNvdXBsZSB0eXBlcyBvZiBmZWVkYmFjayBwYXJhbXMuICJHZW5lcmljIE5BQ0siIGlz
IGEgYml0IG9mIGEKLSAgLy8gc3BlY2lhbCBjYXNlLCBzbyB0ZXN0IGl0IGhlcmUuCi0gIHZwOF9j
b2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpDQ00sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNwRmVlZGJhY2tNZXNzYWdl
VHlwZTo6RklSKTsKLSAgdnA4X2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BG
ZWVkYmFja1R5cGU6Ok5BQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSdGNwRmVlZGJhY2tNZXNzYWdlVHlwZTo6R0VORVJJQ19OQUNLKTsKLSAgcGFyYW1ldGVycy5j
b2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZSh2cDhfY29kZWMpKTsKLQotICBSdHBDb2RlY1BhcmFt
ZXRlcnMgdnA4X3J0eF9jb2RlYzsKLSAgdnA4X3J0eF9jb2RlYy5uYW1lID0gInJ0eCI7Ci0gIHZw
OF9ydHhfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0gIHZwOF9ydHhf
Y29kZWMucGF5bG9hZF90eXBlID0gMTAwOwotICB2cDhfcnR4X2NvZGVjLnBhcmFtZXRlcnNbImFw
dCJdID0gIjk5IjsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZSh2cDhf
cnR4X2NvZGVjKSk7Ci0KLSAgLy8gQWRkIHR3byBjb2RlY3MsIGV4cGVjdGluZyB0aGUgZmlyc3Qg
dG8gYmUgdXNlZC4KLSAgLy8gVE9ETyhkZWFkYmVlZik6IE9uY2UgImNvZGVjX3BheWxvYWRfdHlw
ZSIgaXMgc3VwcG9ydGVkLCB1c2UgaXQgdG8gc2VsZWN0IGEKLSAgLy8gY29kZWMgdGhhdCdzIG5v
dCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0LgotICBSdHBDb2RlY1BhcmFtZXRlcnMgdnA5X2NvZGVj
OwotICB2cDlfY29kZWMubmFtZSA9ICJWUDkiOwotICB2cDlfY29kZWMua2luZCA9IGNyaWNrZXQ6
Ok1FRElBX1RZUEVfVklERU87Ci0gIHZwOV9jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMDI7Ci0gIHBh
cmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUodnA5X2NvZGVjKSk7Ci0KLSAgUnRw
Q29kZWNQYXJhbWV0ZXJzIHZwOV9ydHhfY29kZWM7Ci0gIHZwOV9ydHhfY29kZWMubmFtZSA9ICJy
dHgiOwotICB2cDlfcnR4X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwot
ICB2cDlfcnR4X2NvZGVjLnBheWxvYWRfdHlwZSA9IDEwMzsKLSAgdnA5X3J0eF9jb2RlYy5wYXJh
bWV0ZXJzWyJhcHQiXSA9ICIxMDIiOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3Rk
Ojptb3ZlKHZwOV9ydHhfY29kZWMpKTsKLQotICBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgZW5jb2Rp
bmc7Ci0gIGVuY29kaW5nLnNzcmMuZW1wbGFjZSgweGRlYWRiZWVmKTsKLSAgZW5jb2RpbmcucnR4
LmVtcGxhY2UoMHhiYWFkZmVlZCk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1c2hfYmFjayhz
dGQ6Om1vdmUoZW5jb2RpbmcpKTsKLQotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVt
cGxhY2VfYmFjaygidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iLCA0KTsKLSAgcGFyYW1ldGVy
cy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soCi0gICAgICAiaHR0cDovL3d3dy53ZWJy
dGMub3JnL2V4cGVyaW1lbnRzL3J0cC1oZHJleHQvcGxheW91dC1kZWxheSIsIDYpOwotCi0gIEVY
UEVDVF9UUlVFKHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKHBhcmFtZXRlcnMpLm9rKCkpOwotCi0g
IC8vIE5vdyB2ZXJpZnkgdGhhdCB0aGUgcGFyYW1ldGVycyB3ZXJlIGFwcGxpZWQgdG8gdGhlIGZh
a2UgbWVkaWEgZW5naW5lIGxheWVyCi0gIC8vIHRoYXQgZXhpc3RzIGJlbG93IEJhc2VDaGFubmVs
LgotICBjcmlja2V0OjpGYWtlVmlkZW9NZWRpYUNoYW5uZWwqIGZha2VfdmlkZW9fY2hhbm5lbCA9
Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZpZGVvQ2hhbm5lbCgwKTsKLSAgQVNTRVJU
X05FKG51bGxwdHIsIGZha2VfdmlkZW9fY2hhbm5lbCk7Ci0KLSAgLy8gVmVyaWZ5IGNvZGVjIHBh
cmFtZXRlcnMuCi0gIEFTU0VSVF9HRShmYWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3ZfY29kZWNzKCku
c2l6ZSgpLCAydSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29kZWMmIHRvcF9jb2RlYyA9IGZh
a2VfdmlkZW9fY2hhbm5lbC0+cmVjdl9jb2RlY3MoKVswXTsKLSAgRVhQRUNUX0VRKCJWUDgiLCB0
b3BfY29kZWMubmFtZSk7Ci0gIEVYUEVDVF9FUSg5OSwgdG9wX2NvZGVjLmlkKTsKLSAgRVhQRUNU
X1RSVUUodG9wX2NvZGVjLmZlZWRiYWNrX3BhcmFtcy5IYXMoeyJjY20iLCAiZmlyIn0pKTsKLSAg
RVhQRUNUX1RSVUUodG9wX2NvZGVjLmZlZWRiYWNrX3BhcmFtcy5IYXMoY3JpY2tldDo6RmVlZGJh
Y2tQYXJhbSgibmFjayIpKSk7Ci0KLSAgY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyYgcnR4X2Nv
ZGVjID0gZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X2NvZGVjcygpWzFdOwotICBFWFBFQ1RfRVEo
InJ0eCIsIHJ0eF9jb2RlYy5uYW1lKTsKLSAgRVhQRUNUX0VRKDEwMCwgcnR4X2NvZGVjLmlkKTsK
LSAgQVNTRVJUX05FKHJ0eF9jb2RlYy5wYXJhbXMuZW5kKCksIHJ0eF9jb2RlYy5wYXJhbXMuZmlu
ZCgiYXB0IikpOwotICBFWFBFQ1RfRVEoIjk5IiwgcnR4X2NvZGVjLnBhcmFtcy5hdCgiYXB0Iikp
OwotCi0gIC8vIFZlcmlmeSBlbmNvZGluZyBwYXJhbWV0ZXJzLgotICBBU1NFUlRfRVEoMXUsIGZh
a2VfdmlkZW9fY2hhbm5lbC0+cmVjdl9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAgY29uc3QgY3JpY2tl
dDo6U3RyZWFtUGFyYW1zJiByZWN2X3N0cmVhbSA9Ci0gICAgICBmYWtlX3ZpZGVvX2NoYW5uZWwt
PnJlY3Zfc3RyZWFtcygpWzBdOwotICBFWFBFQ1RfRVEoMnUsIHJlY3Zfc3RyZWFtLnNzcmNzLnNp
emUoKSk7Ci0gIEVYUEVDVF9FUSgweGRlYWRiZWVmLCByZWN2X3N0cmVhbS5maXJzdF9zc3JjKCkp
OwotICB1aW50MzJfdCBydHhfc3NyYyA9IDB1OwotICBFWFBFQ1RfVFJVRShyZWN2X3N0cmVhbS5H
ZXRGaWRTc3JjKHJlY3Zfc3RyZWFtLmZpcnN0X3NzcmMoKSwgJnJ0eF9zc3JjKSk7Ci0gIEVYUEVD
VF9FUSgweGJhYWRmZWVkLCBydHhfc3NyYyk7Ci0KLSAgLy8gVmVyaWZ5IGhlYWRlciBleHRlbnNp
b25zLgotICBBU1NFUlRfRVEoMnUsIGZha2VfdmlkZW9fY2hhbm5lbC0+cmVjdl9leHRlbnNpb25z
KCkuc2l6ZSgpKTsKLSAgY29uc3QgUnRwRXh0ZW5zaW9uJiBleHRlbnNpb24xID0gZmFrZV92aWRl
b19jaGFubmVsLT5yZWN2X2V4dGVuc2lvbnMoKVswXTsKLSAgRVhQRUNUX0VRKCJ1cm46M2dwcDp2
aWRlby1vcmllbnRhdGlvbiIsIGV4dGVuc2lvbjEudXJpKTsKLSAgRVhQRUNUX0VRKDQsIGV4dGVu
c2lvbjEuaWQpOwotICBjb25zdCBSdHBFeHRlbnNpb24mIGV4dGVuc2lvbjIgPSBmYWtlX3ZpZGVv
X2NoYW5uZWwtPnJlY3ZfZXh0ZW5zaW9ucygpWzFdOwotICBFWFBFQ1RfRVEoImh0dHA6Ly93d3cu
d2VicnRjLm9yZy9leHBlcmltZW50cy9ydHAtaGRyZXh0L3BsYXlvdXQtZGVsYXkiLAotICAgICAg
ICAgICAgZXh0ZW5zaW9uMi51cmkpOwotICBFWFBFQ1RfRVEoNiwgZXh0ZW5zaW9uMi5pZCk7Ci19
Ci0KLS8vIFRlc3QgY2hhbmdpbmcgYm90aCB0aGUgcmVjZWl2ZSBjb2RlYyBhbmQgU1NSQyBhdCB0
aGUgc2FtZSB0aW1lLCBhbmQgdmVyaWZ5Ci0vLyB0aGF0IHRoZSBuZXcgcGFyYW1ldGVycyBhcmUg
YXBwbGllZCB0byB0aGUgbWVkaWEgZW5naW5lIGxldmVsLgotVEVTVF9GKE9ydGNSdHBSZWNlaXZl
clRlc3QsIENhbGxpbmdSZWNlaXZlVHdpY2VDaGFuZ2VzUGFyYW1ldGVycykgewotICBhdXRvIGF1
ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAot
ICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwot
ICBhdXRvIGF1ZGlvX3JlY2VpdmVyID0gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgp
OwotICBSVENFcnJvciBlcnJvciA9Ci0gICAgICBhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShNYWtl
TWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aFNzcmMoMHgxMTExMTExMSkpOwotICBFWFBFQ1RfVFJV
RShlcnJvci5vaygpKTsKLSAgZXJyb3IgPQotICAgICAgYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUo
TWFrZU1pbmltYWxJc2FjUGFyYW1ldGVyc1dpdGhTc3JjKDB4MjIyMjIyMjIpKTsKLSAgRVhQRUNU
X1RSVUUoZXJyb3Iub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZvaWNlTWVkaWFDaGFubmVsKiBm
YWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWb2ljZUNo
YW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZvaWNlX2NoYW5uZWwpOwotICBB
U1NFUlRfR1QoZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2X2NvZGVjcygpLnNpemUoKSwgMHUpOwot
ICBFWFBFQ1RfRVEoIklTQUMiLCBmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3ZfY29kZWNzKClbMF0u
bmFtZSk7Ci0gIEFTU0VSVF9FUSgxdSwgZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2X3N0cmVhbXMo
KS5zaXplKCkpOwotICBFWFBFQ1RfRVEoMHgyMjIyMjIyMnUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+
cmVjdl9zdHJlYW1zKClbMF0uZmlyc3Rfc3NyYygpKTsKLQotICBhdXRvIHZpZGVvX3JlY2VpdmVy
X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tl
dDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVv
X3JlY2VpdmVyID0gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBlcnJvciA9
IHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVyc1dpdGhTc3Jj
KDB4MzMzMzMzMzMpKTsKLSAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0gIGVycm9yID0gdmlk
ZW9fcmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0aFNzcmMoMHg0
NDQ0NDQ0NCkpOwotICBFWFBFQ1RfVFJVRShlcnJvci5vaygpKTsKLQotICBjcmlja2V0OjpGYWtl
VmlkZW9NZWRpYUNoYW5uZWwqIGZha2VfdmlkZW9fY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlh
X2VuZ2luZV8tPkdldFZpZGVvQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2Vf
dmlkZW9fY2hhbm5lbCk7Ci0gIEFTU0VSVF9HVChmYWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3ZfY29k
ZWNzKCkuc2l6ZSgpLCAwdSk7Ci0gIEVYUEVDVF9FUSgiVlA5IiwgZmFrZV92aWRlb19jaGFubmVs
LT5yZWN2X2NvZGVjcygpWzBdLm5hbWUpOwotICBBU1NFUlRfRVEoMXUsIGZha2VfdmlkZW9fY2hh
bm5lbC0+cmVjdl9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDB4NDQ0NDQ0NDR1LCBm
YWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpWzBdLmZpcnN0X3NzcmMoKSk7Ci19Ci0K
LS8vIEVuc3VyZSB0aGF0IGlmIHRoZSB8YWN0aXZlfCBmbGFnIG9mIFJ0cEVuY29kaW5nUGFyYW1l
dGVycyBpcyBzZXQgdG8gZmFsc2UsCi0vLyBwbGF5b3V0IHN0b3BzIGF0IHRoZSBtZWRpYSBlbmdp
bmUgbGV2ZWwuIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgYXBwbGljYWJsZQotLy8gdG8gYXVkaW8g
KGF0IGxlYXN0IGN1cnJlbnRseSkuCi1URVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVzdCwgRGVhY3Rp
dmF0aW5nRW5jb2RpbmdTdG9wc1BsYXlvdXQpIHsKLSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1
bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNl
aXZlciA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgUnRwUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJV
RShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5vaygpKTsKLQotICAvLyBFeHBl
Y3QgInBsYXlvdXQiIGZsYWcgdG8gaW5pdGlhbGx5IGJlIHRydWUuCi0gIGNyaWNrZXQ6OkZha2VW
b2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFf
ZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92
b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92b2ljZV9jaGFubmVsLT5wbGF5b3V0
KCkpOwotCi0gIC8vIERlYWN0aXZhdGUgZW5jb2RpbmcgYW5kIGV4cGVjdCBpdCB0byBjaGFuZ2Ug
dG8gZmFsc2UuCi0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLmFjdGl2ZSA9IGZhbHNlOwotICBF
WFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5vaygpKTsKLSAg
RVhQRUNUX0ZBTFNFKGZha2Vfdm9pY2VfY2hhbm5lbC0+cGxheW91dCgpKTsKLX0KLQotLy8gRW5z
dXJlIHRoYXQgY2FsbGluZyBSZWNlaXZlIHdpdGggYW4gZW1wdHkgbGlzdCBvZiBlbmNvZGluZ3Mg
Y2F1c2VzIHJlY2VpdmUKLS8vIHN0cmVhbXMgYXQgdGhlIG1lZGlhIGVuZ2luZSBsZXZlbCB0byBi
ZSBjbGVhcmVkLgotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsCi0gICAgICAgQ2FsbGluZ1Jl
Y2VpdmVXaXRoRW1wdHlFbmNvZGluZ3NDbGVhcnNSZWNlaXZlU3RyZWFtcykgewotICBhdXRvIGF1
ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAot
ICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwot
ICBhdXRvIGF1ZGlvX3JlY2VpdmVyID0gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgp
OwotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJz
KCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVyLT5SZWNlaXZlKHBhcmFtZXRlcnMpLm9r
KCkpOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5jbGVhcigpOwotICBFWFBFQ1RfVFJVRShhdWRp
b19yZWNlaXZlci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5vaygpKTsKLQotICBjcmlja2V0OjpGYWtl
Vm9pY2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2VfY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlh
X2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2Vf
dm9pY2VfY2hhbm5lbCk7Ci0gIEVYUEVDVF9UUlVFKGZha2Vfdm9pY2VfY2hhbm5lbC0+cmVjdl9z
dHJlYW1zKCkuZW1wdHkoKSk7Ci0KLSAgYXV0byB2aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRj
X2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVf
VklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19yZWNlaXZlciA9IHZp
ZGVvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgcGFyYW1ldGVycyA9IE1ha2VNaW5p
bWFsVnA4UGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZlci0+UmVjZWl2
ZShwYXJhbWV0ZXJzKS5vaygpKTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3MuY2xlYXIoKTsKLSAg
RVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUocGFyYW1ldGVycykub2soKSk7Ci0K
LSAgY3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQot
ICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9O
RShudWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVv
X2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpLmVtcHR5KCkpOwotfQotCi0vLyBUaGVzZSBlcnJvcnMg
c2hvdWxkIGJlIGNvdmVyZWQgYnkgcnRwcGFyYW1ldGVyc2NvbnZlcnNpb25fdW5pdHRlc3QuY2Ms
IGJ1dAotLy8gd2Ugc2hvdWxkIGF0IGxlYXN0IHRlc3QgdGhhdCB0aG9zZSBlcnJvcnMgYXJlIHBy
b3BvZ2F0ZWQgZnJvbSBjYWxscyB0bwotLy8gUmVjZWl2ZSwgd2l0aCBhIGZldyBleGFtcGxlcy4K
LVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlUmV0dXJuc0Vycm9yT25JbnZhbGlk
UGFyYW1ldGVycykgewotICBhdXRvIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJl
Y2VpdmVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRv
IHJlY2VpdmVyID0gcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICAvLyBDQ00gZmVlZGJhY2sgbWlzc2lu
ZyBtZXNzYWdlIHR5cGUuCi0gIFJ0cFBhcmFtZXRlcnMgaW52YWxpZF9mZWVkYmFjayA9IE1ha2VN
aW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgaW52YWxpZF9mZWVkYmFjay5jb2RlY3NbMF0ucnRj
cF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6Q0NNKTsKLSAgRVhQRUNU
X0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICByZWNlaXZl
ci0+UmVjZWl2ZShpbnZhbGlkX2ZlZWRiYWNrKS50eXBlKCkpOwotICAvLyBQYXlsb2FkIHR5cGUg
Z3JlYXRlciB0aGFuIDEyNy4KLSAgUnRwUGFyYW1ldGVycyBpbnZhbGlkX3B0ID0gTWFrZU1pbmlt
YWxPcHVzUGFyYW1ldGVycygpOwotICBpbnZhbGlkX3B0LmNvZGVjc1swXS5wYXlsb2FkX3R5cGUg
PSAxMjg7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUkFOR0UsIHJlY2VpdmVy
LT5SZWNlaXZlKGludmFsaWRfcHQpLnR5cGUoKSk7Ci0gIC8vIER1cGxpY2F0ZSBoZWFkZXIgZXh0
ZW5zaW9uIElEcy4KLSAgUnRwUGFyYW1ldGVycyBkdXBsaWNhdGVfaWRzID0gTWFrZU1pbmltYWxP
cHVzUGFyYW1ldGVycygpOwotICBkdXBsaWNhdGVfaWRzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxh
Y2VfYmFjaygiZm9vIiwgNSk7Ci0gIGR1cGxpY2F0ZV9pZHMuaGVhZGVyX2V4dGVuc2lvbnMuZW1w
bGFjZV9iYWNrKCJiYXIiLCA1KTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9Q
QVJBTUVURVIsCi0gICAgICAgICAgICByZWNlaXZlci0+UmVjZWl2ZShkdXBsaWNhdGVfaWRzKS50
eXBlKCkpOwotfQotCi0vLyBUd28gcmVjZWl2ZXJzIHVzaW5nIHRoZSBzYW1lIHRyYW5zcG9ydCBz
aG91bGRuJ3QgYmUgYWJsZSB0byB1c2UgdGhlIHNhbWUKLS8vIHBheWxvYWQgdHlwZSB0byByZWZl
ciB0byBkaWZmZXJlbnQgY29kZWNzLCBzYW1lIGhlYWRlciBleHRlbnNpb24gSURzIHRvCi0vLyBy
ZWZlciB0byBkaWZmZXJlbnQgZXh0ZW5zaW9ucywgb3Igc2FtZSBTU1JDLgotVEVTVF9GKE9ydGNS
dHBSZWNlaXZlclRlc3QsIFJlY2VpdmVSZXR1cm5zRXJyb3JPbklkQ29uZmxpY3RzKSB7Ci0gIGF1
dG8gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2
ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQo
KSk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNw
b3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXIgPSBhdWRpb19yZWNlaXZlcl9yZXN1
bHQuTW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXIgPSB2aWRlb19yZWNlaXZlcl9y
ZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gRmlyc3QgdGVzdCBwYXlsb2FkIHR5cGUgY29uZmxp
Y3QuCi0gIFJ0cFBhcmFtZXRlcnMgYXVkaW9fcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsT3B1c1Bh
cmFtZXRlcnMoKTsKLSAgUnRwUGFyYW1ldGVycyB2aWRlb19wYXJhbWV0ZXJzID0gTWFrZU1pbmlt
YWxWcDhQYXJhbWV0ZXJzKCk7Ci0gIGF1ZGlvX3BhcmFtZXRlcnMuY29kZWNzWzBdLnBheWxvYWRf
dHlwZSA9IDEwMDsKLSAgdmlkZW9fcGFyYW1ldGVycy5jb2RlY3NbMF0ucGF5bG9hZF90eXBlID0g
MTAwOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShhdWRpb19wYXJhbWV0
ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIs
Ci0gICAgICAgICAgICB2aWRlb19yZWNlaXZlci0+UmVjZWl2ZSh2aWRlb19wYXJhbWV0ZXJzKS50
eXBlKCkpOwotCi0gIC8vIFRlc3QgaGVhZGVyIGV4dGVuc2lvbiBJRCBjb25mbGljdC4KLSAgdmlk
ZW9fcGFyYW1ldGVycy5jb2RlY3NbMF0ucGF5bG9hZF90eXBlID0gMTEwOwotICBhdWRpb19wYXJh
bWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygiZm9vIiwgNCk7Ci0gIHZpZGVv
X3BhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKCJiYXIiLCA0KTsKLSAg
RVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUoYXVkaW9fcGFyYW1ldGVycykub2so
KSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAg
ICAgICAgdmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUodmlkZW9fcGFyYW1ldGVycykudHlwZSgpKTsK
LQotICAvLyBUZXN0IFNTUkMgY29uZmxpY3QuIEhhdmUgYW4gUlRYIFNTUkMgdGhhdCBjb25mbGlj
dHMgd2l0aCBhIHByaW1hcnkgU1NSQwotICAvLyBmb3IgZXh0cmEgY2hhbGxlbmdlLgotICB2aWRl
b19wYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zWzBdLnVyaSA9ICJmb28iOwotICBhdWRpb19w
YXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjLmVtcGxhY2UoMHhhYmJhYWJiYSk7Ci0gIGF1ZGlv
X3BhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnJ0eC5lbXBsYWNlKDB4ZGVhZGJlZWYpOwotICB2aWRl
b19wYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjLmVtcGxhY2UoMHhkZWFkYmVlZik7Ci0gIEVY
UEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVyLT5SZWNlaXZlKGF1ZGlvX3BhcmFtZXRlcnMpLm9rKCkp
OwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAg
ICAgIHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKHZpZGVvX3BhcmFtZXRlcnMpLnR5cGUoKSk7Ci0K
LSAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgcGFyYW1ldGVycyBjYW4gYmUgc2V0IGlmIHRoZSBjb25m
bGljdHMgYXJlIGFsbCByZXNvbHZlZC4KLSAgdmlkZW9fcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0u
c3NyYy5lbXBsYWNlKDB4YmFhZGYwMGQpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZlci0+
UmVjZWl2ZSh2aWRlb19wYXJhbWV0ZXJzKS5vaygpKTsKLX0KLQotLy8gRW5zdXJlIHRoYXQgZGVs
ZXRpbmcgYSByZWNlaXZlciBjYXVzZXMgcmVjZWl2ZSBzdHJlYW1zIGF0IHRoZSBtZWRpYSBlbmdp
bmUKLS8vIGxldmVsIHRvIGJlIGNsZWFyZWQuCi1URVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVzdCwg
RGVsZXRpbmdSZWNlaXZlckNsZWFyc1JlY2VpdmVTdHJlYW1zKSB7Ci0gIGF1dG8gYXVkaW9fcmVj
ZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBj
cmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8g
YXVkaW9fcmVjZWl2ZXIgPSBhdWRpb19yZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVY
UEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVyLT5SZWNlaXZlKE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRl
cnMoKSkub2soKSk7Ci0KLSAgLy8gQWxzbyBjcmVhdGUgYW4gYXVkaW8gc2VuZGVyLCB0byBwcmV2
ZW50IHRoZSB2b2ljZSBjaGFubmVsIGZyb20gYmVpbmcKLSAgLy8gY29tcGxldGVseSBkZWxldGVk
LgotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBT
ZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5n
ZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFs
dWUoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsT3B1c1Bh
cmFtZXRlcnMoKSkub2soKSk7Ci0KLSAgYXVkaW9fcmVjZWl2ZXIucmVzZXQobnVsbHB0cik7Ci0g
IGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0KLSAg
ICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRfTkUo
bnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92b2ljZV9j
aGFubmVsLT5yZWN2X3N0cmVhbXMoKS5lbXB0eSgpKTsKLQotICBhdXRvIHZpZGVvX3JlY2VpdmVy
X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tl
dDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVv
X3JlY2VpdmVyID0gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1Rf
VFJVRSh2aWRlb19yZWNlaXZlci0+UmVjZWl2ZShNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKSku
b2soKSk7Ci0KLSAgLy8gQWxzbyBjcmVhdGUgYW4gdmlkZW8gc2VuZGVyLCB0byBwcmV2ZW50IHRo
ZSB2aWRlbyBjaGFubmVsIGZyb20gYmVpbmcKLSAgLy8gY29tcGxldGVseSBkZWxldGVkLgotICBh
dXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIo
Ci0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7
Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsK
LSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVy
cygpKS5vaygpKTsKLQotICB2aWRlb19yZWNlaXZlci5yZXNldChudWxscHRyKTsKLSAgY3JpY2tl
dDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAgICAgZmFr
ZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRy
LCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVvX2NoYW5uZWwt
PnJlY3Zfc3RyZWFtcygpLmVtcHR5KCkpOwotfQotCi0vLyBJZiBSZWNlaXZlIGhhc24ndCBiZWVu
IGNhbGxlZCwgR2V0UGFyYW1ldGVycyBzaG91bGQgcmV0dXJuIGVtcHR5IHBhcmFtZXRlcnMuCi1U
RVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVzdCwgR2V0RGVmYXVsdFBhcmFtZXRlcnMpIHsKLSAgYXV0
byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcihjcmlja2V0OjpNRURJ
QV9UWVBFX0FVRElPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgRVhQRUNUX0VRKFJ0cFBhcmFtZXRlcnMo
KSwgcmVzdWx0LnZhbHVlKCktPkdldFBhcmFtZXRlcnMoKSk7Ci0gIHJlc3VsdCA9IG9ydGNfZmFj
dG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnRfLmdl
dCgpKTsKLSAgRVhQRUNUX0VRKFJ0cFBhcmFtZXRlcnMoKSwgcmVzdWx0LnZhbHVlKCktPkdldFBh
cmFtZXRlcnMoKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBHZXRQYXJhbWV0ZXJzIHJldHVybnMgdGhl
IGxhc3QgcGFyYW1ldGVycyBwYXNzZWQgaW50byBSZWNlaXZlLAotLy8gYWxvbmcgd2l0aCB0aGUg
aW1wbGVtZW50YXRpb24tZGVmYXVsdCB2YWx1ZXMgZmlsbGVkIGluIHdoZXJlIHRoZXkgd2VyZSBs
ZWZ0Ci0vLyB1bnNldC4KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LAotICAgICAgIEdldFBh
cmFtZXRlcnNSZXR1cm5zTGFzdFNldFBhcmFtZXRlcnNXaXRoRGVmYXVsdHNGaWxsZWQpIHsKLSAg
YXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNl
aXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdl
dCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5Nb3Zl
VmFsdWUoKTsKLQotICBSdHBQYXJhbWV0ZXJzIG9wdXNfcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFs
T3B1c1BhcmFtZXRlcnMoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUo
b3B1c19wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKG9wdXNfcGFyYW1ldGVycywgYXVk
aW9fcmVjZWl2ZXItPkdldFBhcmFtZXRlcnMoKSk7Ci0KLSAgUnRwUGFyYW1ldGVycyBpc2FjX3Bh
cmFtZXRlcnMgPSBNYWtlTWluaW1hbElzYWNQYXJhbWV0ZXJzKCk7Ci0gIC8vIFNhbml0eSBjaGVj
ayB0aGF0IG51bV9jaGFubmVscyBhY3R1YWxseSBpcyBsZWZ0IHVuc2V0LgotICBBU1NFUlRfRkFM
U0UoaXNhY19wYXJhbWV0ZXJzLmNvZGVjc1swXS5udW1fY2hhbm5lbHMpOwotICBFWFBFQ1RfVFJV
RShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShpc2FjX3BhcmFtZXRlcnMpLm9rKCkpOwotICAvLyBT
aG91bGQgYmUgZmlsbGVkIHdpdGggYSBkZWZhdWx0ICJudW0gY2hhbm5lbHMiIG9mIDEuCi0gIC8v
IFRPRE8oZGVhZGJlZWYpOiBUaGlzIHNob3VsZCBhY3R1YWxseSBkZWZhdWx0IHRvIDIgZm9yIHNv
bWUgY29kZWNzLiBVcGRhdGUKLSAgLy8gdGhpcyB0ZXN0IG9uY2UgdGhhdCdzIGltcGxlbWVudGVk
LgotICBpc2FjX3BhcmFtZXRlcnMuY29kZWNzWzBdLm51bV9jaGFubmVscy5lbXBsYWNlKDEpOwot
ICBFWFBFQ1RfRVEoaXNhY19wYXJhbWV0ZXJzLCBhdWRpb19yZWNlaXZlci0+R2V0UGFyYW1ldGVy
cygpKTsKLQotICBhdXRvIHZpZGVvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNy
ZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3Ry
YW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyID0gdmlkZW9fcmVjZWl2ZXJf
cmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIFJ0cFBhcmFtZXRlcnMgdnA4X3BhcmFtZXRlcnMgPSBN
YWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgY2xvY2tf
cmF0ZSBhY3R1YWxseSBpcyBsZWZ0IHVuc2V0LgotICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZl
ci0+UmVjZWl2ZSh2cDhfcGFyYW1ldGVycykub2soKSk7Ci0gIC8vIFNob3VsZCBiZSBmaWxsZWQg
d2l0aCBhIGRlZmF1bHQgY2xvY2sgcmF0ZSBvZiA5MDAwMC4KLSAgdnA4X3BhcmFtZXRlcnMuY29k
ZWNzWzBdLmNsb2NrX3JhdGUuZW1wbGFjZSg5MDAwMCk7Ci0gIEVYUEVDVF9FUSh2cDhfcGFyYW1l
dGVycywgdmlkZW9fcmVjZWl2ZXItPkdldFBhcmFtZXRlcnMoKSk7Ci0KLSAgUnRwUGFyYW1ldGVy
cyB2cDlfcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA5UGFyYW1ldGVycygpOwotICAvLyBTYW5p
dHkgY2hlY2sgdGhhdCBjbG9ja19yYXRlIGFjdHVhbGx5IGlzIGxlZnQgdW5zZXQuCi0gIEVYUEVD
VF9UUlVFKHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKHZwOV9wYXJhbWV0ZXJzKS5vaygpKTsKLSAg
Ly8gU2hvdWxkIGJlIGZpbGxlZCB3aXRoIGEgZGVmYXVsdCBjbG9jayByYXRlIG9mIDkwMDAwLgot
ICB2cDlfcGFyYW1ldGVycy5jb2RlY3NbMF0uY2xvY2tfcmF0ZS5lbXBsYWNlKDkwMDAwKTsKLSAg
RVhQRUNUX0VRKHZwOV9wYXJhbWV0ZXJzLCB2aWRlb19yZWNlaXZlci0+R2V0UGFyYW1ldGVycygp
KTsKLX0KLQotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIEdldEtpbmQpIHsKLSAgYXV0byBh
dWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigK
LSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsK
LSAgYXV0byB2aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBS
ZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRf
LmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5N
b3ZlVmFsdWUoKTsKLSAgYXV0byB2aWRlb19yZWNlaXZlciA9IHZpZGVvX3JlY2VpdmVyX3Jlc3Vs
dC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX0VRKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIGF1
ZGlvX3JlY2VpdmVyLT5HZXRLaW5kKCkpOwotICBFWFBFQ1RfRVEoY3JpY2tldDo6TUVESUFfVFlQ
RV9WSURFTywgdmlkZW9fcmVjZWl2ZXItPkdldEtpbmQoKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyYWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyYWRhcHRlci5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg5NDEyMjE3YWNjOGI1ZDBmYzg0ZWE2OWIz
NDRjYTczYjJmYWQwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNy
dHByZWNlaXZlcmFkYXB0ZXIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLyoK
LSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm9ydGMvb3J0Y3J0cHJlY2VpdmVyYWRhcHRlci5o
IgotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVj
dG9yPgotCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgotI2luY2x1ZGUg
Im9ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIgIC8vIEZvciAiQ3JlYXRlUmFuZG9tWCIu
Ci0KLW5hbWVzcGFjZSB7Ci0KLXZvaWQgRmlsbEF1ZGlvUmVjZWl2ZXJQYXJhbWV0ZXJzKHdlYnJ0
Yzo6UnRwUGFyYW1ldGVycyogcGFyYW1ldGVycykgewotICBmb3IgKHdlYnJ0Yzo6UnRwQ29kZWNQ
YXJhbWV0ZXJzJiBjb2RlYyA6IHBhcmFtZXRlcnMtPmNvZGVjcykgewotICAgIGlmICghY29kZWMu
bnVtX2NoYW5uZWxzKSB7Ci0gICAgICBjb2RlYy5udW1fY2hhbm5lbHMgPSAxOwotICAgIH0KLSAg
fQotfQotCi12b2lkIEZpbGxWaWRlb1JlY2VpdmVyUGFyYW1ldGVycyh3ZWJydGM6OlJ0cFBhcmFt
ZXRlcnMqIHBhcmFtZXRlcnMpIHsKLSAgZm9yICh3ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYg
Y29kZWMgOiBwYXJhbWV0ZXJzLT5jb2RlY3MpIHsKLSAgICBpZiAoIWNvZGVjLmNsb2NrX3JhdGUp
IHsKLSAgICAgIGNvZGVjLmNsb2NrX3JhdGUgPSBjcmlja2V0OjprVmlkZW9Db2RlY0Nsb2NrcmF0
ZTsKLSAgICB9Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLW5hbWVzcGFjZSB3ZWJydGMg
ewotCi1CRUdJTl9PV05FRF9QUk9YWV9NQVAoT3J0Y1J0cFJlY2VpdmVyKQotUFJPWFlfU0lHTkFM
SU5HX1RIUkVBRF9ERVNUUlVDVE9SKCkKLVBST1hZX0NPTlNUTUVUSE9EMChydGM6OnNjb3BlZF9y
ZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4sIEdldFRyYWNrKQotUFJPWFlfTUVUSE9E
MShSVENFcnJvciwgU2V0VHJhbnNwb3J0LCBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqKQotUFJPWFlf
Q09OU1RNRVRIT0QwKFJ0cFRyYW5zcG9ydEludGVyZmFjZSosIEdldFRyYW5zcG9ydCkKLVBST1hZ
X01FVEhPRDEoUlRDRXJyb3IsIFJlY2VpdmUsIGNvbnN0IFJ0cFBhcmFtZXRlcnMmKQotUFJPWFlf
Q09OU1RNRVRIT0QwKFJ0cFBhcmFtZXRlcnMsIEdldFBhcmFtZXRlcnMpCi1QUk9YWV9DT05TVE1F
VEhPRDAoY3JpY2tldDo6TWVkaWFUeXBlLCBHZXRLaW5kKQotRU5EX1BST1hZX01BUCgpCi0KLS8v
IHN0YXRpYwotc3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckludGVyZmFjZT4gT3J0Y1J0
cFJlY2VpdmVyQWRhcHRlcjo6Q3JlYXRlUHJveHkoCi0gICAgc3RkOjp1bmlxdWVfcHRyPE9ydGNS
dHBSZWNlaXZlckFkYXB0ZXI+IHdyYXBwZWRfcmVjZWl2ZXIpIHsKLSAgUlRDX0RDSEVDSyh3cmFw
cGVkX3JlY2VpdmVyKTsKLSAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZyA9Ci0gICAgICB3cmFwcGVk
X3JlY2VpdmVyLT5ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5zaWduYWxpbmdfdGhyZWFkKCk7
Ci0gIHJ0Yzo6VGhyZWFkKiB3b3JrZXIgPQotICAgICAgd3JhcHBlZF9yZWNlaXZlci0+cnRwX3Ry
YW5zcG9ydF9jb250cm9sbGVyXy0+d29ya2VyX3RocmVhZCgpOwotICByZXR1cm4gT3J0Y1J0cFJl
Y2VpdmVyUHJveHk6OkNyZWF0ZShzaWduYWxpbmcsIHdvcmtlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHdyYXBwZWRfcmVjZWl2ZXIpKTsKLX0KLQot
T3J0Y1J0cFJlY2VpdmVyQWRhcHRlcjo6fk9ydGNSdHBSZWNlaXZlckFkYXB0ZXIoKSB7Ci0gIGlu
dGVybmFsX3JlY2VpdmVyXyA9IG51bGxwdHI7Ci0gIFNpZ25hbERlc3Ryb3llZCgpOwotfQotCi1y
dGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4gT3J0Y1J0cFJlY2Vp
dmVyQWRhcHRlcjo6R2V0VHJhY2soKQotICAgIGNvbnN0IHsKLSAgcmV0dXJuIGludGVybmFsX3Jl
Y2VpdmVyXyA/IGludGVybmFsX3JlY2VpdmVyXy0+dHJhY2soKSA6IG51bGxwdHI7Ci19Ci0KLVJU
Q0Vycm9yIE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI6OlNldFRyYW5zcG9ydCgKLSAgICBSdHBUcmFu
c3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgewotICBMT0dfQU5EX1JFVFVSTl9FUlJPUigKLSAg
ICAgIFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgIkNoYW5naW5n
IHRoZSB0cmFuc3BvcnQgb2YgYW4gUnRwUmVjZWl2ZXIgaXMgbm90IHlldCBzdXBwb3J0ZWQuIik7
Ci19Ci0KLVJ0cFRyYW5zcG9ydEludGVyZmFjZSogT3J0Y1J0cFJlY2VpdmVyQWRhcHRlcjo6R2V0
VHJhbnNwb3J0KCkgY29uc3QgewotICByZXR1cm4gdHJhbnNwb3J0XzsKLX0KLQotUlRDRXJyb3Ig
T3J0Y1J0cFJlY2VpdmVyQWRhcHRlcjo6UmVjZWl2ZShjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgZmlsbGVkX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJz
OwotICBSVENFcnJvciBlcnI7Ci0gIHN3aXRjaCAoa2luZF8pIHsKLSAgICBjYXNlIGNyaWNrZXQ6
Ok1FRElBX1RZUEVfQVVESU86Ci0gICAgICBGaWxsQXVkaW9SZWNlaXZlclBhcmFtZXRlcnMoJmZp
bGxlZF9wYXJhbWV0ZXJzKTsKLSAgICAgIGVyciA9IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8t
PlZhbGlkYXRlQW5kQXBwbHlBdWRpb1JlY2VpdmVyUGFyYW1ldGVycygKLSAgICAgICAgICBmaWxs
ZWRfcGFyYW1ldGVycyk7Ci0gICAgICBpZiAoIWVyci5vaygpKSB7Ci0gICAgICAgIHJldHVybiBl
cnI7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVf
VklERU86Ci0gICAgICBGaWxsVmlkZW9SZWNlaXZlclBhcmFtZXRlcnMoJmZpbGxlZF9wYXJhbWV0
ZXJzKTsKLSAgICAgIGVyciA9IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPlZhbGlkYXRlQW5k
QXBwbHlWaWRlb1JlY2VpdmVyUGFyYW1ldGVycygKLSAgICAgICAgICBmaWxsZWRfcGFyYW1ldGVy
cyk7Ci0gICAgICBpZiAoIWVyci5vaygpKSB7Ci0gICAgICAgIHJldHVybiBlcnI7Ci0gICAgICB9
Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQToKLSAgICAg
IFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgICByZXR1cm4gd2VicnRjOjpSVENFcnJvcih3ZWJydGM6
OlJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IpOwotICB9Ci0gIGxhc3RfYXBwbGllZF9wYXJh
bWV0ZXJzXyA9IGZpbGxlZF9wYXJhbWV0ZXJzOwotCi0gIC8vIE5vdyB0aGF0IHBhcmFtZXRlcnMg
d2VyZSBhcHBsaWVkLCBjYW4gY3JlYXRlIChvciByZWNyZWF0ZSkgdGhlIGludGVybmFsCi0gIC8v
IHJlY2VpdmVyLgotICAvLwotICAvLyBUaGlzIGlzIGFuYWxvZ291cyB0byBhIFBlZXJDb25uZWN0
aW9uIGNyZWF0aW5nIGEgcmVjZWl2ZXIgYWZ0ZXIKLSAgLy8gU2V0UmVtb3RlRGVzY3JpcHRpb24g
aXMgc3VjY2Vzc2Z1bC4KLSAgTWF5YmVSZWNyZWF0ZUludGVybmFsUmVjZWl2ZXIoKTsKLSAgcmV0
dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1SdHBQYXJhbWV0ZXJzIE9ydGNSdHBSZWNlaXZlckFk
YXB0ZXI6OkdldFBhcmFtZXRlcnMoKSBjb25zdCB7Ci0gIHJldHVybiBsYXN0X2FwcGxpZWRfcGFy
YW1ldGVyc187Ci19Ci0KLWNyaWNrZXQ6Ok1lZGlhVHlwZSBPcnRjUnRwUmVjZWl2ZXJBZGFwdGVy
OjpHZXRLaW5kKCkgY29uc3QgewotICByZXR1cm4ga2luZF87Ci19Ci0KLU9ydGNSdHBSZWNlaXZl
ckFkYXB0ZXI6Ok9ydGNSdHBSZWNlaXZlckFkYXB0ZXIoCi0gICAgY3JpY2tldDo6TWVkaWFUeXBl
IGtpbmQsCi0gICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAgUnRwVHJh
bnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcikKLSAgICA6
IGtpbmRfKGtpbmQpLAotICAgICAgdHJhbnNwb3J0Xyh0cmFuc3BvcnQpLAotICAgICAgcnRwX3Ry
YW5zcG9ydF9jb250cm9sbGVyXyhydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIpIHt9Ci0KLXZvaWQg
T3J0Y1J0cFJlY2VpdmVyQWRhcHRlcjo6TWF5YmVSZWNyZWF0ZUludGVybmFsUmVjZWl2ZXIoKSB7
Ci0gIGlmIChsYXN0X2FwcGxpZWRfcGFyYW1ldGVyc18uZW5jb2RpbmdzLmVtcHR5KCkpIHsKLSAg
ICBpbnRlcm5hbF9yZWNlaXZlcl8gPSBudWxscHRyOwotICAgIHJldHVybjsKLSAgfQotICAvLyBB
biBTU1JDIG9mIDAgaXMgdmFsaWQ7IHRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSAidGhlIGRlZmF1
bHQgU1NSQyIgKHdoaWNoCi0gIC8vIGlzIHRoZSBmaXJzdCBvbmUgc2VlbiBieSB0aGUgdW5kZXJs
eWluZyBtZWRpYSBlbmdpbmUpLgotICB1aW50MzJfdCBzc3JjID0gMDsKLSAgaWYgKGxhc3RfYXBw
bGllZF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3NbMF0uc3NyYykgewotICAgIHNzcmMgPSAqbGFzdF9h
cHBsaWVkX3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5zc3JjOwotICB9Ci0gIGlmIChpbnRlcm5h
bF9yZWNlaXZlcl8gJiYgc3NyYyA9PSBpbnRlcm5hbF9yZWNlaXZlcl8tPnNzcmMoKSkgewotICAg
IC8vIFNTUkMgbm90IGNoYW5naW5nOyBub3RoaW5nIHRvIGRvLgotICAgIHJldHVybjsKLSAgfQot
ICBpbnRlcm5hbF9yZWNlaXZlcl8gPSBudWxscHRyOwotICBzd2l0Y2ggKGtpbmRfKSB7Ci0gICAg
Y2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOiB7Ci0gICAgICBhdXRvKiBhdWRpb19yZWNl
aXZlciA9IG5ldyBBdWRpb1J0cFJlY2VpdmVyKAotICAgICAgICAgIHJ0cF90cmFuc3BvcnRfY29u
dHJvbGxlcl8tPndvcmtlcl90aHJlYWQoKSwgcnRjOjpDcmVhdGVSYW5kb21VdWlkKCksCi0gICAg
ICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KHt9KSk7Ci0gICAgICBhdXRvKiB2b2ljZV9j
aGFubmVsID0gcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+dm9pY2VfY2hhbm5lbCgpOwotICAg
ICAgUlRDX0RDSEVDSyh2b2ljZV9jaGFubmVsKTsKLSAgICAgIGF1ZGlvX3JlY2VpdmVyLT5TZXRW
b2ljZU1lZGlhQ2hhbm5lbCh2b2ljZV9jaGFubmVsLT5tZWRpYV9jaGFubmVsKCkpOwotICAgICAg
aW50ZXJuYWxfcmVjZWl2ZXJfID0gYXVkaW9fcmVjZWl2ZXI7Ci0gICAgICBicmVhazsKLSAgICB9
Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOiB7Ci0gICAgICBhdXRvKiB2aWRl
b19yZWNlaXZlciA9IG5ldyBWaWRlb1J0cFJlY2VpdmVyKAotICAgICAgICAgIHJ0cF90cmFuc3Bv
cnRfY29udHJvbGxlcl8tPndvcmtlcl90aHJlYWQoKSwgcnRjOjpDcmVhdGVSYW5kb21VdWlkKCks
Ci0gICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KHt9KSk7Ci0gICAgICBhdXRvKiB2
aWRlb19jaGFubmVsID0gcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+dmlkZW9fY2hhbm5lbCgp
OwotICAgICAgUlRDX0RDSEVDSyh2aWRlb19jaGFubmVsKTsKLSAgICAgIHZpZGVvX3JlY2VpdmVy
LT5TZXRWaWRlb01lZGlhQ2hhbm5lbCh2aWRlb19jaGFubmVsLT5tZWRpYV9jaGFubmVsKCkpOwot
ICAgICAgaW50ZXJuYWxfcmVjZWl2ZXJfID0gdmlkZW9fcmVjZWl2ZXI7Ci0gICAgICBicmVhazsK
LSAgICB9Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEE6Ci0gICAgICBSVENfTk9U
UkVBQ0hFRCgpOwotICB9Ci0gIGludGVybmFsX3JlY2VpdmVyXy0+U2V0dXBNZWRpYUNoYW5uZWwo
c3NyYyk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyYWRh
cHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9v
cnRjcnRwcmVjZWl2ZXJhZGFwdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2
NDdiMDQzMTQ1YWRhZTRiMDJmODcyNzUxMzNjN2ViZWE1OWQzY2UuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJhZGFwdGVyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3OSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
Ci0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE9SVENfT1JU
Q1JUUFJFQ0VJVkVSQURBUFRFUl9IXwotI2RlZmluZSBPUlRDX09SVENSVFBSRUNFSVZFUkFEQVBU
RVJfSF8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgImFwaS9vcnRjL29ydGNydHBy
ZWNlaXZlcmludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgotI2luY2x1ZGUg
ImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRjb250cm9s
bGVyYWRhcHRlci5oIgotI2luY2x1ZGUgInBjL3J0cHJlY2VpdmVyLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5
L3NpZ3Nsb3Qvc2lnc2xvdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgotCi1uYW1l
c3BhY2Ugd2VicnRjIHsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgT3J0Y1J0cFJlY2VpdmVySW50
ZXJmYWNlIHRoYXQgd29ya3Mgd2l0aAotLy8gUnRwVHJhbnNwb3J0QWRhcHRlciwgYW5kIHdyYXBz
IGEgVmlkZW9SdHBSZWNlaXZlci9BdWRpb1J0cFJlY2VpdmVyIHRoYXQncwotLy8gbm9ybWFsbHkg
dXNlZCB3aXRoIHRoZSBQZWVyQ29ubmVjdGlvbi4KLS8vCi0vLyBUT0RPKGRlYWRiZWVmKTogV2hl
biBCYXNlQ2hhbm5lbCBpcyBzcGxpdCBhcGFydCBpbnRvIHNlcGFyYXRlCi0vLyAiUnRwUmVjZWl2
ZXIiLyJSdHBUcmFuc2NlaXZlciIvIlJ0cFJlY2VpdmVyIi8iUnRwUmVjZWl2ZXIiIG9iamVjdHMs
IHRoaXMKLS8vIGFkYXB0ZXIgb2JqZWN0IGNhbiBiZSByZW1vdmVkLgotY2xhc3MgT3J0Y1J0cFJl
Y2VpdmVyQWRhcHRlciA6IHB1YmxpYyBPcnRjUnRwUmVjZWl2ZXJJbnRlcmZhY2UgewotIHB1Ymxp
YzoKLSAgLy8gV3JhcHMgfHdyYXBwZWRfcmVjZWl2ZXJ8IGluIGEgcHJveHkgdGhhdCB3aWxsIHNh
ZmVseSBjYWxsIG1ldGhvZHMgb24gdGhlCi0gIC8vIGNvcnJlY3QgdGhyZWFkLgotICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckludGVyZmFjZT4gQ3JlYXRlUHJveHkoCi0g
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFJlY2VpdmVyQWRhcHRlcj4gd3JhcHBlZF9yZWNl
aXZlcik7Ci0KLSAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IFJ0cFRyYW5zcG9ydENvbnRy
b2xsZXJBZGFwdGVyLgotICBPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyKAotICAgICAgY3JpY2tldDo6
TWVkaWFUeXBlIGtpbmQsCi0gICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCwK
LSAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKiBydHBfdHJhbnNwb3J0X2NvbnRy
b2xsZXIpOwotICB+T3J0Y1J0cFJlY2VpdmVyQWRhcHRlcigpIG92ZXJyaWRlOwotCi0gIC8vIE9y
dGNSdHBSZWNlaXZlckludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4KLSAgcnRjOjpzY29wZWRfcmVm
cHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+IEdldFRyYWNrKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0KLSAgUlRDRXJyb3IgU2V0VHJhbnNwb3J0KFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNw
b3J0KSBvdmVycmlkZTsKLSAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBHZXRUcmFuc3BvcnQoKSBj
b25zdCBvdmVycmlkZTsKLQotICBSVENFcnJvciBSZWNlaXZlKGNvbnN0IFJ0cFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpIG92ZXJyaWRlOwotICBSdHBQYXJhbWV0ZXJzIEdldFBhcmFtZXRlcnMoKSBj
b25zdCBvdmVycmlkZTsKLQotICBjcmlja2V0OjpNZWRpYVR5cGUgR2V0S2luZCgpIGNvbnN0IG92
ZXJyaWRlOwotCi0gIC8vIFVzZWQgc28gdGhhdCB0aGUgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFk
YXB0ZXIga25vd3Mgd2hlbiBpdCBjYW4KLSAgLy8gZGVhbGxvY2F0ZSByZXNvdXJjZXMgYWxsb2Nh
dGVkIGZvciB0aGlzIG9iamVjdC4KLSAgc2lnc2xvdDo6c2lnbmFsMDw+IFNpZ25hbERlc3Ryb3ll
ZDsKLQotIHByaXZhdGU6Ci0gIHZvaWQgTWF5YmVSZWNyZWF0ZUludGVybmFsUmVjZWl2ZXIoKTsK
LQotICBjcmlja2V0OjpNZWRpYVR5cGUga2luZF87Ci0gIFJ0cFRyYW5zcG9ydEludGVyZmFjZSog
dHJhbnNwb3J0XzsKLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90cmFuc3Bv
cnRfY29udHJvbGxlcl87Ci0gIC8vIFNjb3BlZCByZWZwdHIgZHVlIHRvIHJlZi1jb3VudGVkIGlu
dGVyZmFjZSwgYnV0IHdlIHNob3VsZCBiZSB0aGUgb25seQotICAvLyByZWZlcmVuY2UgaG9sZGVy
LgotICBydGM6OnNjb3BlZF9yZWZwdHI8UnRwUmVjZWl2ZXJJbnRlcm5hbD4gaW50ZXJuYWxfcmVj
ZWl2ZXJfOwotICBSdHBQYXJhbWV0ZXJzIGxhc3RfYXBwbGllZF9wYXJhbWV0ZXJzXzsKLQotICBS
VENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKE9ydGNSdHBSZWNlaXZlckFkYXB0ZXIp
OwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE9SVENfT1JUQ1JU
UFJFQ0VJVkVSQURBUFRFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwc2VuZGVyX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwc2VuZGVyX3Vu
aXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGJkOGY5MzkzNDUzOGI1
MWFjOGYwNjJmZTA5MDdlNDAwMzEwNTJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L29ydGMvb3J0Y3J0cHNlbmRlcl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDY3MCAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgotI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIK
LSNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2VtZWRpYWVuZ2luZS5oIgotI2luY2x1ZGUgIm9ydGMv
b3J0Y2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJvcnRjL3Rlc3RydHBwYXJhbWV0ZXJzLmgiCi0jaW5j
bHVkZSAicDJwL2Jhc2UvZmFrZXBhY2tldHRyYW5zcG9ydC5oIgotI2luY2x1ZGUgInBjL3Rlc3Qv
ZmFrZXZpZGVvdHJhY2tzb3VyY2UuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgotCi1u
YW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVGhpcyB0ZXN0IHVzZXMgYW4gaW5kaXZpZHVhbCBSdHBT
ZW5kZXIgdXNpbmcgb25seSB0aGUgcHVibGljIGludGVyZmFjZSwgYW5kCi0vLyB2ZXJpZmllcyB0
aGF0IGl0cyBiZWhhdmVzIGFzIGRlc2lnbmVkIGF0IGFuIEFQSSBsZXZlbC4gQWxzbyB0ZXN0cyB0
aGF0Ci0vLyBwYXJhbWV0ZXJzIGFyZSBhcHBsaWVkIHRvIHRoZSBhdWRpby92aWRlbyBlbmdpbmVz
IGFzIGV4cGVjdGVkLiBOZXR3b3JrIGFuZAotLy8gbWVkaWEgaW50ZXJmYWNlcyBhcmUgZmFrZWQg
dG8gaXNvbGF0ZSB3aGF0J3MgYmVpbmcgdGVzdGVkLgotLy8KLS8vIFRoaXMgdGVzdCBzaG91bGRu
J3QgcmVzdWx0IGFueSBhbnkgYWN0dWFsIG1lZGlhIGJlaW5nIHNlbnQuIFRoYXQgc29ydCBvZgot
Ly8gdGVzdCBzaG91bGQgZ28gaW4gb3J0Y2ZhY3RvcnlfaW50ZWdyYXRpb250ZXN0LmNjLgotY2xh
c3MgT3J0Y1J0cFNlbmRlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOgot
ICBPcnRjUnRwU2VuZGVyVGVzdCgpIDogZmFrZV9wYWNrZXRfdHJhbnNwb3J0XygiZmFrZSIpIHsK
LSAgICAvLyBOZWVkIHRvIHNldCB0aGUgZmFrZSBwYWNrZXQgdHJhbnNwb3J0IHRvIHdyaXRhYmxl
LCBpbiBvcmRlciB0byB0ZXN0IHRoYXQKLSAgICAvLyB0aGUgInNlbmQiIGZsYWcgaXMgYXBwbGll
ZCB0byB0aGUgbWVkaWEgZW5naW5lIGJhc2VkIG9uIHRoZSBlbmNvZGluZwotICAgIC8vIHxhY3Rp
dmV8IGZsYWcuCi0gICAgZmFrZV9wYWNrZXRfdHJhbnNwb3J0Xy5TZXRXcml0YWJsZSh0cnVlKTsK
LSAgICBmYWtlX21lZGlhX2VuZ2luZV8gPSBuZXcgY3JpY2tldDo6RmFrZU1lZGlhRW5naW5lKCk7
Ci0gICAgLy8gTm90ZTogVGhpcyBkb2Vzbid0IG5lZWQgdG8gdXNlIGZha2UgbmV0d29yayBjbGFz
c2VzLCBzaW5jZSB3ZSBhbHJlYWR5Ci0gICAgLy8gdXNlIEZha2VQYWNrZXRUcmFuc3BvcnQuCi0g
ICAgYXV0byBvcnRjX2ZhY3RvcnlfcmVzdWx0ID0gT3J0Y0ZhY3Rvcnk6OkNyZWF0ZSgKLSAgICAg
ICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPihmYWtlX21lZGlh
X2VuZ2luZV8pLAotICAgICAgICBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLCBD
cmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpKTsKLSAgICBvcnRjX2ZhY3RvcnlfID0g
b3J0Y19mYWN0b3J5X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgICBSdHBUcmFuc3BvcnRQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5ydGNwLm11eCA9IHRydWU7Ci0gICAgYXV0
byBydHBfdHJhbnNwb3J0X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9y
dCgKLSAgICAgICAgcGFyYW1ldGVycywgJmZha2VfcGFja2V0X3RyYW5zcG9ydF8sIG51bGxwdHIs
IG51bGxwdHIpOwotICAgIHJ0cF90cmFuc3BvcnRfID0gcnRwX3RyYW5zcG9ydF9yZXN1bHQuTW92
ZVZhbHVlKCk7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
VHJhY2tJbnRlcmZhY2U+IENyZWF0ZUF1ZGlvVHJhY2soCi0gICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgaWQpIHsKLSAgICByZXR1cm4gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlQXVkaW9UcmFjayhpZCwg
bnVsbHB0cik7Ci0gIH0KLQotICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9UcmFja0ludGVyZmFj
ZT4gQ3JlYXRlVmlkZW9UcmFjaygKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCkgewotICAg
IHJldHVybiBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPigK
LSAgICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlVmlkZW9UcmFjayhpZCwgRmFrZVZpZGVvVHJh
Y2tTb3VyY2U6OkNyZWF0ZSgpKSk7Ci0gIH0KLQotICAvLyBPd25lZCBieSB8b3J0Y19mYWN0b3J5
X3wuCi0gIGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZSogZmFrZV9tZWRpYV9lbmdpbmVfOwotICBy
dGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRfdHJhbnNwb3J0XzsKLSAgc3RkOjp1
bmlxdWVfcHRyPE9ydGNGYWN0b3J5SW50ZXJmYWNlPiBvcnRjX2ZhY3RvcnlfOwotICBzdGQ6OnVu
aXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPiBydHBfdHJhbnNwb3J0XzsKLX07Ci0KLVRF
U1RfRihPcnRjUnRwU2VuZGVyVGVzdCwgR2V0QW5kU2V0VHJhY2spIHsKLSAgLy8gVGVzdCBHZXRU
cmFjayB3aXRoIGEgc2VuZGVyIGNvbnN0cnVjdGVkIHdpdGggYSB0cmFjay4KLSAgYXV0byBhdWRp
b190cmFjayA9IENyZWF0ZUF1ZGlvVHJhY2soImF1ZGlvIik7Ci0gIGF1dG8gYXVkaW9fc2VuZGVy
X3Jlc3VsdCA9Ci0gICAgICBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoYXVkaW9fdHJh
Y2ssIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19z
ZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfRVEoYXVkaW9fdHJhY2ssIGF1ZGlv
X3NlbmRlci0+R2V0VHJhY2soKSk7Ci0KLSAgLy8gVGVzdCBHZXRUcmFjayBhZnRlciBTZXRUcmFj
ay4KLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRw
U2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8u
Z2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZh
bHVlKCk7Ci0gIGF1dG8gdmlkZW9fdHJhY2sgPSBDcmVhdGVWaWRlb1RyYWNrKCJ2aWRlbzEiKTsK
LSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZXRUcmFjayh2aWRlb190cmFjaykub2soKSk7
Ci0gIEVYUEVDVF9FUSh2aWRlb190cmFjaywgdmlkZW9fc2VuZGVyLT5HZXRUcmFjaygpKTsKLSAg
dmlkZW9fdHJhY2sgPSBDcmVhdGVWaWRlb1RyYWNrKCJ2aWRlbzIiKTsKLSAgRVhQRUNUX1RSVUUo
dmlkZW9fc2VuZGVyLT5TZXRUcmFjayh2aWRlb190cmFjaykub2soKSk7Ci0gIEVYUEVDVF9FUSh2
aWRlb190cmFjaywgdmlkZW9fc2VuZGVyLT5HZXRUcmFjaygpKTsKLX0KLQotLy8gVGVzdCB0aGF0
IHRyYWNrIGNhbiBiZSBzZXQgd2hlbiBwcmV2aW91c2x5IHVuc2V0LCBldmVuIGFmdGVyIFNlbmQg
aGFzIGJlZW4KLS8vIGNhbGxlZC4KLVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwgU2V0VHJhY2tX
aGlsZVNlbmRpbmcpIHsKLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5
Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRw
X3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9y
ZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChNYWtl
TWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5k
ZXItPlNldFRyYWNrKENyZWF0ZUF1ZGlvVHJhY2soImF1ZGlvIikpLm9rKCkpOwotCi0gIGF1dG8g
dmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAg
ICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAg
YXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBF
WFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNlbmQoTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCkp
Lm9rKCkpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNldFRyYWNrKENyZWF0ZVZpZGVv
VHJhY2soInZpZGVvIikpLm9rKCkpOwotfQotCi0vLyBUZXN0IHRoYXQgdHJhY2sgY2FuIGJlIGNo
YW5nZWQgbWlkLXNlbmRpbmcuIERpZmZlcnMgZnJvbSB0aGUgYWJvdmUgdGVzdCBpbgotLy8gdGhh
dCB0aGUgdHJhY2sgaXMgc2V0IGFuZCBiZWluZyBjaGFuZ2VkLCByYXRoZXIgdGhhbiB1bnNldCBh
bmQgYmVpbmcgc2V0IGZvcgotLy8gdGhlIGZpcnN0IHRpbWUuCi1URVNUX0YoT3J0Y1J0cFNlbmRl
clRlc3QsIENoYW5nZVRyYWNrV2hpbGVTZW5kaW5nKSB7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jl
c3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIENyZWF0ZUF1ZGlv
VHJhY2soImF1ZGlvMSIpLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2Vu
ZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUoYXVk
aW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKSkub2soKSk7Ci0gIEVY
UEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2V0VHJhY2soQ3JlYXRlQXVkaW9UcmFjaygiYXVkaW8y
IikpLm9rKCkpOwotCi0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8t
PkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIENyZWF0ZVZpZGVvVHJhY2soInZpZGVvMSIpLCBydHBf
dHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jl
c3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZW5kKE1ha2VN
aW5pbWFsVnA4UGFyYW1ldGVycygpKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVy
LT5TZXRUcmFjayhDcmVhdGVWaWRlb1RyYWNrKCJ2aWRlbzIiKSkub2soKSk7Ci19Ci0KLS8vIFRl
c3QgdGhhdCB0cmFjayBjYW4gYmUgc2V0IHRvIG51bGwgd2hpbGUgc2VuZGluZy4KLVRFU1RfRihP
cnRjUnRwU2VuZGVyVGVzdCwgVW5zZXRUcmFja1doaWxlU2VuZGluZykgewotICBhdXRvIGF1ZGlv
X3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBD
cmVhdGVBdWRpb1RyYWNrKCJhdWRpbyIpLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8g
YXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNU
X1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKSkub2so
KSk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2V0VHJhY2sobnVsbHB0cikub2soKSk7
Ci0KLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRw
U2VuZGVyKAotICAgICAgQ3JlYXRlVmlkZW9UcmFjaygidmlkZW8iKSwgcnRwX3RyYW5zcG9ydF8u
Z2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZh
bHVlKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbFZwOFBh
cmFtZXRlcnMoKSkub2soKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2V0VHJhY2so
bnVsbHB0cikub2soKSk7Ci19Ci0KLS8vIFNob3VsZG4ndCBiZSBhYmxlIHRvIHNldCBhbiBhdWRp
byB0cmFjayBvbiBhIHZpZGVvIHNlbmRlciBvciB2aWNlIHZlcnNhLgotVEVTVF9GKE9ydGNSdHBT
ZW5kZXJUZXN0LCBTZXRUcmFja09mV3JvbmdLaW5kRmFpbHMpIHsKLSAgYXV0byBhdWRpb19zZW5k
ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tl
dDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlv
X3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9FUShS
VENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgYXVkaW9fc2VuZGVy
LT5TZXRUcmFjayhDcmVhdGVWaWRlb1RyYWNrKCJ2aWRlbyIpKS50eXBlKCkpOwotCi0gIGF1dG8g
dmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAg
ICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAg
YXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBF
WFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgIHZp
ZGVvX3NlbmRlci0+U2V0VHJhY2soQ3JlYXRlQXVkaW9UcmFjaygiYXVkaW8iKSkudHlwZSgpKTsK
LX0KLQotLy8gQ3VycmVudGx5IFNldFRyYW5zcG9ydCBpc24ndCBzdXBwb3J0ZWQuIFdoZW4gaXQg
aXMsIHJlcGxhY2UgdGhpcyB0ZXN0IHdpdGggYQotLy8gdGVzdC90ZXN0cyBmb3IgaXQuCi1URVNU
X0YoT3J0Y1J0cFNlbmRlclRlc3QsIFNldFRyYW5zcG9ydEZhaWxzKSB7Ci0gIHJ0Yzo6RmFrZVBh
Y2tldFRyYW5zcG9ydCBmYWtlX3BhY2tldF90cmFuc3BvcnQoImFub3RoZXJfdHJhbnNwb3J0Iik7
Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgcGFyYW1ldGVycy5ydGNw
Lm11eCA9IHRydWU7Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBwYXJhbWV0ZXJzLCAmZmFrZV9wYWNrZXRfdHJh
bnNwb3J0LCBudWxscHRyLCBudWxscHRyKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0ID0gcnRwX3Ry
YW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBf
dHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gc2VuZGVyID0gc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFs
dWUoKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAot
ICAgICAgICAgICAgc2VuZGVyLT5TZXRUcmFuc3BvcnQocnRwX3RyYW5zcG9ydC5nZXQoKSkudHlw
ZSgpKTsKLX0KLQotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBHZXRUcmFuc3BvcnQpIHsKLSAg
YXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoY3JpY2tldDo6TUVE
SUFfVFlQRV9BVURJTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfRVEocnRwX3RyYW5zcG9ydF8u
Z2V0KCksIHJlc3VsdC52YWx1ZSgpLT5HZXRUcmFuc3BvcnQoKSk7Ci19Ci0KLS8vIFRlc3QgdGhh
dCAiU2VuZCIgY2F1c2VzIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQgdG8g
dGhlIG1lZGlhCi0vLyBlbmdpbmUgbGV2ZWwsIGZvciBhbiBhdWRpbyBzZW5kZXIuCi1URVNUX0Yo
T3J0Y1J0cFNlbmRlclRlc3QsIFNlbmRBcHBsaWVzQXVkaW9QYXJhbWV0ZXJzVG9NZWRpYUVuZ2lu
ZSkgewotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0
Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3Zl
VmFsdWUoKTsKLQotICAvLyBGaXJzdCwgY3JlYXRlIHBhcmFtZXRlcnMgd2l0aCBhbGwgdGhlIGJl
bGxzIGFuZCB3aGlzdGxlcy4KLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gIFJ0cENv
ZGVjUGFyYW1ldGVycyBvcHVzX2NvZGVjOwotICBvcHVzX2NvZGVjLm5hbWUgPSAib3B1cyI7Ci0g
IG9wdXNfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87Ci0gIG9wdXNfY29k
ZWMucGF5bG9hZF90eXBlID0gMTIwOwotICBvcHVzX2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFjZSg0
ODAwMCk7Ci0gIG9wdXNfY29kZWMubnVtX2NoYW5uZWxzLmVtcGxhY2UoMik7Ci0gIG9wdXNfY29k
ZWMucGFyYW1ldGVyc1sibWlucHRpbWUiXSA9ICIxMCI7Ci0gIG9wdXNfY29kZWMucnRjcF9mZWVk
YmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6VFJBTlNQT1JUX0NDKTsKLSAgcGFy
YW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShvcHVzX2NvZGVjKSk7Ci0KLSAgLy8g
QWRkIHR3byBjb2RlY3MsIGV4cGVjdGluZyB0aGUgZmlyc3QgdG8gYmUgdXNlZC4KLSAgLy8gVE9E
TyhkZWFkYmVlZik6IE9uY2UgImNvZGVjX3BheWxvYWRfdHlwZSIgaXMgc3VwcG9ydGVkLCB1c2Ug
aXQgdG8gc2VsZWN0IGEKLSAgLy8gY29kZWMgdGhhdCdzIG5vdCBhdCB0aGUgdG9wIG9mIHRoZSBs
aXN0LgotICBSdHBDb2RlY1BhcmFtZXRlcnMgaXNhY19jb2RlYzsKLSAgaXNhY19jb2RlYy5uYW1l
ID0gIklTQUMiOwotICBpc2FjX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElP
OwotICBpc2FjX2NvZGVjLnBheWxvYWRfdHlwZSA9IDExMDsKLSAgaXNhY19jb2RlYy5jbG9ja19y
YXRlLmVtcGxhY2UoMTYwMDApOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjpt
b3ZlKGlzYWNfY29kZWMpKTsKLQotICBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgZW5jb2Rpbmc7Ci0g
IGVuY29kaW5nLnNzcmMuZW1wbGFjZSgweGRlYWRiZWVmKTsKLSAgZW5jb2RpbmcubWF4X2JpdHJh
dGVfYnBzLmVtcGxhY2UoMjAwMDApOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5wdXNoX2JhY2so
c3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0KLSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5l
bXBsYWNlX2JhY2soCi0gICAgICAidXJuOmlldGY6cGFyYW1zOnJ0cC1oZHJleHQ6c3NyYy1hdWRp
by1sZXZlbCIsIDMpOwotCi0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChwYXJhbWV0
ZXJzKS5vaygpKTsKLQotICAvLyBOb3cgdmVyaWZ5IHRoYXQgdGhlIHBhcmFtZXRlcnMgd2VyZSBh
cHBsaWVkIHRvIHRoZSBmYWtlIG1lZGlhIGVuZ2luZSBsYXllcgotICAvLyB0aGF0IGV4aXN0cyBi
ZWxvdyBCYXNlQ2hhbm5lbC4KLSAgY3JpY2tldDo6RmFrZVZvaWNlTWVkaWFDaGFubmVsKiBmYWtl
X3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWb2ljZUNoYW5u
ZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZvaWNlX2NoYW5uZWwpOwotICBFWFBF
Q1RfVFJVRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRpbmcoKSk7Ci0KLSAgLy8gVmVyaWZ5IGNv
ZGVjIHBhcmFtZXRlcnMuCi0gIEFTU0VSVF9HVChmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfY29k
ZWNzKCkuc2l6ZSgpLCAwdSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OkF1ZGlvQ29kZWMmIHRvcF9jb2Rl
YyA9IGZha2Vfdm9pY2VfY2hhbm5lbC0+c2VuZF9jb2RlY3MoKVswXTsKLSAgRVhQRUNUX0VRKCJv
cHVzIiwgdG9wX2NvZGVjLm5hbWUpOwotICBFWFBFQ1RfRVEoMTIwLCB0b3BfY29kZWMuaWQpOwot
ICBFWFBFQ1RfRVEoNDgwMDAsIHRvcF9jb2RlYy5jbG9ja3JhdGUpOwotICBFWFBFQ1RfRVEoMnUs
IHRvcF9jb2RlYy5jaGFubmVscyk7Ci0gIEFTU0VSVF9ORSh0b3BfY29kZWMucGFyYW1zLmVuZCgp
LCB0b3BfY29kZWMucGFyYW1zLmZpbmQoIm1pbnB0aW1lIikpOwotICBFWFBFQ1RfRVEoIjEwIiwg
dG9wX2NvZGVjLnBhcmFtcy5hdCgibWlucHRpbWUiKSk7Ci0KLSAgLy8gVmVyaWZ5IGVuY29kaW5n
IHBhcmFtZXRlcnMuCi0gIEVYUEVDVF9FUSgyMDAwMCwgZmFrZV92b2ljZV9jaGFubmVsLT5tYXhf
YnBzKCkpOwotICBBU1NFUlRfRVEoMXUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+c2VuZF9zdHJlYW1z
KCkuc2l6ZSgpKTsKLSAgY29uc3QgY3JpY2tldDo6U3RyZWFtUGFyYW1zJiBzZW5kX3N0cmVhbSA9
Ci0gICAgICBmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpWzBdOwotICBFWFBFQ1Rf
RVEoMXUsIHNlbmRfc3RyZWFtLnNzcmNzLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgweGRlYWRiZWVm
LCBzZW5kX3N0cmVhbS5maXJzdF9zc3JjKCkpOwotCi0gIC8vIFZlcmlmeSBoZWFkZXIgZXh0ZW5z
aW9ucy4KLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfZXh0ZW5zaW9u
cygpLnNpemUoKSk7Ci0gIGNvbnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uID0gZmFrZV92b2lj
ZV9jaGFubmVsLT5zZW5kX2V4dGVuc2lvbnMoKVswXTsKLSAgRVhQRUNUX0VRKCJ1cm46aWV0Zjpw
YXJhbXM6cnRwLWhkcmV4dDpzc3JjLWF1ZGlvLWxldmVsIiwgZXh0ZW5zaW9uLnVyaSk7Ci0gIEVY
UEVDVF9FUSgzLCBleHRlbnNpb24uaWQpOwotfQotCi0vLyBUZXN0IHRoYXQgIlNlbmQiIGNhdXNl
cyB0aGUgZXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVkIHRvIHRoZSBtZWRpYQotLy8g
ZW5naW5lIGxldmVsLCBmb3IgYSB2aWRlbyBzZW5kZXIuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRl
c3QsIFNlbmRBcHBsaWVzVmlkZW9QYXJhbWV0ZXJzVG9NZWRpYUVuZ2luZSkgewotICBhdXRvIHZp
ZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAg
ICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1
dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAv
LyBGaXJzdCwgY3JlYXRlIHBhcmFtZXRlcnMgd2l0aCBhbGwgdGhlIGJlbGxzIGFuZCB3aGlzdGxl
cy4KLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyB2
cDhfY29kZWM7Ci0gIHZwOF9jb2RlYy5uYW1lID0gIlZQOCI7Ci0gIHZwOF9jb2RlYy5raW5kID0g
Y3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgdnA4X2NvZGVjLnBheWxvYWRfdHlwZSA9IDk5
OwotICAvLyBUcnkgYSBjb3VwbGUgdHlwZXMgb2YgZmVlZGJhY2sgcGFyYW1zLiAiR2VuZXJpYyBO
QUNLIiBpcyBhIGJpdCBvZiBhCi0gIC8vIHNwZWNpYWwgY2FzZSwgc28gdGVzdCBpdCBoZXJlLgot
ICB2cDhfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6
Q0NNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEZlZWRiYWNr
TWVzc2FnZVR5cGU6OkZJUik7Ci0gIHZwOF9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFj
ayhSdGNwRmVlZGJhY2tUeXBlOjpOQUNLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5cGU6OkdFTkVSSUNfTkFDSyk7Ci0gIHBhcmFt
ZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUodnA4X2NvZGVjKSk7Ci0KLSAgUnRwQ29k
ZWNQYXJhbWV0ZXJzIHZwOF9ydHhfY29kZWM7Ci0gIHZwOF9ydHhfY29kZWMubmFtZSA9ICJydHgi
OwotICB2cDhfcnR4X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB2
cDhfcnR4X2NvZGVjLnBheWxvYWRfdHlwZSA9IDEwMDsKLSAgdnA4X3J0eF9jb2RlYy5wYXJhbWV0
ZXJzWyJhcHQiXSA9ICI5OSI7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1v
dmUodnA4X3J0eF9jb2RlYykpOwotCi0gIC8vIEFkZCB0d28gY29kZWNzLCBleHBlY3RpbmcgdGhl
IGZpcnN0IHRvIGJlIHVzZWQuCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBPbmNlICJjb2RlY19wYXls
b2FkX3R5cGUiIGlzIHN1cHBvcnRlZCwgdXNlIGl0IHRvIHNlbGVjdCBhCi0gIC8vIGNvZGVjIHRo
YXQncyBub3QgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHZw
OV9jb2RlYzsKLSAgdnA5X2NvZGVjLm5hbWUgPSAiVlA5IjsKLSAgdnA5X2NvZGVjLmtpbmQgPSBj
cmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB2cDlfY29kZWMucGF5bG9hZF90eXBlID0gMTAy
OwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHZwOV9jb2RlYykpOwot
Ci0gIFJ0cENvZGVjUGFyYW1ldGVycyB2cDlfcnR4X2NvZGVjOwotICB2cDlfcnR4X2NvZGVjLm5h
bWUgPSAicnR4IjsKLSAgdnA5X3J0eF9jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9W
SURFTzsKLSAgdnA5X3J0eF9jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMDM7Ci0gIHZwOV9ydHhfY29k
ZWMucGFyYW1ldGVyc1siYXB0Il0gPSAiMTAyIjsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9i
YWNrKHN0ZDo6bW92ZSh2cDlfcnR4X2NvZGVjKSk7Ci0KLSAgUnRwRW5jb2RpbmdQYXJhbWV0ZXJz
IGVuY29kaW5nOwotICBlbmNvZGluZy5zc3JjLmVtcGxhY2UoMHhkZWFkYmVlZik7Ci0gIGVuY29k
aW5nLnJ0eC5lbXBsYWNlKDB4YmFhZGZlZWQpOwotICBlbmNvZGluZy5tYXhfYml0cmF0ZV9icHMu
ZW1wbGFjZSg5OTk5OSk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1c2hfYmFjayhzdGQ6Om1v
dmUoZW5jb2RpbmcpKTsKLQotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2Vf
YmFjaygidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iLCA0KTsKLSAgcGFyYW1ldGVycy5oZWFk
ZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soCi0gICAgICAiaHR0cDovL3d3dy53ZWJydGMub3Jn
L2V4cGVyaW1lbnRzL3J0cC1oZHJleHQvcGxheW91dC1kZWxheSIsIDYpOwotCi0gIEVYUEVDVF9U
UlVFKHZpZGVvX3NlbmRlci0+U2VuZChwYXJhbWV0ZXJzKS5vaygpKTsKLQotICAvLyBOb3cgdmVy
aWZ5IHRoYXQgdGhlIHBhcmFtZXRlcnMgd2VyZSBhcHBsaWVkIHRvIHRoZSBmYWtlIG1lZGlhIGVu
Z2luZSBsYXllcgotICAvLyB0aGF0IGV4aXN0cyBiZWxvdyBCYXNlQ2hhbm5lbC4KLSAgY3JpY2tl
dDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAgICAgZmFr
ZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRy
LCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVvX2NoYW5uZWwt
PnNlbmRpbmcoKSk7Ci0KLSAgLy8gVmVyaWZ5IGNvZGVjIHBhcmFtZXRlcnMuCi0gIEFTU0VSVF9H
RShmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfY29kZWNzKCkuc2l6ZSgpLCAydSk7Ci0gIGNvbnN0
IGNyaWNrZXQ6OlZpZGVvQ29kZWMmIHRvcF9jb2RlYyA9IGZha2VfdmlkZW9fY2hhbm5lbC0+c2Vu
ZF9jb2RlY3MoKVswXTsKLSAgRVhQRUNUX0VRKCJWUDgiLCB0b3BfY29kZWMubmFtZSk7Ci0gIEVY
UEVDVF9FUSg5OSwgdG9wX2NvZGVjLmlkKTsKLSAgRVhQRUNUX1RSVUUodG9wX2NvZGVjLmZlZWRi
YWNrX3BhcmFtcy5IYXMoeyJjY20iLCAiZmlyIn0pKTsKLSAgRVhQRUNUX1RSVUUodG9wX2NvZGVj
LmZlZWRiYWNrX3BhcmFtcy5IYXMoY3JpY2tldDo6RmVlZGJhY2tQYXJhbSgibmFjayIpKSk7Ci0K
LSAgY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyYgcnR4X2NvZGVjID0gZmFrZV92aWRlb19jaGFu
bmVsLT5zZW5kX2NvZGVjcygpWzFdOwotICBFWFBFQ1RfRVEoInJ0eCIsIHJ0eF9jb2RlYy5uYW1l
KTsKLSAgRVhQRUNUX0VRKDEwMCwgcnR4X2NvZGVjLmlkKTsKLSAgQVNTRVJUX05FKHJ0eF9jb2Rl
Yy5wYXJhbXMuZW5kKCksIHJ0eF9jb2RlYy5wYXJhbXMuZmluZCgiYXB0IikpOwotICBFWFBFQ1Rf
RVEoIjk5IiwgcnR4X2NvZGVjLnBhcmFtcy5hdCgiYXB0IikpOwotCi0gIC8vIFZlcmlmeSBlbmNv
ZGluZyBwYXJhbWV0ZXJzLgotICBFWFBFQ1RfRVEoOTk5OTksIGZha2VfdmlkZW9fY2hhbm5lbC0+
bWF4X2JwcygpKTsKLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfc3Ry
ZWFtcygpLnNpemUoKSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYgc2VuZF9zdHJl
YW0gPQotICAgICAgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVswXTsKLSAgRVhQ
RUNUX0VRKDJ1LCBzZW5kX3N0cmVhbS5zc3Jjcy5zaXplKCkpOwotICBFWFBFQ1RfRVEoMHhkZWFk
YmVlZiwgc2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpKTsKLSAgdWludDMyX3QgcnR4X3NzcmMgPSAw
dTsKLSAgRVhQRUNUX1RSVUUoc2VuZF9zdHJlYW0uR2V0RmlkU3NyYyhzZW5kX3N0cmVhbS5maXJz
dF9zc3JjKCksICZydHhfc3NyYykpOwotICBFWFBFQ1RfRVEoMHhiYWFkZmVlZCwgcnR4X3NzcmMp
OwotCi0gIC8vIFZlcmlmeSBoZWFkZXIgZXh0ZW5zaW9ucy4KLSAgQVNTRVJUX0VRKDJ1LCBmYWtl
X3ZpZGVvX2NoYW5uZWwtPnNlbmRfZXh0ZW5zaW9ucygpLnNpemUoKSk7Ci0gIGNvbnN0IFJ0cEV4
dGVuc2lvbiYgZXh0ZW5zaW9uMSA9IGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9leHRlbnNpb25z
KClbMF07Ci0gIEVYUEVDVF9FUSgidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iLCBleHRlbnNp
b24xLnVyaSk7Ci0gIEVYUEVDVF9FUSg0LCBleHRlbnNpb24xLmlkKTsKLSAgY29uc3QgUnRwRXh0
ZW5zaW9uJiBleHRlbnNpb24yID0gZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX2V4dGVuc2lvbnMo
KVsxXTsKLSAgRVhQRUNUX0VRKCJodHRwOi8vd3d3LndlYnJ0Yy5vcmcvZXhwZXJpbWVudHMvcnRw
LWhkcmV4dC9wbGF5b3V0LWRlbGF5IiwKLSAgICAgICAgICAgIGV4dGVuc2lvbjIudXJpKTsKLSAg
RVhQRUNUX0VRKDYsIGV4dGVuc2lvbjIuaWQpOwotfQotCi0vLyBFbnN1cmUgdGhhdCB3aGVuIHBy
aW1hcnkgb3IgUlRYIFNTUkNzIGFyZSBsZWZ0IHVuc2V0LCB0aGV5J3JlIGdlbmVyYXRlZAotLy8g
YXV0b21hdGljYWxseS4KLVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwgU2VuZEdlbmVyYXRlc1Nz
cmNzV2hlbkVtcHR5KSB7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0
cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJf
cmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWlu
aW1hbE9wdXNQYXJhbWV0ZXJzV2l0aE5vU3NyYygpOwotICAvLyBEZWZhdWx0IFJUWCBwYXJhbWV0
ZXJzLCB3aXRoIG5vIFNTUkMuCi0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnJ0eC5lbXBsYWNl
KCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChwYXJhbWV0ZXJzKS5vaygpKTsK
LQotICBjcmlja2V0OjpGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2VfY2hhbm5lbCA9
Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKLSAgQVNTRVJU
X05FKG51bGxwdHIsIGZha2Vfdm9pY2VfY2hhbm5lbCk7Ci0gIEFTU0VSVF9FUSgxdSwgZmFrZV92
b2ljZV9jaGFubmVsLT5zZW5kX3N0cmVhbXMoKS5zaXplKCkpOwotICBjb25zdCBjcmlja2V0OjpT
dHJlYW1QYXJhbXMmIGF1ZGlvX3NlbmRfc3RyZWFtID0KLSAgICAgIGZha2Vfdm9pY2VfY2hhbm5l
bC0+c2VuZF9zdHJlYW1zKClbMF07Ci0gIEVYUEVDVF9ORSgwdSwgYXVkaW9fc2VuZF9zdHJlYW0u
Zmlyc3Rfc3NyYygpKTsKLSAgdWludDMyX3QgcnR4X3NzcmMgPSAwdTsKLSAgRVhQRUNUX1RSVUUo
Ci0gICAgICBhdWRpb19zZW5kX3N0cmVhbS5HZXRGaWRTc3JjKGF1ZGlvX3NlbmRfc3RyZWFtLmZp
cnN0X3NzcmMoKSwgJnJ0eF9zc3JjKSk7Ci0gIEVYUEVDVF9ORSgwdSwgcnR4X3NzcmMpOwotICBF
WFBFQ1RfTkUoYXVkaW9fc2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpLCBydHhfc3NyYyk7Ci0KLSAg
YXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVy
KAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkp
OwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7
Ci0gIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoTm9Tc3JjKCk7Ci0g
IC8vIERlZmF1bHQgUlRYIHBhcmFtZXRlcnMsIHdpdGggbm8gU1NSQy4KLSAgcGFyYW1ldGVycy5l
bmNvZGluZ3NbMF0ucnR4LmVtcGxhY2UoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5T
ZW5kKHBhcmFtZXRlcnMpLm9rKCkpOwotCi0gIGNyaWNrZXQ6OkZha2VWaWRlb01lZGlhQ2hhbm5l
bCogZmFrZV92aWRlb19jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vmlk
ZW9DaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92aWRlb19jaGFubmVsKTsK
LSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpLnNpemUo
KSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYgdmlkZW9fc2VuZF9zdHJlYW0gPQot
ICAgICAgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVswXTsKLSAgRVhQRUNUX05F
KDB1LCB2aWRlb19zZW5kX3N0cmVhbS5maXJzdF9zc3JjKCkpOwotICBydHhfc3NyYyA9IDB1Owot
ICBFWFBFQ1RfVFJVRSgKLSAgICAgIHZpZGVvX3NlbmRfc3RyZWFtLkdldEZpZFNzcmModmlkZW9f
c2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpLCAmcnR4X3NzcmMpKTsKLSAgRVhQRUNUX05FKDB1LCBy
dHhfc3NyYyk7Ci0gIEVYUEVDVF9ORSh2aWRlb19zZW5kX3N0cmVhbS5maXJzdF9zc3JjKCksIHJ0
eF9zc3JjKTsKLSAgRVhQRUNUX05FKHZpZGVvX3NlbmRfc3RyZWFtLmZpcnN0X3NzcmMoKSwgYXVk
aW9fc2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpKTsKLX0KLQotLy8gVGVzdCBjaGFuZ2luZyBib3Ro
IHRoZSBzZW5kIGNvZGVjIGFuZCBTU1JDIGF0IHRoZSBzYW1lIHRpbWUsIGFuZCB2ZXJpZnkgdGhh
dAotLy8gdGhlIG5ldyBwYXJhbWV0ZXJzIGFyZSBhcHBsaWVkIHRvIHRoZSBtZWRpYSBlbmdpbmUg
bGV2ZWwuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIENhbGxpbmdTZW5kVHdpY2VDaGFuZ2Vz
UGFyYW1ldGVycykgewotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBf
dHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jl
c3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICBhdWRpb19zZW5kZXItPlNl
bmQoTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVyc1dpdGhTc3JjKDB4MTExMTExMTEpKS5vaygpKTsK
LSAgRVhQRUNUX1RSVUUoCi0gICAgICBhdWRpb19zZW5kZXItPlNlbmQoTWFrZU1pbmltYWxJc2Fj
UGFyYW1ldGVyc1dpdGhTc3JjKDB4MjIyMjIyMjIpKS5vaygpKTsKLQotICBjcmlja2V0OjpGYWtl
Vm9pY2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2VfY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlh
X2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2Vf
dm9pY2VfY2hhbm5lbCk7Ci0gIEFTU0VSVF9HVChmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfY29k
ZWNzKCkuc2l6ZSgpLCAwdSk7Ci0gIEVYUEVDVF9FUSgiSVNBQyIsIGZha2Vfdm9pY2VfY2hhbm5l
bC0+c2VuZF9jb2RlY3MoKVswXS5uYW1lKTsKLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZvaWNlX2No
YW5uZWwtPnNlbmRfc3RyZWFtcygpLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgweDIyMjIyMjIydSwg
ZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVswXS5maXJzdF9zc3JjKCkpOwotCi0g
IGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRl
cigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgp
KTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgp
OwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIHZpZGVvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbFZw
OFBhcmFtZXRlcnNXaXRoU3NyYygweDMzMzMzMzMzKSkub2soKSk7Ci0gIEVYUEVDVF9UUlVFKAot
ICAgICAgdmlkZW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsVnA5UGFyYW1ldGVyc1dpdGhTc3Jj
KDB4NDQ0NDQ0NDQpKS5vaygpKTsKLQotICBjcmlja2V0OjpGYWtlVmlkZW9NZWRpYUNoYW5uZWwq
IGZha2VfdmlkZW9fY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZpZGVv
Q2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2VfdmlkZW9fY2hhbm5lbCk7Ci0g
IEFTU0VSVF9HVChmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfY29kZWNzKCkuc2l6ZSgpLCAwdSk7
Ci0gIEVYUEVDVF9FUSgiVlA5IiwgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX2NvZGVjcygpWzBd
Lm5hbWUpOwotICBBU1NFUlRfRVEoMXUsIGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9zdHJlYW1z
KCkuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDB4NDQ0NDQ0NDR1LCBmYWtlX3ZpZGVvX2NoYW5uZWwt
PnNlbmRfc3RyZWFtcygpWzBdLmZpcnN0X3NzcmMoKSk7Ci19Ci0KLS8vIEVuc3VyZSB0aGF0IGlm
IHRoZSB8YWN0aXZlfCBmbGFnIG9mIFJ0cEVuY29kaW5nUGFyYW1ldGVycyBpcyBzZXQgdG8gZmFs
c2UsCi0vLyBzZW5kaW5nIHN0b3BzIGF0IHRoZSBtZWRpYSBlbmdpbmUgbGV2ZWwuCi1URVNUX0Yo
T3J0Y1J0cFNlbmRlclRlc3QsIERlYWN0aXZhdGluZ0VuY29kaW5nU3RvcHNTZW5kaW5nKSB7Ci0g
IGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRl
cigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgp
KTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgp
OwotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJz
KCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChwYXJhbWV0ZXJzKS5vaygpKTsK
LQotICAvLyBFeHBlY3QgInNlbmRpbmciIGZsYWcgdG8gaW5pdGlhbGx5IGJlIHRydWUuCi0gIGNy
aWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0KLSAgICAg
IGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVs
bHB0ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92b2ljZV9jaGFu
bmVsLT5zZW5kaW5nKCkpOwotCi0gIC8vIERlYWN0aXZhdGUgZW5jb2RpbmcgYW5kIGV4cGVjdCBp
dCB0byBjaGFuZ2UgdG8gZmFsc2UuCi0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLmFjdGl2ZSA9
IGZhbHNlOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQocGFyYW1ldGVycykub2so
KSk7Ci0gIEVYUEVDVF9GQUxTRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRpbmcoKSk7Ci0KLSAg
Ly8gVHJ5IHRoZSBzYW1lIHRoaW5nIGZvciB2aWRlbyBub3cuCi0gIGF1dG8gdmlkZW9fc2VuZGVy
X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6
Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19z
ZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBwYXJhbWV0ZXJzID0g
TWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+
U2VuZChwYXJhbWV0ZXJzKS5vaygpKTsKLQotICBjcmlja2V0OjpGYWtlVmlkZW9NZWRpYUNoYW5u
ZWwqIGZha2VfdmlkZW9fY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZp
ZGVvQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2VfdmlkZW9fY2hhbm5lbCk7
Ci0gIEVYUEVDVF9UUlVFKGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZGluZygpKTsKLQotICBwYXJh
bWV0ZXJzLmVuY29kaW5nc1swXS5hY3RpdmUgPSBmYWxzZTsKLSAgRVhQRUNUX1RSVUUodmlkZW9f
c2VuZGVyLT5TZW5kKHBhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfRkFMU0UoZmFrZV92aWRl
b19jaGFubmVsLT5zZW5kaW5nKCkpOwotfQotCi0vLyBFbnN1cmUgdGhhdCBjYWxsaW5nIFNlbmQg
d2l0aCBhbiBlbXB0eSBsaXN0IG9mIGVuY29kaW5ncyBjYXVzZXMgc2VuZCBzdHJlYW1zCi0vLyBh
dCB0aGUgbWVkaWEgZW5naW5lIGxldmVsIHRvIGJlIGNsZWFyZWQuCi1URVNUX0YoT3J0Y1J0cFNl
bmRlclRlc3QsIENhbGxpbmdTZW5kV2l0aEVtcHR5RW5jb2RpbmdzQ2xlYXJzU2VuZFN0cmVhbXMp
IHsKLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRw
U2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8u
Z2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQuTW92ZVZh
bHVlKCk7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsT3B1c1BhcmFt
ZXRlcnMoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKHBhcmFtZXRlcnMpLm9r
KCkpOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5jbGVhcigpOwotICBFWFBFQ1RfVFJVRShhdWRp
b19zZW5kZXItPlNlbmQocGFyYW1ldGVycykub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZvaWNl
TWVkaWFDaGFubmVsKiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdp
bmVfLT5HZXRWb2ljZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZvaWNl
X2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFt
cygpLmVtcHR5KCkpOwotCi0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0
cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJf
cmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxWcDhQYXJhbWV0
ZXJzKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZChwYXJhbWV0ZXJzKS5vaygp
KTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3MuY2xlYXIoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9f
c2VuZGVyLT5TZW5kKHBhcmFtZXRlcnMpLm9rKCkpOwotCi0gIGNyaWNrZXQ6OkZha2VWaWRlb01l
ZGlhQ2hhbm5lbCogZmFrZV92aWRlb19jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5l
Xy0+R2V0VmlkZW9DaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92aWRlb19j
aGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3N0cmVhbXMo
KS5lbXB0eSgpKTsKLX0KLQotLy8gVGhlc2UgZXJyb3JzIHNob3VsZCBiZSBjb3ZlcmVkIGJ5IHJ0
cHBhcmFtZXRlcnNjb252ZXJzaW9uX3VuaXR0ZXN0LmNjLCBidXQKLS8vIHdlIHNob3VsZCBhdCBs
ZWFzdCB0ZXN0IHRoYXQgdGhvc2UgZXJyb3JzIGFyZSBwcm9wb2dhdGVkIGZyb20gY2FsbHMgdG8g
U2VuZCwKLS8vIHdpdGggYSBmZXcgZXhhbXBsZXMuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3Qs
IFNlbmRSZXR1cm5zRXJyb3JPbkludmFsaWRQYXJhbWV0ZXJzKSB7Ci0gIGF1dG8gcmVzdWx0ID0g
b3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFu
c3BvcnRfLmdldCgpKTsKLSAgYXV0byBzZW5kZXIgPSByZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIC8v
IE5BQ0sgZmVlZGJhY2sgbWlzc2luZyBtZXNzYWdlIHR5cGUuCi0gIFJ0cFBhcmFtZXRlcnMgaW52
YWxpZF9mZWVkYmFjayA9IE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpOwotICBpbnZhbGlkX2Zl
ZWRiYWNrLmNvZGVjc1swXS5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tU
eXBlOjpOQUNLKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIs
Ci0gICAgICAgICAgICBzZW5kZXItPlNlbmQoaW52YWxpZF9mZWVkYmFjaykudHlwZSgpKTsKLSAg
Ly8gTmVnYXRpdmUgcGF5bG9hZCB0eXBlLgotICBSdHBQYXJhbWV0ZXJzIGludmFsaWRfcHQgPSBN
YWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgaW52YWxpZF9wdC5jb2RlY3NbMF0ucGF5bG9h
ZF90eXBlID0gLTE7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUkFOR0UsIHNl
bmRlci0+U2VuZChpbnZhbGlkX3B0KS50eXBlKCkpOwotICAvLyBEdXBsaWNhdGUgY29kZWMgcGF5
bG9hZCB0eXBlcy4KLSAgUnRwUGFyYW1ldGVycyBkdXBsaWNhdGVfcGF5bG9hZF90eXBlcyA9IE1h
a2VNaW5pbWFsVnA4UGFyYW1ldGVycygpOwotICBkdXBsaWNhdGVfcGF5bG9hZF90eXBlcy5jb2Rl
Y3MucHVzaF9iYWNrKGR1cGxpY2F0ZV9wYXlsb2FkX3R5cGVzLmNvZGVjc1swXSk7Ci0gIGR1cGxp
Y2F0ZV9wYXlsb2FkX3R5cGVzLmNvZGVjcy5iYWNrKCkubmFtZSA9ICJWUDkiOwotICBFWFBFQ1Rf
RVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgIHNlbmRlci0+
U2VuZChkdXBsaWNhdGVfcGF5bG9hZF90eXBlcykudHlwZSgpKTsKLX0KLQotLy8gVHdvIHNlbmRl
cnMgdXNpbmcgdGhlIHNhbWUgdHJhbnNwb3J0IHNob3VsZG4ndCBiZSBhYmxlIHRvIHVzZSB0aGUg
c2FtZQotLy8gcGF5bG9hZCB0eXBlIHRvIHJlZmVyIHRvIGRpZmZlcmVudCBjb2RlY3MsIHNhbWUg
aGVhZGVyIGV4dGVuc2lvbiBJRHMgdG8KLS8vIHJlZmVyIHRvIGRpZmZlcmVudCBleHRlbnNpb25z
LCBvciBzYW1lIFNTUkMuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIFNlbmRSZXR1cm5zRXJy
b3JPbklkQ29uZmxpY3RzKSB7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFj
dG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8s
IHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9W
SURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlv
X3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9f
c2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAvLyBGaXJzdCB0ZXN0IHBheWxvYWQgdHlw
ZSBjb25mbGljdC4KLSAgUnRwUGFyYW1ldGVycyBhdWRpb19wYXJhbWV0ZXJzID0gTWFrZU1pbmlt
YWxPcHVzUGFyYW1ldGVycygpOwotICBSdHBQYXJhbWV0ZXJzIHZpZGVvX3BhcmFtZXRlcnMgPSBN
YWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgYXVkaW9fcGFyYW1ldGVycy5jb2RlY3NbMF0u
cGF5bG9hZF90eXBlID0gMTAwOwotICB2aWRlb19wYXJhbWV0ZXJzLmNvZGVjc1swXS5wYXlsb2Fk
X3R5cGUgPSAxMDA7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChhdWRpb19wYXJh
bWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVU
RVIsCi0gICAgICAgICAgICB2aWRlb19zZW5kZXItPlNlbmQodmlkZW9fcGFyYW1ldGVycykudHlw
ZSgpKTsKLQotICAvLyBUZXN0IGhlYWRlciBleHRlbnNpb24gSUQgY29uZmxpY3QuCi0gIHZpZGVv
X3BhcmFtZXRlcnMuY29kZWNzWzBdLnBheWxvYWRfdHlwZSA9IDExMDsKLSAgYXVkaW9fcGFyYW1l
dGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soImZvbyIsIDQpOwotICB2aWRlb19w
YXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygiYmFyIiwgNCk7Ci0gIEVY
UEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChhdWRpb19wYXJhbWV0ZXJzKS5vaygpKTsKLSAg
RVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICB2
aWRlb19zZW5kZXItPlNlbmQodmlkZW9fcGFyYW1ldGVycykudHlwZSgpKTsKLQotICAvLyBUZXN0
IFNTUkMgY29uZmxpY3QuIEhhdmUgYW4gUlRYIFNTUkMgdGhhdCBjb25mbGljdHMgd2l0aCBhIHBy
aW1hcnkgU1NSQwotICAvLyBmb3IgZXh0cmEgY2hhbGxlbmdlLgotICB2aWRlb19wYXJhbWV0ZXJz
LmhlYWRlcl9leHRlbnNpb25zWzBdLnVyaSA9ICJmb28iOwotICBhdWRpb19wYXJhbWV0ZXJzLmVu
Y29kaW5nc1swXS5zc3JjLmVtcGxhY2UoMHhkZWFkYmVlZik7Ci0gIHZpZGVvX3BhcmFtZXRlcnMu
ZW5jb2RpbmdzWzBdLnNzcmMuZW1wbGFjZSgweGFiYmFhYmJhKTsKLSAgdmlkZW9fcGFyYW1ldGVy
cy5lbmNvZGluZ3NbMF0ucnR4LmVtcGxhY2UoMHhkZWFkYmVlZik7Ci0gIEVYUEVDVF9UUlVFKGF1
ZGlvX3NlbmRlci0+U2VuZChhdWRpb19wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKFJU
Q0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICB2aWRlb19zZW5kZXIt
PlNlbmQodmlkZW9fcGFyYW1ldGVycykudHlwZSgpKTsKLQotICAvLyBTYW5pdHkgY2hlY2sgdGhh
dCBwYXJhbWV0ZXJzIGNhbiBiZSBzZXQgaWYgdGhlIGNvbmZsaWN0cyBhcmUgYWxsIHJlc29sdmVk
LgotICB2aWRlb19wYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5ydHgtPnNzcmMuZW1wbGFjZSgweGJh
YWRmMDBkKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZW5kKHZpZGVvX3BhcmFtZXRl
cnMpLm9rKCkpOwotfQotCi0vLyBFbnN1cmUgdGhhdCBkZWxldGluZyBhIHNlbmRlciBjYXVzZXMg
c2VuZCBzdHJlYW1zIGF0IHRoZSBtZWRpYSBlbmdpbmUgbGV2ZWwKLS8vIHRvIGJlIGNsZWFyZWQu
Ci1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIERlbGV0aW5nU2VuZGVyQ2xlYXJzU2VuZFN0cmVh
bXMpIHsKLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9y
dF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQuTW92
ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbE9w
dXNQYXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0gIC8vIEFsc28gY3JlYXRlIGFuIGF1ZGlvIHJlY2Vp
dmVyLCB0byBwcmV2ZW50IHRoZSB2b2ljZSBjaGFubmVsIGZyb20gYmVpbmcKLSAgLy8gY29tcGxl
dGVseSBkZWxldGVkLgotICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywg
cnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyID0gYXVkaW9fcmVj
ZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlci0+
UmVjZWl2ZShNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0gIGF1ZGlvX3Nl
bmRlci5yZXNldChudWxscHRyKTsKLSAgY3JpY2tldDo6RmFrZVZvaWNlTWVkaWFDaGFubmVsKiBm
YWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWb2ljZUNo
YW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZvaWNlX2NoYW5uZWwpOwotICBF
WFBFQ1RfVFJVRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpLmVtcHR5KCkpOwot
Ci0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNl
bmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdl
dCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1
ZSgpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNlbmQoTWFrZU1pbmltYWxWcDhQYXJh
bWV0ZXJzKCkpLm9rKCkpOwotCi0gIC8vIEFsc28gY3JlYXRlIGFuIHZpZGVvIHJlY2VpdmVyLCB0
byBwcmV2ZW50IHRoZSB2aWRlbyBjaGFubmVsIGZyb20gYmVpbmcKLSAgLy8gY29tcGxldGVseSBk
ZWxldGVkLgotICBhdXRvIHZpZGVvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNy
ZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3Ry
YW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyID0gdmlkZW9fcmVjZWl2ZXJf
cmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZlci0+UmVjZWl2
ZShNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKSkub2soKSk7Ci0KLSAgdmlkZW9fc2VuZGVyLnJl
c2V0KG51bGxwdHIpOwotICBjcmlja2V0OjpGYWtlVmlkZW9NZWRpYUNoYW5uZWwqIGZha2Vfdmlk
ZW9fY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZpZGVvQ2hhbm5lbCgw
KTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2VfdmlkZW9fY2hhbm5lbCk7Ci0gIEVYUEVDVF9U
UlVFKGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9zdHJlYW1zKCkuZW1wdHkoKSk7Ci19Ci0KLS8v
IElmIFNlbmQgaGFzbid0IGJlZW4gY2FsbGVkLCBHZXRQYXJhbWV0ZXJzIHNob3VsZCByZXR1cm4g
ZW1wdHkgcGFyYW1ldGVycy4KLVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwgR2V0RGVmYXVsdFBh
cmFtZXRlcnMpIHsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5k
ZXIoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfRVEo
UnRwUGFyYW1ldGVycygpLCByZXN1bHQudmFsdWUoKS0+R2V0UGFyYW1ldGVycygpKTsKLSAgcmVz
dWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVf
VklERU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBfdHJh
bnNwb3J0Xy5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSdHBQYXJhbWV0ZXJzKCksIHJlc3VsdC52YWx1
ZSgpLT5HZXRQYXJhbWV0ZXJzKCkpOwotfQotCi0vLyBUZXN0IHRoYXQgR2V0UGFyYW1ldGVycyBy
ZXR1cm5zIHRoZSBsYXN0IHBhcmFtZXRlcnMgcGFzc2VkIGludG8gU2VuZCwgYWxvbmcKLS8vIHdp
dGggdGhlIGltcGxlbWVudGF0aW9uLWRlZmF1bHQgdmFsdWVzIGZpbGxlZCBpbiB3aGVyZSB0aGV5
IHdlcmUgbGVmdCB1bnNldC4KLVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwKLSAgICAgICBHZXRQ
YXJhbWV0ZXJzUmV0dXJuc0xhc3RTZXRQYXJhbWV0ZXJzV2l0aERlZmF1bHRzRmlsbGVkKSB7Ci0g
IGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRl
cigKLSAgICAgIENyZWF0ZUF1ZGlvVHJhY2soImF1ZGlvIiksIHJ0cF90cmFuc3BvcnRfLmdldCgp
KTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgp
OwotCi0gIFJ0cFBhcmFtZXRlcnMgb3B1c19wYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxPcHVzUGFy
YW1ldGVycygpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQob3B1c19wYXJhbWV0
ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKG9wdXNfcGFyYW1ldGVycywgYXVkaW9fc2VuZGVyLT5H
ZXRQYXJhbWV0ZXJzKCkpOwotCi0gIFJ0cFBhcmFtZXRlcnMgaXNhY19wYXJhbWV0ZXJzID0gTWFr
ZU1pbmltYWxJc2FjUGFyYW1ldGVycygpOwotICAvLyBTYW5pdHkgY2hlY2sgdGhhdCBudW1fY2hh
bm5lbHMgYWN0dWFsbHkgaXMgbGVmdCB1bnNldC4KLSAgQVNTRVJUX0ZBTFNFKGlzYWNfcGFyYW1l
dGVycy5jb2RlY3NbMF0ubnVtX2NoYW5uZWxzKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVy
LT5TZW5kKGlzYWNfcGFyYW1ldGVycykub2soKSk7Ci0gIC8vIFNob3VsZCBiZSBmaWxsZWQgd2l0
aCBhIGRlZmF1bHQgIm51bSBjaGFubmVscyIgb2YgMS4KLSAgLy8gVE9ETyhkZWFkYmVlZik6IFRo
aXMgc2hvdWxkIGFjdHVhbGx5IGRlZmF1bHQgdG8gMiBmb3Igc29tZSBjb2RlY3MuIFVwZGF0ZQot
ICAvLyB0aGlzIHRlc3Qgb25jZSB0aGF0J3MgaW1wbGVtZW50ZWQuCi0gIGlzYWNfcGFyYW1ldGVy
cy5jb2RlY3NbMF0ubnVtX2NoYW5uZWxzLmVtcGxhY2UoMSk7Ci0gIEVYUEVDVF9FUShpc2FjX3Bh
cmFtZXRlcnMsIGF1ZGlvX3NlbmRlci0+R2V0UGFyYW1ldGVycygpKTsKLQotICBhdXRvIHZpZGVv
X3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBD
cmVhdGVWaWRlb1RyYWNrKCJ2aWRlbyIpLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8g
dmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICBSdHBQ
YXJhbWV0ZXJzIHZwOF9wYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCk7Ci0g
IC8vIFNhbml0eSBjaGVjayB0aGF0IGNsb2NrX3JhdGUgYWN0dWFsbHkgaXMgbGVmdCB1bnNldC4K
LSAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyLT5TZW5kKHZwOF9wYXJhbWV0ZXJzKS5vaygpKTsK
LSAgLy8gU2hvdWxkIGJlIGZpbGxlZCB3aXRoIGEgZGVmYXVsdCBjbG9jayByYXRlIG9mIDkwMDAw
LgotICB2cDhfcGFyYW1ldGVycy5jb2RlY3NbMF0uY2xvY2tfcmF0ZS5lbXBsYWNlKDkwMDAwKTsK
LSAgRVhQRUNUX0VRKHZwOF9wYXJhbWV0ZXJzLCB2aWRlb19zZW5kZXItPkdldFBhcmFtZXRlcnMo
KSk7Ci0KLSAgUnRwUGFyYW1ldGVycyB2cDlfcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA5UGFy
YW1ldGVycygpOwotICAvLyBTYW5pdHkgY2hlY2sgdGhhdCBjbG9ja19yYXRlIGFjdHVhbGx5IGlz
IGxlZnQgdW5zZXQuCi0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZCh2cDlfcGFyYW1l
dGVycykub2soKSk7Ci0gIC8vIFNob3VsZCBiZSBmaWxsZWQgd2l0aCBhIGRlZmF1bHQgY2xvY2sg
cmF0ZSBvZiA5MDAwMC4KLSAgdnA5X3BhcmFtZXRlcnMuY29kZWNzWzBdLmNsb2NrX3JhdGUuZW1w
bGFjZSg5MDAwMCk7Ci0gIEVYUEVDVF9FUSh2cDlfcGFyYW1ldGVycywgdmlkZW9fc2VuZGVyLT5H
ZXRQYXJhbWV0ZXJzKCkpOwotfQotCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIEdldEtpbmQp
IHsKLSAgLy8gQ29uc3RydWN0IG9uZSBzZW5kZXIgZnJvbSB0aGUgImtpbmQiIGVudW0gYW5kIGFu
b3RoZXIgZnJvbSBhIHRyYWNrLgotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2Zh
Y3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElP
LCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9y
dGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIENyZWF0ZVZpZGVvVHJhY2soInZp
ZGVvIiksIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRp
b19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVv
X3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9FUShjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPLCBhdWRpb19zZW5kZXItPkdldEtpbmQoKSk7Ci0gIEVYUEVDVF9FUShjcmlja2V0
OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb19zZW5kZXItPkdldEtpbmQoKSk7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHNlbmRlcmFkYXB0ZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHBzZW5kZXJhZGFwdGVy
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjU0MWNiOGY4NWYzYTY0YWUxYTBm
NDU5NGE0Mjc1NWRlNTFjYmQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMv
b3J0Y3J0cHNlbmRlcmFkYXB0ZXIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAot
LyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm9ydGMvb3J0Y3J0cHNlbmRlcmFkYXB0ZXIu
aCIKLQotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29u
c3RhbnRzLmgiCi0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0KLW5hbWVzcGFjZSB7Ci0KLXZvaWQgRmlsbEF1ZGlvU2Vu
ZGVyUGFyYW1ldGVycyh3ZWJydGM6OlJ0cFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMpIHsKLSAgZm9y
ICh3ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYgY29kZWMgOiBwYXJhbWV0ZXJzLT5jb2RlY3Mp
IHsKLSAgICBpZiAoIWNvZGVjLm51bV9jaGFubmVscykgewotICAgICAgY29kZWMubnVtX2NoYW5u
ZWxzID0gMTsKLSAgICB9Ci0gIH0KLX0KLQotdm9pZCBGaWxsVmlkZW9TZW5kZXJQYXJhbWV0ZXJz
KHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyogcGFyYW1ldGVycykgewotICBmb3IgKHdlYnJ0Yzo6UnRw
Q29kZWNQYXJhbWV0ZXJzJiBjb2RlYyA6IHBhcmFtZXRlcnMtPmNvZGVjcykgewotICAgIGlmICgh
Y29kZWMuY2xvY2tfcmF0ZSkgewotICAgICAgY29kZWMuY2xvY2tfcmF0ZSA9IGNyaWNrZXQ6OmtW
aWRlb0NvZGVjQ2xvY2tyYXRlOwotICAgIH0KLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2UKLQot
bmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLUJFR0lOX09XTkVEX1BST1hZX01BUChPcnRjUnRwU2VuZGVy
KQotUFJPWFlfU0lHTkFMSU5HX1RIUkVBRF9ERVNUUlVDVE9SKCkKLVBST1hZX01FVEhPRDEoUlRD
RXJyb3IsIFNldFRyYWNrLCBNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlKikKLVBST1hZX0NPTlNU
TUVUSE9EMChydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4sIEdl
dFRyYWNrKQotUFJPWFlfTUVUSE9EMShSVENFcnJvciwgU2V0VHJhbnNwb3J0LCBSdHBUcmFuc3Bv
cnRJbnRlcmZhY2UqKQotUFJPWFlfQ09OU1RNRVRIT0QwKFJ0cFRyYW5zcG9ydEludGVyZmFjZSos
IEdldFRyYW5zcG9ydCkKLVBST1hZX01FVEhPRDEoUlRDRXJyb3IsIFNlbmQsIGNvbnN0IFJ0cFBh
cmFtZXRlcnMmKQotUFJPWFlfQ09OU1RNRVRIT0QwKFJ0cFBhcmFtZXRlcnMsIEdldFBhcmFtZXRl
cnMpCi1QUk9YWV9DT05TVE1FVEhPRDAoY3JpY2tldDo6TWVkaWFUeXBlLCBHZXRLaW5kKQotRU5E
X1BST1hZX01BUCgpCi0KLS8vIHN0YXRpYwotc3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJ
bnRlcmZhY2U+IE9ydGNSdHBTZW5kZXJBZGFwdGVyOjpDcmVhdGVQcm94eSgKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckFkYXB0ZXI+IHdyYXBwZWRfc2VuZGVyKSB7Ci0gIFJUQ19E
Q0hFQ0sod3JhcHBlZF9zZW5kZXIpOwotICBydGM6OlRocmVhZCogc2lnbmFsaW5nID0KLSAgICAg
IHdyYXBwZWRfc2VuZGVyLT5ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5zaWduYWxpbmdfdGhy
ZWFkKCk7Ci0gIHJ0Yzo6VGhyZWFkKiB3b3JrZXIgPQotICAgICAgd3JhcHBlZF9zZW5kZXItPnJ0
cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPndvcmtlcl90aHJlYWQoKTsKLSAgcmV0dXJuIE9ydGNS
dHBTZW5kZXJQcm94eTo6Q3JlYXRlKHNpZ25hbGluZywgd29ya2VyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHdyYXBwZWRfc2VuZGVyKSk7Ci19Ci0KLU9y
dGNSdHBTZW5kZXJBZGFwdGVyOjp+T3J0Y1J0cFNlbmRlckFkYXB0ZXIoKSB7Ci0gIGludGVybmFs
X3NlbmRlcl8gPSBudWxscHRyOwotICBTaWduYWxEZXN0cm95ZWQoKTsKLX0KLQotUlRDRXJyb3Ig
T3J0Y1J0cFNlbmRlckFkYXB0ZXI6OlNldFRyYWNrKE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2Uq
IHRyYWNrKSB7Ci0gIGlmICh0cmFjayAmJiBjcmlja2V0OjpNZWRpYVR5cGVGcm9tU3RyaW5nKHRy
YWNrLT5raW5kKCkpICE9IGtpbmRfKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoCi0gICAg
ICAgIFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICJUcmFjayBraW5k
IChhdWRpby92aWRlbykgZG9lc24ndCBtYXRjaCB0aGUga2luZCBvZiB0aGlzIHNlbmRlci4iKTsK
LSAgfQotICBpZiAoaW50ZXJuYWxfc2VuZGVyXyAmJiAhaW50ZXJuYWxfc2VuZGVyXy0+U2V0VHJh
Y2sodHJhY2spKSB7Ci0gICAgLy8gU2luY2Ugd2UgY2hlY2tlZCB0aGUgdHJhY2sgdHlwZSBhYm92
ZSwgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLi4uCi0gICAgUlRDX05PVFJFQUNIRUQoKTsKLSAg
ICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gc2V0IHRyYWNrIG9uIFJ0cFNlbmRlci4i
KTsKLSAgfQotICB0cmFja18gPSB0cmFjazsKLSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQot
Ci1ydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4gT3J0Y1J0cFNl
bmRlckFkYXB0ZXI6OkdldFRyYWNrKCkKLSAgICBjb25zdCB7Ci0gIHJldHVybiB0cmFja187Ci19
Ci0KLVJUQ0Vycm9yIE9ydGNSdHBTZW5kZXJBZGFwdGVyOjpTZXRUcmFuc3BvcnQoUnRwVHJhbnNw
b3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQpIHsKLSAgTE9HX0FORF9SRVRVUk5fRVJST1IoCi0gICAg
ICBSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICJDaGFuZ2luZyB0
aGUgdHJhbnNwb3J0IG9mIGFuIFJ0cFNlbmRlciBpcyBub3QgeWV0IHN1cHBvcnRlZC4iKTsKLX0K
LQotUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBPcnRjUnRwU2VuZGVyQWRhcHRlcjo6R2V0VHJhbnNw
b3J0KCkgY29uc3QgewotICByZXR1cm4gdHJhbnNwb3J0XzsKLX0KLQotUlRDRXJyb3IgT3J0Y1J0
cFNlbmRlckFkYXB0ZXI6OlNlbmQoY29uc3QgUnRwUGFyYW1ldGVycyYgcGFyYW1ldGVycykgewot
ICBSdHBQYXJhbWV0ZXJzIGZpbGxlZF9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKLSAgUlRDRXJy
b3IgZXJyOwotICB1aW50MzJfdCBzc3JjID0gMDsKLSAgc3dpdGNoIChraW5kXykgewotICAgIGNh
c2UgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzoKLSAgICAgIEZpbGxBdWRpb1NlbmRlclBhcmFt
ZXRlcnMoJmZpbGxlZF9wYXJhbWV0ZXJzKTsKLSAgICAgIGVyciA9IHJ0cF90cmFuc3BvcnRfY29u
dHJvbGxlcl8tPlZhbGlkYXRlQW5kQXBwbHlBdWRpb1NlbmRlclBhcmFtZXRlcnMoCi0gICAgICAg
ICAgZmlsbGVkX3BhcmFtZXRlcnMsICZzc3JjKTsKLSAgICAgIGlmICghZXJyLm9rKCkpIHsKLSAg
ICAgICAgcmV0dXJuIGVycjsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgY3JpY2tl
dDo6TUVESUFfVFlQRV9WSURFTzoKLSAgICAgIEZpbGxWaWRlb1NlbmRlclBhcmFtZXRlcnMoJmZp
bGxlZF9wYXJhbWV0ZXJzKTsKLSAgICAgIGVyciA9IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8t
PlZhbGlkYXRlQW5kQXBwbHlWaWRlb1NlbmRlclBhcmFtZXRlcnMoCi0gICAgICAgICAgZmlsbGVk
X3BhcmFtZXRlcnMsICZzc3JjKTsKLSAgICAgIGlmICghZXJyLm9rKCkpIHsKLSAgICAgICAgcmV0
dXJuIGVycjsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgY3JpY2tldDo6TUVESUFf
VFlQRV9EQVRBOgotICAgICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgICAgIHJldHVybiB3ZWJydGM6
OlJUQ0Vycm9yKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUik7Ci0gIH0KLSAg
bGFzdF9hcHBsaWVkX3BhcmFtZXRlcnNfID0gZmlsbGVkX3BhcmFtZXRlcnM7Ci0KLSAgLy8gTm93
IHRoYXQgcGFyYW1ldGVycyB3ZXJlIGFwcGxpZWQsIGNhbiBjYWxsIFNldFNzcmMgb24gdGhlIGlu
dGVybmFsIHNlbmRlci4KLSAgLy8gVGhpcyBpcyBhbmFsb2dvdXMgdG8gYSBQZWVyQ29ubmVjdGlv
biBjYWxsaW5nIFNldFNzcmMgYWZ0ZXIKLSAgLy8gU2V0TG9jYWxEZXNjcmlwdGlvbiBpcyBzdWNj
ZXNzZnVsLgotICAvLwotICAvLyBJZiB0aGVyZSB3ZXJlIG5vIGVuY29kaW5ncywgdGhpcyBTU1JD
IG1heSBiZSAwLCB3aGljaCBpcyB2YWxpZC4KLSAgaWYgKCFpbnRlcm5hbF9zZW5kZXJfKSB7Ci0g
ICAgQ3JlYXRlSW50ZXJuYWxTZW5kZXIoKTsKLSAgfQotICBpbnRlcm5hbF9zZW5kZXJfLT5TZXRT
c3JjKHNzcmMpOwotCi0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQotUnRwUGFyYW1ldGVy
cyBPcnRjUnRwU2VuZGVyQWRhcHRlcjo6R2V0UGFyYW1ldGVycygpIGNvbnN0IHsKLSAgcmV0dXJu
IGxhc3RfYXBwbGllZF9wYXJhbWV0ZXJzXzsKLX0KLQotY3JpY2tldDo6TWVkaWFUeXBlIE9ydGNS
dHBTZW5kZXJBZGFwdGVyOjpHZXRLaW5kKCkgY29uc3QgewotICByZXR1cm4ga2luZF87Ci19Ci0K
LU9ydGNSdHBTZW5kZXJBZGFwdGVyOjpPcnRjUnRwU2VuZGVyQWRhcHRlcigKLSAgICBjcmlja2V0
OjpNZWRpYVR5cGUga2luZCwKLSAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCwK
LSAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogcnRwX3RyYW5zcG9ydF9jb250cm9s
bGVyKQotICAgIDoga2luZF8oa2luZCksCi0gICAgICB0cmFuc3BvcnRfKHRyYW5zcG9ydCksCi0g
ICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfKHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcikg
e30KLQotdm9pZCBPcnRjUnRwU2VuZGVyQWRhcHRlcjo6Q3JlYXRlSW50ZXJuYWxTZW5kZXIoKSB7
Ci0gIHN3aXRjaCAoa2luZF8pIHsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86
IHsKLSAgICAgIGF1dG8qIGF1ZGlvX3NlbmRlciA9IG5ldyBBdWRpb1J0cFNlbmRlcigKLSAgICAg
ICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT53b3JrZXJfdGhyZWFkKCksIC8qaWQ9Ki8i
IiwgbnVsbHB0cik7Ci0gICAgICBhdXRvKiB2b2ljZV9jaGFubmVsID0gcnRwX3RyYW5zcG9ydF9j
b250cm9sbGVyXy0+dm9pY2VfY2hhbm5lbCgpOwotICAgICAgUlRDX0RDSEVDSyh2b2ljZV9jaGFu
bmVsKTsKLSAgICAgIGF1ZGlvX3NlbmRlci0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwodm9pY2VfY2hh
bm5lbC0+bWVkaWFfY2hhbm5lbCgpKTsKLSAgICAgIGludGVybmFsX3NlbmRlcl8gPSBhdWRpb19z
ZW5kZXI7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBF
X1ZJREVPOiB7Ci0gICAgICBhdXRvKiB2aWRlb19zZW5kZXIgPSBuZXcgVmlkZW9SdHBTZW5kZXIo
Ci0gICAgICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+d29ya2VyX3RocmVhZCgpLCAv
KmlkPSovIiIpOwotICAgICAgYXV0byogdmlkZW9fY2hhbm5lbCA9IHJ0cF90cmFuc3BvcnRfY29u
dHJvbGxlcl8tPnZpZGVvX2NoYW5uZWwoKTsKLSAgICAgIFJUQ19EQ0hFQ0sodmlkZW9fY2hhbm5l
bCk7Ci0gICAgICB2aWRlb19zZW5kZXItPlNldFZpZGVvTWVkaWFDaGFubmVsKHZpZGVvX2NoYW5u
ZWwtPm1lZGlhX2NoYW5uZWwoKSk7Ci0gICAgICBpbnRlcm5hbF9zZW5kZXJfID0gdmlkZW9fc2Vu
ZGVyOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9E
QVRBOgotICAgICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgfQotICBpZiAodHJhY2tfKSB7Ci0gICAg
aWYgKCFpbnRlcm5hbF9zZW5kZXJfLT5TZXRUcmFjayh0cmFja18pKSB7Ci0gICAgICAvLyBTaW5j
ZSB3ZSBjaGVja2VkIHRoZSB0cmFjayB0eXBlIHdoZW4gaXQgd2FzIHNldCwgdGhpcyBzaG91bGQg
bmV2ZXIKLSAgICAgIC8vIGhhcHBlbi4uLgotICAgICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgICB9
Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwc2VuZGVyYWRhcHRl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRj
cnRwc2VuZGVyYWRhcHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDc4ZGE5
ODVjOWQxOGEwNjg4NjIyMGQyNDlmOGE5MDk0ZmM1YWJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL29ydGMvb3J0Y3J0cHNlbmRlcmFkYXB0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDc5ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgT1JUQ19PUlRDUlRQU0VO
REVSQURBUFRFUl9IXwotI2RlZmluZSBPUlRDX09SVENSVFBTRU5ERVJBREFQVEVSX0hfCi0KLSNp
bmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvb3J0Yy9vcnRjcnRwc2VuZGVyaW50ZXJm
YWNlLmgiCi0jaW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCi0jaW5jbHVkZSAiYXBpL3J0cHBhcmFt
ZXRlcnMuaCIKLSNpbmNsdWRlICJvcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmgi
Ci0jaW5jbHVkZSAicGMvcnRwc2VuZGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0
b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xv
dC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgT3J0Y1J0
cFNlbmRlckludGVyZmFjZSB0aGF0IHdvcmtzIHdpdGggUnRwVHJhbnNwb3J0QWRhcHRlciwKLS8v
IGFuZCB3cmFwcyBhIFZpZGVvUnRwU2VuZGVyL0F1ZGlvUnRwU2VuZGVyIHRoYXQncyBub3JtYWxs
eSB1c2VkIHdpdGggdGhlCi0vLyBQZWVyQ29ubmVjdGlvbi4KLS8vCi0vLyBUT0RPKGRlYWRiZWVm
KTogV2hlbiBCYXNlQ2hhbm5lbCBpcyBzcGxpdCBhcGFydCBpbnRvIHNlcGFyYXRlCi0vLyAiUnRw
U2VuZGVyIi8iUnRwVHJhbnNjZWl2ZXIiLyJSdHBTZW5kZXIiLyJSdHBSZWNlaXZlciIgb2JqZWN0
cywgdGhpcyBhZGFwdGVyCi0vLyBvYmplY3QgY2FuIGJlIHJlbW92ZWQuCi1jbGFzcyBPcnRjUnRw
U2VuZGVyQWRhcHRlciA6IHB1YmxpYyBPcnRjUnRwU2VuZGVySW50ZXJmYWNlIHsKLSBwdWJsaWM6
Ci0gIC8vIFdyYXBzIHx3cmFwcGVkX3NlbmRlcnwgaW4gYSBwcm94eSB0aGF0IHdpbGwgc2FmZWx5
IGNhbGwgbWV0aG9kcyBvbiB0aGUKLSAgLy8gY29ycmVjdCB0aHJlYWQuCi0gIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVyZmFjZT4gQ3JlYXRlUHJveHkoCi0gICAgICBz
dGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckFkYXB0ZXI+IHdyYXBwZWRfc2VuZGVyKTsKLQot
ICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgYnkgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0
ZXIuCi0gIE9ydGNSdHBTZW5kZXJBZGFwdGVyKGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAg
ICAgICAgICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90
cmFuc3BvcnRfY29udHJvbGxlcik7Ci0gIH5PcnRjUnRwU2VuZGVyQWRhcHRlcigpIG92ZXJyaWRl
OwotCi0gIC8vIE9ydGNSdHBTZW5kZXJJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uCi0gIFJUQ0Vy
cm9yIFNldFRyYWNrKE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2UqIHRyYWNrKSBvdmVycmlkZTsK
LSAgcnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+IEdldFRyYWNr
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgUlRDRXJyb3IgU2V0VHJhbnNwb3J0KFJ0cFRyYW5zcG9y
dEludGVyZmFjZSogdHJhbnNwb3J0KSBvdmVycmlkZTsKLSAgUnRwVHJhbnNwb3J0SW50ZXJmYWNl
KiBHZXRUcmFuc3BvcnQoKSBjb25zdCBvdmVycmlkZTsKLQotICBSVENFcnJvciBTZW5kKGNvbnN0
IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIG92ZXJyaWRlOwotICBSdHBQYXJhbWV0ZXJzIEdl
dFBhcmFtZXRlcnMoKSBjb25zdCBvdmVycmlkZTsKLQotICBjcmlja2V0OjpNZWRpYVR5cGUgR2V0
S2luZCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gIC8vIFVzZWQgc28gdGhhdCB0aGUgUnRwVHJhbnNw
b3J0Q29udHJvbGxlckFkYXB0ZXIga25vd3Mgd2hlbiBpdCBjYW4KLSAgLy8gZGVhbGxvY2F0ZSBy
ZXNvdXJjZXMgYWxsb2NhdGVkIGZvciB0aGlzIG9iamVjdC4KLSAgc2lnc2xvdDo6c2lnbmFsMDw+
IFNpZ25hbERlc3Ryb3llZDsKLQotIHByaXZhdGU6Ci0gIHZvaWQgQ3JlYXRlSW50ZXJuYWxTZW5k
ZXIoKTsKLQotICBjcmlja2V0OjpNZWRpYVR5cGUga2luZF87Ci0gIFJ0cFRyYW5zcG9ydEludGVy
ZmFjZSogdHJhbnNwb3J0XzsKLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90
cmFuc3BvcnRfY29udHJvbGxlcl87Ci0gIC8vIFNjb3BlZCByZWZwdHIgZHVlIHRvIHJlZi1jb3Vu
dGVkIGludGVyZmFjZSwgYnV0IHdlIHNob3VsZCBiZSB0aGUgb25seQotICAvLyByZWZlcmVuY2Ug
aG9sZGVyLgotICBydGM6OnNjb3BlZF9yZWZwdHI8UnRwU2VuZGVySW50ZXJuYWw+IGludGVybmFs
X3NlbmRlcl87Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNl
PiB0cmFja187Ci0gIFJ0cFBhcmFtZXRlcnMgbGFzdF9hcHBsaWVkX3BhcmFtZXRlcnNfOwotCi0g
IFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoT3J0Y1J0cFNlbmRlckFkYXB0ZXIp
OwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE9SVENfT1JUQ1JU
UFNFTkRFUkFEQVBURVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRfdW5pdHRl
c3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYWQ0M2ZhYjNlZGVlNzA0MDVi
YTU1MjFkOTE1ZGZiNTkzMDliOGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0
Yy9ydHB0cmFuc3BvcnRfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyODYgKzAsMCBA
QAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
LSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgImFw
aS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5j
bHVkZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKLSNpbmNsdWRlICJvcnRjL29ydGNm
YWN0b3J5LmgiCi0jaW5jbHVkZSAib3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5oIgotI2luY2x1ZGUg
InAycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9ndW5p
dC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVGhpcyB0ZXN0IHVzZXMgZmFrZSBwYWNr
ZXQgdHJhbnNwb3J0cyBhbmQgYSBmYWtlIG1lZGlhIGVuZ2luZSwgaW4gb3JkZXIgdG8KLS8vIHRl
c3QgdGhlIFJ0cFRyYW5zcG9ydCBhdCBvbmx5IGFuIEFQSSBsZXZlbC4gQW55IGVuZC10by1lbmQg
dGVzdCBzaG91bGQgZ28gaW4KLS8vIG9ydGNmYWN0b3J5X2ludGVncmF0aW9udGVzdC5jYyBpbnN0
ZWFkLgotY2xhc3MgUnRwVHJhbnNwb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBw
dWJsaWM6Ci0gIFJ0cFRyYW5zcG9ydFRlc3QoKSB7Ci0gICAgZmFrZV9tZWRpYV9lbmdpbmVfID0g
bmV3IGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZSgpOwotICAgIC8vIE5vdGU6IFRoaXMgZG9lc24n
dCBuZWVkIHRvIHVzZSBmYWtlIG5ldHdvcmsgY2xhc3Nlcywgc2luY2UgaXQgdXNlcwotICAgIC8v
IEZha2VQYWNrZXRUcmFuc3BvcnRzLgotICAgIGF1dG8gcmVzdWx0ID0gT3J0Y0ZhY3Rvcnk6OkNy
ZWF0ZSgKLSAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNl
PihmYWtlX21lZGlhX2VuZ2luZV8pLAotICAgICAgICBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVy
RmFjdG9yeSgpLCBDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpKTsKLSAgICBvcnRj
X2ZhY3RvcnlfID0gcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8v
IE93bmVkIGJ5IHxvcnRjX2ZhY3RvcnlffC4KLSAgY3JpY2tldDo6RmFrZU1lZGlhRW5naW5lKiBm
YWtlX21lZGlhX2VuZ2luZV87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFj
ZT4gb3J0Y19mYWN0b3J5XzsKLX07Ci0KLS8vIFRlc3QgR2V0UnRwUGFja2V0VHJhbnNwb3J0IGFu
ZCBHZXRSdGNwUGFja2V0VHJhbnNwb3J0LCB3aXRoIGFuZCB3aXRob3V0IFJUQ1AKLS8vIG11eGlu
Zy4KLVRFU1RfRihSdHBUcmFuc3BvcnRUZXN0LCBHZXRQYWNrZXRUcmFuc3BvcnRzKSB7Ci0gIHJ0
Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBydHAoInJ0cCIpOwotICBydGM6OkZha2VQYWNrZXRUcmFu
c3BvcnQgcnRjcCgicnRjcCIpOwotICAvLyBXaXRoIG11eGVkIFJUQ1AuCi0gIFJ0cFRyYW5zcG9y
dFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IHRydWU7Ci0g
IGF1dG8gcmVzdWx0ID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydChw
YXJhbWV0ZXJzLCAmcnRwLCBudWxscHRyLCBudWxscHRyKTsKLSAgQVNTRVJUX1RSVUUocmVzdWx0
Lm9rKCkpOwotICBFWFBFQ1RfRVEoJnJ0cCwgcmVzdWx0LnZhbHVlKCktPkdldFJ0cFBhY2tldFRy
YW5zcG9ydCgpKTsKLSAgRVhQRUNUX0VRKG51bGxwdHIsIHJlc3VsdC52YWx1ZSgpLT5HZXRSdGNw
UGFja2V0VHJhbnNwb3J0KCkpOwotICByZXN1bHQuTW92ZVZhbHVlKCkucmVzZXQoKTsKLSAgLy8g
V2l0aCBub24tbXV4ZWQgUlRDUC4KLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IGZhbHNlOwotICBy
ZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQocGFyYW1ldGVycywgJnJ0
cCwgJnJ0Y3AsIG51bGxwdHIpOwotICBBU1NFUlRfVFJVRShyZXN1bHQub2soKSk7Ci0gIEVYUEVD
VF9FUSgmcnRwLCByZXN1bHQudmFsdWUoKS0+R2V0UnRwUGFja2V0VHJhbnNwb3J0KCkpOwotICBF
WFBFQ1RfRVEoJnJ0Y3AsIHJlc3VsdC52YWx1ZSgpLT5HZXRSdGNwUGFja2V0VHJhbnNwb3J0KCkp
OwotfQotCi0vLyBJZiBhbiBSdHBUcmFuc3BvcnQgc3RhcnRzIG91dCB1bi1tdXhlZCBhbmQgdGhl
biBzdGFydHMgbXV4aW5nLCB0aGUgUlRDUAotLy8gcGFja2V0IHRyYW5zcG9ydCBzaG91bGQgYmUg
Zm9yZ290dGVuIGFuZCBHZXRSdGNwUGFja2V0VHJhbnNwb3J0IHNob3VsZAotLy8gcmV0dXJuIG51
bGwuCi1URVNUX0YoUnRwVHJhbnNwb3J0VGVzdCwgRW5hYmxpbmdSdGNwTXV4aW5nVW5zZXRzUnRj
cFRyYW5zcG9ydCkgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRwKCJydHAiKTsKLSAg
cnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0Y3AoInJ0Y3AiKTsKLQotICAvLyBDcmVhdGUgbm9u
LW11eGVkLgotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRl
cnMucnRjcC5tdXggPSBmYWxzZTsKLSAgYXV0byByZXN1bHQgPQotICAgICAgb3J0Y19mYWN0b3J5
Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KHBhcmFtZXRlcnMsICZydHAsICZydGNwLCBudWxscHRyKTsK
LSAgQVNTRVJUX1RSVUUocmVzdWx0Lm9rKCkpOwotICBhdXRvIHJ0cF90cmFuc3BvcnQgPSByZXN1
bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gRW5hYmxlIG11eGluZy4KLSAgcGFyYW1ldGVycy5ydGNw
Lm11eCA9IHRydWU7Ci0gIEVYUEVDVF9UUlVFKHJ0cF90cmFuc3BvcnQtPlNldFBhcmFtZXRlcnMo
cGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9FUShudWxscHRyLCBydHBfdHJhbnNwb3J0LT5H
ZXRSdGNwUGFja2V0VHJhbnNwb3J0KCkpOwotfQotCi1URVNUX0YoUnRwVHJhbnNwb3J0VGVzdCwg
R2V0QW5kU2V0UnRjcFBhcmFtZXRlcnMpIHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0
cCgicnRwIik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBydGNwKCJydGNwIik7Ci0gIC8v
IFN0YXJ0IHdpdGggbm9uLW11eGVkIFJUQ1AuCi0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFy
YW1ldGVyczsKLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IGZhbHNlOwotICBwYXJhbWV0ZXJzLnJ0
Y3AuY25hbWUgPSAidGVTVCI7Ci0gIHBhcmFtZXRlcnMucnRjcC5yZWR1Y2VkX3NpemUgPSBmYWxz
ZTsKLSAgYXV0byByZXN1bHQgPQotICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNw
b3J0KHBhcmFtZXRlcnMsICZydHAsICZydGNwLCBudWxscHRyKTsKLSAgQVNTRVJUX1RSVUUocmVz
dWx0Lm9rKCkpOwotICBhdXRvIHRyYW5zcG9ydCA9IHJlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQ
RUNUX0VRKHBhcmFtZXRlcnMsIHRyYW5zcG9ydC0+R2V0UGFyYW1ldGVycygpKTsKLQotICAvLyBD
aGFuZ2luZyB0aGUgQ05BTUUgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkLgotICBwYXJhbWV0ZXJz
LnJ0Y3AuY25hbWUgPSAiZGlmZmVyZW50IjsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5T
VVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgdHJhbnNwb3J0LT5TZXRQYXJhbWV0ZXJz
KHBhcmFtZXRlcnMpLnR5cGUoKSk7Ci0gIHBhcmFtZXRlcnMucnRjcC5jbmFtZSA9ICJ0ZVNUIjsK
LQotICAvLyBFbmFibGUgUlRDUCBtdXhpbmcgYW5kIHJlZHVjZWQtc2l6ZSBSVENQLgotICBwYXJh
bWV0ZXJzLnJ0Y3AubXV4ID0gdHJ1ZTsKLSAgcGFyYW1ldGVycy5ydGNwLnJlZHVjZWRfc2l6ZSA9
IHRydWU7Ci0gIEVYUEVDVF9UUlVFKHRyYW5zcG9ydC0+U2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJz
KS5vaygpKTsKLSAgRVhQRUNUX0VRKHBhcmFtZXRlcnMsIHRyYW5zcG9ydC0+R2V0UGFyYW1ldGVy
cygpKTsKLQotICAvLyBFbXB0eSBDTkFNRSBzaG91bGQgcmVzdWx0IGluIHRoZSBleGlzdGluZyBD
TkFNRSBiZWluZyB1c2VkLgotICBwYXJhbWV0ZXJzLnJ0Y3AuY25hbWUuY2xlYXIoKTsKLSAgRVhQ
RUNUX1RSVUUodHJhbnNwb3J0LT5TZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLm9rKCkpOwotICBF
WFBFQ1RfRVEoInRlU1QiLCB0cmFuc3BvcnQtPkdldFBhcmFtZXRlcnMoKS5ydGNwLmNuYW1lKTsK
LQotICAvLyBEaXNhYmxpbmcgUlRDUCBtdXhpbmcgYWZ0ZXIgZW5hYmxpbmcgc2hvdWxkbid0IGJl
IGFsbG93ZWQsIHNpbmNlIGVuYWJsaW5nCi0gIC8vIG11eGluZyBzaG91bGQgaGF2ZSBtYWRlIHRo
ZSBSVFAgdHJhbnNwb3J0IGZvcmdldCBhYm91dCB0aGUgUlRDUCBwYWNrZXQKLSAgLy8gdHJhbnNw
b3J0IGluaXRpYWxseSBwYXNzZWQgaW50byBpdC4KLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IGZh
bHNlOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1NUQVRFLAotICAgICAgICAg
ICAgdHJhbnNwb3J0LT5TZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLnR5cGUoKSk7Ci19Ci0KLS8v
IFdoZW4gU2VuZCBvciBSZWNlaXZlIGlzIGNhbGxlZCBvbiBhIHNlbmRlciBvciByZWNlaXZlciwg
dGhlIFJUQ1AgcGFyYW1ldGVycwotLy8gZnJvbSB0aGUgUnRwVHJhbnNwb3J0IHVuZGVybmVhdGgg
dGhlIHNlbmRlciBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgY3JlYXRlZAotLy8gbWVkaWEgc3Ry
ZWFtLiBUaGUgb25seSByZWxldmFudCBwYXJhbWV0ZXJzIChjdXJyZW50bHkpIGFyZSB8Y25hbWV8
IGFuZAotLy8gfHJlZHVjZWRfc2l6ZXwuCi1URVNUX0YoUnRwVHJhbnNwb3J0VGVzdCwgU2VuZEFu
ZFJlY2VpdmVBcHBseVJ0Y3BQYXJhbWV0ZXJzVG9NZWRpYUVuZ2luZSkgewotICAvLyBGaXJzdCwg
Y3JlYXRlIHZpZGVvIHRyYW5zcG9ydCB3aXRoIHJlZHVjZWQtc2l6ZSBSVENQLgotICBydGM6OkZh
a2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRfdHJhbnNwb3J0MSgiMSIpOwotICBSdHBUcmFu
c3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRlcnMucnRjcC5tdXggPSB0cnVl
OwotICBwYXJhbWV0ZXJzLnJ0Y3AucmVkdWNlZF9zaXplID0gdHJ1ZTsKLSAgcGFyYW1ldGVycy5y
dGNwLmNuYW1lID0gImZvbyI7Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRjX2Zh
Y3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBwYXJhbWV0ZXJzLCAmZmFrZV9wYWNr
ZXRfdHJhbnNwb3J0MSwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIGF1dG8gdmlkZW9fdHJhbnNwb3J0
ID0gcnRwX3RyYW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gQ3JlYXRlIHZpZGVv
IHNlbmRlciBhbmQgY2FsbCBTZW5kLCBleHBlY3RpbmcgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVk
LgotICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIo
Y3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIGF1dG8g
dmlkZW9fc2VuZGVyID0gc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUo
dmlkZW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpKS5vaygpKTsKLSAg
Y3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAg
ICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShu
dWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVvX2No
YW5uZWwtPnNlbmRfcnRjcF9wYXJhbWV0ZXJzKCkucmVkdWNlZF9zaXplKTsKLSAgQVNTRVJUX0VR
KDF1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpLnNpemUoKSk7Ci0gIGNvbnN0
IGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYgdmlkZW9fc2VuZF9zdHJlYW0gPQotICAgICAgZmFrZV92
aWRlb19jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVswXTsKLSAgRVhQRUNUX0VRKCJmb28iLCB2aWRl
b19zZW5kX3N0cmVhbS5jbmFtZSk7Ci0KLSAgLy8gQ3JlYXRlIHZpZGVvIHJlY2VpdmVyIGFuZCBj
YWxsIFJlY2VpdmUsIGV4cGVjdGluZyBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQKLSAgLy8gKG1p
bnVzIHxjbmFtZXwsIHNpbmNlIHRoYXQncyB0aGUgc2VudCBjbmFtZSwgbm90IHJlY2VpdmVkKS4K
LSAgYXV0byByZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZl
cigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3RyYW5zcG9ydC5nZXQo
KSk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXIgPSByZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7
Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgdmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmlt
YWxWcDhQYXJhbWV0ZXJzV2l0aFNzcmMoMHhkZWFkYmVlZikpCi0gICAgICAgICAgLm9rKCkpOwot
ICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3ZfcnRjcF9wYXJhbWV0ZXJzKCku
cmVkdWNlZF9zaXplKTsKLQotICAvLyBDcmVhdGUgYXVkaW8gdHJhbnNwb3J0IHdpdGggbm9uLXJl
ZHVjZWQgc2l6ZSBSVENQLgotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRf
dHJhbnNwb3J0MigiMiIpOwotICBwYXJhbWV0ZXJzLnJ0Y3AucmVkdWNlZF9zaXplID0gZmFsc2U7
Ci0gIHBhcmFtZXRlcnMucnRjcC5jbmFtZSA9ICJiYXIiOwotICBydHBfdHJhbnNwb3J0X3Jlc3Vs
dCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIHBhcmFtZXRlcnMs
ICZmYWtlX3BhY2tldF90cmFuc3BvcnQyLCBudWxscHRyLCBudWxscHRyKTsKLSAgYXV0byBhdWRp
b190cmFuc3BvcnQgPSBydHBfdHJhbnNwb3J0X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAvLyBD
cmVhdGUgYXVkaW8gc2VuZGVyIGFuZCBjYWxsIFNlbmQsIGV4cGVjdGluZyBwYXJhbWV0ZXJzIHRv
IGJlIGFwcGxpZWQuCi0gIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBT
ZW5kZXIoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb190cmFuc3BvcnQuZ2V0KCkpOwotICBhdXRv
IGF1ZGlvX3NlbmRlciA9IHNlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVF
KGF1ZGlvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbElzYWNQYXJhbWV0ZXJzKCkpLm9rKCkpOwot
Ci0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0K
LSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRf
TkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX0ZBTFNFKGZha2Vfdm9p
Y2VfY2hhbm5lbC0+c2VuZF9ydGNwX3BhcmFtZXRlcnMoKS5yZWR1Y2VkX3NpemUpOwotICBBU1NF
UlRfRVEoMXUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+c2VuZF9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAg
Y29uc3QgY3JpY2tldDo6U3RyZWFtUGFyYW1zJiBhdWRpb19zZW5kX3N0cmVhbSA9Ci0gICAgICBm
YWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpWzBdOwotICBFWFBFQ1RfRVEoImJhciIs
IGF1ZGlvX3NlbmRfc3RyZWFtLmNuYW1lKTsKLQotICAvLyBDcmVhdGUgYXVkaW8gcmVjZWl2ZXIg
YW5kIGNhbGwgUmVjZWl2ZSwgZXhwZWN0aW5nIHBhcmFtZXRlcnMgdG8gYmUgYXBwbGllZAotICAv
LyAobWludXMgfGNuYW1lfCwgc2luY2UgdGhhdCdzIHRoZSBzZW50IGNuYW1lLCBub3QgcmVjZWl2
ZWQpLgotICByZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZl
cihjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb190cmFuc3BvcnQuZ2V0KCkpOwotICBhdXRv
IGF1ZGlvX3JlY2VpdmVyID0gcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1Rf
VFJVRSgKLSAgICAgIGF1ZGlvX3JlY2VpdmVyLT5SZWNlaXZlKE1ha2VNaW5pbWFsT3B1c1BhcmFt
ZXRlcnNXaXRoU3NyYygweGJhYWRmMDBkKSkKLSAgICAgICAgICAub2soKSk7Ci0gIEVYUEVDVF9G
QUxTRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3ZfcnRjcF9wYXJhbWV0ZXJzKCkucmVkdWNlZF9z
aXplKTsKLX0KLQotLy8gV2hlbiBTZXRQYXJhbWV0ZXJzIGlzIGNhbGxlZCwgdGhlIG1vZGlmaWVk
IHBhcmFtZXRlcnMgc2hvdWxkIGJlIGFwcGxpZWQKLS8vIHRvIHRoZSBtZWRpYSBlbmdpbmUuCi0v
LyBUT0RPKGRlYWRiZWVmKTogT25jZSB0aGUgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgY2hhbmdp
bmcgdGhlIENOQU1FLAotLy8gdGVzdCB0aGF0IGhlcmUuCi1URVNUX0YoUnRwVHJhbnNwb3J0VGVz
dCwgU2V0UnRjcFBhcmFtZXRlcnNBcHBsaWVzUGFyYW1ldGVyc1RvTWVkaWFFbmdpbmUpIHsKLSAg
cnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IGZha2VfcGFja2V0X3RyYW5zcG9ydCgiZmFrZSIpOwot
ICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRlcnMucnRjcC5t
dXggPSB0cnVlOwotICBwYXJhbWV0ZXJzLnJ0Y3AucmVkdWNlZF9zaXplID0gZmFsc2U7Ci0gIGF1
dG8gcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3Bv
cnQoCi0gICAgICBwYXJhbWV0ZXJzLCAmZmFrZV9wYWNrZXRfdHJhbnNwb3J0LCBudWxscHRyLCBu
dWxscHRyKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0ID0gcnRwX3RyYW5zcG9ydF9yZXN1bHQuTW92
ZVZhbHVlKCk7Ci0KLSAgLy8gQ3JlYXRlIHZpZGVvIHNlbmRlciBhbmQgY2FsbCBTZW5kLCBhcHBs
eWluZyBhbiBpbml0aWFsIHNldCBvZiBwYXJhbWV0ZXJzLgotICBhdXRvIHNlbmRlcl9yZXN1bHQg
PSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoY3JpY2tldDo6TUVESUFfVFlQRV9WSURF
TywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJ0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBhdXRvIHNlbmRlciA9IHNlbmRlcl9yZXN1bHQuTW92
ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKHNlbmRlci0+U2VuZChNYWtlTWluaW1hbFZwOFBhcmFt
ZXRlcnMoKSkub2soKSk7Ci0KLSAgLy8gTW9kaWZ5IHBhcmFtZXRlcnMgYW5kIGV4cGVjdCB0aGVt
IHRvIGJlIGNoYW5nZWQgYXQgdGhlIG1lZGlhIGVuZ2luZSBsZXZlbC4KLSAgcGFyYW1ldGVycy5y
dGNwLnJlZHVjZWRfc2l6ZSA9IHRydWU7Ci0gIEVYUEVDVF9UUlVFKHJ0cF90cmFuc3BvcnQtPlNl
dFBhcmFtZXRlcnMocGFyYW1ldGVycykub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZpZGVvTWVk
aWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVf
LT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZpZGVvX2No
YW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfcnRjcF9wYXJh
bWV0ZXJzKCkucmVkdWNlZF9zaXplKTsKLX0KLQotLy8gU2V0UGFyYW1ldGVycyBzaG91bGQgc2V0
IGtlZXBhbGl2ZSBmb3IgYWxsIFJUUCB0cmFuc3BvcnRzLgotLy8gSXQgaXMgaW1wb3NzaWJsZSB0
byBtb2RpZnkga2VlcGFsaXZlIHBhcmFtZXRlcnMgaWYgYW55IHN0cmVhbXMgYXJlIGNyZWF0ZWQu
Ci0vLyBOb3RlOiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBmb3IgY3VycmVudCB3
YXkgb2YgY29uZmlndXJpbmcgdGhlCi0vLyBrZWVwLWFsaXZlLiBJdCBtYXkgY2hhbmdlIGluIHRo
ZSBmdXR1cmUuCi1URVNUX0YoUnRwVHJhbnNwb3J0VGVzdCwgQ2FudENoYW5nZUtlZXBBbGl2ZUFm
dGVyQ3JlYXRlZFNlbmRTdHJlYW1zKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBmYWtl
X3BhY2tldF90cmFuc3BvcnQoImZha2UiKTsKLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotICBwYXJhbWV0ZXJzLmtlZXBhbGl2ZS50aW1lb3V0X2ludGVydmFsX21zID0gMTAw
OwotICBhdXRvIHJ0cF90cmFuc3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRw
VHJhbnNwb3J0KAotICAgICAgcGFyYW1ldGVycywgJmZha2VfcGFja2V0X3RyYW5zcG9ydCwgbnVs
bHB0ciwgbnVsbHB0cik7Ci0gIEFTU0VSVF9UUlVFKHJ0cF90cmFuc3BvcnRfcmVzdWx0Lm9rKCkp
OwotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPiBydHBfdHJhbnNwb3J0
ID0KLSAgICAgIHJ0cF90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIC8vIFVwZGF0
aW5nIGtlZXBhbGl2ZSBwYXJhbWV0ZXJzIGlzIG9rLCBzaW5jZSBubyBydHAgc2VuZGVyIGNyZWF0
ZWQuCi0gIHBhcmFtZXRlcnMua2VlcGFsaXZlLnRpbWVvdXRfaW50ZXJ2YWxfbXMgPSAyMDA7Ci0g
IEVYUEVDVF9UUlVFKHJ0cF90cmFuc3BvcnQtPlNldFBhcmFtZXRlcnMocGFyYW1ldGVycykub2so
KSk7Ci0KLSAgLy8gQ3JlYXRlIHZpZGVvIHNlbmRlci4gTm90ZTogfHNlbmRlcl9yZXN1bHR8IHNj
b3BlIG11c3QgZXh0ZW5kIHBhc3QgdGhlCi0gIC8vIFNldFBhcmFtZXRlcnMoKSBjYWxsIGJlbG93
LgotICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIo
Y3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1Rf
VFJVRShzZW5kZXJfcmVzdWx0Lm9rKCkpOwotCi0gIC8vIE1vZGlmeSBwYXJhbWV0ZXJzIHNlY29u
ZCB0aW1lIGFmdGVyIHZpZGVvIHNlbmQgc3RyZWFtIGNyZWF0ZWQuCi0gIHBhcmFtZXRlcnMua2Vl
cGFsaXZlLnRpbWVvdXRfaW50ZXJ2YWxfbXMgPSAxMDsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlw
ZTo6SU5WQUxJRF9NT0RJRklDQVRJT04sCi0gICAgICAgICAgICBydHBfdHJhbnNwb3J0LT5TZXRQ
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpLnR5cGUoKSk7Ci19Ci0KLS8vIE5vdGU6IFRoaXMgaXMgYW4g
aW1wbGVtZW50YXRpb24gZGV0YWlsIGZvciBjdXJyZW50IHdheSBvZiBjb25maWd1cmluZyB0aGUK
LS8vIGtlZXAtYWxpdmUuIEl0IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KLVRFU1RfRihSdHBU
cmFuc3BvcnRUZXN0LCBLZWVwQWxpdmVNdXN0QmVTYW1lQWNyb3NzVHJhbnNwb3J0Q29udHJvbGxl
cikgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRfdHJhbnNwb3J0KCJm
YWtlIik7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgcGFyYW1ldGVy
cy5rZWVwYWxpdmUudGltZW91dF9pbnRlcnZhbF9tcyA9IDEwMDsKLQotICAvLyBNYW51YWxseSBj
cmVhdGUgYSBjb250cm9sbGVyLCB0aGF0IGNhbiBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgdHJhbnNw
b3J0cy4KLSAgYXV0byBjb250cm9sbGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0
cFRyYW5zcG9ydENvbnRyb2xsZXIoKTsKLSAgQVNTRVJUX1RSVUUoY29udHJvbGxlcl9yZXN1bHQu
b2soKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNl
PiBjb250cm9sbGVyID0KLSAgICAgIGNvbnRyb2xsZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0g
IC8vIENyZWF0ZSBhIGZpcnN0IHRyYW5zcG9ydC4KLSAgYXV0byBmaXJzdF90cmFuc3BvcnRfcmVz
dWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgcGFyYW1ldGVy
cywgJmZha2VfcGFja2V0X3RyYW5zcG9ydCwgbnVsbHB0ciwgY29udHJvbGxlci5nZXQoKSk7Ci0g
IEFTU0VSVF9UUlVFKGZpcnN0X3RyYW5zcG9ydF9yZXN1bHQub2soKSk7Ci0KLSAgLy8gVXBkYXRl
IHRoZSBwYXJhbWV0ZXJzLCBhbmQgY3JlYXRlIGFub3RoZXIgdHJhbnNwb3J0IGZvciB0aGUgc2Ft
ZQotICAvLyBjb250cm9sbGVyLgotICBwYXJhbWV0ZXJzLmtlZXBhbGl2ZS50aW1lb3V0X2ludGVy
dmFsX21zID0gMTA7Ci0gIGF1dG8gc2Vjb25kc190cmFuc3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0
b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgcGFyYW1ldGVycywgJmZha2VfcGFja2V0
X3RyYW5zcG9ydCwgbnVsbHB0ciwgY29udHJvbGxlci5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSVENF
cnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLAotICAgICAgICAgICAgc2Vjb25kc190cmFu
c3BvcnRfcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
b3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4NGMyZWYwOWU2NmVkZGI5YWM3ODRjMzcxNjExZGU3MjNmZWE3YWUw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0YWRhcHRl
ci5jYworKysgL2Rldi9udWxsCkBAIC0xLDIzMCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAy
MDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwot
Ci0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmgiCi0KLSNpbmNsdWRlIDxhbGdv
cml0aG0+ICAvLyBGb3Igc3RkOjpmaW5kLgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDx1dGls
aXR5PiAgLy8gRm9yIHN0ZDo6bW92ZS4KLQotI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5o
IgotI2luY2x1ZGUgImFwaS9wcm94eS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
LQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLUJFR0lOX09XTkVEX1BST1hZX01BUChSdHBUcmFuc3Bv
cnQpCi1QUk9YWV9TSUdOQUxJTkdfVEhSRUFEX0RFU1RSVUNUT1IoKQotUFJPWFlfQ09OU1RNRVRI
T0QwKFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSosIEdldFJ0cFBhY2tldFRyYW5zcG9ydCkKLVBS
T1hZX0NPTlNUTUVUSE9EMChQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqLCBHZXRSdGNwUGFja2V0
VHJhbnNwb3J0KQotUFJPWFlfTUVUSE9EMShSVENFcnJvciwgU2V0UGFyYW1ldGVycywgY29uc3Qg
UnRwVHJhbnNwb3J0UGFyYW1ldGVycyYpCi1QUk9YWV9DT05TVE1FVEhPRDAoUnRwVHJhbnNwb3J0
UGFyYW1ldGVycywgR2V0UGFyYW1ldGVycykKLXByb3RlY3RlZDoKLVJ0cFRyYW5zcG9ydEFkYXB0
ZXIqIEdldEludGVybmFsKCkgb3ZlcnJpZGUgewotICByZXR1cm4gaW50ZXJuYWwoKTsKLX0KLUVO
RF9QUk9YWV9NQVAoKQotCi1CRUdJTl9PV05FRF9QUk9YWV9NQVAoU3J0cFRyYW5zcG9ydCkKLVBS
T1hZX1NJR05BTElOR19USFJFQURfREVTVFJVQ1RPUigpCi1QUk9YWV9DT05TVE1FVEhPRDAoUGFj
a2V0VHJhbnNwb3J0SW50ZXJmYWNlKiwgR2V0UnRwUGFja2V0VHJhbnNwb3J0KQotUFJPWFlfQ09O
U1RNRVRIT0QwKFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSosIEdldFJ0Y3BQYWNrZXRUcmFuc3Bv
cnQpCi1QUk9YWV9NRVRIT0QxKFJUQ0Vycm9yLCBTZXRQYXJhbWV0ZXJzLCBjb25zdCBSdHBUcmFu
c3BvcnRQYXJhbWV0ZXJzJikKLVBST1hZX0NPTlNUTUVUSE9EMChSdHBUcmFuc3BvcnRQYXJhbWV0
ZXJzLCBHZXRQYXJhbWV0ZXJzKQotUFJPWFlfTUVUSE9EMShSVENFcnJvciwgU2V0U3J0cFNlbmRL
ZXksIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1BhcmFtcyYpCi1QUk9YWV9NRVRIT0QxKFJUQ0Vycm9y
LCBTZXRTcnRwUmVjZWl2ZUtleSwgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1zJikKLXByb3Rl
Y3RlZDoKLVJ0cFRyYW5zcG9ydEFkYXB0ZXIqIEdldEludGVybmFsKCkgb3ZlcnJpZGUgewotICBy
ZXR1cm4gaW50ZXJuYWwoKTsKLX0KLUVORF9QUk9YWV9NQVAoKQotCi0vLyBzdGF0aWMKLVJUQ0Vy
cm9yT3I8c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVyZmFjZT4+Ci1SdHBUcmFuc3Bv
cnRBZGFwdGVyOjpDcmVhdGVQcm94aWVkKAotICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsCi0gICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAg
UGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydGNwLAotICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJBZGFwdGVyKiBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgaWYgKCFydHApIHsKLSAg
ICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IHByb3ZpZGUgYW4gUlRQIHBhY2tldCB0cmFu
c3BvcnQuIik7Ci0gIH0KLSAgaWYgKCFwYXJhbWV0ZXJzLnJ0Y3AubXV4ICYmICFydGNwKSB7Ci0g
ICAgTE9HX0FORF9SRVRVUk5fRVJST1IoCi0gICAgICAgIFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9Q
QVJBTUVURVIsCi0gICAgICAgICJNdXN0IHByb3ZpZGUgYW4gUlRDUCBwYWNrZXQgdHJhbnNwb3J0
IHdoZW4gUlRDUCBtdXhpbmcgaXMgbm90IHVzZWQuIik7Ci0gIH0KLSAgaWYgKHBhcmFtZXRlcnMu
cnRjcC5tdXggJiYgcnRjcCkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlw
ZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0aW5n
IGFuIFJ0cFRyYW5zcG9ydCB3aXRoIFJUQ1AgbXV4aW5nIGVuYWJsZWQsICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAid2l0aCBhIHNlcGFyYXRlIFJUQ1AgcGFja2V0IHRyYW5zcG9ydD8iKTsK
LSAgfQotICBpZiAoIXJ0cF90cmFuc3BvcnRfY29udHJvbGxlcikgewotICAgIC8vIFNpbmNlIE9y
dGNGYWN0b3J5OjpDcmVhdGVSdHBUcmFuc3BvcnQgY3JlYXRlcyBhbiBSdHBUcmFuc3BvcnRDb250
cm9sbGVyCi0gICAgLy8gYXV0b21hdGljYWxseSB3aGVuIG9uZSBpc24ndCBwYXNzZWQgaW4sIHRo
aXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuCi0gICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgICBM
T0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICJNdXN0IHByb3ZpZGUgYW4gUlRQIHRyYW5zcG9ydCBjb250
cm9sbGVyLiIpOwotICB9Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRBZGFwdGVyPiB0
cmFuc3BvcnRfYWRhcHRlcigKLSAgICAgIG5ldyBSdHBUcmFuc3BvcnRBZGFwdGVyKHBhcmFtZXRl
cnMucnRjcCwgcnRwLCBydGNwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX3Ry
YW5zcG9ydF9jb250cm9sbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2Ug
Lyppc19zcnRwX3RyYW5zcG9ydCovKSk7Ci0gIFJUQ0Vycm9yIHBhcmFtc19yZXN1bHQgPSB0cmFu
c3BvcnRfYWRhcHRlci0+U2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKLSAgaWYgKCFwYXJhbXNf
cmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gc3RkOjptb3ZlKHBhcmFtc19yZXN1bHQpOwotICB9
Ci0KLSAgcmV0dXJuIFJ0cFRyYW5zcG9ydFByb3h5V2l0aEludGVybmFsPFJ0cFRyYW5zcG9ydEFk
YXB0ZXI+OjpDcmVhdGUoCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXItPnNpZ25hbGlu
Z190aHJlYWQoKSwKLSAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlci0+d29ya2VyX3RocmVh
ZCgpLCBzdGQ6Om1vdmUodHJhbnNwb3J0X2FkYXB0ZXIpKTsKLX0KLQotUlRDRXJyb3JPcjxzdGQ6
OnVuaXF1ZV9wdHI8U3J0cFRyYW5zcG9ydEludGVyZmFjZT4+Ci1SdHBUcmFuc3BvcnRBZGFwdGVy
OjpDcmVhdGVTcnRwUHJveGllZCgKLSAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLAotICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAotICAgIFBhY2tl
dFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRh
cHRlciogcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyKSB7Ci0gIGlmICghcnRwKSB7Ci0gICAgTE9H
X0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAiTXVzdCBwcm92aWRlIGFuIFJUUCBwYWNrZXQgdHJhbnNwb3J0
LiIpOwotICB9Ci0gIGlmICghcGFyYW1ldGVycy5ydGNwLm11eCAmJiAhcnRjcCkgewotICAgIExP
R19BTkRfUkVUVVJOX0VSUk9SKAotICAgICAgICBSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1F
VEVSLAotICAgICAgICAiTXVzdCBwcm92aWRlIGFuIFJUQ1AgcGFja2V0IHRyYW5zcG9ydCB3aGVu
IFJUQ1AgbXV4aW5nIGlzIG5vdCB1c2VkLiIpOwotICB9Ci0gIGlmIChwYXJhbWV0ZXJzLnJ0Y3Au
bXV4ICYmIHJ0Y3ApIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklO
VkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGluZyBhbiBS
dHBUcmFuc3BvcnQgd2l0aCBSVENQIG11eGluZyBlbmFibGVkLCAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIndpdGggYSBzZXBhcmF0ZSBSVENQIHBhY2tldCB0cmFuc3BvcnQ/Iik7Ci0gIH0K
LSAgaWYgKCFydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgICAvLyBTaW5jZSBPcnRjRmFj
dG9yeTo6Q3JlYXRlUnRwVHJhbnNwb3J0IGNyZWF0ZXMgYW4gUnRwVHJhbnNwb3J0Q29udHJvbGxl
cgotICAgIC8vIGF1dG9tYXRpY2FsbHkgd2hlbiBvbmUgaXNuJ3QgcGFzc2VkIGluLCB0aGlzIHNo
b3VsZCBuZXZlciBiZSByZWFjaGVkLgotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgTE9HX0FO
RF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAiTXVzdCBwcm92aWRlIGFuIFJUUCB0cmFuc3BvcnQgY29udHJvbGxl
ci4iKTsKLSAgfQotCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRBZGFwdGVyPiB0cmFu
c3BvcnRfYWRhcHRlcjsKLSAgdHJhbnNwb3J0X2FkYXB0ZXIucmVzZXQobmV3IFJ0cFRyYW5zcG9y
dEFkYXB0ZXIocGFyYW1ldGVycy5ydGNwLCBydHAsIHJ0Y3AsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAv
KmlzX3NydHBfdHJhbnNwb3J0Ki8pKTsKLSAgUlRDRXJyb3IgcGFyYW1zX3Jlc3VsdCA9IHRyYW5z
cG9ydF9hZGFwdGVyLT5TZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotICBpZiAoIXBhcmFtc19y
ZXN1bHQub2soKSkgewotICAgIHJldHVybiBzdGQ6Om1vdmUocGFyYW1zX3Jlc3VsdCk7Ci0gIH0K
LQotICByZXR1cm4gU3J0cFRyYW5zcG9ydFByb3h5V2l0aEludGVybmFsPFJ0cFRyYW5zcG9ydEFk
YXB0ZXI+OjpDcmVhdGUoCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXItPnNpZ25hbGlu
Z190aHJlYWQoKSwKLSAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlci0+d29ya2VyX3RocmVh
ZCgpLCBzdGQ6Om1vdmUodHJhbnNwb3J0X2FkYXB0ZXIpKTsKLX0KLQotdm9pZCBSdHBUcmFuc3Bv
cnRBZGFwdGVyOjpUYWtlT3duZXJzaGlwT2ZSdHBUcmFuc3BvcnRDb250cm9sbGVyKAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlPiBjb250cm9sbGVy
KSB7Ci0gIFJUQ19EQ0hFQ0tfRVEocnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXywgY29udHJvbGxl
ci0+R2V0SW50ZXJuYWwoKSk7Ci0gIFJUQ19EQ0hFQ0sob3duZWRfcnRwX3RyYW5zcG9ydF9jb250
cm9sbGVyXy5nZXQoKSA9PSBudWxscHRyKTsKLSAgb3duZWRfcnRwX3RyYW5zcG9ydF9jb250cm9s
bGVyXyA9IHN0ZDo6bW92ZShjb250cm9sbGVyKTsKLX0KLQotUnRwVHJhbnNwb3J0QWRhcHRlcjo6
UnRwVHJhbnNwb3J0QWRhcHRlcigKLSAgICBjb25zdCBSdGNwUGFyYW1ldGVycyYgcnRjcF9wYXJh
bXMsCi0gICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgUGFja2V0VHJhbnNw
b3J0SW50ZXJmYWNlKiBydGNwLAotICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKiBy
dHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIsCi0gICAgYm9vbCBpc19zcnRwX3RyYW5zcG9ydCkKLSAg
ICA6IHJ0cF9wYWNrZXRfdHJhbnNwb3J0XyhydHApLAotICAgICAgcnRjcF9wYWNrZXRfdHJhbnNw
b3J0XyhydGNwKSwKLSAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8ocnRwX3RyYW5zcG9y
dF9jb250cm9sbGVyKSwKLSAgICAgIG5ldHdvcmtfdGhyZWFkXyhydHBfdHJhbnNwb3J0X2NvbnRy
b2xsZXJfLT5uZXR3b3JrX3RocmVhZCgpKSB7Ci0gIHBhcmFtZXRlcnNfLnJ0Y3AgPSBydGNwX3Bh
cmFtczsKLSAgLy8gQ05BTUUgc2hvdWxkIGhhdmUgYmVlbiBmaWxsZWQgYnkgT3J0Y0ZhY3Rvcnkg
aWYgZW1wdHkuCi0gIFJUQ19EQ0hFQ0soIXBhcmFtZXRlcnNfLnJ0Y3AuY25hbWUuZW1wdHkoKSk7
Ci0gIFJUQ19EQ0hFQ0socnRwX3RyYW5zcG9ydF9jb250cm9sbGVyKTsKLQotICBpZiAoaXNfc3J0
cF90cmFuc3BvcnQpIHsKLSAgICBzcnRwX3RyYW5zcG9ydF8gPSBhYnNsOjptYWtlX3VuaXF1ZTxT
cnRwVHJhbnNwb3J0PihydGNwID09IG51bGxwdHIpOwotICAgIHRyYW5zcG9ydF8gPSBzcnRwX3Ry
YW5zcG9ydF8uZ2V0KCk7Ci0gIH0gZWxzZSB7Ci0gICAgdW5lbmNyeXB0ZWRfcnRwX3RyYW5zcG9y
dF8gPQotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxSdHBUcmFuc3BvcnQ+KHJ0Y3AgPT0gbnVs
bHB0cik7Ci0gICAgdHJhbnNwb3J0XyA9IHVuZW5jcnlwdGVkX3J0cF90cmFuc3BvcnRfLmdldCgp
OwotICB9Ci0gIFJUQ19EQ0hFQ0sodHJhbnNwb3J0Xyk7Ci0KLSAgbmV0d29ya190aHJlYWRfLT5J
bnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWz1dIHsKLSAgICBTZXRSdHBQYWNrZXRUcmFuc3Bv
cnQocnRwLT5HZXRJbnRlcm5hbCgpKTsKLSAgICBpZiAocnRjcCkgewotICAgICAgU2V0UnRjcFBh
Y2tldFRyYW5zcG9ydChydGNwLT5HZXRJbnRlcm5hbCgpKTsKLSAgICB9Ci0gIH0pOwotCi0gIHRy
YW5zcG9ydF8tPlNpZ25hbFJlYWR5VG9TZW5kLmNvbm5lY3QodGhpcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmUnRwVHJhbnNwb3J0QWRhcHRlcjo6T25SZWFkeVRv
U2VuZCk7Ci0gIHRyYW5zcG9ydF8tPlNpZ25hbFJ0Y3BQYWNrZXRSZWNlaXZlZC5jb25uZWN0KAot
ICAgICAgdGhpcywgJlJ0cFRyYW5zcG9ydEFkYXB0ZXI6Ok9uUnRjcFBhY2tldFJlY2VpdmVkKTsK
LSAgdHJhbnNwb3J0Xy0+U2lnbmFsV3JpdGFibGVTdGF0ZS5jb25uZWN0KAotICAgICAgdGhpcywg
JlJ0cFRyYW5zcG9ydEFkYXB0ZXI6Ok9uV3JpdGFibGVTdGF0ZSk7Ci19Ci0KLVJ0cFRyYW5zcG9y
dEFkYXB0ZXI6On5SdHBUcmFuc3BvcnRBZGFwdGVyKCkgewotICBTaWduYWxEZXN0cm95ZWQodGhp
cyk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydEFkYXB0ZXI6OlNldFBhcmFtZXRlcnMoCi0g
ICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgewotICBpZiAoIXBh
cmFtZXRlcnMucnRjcC5tdXggJiYgcGFyYW1ldGVyc18ucnRjcC5tdXgpIHsKLSAgICBMT0dfQU5E
X1JFVFVSTl9FUlJPUih3ZWJydGM6OlJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9TVEFURSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgZGlzYWJsZSBSVENQIG11eGluZyBhZnRlciBlbmFi
bGluZy4iKTsKLSAgfQotICBpZiAoIXBhcmFtZXRlcnMucnRjcC5jbmFtZS5lbXB0eSgpICYmCi0g
ICAgICBwYXJhbWV0ZXJzLnJ0Y3AuY25hbWUgIT0gcGFyYW1ldGVyc18ucnRjcC5jbmFtZSkgewot
ICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRF
RF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkNoYW5naW5nIHRoZSBSVENQ
IENOQU1FIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC4iKTsKLSAgfQotICAvLyBJZiB0aGUgQ05B
TUUgaXMgZW1wdHksIHVzZSB0aGUgZXhpc3Rpbmcgb25lLgotICBSdHBUcmFuc3BvcnRQYXJhbWV0
ZXJzIGNvcHkgPSBwYXJhbWV0ZXJzOwotICBpZiAoY29weS5ydGNwLmNuYW1lLmVtcHR5KCkpIHsK
LSAgICBjb3B5LnJ0Y3AuY25hbWUgPSBwYXJhbWV0ZXJzXy5ydGNwLmNuYW1lOwotICB9Ci0gIFJU
Q0Vycm9yIGVyciA9Ci0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TZXRSdHBUcmFu
c3BvcnRQYXJhbWV0ZXJzKGNvcHksIHRoaXMpOwotICBpZiAoIWVyci5vaygpKSB7Ci0gICAgcmV0
dXJuIGVycjsKLSAgfQotICBwYXJhbWV0ZXJzXyA9IGNvcHk7Ci0gIGlmIChwYXJhbWV0ZXJzXy5y
dGNwLm11eCkgewotICAgIHJ0Y3BfcGFja2V0X3RyYW5zcG9ydF8gPSBudWxscHRyOwotICB9Ci0g
IHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQotUlRDRXJyb3IgUnRwVHJhbnNwb3J0QWRhcHRl
cjo6U2V0U3J0cFNlbmRLZXkoCi0gICAgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1zJiBwYXJh
bXMpIHsKLSAgaWYgKCFuZXR3b3JrX3RocmVhZF8tPklzQ3VycmVudCgpKSB7Ci0gICAgcmV0dXJu
IG5ldHdvcmtfdGhyZWFkXy0+SW52b2tlPFJUQ0Vycm9yPigKLSAgICAgICAgUlRDX0ZST01fSEVS
RSwgWyZdIHsgcmV0dXJuIFNldFNydHBTZW5kS2V5KHBhcmFtcyk7IH0pOwotICB9Ci0gIHJldHVy
biB0cmFuc3BvcnRfLT5TZXRTcnRwU2VuZEtleShwYXJhbXMpOwotfQotCi1SVENFcnJvciBSdHBU
cmFuc3BvcnRBZGFwdGVyOjpTZXRTcnRwUmVjZWl2ZUtleSgKLSAgICBjb25zdCBjcmlja2V0OjpD
cnlwdG9QYXJhbXMmIHBhcmFtcykgewotICBpZiAoIW5ldHdvcmtfdGhyZWFkXy0+SXNDdXJyZW50
KCkpIHsKLSAgICByZXR1cm4gbmV0d29ya190aHJlYWRfLT5JbnZva2U8UlRDRXJyb3I+KAotICAg
ICAgICBSVENfRlJPTV9IRVJFLCBbJl0geyByZXR1cm4gU2V0U3J0cFJlY2VpdmVLZXkocGFyYW1z
KTsgfSk7Ci0gIH0KLSAgcmV0dXJuIHRyYW5zcG9ydF8tPlNldFNydHBSZWNlaXZlS2V5KHBhcmFt
cyk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFu
c3BvcnRhZGFwdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxOTE0ZjZiOGQx
YjQ3NWY3NWIwNDg1NTk1YTE4YTdmMTY0MWE1NDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBPUlRDX1JUUFRSQU5TUE9SVEFE
QVBURVJfSF8KLSNkZWZpbmUgT1JUQ19SVFBUUkFOU1BPUlRBREFQVEVSX0hfCi0KLSNpbmNsdWRl
IDxtZW1vcnk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgi
Ci0jaW5jbHVkZSAibWVkaWEvYmFzZS9zdHJlYW1wYXJhbXMuaCIKLSNpbmNsdWRlICJvcnRjL3J0
cHRyYW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmgiCi0jaW5jbHVkZSAicGMvY2hhbm5lbC5oIgot
I2luY2x1ZGUgInBjL3J0cHRyYW5zcG9ydGludGVybmFsYWRhcHRlci5oIgotI2luY2x1ZGUgInBj
L3NydHB0cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCi0KLW5h
bWVzcGFjZSB3ZWJydGMgewotLy8gVGhpcyBjbGFzcyBpcyBhIHdyYXBwZXIgb3ZlciBhbiBSdHBU
cmFuc3BvcnQgb3IgYW4gU3J0cFRyYW5zcG9ydC4gVGhlIGJhc2UKLS8vIGNsYXNzIFJ0cFRyYW5z
cG9ydEludGVybmFsQWRhcHRlciBrZWVwcyBhIHJhdyBwb2ludGVyLCB8dHJhbnNwb3J0X3wsIG9m
IHRoZQotLy8gdHJhbnNwb3J0IG9iamVjdCBhbmQgaW1wbGVtZW50cyBib3RoIHRoZSBwdWJsaWMg
U3J0cFRyYW5zcG9ydEludGVyZmFjZSBhbmQKLS8vIFJ0cFRyYW5zcG9ydCBpbnRlcm5hbCBpbnRl
cmZhY2UgYnkgY2FsbGluZyB0aGUgfHRyYW5zcG9ydF98IHVuZGVybmVhdGguCi0vLwotLy8gVGhp
cyBhZGFwdGVyIGNhbiBiZSB1c2VkIGFzIGFuIHVuZW5jcnlwdGVkIFJUUCB0cmFuc3BvcnQgb3Ig
YW4gU3J0cFRyYW5zcG9ydAotLy8gd2l0aCBSdHBTZW5kZXJBZGFwdGVyLCBSdHBSZWNlaXZlckFk
YXB0ZXIsIGFuZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlci4KLS8vCi0vLyBUT0RPKGRl
YWRiZWVmKTogV2hlbiBCYXNlQ2hhbm5lbCBpcyBzcGxpdCBhcGFydCBpbnRvIHNlcGFyYXRlCi0v
LyAiUnRwVHJhbnNwb3J0Ii8iUnRwVHJhbnNjZWl2ZXIiLyJSdHBTZW5kZXIiLyJSdHBSZWNlaXZl
ciIgb2JqZWN0cywgdGhpcwotLy8gYWRhcHRlciBvYmplY3QgY2FuIGJlIHJlbW92ZWQuCi1jbGFz
cyBSdHBUcmFuc3BvcnRBZGFwdGVyIDogcHVibGljIFJ0cFRyYW5zcG9ydEludGVybmFsQWRhcHRl
ciB7Ci0gcHVibGljOgotICAvLyB8cnRwfCBjYW4ndCBiZSBudWxsLiB8cnRjcHwgY2FuIGlmIFJU
Q1AgbXV4aW5nIGlzIHVzZWQgaW1tZWRpYXRlbHkgKG1lYW5pbmcKLSAgLy8gfHJ0Y3BfcGFyYW1l
dGVycy5tdXh8IGlzIGFsc28gdHJ1ZSkuCi0gIHN0YXRpYyBSVENFcnJvck9yPHN0ZDo6dW5pcXVl
X3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+PiBDcmVhdGVQcm94aWVkKAotICAgICAgY29uc3Qg
UnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcnRjcF9wYXJhbWV0ZXJzLAotICAgICAgUGFja2V0VHJh
bnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0
Y3AsCi0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogcnRwX3RyYW5zcG9ydF9j
b250cm9sbGVyKTsKLQotICBzdGF0aWMgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8U3J0cFRy
YW5zcG9ydEludGVyZmFjZT4+IENyZWF0ZVNydHBQcm94aWVkKAotICAgICAgY29uc3QgUnRwVHJh
bnNwb3J0UGFyYW1ldGVycyYgcnRjcF9wYXJhbWV0ZXJzLAotICAgICAgUGFja2V0VHJhbnNwb3J0
SW50ZXJmYWNlKiBydHAsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0Y3AsCi0g
ICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogcnRwX3RyYW5zcG9ydF9jb250cm9s
bGVyKTsKLQotICB+UnRwVHJhbnNwb3J0QWRhcHRlcigpIG92ZXJyaWRlOwotCi0gIC8vIFJ0cFRy
YW5zcG9ydEludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4KLSAgUGFja2V0VHJhbnNwb3J0SW50ZXJm
YWNlKiBHZXRSdHBQYWNrZXRUcmFuc3BvcnQoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgcmV0dXJu
IHJ0cF9wYWNrZXRfdHJhbnNwb3J0XzsKLSAgfQotICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2Uq
IEdldFJ0Y3BQYWNrZXRUcmFuc3BvcnQoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIHJ0
Y3BfcGFja2V0X3RyYW5zcG9ydF87Ci0gIH0KLSAgUlRDRXJyb3IgU2V0UGFyYW1ldGVycyhjb25z
dCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBvdmVycmlkZTsKLSAgUnRwVHJh
bnNwb3J0UGFyYW1ldGVycyBHZXRQYXJhbWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
cGFyYW1ldGVyc187IH0KLQotICAvLyBTUlRQIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLgotICBS
VENFcnJvciBTZXRTcnRwU2VuZEtleShjb25zdCBjcmlja2V0OjpDcnlwdG9QYXJhbXMmIHBhcmFt
cykgb3ZlcnJpZGU7Ci0gIFJUQ0Vycm9yIFNldFNydHBSZWNlaXZlS2V5KGNvbnN0IGNyaWNrZXQ6
OkNyeXB0b1BhcmFtcyYgcGFyYW1zKSBvdmVycmlkZTsKLQotICAvLyBNZXRob2RzIHVzZWQgaW50
ZXJuYWxseSBieSBPcnRjRmFjdG9yeS4KLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIq
IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcigpIHsKLSAgICByZXR1cm4gcnRwX3RyYW5zcG9ydF9j
b250cm9sbGVyXzsKLSAgfQotICB2b2lkIFRha2VPd25lcnNoaXBPZlJ0cFRyYW5zcG9ydENvbnRy
b2xsZXIoCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVy
ZmFjZT4gY29udHJvbGxlcik7Ci0KLSAgLy8gVXNlZCBieSBSdHBUcmFuc3BvcnRDb250cm9sbGVy
QWRhcHRlciB0byB0ZWxsIHdoZW4gaXQgc2hvdWxkIHN0b3AKLSAgLy8gcmV0dXJuaW5nIHRoaXMg
dHJhbnNwb3J0IGZyb20gR2V0VHJhbnNwb3J0cygpLgotICBzaWdzbG90OjpzaWduYWwxPFJ0cFRy
YW5zcG9ydEFkYXB0ZXIqPiBTaWduYWxEZXN0cm95ZWQ7Ci0KLSAgYm9vbCBJc1NydHBBY3RpdmUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cmFuc3BvcnRfLT5Jc1NydHBBY3RpdmUoKTsgfQot
Ci0gcHJvdGVjdGVkOgotICBSdHBUcmFuc3BvcnRBZGFwdGVyKiBHZXRJbnRlcm5hbCgpIG92ZXJy
aWRlIHsgcmV0dXJuIHRoaXM7IH0KLQotIHByaXZhdGU6Ci0gIFJ0cFRyYW5zcG9ydEFkYXB0ZXIo
Y29uc3QgUnRjcFBhcmFtZXRlcnMmIHJ0Y3BfcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAg
IFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAotICAgICAgICAgICAgICAgICAgICAgIFBh
Y2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCwKLSAgICAgICAgICAgICAgICAgICAgICBSdHBU
cmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyLAotICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfc3J0cF90cmFuc3BvcnQpOwotCi0gIHZvaWQgT25S
ZWFkeVRvU2VuZChib29sIHJlYWR5KSB7IFNpZ25hbFJlYWR5VG9TZW5kKHJlYWR5KTsgfQotCi0g
IHZvaWQgT25SdGNwUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGlt
ZSkgewotICAgIFNpZ25hbFJ0Y3BQYWNrZXRSZWNlaXZlZChwYWNrZXQsIHRpbWUpOwotICB9Ci0K
LSAgdm9pZCBPbldyaXRhYmxlU3RhdGUoYm9vbCB3cml0YWJsZSkgeyBTaWduYWxXcml0YWJsZVN0
YXRlKHdyaXRhYmxlKTsgfQotCi0gIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwX3BhY2tl
dF90cmFuc3BvcnRfID0gbnVsbHB0cjsKLSAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydGNw
X3BhY2tldF90cmFuc3BvcnRfID0gbnVsbHB0cjsKLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFk
YXB0ZXIqIGNvbnN0IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8gPSBudWxscHRyOwotICAvLyBO
b24tbnVsbCBpZiB0aGlzIGNsYXNzIG93bnMgdGhlIHRyYW5zcG9ydCBjb250cm9sbGVyLgotICBz
dGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4KLSAgICAgIG93
bmVkX3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl87Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMg
cGFyYW1ldGVyc187Ci0KLSAgLy8gT25seSBvbmUgb2YgdGhlbSBpcyBub24tbnVsbDsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydD4gdW5lbmNyeXB0ZWRfcnRwX3RyYW5zcG9ydF87Ci0g
IHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0PiBzcnRwX3RyYW5zcG9ydF87Ci0KLSAgcnRj
OjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkXyA9IG51bGxwdHI7Ci0KLSAgUlRDX0RJU0FMTE9XX0lN
UExJQ0lUX0NPTlNUUlVDVE9SUyhSdHBUcmFuc3BvcnRBZGFwdGVyKTsKLX07Ci0KLX0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBPUlRDX1JUUFRSQU5TUE9SVEFEQVBURVJfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29y
dGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcl91bml0
dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1NDg0MTdlZTdjZjY3ZjQy
OTdkZjc3YTg3YzZiMGY3N2YzOTdjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9v
cnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAt
MSwxOTkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQot
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3Rvcnku
aCIKLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5LmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKLSNpbmNsdWRl
ICJvcnRjL29ydGNmYWN0b3J5LmgiCi0jaW5jbHVkZSAib3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5o
IgotI2luY2x1ZGUgInAycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9ndW5pdC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVGhpcyB0ZXN0IHVz
ZXMgZmFrZSBwYWNrZXQgdHJhbnNwb3J0cyBhbmQgYSBmYWtlIG1lZGlhIGVuZ2luZSwgaW4gb3Jk
ZXIgdG8KLS8vIHRlc3QgdGhlIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXIgYXQgb25seSBhbiBBUEkg
bGV2ZWwuIEFueSBlbmQtdG8tZW5kIHRlc3QKLS8vIHNob3VsZCBnbyBpbiBvcnRjZmFjdG9yeV9p
bnRlZ3JhdGlvbnRlc3QuY2MgaW5zdGVhZC4KLS8vCi0vLyBDdXJyZW50bHksIHRoaXMgdGVzdCBt
YWlubHkgZm9jdXNlcyBvbiB0aGUgbGltaXRhdGlvbnMgb2YgdGhlICJhZGFwdGVyIgotLy8gUnRw
VHJhbnNwb3J0Q29udHJvbGxlciBpbXBsZW1lbnRhdGlvbi4gT25seSBvbmUgb2YgZWFjaCB0eXBl
IG9mCi0vLyBzZW5kZXIvcmVjZWl2ZXIgY2FuIGJlIGNyZWF0ZWQsIGFuZCB0aGUgc2VuZGVyL3Jl
Y2VpdmVyIG9mIHRoZSBzYW1lIG1lZGlhCi0vLyB0eXBlIG11c3QgdXNlIHRoZSBzYW1lIHRyYW5z
cG9ydC4KLWNsYXNzIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewotIHB1YmxpYzoKLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QoKSB7Ci0gICAg
Ly8gTm90ZTogVGhpcyBkb2Vzbid0IG5lZWQgdG8gdXNlIGZha2UgbmV0d29yayBjbGFzc2VzLCBz
aW5jZSBpdCB1c2VzCi0gICAgLy8gRmFrZVBhY2tldFRyYW5zcG9ydHMuCi0gICAgYXV0byByZXN1
bHQgPSBPcnRjRmFjdG9yeTo6Q3JlYXRlKAotICAgICAgICBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6
TWVkaWFFbmdpbmVJbnRlcmZhY2U+KAotICAgICAgICAgICAgbmV3IGNyaWNrZXQ6OkZha2VNZWRp
YUVuZ2luZSgpKSwKLSAgICAgICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwg
Q3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSk7Ci0gICAgb3J0Y19mYWN0b3J5XyA9
IHJlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfID0KLSAg
ICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcigpLk1vdmVW
YWx1ZSgpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9y
eUludGVyZmFjZT4gb3J0Y19mYWN0b3J5XzsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJJbnRlcmZhY2U+IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl87Ci19OwotCi1U
RVNUX0YoUnRwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIEdldFRyYW5zcG9ydHMpIHsKLSAgcnRj
OjpGYWtlUGFja2V0VHJhbnNwb3J0IHBhY2tldF90cmFuc3BvcnQxKCJvbmUiKTsKLSAgcnRjOjpG
YWtlUGFja2V0VHJhbnNwb3J0IHBhY2tldF90cmFuc3BvcnQyKCJ0d28iKTsKLQotICBhdXRvIHJ0
cF90cmFuc3BvcnRfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgK
LSAgICAgIE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCAmcGFja2V0X3RyYW5zcG9ydDEsIG51bGxw
dHIsCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLmdldCgpKTsKLSAgQVNTRVJUX1RS
VUUocnRwX3RyYW5zcG9ydF9yZXN1bHQxLm9rKCkpOwotCi0gIGF1dG8gcnRwX3RyYW5zcG9ydF9y
ZXN1bHQyID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgTWFrZVJ0
Y3BNdXhQYXJhbWV0ZXJzKCksICZwYWNrZXRfdHJhbnNwb3J0MiwgbnVsbHB0ciwKLSAgICAgIHJ0
cF90cmFuc3BvcnRfY29udHJvbGxlcl8uZ2V0KCkpOwotICBBU1NFUlRfVFJVRShydHBfdHJhbnNw
b3J0X3Jlc3VsdDIub2soKSk7Ci0KLSAgYXV0byByZXR1cm5lZF90cmFuc3BvcnRzID0gcnRwX3Ry
YW5zcG9ydF9jb250cm9sbGVyXy0+R2V0VHJhbnNwb3J0cygpOwotICBBU1NFUlRfRVEoMnUsIHJl
dHVybmVkX3RyYW5zcG9ydHMuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKHJ0cF90cmFuc3BvcnRfcmVz
dWx0MS52YWx1ZSgpLmdldCgpLCByZXR1cm5lZF90cmFuc3BvcnRzWzBdKTsKLSAgRVhQRUNUX0VR
KHJ0cF90cmFuc3BvcnRfcmVzdWx0Mi52YWx1ZSgpLmdldCgpLCByZXR1cm5lZF90cmFuc3BvcnRz
WzFdKTsKLQotICAvLyBJZiBhIHRyYW5zcG9ydCBpcyBkZWxldGVkLCBpdCBzaG91bGRuJ3QgYmUg
cmV0dXJuZWQgYW55IG1vcmUuCi0gIHJ0cF90cmFuc3BvcnRfcmVzdWx0MS5Nb3ZlVmFsdWUoKS5y
ZXNldCgpOwotICByZXR1cm5lZF90cmFuc3BvcnRzID0gcnRwX3RyYW5zcG9ydF9jb250cm9sbGVy
Xy0+R2V0VHJhbnNwb3J0cygpOwotICBBU1NFUlRfRVEoMXUsIHJldHVybmVkX3RyYW5zcG9ydHMu
c2l6ZSgpKTsKLSAgRVhQRUNUX0VRKHJ0cF90cmFuc3BvcnRfcmVzdWx0Mi52YWx1ZSgpLmdldCgp
LCByZXR1cm5lZF90cmFuc3BvcnRzWzBdKTsKLX0KLQotLy8gQ3JlYXRlIFJ0cFNlbmRlcnMgYW5k
IFJ0cFJlY2VpdmVycyBvbiB0b3Agb2YgUnRwVHJhbnNwb3J0cyBjb250cm9sbGVkIGJ5IHRoZQot
Ly8gc2FtZSBSdHBUcmFuc3BvcnRDb250cm9sbGVyLiBDdXJyZW50bHkgb25seSBvbmUgZWFjaCBv
ZiBhdWRpby92aWRlbyBpcwotLy8gc3VwcG9ydGVkLgotVEVTVF9GKFJ0cFRyYW5zcG9ydENvbnRy
b2xsZXJUZXN0LCBBdHRhY2hNdWx0aXBsZVNlbmRlcnNBbmRSZWNlaXZlcnMpIHsKLSAgcnRjOjpG
YWtlUGFja2V0VHJhbnNwb3J0IGF1ZGlvX3BhY2tldF90cmFuc3BvcnQoImF1ZGlvIik7Ci0gIHJ0
Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCB2aWRlb19wYWNrZXRfdHJhbnNwb3J0KCJ2aWRlbyIpOwot
Ci0gIGF1dG8gYXVkaW9fcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBUcmFuc3BvcnQoCi0gICAgICBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSwgJmF1ZGlvX3Bh
Y2tldF90cmFuc3BvcnQsIG51bGxwdHIsCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJf
LmdldCgpKTsKLSAgQVNTRVJUX1RSVUUoYXVkaW9fcnRwX3RyYW5zcG9ydF9yZXN1bHQub2soKSk7
Ci0gIGF1dG8gYXVkaW9fcnRwX3RyYW5zcG9ydCA9IGF1ZGlvX3J0cF90cmFuc3BvcnRfcmVzdWx0
Lk1vdmVWYWx1ZSgpOwotCi0gIGF1dG8gdmlkZW9fcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRj
X2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBNYWtlUnRjcE11eFBhcmFtZXRl
cnMoKSwgJnZpZGVvX3BhY2tldF90cmFuc3BvcnQsIG51bGxwdHIsCi0gICAgICBydHBfdHJhbnNw
b3J0X2NvbnRyb2xsZXJfLmdldCgpKTsKLSAgQVNTRVJUX1RSVUUodmlkZW9fcnRwX3RyYW5zcG9y
dF9yZXN1bHQub2soKSk7Ci0gIGF1dG8gdmlkZW9fcnRwX3RyYW5zcG9ydCA9IHZpZGVvX3J0cF90
cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3Vs
dCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElB
X1RZUEVfQVVESU8sIGF1ZGlvX3J0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShh
dWRpb19zZW5kZXJfcmVzdWx0Lm9rKCkpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9
IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFf
VFlQRV9BVURJTywgYXVkaW9fcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKGF1
ZGlvX3JlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0g
b3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQ
RV9WSURFTywgdmlkZW9fcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVv
X3NlbmRlcl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBF
X1ZJREVPLCB2aWRlb19ydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9f
cmVjZWl2ZXJfcmVzdWx0Lm9rKCkpOwotCi0gIC8vIE5vdyB0aGF0IHdlIGhhdmUgb25lIGVhY2gg
b2YgYXVkaW8vdmlkZW8gc2VuZGVycy9yZWNlaXZlcnMsIHRyeWluZyB0bwotICAvLyBjcmVhdGUg
bW9yZSBvbiB0b3Agb2YgdGhlIHNhbWUgY29udHJvbGxlciBpcyBleHBlY3RlZCB0byBmYWlsLgot
ICAvLyBUT0RPKGRlYWRiZWVmKTogVXBkYXRlIHRoaXMgdGVzdCBvbmNlIG11bHRpcGxlIHNlbmRl
cnMvcmVjZWl2ZXJzIG9uIHRvcCBvZgotICAvLyB0aGUgc2FtZSBjb250cm9sbGVyIGlzIHN1cHBv
cnRlZC4KLSAgYXV0byBmYWlsZWRfc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIGF1ZGlvX3J0cF90
cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9P
UEVSQVRJT04sCi0gICAgICAgICAgICBmYWlsZWRfc2VuZGVyX3Jlc3VsdC5lcnJvcigpLnR5cGUo
KSk7Ci0gIGF1dG8gZmFpbGVkX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgYXVkaW9fcnRw
X3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVE
X09QRVJBVElPTiwKLSAgICAgICAgICAgIGZhaWxlZF9yZWNlaXZlcl9yZXN1bHQuZXJyb3IoKS50
eXBlKCkpOwotICBmYWlsZWRfc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0
cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3J0cF90cmFu
c3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVS
QVRJT04sCi0gICAgICAgICAgICBmYWlsZWRfc2VuZGVyX3Jlc3VsdC5lcnJvcigpLnR5cGUoKSk7
Ci0gIGZhaWxlZF9yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNl
aXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3J0cF90cmFuc3Bv
cnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJ
T04sCi0gICAgICAgICAgICBmYWlsZWRfcmVjZWl2ZXJfcmVzdWx0LmVycm9yKCkudHlwZSgpKTsK
LQotICAvLyBJZiB3ZSBkZXN0cm95IHRoZSBleGlzdGluZyBzZW5kZXIvcmVjZWl2ZXIgdXNpbmcg
YSB0cmFuc3BvcnQgY29udHJvbGxlciwKLSAgLy8gd2Ugc2hvdWxkIGJlIGFibGUgdG8gbWFrZSBh
IG5ldyBvbmUsIGRlc3BpdGUgdGhlIGFib3ZlIGxpbWl0YXRpb24uCi0gIGF1ZGlvX3NlbmRlcl9y
ZXN1bHQuTW92ZVZhbHVlKCkucmVzZXQoKTsKLSAgYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNf
ZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVE
SU8sIGF1ZGlvX3J0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5k
ZXJfcmVzdWx0Lm9rKCkpOwotICBhdWRpb19yZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCkucmVz
ZXQoKTsKLSAgYXVkaW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRw
UmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBhdWRpb19ydHBfdHJh
bnNwb3J0LmdldCgpKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lm9rKCkp
OwotICB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpLnJlc2V0KCk7Ci0gIHZpZGVvX3Nl
bmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlj
a2V0OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb19ydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQ
RUNUX1RSVUUodmlkZW9fc2VuZGVyX3Jlc3VsdC5vaygpKTsKLSAgdmlkZW9fcmVjZWl2ZXJfcmVz
dWx0Lk1vdmVWYWx1ZSgpLnJlc2V0KCk7Ci0gIHZpZGVvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNf
ZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9W
SURFTywgdmlkZW9fcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3Jl
Y2VpdmVyX3Jlc3VsdC5vaygpKTsKLX0KLQotLy8gR2l2ZW4gdGhlIGN1cnJlbnQgbGltaXRhdGlv
bnMgb2YgdGhlIEJhc2VDaGFubmVsLWJhc2VkIGltcGxlbWVudGF0aW9uLCBpdCdzCi0vLyBub3Qg
cG9zc2libGUgZm9yIGFuIGF1ZGlvIHNlbmRlciBhbmQgcmVjZWl2ZXIgdG8gdXNlIGRpZmZlcmVu
dCBSdHBUcmFuc3BvcnRzLgotLy8gVE9ETyhkZWFkYmVlZik6IE9uY2UgdGhpcyBpcyBzdXBwb3J0
ZWQsIHVwZGF0ZS9yZXBsYWNlIHRoaXMgdGVzdC4KLVRFU1RfRihSdHBUcmFuc3BvcnRDb250cm9s
bGVyVGVzdCwKLSAgICAgICBTZW5kZXJBbmRSZWNlaXZlclVzaW5nRGlmZmVyZW50VHJhbnNwb3J0
c1Vuc3VwcG9ydGVkKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBwYWNrZXRfdHJhbnNw
b3J0MSgib25lIik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBwYWNrZXRfdHJhbnNwb3J0
MigidHdvIik7Ci0KLSAgYXV0byBydHBfdHJhbnNwb3J0X3Jlc3VsdDEgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSwgJnBh
Y2tldF90cmFuc3BvcnQxLCBudWxscHRyLAotICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVy
Xy5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKHJ0cF90cmFuc3BvcnRfcmVzdWx0MS5vaygpKTsKLSAg
YXV0byBydHBfdHJhbnNwb3J0MSA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0MS5Nb3ZlVmFsdWUoKTsK
LQotICBhdXRvIHJ0cF90cmFuc3BvcnRfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0
cFRyYW5zcG9ydCgKLSAgICAgIE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCAmcGFja2V0X3RyYW5z
cG9ydDIsIG51bGxwdHIsCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLmdldCgpKTsK
LSAgQVNTRVJUX1RSVUUocnRwX3RyYW5zcG9ydF9yZXN1bHQyLm9rKCkpOwotICBhdXRvIHJ0cF90
cmFuc3BvcnQyID0gcnRwX3RyYW5zcG9ydF9yZXN1bHQyLk1vdmVWYWx1ZSgpOwotCi0gIC8vIENy
ZWF0ZSBhbiBhdWRpbyBzZW5kZXIgb24gdHJhbnNwb3J0IDEsIHRoZW4gdHJ5IHRvIGNyZWF0ZSBh
IHJlY2VpdmVyIG9uIDIuCi0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0
cF90cmFuc3BvcnQxLmdldCgpKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyX3Jlc3VsdC5v
aygpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFu
c3BvcnQyLmdldCgpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BF
UkFUSU9OLAotICAgICAgICAgICAgYXVkaW9fcmVjZWl2ZXJfcmVzdWx0LmVycm9yKCkudHlwZSgp
KTsKLSAgLy8gRGVsZXRlIHRoZSBzZW5kZXI7IG5vdyB3ZSBzaG91bGQgYmUgb2sgdG8gY3JlYXRl
IHRoZSByZWNlaXZlciBvbiAyLgotICBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpLnJl
c2V0KCk7Ci0gIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0
cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9y
dDIuZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlcl9yZXN1bHQub2soKSk7Ci0K
LSAgLy8gRG8gdGhlIHNhbWUgdGhpbmcgZm9yIHZpZGVvLCByZXZlcnNpbmcgMSBhbmQgMiAoZm9y
IHZhcmlldHkpLgotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5D
cmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJh
bnNwb3J0Mi5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlcl9yZXN1bHQub2soKSk7
Ci0KLSAgYXV0byB2aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3Bv
cnQxLmdldCgpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFU
SU9OLAotICAgICAgICAgICAgdmlkZW9fcmVjZWl2ZXJfcmVzdWx0LmVycm9yKCkudHlwZSgpKTsK
LSAgdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKS5yZXNldCgpOwotICB2aWRlb19yZWNl
aXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNy
aWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnQxLmdldCgpKTsKLSAgRVhQRUNU
X1RSVUUodmlkZW9fcmVjZWl2ZXJfcmVzdWx0Lm9rKCkpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVy
YWRhcHRlci5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJiMDNlYTMyMWY1NDY3
MzdlZjMxZmQzMWVhYjg2NDhkNWQwMDg4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmNjCisrKyAvZGV2L251bGwKQEAg
LTEsOTcxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJvcnRjL3J0cHRy
YW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmgiCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBG
b3IgInJlbW92ZSIsICJmaW5kIi4KLSNpbmNsdWRlIDxzZXQ+Ci0jaW5jbHVkZSA8dW5vcmRlcmVk
X21hcD4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6bW92ZS4KLQotI2luY2x1ZGUg
ImFic2wvbWVtb3J5L21lbW9yeS5oIgotI2luY2x1ZGUgImFwaS9wcm94eS5oIgotI2luY2x1ZGUg
Im1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKLSNpbmNsdWRlICJvcnRjL29ydGNydHByZWNl
aXZlcmFkYXB0ZXIuaCIKLSNpbmNsdWRlICJvcnRjL29ydGNydHBzZW5kZXJhZGFwdGVyLmgiCi0j
aW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRhZGFwdGVyLmgiCi0jaW5jbHVkZSAicGMvcnRwbWVk
aWF1dGlscy5oIgotI2luY2x1ZGUgInBjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJp
bmdfYnVpbGRlci5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gTm90ZTogSXQncyBhc3N1
bWVkIHRoYXQgZWFjaCBpbmRpdmlkdWFsIGxpc3QgZG9lc24ndCBoYXZlIGNvbmZsaWN0cywgc2lu
Y2UKLS8vIHRoZXkgc2hvdWxkIGhhdmUgYmVlbiBkZXRlY3RlZCBhbHJlYWR5IGJ5IHJ0cHBhcmFt
ZXRlcnNjb252ZXJzaW9uLmNjLiBUaGlzCi0vLyBvbmx5IG5lZWRzIHRvIGRldGVjdCBjb25mbGlj
dHMgKmJldHdlZW4qIEEgYW5kIEIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5cGVuYW1lIEMy
Pgotc3RhdGljIFJUQ0Vycm9yIENoZWNrRm9ySWRDb25mbGljdHMoCi0gICAgY29uc3Qgc3RkOjp2
ZWN0b3I8QzE+JiBjb2RlY3NfYSwKLSAgICBjb25zdCBjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNp
b25zJiBleHRlbnNpb25zX2EsCi0gICAgY29uc3QgY3JpY2tldDo6U3RyZWFtUGFyYW1zVmVjJiBz
dHJlYW1zX2EsCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8QzI+JiBjb2RlY3NfYiwKLSAgICBjb25z
dCBjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb25zJiBleHRlbnNpb25zX2IsCi0gICAgY29uc3Qg
Y3JpY2tldDo6U3RyZWFtUGFyYW1zVmVjJiBzdHJlYW1zX2IpIHsKLSAgcnRjOjpTdHJpbmdCdWls
ZGVyIG9zczsKLSAgLy8gU2luY2UgaXQncyBhc3N1bWVkIHRoYXQgQzEgYW5kIEMyIGFyZSBkaWZm
ZXJlbnQgdHlwZXMsIGNvZGVjc19hIGFuZAotICAvLyBjb2RlY3NfYiBzaG91bGQgbmV2ZXIgY29u
dGFpbiB0aGUgc2FtZSBwYXlsb2FkIHR5cGUsIGFuZCB0aHVzIHdlIGNhbiBqdXN0Ci0gIC8vIHVz
ZSBhIHNldC4KLSAgc3RkOjpzZXQ8aW50PiBzZWVuX3BheWxvYWRfdHlwZXM7Ci0gIGZvciAoY29u
c3QgQzEmIGNvZGVjIDogY29kZWNzX2EpIHsKLSAgICBzZWVuX3BheWxvYWRfdHlwZXMuaW5zZXJ0
KGNvZGVjLmlkKTsKLSAgfQotICBmb3IgKGNvbnN0IEMyJiBjb2RlYyA6IGNvZGVjc19iKSB7Ci0g
ICAgaWYgKCFzZWVuX3BheWxvYWRfdHlwZXMuaW5zZXJ0KGNvZGVjLmlkKS5zZWNvbmQpIHsKLSAg
ICAgIG9zcyA8PCAiU2FtZSBwYXlsb2FkIHR5cGUgdXNlZCBmb3IgYXVkaW8gYW5kIHZpZGVvIGNv
ZGVjczogIiA8PCBjb2RlYy5pZDsKLSAgICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9y
VHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsIG9zcy5zdHIoKSk7Ci0gICAgfQotICB9Ci0gIC8vIEF1
ZGlvIGFuZCB2aWRlbyAqbWF5KiB1c2UgdGhlIHNhbWUgaGVhZGVyIGV4dGVuc2lvbnMsIHNvIHVz
ZSBhIG1hcC4KLSAgc3RkOjp1bm9yZGVyZWRfbWFwPGludCwgc3RkOjpzdHJpbmc+IHNlZW5fZXh0
ZW5zaW9uczsKLSAgZm9yIChjb25zdCB3ZWJydGM6OlJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uIDog
ZXh0ZW5zaW9uc19hKSB7Ci0gICAgc2Vlbl9leHRlbnNpb25zW2V4dGVuc2lvbi5pZF0gPSBleHRl
bnNpb24udXJpOwotICB9Ci0gIGZvciAoY29uc3Qgd2VicnRjOjpSdHBFeHRlbnNpb24mIGV4dGVu
c2lvbiA6IGV4dGVuc2lvbnNfYikgewotICAgIGlmIChzZWVuX2V4dGVuc2lvbnMuZmluZChleHRl
bnNpb24uaWQpICE9IHNlZW5fZXh0ZW5zaW9ucy5lbmQoKSAmJgotICAgICAgICBzZWVuX2V4dGVu
c2lvbnMuYXQoZXh0ZW5zaW9uLmlkKSAhPSBleHRlbnNpb24udXJpKSB7Ci0gICAgICBvc3MgPDwg
IlNhbWUgSUQgdXNlZCBmb3IgZGlmZmVyZW50IFJUUCBoZWFkZXIgZXh0ZW5zaW9uczogIgotICAg
ICAgICAgIDw8IGV4dGVuc2lvbi5pZDsKLSAgICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vy
cm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsIG9zcy5zdHIoKSk7Ci0gICAgfQotICB9Ci0gIHN0
ZDo6c2V0PHVpbnQzMl90PiBzZWVuX3NzcmNzOwotICBmb3IgKGNvbnN0IGNyaWNrZXQ6OlN0cmVh
bVBhcmFtcyYgc3RyZWFtIDogc3RyZWFtc19hKSB7Ci0gICAgc2Vlbl9zc3Jjcy5pbnNlcnQoc3Ry
ZWFtLnNzcmNzLmJlZ2luKCksIHN0cmVhbS5zc3Jjcy5lbmQoKSk7Ci0gIH0KLSAgZm9yIChjb25z
dCBjcmlja2V0OjpTdHJlYW1QYXJhbXMmIHN0cmVhbSA6IHN0cmVhbXNfYikgewotICAgIGZvciAo
dWludDMyX3Qgc3NyYyA6IHN0cmVhbS5zc3JjcykgewotICAgICAgaWYgKCFzZWVuX3NzcmNzLmlu
c2VydChzc3JjKS5zZWNvbmQpIHsKLSAgICAgICAgb3NzIDw8ICJTYW1lIFNTUkMgdXNlZCBmb3Ig
YXVkaW8gYW5kIHZpZGVvIHNlbmRlcnM6ICIgPDwgc3NyYzsKLSAgICAgICAgTE9HX0FORF9SRVRV
Uk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwgb3NzLnN0cigpKTsKLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1CRUdJTl9P
V05FRF9QUk9YWV9NQVAoUnRwVHJhbnNwb3J0Q29udHJvbGxlcikKLVBST1hZX1NJR05BTElOR19U
SFJFQURfREVTVFJVQ1RPUigpCi1QUk9YWV9DT05TVE1FVEhPRDAoc3RkOjp2ZWN0b3I8UnRwVHJh
bnNwb3J0SW50ZXJmYWNlKj4sIEdldFRyYW5zcG9ydHMpCi1wcm90ZWN0ZWQ6Ci1SdHBUcmFuc3Bv
cnRDb250cm9sbGVyQWRhcHRlciogR2V0SW50ZXJuYWwoKSBvdmVycmlkZSB7Ci0gIHJldHVybiBp
bnRlcm5hbCgpOwotfQotRU5EX1BST1hZX01BUCgpCi0KLS8vIHN0YXRpYwotc3RkOjp1bmlxdWVf
cHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+Ci1SdHBUcmFuc3BvcnRDb250cm9s
bGVyQWRhcHRlcjo6Q3JlYXRlUHJveGllZCgKLSAgICBjb25zdCBjcmlja2V0OjpNZWRpYUNvbmZp
ZyYgY29uZmlnLAotICAgIGNyaWNrZXQ6OkNoYW5uZWxNYW5hZ2VyKiBjaGFubmVsX21hbmFnZXIs
Ci0gICAgd2VicnRjOjpSdGNFdmVudExvZyogZXZlbnRfbG9nLAotICAgIHJ0Yzo6VGhyZWFkKiBz
aWduYWxpbmdfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAotICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCkgewotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNw
b3J0Q29udHJvbGxlckFkYXB0ZXI+IHdyYXBwZWQoCi0gICAgICBuZXcgUnRwVHJhbnNwb3J0Q29u
dHJvbGxlckFkYXB0ZXIoY29uZmlnLCBjaGFubmVsX21hbmFnZXIsIGV2ZW50X2xvZywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxpbmdfdGhyZWFkLCB3b3Jr
ZXJfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdv
cmtfdGhyZWFkKSk7Ci0gIHJldHVybiBSdHBUcmFuc3BvcnRDb250cm9sbGVyUHJveHlXaXRoSW50
ZXJuYWw8Ci0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcj46OkNyZWF0ZShzaWdu
YWxpbmdfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHdyYXBwZWQpKTsKLX0KLQotUnRwVHJhbnNwb3J0
Q29udHJvbGxlckFkYXB0ZXI6On5SdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcigpIHsKLSAg
UlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBpZiAoIXRyYW5zcG9ydF9w
cm94aWVzXy5lbXB0eSgpKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikKLSAgICAgICAgPDwgIkRl
c3Ryb3lpbmcgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIgd2hpbGUgUnRwVHJhbnNwb3J0
cyAiCi0gICAgICAgICAgICJhcmUgc3RpbGwgdXNpbmcgaXQ7IHRoaXMgaXMgdW5zYWZlLiI7Ci0g
IH0KLSAgaWYgKHZvaWNlX2NoYW5uZWxfKSB7Ci0gICAgLy8gVGhpcyB3b3VsZCBtZWFuIGF1ZGlv
IFJUUCBzZW5kZXJzL3JlY2VpdmVycyB0aGF0IGFyZSB1c2luZyB1cyBoYXZlbid0Ci0gICAgLy8g
YmVlbiBkZXN0cm95ZWQuIFRoaXMgaXNuJ3Qgc2FmZSAoc2VlIGVycm9yIGxvZyBhYm92ZSkuCi0g
ICAgRGVzdHJveVZvaWNlQ2hhbm5lbCgpOwotICB9Ci0gIGlmICh2b2ljZV9jaGFubmVsXykgewot
ICAgIC8vIFRoaXMgd291bGQgbWVhbiB2aWRlbyBSVFAgc2VuZGVycy9yZWNlaXZlcnMgdGhhdCBh
cmUgdXNpbmcgdXMgaGF2ZW4ndAotICAgIC8vIGJlZW4gZGVzdHJveWVkLiBUaGlzIGlzbid0IHNh
ZmUgKHNlZSBlcnJvciBsb2cgYWJvdmUpLgotICAgIERlc3Ryb3lWaWRlb0NoYW5uZWwoKTsKLSAg
fQotICAvLyBDYWxsIG11c3QgYmUgZGVzdHJveWVkIG9uIHRoZSB3b3JrZXIgdGhyZWFkLgotICB3
b3JrZXJfdGhyZWFkXy0+SW52b2tlPHZvaWQ+KAotICAgICAgUlRDX0ZST01fSEVSRSwgcnRjOjpC
aW5kKCZSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q2xvc2VfdywgdGhpcykpOwotfQot
Ci1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+PgotUnRw
VHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNyZWF0ZVByb3hpZWRSdHBUcmFuc3BvcnQoCi0g
ICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywKLSAgICBQYWNrZXRU
cmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0
Y3ApIHsKLSAgaWYgKCF0cmFuc3BvcnRfcHJveGllc18uZW1wdHkoKSAmJiAocGFyYW1ldGVycy5r
ZWVwYWxpdmUgIT0ga2VlcGFsaXZlXykpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENF
cnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICJDYW5ub3QgY3JlYXRlIFJ0cFRyYW5zcG9ydCB3aXRoIGRpZmZlcmVudCBrZWVwLWFsaXZlICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSB0aGUgUnRwVHJhbnNwb3J0cyBhbHJlYWR5
IGFzc29jaWF0ZWQgd2l0aCB0aGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNw
b3J0IGNvbnRyb2xsZXIuIik7Ci0gIH0KLSAgYXV0byByZXN1bHQgPSBSdHBUcmFuc3BvcnRBZGFw
dGVyOjpDcmVhdGVQcm94aWVkKHBhcmFtZXRlcnMsIHJ0cCwgcnRjcCwgdGhpcyk7Ci0gIGlmIChy
ZXN1bHQub2soKSkgewotICAgIHRyYW5zcG9ydF9wcm94aWVzXy5wdXNoX2JhY2socmVzdWx0LnZh
bHVlKCkuZ2V0KCkpOwotICAgIHRyYW5zcG9ydF9wcm94aWVzXy5iYWNrKCktPkdldEludGVybmFs
KCktPlNpZ25hbERlc3Ryb3llZC5jb25uZWN0KAotICAgICAgICB0aGlzLCAmUnRwVHJhbnNwb3J0
Q29udHJvbGxlckFkYXB0ZXI6Ok9uUnRwVHJhbnNwb3J0RGVzdHJveWVkKTsKLSAgfQotICByZXR1
cm4gcmVzdWx0OwotfQotCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0
SW50ZXJmYWNlPj4KLVJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpDcmVhdGVQcm94aWVk
U3J0cFRyYW5zcG9ydCgKLSAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLAotICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAotICAgIFBhY2tldFRyYW5z
cG9ydEludGVyZmFjZSogcnRjcCkgewotICBhdXRvIHJlc3VsdCA9Ci0gICAgICBSdHBUcmFuc3Bv
cnRBZGFwdGVyOjpDcmVhdGVTcnRwUHJveGllZChwYXJhbWV0ZXJzLCBydHAsIHJ0Y3AsIHRoaXMp
OwotICBpZiAocmVzdWx0Lm9rKCkpIHsKLSAgICB0cmFuc3BvcnRfcHJveGllc18ucHVzaF9iYWNr
KHJlc3VsdC52YWx1ZSgpLmdldCgpKTsKLSAgICB0cmFuc3BvcnRfcHJveGllc18uYmFjaygpLT5H
ZXRJbnRlcm5hbCgpLT5TaWduYWxEZXN0cm95ZWQuY29ubmVjdCgKLSAgICAgICAgdGhpcywgJlJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPblJ0cFRyYW5zcG9ydERlc3Ryb3llZCk7Ci0g
IH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0
Y1J0cFNlbmRlckludGVyZmFjZT4+Ci1SdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q3Jl
YXRlUHJveGllZFJ0cFNlbmRlcigKLSAgICBjcmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICBS
dHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydF9wcm94eSkgewotICBSVENfRENIRUNLKHRy
YW5zcG9ydF9wcm94eSk7Ci0gIFJUQ19EQ0hFQ0soc3RkOjpmaW5kKHRyYW5zcG9ydF9wcm94aWVz
Xy5iZWdpbigpLCB0cmFuc3BvcnRfcHJveGllc18uZW5kKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIHRyYW5zcG9ydF9wcm94eSkgIT0gdHJhbnNwb3J0X3Byb3hpZXNfLmVuZCgpKTsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJBZGFwdGVyPiBuZXdfc2VuZGVyKAotICAgICAgbmV3
IE9ydGNSdHBTZW5kZXJBZGFwdGVyKGtpbmQsIHRyYW5zcG9ydF9wcm94eSwgdGhpcykpOwotICBS
VENFcnJvciBlcnI7Ci0gIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgY3JpY2tldDo6TUVESUFf
VFlQRV9BVURJTzoKLSAgICAgIGVyciA9IEF0dGFjaEF1ZGlvU2VuZGVyKG5ld19zZW5kZXIuZ2V0
KCksIHRyYW5zcG9ydF9wcm94eS0+R2V0SW50ZXJuYWwoKSk7Ci0gICAgICBicmVhazsKLSAgICBj
YXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU86Ci0gICAgICBlcnIgPSBBdHRhY2hWaWRlb1Nl
bmRlcihuZXdfc2VuZGVyLmdldCgpLCB0cmFuc3BvcnRfcHJveHktPkdldEludGVybmFsKCkpOwot
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEE6Ci0gICAgICBS
VENfTk9UUkVBQ0hFRCgpOwotICB9Ci0gIGlmICghZXJyLm9rKCkpIHsKLSAgICByZXR1cm4gc3Rk
Ojptb3ZlKGVycik7Ci0gIH0KLQotICByZXR1cm4gT3J0Y1J0cFNlbmRlckFkYXB0ZXI6OkNyZWF0
ZVByb3h5KHN0ZDo6bW92ZShuZXdfc2VuZGVyKSk7Ci19Ci0KLVJUQ0Vycm9yT3I8c3RkOjp1bmlx
dWVfcHRyPE9ydGNSdHBSZWNlaXZlckludGVyZmFjZT4+Ci1SdHBUcmFuc3BvcnRDb250cm9sbGVy
QWRhcHRlcjo6Q3JlYXRlUHJveGllZFJ0cFJlY2VpdmVyKAotICAgIGNyaWNrZXQ6Ok1lZGlhVHlw
ZSBraW5kLAotICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0X3Byb3h5KSB7Ci0g
IFJUQ19EQ0hFQ0sodHJhbnNwb3J0X3Byb3h5KTsKLSAgUlRDX0RDSEVDSyhzdGQ6OmZpbmQodHJh
bnNwb3J0X3Byb3hpZXNfLmJlZ2luKCksIHRyYW5zcG9ydF9wcm94aWVzXy5lbmQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3Byb3h5KSAhPSB0cmFuc3BvcnRfcHJveGllc18u
ZW5kKCkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFJlY2VpdmVyQWRhcHRlcj4gbmV3X3Jl
Y2VpdmVyKAotICAgICAgbmV3IE9ydGNSdHBSZWNlaXZlckFkYXB0ZXIoa2luZCwgdHJhbnNwb3J0
X3Byb3h5LCB0aGlzKSk7Ci0gIFJUQ0Vycm9yIGVycjsKLSAgc3dpdGNoIChraW5kKSB7Ci0gICAg
Y2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOgotICAgICAgZXJyID0gQXR0YWNoQXVkaW9S
ZWNlaXZlcihuZXdfcmVjZWl2ZXIuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyYW5zcG9ydF9wcm94eS0+R2V0SW50ZXJuYWwoKSk7Ci0gICAgICBicmVhazsKLSAgICBj
YXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU86Ci0gICAgICBlcnIgPSBBdHRhY2hWaWRlb1Jl
Y2VpdmVyKG5ld19yZWNlaXZlci5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNwb3J0X3Byb3h5LT5HZXRJbnRlcm5hbCgpKTsKLSAgICAgIGJyZWFrOwotICAgIGNh
c2UgY3JpY2tldDo6TUVESUFfVFlQRV9EQVRBOgotICAgICAgUlRDX05PVFJFQUNIRUQoKTsKLSAg
fQotICBpZiAoIWVyci5vaygpKSB7Ci0gICAgcmV0dXJuIHN0ZDo6bW92ZShlcnIpOwotICB9Ci0K
LSAgcmV0dXJuIE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI6OkNyZWF0ZVByb3h5KHN0ZDo6bW92ZShu
ZXdfcmVjZWl2ZXIpKTsKLX0KLQotc3RkOjp2ZWN0b3I8UnRwVHJhbnNwb3J0SW50ZXJmYWNlKj4K
LVJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpHZXRUcmFuc3BvcnRzKCkgY29uc3Qgewot
ICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0gIHJldHVybiB0cmFuc3Bv
cnRfcHJveGllc187Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVy
OjpTZXRSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzKAotICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBpbm5lcl90cmFu
c3BvcnQpIHsKLSAgaWYgKCh2aWRlb19jaGFubmVsXyAhPSBudWxscHRyIHx8IHZvaWNlX2NoYW5u
ZWxfICE9IG51bGxwdHIpICYmCi0gICAgICAocGFyYW1ldGVycy5rZWVwYWxpdmUgIT0ga2VlcGFs
aXZlXykpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURf
TU9ESUZJQ0FUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgY2hhbmdlIGtl
ZXAtYWxpdmUgc2V0dGluZ3MgYWZ0ZXIgY3JlYXRpbmcgIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICJtZWRpYSBzdHJlYW1zIG9yIGFkZGl0aW9uYWwgdHJhbnNwb3J0cyBmb3IgdGhlIHNhbWUg
IgotICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc3BvcnQgY29udHJvbGxlci4iKTsKLSAg
fQotICAvLyBDYWxsIG11c3QgYmUgY29uZmlndXJlZCBvbiB0aGUgd29ya2VyIHRocmVhZC4KLSAg
d29ya2VyX3RocmVhZF8tPkludm9rZTx2b2lkPigKLSAgICAgIFJUQ19GUk9NX0hFUkUsCi0gICAg
ICBydGM6OkJpbmQoJlJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpTZXRSdHBUcmFuc3Bv
cnRQYXJhbWV0ZXJzX3csCi0gICAgICAgICAgICAgICAgdGhpcywgcGFyYW1ldGVycykpOwotCi0g
IGRvIHsKLSAgICBpZiAoaW5uZXJfdHJhbnNwb3J0ID09IGlubmVyX2F1ZGlvX3RyYW5zcG9ydF8p
IHsKLSAgICAgIENvcHlSdGNwUGFyYW1ldGVyc1RvRGVzY3JpcHRpb25zKHBhcmFtZXRlcnMucnRj
cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbF9hdWRpb19k
ZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVt
b3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXyk7Ci0gICAgICBpZiAoIXZvaWNlX2NoYW5uZWxfLT5TZXRM
b2NhbENvbnRlbnQoJmxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBUeXBlOjprT2ZmZXIsIG51bGxwdHIpKSB7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYgKCF2b2ljZV9jaGFubmVsXy0+U2V0UmVt
b3RlQ29udGVudCgmcmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a0Fuc3dlciwgbnVsbHB0cikpIHsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfSBlbHNlIGlmIChpbm5lcl90cmFuc3BvcnQg
PT0gaW5uZXJfdmlkZW9fdHJhbnNwb3J0XykgewotICAgICAgQ29weVJ0Y3BQYXJhbWV0ZXJzVG9E
ZXNjcmlwdGlvbnMocGFyYW1ldGVycy5ydGNwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZyZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fKTsKLSAgICAg
IGlmICghdmlkZW9fY2hhbm5lbF8tPlNldExvY2FsQ29udGVudCgmbG9jYWxfdmlkZW9fZGVzY3Jp
cHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFR5
cGU6OmtPZmZlciwgbnVsbHB0cikpIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBp
ZiAoIXZpZGVvX2NoYW5uZWxfLT5TZXRSZW1vdGVDb250ZW50KCZyZW1vdGVfdmlkZW9fZGVzY3Jp
cHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBU
eXBlOjprQW5zd2VyLCBudWxscHRyKSkgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotICB9IHdoaWxlIChmYWxzZSk7Ci0gIExPR19B
TkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICJGYWlsZWQgdG8gYXBwbHkgbmV3IFJUQ1AgcGFyYW1ldGVycy4iKTsKLX0K
LQotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6U2V0UnRwVHJhbnNwb3J0UGFy
YW1ldGVyc193KAotICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
IHsKLSAgY2FsbF9zZW5kX3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPlNldEtlZXBBbGl2ZUNv
bmZpZyhwYXJhbWV0ZXJzLmtlZXBhbGl2ZSk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJBZGFwdGVyOjpWYWxpZGF0ZUFuZEFwcGx5QXVkaW9TZW5kZXJQYXJhbWV0ZXJzKAot
ICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgdWludDMyX3QqIHByaW1h
cnlfc3NyYykgewotICBSVENfRENIRUNLKHZvaWNlX2NoYW5uZWxfKTsKLSAgUlRDX0RDSEVDSyho
YXZlX2F1ZGlvX3NlbmRlcl8pOwotCi0gIGF1dG8gY29kZWNzX3Jlc3VsdCA9IFRvQ3JpY2tldENv
ZGVjczxjcmlja2V0OjpBdWRpb0NvZGVjPihwYXJhbWV0ZXJzLmNvZGVjcyk7Ci0gIGlmICghY29k
ZWNzX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJuIGNvZGVjc19yZXN1bHQuTW92ZUVycm9yKCk7
Ci0gIH0KLQotICBhdXRvIGV4dGVuc2lvbnNfcmVzdWx0ID0KLSAgICAgIFRvQ3JpY2tldFJ0cEhl
YWRlckV4dGVuc2lvbnMocGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucyk7Ci0gIGlmICghZXh0
ZW5zaW9uc19yZXN1bHQub2soKSkgewotICAgIHJldHVybiBleHRlbnNpb25zX3Jlc3VsdC5Nb3Zl
RXJyb3IoKTsKLSAgfQotCi0gIGF1dG8gc3RyZWFtX3BhcmFtc19yZXN1bHQgPSBNYWtlU2VuZFN0
cmVhbVBhcmFtc1ZlYygKLSAgICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzLCBpbm5lcl9hdWRpb190
cmFuc3BvcnRfLT5HZXRQYXJhbWV0ZXJzKCkucnRjcC5jbmFtZSwKLSAgICAgIGxvY2FsX2F1ZGlv
X2Rlc2NyaXB0aW9uXyk7Ci0gIGlmICghc3RyZWFtX3BhcmFtc19yZXN1bHQub2soKSkgewotICAg
IHJldHVybiBzdHJlYW1fcGFyYW1zX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIC8vIENo
ZWNrIHRoYXQgYXVkaW8vdmlkZW8gc2VuZGVyIGFyZW4ndCB1c2luZyB0aGUgc2FtZSBJRHMgdG8g
cmVmZXIgdG8KLSAgLy8gZGlmZmVyZW50IHRoaW5ncywgaWYgdGhleSBzaGFyZSB0aGUgc2FtZSB0
cmFuc3BvcnQuCi0gIGlmIChpbm5lcl9hdWRpb190cmFuc3BvcnRfID09IGlubmVyX3ZpZGVvX3Ry
YW5zcG9ydF8pIHsKLSAgICBSVENFcnJvciBlcnIgPSBDaGVja0ZvcklkQ29uZmxpY3RzKAotICAg
ICAgICBjb2RlY3NfcmVzdWx0LnZhbHVlKCksIGV4dGVuc2lvbnNfcmVzdWx0LnZhbHVlKCksCi0g
ICAgICAgIHN0cmVhbV9wYXJhbXNfcmVzdWx0LnZhbHVlKCksIHJlbW90ZV92aWRlb19kZXNjcmlw
dGlvbl8uY29kZWNzKCksCi0gICAgICAgIHJlbW90ZV92aWRlb19kZXNjcmlwdGlvbl8ucnRwX2hl
YWRlcl9leHRlbnNpb25zKCksCi0gICAgICAgIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zdHJl
YW1zKCkpOwotICAgIGlmICghZXJyLm9rKCkpIHsKLSAgICAgIHJldHVybiBlcnI7Ci0gICAgfQot
ICB9Ci0KLSAgYm9vbCBsb2NhbF9zZW5kID0gZmFsc2U7Ci0gIGludCBiYW5kd2lkdGggPSBjcmlj
a2V0OjprQXV0b0JhbmR3aWR0aDsKLSAgaWYgKHBhcmFtZXRlcnMuZW5jb2RpbmdzLnNpemUoKSA9
PSAxdSkgewotICAgIGlmIChwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5tYXhfYml0cmF0ZV9icHMp
IHsKLSAgICAgIGJhbmR3aWR0aCA9ICpwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5tYXhfYml0cmF0
ZV9icHM7Ci0gICAgfQotICAgIGxvY2FsX3NlbmQgPSBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5h
Y3RpdmU7Ci0gIH0KLSAgY29uc3QgYm9vbCBsb2NhbF9yZWN2ID0KLSAgICAgIFJ0cFRyYW5zY2Vp
dmVyRGlyZWN0aW9uSGFzUmVjdihsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8uZGlyZWN0aW9uKCkp
OwotICBjb25zdCBhdXRvIGxvY2FsX2RpcmVjdGlvbiA9Ci0gICAgICBSdHBUcmFuc2NlaXZlckRp
cmVjdGlvbkZyb21TZW5kUmVjdihsb2NhbF9zZW5kLCBsb2NhbF9yZWN2KTsKLSAgaWYgKHByaW1h
cnlfc3NyYyAmJiAhc3RyZWFtX3BhcmFtc19yZXN1bHQudmFsdWUoKS5lbXB0eSgpKSB7Ci0gICAg
KnByaW1hcnlfc3NyYyA9IHN0cmVhbV9wYXJhbXNfcmVzdWx0LnZhbHVlKClbMF0uZmlyc3Rfc3Ny
YygpOwotICB9Ci0KLSAgLy8gVmFsaWRhdGlvbiBpcyBkb25lLCBzbyB3ZSBjYW4gYXR0ZW1wdCBh
cHBseWluZyB0aGUgZGVzY3JpcHRpb25zLiBTZW50Ci0gIC8vIGNvZGVjcyBhbmQgaGVhZGVyIGV4
dGVuc2lvbnMgZ28gaW4gcmVtb3RlIGRlc2NyaXB0aW9uLCBzdHJlYW1zIGdvIGluCi0gIC8vIGxv
Y2FsLgotICAvLwotICAvLyBJZiB0aGVyZSBhcmUgbm8gY29kZWNzIG9yIGVuY29kaW5ncywganVz
dCBsZWF2ZSB0aGUgcHJldmlvdXMgc2V0IG9mCi0gIC8vIGNvZGVjcy4gVGhlIG1lZGlhIGVuZ2lu
ZSBkb2Vzbid0IGxpa2UgYW4gZW1wdHkgc2V0IG9mIGNvZGVjcy4KLSAgaWYgKGxvY2FsX2F1ZGlv
X2Rlc2NyaXB0aW9uXy5zdHJlYW1zKCkuZW1wdHkoKSAmJgotICAgICAgcmVtb3RlX2F1ZGlvX2Rl
c2NyaXB0aW9uXy5jb2RlY3MoKS5lbXB0eSgpKSB7Ci0gIH0gZWxzZSB7Ci0gICAgcmVtb3RlX2F1
ZGlvX2Rlc2NyaXB0aW9uXy5zZXRfY29kZWNzKGNvZGVjc19yZXN1bHQuTW92ZVZhbHVlKCkpOwot
ICB9Ci0gIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uc2V0X3J0cF9oZWFkZXJfZXh0ZW5zaW9u
cygKLSAgICAgIGV4dGVuc2lvbnNfcmVzdWx0Lk1vdmVWYWx1ZSgpKTsKLSAgcmVtb3RlX2F1ZGlv
X2Rlc2NyaXB0aW9uXy5zZXRfYmFuZHdpZHRoKGJhbmR3aWR0aCk7Ci0gIGxvY2FsX2F1ZGlvX2Rl
c2NyaXB0aW9uXy5tdXRhYmxlX3N0cmVhbXMoKSA9IHN0cmVhbV9wYXJhbXNfcmVzdWx0Lk1vdmVW
YWx1ZSgpOwotICAvLyBEaXJlY3Rpb24gc2V0IGJhc2VkIG9uIGVuY29kaW5nICJhY3RpdmUiIGZs
YWcuCi0gIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zZXRfZGlyZWN0aW9uKGxvY2FsX2RpcmVj
dGlvbik7Ci0gIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uc2V0X2RpcmVjdGlvbigKLSAgICAg
IFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uUmV2ZXJzZWQobG9jYWxfZGlyZWN0aW9uKSk7Ci0KLSAg
Ly8gU2V0IHJlbW90ZSBjb250ZW50IGZpcnN0LCB0byBlbnN1cmUgdGhlIHN0cmVhbSBpcyBjcmVh
dGVkIHdpdGggdGhlIGNvcnJlY3QKLSAgLy8gY29kZWMuCi0gIGlmICghdm9pY2VfY2hhbm5lbF8t
PlNldFJlbW90ZUNvbnRlbnQoJnJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a09mZmVyLCBudWxscHRyKSkg
ewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhcHBseSByZW1vdGUgcGFyYW1l
dGVycyB0byBtZWRpYSBjaGFubmVsLiIpOwotICB9Ci0gIGlmICghdm9pY2VfY2hhbm5lbF8tPlNl
dExvY2FsQ29udGVudCgmbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a0Fuc3dlciwgbnVsbHB0cikpIHsKLSAg
ICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYXBwbHkgbG9jYWwgcGFyYW1ldGVycyB0
byBtZWRpYSBjaGFubmVsLiIpOwotICB9Ci0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQot
UlRDRXJyb3IgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OlZhbGlkYXRlQW5kQXBwbHlW
aWRlb1NlbmRlclBhcmFtZXRlcnMoCi0gICAgY29uc3QgUnRwUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywKLSAgICB1aW50MzJfdCogcHJpbWFyeV9zc3JjKSB7Ci0gIFJUQ19EQ0hFQ0sodmlkZW9fY2hh
bm5lbF8pOwotICBSVENfRENIRUNLKGhhdmVfdmlkZW9fc2VuZGVyXyk7Ci0KLSAgYXV0byBjb2Rl
Y3NfcmVzdWx0ID0gVG9Dcmlja2V0Q29kZWNzPGNyaWNrZXQ6OlZpZGVvQ29kZWM+KHBhcmFtZXRl
cnMuY29kZWNzKTsKLSAgaWYgKCFjb2RlY3NfcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gY29k
ZWNzX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIGF1dG8gZXh0ZW5zaW9uc19yZXN1bHQg
PQotICAgICAgVG9Dcmlja2V0UnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJhbWV0ZXJzLmhlYWRlcl9l
eHRlbnNpb25zKTsKLSAgaWYgKCFleHRlbnNpb25zX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJu
IGV4dGVuc2lvbnNfcmVzdWx0Lk1vdmVFcnJvcigpOwotICB9Ci0KLSAgYXV0byBzdHJlYW1fcGFy
YW1zX3Jlc3VsdCA9IE1ha2VTZW5kU3RyZWFtUGFyYW1zVmVjKAotICAgICAgcGFyYW1ldGVycy5l
bmNvZGluZ3MsIGlubmVyX3ZpZGVvX3RyYW5zcG9ydF8tPkdldFBhcmFtZXRlcnMoKS5ydGNwLmNu
YW1lLAotICAgICAgbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fKTsKLSAgaWYgKCFzdHJlYW1fcGFy
YW1zX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJuIHN0cmVhbV9wYXJhbXNfcmVzdWx0Lk1vdmVF
cnJvcigpOwotICB9Ci0KLSAgLy8gQ2hlY2sgdGhhdCBhdWRpby92aWRlbyBzZW5kZXIgYXJlbid0
IHVzaW5nIHRoZSBzYW1lIElEcyB0byByZWZlciB0bwotICAvLyBkaWZmZXJlbnQgdGhpbmdzLCBp
ZiB0aGV5IHNoYXJlIHRoZSBzYW1lIHRyYW5zcG9ydC4KLSAgaWYgKGlubmVyX2F1ZGlvX3RyYW5z
cG9ydF8gPT0gaW5uZXJfdmlkZW9fdHJhbnNwb3J0XykgewotICAgIFJUQ0Vycm9yIGVyciA9IENo
ZWNrRm9ySWRDb25mbGljdHMoCi0gICAgICAgIGNvZGVjc19yZXN1bHQudmFsdWUoKSwgZXh0ZW5z
aW9uc19yZXN1bHQudmFsdWUoKSwKLSAgICAgICAgc3RyZWFtX3BhcmFtc19yZXN1bHQudmFsdWUo
KSwgcmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXy5jb2RlY3MoKSwKLSAgICAgICAgcmVtb3RlX2F1
ZGlvX2Rlc2NyaXB0aW9uXy5ydHBfaGVhZGVyX2V4dGVuc2lvbnMoKSwKLSAgICAgICAgbG9jYWxf
YXVkaW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKSk7Ci0gICAgaWYgKCFlcnIub2soKSkgewotICAg
ICAgcmV0dXJuIGVycjsKLSAgICB9Ci0gIH0KLQotICBib29sIGxvY2FsX3NlbmQgPSBmYWxzZTsK
LSAgaW50IGJhbmR3aWR0aCA9IGNyaWNrZXQ6OmtBdXRvQmFuZHdpZHRoOwotICBpZiAocGFyYW1l
dGVycy5lbmNvZGluZ3Muc2l6ZSgpID09IDF1KSB7Ci0gICAgaWYgKHBhcmFtZXRlcnMuZW5jb2Rp
bmdzWzBdLm1heF9iaXRyYXRlX2JwcykgewotICAgICAgYmFuZHdpZHRoID0gKnBhcmFtZXRlcnMu
ZW5jb2RpbmdzWzBdLm1heF9iaXRyYXRlX2JwczsKLSAgICB9Ci0gICAgbG9jYWxfc2VuZCA9IHBh
cmFtZXRlcnMuZW5jb2RpbmdzWzBdLmFjdGl2ZTsKLSAgfQotICBjb25zdCBib29sIGxvY2FsX3Jl
Y3YgPQotICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25IYXNSZWN2KGxvY2FsX2F1ZGlvX2Rl
c2NyaXB0aW9uXy5kaXJlY3Rpb24oKSk7Ci0gIGNvbnN0IGF1dG8gbG9jYWxfZGlyZWN0aW9uID0K
LSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uRnJvbVNlbmRSZWN2KGxvY2FsX3NlbmQsIGxv
Y2FsX3JlY3YpOwotICBpZiAocHJpbWFyeV9zc3JjICYmICFzdHJlYW1fcGFyYW1zX3Jlc3VsdC52
YWx1ZSgpLmVtcHR5KCkpIHsKLSAgICAqcHJpbWFyeV9zc3JjID0gc3RyZWFtX3BhcmFtc19yZXN1
bHQudmFsdWUoKVswXS5maXJzdF9zc3JjKCk7Ci0gIH0KLQotICAvLyBWYWxpZGF0aW9uIGlzIGRv
bmUsIHNvIHdlIGNhbiBhdHRlbXB0IGFwcGx5aW5nIHRoZSBkZXNjcmlwdGlvbnMuIFNlbnQKLSAg
Ly8gY29kZWNzIGFuZCBoZWFkZXIgZXh0ZW5zaW9ucyBnbyBpbiByZW1vdGUgZGVzY3JpcHRpb24s
IHN0cmVhbXMgZ28gaW4KLSAgLy8gbG9jYWwuCi0gIC8vCi0gIC8vIElmIHRoZXJlIGFyZSBubyBj
b2RlY3Mgb3IgZW5jb2RpbmdzLCBqdXN0IGxlYXZlIHRoZSBwcmV2aW91cyBzZXQgb2YKLSAgLy8g
Y29kZWNzLiBUaGUgbWVkaWEgZW5naW5lIGRvZXNuJ3QgbGlrZSBhbiBlbXB0eSBzZXQgb2YgY29k
ZWNzLgotICBpZiAobG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKS5lbXB0eSgpICYm
Ci0gICAgICByZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLmNvZGVjcygpLmVtcHR5KCkpIHsKLSAg
fSBlbHNlIHsKLSAgICByZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLnNldF9jb2RlY3MoY29kZWNz
X3Jlc3VsdC5Nb3ZlVmFsdWUoKSk7Ci0gIH0KLSAgcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXy5z
ZXRfcnRwX2hlYWRlcl9leHRlbnNpb25zKAotICAgICAgZXh0ZW5zaW9uc19yZXN1bHQuTW92ZVZh
bHVlKCkpOwotICByZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLnNldF9iYW5kd2lkdGgoYmFuZHdp
ZHRoKTsKLSAgbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLm11dGFibGVfc3RyZWFtcygpID0gc3Ry
ZWFtX3BhcmFtc19yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIC8vIERpcmVjdGlvbiBzZXQgYmFzZWQg
b24gZW5jb2RpbmcgImFjdGl2ZSIgZmxhZy4KLSAgbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLnNl
dF9kaXJlY3Rpb24obG9jYWxfZGlyZWN0aW9uKTsKLSAgcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9u
Xy5zZXRfZGlyZWN0aW9uKAotICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25SZXZlcnNlZChs
b2NhbF9kaXJlY3Rpb24pKTsKLQotICAvLyBTZXQgcmVtb3RlIGNvbnRlbnQgZmlyc3QsIHRvIGVu
c3VyZSB0aGUgc3RyZWFtIGlzIGNyZWF0ZWQgd2l0aCB0aGUgY29ycmVjdAotICAvLyBjb2RlYy4K
LSAgaWYgKCF2aWRlb19jaGFubmVsXy0+U2V0UmVtb3RlQ29udGVudCgmcmVtb3RlX3ZpZGVvX2Rl
c2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBU
eXBlOjprT2ZmZXIsIG51bGxwdHIpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJy
b3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVk
IHRvIGFwcGx5IHJlbW90ZSBwYXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5uZWwuIik7Ci0gIH0KLSAg
aWYgKCF2aWRlb19jaGFubmVsXy0+U2V0TG9jYWxDb250ZW50KCZsb2NhbF92aWRlb19kZXNjcmlw
dGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBUeXBlOjpr
QW5zd2VyLCBudWxscHRyKSkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlw
ZTo6SU5URVJOQUxfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBh
cHBseSBsb2NhbCBwYXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5uZWwuIik7Ci0gIH0KLSAgcmV0dXJu
IFJUQ0Vycm9yOjpPSygpOwotfQotCi1SVENFcnJvciBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRh
cHRlcjo6VmFsaWRhdGVBbmRBcHBseUF1ZGlvUmVjZWl2ZXJQYXJhbWV0ZXJzKAotICAgIGNvbnN0
IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIHsKLSAgUlRDX0RDSEVDSyh2b2ljZV9jaGFubmVs
Xyk7Ci0gIFJUQ19EQ0hFQ0soaGF2ZV9hdWRpb19yZWNlaXZlcl8pOwotCi0gIGF1dG8gY29kZWNz
X3Jlc3VsdCA9IFRvQ3JpY2tldENvZGVjczxjcmlja2V0OjpBdWRpb0NvZGVjPihwYXJhbWV0ZXJz
LmNvZGVjcyk7Ci0gIGlmICghY29kZWNzX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJuIGNvZGVj
c19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICBhdXRvIGV4dGVuc2lvbnNfcmVzdWx0ID0K
LSAgICAgIFRvQ3JpY2tldFJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1ldGVycy5oZWFkZXJfZXh0
ZW5zaW9ucyk7Ci0gIGlmICghZXh0ZW5zaW9uc19yZXN1bHQub2soKSkgewotICAgIHJldHVybiBl
eHRlbnNpb25zX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIGF1dG8gc3RyZWFtX3BhcmFt
c19yZXN1bHQgPSBUb0NyaWNrZXRTdHJlYW1QYXJhbXNWZWMocGFyYW1ldGVycy5lbmNvZGluZ3Mp
OwotICBpZiAoIXN0cmVhbV9wYXJhbXNfcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gc3RyZWFt
X3BhcmFtc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICAvLyBDaGVjayB0aGF0IGF1ZGlv
L3ZpZGVvIHJlY2VpdmUgYXJlbid0IHVzaW5nIHRoZSBzYW1lIElEcyB0byByZWZlciB0bwotICAv
LyBkaWZmZXJlbnQgdGhpbmdzLCBpZiB0aGV5IHNoYXJlIHRoZSBzYW1lIHRyYW5zcG9ydC4KLSAg
aWYgKGlubmVyX2F1ZGlvX3RyYW5zcG9ydF8gPT0gaW5uZXJfdmlkZW9fdHJhbnNwb3J0Xykgewot
ICAgIFJUQ0Vycm9yIGVyciA9IENoZWNrRm9ySWRDb25mbGljdHMoCi0gICAgICAgIGNvZGVjc19y
ZXN1bHQudmFsdWUoKSwgZXh0ZW5zaW9uc19yZXN1bHQudmFsdWUoKSwKLSAgICAgICAgc3RyZWFt
X3BhcmFtc19yZXN1bHQudmFsdWUoKSwgbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLmNvZGVjcygp
LAotICAgICAgICBsb2NhbF92aWRlb19kZXNjcmlwdGlvbl8ucnRwX2hlYWRlcl9leHRlbnNpb25z
KCksCi0gICAgICAgIHJlbW90ZV92aWRlb19kZXNjcmlwdGlvbl8uc3RyZWFtcygpKTsKLSAgICBp
ZiAoIWVyci5vaygpKSB7Ci0gICAgICByZXR1cm4gZXJyOwotICAgIH0KLSAgfQotCi0gIGNvbnN0
IGJvb2wgbG9jYWxfc2VuZCA9Ci0gICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbkhhc1NlbmQo
bG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLmRpcmVjdGlvbigpKTsKLSAgY29uc3QgYm9vbCBsb2Nh
bF9yZWN2ID0KLSAgICAgICFwYXJhbWV0ZXJzLmVuY29kaW5ncy5lbXB0eSgpICYmIHBhcmFtZXRl
cnMuZW5jb2RpbmdzWzBdLmFjdGl2ZTsKLSAgY29uc3QgYXV0byBsb2NhbF9kaXJlY3Rpb24gPQot
ICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25Gcm9tU2VuZFJlY3YobG9jYWxfc2VuZCwgbG9j
YWxfcmVjdik7Ci0KLSAgLy8gVmFsaWRhdGlvbiBpcyBkb25lLCBzbyB3ZSBjYW4gYXR0ZW1wdCBh
cHBseWluZyB0aGUgZGVzY3JpcHRpb25zLiBSZWNlaXZlZAotICAvLyBjb2RlY3MgYW5kIGhlYWRl
ciBleHRlbnNpb25zIGdvIGluIGxvY2FsIGRlc2NyaXB0aW9uLCBzdHJlYW1zIGdvIGluCi0gIC8v
IHJlbW90ZS4KLSAgLy8KLSAgLy8gSWYgdGhlcmUgYXJlIG5vIGNvZGVjcyBvciBlbmNvZGluZ3Ms
IGp1c3QgbGVhdmUgdGhlIHByZXZpb3VzIHNldCBvZgotICAvLyBjb2RlY3MuIFRoZSBtZWRpYSBl
bmdpbmUgZG9lc24ndCBsaWtlIGFuIGVtcHR5IHNldCBvZiBjb2RlY3MuCi0gIGlmIChyZW1vdGVf
YXVkaW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKS5lbXB0eSgpICYmCi0gICAgICBsb2NhbF9hdWRp
b19kZXNjcmlwdGlvbl8uY29kZWNzKCkuZW1wdHkoKSkgewotICB9IGVsc2UgewotICAgIGxvY2Fs
X2F1ZGlvX2Rlc2NyaXB0aW9uXy5zZXRfY29kZWNzKGNvZGVjc19yZXN1bHQuTW92ZVZhbHVlKCkp
OwotICB9Ci0gIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zZXRfcnRwX2hlYWRlcl9leHRlbnNp
b25zKAotICAgICAgZXh0ZW5zaW9uc19yZXN1bHQuTW92ZVZhbHVlKCkpOwotICByZW1vdGVfYXVk
aW9fZGVzY3JpcHRpb25fLm11dGFibGVfc3RyZWFtcygpID0KLSAgICAgIHN0cmVhbV9wYXJhbXNf
cmVzdWx0Lk1vdmVWYWx1ZSgpOwotICAvLyBEaXJlY3Rpb24gc2V0IGJhc2VkIG9uIGVuY29kaW5n
ICJhY3RpdmUiIGZsYWcuCi0gIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5zZXRfZGlyZWN0aW9u
KGxvY2FsX2RpcmVjdGlvbik7Ci0gIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uc2V0X2RpcmVj
dGlvbigKLSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uUmV2ZXJzZWQobG9jYWxfZGlyZWN0
aW9uKSk7Ci0KLSAgaWYgKCF2b2ljZV9jaGFubmVsXy0+U2V0TG9jYWxDb250ZW50KCZsb2NhbF9h
dWRpb19kZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTZHBUeXBlOjprT2ZmZXIsIG51bGxwdHIpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1Io
UlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAi
RmFpbGVkIHRvIGFwcGx5IGxvY2FsIHBhcmFtZXRlcnMgdG8gbWVkaWEgY2hhbm5lbC4iKTsKLSAg
fQotICBpZiAoIXZvaWNlX2NoYW5uZWxfLT5TZXRSZW1vdGVDb250ZW50KCZyZW1vdGVfYXVkaW9f
ZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNk
cFR5cGU6OmtBbnN3ZXIsIG51bGxwdHIpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRD
RXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFp
bGVkIHRvIGFwcGx5IHJlbW90ZSBwYXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5uZWwuIik7Ci0gIH0K
LSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1SVENFcnJvciBSdHBUcmFuc3BvcnRDb250
cm9sbGVyQWRhcHRlcjo6VmFsaWRhdGVBbmRBcHBseVZpZGVvUmVjZWl2ZXJQYXJhbWV0ZXJzKAot
ICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIHsKLSAgUlRDX0RDSEVDSyh2aWRl
b19jaGFubmVsXyk7Ci0gIFJUQ19EQ0hFQ0soaGF2ZV92aWRlb19yZWNlaXZlcl8pOwotCi0gIGF1
dG8gY29kZWNzX3Jlc3VsdCA9IFRvQ3JpY2tldENvZGVjczxjcmlja2V0OjpWaWRlb0NvZGVjPihw
YXJhbWV0ZXJzLmNvZGVjcyk7Ci0gIGlmICghY29kZWNzX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0
dXJuIGNvZGVjc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICBhdXRvIGV4dGVuc2lvbnNf
cmVzdWx0ID0KLSAgICAgIFRvQ3JpY2tldFJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1ldGVycy5o
ZWFkZXJfZXh0ZW5zaW9ucyk7Ci0gIGlmICghZXh0ZW5zaW9uc19yZXN1bHQub2soKSkgewotICAg
IHJldHVybiBleHRlbnNpb25zX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIGludCBiYW5k
d2lkdGggPSBjcmlja2V0OjprQXV0b0JhbmR3aWR0aDsKLSAgYXV0byBzdHJlYW1fcGFyYW1zX3Jl
c3VsdCA9IFRvQ3JpY2tldFN0cmVhbVBhcmFtc1ZlYyhwYXJhbWV0ZXJzLmVuY29kaW5ncyk7Ci0g
IGlmICghc3RyZWFtX3BhcmFtc19yZXN1bHQub2soKSkgewotICAgIHJldHVybiBzdHJlYW1fcGFy
YW1zX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIC8vIENoZWNrIHRoYXQgYXVkaW8vdmlk
ZW8gcmVjZWl2ZXIgYXJlbid0IHVzaW5nIHRoZSBzYW1lIElEcyB0byByZWZlciB0bwotICAvLyBk
aWZmZXJlbnQgdGhpbmdzLCBpZiB0aGV5IHNoYXJlIHRoZSBzYW1lIHRyYW5zcG9ydC4KLSAgaWYg
KGlubmVyX2F1ZGlvX3RyYW5zcG9ydF8gPT0gaW5uZXJfdmlkZW9fdHJhbnNwb3J0XykgewotICAg
IFJUQ0Vycm9yIGVyciA9IENoZWNrRm9ySWRDb25mbGljdHMoCi0gICAgICAgIGNvZGVjc19yZXN1
bHQudmFsdWUoKSwgZXh0ZW5zaW9uc19yZXN1bHQudmFsdWUoKSwKLSAgICAgICAgc3RyZWFtX3Bh
cmFtc19yZXN1bHQudmFsdWUoKSwgbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLmNvZGVjcygpLAot
ICAgICAgICBsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8ucnRwX2hlYWRlcl9leHRlbnNpb25zKCks
Ci0gICAgICAgIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uc3RyZWFtcygpKTsKLSAgICBpZiAo
IWVyci5vaygpKSB7Ci0gICAgICByZXR1cm4gZXJyOwotICAgIH0KLSAgfQotCi0gIGNvbnN0IGJv
b2wgbG9jYWxfc2VuZCA9Ci0gICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbkhhc1NlbmQobG9j
YWxfdmlkZW9fZGVzY3JpcHRpb25fLmRpcmVjdGlvbigpKTsKLSAgY29uc3QgYm9vbCBsb2NhbF9y
ZWN2ID0KLSAgICAgICFwYXJhbWV0ZXJzLmVuY29kaW5ncy5lbXB0eSgpICYmIHBhcmFtZXRlcnMu
ZW5jb2RpbmdzWzBdLmFjdGl2ZTsKLSAgY29uc3QgYXV0byBsb2NhbF9kaXJlY3Rpb24gPQotICAg
ICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25Gcm9tU2VuZFJlY3YobG9jYWxfc2VuZCwgbG9jYWxf
cmVjdik7Ci0KLSAgLy8gVmFsaWRhdGlvbiBpcyBkb25lLCBzbyB3ZSBjYW4gYXR0ZW1wdCBhcHBs
eWluZyB0aGUgZGVzY3JpcHRpb25zLiBSZWNlaXZlZAotICAvLyBjb2RlY3MgYW5kIGhlYWRlciBl
eHRlbnNpb25zIGdvIGluIGxvY2FsIGRlc2NyaXB0aW9uLCBzdHJlYW1zIGdvIGluCi0gIC8vIHJl
bW90ZS4KLSAgLy8KLSAgLy8gSWYgdGhlcmUgYXJlIG5vIGNvZGVjcyBvciBlbmNvZGluZ3MsIGp1
c3QgbGVhdmUgdGhlIHByZXZpb3VzIHNldCBvZgotICAvLyBjb2RlY3MuIFRoZSBtZWRpYSBlbmdp
bmUgZG9lc24ndCBsaWtlIGFuIGVtcHR5IHNldCBvZiBjb2RlY3MuCi0gIGlmIChyZW1vdGVfdmlk
ZW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKS5lbXB0eSgpICYmCi0gICAgICBsb2NhbF92aWRlb19k
ZXNjcmlwdGlvbl8uY29kZWNzKCkuZW1wdHkoKSkgewotICB9IGVsc2UgewotICAgIGxvY2FsX3Zp
ZGVvX2Rlc2NyaXB0aW9uXy5zZXRfY29kZWNzKGNvZGVjc19yZXN1bHQuTW92ZVZhbHVlKCkpOwot
ICB9Ci0gIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zZXRfcnRwX2hlYWRlcl9leHRlbnNpb25z
KAotICAgICAgZXh0ZW5zaW9uc19yZXN1bHQuTW92ZVZhbHVlKCkpOwotICBsb2NhbF92aWRlb19k
ZXNjcmlwdGlvbl8uc2V0X2JhbmR3aWR0aChiYW5kd2lkdGgpOwotICByZW1vdGVfdmlkZW9fZGVz
Y3JpcHRpb25fLm11dGFibGVfc3RyZWFtcygpID0KLSAgICAgIHN0cmVhbV9wYXJhbXNfcmVzdWx0
Lk1vdmVWYWx1ZSgpOwotICAvLyBEaXJlY3Rpb24gc2V0IGJhc2VkIG9uIGVuY29kaW5nICJhY3Rp
dmUiIGZsYWcuCi0gIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zZXRfZGlyZWN0aW9uKGxvY2Fs
X2RpcmVjdGlvbik7Ci0gIHJlbW90ZV92aWRlb19kZXNjcmlwdGlvbl8uc2V0X2RpcmVjdGlvbigK
LSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uUmV2ZXJzZWQobG9jYWxfZGlyZWN0aW9uKSk7
Ci0KLSAgaWYgKCF2aWRlb19jaGFubmVsXy0+U2V0TG9jYWxDb250ZW50KCZsb2NhbF92aWRlb19k
ZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBU
eXBlOjprT2ZmZXIsIG51bGxwdHIpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJy
b3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVk
IHRvIGFwcGx5IGxvY2FsIHBhcmFtZXRlcnMgdG8gbWVkaWEgY2hhbm5lbC4iKTsKLSAgfQotICBp
ZiAoIXZpZGVvX2NoYW5uZWxfLT5TZXRSZW1vdGVDb250ZW50KCZyZW1vdGVfdmlkZW9fZGVzY3Jp
cHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFR5cGU6
OmtBbnN3ZXIsIG51bGxwdHIpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JU
eXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRv
IGFwcGx5IHJlbW90ZSBwYXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5uZWwuIik7Ci0gIH0KLSAgcmV0
dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1SdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6
UnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIoCi0gICAgY29uc3QgY3JpY2tldDo6TWVkaWFD
b25maWcmIGNvbmZpZywKLSAgICBjcmlja2V0OjpDaGFubmVsTWFuYWdlciogY2hhbm5lbF9tYW5h
Z2VyLAotICAgIHdlYnJ0Yzo6UnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKLSAgICBydGM6OlRocmVh
ZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKLSAg
ICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQpCi0gICAgOiBzaWduYWxpbmdfdGhyZWFkXyhz
aWduYWxpbmdfdGhyZWFkKSwKLSAgICAgIHdvcmtlcl90aHJlYWRfKHdvcmtlcl90aHJlYWQpLAot
ICAgICAgbmV0d29ya190aHJlYWRfKG5ldHdvcmtfdGhyZWFkKSwKLSAgICAgIG1lZGlhX2NvbmZp
Z18oY29uZmlnKSwKLSAgICAgIGNoYW5uZWxfbWFuYWdlcl8oY2hhbm5lbF9tYW5hZ2VyKSwKLSAg
ICAgIGV2ZW50X2xvZ18oZXZlbnRfbG9nKSwKLSAgICAgIGNhbGxfc2VuZF9ydHBfdHJhbnNwb3J0
X2NvbnRyb2xsZXJfKG51bGxwdHIpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3Ro
cmVhZF8pOwotICBSVENfRENIRUNLKGNoYW5uZWxfbWFuYWdlcl8pOwotICAvLyBBZGQgImR1bW15
IiBjb2RlY3MgdG8gdGhlIGRlc2NyaXB0aW9ucywgYmVjYXVzZSB0aGUgbWVkaWEgZW5naW5lcwot
ICAvLyBjdXJyZW50bHkgcmVqZWN0IGVtcHR5IGxpc3RzIG9mIGNvZGVjcy4gTm90ZSB0aGF0IHRo
ZXNlIGNvZGVjcyB3aWxsIG5ldmVyCi0gIC8vIGFjdHVhbGx5IGJlIHVzZWQsIGJlY2F1c2Ugd2hl
biBwYXJhbWV0ZXJzIGFyZSBzZXQsIHRoZSBkdW1teSBjb2RlY3Mgd2lsbAotICAvLyBiZSByZXBs
YWNlZCBieSBhY3R1YWwgY29kZWNzIGJlZm9yZSBhbnkgc2VuZC9yZWNlaXZlIHN0cmVhbXMgYXJl
IGNyZWF0ZWQuCi0gIGNvbnN0IGNyaWNrZXQ6OkF1ZGlvQ29kZWMgZHVtbXlfYXVkaW8oMCwgY3Jp
Y2tldDo6a1BjbXVDb2RlY05hbWUsIDgwMDAsIDAsIDEpOwotICBjb25zdCBjcmlja2V0OjpWaWRl
b0NvZGVjIGR1bW15X3ZpZGVvKDk2LCBjcmlja2V0OjprVnA4Q29kZWNOYW1lKTsKLSAgbG9jYWxf
YXVkaW9fZGVzY3JpcHRpb25fLkFkZENvZGVjKGR1bW15X2F1ZGlvKTsKLSAgcmVtb3RlX2F1ZGlv
X2Rlc2NyaXB0aW9uXy5BZGRDb2RlYyhkdW1teV9hdWRpbyk7Ci0gIGxvY2FsX3ZpZGVvX2Rlc2Ny
aXB0aW9uXy5BZGRDb2RlYyhkdW1teV92aWRlbyk7Ci0gIHJlbW90ZV92aWRlb19kZXNjcmlwdGlv
bl8uQWRkQ29kZWMoZHVtbXlfdmlkZW8pOwotCi0gIHdvcmtlcl90aHJlYWRfLT5JbnZva2U8dm9p
ZD4oCi0gICAgICBSVENfRlJPTV9IRVJFLCBydGM6OkJpbmQoJlJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJBZGFwdGVyOjpJbml0X3csIHRoaXMpKTsKLX0KLQotLy8gVE9ETyhuaXNzZSk6IER1cGxpY2F0
ZXMgY29ycmVzcG9uZGluZyBtZXRob2QgaW4gUGVlckNvbm5lY3Rpb24gKHVzZWQKLS8vIHRvIGJl
IGluIE1lZGlhQ29udHJvbGxlcikuCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVy
OjpJbml0X3coKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF8tPklzQ3VycmVudCgpKTsK
LSAgUlRDX0RDSEVDSyghY2FsbF8pOwotCi0gIGNvbnN0IGludCBrTWluQmFuZHdpZHRoQnBzID0g
MzAwMDA7Ci0gIGNvbnN0IGludCBrU3RhcnRCYW5kd2lkdGhCcHMgPSAzMDAwMDA7Ci0gIGNvbnN0
IGludCBrTWF4QmFuZHdpZHRoQnBzID0gMjAwMDAwMDsKLQotICB3ZWJydGM6OkNhbGw6OkNvbmZp
ZyBjYWxsX2NvbmZpZyhldmVudF9sb2dfKTsKLSAgY2FsbF9jb25maWcuYXVkaW9fc3RhdGUgPSBj
aGFubmVsX21hbmFnZXJfLT5tZWRpYV9lbmdpbmUoKS0+R2V0QXVkaW9TdGF0ZSgpOwotICBjYWxs
X2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5taW5fYml0cmF0ZV9icHMgPSBrTWluQmFuZHdpZHRoQnBz
OwotICBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5zdGFydF9iaXRyYXRlX2JwcyA9IGtTdGFy
dEJhbmR3aWR0aEJwczsKLSAgY2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcubWF4X2JpdHJhdGVf
YnBzID0ga01heEJhbmR3aWR0aEJwczsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJTZW5kPiBjb250cm9sbGVyX3NlbmQgPQotICAgICAgYWJzbDo6bWFrZV91bmlxdWU8
UnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQ+KAotICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGlt
ZUNsb2NrKCksIGV2ZW50X2xvZ18sCi0gICAgICAgICAgY2FsbF9jb25maWcubmV0d29ya19jb250
cm9sbGVyX2ZhY3RvcnksIGNhbGxfY29uZmlnLmJpdHJhdGVfY29uZmlnKTsKLSAgY2FsbF9zZW5k
X3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl8gPSBjb250cm9sbGVyX3NlbmQuZ2V0KCk7Ci0gIGNh
bGxfLnJlc2V0KHdlYnJ0Yzo6Q2FsbDo6Q3JlYXRlKGNhbGxfY29uZmlnLCBzdGQ6Om1vdmUoY29u
dHJvbGxlcl9zZW5kKSkpOwotfQotCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVy
OjpDbG9zZV93KCkgewotICBjYWxsXy5yZXNldCgpOwotICBjYWxsX3NlbmRfcnRwX3RyYW5zcG9y
dF9jb250cm9sbGVyXyA9IG51bGxwdHI7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydENvbnRy
b2xsZXJBZGFwdGVyOjpBdHRhY2hBdWRpb1NlbmRlcigKLSAgICBPcnRjUnRwU2VuZGVyQWRhcHRl
ciogc2VuZGVyLAotICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0KSB7
Ci0gIGlmIChoYXZlX2F1ZGlvX3NlbmRlcl8pIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihS
VENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiVXNpbmcgdHdvIGF1ZGlvIFJ0cFNlbmRlcnMgd2l0aCB0aGUgc2FtZSAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIlJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyIGlzIG5vdCBj
dXJyZW50bHkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0ZWQuIik7Ci0gIH0K
LSAgaWYgKGlubmVyX2F1ZGlvX3RyYW5zcG9ydF8gJiYgaW5uZXJfYXVkaW9fdHJhbnNwb3J0XyAh
PSBpbm5lcl90cmFuc3BvcnQpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5
cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiVXNp
bmcgZGlmZmVyZW50IHRyYW5zcG9ydHMgZm9yIHRoZSBhdWRpbyAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIlJ0cFNlbmRlciBhbmQgUnRwUmVjZWl2ZXIgaXMgbm90IGN1cnJlbnRseSAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZC4iKTsKLSAgfQotCi0gIC8vIElmIHNl
dHRpbmcgbmV3IHRyYW5zcG9ydCwgZXh0cmFjdCBpdHMgUlRDUCBwYXJhbWV0ZXJzIGFuZCBjcmVh
dGUgdm9pY2UKLSAgLy8gY2hhbm5lbC4KLSAgaWYgKCFpbm5lcl9hdWRpb190cmFuc3BvcnRfKSB7
Ci0gICAgQ29weVJ0Y3BQYXJhbWV0ZXJzVG9EZXNjcmlwdGlvbnMoaW5uZXJfdHJhbnNwb3J0LT5H
ZXRQYXJhbWV0ZXJzKCkucnRjcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZyZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fKTsKLSAgICBpbm5lcl9hdWRpb190
cmFuc3BvcnRfID0gaW5uZXJfdHJhbnNwb3J0OwotICAgIENyZWF0ZVZvaWNlQ2hhbm5lbCgpOwot
ICB9Ci0gIGhhdmVfYXVkaW9fc2VuZGVyXyA9IHRydWU7Ci0gIHNlbmRlci0+U2lnbmFsRGVzdHJv
eWVkLmNvbm5lY3QoCi0gICAgICB0aGlzLCAmUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6
Ok9uQXVkaW9TZW5kZXJEZXN0cm95ZWQpOwotICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7Ci19Ci0K
LVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpBdHRhY2hWaWRlb1NlbmRl
cigKLSAgICBPcnRjUnRwU2VuZGVyQWRhcHRlciogc2VuZGVyLAotICAgIFJ0cFRyYW5zcG9ydElu
dGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0KSB7Ci0gIGlmIChoYXZlX3ZpZGVvX3NlbmRlcl8pIHsK
LSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJB
VElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiVXNpbmcgdHdvIHZpZGVvIFJ0cFNlbmRl
cnMgd2l0aCB0aGUgc2FtZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJBZGFwdGVyIGlzIG5vdCBjdXJyZW50bHkgIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICJzdXBwb3J0ZWQuIik7Ci0gIH0KLSAgaWYgKGlubmVyX3ZpZGVvX3RyYW5zcG9ydF8g
JiYgaW5uZXJfdmlkZW9fdHJhbnNwb3J0XyAhPSBpbm5lcl90cmFuc3BvcnQpIHsKLSAgICBMT0df
QU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAiVXNpbmcgZGlmZmVyZW50IHRyYW5zcG9ydHMgZm9yIHRo
ZSB2aWRlbyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlJ0cFNlbmRlciBhbmQgUnRwUmVj
ZWl2ZXIgaXMgbm90IGN1cnJlbnRseSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBv
cnRlZC4iKTsKLSAgfQotCi0gIC8vIElmIHNldHRpbmcgbmV3IHRyYW5zcG9ydCwgZXh0cmFjdCBp
dHMgUlRDUCBwYXJhbWV0ZXJzIGFuZCBjcmVhdGUgdmlkZW8KLSAgLy8gY2hhbm5lbC4KLSAgaWYg
KCFpbm5lcl92aWRlb190cmFuc3BvcnRfKSB7Ci0gICAgQ29weVJ0Y3BQYXJhbWV0ZXJzVG9EZXNj
cmlwdGlvbnMoaW5uZXJfdHJhbnNwb3J0LT5HZXRQYXJhbWV0ZXJzKCkucnRjcCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZW1vdGVfdmlkZW9fZGVzY3Jp
cHRpb25fKTsKLSAgICBpbm5lcl92aWRlb190cmFuc3BvcnRfID0gaW5uZXJfdHJhbnNwb3J0Owot
ICAgIENyZWF0ZVZpZGVvQ2hhbm5lbCgpOwotICB9Ci0gIGhhdmVfdmlkZW9fc2VuZGVyXyA9IHRy
dWU7Ci0gIHNlbmRlci0+U2lnbmFsRGVzdHJveWVkLmNvbm5lY3QoCi0gICAgICB0aGlzLCAmUnRw
VHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6Ok9uVmlkZW9TZW5kZXJEZXN0cm95ZWQpOwotICBy
ZXR1cm4gUlRDRXJyb3I6Ok9LKCk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJBZGFwdGVyOjpBdHRhY2hBdWRpb1JlY2VpdmVyKAotICAgIE9ydGNSdHBSZWNlaXZlckFkYXB0
ZXIqIHJlY2VpdmVyLAotICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0
KSB7Ci0gIGlmIChoYXZlX2F1ZGlvX3JlY2VpdmVyXykgewotICAgIExPR19BTkRfUkVUVVJOX0VS
Uk9SKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICJVc2luZyB0d28gYXVkaW8gUnRwUmVjZWl2ZXJzIHdpdGggdGhlIHNhbWUgIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICJSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciBp
cyBub3QgY3VycmVudGx5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydGVkLiIp
OwotICB9Ci0gIGlmIChpbm5lcl9hdWRpb190cmFuc3BvcnRfICYmIGlubmVyX2F1ZGlvX3RyYW5z
cG9ydF8gIT0gaW5uZXJfdHJhbnNwb3J0KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRD
RXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIlVzaW5nIGRpZmZlcmVudCB0cmFuc3BvcnRzIGZvciB0aGUgYXVkaW8gIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICJSdHBSZWNlaXZlciBhbmQgUnRwUmVjZWl2ZXIgaXMgbm90IGN1cnJl
bnRseSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZC4iKTsKLSAgfQotCi0g
IC8vIElmIHNldHRpbmcgbmV3IHRyYW5zcG9ydCwgZXh0cmFjdCBpdHMgUlRDUCBwYXJhbWV0ZXJz
IGFuZCBjcmVhdGUgdm9pY2UKLSAgLy8gY2hhbm5lbC4KLSAgaWYgKCFpbm5lcl9hdWRpb190cmFu
c3BvcnRfKSB7Ci0gICAgQ29weVJ0Y3BQYXJhbWV0ZXJzVG9EZXNjcmlwdGlvbnMoaW5uZXJfdHJh
bnNwb3J0LT5HZXRQYXJhbWV0ZXJzKCkucnRjcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZyZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fKTsKLSAgICBpbm5l
cl9hdWRpb190cmFuc3BvcnRfID0gaW5uZXJfdHJhbnNwb3J0OwotICAgIENyZWF0ZVZvaWNlQ2hh
bm5lbCgpOwotICB9Ci0gIGhhdmVfYXVkaW9fcmVjZWl2ZXJfID0gdHJ1ZTsKLSAgcmVjZWl2ZXIt
PlNpZ25hbERlc3Ryb3llZC5jb25uZWN0KAotICAgICAgdGhpcywgJlJ0cFRyYW5zcG9ydENvbnRy
b2xsZXJBZGFwdGVyOjpPbkF1ZGlvUmVjZWl2ZXJEZXN0cm95ZWQpOwotICByZXR1cm4gUlRDRXJy
b3I6Ok9LKCk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpB
dHRhY2hWaWRlb1JlY2VpdmVyKAotICAgIE9ydGNSdHBSZWNlaXZlckFkYXB0ZXIqIHJlY2VpdmVy
LAotICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0KSB7Ci0gIGlmICho
YXZlX3ZpZGVvX3JlY2VpdmVyXykgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9y
VHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICJV
c2luZyB0d28gdmlkZW8gUnRwUmVjZWl2ZXJzIHdpdGggdGhlIHNhbWUgIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICJSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciBpcyBub3QgY3VycmVu
dGx5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydGVkLiIpOwotICB9Ci0gIGlm
IChpbm5lcl92aWRlb190cmFuc3BvcnRfICYmIGlubmVyX3ZpZGVvX3RyYW5zcG9ydF8gIT0gaW5u
ZXJfdHJhbnNwb3J0KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpV
TlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlVzaW5nIGRp
ZmZlcmVudCB0cmFuc3BvcnRzIGZvciB0aGUgdmlkZW8gIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICJSdHBSZWNlaXZlciBhbmQgUnRwUmVjZWl2ZXIgaXMgbm90IGN1cnJlbnRseSAiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZC4iKTsKLSAgfQotICAvLyBJZiBzZXR0aW5n
IG5ldyB0cmFuc3BvcnQsIGV4dHJhY3QgaXRzIFJUQ1AgcGFyYW1ldGVycyBhbmQgY3JlYXRlIHZp
ZGVvCi0gIC8vIGNoYW5uZWwuCi0gIGlmICghaW5uZXJfdmlkZW9fdHJhbnNwb3J0XykgewotICAg
IENvcHlSdGNwUGFyYW1ldGVyc1RvRGVzY3JpcHRpb25zKGlubmVyX3RyYW5zcG9ydC0+R2V0UGFy
YW1ldGVycygpLnJ0Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxv
Y2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXyk7Ci0gICAgaW5uZXJfdmlkZW9fdHJhbnNw
b3J0XyA9IGlubmVyX3RyYW5zcG9ydDsKLSAgICBDcmVhdGVWaWRlb0NoYW5uZWwoKTsKLSAgfQot
ICBoYXZlX3ZpZGVvX3JlY2VpdmVyXyA9IHRydWU7Ci0gIHJlY2VpdmVyLT5TaWduYWxEZXN0cm95
ZWQuY29ubmVjdCgKLSAgICAgIHRoaXMsICZSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6
T25WaWRlb1JlY2VpdmVyRGVzdHJveWVkKTsKLSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQot
Ci12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPblJ0cFRyYW5zcG9ydERlc3Ry
b3llZCgKLSAgICBSdHBUcmFuc3BvcnRBZGFwdGVyKiB0cmFuc3BvcnQpIHsKLSAgUlRDX0RDSEVD
S19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBhdXRvIGl0ID0gc3RkOjpmaW5kX2lmKHRy
YW5zcG9ydF9wcm94aWVzXy5iZWdpbigpLCB0cmFuc3BvcnRfcHJveGllc18uZW5kKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgW3RyYW5zcG9ydF0oUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBw
cm94eSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5HZXRJbnRl
cm5hbCgpID09IHRyYW5zcG9ydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgaWYg
KGl0ID09IHRyYW5zcG9ydF9wcm94aWVzXy5lbmQoKSkgewotICAgIFJUQ19OT1RSRUFDSEVEKCk7
Ci0gICAgcmV0dXJuOwotICB9Ci0gIHRyYW5zcG9ydF9wcm94aWVzXy5lcmFzZShpdCk7Ci19Ci0K
LXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6Ok9uQXVkaW9TZW5kZXJEZXN0cm95
ZWQoKSB7Ci0gIGlmICghaGF2ZV9hdWRpb19zZW5kZXJfKSB7Ci0gICAgUlRDX05PVFJFQUNIRUQo
KTsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy8gRW1wdHkgcGFyYW1ldGVycyBzaG91bGQgcmVzdWx0
IGluIHNlbmRpbmcgYmVpbmcgc3RvcHBlZC4KLSAgUlRDRXJyb3IgZXJyID0KLSAgICAgIFZhbGlk
YXRlQW5kQXBwbHlBdWRpb1NlbmRlclBhcmFtZXRlcnMoUnRwUGFyYW1ldGVycygpLCBudWxscHRy
KTsKLSAgUlRDX0RDSEVDSyhlcnIub2soKSk7Ci0gIGhhdmVfYXVkaW9fc2VuZGVyXyA9IGZhbHNl
OwotICBpZiAoIWhhdmVfYXVkaW9fcmVjZWl2ZXJfKSB7Ci0gICAgRGVzdHJveVZvaWNlQ2hhbm5l
bCgpOwotICB9Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6Ok9uVmlk
ZW9TZW5kZXJEZXN0cm95ZWQoKSB7Ci0gIGlmICghaGF2ZV92aWRlb19zZW5kZXJfKSB7Ci0gICAg
UlRDX05PVFJFQUNIRUQoKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy8gRW1wdHkgcGFyYW1ldGVy
cyBzaG91bGQgcmVzdWx0IGluIHNlbmRpbmcgYmVpbmcgc3RvcHBlZC4KLSAgUlRDRXJyb3IgZXJy
ID0KLSAgICAgIFZhbGlkYXRlQW5kQXBwbHlWaWRlb1NlbmRlclBhcmFtZXRlcnMoUnRwUGFyYW1l
dGVycygpLCBudWxscHRyKTsKLSAgUlRDX0RDSEVDSyhlcnIub2soKSk7Ci0gIGhhdmVfdmlkZW9f
c2VuZGVyXyA9IGZhbHNlOwotICBpZiAoIWhhdmVfdmlkZW9fcmVjZWl2ZXJfKSB7Ci0gICAgRGVz
dHJveVZpZGVvQ2hhbm5lbCgpOwotICB9Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxl
ckFkYXB0ZXI6Ok9uQXVkaW9SZWNlaXZlckRlc3Ryb3llZCgpIHsKLSAgaWYgKCFoYXZlX2F1ZGlv
X3JlY2VpdmVyXykgewotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgcmV0dXJuOwotICB9Ci0g
IC8vIEVtcHR5IHBhcmFtZXRlcnMgc2hvdWxkIHJlc3VsdCBpbiByZWNlaXZpbmcgYmVpbmcgc3Rv
cHBlZC4KLSAgUlRDRXJyb3IgZXJyID0gVmFsaWRhdGVBbmRBcHBseUF1ZGlvUmVjZWl2ZXJQYXJh
bWV0ZXJzKFJ0cFBhcmFtZXRlcnMoKSk7Ci0gIFJUQ19EQ0hFQ0soZXJyLm9rKCkpOwotICBoYXZl
X2F1ZGlvX3JlY2VpdmVyXyA9IGZhbHNlOwotICBpZiAoIWhhdmVfYXVkaW9fc2VuZGVyXykgewot
ICAgIERlc3Ryb3lWb2ljZUNoYW5uZWwoKTsKLSAgfQotfQotCi12b2lkIFJ0cFRyYW5zcG9ydENv
bnRyb2xsZXJBZGFwdGVyOjpPblZpZGVvUmVjZWl2ZXJEZXN0cm95ZWQoKSB7Ci0gIGlmICghaGF2
ZV92aWRlb19yZWNlaXZlcl8pIHsKLSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICAgIHJldHVybjsK
LSAgfQotICAvLyBFbXB0eSBwYXJhbWV0ZXJzIHNob3VsZCByZXN1bHQgaW4gcmVjZWl2aW5nIGJl
aW5nIHN0b3BwZWQuCi0gIFJUQ0Vycm9yIGVyciA9IFZhbGlkYXRlQW5kQXBwbHlWaWRlb1JlY2Vp
dmVyUGFyYW1ldGVycyhSdHBQYXJhbWV0ZXJzKCkpOwotICBSVENfRENIRUNLKGVyci5vaygpKTsK
LSAgaGF2ZV92aWRlb19yZWNlaXZlcl8gPSBmYWxzZTsKLSAgaWYgKCFoYXZlX3ZpZGVvX3NlbmRl
cl8pIHsKLSAgICBEZXN0cm95VmlkZW9DaGFubmVsKCk7Ci0gIH0KLX0KLQotdm9pZCBSdHBUcmFu
c3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q3JlYXRlVm9pY2VDaGFubmVsKCkgewotICB2b2ljZV9j
aGFubmVsXyA9IGNoYW5uZWxfbWFuYWdlcl8tPkNyZWF0ZVZvaWNlQ2hhbm5lbCgKLSAgICAgIGNh
bGxfLmdldCgpLCBtZWRpYV9jb25maWdfLCBpbm5lcl9hdWRpb190cmFuc3BvcnRfLT5HZXRJbnRl
cm5hbCgpLAotICAgICAgc2lnbmFsaW5nX3RocmVhZF8sICJhdWRpbyIsIGZhbHNlLCBydGM6OkNy
eXB0b09wdGlvbnMoKSwKLSAgICAgIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKTsKLSAgUlRDX0RD
SEVDSyh2b2ljZV9jaGFubmVsXyk7Ci0gIHZvaWNlX2NoYW5uZWxfLT5FbmFibGUodHJ1ZSk7Ci19
Ci0KLXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNyZWF0ZVZpZGVvQ2hhbm5l
bCgpIHsKLSAgdmlkZW9fY2hhbm5lbF8gPSBjaGFubmVsX21hbmFnZXJfLT5DcmVhdGVWaWRlb0No
YW5uZWwoCi0gICAgICBjYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnXywgaW5uZXJfdmlkZW9fdHJh
bnNwb3J0Xy0+R2V0SW50ZXJuYWwoKSwKLSAgICAgIHNpZ25hbGluZ190aHJlYWRfLCAidmlkZW8i
LCBmYWxzZSwgcnRjOjpDcnlwdG9PcHRpb25zKCksCi0gICAgICBjcmlja2V0OjpWaWRlb09wdGlv
bnMoKSk7Ci0gIFJUQ19EQ0hFQ0sodmlkZW9fY2hhbm5lbF8pOwotICB2aWRlb19jaGFubmVsXy0+
RW5hYmxlKHRydWUpOwotfQotCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpE
ZXN0cm95Vm9pY2VDaGFubmVsKCkgewotICBSVENfRENIRUNLKHZvaWNlX2NoYW5uZWxfKTsKLSAg
Y2hhbm5lbF9tYW5hZ2VyXy0+RGVzdHJveVZvaWNlQ2hhbm5lbCh2b2ljZV9jaGFubmVsXyk7Ci0g
IHZvaWNlX2NoYW5uZWxfID0gbnVsbHB0cjsKLSAgaW5uZXJfYXVkaW9fdHJhbnNwb3J0XyA9IG51
bGxwdHI7Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkRlc3Ryb3lW
aWRlb0NoYW5uZWwoKSB7Ci0gIFJUQ19EQ0hFQ0sodmlkZW9fY2hhbm5lbF8pOwotICBjaGFubmVs
X21hbmFnZXJfLT5EZXN0cm95VmlkZW9DaGFubmVsKHZpZGVvX2NoYW5uZWxfKTsKLSAgdmlkZW9f
Y2hhbm5lbF8gPSBudWxscHRyOwotICBpbm5lcl92aWRlb190cmFuc3BvcnRfID0gbnVsbHB0cjsK
LX0KLQotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q29weVJ0Y3BQYXJhbWV0
ZXJzVG9EZXNjcmlwdGlvbnMoCi0gICAgY29uc3QgUnRjcFBhcmFtZXRlcnMmIHBhcmFtcywKLSAg
ICBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogbG9jYWwsCi0gICAgY3JpY2tldDo6
TWVkaWFDb250ZW50RGVzY3JpcHRpb24qIHJlbW90ZSkgewotICBsb2NhbC0+c2V0X3J0Y3BfbXV4
KHBhcmFtcy5tdXgpOwotICByZW1vdGUtPnNldF9ydGNwX211eChwYXJhbXMubXV4KTsKLSAgbG9j
YWwtPnNldF9ydGNwX3JlZHVjZWRfc2l6ZShwYXJhbXMucmVkdWNlZF9zaXplKTsKLSAgcmVtb3Rl
LT5zZXRfcnRjcF9yZWR1Y2VkX3NpemUocGFyYW1zLnJlZHVjZWRfc2l6ZSk7Ci0gIGZvciAoY3Jp
Y2tldDo6U3RyZWFtUGFyYW1zJiBzdHJlYW1fcGFyYW1zIDogbG9jYWwtPm11dGFibGVfc3RyZWFt
cygpKSB7Ci0gICAgc3RyZWFtX3BhcmFtcy5jbmFtZSA9IHBhcmFtcy5jbmFtZTsKLSAgfQotfQot
Ci11aW50MzJfdCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6R2VuZXJhdGVVbnVzZWRT
c3JjKAotICAgIHN0ZDo6c2V0PHVpbnQzMl90PiogbmV3X3NzcmNzKSBjb25zdCB7Ci0gIHVpbnQz
Ml90IHNzcmM7Ci0gIGRvIHsKLSAgICBzc3JjID0gcnRjOjpDcmVhdGVSYW5kb21Ob25aZXJvSWQo
KTsKLSAgfSB3aGlsZSAoCi0gICAgICBjcmlja2V0OjpHZXRTdHJlYW1CeVNzcmMobG9jYWxfYXVk
aW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKSwgc3NyYykgfHwKLSAgICAgIGNyaWNrZXQ6OkdldFN0
cmVhbUJ5U3NyYyhyZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKSwgc3NyYykgfHwK
LSAgICAgIGNyaWNrZXQ6OkdldFN0cmVhbUJ5U3NyYyhsb2NhbF92aWRlb19kZXNjcmlwdGlvbl8u
c3RyZWFtcygpLCBzc3JjKSB8fAotICAgICAgY3JpY2tldDo6R2V0U3RyZWFtQnlTc3JjKHJlbW90
ZV92aWRlb19kZXNjcmlwdGlvbl8uc3RyZWFtcygpLCBzc3JjKSB8fAotICAgICAgIW5ld19zc3Jj
cy0+aW5zZXJ0KHNzcmMpLnNlY29uZCk7Ci0gIHJldHVybiBzc3JjOwotfQotCi1SVENFcnJvck9y
PGNyaWNrZXQ6OlN0cmVhbVBhcmFtc1ZlYz4KLVJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVy
OjpNYWtlU2VuZFN0cmVhbVBhcmFtc1ZlYygKLSAgICBzdGQ6OnZlY3RvcjxSdHBFbmNvZGluZ1Bh
cmFtZXRlcnM+IGVuY29kaW5ncywKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgY25hbWUsCi0gICAg
Y29uc3QgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKSBjb25z
dCB7Ci0gIGlmIChlbmNvZGluZ3Muc2l6ZSgpID4gMXUpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9F
UlJPUih3ZWJydGM6OlJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfUEFSQU1FVEVSLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICJPUlRDIEFQSSBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGN1cnJl
bnRseSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnQgc2ltdWxjYXN0IG9yIGxh
eWVyZWQgZW5jb2RpbmdzLiIpOwotICB9IGVsc2UgaWYgKGVuY29kaW5ncy5lbXB0eSgpKSB7Ci0g
ICAgcmV0dXJuIGNyaWNrZXQ6OlN0cmVhbVBhcmFtc1ZlYygpOwotICB9Ci0gIFJ0cEVuY29kaW5n
UGFyYW1ldGVycyYgZW5jb2RpbmcgPSBlbmNvZGluZ3NbMF07Ci0gIHN0ZDo6c2V0PHVpbnQzMl90
PiBuZXdfc3NyY3M7Ci0gIGlmIChlbmNvZGluZy5zc3JjKSB7Ci0gICAgbmV3X3NzcmNzLmluc2Vy
dCgqZW5jb2Rpbmcuc3NyYyk7Ci0gIH0KLSAgaWYgKGVuY29kaW5nLnJ0eCAmJiBlbmNvZGluZy5y
dHgtPnNzcmMpIHsKLSAgICBuZXdfc3NyY3MuaW5zZXJ0KCplbmNvZGluZy5ydHgtPnNzcmMpOwot
ICB9Ci0gIC8vIE1heSBuZWVkIHRvIGZpbGwgbWlzc2luZyBTU1JDcyB3aXRoIGdlbmVyYXRlZCBv
bmVzLgotICBpZiAoIWVuY29kaW5nLnNzcmMpIHsKLSAgICBpZiAoIWRlc2NyaXB0aW9uLnN0cmVh
bXMoKS5lbXB0eSgpKSB7Ci0gICAgICBlbmNvZGluZy5zc3JjLmVtcGxhY2UoZGVzY3JpcHRpb24u
c3RyZWFtcygpWzBdLmZpcnN0X3NzcmMoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGVuY29kaW5n
LnNzcmMuZW1wbGFjZShHZW5lcmF0ZVVudXNlZFNzcmMoJm5ld19zc3JjcykpOwotICAgIH0KLSAg
fQotICBpZiAoZW5jb2RpbmcucnR4ICYmICFlbmNvZGluZy5ydHgtPnNzcmMpIHsKLSAgICB1aW50
MzJfdCBleGlzdGluZ19ydHhfc3NyYzsKLSAgICBpZiAoIWRlc2NyaXB0aW9uLnN0cmVhbXMoKS5l
bXB0eSgpICYmCi0gICAgICAgIGRlc2NyaXB0aW9uLnN0cmVhbXMoKVswXS5HZXRGaWRTc3JjKAot
ICAgICAgICAgICAgZGVzY3JpcHRpb24uc3RyZWFtcygpWzBdLmZpcnN0X3NzcmMoKSwgJmV4aXN0
aW5nX3J0eF9zc3JjKSkgewotICAgICAgZW5jb2RpbmcucnR4LT5zc3JjLmVtcGxhY2UoZXhpc3Rp
bmdfcnR4X3NzcmMpOwotICAgIH0gZWxzZSB7Ci0gICAgICBlbmNvZGluZy5ydHgtPnNzcmMuZW1w
bGFjZShHZW5lcmF0ZVVudXNlZFNzcmMoJm5ld19zc3JjcykpOwotICAgIH0KLSAgfQotCi0gIGF1
dG8gcmVzdWx0ID0gVG9Dcmlja2V0U3RyZWFtUGFyYW1zVmVjKGVuY29kaW5ncyk7Ci0gIGlmICgh
cmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gcmVzdWx0Lk1vdmVFcnJvcigpOwotICB9Ci0gIC8v
IElmIGNvbnZlcnNpb24gd2FzIHN1Y2Nlc3NmdWwsIHRoZXJlIHNob3VsZCBiZSBvbmUgU3RyZWFt
UGFyYW1zLgotICBSVENfRENIRUNLX0VRKDF1LCByZXN1bHQudmFsdWUoKS5zaXplKCkpOwotICBy
ZXN1bHQudmFsdWUoKVswXS5jbmFtZSA9IGNuYW1lOwotICByZXR1cm4gcmVzdWx0OwotfQotCi19
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5z
cG9ydGNvbnRyb2xsZXJhZGFwdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0
YzU3OGFhNDZmNWNhYWJiNzcwZDIzNDBkZTdkNDRjNTljYWI1YmIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMjIxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYg
T1JUQ19SVFBUUkFOU1BPUlRDT05UUk9MTEVSQURBUFRFUl9IXwotI2RlZmluZSBPUlRDX1JUUFRS
QU5TUE9SVENPTlRST0xMRVJBREFQVEVSX0hfCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVk
ZSA8c2V0PgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRl
ICJhcGkvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvb3J0
Yy9vcnRjcnRwc2VuZGVyaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvcnRwdHJhbnNw
b3J0Y29udHJvbGxlcmludGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9vcnRjL3NydHB0cmFuc3Bv
cnRpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJjYWxsL2NhbGwuaCIKLSNpbmNsdWRlICJjYWxsL3J0
cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kLmgiCi0jaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY2hhbm5l
bC5oIiAgLy8gRm9yIE1lZGlhQ29uZmlnLgotI2luY2x1ZGUgInBjL2NoYW5uZWxtYW5hZ2VyLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
cmVhZC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotY2xhc3MgUnRwVHJhbnNwb3J0QWRhcHRl
cjsKLWNsYXNzIE9ydGNSdHBTZW5kZXJBZGFwdGVyOwotY2xhc3MgT3J0Y1J0cFJlY2VpdmVyQWRh
cHRlcjsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgUnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVy
ZmFjZS4gV3JhcHMgYSBDYWxsLAotLy8gYSBWb2ljZUNoYW5uZWwgYW5kIFZpZGVvQ2hhbm5lbCwg
YW5kIG1haW50YWlucyBhIGxpc3Qgb2YgZGVwZW5kZW50IFJUUAotLy8gdHJhbnNwb3J0cy4KLS8v
Ci0vLyBXaGVuIHVzZWQgYWxvbmcgd2l0aCBhbiBSdHBTZW5kZXJBZGFwdGVyIG9yIFJ0cFJlY2Vp
dmVyQWRhcHRlciwgdGhlCi0vLyBzZW5kZXIvcmVjZWl2ZXIgcGFzc2VzIGl0cyBwYXJhbWV0ZXJz
IGFsb25nIHRvIHRoaXMgY2xhc3MsIHdoaWNoIHR1cm5zIHRoZW0KLS8vIGludG8gY3JpY2tldDo6
IG1lZGlhIGRlc2NyaXB0aW9ucyAodGhlIGludGVyZmFjZSB1c2VkIGJ5IEJhc2VDaGFubmVsKS4K
LS8vCi0vLyBEdWUgdG8gdGhlIGZhY3QgdGhhdCBCYXNlQ2hhbm5lbCBoYXMgZGlmZmVyZW50IHN1
YmNsYXNzZXMgZm9yIGF1ZGlvL3ZpZGVvLAotLy8gdGhlIGFjdHVhbCBCYXNlQ2hhbm5lbCBvYmpl
Y3QgaXMgbm90IGNyZWF0ZWQgdW50aWwgYW4gUnRwU2VuZGVyL1J0cFJlY2VpdmVyCi0vLyBuZWVk
cyB0aGVtLgotLy8KLS8vIEFsbCBtZXRob2RzIHNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHNpZ25h
bGluZyB0aHJlYWQuCi0vLwotLy8gVE9ETyhkZWFkYmVlZik6IFdoZW4gQmFzZUNoYW5uZWwgaXMg
c3BsaXQgYXBhcnQgaW50byBzZXBhcmF0ZQotLy8gIlJ0cFNlbmRlciIvIlJ0cFRyYW5zY2VpdmVy
Ii8iUnRwU2VuZGVyIi8iUnRwUmVjZWl2ZXIiIG9iamVjdHMsIHRoaXMgYWRhcHRlcgotLy8gb2Jq
ZWN0IGNhbiBiZSByZXBsYWNlZCBieSBhICJyZWFsIiBvbmUuCi1jbGFzcyBSdHBUcmFuc3BvcnRD
b250cm9sbGVyQWRhcHRlciA6IHB1YmxpYyBSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgc2lnc2xvdDo6
aGFzX3Nsb3RzPD4gewotIHB1YmxpYzoKLSAgLy8gQ3JlYXRlcyBhIHByb3h5IHRoYXQgd2lsbCBj
YWxsICJwdWJsaWMgaW50ZXJmYWNlIiBtZXRob2RzIG9uIHRoZSBjb3JyZWN0Ci0gIC8vIHRocmVh
ZC4KLSAgLy8KLSAgLy8gRG9lc24ndCB0YWtlIG93bmVyc2hpcCBvZiBhbnkgb2JqZWN0cyBwYXNz
ZWQgaW4uCi0gIC8vCi0gIC8vIHxjaGFubmVsX21hbmFnZXJ8IG11c3Qgbm90IGJlIG51bGwuCi0g
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4g
Q3JlYXRlUHJveGllZCgKLSAgICAgIGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnJiBjb25maWcs
Ci0gICAgICBjcmlja2V0OjpDaGFubmVsTWFuYWdlciogY2hhbm5lbF9tYW5hZ2VyLAotICAgICAg
d2VicnRjOjpSdGNFdmVudExvZyogZXZlbnRfbG9nLAotICAgICAgcnRjOjpUaHJlYWQqIHNpZ25h
bGluZ190aHJlYWQsCi0gICAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKLSAgICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCk7Ci0KLSAgflJ0cFRyYW5zcG9ydENvbnRyb2xsZXJB
ZGFwdGVyKCkgb3ZlcnJpZGU7Ci0KLSAgLy8gUnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFj
ZSBpbXBsZW1lbnRhdGlvbi4KLSAgc3RkOjp2ZWN0b3I8UnRwVHJhbnNwb3J0SW50ZXJmYWNlKj4g
R2V0VHJhbnNwb3J0cygpIGNvbnN0IG92ZXJyaWRlOwotCi0gIC8vIFRoZXNlIG1ldGhvZHMgYXJl
IHVzZWQgYnkgT3J0Y0ZhY3RvcnkgdG8gY3JlYXRlIFJ0cFRyYW5zcG9ydHMsIFJ0cFNlbmRlcnMK
LSAgLy8gYW5kIFJ0cFJlY2VpdmVycyB1c2luZyB0aGlzIGNvbnRyb2xsZXIuIENhbGxlZCAiQ3Jl
YXRlUHJveGllZCIgYmVjYXVzZQotICAvLyB0aGVzZSBtZXRob2RzIHJldHVybiBwcm94aWVzIHRo
YXQgd2lsbCBzYWZlbHkgY2FsbCBtZXRob2RzIG9uIHRoZSBjb3JyZWN0Ci0gIC8vIHRocmVhZC4K
LSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4gQ3Jl
YXRlUHJveGllZFJ0cFRyYW5zcG9ydCgKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRl
cnMmIHJ0Y3BfcGFyYW1ldGVycywKLSAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRw
LAotICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydGNwKTsKLQotICBSVENFcnJvck9y
PHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4KLSAgQ3JlYXRlUHJveGll
ZFNydHBUcmFuc3BvcnQoY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcnRjcF9wYXJhbWV0
ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZh
Y2UqIHJ0cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0VHJhbnNwb3J0SW50
ZXJmYWNlKiBydGNwKTsKLQotICAvLyB8dHJhbnNwb3J0X3Byb3h5fCBuZWVkcyB0byBiZSBhIHBy
b3h5IHRvIGEgdHJhbnNwb3J0IGJlY2F1c2UgdGhlCi0gIC8vIGFwcGxpY2F0aW9uIG1heSBjYWxs
IEdldFRyYW5zcG9ydCgpIG9uIHRoZSByZXR1cm5lZCBzZW5kZXIgb3IgcmVjZWl2ZXIsCi0gIC8v
IGFuZCBleHBlY3RzIGl0IHRvIHJldHVybiBhIHRocmVhZC1zYWZlIHRyYW5zcG9ydCBwcm94eS4K
LSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFNlbmRlckludGVyZmFjZT4+IENy
ZWF0ZVByb3hpZWRSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAg
ICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0X3Byb3h5KTsKLSAgUlRDRXJyb3JP
cjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFJlY2VpdmVySW50ZXJmYWNlPj4KLSAgQ3JlYXRlUHJv
eGllZFJ0cFJlY2VpdmVyKGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnRfcHJveHkpOwotCi0g
IC8vIE1ldGhvZHMgdXNlZCBpbnRlcm5hbGx5IGJ5IG90aGVyICJhZGFwdGVyIiBjbGFzc2VzLgot
ICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHNpZ25hbGlu
Z190aHJlYWRfOyB9Ci0gIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkKCkgY29uc3QgeyByZXR1
cm4gd29ya2VyX3RocmVhZF87IH0KLSAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkKCkgY29u
c3QgeyByZXR1cm4gbmV0d29ya190aHJlYWRfOyB9Ci0KLSAgLy8gfHBhcmFtZXRlcnMua2VlcGFs
aXZlfCB3aWxsIGJlIHNldCBmb3IgQUxMIFJUUCB0cmFuc3BvcnRzIGluIHRoZSBjYWxsLgotICBS
VENFcnJvciBTZXRSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzKGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBpbm5lcl90cmFuc3BvcnQpOwotICB2b2lkIFNldFJ0cFRy
YW5zcG9ydFBhcmFtZXRlcnNfdyhjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKTsKLQotICBjcmlja2V0OjpWb2ljZUNoYW5uZWwqIHZvaWNlX2NoYW5uZWwoKSB7IHJldHVy
biB2b2ljZV9jaGFubmVsXzsgfQotICBjcmlja2V0OjpWaWRlb0NoYW5uZWwqIHZpZGVvX2NoYW5u
ZWwoKSB7IHJldHVybiB2aWRlb19jaGFubmVsXzsgfQotCi0gIC8vIHxwcmltYXJ5X3NzcmN8IG91
dCBwYXJhbWV0ZXIgaXMgZmlsbGVkIHdpdGggZWl0aGVyCi0gIC8vIHxwYXJhbWV0ZXJzLmVuY29k
aW5nc1swXS5zc3JjfCwgb3IgYSBnZW5lcmF0ZWQgU1NSQyBpZiB0aGF0J3MgbGVmdCB1bnNldC4K
LSAgUlRDRXJyb3IgVmFsaWRhdGVBbmRBcHBseUF1ZGlvU2VuZGVyUGFyYW1ldGVycygKLSAgICAg
IGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICB1aW50MzJfdCogcHJpbWFy
eV9zc3JjKTsKLSAgUlRDRXJyb3IgVmFsaWRhdGVBbmRBcHBseVZpZGVvU2VuZGVyUGFyYW1ldGVy
cygKLSAgICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgICB1aW50MzJf
dCogcHJpbWFyeV9zc3JjKTsKLSAgUlRDRXJyb3IgVmFsaWRhdGVBbmRBcHBseUF1ZGlvUmVjZWl2
ZXJQYXJhbWV0ZXJzKAotICAgICAgY29uc3QgUnRwUGFyYW1ldGVycyYgcGFyYW1ldGVycyk7Ci0g
IFJUQ0Vycm9yIFZhbGlkYXRlQW5kQXBwbHlWaWRlb1JlY2VpdmVyUGFyYW1ldGVycygKLSAgICAg
IGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwotCi0gcHJvdGVjdGVkOgotICBSdHBU
cmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogR2V0SW50ZXJuYWwoKSBvdmVycmlkZSB7IHJldHVy
biB0aGlzOyB9Ci0KLSBwcml2YXRlOgotICAvLyBPbmx5IGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBi
eSBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q3JlYXRlUHJveGllZC4KLSAgUnRwVHJh
bnNwb3J0Q29udHJvbGxlckFkYXB0ZXIoY29uc3QgY3JpY2tldDo6TWVkaWFDb25maWcmIGNvbmZp
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6Q2hhbm5lbE1hbmFn
ZXIqIGNoYW5uZWxfbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vi
cnRjOjpSdGNFdmVudExvZyogZXZlbnRfbG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCk7Ci0gIHZvaWQgSW5p
dF93KCk7Ci0gIHZvaWQgQ2xvc2VfdygpOwotCi0gIC8vIFRoZXNlIHJldHVybiBhbiBlcnJvciBp
ZiBhbm90aGVyIG9mIHRoZSBzYW1lIHR5cGUgb2Ygb2JqZWN0IGlzIGFscmVhZHkKLSAgLy8gYXR0
YWNoZWQsIG9yIGlmIHx0cmFuc3BvcnRfcHJveHl8IGNhbid0IGJlIHVzZWQgd2l0aCB0aGUgc2Vu
ZGVyL3JlY2VpdmVyCi0gIC8vIGR1ZSB0byB0aGUgbGltaXRhdGlvbiB0aGF0IHRoZSBzZW5kZXIv
cmVjZWl2ZXIgb2YgdGhlIHNhbWUgbWVkaWEgdHlwZSBtdXN0Ci0gIC8vIHVzZSB0aGUgc2FtZSB0
cmFuc3BvcnQuCi0gIFJUQ0Vycm9yIEF0dGFjaEF1ZGlvU2VuZGVyKE9ydGNSdHBTZW5kZXJBZGFw
dGVyKiBzZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydElu
dGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0KTsKLSAgUlRDRXJyb3IgQXR0YWNoVmlkZW9TZW5kZXIo
T3J0Y1J0cFNlbmRlckFkYXB0ZXIqIHNlbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBpbm5lcl90cmFuc3BvcnQpOwotICBSVENFcnJvciBB
dHRhY2hBdWRpb1JlY2VpdmVyKE9ydGNSdHBSZWNlaXZlckFkYXB0ZXIqIHJlY2VpdmVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJf
dHJhbnNwb3J0KTsKLSAgUlRDRXJyb3IgQXR0YWNoVmlkZW9SZWNlaXZlcihPcnRjUnRwUmVjZWl2
ZXJBZGFwdGVyKiByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBU
cmFuc3BvcnRJbnRlcmZhY2UqIGlubmVyX3RyYW5zcG9ydCk7Ci0KLSAgdm9pZCBPblJ0cFRyYW5z
cG9ydERlc3Ryb3llZChSdHBUcmFuc3BvcnRBZGFwdGVyKiB0cmFuc3BvcnQpOwotCi0gIHZvaWQg
T25BdWRpb1NlbmRlckRlc3Ryb3llZCgpOwotICB2b2lkIE9uVmlkZW9TZW5kZXJEZXN0cm95ZWQo
KTsKLSAgdm9pZCBPbkF1ZGlvUmVjZWl2ZXJEZXN0cm95ZWQoKTsKLSAgdm9pZCBPblZpZGVvUmVj
ZWl2ZXJEZXN0cm95ZWQoKTsKLQotICB2b2lkIENyZWF0ZVZvaWNlQ2hhbm5lbCgpOwotICB2b2lk
IENyZWF0ZVZpZGVvQ2hhbm5lbCgpOwotICB2b2lkIERlc3Ryb3lWb2ljZUNoYW5uZWwoKTsKLSAg
dm9pZCBEZXN0cm95VmlkZW9DaGFubmVsKCk7Ci0KLSAgdm9pZCBDb3B5UnRjcFBhcmFtZXRlcnNU
b0Rlc2NyaXB0aW9ucygKLSAgICAgIGNvbnN0IFJ0Y3BQYXJhbWV0ZXJzJiBwYXJhbXMsCi0gICAg
ICBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogbG9jYWwsCi0gICAgICBjcmlja2V0
OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogcmVtb3RlKTsKLQotICAvLyBIZWxwZXIgZnVuY3Rp
b24gdG8gZ2VuZXJhdGUgYW4gU1NSQyB0aGF0IGRvZXNuJ3QgbWF0Y2ggb25lIGluIGFueSBvZiB0
aGUKLSAgLy8gImNvbnRlbnQgZGVzY3JpcHRpb24iIHN0cnVjdHMsIG9yIGluIHxuZXdfc3NyY3N8
ICh3aGljaCBpcyBuZWVkZWQgc2luY2UKLSAgLy8gbXVsdGlwbGUgU1NSQ3MgbWF5IGJlIGdlbmVy
YXRlZCBpbiBvbmUgZ28pLgotICB1aW50MzJfdCBHZW5lcmF0ZVVudXNlZFNzcmMoc3RkOjpzZXQ8
dWludDMyX3Q+KiBuZXdfc3NyY3MpIGNvbnN0OwotCi0gIC8vIHxkZXNjcmlwdGlvbnwgaXMgdGhl
IG1hdGNoaW5nIGRlc2NyaXB0aW9uIHdoZXJlIGV4aXN0aW5nIFNTUkNzIGNhbiBiZQotICAvLyBm
b3VuZC4KLSAgLy8KLSAgLy8gVGhpcyBpcyBhIG1lbWJlciBmdW5jdGlvbiBiZWNhdXNlIGl0IG1h
eSBuZWVkIHRvIGdlbmVyYXRlIFNTUkNzIHRoYXQgZG9uJ3QKLSAgLy8gbWF0Y2ggZXhpc3Rpbmcg
b25lcywgd2hpY2ggaXMgbW9yZSB0aGFuIFRvU3RyZWFtUGFyYW1zVmVjIGRvZXMuCi0gIFJUQ0Vy
cm9yT3I8Y3JpY2tldDo6U3RyZWFtUGFyYW1zVmVjPiBNYWtlU2VuZFN0cmVhbVBhcmFtc1ZlYygK
LSAgICAgIHN0ZDo6dmVjdG9yPFJ0cEVuY29kaW5nUGFyYW1ldGVycz4gZW5jb2RpbmdzLAotICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNuYW1lLAotICAgICAgY29uc3QgY3JpY2tldDo6TWVkaWFD
b250ZW50RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKSBjb25zdDsKLQotICBydGM6OlRocmVhZCog
c2lnbmFsaW5nX3RocmVhZF87Ci0gIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkXzsKLSAgcnRj
OjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkXzsKLSAgLy8gfHRyYW5zcG9ydF9wcm94aWVzX3wgYW5k
IHxpbm5lcl9hdWRpb190cmFuc3BvcnRffC98aW5uZXJfYXVkaW9fdHJhbnNwb3J0X3wKLSAgLy8g
YXJlIHNvbWV3aGF0IHJlZHVuZGFudCwgYnV0IHRoZSBsYXR0ZXIgYXJlIG9ubHkgc2V0IHdoZW4K
LSAgLy8gUnRwU2VuZGVycy9SdHBSZWNlaXZlcnMgYXJlIGF0dGFjaGVkIHRvIHRoZSB0cmFuc3Bv
cnQuCi0gIHN0ZDo6dmVjdG9yPFJ0cFRyYW5zcG9ydEludGVyZmFjZSo+IHRyYW5zcG9ydF9wcm94
aWVzXzsKLSAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBpbm5lcl9hdWRpb190cmFuc3BvcnRfID0g
bnVsbHB0cjsKLSAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBpbm5lcl92aWRlb190cmFuc3BvcnRf
ID0gbnVsbHB0cjsKLSAgY29uc3QgY3JpY2tldDo6TWVkaWFDb25maWcgbWVkaWFfY29uZmlnXzsK
LSAgUnRwS2VlcEFsaXZlQ29uZmlnIGtlZXBhbGl2ZV87Ci0gIGNyaWNrZXQ6OkNoYW5uZWxNYW5h
Z2VyKiBjaGFubmVsX21hbmFnZXJfOwotICB3ZWJydGM6OlJ0Y0V2ZW50TG9nKiBldmVudF9sb2df
OwotICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbD4gY2FsbF87Ci0gIHdlYnJ0Yzo6UnRwVHJhbnNwb3J0
Q29udHJvbGxlclNlbmQqIGNhbGxfc2VuZF9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfOwotCi0g
IC8vIEJhc2VDaGFubmVsIHRha2VzIGNvbnRlbnQgZGVzY3JpcHRpb25zIGFzIGlucHV0LCBzbyB3
ZSBzdG9yZSB0aGVtIGhlcmUKLSAgLy8gc3VjaCB0aGF0IHRoZXkgY2FuIGJlIHVwZGF0ZWQgd2hl
biBhIG5ldyBSdHBTZW5kZXJBZGFwdGVyLwotICAvLyBSdHBSZWNlaXZlckFkYXB0ZXIgYXR0YWNo
ZXMgaXRzZWxmLgotICBjcmlja2V0OjpBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiBsb2NhbF9hdWRp
b19kZXNjcmlwdGlvbl87Ci0gIGNyaWNrZXQ6OkF1ZGlvQ29udGVudERlc2NyaXB0aW9uIHJlbW90
ZV9hdWRpb19kZXNjcmlwdGlvbl87Ci0gIGNyaWNrZXQ6OlZpZGVvQ29udGVudERlc2NyaXB0aW9u
IGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXzsKLSAgY3JpY2tldDo6VmlkZW9Db250ZW50RGVzY3Jp
cHRpb24gcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXzsKLSAgY3JpY2tldDo6Vm9pY2VDaGFubmVs
KiB2b2ljZV9jaGFubmVsXyA9IG51bGxwdHI7Ci0gIGNyaWNrZXQ6OlZpZGVvQ2hhbm5lbCogdmlk
ZW9fY2hhbm5lbF8gPSBudWxscHRyOwotICBib29sIGhhdmVfYXVkaW9fc2VuZGVyXyA9IGZhbHNl
OwotICBib29sIGhhdmVfdmlkZW9fc2VuZGVyXyA9IGZhbHNlOwotICBib29sIGhhdmVfYXVkaW9f
cmVjZWl2ZXJfID0gZmFsc2U7Ci0gIGJvb2wgaGF2ZV92aWRlb19yZWNlaXZlcl8gPSBmYWxzZTsK
LQotICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKFJ0cFRyYW5zcG9ydENvbnRy
b2xsZXJBZGFwdGVyKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAv
LyBPUlRDX1JUUFRSQU5TUE9SVENPTlRST0xMRVJBREFQVEVSX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3NydHB0cmFuc3BvcnRf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9v
cnRjL3NydHB0cmFuc3BvcnRfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE1MDZhYTcwNDE0ZTI5YWUyN2IwZmI5YWQ4MWQyZDQ5OGZlMjEyYWMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9zcnRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCisrKyAv
ZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRl
IDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlv
X2VuY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5l
LmgiCi0jaW5jbHVkZSAib3J0Yy9vcnRjZmFjdG9yeS5oIgotI2luY2x1ZGUgIm9ydGMvdGVzdHJ0
cHBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJwMnAvYmFzZS9mYWtlcGFja2V0dHJhbnNwb3J0Lmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLXN0
YXRpYyBjb25zdCBjaGFyIGtUZXN0U2hhMUtleVBhcmFtczFbXSA9Ci0gICAgImlubGluZTpXVk5m
WDE5elpXMWpkR3dnS0NrZ2V3a3lNakE3ZlFwOUNuVnViR1Z6IjsKLXN0YXRpYyBjb25zdCBjaGFy
IGtUZXN0U2hhMUtleVBhcmFtczJbXSA9Ci0gICAgImlubGluZTpQUzF1UUNWZWVDRkNhblZtY2pr
cFB5d2pOV2hjWUQwbVhYdHhhVkJSIjsKLXN0YXRpYyBjb25zdCBjaGFyIGtUZXN0R2NtS2V5UGFy
YW1zM1tdID0KLSAgICAiaW5saW5lOmUxNjZLRmxLekpzR1cwZDVhcFgrcnJJMDV2eGJydk1KRXpG
STE0YVREQ2E2M0lSVGxMSzRpSDY2dU9JPSI7Ci0KLXN0YXRpYyBjb25zdCBjcmlja2V0OjpDcnlw
dG9QYXJhbXMga1Rlc3RTaGExQ3J5cHRvUGFyYW1zMSgKLSAgICAxLAotICAgICJBRVNfQ01fMTI4
X0hNQUNfU0hBMV84MCIsCi0gICAga1Rlc3RTaGExS2V5UGFyYW1zMSwKLSAgICAiIik7Ci1zdGF0
aWMgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1zIGtUZXN0U2hhMUNyeXB0b1BhcmFtczIoCi0g
ICAgMSwKLSAgICAiQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAiLAotICAgIGtUZXN0U2hhMUtleVBh
cmFtczIsCi0gICAgIiIpOwotc3RhdGljIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1BhcmFtcyBrVGVz
dEdjbUNyeXB0b1BhcmFtczMoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJBRUFEX0FFU18yNTZfR0NNIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtUZXN0R2NtS2V5UGFy
YW1zMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIiKTsKLQotLy8gVGhpcyB0ZXN0IHVzZXMgZmFrZSBwYWNrZXQgdHJhbnNwb3J0cyBh
bmQgYSBmYWtlIG1lZGlhIGVuZ2luZSwgaW4gb3JkZXIgdG8KLS8vIHRlc3QgdGhlIFNydHBUcmFu
c3BvcnQgYXQgb25seSBhbiBBUEkgbGV2ZWwuIEFueSBlbmQtdG8tZW5kIHRlc3Qgc2hvdWxkIGdv
IGluCi0vLyBvcnRjZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MgaW5zdGVhZC4KLWNsYXNzIFNy
dHBUcmFuc3BvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgU3J0
cFRyYW5zcG9ydFRlc3QoKSB7Ci0gICAgZmFrZV9tZWRpYV9lbmdpbmVfID0gbmV3IGNyaWNrZXQ6
OkZha2VNZWRpYUVuZ2luZSgpOwotICAgIC8vIE5vdGU6IFRoaXMgZG9lc24ndCBuZWVkIHRvIHVz
ZSBmYWtlIG5ldHdvcmsgY2xhc3Nlcywgc2luY2UgaXQgdXNlcwotICAgIC8vIEZha2VQYWNrZXRU
cmFuc3BvcnRzLgotICAgIGF1dG8gcmVzdWx0ID0gT3J0Y0ZhY3Rvcnk6OkNyZWF0ZSgKLSAgICAg
ICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPihmYWtlX21lZGlh
X2VuZ2luZV8pLAotICAgICAgICBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLCBD
cmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpKTsKLSAgICBvcnRjX2ZhY3RvcnlfID0g
cmVzdWx0Lk1vdmVWYWx1ZSgpOwotICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8gPQotICAg
ICAgICBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnRDb250cm9sbGVyKCkuTW92ZVZh
bHVlKCk7Ci0KLSAgICBmYWtlX3BhY2tldF90cmFuc3BvcnRfLnJlc2V0KG5ldyBydGM6OkZha2VQ
YWNrZXRUcmFuc3BvcnQoImZha2UiKSk7Ci0gICAgYXV0byBzcnRwX3RyYW5zcG9ydF9yZXN1bHQg
PSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVTcnRwVHJhbnNwb3J0KAotICAgICAgICBydHBfdHJhbnNw
b3J0X3BhcmFtZXRlcnNfLCBmYWtlX3BhY2tldF90cmFuc3BvcnRfLmdldCgpLCBudWxscHRyLAot
ICAgICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLmdldCgpKTsKLSAgICBzcnRwX3RyYW5z
cG9ydF8gPSBzcnRwX3RyYW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIH0KLQotIHByb3Rl
Y3RlZDoKLSAgLy8gT3duZWQgYnkgfG9ydGNfZmFjdG9yeV98LgotICBjcmlja2V0OjpGYWtlTWVk
aWFFbmdpbmUqIGZha2VfbWVkaWFfZW5naW5lXzsKLSAgc3RkOjp1bmlxdWVfcHRyPE9ydGNGYWN0
b3J5SW50ZXJmYWNlPiBvcnRjX2ZhY3RvcnlfOwotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNw
b3J0Q29udHJvbGxlckludGVyZmFjZT4gcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXzsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+IHNydHBfdHJhbnNwb3J0XzsKLSAg
UnRwVHJhbnNwb3J0UGFyYW1ldGVycyBydHBfdHJhbnNwb3J0X3BhcmFtZXRlcnNfOwotICBzdGQ6
OnVuaXF1ZV9wdHI8cnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0PiBmYWtlX3BhY2tldF90cmFuc3Bv
cnRfOwotfTsKLQotLy8gVGVzdHMgdGhhdCBzZXR0aW5nIHRoZSBTUlRQIHNlbmQvcmVjZWl2ZSBr
ZXkgc3VjY2VlZHMuCi1URVNUX0YoU3J0cFRyYW5zcG9ydFRlc3QsIFNldFNydHBTZW5kQW5kUmVj
ZWl2ZUtleSkgewotICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydF8tPlNldFNydHBTZW5kS2V5
KGtUZXN0U2hhMUNyeXB0b1BhcmFtczEpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5z
cG9ydF8tPlNldFNydHBSZWNlaXZlS2V5KGtUZXN0U2hhMUNyeXB0b1BhcmFtczIpLm9rKCkpOwot
ICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoY3Jp
Y2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIEVYUEVDVF9U
UlVFKHNlbmRlcl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19m
YWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FV
RElPLCBzcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShyZWNlaXZlcl9yZXN1
bHQub2soKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgc2V0dGluZyB0aGUgU1JUUCBzZW5kL3JlY2Vp
dmUga2V5IHR3aWNlIGlzIG5vdCBzdXBwb3J0ZWQuCi1URVNUX0YoU3J0cFRyYW5zcG9ydFRlc3Qs
IFNldFNydHBTZW5kQW5kUmVjZWl2ZUtleVR3aWNlKSB7Ci0gIEVYUEVDVF9UUlVFKHNydHBfdHJh
bnNwb3J0Xy0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RTaGExQ3J5cHRvUGFyYW1zMSkub2soKSk7Ci0g
IEVYUEVDVF9UUlVFKHNydHBfdHJhbnNwb3J0Xy0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RTaGEx
Q3J5cHRvUGFyYW1zMikub2soKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQUE9S
VEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgIHNydHBfdHJhbnNwb3J0Xy0+U2V0U3J0cFNlbmRL
ZXkoa1Rlc3RTaGExQ3J5cHRvUGFyYW1zMikudHlwZSgpKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9y
VHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgc3J0cF90cmFuc3BvcnRf
LT5TZXRTcnRwUmVjZWl2ZUtleShrVGVzdFNoYTFDcnlwdG9QYXJhbXMxKS50eXBlKCkpOwotICAv
LyBFbnN1cmUgdGhhdCB0aGUgc2VuZGVycyBhbmQgcmVjZWl2ZXJzIGNhbiBiZSBjcmVhdGVkIGRl
c3BpdGUgdGhlIHByZXZpb3VzCi0gIC8vIGVycm9ycy4KLSAgYXV0byBzZW5kZXJfcmVzdWx0ID0g
b3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
cnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShzZW5kZXJfcmVzdWx0Lm9rKCkp
OwotICBhdXRvIHJlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2Vp
dmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgc3J0cF90cmFuc3BvcnRfLmdl
dCgpKTsKLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXJfcmVzdWx0Lm9rKCkpOwotfQotCi0vLyBUZXN0
IHRoYXQgdGhlIFNSVFAgc2VuZCBrZXkgYW5kIHJlY2VpdmUga2V5IG11c3QgaGF2ZSB0aGUgc2Ft
ZSBjaXBoZXIgc3VpdGUuCi1URVNUX0YoU3J0cFRyYW5zcG9ydFRlc3QsIFNldFNydHBTZW5kQW5k
UmVjZWl2ZUtleURpZmZlcmVudENpcGhlclN1aXRlKSB7Ci0gIEVYUEVDVF9UUlVFKHNydHBfdHJh
bnNwb3J0Xy0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RTaGExQ3J5cHRvUGFyYW1zMSkub2soKSk7Ci0g
IEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAg
ICAgIHNydHBfdHJhbnNwb3J0Xy0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RHY21DcnlwdG9QYXJh
bXMzKS50eXBlKCkpOwotICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydF8tPlNldFNydHBSZWNl
aXZlS2V5KGtUZXN0U2hhMUNyeXB0b1BhcmFtczIpLm9rKCkpOwotICAvLyBFbnN1cmUgdGhhdCB0
aGUgc2VuZGVycyBhbmQgcmVjZWl2ZXJzIGNhbiBiZSBjcmVhdGVkIGRlc3BpdGUgdGhlIHByZXZp
b3VzCi0gIC8vIGVycm9yLgotICBhdXRvIHNlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5D
cmVhdGVSdHBTZW5kZXIoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNydHBfdHJhbnNwb3J0Xy5n
ZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKHNlbmRlcl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gcmVjZWl2
ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlj
a2V0OjpNRURJQV9UWVBFX0FVRElPLCBzcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1Rf
VFJVRShyZWNlaXZlcl9yZXN1bHQub2soKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29y
dGMvdGVzdHJ0cHBhcmFtZXRlcnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9vcnRjL3Rlc3RydHBwYXJhbWV0ZXJzLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4MmQ5NjU5MGZiOTY1NWVhNzg4NTMwNTcyNDg5MzExNmY2N2FmMjlmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuY2MKKysr
IC9kZXYvbnVsbApAQCAtMSwzMTUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQot
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1
ZGUgIm9ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuaCIKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNp
bmNsdWRlIDx1dGlsaXR5PgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotUnRwUGFyYW1ldGVycyBN
YWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkgewotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7
Ci0gIFJ0cENvZGVjUGFyYW1ldGVycyBvcHVzX2NvZGVjOwotICBvcHVzX2NvZGVjLm5hbWUgPSAi
b3B1cyI7Ci0gIG9wdXNfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87Ci0g
IG9wdXNfY29kZWMucGF5bG9hZF90eXBlID0gMTExOwotICBvcHVzX2NvZGVjLmNsb2NrX3JhdGUu
ZW1wbGFjZSg0ODAwMCk7Ci0gIG9wdXNfY29kZWMubnVtX2NoYW5uZWxzLmVtcGxhY2UoMik7Ci0g
IHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUob3B1c19jb2RlYykpOwotICBS
dHBFbmNvZGluZ1BhcmFtZXRlcnMgZW5jb2Rpbmc7Ci0gIGVuY29kaW5nLmNvZGVjX3BheWxvYWRf
dHlwZS5lbXBsYWNlKDExMSk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1c2hfYmFjayhzdGQ6
Om1vdmUoZW5jb2RpbmcpKTsKLSAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLVJ0cFBhcmFtZXRl
cnMgTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVycygpIHsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwotICBSdHBDb2RlY1BhcmFtZXRlcnMgaXNhY19jb2RlYzsKLSAgaXNhY19jb2RlYy5uYW1l
ID0gIklTQUMiOwotICBpc2FjX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElP
OwotICBpc2FjX2NvZGVjLnBheWxvYWRfdHlwZSA9IDEwMzsKLSAgaXNhY19jb2RlYy5jbG9ja19y
YXRlLmVtcGxhY2UoMTYwMDApOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjpt
b3ZlKGlzYWNfY29kZWMpKTsKLSAgUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIGVuY29kaW5nOwotICBl
bmNvZGluZy5jb2RlY19wYXlsb2FkX3R5cGUuZW1wbGFjZSgxMTEpOwotICBwYXJhbWV0ZXJzLmVu
Y29kaW5ncy5wdXNoX2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0gIHJldHVybiBwYXJhbWV0
ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnNXaXRoU3Ny
Yyh1aW50MzJfdCBzc3JjKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VNaW5p
bWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYy5lbXBs
YWNlKHNzcmMpOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotUnRwUGFyYW1ldGVycyBNYWtl
TWluaW1hbElzYWNQYXJhbWV0ZXJzV2l0aFNzcmModWludDMyX3Qgc3NyYykgewotICBSdHBQYXJh
bWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbElzYWNQYXJhbWV0ZXJzKCk7Ci0gIHBhcmFt
ZXRlcnMuZW5jb2RpbmdzWzBdLnNzcmMuZW1wbGFjZShzc3JjKTsKLSAgcmV0dXJuIHBhcmFtZXRl
cnM7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxWaWRlb1BhcmFtZXRlcnMoY29uc3Qg
Y2hhciogY29kZWNfbmFtZSkgewotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIFJ0cENv
ZGVjUGFyYW1ldGVycyB2cDhfY29kZWM7Ci0gIHZwOF9jb2RlYy5uYW1lID0gY29kZWNfbmFtZTsK
LSAgdnA4X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB2cDhfY29k
ZWMucGF5bG9hZF90eXBlID0gOTY7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6
Om1vdmUodnA4X2NvZGVjKSk7Ci0gIFJ0cEVuY29kaW5nUGFyYW1ldGVycyBlbmNvZGluZzsKLSAg
ZW5jb2RpbmcuY29kZWNfcGF5bG9hZF90eXBlLmVtcGxhY2UoOTYpOwotICBwYXJhbWV0ZXJzLmVu
Y29kaW5ncy5wdXNoX2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0gIHJldHVybiBwYXJhbWV0
ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpIHsKLSAg
cmV0dXJuIE1ha2VNaW5pbWFsVmlkZW9QYXJhbWV0ZXJzKCJWUDgiKTsKLX0KLQotUnRwUGFyYW1l
dGVycyBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnMoKSB7Ci0gIHJldHVybiBNYWtlTWluaW1hbFZp
ZGVvUGFyYW1ldGVycygiVlA5Iik7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxWcDhQ
YXJhbWV0ZXJzV2l0aFNzcmModWludDMyX3Qgc3NyYykgewotICBSdHBQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnMgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgcGFyYW1ldGVycy5lbmNvZGlu
Z3NbMF0uc3NyYy5lbXBsYWNlKHNzcmMpOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotUnRw
UGFyYW1ldGVycyBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnNXaXRoU3NyYyh1aW50MzJfdCBzc3Jj
KSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA5UGFyYW1ldGVy
cygpOwotICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjLmVtcGxhY2Uoc3NyYyk7Ci0gIHJl
dHVybiBwYXJhbWV0ZXJzOwotfQotCi0vLyBOb3RlOiBDdXJyZW50bHksIHRoZXNlICJXaXRoTm9T
c3JjIiBtZXRob2RzIGFyZSBpZGVudGljYWwgdG8gdGhlIG5vcm1hbAotLy8gIk1ha2VNaW5pbWFs
IiBtZXRob2RzLCBidXQgd2l0aCB0aGUgYWRkZWQgZ3VhcmFudGVlIHRoYXQgdGhleSB3aWxsIG5l
dmVyIGJlCi0vLyBjaGFuZ2VkIHRvIGluY2x1ZGUgYW4gU1NSQy4KLQotUnRwUGFyYW1ldGVycyBN
YWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aE5vU3NyYygpIHsKLSAgUnRwUGFyYW1ldGVycyBw
YXJhbWV0ZXJzID0gTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpOwotICBSVENfRENIRUNLKCFw
YXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjKTsKLSAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0K
LVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVyc1dpdGhOb1NzcmMoKSB7Ci0g
IFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsSXNhY1BhcmFtZXRlcnMoKTsK
LSAgUlRDX0RDSEVDSyghcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYyk7Ci0gIHJldHVybiBw
YXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVyc1dp
dGhOb1NzcmMoKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA4
UGFyYW1ldGVycygpOwotICBSVENfRENIRUNLKCFwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3Jj
KTsKLSAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxW
cDlQYXJhbWV0ZXJzV2l0aE5vU3NyYygpIHsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0g
TWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzKCk7Ci0gIFJUQ19EQ0hFQ0soIXBhcmFtZXRlcnMuZW5j
b2RpbmdzWzBdLnNzcmMpOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotLy8gTWFrZSBhdWRp
byBwYXJhbWV0ZXJzIHdpdGggYWxsIHRoZSBhdmFpbGFibGUgcHJvcGVydGllcyBjb25maWd1cmVk
IGFuZAotLy8gZmVhdHVyZXMgdXNlZCwgYW5kIHdpdGggbXVsdGlwbGUgY29kZWNzIG9mZmVyZWQu
IE9idGFpbmVkIGJ5IHRha2luZyBhCi0vLyBzbmFwc2hvdCBvZiBhIGRlZmF1bHQgUGVlckNvbm5l
Y3Rpb24gb2ZmZXIgKGFuZCBhZGRpbmcgb3RoZXIgdGhpbmdzLCBsaWtlCi0vLyBiaXRyYXRlIGxp
bWl0KS4KLS8vCi0vLyBTZWUgIk1ha2VGdWxsT3B1c1BhcmFtZXRlcnMiLyJNYWtlRnVsbElzYWNQ
YXJhbWV0ZXJzIiBiZWxvdy4KLVJ0cFBhcmFtZXRlcnMgTWFrZUZ1bGxBdWRpb1BhcmFtZXRlcnMo
aW50IHByZWZlcnJlZF9wYXlsb2FkX3R5cGUpIHsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyBvcHVzX2NvZGVjOwotICBvcHVzX2NvZGVjLm5hbWUg
PSAib3B1cyI7Ci0gIG9wdXNfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87
Ci0gIG9wdXNfY29kZWMucGF5bG9hZF90eXBlID0gMTExOwotICBvcHVzX2NvZGVjLmNsb2NrX3Jh
dGUuZW1wbGFjZSg0ODAwMCk7Ci0gIG9wdXNfY29kZWMubnVtX2NoYW5uZWxzLmVtcGxhY2UoMik7
Ci0gIG9wdXNfY29kZWMucGFyYW1ldGVyc1sibWlucHRpbWUiXSA9ICIxMCI7Ci0gIG9wdXNfY29k
ZWMucGFyYW1ldGVyc1sidXNlaW5iYW5kZmVjIl0gPSAiMSI7Ci0gIG9wdXNfY29kZWMucGFyYW1l
dGVyc1sidXNlZHR4Il0gPSAiMSI7Ci0gIG9wdXNfY29kZWMucGFyYW1ldGVyc1sic3RlcmVvIl0g
PSAiMSI7Ci0gIG9wdXNfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRi
YWNrVHlwZTo6VFJBTlNQT1JUX0NDKTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0
ZDo6bW92ZShvcHVzX2NvZGVjKSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIGlzYWNfY29kZWM7
Ci0gIGlzYWNfY29kZWMubmFtZSA9ICJJU0FDIjsKLSAgaXNhY19jb2RlYy5raW5kID0gY3JpY2tl
dDo6TUVESUFfVFlQRV9BVURJTzsKLSAgaXNhY19jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMDM7Ci0g
IGlzYWNfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDE2MDAwKTsKLSAgcGFyYW1ldGVycy5jb2Rl
Y3MucHVzaF9iYWNrKHN0ZDo6bW92ZShpc2FjX2NvZGVjKSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0
ZXJzIGNuX2NvZGVjOwotICBjbl9jb2RlYy5uYW1lID0gIkNOIjsKLSAgY25fY29kZWMua2luZCA9
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87Ci0gIGNuX2NvZGVjLnBheWxvYWRfdHlwZSA9IDEw
NjsKLSAgY25fY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDMyMDAwKTsKLSAgcGFyYW1ldGVycy5j
b2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShjbl9jb2RlYykpOwotCi0gIFJ0cENvZGVjUGFyYW1l
dGVycyBkdG1mX2NvZGVjOwotICBkdG1mX2NvZGVjLm5hbWUgPSAidGVsZXBob25lLWV2ZW50IjsK
LSAgZHRtZl9jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzsKLSAgZHRtZl9j
b2RlYy5wYXlsb2FkX3R5cGUgPSAxMjY7Ci0gIGR0bWZfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNl
KDgwMDApOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKGR0bWZfY29k
ZWMpKTsKLQotICAvLyAiY29kZWNfcGF5bG9hZF90eXBlIiBpc24ndCBpbXBsZW1lbnRlZCwgc28g
d2UgbmVlZCB0byByZW9yZGVyIGNvZGVjcyB0bwotICAvLyBjYXVzZSBvbmUgdG8gYmUgdXNlZC4K
LSAgLy8gVE9ETyhkZWFkYmVlZik6IFJlbW92ZSB0aGlzIHdoZW4gaXQgYmVjb21lcyB1bm5lY2Vz
c2FyeS4KLSAgYXV0byBpdCA9IHN0ZDo6ZmluZF9pZihwYXJhbWV0ZXJzLmNvZGVjcy5iZWdpbigp
LCBwYXJhbWV0ZXJzLmNvZGVjcy5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbcHJl
ZmVycmVkX3BheWxvYWRfdHlwZV0oY29uc3QgUnRwQ29kZWNQYXJhbWV0ZXJzJiBwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcC5wYXlsb2FkX3R5cGUgPT0gcHJlZmVycmVk
X3BheWxvYWRfdHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgUnRwQ29kZWNQ
YXJhbWV0ZXJzIHByZWZlcnJlZCA9ICppdDsKLSAgcGFyYW1ldGVycy5jb2RlY3MuZXJhc2UoaXQp
OwotICBwYXJhbWV0ZXJzLmNvZGVjcy5pbnNlcnQocGFyYW1ldGVycy5jb2RlY3MuYmVnaW4oKSwg
cHJlZmVycmVkKTsKLQotICAvLyBJbnRlbnRpb25hbGx5IGxlYXZlIG91dCBTU1JDIHNvIG9uZSdz
IGNob3NlbiBhdXRvbWF0aWNhbGx5LgotICBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgZW5jb2Rpbmc7
Ci0gIGVuY29kaW5nLmNvZGVjX3BheWxvYWRfdHlwZS5lbXBsYWNlKHByZWZlcnJlZF9wYXlsb2Fk
X3R5cGUpOwotICBlbmNvZGluZy5kdHguZW1wbGFjZShEdHhTdGF0dXM6OkVOQUJMRUQpOwotICAv
LyAyMCBrYnBzLgotICBlbmNvZGluZy5tYXhfYml0cmF0ZV9icHMuZW1wbGFjZSgyMDAwMCk7Ci0g
IHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1c2hfYmFjayhzdGQ6Om1vdmUoZW5jb2RpbmcpKTsKLQot
ICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygKLSAgICAgICJ1cm46
aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDpzc3JjLWF1ZGlvLWxldmVsIiwgMSk7Ci0gIHJldHVybiBw
YXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VGdWxsT3B1c1BhcmFtZXRlcnMoKSB7
Ci0gIHJldHVybiBNYWtlRnVsbEF1ZGlvUGFyYW1ldGVycygxMTEpOwotfQotCi1SdHBQYXJhbWV0
ZXJzIE1ha2VGdWxsSXNhY1BhcmFtZXRlcnMoKSB7Ci0gIHJldHVybiBNYWtlRnVsbEF1ZGlvUGFy
YW1ldGVycygxMDMpOwotfQotCi0vLyBNYWtlIHZpZGVvIHBhcmFtZXRlcnMgd2l0aCBhbGwgdGhl
IGF2YWlsYWJsZSBwcm9wZXJ0aWVzIGNvbmZpZ3VyZWQgYW5kCi0vLyBmZWF0dXJlcyB1c2VkLCBh
bmQgd2l0aCBtdWx0aXBsZSBjb2RlY3Mgb2ZmZXJlZC4gT2J0YWluZWQgYnkgdGFraW5nIGEKLS8v
IHNuYXBzaG90IG9mIGEgZGVmYXVsdCBQZWVyQ29ubmVjdGlvbiBvZmZlciAoYW5kIGFkZGluZyBv
dGhlciB0aGluZ3MsIGxpa2UKLS8vIGJpdHJhdGUgbGltaXQpLgotLy8KLS8vIFNlZSAiTWFrZUZ1
bGxWcDhQYXJhbWV0ZXJzIi8iTWFrZUZ1bGxWcDlQYXJhbWV0ZXJzIiBiZWxvdy4KLVJ0cFBhcmFt
ZXRlcnMgTWFrZUZ1bGxWaWRlb1BhcmFtZXRlcnMoaW50IHByZWZlcnJlZF9wYXlsb2FkX3R5cGUp
IHsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyB2
cDhfY29kZWM7Ci0gIHZwOF9jb2RlYy5uYW1lID0gIlZQOCI7Ci0gIHZwOF9jb2RlYy5raW5kID0g
Y3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgdnA4X2NvZGVjLnBheWxvYWRfdHlwZSA9IDEw
MDsKLSAgdnA4X2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFjZSg5MDAwMCk7Ci0gIHZwOF9jb2RlYy5y
dGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpDQ00sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNwRmVlZGJhY2tNZXNzYWdlVHlwZTo6
RklSKTsKLSAgdnA4X2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFj
a1R5cGU6Ok5BQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNw
RmVlZGJhY2tNZXNzYWdlVHlwZTo6R0VORVJJQ19OQUNLKTsKLSAgdnA4X2NvZGVjLnJ0Y3BfZmVl
ZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6Ok5BQ0ssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNwRmVlZGJhY2tNZXNzYWdlVHlwZTo6UExJKTsK
LSAgdnA4X2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6
OlJFTUIpOwotICB2cDhfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRi
YWNrVHlwZTo6VFJBTlNQT1JUX0NDKTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0
ZDo6bW92ZSh2cDhfY29kZWMpKTsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgdnA4X3J0eF9jb2Rl
YzsKLSAgdnA4X3J0eF9jb2RlYy5uYW1lID0gInJ0eCI7Ci0gIHZwOF9ydHhfY29kZWMua2luZCA9
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0gIHZwOF9ydHhfY29kZWMucGF5bG9hZF90eXBl
ID0gOTY7Ci0gIHZwOF9ydHhfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDkwMDAwKTsKLSAgdnA4
X3J0eF9jb2RlYy5wYXJhbWV0ZXJzWyJhcHQiXSA9ICIxMDAiOwotICBwYXJhbWV0ZXJzLmNvZGVj
cy5wdXNoX2JhY2soc3RkOjptb3ZlKHZwOF9ydHhfY29kZWMpKTsKLQotICBSdHBDb2RlY1BhcmFt
ZXRlcnMgdnA5X2NvZGVjOwotICB2cDlfY29kZWMubmFtZSA9ICJWUDkiOwotICB2cDlfY29kZWMu
a2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0gIHZwOV9jb2RlYy5wYXlsb2FkX3R5
cGUgPSAxMDE7Ci0gIHZwOV9jb2RlYy5jbG9ja19yYXRlLmVtcGxhY2UoOTAwMDApOwotICB2cDlf
Y29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6Q0NNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVzc2Fn
ZVR5cGU6OkZJUik7Ci0gIHZwOV9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNw
RmVlZGJhY2tUeXBlOjpOQUNLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5cGU6OkdFTkVSSUNfTkFDSyk7Ci0gIHZwOV9jb2RlYy5y
dGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpOQUNLLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5cGU6
OlBMSSk7Ci0gIHZwOV9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJh
Y2tUeXBlOjpSRU1CKTsKLSAgdnA5X2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0
Y3BGZWVkYmFja1R5cGU6OlRSQU5TUE9SVF9DQyk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hf
YmFjayhzdGQ6Om1vdmUodnA5X2NvZGVjKSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHZwOV9y
dHhfY29kZWM7Ci0gIHZwOV9ydHhfY29kZWMubmFtZSA9ICJydHgiOwotICB2cDlfcnR4X2NvZGVj
LmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB2cDlfcnR4X2NvZGVjLnBheWxv
YWRfdHlwZSA9IDk3OwotICB2cDlfcnR4X2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFjZSg5MDAwMCk7
Ci0gIHZwOV9ydHhfY29kZWMucGFyYW1ldGVyc1siYXB0Il0gPSAiMTAxIjsKLSAgcGFyYW1ldGVy
cy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZSh2cDlfcnR4X2NvZGVjKSk7Ci0KLSAgUnRwQ29k
ZWNQYXJhbWV0ZXJzIHJlZF9jb2RlYzsKLSAgcmVkX2NvZGVjLm5hbWUgPSAicmVkIjsKLSAgcmVk
X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICByZWRfY29kZWMucGF5
bG9hZF90eXBlID0gMTE2OwotICByZWRfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDkwMDAwKTsK
LSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShyZWRfY29kZWMpKTsKLQot
ICBSdHBDb2RlY1BhcmFtZXRlcnMgcmVkX3J0eF9jb2RlYzsKLSAgcmVkX3J0eF9jb2RlYy5uYW1l
ID0gInJ0eCI7Ci0gIHJlZF9ydHhfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklE
RU87Ci0gIHJlZF9ydHhfY29kZWMucGF5bG9hZF90eXBlID0gOTg7Ci0gIHJlZF9ydHhfY29kZWMu
Y2xvY2tfcmF0ZS5lbXBsYWNlKDkwMDAwKTsKLSAgcmVkX3J0eF9jb2RlYy5wYXJhbWV0ZXJzWyJh
cHQiXSA9ICIxMTYiOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHJl
ZF9ydHhfY29kZWMpKTsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgdWxwZmVjX2NvZGVjOwotICB1
bHBmZWNfY29kZWMubmFtZSA9ICJ1bHBmZWMiOwotICB1bHBmZWNfY29kZWMua2luZCA9IGNyaWNr
ZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0gIHVscGZlY19jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMTc7
Ci0gIHVscGZlY19jb2RlYy5jbG9ja19yYXRlLmVtcGxhY2UoOTAwMDApOwotICBwYXJhbWV0ZXJz
LmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHVscGZlY19jb2RlYykpOwotCi0gIC8vICJjb2Rl
Y19wYXlsb2FkX3R5cGUiIGlzbid0IGltcGxlbWVudGVkLCBzbyB3ZSBuZWVkIHRvIHJlb3JkZXIg
Y29kZWNzIHRvCi0gIC8vIGNhdXNlIG9uZSB0byBiZSB1c2VkLgotICAvLyBUT0RPKGRlYWRiZWVm
KTogUmVtb3ZlIHRoaXMgd2hlbiBpdCBiZWNvbWVzIHVubmVjZXNzYXJ5LgotICBhdXRvIGl0ID0g
c3RkOjpmaW5kX2lmKHBhcmFtZXRlcnMuY29kZWNzLmJlZ2luKCksIHBhcmFtZXRlcnMuY29kZWNz
LmVuZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVmZXJyZWRfcGF5bG9hZF90eXBl
XShjb25zdCBSdHBDb2RlY1BhcmFtZXRlcnMmIHApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBwLnBheWxvYWRfdHlwZSA9PSBwcmVmZXJyZWRfcGF5bG9hZF90eXBlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOwotICBSdHBDb2RlY1BhcmFtZXRlcnMgcHJlZmVycmVk
ID0gKml0OwotICBwYXJhbWV0ZXJzLmNvZGVjcy5lcmFzZShpdCk7Ci0gIHBhcmFtZXRlcnMuY29k
ZWNzLmluc2VydChwYXJhbWV0ZXJzLmNvZGVjcy5iZWdpbigpLCBwcmVmZXJyZWQpOwotCi0gIC8v
IEludGVudGlvbmFsbHkgbGVhdmUgb3V0IFNTUkMgc28gb25lJ3MgY2hvc2VuIGF1dG9tYXRpY2Fs
bHkuCi0gIFJ0cEVuY29kaW5nUGFyYW1ldGVycyBlbmNvZGluZzsKLSAgZW5jb2RpbmcuY29kZWNf
cGF5bG9hZF90eXBlLmVtcGxhY2UocHJlZmVycmVkX3BheWxvYWRfdHlwZSk7Ci0gIGVuY29kaW5n
LmZlYy5lbXBsYWNlKEZlY01lY2hhbmlzbTo6UkVEX0FORF9VTFBGRUMpOwotICAvLyBXaWxsIGNy
ZWF0ZSBkZWZhdWx0IFJ0eFBhcmFtZXRlcnMsIHdpdGggdW5zZXQgU1NSQy4KLSAgZW5jb2Rpbmcu
cnR4LmVtcGxhY2UoKTsKLSAgLy8gMTAwIGticHMuCi0gIGVuY29kaW5nLm1heF9iaXRyYXRlX2Jw
cy5lbXBsYWNlKDEwMDAwMCk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1c2hfYmFjayhzdGQ6
Om1vdmUoZW5jb2RpbmcpKTsKLQotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxh
Y2VfYmFjaygKLSAgICAgICJ1cm46aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDp0b2Zmc2V0IiwgMik7
Ci0gIHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAotICAgICAgImh0
dHA6Ly93d3cud2VicnRjLm9yZy9leHBlcmltZW50cy9ydHAtaGRyZXh0L2Ficy1zZW5kLXRpbWUi
LCAzKTsKLSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soInVybjoz
Z3BwOnZpZGVvLW9yaWVudGF0aW9uIiwgNCk7Ci0gIHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lv
bnMuZW1wbGFjZV9iYWNrKAotICAgICAgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvIgotICAgICAg
ImRyYWZ0LWhvbG1lci1ybWNhdC10cmFuc3BvcnQtd2lkZS1jYy1leHRlbnNpb25zLTAxIiwKLSAg
ICAgIDUpOwotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygKLSAg
ICAgICJodHRwOi8vd3d3LndlYnJ0Yy5vcmcvZXhwZXJpbWVudHMvcnRwLWhkcmV4dC9wbGF5b3V0
LWRlbGF5IiwgNik7Ci0gIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1h
a2VGdWxsVnA4UGFyYW1ldGVycygpIHsKLSAgcmV0dXJuIE1ha2VGdWxsVmlkZW9QYXJhbWV0ZXJz
KDEwMCk7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZUZ1bGxWcDlQYXJhbWV0ZXJzKCkgewotICBy
ZXR1cm4gTWFrZUZ1bGxWaWRlb1BhcmFtZXRlcnMoMTAxKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvb3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvb3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0N2U1MWUxNDA4MzdkNGI5YzQ5NmM1NmUzYzQ5ODk1MTk3OTcwNTg2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvdGVzdHJ0cHBhcmFtZXRlcnMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNp
Zm5kZWYgT1JUQ19URVNUUlRQUEFSQU1FVEVSU19IXwotI2RlZmluZSBPUlRDX1RFU1RSVFBQQVJB
TUVURVJTX0hfCi0KLSNpbmNsdWRlICJhcGkvb3J0Yy9ydHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIK
LSNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQot
Ly8gSGVscGVyIG1ldGhvZHMgdG8gY3JlYXRlIFJ0cFBhcmFtZXRlcnMgdG8gdXNlIGZvciBzZW5k
aW5nL3JlY2VpdmluZy4KLS8vCi0vLyAiTWFrZU1pbmltYWwiIG1ldGhvZHMgY29udGFpbiB0aGUg
bWluaW1hbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZm9yIGFuCi0vLyBSdHBTZW5kZXIgb3IgUnRw
UmVjZWl2ZXIgdG8gZnVuY3Rpb24uIFRoZSAiTWFrZUZ1bGwiIG1ldGhvZHMgYXJlIHRoZQotLy8g
b3Bwb3NpdGUsIGFuZCBpbmNsdWRlIGFsbCBmZWF0dXJlcyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJl
IG9mZmVyZWQgYnkgYQotLy8gUGVlckNvbm5lY3Rpb24sIGFuZCBpbiBzb21lIGNhc2VzIGFkZGl0
aW9uYWwgb25lcy4KLS8vCi0vLyBUaGVzZSBtZXRob2RzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2Vk
IGZvciBlbmQtdG8tZW5kIHRlc3RpbmcgKHN1Y2ggYXMgaW4KLS8vIG9ydGNmYWN0b3J5X2ludGVn
cmF0aW9udGVzdC5jYyksIG9yIHVuaXQgdGVzdGluZyB0aGF0IGRvZXNuJ3QgY2FyZSBhYm91dCB0
aGUKLS8vIHNwZWNpZmljIGNvbnRlbnRzIG9mIHRoZSBwYXJhbWV0ZXJzLiBUZXN0cyBzaG91bGQg
Tk9UIGFzc3VtZSB0aGF0IHRoZXNlCi0vLyBtZXRob2RzIHdpbGwgbm90IGNoYW5nZTsgdGVzdHMg
dGhhdCBhcmUgdGVzdGluZyB0aGF0IGEgc3BlY2lmaWMgdmFsdWUgaW4gdGhlCi0vLyBwYXJhbWV0
ZXJzIGlzIGFwcGxpZWQgcHJvcGVybHkgc2hvdWxkIGNvbnN0cnVjdCB0aGUgcGFyYW1ldGVycyBp
biB0aGUgdGVzdAotLy8gaXRzZWxmLgotCi1pbmxpbmUgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBN
YWtlUnRjcE11eFBhcmFtZXRlcnMoKSB7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IHRydWU7Ci0gIHJldHVybiBwYXJhbWV0ZXJz
OwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLVJ0cFBh
cmFtZXRlcnMgTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVycygpOwotUnRwUGFyYW1ldGVycyBNYWtl
TWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aFNzcmModWludDMyX3Qgc3NyYyk7Ci1SdHBQYXJhbWV0
ZXJzIE1ha2VNaW5pbWFsSXNhY1BhcmFtZXRlcnNXaXRoU3NyYyh1aW50MzJfdCBzc3JjKTsKLQot
UnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLVJ0cFBhcmFtZXRlcnMg
TWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzKCk7Ci1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA4
UGFyYW1ldGVyc1dpdGhTc3JjKHVpbnQzMl90IHNzcmMpOwotUnRwUGFyYW1ldGVycyBNYWtlTWlu
aW1hbFZwOVBhcmFtZXRlcnNXaXRoU3NyYyh1aW50MzJfdCBzc3JjKTsKLQotLy8gV2lsbCBjcmVh
dGUgYW4gZW5jb2Rpbmcgd2l0aCBubyBTU1JDIChtZWFuaW5nICJtYXRjaCBmaXJzdCBTU1JDIHNl
ZW4iIGZvciBhCi0vLyByZWNlaXZlciwgb3IgInBpY2sgb25lIGF1dG9tYXRpY2FsbHkiIGZvciBh
IHNlbmRlcikuCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnNXaXRoTm9T
c3JjKCk7Ci1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsSXNhY1BhcmFtZXRlcnNXaXRoTm9Tc3Jj
KCk7Ci1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVyc1dpdGhOb1NzcmMoKTsK
LVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0aE5vU3NyYygpOwotCi0v
LyBNYWtlIGF1ZGlvIHBhcmFtZXRlcnMgd2l0aCBhbGwgdGhlIGF2YWlsYWJsZSBwcm9wZXJ0aWVz
IGNvbmZpZ3VyZWQgYW5kCi0vLyBmZWF0dXJlcyB1c2VkLCBhbmQgd2l0aCBtdWx0aXBsZSBjb2Rl
Y3Mgb2ZmZXJlZC4gT2J0YWluZWQgYnkgdGFraW5nIGEKLS8vIHNuYXBzaG90IG9mIGEgZGVmYXVs
dCBQZWVyQ29ubmVjdGlvbiBvZmZlciAoYW5kIGFkZGluZyBvdGhlciB0aGluZ3MsIGxpa2UKLS8v
IGJpdHJhdGUgbGltaXQpLgotUnRwUGFyYW1ldGVycyBNYWtlRnVsbE9wdXNQYXJhbWV0ZXJzKCk7
Ci1SdHBQYXJhbWV0ZXJzIE1ha2VGdWxsSXNhY1BhcmFtZXRlcnMoKTsKLQotLy8gTWFrZSB2aWRl
byBwYXJhbWV0ZXJzIHdpdGggYWxsIHRoZSBhdmFpbGFibGUgcHJvcGVydGllcyBjb25maWd1cmVk
IGFuZAotLy8gZmVhdHVyZXMgdXNlZCwgYW5kIHdpdGggbXVsdGlwbGUgY29kZWNzIG9mZmVyZWQu
IE9idGFpbmVkIGJ5IHRha2luZyBhCi0vLyBzbmFwc2hvdCBvZiBhIGRlZmF1bHQgUGVlckNvbm5l
Y3Rpb24gb2ZmZXIgKGFuZCBhZGRpbmcgb3RoZXIgdGhpbmdzLCBsaWtlCi0vLyBiaXRyYXRlIGxp
bWl0KS4KLVJ0cFBhcmFtZXRlcnMgTWFrZUZ1bGxWcDhQYXJhbWV0ZXJzKCk7Ci1SdHBQYXJhbWV0
ZXJzIE1ha2VGdWxsVnA5UGFyYW1ldGVycygpOwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0K
LSNlbmRpZiAgLy8gT1JUQ19URVNUUlRQUEFSQU1FVEVSU19IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL0JVSUxELmduIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL0JVSUxELmduCmluZGV4IDJk
MzUxYmIwZmEyY2ZmMDM4OTIzYmY2MTI3ZTdiZjM3ZTVmYmIxYTcuLjI5ZTYzM2M1ZDIyN2Y5MjQz
NTBjOTRiMmI1ZTM1MWE5NzE4YWZlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvQlVJTEQuZ24KQEAgLTI5LDYgKzI5LDggQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJydGNfcDJwIikgewogICAgICJiYXNlL2R0bHN0cmFuc3BvcnQu
aCIsCiAgICAgImJhc2UvZHRsc3RyYW5zcG9ydGludGVybmFsLmNjIiwKICAgICAiYmFzZS9kdGxz
dHJhbnNwb3J0aW50ZXJuYWwuaCIsCisgICAgImJhc2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvci5j
YyIsCisgICAgImJhc2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvci5oIiwKICAgICAiYmFzZS9pY2V0
cmFuc3BvcnRpbnRlcm5hbC5jYyIsCiAgICAgImJhc2UvaWNldHJhbnNwb3J0aW50ZXJuYWwuaCIs
CiAgICAgImJhc2UvbWRuc19tZXNzYWdlLmNjIiwKQEAgLTc0LDggKzc2LDYgQEAgcnRjX3N0YXRp
Y19saWJyYXJ5KCJydGNfcDJwIikgewogICAgICJiYXNlL3R1cm5wb3J0LmNjIiwKICAgICAiYmFz
ZS90dXJucG9ydC5oIiwKICAgICAiYmFzZS91ZHBwb3J0LmgiLAotICAgICJiYXNlL3VkcHRyYW5z
cG9ydC5jYyIsCi0gICAgImJhc2UvdWRwdHJhbnNwb3J0LmgiLAogICAgICJjbGllbnQvYmFzaWNw
b3J0YWxsb2NhdG9yLmNjIiwKICAgICAiY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5oIiwKICAg
ICAiY2xpZW50L3JlbGF5cG9ydGZhY3RvcnlpbnRlcmZhY2UuaCIsCkBAIC04NiwxNyArODYsMjAg
QEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfcDJwIikgewogICBkZXBzID0gWwogICAgICIuLi9h
cGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgIi4uL2FwaTpvcnRjX2FwaSIs
CisgICAgIi4uL2FwaS90cmFuc3BvcnQ6ZW51bXMiLAogICAgICIuLi9sb2dnaW5nOmljZV9sb2ci
LAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIs
CiAgICAgIi4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5n
dXRpbHMiLAogICAgICIuLi9ydGNfYmFzZTp3ZWFrX3B0ciIsCisgICAgIi4uL3J0Y19iYXNlL3N5
c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0IiwK
ICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdCIsCiAgICAgIi4uL3N5c3RlbV93
cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwK
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogCkBAIC0xMzcsNiArMTQwLDcgQEAg
aWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOnJ0Y19wMnAiLAogICAgICAgIi4uL2Fw
aTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi9hcGk6b3J0Y19hcGki
LAorICAgICAgIi4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICAgIi4uL3J0Y19iYXNl
OnJ0Y19iYXNlIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAg
ICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLApAQCAtMTUzLDYgKzE1Nyw3IEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgImJhc2UvYXN5bmNzdHVudGNwc29ja2V0
X3VuaXR0ZXN0LmNjIiwKICAgICAgICJiYXNlL2Jhc2ljYXN5bmNyZXNvbHZlcmZhY3RvcnlfdW5p
dHRlc3QuY2MiLAogICAgICAgImJhc2UvZHRsc3RyYW5zcG9ydF91bml0dGVzdC5jYyIsCisgICAg
ICAiYmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICJiYXNl
L21kbnNfbWVzc2FnZV91bml0dGVzdC5jYyIsCiAgICAgICAiYmFzZS9wMnB0cmFuc3BvcnRjaGFu
bmVsX3VuaXR0ZXN0LmNjIiwKICAgICAgICJiYXNlL3BhY2tldGxvc3Nlc3RpbWF0b3JfdW5pdHRl
c3QuY2MiLApAQCAtMTcwLDcgKzE3NSw2IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAg
ICAgImJhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5X3VuaXR0ZXN0LmNjIiwKICAgICAg
ICJiYXNlL3R1cm5wb3J0X3VuaXR0ZXN0LmNjIiwKICAgICAgICJiYXNlL3R1cm5zZXJ2ZXJfdW5p
dHRlc3QuY2MiLAotICAgICAgImJhc2UvdWRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjIiwKICAgICAg
ICJjbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yX3VuaXR0ZXN0LmNjIiwKICAgICBdCiAgICAgZGVw
cyA9IFsKQEAgLTE3OCwxMCArMTgyLDEyIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAg
ICAgIjpydGNfcDJwIiwKICAgICAgICIuLi9hcGk6b3J0Y19hcGkiLAogICAgICAgIi4uL3J0Y19i
YXNlOmNoZWNrcyIsCisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAi
Li4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAorICAgICAgIi4uL3J0Y19iYXNlOnRlc3RjbGllbnQi
LAogICAgICAgIi4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKICAgICAgICIuLi90ZXN0OnRl
c3Rfc3VwcG9ydCIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKQEAgLTIwNiw2ICsyMTIsNyBA
QCBydGNfc3RhdGljX2xpYnJhcnkoImxpYnN0dW5wcm9iZXIiKSB7CiAgICAgIi4uOndlYnJ0Y19j
b21tb24iLAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZSIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgXQogfQogCkBA
IC0yMjEsNiArMjI4LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOnAycF90
ZXN0X3V0aWxzIiwKICAgICAgICI6cnRjX3AycCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tz
IiwKKyAgICAgICIuLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgICAgICIuLi9ydGNfYmFz
ZTpydGNfYmFzZSIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAog
ICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL09XTkVSUwppbmRleCAxOGY2MDQ0YjE2M2Q4NWY5MmYw
MWQ3NGY5MDY4NDIyZWEyMWQ5MDI3Li44NGExOWVkNTk2Y2NlZDM1ZDNkY2I3MDMxZWU4ZDljMDU5
Y2FmYjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvT1dORVJTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9PV05FUlMKQEAgLTYsNiArNiw5IEBAIG1mbG9kbWFuQHdlYnJ0Yy5vcmcKIHBl
cmtqQHdlYnJ0Yy5vcmcKIHB0aGF0Y2hlckB3ZWJydGMub3JnCiBxaW5nc2lAd2VicnRjLm9yZwor
amVyb2VuZGJAd2VicnRjLm9yZworZW1hZG9tYXJhQHdlYnJ0Yy5vcmcKK3N0ZXZlYW50b25Ad2Vi
cnRjLm9yZwogc2VyZ2V5dUBjaHJvbWl1bS5vcmcKIHRvbW1pQHdlYnJ0Yy5vcmcKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
YXN5bmNzdHVudGNwc29ja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvYXN5bmNzdHVudGNwc29ja2V0LmNjCmluZGV4IDhiYjc5NmZkMWQ1
OWNiNTlmODkwNDc1MWVlMmIxYmMwYmU0ODJhMjYuLmQwMTg1YzNlYjI5MGVlODcyYjkzMzBjOGIy
YTA3NTE3NjIyMDk0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL2FzeW5jc3R1bnRjcHNvY2tldC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9hc3luY3N0dW50Y3Bz
b2NrZXQuY2MKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEFzeW5jU3R1blRDUFNvY2tldDo6UHJv
Y2Vzc0lucHV0KGNoYXIqIGRhdGEsIHNpemVfdCogbGVuKSB7CiAgICAgfQogCiAgICAgU2lnbmFs
UmVhZFBhY2tldCh0aGlzLCBkYXRhLCBleHBlY3RlZF9wa3RfbGVuLCByZW1vdGVfYWRkciwKLSAg
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7CisgICAgICAgICAg
ICAgICAgICAgICBydGM6OlRpbWVNaWNyb3MoKSk7CiAKICAgICAqbGVuIC09IGFjdHVhbF9sZW5n
dGg7CiAgICAgaWYgKCpsZW4gPiAwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9hc3luY3N0dW50Y3Bzb2NrZXRfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS9hc3luY3N0dW50Y3Bzb2NrZXRfdW5pdHRlc3QuY2MKaW5kZXggZGU5NTQxOTQxZjQxOGRhMTQ1
ODFlMTQ3ODhiOWNiMjhlODdhOGExMS4uYjVmYTE0ZWRjMTRiZjhmNDM2ZDZhNjJiMzM1ZTZlMWIx
ZDU1MzQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2UvYXN5bmNzdHVudGNwc29ja2V0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2FzeW5jc3R1bnRj
cHNvY2tldF91bml0dGVzdC5jYwpAQCAtODEsNyArODEsNyBAQCBjbGFzcyBBc3luY1N0dW5UQ1BT
b2NrZXRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsCiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsK
ICAgICByZWN2X3BhY2tldHNfLnB1c2hfYmFjayhzdGQ6OnN0cmluZyhkYXRhLCBsZW4pKTsKICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydC5jYwppbmRleCAzMTRmNjNjZTc0
Zjg2NWYxYWYzNDY5MjhiNWQ0ZTExN2Q2YmZhZjM0Li45N2M2YjEzZmI3YTdiMGQxYjNhODA3Njlj
ZmIzYTI1Mjk5ZmQwM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFuc3BvcnQuY2MK
QEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9kc2NwLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3J0Y2NlcnRpZmljYXRlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
c3Nsc3RyZWFtYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgpAQCAtMTEzLDM3ICsxMTQsMjMgQEAgdm9pZCBTdHJlYW1J
bnRlcmZhY2VDaGFubmVsOjpDbG9zZSgpIHsKICAgc3RhdGVfID0gcnRjOjpTU19DTE9TRUQ7CiB9
CiAKLUR0bHNUcmFuc3BvcnQ6OkR0bHNUcmFuc3BvcnQoSWNlVHJhbnNwb3J0SW50ZXJuYWwqIGlj
ZV90cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q3J5
cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpCi0gICAgOiB0cmFuc3BvcnRfbmFtZV8oaWNlX3Ry
YW5zcG9ydC0+dHJhbnNwb3J0X25hbWUoKSksCi0gICAgICBjb21wb25lbnRfKGljZV90cmFuc3Bv
cnQtPmNvbXBvbmVudCgpKSwKLSAgICAgIGljZV90cmFuc3BvcnRfKGljZV90cmFuc3BvcnQpLAot
ICAgICAgZG93bndhcmRfKE5VTEwpLAotICAgICAgc3J0cF9jaXBoZXJzXyhHZXRTdXBwb3J0ZWRE
dGxzU3J0cENyeXB0b1N1aXRlcyhjcnlwdG9fb3B0aW9ucykpLAotICAgICAgc3NsX21heF92ZXJz
aW9uXyhydGM6OlNTTF9QUk9UT0NPTF9EVExTXzEyKSwKLSAgICAgIGNyeXB0b19vcHRpb25zXyhj
cnlwdG9fb3B0aW9ucykgewotICBSVENfRENIRUNLKGljZV90cmFuc3BvcnRfKTsKLSAgQ29ubmVj
dFRvSWNlVHJhbnNwb3J0KCk7Ci19Ci0KIER0bHNUcmFuc3BvcnQ6OkR0bHNUcmFuc3BvcnQoCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEljZVRyYW5zcG9ydEludGVybmFsPiBpY2VfdHJhbnNwb3J0LAot
ICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpCisgICAgY29uc3Qg
d2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykKICAgICA6IHRyYW5zcG9ydF9u
YW1lXyhpY2VfdHJhbnNwb3J0LT50cmFuc3BvcnRfbmFtZSgpKSwKICAgICAgIGNvbXBvbmVudF8o
aWNlX3RyYW5zcG9ydC0+Y29tcG9uZW50KCkpLAotICAgICAgaWNlX3RyYW5zcG9ydF8oaWNlX3Ry
YW5zcG9ydC5nZXQoKSksCi0gICAgICBvd25lZF9pY2VfdHJhbnNwb3J0XyhzdGQ6Om1vdmUoaWNl
X3RyYW5zcG9ydCkpLAorICAgICAgaWNlX3RyYW5zcG9ydF8oc3RkOjptb3ZlKGljZV90cmFuc3Bv
cnQpKSwKICAgICAgIGRvd253YXJkXyhOVUxMKSwKLSAgICAgIHNydHBfY2lwaGVyc18oR2V0U3Vw
cG9ydGVkRHRsc1NydHBDcnlwdG9TdWl0ZXMoY3J5cHRvX29wdGlvbnMpKSwKKyAgICAgIHNydHBf
Y2lwaGVyc18oY3J5cHRvX29wdGlvbnMuR2V0U3VwcG9ydGVkRHRsc1NydHBDcnlwdG9TdWl0ZXMo
KSksCiAgICAgICBzc2xfbWF4X3ZlcnNpb25fKHJ0Yzo6U1NMX1BST1RPQ09MX0RUTFNfMTIpLAog
ICAgICAgY3J5cHRvX29wdGlvbnNfKGNyeXB0b19vcHRpb25zKSB7Ci0gIFJUQ19EQ0hFQ0sob3du
ZWRfaWNlX3RyYW5zcG9ydF8pOworICBSVENfRENIRUNLKGljZV90cmFuc3BvcnRfKTsKICAgQ29u
bmVjdFRvSWNlVHJhbnNwb3J0KCk7CiB9CiAKIER0bHNUcmFuc3BvcnQ6On5EdGxzVHJhbnNwb3J0
KCkgPSBkZWZhdWx0OwogCi1jb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIER0bHNUcmFuc3BvcnQ6
OmNyeXB0b19vcHRpb25zKCkgY29uc3QgeworY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBE
dGxzVHJhbnNwb3J0OjpjcnlwdG9fb3B0aW9ucygpIGNvbnN0IHsKICAgcmV0dXJuIGNyeXB0b19v
cHRpb25zXzsKIH0KIApAQCAtMzM1LDcgKzMyMiw4IEBAIGJvb2wgRHRsc1RyYW5zcG9ydDo6RXhw
b3J0S2V5aW5nTWF0ZXJpYWwoY29uc3Qgc3RkOjpzdHJpbmcmIGxhYmVsLAogCiBib29sIER0bHNU
cmFuc3BvcnQ6OlNldHVwRHRscygpIHsKICAgUlRDX0RDSEVDSyhkdGxzX3JvbGVfKTsKLSAgU3Ry
ZWFtSW50ZXJmYWNlQ2hhbm5lbCogZG93bndhcmQgPSBuZXcgU3RyZWFtSW50ZXJmYWNlQ2hhbm5l
bChpY2VfdHJhbnNwb3J0Xyk7CisgIFN0cmVhbUludGVyZmFjZUNoYW5uZWwqIGRvd253YXJkID0K
KyAgICAgIG5ldyBTdHJlYW1JbnRlcmZhY2VDaGFubmVsKGljZV90cmFuc3BvcnRfLmdldCgpKTsK
IAogICBkdGxzXy5yZXNldChydGM6OlNTTFN0cmVhbUFkYXB0ZXI6OkNyZWF0ZShkb3dud2FyZCkp
OwogICBpZiAoIWR0bHNfKSB7CkBAIC00MzEsNyArNDE5LDcgQEAgaW50IER0bHNUcmFuc3BvcnQ6
OlNlbmRQYWNrZXQoY29uc3QgY2hhciogZGF0YSwKIH0KIAogSWNlVHJhbnNwb3J0SW50ZXJuYWwq
IER0bHNUcmFuc3BvcnQ6OmljZV90cmFuc3BvcnQoKSB7Ci0gIHJldHVybiBpY2VfdHJhbnNwb3J0
XzsKKyAgcmV0dXJuIGljZV90cmFuc3BvcnRfLmdldCgpOwogfQogCiBib29sIER0bHNUcmFuc3Bv
cnQ6OklzRHRsc0Nvbm5lY3RlZCgpIHsKQEAgLTQ4OCw3ICs0NzYsNyBAQCB2b2lkIER0bHNUcmFu
c3BvcnQ6OkNvbm5lY3RUb0ljZVRyYW5zcG9ydCgpIHsKIC8vICAgICAgIGltcGwgYWdhaW4KIHZv
aWQgRHRsc1RyYW5zcG9ydDo6T25Xcml0YWJsZVN0YXRlKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50
ZXJuYWwqIHRyYW5zcG9ydCkgewogICBSVENfRENIRUNLX1JVTl9PTigmdGhyZWFkX2NoZWNrZXJf
KTsKLSAgUlRDX0RDSEVDSyh0cmFuc3BvcnQgPT0gaWNlX3RyYW5zcG9ydF8pOworICBSVENfRENI
RUNLKHRyYW5zcG9ydCA9PSBpY2VfdHJhbnNwb3J0Xy5nZXQoKSk7CiAgIFJUQ19MT0coTFNfVkVS
Qk9TRSkgPDwgVG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAgIDw8ICI6IGljZV90cmFu
c3BvcnQgd3JpdGFibGUgc3RhdGUgY2hhbmdlZCB0byAiCiAgICAgICAgICAgICAgICAgICAgICAg
PDwgaWNlX3RyYW5zcG9ydF8tPndyaXRhYmxlKCk7CkBAIC01MjAsNyArNTA4LDcgQEAgdm9pZCBE
dGxzVHJhbnNwb3J0OjpPbldyaXRhYmxlU3RhdGUocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5h
bCogdHJhbnNwb3J0KSB7CiAKIHZvaWQgRHRsc1RyYW5zcG9ydDo6T25SZWNlaXZpbmdTdGF0ZShy
dGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQpIHsKICAgUlRDX0RDSEVDS19S
VU5fT04oJnRocmVhZF9jaGVja2VyXyk7Ci0gIFJUQ19EQ0hFQ0sodHJhbnNwb3J0ID09IGljZV90
cmFuc3BvcnRfKTsKKyAgUlRDX0RDSEVDSyh0cmFuc3BvcnQgPT0gaWNlX3RyYW5zcG9ydF8uZ2V0
KCkpOwogICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8IFRvU3RyaW5nKCkKICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiOiBpY2VfdHJhbnNwb3J0ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAi
cmVjZWl2aW5nIHN0YXRlIGNoYW5nZWQgdG8gIgpAQCAtNTM0LDE1ICs1MjIsMTUgQEAgdm9pZCBE
dGxzVHJhbnNwb3J0OjpPblJlY2VpdmluZ1N0YXRlKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJu
YWwqIHRyYW5zcG9ydCkgewogdm9pZCBEdGxzVHJhbnNwb3J0OjpPblJlYWRQYWNrZXQocnRjOjpQ
YWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ0aHJl
YWRfY2hlY2tlcl8pOwotICBSVENfRENIRUNLKHRyYW5zcG9ydCA9PSBpY2VfdHJhbnNwb3J0Xyk7
CisgIFJUQ19EQ0hFQ0sodHJhbnNwb3J0ID09IGljZV90cmFuc3BvcnRfLmdldCgpKTsKICAgUlRD
X0RDSEVDSyhmbGFncyA9PSAwKTsKIAogICBpZiAoIWR0bHNfYWN0aXZlXykgewogICAgIC8vIE5v
dCBkb2luZyBEVExTLgotICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwgc2l6ZSwgcGFj
a2V0X3RpbWUsIDApOworICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwgc2l6ZSwgcGFj
a2V0X3RpbWVfdXMsIDApOwogICAgIHJldHVybjsKICAgfQogCkBAIC02MDUsNyArNTkzLDcgQEAg
dm9pZCBEdGxzVHJhbnNwb3J0OjpPblJlYWRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRl
cm5hbCogdHJhbnNwb3J0LAogICAgICAgICBSVENfRENIRUNLKCFzcnRwX2NpcGhlcnNfLmVtcHR5
KCkpOwogCiAgICAgICAgIC8vIFNpZ25hbCB0aGlzIHVwd2FyZHMgYXMgYSBieXBhc3MgcGFja2V0
LgotICAgICAgICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEsIHNpemUsIHBhY2tldF90aW1l
LCBQRl9TUlRQX0JZUEFTUyk7CisgICAgICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwg
c2l6ZSwgcGFja2V0X3RpbWVfdXMsIFBGX1NSVFBfQllQQVNTKTsKICAgICAgIH0KICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRFRMU19UUkFOU1BPUlRfRkFJTEVEOgpAQCAtNjUxLDcgKzYzOSw3IEBA
IHZvaWQgRHRsc1RyYW5zcG9ydDo6T25EdGxzRXZlbnQocnRjOjpTdHJlYW1JbnRlcmZhY2UqIGR0
bHMsIGludCBzaWcsIGludCBlcnIpIHsKICAgICBkbyB7CiAgICAgICByZXQgPSBkdGxzXy0+UmVh
ZChidWYsIHNpemVvZihidWYpLCAmcmVhZCwgJnJlYWRfZXJyb3IpOwogICAgICAgaWYgKHJldCA9
PSBydGM6OlNSX1NVQ0NFU1MpIHsKLSAgICAgICAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBidWYs
IHJlYWQsIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSwgMCk7CisgICAgICAgIFNpZ25hbFJlYWRQ
YWNrZXQodGhpcywgYnVmLCByZWFkLCBydGM6OlRpbWVNaWNyb3MoKSwgMCk7CiAgICAgICB9IGVs
c2UgaWYgKHJldCA9PSBydGM6OlNSX0VPUykgewogICAgICAgICAvLyBSZW1vdGUgcGVlciBzaHV0
IGRvd24gdGhlIGFzc29jaWF0aW9uIHdpdGggbm8gZXJyb3IuCiAgICAgICAgIFJUQ19MT0coTFNf
SU5GTykgPDwgVG9TdHJpbmcoKSA8PCAiOiBEVExTIHRyYW5zcG9ydCBjbG9zZWQiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
ZHRsc3RyYW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydC5oCmluZGV4IDQ1NmYzNzVhMTA3MDgwN2U3YTdiMjc4
MDAxYTc1OWNhYmZiMWMxMGEuLmNlOTU4MDNhZWNiMjEzZGU3M2UzNDg0NGFiNGJjZDMzYzQ0MDQy
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL2R0bHN0cmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0LmgKQEAgLTE1LDYgKzE1LDcg
QEAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBp
L2NyeXB0by9jcnlwdG9vcHRpb25zLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvZHRsc3RyYW5zcG9y
dGludGVybmFsLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvaWNldHJhbnNwb3J0aW50ZXJuYWwuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKQEAgLTk0LDE1ICs5NSwxMiBAQCBjbGFzcyBE
dGxzVHJhbnNwb3J0IDogcHVibGljIER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIC8vCiAgIC8v
IHxjcnlwdG9fb3B0aW9uc3wgYXJlIHRoZSBvcHRpb25zIHVzZWQgZm9yIHRoZSBEVExTIGhhbmRz
aGFrZS4gVGhpcyBhZmZlY3RzCiAgIC8vIHdoZXRoZXIgR0NNIGNyeXB0byBzdWl0ZXMgYXJlIG5l
Z290aWF0ZWQuCi0gIC8vIFRPRE8oemhpaHVhbmcpOiBSZW1vdmUgdGhpcyBvbmNlIHdlIHN3aXRj
aCB0byBKc2VwVHJhbnNwb3J0Q29udHJvbGxlci4KLSAgZXhwbGljaXQgRHRsc1RyYW5zcG9ydChJ
Y2VUcmFuc3BvcnRJbnRlcm5hbCogaWNlX3RyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKTsKICAgZXhwbGlj
aXQgRHRsc1RyYW5zcG9ydChzdGQ6OnVuaXF1ZV9wdHI8SWNlVHJhbnNwb3J0SW50ZXJuYWw+IGlj
ZV90cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDcnlwdG9P
cHRpb25zJiBjcnlwdG9fb3B0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
d2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucyk7CiAKICAgfkR0bHNUcmFuc3Bv
cnQoKSBvdmVycmlkZTsKIAotICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRp
b25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5
cHRvX29wdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKICAgRHRsc1RyYW5zcG9ydFN0YXRlIGR0bHNf
c3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9u
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIGludCBjb21wb25lbnQoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTE5Niw3ICsxOTQsNyBAQCBjbGFzcyBEdGxzVHJhbnNwb3J0IDogcHVibGljIER0bHNUcmFu
c3BvcnRJbnRlcm5hbCB7CiAgIHZvaWQgT25SZWFkUGFja2V0KHJ0Yzo6UGFja2V0VHJhbnNwb3J0
SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUsCisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzLAogICAgICAgICAgICAgICAgICAgICBpbnQg
ZmxhZ3MpOwogICB2b2lkIE9uU2VudFBhY2tldChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFs
KiB0cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYg
c2VudF9wYWNrZXQpOwpAQCAtMjIwLDkgKzIxOCw4IEBAIGNsYXNzIER0bHNUcmFuc3BvcnQgOiBw
dWJsaWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAgc3RkOjpzdHJpbmcgdHJhbnNwb3J0X25h
bWVfOwogICBpbnQgY29tcG9uZW50XzsKICAgRHRsc1RyYW5zcG9ydFN0YXRlIGR0bHNfc3RhdGVf
ID0gRFRMU19UUkFOU1BPUlRfTkVXOwotICAvLyBVbmRlcmx5aW5nIGljZV90cmFuc3BvcnQsIG5v
dCBvd25lZCBieSB0aGlzIGNsYXNzLgotICBJY2VUcmFuc3BvcnRJbnRlcm5hbCogY29uc3QgaWNl
X3RyYW5zcG9ydF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxJY2VUcmFuc3BvcnRJbnRlcm5hbD4gb3du
ZWRfaWNlX3RyYW5zcG9ydF87CisgIC8vIFVuZGVybHlpbmcgaWNlX3RyYW5zcG9ydCwgb3duZWQg
YnkgdGhpcyBjbGFzcy4KKyAgc3RkOjp1bmlxdWVfcHRyPEljZVRyYW5zcG9ydEludGVybmFsPiBp
Y2VfdHJhbnNwb3J0XzsKICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMU3RyZWFtQWRhcHRlcj4g
ZHRsc187ICAvLyBUaGUgRFRMUyBzdHJlYW0KICAgU3RyZWFtSW50ZXJmYWNlQ2hhbm5lbCoKICAg
ICAgIGRvd253YXJkXzsgIC8vIFdyYXBwZXIgZm9yIGljZV90cmFuc3BvcnRfLCBvd25lZCBieSBk
dGxzXy4KQEAgLTIzMSw3ICsyMjgsNyBAQCBjbGFzcyBEdGxzVHJhbnNwb3J0IDogcHVibGljIER0
bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxydGM6OlJUQ0NlcnRp
ZmljYXRlPiBsb2NhbF9jZXJ0aWZpY2F0ZV87CiAgIGFic2w6Om9wdGlvbmFsPHJ0Yzo6U1NMUm9s
ZT4gZHRsc19yb2xlXzsKICAgcnRjOjpTU0xQcm90b2NvbFZlcnNpb24gc3NsX21heF92ZXJzaW9u
XzsKLSAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKKyAgd2VicnRjOjpDcnlw
dG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKICAgcnRjOjpCdWZmZXIgcmVtb3RlX2ZpbmdlcnBy
aW50X3ZhbHVlXzsKICAgc3RkOjpzdHJpbmcgcmVtb3RlX2ZpbmdlcnByaW50X2FsZ29yaXRobV87
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL2R0bHN0cmFuc3BvcnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0X3VuaXR0ZXN0LmNj
CmluZGV4IDNjZjQyM2U4NTEzY2RmOWY3ODRhNzNmNjc5ZGM1MWY1MWE2Y2ZkOTIuLjkzZjNkYTMz
N2QzMDMwODRmMDdiZjkwYWFmM2YyY2I0MDNhYWJmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFuc3BvcnRfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvZHRsc3RyYW5zcG9ydF91bml0dGVzdC5jYwpAQCAtMTEsNiArMTEsNyBAQAogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c2V0PgorI2lu
Y2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJwMnAvYmFzZS9kdGxzdHJhbnNwb3J0LmgiCiAj
aW5jbHVkZSAicDJwL2Jhc2UvZmFrZWljZXRyYW5zcG9ydC5oIgpAQCAtMTksNiArMjAsNyBAQAog
I2luY2x1ZGUgInJ0Y19iYXNlL2RzY3AuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0
aWZpY2F0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGFkYXB0ZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zc2xpZGVudGl0eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbHN0cmVhbWFkYXB0
ZXIuaCIKQEAgLTQ3LDggKzQ5LDggQEAgdm9pZCBTZXRSZW1vdGVGaW5nZXJwcmludEZyb21DZXJ0
KAogICAgIER0bHNUcmFuc3BvcnQqIHRyYW5zcG9ydCwKICAgICBjb25zdCBydGM6OnNjb3BlZF9y
ZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4mIGNlcnQsCiAgICAgYm9vbCBtb2RpZnlfZGlnZXN0
ID0gZmFsc2UpIHsKLSAgcnRjOjpTU0xGaW5nZXJwcmludCogZmluZ2VycHJpbnQgPQotICAgICAg
cnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKGNlcnQpOworICBzdGQ6
OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4gZmluZ2VycHJpbnQgPQorICAgICAgcnRj
OjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKCpjZXJ0KTsKICAgaWYgKG1v
ZGlmeV9kaWdlc3QpIHsKICAgICArK2ZpbmdlcnByaW50LT5kaWdlc3RbMF07CiAgIH0KQEAgLTU3
LDcgKzU5LDYgQEAgdm9pZCBTZXRSZW1vdGVGaW5nZXJwcmludEZyb21DZXJ0KAogICAgICAgZmlu
Z2VycHJpbnQtPmFsZ29yaXRobSwKICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGZpbmdlcnByaW50LT5kaWdlc3QuZGF0YSgpKSwKICAgICAgIGZpbmdlcnByaW50LT5kaWdl
c3Quc2l6ZSgpKSk7Ci0gIGRlbGV0ZSBmaW5nZXJwcmludDsKIH0KIAogY2xhc3MgRHRsc1Rlc3RD
bGllbnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewpAQCAtNzYsMTggKzc3LDE4IEBA
IGNsYXNzIER0bHNUZXN0Q2xpZW50IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAg
fQogICAvLyBTZXQgdXAgZmFrZSBJQ0UgdHJhbnNwb3J0IGFuZCByZWFsIERUTFMgdHJhbnNwb3J0
IHVuZGVyIHRlc3QuCiAgIHZvaWQgU2V0dXBUcmFuc3BvcnRzKEljZVJvbGUgcm9sZSwgaW50IGFz
eW5jX2RlbGF5X21zID0gMCkgewotICAgIGZha2VfaWNlX3RyYW5zcG9ydF8ucmVzZXQobmV3IEZh
a2VJY2VUcmFuc3BvcnQoImZha2UiLCAwKSk7Ci0gICAgZmFrZV9pY2VfdHJhbnNwb3J0Xy0+U2V0
QXN5bmModHJ1ZSk7Ci0gICAgZmFrZV9pY2VfdHJhbnNwb3J0Xy0+U2V0QXN5bmNEZWxheShhc3lu
Y19kZWxheV9tcyk7Ci0gICAgZmFrZV9pY2VfdHJhbnNwb3J0Xy0+U2V0SWNlUm9sZShyb2xlKTsK
LSAgICBmYWtlX2ljZV90cmFuc3BvcnRfLT5TZXRJY2VUaWVicmVha2VyKChyb2xlID09IElDRVJP
TEVfQ09OVFJPTExJTkcpID8gMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAyKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RmFrZUljZVRyYW5zcG9ydD4gZmFrZV9pY2VfdHJhbnNwb3J0OworICAgIGZha2VfaWNl
X3RyYW5zcG9ydC5yZXNldChuZXcgRmFrZUljZVRyYW5zcG9ydCgiZmFrZSIsIDApKTsKKyAgICBm
YWtlX2ljZV90cmFuc3BvcnQtPlNldEFzeW5jKHRydWUpOworICAgIGZha2VfaWNlX3RyYW5zcG9y
dC0+U2V0QXN5bmNEZWxheShhc3luY19kZWxheV9tcyk7CisgICAgZmFrZV9pY2VfdHJhbnNwb3J0
LT5TZXRJY2VSb2xlKHJvbGUpOworICAgIGZha2VfaWNlX3RyYW5zcG9ydC0+U2V0SWNlVGllYnJl
YWtlcigocm9sZSA9PSBJQ0VST0xFX0NPTlRST0xMSU5HKSA/IDEgOiAyKTsKICAgICAvLyBIb29r
IHRoZSByYXcgcGFja2V0cyBzbyB0aGF0IHdlIGNhbiB2ZXJpZnkgdGhleSBhcmUgZW5jcnlwdGVk
LgotICAgIGZha2VfaWNlX3RyYW5zcG9ydF8tPlNpZ25hbFJlYWRQYWNrZXQuY29ubmVjdCgKKyAg
ICBmYWtlX2ljZV90cmFuc3BvcnQtPlNpZ25hbFJlYWRQYWNrZXQuY29ubmVjdCgKICAgICAgICAg
dGhpcywgJkR0bHNUZXN0Q2xpZW50OjpPbkZha2VJY2VUcmFuc3BvcnRSZWFkUGFja2V0KTsKIAot
ICAgIGR0bHNfdHJhbnNwb3J0Xy5yZXNldCgKLSAgICAgICAgbmV3IER0bHNUcmFuc3BvcnQoZmFr
ZV9pY2VfdHJhbnNwb3J0Xy5nZXQoKSwgcnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKKyAgICBkdGxz
X3RyYW5zcG9ydF8gPSBhYnNsOjptYWtlX3VuaXF1ZTxEdGxzVHJhbnNwb3J0PigKKyAgICAgICAg
c3RkOjptb3ZlKGZha2VfaWNlX3RyYW5zcG9ydCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsK
ICAgICBkdGxzX3RyYW5zcG9ydF8tPlNldFNzbE1heFByb3RvY29sVmVyc2lvbihzc2xfbWF4X3Zl
cnNpb25fKTsKICAgICAvLyBOb3RlOiBDZXJ0aWZpY2F0ZSBtYXkgYmUgbnVsbCBoZXJlIGlmIHRl
c3RpbmcgcGFzc3Rocm91Z2guCiAgICAgZHRsc190cmFuc3BvcnRfLT5TZXRMb2NhbENlcnRpZmlj
YXRlKGNlcnRpZmljYXRlXyk7CkBAIC05OSwxMyArMTAwLDE2IEBAIGNsYXNzIER0bHNUZXN0Q2xp
ZW50IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgICAgdGhpcywgJkR0bHNU
ZXN0Q2xpZW50OjpPblRyYW5zcG9ydFNlbnRQYWNrZXQpOwogICB9CiAKLSAgRmFrZUljZVRyYW5z
cG9ydCogZmFrZV9pY2VfdHJhbnNwb3J0KCkgeyByZXR1cm4gZmFrZV9pY2VfdHJhbnNwb3J0Xy5n
ZXQoKTsgfQorICBGYWtlSWNlVHJhbnNwb3J0KiBmYWtlX2ljZV90cmFuc3BvcnQoKSB7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEZha2VJY2VUcmFuc3BvcnQqPihkdGxzX3RyYW5zcG9ydF8tPmlj
ZV90cmFuc3BvcnQoKSk7CisgIH0KIAogICBEdGxzVHJhbnNwb3J0KiBkdGxzX3RyYW5zcG9ydCgp
IHsgcmV0dXJuIGR0bHNfdHJhbnNwb3J0Xy5nZXQoKTsgfQogCiAgIC8vIFNpbXVsYXRlIGZha2Ug
SUNFIHRyYW5zcG9ydHMgY29ubmVjdGluZy4KICAgYm9vbCBDb25uZWN0KER0bHNUZXN0Q2xpZW50
KiBwZWVyLCBib29sIGFzeW1tZXRyaWMpIHsKLSAgICBmYWtlX2ljZV90cmFuc3BvcnRfLT5TZXRE
ZXN0aW5hdGlvbihwZWVyLT5mYWtlX2ljZV90cmFuc3BvcnQoKSwgYXN5bW1ldHJpYyk7CisgICAg
ZmFrZV9pY2VfdHJhbnNwb3J0KCktPlNldERlc3RpbmF0aW9uKHBlZXItPmZha2VfaWNlX3RyYW5z
cG9ydCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3ltbWV0
cmljKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCkBAIC0yMzIsNyArMjM2LDcgQEAgY2xhc3Mg
RHRsc1Rlc3RDbGllbnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICB2b2lkIE9u
VHJhbnNwb3J0UmVhZFBhY2tldChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3Bv
cnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7CiAgICAgdWludDMyX3Qg
cGFja2V0X251bSA9IDA7CiAgICAgQVNTRVJUX1RSVUUoVmVyaWZ5UGFja2V0KGRhdGEsIHNpemUs
ICZwYWNrZXRfbnVtKSk7CkBAIC0yNTQsNyArMjU4LDcgQEAgY2xhc3MgRHRsc1Rlc3RDbGllbnQg
OiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICB2b2lkIE9uRmFrZUljZVRyYW5zcG9y
dFJlYWRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiB0aW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0
X3RpbWVfdXMgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxh
Z3MpIHsKICAgICAvLyBGbGFncyBzaG91bGRuJ3QgYmUgc2V0IG9uIHRoZSB1bmRlcmx5aW5nIFRy
YW5zcG9ydCBwYWNrZXRzLgogICAgIEFTU0VSVF9FUSgwLCBmbGFncyk7CkBAIC01MTMsOCArNTE3
LDggQEAgVEVTVF9GKER0bHNUcmFuc3BvcnRUZXN0LCBUZXN0Q2VydGlmaWNhdGVzQmVmb3JlQ29u
bmVjdCkgewogICAvLyByZW1vdGUgY2VydGlmaWNhdGUsIGJlY2F1c2UgY29ubmVjdGlvbiBoYXMg
bm90IHlldCBvY2N1cnJlZC4KICAgYXV0byBjZXJ0aWZpY2F0ZTEgPSBjbGllbnQxXy5kdGxzX3Ry
YW5zcG9ydCgpLT5HZXRMb2NhbENlcnRpZmljYXRlKCk7CiAgIGF1dG8gY2VydGlmaWNhdGUyID0g
Y2xpZW50Ml8uZHRsc190cmFuc3BvcnQoKS0+R2V0TG9jYWxDZXJ0aWZpY2F0ZSgpOwotICBBU1NF
UlRfTkUoY2VydGlmaWNhdGUxLT5zc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpLAotICAg
ICAgICAgICAgY2VydGlmaWNhdGUyLT5zc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpKTsK
KyAgQVNTRVJUX05FKGNlcnRpZmljYXRlMS0+R2V0U1NMQ2VydGlmaWNhdGUoKS5Ub1BFTVN0cmlu
ZygpLAorICAgICAgICAgICAgY2VydGlmaWNhdGUyLT5HZXRTU0xDZXJ0aWZpY2F0ZSgpLlRvUEVN
U3RyaW5nKCkpOwogICBBU1NFUlRfRkFMU0UoY2xpZW50MV8uZHRsc190cmFuc3BvcnQoKS0+R2V0
UmVtb3RlU1NMQ2VydENoYWluKCkpOwogICBBU1NFUlRfRkFMU0UoY2xpZW50Ml8uZHRsc190cmFu
c3BvcnQoKS0+R2V0UmVtb3RlU1NMQ2VydENoYWluKCkpOwogfQpAQCAtNTI3LDggKzUzMSw4IEBA
IFRFU1RfRihEdGxzVHJhbnNwb3J0VGVzdCwgVGVzdENlcnRpZmljYXRlc0FmdGVyQ29ubmVjdCkg
ewogICAvLyBBZnRlciBjb25uZWN0aW9uLCBlYWNoIHNpZGUgaGFzIGEgZGlzdGluY3QgbG9jYWwg
Y2VydGlmaWNhdGUuCiAgIGF1dG8gY2VydGlmaWNhdGUxID0gY2xpZW50MV8uZHRsc190cmFuc3Bv
cnQoKS0+R2V0TG9jYWxDZXJ0aWZpY2F0ZSgpOwogICBhdXRvIGNlcnRpZmljYXRlMiA9IGNsaWVu
dDJfLmR0bHNfdHJhbnNwb3J0KCktPkdldExvY2FsQ2VydGlmaWNhdGUoKTsKLSAgQVNTRVJUX05F
KGNlcnRpZmljYXRlMS0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwKLSAgICAgICAg
ICAgIGNlcnRpZmljYXRlMi0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSk7CisgIEFT
U0VSVF9ORShjZXJ0aWZpY2F0ZTEtPkdldFNTTENlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwK
KyAgICAgICAgICAgIGNlcnRpZmljYXRlMi0+R2V0U1NMQ2VydGlmaWNhdGUoKS5Ub1BFTVN0cmlu
ZygpKTsKIAogICAvLyBFYWNoIHNpZGUncyByZW1vdGUgY2VydGlmaWNhdGUgaXMgdGhlIG90aGVy
IHNpZGUncyBsb2NhbCBjZXJ0aWZpY2F0ZS4KICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMQ2Vy
dENoYWluPiByZW1vdGVfY2VydDEgPQpAQCAtNTM2LDEzICs1NDAsMTMgQEAgVEVTVF9GKER0bHNU
cmFuc3BvcnRUZXN0LCBUZXN0Q2VydGlmaWNhdGVzQWZ0ZXJDb25uZWN0KSB7CiAgIEFTU0VSVF9U
UlVFKHJlbW90ZV9jZXJ0MSk7CiAgIEFTU0VSVF9FUSgxdSwgcmVtb3RlX2NlcnQxLT5HZXRTaXpl
KCkpOwogICBBU1NFUlRfRVEocmVtb3RlX2NlcnQxLT5HZXQoMCkuVG9QRU1TdHJpbmcoKSwKLSAg
ICAgICAgICAgIGNlcnRpZmljYXRlMi0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSk7
CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZTItPkdldFNTTENlcnRpZmljYXRlKCkuVG9QRU1TdHJp
bmcoKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTENlcnRDaGFpbj4gcmVtb3RlX2NlcnQy
ID0KICAgICAgIGNsaWVudDJfLmR0bHNfdHJhbnNwb3J0KCktPkdldFJlbW90ZVNTTENlcnRDaGFp
bigpOwogICBBU1NFUlRfVFJVRShyZW1vdGVfY2VydDIpOwogICBBU1NFUlRfRVEoMXUsIHJlbW90
ZV9jZXJ0Mi0+R2V0U2l6ZSgpKTsKICAgQVNTRVJUX0VRKHJlbW90ZV9jZXJ0Mi0+R2V0KDApLlRv
UEVNU3RyaW5nKCksCi0gICAgICAgICAgICBjZXJ0aWZpY2F0ZTEtPnNzbF9jZXJ0aWZpY2F0ZSgp
LlRvUEVNU3RyaW5nKCkpOworICAgICAgICAgICAgY2VydGlmaWNhdGUxLT5HZXRTU0xDZXJ0aWZp
Y2F0ZSgpLlRvUEVNU3RyaW5nKCkpOwogfQogCiAvLyBUZXN0IHRoYXQgcGFja2V0cyBhcmUgcmV0
cmFuc21pdHRlZCBhY2NvcmRpbmcgdG8gdGhlIGV4cGVjdGVkIHNjaGVkdWxlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRs
c3RyYW5zcG9ydGludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0aW50ZXJuYWwuaAppbmRleCA1OGQzNmZhMDhk
YmM4M2Y2NjA2ZjRjZTk4ZTg0NDZmMjVhZGJmYWFkLi5hNzEzNzQ0OWY0Y2YxNTk4NDQzMzhkMjVh
YWM0MTMwZDg1Mjk5NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0aW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNw
b3J0aW50ZXJuYWwuaApAQCAtMTUsMTAgKzE1LDEwIEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgog
I2luY2x1ZGUgInAycC9iYXNlL2ljZXRyYW5zcG9ydGludGVybmFsLmgiCiAjaW5jbHVkZSAicDJw
L2Jhc2UvcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xz
dHJlYW1hZGFwdGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAKIG5h
bWVzcGFjZSBjcmlja2V0IHsKIApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBEdGxzVHJhbnNwb3J0
SW50ZXJuYWwgOiBwdWJsaWMgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCB7CiAgcHVibGlj
OgogICB+RHRsc1RyYW5zcG9ydEludGVybmFsKCkgb3ZlcnJpZGU7CiAKLSAgdmlydHVhbCBjb25z
dCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKCkgY29uc3QgPSAwOworICB2aXJ0
dWFsIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMoKSBjb25zdCA9
IDA7CiAKICAgdmlydHVhbCBEdGxzVHJhbnNwb3J0U3RhdGUgZHRsc19zdGF0ZSgpIGNvbnN0ID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvZmFrZWR0bHN0cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2Zha2VkdGxzdHJhbnNwb3J0LmgKaW5kZXggY2I5
NDRkM2RiNWIzOWRhNzYwZDQ1NDIyNDU3OTJkZjUyYmRiNjdhZC4uZGFlZjVjNzdmYzk5OGE0MTE5
MGJhODhlNGJmNDIwOWE1ZjVmYzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZmFrZWR0bHN0cmFuc3BvcnQuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9mYWtlZHRs
c3RyYW5zcG9ydC5oCkBAIC0xNyw5ICsxNywxMSBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lu
Y2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRv
b3B0aW9ucy5oIgogI2luY2x1ZGUgInAycC9iYXNlL2R0bHN0cmFuc3BvcnRpbnRlcm5hbC5oIgog
I2luY2x1ZGUgInAycC9iYXNlL2Zha2VpY2V0cmFuc3BvcnQuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9mYWtlc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5o
IgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKQEAgLTMyLDcgKzM0LDcgQEAgY2xhc3MgRmFrZUR0
bHNUcmFuc3BvcnQgOiBwdWJsaWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAgICAgIDogaWNl
X3RyYW5zcG9ydF8oaWNlX3RyYW5zcG9ydCksCiAgICAgICAgIHRyYW5zcG9ydF9uYW1lXyhpY2Vf
dHJhbnNwb3J0LT50cmFuc3BvcnRfbmFtZSgpKSwKICAgICAgICAgY29tcG9uZW50XyhpY2VfdHJh
bnNwb3J0LT5jb21wb25lbnQoKSksCi0gICAgICAgIGR0bHNfZmluZ2VycHJpbnRfKCIiLCBudWxs
cHRyLCAwKSB7CisgICAgICAgIGR0bHNfZmluZ2VycHJpbnRfKCIiLCBudWxscHRyKSB7CiAgICAg
UlRDX0RDSEVDSyhpY2VfdHJhbnNwb3J0Xyk7CiAgICAgaWNlX3RyYW5zcG9ydF8tPlNpZ25hbFJl
YWRQYWNrZXQuY29ubmVjdCgKICAgICAgICAgdGhpcywgJkZha2VEdGxzVHJhbnNwb3J0OjpPbklj
ZVRyYW5zcG9ydFJlYWRQYWNrZXQpOwpAQCAtNDQsNyArNDYsNyBAQCBjbGFzcyBGYWtlRHRsc1Ry
YW5zcG9ydCA6IHB1YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJuYWwgewogICAgICAgOiBvd25lZF9p
Y2VfdHJhbnNwb3J0XyhzdGQ6Om1vdmUoaWNlKSksCiAgICAgICAgIHRyYW5zcG9ydF9uYW1lXyhv
d25lZF9pY2VfdHJhbnNwb3J0Xy0+dHJhbnNwb3J0X25hbWUoKSksCiAgICAgICAgIGNvbXBvbmVu
dF8ob3duZWRfaWNlX3RyYW5zcG9ydF8tPmNvbXBvbmVudCgpKSwKLSAgICAgICAgZHRsc19maW5n
ZXJwcmludF8oIiIsIG51bGxwdHIsIDApIHsKKyAgICAgICAgZHRsc19maW5nZXJwcmludF8oIiIs
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+KCkpIHsKICAgICBpY2VfdHJhbnNwb3J0XyA9
IG93bmVkX2ljZV90cmFuc3BvcnRfLmdldCgpOwogICAgIGljZV90cmFuc3BvcnRfLT5TaWduYWxS
ZWFkUGFja2V0LmNvbm5lY3QoCiAgICAgICAgIHRoaXMsICZGYWtlRHRsc1RyYW5zcG9ydDo6T25J
Y2VUcmFuc3BvcnRSZWFkUGFja2V0KTsKQEAgLTgyLDYgKzg0LDcgQEAgY2xhc3MgRmFrZUR0bHNU
cmFuc3BvcnQgOiBwdWJsaWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAgICBpY2VfdHJhbnNw
b3J0Xy0+U2V0UmVjZWl2aW5nKHJlY2VpdmluZyk7CiAgICAgc2V0X3JlY2VpdmluZyhyZWNlaXZp
bmcpOwogICB9CisgIHZvaWQgU2V0RHRsc1N0YXRlKER0bHNUcmFuc3BvcnRTdGF0ZSBzdGF0ZSkg
eyBkdGxzX3N0YXRlXyA9IHN0YXRlOyB9CiAKICAgLy8gU2ltdWxhdGVzIHRoZSB0d28gRFRMUyB0
cmFuc3BvcnRzIGNvbm5lY3RpbmcgdG8gZWFjaCBvdGhlci4KICAgLy8gSWYgfGFzeW1tZXRyaWN8
IGlzIHRydWUgdGhpcyBtZXRob2Qgb25seSBhZmZlY3RzIHRoaXMgRmFrZUR0bHNUcmFuc3BvcnQu
CkBAIC0xMzIsNyArMTM1LDggQEAgY2xhc3MgRmFrZUR0bHNUcmFuc3BvcnQgOiBwdWJsaWMgRHRs
c1RyYW5zcG9ydEludGVybmFsIHsKICAgYm9vbCBTZXRSZW1vdGVGaW5nZXJwcmludChjb25zdCBz
dGQ6OnN0cmluZyYgYWxnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QqIGRpZ2VzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGlnZXN0X2xl
bikgb3ZlcnJpZGUgewotICAgIGR0bHNfZmluZ2VycHJpbnRfID0gcnRjOjpTU0xGaW5nZXJwcmlu
dChhbGcsIGRpZ2VzdCwgZGlnZXN0X2xlbik7CisgICAgZHRsc19maW5nZXJwcmludF8gPQorICAg
ICAgICBydGM6OlNTTEZpbmdlcnByaW50KGFsZywgcnRjOjpNYWtlQXJyYXlWaWV3KGRpZ2VzdCwg
ZGlnZXN0X2xlbikpOwogICAgIHJldHVybiB0cnVlOwogICB9CiAgIGJvb2wgU2V0U3NsTWF4UHJv
dG9jb2xWZXJzaW9uKHJ0Yzo6U1NMUHJvdG9jb2xWZXJzaW9uIHZlcnNpb24pIG92ZXJyaWRlIHsK
QEAgLTE0OSwxMCArMTUzLDEwIEBAIGNsYXNzIEZha2VEdGxzVHJhbnNwb3J0IDogcHVibGljIER0
bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgICAgKnJvbGUgPSAqZHRsc19yb2xlXzsKICAgICByZXR1
cm4gdHJ1ZTsKICAgfQotICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25z
KCkgY29uc3Qgb3ZlcnJpZGUgeworICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0
b19vcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGUgewogICAgIHJldHVybiBjcnlwdG9fb3B0aW9uc187
CiAgIH0KLSAgdm9pZCBTZXRDcnlwdG9PcHRpb25zKGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYg
Y3J5cHRvX29wdGlvbnMpIHsKKyAgdm9pZCBTZXRDcnlwdG9PcHRpb25zKGNvbnN0IHdlYnJ0Yzo6
Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIHsKICAgICBjcnlwdG9fb3B0aW9uc18gPSBj
cnlwdG9fb3B0aW9uczsKICAgfQogICBib29sIFNldExvY2FsQ2VydGlmaWNhdGUoCkBAIC0xNzgs
OCArMTgyLDEwIEBAIGNsYXNzIEZha2VEdGxzVHJhbnNwb3J0IDogcHVibGljIER0bHNUcmFuc3Bv
cnRJbnRlcm5hbCB7CiAgICAgcmV0dXJuIGxvY2FsX2NlcnRfOwogICB9CiAgIHN0ZDo6dW5pcXVl
X3B0cjxydGM6OlNTTENlcnRDaGFpbj4gR2V0UmVtb3RlU1NMQ2VydENoYWluKCkgY29uc3Qgb3Zl
cnJpZGUgewotICAgIHJldHVybiByZW1vdGVfY2VydF8gPyBhYnNsOjptYWtlX3VuaXF1ZTxydGM6
OlNTTENlcnRDaGFpbj4ocmVtb3RlX2NlcnRfKQotICAgICAgICAgICAgICAgICAgICAgICAgOiBu
dWxscHRyOworICAgIGlmICghcmVtb3RlX2NlcnRfKSB7CisgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPHJ0Yzo6U1NMQ2VydENoYWluPihy
ZW1vdGVfY2VydF8tPkNsb25lKCkpOwogICB9CiAgIGJvb2wgRXhwb3J0S2V5aW5nTWF0ZXJpYWwo
Y29uc3Qgc3RkOjpzdHJpbmcmIGxhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QqIGNvbnRleHQsCkBAIC0yMzIsOSArMjM4LDkgQEAgY2xhc3MgRmFrZUR0bHNU
cmFuc3BvcnQgOiBwdWJsaWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAgdm9pZCBPbkljZVRy
YW5zcG9ydFJlYWRQYWNrZXQoUGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIGljZV8sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGltZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBmbGFncykgewotICAgIFNpZ25hbFJlYWRQYWNrZXQodGhp
cywgZGF0YSwgbGVuLCB0aW1lLCBmbGFncyk7CisgICAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBk
YXRhLCBsZW4sIHBhY2tldF90aW1lX3VzLCBmbGFncyk7CiAgIH0KIAogICB2b2lkIHNldF9yZWNl
aXZpbmcoYm9vbCByZWNlaXZpbmcpIHsKQEAgLTI3Miw3ICsyNzgsNyBAQCBjbGFzcyBGYWtlRHRs
c1RyYW5zcG9ydCA6IHB1YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJuYWwgewogICBydGM6OlNTTEZp
bmdlcnByaW50IGR0bHNfZmluZ2VycHJpbnRfOwogICBhYnNsOjpvcHRpb25hbDxydGM6OlNTTFJv
bGU+IGR0bHNfcm9sZV87CiAgIGludCBjcnlwdG9fc3VpdGVfID0gcnRjOjpTUlRQX0FFUzEyOF9D
TV9TSEExXzgwOwotICBydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnNfOworICB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnNfOwogCiAgIER0bHNUcmFuc3BvcnRTdGF0
ZSBkdGxzX3N0YXRlXyA9IERUTFNfVFJBTlNQT1JUX05FVzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZmFrZWljZXRyYW5z
cG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvZmFrZWljZXRyYW5zcG9ydC5oCmluZGV4IDQ4MTU3NDUxZWE2OWExYjE1MjJkNDE4NjU0ZTAw
N2JiOWFlNDM1ZDAuLjg4YWZjMzgyZWNiYjg1MTkxNTMyOGIzNjkzNmU3NDBjYWNlZTc4NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL2Zha2VpY2V0cmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9mYWtlaWNldHJhbnNwb3J0LmgKQEAgLTIzLDggKzIzLDEz
IEBAIG5hbWVzcGFjZSBjcmlja2V0IHsKIAogY2xhc3MgRmFrZUljZVRyYW5zcG9ydCA6IHB1Ymxp
YyBJY2VUcmFuc3BvcnRJbnRlcm5hbCB7CiAgcHVibGljOgotICBleHBsaWNpdCBGYWtlSWNlVHJh
bnNwb3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBpbnQgY29tcG9uZW50KQotICAgICAgOiBu
YW1lXyhuYW1lKSwgY29tcG9uZW50Xyhjb21wb25lbnQpIHt9CisgIGV4cGxpY2l0IEZha2VJY2VU
cmFuc3BvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGNvbXBvbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRo
cmVhZCogbmV0d29ya190aHJlYWQgPSBudWxscHRyKQorICAgICAgOiBuYW1lXyhuYW1lKSwKKyAg
ICAgICAgY29tcG9uZW50Xyhjb21wb25lbnQpLAorICAgICAgICBuZXR3b3JrX3RocmVhZF8obmV0
d29ya190aHJlYWQgPyBuZXR3b3JrX3RocmVhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBydGM6OlRocmVhZDo6Q3VycmVudCgpKSB7fQogICB+RmFrZUljZVRyYW5z
cG9ydCgpIG92ZXJyaWRlIHsKICAgICBpZiAoZGVzdF8gJiYgZGVzdF8tPmRlc3RfID09IHRoaXMp
IHsKICAgICAgIGRlc3RfLT5kZXN0XyA9IG51bGxwdHI7CkBAIC0xMTQsNiArMTE5LDE5IEBAIGNs
YXNzIEZha2VJY2VUcmFuc3BvcnQgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewogICAg
IHJldHVybiBJY2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfQ09OTkVDVElORzsKICAgfQogCisgIHdl
YnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGUgR2V0SWNlVHJhbnNwb3J0U3RhdGUoKSBjb25zdCBvdmVy
cmlkZSB7CisgICAgaWYgKGNvbm5lY3Rpb25fY291bnRfID09IDApIHsKKyAgICAgIHJldHVybiBo
YWRfY29ubmVjdGlvbl8gPyB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlOjprRmFpbGVkCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6a05l
dzsKKyAgICB9CisKKyAgICBpZiAoY29ubmVjdGlvbl9jb3VudF8gPT0gMSkgeworICAgICAgcmV0
dXJuIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtDb21wbGV0ZWQ7CisgICAgfQorCisgICAg
cmV0dXJuIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtDb25uZWN0ZWQ7CisgIH0KKwogICB2
b2lkIFNldEljZVJvbGUoSWNlUm9sZSByb2xlKSBvdmVycmlkZSB7IHJvbGVfID0gcm9sZTsgfQog
ICBJY2VSb2xlIEdldEljZVJvbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb2xlXzsgfQog
ICB2b2lkIFNldEljZVRpZWJyZWFrZXIodWludDY0X3QgdGllYnJlYWtlcikgb3ZlcnJpZGUgewpA
QCAtMjI2LDYgKzI0NCw4IEBAIGNsYXNzIEZha2VJY2VUcmFuc3BvcnQgOiBwdWJsaWMgSWNlVHJh
bnNwb3J0SW50ZXJuYWwgewogICB9CiAgIHZvaWQgU2V0TmV0d29ya1JvdXRlKGFic2w6Om9wdGlv
bmFsPHJ0Yzo6TmV0d29ya1JvdXRlPiBuZXR3b3JrX3JvdXRlKSB7CiAgICAgbmV0d29ya19yb3V0
ZV8gPSBuZXR3b3JrX3JvdXRlOworICAgIG5ldHdvcmtfdGhyZWFkXy0+SW52b2tlPHZvaWQ+KAor
ICAgICAgICBSVENfRlJPTV9IRVJFLCBbdGhpc10geyBTaWduYWxOZXR3b3JrUm91dGVDaGFuZ2Vk
KG5ldHdvcmtfcm91dGVfKTsgfSk7CiAgIH0KIAogIHByaXZhdGU6CkBAIC0yNTMsNyArMjczLDcg
QEAgY2xhc3MgRmFrZUljZVRyYW5zcG9ydCA6IHB1YmxpYyBJY2VUcmFuc3BvcnRJbnRlcm5hbCB7
CiAgICAgaWYgKGRlc3RfKSB7CiAgICAgICBsYXN0X3NlbnRfcGFja2V0XyA9IHBhY2tldDsKICAg
ICAgIGRlc3RfLT5TaWduYWxSZWFkUGFja2V0KGRlc3RfLCBwYWNrZXQuZGF0YTxjaGFyPigpLCBw
YWNrZXQuc2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpDcmVhdGVQ
YWNrZXRUaW1lKDApLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGlt
ZU1pY3JvcygpLCAwKTsKICAgICB9CiAgIH0KIApAQCAtMjgyLDYgKzMwMiw3IEBAIGNsYXNzIEZh
a2VJY2VUcmFuc3BvcnQgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewogICBhYnNsOjpv
cHRpb25hbDxydGM6Ok5ldHdvcmtSb3V0ZT4gbmV0d29ya19yb3V0ZV87CiAgIHN0ZDo6bWFwPHJ0
Yzo6U29ja2V0OjpPcHRpb24sIGludD4gc29ja2V0X29wdGlvbnNfOwogICBydGM6OkNvcHlPbldy
aXRlQnVmZmVyIGxhc3Rfc2VudF9wYWNrZXRfOworICBydGM6OlRocmVhZCogY29uc3QgbmV0d29y
a190aHJlYWRfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2Zha2VwYWNr
ZXR0cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaAppbmRleCBlNTdiYzE3OWE3OTkxNzE0YzFi
NGI0MzIzYjU3ZjU0NzJkMTlkYjdmLi41MmIzOTIxNWM3NTI0YWMzNDViYzUzOWRjYTA3NWMyMTgy
N2Y4MThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS9mYWtlcGFja2V0dHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZmFrZXBhY2tldHRyYW5zcG9ydC5o
CkBAIC0xMTksNyArMTE5LDcgQEAgY2xhc3MgRmFrZVBhY2tldFRyYW5zcG9ydCA6IHB1YmxpYyBQ
YWNrZXRUcmFuc3BvcnRJbnRlcm5hbCB7CiAgICAgbGFzdF9zZW50X3BhY2tldF8gPSBwYWNrZXQ7
CiAgICAgaWYgKGRlc3RfKSB7CiAgICAgICBkZXN0Xy0+U2lnbmFsUmVhZFBhY2tldChkZXN0Xywg
cGFja2V0LmRhdGE8Y2hhcj4oKSwgcGFja2V0LnNpemUoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENyZWF0ZVBhY2tldFRpbWUoMCksIDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGltZU1pY3JvcygpLCAwKTsKICAgICB9CiAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvaWNlY3JlZGVu
dGlhbHNpdGVyYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QyOTY1
MzQ0MGQ3Y2IyZGE4MGM2ZDVhY2YxMGUzMzljMTIzZWQwZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZWNyZWRl
bnRpYWxzaXRlcmF0b3IuY2MKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAx
OCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKwor
I2luY2x1ZGUgInAycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9oZWxwZXJzLmgiCisKK25hbWVzcGFjZSBjcmlja2V0IHsKKworSWNlQ3JlZGVudGlh
bHNJdGVyYXRvcjo6SWNlQ3JlZGVudGlhbHNJdGVyYXRvcigKKyAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxJY2VQYXJhbWV0ZXJzPiYgcG9vbGVkX2NyZWRlbnRpYWxzKQorICAgIDogcG9vbGVkX2ljZV9j
cmVkZW50aWFsc18ocG9vbGVkX2NyZWRlbnRpYWxzKSB7fQorCitJY2VDcmVkZW50aWFsc0l0ZXJh
dG9yOjp+SWNlQ3JlZGVudGlhbHNJdGVyYXRvcigpID0gZGVmYXVsdDsKKworSWNlUGFyYW1ldGVy
cyBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yOjpDcmVhdGVSYW5kb21JY2VDcmVkZW50aWFscygpIHsK
KyAgcmV0dXJuIEljZVBhcmFtZXRlcnMocnRjOjpDcmVhdGVSYW5kb21TdHJpbmcoSUNFX1VGUkFH
X0xFTkdUSCksCisgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3JlYXRlUmFuZG9tU3RyaW5n
KElDRV9QV0RfTEVOR1RIKSwgZmFsc2UpOworfQorCitJY2VQYXJhbWV0ZXJzIEljZUNyZWRlbnRp
YWxzSXRlcmF0b3I6OkdldEljZUNyZWRlbnRpYWxzKCkgeworICBpZiAocG9vbGVkX2ljZV9jcmVk
ZW50aWFsc18uZW1wdHkoKSkgeworICAgIHJldHVybiBDcmVhdGVSYW5kb21JY2VDcmVkZW50aWFs
cygpOworICB9CisgIEljZVBhcmFtZXRlcnMgY3JlZGVudGlhbHMgPSBwb29sZWRfaWNlX2NyZWRl
bnRpYWxzXy5iYWNrKCk7CisgIHBvb2xlZF9pY2VfY3JlZGVudGlhbHNfLnBvcF9iYWNrKCk7Cisg
IHJldHVybiBjcmVkZW50aWFsczsKK30KKworfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zM2UxZDY0NjBhZTkwNmIzNTY4OTdjNGVkYjhhYzZiOWU5MDRlYzNhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
aWNlY3JlZGVudGlhbHNpdGVyYXRvci5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpZm5kZWYgUDJQX0JBU0VfSUNFQ1JFREVOVElBTFNJVEVSQVRPUl9IXworI2RlZmlu
ZSBQMlBfQkFTRV9JQ0VDUkVERU5USUFMU0lURVJBVE9SX0hfCisKKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJwMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5oIgorCituYW1lc3Bh
Y2UgY3JpY2tldCB7CisKK2NsYXNzIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IgeworIHB1YmxpYzoK
KyAgZXhwbGljaXQgSWNlQ3JlZGVudGlhbHNJdGVyYXRvcihjb25zdCBzdGQ6OnZlY3RvcjxJY2VQ
YXJhbWV0ZXJzPiYpOworICB2aXJ0dWFsIH5JY2VDcmVkZW50aWFsc0l0ZXJhdG9yKCk7CisKKyAg
Ly8gR2V0IG5leHQgcG9vbGVkIGljZSBjcmVkZW50aWFscy4KKyAgLy8gUmV0dXJucyBhIG5ldyBy
YW5kb20gY3JlZGVudGlhbCBpZiB0aGUgcG9vbCBpcyBlbXB0eS4KKyAgSWNlUGFyYW1ldGVycyBH
ZXRJY2VDcmVkZW50aWFscygpOworCisgIHN0YXRpYyBJY2VQYXJhbWV0ZXJzIENyZWF0ZVJhbmRv
bUljZUNyZWRlbnRpYWxzKCk7CisKKyBwcml2YXRlOgorICBzdGQ6OnZlY3RvcjxJY2VQYXJhbWV0
ZXJzPiBwb29sZWRfaWNlX2NyZWRlbnRpYWxzXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBjcmlj
a2V0CisKKyNlbmRpZiAgLy8gUDJQX0JBU0VfSUNFQ1JFREVOVElBTFNJVEVSQVRPUl9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3Jf
dW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBmYWNmYmI4OGQxZWZjOWNlNjM5Yjg5ZDcwMTZiYTUz
ZDRkNDlhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3JfdW5pdHRlc3QuY2MK
QEAgLTAsMCArMSw0OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAicDJwL2Jh
c2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0Lmgi
CisKK3VzaW5nIGNyaWNrZXQ6OkljZVBhcmFtZXRlcnM7Cit1c2luZyBjcmlja2V0OjpJY2VDcmVk
ZW50aWFsc0l0ZXJhdG9yOworCitURVNUKEljZUNyZWRlbnRpYWxzSXRlcmF0b3JUZXN0LCBHZXRF
bXB0eSkgeworICBzdGQ6OnZlY3RvcjxJY2VQYXJhbWV0ZXJzPiBlbXB0eTsKKyAgSWNlQ3JlZGVu
dGlhbHNJdGVyYXRvciBpdGVyYXRvcihlbXB0eSk7CisgIC8vIFZlcmlmeSB0aGF0IHdlIGNhbiBn
ZXQgY3JlZGVudGlhbHMgZXZlbiBpZiBpbnB1dCBpcyBlbXB0eS4KKyAgSWNlUGFyYW1ldGVycyBj
cmVkZW50aWFsczEgPSBpdGVyYXRvci5HZXRJY2VDcmVkZW50aWFscygpOworfQorCitURVNUKElj
ZUNyZWRlbnRpYWxzSXRlcmF0b3JUZXN0LCBHZXRPbmUpIHsKKyAgc3RkOjp2ZWN0b3I8SWNlUGFy
YW1ldGVycz4gb25lID0geworICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvcjo6Q3JlYXRlUmFu
ZG9tSWNlQ3JlZGVudGlhbHMoKX07CisgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IgaXRlcmF0b3Io
b25lKTsKKyAgRVhQRUNUX0VRKGl0ZXJhdG9yLkdldEljZUNyZWRlbnRpYWxzKCksIG9uZVswXSk7
CisgIGF1dG8gcmFuZG9tID0gaXRlcmF0b3IuR2V0SWNlQ3JlZGVudGlhbHMoKTsKKyAgRVhQRUNU
X05FKHJhbmRvbSwgb25lWzBdKTsKKyAgRVhQRUNUX05FKHJhbmRvbSwgaXRlcmF0b3IuR2V0SWNl
Q3JlZGVudGlhbHMoKSk7Cit9CisKK1RFU1QoSWNlQ3JlZGVudGlhbHNJdGVyYXRvclRlc3QsIEdl
dFR3bykgeworICBzdGQ6OnZlY3RvcjxJY2VQYXJhbWV0ZXJzPiB0d28gPSB7CisgICAgICBJY2VD
cmVkZW50aWFsc0l0ZXJhdG9yOjpDcmVhdGVSYW5kb21JY2VDcmVkZW50aWFscygpLAorICAgICAg
SWNlQ3JlZGVudGlhbHNJdGVyYXRvcjo6Q3JlYXRlUmFuZG9tSWNlQ3JlZGVudGlhbHMoKX07Cisg
IEljZUNyZWRlbnRpYWxzSXRlcmF0b3IgaXRlcmF0b3IodHdvKTsKKyAgRVhQRUNUX0VRKGl0ZXJh
dG9yLkdldEljZUNyZWRlbnRpYWxzKCksIHR3b1sxXSk7CisgIEVYUEVDVF9FUShpdGVyYXRvci5H
ZXRJY2VDcmVkZW50aWFscygpLCB0d29bMF0pOworICBhdXRvIHJhbmRvbSA9IGl0ZXJhdG9yLkdl
dEljZUNyZWRlbnRpYWxzKCk7CisgIEVYUEVDVF9ORShyYW5kb20sIHR3b1swXSk7CisgIEVYUEVD
VF9ORShyYW5kb20sIHR3b1sxXSk7CisgIEVYUEVDVF9ORShyYW5kb20sIGl0ZXJhdG9yLkdldElj
ZUNyZWRlbnRpYWxzKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvaWNldHJhbnNwb3J0aW50ZXJuYWwuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZXRyYW5zcG9y
dGludGVybmFsLmgKaW5kZXggNzQ4M2MzYmFiYzJlMjFlY2MyZDM5NzYyOGRiNjQ0MWZhMDczYTQy
Yi4uMDk5Y2VhNzBlOGY4OTA4MzdkOWI0MjBmMDg5YmI4NmM2OTFiODIwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvaWNldHJh
bnNwb3J0aW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9pY2V0cmFuc3BvcnRpbnRlcm5hbC5oCkBAIC0xNSwxMSArMTUsMTIg
QEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvY2FuZGlkYXRlLmgiCisjaW5j
bHVkZSAiYXBpL3RyYW5zcG9ydC9lbnVtcy5oIgogI2luY2x1ZGUgInAycC9iYXNlL2NhbmRpZGF0
ZXBhaXJpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wYWNrZXR0cmFuc3BvcnRpbnRl
cm5hbC5oIgogI2luY2x1ZGUgInAycC9iYXNlL3BvcnQuaCIKICNpbmNsdWRlICJwMnAvYmFzZS90
cmFuc3BvcnRkZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSBj
cmlja2V0IHsKIApAQCAtMTgxLDE0ICsxODIsMTcgQEAgZW51bSBJY2VQcm90b2NvbFR5cGUgewog
CiAvLyBJY2VUcmFuc3BvcnRJbnRlcm5hbCBpcyBhbiBpbnRlcm5hbCBhYnN0cmFjdCBjbGFzcyB0
aGF0IGRvZXMgSUNFLgogLy8gT25jZSB0aGUgcHVibGljIGludGVyZmFjZSBpcyBzdXBwb3J0ZWQs
Ci0vLyAoaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8jcnRjaWNldHJhbnNwb3J0LWludGVy
ZmFjZSkKKy8vIChodHRwczovL3d3dy53My5vcmcvVFIvd2VicnRjLyNydGNpY2V0cmFuc3BvcnQp
CiAvLyB0aGUgSWNlVHJhbnNwb3J0SW50ZXJmYWNlIHdpbGwgYmUgc3BsaXQgZnJvbSB0aGlzIGNs
YXNzLgotY2xhc3MgSWNlVHJhbnNwb3J0SW50ZXJuYWwgOiBwdWJsaWMgcnRjOjpQYWNrZXRUcmFu
c3BvcnRJbnRlcm5hbCB7CitjbGFzcyBSVENfRVhQT1JUIEljZVRyYW5zcG9ydEludGVybmFsIDog
cHVibGljIHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwgewogIHB1YmxpYzoKICAgSWNlVHJh
bnNwb3J0SW50ZXJuYWwoKTsKICAgfkljZVRyYW5zcG9ydEludGVybmFsKCkgb3ZlcnJpZGU7CiAK
KyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTMwOCk6IFJlbW92ZSBHZXRTdGF0ZSBvbmNlIGFs
bCB1c2VzIGhhdmUgYmVlbgorICAvLyBtaWdyYXRlZCB0byBHZXRJY2VUcmFuc3BvcnRTdGF0ZS4K
ICAgdmlydHVhbCBJY2VUcmFuc3BvcnRTdGF0ZSBHZXRTdGF0ZSgpIGNvbnN0ID0gMDsKKyAgdmly
dHVhbCB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlIEdldEljZVRyYW5zcG9ydFN0YXRlKCkgY29u
c3QgPSAwOwogCiAgIHZpcnR1YWwgaW50IGNvbXBvbmVudCgpIGNvbnN0ID0gMDsKIApAQCAtMjU4
LDggKzI2MiwxMyBAQCBjbGFzcyBJY2VUcmFuc3BvcnRJbnRlcm5hbCA6IHB1YmxpYyBydGM6OlBh
Y2tldFRyYW5zcG9ydEludGVybmFsIHsKICAgc2lnc2xvdDo6c2lnbmFsMTxJY2VUcmFuc3BvcnRJ
bnRlcm5hbCo+IFNpZ25hbFJvbGVDb25mbGljdDsKIAogICAvLyBFbWl0dGVkIHdoZW5ldmVyIHRo
ZSB0cmFuc3BvcnQgc3RhdGUgY2hhbmdlZC4KKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTMw
OCk6IFJlbW92ZSBvbmNlIGFsbCB1c2VzIGhhdmUgbWlncmF0ZWQgdG8gdGhlIG5ldworICAvLyBJ
Y2VUcmFuc3BvcnRTdGF0ZS4KICAgc2lnc2xvdDo6c2lnbmFsMTxJY2VUcmFuc3BvcnRJbnRlcm5h
bCo+IFNpZ25hbFN0YXRlQ2hhbmdlZDsKIAorICAvLyBFbWl0dGVkIHdoZW5ldmVyIHRoZSBuZXcg
c3RhbmRhcmRzLWNvbXBsaWFudCB0cmFuc3BvcnQgc3RhdGUgY2hhbmdlZC4KKyAgc2lnc2xvdDo6
c2lnbmFsMTxJY2VUcmFuc3BvcnRJbnRlcm5hbCo+IFNpZ25hbEljZVRyYW5zcG9ydFN0YXRlQ2hh
bmdlZDsKKwogICAvLyBJbnZva2VkIHdoZW4gdGhlIHRyYW5zcG9ydCBpcyBiZWluZyBkZXN0cm95
ZWQuCiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8SWNlVHJhbnNwb3J0SW50ZXJuYWwqPiBTaWduYWxEZXN0
cm95ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvbWRuc19tZXNzYWdlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvbWRuc19tZXNzYWdlLmNjCmluZGV4IDYxYWY2
ZjM5ZjI5Yzg5OGUzYzJhMGRiMjFhYzUwOTdjNzM4MWM2MGIuLmYxNGEwZDExN2UzNWVhMzljMjIx
ZWUxZmZmMGNmNzgyM2Q5OTRmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZS5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2Uu
Y2MKQEAgLTE5LDEzICsxOSwxMyBAQCBuYW1lc3BhY2UgewogLy8gUkZDIDEwMzUsIFNlY3Rpb24g
NC4xLjEuCiAvLwogLy8gUVIgYml0LgotY29uc3RleHByIHVpbnQxNl90IGtNRG5zRmxhZ01hc2tR
dWVyeU9yUmVzcG9uc2UgPSAweDgwMDA7Citjb25zdGV4cHIgdWludDE2X3Qga01kbnNGbGFnTWFz
a1F1ZXJ5T3JSZXNwb25zZSA9IDB4ODAwMDsKIC8vIEFBIGJpdC4KLWNvbnN0ZXhwciB1aW50MTZf
dCBrTURuc0ZsYWdNYXNrQXV0aG9yaXRhdGl2ZSA9IDB4MDQwMDsKK2NvbnN0ZXhwciB1aW50MTZf
dCBrTWRuc0ZsYWdNYXNrQXV0aG9yaXRhdGl2ZSA9IDB4MDQwMDsKIC8vIFJGQyAxMDM1LCBTZWN0
aW9uIDQuMS4yLCBRQ0xBU1MgYW5kIFJGQyA2NzYyLCBTZWN0aW9uIDE4LjEyLCByZXB1cnBvc2lu
ZyBvZgogLy8gdG9wIGJpdCBvZiBRQ0xBU1MgYXMgdGhlIHVuaWNhc3QgcmVzcG9uc2UgYml0Lgot
Y29uc3RleHByIHVpbnQxNl90IGtNRG5zUUNsYXNzTWFza1VuaWNhc3RSZXNwb25zZSA9IDB4ODAw
MDsKLWNvbnN0ZXhwciBzaXplX3Qga01EbnNIZWFkZXJTaXplQnl0ZXMgPSAxMjsKK2NvbnN0ZXhw
ciB1aW50MTZfdCBrTWRuc1FDbGFzc01hc2tVbmljYXN0UmVzcG9uc2UgPSAweDgwMDA7Citjb25z
dGV4cHIgc2l6ZV90IGtNZG5zSGVhZGVyU2l6ZUJ5dGVzID0gMTI7CiAKIGJvb2wgUmVhZERvbWFp
bk5hbWUoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmLCBzdGQ6OnN0cmluZyogbmFtZSkgewogICBz
aXplX3QgbmFtZV9zdGFydF9wb3MgPSBidWYtPkN1cnJlbnRPZmZzZXQoKTsKQEAgLTY0LDcgKzY0
LDcgQEAgYm9vbCBSZWFkRG9tYWluTmFtZShNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYsIHN0ZDo6
c3RyaW5nKiBuYW1lKSB7CiAgICAgLy8gQSBsZWdpdGltYXRlIHBvaW50ZXIgb25seSByZWZlcnMg
dG8gYSBwcmlvciBvY2N1cnJlbmNlIG9mIHRoZSBzYW1lIG5hbWUsCiAgICAgLy8gYW5kIHdlIHNo
b3VsZCBvbmx5IG1vdmUgc3RyaWN0bHkgYmFja3dhcmQgdG8gYSBwcmlvciBuYW1lIGZpZWxkIGFm
dGVyIHRoZQogICAgIC8vIGhlYWRlci4KLSAgICBpZiAocG9zX2p1bXBfdG8gPj0gbmFtZV9zdGFy
dF9wb3MgfHwgcG9zX2p1bXBfdG8gPCBrTURuc0hlYWRlclNpemVCeXRlcykgeworICAgIGlmIChw
b3NfanVtcF90byA+PSBuYW1lX3N0YXJ0X3BvcyB8fCBwb3NfanVtcF90byA8IGtNZG5zSGVhZGVy
U2l6ZUJ5dGVzKSB7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIE1lc3NhZ2VCdWZm
ZXJSZWFkZXIgbmV3X2J1ZihidWYtPk1lc3NhZ2VEYXRhKCksIGJ1Zi0+TWVzc2FnZUxlbmd0aCgp
KTsKQEAgLTg4LDI3ICs4OCwyNyBAQCB2b2lkIFdyaXRlRG9tYWluTmFtZShydGM6OkJ5dGVCdWZm
ZXJXcml0ZXIqIGJ1ZiwgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIHsKIAogfSAgLy8gbmFtZXNw
YWNlCiAKLXZvaWQgTURuc0hlYWRlcjo6U2V0UXVlcnlPclJlc3BvbnNlKGJvb2wgaXNfcXVlcnkp
IHsKK3ZvaWQgTWRuc0hlYWRlcjo6U2V0UXVlcnlPclJlc3BvbnNlKGJvb2wgaXNfcXVlcnkpIHsK
ICAgaWYgKGlzX3F1ZXJ5KSB7Ci0gICAgZmxhZ3MgJj0gfmtNRG5zRmxhZ01hc2tRdWVyeU9yUmVz
cG9uc2U7CisgICAgZmxhZ3MgJj0gfmtNZG5zRmxhZ01hc2tRdWVyeU9yUmVzcG9uc2U7CiAgIH0g
ZWxzZSB7Ci0gICAgZmxhZ3MgfD0ga01EbnNGbGFnTWFza1F1ZXJ5T3JSZXNwb25zZTsKKyAgICBm
bGFncyB8PSBrTWRuc0ZsYWdNYXNrUXVlcnlPclJlc3BvbnNlOwogICB9CiB9CiAKLXZvaWQgTURu
c0hlYWRlcjo6U2V0QXV0aG9yaXRhdGl2ZShib29sIGlzX2F1dGhvcml0YXRpdmUpIHsKK3ZvaWQg
TWRuc0hlYWRlcjo6U2V0QXV0aG9yaXRhdGl2ZShib29sIGlzX2F1dGhvcml0YXRpdmUpIHsKICAg
aWYgKGlzX2F1dGhvcml0YXRpdmUpIHsKLSAgICBmbGFncyB8PSBrTURuc0ZsYWdNYXNrQXV0aG9y
aXRhdGl2ZTsKKyAgICBmbGFncyB8PSBrTWRuc0ZsYWdNYXNrQXV0aG9yaXRhdGl2ZTsKICAgfSBl
bHNlIHsKLSAgICBmbGFncyAmPSB+a01EbnNGbGFnTWFza0F1dGhvcml0YXRpdmU7CisgICAgZmxh
Z3MgJj0gfmtNZG5zRmxhZ01hc2tBdXRob3JpdGF0aXZlOwogICB9CiB9CiAKLWJvb2wgTURuc0hl
YWRlcjo6SXNBdXRob3JpdGF0aXZlKCkgY29uc3QgewotICByZXR1cm4gZmxhZ3MgJiBrTURuc0Zs
YWdNYXNrQXV0aG9yaXRhdGl2ZTsKK2Jvb2wgTWRuc0hlYWRlcjo6SXNBdXRob3JpdGF0aXZlKCkg
Y29uc3QgeworICByZXR1cm4gZmxhZ3MgJiBrTWRuc0ZsYWdNYXNrQXV0aG9yaXRhdGl2ZTsKIH0K
IAotYm9vbCBNRG5zSGVhZGVyOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgeworYm9v
bCBNZG5zSGVhZGVyOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgewogICBpZiAoIWJ1
Zi0+UmVhZFVJbnQxNigmaWQpIHx8ICFidWYtPlJlYWRVSW50MTYoJmZsYWdzKSB8fAogICAgICAg
IWJ1Zi0+UmVhZFVJbnQxNigmcWRjb3VudCkgfHwgIWJ1Zi0+UmVhZFVJbnQxNigmYW5jb3VudCkg
fHwKICAgICAgICFidWYtPlJlYWRVSW50MTYoJm5zY291bnQpIHx8ICFidWYtPlJlYWRVSW50MTYo
JmFyY291bnQpKSB7CkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBNRG5zSGVhZGVyOjpSZWFkKE1l
c3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgewogICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBNRG5z
SGVhZGVyOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3Qgewordm9pZCBN
ZG5zSGVhZGVyOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3QgewogICBi
dWYtPldyaXRlVUludDE2KGlkKTsKICAgYnVmLT5Xcml0ZVVJbnQxNihmbGFncyk7CiAgIGJ1Zi0+
V3JpdGVVSW50MTYocWRjb3VudCk7CkBAIC0xMjcsMTUgKzEyNywxNSBAQCB2b2lkIE1EbnNIZWFk
ZXI6OldyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7CiAgIGJ1Zi0+V3Jp
dGVVSW50MTYoYXJjb3VudCk7CiB9CiAKLWJvb2wgTURuc0hlYWRlcjo6SXNRdWVyeSgpIGNvbnN0
IHsKLSAgcmV0dXJuICEoZmxhZ3MgJiBrTURuc0ZsYWdNYXNrUXVlcnlPclJlc3BvbnNlKTsKK2Jv
b2wgTWRuc0hlYWRlcjo6SXNRdWVyeSgpIGNvbnN0IHsKKyAgcmV0dXJuICEoZmxhZ3MgJiBrTWRu
c0ZsYWdNYXNrUXVlcnlPclJlc3BvbnNlKTsKIH0KIAotTURuc1NlY3Rpb25FbnRyeTo6TURuc1Nl
Y3Rpb25FbnRyeSgpID0gZGVmYXVsdDsKLU1EbnNTZWN0aW9uRW50cnk6On5NRG5zU2VjdGlvbkVu
dHJ5KCkgPSBkZWZhdWx0OwotTURuc1NlY3Rpb25FbnRyeTo6TURuc1NlY3Rpb25FbnRyeShjb25z
dCBNRG5zU2VjdGlvbkVudHJ5JiBvdGhlcikgPSBkZWZhdWx0OworTWRuc1NlY3Rpb25FbnRyeTo6
TWRuc1NlY3Rpb25FbnRyeSgpID0gZGVmYXVsdDsKK01kbnNTZWN0aW9uRW50cnk6On5NZG5zU2Vj
dGlvbkVudHJ5KCkgPSBkZWZhdWx0OworTWRuc1NlY3Rpb25FbnRyeTo6TWRuc1NlY3Rpb25FbnRy
eShjb25zdCBNZG5zU2VjdGlvbkVudHJ5JiBvdGhlcikgPSBkZWZhdWx0OwogCi12b2lkIE1EbnNT
ZWN0aW9uRW50cnk6OlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZSB0eXBlKSB7Cit2b2lkIE1kbnNT
ZWN0aW9uRW50cnk6OlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZSB0eXBlKSB7CiAgIHN3aXRjaCAo
dHlwZSkgewogICAgIGNhc2UgU2VjdGlvbkVudHJ5VHlwZTo6a0E6CiAgICAgICB0eXBlXyA9IDE7
CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBNRG5zU2VjdGlvbkVudHJ5OjpTZXRUeXBlKFNlY3Rp
b25FbnRyeVR5cGUgdHlwZSkgewogICB9CiB9CiAKLVNlY3Rpb25FbnRyeVR5cGUgTURuc1NlY3Rp
b25FbnRyeTo6R2V0VHlwZSgpIGNvbnN0IHsKK1NlY3Rpb25FbnRyeVR5cGUgTWRuc1NlY3Rpb25F
bnRyeTo6R2V0VHlwZSgpIGNvbnN0IHsKICAgc3dpdGNoICh0eXBlXykgewogICAgIGNhc2UgMToK
ICAgICAgIHJldHVybiBTZWN0aW9uRW50cnlUeXBlOjprQTsKQEAgLTE1OSw3ICsxNTksNyBAQCBT
ZWN0aW9uRW50cnlUeXBlIE1EbnNTZWN0aW9uRW50cnk6OkdldFR5cGUoKSBjb25zdCB7CiAgIH0K
IH0KIAotdm9pZCBNRG5zU2VjdGlvbkVudHJ5OjpTZXRDbGFzcyhTZWN0aW9uRW50cnlDbGFzcyBj
bHMpIHsKK3ZvaWQgTWRuc1NlY3Rpb25FbnRyeTo6U2V0Q2xhc3MoU2VjdGlvbkVudHJ5Q2xhc3Mg
Y2xzKSB7CiAgIHN3aXRjaCAoY2xzKSB7CiAgICAgY2FzZSBTZWN0aW9uRW50cnlDbGFzczo6a0lO
OgogICAgICAgY2xhc3NfID0gMTsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIE1EbnNTZWN0aW9u
RW50cnk6OlNldENsYXNzKFNlY3Rpb25FbnRyeUNsYXNzIGNscykgewogICB9CiB9CiAKLVNlY3Rp
b25FbnRyeUNsYXNzIE1EbnNTZWN0aW9uRW50cnk6OkdldENsYXNzKCkgY29uc3QgeworU2VjdGlv
bkVudHJ5Q2xhc3MgTWRuc1NlY3Rpb25FbnRyeTo6R2V0Q2xhc3MoKSBjb25zdCB7CiAgIHN3aXRj
aCAoY2xhc3NfKSB7CiAgICAgY2FzZSAxOgogICAgICAgcmV0dXJuIFNlY3Rpb25FbnRyeUNsYXNz
OjprSU47CkBAIC0xNzgsMTEgKzE3OCwxMSBAQCBTZWN0aW9uRW50cnlDbGFzcyBNRG5zU2VjdGlv
bkVudHJ5OjpHZXRDbGFzcygpIGNvbnN0IHsKICAgfQogfQogCi1NRG5zUXVlc3Rpb246Ok1EbnNR
dWVzdGlvbigpID0gZGVmYXVsdDsKLU1EbnNRdWVzdGlvbjo6TURuc1F1ZXN0aW9uKGNvbnN0IE1E
bnNRdWVzdGlvbiYgb3RoZXIpID0gZGVmYXVsdDsKLU1EbnNRdWVzdGlvbjo6fk1EbnNRdWVzdGlv
bigpID0gZGVmYXVsdDsKK01kbnNRdWVzdGlvbjo6TWRuc1F1ZXN0aW9uKCkgPSBkZWZhdWx0Owor
TWRuc1F1ZXN0aW9uOjpNZG5zUXVlc3Rpb24oY29uc3QgTWRuc1F1ZXN0aW9uJiBvdGhlcikgPSBk
ZWZhdWx0OworTWRuc1F1ZXN0aW9uOjp+TWRuc1F1ZXN0aW9uKCkgPSBkZWZhdWx0OwogCi1ib29s
IE1EbnNRdWVzdGlvbjo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKK2Jvb2wgTWRu
c1F1ZXN0aW9uOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgewogICBpZiAoIVJlYWRE
b21haW5OYW1lKGJ1ZiwgJm5hbWVfKSkgewogICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJJbnZh
bGlkIG5hbWUuIjsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTQsMzEgKzE5NCwzMSBAQCBib29s
IE1EbnNRdWVzdGlvbjo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgTURuc1F1ZXN0aW9uOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0
ZXIqIGJ1ZikgY29uc3QgeworYm9vbCBNZG5zUXVlc3Rpb246OldyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZl
cldyaXRlciogYnVmKSBjb25zdCB7CiAgIFdyaXRlRG9tYWluTmFtZShidWYsIG5hbWVfKTsKICAg
YnVmLT5Xcml0ZVVJbnQxNih0eXBlXyk7CiAgIGJ1Zi0+V3JpdGVVSW50MTYoY2xhc3NfKTsKICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTURuc1F1ZXN0aW9uOjpTZXRVbmljYXN0UmVzcG9uc2Uo
Ym9vbCBzaG91bGRfdW5pY2FzdCkgewordm9pZCBNZG5zUXVlc3Rpb246OlNldFVuaWNhc3RSZXNw
b25zZShib29sIHNob3VsZF91bmljYXN0KSB7CiAgIGlmIChzaG91bGRfdW5pY2FzdCkgewotICAg
IGNsYXNzXyB8PSBrTURuc1FDbGFzc01hc2tVbmljYXN0UmVzcG9uc2U7CisgICAgY2xhc3NfIHw9
IGtNZG5zUUNsYXNzTWFza1VuaWNhc3RSZXNwb25zZTsKICAgfSBlbHNlIHsKLSAgICBjbGFzc18g
Jj0gfmtNRG5zUUNsYXNzTWFza1VuaWNhc3RSZXNwb25zZTsKKyAgICBjbGFzc18gJj0gfmtNZG5z
UUNsYXNzTWFza1VuaWNhc3RSZXNwb25zZTsKICAgfQogfQogCi1ib29sIE1EbnNRdWVzdGlvbjo6
U2hvdWxkVW5pY2FzdFJlc3BvbnNlKCkgY29uc3QgewotICByZXR1cm4gY2xhc3NfICYga01EbnNR
Q2xhc3NNYXNrVW5pY2FzdFJlc3BvbnNlOworYm9vbCBNZG5zUXVlc3Rpb246OlNob3VsZFVuaWNh
c3RSZXNwb25zZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGNsYXNzXyAmIGtNZG5zUUNsYXNzTWFza1Vu
aWNhc3RSZXNwb25zZTsKIH0KIAotTURuc1Jlc291cmNlUmVjb3JkOjpNRG5zUmVzb3VyY2VSZWNv
cmQoKSA9IGRlZmF1bHQ7Ci1NRG5zUmVzb3VyY2VSZWNvcmQ6Ok1EbnNSZXNvdXJjZVJlY29yZChj
b25zdCBNRG5zUmVzb3VyY2VSZWNvcmQmIG90aGVyKSA9CitNZG5zUmVzb3VyY2VSZWNvcmQ6Ok1k
bnNSZXNvdXJjZVJlY29yZCgpID0gZGVmYXVsdDsKK01kbnNSZXNvdXJjZVJlY29yZDo6TWRuc1Jl
c291cmNlUmVjb3JkKGNvbnN0IE1kbnNSZXNvdXJjZVJlY29yZCYgb3RoZXIpID0KICAgICBkZWZh
dWx0OwotTURuc1Jlc291cmNlUmVjb3JkOjp+TURuc1Jlc291cmNlUmVjb3JkKCkgPSBkZWZhdWx0
OworTWRuc1Jlc291cmNlUmVjb3JkOjp+TWRuc1Jlc291cmNlUmVjb3JkKCkgPSBkZWZhdWx0Owog
Ci1ib29sIE1EbnNSZXNvdXJjZVJlY29yZDo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYp
IHsKK2Jvb2wgTWRuc1Jlc291cmNlUmVjb3JkOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1
ZikgewogICBpZiAoIVJlYWREb21haW5OYW1lKGJ1ZiwgJm5hbWVfKSkgewogICAgIHJldHVybiBm
YWxzZTsKICAgfQpAQCAtMjM5LDE3ICsyMzksMTcgQEAgYm9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6
OlJlYWQoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7CiAgIH0KICAgcmV0dXJuIGZhbHNlOwog
fQotYm9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6OlJlYWRBUkRhdGEoTWVzc2FnZUJ1ZmZlclJlYWRl
ciogYnVmKSB7Citib29sIE1kbnNSZXNvdXJjZVJlY29yZDo6UmVhZEFSRGF0YShNZXNzYWdlQnVm
ZmVyUmVhZGVyKiBidWYpIHsKICAgLy8gQSBSREFUQSBjb250YWlucyBhIDMyLWJpdCBJUHY0IGFk
ZHJlc3MuCiAgIHJldHVybiBidWYtPlJlYWRTdHJpbmcoJnJkYXRhXywgNCk7CiB9CiAKLWJvb2wg
TURuc1Jlc291cmNlUmVjb3JkOjpSZWFkUXVhZEFSRGF0YShNZXNzYWdlQnVmZmVyUmVhZGVyKiBi
dWYpIHsKK2Jvb2wgTWRuc1Jlc291cmNlUmVjb3JkOjpSZWFkUXVhZEFSRGF0YShNZXNzYWdlQnVm
ZmVyUmVhZGVyKiBidWYpIHsKICAgLy8gQUFBQSBSREFUQSBjb250YWlucyBhIDEyOC1iaXQgSVB2
NiBhZGRyZXNzLgogICByZXR1cm4gYnVmLT5SZWFkU3RyaW5nKCZyZGF0YV8sIDE2KTsKIH0KIAot
Ym9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6OldyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVm
KSBjb25zdCB7Citib29sIE1kbnNSZXNvdXJjZVJlY29yZDo6V3JpdGUocnRjOjpCeXRlQnVmZmVy
V3JpdGVyKiBidWYpIGNvbnN0IHsKICAgV3JpdGVEb21haW5OYW1lKGJ1ZiwgbmFtZV8pOwogICBi
dWYtPldyaXRlVUludDE2KHR5cGVfKTsKICAgYnVmLT5Xcml0ZVVJbnQxNihjbGFzc18pOwpAQCAt
MjcwLDE1ICsyNzAsMTUgQEAgYm9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6OldyaXRlKHJ0Yzo6Qnl0
ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7CiAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE1E
bnNSZXNvdXJjZVJlY29yZDo6V3JpdGVBUkRhdGEocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYp
IGNvbnN0IHsKK3ZvaWQgTWRuc1Jlc291cmNlUmVjb3JkOjpXcml0ZUFSRGF0YShydGM6OkJ5dGVC
dWZmZXJXcml0ZXIqIGJ1ZikgY29uc3QgewogICBidWYtPldyaXRlU3RyaW5nKHJkYXRhXyk7CiB9
CiAKLXZvaWQgTURuc1Jlc291cmNlUmVjb3JkOjpXcml0ZVF1YWRBUkRhdGEocnRjOjpCeXRlQnVm
ZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKK3ZvaWQgTWRuc1Jlc291cmNlUmVjb3JkOjpXcml0ZVF1
YWRBUkRhdGEocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKICAgYnVmLT5Xcml0
ZVN0cmluZyhyZGF0YV8pOwogfQogCi1ib29sIE1EbnNSZXNvdXJjZVJlY29yZDo6U2V0SVBBZGRy
ZXNzSW5SZWNvcmREYXRhKAorYm9vbCBNZG5zUmVzb3VyY2VSZWNvcmQ6OlNldElQQWRkcmVzc0lu
UmVjb3JkRGF0YSgKICAgICBjb25zdCBydGM6OklQQWRkcmVzcyYgYWRkcmVzcykgewogICBpbnQg
YWYgPSBhZGRyZXNzLmZhbWlseSgpOwogICBpZiAoYWYgIT0gQUZfSU5FVCAmJiBhZiAhPSBBRl9J
TkVUNikgewpAQCAtMjkzLDcgKzI5Myw3IEBAIGJvb2wgTURuc1Jlc291cmNlUmVjb3JkOjpTZXRJ
UEFkZHJlc3NJblJlY29yZERhdGEoCiAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1EbnNSZXNv
dXJjZVJlY29yZDo6R2V0SVBBZGRyZXNzRnJvbVJlY29yZERhdGEoCitib29sIE1kbnNSZXNvdXJj
ZVJlY29yZDo6R2V0SVBBZGRyZXNzRnJvbVJlY29yZERhdGEoCiAgICAgcnRjOjpJUEFkZHJlc3Mq
IGFkZHJlc3MpIGNvbnN0IHsKICAgaWYgKEdldFR5cGUoKSAhPSBTZWN0aW9uRW50cnlUeXBlOjpr
QSAmJgogICAgICAgR2V0VHlwZSgpICE9IFNlY3Rpb25FbnRyeVR5cGU6OmtBQUFBKSB7CkBAIC0z
MTAsMTYgKzMxMCwxNiBAQCBib29sIE1EbnNSZXNvdXJjZVJlY29yZDo6R2V0SVBBZGRyZXNzRnJv
bVJlY29yZERhdGEoCiAgIHJldHVybiBydGM6OklQRnJvbVN0cmluZyhzdGQ6OnN0cmluZyhvdXQp
LCBhZGRyZXNzKTsKIH0KIAotTURuc01lc3NhZ2U6Ok1EbnNNZXNzYWdlKCkgPSBkZWZhdWx0Owot
TURuc01lc3NhZ2U6On5NRG5zTWVzc2FnZSgpID0gZGVmYXVsdDsKK01kbnNNZXNzYWdlOjpNZG5z
TWVzc2FnZSgpID0gZGVmYXVsdDsKK01kbnNNZXNzYWdlOjp+TWRuc01lc3NhZ2UoKSA9IGRlZmF1
bHQ7CiAKLWJvb2wgTURuc01lc3NhZ2U6OlJlYWQoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7
Citib29sIE1kbnNNZXNzYWdlOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgewogICBS
VENfRENIRUNLX0VRKDB1LCBidWYtPkN1cnJlbnRPZmZzZXQoKSk7CiAgIGlmICghaGVhZGVyXy5S
ZWFkKGJ1ZikpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAotICBhdXRvIHJlYWRfcXVlc3Rp
b24gPSBbJmJ1Zl0oc3RkOjp2ZWN0b3I8TURuc1F1ZXN0aW9uPiogc2VjdGlvbiwKKyAgYXV0byBy
ZWFkX3F1ZXN0aW9uID0gWyZidWZdKHN0ZDo6dmVjdG9yPE1kbnNRdWVzdGlvbj4qIHNlY3Rpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBjb3VudCkgewogICAgIHNl
Y3Rpb24tPnJlc2l6ZShjb3VudCk7CiAgICAgZm9yIChhdXRvJiBxdWVzdGlvbiA6ICgqc2VjdGlv
bikpIHsKQEAgLTMyOSw3ICszMjksNyBAQCBib29sIE1EbnNNZXNzYWdlOjpSZWFkKE1lc3NhZ2VC
dWZmZXJSZWFkZXIqIGJ1ZikgewogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKICAgfTsKLSAgYXV0
byByZWFkX3JyID0gWyZidWZdKHN0ZDo6dmVjdG9yPE1EbnNSZXNvdXJjZVJlY29yZD4qIHNlY3Rp
b24sCisgIGF1dG8gcmVhZF9yciA9IFsmYnVmXShzdGQ6OnZlY3RvcjxNZG5zUmVzb3VyY2VSZWNv
cmQ+KiBzZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgY291bnQpIHsK
ICAgICBzZWN0aW9uLT5yZXNpemUoY291bnQpOwogICAgIGZvciAoYXV0byYgcnIgOiAoKnNlY3Rp
b24pKSB7CkBAIC0zNDksMTAgKzM0OSwxMCBAQCBib29sIE1EbnNNZXNzYWdlOjpSZWFkKE1lc3Nh
Z2VCdWZmZXJSZWFkZXIqIGJ1ZikgewogICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNRG5zTWVz
c2FnZTo6V3JpdGUocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKK2Jvb2wgTWRu
c01lc3NhZ2U6OldyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7CiAgIGhl
YWRlcl8uV3JpdGUoYnVmKTsKIAotICBhdXRvIHdyaXRlX3JyID0gWyZidWZdKGNvbnN0IHN0ZDo6
dmVjdG9yPE1EbnNSZXNvdXJjZVJlY29yZD4mIHNlY3Rpb24pIHsKKyAgYXV0byB3cml0ZV9yciA9
IFsmYnVmXShjb25zdCBzdGQ6OnZlY3RvcjxNZG5zUmVzb3VyY2VSZWNvcmQ+JiBzZWN0aW9uKSB7
CiAgICAgZm9yIChhdXRvIHJyIDogc2VjdGlvbikgewogICAgICAgaWYgKCFyci5Xcml0ZShidWYp
KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3NCw3ICszNzQsNyBAQCBib29sIE1EbnNN
ZXNzYWdlOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3QgewogICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBNRG5zTWVzc2FnZTo6U2hvdWxkVW5pY2FzdFJlc3BvbnNlKCkg
Y29uc3QgeworYm9vbCBNZG5zTWVzc2FnZTo6U2hvdWxkVW5pY2FzdFJlc3BvbnNlKCkgY29uc3Qg
ewogICBib29sIHNob3VsZF91bmljYXN0ID0gZmFsc2U7CiAgIGZvciAoY29uc3QgYXV0byYgcXVl
c3Rpb24gOiBxdWVzdGlvbl9zZWN0aW9uXykgewogICAgIHNob3VsZF91bmljYXN0IHw9IHF1ZXN0
aW9uLlNob3VsZFVuaWNhc3RSZXNwb25zZSgpOwpAQCAtMzgyLDEyICszODIsMTIgQEAgYm9vbCBN
RG5zTWVzc2FnZTo6U2hvdWxkVW5pY2FzdFJlc3BvbnNlKCkgY29uc3QgewogICByZXR1cm4gc2hv
dWxkX3VuaWNhc3Q7CiB9CiAKLXZvaWQgTURuc01lc3NhZ2U6OkFkZFF1ZXN0aW9uKGNvbnN0IE1E
bnNRdWVzdGlvbiYgcXVlc3Rpb24pIHsKK3ZvaWQgTWRuc01lc3NhZ2U6OkFkZFF1ZXN0aW9uKGNv
bnN0IE1kbnNRdWVzdGlvbiYgcXVlc3Rpb24pIHsKICAgcXVlc3Rpb25fc2VjdGlvbl8ucHVzaF9i
YWNrKHF1ZXN0aW9uKTsKICAgaGVhZGVyXy5xZGNvdW50ID0gcXVlc3Rpb25fc2VjdGlvbl8uc2l6
ZSgpOwogfQogCi12b2lkIE1EbnNNZXNzYWdlOjpBZGRBbnN3ZXJSZWNvcmQoY29uc3QgTURuc1Jl
c291cmNlUmVjb3JkJiBhbnN3ZXIpIHsKK3ZvaWQgTWRuc01lc3NhZ2U6OkFkZEFuc3dlclJlY29y
ZChjb25zdCBNZG5zUmVzb3VyY2VSZWNvcmQmIGFuc3dlcikgewogICBhbnN3ZXJfc2VjdGlvbl8u
cHVzaF9iYWNrKGFuc3dlcik7CiAgIGhlYWRlcl8uYW5jb3VudCA9IGFuc3dlcl9zZWN0aW9uXy5z
aXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZS5oCmluZGV4IGY2ZGVjMjBh
OTU2ZDUzMDIwNzQ4ZGZjOWNiMmI0ODlmZDQwOTgyMDcuLjdhYTFiMjEwMzlhNTMwZjExZjhjOGY4
NTUxYzliNTBjYWQzZGRjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZS5oCkBA
IC0xNSw3ICsxNSw3IEBACiAvLyA2NzYyIGFuZCBSRkMgMTAyNSAoRE5TIG1lc3NhZ2VzKS4gTm90
ZSB0aGF0IGl0IGlzIHJlY29tbWVuZGVkIGJ5IFJGQyA2NzYyIHRvCiAvLyB1c2UgdGhlIG5hbWUg
Y29tcHJlc3Npb24gc2NoZW1lIGRlZmluZWQgaW4gUkZDIDEwMzUgd2hlbmV2ZXIgcG9zc2libGUu
IFdlCiAvLyBjdXJyZW50bHkgb25seSBpbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgb2YgcmVhZGlu
ZyBjb21wcmVzc2VkIG5hbWVzIGluIG1ETlMKLS8vIG1lc3NhZ2VzIGluIE1EbnNNZXNzYWdlOjpS
ZWFkKCk7IGhvd2V2ZXIsIHRoZSBNRG5zTWVzc2FnZTo6V3JpdGUoKSBkb2VzIG5vdAorLy8gbWVz
c2FnZXMgaW4gTWRuc01lc3NhZ2U6OlJlYWQoKTsgaG93ZXZlciwgdGhlIE1kbnNNZXNzYWdlOjpX
cml0ZSgpIGRvZXMgbm90CiAvLyBzdXBwb3J0IG5hbWUgY29tcHJlc3Npb24geWV0LgogLy8KIC8v
IEZ1enplciB0ZXN0cyAodGVzdC9mdXp6ZXJzL21kbnNfcGFyc2VyX2Z1enplci5jYykgTVVTVCBh
bHdheXMgYmUgcGVyZm9ybWVkCkBAIC01MCw3ICs1MCw3IEBAIGVudW0gY2xhc3MgU2VjdGlvbkVu
dHJ5Q2xhc3MgewogfTsKIAogLy8gUkZDIDEwMzUsIFNlY3Rpb24gNC4xLjEuCi1jbGFzcyBNRG5z
SGVhZGVyIGZpbmFsIHsKK2NsYXNzIE1kbnNIZWFkZXIgZmluYWwgewogIHB1YmxpYzoKICAgYm9v
bCBSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1Zik7CiAgIHZvaWQgV3JpdGUocnRjOjpCeXRl
QnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0OwpAQCAtNzQsMTEgKzc0LDExIEBAIGNsYXNzIE1EbnNI
ZWFkZXIgZmluYWwgewogCiAvLyBFbnRyaWVzIGluIGVhY2ggc2VjdGlvbiBhZnRlciB0aGUgaGVh
ZGVyIHNoYXJlIGEgY29tbW9uIHN0cnVjdHVyZS4gTm90ZSB0aGF0CiAvLyB0aGlzIGlzIG5vdCBh
IGNvbmNlcHQgZGVmaW5lZCBpbiBSRkMgMTAzNS4KLWNsYXNzIE1EbnNTZWN0aW9uRW50cnkgewor
Y2xhc3MgTWRuc1NlY3Rpb25FbnRyeSB7CiAgcHVibGljOgotICBNRG5zU2VjdGlvbkVudHJ5KCk7
Ci0gIE1EbnNTZWN0aW9uRW50cnkoY29uc3QgTURuc1NlY3Rpb25FbnRyeSYgb3RoZXIpOwotICB2
aXJ0dWFsIH5NRG5zU2VjdGlvbkVudHJ5KCk7CisgIE1kbnNTZWN0aW9uRW50cnkoKTsKKyAgTWRu
c1NlY3Rpb25FbnRyeShjb25zdCBNZG5zU2VjdGlvbkVudHJ5JiBvdGhlcik7CisgIHZpcnR1YWwg
fk1kbnNTZWN0aW9uRW50cnkoKTsKICAgdmlydHVhbCBib29sIFJlYWQoTWVzc2FnZUJ1ZmZlclJl
YWRlciogYnVmKSA9IDA7CiAgIHZpcnR1YWwgYm9vbCBXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0
ZXIqIGJ1ZikgY29uc3QgPSAwOwogCkBAIC05OSwxMSArOTksMTEgQEAgY2xhc3MgTURuc1NlY3Rp
b25FbnRyeSB7CiB9OwogCiAvLyBSRkMgMTAzNSwgU2VjdGlvbiA0LjEuMi4KLWNsYXNzIE1EbnNR
dWVzdGlvbiBmaW5hbCA6IHB1YmxpYyBNRG5zU2VjdGlvbkVudHJ5IHsKK2NsYXNzIE1kbnNRdWVz
dGlvbiBmaW5hbCA6IHB1YmxpYyBNZG5zU2VjdGlvbkVudHJ5IHsKICBwdWJsaWM6Ci0gIE1EbnNR
dWVzdGlvbigpOwotICBNRG5zUXVlc3Rpb24oY29uc3QgTURuc1F1ZXN0aW9uJiBvdGhlcik7Ci0g
IH5NRG5zUXVlc3Rpb24oKSBvdmVycmlkZTsKKyAgTWRuc1F1ZXN0aW9uKCk7CisgIE1kbnNRdWVz
dGlvbihjb25zdCBNZG5zUXVlc3Rpb24mIG90aGVyKTsKKyAgfk1kbnNRdWVzdGlvbigpIG92ZXJy
aWRlOwogCiAgIGJvb2wgUmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIG92ZXJyaWRlOwog
ICBib29sIFdyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCBvdmVycmlkZTsK
QEAgLTExMywxMSArMTEzLDExIEBAIGNsYXNzIE1EbnNRdWVzdGlvbiBmaW5hbCA6IHB1YmxpYyBN
RG5zU2VjdGlvbkVudHJ5IHsKIH07CiAKIC8vIFJGQyAxMDM1LCBTZWN0aW9uIDQuMS4zLgotY2xh
c3MgTURuc1Jlc291cmNlUmVjb3JkIGZpbmFsIDogcHVibGljIE1EbnNTZWN0aW9uRW50cnkgewor
Y2xhc3MgTWRuc1Jlc291cmNlUmVjb3JkIGZpbmFsIDogcHVibGljIE1kbnNTZWN0aW9uRW50cnkg
ewogIHB1YmxpYzoKLSAgTURuc1Jlc291cmNlUmVjb3JkKCk7Ci0gIE1EbnNSZXNvdXJjZVJlY29y
ZChjb25zdCBNRG5zUmVzb3VyY2VSZWNvcmQmIG90aGVyKTsKLSAgfk1EbnNSZXNvdXJjZVJlY29y
ZCgpIG92ZXJyaWRlOworICBNZG5zUmVzb3VyY2VSZWNvcmQoKTsKKyAgTWRuc1Jlc291cmNlUmVj
b3JkKGNvbnN0IE1kbnNSZXNvdXJjZVJlY29yZCYgb3RoZXIpOworICB+TWRuc1Jlc291cmNlUmVj
b3JkKCkgb3ZlcnJpZGU7CiAKICAgYm9vbCBSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1Zikg
b3ZlcnJpZGU7CiAgIGJvb2wgV3JpdGUocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMTQ1LDE3ICsxNDUsMTcgQEAgY2xhc3MgTURuc1Jlc291cmNlUmVjb3Jk
IGZpbmFsIDogcHVibGljIE1EbnNTZWN0aW9uRW50cnkgewogICBzdGQ6OnN0cmluZyByZGF0YV87
CiB9OwogCi1jbGFzcyBNRG5zTWVzc2FnZSBmaW5hbCB7CitjbGFzcyBNZG5zTWVzc2FnZSBmaW5h
bCB7CiAgcHVibGljOgogICAvLyBSRkMgMTAzNSwgU2VjdGlvbiA0LjEuCiAgIGVudW0gY2xhc3Mg
U2VjdGlvbiB7IGtRdWVzdGlvbiwga0Fuc3dlciwga0F1dGhvcml0eSwga0FkZGl0aW9uYWwgfTsK
IAotICBNRG5zTWVzc2FnZSgpOwotICB+TURuc01lc3NhZ2UoKTsKKyAgTWRuc01lc3NhZ2UoKTsK
KyAgfk1kbnNNZXNzYWdlKCk7CiAgIC8vIFJlYWRzIHRoZSBtRE5TIG1lc3NhZ2UgaW4gfGJ1Znwg
YW5kIHBvcHVsYXRlcyB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgaW4KLSAgLy8gTURuc01lc3Nh
Z2UuCisgIC8vIE1kbnNNZXNzYWdlLgogICBib29sIFJlYWQoTWVzc2FnZUJ1ZmZlclJlYWRlciog
YnVmKTsKLSAgLy8gV3JpdGUgYW4gbUROUyBtZXNzYWdlIHRvIHxidWZ8IGJhc2VkIG9uIHRoZSBm
aWVsZHMgaW4gTURuc01lc3NhZ2UuCisgIC8vIFdyaXRlIGFuIG1ETlMgbWVzc2FnZSB0byB8YnVm
fCBiYXNlZCBvbiB0aGUgZmllbGRzIGluIE1kbnNNZXNzYWdlLgogICAvLwogICAvLyBUT0RPKHFp
bmdzaSk6IEltcGxlbWVudCBuYW1lIGNvbXByZXNzaW9uIHdoZW4gd3JpdGluZyBtRE5TIG1lc3Nh
Z2VzLgogICBib29sIFdyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdDsKQEAg
LTE3NywyOSArMTc3LDI5IEBAIGNsYXNzIE1EbnNNZXNzYWdlIGZpbmFsIHsKICAgLy8gcHJlZmVy
cmVkLiBGYWxzZSBvdGhlcndpc2UuCiAgIGJvb2wgU2hvdWxkVW5pY2FzdFJlc3BvbnNlKCkgY29u
c3Q7CiAKLSAgdm9pZCBBZGRRdWVzdGlvbihjb25zdCBNRG5zUXVlc3Rpb24mIHF1ZXN0aW9uKTsK
KyAgdm9pZCBBZGRRdWVzdGlvbihjb25zdCBNZG5zUXVlc3Rpb24mIHF1ZXN0aW9uKTsKICAgLy8g
VE9ETyhxaW5nc2kpOiBJbXBsZW1lbnQgQWRkWFJlY29yZCBmb3IgbmFtZSBzZXJ2ZXIgYW5kIGFk
ZGl0aW9uYWwgcmVjb3Jkcy4KLSAgdm9pZCBBZGRBbnN3ZXJSZWNvcmQoY29uc3QgTURuc1Jlc291
cmNlUmVjb3JkJiBhbnN3ZXIpOworICB2b2lkIEFkZEFuc3dlclJlY29yZChjb25zdCBNZG5zUmVz
b3VyY2VSZWNvcmQmIGFuc3dlcik7CiAKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8TURuc1F1ZXN0aW9u
PiYgcXVlc3Rpb25fc2VjdGlvbigpIGNvbnN0IHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8TWRuc1F1
ZXN0aW9uPiYgcXVlc3Rpb25fc2VjdGlvbigpIGNvbnN0IHsKICAgICByZXR1cm4gcXVlc3Rpb25f
c2VjdGlvbl87CiAgIH0KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8TURuc1Jlc291cmNlUmVjb3JkPiYg
YW5zd2VyX3NlY3Rpb24oKSBjb25zdCB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPE1kbnNSZXNvdXJj
ZVJlY29yZD4mIGFuc3dlcl9zZWN0aW9uKCkgY29uc3QgewogICAgIHJldHVybiBhbnN3ZXJfc2Vj
dGlvbl87CiAgIH0KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8TURuc1Jlc291cmNlUmVjb3JkPiYgYXV0
aG9yaXR5X3NlY3Rpb24oKSBjb25zdCB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPE1kbnNSZXNvdXJj
ZVJlY29yZD4mIGF1dGhvcml0eV9zZWN0aW9uKCkgY29uc3QgewogICAgIHJldHVybiBhdXRob3Jp
dHlfc2VjdGlvbl87CiAgIH0KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8TURuc1Jlc291cmNlUmVjb3Jk
PiYgYWRkaXRpb25hbF9zZWN0aW9uKCkgY29uc3QgeworICBjb25zdCBzdGQ6OnZlY3RvcjxNZG5z
UmVzb3VyY2VSZWNvcmQ+JiBhZGRpdGlvbmFsX3NlY3Rpb24oKSBjb25zdCB7CiAgICAgcmV0dXJu
IGFkZGl0aW9uYWxfc2VjdGlvbl87CiAgIH0KIAogIHByaXZhdGU6Ci0gIE1EbnNIZWFkZXIgaGVh
ZGVyXzsKLSAgc3RkOjp2ZWN0b3I8TURuc1F1ZXN0aW9uPiBxdWVzdGlvbl9zZWN0aW9uXzsKLSAg
c3RkOjp2ZWN0b3I8TURuc1Jlc291cmNlUmVjb3JkPiBhbnN3ZXJfc2VjdGlvbl87Ci0gIHN0ZDo6
dmVjdG9yPE1EbnNSZXNvdXJjZVJlY29yZD4gYXV0aG9yaXR5X3NlY3Rpb25fOwotICBzdGQ6OnZl
Y3RvcjxNRG5zUmVzb3VyY2VSZWNvcmQ+IGFkZGl0aW9uYWxfc2VjdGlvbl87CisgIE1kbnNIZWFk
ZXIgaGVhZGVyXzsKKyAgc3RkOjp2ZWN0b3I8TWRuc1F1ZXN0aW9uPiBxdWVzdGlvbl9zZWN0aW9u
XzsKKyAgc3RkOjp2ZWN0b3I8TWRuc1Jlc291cmNlUmVjb3JkPiBhbnN3ZXJfc2VjdGlvbl87Cisg
IHN0ZDo6dmVjdG9yPE1kbnNSZXNvdXJjZVJlY29yZD4gYXV0aG9yaXR5X3NlY3Rpb25fOworICBz
dGQ6OnZlY3RvcjxNZG5zUmVzb3VyY2VSZWNvcmQ+IGFkZGl0aW9uYWxfc2VjdGlvbl87CiB9Owog
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2VfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5z
X21lc3NhZ2VfdW5pdHRlc3QuY2MKaW5kZXggZmI0YTNiMWU3YTI2MTU2MDlkMWE1YTQzZDJkM2Fi
ZWYwMDQ0OGY3Mi4uN2Y4MTZmNzQwYjhhNDBkNDcxZmExYjFlY2IzNzI0ODVmNGZmYjY4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvbWRuc19tZXNzYWdlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZV91bml0dGVzdC5jYwpAQCAt
MTksOSArMTksOSBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKICNpbmNs
dWRlICJ0ZXN0L2dtb2NrLmgiCiAKLSNkZWZpbmUgUmVhZE1EbnNNZXNzYWdlKFgsIFkpIFJlYWRN
RG5zTWVzc2FnZVRlc3RDYXNlKFgsIFksIHNpemVvZihZKSkKLSNkZWZpbmUgV3JpdGVNRG5zTWVz
c2FnZUFuZENvbXBhcmUoWCwgWSkgXAotICBXcml0ZU1EbnNNZXNzYWdlQW5kQ29tcGFyZVdpdGhU
ZXN0Q2FzdChYLCBZLCBzaXplb2YoWSkpCisjZGVmaW5lIFJlYWRNZG5zTWVzc2FnZShYLCBZKSBS
ZWFkTWRuc01lc3NhZ2VUZXN0Q2FzZShYLCBZLCBzaXplb2YoWSkpCisjZGVmaW5lIFdyaXRlTWRu
c01lc3NhZ2VBbmRDb21wYXJlKFgsIFkpIFwKKyAgV3JpdGVNZG5zTWVzc2FnZUFuZENvbXBhcmVX
aXRoVGVzdENhc3QoWCwgWSwgc2l6ZW9mKFkpKQogCiB1c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRz
QXJlOwogdXNpbmcgOjp0ZXN0aW5nOjpQYWlyOwpAQCAtMjU1LDE0ICsyNTUsMTQgQEAgY29uc3Qg
dWludDhfdCBrQ29ycnVwdGVkQW5zd2VyV2l0aE5hbWVDb21wcmVzc2lvbjJbXSA9IHsKICAgICAw
eGMwLCAweEE4LCAweDAwLCAweDAxLCAgLy8gMTkyLjE2OC4wLjEKIH07CiAKLWJvb2wgUmVhZE1E
bnNNZXNzYWdlVGVzdENhc2UoTURuc01lc3NhZ2UqIG1zZywKK2Jvb2wgUmVhZE1kbnNNZXNzYWdl
VGVzdENhc2UoTWRuc01lc3NhZ2UqIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCogdGVzdGNhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBzaXplKSB7CiAgIE1lc3NhZ2VCdWZmZXJSZWFkZXIgYnVmKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KHRlc3RjYXNlKSwgc2l6ZSk7CiAgIHJldHVybiBtc2ctPlJlYWQoJmJ1Zik7
CiB9CiAKLXZvaWQgV3JpdGVNRG5zTWVzc2FnZUFuZENvbXBhcmVXaXRoVGVzdENhc3QoTURuc01l
c3NhZ2UqIG1zZywKK3ZvaWQgV3JpdGVNZG5zTWVzc2FnZUFuZENvbXBhcmVXaXRoVGVzdENhc3Qo
TWRuc01lc3NhZ2UqIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCogdGVzdGNhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKSB7CiAgIHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRl
ciBvdXQ7CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBXcml0ZU1EbnNNZXNzYWdlQW5kQ29tcGFy
ZVdpdGhUZXN0Q2FzdChNRG5zTWVzc2FnZSogbXNnLAogICBFWFBFQ1RfRVEodGVzdGNhc2VfYnl0
ZXMsIGJ5dGVzKTsKIH0KIAotYm9vbCBHZXRRdWVyaWVkTmFtZXMoTURuc01lc3NhZ2UqIG1zZywg
c3RkOjpzZXQ8c3RkOjpzdHJpbmc+KiBuYW1lcykgeworYm9vbCBHZXRRdWVyaWVkTmFtZXMoTWRu
c01lc3NhZ2UqIG1zZywgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+KiBuYW1lcykgewogICBpZiAoIW1z
Zy0+SXNRdWVyeSgpIHx8IG1zZy0+cXVlc3Rpb25fc2VjdGlvbigpLmVtcHR5KCkpIHsKICAgICBy
ZXR1cm4gZmFsc2U7CiAgIH0KQEAgLTI4Niw3ICsyODYsNyBAQCBib29sIEdldFF1ZXJpZWROYW1l
cyhNRG5zTWVzc2FnZSogbXNnLCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4qIG5hbWVzKSB7CiAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEdldFJlc29sdXRpb24oTURuc01lc3NhZ2UqIG1zZywKK2Jv
b2wgR2V0UmVzb2x1dGlvbihNZG5zTWVzc2FnZSogbXNnLAogICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWFwPHN0ZDo6c3RyaW5nLCBydGM6OklQQWRkcmVzcz4qIG5hbWVzKSB7CiAgIGlmIChtc2ct
PklzUXVlcnkoKSB8fCBtc2ctPmFuc3dlcl9zZWN0aW9uKCkuZW1wdHkoKSkgewogICAgIHJldHVy
biBmYWxzZTsKQEAgLTMwMywxMCArMzAzLDEwIEBAIGJvb2wgR2V0UmVzb2x1dGlvbihNRG5zTWVz
c2FnZSogbXNnLAogCiB9ICAvLyBuYW1lc3BhY2UKIAotVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJl
YWRTaW5nbGVRdWVzdGlvbkZvcklQdjRBZGRyZXNzKSB7Ci0gIE1EbnNNZXNzYWdlIG1zZzsKK1RF
U1QoTWRuc01lc3NhZ2VUZXN0LCBSZWFkU2luZ2xlUXVlc3Rpb25Gb3JJUHY0QWRkcmVzcykgewor
ICBNZG5zTWVzc2FnZSBtc2c7CiAgIEFTU0VSVF9UUlVFKAotICAgICAgUmVhZE1EbnNNZXNzYWdl
KCZtc2csIGtTaW5nbGVRdWVzdGlvbkZvcklQdjRBZGRyV2l0aFVuaWNhc3RSZXNwb25zZSkpOwor
ICAgICAgUmVhZE1kbnNNZXNzYWdlKCZtc2csIGtTaW5nbGVRdWVzdGlvbkZvcklQdjRBZGRyV2l0
aFVuaWNhc3RSZXNwb25zZSkpOwogICBFWFBFQ1RfVFJVRShtc2cuSXNRdWVyeSgpKTsKICAgRVhQ
RUNUX0VRKDB4MTIzNCwgbXNnLkdldElkKCkpOwogICBBU1NFUlRfRVEoMXUsIG1zZy5xdWVzdGlv
bl9zZWN0aW9uKCkuc2l6ZSgpKTsKQEAgLTMyMyw5ICszMjMsOSBAQCBURVNUKE1EbnNNZXNzYWdl
VGVzdCwgUmVhZFNpbmdsZVF1ZXN0aW9uRm9ySVB2NEFkZHJlc3MpIHsKICAgRVhQRUNUX1RIQVQo
cXVlcmllZF9uYW1lcywgRWxlbWVudHNBcmUoIndlYnJ0Yy5vcmcuIikpOwogfQogCi1URVNUKE1E
bnNNZXNzYWdlVGVzdCwgUmVhZFR3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcikgewotICBN
RG5zTWVzc2FnZSBtc2c7Ci0gIEFTU0VSVF9UUlVFKFJlYWRNRG5zTWVzc2FnZSgKK1RFU1QoTWRu
c01lc3NhZ2VUZXN0LCBSZWFkVHdvUXVlc3Rpb25zRm9ySVB2NEFuZElQdjZBZGRyKSB7CisgIE1k
bnNNZXNzYWdlIG1zZzsKKyAgQVNTRVJUX1RSVUUoUmVhZE1kbnNNZXNzYWdlKAogICAgICAgJm1z
Zywga1R3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcldpdGhNdWx0aWNhc3RSZXNwb25zZSkp
OwogICBFWFBFQ1RfVFJVRShtc2cuSXNRdWVyeSgpKTsKICAgRVhQRUNUX0VRKDB4MTIzNCwgbXNn
LkdldElkKCkpOwpAQCAtMzQ1LDkgKzM0NSw5IEBAIFRFU1QoTURuc01lc3NhZ2VUZXN0LCBSZWFk
VHdvUXVlc3Rpb25zRm9ySVB2NEFuZElQdjZBZGRyKSB7CiAgICAgICAgICAgICAgIFVub3JkZXJl
ZEVsZW1lbnRzQXJlKCJ3ZWJydGM0Lm9yZy4iLCAid2VicnRjNi5vcmcuIikpOwogfQogCi1URVNU
KE1EbnNNZXNzYWdlVGVzdCwgUmVhZFR3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcldpdGhO
YW1lQ29tcHJlc3Npb24pIHsKLSAgTURuc01lc3NhZ2UgbXNnOwotICBBU1NFUlRfVFJVRShSZWFk
TURuc01lc3NhZ2UoCitURVNUKE1kbnNNZXNzYWdlVGVzdCwgUmVhZFR3b1F1ZXN0aW9uc0ZvcklQ
djRBbmRJUHY2QWRkcldpdGhOYW1lQ29tcHJlc3Npb24pIHsKKyAgTWRuc01lc3NhZ2UgbXNnOwor
ICBBU1NFUlRfVFJVRShSZWFkTWRuc01lc3NhZ2UoCiAgICAgICAmbXNnLAogICAgICAga1R3b1F1
ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcldpdGhNdWx0aWNhc3RSZXNwb25zZUFuZE5hbWVDb21w
cmVzc2lvbikpOwogCkBAIC0zNjMsMTAgKzM2MywxMCBAQCBURVNUKE1EbnNNZXNzYWdlVGVzdCwg
UmVhZFR3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcldpdGhOYW1lQ29tcHJlc3Npb24pIHsK
ICAgICAgICAgICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoInd3dy53ZWJydGMub3JnLiIsICJt
ZG5zLndlYnJ0Yy5vcmcuIikpOwogfQogCi1URVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFRocmVl
UXVlc3Rpb25zV2l0aFR3b1BvaW50ZXJzVG9UaGVTYW1lTmFtZVN1ZmZpeCkgewotICBNRG5zTWVz
c2FnZSBtc2c7CitURVNUKE1kbnNNZXNzYWdlVGVzdCwgUmVhZFRocmVlUXVlc3Rpb25zV2l0aFR3
b1BvaW50ZXJzVG9UaGVTYW1lTmFtZVN1ZmZpeCkgeworICBNZG5zTWVzc2FnZSBtc2c7CiAgIEFT
U0VSVF9UUlVFKAotICAgICAgUmVhZE1EbnNNZXNzYWdlKCZtc2csIGtUaHJlZVF1ZXN0aW9uc1dp
dGhUd29Qb2ludGVyc1RvVGhlU2FtZU5hbWVTdWZmaXgpKTsKKyAgICAgIFJlYWRNZG5zTWVzc2Fn
ZSgmbXNnLCBrVGhyZWVRdWVzdGlvbnNXaXRoVHdvUG9pbnRlcnNUb1RoZVNhbWVOYW1lU3VmZml4
KSk7CiAKICAgQVNTRVJUX0VRKDN1LCBtc2cucXVlc3Rpb25fc2VjdGlvbigpLnNpemUoKSk7CiAg
IGNvbnN0IGF1dG8mIHF1ZXN0aW9uMSA9IG1zZy5xdWVzdGlvbl9zZWN0aW9uKClbMF07CkBAIC0z
ODMsMTAgKzM4MywxMCBAQCBURVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFRocmVlUXVlc3Rpb25z
V2l0aFR3b1BvaW50ZXJzVG9UaGVTYW1lTmFtZVN1ZmZpeCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAid2VicnRjLm9yZy4iKSk7CiB9CiAKLVRFU1QoTURuc01lc3NhZ2VU
ZXN0LAorVEVTVChNZG5zTWVzc2FnZVRlc3QsCiAgICAgIFJlYWRUaHJlZVF1ZXN0aW9uc1dpdGhQ
b2ludGVyVG9OYW1lU3VmZml4Q29udGFpbmluZ0Fub3RoZXJQb2ludGVyKSB7Ci0gIE1EbnNNZXNz
YWdlIG1zZzsKLSAgQVNTRVJUX1RSVUUoUmVhZE1EbnNNZXNzYWdlKAorICBNZG5zTWVzc2FnZSBt
c2c7CisgIEFTU0VSVF9UUlVFKFJlYWRNZG5zTWVzc2FnZSgKICAgICAgICZtc2csIGtUaHJlZVF1
ZXN0aW9uc1dpdGhQb2ludGVyVG9OYW1lU3VmZml4Q29udGFpbmluZ0Fub3RoZXJQb2ludGVyKSk7
CiAKICAgQVNTRVJUX0VRKDN1LCBtc2cucXVlc3Rpb25fc2VjdGlvbigpLnNpemUoKSk7CkBAIC00
MDQsMTYgKzQwNCwxNiBAQCBURVNUKE1EbnNNZXNzYWdlVGVzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInd3dy5tZG5zLndlYnJ0Yy5vcmcuIikpOwogfQogCi1URVNUKE1E
bnNNZXNzYWdlVGVzdCwKK1RFU1QoTWRuc01lc3NhZ2VUZXN0LAogICAgICBSZWFkUXVlc3Rpb25X
aXRoQ29ycnVwdGVkUG9pbnRlckluTmFtZUNvbXByZXNzaW9uU2hvdWxkRmFpbCkgewotICBNRG5z
TWVzc2FnZSBtc2c7Ci0gIEVYUEVDVF9GQUxTRShSZWFkTURuc01lc3NhZ2UoJm1zZywga0NvcnJ1
cHRlZFF1ZXN0aW9uV2l0aE5hbWVDb21wcmVzc2lvbjEpKTsKLSAgRVhQRUNUX0ZBTFNFKFJlYWRN
RG5zTWVzc2FnZSgmbXNnLCBrQ29ycnVwdGVkUXVlc3Rpb25XaXRoTmFtZUNvbXByZXNzaW9uMikp
OworICBNZG5zTWVzc2FnZSBtc2c7CisgIEVYUEVDVF9GQUxTRShSZWFkTWRuc01lc3NhZ2UoJm1z
Zywga0NvcnJ1cHRlZFF1ZXN0aW9uV2l0aE5hbWVDb21wcmVzc2lvbjEpKTsKKyAgRVhQRUNUX0ZB
TFNFKFJlYWRNZG5zTWVzc2FnZSgmbXNnLCBrQ29ycnVwdGVkUXVlc3Rpb25XaXRoTmFtZUNvbXBy
ZXNzaW9uMikpOwogfQogCi1URVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFNpbmdsZUFuc3dlckZv
cklQdjRBZGRyKSB7Ci0gIE1EbnNNZXNzYWdlIG1zZzsKLSAgQVNTRVJUX1RSVUUoUmVhZE1EbnNN
ZXNzYWdlKCZtc2csIGtTaW5nbGVBdXRob3JpdGF0aXZlQW5zd2VyV2l0aElQdjRBZGRyKSk7CitU
RVNUKE1kbnNNZXNzYWdlVGVzdCwgUmVhZFNpbmdsZUFuc3dlckZvcklQdjRBZGRyKSB7CisgIE1k
bnNNZXNzYWdlIG1zZzsKKyAgQVNTRVJUX1RSVUUoUmVhZE1kbnNNZXNzYWdlKCZtc2csIGtTaW5n
bGVBdXRob3JpdGF0aXZlQW5zd2VyV2l0aElQdjRBZGRyKSk7CiAgIEVYUEVDVF9GQUxTRShtc2cu
SXNRdWVyeSgpKTsKICAgRVhQRUNUX1RSVUUobXNnLklzQXV0aG9yaXRhdGl2ZSgpKTsKICAgRVhQ
RUNUX0VRKDB4MTIzNCwgbXNnLkdldElkKCkpOwpAQCAtNDMyLDEwICs0MzIsMTAgQEAgVEVTVChN
RG5zTWVzc2FnZVRlc3QsIFJlYWRTaW5nbGVBbnN3ZXJGb3JJUHY0QWRkcikgewogICBFWFBFQ1Rf
VEhBVChyZXNvbHV0aW9uLCBFbGVtZW50c0FyZShQYWlyKCJ3ZWJydGMub3JnLiIsIGV4cGVjdGVk
X2FkZHIpKSk7CiB9CiAKLVRFU1QoTURuc01lc3NhZ2VUZXN0LCBSZWFkVHdvQW5zd2Vyc0ZvcklQ
djRBbmRJUHY2QWRkcikgewotICBNRG5zTWVzc2FnZSBtc2c7CitURVNUKE1kbnNNZXNzYWdlVGVz
dCwgUmVhZFR3b0Fuc3dlcnNGb3JJUHY0QW5kSVB2NkFkZHIpIHsKKyAgTWRuc01lc3NhZ2UgbXNn
OwogICBBU1NFUlRfVFJVRSgKLSAgICAgIFJlYWRNRG5zTWVzc2FnZSgmbXNnLCBrVHdvQXV0aG9y
aXRhdGl2ZUFuc3dlcnNXaXRoSVB2NEFuZElQdjZBZGRyKSk7CisgICAgICBSZWFkTWRuc01lc3Nh
Z2UoJm1zZywga1R3b0F1dGhvcml0YXRpdmVBbnN3ZXJzV2l0aElQdjRBbmRJUHY2QWRkcikpOwog
ICBFWFBFQ1RfRkFMU0UobXNnLklzUXVlcnkoKSk7CiAgIEVYUEVDVF9UUlVFKG1zZy5Jc0F1dGhv
cml0YXRpdmUoKSk7CiAgIEVYUEVDVF9FUSgweDEyMzQsIG1zZy5HZXRJZCgpKTsKQEAgLTQ2Miw5
ICs0NjIsOSBAQCBURVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFR3b0Fuc3dlcnNGb3JJUHY0QW5k
SVB2NkFkZHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcigid2Vi
cnRjNi5vcmcuIiwgZXhwZWN0ZWRfYWRkcl9pcHY2KSkpOwogfQogCi1URVNUKE1EbnNNZXNzYWdl
VGVzdCwgUmVhZFR3b0Fuc3dlcnNGb3JJUHY0QW5kSVB2NkFkZHJXaXRoTmFtZUNvbXByZXNzaW9u
KSB7Ci0gIE1EbnNNZXNzYWdlIG1zZzsKLSAgQVNTRVJUX1RSVUUoUmVhZE1EbnNNZXNzYWdlKAor
VEVTVChNZG5zTWVzc2FnZVRlc3QsIFJlYWRUd29BbnN3ZXJzRm9ySVB2NEFuZElQdjZBZGRyV2l0
aE5hbWVDb21wcmVzc2lvbikgeworICBNZG5zTWVzc2FnZSBtc2c7CisgIEFTU0VSVF9UUlVFKFJl
YWRNZG5zTWVzc2FnZSgKICAgICAgICZtc2csIGtUd29BdXRob3JpdGF0aXZlQW5zd2Vyc1dpdGhJ
UHY0QW5kSVB2NkFkZHJXaXRoTmFtZUNvbXByZXNzaW9uKSk7CiAKICAgc3RkOjptYXA8c3RkOjpz
dHJpbmcsIHJ0Yzo6SVBBZGRyZXNzPiByZXNvbHV0aW9uOwpAQCAtNDc4LDU3ICs0NzgsNTcgQEAg
VEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRUd29BbnN3ZXJzRm9ySVB2NEFuZElQdjZBZGRyV2l0
aE5hbWVDb21wcmVzc2lvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YWlyKCJ3ZWJydGMub3JnLiIsIGV4cGVjdGVkX2FkZHJfaXB2NikpKTsKIH0KIAotVEVTVChNRG5z
TWVzc2FnZVRlc3QsCitURVNUKE1kbnNNZXNzYWdlVGVzdCwKICAgICAgUmVhZEFuc3dlcldpdGhD
b3JydXB0ZWRQb2ludGVySW5OYW1lQ29tcHJlc3Npb25TaG91bGRGYWlsKSB7Ci0gIE1EbnNNZXNz
YWdlIG1zZzsKLSAgRVhQRUNUX0ZBTFNFKFJlYWRNRG5zTWVzc2FnZSgmbXNnLCBrQ29ycnVwdGVk
QW5zd2VyV2l0aE5hbWVDb21wcmVzc2lvbjEpKTsKLSAgRVhQRUNUX0ZBTFNFKFJlYWRNRG5zTWVz
c2FnZSgmbXNnLCBrQ29ycnVwdGVkQW5zd2VyV2l0aE5hbWVDb21wcmVzc2lvbjIpKTsKKyAgTWRu
c01lc3NhZ2UgbXNnOworICBFWFBFQ1RfRkFMU0UoUmVhZE1kbnNNZXNzYWdlKCZtc2csIGtDb3Jy
dXB0ZWRBbnN3ZXJXaXRoTmFtZUNvbXByZXNzaW9uMSkpOworICBFWFBFQ1RfRkFMU0UoUmVhZE1k
bnNNZXNzYWdlKCZtc2csIGtDb3JydXB0ZWRBbnN3ZXJXaXRoTmFtZUNvbXByZXNzaW9uMikpOwog
fQogCi1URVNUKE1EbnNNZXNzYWdlVGVzdCwgV3JpdGVTaW5nbGVRdWVzdGlvbkZvcklQdjRBZGRy
KSB7Ci0gIE1EbnNNZXNzYWdlIG1zZzsKK1RFU1QoTWRuc01lc3NhZ2VUZXN0LCBXcml0ZVNpbmds
ZVF1ZXN0aW9uRm9ySVB2NEFkZHIpIHsKKyAgTWRuc01lc3NhZ2UgbXNnOwogICBtc2cuU2V0SWQo
MHgxMjM0KTsKICAgbXNnLlNldFF1ZXJ5T3JSZXNwb25zZSh0cnVlKTsKIAotICBNRG5zUXVlc3Rp
b24gcXVlc3Rpb247CisgIE1kbnNRdWVzdGlvbiBxdWVzdGlvbjsKICAgcXVlc3Rpb24uU2V0TmFt
ZSgid2VicnRjLm9yZy4iKTsKICAgcXVlc3Rpb24uU2V0VHlwZShTZWN0aW9uRW50cnlUeXBlOjpr
QSk7CiAgIHF1ZXN0aW9uLlNldENsYXNzKFNlY3Rpb25FbnRyeUNsYXNzOjprSU4pOwogICBxdWVz
dGlvbi5TZXRVbmljYXN0UmVzcG9uc2UodHJ1ZSk7CiAgIG1zZy5BZGRRdWVzdGlvbihxdWVzdGlv
bik7CiAKLSAgV3JpdGVNRG5zTWVzc2FnZUFuZENvbXBhcmUoJm1zZywKKyAgV3JpdGVNZG5zTWVz
c2FnZUFuZENvbXBhcmUoJm1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1Npbmds
ZVF1ZXN0aW9uRm9ySVB2NEFkZHJXaXRoVW5pY2FzdFJlc3BvbnNlKTsKIH0KIAotVEVTVChNRG5z
TWVzc2FnZVRlc3QsIFdyaXRlVHdvUXVlc3Rpb25zRm9ySVB2NEFuZElQdjZBZGRyKSB7Ci0gIE1E
bnNNZXNzYWdlIG1zZzsKK1RFU1QoTWRuc01lc3NhZ2VUZXN0LCBXcml0ZVR3b1F1ZXN0aW9uc0Zv
cklQdjRBbmRJUHY2QWRkcikgeworICBNZG5zTWVzc2FnZSBtc2c7CiAgIG1zZy5TZXRJZCgweDEy
MzQpOwogICBtc2cuU2V0UXVlcnlPclJlc3BvbnNlKHRydWUpOwogCi0gIE1EbnNRdWVzdGlvbiBx
dWVzdGlvbjE7CisgIE1kbnNRdWVzdGlvbiBxdWVzdGlvbjE7CiAgIHF1ZXN0aW9uMS5TZXROYW1l
KCJ3ZWJydGM0Lm9yZy4iKTsKICAgcXVlc3Rpb24xLlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZTo6
a0EpOwogICBxdWVzdGlvbjEuU2V0Q2xhc3MoU2VjdGlvbkVudHJ5Q2xhc3M6OmtJTik7CiAgIG1z
Zy5BZGRRdWVzdGlvbihxdWVzdGlvbjEpOwogCi0gIE1EbnNRdWVzdGlvbiBxdWVzdGlvbjI7Cisg
IE1kbnNRdWVzdGlvbiBxdWVzdGlvbjI7CiAgIHF1ZXN0aW9uMi5TZXROYW1lKCJ3ZWJydGM2Lm9y
Zy4iKTsKICAgcXVlc3Rpb24yLlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZTo6a0FBQUEpOwogICBx
dWVzdGlvbjIuU2V0Q2xhc3MoU2VjdGlvbkVudHJ5Q2xhc3M6OmtJTik7CiAgIG1zZy5BZGRRdWVz
dGlvbihxdWVzdGlvbjIpOwogCi0gIFdyaXRlTURuc01lc3NhZ2VBbmRDb21wYXJlKAorICBXcml0
ZU1kbnNNZXNzYWdlQW5kQ29tcGFyZSgKICAgICAgICZtc2csIGtUd29RdWVzdGlvbnNGb3JJUHY0
QW5kSVB2NkFkZHJXaXRoTXVsdGljYXN0UmVzcG9uc2UpOwogfQogCi1URVNUKE1EbnNNZXNzYWdl
VGVzdCwgV3JpdGVTaW5nbGVBbnN3ZXJUb0lQdjRBZGRyKSB7Ci0gIE1EbnNNZXNzYWdlIG1zZzsK
K1RFU1QoTWRuc01lc3NhZ2VUZXN0LCBXcml0ZVNpbmdsZUFuc3dlclRvSVB2NEFkZHIpIHsKKyAg
TWRuc01lc3NhZ2UgbXNnOwogICBtc2cuU2V0SWQoMHgxMjM0KTsKICAgbXNnLlNldFF1ZXJ5T3JS
ZXNwb25zZShmYWxzZSk7CiAgIG1zZy5TZXRBdXRob3JpdGF0aXZlKHRydWUpOwogCi0gIE1EbnNS
ZXNvdXJjZVJlY29yZCBhbnN3ZXI7CisgIE1kbnNSZXNvdXJjZVJlY29yZCBhbnN3ZXI7CiAgIGFu
c3dlci5TZXROYW1lKCJ3ZWJydGMub3JnLiIpOwogICBhbnN3ZXIuU2V0VHlwZShTZWN0aW9uRW50
cnlUeXBlOjprQSk7CiAgIGFuc3dlci5TZXRDbGFzcyhTZWN0aW9uRW50cnlDbGFzczo6a0lOKTsK
QEAgLTUzNywxNiArNTM3LDE2IEBAIFRFU1QoTURuc01lc3NhZ2VUZXN0LCBXcml0ZVNpbmdsZUFu
c3dlclRvSVB2NEFkZHIpIHsKICAgYW5zd2VyLlNldFR0bFNlY29uZHMoMTIwKTsKICAgbXNnLkFk
ZEFuc3dlclJlY29yZChhbnN3ZXIpOwogCi0gIFdyaXRlTURuc01lc3NhZ2VBbmRDb21wYXJlKCZt
c2csIGtTaW5nbGVBdXRob3JpdGF0aXZlQW5zd2VyV2l0aElQdjRBZGRyKTsKKyAgV3JpdGVNZG5z
TWVzc2FnZUFuZENvbXBhcmUoJm1zZywga1NpbmdsZUF1dGhvcml0YXRpdmVBbnN3ZXJXaXRoSVB2
NEFkZHIpOwogfQogCi1URVNUKE1EbnNNZXNzYWdlVGVzdCwgV3JpdGVUd29BbnN3ZXJzVG9JUHY0
QW5kSVB2NkFkZHIpIHsKLSAgTURuc01lc3NhZ2UgbXNnOworVEVTVChNZG5zTWVzc2FnZVRlc3Qs
IFdyaXRlVHdvQW5zd2Vyc1RvSVB2NEFuZElQdjZBZGRyKSB7CisgIE1kbnNNZXNzYWdlIG1zZzsK
ICAgbXNnLlNldElkKDB4MTIzNCk7CiAgIG1zZy5TZXRRdWVyeU9yUmVzcG9uc2UoZmFsc2UpOwog
ICBtc2cuU2V0QXV0aG9yaXRhdGl2ZSh0cnVlKTsKIAotICBNRG5zUmVzb3VyY2VSZWNvcmQgYW5z
d2VyMTsKKyAgTWRuc1Jlc291cmNlUmVjb3JkIGFuc3dlcjE7CiAgIGFuc3dlcjEuU2V0TmFtZSgi
d2VicnRjNC5vcmcuIik7CiAgIGFuc3dlcjEuU2V0VHlwZShTZWN0aW9uRW50cnlUeXBlOjprQSk7
CiAgIGFuc3dlcjEuU2V0Q2xhc3MoU2VjdGlvbkVudHJ5Q2xhc3M6OmtJTik7CkBAIC01NTUsNyAr
NTU1LDcgQEAgVEVTVChNRG5zTWVzc2FnZVRlc3QsIFdyaXRlVHdvQW5zd2Vyc1RvSVB2NEFuZElQ
djZBZGRyKSB7CiAgIGFuc3dlcjEuU2V0VHRsU2Vjb25kcyg2MCk7CiAgIG1zZy5BZGRBbnN3ZXJS
ZWNvcmQoYW5zd2VyMSk7CiAKLSAgTURuc1Jlc291cmNlUmVjb3JkIGFuc3dlcjI7CisgIE1kbnNS
ZXNvdXJjZVJlY29yZCBhbnN3ZXIyOwogICBhbnN3ZXIyLlNldE5hbWUoIndlYnJ0YzYub3JnLiIp
OwogICBhbnN3ZXIyLlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZTo6a0FBQUEpOwogICBhbnN3ZXIy
LlNldENsYXNzKFNlY3Rpb25FbnRyeUNsYXNzOjprSU4pOwpAQCAtNTY0LDcgKzU2NCw3IEBAIFRF
U1QoTURuc01lc3NhZ2VUZXN0LCBXcml0ZVR3b0Fuc3dlcnNUb0lQdjRBbmRJUHY2QWRkcikgewog
ICBhbnN3ZXIyLlNldFR0bFNlY29uZHMoMTIwKTsKICAgbXNnLkFkZEFuc3dlclJlY29yZChhbnN3
ZXIyKTsKIAotICBXcml0ZU1EbnNNZXNzYWdlQW5kQ29tcGFyZSgmbXNnLCBrVHdvQXV0aG9yaXRh
dGl2ZUFuc3dlcnNXaXRoSVB2NEFuZElQdjZBZGRyKTsKKyAgV3JpdGVNZG5zTWVzc2FnZUFuZENv
bXBhcmUoJm1zZywga1R3b0F1dGhvcml0YXRpdmVBbnN3ZXJzV2l0aElQdjRBbmRJUHY2QWRkcik7
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21vY2tpY2V0cmFuc3BvcnQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21vY2tp
Y2V0cmFuc3BvcnQuaAppbmRleCBkMTg2M2M1MjkzNTIwOWVlZTQ0MmE0ODNjNDI2NTAxOGY2ZWIy
YzcwLi5iMThjZTNkNWFkZTFkYTk0MDBjY2FkMjAyYmQ4YWRkYThjYWE1ZmU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tb2Nr
aWNldHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2UvbW9ja2ljZXRyYW5zcG9ydC5oCkBAIC00Nyw2ICs0NywxMCBAQCBjbGFz
cyBNb2NrSWNlVHJhbnNwb3J0IDogcHVibGljIEljZVRyYW5zcG9ydEludGVybmFsIHsKICAgSWNl
VHJhbnNwb3J0U3RhdGUgR2V0U3RhdGUoKSBjb25zdCBvdmVycmlkZSB7CiAgICAgcmV0dXJuIElj
ZVRyYW5zcG9ydFN0YXRlOjpTVEFURV9JTklUOwogICB9CisgIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0
U3RhdGUgR2V0SWNlVHJhbnNwb3J0U3RhdGUoKSBjb25zdCBvdmVycmlkZSB7CisgICAgcmV0dXJu
IHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtOZXc7CisgIH0KKwogICBjb25zdCBzdGQ6OnN0
cmluZyYgdHJhbnNwb3J0X25hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cmFuc3BvcnRf
bmFtZV87IH0KICAgaW50IGNvbXBvbmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0K
ICAgdm9pZCBTZXRJY2VSb2xlKEljZVJvbGUgcm9sZSkgb3ZlcnJpZGUge30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycGNv
bnN0YW50cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvcDJwY29uc3RhbnRzLmgKaW5kZXggYjJlOTJlZmYxMzUyYWM4YzYwNWNhMDE0ODQ5ODE5
NGE2YTcxMWJlZi4uMjk0OGJlMGJiODM3ZDRjMDRkY2JmMjA4MWY5OGIwMmQwZDQ3ZDk0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvcDJwY29uc3RhbnRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvcDJwY29uc3RhbnRzLmgKQEAgLTEzLDYgKzEzLDggQEAKIAogI2lu
Y2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0Lmgi
CisKIG5hbWVzcGFjZSBjcmlja2V0IHsKIAogLy8gQ05fID09ICJjb250ZW50IG5hbWUiLiAgV2hl
biB3ZSBpbml0aWF0ZSBhIHNlc3Npb24sIHdlIGNob29zZSB0aGUKQEAgLTI5LDcgKzMxLDcgQEAg
ZXh0ZXJuIGNvbnN0IGNoYXIgQ05fT1RIRVJbXTsKIGV4dGVybiBjb25zdCBjaGFyIEdST1VQX1RZ
UEVfQlVORExFW107CiAKIGV4dGVybiBjb25zdCBpbnQgSUNFX1VGUkFHX0xFTkdUSDsKLWV4dGVy
biBjb25zdCBpbnQgSUNFX1BXRF9MRU5HVEg7CitSVENfRVhQT1JUIGV4dGVybiBjb25zdCBpbnQg
SUNFX1BXRF9MRU5HVEg7CiBleHRlcm4gY29uc3Qgc2l6ZV90IElDRV9VRlJBR19NSU5fTEVOR1RI
OwogZXh0ZXJuIGNvbnN0IHNpemVfdCBJQ0VfUFdEX01JTl9MRU5HVEg7CiBleHRlcm4gY29uc3Qg
c2l6ZV90IElDRV9VRlJBR19NQVhfTEVOR1RIOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3Ay
cHRyYW5zcG9ydGNoYW5uZWwuY2MKaW5kZXggYjBhYmUyNGEwNTgwYTEyYTBmYmVjMDI1ZTYzYWYx
MjBkZWM2N2ZiMC4uZjYxMjkxYzVkZGMwMDgyNmViNDI0NzM2NGFjNGY1YTFiYTI1MTIwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvcDJwdHJhbnNwb3J0Y2hhbm5lbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFubmVsLmNjCkBAIC0zMjMs
NiArMzIzLDEwIEBAIEljZVRyYW5zcG9ydFN0YXRlIFAyUFRyYW5zcG9ydENoYW5uZWw6OkdldFN0
YXRlKCkgY29uc3QgewogICByZXR1cm4gc3RhdGVfOwogfQogCit3ZWJydGM6OkljZVRyYW5zcG9y
dFN0YXRlIFAyUFRyYW5zcG9ydENoYW5uZWw6OkdldEljZVRyYW5zcG9ydFN0YXRlKCkgY29uc3Qg
eworICByZXR1cm4gc3RhbmRhcmRpemVkX3N0YXRlXzsKK30KKwogY29uc3Qgc3RkOjpzdHJpbmcm
IFAyUFRyYW5zcG9ydENoYW5uZWw6OnRyYW5zcG9ydF9uYW1lKCkgY29uc3QgewogICByZXR1cm4g
dHJhbnNwb3J0X25hbWVfOwogfQpAQCAtMzg3LDYgKzM5MSw0MSBAQCBJY2VUcmFuc3BvcnRTdGF0
ZSBQMlBUcmFuc3BvcnRDaGFubmVsOjpDb21wdXRlU3RhdGUoKSBjb25zdCB7CiAgIHJldHVybiBJ
Y2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfQ09NUExFVEVEOwogfQogCisvLyBDb21wdXRlIHRoZSBj
dXJyZW50IFJUQ0ljZVRyYW5zcG9ydFN0YXRlIGFzIGRlc2NyaWJlZCBpbgorLy8gaHR0cHM6Ly93
d3cudzMub3JnL1RSL3dlYnJ0Yy8jZG9tLXJ0Y2ljZXRyYW5zcG9ydHN0YXRlCisvLyBUT0RPKGJ1
Z3Mud2VicnRjLm9yZy85MzA4KTogUmV0dXJuIEljZVRyYW5zcG9ydFN0YXRlOjprRGlzY29ubmVj
dGVkIHdoZW4gaXQKKy8vIG1ha2VzIHNlbnNlLgorLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTIx
OCk6IEF2b2lkIHByZW1hdHVyZWx5IHNpZ25hbGxpbmcga0ZhaWxlZCBvbmNlIHdlIGhhdmUKKy8v
IGltcGxlbWVudGVkIGVuZC1vZi1jYW5kaWRhdGVzIHNpZ25hbGxpbmcuCit3ZWJydGM6OkljZVRy
YW5zcG9ydFN0YXRlIFAyUFRyYW5zcG9ydENoYW5uZWw6OkNvbXB1dGVJY2VUcmFuc3BvcnRTdGF0
ZSgpCisgICAgY29uc3QgeworICBib29sIGhhc19jb25uZWN0aW9uID0gZmFsc2U7CisgIGZvciAo
Q29ubmVjdGlvbiogY29ubmVjdGlvbiA6IGNvbm5lY3Rpb25zXykgeworICAgIGlmIChjb25uZWN0
aW9uLT5hY3RpdmUoKSkgeworICAgICAgaGFzX2Nvbm5lY3Rpb24gPSB0cnVlOworICAgICAgYnJl
YWs7CisgICAgfQorICB9CisKKyAgc3dpdGNoIChnYXRoZXJpbmdfc3RhdGVfKSB7CisgICAgY2Fz
ZSBrSWNlR2F0aGVyaW5nQ29tcGxldGU6CisgICAgICBpZiAoaGFzX2Nvbm5lY3Rpb24pCisgICAg
ICAgIHJldHVybiB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlOjprQ29tcGxldGVkOworICAgICAg
ZWxzZQorICAgICAgICByZXR1cm4gd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6a0ZhaWxlZDsK
KyAgICBjYXNlIGtJY2VHYXRoZXJpbmdOZXc6CisgICAgICByZXR1cm4gd2VicnRjOjpJY2VUcmFu
c3BvcnRTdGF0ZTo6a05ldzsKKyAgICBjYXNlIGtJY2VHYXRoZXJpbmdHYXRoZXJpbmc6CisgICAg
ICBpZiAoaGFzX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB3ZWJydGM6OkljZVRyYW5zcG9y
dFN0YXRlOjprQ29ubmVjdGVkOworICAgICAgZWxzZQorICAgICAgICByZXR1cm4gd2VicnRjOjpJ
Y2VUcmFuc3BvcnRTdGF0ZTo6a0NoZWNraW5nOworICAgIGRlZmF1bHQ6CisgICAgICBSVENfTk9U
UkVBQ0hFRCgpOworICAgICAgcmV0dXJuIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtGYWls
ZWQ7CisgIH0KK30KKwogdm9pZCBQMlBUcmFuc3BvcnRDaGFubmVsOjpTZXRJY2VQYXJhbWV0ZXJz
KGNvbnN0IEljZVBhcmFtZXRlcnMmIGljZV9wYXJhbXMpIHsKICAgUlRDX0RDSEVDSyhuZXR3b3Jr
X3RocmVhZF8gPT0gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSk7CiAgIFJUQ19MT0coTFNfSU5GTykg
PDwgIlNldCBJQ0UgdWZyYWc6ICIgPDwgaWNlX3BhcmFtcy51ZnJhZwpAQCAtMTgyNyw2ICsxODY2
LDkgQEAgdm9pZCBQMlBUcmFuc3BvcnRDaGFubmVsOjpTd2l0Y2hTZWxlY3RlZENvbm5lY3Rpb24o
Q29ubmVjdGlvbiogY29ubikgewogLy8gZXhhbXBsZSwgd2UgY2FsbCB0aGlzIGF0IHRoZSBlbmQg
b2YgU29ydENvbm5lY3Rpb25zQW5kVXBkYXRlU3RhdGUuCiB2b2lkIFAyUFRyYW5zcG9ydENoYW5u
ZWw6OlVwZGF0ZVN0YXRlKCkgewogICBJY2VUcmFuc3BvcnRTdGF0ZSBzdGF0ZSA9IENvbXB1dGVT
dGF0ZSgpOworICB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlIGN1cnJlbnRfc3RhbmRhcmRpemVk
X3N0YXRlID0KKyAgICAgIENvbXB1dGVJY2VUcmFuc3BvcnRTdGF0ZSgpOworCiAgIGlmIChzdGF0
ZV8gIT0gc3RhdGUpIHsKICAgICBSVENfTE9HKExTX0lORk8pIDw8IFRvU3RyaW5nKCkKICAgICAg
ICAgICAgICAgICAgICAgIDw8ICI6IFRyYW5zcG9ydCBjaGFubmVsIHN0YXRlIGNoYW5nZWQgZnJv
bSAiCkBAIC0xODY4LDYgKzE5MTAsMTAgQEAgdm9pZCBQMlBUcmFuc3BvcnRDaGFubmVsOjpVcGRh
dGVTdGF0ZSgpIHsKICAgICBTaWduYWxTdGF0ZUNoYW5nZWQodGhpcyk7CiAgIH0KIAorICBpZiAo
c3RhbmRhcmRpemVkX3N0YXRlXyAhPSBjdXJyZW50X3N0YW5kYXJkaXplZF9zdGF0ZSkgeworICAg
IHN0YW5kYXJkaXplZF9zdGF0ZV8gPSBjdXJyZW50X3N0YW5kYXJkaXplZF9zdGF0ZTsKKyAgICBT
aWduYWxJY2VUcmFuc3BvcnRTdGF0ZUNoYW5nZWQodGhpcyk7CisgIH0KICAgLy8gSWYgb3VyIHNl
bGVjdGVkIGNvbm5lY3Rpb24gaXMgInByZXN1bWVkIHdyaXRhYmxlIiAoVFVSTi1UVVJOIHdpdGgg
bm8KICAgLy8gQ3JlYXRlUGVybWlzc2lvbiByZXF1aXJlZCksIGFjdCBsaWtlIHdlJ3JlIGFscmVh
ZHkgd3JpdGFibGUgdG8gdGhlIHVwcGVyCiAgIC8vIGxheWVycywgc28gdGhleSBjYW4gc3RhcnQg
bWVkaWEgcXVpY2tlci4KQEAgLTIzMTksNyArMjM2NSw3IEBAIGJvb2wgUDJQVHJhbnNwb3J0Q2hh
bm5lbDo6UHJ1bmVQb3J0KFBvcnRJbnRlcmZhY2UqIHBvcnQpIHsKIHZvaWQgUDJQVHJhbnNwb3J0
Q2hhbm5lbDo6T25SZWFkUGFja2V0KENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3Rp
bWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFj
a2V0X3RpbWVfdXMpIHsKICAgUlRDX0RDSEVDSyhuZXR3b3JrX3RocmVhZF8gPT0gcnRjOjpUaHJl
YWQ6OkN1cnJlbnQoKSk7CiAKICAgLy8gRG8gbm90IGRlbGl2ZXIsIGlmIHBhY2tldCBkb2Vzbid0
IGJlbG9uZyB0byB0aGUgY29ycmVjdCB0cmFuc3BvcnQgY2hhbm5lbC4KQEAgLTIzMjcsNyArMjM3
Myw3IEBAIHZvaWQgUDJQVHJhbnNwb3J0Q2hhbm5lbDo6T25SZWFkUGFja2V0KENvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sCiAgICAgcmV0dXJuOwogCiAgIC8vIExldCB0aGUgY2xpZW50IGtub3cgb2Yg
YW4gaW5jb21pbmcgcGFja2V0Ci0gIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwgbGVuLCBw
YWNrZXRfdGltZSwgMCk7CisgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwgbGVuLCBwYWNr
ZXRfdGltZV91cywgMCk7CiAKICAgLy8gTWF5IG5lZWQgdG8gc3dpdGNoIHRoZSBzZW5kaW5nIGNv
bm5lY3Rpb24gYmFzZWQgb24gdGhlIHJlY2VpdmluZyBtZWRpYSBwYXRoCiAgIC8vIGlmIHRoaXMg
aXMgdGhlIGNvbnRyb2xsZWQgc2lkZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWwuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5z
cG9ydGNoYW5uZWwuaAppbmRleCBmYmVkMzQ0Y2MzM2U2ZWM3MzFjOWYwODYwMGJkZGI1YThkYjAx
ZmM5Li5hYmVkZDBiZGQzNDg5Mzc1ZTUyZjk0MzYxMjJmY2Q2MTljYTc1MzY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0
cmFuc3BvcnRjaGFubmVsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbC5oCkBAIC00Miw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJp
bmdfYnVpbGRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpAQCAtNzUsNyArNzYsNyBAQCBjbGFzcyBSZW1vdGVDYW5kaWRhdGUgOiBw
dWJsaWMgQ2FuZGlkYXRlIHsKIAogLy8gUDJQVHJhbnNwb3J0Q2hhbm5lbCBtYW5hZ2VzIHRoZSBj
YW5kaWRhdGVzIGFuZCBjb25uZWN0aW9uIHByb2Nlc3MgdG8ga2VlcAogLy8gdHdvIFAyUCBjbGll
bnRzIGNvbm5lY3RlZCB0byBlYWNoIG90aGVyLgotY2xhc3MgUDJQVHJhbnNwb3J0Q2hhbm5lbCA6
IHB1YmxpYyBJY2VUcmFuc3BvcnRJbnRlcm5hbCB7CitjbGFzcyBSVENfRVhQT1JUIFAyUFRyYW5z
cG9ydENoYW5uZWwgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewogIHB1YmxpYzoKICAg
Ly8gRm9yIHRlc3Rpbmcgb25seS4KICAgLy8gVE9ETyh6c3RlaW4pOiBSZW1vdmUgb25jZSBBc3lu
Y1Jlc29sdmVyRmFjdG9yeSBpcyByZXF1aXJlZC4KQEAgLTkxLDYgKzkyLDggQEAgY2xhc3MgUDJQ
VHJhbnNwb3J0Q2hhbm5lbCA6IHB1YmxpYyBJY2VUcmFuc3BvcnRJbnRlcm5hbCB7CiAKICAgLy8g
RnJvbSBUcmFuc3BvcnRDaGFubmVsSW1wbDoKICAgSWNlVHJhbnNwb3J0U3RhdGUgR2V0U3RhdGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZSBHZXRJY2VUcmFu
c3BvcnRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFu
c3BvcnRfbmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICBpbnQgY29tcG9uZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgIGJvb2wgd3JpdGFibGUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTI0Myw3ICsyNDYs
MTMgQEAgY2xhc3MgUDJQVHJhbnNwb3J0Q2hhbm5lbCA6IHB1YmxpYyBJY2VUcmFuc3BvcnRJbnRl
cm5hbCB7CiAgIHZvaWQgVXBkYXRlU3RhdGUoKTsKICAgdm9pZCBIYW5kbGVBbGxUaW1lZE91dCgp
OwogICB2b2lkIE1heWJlU3RvcFBvcnRBbGxvY2F0b3JTZXNzaW9ucygpOworCisgIC8vIENvbXB1
dGVJY2VUcmFuc3BvcnRTdGF0ZSBjb21wdXRlcyB0aGUgUlRDSWNlVHJhbnNwb3J0U3RhdGUgYXMg
ZGVzY3JpYmVkIGluCisgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvI2RvbS1y
dGNpY2V0cmFuc3BvcnRzdGF0ZS4gQ29tcHV0ZVN0YXRlCisgIC8vIGNvbXB1dGVzIHRoZSB2YWx1
ZSB3ZSBjdXJyZW50bHkgZXhwb3J0IGFzIFJUQ0ljZVRyYW5zcG9ydFN0YXRlLgorICAvLyBUT0RP
KGJ1Z3Mud2VicnRjLm9yZy85MzA4KTogUmVtb3ZlIENvbXB1dGVTdGF0ZSBvbmNlIGl0J3Mgbm8g
bG9uZ2VyIHVzZWQuCiAgIEljZVRyYW5zcG9ydFN0YXRlIENvbXB1dGVTdGF0ZSgpIGNvbnN0Owor
ICB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlIENvbXB1dGVJY2VUcmFuc3BvcnRTdGF0ZSgpIGNv
bnN0OwogCiAgIENvbm5lY3Rpb24qIEdldEJlc3RDb25uZWN0aW9uT25OZXR3b3JrKHJ0Yzo6TmV0
d29yayogbmV0d29yaykgY29uc3Q7CiAgIGJvb2wgQ3JlYXRlQ29ubmVjdGlvbnMoY29uc3QgQ2Fu
ZGlkYXRlJiByZW1vdGVfY2FuZGlkYXRlLApAQCAtMjk1LDcgKzMwNCw3IEBAIGNsYXNzIFAyUFRy
YW5zcG9ydENoYW5uZWwgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewogICB2b2lkIE9u
UmVhZFBhY2tldChDb25uZWN0aW9uKiBjb25uZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQgT25TZW50UGFj
a2V0KGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgc2VudF9wYWNrZXQpOwogICB2b2lkIE9uUmVhZHlU
b1NlbmQoQ29ubmVjdGlvbiogY29ubmVjdGlvbik7CiAgIHZvaWQgT25Db25uZWN0aW9uRGVzdHJv
eWVkKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24pOwpAQCAtNDA3LDcgKzQxNiwxMSBAQCBjbGFzcyBQ
MlBUcmFuc3BvcnRDaGFubmVsIDogcHVibGljIEljZVRyYW5zcG9ydEludGVybmFsIHsKICAgc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6QmFzaWNSZWdhdGhlcmluZ0NvbnRyb2xsZXI+IHJlZ2F0aGVy
aW5nX2NvbnRyb2xsZXJfOwogICBpbnQ2NF90IGxhc3RfcGluZ19zZW50X21zXyA9IDA7CiAgIGlu
dCB3ZWFrX3BpbmdfaW50ZXJ2YWxfID0gV0VBS19QSU5HX0lOVEVSVkFMOworICAvLyBUT0RPKGpv
bmFzb2xzc29uKTogUmVtb3ZlIHN0YXRlXyBhbmQgcmVuYW1lIHN0YW5kYXJkaXplZF9zdGF0ZV8g
b25jZSBzdGF0ZV8KKyAgLy8gaXMgbm8gbG9uZ2VyIHVzZWQgdG8gY29tcHV0ZSB0aGUgSUNFIGNv
bm5lY3Rpb24gc3RhdGUuCiAgIEljZVRyYW5zcG9ydFN0YXRlIHN0YXRlXyA9IEljZVRyYW5zcG9y
dFN0YXRlOjpTVEFURV9JTklUOworICB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlIHN0YW5kYXJk
aXplZF9zdGF0ZV8gPQorICAgICAgd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6a05ldzsKICAg
SWNlQ29uZmlnIGNvbmZpZ187CiAgIGludCBsYXN0X3NlbnRfcGFja2V0X2lkXyA9IC0xOyAgLy8g
LTEgaW5kaWNhdGVzIG5vIHBhY2tldCB3YXMgc2VudCBiZWZvcmUuCiAgIGJvb2wgc3RhcnRlZF9w
aW5naW5nXyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbF91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycHRy
YW5zcG9ydGNoYW5uZWxfdW5pdHRlc3QuY2MKaW5kZXggNzZiOTE4Y2ExZTRiY2U5Mjc2M2JkZWU0
NTcxMTM3YTczZWI1Y2Y1Zi4uMmFiM2Q4OGFmYmM1OTdhZDdlNTIwYzdlOGYxYmY5ZmZjMGM0OGNm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFu
bmVsX3VuaXR0ZXN0LmNjCkBAIC02OTksNyArNjk5LDYgQEAgY2xhc3MgUDJQVHJhbnNwb3J0Q2hh
bm5lbFRlc3RCYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QsCiAgICAgRVhQRUNUX05FKGluZm8u
cGFja2V0X3R5cGUsIHJ0Yzo6UGFja2V0VHlwZTo6a1Vua25vd24pOwogICAgIEVYUEVDVF9ORShp
bmZvLnByb3RvY29sLCBydGM6OlBhY2tldEluZm9Qcm90b2NvbFR5cGU6OmtVbmtub3duKTsKICAg
ICBFWFBFQ1RfVFJVRShpbmZvLm5ldHdvcmtfaWQuaGFzX3ZhbHVlKCkpOwotICAgIEVYUEVDVF9G
QUxTRShpbmZvLmxvY2FsX3NvY2tldF9hZGRyZXNzLklzTmlsKCkpOwogICB9CiAKICAgdm9pZCBP
blJlYWR5VG9TZW5kKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCkgewpA
QCAtODExLDcgKzgxMCw3IEBAIGNsYXNzIFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0QmFzZSA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0LAogICB2b2lkIE9uUmVhZFBhY2tldChydGM6OlBhY2tldFRyYW5z
cG9ydEludGVybmFsKiB0cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUsCisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovLAogICAgICAgICAgICAgICAg
ICAgICBpbnQgZmxhZ3MpIHsKICAgICBzdGQ6Omxpc3Q8c3RkOjpzdHJpbmc+JiBwYWNrZXRzID0g
R2V0UGFja2V0TGlzdCh0cmFuc3BvcnQpOwogICAgIHBhY2tldHMucHVzaF9mcm9udChzdGQ6OnN0
cmluZyhkYXRhLCBsZW4pKTsKQEAgLTMyMDQsNyArMzIwMyw3IEBAIGNsYXNzIFAyUFRyYW5zcG9y
dENoYW5uZWxQaW5nVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgIG1zZy5BZGRGaW5n
ZXJwcmludCgpOwogICAgIHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciBidWY7CiAgICAgbXNnLldyaXRl
KCZidWYpOwotICAgIGNvbm4tPk9uUmVhZFBhY2tldChidWYuRGF0YSgpLCBidWYuTGVuZ3RoKCks
IHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7CisgICAgY29ubi0+T25SZWFkUGFja2V0KGJ1Zi5E
YXRhKCksIGJ1Zi5MZW5ndGgoKSwgcnRjOjpUaW1lTWljcm9zKCkpOwogICB9CiAKICAgdm9pZCBP
blJlYWR5VG9TZW5kKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCkgewpA
QCAtMzYxMyw3ICszNjEyLDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxQaW5nVGVzdCwg
VGVzdFJlY2VpdmluZ1N0YXRlQ2hhbmdlKSB7CiAKICAgY2xvY2suQWR2YW5jZVRpbWUod2VicnRj
OjpUaW1lRGVsdGE6OnNlY29uZHMoMSkpOwogICBjb25uMS0+UmVjZWl2ZWRQaW5nKCk7Ci0gIGNv
bm4xLT5PblJlYWRQYWNrZXQoIkFCQyIsIDMsIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7Cisg
IGNvbm4xLT5PblJlYWRQYWNrZXQoIkFCQyIsIDMsIHJ0Yzo6VGltZU1pY3JvcygpKTsKICAgRVhQ
RUNUX1RSVUVfU0lNVUxBVEVEX1dBSVQoY2gucmVjZWl2aW5nKCksIGtTaG9ydFRpbWVvdXQsIGNs
b2NrKTsKICAgRVhQRUNUX1RSVUVfU0lNVUxBVEVEX1dBSVQoIWNoLnJlY2VpdmluZygpLCBrU2hv
cnRUaW1lb3V0LCBjbG9jayk7CiB9CkBAIC0zODA0LDcgKzM4MDMsNyBAQCBURVNUX0YoUDJQVHJh
bnNwb3J0Q2hhbm5lbFBpbmdUZXN0LCBUZXN0U2VsZWN0Q29ubmVjdGlvbkJhc2VkT25NZWRpYVJl
Y2VpdmVkKSB7CiAgIENvbm5lY3Rpb24qIGNvbm4yID0gV2FpdEZvckNvbm5lY3Rpb25UbygmY2gs
ICIyLjIuMi4yIiwgMik7CiAgIEFTU0VSVF9UUlVFKGNvbm4yICE9IG51bGxwdHIpOwogICBjb25u
Mi0+UmVjZWl2ZWRQaW5nUmVzcG9uc2UoTE9XX1JUVCwgImlkIik7ICAvLyBCZWNvbWUgd3JpdGFi
bGUgYW5kIHJlY2VpdmluZy4KLSAgY29ubjItPk9uUmVhZFBhY2tldCgiQUJDIiwgMywgcnRjOjpD
cmVhdGVQYWNrZXRUaW1lKDApKTsKKyAgY29ubjItPk9uUmVhZFBhY2tldCgiQUJDIiwgMywgcnRj
OjpUaW1lTWljcm9zKCkpOwogICBFWFBFQ1RfRVEoY29ubjIsIGNoLnNlbGVjdGVkX2Nvbm5lY3Rp
b24oKSk7CiAgIGNvbm4yLT5SZWNlaXZlZFBpbmdSZXNwb25zZShMT1dfUlRULCAiaWQiKTsgIC8v
IEJlY29tZSB3cml0YWJsZS4KIApAQCAtMzgzMiw3ICszODMxLDcgQEAgVEVTVF9GKFAyUFRyYW5z
cG9ydENoYW5uZWxQaW5nVGVzdCwgVGVzdFNlbGVjdENvbm5lY3Rpb25CYXNlZE9uTWVkaWFSZWNl
aXZlZCkgewogICAvLyBzZWxlY3RlZCBjb25uZWN0aW9uIHdhcyBub21pbmF0ZWQgYnkgdGhlIGNv
bnRyb2xsaW5nIHNpZGUuCiAgIGNvbm4yLT5SZWNlaXZlZFBpbmcoKTsKICAgY29ubjItPlJlY2Vp
dmVkUGluZ1Jlc3BvbnNlKExPV19SVFQsICJpZCIpOwotICBjb25uMi0+T25SZWFkUGFja2V0KCJY
WVoiLCAzLCBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpOworICBjb25uMi0+T25SZWFkUGFja2V0
KCJYWVoiLCAzLCBydGM6OlRpbWVNaWNyb3MoKSk7CiAgIEVYUEVDVF9FUV9XQUlUKGNvbm4zLCBj
aC5zZWxlY3RlZF9jb25uZWN0aW9uKCksIGtEZWZhdWx0VGltZW91dCk7CiB9CiAKQEAgLTM4NjEs
MTIgKzM4NjAsMTIgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxQaW5nVGVzdCwKICAgLy8g
QWR2YW5jZSB0aGUgY2xvY2sgYnkgMW1zIHNvIHRoYXQgdGhlIGxhc3QgZGF0YSByZWNlaXZpbmcg
dGltZXN0YW1wIG9mCiAgIC8vIGNvbm4yIGlzIGxhcmdlci4KICAgU0lNVUxBVEVEX1dBSVQoZmFs
c2UsIDEsIGNsb2NrKTsKLSAgY29ubjItPk9uUmVhZFBhY2tldCgiWFlaIiwgMywgcnRjOjpDcmVh
dGVQYWNrZXRUaW1lKDApKTsKKyAgY29ubjItPk9uUmVhZFBhY2tldCgiWFlaIiwgMywgcnRjOjpU
aW1lTWljcm9zKCkpOwogICBFWFBFQ1RfRVEoMSwgcmVzZXRfc2VsZWN0ZWRfY2FuZGlkYXRlX3Bh
aXJfc3dpdGNoZXMoKSk7CiAgIEVYUEVDVF9UUlVFKENhbmRpZGF0ZVBhaXJNYXRjaGVzTmV0d29y
a1JvdXRlKGNvbm4yKSk7CiAKICAgLy8gY29ubjEgYWxzbyByZWNlaXZlcyBkYXRhOyBpdCBiZWNv
bWVzIHNlbGVjdGVkIGR1ZSB0byBwcmlvcml0eSBhZ2Fpbi4KLSAgY29ubjEtPk9uUmVhZFBhY2tl
dCgiWFlaIiwgMywgcnRjOjpDcmVhdGVQYWNrZXRUaW1lKDApKTsKKyAgY29ubjEtPk9uUmVhZFBh
Y2tldCgiWFlaIiwgMywgcnRjOjpUaW1lTWljcm9zKCkpOwogICBFWFBFQ1RfRVEoMSwgcmVzZXRf
c2VsZWN0ZWRfY2FuZGlkYXRlX3BhaXJfc3dpdGNoZXMoKSk7CiAgIEVYUEVDVF9UUlVFKENhbmRp
ZGF0ZVBhaXJNYXRjaGVzTmV0d29ya1JvdXRlKGNvbm4yKSk7CiAKQEAgLTM4NzUsNyArMzg3NCw3
IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsUGluZ1Rlc3QsCiAgIFNJTVVMQVRFRF9XQUlU
KGZhbHNlLCAxLCBjbG9jayk7CiAgIC8vIE5lZWQgdG8gYmVjb21lIHdyaXRhYmxlIGFnYWluIGJl
Y2F1c2UgaXQgd2FzIHBydW5lZC4KICAgY29ubjItPlJlY2VpdmVkUGluZ1Jlc3BvbnNlKExPV19S
VFQsICJpZCIpOwotICBjb25uMi0+T25SZWFkUGFja2V0KCJYWVoiLCAzLCBydGM6OkNyZWF0ZVBh
Y2tldFRpbWUoMCkpOworICBjb25uMi0+T25SZWFkUGFja2V0KCJYWVoiLCAzLCBydGM6OlRpbWVN
aWNyb3MoKSk7CiAgIEVYUEVDVF9FUSgxLCByZXNldF9zZWxlY3RlZF9jYW5kaWRhdGVfcGFpcl9z
d2l0Y2hlcygpKTsKICAgRVhQRUNUX1RSVUUoQ2FuZGlkYXRlUGFpck1hdGNoZXNOZXR3b3JrUm91
dGUoY29ubjIpKTsKIApAQCAtMzkwNSw3ICszOTA0LDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENo
YW5uZWxQaW5nVGVzdCwKICAgLy8gY29ubjEgcmVjZWl2ZWQgZGF0YTsgaXQgaXMgdGhlIHNlbGVj
dGVkIGNvbm5lY3Rpb24uCiAgIC8vIEFkdmFuY2UgdGhlIGNsb2NrIHRvIGhhdmUgYSBub24temVy
byBsYXN0LWRhdGEtcmVjZWl2aW5nIHRpbWUuCiAgIFNJTVVMQVRFRF9XQUlUKGZhbHNlLCAxLCBj
bG9jayk7Ci0gIGNvbm4xLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0Yzo6Q3JlYXRlUGFja2V0
VGltZSgwKSk7CisgIGNvbm4xLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0Yzo6VGltZU1pY3Jv
cygpKTsKICAgRVhQRUNUX0VRKDEsIHJlc2V0X3NlbGVjdGVkX2NhbmRpZGF0ZV9wYWlyX3N3aXRj
aGVzKCkpOwogICBFWFBFQ1RfVFJVRShDYW5kaWRhdGVQYWlyTWF0Y2hlc05ldHdvcmtSb3V0ZShj
b25uMSkpOwogCkBAIC00MTI2LDcgKzQxMjUsNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5l
bFBpbmdUZXN0LCBUZXN0RG9udFBydW5lSGlnaFByaW9yaXR5Q29ubmVjdGlvbnMpIHsKICAgLy8g
Y29ubjIuCiAgIE5vbWluYXRlQ29ubmVjdGlvbihjb25uMSk7CiAgIFNJTVVMQVRFRF9XQUlUKGZh
bHNlLCAxLCBjbG9jayk7Ci0gIGNvbm4xLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0Yzo6Q3Jl
YXRlUGFja2V0VGltZSgwKSk7CisgIGNvbm4xLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0Yzo6
VGltZU1pY3JvcygpKTsKICAgU0lNVUxBVEVEX1dBSVQoY29ubjItPnBydW5lZCgpLCAxMDAsIGNs
b2NrKTsKICAgRVhQRUNUX0ZBTFNFKGNvbm4yLT5wcnVuZWQoKSk7CiB9CkBAIC00MTM3LDYgKzQx
MzYsNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFBpbmdUZXN0LCBUZXN0R2V0U3RhdGUp
IHsKICAgY2xvY2suQWR2YW5jZVRpbWUod2VicnRjOjpUaW1lRGVsdGE6OnNlY29uZHMoMSkpOwog
ICBGYWtlUG9ydEFsbG9jYXRvciBwYShydGM6OlRocmVhZDo6Q3VycmVudCgpLCBudWxscHRyKTsK
ICAgUDJQVHJhbnNwb3J0Q2hhbm5lbCBjaCgidGVzdCBjaGFubmVsIiwgMSwgJnBhKTsKKyAgRVhQ
RUNUX0VRKHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtOZXcsIGNoLkdldEljZVRyYW5zcG9y
dFN0YXRlKCkpOwogICBQcmVwYXJlQ2hhbm5lbCgmY2gpOwogICBjaC5NYXliZVN0YXJ0R2F0aGVy
aW5nKCk7CiAgIEVYUEVDVF9FUShJY2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfSU5JVCwgY2guR2V0
U3RhdGUoKSk7CkBAIC00MTQ0LDYgKzQxNDQsOCBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5l
bFBpbmdUZXN0LCBUZXN0R2V0U3RhdGUpIHsKICAgY2guQWRkUmVtb3RlQ2FuZGlkYXRlKENyZWF0
ZVVkcENhbmRpZGF0ZShMT0NBTF9QT1JUX1RZUEUsICIyLjIuMi4yIiwgMiwgMSkpOwogICBDb25u
ZWN0aW9uKiBjb25uMSA9IFdhaXRGb3JDb25uZWN0aW9uVG8oJmNoLCAiMS4xLjEuMSIsIDEsICZj
bG9jayk7CiAgIENvbm5lY3Rpb24qIGNvbm4yID0gV2FpdEZvckNvbm5lY3Rpb25UbygmY2gsICIy
LjIuMi4yIiwgMiwgJmNsb2NrKTsKKyAgLy8gR2F0aGVyaW5nIGNvbXBsZXRlIHdpdGggY2FuZGlk
YXRlcy4KKyAgRVhQRUNUX0VRKHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtDb21wbGV0ZWQs
IGNoLkdldEljZVRyYW5zcG9ydFN0YXRlKCkpOwogICBBU1NFUlRfVFJVRShjb25uMSAhPSBudWxs
cHRyKTsKICAgQVNTRVJUX1RSVUUoY29ubjIgIT0gbnVsbHB0cik7CiAgIC8vIE5vdyB0aGVyZSBh
cmUgdHdvIGNvbm5lY3Rpb25zLCBzbyB0aGUgdHJhbnNwb3J0IGNoYW5uZWwgaXMgY29ubmVjdGlu
Zy4KQEAgLTQxNTYsNiArNDE1OCw3IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsUGluZ1Rl
c3QsIFRlc3RHZXRTdGF0ZSkgewogICAvLyBOZWVkIHRvIHdhaXQgdW50aWwgdGhlIGNoYW5uZWwg
c3RhdGUgaXMgdXBkYXRlZC4KICAgRVhQRUNUX0VRX1NJTVVMQVRFRF9XQUlUKEljZVRyYW5zcG9y
dFN0YXRlOjpTVEFURV9GQUlMRUQsIGNoLkdldFN0YXRlKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrU2hvcnRUaW1lb3V0LCBjbG9jayk7CisgIEVYUEVDVF9FUSh3ZWJydGM6OkljZVRy
YW5zcG9ydFN0YXRlOjprRmFpbGVkLCBjaC5HZXRJY2VUcmFuc3BvcnRTdGF0ZSgpKTsKIH0KIAog
Ly8gVGVzdCB0aGF0IHdoZW4gYSBsb3ctcHJpb3JpdHkgY29ubmVjdGlvbiBpcyBwcnVuZWQsIGl0
IGlzIG5vdCBkZWxldGVkCkBAIC00NTkwLDcgKzQ1OTMsNyBAQCBURVNUKFAyUFRyYW5zcG9ydENo
YW5uZWxSZXNvbHZlclRlc3QsIEhvc3RuYW1lQ2FuZGlkYXRlSXNSZXNvbHZlZCkgewogLy8gcHJm
bHggY2FuZGlkYXRlIGlzIHVwZGF0ZWQgdG8gYSBob3N0IGNhbmRpZGF0ZSBhZnRlciB0aGUgbmFt
ZSByZXNvbHV0aW9uIGlzCiAvLyBkb25lLgogVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0
LAotICAgICAgIFBlZXJSZWZsZXhpdmVDYW5kaWRhdGVCZWZvcmVTaWduYWxpbmdXaXRoTURuc05h
bWUpIHsKKyAgICAgICBQZWVyUmVmbGV4aXZlQ2FuZGlkYXRlQmVmb3JlU2lnbmFsaW5nV2l0aE1k
bnNOYW1lKSB7CiAgIHJ0Yzo6TW9ja0FzeW5jUmVzb2x2ZXIgbW9ja19hc3luY19yZXNvbHZlcjsK
ICAgd2VicnRjOjpNb2NrQXN5bmNSZXNvbHZlckZhY3RvcnkgbW9ja19hc3luY19yZXNvbHZlcl9m
YWN0b3J5OwogICBFWFBFQ1RfQ0FMTChtb2NrX2FzeW5jX3Jlc29sdmVyX2ZhY3RvcnksIENyZWF0
ZSgpKQpAQCAtNDYwMSw3ICs0NjA0LDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0
LAogICBDb25maWd1cmVFbmRwb2ludHMoT1BFTiwgT1BFTiwga09ubHlMb2NhbFBvcnRzLCBrT25s
eUxvY2FsUG9ydHMpOwogICAvLyBJQ0UgcGFyYW1ldGVyIHdpbGwgYmUgc2V0IHVwIHdoZW4gY3Jl
YXRpbmcgdGhlIGNoYW5uZWxzLgogICBzZXRfcmVtb3RlX2ljZV9wYXJhbWV0ZXJfc291cmNlKEZS
T01fU0VUSUNFUEFSQU1FVEVSUyk7Ci0gIEdldEVuZHBvaW50KDApLT5uZXR3b3JrX21hbmFnZXJf
LkNyZWF0ZU1EbnNSZXNwb25kZXIoKTsKKyAgR2V0RW5kcG9pbnQoMCktPm5ldHdvcmtfbWFuYWdl
cl8uQ3JlYXRlTWRuc1Jlc3BvbmRlcigpOwogICBHZXRFbmRwb2ludCgxKS0+YXN5bmNfcmVzb2x2
ZXJfZmFjdG9yeV8gPSAmbW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5OwogICBDcmVhdGVDaGFu
bmVscygpOwogICAvLyBQYXVzZSBzZW5kaW5nIGNhbmRpZGF0ZXMgZnJvbSBib3RoIGVuZHBvaW50
cyB1bnRpbCB3ZSBmaW5kIG91dCB3aGF0IHBvcnQKQEAgLTQ2NTYsNyArNDY1OSw3IEBAIFRFU1Rf
RihQMlBUcmFuc3BvcnRDaGFubmVsVGVzdCwKIC8vIGEgaG9zdCBjYW5kaWRhdGUgaWYgdGhlIGhv
c3RuYW1lIGNhbmRpZGF0ZSB0dXJucyBvdXQgdG8gaGF2ZSB0aGUgc2FtZSBJUAogLy8gYWRkcmVz
cyBhZnRlciB0aGUgcmVzb2x1dGlvbiBjb21wbGV0ZXMuCiBURVNUX0YoUDJQVHJhbnNwb3J0Q2hh
bm5lbFRlc3QsCi0gICAgICAgUGVlclJlZmxleGl2ZUNhbmRpZGF0ZUR1cmluZ1Jlc29sdmluZ0hv
c3RDYW5kaWRhdGVXaXRoTURuc05hbWUpIHsKKyAgICAgICBQZWVyUmVmbGV4aXZlQ2FuZGlkYXRl
RHVyaW5nUmVzb2x2aW5nSG9zdENhbmRpZGF0ZVdpdGhNZG5zTmFtZSkgewogICBOaWNlTW9jazxy
dGM6Ok1vY2tBc3luY1Jlc29sdmVyPiBtb2NrX2FzeW5jX3Jlc29sdmVyOwogICB3ZWJydGM6Ok1v
Y2tBc3luY1Jlc29sdmVyRmFjdG9yeSBtb2NrX2FzeW5jX3Jlc29sdmVyX2ZhY3Rvcnk7CiAgIEVY
UEVDVF9DQUxMKG1vY2tfYXN5bmNfcmVzb2x2ZXJfZmFjdG9yeSwgQ3JlYXRlKCkpCkBAIC00NjY3
LDcgKzQ2NzAsNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFRlc3QsCiAgIENvbmZpZ3Vy
ZUVuZHBvaW50cyhPUEVOLCBPUEVOLCBrT25seUxvY2FsUG9ydHMsIGtPbmx5TG9jYWxQb3J0cyk7
CiAgIC8vIElDRSBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdXAgd2hlbiBjcmVhdGluZyB0aGUgY2hh
bm5lbHMuCiAgIHNldF9yZW1vdGVfaWNlX3BhcmFtZXRlcl9zb3VyY2UoRlJPTV9TRVRJQ0VQQVJB
TUVURVJTKTsKLSAgR2V0RW5kcG9pbnQoMCktPm5ldHdvcmtfbWFuYWdlcl8uQ3JlYXRlTURuc1Jl
c3BvbmRlcigpOworICBHZXRFbmRwb2ludCgwKS0+bmV0d29ya19tYW5hZ2VyXy5DcmVhdGVNZG5z
UmVzcG9uZGVyKCk7CiAgIEdldEVuZHBvaW50KDEpLT5hc3luY19yZXNvbHZlcl9mYWN0b3J5XyA9
ICZtb2NrX2FzeW5jX3Jlc29sdmVyX2ZhY3Rvcnk7CiAgIENyZWF0ZUNoYW5uZWxzKCk7CiAgIC8v
IFBhdXNlIHNlbmRpbmcgY2FuZGlkYXRlcyBmcm9tIGJvdGggZW5kcG9pbnRzIHVudGlsIHdlIGZp
bmQgb3V0IHdoYXQgcG9ydApAQCAtNDcyMyw3ICs0NzI2LDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9y
dENoYW5uZWxUZXN0LAogLy8gVGVzdCB0aGF0IGlmIHdlIG9ubHkgZ2F0aGVyIGFuZCBzaWduYWwg
YSBob3N0IGNhbmRpZGF0ZSwgdGhlIElQIGFkZHJlc3Mgb2YKIC8vIHdoaWNoIGlzIG9iZnVzY2F0
ZWQgYnkgYW4gbUROUyBuYW1lLCBhbmQgaWYgdGhlIHBlZXIgY2FuIGNvbXBsZXRlIHRoZSBuYW1l
CiAvLyByZXNvbHV0aW9uIHdpdGggdGhlIGNvcnJlY3QgSVAgYWRkcmVzcywgd2UgY2FuIGhhdmUg
YSBwMnAgY29ubmVjdGlvbi4KLVRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsVGVzdCwgQ2FuQ29u
bmVjdFdpdGhIb3N0Q2FuZGlkYXRlV2l0aE1EbnNOYW1lKSB7CitURVNUX0YoUDJQVHJhbnNwb3J0
Q2hhbm5lbFRlc3QsIENhbkNvbm5lY3RXaXRoSG9zdENhbmRpZGF0ZVdpdGhNZG5zTmFtZSkgewog
ICBOaWNlTW9jazxydGM6Ok1vY2tBc3luY1Jlc29sdmVyPiBtb2NrX2FzeW5jX3Jlc29sdmVyOwog
ICB3ZWJydGM6Ok1vY2tBc3luY1Jlc29sdmVyRmFjdG9yeSBtb2NrX2FzeW5jX3Jlc29sdmVyX2Zh
Y3Rvcnk7CiAgIEVYUEVDVF9DQUxMKG1vY2tfYXN5bmNfcmVzb2x2ZXJfZmFjdG9yeSwgQ3JlYXRl
KCkpCkBAIC00NzM0LDcgKzQ3MzcsNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFRlc3Qs
IENhbkNvbm5lY3RXaXRoSG9zdENhbmRpZGF0ZVdpdGhNRG5zTmFtZSkgewogICBDb25maWd1cmVF
bmRwb2ludHMoT1BFTiwgT1BFTiwga09ubHlMb2NhbFBvcnRzLCBrT25seUxvY2FsUG9ydHMpOwog
ICAvLyBJQ0UgcGFyYW1ldGVyIHdpbGwgYmUgc2V0IHVwIHdoZW4gY3JlYXRpbmcgdGhlIGNoYW5u
ZWxzLgogICBzZXRfcmVtb3RlX2ljZV9wYXJhbWV0ZXJfc291cmNlKEZST01fU0VUSUNFUEFSQU1F
VEVSUyk7Ci0gIEdldEVuZHBvaW50KDApLT5uZXR3b3JrX21hbmFnZXJfLkNyZWF0ZU1EbnNSZXNw
b25kZXIoKTsKKyAgR2V0RW5kcG9pbnQoMCktPm5ldHdvcmtfbWFuYWdlcl8uQ3JlYXRlTWRuc1Jl
c3BvbmRlcigpOwogICBHZXRFbmRwb2ludCgxKS0+YXN5bmNfcmVzb2x2ZXJfZmFjdG9yeV8gPSAm
bW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5OwogICBDcmVhdGVDaGFubmVscygpOwogICAvLyBQ
YXVzZSBzZW5kaW5nIGNhbmRpZGF0ZXMgZnJvbSBib3RoIGVuZHBvaW50cyB1bnRpbCB3ZSBmaW5k
IG91dCB3aGF0IHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3BhY2tldHNvY2tldGZhY3RvcnkuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BhY2tldHNvY2tldGZhY3Rv
cnkuaAppbmRleCA0NjY3YmIxZmQ3MDAyOGI5ZTA2ZDRmNjU1NzU2MzA2YjYyMzYzZWQ2Li5jOTAz
ZGYwNmM4YTk4ZGQ0NTY1M2NkNGUwM2ZhNGYwNTBjMWJlNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wYWNrZXRzb2NrZXRm
YWN0b3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvcGFja2V0c29ja2V0ZmFjdG9yeS5oCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Byb3h5
aW5mby5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKQEAgLTM2
LDcgKzM3LDcgQEAgc3RydWN0IFBhY2tldFNvY2tldFRjcE9wdGlvbnMgewogY2xhc3MgQXN5bmNQ
YWNrZXRTb2NrZXQ7CiBjbGFzcyBBc3luY1Jlc29sdmVySW50ZXJmYWNlOwogCi1jbGFzcyBQYWNr
ZXRTb2NrZXRGYWN0b3J5IHsKK2NsYXNzIFJUQ19FWFBPUlQgUGFja2V0U29ja2V0RmFjdG9yeSB7
CiAgcHVibGljOgogICBlbnVtIE9wdGlvbnMgewogICAgIE9QVF9TVFVOID0gMHgwNCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3BhY2tldHRyYW5zcG9ydGludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5oCmluZGV4IGNh
N2YwMDM2MTE0ZGY4MzZmMWJjY2M2OGUwYzU4NTU5ODdiMzM3MWIuLjdkNTBmOWMwZWVhMWQ5Nzdi
YjgwNWEyZmI2NDc4ZGVkZGI1OTEyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BhY2tldHRyYW5zcG9ydGludGVybmFsLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
cGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuaApAQCAtMjEsMTUgKzIxLDE2IEBACiAjaW5jbHVkZSAi
cnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3Jr
cm91dGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3Np
Z3Nsb3Qvc2lnc2xvdC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIHN0cnVjdCBQYWNrZXRPcHRpb25z
Owotc3RydWN0IFBhY2tldFRpbWU7CiBzdHJ1Y3QgU2VudFBhY2tldDsKIAotY2xhc3MgUGFja2V0
VHJhbnNwb3J0SW50ZXJuYWwgOiBwdWJsaWMgdmlydHVhbCB3ZWJydGM6OlBhY2tldFRyYW5zcG9y
dEludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHNpZ3Ns
b3Q6Omhhc19zbG90czw+IHsKK2NsYXNzIFJUQ19FWFBPUlQgUGFja2V0VHJhbnNwb3J0SW50ZXJu
YWwKKyAgICA6IHB1YmxpYyB2aXJ0dWFsIHdlYnJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJmYWNl
LAorICAgICAgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICBwdWJsaWM6CiAgIHZpcnR1
YWwgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9uYW1lKCkgY29uc3QgPSAwOwogCkBAIC04
NSw3ICs4Niw5IEBAIGNsYXNzIFBhY2tldFRyYW5zcG9ydEludGVybmFsIDogcHVibGljIHZpcnR1
YWwgd2VicnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UsCiAgIHNpZ3Nsb3Q6OnNpZ25hbDU8
UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
LAogICAgICAgICAgICAgICAgICAgIHNpemVfdCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBy
dGM6OlBhY2tldFRpbWUmLAorICAgICAgICAgICAgICAgICAgIC8vIFRPRE8oYnVncy53ZWJydGMu
b3JnLzk1ODQpOiBDaGFuZ2UgdG8gcGFzc2luZyB0aGUgaW50NjRfdAorICAgICAgICAgICAgICAg
ICAgIC8vIHRpbWVzdGFtcCBieSB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2
NF90JiwKICAgICAgICAgICAgICAgICAgICBpbnQ+CiAgICAgICBTaWduYWxSZWFkUGFja2V0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9wb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvcG9ydC5jYwppbmRleCBhYzc1MjFlNjY3MjdmNmU5NDM0ODA3ZjY1MGMxYWUz
YmQyZjYzMTc5Li41YjhlMDJkMjhmZjg5NGQzZDM3NmVmYWIzYjA3ZjBmM2JlZTQwY2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS9wb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3BvcnQuY2MKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAK
ICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
bWF0Y2guaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JjMzIuaCIKQEAgLTI3LDcg
KzI4LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNv
ZGUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3RoaXJkX3BhcnR5L2Jhc2U2NC9iYXNlNjQuaCIKIAogbmFtZXNwYWNlIHsKQEAgLTE4Myw3
ICsxODMsNyBAQCBjb25zdCBjaGFyKiBQcm90b1RvU3RyaW5nKFByb3RvY29sVHlwZSBwcm90bykg
ewogCiBib29sIFN0cmluZ1RvUHJvdG8oY29uc3QgY2hhciogdmFsdWUsIFByb3RvY29sVHlwZSog
cHJvdG8pIHsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPD0gUFJPVE9fTEFTVDsgKytpKSB7Ci0g
ICAgaWYgKF9zdHJpY21wKFBST1RPX05BTUVTW2ldLCB2YWx1ZSkgPT0gMCkgeworICAgIGlmIChh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKFBST1RPX05BTUVTW2ldLCB2YWx1ZSkpIHsKICAgICAgICpw
cm90byA9IHN0YXRpY19jYXN0PFByb3RvY29sVHlwZT4oaSk7CiAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC0zOTksOSArMzk5LDkgQEAgdm9pZCBQb3J0OjpBZGRBZGRyZXNzKGNvbnN0IHJ0
Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlX3By
ZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmVsYXlfcHJlZmVyZW5j
ZSwKLSAgICAgICAgICAgICAgICAgICAgICBib29sIGZpbmFsKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc19maW5hbCkgewogICBBZGRBZGRyZXNzKGFkZHJlc3MsIGJhc2VfYWRkcmVz
cywgcmVsYXRlZF9hZGRyZXNzLCBwcm90b2NvbCwgcmVsYXlfcHJvdG9jb2wsCi0gICAgICAgICAg
ICAgdGNwdHlwZSwgdHlwZSwgdHlwZV9wcmVmZXJlbmNlLCByZWxheV9wcmVmZXJlbmNlLCAiIiwg
ZmluYWwpOworICAgICAgICAgICAgIHRjcHR5cGUsIHR5cGUsIHR5cGVfcHJlZmVyZW5jZSwgcmVs
YXlfcHJlZmVyZW5jZSwgIiIsIGlzX2ZpbmFsKTsKIH0KIAogdm9pZCBQb3J0OjpBZGRBZGRyZXNz
KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywKQEAgLTQzMCw0NCArNDMwLDYwIEBA
IHZvaWQgUG9ydDo6QWRkQWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3Ms
CiAgIGMuc2V0X25ldHdvcmtfbmFtZShuZXR3b3JrXy0+bmFtZSgpKTsKICAgYy5zZXRfbmV0d29y
a190eXBlKG5ldHdvcmtfLT50eXBlKCkpOwogICBjLnNldF91cmwodXJsKTsKKyAgYy5zZXRfcmVs
YXRlZF9hZGRyZXNzKHJlbGF0ZWRfYWRkcmVzcyk7CisKKyAgYm9vbCBwZW5kaW5nID0gTWF5YmVP
YmZ1c2NhdGVBZGRyZXNzKCZjLCB0eXBlLCBpc19maW5hbCk7CisKKyAgaWYgKCFwZW5kaW5nKSB7
CisgICAgRmluaXNoQWRkaW5nQWRkcmVzcyhjLCBpc19maW5hbCk7CisgIH0KK30KKworYm9vbCBQ
b3J0OjpNYXliZU9iZnVzY2F0ZUFkZHJlc3MoQ2FuZGlkYXRlKiBjLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzX2ZpbmFsKSB7CiAgIC8vIFRPRE8oYnVncy53ZWJy
dGMub3JnLzk3MjMpOiBVc2UgYSBjb25maWcgdG8gY29udHJvbCB0aGUgZmVhdHVyZSBvZiBJUAog
ICAvLyBoYW5kbGluZyB3aXRoIG1ETlMuCi0gIGlmIChuZXR3b3JrXy0+R2V0TURuc1Jlc3BvbmRl
cigpICE9IG51bGxwdHIpIHsKLSAgICAvLyBPYmZ1c2NhdGUgdGhlIElQIGFkZHJlc3Mgb2YgYSBo
b3N0IGNhbmRpZGF0ZXMgYnkgYW4gbUROUyBob3N0bmFtZS4KLSAgICBpZiAodHlwZSA9PSBMT0NB
TF9QT1JUX1RZUEUpIHsKLSAgICAgIGF1dG8gd2Vha19wdHIgPSB3ZWFrX2ZhY3RvcnlfLkdldFdl
YWtQdHIoKTsKLSAgICAgIGF1dG8gY2FsbGJhY2sgPSBbd2Vha19wdHIsIGMsIGlzX2ZpbmFsXShj
b25zdCBydGM6OklQQWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkgbXV0YWJsZSB7Ci0gICAg
ICAgIFJUQ19EQ0hFQ0soYy5hZGRyZXNzKCkuaXBhZGRyKCkgPT0gYWRkcik7Ci0gICAgICAgIHJ0
Yzo6U29ja2V0QWRkcmVzcyBob3N0bmFtZV9hZGRyZXNzKG5hbWUsIGMuYWRkcmVzcygpLnBvcnQo
KSk7Ci0gICAgICAgIC8vIEluIFBvcnQgYW5kIENvbm5lY3Rpb24sIHdlIG5lZWQgdGhlIElQIGFk
ZHJlc3MgaW5mb3JtYXRpb24gdG8KLSAgICAgICAgLy8gY29ycmVjdGx5IGhhbmRsZSB0aGUgdXBk
YXRlIG9mIGNhbmRpZGF0ZSB0eXBlIHRvIHByZmx4LiBUaGUgcmVtb3ZhbAotICAgICAgICAvLyBv
ZiBJUCBhZGRyZXNzIHdoZW4gc2lnbmFsaW5nIHRoaXMgY2FuZGlkYXRlIHdpbGwgdGFrZSBwbGFj
ZSBpbgotICAgICAgICAvLyBCYXNpY1BvcnRBbGxvY2F0b3JTZXNzaW9uOjpPbkNhbmRpZGF0ZVJl
YWR5LCB2aWEgU2FuaXRpemVDYW5kaWRhdGUuCi0gICAgICAgIGhvc3RuYW1lX2FkZHJlc3MuU2V0
UmVzb2x2ZWRJUChhZGRyKTsKLSAgICAgICAgYy5zZXRfYWRkcmVzcyhob3N0bmFtZV9hZGRyZXNz
KTsKLSAgICAgICAgUlRDX0RDSEVDSyhjLnJlbGF0ZWRfYWRkcmVzcygpID09IHJ0Yzo6U29ja2V0
QWRkcmVzcygpKTsKLSAgICAgICAgaWYgKHdlYWtfcHRyICE9IG51bGxwdHIpIHsKLSAgICAgICAg
ICB3ZWFrX3B0ci0+RmluaXNoQWRkaW5nQWRkcmVzcyhjLCBpc19maW5hbCk7Ci0gICAgICAgIH0K
LSAgICAgIH07Ci0gICAgICBuZXR3b3JrXy0+R2V0TURuc1Jlc3BvbmRlcigpLT5DcmVhdGVOYW1l
Rm9yQWRkcmVzcyhjLmFkZHJlc3MoKS5pcGFkZHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKTsKLSAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgLy8gRm9yIG90aGVyIHR5cGVzIG9mIGNhbmRpZGF0ZXMsIHRoZSByZWxh
dGVkIGFkZHJlc3Mgc2hvdWxkIGJlIHNldCB0bwotICAgIC8vIDAuMC4wLjAgb3IgOjowLgotICAg
IGMuc2V0X3JlbGF0ZWRfYWRkcmVzcyhydGM6OlNvY2tldEFkZHJlc3MoKSk7Ci0gIH0gZWxzZSB7
Ci0gICAgYy5zZXRfcmVsYXRlZF9hZGRyZXNzKHJlbGF0ZWRfYWRkcmVzcyk7CisgIGlmIChuZXR3
b3JrXy0+R2V0TWRuc1Jlc3BvbmRlcigpID09IG51bGxwdHIpIHsKKyAgICByZXR1cm4gZmFsc2U7
CisgIH0KKyAgaWYgKHR5cGUgIT0gTE9DQUxfUE9SVF9UWVBFKSB7CisgICAgcmV0dXJuIGZhbHNl
OwogICB9Ci0gIEZpbmlzaEFkZGluZ0FkZHJlc3MoYywgaXNfZmluYWwpOworCisgIGF1dG8gY29w
eSA9ICpjOworICBhdXRvIHdlYWtfcHRyID0gd2Vha19mYWN0b3J5Xy5HZXRXZWFrUHRyKCk7Cisg
IGF1dG8gY2FsbGJhY2sgPSBbd2Vha19wdHIsIGNvcHksIGlzX2ZpbmFsXShjb25zdCBydGM6OklQ
QWRkcmVzcyYgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSBtdXRhYmxlIHsKKyAgICBSVENfRENIRUNLKGNv
cHkuYWRkcmVzcygpLmlwYWRkcigpID09IGFkZHIpOworICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBo
b3N0bmFtZV9hZGRyZXNzKG5hbWUsIGNvcHkuYWRkcmVzcygpLnBvcnQoKSk7CisgICAgLy8gSW4g
UG9ydCBhbmQgQ29ubmVjdGlvbiwgd2UgbmVlZCB0aGUgSVAgYWRkcmVzcyBpbmZvcm1hdGlvbiB0
bworICAgIC8vIGNvcnJlY3RseSBoYW5kbGUgdGhlIHVwZGF0ZSBvZiBjYW5kaWRhdGUgdHlwZSB0
byBwcmZseC4gVGhlIHJlbW92YWwKKyAgICAvLyBvZiBJUCBhZGRyZXNzIHdoZW4gc2lnbmFsaW5n
IHRoaXMgY2FuZGlkYXRlIHdpbGwgdGFrZSBwbGFjZSBpbgorICAgIC8vIEJhc2ljUG9ydEFsbG9j
YXRvclNlc3Npb246Ok9uQ2FuZGlkYXRlUmVhZHksIHZpYSBTYW5pdGl6ZUNhbmRpZGF0ZS4KKyAg
ICBob3N0bmFtZV9hZGRyZXNzLlNldFJlc29sdmVkSVAoYWRkcik7CisgICAgY29weS5zZXRfYWRk
cmVzcyhob3N0bmFtZV9hZGRyZXNzKTsKKyAgICBjb3B5LnNldF9yZWxhdGVkX2FkZHJlc3MocnRj
OjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGlmICh3ZWFrX3B0ciAhPSBudWxscHRyKSB7CisgICAg
ICB3ZWFrX3B0ci0+c2V0X21kbnNfbmFtZV9yZWdpc3RyYXRpb25fc3RhdHVzKAorICAgICAgICAg
IE1kbnNOYW1lUmVnaXN0cmF0aW9uU3RhdHVzOjprQ29tcGxldGVkKTsKKyAgICAgIHdlYWtfcHRy
LT5GaW5pc2hBZGRpbmdBZGRyZXNzKGNvcHksIGlzX2ZpbmFsKTsKKyAgICB9CisgIH07CisgIHNl
dF9tZG5zX25hbWVfcmVnaXN0cmF0aW9uX3N0YXR1cyhNZG5zTmFtZVJlZ2lzdHJhdGlvblN0YXR1
czo6a0luUHJvZ3Jlc3MpOworICBuZXR3b3JrXy0+R2V0TWRuc1Jlc3BvbmRlcigpLT5DcmVhdGVO
YW1lRm9yQWRkcmVzcyhjb3B5LmFkZHJlc3MoKS5pcGFkZHIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2spOworICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBQb3J0OjpGaW5pc2hBZGRpbmdBZGRyZXNzKGNvbnN0IENhbmRpZGF0
ZSYgYywgYm9vbCBpc19maW5hbCkgewogICBjYW5kaWRhdGVzXy5wdXNoX2JhY2soYyk7CiAgIFNp
Z25hbENhbmRpZGF0ZVJlYWR5KHRoaXMsIGMpOwogCisgIFBvc3RBZGRBZGRyZXNzKGlzX2ZpbmFs
KTsKK30KKwordm9pZCBQb3J0OjpQb3N0QWRkQWRkcmVzcyhib29sIGlzX2ZpbmFsKSB7CiAgIGlm
IChpc19maW5hbCkgewogICAgIFNpZ25hbFBvcnRDb21wbGV0ZSh0aGlzKTsKICAgfQpAQCAtNzcz
LDcgKzc4OSw3IEBAIGJvb2wgUG9ydDo6SGFuZGxlSW5jb21pbmdQYWNrZXQocnRjOjpBc3luY1Bh
Y2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRy
ZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIFJUQ19OT1RSRUFDSEVEKCk7CiAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTEyMzYsNyArMTI1Miw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
T25TZW5kU3R1blBhY2tldChjb25zdCB2b2lkKiBkYXRhLAogCiB2b2lkIENvbm5lY3Rpb246Ok9u
UmVhZFBhY2tldChjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxJY2VNZXNzYWdl
PiBtc2c7CiAgIHN0ZDo6c3RyaW5nIHJlbW90ZV91ZnJhZzsKICAgY29uc3QgcnRjOjpTb2NrZXRB
ZGRyZXNzJiBhZGRyKHJlbW90ZV9jYW5kaWRhdGVfLmFkZHJlc3MoKSk7CkBAIC0xMjQ2LDcgKzEy
NjIsNyBAQCB2b2lkIENvbm5lY3Rpb246Ok9uUmVhZFBhY2tldChjb25zdCBjaGFyKiBkYXRhLAog
ICAgIGxhc3RfZGF0YV9yZWNlaXZlZF8gPSBydGM6OlRpbWVNaWxsaXMoKTsKICAgICBVcGRhdGVS
ZWNlaXZpbmcobGFzdF9kYXRhX3JlY2VpdmVkXyk7CiAgICAgcmVjdl9yYXRlX3RyYWNrZXJfLkFk
ZFNhbXBsZXMoc2l6ZSk7Ci0gICAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBkYXRhLCBzaXplLCBw
YWNrZXRfdGltZSk7CisgICAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBkYXRhLCBzaXplLCBwYWNr
ZXRfdGltZV91cyk7CiAKICAgICAvLyBJZiB0aW1lZCBvdXQgc2VuZGluZyB3cml0YWJpbGl0eSBj
aGVja3MsIHN0YXJ0IHVwIGFnYWluCiAgICAgaWYgKCFwcnVuZWRfICYmICh3cml0ZV9zdGF0ZV8g
PT0gU1RBVEVfV1JJVEVfVElNRU9VVCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnQuaAppbmRleCA4NTcxMWU0
MWY1NmY5Mzg5MmU0M2Q3MzNiOWE1Y2IzMDQ4Y2RhOTY3Li45YThmOTJhOTZlNDVmZDlhMzllOGNm
OGRiNGI1M2M1MzU2ZTY0MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydC5oCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAicnRjX2Jhc2UvcHJveHlpbmZvLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmF0
ZXRyYWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGly
ZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS93ZWFrX3B0ci5oIgpAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBD
b25uZWN0aW9uUmVxdWVzdDsKIGV4dGVybiBjb25zdCBjaGFyIExPQ0FMX1BPUlRfVFlQRVtdOwog
ZXh0ZXJuIGNvbnN0IGNoYXIgU1RVTl9QT1JUX1RZUEVbXTsKIGV4dGVybiBjb25zdCBjaGFyIFBS
RkxYX1BPUlRfVFlQRVtdOwotZXh0ZXJuIGNvbnN0IGNoYXIgUkVMQVlfUE9SVF9UWVBFW107CitS
VENfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyIFJFTEFZX1BPUlRfVFlQRVtdOwogCiAvLyBSRkMg
NjU0NCwgVENQIGNhbmRpZGF0ZSBlbmNvZGluZyBydWxlcy4KIGV4dGVybiBjb25zdCBpbnQgRElT
Q0FSRF9QT1JUOwpAQCAtODMsNiArODQsMTggQEAgZW51bSBjbGFzcyBJY2VDYW5kaWRhdGVQYWly
U3RhdGUgewogICAvLyBmcm96ZW4gYmVjYXVzZSB3ZSBoYXZlIG5vdCBpbXBsZW1lbnRlZCBJQ0Ug
ZnJlZXppbmcgbG9naWMuCiB9OwogCitlbnVtIGNsYXNzIE1kbnNOYW1lUmVnaXN0cmF0aW9uU3Rh
dHVzIHsKKyAgLy8gSVAgY29uY2VhbG1lbnQgd2l0aCBtRE5TIGlzIG5vdCBlbmFibGVkIG9yIHRo
ZSBuYW1lIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGlzCisgIC8vIG5vdCBzdGFydGVkIHlldC4KKyAg
a05vdFN0YXJ0ZWQsCisgIC8vIEEgcmVxdWVzdCB0byBjcmVhdGUgYW5kIHJlZ2lzdGVyIGFuIG1E
TlMgbmFtZSBmb3IgYSBsb2NhbCBJUCBhZGRyZXNzIG9mIGEKKyAgLy8gaG9zdCBjYW5kaWRhdGUg
aXMgc2VudCB0byB0aGUgbUROUyByZXNwb25kZXIuCisgIGtJblByb2dyZXNzLAorICAvLyBUaGUg
bmFtZSByZWdpc3RyYXRpb24gaXMgY29tcGxldGUgYW5kIHRoZSBjcmVhdGVkIG5hbWUgaXMgcmV0
dXJuZWQgYnkgdGhlCisgIC8vIG1ETlMgcmVzcG9uZGVyLgorICBrQ29tcGxldGVkLAorfTsKKwog
Ly8gU3RhdHMgdGhhdCB3ZSBjYW4gcmV0dXJuIGFib3V0IHRoZSBwb3J0IG9mIGEgU1RVTiBjYW5k
aWRhdGUuCiBjbGFzcyBTdHVuU3RhdHMgewogIHB1YmxpYzoKQEAgLTMwNSw3ICszMTgsNyBAQCBj
bGFzcyBQb3J0IDogcHVibGljIFBvcnRJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGlt
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90
aW1lX3VzKTsKIAogICAvLyBTaGFsbCB0aGUgcG9ydCBoYW5kbGUgcGFja2V0IGZyb20gdGhpcyB8
cmVtb3RlX2FkZHJ8LgogICAvLyBUaGlzIG1ldGhvZCBpcyBvdmVycmlkZGVuIGJ5IFR1cm5Qb3J0
LgpAQCAtMzkyLDcgKzQwNSw3IEBAIGNsYXNzIFBvcnQgOiBwdWJsaWMgUG9ydEludGVyZmFjZSwK
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlLAogICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgdHlwZV9wcmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgdWludDMy
X3QgcmVsYXlfcHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgIGJvb2wgZmluYWwpOworICAg
ICAgICAgICAgICAgICAgYm9vbCBpc19maW5hbCk7CiAKICAgdm9pZCBBZGRBZGRyZXNzKGNvbnN0
IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywKICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6U29ja2V0QWRkcmVzcyYgYmFzZV9hZGRyZXNzLApAQCAtNDA4LDYgKzQyMSw4IEBAIGNsYXNz
IFBvcnQgOiBwdWJsaWMgUG9ydEludGVyZmFjZSwKIAogICB2b2lkIEZpbmlzaEFkZGluZ0FkZHJl
c3MoY29uc3QgQ2FuZGlkYXRlJiBjLCBib29sIGlzX2ZpbmFsKTsKIAorICB2aXJ0dWFsIHZvaWQg
UG9zdEFkZEFkZHJlc3MoYm9vbCBpc19maW5hbCk7CisKICAgLy8gQWRkcyB0aGUgZ2l2ZW4gY29u
bmVjdGlvbiB0byB0aGUgbWFwIGtleWVkIGJ5IHRoZSByZW1vdGUgY2FuZGlkYXRlIGFkZHJlc3Mu
CiAgIC8vIElmIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gaGFzIHRoZSBzYW1lIGFkZHJlc3MsIHRo
ZSBleGlzdGluZyBvbmUgd2lsbCBiZQogICAvLyByZXBsYWNlZCBhbmQgZGVzdHJveWVkLgpAQCAt
NDQzLDYgKzQ1OCwxMyBAQCBjbGFzcyBQb3J0IDogcHVibGljIFBvcnRJbnRlcmZhY2UsCiAKICAg
dm9pZCBDb3B5UG9ydEluZm9ybWF0aW9uVG9QYWNrZXRJbmZvKHJ0Yzo6UGFja2V0SW5mbyogaW5m
bykgY29uc3Q7CiAKKyAgTWRuc05hbWVSZWdpc3RyYXRpb25TdGF0dXMgbWRuc19uYW1lX3JlZ2lz
dHJhdGlvbl9zdGF0dXMoKSBjb25zdCB7CisgICAgcmV0dXJuIG1kbnNfbmFtZV9yZWdpc3RyYXRp
b25fc3RhdHVzXzsKKyAgfQorICB2b2lkIHNldF9tZG5zX25hbWVfcmVnaXN0cmF0aW9uX3N0YXR1
cyhNZG5zTmFtZVJlZ2lzdHJhdGlvblN0YXR1cyBzdGF0dXMpIHsKKyAgICBtZG5zX25hbWVfcmVn
aXN0cmF0aW9uX3N0YXR1c18gPSBzdGF0dXM7CisgIH0KKwogIHByaXZhdGU6CiAgIHZvaWQgQ29u
c3RydWN0KCk7CiAgIC8vIENhbGxlZCB3aGVuIG9uZSBvZiBvdXIgY29ubmVjdGlvbnMgZGVsZXRl
cyBpdHNlbGYuCkBAIC00ODcsOSArNTA5LDE1IEBAIGNsYXNzIFBvcnQgOiBwdWJsaWMgUG9ydElu
dGVyZmFjZSwKICAgaW50MTZfdCBuZXR3b3JrX2Nvc3RfOwogICBTdGF0ZSBzdGF0ZV8gPSBTdGF0
ZTo6SU5JVDsKICAgaW50NjRfdCBsYXN0X3RpbWVfYWxsX2Nvbm5lY3Rpb25zX3JlbW92ZWRfID0g
MDsKKyAgTWRuc05hbWVSZWdpc3RyYXRpb25TdGF0dXMgbWRuc19uYW1lX3JlZ2lzdHJhdGlvbl9z
dGF0dXNfID0KKyAgICAgIE1kbnNOYW1lUmVnaXN0cmF0aW9uU3RhdHVzOjprTm90U3RhcnRlZDsK
IAogICBydGM6OldlYWtQdHJGYWN0b3J5PFBvcnQ+IHdlYWtfZmFjdG9yeV87CiAKKyAgYm9vbCBN
YXliZU9iZnVzY2F0ZUFkZHJlc3MoQ2FuZGlkYXRlKiBjLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc19maW5hbCk7CisKICAgZnJpZW5kIGNsYXNzIENvbm5lY3Rpb247CiB9Owog
CkBAIC01NzgsMTUgKzYwNiwxMiBAQCBjbGFzcyBDb25uZWN0aW9uIDogcHVibGljIENhbmRpZGF0
ZVBhaXJJbnRlcmZhY2UsCiAgIC8vIEVycm9yIGlmIFNlbmQoKSByZXR1cm5zIDwgMAogICB2aXJ0
dWFsIGludCBHZXRFcnJvcigpID0gMDsKIAotICBzaWdzbG90OjpzaWduYWw0PENvbm5lY3Rpb24q
LCBjb25zdCBjaGFyKiwgc2l6ZV90LCBjb25zdCBydGM6OlBhY2tldFRpbWUmPgotICAgICAgU2ln
bmFsUmVhZFBhY2tldDsKKyAgc2lnc2xvdDo6c2lnbmFsNDxDb25uZWN0aW9uKiwgY29uc3QgY2hh
ciosIHNpemVfdCwgaW50NjRfdD4gU2lnbmFsUmVhZFBhY2tldDsKIAogICBzaWdzbG90OjpzaWdu
YWwxPENvbm5lY3Rpb24qPiBTaWduYWxSZWFkeVRvU2VuZDsKIAogICAvLyBDYWxsZWQgd2hlbiBh
IHBhY2tldCBpcyByZWNlaXZlZCBvbiB0aGlzIGNvbm5lY3Rpb24uCi0gIHZvaWQgT25SZWFkUGFj
a2V0KGNvbnN0IGNoYXIqIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsK
KyAgdm9pZCBPblJlYWRQYWNrZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIGludDY0
X3QgcGFja2V0X3RpbWVfdXMpOwogCiAgIC8vIENhbGxlZCB3aGVuIHRoZSBzb2NrZXQgaXMgY3Vy
cmVudGx5IGFibGUgdG8gc2VuZC4KICAgdm9pZCBPblJlYWR5VG9TZW5kKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvcG9ydF91bml0dGVzdC5jYwppbmRleCA1MDI4MDMwMWQ0Y2UxOGZmYmY3YjFlYjU3
YjBiOGZkM2FkNTViNzEyLi43MTkyOTQyM2NiNjIwMDQ4ZTBlMzIxODMzNjJiNjYyMTZkOTk0Mjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9wb3J0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRfdW5pdHRlc3QuY2MKQEAgLTkxLDE4ICs5MSwx
OCBAQCBTb2NrZXRBZGRyZXNzIEdldEFkZHJlc3MoUG9ydCogcG9ydCkgewogICByZXR1cm4gR2V0
Q2FuZGlkYXRlKHBvcnQpLmFkZHJlc3MoKTsKIH0KIAotSWNlTWVzc2FnZSogQ29weVN0dW5NZXNz
YWdlKGNvbnN0IEljZU1lc3NhZ2UqIHNyYykgewotICBJY2VNZXNzYWdlKiBkc3QgPSBuZXcgSWNl
TWVzc2FnZSgpOworc3RkOjp1bmlxdWVfcHRyPEljZU1lc3NhZ2U+IENvcHlTdHVuTWVzc2FnZShj
b25zdCBJY2VNZXNzYWdlJiBzcmMpIHsKKyAgYXV0byBkc3QgPSBhYnNsOjptYWtlX3VuaXF1ZTxJ
Y2VNZXNzYWdlPigpOwogICBCeXRlQnVmZmVyV3JpdGVyIGJ1ZjsKLSAgc3JjLT5Xcml0ZSgmYnVm
KTsKKyAgc3JjLldyaXRlKCZidWYpOwogICBCeXRlQnVmZmVyUmVhZGVyIHJlYWRfYnVmKGJ1Zik7
CiAgIGRzdC0+UmVhZCgmcmVhZF9idWYpOwogICByZXR1cm4gZHN0OwogfQogCi1ib29sIFdyaXRl
U3R1bk1lc3NhZ2UoY29uc3QgU3R1bk1lc3NhZ2UqIG1zZywgQnl0ZUJ1ZmZlcldyaXRlciogYnVm
KSB7Citib29sIFdyaXRlU3R1bk1lc3NhZ2UoY29uc3QgU3R1bk1lc3NhZ2UmIG1zZywgQnl0ZUJ1
ZmZlcldyaXRlciogYnVmKSB7CiAgIGJ1Zi0+UmVzaXplKDApOyAgLy8gY2xlYXIgb3V0IGFueSBl
eGlzdGluZyBidWZmZXIgY29udGVudHMKLSAgcmV0dXJuIG1zZy0+V3JpdGUoYnVmKTsKKyAgcmV0
dXJuIG1zZy5Xcml0ZShidWYpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTE4OSwxNyArMTg5
LDE1IEBAIGNsYXNzIFRlc3RQb3J0IDogcHVibGljIFBvcnQgewogICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpQYWNrZXRPcHRpb25zJiBvcHRpb25zLAogICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBwYXlsb2FkKSB7CiAgICAgaWYgKCFwYXlsb2FkKSB7Ci0gICAgICBJY2VNZXNzYWdl
KiBtc2cgPSBuZXcgSWNlTWVzc2FnZTsKLSAgICAgIGF1dG8qIGJ1ZiA9Ci0gICAgICAgICAgbmV3
IHJ0Yzo6QnVmZmVyVDx1aW50OF90PihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNp
emUpOworICAgICAgYXV0byBtc2cgPSBhYnNsOjptYWtlX3VuaXF1ZTxJY2VNZXNzYWdlPigpOwor
ICAgICAgYXV0byBidWYgPSBhYnNsOjptYWtlX3VuaXF1ZTxydGM6OkJ1ZmZlclQ8dWludDhfdD4+
KAorICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6ZSk7CiAgICAg
ICBCeXRlQnVmZmVyUmVhZGVyIHJlYWRfYnVmKCpidWYpOwogICAgICAgaWYgKCFtc2ctPlJlYWQo
JnJlYWRfYnVmKSkgewotICAgICAgICBkZWxldGUgbXNnOwotICAgICAgICBkZWxldGUgYnVmOwog
ICAgICAgICByZXR1cm4gLTE7CiAgICAgICB9Ci0gICAgICBsYXN0X3N0dW5fYnVmXy5yZXNldChi
dWYpOwotICAgICAgbGFzdF9zdHVuX21zZ18ucmVzZXQobXNnKTsKKyAgICAgIGxhc3Rfc3R1bl9i
dWZfID0gc3RkOjptb3ZlKGJ1Zik7CisgICAgICBsYXN0X3N0dW5fbXNnXyA9IHN0ZDo6bW92ZSht
c2cpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzaXplKTsKICAgfQpAQCAt
MjM0LDI0ICsyMzIsMTggQEAgc3RhdGljIHZvaWQgU2VuZFBpbmdBbmRSZWNlaXZlUmVzcG9uc2Uo
Q29ubmVjdGlvbiogbGNvbm4sCiAgIEFTU0VSVF9UUlVFX1dBSVQobHBvcnQtPmxhc3Rfc3R1bl9t
c2coKSwga0RlZmF1bHRUaW1lb3V0KTsKICAgQVNTRVJUX1RSVUUobHBvcnQtPmxhc3Rfc3R1bl9i
dWYoKSk7CiAgIHJjb25uLT5PblJlYWRQYWNrZXQobHBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+ZGF0
YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVmKCkt
PnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgIGxwb3J0
LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBj
bG9jay0+QWR2YW5jZVRpbWUod2VicnRjOjpUaW1lRGVsdGE6Om1zKG1zKSk7CiAgIEFTU0VSVF9U
UlVFX1dBSVQocnBvcnQtPmxhc3Rfc3R1bl9tc2coKSwga0RlZmF1bHRUaW1lb3V0KTsKICAgQVNT
RVJUX1RSVUUocnBvcnQtPmxhc3Rfc3R1bl9idWYoKSk7CiAgIGxjb25uLT5PblJlYWRQYWNrZXQo
cnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAg
ICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyog
cGFja2V0X3RpbWVfdXMgKi8gLTEpOwogfQogCiBjbGFzcyBUZXN0Q2hhbm5lbCA6IHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgcHVibGljOgogICAvLyBUYWtlcyBvd25lcnNoaXAgb2Yg
fHAxfCAoYnV0IG5vdCB8cDJ8KS4KLSAgZXhwbGljaXQgVGVzdENoYW5uZWwoUG9ydCogcDEpCi0g
ICAgICA6IGljZV9tb2RlXyhJQ0VNT0RFX0ZVTEwpLAotICAgICAgICBwb3J0XyhwMSksCi0gICAg
ICAgIGNvbXBsZXRlX2NvdW50XygwKSwKLSAgICAgICAgY29ubl8oTlVMTCksCi0gICAgICAgIHJl
bW90ZV9yZXF1ZXN0XygpLAotICAgICAgICBub21pbmF0ZWRfKGZhbHNlKSB7CisgIGV4cGxpY2l0
IFRlc3RDaGFubmVsKHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBwMSkgOiBwb3J0XyhzdGQ6Om1vdmUo
cDEpKSB7CiAgICAgcG9ydF8tPlNpZ25hbFBvcnRDb21wbGV0ZS5jb25uZWN0KHRoaXMsICZUZXN0
Q2hhbm5lbDo6T25Qb3J0Q29tcGxldGUpOwogICAgIHBvcnRfLT5TaWduYWxVbmtub3duQWRkcmVz
cy5jb25uZWN0KHRoaXMsICZUZXN0Q2hhbm5lbDo6T25Vbmtub3duQWRkcmVzcyk7CiAgICAgcG9y
dF8tPlNpZ25hbERlc3Ryb3llZC5jb25uZWN0KHRoaXMsICZUZXN0Q2hhbm5lbDo6T25TcmNQb3J0
RGVzdHJveWVkKTsKQEAgLTMyNyw3ICszMTksNyBAQCBjbGFzcyBUZXN0Q2hhbm5lbCA6IHB1Ymxp
YyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgRVhQRUNUX1RSVUUobWlfYXR0ciAhPSBOVUxM
KTsKICAgICBFWFBFQ1RfVFJVRShmaW5nZXJwcmludF9hdHRyICE9IE5VTEwpOwogICAgIHJlbW90
ZV9hZGRyZXNzXyA9IGFkZHI7Ci0gICAgcmVtb3RlX3JlcXVlc3RfLnJlc2V0KENvcHlTdHVuTWVz
c2FnZShtc2cpKTsKKyAgICByZW1vdGVfcmVxdWVzdF8gPSBDb3B5U3R1bk1lc3NhZ2UoKm1zZyk7
CiAgICAgcmVtb3RlX2ZyYWdfID0gcmY7CiAgIH0KIApAQCAtMzYyLDE1ICszNTQsMTUgQEAgY2xh
c3MgVGVzdENoYW5uZWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIGNvbm5l
Y3Rpb25fcmVhZHlfdG9fc2VuZF8gPSB0cnVlOwogICB9CiAKLSAgSWNlTW9kZSBpY2VfbW9kZV87
CisgIEljZU1vZGUgaWNlX21vZGVfID0gSUNFTU9ERV9GVUxMOwogICBzdGQ6OnVuaXF1ZV9wdHI8
UG9ydD4gcG9ydF87CiAKLSAgaW50IGNvbXBsZXRlX2NvdW50XzsKLSAgQ29ubmVjdGlvbiogY29u
bl87CisgIGludCBjb21wbGV0ZV9jb3VudF8gPSAwOworICBDb25uZWN0aW9uKiBjb25uXyA9IG51
bGxwdHI7CiAgIFNvY2tldEFkZHJlc3MgcmVtb3RlX2FkZHJlc3NfOwogICBzdGQ6OnVuaXF1ZV9w
dHI8U3R1bk1lc3NhZ2U+IHJlbW90ZV9yZXF1ZXN0XzsKICAgc3RkOjpzdHJpbmcgcmVtb3RlX2Zy
YWdfOwotICBib29sIG5vbWluYXRlZF87CisgIGJvb2wgbm9taW5hdGVkXyA9IGZhbHNlOwogICBi
b29sIGNvbm5lY3Rpb25fcmVhZHlfdG9fc2VuZF8gPSBmYWxzZTsKIH07CiAKQEAgLTQwMCw4MiAr
MzkyLDg1IEBAIGNsYXNzIFBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiB7CiAKICBwcm90ZWN0ZWQ6CiAgIHZvaWQgVGVzdExvY2FsVG9M
b2NhbCgpIHsKLSAgICBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwor
ICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKICAgICBwb3J0MS0+
U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKLSAgICBQb3J0KiBwb3J0
MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOworICAgIGF1dG8gcG9ydDIgPSBDcmVhdGVV
ZHBQb3J0KGtMb2NhbEFkZHIyKTsKICAgICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VS
T0xFX0NPTlRST0xMRUQpOwotICAgIFRlc3RDb25uZWN0aXZpdHkoInVkcCIsIHBvcnQxLCAidWRw
IiwgcG9ydDIsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOworICAgIFRlc3RDb25uZWN0aXZpdHko
InVkcCIsIHN0ZDo6bW92ZShwb3J0MSksICJ1ZHAiLCBzdGQ6Om1vdmUocG9ydDIpLCB0cnVlLAor
ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CiAgIH0KICAgdm9pZCBUZXN0
TG9jYWxUb1N0dW4oTkFUVHlwZSBudHlwZSkgewotICAgIFBvcnQqIHBvcnQxID0gQ3JlYXRlVWRw
UG9ydChrTG9jYWxBZGRyMSk7CisgICAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2Fs
QWRkcjEpOwogICAgIHBvcnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJ
TkcpOwotICAgIG5hdF9zZXJ2ZXIyXy5yZXNldChDcmVhdGVOYXRTZXJ2ZXIoa05hdEFkZHIyLCBu
dHlwZSkpOwotICAgIFBvcnQqIHBvcnQyID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjIsICZu
YXRfc29ja2V0X2ZhY3RvcnkyXyk7CisgICAgbmF0X3NlcnZlcjJfID0gQ3JlYXRlTmF0U2VydmVy
KGtOYXRBZGRyMiwgbnR5cGUpOworICAgIGF1dG8gcG9ydDIgPSBDcmVhdGVTdHVuUG9ydChrTG9j
YWxBZGRyMiwgJm5hdF9zb2NrZXRfZmFjdG9yeTJfKTsKICAgICBwb3J0Mi0+U2V0SWNlUm9sZShj
cmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwotICAgIFRlc3RDb25uZWN0aXZpdHkoInVkcCIs
IHBvcnQxLCBTdHVuTmFtZShudHlwZSksIHBvcnQyLAorICAgIFRlc3RDb25uZWN0aXZpdHkoInVk
cCIsIHN0ZDo6bW92ZShwb3J0MSksIFN0dW5OYW1lKG50eXBlKSwgc3RkOjptb3ZlKHBvcnQyKSwK
ICAgICAgICAgICAgICAgICAgICAgIG50eXBlID09IE5BVF9PUEVOX0NPTkUsIHRydWUsIG50eXBl
ICE9IE5BVF9TWU1NRVRSSUMsCiAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgfQogICB2
b2lkIFRlc3RMb2NhbFRvUmVsYXkoUmVsYXlUeXBlIHJ0eXBlLCBQcm90b2NvbFR5cGUgcHJvdG8p
IHsKLSAgICBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOworICAgIGF1
dG8gcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKICAgICBwb3J0MS0+U2V0SWNl
Um9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKLSAgICBQb3J0KiBwb3J0MiA9IENy
ZWF0ZVJlbGF5UG9ydChrTG9jYWxBZGRyMiwgcnR5cGUsIHByb3RvLCBQUk9UT19VRFApOworICAg
IGF1dG8gcG9ydDIgPSBDcmVhdGVSZWxheVBvcnQoa0xvY2FsQWRkcjIsIHJ0eXBlLCBwcm90bywg
UFJPVE9fVURQKTsKICAgICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRS
T0xMRUQpOwotICAgIFRlc3RDb25uZWN0aXZpdHkoInVkcCIsIHBvcnQxLCBSZWxheU5hbWUocnR5
cGUsIHByb3RvKSwgcG9ydDIsCi0gICAgICAgICAgICAgICAgICAgICBydHlwZSA9PSBSRUxBWV9H
VFVSTiwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgVGVzdENvbm5lY3Rpdml0eSgidWRwIiwgc3Rk
Ojptb3ZlKHBvcnQxKSwgUmVsYXlOYW1lKHJ0eXBlLCBwcm90byksCisgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1vdmUocG9ydDIpLCBydHlwZSA9PSBSRUxBWV9HVFVSTiwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSk7CiAgIH0KICAgdm9pZCBUZXN0U3R1blRvTG9jYWwoTkFUVHlwZSBudHlwZSkgewotICAg
IG5hdF9zZXJ2ZXIxXy5yZXNldChDcmVhdGVOYXRTZXJ2ZXIoa05hdEFkZHIxLCBudHlwZSkpOwot
ICAgIFBvcnQqIHBvcnQxID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsICZuYXRfc29ja2V0
X2ZhY3RvcnkxXyk7CisgICAgbmF0X3NlcnZlcjFfID0gQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRy
MSwgbnR5cGUpOworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwg
Jm5hdF9zb2NrZXRfZmFjdG9yeTFfKTsKICAgICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJ
Q0VST0xFX0NPTlRST0xMSU5HKTsKLSAgICBQb3J0KiBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xv
Y2FsQWRkcjIpOworICAgIGF1dG8gcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsK
ICAgICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwotICAg
IFRlc3RDb25uZWN0aXZpdHkoU3R1bk5hbWUobnR5cGUpLCBwb3J0MSwgInVkcCIsIHBvcnQyLCB0
cnVlLAotICAgICAgICAgICAgICAgICAgICAgbnR5cGUgIT0gTkFUX1NZTU1FVFJJQywgdHJ1ZSwg
dHJ1ZSk7CisgICAgVGVzdENvbm5lY3Rpdml0eShTdHVuTmFtZShudHlwZSksIHN0ZDo6bW92ZShw
b3J0MSksICJ1ZHAiLCBzdGQ6Om1vdmUocG9ydDIpLAorICAgICAgICAgICAgICAgICAgICAgdHJ1
ZSwgbnR5cGUgIT0gTkFUX1NZTU1FVFJJQywgdHJ1ZSwgdHJ1ZSk7CiAgIH0KICAgdm9pZCBUZXN0
U3R1blRvU3R1bihOQVRUeXBlIG50eXBlMSwgTkFUVHlwZSBudHlwZTIpIHsKLSAgICBuYXRfc2Vy
dmVyMV8ucmVzZXQoQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMSwgbnR5cGUxKSk7Ci0gICAgUG9y
dCogcG9ydDEgPSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgJm5hdF9zb2NrZXRfZmFjdG9y
eTFfKTsKKyAgICBuYXRfc2VydmVyMV8gPSBDcmVhdGVOYXRTZXJ2ZXIoa05hdEFkZHIxLCBudHlw
ZTEpOworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgJm5hdF9z
b2NrZXRfZmFjdG9yeTFfKTsKICAgICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xF
X0NPTlRST0xMSU5HKTsKLSAgICBuYXRfc2VydmVyMl8ucmVzZXQoQ3JlYXRlTmF0U2VydmVyKGtO
YXRBZGRyMiwgbnR5cGUyKSk7Ci0gICAgUG9ydCogcG9ydDIgPSBDcmVhdGVTdHVuUG9ydChrTG9j
YWxBZGRyMiwgJm5hdF9zb2NrZXRfZmFjdG9yeTJfKTsKKyAgICBuYXRfc2VydmVyMl8gPSBDcmVh
dGVOYXRTZXJ2ZXIoa05hdEFkZHIyLCBudHlwZTIpOworICAgIGF1dG8gcG9ydDIgPSBDcmVhdGVT
dHVuUG9ydChrTG9jYWxBZGRyMiwgJm5hdF9zb2NrZXRfZmFjdG9yeTJfKTsKICAgICBwb3J0Mi0+
U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwotICAgIFRlc3RDb25uZWN0
aXZpdHkoU3R1bk5hbWUobnR5cGUxKSwgcG9ydDEsIFN0dW5OYW1lKG50eXBlMiksIHBvcnQyLAot
ICAgICAgICAgICAgICAgICAgICAgbnR5cGUyID09IE5BVF9PUEVOX0NPTkUsIG50eXBlMSAhPSBO
QVRfU1lNTUVUUklDLAotICAgICAgICAgICAgICAgICAgICAgbnR5cGUyICE9IE5BVF9TWU1NRVRS
SUMsCisgICAgVGVzdENvbm5lY3Rpdml0eShTdHVuTmFtZShudHlwZTEpLCBzdGQ6Om1vdmUocG9y
dDEpLCBTdHVuTmFtZShudHlwZTIpLAorICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHBv
cnQyKSwgbnR5cGUyID09IE5BVF9PUEVOX0NPTkUsCisgICAgICAgICAgICAgICAgICAgICBudHlw
ZTEgIT0gTkFUX1NZTU1FVFJJQywgbnR5cGUyICE9IE5BVF9TWU1NRVRSSUMsCiAgICAgICAgICAg
ICAgICAgICAgICBudHlwZTEgKyBudHlwZTIgPCAoTkFUX1BPUlRfUkVTVFJJQ1RFRCArIE5BVF9T
WU1NRVRSSUMpKTsKICAgfQogICB2b2lkIFRlc3RTdHVuVG9SZWxheShOQVRUeXBlIG50eXBlLCBS
ZWxheVR5cGUgcnR5cGUsIFByb3RvY29sVHlwZSBwcm90bykgewotICAgIG5hdF9zZXJ2ZXIxXy5y
ZXNldChDcmVhdGVOYXRTZXJ2ZXIoa05hdEFkZHIxLCBudHlwZSkpOwotICAgIFBvcnQqIHBvcnQx
ID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsICZuYXRfc29ja2V0X2ZhY3RvcnkxXyk7Cisg
ICAgbmF0X3NlcnZlcjFfID0gQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMSwgbnR5cGUpOworICAg
IGF1dG8gcG9ydDEgPSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgJm5hdF9zb2NrZXRfZmFj
dG9yeTFfKTsKICAgICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xM
SU5HKTsKLSAgICBQb3J0KiBwb3J0MiA9IENyZWF0ZVJlbGF5UG9ydChrTG9jYWxBZGRyMiwgcnR5
cGUsIHByb3RvLCBQUk9UT19VRFApOworICAgIGF1dG8gcG9ydDIgPSBDcmVhdGVSZWxheVBvcnQo
a0xvY2FsQWRkcjIsIHJ0eXBlLCBwcm90bywgUFJPVE9fVURQKTsKICAgICBwb3J0Mi0+U2V0SWNl
Um9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwotICAgIFRlc3RDb25uZWN0aXZpdHko
U3R1bk5hbWUobnR5cGUpLCBwb3J0MSwgUmVsYXlOYW1lKHJ0eXBlLCBwcm90byksIHBvcnQyLAot
ICAgICAgICAgICAgICAgICAgICAgcnR5cGUgPT0gUkVMQVlfR1RVUk4sIG50eXBlICE9IE5BVF9T
WU1NRVRSSUMsIHRydWUsIHRydWUpOworICAgIFRlc3RDb25uZWN0aXZpdHkoU3R1bk5hbWUobnR5
cGUpLCBzdGQ6Om1vdmUocG9ydDEpLCBSZWxheU5hbWUocnR5cGUsIHByb3RvKSwKKyAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bW92ZShwb3J0MiksIHJ0eXBlID09IFJFTEFZX0dUVVJOLAorICAg
ICAgICAgICAgICAgICAgICAgbnR5cGUgIT0gTkFUX1NZTU1FVFJJQywgdHJ1ZSwgdHJ1ZSk7CiAg
IH0KICAgdm9pZCBUZXN0VGNwVG9UY3AoKSB7Ci0gICAgUG9ydCogcG9ydDEgPSBDcmVhdGVUY3BQ
b3J0KGtMb2NhbEFkZHIxKTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxB
ZGRyMSk7CiAgICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElO
Ryk7Ci0gICAgUG9ydCogcG9ydDIgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIyKTsKKyAgICBh
dXRvIHBvcnQyID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMik7CiAgICAgcG9ydDItPlNldElj
ZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKLSAgICBUZXN0Q29ubmVjdGl2aXR5
KCJ0Y3AiLCBwb3J0MSwgInRjcCIsIHBvcnQyLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7Cisg
ICAgVGVzdENvbm5lY3Rpdml0eSgidGNwIiwgc3RkOjptb3ZlKHBvcnQxKSwgInRjcCIsIHN0ZDo6
bW92ZShwb3J0MiksIHRydWUsCisgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgdHJ1ZSwgdHJ1
ZSk7CiAgIH0KICAgdm9pZCBUZXN0VGNwVG9SZWxheShSZWxheVR5cGUgcnR5cGUsIFByb3RvY29s
VHlwZSBwcm90bykgewotICAgIFBvcnQqIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRy
MSk7CisgICAgYXV0byBwb3J0MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpOwogICAgIHBv
cnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwotICAgIFBvcnQq
IHBvcnQyID0gQ3JlYXRlUmVsYXlQb3J0KGtMb2NhbEFkZHIyLCBydHlwZSwgcHJvdG8sIFBST1RP
X1RDUCk7CisgICAgYXV0byBwb3J0MiA9IENyZWF0ZVJlbGF5UG9ydChrTG9jYWxBZGRyMiwgcnR5
cGUsIHByb3RvLCBQUk9UT19UQ1ApOwogICAgIHBvcnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklD
RVJPTEVfQ09OVFJPTExFRCk7Ci0gICAgVGVzdENvbm5lY3Rpdml0eSgidGNwIiwgcG9ydDEsIFJl
bGF5TmFtZShydHlwZSwgcHJvdG8pLCBwb3J0MiwKLSAgICAgICAgICAgICAgICAgICAgIHJ0eXBl
ID09IFJFTEFZX0dUVVJOLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgVGVzdENvbm5lY3Rpdml0
eSgidGNwIiwgc3RkOjptb3ZlKHBvcnQxKSwgUmVsYXlOYW1lKHJ0eXBlLCBwcm90byksCisgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUocG9ydDIpLCBydHlwZSA9PSBSRUxBWV9HVFVSTiwg
ZmFsc2UsIHRydWUsIHRydWUpOwogICB9CiAgIHZvaWQgVGVzdFNzbFRjcFRvUmVsYXkoUmVsYXlU
eXBlIHJ0eXBlLCBQcm90b2NvbFR5cGUgcHJvdG8pIHsKLSAgICBQb3J0KiBwb3J0MSA9IENyZWF0
ZVRjcFBvcnQoa0xvY2FsQWRkcjEpOworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVUY3BQb3J0KGtM
b2NhbEFkZHIxKTsKICAgICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRS
T0xMSU5HKTsKLSAgICBQb3J0KiBwb3J0MiA9IENyZWF0ZVJlbGF5UG9ydChrTG9jYWxBZGRyMiwg
cnR5cGUsIHByb3RvLCBQUk9UT19TU0xUQ1ApOworICAgIGF1dG8gcG9ydDIgPSBDcmVhdGVSZWxh
eVBvcnQoa0xvY2FsQWRkcjIsIHJ0eXBlLCBwcm90bywgUFJPVE9fU1NMVENQKTsKICAgICBwb3J0
Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwotICAgIFRlc3RDb25u
ZWN0aXZpdHkoInNzbHRjcCIsIHBvcnQxLCBSZWxheU5hbWUocnR5cGUsIHByb3RvKSwgcG9ydDIs
Ci0gICAgICAgICAgICAgICAgICAgICBydHlwZSA9PSBSRUxBWV9HVFVSTiwgZmFsc2UsIHRydWUs
IHRydWUpOworICAgIFRlc3RDb25uZWN0aXZpdHkoInNzbHRjcCIsIHN0ZDo6bW92ZShwb3J0MSks
IFJlbGF5TmFtZShydHlwZSwgcHJvdG8pLAorICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3Zl
KHBvcnQyKSwgcnR5cGUgPT0gUkVMQVlfR1RVUk4sIGZhbHNlLCB0cnVlLCB0cnVlKTsKICAgfQog
CiAgIHJ0Yzo6TmV0d29yayogTWFrZU5ldHdvcmsoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkcikg
ewpAQCAtNDg1LDcxICs0ODAsNzEgQEAgY2xhc3MgUG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCwgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgfQogCiAgIC8vIGhlbHBlcnMg
Zm9yIGFib3ZlIGZ1bmN0aW9ucwotICBVRFBQb3J0KiBDcmVhdGVVZHBQb3J0KGNvbnN0IFNvY2tl
dEFkZHJlc3MmIGFkZHIpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFVEUFBvcnQ+IENyZWF0ZVVkcFBv
cnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkcikgewogICAgIHJldHVybiBDcmVhdGVVZHBQb3J0
KGFkZHIsICZzb2NrZXRfZmFjdG9yeV8pOwogICB9Ci0gIFVEUFBvcnQqIENyZWF0ZVVkcFBvcnQo
Y29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQYWNr
ZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFjdG9yeSkgeworICBzdGQ6OnVuaXF1ZV9wdHI8VURQ
UG9ydD4gQ3JlYXRlVWRwUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2Nr
ZXRfZmFjdG9yeSkgewogICAgIHJldHVybiBVRFBQb3J0OjpDcmVhdGUoJm1haW5fLCBzb2NrZXRf
ZmFjdG9yeSwgTWFrZU5ldHdvcmsoYWRkciksIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c2VybmFtZV8sIHBhc3N3b3JkXywgc3RkOjpzdHJpbmcoKSwgdHJ1ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFic2w6Om51bGxvcHQpOwogICB9Ci0gIFRDUFBvcnQqIENyZWF0
ZVRjcFBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkcikgeworICBzdGQ6OnVuaXF1ZV9wdHI8
VENQUG9ydD4gQ3JlYXRlVGNwUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyKSB7CiAgICAg
cmV0dXJuIENyZWF0ZVRjcFBvcnQoYWRkciwgJnNvY2tldF9mYWN0b3J5Xyk7CiAgIH0KLSAgVENQ
UG9ydCogQ3JlYXRlVGNwUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5KSB7Cisg
IHN0ZDo6dW5pcXVlX3B0cjxUQ1BQb3J0PiBDcmVhdGVUY3BQb3J0KGNvbnN0IFNvY2tldEFkZHJl
c3MmIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tl
dFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5KSB7CiAgICAgcmV0dXJuIFRDUFBvcnQ6OkNy
ZWF0ZSgmbWFpbl8sIHNvY2tldF9mYWN0b3J5LCBNYWtlTmV0d29yayhhZGRyKSwgMCwgMCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lXywgcGFzc3dvcmRfLCB0cnVlKTsKICAg
fQotICBTdHVuUG9ydCogQ3JlYXRlU3R1blBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogZmFj
dG9yeSkgeworICBzdGQ6OnVuaXF1ZV9wdHI8U3R1blBvcnQ+IENyZWF0ZVN0dW5Qb3J0KGNvbnN0
IFNvY2tldEFkZHJlc3MmIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5KSB7CiAgICAgU2VydmVy
QWRkcmVzc2VzIHN0dW5fc2VydmVyczsKICAgICBzdHVuX3NlcnZlcnMuaW5zZXJ0KGtTdHVuQWRk
cik7CiAgICAgcmV0dXJuIFN0dW5Qb3J0OjpDcmVhdGUoJm1haW5fLCBmYWN0b3J5LCBNYWtlTmV0
d29yayhhZGRyKSwgMCwgMCwgdXNlcm5hbWVfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhc3N3b3JkXywgc3R1bl9zZXJ2ZXJzLCBzdGQ6OnN0cmluZygpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6Om51bGxvcHQpOwogICB9Ci0gIFBvcnQqIENyZWF0ZVJlbGF5UG9y
dChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgUmVs
YXlUeXBlIHJ0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGludF9w
cm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBleHRfcHJvdG8pIHsK
KyAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IENyZWF0ZVJlbGF5UG9ydChjb25zdCBTb2NrZXRBZGRy
ZXNzJiBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF5
VHlwZSBydHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90
b2NvbFR5cGUgaW50X3Byb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFByb3RvY29sVHlwZSBleHRfcHJvdG8pIHsKICAgICBpZiAocnR5cGUgPT0gUkVMQVlfVFVS
TikgewogICAgICAgcmV0dXJuIENyZWF0ZVR1cm5Qb3J0KGFkZHIsICZzb2NrZXRfZmFjdG9yeV8s
IGludF9wcm90bywgZXh0X3Byb3RvKTsKICAgICB9IGVsc2UgewogICAgICAgcmV0dXJuIENyZWF0
ZUd0dXJuUG9ydChhZGRyLCBpbnRfcHJvdG8sIGV4dF9wcm90byk7CiAgICAgfQogICB9Ci0gIFR1
cm5Qb3J0KiBDcmVhdGVUdXJuUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3Rvcnks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgaW50X3Byb3RvLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGV4dF9wcm90bykgeworICBzdGQ6
OnVuaXF1ZV9wdHI8VHVyblBvcnQ+IENyZWF0ZVR1cm5Qb3J0KGNvbnN0IFNvY2tldEFkZHJlc3Mm
IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0
U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGludF9wcm90bywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgZXh0X3Byb3RvKSB7CiAg
ICAgU29ja2V0QWRkcmVzcyBzZXJ2ZXJfYWRkciA9CiAgICAgICAgIGludF9wcm90byA9PSBQUk9U
T19UQ1AgPyBrVHVyblRjcEludEFkZHIgOiBrVHVyblVkcEludEFkZHI7CiAgICAgcmV0dXJuIENy
ZWF0ZVR1cm5Qb3J0KGFkZHIsIHNvY2tldF9mYWN0b3J5LCBpbnRfcHJvdG8sIGV4dF9wcm90bywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2FkZHIpOwogICB9Ci0gIFR1cm5Qb3J0
KiBDcmVhdGVUdXJuUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgaW50X3Byb3RvLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGV4dF9wcm90bywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgc2VydmVyX2FkZHIpIHsKLSAg
ICByZXR1cm4gVHVyblBvcnQ6OkNyZWF0ZSgKLSAgICAgICAgJm1haW5fLCBzb2NrZXRfZmFjdG9y
eSwgTWFrZU5ldHdvcmsoYWRkciksIDAsIDAsIHVzZXJuYW1lXywgcGFzc3dvcmRfLAotICAgICAg
ICBQcm90b2NvbEFkZHJlc3Moc2VydmVyX2FkZHIsIGludF9wcm90byksIGtSZWxheUNyZWRlbnRp
YWxzLCAwLAotICAgICAgICBzdGQ6OnN0cmluZygpLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4o
KSwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCksCi0gICAgICAgIG51bGxwdHIsIG51bGxwdHIp
OwotICB9Ci0gIFJlbGF5UG9ydCogQ3JlYXRlR3R1cm5Qb3J0KGNvbnN0IFNvY2tldEFkZHJlc3Mm
IGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBpbnRfcHJv
dG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBleHRfcHJvdG8p
IHsKLSAgICBSZWxheVBvcnQqIHBvcnQgPSBDcmVhdGVHdHVyblBvcnQoYWRkcik7CisgIHN0ZDo6
dW5pcXVlX3B0cjxUdXJuUG9ydD4gQ3JlYXRlVHVyblBvcnQoCisgICAgICBjb25zdCBTb2NrZXRB
ZGRyZXNzJiBhZGRyLAorICAgICAgUGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3Rvcnks
CisgICAgICBQcm90b2NvbFR5cGUgaW50X3Byb3RvLAorICAgICAgUHJvdG9jb2xUeXBlIGV4dF9w
cm90bywKKyAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgc2VydmVyX2FkZHIpIHsKKyAg
ICByZXR1cm4gVHVyblBvcnQ6OkNyZWF0ZSgmbWFpbl8sIHNvY2tldF9mYWN0b3J5LCBNYWtlTmV0
d29yayhhZGRyKSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZV8s
IHBhc3N3b3JkXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbEFkZHJlc3Mo
c2VydmVyX2FkZHIsIGludF9wcm90byksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAga1Jl
bGF5Q3JlZGVudGlhbHMsIDAsICIiLCB7fSwge30sIG51bGxwdHIsIG51bGxwdHIpOworICB9Cisg
IHN0ZDo6dW5pcXVlX3B0cjxSZWxheVBvcnQ+IENyZWF0ZUd0dXJuUG9ydChjb25zdCBTb2NrZXRB
ZGRyZXNzJiBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHJvdG9jb2xUeXBlIGludF9wcm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBleHRfcHJvdG8pIHsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVsYXlQb3J0PiBwb3J0ID0gQ3JlYXRlR3R1cm5Qb3J0KGFkZHIpOwogICAgIFNvY2tl
dEFkZHJlc3MgYWRkcnNbXSA9IHtrUmVsYXlVZHBJbnRBZGRyLCBrUmVsYXlUY3BJbnRBZGRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrUmVsYXlTc2xUY3BJbnRBZGRyfTsKICAgICBw
b3J0LT5BZGRTZXJ2ZXJBZGRyZXNzKFByb3RvY29sQWRkcmVzcyhhZGRyc1tpbnRfcHJvdG9dLCBp
bnRfcHJvdG8pKTsKICAgICByZXR1cm4gcG9ydDsKICAgfQotICBSZWxheVBvcnQqIENyZWF0ZUd0
dXJuUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyKSB7CisgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWxheVBvcnQ+IENyZWF0ZUd0dXJuUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyKSB7CiAg
ICAgLy8gVE9ETyhwdGhhdGNoZXIpOiAgUmVtb3ZlIEdUVVJOLgogICAgIC8vIEdlbmVyYXRlIGEg
dXNlcm5hbWUgd2l0aCBsZW5ndGggb2YgMTYgZm9yIEd0dXJuIG9ubHkuCiAgICAgc3RkOjpzdHJp
bmcgdXNlcm5hbWUgPSBydGM6OkNyZWF0ZVJhbmRvbVN0cmluZyhrR3R1cm5Vc2VyTmFtZUxlbmd0
aCk7CkBAIC01NTgsOSArNTUzLDEwIEBAIGNsYXNzIFBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QsIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgLy8gVE9ETyg/KTogQWRk
IGFuIGV4dGVybmFsIGFkZHJlc3MgZm9yIGV4dF9wcm90bywgc28gdGhhdCB0aGUKICAgICAvLyBv
dGhlciBzaWRlIGNhbiBjb25uZWN0IHRvIHRoaXMgcG9ydCB1c2luZyBhIG5vbi1VRFAgcHJvdG9j
b2wuCiAgIH0KLSAgcnRjOjpOQVRTZXJ2ZXIqIENyZWF0ZU5hdFNlcnZlcihjb25zdCBTb2NrZXRB
ZGRyZXNzJiBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TkFU
VHlwZSB0eXBlKSB7Ci0gICAgcmV0dXJuIG5ldyBydGM6Ok5BVFNlcnZlcih0eXBlLCBzc18uZ2V0
KCksIGFkZHIsIGFkZHIsIHNzXy5nZXQoKSwgYWRkcik7CisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6
Ok5BVFNlcnZlcj4gQ3JlYXRlTmF0U2VydmVyKGNvbnN0IFNvY2tldEFkZHJlc3MmIGFkZHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TkFU
VHlwZSB0eXBlKSB7CisgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPHJ0Yzo6TkFUU2VydmVy
Pih0eXBlLCBzc18uZ2V0KCksIGFkZHIsIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzc18uZ2V0KCksIGFkZHIpOwogICB9CiAgIHN0YXRpYyBjb25z
dCBjaGFyKiBTdHVuTmFtZShOQVRUeXBlIHR5cGUpIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAg
LTYxMiw5ICs2MDgsOSBAQCBjbGFzcyBQb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBw
dWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogCiAgIC8vIFRoaXMgZG9lcyBhbGwgdGhlIHdv
cmsgYW5kIHRoZW4gZGVsZXRlcyB8cG9ydDF8IGFuZCB8cG9ydDJ8LgogICB2b2lkIFRlc3RDb25u
ZWN0aXZpdHkoY29uc3QgY2hhciogbmFtZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICBQb3J0
KiBwb3J0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBw
b3J0MSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgUG9ydCogcG9ydDIsCisgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UG9ydD4gcG9ydDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGFjY2VwdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2FtZV9hZGRyMSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgc2FtZV9hZGRyMiwKQEAgLTY4MCwxNyArNjc2LDE3IEBA
IGNsYXNzIFBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBzaWdzbG90Ojpo
YXNfc2xvdHM8PiB7CiAKICAgdm9pZCBUZXN0VGNwUmVjb25uZWN0KGJvb2wgcGluZ19hZnRlcl9k
aXNjb25uZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlbmRfYWZ0ZXJfZGlz
Y29ubmVjdGVkKSB7Ci0gICAgUG9ydCogcG9ydDEgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIx
KTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7CiAgICAgcG9y
dDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7Ci0gICAgUG9ydCog
cG9ydDIgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIyKTsKKyAgICBhdXRvIHBvcnQyID0gQ3Jl
YXRlVGNwUG9ydChrTG9jYWxBZGRyMik7CiAgICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6
SUNFUk9MRV9DT05UUk9MTEVEKTsKIAogICAgIHBvcnQxLT5zZXRfY29tcG9uZW50KGNyaWNrZXQ6
OklDRV9DQU5ESURBVEVfQ09NUE9ORU5UX0RFRkFVTFQpOwogICAgIHBvcnQyLT5zZXRfY29tcG9u
ZW50KGNyaWNrZXQ6OklDRV9DQU5ESURBVEVfQ09NUE9ORU5UX0RFRkFVTFQpOwogCiAgICAgLy8g
U2V0IHVwIGNoYW5uZWxzIGFuZCBlbnN1cmUgYm90aCBwb3J0cyB3aWxsIGJlIGRlbGV0ZWQuCi0g
ICAgVGVzdENoYW5uZWwgY2gxKHBvcnQxKTsKLSAgICBUZXN0Q2hhbm5lbCBjaDIocG9ydDIpOwor
ICAgIFRlc3RDaGFubmVsIGNoMShzdGQ6Om1vdmUocG9ydDEpKTsKKyAgICBUZXN0Q2hhbm5lbCBj
aDIoc3RkOjptb3ZlKHBvcnQyKSk7CiAgICAgRVhQRUNUX0VRKDAsIGNoMS5jb21wbGV0ZV9jb3Vu
dCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgY2gyLmNvbXBsZXRlX2NvdW50KCkpOwogCkBAIC03MDAs
NyArNjk2LDcgQEAgY2xhc3MgUG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGlj
IHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICBBU1NFUlRfRVFfV0FJVCgxLCBjaDIuY29tcGxl
dGVfY291bnQoKSwga0RlZmF1bHRUaW1lb3V0KTsKIAogICAgIC8vIEluaXRpYWwgY29ubmVjdGlu
ZyB0aGUgY2hhbm5lbCwgY3JlYXRlIGNvbm5lY3Rpb24gb24gY2hhbm5lbDEuCi0gICAgY2gxLkNy
ZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKHBvcnQyKSk7CisgICAgY2gxLkNyZWF0ZUNvbm5l
Y3Rpb24oR2V0Q2FuZGlkYXRlKGNoMi5wb3J0KCkpKTsKICAgICBDb25uZWN0U3RhcnRlZENoYW5u
ZWxzKCZjaDEsICZjaDIpOwogCiAgICAgLy8gU2hvcnRlbiB0aGUgdGltZW91dCBwZXJpb2QuCkBA
IC03NTMsNDMgKzc0OSw0NSBAQCBjbGFzcyBQb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIEVYUEVDVF9UUlVFX1dBSVQoY2gy
LmNvbm4oKSA9PSBOVUxMLCBrRGVmYXVsdFRpbWVvdXQpOwogICB9CiAKLSAgSWNlTWVzc2FnZSog
Q3JlYXRlU3R1bk1lc3NhZ2UoaW50IHR5cGUpIHsKLSAgICBJY2VNZXNzYWdlKiBtc2cgPSBuZXcg
SWNlTWVzc2FnZSgpOworICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gQ3JlYXRlU3R1bk1l
c3NhZ2UoaW50IHR5cGUpIHsKKyAgICBhdXRvIG1zZyA9IGFic2w6Om1ha2VfdW5pcXVlPEljZU1l
c3NhZ2U+KCk7CiAgICAgbXNnLT5TZXRUeXBlKHR5cGUpOwogICAgIG1zZy0+U2V0VHJhbnNhY3Rp
b25JRCgiVEVTVFRFU1RURVNUIik7CiAgICAgcmV0dXJuIG1zZzsKICAgfQotICBJY2VNZXNzYWdl
KiBDcmVhdGVTdHVuTWVzc2FnZVdpdGhVc2VybmFtZShpbnQgdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1l
KSB7Ci0gICAgSWNlTWVzc2FnZSogbXNnID0gQ3JlYXRlU3R1bk1lc3NhZ2UodHlwZSk7CisgIHN0
ZDo6dW5pcXVlX3B0cjxJY2VNZXNzYWdlPiBDcmVhdGVTdHVuTWVzc2FnZVdpdGhVc2VybmFtZSgK
KyAgICAgIGludCB0eXBlLAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lKSB7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEljZU1lc3NhZ2U+IG1zZyA9IENyZWF0ZVN0dW5NZXNzYWdlKHR5
cGUpOwogICAgIG1zZy0+QWRkQXR0cmlidXRlKGFic2w6Om1ha2VfdW5pcXVlPFN0dW5CeXRlU3Ry
aW5nQXR0cmlidXRlPigKICAgICAgICAgU1RVTl9BVFRSX1VTRVJOQU1FLCB1c2VybmFtZSkpOwog
ICAgIHJldHVybiBtc2c7CiAgIH0KLSAgVGVzdFBvcnQqIENyZWF0ZVRlc3RQb3J0KGNvbnN0IHJ0
Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCkgewotICAgIFRlc3RQb3J0KiBwb3J0ID0gbmV3IFRlc3RQ
b3J0KCZtYWluXywgInRlc3QiLCAmc29ja2V0X2ZhY3RvcnlfLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1ha2VOZXR3b3JrKGFkZHIpLCAwLCAwLCB1c2VybmFtZSwgcGFzc3dv
cmQpOworICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IENyZWF0ZVRlc3RQb3J0KGNvbnN0IHJ0
Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkKSB7
CisgICAgYXV0byBwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8VGVzdFBvcnQ+KCZtYWluXywgInRl
c3QiLCAmc29ja2V0X2ZhY3RvcnlfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNYWtlTmV0d29yayhhZGRyKSwgMCwgMCwgdXNlcm5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkKTsKICAgICBwb3J0LT5T
aWduYWxSb2xlQ29uZmxpY3QuY29ubmVjdCh0aGlzLCAmUG9ydFRlc3Q6Ok9uUm9sZUNvbmZsaWN0
KTsKICAgICByZXR1cm4gcG9ydDsKICAgfQotICBUZXN0UG9ydCogQ3JlYXRlVGVzdFBvcnQoY29u
c3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JpY2tldDo6SWNlUm9sZSByb2xlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRp
ZWJyZWFrZXIpIHsKLSAgICBUZXN0UG9ydCogcG9ydCA9IENyZWF0ZVRlc3RQb3J0KGFkZHIsIHVz
ZXJuYW1lLCBwYXNzd29yZCk7CisgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gQ3JlYXRlVGVz
dFBvcnQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JpY2tldDo6SWNlUm9sZSByb2xlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCB0aWVicmVha2VyKSB7CisgICAgYXV0byBwb3J0ID0gQ3JlYXRlVGVzdFBv
cnQoYWRkciwgdXNlcm5hbWUsIHBhc3N3b3JkKTsKICAgICBwb3J0LT5TZXRJY2VSb2xlKHJvbGUp
OwogICAgIHBvcnQtPlNldEljZVRpZWJyZWFrZXIodGllYnJlYWtlcik7CiAgICAgcmV0dXJuIHBv
cnQ7CiAgIH0KICAgLy8gT3ZlcmxvYWQgdG8gY3JlYXRlIGEgdGVzdCBwb3J0IGdpdmVuIGFuIHJ0
Yzo6TmV0d29yayBkaXJlY3RseS4KLSAgVGVzdFBvcnQqIENyZWF0ZVRlc3RQb3J0KHJ0Yzo6TmV0
d29yayogbmV0d29yaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwYXNzd29yZCkgewotICAgIFRlc3RQb3J0KiBwb3J0ID0gbmV3IFRlc3RQb3J0KCZtYWlu
XywgInRlc3QiLCAmc29ja2V0X2ZhY3RvcnlfLCBuZXR3b3JrLCAwLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIHVzZXJuYW1lLCBwYXNzd29yZCk7CisgIHN0ZDo6dW5pcXVl
X3B0cjxUZXN0UG9ydD4gQ3JlYXRlVGVzdFBvcnQocnRjOjpOZXR3b3JrKiBuZXR3b3JrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB1c2VybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQpIHsKKyAgICBhdXRvIHBvcnQgPSBhYnNsOjptYWtl
X3VuaXF1ZTxUZXN0UG9ydD4oJm1haW5fLCAidGVzdCIsICZzb2NrZXRfZmFjdG9yeV8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmssIDAsIDAsIHVz
ZXJuYW1lLCBwYXNzd29yZCk7CiAgICAgcG9ydC0+U2lnbmFsUm9sZUNvbmZsaWN0LmNvbm5lY3Qo
dGhpcywgJlBvcnRUZXN0OjpPblJvbGVDb25mbGljdCk7CiAgICAgcmV0dXJuIHBvcnQ7CiAgIH0K
QEAgLTgzNCw5ICs4MzIsOSBAQCBjbGFzcyBQb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogfTsKIAogdm9pZCBQb3J0VGVzdDo6VGVz
dENvbm5lY3Rpdml0eShjb25zdCBjaGFyKiBuYW1lMSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUG9ydCogcG9ydDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxQb3J0PiBwb3J0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogbmFtZTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBv
cnQqIHBvcnQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UG9ydD4gcG9ydDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWNj
ZXB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhbWVfYWRkcjEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2FtZV9hZGRyMiwKQEAgLTg0Nyw4
ICs4NDUsOCBAQCB2b2lkIFBvcnRUZXN0OjpUZXN0Q29ubmVjdGl2aXR5KGNvbnN0IGNoYXIqIG5h
bWUxLAogICBwb3J0Mi0+c2V0X2NvbXBvbmVudChjcmlja2V0OjpJQ0VfQ0FORElEQVRFX0NPTVBP
TkVOVF9ERUZBVUxUKTsKIAogICAvLyBTZXQgdXAgY2hhbm5lbHMgYW5kIGVuc3VyZSBib3RoIHBv
cnRzIHdpbGwgYmUgZGVsZXRlZC4KLSAgVGVzdENoYW5uZWwgY2gxKHBvcnQxKTsKLSAgVGVzdENo
YW5uZWwgY2gyKHBvcnQyKTsKKyAgVGVzdENoYW5uZWwgY2gxKHN0ZDo6bW92ZShwb3J0MSkpOwor
ICBUZXN0Q2hhbm5lbCBjaDIoc3RkOjptb3ZlKHBvcnQyKSk7CiAgIEVYUEVDVF9FUSgwLCBjaDEu
Y29tcGxldGVfY291bnQoKSk7CiAgIEVYUEVDVF9FUSgwLCBjaDIuY29tcGxldGVfY291bnQoKSk7
CiAKQEAgLTg1OSw3ICs4NTcsNyBAQCB2b2lkIFBvcnRUZXN0OjpUZXN0Q29ubmVjdGl2aXR5KGNv
bnN0IGNoYXIqIG5hbWUxLAogICBBU1NFUlRfRVFfU0lNVUxBVEVEX1dBSVQoMSwgY2gyLmNvbXBs
ZXRlX2NvdW50KCksIGtEZWZhdWx0VGltZW91dCwgY2xvY2spOwogCiAgIC8vIFNlbmQgYSBwaW5n
IGZyb20gc3JjIHRvIGRzdC4gVGhpcyBtYXkgb3IgbWF5IG5vdCBtYWtlIGl0LgotICBjaDEuQ3Jl
YXRlQ29ubmVjdGlvbihHZXRDYW5kaWRhdGUocG9ydDIpKTsKKyAgY2gxLkNyZWF0ZUNvbm5lY3Rp
b24oR2V0Q2FuZGlkYXRlKGNoMi5wb3J0KCkpKTsKICAgQVNTRVJUX1RSVUUoY2gxLmNvbm4oKSAh
PSBOVUxMKTsKICAgRVhQRUNUX1RSVUVfU0lNVUxBVEVEX1dBSVQoY2gxLmNvbm4oKS0+Y29ubmVj
dGVkKCksIGtEZWZhdWx0VGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xv
Y2spOyAgLy8gZm9yIFRDUCBjb25uZWN0CkBAIC04NzAsMTYgKzg2OCwxNiBAQCB2b2lkIFBvcnRU
ZXN0OjpUZXN0Q29ubmVjdGl2aXR5KGNvbnN0IGNoYXIqIG5hbWUxLAogICAgIC8vIFdlIGFyZSBh
YmxlIHRvIHNlbmQgYSBwaW5nIGZyb20gc3JjIHRvIGRzdC4gVGhpcyBpcyB0aGUgY2FzZSB3aGVu
CiAgICAgLy8gc2VuZGluZyB0byBVRFAgcG9ydHMgYW5kIGNvbmUgTkFUcy4KICAgICBFWFBFQ1Rf
VFJVRShjaDEucmVtb3RlX2FkZHJlc3MoKS5Jc05pbCgpKTsKLSAgICBFWFBFQ1RfRVEoY2gyLnJl
bW90ZV9mcmFnbWVudCgpLCBwb3J0MS0+dXNlcm5hbWVfZnJhZ21lbnQoKSk7CisgICAgRVhQRUNU
X0VRKGNoMi5yZW1vdGVfZnJhZ21lbnQoKSwgY2gxLnBvcnQoKS0+dXNlcm5hbWVfZnJhZ21lbnQo
KSk7CiAKICAgICAvLyBFbnN1cmUgdGhlIHBpbmcgY2FtZSBmcm9tIHRoZSBzYW1lIGFkZHJlc3Mg
dXNlZCBmb3Igc3JjLgogICAgIC8vIFRoaXMgaXMgdGhlIGNhc2UgdW5sZXNzIHRoZSBzb3VyY2Ug
TkFUIHdhcyBzeW1tZXRyaWMuCiAgICAgaWYgKHNhbWVfYWRkcjEpCi0gICAgICBFWFBFQ1RfRVEo
Y2gyLnJlbW90ZV9hZGRyZXNzKCksIEdldEFkZHJlc3MocG9ydDEpKTsKKyAgICAgIEVYUEVDVF9F
UShjaDIucmVtb3RlX2FkZHJlc3MoKSwgR2V0QWRkcmVzcyhjaDEucG9ydCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoc2FtZV9hZGRyMik7CiAKICAgICAvLyBTZW5kIGEgcGluZyBmcm9tIGRzdCB0byBz
cmMuCi0gICAgY2gyLkFjY2VwdENvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKHBvcnQxKSk7CisgICAg
Y2gyLkFjY2VwdENvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNoMS5wb3J0KCkpKTsKICAgICBBU1NF
UlRfVFJVRShjaDIuY29ubigpICE9IE5VTEwpOwogICAgIGNoMi5QaW5nKCk7CiAgICAgRVhQRUNU
X0VRX1NJTVVMQVRFRF9XQUlUKENvbm5lY3Rpb246OlNUQVRFX1dSSVRBQkxFLApAQCAtODkxLDcg
Kzg4OSw3IEBAIHZvaWQgUG9ydFRlc3Q6OlRlc3RDb25uZWN0aXZpdHkoY29uc3QgY2hhciogbmFt
ZTEsCiAgICAgRVhQRUNUX1RSVUUoY2gyLnJlbW90ZV9hZGRyZXNzKCkuSXNOaWwoKSk7CiAKICAg
ICAvLyBTZW5kIGEgcGluZyBmcm9tIGRzdCB0byBzcmMuIEFnYWluLCB0aGlzIG1heSBvciBtYXkg
bm90IG1ha2UgaXQuCi0gICAgY2gyLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKHBvcnQx
KSk7CisgICAgY2gyLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNoMS5wb3J0KCkpKTsK
ICAgICBBU1NFUlRfVFJVRShjaDIuY29ubigpICE9IE5VTEwpOwogICAgIGNoMi5QaW5nKCk7CiAg
ICAgU0lNVUxBVEVEX1dBSVQoY2gyLmNvbm4oKS0+d3JpdGVfc3RhdGUoKSA9PSBDb25uZWN0aW9u
OjpTVEFURV9XUklUQUJMRSwKQEAgLTkyNSw3ICs5MjMsNyBAQCB2b2lkIFBvcnRUZXN0OjpUZXN0
Q29ubmVjdGl2aXR5KGNvbnN0IGNoYXIqIG5hbWUxLAogICAgICAgRVhQRUNUX1RSVUUoY2gxLnJl
bW90ZV9hZGRyZXNzKCkuSXNOaWwoKSk7CiAKICAgICAgIC8vIFBpY2sgdXAgdGhlIGFjdHVhbCBh
ZGRyZXNzIGFuZCBlc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24uCi0gICAgICBjaDIuQWNjZXB0Q29u
bmVjdGlvbihHZXRDYW5kaWRhdGUocG9ydDEpKTsKKyAgICAgIGNoMi5BY2NlcHRDb25uZWN0aW9u
KEdldENhbmRpZGF0ZShjaDEucG9ydCgpKSk7CiAgICAgICBBU1NFUlRfVFJVRShjaDIuY29ubigp
ICE9IE5VTEwpOwogICAgICAgY2gyLlBpbmcoKTsKICAgICAgIEVYUEVDVF9FUV9TSU1VTEFURURf
V0FJVChDb25uZWN0aW9uOjpTVEFURV9XUklUQUJMRSwKQEAgLTkzOCw3ICs5MzYsNyBAQCB2b2lk
IFBvcnRUZXN0OjpUZXN0Q29ubmVjdGl2aXR5KGNvbnN0IGNoYXIqIG5hbWUxLAogICAgICAgRVhQ
RUNUX0ZBTFNFKGNoMS5jb25uKCktPnJlY2VpdmluZygpKTsKIAogICAgICAgLy8gVXBkYXRlIG91
ciBhZGRyZXNzIGFuZCBjb21wbGV0ZSB0aGUgY29ubmVjdGlvbi4KLSAgICAgIGNoMS5BY2NlcHRD
b25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0MikpOworICAgICAgY2gxLkFjY2VwdENvbm5lY3Rp
b24oR2V0Q2FuZGlkYXRlKGNoMi5wb3J0KCkpKTsKICAgICAgIGNoMS5QaW5nKCk7CiAgICAgICBF
WFBFQ1RfRVFfU0lNVUxBVEVEX1dBSVQoQ29ubmVjdGlvbjo6U1RBVEVfV1JJVEFCTEUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2gxLmNvbm4oKS0+d3JpdGVfc3RhdGUoKSwga0Rl
ZmF1bHRUaW1lb3V0LApAQCAtMTI2MSwxMiArMTI1OSwxMiBAQCBURVNUX0YoUG9ydFRlc3QsIFRl
c3RUY3BSZWNvbm5lY3RUaW1lb3V0KSB7CiAvLyBUZXN0IHdoZW4gVGNwQ29ubmVjdGlvbiBuZXZl
ciBjb25uZWN0cywgdGhlIE9uQ2xvc2UoKSB3aWxsIGJlIGNhbGxlZCB0bwogLy8gZGVzdHJveSB0
aGUgY29ubmVjdGlvbi4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdFRjcE5ldmVyQ29ubmVjdCkgewot
ICBQb3J0KiBwb3J0MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpOworICBhdXRvIHBvcnQx
ID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHBvcnQxLT5TZXRJY2VSb2xlKGNyaWNr
ZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwogICBwb3J0MS0+c2V0X2NvbXBvbmVudChjcmlja2V0
OjpJQ0VfQ0FORElEQVRFX0NPTVBPTkVOVF9ERUZBVUxUKTsKIAogICAvLyBTZXQgdXAgYSBjaGFu
bmVsIGFuZCBlbnN1cmUgdGhlIHBvcnQgd2lsbCBiZSBkZWxldGVkLgotICBUZXN0Q2hhbm5lbCBj
aDEocG9ydDEpOworICBUZXN0Q2hhbm5lbCBjaDEoc3RkOjptb3ZlKHBvcnQxKSk7CiAgIEVYUEVD
VF9FUSgwLCBjaDEuY29tcGxldGVfY291bnQoKSk7CiAKICAgY2gxLlN0YXJ0KCk7CkBAIC0xMjc3
LDcgKzEyNzUsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RUY3BOZXZlckNvbm5lY3QpIHsKICAg
Ly8gQmluZCBidXQgbm90IGxpc3Rlbi4KICAgRVhQRUNUX0VRKDAsIHNlcnZlci0+QmluZChrTG9j
YWxBZGRyMikpOwogCi0gIENhbmRpZGF0ZSBjID0gR2V0Q2FuZGlkYXRlKHBvcnQxKTsKKyAgQ2Fu
ZGlkYXRlIGMgPSBHZXRDYW5kaWRhdGUoY2gxLnBvcnQoKSk7CiAgIGMuc2V0X2FkZHJlc3Moc2Vy
dmVyLT5HZXRMb2NhbEFkZHJlc3MoKSk7CiAKICAgY2gxLkNyZWF0ZUNvbm5lY3Rpb24oYyk7CkBA
IC0xMzEyLDEwICsxMzEwLDggQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0U3NsVGNwVG9Tc2xUY3BS
ZWxheSkgewogLy8gaWkpIGl0IGhhcyBub3QgcmVjZWl2ZWQgYW55dGhpbmcgZm9yIERFQURfQ09O
TkVDVElPTl9SRUNFSVZFX1RJTUVPVVQKIC8vICAgICBtaWxsaXNlY29uZHMgc2luY2UgbGFzdCBy
ZWNlaXZpbmcuCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RDb25uZWN0aW9uRGVhZCkgewotICBVRFBQ
b3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwotICBVRFBQb3J0KiBwb3J0
MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOwotICBUZXN0Q2hhbm5lbCBjaDEocG9ydDEp
OwotICBUZXN0Q2hhbm5lbCBjaDIocG9ydDIpOworICBUZXN0Q2hhbm5lbCBjaDEoQ3JlYXRlVWRw
UG9ydChrTG9jYWxBZGRyMSkpOworICBUZXN0Q2hhbm5lbCBjaDIoQ3JlYXRlVWRwUG9ydChrTG9j
YWxBZGRyMikpOwogICAvLyBBY3F1aXJlIGFkZHJlc3MuCiAgIGNoMS5TdGFydCgpOwogICBjaDIu
U3RhcnQoKTsKQEAgLTEzMjQsNyArMTMyMCw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdENvbm5l
Y3Rpb25EZWFkKSB7CiAKICAgLy8gVGVzdCBjYXNlIHRoYXQgdGhlIGNvbm5lY3Rpb24gaGFzIG5l
dmVyIHJlY2VpdmVkIGFueXRoaW5nLgogICBpbnQ2NF90IGJlZm9yZV9jcmVhdGVkID0gcnRjOjpU
aW1lTWlsbGlzKCk7Ci0gIGNoMS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0Mikp
OworICBjaDEuQ3JlYXRlQ29ubmVjdGlvbihHZXRDYW5kaWRhdGUoY2gyLnBvcnQoKSkpOwogICBp
bnQ2NF90IGFmdGVyX2NyZWF0ZWQgPSBydGM6OlRpbWVNaWxsaXMoKTsKICAgQ29ubmVjdGlvbiog
Y29ubiA9IGNoMS5jb25uKCk7CiAgIEFTU0VSVF9ORShjb25uLCBudWxscHRyKTsKQEAgLTEzNDMs
NyArMTMzOSw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdENvbm5lY3Rpb25EZWFkKSB7CiAKICAg
Ly8gVGVzdCBjYXNlIHRoYXQgdGhlIGNvbm5lY3Rpb24gaGFzIHJlY2VpdmVkIHNvbWV0aGluZy4K
ICAgLy8gQ3JlYXRlIGEgY29ubmVjdGlvbiBhZ2FpbiBhbmQgcmVjZWl2ZSBhIHBpbmcuCi0gIGNo
MS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0MikpOworICBjaDEuQ3JlYXRlQ29u
bmVjdGlvbihHZXRDYW5kaWRhdGUoY2gyLnBvcnQoKSkpOwogICBjb25uID0gY2gxLmNvbm4oKTsK
ICAgQVNTRVJUX05FKGNvbm4sIG51bGxwdHIpOwogICBpbnQ2NF90IGJlZm9yZV9sYXN0X3JlY2Vp
dmluZyA9IHJ0Yzo6VGltZU1pbGxpcygpOwpAQCAtMTM2MiwxNCArMTM1OCwxNSBAQCBURVNUX0Yo
UG9ydFRlc3QsIFRlc3RDb25uZWN0aW9uRGVhZCkgewogLy8gdmVyaWZpZXMgTWVzc2FnZSBJbnRl
Z3JpdHkgYXR0cmlidXRlIGluIFNUVU4gbWVzc2FnZXMgYW5kIHVzZXJuYW1lIGluIFNUVU4KIC8v
IGJpbmRpbmcgcmVxdWVzdCB3aWxsIGhhdmUgY29sb24gKCI6IikgYmV0d2VlbiByZW1vdGUgYW5k
IGxvY2FsIHVzZXJuYW1lLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0TG9jYWxUb0xvY2FsU3RhbmRh
cmQpIHsKLSAgVURQUG9ydCogcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKKyAg
YXV0byBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwogICBwb3J0MS0+U2V0SWNl
Um9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgcG9ydDEtPlNldEljZVRpZWJy
ZWFrZXIoa1RpZWJyZWFrZXIxKTsKLSAgVURQUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtM
b2NhbEFkZHIyKTsKKyAgYXV0byBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOwog
ICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwogICBwb3J0
Mi0+U2V0SWNlVGllYnJlYWtlcihrVGllYnJlYWtlcjIpOwogICAvLyBTYW1lIHBhcmFtZXRlcnMg
YXMgVGVzdExvY2FsVG9Mb2NhbCBhYm92ZS4KLSAgVGVzdENvbm5lY3Rpdml0eSgidWRwIiwgcG9y
dDEsICJ1ZHAiLCBwb3J0MiwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgIFRlc3RDb25uZWN0
aXZpdHkoInVkcCIsIHN0ZDo6bW92ZShwb3J0MSksICJ1ZHAiLCBzdGQ6Om1vdmUocG9ydDIpLCB0
cnVlLCB0cnVlLAorICAgICAgICAgICAgICAgICAgIHRydWUsIHRydWUpOwogfQogCiAvLyBUaGlz
IHRlc3QgaXMgdHJ5aW5nIHRvIHZhbGlkYXRlIGEgc3VjY2Vzc2Z1bCBhbmQgZmFpbHVyZSBzY2Vu
YXJpbyBpbiBhCkBAIC0xMzc3LDggKzEzNzQsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RMb2Nh
bFRvTG9jYWxTdGFuZGFyZCkgewogLy8gc2hvdWxkIHJlbWFpbiBlcXVhbCB0byB0aGUgcmVxdWVz
dCBnZW5lcmF0ZWQgYnkgdGhlIHBvcnQgYW5kIHJvbGUgb2YgcG9ydAogLy8gbXVzdCBiZSBpbiBj
b250cm9sbGluZy4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdExvb3BiYWNrQ2FsbCkgewotICBzdGQ6
OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IGxwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2Fs
QWRkcjEsICJsZnJhZyIsICJscGFzcyIpKTsKKyAgYXV0byBscG9ydCA9IENyZWF0ZVRlc3RQb3J0
KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3MiKTsKICAgbHBvcnQtPlNldEljZVJvbGUoY3Jp
Y2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIGxwb3J0LT5TZXRJY2VUaWVicmVha2VyKGtU
aWVicmVha2VyMSk7CiAgIGxwb3J0LT5QcmVwYXJlQWRkcmVzcygpOwpAQCAtMTM5MSw3ICsxMzg3
LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0TG9vcGJhY2tDYWxsKSB7CiAgIEljZU1lc3NhZ2Uq
IG1zZyA9IGxwb3J0LT5sYXN0X3N0dW5fbXNnKCk7CiAgIEVYUEVDVF9FUShTVFVOX0JJTkRJTkdf
UkVRVUVTVCwgbXNnLT50eXBlKCkpOwogICBjb25uLT5PblJlYWRQYWNrZXQobHBvcnQtPmxhc3Rf
c3R1bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgbHBvcnQtPmxh
c3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgICAgICAgICAg
ICAgICAgICBscG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3Vz
ICovIC0xKTsKICAgQVNTRVJUX1RSVUVfV0FJVChscG9ydC0+bGFzdF9zdHVuX21zZygpICE9IE5V
TEwsIGtEZWZhdWx0VGltZW91dCk7CiAgIG1zZyA9IGxwb3J0LT5sYXN0X3N0dW5fbXNnKCk7CiAg
IEVYUEVDVF9FUShTVFVOX0JJTkRJTkdfUkVTUE9OU0UsIG1zZy0+dHlwZSgpKTsKQEAgLTE0MjIs
OSArMTQxOCw5IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdExvb3BiYWNrQ2FsbCkgewogICBtb2Rp
ZmllZF9yZXEtPkFkZEZpbmdlcnByaW50KCk7CiAKICAgbHBvcnQtPlJlc2V0KCk7Ci0gIHN0ZDo6
dW5pcXVlX3B0cjxCeXRlQnVmZmVyV3JpdGVyPiBidWYobmV3IEJ5dGVCdWZmZXJXcml0ZXIoKSk7
Ci0gIFdyaXRlU3R1bk1lc3NhZ2UobW9kaWZpZWRfcmVxLmdldCgpLCBidWYuZ2V0KCkpOwotICBj
b25uMS0+T25SZWFkUGFja2V0KGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBydGM6OlBhY2tl
dFRpbWUoKSk7CisgIGF1dG8gYnVmID0gYWJzbDo6bWFrZV91bmlxdWU8Qnl0ZUJ1ZmZlcldyaXRl
cj4oKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqbW9kaWZpZWRfcmVxLCBidWYuZ2V0KCkpOworICBj
b25uMS0+T25SZWFkUGFja2V0KGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCAvKiBwYWNrZXRf
dGltZV91cyAqLyAtMSk7CiAgIEFTU0VSVF9UUlVFX1dBSVQobHBvcnQtPmxhc3Rfc3R1bl9tc2co
KSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVvdXQpOwogICBtc2cgPSBscG9ydC0+bGFzdF9zdHVuX21z
ZygpOwogICBFWFBFQ1RfRVEoU1RVTl9CSU5ESU5HX0VSUk9SX1JFU1BPTlNFLCBtc2ctPnR5cGUo
KSk7CkBAIC0xNDM2LDEyICsxNDMyLDEwIEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdExvb3BiYWNr
Q2FsbCkgewogLy8gdmFsdWUgb2YgdGllYnJlYWtlciwgd2hlbiBpdCByZWNlaXZlcyBwaW5nIHJl
cXVlc3QgZnJvbSB8cnBvcnR8IGl0IHdpbGwKIC8vIHNlbmQgcm9sZSBjb25mbGljdCBzaWduYWwu
CiBURVNUX0YoUG9ydFRlc3QsIFRlc3RJY2VSb2xlQ29uZmxpY3QpIHsKLSAgc3RkOjp1bmlxdWVf
cHRyPFRlc3RQb3J0PiBscG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAi
bGZyYWciLCAibHBhc3MiKSk7CisgIGF1dG8gbHBvcnQgPSBDcmVhdGVUZXN0UG9ydChrTG9jYWxB
ZGRyMSwgImxmcmFnIiwgImxwYXNzIik7CiAgIGxwb3J0LT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklD
RVJPTEVfQ09OVFJPTExJTkcpOwogICBscG9ydC0+U2V0SWNlVGllYnJlYWtlcihrVGllYnJlYWtl
cjEpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAgQ3JlYXRlVGVz
dFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBycG9ydCA9IENy
ZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsKICAgcnBvcnQtPlNl
dEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIHJwb3J0LT5TZXRJY2VU
aWVicmVha2VyKGtUaWVicmVha2VyMik7CiAKQEAgLTE0NjAsNyArMTQ1NCw3IEBAIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdEljZVJvbGVDb25mbGljdCkgewogICBFWFBFQ1RfRVEoU1RVTl9CSU5ESU5H
X1JFUVVFU1QsIG1zZy0+dHlwZSgpKTsKICAgLy8gU2VuZCBycG9ydCBiaW5kaW5nIHJlcXVlc3Qg
dG8gbHBvcnQuCiAgIGxjb25uLT5PblJlYWRQYWNrZXQocnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+
ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVm
KCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgIHJw
b3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwog
CiAgIEFTU0VSVF9UUlVFX1dBSVQobHBvcnQtPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxMLCBrRGVm
YXVsdFRpbWVvdXQpOwogICBFWFBFQ1RfRVEoU1RVTl9CSU5ESU5HX1JFU1BPTlNFLCBscG9ydC0+
bGFzdF9zdHVuX21zZygpLT50eXBlKCkpOwpAQCAtMTQ2OCwxMyArMTQ2MiwxMiBAQCBURVNUX0Yo
UG9ydFRlc3QsIFRlc3RJY2VSb2xlQ29uZmxpY3QpIHsKIH0KIAogVEVTVF9GKFBvcnRUZXN0LCBU
ZXN0VGNwTm9EZWxheSkgewotICBUQ1BQb3J0KiBwb3J0MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2Fs
QWRkcjEpOworICBhdXRvIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHBv
cnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwogICBpbnQgb3B0
aW9uX3ZhbHVlID0gLTE7CiAgIGludCBzdWNjZXNzID0gcG9ydDEtPkdldE9wdGlvbihydGM6OlNv
Y2tldDo6T1BUX05PREVMQVksICZvcHRpb25fdmFsdWUpOwogICBBU1NFUlRfRVEoMCwgc3VjY2Vz
cyk7ICAvLyBHZXRPcHRpb24oKSBzaG91bGQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5IHcvIDAKICAg
QVNTRVJUX0VRKDEsIG9wdGlvbl92YWx1ZSk7Ci0gIGRlbGV0ZSBwb3J0MTsKIH0KIAogVEVTVF9G
KFBvcnRUZXN0LCBUZXN0RGVsYXllZEJpbmRpbmdVZHApIHsKQEAgLTE0ODIsNyArMTQ3NSw3IEBA
IFRFU1RfRihQb3J0VGVzdCwgVGVzdERlbGF5ZWRCaW5kaW5nVWRwKSB7CiAgIEZha2VQYWNrZXRT
b2NrZXRGYWN0b3J5IHNvY2tldF9mYWN0b3J5OwogCiAgIHNvY2tldF9mYWN0b3J5LnNldF9uZXh0
X3VkcF9zb2NrZXQoc29ja2V0KTsKLSAgc3RkOjp1bmlxdWVfcHRyPFVEUFBvcnQ+IHBvcnQoQ3Jl
YXRlVWRwUG9ydChrTG9jYWxBZGRyMSwgJnNvY2tldF9mYWN0b3J5KSk7CisgIGF1dG8gcG9ydCA9
IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEsICZzb2NrZXRfZmFjdG9yeSk7CiAKICAgc29ja2V0
LT5zZXRfc3RhdGUoQXN5bmNQYWNrZXRTb2NrZXQ6OlNUQVRFX0JJTkRJTkcpOwogICBwb3J0LT5Q
cmVwYXJlQWRkcmVzcygpOwpAQCAtMTQ5OCw3ICsxNDkxLDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBU
ZXN0RGVsYXllZEJpbmRpbmdUY3ApIHsKICAgRmFrZVBhY2tldFNvY2tldEZhY3Rvcnkgc29ja2V0
X2ZhY3Rvcnk7CiAKICAgc29ja2V0X2ZhY3Rvcnkuc2V0X25leHRfc2VydmVyX3RjcF9zb2NrZXQo
c29ja2V0KTsKLSAgc3RkOjp1bmlxdWVfcHRyPFRDUFBvcnQ+IHBvcnQoQ3JlYXRlVGNwUG9ydChr
TG9jYWxBZGRyMSwgJnNvY2tldF9mYWN0b3J5KSk7CisgIGF1dG8gcG9ydCA9IENyZWF0ZVRjcFBv
cnQoa0xvY2FsQWRkcjEsICZzb2NrZXRfZmFjdG9yeSk7CiAKICAgc29ja2V0LT5zZXRfc3RhdGUo
QXN5bmNQYWNrZXRTb2NrZXQ6OlNUQVRFX0JJTkRJTkcpOwogICBwb3J0LT5QcmVwYXJlQWRkcmVz
cygpOwpAQCAtMTUxOSwxMCArMTUxMiwxMCBAQCB2b2lkIFBvcnRUZXN0OjpUZXN0Q3Jvc3NGYW1p
bHlQb3J0cyhpbnQgdHlwZSkgewogICAgIEZha2VBc3luY1BhY2tldFNvY2tldCogc29ja2V0ID0g
bmV3IEZha2VBc3luY1BhY2tldFNvY2tldCgpOwogICAgIGlmICh0eXBlID09IFNPQ0tfREdSQU0p
IHsKICAgICAgIGZhY3Rvcnkuc2V0X25leHRfdWRwX3NvY2tldChzb2NrZXQpOwotICAgICAgcG9y
dHNbaV0ucmVzZXQoQ3JlYXRlVWRwUG9ydChhZGRyZXNzZXNbaV0sICZmYWN0b3J5KSk7CisgICAg
ICBwb3J0c1tpXSA9IENyZWF0ZVVkcFBvcnQoYWRkcmVzc2VzW2ldLCAmZmFjdG9yeSk7CiAgICAg
fSBlbHNlIGlmICh0eXBlID09IFNPQ0tfU1RSRUFNKSB7CiAgICAgICBmYWN0b3J5LnNldF9uZXh0
X3NlcnZlcl90Y3Bfc29ja2V0KHNvY2tldCk7Ci0gICAgICBwb3J0c1tpXS5yZXNldChDcmVhdGVU
Y3BQb3J0KGFkZHJlc3Nlc1tpXSwgJmZhY3RvcnkpKTsKKyAgICAgIHBvcnRzW2ldID0gQ3JlYXRl
VGNwUG9ydChhZGRyZXNzZXNbaV0sICZmYWN0b3J5KTsKICAgICB9CiAgICAgc29ja2V0LT5zZXRf
c3RhdGUoQXN5bmNQYWNrZXRTb2NrZXQ6OlNUQVRFX0JJTkRJTkcpOwogICAgIHNvY2tldC0+U2ln
bmFsQWRkcmVzc1JlYWR5KHNvY2tldCwgYWRkcmVzc2VzW2ldKTsKQEAgLTE1ODYsNyArMTU3OSw3
IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFVkcFY2Q3Jvc3NUeXBlUG9ydHMpIHsKICAgZm9yIChp
bnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICBGYWtlQXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tl
dCA9IG5ldyBGYWtlQXN5bmNQYWNrZXRTb2NrZXQoKTsKICAgICBmYWN0b3J5LnNldF9uZXh0X3Vk
cF9zb2NrZXQoc29ja2V0KTsKLSAgICBwb3J0c1tpXS5yZXNldChDcmVhdGVVZHBQb3J0KGFkZHJl
c3Nlc1tpXSwgJmZhY3RvcnkpKTsKKyAgICBwb3J0c1tpXSA9IENyZWF0ZVVkcFBvcnQoYWRkcmVz
c2VzW2ldLCAmZmFjdG9yeSk7CiAgICAgc29ja2V0LT5zZXRfc3RhdGUoQXN5bmNQYWNrZXRTb2Nr
ZXQ6OlNUQVRFX0JJTkRJTkcpOwogICAgIHNvY2tldC0+U2lnbmFsQWRkcmVzc1JlYWR5KHNvY2tl
dCwgYWRkcmVzc2VzW2ldKTsKICAgICBwb3J0c1tpXS0+UHJlcGFyZUFkZHJlc3MoKTsKQEAgLTE2
MTEsMjggKzE2MDQsMjcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0VWRwVjZDcm9zc1R5cGVQb3J0
cykgewogLy8gZ2V0IHRocm91Z2ggRGVmYXVsdERzY3BWYWx1ZS4KIFRFU1RfRihQb3J0VGVzdCwg
VGVzdERlZmF1bHREc2NwVmFsdWUpIHsKICAgaW50IGRzY3A7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxV
RFBQb3J0PiB1ZHBwb3J0KENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpKTsKKyAgYXV0byB1ZHBw
b3J0ID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgIEVYUEVDVF9FUSgwLCB1ZHBwb3J0
LT5TZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9EU0NQLCBydGM6OkRTQ1BfQ1M2KSk7CiAgIEVY
UEVDVF9FUSgwLCB1ZHBwb3J0LT5HZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9EU0NQLCAmZHNj
cCkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VENQUG9ydD4gdGNwcG9ydChDcmVhdGVUY3BQb3J0KGtM
b2NhbEFkZHIxKSk7CisgIGF1dG8gdGNwcG9ydCA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEp
OwogICBFWFBFQ1RfRVEoMCwgdGNwcG9ydC0+U2V0T3B0aW9uKHJ0Yzo6U29ja2V0OjpPUFRfRFND
UCwgcnRjOjpEU0NQX0FGMzEpKTsKICAgRVhQRUNUX0VRKDAsIHRjcHBvcnQtPkdldE9wdGlvbihy
dGM6OlNvY2tldDo6T1BUX0RTQ1AsICZkc2NwKSk7CiAgIEVYUEVDVF9FUShydGM6OkRTQ1BfQUYz
MSwgZHNjcCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxTdHVuUG9ydD4gc3R1bnBvcnQoCi0gICAgICBD
cmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpKSk7CisgIGF1
dG8gc3R1bnBvcnQgPSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0
b3J5MSgpKTsKICAgRVhQRUNUX0VRKDAsIHN0dW5wb3J0LT5TZXRPcHRpb24ocnRjOjpTb2NrZXQ6
Ok9QVF9EU0NQLCBydGM6OkRTQ1BfQUY0MSkpOwogICBFWFBFQ1RfRVEoMCwgc3R1bnBvcnQtPkdl
dE9wdGlvbihydGM6OlNvY2tldDo6T1BUX0RTQ1AsICZkc2NwKSk7CiAgIEVYUEVDVF9FUShydGM6
OkRTQ1BfQUY0MSwgZHNjcCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUdXJuUG9ydD4gdHVybnBvcnQx
KAotICAgICAgQ3JlYXRlVHVyblBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEo
KSwgUFJPVE9fVURQLCBQUk9UT19VRFApKTsKKyAgYXV0byB0dXJucG9ydDEgPQorICAgICAgQ3Jl
YXRlVHVyblBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwgUFJPVE9fVURQ
LCBQUk9UT19VRFApOwogICAvLyBTb2NrZXQgaXMgY3JlYXRlZCBpbiBQcmVwYXJlQWRkcmVzcy4K
ICAgdHVybnBvcnQxLT5QcmVwYXJlQWRkcmVzcygpOwogICBFWFBFQ1RfRVEoMCwgdHVybnBvcnQx
LT5TZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9EU0NQLCBydGM6OkRTQ1BfQ1M3KSk7CiAgIEVY
UEVDVF9FUSgwLCB0dXJucG9ydDEtPkdldE9wdGlvbihydGM6OlNvY2tldDo6T1BUX0RTQ1AsICZk
c2NwKSk7CiAgIEVYUEVDVF9FUShydGM6OkRTQ1BfQ1M3LCBkc2NwKTsKICAgLy8gVGhpcyB3aWxs
IHZlcmlmeSBjb3JyZWN0IHZhbHVlIHJldHVybmVkIHdpdGhvdXQgdGhlIHNvY2tldC4KLSAgc3Rk
Ojp1bmlxdWVfcHRyPFR1cm5Qb3J0PiB0dXJucG9ydDIoCi0gICAgICBDcmVhdGVUdXJuUG9ydChr
TG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VEUCkp
OworICBhdXRvIHR1cm5wb3J0MiA9CisgICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwg
bmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VEUCk7CiAgIEVYUEVDVF9F
USgwLCB0dXJucG9ydDItPlNldE9wdGlvbihydGM6OlNvY2tldDo6T1BUX0RTQ1AsIHJ0Yzo6RFND
UF9DUzYpKTsKICAgRVhQRUNUX0VRKDAsIHR1cm5wb3J0Mi0+R2V0T3B0aW9uKHJ0Yzo6U29ja2V0
OjpPUFRfRFNDUCwgJmRzY3ApKTsKICAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9DUzYsIGRzY3ApOwpA
QCAtMTY0MCwxMCArMTYzMiw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdERlZmF1bHREc2NwVmFs
dWUpIHsKIAogLy8gVGVzdCBzZW5kaW5nIFNUVU4gbWVzc2FnZXMuCiBURVNUX0YoUG9ydFRlc3Qs
IFRlc3RTZW5kU3R1bk1lc3NhZ2UpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBscG9y
dCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3MiKSk7
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9y
dChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIikpOworICBhdXRvIGxwb3J0ID0gQ3JlYXRl
VGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpOworICBhdXRvIHJwb3J0ID0g
Q3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogICBscG9ydC0+
U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBvcnQtPlNldElj
ZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKICAgcnBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6
SUNFUk9MRV9DT05UUk9MTEVEKTsKQEAgLTE2ODksMTcgKzE2NzksMTcgQEAgVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0U2VuZFN0dW5NZXNzYWdlKSB7CiAgIEFTU0VSVF9UUlVFKG1zZy0+R2V0VUludDMy
KFNUVU5fQVRUUl9SRVRSQU5TTUlUX0NPVU5UKSA9PSBOVUxMKTsKIAogICAvLyBTYXZlIGEgY29w
eSBvZiB0aGUgQklORElORy1SRVFVRVNUIGZvciB1c2UgYmVsb3cuCi0gIHN0ZDo6dW5pcXVlX3B0
cjxJY2VNZXNzYWdlPiByZXF1ZXN0KENvcHlTdHVuTWVzc2FnZShtc2cpKTsKKyAgc3RkOjp1bmlx
dWVfcHRyPEljZU1lc3NhZ2U+IHJlcXVlc3QgPSBDb3B5U3R1bk1lc3NhZ2UoKm1zZyk7CiAKICAg
Ly8gUmVjZWl2ZSB0aGUgQklORElORy1SRVFVRVNUIGFuZCByZXNwb25kIHdpdGggQklORElORy1S
RVNQT05TRS4KICAgcmNvbm4tPk9uUmVhZFBhY2tldChscG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5k
YXRhPGNoYXI+KCksCi0gICAgICAgICAgICAgICAgICAgICAgbHBvcnQtPmxhc3Rfc3R1bl9idWYo
KS0+c2l6ZSgpLCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgbHBv
cnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAg
IG1zZyA9IHJwb3J0LT5sYXN0X3N0dW5fbXNnKCk7CiAgIEFTU0VSVF9UUlVFKG1zZyAhPSBOVUxM
KTsKICAgRVhQRUNUX0VRKFNUVU5fQklORElOR19SRVNQT05TRSwgbXNnLT50eXBlKCkpOwogICAv
LyBSZWNlaXZlZCBhIEJJTkRJTkctUkVTUE9OU0UuCiAgIGxjb25uLT5PblJlYWRQYWNrZXQocnBv
cnQtPmxhc3Rfc3R1bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAg
IHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAg
ICAgICAgICAgICAgICAgICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFj
a2V0X3RpbWVfdXMgKi8gLTEpOwogICAvLyBWZXJpZnkgdGhlIFNUVU4gU3RhdHMuCiAgIEVYUEVD
VF9FUSgxVSwgbGNvbm4tPnN0YXRzKCkuc2VudF9waW5nX3JlcXVlc3RzX3RvdGFsKTsKICAgRVhQ
RUNUX0VRKDFVLCBsY29ubi0+c3RhdHMoKS5zZW50X3BpbmdfcmVxdWVzdHNfYmVmb3JlX2ZpcnN0
X3Jlc3BvbnNlKTsKQEAgLTE3NzcsMTMgKzE3NjcsMTMgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0
U2VuZFN0dW5NZXNzYWdlKSB7CiAgIEVYUEVDVF9FUSgyVSwgcmV0cmFuc21pdF9hdHRyLT52YWx1
ZSgpKTsKIAogICAvLyBSZXNwb25kIHdpdGggYSBCSU5ESU5HLVJFU1BPTlNFLgotICByZXF1ZXN0
LnJlc2V0KENvcHlTdHVuTWVzc2FnZShtc2cpKTsKKyAgcmVxdWVzdCA9IENvcHlTdHVuTWVzc2Fn
ZSgqbXNnKTsKICAgbGNvbm4tPk9uUmVhZFBhY2tldChycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5k
YXRhPGNoYXI+KCksCi0gICAgICAgICAgICAgICAgICAgICAgcnBvcnQtPmxhc3Rfc3R1bl9idWYo
KS0+c2l6ZSgpLCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgcnBv
cnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAg
IG1zZyA9IGxwb3J0LT5sYXN0X3N0dW5fbXNnKCk7CiAgIC8vIFJlY2VpdmUgdGhlIEJJTkRJTkct
UkVTUE9OU0UuCiAgIHJjb25uLT5PblJlYWRQYWNrZXQobHBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+
ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVm
KCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgIGxw
b3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwog
CiAgIC8vIFZlcmlmeSB0aGUgU3R1biBwaW5nIHN0YXRzLgogICBFWFBFQ1RfRVEoM1UsIHJjb25u
LT5zdGF0cygpLnNlbnRfcGluZ19yZXF1ZXN0c190b3RhbCk7CkBAIC0xODA0LDEwICsxNzk0LDgg
QEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0U2VuZFN0dW5NZXNzYWdlKSB7CiB9CiAKIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdE5vbWluYXRpb24pIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBs
cG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3Mi
KSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBDcmVhdGVUZXN0
UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIikpOworICBhdXRvIGxwb3J0ID0gQ3Jl
YXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpOworICBhdXRvIHJwb3J0
ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogICBscG9y
dC0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBvcnQtPlNl
dEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKICAgcnBvcnQtPlNldEljZVJvbGUoY3JpY2tl
dDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKQEAgLTE4MzcsNyArMTgyNSw3IEBAIFRFU1RfRihQb3J0
VGVzdCwgVGVzdE5vbWluYXRpb24pIHsKICAgQVNTRVJUX1RSVUVfV0FJVChscG9ydC0+bGFzdF9z
dHVuX21zZygpLCBrRGVmYXVsdFRpbWVvdXQpOwogICBBU1NFUlRfVFJVRShscG9ydC0+bGFzdF9z
dHVuX2J1ZigpKTsKICAgcmNvbm4tPk9uUmVhZFBhY2tldChscG9ydC0+bGFzdF9zdHVuX2J1Zigp
LT5kYXRhPGNoYXI+KCksCi0gICAgICAgICAgICAgICAgICAgICAgbHBvcnQtPmxhc3Rfc3R1bl9i
dWYoKS0+c2l6ZSgpLCBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
bHBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7
CiAgIEVYUEVDVF9FUShub21pbmF0aW9uLCByY29ubi0+cmVtb3RlX25vbWluYXRpb24oKSk7CiAg
IEVYUEVDVF9GQUxTRShsY29ubi0+bm9taW5hdGVkKCkpOwogICBFWFBFQ1RfVFJVRShyY29ubi0+
bm9taW5hdGVkKCkpOwpAQCAtMTg0OSw3ICsxODM3LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0
Tm9taW5hdGlvbikgewogICBBU1NFUlRfVFJVRV9XQUlUKHJwb3J0LT5sYXN0X3N0dW5fbXNnKCks
IGtEZWZhdWx0VGltZW91dCk7CiAgIEFTU0VSVF9UUlVFKHJwb3J0LT5sYXN0X3N0dW5fYnVmKCkp
OwogICBsY29ubi0+T25SZWFkUGFja2V0KHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8Y2hh
cj4oKSwKLSAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXpl
KCksIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFz
dF9zdHVuX2J1ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgRVhQRUNU
X0VRKG5vbWluYXRpb24sIGxjb25uLT5hY2tlZF9ub21pbmF0aW9uKCkpOwogICBFWFBFQ1RfVFJV
RShsY29ubi0+bm9taW5hdGVkKCkpOwogICBFWFBFQ1RfVFJVRShyY29ubi0+bm9taW5hdGVkKCkp
OwpAQCAtMTg2MCwxMCArMTg0OCw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdE5vbWluYXRpb24p
IHsKIFRFU1RfRihQb3J0VGVzdCwgVGVzdFJvdW5kVHJpcFRpbWUpIHsKICAgcnRjOjpTY29wZWRG
YWtlQ2xvY2sgY2xvY2s7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBscG9ydCgKLSAg
ICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3MiKSk7Ci0gIHN0
ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9j
YWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIikpOworICBhdXRvIGxwb3J0ID0gQ3JlYXRlVGVzdFBv
cnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpOworICBhdXRvIHJwb3J0ID0gQ3JlYXRl
VGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogICBscG9ydC0+U2V0SWNl
Um9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBvcnQtPlNldEljZVRpZWJy
ZWFrZXIoa1RpZWJyZWFrZXIxKTsKICAgcnBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9M
RV9DT05UUk9MTEVEKTsKQEAgLTE5MDEsMTAgKzE4ODcsOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRl
c3RSb3VuZFRyaXBUaW1lKSB7CiB9CiAKIFRFU1RfRihQb3J0VGVzdCwgVGVzdFVzZUNhbmRpZGF0
ZUF0dHJpYnV0ZSkgewotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IGxwb3J0KAotICAgICAg
Q3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpKTsKLSAgc3RkOjp1
bmlxdWVfcHRyPFRlc3RQb3J0PiBycG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFk
ZHIyLCAicmZyYWciLCAicnBhc3MiKSk7CisgIGF1dG8gbHBvcnQgPSBDcmVhdGVUZXN0UG9ydChr
TG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIik7CisgIGF1dG8gcnBvcnQgPSBDcmVhdGVUZXN0
UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIik7CiAgIGxwb3J0LT5TZXRJY2VSb2xl
KGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwogICBscG9ydC0+U2V0SWNlVGllYnJlYWtl
cihrVGllYnJlYWtlcjEpOwogICBycG9ydC0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NP
TlRST0xMRUQpOwpAQCAtMTkzMiwxMCArMTkxNiw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFVz
ZUNhbmRpZGF0ZUF0dHJpYnV0ZSkgewogLy8gdGhlIHJlbW90ZSBuZXR3b3JrIGNvc3RzIGFyZSB1
cGRhdGVkIHdpdGggdGhlIHN0dW4gYmluZGluZyByZXF1ZXN0cy4KIFRFU1RfRihQb3J0VGVzdCwg
VGVzdE5ldHdvcmtDb3N0Q2hhbmdlKSB7CiAgIHJ0Yzo6TmV0d29yayogdGVzdF9uZXR3b3JrID0g
TWFrZU5ldHdvcmsoa0xvY2FsQWRkcjEpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IGxw
b3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQodGVzdF9uZXR3b3JrLCAibGZyYWciLCAibHBhc3Mi
KSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBDcmVhdGVUZXN0
UG9ydCh0ZXN0X25ldHdvcmssICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBscG9ydCA9IENy
ZWF0ZVRlc3RQb3J0KHRlc3RfbmV0d29yaywgImxmcmFnIiwgImxwYXNzIik7CisgIGF1dG8gcnBv
cnQgPSBDcmVhdGVUZXN0UG9ydCh0ZXN0X25ldHdvcmssICJyZnJhZyIsICJycGFzcyIpOwogICBs
cG9ydC0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBvcnQt
PlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKICAgcnBvcnQtPlNldEljZVJvbGUoY3Jp
Y2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKQEAgLTE5ODIsNyArMTk2NCw3IEBAIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdE5ldHdvcmtDb3N0Q2hhbmdlKSB7CiAgIEVYUEVDVF9FUShTVFVOX0JJTkRJ
TkdfUkVRVUVTVCwgbXNnLT50eXBlKCkpOwogICAvLyBQYXNzIHRoZSBiaW5kaW5nIHJlcXVlc3Qg
dG8gcnBvcnQuCiAgIHJjb25uLT5PblJlYWRQYWNrZXQobHBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+
ZGF0YTxjaGFyPigpLAotICAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVm
KCktPnNpemUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgIGxw
b3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwog
ICAvLyBXYWl0IHVudGlsIHJwb3J0IHNlbmRzIHRoZSByZXNwb25zZSBhbmQgdGhlbiBjaGVjayB0
aGUgcmVtb3RlIG5ldHdvcmsgY29zdC4KICAgQVNTRVJUX1RSVUVfV0FJVChycG9ydC0+bGFzdF9z
dHVuX21zZygpICE9IE5VTEwsIGtEZWZhdWx0VGltZW91dCk7CiAgIEVYUEVDVF9FUShydGM6OmtO
ZXR3b3JrQ29zdEhpZ2gsIHJjb25uLT5yZW1vdGVfY2FuZGlkYXRlKCkubmV0d29ya19jb3N0KCkp
OwpAQCAtMTk5MCwxMCArMTk3Miw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdE5ldHdvcmtDb3N0
Q2hhbmdlKSB7CiAKIFRFU1RfRihQb3J0VGVzdCwgVGVzdE5ldHdvcmtJbmZvQXR0cmlidXRlKSB7
CiAgIHJ0Yzo6TmV0d29yayogdGVzdF9uZXR3b3JrID0gTWFrZU5ldHdvcmsoa0xvY2FsQWRkcjEp
OwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IGxwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBv
cnQodGVzdF9uZXR3b3JrLCAibGZyYWciLCAibHBhc3MiKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxU
ZXN0UG9ydD4gcnBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydCh0ZXN0X25ldHdvcmssICJyZnJh
ZyIsICJycGFzcyIpKTsKKyAgYXV0byBscG9ydCA9IENyZWF0ZVRlc3RQb3J0KHRlc3RfbmV0d29y
aywgImxmcmFnIiwgImxwYXNzIik7CisgIGF1dG8gcnBvcnQgPSBDcmVhdGVUZXN0UG9ydCh0ZXN0
X25ldHdvcmssICJyZnJhZyIsICJycGFzcyIpOwogICBscG9ydC0+U2V0SWNlUm9sZShjcmlja2V0
OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBvcnQtPlNldEljZVRpZWJyZWFrZXIoa1RpZWJy
ZWFrZXIxKTsKICAgcnBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVE
KTsKQEAgLTIwMzcsNDQgKzIwMTcsNDMgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0TmV0d29ya0lu
Zm9BdHRyaWJ1dGUpIHsKIC8vIFRlc3QgaGFuZGxpbmcgU1RVTiBtZXNzYWdlcy4KIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlKSB7CiAgIC8vIE91ciBwb3J0IHdpbGwgYWN0
IGFzIHRoZSAicmVtb3RlIiBwb3J0LgotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHBvcnQo
Q3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBw
b3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogCiAg
IHN0ZDo6dW5pcXVlX3B0cjxJY2VNZXNzYWdlPiBpbl9tc2csIG91dF9tc2c7Ci0gIHN0ZDo6dW5p
cXVlX3B0cjxCeXRlQnVmZmVyV3JpdGVyPiBidWYobmV3IEJ5dGVCdWZmZXJXcml0ZXIoKSk7Cisg
IGF1dG8gYnVmID0gYWJzbDo6bWFrZV91bmlxdWU8Qnl0ZUJ1ZmZlcldyaXRlcj4oKTsKICAgcnRj
OjpTb2NrZXRBZGRyZXNzIGFkZHIoa0xvY2FsQWRkcjEpOwogICBzdGQ6OnN0cmluZyB1c2VybmFt
ZTsKIAogICAvLyBCSU5ESU5HLVJFUVVFU1QgZnJvbSBsb2NhbCB0byByZW1vdGUgd2l0aCB2YWxp
ZCBJQ0UgdXNlcm5hbWUsCiAgIC8vIE1FU1NBR0UtSU5URUdSSVRZLCBhbmQgRklOR0VSUFJJTlQu
Ci0gIGluX21zZy5yZXNldCgKLSAgICAgIENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNU
VU5fQklORElOR19SRVFVRVNULCAicmZyYWc6bGZyYWciKSk7CisgIGluX21zZyA9IENyZWF0ZVN0
dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAicmZyYWc6bGZyYWci
KTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50ZWdyaXR5KCJycGFzcyIpOwogICBpbl9tc2ctPkFk
ZEZpbmdlcnByaW50KCk7Ci0gIFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0
KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9U
UlVFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRy
LCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1l
KSk7CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cuZ2V0KCkgIT0gTlVMTCk7CiAgIEVYUEVDVF9FUSgi
bGZyYWciLCB1c2VybmFtZSk7CiAKICAgLy8gQklORElORy1SRVNQT05TRSB3aXRob3V0IHVzZXJu
YW1lLCB3aXRoIE1FU1NBR0UtSU5URUdSSVRZIGFuZCBGSU5HRVJQUklOVC4KLSAgaW5fbXNnLnJl
c2V0KENyZWF0ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19SRVNQT05TRSkpOworICBpbl9tc2cg
PSBDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfUkVTUE9OU0UpOwogICBpbl9tc2ctPkFk
ZEF0dHJpYnV0ZShhYnNsOjptYWtlX3VuaXF1ZTxTdHVuWG9yQWRkcmVzc0F0dHJpYnV0ZT4oCiAg
ICAgICBTVFVOX0FUVFJfWE9SX01BUFBFRF9BRERSRVNTLCBrTG9jYWxBZGRyMikpOwogICBpbl9t
c2ctPkFkZE1lc3NhZ2VJbnRlZ3JpdHkoInJwYXNzIik7CiAgIGluX21zZy0+QWRkRmluZ2VycHJp
bnQoKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7CisgIFdy
aXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX1RSVUUocG9ydC0+
R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIsICZvdXRfbXNn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUpKTsKICAgRVhQ
RUNUX1RSVUUob3V0X21zZy5nZXQoKSAhPSBOVUxMKTsKICAgRVhQRUNUX0VRKCIiLCB1c2VybmFt
ZSk7CiAKICAgLy8gQklORElORy1FUlJPUi1SRVNQT05TRSB3aXRob3V0IHVzZXJuYW1lLCB3aXRo
IGVycm9yLCBNLUksIGFuZCBGSU5HRVJQUklOVC4KLSAgaW5fbXNnLnJlc2V0KENyZWF0ZVN0dW5N
ZXNzYWdlKFNUVU5fQklORElOR19FUlJPUl9SRVNQT05TRSkpOworICBpbl9tc2cgPSBDcmVhdGVT
dHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfRVJST1JfUkVTUE9OU0UpOwogICBpbl9tc2ctPkFkZEF0
dHJpYnV0ZShhYnNsOjptYWtlX3VuaXF1ZTxTdHVuRXJyb3JDb2RlQXR0cmlidXRlPigKICAgICAg
IFNUVU5fQVRUUl9FUlJPUl9DT0RFLCBTVFVOX0VSUk9SX1NFUlZFUl9FUlJPUiwKICAgICAgIFNU
VU5fRVJST1JfUkVBU09OX1NFUlZFUl9FUlJPUikpOwogICBpbl9tc2ctPkFkZEZpbmdlcnByaW50
KCk7Ci0gIFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBXcml0
ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9UUlVFKHBvcnQtPkdl
dFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7CiAgIEVYUEVD
VF9UUlVFKG91dF9tc2cuZ2V0KCkgIT0gTlVMTCk7CkBAIC0yMDg3LDE4ICsyMDY2LDE4IEBAIFRF
U1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlKSB7CiAKIC8vIFRlc3RzIGhhbmRs
aW5nIG9mIElDRSBiaW5kaW5nIHJlcXVlc3RzIHdpdGggbWlzc2luZyBvciBpbmNvcnJlY3QgdXNl
cm5hbWVzLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRVc2VybmFt
ZSkgewotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHBvcnQoQ3JlYXRlVGVzdFBvcnQoa0xv
Y2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBwb3J0ID0gQ3JlYXRlVGVzdFBv
cnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxJ
Y2VNZXNzYWdlPiBpbl9tc2csIG91dF9tc2c7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxCeXRlQnVmZmVy
V3JpdGVyPiBidWYobmV3IEJ5dGVCdWZmZXJXcml0ZXIoKSk7CisgIGF1dG8gYnVmID0gYWJzbDo6
bWFrZV91bmlxdWU8Qnl0ZUJ1ZmZlcldyaXRlcj4oKTsKICAgcnRjOjpTb2NrZXRBZGRyZXNzIGFk
ZHIoa0xvY2FsQWRkcjEpOwogICBzdGQ6OnN0cmluZyB1c2VybmFtZTsKIAogICAvLyBCSU5ESU5H
LVJFUVVFU1Qgd2l0aCBubyB1c2VybmFtZS4KLSAgaW5fbXNnLnJlc2V0KENyZWF0ZVN0dW5NZXNz
YWdlKFNUVU5fQklORElOR19SRVFVRVNUKSk7CisgIGluX21zZyA9IENyZWF0ZVN0dW5NZXNzYWdl
KFNUVU5fQklORElOR19SRVFVRVNUKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50ZWdyaXR5KCJy
cGFzcyIpOwogICBpbl9tc2ctPkFkZEZpbmdlcnByaW50KCk7Ci0gIFdyaXRlU3R1bk1lc3NhZ2Uo
aW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1
Zi5nZXQoKSk7CiAgIEVYUEVDVF9UUlVFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgp
LCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cuZ2V0KCkgPT0g
TlVMTCk7CkBAIC0yMTA2LDEwICsyMDg1LDEwIEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRs
ZVN0dW5NZXNzYWdlQmFkVXNlcm5hbWUpIHsKICAgRVhQRUNUX0VRKFNUVU5fRVJST1JfQkFEX1JF
UVVFU1QsIHBvcnQtPmxhc3Rfc3R1bl9lcnJvcl9jb2RlKCkpOwogCiAgIC8vIEJJTkRJTkctUkVR
VUVTVCB3aXRoIGVtcHR5IHVzZXJuYW1lLgotICBpbl9tc2cucmVzZXQoQ3JlYXRlU3R1bk1lc3Nh
Z2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5HX1JFUVVFU1QsICIiKSk7CisgIGluX21zZyA9IENy
ZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAiIik7CiAg
IGluX21zZy0+QWRkTWVzc2FnZUludGVncml0eSgicnBhc3MiKTsKICAgaW5fbXNnLT5BZGRGaW5n
ZXJwcmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsK
KyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfVFJVRShw
b3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91
dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwog
ICBFWFBFQ1RfVFJVRShvdXRfbXNnLmdldCgpID09IE5VTEwpOwpAQCAtMjExNywxMCArMjA5Niwx
MCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZFVzZXJuYW1lKSB7
CiAgIEVYUEVDVF9FUShTVFVOX0VSUk9SX1VOQVVUSE9SSVpFRCwgcG9ydC0+bGFzdF9zdHVuX2Vy
cm9yX2NvZGUoKSk7CiAKICAgLy8gQklORElORy1SRVFVRVNUIHdpdGggdG9vLXNob3J0IHVzZXJu
YW1lLgotICBpbl9tc2cucmVzZXQoQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9C
SU5ESU5HX1JFUVVFU1QsICJyZnJhIikpOworICBpbl9tc2cgPSBDcmVhdGVTdHVuTWVzc2FnZVdp
dGhVc2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgInJmcmEiKTsKICAgaW5fbXNnLT5BZGRN
ZXNzYWdlSW50ZWdyaXR5KCJycGFzcyIpOwogICBpbl9tc2ctPkFkZEZpbmdlcnByaW50KCk7Ci0g
IFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5N
ZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9UUlVFKHBvcnQtPkdldFN0dW5N
ZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9UUlVF
KG91dF9tc2cuZ2V0KCkgPT0gTlVMTCk7CkBAIC0yMTI4LDExICsyMTA3LDEwIEBAIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFkVXNlcm5hbWUpIHsKICAgRVhQRUNUX0VR
KFNUVU5fRVJST1JfVU5BVVRIT1JJWkVELCBwb3J0LT5sYXN0X3N0dW5fZXJyb3JfY29kZSgpKTsK
IAogICAvLyBCSU5ESU5HLVJFUVVFU1Qgd2l0aCByZXZlcnNlZCB1c2VybmFtZS4KLSAgaW5fbXNn
LnJlc2V0KAotICAgICAgQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5H
X1JFUVVFU1QsICJsZnJhZzpyZnJhZyIpKTsKKyAgaW5fbXNnID0gQ3JlYXRlU3R1bk1lc3NhZ2VX
aXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5HX1JFUVVFU1QsICJsZnJhZzpyZnJhZyIpOwogICBpbl9t
c2ctPkFkZE1lc3NhZ2VJbnRlZ3JpdHkoInJwYXNzIik7CiAgIGluX21zZy0+QWRkRmluZ2VycHJp
bnQoKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7CisgIFdy
aXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX1RSVUUocG9ydC0+
R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIsICZvdXRfbXNn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUpKTsKICAgRVhQ
RUNUX1RSVUUob3V0X21zZy5nZXQoKSA9PSBOVUxMKTsKQEAgLTIxNDAsMTEgKzIxMTgsMTAgQEAg
VEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRVc2VybmFtZSkgewogICBF
WFBFQ1RfRVEoU1RVTl9FUlJPUl9VTkFVVEhPUklaRUQsIHBvcnQtPmxhc3Rfc3R1bl9lcnJvcl9j
b2RlKCkpOwogCiAgIC8vIEJJTkRJTkctUkVRVUVTVCB3aXRoIGdhcmJhZ2UgdXNlcm5hbWUuCi0g
IGluX21zZy5yZXNldCgKLSAgICAgIENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5f
QklORElOR19SRVFVRVNULCAiYWJjZDplZmdoIikpOworICBpbl9tc2cgPSBDcmVhdGVTdHVuTWVz
c2FnZVdpdGhVc2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgImFiY2Q6ZWZnaCIpOwogICBp
bl9tc2ctPkFkZE1lc3NhZ2VJbnRlZ3JpdHkoInJwYXNzIik7CiAgIGluX21zZy0+QWRkRmluZ2Vy
cHJpbnQoKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7Cisg
IFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX1RSVUUocG9y
dC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIsICZvdXRf
bXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUpKTsKICAg
RVhQRUNUX1RSVUUob3V0X21zZy5nZXQoKSA9PSBOVUxMKTsKQEAgLTIxNTUsMTkgKzIxMzIsMTgg
QEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRVc2VybmFtZSkgewog
Ly8gVGVzdCBoYW5kbGluZyBTVFVOIG1lc3NhZ2VzIHdpdGggbWlzc2luZyBvciBtYWxmb3JtZWQg
TS1JLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRNZXNzYWdlSW50
ZWdyaXR5KSB7CiAgIC8vIE91ciBwb3J0IHdpbGwgYWN0IGFzIHRoZSAicmVtb3RlIiBwb3J0Lgot
ICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHBvcnQoQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRk
cjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xv
Y2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxJY2VNZXNz
YWdlPiBpbl9tc2csIG91dF9tc2c7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxCeXRlQnVmZmVyV3JpdGVy
PiBidWYobmV3IEJ5dGVCdWZmZXJXcml0ZXIoKSk7CisgIGF1dG8gYnVmID0gYWJzbDo6bWFrZV91
bmlxdWU8Qnl0ZUJ1ZmZlcldyaXRlcj4oKTsKICAgcnRjOjpTb2NrZXRBZGRyZXNzIGFkZHIoa0xv
Y2FsQWRkcjEpOwogICBzdGQ6OnN0cmluZyB1c2VybmFtZTsKIAogICAvLyBCSU5ESU5HLVJFUVVF
U1QgZnJvbSBsb2NhbCB0byByZW1vdGUgd2l0aCB2YWxpZCBJQ0UgdXNlcm5hbWUgYW5kCiAgIC8v
IEZJTkdFUlBSSU5ULCBidXQgbm8gTUVTU0FHRS1JTlRFR1JJVFkuCi0gIGluX21zZy5yZXNldCgK
LSAgICAgIENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNU
LCAicmZyYWc6bGZyYWciKSk7CisgIGluX21zZyA9IENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJu
YW1lKFNUVU5fQklORElOR19SRVFVRVNULCAicmZyYWc6bGZyYWciKTsKICAgaW5fbXNnLT5BZGRG
aW5nZXJwcmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgp
KTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfVFJV
RShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgYWRkciwg
Jm91dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkp
OwogICBFWFBFQ1RfVFJVRShvdXRfbXNnLmdldCgpID09IE5VTEwpOwpAQCAtMjE3NiwxMSArMjE1
MiwxMCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZE1lc3NhZ2VJ
bnRlZ3JpdHkpIHsKIAogICAvLyBCSU5ESU5HLVJFUVVFU1QgZnJvbSBsb2NhbCB0byByZW1vdGUg
d2l0aCB2YWxpZCBJQ0UgdXNlcm5hbWUgYW5kCiAgIC8vIEZJTkdFUlBSSU5ULCBidXQgaW52YWxp
ZCBNRVNTQUdFLUlOVEVHUklUWS4KLSAgaW5fbXNnLnJlc2V0KAotICAgICAgQ3JlYXRlU3R1bk1l
c3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5HX1JFUVVFU1QsICJyZnJhZzpsZnJhZyIpKTsK
KyAgaW5fbXNnID0gQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5HX1JF
UVVFU1QsICJyZnJhZzpsZnJhZyIpOwogICBpbl9tc2ctPkFkZE1lc3NhZ2VJbnRlZ3JpdHkoImlu
dmFsaWQiKTsKICAgaW5fbXNnLT5BZGRGaW5nZXJwcmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdl
KGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBi
dWYuZ2V0KCkpOwogICBFWFBFQ1RfVFJVRShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEo
KSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfVFJVRShvdXRfbXNnLmdldCgpID09
IE5VTEwpOwpAQCAtMjE5NSwxOSArMjE3MCwxOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5k
bGVTdHVuTWVzc2FnZUJhZE1lc3NhZ2VJbnRlZ3JpdHkpIHsKIC8vIFRlc3QgaGFuZGxpbmcgU1RV
TiBtZXNzYWdlcyB3aXRoIG1pc3Npbmcgb3IgbWFsZm9ybWVkIEZJTkdFUlBSSU5ULgogVEVTVF9G
KFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRGaW5nZXJwcmludCkgewogICAvLyBP
dXIgcG9ydCB3aWxsIGFjdCBhcyB0aGUgInJlbW90ZSIgcG9ydC4KLSAgc3RkOjp1bmlxdWVfcHRy
PFRlc3RQb3J0PiBwb3J0KENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBh
c3MiKSk7CisgIGF1dG8gcG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWci
LCAicnBhc3MiKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gaW5fbXNnLCBvdXRf
bXNnOwotICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZUJ1ZmZlcldyaXRlcj4gYnVmKG5ldyBCeXRlQnVm
ZmVyV3JpdGVyKCkpOworICBhdXRvIGJ1ZiA9IGFic2w6Om1ha2VfdW5pcXVlPEJ5dGVCdWZmZXJX
cml0ZXI+KCk7CiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBhZGRyKGtMb2NhbEFkZHIxKTsKICAgc3Rk
OjpzdHJpbmcgdXNlcm5hbWU7CiAKICAgLy8gQklORElORy1SRVFVRVNUIGZyb20gbG9jYWwgdG8g
cmVtb3RlIHdpdGggdmFsaWQgSUNFIHVzZXJuYW1lIGFuZAogICAvLyBNRVNTQUdFLUlOVEVHUklU
WSwgYnV0IG5vIEZJTkdFUlBSSU5UOyBHZXRTdHVuTWVzc2FnZSBzaG91bGQgZmFpbC4KLSAgaW5f
bXNnLnJlc2V0KAotICAgICAgQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5E
SU5HX1JFUVVFU1QsICJyZnJhZzpsZnJhZyIpKTsKKyAgaW5fbXNnID0gQ3JlYXRlU3R1bk1lc3Nh
Z2VXaXRoVXNlcm5hbWUoU1RVTl9CSU5ESU5HX1JFUVVFU1QsICJyZnJhZzpsZnJhZyIpOwogICBp
bl9tc2ctPkFkZE1lc3NhZ2VJbnRlZ3JpdHkoInJwYXNzIik7Ci0gIFdyaXRlU3R1bk1lc3NhZ2Uo
aW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1
Zi5nZXQoKSk7CiAgIEVYUEVDVF9GQUxTRShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEo
KSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmdXNlcm5hbWUpKTsKICAgRVhQRUNUX0VRKDAsIHBvcnQtPmxhc3Rfc3R1
bl9lcnJvcl9jb2RlKCkpOwpAQCAtMjIxNSwxNyArMjE4OSwxNyBAQCBURVNUX0YoUG9ydFRlc3Qs
IFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZEZpbmdlcnByaW50KSB7CiAgIC8vIE5vdywgYWRkIGEg
ZmluZ2VycHJpbnQsIGJ1dCBtdW5nZSB0aGUgbWVzc2FnZSBzbyBpdCdzIG5vdCB2YWxpZC4KICAg
aW5fbXNnLT5BZGRGaW5nZXJwcmludCgpOwogICBpbl9tc2ctPlNldFRyYW5zYWN0aW9uSUQoIlRF
U1RURVNUQkFERCIpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgp
KTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfRkFM
U0UocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIs
ICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1l
KSk7CiAgIEVYUEVDVF9FUSgwLCBwb3J0LT5sYXN0X3N0dW5fZXJyb3JfY29kZSgpKTsKIAogICAv
LyBWYWxpZCBCSU5ESU5HLVJFU1BPTlNFLCBleGNlcHQgbm8gRklOR0VSUFJJTlQuCi0gIGluX21z
Zy5yZXNldChDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfUkVTUE9OU0UpKTsKKyAgaW5f
bXNnID0gQ3JlYXRlU3R1bk1lc3NhZ2UoU1RVTl9CSU5ESU5HX1JFU1BPTlNFKTsKICAgaW5fbXNn
LT5BZGRBdHRyaWJ1dGUoYWJzbDo6bWFrZV91bmlxdWU8U3R1blhvckFkZHJlc3NBdHRyaWJ1dGU+
KAogICAgICAgU1RVTl9BVFRSX1hPUl9NQVBQRURfQUREUkVTUywga0xvY2FsQWRkcjIpKTsKICAg
aW5fbXNnLT5BZGRNZXNzYWdlSW50ZWdyaXR5KCJycGFzcyIpOwotICBXcml0ZVN0dW5NZXNzYWdl
KGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBi
dWYuZ2V0KCkpOwogICBFWFBFQ1RfRkFMU0UocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRh
KCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIsICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9FUSgwLCBwb3J0LT5sYXN0X3N0
dW5fZXJyb3JfY29kZSgpKTsKQEAgLTIyMzMsMTggKzIyMDcsMTggQEAgVEVTVF9GKFBvcnRUZXN0
LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRGaW5nZXJwcmludCkgewogICAvLyBOb3csIGFkZCBh
IGZpbmdlcnByaW50LCBidXQgbXVuZ2UgdGhlIG1lc3NhZ2Ugc28gaXQncyBub3QgdmFsaWQuCiAg
IGluX21zZy0+QWRkRmluZ2VycHJpbnQoKTsKICAgaW5fbXNnLT5TZXRUcmFuc2FjdGlvbklEKCJU
RVNUVEVTVEJBREQiKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQo
KSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX0ZB
TFNFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRy
LCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFt
ZSkpOwogICBFWFBFQ1RfRVEoMCwgcG9ydC0+bGFzdF9zdHVuX2Vycm9yX2NvZGUoKSk7CiAKICAg
Ly8gVmFsaWQgQklORElORy1FUlJPUi1SRVNQT05TRSwgZXhjZXB0IG5vIEZJTkdFUlBSSU5ULgot
ICBpbl9tc2cucmVzZXQoQ3JlYXRlU3R1bk1lc3NhZ2UoU1RVTl9CSU5ESU5HX0VSUk9SX1JFU1BP
TlNFKSk7CisgIGluX21zZyA9IENyZWF0ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19FUlJPUl9S
RVNQT05TRSk7CiAgIGluX21zZy0+QWRkQXR0cmlidXRlKGFic2w6Om1ha2VfdW5pcXVlPFN0dW5F
cnJvckNvZGVBdHRyaWJ1dGU+KAogICAgICAgU1RVTl9BVFRSX0VSUk9SX0NPREUsIFNUVU5fRVJS
T1JfU0VSVkVSX0VSUk9SLAogICAgICAgU1RVTl9FUlJPUl9SRUFTT05fU0VSVkVSX0VSUk9SKSk7
CiAgIGluX21zZy0+QWRkTWVzc2FnZUludGVncml0eSgicnBhc3MiKTsKLSAgV3JpdGVTdHVuTWVz
c2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21z
ZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX0ZBTFNFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+
RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfRVEoMCwgcG9ydC0+bGFz
dF9zdHVuX2Vycm9yX2NvZGUoKSk7CkBAIC0yMjUyLDcgKzIyMjYsNyBAQCBURVNUX0YoUG9ydFRl
c3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZEZpbmdlcnByaW50KSB7CiAgIC8vIE5vdywgYWRk
IGEgZmluZ2VycHJpbnQsIGJ1dCBtdW5nZSB0aGUgbWVzc2FnZSBzbyBpdCdzIG5vdCB2YWxpZC4K
ICAgaW5fbXNnLT5BZGRGaW5nZXJwcmludCgpOwogICBpbl9tc2ctPlNldFRyYW5zYWN0aW9uSUQo
IlRFU1RURVNUQkFERCIpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdl
dCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1Rf
RkFMU0UocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFk
ZHIsICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJu
YW1lKSk7CiAgIEVYUEVDVF9FUSgwLCBwb3J0LT5sYXN0X3N0dW5fZXJyb3JfY29kZSgpKTsKQEAg
LTIyNjEsOCArMjIzNSw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdl
QmFkRmluZ2VycHJpbnQpIHsKIC8vIFRlc3QgaGFuZGxpbmcgb2YgU1RVTiBiaW5kaW5nIGluZGlj
YXRpb24gbWVzc2FnZXMgLiBTVFVOIGJpbmRpbmcKIC8vIGluZGljYXRpb25zIGFyZSBhbGxvd2Vk
IG9ubHkgdG8gdGhlIGNvbm5lY3Rpb24gd2hpY2ggaXMgaW4gcmVhZCBtb2RlLgogVEVTVF9GKFBv
cnRUZXN0LCBUZXN0SGFuZGxlU3R1bkJpbmRpbmdJbmRpY2F0aW9uKSB7Ci0gIHN0ZDo6dW5pcXVl
X3B0cjxUZXN0UG9ydD4gbHBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwg
ImxmcmFnIiwgImxwYXNzIikpOworICBhdXRvIGxwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2Fs
QWRkcjIsICJsZnJhZyIsICJscGFzcyIpOwogICBscG9ydC0+U2V0SWNlUm9sZShjcmlja2V0OjpJ
Q0VST0xFX0NPTlRST0xMSU5HKTsKICAgbHBvcnQtPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFr
ZXIxKTsKIApAQCAtMjI3Miw5ICsyMjQ1LDkgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxl
U3R1bkJpbmRpbmdJbmRpY2F0aW9uKSB7CiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBhZGRyKGtMb2Nh
bEFkZHIxKTsKICAgc3RkOjpzdHJpbmcgdXNlcm5hbWU7CiAKLSAgaW5fbXNnLnJlc2V0KENyZWF0
ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19JTkRJQ0FUSU9OKSk7CisgIGluX21zZyA9IENyZWF0
ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19JTkRJQ0FUSU9OKTsKICAgaW5fbXNnLT5BZGRGaW5n
ZXJwcmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsK
KyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfVFJVRShs
cG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIsICZv
dXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7
CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cuZ2V0KCkgIT0gTlVMTCk7CkBAIC0yMjgzLDggKzIyNTYs
NyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuQmluZGluZ0luZGljYXRpb24pIHsK
IAogICAvLyBWZXJpZnkgY29ubmVjdGlvbiBjYW4gaGFuZGxlIFNUVU4gaW5kaWNhdGlvbiBhbmQg
dXBkYXRlcwogICAvLyBsYXN0X3BpbmdfcmVjZWl2ZWQuCi0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0
UG9ydD4gcnBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwg
InJwYXNzIikpOworICBhdXRvIHJwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJy
ZnJhZyIsICJycGFzcyIpOwogICBycG9ydC0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NP
TlRST0xMRUQpOwogICBycG9ydC0+U2V0SWNlVGllYnJlYWtlcihrVGllYnJlYWtlcjIpOwogCkBA
IC0yMzA0LDcgKzIyNzYsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuQmluZGlu
Z0luZGljYXRpb24pIHsKICAgRVhQRUNUX0VRKFNUVU5fQklORElOR19SRVFVRVNULCBtc2ctPnR5
cGUoKSk7CiAgIC8vIFNlbmQgcnBvcnQgYmluZGluZyByZXF1ZXN0IHRvIGxwb3J0LgogICBsY29u
bi0+T25SZWFkUGFja2V0KHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAg
ICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6
UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1
ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgQVNTRVJUX1RSVUVfV0FJ
VChscG9ydC0+bGFzdF9zdHVuX21zZygpICE9IE5VTEwsIGtEZWZhdWx0VGltZW91dCk7CiAgIEVY
UEVDVF9FUShTVFVOX0JJTkRJTkdfUkVTUE9OU0UsIGxwb3J0LT5sYXN0X3N0dW5fbXNnKCktPnR5
cGUoKSk7CiAgIGludDY0X3QgbGFzdF9waW5nX3JlY2VpdmVkMSA9IGxjb25uLT5sYXN0X3Bpbmdf
cmVjZWl2ZWQoKTsKQEAgLTIzMTIsMTMgKzIyODQsMTMgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0
SGFuZGxlU3R1bkJpbmRpbmdJbmRpY2F0aW9uKSB7CiAgIC8vIEFkZGluZyBhIGRlbGF5IG9mIDEw
MG1zLgogICBydGM6OlRocmVhZDo6Q3VycmVudCgpLT5Qcm9jZXNzTWVzc2FnZXMoMTAwKTsKICAg
Ly8gUGluZ2luZyBsY29ubiB1c2luZyBzdHVuIGluZGljYXRpb24gbWVzc2FnZS4KLSAgbGNvbm4t
Pk9uUmVhZFBhY2tldChidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgcnRjOjpQYWNrZXRUaW1l
KCkpOworICBsY29ubi0+T25SZWFkUGFja2V0KGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCAv
KiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIGludDY0X3QgbGFzdF9waW5nX3JlY2VpdmVkMiA9
IGxjb25uLT5sYXN0X3BpbmdfcmVjZWl2ZWQoKTsKICAgRVhQRUNUX0dUKGxhc3RfcGluZ19yZWNl
aXZlZDIsIGxhc3RfcGluZ19yZWNlaXZlZDEpOwogfQogCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RD
b21wdXRlQ2FuZGlkYXRlUHJpb3JpdHkpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBw
b3J0KENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibmFtZSIsICJwYXNzIikpOworICBhdXRv
IHBvcnQgPSBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgIm5hbWUiLCAicGFzcyIpOwogICBw
b3J0LT5zZXRfdHlwZV9wcmVmZXJlbmNlKDkwKTsKICAgcG9ydC0+c2V0X2NvbXBvbmVudCgxNzcp
OwogICBwb3J0LT5BZGRDYW5kaWRhdGVBZGRyZXNzKFNvY2tldEFkZHJlc3MoIjE5Mi4xNjguMS40
IiwgMTIzNCkpOwpAQCAtMjM1NSw4ICsyMzI3LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q29t
cHV0ZUNhbmRpZGF0ZVByaW9yaXR5KSB7CiAvLyBJbiB0aGUgY2FzZSBvZiBzaGFyZWQgc29ja2V0
LCBvbmUgcG9ydCBtYXkgYmUgc2hhcmVkIGJ5IGxvY2FsIGFuZCBzdHVuLgogLy8gVGVzdCB0aGF0
IGNhbmRpZGF0ZXMgd2l0aCBkaWZmZXJlbnQgdHlwZXMgd2lsbCBoYXZlIGRpZmZlcmVudCBmb3Vu
ZGF0aW9uLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0Rm91bmRhdGlvbikgewotICBzdGQ6OnVuaXF1
ZV9wdHI8VGVzdFBvcnQ+IHRlc3Rwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRk
cjEsICJuYW1lIiwgInBhc3MiKSk7CisgIGF1dG8gdGVzdHBvcnQgPSBDcmVhdGVUZXN0UG9ydChr
TG9jYWxBZGRyMSwgIm5hbWUiLCAicGFzcyIpOwogICB0ZXN0cG9ydC0+QWRkQ2FuZGlkYXRlQWRk
cmVzcyhrTG9jYWxBZGRyMSwga0xvY2FsQWRkcjEsIExPQ0FMX1BPUlRfVFlQRSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6SUNFX1RZUEVfUFJFRkVSRU5DRV9IT1NU
LCBmYWxzZSk7CiAgIHRlc3Rwb3J0LT5BZGRDYW5kaWRhdGVBZGRyZXNzKGtMb2NhbEFkZHIyLCBr
TG9jYWxBZGRyMSwgU1RVTl9QT1JUX1RZUEUsCkBAIC0yMzY5LDIwICsyMzQwLDE5IEBAIFRFU1Rf
RihQb3J0VGVzdCwgVGVzdEZvdW5kYXRpb24pIHsKIFRFU1RfRihQb3J0VGVzdCwgVGVzdENhbmRp
ZGF0ZUZvdW5kYXRpb24pIHsKICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6TkFUU2VydmVyPiBuYXRf
c2VydmVyKAogICAgICAgQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMSwgTkFUX09QRU5fQ09ORSkp
OwotICBzdGQ6OnVuaXF1ZV9wdHI8VURQUG9ydD4gdWRwcG9ydDEoQ3JlYXRlVWRwUG9ydChrTG9j
YWxBZGRyMSkpOworICBhdXRvIHVkcHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7
CiAgIHVkcHBvcnQxLT5QcmVwYXJlQWRkcmVzcygpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VURQUG9y
dD4gdWRwcG9ydDIoQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSkpOworICBhdXRvIHVkcHBvcnQy
ID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHVkcHBvcnQyLT5QcmVwYXJlQWRkcmVz
cygpOwogICBFWFBFQ1RfRVEodWRwcG9ydDEtPkNhbmRpZGF0ZXMoKVswXS5mb3VuZGF0aW9uKCks
CiAgICAgICAgICAgICB1ZHBwb3J0Mi0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSk7Ci0g
IHN0ZDo6dW5pcXVlX3B0cjxUQ1BQb3J0PiB0Y3Bwb3J0MShDcmVhdGVUY3BQb3J0KGtMb2NhbEFk
ZHIxKSk7CisgIGF1dG8gdGNwcG9ydDEgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKTsKICAg
dGNwcG9ydDEtPlByZXBhcmVBZGRyZXNzKCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUQ1BQb3J0PiB0
Y3Bwb3J0MihDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKSk7CisgIGF1dG8gdGNwcG9ydDIgPSBD
cmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKTsKICAgdGNwcG9ydDItPlByZXBhcmVBZGRyZXNzKCk7
CiAgIEVYUEVDVF9FUSh0Y3Bwb3J0MS0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSwKICAg
ICAgICAgICAgIHRjcHBvcnQyLT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpKTsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPFBvcnQ+IHN0dW5wb3J0KAotICAgICAgQ3JlYXRlU3R1blBvcnQoa0xvY2Fs
QWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSkpOworICBhdXRvIHN0dW5wb3J0ID0gQ3JlYXRl
U3R1blBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSk7CiAgIHN0dW5wb3J0
LT5QcmVwYXJlQWRkcmVzcygpOwogICBBU1NFUlRfRVFfV0FJVCgxVSwgc3R1bnBvcnQtPkNhbmRp
ZGF0ZXMoKS5zaXplKCksIGtEZWZhdWx0VGltZW91dCk7CiAgIEVYUEVDVF9ORSh0Y3Bwb3J0MS0+
Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSwKQEAgLTIzOTQsNyArMjM2NCw3IEBAIFRFU1Rf
RihQb3J0VGVzdCwgVGVzdENhbmRpZGF0ZUZvdW5kYXRpb24pIHsKICAgRVhQRUNUX05FKHVkcHBv
cnQyLT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpLAogICAgICAgICAgICAgc3R1bnBvcnQt
PkNhbmRpZGF0ZXMoKVswXS5mb3VuZGF0aW9uKCkpOwogICAvLyBWZXJpZnkgR1RVUk4gY2FuZGlk
YXRlIGZvdW5kYXRpb24uCi0gIHN0ZDo6dW5pcXVlX3B0cjxSZWxheVBvcnQ+IHJlbGF5cG9ydChD
cmVhdGVHdHVyblBvcnQoa0xvY2FsQWRkcjEpKTsKKyAgYXV0byByZWxheXBvcnQgPSBDcmVhdGVH
dHVyblBvcnQoa0xvY2FsQWRkcjEpOwogICByZWxheXBvcnQtPkFkZFNlcnZlckFkZHJlc3MoCiAg
ICAgICBjcmlja2V0OjpQcm90b2NvbEFkZHJlc3Moa1JlbGF5VWRwSW50QWRkciwgY3JpY2tldDo6
UFJPVE9fVURQKSk7CiAgIHJlbGF5cG9ydC0+UHJlcGFyZUFkZHJlc3MoKTsKQEAgLTI0MDQsOCAr
MjM3NCw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdENhbmRpZGF0ZUZvdW5kYXRpb24pIHsKICAg
RVhQRUNUX05FKHVkcHBvcnQyLT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpLAogICAgICAg
ICAgICAgcmVsYXlwb3J0LT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpKTsKICAgLy8gVmVy
aWZ5aW5nIFRVUk4gY2FuZGlkYXRlIGZvdW5kYXRpb24uCi0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0
PiB0dXJucG9ydDEoCi0gICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tl
dF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VEUCkpOworICBhdXRvIHR1cm5wb3J0MSA9
CisgICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgp
LCBQUk9UT19VRFAsIFBST1RPX1VEUCk7CiAgIHR1cm5wb3J0MS0+UHJlcGFyZUFkZHJlc3MoKTsK
ICAgQVNTRVJUX0VRX1dBSVQoMVUsIHR1cm5wb3J0MS0+Q2FuZGlkYXRlcygpLnNpemUoKSwga0Rl
ZmF1bHRUaW1lb3V0KTsKICAgRVhQRUNUX05FKHVkcHBvcnQxLT5DYW5kaWRhdGVzKClbMF0uZm91
bmRhdGlvbigpLApAQCAtMjQxNCw4ICsyMzg0LDggQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q2Fu
ZGlkYXRlRm91bmRhdGlvbikgewogICAgICAgICAgICAgdHVybnBvcnQxLT5DYW5kaWRhdGVzKClb
MF0uZm91bmRhdGlvbigpKTsKICAgRVhQRUNUX05FKHN0dW5wb3J0LT5DYW5kaWRhdGVzKClbMF0u
Zm91bmRhdGlvbigpLAogICAgICAgICAgICAgdHVybnBvcnQxLT5DYW5kaWRhdGVzKClbMF0uZm91
bmRhdGlvbigpKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IHR1cm5wb3J0MigKLSAgICAgIENy
ZWF0ZVR1cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1VE
UCwgUFJPVE9fVURQKSk7CisgIGF1dG8gdHVybnBvcnQyID0KKyAgICAgIENyZWF0ZVR1cm5Qb3J0
KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1VEUCwgUFJPVE9fVURQ
KTsKICAgdHVybnBvcnQyLT5QcmVwYXJlQWRkcmVzcygpOwogICBBU1NFUlRfRVFfV0FJVCgxVSwg
dHVybnBvcnQyLT5DYW5kaWRhdGVzKCkuc2l6ZSgpLCBrRGVmYXVsdFRpbWVvdXQpOwogICBFWFBF
Q1RfRVEodHVybnBvcnQxLT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpLApAQCAtMjQyNiw5
ICsyMzk2LDggQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q2FuZGlkYXRlRm91bmRhdGlvbikgewog
ICBTb2NrZXRBZGRyZXNzIGtUdXJuVWRwRXh0QWRkcjIoIjk5Ljk5Ljk4LjUiLCAwKTsKICAgVGVz
dFR1cm5TZXJ2ZXIgdHVybl9zZXJ2ZXIyKHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksIGtUdXJuVWRw
SW50QWRkcjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVHVyblVkcEV4dEFkZHIy
KTsKLSAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IHR1cm5wb3J0MygKLSAgICAgIENyZWF0ZVR1cm5Q
b3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1VEUCwgUFJPVE9f
VURQLAotICAgICAgICAgICAgICAgICAgICAga1R1cm5VZHBJbnRBZGRyMikpOworICBhdXRvIHR1
cm5wb3J0MyA9IENyZWF0ZVR1cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3Rvcnkx
KCksIFBST1RPX1VEUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9UT19V
RFAsIGtUdXJuVWRwSW50QWRkcjIpOwogICB0dXJucG9ydDMtPlByZXBhcmVBZGRyZXNzKCk7CiAg
IEFTU0VSVF9FUV9XQUlUKDFVLCB0dXJucG9ydDMtPkNhbmRpZGF0ZXMoKS5zaXplKCksIGtEZWZh
dWx0VGltZW91dCk7CiAgIEVYUEVDVF9ORSh0dXJucG9ydDMtPkNhbmRpZGF0ZXMoKVswXS5mb3Vu
ZGF0aW9uKCksCkBAIC0yNDM4LDggKzI0MDcsOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RDYW5k
aWRhdGVGb3VuZGF0aW9uKSB7CiAgIC8vIGRpZmZlcmVudCBmb3VuZGF0aW9ucyBpZiB0aGVpciBy
ZWxheSBwcm90b2NvbHMgYXJlIGRpZmZlcmVudC4KICAgVGVzdFR1cm5TZXJ2ZXIgdHVybl9zZXJ2
ZXIzKHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksIGtUdXJuVGNwSW50QWRkciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtUdXJuVWRwRXh0QWRkciwgUFJPVE9fVENQKTsKLSAgc3RkOjp1
bmlxdWVfcHRyPFBvcnQ+IHR1cm5wb3J0NCgKLSAgICAgIENyZWF0ZVR1cm5Qb3J0KGtMb2NhbEFk
ZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1RDUCwgUFJPVE9fVURQKSk7CisgIGF1
dG8gdHVybnBvcnQ0ID0KKyAgICAgIENyZWF0ZVR1cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29j
a2V0X2ZhY3RvcnkxKCksIFBST1RPX1RDUCwgUFJPVE9fVURQKTsKICAgdHVybnBvcnQ0LT5QcmVw
YXJlQWRkcmVzcygpOwogICBBU1NFUlRfRVFfV0FJVCgxVSwgdHVybnBvcnQ0LT5DYW5kaWRhdGVz
KCkuc2l6ZSgpLCBrRGVmYXVsdFRpbWVvdXQpOwogICBFWFBFQ1RfTkUodHVybnBvcnQyLT5DYW5k
aWRhdGVzKClbMF0uZm91bmRhdGlvbigpLApAQCAtMjQ0OSwxNyArMjQxOCwxNSBAQCBURVNUX0Yo
UG9ydFRlc3QsIFRlc3RDYW5kaWRhdGVGb3VuZGF0aW9uKSB7CiAvLyBUaGlzIHRlc3QgdmVyaWZp
ZXMgdGhlIHJlbGF0ZWQgYWRkcmVzc2VzIG9mIGRpZmZlcmVudCB0eXBlcyBvZgogLy8gSUNFIGNh
bmRpYXRlcy4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdENhbmRpZGF0ZVJlbGF0ZWRBZGRyZXNzKSB7
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxydGM6Ok5BVFNlcnZlcj4gbmF0X3NlcnZlcigKLSAgICAgIENy
ZWF0ZU5hdFNlcnZlcihrTmF0QWRkcjEsIE5BVF9PUEVOX0NPTkUpKTsKLSAgc3RkOjp1bmlxdWVf
cHRyPFVEUFBvcnQ+IHVkcHBvcnQoQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSkpOworICBhdXRv
IG5hdF9zZXJ2ZXIgPSBDcmVhdGVOYXRTZXJ2ZXIoa05hdEFkZHIxLCBOQVRfT1BFTl9DT05FKTsK
KyAgYXV0byB1ZHBwb3J0ID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHVkcHBvcnQt
PlByZXBhcmVBZGRyZXNzKCk7CiAgIC8vIEZvciBVRFBQb3J0LCByZWxhdGVkIGFkZHJlc3Mgd2ls
bCBiZSBlbXB0eS4KICAgRVhQRUNUX1RSVUUodWRwcG9ydC0+Q2FuZGlkYXRlcygpWzBdLnJlbGF0
ZWRfYWRkcmVzcygpLklzTmlsKCkpOwogICAvLyBUZXN0aW5nIHJlbGF0ZWQgYWRkcmVzcyBmb3Ig
c3R1biBjYW5kaWRhdGVzLgogICAvLyBGb3Igc3R1biBjYW5kaWRhdGUgcmVsYXRlZCBhZGRyZXNz
IG11c3QgYmUgZXF1YWwgdG8gdGhlIGJhc2UKICAgLy8gc29ja2V0IGFkZHJlc3MuCi0gIHN0ZDo6
dW5pcXVlX3B0cjxTdHVuUG9ydD4gc3R1bnBvcnQoCi0gICAgICBDcmVhdGVTdHVuUG9ydChrTG9j
YWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpKSk7CisgIGF1dG8gc3R1bnBvcnQgPSBDcmVh
dGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpKTsKICAgc3R1bnBv
cnQtPlByZXBhcmVBZGRyZXNzKCk7CiAgIEFTU0VSVF9FUV9XQUlUKDFVLCBzdHVucG9ydC0+Q2Fu
ZGlkYXRlcygpLnNpemUoKSwga0RlZmF1bHRUaW1lb3V0KTsKICAgLy8gQ2hlY2sgU1RVTiBjYW5k
aWRhdGUgYWRkcmVzcy4KQEAgLTI0NzAsNyArMjQzNyw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVz
dENhbmRpZGF0ZVJlbGF0ZWRBZGRyZXNzKSB7CiAgIC8vIFZlcmlmeWluZyB0aGUgcmVsYXRlZCBh
ZGRyZXNzIGZvciB0aGUgR1RVUk4gY2FuZGlkYXRlcy4KICAgLy8gTk9URTogSW4gY2FzZSBvZiBH
VFVSTiByZWxhdGVkIGFkZHJlc3Mgd2lsbCBiZSBlcXVhbCB0byB0aGUgbWFwcGVkCiAgIC8vIGFk
ZHJlc3MsIGJ1dCBhZGRyZXNzKG1hcHBlZCkgd2lsbCBub3QgYmUgWE9SLgotICBzdGQ6OnVuaXF1
ZV9wdHI8UmVsYXlQb3J0PiByZWxheXBvcnQoQ3JlYXRlR3R1cm5Qb3J0KGtMb2NhbEFkZHIxKSk7
CisgIGF1dG8gcmVsYXlwb3J0ID0gQ3JlYXRlR3R1cm5Qb3J0KGtMb2NhbEFkZHIxKTsKICAgcmVs
YXlwb3J0LT5BZGRTZXJ2ZXJBZGRyZXNzKAogICAgICAgY3JpY2tldDo6UHJvdG9jb2xBZGRyZXNz
KGtSZWxheVVkcEludEFkZHIsIGNyaWNrZXQ6OlBST1RPX1VEUCkpOwogICByZWxheXBvcnQtPlBy
ZXBhcmVBZGRyZXNzKCk7CkBAIC0yNDc5LDggKzI0NDYsOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRl
c3RDYW5kaWRhdGVSZWxhdGVkQWRkcmVzcykgewogICBFWFBFQ1RfRVEocnRjOjpTb2NrZXRBZGRy
ZXNzKCksIHJlbGF5cG9ydC0+Q2FuZGlkYXRlcygpWzBdLnJlbGF0ZWRfYWRkcmVzcygpKTsKICAg
Ly8gVmVyaWZ5aW5nIHRoZSByZWxhdGVkIGFkZHJlc3MgZm9yIFRVUk4gY2FuZGlkYXRlLgogICAv
LyBGb3IgVFVSTiByZWxhdGVkIGFkZHJlc3MgbXVzdCBiZSBlcXVhbCB0byB0aGUgbWFwcGVkIGFk
ZHJlc3MuCi0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiB0dXJucG9ydCgKLSAgICAgIENyZWF0ZVR1
cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1VEUCwgUFJP
VE9fVURQKSk7CisgIGF1dG8gdHVybnBvcnQgPQorICAgICAgQ3JlYXRlVHVyblBvcnQoa0xvY2Fs
QWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQUk9UT19VRFApOwogICB0
dXJucG9ydC0+UHJlcGFyZUFkZHJlc3MoKTsKICAgQVNTRVJUX0VRX1dBSVQoMVUsIHR1cm5wb3J0
LT5DYW5kaWRhdGVzKCkuc2l6ZSgpLCBrRGVmYXVsdFRpbWVvdXQpOwogICBFWFBFQ1RfRVEoa1R1
cm5VZHBFeHRBZGRyLmlwYWRkcigpLApAQCAtMjUwMCwxMSArMjQ2Nyw5IEBAIFRFU1RfRihQb3J0
VGVzdCwgVGVzdENhbmRpZGF0ZVByaW9yaXR5KSB7CiAKIC8vIFRlc3QgdGhlIENvbm5lY3Rpb24g
cHJpb3JpdHkgaXMgY2FsY3VsYXRlZCBjb3JyZWN0bHkuCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RD
b25uZWN0aW9uUHJpb3JpdHkpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBscG9ydCgK
LSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3MiKSk7Cisg
IGF1dG8gbHBvcnQgPSBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNz
Iik7CiAgIGxwb3J0LT5zZXRfdHlwZV9wcmVmZXJlbmNlKGNyaWNrZXQ6OklDRV9UWVBFX1BSRUZF
UkVOQ0VfSE9TVCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcnBvcnQoCi0gICAgICBD
cmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIikpOworICBhdXRvIHJw
b3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpOwogICBy
cG9ydC0+c2V0X3R5cGVfcHJlZmVyZW5jZShjcmlja2V0OjpJQ0VfVFlQRV9QUkVGRVJFTkNFX1JF
TEFZX1VEUCk7CiAgIGxwb3J0LT5zZXRfY29tcG9uZW50KDEyMyk7CiAgIGxwb3J0LT5BZGRDYW5k
aWRhdGVBZGRyZXNzKFNvY2tldEFkZHJlc3MoIjE5Mi4xNjguMS40IiwgMTIzNCkpOwpAQCAtMjU0
NSwxNCArMjUxMCwxNCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RDb25uZWN0aW9uUHJpb3JpdHkp
IHsKIC8vIGVzdGltYXRlIGdpdmVuIGJ5IHxNSU5JTVVNX1JUVHwgPSAxMDAuCiBURVNUX0YoUG9y
dFRlc3QsIFRlc3RXcml0YWJsZVN0YXRlKSB7CiAgIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGNsb2Nr
OwotICBVRFBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOworICBhdXRv
IHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHBvcnQxLT5TZXRJY2VSb2xl
KGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwotICBVRFBQb3J0KiBwb3J0MiA9IENyZWF0
ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOworICBhdXRvIHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9j
YWxBZGRyMik7CiAgIHBvcnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExF
RCk7CiAKICAgLy8gU2V0IHVwIGNoYW5uZWxzLgotICBUZXN0Q2hhbm5lbCBjaDEocG9ydDEpOwot
ICBUZXN0Q2hhbm5lbCBjaDIocG9ydDIpOworICBUZXN0Q2hhbm5lbCBjaDEoc3RkOjptb3ZlKHBv
cnQxKSk7CisgIFRlc3RDaGFubmVsIGNoMihzdGQ6Om1vdmUocG9ydDIpKTsKIAogICAvLyBBY3F1
aXJlIGFkZHJlc3Nlcy4KICAgY2gxLlN0YXJ0KCk7CkBAIC0yNTYxLDcgKzI1MjYsNyBAQCBURVNU
X0YoUG9ydFRlc3QsIFRlc3RXcml0YWJsZVN0YXRlKSB7CiAgIEFTU0VSVF9FUV9TSU1VTEFURURf
V0FJVCgxLCBjaDIuY29tcGxldGVfY291bnQoKSwga0RlZmF1bHRUaW1lb3V0LCBjbG9jayk7CiAK
ICAgLy8gU2VuZCBhIHBpbmcgZnJvbSBzcmMgdG8gZHN0LgotICBjaDEuQ3JlYXRlQ29ubmVjdGlv
bihHZXRDYW5kaWRhdGUocG9ydDIpKTsKKyAgY2gxLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlk
YXRlKGNoMi5wb3J0KCkpKTsKICAgQVNTRVJUX1RSVUUoY2gxLmNvbm4oKSAhPSBOVUxMKTsKICAg
RVhQRUNUX0VRKENvbm5lY3Rpb246OlNUQVRFX1dSSVRFX0lOSVQsIGNoMS5jb25uKCktPndyaXRl
X3N0YXRlKCkpOwogICAvLyBmb3IgVENQIGNvbm5lY3QKQEAgLTI1NzcsNyArMjU0Miw3IEBAIFRF
U1RfRihQb3J0VGVzdCwgVGVzdFdyaXRhYmxlU3RhdGUpIHsKIAogICAvLyBBY2NlcHQgdGhlIGNv
bm5lY3Rpb24gdG8gcmV0dXJuIHRoZSBiaW5kaW5nIHJlc3BvbnNlLCB0cmFuc2l0aW9uIHRvCiAg
IC8vIHdyaXRhYmxlLCBhbmQgYWxsb3cgZGF0YSB0byBiZSBzZW50LgotICBjaDIuQWNjZXB0Q29u
bmVjdGlvbihHZXRDYW5kaWRhdGUocG9ydDEpKTsKKyAgY2gyLkFjY2VwdENvbm5lY3Rpb24oR2V0
Q2FuZGlkYXRlKGNoMS5wb3J0KCkpKTsKICAgRVhQRUNUX0VRX1NJTVVMQVRFRF9XQUlUKENvbm5l
Y3Rpb246OlNUQVRFX1dSSVRBQkxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2gxLmNv
bm4oKS0+d3JpdGVfc3RhdGUoKSwga0RlZmF1bHRUaW1lb3V0LCBjbG9jayk7CiAgIEVYUEVDVF9F
UShkYXRhX3NpemUsIGNoMS5jb25uKCktPlNlbmQoZGF0YSwgZGF0YV9zaXplLCBvcHRpb25zKSk7
CkBAIC0yNjIyLDE0ICsyNTg3LDE0IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFdyaXRhYmxlU3Rh
dGUpIHsKIC8vIHxDT05ORUNUSU9OX1dSSVRFX0NPTk5FQ1RfRkFJTFVSRVN8LgogVEVTVF9GKFBv
cnRUZXN0LCBUZXN0V3JpdGFibGVTdGF0ZVdpdGhDb25maWd1cmVkVGhyZXNob2xkKSB7CiAgIHJ0
Yzo6U2NvcGVkRmFrZUNsb2NrIGNsb2NrOwotICBVRFBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBv
cnQoa0xvY2FsQWRkcjEpOworICBhdXRvIHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRy
MSk7CiAgIHBvcnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwot
ICBVRFBQb3J0KiBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOworICBhdXRvIHBv
cnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMik7CiAgIHBvcnQyLT5TZXRJY2VSb2xlKGNy
aWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CiAKICAgLy8gU2V0IHVwIGNoYW5uZWxzLgotICBU
ZXN0Q2hhbm5lbCBjaDEocG9ydDEpOwotICBUZXN0Q2hhbm5lbCBjaDIocG9ydDIpOworICBUZXN0
Q2hhbm5lbCBjaDEoc3RkOjptb3ZlKHBvcnQxKSk7CisgIFRlc3RDaGFubmVsIGNoMihzdGQ6Om1v
dmUocG9ydDIpKTsKIAogICAvLyBBY3F1aXJlIGFkZHJlc3Nlcy4KICAgY2gxLlN0YXJ0KCk7CkBA
IC0yNjM4LDE0ICsyNjAzLDE0IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFdyaXRhYmxlU3RhdGVX
aXRoQ29uZmlndXJlZFRocmVzaG9sZCkgewogICBBU1NFUlRfRVFfU0lNVUxBVEVEX1dBSVQoMSwg
Y2gyLmNvbXBsZXRlX2NvdW50KCksIGtEZWZhdWx0VGltZW91dCwgY2xvY2spOwogCiAgIC8vIFNl
bmQgYSBwaW5nIGZyb20gc3JjIHRvIGRzdC4KLSAgY2gxLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2Fu
ZGlkYXRlKHBvcnQyKSk7CisgIGNoMS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShjaDIu
cG9ydCgpKSk7CiAgIEFTU0VSVF9UUlVFKGNoMS5jb25uKCkgIT0gTlVMTCk7CiAgIGNoMS5QaW5n
KCk7CiAgIFNJTVVMQVRFRF9XQUlUKCFjaDIucmVtb3RlX2FkZHJlc3MoKS5Jc05pbCgpLCBrU2hv
cnRUaW1lb3V0LCBjbG9jayk7CiAKICAgLy8gQWNjZXB0IHRoZSBjb25uZWN0aW9uIHRvIHJldHVy
biB0aGUgYmluZGluZyByZXNwb25zZSwgdHJhbnNpdGlvbiB0bwogICAvLyB3cml0YWJsZSwgYW5k
IGFsbG93IGRhdGEgdG8gYmUgc2VudC4KLSAgY2gyLkFjY2VwdENvbm5lY3Rpb24oR2V0Q2FuZGlk
YXRlKHBvcnQxKSk7CisgIGNoMi5BY2NlcHRDb25uZWN0aW9uKEdldENhbmRpZGF0ZShjaDEucG9y
dCgpKSk7CiAgIEVYUEVDVF9FUV9TSU1VTEFURURfV0FJVChDb25uZWN0aW9uOjpTVEFURV9XUklU
QUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoMS5jb25uKCktPndyaXRlX3N0YXRl
KCksIGtEZWZhdWx0VGltZW91dCwgY2xvY2spOwogCkBAIC0yNjc2LDIwICsyNjQxLDIwIEBAIFRF
U1RfRihQb3J0VGVzdCwgVGVzdFdyaXRhYmxlU3RhdGVXaXRoQ29uZmlndXJlZFRocmVzaG9sZCkg
ewogfQogCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RUaW1lb3V0Rm9yTmV2ZXJXcml0YWJsZSkgewot
ICBVRFBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOworICBhdXRvIHBv
cnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHBvcnQxLT5TZXRJY2VSb2xlKGNy
aWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwotICBVRFBQb3J0KiBwb3J0MiA9IENyZWF0ZVVk
cFBvcnQoa0xvY2FsQWRkcjIpOworICBhdXRvIHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxB
ZGRyMik7CiAgIHBvcnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7
CiAKICAgLy8gU2V0IHVwIGNoYW5uZWxzLgotICBUZXN0Q2hhbm5lbCBjaDEocG9ydDEpOwotICBU
ZXN0Q2hhbm5lbCBjaDIocG9ydDIpOworICBUZXN0Q2hhbm5lbCBjaDEoc3RkOjptb3ZlKHBvcnQx
KSk7CisgIFRlc3RDaGFubmVsIGNoMihzdGQ6Om1vdmUocG9ydDIpKTsKIAogICAvLyBBY3F1aXJl
IGFkZHJlc3Nlcy4KICAgY2gxLlN0YXJ0KCk7CiAgIGNoMi5TdGFydCgpOwogCi0gIGNoMS5DcmVh
dGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0MikpOworICBjaDEuQ3JlYXRlQ29ubmVjdGlv
bihHZXRDYW5kaWRhdGUoY2gyLnBvcnQoKSkpOwogICBBU1NFUlRfVFJVRShjaDEuY29ubigpICE9
IE5VTEwpOwogICBFWFBFQ1RfRVEoQ29ubmVjdGlvbjo6U1RBVEVfV1JJVEVfSU5JVCwgY2gxLmNv
bm4oKS0+d3JpdGVfc3RhdGUoKSk7CiAKQEAgLTI3MDYsMTUgKzI2NzEsMTUgQEAgVEVTVF9GKFBv
cnRUZXN0LCBUZXN0VGltZW91dEZvck5ldmVyV3JpdGFibGUpIHsKIC8vIEluIHRoaXMgdGVzdCB8
Y2gxfCBiZWhhdmVzIGxpa2UgRlVMTCBtb2RlIGNsaWVudCBhbmQgd2UgaGF2ZSBjcmVhdGVkCiAv
LyBwb3J0IHdoaWNoIHJlc3BvbmRzIHRvIHRoZSBwaW5nIG1lc3NhZ2UganVzdCBsaWtlIExJVEUg
Y2xpZW50LgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0SWNlTGl0ZUNvbm5lY3Rpdml0eSkgewotICBU
ZXN0UG9ydCogaWNlX2Z1bGxfcG9ydCA9CisgIGF1dG8gaWNlX2Z1bGxfcG9ydCA9CiAgICAgICBD
cmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIiwKICAgICAgICAgICAg
ICAgICAgICAgIGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcsIGtUaWVicmVha2VyMSk7Cisg
IGF1dG8qIGljZV9mdWxsX3BvcnRfcHRyID0gaWNlX2Z1bGxfcG9ydC5nZXQoKTsKIAotICBzdGQ6
OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IGljZV9saXRlX3BvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9y
dChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIiwgY3JpY2tldDo6SUNFUk9MRV9DT05UUk9M
TEVELAotICAgICAgICAgICAgICAgICAgICAga1RpZWJyZWFrZXIyKSk7CisgIGF1dG8gaWNlX2xp
dGVfcG9ydCA9IENyZWF0ZVRlc3RQb3J0KAorICAgICAga0xvY2FsQWRkcjIsICJyZnJhZyIsICJy
cGFzcyIsIGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCwga1RpZWJyZWFrZXIyKTsKICAgLy8g
U2V0dXAgVGVzdENoYW5uZWwuIFRoaXMgYmVoYXZlcyBsaWtlIEZVTEwgbW9kZSBjbGllbnQuCi0g
IFRlc3RDaGFubmVsIGNoMShpY2VfZnVsbF9wb3J0KTsKKyAgVGVzdENoYW5uZWwgY2gxKHN0ZDo6
bW92ZShpY2VfZnVsbF9wb3J0KSk7CiAgIGNoMS5TZXRJY2VNb2RlKElDRU1PREVfRlVMTCk7CiAK
ICAgLy8gU3RhcnQgZ2F0aGVyaW5nIGNhbmRpZGF0ZXMuCkBAIC0yNzM0LDI0ICsyNjk5LDI0IEBA
IFRFU1RfRihQb3J0VGVzdCwgVGVzdEljZUxpdGVDb25uZWN0aXZpdHkpIHsKIAogICAvLyBWZXJp
Znkgc3R1biBwaW5nIGlzIHdpdGhvdXQgVVNFX0NBTkRJREFURV9BVFRSLiBHZXR0aW5nIG1lc3Nh
Z2UgZGlyZWN0bHkKICAgLy8gZnJvbSBwb3J0LgotICBBU1NFUlRfVFJVRV9XQUlUKGljZV9mdWxs
X3BvcnQtPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVvdXQpOwotICBJY2VN
ZXNzYWdlKiBtc2cgPSBpY2VfZnVsbF9wb3J0LT5sYXN0X3N0dW5fbXNnKCk7CisgIEFTU0VSVF9U
UlVFX1dBSVQoaWNlX2Z1bGxfcG9ydF9wdHItPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxMLCBrRGVm
YXVsdFRpbWVvdXQpOworICBJY2VNZXNzYWdlKiBtc2cgPSBpY2VfZnVsbF9wb3J0X3B0ci0+bGFz
dF9zdHVuX21zZygpOwogICBFWFBFQ1RfVFJVRShtc2ctPkdldEJ5dGVTdHJpbmcoU1RVTl9BVFRS
X1VTRV9DQU5ESURBVEUpID09IE5VTEwpOwogCiAgIC8vIFJlc3BvbmQgd2l0aCBhIEJJTkRJTkct
UkVTUE9OU0UgZnJvbSBsaXRlbW9kZSBjbGllbnQuCiAgIC8vIE5PVEU6IElkZWFsbHkgd2Ugc2hv
dWxkJ3QgY3JlYXRlIGNvbm5lY3Rpb24gYXQgdGhpcyBzdGFnZSBmcm9tIGxpdGUKICAgLy8gcG9y
dCwgYXMgaXQgc2hvdWxkIGJlIGRvbmUgb25seSBhZnRlciByZWNlaXZpbmcgcGluZyB3aXRoIFVT
RV9DQU5ESURBVEUuCiAgIC8vIEJ1dCB3ZSBuZWVkIGEgY29ubmVjdGlvbiB0byBzZW5kIGEgcmVz
cG9uc2UgbWVzc2FnZS4KLSAgaWNlX2xpdGVfcG9ydC0+Q3JlYXRlQ29ubmVjdGlvbihpY2VfZnVs
bF9wb3J0LT5DYW5kaWRhdGVzKClbMF0sCisgIGljZV9saXRlX3BvcnQtPkNyZWF0ZUNvbm5lY3Rp
b24oaWNlX2Z1bGxfcG9ydF9wdHItPkNhbmRpZGF0ZXMoKVswXSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmlja2V0OjpQb3J0OjpPUklHSU5fTUVTU0FHRSk7Ci0gIHN0ZDo6
dW5pcXVlX3B0cjxJY2VNZXNzYWdlPiByZXF1ZXN0KENvcHlTdHVuTWVzc2FnZShtc2cpKTsKLSAg
aWNlX2xpdGVfcG9ydC0+U2VuZEJpbmRpbmdSZXNwb25zZShyZXF1ZXN0LmdldCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljZV9mdWxsX3BvcnQtPkNhbmRpZGF0ZXMo
KVswXS5hZGRyZXNzKCkpOworICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gcmVxdWVzdCA9
IENvcHlTdHVuTWVzc2FnZSgqbXNnKTsKKyAgaWNlX2xpdGVfcG9ydC0+U2VuZEJpbmRpbmdSZXNw
b25zZSgKKyAgICAgIHJlcXVlc3QuZ2V0KCksIGljZV9mdWxsX3BvcnRfcHRyLT5DYW5kaWRhdGVz
KClbMF0uYWRkcmVzcygpKTsKIAogICAvLyBGZWVkaW5nIHRoZSByZXNwb25lIG1lc3NhZ2UgZnJv
bSBsaXRlbW9kZSB0byB0aGUgZnVsbCBtb2RlIGNvbm5lY3Rpb24uCiAgIGNoMS5jb25uKCktPk9u
UmVhZFBhY2tldChpY2VfbGl0ZV9wb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljZV9saXRlX3BvcnQtPmxhc3Rfc3R1bl9idWYo
KS0+c2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRUaW1lKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwog
ICAvLyBWZXJpZnlpbmcgZnVsbCBtb2RlIGNvbm5lY3Rpb24gYmVjb21lcyB3cml0YWJsZSBmcm9t
IHRoZSByZXNwb25zZS4KICAgRVhQRUNUX0VRX1dBSVQoQ29ubmVjdGlvbjo6U1RBVEVfV1JJVEFC
TEUsIGNoMS5jb25uKCktPndyaXRlX3N0YXRlKCksCiAgICAgICAgICAgICAgICAgIGtEZWZhdWx0
VGltZW91dCk7CkBAIC0yNzU5LDExICsyNzI0LDExIEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdElj
ZUxpdGVDb25uZWN0aXZpdHkpIHsKIAogICAvLyBDbGVhciBleGlzdGluZyBzdHVuIG1lc3NzYWdl
cy4gT3RoZXJ3aXNlIHdlIHdpbGwgcHJvY2VzcyBvbGQgc3R1bgogICAvLyBtZXNzYWdlIHJpZ2h0
IGFmdGVyIHdlIHNlbmQgcGluZy4KLSAgaWNlX2Z1bGxfcG9ydC0+UmVzZXQoKTsKKyAgaWNlX2Z1
bGxfcG9ydF9wdHItPlJlc2V0KCk7CiAgIC8vIFNlbmQgcGluZy4gVGhpcyBtdXN0IGhhdmUgVVNF
X0NBTkRJREFURV9BVFRSLgogICBjaDEuUGluZygpOwotICBBU1NFUlRfVFJVRV9XQUlUKGljZV9m
dWxsX3BvcnQtPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVvdXQpOwotICBt
c2cgPSBpY2VfZnVsbF9wb3J0LT5sYXN0X3N0dW5fbXNnKCk7CisgIEFTU0VSVF9UUlVFX1dBSVQo
aWNlX2Z1bGxfcG9ydF9wdHItPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVv
dXQpOworICBtc2cgPSBpY2VfZnVsbF9wb3J0X3B0ci0+bGFzdF9zdHVuX21zZygpOwogICBFWFBF
Q1RfVFJVRShtc2ctPkdldEJ5dGVTdHJpbmcoU1RVTl9BVFRSX1VTRV9DQU5ESURBVEUpICE9IE5V
TEwpOwogICBjaDEuU3RvcCgpOwogfQpAQCAtMjc3NCwyMSArMjczOSwyMSBAQCBURVNUX0YoUG9y
dFRlc3QsIFRlc3RJY2VMaXRlQ29ubmVjdGl2aXR5KSB7CiBURVNUX0YoUG9ydFRlc3QsIFRlc3RQ
b3J0VGltZW91dElmTm90S2VwdEFsaXZlKSB7CiAgIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGNsb2Nr
OwogICBpbnQgdGltZW91dF9kZWxheSA9IDEwMDsKLSAgVURQUG9ydCogcG9ydDEgPSBDcmVhdGVV
ZHBQb3J0KGtMb2NhbEFkZHIxKTsKLSAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQxKTsK
KyAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOworICBDb25uZWN0VG9T
aWduYWxEZXN0cm95ZWQocG9ydDEuZ2V0KCkpOwogICBwb3J0MS0+c2V0X3RpbWVvdXRfZGVsYXko
dGltZW91dF9kZWxheSk7ICAvLyBtaWxsaXNlY29uZHMKICAgcG9ydDEtPlNldEljZVJvbGUoY3Jp
Y2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIHBvcnQxLT5TZXRJY2VUaWVicmVha2VyKGtU
aWVicmVha2VyMSk7CiAKLSAgVURQUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFk
ZHIyKTsKLSAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQyKTsKKyAgYXV0byBwb3J0MiA9
IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOworICBDb25uZWN0VG9TaWduYWxEZXN0cm95ZWQo
cG9ydDIuZ2V0KCkpOwogICBwb3J0Mi0+c2V0X3RpbWVvdXRfZGVsYXkodGltZW91dF9kZWxheSk7
ICAvLyBtaWxsaXNlY29uZHMKICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9D
T05UUk9MTEVEKTsKICAgcG9ydDItPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIyKTsKIAog
ICAvLyBTZXQgdXAgY2hhbm5lbHMgYW5kIGVuc3VyZSBib3RoIHBvcnRzIHdpbGwgYmUgZGVsZXRl
ZC4KLSAgVGVzdENoYW5uZWwgY2gxKHBvcnQxKTsKLSAgVGVzdENoYW5uZWwgY2gyKHBvcnQyKTsK
KyAgVGVzdENoYW5uZWwgY2gxKHN0ZDo6bW92ZShwb3J0MSkpOworICBUZXN0Q2hhbm5lbCBjaDIo
c3RkOjptb3ZlKHBvcnQyKSk7CiAKICAgLy8gU2ltdWxhdGUgYSBjb25uZWN0aW9uIHRoYXQgc3Vj
Y2VlZHMsIGFuZCB0aGVuIGlzIGRlc3Ryb3llZC4KICAgU3RhcnRDb25uZWN0QW5kU3RvcENoYW5u
ZWxzKCZjaDEsICZjaDIpOwpAQCAtMjgwMywyMiArMjc2OCwyMiBAQCBURVNUX0YoUG9ydFRlc3Qs
IFRlc3RQb3J0VGltZW91dElmTm90S2VwdEFsaXZlKSB7CiBURVNUX0YoUG9ydFRlc3QsIFRlc3RQ
b3J0VGltZW91dEFmdGVyTmV3Q29ubmVjdGlvbkNyZWF0ZWRBbmREZXN0cm95ZWQpIHsKICAgcnRj
OjpTY29wZWRGYWtlQ2xvY2sgY2xvY2s7CiAgIGludCB0aW1lb3V0X2RlbGF5ID0gMTAwOwotICBV
RFBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwotICBDb25uZWN0VG9T
aWduYWxEZXN0cm95ZWQocG9ydDEpOworICBhdXRvIHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9j
YWxBZGRyMSk7CisgIENvbm5lY3RUb1NpZ25hbERlc3Ryb3llZChwb3J0MS5nZXQoKSk7CiAgIHBv
cnQxLT5zZXRfdGltZW91dF9kZWxheSh0aW1lb3V0X2RlbGF5KTsgIC8vIG1pbGxpc2Vjb25kcwog
ICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgcG9y
dDEtPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKIAotICBVRFBQb3J0KiBwb3J0MiA9
IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOwotICBDb25uZWN0VG9TaWduYWxEZXN0cm95ZWQo
cG9ydDIpOworICBhdXRvIHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMik7CisgIENv
bm5lY3RUb1NpZ25hbERlc3Ryb3llZChwb3J0Mi5nZXQoKSk7CiAgIHBvcnQyLT5zZXRfdGltZW91
dF9kZWxheSh0aW1lb3V0X2RlbGF5KTsgIC8vIG1pbGxpc2Vjb25kcwogCiAgIHBvcnQyLT5TZXRJ
Y2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CiAgIHBvcnQyLT5TZXRJY2VUaWVi
cmVha2VyKGtUaWVicmVha2VyMik7CiAKICAgLy8gU2V0IHVwIGNoYW5uZWxzIGFuZCBlbnN1cmUg
Ym90aCBwb3J0cyB3aWxsIGJlIGRlbGV0ZWQuCi0gIFRlc3RDaGFubmVsIGNoMShwb3J0MSk7Ci0g
IFRlc3RDaGFubmVsIGNoMihwb3J0Mik7CisgIFRlc3RDaGFubmVsIGNoMShzdGQ6Om1vdmUocG9y
dDEpKTsKKyAgVGVzdENoYW5uZWwgY2gyKHN0ZDo6bW92ZShwb3J0MikpOwogCiAgIC8vIFNpbXVs
YXRlIGEgY29ubmVjdGlvbiB0aGF0IHN1Y2NlZWRzLCBhbmQgdGhlbiBpcyBkZXN0cm95ZWQuCiAg
IFN0YXJ0Q29ubmVjdEFuZFN0b3BDaGFubmVscygmY2gxLCAmY2gyKTsKQEAgLTI4NDQsMTQgKzI4
MDksMTQgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0UG9ydFRpbWVvdXRBZnRlck5ld0Nvbm5lY3Rp
b25DcmVhdGVkQW5kRGVzdHJveWVkKSB7CiBURVNUX0YoUG9ydFRlc3QsIFRlc3RQb3J0Tm90VGlt
ZW91dFVudGlsUHJ1bmVkKSB7CiAgIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGNsb2NrOwogICBpbnQg
dGltZW91dF9kZWxheSA9IDEwMDsKLSAgVURQUG9ydCogcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtM
b2NhbEFkZHIxKTsKLSAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQxKTsKKyAgYXV0byBw
b3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOworICBDb25uZWN0VG9TaWduYWxEZXN0
cm95ZWQocG9ydDEuZ2V0KCkpOwogICBwb3J0MS0+c2V0X3RpbWVvdXRfZGVsYXkodGltZW91dF9k
ZWxheSk7ICAvLyBtaWxsaXNlY29uZHMKICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNF
Uk9MRV9DT05UUk9MTElORyk7CiAgIHBvcnQxLT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2Vy
MSk7CiAKLSAgVURQUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKLSAg
Q29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQyKTsKKyAgYXV0byBwb3J0MiA9IENyZWF0ZVVk
cFBvcnQoa0xvY2FsQWRkcjIpOworICBDb25uZWN0VG9TaWduYWxEZXN0cm95ZWQocG9ydDIuZ2V0
KCkpOwogICBwb3J0Mi0+c2V0X3RpbWVvdXRfZGVsYXkodGltZW91dF9kZWxheSk7ICAvLyBtaWxs
aXNlY29uZHMKICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVE
KTsKICAgcG9ydDItPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIyKTsKQEAgLTI4NjIsNDAg
KzI4MjcsMzkgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0UG9ydE5vdFRpbWVvdXRVbnRpbFBydW5l
ZCkgewogICBwb3J0Mi0+c2V0X2NvbXBvbmVudChjcmlja2V0OjpJQ0VfQ0FORElEQVRFX0NPTVBP
TkVOVF9ERUZBVUxUKTsKIAogICAvLyBTZXQgdXAgY2hhbm5lbHMgYW5kIGtlZXAgdGhlIHBvcnQg
YWxpdmUuCi0gIFRlc3RDaGFubmVsIGNoMShwb3J0MSk7Ci0gIFRlc3RDaGFubmVsIGNoMihwb3J0
Mik7CisgIFRlc3RDaGFubmVsIGNoMShzdGQ6Om1vdmUocG9ydDEpKTsKKyAgVGVzdENoYW5uZWwg
Y2gyKHN0ZDo6bW92ZShwb3J0MikpOwogICAvLyBTaW11bGF0ZSBhIGNvbm5lY3Rpb24gdGhhdCBz
dWNjZWVkcywgYW5kIHRoZW4gaXMgZGVzdHJveWVkLiBCdXQgcG9ydHMKICAgLy8gYXJlIGtlcHQg
YWxpdmUuIFBvcnRzIHdvbid0IGJlIGRlc3Ryb3llZC4KICAgU3RhcnRDb25uZWN0QW5kU3RvcENo
YW5uZWxzKCZjaDEsICZjaDIpOwotICBwb3J0MS0+S2VlcEFsaXZlVW50aWxQcnVuZWQoKTsKLSAg
cG9ydDItPktlZXBBbGl2ZVVudGlsUHJ1bmVkKCk7CisgIGNoMS5wb3J0KCktPktlZXBBbGl2ZVVu
dGlsUHJ1bmVkKCk7CisgIGNoMi5wb3J0KCktPktlZXBBbGl2ZVVudGlsUHJ1bmVkKCk7CiAgIFNJ
TVVMQVRFRF9XQUlUKHBvcnRzX2Rlc3Ryb3llZCgpID4gMCwgMTUwLCBjbG9jayk7CiAgIEVYUEVD
VF9FUSgwLCBwb3J0c19kZXN0cm95ZWQoKSk7CiAKICAgLy8gSWYgdGhleSBhcmUgcHJ1bmVkIG5v
dywgdGhleSB3aWxsIGJlIGRlc3Ryb3llZCByaWdodCBhd2F5LgotICBwb3J0MS0+UHJ1bmUoKTsK
LSAgcG9ydDItPlBydW5lKCk7CisgIGNoMS5wb3J0KCktPlBydW5lKCk7CisgIGNoMi5wb3J0KCkt
PlBydW5lKCk7CiAgIC8vIFRoZSBwb3J0cyBvbiBib3RoIHNpZGVzIHNob3VsZCBiZSBkZXN0cm95
ZWQgYWZ0ZXIgdGltZW91dC4KICAgRVhQRUNUX1RSVUVfU0lNVUxBVEVEX1dBSVQocG9ydHNfZGVz
dHJveWVkKCkgPT0gMiwgMSwgY2xvY2spOwogfQogCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RTdXBw
b3J0c1Byb3RvY29sKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiB1ZHBfcG9ydChDcmVhdGVV
ZHBQb3J0KGtMb2NhbEFkZHIxKSk7CisgIGF1dG8gdWRwX3BvcnQgPSBDcmVhdGVVZHBQb3J0KGtM
b2NhbEFkZHIxKTsKICAgRVhQRUNUX1RSVUUodWRwX3BvcnQtPlN1cHBvcnRzUHJvdG9jb2woVURQ
X1BST1RPQ09MX05BTUUpKTsKICAgRVhQRUNUX0ZBTFNFKHVkcF9wb3J0LT5TdXBwb3J0c1Byb3Rv
Y29sKFRDUF9QUk9UT0NPTF9OQU1FKSk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IHN0dW5f
cG9ydCgKLSAgICAgIENyZWF0ZVN0dW5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3Rv
cnkxKCkpKTsKKyAgYXV0byBzdHVuX3BvcnQgPSBDcmVhdGVTdHVuUG9ydChrTG9jYWxBZGRyMSwg
bmF0X3NvY2tldF9mYWN0b3J5MSgpKTsKICAgRVhQRUNUX1RSVUUoc3R1bl9wb3J0LT5TdXBwb3J0
c1Byb3RvY29sKFVEUF9QUk9UT0NPTF9OQU1FKSk7CiAgIEVYUEVDVF9GQUxTRShzdHVuX3BvcnQt
PlN1cHBvcnRzUHJvdG9jb2woVENQX1BST1RPQ09MX05BTUUpKTsKIAotICBzdGQ6OnVuaXF1ZV9w
dHI8UG9ydD4gdGNwX3BvcnQoQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSkpOworICBhdXRvIHRj
cF9wb3J0ID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7CiAgIEVYUEVDVF9UUlVFKHRjcF9w
b3J0LT5TdXBwb3J0c1Byb3RvY29sKFRDUF9QUk9UT0NPTF9OQU1FKSk7CiAgIEVYUEVDVF9UUlVF
KHRjcF9wb3J0LT5TdXBwb3J0c1Byb3RvY29sKFNTTFRDUF9QUk9UT0NPTF9OQU1FKSk7CiAgIEVY
UEVDVF9GQUxTRSh0Y3BfcG9ydC0+U3VwcG9ydHNQcm90b2NvbChVRFBfUFJPVE9DT0xfTkFNRSkp
OwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiB0dXJuX3BvcnQoCi0gICAgICBDcmVhdGVUdXJu
UG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RP
X1VEUCkpOworICBhdXRvIHR1cm5fcG9ydCA9CisgICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxB
ZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VEUCk7CiAgIEVY
UEVDVF9UUlVFKHR1cm5fcG9ydC0+U3VwcG9ydHNQcm90b2NvbChVRFBfUFJPVE9DT0xfTkFNRSkp
OwogICBFWFBFQ1RfRkFMU0UodHVybl9wb3J0LT5TdXBwb3J0c1Byb3RvY29sKFRDUF9QUk9UT0NP
TF9OQU1FKSk7CiB9CkBAIC0yOTAzLDggKzI4NjcsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RT
dXBwb3J0c1Byb3RvY29sKSB7CiAvLyBUZXN0IHRoYXQgU2V0SWNlUGFyYW1ldGVycyB1cGRhdGVz
IHRoZSBjb21wb25lbnQsIHVmcmFnIGFuZCBwYXNzd29yZAogLy8gb24gYm90aCB0aGUgcG9ydCBp
dHNlbGYgYW5kIGl0cyBjYW5kaWRhdGVzLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0U2V0SWNlUGFy
YW1ldGVycykgewotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHBvcnQoCi0gICAgICBDcmVh
dGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgInVmcmFnMSIsICJwYXNzd29yZDEiKSk7CisgIGF1dG8g
cG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAidWZyYWcxIiwgInBhc3N3b3JkMSIp
OwogICBwb3J0LT5QcmVwYXJlQWRkcmVzcygpOwogICBFWFBFQ1RfRVEoMVVMLCBwb3J0LT5DYW5k
aWRhdGVzKCkuc2l6ZSgpKTsKICAgcG9ydC0+U2V0SWNlUGFyYW1ldGVycygxLCAidWZyYWcyIiwg
InBhc3N3b3JkMiIpOwpAQCAtMjkxOCw4ICsyODgxLDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0
U2V0SWNlUGFyYW1ldGVycykgewogfQogCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RBZGRDb25uZWN0
aW9uV2l0aFNhbWVBZGRyZXNzKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcG9ydCgK
LSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAidWZyYWcxIiwgInBhc3N3b3JkMSIp
KTsKKyAgYXV0byBwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJ1ZnJhZzEiLCAi
cGFzc3dvcmQxIik7CiAgIHBvcnQtPlByZXBhcmVBZGRyZXNzKCk7CiAgIEVYUEVDVF9FUSgxdSwg
cG9ydC0+Q2FuZGlkYXRlcygpLnNpemUoKSk7CiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBhZGRyZXNz
KCIxLjEuMS4xIiwgNTAwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRvci5jYwpp
bmRleCA1NDcwYjViODJlNjU1ZTM2NDNiZWUwZWQ5ZjQyZWI5ZWI3MDY1NzhhLi5kM2IzYTU2ZWRk
OTI2YzdjMGEwMzE0YmM1M2M4NmE0NzI5NzRjMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3Bv
cnRhbGxvY2F0b3IuY2MKQEAgLTEwLDggKzEwLDEwIEBACiAKICNpbmNsdWRlICJwMnAvYmFzZS9w
b3J0YWxsb2NhdG9yLmgiCiAKKyNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDx1dGlsaXR5
PgogCisjaW5jbHVkZSAicDJwL2Jhc2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CkBAIC0xMjEsNiAr
MTIzLDEwIEBAIFBvcnRBbGxvY2F0b3I6On5Qb3J0QWxsb2NhdG9yKCkgewogICBDaGVja1J1bk9u
VmFsaWRUaHJlYWRJZkluaXRpYWxpemVkKCk7CiB9CiAKK3ZvaWQgUG9ydEFsbG9jYXRvcjo6c2V0
X3Jlc3RyaWN0X2ljZV9jcmVkZW50aWFsc19jaGFuZ2UoYm9vbCB2YWx1ZSkgeworICByZXN0cmlj
dF9pY2VfY3JlZGVudGlhbHNfY2hhbmdlXyA9IHZhbHVlOworfQorCiBib29sIFBvcnRBbGxvY2F0
b3I6OlNldENvbmZpZ3VyYXRpb24oCiAgICAgY29uc3QgU2VydmVyQWRkcmVzc2VzJiBzdHVuX3Nl
cnZlcnMsCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UmVsYXlTZXJ2ZXJDb25maWc+JiB0dXJuX3Nl
cnZlcnMsCkBAIC0xNjYsOCArMTcyLDggQEAgYm9vbCBQb3J0QWxsb2NhdG9yOjpTZXRDb25maWd1
cmF0aW9uKAogICAvLyBJZiB8Y2FuZGlkYXRlX3Bvb2xfc2l6ZV98IGlzIGxlc3MgdGhhbiB0aGUg
bnVtYmVyIG9mIHBvb2xlZCBzZXNzaW9ucywgZ2V0CiAgIC8vIHJpZCBvZiB0aGUgZXh0cmFzLgog
ICB3aGlsZSAoY2FuZGlkYXRlX3Bvb2xfc2l6ZV8gPCBzdGF0aWNfY2FzdDxpbnQ+KHBvb2xlZF9z
ZXNzaW9uc18uc2l6ZSgpKSkgewotICAgIHBvb2xlZF9zZXNzaW9uc18uZnJvbnQoKS5yZXNldChu
dWxscHRyKTsKLSAgICBwb29sZWRfc2Vzc2lvbnNfLnBvcF9mcm9udCgpOworICAgIHBvb2xlZF9z
ZXNzaW9uc18uYmFjaygpLnJlc2V0KG51bGxwdHIpOworICAgIHBvb2xlZF9zZXNzaW9uc18ucG9w
X2JhY2soKTsKICAgfQogCiAgIC8vIHxzdHVuX2NhbmRpZGF0ZV9rZWVwYWxpdmVfaW50ZXJ2YWxf
fCB3aWxsIGJlIHVzZWQgaW4gU1RVTiBwb3J0IGFsbG9jYXRpb24KQEAgLTE4Myw3ICsxODksMTEg
QEAgYm9vbCBQb3J0QWxsb2NhdG9yOjpTZXRDb25maWd1cmF0aW9uKAogICAvLyBJZiB8Y2FuZGlk
YXRlX3Bvb2xfc2l6ZV98IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHBvb2xlZCBzZXNz
aW9ucywKICAgLy8gY3JlYXRlIG5ldyBzZXNzaW9ucy4KICAgd2hpbGUgKHN0YXRpY19jYXN0PGlu
dD4ocG9vbGVkX3Nlc3Npb25zXy5zaXplKCkpIDwgY2FuZGlkYXRlX3Bvb2xfc2l6ZV8pIHsKLSAg
ICBQb3J0QWxsb2NhdG9yU2Vzc2lvbiogcG9vbGVkX3Nlc3Npb24gPSBDcmVhdGVTZXNzaW9uSW50
ZXJuYWwoIiIsIDAsICIiLCAiIik7CisgICAgSWNlUGFyYW1ldGVycyBpY2VDcmVkZW50aWFscyA9
CisgICAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3I6OkNyZWF0ZVJhbmRvbUljZUNyZWRlbnRp
YWxzKCk7CisgICAgUG9ydEFsbG9jYXRvclNlc3Npb24qIHBvb2xlZF9zZXNzaW9uID0KKyAgICAg
ICAgQ3JlYXRlU2Vzc2lvbkludGVybmFsKCIiLCAwLCBpY2VDcmVkZW50aWFscy51ZnJhZywgaWNl
Q3JlZGVudGlhbHMucHdkKTsKKyAgICBwb29sZWRfc2Vzc2lvbi0+c2V0X3Bvb2xlZCh0cnVlKTsK
ICAgICBwb29sZWRfc2Vzc2lvbi0+U3RhcnRHZXR0aW5nUG9ydHMoKTsKICAgICBwb29sZWRfc2Vz
c2lvbnNfLnB1c2hfYmFjaygKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JT
ZXNzaW9uPihwb29sZWRfc2Vzc2lvbikpOwpAQCAtMjE0LDIyICsyMjQsNTAgQEAgc3RkOjp1bmlx
dWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9uPiBQb3J0QWxsb2NhdG9yOjpUYWtlUG9vbGVkU2Vz
c2lvbigKICAgaWYgKHBvb2xlZF9zZXNzaW9uc18uZW1wdHkoKSkgewogICAgIHJldHVybiBudWxs
cHRyOwogICB9Ci0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0QWxsb2NhdG9yU2Vzc2lvbj4gcmV0ID0K
LSAgICAgIHN0ZDo6bW92ZShwb29sZWRfc2Vzc2lvbnNfLmZyb250KCkpOworCisgIEljZVBhcmFt
ZXRlcnMgY3JlZGVudGlhbHMoaWNlX3VmcmFnLCBpY2VfcHdkLCBmYWxzZSk7CisgIC8vIElmIHJl
c3RyaWN0X2ljZV9jcmVkZW50aWFsc19jaGFuZ2VfIGlzIFRSVUUsIHRoZW4gY2FsbCBGaW5kUG9v
bGVkU2Vzc2lvbgorICAvLyB3aXRoIGljZSBjcmVkZW50aWFscy4gT3RoZXJ3aXNlIGNhbGwgaXQg
d2l0aCBudWxscHRyIHdoaWNoIG1lYW5zCisgIC8vICJmaW5kIGFueSIgcG9vbGVkIHNlc3Npb24u
CisgIGF1dG8gY2l0ID0gRmluZFBvb2xlZFNlc3Npb24ocmVzdHJpY3RfaWNlX2NyZWRlbnRpYWxz
X2NoYW5nZV8gPyAmY3JlZGVudGlhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxwdHIpOworICBpZiAoY2l0ID09
IHBvb2xlZF9zZXNzaW9uc18uZW5kKCkpIHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisg
IGF1dG8gaXQgPQorICAgICAgcG9vbGVkX3Nlc3Npb25zXy5iZWdpbigpICsgc3RkOjpkaXN0YW5j
ZShwb29sZWRfc2Vzc2lvbnNfLmNiZWdpbigpLCBjaXQpOworICBzdGQ6OnVuaXF1ZV9wdHI8UG9y
dEFsbG9jYXRvclNlc3Npb24+IHJldCA9IHN0ZDo6bW92ZSgqaXQpOwogICByZXQtPlNldEljZVBh
cmFtZXRlcnMoY29udGVudF9uYW1lLCBjb21wb25lbnQsIGljZV91ZnJhZywgaWNlX3B3ZCk7Ci0g
IC8vIEFjY29yZGluZyB0byBKU0VQLCBhIHBvb2xlZCBzZXNzaW9uIHNob3VsZCBmaWx0ZXIgY2Fu
ZGlkYXRlcyBvbmx5IGFmdGVyCi0gIC8vIGl0J3MgdGFrZW4gb3V0IG9mIHRoZSBwb29sLgorICBy
ZXQtPnNldF9wb29sZWQoZmFsc2UpOworICAvLyBBY2NvcmRpbmcgdG8gSlNFUCwgYSBwb29sZWQg
c2Vzc2lvbiBzaG91bGQgZmlsdGVyIGNhbmRpZGF0ZXMgb25seQorICAvLyBhZnRlciBpdCdzIHRh
a2VuIG91dCBvZiB0aGUgcG9vbC4KICAgcmV0LT5TZXRDYW5kaWRhdGVGaWx0ZXIoY2FuZGlkYXRl
X2ZpbHRlcigpKTsKLSAgcG9vbGVkX3Nlc3Npb25zXy5wb3BfZnJvbnQoKTsKKyAgcG9vbGVkX3Nl
c3Npb25zXy5lcmFzZShpdCk7CiAgIHJldHVybiByZXQ7CiB9CiAKLWNvbnN0IFBvcnRBbGxvY2F0
b3JTZXNzaW9uKiBQb3J0QWxsb2NhdG9yOjpHZXRQb29sZWRTZXNzaW9uKCkgY29uc3QgeworY29u
c3QgUG9ydEFsbG9jYXRvclNlc3Npb24qIFBvcnRBbGxvY2F0b3I6OkdldFBvb2xlZFNlc3Npb24o
CisgICAgY29uc3QgSWNlUGFyYW1ldGVycyogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIENo
ZWNrUnVuT25WYWxpZFRocmVhZEFuZEluaXRpYWxpemVkKCk7Ci0gIGlmIChwb29sZWRfc2Vzc2lv
bnNfLmVtcHR5KCkpIHsKKyAgYXV0byBpdCA9IEZpbmRQb29sZWRTZXNzaW9uKGljZV9jcmVkZW50
aWFscyk7CisgIGlmIChpdCA9PSBwb29sZWRfc2Vzc2lvbnNfLmVuZCgpKSB7CiAgICAgcmV0dXJu
IG51bGxwdHI7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGl0LT5nZXQoKTsKKyAgfQorfQorCitz
dGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UG9ydEFsbG9jYXRvclNlc3Npb24+Pjo6Y29uc3Rf
aXRlcmF0b3IKK1BvcnRBbGxvY2F0b3I6OkZpbmRQb29sZWRTZXNzaW9uKGNvbnN0IEljZVBhcmFt
ZXRlcnMqIGljZV9jcmVkZW50aWFscykgY29uc3QgeworICBmb3IgKGF1dG8gaXQgPSBwb29sZWRf
c2Vzc2lvbnNfLmJlZ2luKCk7IGl0ICE9IHBvb2xlZF9zZXNzaW9uc18uZW5kKCk7ICsraXQpIHsK
KyAgICBpZiAoaWNlX2NyZWRlbnRpYWxzID09IG51bGxwdHIgfHwKKyAgICAgICAgKCgqaXQpLT5p
Y2VfdWZyYWcoKSA9PSBpY2VfY3JlZGVudGlhbHMtPnVmcmFnICYmCisgICAgICAgICAoKml0KS0+
aWNlX3B3ZCgpID09IGljZV9jcmVkZW50aWFscy0+cHdkKSkgeworICAgICAgcmV0dXJuIGl0Owor
ICAgIH0KICAgfQotICByZXR1cm4gcG9vbGVkX3Nlc3Npb25zXy5mcm9udCgpLmdldCgpOworICBy
ZXR1cm4gcG9vbGVkX3Nlc3Npb25zXy5lbmQoKTsKIH0KIAogdm9pZCBQb3J0QWxsb2NhdG9yOjpG
cmVlemVDYW5kaWRhdGVQb29sKCkgewpAQCAtMjUwLDQgKzI4OCwxNCBAQCB2b2lkIFBvcnRBbGxv
Y2F0b3I6OkdldENhbmRpZGF0ZVN0YXRzRnJvbVBvb2xlZFNlc3Npb25zKAogICB9CiB9CiAKK3N0
ZDo6dmVjdG9yPEljZVBhcmFtZXRlcnM+IFBvcnRBbGxvY2F0b3I6OkdldFBvb2xlZEljZUNyZWRl
bnRpYWxzKCkgeworICBDaGVja1J1bk9uVmFsaWRUaHJlYWRBbmRJbml0aWFsaXplZCgpOworICBz
dGQ6OnZlY3RvcjxJY2VQYXJhbWV0ZXJzPiBsaXN0OworICBmb3IgKGNvbnN0IGF1dG8mIHNlc3Np
b24gOiBwb29sZWRfc2Vzc2lvbnNfKSB7CisgICAgbGlzdC5wdXNoX2JhY2soCisgICAgICAgIElj
ZVBhcmFtZXRlcnMoc2Vzc2lvbi0+aWNlX3VmcmFnKCksIHNlc3Npb24tPmljZV9wd2QoKSwgZmFs
c2UpKTsKKyAgfQorICByZXR1cm4gbGlzdDsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3BvcnRhbGxvY2F0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3IuaAppbmRleCA4YmQ3MDk2NDJjOGFlYzM4
NDY1ODFiZThkNmM2YjA2ZTc4YmNlMDIwLi43MDI2ZjJiMmI2MzIwNGY3MmFhYmQ3MjMzNjlkNWMz
ZjE5ZDI0OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRvci5oCkBAIC0yMSw2
ICsyMSw3IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3Byb3h5aW5mby5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgpAQCAtMTQ2LDcgKzE0
Nyw3IEBAIHN0cnVjdCBSZWxheUNyZWRlbnRpYWxzIHsKIAogdHlwZWRlZiBzdGQ6OnZlY3RvcjxQ
cm90b2NvbEFkZHJlc3M+IFBvcnRMaXN0OwogLy8gVE9ETyhkZWFkYmVlZik6IFJlbmFtZSB0byBU
dXJuU2VydmVyQ29uZmlnLgotc3RydWN0IFJlbGF5U2VydmVyQ29uZmlnIHsKK3N0cnVjdCBSVENf
RVhQT1JUIFJlbGF5U2VydmVyQ29uZmlnIHsKICAgZXhwbGljaXQgUmVsYXlTZXJ2ZXJDb25maWco
UmVsYXlUeXBlIHR5cGUpOwogICBSZWxheVNlcnZlckNvbmZpZyhjb25zdCBydGM6OlNvY2tldEFk
ZHJlc3MmIGFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1
c2VybmFtZSwKQEAgLTE4Myw3ICsxODQsNyBAQCBzdHJ1Y3QgUmVsYXlTZXJ2ZXJDb25maWcgewog
ICBydGM6OlNTTENlcnRpZmljYXRlVmVyaWZpZXIqIHRsc19jZXJ0X3ZlcmlmaWVyID0gbnVsbHB0
cjsKIH07CiAKLWNsYXNzIFBvcnRBbGxvY2F0b3JTZXNzaW9uIDogcHVibGljIHNpZ3Nsb3Q6Omhh
c19zbG90czw+IHsKK2NsYXNzIFJUQ19FWFBPUlQgUG9ydEFsbG9jYXRvclNlc3Npb24gOiBwdWJs
aWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogIHB1YmxpYzoKICAgLy8gQ29udGVudCBuYW1lIHBh
c3NlZCBpbiBtb3N0bHkgZm9yIGxvZ2dpbmcgYW5kIGRlYnVnZ2luZy4KICAgUG9ydEFsbG9jYXRv
clNlc3Npb24oY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKQEAgLTIwMSw3ICsyMDIs
NyBAQCBjbGFzcyBQb3J0QWxsb2NhdG9yU2Vzc2lvbiA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xv
dHM8PiB7CiAgIGludCBjb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBjb21wb25lbnRfOyB9CiAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBpY2VfdWZyYWcoKSBjb25zdCB7IHJldHVybiBpY2VfdWZyYWdf
OyB9CiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpY2VfcHdkKCkgY29uc3QgeyByZXR1cm4gaWNlX3B3
ZF87IH0KLSAgYm9vbCBwb29sZWQoKSBjb25zdCB7IHJldHVybiBpY2VfdWZyYWdfLmVtcHR5KCk7
IH0KKyAgYm9vbCBwb29sZWQoKSBjb25zdCB7IHJldHVybiBwb29sZWRfOyB9CiAKICAgLy8gU2V0
dGluZyB0aGlzIGZpbHRlciBzaG91bGQgYWZmZWN0IG5vdCBvbmx5IGNhbmRpZGF0ZXMgZ2F0aGVy
ZWQgaW4gdGhlCiAgIC8vIGZ1dHVyZSwgYnV0IGNhbmRpZGF0ZXMgYWxyZWFkeSBnYXRoZXJlZCBh
bmQgcG9ydHMgYWxyZWFkeSAicmVhZHkiLApAQCAtMzA5LDYgKzMxMCw4IEBAIGNsYXNzIFBvcnRB
bGxvY2F0b3JTZXNzaW9uIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICBVcGRh
dGVJY2VQYXJhbWV0ZXJzSW50ZXJuYWwoKTsKICAgfQogCisgIHZvaWQgc2V0X3Bvb2xlZChib29s
IHZhbHVlKSB7IHBvb2xlZF8gPSB2YWx1ZTsgfQorCiAgIHVpbnQzMl90IGZsYWdzXzsKICAgdWlu
dDMyX3QgZ2VuZXJhdGlvbl87CiAgIHN0ZDo6c3RyaW5nIGNvbnRlbnRfbmFtZV87CkBAIC0zMTYs
NiArMzE5LDggQEAgY2xhc3MgUG9ydEFsbG9jYXRvclNlc3Npb24gOiBwdWJsaWMgc2lnc2xvdDo6
aGFzX3Nsb3RzPD4gewogICBzdGQ6OnN0cmluZyBpY2VfdWZyYWdfOwogICBzdGQ6OnN0cmluZyBp
Y2VfcHdkXzsKIAorICBib29sIHBvb2xlZF8gPSBmYWxzZTsKKwogICAvLyBTZXRJY2VQYXJhbWV0
ZXJzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB3aGljaCBvbmx5IFBvcnRBbGxvY2F0b3IK
ICAgLy8gc2hvdWxkIGJlIGFibGUgdG8gY2FsbC4KICAgZnJpZW5kIGNsYXNzIFBvcnRBbGxvY2F0
b3I7CkBAIC0zMjYsNyArMzMxLDcgQEAgY2xhc3MgUG9ydEFsbG9jYXRvclNlc3Npb24gOiBwdWJs
aWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogLy8KIC8vIFRoaXMgYWxsb3dzIGEgUG9ydEFsbG9j
YXRvciBzdWJjbGFzcyB0byBiZSBjb25zdHJ1Y3RlZCBhbmQgY29uZmlndXJlZCBvbiBvbmUKIC8v
IHRocmVhZCwgYW5kIHBhc3NlZCBpbnRvIGFuIG9iamVjdCB0aGF0IHVzZXMgaXQgb24gYSBkaWZm
ZXJlbnQgdGhyZWFkLgotY2xhc3MgUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBzaWdzbG90OjpoYXNf
c2xvdHM8PiB7CitjbGFzcyBSVENfRVhQT1JUIFBvcnRBbGxvY2F0b3IgOiBwdWJsaWMgc2lnc2xv
dDo6aGFzX3Nsb3RzPD4gewogIHB1YmxpYzoKICAgUG9ydEFsbG9jYXRvcigpOwogICB+UG9ydEFs
bG9jYXRvcigpIG92ZXJyaWRlOwpAQCAtMzM1LDYgKzM0MCwxMSBAQCBjbGFzcyBQb3J0QWxsb2Nh
dG9yIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgLy8gY29uc3RydWN0aW5nIGFu
ZCBjb25maWd1cmluZyB0aGUgUG9ydEFsbG9jYXRvciBzdWJjbGFzc2VzLgogICB2aXJ0dWFsIHZv
aWQgSW5pdGlhbGl6ZSgpOwogCisgIC8vIFNldCB0byB0cnVlIGlmIHNvbWUgUG9ydHMgbmVlZCB0
byBrbm93IHRoZSBJQ0UgY3JlZGVudGlhbHMgd2hlbiB0aGV5IGFyZQorICAvLyBjcmVhdGVkLiBU
aGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIFBvcnRBbGxvY2F0b3Igd2lsbCBvbmx5IG1hdGNoIHBv
b2xlZAorICAvLyBhbGxvY2F0b3Igc2Vzc2lvbnMgdG8gdGhlIElDRSB0cmFuc3BvcnQgd2l0aCB0
aGUgc2FtZSBjcmVkZW50aWFscy4KKyAgdmlydHVhbCB2b2lkIHNldF9yZXN0cmljdF9pY2VfY3Jl
ZGVudGlhbHNfY2hhbmdlKGJvb2wgdmFsdWUpOworCiAgIC8vIFNldCBTVFVOIGFuZCBUVVJOIHNl
cnZlcnMgdG8gYmUgdXNlZCBpbiBmdXR1cmUgc2Vzc2lvbnMsIGFuZCBzZXQKICAgLy8gY2FuZGlk
YXRlIHBvb2wgc2l6ZSwgYXMgZGVzY3JpYmVkIGluIEpTRVAuCiAgIC8vCkBAIC0zOTIsNiArNDAy
LDggQEAgY2xhc3MgUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7
CiAgIC8vCiAgIC8vIENhbGxlciB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHJldHVybmVkIHNlc3Np
b24uCiAgIC8vCisgIC8vIElmIHJlc3RyaWN0X2ljZV9jcmVkZW50aWFsc19jaGFuZ2UgaXMgVFJV
RSwgdGhlbiBpdCB3aWxsIG9ubHkKKyAgLy8gICByZXR1cm4gYSBwb29sZWQgc2Vzc2lvbiB3aXRo
IG1hdGNoaW5nIGljZSBjcmVkZW50aWFscy4KICAgLy8gSWYgbm8gcG9vbGVkIHNlc3Npb25zIGFy
ZSBhdmFpbGFibGUsIHJldHVybnMgbnVsbC4KICAgc3RkOjp1bmlxdWVfcHRyPFBvcnRBbGxvY2F0
b3JTZXNzaW9uPiBUYWtlUG9vbGVkU2Vzc2lvbigKICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBj
b250ZW50X25hbWUsCkBAIC0zOTksOCArNDExLDEwIEBAIGNsYXNzIFBvcnRBbGxvY2F0b3IgOiBw
dWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlj
ZV91ZnJhZywKICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpY2VfcHdkKTsKIAotICAvLyBSZXR1
cm5zIHRoZSBuZXh0IHNlc3Npb24gdGhhdCB3b3VsZCBiZSByZXR1cm5lZCBieSBUYWtlUG9vbGVk
U2Vzc2lvbi4KLSAgY29uc3QgUG9ydEFsbG9jYXRvclNlc3Npb24qIEdldFBvb2xlZFNlc3Npb24o
KSBjb25zdDsKKyAgLy8gUmV0dXJucyB0aGUgbmV4dCBzZXNzaW9uIHRoYXQgd291bGQgYmUgcmV0
dXJuZWQgYnkgVGFrZVBvb2xlZFNlc3Npb24KKyAgLy8gb3B0aW9uYWxseSByZXN0cmljdGluZyBp
dCB0byBzZXNzaW9ucyB3aXRoIHNwZWNpZmllZCBpY2UgY3JlZGVudGlhbHMuCisgIGNvbnN0IFBv
cnRBbGxvY2F0b3JTZXNzaW9uKiBHZXRQb29sZWRTZXNzaW9uKAorICAgICAgY29uc3QgSWNlUGFy
YW1ldGVycyogaWNlX2NyZWRlbnRpYWxzID0gbnVsbHB0cikgY29uc3Q7CiAKICAgLy8gQWZ0ZXIg
RnJlZXplQ2FuZGlkYXRlUG9vbCBpcyBjYWxsZWQsIGNoYW5naW5nIHRoZSBjYW5kaWRhdGUgcG9v
bCBzaXplIHdpbGwKICAgLy8gbm8gbG9uZ2VyIGJlIGFsbG93ZWQsIGFuZCBjaGFuZ2luZyBJQ0Ug
c2VydmVycyB3aWxsIG5vdCBjYXVzZSBwb29sZWQKQEAgLTU0OCw2ICs1NjIsOSBAQCBjbGFzcyBQ
b3J0QWxsb2NhdG9yIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgdmlydHVhbCB2
b2lkIEdldENhbmRpZGF0ZVN0YXRzRnJvbVBvb2xlZFNlc3Npb25zKAogICAgICAgQ2FuZGlkYXRl
U3RhdHNMaXN0KiBjYW5kaWRhdGVfc3RhdHNfbGlzdCk7CiAKKyAgLy8gUmV0dXJuIEljZVBhcmFt
ZXRlcnMgb2YgdGhlIHBvb2xlZCBzZXNzaW9ucy4KKyAgc3RkOjp2ZWN0b3I8SWNlUGFyYW1ldGVy
cz4gR2V0UG9vbGVkSWNlQ3JlZGVudGlhbHMoKTsKKwogIHByb3RlY3RlZDoKICAgdmlydHVhbCBQ
b3J0QWxsb2NhdG9yU2Vzc2lvbiogQ3JlYXRlU2Vzc2lvbkludGVybmFsKAogICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKQEAgLTU1NSw3ICs1NzIsNyBAQCBjbGFzcyBQb3J0
QWxsb2NhdG9yIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBpY2VfdWZyYWcsCiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaWNlX3B3ZCkg
PSAwOwogCi0gIGNvbnN0IHN0ZDo6ZGVxdWU8c3RkOjp1bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JT
ZXNzaW9uPj4mIHBvb2xlZF9zZXNzaW9ucygpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9uPj4mIHBvb2xlZF9zZXNzaW9ucygpIHsKICAg
ICByZXR1cm4gcG9vbGVkX3Nlc3Npb25zXzsKICAgfQogCkBAIC01ODYsNyArNjAzLDcgQEAgY2xh
c3MgUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIFNlcnZl
ckFkZHJlc3NlcyBzdHVuX3NlcnZlcnNfOwogICBzdGQ6OnZlY3RvcjxSZWxheVNlcnZlckNvbmZp
Zz4gdHVybl9zZXJ2ZXJzXzsKICAgaW50IGNhbmRpZGF0ZV9wb29sX3NpemVfID0gMDsgIC8vIExh
c3QgdmFsdWUgcGFzc2VkIGludG8gU2V0Q29uZmlndXJhdGlvbi4KLSAgc3RkOjpkZXF1ZTxzdGQ6
OnVuaXF1ZV9wdHI8UG9ydEFsbG9jYXRvclNlc3Npb24+PiBwb29sZWRfc2Vzc2lvbnNfOworICBz
dGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UG9ydEFsbG9jYXRvclNlc3Npb24+PiBwb29sZWRf
c2Vzc2lvbnNfOwogICBib29sIGNhbmRpZGF0ZV9wb29sX2Zyb3plbl8gPSBmYWxzZTsKICAgYm9v
bCBwcnVuZV90dXJuX3BvcnRzXyA9IGZhbHNlOwogCkBAIC01OTYsNiArNjEzLDE1IEBAIGNsYXNz
IFBvcnRBbGxvY2F0b3IgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICB3ZWJydGM6
OlR1cm5DdXN0b21pemVyKiB0dXJuX2N1c3RvbWl6ZXJfID0gbnVsbHB0cjsKIAogICBhYnNsOjpv
cHRpb25hbDxpbnQ+IHN0dW5fY2FuZGlkYXRlX2tlZXBhbGl2ZV9pbnRlcnZhbF87CisKKyAgLy8g
SWYgdHJ1ZSwgVGFrZVBvb2xlZFNlc3Npb24oKSB3aWxsIG9ubHkgcmV0dXJuIHNlc3Npb25zIHRo
YXQgaGFzIHNhbWUgaWNlCisgIC8vIGNyZWRlbnRpYWxzIGFzIHJlcXVlc3RlZC4KKyAgYm9vbCBy
ZXN0cmljdF9pY2VfY3JlZGVudGlhbHNfY2hhbmdlXyA9IGZhbHNlOworCisgIC8vIFJldHVybnMg
aXRlcmF0b3IgdG8gcG9vbGVkIHNlc3Npb24gd2l0aCBzcGVjaWZpZWQgaWNlX2NyZWRlbnRpYWxz
IG9yIGZpcnN0CisgIC8vIGlmIGljZV9jcmVkZW50aWFscyBpcyBudWxscHRyLgorICBzdGQ6OnZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UG9ydEFsbG9jYXRvclNlc3Npb24+Pjo6Y29uc3RfaXRlcmF0
b3IKKyAgRmluZFBvb2xlZFNlc3Npb24oY29uc3QgSWNlUGFyYW1ldGVycyogaWNlX2NyZWRlbnRp
YWxzID0gbnVsbHB0cikgY29uc3Q7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3JfdW5pdHRlc3QuY2MKaW5kZXgg
Mzg4N2E5MGRiMWYyOWJhNmYwODEyM2JiMTNlMmQ4Y2JmNTMyN2YxNy4uOGIzMTdmNGQ1YTk1M2M4
NDczMzI4MDliNmU2NmMyMDMxYmE2MzYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRvcl91bml0dGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS9wb3J0YWxsb2NhdG9yX3VuaXR0ZXN0LmNjCkBAIC03MSw4ICs3MSw3IEBAIGNsYXNzIFBvcnRB
bGxvY2F0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBzaWdzbG90OjpoYXNf
c2xvdHM8PiB7CiAKICAgaW50IEdldEFsbFBvb2xlZFNlc3Npb25zUmV0dXJuQ291bnQoKSB7CiAg
ICAgaW50IGNvdW50ID0gMDsKLSAgICB3aGlsZSAoR2V0UG9vbGVkU2Vzc2lvbigpKSB7Ci0gICAg
ICBUYWtlUG9vbGVkU2Vzc2lvbigpOworICAgIHdoaWxlIChUYWtlUG9vbGVkU2Vzc2lvbigpICE9
IG51bGxwdHIpIHsKICAgICAgICsrY291bnQ7CiAgICAgfQogICAgIHJldHVybiBjb3VudDsKQEAg
LTI3NSwzICsyNzQsMjkgQEAgVEVTVF9GKFBvcnRBbGxvY2F0b3JUZXN0LCBEaXNjYXJkQ2FuZGlk
YXRlUG9vbCkgewogICBhbGxvY2F0b3JfLT5EaXNjYXJkQ2FuZGlkYXRlUG9vbCgpOwogICBFWFBF
Q1RfRVEoMCwgR2V0QWxsUG9vbGVkU2Vzc2lvbnNSZXR1cm5Db3VudCgpKTsKIH0KKworVEVTVF9G
KFBvcnRBbGxvY2F0b3JUZXN0LCBSZXN0cmljdEljZUNyZWRlbnRpYWxzQ2hhbmdlKSB7CisgIFNl
dENvbmZpZ3VyYXRpb25XaXRoUG9vbFNpemUoMSk7CisgIEVYUEVDVF9FUSgxLCBHZXRBbGxQb29s
ZWRTZXNzaW9uc1JldHVybkNvdW50KCkpOworICBhbGxvY2F0b3JfLT5EaXNjYXJkQ2FuZGlkYXRl
UG9vbCgpOworCisgIC8vIE9ubHkgcmV0dXJuIHBvb2xlZCBzZXNzaW9ucyB3aXRoIHRoZSBpY2Ug
Y3JlZGVudGlhbHMgdGhhdAorICAvLyBtYXRjaCB0aG9zZSByZXF1ZXN0ZWQgaW4gVGFrZVBvb2xl
ZFNlc3Npb24oKS4KKyAgYWxsb2NhdG9yXy0+c2V0X3Jlc3RyaWN0X2ljZV9jcmVkZW50aWFsc19j
aGFuZ2UodHJ1ZSk7CisgIFNldENvbmZpZ3VyYXRpb25XaXRoUG9vbFNpemUoMSk7CisgIEVYUEVD
VF9FUSgwLCBHZXRBbGxQb29sZWRTZXNzaW9uc1JldHVybkNvdW50KCkpOworICBhbGxvY2F0b3Jf
LT5EaXNjYXJkQ2FuZGlkYXRlUG9vbCgpOworCisgIFNldENvbmZpZ3VyYXRpb25XaXRoUG9vbFNp
emUoMSk7CisgIGF1dG8gY3JlZGVudGlhbHMgPSBhbGxvY2F0b3JfLT5HZXRQb29sZWRJY2VDcmVk
ZW50aWFscygpOworICBBU1NFUlRfRVEoMXUsIGNyZWRlbnRpYWxzLnNpemUoKSk7CisgIEVYUEVD
VF9FUShudWxscHRyLAorICAgICAgICAgICAgYWxsb2NhdG9yXy0+VGFrZVBvb2xlZFNlc3Npb24o
a0NvbnRlbnROYW1lLCAwLCBrSWNlVWZyYWcsIGtJY2VQd2QpKTsKKyAgRVhQRUNUX05FKG51bGxw
dHIsCisgICAgICAgICAgICBhbGxvY2F0b3JfLT5UYWtlUG9vbGVkU2Vzc2lvbihrQ29udGVudE5h
bWUsIDAsIGNyZWRlbnRpYWxzWzBdLnVmcmFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlZGVudGlhbHNbMF0ucHdkKSk7CisgIEVYUEVDVF9FUShudWxscHRy
LAorICAgICAgICAgICAgYWxsb2NhdG9yXy0+VGFrZVBvb2xlZFNlc3Npb24oa0NvbnRlbnROYW1l
LCAwLCBjcmVkZW50aWFsc1swXS51ZnJhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWRlbnRpYWxzWzBdLnB3ZCkpOworICBhbGxvY2F0b3JfLT5EaXNjYXJk
Q2FuZGlkYXRlUG9vbCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNldWRvdGNwLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNldWRvdGNwLmNjCmluZGV4IDE2
MTEyMmI2ZDVjNzM4NDJiNzc1MjFmYzExZTI4NmM2ZDg1N2MwYTkuLmM3NDI5ODU4NGFlZTFhZjFi
YjIzODJkOThjZmIwMDNjZGYzNzQxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1ZG90Y3AuY2MK
QEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
b2NrZXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3RpbWV1dGlscy5oIgogCiAvLyBUaGUgZm9sbG93aW5nIGxvZ2dpbmcgaXMgZm9yIGRl
dGFpbGVkIChwYWNrZXQtbGV2ZWwpIGFuYWx5c2lzIG9ubHkuCkBAIC0xODYsOCArMTg1LDggQEAg
dm9pZCBSZXBvcnRTdGF0cygpIHsKICAgY2hhciBidWZmZXJbMjU2XTsKICAgc2l6ZV90IGxlbiA9
IDA7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgU19OVU1fU1RBVFM7ICsraSkgewotICAgIGxlbiAr
PSBydGM6OnNwcmludGZuKGJ1ZmZlciwgYXJyYXlzaXplKGJ1ZmZlciksICIlcyVzOiVkIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9PSAwKSA/ICIiIDogIiwiLCBTVEFUX05B
TUVTW2ldLCBnX3N0YXRzW2ldKTsKKyAgICBsZW4gKz0gc25wcmludGYoYnVmZmVyLCBhcnJheXNp
emUoYnVmZmVyKSwgIiVzJXM6JWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9PSAw
KSA/ICIiIDogIiwiLCBTVEFUX05BTUVTW2ldLCBnX3N0YXRzW2ldKTsKICAgICBnX3N0YXRzW2ld
ID0gMDsKICAgfQogICBSVENfTE9HKExTX0lORk8pIDw8ICJTdGF0c1siIDw8IGJ1ZmZlciA8PCAi
XSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9wc2V1ZG90Y3AuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcC5oCmluZGV4IGMzNjNlZjY0Yjc0YWY5YjEyMjNm
ZjdjYTUzMzE3OWFlODJjMWFjYjQuLjViMjZhZWIyMWE1YmNlNDM1YTE5ODU3Y2E3ZDA1MWZhZGQ5
MTM3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL3BzZXVkb3RjcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcC5oCkBAIC0xNCw2ICsxNCw3IEBACiAj
aW5jbHVkZSA8bGlzdD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSBjcmlja2V0IHsKIApA
QCAtNDUsNyArNDYsNyBAQCBjbGFzcyBJUHNldWRvVGNwTm90aWZ5IHsKIC8vIFBzZXVkb1RjcAog
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogCi1jbGFzcyBQc2V1ZG9UY3AgeworY2xhc3MgUlRDX0VYUE9SVCBQc2V1
ZG9UY3AgewogIHB1YmxpYzoKICAgc3RhdGljIHVpbnQzMl90IE5vdygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1
ZG90Y3BfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS9wc2V1ZG90Y3BfdW5pdHRlc3QuY2MKaW5kZXggZGQ4NmY5MjFkNTJmYWEx
NTY5MmNhMjNhMjQ5OGUwY2E3NmZlMWZmMi4uMmZjOTkwMGNiY2NhNWIxZmJmNDk2MGJjMTVlYTFi
ODQ5MGE4MmE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvcHNldWRvdGNwX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcF91bml0dGVz
dC5jYwpAQCAtMTUsOCArMTUsOCBAQAogI2luY2x1ZGUgInAycC9iYXNlL3BzZXVkb3RjcC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL21lbW9yeV9zdHJlYW0uaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9tZXNzYWdlaGFuZGxlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9yZWxheXBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXBvcnQuY2MKaW5kZXggZmI4MzBjZTY2YTk0M2NkMjQ5ZGRh
NDBhZDI4ZTlkY2U0YmFhMzhmMC4uYjFiOTI0YjgwMjc0YzM5NDI0MmZjZTVkYTM1OWQ0NjMyZDYz
OThiNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvcmVsYXlwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydC5jYwpAQCAtMTM5LDcgKzEzOSw3IEBA
IGNsYXNzIFJlbGF5RW50cnkgOiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwgcHVibGljIHNp
Z3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAKICAgdm9pZCBPblNlbnRQYWNr
ZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KTsKQEAgLTM5Nyw5ICszOTcsOSBAQCB2
b2lkIFJlbGF5UG9ydDo6T25SZWFkUGFja2V0KGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgcHJvdG8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBpZiAoQ29u
bmVjdGlvbiogY29ubiA9IEdldENvbm5lY3Rpb24ocmVtb3RlX2FkZHIpKSB7Ci0gICAgY29ubi0+
T25SZWFkUGFja2V0KGRhdGEsIHNpemUsIHBhY2tldF90aW1lKTsKKyAgICBjb25uLT5PblJlYWRQ
YWNrZXQoZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWVfdXMpOwogICB9IGVsc2UgewogICAgIFBvcnQ6
Ok9uUmVhZFBhY2tldChkYXRhLCBzaXplLCByZW1vdGVfYWRkciwgcHJvdG8pOwogICB9CkBAIC02
ODYsNyArNjg2LDcgQEAgdm9pZCBSZWxheUVudHJ5OjpPblJlYWRQYWNrZXQocnRjOjpBc3luY1Bh
Y2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBy
ZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFj
a2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKSB7CiAgIC8vIFJUQ19EQ0hFQ0socmVtb3RlX2Fk
ZHIgPT0gcG9ydF8tPnNlcnZlcl9hZGRyKCkpOwogICAvLyBUT0RPKD8pOiBhcmUgd2Ugd29ycmll
ZCBhYm91dCB0aGlzPwogCkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBSZWxheUVudHJ5OjpPblJl
YWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAvLyBieSB0aGUgc2Vy
dmVyLCAgVGhlIGFjdHVhbCByZW1vdGUgYWRkcmVzcyBpcyB0aGUgb25lIHdlIHJlY29yZGVkLgog
ICBpZiAoIXBvcnRfLT5IYXNNYWdpY0Nvb2tpZShkYXRhLCBzaXplKSkgewogICAgIGlmIChsb2Nr
ZWRfKSB7Ci0gICAgICBwb3J0Xy0+T25SZWFkUGFja2V0KGRhdGEsIHNpemUsIGV4dF9hZGRyXywg
UFJPVE9fVURQLCBwYWNrZXRfdGltZSk7CisgICAgICBwb3J0Xy0+T25SZWFkUGFja2V0KGRhdGEs
IHNpemUsIGV4dF9hZGRyXywgUFJPVE9fVURQLCBwYWNrZXRfdGltZV91cyk7CiAgICAgfSBlbHNl
IHsKICAgICAgIFJUQ19MT0coV0FSTklORykgPDwgIkRyb3BwaW5nIHBhY2tldDogZW50cnkgbm90
IGxvY2tlZCI7CiAgICAgfQpAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgUmVsYXlFbnRyeTo6T25S
ZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKIAogICAvLyBQcm9jZXNz
IHRoZSBhY3R1YWwgZGF0YSBhbmQgcmVtb3RlIGFkZHJlc3MgaW4gdGhlIG5vcm1hbCBtYW5uZXIu
CiAgIHBvcnRfLT5PblJlYWRQYWNrZXQoZGF0YV9hdHRyLT5ieXRlcygpLCBkYXRhX2F0dHItPmxl
bmd0aCgpLCByZW1vdGVfYWRkcjIsCi0gICAgICAgICAgICAgICAgICAgICAgUFJPVE9fVURQLCBw
YWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgUFJPVE9fVURQLCBwYWNrZXRfdGlt
ZV91cyk7CiB9CiAKIHZvaWQgUmVsYXlFbnRyeTo6T25TZW50UGFja2V0KHJ0Yzo6QXN5bmNQYWNr
ZXRTb2NrZXQqIHNvY2tldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0LmgKaW5kZXggNDhhOTM5
ZTBjZmQxMGU4ZjdiMmZkZmY3YWRjZGMzMDEzY2Q1NGRiYi4uNTk4OWY3NmU4MWY1ZjY2NGZjMWQ4
YzYzNzg4MzgxMzc5MTg5Mzg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0LmgKQEAgLTEy
LDEwICsxMiwxMiBAQAogI2RlZmluZSBQMlBfQkFTRV9SRUxBWVBPUlRfSF8KIAogI2luY2x1ZGUg
PGRlcXVlPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8
dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1v
cnkuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wb3J0LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2Uvc3R1
bnJlcXVlc3QuaCIKIApAQCAtMzUsMTUgKzM3LDE2IEBAIGNsYXNzIFJlbGF5UG9ydCA6IHB1Ymxp
YyBQb3J0IHsKICAgdHlwZWRlZiBzdGQ6OnBhaXI8cnRjOjpTb2NrZXQ6Ok9wdGlvbiwgaW50PiBP
cHRpb25WYWx1ZTsKIAogICAvLyBSZWxheVBvcnQgZG9lc24ndCB5ZXQgZG8gYW55dGhpbmcgZmFu
Y3kgaW4gdGhlIGN0b3IuCi0gIHN0YXRpYyBSZWxheVBvcnQqIENyZWF0ZShydGM6OlRocmVhZCog
dGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0
b3J5KiBmYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpOZXR3b3JrKiBu
ZXR3b3JrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWluX3BvcnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtYXhfcG9ydCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCkgewotICAgIHJldHVy
biBuZXcgUmVsYXlQb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgbWluX3BvcnQsIG1heF9w
b3J0LCB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCk7CisgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVsYXlQb3J0PiBDcmVhdGUocnRjOjpUaHJlYWQqIHRocmVh
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tl
dFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3JrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1pbl9wb3J0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1heF9wb3J0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2Vy
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgcGFzc3dvcmQpIHsKKyAgICAvLyBVc2luZyBgbmV3YCB0byBhY2Nlc3MgYSBu
b24tcHVibGljIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlKG5ldyBS
ZWxheVBvcnQodGhyZWFkLCBmYWN0b3J5LCBuZXR3b3JrLCBtaW5fcG9ydCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9wb3J0LCB1c2VybmFtZSwgcGFzc3dv
cmQpKTsKICAgfQogICB+UmVsYXlQb3J0KCkgb3ZlcnJpZGU7CiAKQEAgLTkyLDcgKzk1LDcgQEAg
Y2xhc3MgUmVsYXlQb3J0IDogcHVibGljIFBvcnQgewogICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBy
ZW1vdGVfYWRkciwKICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIHByb3RvLAotICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAKICAgLy8gVGhlIE9u
U2VudFBhY2tldCBjYWxsYmFjayBpcyBsZWZ0IGVtcHR5IGhlcmUgc2luY2UgdGhleSBhcmUgaGFu
ZGxlZCBieQogICAvLyBSZWxheUVudHJ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0X3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlw
b3J0X3VuaXR0ZXN0LmNjCmluZGV4IGU2ZTkyMmZkYWY3N2ZlYTdkMDQ0MzQ3NGE3MzkyZTBkMDZi
YWRmZmYuLjFjYTY5ZjRlZjk2Y2UyMGJmOThlYWMzN2YwMjYzZTYwZTE0NGUxZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3Jl
bGF5cG9ydF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXBvcnRfdW5pdHRlc3QuY2MKQEAgLTYyLDEwICs2Miwx
MCBAQCBjbGFzcyBSZWxheVBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIH0KIAogICB2b2lkIE9uUmVhZFBhY2tldChydGM6OkFz
eW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGRhdGEsCi0gICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sCisgICAgICAgICAgICAgICAgICAgIHNp
emVfdCAvKiBzaXplICovLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFk
ZHJlc3MmIC8qIHJlbW90ZV9hZGRyICovLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2
NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLykgewogICAgIHJlY2VpdmVkX3BhY2tldF9jb3VudF9b
c29ja2V0XSsrOwogICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5c2VydmVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlzZXJ2ZXIuY2MKaW5kZXgg
OGUxN2E3OWRiOGQ0NDRkNTZjMzNkZmZmYzc0OGNlNmJlYTQzYmJkZS4uYWQ2YjQ4NzI4MmUxNDhj
MDkyNzQ1N2M3ZGUxOTAxM2VkZjViODRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlzZXJ2ZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlzZXJ2
ZXIuY2MKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbGF5U2VydmVyOjpBZGRJbnRlcm5hbFNv
Y2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQpIHsKIH0KIAogdm9pZCBSZWxheVNl
cnZlcjo6UmVtb3ZlSW50ZXJuYWxTb2NrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0
KSB7Ci0gIFNvY2tldExpc3Q6Oml0ZXJhdG9yIGl0ZXIgPQorICBhdXRvIGl0ZXIgPQogICAgICAg
c3RkOjpmaW5kKGludGVybmFsX3NvY2tldHNfLmJlZ2luKCksIGludGVybmFsX3NvY2tldHNfLmVu
ZCgpLCBzb2NrZXQpOwogICBSVENfRENIRUNLKGl0ZXIgIT0gaW50ZXJuYWxfc29ja2V0c18uZW5k
KCkpOwogICBpbnRlcm5hbF9zb2NrZXRzXy5lcmFzZShpdGVyKTsKQEAgLTEzMiw3ICsxMzIsNyBA
QCB2b2lkIFJlbGF5U2VydmVyOjpBZGRFeHRlcm5hbFNvY2tldChydGM6OkFzeW5jUGFja2V0U29j
a2V0KiBzb2NrZXQpIHsKIH0KIAogdm9pZCBSZWxheVNlcnZlcjo6UmVtb3ZlRXh0ZXJuYWxTb2Nr
ZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0KSB7Ci0gIFNvY2tldExpc3Q6Oml0ZXJh
dG9yIGl0ZXIgPQorICBhdXRvIGl0ZXIgPQogICAgICAgc3RkOjpmaW5kKGV4dGVybmFsX3NvY2tl
dHNfLmJlZ2luKCksIGV4dGVybmFsX3NvY2tldHNfLmVuZCgpLCBzb2NrZXQpOwogICBSVENfRENI
RUNLKGl0ZXIgIT0gZXh0ZXJuYWxfc29ja2V0c18uZW5kKCkpOwogICBleHRlcm5hbF9zb2NrZXRz
Xy5lcmFzZShpdGVyKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIFJlbGF5U2VydmVyOjpBZGRJ
bnRlcm5hbFNlcnZlclNvY2tldChydGM6OkFzeW5jU29ja2V0KiBzb2NrZXQsCiB9CiAKIHZvaWQg
UmVsYXlTZXJ2ZXI6OlJlbW92ZUludGVybmFsU2VydmVyU29ja2V0KHJ0Yzo6QXN5bmNTb2NrZXQq
IHNvY2tldCkgewotICBTZXJ2ZXJTb2NrZXRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzZXJ2ZXJfc29j
a2V0c18uZmluZChzb2NrZXQpOworICBhdXRvIGl0ZXIgPSBzZXJ2ZXJfc29ja2V0c18uZmluZChz
b2NrZXQpOwogICBSVENfRENIRUNLKGl0ZXIgIT0gc2VydmVyX3NvY2tldHNfLmVuZCgpKTsKICAg
c2VydmVyX3NvY2tldHNfLmVyYXNlKGl0ZXIpOwogICBzb2NrZXQtPlNpZ25hbFJlYWRFdmVudC5k
aXNjb25uZWN0KHRoaXMpOwpAQCAtMTYwLDEwICsxNjAsOSBAQCBpbnQgUmVsYXlTZXJ2ZXI6Okdl
dENvbm5lY3Rpb25Db3VudCgpIGNvbnN0IHsKIAogcnRjOjpTb2NrZXRBZGRyZXNzUGFpciBSZWxh
eVNlcnZlcjo6R2V0Q29ubmVjdGlvbihpbnQgY29ubmVjdGlvbikgY29uc3QgewogICBpbnQgaSA9
IDA7Ci0gIGZvciAoQ29ubmVjdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb25uZWN0aW9u
c18uYmVnaW4oKTsKLSAgICAgICBpdCAhPSBjb25uZWN0aW9uc18uZW5kKCk7ICsraXQpIHsKKyAg
Zm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGNvbm5lY3Rpb25zXykgewogICAgIGlmIChpID09IGNv
bm5lY3Rpb24pIHsKLSAgICAgIHJldHVybiBpdC0+c2Vjb25kLT5hZGRyX3BhaXIoKTsKKyAgICAg
IHJldHVybiBlbnRyeS5zZWNvbmQtPmFkZHJfcGFpcigpOwogICAgIH0KICAgICArK2k7CiAgIH0K
QEAgLTE3MSw5ICsxNzAsOCBAQCBydGM6OlNvY2tldEFkZHJlc3NQYWlyIFJlbGF5U2VydmVyOjpH
ZXRDb25uZWN0aW9uKGludCBjb25uZWN0aW9uKSBjb25zdCB7CiB9CiAKIGJvb2wgUmVsYXlTZXJ2
ZXI6Okhhc0Nvbm5lY3Rpb24oY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzKSBjb25z
dCB7Ci0gIGZvciAoQ29ubmVjdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb25uZWN0aW9u
c18uYmVnaW4oKTsKLSAgICAgICBpdCAhPSBjb25uZWN0aW9uc18uZW5kKCk7ICsraXQpIHsKLSAg
ICBpZiAoaXQtPnNlY29uZC0+YWRkcl9wYWlyKCkuZGVzdGluYXRpb24oKSA9PSBhZGRyZXNzKSB7
CisgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBjb25uZWN0aW9uc18pIHsKKyAgICBpZiAoZW50
cnkuc2Vjb25kLT5hZGRyX3BhaXIoKS5kZXN0aW5hdGlvbigpID09IGFkZHJlc3MpIHsKICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgfQpAQCAtMTg5LDE0ICsxODcsMTQgQEAgdm9pZCBSZWxh
eVNlcnZlcjo6T25JbnRlcm5hbFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ5dGVzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1v
dGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQ
YWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLykgewogICAvLyBHZXQgdGhl
IGFkZHJlc3Mgb2YgdGhlIGNvbm5lY3Rpb24gd2UganVzdCByZWNlaXZlZCBvbi4KICAgcnRjOjpT
b2NrZXRBZGRyZXNzUGFpciBhcChyZW1vdGVfYWRkciwgc29ja2V0LT5HZXRMb2NhbEFkZHJlc3Mo
KSk7CiAgIFJUQ19EQ0hFQ0soIWFwLmRlc3RpbmF0aW9uKCkuSXNOaWwoKSk7CiAKICAgLy8gSWYg
dGhpcyBkaWQgbm90IGNvbWUgZnJvbSBhbiBleGlzdGluZyBjb25uZWN0aW9uLCBpdCBzaG91bGQg
YmUgYSBTVFVOCiAgIC8vIGFsbG9jYXRlIHJlcXVlc3QuCi0gIENvbm5lY3Rpb25NYXA6Oml0ZXJh
dG9yIHBpdGVyID0gY29ubmVjdGlvbnNfLmZpbmQoYXApOworICBhdXRvIHBpdGVyID0gY29ubmVj
dGlvbnNfLmZpbmQoYXApOwogICBpZiAocGl0ZXIgPT0gY29ubmVjdGlvbnNfLmVuZCgpKSB7CiAg
ICAgSGFuZGxlU3R1bkFsbG9jYXRlKGJ5dGVzLCBzaXplLCBhcCwgc29ja2V0KTsKICAgICByZXR1
cm47CkBAIC0yMzQsMTMgKzIzMiwxMyBAQCB2b2lkIFJlbGF5U2VydmVyOjpPbkV4dGVybmFsUGFj
a2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1l
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8q
IHBhY2tldF90aW1lX3VzICovKSB7CiAgIC8vIEdldCB0aGUgYWRkcmVzcyBvZiB0aGUgY29ubmVj
dGlvbiB3ZSBqdXN0IHJlY2VpdmVkIG9uLgogICBydGM6OlNvY2tldEFkZHJlc3NQYWlyIGFwKHJl
bW90ZV9hZGRyLCBzb2NrZXQtPkdldExvY2FsQWRkcmVzcygpKTsKICAgUlRDX0RDSEVDSyghYXAu
ZGVzdGluYXRpb24oKS5Jc05pbCgpKTsKIAogICAvLyBJZiB0aGlzIGNvbm5lY3Rpb24gYWxyZWFk
eSBleGlzdHMsIHRoZW4gZm9yd2FyZCB0aGUgdHJhZmZpYy4KLSAgQ29ubmVjdGlvbk1hcDo6aXRl
cmF0b3IgcGl0ZXIgPSBjb25uZWN0aW9uc18uZmluZChhcCk7CisgIGF1dG8gcGl0ZXIgPSBjb25u
ZWN0aW9uc18uZmluZChhcCk7CiAgIGlmIChwaXRlciAhPSBjb25uZWN0aW9uc18uZW5kKCkpIHsK
ICAgICAvLyBUT0RPKD8pOiBDaGVjayB0aGUgSE1BQy4KICAgICBSZWxheVNlcnZlckNvbm5lY3Rp
b24qIGV4dF9jb25uID0gcGl0ZXItPnNlY29uZDsKQEAgLTI3Niw3ICsyNzQsNyBAQCB2b2lkIFJl
bGF5U2VydmVyOjpPbkV4dGVybmFsUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tl
dCwKICAgLy8gVE9ETyg/KTogQ2hlY2sgdGhlIEhNQUMuCiAKICAgLy8gVGhlIGJpbmRpbmcgc2hv
dWxkIGFscmVhZHkgYmUgcHJlc2VudC4KLSAgQmluZGluZ01hcDo6aXRlcmF0b3IgYml0ZXIgPSBi
aW5kaW5nc18uZmluZCh1c2VybmFtZSk7CisgIGF1dG8gYml0ZXIgPSBiaW5kaW5nc18uZmluZCh1
c2VybmFtZSk7CiAgIGlmIChiaXRlciA9PSBiaW5kaW5nc18uZW5kKCkpIHsKICAgICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJEcm9wcGluZyBwYWNrZXQ6IG5vIGJpbmRpbmcgd2l0aCB1c2VybmFt
ZSI7CiAgICAgcmV0dXJuOwpAQCAtMzUxLDcgKzM0OSw3IEBAIHZvaWQgUmVsYXlTZXJ2ZXI6Okhh
bmRsZVN0dW5BbGxvY2F0ZShjb25zdCBjaGFyKiBieXRlcywKIAogICBSZWxheVNlcnZlckJpbmRp
bmcqIGJpbmRpbmc7CiAKLSAgQmluZGluZ01hcDo6aXRlcmF0b3IgYml0ZXIgPSBiaW5kaW5nc18u
ZmluZCh1c2VybmFtZSk7CisgIGF1dG8gYml0ZXIgPSBiaW5kaW5nc18uZmluZCh1c2VybmFtZSk7
CiAgIGlmIChiaXRlciAhPSBiaW5kaW5nc18uZW5kKCkpIHsKICAgICBiaW5kaW5nID0gYml0ZXIt
PnNlY29uZDsKICAgfSBlbHNlIHsKQEAgLTUxNCwxMyArNTEyLDEzIEBAIHZvaWQgUmVsYXlTZXJ2
ZXI6OkFkZENvbm5lY3Rpb24oUmVsYXlTZXJ2ZXJDb25uZWN0aW9uKiBjb25uKSB7CiB9CiAKIHZv
aWQgUmVsYXlTZXJ2ZXI6OlJlbW92ZUNvbm5lY3Rpb24oUmVsYXlTZXJ2ZXJDb25uZWN0aW9uKiBj
b25uKSB7Ci0gIENvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBjb25uZWN0aW9uc18uZmlu
ZChjb25uLT5hZGRyX3BhaXIoKSk7CisgIGF1dG8gaXRlciA9IGNvbm5lY3Rpb25zXy5maW5kKGNv
bm4tPmFkZHJfcGFpcigpKTsKICAgUlRDX0RDSEVDSyhpdGVyICE9IGNvbm5lY3Rpb25zXy5lbmQo
KSk7CiAgIGNvbm5lY3Rpb25zXy5lcmFzZShpdGVyKTsKIH0KIAogdm9pZCBSZWxheVNlcnZlcjo6
UmVtb3ZlQmluZGluZyhSZWxheVNlcnZlckJpbmRpbmcqIGJpbmRpbmcpIHsKLSAgQmluZGluZ01h
cDo6aXRlcmF0b3IgaXRlciA9IGJpbmRpbmdzXy5maW5kKGJpbmRpbmctPnVzZXJuYW1lKCkpOwor
ICBhdXRvIGl0ZXIgPSBiaW5kaW5nc18uZmluZChiaW5kaW5nLT51c2VybmFtZSgpKTsKICAgUlRD
X0RDSEVDSyhpdGVyICE9IGJpbmRpbmdzXy5lbmQoKSk7CiAgIGJpbmRpbmdzXy5lcmFzZShpdGVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvcmVsYXlzZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5c2VydmVyLmgKaW5kZXggYzc2NjEyMDRmODE5OTA5
OTA2NGJiY2JiMTNlZjQ3MGVkM2FlMjViMy4uNWJhNWUwNjVhODY4MTIwNTgyMjNlZmNhNTE4OGM2
MmM5OGE3OWUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXNlcnZlci5oCkBAIC02OCwzMyAr
NjgsMjcgQEAgY2xhc3MgUmVsYXlTZXJ2ZXIgOiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwg
cHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgYm9vbCBIYXNDb25uZWN0aW9uKGNvbnN0
IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcykgY29uc3Q7CiAKICBwcml2YXRlOgotICB0eXBl
ZGVmIHN0ZDo6dmVjdG9yPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqPiBTb2NrZXRMaXN0OwotICB0
eXBlZGVmIHN0ZDo6bWFwPHJ0Yzo6QXN5bmNTb2NrZXQqLCBjcmlja2V0OjpQcm90b2NvbFR5cGU+
IFNlcnZlclNvY2tldE1hcDsKLSAgdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgUmVsYXlT
ZXJ2ZXJCaW5kaW5nKj4gQmluZGluZ01hcDsKLSAgdHlwZWRlZiBzdGQ6Om1hcDxydGM6OlNvY2tl
dEFkZHJlc3NQYWlyLCBSZWxheVNlcnZlckNvbm5lY3Rpb24qPgotICAgICAgQ29ubmVjdGlvbk1h
cDsKLQogICBydGM6OlRocmVhZCogdGhyZWFkXzsKICAgd2VicnRjOjpSYW5kb20gcmFuZG9tXzsK
ICAgYm9vbCBsb2dfYmluZGluZ3NfOwotICBTb2NrZXRMaXN0IGludGVybmFsX3NvY2tldHNfOwot
ICBTb2NrZXRMaXN0IGV4dGVybmFsX3NvY2tldHNfOwotICBTb2NrZXRMaXN0IHJlbW92ZWRfc29j
a2V0c187Ci0gIFNlcnZlclNvY2tldE1hcCBzZXJ2ZXJfc29ja2V0c187Ci0gIEJpbmRpbmdNYXAg
YmluZGluZ3NfOwotICBDb25uZWN0aW9uTWFwIGNvbm5lY3Rpb25zXzsKKyAgc3RkOjp2ZWN0b3I8
cnRjOjpBc3luY1BhY2tldFNvY2tldCo+IGludGVybmFsX3NvY2tldHNfOworICBzdGQ6OnZlY3Rv
cjxydGM6OkFzeW5jUGFja2V0U29ja2V0Kj4gZXh0ZXJuYWxfc29ja2V0c187CisgIHN0ZDo6dmVj
dG9yPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqPiByZW1vdmVkX3NvY2tldHNfOworICBzdGQ6Om1h
cDxydGM6OkFzeW5jU29ja2V0KiwgY3JpY2tldDo6UHJvdG9jb2xUeXBlPiBzZXJ2ZXJfc29ja2V0
c187CisgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBSZWxheVNlcnZlckJpbmRpbmcqPiBiaW5kaW5n
c187CisgIHN0ZDo6bWFwPHJ0Yzo6U29ja2V0QWRkcmVzc1BhaXIsIFJlbGF5U2VydmVyQ29ubmVj
dGlvbio+IGNvbm5lY3Rpb25zXzsKIAogICAvLyBDYWxsZWQgd2hlbiBhIHBhY2tldCBpcyByZWNl
aXZlZCBieSB0aGUgc2VydmVyIG9uIG9uZSBvZiBpdHMgc29ja2V0cy4KICAgdm9pZCBPbkludGVy
bmFsUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJl
c3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNr
ZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2
NF90JiBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQgT25FeHRlcm5hbFBhY2tldChydGM6OkFzeW5j
UGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMp
OwogCiAgIHZvaWQgT25SZWFkRXZlbnQocnRjOjpBc3luY1NvY2tldCogc29ja2V0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2Uvc3R1bi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3N0dW4uY2MKaW5kZXggY2M5ZmI0ZTRjMDkwYzMzYjU3Yzk5OWJhZGYwNjk2ODEyYjc3
Yjk0Mi4uZmE2YjZmODMyZTA4NTc1YTk4YTMyMGY4MTVmMjYwYjA1MGFhY2NlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1
bi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9zdHVuLmNjCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JjMzIu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVz
c2FnZWRpZ2VzdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogCiB1c2lu
ZyBydGM6OkJ5dGVCdWZmZXJSZWFkZXI7CiB1c2luZyBydGM6OkJ5dGVCdWZmZXJXcml0ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9zdHVucG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL3N0dW5wb3J0LmNjCmluZGV4IGM2MGJmOTJlYjQ5MjBjM2RlZmRjMmM1MWQ2
MDAyOWYyY2NlZjNlMmYuLjcyNzMxMjMyOWVlNGQwOTk2N2JlNzE3ZGQ4YjY0MGM5OTg3MDBmNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3N0dW5wb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3N0dW5wb3J0LmNjCkBAIC0zMTksOSArMzE5LDkgQEAgYm9vbCBV
RFBQb3J0OjpIYW5kbGVJbmNvbWluZ1BhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2Nr
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJl
bW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgLy8gQWxsIHBhY2tldHMgZ2l2ZW4g
dG8gVURQIHBvcnQgd2lsbCBiZSBjb25zdW1lZC4KLSAgT25SZWFkUGFja2V0KHNvY2tldCwgZGF0
YSwgc2l6ZSwgcmVtb3RlX2FkZHIsIHBhY2tldF90aW1lKTsKKyAgT25SZWFkUGFja2V0KHNvY2tl
dCwgZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsIHBhY2tldF90aW1lX3VzKTsKICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTM1OCwxMSArMzU4LDE1IEBAIHZvaWQgVURQUG9ydDo6T25Mb2NhbEFkZHJl
c3NSZWFkeShydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgIE1heWJlUHJlcGFyZVN0
dW5DYW5kaWRhdGUoKTsKIH0KIAordm9pZCBVRFBQb3J0OjpQb3N0QWRkQWRkcmVzcyhib29sIGlz
X2ZpbmFsKSB7CisgIE1heWJlU2V0UG9ydENvbXBsZXRlT3JFcnJvcigpOworfQorCiB2b2lkIFVE
UFBvcnQ6Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpIHsKICAgUlRDX0RD
SEVDSyhzb2NrZXQgPT0gc29ja2V0Xyk7CiAgIFJUQ19EQ0hFQ0soIXJlbW90ZV9hZGRyLklzVW5y
ZXNvbHZlZElQKCkpOwogCkBAIC0zNzYsNyArMzgwLDcgQEAgdm9pZCBVRFBQb3J0OjpPblJlYWRQ
YWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICB9CiAKICAgaWYgKENvbm5l
Y3Rpb24qIGNvbm4gPSBHZXRDb25uZWN0aW9uKHJlbW90ZV9hZGRyKSkgewotICAgIGNvbm4tPk9u
UmVhZFBhY2tldChkYXRhLCBzaXplLCBwYWNrZXRfdGltZSk7CisgICAgY29ubi0+T25SZWFkUGFj
a2V0KGRhdGEsIHNpemUsIHBhY2tldF90aW1lX3VzKTsKICAgfSBlbHNlIHsKICAgICBQb3J0OjpP
blJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsIFBST1RPX1VEUCk7CiAgIH0KQEAg
LTUxNyw4ICs1MjEsMTQgQEAgdm9pZCBVRFBQb3J0OjpPblN0dW5CaW5kaW5nT3JSZXNvbHZlUmVx
dWVzdEZhaWxlZCgKIH0KIAogdm9pZCBVRFBQb3J0OjpNYXliZVNldFBvcnRDb21wbGV0ZU9yRXJy
b3IoKSB7Ci0gIGlmIChyZWFkeV8pCisgIGlmIChtZG5zX25hbWVfcmVnaXN0cmF0aW9uX3N0YXR1
cygpID09CisgICAgICBNZG5zTmFtZVJlZ2lzdHJhdGlvblN0YXR1czo6a0luUHJvZ3Jlc3MpIHsK
ICAgICByZXR1cm47CisgIH0KKworICBpZiAocmVhZHlfKSB7CisgICAgcmV0dXJuOworICB9CiAK
ICAgLy8gRG8gbm90IHNldCBwb3J0IHJlYWR5IGlmIHdlIGFyZSBzdGlsbCB3YWl0aW5nIGZvciBi
aW5kIHJlc3BvbnNlcy4KICAgY29uc3Qgc2l6ZV90IHNlcnZlcnNfZG9uZV9iaW5kX3JlcXVlc3Qg
PQpAQCAtNTYzLDIyICs1NzMsMjQgQEAgYm9vbCBVRFBQb3J0OjpIYXNDYW5kaWRhdGVXaXRoQWRk
cmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHIpIGNvbnN0IHsKICAgcmV0dXJuIGZh
bHNlOwogfQogCi1TdHVuUG9ydCogU3R1blBvcnQ6OkNyZWF0ZShydGM6OlRocmVhZCogdGhyZWFk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBm
YWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3Jr
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWluX3BvcnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtYXhfcG9ydCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFNlcnZlckFkZHJlc3NlcyYgc2VydmVycywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IHN0dW5fa2VlcGFsaXZlX2ludGVydmFsKSB7
Ci0gIFN0dW5Qb3J0KiBwb3J0ID0gbmV3IFN0dW5Qb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29y
aywgbWluX3BvcnQsIG1heF9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2VybmFtZSwgcGFzc3dvcmQsIHNlcnZlcnMsIG9yaWdpbik7CitzdGQ6OnVuaXF1ZV9wdHI8U3R1
blBvcnQ+IFN0dW5Qb3J0OjpDcmVhdGUoCisgICAgcnRjOjpUaHJlYWQqIHRocmVhZCwKKyAgICBy
dGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCisgICAgcnRjOjpOZXR3b3JrKiBuZXR3
b3JrLAorICAgIHVpbnQxNl90IG1pbl9wb3J0LAorICAgIHVpbnQxNl90IG1heF9wb3J0LAorICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFz
c3dvcmQsCisgICAgY29uc3QgU2VydmVyQWRkcmVzc2VzJiBzZXJ2ZXJzLAorICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBvcmlnaW4sCisgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzdHVuX2tlZXBhbGl2
ZV9pbnRlcnZhbCkgeworICAvLyBVc2luZyBgbmV3YCB0byBhY2Nlc3MgYSBub24tcHVibGljIGNv
bnN0cnVjdG9yLgorICBhdXRvIHBvcnQgPSBhYnNsOjpXcmFwVW5pcXVlKG5ldyBTdHVuUG9ydCh0
aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIG1pbl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXhfcG9ydCwgdXNlcm5hbWUsIHBhc3N3b3JkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLCBvcmlnaW4p
KTsKICAgcG9ydC0+c2V0X3N0dW5fa2VlcGFsaXZlX2RlbGF5KHN0dW5fa2VlcGFsaXZlX2ludGVy
dmFsKTsKICAgaWYgKCFwb3J0LT5Jbml0KCkpIHsKLSAgICBkZWxldGUgcG9ydDsKLSAgICBwb3J0
ID0gTlVMTDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICAgfQogICByZXR1cm4gcG9ydDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3N0dW5wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9zdHVucG9ydC5oCmluZGV4IDVlMzk3ODM1ZGJlYjY1MTg2NjlmZDM4NzQyN2Nl
YWY5NzRlNGZlOTAuLmNhNDNjYmM4YzQ4M2QwNzQ5MTkzYzZiMWU0NDg5NDE2MGQ0Y2ZmMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3N0dW5wb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2Uvc3R1bnBvcnQuaApAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnku
aCIKICNpbmNsdWRlICJwMnAvYmFzZS9wb3J0LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2Uvc3R1bnJl
cXVlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oIgpAQCAtMzUs
NDIgKzM2LDQ1IEBAIHN0YXRpYyBjb25zdCBpbnQgSElHSF9DT1NUX1BPUlRfS0VFUEFMSVZFX0xJ
RkVUSU1FID0gMiAqIDYwICogMTAwMDsKIC8vIENvbW11bmljYXRlcyB1c2luZyB0aGUgYWRkcmVz
cyBvbiB0aGUgb3V0c2lkZSBvZiBhIE5BVC4KIGNsYXNzIFVEUFBvcnQgOiBwdWJsaWMgUG9ydCB7
CiAgcHVibGljOgotICBzdGF0aWMgVURQUG9ydCogQ3JlYXRlKHJ0Yzo6VGhyZWFkKiB0aHJlYWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0
b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZW1pdF9sb2NhbF9mb3JfYW55YWRkcmVzcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IHN0dW5fa2VlcGFsaXZlX2ludGVy
dmFsKSB7Ci0gICAgVURQUG9ydCogcG9ydCA9IG5ldyBVRFBQb3J0KHRocmVhZCwgZmFjdG9yeSwg
bmV0d29yaywgc29ja2V0LCB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFzc3dvcmQsIG9yaWdpbiwgZW1pdF9sb2NhbF9mb3JfYW55YWRkcmVzcyk7CisgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8VURQUG9ydD4gQ3JlYXRlKAorICAgICAgcnRjOjpUaHJlYWQqIHRo
cmVhZCwKKyAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogZmFjdG9yeSwKKyAgICAgIHJ0
Yzo6TmV0d29yayogbmV0d29yaywKKyAgICAgIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tl
dCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKKyAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBwYXNzd29yZCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCisgICAg
ICBib29sIGVtaXRfbG9jYWxfZm9yX2FueWFkZHJlc3MsCisgICAgICBhYnNsOjpvcHRpb25hbDxp
bnQ+IHN0dW5fa2VlcGFsaXZlX2ludGVydmFsKSB7CisgICAgLy8gVXNpbmcgYG5ld2AgdG8gYWNj
ZXNzIGEgbm9uLXB1YmxpYyBjb25zdHJ1Y3Rvci4KKyAgICBhdXRvIHBvcnQgPSBhYnNsOjpXcmFw
VW5pcXVlKG5ldyBVRFBQb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgc29ja2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsIHBhc3N3
b3JkLCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0X2xvY2FsX2Zvcl9hbnlhZGRyZXNzKSk7CiAgICAgcG9ydC0+c2V0X3N0dW5fa2VlcGFs
aXZlX2RlbGF5KHN0dW5fa2VlcGFsaXZlX2ludGVydmFsKTsKICAgICBpZiAoIXBvcnQtPkluaXQo
KSkgewotICAgICAgZGVsZXRlIHBvcnQ7Ci0gICAgICBwb3J0ID0gTlVMTDsKKyAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gcG9ydDsKICAgfQogCi0gIHN0YXRpYyBVRFBQ
b3J0KiBDcmVhdGUocnRjOjpUaHJlYWQqIHRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3JrLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQxNl90IG1pbl9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1heF9w
b3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9yaWdpbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGVtaXRfbG9jYWxfZm9yX2FueWFkZHJlc3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzdHVuX2tlZXBhbGl2
ZV9pbnRlcnZhbCkgewotICAgIFVEUFBvcnQqIHBvcnQgPQorICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFVEUFBvcnQ+IENyZWF0ZSgKKyAgICAgIHJ0Yzo6VGhyZWFkKiB0aHJlYWQsCisgICAgICBy
dGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCisgICAgICBydGM6Ok5ldHdvcmsqIG5l
dHdvcmssCisgICAgICB1aW50MTZfdCBtaW5fcG9ydCwKKyAgICAgIHVpbnQxNl90IG1heF9wb3J0
LAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLAorICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHBhc3N3b3JkLAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9yaWdpbiwKKyAgICAg
IGJvb2wgZW1pdF9sb2NhbF9mb3JfYW55YWRkcmVzcywKKyAgICAgIGFic2w6Om9wdGlvbmFsPGlu
dD4gc3R1bl9rZWVwYWxpdmVfaW50ZXJ2YWwpIHsKKyAgICAvLyBVc2luZyBgbmV3YCB0byBhY2Nl
c3MgYSBub24tcHVibGljIGNvbnN0cnVjdG9yLgorICAgIGF1dG8gcG9ydCA9IGFic2w6OldyYXBV
bmlxdWUoCiAgICAgICAgIG5ldyBVRFBQb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgbWlu
X3BvcnQsIG1heF9wb3J0LCB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQs
IG9yaWdpbiwgZW1pdF9sb2NhbF9mb3JfYW55YWRkcmVzcyk7CisgICAgICAgICAgICAgICAgICAg
IHBhc3N3b3JkLCBvcmlnaW4sIGVtaXRfbG9jYWxfZm9yX2FueWFkZHJlc3MpKTsKICAgICBwb3J0
LT5zZXRfc3R1bl9rZWVwYWxpdmVfZGVsYXkoc3R1bl9rZWVwYWxpdmVfaW50ZXJ2YWwpOwogICAg
IGlmICghcG9ydC0+SW5pdCgpKSB7Ci0gICAgICBkZWxldGUgcG9ydDsKLSAgICAgIHBvcnQgPSBO
VUxMOworICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBwb3J0OwogICB9
CkBAIC0xMDAsNyArMTA0LDcgQEAgY2xhc3MgVURQUG9ydCA6IHB1YmxpYyBQb3J0IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgb3ZlcnJpZGU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgb3ZlcnJp
ZGU7CiAKICAgYm9vbCBTdXBwb3J0c1Byb3RvY29sKGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm90b2Nv
bCkgY29uc3Qgb3ZlcnJpZGU7CiAgIFByb3RvY29sVHlwZSBHZXRQcm90b2NvbCgpIGNvbnN0IG92
ZXJyaWRlOwpAQCAtMTU2LDEwICsxNjAsMTQgQEAgY2xhc3MgVURQUG9ydCA6IHB1YmxpYyBQb3J0
IHsKIAogICB2b2lkIE9uTG9jYWxBZGRyZXNzUmVhZHkocnRjOjpBc3luY1BhY2tldFNvY2tldCog
c29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRy
ZXNzJiBhZGRyZXNzKTsKKworICB2b2lkIFBvc3RBZGRBZGRyZXNzKGJvb2wgaXNfZmluYWwpIG92
ZXJyaWRlOworCiAgIHZvaWQgT25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNv
Y2tldCwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUs
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCisgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFk
ZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tl
dFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYg
cGFja2V0X3RpbWVfdXMpOwogCiAgIHZvaWQgT25TZW50UGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTZW50UGFja2V0
JiBzZW50X3BhY2tldCkgb3ZlcnJpZGU7CkBAIC0yNjIsMTYgKzI3MCwxNyBAQCBjbGFzcyBVRFBQ
b3J0IDogcHVibGljIFBvcnQgewogCiBjbGFzcyBTdHVuUG9ydCA6IHB1YmxpYyBVRFBQb3J0IHsK
ICBwdWJsaWM6Ci0gIHN0YXRpYyBTdHVuUG9ydCogQ3JlYXRlKHJ0Yzo6VGhyZWFkKiB0aHJlYWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogZmFj
dG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3JrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtaW5fcG9ydCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDE2X3QgbWF4X3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTZXJ2ZXJBZGRyZXNzZXMmIHNlcnZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IGFic2w6Om9wdGlvbmFsPGludD4gc3R1bl9rZWVwYWxpdmVfaW50ZXJ2YWwpOworICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFN0dW5Qb3J0PiBDcmVhdGUoCisgICAgICBydGM6OlRocmVhZCogdGhy
ZWFkLAorICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAorICAgICAgcnRj
OjpOZXR3b3JrKiBuZXR3b3JrLAorICAgICAgdWludDE2X3QgbWluX3BvcnQsCisgICAgICB1aW50
MTZfdCBtYXhfcG9ydCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKKyAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKKyAgICAgIGNvbnN0IFNlcnZlckFkZHJlc3Nl
cyYgc2VydmVycywKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCisgICAgICBhYnNs
OjpvcHRpb25hbDxpbnQ+IHN0dW5fa2VlcGFsaXZlX2ludGVydmFsKTsKIAogICB2b2lkIFByZXBh
cmVBZGRyZXNzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5wb3J0X3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnBvcnRf
dW5pdHRlc3QuY2MKaW5kZXggMjk3NTRlODYxYzkzOGE0MWE3ZWE4ZmJjODY3Y2FmYzNmMGY3YjFk
Mi4uMDE1MThhOTQ2ODM2NGQxMGVjMzQxZGMzMDdlODNiNWEyODJhMDFjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnBv
cnRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2Uvc3R1bnBvcnRfdW5pdHRlc3QuY2MKQEAgLTc1LDEwICs3NSwxMCBAQCBj
bGFzcyBTdHVuUG9ydFRlc3RCYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBzaWdz
bG90OjpoYXNfc2xvdHM8PiB7CiAgIH0KIAogICB2b2lkIENyZWF0ZVN0dW5Qb3J0KGNvbnN0IFNl
cnZlckFkZHJlc3NlcyYgc3R1bl9zZXJ2ZXJzKSB7Ci0gICAgc3R1bl9wb3J0Xy5yZXNldChjcmlj
a2V0OjpTdHVuUG9ydDo6Q3JlYXRlKAorICAgIHN0dW5fcG9ydF8gPSBjcmlja2V0OjpTdHVuUG9y
dDo6Q3JlYXRlKAogICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLCAmc29ja2V0X2ZhY3Rv
cnlfLCAmbmV0d29ya18sIDAsIDAsCiAgICAgICAgIHJ0Yzo6Q3JlYXRlUmFuZG9tU3RyaW5nKDE2
KSwgcnRjOjpDcmVhdGVSYW5kb21TdHJpbmcoMjIpLCBzdHVuX3NlcnZlcnMsCi0gICAgICAgIHN0
ZDo6c3RyaW5nKCksIGFic2w6Om51bGxvcHQpKTsKKyAgICAgICAgc3RkOjpzdHJpbmcoKSwgYWJz
bDo6bnVsbG9wdCk7CiAgICAgc3R1bl9wb3J0Xy0+c2V0X3N0dW5fa2VlcGFsaXZlX2RlbGF5KHN0
dW5fa2VlcGFsaXZlX2RlbGF5Xyk7CiAgICAgLy8gSWYgfHN0dW5fa2VlcGFsaXZlX2xpZmV0aW1l
X3wgaXMgbmVnYXRpdmUsIGxldCB0aGUgc3R1biBwb3J0CiAgICAgLy8gY2hvb3NlIGl0cyBsaWZl
dGltZSBmcm9tIHRoZSBuZXR3b3JrIHR5cGUuCkBAIC0xMDAsMTAgKzEwMCwxMCBAQCBjbGFzcyBT
dHVuUG9ydFRlc3RCYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBzaWdzbG90Ojpo
YXNfc2xvdHM8PiB7CiAgICAgfQogICAgIEFTU0VSVF9UUlVFKHNvY2tldF8gIT0gTlVMTCk7CiAg
ICAgc29ja2V0Xy0+U2lnbmFsUmVhZFBhY2tldC5jb25uZWN0KHRoaXMsICZTdHVuUG9ydFRlc3RC
YXNlOjpPblJlYWRQYWNrZXQpOwotICAgIHN0dW5fcG9ydF8ucmVzZXQoY3JpY2tldDo6VURQUG9y
dDo6Q3JlYXRlKAorICAgIHN0dW5fcG9ydF8gPSBjcmlja2V0OjpVRFBQb3J0OjpDcmVhdGUoCiAg
ICAgICAgIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksICZzb2NrZXRfZmFjdG9yeV8sICZuZXR3b3Jr
Xywgc29ja2V0Xy5nZXQoKSwKICAgICAgICAgcnRjOjpDcmVhdGVSYW5kb21TdHJpbmcoMTYpLCBy
dGM6OkNyZWF0ZVJhbmRvbVN0cmluZygyMiksIHN0ZDo6c3RyaW5nKCksCi0gICAgICAgIGZhbHNl
LCBhYnNsOjpudWxsb3B0KSk7CisgICAgICAgIGZhbHNlLCBhYnNsOjpudWxsb3B0KTsKICAgICBB
U1NFUlRfVFJVRShzdHVuX3BvcnRfICE9IE5VTEwpOwogICAgIFNlcnZlckFkZHJlc3NlcyBzdHVu
X3NlcnZlcnM7CiAgICAgc3R1bl9zZXJ2ZXJzLmluc2VydChzZXJ2ZXJfYWRkcik7CkBAIC0xMTks
MTUgKzExOSwxNSBAQCBjbGFzcyBTdHVuUG9ydFRlc3RCYXNlIDogcHVibGljIHRlc3Rpbmc6OlRl
c3QsIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovKSB7
CiAgICAgc3R1bl9wb3J0Xy0+SGFuZGxlSW5jb21pbmdQYWNrZXQoc29ja2V0LCBkYXRhLCBzaXpl
LCByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6
OlBhY2tldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
cGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICB9CiAKICAgdm9pZCBTZW5kRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuKSB7CiAgICAgc3R1bl9wb3J0Xy0+SGFuZGxlSW5jb21pbmdQYWNr
ZXQoc29ja2V0Xy5nZXQoKSwgZGF0YSwgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6U29ja2V0QWRkcmVzcygiMjIuMjIuMjIuMjIiLCAwKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldFRpbWUoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwog
ICB9CiAKICBwcm90ZWN0ZWQ6CkBAIC0yMTYsNyArMjE2LDcgQEAgVEVTVF9GKFN0dW5Qb3J0VGVz
dCwgVGVzdFByZXBhcmVBZGRyZXNzRmFpbCkgewogCiAvLyBUZXN0IHRoYXQgd2UgY2FuIGdldCBh
biBhZGRyZXNzIGZyb20gYSBTVFVOIHNlcnZlciBzcGVjaWZpZWQgYnkgYSBob3N0bmFtZS4KIC8v
IENyYXNoZXMgb24gTGludXgsIHNlZSB3ZWJydGM6NzQxNgotI2lmIGRlZmluZWQoV0VCUlRDX0xJ
TlVYKQorI2lmIGRlZmluZWQoV0VCUlRDX0xJTlVYKSB8fCBkZWZpbmVkKFdFQlJUQ19XSU4pCiAj
ZGVmaW5lIE1BWUJFX1Rlc3RQcmVwYXJlQWRkcmVzc0hvc3RuYW1lIERJU0FCTEVEX1Rlc3RQcmVw
YXJlQWRkcmVzc0hvc3RuYW1lCiAjZWxzZQogI2RlZmluZSBNQVlCRV9UZXN0UHJlcGFyZUFkZHJl
c3NIb3N0bmFtZSBUZXN0UHJlcGFyZUFkZHJlc3NIb3N0bmFtZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnJlcXVlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9z
dHVucmVxdWVzdC5jYwppbmRleCA1NjQxMGJlYTA4OWQ5YjI2OWUyZmZlMjE2ZjdjYzlhZDQ0Nzc3
MjRjLi5lZGJhNGQ2OGU1NGJjMjBhMGVmM2ZkNDY2YTg0ZTVjOWQzNjMyZmNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVu
cmVxdWVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9zdHVucmVxdWVzdC5jYwpAQCAtMTgsNyArMTgsNyBAQAogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiICAvLyBGb3IgVGltZU1pbGxpcwogCiBu
YW1lc3BhY2UgY3JpY2tldCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5zZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVuc2VydmVyLmNjCmluZGV4
IDAwZWFjZjE3YmM5ZTE5YTZhZWJlN2VmYzJjZWU2MTVkYTRlNmE0NGQuLjk1ZjBjZWJlMGE3MGQ4
OGNmMDM5Yzg1NWFmZjI1NDQxODIxNTZiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5zZXJ2ZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnNlcnZl
ci5jYwpAQCAtMjksNyArMjksNyBAQCB2b2lkIFN0dW5TZXJ2ZXI6Ok9uUGFja2V0KHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRk
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNr
ZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiAvKiBw
YWNrZXRfdGltZV91cyAqLykgewogICAvLyBQYXJzZSB0aGUgU1RVTiBtZXNzYWdlOyBlYXQgYW55
IG1lc3NhZ2VzIHRoYXQgZmFpbCB0byBwYXJzZS4KICAgcnRjOjpCeXRlQnVmZmVyUmVhZGVyIGJi
dWYoYnVmLCBzaXplKTsKICAgU3R1bk1lc3NhZ2UgbXNnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnNlcnZlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnNl
cnZlci5oCmluZGV4IDkwMTZkMDZjMjBhY2E4ZDkxODYwOTY5YjFiNmExYTU1OWJkYzg4ZmEuLjAw
NjFkMzgyYmMxNDkyNTI0MDY0YTIzZjcyMGY4YzJiZDNiNzI2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5zZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS9zdHVuc2VydmVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgU3R1blNlcnZlciA6IHB1Ymxp
YyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnVm
LAogICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgY29uc3QgaW50NjRf
dCYgcGFja2V0X3RpbWVfdXMpOwogCiAgIC8vIEhhbmRsZXJzIGZvciB0aGUgZGlmZmVyZW50IHR5
cGVzIG9mIFNUVU4vVFVSTiByZXF1ZXN0czoKICAgdmlydHVhbCB2b2lkIE9uQmluZGluZ1JlcXVl
c3QoU3R1bk1lc3NhZ2UqIG1zZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjCmluZGV4IGM2NmM3
MzA3Mzc1ZTAzZmI4OTc0YjkwYTBlZjJiZjkyMDg0YjdmODMuLjBkN2FlYTlkNjBhNDgzZjE1YzI1
MTFjMWEwYTA1ZjhjNzkyZGJkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYwpAQCAtMzA3
LDcgKzMwNyw3IEBAIHZvaWQgVENQUG9ydDo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRh
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90
aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRf
dGltZV91cykgewogICBQb3J0OjpPblJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIs
IFBST1RPX1RDUCk7CiB9CiAKQEAgLTU0NSw5ICs1NDUsOSBAQCB2b2lkIFRDUENvbm5lY3Rpb246
Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGlt
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFj
a2V0X3RpbWVfdXMpIHsKICAgUlRDX0RDSEVDSyhzb2NrZXQgPT0gc29ja2V0Xy5nZXQoKSk7Ci0g
IENvbm5lY3Rpb246Ok9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBwYWNrZXRfdGltZSk7CisgIENv
bm5lY3Rpb246Ok9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBwYWNrZXRfdGltZV91cyk7CiB9CiAK
IHZvaWQgVENQQ29ubmVjdGlvbjo6T25SZWFkeVRvU2VuZChydGM6OkFzeW5jUGFja2V0U29ja2V0
KiBzb2NrZXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuaAppbmRleCBmYTVjOTU4YzIxYzI2M2Ji
YjRiMWVhMDE5YjhhMTcwYmZhN2FkNjk3Li40ZDA2YTY1MDdjMzUzNDIxZWFjY2U5MTMyYTllMzFk
ZDE2MjhjMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5oCkBAIC0xNSw2ICsxNSw3IEBACiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgImFic2wvbWVt
b3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInAycC9iYXNlL3BvcnQuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9hc3luY3BhY2tldHNvY2tldC5oIgogCkBAIC0zMCwxNiArMzEsMTggQEAgY2xhc3MgVENQ
Q29ubmVjdGlvbjsKIC8vIGNhbGwgdGhpcyBUQ1BQb3J0OjpPblJlYWRQYWNrZXQgKDMgYXJnKSB0
byBkaXNwYXRjaCB0byBhIGNvbm5lY3Rpb24uCiBjbGFzcyBUQ1BQb3J0IDogcHVibGljIFBvcnQg
ewogIHB1YmxpYzoKLSAgc3RhdGljIFRDUFBvcnQqIENyZWF0ZShydGM6OlRocmVhZCogdGhyZWFk
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogZmFj
dG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdvcmssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWluX3BvcnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDE2X3QgbWF4X3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGFsbG93X2xpc3RlbikgewotICAgIHJldHVybiBuZXcgVENQUG9ydCh0aHJlYWQsIGZhY3Rvcnks
IG5ldHdvcmssIG1pbl9wb3J0LCBtYXhfcG9ydCwgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgIHBhc3N3b3JkLCBhbGxvd19saXN0ZW4pOworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFRDUFBvcnQ+IENyZWF0ZShydGM6OlRocmVhZCogdGhyZWFkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3Rvcnks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29yayog
bmV0d29yaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2
X3QgbWluX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQxNl90IG1heF9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGxvd19saXN0ZW4pIHsKKyAgICAv
LyBVc2luZyBgbmV3YCB0byBhY2Nlc3MgYSBub24tcHVibGljIGNvbnN0cnVjdG9yLgorICAgIHJl
dHVybiBhYnNsOjpXcmFwVW5pcXVlKG5ldyBUQ1BQb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29y
aywgbWluX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4
X3BvcnQsIHVzZXJuYW1lLCBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbGxvd19saXN0ZW4pKTsKICAgfQogICB+VENQUG9ydCgpIG92ZXJyaWRlOwog
CkBAIC05MSw3ICs5NCw3IEBAIGNsYXNzIFRDUFBvcnQgOiBwdWJsaWMgUG9ydCB7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzaXplLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJl
bW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBh
Y2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3Rp
bWVfdXMpOwogCiAgIHZvaWQgT25TZW50UGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNv
Y2tldCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTZW50UGFja2V0JiBzZW50X3Bh
Y2tldCkgb3ZlcnJpZGU7CkBAIC0xNTksNyArMTYyLDcgQEAgY2xhc3MgVENQQ29ubmVjdGlvbiA6
IHB1YmxpYyBDb25uZWN0aW9uIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQgT25SZWFkeVRvU2Vu
ZChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXRfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydF91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3Rj
cHBvcnRfdW5pdHRlc3QuY2MKaW5kZXggZWYzMDJmOTAyNjAzMmQwNDMyMGJkMWNjMDhlZmU3MDA1
OTgwNTRlZS4uMzQzODVhN2Y5YmVlNjk0MDg0Y2RiNWI2MzY0ZGRlZTYxY2Q3MzAxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
dGNwcG9ydF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0X3VuaXR0ZXN0LmNjCkBAIC0xNCw2ICsxNCw3IEBA
CiAjaW5jbHVkZSAicDJwL2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0b3J5LmgiCiAjaW5jbHVk
ZSAicDJwL2Jhc2UvdGNwcG9ydC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNw
b3J0ZGVzY3JpcHRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5jYwppbmRleCBhZDI5YTExOTllN2Q1
MzFiMDg3ZDBjMGEyNmNjZThlOTFkYjQ5OTEzLi4zNzdhNGMzZWVlMzI3ODU0MTY2ZTIyZTBhN2Rh
ZTQxOTZjOTVhYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNj
cmlwdGlvbi5jYwpAQCAtMTAsOSArMTAsOSBAQAogCiAjaW5jbHVkZSAicDJwL2Jhc2UvdHJhbnNw
b3J0ZGVzY3JpcHRpb24uaCIKIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2lu
Y2x1ZGUgInAycC9iYXNlL3AycGNvbnN0YW50cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5
c2l6ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKIG5hbWVzcGFjZSBj
cmlja2V0IHsKIApAQCAtMjIsNyArMjIsNyBAQCBib29sIFN0cmluZ1RvQ29ubmVjdGlvblJvbGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHJvbGVfc3RyLCBDb25uZWN0aW9uUm9sZSogcm9sZSkgewogICAg
ICAgQ09OTkVDVElPTlJPTEVfQUNUUEFTU19TVFIsIENPTk5FQ1RJT05ST0xFX0hPTERDT05OX1NU
Un07CiAKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUocm9sZXMpOyArK2kpIHsK
LSAgICBpZiAoX3N0cmljbXAocm9sZXNbaV0sIHJvbGVfc3RyLmNfc3RyKCkpID09IDApIHsKKyAg
ICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShyb2xlc1tpXSwgcm9sZV9zdHIpKSB7CiAgICAg
ICAqcm9sZSA9IHN0YXRpY19jYXN0PENvbm5lY3Rpb25Sb2xlPihDT05ORUNUSU9OUk9MRV9BQ1RJ
VkUgKyBpKTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2Ny
aXB0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5oCmluZGV4IDNiZmZkZjk3MWEwZTkzNmYyMDA4MTE2
M2M5ODkzZmNmYmRkYzRkZGMuLjJhYjk3MzI3OGZhZjcyYWE2MDM0ZDg4MzQ4M2QwZTg1NzczMGZm
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uaApA
QCAtNjcsMTEgKzY3LDEzIEBAIHN0cnVjdCBJY2VQYXJhbWV0ZXJzIHsKICAgICAgICAgICAgICAg
ICBib29sIGljZV9yZW5vbWluYXRpb24pCiAgICAgICA6IHVmcmFnKGljZV91ZnJhZyksIHB3ZChp
Y2VfcHdkKSwgcmVub21pbmF0aW9uKGljZV9yZW5vbWluYXRpb24pIHt9CiAKLSAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEljZVBhcmFtZXRlcnMmIG90aGVyKSB7CisgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBJY2VQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QgewogICAgIHJldHVybiB1ZnJhZyA9PSBv
dGhlci51ZnJhZyAmJiBwd2QgPT0gb3RoZXIucHdkICYmCiAgICAgICAgICAgIHJlbm9taW5hdGlv
biA9PSBvdGhlci5yZW5vbWluYXRpb247CiAgIH0KLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElj
ZVBhcmFtZXRlcnMmIG90aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICBib29s
IG9wZXJhdG9yIT0oY29uc3QgSWNlUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CisgIH0KIH07CiAKIGV4dGVybiBjb25zdCBjaGFyIENPTk5F
Q1RJT05ST0xFX0FDVElWRV9TVFJbXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uZmFjdG9y
eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3RyYW5zcG9ydGRlc2NyaXB0aW9uZmFjdG9yeS5jYwppbmRleCA2MTg3MjZlODQxMTY0YzA5NmFl
MDUwODljNTRkMTVlYzE3NDVkMDQ2Li42ODljZDRmN2EyZDBiZGM3ZjA1MWYzYTQ0Y2E3NTBhOTZh
ZmU2MGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnkuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVz
Y3JpcHRpb25mYWN0b3J5LmNjCkBAIC0yNywxMyArMjcsMTUgQEAgVHJhbnNwb3J0RGVzY3JpcHRp
b25GYWN0b3J5Ojp+VHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5KCkgPSBkZWZhdWx0OwogCiBU
cmFuc3BvcnREZXNjcmlwdGlvbiogVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVP
ZmZlcigKICAgICBjb25zdCBUcmFuc3BvcnRPcHRpb25zJiBvcHRpb25zLAotICAgIGNvbnN0IFRy
YW5zcG9ydERlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uKSBjb25zdCB7CisgICAgY29u
c3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24sCisgICAgSWNlQ3Jl
ZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIHN0ZDo6dW5pcXVl
X3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYyhuZXcgVHJhbnNwb3J0RGVzY3JpcHRpb24o
KSk7CiAKICAgLy8gR2VuZXJhdGUgdGhlIElDRSBjcmVkZW50aWFscyBpZiB3ZSBkb24ndCBhbHJl
YWR5IGhhdmUgdGhlbS4KICAgaWYgKCFjdXJyZW50X2Rlc2NyaXB0aW9uIHx8IG9wdGlvbnMuaWNl
X3Jlc3RhcnQpIHsKLSAgICBkZXNjLT5pY2VfdWZyYWcgPSBydGM6OkNyZWF0ZVJhbmRvbVN0cmlu
ZyhJQ0VfVUZSQUdfTEVOR1RIKTsKLSAgICBkZXNjLT5pY2VfcHdkID0gcnRjOjpDcmVhdGVSYW5k
b21TdHJpbmcoSUNFX1BXRF9MRU5HVEgpOworICAgIEljZVBhcmFtZXRlcnMgY3JlZGVudGlhbHMg
PSBpY2VfY3JlZGVudGlhbHMtPkdldEljZUNyZWRlbnRpYWxzKCk7CisgICAgZGVzYy0+aWNlX3Vm
cmFnID0gY3JlZGVudGlhbHMudWZyYWc7CisgICAgZGVzYy0+aWNlX3B3ZCA9IGNyZWRlbnRpYWxz
LnB3ZDsKICAgfSBlbHNlIHsKICAgICBkZXNjLT5pY2VfdWZyYWcgPSBjdXJyZW50X2Rlc2NyaXB0
aW9uLT5pY2VfdWZyYWc7CiAgICAgZGVzYy0+aWNlX3B3ZCA9IGN1cnJlbnRfZGVzY3JpcHRpb24t
PmljZV9wd2Q7CkBAIC01OSw3ICs2MSw4IEBAIFRyYW5zcG9ydERlc2NyaXB0aW9uKiBUcmFuc3Bv
cnREZXNjcmlwdGlvbkZhY3Rvcnk6OkNyZWF0ZUFuc3dlcigKICAgICBjb25zdCBUcmFuc3BvcnRE
ZXNjcmlwdGlvbiogb2ZmZXIsCiAgICAgY29uc3QgVHJhbnNwb3J0T3B0aW9ucyYgb3B0aW9ucywK
ICAgICBib29sIHJlcXVpcmVfdHJhbnNwb3J0X2F0dHJpYnV0ZXMsCi0gICAgY29uc3QgVHJhbnNw
b3J0RGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24pIGNvbnN0IHsKKyAgICBjb25zdCBU
cmFuc3BvcnREZXNjcmlwdGlvbiogY3VycmVudF9kZXNjcmlwdGlvbiwKKyAgICBJY2VDcmVkZW50
aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0IHsKICAgLy8gVE9ETyhqdWJlcnRp
KTogRmlndXJlIG91dCB3aHkgd2UgZ2V0IE5VTEwgb2ZmZXJzLCBhbmQgZml4IHRoaXMgdXBzdHJl
YW0uCiAgIGlmICghb2ZmZXIpIHsKICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQg
dG8gY3JlYXRlIFRyYW5zcG9ydERlc2NyaXB0aW9uIGFuc3dlciAiCkBAIC03MSw4ICs3NCw5IEBA
IFRyYW5zcG9ydERlc2NyaXB0aW9uKiBUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3Rvcnk6OkNyZWF0
ZUFuc3dlcigKICAgLy8gR2VuZXJhdGUgdGhlIElDRSBjcmVkZW50aWFscyBpZiB3ZSBkb24ndCBh
bHJlYWR5IGhhdmUgdGhlbSBvciBpY2UgaXMKICAgLy8gYmVpbmcgcmVzdGFydGVkLgogICBpZiAo
IWN1cnJlbnRfZGVzY3JpcHRpb24gfHwgb3B0aW9ucy5pY2VfcmVzdGFydCkgewotICAgIGRlc2Mt
PmljZV91ZnJhZyA9IHJ0Yzo6Q3JlYXRlUmFuZG9tU3RyaW5nKElDRV9VRlJBR19MRU5HVEgpOwot
ICAgIGRlc2MtPmljZV9wd2QgPSBydGM6OkNyZWF0ZVJhbmRvbVN0cmluZyhJQ0VfUFdEX0xFTkdU
SCk7CisgICAgSWNlUGFyYW1ldGVycyBjcmVkZW50aWFscyA9IGljZV9jcmVkZW50aWFscy0+R2V0
SWNlQ3JlZGVudGlhbHMoKTsKKyAgICBkZXNjLT5pY2VfdWZyYWcgPSBjcmVkZW50aWFscy51ZnJh
ZzsKKyAgICBkZXNjLT5pY2VfcHdkID0gY3JlZGVudGlhbHMucHdkOwogICB9IGVsc2UgewogICAg
IGRlc2MtPmljZV91ZnJhZyA9IGN1cnJlbnRfZGVzY3JpcHRpb24tPmljZV91ZnJhZzsKICAgICBk
ZXNjLT5pY2VfcHdkID0gY3VycmVudF9kZXNjcmlwdGlvbi0+aWNlX3B3ZDsKQEAgLTExNiw4ICsx
MjAsOCBAQCBib29sIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeTo6U2V0U2VjdXJpdHlJbmZv
KFRyYW5zcG9ydERlc2NyaXB0aW9uKiBkZXNjLAogICAvLyBUaGlzIGRpZ2VzdCBhbGdvcml0aG0g
aXMgdXNlZCB0byBwcm9kdWNlIHRoZSBhPWZpbmdlcnByaW50IGxpbmVzIGluIFNEUC4KICAgLy8g
UkZDIDQ1NzIgU2VjdGlvbiA1IHJlcXVpcmVzIHRoYXQgdGhvc2UgbGluZXMgdXNlIHRoZSBzYW1l
IGhhc2ggZnVuY3Rpb24gYXMKICAgLy8gdGhlIGNlcnRpZmljYXRlJ3Mgc2lnbmF0dXJlLCB3aGlj
aCBpcyB3aGF0IENyZWF0ZUZyb21DZXJ0aWZpY2F0ZSBkb2VzLgotICBkZXNjLT5pZGVudGl0eV9m
aW5nZXJwcmludC5yZXNldCgKLSAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21D
ZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZV8pKTsKKyAgZGVzYy0+aWRlbnRpdHlfZmluZ2VycHJpbnQg
PQorICAgICAgcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKCpjZXJ0
aWZpY2F0ZV8pOwogICBpZiAoIWRlc2MtPmlkZW50aXR5X2ZpbmdlcnByaW50KSB7CiAgICAgcmV0
dXJuIGZhbHNlOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnkuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9y
dGRlc2NyaXB0aW9uZmFjdG9yeS5oCmluZGV4IDkzN2M1ZmExZmVhNGEyMWZhYWNjYmY1ZTUxOTVl
MzJiZjJkMTBiM2UuLmRjMTQ3NmE4MGY1MDcxYjkwNjhjMDE0YzI3ZmQxMzRjZDRkZDk3MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uZmFj
dG9yeS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFAyUF9CQVNFX1RSQU5TUE9SVERFU0NS
SVBUSU9ORkFDVE9SWV9IXwogI2RlZmluZSBQMlBfQkFTRV9UUkFOU1BPUlRERVNDUklQVElPTkZB
Q1RPUllfSF8KIAorI2luY2x1ZGUgInAycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJwMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3J0Y2NlcnRpZmljYXRlLmgiCiAKQEAgLTU0LDcgKzU1LDggQEAgY2xhc3MgVHJhbnNw
b3J0RGVzY3JpcHRpb25GYWN0b3J5IHsKICAgLy8gQ3JlYXRlcyBhIHRyYW5zcG9ydCBkZXNjcmlw
dGlvbiBzdWl0YWJsZSBmb3IgdXNlIGluIGFuIG9mZmVyLgogICBUcmFuc3BvcnREZXNjcmlwdGlv
biogQ3JlYXRlT2ZmZXIoCiAgICAgICBjb25zdCBUcmFuc3BvcnRPcHRpb25zJiBvcHRpb25zLAot
ICAgICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24pIGNv
bnN0OworICAgICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRp
b24sCisgICAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0
OwogICAvLyBDcmVhdGUgYSB0cmFuc3BvcnQgZGVzY3JpcHRpb24gdGhhdCBpcyBhIHJlc3BvbnNl
IHRvIGFuIG9mZmVyLgogICAvLwogICAvLyBJZiB8cmVxdWlyZV90cmFuc3BvcnRfYXR0cmlidXRl
c3wgaXMgdHJ1ZSwgdGhlbiBUUkFOU1BPUlQgY2F0ZWdvcnkKQEAgLTY2LDcgKzY4LDggQEAgY2xh
c3MgVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5IHsKICAgICAgIGNvbnN0IFRyYW5zcG9ydERl
c2NyaXB0aW9uKiBvZmZlciwKICAgICAgIGNvbnN0IFRyYW5zcG9ydE9wdGlvbnMmIG9wdGlvbnMs
CiAgICAgICBib29sIHJlcXVpcmVfdHJhbnNwb3J0X2F0dHJpYnV0ZXMsCi0gICAgICBjb25zdCBU
cmFuc3BvcnREZXNjcmlwdGlvbiogY3VycmVudF9kZXNjcmlwdGlvbikgY29uc3Q7CisgICAgICBj
b25zdCBUcmFuc3BvcnREZXNjcmlwdGlvbiogY3VycmVudF9kZXNjcmlwdGlvbiwKKyAgICAgIElj
ZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3Q7CiAKICBwcml2YXRl
OgogICBib29sIFNldFNlY3VyaXR5SW5mbyhUcmFuc3BvcnREZXNjcmlwdGlvbiogZGVzY3JpcHRp
b24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnlfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRk
ZXNjcmlwdGlvbmZhY3RvcnlfdW5pdHRlc3QuY2MKaW5kZXggYTdjMzRiNTZhMDRkMzVjNmRmOTBi
MDhkYWU5NDNjZjg3OTM1MWRlZC4uYzQ2NjMwYWNlMjE5MmYxNTg2YTc2Y2UzZWE2MzcwZTk2YzE2
Y2JjNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5X3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5z
cG9ydGRlc2NyaXB0aW9uZmFjdG9yeV91bml0dGVzdC5jYwpAQCAtMjYsNyArMjYsOCBAQCB1c2lu
ZyBjcmlja2V0OjpUcmFuc3BvcnRPcHRpb25zOwogY2xhc3MgVHJhbnNwb3J0RGVzY3JpcHRpb25G
YWN0b3J5VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICBwdWJsaWM6CiAgIFRyYW5zcG9y
dERlc2NyaXB0aW9uRmFjdG9yeVRlc3QoKQotICAgICAgOiBjZXJ0MV8ocnRjOjpSVENDZXJ0aWZp
Y2F0ZTo6Q3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTElkZW50aXR5PigKKyAgICAgIDog
aWNlX2NyZWRlbnRpYWxzXyh7fSksCisgICAgICAgIGNlcnQxXyhydGM6OlJUQ0NlcnRpZmljYXRl
OjpDcmVhdGUoc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMSWRlbnRpdHk+KAogICAgICAgICAgICAg
bmV3IHJ0Yzo6RmFrZVNTTElkZW50aXR5KCJVc2VyMSIpKSkpLAogICAgICAgICBjZXJ0Ml8ocnRj
OjpSVENDZXJ0aWZpY2F0ZTo6Q3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTElkZW50aXR5
PigKICAgICAgICAgICAgIG5ldyBydGM6OkZha2VTU0xJZGVudGl0eSgiVXNlcjIiKSkpKSB7fQpA
QCAtNjQsMjEgKzY1LDIyIEBAIGNsYXNzIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgU2V0RHRscyhkdGxzKTsKICAgICBjcmlja2V0
OjpUcmFuc3BvcnRPcHRpb25zIG9wdGlvbnM7CiAgICAgLy8gVGhlIGluaXRpYWwgb2ZmZXIgLyBh
bnN3ZXIgZXhjaGFuZ2UuCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9u
PiBvZmZlcihmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgTlVMTCkpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gb2ZmZXIoCisgICAgICAgIGYxXy5DcmVhdGVPZmZl
cihvcHRpb25zLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gYW5zd2VyKAotICAgICAgICBmMl8uQ3JlYXRlQW5zd2Vy
KG9mZmVyLmdldCgpLCBvcHRpb25zLCB0cnVlLCBOVUxMKSk7CisgICAgICAgIGYyXy5DcmVhdGVB
bnN3ZXIob2ZmZXIuZ2V0KCksIG9wdGlvbnMsIHRydWUsIE5VTEwsICZpY2VfY3JlZGVudGlhbHNf
KSk7CiAKICAgICAvLyBDcmVhdGUgYW4gdXBkYXRlZCBvZmZlciB3aGVyZSB3ZSByZXN0YXJ0IGlj
ZS4KICAgICBvcHRpb25zLmljZV9yZXN0YXJ0ID0gdHJ1ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHJhbnNwb3J0RGVzY3JpcHRpb24+IHJlc3RhcnRfb2ZmZXIoCi0gICAgICAgIGYxXy5DcmVhdGVP
ZmZlcihvcHRpb25zLCBvZmZlci5nZXQoKSkpOworICAgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0
aW9ucywgb2ZmZXIuZ2V0KCksICZpY2VfY3JlZGVudGlhbHNfKSk7CiAKICAgICBWZXJpZnlVZnJh
Z0FuZFBhc3N3b3JkQ2hhbmdlZChkdGxzLCBvZmZlci5nZXQoKSwgcmVzdGFydF9vZmZlci5nZXQo
KSk7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgYW5zd2VyLiBUaGUgdHJhbnNwb3J0IHVmcmFnIGFu
ZCBwYXNzd29yZCBpcyBjaGFuZ2VkIHNpbmNlCiAgICAgLy8gfG9wdGlvbnMuaWNlX3Jlc3RhcnQg
PT0gdHJ1ZXwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IHJlc3Rh
cnRfYW5zd2VyKAotICAgICAgICBmMl8uQ3JlYXRlQW5zd2VyKHJlc3RhcnRfb2ZmZXIuZ2V0KCks
IG9wdGlvbnMsIHRydWUsIGFuc3dlci5nZXQoKSkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFu
c3BvcnREZXNjcmlwdGlvbj4gcmVzdGFydF9hbnN3ZXIoZjJfLkNyZWF0ZUFuc3dlcigKKyAgICAg
ICAgcmVzdGFydF9vZmZlci5nZXQoKSwgb3B0aW9ucywgdHJ1ZSwgYW5zd2VyLmdldCgpLCAmaWNl
X2NyZWRlbnRpYWxzXykpOwogICAgIEFTU0VSVF9UUlVFKHJlc3RhcnRfYW5zd2VyLmdldCgpICE9
IE5VTEwpOwogCiAgICAgVmVyaWZ5VWZyYWdBbmRQYXNzd29yZENoYW5nZWQoZHRscywgYW5zd2Vy
LmdldCgpLCByZXN0YXJ0X2Fuc3dlci5nZXQoKSk7CkBAIC0xMDgsMTkgKzExMCwyMCBAQCBjbGFz
cyBUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
ewogICAgIGNyaWNrZXQ6OlRyYW5zcG9ydE9wdGlvbnMgb3B0aW9uczsKICAgICAvLyBUaGUgaW5p
dGlhbCBvZmZlciAvIGFuc3dlciBleGNoYW5nZS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNw
b3J0RGVzY3JpcHRpb24+IG9mZmVyKAotICAgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywg
bnVsbHB0cikpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gYW5z
d2VyKAotICAgICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBvcHRpb25zLCB0cnVl
LCBudWxscHRyKSk7CisgICAgICAgIGYxXy5DcmVhdGVPZmZlcihvcHRpb25zLCBudWxscHRyLCAm
aWNlX2NyZWRlbnRpYWxzXykpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlw
dGlvbj4gYW5zd2VyKGYyXy5DcmVhdGVBbnN3ZXIoCisgICAgICAgIG9mZmVyLmdldCgpLCBvcHRp
b25zLCB0cnVlLCBudWxscHRyLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICAgIFZlcmlmeVJlbm9t
aW5hdGlvbihvZmZlci5nZXQoKSwgZmFsc2UpOwogICAgIFZlcmlmeVJlbm9taW5hdGlvbihhbnN3
ZXIuZ2V0KCksIGZhbHNlKTsKIAogICAgIG9wdGlvbnMuZW5hYmxlX2ljZV9yZW5vbWluYXRpb24g
PSB0cnVlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gcmVub21p
bmF0aW9uX29mZmVyKAotICAgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgb2ZmZXIuZ2V0
KCkpKTsKKyAgICAgICAgZjFfLkNyZWF0ZU9mZmVyKG9wdGlvbnMsIG9mZmVyLmdldCgpLCAmaWNl
X2NyZWRlbnRpYWxzXykpOwogICAgIFZlcmlmeVJlbm9taW5hdGlvbihyZW5vbWluYXRpb25fb2Zm
ZXIuZ2V0KCksIHRydWUpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0
aW9uPiByZW5vbWluYXRpb25fYW5zd2VyKGYyXy5DcmVhdGVBbnN3ZXIoCi0gICAgICAgIHJlbm9t
aW5hdGlvbl9vZmZlci5nZXQoKSwgb3B0aW9ucywgdHJ1ZSwgYW5zd2VyLmdldCgpKSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiByZW5vbWluYXRpb25fYW5zd2Vy
KAorICAgICAgICBmMl8uQ3JlYXRlQW5zd2VyKHJlbm9taW5hdGlvbl9vZmZlci5nZXQoKSwgb3B0
aW9ucywgdHJ1ZSwgYW5zd2VyLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICZpY2Vf
Y3JlZGVudGlhbHNfKSk7CiAgICAgVmVyaWZ5UmVub21pbmF0aW9uKHJlbm9taW5hdGlvbl9hbnN3
ZXIuZ2V0KCksIHRydWUpOwogICB9CiAKQEAgLTE0NSw2ICsxNDgsNyBAQCBjbGFzcyBUcmFuc3Bv
cnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIH0K
ICAgfQogCisgIGNyaWNrZXQ6OkljZUNyZWRlbnRpYWxzSXRlcmF0b3IgaWNlX2NyZWRlbnRpYWxz
XzsKICAgVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5IGYxXzsKICAgVHJhbnNwb3J0RGVzY3Jp
cHRpb25GYWN0b3J5IGYyXzsKIApAQCAtMTU0LDcgKzE1OCw3IEBAIGNsYXNzIFRyYW5zcG9ydERl
c2NyaXB0aW9uRmFjdG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAKIFRFU1RfRihU
cmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0T2ZmZXJEZWZhdWx0KSB7CiAgIHN0
ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYygKLSAgICAgIGYxXy5DcmVh
dGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwpKTsKKyAgICAgIGYxXy5DcmVhdGVPZmZl
cihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIENoZWNr
RGVzYyhkZXNjLmdldCgpLCAiIiwgIiIsICIiLCAiIik7CiB9CiAKQEAgLTE2MywxMyArMTY3LDEz
IEBAIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0T2ZmZXJEdGxz
KSB7CiAgIGYxXy5zZXRfY2VydGlmaWNhdGUoY2VydDFfKTsKICAgc3RkOjpzdHJpbmcgZGlnZXN0
X2FsZzsKICAgQVNTRVJUX1RSVUUoCi0gICAgICBjZXJ0MV8tPnNzbF9jZXJ0aWZpY2F0ZSgpLkdl
dFNpZ25hdHVyZURpZ2VzdEFsZ29yaXRobSgmZGlnZXN0X2FsZykpOworICAgICAgY2VydDFfLT5H
ZXRTU0xDZXJ0aWZpY2F0ZSgpLkdldFNpZ25hdHVyZURpZ2VzdEFsZ29yaXRobSgmZGlnZXN0X2Fs
ZykpOwogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRlc2MoCi0gICAg
ICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMKSk7CisgICAgICBmMV8u
Q3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykp
OwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIiLCAiIiwgZGlnZXN0X2FsZyk7CiAgIC8v
IEVuc3VyZSBpdCBhbHNvIHdvcmtzIHdpdGggU0VDX1JFUVVJUkVELgogICBmMV8uc2V0X3NlY3Vy
ZShjcmlja2V0OjpTRUNfUkVRVUlSRUQpOwotICBkZXNjLnJlc2V0KGYxXy5DcmVhdGVPZmZlcihU
cmFuc3BvcnRPcHRpb25zKCksIE5VTEwpKTsKKyAgZGVzYy5yZXNldChmMV8uQ3JlYXRlT2ZmZXIo
VHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBDaGVja0Rl
c2MoZGVzYy5nZXQoKSwgIiIsICIiLCAiIiwgZGlnZXN0X2FsZyk7CiB9CiAKQEAgLTE3Nyw3ICsx
ODEsNyBAQCBURVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdE9mZmVy
RHRscykgewogVEVTVF9GKFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RPZmZl
ckR0bHNXaXRoTm9JZGVudGl0eSkgewogICBmMV8uc2V0X3NlY3VyZShjcmlja2V0OjpTRUNfRU5B
QkxFRCk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYygKLSAg
ICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwpKTsKKyAgICAgIGYx
Xy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwsICZpY2VfY3JlZGVudGlhbHNf
KSk7CiAgIEFTU0VSVF9UUlVFKGRlc2MuZ2V0KCkgPT0gTlVMTCk7CiB9CiAKQEAgLTE4OCwzNiAr
MTkyLDM4IEBAIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0T2Zm
ZXJEdGxzUmVvZmZlckR0bHMpIHsKICAgZjFfLnNldF9jZXJ0aWZpY2F0ZShjZXJ0MV8pOwogICBz
dGQ6OnN0cmluZyBkaWdlc3RfYWxnOwogICBBU1NFUlRfVFJVRSgKLSAgICAgIGNlcnQxXy0+c3Ns
X2NlcnRpZmljYXRlKCkuR2V0U2lnbmF0dXJlRGlnZXN0QWxnb3JpdGhtKCZkaWdlc3RfYWxnKSk7
CisgICAgICBjZXJ0MV8tPkdldFNTTENlcnRpZmljYXRlKCkuR2V0U2lnbmF0dXJlRGlnZXN0QWxn
b3JpdGhtKCZkaWdlc3RfYWxnKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlw
dGlvbj4gb2xkX2Rlc2MoCi0gICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygp
LCBOVUxMKSk7CisgICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxM
LCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBBU1NFUlRfVFJVRShvbGRfZGVzYy5nZXQoKSAhPSBO
VUxMKTsKICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBkZXNjKAotICAg
ICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgb2xkX2Rlc2MuZ2V0KCkpKTsK
KyAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIG9sZF9kZXNjLmdldCgp
LCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsIG9sZF9k
ZXNjLT5pY2VfdWZyYWcsIG9sZF9kZXNjLT5pY2VfcHdkLCBkaWdlc3RfYWxnKTsKIH0KIAogVEVT
VF9GKFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RBbnN3ZXJEZWZhdWx0KSB7
CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gb2ZmZXIoCi0gICAgICBm
MV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMKSk7CisgICAgICBmMV8uQ3Jl
YXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwog
ICBBU1NFUlRfVFJVRShvZmZlci5nZXQoKSAhPSBOVUxMKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFRy
YW5zcG9ydERlc2NyaXB0aW9uPiBkZXNjKAotICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5n
ZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMKSk7CisgIHN0ZDo6dW5pcXVlX3B0
cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYyhmMl8uQ3JlYXRlQW5zd2VyKAorICAgICAgb2Zm
ZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCwgJmljZV9jcmVkZW50aWFs
c18pKTsKICAgQ2hlY2tEZXNjKGRlc2MuZ2V0KCksICIiLCAiIiwgIiIsICIiKTsKLSAgZGVzYy5y
ZXNldChmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRy
dWUsIE5VTEwpKTsKKyAgZGVzYy5yZXNldChmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBU
cmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIi
LCAiIiwgIiIpOwogfQogCiAvLyBUZXN0IHRoYXQgd2UgY2FuIHVwZGF0ZSBhbiBhbnN3ZXIgcHJv
cGVybHk7IElDRSBjcmVkZW50aWFscyBzaG91bGRuJ3QgY2hhbmdlLgogVEVTVF9GKFRyYW5zcG9y
dERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RSZWFuc3dlcikgewogICBzdGQ6OnVuaXF1ZV9w
dHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG9mZmVyKAotICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRy
YW5zcG9ydE9wdGlvbnMoKSwgTlVMTCkpOworICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9y
dE9wdGlvbnMoKSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQVNTRVJUX1RSVUUob2Zm
ZXIuZ2V0KCkgIT0gTlVMTCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlv
bj4gb2xkX2Rlc2MoCi0gICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBUcmFuc3Bv
cnRPcHRpb25zKCksIHRydWUsIE5VTEwpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERl
c2NyaXB0aW9uPiBvbGRfZGVzYyhmMl8uQ3JlYXRlQW5zd2VyKAorICAgICAgb2ZmZXIuZ2V0KCks
IFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAg
QVNTRVJUX1RSVUUob2xkX2Rlc2MuZ2V0KCkgIT0gTlVMTCk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxU
cmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYygKLSAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIu
Z2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgb2xkX2Rlc2MuZ2V0KCkpKTsKKyAgICAg
IGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwg
b2xkX2Rlc2MuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICZpY2VfY3JlZGVudGlhbHNf
KSk7CiAgIEFTU0VSVF9UUlVFKGRlc2MuZ2V0KCkgIT0gTlVMTCk7CiAgIENoZWNrRGVzYyhkZXNj
LmdldCgpLCAiIiwgb2xkX2Rlc2MtPmljZV91ZnJhZywgb2xkX2Rlc2MtPmljZV9wd2QsICIiKTsK
IH0KQEAgLTIyNywxMCArMjMzLDEwIEBAIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3Rv
cnlUZXN0LCBUZXN0QW5zd2VyRHRsc1RvTm9EdGxzKSB7CiAgIGYxXy5zZXRfc2VjdXJlKGNyaWNr
ZXQ6OlNFQ19FTkFCTEVEKTsKICAgZjFfLnNldF9jZXJ0aWZpY2F0ZShjZXJ0MV8pOwogICBzdGQ6
OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG9mZmVyKAotICAgICAgZjFfLkNyZWF0
ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCkpOworICAgICAgZjFfLkNyZWF0ZU9mZmVy
KFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQVNTRVJU
X1RSVUUob2ZmZXIuZ2V0KCkgIT0gTlVMTCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnRE
ZXNjcmlwdGlvbj4gZGVzYygKLSAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRy
YW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNw
b3J0RGVzY3JpcHRpb24+IGRlc2MoZjJfLkNyZWF0ZUFuc3dlcigKKyAgICAgIG9mZmVyLmdldCgp
LCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7CiAg
IENoZWNrRGVzYyhkZXNjLmdldCgpLCAiIiwgIiIsICIiLCAiIik7CiB9CiAKQEAgLTI0MCwxMyAr
MjQ2LDE0IEBAIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0QW5z
d2VyTm9EdGxzVG9EdGxzKSB7CiAgIGYyXy5zZXRfc2VjdXJlKGNyaWNrZXQ6OlNFQ19FTkFCTEVE
KTsKICAgZjJfLnNldF9jZXJ0aWZpY2F0ZShjZXJ0Ml8pOwogICBzdGQ6OnVuaXF1ZV9wdHI8VHJh
bnNwb3J0RGVzY3JpcHRpb24+IG9mZmVyKAotICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9y
dE9wdGlvbnMoKSwgTlVMTCkpOworICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlv
bnMoKSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQVNTRVJUX1RSVUUob2ZmZXIuZ2V0
KCkgIT0gTlVMTCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVz
YygKLSAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMo
KSwgdHJ1ZSwgTlVMTCkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+
IGRlc2MoZjJfLkNyZWF0ZUFuc3dlcigKKyAgICAgIG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRp
b25zKCksIHRydWUsIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIENoZWNrRGVzYyhkZXNj
LmdldCgpLCAiIiwgIiIsICIiLCAiIik7CiAgIGYyXy5zZXRfc2VjdXJlKGNyaWNrZXQ6OlNFQ19S
RVFVSVJFRCk7Ci0gIGRlc2MucmVzZXQoZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgVHJh
bnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMKSk7CisgIGRlc2MucmVzZXQoZjJfLkNyZWF0ZUFu
c3dlcihvZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQVNTRVJUX1RS
VUUoZGVzYy5nZXQoKSA9PSBOVUxMKTsKIH0KIApAQCAtMjYyLDE2ICsyNjksMTcgQEAgVEVTVF9G
KFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RBbnN3ZXJEdGxzVG9EdGxzKSB7
CiAgIC8vIGFuc3dlciBtdXN0IGNvbnRhaW4gZmluZ2VycHJpbnQgbGluZXMgd2l0aCBjZXJ0Ml8n
cyBkaWdlc3QgYWxnb3JpdGhtLgogICBzdGQ6OnN0cmluZyBkaWdlc3RfYWxnMjsKICAgQVNTRVJU
X1RSVUUoCi0gICAgICBjZXJ0Ml8tPnNzbF9jZXJ0aWZpY2F0ZSgpLkdldFNpZ25hdHVyZURpZ2Vz
dEFsZ29yaXRobSgmZGlnZXN0X2FsZzIpKTsKKyAgICAgIGNlcnQyXy0+R2V0U1NMQ2VydGlmaWNh
dGUoKS5HZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG0oJmRpZ2VzdF9hbGcyKSk7CiAKICAgc3Rk
Ojp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBvZmZlcigKLSAgICAgIGYxXy5DcmVh
dGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwpKTsKKyAgICAgIGYxXy5DcmVhdGVPZmZl
cihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIEFTU0VS
VF9UUlVFKG9mZmVyLmdldCgpICE9IE5VTEwpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0
RGVzY3JpcHRpb24+IGRlc2MoCi0gICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBU
cmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFRyYW5z
cG9ydERlc2NyaXB0aW9uPiBkZXNjKGYyXy5DcmVhdGVBbnN3ZXIoCisgICAgICBvZmZlci5nZXQo
KSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwog
ICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIiLCAiIiwgZGlnZXN0X2FsZzIpOwogICBmMl8u
c2V0X3NlY3VyZShjcmlja2V0OjpTRUNfUkVRVUlSRUQpOwotICBkZXNjLnJlc2V0KGYyXy5DcmVh
dGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCkpOwor
ICBkZXNjLnJlc2V0KGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlv
bnMoKSwgdHJ1ZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpY2VfY3Jl
ZGVudGlhbHNfKSk7CiAgIENoZWNrRGVzYyhkZXNjLmdldCgpLCAiIiwgIiIsICIiLCBkaWdlc3Rf
YWxnMik7CiB9CiAKQEAgLTMwNCw5ICszMTIsMzYgQEAgVEVTVF9GKFRyYW5zcG9ydERlc2NyaXB0
aW9uRmFjdG9yeVRlc3QsIFRlc3RJY2VSZW5vbWluYXRpb25XaXRoRHRscykgewogVEVTVF9GKFRy
YW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIEFkZHNUcmlja2xlSWNlT3B0aW9uKSB7CiAg
IGNyaWNrZXQ6OlRyYW5zcG9ydE9wdGlvbnMgb3B0aW9uczsKICAgc3RkOjp1bmlxdWVfcHRyPFRy
YW5zcG9ydERlc2NyaXB0aW9uPiBvZmZlcigKLSAgICAgIGYxXy5DcmVhdGVPZmZlcihvcHRpb25z
LCBudWxscHRyKSk7CisgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgbnVsbHB0ciwgJmlj
ZV9jcmVkZW50aWFsc18pKTsKICAgRVhQRUNUX1RSVUUob2ZmZXItPkhhc09wdGlvbigidHJpY2ts
ZSIpKTsKICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBhbnN3ZXIoCi0g
ICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBvcHRpb25zLCB0cnVlLCBudWxscHRy
KSk7CisgICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBvcHRpb25zLCB0cnVlLCBu
dWxscHRyLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBFWFBFQ1RfVFJVRShhbnN3ZXItPkhhc09w
dGlvbigidHJpY2tsZSIpKTsKIH0KKworLy8gVGVzdCBDcmVhdGVPZmZlciB3aXRoIEljZUNyZWRl
bnRpYWxzSXRlcmF0b3IuCitURVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCwg
Q3JlYXRlT2ZmZXJJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKSB7CisgIHN0ZDo6dmVjdG9yPGNyaWNr
ZXQ6OkljZVBhcmFtZXRlcnM+IGNyZWRlbnRpYWxzID0geworICAgICAgY3JpY2tldDo6SWNlUGFy
YW1ldGVycygia2FsbGUiLCAiYW5rYSIsIGZhbHNlKX07CisgIGNyaWNrZXQ6OkljZUNyZWRlbnRp
YWxzSXRlcmF0b3IgY3JlZGVudGlhbHNJdGVyYXRvcihjcmVkZW50aWFscyk7CisgIGNyaWNrZXQ6
OlRyYW5zcG9ydE9wdGlvbnMgb3B0aW9uczsKKyAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERl
c2NyaXB0aW9uPiBvZmZlcigKKyAgICAgIGYxXy5DcmVhdGVPZmZlcihvcHRpb25zLCBudWxscHRy
LCAmY3JlZGVudGlhbHNJdGVyYXRvcikpOworICBFWFBFQ1RfRVEob2ZmZXItPkdldEljZVBhcmFt
ZXRlcnMoKS51ZnJhZywgY3JlZGVudGlhbHNbMF0udWZyYWcpOworICBFWFBFQ1RfRVEob2ZmZXIt
PkdldEljZVBhcmFtZXRlcnMoKS5wd2QsIGNyZWRlbnRpYWxzWzBdLnB3ZCk7Cit9CisKKy8vIFRl
c3QgQ3JlYXRlQW5zd2VyIHdpdGggSWNlQ3JlZGVudGlhbHNJdGVyYXRvci4KK1RFU1RfRihUcmFu
c3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBDcmVhdGVBbnN3ZXJJY2VDcmVkZW50aWFsc0l0
ZXJhdG9yKSB7CisgIGNyaWNrZXQ6OlRyYW5zcG9ydE9wdGlvbnMgb3B0aW9uczsKKyAgc3RkOjp1
bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBvZmZlcigKKyAgICAgIGYxXy5DcmVhdGVP
ZmZlcihvcHRpb25zLCBudWxscHRyLCAmaWNlX2NyZWRlbnRpYWxzXykpOworCisgIHN0ZDo6dmVj
dG9yPGNyaWNrZXQ6OkljZVBhcmFtZXRlcnM+IGNyZWRlbnRpYWxzID0geworICAgICAgY3JpY2tl
dDo6SWNlUGFyYW1ldGVycygia2FsbGUiLCAiYW5rYSIsIGZhbHNlKX07CisgIGNyaWNrZXQ6Oklj
ZUNyZWRlbnRpYWxzSXRlcmF0b3IgY3JlZGVudGlhbHNJdGVyYXRvcihjcmVkZW50aWFscyk7Cisg
IHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gYW5zd2VyKGYxXy5DcmVhdGVB
bnN3ZXIoCisgICAgICBvZmZlci5nZXQoKSwgb3B0aW9ucywgZmFsc2UsIG51bGxwdHIsICZjcmVk
ZW50aWFsc0l0ZXJhdG9yKSk7CisgIEVYUEVDVF9FUShhbnN3ZXItPkdldEljZVBhcmFtZXRlcnMo
KS51ZnJhZywgY3JlZGVudGlhbHNbMF0udWZyYWcpOworICBFWFBFQ1RfRVEoYW5zd2VyLT5HZXRJ
Y2VQYXJhbWV0ZXJzKCkucHdkLCBjcmVkZW50aWFsc1swXS5wd2QpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNw
b3J0ZmFjdG9yeWludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZmFjdG9yeWludGVyZmFjZS5oCmluZGV4IGNlMzJl
ZTg0ODNlZGViN2VlMmYwODQ1NzgzMjMwMjRhYTc4M2E2N2UuLjk4MDVkYjAwNWNjMDIxNTVmYmQy
MmRmNmNlZGVhMDNiMDI0MDk5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGZhY3RvcnlpbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90
cmFuc3BvcnRmYWN0b3J5aW50ZXJmYWNlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgVHJhbnNw
b3J0RmFjdG9yeUludGVyZmFjZSB7CiAKICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8RHRsc1Ry
YW5zcG9ydEludGVybmFsPiBDcmVhdGVEdGxzVHJhbnNwb3J0KAogICAgICAgc3RkOjp1bmlxdWVf
cHRyPEljZVRyYW5zcG9ydEludGVybmFsPiBpY2UsCi0gICAgICBjb25zdCBydGM6OkNyeXB0b09w
dGlvbnMmIGNyeXB0b19vcHRpb25zKSA9IDA7CisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09w
dGlvbnMmIGNyeXB0b19vcHRpb25zKSA9IDA7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tl
dApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvdHVybnBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS90dXJucG9ydC5jYwppbmRleCA5NzU0MWY2MGMwMmRkOWI3NDJkN2Rl
ZjIyYzM1MDlmYmJiODRiMjExLi5lYjBhZGZhM2NlNGUxZGI5OTBjMzAzOTcyYTZjMGU4NTU4NzA5
M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS90dXJucG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJucG9ydC5jYwpAQCAtMjQsNyArMjQsNiBAQAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9uZXRoZWxwZXJz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1
aWxkZXIuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewpAQCAtNjIzLDcgKzYyMiw3IEBAIGJvb2wg
VHVyblBvcnQ6OkhhbmRsZUluY29taW5nUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNv
Y2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRh
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVz
cyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIGlmIChzb2NrZXQgIT0g
c29ja2V0XykgewogICAgIC8vIFRoZSBwYWNrZXQgd2FzIHJlY2VpdmVkIG9uIGEgc2hhcmVkIHNv
Y2tldCBhZnRlciB3ZSd2ZSBhbGxvY2F0ZWQgYSBuZXcKICAgICAvLyBzb2NrZXQgZm9yIHRoaXMg
VFVSTiBwb3J0LgpAQCAtNjYwLDEyICs2NTksMTIgQEAgYm9vbCBUdXJuUG9ydDo6SGFuZGxlSW5j
b21pbmdQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAvLyBhIHJlc3Bv
bnNlIHRvIGEgcHJldmlvdXMgcmVxdWVzdC4KICAgdWludDE2X3QgbXNnX3R5cGUgPSBydGM6Okdl
dEJFMTYoZGF0YSk7CiAgIGlmIChJc1R1cm5DaGFubmVsRGF0YShtc2dfdHlwZSkpIHsKLSAgICBI
YW5kbGVDaGFubmVsRGF0YShtc2dfdHlwZSwgZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWUpOworICAg
IEhhbmRsZUNoYW5uZWxEYXRhKG1zZ190eXBlLCBkYXRhLCBzaXplLCBwYWNrZXRfdGltZV91cyk7
CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICBpZiAobXNnX3R5cGUgPT0gVFVSTl9EQVRBX0lO
RElDQVRJT04pIHsKLSAgICBIYW5kbGVEYXRhSW5kaWNhdGlvbihkYXRhLCBzaXplLCBwYWNrZXRf
dGltZSk7CisgICAgSGFuZGxlRGF0YUluZGljYXRpb24oZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWVf
dXMpOwogICAgIHJldHVybiB0cnVlOwogICB9CiAKQEAgLTY5Niw4ICs2OTUsOCBAQCB2b2lkIFR1
cm5Qb3J0OjpPblJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7Ci0gIEhhbmRs
ZUluY29taW5nUGFja2V0KHNvY2tldCwgZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsIHBhY2tldF90
aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRf
dGltZV91cykgeworICBIYW5kbGVJbmNvbWluZ1BhY2tldChzb2NrZXQsIGRhdGEsIHNpemUsIHJl
bW90ZV9hZGRyLCBwYWNrZXRfdGltZV91cyk7CiB9CiAKIHZvaWQgVHVyblBvcnQ6Ok9uU2VudFBh
Y2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCkBAIC05MzMsNyArOTMyLDcgQEAg
dm9pZCBUdXJuUG9ydDo6T25BbGxvY2F0ZVJlcXVlc3RUaW1lb3V0KCkgewogCiB2b2lkIFR1cm5Q
b3J0OjpIYW5kbGVEYXRhSW5kaWNhdGlvbihjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3Vz
KSB7CiAgIC8vIFJlYWQgaW4gdGhlIG1lc3NhZ2UsIGFuZCBwcm9jZXNzIGFjY29yZGluZyB0byBS
RkM1NzY2LCBTZWN0aW9uIDEwLjQuCiAgIHJ0Yzo6Qnl0ZUJ1ZmZlclJlYWRlciBidWYoZGF0YSwg
c2l6ZSk7CiAgIFR1cm5NZXNzYWdlIG1zZzsKQEAgLTk3MiwxMyArOTcxLDEzIEBAIHZvaWQgVHVy
blBvcnQ6OkhhbmRsZURhdGFJbmRpY2F0aW9uKGNvbnN0IGNoYXIqIGRhdGEsCiAgIH0KIAogICBE
aXNwYXRjaFBhY2tldChkYXRhX2F0dHItPmJ5dGVzKCksIGRhdGFfYXR0ci0+bGVuZ3RoKCksIGV4
dF9hZGRyLCBQUk9UT19VRFAsCi0gICAgICAgICAgICAgICAgIHBhY2tldF90aW1lKTsKKyAgICAg
ICAgICAgICAgICAgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIFR1cm5Qb3J0OjpIYW5kbGVD
aGFubmVsRGF0YShpbnQgY2hhbm5lbF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgLy8gUmVhZCB0aGUgbWVzc2FnZSwgYW5k
IHByb2Nlc3MgYWNjb3JkaW5nIHRvIFJGQzU3NjYsIFNlY3Rpb24gMTEuNi4KICAgLy8gICAgMCAg
ICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgICAg
MwogICAvLyAgICAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIg
MyA0IDUgNiA3IDggOSAwIDEKQEAgLTEwMTQsMTYgKzEwMTMsMTYgQEAgdm9pZCBUdXJuUG9ydDo6
SGFuZGxlQ2hhbm5lbERhdGEoaW50IGNoYW5uZWxfaWQsCiAgIH0KIAogICBEaXNwYXRjaFBhY2tl
dChkYXRhICsgVFVSTl9DSEFOTkVMX0hFQURFUl9TSVpFLCBsZW4sIGVudHJ5LT5hZGRyZXNzKCks
Ci0gICAgICAgICAgICAgICAgIFBST1RPX1VEUCwgcGFja2V0X3RpbWUpOworICAgICAgICAgICAg
ICAgICBQUk9UT19VRFAsIHBhY2tldF90aW1lX3VzKTsKIH0KIAogdm9pZCBUdXJuUG9ydDo6RGlz
cGF0Y2hQYWNrZXQoY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFByb3RvY29sVHlwZSBwcm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgaWYgKENvbm5lY3Rpb24qIGNv
bm4gPSBHZXRDb25uZWN0aW9uKHJlbW90ZV9hZGRyKSkgewotICAgIGNvbm4tPk9uUmVhZFBhY2tl
dChkYXRhLCBzaXplLCBwYWNrZXRfdGltZSk7CisgICAgY29ubi0+T25SZWFkUGFja2V0KGRhdGEs
IHNpemUsIHBhY2tldF90aW1lX3VzKTsKICAgfSBlbHNlIHsKICAgICBQb3J0OjpPblJlYWRQYWNr
ZXQoZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsIHByb3RvKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnBvcnQu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1
cm5wb3J0LmgKaW5kZXggMTFiNThkNGY2Yzk5ZmFhOTQyOGI4MjViYWM2N2FlODYzY2QxZDNhYS4u
NWRiMTk1NmE5YjFhZmE3Y2E2NDdjMjZlYjMyMGU1ZjRiMzZhOTUwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnBvcnQu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS90dXJucG9ydC5oCkBAIC0xNCwxMCArMTQsMTIgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2lu
Y2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUg
ImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInAycC9iYXNlL3BvcnQuaCIKICNpbmNs
dWRlICJwMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2FzeW5jaW52b2tlci5oIgpAQCAtNTAsMjUgKzUyLDQ0IEBAIGNsYXNzIFR1cm5Qb3J0IDogcHVi
bGljIFBvcnQgewogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhY2tldHMuCiAgIH07CiAg
IC8vIENyZWF0ZSBhIFRVUk4gcG9ydCB1c2luZyB0aGUgc2hhcmVkIFVEUCBzb2NrZXQsIHxzb2Nr
ZXR8LgotICBzdGF0aWMgVHVyblBvcnQqIENyZWF0ZShydGM6OlRocmVhZCogdGhyZWFkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3Rvcnks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsICAvLyBp
Y2UgdXNlcm5hbWUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBwYXNzd29yZCwgIC8vIGljZSBwYXNzd29yZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUHJvdG9jb2xBZGRyZXNzJiBzZXJ2ZXJfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUmVsYXlDcmVkZW50aWFscyYgY3JlZGVudGlhbHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzZXJ2ZXJfcHJpb3JpdHksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHdlYnJ0Yzo6VHVybkN1c3RvbWl6ZXIqIGN1c3RvbWl6ZXIpIHsKLSAgICByZXR1cm4gbmV3
IFR1cm5Qb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgc29ja2V0LCB1c2VybmFtZSwgcGFz
c3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfYWRkcmVzcywgY3JlZGVudGlh
bHMsIHNlcnZlcl9wcmlvcml0eSwgb3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgY3Vz
dG9taXplcik7CisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VHVyblBvcnQ+IENyZWF0ZSgKKyAg
ICAgIHJ0Yzo6VGhyZWFkKiB0aHJlYWQsCisgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3Rvcnkq
IGZhY3RvcnksCisgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdvcmssCisgICAgICBydGM6OkFzeW5j
UGFja2V0U29ja2V0KiBzb2NrZXQsCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUs
ICAvLyBpY2UgdXNlcm5hbWUuCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQsICAv
LyBpY2UgcGFzc3dvcmQuCisgICAgICBjb25zdCBQcm90b2NvbEFkZHJlc3MmIHNlcnZlcl9hZGRy
ZXNzLAorICAgICAgY29uc3QgUmVsYXlDcmVkZW50aWFscyYgY3JlZGVudGlhbHMsCisgICAgICBp
bnQgc2VydmVyX3ByaW9yaXR5LAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9yaWdpbiwKKyAg
ICAgIHdlYnJ0Yzo6VHVybkN1c3RvbWl6ZXIqIGN1c3RvbWl6ZXIpIHsKKyAgICAvLyBVc2luZyBg
bmV3YCB0byBhY2Nlc3MgYSBub24tcHVibGljIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiBhYnNs
OjpXcmFwVW5pcXVlKG5ldyBUdXJuUG9ydCgKKyAgICAgICAgdGhyZWFkLCBmYWN0b3J5LCBuZXR3
b3JrLCBzb2NrZXQsIHVzZXJuYW1lLCBwYXNzd29yZCwgc2VydmVyX2FkZHJlc3MsCisgICAgICAg
IGNyZWRlbnRpYWxzLCBzZXJ2ZXJfcHJpb3JpdHksIG9yaWdpbiwgY3VzdG9taXplcikpOworICB9
CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92ZSBvbmNlIGRvd25zdHJlYW0gY2xpZW50cyBo
YXZlIG1vdmVkIHRvIHxDcmVhdGV8LgorICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFR1cm5Qb3J0
PiBDcmVhdGVVbmlxdWUoCisgICAgICBydGM6OlRocmVhZCogdGhyZWFkLAorICAgICAgcnRjOjpQ
YWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAorICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3Jr
LAorICAgICAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAorICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHVzZXJuYW1lLCAgLy8gaWNlIHVzZXJuYW1lLgorICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHBhc3N3b3JkLCAgLy8gaWNlIHBhc3N3b3JkLgorICAgICAgY29uc3QgUHJvdG9jb2xB
ZGRyZXNzJiBzZXJ2ZXJfYWRkcmVzcywKKyAgICAgIGNvbnN0IFJlbGF5Q3JlZGVudGlhbHMmIGNy
ZWRlbnRpYWxzLAorICAgICAgaW50IHNlcnZlcl9wcmlvcml0eSwKKyAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBvcmlnaW4sCisgICAgICB3ZWJydGM6OlR1cm5DdXN0b21pemVyKiBjdXN0b21pemVy
KSB7CisgICAgcmV0dXJuIENyZWF0ZSh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIHNvY2tldCwg
dXNlcm5hbWUsIHBhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgc2VydmVyX2FkZHJlc3MsIGNy
ZWRlbnRpYWxzLCBzZXJ2ZXJfcHJpb3JpdHksIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgIGN1
c3RvbWl6ZXIpOwogICB9CiAKICAgLy8gQ3JlYXRlIGEgVFVSTiBwb3J0IHRoYXQgd2lsbCB1c2Ug
YSBuZXcgc29ja2V0LCBib3VuZCB0byB8bmV0d29ya3wgYW5kCiAgIC8vIHVzaW5nIGEgcG9ydCBp
biB0aGUgcmFuZ2UgYmV0d2VlbiB8bWluX3BvcnR8IGFuZCB8bWF4X3BvcnR8LgotICBzdGF0aWMg
VHVyblBvcnQqIENyZWF0ZSgKKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUdXJuUG9ydD4gQ3Jl
YXRlKAogICAgICAgcnRjOjpUaHJlYWQqIHRocmVhZCwKICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0
RmFjdG9yeSogZmFjdG9yeSwKICAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKQEAgLTg0LDEw
ICsxMDUsMzQgQEAgY2xhc3MgVHVyblBvcnQgOiBwdWJsaWMgUG9ydCB7CiAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHRsc19lbGxpcHRpY19jdXJ2ZXMsCiAgICAgICB3ZWJy
dGM6OlR1cm5DdXN0b21pemVyKiBjdXN0b21pemVyLAogICAgICAgcnRjOjpTU0xDZXJ0aWZpY2F0
ZVZlcmlmaWVyKiB0bHNfY2VydF92ZXJpZmllciA9IG51bGxwdHIpIHsKLSAgICByZXR1cm4gbmV3
IFR1cm5Qb3J0KHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgbWluX3BvcnQsIG1heF9wb3J0LCB1
c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkLCBzZXJ2ZXJfYWRkcmVz
cywgY3JlZGVudGlhbHMsIHNlcnZlcl9wcmlvcml0eSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IG9yaWdpbiwgdGxzX2FscG5fcHJvdG9jb2xzLCB0bHNfZWxsaXB0aWNfY3VydmVzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgY3VzdG9taXplciwgdGxzX2NlcnRfdmVyaWZpZXIpOworICAgIC8v
IFVzaW5nIGBuZXdgIHRvIGFjY2VzcyBhIG5vbi1wdWJsaWMgY29uc3RydWN0b3IuCisgICAgcmV0
dXJuIGFic2w6OldyYXBVbmlxdWUoCisgICAgICAgIG5ldyBUdXJuUG9ydCh0aHJlYWQsIGZhY3Rv
cnksIG5ldHdvcmssIG1pbl9wb3J0LCBtYXhfcG9ydCwgdXNlcm5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICBwYXNzd29yZCwgc2VydmVyX2FkZHJlc3MsIGNyZWRlbnRpYWxzLCBzZXJ2ZXJfcHJp
b3JpdHksCisgICAgICAgICAgICAgICAgICAgICBvcmlnaW4sIHRsc19hbHBuX3Byb3RvY29scywg
dGxzX2VsbGlwdGljX2N1cnZlcywKKyAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZXIsIHRs
c19jZXJ0X3ZlcmlmaWVyKSk7CisgIH0KKyAgLy8gVE9ETyhzdGV2ZWFudG9uKTogUmVtb3ZlIG9u
Y2UgZG93bnN0cmVhbSBjbGllbnRzIGhhdmUgbW92ZWQgdG8gfENyZWF0ZXwuCisgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8VHVyblBvcnQ+IENyZWF0ZVVuaXF1ZSgKKyAgICAgIHJ0Yzo6VGhyZWFk
KiB0aHJlYWQsCisgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCisgICAg
ICBydGM6Ok5ldHdvcmsqIG5ldHdvcmssCisgICAgICB1aW50MTZfdCBtaW5fcG9ydCwKKyAgICAg
IHVpbnQxNl90IG1heF9wb3J0LAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLCAg
Ly8gaWNlIHVzZXJuYW1lLgorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLCAgLy8g
aWNlIHBhc3N3b3JkLgorICAgICAgY29uc3QgUHJvdG9jb2xBZGRyZXNzJiBzZXJ2ZXJfYWRkcmVz
cywKKyAgICAgIGNvbnN0IFJlbGF5Q3JlZGVudGlhbHMmIGNyZWRlbnRpYWxzLAorICAgICAgaW50
IHNlcnZlcl9wcmlvcml0eSwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCisgICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHRsc19hbHBuX3Byb3RvY29scywKKyAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdGxzX2VsbGlwdGljX2N1cnZlcywK
KyAgICAgIHdlYnJ0Yzo6VHVybkN1c3RvbWl6ZXIqIGN1c3RvbWl6ZXIsCisgICAgICBydGM6OlNT
TENlcnRpZmljYXRlVmVyaWZpZXIqIHRsc19jZXJ0X3ZlcmlmaWVyID0gbnVsbHB0cikgeworICAg
IHJldHVybiBDcmVhdGUodGhyZWFkLCBmYWN0b3J5LCBuZXR3b3JrLCBtaW5fcG9ydCwgbWF4X3Bv
cnQsIHVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgcGFzc3dvcmQsIHNlcnZlcl9hZGRyZXNz
LCBjcmVkZW50aWFscywgc2VydmVyX3ByaW9yaXR5LAorICAgICAgICAgICAgICAgICAgb3JpZ2lu
LCB0bHNfYWxwbl9wcm90b2NvbHMsIHRsc19lbGxpcHRpY19jdXJ2ZXMsIGN1c3RvbWl6ZXIsCisg
ICAgICAgICAgICAgICAgICB0bHNfY2VydF92ZXJpZmllcik7CiAgIH0KIAogICB+VHVyblBvcnQo
KSBvdmVycmlkZTsKQEAgLTEzMCwxMyArMTc1LDE0IEBAIGNsYXNzIFR1cm5Qb3J0IDogcHVibGlj
IFBvcnQgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1l
KSBvdmVycmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90
aW1lX3VzKSBvdmVycmlkZTsKICAgYm9vbCBDYW5IYW5kbGVJbmNvbWluZ1BhY2tldHNGcm9tKAog
ICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyKSBjb25zdCBvdmVycmlkZTsKICAg
dmlydHVhbCB2b2lkIE9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3Vz
KTsKIAogICB2b2lkIE9uU2VudFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQs
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgc2VudF9wYWNrZXQp
IG92ZXJyaWRlOwpAQCAtMjY4LDEzICszMTQsMTggQEAgY2xhc3MgVHVyblBvcnQgOiBwdWJsaWMg
UG9ydCB7CiAgIHZvaWQgT25BbGxvY2F0ZUVycm9yKCk7CiAgIHZvaWQgT25BbGxvY2F0ZVJlcXVl
c3RUaW1lb3V0KCk7CiAKLSAgdm9pZCBIYW5kbGVEYXRhSW5kaWNhdGlvbihjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKLSAgdm9pZCBIYW5kbGVDaGFubmVsRGF0YShpbnQg
Y2hhbm5lbF9pZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7Ci0gIHZvaWQg
RGlzcGF0Y2hQYWNrZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsCi0gICAgICBjb25z
dCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgUHJvdG9jb2xUeXBlIHBy
b3RvLCBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgdm9pZCBIYW5kbGVE
YXRhSW5kaWNhdGlvbihjb25zdCBjaGFyKiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFj
a2V0X3RpbWVfdXMpOworICB2b2lkIEhhbmRsZUNoYW5uZWxEYXRhKGludCBjaGFubmVsX2lkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBwYWNrZXRfdGltZV91cyk7CisgIHZvaWQgRGlzcGF0Y2hQYWNrZXQoY29uc3QgY2hhciogZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAorICAgICAgICAgICAg
ICAgICAgICAgIFByb3RvY29sVHlwZSBwcm90bywKKyAgICAgICAgICAgICAgICAgICAgICBpbnQ2
NF90IHBhY2tldF90aW1lX3VzKTsKIAogICBib29sIFNjaGVkdWxlUmVmcmVzaCh1aW50MzJfdCBs
aWZldGltZSk7CiAgIHZvaWQgU2VuZFJlcXVlc3QoU3R1blJlcXVlc3QqIHJlcXVlc3QsIGludCBk
ZWxheSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS90dXJucG9ydF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5wb3J0X3VuaXR0ZXN0LmNjCmluZGV4
IGJhYzM1ZTg5MWNkNDlkY2RlMGNhMzY5NDFjY2NiNmJjODllMmIwNDEuLjYxN2U3Nzk4YWRmNTNm
YWU1NDRlMDBjMTljNDQ0NjExY2M5ZGMzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5wb3J0X3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1
cm5wb3J0X3VuaXR0ZXN0LmNjCkBAIC0xOTQsMjMgKzE5NCwyMyBAQCBjbGFzcyBUdXJuUG9ydFRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgdm9pZCBPblR1cm5SZWFkUGFja2V0KENvbm5l
Y3Rpb24qIGNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgICAgdHVybl9wYWNrZXRzXy5w
dXNoX2JhY2socnRjOjpCdWZmZXIoZGF0YSwgc2l6ZSkpOwogICB9CiAgIHZvaWQgT25VZHBQb3J0
Q29tcGxldGUoUG9ydCogcG9ydCkgeyB1ZHBfcmVhZHlfID0gdHJ1ZTsgfQogICB2b2lkIE9uVWRw
UmVhZFBhY2tldChDb25uZWN0aW9uKiBjb25uLAogICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgICAgdWRw
X3BhY2tldHNfLnB1c2hfYmFjayhydGM6OkJ1ZmZlcihkYXRhLCBzaXplKSk7CiAgIH0KICAgdm9p
ZCBPblNvY2tldFJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cykgewogICAgIHR1cm5fcG9y
dF8tPkhhbmRsZUluY29taW5nUGFja2V0KHNvY2tldCwgZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lX3VzKTsKICAgfQog
ICB2b2lkIE9uVHVyblBvcnRDbG9zZWQoVHVyblBvcnQqIHBvcnQpIHsgdHVybl9wb3J0X2Nsb3Nl
ZF8gPSB0cnVlOyB9CiAgIHZvaWQgT25UdXJuUG9ydERlc3Ryb3llZChQb3J0SW50ZXJmYWNlKiBw
b3J0KSB7IHR1cm5fcG9ydF9kZXN0cm95ZWRfID0gdHJ1ZTsgfQpAQCAtMjcwLDEwICsyNzAsOSBA
QCBjbGFzcyBUdXJuUG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvdG9jb2xBZGRyZXNzJiBzZXJ2ZXJfYWRk
cmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIG9yaWdpbikgewogICAgIFJlbGF5Q3JlZGVudGlhbHMgY3JlZGVudGlhbHModXNlcm5hbWUs
IHBhc3N3b3JkKTsKLSAgICB0dXJuX3BvcnRfLnJlc2V0KFR1cm5Qb3J0OjpDcmVhdGUoCisgICAg
dHVybl9wb3J0XyA9IFR1cm5Qb3J0OjpDcmVhdGUoCiAgICAgICAgICZtYWluXywgJnNvY2tldF9m
YWN0b3J5XywgbmV0d29yaywgMCwgMCwga0ljZVVmcmFnMSwga0ljZVB3ZDEsCi0gICAgICAgIHNl
cnZlcl9hZGRyZXNzLCBjcmVkZW50aWFscywgMCwgb3JpZ2luLCBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4oKSwKLSAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCksIHR1cm5fY3VzdG9t
aXplcl8uZ2V0KCkpKTsKKyAgICAgICAgc2VydmVyX2FkZHJlc3MsIGNyZWRlbnRpYWxzLCAwLCBv
cmlnaW4sIHt9LCB7fSwgdHVybl9jdXN0b21pemVyXy5nZXQoKSk7CiAgICAgLy8gVGhpcyBUVVJO
IHBvcnQgd2lsbCBiZSB0aGUgY29udHJvbGxpbmcuCiAgICAgdHVybl9wb3J0Xy0+U2V0SWNlUm9s
ZShJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgICBDb25uZWN0U2lnbmFscygpOwpAQCAtMzAxLDEw
ICszMDAsMTAgQEAgY2xhc3MgVHVyblBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsCiAg
ICAgfQogCiAgICAgUmVsYXlDcmVkZW50aWFscyBjcmVkZW50aWFscyh1c2VybmFtZSwgcGFzc3dv
cmQpOwotICAgIHR1cm5fcG9ydF8ucmVzZXQoVHVyblBvcnQ6OkNyZWF0ZSgmbWFpbl8sICZzb2Nr
ZXRfZmFjdG9yeV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2VO
ZXR3b3JrKGtMb2NhbEFkZHIxKSwgc29ja2V0Xy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0ljZVVmcmFnMSwga0ljZVB3ZDEsIHNlcnZlcl9hZGRyZXNzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVkZW50aWFscywgMCwgc3Rk
OjpzdHJpbmcoKSwgbnVsbHB0cikpOworICAgIHR1cm5fcG9ydF8gPQorICAgICAgICBUdXJuUG9y
dDo6Q3JlYXRlKCZtYWluXywgJnNvY2tldF9mYWN0b3J5XywgTWFrZU5ldHdvcmsoa0xvY2FsQWRk
cjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF8uZ2V0KCksIGtJY2VVZnJhZzEs
IGtJY2VQd2QxLCBzZXJ2ZXJfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjcmVk
ZW50aWFscywgMCwgc3RkOjpzdHJpbmcoKSwgbnVsbHB0cik7CiAgICAgLy8gVGhpcyBUVVJOIHBv
cnQgd2lsbCBiZSB0aGUgY29udHJvbGxpbmcuCiAgICAgdHVybl9wb3J0Xy0+U2V0SWNlUm9sZShJ
Q0VST0xFX0NPTlRST0xMSU5HKTsKICAgICBDb25uZWN0U2lnbmFscygpOwpAQCAtMzI5LDkgKzMy
OCw5IEBAIGNsYXNzIFR1cm5Qb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICB2b2lk
IENyZWF0ZVVkcFBvcnQoKSB7IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOyB9CiAKICAgdm9p
ZCBDcmVhdGVVZHBQb3J0KGNvbnN0IFNvY2tldEFkZHJlc3MmIGFkZHJlc3MpIHsKLSAgICB1ZHBf
cG9ydF8ucmVzZXQoVURQUG9ydDo6Q3JlYXRlKAotICAgICAgICAmbWFpbl8sICZzb2NrZXRfZmFj
dG9yeV8sIE1ha2VOZXR3b3JrKGFkZHJlc3MpLCAwLCAwLCBrSWNlVWZyYWcyLAotICAgICAgICBr
SWNlUHdkMiwgc3RkOjpzdHJpbmcoKSwgZmFsc2UsIGFic2w6Om51bGxvcHQpKTsKKyAgICB1ZHBf
cG9ydF8gPSBVRFBQb3J0OjpDcmVhdGUoJm1haW5fLCAmc29ja2V0X2ZhY3RvcnlfLCBNYWtlTmV0
d29yayhhZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwga0lj
ZVVmcmFnMiwga0ljZVB3ZDIsIHN0ZDo6c3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZhbHNlLCBhYnNsOjpudWxsb3B0KTsKICAgICAvLyBVRFAgcG9ydCB3aWxsIGJl
IGNvbnRyb2xsZWQuCiAgICAgdWRwX3BvcnRfLT5TZXRJY2VSb2xlKElDRVJPTEVfQ09OVFJPTExF
RCk7CiAgICAgdWRwX3BvcnRfLT5TaWduYWxQb3J0Q29tcGxldGUuY29ubmVjdCh0aGlzLApAQCAt
MTAzMiw4ICsxMDMxLDcgQEAgVEVTVF9GKFR1cm5Qb3J0VGVzdCwgVGVzdFR1cm5BbGxvY2F0ZU1p
c21hdGNoKSB7CiAgIHN0ZDo6c3RyaW5nIHRlc3RfcGFja2V0ID0gIlRlc3QgcGFja2V0IjsKICAg
RVhQRUNUX0ZBTFNFKHR1cm5fcG9ydF8tPkhhbmRsZUluY29taW5nUGFja2V0KAogICAgICAgc29j
a2V0Xy5nZXQoKSwgdGVzdF9wYWNrZXQuZGF0YSgpLCB0ZXN0X3BhY2tldC5zaXplKCksCi0gICAg
ICBydGM6OlNvY2tldEFkZHJlc3Moa1R1cm5VZHBFeHRBZGRyLmlwYWRkcigpLCAwKSwKLSAgICAg
IHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSkpOworICAgICAgcnRjOjpTb2NrZXRBZGRyZXNzKGtU
dXJuVWRwRXh0QWRkci5pcGFkZHIoKSwgMCksIHJ0Yzo6VGltZU1pY3JvcygpKSk7CiB9CiAKIC8v
IFRlc3RzIHRoYXQgYSBzaGFyZWQtc29ja2V0LVR1cm5Qb3J0IGNyZWF0ZXMgaXRzIG93biBzb2Nr
ZXQgYWZ0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJuc2VydmVyLmNjCmluZGV4IDAyMjExM2U3ZTc0
NmEwYzU5MDc2YjhiMDYyY2IzMTA5OTJhOTRlMzAuLmE4YmI0MWM4N2E2YWNhZDJlMjg0YWE3ODMx
MDE1MzdmNzc3NGZmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnNlcnZlci5jYwpAQCAtMjQs
NyArMjQsNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRhcHRlcnMu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgi
CiAKQEAgLTE5OSw5ICsxOTgsMTAgQEAgdm9pZCBUdXJuU2VydmVyOjpPbkludGVybmFsU29ja2V0
Q2xvc2UocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogfQogCiB2b2lkIFR1cm5TZXJ2
ZXI6Ok9uSW50ZXJuYWxQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGlt
ZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLykgewogICBSVENfRENIRUNLKHRocmVhZF9j
aGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICAvLyBGYWlsIGlmIHRoZSBwYWNrZXQg
aXMgdG9vIHNtYWxsIHRvIGV2ZW4gY29udGFpbiBhIGNoYW5uZWwgaGVhZGVyLgogICBpZiAoc2l6
ZSA8IFRVUk5fQ0hBTk5FTF9IRUFERVJfU0laRSkgewpAQCAtODQyLDkgKzg0MiwxMCBAQCB2b2lk
IFR1cm5TZXJ2ZXJBbGxvY2F0aW9uOjpIYW5kbGVDaGFubmVsRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgewogCiB2b2lkIFR1cm5TZXJ2ZXJBbGxvY2F0aW9uOjpPbkV4dGVybmFs
UGFja2V0KAogICAgIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKLSAgICBjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwKKyAgICBjb25zdCBjaGFyKiBkYXRhLAorICAgIHNpemVf
dCBzaXplLAogICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICBjb25zdCBy
dGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgY29uc3QgaW50NjRfdCYgLyogcGFj
a2V0X3RpbWVfdXMgKi8pIHsKICAgUlRDX0RDSEVDSyhleHRlcm5hbF9zb2NrZXRfLmdldCgpID09
IHNvY2tldCk7CiAgIENoYW5uZWwqIGNoYW5uZWwgPSBGaW5kQ2hhbm5lbChhZGRyKTsKICAgaWYg
KGNoYW5uZWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIuaAppbmRleCBlN2Y4ODZjZjhm
YjU1M2RlMzQ5NGNiZTcyODEzYTlkODhkM2Y5ODRiLi5hZjUxMjUxYmJjZDBjZjAzOTg0ZjAzMWJi
MjcyODk3ZTM0M2U0MzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJuc2VydmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnNlcnZlci5oCkBAIC0xMDUs
OSArMTA1LDEwIEBAIGNsYXNzIFR1cm5TZXJ2ZXJBbGxvY2F0aW9uIDogcHVibGljIHJ0Yzo6TWVz
c2FnZUhhbmRsZXIsCiAgIHZvaWQgSGFuZGxlQ2hhbm5lbEJpbmRSZXF1ZXN0KGNvbnN0IFR1cm5N
ZXNzYWdlKiBtc2cpOwogCiAgIHZvaWQgT25FeHRlcm5hbFBhY2tldChydGM6OkFzeW5jUGFja2V0
U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpOwogCiAgIHN0YXRpYyBp
bnQgQ29tcHV0ZUxpZmV0aW1lKGNvbnN0IFR1cm5NZXNzYWdlKiBtc2cpOwogICBib29sIEhhc1Bl
cm1pc3Npb24oY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIpOwpAQCAtMjU2LDkgKzI1NywxMSBA
QCBjbGFzcyBUdXJuU2VydmVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKIAogIHBy
aXZhdGU6CiAgIHN0ZDo6c3RyaW5nIEdlbmVyYXRlTm9uY2UoaW50NjRfdCBub3cpIGNvbnN0Owot
ICB2b2lkIE9uSW50ZXJuYWxQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LCBj
b25zdCBjaGFyKiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsIGNv
bnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICB2b2lkIE9uSW50ZXJuYWxQ
YWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBh
ZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3Rp
bWVfdXMpOwogCiAgIHZvaWQgT25OZXdJbnRlcm5hbENvbm5lY3Rpb24ocnRjOjpBc3luY1NvY2tl
dCogc29ja2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJhbnNwb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJhbnNwb3J0LmNjCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjFlNWI4NzY5ZWU2ZGM2NmY1YTNiNzI0YjM3ZjgzMDRl
MTEwMjZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3VkcHRyYW5z
cG9ydC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogIENvcHlyaWdo
dCAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAq
LwotCi0jaW5jbHVkZSAicDJwL2Jhc2UvdWRwdHJhbnNwb3J0LmgiCi0KLSNpbmNsdWRlIDxzdHJp
bmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6Om1vdmUuCi0KLSNpbmNsdWRlICJy
dGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jdWRw
c29ja2V0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL25ldGhlbHBlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hl
Y2tlci5oIgotCi1uYW1lc3BhY2UgY3JpY2tldCB7Ci0KLVVkcFRyYW5zcG9ydDo6VWRwVHJhbnNw
b3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQp
Ci0gICAgOiB0cmFuc3BvcnRfbmFtZV8odHJhbnNwb3J0X25hbWUpLCBzb2NrZXRfKHN0ZDo6bW92
ZShzb2NrZXQpKSB7Ci0gIFJUQ19EQ0hFQ0soc29ja2V0Xyk7Ci0gIHNvY2tldF8tPlNpZ25hbFJl
YWRQYWNrZXQuY29ubmVjdCh0aGlzLCAmVWRwVHJhbnNwb3J0OjpPblNvY2tldFJlYWRQYWNrZXQp
OwotICBzb2NrZXRfLT5TaWduYWxTZW50UGFja2V0LmNvbm5lY3QodGhpcywgJlVkcFRyYW5zcG9y
dDo6T25Tb2NrZXRTZW50UGFja2V0KTsKLX0KLQotVWRwVHJhbnNwb3J0Ojp+VWRwVHJhbnNwb3J0
KCkgewotICBSVENfRENIRUNLX1JVTl9PTigmbmV0d29ya190aHJlYWRfY2hlY2tlcl8pOwotfQot
Ci1ydGM6OlNvY2tldEFkZHJlc3MgVWRwVHJhbnNwb3J0OjpHZXRMb2NhbEFkZHJlc3MoKSBjb25z
dCB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKCZuZXR3b3JrX3RocmVhZF9jaGVja2VyXyk7Ci0gIHJl
dHVybiBzb2NrZXRfLT5HZXRMb2NhbEFkZHJlc3MoKTsKLX0KLQotYm9vbCBVZHBUcmFuc3BvcnQ6
OlNldFJlbW90ZUFkZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyKSB7Ci0gIFJU
Q19EQ0hFQ0tfUlVOX09OKCZuZXR3b3JrX3RocmVhZF9jaGVja2VyXyk7Ci0gIGlmICghYWRkci5J
c0NvbXBsZXRlKCkpIHsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJSZW1vdGUgYWRkcmVz
cyBub3QgY29tcGxldGUuIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgLy8gVE9ETyhqb2hh
bik6IGNoZWNrIGZvciBpcHY0LCBvdGhlciBzZXR0aW5ncy4KLSAgYm9vbCBwcmV2X2Rlc3RpbmF0
aW9uX25pbCA9IHJlbW90ZV9hZGRyZXNzXy5Jc05pbCgpOwotICByZW1vdGVfYWRkcmVzc18gPSBh
ZGRyOwotICAvLyBHb2luZyBmcm9tICJkaWRuJ3QgaGF2ZSBkZXN0aW5hdGlvbiIgdG8gImhhdmUg
ZGVzdGluYXRpb24iIG9yIHZpY2UgdmVyc2EuCi0gIGlmIChwcmV2X2Rlc3RpbmF0aW9uX25pbCAh
PSByZW1vdGVfYWRkcmVzc18uSXNOaWwoKSkgewotICAgIFNpZ25hbFdyaXRhYmxlU3RhdGUodGhp
cyk7Ci0gICAgaWYgKHByZXZfZGVzdGluYXRpb25fbmlsKSB7Ci0gICAgICBTaWduYWxSZWFkeVRv
U2VuZCh0aGlzKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLXJ0Yzo6U29ja2V0
QWRkcmVzcyBVZHBUcmFuc3BvcnQ6OkdldFJlbW90ZUFkZHJlc3MoKSBjb25zdCB7Ci0gIFJUQ19E
Q0hFQ0tfUlVOX09OKCZuZXR3b3JrX3RocmVhZF9jaGVja2VyXyk7Ci0gIHJldHVybiByZW1vdGVf
YWRkcmVzc187Ci19Ci0KLWNvbnN0IHN0ZDo6c3RyaW5nJiBVZHBUcmFuc3BvcnQ6OnRyYW5zcG9y
dF9uYW1lKCkgY29uc3QgewotICByZXR1cm4gdHJhbnNwb3J0X25hbWVfOwotfQotCi1ib29sIFVk
cFRyYW5zcG9ydDo6cmVjZWl2aW5nKCkgY29uc3QgewotICAvLyBUT0RPKGpvaGFuKTogSW1wbGVt
ZW50IG1ldGhvZCBhbmQgc2lnbmFsLgotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBVZHBUcmFu
c3BvcnQ6OndyaXRhYmxlKCkgY29uc3QgewotICBSVENfRENIRUNLX1JVTl9PTigmbmV0d29ya190
aHJlYWRfY2hlY2tlcl8pOwotICByZXR1cm4gIXJlbW90ZV9hZGRyZXNzXy5Jc05pbCgpOwotfQot
Ci1pbnQgVWRwVHJhbnNwb3J0OjpTZW5kUGFja2V0KGNvbnN0IGNoYXIqIGRhdGEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0T3B0aW9ucyYgb3B0aW9ucywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7Ci0gIC8vIE5vIHRocmVhZF9jaGVja2VyIGluIGhp
Z2ggZnJlcXVlbmN5IG5ldHdvcmsgZnVuY3Rpb24uCi0gIGlmIChyZW1vdGVfYWRkcmVzc18uSXNO
aWwoKSkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlJlbW90ZSBhZGRyZXNzIG5vdCBz
ZXQuIjsKLSAgICBzZW5kX2Vycm9yXyA9IEVOT1RDT05OOwotICAgIHJldHVybiAtMTsKLSAgfQot
ICBpbnQgcmVzdWx0ID0KLSAgICAgIHNvY2tldF8tPlNlbmRUbygoY29uc3Qgdm9pZCopZGF0YSwg
bGVuLCByZW1vdGVfYWRkcmVzc18sIG9wdGlvbnMpOwotICBpZiAocmVzdWx0IDw9IDApIHsKLSAg
ICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICJTZW5kUGFja2V0KCkgIiA8PCByZXN1bHQ7Ci0gIH0K
LSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYWJzbDo6b3B0aW9uYWw8cnRjOjpOZXR3b3JrUm91dGU+
IFVkcFRyYW5zcG9ydDo6bmV0d29ya19yb3V0ZSgpIGNvbnN0IHsKLSAgcnRjOjpOZXR3b3JrUm91
dGUgbmV0d29ya19yb3V0ZTsKLSAgbmV0d29ya19yb3V0ZS5wYWNrZXRfb3ZlcmhlYWQgPQotICAg
ICAgLyprVWRwT3ZlcmhlYWQ9Ki84ICsgR2V0SXBPdmVyaGVhZChHZXRMb2NhbEFkZHJlc3MoKS5m
YW1pbHkoKSk7Ci0gIHJldHVybiBhYnNsOjpvcHRpb25hbDxydGM6Ok5ldHdvcmtSb3V0ZT4obmV0
d29ya19yb3V0ZSk7Ci19Ci0KLWludCBVZHBUcmFuc3BvcnQ6OlNldE9wdGlvbihydGM6OlNvY2tl
dDo6T3B0aW9uIG9wdCwgaW50IHZhbHVlKSB7Ci0gIHJldHVybiAwOwotfQotCi1pbnQgVWRwVHJh
bnNwb3J0OjpHZXRFcnJvcigpIHsKLSAgcmV0dXJuIHNlbmRfZXJyb3JfOwotfQotCi1ydGM6OlBh
Y2tldFRyYW5zcG9ydEludGVybmFsKiBVZHBUcmFuc3BvcnQ6OkdldEludGVybmFsKCkgewotICBy
ZXR1cm4gdGhpczsKLX0KLQotdm9pZCBVZHBUcmFuc3BvcnQ6Ok9uU29ja2V0UmVhZFBhY2tldChy
dGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0
X3RpbWUpIHsKLSAgLy8gTm8gdGhyZWFkX2NoZWNrZXIgaW4gaGlnaCBmcmVxdWVuY3kgbmV0d29y
ayBmdW5jdGlvbi4KLSAgU2lnbmFsUmVhZFBhY2tldCh0aGlzLCBkYXRhLCBsZW4sIHBhY2tldF90
aW1lLCAwKTsKLX0KLQotdm9pZCBVZHBUcmFuc3BvcnQ6Ok9uU29ja2V0U2VudFBhY2tldChydGM6
OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgcGFja2V0KSB7Ci0gIFJUQ19EQ0hFQ0tf
RVEoc29ja2V0Xy5nZXQoKSwgc29ja2V0KTsKLSAgU2lnbmFsU2VudFBhY2tldCh0aGlzLCBwYWNr
ZXQpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJhbnNwb3J0Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS91ZHB0
cmFuc3BvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZhNzk1ZjJlMWY5YTUw
NDExNDZmOGE5YWFkYmM2ZDY5OTAyNmU0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS91ZHB0cmFuc3BvcnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAK
LS8qCi0gKiAgQ29weXJpZ2h0IDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0g
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgUDJQX0JBU0VfVURQVFJBTlNQT1JUX0hfCi0j
ZGVmaW5lIFAyUF9CQVNFX1VEUFRSQU5TUE9SVF9IXwotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2lu
Y2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLSNpbmNs
dWRlICJhcGkvb3J0Yy91ZHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJwMnAvYmFz
ZS9wYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcGFj
a2V0c29ja2V0LmgiICAvLyBGb3IgUGFja2V0T3B0aW9ucy4KLSNpbmNsdWRlICJydGNfYmFzZS90
aHJlYWRfY2hlY2tlci5oIgotCi1uYW1lc3BhY2UgcnRjIHsKLWNsYXNzIEFzeW5jUGFja2V0U29j
a2V0Owotc3RydWN0IFBhY2tldFRpbWU7Ci1zdHJ1Y3QgU2VudFBhY2tldDsKLWNsYXNzIFNvY2tl
dEFkZHJlc3M7Ci19ICAvLyBuYW1lc3BhY2UgcnRjCi0KLW5hbWVzcGFjZSBjcmlja2V0IHsKLQot
Ly8gSW1wbGVtZW50YXRpb24gb2YgVWRwVHJhbnNwb3J0SW50ZXJmYWNlLgotLy8gVXNlZCBieSBP
cnRjRmFjdG9yeS4KLWNsYXNzIFVkcFRyYW5zcG9ydCA6IHB1YmxpYyBydGM6OlBhY2tldFRyYW5z
cG9ydEludGVybmFsLAotICAgICAgICAgICAgICAgICAgICAgcHVibGljIHdlYnJ0Yzo6VWRwVHJh
bnNwb3J0SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC8vIHx0cmFuc3BvcnRfbmFtZXwgaXMgb25s
eSB1c2VkIGZvciBpZGVudGlmaWNhdGlvbi9sb2dnaW5nLgotICAvLyB8c29ja2V0fCBtdXN0IGJl
IG5vbi1udWxsLgotICBVZHBUcmFuc3BvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9u
YW1lLAotICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2Nr
ZXQ+IHNvY2tldCk7Ci0gIH5VZHBUcmFuc3BvcnQoKSBvdmVycmlkZTsKLQotICAvLyBPdmVycmlk
ZXMgb2YgVWRwVHJhbnNwb3J0SW50ZXJmYWNlLCB1c2VkIGJ5IHRoZSBBUEkgY29uc3VtZXIuCi0g
IHJ0Yzo6U29ja2V0QWRkcmVzcyBHZXRMb2NhbEFkZHJlc3MoKSBjb25zdCBvdmVycmlkZTsKLSAg
Ym9vbCBTZXRSZW1vdGVBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcikgb3Zl
cnJpZGU7Ci0gIHJ0Yzo6U29ja2V0QWRkcmVzcyBHZXRSZW1vdGVBZGRyZXNzKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0KLSAgLy8gT3ZlcnJpZGVzIG9mIFBhY2tldFRyYW5zcG9ydEludGVybmFsLCB1c2Vk
IGJ5IHdlYnJ0YyBpbnRlcm5hbGx5LgotICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0X25h
bWUoKSBjb25zdCBvdmVycmlkZTsKLQotICBib29sIHJlY2VpdmluZygpIGNvbnN0IG92ZXJyaWRl
OwotCi0gIGJvb2wgd3JpdGFibGUoKSBjb25zdCBvdmVycmlkZTsKLQotICBpbnQgU2VuZFBhY2tl
dChjb25zdCBjaGFyKiBkYXRhLAotICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldE9wdGlvbnMmIG9wdGlvbnMsCi0gICAgICAgICAg
ICAgICAgIGludCBmbGFncykgb3ZlcnJpZGU7Ci0KLSAgaW50IFNldE9wdGlvbihydGM6OlNvY2tl
dDo6T3B0aW9uIG9wdCwgaW50IHZhbHVlKSBvdmVycmlkZTsKLQotICBpbnQgR2V0RXJyb3IoKSBv
dmVycmlkZTsKLQotICBhYnNsOjpvcHRpb25hbDxydGM6Ok5ldHdvcmtSb3V0ZT4gbmV0d29ya19y
b3V0ZSgpIGNvbnN0IG92ZXJyaWRlOwotCi0gcHJvdGVjdGVkOgotICBQYWNrZXRUcmFuc3BvcnRJ
bnRlcm5hbCogR2V0SW50ZXJuYWwoKSBvdmVycmlkZTsKLQotIHByaXZhdGU6Ci0gIHZvaWQgT25T
b2NrZXRSZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpT
b2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7Ci0gIHZvaWQgT25Tb2NrZXRTZW50UGFj
a2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpTZW50UGFja2V0JiBwYWNrZXQpOwotICBib29sIElzTG9jYWxDb25z
aXN0ZW50KCk7Ci0KLSAgc3RkOjpzdHJpbmcgdHJhbnNwb3J0X25hbWVfOwotICBpbnQgc2VuZF9l
cnJvcl8gPSAwOwotICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4gc29j
a2V0XzsKLSAgLy8gSWYgbm90IHNldCwgd2lsbCBiZSBhbiAibmlsIiBhZGRyZXNzICgiSXNOaWwi
IHJldHVybnMgdHJ1ZSkuCi0gIHJ0Yzo6U29ja2V0QWRkcmVzcyByZW1vdGVfYWRkcmVzc187Ci0g
IHJ0Yzo6VGhyZWFkQ2hlY2tlciBuZXR3b3JrX3RocmVhZF9jaGVja2VyXzsKLX07Ci0KLX0gIC8v
IG5hbWVzcGFjZSBjcmlja2V0Ci0KLSNlbmRpZiAgLy8gUDJQX0JBU0VfVURQVFJBTlNQT1JUX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS91ZHB0cmFuc3BvcnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS91ZHB0cmFuc3BvcnRfdW5pdHRlc3QuY2MKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZDM2NjU5NWY0MTZiODJjYTIyZTFiZGFkODkw
YmE3ODU3ZGZiZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRw
dHJhbnNwb3J0X3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8q
Ci0gKiAgQ29weXJpZ2h0IDIwMTYgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bGlzdD4K
LSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx2ZWN0b3I+
Ci0KLSNpbmNsdWRlICJwMnAvYmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3RvcnkuaCIKLSNpbmNs
dWRlICJwMnAvYmFzZS9wYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5oIgotI2luY2x1ZGUgInAycC9i
YXNlL3VkcHRyYW5zcG9ydC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcGFja2V0c29ja2V0
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9pcGFk
ZHJlc3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2Uvc29ja2V0c2VydmVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5oIgotCi1uYW1lc3BhY2UgY3Jp
Y2tldCB7Ci0KLWNvbnN0ZXhwciBpbnQga1RpbWVvdXRNcyA9IDEwMDAwOwotc3RhdGljIGNvbnN0
IHJ0Yzo6SVBBZGRyZXNzIGtJUHY0TG9jYWxIb3N0QWRkcmVzcyA9Ci0gICAgcnRjOjpJUEFkZHJl
c3MoMHg3RjAwMDAwMSk7ICAvLyAxMjcuMC4wLjEKLQotY2xhc3MgVWRwVHJhbnNwb3J0VGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewotIHB1
YmxpYzoKLSAgVWRwVHJhbnNwb3J0VGVzdCgpCi0gICAgICA6IHZpcnR1YWxfc29ja2V0X3NlcnZl
cl8obmV3IHJ0Yzo6VmlydHVhbFNvY2tldFNlcnZlcigpKSwKLSAgICAgICAgbmV0d29ya190aHJl
YWRfKHZpcnR1YWxfc29ja2V0X3NlcnZlcl8uZ2V0KCkpLAotICAgICAgICBlcDFfKCJOYW1lMSIs
Ci0gICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+KAot
ICAgICAgICAgICAgICAgICBzb2NrZXRfZmFjdG9yeV8uQ3JlYXRlVWRwU29ja2V0KAotICAgICAg
ICAgICAgICAgICAgICAgcnRjOjpTb2NrZXRBZGRyZXNzKHJ0Yzo6R2V0QW55SVAoQUZfSU5FVCks
IDApLAotICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgIDApKSks
Ci0gICAgICAgIGVwMl8oIk5hbWUyIiwKLSAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRj
OjpBc3luY1BhY2tldFNvY2tldD4oCi0gICAgICAgICAgICAgICAgIHNvY2tldF9mYWN0b3J5Xy5D
cmVhdGVVZHBTb2NrZXQoCi0gICAgICAgICAgICAgICAgICAgICBydGM6OlNvY2tldEFkZHJlc3Mo
cnRjOjpHZXRBbnlJUChBRl9JTkVUKSwgMCksCi0gICAgICAgICAgICAgICAgICAgICAwLAotICAg
ICAgICAgICAgICAgICAgICAgMCkpKSB7Ci0gICAgLy8gU2V0dXAgSVAgQWRkcmVzcyBmb3Igb3V0
Z29pbmcgcGFja2V0cyBmcm9tIHNvY2tldHMgYm91bmQgdG8gSVBWNAotICAgIC8vIElOQUREUl9B
TlkgKCIwLjAuMC4wLiIpLCBhcyB1c2VkIGFib3ZlIHdoZW4gY3JlYXRpbmcgdGhlIHZpcnR1YWwK
LSAgICAvLyBzb2NrZXRzLiBUaGUgdmlydHVhbCBzb2NrZXQgc2VydmVyIHNlbmRzIHRoZXNlIHBh
Y2tldHMgb25seSBpZiB0aGUKLSAgICAvLyBkZWZhdWx0IGFkZHJlc3MgaXMgZXhwbGljaXQgc2V0
LiBXaXRoIGEgcGh5c2ljYWwgc29ja2V0LCB0aGUgYWN0dWFsCi0gICAgLy8gbmV0d29yayBzdGFj
ayAvIG9wZXJhdGluZyBzeXN0ZW0gd291bGQgc2V0IHRoZSBJUCBhZGRyZXNzIGZvciBvdXRnb2lu
ZwotICAgIC8vIHBhY2tldHMuCi0gICAgdmlydHVhbF9zb2NrZXRfc2VydmVyXy0+U2V0RGVmYXVs
dFJvdXRlKGtJUHY0TG9jYWxIb3N0QWRkcmVzcyk7Ci0gIH0KLQotICBzdHJ1Y3QgRW5kcG9pbnQg
OiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewotICAgIGV4cGxpY2l0IEVuZHBvaW50KHN0
ZDo6c3RyaW5nIHRjaF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQpIHsKLSAgICAgIGNoXy5yZXNldChuZXcg
VWRwVHJhbnNwb3J0KHN0ZDo6bW92ZSh0Y2hfbmFtZSksIHN0ZDo6bW92ZShzb2NrZXQpKSk7Ci0g
ICAgICBjaF8tPlNpZ25hbFJlYWRQYWNrZXQuY29ubmVjdCh0aGlzLCAmRW5kcG9pbnQ6Ok9uUmVh
ZFBhY2tldCk7Ci0gICAgICBjaF8tPlNpZ25hbFNlbnRQYWNrZXQuY29ubmVjdCh0aGlzLCAmRW5k
cG9pbnQ6Ok9uU2VudFBhY2tldCk7Ci0gICAgICBjaF8tPlNpZ25hbFJlYWR5VG9TZW5kLmNvbm5l
Y3QodGhpcywgJkVuZHBvaW50OjpPblJlYWR5VG9TZW5kKTsKLSAgICAgIGNoXy0+U2lnbmFsV3Jp
dGFibGVTdGF0ZS5jb25uZWN0KHRoaXMsICZFbmRwb2ludDo6T25Xcml0YWJsZVN0YXRlKTsKLSAg
ICB9Ci0KLSAgICBib29sIENoZWNrRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKSB7Ci0g
ICAgICBib29sIHJldCA9IGZhbHNlOwotICAgICAgaWYgKCFjaF9wYWNrZXRzXy5lbXB0eSgpKSB7
Ci0gICAgICAgIHN0ZDo6c3RyaW5nIHBhY2tldCA9IGNoX3BhY2tldHNfLmZyb250KCk7Ci0gICAg
ICAgIHJldCA9IChwYWNrZXQgPT0gc3RkOjpzdHJpbmcoZGF0YSwgbGVuKSk7Ci0gICAgICAgIGNo
X3BhY2tldHNfLnBvcF9mcm9udCgpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJldDsKLSAgICB9
Ci0KLSAgICB2b2lkIE9uV3JpdGFibGVTdGF0ZShydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFs
KiB0cmFuc3BvcnQpIHsKLSAgICAgIG51bV9zaWdfd3JpdGFibGVfKys7Ci0gICAgfQotCi0gICAg
dm9pZCBPblJlYWR5VG9TZW5kKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9y
dCkgewotICAgICAgbnVtX3NpZ19yZWFkeV90b19zZW5kXysrOwotICAgIH0KLQotICAgIHZvaWQg
T25SZWFkUGFja2V0KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKLSAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAotICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRU
aW1lJiBwYWNrZXRfdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpIHsKLSAg
ICAgIG51bV9yZWNlaXZlZF9wYWNrZXRzXysrOwotICAgICAgUlRDX0xPRyhMU19WRVJCT1NFKSA8
PCAiT25SZWFkUGFja2V0ICh1bml0dGVzdCkiOwotICAgICAgY2hfcGFja2V0c18ucHVzaF9mcm9u
dChzdGQ6OnN0cmluZyhkYXRhLCBsZW4pKTsKLSAgICB9Ci0KLSAgICB2b2lkIE9uU2VudFBhY2tl
dChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpTZW50UGFja2V0JikgewotICAgICAgbnVtX3NpZ19zZW50X3Bh
Y2tldHNfKys7Ci0gICAgfQotCi0gICAgaW50IFNlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW4pIHsKLSAgICAgIHJ0Yzo6UGFja2V0T3B0aW9ucyBvcHRpb25zOwotICAgICAgcmV0
dXJuIGNoXy0+U2VuZFBhY2tldChkYXRhLCBsZW4sIG9wdGlvbnMsIDApOwotICAgIH0KLQotICAg
IHZvaWQgR2V0TG9jYWxQb3J0KHVpbnQxNl90KiBsb2NhbF9wb3J0KSB7Ci0gICAgICAqbG9jYWxf
cG9ydCA9IGNoXy0+R2V0TG9jYWxBZGRyZXNzKCkucG9ydCgpOwotICAgIH0KLQotICAgIHN0ZDo6
bGlzdDxzdGQ6OnN0cmluZz4gY2hfcGFja2V0c187Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFVkcFRy
YW5zcG9ydD4gY2hfOwotICAgIHVpbnQzMl90IG51bV9yZWNlaXZlZF9wYWNrZXRzXyA9IDA7ICAg
Ly8gSW5jcmVhc2VzIG9uIFNpZ25hbFJlYWRQYWNrZXQuCi0gICAgdWludDMyX3QgbnVtX3NpZ19z
ZW50X3BhY2tldHNfID0gMDsgICAvLyBJbmNyZWFzZXMgb24gU2lnbmFsU2VudFBhY2tldC4KLSAg
ICB1aW50MzJfdCBudW1fc2lnX3dyaXRhYmxlXyA9IDA7ICAgICAgIC8vIEluY3JlYXNlcyBvbiBT
aWduYWxXcml0YWJsZS4KLSAgICB1aW50MzJfdCBudW1fc2lnX3JlYWR5X3RvX3NlbmRfID0gMDsg
IC8vIEluY3JlYXNlcyBvbiBTaWduYWxSZWFkeVRvU2VuZC4KLSAgfTsKLQotICBzdGQ6OnVuaXF1
ZV9wdHI8cnRjOjpWaXJ0dWFsU29ja2V0U2VydmVyPiB2aXJ0dWFsX3NvY2tldF9zZXJ2ZXJfOwot
ICBydGM6OkF1dG9Tb2NrZXRTZXJ2ZXJUaHJlYWQgbmV0d29ya190aHJlYWRfOwotICAvLyBVc2Vz
IGN1cnJlbnQgdGhyZWFkJ3Mgc29ja2V0IHNlcnZlciwgd2hpY2ggd2lsbCBiZSBzZXQgYnkgc3Nf
c2NvcGVfLgotICBydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeSBzb2NrZXRfZmFjdG9yeV87
Ci0KLSAgRW5kcG9pbnQgZXAxXzsKLSAgRW5kcG9pbnQgZXAyXzsKLQotICB2b2lkIFRlc3RTZW5k
UmVjdigpIHsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgNTsgKytpKSB7Ci0gICAgICBz
dGF0aWMgY29uc3QgY2hhciogZGF0YSA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjEyMzQ1
Njc4OTAiOwotICAgICAgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4oc3RybGVuKGRhdGEpKTsK
LSAgICAgIC8vIGxvY2FsX2NoYW5uZWwgPD09PiByZW1vdGVfY2hhbm5lbAotICAgICAgRVhQRUNU
X0VRX1dBSVQobGVuLCBlcDFfLlNlbmREYXRhKGRhdGEsIGxlbiksIGtUaW1lb3V0TXMpOwotICAg
ICAgRVhQRUNUX1RSVUVfV0FJVChlcDJfLkNoZWNrRGF0YShkYXRhLCBsZW4pLCBrVGltZW91dE1z
KTsKLSAgICAgIEVYUEVDVF9FUV9XQUlUKGkgKyAxdSwgZXAyXy5udW1fcmVjZWl2ZWRfcGFja2V0
c18sIGtUaW1lb3V0TXMpOwotICAgICAgRVhQRUNUX0VRX1dBSVQobGVuLCBlcDJfLlNlbmREYXRh
KGRhdGEsIGxlbiksIGtUaW1lb3V0TXMpOwotICAgICAgRVhQRUNUX1RSVUVfV0FJVChlcDFfLkNo
ZWNrRGF0YShkYXRhLCBsZW4pLCBrVGltZW91dE1zKTsKLSAgICAgIEVYUEVDVF9FUV9XQUlUKGkg
KyAxdSwgZXAxXy5udW1fcmVjZWl2ZWRfcGFja2V0c18sIGtUaW1lb3V0TXMpOwotICAgIH0KLSAg
fQotfTsKLQotVEVTVF9GKFVkcFRyYW5zcG9ydFRlc3QsIEFkZHJlc3NHZXR0ZXJzKSB7Ci0gIC8v
IEluaXRpYWxseSwgcmVtb3RlIGFkZHJlc3Mgc2hvdWxkIGJlIG5pbCBidXQgbG9jYWwgYWRkcmVz
cyBzaG91bGRuJ3QgYmUuCi0gIEVYUEVDVF9GQUxTRShlcDFfLmNoXy0+R2V0TG9jYWxBZGRyZXNz
KCkuSXNOaWwoKSk7Ci0gIEVYUEVDVF9UUlVFKGVwMV8uY2hfLT5HZXRSZW1vdGVBZGRyZXNzKCku
SXNOaWwoKSk7Ci0gIHJ0Yzo6U29ja2V0QWRkcmVzcyBkZXN0aW5hdGlvbigiMTI3LjAuMC4xIiwg
MTMzNyk7Ci0gIEFTU0VSVF9UUlVFKGVwMV8uY2hfLT5TZXRSZW1vdGVBZGRyZXNzKGRlc3RpbmF0
aW9uKSk7Ci0gIEVYUEVDVF9FUShkZXN0aW5hdGlvbiwgZXAxXy5jaF8tPkdldFJlbW90ZUFkZHJl
c3MoKSk7Ci19Ci0KLS8vIFNldHRpbmcgYW4gaW52YWxpZCBhZGRyZXNzIHNob3VsZCBmYWlsIGFu
ZCBoYXZlIG5vIGVmZmVjdC4KLVRFU1RfRihVZHBUcmFuc3BvcnRUZXN0LCBTZXR0aW5nSW5jb21w
bGV0ZVJlbW90ZUFkZHJlc3NGYWlscykgewotICBFWFBFQ1RfRkFMU0UoZXAxXy5jaF8tPlNldFJl
bW90ZUFkZHJlc3MocnRjOjpTb2NrZXRBZGRyZXNzKCIxMjcuMC4wLjEiLCAwKSkpOwotICBFWFBF
Q1RfVFJVRShlcDFfLmNoXy0+R2V0UmVtb3RlQWRkcmVzcygpLklzTmlsKCkpOwotfQotCi1URVNU
X0YoVWRwVHJhbnNwb3J0VGVzdCwgU2VuZFJlY3ZCYXNpYykgewotICB1aW50MTZfdCBwb3J0Owot
ICBlcDJfLkdldExvY2FsUG9ydCgmcG9ydCk7Ci0gIHJ0Yzo6U29ja2V0QWRkcmVzcyBhZGRyMiA9
IHJ0Yzo6U29ja2V0QWRkcmVzcygiMTI3LjAuMC4xIiwgcG9ydCk7Ci0gIEVYUEVDVF9UUlVFKGVw
MV8uY2hfLT5TZXRSZW1vdGVBZGRyZXNzKGFkZHIyKSk7Ci0gIGVwMV8uR2V0TG9jYWxQb3J0KCZw
b3J0KTsKLSAgcnRjOjpTb2NrZXRBZGRyZXNzIGFkZHIxID0gcnRjOjpTb2NrZXRBZGRyZXNzKCIx
MjcuMC4wLjEiLCBwb3J0KTsKLSAgRVhQRUNUX1RSVUUoZXAyXy5jaF8tPlNldFJlbW90ZUFkZHJl
c3MoYWRkcjEpKTsKLSAgVGVzdFNlbmRSZWN2KCk7Ci19Ci0KLS8vIFRlc3QgdGhlIHNpZ25hbHMg
YW5kIHN0YXRlIG1ldGhvZHMgdXNlZCBpbnRlcm5hbGx5IGJ5IGNhdXNpbmcgYSBVZHBUcmFuc3Bv
cnQKLS8vIHRvIHNlbmQgYSBwYWNrZXQgdG8gaXRzZWxmLgotVEVTVF9GKFVkcFRyYW5zcG9ydFRl
c3QsIFN0YXR1c0FuZFNpZ25hbHMpIHsKLSAgRVhQRUNUX0VRKDB1LCBlcDFfLm51bV9zaWdfd3Jp
dGFibGVfKTsKLSAgRVhQRUNUX0VRKDB1LCBlcDFfLm51bV9zaWdfcmVhZHlfdG9fc2VuZF8pOwot
ICAvLyBMb29wYmFjawotICBFWFBFQ1RfVFJVRSghZXAxXy5jaF8tPndyaXRhYmxlKCkpOwotICBy
dGM6OlNvY2tldEFkZHJlc3MgYWRkciA9IGVwMV8uY2hfLT5HZXRMb2NhbEFkZHJlc3MoKTsKLSAg
Ly8gS2VlcCBwb3J0LCBidXQgZXhwbGljaXRseSBzZXQgSVAuCi0gIGFkZHIuU2V0SVAoIjEyNy4w
LjAuMSIpOwotICBlcDFfLmNoXy0+U2V0UmVtb3RlQWRkcmVzcyhhZGRyKTsKLSAgRVhQRUNUX1RS
VUUoZXAxXy5jaF8tPndyaXRhYmxlKCkpOwotICBFWFBFQ1RfRVEoMXUsIGVwMV8ubnVtX3NpZ193
cml0YWJsZV8pOwotICBFWFBFQ1RfRVEoMXUsIGVwMV8ubnVtX3NpZ19yZWFkeV90b19zZW5kXyk7
Ci0gIGNvbnN0IGNoYXIgZGF0YVtdID0gImFiYyI7Ci0gIGVwMV8uU2VuZERhdGEoZGF0YSwgc2l6
ZW9mKGRhdGEpKTsKLSAgRVhQRUNUX0VRX1dBSVQoMXUsIGVwMV8uY2hfcGFja2V0c18uc2l6ZSgp
LCBrVGltZW91dE1zKTsKLSAgRVhQRUNUX0VRX1dBSVQoMXUsIGVwMV8ubnVtX3NpZ19zZW50X3Bh
Y2tldHNfLCBrVGltZW91dE1zKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGll
bnQvYmFzaWNwb3J0YWxsb2NhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuY2MKaW5kZXggYzFiMWRl
NThkZGI2MGZmMjc4YWU1M2ExYzg2M2M5OTQwMDNiMjQ2Ni4uMGMyZmVmMzExMjYwNTc5NmI2ODNj
NWVkZDU4MDFkZmU3NDc4YzY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNp
Y3BvcnRhbGxvY2F0b3IuY2MKQEAgLTUxOCw2ICs1MTgsMTAgQEAgdm9pZCBCYXNpY1BvcnRBbGxv
Y2F0b3JTZXNzaW9uOjpHZXRDYW5kaWRhdGVzRnJvbVBvcnQoCiAgIH0KIH0KIAorYm9vbCBCYXNp
Y1BvcnRBbGxvY2F0b3JTZXNzaW9uOjpNZG5zT2JmdXNjYXRpb25FbmFibGVkKCkgY29uc3Qgewor
ICByZXR1cm4gYWxsb2NhdG9yXy0+bmV0d29ya19tYW5hZ2VyKCktPkdldE1kbnNSZXNwb25kZXIo
KSAhPSBudWxscHRyOworfQorCiBDYW5kaWRhdGUgQmFzaWNQb3J0QWxsb2NhdG9yU2Vzc2lvbjo6
U2FuaXRpemVDYW5kaWRhdGUoCiAgICAgY29uc3QgQ2FuZGlkYXRlJiBjKSBjb25zdCB7CiAgIFJU
Q19EQ0hFQ0tfUlVOX09OKG5ldHdvcmtfdGhyZWFkXyk7CkBAIC01MzQsNyArNTM4LDcgQEAgQ2Fu
ZGlkYXRlIEJhc2ljUG9ydEFsbG9jYXRvclNlc3Npb246OlNhbml0aXplQ2FuZGlkYXRlKAogICBi
b29sIGZpbHRlcl9zdHVuX3JlbGF0ZWRfYWRkcmVzcyA9CiAgICAgICAoKGZsYWdzKCkgJiBQT1JU
QUxMT0NBVE9SX0RJU0FCTEVfQURBUFRFUl9FTlVNRVJBVElPTikgJiYKICAgICAgICAoZmxhZ3Mo
KSAmIFBPUlRBTExPQ0FUT1JfRElTQUJMRV9ERUZBVUxUX0xPQ0FMX0NBTkRJREFURSkpIHx8Ci0g
ICAgICAhKGNhbmRpZGF0ZV9maWx0ZXJfICYgQ0ZfSE9TVCk7CisgICAgICAhKGNhbmRpZGF0ZV9m
aWx0ZXJfICYgQ0ZfSE9TVCkgfHwgTWRuc09iZnVzY2F0aW9uRW5hYmxlZCgpOwogICAvLyBJZiB0
aGUgY2FuZGlkYXRlIGZpbHRlciBkb2Vzbid0IGFsbG93IHJlZmxleGl2ZSBhZGRyZXNzZXMsIGVt
cHR5IFRVUk4gcmFkZHIKICAgLy8gdG8gYXZvaWQgcmVmbGV4aXZlIGFkZHJlc3MgbGVha2FnZS4K
ICAgYm9vbCBmaWx0ZXJfdHVybl9yZWxhdGVkX2FkZHJlc3MgPSAhKGNhbmRpZGF0ZV9maWx0ZXJf
ICYgQ0ZfUkVGTEVYSVZFKTsKQEAgLTEzNjIsNyArMTM2Niw3IEBAIHZvaWQgQWxsb2NhdGlvblNl
cXVlbmNlOjpDcmVhdGVVRFBQb3J0cygpIHsKIAogICAvLyBUT0RPKG1hbGxpbmF0aCkgLSBSZW1v
dmUgVURQUG9ydCBjcmVhdGluZyBzb2NrZXQgYWZ0ZXIgc2hhcmVkIHNvY2tldAogICAvLyBpcyBl
bmFibGVkIGNvbXBsZXRlbHkuCi0gIFVEUFBvcnQqIHBvcnQgPSBOVUxMOworICBzdGQ6OnVuaXF1
ZV9wdHI8VURQUG9ydD4gcG9ydDsKICAgYm9vbCBlbWl0X2xvY2FsX2NhbmRpZGF0ZV9mb3JfYW55
YWRkcmVzcyA9CiAgICAgICAhSXNGbGFnU2V0KFBPUlRBTExPQ0FUT1JfRElTQUJMRV9ERUZBVUxU
X0xPQ0FMX0NBTkRJREFURSk7CiAgIGlmIChJc0ZsYWdTZXQoUE9SVEFMTE9DQVRPUl9FTkFCTEVf
U0hBUkVEX1NPQ0tFVCkgJiYgdWRwX3NvY2tldF8pIHsKQEAgLTEzODQsNyArMTM4OCw3IEBAIHZv
aWQgQWxsb2NhdGlvblNlcXVlbmNlOjpDcmVhdGVVRFBQb3J0cygpIHsKICAgICAvLyBJZiBzaGFy
ZWQgc29ja2V0IGlzIGVuYWJsZWQsIFNUVU4gY2FuZGlkYXRlIHdpbGwgYmUgYWxsb2NhdGVkIGJ5
IHRoZQogICAgIC8vIFVEUFBvcnQuCiAgICAgaWYgKElzRmxhZ1NldChQT1JUQUxMT0NBVE9SX0VO
QUJMRV9TSEFSRURfU09DS0VUKSkgewotICAgICAgdWRwX3BvcnRfID0gcG9ydDsKKyAgICAgIHVk
cF9wb3J0XyA9IHBvcnQuZ2V0KCk7CiAgICAgICBwb3J0LT5TaWduYWxEZXN0cm95ZWQuY29ubmVj
dCh0aGlzLCAmQWxsb2NhdGlvblNlcXVlbmNlOjpPblBvcnREZXN0cm95ZWQpOwogCiAgICAgICAv
LyBJZiBTVFVOIGlzIG5vdCBkaXNhYmxlZCwgc2V0dGluZyBzdHVuIHNlcnZlciBhZGRyZXNzIHRv
IHBvcnQuCkBAIC0xMzk4LDcgKzE0MDIsNyBAQCB2b2lkIEFsbG9jYXRpb25TZXF1ZW5jZTo6Q3Jl
YXRlVURQUG9ydHMoKSB7CiAgICAgICB9CiAgICAgfQogCi0gICAgc2Vzc2lvbl8tPkFkZEFsbG9j
YXRlZFBvcnQocG9ydCwgdGhpcywgdHJ1ZSk7CisgICAgc2Vzc2lvbl8tPkFkZEFsbG9jYXRlZFBv
cnQocG9ydC5yZWxlYXNlKCksIHRoaXMsIHRydWUpOwogICB9CiB9CiAKQEAgLTE0MDgsMTMgKzE0
MTIsMTMgQEAgdm9pZCBBbGxvY2F0aW9uU2VxdWVuY2U6OkNyZWF0ZVRDUFBvcnRzKCkgewogICAg
IHJldHVybjsKICAgfQogCi0gIFBvcnQqIHBvcnQgPSBUQ1BQb3J0OjpDcmVhdGUoCisgIHN0ZDo6
dW5pcXVlX3B0cjxQb3J0PiBwb3J0ID0gVENQUG9ydDo6Q3JlYXRlKAogICAgICAgc2Vzc2lvbl8t
Pm5ldHdvcmtfdGhyZWFkKCksIHNlc3Npb25fLT5zb2NrZXRfZmFjdG9yeSgpLCBuZXR3b3JrXywK
ICAgICAgIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+bWluX3BvcnQoKSwgc2Vzc2lvbl8tPmFsbG9j
YXRvcigpLT5tYXhfcG9ydCgpLAogICAgICAgc2Vzc2lvbl8tPnVzZXJuYW1lKCksIHNlc3Npb25f
LT5wYXNzd29yZCgpLAogICAgICAgc2Vzc2lvbl8tPmFsbG9jYXRvcigpLT5hbGxvd190Y3BfbGlz
dGVuKCkpOwogICBpZiAocG9ydCkgewotICAgIHNlc3Npb25fLT5BZGRBbGxvY2F0ZWRQb3J0KHBv
cnQsIHRoaXMsIHRydWUpOworICAgIHNlc3Npb25fLT5BZGRBbGxvY2F0ZWRQb3J0KHBvcnQucmVs
ZWFzZSgpLCB0aGlzLCB0cnVlKTsKICAgICAvLyBTaW5jZSBUQ1BQb3J0IGlzIG5vdCBjcmVhdGVk
IHVzaW5nIHNoYXJlZCBzb2NrZXQsIHxwb3J0fCB3aWxsIG5vdCBiZQogICAgIC8vIGFkZGVkIHRv
IHRoZSBkZXF1ZXVlLgogICB9CkBAIC0xNDM2LDE0ICsxNDQwLDE0IEBAIHZvaWQgQWxsb2NhdGlv
blNlcXVlbmNlOjpDcmVhdGVTdHVuUG9ydHMoKSB7CiAgICAgcmV0dXJuOwogICB9CiAKLSAgU3R1
blBvcnQqIHBvcnQgPSBTdHVuUG9ydDo6Q3JlYXRlKAorICBzdGQ6OnVuaXF1ZV9wdHI8U3R1blBv
cnQ+IHBvcnQgPSBTdHVuUG9ydDo6Q3JlYXRlKAogICAgICAgc2Vzc2lvbl8tPm5ldHdvcmtfdGhy
ZWFkKCksIHNlc3Npb25fLT5zb2NrZXRfZmFjdG9yeSgpLCBuZXR3b3JrXywKICAgICAgIHNlc3Np
b25fLT5hbGxvY2F0b3IoKS0+bWluX3BvcnQoKSwgc2Vzc2lvbl8tPmFsbG9jYXRvcigpLT5tYXhf
cG9ydCgpLAogICAgICAgc2Vzc2lvbl8tPnVzZXJuYW1lKCksIHNlc3Npb25fLT5wYXNzd29yZCgp
LCBjb25maWdfLT5TdHVuU2VydmVycygpLAogICAgICAgc2Vzc2lvbl8tPmFsbG9jYXRvcigpLT5v
cmlnaW4oKSwKICAgICAgIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+c3R1bl9jYW5kaWRhdGVfa2Vl
cGFsaXZlX2ludGVydmFsKCkpOwogICBpZiAocG9ydCkgewotICAgIHNlc3Npb25fLT5BZGRBbGxv
Y2F0ZWRQb3J0KHBvcnQsIHRoaXMsIHRydWUpOworICAgIHNlc3Npb25fLT5BZGRBbGxvY2F0ZWRQ
b3J0KHBvcnQucmVsZWFzZSgpLCB0aGlzLCB0cnVlKTsKICAgICAvLyBTaW5jZSBTdHVuUG9ydCBp
cyBub3QgY3JlYXRlZCB1c2luZyBzaGFyZWQgc29ja2V0LCB8cG9ydHwgd2lsbCBub3QgYmUKICAg
ICAvLyBhZGRlZCB0byB0aGUgZGVxdWV1ZS4KICAgfQpAQCAtMTQ3OSwxMSArMTQ4MywxMiBAQCB2
b2lkIEFsbG9jYXRpb25TZXF1ZW5jZTo6Q3JlYXRlUmVsYXlQb3J0cygpIHsKIAogdm9pZCBBbGxv
Y2F0aW9uU2VxdWVuY2U6OkNyZWF0ZUd0dXJuUG9ydChjb25zdCBSZWxheVNlcnZlckNvbmZpZyYg
Y29uZmlnKSB7CiAgIC8vIFRPRE8obWFsbGluYXRoKSAtIFJlbmFtZSBSZWxheVBvcnQgdG8gR1R1
cm5Qb3J0LgotICBSZWxheVBvcnQqIHBvcnQgPSBSZWxheVBvcnQ6OkNyZWF0ZSgKKyAgc3RkOjp1
bmlxdWVfcHRyPFJlbGF5UG9ydD4gcG9ydCA9IFJlbGF5UG9ydDo6Q3JlYXRlKAogICAgICAgc2Vz
c2lvbl8tPm5ldHdvcmtfdGhyZWFkKCksIHNlc3Npb25fLT5zb2NrZXRfZmFjdG9yeSgpLCBuZXR3
b3JrXywKICAgICAgIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+bWluX3BvcnQoKSwgc2Vzc2lvbl8t
PmFsbG9jYXRvcigpLT5tYXhfcG9ydCgpLAogICAgICAgY29uZmlnXy0+dXNlcm5hbWUsIGNvbmZp
Z18tPnBhc3N3b3JkKTsKICAgaWYgKHBvcnQpIHsKKyAgICBSZWxheVBvcnQqIHBvcnRfcHRyID0g
cG9ydC5yZWxlYXNlKCk7CiAgICAgLy8gU2luY2UgUmVsYXlQb3J0IGlzIG5vdCBjcmVhdGVkIHVz
aW5nIHNoYXJlZCBzb2NrZXQsIHxwb3J0fCB3aWxsIG5vdCBiZQogICAgIC8vIGFkZGVkIHRvIHRo
ZSBkZXF1ZXVlLgogICAgIC8vIE5vdGU6IFdlIG11c3QgYWRkIHRoZSBhbGxvY2F0ZWQgcG9ydCBi
ZWZvcmUgd2UgYWRkIGFkZHJlc3NlcyBiZWNhdXNlCkBAIC0xNDkxLDE3ICsxNDk2LDE3IEBAIHZv
aWQgQWxsb2NhdGlvblNlcXVlbmNlOjpDcmVhdGVHdHVyblBvcnQoY29uc3QgUmVsYXlTZXJ2ZXJD
b25maWcmIGNvbmZpZykgewogICAgIC8vICAgICAgIHNldHRpbmdzLiAgSG93ZXZlciwgd2UgYWxz
byBjYW4ndCBwcmVwYXJlIHRoZSBhZGRyZXNzIChub3JtYWxseQogICAgIC8vICAgICAgIGRvbmUg
YnkgQWRkQWxsb2NhdGVkUG9ydCkgdW50aWwgd2UgaGF2ZSB0aGVzZSBhZGRyZXNzZXMuICBTbyB3
ZQogICAgIC8vICAgICAgIHdhaXQgdG8gZG8gdGhhdCB1bnRpbCBiZWxvdy4KLSAgICBzZXNzaW9u
Xy0+QWRkQWxsb2NhdGVkUG9ydChwb3J0LCB0aGlzLCBmYWxzZSk7CisgICAgc2Vzc2lvbl8tPkFk
ZEFsbG9jYXRlZFBvcnQocG9ydF9wdHIsIHRoaXMsIGZhbHNlKTsKIAogICAgIC8vIEFkZCB0aGUg
YWRkcmVzc2VzIG9mIHRoaXMgcHJvdG9jb2wuCiAgICAgUG9ydExpc3Q6OmNvbnN0X2l0ZXJhdG9y
IHJlbGF5X3BvcnQ7CiAgICAgZm9yIChyZWxheV9wb3J0ID0gY29uZmlnLnBvcnRzLmJlZ2luKCk7
IHJlbGF5X3BvcnQgIT0gY29uZmlnLnBvcnRzLmVuZCgpOwogICAgICAgICAgKytyZWxheV9wb3J0
KSB7Ci0gICAgICBwb3J0LT5BZGRTZXJ2ZXJBZGRyZXNzKCpyZWxheV9wb3J0KTsKLSAgICAgIHBv
cnQtPkFkZEV4dGVybmFsQWRkcmVzcygqcmVsYXlfcG9ydCk7CisgICAgICBwb3J0X3B0ci0+QWRk
U2VydmVyQWRkcmVzcygqcmVsYXlfcG9ydCk7CisgICAgICBwb3J0X3B0ci0+QWRkRXh0ZXJuYWxB
ZGRyZXNzKCpyZWxheV9wb3J0KTsKICAgICB9CiAgICAgLy8gU3RhcnQgZmV0Y2hpbmcgYW4gYWRk
cmVzcyBmb3IgdGhpcyBwb3J0LgotICAgIHBvcnQtPlByZXBhcmVBZGRyZXNzKCk7CisgICAgcG9y
dF9wdHItPlByZXBhcmVBZGRyZXNzKCk7CiAgIH0KIH0KIApAQCAtMTU3OSw3ICsxNTg0LDcgQEAg
dm9pZCBBbGxvY2F0aW9uU2VxdWVuY2U6Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29j
a2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1l
X3VzKSB7CiAgIFJUQ19EQ0hFQ0soc29ja2V0ID09IHVkcF9zb2NrZXRfLmdldCgpKTsKIAogICBi
b29sIHR1cm5fcG9ydF9mb3VuZCA9IGZhbHNlOwpAQCAtMTU5Myw3ICsxNTk4LDcgQEAgdm9pZCBB
bGxvY2F0aW9uU2VxdWVuY2U6Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBz
b2NrZXQsCiAgIGZvciAoYXV0byogcG9ydCA6IHJlbGF5X3BvcnRzXykgewogICAgIGlmIChwb3J0
LT5DYW5IYW5kbGVJbmNvbWluZ1BhY2tldHNGcm9tKHJlbW90ZV9hZGRyKSkgewogICAgICAgaWYg
KHBvcnQtPkhhbmRsZUluY29taW5nUGFja2V0KHNvY2tldCwgZGF0YSwgc2l6ZSwgcmVtb3RlX2Fk
ZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWUpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWVfdXMpKSB7
CiAgICAgICAgIHJldHVybjsKICAgICAgIH0KICAgICAgIHR1cm5fcG9ydF9mb3VuZCA9IHRydWU7
CkBAIC0xNjA5LDcgKzE2MTQsNyBAQCB2b2lkIEFsbG9jYXRpb25TZXF1ZW5jZTo6T25SZWFkUGFj
a2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgc3R1bl9zZXJ2ZXJz
LmZpbmQocmVtb3RlX2FkZHIpICE9IHN0dW5fc2VydmVycy5lbmQoKSkgewogICAgICAgUlRDX0RD
SEVDSyh1ZHBfcG9ydF8tPlNoYXJlZFNvY2tldCgpKTsKICAgICAgIHVkcF9wb3J0Xy0+SGFuZGxl
SW5jb21pbmdQYWNrZXQoc29ja2V0LCBkYXRhLCBzaXplLCByZW1vdGVfYWRkciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3RpbWUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdGltZV91cyk7CiAgICAgfQogICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaAppbmRleCA4
Yjk1MWNhZTllNjJjYmY3ZWVjMTg3MmI0Yjk5ZmNjMzI4OWQ0NThmLi42NzJmM2RkYjdjMjYzYjFh
NTVmYTMxNDIyYjlmMTAzYTViZTdiNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQv
YmFzaWNwb3J0YWxsb2NhdG9yLmgKQEAgLTIyLDExICsyMiwxMiBAQAogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL25ldHdvcmsuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4
cG9ydC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogCiBuYW1lc3BhY2UgY3JpY2tl
dCB7CiAKLWNsYXNzIEJhc2ljUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBQb3J0QWxsb2NhdG9yIHsK
K2NsYXNzIFJUQ19FWFBPUlQgQmFzaWNQb3J0QWxsb2NhdG9yIDogcHVibGljIFBvcnRBbGxvY2F0
b3IgewogIHB1YmxpYzoKICAgLy8gbm90ZTogVGhlIChvcHRpb25hbCkgcmVsYXlfcG9ydF9mYWN0
b3J5IGlzIG93bmVkIGJ5IGNhbGxlcgogICAvLyBhbmQgbXVzdCBoYXZlIGEgbGlmZSB0aW1lIHRo
YXQgZXhjZWVkcyB0aGF0IG9mIEJhc2ljUG9ydEFsbG9jYXRvci4KQEAgLTExMCw4ICsxMTEsOCBA
QCBlbnVtIGNsYXNzIFNlc3Npb25TdGF0ZSB7CiAgICAgICAgICAgICAgIC8vIHByb2Nlc3Mgd2ls
bCBiZSBzdGFydGVkLgogfTsKIAotY2xhc3MgQmFzaWNQb3J0QWxsb2NhdG9yU2Vzc2lvbiA6IHB1
YmxpYyBQb3J0QWxsb2NhdG9yU2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciB7CitjbGFzcyBSVENfRVhQT1JUIEJhc2lj
UG9ydEFsbG9jYXRvclNlc3Npb24gOiBwdWJsaWMgUG9ydEFsbG9jYXRvclNlc3Npb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpNZXNz
YWdlSGFuZGxlciB7CiAgcHVibGljOgogICBCYXNpY1BvcnRBbGxvY2F0b3JTZXNzaW9uKEJhc2lj
UG9ydEFsbG9jYXRvciogYWxsb2NhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCkBAIC0yMzUsNiArMjM2LDEwIEBAIGNsYXNz
IEJhc2ljUG9ydEFsbG9jYXRvclNlc3Npb24gOiBwdWJsaWMgUG9ydEFsbG9jYXRvclNlc3Npb24s
CiAKICAgYm9vbCBDaGVja0NhbmRpZGF0ZUZpbHRlcihjb25zdCBDYW5kaWRhdGUmIGMpIGNvbnN0
OwogICBib29sIENhbmRpZGF0ZVBhaXJhYmxlKGNvbnN0IENhbmRpZGF0ZSYgYywgY29uc3QgUG9y
dCogcG9ydCkgY29uc3Q7CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIGFuIG1ETlMg
cmVzcG9uZGVyIGF0dGFjaGVkIHRvIHRoZSBuZXR3b3JrIG1hbmFnZXIKKyAgYm9vbCBNZG5zT2Jm
dXNjYXRpb25FbmFibGVkKCkgY29uc3Q7CisKICAgLy8gQ2xlYXJzIDEpIHRoZSBhZGRyZXNzIGlm
IHRoZSBjYW5kaWRhdGUgaXMgc3VwcG9zZWRseSBhIGhvc3RuYW1lIGNhbmRpZGF0ZTsKICAgLy8g
MikgdGhlIHJlbGF0ZWQgYWRkcmVzcyBhY2NvcmRpbmcgdG8gdGhlIGZsYWdzIGFuZCBjYW5kaWRh
dGUgZmlsdGVyIGluIG9yZGVyCiAgIC8vIHRvIGF2b2lkIGxlYWtpbmcgYW55IGluZm9ybWF0aW9u
LgpAQCAtMjc0LDcgKzI3OSw3IEBAIGNsYXNzIEJhc2ljUG9ydEFsbG9jYXRvclNlc3Npb24gOiBw
dWJsaWMgUG9ydEFsbG9jYXRvclNlc3Npb24sCiAKIC8vIFJlY29yZHMgY29uZmlndXJhdGlvbiBp
bmZvcm1hdGlvbiB1c2VmdWwgaW4gY3JlYXRpbmcgcG9ydHMuCiAvLyBUT0RPKGRlYWRiZWVmKTog
UmVuYW1lICJyZWxheSIgdG8gInR1cm5fc2VydmVyIiBpbiB0aGlzIHN0cnVjdC4KLXN0cnVjdCBQ
b3J0Q29uZmlndXJhdGlvbiA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VEYXRhIHsKK3N0cnVjdCBSVENf
RVhQT1JUIFBvcnRDb25maWd1cmF0aW9uIDogcHVibGljIHJ0Yzo6TWVzc2FnZURhdGEgewogICAv
LyBUT0RPKGppYXlsKTogcmVtb3ZlIHxzdHVuX2FkZHJlc3N8IHdoZW4gQ2hyb21lIGlzIHVwZGF0
ZWQuCiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBzdHVuX2FkZHJlc3M7CiAgIFNlcnZlckFkZHJlc3Nl
cyBzdHVuX3NlcnZlcnM7CkBAIC0zODMsNyArMzg4LDcgQEAgY2xhc3MgQWxsb2NhdGlvblNlcXVl
bmNlIDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpOwogCiAgIHZv
aWQgT25Qb3J0RGVzdHJveWVkKFBvcnRJbnRlcmZhY2UqIHBvcnQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2lj
cG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yX3VuaXR0ZXN0LmNjCmlu
ZGV4IGE0NmU1M2JhOWRhNjYyMGU3YjQ2NWQyMWFkMmE1OTQ3MWU5ODgyMWMuLjg5NDNlYmM3M2Ri
YTJkYjY4YTJmYmNkYmU0MDczNTc4NmY0ZWFmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9y
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yX3VuaXR0ZXN0LmNjCkBAIC0zOCw3ICsz
OCw2IEBACiAKIHVzaW5nIHJ0Yzo6SVBBZGRyZXNzOwogdXNpbmcgcnRjOjpTb2NrZXRBZGRyZXNz
OwotdXNpbmcgcnRjOjpUaHJlYWQ7CiAKICNkZWZpbmUgTUFZQkVfU0tJUF9JUFY0ICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICBpZiAoIXJ0Yzo6SGFzSVB2NEVuYWJsZWQoKSkgeyAgICAgICAg
ICAgICAgICBcCkBAIC0xNDcsMTUgKzE0NiwxNSBAQCBjbGFzcyBCYXNpY1BvcnRBbGxvY2F0b3JU
ZXN0QmFzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgICAgICAvLyBtdXN0IGJlIGNhbGxl
ZC4KICAgICAgICAgbmF0X2ZhY3RvcnlfKHZzc18uZ2V0KCksIGtOYXRVZHBBZGRyLCBrTmF0VGNw
QWRkciksCiAgICAgICAgIG5hdF9zb2NrZXRfZmFjdG9yeV8obmV3IHJ0Yzo6QmFzaWNQYWNrZXRT
b2NrZXRGYWN0b3J5KCZuYXRfZmFjdG9yeV8pKSwKLSAgICAgICAgc3R1bl9zZXJ2ZXJfKFRlc3RT
dHVuU2VydmVyOjpDcmVhdGUoVGhyZWFkOjpDdXJyZW50KCksIGtTdHVuQWRkcikpLAotICAgICAg
ICByZWxheV9zZXJ2ZXJfKFRocmVhZDo6Q3VycmVudCgpLAorICAgICAgICBzdHVuX3NlcnZlcl8o
VGVzdFN0dW5TZXJ2ZXI6OkNyZWF0ZShydGM6OlRocmVhZDo6Q3VycmVudCgpLCBrU3R1bkFkZHIp
KSwKKyAgICAgICAgcmVsYXlfc2VydmVyXyhydGM6OlRocmVhZDo6Q3VycmVudCgpLAogICAgICAg
ICAgICAgICAgICAgICAgIGtSZWxheVVkcEludEFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAg
a1JlbGF5VWRwRXh0QWRkciwKICAgICAgICAgICAgICAgICAgICAgICBrUmVsYXlUY3BJbnRBZGRy
LAogICAgICAgICAgICAgICAgICAgICAgIGtSZWxheVRjcEV4dEFkZHIsCiAgICAgICAgICAgICAg
ICAgICAgICAga1JlbGF5U3NsVGNwSW50QWRkciwKICAgICAgICAgICAgICAgICAgICAgICBrUmVs
YXlTc2xUY3BFeHRBZGRyKSwKLSAgICAgICAgdHVybl9zZXJ2ZXJfKFRocmVhZDo6Q3VycmVudCgp
LCBrVHVyblVkcEludEFkZHIsIGtUdXJuVWRwRXh0QWRkciksCisgICAgICAgIHR1cm5fc2VydmVy
XyhydGM6OlRocmVhZDo6Q3VycmVudCgpLCBrVHVyblVkcEludEFkZHIsIGtUdXJuVWRwRXh0QWRk
ciksCiAgICAgICAgIGNhbmRpZGF0ZV9hbGxvY2F0aW9uX2RvbmVfKGZhbHNlKSB7CiAgICAgU2Vy
dmVyQWRkcmVzc2VzIHN0dW5fc2VydmVyczsKICAgICBzdHVuX3NlcnZlcnMuaW5zZXJ0KGtTdHVu
QWRkcik7CkBAIC0yMjQ3LDggKzIyNDYsOCBAQCBURVNUX0YoQmFzaWNQb3J0QWxsb2NhdG9yVGVz
dCwgSWNlUmVnYXRoZXJpbmdNZXRyaWNzTG9nZ2VkV2hlbk5ldHdvcmtDaGFuZ2VzKSB7CiB9CiAK
IC8vIFRlc3QgdGhhdCB3aGVuIGFuIG1ETlMgcmVzcG9uZGVyIGlzIHByZXNlbnQsIHRoZSBsb2Nh
bCBhZGRyZXNzIG9mIGEgaG9zdAotLy8gY2FuZGlkYXRlIGlzIG1hc2tlZCBieSBhbiBtRE5TIGhv
c3RuYW1lIGFuZCB0aGUgcmVsYXRlZCBhZGRyZXNzIG9mIGFueSBvdGhlcgotLy8gdHlwZSBvZiBj
YW5kaWRhdGVzIGlzIHNldCB0byAwLjAuMC4wIG9yIDo6MC4KKy8vIGNhbmRpZGF0ZSBpcyBjb25j
ZWFsZWQgYnkgYW4gbUROUyBob3N0bmFtZSBhbmQgdGhlIHJlbGF0ZWQgYWRkcmVzcyBvZiBhIHNy
Zmx4CisvLyBjYW5kaWRhdGUgaXMgc2V0IHRvIDAuMC4wLjAgb3IgOjowLgogVEVTVF9GKEJhc2lj
UG9ydEFsbG9jYXRvclRlc3QsIEhvc3RDYW5kaWRhdGVBZGRyZXNzSXNSZXBsYWNlZEJ5SG9zdG5h
bWUpIHsKICAgLy8gRGVmYXVsdCBjb25maWcgdXNlcyBHVFVSTiBhbmQgbm8gTkFULCBzbyByZXBs
YWNlIHRoYXQgd2l0aCB0aGUKICAgLy8gZGVzaXJlZCBzZXR1cCAoTkFULCBTVFVOIHNlcnZlciwg
VFVSTiBzZXJ2ZXIsIFVEUC9UQ1ApLgpAQCAtMjI1OCw3ICsyMjU3LDcgQEAgVEVTVF9GKEJhc2lj
UG9ydEFsbG9jYXRvclRlc3QsIEhvc3RDYW5kaWRhdGVBZGRyZXNzSXNSZXBsYWNlZEJ5SG9zdG5h
bWUpIHsKICAgQWRkVHVyblNlcnZlcnMoa1R1cm5VZHBJbnRJUHY2QWRkciwga1R1cm5UY3BJbnRJ
UHY2QWRkcik7CiAKICAgQVNTRVJUX0VRKCZuZXR3b3JrX21hbmFnZXJfLCBhbGxvY2F0b3IoKS5u
ZXR3b3JrX21hbmFnZXIoKSk7Ci0gIG5ldHdvcmtfbWFuYWdlcl8uQ3JlYXRlTURuc1Jlc3BvbmRl
cigpOworICBuZXR3b3JrX21hbmFnZXJfLkNyZWF0ZU1kbnNSZXNwb25kZXIoKTsKICAgQWRkSW50
ZXJmYWNlKGtDbGllbnRBZGRyKTsKICAgQVNTRVJUX1RSVUUoQ3JlYXRlU2Vzc2lvbihJQ0VfQ0FO
RElEQVRFX0NPTVBPTkVOVF9SVFApKTsKICAgc2Vzc2lvbl8tPlN0YXJ0R2V0dGluZ1BvcnRzKCk7
CkBAIC0yMjcwLDIzICsyMjY5LDI5IEBAIFRFU1RfRihCYXNpY1BvcnRBbGxvY2F0b3JUZXN0LCBI
b3N0Q2FuZGlkYXRlQWRkcmVzc0lzUmVwbGFjZWRCeUhvc3RuYW1lKSB7CiAgIGludCBudW1fc3Jm
bHhfY2FuZGlkYXRlcyA9IDA7CiAgIGludCBudW1fcmVsYXlfY2FuZGlkYXRlcyA9IDA7CiAgIGZv
ciAoY29uc3QgYXV0byYgY2FuZGlkYXRlIDogY2FuZGlkYXRlc18pIHsKKyAgICBjb25zdCBhdXRv
JiByYWRkciA9IGNhbmRpZGF0ZS5yZWxhdGVkX2FkZHJlc3MoKTsKKwogICAgIGlmIChjYW5kaWRh
dGUudHlwZSgpID09IExPQ0FMX1BPUlRfVFlQRSkgewotICAgICAgRVhQRUNUX1RSVUUoY2FuZGlk
YXRlLmFkZHJlc3MoKS5Jc1VucmVzb2x2ZWRJUCgpKTsKKyAgICAgIEVYUEVDVF9GQUxTRShjYW5k
aWRhdGUuYWRkcmVzcygpLmhvc3RuYW1lKCkuZW1wdHkoKSk7CisgICAgICBFWFBFQ1RfVFJVRShy
YWRkci5Jc05pbCgpKTsKICAgICAgIGlmIChjYW5kaWRhdGUucHJvdG9jb2woKSA9PSBVRFBfUFJP
VE9DT0xfTkFNRSkgewogICAgICAgICArK251bV9ob3N0X3VkcF9jYW5kaWRhdGVzOwogICAgICAg
fSBlbHNlIHsKICAgICAgICAgKytudW1faG9zdF90Y3BfY2FuZGlkYXRlczsKICAgICAgIH0KKyAg
ICB9IGVsc2UgaWYgKGNhbmRpZGF0ZS50eXBlKCkgPT0gU1RVTl9QT1JUX1RZUEUpIHsKKyAgICAg
IC8vIEZvciBhIHNyZmx4IGNhbmRpZGF0ZSwgdGhlIHJlbGF0ZWQgYWRkcmVzcyBzaG91bGQgYmUg
c2V0IHRvIDAuMC4wLjAgb3IKKyAgICAgIC8vIDo6MAorICAgICAgRVhQRUNUX1RSVUUoSVBJc0Fu
eShyYWRkci5pcGFkZHIoKSkpOworICAgICAgRVhQRUNUX0VRKHJhZGRyLnBvcnQoKSwgMCk7Cisg
ICAgICArK251bV9zcmZseF9jYW5kaWRhdGVzOworICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLnR5
cGUoKSA9PSBSRUxBWV9QT1JUX1RZUEUpIHsKKyAgICAgIEVYUEVDVF9FUShrTmF0VWRwQWRkci5p
cGFkZHIoKSwgcmFkZHIuaXBhZGRyKCkpOworICAgICAgRVhQRUNUX0VRKGtOYXRVZHBBZGRyLmZh
bWlseSgpLCByYWRkci5mYW1pbHkoKSk7CisgICAgICArK251bV9yZWxheV9jYW5kaWRhdGVzOwog
ICAgIH0gZWxzZSB7Ci0gICAgICBFWFBFQ1RfTkUoUFJGTFhfUE9SVF9UWVBFLCBjYW5kaWRhdGUu
dHlwZSgpKTsKLSAgICAgIC8vIFRoZSByZWxhdGVkIGFkZHJlc3Mgc2hvdWxkIGJlIHNldCB0byAw
LjAuMC4wIG9yIDo6MCBmb3Igc3JmbHggYW5kCi0gICAgICAvLyByZWxheSBjYW5kaWRhdGVzLgot
ICAgICAgRVhQRUNUX0VRKHJ0Yzo6U29ja2V0QWRkcmVzcygpLCBjYW5kaWRhdGUucmVsYXRlZF9h
ZGRyZXNzKCkpOwotICAgICAgaWYgKGNhbmRpZGF0ZS50eXBlKCkgPT0gU1RVTl9QT1JUX1RZUEUp
IHsKLSAgICAgICAgKytudW1fc3JmbHhfY2FuZGlkYXRlczsKLSAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICsrbnVtX3JlbGF5X2NhbmRpZGF0ZXM7Ci0gICAgICB9CisgICAgICAvLyBwcmZseCBjYW5k
aWRhdGVzIGFyZSBub3QgZXhwZWN0ZWQKKyAgICAgIEZBSUwoKTsKICAgICB9CiAgIH0KICAgRVhQ
RUNUX0VRKDEsIG51bV9ob3N0X3VkcF9jYW5kaWRhdGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvdHVybnBvcnRmYWN0
b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Ns
aWVudC90dXJucG9ydGZhY3RvcnkuY2MKaW5kZXggNjQwNDEzNGM0YTE5ZDhjNWUxYTBlZTczNGE2
Yjc2NmUwZmI0YTc3OC4uYzBjMTcyMDc2YmMxZWI3ZDIyZjc1OTMxYTI1YTkwNTA0NTcyYzcyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2NsaWVudC90dXJucG9ydGZhY3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC90dXJucG9ydGZhY3RvcnkuY2MKQEAgLTExLDYg
KzExLDcgQEAKICNpbmNsdWRlICJwMnAvY2xpZW50L3R1cm5wb3J0ZmFjdG9yeS5oIgogCiAjaW5j
bHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJwMnAvYmFzZS90
dXJucG9ydC5oIgogCkBAIC0yMSwyNiArMjIsMjYgQEAgVHVyblBvcnRGYWN0b3J5Ojp+VHVyblBv
cnRGYWN0b3J5KCkge30KIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBUdXJuUG9ydEZhY3Rvcnk6OkNy
ZWF0ZSgKICAgICBjb25zdCBDcmVhdGVSZWxheVBvcnRBcmdzJiBhcmdzLAogICAgIHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQqIHVkcF9zb2NrZXQpIHsKLSAgVHVyblBvcnQqIHBvcnQgPSBUdXJuUG9y
dDo6Q3JlYXRlKAorICBhdXRvIHBvcnQgPSBUdXJuUG9ydDo6Q3JlYXRlVW5pcXVlKAogICAgICAg
YXJncy5uZXR3b3JrX3RocmVhZCwgYXJncy5zb2NrZXRfZmFjdG9yeSwgYXJncy5uZXR3b3JrLCB1
ZHBfc29ja2V0LAogICAgICAgYXJncy51c2VybmFtZSwgYXJncy5wYXNzd29yZCwgKmFyZ3Muc2Vy
dmVyX2FkZHJlc3MsCiAgICAgICBhcmdzLmNvbmZpZy0+Y3JlZGVudGlhbHMsIGFyZ3MuY29uZmln
LT5wcmlvcml0eSwgYXJncy5vcmlnaW4sCiAgICAgICBhcmdzLnR1cm5fY3VzdG9taXplcik7CiAg
IHBvcnQtPlNldFRsc0NlcnRQb2xpY3koYXJncy5jb25maWctPnRsc19jZXJ0X3BvbGljeSk7Ci0g
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4ocG9ydCk7CisgIHJldHVybiBzdGQ6Om1vdmUo
cG9ydCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBUdXJuUG9ydEZhY3Rvcnk6OkNyZWF0
ZShjb25zdCBDcmVhdGVSZWxheVBvcnRBcmdzJiBhcmdzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW5fcG9ydCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X3BvcnQpIHsKLSAgVHVyblBvcnQq
IHBvcnQgPSBUdXJuUG9ydDo6Q3JlYXRlKAorICBhdXRvIHBvcnQgPSBUdXJuUG9ydDo6Q3JlYXRl
VW5pcXVlKAogICAgICAgYXJncy5uZXR3b3JrX3RocmVhZCwgYXJncy5zb2NrZXRfZmFjdG9yeSwg
YXJncy5uZXR3b3JrLCBtaW5fcG9ydCwKICAgICAgIG1heF9wb3J0LCBhcmdzLnVzZXJuYW1lLCBh
cmdzLnBhc3N3b3JkLCAqYXJncy5zZXJ2ZXJfYWRkcmVzcywKICAgICAgIGFyZ3MuY29uZmlnLT5j
cmVkZW50aWFscywgYXJncy5jb25maWctPnByaW9yaXR5LCBhcmdzLm9yaWdpbiwKICAgICAgIGFy
Z3MuY29uZmlnLT50bHNfYWxwbl9wcm90b2NvbHMsIGFyZ3MuY29uZmlnLT50bHNfZWxsaXB0aWNf
Y3VydmVzLAogICAgICAgYXJncy50dXJuX2N1c3RvbWl6ZXIsIGFyZ3MuY29uZmlnLT50bHNfY2Vy
dF92ZXJpZmllcik7CiAgIHBvcnQtPlNldFRsc0NlcnRQb2xpY3koYXJncy5jb25maWctPnRsc19j
ZXJ0X3BvbGljeSk7Ci0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4ocG9ydCk7CisgIHJl
dHVybiBzdGQ6Om1vdmUocG9ydCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvc3R1
bnByb2Jlci9zdHVucHJvYmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL3N0dW5wcm9iZXIvc3R1bnByb2Jlci5jYwppbmRleCA1MTUwNmI2NzBkNzUx
OGFmMzcxYWQwYWNjMDAyNmFlMmEzNjU3NzE2Li45Nzc4NDE2YTFiMDA5MTIwNWQyN2JkZGM2N2Rm
YTU4NzVjMmE1YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvc3R1bnByb2Jlci9zdHVucHJvYmVyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9zdHVucHJvYmVyL3N0dW5wcm9iZXIu
Y2MKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgU3R1blByb2Jlcjo6UmVxdWVzdGVyIDogcHVibGlj
IHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNz
JiBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRU
aW1lJiB0aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3Qm
IHBhY2tldF90aW1lX3VzKTsKIAogICBjb25zdCBzdGQ6OnZlY3RvcjxSZXF1ZXN0Kj4mIHJlcXVl
c3RzKCkgeyByZXR1cm4gcmVxdWVzdHNfOyB9CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFN0
dW5Qcm9iZXI6OlJlcXVlc3Rlcjo6T25TdHVuUmVzcG9uc2VSZWNlaXZlZCgKICAgICBjb25zdCBj
aGFyKiBidWYsCiAgICAgc2l6ZV90IHNpemUsCiAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNz
JiBhZGRyLAotICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGltZSkgeworICAgIGNvbnN0IGlu
dDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovKSB7CiAgIFJUQ19EQ0hFQ0sodGhyZWFkX2NoZWNr
ZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAgIFJUQ19EQ0hFQ0soc29ja2V0Xyk7CiAgIFJl
cXVlc3QqIHJlcXVlc3QgPSBHZXRSZXF1ZXN0QnlBZGRyZXNzKGFkZHIuaXBhZGRyKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL3N0
dW5wcm9iZXIvc3R1bnByb2Jlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL3N0dW5wcm9iZXIvc3R1bnByb2Jlci5oCmluZGV4IDlmMWQ0MmYzMmNlMzdi
MWJiMmU1NjM4NzcyYTY0YThiNjFhMTNhNzEuLmE0ZmVlY2Q4MTMyYTlmMzViNDljYjk3OGMzM2I2
NDU1MGVlNjZjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9zdHVucHJvYmVyL3N0dW5wcm9iZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvc3R1bnByb2Jlci9zdHVucHJvYmVyLmgK
QEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9pcGFkZHJlc3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9uZXR3b3JrLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRkcmVz
cy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIK
IApAQCAtNDksNyArNTAsNyBAQCBlbnVtIE5hdFR5cGUgewogICBOQVRUWVBFX05PTl9TWU1NRVRS
SUMgIC8vIEJlaGluZCBhIG5vbi1zeW1tZXRyaWMgTkFULgogfTsKIAotY2xhc3MgU3R1blByb2Jl
ciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CitjbGFzcyBSVENfRVhQT1JUIFN0dW5Q
cm9iZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogIHB1YmxpYzoKICAgZW51bSBT
dGF0dXMgeyAgICAgICAvLyBVc2VkIGluIFVNQV9ISVNUT0dSQU1fRU5VTUVSQVRJT04uCiAgICAg
U1VDQ0VTUywgICAgICAgICAgLy8gU3VjY2Vzc2Z1bGx5IHJlY2VpdmVkIGJ5dGVzIGZyb20gdGhl
IHNlcnZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvQlVJTEQuZ24KaW5kZXggNGU2ZTU1ODEwYWQ5YzIwYjg0OWRlNzU2Yzk3Mzc0N2E3
ZTYzOGEzNi4uNjVhYjMzYTUwYjQ5N2QyZGMyMDM2YzM2NTA2MjhiOGQ3NDhiZjhhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvQlVJTEQu
Z24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvQlVJ
TEQuZ24KQEAgLTMxLDYgKzMxLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfcGNfYmFzZSIp
IHsKICAgc291cmNlcyA9IFsKICAgICAiY2hhbm5lbC5jYyIsCiAgICAgImNoYW5uZWwuaCIsCisg
ICAgImNoYW5uZWxpbnRlcmZhY2UuaCIsCiAgICAgImNoYW5uZWxtYW5hZ2VyLmNjIiwKICAgICAi
Y2hhbm5lbG1hbmFnZXIuaCIsCiAgICAgImR0bHNzcnRwdHJhbnNwb3J0LmNjIiwKQEAgLTg3LDYg
Kzg4LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfcGNfYmFzZSIpIHsKICAgICAiLi4vcnRj
X2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdCIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVyczptZXRy
aWNzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogCkBAIC0yMDMsNiArMjA1
LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJwZWVyY29ubmVjdGlvbiIpIHsKICAgICAiLi4vcnRj
X2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIs
CiAgICAgIi4uL3J0Y19iYXNlL2V4cGVyaW1lbnRzOmNvbmdlc3Rpb25fY29udHJvbGxlcl9leHBl
cmltZW50IiwKKyAgICAiLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIuLi9y
dGNfYmFzZS90aGlyZF9wYXJ0eS9iYXNlNjQiLAogICAgICIuLi9ydGNfYmFzZS90aGlyZF9wYXJ0
eS9zaWdzbG90IiwKICAgICAiLi4vc3RhdHMiLApAQCAtMjEwLDYyICsyMTMsMTEgQEAgcnRjX3N0
YXRpY19saWJyYXJ5KCJwZWVyY29ubmVjdGlvbiIpIHsKICAgICAiLi4vc3lzdGVtX3dyYXBwZXJz
OmZpZWxkX3RyaWFsIiwKICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3MiLAogICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CiAKLXJ0Y19zdGF0aWNfbGlicmFyeSgiYnVp
bHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IikgewotICBzb3VyY2VzID0gWwot
ICAgICJidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MiLAotICAgICJi
dWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIsCi0gIF0KLQotICBkZXBz
ID0gWwotICAgICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIs
Ci0gICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKLSAgICAiLi4vbW9kdWxlcy92aWRlb19j
b2Rpbmc6dmlkZW9fY29kaW5nX3V0aWxpdHkiLAotICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zzp3ZWJydGNfdnA5X2hlbHBlcnMiLAotICAgICIuLi9ydGNfYmFzZTpwdHJfdXRpbCIsCi0gICAg
Ii4uL3J0Y19iYXNlL3N5c3RlbTpmYWxsdGhyb3VnaCIsCi0gICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL21lbW9yeSIsCi0gIF0KLX0KLQotIyBUaGlzIHRhcmdldCBpbXBsZW1lbnRz
IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSBtZXRob2RzIHRoYXQgd2lsbCBjcmVhdGUgYQot
IyBQZWVyQ29ubmVjdGlvbiB3aWxsIGZ1bGwgZnVuY3Rpb25hbGl0eSAoYXVkaW8sIHZpZGVvIGFu
ZCBkYXRhKS4gQXBwbGljYXRpb25zCi0jIHRoYXQgd2lzaCB0byByZWR1Y2UgdGhlaXIgYmluYXJ5
IHNpemUgYnkgb21taXR0aW5nIGZ1bmN0aW9uYWxpdHkgdGhleSBkb24ndAotIyBuZWVkIHNob3Vs
ZCB1c2UgQ3JlYXRlTW9kdWxhckNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSBpbnN0ZWFkLCB1
c2luZyB0aGUKLSMgInBlZXJjb25uZWN0aW9uIiBidWlsZCB0YXJnZXQgYW5kIG90aGVyIHRhcmdl
dHMgc3BlY2lmaWMgdG8gdGhlaXIKLSMgcmVxdXJlbWVudHMuIFNlZSBjb21tZW50IGluIHBlZXJj
b25uZWN0aW9uZmFjdG9yeWludGVyZmFjZS5oLgotcnRjX3N0YXRpY19saWJyYXJ5KCJjcmVhdGVf
cGNfZmFjdG9yeSIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAiY3JlYXRlcGVlcmNvbm5lY3Rpb25m
YWN0b3J5LmNjIiwKLSAgXQotCi0gIGRlcHMgPSBbCi0gICAgIi4uL2FwaTpjYWxsZmFjdG9yeV9h
cGkiLAotICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCi0gICAgIi4u
L2FwaS9hdWRpbzphdWRpb19taXhlcl9hcGkiLAotICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmF1
ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19h
cGkiLAotICAgICIuLi9jYWxsIiwKLSAgICAiLi4vY2FsbDpjYWxsX2ludGVyZmFjZXMiLAotICAg
ICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKLSAgICAiLi4vbG9nZ2luZzpydGNfZXZl
bnRfbG9nX2ltcGxfYmFzZSIsCi0gICAgIi4uL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCi0gICAg
Ii4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKLSAgICAiLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6
YXVkaW9fZGV2aWNlIiwKLSAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3By
b2Nlc3NpbmciLAotICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCi0gICAgIi4uL3J0Y19iYXNl
OnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgXQotCi0gIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAm
JiBpc19jbGFuZykgewotICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0g
Q2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KLSAgICBzdXBwcmVzc2VkX2NvbmZp
Z3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRfY29uc3RydWN0cyIgXQotICB9
Ci19Ci0KIHJ0Y19zb3VyY2Vfc2V0KCJsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24iKSB7CiAgIHZp
c2liaWxpdHkgPSBbICIqIiBdCiAgIGFsbG93X3BvaXNvbiA9IFsKQEAgLTI3Myw4ICsyMjUsOCBA
QCBydGNfc291cmNlX3NldCgibGliamluZ2xlX3BlZXJjb25uZWN0aW9uIikgewogICAgICJzb2Z0
d2FyZV92aWRlb19jb2RlY3MiLCAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy83OTI1KTogUmVtb3Zl
LgogICBdCiAgIGRlcHMgPSBbCi0gICAgIjpjcmVhdGVfcGNfZmFjdG9yeSIsCiAgICAgIjpwZWVy
Y29ubmVjdGlvbiIsCisgICAgIi4uL2FwaTpjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeSIs
CiAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgXQogfQpAQCAt
MjkzLDYgKzI0NSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgInJ0Y3BtdXhm
aWx0ZXJfdW5pdHRlc3QuY2MiLAogICAgICAgInJ0cHRyYW5zcG9ydF91bml0dGVzdC5jYyIsCiAg
ICAgICAicnRwdHJhbnNwb3J0dGVzdHV0aWwuaCIsCisgICAgICAic2Vzc2lvbmRlc2NyaXB0aW9u
X3VuaXR0ZXN0LmNjIiwKICAgICAgICJzcnRwZmlsdGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJz
cnRwc2Vzc2lvbl91bml0dGVzdC5jYyIsCiAgICAgICAic3J0cHRlc3R1dGlsLmgiLApAQCAtMzE2
LDYgKzI2OSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpydGNfcGMiLAog
ICAgICAgIjpydGNfcGNfYmFzZSIsCiAgICAgICAiLi4vYXBpOmFycmF5X3ZpZXciLAorICAgICAg
Ii4uL2FwaTpmYWtlX21lZGlhX3RyYW5zcG9ydCIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9w
ZWVyY29ubmVjdGlvbl9hcGkiLAogICAgICAgIi4uL2NhbGw6cnRwX2ludGVyZmFjZXMiLAogICAg
ICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLApAQCAtMzI1LDYgKzI3OSw3IEBAIGlm
IChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL3AycDpwMnBfdGVzdF91dGlscyIsCiAg
ICAgICAiLi4vcDJwOnJ0Y19wMnAiLAogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAg
ICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jh
c2UiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi9y
dGNfYmFzZTpydGNfYmFzZV90ZXN0c19tYWluIiwKQEAgLTM1Myw2ICszMDgsNyBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICBdCiAgICAgZGVwcyA9IFsKICAgICAgICI6cGNfdGVzdF91
dGlscyIsCisgICAgICAiLi4vYXBpOmNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5IiwKICAg
ICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgICAiLi4vYXBp
OnJ0Y19zdGF0c19hcGkiLAogICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRp
b19kZWNvZGVyX2ZhY3RvcnkiLApAQCAtMzYzLDYgKzMxOSw3IEBAIGlmIChydGNfaW5jbHVkZV90
ZXN0cykgewogICAgICAgIi4uL3AycDpwMnBfdGVzdF91dGlscyIsCiAgICAgICAiLi4vcDJwOnJ0
Y19wMnAiLAogICAgICAgIi4uL3BjOnBlZXJjb25uZWN0aW9uIiwKKyAgICAgICIuLi9ydGNfYmFz
ZTpndW5pdF9oZWxwZXJzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgICAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX3Rlc3RzX3V0aWxzIiwKQEAgLTM5MSw2ICszNDgsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICAgICJ0ZXN0L2Zha2V2aWRlb3RyYWNrcmVuZGVyZXIuaCIsCiAgICAgICAidGVz
dC9mYWtldmlkZW90cmFja3NvdXJjZS5oIiwKICAgICAgICJ0ZXN0L2ZyYW1lZ2VuZXJhdG9yY2Fw
dHVyZXJ2aWRlb3RyYWNrc291cmNlLmgiLAorICAgICAgInRlc3QvbW9ja19jaGFubmVsaW50ZXJm
YWNlLmgiLAogICAgICAgInRlc3QvbW9ja19kYXRhY2hhbm5lbC5oIiwKICAgICAgICJ0ZXN0L21v
Y2tfcnRwcmVjZWl2ZXJpbnRlcm5hbC5oIiwKICAgICAgICJ0ZXN0L21vY2tfcnRwc2VuZGVyaW50
ZXJuYWwuaCIsCkBAIC00MDYsNiArMzY0LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAg
ICAgICAiOnBlZXJjb25uZWN0aW9uIiwKICAgICAgICI6cnRjX3BjX2Jhc2UiLAogICAgICAgIi4u
OndlYnJ0Y19jb21tb24iLAorICAgICAgIi4uL2FwaTpjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFj
dG9yeSIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAg
ICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fdGVzdF9hcGkiLAogICAgICAgIi4u
L2FwaTpydGNfc3RhdHNfYXBpIiwKQEAgLTQxOSwxMiArMzc4LDEzIEBAIGlmIChydGNfaW5jbHVk
ZV90ZXN0cykgewogICAgICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKICAgICAgICIuLi9t
ZWRpYTpydGNfbWVkaWFfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2
aWNlOmF1ZGlvX2RldmljZSIsCisgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFw
aSIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3Npbmci
LAogICAgICAgIi4uL3AycDpwMnBfdGVzdF91dGlscyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6Y2hl
Y2tzIiwKKyAgICAgICIuLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZSIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAot
ICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi9ydGNf
YmFzZTpydGNfdGFza19xdWV1ZSIsCiAgICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2ln
c2xvdCIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLApAQCAtNDcwLDYgKzQzMCw3IEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgInJ0cG1lZGlhdXRpbHNfdW5pdHRlc3Qu
Y2MiLAogICAgICAgInJ0cHBhcmFtZXRlcnNjb252ZXJzaW9uX3VuaXR0ZXN0LmNjIiwKICAgICAg
ICJydHBzZW5kZXJyZWNlaXZlcl91bml0dGVzdC5jYyIsCisgICAgICAicnRwdHJhbnNjZWl2ZXJf
dW5pdHRlc3QuY2MiLAogICAgICAgInNjdHB1dGlsc191bml0dGVzdC5jYyIsCiAgICAgICAic3Rh
dHNjb2xsZWN0b3JfdW5pdHRlc3QuY2MiLAogICAgICAgInRlc3QvZmFrZWF1ZGlvY2FwdHVyZW1v
ZHVsZV91bml0dGVzdC5jYyIsCkBAIC00OTIsMTcgKzQ1MywyMyBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICBkZXBzID0gWwogICAgICAgIjpwZWVyY29ubmVjdGlvbiIsCiAgICAgICAi
OnJ0Y19wY19iYXNlIiwKLSAgICAgICIuLi9hcGk6ZmFrZV9mcmFtZV9jcnlwdG8iLAorICAgICAg
Ii4uL2FwaTpjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeSIsCisgICAgICAiLi4vYXBpOmZh
a2VfZnJhbWVfZGVjcnlwdG9yIiwKKyAgICAgICIuLi9hcGk6ZmFrZV9mcmFtZV9lbmNyeXB0b3Ii
LAogICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKKyAgICAgICIu
Li9hcGk6bG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0IiwKICAgICAgICIuLi9hcGk6bW9ja19ydHAi
LAogICAgICAgIi4uL2FwaS91bml0czp0aW1lX2RlbHRhIiwKICAgICAgICIuLi9sb2dnaW5nOmZh
a2VfcnRjX2V2ZW50X2xvZyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAgICIu
Li9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKKyAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90
ZXN0c191dGlscyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAogICAgICAgIi4u
L3J0Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2NCIsCiAgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJz
Om1ldHJpY3MiLAogICAgICAgIi4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MiLAogICAgIF0KICAgICBpZiAoaXNfYW5kcm9pZCkgewogICAgICAg
ZGVwcyArPSBbICI6YW5kcm9pZF9ibGFja19tYWdpYyIgXQpAQCAtNTEzLDYgKzQ4MCw3IEBAIGlm
IChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpwY190ZXN0X3V0aWxzIiwKICAgICAgICIu
Ljp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi9hcGk6Y2FsbGZhY3RvcnlfYXBpIiwKKyAgICAg
ICIuLi9hcGk6ZmFrZV9tZWRpYV90cmFuc3BvcnQiLAogICAgICAgIi4uL2FwaTpsaWJqaW5nbGVf
cGVlcmNvbm5lY3Rpb25fdGVzdF9hcGkiLAogICAgICAgIi4uL2FwaTpydGNfc3RhdHNfYXBpIiwK
ICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLApAQCAtNTMxLDYg
KzQ5OSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL21lZGlhOnJ0Y19k
YXRhIiwgICMgVE9ETyhwaG9nbHVuZCk6IEFGQUlLIG9ubHkgdXNlZCBmb3Igb25lIHNjdHAgY29u
c3RhbnQuCiAgICAgICAiLi4vbWVkaWE6cnRjX21lZGlhX2Jhc2UiLAogICAgICAgIi4uL21lZGlh
OnJ0Y19tZWRpYV90ZXN0c191dGlscyIsCisgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nOmFwaSIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nl
c3NpbmciLAogICAgICAgIi4uL21vZHVsZXMvdXRpbGl0eTp1dGlsaXR5IiwKICAgICAgICIuLi9w
MnA6cDJwX3Rlc3RfdXRpbHMiLApAQCAtNTM5LDcgKzUwOCw2IEBAIGlmIChydGNfaW5jbHVkZV90
ZXN0cykgewogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAgICIuLi9ydGNfYmFz
ZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNf
bWFpbiIsCi0gICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAg
Ii4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKICAgICAgICIuLi9ydGNfYmFzZTpzYWZlX2Nv
bnZlcnNpb25zIiwKICAgICAgICIuLi90ZXN0OmF1ZGlvX2NvZGVjX21vY2tzIiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1aWx0aW5f
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZkN2RhZWE2ZmE5OGFm
N2YwMGE5YmZmZjQxNWY5OTlmOGI3OWUzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MKKysrIC9kZXYv
bnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUg
InBjL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgotCi0jaW5jbHVk
ZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5oIgot
I2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX3JhdGVfYWxsb2Nh
dG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9kZWZhdWx0X3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
dXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9z
eXN0ZW0vZmFsbHRocm91Z2guaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLW5hbWVzcGFjZSB7
Ci0KLWNsYXNzIEJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5Ci0gICAgOiBwdWJs
aWMgVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSB7Ci0gcHVibGljOgotICBCdWlsdGluVmlk
ZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpID0gZGVmYXVsdDsKLSAgfkJ1aWx0aW5WaWRlb0Jp
dHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OwotCi0gIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+IENyZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRv
cigKLSAgICAgIGNvbnN0IFZpZGVvQ29kZWMmIGNvZGVjKSBvdmVycmlkZSB7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvcj4gcmF0ZV9hbGxvY2F0b3I7Ci0gICAgc3dp
dGNoIChjb2RlYy5jb2RlY1R5cGUpIHsKLSAgICAgIGNhc2Uga1ZpZGVvQ29kZWNWUDg6Ci0gICAg
ICAgIFJUQ19GQUxMVEhST1VHSCgpOwotICAgICAgY2FzZSBrVmlkZW9Db2RlY0gyNjQ6Ci0gICAg
ICAgIHJhdGVfYWxsb2NhdG9yLnJlc2V0KG5ldyBTaW11bGNhc3RSYXRlQWxsb2NhdG9yKGNvZGVj
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBrVmlkZW9Db2RlY1ZQOToKLSAgICAgICAg
cmF0ZV9hbGxvY2F0b3IucmVzZXQobmV3IFN2Y1JhdGVBbGxvY2F0b3IoY29kZWMpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByYXRlX2FsbG9jYXRvci5yZXNldChu
ZXcgRGVmYXVsdFZpZGVvQml0cmF0ZUFsbG9jYXRvcihjb2RlYykpOwotICAgIH0KLSAgICByZXR1
cm4gcmF0ZV9hbGxvY2F0b3I7Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1zdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KLUNyZWF0ZUJ1aWx0aW5WaWRl
b0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkgewotICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8
QnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+KCk7Ci19Ci0KLX0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVpbHRpbl92aWRl
b19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDYwZjJhZmNiYWJhMTI3ODE0ZDYzNWJhZTQyZjAwM2FkMzAyMGZlNDcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9m
YWN0b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vKgotICogIENvcHlyaWdo
dCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
Ci0gKi8KLQotI2lmbmRlZiBQQ19CVUlMVElOX1ZJREVPX0JJVFJBVEVfQUxMT0NBVE9SX0ZBQ1RP
UllfSF8KLSNkZWZpbmUgUENfQlVJTFRJTl9WSURFT19CSVRSQVRFX0FMTE9DQVRPUl9GQUNUT1JZ
X0hfCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotc3RkOjp1
bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+Ci1DcmVhdGVCdWlsdGluVmlk
ZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpOwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0K
LSNlbmRpZiAgLy8gUENfQlVJTFRJTl9WSURFT19CSVRSQVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9idW5kbGVmaWx0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9idW5kbGVmaWx0ZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIw
MWQyYmY5NWNhYjU0NzE2MjA5MmQ5MTk3ZTc5MTA5ODFjZWVmZDYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVyLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDcg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgInBjL2J1bmRsZWZpbHRlci5o
IgotCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9ydHB1dGlscy5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIGNyaWNrZXQgewotCi1CdW5kbGVGaWx0ZXI6OkJ1bmRs
ZUZpbHRlcigpIHt9Ci0KLUJ1bmRsZUZpbHRlcjo6fkJ1bmRsZUZpbHRlcigpIHt9Ci0KLWJvb2wg
QnVuZGxlRmlsdGVyOjpEZW11eFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
KSB7Ci0gIC8vIEZvciBSVFAgcGFja2V0cywgd2UgY2hlY2sgd2hldGhlciB0aGUgcGF5bG9hZCB0
eXBlIGNhbiBiZSBmb3VuZC4KLSAgaWYgKCFJc1J0cFBhY2tldChkYXRhLCBsZW4pKSB7Ci0gICAg
cmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgaW50IHBheWxvYWRfdHlwZSA9IDA7Ci0gIGlmICghR2V0
UnRwUGF5bG9hZFR5cGUoZGF0YSwgbGVuLCAmcGF5bG9hZF90eXBlKSkgewotICAgIHJldHVybiBm
YWxzZTsKLSAgfQotICByZXR1cm4gRmluZFBheWxvYWRUeXBlKHBheWxvYWRfdHlwZSk7Ci19Ci0K
LXZvaWQgQnVuZGxlRmlsdGVyOjpBZGRQYXlsb2FkVHlwZShpbnQgcGF5bG9hZF90eXBlKSB7Ci0g
IHBheWxvYWRfdHlwZXNfLmluc2VydChwYXlsb2FkX3R5cGUpOwotfQotCi1ib29sIEJ1bmRsZUZp
bHRlcjo6RmluZFBheWxvYWRUeXBlKGludCBwbF90eXBlKSBjb25zdCB7Ci0gIHJldHVybiBwYXls
b2FkX3R5cGVzXy5maW5kKHBsX3R5cGUpICE9IHBheWxvYWRfdHlwZXNfLmVuZCgpOwotfQotCi12
b2lkIEJ1bmRsZUZpbHRlcjo6Q2xlYXJBbGxQYXlsb2FkVHlwZXMoKSB7Ci0gIHBheWxvYWRfdHlw
ZXNfLmNsZWFyKCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZp
bHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTQ3N2Y0NTdmMjk0OGJiNDM0
MTU3M2VhYmRjZTJkMWZmODk5YzUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2J1bmRsZWZpbHRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLQotI2lmbmRlZiBQQ19CVU5ETEVGSUxURVJfSF8KLSNkZWZpbmUgUENfQlVORExF
RklMVEVSX0hfCi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotI2luY2x1ZGUgPHNldD4KLSNpbmNs
dWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJtZWRpYS9iYXNlL3N0cmVhbXBhcmFtcy5oIgotLy8j
aW5jbHVkZSAicnRjX2Jhc2UvYmFzaWN0eXBlcy5oIgotCi1uYW1lc3BhY2UgY3JpY2tldCB7Ci0K
LS8vIEluIGNhc2Ugb2Ygc2luZ2xlIFJUUCBzZXNzaW9uIGFuZCBzaW5nbGUgdHJhbnNwb3J0IGNo
YW5uZWwsIGFsbCBzZXNzaW9uCi0vLyAob3IgbWVkaWEpIGNoYW5uZWxzIHNoYXJlIGEgY29tbW9u
IHRyYW5zcG9ydCBjaGFubmVsLiBIZW5jZSB0aGV5IGFsbCBnZXQKLS8vIFNpZ25hbFJlYWRQYWNr
ZXQgd2hlbiBwYWNrZXQgcmVjZWl2ZWQgb24gdHJhbnNwb3J0IGNoYW5uZWwuIFRoaXMgcmVxdWly
ZXMKLS8vIGNyaWNrZXQ6OkJhc2VDaGFubmVsIHRvIGtub3cgYWxsIHRoZSB2YWxpZCBzb3VyY2Vz
LCBlbHNlIG1lZGlhIGNoYW5uZWwKLS8vIHdpbGwgZGVjb2RlIGludmFsaWQgcGFja2V0cy4KLS8v
Ci0vLyBUaGlzIGNsYXNzIGRldGVybWluZXMgd2hldGhlciBhIHBhY2tldCBpcyBkZXN0aW5lZCBm
b3IgY3JpY2tldDo6QmFzZUNoYW5uZWwuCi0vLyBUaGlzIGlzIG9ubHkgdG8gYmUgdXNlZCBmb3Ig
UlRQIHBhY2tldHMgYXMgUlRDUCBwYWNrZXRzIGFyZSBub3QgZmlsdGVyZWQuCi0vLyBGb3IgUlRQ
IHBhY2tldHMsIHRoaXMgaXMgZGVjaWRlZCBiYXNlZCBvbiB0aGUgcGF5bG9hZCB0eXBlLgotY2xh
c3MgQnVuZGxlRmlsdGVyIHsKLSBwdWJsaWM6Ci0gIEJ1bmRsZUZpbHRlcigpOwotICB+QnVuZGxl
RmlsdGVyKCk7Ci0KLSAgLy8gRGV0ZXJtaW5lcyBpZiBhIFJUUCBwYWNrZXQgYmVsb25ncyB0byB2
YWxpZCBjcmlja2V0OjpCYXNlQ2hhbm5lbC4KLSAgYm9vbCBEZW11eFBhY2tldChjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgbGVuKTsKLQotICAvLyBBZGRzIHRoZSBzdXBwb3J0ZWQgcGF5bG9h
ZCB0eXBlLgotICB2b2lkIEFkZFBheWxvYWRUeXBlKGludCBwYXlsb2FkX3R5cGUpOwotCi0gIC8v
IFB1YmxpYyBmb3IgdW5pdHRlc3RzLgotICBib29sIEZpbmRQYXlsb2FkVHlwZShpbnQgcGxfdHlw
ZSkgY29uc3Q7Ci0gIHZvaWQgQ2xlYXJBbGxQYXlsb2FkVHlwZXMoKTsKLQotIHByaXZhdGU6Ci0g
IHN0ZDo6c2V0PGludD4gcGF5bG9hZF90eXBlc187Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgY3Jp
Y2tldAotCi0jZW5kaWYgIC8vIFBDX0JVTkRMRUZJTFRFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVyX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVu
ZGxlZmlsdGVyX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2Nh
ZGJmYmFjNjEzYzY0MjlhOGJlMjc3ZTIxZjM3NWNmYzRiZDcxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZpbHRlcl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBA
IC0xLDczICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJwYy9idW5kbGVm
aWx0ZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgotCi11c2luZyBjcmlja2V0OjpT
dHJlYW1QYXJhbXM7Ci0KLXN0YXRpYyBjb25zdCBpbnQga1BheWxvYWRUeXBlMSA9IDB4MTE7Ci1z
dGF0aWMgY29uc3QgaW50IGtQYXlsb2FkVHlwZTIgPSAweDIyOwotc3RhdGljIGNvbnN0IGludCBr
UGF5bG9hZFR5cGUzID0gMHgzMzsKLQotLy8gU1NSQyA9IDB4MTExMSwgUGF5bG9hZCB0eXBlID0g
MHgxMQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga1J0cFBhY2tldFB0MVNzcmMxW10gPSB7
Ci0gICAgMHg4MCwga1BheWxvYWRUeXBlMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwKLSAgICAw
eDAwLCAweDAwLCAgICAgICAgICAweDAwLCAweDAwLCAweDExLCAweDExLAotfTsKLQotLy8gU1NS
QyA9IDB4MjIyMiwgUGF5bG9hZCB0eXBlID0gMHgyMgotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo
YXIga1J0cFBhY2tldFB0MlNzcmMyW10gPSB7Ci0gICAgMHg4MCwgMHg4MCArIGtQYXlsb2FkVHlw
ZTIsCi0gICAgMHgwMCwgMHgwMSwKLSAgICAweDAwLCAweDAwLAotICAgIDB4MDAsIDB4MDAsCi0g
ICAgMHgwMCwgMHgwMCwKLSAgICAweDIyLCAweDIyLAotfTsKLQotLy8gU1NSQyA9IDB4MjIyMiwg
UGF5bG9hZCB0eXBlID0gMHgzMwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga1J0cFBhY2tl
dFB0M1NzcmMyW10gPSB7Ci0gICAgMHg4MCwga1BheWxvYWRUeXBlMywgMHgwMCwgMHgwMSwgMHgw
MCwgMHgwMCwKLSAgICAweDAwLCAweDAwLCAgICAgICAgICAweDAwLCAweDAwLCAweDIyLCAweDIy
LAotfTsKLQotLy8gQW4gU0NUUCBwYWNrZXQuCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBr
U2N0cFBhY2tldFtdID0gewotICAgIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDEsIDB4ZmYsIDB4ZmYs
IDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsCi0gICAgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgw
MCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLX07Ci0KLVRFU1QoQnVuZGxlRmlsdGVy
VGVzdCwgUnRwUGFja2V0VGVzdCkgewotICBjcmlja2V0OjpCdW5kbGVGaWx0ZXIgYnVuZGxlX2Zp
bHRlcjsKLSAgYnVuZGxlX2ZpbHRlci5BZGRQYXlsb2FkVHlwZShrUGF5bG9hZFR5cGUxKTsKLSAg
RVhQRUNUX1RSVUUoYnVuZGxlX2ZpbHRlci5EZW11eFBhY2tldChrUnRwUGFja2V0UHQxU3NyYzEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGtSdHBQYWNr
ZXRQdDFTc3JjMSkpKTsKLSAgYnVuZGxlX2ZpbHRlci5BZGRQYXlsb2FkVHlwZShrUGF5bG9hZFR5
cGUyKTsKLSAgRVhQRUNUX1RSVUUoYnVuZGxlX2ZpbHRlci5EZW11eFBhY2tldChrUnRwUGFja2V0
UHQyU3NyYzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m
KGtSdHBQYWNrZXRQdDJTc3JjMikpKTsKLQotICAvLyBQYXlsb2FkIHR5cGUgMHgzMyBpcyBub3Qg
YWRkZWQuCi0gIEVYUEVDVF9GQUxTRShidW5kbGVfZmlsdGVyLkRlbXV4UGFja2V0KGtSdHBQYWNr
ZXRQdDNTc3JjMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZW9mKGtSdHBQYWNrZXRQdDNTc3JjMikpKTsKLSAgLy8gU2l6ZSBpcyB0b28gc21hbGwuCi0gIEVY
UEVDVF9GQUxTRShidW5kbGVfZmlsdGVyLkRlbXV4UGFja2V0KGtSdHBQYWNrZXRQdDFTc3JjMSwg
MTEpKTsKLQotICBidW5kbGVfZmlsdGVyLkNsZWFyQWxsUGF5bG9hZFR5cGVzKCk7Ci0gIEVYUEVD
VF9GQUxTRShidW5kbGVfZmlsdGVyLkRlbXV4UGFja2V0KGtSdHBQYWNrZXRQdDFTc3JjMSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGtSdHBQYWNrZXRQ
dDFTc3JjMSkpKTsKLSAgRVhQRUNUX0ZBTFNFKGJ1bmRsZV9maWx0ZXIuRGVtdXhQYWNrZXQoa1J0
cFBhY2tldFB0MlNzcmMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplb2Yoa1J0cFBhY2tldFB0MlNzcmMyKSkpOwotfQotCi1URVNUKEJ1bmRsZUZpbHRlclRl
c3QsIEludmFsaWRSdHBQYWNrZXQpIHsKLSAgY3JpY2tldDo6QnVuZGxlRmlsdGVyIGJ1bmRsZV9m
aWx0ZXI7Ci0gIEVYUEVDVF9GQUxTRShidW5kbGVfZmlsdGVyLkRlbXV4UGFja2V0KGtTY3RwUGFj
a2V0LCBzaXplb2Yoa1NjdHBQYWNrZXQpKSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbC5jYwppbmRleCBiNjNjZWE3
Y2VjZjMwMjFjMzYyYTdhNzJkNzg0NmM3ZTIxMzJhY2ZhLi42N2Q2OTg0ODdjZTRmODliY2QyZjky
MzZiN2NlZjAyNGY2YTlkNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWwuY2MKQEAgLTkzLDYgKzkzLDcgQEAgdm9p
ZCBSdHBTZW5kUGFyYW1ldGVyc0Zyb21NZWRpYURlc2NyaXB0aW9uKAogICAgIFJ0cFNlbmRQYXJh
bWV0ZXJzPENvZGVjPiogc2VuZF9wYXJhbXMpIHsKICAgUnRwUGFyYW1ldGVyc0Zyb21NZWRpYURl
c2NyaXB0aW9uKGRlc2MsIGV4dGVuc2lvbnMsIHNlbmRfcGFyYW1zKTsKICAgc2VuZF9wYXJhbXMt
Pm1heF9iYW5kd2lkdGhfYnBzID0gZGVzYy0+YmFuZHdpZHRoKCk7CisgIHNlbmRfcGFyYW1zLT5l
eHRtYXBfYWxsb3dfbWl4ZWQgPSBkZXNjLT5leHRtYXBfYWxsb3dfbWl4ZWQoKTsKIH0KIAogQmFz
ZUNoYW5uZWw6OkJhc2VDaGFubmVsKHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLApAQCAtMTAx
LDcgKzEwMiw3IEBAIEJhc2VDaGFubmVsOjpCYXNlQ2hhbm5lbChydGM6OlRocmVhZCogd29ya2Vy
X3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFD
aGFubmVsPiBtZWRpYV9jaGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBz
cnRwX3JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9u
cyBjcnlwdG9fb3B0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkNyeXB0
b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpCiAgICAgOiB3b3JrZXJfdGhyZWFkXyh3b3JrZXJfdGhy
ZWFkKSwKICAgICAgIG5ldHdvcmtfdGhyZWFkXyhuZXR3b3JrX3RocmVhZCksCiAgICAgICBzaWdu
YWxpbmdfdGhyZWFkXyhzaWduYWxpbmdfdGhyZWFkKSwKQEAgLTExNyw2ICsxMTgsMTEgQEAgQmFz
ZUNoYW5uZWw6OkJhc2VDaGFubmVsKHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAogQmFzZUNo
YW5uZWw6On5CYXNlQ2hhbm5lbCgpIHsKICAgVFJBQ0VfRVZFTlQwKCJ3ZWJydGMiLCAiQmFzZUNo
YW5uZWw6On5CYXNlQ2hhbm5lbCIpOwogICBSVENfRENIRUNLX1JVTl9PTih3b3JrZXJfdGhyZWFk
Xyk7CisKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBtZWRpYV90cmFuc3BvcnRfLT5T
ZXROZXR3b3JrQ2hhbmdlQ2FsbGJhY2sobnVsbHB0cik7CisgIH0KKwogICAvLyBFYXRzIGFueSBv
dXRzdGFuZGluZyBtZXNzYWdlcyBvciBwYWNrZXRzLgogICB3b3JrZXJfdGhyZWFkXy0+Q2xlYXIo
Jmludm9rZXJfKTsKICAgd29ya2VyX3RocmVhZF8tPkNsZWFyKHRoaXMpOwpAQCAtMTM2LDggKzE0
MiwxNSBAQCBib29sIEJhc2VDaGFubmVsOjpDb25uZWN0VG9SdHBUcmFuc3BvcnQoKSB7CiAgICAg
ICB0aGlzLCAmQmFzZUNoYW5uZWw6Ok9uVHJhbnNwb3J0UmVhZHlUb1NlbmQpOwogICBydHBfdHJh
bnNwb3J0Xy0+U2lnbmFsUnRjcFBhY2tldFJlY2VpdmVkLmNvbm5lY3QoCiAgICAgICB0aGlzLCAm
QmFzZUNoYW5uZWw6Ok9uUnRjcFBhY2tldFJlY2VpdmVkKTsKLSAgcnRwX3RyYW5zcG9ydF8tPlNp
Z25hbE5ldHdvcmtSb3V0ZUNoYW5nZWQuY29ubmVjdCgKLSAgICAgIHRoaXMsICZCYXNlQ2hhbm5l
bDo6T25OZXR3b3JrUm91dGVDaGFuZ2VkKTsKKworICAvLyBJZiBtZWRpYSB0cmFuc3BvcnQgaXMg
dXNlZCwgaXQncyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIG5ldHdvcmsKKyAgLy8gcm91dGUg
Y2hhbmdlZCBjYWxsYmFja3MuCisgIGlmICghbWVkaWFfdHJhbnNwb3J0XykgeworICAgIHJ0cF90
cmFuc3BvcnRfLT5TaWduYWxOZXR3b3JrUm91dGVDaGFuZ2VkLmNvbm5lY3QoCisgICAgICAgIHRo
aXMsICZCYXNlQ2hhbm5lbDo6T25OZXR3b3JrUm91dGVDaGFuZ2VkKTsKKyAgfQorICAvLyBUT0RP
KGJ1Z3Mud2VicnRjLm9yZy85NzE5KTogTWVkaWEgdHJhbnNwb3J0IHNob3VsZCBhbHNvIGJlIHVz
ZWQgdG8gcHJvdmlkZQorICAvLyAnd3JpdGFibGUnIHN0YXRlIGhlcmUuCiAgIHJ0cF90cmFuc3Bv
cnRfLT5TaWduYWxXcml0YWJsZVN0YXRlLmNvbm5lY3QodGhpcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQmFzZUNoYW5uZWw6Ok9uV3JpdGFibGVTdGF0
ZSk7CiAgIHJ0cF90cmFuc3BvcnRfLT5TaWduYWxTZW50UGFja2V0LmNvbm5lY3QodGhpcywKQEAg
LTE1NSwxOSArMTY4LDI5IEBAIHZvaWQgQmFzZUNoYW5uZWw6OkRpc2Nvbm5lY3RGcm9tUnRwVHJh
bnNwb3J0KCkgewogICBydHBfdHJhbnNwb3J0Xy0+U2lnbmFsU2VudFBhY2tldC5kaXNjb25uZWN0
KHRoaXMpOwogfQogCi12b2lkIEJhc2VDaGFubmVsOjpJbml0X3cod2VicnRjOjpSdHBUcmFuc3Bv
cnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCkgewordm9pZCBCYXNlQ2hhbm5lbDo6SW5pdF93KHdl
YnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNw
b3J0KSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKHdvcmtlcl90aHJlYWRfKTsKKyAgbWVkaWFfdHJh
bnNwb3J0XyA9IG1lZGlhX3RyYW5zcG9ydDsKKwogICBuZXR3b3JrX3RocmVhZF8tPkludm9rZTx2
b2lkPigKICAgICAgIFJUQ19GUk9NX0hFUkUsIFt0aGlzLCBydHBfdHJhbnNwb3J0XSB7IFNldFJ0
cFRyYW5zcG9ydChydHBfdHJhbnNwb3J0KTsgfSk7CiAKICAgLy8gQm90aCBSVFAgYW5kIFJUQ1Ag
Y2hhbm5lbHMgc2hvdWxkIGJlIHNldCwgd2UgY2FuIGNhbGwgU2V0SW50ZXJmYWNlIG9uCiAgIC8v
IHRoZSBtZWRpYSBjaGFubmVsIGFuZCBpdCBjYW4gc2V0IG5ldHdvcmsgb3B0aW9ucy4KLSAgbWVk
aWFfY2hhbm5lbF8tPlNldEludGVyZmFjZSh0aGlzKTsKKyAgbWVkaWFfY2hhbm5lbF8tPlNldElu
dGVyZmFjZSh0aGlzLCBtZWRpYV90cmFuc3BvcnQpOworCisgIFJUQ19MT0coTFNfSU5GTykgPDwg
IkJhc2VDaGFubmVsOjpJbml0X3csIG1lZGlhX3RyYW5zcG9ydD0iCisgICAgICAgICAgICAgICAg
ICAgPDwgKG1lZGlhX3RyYW5zcG9ydF8gIT0gbnVsbHB0cik7CisgIGlmIChtZWRpYV90cmFuc3Bv
cnRfKSB7CisgICAgbWVkaWFfdHJhbnNwb3J0Xy0+U2V0TmV0d29ya0NoYW5nZUNhbGxiYWNrKHRo
aXMpOworICB9CiB9CiAKIHZvaWQgQmFzZUNoYW5uZWw6OkRlaW5pdCgpIHsKICAgUlRDX0RDSEVD
Syh3b3JrZXJfdGhyZWFkXy0+SXNDdXJyZW50KCkpOwotICBtZWRpYV9jaGFubmVsXy0+U2V0SW50
ZXJmYWNlKE5VTEwpOworICBtZWRpYV9jaGFubmVsXy0+U2V0SW50ZXJmYWNlKC8qaWZhY2U9Ki9u
dWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0
PSovbnVsbHB0cik7CiAgIC8vIFBhY2tldHMgYXJyaXZlIG9uIHRoZSBuZXR3b3JrIHRocmVhZCwg
cHJvY2Vzc2luZyBwYWNrZXRzIGNhbGxzIHZpcnR1YWwKICAgLy8gZnVuY3Rpb25zLCBzbyBuZWVk
IHRvIHN0b3AgdGhpcyBwcm9jZXNzIGluIERlaW5pdCB0aGF0IGlzIGNhbGxlZCBpbgogICAvLyBk
ZXJpdmVkIGNsYXNzZXMgZGVzdHJ1Y3Rvci4KQEAgLTM1MCw2ICszNzMsOCBAQCB2b2lkIEJhc2VD
aGFubmVsOjpPbldyaXRhYmxlU3RhdGUoYm9vbCB3cml0YWJsZSkgewogCiB2b2lkIEJhc2VDaGFu
bmVsOjpPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCiAgICAgYWJzbDo6b3B0aW9uYWw8cnRjOjpOZXR3
b3JrUm91dGU+IG5ldHdvcmtfcm91dGUpIHsKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiTmV0d29y
ayByb3V0ZSB3YXMgY2hhbmdlZC4iOworCiAgIFJUQ19EQ0hFQ0sobmV0d29ya190aHJlYWRfLT5J
c0N1cnJlbnQoKSk7CiAgIHJ0Yzo6TmV0d29ya1JvdXRlIG5ld19yb3V0ZTsKICAgaWYgKG5ldHdv
cmtfcm91dGUpIHsKQEAgLTQzOSwxMyArNDY0LDEyIEBAIHZvaWQgQmFzZUNoYW5uZWw6Ok9uUnRw
UGFja2V0KGNvbnN0IHdlYnJ0Yzo6UnRwUGFja2V0UmVjZWl2ZWQmIHBhcnNlZF9wYWNrZXQpIHsK
ICAgLy8gUnRwUGFja2V0UmVjZWl2ZWQuYXJyaXZhbF90aW1lX21zID0gKFBhY2tldFRpbWUgKyA1
MDApIC8gMTAwMDsKICAgLy8gTm90ZTogVGhlIHxub3RfYmVmb3JlfCBmaWVsZCBpcyBhbHdheXMg
MCBoZXJlLiBUaGlzIGZpZWxkIGlzIG5vdCBjdXJyZW50bHkKICAgLy8gdXNlZCwgc28gaXQgc2hv
dWxkIGJlIGZpbmUuCi0gIGludDY0X3QgdGltZXN0YW1wID0gLTE7CisgIGludDY0X3QgdGltZXN0
YW1wX3VzID0gLTE7CiAgIGlmIChwYXJzZWRfcGFja2V0LmFycml2YWxfdGltZV9tcygpID4gMCkg
ewotICAgIHRpbWVzdGFtcCA9IHBhcnNlZF9wYWNrZXQuYXJyaXZhbF90aW1lX21zKCkgKiAxMDAw
OworICAgIHRpbWVzdGFtcF91cyA9IHBhcnNlZF9wYWNrZXQuYXJyaXZhbF90aW1lX21zKCkgKiAx
MDAwOwogICB9Ci0gIHJ0Yzo6UGFja2V0VGltZSBwYWNrZXRfdGltZSh0aW1lc3RhbXAsIC8qbm90
X2JlZm9yZT0qLzApOwogCi0gIE9uUGFja2V0UmVjZWl2ZWQoLypydGNwPSovZmFsc2UsIHBhcnNl
ZF9wYWNrZXQuQnVmZmVyKCksIHBhY2tldF90aW1lKTsKKyAgT25QYWNrZXRSZWNlaXZlZCgvKnJ0
Y3A9Ki9mYWxzZSwgcGFyc2VkX3BhY2tldC5CdWZmZXIoKSwgdGltZXN0YW1wX3VzKTsKIH0KIAog
dm9pZCBCYXNlQ2hhbm5lbDo6VXBkYXRlUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKApAQCAtNDcyLDEz
ICs0OTYsMTMgQEAgYm9vbCBCYXNlQ2hhbm5lbDo6UmVnaXN0ZXJSdHBEZW11eGVyU2luaygpIHsK
IH0KIAogdm9pZCBCYXNlQ2hhbm5lbDo6T25SdGNwUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25X
cml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewotICBPblBhY2tldFJlY2Vp
dmVkKC8qcnRjcD0qL3RydWUsICpwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKKyAgT25Q
YWNrZXRSZWNlaXZlZCgvKnJ0Y3A9Ki90cnVlLCAqcGFja2V0LCBwYWNrZXRfdGltZV91cyk7CiB9
CiAKIHZvaWQgQmFzZUNoYW5uZWw6Ok9uUGFja2V0UmVjZWl2ZWQoYm9vbCBydGNwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVy
JiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBpZiAoIWhhc19yZWNlaXZlZF9wYWNr
ZXRfICYmICFydGNwKSB7CiAgICAgaGFzX3JlY2VpdmVkX3BhY2tldF8gPSB0cnVlOwogICAgIHNp
Z25hbGluZ190aHJlYWQoKS0+UG9zdChSVENfRlJPTV9IRVJFLCB0aGlzLCBNU0dfRklSU1RQQUNL
RVRSRUNFSVZFRCk7CkBAIC01MDQsMjEgKzUyOCwyMSBAQCB2b2lkIEJhc2VDaGFubmVsOjpPblBh
Y2tldFJlY2VpdmVkKGJvb2wgcnRjcCwKIAogICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lkPigK
ICAgICAgIFJUQ19GUk9NX0hFUkUsIHdvcmtlcl90aHJlYWRfLAotICAgICAgQmluZCgmQmFzZUNo
YW5uZWw6OlByb2Nlc3NQYWNrZXQsIHRoaXMsIHJ0Y3AsIHBhY2tldCwgcGFja2V0X3RpbWUpKTsK
KyAgICAgIEJpbmQoJkJhc2VDaGFubmVsOjpQcm9jZXNzUGFja2V0LCB0aGlzLCBydGNwLCBwYWNr
ZXQsIHBhY2tldF90aW1lX3VzKSk7CiB9CiAKIHZvaWQgQmFzZUNoYW5uZWw6OlByb2Nlc3NQYWNr
ZXQoYm9vbCBydGNwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OkNvcHlPbldyaXRlQnVmZmVyJiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICBSVENfRENIRUNL
KHdvcmtlcl90aHJlYWRfLT5Jc0N1cnJlbnQoKSk7CiAKICAgLy8gTmVlZCB0byBjb3B5IHZhcmlh
YmxlIGJlY2F1c2UgT25SdGNwUmVjZWl2ZWQvT25QYWNrZXRSZWNlaXZlZAogICAvLyByZXF1aXJl
cyBub24tY29uc3QgcG9pbnRlciB0byBidWZmZXIuIFRoaXMgZG9lc24ndCBtZW1jcHkgdGhlIGFj
dHVhbCBkYXRhLgogICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIGRhdGEocGFja2V0KTsKICAgaWYg
KHJ0Y3ApIHsKLSAgICBtZWRpYV9jaGFubmVsXy0+T25SdGNwUmVjZWl2ZWQoJmRhdGEsIHBhY2tl
dF90aW1lKTsKKyAgICBtZWRpYV9jaGFubmVsXy0+T25SdGNwUmVjZWl2ZWQoJmRhdGEsIHBhY2tl
dF90aW1lX3VzKTsKICAgfSBlbHNlIHsKLSAgICBtZWRpYV9jaGFubmVsXy0+T25QYWNrZXRSZWNl
aXZlZCgmZGF0YSwgcGFja2V0X3RpbWUpOworICAgIG1lZGlhX2NoYW5uZWxfLT5PblBhY2tldFJl
Y2VpdmVkKCZkYXRhLCBwYWNrZXRfdGltZV91cyk7CiAgIH0KIH0KIApAQCAtNjczLDcgKzY5Nyw3
IEBAIGJvb2wgQmFzZUNoYW5uZWw6OlVwZGF0ZVJlbW90ZVN0cmVhbXNfdygKIFJ0cEhlYWRlckV4
dGVuc2lvbnMgQmFzZUNoYW5uZWw6OkdldEZpbHRlcmVkUnRwSGVhZGVyRXh0ZW5zaW9ucygKICAg
ICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25zJiBleHRlbnNpb25zKSB7CiAgIFJUQ19EQ0hFQ0so
cnRwX3RyYW5zcG9ydF8pOwotICBpZiAoY3J5cHRvX29wdGlvbnNfLmVuYWJsZV9lbmNyeXB0ZWRf
cnRwX2hlYWRlcl9leHRlbnNpb25zKSB7CisgIGlmIChjcnlwdG9fb3B0aW9uc18uc3J0cC5lbmFi
bGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucykgewogICAgIFJ0cEhlYWRlckV4dGVu
c2lvbnMgZmlsdGVyZWQ7CiAgICAgYXV0byBwcmVkID0gW10oY29uc3Qgd2VicnRjOjpSdHBFeHRl
bnNpb24mIGV4dGVuc2lvbikgewogICAgICAgcmV0dXJuICFleHRlbnNpb24uZW5jcnlwdDsKQEAg
LTcwMCw3ICs3MjQsNyBAQCB2b2lkIEJhc2VDaGFubmVsOjpPbk1lc3NhZ2UocnRjOjpNZXNzYWdl
KiBwbXNnKSB7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNU0dfRklSU1RQQUNLRVRS
RUNFSVZFRDogewotICAgICAgU2lnbmFsRmlyc3RQYWNrZXRSZWNlaXZlZCh0aGlzKTsKKyAgICAg
IFNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWRfKHRoaXMpOwogICAgICAgYnJlYWs7CiAgICAgfQog
ICB9CkBAIC03NDIsNyArNzY2LDcgQEAgVm9pY2VDaGFubmVsOjpWb2ljZUNoYW5uZWwocnRjOjpU
aHJlYWQqIHdvcmtlcl90aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Vm9pY2VNZWRpYUNoYW5uZWw+IG1lZGlhX2NoYW5uZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBzcnRwX3JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKQogICAg
IDogQmFzZUNoYW5uZWwod29ya2VyX3RocmVhZCwKICAgICAgICAgICAgICAgICAgIG5ldHdvcmtf
dGhyZWFkLAogICAgICAgICAgICAgICAgICAgc2lnbmFsaW5nX3RocmVhZCwKQEAgLTc2NSw2ICs3
ODksMTEgQEAgdm9pZCBCYXNlQ2hhbm5lbDo6VXBkYXRlTWVkaWFTZW5kUmVjdlN0YXRlKCkgewog
ICAgICAgQmluZCgmQmFzZUNoYW5uZWw6OlVwZGF0ZU1lZGlhU2VuZFJlY3ZTdGF0ZV93LCB0aGlz
KSk7CiB9CiAKK3ZvaWQgQmFzZUNoYW5uZWw6Ok9uTmV0d29ya1JvdXRlQ2hhbmdlZCgKKyAgICBj
b25zdCBydGM6Ok5ldHdvcmtSb3V0ZSYgbmV0d29ya19yb3V0ZSkgeworICBPbk5ldHdvcmtSb3V0
ZUNoYW5nZWQoYWJzbDo6bWFrZV9vcHRpb25hbChuZXR3b3JrX3JvdXRlKSk7Cit9CisKIHZvaWQg
Vm9pY2VDaGFubmVsOjpVcGRhdGVNZWRpYVNlbmRSZWN2U3RhdGVfdygpIHsKICAgLy8gUmVuZGVy
IGluY29taW5nIGRhdGEgaWYgd2UncmUgdGhlIGFjdGl2ZSBjYWxsLCBhbmQgd2UgaGF2ZSB0aGUg
bG9jYWwKICAgLy8gY29udGVudC4gV2UgcmVjZWl2ZSBkYXRhIG9uIHRoZSBkZWZhdWx0IGNoYW5u
ZWwgYW5kIG11bHRpcGxleGVkIHN0cmVhbXMuCkBAIC03OTcsNiArODI2LDcgQEAgYm9vbCBWb2lj
ZUNoYW5uZWw6OlNldExvY2FsQ29udGVudF93KGNvbnN0IE1lZGlhQ29udGVudERlc2NyaXB0aW9u
KiBjb250ZW50LAogICBSdHBIZWFkZXJFeHRlbnNpb25zIHJ0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9
CiAgICAgICBHZXRGaWx0ZXJlZFJ0cEhlYWRlckV4dGVuc2lvbnMoYXVkaW8tPnJ0cF9oZWFkZXJf
ZXh0ZW5zaW9ucygpKTsKICAgVXBkYXRlUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKHJ0cF9oZWFkZXJf
ZXh0ZW5zaW9ucyk7CisgIG1lZGlhX2NoYW5uZWwoKS0+U2V0RXh0bWFwQWxsb3dNaXhlZChhdWRp
by0+ZXh0bWFwX2FsbG93X21peGVkKCkpOwogCiAgIEF1ZGlvUmVjdlBhcmFtZXRlcnMgcmVjdl9w
YXJhbXMgPSBsYXN0X3JlY3ZfcGFyYW1zXzsKICAgUnRwUGFyYW1ldGVyc0Zyb21NZWRpYURlc2Ny
aXB0aW9uKGF1ZGlvLCBydHBfaGVhZGVyX2V4dGVuc2lvbnMsICZyZWN2X3BhcmFtcyk7CkBAIC04
ODEsNyArOTExLDcgQEAgVmlkZW9DaGFubmVsOjpWaWRlb0NoYW5uZWwocnRjOjpUaHJlYWQqIHdv
cmtlcl90aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9NZWRpYUNoYW5uZWw+IG1lZGlhX2NoYW5uZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBzcnRwX3JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKQogICAgIDogQmFzZUNo
YW5uZWwod29ya2VyX3RocmVhZCwKICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfdGhyZWFkLAog
ICAgICAgICAgICAgICAgICAgc2lnbmFsaW5nX3RocmVhZCwKQEAgLTkzMiw2ICs5NjIsNyBAQCBi
b29sIFZpZGVvQ2hhbm5lbDo6U2V0TG9jYWxDb250ZW50X3coY29uc3QgTWVkaWFDb250ZW50RGVz
Y3JpcHRpb24qIGNvbnRlbnQsCiAgIFJ0cEhlYWRlckV4dGVuc2lvbnMgcnRwX2hlYWRlcl9leHRl
bnNpb25zID0KICAgICAgIEdldEZpbHRlcmVkUnRwSGVhZGVyRXh0ZW5zaW9ucyh2aWRlby0+cnRw
X2hlYWRlcl9leHRlbnNpb25zKCkpOwogICBVcGRhdGVSdHBIZWFkZXJFeHRlbnNpb25NYXAocnRw
X2hlYWRlcl9leHRlbnNpb25zKTsKKyAgbWVkaWFfY2hhbm5lbCgpLT5TZXRFeHRtYXBBbGxvd01p
eGVkKHZpZGVvLT5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7CiAKICAgVmlkZW9SZWN2UGFyYW1ldGVy
cyByZWN2X3BhcmFtcyA9IGxhc3RfcmVjdl9wYXJhbXNfOwogICBSdHBQYXJhbWV0ZXJzRnJvbU1l
ZGlhRGVzY3JpcHRpb24odmlkZW8sIHJ0cF9oZWFkZXJfZXh0ZW5zaW9ucywgJnJlY3ZfcGFyYW1z
KTsKQEAgLTEwMTksNyArMTA1MCw3IEBAIFJ0cERhdGFDaGFubmVsOjpSdHBEYXRhQ2hhbm5lbChy
dGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YU1lZGlhQ2hhbm5lbD4gbWVkaWFfY2hhbm5lbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29w
dGlvbnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRp
b25zIGNyeXB0b19vcHRpb25zKQogICAgIDogQmFzZUNoYW5uZWwod29ya2VyX3RocmVhZCwKICAg
ICAgICAgICAgICAgICAgIG5ldHdvcmtfdGhyZWFkLAogICAgICAgICAgICAgICAgICAgc2lnbmFs
aW5nX3RocmVhZCwKQEAgLTEwMzYsNyArMTA2Nyw3IEBAIFJ0cERhdGFDaGFubmVsOjp+UnRwRGF0
YUNoYW5uZWwoKSB7CiB9CiAKIHZvaWQgUnRwRGF0YUNoYW5uZWw6OkluaXRfdyh3ZWJydGM6OlJ0
cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0KSB7Ci0gIEJhc2VDaGFubmVsOjpJbml0
X3cocnRwX3RyYW5zcG9ydCk7CisgIEJhc2VDaGFubmVsOjpJbml0X3cocnRwX3RyYW5zcG9ydCwg
LyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgbWVkaWFfY2hhbm5lbCgpLT5TaWduYWxE
YXRhUmVjZWl2ZWQuY29ubmVjdCh0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZSdHBEYXRhQ2hhbm5lbDo6T25EYXRhUmVjZWl2ZWQpOwogICBtZWRp
YV9jaGFubmVsKCktPlNpZ25hbFJlYWR5VG9TZW5kLmNvbm5lY3QoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsLmgKaW5kZXgg
YmE1ODQ2OTBiYTZhZDA3NTU3YmMxOTZhMTYwMzMwZTFkODQ0ZjUwNy4uNjI2NGJiMzkwNDFhZTdk
M2Q0YTFhNWU3MjcwZjQzNDhjMjM0YTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWwuaApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIm1lZGlhL2Jhc2Uvc3RyZWFtcGFyYW1zLmgiCiAjaW5jbHVkZSAicDJwL2Jh
c2UvZHRsc3RyYW5zcG9ydGludGVybmFsLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvcGFja2V0dHJh
bnNwb3J0aW50ZXJuYWwuaCIKKyNpbmNsdWRlICJwYy9jaGFubmVsaW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAicGMvZHRsc3NydHB0cmFuc3BvcnQuaCIKICNpbmNsdWRlICJwYy9tZWRpYXNlc3Npb24u
aCIKICNpbmNsdWRlICJwYy9ydHB0cmFuc3BvcnQuaCIKQEAgLTQyLDEyICs0MywxMiBAQAogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEF1ZGlvU2lua0ludGVyZmFjZTsKK2NsYXNzIE1lZGlh
VHJhbnNwb3J0SW50ZXJmYWNlOwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCiBuYW1lc3BhY2Ug
Y3JpY2tldCB7CiAKIHN0cnVjdCBDcnlwdG9QYXJhbXM7Ci1jbGFzcyBNZWRpYUNvbnRlbnREZXNj
cmlwdGlvbjsKIAogLy8gQmFzZUNoYW5uZWwgY29udGFpbnMgbG9naWMgY29tbW9uIHRvIHZvaWNl
IGFuZCB2aWRlbywgaW5jbHVkaW5nIGVuYWJsZSwKIC8vIG1hcnNoYWxpbmcgY2FsbHMgdG8gYSB3
b3JrZXIgYW5kIG5ldHdvcmsgdGhyZWFkcywgYW5kIGNvbm5lY3Rpb24gYW5kIG1lZGlhCkBAIC02
NywxMCArNjgsMTIgQEAgY2xhc3MgTWVkaWFDb250ZW50RGVzY3JpcHRpb247CiAvLyB2dGFibGUs
IGFuZCB0aGUgbWVkaWEgY2hhbm5lbCdzIHRocmVhZCB1c2luZyBCYXNlQ2hhbm5lbCBhcyB0aGUK
IC8vIE5ldHdvcmtJbnRlcmZhY2UuCiAKLWNsYXNzIEJhc2VDaGFubmVsIDogcHVibGljIHJ0Yzo6
TWVzc2FnZUhhbmRsZXIsCitjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBDaGFubmVsSW50ZXJm
YWNlLAorICAgICAgICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwKICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+LAogICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgTWVkaWFDaGFubmVsOjpOZXR3b3JrSW50ZXJmYWNlLAotICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgd2VicnRjOjpSdHBQYWNrZXRTaW5rSW50ZXJmYWNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHVibGljIHdlYnJ0Yzo6UnRwUGFja2V0U2lua0ludGVyZmFjZSwK
KyAgICAgICAgICAgICAgICAgICAgcHVibGljIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnROZXR3b3Jr
Q2hhbmdlQ2FsbGJhY2sgewogIHB1YmxpYzoKICAgLy8gSWYgfHNydHBfcmVxdWlyZWR8IGlzIHRy
dWUsIHRoZSBjaGFubmVsIHdpbGwgbm90IHNlbmQgb3IgcmVjZWl2ZSBhbnkKICAgLy8gUlRQL1JU
Q1AgcGFja2V0cyB3aXRob3V0IHVzaW5nIFNSVFAgKGVpdGhlciB1c2luZyBTREVTIG9yIERUTFMt
U1JUUCkuCkBAIC04Miw5ICs4NSwxMCBAQCBjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBydGM6
Ok1lc3NhZ2VIYW5kbGVyLAogICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFDaGFu
bmVsPiBtZWRpYV9jaGFubmVsLAogICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29u
dGVudF9uYW1lLAogICAgICAgICAgICAgICBib29sIHNydHBfcmVxdWlyZWQsCi0gICAgICAgICAg
ICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucyk7CisgICAgICAgICAgICAgIHdl
YnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucyk7CiAgIHZpcnR1YWwgfkJhc2VDaGFu
bmVsKCk7Ci0gIHZvaWQgSW5pdF93KHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90
cmFuc3BvcnQpOworICB2b2lkIEluaXRfdyh3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFsKiBy
dHBfdHJhbnNwb3J0LAorICAgICAgICAgICAgICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJm
YWNlKiBtZWRpYV90cmFuc3BvcnQpOwogCiAgIC8vIERlaW5pdCBtYXkgYmUgY2FsbGVkIG11bHRp
cGxlIHRpbWVzIGFuZCBpcyBzaW1wbHkgaWdub3JlZCBpZiBpdCdzIGFscmVhZHkKICAgLy8gZG9u
ZS4KQEAgLTkyLDEwICs5NiwxMCBAQCBjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBydGM6Ok1l
c3NhZ2VIYW5kbGVyLAogCiAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkKCkgY29uc3QgeyBy
ZXR1cm4gd29ya2VyX3RocmVhZF87IH0KICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkKCkg
Y29uc3QgeyByZXR1cm4gbmV0d29ya190aHJlYWRfOyB9Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nJiBj
b250ZW50X25hbWUoKSBjb25zdCB7IHJldHVybiBjb250ZW50X25hbWVfOyB9CisgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBjb250ZW50X25hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50
X25hbWVfOyB9CiAgIC8vIFRPRE8oZGVhZGJlZWYpOiBUaGlzIGlzIHJlZHVuZGFudDsgcmVtb3Zl
IHRoaXMuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIHRyYW5zcG9ydF9uYW1lXzsgfQotICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBl
bmFibGVkXzsgfQorICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0X25hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cmFuc3BvcnRfbmFtZV87IH0KKyAgYm9vbCBlbmFibGVkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZW5hYmxlZF87IH0KIAogICAvLyBUaGlzIGZ1bmN0aW9uIHJl
dHVybnMgdHJ1ZSBpZiB1c2luZyBTUlRQIChEVExTLWJhc2VkIGtleWluZyBvciBTREVTKS4KICAg
Ym9vbCBzcnRwX2FjdGl2ZSgpIGNvbnN0IHsKQEAgLTEwOCwxNyArMTEyLDE3IEBAIGNsYXNzIEJh
c2VDaGFubmVsIDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCiAgIC8vIGVuY3J5cHRpb24s
IGFuIFNydHBUcmFuc3BvcnQgZm9yIFNERVMgb3IgYSBEdGxzU3J0cFRyYW5zcG9ydCBmb3IgRFRM
Uy1TUlRQLgogICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkIGFuZCBpdCBo
b3BzIHRvIHRoZSBuZXR3b3JrIHRocmVhZAogICAvLyBpbnRlcm5hbGx5LiBJdCB3b3VsZCByZXBs
YWNlIHRoZSB8U2V0VHJhbnNwb3J0c3wgYW5kIGl0cyB2YXJpYW50cy4KLSAgYm9vbCBTZXRSdHBU
cmFuc3BvcnQod2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCk7Cisg
IGJvb2wgU2V0UnRwVHJhbnNwb3J0KHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90
cmFuc3BvcnQpIG92ZXJyaWRlOwogCiAgIC8vIENoYW5uZWwgY29udHJvbAogICBib29sIFNldExv
Y2FsQ29udGVudChjb25zdCBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogY29udGVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgd2VicnRjOjpTZHBUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nKiBlcnJvcl9kZXNjKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcqIGVycm9yX2Rlc2MpIG92ZXJyaWRlOwogICBib29sIFNldFJlbW90ZUNvbnRl
bnQoY29uc3QgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIGNvbnRlbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICB3ZWJydGM6OlNkcFR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKiBlcnJvcl9kZXNjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nKiBlcnJvcl9kZXNjKSBvdmVycmlkZTsKIAotICBib29sIEVuYWJsZShib29sIGVuYWJs
ZSk7CisgIGJvb2wgRW5hYmxlKGJvb2wgZW5hYmxlKSBvdmVycmlkZTsKIAogICAvLyBUT0RPKHpo
aWh1YW5nKTogVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgdGVzdGluZyBhbmQgY2FuIGJlIHJl
bW92ZWQuCiAgIGJvb2wgQWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKTsKQEAg
LTEzOCw3ICsxNDIsOSBAQCBjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VI
YW5kbGVyLAogICB2b2lkIFNpZ25hbER0bHNTcnRwU2V0dXBGYWlsdXJlX3MoYm9vbCBydGNwKTsK
IAogICAvLyBVc2VkIGZvciBsYXRlbmN5IG1lYXN1cmVtZW50cy4KLSAgc2lnc2xvdDo6c2lnbmFs
MTxCYXNlQ2hhbm5lbCo+IFNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWQ7CisgIHNpZ3Nsb3Q6OnNp
Z25hbDE8Q2hhbm5lbEludGVyZmFjZSo+JiBTaWduYWxGaXJzdFBhY2tldFJlY2VpdmVkKCkgb3Zl
cnJpZGUgeworICAgIHJldHVybiBTaWduYWxGaXJzdFBhY2tldFJlY2VpdmVkXzsKKyAgfQogCiAg
IC8vIEZvcndhcmQgU2lnbmFsU2VudFBhY2tldCB0byB3b3JrZXIgdGhyZWFkLgogICBzaWdzbG90
OjpzaWduYWwxPGNvbnN0IHJ0Yzo6U2VudFBhY2tldCY+IFNpZ25hbFNlbnRQYWNrZXQ7CkBAIC0x
NjIsNiArMTY4LDExIEBAIGNsYXNzIEJhc2VDaGFubmVsIDogcHVibGljIHJ0Yzo6TWVzc2FnZUhh
bmRsZXIsCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KIAorICAvLyBSZXR1cm5zIG1lZGlhIHRy
YW5zcG9ydCwgY2FuIGJlIG51bGwgaWYgbWVkaWEgdHJhbnNwb3J0IGlzIG5vdCBhdmFpbGFibGUu
CisgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCgpIHsK
KyAgICByZXR1cm4gbWVkaWFfdHJhbnNwb3J0XzsKKyAgfQorCiAgIC8vIEZyb20gUnRwVHJhbnNw
b3J0IC0gcHVibGljIGZvciB0ZXN0aW5nIG9ubHkKICAgdm9pZCBPblRyYW5zcG9ydFJlYWR5VG9T
ZW5kKGJvb2wgcmVhZHkpOwogCkBAIC0xNjksOCArMTgwLDYgQEAgY2xhc3MgQmFzZUNoYW5uZWwg
OiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwKICAgaW50IFNldE9wdGlvbihTb2NrZXRUeXBl
IHR5cGUsIHJ0Yzo6U29ja2V0OjpPcHRpb24gbywgaW50IHZhbCkgb3ZlcnJpZGU7CiAgIGludCBT
ZXRPcHRpb25fbihTb2NrZXRUeXBlIHR5cGUsIHJ0Yzo6U29ja2V0OjpPcHRpb24gbywgaW50IHZh
bCk7CiAKLSAgdmlydHVhbCBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgpID0gMDsKLQog
ICAvLyBSdHBQYWNrZXRTaW5rSW50ZXJmYWNlIG92ZXJyaWRlcy4KICAgdm9pZCBPblJ0cFBhY2tl
dChjb25zdCB3ZWJydGM6OlJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIG92ZXJyaWRlOwogCkBA
IC0xODAsOSArMTg5LDkgQEAgY2xhc3MgQmFzZUNoYW5uZWwgOiBwdWJsaWMgcnRjOjpNZXNzYWdl
SGFuZGxlciwKICAgICB0cmFuc3BvcnRfbmFtZV8gPSB0cmFuc3BvcnRfbmFtZTsKICAgfQogCi0g
cHJvdGVjdGVkOgotICB2aXJ0dWFsIE1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCgpIGNvbnN0
IHsgcmV0dXJuIG1lZGlhX2NoYW5uZWxfLmdldCgpOyB9CisgIE1lZGlhQ2hhbm5lbCogbWVkaWFf
Y2hhbm5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1lZGlhX2NoYW5uZWxfLmdldCgpOyB9
CiAKKyBwcm90ZWN0ZWQ6CiAgIGJvb2wgd2FzX2V2ZXJfd3JpdGFibGUoKSBjb25zdCB7IHJldHVy
biB3YXNfZXZlcl93cml0YWJsZV87IH0KICAgdm9pZCBzZXRfbG9jYWxfY29udGVudF9kaXJlY3Rp
b24od2VicnRjOjpSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rpb24pIHsKICAgICBsb2Nh
bF9jb250ZW50X2RpcmVjdGlvbl8gPSBkaXJlY3Rpb247CkBAIC0yMjUsMTQgKzIzNCwxNCBAQCBj
bGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAogICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRPcHRpb25zJiBvcHRpb25zKTsKIAogICB2b2lkIE9u
UnRjcFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKTsK
IAogICB2b2lkIE9uUGFja2V0UmVjZWl2ZWQoYm9vbCBydGNwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKTsKICAgdm9pZCBQcm9jZXNz
UGFja2V0KGJvb2wgcnRjcCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9u
V3JpdGVCdWZmZXImIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFj
a2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNr
ZXRfdGltZV91cyk7CiAKICAgdm9pZCBFbmFibGVNZWRpYV93KCk7CiAgIHZvaWQgRGlzYWJsZU1l
ZGlhX3coKTsKQEAgLTI5NSwxMCArMzA0LDE0IEBAIGNsYXNzIEJhc2VDaGFubmVsIDogcHVibGlj
IHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCiAgIHZvaWQgU2lnbmFsU2VudFBhY2tldF9uKGNvbnN0IHJ0
Yzo6U2VudFBhY2tldCYgc2VudF9wYWNrZXQpOwogICB2b2lkIFNpZ25hbFNlbnRQYWNrZXRfdyhj
b25zdCBydGM6OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KTsKICAgYm9vbCBJc1JlYWR5VG9TZW5k
TWVkaWFfbigpIGNvbnN0OworCisgIC8vIE1lZGlhVHJhbnNwb3J0TmV0d29ya0NoYW5nZUNhbGxi
YWNrIG92ZXJyaWRlLgorICB2b2lkIE9uTmV0d29ya1JvdXRlQ2hhbmdlZChjb25zdCBydGM6Ok5l
dHdvcmtSb3V0ZSYgbmV0d29ya19yb3V0ZSkgb3ZlcnJpZGU7CiAgIHJ0Yzo6VGhyZWFkKiBjb25z
dCB3b3JrZXJfdGhyZWFkXzsKICAgcnRjOjpUaHJlYWQqIGNvbnN0IG5ldHdvcmtfdGhyZWFkXzsK
ICAgcnRjOjpUaHJlYWQqIGNvbnN0IHNpZ25hbGluZ190aHJlYWRfOwogICBydGM6OkFzeW5jSW52
b2tlciBpbnZva2VyXzsKKyAgc2lnc2xvdDo6c2lnbmFsMTxDaGFubmVsSW50ZXJmYWNlKj4gU2ln
bmFsRmlyc3RQYWNrZXRSZWNlaXZlZF87CiAKICAgY29uc3Qgc3RkOjpzdHJpbmcgY29udGVudF9u
YW1lXzsKIApAQCAtMzA3LDEzICszMjAsMTggQEAgY2xhc3MgQmFzZUNoYW5uZWwgOiBwdWJsaWMg
cnRjOjpNZXNzYWdlSGFuZGxlciwKIAogICB3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFsKiBy
dHBfdHJhbnNwb3J0XyA9IG51bGxwdHI7CiAKKyAgLy8gT3B0aW9uYWwgbWVkaWEgdHJhbnNwb3J0
IChleHBlcmltZW50YWwpLgorICAvLyBJZiBwcm92aWRlZCwgYXVkaW8gYW5kIHZpZGVvIHdpbGwg
YmUgc2VudCB0aHJvdWdoIG1lZGlhX3RyYW5zcG9ydCBpbnN0ZWFkCisgIC8vIG9mIFJUUC9SVENQ
LiBDdXJyZW50bHkgbWVkaWFfdHJhbnNwb3J0IGNhbiBjby1leGlzdCB3aXRoIHJ0cF90cmFuc3Bv
cnQuCisgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydF8g
PSBudWxscHRyOworCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxydGM6OlNvY2tldDo6T3B0aW9u
LCBpbnQ+ID4gc29ja2V0X29wdGlvbnNfOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8cnRjOjpT
b2NrZXQ6Ok9wdGlvbiwgaW50PiA+IHJ0Y3Bfc29ja2V0X29wdGlvbnNfOwogICBib29sIHdyaXRh
YmxlXyA9IGZhbHNlOwogICBib29sIHdhc19ldmVyX3dyaXRhYmxlXyA9IGZhbHNlOwogICBib29s
IGhhc19yZWNlaXZlZF9wYWNrZXRfID0gZmFsc2U7CiAgIGNvbnN0IGJvb2wgc3J0cF9yZXF1aXJl
ZF8gPSB0cnVlOwotICBydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnNfOworICB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnNfOwogCiAgIC8vIE1lZGlhQ2hhbm5lbCBy
ZWxhdGVkIG1lbWJlcnMgdGhhdCBzaG91bGQgYmUgYWNjZXNzZWQgZnJvbSB0aGUgd29ya2VyCiAg
IC8vIHRocmVhZC4KQEAgLTM0Myw3ICszNjEsNyBAQCBjbGFzcyBWb2ljZUNoYW5uZWwgOiBwdWJs
aWMgQmFzZUNoYW5uZWwgewogICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZvaWNlTWVk
aWFDaGFubmVsPiBjaGFubmVsLAogICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNv
bnRlbnRfbmFtZSwKICAgICAgICAgICAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgICAg
ICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucyk7CisgICAgICAgICAgICAg
ICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpOwogICB+Vm9pY2VDaGFubmVs
KCk7CiAKICAgLy8gZG93bmNhc3RzIGEgTWVkaWFDaGFubmVsCkBAIC0zNTEsMTAgKzM2OSw5IEBA
IGNsYXNzIFZvaWNlQ2hhbm5lbCA6IHB1YmxpYyBCYXNlQ2hhbm5lbCB7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFZvaWNlTWVkaWFDaGFubmVsKj4oQmFzZUNoYW5uZWw6Om1lZGlhX2NoYW5uZWwo
KSk7CiAgIH0KIAotICB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgR2V0UnRwU2VuZFBhcmFtZXRlcnNf
dyh1aW50MzJfdCBzc3JjKSBjb25zdDsKLSAgd2VicnRjOjpSVENFcnJvciBTZXRSdHBTZW5kUGFy
YW1ldGVyc193KHVpbnQzMl90IHNzcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyk7Ci0gIGNyaWNrZXQ6
Ok1lZGlhVHlwZSBtZWRpYV90eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gY3JpY2tldDo6TUVESUFf
VFlQRV9BVURJTzsgfQorICBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsKKyAgICByZXR1cm4gY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzsKKyAgfQogCiAg
cHJpdmF0ZToKICAgLy8gb3ZlcnJpZGVzIGZyb20gQmFzZUNoYW5uZWwKQEAgLTM4Myw3ICs0MDAs
NyBAQCBjbGFzcyBWaWRlb0NoYW5uZWwgOiBwdWJsaWMgQmFzZUNoYW5uZWwgewogICAgICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBtZWRpYV9jaGFubmVsLAog
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAg
ICAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgICAgICAgICAgIHJ0Yzo6Q3J5cHRvT3B0
aW9ucyBjcnlwdG9fb3B0aW9ucyk7CisgICAgICAgICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlv
bnMgY3J5cHRvX29wdGlvbnMpOwogICB+VmlkZW9DaGFubmVsKCk7CiAKICAgLy8gZG93bmNhc3Rz
IGEgTWVkaWFDaGFubmVsCkBAIC0zOTMsNyArNDEwLDkgQEAgY2xhc3MgVmlkZW9DaGFubmVsIDog
cHVibGljIEJhc2VDaGFubmVsIHsKIAogICB2b2lkIEZpbGxCaXRyYXRlSW5mbyhCYW5kd2lkdGhF
c3RpbWF0aW9uSW5mbyogYndlX2luZm8pOwogCi0gIGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90
eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsgfQorICBj
cmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICByZXR1
cm4gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKKyAgfQogCiAgcHJpdmF0ZToKICAgLy8gb3Zl
cnJpZGVzIGZyb20gQmFzZUNoYW5uZWwKQEAgLTQyMiw3ICs0NDEsNyBAQCBjbGFzcyBSdHBEYXRh
Q2hhbm5lbCA6IHB1YmxpYyBCYXNlQ2hhbm5lbCB7CiAgICAgICAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxEYXRhTWVkaWFDaGFubmVsPiBjaGFubmVsLAogICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAogICAgICAgICAgICAgICAgICBib29sIHNydHBf
cmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0
aW9ucyk7CisgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0
aW9ucyk7CiAgIH5SdHBEYXRhQ2hhbm5lbCgpOwogICAvLyBUT0RPKHpoaWh1YW5nKTogUmVtb3Zl
IHRoaXMgb25jZSB0aGUgUnRwVHJhbnNwb3J0IGNhbiBiZSBzaGFyZWQgYmV0d2VlbgogICAvLyBC
YXNlQ2hhbm5lbHMuCkBAIC00NDUsNyArNDY0LDkgQEAgY2xhc3MgUnRwRGF0YUNoYW5uZWwgOiBw
dWJsaWMgQmFzZUNoYW5uZWwgewogICAvLyBUaGF0IG9jY3VycyB3aGVuIHRoZSBjaGFubmVsIGlz
IGVuYWJsZWQsIHRoZSB0cmFuc3BvcnQgaXMgd3JpdGFibGUsCiAgIC8vIGJvdGggbG9jYWwgYW5k
IHJlbW90ZSBkZXNjcmlwdGlvbnMgYXJlIHNldCwgYW5kIHRoZSBjaGFubmVsIGlzIHVuYmxvY2tl
ZC4KICAgc2lnc2xvdDo6c2lnbmFsMTxib29sPiBTaWduYWxSZWFkeVRvU2VuZERhdGE7Ci0gIGNy
aWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gY3JpY2tldDo6
TUVESUFfVFlQRV9EQVRBOyB9CisgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlKCkgY29u
c3Qgb3ZlcnJpZGUgeworICAgIHJldHVybiBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEE7CisgIH0K
IAogIHByb3RlY3RlZDoKICAgLy8gZG93bmNhc3RzIGEgTWVkaWFDaGFubmVsLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbF91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2NoYW5uZWxfdW5pdHRlc3QuY2MKaW5kZXggNThjYjE3YjhiYmY1ZGQxZjdjYmU0MDBmYzVjNWQ1
MDA5YzZkNzJiNy4uNWQ0ZDRjN2Y5ZTAwNGU1NmQ1ZWNiOGFmMjA3NjgwYjlkYTkyNjMzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hh
bm5lbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9jaGFubmVsX3VuaXR0ZXN0LmNjCkBAIC0xNSw3ICsxNSw2IEBACiAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Zh
a2VydHAuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY2hhbm5lbC5oIgotI2luY2x1ZGUg
Im1lZGlhL2Jhc2UvdGVzdHV0aWxzLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvZmFrZWNhbmRpZGF0
ZXBhaXIuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9mYWtlZHRsc3RyYW5zcG9ydC5oIgogI2luY2x1
ZGUgInAycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaCIKQEAgLTI1MCw4ICsyNDksOCBAQCBj
bGFzcyBDaGFubmVsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6
aGFzX3Nsb3RzPD4gewogICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkID0gcnRjOjpU
aHJlYWQ6OkN1cnJlbnQoKTsKICAgICBhdXRvIGNoYW5uZWwgPSBhYnNsOjptYWtlX3VuaXF1ZTx0
eXBlbmFtZSBUOjpDaGFubmVsPigKICAgICAgICAgd29ya2VyX3RocmVhZCwgbmV0d29ya190aHJl
YWQsIHNpZ25hbGluZ190aHJlYWQsIGVuZ2luZSwgc3RkOjptb3ZlKGNoKSwKLSAgICAgICAgY3Jp
Y2tldDo6Q05fQVVESU8sIChmbGFncyAmIERUTFMpICE9IDAsIHJ0Yzo6Q3J5cHRvT3B0aW9ucygp
KTsKLSAgICBjaGFubmVsLT5Jbml0X3cocnRwX3RyYW5zcG9ydCk7CisgICAgICAgIGNyaWNrZXQ6
OkNOX0FVRElPLCAoZmxhZ3MgJiBEVExTKSAhPSAwLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSk7
CisgICAgY2hhbm5lbC0+SW5pdF93KHJ0cF90cmFuc3BvcnQsIC8qbWVkaWFfdHJhbnNwb3J0PSov
bnVsbHB0cik7CiAgICAgcmV0dXJuIGNoYW5uZWw7CiAgIH0KIApAQCAtNTc3LDYgKzU3NiwzNyBA
QCBjbGFzcyBDaGFubmVsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xv
dDo6aGFzX3Nsb3RzPD4gewogICAgICAgICBDb2RlY01hdGNoZXMoY29udGVudC5jb2RlY3MoKVsw
XSwgbWVkaWFfY2hhbm5lbDFfLT5jb2RlY3MoKVswXSkpOwogICB9CiAKKyAgLy8gVGVzdCB0aGF0
IFNldExvY2FsQ29udGVudCBhbmQgU2V0UmVtb3RlQ29udGVudCBwcm9wZXJseSBjb25maWd1cmUK
KyAgLy8gZXh0bWFwLWFsbG93LW1peGVkLgorICB2b2lkIFRlc3RTZXRDb250ZW50c0V4dG1hcEFs
bG93TWl4ZWRDYWxsZXIoYm9vbCBvZmZlciwgYm9vbCBhbnN3ZXIpIHsKKyAgICAvLyBGb3IgYSBj
YWxsZXIsIFNldExvY2FsQ29udGVudCgpIGlzIGNhbGxlZCBmaXJzdCB3aXRoIGFuIG9mZmVyIGFu
ZCBuZXh0CisgICAgLy8gU2V0UmVtb3RlQ29udGVudCgpIGlzIGNhbGxlZCB3aXRoIHRoZSBhbnN3
ZXIuCisgICAgQ3JlYXRlQ2hhbm5lbHMoMCwgMCk7CisgICAgdHlwZW5hbWUgVDo6Q29udGVudCBj
b250ZW50OworICAgIENyZWF0ZUNvbnRlbnQoMCwga1BjbXVDb2RlYywga0gyNjRDb2RlYywgJmNv
bnRlbnQpOworICAgIGF1dG8gb2ZmZXJfZW51bSA9IG9mZmVyID8gKFQ6OkNvbnRlbnQ6OmtTZXNz
aW9uKSA6IChUOjpDb250ZW50OjprTm8pOworICAgIGF1dG8gYW5zd2VyX2VudW0gPSBhbnN3ZXIg
PyAoVDo6Q29udGVudDo6a1Nlc3Npb24pIDogKFQ6OkNvbnRlbnQ6OmtObyk7CisgICAgY29udGVu
dC5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0ob2ZmZXJfZW51bSk7CisgICAgRVhQRUNUX1RS
VUUoY2hhbm5lbDFfLT5TZXRMb2NhbENvbnRlbnQoJmNvbnRlbnQsIFNkcFR5cGU6OmtPZmZlciwg
TlVMTCkpOworICAgIGNvbnRlbnQuc2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKGFuc3dlcl9l
bnVtKTsKKyAgICBFWFBFQ1RfVFJVRShjaGFubmVsMV8tPlNldFJlbW90ZUNvbnRlbnQoJmNvbnRl
bnQsIFNkcFR5cGU6OmtBbnN3ZXIsIE5VTEwpKTsKKyAgICBFWFBFQ1RfRVEoYW5zd2VyLCBtZWRp
YV9jaGFubmVsMV8tPkV4dG1hcEFsbG93TWl4ZWQoKSk7CisgIH0KKyAgdm9pZCBUZXN0U2V0Q29u
dGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVlKGJvb2wgb2ZmZXIsIGJvb2wgYW5zd2VyKSB7Cisg
ICAgLy8gRm9yIGEgY2FsbGVlLCBTZXRSZW1vdGVDb250ZW50KCkgaXMgY2FsbGVkIGZpcnN0IHdp
dGggYW4gb2ZmZXIgYW5kIG5leHQKKyAgICAvLyBTZXRMb2NhbENvbnRlbnQoKSBpcyBjYWxsZWQg
d2l0aCB0aGUgYW5zd2VyLgorICAgIENyZWF0ZUNoYW5uZWxzKDAsIDApOworICAgIHR5cGVuYW1l
IFQ6OkNvbnRlbnQgY29udGVudDsKKyAgICBDcmVhdGVDb250ZW50KDAsIGtQY211Q29kZWMsIGtI
MjY0Q29kZWMsICZjb250ZW50KTsKKyAgICBhdXRvIG9mZmVyX2VudW0gPSBvZmZlciA/IChUOjpD
b250ZW50OjprU2Vzc2lvbikgOiAoVDo6Q29udGVudDo6a05vKTsKKyAgICBhdXRvIGFuc3dlcl9l
bnVtID0gYW5zd2VyID8gKFQ6OkNvbnRlbnQ6OmtTZXNzaW9uKSA6IChUOjpDb250ZW50OjprTm8p
OworICAgIGNvbnRlbnQuc2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKG9mZmVyX2VudW0pOwor
ICAgIEVYUEVDVF9UUlVFKGNoYW5uZWwxXy0+U2V0UmVtb3RlQ29udGVudCgmY29udGVudCwgU2Rw
VHlwZTo6a09mZmVyLCBOVUxMKSk7CisgICAgY29udGVudC5zZXRfZXh0bWFwX2FsbG93X21peGVk
X2VudW0oYW5zd2VyX2VudW0pOworICAgIEVYUEVDVF9UUlVFKGNoYW5uZWwxXy0+U2V0TG9jYWxD
b250ZW50KCZjb250ZW50LCBTZHBUeXBlOjprQW5zd2VyLCBOVUxMKSk7CisgICAgRVhQRUNUX0VR
KGFuc3dlciwgbWVkaWFfY2hhbm5lbDFfLT5FeHRtYXBBbGxvd01peGVkKCkpOworICB9CisKICAg
Ly8gVGVzdCB0aGF0IFNldExvY2FsQ29udGVudCBhbmQgU2V0UmVtb3RlQ29udGVudCBwcm9wZXJs
eSBkZWFscwogICAvLyB3aXRoIGFuIGVtcHR5IG9mZmVyLgogICB2b2lkIFRlc3RTZXRDb250ZW50
c051bGxPZmZlcigpIHsKQEAgLTE1NDUsOCArMTU3NSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxjcmlj
a2V0OjpWaWRlb0NoYW5uZWw+IENoYW5uZWxUZXN0PFZpZGVvVHJhaXRzPjo6Q3JlYXRlQ2hhbm5l
bCgKICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQgPSBydGM6OlRocmVhZDo6Q3VycmVu
dCgpOwogICBhdXRvIGNoYW5uZWwgPSBhYnNsOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpWaWRlb0No
YW5uZWw+KAogICAgICAgd29ya2VyX3RocmVhZCwgbmV0d29ya190aHJlYWQsIHNpZ25hbGluZ190
aHJlYWQsIHN0ZDo6bW92ZShjaCksCi0gICAgICBjcmlja2V0OjpDTl9WSURFTywgKGZsYWdzICYg
RFRMUykgIT0gMCwgcnRjOjpDcnlwdG9PcHRpb25zKCkpOwotICBjaGFubmVsLT5Jbml0X3cocnRw
X3RyYW5zcG9ydCk7CisgICAgICBjcmlja2V0OjpDTl9WSURFTywgKGZsYWdzICYgRFRMUykgIT0g
MCwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpOworICBjaGFubmVsLT5Jbml0X3cocnRwX3RyYW5z
cG9ydCwgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgcmV0dXJuIGNoYW5uZWw7CiB9
CiAKQEAgLTE2MTUsNiArMTY0NSwyNCBAQCBURVNUX0YoVm9pY2VDaGFubmVsU2luZ2xlVGhyZWFk
VGVzdCwgVGVzdFNldENvbnRlbnRzKSB7CiAgIEJhc2U6OlRlc3RTZXRDb250ZW50cygpOwogfQog
CitURVNUX0YoVm9pY2VDaGFubmVsU2luZ2xlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzRXh0
bWFwQWxsb3dNaXhlZEFzQ2FsbGVyKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFs
bG93TWl4ZWRDYWxsZXIoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovdHJ1ZSk7Cit9CisKK1RF
U1RfRihWb2ljZUNoYW5uZWxTaW5nbGVUaHJlYWRUZXN0LAorICAgICAgIFRlc3RTZXRDb250ZW50
c0V4dG1hcEFsbG93TWl4ZWROb3RTdXBwb3J0ZWRBc0NhbGxlcikgeworICBCYXNlOjpUZXN0U2V0
Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVyKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0q
L2ZhbHNlKTsKK30KKworVEVTVF9GKFZvaWNlQ2hhbm5lbFNpbmdsZVRocmVhZFRlc3QsIFRlc3RT
ZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRBc0NhbGxlZSkgeworICBCYXNlOjpUZXN0U2V0Q29u
dGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVlKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL3Ry
dWUpOworfQorCitURVNUX0YoVm9pY2VDaGFubmVsU2luZ2xlVGhyZWFkVGVzdCwKKyAgICAgICBU
ZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkTm90U3VwcG9ydGVkQXNDYWxsZWUpIHsKKyAg
QmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlZSgvKm9mZmVyPSovdHJ1
ZSwgLyphbnN3ZXI9Ki9mYWxzZSk7Cit9CisKIFRFU1RfRihWb2ljZUNoYW5uZWxTaW5nbGVUaHJl
YWRUZXN0LCBUZXN0U2V0Q29udGVudHNOdWxsT2ZmZXIpIHsKICAgQmFzZTo6VGVzdFNldENvbnRl
bnRzTnVsbE9mZmVyKCk7CiB9CkBAIC0xNzUwLDYgKzE3OTgsMjQgQEAgVEVTVF9GKFZvaWNlQ2hh
bm5lbERvdWJsZVRocmVhZFRlc3QsIFRlc3RTZXRDb250ZW50cykgewogICBCYXNlOjpUZXN0U2V0
Q29udGVudHMoKTsKIH0KIAorVEVTVF9GKFZvaWNlQ2hhbm5lbERvdWJsZVRocmVhZFRlc3QsIFRl
c3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRBc0NhbGxlcikgeworICBCYXNlOjpUZXN0U2V0
Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVyKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0q
L3RydWUpOworfQorCitURVNUX0YoVm9pY2VDaGFubmVsRG91YmxlVGhyZWFkVGVzdCwKKyAgICAg
ICBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkTm90U3VwcG9ydGVkQXNDYWxsZXIpIHsK
KyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlcigvKm9mZmVyPSov
dHJ1ZSwgLyphbnN3ZXI9Ki9mYWxzZSk7Cit9CisKK1RFU1RfRihWb2ljZUNoYW5uZWxEb3VibGVU
aHJlYWRUZXN0LCBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQXNDYWxsZWUpIHsKKyAg
QmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlZSgvKm9mZmVyPSovdHJ1
ZSwgLyphbnN3ZXI9Ki90cnVlKTsKK30KKworVEVTVF9GKFZvaWNlQ2hhbm5lbERvdWJsZVRocmVh
ZFRlc3QsCisgICAgICAgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZE5vdFN1cHBvcnRl
ZEFzQ2FsbGVlKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRDYWxs
ZWUoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovZmFsc2UpOworfQorCiBURVNUX0YoVm9pY2VD
aGFubmVsRG91YmxlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzTnVsbE9mZmVyKSB7CiAgIEJh
c2U6OlRlc3RTZXRDb250ZW50c051bGxPZmZlcigpOwogfQpAQCAtMTg4Myw2ICsxOTQ5LDI0IEBA
IFRFU1RfRihWaWRlb0NoYW5uZWxTaW5nbGVUaHJlYWRUZXN0LCBUZXN0U2V0Q29udGVudHMpIHsK
ICAgQmFzZTo6VGVzdFNldENvbnRlbnRzKCk7CiB9CiAKK1RFU1RfRihWaWRlb0NoYW5uZWxTaW5n
bGVUaHJlYWRUZXN0LCBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQXNDYWxsZXIpIHsK
KyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlcigvKm9mZmVyPSov
dHJ1ZSwgLyphbnN3ZXI9Ki90cnVlKTsKK30KKworVEVTVF9GKFZpZGVvQ2hhbm5lbFNpbmdsZVRo
cmVhZFRlc3QsCisgICAgICAgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZE5vdFN1cHBv
cnRlZEFzQ2FsbGVyKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRD
YWxsZXIoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovZmFsc2UpOworfQorCitURVNUX0YoVmlk
ZW9DaGFubmVsU2luZ2xlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhl
ZEFzQ2FsbGVlKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRDYWxs
ZWUoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovdHJ1ZSk7Cit9CisKK1RFU1RfRihWaWRlb0No
YW5uZWxTaW5nbGVUaHJlYWRUZXN0LAorICAgICAgIFRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93
TWl4ZWROb3RTdXBwb3J0ZWRBc0NhbGxlZSkgeworICBCYXNlOjpUZXN0U2V0Q29udGVudHNFeHRt
YXBBbGxvd01peGVkQ2FsbGVlKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL2ZhbHNlKTsKK30K
KwogVEVTVF9GKFZpZGVvQ2hhbm5lbFNpbmdsZVRocmVhZFRlc3QsIFRlc3RTZXRDb250ZW50c051
bGxPZmZlcikgewogICBCYXNlOjpUZXN0U2V0Q29udGVudHNOdWxsT2ZmZXIoKTsKIH0KQEAgLTIw
MTYsNiArMjEwMCwyNCBAQCBURVNUX0YoVmlkZW9DaGFubmVsRG91YmxlVGhyZWFkVGVzdCwgVGVz
dFNldENvbnRlbnRzKSB7CiAgIEJhc2U6OlRlc3RTZXRDb250ZW50cygpOwogfQogCitURVNUX0Yo
VmlkZW9DaGFubmVsRG91YmxlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dN
aXhlZEFzQ2FsbGVyKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRD
YWxsZXIoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovdHJ1ZSk7Cit9CisKK1RFU1RfRihWaWRl
b0NoYW5uZWxEb3VibGVUaHJlYWRUZXN0LAorICAgICAgIFRlc3RTZXRDb250ZW50c0V4dG1hcEFs
bG93TWl4ZWROb3RTdXBwb3J0ZWRBc0NhbGxlcikgeworICBCYXNlOjpUZXN0U2V0Q29udGVudHNF
eHRtYXBBbGxvd01peGVkQ2FsbGVyKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL2ZhbHNlKTsK
K30KKworVEVTVF9GKFZpZGVvQ2hhbm5lbERvdWJsZVRocmVhZFRlc3QsIFRlc3RTZXRDb250ZW50
c0V4dG1hcEFsbG93TWl4ZWRBc0NhbGxlZSkgeworICBCYXNlOjpUZXN0U2V0Q29udGVudHNFeHRt
YXBBbGxvd01peGVkQ2FsbGVlKC8qb2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL3RydWUpOworfQor
CitURVNUX0YoVmlkZW9DaGFubmVsRG91YmxlVGhyZWFkVGVzdCwKKyAgICAgICBUZXN0U2V0Q29u
dGVudHNFeHRtYXBBbGxvd01peGVkTm90U3VwcG9ydGVkQXNDYWxsZWUpIHsKKyAgQmFzZTo6VGVz
dFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxlZSgvKm9mZmVyPSovdHJ1ZSwgLyphbnN3
ZXI9Ki9mYWxzZSk7Cit9CisKIFRFU1RfRihWaWRlb0NoYW5uZWxEb3VibGVUaHJlYWRUZXN0LCBU
ZXN0U2V0Q29udGVudHNOdWxsT2ZmZXIpIHsKICAgQmFzZTo6VGVzdFNldENvbnRlbnRzTnVsbE9m
ZmVyKCk7CiB9CkBAIC0yMTY0LDcgKzIyNjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6
UnRwRGF0YUNoYW5uZWw+IENoYW5uZWxUZXN0PERhdGFUcmFpdHM+OjpDcmVhdGVDaGFubmVsKAog
ICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCk7
CiAgIGF1dG8gY2hhbm5lbCA9IGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OlJ0cERhdGFDaGFu
bmVsPigKICAgICAgIHdvcmtlcl90aHJlYWQsIG5ldHdvcmtfdGhyZWFkLCBzaWduYWxpbmdfdGhy
ZWFkLCBzdGQ6Om1vdmUoY2gpLAotICAgICAgY3JpY2tldDo6Q05fREFUQSwgKGZsYWdzICYgRFRM
UykgIT0gMCwgcnRjOjpDcnlwdG9PcHRpb25zKCkpOworICAgICAgY3JpY2tldDo6Q05fREFUQSwg
KGZsYWdzICYgRFRMUykgIT0gMCwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpOwogICBjaGFubmVs
LT5Jbml0X3cocnRwX3RyYW5zcG9ydCk7CiAgIHJldHVybiBjaGFubmVsOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbGlu
dGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
Y2hhbm5lbGludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlNDEwOWEwNDU0MmY1MzU2NTZiZGE0MTJl
OTJlNjUyMjM3MTYxYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsaW50ZXJmYWNlLmgKQEAgLTAsMCArMSw2OCBA
QAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBQQ19DSEFOTkVMSU5URVJGQUNFX0hfCisj
ZGVmaW5lIFBDX0NIQU5ORUxJTlRFUkZBQ0VfSF8KKworI2luY2x1ZGUgPHN0cmluZz4KKworI2lu
Y2x1ZGUgImFwaS9qc2VwLmgiCisjaW5jbHVkZSAiYXBpL21lZGlhdHlwZXMuaCIKKyNpbmNsdWRl
ICJtZWRpYS9iYXNlL21lZGlhY2hhbm5lbC5oIgorI2luY2x1ZGUgInBjL3J0cHRyYW5zcG9ydGlu
dGVybmFsLmgiCisKK25hbWVzcGFjZSBjcmlja2V0IHsKKworY2xhc3MgTWVkaWFDb250ZW50RGVz
Y3JpcHRpb247CisKKy8vIENoYW5uZWxJbnRlcmZhY2UgY29udGFpbnMgbWV0aG9kcyBjb21tb24g
dG8gdm9pY2UsIHZpZGVvIGFuZCBkYXRhIGNoYW5uZWxzLgorLy8gQXMgbW9yZSBtZXRob2RzIGFy
ZSBhZGRlZCB0byBCYXNlQ2hhbm5lbCwgdGhleSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlCisv
LyBpbnRlcmZhY2UgYXMgd2VsbC4KK2NsYXNzIENoYW5uZWxJbnRlcmZhY2UgeworIHB1YmxpYzoK
KyAgdmlydHVhbCBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgpIGNvbnN0ID0gMDsKKwor
ICB2aXJ0dWFsIE1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCgpIGNvbnN0ID0gMDsKKworICAv
LyBUT0RPKGRlYWRiZWVmKTogVGhpcyBpcyByZWR1bmRhbnQ7IHJlbW92ZSB0aGlzLgorICB2aXJ0
dWFsIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSgpIGNvbnN0ID0gMDsKKworICB2
aXJ0dWFsIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUoKSBjb25zdCA9IDA7CisKKyAg
dmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCA9IDA7CisKKyAgLy8gRW5hYmxlcyBvciBkaXNh
YmxlcyB0aGlzIGNoYW5uZWwKKyAgdmlydHVhbCBib29sIEVuYWJsZShib29sIGVuYWJsZSkgPSAw
OworCisgIC8vIFVzZWQgZm9yIGxhdGVuY3kgbWVhc3VyZW1lbnRzLgorICB2aXJ0dWFsIHNpZ3Ns
b3Q6OnNpZ25hbDE8Q2hhbm5lbEludGVyZmFjZSo+JiBTaWduYWxGaXJzdFBhY2tldFJlY2VpdmVk
KCkgPSAwOworCisgIC8vIENoYW5uZWwgY29udHJvbAorICB2aXJ0dWFsIGJvb2wgU2V0TG9jYWxD
b250ZW50KGNvbnN0IE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBjb250ZW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6U2RwVHlwZSB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnJvcl9kZXNjKSA9IDA7CisgIHZpcnR1
YWwgYm9vbCBTZXRSZW1vdGVDb250ZW50KGNvbnN0IE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBj
b250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlNkcFR5cGUg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIGVycm9y
X2Rlc2MpID0gMDsKKworICAvLyBTZXQgYW4gUlRQIGxldmVsIHRyYW5zcG9ydC4KKyAgLy8gU29t
ZSBleGFtcGxlczoKKyAgLy8gICAqIEFuIFJ0cFRyYW5zcG9ydCB3aXRob3V0IGVuY3J5cHRpb24u
CisgIC8vICAgKiBBbiBTcnRwVHJhbnNwb3J0IGZvciBTREVTLgorICAvLyAgICogQSBEdGxzU3J0
cFRyYW5zcG9ydCBmb3IgRFRMUy1TUlRQLgorICB2aXJ0dWFsIGJvb2wgU2V0UnRwVHJhbnNwb3J0
KHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQpID0gMDsKKworIHBy
b3RlY3RlZDoKKyAgdmlydHVhbCB+Q2hhbm5lbEludGVyZmFjZSgpID0gZGVmYXVsdDsKK307CisK
K30gIC8vIG5hbWVzcGFjZSBjcmlja2V0CisKKyNlbmRpZiAgLy8gUENfQ0hBTk5FTElOVEVSRkFD
RV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvY2hhbm5lbG1hbmFnZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5jYwppbmRleCBkYWI2MjJhZDcwZTQyZjA3OWZi
NDMwZDJlOTAxZmNhOWRkNDk5MjNjLi5lZGE1YTJkZDU3OTIyY2JkN2FlNGZlODQ5ODJjYTdlZjA4
ZGZlYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5jYwpAQCAtMTQsMTAgKzE0LDEwIEBA
CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvcnRw
ZGF0YWVuZ2luZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50LmgiCiAKIG5hbWVzcGFjZSBjcmlja2V0IHsKQEAg
LTY2LDcgKzY2LDcgQEAgdm9pZCBDaGFubmVsTWFuYWdlcjo6R2V0U3VwcG9ydGVkQXVkaW9TZW5k
Q29kZWNzKAogICBpZiAoIW1lZGlhX2VuZ2luZV8pIHsKICAgICByZXR1cm47CiAgIH0KLSAgKmNv
ZGVjcyA9IG1lZGlhX2VuZ2luZV8tPmF1ZGlvX3NlbmRfY29kZWNzKCk7CisgICpjb2RlY3MgPSBt
ZWRpYV9lbmdpbmVfLT52b2ljZSgpLnNlbmRfY29kZWNzKCk7CiB9CiAKIHZvaWQgQ2hhbm5lbE1h
bmFnZXI6OkdldFN1cHBvcnRlZEF1ZGlvUmVjZWl2ZUNvZGVjcygKQEAgLTc0LDcgKzc0LDcgQEAg
dm9pZCBDaGFubmVsTWFuYWdlcjo6R2V0U3VwcG9ydGVkQXVkaW9SZWNlaXZlQ29kZWNzKAogICBp
ZiAoIW1lZGlhX2VuZ2luZV8pIHsKICAgICByZXR1cm47CiAgIH0KLSAgKmNvZGVjcyA9IG1lZGlh
X2VuZ2luZV8tPmF1ZGlvX3JlY3ZfY29kZWNzKCk7CisgICpjb2RlY3MgPSBtZWRpYV9lbmdpbmVf
LT52b2ljZSgpLnJlY3ZfY29kZWNzKCk7CiB9CiAKIHZvaWQgQ2hhbm5lbE1hbmFnZXI6OkdldFN1
cHBvcnRlZEF1ZGlvUnRwSGVhZGVyRXh0ZW5zaW9ucygKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBD
aGFubmVsTWFuYWdlcjo6R2V0U3VwcG9ydGVkQXVkaW9SdHBIZWFkZXJFeHRlbnNpb25zKAogICBp
ZiAoIW1lZGlhX2VuZ2luZV8pIHsKICAgICByZXR1cm47CiAgIH0KLSAgKmV4dCA9IG1lZGlhX2Vu
Z2luZV8tPkdldEF1ZGlvQ2FwYWJpbGl0aWVzKCkuaGVhZGVyX2V4dGVuc2lvbnM7CisgICpleHQg
PSBtZWRpYV9lbmdpbmVfLT52b2ljZSgpLkdldENhcGFiaWxpdGllcygpLmhlYWRlcl9leHRlbnNp
b25zOwogfQogCiB2b2lkIENoYW5uZWxNYW5hZ2VyOjpHZXRTdXBwb3J0ZWRWaWRlb0NvZGVjcygK
QEAgLTkyLDEwICs5MiwxMCBAQCB2b2lkIENoYW5uZWxNYW5hZ2VyOjpHZXRTdXBwb3J0ZWRWaWRl
b0NvZGVjcygKICAgfQogICBjb2RlY3MtPmNsZWFyKCk7CiAKLSAgc3RkOjp2ZWN0b3I8VmlkZW9D
b2RlYz4gdmlkZW9fY29kZWNzID0gbWVkaWFfZW5naW5lXy0+dmlkZW9fY29kZWNzKCk7CisgIHN0
ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IHZpZGVvX2NvZGVjcyA9IG1lZGlhX2VuZ2luZV8tPnZpZGVv
KCkuY29kZWNzKCk7CiAgIGZvciAoY29uc3QgYXV0byYgdmlkZW9fY29kZWMgOiB2aWRlb19jb2Rl
Y3MpIHsKICAgICBpZiAoIWVuYWJsZV9ydHhfICYmCi0gICAgICAgIF9zdHJpY21wKGtSdHhDb2Rl
Y05hbWUsIHZpZGVvX2NvZGVjLm5hbWUuY19zdHIoKSkgPT0gMCkgeworICAgICAgICBhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKGtSdHhDb2RlY05hbWUsIHZpZGVvX2NvZGVjLm5hbWUpKSB7CiAgICAg
ICBjb250aW51ZTsKICAgICB9CiAgICAgY29kZWNzLT5wdXNoX2JhY2sodmlkZW9fY29kZWMpOwpA
QCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ2hhbm5lbE1hbmFnZXI6OkdldFN1cHBvcnRlZFZpZGVv
UnRwSGVhZGVyRXh0ZW5zaW9ucygKICAgaWYgKCFtZWRpYV9lbmdpbmVfKSB7CiAgICAgcmV0dXJu
OwogICB9Ci0gICpleHQgPSBtZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NhcGFiaWxpdGllcygpLmhl
YWRlcl9leHRlbnNpb25zOworICAqZXh0ID0gbWVkaWFfZW5naW5lXy0+dmlkZW8oKS5HZXRDYXBh
YmlsaXRpZXMoKS5oZWFkZXJfZXh0ZW5zaW9uczsKIH0KIAogdm9pZCBDaGFubmVsTWFuYWdlcjo6
R2V0U3VwcG9ydGVkRGF0YUNvZGVjcygKQEAgLTE1NiwxNiArMTU2LDE3IEBAIFZvaWNlQ2hhbm5l
bCogQ2hhbm5lbE1hbmFnZXI6OkNyZWF0ZVZvaWNlQ2hhbm5lbCgKICAgICB3ZWJydGM6OkNhbGwq
IGNhbGwsCiAgICAgY29uc3QgY3JpY2tldDo6TWVkaWFDb25maWcmIG1lZGlhX2NvbmZpZywKICAg
ICB3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0LAorICAgIHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCwKICAgICBydGM6OlRo
cmVhZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9u
YW1lLAogICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICBjb25zdCBydGM6OkNyeXB0b09wdGlv
bnMmIGNyeXB0b19vcHRpb25zLAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5
cHRvX29wdGlvbnMsCiAgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKSB7CiAgIGlmICgh
d29ya2VyX3RocmVhZF8tPklzQ3VycmVudCgpKSB7CiAgICAgcmV0dXJuIHdvcmtlcl90aHJlYWRf
LT5JbnZva2U8Vm9pY2VDaGFubmVsKj4oUlRDX0ZST01fSEVSRSwgWyZdIHsKICAgICAgIHJldHVy
biBDcmVhdGVWb2ljZUNoYW5uZWwoY2FsbCwgbWVkaWFfY29uZmlnLCBydHBfdHJhbnNwb3J0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxpbmdfdGhyZWFkLCBjb250ZW50
X25hbWUsIHNydHBfcmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
eXB0b19vcHRpb25zLCBvcHRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWVkaWFfdHJhbnNwb3J0LCBzaWduYWxpbmdfdGhyZWFkLCBjb250ZW50X25hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNydHBfcmVxdWlyZWQsIGNyeXB0b19vcHRpb25zLCBv
cHRpb25zKTsKICAgICB9KTsKICAgfQogCkBAIC0xNzYsOCArMTc3LDggQEAgVm9pY2VDaGFubmVs
KiBDaGFubmVsTWFuYWdlcjo6Q3JlYXRlVm9pY2VDaGFubmVsKAogICAgIHJldHVybiBudWxscHRy
OwogICB9CiAKLSAgVm9pY2VNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwgPQotICAgICAgbWVk
aWFfZW5naW5lXy0+Q3JlYXRlQ2hhbm5lbChjYWxsLCBtZWRpYV9jb25maWcsIG9wdGlvbnMpOwor
ICBWb2ljZU1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCA9IG1lZGlhX2VuZ2luZV8tPnZvaWNl
KCkuQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbCwgbWVkaWFfY29uZmlnLCBvcHRpb25z
LCBjcnlwdG9fb3B0aW9ucyk7CiAgIGlmICghbWVkaWFfY2hhbm5lbCkgewogICAgIHJldHVybiBu
dWxscHRyOwogICB9CkBAIC0xODcsNyArMTg4LDcgQEAgVm9pY2VDaGFubmVsKiBDaGFubmVsTWFu
YWdlcjo6Q3JlYXRlVm9pY2VDaGFubmVsKAogICAgICAgYWJzbDo6V3JhcFVuaXF1ZShtZWRpYV9j
aGFubmVsKSwgY29udGVudF9uYW1lLCBzcnRwX3JlcXVpcmVkLAogICAgICAgY3J5cHRvX29wdGlv
bnMpOwogCi0gIHZvaWNlX2NoYW5uZWwtPkluaXRfdyhydHBfdHJhbnNwb3J0KTsKKyAgdm9pY2Vf
Y2hhbm5lbC0+SW5pdF93KHJ0cF90cmFuc3BvcnQsIG1lZGlhX3RyYW5zcG9ydCk7CiAKICAgVm9p
Y2VDaGFubmVsKiB2b2ljZV9jaGFubmVsX3B0ciA9IHZvaWNlX2NoYW5uZWwuZ2V0KCk7CiAgIHZv
aWNlX2NoYW5uZWxzXy5wdXNoX2JhY2soc3RkOjptb3ZlKHZvaWNlX2NoYW5uZWwpKTsKQEAgLTIy
Niw3ICsyMjcsNyBAQCBWaWRlb0NoYW5uZWwqIENoYW5uZWxNYW5hZ2VyOjpDcmVhdGVWaWRlb0No
YW5uZWwoCiAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCiAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICBib29sIHNydHBfcmVxdWlyZWQsCi0gICAgY29u
c3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBjb25zdCB3ZWJydGM6
OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYg
b3B0aW9ucykgewogICBpZiAoIXdvcmtlcl90aHJlYWRfLT5Jc0N1cnJlbnQoKSkgewogICAgIHJl
dHVybiB3b3JrZXJfdGhyZWFkXy0+SW52b2tlPFZpZGVvQ2hhbm5lbCo+KFJUQ19GUk9NX0hFUkUs
IFsmXSB7CkBAIC0yNDMsOCArMjQ0LDggQEAgVmlkZW9DaGFubmVsKiBDaGFubmVsTWFuYWdlcjo6
Q3JlYXRlVmlkZW9DaGFubmVsKAogICAgIHJldHVybiBudWxscHRyOwogICB9CiAKLSAgVmlkZW9N
ZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwgPQotICAgICAgbWVkaWFfZW5naW5lXy0+Q3JlYXRl
VmlkZW9DaGFubmVsKGNhbGwsIG1lZGlhX2NvbmZpZywgb3B0aW9ucyk7CisgIFZpZGVvTWVkaWFD
aGFubmVsKiBtZWRpYV9jaGFubmVsID0gbWVkaWFfZW5naW5lXy0+dmlkZW8oKS5DcmVhdGVNZWRp
YUNoYW5uZWwoCisgICAgICBjYWxsLCBtZWRpYV9jb25maWcsIG9wdGlvbnMsIGNyeXB0b19vcHRp
b25zKTsKICAgaWYgKCFtZWRpYV9jaGFubmVsKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0K
QEAgLTI1Myw3ICsyNTQsOSBAQCBWaWRlb0NoYW5uZWwqIENoYW5uZWxNYW5hZ2VyOjpDcmVhdGVW
aWRlb0NoYW5uZWwoCiAgICAgICB3b3JrZXJfdGhyZWFkXywgbmV0d29ya190aHJlYWRfLCBzaWdu
YWxpbmdfdGhyZWFkLAogICAgICAgYWJzbDo6V3JhcFVuaXF1ZShtZWRpYV9jaGFubmVsKSwgY29u
dGVudF9uYW1lLCBzcnRwX3JlcXVpcmVkLAogICAgICAgY3J5cHRvX29wdGlvbnMpOwotICB2aWRl
b19jaGFubmVsLT5Jbml0X3cocnRwX3RyYW5zcG9ydCk7CisKKyAgLy8gVE9ETyhzdWtoYW5vdik6
IEFkZCBtZWRpYV90cmFuc3BvcnQgc3VwcG9ydCBmb3IgdmlkZW8gY2hhbm5lbC4KKyAgdmlkZW9f
Y2hhbm5lbC0+SW5pdF93KHJ0cF90cmFuc3BvcnQsIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0
cik7CiAKICAgVmlkZW9DaGFubmVsKiB2aWRlb19jaGFubmVsX3B0ciA9IHZpZGVvX2NoYW5uZWwu
Z2V0KCk7CiAgIHZpZGVvX2NoYW5uZWxzXy5wdXNoX2JhY2soc3RkOjptb3ZlKHZpZGVvX2NoYW5u
ZWwpKTsKQEAgLTI5MSw3ICsyOTQsNyBAQCBSdHBEYXRhQ2hhbm5lbCogQ2hhbm5lbE1hbmFnZXI6
OkNyZWF0ZVJ0cERhdGFDaGFubmVsKAogICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFk
LAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgYm9vbCBzcnRwX3Jl
cXVpcmVkLAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIHsK
KyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSB7CiAgIGlm
ICghd29ya2VyX3RocmVhZF8tPklzQ3VycmVudCgpKSB7CiAgICAgcmV0dXJuIHdvcmtlcl90aHJl
YWRfLT5JbnZva2U8UnRwRGF0YUNoYW5uZWwqPihSVENfRlJPTV9IRVJFLCBbJl0gewogICAgICAg
cmV0dXJuIENyZWF0ZVJ0cERhdGFDaGFubmVsKG1lZGlhX2NvbmZpZywgcnRwX3RyYW5zcG9ydCwg
c2lnbmFsaW5nX3RocmVhZCwKQEAgLTM0NiwxMyArMzQ5LDEzIEBAIHZvaWQgQ2hhbm5lbE1hbmFn
ZXI6OkRlc3Ryb3lSdHBEYXRhQ2hhbm5lbChSdHBEYXRhQ2hhbm5lbCogZGF0YV9jaGFubmVsKSB7
CiBib29sIENoYW5uZWxNYW5hZ2VyOjpTdGFydEFlY0R1bXAocnRjOjpQbGF0Zm9ybUZpbGUgZmls
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG1heF9zaXplX2J5
dGVzKSB7CiAgIHJldHVybiB3b3JrZXJfdGhyZWFkXy0+SW52b2tlPGJvb2w+KFJUQ19GUk9NX0hF
UkUsIFsmXSB7Ci0gICAgcmV0dXJuIG1lZGlhX2VuZ2luZV8tPlN0YXJ0QWVjRHVtcChmaWxlLCBt
YXhfc2l6ZV9ieXRlcyk7CisgICAgcmV0dXJuIG1lZGlhX2VuZ2luZV8tPnZvaWNlKCkuU3RhcnRB
ZWNEdW1wKGZpbGUsIG1heF9zaXplX2J5dGVzKTsKICAgfSk7CiB9CiAKIHZvaWQgQ2hhbm5lbE1h
bmFnZXI6OlN0b3BBZWNEdW1wKCkgewogICB3b3JrZXJfdGhyZWFkXy0+SW52b2tlPHZvaWQ+KFJU
Q19GUk9NX0hFUkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZdIHsgbWVkaWFf
ZW5naW5lXy0+U3RvcEFlY0R1bXAoKTsgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyZdIHsgbWVkaWFfZW5naW5lXy0+dm9pY2UoKS5TdG9wQWVjRHVtcCgpOyB9KTsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5hZ2VyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5oCmluZGV4IGM2
YjYwMWVhOGY2Y2IwZTAwMTdiMGJmMGFjYTcwM2RlMDI0OTY1OGEuLjVjYWZkOGNmYTcyZjU2Mzc3
ZmM1ODE1NzMxNDhhM2E5NWI0ODBjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5hZ2VyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbG1hbmFnZXIuaApAQCAt
ODAsMTQgKzgwLDE2IEBAIGNsYXNzIENoYW5uZWxNYW5hZ2VyIGZpbmFsIHsKICAgLy8gY2FsbCB0
aGUgYXBwcm9wcmlhdGUgRGVzdHJveSpDaGFubmVsIG1ldGhvZCB3aGVuIGRvbmUuCiAKICAgLy8g
Q3JlYXRlcyBhIHZvaWNlIGNoYW5uZWwsIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lm
aWVkIHNlc3Npb24uCi0gIFZvaWNlQ2hhbm5lbCogQ3JlYXRlVm9pY2VDaGFubmVsKHdlYnJ0Yzo6
Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3Jp
Y2tldDo6TWVkaWFDb25maWcmIG1lZGlhX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGlu
Z190aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBjb250ZW50X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKTsKKyAgVm9p
Y2VDaGFubmVsKiBDcmVhdGVWb2ljZUNoYW5uZWwoCisgICAgICB3ZWJydGM6OkNhbGwqIGNhbGws
CisgICAgICBjb25zdCBjcmlja2V0OjpNZWRpYUNvbmZpZyYgbWVkaWFfY29uZmlnLAorICAgICAg
d2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwKKyAgICAgIHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCwKKyAgICAgIHJ0Yzo6
VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRl
bnRfbmFtZSwKKyAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKKyAgICAgIGNvbnN0IHdlYnJ0Yzo6
Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgICBjb25zdCBBdWRpb09wdGlvbnMm
IG9wdGlvbnMpOwogICAvLyBEZXN0cm95cyBhIHZvaWNlIGNoYW5uZWwgY3JlYXRlZCBieSBDcmVh
dGVWb2ljZUNoYW5uZWwuCiAgIHZvaWQgRGVzdHJveVZvaWNlQ2hhbm5lbChWb2ljZUNoYW5uZWwq
IHZvaWNlX2NoYW5uZWwpOwogCkBAIC0xMDAsNyArMTAyLDcgQEAgY2xhc3MgQ2hhbm5lbE1hbmFn
ZXIgZmluYWwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRocmVh
ZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBzcnRwX3JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlv
bnMmIGNyeXB0b19vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpOwogICAvLyBEZXN0cm95cyBhIHZpZGVvIGNoYW5u
ZWwgY3JlYXRlZCBieSBDcmVhdGVWaWRlb0NoYW5uZWwuCiAgIHZvaWQgRGVzdHJveVZpZGVvQ2hh
bm5lbChWaWRlb0NoYW5uZWwqIHZpZGVvX2NoYW5uZWwpOwpAQCAtMTExLDcgKzExMyw3IEBAIGNs
YXNzIENoYW5uZWxNYW5hZ2VyIGZpbmFsIHsKICAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdf
dGhyZWFkLAogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgIGJv
b2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRv
X29wdGlvbnMpOworICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0
aW9ucyk7CiAgIC8vIERlc3Ryb3lzIGEgZGF0YSBjaGFubmVsIGNyZWF0ZWQgYnkgQ3JlYXRlUnRw
RGF0YUNoYW5uZWwuCiAgIHZvaWQgRGVzdHJveVJ0cERhdGFDaGFubmVsKFJ0cERhdGFDaGFubmVs
KiBkYXRhX2NoYW5uZWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5hZ2VyX3VuaXR0
ZXN0LmNjCmluZGV4IDQ3Yzk1MzA2ZWU3MGY4YjI2MWI4MGFjMDRlY2U3ZDM4ODQwMjcxMmQuLjZl
OWNhYjZjZGE4MWRlNmM2MGViZTdlZTg3ZmMxYWI3N2JiOTVhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5hZ2VyX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL2NoYW5uZWxtYW5hZ2VyX3VuaXR0ZXN0LmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhcGkvdGVzdC9mYWtl
X21lZGlhX3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5l
LmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS90ZXN0dXRpbHMuaCIKICNpbmNsdWRlICJtZWRpYS9l
bmdpbmUvZmFrZXdlYnJ0Y2NhbGwuaCIKQEAgLTYxLDIwICs2MiwzMiBAQCBjbGFzcyBDaGFubmVs
TWFuYWdlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgcmV0dXJuIGR0bHNfc3J0
cF90cmFuc3BvcnQ7CiAgIH0KIAotICB2b2lkIFRlc3RDcmVhdGVEZXN0cm95Q2hhbm5lbHMod2Vi
cnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCkgeworICBzdGQ6OnVuaXF1
ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZT4gQ3JlYXRlTWVkaWFUcmFuc3Bv
cnQoCisgICAgICBydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiBwYWNrZXRfdHJhbnNwb3J0
KSB7CisgICAgYXV0byBtZWRpYV90cmFuc3BvcnRfcmVzdWx0ID0KKyAgICAgICAgZmFrZV9tZWRp
YV90cmFuc3BvcnRfZmFjdG9yeV8uQ3JlYXRlTWVkaWFUcmFuc3BvcnQocGFja2V0X3RyYW5zcG9y
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV0d29ya18uZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qaXNfY2FsbGVyPSovdHJ1ZSk7CisgICAgUlRDX0NI
RUNLKG1lZGlhX3RyYW5zcG9ydF9yZXN1bHQub2soKSk7CisgICAgcmV0dXJuIG1lZGlhX3RyYW5z
cG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7CisgIH0KKworICB2b2lkIFRlc3RDcmVhdGVEZXN0cm95
Q2hhbm5lbHMoCisgICAgICB3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNw
b3J0LAorICAgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNw
b3J0KSB7CiAgICAgY3JpY2tldDo6Vm9pY2VDaGFubmVsKiB2b2ljZV9jaGFubmVsID0gY21fLT5D
cmVhdGVWb2ljZUNoYW5uZWwoCi0gICAgICAgICZmYWtlX2NhbGxfLCBjcmlja2V0OjpNZWRpYUNv
bmZpZygpLCBydHBfdHJhbnNwb3J0LAorICAgICAgICAmZmFrZV9jYWxsXywgY3JpY2tldDo6TWVk
aWFDb25maWcoKSwgcnRwX3RyYW5zcG9ydCwgbWVkaWFfdHJhbnNwb3J0LAogICAgICAgICBydGM6
OlRocmVhZDo6Q3VycmVudCgpLCBjcmlja2V0OjpDTl9BVURJTywga0RlZmF1bHRTcnRwUmVxdWly
ZWQsCi0gICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBBdWRpb09wdGlvbnMoKSk7CisgICAg
ICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBBdWRpb09wdGlvbnMoKSk7CiAgICAgRVhQRUNU
X1RSVUUodm9pY2VfY2hhbm5lbCAhPSBudWxscHRyKTsKICAgICBjcmlja2V0OjpWaWRlb0NoYW5u
ZWwqIHZpZGVvX2NoYW5uZWwgPSBjbV8tPkNyZWF0ZVZpZGVvQ2hhbm5lbCgKICAgICAgICAgJmZh
a2VfY2FsbF8sIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIHJ0cF90cmFuc3BvcnQsCiAgICAgICAg
IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksIGNyaWNrZXQ6OkNOX1ZJREVPLCBrRGVmYXVsdFNydHBS
ZXF1aXJlZCwKLSAgICAgICAgcnRjOjpDcnlwdG9PcHRpb25zKCksIFZpZGVvT3B0aW9ucygpKTsK
KyAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCksIFZpZGVvT3B0aW9ucygpKTsKICAgICBF
WFBFQ1RfVFJVRSh2aWRlb19jaGFubmVsICE9IG51bGxwdHIpOwogICAgIGNyaWNrZXQ6OlJ0cERh
dGFDaGFubmVsKiBydHBfZGF0YV9jaGFubmVsID0gY21fLT5DcmVhdGVSdHBEYXRhQ2hhbm5lbCgK
ICAgICAgICAgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgcnRwX3RyYW5zcG9ydCwgcnRjOjpUaHJl
YWQ6OkN1cnJlbnQoKSwKLSAgICAgICAgY3JpY2tldDo6Q05fREFUQSwga0RlZmF1bHRTcnRwUmVx
dWlyZWQsIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKKyAgICAgICAgY3JpY2tldDo6Q05fREFUQSwg
a0RlZmF1bHRTcnRwUmVxdWlyZWQsIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKICAgICBFWFBF
Q1RfVFJVRShydHBfZGF0YV9jaGFubmVsICE9IG51bGxwdHIpOwogICAgIGNtXy0+RGVzdHJveVZp
ZGVvQ2hhbm5lbCh2aWRlb19jaGFubmVsKTsKICAgICBjbV8tPkRlc3Ryb3lWb2ljZUNoYW5uZWwo
dm9pY2VfY2hhbm5lbCk7CkBAIC05MCw2ICsxMDMsNyBAQCBjbGFzcyBDaGFubmVsTWFuYWdlclRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgIGNyaWNrZXQ6OkZha2VEYXRhRW5naW5lKiBm
ZG1lXzsKICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkNoYW5uZWxNYW5hZ2VyPiBjbV87CiAg
IGNyaWNrZXQ6OkZha2VDYWxsIGZha2VfY2FsbF87CisgIHdlYnJ0Yzo6RmFrZU1lZGlhVHJhbnNw
b3J0RmFjdG9yeSBmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5XzsKIH07CiAKIC8vIFRlc3Qg
dGhhdCB3ZSBzdGFydHVwL3NodXRkb3duIHByb3Blcmx5LgpAQCAtMTU0LDcgKzE2OCwxNSBAQCBU
RVNUX0YoQ2hhbm5lbE1hbmFnZXJUZXN0LCBTZXRWaWRlb1J0eEVuYWJsZWQpIHsKIFRFU1RfRihD
aGFubmVsTWFuYWdlclRlc3QsIENyZWF0ZURlc3Ryb3lDaGFubmVscykgewogICBFWFBFQ1RfVFJV
RShjbV8tPkluaXQoKSk7CiAgIGF1dG8gcnRwX3RyYW5zcG9ydCA9IENyZWF0ZUR0bHNTcnRwVHJh
bnNwb3J0KCk7Ci0gIFRlc3RDcmVhdGVEZXN0cm95Q2hhbm5lbHMocnRwX3RyYW5zcG9ydC5nZXQo
KSk7CisgIFRlc3RDcmVhdGVEZXN0cm95Q2hhbm5lbHMocnRwX3RyYW5zcG9ydC5nZXQoKSwgLypt
ZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKK30KKworVEVTVF9GKENoYW5uZWxNYW5hZ2VyVGVz
dCwgQ3JlYXRlRGVzdHJveUNoYW5uZWxzV2l0aE1lZGlhVHJhbnNwb3J0KSB7CisgIEVYUEVDVF9U
UlVFKGNtXy0+SW5pdCgpKTsKKyAgYXV0byBydHBfdHJhbnNwb3J0ID0gQ3JlYXRlRHRsc1NydHBU
cmFuc3BvcnQoKTsKKyAgYXV0byBtZWRpYV90cmFuc3BvcnQgPQorICAgICAgQ3JlYXRlTWVkaWFU
cmFuc3BvcnQocnRwX3RyYW5zcG9ydC0+cnRjcF9wYWNrZXRfdHJhbnNwb3J0KCkpOworICBUZXN0
Q3JlYXRlRGVzdHJveUNoYW5uZWxzKHJ0cF90cmFuc3BvcnQuZ2V0KCksIG1lZGlhX3RyYW5zcG9y
dC5nZXQoKSk7CiB9CiAKIFRFU1RfRihDaGFubmVsTWFuYWdlclRlc3QsIENyZWF0ZURlc3Ryb3lD
aGFubmVsc09uVGhyZWFkKSB7CkBAIC0xNjQsNyArMTg2LDcgQEAgVEVTVF9GKENoYW5uZWxNYW5h
Z2VyVGVzdCwgQ3JlYXRlRGVzdHJveUNoYW5uZWxzT25UaHJlYWQpIHsKICAgRVhQRUNUX1RSVUUo
Y21fLT5zZXRfbmV0d29ya190aHJlYWQobmV0d29ya18uZ2V0KCkpKTsKICAgRVhQRUNUX1RSVUUo
Y21fLT5Jbml0KCkpOwogICBhdXRvIHJ0cF90cmFuc3BvcnQgPSBDcmVhdGVEdGxzU3J0cFRyYW5z
cG9ydCgpOwotICBUZXN0Q3JlYXRlRGVzdHJveUNoYW5uZWxzKHJ0cF90cmFuc3BvcnQuZ2V0KCkp
OworICBUZXN0Q3JlYXRlRGVzdHJveUNoYW5uZWxzKHJ0cF90cmFuc3BvcnQuZ2V0KCksIC8qbWVk
aWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9j
cmVhdGVwZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9jcmVhdGVwZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYzRlYmJlNzMwZjk5YWUzODAyN2YyMzgxMjkxODE4
OGI1YTAxOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY3JlYXRlcGVlcmNv
bm5lY3Rpb25mYWN0b3J5LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQot
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJhcGkvY2FsbC9jYWxsZmFjdG9yeWludGVyZmFjZS5o
IgotI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgotI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJsb2dnaW5nL3J0
Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19mYWN0b3J5X2ludGVyZmFjZS5oIgotI2luY2x1ZGUg
Im1lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL2JpbmQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotI2lmIGRlZmlu
ZWQoVVNFX0JVSUxUSU5fU1dfQ09ERUNTKQotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0
aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3Rv
cnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2Rl
Y29kZXJfZmFjdG9yeSkgewotICByZXR1cm4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5V2l0
aEF1ZGlvTWl4ZXIoCi0gICAgICBudWxscHRyIC8qbmV0d29ya190aHJlYWQqLywgbnVsbHB0ciAv
Kndvcmtlcl90aHJlYWQqLywKLSAgICAgIG51bGxwdHIgLypzaWduYWxpbmdfdGhyZWFkKi8sIG51
bGxwdHIgLypkZWZhdWx0X2FkbSovLAotICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRp
b19kZWNvZGVyX2ZhY3RvcnksCi0gICAgICBudWxscHRyIC8qdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
Ki8sIG51bGxwdHIgLyp2aWRlb19kZWNvZGVyX2ZhY3RvcnkqLywKLSAgICAgIG51bGxwdHIgLyph
dWRpb19taXhlciovKTsKLX0KLQotLy8gTm90ZTogYWxsIHRoZSBvdGhlciBDcmVhdGVQZWVyQ29u
bmVjdGlvbkZhY3RvcnkgdmFyaWFudHMganVzdCBlbmQgdXAgY2FsbGluZwotLy8gdGhpcywgdWx0
aW1hdGVseS4KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICBydGM6OlRocmVhZCogbmV0d29y
a190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgcnRjOjpUaHJl
YWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRt
LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNv
ZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+
IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJG
YWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRjVmlkZW9E
ZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhlciwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nKSB7Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxB
dWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmdfdXNlID0gYXVkaW9fcHJvY2Vzc2luZzsK
LSAgaWYgKCFhdWRpb19wcm9jZXNzaW5nX3VzZSkgewotICAgIGF1ZGlvX3Byb2Nlc3NpbmdfdXNl
ID0gQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpOwotICB9Ci0KLSAgc3RkOjp1bmlx
dWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUoCi0gICAg
ICBjcmlja2V0OjpXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKLSAgICAgICAgICBk
ZWZhdWx0X2FkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3Rvcnks
Ci0gICAgICAgICAgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LCB2aWRlb19kZWNvZGVyX2ZhY3Rvcnks
IGF1ZGlvX21peGVyLAotICAgICAgICAgIGF1ZGlvX3Byb2Nlc3NpbmdfdXNlKSk7Ci0KLSAgc3Rk
Ojp1bmlxdWVfcHRyPENhbGxGYWN0b3J5SW50ZXJmYWNlPiBjYWxsX2ZhY3RvcnkgPSBDcmVhdGVD
YWxsRmFjdG9yeSgpOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZ0ZhY3RvcnlJbnRl
cmZhY2U+IGV2ZW50X2xvZ19mYWN0b3J5ID0KLSAgICAgIENyZWF0ZVJ0Y0V2ZW50TG9nRmFjdG9y
eSgpOwotCi0gIHJldHVybiBDcmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAg
ICAgbmV0d29ya190aHJlYWQsIHdvcmtlcl90aHJlYWQsIHNpZ25hbGluZ190aHJlYWQsIHN0ZDo6
bW92ZShtZWRpYV9lbmdpbmUpLAotICAgICAgc3RkOjptb3ZlKGNhbGxfZmFjdG9yeSksIHN0ZDo6
bW92ZShldmVudF9sb2dfZmFjdG9yeSkpOwotfQotCi1ydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCi0g
ICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJf
dGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgIEF1ZGlvRGV2
aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNv
ZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tl
dDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAg
IGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9y
eSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCi0gICAg
cnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZywKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+IGZlY19jb250
cm9sbGVyX2ZhY3RvcnksCi0gICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250cm9sbGVyRmFj
dG9yeUludGVyZmFjZT4KLSAgICAgICAgbmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnkpIHsKLSAg
cnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZ191c2Ug
PSBhdWRpb19wcm9jZXNzaW5nOwotICBpZiAoIWF1ZGlvX3Byb2Nlc3NpbmdfdXNlKSB7Ci0gICAg
YXVkaW9fcHJvY2Vzc2luZ191c2UgPSBBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCk7
Ci0gIH0KLQotICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+
IG1lZGlhX2VuZ2luZSgKLSAgICAgIGNyaWNrZXQ6OldlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6
Q3JlYXRlKAotICAgICAgICAgIGRlZmF1bHRfYWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1
ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICB2aWRlb19lbmNvZGVyX2ZhY3RvcnksIHZp
ZGVvX2RlY29kZXJfZmFjdG9yeSwgYXVkaW9fbWl4ZXIsCi0gICAgICAgICAgYXVkaW9fcHJvY2Vz
c2luZ191c2UpKTsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEZhY3RvcnlJbnRlcmZhY2U+IGNh
bGxfZmFjdG9yeSA9IENyZWF0ZUNhbGxGYWN0b3J5KCk7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPFJ0
Y0V2ZW50TG9nRmFjdG9yeUludGVyZmFjZT4gZXZlbnRfbG9nX2ZhY3RvcnkgPQotICAgICAgQ3Jl
YXRlUnRjRXZlbnRMb2dGYWN0b3J5KCk7Ci0KLSAgcmV0dXJuIENyZWF0ZU1vZHVsYXJQZWVyQ29u
bmVjdGlvbkZhY3RvcnkoCi0gICAgICBuZXR3b3JrX3RocmVhZCwgd29ya2VyX3RocmVhZCwgc2ln
bmFsaW5nX3RocmVhZCwgc3RkOjptb3ZlKG1lZGlhX2VuZ2luZSksCi0gICAgICBzdGQ6Om1vdmUo
Y2FsbF9mYWN0b3J5KSwgc3RkOjptb3ZlKGV2ZW50X2xvZ19mYWN0b3J5KSwKLSAgICAgIHN0ZDo6
bW92ZShmZWNfY29udHJvbGxlcl9mYWN0b3J5KSwgc3RkOjptb3ZlKG5ldHdvcmtfY29udHJvbGxl
cl9mYWN0b3J5KSk7Ci19Ci0jZW5kaWYKLQotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0
aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVh
ZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9EZXZpY2VNb2R1bGU+IGRlZmF1bHRfYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9y
eSwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LAotICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRl
b19kZWNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1
ZGlvX21peGVyLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlv
X3Byb2Nlc3NpbmcpIHsKLSAgaWYgKCFhdWRpb19wcm9jZXNzaW5nKQotICAgIGF1ZGlvX3Byb2Nl
c3NpbmcgPSBBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCk7Ci0KLSAgc3RkOjp1bmlx
dWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUgPQotICAg
ICAgY3JpY2tldDo6V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCi0gICAgICAgICAg
ZGVmYXVsdF9hZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
LAotICAgICAgICAgIHN0ZDo6bW92ZSh2aWRlb19lbmNvZGVyX2ZhY3RvcnkpLCBzdGQ6Om1vdmUo
dmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSwKLSAgICAgICAgICBhdWRpb19taXhlciwgYXVkaW9fcHJv
Y2Vzc2luZyk7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPENhbGxGYWN0b3J5SW50ZXJmYWNlPiBjYWxs
X2ZhY3RvcnkgPSBDcmVhdGVDYWxsRmFjdG9yeSgpOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudExvZ0ZhY3RvcnlJbnRlcmZhY2U+IGV2ZW50X2xvZ19mYWN0b3J5ID0KLSAgICAgIENyZWF0
ZVJ0Y0V2ZW50TG9nRmFjdG9yeSgpOwotCi0gIHJldHVybiBDcmVhdGVNb2R1bGFyUGVlckNvbm5l
Y3Rpb25GYWN0b3J5KAotICAgICAgbmV0d29ya190aHJlYWQsIHdvcmtlcl90aHJlYWQsIHNpZ25h
bGluZ190aHJlYWQsIHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpLAotICAgICAgc3RkOjptb3ZlKGNh
bGxfZmFjdG9yeSksIHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSkpOwotfQotCi0jaWYgZGVm
aW5lZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCi1ydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5l
Y3Rpb25GYWN0b3J5SW50ZXJmYWNlPgotQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5V2l0aEF1
ZGlvTWl4ZXIoCi0gICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0Yzo6VGhy
ZWFkKiB3b3JrZXJfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAot
ICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwKLSAgICBydGM6OnNjb3BlZF9yZWZw
dHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3Rvcnks
Ci0gICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2Rl
Y29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9f
bWl4ZXIpIHsKLSAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICAgIG5l
dHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBkZWZhdWx0X2Fk
bSwKLSAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCB2
aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICB2aWRlb19kZWNvZGVyX2ZhY3RvcnksIGF1ZGlv
X21peGVyLCBudWxscHRyKTsKLX0KLQotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9u
RmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgIHJ0Yzo6
VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwK
LSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBBdWRpb0RldmljZU1vZHVs
ZSogZGVmYXVsdF9hZG0sCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rv
cnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9E
ZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0
Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0
OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkpIHsKLSAg
cmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeVdpdGhBdWRpb01peGVyKAotICAgICAg
bmV0d29ya190aHJlYWQsIHdvcmtlcl90aHJlYWQsIHNpZ25hbGluZ190aHJlYWQsIGRlZmF1bHRf
YWRtLAotICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3Rvcnks
IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwgbnVs
bHB0cik7Ci19Ci0jZW5kaWYKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZGF0YWNoYW5uZWwu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kYXRhY2hh
bm5lbC5jYwppbmRleCBmODE5ZDI2Njk1NzYwNTE1ZDA4ZmUxOTRiYTAxMzE1MjAzNzA0MDhkLi5l
OTg5NTg2NjA3ZDc3YmYzYTQxZjkyODNkNTI0ZDNhZDNmNzNiMGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kYXRhY2hhbm5lbC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kYXRhY2hh
bm5lbC5jYwpAQCAtMTE4LDYgKzExOCwxMCBAQCBydGM6OnNjb3BlZF9yZWZwdHI8RGF0YUNoYW5u
ZWw+IERhdGFDaGFubmVsOjpDcmVhdGUoCiAgIHJldHVybiBjaGFubmVsOwogfQogCitib29sIERh
dGFDaGFubmVsOjpJc1NjdHBMaWtlKGNyaWNrZXQ6OkRhdGFDaGFubmVsVHlwZSB0eXBlKSB7Cisg
IHJldHVybiB0eXBlID09IGNyaWNrZXQ6OkRDVF9TQ1RQIHx8IHR5cGUgPT0gY3JpY2tldDo6RENU
X01FRElBX1RSQU5TUE9SVDsKK30KKwogRGF0YUNoYW5uZWw6OkRhdGFDaGFubmVsKERhdGFDaGFu
bmVsUHJvdmlkZXJJbnRlcmZhY2UqIHByb3ZpZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
IGNyaWNrZXQ6OkRhdGFDaGFubmVsVHlwZSBkY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIGxhYmVsKQpAQCAtMTQ3LDcgKzE1MSw3IEBAIGJvb2wgRGF0YUNo
YW5uZWw6OkluaXQoY29uc3QgSW50ZXJuYWxEYXRhQ2hhbm5lbEluaXQmIGNvbmZpZykgewogICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBoYW5kc2hha2Vfc3RhdGVfID0ga0hhbmRzaGFr
ZVJlYWR5OwotICB9IGVsc2UgaWYgKGRhdGFfY2hhbm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1Rf
U0NUUCkgeworICB9IGVsc2UgaWYgKElzU2N0cExpa2UoZGF0YV9jaGFubmVsX3R5cGVfKSkgewog
ICAgIGlmIChjb25maWcuaWQgPCAtMSB8fCBjb25maWcubWF4UmV0cmFuc21pdHMgPCAtMSB8fAog
ICAgICAgICBjb25maWcubWF4UmV0cmFuc21pdFRpbWUgPCAtMSkgewogICAgICAgUlRDX0xPRyhM
U19FUlJPUikgPDwgIkZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBTQ1RQIGRhdGEgY2hhbm5lbCBk
dWUgdG8gIgpAQCAtMjQxLDcgKzI0NSw3IEBAIGJvb2wgRGF0YUNoYW5uZWw6OlNlbmQoY29uc3Qg
RGF0YUJ1ZmZlciYgYnVmZmVyKSB7CiAgIGlmICghcXVldWVkX3NlbmRfZGF0YV8uRW1wdHkoKSkg
ewogICAgIC8vIE9ubHkgU0NUUCBEYXRhQ2hhbm5lbCBxdWV1ZXMgdGhlIG91dGdvaW5nIGRhdGEg
d2hlbiB0aGUgdHJhbnNwb3J0IGlzCiAgICAgLy8gYmxvY2tlZC4KLSAgICBSVENfRENIRUNLKGRh
dGFfY2hhbm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfU0NUUCk7CisgICAgUlRDX0RDSEVDSyhJ
c1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpOwogICAgIGlmICghUXVldWVTZW5kRGF0YU1l
c3NhZ2UoYnVmZmVyKSkgewogICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNsb3NpbmcgdGhl
IERhdGFDaGFubmVsIGR1ZSB0byBhIGZhaWx1cmUgdG8gcXVldWUgIgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImFkZGl0aW9uYWwgZGF0YS4iOwpAQCAtMjczLDcgKzI3Nyw3IEBAIHZvaWQg
RGF0YUNoYW5uZWw6OlNldFJlY2VpdmVTc3JjKHVpbnQzMl90IHJlY2VpdmVfc3NyYykgewogdm9p
ZCBEYXRhQ2hhbm5lbDo6U2V0U2N0cFNpZChpbnQgc2lkKSB7CiAgIFJUQ19EQ0hFQ0tfTFQoY29u
ZmlnXy5pZCwgMCk7CiAgIFJUQ19EQ0hFQ0tfR0Uoc2lkLCAwKTsKLSAgUlRDX0RDSEVDS19FUShk
YXRhX2NoYW5uZWxfdHlwZV8sIGNyaWNrZXQ6OkRDVF9TQ1RQKTsKKyAgUlRDX0RDSEVDSyhJc1Nj
dHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpOwogICBpZiAoY29uZmlnXy5pZCA9PSBzaWQpIHsK
ICAgICByZXR1cm47CiAgIH0KQEAgLTI4Myw3ICsyODcsNyBAQCB2b2lkIERhdGFDaGFubmVsOjpT
ZXRTY3RwU2lkKGludCBzaWQpIHsKIH0KIAogdm9pZCBEYXRhQ2hhbm5lbDo6T25DbG9zaW5nUHJv
Y2VkdXJlU3RhcnRlZFJlbW90ZWx5KGludCBzaWQpIHsKLSAgaWYgKGRhdGFfY2hhbm5lbF90eXBl
XyA9PSBjcmlja2V0OjpEQ1RfU0NUUCAmJiBzaWQgPT0gY29uZmlnXy5pZCAmJgorICBpZiAoSXNT
Y3RwTGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pICYmIHNpZCA9PSBjb25maWdfLmlkICYmCiAgICAg
ICBzdGF0ZV8gIT0ga0Nsb3NpbmcgJiYgc3RhdGVfICE9IGtDbG9zZWQpIHsKICAgICAvLyBEb24n
dCBib3RoZXIgc2VuZGluZyBxdWV1ZWQgZGF0YSBzaW5jZSB0aGUgc2lkZSB0aGF0IGluaXRpYXRl
ZCB0aGUKICAgICAvLyBjbG9zdXJlIHdvdWxkbid0IHJlY2VpdmUgaXQgYW55d2F5LiBTZWUgY3Ji
dWcuY29tLzU1OTM5NCBmb3IgYSBsZW5ndGh5CkBAIC0yOTksNyArMzAzLDcgQEAgdm9pZCBEYXRh
Q2hhbm5lbDo6T25DbG9zaW5nUHJvY2VkdXJlU3RhcnRlZFJlbW90ZWx5KGludCBzaWQpIHsKIH0K
IAogdm9pZCBEYXRhQ2hhbm5lbDo6T25DbG9zaW5nUHJvY2VkdXJlQ29tcGxldGUoaW50IHNpZCkg
ewotICBpZiAoZGF0YV9jaGFubmVsX3R5cGVfID09IGNyaWNrZXQ6OkRDVF9TQ1RQICYmIHNpZCA9
PSBjb25maWdfLmlkKSB7CisgIGlmIChJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykgJiYg
c2lkID09IGNvbmZpZ18uaWQpIHsKICAgICAvLyBJZiB0aGUgY2xvc2luZyBwcm9jZWR1cmUgaXMg
Y29tcGxldGUsIHdlIHNob3VsZCBoYXZlIGZpbmlzaGVkIHNlbmRpbmcKICAgICAvLyBhbGwgcGVu
ZGluZyBkYXRhIGFuZCB0cmFuc2l0aW9uZWQgdG8ga0Nsb3NpbmcgYWxyZWFkeS4KICAgICBSVENf
RENIRUNLX0VRKHN0YXRlXywga0Nsb3NpbmcpOwpAQCAtMzEwLDcgKzMxNCw3IEBAIHZvaWQgRGF0
YUNoYW5uZWw6Ok9uQ2xvc2luZ1Byb2NlZHVyZUNvbXBsZXRlKGludCBzaWQpIHsKIH0KIAogdm9p
ZCBEYXRhQ2hhbm5lbDo6T25UcmFuc3BvcnRDaGFubmVsQ3JlYXRlZCgpIHsKLSAgUlRDX0RDSEVD
SyhkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6RENUX1NDVFApOworICBSVENfRENIRUNL
KElzU2N0cExpa2UoZGF0YV9jaGFubmVsX3R5cGVfKSk7CiAgIGlmICghY29ubmVjdGVkX3RvX3By
b3ZpZGVyXykgewogICAgIGNvbm5lY3RlZF90b19wcm92aWRlcl8gPSBwcm92aWRlcl8tPkNvbm5l
Y3REYXRhQ2hhbm5lbCh0aGlzKTsKICAgfQpAQCAtMzQ4LDEyICszNTIsMTIgQEAgdm9pZCBEYXRh
Q2hhbm5lbDo6T25EYXRhUmVjZWl2ZWQoY29uc3QgY3JpY2tldDo6UmVjZWl2ZURhdGFQYXJhbXMm
IHBhcmFtcywKICAgaWYgKGRhdGFfY2hhbm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfUlRQICYm
IHBhcmFtcy5zc3JjICE9IHJlY2VpdmVfc3NyY18pIHsKICAgICByZXR1cm47CiAgIH0KLSAgaWYg
KGRhdGFfY2hhbm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfU0NUUCAmJiBwYXJhbXMuc2lkICE9
IGNvbmZpZ18uaWQpIHsKKyAgaWYgKElzU2N0cExpa2UoZGF0YV9jaGFubmVsX3R5cGVfKSAmJiBw
YXJhbXMuc2lkICE9IGNvbmZpZ18uaWQpIHsKICAgICByZXR1cm47CiAgIH0KIAogICBpZiAocGFy
YW1zLnR5cGUgPT0gY3JpY2tldDo6RE1UX0NPTlRST0wpIHsKLSAgICBSVENfRENIRUNLKGRhdGFf
Y2hhbm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfU0NUUCk7CisgICAgUlRDX0RDSEVDSyhJc1Nj
dHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpOwogICAgIGlmIChoYW5kc2hha2Vfc3RhdGVfICE9
IGtIYW5kc2hha2VXYWl0aW5nRm9yQWNrKSB7CiAgICAgICAvLyBJZ25vcmUgaXQgaWYgd2UgYXJl
IG5vdCBleHBlY3RpbmcgYW4gQUNLIG1lc3NhZ2UuCiAgICAgICBSVENfTE9HKExTX1dBUk5JTkcp
CkBAIC01NzAsNyArNTc0LDcgQEAgYm9vbCBEYXRhQ2hhbm5lbDo6U2VuZERhdGFNZXNzYWdlKGNv
bnN0IERhdGFCdWZmZXImIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHF1ZXVlX2lmX2Jsb2NrZWQpIHsKICAgY3JpY2tldDo6U2VuZERhdGFQYXJhbXMgc2Vu
ZF9wYXJhbXM7CiAKLSAgaWYgKGRhdGFfY2hhbm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfU0NU
UCkgeworICBpZiAoSXNTY3RwTGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pKSB7CiAgICAgc2VuZF9w
YXJhbXMub3JkZXJlZCA9IGNvbmZpZ18ub3JkZXJlZDsKICAgICAvLyBTZW5kIGFzIG9yZGVyZWQg
aWYgaXQgaXMgc3RpbGwgZ29pbmcgdGhyb3VnaCBPUEVOL0FDSyBzaWduYWxpbmcuCiAgICAgaWYg
KGhhbmRzaGFrZV9zdGF0ZV8gIT0ga0hhbmRzaGFrZVJlYWR5ICYmICFjb25maWdfLm9yZGVyZWQp
IHsKQEAgLTU5Nyw3ICs2MDEsNyBAQCBib29sIERhdGFDaGFubmVsOjpTZW5kRGF0YU1lc3NhZ2Uo
Y29uc3QgRGF0YUJ1ZmZlciYgYnVmZmVyLAogICAgIHJldHVybiB0cnVlOwogICB9CiAKLSAgaWYg
KGRhdGFfY2hhbm5lbF90eXBlXyAhPSBjcmlja2V0OjpEQ1RfU0NUUCkgeworICBpZiAoIUlzU2N0
cExpa2UoZGF0YV9jaGFubmVsX3R5cGVfKSkgewogICAgIHJldHVybiBmYWxzZTsKICAgfQogCkBA
IC02NDksNyArNjUzLDcgQEAgdm9pZCBEYXRhQ2hhbm5lbDo6UXVldWVDb250cm9sTWVzc2FnZShj
b25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIpIHsKIGJvb2wgRGF0YUNoYW5uZWw6
OlNlbmRDb250cm9sTWVzc2FnZShjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIp
IHsKICAgYm9vbCBpc19vcGVuX21lc3NhZ2UgPSBoYW5kc2hha2Vfc3RhdGVfID09IGtIYW5kc2hh
a2VTaG91bGRTZW5kT3BlbjsKIAotICBSVENfRENIRUNLX0VRKGRhdGFfY2hhbm5lbF90eXBlXywg
Y3JpY2tldDo6RENUX1NDVFApOworICBSVENfRENIRUNLKElzU2N0cExpa2UoZGF0YV9jaGFubmVs
X3R5cGVfKSk7CiAgIFJUQ19EQ0hFQ0sod3JpdGFibGVfKTsKICAgUlRDX0RDSEVDS19HRShjb25m
aWdfLmlkLCAwKTsKICAgUlRDX0RDSEVDSyghaXNfb3Blbl9tZXNzYWdlIHx8ICFjb25maWdfLm5l
Z290aWF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvZGF0YWNoYW5uZWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL2RhdGFjaGFubmVsLmgKaW5kZXggY2JiMGM4YjJjZjBhYmE1NjhjYTdk
YmZmNGIzZDFiOTNhNWNiOTViMS4uMjJlYTM1NGMyMTE2MzJkYjg2ZTc5NDIzNDhiZDVjMzI4NjY0
ZjdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvZGF0YWNoYW5uZWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9kYXRhY2hhbm5lbC5oCkBAIC0xMjIsNiArMTIyLDggQEAgY2xhc3MgRGF0
YUNoYW5uZWwgOiBwdWJsaWMgRGF0YUNoYW5uZWxJbnRlcmZhY2UsIHB1YmxpYyBzaWdzbG90Ojpo
YXNfc2xvdHM8PiB7CiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbGFiZWwsCiAgICAgICBjb25z
dCBJbnRlcm5hbERhdGFDaGFubmVsSW5pdCYgY29uZmlnKTsKIAorICBzdGF0aWMgYm9vbCBJc1Nj
dHBMaWtlKGNyaWNrZXQ6OkRhdGFDaGFubmVsVHlwZSB0eXBlKTsKKwogICB2aXJ0dWFsIHZvaWQg
UmVnaXN0ZXJPYnNlcnZlcihEYXRhQ2hhbm5lbE9ic2VydmVyKiBvYnNlcnZlcik7CiAgIHZpcnR1
YWwgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZHRsc3NydHB0cmFuc3BvcnQuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kdGxzc3J0cHRyYW5z
cG9ydC5jYwppbmRleCBlMzFiMmY1ODcyY2E5NmI1NzNiYzgxMjRhMDVjZDFkMzgwMjBjZDg0Li4y
ODM1ZDM0YTQ2Nzc2NTQ5NzJiNTRiN2Y2MDMzYTFmNDIwMzk2MzMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kdGxzc3J0cHRyYW5zcG9y
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9k
dGxzc3J0cHRyYW5zcG9ydC5jYwpAQCAtMzAxLDYgKzMwMSw4IEBAIHZvaWQgRHRsc1NydHBUcmFu
c3BvcnQ6Ok9uRHRsc1N0YXRlKGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNw
b3J0LAogICBSVENfRENIRUNLKHRyYW5zcG9ydCA9PSBydHBfZHRsc190cmFuc3BvcnRfIHx8CiAg
ICAgICAgICAgICAgdHJhbnNwb3J0ID09IHJ0Y3BfZHRsc190cmFuc3BvcnRfKTsKIAorICBTaWdu
YWxEdGxzU3RhdGVDaGFuZ2UoKTsKKwogICBpZiAoc3RhdGUgIT0gY3JpY2tldDo6RFRMU19UUkFO
U1BPUlRfQ09OTkVDVEVEKSB7CiAgICAgUmVzZXRQYXJhbXMoKTsKICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9kdGxz
c3J0cHRyYW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvZHRsc3NydHB0cmFuc3BvcnQuaAppbmRleCA0OThmMDJlOTE3NjIyYjczMDA0OTQ2MDYx
MTU4ZmUwOTg2ZjdlYjcxLi5jYWM1NjBlNzlhY2U4NWFmMzY3MjgzNWM0ZGFiZjk1YzBjY2FmM2Rj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9kdGxzc3J0cHRyYW5zcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL2R0bHNzcnRwdHJhbnNwb3J0LmgKQEAgLTQyLDcgKzQyLDggQEAgY2xh
c3MgRHRsc1NydHBUcmFuc3BvcnQgOiBwdWJsaWMgU3J0cFRyYW5zcG9ydCB7CiAgIHZvaWQgVXBk
YXRlUmVjdkVuY3J5cHRlZEhlYWRlckV4dGVuc2lvbklkcygKICAgICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPGludD4mIHJlY3ZfZXh0ZW5zaW9uX2lkcyk7CiAKLSAgc2lnc2xvdDo6c2lnbmFsMjxEdGxz
U3J0cFRyYW5zcG9ydCosIGJvb2w+IFNpZ25hbER0bHNTcnRwU2V0dXBGYWlsdXJlOworICBzaWdz
bG90OjpzaWduYWw8RHRsc1NydHBUcmFuc3BvcnQqLCBib29sPiBTaWduYWxEdGxzU3J0cFNldHVw
RmFpbHVyZTsKKyAgc2lnc2xvdDo6c2lnbmFsPD4gU2lnbmFsRHRsc1N0YXRlQ2hhbmdlOwogCiAg
IFJUQ0Vycm9yIFNldFNydHBTZW5kS2V5KGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1BhcmFtcyYgcGFy
YW1zKSBvdmVycmlkZSB7CiAgICAgcmV0dXJuIFJUQ0Vycm9yKFJUQ0Vycm9yVHlwZTo6VU5TVVBQ
T1JURURfT1BFUkFUSU9OLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvanNlcGljZWNhbmRpZGF0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXBpY2VjYW5kaWRhdGUuY2MKaW5kZXggMjc3
ZjFiYWI0ZmZmMTBkMzg0ZjdkMTNhNzRmYWUzYThkNDhhNzhiZS4uMjEzM2Q5ZGFkZDI1ODE4NGI0
OTc3Njg5N2NjMzM5ZmZhMmM2Yjg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcGljZWNhbmRpZGF0ZS5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwaWNlY2FuZGlkYXRlLmNj
CkBAIC0xNCw3ICsxNCw2IEBACiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNp
bmNsdWRlICJwYy93ZWJydGNzZHAuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXBzZXNzaW9uZGVzY3JpcHRpb24uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2Vwc2Vzc2lvbmRl
c2NyaXB0aW9uLmNjCmluZGV4IDY0YTdhMmJkNTkxYjBhNjkxZWQyMWM5MWE2ZjhiYTczOTU0ZTRk
MzIuLjEzZDA3NDM4MDgyMDA1MzQyOGYyM2VkYTE5ODVjMTgyYTQyZDA5NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXBzZXNzaW9u
ZGVzY3JpcHRpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvanNlcHNlc3Npb25kZXNjcmlwdGlvbi5jYwpAQCAtMTcsNyArMTcsNiBAQAogI2lu
Y2x1ZGUgInBjL21lZGlhc2Vzc2lvbi5oIgogI2luY2x1ZGUgInBjL3dlYnJ0Y3NkcC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2Vu
Y29kZS5oIgogCiB1c2luZyBjcmlja2V0OjpTZXNzaW9uRGVzY3JpcHRpb247CiAKQEAgLTkzLDM3
ICs5Miw5IEBAIHZvaWQgVXBkYXRlQ29ubmVjdGlvbkFkZHJlc3MoCiAKIH0gIC8vIG5hbWVzcGFj
ZQogCi1jb25zdCBjaGFyIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6a09mZmVyW10gPSAi
b2ZmZXIiOwotY29uc3QgY2hhciBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtQckFuc3dl
cltdID0gInByYW5zd2VyIjsKLWNvbnN0IGNoYXIgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNl
OjprQW5zd2VyW10gPSAiYW5zd2VyIjsKLQogY29uc3QgaW50IEpzZXBTZXNzaW9uRGVzY3JpcHRp
b246OmtEZWZhdWx0VmlkZW9Db2RlY0lkID0gMTAwOwogY29uc3QgY2hhciBKc2VwU2Vzc2lvbkRl
c2NyaXB0aW9uOjprRGVmYXVsdFZpZGVvQ29kZWNOYW1lW10gPSAiVlA4IjsKIAotY29uc3QgY2hh
ciogU2RwVHlwZVRvU3RyaW5nKFNkcFR5cGUgdHlwZSkgewotICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIFNkcFR5cGU6OmtPZmZlcjoKLSAgICAgIHJldHVybiBTZXNzaW9uRGVzY3JpcHRpb25J
bnRlcmZhY2U6OmtPZmZlcjsKLSAgICBjYXNlIFNkcFR5cGU6OmtQckFuc3dlcjoKLSAgICAgIHJl
dHVybiBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtQckFuc3dlcjsKLSAgICBjYXNlIFNk
cFR5cGU6OmtBbnN3ZXI6Ci0gICAgICByZXR1cm4gU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNl
OjprQW5zd2VyOwotICB9Ci0gIHJldHVybiAiIjsKLX0KLQotYWJzbDo6b3B0aW9uYWw8U2RwVHlw
ZT4gU2RwVHlwZUZyb21TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGVfc3RyKSB7Ci0gIGlm
ICh0eXBlX3N0ciA9PSBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtPZmZlcikgewotICAg
IHJldHVybiBTZHBUeXBlOjprT2ZmZXI7Ci0gIH0gZWxzZSBpZiAodHlwZV9zdHIgPT0gU2Vzc2lv
bkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprUHJBbnN3ZXIpIHsKLSAgICByZXR1cm4gU2RwVHlwZTo6
a1ByQW5zd2VyOwotICB9IGVsc2UgaWYgKHR5cGVfc3RyID09IFNlc3Npb25EZXNjcmlwdGlvbklu
dGVyZmFjZTo6a0Fuc3dlcikgewotICAgIHJldHVybiBTZHBUeXBlOjprQW5zd2VyOwotICB9IGVs
c2UgewotICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwotICB9Ci19Ci0KIC8vIFRPRE8oc3RldmVh
bnRvbik6IFJlbW92ZSB0aGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb25jZSBDaHJvbWl1bSBo
YXMgYmVlbgogLy8gdXBkYXRlZC4KIFNkcFR5cGUgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNl
OjpHZXRUeXBlKCkgY29uc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnQuY2MKaW5kZXggYzNkZmQz
MjQ2NGRlZDI1NzlhMTk0YzAxZDdlYzFkYTgxMDJmNmRkNS4uODhkMjBhNDViMTc5MjdmNDFkMzYy
NWIxNGIxMWNmMDVlYzRhMWNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0LmNjCkBAIC0xMyw3
ICsxMyw2IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBmb3Ig
c3RkOjpwYWlyCiAKLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJh
cGkvY2FuZGlkYXRlLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvcDJwY29uc3RhbnRzLmgiCiAjaW5j
bHVkZSAicDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbC5oIgpAQCAtOTQsMTEgKzkzLDEzIEBA
IEpzZXBUcmFuc3BvcnQ6OkpzZXBUcmFuc3BvcnQoCiAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0
Yzo6U3J0cFRyYW5zcG9ydD4gc2Rlc190cmFuc3BvcnQsCiAgICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6RHRsc1NydHBUcmFuc3BvcnQ+IGR0bHNfc3J0cF90cmFuc3BvcnQsCiAgICAgc3RkOjp1
bmlxdWVfcHRyPER0bHNUcmFuc3BvcnRJbnRlcm5hbD4gcnRwX2R0bHNfdHJhbnNwb3J0LAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxEdGxzVHJhbnNwb3J0SW50ZXJuYWw+IHJ0Y3BfZHRsc190cmFuc3Bv
cnQpCisgICAgc3RkOjp1bmlxdWVfcHRyPER0bHNUcmFuc3BvcnRJbnRlcm5hbD4gcnRjcF9kdGxz
X3RyYW5zcG9ydCwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5zcG9ydElu
dGVyZmFjZT4gbWVkaWFfdHJhbnNwb3J0KQogICAgIDogbWlkXyhtaWQpLAogICAgICAgbG9jYWxf
Y2VydGlmaWNhdGVfKGxvY2FsX2NlcnRpZmljYXRlKSwKICAgICAgIHJ0cF9kdGxzX3RyYW5zcG9y
dF8oc3RkOjptb3ZlKHJ0cF9kdGxzX3RyYW5zcG9ydCkpLAotICAgICAgcnRjcF9kdGxzX3RyYW5z
cG9ydF8oc3RkOjptb3ZlKHJ0Y3BfZHRsc190cmFuc3BvcnQpKSB7CisgICAgICBydGNwX2R0bHNf
dHJhbnNwb3J0XyhzdGQ6Om1vdmUocnRjcF9kdGxzX3RyYW5zcG9ydCkpLAorICAgICAgbWVkaWFf
dHJhbnNwb3J0XyhzdGQ6Om1vdmUobWVkaWFfdHJhbnNwb3J0KSkgewogICBSVENfRENIRUNLKHJ0
cF9kdGxzX3RyYW5zcG9ydF8pOwogICBpZiAodW5lbmNyeXB0ZWRfcnRwX3RyYW5zcG9ydCkgewog
ICAgIFJUQ19EQ0hFQ0soIXNkZXNfdHJhbnNwb3J0KTsKQEAgLTExNCw5ICsxMTUsMTcgQEAgSnNl
cFRyYW5zcG9ydDo6SnNlcFRyYW5zcG9ydCgKICAgICBSVENfRENIRUNLKCFzZGVzX3RyYW5zcG9y
dCk7CiAgICAgZHRsc19zcnRwX3RyYW5zcG9ydF8gPSBzdGQ6Om1vdmUoZHRsc19zcnRwX3RyYW5z
cG9ydCk7CiAgIH0KKworICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIG1lZGlhX3RyYW5z
cG9ydF8tPlNldE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayh0aGlzKTsKKyAgfQogfQogCi1K
c2VwVHJhbnNwb3J0Ojp+SnNlcFRyYW5zcG9ydCgpIHt9CitKc2VwVHJhbnNwb3J0Ojp+SnNlcFRy
YW5zcG9ydCgpIHsKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBtZWRpYV90cmFuc3Bv
cnRfLT5TZXRNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sobnVsbHB0cik7CisgIH0KK30KIAog
d2VicnRjOjpSVENFcnJvciBKc2VwVHJhbnNwb3J0OjpTZXRMb2NhbEpzZXBUcmFuc3BvcnREZXNj
cmlwdGlvbigKICAgICBjb25zdCBKc2VwVHJhbnNwb3J0RGVzY3JpcHRpb24mIGpzZXBfZGVzY3Jp
cHRpb24sCkBAIC0zMTUsOCArMzI0LDkgQEAgd2VicnRjOjpSVENFcnJvciBKc2VwVHJhbnNwb3J0
OjpWZXJpZnlDZXJ0aWZpY2F0ZUZpbmdlcnByaW50KAogICAgIHJldHVybiB3ZWJydGM6OlJUQ0Vy
cm9yKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRmluZ2VycHJpbnQgcHJvdmlkZWQgYnV0IG5vIGlkZW50aXR5IGF2
YWlsYWJsZS4iKTsKICAgfQotICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4g
ZnBfdG1wKHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZSgKLSAgICAgIGZpbmdlcnByaW50LT5h
bGdvcml0aG0sIGNlcnRpZmljYXRlLT5pZGVudGl0eSgpKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OlNTTEZpbmdlcnByaW50PiBmcF90bXAgPQorICAgICAgcnRjOjpTU0xGaW5nZXJwcmludDo6
Q3JlYXRlVW5pcXVlKGZpbmdlcnByaW50LT5hbGdvcml0aG0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKmNlcnRpZmljYXRlLT5pZGVudGl0eSgpKTsKICAgUlRDX0RD
SEVDSyhmcF90bXAuZ2V0KCkgIT0gTlVMTCk7CiAgIGlmICgqZnBfdG1wID09ICpmaW5nZXJwcmlu
dCkgewogICAgIHJldHVybiB3ZWJydGM6OlJUQ0Vycm9yOjpPSygpOwpAQCAtNTA1LDcgKzUxNSw4
IEBAIHdlYnJ0Yzo6UlRDRXJyb3IgSnNlcFRyYW5zcG9ydDo6TmVnb3RpYXRlQW5kU2V0RHRsc1Bh
cmFtZXRlcnMoCiAgICAgICAgICJMb2NhbCBmaW5nZXJwcmludCBzdXBwbGllZCB3aGVuIGNhbGxl
ciBkaWRuJ3Qgb2ZmZXIgRFRMUy4iKTsKICAgfSBlbHNlIHsKICAgICAvLyBXZSBhcmUgbm90IGRv
aW5nIERUTFMKLSAgICByZW1vdGVfZmluZ2VycHJpbnQgPSBhYnNsOjptYWtlX3VuaXF1ZTxydGM6
OlNTTEZpbmdlcnByaW50PigiIiwgbnVsbHB0ciwgMCk7CisgICAgcmVtb3RlX2ZpbmdlcnByaW50
ID0gYWJzbDo6bWFrZV91bmlxdWU8cnRjOjpTU0xGaW5nZXJwcmludD4oCisgICAgICAgICIiLCBy
dGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PigpKTsKICAgfQogICAvLyBOb3cgdGhhdCB3ZSBo
YXZlIG5lZ290aWF0ZWQgZXZlcnl0aGluZywgcHVzaCBpdCBkb3dud2FyZC4KICAgLy8gTm90ZSB0
aGF0IHdlIGNhY2hlIHRoZSByZXN1bHQgc28gdGhhdCBpZiB3ZSBoYXZlIHJhY2UgY29uZGl0aW9u
cwpAQCAtNjMzLDQgKzY0NCwxMiBAQCBib29sIEpzZXBUcmFuc3BvcnQ6OkdldFRyYW5zcG9ydFN0
YXRzKER0bHNUcmFuc3BvcnRJbnRlcm5hbCogZHRsc190cmFuc3BvcnQsCiAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIEpzZXBUcmFuc3BvcnQ6Ok9uU3RhdGVDaGFuZ2VkKHdlYnJ0Yzo6TWVkaWFU
cmFuc3BvcnRTdGF0ZSBzdGF0ZSkgeworICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NzE5KSBU
aGlzIG1ldGhvZCBjdXJyZW50bHkgZmlyZXMgb24gdGhlIG5ldHdvcmsKKyAgLy8gdGhyZWFkLCBi
dXQgbWVkaWEgdHJhbnNwb3J0IGRvZXMgbm90IG1ha2Ugc3VjaCBndWFyYW50ZWVzLiBXZSBuZWVk
IHRvIG1ha2UKKyAgLy8gc3VyZSB0aGlzIGNhbGxiYWNrIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhl
Y3V0ZWQgb24gdGhlIG5ldHdvcmsgdGhyZWFkLgorICBtZWRpYV90cmFuc3BvcnRfc3RhdGVfID0g
c3RhdGU7CisgIFNpZ25hbE1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkKCk7Cit9CisKIH0gIC8v
IG5hbWVzcGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0LmgKaW5kZXggOGU4OTg1MzNl
Zjk3YzFlYzZkMmJlZTQ3OGZmYTk2ZDIwNTAxZmVkMC4uOTUyZjJjY2I4Zjc0ODQ4ZjY0NjU4NzEw
NzBkZWEzNWIwOGMxNjIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnQuaApAQCAtMTksNiArMTks
NyBAQAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvY2Fu
ZGlkYXRlLmgiCiAjaW5jbHVkZSAiYXBpL2pzZXAuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJh
bnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgInAycC9iYXNlL2R0bHN0cmFuc3BvcnQuaCIK
ICNpbmNsdWRlICJwMnAvYmFzZS9wMnBjb25zdGFudHMuaCIKICNpbmNsdWRlICJwMnAvYmFzZS90
cmFuc3BvcnRpbmZvLmgiCkBAIC03MCwxMSArNzEsMTYgQEAgc3RydWN0IEpzZXBUcmFuc3BvcnRE
ZXNjcmlwdGlvbiB7CiAvLwogLy8gT24gVGhyZWFkaW5nOiBKc2VwVHJhbnNwb3J0IHBlcmZvcm1z
IHdvcmsgc29sZWx5IG9uIHRoZSBuZXR3b3JrIHRocmVhZCwgYW5kCiAvLyBzbyBpdHMgbWV0aG9k
cyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIG5ldHdvcmsgdGhyZWFkLgotY2xhc3MgSnNl
cFRyYW5zcG9ydCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CitjbGFzcyBKc2VwVHJh
bnNwb3J0IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+LAorICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayB7CiAgcHVibGlj
OgogICAvLyB8bWlkfCBpcyBqdXN0IHVzZWQgZm9yIGxvZyBzdGF0ZW1lbnRzIGluIG9yZGVyIHRv
IGlkZW50aWZ5IHRoZSBUcmFuc3BvcnQuCiAgIC8vIE5vdGUgdGhhdCB8bG9jYWxfY2VydGlmaWNh
dGV8IGlzIGFsbG93ZWQgdG8gYmUgbnVsbCBzaW5jZSBhIHJlbW90ZQogICAvLyBkZXNjcmlwdGlv
biBtYXkgYmUgc2V0IGJlZm9yZSBhIGxvY2FsIGNlcnRpZmljYXRlIGlzIGdlbmVyYXRlZC4KKyAg
Ly8KKyAgLy8gfG1lZGlhX3RyYXNwb3J0fCBpcyBvcHRpb25hbCAoZXhwZXJpbWVudGFsKS4gSWYg
YXZhaWxhYmxlIGl0IHdpbGwgYmUgdXNlZAorICAvLyB0byBzZW5kIC8gcmVjZWl2ZSBlbmNvZGVk
IGF1ZGlvIGFuZCB2aWRlbyBmcmFtZXMgaW5zdGVhZCBvZiBSVFAuCisgIC8vIEN1cnJlbnRseSB8
bWVkaWFfdHJhbnNwb3J0fCBjYW4gY28tZXhpc3Qgd2l0aCBSVFAgLyBSVENQIHRyYW5zcG9ydHMu
CiAgIEpzZXBUcmFuc3BvcnQoCiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlkLAogICAgICAg
Y29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+JiBsb2NhbF9jZXJ0
aWZpY2F0ZSwKQEAgLTgyLDcgKzg4LDggQEAgY2xhc3MgSnNlcFRyYW5zcG9ydCA6IHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpTcnRw
VHJhbnNwb3J0PiBzZGVzX3RyYW5zcG9ydCwKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6
OkR0bHNTcnRwVHJhbnNwb3J0PiBkdGxzX3NydHBfdHJhbnNwb3J0LAogICAgICAgc3RkOjp1bmlx
dWVfcHRyPER0bHNUcmFuc3BvcnRJbnRlcm5hbD4gcnRwX2R0bHNfdHJhbnNwb3J0LAotICAgICAg
c3RkOjp1bmlxdWVfcHRyPER0bHNUcmFuc3BvcnRJbnRlcm5hbD4gcnRjcF9kdGxzX3RyYW5zcG9y
dCk7CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHRsc1RyYW5zcG9ydEludGVybmFsPiBydGNwX2R0
bHNfdHJhbnNwb3J0LAorICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3Bv
cnRJbnRlcmZhY2U+IG1lZGlhX3RyYW5zcG9ydCk7CiAKICAgfkpzZXBUcmFuc3BvcnQoKSBvdmVy
cmlkZTsKIApAQCAtMTU4LDExICsxNjUsMjYgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydCA6IHB1Ymxp
YyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgcmV0dXJuIHJ0Y3BfZHRsc190cmFuc3BvcnRf
LmdldCgpOwogICB9CiAKKyAgLy8gUmV0dXJucyBtZWRpYSB0cmFuc3BvcnQsIGlmIGF2YWlsYWJs
ZS4KKyAgLy8gTm90ZSB0aGF0IG1lZGlhIHRyYW5zcG9ydCBpcyBvd25lZCBieSBqc2VwdHJhbnNw
b3J0IGFuZCB0aGUgcG9pbnRlcgorICAvLyB0byBtZWRpYSB0cmFuc3BvcnQgd2lsbCBiZWNvbWVz
IGludmFsaWQgYWZ0ZXIgZGVzdHJ1Y3Rpb24gb2YganNlcHRyYW5zcG9ydC4KKyAgd2VicnRjOjpN
ZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KCkgY29uc3QgeworICAgIHJl
dHVybiBtZWRpYV90cmFuc3BvcnRfLmdldCgpOworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgbGF0
ZXN0IG1lZGlhIHRyYW5zcG9ydCBzdGF0ZS4KKyAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRl
IG1lZGlhX3RyYW5zcG9ydF9zdGF0ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gbWVkaWFfdHJhbnNw
b3J0X3N0YXRlXzsKKyAgfQorCiAgIC8vIFRoaXMgaXMgc2lnbmFsZWQgd2hlbiBSVENQLW11eCBi
ZWNvbWVzIGFjdGl2ZSBhbmQKICAgLy8gfHJ0Y3BfZHRsc190cmFuc3BvcnRffCBpcyBkZXN0cm95
ZWQuIFRoZSBKc2VwVHJhbnNwb3J0Q29udHJvbGxlciB3aWxsCiAgIC8vIGhhbmRsZSB0aGUgc2ln
bmFsIGFuZCB1cGRhdGUgdGhlIGFnZ3JlZ2F0ZSB0cmFuc3BvcnQgc3RhdGVzLgogICBzaWdzbG90
OjpzaWduYWw8PiBTaWduYWxSdGNwTXV4QWN0aXZlOwogCisgIC8vIFRoaXMgaXMgc2lnbmFsZWQg
Zm9yIGNoYW5nZXMgaW4gfG1lZGlhX3RyYW5zcG9ydF98IHN0YXRlLgorICBzaWdzbG90OjpzaWdu
YWw8PiBTaWduYWxNZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZDsKKwogICAvLyBUT0RPKGRlYWRi
ZWVmKTogVGhlIG1ldGhvZHMgYmVsb3cgYXJlIG9ubHkgcHVibGljIGZvciB0ZXN0aW5nLiBTaG91
bGQgbWFrZQogICAvLyB0aGVtIHV0aWxpdHkgZnVuY3Rpb25zIG9yIG9iamVjdHMgc28gdGhleSBj
YW4gYmUgdGVzdGVkIGluZGVwZW5kZW50bHkgZnJvbQogICAvLyB0aGlzIGNsYXNzLgpAQCAtMjE4
LDYgKzI0MCw5IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Ns
b3RzPD4gewogICBib29sIEdldFRyYW5zcG9ydFN0YXRzKER0bHNUcmFuc3BvcnRJbnRlcm5hbCog
ZHRsc190cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNwb3J0U3RhdHMq
IHN0YXRzKTsKIAorICAvLyBJbnZva2VkIHdoZW5ldmVyIHRoZSBzdGF0ZSBvZiB0aGUgbWVkaWEg
dHJhbnNwb3J0IGNoYW5nZXMuCisgIHZvaWQgT25TdGF0ZUNoYW5nZWQod2VicnRjOjpNZWRpYVRy
YW5zcG9ydFN0YXRlIHN0YXRlKSBvdmVycmlkZTsKKwogICBjb25zdCBzdGQ6OnN0cmluZyBtaWRf
OwogICAvLyBuZWVkcy1pY2UtcmVzdGFydCBiaXQgYXMgZGVzY3JpYmVkIGluIEpTRVAuCiAgIGJv
b2wgbmVlZHNfaWNlX3Jlc3RhcnRfID0gZmFsc2U7CkBAIC0yNDEsNiArMjY2LDE0IEBAIGNsYXNz
IEpzZXBUcmFuc3BvcnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICBhYnNsOjpv
cHRpb25hbDxzdGQ6OnZlY3RvcjxpbnQ+PiBzZW5kX2V4dGVuc2lvbl9pZHNfOwogICBhYnNsOjpv
cHRpb25hbDxzdGQ6OnZlY3RvcjxpbnQ+PiByZWN2X2V4dGVuc2lvbl9pZHNfOwogCisgIC8vIE9w
dGlvbmFsIG1lZGlhIHRyYW5zcG9ydCAoZXhwZXJpbWVudGFsKS4KKyAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+IG1lZGlhX3RyYW5zcG9ydF87CisKKyAg
Ly8gSWYgfG1lZGlhX3RyYW5zcG9ydF98IGlzIHByb3ZpZGVkLCB0aGlzIHZhcmlhYmxlIHJlcHJl
c2VudHMgdGhlIHN0YXRlIG9mCisgIC8vIG1lZGlhIHRyYW5zcG9ydC4KKyAgd2VicnRjOjpNZWRp
YVRyYW5zcG9ydFN0YXRlIG1lZGlhX3RyYW5zcG9ydF9zdGF0ZV8gPQorICAgICAgd2VicnRjOjpN
ZWRpYVRyYW5zcG9ydFN0YXRlOjprUGVuZGluZzsKKwogICBSVENfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOKEpzZXBUcmFuc3BvcnQpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydF91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3Bv
cnRfdW5pdHRlc3QuY2MKaW5kZXggNTZhNzQyYzMzOGJjN2ZlMDNhZDNjMjE4NzhlMWNhNDBmMDkx
Y2M3NS4uZTUxODMwMWNlMmM4NjJmYzc1ZjY0OTFhZmY0YWQwM2ZiYzE2OWU2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5z
cG9ydF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCkBAIC05OCwxMSArOTgsMTYgQEAg
Y2xhc3MgSnNlcFRyYW5zcG9ydDJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgIFJUQ19OT1RSRUFDSEVEKCk7CiAgICAgfQog
CisgICAgLy8gVE9ETyhzdWtoYW5vdik6IEN1cnJlbnRseSB0aGVyZSBpcyBubyBtZWRpYV90cmFu
c3BvcnQgc3BlY2lmaWMKKyAgICAvLyBsb2dpYyBpbiBqc2VwdHJhbnNwb3J0LCBzbyBqc2VwdHJh
bnNwb3J0IHVuaXR0ZXN0cyBhcmUgY3JlYXRlZCB3aXRoCisgICAgLy8gbWVkaWFfdHJhbnNwb3J0
ID0gbnVsbHB0ci4gSW4gdGhlIGZ1dHVyZSB3ZSB3aWxsIHByb2JhYmx5IGFkZAorICAgIC8vIG1v
cmUgbG9naWMgdGhhdCByZXF1aXJlIHVuaXQgdGVzdHMuIE5vdGUgdGhhdCBjcmVhdGlvbiBvZiBt
ZWRpYV90cmFuc3BvcnQKKyAgICAvLyBpcyBjb3ZlcmVkIGluIGpzZXB0cmFuc3BvcnRjb250cm9s
bGVyX3VuaXR0ZXN0LgogICAgIGF1dG8ganNlcF90cmFuc3BvcnQgPSBhYnNsOjptYWtlX3VuaXF1
ZTxKc2VwVHJhbnNwb3J0PigKICAgICAgICAga1RyYW5zcG9ydE5hbWUsIC8qbG9jYWxfY2VydGlm
aWNhdGU9Ki9udWxscHRyLAogICAgICAgICBzdGQ6Om1vdmUodW5lbmNyeXB0ZWRfcnRwX3RyYW5z
cG9ydCksIHN0ZDo6bW92ZShzZGVzX3RyYW5zcG9ydCksCiAgICAgICAgIHN0ZDo6bW92ZShkdGxz
X3NydHBfdHJhbnNwb3J0KSwgc3RkOjptb3ZlKHJ0cF9kdGxzX3RyYW5zcG9ydCksCi0gICAgICAg
IHN0ZDo6bW92ZShydGNwX2R0bHNfdHJhbnNwb3J0KSk7CisgICAgICAgIHN0ZDo6bW92ZShydGNw
X2R0bHNfdHJhbnNwb3J0KSwgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKIAogICAgIHNp
Z25hbF9ydGNwX211eF9hY3RpdmVfcmVjZWl2ZWRfID0gZmFsc2U7CiAgICAganNlcF90cmFuc3Bv
cnQtPlNpZ25hbFJ0Y3BNdXhBY3RpdmUuY29ubmVjdCgKQEAgLTEyMSw3ICsxMjYsNyBAQCBjbGFz
cyBKc2VwVHJhbnNwb3J0MlRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGljIHNpZ3Ns
b3Q6Omhhc19zbG90czw+IHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTEZpbmdlcnBy
aW50PiBmaW5nZXJwcmludDsKICAgICBpZiAoY2VydCkgewotICAgICAgZmluZ2VycHJpbnQucmVz
ZXQocnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKGNlcnQpKTsKKyAg
ICAgIGZpbmdlcnByaW50ID0gcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmlj
YXRlKCpjZXJ0KTsKICAgICB9CiAgICAganNlcF9kZXNjcmlwdGlvbi50cmFuc3BvcnRfZGVzYyA9
CiAgICAgICAgIFRyYW5zcG9ydERlc2NyaXB0aW9uKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigp
LCB1ZnJhZywgcHdkLApAQCAtMzc4LDExICszODMsMTIgQEAgVEVTVF9QKEpzZXBUcmFuc3BvcnQy
V2l0aFJ0Y3BNdXgsIFZlcmlmeUNlcnRpZmljYXRlRmluZ2VycHJpbnQpIHsKICAgICBBU1NFUlRf
TkUobnVsbHB0ciwgY2VydGlmaWNhdGUpOwogCiAgICAgc3RkOjpzdHJpbmcgZGlnZXN0X2FsZ29y
aXRobTsKLSAgICBBU1NFUlRfVFJVRShjZXJ0aWZpY2F0ZS0+c3NsX2NlcnRpZmljYXRlKCkuR2V0
U2lnbmF0dXJlRGlnZXN0QWxnb3JpdGhtKAorICAgIEFTU0VSVF9UUlVFKGNlcnRpZmljYXRlLT5H
ZXRTU0xDZXJ0aWZpY2F0ZSgpLkdldFNpZ25hdHVyZURpZ2VzdEFsZ29yaXRobSgKICAgICAgICAg
JmRpZ2VzdF9hbGdvcml0aG0pKTsKICAgICBBU1NFUlRfRkFMU0UoZGlnZXN0X2FsZ29yaXRobS5l
bXB0eSgpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4gZ29vZF9m
aW5nZXJwcmludCgKLSAgICAgICAgcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlKGRpZ2VzdF9h
bGdvcml0aG0sIGNlcnRpZmljYXRlLT5pZGVudGl0eSgpKSk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6U1NMRmluZ2VycHJpbnQ+IGdvb2RfZmluZ2VycHJpbnQgPQorICAgICAgICBydGM6OlNT
TEZpbmdlcnByaW50OjpDcmVhdGVVbmlxdWUoZGlnZXN0X2FsZ29yaXRobSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjZXJ0aWZpY2F0ZS0+aWRlbnRpdHkoKSk7
CiAgICAgQVNTRVJUX05FKG51bGxwdHIsIGdvb2RfZmluZ2VycHJpbnQpOwogCiAgICAgRVhQRUNU
X1RSVUUoanNlcF90cmFuc3BvcnRfCkBAIC0xMDQ1LDcgKzEwNTEsNyBAQCBjbGFzcyBKc2VwVHJh
bnNwb3J0MkhlYWRlckV4dGVuc2lvblRlc3QKICAgdm9pZCBPblJlYWRQYWNrZXQxKHJ0Yzo6UGFj
a2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGltZSwKKyAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovLAogICAgICAgICAg
ICAgICAgICAgICAgaW50IGZsYWdzKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiSnNlcFRy
YW5zcG9ydCAxIFJlY2VpdmVkIGEgcGFja2V0LiI7CiAgICAgQ29tcGFyZUhlYWRlckV4dGVuc2lv
bnMoCkBAIC0xMDU4LDcgKzEwNjQsNyBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0MkhlYWRlckV4dGVu
c2lvblRlc3QKICAgdm9pZCBPblJlYWRQYWNrZXQyKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJu
YWwqIHRyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHJ0Yzo6UGFja2V0VGltZSYgdGltZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu
dDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovLAogICAgICAgICAgICAgICAgICAgICAgaW50IGZs
YWdzKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiSnNlcFRyYW5zcG9ydCAyIFJlY2VpdmVk
IGEgcGFja2V0LiI7CiAgICAgQ29tcGFyZUhlYWRlckV4dGVuc2lvbnMoCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0
Y29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL2pzZXB0cmFuc3BvcnRjb250cm9sbGVyLmNjCmluZGV4IDRjNjlhNmEwN2UyOTU4OGNlOWJm
YTRkZmE3YmUzNDg1NWEyZmYwMTIuLjc4ZWNhZjMxZGVhYzRlNDFlOGRiNDg4YTBkZjZjYTgxNTA0
ZDJjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9sbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9sbGVyLmNjCkBA
IC0xNCwxMCArMTQsMTEgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dXRpbGl0eT4K
IAotI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInAycC9iYXNlL3Bv
cnQuaCIKKyNpbmNsdWRlICJwYy9zcnRwZmlsdGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYmlu
ZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2tl
eV9kZXJpdmF0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCiAKIHVzaW5nIHdl
YnJ0Yzo6U2RwVHlwZTsKQEAgLTEzMyw2ICsxMzQsMjQgQEAgUnRwVHJhbnNwb3J0SW50ZXJuYWwq
IEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpHZXRSdHBUcmFuc3BvcnQoCiAgIHJldHVybiBqc2Vw
X3RyYW5zcG9ydC0+cnRwX3RyYW5zcG9ydCgpOwogfQogCitNZWRpYVRyYW5zcG9ydEludGVyZmFj
ZSogSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkdldE1lZGlhVHJhbnNwb3J0KAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtaWQpIGNvbnN0IHsKKyAgYXV0byBqc2VwX3RyYW5zcG9ydCA9IEdldEpz
ZXBUcmFuc3BvcnRGb3JNaWQobWlkKTsKKyAgaWYgKCFqc2VwX3RyYW5zcG9ydCkgeworICAgIHJl
dHVybiBudWxscHRyOworICB9CisgIHJldHVybiBqc2VwX3RyYW5zcG9ydC0+bWVkaWFfdHJhbnNw
b3J0KCk7Cit9CisKK01lZGlhVHJhbnNwb3J0U3RhdGUgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6
OkdldE1lZGlhVHJhbnNwb3J0U3RhdGUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCkgY29u
c3QgeworICBhdXRvIGpzZXBfdHJhbnNwb3J0ID0gR2V0SnNlcFRyYW5zcG9ydEZvck1pZChtaWQp
OworICBpZiAoIWpzZXBfdHJhbnNwb3J0KSB7CisgICAgcmV0dXJuIE1lZGlhVHJhbnNwb3J0U3Rh
dGU6OmtQZW5kaW5nOworICB9CisgIHJldHVybiBqc2VwX3RyYW5zcG9ydC0+bWVkaWFfdHJhbnNw
b3J0X3N0YXRlKCk7Cit9CisKIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCogSnNlcFRy
YW5zcG9ydENvbnRyb2xsZXI6OkdldER0bHNUcmFuc3BvcnQoCiAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIG1pZCkgY29uc3QgewogICBhdXRvIGpzZXBfdHJhbnNwb3J0ID0gR2V0SnNlcFRyYW5zcG9y
dEZvck1pZChtaWQpOwpAQCAtMzcwLDYgKzM4OSwxNSBAQCB2b2lkIEpzZXBUcmFuc3BvcnRDb250
cm9sbGVyOjpTZXRBY3RpdmVSZXNldFNydHBQYXJhbXMoCiAgIH0KIH0KIAordm9pZCBKc2VwVHJh
bnNwb3J0Q29udHJvbGxlcjo6U2V0TWVkaWFUcmFuc3BvcnRGYWN0b3J5KAorICAgIE1lZGlhVHJh
bnNwb3J0RmFjdG9yeSogbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpIHsKKyAgUlRDX0RDSEVDSyht
ZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9PSBjb25maWdfLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
IHx8CisgICAgICAgICAgICAganNlcF90cmFuc3BvcnRzX2J5X25hbWVfLmVtcHR5KCkpCisgICAg
ICA8PCAiWW91IGNhbiBvbmx5IGNhbGwgU2V0TWVkaWFUcmFuc3BvcnRGYWN0b3J5IGJlZm9yZSAi
CisgICAgICAgICAiSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgY3JlYXRlZCBpdHMgZmlyc3QgdHJh
bnNwb3J0LiI7CisgIGNvbmZpZ18ubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgPSBtZWRpYV90cmFu
c3BvcnRfZmFjdG9yeTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkR0bHNUcmFuc3Bv
cnRJbnRlcm5hbD4KIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpDcmVhdGVEdGxzVHJhbnNwb3J0
KGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcnRjcCkgewpAQCAtNDcxLDYgKzQ5OSw4IEBA
IEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpDcmVhdGVEdGxzU3J0cFRyYW5zcG9ydCgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjcF9kdGxzX3RyYW5zcG9ydCk7
CiAgIGR0bHNfc3J0cF90cmFuc3BvcnQtPlNldEFjdGl2ZVJlc2V0U3J0cFBhcmFtcygKICAgICAg
IGNvbmZpZ18uYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zKTsKKyAgZHRsc19zcnRwX3RyYW5zcG9y
dC0+U2lnbmFsRHRsc1N0YXRlQ2hhbmdlLmNvbm5lY3QoCisgICAgICB0aGlzLCAmSnNlcFRyYW5z
cG9ydENvbnRyb2xsZXI6OlVwZGF0ZUFnZ3JlZ2F0ZVN0YXRlc19uKTsKICAgcmV0dXJuIGR0bHNf
c3J0cF90cmFuc3BvcnQ7CiB9CiAKQEAgLTUyMyw3ICs1NTMsNyBAQCBSVENFcnJvciBKc2VwVHJh
bnNwb3J0Q29udHJvbGxlcjo6QXBwbHlEZXNjcmlwdGlvbl9uKAogICAgICAgICAoSXNCdW5kbGVk
KGNvbnRlbnRfaW5mby5uYW1lKSAmJiBjb250ZW50X2luZm8ubmFtZSAhPSAqYnVuZGxlZF9taWQo
KSkpIHsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KLSAgICBlcnJvciA9IE1heWJlQ3JlYXRlSnNl
cFRyYW5zcG9ydChjb250ZW50X2luZm8pOworICAgIGVycm9yID0gTWF5YmVDcmVhdGVKc2VwVHJh
bnNwb3J0KGxvY2FsLCBjb250ZW50X2luZm8pOwogICAgIGlmICghZXJyb3Iub2soKSkgewogICAg
ICAgcmV0dXJuIGVycm9yOwogICAgIH0KQEAgLTczMiw2ICs3NjIsMTAgQEAgYm9vbCBKc2VwVHJh
bnNwb3J0Q29udHJvbGxlcjo6SGFuZGxlQnVuZGxlZENvbnRlbnQoCiAgIC8vIEJhc2VDaGFubmVs
L1NjdHBUcmFuc3BvcnQgY2hhbmdlIHRoZSBSdHBUcmFuc3BvcnQvRHRsc1RyYW5zcG9ydCBmaXJz
dCwKICAgLy8gdGhlbiBkZXN0cm95IHRoZSBjcmlja2V0OjpKc2VwVHJhbnNwb3J0LgogICBpZiAo
U2V0VHJhbnNwb3J0Rm9yTWlkKGNvbnRlbnRfaW5mby5uYW1lLCBqc2VwX3RyYW5zcG9ydCkpIHsK
KyAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NzE5KSBGb3IgbWVkaWEgdHJhbnNwb3J0IHRo
aXMgaXMgZmFyIGZyb20gaWRlYWwsCisgICAgLy8gYmVjYXVzZSBpdCBtZWFucyB0aGF0IHdlIGZp
cnN0IGNyZWF0ZSBtZWRpYSB0cmFuc3BvcnQgYW5kIHN0YXJ0CisgICAgLy8gY29ubmVjdGluZyBp
dCwgYW5kIHRoZW4gd2UgZGVzdHJveSBpdC4gV2Ugd2lsbCBuZWVkIHRvIGFkZHJlc3MgaXQgYmVm
b3JlCisgICAgLy8gdmlkZW8gcGF0aCBpcyBlbmFibGVkLgogICAgIE1heWJlRGVzdHJveUpzZXBU
cmFuc3BvcnQoY29udGVudF9pbmZvLm5hbWUpOwogICAgIHJldHVybiB0cnVlOwogICB9CkBAIC03
NDksMTIgKzc4MywxMiBAQCBib29sIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpTZXRUcmFuc3Bv
cnRGb3JNaWQoCiAgIG1pZF90b190cmFuc3BvcnRfW21pZF0gPSBqc2VwX3RyYW5zcG9ydDsKICAg
cmV0dXJuIGNvbmZpZ18udHJhbnNwb3J0X29ic2VydmVyLT5PblRyYW5zcG9ydENoYW5nZWQoCiAg
ICAgICBtaWQsIGpzZXBfdHJhbnNwb3J0LT5ydHBfdHJhbnNwb3J0KCksCi0gICAgICBqc2VwX3Ry
YW5zcG9ydC0+cnRwX2R0bHNfdHJhbnNwb3J0KCkpOworICAgICAganNlcF90cmFuc3BvcnQtPnJ0
cF9kdGxzX3RyYW5zcG9ydCgpLCBqc2VwX3RyYW5zcG9ydC0+bWVkaWFfdHJhbnNwb3J0KCkpOwog
fQogCiB2b2lkIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpSZW1vdmVUcmFuc3BvcnRGb3JNaWQo
Y29uc3Qgc3RkOjpzdHJpbmcmIG1pZCkgewotICBib29sIHJldCA9Ci0gICAgICBjb25maWdfLnRy
YW5zcG9ydF9vYnNlcnZlci0+T25UcmFuc3BvcnRDaGFuZ2VkKG1pZCwgbnVsbHB0ciwgbnVsbHB0
cik7CisgIGJvb2wgcmV0ID0gY29uZmlnXy50cmFuc3BvcnRfb2JzZXJ2ZXItPk9uVHJhbnNwb3J0
Q2hhbmdlZChtaWQsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyKTsKICAgLy8gQ2FsbGlu
ZyBPblRyYW5zcG9ydENoYW5nZWQgd2l0aCBudWxscHRyIHNob3VsZCBhbHdheXMgc3VjY2VlZCwg
c2luY2UgaXQgaXMKICAgLy8gb25seSBleHBlY3RlZCB0byBmYWlsIHdoZW4gYWRkaW5nIG1lZGlh
IHRvIGEgdHJhbnNwb3J0IChub3QgcmVtb3ZpbmcpLgogICBSVENfRENIRUNLKHJldCk7CkBAIC04
MDYsNyArODQwLDcgQEAgc3RkOjp2ZWN0b3I8aW50PiBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6
R2V0RW5jcnlwdGVkSGVhZGVyRXh0ZW5zaW9uSWRzKAogICAgICAgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qPigKICAgICAgICAgICBjb250ZW50X2lu
Zm8uZGVzY3JpcHRpb24pOwogCi0gIGlmICghY29uZmlnXy5jcnlwdG9fb3B0aW9ucy5lbmFibGVf
ZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucykgeworICBpZiAoIWNvbmZpZ18uY3J5cHRv
X29wdGlvbnMuc3J0cC5lbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucykgewog
ICAgIHJldHVybiBzdGQ6OnZlY3RvcjxpbnQ+KCk7CiAgIH0KIApAQCAtODg4LDcgKzkyMiw5NCBA
QCBjcmlja2V0OjpKc2VwVHJhbnNwb3J0KiBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6R2V0SnNl
cFRyYW5zcG9ydEJ5TmFtZSgKICAgcmV0dXJuIChpdCA9PSBqc2VwX3RyYW5zcG9ydHNfYnlfbmFt
ZV8uZW5kKCkpID8gbnVsbHB0ciA6IGl0LT5zZWNvbmQuZ2V0KCk7CiB9CiAKK3N0ZDo6dW5pcXVl
X3B0cjx3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPgorSnNlcFRyYW5zcG9ydENvbnRy
b2xsZXI6Ok1heWJlQ3JlYXRlTWVkaWFUcmFuc3BvcnQoCisgICAgY29uc3QgY3JpY2tldDo6Q29u
dGVudEluZm8mIGNvbnRlbnRfaW5mbywKKyAgICBib29sIGxvY2FsLAorICAgIGNyaWNrZXQ6Oklj
ZVRyYW5zcG9ydEludGVybmFsKiBpY2VfdHJhbnNwb3J0KSB7CisgIGFic2w6Om9wdGlvbmFsPGNy
aWNrZXQ6OkNyeXB0b1BhcmFtcz4gc2VsZWN0ZWRfY3J5cHRvX2Zvcl9tZWRpYV90cmFuc3BvcnQ7
CisgIGlmIChjb250ZW50X2luZm8ubWVkaWFfZGVzY3JpcHRpb24oKSAmJgorICAgICAgIWNvbnRl
bnRfaW5mby5tZWRpYV9kZXNjcmlwdGlvbigpLT5jcnlwdG9zKCkuZW1wdHkoKSkgeworICAgIC8v
IE9yZGVyIG9mIGNyeXB0b3MgaXMgZGV0ZXJtaW5pc3RpYyAocmZjNDU2OCwgNS4xLjEpLCBzbyB3
ZSBqdXN0IHNlbGVjdCB0aGUKKyAgICAvLyBmaXJzdCBvbmUgKGluIGZhY3QgdGhlIGZpcnN0IG9u
ZSBzaG91bGQgYmUgdGhlIG1vc3QgcHJlZmVycmVkIG9uZS4pIFdlCisgICAgLy8gaWdub3JlIHRo
ZSBITUFDIHNpemUsIGFzIG1lZGlhIHRyYW5zcG9ydCBjcnlwdG8gc2V0dGluZ3MgY3VycmVudGx5
IGRvbid0CisgICAgLy8gZXhwb3NlIEhNQUMgc2l6ZSwgbm9yIGNyeXB0byBwcm90b2NvbCBmb3Ig
dGhhdCBtYXR0ZXIuCisgICAgc2VsZWN0ZWRfY3J5cHRvX2Zvcl9tZWRpYV90cmFuc3BvcnQgPQor
ICAgICAgICBjb250ZW50X2luZm8ubWVkaWFfZGVzY3JpcHRpb24oKS0+Y3J5cHRvcygpWzBdOwor
ICB9CisKKyAgaWYgKGNvbmZpZ18ubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgIT0gbnVsbHB0cikg
eworICAgIGlmICghc2VsZWN0ZWRfY3J5cHRvX2Zvcl9tZWRpYV90cmFuc3BvcnQuaGFzX3ZhbHVl
KCkpIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgImE9Y3J5dG8gbGluZSB3YXMgbm90
IGZvdW5kIGluIHRoZSBvZmZlci4gTW9zdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJsaWtlbHkgeW91IGRpZCBub3QgZW5hYmxlIFNERVMuICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIk1ha2Ugc3VyZSB0byBwYXNzIGNvbmZpZy5lbmFibGVfZHRsc19zcnRwPWZhbHNl
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvIFJUQ0NvbmZpZ3VyYXRpb24uICIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBjb250aW51ZSB3aXRoIG1lZGlh
IHRyYW5zcG9ydC4gRmFsbGluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNr
IHRvIFJUUC4gaXNfbG9jYWw9IgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBsb2NhbDsK
KworICAgICAgLy8gUmVtb3ZlIG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5IGZyb20gY29uZmlnLCBi
ZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8KKyAgICAgIC8vIHVzZSBpdCBvbiB0aGUgc3Vic2VxdWVu
dCBjYWxsIChmb3IgdGhlIG90aGVyIHNpZGUgb2YgdGhlIG9mZmVyKS4KKyAgICAgIGNvbmZpZ18u
bWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgPSBudWxscHRyOworICAgIH0gZWxzZSB7CisgICAgICAv
LyBOb3RlIHRoYXQgd2UgaWdub3JlIGhlcmUgbGlmZXRpbWUgYW5kIGxlbmd0aC4KKyAgICAgIC8v
IEluIGZhY3Qgd2UgdGFrZSB0aG9zZSBiaXRzIChpbmxpbmUsIGxpZmV0aW1lIGFuZCBsZW5ndGgp
IGFuZCBrZWVwIGl0IGFzCisgICAgICAvLyBwYXJ0IG9mIGtleSBkZXJpdmF0aW9uLgorICAgICAg
Ly8KKyAgICAgIC8vIFRlY2huaWNhbGx5LCB3ZSBhcmUgYWxzbyBub3QgZm9sbG93aW5nIHJmYzQ1
NjgsIHdoaWNoIHJlcXVpcmVzIHVzIHRvCisgICAgICAvLyBzZW5kIGFuZCBhbnN3ZXIgd2l0aCB0
aGUga2V5IHRoYXQgd2UgY2hvc2UuIEluIHByYWN0aWNlLCBmb3IgbWVkaWEKKyAgICAgIC8vIHRy
YW5zcG9ydCwgdGhlIGN1cnJlbnQgYXBwcm9hY2ggc2hvdWxkIGJlIHN1ZmZpY2llbnQgKHdlIHRh
a2UgdGhlIGtleQorICAgICAgLy8gdGhhdCBzZW5kZXIgb2ZmZXJlZCwgYW5kIGNhbGxlciBhc3N1
bWVzIHdlIHdpbGwgdXNlIGl0LiBXZSBhcmUgbm90CisgICAgICAvLyBzaWduYWxpbmcgYmFjayB0
aGF0IHdlIGluZGVlZCB1c2VkIGl0LikKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OktleURl
cml2YXRpb24+IGtleV9kZXJpdmF0aW9uID0KKyAgICAgICAgICBydGM6OktleURlcml2YXRpb246
OkNyZWF0ZShydGM6OktleURlcml2YXRpb25BbGdvcml0aG06OkhLREZfU0hBMjU2KTsKKyAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGxhYmVsID0gIk1lZGlhVHJhbnNwb3J0TGFiZWwiOworICAgICAg
Y29uc3RleHByIGludCBrRGVyaXZlZEtleUJ5dGVTaXplID0gMzI7CisKKyAgICAgIGludCBrZXlf
bGVuLCBzYWx0X2xlbjsKKyAgICAgIGlmICghcnRjOjpHZXRTcnRwS2V5QW5kU2FsdExlbmd0aHMo
CisgICAgICAgICAgICAgIHJ0Yzo6U3J0cENyeXB0b1N1aXRlRnJvbU5hbWUoCisgICAgICAgICAg
ICAgICAgICBzZWxlY3RlZF9jcnlwdG9fZm9yX21lZGlhX3RyYW5zcG9ydC52YWx1ZSgpLmNpcGhl
cl9zdWl0ZSksCisgICAgICAgICAgICAgICZrZXlfbGVuLCAmc2FsdF9sZW4pKSB7CisgICAgICAg
IFJUQ19DSEVDSyhmYWxzZSkgPDwgIkNhbm5vdCBzZXQgdXAgc2VjdXJlIG1lZGlhIHRyYW5zcG9y
dCI7CisgICAgICB9CisgICAgICBydGM6Olplcm9PbkZyZWVCdWZmZXI8dWludDhfdD4gcmF3X2tl
eShrZXlfbGVuICsgc2FsdF9sZW4pOworCisgICAgICBjcmlja2V0OjpTcnRwRmlsdGVyOjpQYXJz
ZUtleVBhcmFtcygKKyAgICAgICAgICBzZWxlY3RlZF9jcnlwdG9fZm9yX21lZGlhX3RyYW5zcG9y
dC52YWx1ZSgpLmtleV9wYXJhbXMsCisgICAgICAgICAgcmF3X2tleS5kYXRhKCksIHJhd19rZXku
c2l6ZSgpKTsKKyAgICAgIGFic2w6Om9wdGlvbmFsPHJ0Yzo6WmVyb09uRnJlZUJ1ZmZlcjx1aW50
OF90Pj4ga2V5ID0KKyAgICAgICAgICBrZXlfZGVyaXZhdGlvbi0+RGVyaXZlS2V5KAorICAgICAg
ICAgICAgICByYXdfa2V5LAorICAgICAgICAgICAgICAvKnNhbHQ9Ki9udWxscHRyLAorICAgICAg
ICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PigKKyAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGxhYmVsLmRhdGEoKSksIGxhYmVsLnNp
emUoKSksCisgICAgICAgICAgICAgIGtEZXJpdmVkS2V5Qnl0ZVNpemUpOworCisgICAgICAvLyBX
ZSB3YW50IHRvIGNyYXNoIHRoZSBhcHAgaWYgd2UgZG9uJ3QgaGF2ZSBhIGtleSwgYW5kIG5vdCBz
aWxlbnRseSBmYWxsCisgICAgICAvLyBiYWNrIHRvIHRoZSB1bnNlY3VyZSBjb21tdW5pY2F0aW9u
LgorICAgICAgUlRDX0NIRUNLKGtleS5oYXNfdmFsdWUoKSk7CisgICAgICBNZWRpYVRyYW5zcG9y
dFNldHRpbmdzIHNldHRpbmdzOworICAgICAgc2V0dGluZ3MuaXNfY2FsbGVyID0gbG9jYWw7Cisg
ICAgICBzZXR0aW5ncy5wcmVfc2hhcmVkX2tleSA9CisgICAgICAgICAgc3RkOjpzdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oa2V5LnZhbHVlKCkuZGF0YSgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICBrZXkudmFsdWUoKS5zaXplKCkpOworICAgICAgYXV0byBtZWRpYV90cmFu
c3BvcnRfcmVzdWx0ID0KKyAgICAgICAgICBjb25maWdfLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
LT5DcmVhdGVNZWRpYVRyYW5zcG9ydCgKKyAgICAgICAgICAgICAgaWNlX3RyYW5zcG9ydCwgbmV0
d29ya190aHJlYWRfLCBzZXR0aW5ncyk7CisKKyAgICAgIC8vIFRPRE8oc3VraGFub3YpOiBQcm9w
ZXIgZXJyb3IgaGFuZGxpbmcuCisgICAgICBSVENfQ0hFQ0sobWVkaWFfdHJhbnNwb3J0X3Jlc3Vs
dC5vaygpKTsKKworICAgICAgcmV0dXJuIG1lZGlhX3RyYW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVl
KCk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFJUQ0Vycm9yIEpzZXBU
cmFuc3BvcnRDb250cm9sbGVyOjpNYXliZUNyZWF0ZUpzZXBUcmFuc3BvcnQoCisgICAgYm9vbCBs
b2NhbCwKICAgICBjb25zdCBjcmlja2V0OjpDb250ZW50SW5mbyYgY29udGVudF9pbmZvKSB7CiAg
IFJUQ19EQ0hFQ0sobmV0d29ya190aHJlYWRfLT5Jc0N1cnJlbnQoKSk7CiAgIGNyaWNrZXQ6Okpz
ZXBUcmFuc3BvcnQqIHRyYW5zcG9ydCA9IEdldEpzZXBUcmFuc3BvcnRCeU5hbWUoY29udGVudF9p
bmZvLm5hbWUpOwpAQCAtOTA2LDE3ICsxMDI3LDI0IEBAIFJUQ0Vycm9yIEpzZXBUcmFuc3BvcnRD
b250cm9sbGVyOjpNYXliZUNyZWF0ZUpzZXBUcmFuc3BvcnQoCiAKICAgc3RkOjp1bmlxdWVfcHRy
PGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbD4gcnRwX2R0bHNfdHJhbnNwb3J0ID0KICAg
ICAgIENyZWF0ZUR0bHNUcmFuc3BvcnQoY29udGVudF9pbmZvLm5hbWUsIC8qcnRjcCA9Ki9mYWxz
ZSk7CisKICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbD4g
cnRjcF9kdGxzX3RyYW5zcG9ydDsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydD4gdW5l
bmNyeXB0ZWRfcnRwX3RyYW5zcG9ydDsKKyAgc3RkOjp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnQ+
IHNkZXNfdHJhbnNwb3J0OworICBzdGQ6OnVuaXF1ZV9wdHI8RHRsc1NydHBUcmFuc3BvcnQ+IGR0
bHNfc3J0cF90cmFuc3BvcnQ7CisgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEludGVy
ZmFjZT4gbWVkaWFfdHJhbnNwb3J0OworCiAgIGlmIChjb25maWdfLnJ0Y3BfbXV4X3BvbGljeSAh
PQogICAgICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprUnRjcE11eFBvbGljeVJlcXVp
cmUgJiYKICAgICAgIGNvbnRlbnRfaW5mby50eXBlID09IGNyaWNrZXQ6Ok1lZGlhUHJvdG9jb2xU
eXBlOjprUnRwKSB7CiAgICAgcnRjcF9kdGxzX3RyYW5zcG9ydCA9CiAgICAgICAgIENyZWF0ZUR0
bHNUcmFuc3BvcnQoY29udGVudF9pbmZvLm5hbWUsIC8qcnRjcCA9Ki90cnVlKTsKICAgfQorICBt
ZWRpYV90cmFuc3BvcnQgPSBNYXliZUNyZWF0ZU1lZGlhVHJhbnNwb3J0KAorICAgICAgY29udGVu
dF9pbmZvLCBsb2NhbCwgcnRwX2R0bHNfdHJhbnNwb3J0LT5pY2VfdHJhbnNwb3J0KCkpOwogCi0g
IHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnQ+IHVuZW5jcnlwdGVkX3J0cF90cmFuc3BvcnQ7
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0PiBzZGVzX3RyYW5zcG9ydDsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPER0bHNTcnRwVHJhbnNwb3J0PiBkdGxzX3NydHBfdHJhbnNwb3J0OworICAv
LyBUT0RPKHN1a2hhbm92KTogRG8gbm90IGNyZWF0ZSBSVFAvUlRDUCB0cmFuc3BvcnRzIGlmIG1l
ZGlhIHRyYW5zcG9ydCBpcworICAvLyB1c2VkLgogICBpZiAoY29uZmlnXy5kaXNhYmxlX2VuY3J5
cHRpb24pIHsKICAgICB1bmVuY3J5cHRlZF9ydHBfdHJhbnNwb3J0ID0gQ3JlYXRlVW5lbmNyeXB0
ZWRSdHBUcmFuc3BvcnQoCiAgICAgICAgIGNvbnRlbnRfaW5mby5uYW1lLCBydHBfZHRsc190cmFu
c3BvcnQuZ2V0KCksIHJ0Y3BfZHRsc190cmFuc3BvcnQuZ2V0KCkpOwpAQCAtOTMyLDkgKzEwNjAs
MTIgQEAgUlRDRXJyb3IgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok1heWJlQ3JlYXRlSnNlcFRy
YW5zcG9ydCgKICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OkpzZXBUcmFuc3BvcnQ+
KAogICAgICAgICAgIGNvbnRlbnRfaW5mby5uYW1lLCBjZXJ0aWZpY2F0ZV8sIHN0ZDo6bW92ZSh1
bmVuY3J5cHRlZF9ydHBfdHJhbnNwb3J0KSwKICAgICAgICAgICBzdGQ6Om1vdmUoc2Rlc190cmFu
c3BvcnQpLCBzdGQ6Om1vdmUoZHRsc19zcnRwX3RyYW5zcG9ydCksCi0gICAgICAgICAgc3RkOjpt
b3ZlKHJ0cF9kdGxzX3RyYW5zcG9ydCksIHN0ZDo6bW92ZShydGNwX2R0bHNfdHJhbnNwb3J0KSk7
CisgICAgICAgICAgc3RkOjptb3ZlKHJ0cF9kdGxzX3RyYW5zcG9ydCksIHN0ZDo6bW92ZShydGNw
X2R0bHNfdHJhbnNwb3J0KSwKKyAgICAgICAgICBzdGQ6Om1vdmUobWVkaWFfdHJhbnNwb3J0KSk7
CiAgIGpzZXBfdHJhbnNwb3J0LT5TaWduYWxSdGNwTXV4QWN0aXZlLmNvbm5lY3QoCiAgICAgICB0
aGlzLCAmSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OlVwZGF0ZUFnZ3JlZ2F0ZVN0YXRlc19uKTsK
KyAganNlcF90cmFuc3BvcnQtPlNpZ25hbE1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkLmNvbm5l
Y3QoCisgICAgICB0aGlzLCAmSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok9uTWVkaWFUcmFuc3Bv
cnRTdGF0ZUNoYW5nZWRfbik7CiAgIFNldFRyYW5zcG9ydEZvck1pZChjb250ZW50X2luZm8ubmFt
ZSwganNlcF90cmFuc3BvcnQuZ2V0KCkpOwogCiAgIGpzZXBfdHJhbnNwb3J0c19ieV9uYW1lX1tj
b250ZW50X2luZm8ubmFtZV0gPSBzdGQ6Om1vdmUoanNlcF90cmFuc3BvcnQpOwpAQCAtOTU2LDEy
ICsxMDg3LDE5IEBAIHZvaWQgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok1heWJlRGVzdHJveUpz
ZXBUcmFuc3BvcnQoCiAgICAgICByZXR1cm47CiAgICAgfQogICB9CisKICAganNlcF90cmFuc3Bv
cnRzX2J5X25hbWVfLmVyYXNlKG1pZCk7CiAgIFVwZGF0ZUFnZ3JlZ2F0ZVN0YXRlc19uKCk7CiB9
CiAKIHZvaWQgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkRlc3Ryb3lBbGxKc2VwVHJhbnNwb3J0
c19uKCkgewogICBSVENfRENIRUNLKG5ldHdvcmtfdGhyZWFkXy0+SXNDdXJyZW50KCkpOworCisg
IGZvciAoY29uc3QgYXV0byYganNlcF90cmFuc3BvcnQgOiBqc2VwX3RyYW5zcG9ydHNfYnlfbmFt
ZV8pIHsKKyAgICBjb25maWdfLnRyYW5zcG9ydF9vYnNlcnZlci0+T25UcmFuc3BvcnRDaGFuZ2Vk
KGpzZXBfdHJhbnNwb3J0LmZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgIH0KKwogICBq
c2VwX3RyYW5zcG9ydHNfYnlfbmFtZV8uY2xlYXIoKTsKIH0KIApAQCAtMTExNiwxOCArMTI1NCwz
NSBAQCB2b2lkIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpPblRyYW5zcG9ydFN0YXRlQ2hhbmdl
ZF9uKAogICBVcGRhdGVBZ2dyZWdhdGVTdGF0ZXNfbigpOwogfQogCit2b2lkIEpzZXBUcmFuc3Bv
cnRDb250cm9sbGVyOjpPbk1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkX24oKSB7CisgIFNpZ25h
bE1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkKCk7CisgIFVwZGF0ZUFnZ3JlZ2F0ZVN0YXRlc19u
KCk7Cit9CisKIHZvaWQgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OlVwZGF0ZUFnZ3JlZ2F0ZVN0
YXRlc19uKCkgewogICBSVENfRENIRUNLKG5ldHdvcmtfdGhyZWFkXy0+SXNDdXJyZW50KCkpOwog
CiAgIGF1dG8gZHRsc190cmFuc3BvcnRzID0gR2V0RHRsc1RyYW5zcG9ydHMoKTsKICAgY3JpY2tl
dDo6SWNlQ29ubmVjdGlvblN0YXRlIG5ld19jb25uZWN0aW9uX3N0YXRlID0KICAgICAgIGNyaWNr
ZXQ6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGluZzsKKyAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OkljZUNvbm5lY3Rpb25TdGF0ZSBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUgPQorICAgICAgUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZTo6a0ljZUNvbm5lY3Rpb25O
ZXc7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlIG5ld19j
b21iaW5lZF9zdGF0ZSA9CisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5l
Y3Rpb25TdGF0ZTo6a05ldzsKICAgY3JpY2tldDo6SWNlR2F0aGVyaW5nU3RhdGUgbmV3X2dhdGhl
cmluZ19zdGF0ZSA9IGNyaWNrZXQ6OmtJY2VHYXRoZXJpbmdOZXc7CiAgIGJvb2wgYW55X2ZhaWxl
ZCA9IGZhbHNlOworCisgIC8vIFRPRE8oaHR0cDovL2J1Z3Mud2VicnRjLm9yZy85NzE5KSBJZih3
aGVuKSBtZWRpYV90cmFuc3BvcnQgZGlzYWJsZXMKKyAgLy8gZHRsc190cmFuc3BvcnRzIGVudGly
ZWx5LCB0aGUgYmVsb3cgbGluZSB3aWxsIGhhdmUgdG8gYmUgY2hhbmdlZCB0byBhY2NvdW50Cisg
IC8vIGZvciB0aGUgZmFjdCB0aGF0IGR0bHMgdHJhbnNwb3J0cyBtaWdodCBiZSBhYnNlbnQuCiAg
IGJvb2wgYWxsX2Nvbm5lY3RlZCA9ICFkdGxzX3RyYW5zcG9ydHMuZW1wdHkoKTsKICAgYm9vbCBh
bGxfY29tcGxldGVkID0gIWR0bHNfdHJhbnNwb3J0cy5lbXB0eSgpOwogICBib29sIGFueV9nYXRo
ZXJpbmcgPSBmYWxzZTsKICAgYm9vbCBhbGxfZG9uZV9nYXRoZXJpbmcgPSAhZHRsc190cmFuc3Bv
cnRzLmVtcHR5KCk7CisKKyAgc3RkOjptYXA8SWNlVHJhbnNwb3J0U3RhdGUsIGludD4gaWNlX3N0
YXRlX2NvdW50czsKKyAgc3RkOjptYXA8Y3JpY2tldDo6RHRsc1RyYW5zcG9ydFN0YXRlLCBpbnQ+
IGR0bHNfc3RhdGVfY291bnRzOworCiAgIGZvciAoY29uc3QgYXV0byYgZHRscyA6IGR0bHNfdHJh
bnNwb3J0cykgewogICAgIGFueV9mYWlsZWQgPSBhbnlfZmFpbGVkIHx8IGR0bHMtPmljZV90cmFu
c3BvcnQoKS0+R2V0U3RhdGUoKSA9PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmlja2V0OjpJY2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfRkFJTEVEOwpAQCAtMTE0NCw3ICsx
Mjk5LDM1IEBAIHZvaWQgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OlVwZGF0ZUFnZ3JlZ2F0ZVN0
YXRlc19uKCkgewogICAgIGFsbF9kb25lX2dhdGhlcmluZyA9CiAgICAgICAgIGFsbF9kb25lX2dh
dGhlcmluZyAmJiBkdGxzLT5pY2VfdHJhbnNwb3J0KCktPmdhdGhlcmluZ19zdGF0ZSgpID09CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6a0ljZUdhdGhlcmluZ0Nv
bXBsZXRlOworCisgICAgZHRsc19zdGF0ZV9jb3VudHNbZHRscy0+ZHRsc19zdGF0ZSgpXSsrOwor
ICAgIGljZV9zdGF0ZV9jb3VudHNbZHRscy0+aWNlX3RyYW5zcG9ydCgpLT5HZXRJY2VUcmFuc3Bv
cnRTdGF0ZSgpXSsrOwogICB9CisKKyAgZm9yIChhdXRvIGl0ID0ganNlcF90cmFuc3BvcnRzX2J5
X25hbWVfLmJlZ2luKCk7CisgICAgICAgaXQgIT0ganNlcF90cmFuc3BvcnRzX2J5X25hbWVfLmVu
ZCgpOyArK2l0KSB7CisgICAgYXV0byBqc2VwX3RyYW5zcG9ydCA9IGl0LT5zZWNvbmQuZ2V0KCk7
CisgICAgaWYgKCFqc2VwX3RyYW5zcG9ydC0+bWVkaWFfdHJhbnNwb3J0KCkpIHsKKyAgICAgIGNv
bnRpbnVlOworICAgIH0KKworICAgIC8vIFRoZXJlIGlzIG5vICdrSWNlQ29ubmVjdGlvbkRpc2Nv
bm5lY3RlZCcsIHNvIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUKKyAgICAvLyBjb25uZWN0ZWQgYW5k
IGNvbXBsZXRlZC4KKyAgICAvLyBXZSB0cmVhdCBrQ2xvc2VkIGFzIGZhaWxlZCwgYmVjYXVzZSBp
ZiBpdCBoYXBwZW5zIGJlZm9yZSBzaHV0dGluZyBkb3duCisgICAgLy8gbWVkaWEgdHJhbnNwb3J0
cyBpdCBtZWFucyB0aGF0IHRoZXJlIHdhcyBhIGZhaWx1cmUuCisgICAgLy8gTWVkaWFUcmFuc3Bv
cnRJbnRlcmZhY2UgYWxsb3dzIHRvIGZsaXAgYmFjayBhbmQgZm9ydGggYmV0d2VlbiBrV3JpdGFi
bGUKKyAgICAvLyBhbmQga1BlbmRpbmcsIGJ1dCB0aGVyZSBkb2VzIG5vdCBleGlzdCBhbiBpbXBs
ZW1lbnRhdGlvbiB0aGF0IGRvZXMgdGhhdCwKKyAgICAvLyBhbmQgdGhlIGNvbnRyYWN0IG9mIGpz
ZXAgdHJhbnNwb3J0IGNvbnRyb2xsZXIgZG9lc24ndCBxdWl0ZSBleHBlY3QgdGhhdC4KKyAgICAv
LyBXaGVuIHRoaXMgaGFwcGVucywgd2Ugd291bGQgZ28gZnJvbSBjb25uZWN0ZWQgdG8gY29ubmVj
dGluZyBzdGF0ZSwgYnV0CisgICAgLy8gdGhpcyBtYXkgY2hhbmdlIGluIGZ1dHVyZS4KKyAgICBh
bnlfZmFpbGVkIHw9IGpzZXBfdHJhbnNwb3J0LT5tZWRpYV90cmFuc3BvcnRfc3RhdGUoKSA9PQor
ICAgICAgICAgICAgICAgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlOjprQ2xvc2VkOwor
ICAgIGFsbF9jb21wbGV0ZWQgJj0ganNlcF90cmFuc3BvcnQtPm1lZGlhX3RyYW5zcG9ydF9zdGF0
ZSgpID09CisgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0U3RhdGU6
OmtXcml0YWJsZTsKKyAgICBhbGxfY29ubmVjdGVkICY9IGpzZXBfdHJhbnNwb3J0LT5tZWRpYV90
cmFuc3BvcnRfc3RhdGUoKSA9PQorICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpNZWRpYVRy
YW5zcG9ydFN0YXRlOjprV3JpdGFibGU7CisgIH0KKwogICBpZiAoYW55X2ZhaWxlZCkgewogICAg
IG5ld19jb25uZWN0aW9uX3N0YXRlID0gY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25GYWlsZWQ7CiAg
IH0gZWxzZSBpZiAoYWxsX2NvbXBsZXRlZCkgewpAQCAtMTE2MCw2ICsxMzQzLDEyNyBAQCB2b2lk
IEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpVcGRhdGVBZ2dyZWdhdGVTdGF0ZXNfbigpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgfQogCisgIC8vIENvbXB1dGUgdGhl
IGN1cnJlbnQgUlRDSWNlQ29ubmVjdGlvblN0YXRlIGFzIGRlc2NyaWJlZCBpbgorICAvLyBodHRw
czovL3d3dy53My5vcmcvVFIvd2VicnRjLyNkb20tcnRjaWNlY29ubmVjdGlvbnN0YXRlLgorICAv
LyBUaGUgUGVlckNvbm5lY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSAiY2xv
c2VkIiBzdGF0ZS4KKyAgaW50IHRvdGFsX2ljZV9jaGVja2luZyA9IGljZV9zdGF0ZV9jb3VudHNb
SWNlVHJhbnNwb3J0U3RhdGU6OmtDaGVja2luZ107CisgIGludCB0b3RhbF9pY2VfY29ubmVjdGVk
ID0gaWNlX3N0YXRlX2NvdW50c1tJY2VUcmFuc3BvcnRTdGF0ZTo6a0Nvbm5lY3RlZF07CisgIGlu
dCB0b3RhbF9pY2VfY29tcGxldGVkID0gaWNlX3N0YXRlX2NvdW50c1tJY2VUcmFuc3BvcnRTdGF0
ZTo6a0NvbXBsZXRlZF07CisgIGludCB0b3RhbF9pY2VfZmFpbGVkID0gaWNlX3N0YXRlX2NvdW50
c1tJY2VUcmFuc3BvcnRTdGF0ZTo6a0ZhaWxlZF07CisgIGludCB0b3RhbF9pY2VfZGlzY29ubmVj
dGVkID0KKyAgICAgIGljZV9zdGF0ZV9jb3VudHNbSWNlVHJhbnNwb3J0U3RhdGU6OmtEaXNjb25u
ZWN0ZWRdOworICBpbnQgdG90YWxfaWNlX2Nsb3NlZCA9IGljZV9zdGF0ZV9jb3VudHNbSWNlVHJh
bnNwb3J0U3RhdGU6OmtDbG9zZWRdOworICBpbnQgdG90YWxfaWNlX25ldyA9IGljZV9zdGF0ZV9j
b3VudHNbSWNlVHJhbnNwb3J0U3RhdGU6OmtOZXddOworICBpbnQgdG90YWxfaWNlID0gZHRsc190
cmFuc3BvcnRzLnNpemUoKTsKKworICBpZiAodG90YWxfaWNlX2ZhaWxlZCA+IDApIHsKKyAgICAv
LyBBbnkgb2YgdGhlIFJUQ0ljZVRyYW5zcG9ydHMgYXJlIGluIHRoZSAiZmFpbGVkIiBzdGF0ZS4K
KyAgICBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
a0ljZUNvbm5lY3Rpb25GYWlsZWQ7CisgIH0gZWxzZSBpZiAodG90YWxfaWNlX2Rpc2Nvbm5lY3Rl
ZCA+IDApIHsKKyAgICAvLyBBbnkgb2YgdGhlIFJUQ0ljZVRyYW5zcG9ydHMgYXJlIGluIHRoZSAi
ZGlzY29ubmVjdGVkIiBzdGF0ZSBhbmQgbm9uZSBvZgorICAgIC8vIHRoZW0gYXJlIGluIHRoZSAi
ZmFpbGVkIiBzdGF0ZS4KKyAgICBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUgPQorICAgICAgICBQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25EaXNjb25uZWN0ZWQ7CisgIH0g
ZWxzZSBpZiAodG90YWxfaWNlX2NoZWNraW5nID4gMCkgeworICAgIC8vIEFueSBvZiB0aGUgUlRD
SWNlVHJhbnNwb3J0cyBhcmUgaW4gdGhlICJjaGVja2luZyIgc3RhdGUgYW5kIG5vbmUgb2YgdGhl
bQorICAgIC8vIGFyZSBpbiB0aGUgImRpc2Nvbm5lY3RlZCIgb3IgImZhaWxlZCIgc3RhdGUuCisg
ICAgbmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJ
Y2VDb25uZWN0aW9uQ2hlY2tpbmc7CisgIH0gZWxzZSBpZiAodG90YWxfaWNlX2NvbXBsZXRlZCAr
IHRvdGFsX2ljZV9jbG9zZWQgPT0gdG90YWxfaWNlICYmCisgICAgICAgICAgICAgdG90YWxfaWNl
X2NvbXBsZXRlZCA+IDApIHsKKyAgICAvLyBBbGwgUlRDSWNlVHJhbnNwb3J0cyBhcmUgaW4gdGhl
ICJjb21wbGV0ZWQiIG9yICJjbG9zZWQiIHN0YXRlIGFuZCBhdAorICAgIC8vIGxlYXN0IG9uZSBv
ZiB0aGVtIGlzIGluIHRoZSAiY29tcGxldGVkIiBzdGF0ZS4KKyAgICBuZXdfaWNlX2Nvbm5lY3Rp
b25fc3RhdGUgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25Db21wbGV0
ZWQ7CisgIH0gZWxzZSBpZiAodG90YWxfaWNlX2Nvbm5lY3RlZCArIHRvdGFsX2ljZV9jb21wbGV0
ZWQgKyB0b3RhbF9pY2VfY2xvc2VkID09CisgICAgICAgICAgICAgICAgIHRvdGFsX2ljZSAmJgor
ICAgICAgICAgICAgIHRvdGFsX2ljZV9jb25uZWN0ZWQgPiAwKSB7CisgICAgLy8gQWxsIFJUQ0lj
ZVRyYW5zcG9ydHMgYXJlIGluIHRoZSAiY29ubmVjdGVkIiwgImNvbXBsZXRlZCIgb3IgImNsb3Nl
ZCIKKyAgICAvLyBzdGF0ZSBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZW0gaXMgaW4gdGhlICJjb25u
ZWN0ZWQiIHN0YXRlLgorICAgIG5ld19pY2VfY29ubmVjdGlvbl9zdGF0ZSA9IFBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkNvbm5lY3RlZDsKKyAgfSBlbHNlIGlmICgodG90
YWxfaWNlX25ldyA+IDAgJiYKKyAgICAgICAgICAgICAgdG90YWxfaWNlX2NoZWNraW5nICsgdG90
YWxfaWNlX2Rpc2Nvbm5lY3RlZCArIHRvdGFsX2ljZV9mYWlsZWQgPT0KKyAgICAgICAgICAgICAg
ICAgIDApIHx8CisgICAgICAgICAgICAgdG90YWxfaWNlID09IHRvdGFsX2ljZV9jbG9zZWQpIHsK
KyAgICAvLyBBbnkgb2YgdGhlIFJUQ0ljZVRyYW5zcG9ydHMgYXJlIGluIHRoZSAibmV3IiBzdGF0
ZSBhbmQgbm9uZSBvZiB0aGVtIGFyZQorICAgIC8vIGluIHRoZSAiY2hlY2tpbmciLCAiZGlzY29u
bmVjdGVkIiBvciAiZmFpbGVkIiBzdGF0ZSwgb3IgYWxsCisgICAgLy8gUlRDSWNlVHJhbnNwb3J0
cyBhcmUgaW4gdGhlICJjbG9zZWQiIHN0YXRlLCBvciB0aGVyZSBhcmUgbm8gdHJhbnNwb3J0cy4K
KyAgICBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
a0ljZUNvbm5lY3Rpb25OZXc7CisgIH0gZWxzZSB7CisgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAg
fQorCisgIGlmIChzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25fc3RhdGVfICE9IG5ld19pY2Vf
Y29ubmVjdGlvbl9zdGF0ZSkgeworICAgIHN0YW5kYXJkaXplZF9pY2VfY29ubmVjdGlvbl9zdGF0
ZV8gPSBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGU7CisgICAgaW52b2tlcl8uQXN5bmNJbnZva2U8
dm9pZD4oCisgICAgICAgIFJUQ19GUk9NX0hFUkUsIHNpZ25hbGluZ190aHJlYWRfLCBbdGhpcywg
bmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlXSB7CisgICAgICAgICAgU2lnbmFsU3RhbmRhcmRpemVk
SWNlQ29ubmVjdGlvblN0YXRlKG5ld19pY2VfY29ubmVjdGlvbl9zdGF0ZSk7CisgICAgICAgIH0p
OworICB9CisKKyAgLy8gQ29tcHV0ZSB0aGUgY3VycmVudCBSVENQZWVyQ29ubmVjdGlvblN0YXRl
IGFzIGRlc2NyaWJlZCBpbgorICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2VicnRjLyNkb20t
cnRjcGVlcmNvbm5lY3Rpb25zdGF0ZS4KKyAgLy8gVGhlIFBlZXJDb25uZWN0aW9uIGlzIHJlc3Bv
bnNpYmxlIGZvciBoYW5kbGluZyB0aGUgImNsb3NlZCIgc3RhdGUuCisgIC8vIE5vdGUgdGhhdCAi
Y29ubmVjdGluZyIgaXMgb25seSBhIHZhbGlkIHN0YXRlIGZvciBEVExTIHRyYW5zcG9ydHMgd2hp
bGUKKyAgLy8gImNoZWNraW5nIiwgImNvbXBsZXRlZCIgYW5kICJkaXNjb25uZWN0ZWQiIGFyZSBv
bmx5IHZhbGlkIGZvciBJQ0UKKyAgLy8gdHJhbnNwb3J0cy4KKyAgaW50IHRvdGFsX2Nvbm5lY3Rl
ZCA9IHRvdGFsX2ljZV9jb25uZWN0ZWQgKworICAgICAgICAgICAgICAgICAgICAgICAgZHRsc19z
dGF0ZV9jb3VudHNbY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEXTsKKyAgaW50IHRv
dGFsX2R0bHNfY29ubmVjdGluZyA9CisgICAgICBkdGxzX3N0YXRlX2NvdW50c1tjcmlja2V0OjpE
VExTX1RSQU5TUE9SVF9DT05ORUNUSU5HXTsKKyAgaW50IHRvdGFsX2ZhaWxlZCA9CisgICAgICB0
b3RhbF9pY2VfZmFpbGVkICsgZHRsc19zdGF0ZV9jb3VudHNbY3JpY2tldDo6RFRMU19UUkFOU1BP
UlRfRkFJTEVEXTsKKyAgaW50IHRvdGFsX2Nsb3NlZCA9CisgICAgICB0b3RhbF9pY2VfY2xvc2Vk
ICsgZHRsc19zdGF0ZV9jb3VudHNbY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ0xPU0VEXTsKKyAg
aW50IHRvdGFsX25ldyA9CisgICAgICB0b3RhbF9pY2VfbmV3ICsgZHRsc19zdGF0ZV9jb3VudHNb
Y3JpY2tldDo6RFRMU19UUkFOU1BPUlRfTkVXXTsKKyAgaW50IHRvdGFsX3RyYW5zcG9ydHMgPSB0
b3RhbF9pY2UgKiAyOworCisgIGlmICh0b3RhbF9mYWlsZWQgPiAwKSB7CisgICAgLy8gQW55IG9m
IHRoZSBSVENJY2VUcmFuc3BvcnRzIG9yIFJUQ0R0bHNUcmFuc3BvcnRzIGFyZSBpbiBhICJmYWls
ZWQiIHN0YXRlLgorICAgIG5ld19jb21iaW5lZF9zdGF0ZSA9IFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprRmFpbGVkOworICB9IGVsc2UgaWYgKHRvdGFsX2lj
ZV9kaXNjb25uZWN0ZWQgPiAwICYmCisgICAgICAgICAgICAgdG90YWxfZHRsc19jb25uZWN0aW5n
ICsgdG90YWxfaWNlX2NoZWNraW5nID09IDApIHsKKyAgICAvLyBBbnkgb2YgdGhlIFJUQ0ljZVRy
YW5zcG9ydHMgb3IgUlRDRHRsc1RyYW5zcG9ydHMgYXJlIGluIHRoZQorICAgIC8vICJkaXNjb25u
ZWN0ZWQiIHN0YXRlIGFuZCBub25lIG9mIHRoZW0gYXJlIGluIHRoZSAiZmFpbGVkIiBvciAiY29u
bmVjdGluZyIKKyAgICAvLyBvciAiY2hlY2tpbmciIHN0YXRlLgorICAgIG5ld19jb21iaW5lZF9z
dGF0ZSA9CisgICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0
YXRlOjprRGlzY29ubmVjdGVkOworICB9IGVsc2UgaWYgKHRvdGFsX2R0bHNfY29ubmVjdGluZyAr
IHRvdGFsX2ljZV9jaGVja2luZyA+IDApIHsKKyAgICAvLyBBbnkgb2YgdGhlIFJUQ0ljZVRyYW5z
cG9ydHMgb3IgUlRDRHRsc1RyYW5zcG9ydHMgYXJlIGluIHRoZSAiY29ubmVjdGluZyIKKyAgICAv
LyBvciAiY2hlY2tpbmciIHN0YXRlIGFuZCBub25lIG9mIHRoZW0gaXMgaW4gdGhlICJmYWlsZWQi
IHN0YXRlLgorICAgIG5ld19jb21iaW5lZF9zdGF0ZSA9CisgICAgICAgIFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29ubmVjdGluZzsKKyAgfSBlbHNlIGlm
ICh0b3RhbF9jb25uZWN0ZWQgKyB0b3RhbF9pY2VfY29tcGxldGVkICsgdG90YWxfY2xvc2VkID09
CisgICAgICAgICAgICAgICAgIHRvdGFsX3RyYW5zcG9ydHMgJiYKKyAgICAgICAgICAgICB0b3Rh
bF9jb25uZWN0ZWQgKyB0b3RhbF9pY2VfY29tcGxldGVkID4gMCkgeworICAgIC8vIEFsbCBSVENJ
Y2VUcmFuc3BvcnRzIGFuZCBSVENEdGxzVHJhbnNwb3J0cyBhcmUgaW4gdGhlICJjb25uZWN0ZWQi
LAorICAgIC8vICJjb21wbGV0ZWQiIG9yICJjbG9zZWQiIHN0YXRlIGFuZCBhdCBsZWFzdCBvbmUg
b2YgdGhlbSBpcyBpbiB0aGUKKyAgICAvLyAiY29ubmVjdGVkIiBvciAiY29tcGxldGVkIiBzdGF0
ZS4KKyAgICBuZXdfY29tYmluZWRfc3RhdGUgPQorICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3RlZDsKKyAgfSBlbHNlIGlmICgodG90
YWxfbmV3ID4gMCAmJiB0b3RhbF9kdGxzX2Nvbm5lY3RpbmcgKyB0b3RhbF9pY2VfY2hlY2tpbmcg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfZmFpbGVkICsg
dG90YWxfaWNlX2Rpc2Nvbm5lY3RlZCA9PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwKSB8fAorICAgICAgICAgICAgIHRvdGFsX3RyYW5zcG9ydHMgPT0gdG90YWxfY2xvc2Vk
KSB7CisgICAgLy8gQW55IG9mIHRoZSBSVENJY2VUcmFuc3BvcnRzIG9yIFJUQ0R0bHNUcmFuc3Bv
cnRzIGFyZSBpbiB0aGUgIm5ldyIgc3RhdGUKKyAgICAvLyBhbmQgbm9uZSBvZiB0aGUgdHJhbnNw
b3J0cyBhcmUgaW4gdGhlICJjb25uZWN0aW5nIiwgImNoZWNraW5nIiwgImZhaWxlZCIKKyAgICAv
LyBvciAiZGlzY29ubmVjdGVkIiBzdGF0ZSwgb3IgYWxsIHRyYW5zcG9ydHMgYXJlIGluIHRoZSAi
Y2xvc2VkIiBzdGF0ZSwgb3IKKyAgICAvLyB0aGVyZSBhcmUgbm8gdHJhbnNwb3J0cy4KKyAgICAv
LworICAgIC8vIE5vdGUgdGhhdCBpZiBub25lIG9mIHRoZSBvdGhlciBjb25kaXRpb25zIGhvbGQg
dGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlCisgICAgLy8gdHJ1ZS4KKyAgICBuZXdfY29tYmluZWRf
c3RhdGUgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a05l
dzsKKyAgfSBlbHNlIHsKKyAgICBSVENfTk9UUkVBQ0hFRCgpOworICB9CisKKyAgaWYgKGNvbWJp
bmVkX2Nvbm5lY3Rpb25fc3RhdGVfICE9IG5ld19jb21iaW5lZF9zdGF0ZSkgeworICAgIGNvbWJp
bmVkX2Nvbm5lY3Rpb25fc3RhdGVfID0gbmV3X2NvbWJpbmVkX3N0YXRlOworICAgIGludm9rZXJf
LkFzeW5jSW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIHNpZ25hbGluZ190aHJlYWRfLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLCBuZXdfY29tYmluZWRfc3RhdGVdIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hbENvbm5lY3Rpb25TdGF0ZShu
ZXdfY29tYmluZWRfc3RhdGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwor
ICB9CisKICAgaWYgKGFsbF9kb25lX2dhdGhlcmluZykgewogICAgIG5ld19nYXRoZXJpbmdfc3Rh
dGUgPSBjcmlja2V0OjprSWNlR2F0aGVyaW5nQ29tcGxldGU7CiAgIH0gZWxzZSBpZiAoYW55X2dh
dGhlcmluZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydGNvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9sbGVyLmgKaW5k
ZXggZDkzNDBjZjM1N2QwZTEzNDVkYjYzNTg5M2UyZmIyN2EzNDQ1MTQ4MC4uM2VkN2Y1ZjQzM2I3
YTYyNTBiMzQ1ZWQ5NjA4NmZlMmYzODNkMzBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydGNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJh
bnNwb3J0Y29udHJvbGxlci5oCkBAIC0xOCw2ICsxOCw4IEBACiAjaW5jbHVkZSA8dmVjdG9yPgog
CiAjaW5jbHVkZSAiYXBpL2NhbmRpZGF0ZS5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRv
b3B0aW9ucy5oIgorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJtZWRpYS9zY3RwL3Nj
dHB0cmFuc3BvcnRpbnRlcm5hbC5oIgpAQCAtMzIsNyArMzQsNiBAQAogI2luY2x1ZGUgInJ0Y19i
YXNlL2FzeW5jaW52b2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5
L3NpZ3Nsb3Qvc2lnc2xvdC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKQEAgLTU2LDcgKzU3LDggQEAg
Y2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3Rz
PD4gewogICAgIHZpcnR1YWwgYm9vbCBPblRyYW5zcG9ydENoYW5nZWQoCiAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtaWQsCiAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJh
bnNwb3J0LAotICAgICAgICBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIGR0bHNfdHJh
bnNwb3J0KSA9IDA7CisgICAgICAgIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCogZHRs
c190cmFuc3BvcnQsCisgICAgICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFu
c3BvcnQpID0gMDsKICAgfTsKIAogICBzdHJ1Y3QgQ29uZmlnIHsKQEAgLTY3LDcgKzY5LDcgQEAg
Y2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3Rz
PD4gewogICAgIHJ0Yzo6U1NMUHJvdG9jb2xWZXJzaW9uIHNzbF9tYXhfdmVyc2lvbiA9IHJ0Yzo6
U1NMX1BST1RPQ09MX0RUTFNfMTI7CiAgICAgLy8gfGNyeXB0b19vcHRpb25zfCBpcyB1c2VkIHRv
IGRldGVybWluZSBpZiBjcmVhdGVkIERUTFMgdHJhbnNwb3J0cwogICAgIC8vIG5lZ290aWF0ZSBH
Q00gY3J5cHRvIHN1aXRlcyBvciBub3QuCi0gICAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19v
cHRpb25zOworICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uczsKICAgICBQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6QnVuZGxlUG9saWN5IGJ1bmRsZV9wb2xpY3kgPQogICAg
ICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0J1bmRsZVBvbGljeUJhbGFuY2VkOwogICAg
IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSdGNwTXV4UG9saWN5IHJ0Y3BfbXV4X3BvbGljeSA9
CkBAIC03OSw2ICs4MSwxMyBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlciA6IHB1Ymxp
YyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgT2JzZXJ2ZXIqIHRyYW5zcG9ydF9vYnNlcnZl
ciA9IG51bGxwdHI7CiAgICAgYm9vbCBhY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMgPSBmYWxzZTsK
ICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nID0gbnVsbHB0cjsKKworICAgIC8vIE9wdGlvbmFs
IG1lZGlhIHRyYW5zcG9ydCBmYWN0b3J5IChleHBlcmltZW50YWwpLiBJZiBwcm92aWRlZCBpdCB3
aWxsIGJlCisgICAgLy8gdXNlZCB0byBjcmVhdGUgbWVkaWFfdHJhbnNwb3J0IGFuZCB3aWxsIGJl
IHVzZWQgdG8gc2VuZCAvIHJlY2VpdmUKKyAgICAvLyBhdWRpbyBhbmQgdmlkZW8gZnJhbWVzIGlu
c3RlYWQgb2YgUlRQLiBOb3RlIHRoYXQgY3VycmVudGx5CisgICAgLy8gbWVkaWFfdHJhbnNwb3J0
IGNvLWV4aXN0cyB3aXRoIFJUUCAvIFJUQ1AgdHJhbnNwb3J0cyBhbmQgdXNlcyB0aGUgc2FtZQor
ICAgIC8vIHVuZGVybHlpbmcgSUNFIHRyYW5zcG9ydC4KKyAgICBNZWRpYVRyYW5zcG9ydEZhY3Rv
cnkqIG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gbnVsbHB0cjsKICAgfTsKIAogICAvLyBUaGUg
SUNFIHJlbGF0ZWQgZXZlbnRzIGFyZSBzaWduYWxlZCBvbiB0aGUgfHNpZ25hbGluZ190aHJlYWR8
LgpAQCAtMTA4LDYgKzExNyw5IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyIDogcHVi
bGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgY3JpY2tldDo6RHRsc1RyYW5zcG9ydEludGVy
bmFsKiBHZXRSdGNwRHRsc1RyYW5zcG9ydCgKICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQp
IGNvbnN0OwogCisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBHZXRNZWRpYVRyYW5zcG9ydChj
b25zdCBzdGQ6OnN0cmluZyYgbWlkKSBjb25zdDsKKyAgTWVkaWFUcmFuc3BvcnRTdGF0ZSBHZXRN
ZWRpYVRyYW5zcG9ydFN0YXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpIGNvbnN0OworCiAgIC8q
KioqKioqKioqKioqKioqKioqKioKICAgICogSUNFLXJlbGF0ZWQgbWV0aG9kcwogICAgKioqKioq
KioqKioqKioqKioqKiovCkBAIC0xNTcsNiArMTY5LDEyIEBAIGNsYXNzIEpzZXBUcmFuc3BvcnRD
b250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKIAogICB2b2lkIFNldEFj
dGl2ZVJlc2V0U3J0cFBhcmFtcyhib29sIGFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtcyk7CiAKKyAg
Ly8gQWxsb3dzIHRvIG92ZXJ3cml0ZSB0aGUgc2V0dGluZ3MgZnJvbSBjb25maWcuIFlvdSBtYXkg
c2V0IG9yIHJlc2V0IHRoZQorICAvLyBtZWRpYSB0cmFuc3BvcnQgZmFjdG9yeSBvbiB0aGUganNl
cCB0cmFuc3BvcnQgY29udHJvbGxlciwgYXMgbG9uZyBhcyB5b3UKKyAgLy8gZGlkIG5vdCBjYWxs
ICdHZXRNZWRpYVRyYW5zcG9ydCcgb3IgJ01heWJlQ3JlYXRlSnNlcFRyYW5zcG9ydCcuIE9uY2Ug
SnNlcAorICAvLyB0cmFuc3BvcnQgaXMgY3JlYXRlZCwgeW91IGNhbid0IGNoYW5nZSB0aGlzIHNl
dHRpbmcuCisgIHZvaWQgU2V0TWVkaWFUcmFuc3BvcnRGYWN0b3J5KE1lZGlhVHJhbnNwb3J0RmFj
dG9yeSogbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpOworCiAgIC8vIEFsbCBvZiB0aGVzZSBzaWdu
YWxzIGFyZSBmaXJlZCBvbiB0aGUgc2lnbmFsaW5nIHRocmVhZC4KIAogICAvLyBJZiBhbnkgdHJh
bnNwb3J0IGZhaWxlZCA9PiBmYWlsZWQsCkBAIC0xNjUsNiArMTgzLDExIEBAIGNsYXNzIEpzZXBU
cmFuc3BvcnRDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgLy8g
RWxzZSA9PiBjb25uZWN0aW5nCiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8Y3JpY2tldDo6SWNlQ29ubmVj
dGlvblN0YXRlPiBTaWduYWxJY2VDb25uZWN0aW9uU3RhdGU7CiAKKyAgc2lnc2xvdDo6c2lnbmFs
MTxQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZT4KKyAgICAgIFNp
Z25hbENvbm5lY3Rpb25TdGF0ZTsKKyAgc2lnc2xvdDo6c2lnbmFsMTxQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlPgorICAgICAgU2lnbmFsU3RhbmRhcmRpemVkSWNl
Q29ubmVjdGlvblN0YXRlOworCiAgIC8vIElmIGFsbCB0cmFuc3BvcnRzIGRvbmUgZ2F0aGVyaW5n
ID0+IGNvbXBsZXRlLAogICAvLyBFbHNlIGlmIGFueSBhcmUgZ2F0aGVyaW5nID0+IGdhdGhlcmlu
ZywKICAgLy8gRWxzZSA9PiBuZXcKQEAgLTE3OSw2ICsyMDIsOCBAQCBjbGFzcyBKc2VwVHJhbnNw
b3J0Q29udHJvbGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAKICAgc2lnc2xv
dDo6c2lnbmFsMTxydGM6OlNTTEhhbmRzaGFrZUVycm9yPiBTaWduYWxEdGxzSGFuZHNoYWtlRXJy
b3I7CiAKKyAgc2lnc2xvdDo6c2lnbmFsPD4gU2lnbmFsTWVkaWFUcmFuc3BvcnRTdGF0ZUNoYW5n
ZWQ7CisKICBwcml2YXRlOgogICBSVENFcnJvciBBcHBseURlc2NyaXB0aW9uX24oYm9vbCBsb2Nh
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFR5cGUgdHlwZSwKQEAgLTI0MSw3
ICsyNjYsMjAgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgOiBwdWJsaWMgc2lnc2xv
dDo6aGFzX3Nsb3RzPD4gewogICBjcmlja2V0OjpKc2VwVHJhbnNwb3J0KiBHZXRKc2VwVHJhbnNw
b3J0QnlOYW1lKAogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9uYW1lKTsKIAot
ICBSVENFcnJvciBNYXliZUNyZWF0ZUpzZXBUcmFuc3BvcnQoY29uc3QgY3JpY2tldDo6Q29udGVu
dEluZm8mIGNvbnRlbnRfaW5mbyk7CisgIC8vIENyZWF0ZXMganNlcCB0cmFuc3BvcnQuIE5vb3Ag
aWYgdHJhbnNwb3J0IGlzIGFscmVhZHkgY3JlYXRlZC4KKyAgLy8gVHJhbnNwb3J0IGlzIGNyZWF0
ZWQgZWl0aGVyIGR1cmluZyBTZXRMb2NhbERlc2NyaXB0aW9uICh8bG9jYWx8ID09IHRydWUpIG9y
CisgIC8vIGR1cmluZyBTZXRSZW1vdGVEZXNjcmlwdGlvbiAofGxvY2FsfCA9PSBmYWxzZSkuIFBh
c3NpbmcgfGxvY2FsfCBoZWxwcyB0bworICAvLyBkaWZmZXJlbnRpYXRlIGluaXRpYXRvciAoY2Fs
bGVyKSBmcm9tIGFuc3dlcmVyIChjYWxsZWUpLgorICBSVENFcnJvciBNYXliZUNyZWF0ZUpzZXBU
cmFuc3BvcnQoYm9vbCBsb2NhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNyaWNrZXQ6OkNvbnRlbnRJbmZvJiBjb250ZW50X2luZm8pOworCisgIC8vIENyZWF0
ZXMgbWVkaWEgdHJhbnNwb3J0IGlmIGNvbmZpZyB3YW50cyB0byB1c2UgaXQsIGFuZCBwcmUtc2hh
cmVkIGtleSBpcworICAvLyBwcm92aWRlZCBpbiBjb250ZW50IGluZm8uIEl0IG1vZGlmaWVzIHRo
ZSBjb25maWcgdG8gZGlzYWJsZSBtZWRpYSB0cmFuc3BvcnQKKyAgLy8gaWYgcHJlLXNoYXJlZCBr
ZXkgaXMgbm90IHByb3ZpZGVkLgorICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5z
cG9ydEludGVyZmFjZT4gTWF5YmVDcmVhdGVNZWRpYVRyYW5zcG9ydCgKKyAgICAgIGNvbnN0IGNy
aWNrZXQ6OkNvbnRlbnRJbmZvJiBjb250ZW50X2luZm8sCisgICAgICBib29sIGxvY2FsLAorICAg
ICAgY3JpY2tldDo6SWNlVHJhbnNwb3J0SW50ZXJuYWwqIGljZV90cmFuc3BvcnQpOwogICB2b2lk
IE1heWJlRGVzdHJveUpzZXBUcmFuc3BvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCk7CiAgIHZv
aWQgRGVzdHJveUFsbEpzZXBUcmFuc3BvcnRzX24oKTsKIApAQCAtMjg1LDYgKzMyMyw3IEBAIGNs
YXNzIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3JpY2tldDo6
Q2FuZGlkYXRlcyYgY2FuZGlkYXRlcyk7CiAgIHZvaWQgT25UcmFuc3BvcnRSb2xlQ29uZmxpY3Rf
bihjcmlja2V0OjpJY2VUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0KTsKICAgdm9pZCBPblRy
YW5zcG9ydFN0YXRlQ2hhbmdlZF9uKGNyaWNrZXQ6OkljZVRyYW5zcG9ydEludGVybmFsKiB0cmFu
c3BvcnQpOworICB2b2lkIE9uTWVkaWFUcmFuc3BvcnRTdGF0ZUNoYW5nZWRfbigpOwogCiAgIHZv
aWQgVXBkYXRlQWdncmVnYXRlU3RhdGVzX24oKTsKIApAQCAtMzAxLDkgKzM0MCwxNiBAQCBjbGFz
cyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7
CiAgIC8vIChCYXNlQ2hhbm5lbC9TY3RwVHJhbnNwb3J0KSBhbmQgdGhlIEpzZXBUcmFuc3BvcnQg
dW5kZXJuZWF0aC4KICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIGNyaWNrZXQ6OkpzZXBUcmFuc3Bv
cnQqPiBtaWRfdG9fdHJhbnNwb3J0XzsKIAotICAvLyBBZ2dyZWdhdGUgc3RhdGUgZm9yIFRyYW5z
cG9ydHMuCisgIC8vIEFnZ3JlZ2F0ZSBzdGF0ZXMgZm9yIFRyYW5zcG9ydHMuCisgIC8vIHN0YW5k
YXJkaXplZF9pY2VfY29ubmVjdGlvbl9zdGF0ZV8gaXMgaW50ZW5kZWQgdG8gcmVwbGFjZQorICAv
LyBpY2VfY29ubmVjdGlvbl9zdGF0ZSwgc2VlIGJ1Z3Mud2VicnRjLm9yZy85MzA4CiAgIGNyaWNr
ZXQ6OkljZUNvbm5lY3Rpb25TdGF0ZSBpY2VfY29ubmVjdGlvbl9zdGF0ZV8gPQogICAgICAgY3Jp
Y2tldDo6a0ljZUNvbm5lY3Rpb25Db25uZWN0aW5nOworICBQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6SWNlQ29ubmVjdGlvblN0YXRlCisgICAgICBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25f
c3RhdGVfID0KKyAgICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rp
b25OZXc7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlIGNv
bWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfID0KKyAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpQZWVyQ29ubmVjdGlvblN0YXRlOjprTmV3OwogICBjcmlja2V0OjpJY2VHYXRoZXJpbmdTdGF0
ZSBpY2VfZ2F0aGVyaW5nX3N0YXRlXyA9IGNyaWNrZXQ6OmtJY2VHYXRoZXJpbmdOZXc7CiAKICAg
Q29uZmlnIGNvbmZpZ187CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJvbGxlcl91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRj
b250cm9sbGVyX3VuaXR0ZXN0LmNjCmluZGV4IDZmODY5M2JlYTdhOWI1NzE1MDI1OGQwNDg2YzBh
N2YyNGVlZmIzZjcuLjEyOWQyMmE0ZmNjODQ3MzBlMWY5OWI3YTg1NGU5NjdjYTJlZjlhMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pz
ZXB0cmFuc3BvcnRjb250cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9sbGVyX3VuaXR0
ZXN0LmNjCkBAIC0xMSw3ICsxMSw4IEBACiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPG1lbW9y
eT4KIAotI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS9tZWRp
YV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvZmFrZV9tZWRpYV90
cmFuc3BvcnQuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9mYWtlZHRsc3RyYW5zcG9ydC5oIgogI2lu
Y2x1ZGUgInAycC9iYXNlL2Zha2VpY2V0cmFuc3BvcnQuaCIKICNpbmNsdWRlICJwMnAvYmFzZS90
cmFuc3BvcnRmYWN0b3J5aW50ZXJmYWNlLmgiCkBAIC00MSw2ICs0MiwyMCBAQCBzdGF0aWMgY29u
c3QgY2hhciBrRGF0YU1pZDFbXSA9ICJkYXRhMSI7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitu
YW1lc3BhY2UgeworCisvLyBNZWRpYSB0cmFuc3BvcnQgZmFjdG9yeSByZXF1aXJlcyBjcnlwdG8g
c2V0dGluZ3MgdG8gYmUgcHJlc2VudCBpbiBvcmRlciB0bworLy8gY3JlYXRlIG1lZGlhIHRyYW5z
cG9ydC4KK3ZvaWQgQWRkQ3J5cHRvU2V0dGluZ3MoY3JpY2tldDo6U2Vzc2lvbkRlc2NyaXB0aW9u
KiBkZXNjcmlwdGlvbikgeworICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBkZXNjcmlwdGlvbi0+Y29u
dGVudHMoKSkgeworICAgIGNvbnRlbnQubWVkaWFfZGVzY3JpcHRpb24oKS0+QWRkQ3J5cHRvKGNy
aWNrZXQ6OkNyeXB0b1BhcmFtcygKKyAgICAgICAgLyp0PSovMCwgc3RkOjpzdHJpbmcocnRjOjpD
U19BRVNfQ01fMTI4X0hNQUNfU0hBMV84MCksCisgICAgICAgICJpbmxpbmU6WVVKRFpHVm1aMmhw
U2t0TWJXOVFVWEp6VkhWV2QzbDZNVEl6TkRVMiIsICIiKSk7CisgIH0KK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKIGNsYXNzIEZha2VUcmFuc3BvcnRGYWN0b3J5IDogcHVibGljIGNyaWNrZXQ6OlRy
YW5zcG9ydEZhY3RvcnlJbnRlcmZhY2UgewogIHB1YmxpYzoKICAgc3RkOjp1bmlxdWVfcHRyPGNy
aWNrZXQ6OkljZVRyYW5zcG9ydEludGVybmFsPiBDcmVhdGVJY2VUcmFuc3BvcnQoCkBAIC01Miw3
ICs2Nyw3IEBAIGNsYXNzIEZha2VUcmFuc3BvcnRGYWN0b3J5IDogcHVibGljIGNyaWNrZXQ6OlRy
YW5zcG9ydEZhY3RvcnlJbnRlcmZhY2UgewogCiAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpE
dGxzVHJhbnNwb3J0SW50ZXJuYWw+IENyZWF0ZUR0bHNUcmFuc3BvcnQoCiAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Y3JpY2tldDo6SWNlVHJhbnNwb3J0SW50ZXJuYWw+IGljZSwKLSAgICAgIGNvbnN0
IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIG92ZXJyaWRlIHsKKyAgICAgIGNv
bnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIG92ZXJyaWRlIHsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6RmFrZUljZVRyYW5zcG9ydD4gZmFrZV9pY2UoCiAg
ICAgICAgIHN0YXRpY19jYXN0PGNyaWNrZXQ6OkZha2VJY2VUcmFuc3BvcnQqPihpY2UucmVsZWFz
ZSgpKSk7CiAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPEZha2VEdGxzVHJhbnNwb3J0Pihz
dGQ6Om1vdmUoZmFrZV9pY2UpKTsKQEAgLTg0LDYgKzk5LDEwIEBAIGNsYXNzIEpzZXBUcmFuc3Bv
cnRDb250cm9sbGVyVGVzdCA6IHB1YmxpYyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6T2JzZXJ2
ZXIsCiAgIHZvaWQgQ29ubmVjdFRyYW5zcG9ydENvbnRyb2xsZXJTaWduYWxzKCkgewogICAgIHRy
YW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsSWNlQ29ubmVjdGlvblN0YXRlLmNvbm5lY3QoCiAg
ICAgICAgIHRoaXMsICZKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3Q6Ok9uQ29ubmVjdGlvblN0
YXRlKTsKKyAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPlNpZ25hbFN0YW5kYXJkaXplZEljZUNv
bm5lY3Rpb25TdGF0ZS5jb25uZWN0KAorICAgICAgICB0aGlzLCAmSnNlcFRyYW5zcG9ydENvbnRy
b2xsZXJUZXN0OjpPblN0YW5kYXJkaXplZEljZUNvbm5lY3Rpb25TdGF0ZSk7CisgICAgdHJhbnNw
b3J0X2NvbnRyb2xsZXJfLT5TaWduYWxDb25uZWN0aW9uU3RhdGUuY29ubmVjdCgKKyAgICAgICAg
dGhpcywgJkpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdDo6T25Db21iaW5lZENvbm5lY3Rpb25T
dGF0ZSk7CiAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TaWduYWxJY2VHYXRoZXJpbmdTdGF0
ZS5jb25uZWN0KAogICAgICAgICB0aGlzLCAmSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0OjpP
bkdhdGhlcmluZ1N0YXRlKTsKICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPlNpZ25hbEljZUNh
bmRpZGF0ZXNHYXRoZXJlZC5jb25uZWN0KApAQCAtMTcwLDcgKzE4OSw3IEBAIGNsYXNzIEpzZXBU
cmFuc3BvcnRDb250cm9sbGVyVGVzdCA6IHB1YmxpYyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6
T2JzZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8cnRj
OjpSVENDZXJ0aWZpY2F0ZT4gY2VydCkgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTEZp
bmdlcnByaW50PiBmaW5nZXJwcmludDsKICAgICBpZiAoY2VydCkgewotICAgICAgZmluZ2VycHJp
bnQucmVzZXQocnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKGNlcnQp
KTsKKyAgICAgIGZpbmdlcnByaW50ID0gcnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNl
cnRpZmljYXRlKCpjZXJ0KTsKICAgICB9CiAKICAgICBjcmlja2V0OjpUcmFuc3BvcnREZXNjcmlw
dGlvbiB0cmFuc3BvcnRfZGVzYyhzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSwKQEAgLTI0Myw2
ICsyNjIsMjQgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0IDogcHVibGljIEpz
ZXBUcmFuc3BvcnRDb250cm9sbGVyOjpPYnNlcnZlciwKICAgICArK2Nvbm5lY3Rpb25fc3RhdGVf
c2lnbmFsX2NvdW50XzsKICAgfQogCisgIHZvaWQgT25TdGFuZGFyZGl6ZWRJY2VDb25uZWN0aW9u
U3RhdGUoCisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRl
IHN0YXRlKSB7CisgICAgaWYgKCFzaWduYWxpbmdfdGhyZWFkXy0+SXNDdXJyZW50KCkpIHsKKyAg
ICAgIHNpZ25hbGVkX29uX25vbl9zaWduYWxpbmdfdGhyZWFkXyA9IHRydWU7CisgICAgfQorICAg
IGljZV9jb25uZWN0aW9uX3N0YXRlXyA9IHN0YXRlOworICAgICsraWNlX2Nvbm5lY3Rpb25fc3Rh
dGVfc2lnbmFsX2NvdW50XzsKKyAgfQorCisgIHZvaWQgT25Db21iaW5lZENvbm5lY3Rpb25TdGF0
ZSgKKyAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlIHN0
YXRlKSB7CisgICAgaWYgKCFzaWduYWxpbmdfdGhyZWFkXy0+SXNDdXJyZW50KCkpIHsKKyAgICAg
IHNpZ25hbGVkX29uX25vbl9zaWduYWxpbmdfdGhyZWFkXyA9IHRydWU7CisgICAgfQorICAgIGNv
bWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfID0gc3RhdGU7CisgICAgKytjb21iaW5lZF9jb25uZWN0
aW9uX3N0YXRlX3NpZ25hbF9jb3VudF87CisgIH0KKwogICB2b2lkIE9uR2F0aGVyaW5nU3RhdGUo
Y3JpY2tldDo6SWNlR2F0aGVyaW5nU3RhdGUgc3RhdGUpIHsKICAgICBpZiAoIXNpZ25hbGluZ190
aHJlYWRfLT5Jc0N1cnJlbnQoKSkgewogICAgICAgc2lnbmFsZWRfb25fbm9uX3NpZ25hbGluZ190
aHJlYWRfID0gdHJ1ZTsKQEAgLTI2MiwzMSArMjk5LDM3IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnRD
b250cm9sbGVyVGVzdCA6IHB1YmxpYyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6T2JzZXJ2ZXIs
CiAgIH0KIAogICAvLyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6T2JzZXJ2ZXIgb3ZlcnJpZGVz
LgotICBib29sIE9uVHJhbnNwb3J0Q2hhbmdlZCgKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBt
aWQsCi0gICAgICBSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwKLSAgICAgIGNy
aWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCogZHRsc190cmFuc3BvcnQpIG92ZXJyaWRlIHsK
KyAgYm9vbCBPblRyYW5zcG9ydENoYW5nZWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5h
bCogZHRsc190cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhVHJhbnNw
b3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpIG92ZXJyaWRlIHsKICAgICBjaGFuZ2VkX3J0
cF90cmFuc3BvcnRfYnlfbWlkX1ttaWRdID0gcnRwX3RyYW5zcG9ydDsKICAgICBjaGFuZ2VkX2R0
bHNfdHJhbnNwb3J0X2J5X21pZF9bbWlkXSA9IGR0bHNfdHJhbnNwb3J0OworICAgIGNoYW5nZWRf
bWVkaWFfdHJhbnNwb3J0X2J5X21pZF9bbWlkXSA9IG1lZGlhX3RyYW5zcG9ydDsKICAgICByZXR1
cm4gdHJ1ZTsKICAgfQogCiAgIC8vIEluZm9ybWF0aW9uIHJlY2VpdmVkIGZyb20gc2lnbmFscyBm
cm9tIHRyYW5zcG9ydCBjb250cm9sbGVyLgogICBjcmlja2V0OjpJY2VDb25uZWN0aW9uU3RhdGUg
Y29ubmVjdGlvbl9zdGF0ZV8gPQogICAgICAgY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25Db25uZWN0
aW5nOworICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlIGljZV9j
b25uZWN0aW9uX3N0YXRlXyA9CisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNv
bm5lY3Rpb25OZXc7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0
YXRlIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfID0KKyAgICAgIFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprTmV3OwogICBib29sIHJlY2VpdmluZ18gPSBm
YWxzZTsKICAgY3JpY2tldDo6SWNlR2F0aGVyaW5nU3RhdGUgZ2F0aGVyaW5nX3N0YXRlXyA9IGNy
aWNrZXQ6OmtJY2VHYXRoZXJpbmdOZXc7CiAgIC8vIHRyYW5zcG9ydF9uYW1lID0+IGNhbmRpZGF0
ZXMKICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIENhbmRpZGF0ZXM+IGNhbmRpZGF0ZXNfOwogICAv
LyBDb3VudHMgb2YgZWFjaCBzaWduYWwgZW1pdHRlZC4KICAgaW50IGNvbm5lY3Rpb25fc3RhdGVf
c2lnbmFsX2NvdW50XyA9IDA7CisgIGludCBpY2VfY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291
bnRfID0gMDsKKyAgaW50IGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50XyA9
IDA7CiAgIGludCByZWNlaXZpbmdfc2lnbmFsX2NvdW50XyA9IDA7CiAgIGludCBnYXRoZXJpbmdf
c3RhdGVfc2lnbmFsX2NvdW50XyA9IDA7CiAgIGludCBjYW5kaWRhdGVzX3NpZ25hbF9jb3VudF8g
PSAwOwogCiAgIC8vIHxuZXR3b3JrX3RocmVhZF98IHNob3VsZCBiZSBkZXN0cm95ZWQgYWZ0ZXIg
fHRyYW5zcG9ydF9jb250cm9sbGVyX3wKICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBu
ZXR3b3JrX3RocmVhZF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxKc2VwVHJhbnNwb3J0Q29udHJvbGxl
cj4gdHJhbnNwb3J0X2NvbnRyb2xsZXJfOwogICBzdGQ6OnVuaXF1ZV9wdHI8RmFrZVRyYW5zcG9y
dEZhY3Rvcnk+IGZha2VfdHJhbnNwb3J0X2ZhY3RvcnlfOwogICBydGM6OlRocmVhZCogY29uc3Qg
c2lnbmFsaW5nX3RocmVhZF8gPSBudWxscHRyOwogICBib29sIHNpZ25hbGVkX29uX25vbl9zaWdu
YWxpbmdfdGhyZWFkXyA9IGZhbHNlOwpAQCAtMjk1LDYgKzMzOCwxMiBAQCBjbGFzcyBKc2VwVHJh
bnNwb3J0Q29udHJvbGxlclRlc3QgOiBwdWJsaWMgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok9i
c2VydmVyLAogICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgUnRwVHJhbnNwb3J0SW50ZXJuYWwqPiBj
aGFuZ2VkX3J0cF90cmFuc3BvcnRfYnlfbWlkXzsKICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIGNy
aWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCo+CiAgICAgICBjaGFuZ2VkX2R0bHNfdHJhbnNw
b3J0X2J5X21pZF87CisgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBNZWRpYVRyYW5zcG9ydEludGVy
ZmFjZSo+CisgICAgICBjaGFuZ2VkX21lZGlhX3RyYW5zcG9ydF9ieV9taWRfOworCisgIC8vIFRy
YW5zcG9ydCBjb250cm9sbGVyIG5lZWRzIHRvIGJlIGRlc3Ryb3llZCBmaXJzdCwgYmVjYXVzZSBp
dCBtYXkgaXNzdWUKKyAgLy8gY2FsbGJhY2tzIHRoYXQgbW9kaWZ5IHRoZSBjaGFuZ2VkXypfYnlf
bWlkIGluIHRoZSBkZXN0cnVjdG9yLgorICBzdGQ6OnVuaXF1ZV9wdHI8SnNlcFRyYW5zcG9ydENv
bnRyb2xsZXI+IHRyYW5zcG9ydF9jb250cm9sbGVyXzsKIH07CiAKIFRFU1RfRihKc2VwVHJhbnNw
b3J0Q29udHJvbGxlclRlc3QsIEdldFJ0cFRyYW5zcG9ydCkgewpAQCAtMzQxLDYgKzM5MCwxMTgg
QEAgVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgR2V0RHRsc1RyYW5zcG9ydFdp
dGhSdGNwTXV4KSB7CiAgIEVYUEVDVF9FUShudWxscHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8t
PkdldFJ0Y3BEdGxzVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKICAgRVhQRUNUX05FKG51bGxwdHIs
IHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0RHRsc1RyYW5zcG9ydChrVmlkZW9NaWQxKSk7CiAg
IEVYUEVDVF9FUShudWxscHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldFJ0Y3BEdGxzVHJh
bnNwb3J0KGtWaWRlb01pZDEpKTsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIHRyYW5zcG9ydF9jb250
cm9sbGVyXy0+R2V0TWVkaWFUcmFuc3BvcnQoa0F1ZGlvTWlkMSkpOworfQorCitURVNUX0YoSnNl
cFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LCBHZXRNZWRpYVRyYW5zcG9ydEluQ2FsbGVyKSB7Cisg
IEZha2VNZWRpYVRyYW5zcG9ydEZhY3RvcnkgZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeTsK
KyAgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkNvbmZpZyBjb25maWc7CisKKyAgY29uZmlnLnJ0
Y3BfbXV4X3BvbGljeSA9IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprUnRjcE11eFBvbGljeU5l
Z290aWF0ZTsKKyAgY29uZmlnLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gJmZha2VfbWVkaWFf
dHJhbnNwb3J0X2ZhY3Rvcnk7CisgIENyZWF0ZUpzZXBUcmFuc3BvcnRDb250cm9sbGVyKGNvbmZp
Zyk7CisgIGF1dG8gZGVzY3JpcHRpb24gPSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0
QnVuZGxlKCk7CisgIEFkZENyeXB0b1NldHRpbmdzKGRlc2NyaXB0aW9uLmdldCgpKTsKKworICBF
WFBFQ1RfVFJVRSh0cmFuc3BvcnRfY29udHJvbGxlcl8KKyAgICAgICAgICAgICAgICAgIC0+U2V0
TG9jYWxEZXNjcmlwdGlvbihTZHBUeXBlOjprT2ZmZXIsIGRlc2NyaXB0aW9uLmdldCgpKQorICAg
ICAgICAgICAgICAgICAgLm9rKCkpOworCisgIEZha2VNZWRpYVRyYW5zcG9ydCogbWVkaWFfdHJh
bnNwb3J0ID0gc3RhdGljX2Nhc3Q8RmFrZU1lZGlhVHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3Bv
cnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKKworICBBU1NF
UlRfTkUobnVsbHB0ciwgbWVkaWFfdHJhbnNwb3J0KTsKKworICAvLyBBZnRlciBTZXRMb2NhbERl
c2NyaXB0aW9uLCBtZWRpYSB0cmFuc3BvcnQgc2hvdWxkIGJlIGNyZWF0ZWQgYXMgY2FsbGVyLgor
ICBFWFBFQ1RfVFJVRShtZWRpYV90cmFuc3BvcnQtPmlzX2NhbGxlcigpKTsKKyAgRVhQRUNUX1RS
VUUobWVkaWFfdHJhbnNwb3J0LT5wcmVfc2hhcmVkX2tleSgpLmhhc192YWx1ZSgpKTsKKworICAv
LyBSZXR1cm4gbnVsbHB0ciBmb3Igbm9uLWV4aXN0aW5nIG1pZHMuCisgIEVYUEVDVF9FUShudWxs
cHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtWaWRlb01pZDIp
KTsKK30KKworVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgR2V0TWVkaWFUcmFu
c3BvcnRJbkNhbGxlZSkgeworICBGYWtlTWVkaWFUcmFuc3BvcnRGYWN0b3J5IGZha2VfbWVkaWFf
dHJhbnNwb3J0X2ZhY3Rvcnk7CisgIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpDb25maWcgY29u
ZmlnOworCisgIGNvbmZpZy5ydGNwX211eF9wb2xpY3kgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6a1J0Y3BNdXhQb2xpY3lOZWdvdGlhdGU7CisgIGNvbmZpZy5tZWRpYV90cmFuc3BvcnRfZmFj
dG9yeSA9ICZmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5OworICBDcmVhdGVKc2VwVHJhbnNw
b3J0Q29udHJvbGxlcihjb25maWcpOworICBhdXRvIGRlc2NyaXB0aW9uID0gQ3JlYXRlU2Vzc2lv
bkRlc2NyaXB0aW9uV2l0aG91dEJ1bmRsZSgpOworICBBZGRDcnlwdG9TZXR0aW5ncyhkZXNjcmlw
dGlvbi5nZXQoKSk7CisgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydF9jb250cm9sbGVyXworICAgICAg
ICAgICAgICAgICAgLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihTZHBUeXBlOjprT2ZmZXIsIGRlc2Ny
aXB0aW9uLmdldCgpKQorICAgICAgICAgICAgICAgICAgLm9rKCkpOworCisgIEZha2VNZWRpYVRy
YW5zcG9ydCogbWVkaWFfdHJhbnNwb3J0ID0gc3RhdGljX2Nhc3Q8RmFrZU1lZGlhVHJhbnNwb3J0
Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtBdWRp
b01pZDEpKTsKKworICBBU1NFUlRfTkUobnVsbHB0ciwgbWVkaWFfdHJhbnNwb3J0KTsKKworICAv
LyBBZnRlciBTZXRSZW1vdGVEZXNjcmlwdGlvbiwgbWVkaWEgdHJhbnNwb3J0IHNob3VsZCBiZSBj
cmVhdGVkIGFzIGNhbGxlZS4KKyAgRVhQRUNUX0ZBTFNFKG1lZGlhX3RyYW5zcG9ydC0+aXNfY2Fs
bGVyKCkpOworICBFWFBFQ1RfVFJVRShtZWRpYV90cmFuc3BvcnQtPnByZV9zaGFyZWRfa2V5KCku
aGFzX3ZhbHVlKCkpOworCisgIC8vIFJldHVybiBudWxscHRyIGZvciBub24tZXhpc3RpbmcgbWlk
cy4KKyAgRVhQRUNUX0VRKG51bGxwdHIsIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0TWVkaWFU
cmFuc3BvcnQoa1ZpZGVvTWlkMikpOworfQorCitURVNUX0YoSnNlcFRyYW5zcG9ydENvbnRyb2xs
ZXJUZXN0LCBHZXRNZWRpYVRyYW5zcG9ydElzTm90U2V0SWZOb1NkZXMpIHsKKyAgRmFrZU1lZGlh
VHJhbnNwb3J0RmFjdG9yeSBmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5OworICBKc2VwVHJh
bnNwb3J0Q29udHJvbGxlcjo6Q29uZmlnIGNvbmZpZzsKKworICBjb25maWcucnRjcF9tdXhfcG9s
aWN5ID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtSdGNwTXV4UG9saWN5TmVnb3RpYXRlOwor
ICBjb25maWcubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgPSAmZmFrZV9tZWRpYV90cmFuc3BvcnRf
ZmFjdG9yeTsKKyAgQ3JlYXRlSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIoY29uZmlnKTsKKyAgYXV0
byBkZXNjcmlwdGlvbiA9IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhvdXRCdW5kbGUoKTsK
KyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0X2NvbnRyb2xsZXJfCisgICAgICAgICAgICAgICAgICAt
PlNldFJlbW90ZURlc2NyaXB0aW9uKFNkcFR5cGU6OmtPZmZlciwgZGVzY3JpcHRpb24uZ2V0KCkp
CisgICAgICAgICAgICAgICAgICAub2soKSk7CisKKyAgRVhQRUNUX0VRKG51bGxwdHIsIHRyYW5z
cG9ydF9jb250cm9sbGVyXy0+R2V0TWVkaWFUcmFuc3BvcnQoa0F1ZGlvTWlkMSkpOworCisgIC8v
IEV2ZW4gaWYgd2Ugc2V0IGxvY2FsIGRlc2NyaXB0aW9uIHdpdGggY3J5cHRvIG5vdyAoYWZ0ZXIg
dGhlIHJlbW90ZSBvZmZlcgorICAvLyB3YXMgc2V0KSwgbWVkaWEgdHJhbnNwb3J0IHdvbid0IGJl
IHByb3ZpZGVkLgorICBhdXRvIGRlc2NyaXB0aW9uMiA9IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlv
bldpdGhvdXRCdW5kbGUoKTsKKyAgQWRkQ3J5cHRvU2V0dGluZ3MoZGVzY3JpcHRpb24yLmdldCgp
KTsKKyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0X2NvbnRyb2xsZXJfCisgICAgICAgICAgICAgICAg
ICAtPlNldExvY2FsRGVzY3JpcHRpb24oU2RwVHlwZTo6a0Fuc3dlciwgZGVzY3JpcHRpb24yLmdl
dCgpKQorICAgICAgICAgICAgICAgICAgLm9rKCkpOworCisgIEVYUEVDVF9FUShudWxscHRyLCB0
cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKK30K
KworVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwKKyAgICAgICBBZnRlclNldHRp
bmdBbnN3ZXJUaGVTYW1lTWVkaWFUcmFuc3BvcnRJc1JldHVybmVkKSB7CisgIEZha2VNZWRpYVRy
YW5zcG9ydEZhY3RvcnkgZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeTsKKyAgSnNlcFRyYW5z
cG9ydENvbnRyb2xsZXI6OkNvbmZpZyBjb25maWc7CisKKyAgY29uZmlnLnJ0Y3BfbXV4X3BvbGlj
eSA9IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprUnRjcE11eFBvbGljeU5lZ290aWF0ZTsKKyAg
Y29uZmlnLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gJmZha2VfbWVkaWFfdHJhbnNwb3J0X2Zh
Y3Rvcnk7CisgIENyZWF0ZUpzZXBUcmFuc3BvcnRDb250cm9sbGVyKGNvbmZpZyk7CisgIGF1dG8g
ZGVzY3JpcHRpb24gPSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVuZGxlKCk7Cisg
IEFkZENyeXB0b1NldHRpbmdzKGRlc2NyaXB0aW9uLmdldCgpKTsKKyAgRVhQRUNUX1RSVUUodHJh
bnNwb3J0X2NvbnRyb2xsZXJfCisgICAgICAgICAgICAgICAgICAtPlNldFJlbW90ZURlc2NyaXB0
aW9uKFNkcFR5cGU6OmtPZmZlciwgZGVzY3JpcHRpb24uZ2V0KCkpCisgICAgICAgICAgICAgICAg
ICAub2soKSk7CisKKyAgRmFrZU1lZGlhVHJhbnNwb3J0KiBtZWRpYV90cmFuc3BvcnQgPSBzdGF0
aWNfY2FzdDxGYWtlTWVkaWFUcmFuc3BvcnQqPigKKyAgICAgIHRyYW5zcG9ydF9jb250cm9sbGVy
Xy0+R2V0TWVkaWFUcmFuc3BvcnQoa0F1ZGlvTWlkMSkpOworICBFWFBFQ1RfTkUobnVsbHB0ciwg
bWVkaWFfdHJhbnNwb3J0KTsKKyAgRVhQRUNUX1RSVUUobWVkaWFfdHJhbnNwb3J0LT5wcmVfc2hh
cmVkX2tleSgpLmhhc192YWx1ZSgpKTsKKworICAvLyBFdmVuIGlmIHdlIHNldCBsb2NhbCBkZXNj
cmlwdGlvbiB3aXRoIGNyeXB0byBub3cgKGFmdGVyIHRoZSByZW1vdGUgb2ZmZXIKKyAgLy8gd2Fz
IHNldCksIG1lZGlhIHRyYW5zcG9ydCB3b24ndCBiZSBwcm92aWRlZC4KKyAgYXV0byBkZXNjcmlw
dGlvbjIgPSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVuZGxlKCk7CisgIEFkZENy
eXB0b1NldHRpbmdzKGRlc2NyaXB0aW9uMi5nZXQoKSk7CisKKyAgUlRDRXJyb3IgcmVzdWx0ID0g
dHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TZXRMb2NhbERlc2NyaXB0aW9uKAorICAgICAgU2RwVHlw
ZTo6a0Fuc3dlciwgZGVzY3JpcHRpb24yLmdldCgpKTsKKyAgRVhQRUNUX1RSVUUocmVzdWx0Lm9r
KCkpIDw8IHJlc3VsdC5tZXNzYWdlKCk7CisKKyAgLy8gTWVkaWEgdHJhbnNwb3J0IGRpZCBub3Qg
Y2hhbmdlLgorICBFWFBFQ1RfRVEobWVkaWFfdHJhbnNwb3J0LAorICAgICAgICAgICAgdHJhbnNw
b3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChrQXVkaW9NaWQxKSk7CiB9CiAKIFRF
U1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIFNldEljZUNvbmZpZykgewpAQCAtNTY4
LDkgKzcyOSwxNiBAQCBURVNUX0YoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LCBTaWduYWxD
b25uZWN0aW9uU3RhdGVGYWlsZWQpIHsKICAgZmFrZV9pY2UtPlNldENvbm5lY3Rpb25Db3VudCgw
KTsKICAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25GYWlsZWQsIGNvbm5l
Y3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CiAgIEVYUEVDVF9FUSgxLCBjb25uZWN0aW9uX3N0YXRl
X3NpZ25hbF9jb3VudF8pOworICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6a0ljZUNvbm5lY3Rpb25GYWlsZWQsCisgICAgICAgICAgICAgICAgIGljZV9jb25uZWN0aW9u
X3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMSwgaWNlX2Nvbm5lY3Rpb25fc3RhdGVf
c2lnbmFsX2NvdW50Xyk7CisgIEVYUEVDVF9FUV9XQUlUKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpQZWVyQ29ubmVjdGlvblN0YXRlOjprRmFpbGVkLAorICAgICAgICAgICAgICAgICBjb21iaW5l
ZF9jb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMSwgY29tYmluZWRf
Y29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKIH0KIAotVEVTVF9GKEpzZXBUcmFuc3Bv
cnRDb250cm9sbGVyVGVzdCwgU2lnbmFsQ29ubmVjdGlvblN0YXRlQ29ubmVjdGVkKSB7CitURVNU
X0YoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LAorICAgICAgIFNpZ25hbENvbm5lY3Rpb25T
dGF0ZUNvbm5lY3RlZE5vTWVkaWFUcmFuc3BvcnQpIHsKICAgQ3JlYXRlSnNlcFRyYW5zcG9ydENv
bnRyb2xsZXIoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkNvbmZpZygpKTsKICAgYXV0byBkZXNj
cmlwdGlvbiA9IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhvdXRCdW5kbGUoKTsKICAgRVhQ
RUNUX1RSVUUodHJhbnNwb3J0X2NvbnRyb2xsZXJfCkBAIC01OTUsMTMgKzc2MywxMTQgQEAgVEVT
VF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgU2lnbmFsQ29ubmVjdGlvblN0YXRlQ29u
bmVjdGVkKSB7CiAKICAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25GYWls
ZWQsIGNvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CiAgIEVYUEVDVF9FUSgxLCBjb25uZWN0
aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOwotCisgIEVYUEVDVF9FUV9XQUlUKFBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkZhaWxlZCwKKyAgICAgICAgICAgICAgICAgaWNl
X2Nvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CisgIEVYUEVDVF9FUSgxLCBpY2VfY29ubmVj
dGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKKyAgRVhQRUNUX0VRX1dBSVQoUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtGYWlsZWQsCisgICAgICAgICAgICAg
ICAgIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CisgIEVYUEVDVF9FUSgx
LCBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOworCisgIGZha2VfYXVk
aW9fZHRscy0+U2V0RHRsc1N0YXRlKGNyaWNrZXQ6OkRUTFNfVFJBTlNQT1JUX0NPTk5FQ1RFRCk7
CisgIGZha2VfdmlkZW9fZHRscy0+U2V0RHRsc1N0YXRlKGNyaWNrZXQ6OkRUTFNfVFJBTlNQT1JU
X0NPTk5FQ1RFRCk7CiAgIC8vIFNldCB0aGUgY29ubmVjdGlvbiBjb3VudCB0byBiZSAyIGFuZCB0
aGUgY3JpY2tldDo6RmFrZUljZVRyYW5zcG9ydCB3aWxsIHNldAogICAvLyB0aGUgdHJhbnNwb3J0
IHN0YXRlIHRvIGJlIFNUQVRFX0NPTk5FQ1RJTkcuCiAgIGZha2VfdmlkZW9fZHRscy0+ZmFrZV9p
Y2VfdHJhbnNwb3J0KCktPlNldENvbm5lY3Rpb25Db3VudCgyKTsKICAgZmFrZV92aWRlb19kdGxz
LT5TZXRXcml0YWJsZSh0cnVlKTsKICAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0ljZUNvbm5l
Y3Rpb25Db25uZWN0ZWQsIGNvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CiAgIEVYUEVDVF9F
USgyLCBjb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOworICBFWFBFQ1RfRVFfV0FJVChQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25Db25uZWN0ZWQsCisgICAgICAg
ICAgICAgICAgIGljZV9jb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEo
MiwgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7CisgIEVYUEVDVF9FUV9XQUlU
KFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29ubmVjdGVk
LAorICAgICAgICAgICAgICAgICBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQp
OworICBFWFBFQ1RfRVEoMiwgY29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRf
KTsKK30KKworVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwKKyAgICAgICBTaWdu
YWxDb25uZWN0aW9uU3RhdGVDb25uZWN0ZWRXaXRoTWVkaWFUcmFuc3BvcnQpIHsKKyAgRmFrZU1l
ZGlhVHJhbnNwb3J0RmFjdG9yeSBmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5OworICBKc2Vw
VHJhbnNwb3J0Q29udHJvbGxlcjo6Q29uZmlnIGNvbmZpZzsKKyAgY29uZmlnLm1lZGlhX3RyYW5z
cG9ydF9mYWN0b3J5ID0gJmZha2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7CisgIENyZWF0ZUpz
ZXBUcmFuc3BvcnRDb250cm9sbGVyKGNvbmZpZyk7CisgIGF1dG8gZGVzY3JpcHRpb24gPSBDcmVh
dGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVuZGxlKCk7CisgIEFkZENyeXB0b1NldHRpbmdz
KGRlc2NyaXB0aW9uLmdldCgpKTsKKyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0X2NvbnRyb2xsZXJf
CisgICAgICAgICAgICAgICAgICAtPlNldExvY2FsRGVzY3JpcHRpb24oU2RwVHlwZTo6a09mZmVy
LCBkZXNjcmlwdGlvbi5nZXQoKSkKKyAgICAgICAgICAgICAgICAgIC5vaygpKTsKKworICBhdXRv
IGZha2VfYXVkaW9fZHRscyA9IHN0YXRpY19jYXN0PEZha2VEdGxzVHJhbnNwb3J0Kj4oCisgICAg
ICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0bHNUcmFuc3BvcnQoa0F1ZGlvTWlkMSkpOwor
ICBhdXRvIGZha2VfdmlkZW9fZHRscyA9IHN0YXRpY19jYXN0PEZha2VEdGxzVHJhbnNwb3J0Kj4o
CisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0bHNUcmFuc3BvcnQoa1ZpZGVvTWlk
MSkpOworICBmYWtlX2F1ZGlvX2R0bHMtPlNldFdyaXRhYmxlKHRydWUpOworICBmYWtlX3ZpZGVv
X2R0bHMtPlNldFdyaXRhYmxlKHRydWUpOworICAvLyBEZWNyZWFzaW5nIGNvbm5lY3Rpb24gY291
bnQgZnJvbSAyIHRvIDEgdHJpZ2dlcnMgY29ubmVjdGlvbiBzdGF0ZSBldmVudC4KKyAgZmFrZV9h
dWRpb19kdGxzLT5mYWtlX2ljZV90cmFuc3BvcnQoKS0+U2V0Q29ubmVjdGlvbkNvdW50KDIpOwor
ICBmYWtlX2F1ZGlvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgpLT5TZXRDb25uZWN0aW9uQ291
bnQoMSk7CisgIGZha2VfdmlkZW9fZHRscy0+ZmFrZV9pY2VfdHJhbnNwb3J0KCktPlNldENvbm5l
Y3Rpb25Db3VudCgyKTsKKyAgZmFrZV92aWRlb19kdGxzLT5mYWtlX2ljZV90cmFuc3BvcnQoKS0+
U2V0Q29ubmVjdGlvbkNvdW50KDEpOworICBmYWtlX2F1ZGlvX2R0bHMtPlNldER0bHNTdGF0ZShj
cmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOworICBmYWtlX3ZpZGVvX2R0bHMtPlNl
dER0bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOworCisgIC8vIFN0
aWxsIG5vdCBjb25uZWN0ZWQsIGJlY2F1c2Ugd2UgYXJlIHdhaXRpbmcgZm9yIG1lZGlhIHRyYW5z
cG9ydC4KKyAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25Db25uZWN0aW5n
LCBjb25uZWN0aW9uX3N0YXRlXywKKyAgICAgICAgICAgICAgICAga1RpbWVvdXQpOworCisgIEZh
a2VNZWRpYVRyYW5zcG9ydCogbWVkaWFfdHJhbnNwb3J0ID0gc3RhdGljX2Nhc3Q8RmFrZU1lZGlh
VHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNw
b3J0KGtBdWRpb01pZDEpKTsKKworICBtZWRpYV90cmFuc3BvcnQtPlNldFN0YXRlKHdlYnJ0Yzo6
TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKTsKKyAgRVhQRUNUX0VRX1dBSVQoY3JpY2tl
dDo6a0ljZUNvbm5lY3Rpb25Db25uZWN0aW5nLCBjb25uZWN0aW9uX3N0YXRlXywKKyAgICAgICAg
ICAgICAgICAga1RpbWVvdXQpOworCisgIC8vIFN0aWxsIHdhaXRpbmcgZm9yIHRoZSBzZWNvbmQg
bWVkaWEgdHJhbnNwb3J0LgorICBtZWRpYV90cmFuc3BvcnQgPSBzdGF0aWNfY2FzdDxGYWtlTWVk
aWFUcmFuc3BvcnQqPigKKyAgICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0TWVkaWFUcmFu
c3BvcnQoa1ZpZGVvTWlkMSkpOworICBtZWRpYV90cmFuc3BvcnQtPlNldFN0YXRlKHdlYnJ0Yzo6
TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKTsKKworICBFWFBFQ1RfRVFfV0FJVChjcmlj
a2V0OjprSWNlQ29ubmVjdGlvbkNvbm5lY3RlZCwgY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0
KTsKK30KKworVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwKKyAgICAgICBTaWdu
YWxDb25uZWN0aW9uU3RhdGVGYWlsZWRXaGVuTWVkaWFUcmFuc3BvcnRDbG9zZWQpIHsKKyAgRmFr
ZU1lZGlhVHJhbnNwb3J0RmFjdG9yeSBmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5OworICBK
c2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6Q29uZmlnIGNvbmZpZzsKKyAgY29uZmlnLm1lZGlhX3Ry
YW5zcG9ydF9mYWN0b3J5ID0gJmZha2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7CisgIENyZWF0
ZUpzZXBUcmFuc3BvcnRDb250cm9sbGVyKGNvbmZpZyk7CisgIGF1dG8gZGVzY3JpcHRpb24gPSBD
cmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVuZGxlKCk7CisgIEFkZENyeXB0b1NldHRp
bmdzKGRlc2NyaXB0aW9uLmdldCgpKTsKKyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0X2NvbnRyb2xs
ZXJfCisgICAgICAgICAgICAgICAgICAtPlNldExvY2FsRGVzY3JpcHRpb24oU2RwVHlwZTo6a09m
ZmVyLCBkZXNjcmlwdGlvbi5nZXQoKSkKKyAgICAgICAgICAgICAgICAgIC5vaygpKTsKKworICBh
dXRvIGZha2VfYXVkaW9fZHRscyA9IHN0YXRpY19jYXN0PEZha2VEdGxzVHJhbnNwb3J0Kj4oCisg
ICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0bHNUcmFuc3BvcnQoa0F1ZGlvTWlkMSkp
OworICBhdXRvIGZha2VfdmlkZW9fZHRscyA9IHN0YXRpY19jYXN0PEZha2VEdGxzVHJhbnNwb3J0
Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0bHNUcmFuc3BvcnQoa1ZpZGVv
TWlkMSkpOworICBmYWtlX2F1ZGlvX2R0bHMtPlNldFdyaXRhYmxlKHRydWUpOworICBmYWtlX3Zp
ZGVvX2R0bHMtPlNldFdyaXRhYmxlKHRydWUpOworICAvLyBEZWNyZWFzaW5nIGNvbm5lY3Rpb24g
Y291bnQgZnJvbSAyIHRvIDEgdHJpZ2dlcnMgY29ubmVjdGlvbiBzdGF0ZSBldmVudC4KKyAgZmFr
ZV9hdWRpb19kdGxzLT5mYWtlX2ljZV90cmFuc3BvcnQoKS0+U2V0Q29ubmVjdGlvbkNvdW50KDIp
OworICBmYWtlX2F1ZGlvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgpLT5TZXRDb25uZWN0aW9u
Q291bnQoMSk7CisgIGZha2VfdmlkZW9fZHRscy0+ZmFrZV9pY2VfdHJhbnNwb3J0KCktPlNldENv
bm5lY3Rpb25Db3VudCgyKTsKKyAgZmFrZV92aWRlb19kdGxzLT5mYWtlX2ljZV90cmFuc3BvcnQo
KS0+U2V0Q29ubmVjdGlvbkNvdW50KDEpOworICBmYWtlX2F1ZGlvX2R0bHMtPlNldER0bHNTdGF0
ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOworICBmYWtlX3ZpZGVvX2R0bHMt
PlNldER0bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOworCisgIEZh
a2VNZWRpYVRyYW5zcG9ydCogbWVkaWFfdHJhbnNwb3J0ID0gc3RhdGljX2Nhc3Q8RmFrZU1lZGlh
VHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNw
b3J0KGtBdWRpb01pZDEpKTsKKworICBtZWRpYV90cmFuc3BvcnQtPlNldFN0YXRlKHdlYnJ0Yzo6
TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKTsKKworICBtZWRpYV90cmFuc3BvcnQgPSBz
dGF0aWNfY2FzdDxGYWtlTWVkaWFUcmFuc3BvcnQqPigKKyAgICAgIHRyYW5zcG9ydF9jb250cm9s
bGVyXy0+R2V0TWVkaWFUcmFuc3BvcnQoa1ZpZGVvTWlkMSkpOworCisgIG1lZGlhX3RyYW5zcG9y
dC0+U2V0U3RhdGUod2VicnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpOworCisg
IEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGVkLCBjb25uZWN0
aW9uX3N0YXRlXywga1RpbWVvdXQpOworCisgIG1lZGlhX3RyYW5zcG9ydC0+U2V0U3RhdGUod2Vi
cnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlOjprQ2xvc2VkKTsKKyAgRVhQRUNUX0VRX1dBSVQoY3Jp
Y2tldDo6a0ljZUNvbm5lY3Rpb25GYWlsZWQsIGNvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7
CiB9CiAKIFRFU1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIFNpZ25hbENvbm5lY3Rp
b25TdGF0ZUNvbXBsZXRlKSB7CkBAIC02MjksMTMgKzg5OCwyNyBAQCBURVNUX0YoSnNlcFRyYW5z
cG9ydENvbnRyb2xsZXJUZXN0LCBTaWduYWxDb25uZWN0aW9uU3RhdGVDb21wbGV0ZSkgewogCiAg
IEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uRmFpbGVkLCBjb25uZWN0aW9u
X3N0YXRlXywga1RpbWVvdXQpOwogICBFWFBFQ1RfRVEoMSwgY29ubmVjdGlvbl9zdGF0ZV9zaWdu
YWxfY291bnRfKTsKLQorICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
a0ljZUNvbm5lY3Rpb25GYWlsZWQsCisgICAgICAgICAgICAgICAgIGljZV9jb25uZWN0aW9uX3N0
YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMSwgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfc2ln
bmFsX2NvdW50Xyk7CisgIEVYUEVDVF9FUV9XQUlUKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQ
ZWVyQ29ubmVjdGlvblN0YXRlOjprRmFpbGVkLAorICAgICAgICAgICAgICAgICBjb21iaW5lZF9j
b25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMSwgY29tYmluZWRfY29u
bmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKKworICBmYWtlX2F1ZGlvX2R0bHMtPlNldER0
bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOworICBmYWtlX3ZpZGVv
X2R0bHMtPlNldER0bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOwog
ICAvLyBTZXQgdGhlIGNvbm5lY3Rpb24gY291bnQgdG8gYmUgMSBhbmQgdGhlIGNyaWNrZXQ6OkZh
a2VJY2VUcmFuc3BvcnQgd2lsbCBzZXQKICAgLy8gdGhlIHRyYW5zcG9ydCBzdGF0ZSB0byBiZSBT
VEFURV9DT01QTEVURUQuCiAgIGZha2VfdmlkZW9fZHRscy0+ZmFrZV9pY2VfdHJhbnNwb3J0KCkt
PlNldENvbm5lY3Rpb25Db3VudCgxKTsKICAgZmFrZV92aWRlb19kdGxzLT5TZXRXcml0YWJsZSh0
cnVlKTsKICAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25Db21wbGV0ZWQs
IGNvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CiAgIEVYUEVDVF9FUSgyLCBjb25uZWN0aW9u
X3N0YXRlX3NpZ25hbF9jb3VudF8pOworICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25Db21wbGV0ZWQsCisgICAgICAgICAgICAgICAgIGljZV9j
b25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMiwgaWNlX2Nvbm5lY3Rp
b25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7CisgIEVYUEVDVF9FUV9XQUlUKFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29ubmVjdGVkLAorICAgICAgICAgICAg
ICAgICBjb21iaW5lZF9jb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEo
MiwgY29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKIH0KIAogVEVTVF9G
KEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgU2lnbmFsSWNlR2F0aGVyaW5nU3RhdGVHYXRo
ZXJpbmcpIHsKQEAgLTcwOSw2ICs5OTIsNyBAQCBURVNUX0YoSnNlcFRyYW5zcG9ydENvbnRyb2xs
ZXJUZXN0LAogICBmYWtlX2F1ZGlvX2R0bHMtPlNldFdyaXRhYmxlKHRydWUpOwogICBmYWtlX2F1
ZGlvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgpLT5TZXRDYW5kaWRhdGVzR2F0aGVyaW5nQ29t
cGxldGUoKTsKICAgZmFrZV9hdWRpb19kdGxzLT5mYWtlX2ljZV90cmFuc3BvcnQoKS0+U2V0Q29u
bmVjdGlvbkNvdW50KDEpOworICBmYWtlX2F1ZGlvX2R0bHMtPlNldER0bHNTdGF0ZShjcmlja2V0
OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOwogICBFWFBFQ1RfRVEoMSwgZ2F0aGVyaW5nX3N0
YXRlX3NpZ25hbF9jb3VudF8pOwogCiAgIC8vIFNldCB0aGUgcmVtb3RlIGRlc2NyaXB0aW9uIGFu
ZCBlbmFibGUgdGhlIGJ1bmRsZS4KQEAgLTcyMSw2ICsxMDA1LDEwIEBAIFRFU1RfRihKc2VwVHJh
bnNwb3J0Q29udHJvbGxlclRlc3QsCiAgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldER0
bHNUcmFuc3BvcnQoa1ZpZGVvTWlkMSkpOwogICBFWFBFQ1RfRVEoZmFrZV9hdWRpb19kdGxzLCBm
YWtlX3ZpZGVvX2R0bHMpOwogICBFWFBFQ1RfRVFfV0FJVChjcmlja2V0OjprSWNlQ29ubmVjdGlv
bkNvbXBsZXRlZCwgY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKFBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkNvbXBsZXRlZCwKKyAgICAgICAg
ICAgIGljZV9jb25uZWN0aW9uX3N0YXRlXyk7CisgIEVYUEVDVF9FUShQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3RlZCwKKyAgICAgICAgICAgIGNv
bWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfKTsKICAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0lj
ZUdhdGhlcmluZ0NvbXBsZXRlLCBnYXRoZXJpbmdfc3RhdGVfLCBrVGltZW91dCk7CiAgIEVYUEVD
VF9FUSgyLCBnYXRoZXJpbmdfc3RhdGVfc2lnbmFsX2NvdW50Xyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9sb2NhbGF1ZGlvc291
cmNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9sb2Nh
bGF1ZGlvc291cmNlLmgKaW5kZXggYzVmNjUzMDRkMGIzY2ViNWI3NzA0MDY1NTQ0MjRkMzRjYzNj
N2Y0OS4uYzQ4ZjU0MDdkNGMxZTUzNGY1ZTZjYjM2Y2I5N2NhMmY1NGY2MzQyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbG9jYWxhdWRp
b3NvdXJjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL2xvY2FsYXVkaW9zb3VyY2UuaApAQCAtMjksNyArMjksNyBAQCBjbGFzcyBMb2NhbEF1ZGlv
U291cmNlIDogcHVibGljIE5vdGlmaWVyPEF1ZGlvU291cmNlSW50ZXJmYWNlPiB7CiAgIFNvdXJj
ZVN0YXRlIHN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4ga0xpdmU7IH0KICAgYm9vbCBy
ZW1vdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gIHZpcnR1YWwgY29u
c3QgY3JpY2tldDo6QXVkaW9PcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gb3B0aW9u
c187IH0KKyAgY29uc3QgY3JpY2tldDo6QXVkaW9PcHRpb25zIG9wdGlvbnMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBvcHRpb25zXzsgfQogCiAgIHZvaWQgQWRkU2luayhBdWRpb1RyYWNrU2lu
a0ludGVyZmFjZSogc2luaykgb3ZlcnJpZGUge30KICAgdm9pZCBSZW1vdmVTaW5rKEF1ZGlvVHJh
Y2tTaW5rSW50ZXJmYWNlKiBzaW5rKSBvdmVycmlkZSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmNj
CmluZGV4IDlhZTQ2YmUyN2M1YmY4NWEwM2EyYzgyZGU3YWU3ZjZhNzRhMTE1YjQuLjcyMzlhZjg2
YzM5OWU3YmRiZTQ4NmQ4YjA2YmRhY2E2OWE2MTJjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24u
Y2MKQEAgLTE4LDkgKzE4LDkgQEAKICNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2NyeXB0b3BhcmFtcy5oIgotI2lu
Y2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2ZWxfaWQuaCIKICNpbmNsdWRlICJtZWRpYS9i
YXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvcDJwY29uc3RhbnRzLmgi
CkBAIC0zOSwxMCArMzksMTAgQEAgdXNpbmcgd2VicnRjOjpSdHBUcmFuc2NlaXZlckRpcmVjdGlv
bjsKIAogY29uc3QgY2hhciBrSW5saW5lW10gPSAiaW5saW5lOiI7CiAKLXZvaWQgR2V0U3VwcG9y
dGVkU2Rlc0NyeXB0b1N1aXRlTmFtZXModm9pZCAoKmZ1bmMpKGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0
aW9ucyYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnZlY3RvcjxpbnQ+KiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogbmFt
ZXMpIHsKK3ZvaWQgR2V0U3VwcG9ydGVkU2Rlc0NyeXB0b1N1aXRlTmFtZXMoCisgICAgdm9pZCAo
KmZ1bmMpKGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYsIHN0ZDo6dmVjdG9yPGludD4qKSwK
KyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgIHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogbmFtZXMpIHsKICAgc3RkOjp2ZWN0b3I8aW50PiBjcnlw
dG9fc3VpdGVzOwogICBmdW5jKGNyeXB0b19vcHRpb25zLCAmY3J5cHRvX3N1aXRlcyk7CiAgIGZv
ciAoY29uc3QgYXV0byBjcnlwdG8gOiBjcnlwdG9fc3VpdGVzKSB7CkBAIC0xOTUsMjggKzE5NSwz
MCBAQCBib29sIEZpbmRNYXRjaGluZ0NyeXB0byhjb25zdCBDcnlwdG9QYXJhbXNWZWMmIGNyeXB0
b3MsCiAKIC8vIEZvciBhdWRpbywgSE1BQyAzMiAoaWYgZW5hYmxlZCkgaXMgcHJlZmVyZWQgb3Zl
ciBITUFDIDgwIGJlY2F1c2Ugb2YgdGhlCiAvLyBsb3cgb3ZlcmhlYWQuCi12b2lkIEdldFN1cHBv
cnRlZEF1ZGlvU2Rlc0NyeXB0b1N1aXRlcyhjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0
b19vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8aW50PiogY3J5cHRvX3N1aXRlcykgewotICBpZiAoY3J5cHRvX29wdGlvbnMuZW5hYmxl
X2djbV9jcnlwdG9fc3VpdGVzKSB7Cit2b2lkIEdldFN1cHBvcnRlZEF1ZGlvU2Rlc0NyeXB0b1N1
aXRlcygKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAor
ICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0b19zdWl0ZXMpIHsKKyAgaWYgKGNyeXB0b19vcHRp
b25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzKSB7CiAgICAgY3J5cHRvX3N1aXRlcy0+
cHVzaF9iYWNrKHJ0Yzo6U1JUUF9BRUFEX0FFU18yNTZfR0NNKTsKICAgICBjcnlwdG9fc3VpdGVz
LT5wdXNoX2JhY2socnRjOjpTUlRQX0FFQURfQUVTXzEyOF9HQ00pOwogICB9Ci0gIGlmIChjcnlw
dG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlcikgeworICBpZiAo
Y3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlcikg
ewogICAgIGNyeXB0b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6OlNSVFBfQUVTMTI4X0NNX1NIQTFf
MzIpOwogICB9CiAgIGNyeXB0b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6OlNSVFBfQUVTMTI4X0NN
X1NIQTFfODApOwogfQogCiB2b2lkIEdldFN1cHBvcnRlZEF1ZGlvU2Rlc0NyeXB0b1N1aXRlTmFt
ZXMoCi0gICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBj
b25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAgIHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiogY3J5cHRvX3N1aXRlX25hbWVzKSB7CiAgIEdldFN1cHBvcnRlZFNk
ZXNDcnlwdG9TdWl0ZU5hbWVzKEdldFN1cHBvcnRlZEF1ZGlvU2Rlc0NyeXB0b1N1aXRlcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3J5cHRvX29wdGlvbnMsIGNyeXB0b19z
dWl0ZV9uYW1lcyk7CiB9CiAKLXZvaWQgR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRvU3VpdGVz
KGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+KiBjcnlwdG9fc3VpdGVz
KSB7Ci0gIGlmIChjcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMpIHsKK3Zv
aWQgR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRvU3VpdGVzKAorICAgIGNvbnN0IHdlYnJ0Yzo6
Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5
cHRvX3N1aXRlcykgeworICBpZiAoY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0
b19zdWl0ZXMpIHsKICAgICBjcnlwdG9fc3VpdGVzLT5wdXNoX2JhY2socnRjOjpTUlRQX0FFQURf
QUVTXzI1Nl9HQ00pOwogICAgIGNyeXB0b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6OlNSVFBfQUVB
RF9BRVNfMTI4X0dDTSk7CiAgIH0KQEAgLTIyNCwxNSArMjI2LDE2IEBAIHZvaWQgR2V0U3VwcG9y
dGVkVmlkZW9TZGVzQ3J5cHRvU3VpdGVzKGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRv
X29wdGlvbnMsCiB9CiAKIHZvaWQgR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRvU3VpdGVOYW1l
cygKLSAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgIGNv
bnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCiAgICAgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+KiBjcnlwdG9fc3VpdGVfbmFtZXMpIHsKICAgR2V0U3VwcG9ydGVkU2Rl
c0NyeXB0b1N1aXRlTmFtZXMoR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRvU3VpdGVzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnlwdG9fb3B0aW9ucywgY3J5cHRvX3N1
aXRlX25hbWVzKTsKIH0KIAotdm9pZCBHZXRTdXBwb3J0ZWREYXRhU2Rlc0NyeXB0b1N1aXRlcyhj
b25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+KiBjcnlwdG9fc3VpdGVzKSB7
Ci0gIGlmIChjcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMpIHsKK3ZvaWQg
R2V0U3VwcG9ydGVkRGF0YVNkZXNDcnlwdG9TdWl0ZXMoCisgICAgY29uc3Qgd2VicnRjOjpDcnlw
dG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBzdGQ6OnZlY3RvcjxpbnQ+KiBjcnlwdG9f
c3VpdGVzKSB7CisgIGlmIChjcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1
aXRlcykgewogICAgIGNyeXB0b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6OlNSVFBfQUVBRF9BRVNf
MjU2X0dDTSk7CiAgICAgY3J5cHRvX3N1aXRlcy0+cHVzaF9iYWNrKHJ0Yzo6U1JUUF9BRUFEX0FF
U18xMjhfR0NNKTsKICAgfQpAQCAtMjQwLDcgKzI0Myw3IEBAIHZvaWQgR2V0U3VwcG9ydGVkRGF0
YVNkZXNDcnlwdG9TdWl0ZXMoY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cywKIH0KIAogdm9pZCBHZXRTdXBwb3J0ZWREYXRhU2Rlc0NyeXB0b1N1aXRlTmFtZXMoCi0gICAg
Y29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBjb25zdCB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiogY3J5cHRvX3N1aXRlX25hbWVzKSB7CiAgIEdldFN1cHBvcnRlZFNkZXNDcnlwdG9T
dWl0ZU5hbWVzKEdldFN1cHBvcnRlZERhdGFTZGVzQ3J5cHRvU3VpdGVzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcnlwdG9fb3B0aW9ucywgY3J5cHRvX3N1aXRlX25hbWVz
KTsKQEAgLTI1MiwxNyArMjU1LDE3IEBAIHZvaWQgR2V0U3VwcG9ydGVkRGF0YVNkZXNDcnlwdG9T
dWl0ZU5hbWVzKAogLy8gUGljayB0aGUgY3J5cHRvIGluIHRoZSBsaXN0IHRoYXQgaXMgc3VwcG9y
dGVkLgogc3RhdGljIGJvb2wgU2VsZWN0Q3J5cHRvKGNvbnN0IE1lZGlhQ29udGVudERlc2NyaXB0
aW9uKiBvZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJ1bmRsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRp
b25zLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9u
cyYgY3J5cHRvX29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgQ3J5cHRvUGFyYW1z
KiBjcnlwdG9fb3V0KSB7CiAgIGJvb2wgYXVkaW8gPSBvZmZlci0+dHlwZSgpID09IE1FRElBX1RZ
UEVfQVVESU87CiAgIGNvbnN0IENyeXB0b1BhcmFtc1ZlYyYgY3J5cHRvcyA9IG9mZmVyLT5jcnlw
dG9zKCk7CiAKICAgZm9yIChjb25zdCBDcnlwdG9QYXJhbXMmIGNyeXB0byA6IGNyeXB0b3MpIHsK
LSAgICBpZiAoKGNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyAmJgorICAg
IGlmICgoY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgJiYKICAg
ICAgICAgIHJ0Yzo6SXNHY21DcnlwdG9TdWl0ZU5hbWUoY3J5cHRvLmNpcGhlcl9zdWl0ZSkpIHx8
CiAgICAgICAgIHJ0Yzo6Q1NfQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAgPT0gY3J5cHRvLmNpcGhl
cl9zdWl0ZSB8fAogICAgICAgICAocnRjOjpDU19BRVNfQ01fMTI4X0hNQUNfU0hBMV8zMiA9PSBj
cnlwdG8uY2lwaGVyX3N1aXRlICYmIGF1ZGlvICYmCi0gICAgICAgICAhYnVuZGxlICYmIGNyeXB0
b19vcHRpb25zLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyKSkgeworICAgICAg
ICAgIWJ1bmRsZSAmJiBjcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9j
cnlwdG9fY2lwaGVyKSkgewogICAgICAgcmV0dXJuIENyZWF0ZUNyeXB0b1BhcmFtcyhjcnlwdG8u
dGFnLCBjcnlwdG8uY2lwaGVyX3N1aXRlLCBjcnlwdG9fb3V0KTsKICAgICB9CiAgIH0KQEAgLTMw
OSw3ICszMTIsOCBAQCB2b2lkIEZpbHRlckRhdGFDb2RlY3Moc3RkOjp2ZWN0b3I8RGF0YUNvZGVj
PiogY29kZWNzLCBib29sIHNjdHApIHsKICAgICAgIHNjdHAgPyBrR29vZ2xlUnRwRGF0YUNvZGVj
TmFtZSA6IGtHb29nbGVTY3RwRGF0YUNvZGVjTmFtZTsKICAgY29kZWNzLT5lcmFzZShzdGQ6OnJl
bW92ZV9pZihjb2RlY3MtPmJlZ2luKCksIGNvZGVjcy0+ZW5kKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyZjb2RlY19uYW1lXShjb25zdCBEYXRhQ29kZWMmIGNvZGVjKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ29kZWNOYW1lc0VxKGNvZGVj
Lm5hbWUsIGNvZGVjX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjX25hbWUp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgIGNv
ZGVjcy0+ZW5kKCkpOwogfQpAQCAtNjUwLDcgKzY1NCw3IEBAIHN0YXRpYyBib29sIENvbnRhaW5z
UnR4Q29kZWMoY29uc3Qgc3RkOjp2ZWN0b3I8Qz4mIGNvZGVjcykgewogCiB0ZW1wbGF0ZSA8Y2xh
c3MgQz4KIHN0YXRpYyBib29sIElzUnR4Q29kZWMoY29uc3QgQyYgY29kZWMpIHsKLSAgcmV0dXJu
IFNUUl9DQVNFX0NNUChjb2RlYy5uYW1lLmNfc3RyKCksIGtSdHhDb2RlY05hbWUpID09IDA7Cisg
IHJldHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjLm5hbWUsIGtSdHhDb2RlY05hbWUp
OwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgQz4KQEAgLTY2NSw3ICs2NjksNyBAQCBzdGF0aWMgYm9v
bCBDb250YWluc0ZsZXhmZWNDb2RlYyhjb25zdCBzdGQ6OnZlY3RvcjxDPiYgY29kZWNzKSB7CiAK
IHRlbXBsYXRlIDxjbGFzcyBDPgogc3RhdGljIGJvb2wgSXNGbGV4ZmVjQ29kZWMoY29uc3QgQyYg
Y29kZWMpIHsKLSAgcmV0dXJuIFNUUl9DQVNFX0NNUChjb2RlYy5uYW1lLmNfc3RyKCksIGtGbGV4
ZmVjQ29kZWNOYW1lKSA9PSAwOworICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2Rl
Yy5uYW1lLCBrRmxleGZlY0NvZGVjTmFtZSk7CiB9CiAKIC8vIENyZWF0ZSBhIG1lZGlhIGNvbnRl
bnQgdG8gYmUgb2ZmZXJlZCBmb3IgdGhlIGdpdmVuIHxzZW5kZXJfb3B0aW9uc3wsCkBAIC03NDMs
NyArNzQ3LDcgQEAgc3RhdGljIHZvaWQgTmVnb3RpYXRlQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9y
PEM+JiBsb2NhbF9jb2RlY3MsCiAgICAgICAgIFJUQ19EQ0hFQ0soYXB0X2l0ICE9IHRoZWlycy5w
YXJhbXMuZW5kKCkpOwogICAgICAgICBuZWdvdGlhdGVkLlNldFBhcmFtKGtDb2RlY1BhcmFtQXNz
b2NpYXRlZFBheWxvYWRUeXBlLCBhcHRfaXQtPnNlY29uZCk7CiAgICAgICB9Ci0gICAgICBpZiAo
Q29kZWNOYW1lc0VxKG91cnMubmFtZS5jX3N0cigpLCBrSDI2NENvZGVjTmFtZSkpIHsKKyAgICAg
IGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG91cnMubmFtZSwga0gyNjRDb2RlY05hbWUpKSB7
CiAgICAgICAgIHdlYnJ0Yzo6SDI2NDo6R2VuZXJhdGVQcm9maWxlTGV2ZWxJZEZvckFuc3dlcigK
ICAgICAgICAgICAgIG91cnMucGFyYW1zLCB0aGVpcnMucGFyYW1zLCAmbmVnb3RpYXRlZC5wYXJh
bXMpOwogICAgICAgfQpAQCAtMTAzOCw5ICsxMDQyLDggQEAgc3RhdGljIHZvaWQgTmVnb3RpYXRl
UnRwSGVhZGVyRXh0ZW5zaW9ucygKIHN0YXRpYyB2b2lkIFN0cmlwQ05Db2RlY3MoQXVkaW9Db2Rl
Y3MqIGF1ZGlvX2NvZGVjcykgewogICBhdWRpb19jb2RlY3MtPmVyYXNlKHN0ZDo6cmVtb3ZlX2lm
KGF1ZGlvX2NvZGVjcy0+YmVnaW4oKSwgYXVkaW9fY29kZWNzLT5lbmQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbXShjb25zdCBBdWRpb0NvZGVjJiBjb2RlYykgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNUUl9DQVNFX0NN
UCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29k
ZWMubmFtZS5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrQ29tZm9ydE5vaXNlQ29kZWNOYW1lKSA9PSAwOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWMubmFtZSwga0Nv
bWZvcnROb2lzZUNvZGVjTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fY29kZWNzLT5lbmQoKSk7CiB9CkBA
IC0xMDY5LDYgKzEwNzIsOCBAQCBzdGF0aWMgYm9vbCBDcmVhdGVNZWRpYUNvbnRlbnRBbnN3ZXIo
CiAgIE5lZ290aWF0ZUNvZGVjcyhsb2NhbF9jb2RlY3MsIG9mZmVyLT5jb2RlY3MoKSwgJm5lZ290
aWF0ZWRfY29kZWNzKTsKICAgYW5zd2VyLT5BZGRDb2RlY3MobmVnb3RpYXRlZF9jb2RlY3MpOwog
ICBhbnN3ZXItPnNldF9wcm90b2NvbChvZmZlci0+cHJvdG9jb2woKSk7CisKKyAgYW5zd2VyLT5z
ZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0ob2ZmZXItPmV4dG1hcF9hbGxvd19taXhlZF9lbnVt
KCkpOwogICBSdHBIZWFkZXJFeHRlbnNpb25zIG5lZ290aWF0ZWRfcnRwX2V4dGVuc2lvbnM7CiAg
IE5lZ290aWF0ZVJ0cEhlYWRlckV4dGVuc2lvbnMoCiAgICAgICBsb2NhbF9ydHBfZXh0ZW5zdGlv
bnMsIG9mZmVyLT5ydHBfaGVhZGVyX2V4dGVuc2lvbnMoKSwKQEAgLTEyNjIsNiArMTI2Nyw4IEBA
IFNlc3Npb25EZXNjcmlwdGlvbiogTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVh
dGVPZmZlcigKICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRp
b24pIGNvbnN0IHsKICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gb2ZmZXIo
bmV3IFNlc3Npb25EZXNjcmlwdGlvbigpKTsKIAorICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yIGlj
ZV9jcmVkZW50aWFscygKKyAgICAgIHNlc3Npb25fb3B0aW9ucy5wb29sZWRfaWNlX2NyZWRlbnRp
YWxzKTsKICAgU3RyZWFtUGFyYW1zVmVjIGN1cnJlbnRfc3RyZWFtczsKICAgR2V0Q3VycmVudFN0
cmVhbVBhcmFtcyhjdXJyZW50X2Rlc2NyaXB0aW9uLCAmY3VycmVudF9zdHJlYW1zKTsKIApAQCAt
MTMwNSwxOCArMTMxMiwxOCBAQCBTZXNzaW9uRGVzY3JpcHRpb24qIE1lZGlhU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFjdG9yeTo6Q3JlYXRlT2ZmZXIoCiAgICAgfQogICAgIHN3aXRjaCAobWVkaWFfZGVz
Y3JpcHRpb25fb3B0aW9ucy50eXBlKSB7CiAgICAgICBjYXNlIE1FRElBX1RZUEVfQVVESU86Ci0g
ICAgICAgIGlmICghQWRkQXVkaW9Db250ZW50Rm9yT2ZmZXIobWVkaWFfZGVzY3JpcHRpb25fb3B0
aW9ucywgc2Vzc2lvbl9vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGN1cnJlbnRfY29udGVudCwgY3VycmVudF9kZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19ydHBfZXh0ZW5zaW9ucywgb2ZmZXJfYXVkaW9f
Y29kZWNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJyZW50X3N0
cmVhbXMsIG9mZmVyLmdldCgpKSkgeworICAgICAgICBpZiAoIUFkZEF1ZGlvQ29udGVudEZvck9m
ZmVyKAorICAgICAgICAgICAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25f
b3B0aW9ucywgY3VycmVudF9jb250ZW50LAorICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3Jp
cHRpb24sIGF1ZGlvX3J0cF9leHRlbnNpb25zLCBvZmZlcl9hdWRpb19jb2RlY3MsCisgICAgICAg
ICAgICAgICAgJmN1cnJlbnRfc3RyZWFtcywgb2ZmZXIuZ2V0KCksICZpY2VfY3JlZGVudGlhbHMp
KSB7CiAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgICBjYXNlIE1FRElBX1RZUEVfVklERU86Ci0gICAgICAgIGlmICghQWRkVmlkZW9Db250
ZW50Rm9yT2ZmZXIobWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucywgc2Vzc2lvbl9vcHRpb25zLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfY29udGVudCwgY3Vy
cmVudF9kZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
aWRlb19ydHBfZXh0ZW5zaW9ucywgb2ZmZXJfdmlkZW9fY29kZWNzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZjdXJyZW50X3N0cmVhbXMsIG9mZmVyLmdldCgpKSkgewor
ICAgICAgICBpZiAoIUFkZFZpZGVvQ29udGVudEZvck9mZmVyKAorICAgICAgICAgICAgICAgIG1l
ZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25fb3B0aW9ucywgY3VycmVudF9jb250ZW50
LAorICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3JpcHRpb24sIHZpZGVvX3J0cF9leHRlbnNp
b25zLCBvZmZlcl92aWRlb19jb2RlY3MsCisgICAgICAgICAgICAgICAgJmN1cnJlbnRfc3RyZWFt
cywgb2ZmZXIuZ2V0KCksICZpY2VfY3JlZGVudGlhbHMpKSB7CiAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0xMzI0LDcgKzEzMzEsNyBAQCBT
ZXNzaW9uRGVzY3JpcHRpb24qIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRl
T2ZmZXIoCiAgICAgICAgIGlmICghQWRkRGF0YUNvbnRlbnRGb3JPZmZlcihtZWRpYV9kZXNjcmlw
dGlvbl9vcHRpb25zLCBzZXNzaW9uX29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50X2NvbnRlbnQsIGN1cnJlbnRfZGVzY3JpcHRpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZlcl9kYXRhX2NvZGVjcywgJmN1cnJlbnRf
c3RyZWFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyLmdldCgp
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXIuZ2V0KCksICZp
Y2VfY3JlZGVudGlhbHMpKSB7CiAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CkBAIC0xMzcxLDYgKzEzNzgsOCBAQCBTZXNzaW9uRGVzY3JpcHRpb24q
IE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlT2ZmZXIoCiAgICAgb2ZmZXIt
PnNldF9tc2lkX3NpZ25hbGluZyhjcmlja2V0OjprTXNpZFNpZ25hbGluZ1NzcmNBdHRyaWJ1dGUp
OwogICB9CiAKKyAgb2ZmZXItPnNldF9leHRtYXBfYWxsb3dfbWl4ZWQoc2Vzc2lvbl9vcHRpb25z
Lm9mZmVyX2V4dG1hcF9hbGxvd19taXhlZCk7CisKICAgcmV0dXJuIG9mZmVyLnJlbGVhc2UoKTsK
IH0KIApAQCAtMTM4MSw2ICsxMzkwLDEwIEBAIFNlc3Npb25EZXNjcmlwdGlvbiogTWVkaWFTZXNz
aW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVBbnN3ZXIoCiAgIGlmICghb2ZmZXIpIHsKICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgfQorCisgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IgaWNlX2Ny
ZWRlbnRpYWxzKAorICAgICAgc2Vzc2lvbl9vcHRpb25zLnBvb2xlZF9pY2VfY3JlZGVudGlhbHMp
OworCiAgIC8vIFRoZSBhbnN3ZXIgY29udGFpbnMgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgY29k
ZWNzIGluIHRoZSBvZmZlciB3aXRoIHRoZQogICAvLyBjb2RlY3Mgd2Ugc3VwcG9ydC4gQXMgaW5k
aWNhdGVkIGJ5IFhFUC0wMTY3LCB3ZSByZXRhaW4gdGhlIHNhbWUgcGF5bG9hZCBpZHMKICAgLy8g
ZnJvbSB0aGUgb2ZmZXIgaW4gdGhlIGFuc3dlci4KQEAgLTEzOTYsNiArMTQwOSw4IEBAIFNlc3Np
b25EZXNjcmlwdGlvbiogTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVBbnN3
ZXIoCiAgIC8vIFRyYW5zcG9ydCBpbmZvIHNoYXJlZCBieSB0aGUgYnVuZGxlIGdyb3VwLgogICBz
dGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0SW5mbz4gYnVuZGxlX3RyYW5zcG9ydDsKIAorICBhbnN3
ZXItPnNldF9leHRtYXBfYWxsb3dfbWl4ZWQob2ZmZXItPmV4dG1hcF9hbGxvd19taXhlZCgpKTsK
KwogICAvLyBHZXQgbGlzdCBvZiBhbGwgcG9zc2libGUgY29kZWNzIHRoYXQgcmVzcGVjdHMgZXhp
c3RpbmcgcGF5bG9hZCB0eXBlCiAgIC8vIG1hcHBpbmdzIGFuZCB1c2VzIGEgc2luZ2xlIHBheWxv
YWQgdHlwZSBzcGFjZS4KICAgLy8KQEAgLTE0NDAsNyArMTQ1NSw3IEBAIFNlc3Npb25EZXNjcmlw
dGlvbiogTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVBbnN3ZXIoCiAgICAg
ICAgICAgICAgICAgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucywgc2Vzc2lvbl9vcHRpb25zLCBv
ZmZlcl9jb250ZW50LAogICAgICAgICAgICAgICAgIG9mZmVyLCBjdXJyZW50X2NvbnRlbnQsIGN1
cnJlbnRfZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgYnVuZGxlX3RyYW5zcG9ydC5nZXQo
KSwgYW5zd2VyX2F1ZGlvX2NvZGVjcywgJmN1cnJlbnRfc3RyZWFtcywKLSAgICAgICAgICAgICAg
ICBhbnN3ZXIuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgYW5zd2VyLmdldCgpLCAmaWNlX2Ny
ZWRlbnRpYWxzKSkgewogICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTQ0OSwxNiArMTQ2NCwxNiBAQCBTZXNzaW9uRGVzY3JpcHRpb24qIE1l
ZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlQW5zd2VyKAogICAgICAgICAgICAg
ICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25fb3B0aW9ucywgb2ZmZXJfY29u
dGVudCwKICAgICAgICAgICAgICAgICBvZmZlciwgY3VycmVudF9jb250ZW50LCBjdXJyZW50X2Rl
c2NyaXB0aW9uLAogICAgICAgICAgICAgICAgIGJ1bmRsZV90cmFuc3BvcnQuZ2V0KCksIGFuc3dl
cl92aWRlb19jb2RlY3MsICZjdXJyZW50X3N0cmVhbXMsCi0gICAgICAgICAgICAgICAgYW5zd2Vy
LmdldCgpKSkgeworICAgICAgICAgICAgICAgIGFuc3dlci5nZXQoKSwgJmljZV9jcmVkZW50aWFs
cykpIHsKICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKICAgICAgIGNhc2UgTUVESUFfVFlQRV9EQVRBOgotICAgICAgICBpZiAoIUFkZERhdGFDb250
ZW50Rm9yQW5zd2VyKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25fb3B0aW9ucywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZlcl9jb250ZW50LCBvZmZl
ciwgY3VycmVudF9jb250ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRfZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnVuZGxlX3RyYW5zcG9ydC5nZXQoKSwgYW5zd2VyX2RhdGFfY29kZWNzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJyZW50X3N0cmVhbXMsIGFuc3dlci5nZXQo
KSkpIHsKKyAgICAgICAgaWYgKCFBZGREYXRhQ29udGVudEZvckFuc3dlcigKKyAgICAgICAgICAg
ICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLCBzZXNzaW9uX29wdGlvbnMsIG9mZmVyX2Nv
bnRlbnQsCisgICAgICAgICAgICAgICAgb2ZmZXIsIGN1cnJlbnRfY29udGVudCwgY3VycmVudF9k
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICBidW5kbGVfdHJhbnNwb3J0LmdldCgpLCBhbnN3
ZXJfZGF0YV9jb2RlY3MsICZjdXJyZW50X3N0cmVhbXMsCisgICAgICAgICAgICAgICAgYW5zd2Vy
LmdldCgpLCAmaWNlX2NyZWRlbnRpYWxzKSkgewogICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTc2NSwxMyArMTc4MCwxNSBAQCBib29sIE1l
ZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6QWRkVHJhbnNwb3J0T2ZmZXIoCiAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICBjb25zdCBUcmFuc3BvcnRPcHRpb25z
JiB0cmFuc3BvcnRfb3B0aW9ucywKICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJl
bnRfZGVzYywKLSAgICBTZXNzaW9uRGVzY3JpcHRpb24qIG9mZmVyX2Rlc2MpIGNvbnN0IHsKKyAg
ICBTZXNzaW9uRGVzY3JpcHRpb24qIG9mZmVyX2Rlc2MsCisgICAgSWNlQ3JlZGVudGlhbHNJdGVy
YXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIGlmICghdHJhbnNwb3J0X2Rlc2NfZmFj
dG9yeV8pCiAgICAgcmV0dXJuIGZhbHNlOwogICBjb25zdCBUcmFuc3BvcnREZXNjcmlwdGlvbiog
Y3VycmVudF90ZGVzYyA9CiAgICAgICBHZXRUcmFuc3BvcnREZXNjcmlwdGlvbihjb250ZW50X25h
bWUsIGN1cnJlbnRfZGVzYyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlv
bj4gbmV3X3RkZXNjKAotICAgICAgdHJhbnNwb3J0X2Rlc2NfZmFjdG9yeV8tPkNyZWF0ZU9mZmVy
KHRyYW5zcG9ydF9vcHRpb25zLCBjdXJyZW50X3RkZXNjKSk7CisgICAgICB0cmFuc3BvcnRfZGVz
Y19mYWN0b3J5Xy0+Q3JlYXRlT2ZmZXIodHJhbnNwb3J0X29wdGlvbnMsIGN1cnJlbnRfdGRlc2Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNlX2NyZWRlbnRp
YWxzKSk7CiAgIGJvb2wgcmV0ID0KICAgICAgIChuZXdfdGRlc2MuZ2V0KCkgIT0gTlVMTCAmJgog
ICAgICAgIG9mZmVyX2Rlc2MtPkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0SW5mbyhjb250ZW50
X25hbWUsICpuZXdfdGRlc2MpKSk7CkBAIC0xNzg3LDcgKzE4MDQsOCBAQCBUcmFuc3BvcnREZXNj
cmlwdGlvbiogTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVUcmFuc3BvcnRB
bnN3ZXIoCiAgICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBvZmZlcl9kZXNjLAogICAgIGNv
bnN0IFRyYW5zcG9ydE9wdGlvbnMmIHRyYW5zcG9ydF9vcHRpb25zLAogICAgIGNvbnN0IFNlc3Np
b25EZXNjcmlwdGlvbiogY3VycmVudF9kZXNjLAotICAgIGJvb2wgcmVxdWlyZV90cmFuc3BvcnRf
YXR0cmlidXRlcykgY29uc3QgeworICAgIGJvb2wgcmVxdWlyZV90cmFuc3BvcnRfYXR0cmlidXRl
cywKKyAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0IHsK
ICAgaWYgKCF0cmFuc3BvcnRfZGVzY19mYWN0b3J5XykKICAgICByZXR1cm4gTlVMTDsKICAgY29u
c3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIG9mZmVyX3RkZXNjID0KQEAgLTE3OTYsNyArMTgxNCw3
IEBAIFRyYW5zcG9ydERlc2NyaXB0aW9uKiBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6
OkNyZWF0ZVRyYW5zcG9ydEFuc3dlcigKICAgICAgIEdldFRyYW5zcG9ydERlc2NyaXB0aW9uKGNv
bnRlbnRfbmFtZSwgY3VycmVudF9kZXNjKTsKICAgcmV0dXJuIHRyYW5zcG9ydF9kZXNjX2ZhY3Rv
cnlfLT5DcmVhdGVBbnN3ZXIob2ZmZXJfdGRlc2MsIHRyYW5zcG9ydF9vcHRpb25zLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlX3RyYW5zcG9y
dF9hdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50X3RkZXNjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudF90ZGVzYywgaWNlX2NyZWRlbnRpYWxzKTsKIH0KIAogYm9vbCBN
ZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZFRyYW5zcG9ydEFuc3dlcigKQEAgLTE4
MzIsNyArMTg1MCw4IEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpBZGRB
dWRpb0NvbnRlbnRGb3JPZmZlcigKICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25zJiBhdWRp
b19ydHBfZXh0ZW5zaW9ucywKICAgICBjb25zdCBBdWRpb0NvZGVjcyYgYXVkaW9fY29kZWNzLAog
ICAgIFN0cmVhbVBhcmFtc1ZlYyogY3VycmVudF9zdHJlYW1zLAotICAgIFNlc3Npb25EZXNjcmlw
dGlvbiogZGVzYykgY29uc3QgeworICAgIFNlc3Npb25EZXNjcmlwdGlvbiogZGVzYywKKyAgICBJ
Y2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0IHsKICAgLy8gRmls
dGVyIGF1ZGlvX2NvZGVjcyAod2hpY2ggaW5jbHVkZXMgYWxsIGNvZGVjcywgd2l0aCBjb3JyZWN0
bHkgcmVtYXBwZWQKICAgLy8gcGF5bG9hZCB0eXBlcykgYmFzZWQgb24gdHJhbnNjZWl2ZXIgZGly
ZWN0aW9uLgogICBjb25zdCBBdWRpb0NvZGVjcyYgc3VwcG9ydGVkX2F1ZGlvX2NvZGVjcyA9CkBA
IC0xODg4LDcgKzE5MDcsNyBAQCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6
QWRkQXVkaW9Db250ZW50Rm9yT2ZmZXIoCiAgICAgICAgICAgICAgICAgICAgbWVkaWFfZGVzY3Jp
cHRpb25fb3B0aW9ucy5zdG9wcGVkLCBhdWRpby5yZWxlYXNlKCkpOwogICBpZiAoIUFkZFRyYW5z
cG9ydE9mZmVyKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMudHJhbnNwb3J0X29wdGlvbnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9kZXNjcmlwdGlvbiwgZGVzYykpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Rlc2NyaXB0aW9uLCBkZXNjLCBpY2VfY3Jl
ZGVudGlhbHMpKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKQEAgLTE5MDMsNyArMTkyMiw4
IEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpBZGRWaWRlb0NvbnRlbnRG
b3JPZmZlcigKICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25zJiB2aWRlb19ydHBfZXh0ZW5z
aW9ucywKICAgICBjb25zdCBWaWRlb0NvZGVjcyYgdmlkZW9fY29kZWNzLAogICAgIFN0cmVhbVBh
cmFtc1ZlYyogY3VycmVudF9zdHJlYW1zLAotICAgIFNlc3Npb25EZXNjcmlwdGlvbiogZGVzYykg
Y29uc3QgeworICAgIFNlc3Npb25EZXNjcmlwdGlvbiogZGVzYywKKyAgICBJY2VDcmVkZW50aWFs
c0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0IHsKICAgY3JpY2tldDo6U2VjdXJlUG9s
aWN5IHNkZXNfcG9saWN5ID0KICAgICAgIElzRHRsc0FjdGl2ZShjdXJyZW50X2NvbnRlbnQsIGN1
cnJlbnRfZGVzY3JpcHRpb24pID8gY3JpY2tldDo6U0VDX0RJU0FCTEVECiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlY3VyZSgpOwpA
QCAtMTk1Nyw3ICsxOTc3LDcgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6
OkFkZFZpZGVvQ29udGVudEZvck9mZmVyKAogICAgICAgICAgICAgICAgICAgIG1lZGlhX2Rlc2Ny
aXB0aW9uX29wdGlvbnMuc3RvcHBlZCwgdmlkZW8ucmVsZWFzZSgpKTsKICAgaWYgKCFBZGRUcmFu
c3BvcnRPZmZlcihtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLm1pZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5zcG9ydF9vcHRpb25zLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3JpcHRpb24sIGRlc2MpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9kZXNjcmlwdGlvbiwgZGVzYywgaWNlX2Ny
ZWRlbnRpYWxzKSkgewogICAgIHJldHVybiBmYWxzZTsKICAgfQogICByZXR1cm4gdHJ1ZTsKQEAg
LTE5NzAsNyArMTk5MCw4IEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpB
ZGREYXRhQ29udGVudEZvck9mZmVyKAogICAgIGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiogY3Vy
cmVudF9kZXNjcmlwdGlvbiwKICAgICBjb25zdCBEYXRhQ29kZWNzJiBkYXRhX2NvZGVjcywKICAg
ICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICBTZXNzaW9uRGVzY3JpcHRp
b24qIGRlc2MpIGNvbnN0IHsKKyAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MsCisgICAgSWNl
Q3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIGJvb2wgc2Vj
dXJlX3RyYW5zcG9ydCA9ICh0cmFuc3BvcnRfZGVzY19mYWN0b3J5Xy0+c2VjdXJlKCkgIT0gU0VD
X0RJU0FCTEVEKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YUNvbnRlbnREZXNjcmlwdGlvbj4g
ZGF0YShuZXcgRGF0YUNvbnRlbnREZXNjcmlwdGlvbigpKTsKQEAgLTIwMjQsNyArMjA0NSw3IEBA
IGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpBZGREYXRhQ29udGVudEZvck9m
ZmVyKAogICB9CiAgIGlmICghQWRkVHJhbnNwb3J0T2ZmZXIobWVkaWFfZGVzY3JpcHRpb25fb3B0
aW9ucy5taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFfZGVzY3JpcHRpb25fb3B0
aW9ucy50cmFuc3BvcnRfb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50
X2Rlc2NyaXB0aW9uLCBkZXNjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRf
ZGVzY3JpcHRpb24sIGRlc2MsIGljZV9jcmVkZW50aWFscykpIHsKICAgICByZXR1cm4gZmFsc2U7
CiAgIH0KICAgcmV0dXJuIHRydWU7CkBAIC0yMDUyLDE1ICsyMDczLDE2IEBAIGJvb2wgTWVkaWFT
ZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpBZGRBdWRpb0NvbnRlbnRGb3JBbnN3ZXIoCiAgICAg
Y29uc3QgVHJhbnNwb3J0SW5mbyogYnVuZGxlX3RyYW5zcG9ydCwKICAgICBjb25zdCBBdWRpb0Nv
ZGVjcyYgYXVkaW9fY29kZWNzLAogICAgIFN0cmVhbVBhcmFtc1ZlYyogY3VycmVudF9zdHJlYW1z
LAotICAgIFNlc3Npb25EZXNjcmlwdGlvbiogYW5zd2VyKSBjb25zdCB7CisgICAgU2Vzc2lvbkRl
c2NyaXB0aW9uKiBhbnN3ZXIsCisgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRl
bnRpYWxzKSBjb25zdCB7CiAgIFJUQ19DSEVDSyhJc01lZGlhQ29udGVudE9mVHlwZShvZmZlcl9j
b250ZW50LCBNRURJQV9UWVBFX0FVRElPKSk7CiAgIGNvbnN0IEF1ZGlvQ29udGVudERlc2NyaXB0
aW9uKiBvZmZlcl9hdWRpb19kZXNjcmlwdGlvbiA9CiAgICAgICBvZmZlcl9jb250ZW50LT5tZWRp
YV9kZXNjcmlwdGlvbigpLT5hc19hdWRpbygpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3Bv
cnREZXNjcmlwdGlvbj4gYXVkaW9fdHJhbnNwb3J0KAotICAgICAgQ3JlYXRlVHJhbnNwb3J0QW5z
d2VyKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkLCBvZmZlcl9kZXNjcmlwdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5z
cG9ydF9vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3Jp
cHRpb24sIGJ1bmRsZV90cmFuc3BvcnQgIT0gbnVsbHB0cikpOworICBzdGQ6OnVuaXF1ZV9wdHI8
VHJhbnNwb3J0RGVzY3JpcHRpb24+IGF1ZGlvX3RyYW5zcG9ydChDcmVhdGVUcmFuc3BvcnRBbnN3
ZXIoCisgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLm1pZCwgb2ZmZXJfZGVzY3JpcHRp
b24sCisgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5zcG9ydF9vcHRpb25zLCBj
dXJyZW50X2Rlc2NyaXB0aW9uLAorICAgICAgYnVuZGxlX3RyYW5zcG9ydCAhPSBudWxscHRyLCBp
Y2VfY3JlZGVudGlhbHMpKTsKICAgaWYgKCFhdWRpb190cmFuc3BvcnQpIHsKICAgICByZXR1cm4g
ZmFsc2U7CiAgIH0KQEAgLTIxNDYsMTUgKzIxNjgsMTYgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNj
cmlwdGlvbkZhY3Rvcnk6OkFkZFZpZGVvQ29udGVudEZvckFuc3dlcigKICAgICBjb25zdCBUcmFu
c3BvcnRJbmZvKiBidW5kbGVfdHJhbnNwb3J0LAogICAgIGNvbnN0IFZpZGVvQ29kZWNzJiB2aWRl
b19jb2RlY3MsCiAgICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0cmVhbXMsCi0gICAgU2Vz
c2lvbkRlc2NyaXB0aW9uKiBhbnN3ZXIpIGNvbnN0IHsKKyAgICBTZXNzaW9uRGVzY3JpcHRpb24q
IGFuc3dlciwKKyAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNv
bnN0IHsKICAgUlRDX0NIRUNLKElzTWVkaWFDb250ZW50T2ZUeXBlKG9mZmVyX2NvbnRlbnQsIE1F
RElBX1RZUEVfVklERU8pKTsKICAgY29uc3QgVmlkZW9Db250ZW50RGVzY3JpcHRpb24qIG9mZmVy
X3ZpZGVvX2Rlc2NyaXB0aW9uID0KICAgICAgIG9mZmVyX2NvbnRlbnQtPm1lZGlhX2Rlc2NyaXB0
aW9uKCktPmFzX3ZpZGVvKCk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0
aW9uPiB2aWRlb190cmFuc3BvcnQoCi0gICAgICBDcmVhdGVUcmFuc3BvcnRBbnN3ZXIobWVkaWFf
ZGVzY3JpcHRpb25fb3B0aW9ucy5taWQsIG9mZmVyX2Rlc2NyaXB0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMudHJhbnNwb3J0X29wdGlv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9kZXNjcmlwdGlvbiwgYnVu
ZGxlX3RyYW5zcG9ydCAhPSBudWxscHRyKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnRE
ZXNjcmlwdGlvbj4gdmlkZW9fdHJhbnNwb3J0KENyZWF0ZVRyYW5zcG9ydEFuc3dlcigKKyAgICAg
IG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkLCBvZmZlcl9kZXNjcmlwdGlvbiwKKyAgICAg
IG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMudHJhbnNwb3J0X29wdGlvbnMsIGN1cnJlbnRfZGVz
Y3JpcHRpb24sCisgICAgICBidW5kbGVfdHJhbnNwb3J0ICE9IG51bGxwdHIsIGljZV9jcmVkZW50
aWFscykpOwogICBpZiAoIXZpZGVvX3RyYW5zcG9ydCkgewogICAgIHJldHVybiBmYWxzZTsKICAg
fQpAQCAtMjIzMiwxMSArMjI1NSwxMiBAQCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFj
dG9yeTo6QWRkRGF0YUNvbnRlbnRGb3JBbnN3ZXIoCiAgICAgY29uc3QgVHJhbnNwb3J0SW5mbyog
YnVuZGxlX3RyYW5zcG9ydCwKICAgICBjb25zdCBEYXRhQ29kZWNzJiBkYXRhX2NvZGVjcywKICAg
ICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICBTZXNzaW9uRGVzY3JpcHRp
b24qIGFuc3dlcikgY29uc3QgewotICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRp
b24+IGRhdGFfdHJhbnNwb3J0KAotICAgICAgQ3JlYXRlVHJhbnNwb3J0QW5zd2VyKG1lZGlhX2Rl
c2NyaXB0aW9uX29wdGlvbnMubWlkLCBvZmZlcl9kZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5zcG9ydF9vcHRpb25z
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3JpcHRpb24sIGJ1bmRs
ZV90cmFuc3BvcnQgIT0gbnVsbHB0cikpOworICAgIFNlc3Npb25EZXNjcmlwdGlvbiogYW5zd2Vy
LAorICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3Qgewor
ICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRhdGFfdHJhbnNwb3J0KENy
ZWF0ZVRyYW5zcG9ydEFuc3dlcigKKyAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlk
LCBvZmZlcl9kZXNjcmlwdGlvbiwKKyAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMudHJh
bnNwb3J0X29wdGlvbnMsIGN1cnJlbnRfZGVzY3JpcHRpb24sCisgICAgICBidW5kbGVfdHJhbnNw
b3J0ICE9IG51bGxwdHIsIGljZV9jcmVkZW50aWFscykpOwogICBpZiAoIWRhdGFfdHJhbnNwb3J0
KSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24uaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5oCmluZGV4IGI0
MDk3NDAzOWI4MjBhOTY1ZjU3ZDU3ZjM1YzY4OTAyMWM0NDU0MzAuLjU5MDQ2MDVmMTBhNGRhMjVm
YmQ3Y2RjOTVjZmI5MGY5NDk5MTQ2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5oCkBAIC0yMSw2
ICsyMSw3IEBACiAjaW5jbHVkZSAiYXBpL21lZGlhdHlwZXMuaCIKICNpbmNsdWRlICJtZWRpYS9i
YXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5o
IiAgLy8gRm9yIERhdGFDaGFubmVsVHlwZQorI2luY2x1ZGUgInAycC9iYXNlL2ljZWNyZWRlbnRp
YWxzaXRlcmF0b3IuaCIKICNpbmNsdWRlICJwMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZh
Y3RvcnkuaCIKICNpbmNsdWRlICJwYy9qc2VwdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAicGMvc2Vz
c2lvbmRlc2NyaXB0aW9uLmgiCkBAIC05MywxMSArOTQsMTMgQEAgc3RydWN0IE1lZGlhU2Vzc2lv
bk9wdGlvbnMgewogICBib29sIHJ0Y3BfbXV4X2VuYWJsZWQgPSB0cnVlOwogICBib29sIGJ1bmRs
ZV9lbmFibGVkID0gZmFsc2U7CiAgIGJvb2wgaXNfdW5pZmllZF9wbGFuID0gZmFsc2U7CisgIGJv
b2wgb2ZmZXJfZXh0bWFwX2FsbG93X21peGVkID0gZmFsc2U7CiAgIHN0ZDo6c3RyaW5nIHJ0Y3Bf
Y25hbWUgPSBrRGVmYXVsdFJ0Y3BDbmFtZTsKLSAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19v
cHRpb25zOworICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnM7CiAgIC8vIExp
c3Qgb2YgbWVkaWEgZGVzY3JpcHRpb24gb3B0aW9ucyBpbiB0aGUgc2FtZSBvcmRlciB0aGF0IHRo
ZSBtZWRpYQogICAvLyBkZXNjcmlwdGlvbnMgd2lsbCBiZSBnZW5lcmF0ZWQuCiAgIHN0ZDo6dmVj
dG9yPE1lZGlhRGVzY3JpcHRpb25PcHRpb25zPiBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zOwor
ICBzdGQ6OnZlY3RvcjxJY2VQYXJhbWV0ZXJzPiBwb29sZWRfaWNlX2NyZWRlbnRpYWxzOwogfTsK
IAogLy8gQ3JlYXRlcyBtZWRpYSBzZXNzaW9uIGRlc2NyaXB0aW9ucyBhY2NvcmRpbmcgdG8gdGhl
IHN1cHBsaWVkIGNvZGVjcyBhbmQKQEAgLTE4NiwxNCArMTg5LDE2IEBAIGNsYXNzIE1lZGlhU2Vz
c2lvbkRlc2NyaXB0aW9uRmFjdG9yeSB7CiAgIGJvb2wgQWRkVHJhbnNwb3J0T2ZmZXIoY29uc3Qg
c3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUcmFuc3BvcnRPcHRpb25zJiB0cmFuc3BvcnRfb3B0aW9ucywKICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIG9mZmVyKSBjb25zdDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIG9mZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykg
Y29uc3Q7CiAKICAgVHJhbnNwb3J0RGVzY3JpcHRpb24qIENyZWF0ZVRyYW5zcG9ydEFuc3dlcigK
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgICBjb25zdCBTZXNz
aW9uRGVzY3JpcHRpb24qIG9mZmVyX2Rlc2MsCiAgICAgICBjb25zdCBUcmFuc3BvcnRPcHRpb25z
JiB0cmFuc3BvcnRfb3B0aW9ucywKICAgICAgIGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiogY3Vy
cmVudF9kZXNjLAotICAgICAgYm9vbCByZXF1aXJlX3RyYW5zcG9ydF9hdHRyaWJ1dGVzKSBjb25z
dDsKKyAgICAgIGJvb2wgcmVxdWlyZV90cmFuc3BvcnRfYXR0cmlidXRlcywKKyAgICAgIEljZUNy
ZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3Q7CiAKICAgYm9vbCBBZGRU
cmFuc3BvcnRBbnN3ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24mIHRyYW5zcG9ydF9k
ZXNjLApAQCAtMjExLDcgKzIxNiw4IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFj
dG9yeSB7CiAgICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25zJiBhdWRpb19ydHBfZXh0ZW5z
aW9ucywKICAgICAgIGNvbnN0IEF1ZGlvQ29kZWNzJiBhdWRpb19jb2RlY3MsCiAgICAgICBTdHJl
YW1QYXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICAgIFNlc3Npb25EZXNjcmlwdGlvbiog
ZGVzYykgY29uc3Q7CisgICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MsCisgICAgICBJY2VD
cmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0OwogCiAgIGJvb2wgQWRk
VmlkZW9Db250ZW50Rm9yT2ZmZXIoCiAgICAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uT3B0aW9u
cyYgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucywKQEAgLTIyMSw3ICsyMjcsOCBAQCBjbGFzcyBN
ZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnkgewogICAgICAgY29uc3QgUnRwSGVhZGVyRXh0
ZW5zaW9ucyYgdmlkZW9fcnRwX2V4dGVuc2lvbnMsCiAgICAgICBjb25zdCBWaWRlb0NvZGVjcyYg
dmlkZW9fY29kZWNzLAogICAgICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0cmVhbXMsCi0g
ICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MpIGNvbnN0OworICAgICAgU2Vzc2lvbkRlc2Ny
aXB0aW9uKiBkZXNjLAorICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRp
YWxzKSBjb25zdDsKIAogICBib29sIEFkZERhdGFDb250ZW50Rm9yT2ZmZXIoCiAgICAgICBjb25z
dCBNZWRpYURlc2NyaXB0aW9uT3B0aW9ucyYgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucywKQEAg
LTIzMCw3ICsyMzcsOCBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnkgewog
ICAgICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uLAogICAg
ICAgY29uc3QgRGF0YUNvZGVjcyYgZGF0YV9jb2RlY3MsCiAgICAgICBTdHJlYW1QYXJhbXNWZWMq
IGN1cnJlbnRfc3RyZWFtcywKLSAgICAgIFNlc3Npb25EZXNjcmlwdGlvbiogZGVzYykgY29uc3Q7
CisgICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MsCisgICAgICBJY2VDcmVkZW50aWFsc0l0
ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0OwogCiAgIGJvb2wgQWRkQXVkaW9Db250ZW50
Rm9yQW5zd2VyKAogICAgICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvbk9wdGlvbnMmIG1lZGlhX2Rl
c2NyaXB0aW9uX29wdGlvbnMsCkBAIC0yNDIsNyArMjUwLDggQEAgY2xhc3MgTWVkaWFTZXNzaW9u
RGVzY3JpcHRpb25GYWN0b3J5IHsKICAgICAgIGNvbnN0IFRyYW5zcG9ydEluZm8qIGJ1bmRsZV90
cmFuc3BvcnQsCiAgICAgICBjb25zdCBBdWRpb0NvZGVjcyYgYXVkaW9fY29kZWNzLAogICAgICAg
U3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0cmVhbXMsCi0gICAgICBTZXNzaW9uRGVzY3JpcHRp
b24qIGFuc3dlcikgY29uc3Q7CisgICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGFuc3dlciwKKyAg
ICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3Q7CiAKICAg
Ym9vbCBBZGRWaWRlb0NvbnRlbnRGb3JBbnN3ZXIoCiAgICAgICBjb25zdCBNZWRpYURlc2NyaXB0
aW9uT3B0aW9ucyYgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucywKQEAgLTI1NCw3ICsyNjMsOCBA
QCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnkgewogICAgICAgY29uc3QgVHJh
bnNwb3J0SW5mbyogYnVuZGxlX3RyYW5zcG9ydCwKICAgICAgIGNvbnN0IFZpZGVvQ29kZWNzJiB2
aWRlb19jb2RlY3MsCiAgICAgICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAg
ICAgIFNlc3Npb25EZXNjcmlwdGlvbiogYW5zd2VyKSBjb25zdDsKKyAgICAgIFNlc3Npb25EZXNj
cmlwdGlvbiogYW5zd2VyLAorICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRl
bnRpYWxzKSBjb25zdDsKIAogICBib29sIEFkZERhdGFDb250ZW50Rm9yQW5zd2VyKAogICAgICAg
Y29uc3QgTWVkaWFEZXNjcmlwdGlvbk9wdGlvbnMmIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMs
CkBAIC0yNjYsNyArMjc2LDggQEAgY2xhc3MgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5
IHsKICAgICAgIGNvbnN0IFRyYW5zcG9ydEluZm8qIGJ1bmRsZV90cmFuc3BvcnQsCiAgICAgICBj
b25zdCBEYXRhQ29kZWNzJiBkYXRhX2NvZGVjcywKICAgICAgIFN0cmVhbVBhcmFtc1ZlYyogY3Vy
cmVudF9zdHJlYW1zLAotICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBhbnN3ZXIpIGNvbnN0Owor
ICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBhbnN3ZXIsCisgICAgICBJY2VDcmVkZW50aWFsc0l0
ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0OwogCiAgIHZvaWQgQ29tcHV0ZUF1ZGlvQ29k
ZWNzSW50ZXJzZWN0aW9uQW5kVW5pb24oKTsKIApAQCAtMzI3LDIwICszMzgsMjMgQEAgRGF0YUNv
bnRlbnREZXNjcmlwdGlvbiogR2V0Rmlyc3REYXRhQ29udGVudERlc2NyaXB0aW9uKAogICAgIFNl
c3Npb25EZXNjcmlwdGlvbiogc2Rlc2MpOwogCiAvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIHJldHVy
biBjcnlwdG8gc3VpdGVzIHVzZWQgZm9yIFNERVMuCi12b2lkIEdldFN1cHBvcnRlZEF1ZGlvU2Rl
c0NyeXB0b1N1aXRlcyhjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50Piog
Y3J5cHRvX3N1aXRlcyk7Ci12b2lkIEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0b1N1aXRlcyhj
b25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5cHRvX3N1aXRlcyk7
Ci12b2lkIEdldFN1cHBvcnRlZERhdGFTZGVzQ3J5cHRvU3VpdGVzKGNvbnN0IHJ0Yzo6Q3J5cHRv
T3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0b19zdWl0ZXMpOwordm9pZCBHZXRTdXBwb3J0
ZWRBdWRpb1NkZXNDcnlwdG9TdWl0ZXMoCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25z
JiBjcnlwdG9fb3B0aW9ucywKKyAgICBzdGQ6OnZlY3RvcjxpbnQ+KiBjcnlwdG9fc3VpdGVzKTsK
K3ZvaWQgR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRvU3VpdGVzKAorICAgIGNvbnN0IHdlYnJ0
Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgc3RkOjp2ZWN0b3I8aW50Piog
Y3J5cHRvX3N1aXRlcyk7Cit2b2lkIEdldFN1cHBvcnRlZERhdGFTZGVzQ3J5cHRvU3VpdGVzKAor
ICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgc3Rk
Ojp2ZWN0b3I8aW50PiogY3J5cHRvX3N1aXRlcyk7CiB2b2lkIEdldFN1cHBvcnRlZEF1ZGlvU2Rl
c0NyeXB0b1N1aXRlTmFtZXMoCi0gICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9f
b3B0aW9ucywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25z
LAogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogY3J5cHRvX3N1aXRlX25hbWVzKTsKIHZv
aWQgR2V0U3VwcG9ydGVkVmlkZW9TZGVzQ3J5cHRvU3VpdGVOYW1lcygKLSAgICBjb25zdCBydGM6
OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRv
T3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBj
cnlwdG9fc3VpdGVfbmFtZXMpOwogdm9pZCBHZXRTdXBwb3J0ZWREYXRhU2Rlc0NyeXB0b1N1aXRl
TmFtZXMoCi0gICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAg
ICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiogY3J5cHRvX3N1aXRlX25hbWVzKTsKIAogLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBnaXZlbiBtZWRpYSBzZWN0aW9uIHByb3RvY29sIGluZGljYXRlcyB1c2Ugb2Yg
UlRQLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvbWVkaWFzZXNzaW9uX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3VuaXR0ZXN0LmNjCmluZGV4IGRiMzI1
ZWQyZWYxNjdlYmY5YjNhZGU4MzJjYjRjY2RiZjdmNzNjMTYuLjA3NmFkMTJhNWIzNDk4MGMwMGMz
MTIwOTc0OWExZWI1MzZmYzM0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbl91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb25fdW5p
dHRlc3QuY2MKQEAgLTI2LDEwICsyNiwxMSBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2Vk
aWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xhZGFwdGVyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgorI2luY2x1ZGUgInRlc3QvZ21vY2suaCIK
IAogI2RlZmluZSBBU1NFUlRfQ1JZUFRPKGNkLCBzLCBjcykgICAgICBcCiAgIEFTU0VSVF9FUShz
LCBjZC0+Y3J5cHRvcygpLnNpemUoKSk7IFwKLSAgQVNTRVJUX0VRKHN0ZDo6c3RyaW5nKGNzKSwg
Y2QtPmNyeXB0b3MoKVswXS5jaXBoZXJfc3VpdGUpCisgIEFTU0VSVF9FUShjcywgY2QtPmNyeXB0
b3MoKVswXS5jaXBoZXJfc3VpdGUpCiAKIHR5cGVkZWYgc3RkOjp2ZWN0b3I8Y3JpY2tldDo6Q2Fu
ZGlkYXRlPiBDYW5kaWRhdGVzOwogCkBAIC03MSw2ICs3Miw3IEBAIHVzaW5nIHJ0Yzo6Q1NfQUVT
X0NNXzEyOF9ITUFDX1NIQTFfMzI7CiB1c2luZyBydGM6OkNTX0FFU19DTV8xMjhfSE1BQ19TSEEx
XzgwOwogdXNpbmcgcnRjOjpDU19BRUFEX0FFU18xMjhfR0NNOwogdXNpbmcgcnRjOjpDU19BRUFE
X0FFU18yNTZfR0NNOwordXNpbmcgdGVzdGluZzo6RWxlbWVudHNBcmVBcnJheTsKIHVzaW5nIHdl
YnJ0Yzo6UnRwRXh0ZW5zaW9uOwogdXNpbmcgd2VicnRjOjpSdHBUcmFuc2NlaXZlckRpcmVjdGlv
bjsKIApAQCAtNTQ1LDcgKzU0Nyw3IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFj
dG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgRVhQRUNUX1RSVUUoQ29tcGFy
ZUNyeXB0b1BhcmFtcyhhdWRpb19tZWRpYV9kZXNjLT5jcnlwdG9zKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2aWRlb19tZWRpYV9kZXNjLT5jcnlwdG9zKCkpKTsKICAg
ICBFWFBFQ1RfRVEoMXUsIGF1ZGlvX21lZGlhX2Rlc2MtPmNyeXB0b3MoKS5zaXplKCkpOwotICAg
IEVYUEVDVF9FUShzdGQ6OnN0cmluZyhrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSksCisgICAgRVhQ
RUNUX0VRKGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlLAogICAgICAgICAgICAgICBhdWRpb19tZWRp
YV9kZXNjLT5jcnlwdG9zKClbMF0uY2lwaGVyX3N1aXRlKTsKIAogICAgIC8vIFZlcmlmeSB0aGUg
c2VsZWN0ZWQgY3J5cHRvIGlzIG9uZSBmcm9tIHRoZSByZWZlcmVuY2UgYXVkaW8KQEAgLTYwOSwx
MSArNjExLDExIEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgIHZvaWQgVGVzdFZpZGVvR2NtQ2lwaGVyKGJvb2wgZ2Nt
X29mZmVyLCBib29sIGdjbV9hbnN3ZXIpIHsKICAgICBNZWRpYVNlc3Npb25PcHRpb25zIG9mZmVy
X29wdHM7CiAgICAgQWRkQXVkaW9WaWRlb1NlY3Rpb25zKFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9u
OjprUmVjdk9ubHksICZvZmZlcl9vcHRzKTsKLSAgICBvZmZlcl9vcHRzLmNyeXB0b19vcHRpb25z
LmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IGdjbV9vZmZlcjsKKyAgICBvZmZlcl9vcHRzLmNy
eXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gZ2NtX29mZmVyOwog
CiAgICAgTWVkaWFTZXNzaW9uT3B0aW9ucyBhbnN3ZXJfb3B0czsKICAgICBBZGRBdWRpb1ZpZGVv
U2VjdGlvbnMoUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246OmtSZWN2T25seSwgJmFuc3dlcl9vcHRz
KTsKLSAgICBhbnN3ZXJfb3B0cy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0
ZXMgPSBnY21fYW5zd2VyOworICAgIGFuc3dlcl9vcHRzLmNyeXB0b19vcHRpb25zLnNydHAuZW5h
YmxlX2djbV9jcnlwdG9fc3VpdGVzID0gZ2NtX2Fuc3dlcjsKIAogICAgIGYxXy5zZXRfc2VjdXJl
KFNFQ19FTkFCTEVEKTsKICAgICBmMl8uc2V0X3NlY3VyZShTRUNfRU5BQkxFRCk7CkBAIC02MzEs
NyArNjMzLDcgQEAgY2xhc3MgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiog
YWNkID0gYWMtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7CiAgICAgY29uc3QgVmlk
ZW9Db250ZW50RGVzY3JpcHRpb24qIHZjZCA9IHZjLT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc192
aWRlbygpOwogICAgIEVYUEVDVF9FUShNRURJQV9UWVBFX0FVRElPLCBhY2QtPnR5cGUoKSk7Ci0g
ICAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtBdWRpb0NvZGVjc0Fuc3dlciksIGFjZC0+Y29kZWNz
KCkpOworICAgIEVYUEVDVF9USEFUKGFjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa0F1
ZGlvQ29kZWNzQW5zd2VyKSk7CiAgICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCBhY2QtPmJh
bmR3aWR0aCgpKTsgIC8vIG5lZ290aWF0ZWQgYXV0byBidwogICAgIEVYUEVDVF9FUSgwVSwgYWNk
LT5maXJzdF9zc3JjKCkpOyAgICAgICAgICAgICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAg
ICBFWFBFQ1RfVFJVRShhY2QtPnJ0Y3BfbXV4KCkpOyAgICAgICAgICAgICAgICAgLy8gbmVnb3Rp
YXRlZCBydGNwLW11eApAQCAtNjQxLDcgKzY0Myw3IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFjdG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgICBBU1NFUlRf
Q1JZUFRPKGFjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKICAgICB9CiAgICAgRVhQ
RUNUX0VRKE1FRElBX1RZUEVfVklERU8sIHZjZC0+dHlwZSgpKTsKLSAgICBFWFBFQ1RfRVEoTUFL
RV9WRUNUT1Ioa1ZpZGVvQ29kZWNzQW5zd2VyKSwgdmNkLT5jb2RlY3MoKSk7CisgICAgRVhQRUNU
X1RIQVQodmNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrVmlkZW9Db2RlY3NBbnN3ZXIp
KTsKICAgICBFWFBFQ1RfRVEoMFUsIHZjZC0+Zmlyc3Rfc3NyYygpKTsgIC8vIG5vIHNlbmRlciBp
cyBhdHRhY2hlZAogICAgIEVYUEVDVF9UUlVFKHZjZC0+cnRjcF9tdXgoKSk7ICAgICAgLy8gbmVn
b3RpYXRlZCBydGNwLW11eAogICAgIGlmIChnY21fb2ZmZXIgJiYgZ2NtX2Fuc3dlcikgewpAQCAt
NjQ5LDcgKzY1MSw3IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgfSBlbHNlIHsKICAgICAgIEFTU0VSVF9DUllQ
VE8odmNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwogICAgIH0KLSAgICBFWFBFQ1Rf
RVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiksIHZjZC0+cHJvdG9j
b2woKSk7CisgICAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIHZjZC0+
cHJvdG9jb2woKSk7CiAgIH0KIAogIHByb3RlY3RlZDoKQEAgLTY3Nyw3ICs2NzksNyBAQCBURVNU
X0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdENyZWF0ZUF1ZGlvT2Zm
ZXIpIHsKICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgpKTsgIC8v
IGRlZmF1bHQgYmFuZHdpZHRoIChhdXRvKQogICBFWFBFQ1RfVFJVRShhY2QtPnJ0Y3BfbXV4KCkp
OyAgICAgICAgICAgICAgICAgLy8gcnRjcC1tdXggZGVmYXVsdHMgb24KICAgQVNTRVJUX0NSWVBU
TyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0
cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgYWNkLT5wcm90b2NvbCgpKTsKKyAg
RVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGFjZC0+cHJvdG9jb2woKSk7
CiB9CiAKIC8vIENyZWF0ZSBhIHR5cGljYWwgdmlkZW8gb2ZmZXIsIGFuZCBlbnN1cmUgaXQgbWF0
Y2hlcyB3aGF0IHdlIGV4cGVjdC4KQEAgLTcwMSwxNCArNzAzLDE0IEBAIFRFU1RfRihNZWRpYVNl
c3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3JlYXRlVmlkZW9PZmZlcikgewogICBF
WFBFQ1RfRVEoa0F1dG9CYW5kd2lkdGgsIGFjZC0+YmFuZHdpZHRoKCkpOyAgLy8gZGVmYXVsdCBi
YW5kd2lkdGggKGF1dG8pCiAgIEVYUEVDVF9UUlVFKGFjZC0+cnRjcF9tdXgoKSk7ICAgICAgICAg
ICAgICAgICAvLyBydGNwLW11eCBkZWZhdWx0cyBvbgogICBBU1NFUlRfQ1JZUFRPKGFjZCwgMVUs
IGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNr
ZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCBhY2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEo
Y3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgYWNkLT5wcm90b2NvbCgpKTsKICAgRVhQRUNU
X0VRKE1FRElBX1RZUEVfVklERU8sIHZjZC0+dHlwZSgpKTsKICAgRVhQRUNUX0VRKGYxXy52aWRl
b19jb2RlY3MoKSwgdmNkLT5jb2RlY3MoKSk7CiAgIEVYUEVDVF9FUSgwVSwgdmNkLT5maXJzdF9z
c3JjKCkpOyAgICAgICAgICAgICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAgRVhQRUNUX0VR
KGtBdXRvQmFuZHdpZHRoLCB2Y2QtPmJhbmR3aWR0aCgpKTsgIC8vIGRlZmF1bHQgYmFuZHdpZHRo
IChhdXRvKQogICBFWFBFQ1RfVFJVRSh2Y2QtPnJ0Y3BfbXV4KCkpOyAgICAgICAgICAgICAgICAg
Ly8gcnRjcC1tdXggZGVmYXVsdHMgb24KICAgQVNTRVJUX0NSWVBUTyh2Y2QsIDFVLCBrRGVmYXVs
dFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVk
aWFQcm90b2NvbFNhdnBmKSwgdmNkLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6
OmtNZWRpYVByb3RvY29sU2F2cGYsIHZjZC0+cHJvdG9jb2woKSk7CiB9CiAKIC8vIFRlc3QgY3Jl
YXRpbmcgYW4gb2ZmZXIgd2l0aCBidW5kbGUgd2hlcmUgdGhlIENvZGVjcyBoYXZlIHRoZSBzYW1l
IGR5bmFtaWMKQEAgLTc3OSwxMSArNzgxLDExIEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlw
dGlvbkZhY3RvcnlUZXN0LAogICBFWFBFQ1RfVFJVRShOVUxMICE9IGRjZCk7CiAKICAgQVNTRVJU
X0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVYUEVDVF9FUShz
dGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgYWNkLT5wcm90b2NvbCgp
KTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGFjZC0+cHJvdG9j
b2woKSk7CiAgIEFTU0VSVF9DUllQVE8odmNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUp
OwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiks
IHZjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbFNh
dnBmLCB2Y2QtPnByb3RvY29sKCkpOwogICBBU1NFUlRfQ1JZUFRPKGRjZCwgMVUsIGtEZWZhdWx0
U3J0cENyeXB0b1N1aXRlKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRp
YVByb3RvY29sU2F2cGYpLCBkY2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6
a01lZGlhUHJvdG9jb2xTYXZwZiwgZGNkLT5wcm90b2NvbCgpKTsKIH0KIAogLy8gQ3JlYXRlIGEg
UlRQIGRhdGEgb2ZmZXIsIGFuZCBlbnN1cmUgaXQgbWF0Y2hlcyB3aGF0IHdlIGV4cGVjdC4KQEAg
LTgwOCw3ICs4MTAsNyBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVz
dCwgVGVzdENyZWF0ZVJ0cERhdGFPZmZlcikgewogICBFWFBFQ1RfRVEoa0F1dG9CYW5kd2lkdGgs
IGFjZC0+YmFuZHdpZHRoKCkpOyAgLy8gZGVmYXVsdCBiYW5kd2lkdGggKGF1dG8pCiAgIEVYUEVD
VF9UUlVFKGFjZC0+cnRjcF9tdXgoKSk7ICAgICAgICAgICAgICAgICAvLyBydGNwLW11eCBkZWZh
dWx0cyBvbgogICBBU1NFUlRfQ1JZUFRPKGFjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRl
KTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYp
LCBhY2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xT
YXZwZiwgYWNkLT5wcm90b2NvbCgpKTsKICAgRVhQRUNUX0VRKE1FRElBX1RZUEVfREFUQSwgZGNk
LT50eXBlKCkpOwogICBFWFBFQ1RfRVEoZjFfLmRhdGFfY29kZWNzKCksIGRjZC0+Y29kZWNzKCkp
OwogICBFWFBFQ1RfRVEoMFUsIGRjZC0+Zmlyc3Rfc3NyYygpKTsgIC8vIG5vIHNlbmRlciBpcyBh
dHRhY2hlZC4KQEAgLTgxNiw3ICs4MTgsNyBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRp
b25GYWN0b3J5VGVzdCwgVGVzdENyZWF0ZVJ0cERhdGFPZmZlcikgewogICAgICAgICAgICAgZGNk
LT5iYW5kd2lkdGgoKSk7ICAgLy8gZGVmYXVsdCBiYW5kd2lkdGggKGF1dG8pCiAgIEVYUEVDVF9U
UlVFKGRjZC0+cnRjcF9tdXgoKSk7ICAvLyBydGNwLW11eCBkZWZhdWx0cyBvbgogICBBU1NFUlRf
Q1JZUFRPKGRjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKLSAgRVhQRUNUX0VRKHN0
ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCBkY2QtPnByb3RvY29sKCkp
OworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgZGNkLT5wcm90b2Nv
bCgpKTsKIH0KIAogLy8gQ3JlYXRlIGFuIFNDVFAgZGF0YSBvZmZlciB3aXRoIGJ1bmRsZSB3aXRo
b3V0IGVycm9yLgpAQCAtOTM5LDEyICs5NDEsMTIgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVBdWRpb0Fuc3dlcikgewogICBFWFBFQ1RfRVEo
TWVkaWFQcm90b2NvbFR5cGU6OmtSdHAsIGFjLT50eXBlKTsKICAgY29uc3QgQXVkaW9Db250ZW50
RGVzY3JpcHRpb24qIGFjZCA9IGFjLT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19hdWRpbygpOwog
ICBFWFBFQ1RfRVEoTUVESUFfVFlQRV9BVURJTywgYWNkLT50eXBlKCkpOwotICBFWFBFQ1RfRVEo
TUFLRV9WRUNUT1Ioa0F1ZGlvQ29kZWNzQW5zd2VyKSwgYWNkLT5jb2RlY3MoKSk7CisgIEVYUEVD
VF9USEFUKGFjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa0F1ZGlvQ29kZWNzQW5zd2Vy
KSk7CiAgIEVYUEVDVF9FUSgwVSwgYWNkLT5maXJzdF9zc3JjKCkpOyAgICAgICAgICAgICAvLyBu
byBzZW5kZXIgaXMgYXR0YWNoZWQKICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCBhY2QtPmJh
bmR3aWR0aCgpKTsgIC8vIG5lZ290aWF0ZWQgYXV0byBidwogICBFWFBFQ1RfVFJVRShhY2QtPnJ0
Y3BfbXV4KCkpOyAgICAgICAgICAgICAgICAgLy8gbmVnb3RpYXRlZCBydGNwLW11eAogICBBU1NF
UlRfQ1JZUFRPKGFjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKLSAgRVhQRUNUX0VR
KHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCBhY2QtPnByb3RvY29s
KCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgYWNkLT5wcm90
b2NvbCgpKTsKIH0KIAogLy8gQ3JlYXRlIGEgdHlwaWNhbCBhdWRpbyBhbnN3ZXIgd2l0aCBHQ00g
Y2lwaGVycyBlbmFibGVkLCBhbmQgZW5zdXJlIGl0CkBAIC05NTMsNyArOTU1LDcgQEAgVEVTVF9G
KE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVBdWRpb0Fuc3dl
ckdjbSkgewogICBmMV8uc2V0X3NlY3VyZShTRUNfRU5BQkxFRCk7CiAgIGYyXy5zZXRfc2VjdXJl
KFNFQ19FTkFCTEVEKTsKICAgTWVkaWFTZXNzaW9uT3B0aW9ucyBvcHRzID0gQ3JlYXRlUGxhbkJN
ZWRpYVNlc3Npb25PcHRpb25zKCk7Ci0gIG9wdHMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9j
cnlwdG9fc3VpdGVzID0gdHJ1ZTsKKyAgb3B0cy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9n
Y21fY3J5cHRvX3N1aXRlcyA9IHRydWU7CiAgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3Jp
cHRpb24+IG9mZmVyKGYxXy5DcmVhdGVPZmZlcihvcHRzLCBOVUxMKSk7CiAgIEFTU0VSVF9UUlVF
KG9mZmVyLmdldCgpICE9IE5VTEwpOwogICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0
aW9uPiBhbnN3ZXIoCkBAIC05NjUsMTIgKzk2NywxMiBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVz
Y3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdENyZWF0ZUF1ZGlvQW5zd2VyR2NtKSB7CiAgIEVYUEVD
VF9FUShNZWRpYVByb3RvY29sVHlwZTo6a1J0cCwgYWMtPnR5cGUpOwogICBjb25zdCBBdWRpb0Nv
bnRlbnREZXNjcmlwdGlvbiogYWNkID0gYWMtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlv
KCk7CiAgIEVYUEVDVF9FUShNRURJQV9UWVBFX0FVRElPLCBhY2QtPnR5cGUoKSk7Ci0gIEVYUEVD
VF9FUShNQUtFX1ZFQ1RPUihrQXVkaW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsKKyAg
RVhQRUNUX1RIQVQoYWNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NB
bnN3ZXIpKTsKICAgRVhQRUNUX0VRKDBVLCBhY2QtPmZpcnN0X3NzcmMoKSk7ICAgICAgICAgICAg
IC8vIG5vIHNlbmRlciBpcyBhdHRhY2hlZAogICBFWFBFQ1RfRVEoa0F1dG9CYW5kd2lkdGgsIGFj
ZC0+YmFuZHdpZHRoKCkpOyAgLy8gbmVnb3RpYXRlZCBhdXRvIGJ3CiAgIEVYUEVDVF9UUlVFKGFj
ZC0+cnRjcF9tdXgoKSk7ICAgICAgICAgICAgICAgICAvLyBuZWdvdGlhdGVkIHJ0Y3AtbXV4CiAg
IEFTU0VSVF9DUllQVE8oYWNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGVHY20pOwotICBF
WFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiksIGFjZC0+
cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmLCBh
Y2QtPnByb3RvY29sKCkpOwogfQogCiAvLyBDcmVhdGUgYSB0eXBpY2FsIHZpZGVvIGFuc3dlciwg
YW5kIGVuc3VyZSBpdCBtYXRjaGVzIHdoYXQgd2UgZXhwZWN0LgpAQCAtOTkyLDE3ICs5OTQsMTcg
QEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVW
aWRlb0Fuc3dlcikgewogICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYWNkID0gYWMt
Pm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7CiAgIGNvbnN0IFZpZGVvQ29udGVudERl
c2NyaXB0aW9uKiB2Y2QgPSB2Yy0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfdmlkZW8oKTsKICAg
RVhQRUNUX0VRKE1FRElBX1RZUEVfQVVESU8sIGFjZC0+dHlwZSgpKTsKLSAgRVhQRUNUX0VRKE1B
S0VfVkVDVE9SKGtBdWRpb0NvZGVjc0Fuc3dlciksIGFjZC0+Y29kZWNzKCkpOworICBFWFBFQ1Rf
VEhBVChhY2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtBdWRpb0NvZGVjc0Fuc3dlcikp
OwogICBFWFBFQ1RfRVEoa0F1dG9CYW5kd2lkdGgsIGFjZC0+YmFuZHdpZHRoKCkpOyAgLy8gbmVn
b3RpYXRlZCBhdXRvIGJ3CiAgIEVYUEVDVF9FUSgwVSwgYWNkLT5maXJzdF9zc3JjKCkpOyAgICAg
ICAgICAgICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAgRVhQRUNUX1RSVUUoYWNkLT5ydGNw
X211eCgpKTsgICAgICAgICAgICAgICAgIC8vIG5lZ290aWF0ZWQgcnRjcC1tdXgKICAgQVNTRVJU
X0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7CiAgIEVYUEVDVF9FUShN
RURJQV9UWVBFX1ZJREVPLCB2Y2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihr
VmlkZW9Db2RlY3NBbnN3ZXIpLCB2Y2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQodmNkLT5j
b2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrVmlkZW9Db2RlY3NBbnN3ZXIpKTsKICAgRVhQRUNU
X0VRKDBVLCB2Y2QtPmZpcnN0X3NzcmMoKSk7ICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAg
RVhQRUNUX1RSVUUodmNkLT5ydGNwX211eCgpKTsgICAgICAvLyBuZWdvdGlhdGVkIHJ0Y3AtbXV4
CiAgIEFTU0VSVF9DUllQVE8odmNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwotICBF
WFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiksIHZjZC0+
cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmLCB2
Y2QtPnByb3RvY29sKCkpOwogfQogCiAvLyBDcmVhdGUgYSB0eXBpY2FsIHZpZGVvIGFuc3dlciB3
aXRoIEdDTSBjaXBoZXJzIGVuYWJsZWQsIGFuZCBlbnN1cmUgaXQKQEAgLTEwNDEsMjMgKzEwNDMs
MjMgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVh
dGVEYXRhQW5zd2VyKSB7CiAgIGNvbnN0IEF1ZGlvQ29udGVudERlc2NyaXB0aW9uKiBhY2QgPSBh
Yy0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfYXVkaW8oKTsKICAgY29uc3QgRGF0YUNvbnRlbnRE
ZXNjcmlwdGlvbiogZGNkID0gZGMtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2RhdGEoKTsKICAg
RVhQRUNUX0VRKE1FRElBX1RZUEVfQVVESU8sIGFjZC0+dHlwZSgpKTsKLSAgRVhQRUNUX0VRKE1B
S0VfVkVDVE9SKGtBdWRpb0NvZGVjc0Fuc3dlciksIGFjZC0+Y29kZWNzKCkpOworICBFWFBFQ1Rf
VEhBVChhY2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtBdWRpb0NvZGVjc0Fuc3dlcikp
OwogICBFWFBFQ1RfRVEoa0F1dG9CYW5kd2lkdGgsIGFjZC0+YmFuZHdpZHRoKCkpOyAgLy8gbmVn
b3RpYXRlZCBhdXRvIGJ3CiAgIEVYUEVDVF9FUSgwVSwgYWNkLT5maXJzdF9zc3JjKCkpOyAgICAg
ICAgICAgICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAgRVhQRUNUX1RSVUUoYWNkLT5ydGNw
X211eCgpKTsgICAgICAgICAgICAgICAgIC8vIG5lZ290aWF0ZWQgcnRjcC1tdXgKICAgQVNTRVJU
X0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7CiAgIEVYUEVDVF9FUShN
RURJQV9UWVBFX0RBVEEsIGRjZC0+dHlwZSgpKTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtE
YXRhQ29kZWNzQW5zd2VyKSwgZGNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9USEFUKGRjZC0+Y29k
ZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa0RhdGFDb2RlY3NBbnN3ZXIpKTsKICAgRVhQRUNUX0VR
KDBVLCBkY2QtPmZpcnN0X3NzcmMoKSk7ICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAgRVhQ
RUNUX1RSVUUoZGNkLT5ydGNwX211eCgpKTsgICAgICAvLyBuZWdvdGlhdGVkIHJ0Y3AtbXV4CiAg
IEFTU0VSVF9DUllQVE8oZGNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwotICBFWFBF
Q1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiksIGRjZC0+cHJv
dG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmLCBkY2Qt
PnByb3RvY29sKCkpOwogfQogCiBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5
VGVzdCwgVGVzdENyZWF0ZURhdGFBbnN3ZXJHY20pIHsKICAgTWVkaWFTZXNzaW9uT3B0aW9ucyBv
cHRzID0gQ3JlYXRlUGxhbkJNZWRpYVNlc3Npb25PcHRpb25zKCk7CiAgIEFkZERhdGFTZWN0aW9u
KGNyaWNrZXQ6OkRDVF9SVFAsIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uOjprUmVjdk9ubHksICZv
cHRzKTsKLSAgb3B0cy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSB0
cnVlOworICBvcHRzLmNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVz
ID0gdHJ1ZTsKICAgZjFfLnNldF9zZWN1cmUoU0VDX0VOQUJMRUQpOwogICBmMl8uc2V0X3NlY3Vy
ZShTRUNfRU5BQkxFRCk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+IG9m
ZmVyKGYxXy5DcmVhdGVPZmZlcihvcHRzLCBOVUxMKSk7CkBAIC0xMDczLDE3ICsxMDc1LDE3IEBA
IFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3JlYXRlRGF0
YUFuc3dlckdjbSkgewogICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYWNkID0gYWMt
Pm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7CiAgIGNvbnN0IERhdGFDb250ZW50RGVz
Y3JpcHRpb24qIGRjZCA9IGRjLT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19kYXRhKCk7CiAgIEVY
UEVDVF9FUShNRURJQV9UWVBFX0FVRElPLCBhY2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtF
X1ZFQ1RPUihrQXVkaW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RI
QVQoYWNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NBbnN3ZXIpKTsK
ICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgpKTsgIC8vIG5lZ290
aWF0ZWQgYXV0byBidwogICBFWFBFQ1RfRVEoMFUsIGFjZC0+Zmlyc3Rfc3NyYygpKTsgICAgICAg
ICAgICAgLy8gbm8gc2VuZGVyIGlzIGF0dGFjaGVkCiAgIEVYUEVDVF9UUlVFKGFjZC0+cnRjcF9t
dXgoKSk7ICAgICAgICAgICAgICAgICAvLyBuZWdvdGlhdGVkIHJ0Y3AtbXV4CiAgIEFTU0VSVF9D
UllQVE8oYWNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGVHY20pOwogICBFWFBFQ1RfRVEo
TUVESUFfVFlQRV9EQVRBLCBkY2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihr
RGF0YUNvZGVjc0Fuc3dlciksIGRjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhBVChkY2QtPmNv
ZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtEYXRhQ29kZWNzQW5zd2VyKSk7CiAgIEVYUEVDVF9F
USgwVSwgZGNkLT5maXJzdF9zc3JjKCkpOyAgLy8gbm8gc2VuZGVyIGlzIGF0dGFjaGVkCiAgIEVY
UEVDVF9UUlVFKGRjZC0+cnRjcF9tdXgoKSk7ICAgICAgLy8gbmVnb3RpYXRlZCBydGNwLW11eAog
ICBBU1NFUlRfQ1JZUFRPKGRjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlR2NtKTsKLSAg
RVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCBkY2Qt
PnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwg
ZGNkLT5wcm90b2NvbCgpKTsKIH0KIAogLy8gVGhlIHVzZV9zY3RwbWFwIGZsYWcgc2hvdWxkIGJl
IHNldCBpbiBhIERhdGFDb250ZW50RGVzY3JpcHRpb24gYnkgZGVmYXVsdC4KQEAgLTEyNjQsNyAr
MTI2Niw3IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBBdWRp
b09mZmVyQW5zd2VyV2l0aENyeXB0b0Rpc2FibGVkKSB7CiAgIGNvbnN0IEF1ZGlvQ29udGVudERl
c2NyaXB0aW9uKiBvZmZlcl9hY2QgPQogICAgICAgR2V0Rmlyc3RBdWRpb0NvbnRlbnREZXNjcmlw
dGlvbihvZmZlci5nZXQoKSk7CiAgIEFTU0VSVF9UUlVFKG9mZmVyX2FjZCAhPSBOVUxMKTsKLSAg
RVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sQXZwZiksIG9mZmVy
X2FjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbEF2
cGYsIG9mZmVyX2FjZC0+cHJvdG9jb2woKSk7CiAKICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25E
ZXNjcmlwdGlvbj4gYW5zd2VyKAogICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwg
b3B0cywgTlVMTCkpOwpAQCAtMTI3Niw3ICsxMjc4LDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRl
c2NyaXB0aW9uRmFjdG9yeVRlc3QsIEF1ZGlvT2ZmZXJBbnN3ZXJXaXRoQ3J5cHRvRGlzYWJsZWQp
IHsKICAgY29uc3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGFuc3dlcl9hY2QgPQogICAgICAg
R2V0Rmlyc3RBdWRpb0NvbnRlbnREZXNjcmlwdGlvbihhbnN3ZXIuZ2V0KCkpOwogICBBU1NFUlRf
VFJVRShhbnN3ZXJfYWNkICE9IE5VTEwpOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tl
dDo6a01lZGlhUHJvdG9jb2xBdnBmKSwgYW5zd2VyX2FjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVD
VF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbEF2cGYsIGFuc3dlcl9hY2QtPnByb3RvY29sKCkp
OwogfQogCiAvLyBDcmVhdGUgYSB2aWRlbyBvZmZlciBhbmQgYW5zd2VyIGFuZCBlbnN1cmUgdGhl
IFJUUCBoZWFkZXIgZXh0ZW5zaW9ucwpAQCAtMTU4MSw2ICsxNTgzLDY3IEBAIFRFU1RfRihNZWRp
YVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LAogICBFWFBFQ1RfVFJVRShkYy0+cmVqZWN0
ZWQpOwogfQogCitURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKKyAg
ICAgICBDcmVhdGVBbnN3ZXJTdXBwb3J0c01peGVkT25lQW5kVHdvQnl0ZUhlYWRlckV4dGVuc2lv
bnMpIHsKKyAgTWVkaWFTZXNzaW9uT3B0aW9ucyBvcHRzOworICBzdGQ6OnVuaXF1ZV9wdHI8U2Vz
c2lvbkRlc2NyaXB0aW9uPiBvZmZlcihmMV8uQ3JlYXRlT2ZmZXIob3B0cywgTlVMTCkpOworICAv
LyBPZmZlciB3aXRob3V0IHJlcXVlc3Qgb2YgbWl4ZWQgb25lLSBhbmQgdHdvLWJ5dGUgaGVhZGVy
IGV4dGVuc2lvbnMuCisgIG9mZmVyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkKGZhbHNlKTsKKyAg
QVNTRVJUX1RSVUUob2ZmZXIuZ2V0KCkgIT0gTlVMTCk7CisgIHN0ZDo6dW5pcXVlX3B0cjxTZXNz
aW9uRGVzY3JpcHRpb24+IGFuc3dlcl9ub19zdXBwb3J0KAorICAgICAgZjJfLkNyZWF0ZUFuc3dl
cihvZmZlci5nZXQoKSwgb3B0cywgTlVMTCkpOworICBFWFBFQ1RfRkFMU0UoYW5zd2VyX25vX3N1
cHBvcnQtPmV4dG1hcF9hbGxvd19taXhlZCgpKTsKKworICAvLyBPZmZlciB3aXRoIHJlcXVlc3Qg
b2YgbWl4ZWQgb25lLSBhbmQgdHdvLWJ5dGUgaGVhZGVyIGV4dGVuc2lvbnMuCisgIG9mZmVyLT5z
ZXRfZXh0bWFwX2FsbG93X21peGVkKHRydWUpOworICBBU1NFUlRfVFJVRShvZmZlci5nZXQoKSAh
PSBOVUxMKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gYW5zd2VyX3N1
cHBvcnQoCisgICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBvcHRzLCBOVUxMKSk7
CisgIEVYUEVDVF9UUlVFKGFuc3dlcl9zdXBwb3J0LT5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7Cit9
CisKK1RFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LAorICAgICAgIENy
ZWF0ZUFuc3dlclN1cHBvcnRzTWl4ZWRPbmVBbmRUd29CeXRlSGVhZGVyRXh0ZW5zaW9uc09uTWVk
aWFMZXZlbCkgeworICBNZWRpYVNlc3Npb25PcHRpb25zIG9wdHM7CisgIEFkZEF1ZGlvVmlkZW9T
ZWN0aW9ucyhSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a1NlbmRSZWN2LCAmb3B0cyk7CisgIHN0
ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+IG9mZmVyKGYxXy5DcmVhdGVPZmZlcihv
cHRzLCBOVUxMKSk7CisgIE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiB2aWRlb19vZmZlciA9Cisg
ICAgICBvZmZlci0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKCJ2aWRlbyIpOworICBBU1NF
UlRfVFJVRSh2aWRlb19vZmZlcik7CisgIE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBhdWRpb19v
ZmZlciA9CisgICAgICBvZmZlci0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKCJhdWRpbyIp
OworICBBU1NFUlRfVFJVRShhdWRpb19vZmZlcik7CisKKyAgLy8gRXhwbGljaXQgZGlzYWJsZSBv
ZiBtaXhlZCBvbmUtdHdvIGJ5dGUgaGVhZGVyIHN1cHBvcnQgaW4gb2ZmZXIuCisgIHZpZGVvX29m
ZmVyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246
OmtObyk7CisgIGF1ZGlvX29mZmVyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFD
b250ZW50RGVzY3JpcHRpb246OmtObyk7CisKKyAgQVNTRVJUX1RSVUUob2ZmZXIuZ2V0KCkgIT0g
TlVMTCk7CisgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGFuc3dlcl9ub19z
dXBwb3J0KAorICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0cywgTlVMTCkp
OworICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogdmlkZW9fYW5zd2VyID0KKyAgICAgIGFuc3dl
cl9ub19zdXBwb3J0LT5HZXRDb250ZW50RGVzY3JpcHRpb25CeU5hbWUoInZpZGVvIik7CisgIE1l
ZGlhQ29udGVudERlc2NyaXB0aW9uKiBhdWRpb19hbnN3ZXIgPQorICAgICAgYW5zd2VyX25vX3N1
cHBvcnQtPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZSgiYXVkaW8iKTsKKyAgRVhQRUNUX0VR
KE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8sCisgICAgICAgICAgICB2aWRlb19hbnN3ZXIt
PmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVz
Y3JpcHRpb246OmtObywKKyAgICAgICAgICAgIGF1ZGlvX2Fuc3dlci0+ZXh0bWFwX2FsbG93X21p
eGVkX2VudW0oKSk7CisKKyAgLy8gRW5hYmxlIG1peGVkIG9uZS10d28gYnl0ZSBoZWFkZXIgc3Vw
cG9ydCBpbiBvZmZlci4KKyAgdmlkZW9fb2ZmZXItPnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51
bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgYXVkaW9fb2ZmZXItPnNldF9l
eHRtYXBfYWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsK
KyAgQVNTRVJUX1RSVUUob2ZmZXIuZ2V0KCkgIT0gTlVMTCk7CisgIHN0ZDo6dW5pcXVlX3B0cjxT
ZXNzaW9uRGVzY3JpcHRpb24+IGFuc3dlcl9zdXBwb3J0KAorICAgICAgZjJfLkNyZWF0ZUFuc3dl
cihvZmZlci5nZXQoKSwgb3B0cywgTlVMTCkpOworICB2aWRlb19hbnN3ZXIgPSBhbnN3ZXJfc3Vw
cG9ydC0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKCJ2aWRlbyIpOworICBhdWRpb19hbnN3
ZXIgPSBhbnN3ZXJfc3VwcG9ydC0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKCJhdWRpbyIp
OworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSwKKyAgICAgICAg
ICAgIHZpZGVvX2Fuc3dlci0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7CisgIEVYUEVDVF9F
UShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhLAorICAgICAgICAgICAgYXVkaW9fYW5z
d2VyLT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKK30KKwogLy8gQ3JlYXRlIGFuIGF1ZGlv
IGFuZCB2aWRlbyBvZmZlciB3aXRoOgogLy8gLSBvbmUgdmlkZW8gdHJhY2sKIC8vIC0gdHdvIGF1
ZGlvIHRyYWNrcwpAQCAtMTgxNCw3ICsxODc3LDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVNdWx0aVN0cmVhbVZpZGVvQW5zd2VyKSB7CiAg
IEFTU0VSVF9DUllQVE8oZGNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwogCiAgIEVY
UEVDVF9FUShNRURJQV9UWVBFX0FVRElPLCBhY2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtF
X1ZFQ1RPUihrQXVkaW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RI
QVQoYWNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NBbnN3ZXIpKTsK
IAogICBjb25zdCBTdHJlYW1QYXJhbXNWZWMmIGF1ZGlvX3N0cmVhbXMgPSBhY2QtPnN0cmVhbXMo
KTsKICAgQVNTRVJUX0VRKDJVLCBhdWRpb19zdHJlYW1zLnNpemUoKSk7CkBAIC0xODMwLDcgKzE4
OTMsNyBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdENy
ZWF0ZU11bHRpU3RyZWFtVmlkZW9BbnN3ZXIpIHsKICAgRVhQRUNUX1RSVUUoYWNkLT5ydGNwX211
eCgpKTsgICAgICAgICAgICAgICAgIC8vIHJ0Y3AtbXV4IGRlZmF1bHRzIG9uCiAKICAgRVhQRUNU
X0VRKE1FRElBX1RZUEVfVklERU8sIHZjZC0+dHlwZSgpKTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVD
VE9SKGtWaWRlb0NvZGVjc0Fuc3dlciksIHZjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhBVCh2
Y2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtWaWRlb0NvZGVjc0Fuc3dlcikpOwogCiAg
IGNvbnN0IFN0cmVhbVBhcmFtc1ZlYyYgdmlkZW9fc3RyZWFtcyA9IHZjZC0+c3RyZWFtcygpOwog
ICBBU1NFUlRfRVEoMVUsIHZpZGVvX3N0cmVhbXMuc2l6ZSgpKTsKQEAgLTE4NDAsNyArMTkwMyw3
IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3JlYXRl
TXVsdGlTdHJlYW1WaWRlb0Fuc3dlcikgewogICBFWFBFQ1RfVFJVRSh2Y2QtPnJ0Y3BfbXV4KCkp
OyAgICAgICAgICAgICAgICAgLy8gcnRjcC1tdXggZGVmYXVsdHMgb24KIAogICBFWFBFQ1RfRVEo
TUVESUFfVFlQRV9EQVRBLCBkY2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihr
RGF0YUNvZGVjc0Fuc3dlciksIGRjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhBVChkY2QtPmNv
ZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtEYXRhQ29kZWNzQW5zd2VyKSk7CiAKICAgY29uc3Qg
U3RyZWFtUGFyYW1zVmVjJiBkYXRhX3N0cmVhbXMgPSBkY2QtPnN0cmVhbXMoKTsKICAgQVNTRVJU
X0VRKDJVLCBkYXRhX3N0cmVhbXMuc2l6ZSgpKTsKQEAgLTE5MjMsMTEgKzE5ODYsMTEgQEAgVEVT
VF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsCiAKICAgY29uc3QgQXVkaW9D
b250ZW50RGVzY3JpcHRpb24qIGFjZCA9CiAgICAgICBHZXRGaXJzdEF1ZGlvQ29udGVudERlc2Ny
aXB0aW9uKGFuc3dlci5nZXQoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrQXVkaW9Db2Rl
Y3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQoYWNkLT5jb2RlY3MoKSwg
RWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NBbnN3ZXIpKTsKIAogICBjb25zdCBWaWRlb0Nv
bnRlbnREZXNjcmlwdGlvbiogdmNkID0KICAgICAgIEdldEZpcnN0VmlkZW9Db250ZW50RGVzY3Jp
cHRpb24oYW5zd2VyLmdldCgpKTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtWaWRlb0NvZGVj
c0Fuc3dlciksIHZjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhBVCh2Y2QtPmNvZGVjcygpLCBF
bGVtZW50c0FyZUFycmF5KGtWaWRlb0NvZGVjc0Fuc3dlcikpOwogCiAgIHN0ZDo6dW5pcXVlX3B0
cjxTZXNzaW9uRGVzY3JpcHRpb24+IHVwZGF0ZWRfb2ZmZXIoCiAgICAgICBmMl8uQ3JlYXRlT2Zm
ZXIob3B0cywgYW5zd2VyLmdldCgpKSk7CkBAIC0xOTUwLDExICsyMDEzLDExIEBAIFRFU1RfRihN
ZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LAogCiAgIGNvbnN0IEF1ZGlvQ29udGVu
dERlc2NyaXB0aW9uKiB1cGRhdGVkX2FjZCA9CiAgICAgICBHZXRGaXJzdEF1ZGlvQ29udGVudERl
c2NyaXB0aW9uKHVwZGF0ZWRfb2ZmZXIuZ2V0KCkpOwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Io
a1VwZGF0ZWRBdWRpb0NvZGVjT2ZmZXIpLCB1cGRhdGVkX2FjZC0+Y29kZWNzKCkpOworICBFWFBF
Q1RfVEhBVCh1cGRhdGVkX2FjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa1VwZGF0ZWRB
dWRpb0NvZGVjT2ZmZXIpKTsKIAogICBjb25zdCBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiogdXBk
YXRlZF92Y2QgPQogICAgICAgR2V0Rmlyc3RWaWRlb0NvbnRlbnREZXNjcmlwdGlvbih1cGRhdGVk
X29mZmVyLmdldCgpKTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtVcGRhdGVkVmlkZW9Db2Rl
Y09mZmVyKSwgdXBkYXRlZF92Y2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQodXBkYXRlZF92
Y2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtVcGRhdGVkVmlkZW9Db2RlY09mZmVyKSk7
CiB9CiAKIC8vIENyZWF0ZSBhbiB1cGRhdGVkIG9mZmVyIGFmdGVyIGNyZWF0aW5nIGFuIGFuc3dl
ciB0byB0aGUgb3JpZ2luYWwgb2ZmZXIgYW5kCkBAIC0yMDc5LDcgKzIxNDIsNyBAQCBURVNUX0Yo
TWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKIAogICBjb25zdCBBdWRpb0NvbnRl
bnREZXNjcmlwdGlvbiogYWNkID0KICAgICAgIEdldEZpcnN0QXVkaW9Db250ZW50RGVzY3JpcHRp
b24oYW5zd2VyLmdldCgpKTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtBdWRpb0NvZGVjc0Fu
c3dlciksIGFjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhBVChhY2QtPmNvZGVjcygpLCBFbGVt
ZW50c0FyZUFycmF5KGtBdWRpb0NvZGVjc0Fuc3dlcikpOwogCiAgIC8vIE5vdyAtIGxldCB8ZjJf
fCBhZGQgdmlkZW8gd2l0aCBSVFggYW5kIGxldCB0aGUgcGF5bG9hZCB0eXBlIHRoZSBSVFggY29k
ZWMKICAgLy8gcmVmZXJlbmNlICBiZSB0aGUgc2FtZSBhcyBhbiBhdWRpbyBjb2RlYyB0aGF0IHdh
cyBuZWdvdGlhdGVkIGluIHRoZQpAQCAtMjEwMSwxMyArMjE2NCwxMyBAQCBURVNUX0YoTWVkaWFT
ZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKIAogICBjb25zdCBBdWRpb0NvbnRlbnREZXNj
cmlwdGlvbiogdXBkYXRlZF9hY2QgPQogICAgICAgR2V0Rmlyc3RBdWRpb0NvbnRlbnREZXNjcmlw
dGlvbihhbnN3ZXIuZ2V0KCkpOwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Ioa0F1ZGlvQ29kZWNz
QW5zd2VyKSwgdXBkYXRlZF9hY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQodXBkYXRlZF9h
Y2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtBdWRpb0NvZGVjc0Fuc3dlcikpOwogCiAg
IGNvbnN0IFZpZGVvQ29udGVudERlc2NyaXB0aW9uKiB1cGRhdGVkX3ZjZCA9CiAgICAgICBHZXRG
aXJzdFZpZGVvQ29udGVudERlc2NyaXB0aW9uKHVwZGF0ZWRfYW5zd2VyLmdldCgpKTsKIAogICBB
U1NFUlRfRVEoIkgyNjQiLCB1cGRhdGVkX3ZjZC0+Y29kZWNzKClbMF0ubmFtZSk7Ci0gIEFTU0VS
VF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprUnR4Q29kZWNOYW1lKSwgdXBkYXRlZF92Y2QtPmNv
ZGVjcygpWzFdLm5hbWUpOworICBBU1NFUlRfRVEoY3JpY2tldDo6a1J0eENvZGVjTmFtZSwgdXBk
YXRlZF92Y2QtPmNvZGVjcygpWzFdLm5hbWUpOwogICBpbnQgbmV3X2gyNjRfcGxfdHlwZSA9IHVw
ZGF0ZWRfdmNkLT5jb2RlY3MoKVswXS5pZDsKICAgRVhQRUNUX05FKHVzZWRfcGxfdHlwZSwgbmV3
X2gyNjRfcGxfdHlwZSk7CiAgIFZpZGVvQ29kZWMgcnR4ID0gdXBkYXRlZF92Y2QtPmNvZGVjcygp
WzFdOwpAQCAtMjc3Niw4ICsyODM5LDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9u
RmFjdG9yeVRlc3QsIFRlc3RPZmZlckR0bHNTYXZwZkNyZWF0ZUFuc3dlcikgewogCiAgIGNvbnN0
IEF1ZGlvQ29udGVudERlc2NyaXB0aW9uKiBhbnN3ZXJfYXVkaW9fZGVzYyA9CiAgICAgICBhbnN3
ZXJfY29udGVudC0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfYXVkaW8oKTsKLSAgRVhQRUNUX0VR
KHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sRHRsc1NhdnBmKSwKLSAgICAgICAg
ICAgIGFuc3dlcl9hdWRpb19kZXNjLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6
OmtNZWRpYVByb3RvY29sRHRsc1NhdnBmLCBhbnN3ZXJfYXVkaW9fZGVzYy0+cHJvdG9jb2woKSk7
CiB9CiAKIC8vIFRlc3QgdGhhdCB3ZSBpbmNsdWRlIGJvdGggU0RFUyBhbmQgRFRMUyBpbiB0aGUg
b2ZmZXIsIGJ1dCBvbmx5IGluY2x1ZGUgU0RFUwpAQCAtMjg0MiwxMCArMjkwNCw4IEBAIFRFU1Rf
RihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3J5cHRvRHRscykgewog
ICBBU1NFUlRfVFJVRSh2aWRlb19tZWRpYV9kZXNjICE9IE5VTEwpOwogICBFWFBFQ1RfVFJVRShh
dWRpb19tZWRpYV9kZXNjLT5jcnlwdG9zKCkuZW1wdHkoKSk7CiAgIEVYUEVDVF9UUlVFKHZpZGVv
X21lZGlhX2Rlc2MtPmNyeXB0b3MoKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5n
KGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLAotICAgICAgICAgICAgYXVkaW9fbWVkaWFf
ZGVzYy0+cHJvdG9jb2woKSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVk
aWFQcm90b2NvbFNhdnBmKSwKLSAgICAgICAgICAgIHZpZGVvX21lZGlhX2Rlc2MtPnByb3RvY29s
KCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgYXVkaW9fbWVk
aWFfZGVzYy0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2Nv
bFNhdnBmLCB2aWRlb19tZWRpYV9kZXNjLT5wcm90b2NvbCgpKTsKIAogICBhdWRpb190cmFuc19k
ZXNjID0gYW5zd2VyLT5HZXRUcmFuc3BvcnREZXNjcmlwdGlvbkJ5TmFtZSgiYXVkaW8iKTsKICAg
QVNTRVJUX1RSVUUoYXVkaW9fdHJhbnNfZGVzYyAhPSBOVUxMKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5l
Y3Rpb24uY2MKaW5kZXggNmQ2NzMyOTI0MmQ3NWMxY2E4MjU2ZDA3YTQ1MTRjNzJkOWY0MDI4Ny4u
YTZiNDdjMTZkZWJhMzgxZTU3YWJmYmYxMjMwMTE4MTY1ZmIxNThhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24u
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVl
cmNvbm5lY3Rpb24uY2MKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJhcGkvanNlcHNlc3Np
b25kZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbXByb3h5LmgiCiAjaW5j
bHVkZSAiYXBpL21lZGlhc3RyZWFtdHJhY2twcm94eS5oIgorI2luY2x1ZGUgImFwaS91bWFtZXRy
aWNzLmgiCiAjaW5jbHVkZSAiY2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2ljZWxvZ2dlci5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9vdXRw
dXQvcnRjX2V2ZW50X2xvZ19vdXRwdXRfZmlsZS5oIgpAQCAtNjMwLDYgKzYzMSwzNSBAQCBhYnNs
OjpvcHRpb25hbDxpbnQ+IFJUQ0NvbmZpZ3VyYXRpb25Ub0ljZUNvbmZpZ09wdGlvbmFsSW50KAog
ICByZXR1cm4gcnRjX2NvbmZpZ3VyYXRpb25fcGFyYW1ldGVyOwogfQogCitjcmlja2V0OjpEYXRh
TWVzc2FnZVR5cGUgVG9Dcmlja2V0RGF0YU1lc3NhZ2VUeXBlKERhdGFNZXNzYWdlVHlwZSB0eXBl
KSB7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRGF0YU1lc3NhZ2VUeXBlOjprVGV4dDoK
KyAgICAgIHJldHVybiBjcmlja2V0OjpETVRfVEVYVDsKKyAgICBjYXNlIERhdGFNZXNzYWdlVHlw
ZTo6a0JpbmFyeToKKyAgICAgIHJldHVybiBjcmlja2V0OjpETVRfQklOQVJZOworICAgIGNhc2Ug
RGF0YU1lc3NhZ2VUeXBlOjprQ29udHJvbDoKKyAgICAgIHJldHVybiBjcmlja2V0OjpETVRfQ09O
VFJPTDsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIGNyaWNrZXQ6OkRNVF9OT05FOworICB9
CisgIHJldHVybiBjcmlja2V0OjpETVRfTk9ORTsKK30KKworRGF0YU1lc3NhZ2VUeXBlIFRvV2Vi
cnRjRGF0YU1lc3NhZ2VUeXBlKGNyaWNrZXQ6OkRhdGFNZXNzYWdlVHlwZSB0eXBlKSB7CisgIHN3
aXRjaCAodHlwZSkgeworICAgIGNhc2UgY3JpY2tldDo6RE1UX1RFWFQ6CisgICAgICByZXR1cm4g
RGF0YU1lc3NhZ2VUeXBlOjprVGV4dDsKKyAgICBjYXNlIGNyaWNrZXQ6OkRNVF9CSU5BUlk6Cisg
ICAgICByZXR1cm4gRGF0YU1lc3NhZ2VUeXBlOjprQmluYXJ5OworICAgIGNhc2UgY3JpY2tldDo6
RE1UX0NPTlRST0w6CisgICAgICByZXR1cm4gRGF0YU1lc3NhZ2VUeXBlOjprQ29udHJvbDsKKyAg
ICBjYXNlIGNyaWNrZXQ6OkRNVF9OT05FOgorICAgIGRlZmF1bHQ6CisgICAgICBSVENfTk9UUkVB
Q0hFRCgpOworICB9CisgIHJldHVybiBEYXRhTWVzc2FnZVR5cGU6OmtDb250cm9sOworfQorCiB9
ICAvLyBuYW1lc3BhY2UKIAogLy8gVXBvbiBjb21wbGV0aW9uLCBwb3N0cyBhIHRhc2sgdG8gZXhl
Y3V0ZSB0aGUgY2FsbGJhY2sgb2YgdGhlCkBAIC02ODQsNiArNzE0LDcgQEAgYm9vbCBQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbjo6b3BlcmF0b3I9PSgKICAgICBDYW5k
aWRhdGVOZXR3b3JrUG9saWN5IGNhbmRpZGF0ZV9uZXR3b3JrX3BvbGljeTsKICAgICBpbnQgYXVk
aW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0czsKICAgICBib29sIGF1ZGlvX2ppdHRlcl9idWZm
ZXJfZmFzdF9hY2NlbGVyYXRlOworICAgIGludCBhdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxh
eV9tczsKICAgICBpbnQgaWNlX2Nvbm5lY3Rpb25fcmVjZWl2aW5nX3RpbWVvdXQ7CiAgICAgaW50
IGljZV9iYWNrdXBfY2FuZGlkYXRlX3BhaXJfcGluZ19pbnRlcnZhbDsKICAgICBDb250aW51YWxH
YXRoZXJpbmdQb2xpY3kgY29udGludWFsX2dhdGhlcmluZ19wb2xpY3k7CkBAIC03MDQsNiArNzM1
LDEwIEBAIGJvb2wgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb246Om9w
ZXJhdG9yPT0oCiAgICAgU2RwU2VtYW50aWNzIHNkcF9zZW1hbnRpY3M7CiAgICAgYWJzbDo6b3B0
aW9uYWw8cnRjOjpBZGFwdGVyVHlwZT4gbmV0d29ya19wcmVmZXJlbmNlOwogICAgIGJvb2wgYWN0
aXZlX3Jlc2V0X3NydHBfcGFyYW1zOworICAgIGJvb2wgdXNlX21lZGlhX3RyYW5zcG9ydDsKKyAg
ICBib29sIHVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHM7CisgICAgYWJzbDo6
b3B0aW9uYWw8Q3J5cHRvT3B0aW9ucz4gY3J5cHRvX29wdGlvbnM7CisgICAgYm9vbCBvZmZlcl9l
eHRtYXBfYWxsb3dfbWl4ZWQ7CiAgIH07CiAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHN0dWZmX2Jl
aW5nX3Rlc3RlZF9mb3JfZXF1YWxpdHkpID09IHNpemVvZigqdGhpcyksCiAgICAgICAgICAgICAg
ICAgIkRpZCB5b3UgYWRkIHNvbWV0aGluZyB0byBSVENDb25maWd1cmF0aW9uIGFuZCBmb3JnZXQg
dG8gIgpAQCAtNzE2LDYgKzc1MSw4IEBAIGJvb2wgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJU
Q0NvbmZpZ3VyYXRpb246Om9wZXJhdG9yPT0oCiAgICAgICAgICBhdWRpb19qaXR0ZXJfYnVmZmVy
X21heF9wYWNrZXRzID09IG8uYXVkaW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyAmJgogICAg
ICAgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGUgPT0KICAgICAgICAgICAg
ICBvLmF1ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlICYmCisgICAgICAgICBhdWRp
b19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcyA9PQorICAgICAgICAgICAgIG8uYXVkaW9faml0
dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMgJiYKICAgICAgICAgIGljZV9jb25uZWN0aW9uX3JlY2Vp
dmluZ190aW1lb3V0ID09CiAgICAgICAgICAgICAgby5pY2VfY29ubmVjdGlvbl9yZWNlaXZpbmdf
dGltZW91dCAmJgogICAgICAgICAgaWNlX2JhY2t1cF9jYW5kaWRhdGVfcGFpcl9waW5nX2ludGVy
dmFsID09CkBAIC03NTEsNyArNzg4LDEyIEBAIGJvb2wgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlJUQ0NvbmZpZ3VyYXRpb246Om9wZXJhdG9yPT0oCiAgICAgICAgICB0dXJuX2N1c3RvbWl6ZXIg
PT0gby50dXJuX2N1c3RvbWl6ZXIgJiYKICAgICAgICAgIHNkcF9zZW1hbnRpY3MgPT0gby5zZHBf
c2VtYW50aWNzICYmCiAgICAgICAgICBuZXR3b3JrX3ByZWZlcmVuY2UgPT0gby5uZXR3b3JrX3By
ZWZlcmVuY2UgJiYKLSAgICAgICAgIGFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtcyA9PSBvLmFjdGl2
ZV9yZXNldF9zcnRwX3BhcmFtczsKKyAgICAgICAgIGFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtcyA9
PSBvLmFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtcyAmJgorICAgICAgICAgdXNlX21lZGlhX3RyYW5z
cG9ydCA9PSBvLnVzZV9tZWRpYV90cmFuc3BvcnQgJiYKKyAgICAgICAgIHVzZV9tZWRpYV90cmFu
c3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPT0KKyAgICAgICAgICAgICBvLnVzZV9tZWRpYV90cmFu
c3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgJiYKKyAgICAgICAgIGNyeXB0b19vcHRpb25zID09IG8u
Y3J5cHRvX29wdGlvbnMgJiYKKyAgICAgICAgIG9mZmVyX2V4dG1hcF9hbGxvd19taXhlZCA9PSBv
Lm9mZmVyX2V4dG1hcF9hbGxvd19taXhlZDsKIH0KIAogYm9vbCBQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZTo6UlRDQ29uZmlndXJhdGlvbjo6b3BlcmF0b3IhPSgKQEAgLTgyMCw2ICs4NjIsNyBAQCBQ
ZWVyQ29ubmVjdGlvbjo6flBlZXJDb25uZWN0aW9uKCkgewogICB3ZWJydGNfc2Vzc2lvbl9kZXNj
X2ZhY3RvcnlfLnJlc2V0KCk7CiAgIHNjdHBfaW52b2tlcl8ucmVzZXQoKTsKICAgc2N0cF9mYWN0
b3J5Xy5yZXNldCgpOworICBtZWRpYV90cmFuc3BvcnRfaW52b2tlcl8ucmVzZXQoKTsKICAgdHJh
bnNwb3J0X2NvbnRyb2xsZXJfLnJlc2V0KCk7CiAKICAgLy8gcG9ydF9hbGxvY2F0b3JfIGxpdmVz
IG9uIHRoZSBuZXR3b3JrIHRocmVhZCBhbmQgc2hvdWxkIGJlIGRlc3Ryb3llZCB0aGVyZS4KQEAg
LTkyOSwxOCArOTcyLDQwIEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OkluaXRpYWxpemUoCiAgIGNv
bmZpZy5kaXNhYmxlX2VuY3J5cHRpb24gPSBvcHRpb25zLmRpc2FibGVfZW5jcnlwdGlvbjsKICAg
Y29uZmlnLmJ1bmRsZV9wb2xpY3kgPSBjb25maWd1cmF0aW9uLmJ1bmRsZV9wb2xpY3k7CiAgIGNv
bmZpZy5ydGNwX211eF9wb2xpY3kgPSBjb25maWd1cmF0aW9uLnJ0Y3BfbXV4X3BvbGljeTsKLSAg
Y29uZmlnLmNyeXB0b19vcHRpb25zID0gb3B0aW9ucy5jcnlwdG9fb3B0aW9uczsKKyAgLy8gVE9E
TyhidWdzLndlYnJ0Yy5vcmcvOTg5MSkgLSBSZW1vdmUgb3B0aW9ucy5jcnlwdG9fb3B0aW9ucyB0
aGVuIHJlbW92ZSB0aGlzCisgIC8vIHN0dWIuCisgIGNvbmZpZy5jcnlwdG9fb3B0aW9ucyA9IGNv
bmZpZ3VyYXRpb24uY3J5cHRvX29wdGlvbnMuaGFzX3ZhbHVlKCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID8gKmNvbmZpZ3VyYXRpb24uY3J5cHRvX29wdGlvbnMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogb3B0aW9ucy5jcnlwdG9fb3B0aW9uczsKICAgY29uZmlnLnRy
YW5zcG9ydF9vYnNlcnZlciA9IHRoaXM7CiAgIGNvbmZpZy5ldmVudF9sb2cgPSBldmVudF9sb2df
LmdldCgpOwogI2lmIGRlZmluZWQoRU5BQkxFX0VYVEVSTkFMX0FVVEgpCiAgIGNvbmZpZy5lbmFi
bGVfZXh0ZXJuYWxfYXV0aCA9IHRydWU7CiAjZW5kaWYKICAgY29uZmlnLmFjdGl2ZV9yZXNldF9z
cnRwX3BhcmFtcyA9IGNvbmZpZ3VyYXRpb24uYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zOworCisg
IGlmIChjb25maWd1cmF0aW9uLnVzZV9tZWRpYV90cmFuc3BvcnQgfHwKKyAgICAgIGNvbmZpZ3Vy
YXRpb24udXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscykgeworICAgIGlmICgh
ZmFjdG9yeV8tPm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KCkpIHsKKyAgICAgIFJUQ19EQ0hFQ0so
ZmFsc2UpCisgICAgICAgICAgPDwgIlBlZXJDb25uZWN0b24gaXMgaW5pdGlhbGl6ZWQgd2l0aCB1
c2VfbWVkaWFfdHJhbnNwb3J0ID0gdHJ1ZSBvciAiCisgICAgICAgICAgPDwgInVzZV9tZWRpYV90
cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPSB0cnVlICIKKyAgICAgICAgICA8PCAiYnV0IG1l
ZGlhIHRyYW5zcG9ydCBmYWN0b3J5IGlzIG5vdCBzZXQgaW4gUGVlckNvbm5lY3Rpb25GYWN0b3J5
IjsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25maWcubWVkaWFfdHJhbnNw
b3J0X2ZhY3RvcnkgPSBmYWN0b3J5Xy0+bWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkoKTsKKyAgfQor
CiAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy5yZXNldChuZXcgSnNlcFRyYW5zcG9ydENvbnRyb2xs
ZXIoCiAgICAgICBzaWduYWxpbmdfdGhyZWFkKCksIG5ldHdvcmtfdGhyZWFkKCksIHBvcnRfYWxs
b2NhdG9yXy5nZXQoKSwKICAgICAgIGFzeW5jX3Jlc29sdmVyX2ZhY3RvcnlfLmdldCgpLCBjb25m
aWcpKTsKICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TaWduYWxJY2VDb25uZWN0aW9uU3RhdGUu
Y29ubmVjdCgKICAgICAgIHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6T25UcmFuc3BvcnRDb250cm9s
bGVyQ29ubmVjdGlvblN0YXRlKTsKKyAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TaWduYWxTdGFu
ZGFyZGl6ZWRJY2VDb25uZWN0aW9uU3RhdGUuY29ubmVjdCgKKyAgICAgIHRoaXMsICZQZWVyQ29u
bmVjdGlvbjo6U2V0U3RhbmRhcmRpemVkSWNlQ29ubmVjdGlvblN0YXRlKTsKKyAgdHJhbnNwb3J0
X2NvbnRyb2xsZXJfLT5TaWduYWxDb25uZWN0aW9uU3RhdGUuY29ubmVjdCgKKyAgICAgIHRoaXMs
ICZQZWVyQ29ubmVjdGlvbjo6U2V0Q29ubmVjdGlvblN0YXRlKTsKICAgdHJhbnNwb3J0X2NvbnRy
b2xsZXJfLT5TaWduYWxJY2VHYXRoZXJpbmdTdGF0ZS5jb25uZWN0KAogICAgICAgdGhpcywgJlBl
ZXJDb25uZWN0aW9uOjpPblRyYW5zcG9ydENvbnRyb2xsZXJHYXRoZXJpbmdTdGF0ZSk7CiAgIHRy
YW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsSWNlQ2FuZGlkYXRlc0dhdGhlcmVkLmNvbm5lY3Qo
CkBAIC05NzksMTAgKzEwNDQsMTggQEAgYm9vbCBQZWVyQ29ubmVjdGlvbjo6SW5pdGlhbGl6ZSgK
ICAgICB9CiAgIH0KIAotICAvLyBFbmFibGUgY3JlYXRpb24gb2YgUlRQIGRhdGEgY2hhbm5lbHMg
aWYgdGhlIGtFbmFibGVSdHBEYXRhQ2hhbm5lbHMgaXMgc2V0LgotICAvLyBJdCB0YWtlcyBwcmVj
ZW5kZW5jZSBvdmVyIHRoZSBkaXNhYmxlX3NjdHBfZGF0YV9jaGFubmVscwotICAvLyBQZWVyQ29u
bmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U6Ok9wdGlvbnMuCi0gIGlmIChjb25maWd1cmF0aW9uLmVu
YWJsZV9ydHBfZGF0YV9jaGFubmVsKSB7CisgIGlmIChjb25maWd1cmF0aW9uLnVzZV9tZWRpYV90
cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMpIHsKKyAgICBpZiAoY29uZmlndXJhdGlvbi5lbmFi
bGVfcnRwX2RhdGFfY2hhbm5lbCkgeworICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgImVuYWJs
ZV9ydHBfZGF0YV9jaGFubmVsIGFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNl
X21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyBhcmUgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImluY29tcGF0aWJsZSBhbmQgY2Fubm90IGJvdGggYmUgc2V0IHRvIHRydWUi
OworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkYXRhX2NoYW5uZWxfdHlwZV8gPSBj
cmlja2V0OjpEQ1RfTUVESUFfVFJBTlNQT1JUOworICB9IGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24u
ZW5hYmxlX3J0cF9kYXRhX2NoYW5uZWwpIHsKKyAgICAvLyBFbmFibGUgY3JlYXRpb24gb2YgUlRQ
IGRhdGEgY2hhbm5lbHMgaWYgdGhlIGtFbmFibGVSdHBEYXRhQ2hhbm5lbHMgaXMKKyAgICAvLyBz
ZXQuIEl0IHRha2VzIHByZWNlbmRlbmNlIG92ZXIgdGhlIGRpc2FibGVfc2N0cF9kYXRhX2NoYW5u
ZWxzCisgICAgLy8gUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlOjpPcHRpb25zLgogICAg
IGRhdGFfY2hhbm5lbF90eXBlXyA9IGNyaWNrZXQ6OkRDVF9SVFA7CiAgIH0gZWxzZSB7CiAgICAg
Ly8gRFRMUyBoYXMgdG8gYmUgZW5hYmxlZCB0byB1c2UgU0NUUC4KQEAgLTEwMDIsNiArMTA3NSw5
IEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OkluaXRpYWxpemUoCiAgIGF1ZGlvX29wdGlvbnNfLmF1
ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlID0KICAgICAgIGNvbmZpZ3VyYXRpb24u
YXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGU7CiAKKyAgYXVkaW9fb3B0aW9uc18u
YXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMgPQorICAgICAgY29uZmlndXJhdGlvbi5h
dWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tczsKKwogICAvLyBXaGV0aGVyIHRoZSBjZXJ0
aWZpY2F0ZSBnZW5lcmF0b3IvY2VydGlmaWNhdGUgaXMgbnVsbCBvciBub3QgZGV0ZXJtaW5lcwog
ICAvLyB3aGF0IFBlZXJDb25uZWN0aW9uRGVzY3JpcHRpb25GYWN0b3J5IHdpbGwgZG8sIHNvIG1h
a2Ugc3VyZSB0aGF0IHdlIGdpdmUgaXQKICAgLy8gdGhlIHJpZ2h0IGluc3RydWN0aW9ucyBieSBj
bGVhcmluZyB0aGUgdmFyaWFibGVzIGlmIG5lZWRlZC4KQEAgLTEwMjQsNyArMTEwMCw3IEBAIGJv
b2wgUGVlckNvbm5lY3Rpb246OkluaXRpYWxpemUoCiAgIH0KIAogICB3ZWJydGNfc2Vzc2lvbl9k
ZXNjX2ZhY3RvcnlfLT5zZXRfZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMo
Ci0gICAgICBvcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9lbmNyeXB0ZWRfcnRwX2hlYWRl
cl9leHRlbnNpb25zKTsKKyAgICAgIEdldENyeXB0b09wdGlvbnMoKS5zcnRwLmVuYWJsZV9lbmNy
eXB0ZWRfcnRwX2hlYWRlcl9leHRlbnNpb25zKTsKIAogICAvLyBBZGQgZGVmYXVsdCBhdWRpby92
aWRlbyB0cmFuc2NlaXZlcnMgZm9yIFBsYW4gQiBTRFAuCiAgIGlmICghSXNVbmlmaWVkUGxhbigp
KSB7CkBAIC0xMTgzLDcgKzEyNTksNyBAQCBQZWVyQ29ubmVjdGlvbjo6QWRkVHJhY2tQbGFuQigK
ICAgYXV0byBuZXdfc2VuZGVyID0KICAgICAgIENyZWF0ZVNlbmRlcihtZWRpYV90eXBlLCB0cmFj
ay0+aWQoKSwgdHJhY2ssIGFkanVzdGVkX3N0cmVhbV9pZHMsIHt9KTsKICAgaWYgKHRyYWNrLT5r
aW5kKCkgPT0gTWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZTo6a0F1ZGlvS2luZCkgewotICAgIG5l
d19zZW5kZXItPmludGVybmFsKCktPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2No
YW5uZWwoKSk7CisgICAgbmV3X3NlbmRlci0+aW50ZXJuYWwoKS0+U2V0TWVkaWFDaGFubmVsKHZv
aWNlX21lZGlhX2NoYW5uZWwoKSk7CiAgICAgR2V0QXVkaW9UcmFuc2NlaXZlcigpLT5pbnRlcm5h
bCgpLT5BZGRTZW5kZXIobmV3X3NlbmRlcik7CiAgICAgY29uc3QgUnRwU2VuZGVySW5mbyogc2Vu
ZGVyX2luZm8gPQogICAgICAgICBGaW5kU2VuZGVySW5mbyhsb2NhbF9hdWRpb19zZW5kZXJfaW5m
b3NfLApAQCAtMTE5Myw3ICsxMjY5LDcgQEAgUGVlckNvbm5lY3Rpb246OkFkZFRyYWNrUGxhbkIo
CiAgICAgfQogICB9IGVsc2UgewogICAgIFJUQ19EQ0hFQ0tfRVEoTWVkaWFTdHJlYW1UcmFja0lu
dGVyZmFjZTo6a1ZpZGVvS2luZCwgdHJhY2stPmtpbmQoKSk7Ci0gICAgbmV3X3NlbmRlci0+aW50
ZXJuYWwoKS0+U2V0VmlkZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbCgpKTsKKyAg
ICBuZXdfc2VuZGVyLT5pbnRlcm5hbCgpLT5TZXRNZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hh
bm5lbCgpKTsKICAgICBHZXRWaWRlb1RyYW5zY2VpdmVyKCktPmludGVybmFsKCktPkFkZFNlbmRl
cihuZXdfc2VuZGVyKTsKICAgICBjb25zdCBSdHBTZW5kZXJJbmZvKiBzZW5kZXJfaW5mbyA9CiAg
ICAgICAgIEZpbmRTZW5kZXJJbmZvKGxvY2FsX3ZpZGVvX3NlbmRlcl9pbmZvc18sCkBAIC0xNTIz
LDE0ICsxNTk5LDE0IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjxSdHBTZW5kZXJJbnRlcmZhY2U+IFBl
ZXJDb25uZWN0aW9uOjpDcmVhdGVTZW5kZXIoCiAgIGlmIChraW5kID09IE1lZGlhU3RyZWFtVHJh
Y2tJbnRlcmZhY2U6OmtBdWRpb0tpbmQpIHsKICAgICBhdXRvKiBhdWRpb19zZW5kZXIgPSBuZXcg
QXVkaW9SdHBTZW5kZXIoCiAgICAgICAgIHdvcmtlcl90aHJlYWQoKSwgcnRjOjpDcmVhdGVSYW5k
b21VdWlkKCksIHN0YXRzXy5nZXQoKSk7Ci0gICAgYXVkaW9fc2VuZGVyLT5TZXRWb2ljZU1lZGlh
Q2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVsKCkpOworICAgIGF1ZGlvX3NlbmRlci0+U2V0TWVk
aWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWwoKSk7CiAgICAgbmV3X3NlbmRlciA9IFJ0cFNl
bmRlclByb3h5V2l0aEludGVybmFsPFJ0cFNlbmRlckludGVybmFsPjo6Q3JlYXRlKAogICAgICAg
ICBzaWduYWxpbmdfdGhyZWFkKCksIGF1ZGlvX3NlbmRlcik7CiAgICAgR2V0QXVkaW9UcmFuc2Nl
aXZlcigpLT5pbnRlcm5hbCgpLT5BZGRTZW5kZXIobmV3X3NlbmRlcik7CiAgIH0gZWxzZSBpZiAo
a2luZCA9PSBNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlOjprVmlkZW9LaW5kKSB7CiAgICAgYXV0
byogdmlkZW9fc2VuZGVyID0KICAgICAgICAgbmV3IFZpZGVvUnRwU2VuZGVyKHdvcmtlcl90aHJl
YWQoKSwgcnRjOjpDcmVhdGVSYW5kb21VdWlkKCkpOwotICAgIHZpZGVvX3NlbmRlci0+U2V0Vmlk
ZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbCgpKTsKKyAgICB2aWRlb19zZW5kZXIt
PlNldE1lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsKCkpOwogICAgIG5ld19zZW5kZXIg
PSBSdHBTZW5kZXJQcm94eVdpdGhJbnRlcm5hbDxSdHBTZW5kZXJJbnRlcm5hbD46OkNyZWF0ZSgK
ICAgICAgICAgc2lnbmFsaW5nX3RocmVhZCgpLCB2aWRlb19zZW5kZXIpOwogICAgIEdldFZpZGVv
VHJhbnNjZWl2ZXIoKS0+aW50ZXJuYWwoKS0+QWRkU2VuZGVyKG5ld19zZW5kZXIpOwpAQCAtMTY0
Nyw3ICsxNzIzLDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6R2V0U3RhdHMoCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgfQotICAvLyBJZiB0aGVyZSBpcyBubyB8aW50ZXJuYWxfc2VuZGVyfMKg
dGhlbiB8c2VsZWN0b3J8IGlzIGVpdGhlciBudWxsIG9yIGRvZXMgbm90CisgIC8vIElmIHRoZXJl
IGlzIG5vIHxpbnRlcm5hbF9zZW5kZXJ8IHRoZW4gfHNlbGVjdG9yfCBpcyBlaXRoZXIgbnVsbCBv
ciBkb2VzIG5vdAogICAvLyBiZWxvbmcgdG8gdGhlIFBlZXJDb25uZWN0aW9uIChpbiBQbGFuIEIs
IHNlbmRlcnMgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUKICAgLy8gUGVlckNvbm5lY3Rpb24pLiBU
aGlzIG1lYW5zIHRoYXQgImFsbCB0aGUgc3RhdHMgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlCiAg
IC8vIHNlbGVjdG9yIiBpcyBhbiBlbXB0eSBzZXQuIEludm9raW5nIEdldFN0YXRzUmVwb3J0KCkg
d2l0aCBhIG51bGwgc2VsZWN0b3IKQEAgLTE2NzUsNyArMTc1MSw3IEBAIHZvaWQgUGVlckNvbm5l
Y3Rpb246OkdldFN0YXRzKAogICAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgLy8gSWYgdGhl
cmUgaXMgbm8gfGludGVybmFsX3JlY2VpdmVyfMKgdGhlbiB8c2VsZWN0b3J8IGlzIGVpdGhlciBu
dWxsIG9yIGRvZXMKKyAgLy8gSWYgdGhlcmUgaXMgbm8gfGludGVybmFsX3JlY2VpdmVyfCB0aGVu
IHxzZWxlY3RvcnwgaXMgZWl0aGVyIG51bGwgb3IgZG9lcwogICAvLyBub3QgYmVsb25nIHRvIHRo
ZSBQZWVyQ29ubmVjdGlvbiAoaW4gUGxhbiBCLCByZWNlaXZlcnMgY2FuIGJlIHJlbW92ZWQgZnJv
bQogICAvLyB0aGUgUGVlckNvbm5lY3Rpb24pLiBUaGlzIG1lYW5zIHRoYXQgImFsbCB0aGUgc3Rh
dHMgb2JqZWN0cyByZXByZXNlbnRpbmcKICAgLy8gdGhlIHNlbGVjdG9yIiBpcyBhbiBlbXB0eSBz
ZXQuIEludm9raW5nIEdldFN0YXRzUmVwb3J0KCkgd2l0aCBhIG51bGwKQEAgLTE2OTIsNiArMTc2
OCwxNiBAQCBQZWVyQ29ubmVjdGlvbjo6aWNlX2Nvbm5lY3Rpb25fc3RhdGUoKSB7CiAgIHJldHVy
biBpY2VfY29ubmVjdGlvbl9zdGF0ZV87CiB9CiAKK1BlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJ
Y2VDb25uZWN0aW9uU3RhdGUKK1BlZXJDb25uZWN0aW9uOjpzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5l
Y3Rpb25fc3RhdGUoKSB7CisgIHJldHVybiBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25fc3Rh
dGVfOworfQorCitQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZQor
UGVlckNvbm5lY3Rpb246OnBlZXJfY29ubmVjdGlvbl9zdGF0ZSgpIHsKKyAgcmV0dXJuIGNvbm5l
Y3Rpb25fc3RhdGVfOworfQorCiBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlR2F0aGVyaW5n
U3RhdGUKIFBlZXJDb25uZWN0aW9uOjppY2VfZ2F0aGVyaW5nX3N0YXRlKCkgewogICByZXR1cm4g
aWNlX2dhdGhlcmluZ19zdGF0ZV87CkBAIC0xOTk1LDYgKzIwODEsMTYgQEAgUlRDRXJyb3IgUGVl
ckNvbm5lY3Rpb246OkFwcGx5TG9jYWxEZXNjcmlwdGlvbigKICAgLy8gfGxvY2FsX2Rlc2NyaXB0
aW9uKCl8LgogICBSVENfRENIRUNLKGxvY2FsX2Rlc2NyaXB0aW9uKCkpOwogCisgIGlmICghaXNf
Y2FsbGVyXykgeworICAgIGlmIChyZW1vdGVfZGVzY3JpcHRpb24oKSkgeworICAgICAgLy8gUmVt
b3RlIGRlc2NyaXB0aW9uIHdhcyBhcHBsaWVkIGZpcnN0LCBzbyB0aGlzIFBDIGlzIHRoZSBjYWxs
ZWUuCisgICAgICBpc19jYWxsZXJfID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIExv
Y2FsIGRlc2NyaXB0aW9uIGlzIGFwcGxpZWQgZmlyc3QsIHNvIHRoaXMgUEMgaXMgdGhlIGNhbGxl
ci4KKyAgICAgIGlzX2NhbGxlcl8gPSB0cnVlOworICAgIH0KKyAgfQorCiAgIFJUQ0Vycm9yIGVy
cm9yID0gUHVzaGRvd25UcmFuc3BvcnREZXNjcmlwdGlvbihjcmlja2V0OjpDU19MT0NBTCwgdHlw
ZSk7CiAgIGlmICghZXJyb3Iub2soKSkgewogICAgIHJldHVybiBlcnJvcjsKQEAgLTIwNzcsNyAr
MjE3Myw3IEBAIFJUQ0Vycm9yIFBlZXJDb25uZWN0aW9uOjpBcHBseUxvY2FsRGVzY3JpcHRpb24o
CiAgIC8vIElmIHNldHRpbmcgdGhlIGRlc2NyaXB0aW9uIGRlY2lkZWQgb3VyIFNTTCByb2xlLCBh
bGxvY2F0ZSBhbnkgbmVjZXNzYXJ5CiAgIC8vIFNDVFAgc2lkcy4KICAgcnRjOjpTU0xSb2xlIHJv
bGU7Ci0gIGlmIChkYXRhX2NoYW5uZWxfdHlwZSgpID09IGNyaWNrZXQ6OkRDVF9TQ1RQICYmIEdl
dFNjdHBTc2xSb2xlKCZyb2xlKSkgeworICBpZiAoRGF0YUNoYW5uZWw6OklzU2N0cExpa2UoZGF0
YV9jaGFubmVsX3R5cGVfKSAmJiBHZXRTY3RwU3NsUm9sZSgmcm9sZSkpIHsKICAgICBBbGxvY2F0
ZVNjdHBTaWRzKHJvbGUpOwogICB9CiAKQEAgLTIzNTIsNyArMjQ0OCw3IEBAIFJUQ0Vycm9yIFBl
ZXJDb25uZWN0aW9uOjpBcHBseVJlbW90ZURlc2NyaXB0aW9uKAogICAvLyBJZiBzZXR0aW5nIHRo
ZSBkZXNjcmlwdGlvbiBkZWNpZGVkIG91ciBTU0wgcm9sZSwgYWxsb2NhdGUgYW55IG5lY2Vzc2Fy
eQogICAvLyBTQ1RQIHNpZHMuCiAgIHJ0Yzo6U1NMUm9sZSByb2xlOwotICBpZiAoZGF0YV9jaGFu
bmVsX3R5cGUoKSA9PSBjcmlja2V0OjpEQ1RfU0NUUCAmJiBHZXRTY3RwU3NsUm9sZSgmcm9sZSkp
IHsKKyAgaWYgKERhdGFDaGFubmVsOjpJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykgJiYg
R2V0U2N0cFNzbFJvbGUoJnJvbGUpKSB7CiAgICAgQWxsb2NhdGVTY3RwU2lkcyhyb2xlKTsKICAg
fQogCkBAIC0yNjQ2LDExICsyNzQyLDExIEBAIFJUQ0Vycm9yIFBlZXJDb25uZWN0aW9uOjpVcGRh
dGVUcmFuc2NlaXZlckNoYW5uZWwoCiAgICAgY29uc3QgY3JpY2tldDo6Q29udGVudEdyb3VwKiBi
dW5kbGVfZ3JvdXApIHsKICAgUlRDX0RDSEVDSyhJc1VuaWZpZWRQbGFuKCkpOwogICBSVENfRENI
RUNLKHRyYW5zY2VpdmVyKTsKLSAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5uZWwgPSB0cmFu
c2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOworICBjcmlja2V0OjpDaGFubmVsSW50ZXJm
YWNlKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNoYW5uZWwoKTsKICAgaWYg
KGNvbnRlbnQucmVqZWN0ZWQpIHsKICAgICBpZiAoY2hhbm5lbCkgewogICAgICAgdHJhbnNjZWl2
ZXItPmludGVybmFsKCktPlNldENoYW5uZWwobnVsbHB0cik7Ci0gICAgICBEZXN0cm95QmFzZUNo
YW5uZWwoY2hhbm5lbCk7CisgICAgICBEZXN0cm95Q2hhbm5lbEludGVyZmFjZShjaGFubmVsKTsK
ICAgICB9CiAgIH0gZWxzZSB7CiAgICAgaWYgKCFjaGFubmVsKSB7CkBAIC0yNjgzLDcgKzI3Nzks
NyBAQCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbjo6VXBkYXRlRGF0YUNoYW5uZWwoCiAgIGlmIChj
b250ZW50LnJlamVjdGVkKSB7CiAgICAgRGVzdHJveURhdGFDaGFubmVsKCk7CiAgIH0gZWxzZSB7
Ci0gICAgaWYgKCFydHBfZGF0YV9jaGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRfKSB7CisgICAg
aWYgKCFydHBfZGF0YV9jaGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRfICYmICFtZWRpYV90cmFu
c3BvcnRfKSB7CiAgICAgICBpZiAoIUNyZWF0ZURhdGFDaGFubmVsKGNvbnRlbnQubmFtZSkpIHsK
ICAgICAgICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJP
UiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgZGF0YSBj
aGFubmVsLiIpOwpAQCAtMjg3MCw2ICsyOTY2LDQ5IEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OlNl
dENvbmZpZ3VyYXRpb24oY29uc3QgUlRDQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwKICAg
ICByZXR1cm4gU2FmZVNldEVycm9yKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9NT0RJRklDQVRJT04s
IGVycm9yKTsKICAgfQogCisgIGlmIChsb2NhbF9kZXNjcmlwdGlvbigpICYmCisgICAgICBjb25m
aWd1cmF0aW9uLnVzZV9tZWRpYV90cmFuc3BvcnQgIT0gY29uZmlndXJhdGlvbl8udXNlX21lZGlh
X3RyYW5zcG9ydCkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBjaGFuZ2UgbWVk
aWFfdHJhbnNwb3J0IGFmdGVyIGNhbGxpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJT
ZXRMb2NhbERlc2NyaXB0aW9uLiI7CisgICAgcmV0dXJuIFNhZmVTZXRFcnJvcihSVENFcnJvclR5
cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLCBlcnJvcik7CisgIH0KKworICBpZiAocmVtb3RlX2Rl
c2NyaXB0aW9uKCkgJiYKKyAgICAgIGNvbmZpZ3VyYXRpb24udXNlX21lZGlhX3RyYW5zcG9ydCAh
PSBjb25maWd1cmF0aW9uXy51c2VfbWVkaWFfdHJhbnNwb3J0KSB7CisgICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIkNhbid0IGNoYW5nZSBtZWRpYV90cmFuc3BvcnQgYWZ0ZXIgY2FsbGluZyAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIlNldFJlbW90ZURlc2NyaXB0aW9uLiI7CisgICAgcmV0
dXJuIFNhZmVTZXRFcnJvcihSVENFcnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLCBlcnJv
cik7CisgIH0KKworICBpZiAobG9jYWxfZGVzY3JpcHRpb24oKSAmJgorICAgICAgY29uZmlndXJh
dGlvbi51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzICE9CisgICAgICAgICAg
Y29uZmlndXJhdGlvbl8udXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscykgewor
ICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBjaGFuZ2UgbWVkaWFfdHJhbnNwb3J0X2Zv
cl9kYXRhX2NoYW5uZWxzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYWZ0ZXIgY2FsbGlu
ZyBTZXRMb2NhbERlc2NyaXB0aW9uLiI7CisgICAgcmV0dXJuIFNhZmVTZXRFcnJvcihSVENFcnJv
clR5cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLCBlcnJvcik7CisgIH0KKworICBpZiAocmVtb3Rl
X2Rlc2NyaXB0aW9uKCkgJiYKKyAgICAgIGNvbmZpZ3VyYXRpb24udXNlX21lZGlhX3RyYW5zcG9y
dF9mb3JfZGF0YV9jaGFubmVscyAhPQorICAgICAgICAgIGNvbmZpZ3VyYXRpb25fLnVzZV9tZWRp
YV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8
PCAiQ2FuJ3QgY2hhbmdlIG1lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgImFmdGVyIGNhbGxpbmcgU2V0UmVtb3RlRGVzY3JpcHRpb24u
IjsKKyAgICByZXR1cm4gU2FmZVNldEVycm9yKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9NT0RJRklD
QVRJT04sIGVycm9yKTsKKyAgfQorCisgIGlmIChsb2NhbF9kZXNjcmlwdGlvbigpICYmCisgICAg
ICBjb25maWd1cmF0aW9uLmNyeXB0b19vcHRpb25zICE9IGNvbmZpZ3VyYXRpb25fLmNyeXB0b19v
cHRpb25zKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbid0IGNoYW5nZSBjcnlwdG9f
b3B0aW9ucyBhZnRlciBjYWxsaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiU2V0TG9j
YWxEZXNjcmlwdGlvbi4iOworICAgIHJldHVybiBTYWZlU2V0RXJyb3IoUlRDRXJyb3JUeXBlOjpJ
TlZBTElEX01PRElGSUNBVElPTiwgZXJyb3IpOworICB9CisKKyAgaWYgKGNvbmZpZ3VyYXRpb24u
dXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyB8fAorICAgICAgY29uZmlndXJh
dGlvbi51c2VfbWVkaWFfdHJhbnNwb3J0KSB7CisgICAgUlRDX0NIRUNLKGNvbmZpZ3VyYXRpb24u
YnVuZGxlX3BvbGljeSA9PSBrQnVuZGxlUG9saWN5TWF4QnVuZGxlKQorICAgICAgICA8PCAiTWVk
aWEgdHJhbnNwb3J0IHJlcXVpcmVzIE1heEJ1bmRsZSBwb2xpY3kuIjsKKyAgfQorCiAgIC8vIFRo
ZSBzaW1wbGVzdCAoYW5kIG1vc3QgZnV0dXJlLWNvbXBhdGlibGUpIHdheSB0byB0ZWxsIGlmIHRo
ZSBjb25maWcgd2FzCiAgIC8vIG1vZGlmaWVkIGluIGFuIGludmFsaWQgd2F5IGlzIHRvIGNvcHkg
ZWFjaCBwcm9wZXJ0eSB3ZSBkbyBzdXBwb3J0CiAgIC8vIG1vZGlmeWluZywgdGhlbiB1c2Ugb3Bl
cmF0b3I9PS4gVGhlcmUgYXJlIGZhciBtb3JlIHByb3BlcnRpZXMgd2UgZG9uJ3QKQEAgLTI4OTQs
NiArMzAzMyw5IEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OlNldENvbmZpZ3VyYXRpb24oY29uc3Qg
UlRDQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwKICAgbW9kaWZpZWRfY29uZmlnLm5ldHdv
cmtfcHJlZmVyZW5jZSA9IGNvbmZpZ3VyYXRpb24ubmV0d29ya19wcmVmZXJlbmNlOwogICBtb2Rp
ZmllZF9jb25maWcuYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zID0KICAgICAgIGNvbmZpZ3VyYXRp
b24uYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zOworICBtb2RpZmllZF9jb25maWcudXNlX21lZGlh
X3RyYW5zcG9ydCA9IGNvbmZpZ3VyYXRpb24udXNlX21lZGlhX3RyYW5zcG9ydDsKKyAgbW9kaWZp
ZWRfY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPQorICAgICAg
Y29uZmlndXJhdGlvbi51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzOwogICBp
ZiAoY29uZmlndXJhdGlvbiAhPSBtb2RpZmllZF9jb25maWcpIHsKICAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiTW9kaWZ5aW5nIHRoZSBjb25maWd1cmF0aW9uIGluIGFuIHVuc3VwcG9ydGVkIHdh
eS4iOwogICAgIHJldHVybiBTYWZlU2V0RXJyb3IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX01PRElG
SUNBVElPTiwgZXJyb3IpOwpAQCAtMjk1MSw2ICszMDkzLDExIEBAIGJvb2wgUGVlckNvbm5lY3Rp
b246OlNldENvbmZpZ3VyYXRpb24oY29uc3QgUlRDQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwKICAgfQogCiAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2V0SWNlQ29uZmlnKFBhcnNlSWNl
Q29uZmlnKG1vZGlmaWVkX2NvbmZpZykpOworICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPlNldE1l
ZGlhVHJhbnNwb3J0RmFjdG9yeSgKKyAgICAgIG1vZGlmaWVkX2NvbmZpZy51c2VfbWVkaWFfdHJh
bnNwb3J0IHx8CisgICAgICAgICAgICAgIG1vZGlmaWVkX2NvbmZpZy51c2VfbWVkaWFfdHJhbnNw
b3J0X2Zvcl9kYXRhX2NoYW5uZWxzCisgICAgICAgICAgPyBmYWN0b3J5Xy0+bWVkaWFfdHJhbnNw
b3J0X2ZhY3RvcnkoKQorICAgICAgICAgIDogbnVsbHB0cik7CiAKICAgaWYgKGNvbmZpZ3VyYXRp
b25fLmFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtcyAhPQogICAgICAgbW9kaWZpZWRfY29uZmlnLmFj
dGl2ZV9yZXNldF9zcnRwX3BhcmFtcykgewpAQCAtMzExOSw3ICszMjY2LDcgQEAgdm9pZCBQZWVy
Q29ubmVjdGlvbjo6U2V0QXVkaW9QbGF5b3V0KGJvb2wgcGxheW91dCkgewogICAgIHJldHVybjsK
ICAgfQogICBhdXRvIGF1ZGlvX3N0YXRlID0KLSAgICAgIGZhY3RvcnlfLT5jaGFubmVsX21hbmFn
ZXIoKS0+bWVkaWFfZW5naW5lKCktPkdldEF1ZGlvU3RhdGUoKTsKKyAgICAgIGZhY3RvcnlfLT5j
aGFubmVsX21hbmFnZXIoKS0+bWVkaWFfZW5naW5lKCktPnZvaWNlKCkuR2V0QXVkaW9TdGF0ZSgp
OwogICBhdWRpb19zdGF0ZS0+U2V0UGxheW91dChwbGF5b3V0KTsKIH0KIApAQCAtMzEzMSw3ICsz
Mjc4LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6U2V0QXVkaW9SZWNvcmRpbmcoYm9vbCByZWNv
cmRpbmcpIHsKICAgICByZXR1cm47CiAgIH0KICAgYXV0byBhdWRpb19zdGF0ZSA9Ci0gICAgICBm
YWN0b3J5Xy0+Y2hhbm5lbF9tYW5hZ2VyKCktPm1lZGlhX2VuZ2luZSgpLT5HZXRBdWRpb1N0YXRl
KCk7CisgICAgICBmYWN0b3J5Xy0+Y2hhbm5lbF9tYW5hZ2VyKCktPm1lZGlhX2VuZ2luZSgpLT52
b2ljZSgpLkdldEF1ZGlvU3RhdGUoKTsKICAgYXVkaW9fc3RhdGUtPlNldFJlY29yZGluZyhyZWNv
cmRpbmcpOwogfQogCkBAIC0zMTQxLDcgKzMyODgsNyBAQCBQZWVyQ29ubmVjdGlvbjo6R2V0UmVt
b3RlQXVkaW9TU0xDZXJ0aWZpY2F0ZSgpIHsKICAgaWYgKCFjaGFpbiB8fCAhY2hhaW4tPkdldFNp
emUoKSkgewogICAgIHJldHVybiBudWxscHRyOwogICB9Ci0gIHJldHVybiBjaGFpbi0+R2V0KDAp
LkdldFVuaXF1ZVJlZmVyZW5jZSgpOworICByZXR1cm4gY2hhaW4tPkdldCgwKS5DbG9uZSgpOwog
fQogCiBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xDZXJ0Q2hhaW4+CkBAIC0zMTcwLDkgKzMzMTcs
MTMgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbjo6U3RhcnRSdGNFdmVudExvZyhydGM6OlBsYXRmb3Jt
RmlsZSBmaWxlLAogICBjb25zdCBzaXplX3QgbWF4X3NpemUgPSAobWF4X3NpemVfYnl0ZXMgPCAw
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBSdGNFdmVudExvZzo6a1VubGltaXRl
ZE91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBydGM6OnNhdHVyYXRlZF9j
YXN0PHNpemVfdD4obWF4X3NpemVfYnl0ZXMpOworICBpbnQ2NF90IG91dHB1dF9wZXJpb2RfbXMg
PSB3ZWJydGM6OlJ0Y0V2ZW50TG9nOjprSW1tZWRpYXRlT3V0cHV0OworICBpZiAoZmllbGRfdHJp
YWw6OklzRW5hYmxlZCgiV2ViUlRDLVJ0Y0V2ZW50TG9nTmV3Rm9ybWF0IikpIHsKKyAgICBvdXRw
dXRfcGVyaW9kX21zID0gNTAwMDsKKyAgfQogICByZXR1cm4gU3RhcnRSdGNFdmVudExvZygKICAg
ICAgIGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nT3V0cHV0RmlsZT4oZmlsZSwgbWF4X3Np
emUpLAotICAgICAgd2VicnRjOjpSdGNFdmVudExvZzo6a0ltbWVkaWF0ZU91dHB1dCk7CisgICAg
ICBvdXRwdXRfcGVyaW9kX21zKTsKIH0KIAogYm9vbCBQZWVyQ29ubmVjdGlvbjo6U3RhcnRSdGNF
dmVudExvZyhzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dPdXRwdXQ+IG91dHB1dCwKQEAgLTMz
NDcsNyArMzQ5OCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkNyZWF0ZUF1ZGlvUmVjZWl2ZXIo
CiAgIC8vIHRoZSBjb25zdHJ1Y3RvciB0YWtpbmcgc3RyZWFtIElEcyBpbnN0ZWFkLgogICBhdXRv
KiBhdWRpb19yZWNlaXZlciA9IG5ldyBBdWRpb1J0cFJlY2VpdmVyKAogICAgICAgd29ya2VyX3Ro
cmVhZCgpLCByZW1vdGVfc2VuZGVyX2luZm8uc2VuZGVyX2lkLCBzdHJlYW1zKTsKLSAgYXVkaW9f
cmVjZWl2ZXItPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWwoKSk7Cisg
IGF1ZGlvX3JlY2VpdmVyLT5TZXRNZWRpYUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbCgpKTsK
ICAgYXVkaW9fcmVjZWl2ZXItPlNldHVwTWVkaWFDaGFubmVsKHJlbW90ZV9zZW5kZXJfaW5mby5m
aXJzdF9zc3JjKTsKICAgYXV0byByZWNlaXZlciA9IFJ0cFJlY2VpdmVyUHJveHlXaXRoSW50ZXJu
YWw8UnRwUmVjZWl2ZXJJbnRlcm5hbD46OkNyZWF0ZSgKICAgICAgIHNpZ25hbGluZ190aHJlYWQo
KSwgYXVkaW9fcmVjZWl2ZXIpOwpAQCAtMzM2NSw3ICszNTE2LDcgQEAgdm9pZCBQZWVyQ29ubmVj
dGlvbjo6Q3JlYXRlVmlkZW9SZWNlaXZlcigKICAgLy8gdGhlIGNvbnN0cnVjdG9yIHRha2luZyBz
dHJlYW0gSURzIGluc3RlYWQuCiAgIGF1dG8qIHZpZGVvX3JlY2VpdmVyID0gbmV3IFZpZGVvUnRw
UmVjZWl2ZXIoCiAgICAgICB3b3JrZXJfdGhyZWFkKCksIHJlbW90ZV9zZW5kZXJfaW5mby5zZW5k
ZXJfaWQsIHN0cmVhbXMpOwotICB2aWRlb19yZWNlaXZlci0+U2V0VmlkZW9NZWRpYUNoYW5uZWwo
dmlkZW9fbWVkaWFfY2hhbm5lbCgpKTsKKyAgdmlkZW9fcmVjZWl2ZXItPlNldE1lZGlhQ2hhbm5l
bCh2aWRlb19tZWRpYV9jaGFubmVsKCkpOwogICB2aWRlb19yZWNlaXZlci0+U2V0dXBNZWRpYUNo
YW5uZWwocmVtb3RlX3NlbmRlcl9pbmZvLmZpcnN0X3NzcmMpOwogICBhdXRvIHJlY2VpdmVyID0g
UnRwUmVjZWl2ZXJQcm94eVdpdGhJbnRlcm5hbDxSdHBSZWNlaXZlckludGVybmFsPjo6Q3JlYXRl
KAogICAgICAgc2lnbmFsaW5nX3RocmVhZCgpLCB2aWRlb19yZWNlaXZlcik7CkBAIC0zNDA4LDcg
KzM1NTksNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpBZGRBdWRpb1RyYWNrKEF1ZGlvVHJhY2tJ
bnRlcmZhY2UqIHRyYWNrLAogICAvLyBOb3JtYWwgY2FzZTsgd2UndmUgbmV2ZXIgc2VlbiB0aGlz
IHRyYWNrIGJlZm9yZS4KICAgYXV0byBuZXdfc2VuZGVyID0gQ3JlYXRlU2VuZGVyKGNyaWNrZXQ6
Ok1FRElBX1RZUEVfQVVESU8sIHRyYWNrLT5pZCgpLCB0cmFjaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHtzdHJlYW0tPmlkKCl9LCB7fSk7Ci0gIG5ld19zZW5kZXItPmludGVy
bmFsKCktPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWwoKSk7CisgIG5l
d19zZW5kZXItPmludGVybmFsKCktPlNldE1lZGlhQ2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVs
KCkpOwogICBHZXRBdWRpb1RyYW5zY2VpdmVyKCktPmludGVybmFsKCktPkFkZFNlbmRlcihuZXdf
c2VuZGVyKTsKICAgLy8gSWYgdGhlIHNlbmRlciBoYXMgYWxyZWFkeSBiZWVuIGNvbmZpZ3VyZWQg
aW4gU0RQLCB3ZSBjYWxsIFNldFNzcmMsCiAgIC8vIHdoaWNoIHdpbGwgY29ubmVjdCB0aGUgc2Vu
ZGVyIHRvIHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydC4gVGhpcyBjYW4KQEAgLTM0NTMsNyArMzYw
NCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkFkZFZpZGVvVHJhY2soVmlkZW9UcmFja0ludGVy
ZmFjZSogdHJhY2ssCiAgIC8vIE5vcm1hbCBjYXNlOyB3ZSd2ZSBuZXZlciBzZWVuIHRoaXMgdHJh
Y2sgYmVmb3JlLgogICBhdXRvIG5ld19zZW5kZXIgPSBDcmVhdGVTZW5kZXIoY3JpY2tldDo6TUVE
SUFfVFlQRV9WSURFTywgdHJhY2stPmlkKCksIHRyYWNrLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge3N0cmVhbS0+aWQoKX0sIHt9KTsKLSAgbmV3X3NlbmRlci0+aW50ZXJuYWwo
KS0+U2V0VmlkZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbCgpKTsKKyAgbmV3X3Nl
bmRlci0+aW50ZXJuYWwoKS0+U2V0TWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWwoKSk7
CiAgIEdldFZpZGVvVHJhbnNjZWl2ZXIoKS0+aW50ZXJuYWwoKS0+QWRkU2VuZGVyKG5ld19zZW5k
ZXIpOwogICBjb25zdCBSdHBTZW5kZXJJbmZvKiBzZW5kZXJfaW5mbyA9CiAgICAgICBGaW5kU2Vu
ZGVySW5mbyhsb2NhbF92aWRlb19zZW5kZXJfaW5mb3NfLCBzdHJlYW0tPmlkKCksIHRyYWNrLT5p
ZCgpKTsKQEAgLTM0OTUsNiArMzY0NiwyOSBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpTZXRJY2VD
b25uZWN0aW9uU3RhdGUoSWNlQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0ZSkgewogICBPYnNlcnZl
cigpLT5PbkljZUNvbm5lY3Rpb25DaGFuZ2UoaWNlX2Nvbm5lY3Rpb25fc3RhdGVfKTsKIH0KIAor
dm9pZCBQZWVyQ29ubmVjdGlvbjo6U2V0U3RhbmRhcmRpemVkSWNlQ29ubmVjdGlvblN0YXRlKAor
ICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRl
KSB7CisgIFJUQ19EQ0hFQ0soc2lnbmFsaW5nX3RocmVhZCgpLT5Jc0N1cnJlbnQoKSk7CisgIGlm
IChzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25fc3RhdGVfID09IG5ld19zdGF0ZSkKKyAgICBy
ZXR1cm47CisgIGlmIChJc0Nsb3NlZCgpKQorICAgIHJldHVybjsKKyAgc3RhbmRhcmRpemVkX2lj
ZV9jb25uZWN0aW9uX3N0YXRlXyA9IG5ld19zdGF0ZTsKKyAgLy8gVE9ETyhqb25hc29sc3Nvbik6
IFBhc3MgdGhpcyB2YWx1ZSBvbiB0byBPbkljZUNvbm5lY3Rpb25DaGFuZ2UgaW5zdGVhZCBvZgor
ICAvLyB0aGUgb2xkIG9uZSBvbmNlIGRpc2Nvbm5lY3RzIGFyZSBoYW5kbGVkIHByb3Blcmx5Lgor
fQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpTZXRDb25uZWN0aW9uU3RhdGUoCisgICAgUGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSB7CisgIFJU
Q19EQ0hFQ0soc2lnbmFsaW5nX3RocmVhZCgpLT5Jc0N1cnJlbnQoKSk7CisgIGlmIChjb25uZWN0
aW9uX3N0YXRlXyA9PSBuZXdfc3RhdGUpCisgICAgcmV0dXJuOworICBpZiAoSXNDbG9zZWQoKSkK
KyAgICByZXR1cm47CisgIGNvbm5lY3Rpb25fc3RhdGVfID0gbmV3X3N0YXRlOworICBPYnNlcnZl
cigpLT5PbkNvbm5lY3Rpb25DaGFuZ2UobmV3X3N0YXRlKTsKK30KKwogdm9pZCBQZWVyQ29ubmVj
dGlvbjo6T25JY2VHYXRoZXJpbmdDaGFuZ2UoCiAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OkljZUdhdGhlcmluZ1N0YXRlIG5ld19zdGF0ZSkgewogICBSVENfRENIRUNLKHNpZ25hbGluZ190
aHJlYWQoKS0+SXNDdXJyZW50KCkpOwpAQCAtMzU0Miw2ICszNzE2LDEwIEBAIHZvaWQgUGVlckNv
bm5lY3Rpb246OkNoYW5nZVNpZ25hbGluZ1N0YXRlKAogICBpZiAoc2lnbmFsaW5nX3N0YXRlID09
IGtDbG9zZWQpIHsKICAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV8gPSBrSWNlQ29ubmVjdGlvbkNs
b3NlZDsKICAgICBPYnNlcnZlcigpLT5PbkljZUNvbm5lY3Rpb25DaGFuZ2UoaWNlX2Nvbm5lY3Rp
b25fc3RhdGVfKTsKKyAgICBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25fc3RhdGVfID0KKyAg
ICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZTo6a0ljZUNv
bm5lY3Rpb25DbG9zZWQ7CisgICAgY29ubmVjdGlvbl9zdGF0ZV8gPSBQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nsb3NlZDsKKyAgICBPYnNlcnZlcigpLT5P
bkNvbm5lY3Rpb25DaGFuZ2UoY29ubmVjdGlvbl9zdGF0ZV8pOwogICAgIGlmIChpY2VfZ2F0aGVy
aW5nX3N0YXRlXyAhPSBrSWNlR2F0aGVyaW5nQ29tcGxldGUpIHsKICAgICAgIGljZV9nYXRoZXJp
bmdfc3RhdGVfID0ga0ljZUdhdGhlcmluZ0NvbXBsZXRlOwogICAgICAgT2JzZXJ2ZXIoKS0+T25J
Y2VHYXRoZXJpbmdDaGFuZ2UoaWNlX2dhdGhlcmluZ19zdGF0ZV8pOwpAQCAtMzY0MSw4ICszODE5
LDE1IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkdldE9wdGlvbnNGb3JPZmZlcigKICAgfQogCiAg
IHNlc3Npb25fb3B0aW9ucy0+cnRjcF9jbmFtZSA9IHJ0Y3BfY25hbWVfOwotICBzZXNzaW9uX29w
dGlvbnMtPmNyeXB0b19vcHRpb25zID0gZmFjdG9yeV8tPm9wdGlvbnMoKS5jcnlwdG9fb3B0aW9u
czsKKyAgc2Vzc2lvbl9vcHRpb25zLT5jcnlwdG9fb3B0aW9ucyA9IEdldENyeXB0b09wdGlvbnMo
KTsKICAgc2Vzc2lvbl9vcHRpb25zLT5pc191bmlmaWVkX3BsYW4gPSBJc1VuaWZpZWRQbGFuKCk7
CisgIHNlc3Npb25fb3B0aW9ucy0+cG9vbGVkX2ljZV9jcmVkZW50aWFscyA9CisgICAgICBuZXR3
b3JrX3RocmVhZCgpLT5JbnZva2U8c3RkOjp2ZWN0b3I8Y3JpY2tldDo6SWNlUGFyYW1ldGVycz4+
KAorICAgICAgICAgIFJUQ19GUk9NX0hFUkUsCisgICAgICAgICAgcnRjOjpCaW5kKCZjcmlja2V0
OjpQb3J0QWxsb2NhdG9yOjpHZXRQb29sZWRJY2VDcmVkZW50aWFscywKKyAgICAgICAgICAgICAg
ICAgICAgcG9ydF9hbGxvY2F0b3JfLmdldCgpKSk7CisgIHNlc3Npb25fb3B0aW9ucy0+b2ZmZXJf
ZXh0bWFwX2FsbG93X21peGVkID0KKyAgICAgIGNvbmZpZ3VyYXRpb25fLm9mZmVyX2V4dG1hcF9h
bGxvd19taXhlZDsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbjo6R2V0T3B0aW9uc0ZvclBsYW5C
T2ZmZXIoCkBAIC0zOTAxLDggKzQwODYsMTMgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6R2V0T3B0
aW9uc0ZvckFuc3dlcigKICAgfQogCiAgIHNlc3Npb25fb3B0aW9ucy0+cnRjcF9jbmFtZSA9IHJ0
Y3BfY25hbWVfOwotICBzZXNzaW9uX29wdGlvbnMtPmNyeXB0b19vcHRpb25zID0gZmFjdG9yeV8t
Pm9wdGlvbnMoKS5jcnlwdG9fb3B0aW9uczsKKyAgc2Vzc2lvbl9vcHRpb25zLT5jcnlwdG9fb3B0
aW9ucyA9IEdldENyeXB0b09wdGlvbnMoKTsKICAgc2Vzc2lvbl9vcHRpb25zLT5pc191bmlmaWVk
X3BsYW4gPSBJc1VuaWZpZWRQbGFuKCk7CisgIHNlc3Npb25fb3B0aW9ucy0+cG9vbGVkX2ljZV9j
cmVkZW50aWFscyA9CisgICAgICBuZXR3b3JrX3RocmVhZCgpLT5JbnZva2U8c3RkOjp2ZWN0b3I8
Y3JpY2tldDo6SWNlUGFyYW1ldGVycz4+KAorICAgICAgICAgIFJUQ19GUk9NX0hFUkUsCisgICAg
ICAgICAgcnRjOjpCaW5kKCZjcmlja2V0OjpQb3J0QWxsb2NhdG9yOjpHZXRQb29sZWRJY2VDcmVk
ZW50aWFscywKKyAgICAgICAgICAgICAgICAgICAgcG9ydF9hbGxvY2F0b3JfLmdldCgpKSk7CiB9
CiAKIHZvaWQgUGVlckNvbm5lY3Rpb246OkdldE9wdGlvbnNGb3JQbGFuQkFuc3dlcigKQEAgLTQw
NjksNiArNDI1OSw4IEBAIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBQZWVyQ29ubmVjdGlv
bjo6R2V0RGF0YU1pZCgpIGNvbnN0IHsKICAgICAgIHJldHVybiBydHBfZGF0YV9jaGFubmVsXy0+
Y29udGVudF9uYW1lKCk7CiAgICAgY2FzZSBjcmlja2V0OjpEQ1RfU0NUUDoKICAgICAgIHJldHVy
biBzY3RwX21pZF87CisgICAgY2FzZSBjcmlja2V0OjpEQ1RfTUVESUFfVFJBTlNQT1JUOgorICAg
ICAgcmV0dXJuIG1lZGlhX3RyYW5zcG9ydF9kYXRhX21pZF87CiAgICAgZGVmYXVsdDoKICAgICAg
IHJldHVybiBhYnNsOjpudWxsb3B0OwogICB9CkBAIC00NDMxLDcgKzQ2MjMsNyBAQCBydGM6OnNj
b3BlZF9yZWZwdHI8RGF0YUNoYW5uZWw+IFBlZXJDb25uZWN0aW9uOjpJbnRlcm5hbENyZWF0ZURh
dGFDaGFubmVsKAogICB9CiAgIEludGVybmFsRGF0YUNoYW5uZWxJbml0IG5ld19jb25maWcgPQog
ICAgICAgY29uZmlnID8gKCpjb25maWcpIDogSW50ZXJuYWxEYXRhQ2hhbm5lbEluaXQoKTsKLSAg
aWYgKGRhdGFfY2hhbm5lbF90eXBlKCkgPT0gY3JpY2tldDo6RENUX1NDVFApIHsKKyAgaWYgKERh
dGFDaGFubmVsOjpJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpIHsKICAgICBpZiAobmV3
X2NvbmZpZy5pZCA8IDApIHsKICAgICAgIHJ0Yzo6U1NMUm9sZSByb2xlOwogICAgICAgaWYgKChH
ZXRTY3RwU3NsUm9sZSgmcm9sZSkpICYmCkBAIC00NDYyLDcgKzQ2NTQsNyBAQCBydGM6OnNjb3Bl
ZF9yZWZwdHI8RGF0YUNoYW5uZWw+IFBlZXJDb25uZWN0aW9uOjpJbnRlcm5hbENyZWF0ZURhdGFD
aGFubmVsKAogICAgIH0KICAgICBydHBfZGF0YV9jaGFubmVsc19bY2hhbm5lbC0+bGFiZWwoKV0g
PSBjaGFubmVsOwogICB9IGVsc2UgewotICAgIFJUQ19EQ0hFQ0soY2hhbm5lbC0+ZGF0YV9jaGFu
bmVsX3R5cGUoKSA9PSBjcmlja2V0OjpEQ1RfU0NUUCk7CisgICAgUlRDX0RDSEVDSyhEYXRhQ2hh
bm5lbDo6SXNTY3RwTGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pKTsKICAgICBzY3RwX2RhdGFfY2hh
bm5lbHNfLnB1c2hfYmFjayhjaGFubmVsKTsKICAgICBjaGFubmVsLT5TaWduYWxDbG9zZWQuY29u
bmVjdCh0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQZWVyQ29ubmVj
dGlvbjo6T25TY3RwRGF0YUNoYW5uZWxDbG9zZWQpOwpAQCAtNDU0Miw2ICs0NzM0LDI3IEBAIHZv
aWQgUGVlckNvbm5lY3Rpb246Ok9uRGF0YUNoYW5uZWxPcGVuTWVzc2FnZSgKICAgTm90ZVVzYWdl
RXZlbnQoVXNhZ2VFdmVudDo6REFUQV9BRERFRCk7CiB9CiAKK2Jvb2wgUGVlckNvbm5lY3Rpb246
OkhhbmRsZU9wZW5NZXNzYWdlX3MoCisgICAgY29uc3QgY3JpY2tldDo6UmVjZWl2ZURhdGFQYXJh
bXMmIHBhcmFtcywKKyAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIpIHsK
KyAgaWYgKHBhcmFtcy50eXBlID09IGNyaWNrZXQ6OkRNVF9DT05UUk9MICYmIElzT3Blbk1lc3Nh
Z2UoYnVmZmVyKSkgeworICAgIC8vIFJlY2VpdmVkIE9QRU4gbWVzc2FnZTsgcGFyc2UgYW5kIHNp
Z25hbCB0aGF0IGEgbmV3IGRhdGEgY2hhbm5lbCBzaG91bGQKKyAgICAvLyBiZSBjcmVhdGVkLgor
ICAgIHN0ZDo6c3RyaW5nIGxhYmVsOworICAgIEludGVybmFsRGF0YUNoYW5uZWxJbml0IGNvbmZp
ZzsKKyAgICBjb25maWcuaWQgPSBwYXJhbXMuc3NyYzsKKyAgICBpZiAoIVBhcnNlRGF0YUNoYW5u
ZWxPcGVuTWVzc2FnZShidWZmZXIsICZsYWJlbCwgJmNvbmZpZykpIHsKKyAgICAgIFJUQ19MT0co
TFNfV0FSTklORykgPDwgIkZhaWxlZCB0byBwYXJzZSB0aGUgT1BFTiBtZXNzYWdlIGZvciBzc3Jj
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcGFyYW1zLnNzcmM7CisgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgY29uZmlnLm9wZW5faGFuZHNoYWtlX3JvbGUgPSBJbnRlcm5h
bERhdGFDaGFubmVsSW5pdDo6a0Fja2VyOworICAgIE9uRGF0YUNoYW5uZWxPcGVuTWVzc2FnZShs
YWJlbCwgY29uZmlnKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1cm4gZmFsc2U7Cit9
CisKIHJ0Yzo6c2NvcGVkX3JlZnB0cjxSdHBUcmFuc2NlaXZlclByb3h5V2l0aEludGVybmFsPFJ0
cFRyYW5zY2VpdmVyPj4KIFBlZXJDb25uZWN0aW9uOjpHZXRBdWRpb1RyYW5zY2VpdmVyKCkgY29u
c3QgewogICAvLyBUaGlzIG1ldGhvZCBvbmx5IHdvcmtzIHdpdGggUGxhbiBCIFNEUCwgd2hlcmUg
dGhlcmUgaXMgYSBzaW5nbGUKQEAgLTQ3NjksMTAgKzQ5ODIsMTAgQEAgdm9pZCBQZWVyQ29ubmVj
dGlvbjo6U3RvcFJ0Y0V2ZW50TG9nX3coKSB7CiAgIH0KIH0KIAotY3JpY2tldDo6QmFzZUNoYW5u
ZWwqIFBlZXJDb25uZWN0aW9uOjpHZXRDaGFubmVsKAorY3JpY2tldDo6Q2hhbm5lbEludGVyZmFj
ZSogUGVlckNvbm5lY3Rpb246OkdldENoYW5uZWwoCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNv
bnRlbnRfbmFtZSkgewogICBmb3IgKGF1dG8gdHJhbnNjZWl2ZXIgOiB0cmFuc2NlaXZlcnNfKSB7
Ci0gICAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJu
YWwoKS0+Y2hhbm5lbCgpOworICAgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwg
PSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOwogICAgIGlmIChjaGFubmVsICYm
IGNoYW5uZWwtPmNvbnRlbnRfbmFtZSgpID09IGNvbnRlbnRfbmFtZSkgewogICAgICAgcmV0dXJu
IGNoYW5uZWw7CiAgICAgfQpAQCAtNDc4NSwxOSArNDk5OCwyNSBAQCBjcmlja2V0OjpCYXNlQ2hh
bm5lbCogUGVlckNvbm5lY3Rpb246OkdldENoYW5uZWwoCiB9CiAKIGJvb2wgUGVlckNvbm5lY3Rp
b246OkdldFNjdHBTc2xSb2xlKHJ0Yzo6U1NMUm9sZSogcm9sZSkgeworICBSVENfRENIRUNLX1JV
Tl9PTihzaWduYWxpbmdfdGhyZWFkKCkpOwogICBpZiAoIWxvY2FsX2Rlc2NyaXB0aW9uKCkgfHwg
IXJlbW90ZV9kZXNjcmlwdGlvbigpKSB7CiAgICAgUlRDX0xPRyhMU19JTkZPKQogICAgICAgICA8
PCAiTG9jYWwgYW5kIFJlbW90ZSBkZXNjcmlwdGlvbnMgbXVzdCBiZSBhcHBsaWVkIHRvIGdldCB0
aGUgIgogICAgICAgICAgICAiU1NMIFJvbGUgb2YgdGhlIFNDVFAgdHJhbnNwb3J0LiI7CiAgICAg
cmV0dXJuIGZhbHNlOwogICB9Ci0gIGlmICghc2N0cF90cmFuc3BvcnRfKSB7CisgIGlmICghc2N0
cF90cmFuc3BvcnRfICYmICFtZWRpYV90cmFuc3BvcnRfKSB7CiAgICAgUlRDX0xPRyhMU19JTkZP
KSA8PCAiTm9uLXJlamVjdGVkIFNDVFAgbT0gc2VjdGlvbiBpcyBuZWVkZWQgdG8gZ2V0IHRoZSAi
CiAgICAgICAgICAgICAgICAgICAgICAgICAiU1NMIFJvbGUgb2YgdGhlIFNDVFAgdHJhbnNwb3J0
LiI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKLSAgYXV0byBkdGxzX3JvbGUgPSB0cmFuc3Bv
cnRfY29udHJvbGxlcl8tPkdldER0bHNSb2xlKCpzY3RwX21pZF8pOworICBhYnNsOjpvcHRpb25h
bDxydGM6OlNTTFJvbGU+IGR0bHNfcm9sZTsKKyAgaWYgKHNjdHBfbWlkXykgeworICAgIGR0bHNf
cm9sZSA9IHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0RHRsc1JvbGUoKnNjdHBfbWlkXyk7Cisg
IH0gZWxzZSBpZiAoaXNfY2FsbGVyXykgeworICAgIGR0bHNfcm9sZSA9ICppc19jYWxsZXJfID8g
cnRjOjpTU0xfU0VSVkVSIDogcnRjOjpTU0xfQ0xJRU5UOworICB9CiAgIGlmIChkdGxzX3JvbGUp
IHsKICAgICAqcm9sZSA9ICpkdGxzX3JvbGU7CiAgICAgcmV0dXJuIHRydWU7CkBAIC00ODgzLDcg
KzUxMDIsNyBAQCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbjo6UHVzaGRvd25NZWRpYURlc2NyaXB0
aW9uKAogICBmb3IgKGF1dG8gdHJhbnNjZWl2ZXIgOiB0cmFuc2NlaXZlcnNfKSB7CiAgICAgY29u
c3QgQ29udGVudEluZm8qIGNvbnRlbnRfaW5mbyA9CiAgICAgICAgIEZpbmRNZWRpYVNlY3Rpb25G
b3JUcmFuc2NlaXZlcih0cmFuc2NlaXZlciwgc2Rlc2MpOwotICAgIGNyaWNrZXQ6OkJhc2VDaGFu
bmVsKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNoYW5uZWwoKTsKKyAgICBj
cmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFs
KCktPmNoYW5uZWwoKTsKICAgICBpZiAoIWNoYW5uZWwgfHwgIWNvbnRlbnRfaW5mbyB8fCBjb250
ZW50X2luZm8tPnJlamVjdGVkKSB7CiAgICAgICBjb250aW51ZTsKICAgICB9CkBAIC01MDQzLDEx
ICs1MjYyLDIyIEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OkdldFJlbW90ZVRyYWNrSWRCeVNzcmMo
dWludDMyX3Qgc3NyYywKIGJvb2wgUGVlckNvbm5lY3Rpb246OlNlbmREYXRhKGNvbnN0IGNyaWNr
ZXQ6OlNlbmREYXRhUGFyYW1zJiBwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBwYXlsb2FkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JpY2tldDo6U2VuZERhdGFSZXN1bHQqIHJlc3VsdCkgewotICBpZiAo
IXJ0cF9kYXRhX2NoYW5uZWxfICYmICFzY3RwX3RyYW5zcG9ydF8pIHsKLSAgICBSVENfTE9HKExT
X0VSUk9SKSA8PCAiU2VuZERhdGEgY2FsbGVkIHdoZW4gcnRwX2RhdGFfY2hhbm5lbF8gIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICJhbmQgc2N0cF90cmFuc3BvcnRfIGFyZSBOVUxMLiI7Cisg
IGlmICghcnRwX2RhdGFfY2hhbm5lbF8gJiYgIXNjdHBfdHJhbnNwb3J0XyAmJiAhbWVkaWFfdHJh
bnNwb3J0XykgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJTZW5kRGF0YSBjYWxsZWQgd2hl
biBydHBfZGF0YV9jaGFubmVsXywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJzY3RwX3Ry
YW5zcG9ydF8sIGFuZCBtZWRpYV90cmFuc3BvcnRfIGFyZSBOVUxMLiI7CiAgICAgcmV0dXJuIGZh
bHNlOwogICB9CisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgU2VuZERhdGFQYXJhbXMg
c2VuZF9wYXJhbXM7CisgICAgc2VuZF9wYXJhbXMudHlwZSA9IFRvV2VicnRjRGF0YU1lc3NhZ2VU
eXBlKHBhcmFtcy50eXBlKTsKKyAgICBzZW5kX3BhcmFtcy5vcmRlcmVkID0gcGFyYW1zLm9yZGVy
ZWQ7CisgICAgaWYgKHBhcmFtcy5tYXhfcnR4X2NvdW50ID49IDApIHsKKyAgICAgIHNlbmRfcGFy
YW1zLm1heF9ydHhfY291bnQgPSBwYXJhbXMubWF4X3J0eF9jb3VudDsKKyAgICB9IGVsc2UgaWYg
KHBhcmFtcy5tYXhfcnR4X21zID49IDApIHsKKyAgICAgIHNlbmRfcGFyYW1zLm1heF9ydHhfbXMg
PSBwYXJhbXMubWF4X3J0eF9tczsKKyAgICB9CisgICAgcmV0dXJuIG1lZGlhX3RyYW5zcG9ydF8t
PlNlbmREYXRhKHBhcmFtcy5zaWQsIHNlbmRfcGFyYW1zLCBwYXlsb2FkKS5vaygpOworICB9CiAg
IHJldHVybiBydHBfZGF0YV9jaGFubmVsXwogICAgICAgICAgICAgID8gcnRwX2RhdGFfY2hhbm5l
bF8tPlNlbmREYXRhKHBhcmFtcywgcGF5bG9hZCwgcmVzdWx0KQogICAgICAgICAgICAgIDogbmV0
d29ya190aHJlYWQoKS0+SW52b2tlPGJvb2w+KApAQCAtNTA1NywxMyArNTI4NywyMyBAQCBib29s
IFBlZXJDb25uZWN0aW9uOjpTZW5kRGF0YShjb25zdCBjcmlja2V0OjpTZW5kRGF0YVBhcmFtcyYg
cGFyYW1zLAogfQogCiBib29sIFBlZXJDb25uZWN0aW9uOjpDb25uZWN0RGF0YUNoYW5uZWwoRGF0
YUNoYW5uZWwqIHdlYnJ0Y19kYXRhX2NoYW5uZWwpIHsKLSAgaWYgKCFydHBfZGF0YV9jaGFubmVs
XyAmJiAhc2N0cF90cmFuc3BvcnRfKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190
aHJlYWQoKSk7CisgIGlmICghcnRwX2RhdGFfY2hhbm5lbF8gJiYgIXNjdHBfdHJhbnNwb3J0XyAm
JiAhbWVkaWFfdHJhbnNwb3J0XykgewogICAgIC8vIERvbid0IGxvZyBhbiBlcnJvciBoZXJlLCBi
ZWNhdXNlIERhdGFDaGFubmVscyBhcmUgZXhwZWN0ZWQgdG8gY2FsbAogICAgIC8vIENvbm5lY3RE
YXRhQ2hhbm5lbCBpbiB0aGlzIHN0YXRlLiBJdCdzIHRoZSBvbmx5IHdheSB0byBpbml0aWFsbHkg
dGVsbAogICAgIC8vIHdoZXRoZXIgb3Igbm90IHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydCBpcyBy
ZWFkeS4KICAgICByZXR1cm4gZmFsc2U7CiAgIH0KLSAgaWYgKHJ0cF9kYXRhX2NoYW5uZWxfKSB7
CisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRXcml0
YWJsZV9zLmNvbm5lY3Qod2VicnRjX2RhdGFfY2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmRGF0YUNoYW5uZWw6Ok9uQ2hhbm5lbFJlYWR5KTsKKyAg
ICBTaWduYWxNZWRpYVRyYW5zcG9ydFJlY2VpdmVkRGF0YV9zLmNvbm5lY3Qod2VicnRjX2RhdGFf
Y2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JkRhdGFDaGFubmVsOjpPbkRhdGFSZWNlaXZlZCk7CisgICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRD
aGFubmVsQ2xvc2luZ19zLmNvbm5lY3QoCisgICAgICAgIHdlYnJ0Y19kYXRhX2NoYW5uZWwsICZE
YXRhQ2hhbm5lbDo6T25DbG9zaW5nUHJvY2VkdXJlU3RhcnRlZFJlbW90ZWx5KTsKKyAgICBTaWdu
YWxNZWRpYVRyYW5zcG9ydENoYW5uZWxDbG9zZWRfcy5jb25uZWN0KAorICAgICAgICB3ZWJydGNf
ZGF0YV9jaGFubmVsLCAmRGF0YUNoYW5uZWw6Ok9uQ2xvc2luZ1Byb2NlZHVyZUNvbXBsZXRlKTsK
KyAgfSBlbHNlIGlmIChydHBfZGF0YV9jaGFubmVsXykgewogICAgIHJ0cF9kYXRhX2NoYW5uZWxf
LT5TaWduYWxSZWFkeVRvU2VuZERhdGEuY29ubmVjdCgKICAgICAgICAgd2VicnRjX2RhdGFfY2hh
bm5lbCwgJkRhdGFDaGFubmVsOjpPbkNoYW5uZWxSZWFkeSk7CiAgICAgcnRwX2RhdGFfY2hhbm5l
bF8tPlNpZ25hbERhdGFSZWNlaXZlZC5jb25uZWN0KHdlYnJ0Y19kYXRhX2NoYW5uZWwsCkBAIC01
MDgyLDEzICs1MzIyLDE5IEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OkNvbm5lY3REYXRhQ2hhbm5l
bChEYXRhQ2hhbm5lbCogd2VicnRjX2RhdGFfY2hhbm5lbCkgewogfQogCiB2b2lkIFBlZXJDb25u
ZWN0aW9uOjpEaXNjb25uZWN0RGF0YUNoYW5uZWwoRGF0YUNoYW5uZWwqIHdlYnJ0Y19kYXRhX2No
YW5uZWwpIHsKLSAgaWYgKCFydHBfZGF0YV9jaGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRfKSB7
CisgIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWQoKSk7CisgIGlmICghcnRwX2Rh
dGFfY2hhbm5lbF8gJiYgIXNjdHBfdHJhbnNwb3J0XyAmJiAhbWVkaWFfdHJhbnNwb3J0Xykgewog
ICAgIFJUQ19MT0coTFNfRVJST1IpCiAgICAgICAgIDw8ICJEaXNjb25uZWN0RGF0YUNoYW5uZWwg
Y2FsbGVkIHdoZW4gcnRwX2RhdGFfY2hhbm5lbF8gYW5kICIKICAgICAgICAgICAgInNjdHBfdHJh
bnNwb3J0XyBhcmUgTlVMTC4iOwogICAgIHJldHVybjsKICAgfQotICBpZiAocnRwX2RhdGFfY2hh
bm5lbF8pIHsKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBTaWduYWxNZWRpYVRyYW5z
cG9ydFdyaXRhYmxlX3MuZGlzY29ubmVjdCh3ZWJydGNfZGF0YV9jaGFubmVsKTsKKyAgICBTaWdu
YWxNZWRpYVRyYW5zcG9ydFJlY2VpdmVkRGF0YV9zLmRpc2Nvbm5lY3Qod2VicnRjX2RhdGFfY2hh
bm5lbCk7CisgICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRDaGFubmVsQ2xvc2luZ19zLmRpc2Nvbm5l
Y3Qod2VicnRjX2RhdGFfY2hhbm5lbCk7CisgICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRDaGFubmVs
Q2xvc2VkX3MuZGlzY29ubmVjdCh3ZWJydGNfZGF0YV9jaGFubmVsKTsKKyAgfSBlbHNlIGlmIChy
dHBfZGF0YV9jaGFubmVsXykgewogICAgIHJ0cF9kYXRhX2NoYW5uZWxfLT5TaWduYWxSZWFkeVRv
U2VuZERhdGEuZGlzY29ubmVjdCh3ZWJydGNfZGF0YV9jaGFubmVsKTsKICAgICBydHBfZGF0YV9j
aGFubmVsXy0+U2lnbmFsRGF0YVJlY2VpdmVkLmRpc2Nvbm5lY3Qod2VicnRjX2RhdGFfY2hhbm5l
bCk7CiAgIH0gZWxzZSB7CkBAIC01MTAwLDYgKzUzNDYsMTAgQEAgdm9pZCBQZWVyQ29ubmVjdGlv
bjo6RGlzY29ubmVjdERhdGFDaGFubmVsKERhdGFDaGFubmVsKiB3ZWJydGNfZGF0YV9jaGFubmVs
KSB7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb246OkFkZFNjdHBEYXRhU3RyZWFtKGludCBzaWQp
IHsKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICAvLyBOby1vcC4gIE1lZGlhIHRyYW5z
cG9ydCBkb2VzIG5vdCBuZWVkIHRvIGFkZCBzdHJlYW1zLgorICAgIHJldHVybjsKKyAgfQogICBp
ZiAoIXNjdHBfdHJhbnNwb3J0XykgewogICAgIFJUQ19MT0coTFNfRVJST1IpCiAgICAgICAgIDw8
ICJBZGRTY3RwRGF0YVN0cmVhbSBjYWxsZWQgd2hlbiBzY3RwX3RyYW5zcG9ydF8gaXMgTlVMTC4i
OwpAQCAtNTExMSw2ICs1MzYxLDEwIEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkFkZFNjdHBEYXRh
U3RyZWFtKGludCBzaWQpIHsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbjo6UmVtb3ZlU2N0cERh
dGFTdHJlYW0oaW50IHNpZCkgeworICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIG1lZGlh
X3RyYW5zcG9ydF8tPkNsb3NlQ2hhbm5lbChzaWQpOworICAgIHJldHVybjsKKyAgfQogICBpZiAo
IXNjdHBfdHJhbnNwb3J0XykgewogICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJSZW1vdmVTY3Rw
RGF0YVN0cmVhbSBjYWxsZWQgd2hlbiBzY3RwX3RyYW5zcG9ydF8gaXMgIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICJOVUxMLiI7CkBAIC01MTIyLDEwICs1Mzc2LDQzIEBAIHZvaWQgUGVlckNv
bm5lY3Rpb246OlJlbW92ZVNjdHBEYXRhU3RyZWFtKGludCBzaWQpIHsKIH0KIAogYm9vbCBQZWVy
Q29ubmVjdGlvbjo6UmVhZHlUb1NlbmREYXRhKCkgY29uc3QgeworICBSVENfRENIRUNLX1JVTl9P
TihzaWduYWxpbmdfdGhyZWFkKCkpOwogICByZXR1cm4gKHJ0cF9kYXRhX2NoYW5uZWxfICYmIHJ0
cF9kYXRhX2NoYW5uZWxfLT5yZWFkeV90b19zZW5kX2RhdGEoKSkgfHwKKyAgICAgICAgIChtZWRp
YV90cmFuc3BvcnRfICYmIG1lZGlhX3RyYW5zcG9ydF9yZWFkeV90b19zZW5kX2RhdGFfKSB8fAog
ICAgICAgICAgc2N0cF9yZWFkeV90b19zZW5kX2RhdGFfOwogfQogCit2b2lkIFBlZXJDb25uZWN0
aW9uOjpPbkRhdGFSZWNlaXZlZChpbnQgY2hhbm5lbF9pZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERhdGFNZXNzYWdlVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgYnVmZmVyKSB7
CisgIGNyaWNrZXQ6OlJlY2VpdmVEYXRhUGFyYW1zIHBhcmFtczsKKyAgcGFyYW1zLnNpZCA9IGNo
YW5uZWxfaWQ7CisgIHBhcmFtcy50eXBlID0gVG9Dcmlja2V0RGF0YU1lc3NhZ2VUeXBlKHR5cGUp
OworICBtZWRpYV90cmFuc3BvcnRfaW52b2tlcl8tPkFzeW5jSW52b2tlPHZvaWQ+KAorICAgICAg
UlRDX0ZST01fSEVSRSwgc2lnbmFsaW5nX3RocmVhZCgpLCBbdGhpcywgcGFyYW1zLCBidWZmZXJd
IHsKKyAgICAgICAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZCgpKTsKKyAgICAg
ICAgaWYgKCFIYW5kbGVPcGVuTWVzc2FnZV9zKHBhcmFtcywgYnVmZmVyKSkgeworICAgICAgICAg
IFNpZ25hbE1lZGlhVHJhbnNwb3J0UmVjZWl2ZWREYXRhX3MocGFyYW1zLCBidWZmZXIpOworICAg
ICAgICB9CisgICAgICB9KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6T25DaGFubmVsQ2xv
c2luZyhpbnQgY2hhbm5lbF9pZCkgeworICBtZWRpYV90cmFuc3BvcnRfaW52b2tlcl8tPkFzeW5j
SW52b2tlPHZvaWQ+KAorICAgICAgUlRDX0ZST01fSEVSRSwgc2lnbmFsaW5nX3RocmVhZCgpLCBb
dGhpcywgY2hhbm5lbF9pZF0geworICAgICAgICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdf
dGhyZWFkKCkpOworICAgICAgICBTaWduYWxNZWRpYVRyYW5zcG9ydENoYW5uZWxDbG9zaW5nX3Mo
Y2hhbm5lbF9pZCk7CisgICAgICB9KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6T25DaGFu
bmVsQ2xvc2VkKGludCBjaGFubmVsX2lkKSB7CisgIG1lZGlhX3RyYW5zcG9ydF9pbnZva2VyXy0+
QXN5bmNJbnZva2U8dm9pZD4oCisgICAgICBSVENfRlJPTV9IRVJFLCBzaWduYWxpbmdfdGhyZWFk
KCksIFt0aGlzLCBjaGFubmVsX2lkXSB7CisgICAgICAgIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25h
bGluZ190aHJlYWQoKSk7CisgICAgICAgIFNpZ25hbE1lZGlhVHJhbnNwb3J0Q2hhbm5lbENsb3Nl
ZF9zKGNoYW5uZWxfaWQpOworICAgICAgfSk7Cit9CisKIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3Ry
aW5nPiBQZWVyQ29ubmVjdGlvbjo6c2N0cF90cmFuc3BvcnRfbmFtZSgpIGNvbnN0IHsKICAgaWYg
KHNjdHBfbWlkXyAmJiB0cmFuc3BvcnRfY29udHJvbGxlcl8pIHsKICAgICBhdXRvIGR0bHNfdHJh
bnNwb3J0ID0gdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXREdGxzVHJhbnNwb3J0KCpzY3RwX21p
ZF8pOwpAQCAtNTE1MCw3ICs1NDM3LDcgQEAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3Ry
aW5nPiBQZWVyQ29ubmVjdGlvbjo6R2V0VHJhbnNwb3J0TmFtZXNCeU1pZCgpCiAgICAgY29uc3Qg
ewogICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IHRyYW5zcG9ydF9uYW1lc19i
eV9taWQ7CiAgIGZvciAoYXV0byB0cmFuc2NlaXZlciA6IHRyYW5zY2VpdmVyc18pIHsKLSAgICBj
cmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5j
aGFubmVsKCk7CisgICAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbCA9IHRyYW5z
Y2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCk7CiAgICAgaWYgKGNoYW5uZWwpIHsKICAgICAg
IHRyYW5zcG9ydF9uYW1lc19ieV9taWRbY2hhbm5lbC0+Y29udGVudF9uYW1lKCldID0KICAgICAg
ICAgICBjaGFubmVsLT50cmFuc3BvcnRfbmFtZSgpOwpAQCAtNTMyNyw3ICs1NjE0LDcgQEAgdm9p
ZCBQZWVyQ29ubmVjdGlvbjo6T25UcmFuc3BvcnRDb250cm9sbGVyRHRsc0hhbmRzaGFrZUVycm9y
KAogCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpFbmFibGVTZW5kaW5nKCkgewogICBmb3IgKGF1dG8g
dHJhbnNjZWl2ZXIgOiB0cmFuc2NlaXZlcnNfKSB7Ci0gICAgY3JpY2tldDo6QmFzZUNoYW5uZWwq
IGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOworICAgIGNyaWNr
ZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+
Y2hhbm5lbCgpOwogICAgIGlmIChjaGFubmVsICYmICFjaGFubmVsLT5lbmFibGVkKCkpIHsKICAg
ICAgIGNoYW5uZWwtPkVuYWJsZSh0cnVlKTsKICAgICB9CkBAIC01NDg2LDcgKzU3NzMsNyBAQCBS
VENFcnJvciBQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlQ2hhbm5lbHMoY29uc3QgU2Vzc2lvbkRlc2Ny
aXB0aW9uJiBkZXNjKSB7CiAKICAgY29uc3QgY3JpY2tldDo6Q29udGVudEluZm8qIGRhdGEgPSBj
cmlja2V0OjpHZXRGaXJzdERhdGFDb250ZW50KCZkZXNjKTsKICAgaWYgKGRhdGFfY2hhbm5lbF90
eXBlXyAhPSBjcmlja2V0OjpEQ1RfTk9ORSAmJiBkYXRhICYmICFkYXRhLT5yZWplY3RlZCAmJgot
ICAgICAgIXJ0cF9kYXRhX2NoYW5uZWxfICYmICFzY3RwX3RyYW5zcG9ydF8pIHsKKyAgICAgICFy
dHBfZGF0YV9jaGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRfICYmICFtZWRpYV90cmFuc3BvcnRf
KSB7CiAgICAgaWYgKCFDcmVhdGVEYXRhQ2hhbm5lbChkYXRhLT5uYW1lKSkgewogICAgICAgTE9H
X0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGRhdGEgY2hhbm5lbC4iKTsKQEAg
LTU0OTksMTMgKzU3ODYsMTYgQEAgUlRDRXJyb3IgUGVlckNvbm5lY3Rpb246OkNyZWF0ZUNoYW5u
ZWxzKGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiYgZGVzYykgewogLy8gVE9ETyhzdGV2ZWFudG9u
KTogUGVyaGFwcyB0aGlzIHNob3VsZCBiZSBtYW5hZ2VkIGJ5IHRoZSBSdHBUcmFuc2NlaXZlci4K
IGNyaWNrZXQ6OlZvaWNlQ2hhbm5lbCogUGVlckNvbm5lY3Rpb246OkNyZWF0ZVZvaWNlQ2hhbm5l
bCgKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlkKSB7Ci0gIFJ0cFRyYW5zcG9ydEludGVybmFs
KiBydHBfdHJhbnNwb3J0ID0KLSAgICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0UnRwVHJh
bnNwb3J0KG1pZCk7Ci0gIFJUQ19EQ0hFQ0socnRwX3RyYW5zcG9ydCk7CisgIFJ0cFRyYW5zcG9y
dEludGVybmFsKiBydHBfdHJhbnNwb3J0ID0gR2V0UnRwVHJhbnNwb3J0KG1pZCk7CisgIE1lZGlh
VHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQgPSBudWxscHRyOworICBpZiAoY29u
ZmlndXJhdGlvbl8udXNlX21lZGlhX3RyYW5zcG9ydCkgeworICAgIG1lZGlhX3RyYW5zcG9ydCA9
IEdldE1lZGlhVHJhbnNwb3J0KG1pZCk7CisgIH0KKwogICBjcmlja2V0OjpWb2ljZUNoYW5uZWwq
IHZvaWNlX2NoYW5uZWwgPSBjaGFubmVsX21hbmFnZXIoKS0+Q3JlYXRlVm9pY2VDaGFubmVsKAot
ICAgICAgY2FsbF8uZ2V0KCksIGNvbmZpZ3VyYXRpb25fLm1lZGlhX2NvbmZpZywgcnRwX3RyYW5z
cG9ydCwKLSAgICAgIHNpZ25hbGluZ190aHJlYWQoKSwgbWlkLCBTcnRwUmVxdWlyZWQoKSwKLSAg
ICAgIGZhY3RvcnlfLT5vcHRpb25zKCkuY3J5cHRvX29wdGlvbnMsIGF1ZGlvX29wdGlvbnNfKTsK
KyAgICAgIGNhbGxfLmdldCgpLCBjb25maWd1cmF0aW9uXy5tZWRpYV9jb25maWcsIHJ0cF90cmFu
c3BvcnQsIG1lZGlhX3RyYW5zcG9ydCwKKyAgICAgIHNpZ25hbGluZ190aHJlYWQoKSwgbWlkLCBT
cnRwUmVxdWlyZWQoKSwgR2V0Q3J5cHRvT3B0aW9ucygpLAorICAgICAgYXVkaW9fb3B0aW9uc18p
OwogICBpZiAoIXZvaWNlX2NoYW5uZWwpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQpAQCAt
NTUyMSwxMyArNTgxMSwxMyBAQCBjcmlja2V0OjpWb2ljZUNoYW5uZWwqIFBlZXJDb25uZWN0aW9u
OjpDcmVhdGVWb2ljZUNoYW5uZWwoCiAvLyBUT0RPKHN0ZXZlYW50b24pOiBQZXJoYXBzIHRoaXMg
c2hvdWxkIGJlIG1hbmFnZWQgYnkgdGhlIFJ0cFRyYW5zY2VpdmVyLgogY3JpY2tldDo6VmlkZW9D
aGFubmVsKiBQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlVmlkZW9DaGFubmVsKAogICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBtaWQpIHsKLSAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQg
PQotICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRSdHBUcmFuc3BvcnQobWlkKTsKLSAg
UlRDX0RDSEVDSyhydHBfdHJhbnNwb3J0KTsKKyAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90
cmFuc3BvcnQgPSBHZXRSdHBUcmFuc3BvcnQobWlkKTsKKworICAvLyBUT0RPKHN1a2hhbm92KTog
UHJvcGFnYXRlIG1lZGlhX3RyYW5zcG9ydCB0byB2aWRlbyBjaGFubmVsLgogICBjcmlja2V0OjpW
aWRlb0NoYW5uZWwqIHZpZGVvX2NoYW5uZWwgPSBjaGFubmVsX21hbmFnZXIoKS0+Q3JlYXRlVmlk
ZW9DaGFubmVsKAogICAgICAgY2FsbF8uZ2V0KCksIGNvbmZpZ3VyYXRpb25fLm1lZGlhX2NvbmZp
ZywgcnRwX3RyYW5zcG9ydCwKLSAgICAgIHNpZ25hbGluZ190aHJlYWQoKSwgbWlkLCBTcnRwUmVx
dWlyZWQoKSwKLSAgICAgIGZhY3RvcnlfLT5vcHRpb25zKCkuY3J5cHRvX29wdGlvbnMsIHZpZGVv
X29wdGlvbnNfKTsKKyAgICAgIHNpZ25hbGluZ190aHJlYWQoKSwgbWlkLCBTcnRwUmVxdWlyZWQo
KSwgR2V0Q3J5cHRvT3B0aW9ucygpLAorICAgICAgdmlkZW9fb3B0aW9uc18pOwogICBpZiAoIXZp
ZGVvX2NoYW5uZWwpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQpAQCAtNTU0MSwzNyArNTgz
MSw0OSBAQCBjcmlja2V0OjpWaWRlb0NoYW5uZWwqIFBlZXJDb25uZWN0aW9uOjpDcmVhdGVWaWRl
b0NoYW5uZWwoCiB9CiAKIGJvb2wgUGVlckNvbm5lY3Rpb246OkNyZWF0ZURhdGFDaGFubmVsKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtaWQpIHsKLSAgYm9vbCBzY3RwID0gKGRhdGFfY2hhbm5lbF90eXBl
XyA9PSBjcmlja2V0OjpEQ1RfU0NUUCk7Ci0gIGlmIChzY3RwKSB7Ci0gICAgaWYgKCFzY3RwX2Zh
Y3RvcnlfKSB7Ci0gICAgICBSVENfTE9HKExTX0VSUk9SKQotICAgICAgICAgIDw8ICJUcnlpbmcg
dG8gY3JlYXRlIFNDVFAgdHJhbnNwb3J0LCBidXQgZGlkbid0IGNvbXBpbGUgd2l0aCAiCi0gICAg
ICAgICAgICAgIlNDVFAgc3VwcG9ydCAoSEFWRV9TQ1RQKSI7Ci0gICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIGlmICghbmV0d29ya190aHJlYWQoKS0+SW52b2tlPGJvb2w+KAotICAgICAg
ICAgICAgUlRDX0ZST01fSEVSRSwKLSAgICAgICAgICAgIHJ0Yzo6QmluZCgmUGVlckNvbm5lY3Rp
b246OkNyZWF0ZVNjdHBUcmFuc3BvcnRfbiwgdGhpcywgbWlkKSkpIHsKLSAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjaGFubmVsIDogc2N0cF9kYXRhX2No
YW5uZWxzXykgewotICAgICAgY2hhbm5lbC0+T25UcmFuc3BvcnRDaGFubmVsQ3JlYXRlZCgpOwot
ICAgIH0KLSAgfSBlbHNlIHsKLSAgICBSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9y
dCA9Ci0gICAgICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0UnRwVHJhbnNwb3J0KG1pZCk7
Ci0gICAgUlRDX0RDSEVDSyhydHBfdHJhbnNwb3J0KTsKLSAgICBydHBfZGF0YV9jaGFubmVsXyA9
IGNoYW5uZWxfbWFuYWdlcigpLT5DcmVhdGVSdHBEYXRhQ2hhbm5lbCgKLSAgICAgICAgY29uZmln
dXJhdGlvbl8ubWVkaWFfY29uZmlnLCBydHBfdHJhbnNwb3J0LCBzaWduYWxpbmdfdGhyZWFkKCks
IG1pZCwKLSAgICAgICAgU3J0cFJlcXVpcmVkKCksIGZhY3RvcnlfLT5vcHRpb25zKCkuY3J5cHRv
X29wdGlvbnMpOwotICAgIGlmICghcnRwX2RhdGFfY2hhbm5lbF8pIHsKKyAgc3dpdGNoIChkYXRh
X2NoYW5uZWxfdHlwZV8pIHsKKyAgICBjYXNlIGNyaWNrZXQ6OkRDVF9NRURJQV9UUkFOU1BPUlQ6
CisgICAgICBpZiAobmV0d29ya190aHJlYWQoKS0+SW52b2tlPGJvb2w+KAorICAgICAgICAgICAg
ICBSVENfRlJPTV9IRVJFLAorICAgICAgICAgICAgICBydGM6OkJpbmQoJlBlZXJDb25uZWN0aW9u
OjpTZXR1cE1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzX24sCisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLCBtaWQpKSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoYW5uZWwg
OiBzY3RwX2RhdGFfY2hhbm5lbHNfKSB7CisgICAgICAgICAgY2hhbm5lbC0+T25UcmFuc3BvcnRD
aGFubmVsQ3JlYXRlZCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
fQogICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBydHBfZGF0YV9jaGFubmVsXy0+U2ln
bmFsRHRsc1NydHBTZXR1cEZhaWx1cmUuY29ubmVjdCgKLSAgICAgICAgdGhpcywgJlBlZXJDb25u
ZWN0aW9uOjpPbkR0bHNTcnRwU2V0dXBGYWlsdXJlKTsKLSAgICBydHBfZGF0YV9jaGFubmVsXy0+
U2lnbmFsU2VudFBhY2tldC5jb25uZWN0KAotICAgICAgICB0aGlzLCAmUGVlckNvbm5lY3Rpb246
Ok9uU2VudFBhY2tldF93KTsKLSAgICBydHBfZGF0YV9jaGFubmVsXy0+U2V0UnRwVHJhbnNwb3J0
KHJ0cF90cmFuc3BvcnQpOworICAgIGNhc2UgY3JpY2tldDo6RENUX1NDVFA6CisgICAgICBpZiAo
IXNjdHBfZmFjdG9yeV8pIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikKKyAgICAgICAgICAg
IDw8ICJUcnlpbmcgdG8gY3JlYXRlIFNDVFAgdHJhbnNwb3J0LCBidXQgZGlkbid0IGNvbXBpbGUg
d2l0aCAiCisgICAgICAgICAgICAgICAiU0NUUCBzdXBwb3J0IChIQVZFX1NDVFApIjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgaWYgKCFuZXR3b3JrX3RocmVhZCgpLT5J
bnZva2U8Ym9vbD4oCisgICAgICAgICAgICAgIFJUQ19GUk9NX0hFUkUsCisgICAgICAgICAgICAg
IHJ0Yzo6QmluZCgmUGVlckNvbm5lY3Rpb246OkNyZWF0ZVNjdHBUcmFuc3BvcnRfbiwgdGhpcywg
bWlkKSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgZm9yIChjb25z
dCBhdXRvJiBjaGFubmVsIDogc2N0cF9kYXRhX2NoYW5uZWxzXykgeworICAgICAgICBjaGFubmVs
LT5PblRyYW5zcG9ydENoYW5uZWxDcmVhdGVkKCk7CisgICAgICB9CisgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBjYXNlIGNyaWNrZXQ6OkRDVF9SVFA6CisgICAgZGVmYXVsdDoKKyAgICAgIFJ0cFRy
YW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0ID0gR2V0UnRwVHJhbnNwb3J0KG1pZCk7Cisg
ICAgICBydHBfZGF0YV9jaGFubmVsXyA9IGNoYW5uZWxfbWFuYWdlcigpLT5DcmVhdGVSdHBEYXRh
Q2hhbm5lbCgKKyAgICAgICAgICBjb25maWd1cmF0aW9uXy5tZWRpYV9jb25maWcsIHJ0cF90cmFu
c3BvcnQsIHNpZ25hbGluZ190aHJlYWQoKSwgbWlkLAorICAgICAgICAgIFNydHBSZXF1aXJlZCgp
LCBHZXRDcnlwdG9PcHRpb25zKCkpOworICAgICAgaWYgKCFydHBfZGF0YV9jaGFubmVsXykgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBydHBfZGF0YV9jaGFubmVsXy0+
U2lnbmFsRHRsc1NydHBTZXR1cEZhaWx1cmUuY29ubmVjdCgKKyAgICAgICAgICB0aGlzLCAmUGVl
ckNvbm5lY3Rpb246Ok9uRHRsc1NydHBTZXR1cEZhaWx1cmUpOworICAgICAgcnRwX2RhdGFfY2hh
bm5lbF8tPlNpZ25hbFNlbnRQYWNrZXQuY29ubmVjdCgKKyAgICAgICAgICB0aGlzLCAmUGVlckNv
bm5lY3Rpb246Ok9uU2VudFBhY2tldF93KTsKKyAgICAgIHJ0cF9kYXRhX2NoYW5uZWxfLT5TZXRS
dHBUcmFuc3BvcnQocnRwX3RyYW5zcG9ydCk7CisgICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAg
IHJldHVybiB0cnVlOwpAQCAtNTY2MSwyMiArNTk2Myw4IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246
Ok9uU2N0cFRyYW5zcG9ydERhdGFSZWNlaXZlZF9uKAogdm9pZCBQZWVyQ29ubmVjdGlvbjo6T25T
Y3RwVHJhbnNwb3J0RGF0YVJlY2VpdmVkX3MoCiAgICAgY29uc3QgY3JpY2tldDo6UmVjZWl2ZURh
dGFQYXJhbXMmIHBhcmFtcywKICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBwYXls
b2FkKSB7Ci0gIFJUQ19EQ0hFQ0soc2lnbmFsaW5nX3RocmVhZCgpLT5Jc0N1cnJlbnQoKSk7Ci0g
IGlmIChwYXJhbXMudHlwZSA9PSBjcmlja2V0OjpETVRfQ09OVFJPTCAmJiBJc09wZW5NZXNzYWdl
KHBheWxvYWQpKSB7Ci0gICAgLy8gUmVjZWl2ZWQgT1BFTiBtZXNzYWdlOyBwYXJzZSBhbmQgc2ln
bmFsIHRoYXQgYSBuZXcgZGF0YSBjaGFubmVsIHNob3VsZAotICAgIC8vIGJlIGNyZWF0ZWQuCi0g
ICAgc3RkOjpzdHJpbmcgbGFiZWw7Ci0gICAgSW50ZXJuYWxEYXRhQ2hhbm5lbEluaXQgY29uZmln
OwotICAgIGNvbmZpZy5pZCA9IHBhcmFtcy5zc3JjOwotICAgIGlmICghUGFyc2VEYXRhQ2hhbm5l
bE9wZW5NZXNzYWdlKHBheWxvYWQsICZsYWJlbCwgJmNvbmZpZykpIHsKLSAgICAgIFJUQ19MT0co
TFNfV0FSTklORykgPDwgIkZhaWxlZCB0byBwYXJzZSB0aGUgT1BFTiBtZXNzYWdlIGZvciBzaWQg
IgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBwYXJhbXMuc3NyYzsKLSAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY29uZmlnLm9wZW5faGFuZHNoYWtlX3JvbGUgPSBJbnRlcm5hbERhdGFD
aGFubmVsSW5pdDo6a0Fja2VyOwotICAgIE9uRGF0YUNoYW5uZWxPcGVuTWVzc2FnZShsYWJlbCwg
Y29uZmlnKTsKLSAgfSBlbHNlIHsKLSAgICAvLyBPdGhlcndpc2UganVzdCBmb3J3YXJkIHRoZSBz
aWduYWwuCisgIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWQoKSk7CisgIGlmICgh
SGFuZGxlT3Blbk1lc3NhZ2VfcyhwYXJhbXMsIHBheWxvYWQpKSB7CiAgICAgU2lnbmFsU2N0cERh
dGFSZWNlaXZlZChwYXJhbXMsIHBheWxvYWQpOwogICB9CiB9CkBAIC01Njk5LDYgKzU5ODcsNDkg
QEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6T25TY3RwQ2xvc2luZ1Byb2NlZHVyZUNvbXBsZXRlX24o
aW50IHNpZCkgewogICAgICAgICAgICAgICAgICZTaWduYWxTY3RwQ2xvc2luZ1Byb2NlZHVyZUNv
bXBsZXRlLCBzaWQpKTsKIH0KIAorYm9vbCBQZWVyQ29ubmVjdGlvbjo6U2V0dXBNZWRpYVRyYW5z
cG9ydEZvckRhdGFDaGFubmVsc19uKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpIHsKKyAg
bWVkaWFfdHJhbnNwb3J0XyA9IHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0TWVkaWFUcmFuc3Bv
cnQobWlkKTsKKyAgaWYgKCFtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgUlRDX0xPRyhMU19FUlJP
UikgPDwgIk1lZGlhIHRyYW5zcG9ydCBpcyBub3QgYXZhaWxhYmxlIGZvciBkYXRhIGNoYW5uZWxz
IjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBtZWRpYV90cmFuc3BvcnRfaW52b2tlcl8g
PSBhYnNsOjptYWtlX3VuaXF1ZTxydGM6OkFzeW5jSW52b2tlcj4oKTsKKyAgbWVkaWFfdHJhbnNw
b3J0Xy0+U2V0RGF0YVNpbmsodGhpcyk7CisgIG1lZGlhX3RyYW5zcG9ydF9kYXRhX21pZF8gPSBt
aWQ7CisgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsTWVkaWFUcmFuc3BvcnRTdGF0ZUNo
YW5nZWQuY29ubmVjdCgKKyAgICAgIHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6T25NZWRpYVRyYW5z
cG9ydFN0YXRlQ2hhbmdlZF9uKTsKKyAgLy8gQ2hlY2sgdGhlIGluaXRpYWwgc3RhdGUgcmlnaHQg
YXdheSwgaW4gY2FzZSB0cmFuc3BvcnQgaXMgYWxyZWFkeSB3cml0YWJsZS4KKyAgT25NZWRpYVRy
YW5zcG9ydFN0YXRlQ2hhbmdlZF9uKCk7CisgIHJldHVybiB0cnVlOworfQorCit2b2lkIFBlZXJD
b25uZWN0aW9uOjpUZWFyZG93bk1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzX24oKSB7Cisg
IGlmICghbWVkaWFfdHJhbnNwb3J0XykgeworICAgIHJldHVybjsKKyAgfQorICB0cmFuc3BvcnRf
Y29udHJvbGxlcl8tPlNpZ25hbE1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkLmRpc2Nvbm5lY3Qo
dGhpcyk7CisgIG1lZGlhX3RyYW5zcG9ydF9kYXRhX21pZF8ucmVzZXQoKTsKKyAgbWVkaWFfdHJh
bnNwb3J0Xy0+U2V0RGF0YVNpbmsobnVsbHB0cik7CisgIG1lZGlhX3RyYW5zcG9ydF9pbnZva2Vy
XyA9IG51bGxwdHI7CisgIG1lZGlhX3RyYW5zcG9ydF8gPSBudWxscHRyOworfQorCit2b2lkIFBl
ZXJDb25uZWN0aW9uOjpPbk1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkX24oKSB7CisgIGlmICgh
bWVkaWFfdHJhbnNwb3J0X2RhdGFfbWlkXyB8fAorICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJf
LT5HZXRNZWRpYVRyYW5zcG9ydFN0YXRlKAorICAgICAgICAgICptZWRpYV90cmFuc3BvcnRfZGF0
YV9taWRfKSAhPSBNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpIHsKKyAgICByZXR1cm47
CisgIH0KKyAgbWVkaWFfdHJhbnNwb3J0X2ludm9rZXJfLT5Bc3luY0ludm9rZTx2b2lkPigKKyAg
ICAgIFJUQ19GUk9NX0hFUkUsIHNpZ25hbGluZ190aHJlYWQoKSwgW3RoaXNdIHsKKyAgICAgICAg
UlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZCgpKTsKKyAgICAgICAgbWVkaWFfdHJh
bnNwb3J0X3JlYWR5X3RvX3NlbmRfZGF0YV8gPSB0cnVlOworICAgICAgICBTaWduYWxNZWRpYVRy
YW5zcG9ydFdyaXRhYmxlX3MobWVkaWFfdHJhbnNwb3J0X3JlYWR5X3RvX3NlbmRfZGF0YV8pOwor
ICAgICAgfSk7Cit9CisKIC8vIFJldHVybnMgZmFsc2UgaWYgYnVuZGxlIGlzIGVuYWJsZWQgYW5k
IHJ0Y3BfbXV4IGlzIGRpc2FibGVkLgogYm9vbCBQZWVyQ29ubmVjdGlvbjo6VmFsaWRhdGVCdW5k
bGVTZXR0aW5ncyhjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MpIHsKICAgYm9vbCBidW5k
bGVfZW5hYmxlZCA9IGRlc2MtPkhhc0dyb3VwKGNyaWNrZXQ6OkdST1VQX1RZUEVfQlVORExFKTsK
QEAgLTYxNjksNyArNjUwMCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246Ok9uU2VudFBhY2tldF93
KGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgc2VudF9wYWNrZXQpIHsKIAogY29uc3Qgc3RkOjpzdHJp
bmcgUGVlckNvbm5lY3Rpb246OkdldFRyYW5zcG9ydE5hbWUoCiAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIGNvbnRlbnRfbmFtZSkgewotICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IEdl
dENoYW5uZWwoY29udGVudF9uYW1lKTsKKyAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hh
bm5lbCA9IEdldENoYW5uZWwoY29udGVudF9uYW1lKTsKICAgaWYgKGNoYW5uZWwpIHsKICAgICBy
ZXR1cm4gY2hhbm5lbC0+dHJhbnNwb3J0X25hbWUoKTsKICAgfQpAQCAtNjE4OCwxNyArNjUxOSwx
NyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpEZXN0cm95VHJhbnNjZWl2ZXJDaGFubmVsKAogICAg
ICAgICB0cmFuc2NlaXZlcikgewogICBSVENfRENIRUNLKHRyYW5zY2VpdmVyKTsKIAotICBjcmlj
a2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFu
bmVsKCk7CisgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwgPSB0cmFuc2NlaXZl
ci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOwogICBpZiAoY2hhbm5lbCkgewogICAgIHRyYW5zY2Vp
dmVyLT5pbnRlcm5hbCgpLT5TZXRDaGFubmVsKG51bGxwdHIpOwotICAgIERlc3Ryb3lCYXNlQ2hh
bm5lbChjaGFubmVsKTsKKyAgICBEZXN0cm95Q2hhbm5lbEludGVyZmFjZShjaGFubmVsKTsKICAg
fQogfQogCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpEZXN0cm95RGF0YUNoYW5uZWwoKSB7CiAgIGlm
IChydHBfZGF0YV9jaGFubmVsXykgewogICAgIE9uRGF0YUNoYW5uZWxEZXN0cm95ZWQoKTsKLSAg
ICBEZXN0cm95QmFzZUNoYW5uZWwocnRwX2RhdGFfY2hhbm5lbF8pOworICAgIERlc3Ryb3lDaGFu
bmVsSW50ZXJmYWNlKHJ0cF9kYXRhX2NoYW5uZWxfKTsKICAgICBydHBfZGF0YV9jaGFubmVsXyA9
IG51bGxwdHI7CiAgIH0KIApAQCAtNjIxMyw5ICs2NTQ0LDE4IEBAIHZvaWQgUGVlckNvbm5lY3Rp
b246OkRlc3Ryb3lEYXRhQ2hhbm5lbCgpIHsKICAgICBuZXR3b3JrX3RocmVhZCgpLT5JbnZva2U8
dm9pZD4oUlRDX0ZST01fSEVSRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W3RoaXNdIHsgRGVzdHJveVNjdHBUcmFuc3BvcnRfbigpOyB9KTsKICAgfQorCisgIGlmIChtZWRp
YV90cmFuc3BvcnRfKSB7CisgICAgT25EYXRhQ2hhbm5lbERlc3Ryb3llZCgpOworICAgIG5ldHdv
cmtfdGhyZWFkKCktPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbdGhpc10geworICAgICAg
UlRDX0RDSEVDS19SVU5fT04obmV0d29ya190aHJlYWQoKSk7CisgICAgICBUZWFyZG93bk1lZGlh
VHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzX24oKTsKKyAgICB9KTsKKyAgfQogfQogCi12b2lkIFBl
ZXJDb25uZWN0aW9uOjpEZXN0cm95QmFzZUNoYW5uZWwoY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNo
YW5uZWwpIHsKK3ZvaWQgUGVlckNvbm5lY3Rpb246OkRlc3Ryb3lDaGFubmVsSW50ZXJmYWNlKAor
ICAgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwpIHsKICAgUlRDX0RDSEVDSyhj
aGFubmVsKTsKICAgc3dpdGNoIChjaGFubmVsLT5tZWRpYV90eXBlKCkpIHsKICAgICBjYXNlIGNy
aWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86CkBAIC02MjM5LDcgKzY1NzksOCBAQCB2b2lkIFBlZXJD
b25uZWN0aW9uOjpEZXN0cm95QmFzZUNoYW5uZWwoY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5u
ZWwpIHsKIGJvb2wgUGVlckNvbm5lY3Rpb246Ok9uVHJhbnNwb3J0Q2hhbmdlZCgKICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgbWlkLAogICAgIFJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNw
b3J0LAotICAgIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCogZHRsc190cmFuc3BvcnQp
IHsKKyAgICBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0LAor
ICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpIHsKICAgYm9vbCBy
ZXQgPSB0cnVlOwogICBhdXRvIGJhc2VfY2hhbm5lbCA9IEdldENoYW5uZWwobWlkKTsKICAgaWYg
KGJhc2VfY2hhbm5lbCkgewpAQCAtNjI0OCw2ICs2NTg5LDkgQEAgYm9vbCBQZWVyQ29ubmVjdGlv
bjo6T25UcmFuc3BvcnRDaGFuZ2VkKAogICBpZiAoc2N0cF90cmFuc3BvcnRfICYmIG1pZCA9PSBz
Y3RwX21pZF8pIHsKICAgICBzY3RwX3RyYW5zcG9ydF8tPlNldER0bHNUcmFuc3BvcnQoZHRsc190
cmFuc3BvcnQpOwogICB9CisKKyAgY2FsbF8tPk1lZGlhVHJhbnNwb3J0Q2hhbmdlKG1lZGlhX3Ry
YW5zcG9ydCk7CisKICAgcmV0dXJuIHJldDsKIH0KIApAQCAtNjI2MSw2ICs2NjA1LDE0IEBAIFBl
ZXJDb25uZWN0aW9uT2JzZXJ2ZXIqIFBlZXJDb25uZWN0aW9uOjpPYnNlcnZlcigpIGNvbnN0IHsK
ICAgcmV0dXJuIG9ic2VydmVyXzsKIH0KIAorQ3J5cHRvT3B0aW9ucyBQZWVyQ29ubmVjdGlvbjo6
R2V0Q3J5cHRvT3B0aW9ucygpIHsKKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTg5MSkgLSBS
ZW1vdmUgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpDcnlwdG9PcHRpb25zCisgIC8vIGFmdGVyIGl0
IGhhcyBiZWVuIHJlbW92ZWQuCisgIHJldHVybiBjb25maWd1cmF0aW9uXy5jcnlwdG9fb3B0aW9u
cy5oYXNfdmFsdWUoKQorICAgICAgICAgICAgID8gKmNvbmZpZ3VyYXRpb25fLmNyeXB0b19vcHRp
b25zCisgICAgICAgICAgICAgOiBmYWN0b3J5Xy0+b3B0aW9ucygpLmNyeXB0b19vcHRpb25zOwor
fQorCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpDbGVhclN0YXRzQ2FjaGUoKSB7CiAgIGlmIChzdGF0
c19jb2xsZWN0b3JfKSB7CiAgICAgc3RhdHNfY29sbGVjdG9yXy0+Q2xlYXJDYWNoZWRTdGF0c1Jl
cG9ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmgKaW5kZXggMzdjOWQ3M2JkNDZjODgxYzkx
YzVhYmRkYTI3YTk3YThhYWRhYzY3Ny4uN2U5N2FmYWI3YzYwNTM5NWRiMGM5YjQwNDQ2MzY4MmU1
MTVkMzc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5oCkBAIC0xNyw2ICsxNyw3IEBACiAj
aW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS9tZWRp
YV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0aW9uaW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3R1cm5jdXN0b21pemVyLmgiCiAjaW5jbHVkZSAicGMv
aWNlc2VydmVycGFyc2luZy5oIgpAQCAtNTEsNiArNTIsNyBAQCBjbGFzcyBSdGNFdmVudExvZzsK
IC8vIC0gR2VuZXJhdGluZyBzdGF0cy4KIGNsYXNzIFBlZXJDb25uZWN0aW9uIDogcHVibGljIFBl
ZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBEYXRh
Q2hhbm5lbFByb3ZpZGVySW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
RGF0YUNoYW5uZWxTaW5rLAogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgSnNlcFRyYW5z
cG9ydENvbnRyb2xsZXI6Ok9ic2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
cnRjOjpNZXNzYWdlSGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHNpZ3Ns
b3Q6Omhhc19zbG90czw+IHsKQEAgLTE0NSw2ICsxNDcsOCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlv
biA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkludGVybmFsLAogICBTaWduYWxpbmdTdGF0ZSBzaWdu
YWxpbmdfc3RhdGUoKSBvdmVycmlkZTsKIAogICBJY2VDb25uZWN0aW9uU3RhdGUgaWNlX2Nvbm5l
Y3Rpb25fc3RhdGUoKSBvdmVycmlkZTsKKyAgSWNlQ29ubmVjdGlvblN0YXRlIHN0YW5kYXJkaXpl
ZF9pY2VfY29ubmVjdGlvbl9zdGF0ZSgpOworICBQZWVyQ29ubmVjdGlvblN0YXRlIHBlZXJfY29u
bmVjdGlvbl9zdGF0ZSgpIG92ZXJyaWRlOwogICBJY2VHYXRoZXJpbmdTdGF0ZSBpY2VfZ2F0aGVy
aW5nX3N0YXRlKCkgb3ZlcnJpZGU7CiAKICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJm
YWNlKiBsb2NhbF9kZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzcyLDYgKzM3Niwx
MSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkludGVybmFs
LAogICAgICAgICAgIHJlY2VpdmVyKTsKIAogICB2b2lkIFNldEljZUNvbm5lY3Rpb25TdGF0ZShJ
Y2VDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKTsKKyAgdm9pZCBTZXRTdGFuZGFyZGl6ZWRJY2VD
b25uZWN0aW9uU3RhdGUoCisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVj
dGlvblN0YXRlIG5ld19zdGF0ZSk7CisgIHZvaWQgU2V0Q29ubmVjdGlvblN0YXRlKAorICAgICAg
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKTsK
KwogICAvLyBDYWxsZWQgYW55IHRpbWUgdGhlIEljZUdhdGhlcmluZ1N0YXRlIGNoYW5nZXMKICAg
dm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZShJY2VHYXRoZXJpbmdTdGF0ZSBuZXdfc3RhdGUpOwog
ICAvLyBOZXcgSUNFIGNhbmRpZGF0ZSBoYXMgYmVlbiBnYXRoZXJlZC4KQEAgLTYyNCw2ICs2MzMs
MTEgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRlcm5h
bCwKICAgLy8gQ2FsbGVkIHdoZW4gYSB2YWxpZCBkYXRhIGNoYW5uZWwgT1BFTiBtZXNzYWdlIGlz
IHJlY2VpdmVkLgogICB2b2lkIE9uRGF0YUNoYW5uZWxPcGVuTWVzc2FnZShjb25zdCBzdGQ6OnN0
cmluZyYgbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVy
bmFsRGF0YUNoYW5uZWxJbml0JiBjb25maWcpOworICAvLyBQYXJzZXMgYW5kIGhhbmRsZXMgb3Bl
biBtZXNzYWdlcy4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWVzc2FnZSBpcyBhbiBvcGVuCisgIC8v
IG1lc3NhZ2UsIGZhbHNlIG90aGVyd2lzZS4KKyAgYm9vbCBIYW5kbGVPcGVuTWVzc2FnZV9zKGNv
bnN0IGNyaWNrZXQ6OlJlY2VpdmVEYXRhUGFyYW1zJiBwYXJhbXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIpCisgICAgICBS
VENfUlVOX09OKHNpZ25hbGluZ190aHJlYWQoKSk7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZSBQZWVyQ29ubmVjdGlvbiBpcyBjb25maWd1cmVkIHRvIHVzZSBVbmlmaWVkIFBsYW4KICAgLy8g
c2VtYW50aWNzIGZvciBjcmVhdGluZyBvZmZlcnMvYW5zd2VycyBhbmQgc2V0dGluZyBsb2NhbC9y
ZW1vdGUKQEAgLTcwNSw3ICs3MTksNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBQ
ZWVyQ29ubmVjdGlvbkludGVybmFsLAogICBTZXNzaW9uRXJyb3Igc2Vzc2lvbl9lcnJvcigpIGNv
bnN0IHsgcmV0dXJuIHNlc3Npb25fZXJyb3JfOyB9CiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzZXNz
aW9uX2Vycm9yX2Rlc2MoKSBjb25zdCB7IHJldHVybiBzZXNzaW9uX2Vycm9yX2Rlc2NfOyB9CiAK
LSAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIEdldENoYW5uZWwoY29uc3Qgc3RkOjpzdHJpbmcmIGNv
bnRlbnRfbmFtZSk7CisgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIEdldENoYW5uZWwoY29u
c3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSk7CiAKICAgLy8gR2V0IGN1cnJlbnQgU1NMIHJv
bGUgdXNlZCBieSBTQ1RQJ3MgdW5kZXJseWluZyB0cmFuc3BvcnQuCiAgIGJvb2wgR2V0U2N0cFNz
bFJvbGUocnRjOjpTU0xSb2xlKiByb2xlKTsKQEAgLTcyNSw2ICs3MzksMTMgQEAgY2xhc3MgUGVl
ckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKIAogICBjcmlja2V0
OjpEYXRhQ2hhbm5lbFR5cGUgZGF0YV9jaGFubmVsX3R5cGUoKSBjb25zdDsKIAorICAvLyBJbXBs
ZW1lbnRzIERhdGFDaGFubmVsU2luay4KKyAgdm9pZCBPbkRhdGFSZWNlaXZlZChpbnQgY2hhbm5l
bF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICBEYXRhTWVzc2FnZVR5cGUgdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIpIG92
ZXJyaWRlOworICB2b2lkIE9uQ2hhbm5lbENsb3NpbmcoaW50IGNoYW5uZWxfaWQpIG92ZXJyaWRl
OworICB2b2lkIE9uQ2hhbm5lbENsb3NlZChpbnQgY2hhbm5lbF9pZCkgb3ZlcnJpZGU7CisKICAg
Ly8gQ2FsbGVkIHdoZW4gYW4gUlRDQ2VydGlmaWNhdGUgaXMgZ2VuZXJhdGVkIG9yIHJldHJpZXZl
ZCBieQogICAvLyBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5LiBTaG91bGQgaGFwcGVu
IGJlZm9yZSBzZXRMb2NhbERlc2NyaXB0aW9uLgogICB2b2lkIE9uQ2VydGlmaWNhdGVSZWFkeSgK
QEAgLTgyMiw2ICs4NDMsMTEgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNv
bm5lY3Rpb25JbnRlcm5hbCwKICAgdm9pZCBPblNjdHBDbG9zaW5nUHJvY2VkdXJlU3RhcnRlZFJl
bW90ZWx5X24oaW50IHNpZCk7CiAgIHZvaWQgT25TY3RwQ2xvc2luZ1Byb2NlZHVyZUNvbXBsZXRl
X24oaW50IHNpZCk7CiAKKyAgYm9vbCBTZXR1cE1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxz
X24oY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCkKKyAgICAgIFJUQ19SVU5fT04obmV0d29ya190aHJl
YWQoKSk7CisgIHZvaWQgT25NZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZF9uKCkgUlRDX1JVTl9P
TihuZXR3b3JrX3RocmVhZCgpKTsKKyAgdm9pZCBUZWFyZG93bk1lZGlhVHJhbnNwb3J0Rm9yRGF0
YUNoYW5uZWxzX24oKSBSVENfUlVOX09OKG5ldHdvcmtfdGhyZWFkKCkpOworCiAgIGJvb2wgVmFs
aWRhdGVCdW5kbGVTZXR0aW5ncyhjb25zdCBjcmlja2V0OjpTZXNzaW9uRGVzY3JpcHRpb24qIGRl
c2MpOwogICBib29sIEhhc1J0Y3BNdXhFbmFibGVkKGNvbnN0IGNyaWNrZXQ6OkNvbnRlbnRJbmZv
KiBjb250ZW50KTsKICAgLy8gQmVsb3cgbWV0aG9kcyBhcmUgaGVscGVyIG1ldGhvZHMgd2hpY2gg
dmVyaWZpZXMgU0RQLgpAQCAtODk2LDkgKzkyMiw5IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uIDog
cHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAgIC8vIERlc3Ryb3lzIHRoZSBSVFAgZGF0
YSBjaGFubmVsIGFuZC9vciB0aGUgU0NUUCBkYXRhIGNoYW5uZWwgYW5kIGNsZWFycyBpdC4KICAg
dm9pZCBEZXN0cm95RGF0YUNoYW5uZWwoKTsKIAotICAvLyBEZXN0cm95cyB0aGUgZ2l2ZW4gQmFz
ZUNoYW5uZWwuIFRoZSBjaGFubmVsIGNhbm5vdCBiZSBhY2Nlc3NlZCBhZnRlciB0aGlzCi0gIC8v
IG1ldGhvZCBpcyBjYWxsZWQuCi0gIHZvaWQgRGVzdHJveUJhc2VDaGFubmVsKGNyaWNrZXQ6OkJh
c2VDaGFubmVsKiBjaGFubmVsKTsKKyAgLy8gRGVzdHJveXMgdGhlIGdpdmVuIENoYW5uZWxJbnRl
cmZhY2UuCisgIC8vIFRoZSBjaGFubmVsIGNhbm5vdCBiZSBhY2Nlc3NlZCBhZnRlciB0aGlzIG1l
dGhvZCBpcyBjYWxsZWQuCisgIHZvaWQgRGVzdHJveUNoYW5uZWxJbnRlcmZhY2UoY3JpY2tldDo6
Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbCk7CiAKICAgLy8gSnNlcFRyYW5zcG9ydENvbnRyb2xs
ZXI6Ok9ic2VydmVyIG92ZXJyaWRlLgogICAvLwpAQCAtOTA2LDE0ICs5MzIsNDEgQEAgY2xhc3Mg
UGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKICAgLy8gZnJv
bSBhIHNlc3Npb24gZGVzY3JpcHRpb24sIGFuZCB0aGUgbWFwcGluZyBmcm9tIG09IHNlY3Rpb25z
IHRvIHRyYW5zcG9ydHMKICAgLy8gY2hhbmdlZCAoYXMgYSByZXN1bHQgb2YgQlVORExFIG5lZ290
aWF0aW9uLCBvciBtPSBzZWN0aW9ucyBiZWluZwogICAvLyByZWplY3RlZCkuCi0gIGJvb2wgT25U
cmFuc3BvcnRDaGFuZ2VkKAotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwKLSAgICAgIFJ0
cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0LAotICAgICAgY3JpY2tldDo6RHRsc1Ry
YW5zcG9ydEludGVybmFsKiBkdGxzX3RyYW5zcG9ydCkgb3ZlcnJpZGU7CisgIGJvb2wgT25UcmFu
c3BvcnRDaGFuZ2VkKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIGR0bHNfdHJhbnNw
b3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSog
bWVkaWFfdHJhbnNwb3J0KSBvdmVycmlkZTsKIAogICAvLyBSZXR1cm5zIHRoZSBvYnNlcnZlci4g
V2lsbCBjcmFzaCBvbiBDSEVDSyBpZiB0aGUgb2JzZXJ2ZXIgaXMgcmVtb3ZlZC4KICAgUGVlckNv
bm5lY3Rpb25PYnNlcnZlciogT2JzZXJ2ZXIoKSBjb25zdDsKIAorICAvLyBSZXR1cm5zIHRoZSBD
cnlwdG9PcHRpb25zIGZvciB0aGlzIFBlZXJDb25uZWN0aW9uLiBUaGlzIHdpbGwgYWx3YXlzCisg
IC8vIHJldHVybiB0aGUgUlRDQ29uZmlndXJhdGlvbi5jcnlwdG9fb3B0aW9ucyBpZiBzZXQgYW5k
IHdpbGwgb25seSBkZWZhdWx0CisgIC8vIGJhY2sgdG8gdGhlIFBlZXJDb25uZWN0aW9uRmFjdG9y
eSBzZXR0aW5ncyBpZiBub3RoaW5nIHdhcyBzZXQuCisgIENyeXB0b09wdGlvbnMgR2V0Q3J5cHRv
T3B0aW9ucygpOworCisgIC8vIFJldHVybnMgcnRwIHRyYW5zcG9ydCwgcmVzdWx0IGNhbiBub3Qg
YmUgbnVsbHB0ci4KKyAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIEdldFJ0cFRyYW5zcG9ydChjb25z
dCBzdGQ6OnN0cmluZyYgbWlkKSB7CisgICAgYXV0byBydHBfdHJhbnNwb3J0ID0gdHJhbnNwb3J0
X2NvbnRyb2xsZXJfLT5HZXRSdHBUcmFuc3BvcnQobWlkKTsKKyAgICBSVENfRENIRUNLKHJ0cF90
cmFuc3BvcnQpOworICAgIHJldHVybiBydHBfdHJhbnNwb3J0OworICB9CisKKyAgLy8gUmV0dXJu
cyBtZWRpYSB0cmFuc3BvcnQsIGlmIFBlZXJDb25uZWN0aW9uIHdhcyBjcmVhdGVkIHdpdGggY29u
ZmlndXJhdGlvbgorICAvLyB0byB1c2UgbWVkaWEgdHJhbnNwb3J0LiBPdGhlcndpc2UgcmV0dXJu
cyBudWxscHRyLgorICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogR2V0TWVkaWFUcmFuc3BvcnQo
Y29uc3Qgc3RkOjpzdHJpbmcmIG1pZCkgeworICAgIGF1dG8gbWVkaWFfdHJhbnNwb3J0ID0gdHJh
bnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChtaWQpOworICAgIFJUQ19EQ0hF
Q0soKGNvbmZpZ3VyYXRpb25fLnVzZV9tZWRpYV90cmFuc3BvcnQgfHwKKyAgICAgICAgICAgICAg
ICBjb25maWd1cmF0aW9uXy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzKSA9
PQorICAgICAgICAgICAgICAgKG1lZGlhX3RyYW5zcG9ydCAhPSBudWxscHRyKSkKKyAgICAgICAg
PDwgImNvbmZpZ3VyYXRpb25fLnVzZV9tZWRpYV90cmFuc3BvcnQ9IgorICAgICAgICA8PCBjb25m
aWd1cmF0aW9uXy51c2VfbWVkaWFfdHJhbnNwb3J0CisgICAgICAgIDw8ICIsIGNvbmZpZ3VyYXRp
b25fLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHM9IgorICAgICAgICA8PCBj
b25maWd1cmF0aW9uXy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzCisgICAg
ICAgIDw8ICIsIChtZWRpYV90cmFuc3BvcnQgIT0gbnVsbHB0cik9IiA8PCAobWVkaWFfdHJhbnNw
b3J0ICE9IG51bGxwdHIpOworICAgIHJldHVybiBtZWRpYV90cmFuc3BvcnQ7CisgIH0KKwogICBz
aWdzbG90OjpzaWduYWwxPERhdGFDaGFubmVsKj4gU2lnbmFsRGF0YUNoYW5uZWxDcmVhdGVkXzsK
IAogICAvLyBTdG9yaW5nIHRoZSBmYWN0b3J5IGFzIGEgc2NvcGVkIHJlZmVyZW5jZSBwb2ludGVy
IGVuc3VyZXMgdGhhdCB0aGUgbWVtb3J5CkBAIC05MzAsNiArOTgzLDExIEBAIGNsYXNzIFBlZXJD
b25uZWN0aW9uIDogcHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAKICAgU2lnbmFsaW5n
U3RhdGUgc2lnbmFsaW5nX3N0YXRlXyA9IGtTdGFibGU7CiAgIEljZUNvbm5lY3Rpb25TdGF0ZSBp
Y2VfY29ubmVjdGlvbl9zdGF0ZV8gPSBrSWNlQ29ubmVjdGlvbk5ldzsKKyAgUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZQorICAgICAgc3RhbmRhcmRpemVkX2ljZV9j
b25uZWN0aW9uX3N0YXRlXyA9IGtJY2VDb25uZWN0aW9uTmV3OworICBQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBjb25uZWN0aW9uX3N0YXRlXyA9CisgICAgICBQ
ZWVyQ29ubmVjdGlvblN0YXRlOjprTmV3OworCiAgIEljZUdhdGhlcmluZ1N0YXRlIGljZV9nYXRo
ZXJpbmdfc3RhdGVfID0ga0ljZUdhdGhlcmluZ05ldzsKICAgUGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbl87CiAKQEAgLTEwMTAsNiArMTA2OCwz
MyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkludGVybmFs
LAogICBzaWdzbG90OjpzaWduYWwxPGludD4gU2lnbmFsU2N0cENsb3NpbmdQcm9jZWR1cmVTdGFy
dGVkUmVtb3RlbHk7CiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8aW50PiBTaWduYWxTY3RwQ2xvc2luZ1By
b2NlZHVyZUNvbXBsZXRlOwogCisgIC8vIFdoZXRoZXIgdGhpcyBwZWVyIGlzIHRoZSBjYWxsZXIu
IFNldCB3aGVuIHRoZSBsb2NhbCBkZXNjcmlwdGlvbiBpcyBhcHBsaWVkLgorICBhYnNsOjpvcHRp
b25hbDxib29sPiBpc19jYWxsZXJfIFJUQ19HVUFSREVEX0JZKHNpZ25hbGluZ190aHJlYWQoKSk7
CisKKyAgLy8gQ29udGVudCBuYW1lIChNSUQpIGZvciBtZWRpYSB0cmFuc3BvcnQgZGF0YSBjaGFu
bmVscyBpbiBTRFAuCisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBtZWRpYV90cmFuc3Bv
cnRfZGF0YV9taWRfOworCisgIC8vIE1lZGlhIHRyYW5zcG9ydCB1c2VkIGZvciBkYXRhIGNoYW5u
ZWxzLiAgVGhyZWFkLXNhZmUuCisgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFu
c3BvcnRfID0gbnVsbHB0cjsKKworICAvLyBDYWNoZWQgdmFsdWUgb2Ygd2hldGhlciB0aGUgbWVk
aWEgdHJhbnNwb3J0IGlzIHJlYWR5IHRvIHNlbmQuCisgIGJvb2wgbWVkaWFfdHJhbnNwb3J0X3Jl
YWR5X3RvX3NlbmRfZGF0YV8gUlRDX0dVQVJERURfQlkoc2lnbmFsaW5nX3RocmVhZCgpKSA9Cisg
ICAgICBmYWxzZTsKKworICAvLyBVc2VkIHRvIGludm9rZSBtZWRpYSB0cmFuc3BvcnQgc2lnbmFs
cyBvbiB0aGUgc2lnbmFsaW5nIHRocmVhZC4KKyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNJ
bnZva2VyPiBtZWRpYV90cmFuc3BvcnRfaW52b2tlcl87CisKKyAgLy8gSWRlbnRpY2FsIHRvIHRo
ZSBzaWduYWxzIGZvciBTQ1RQLCBidXQgZnJvbSBtZWRpYSB0cmFuc3BvcnQ6CisgIHNpZ3Nsb3Q6
OnNpZ25hbDE8Ym9vbD4gU2lnbmFsTWVkaWFUcmFuc3BvcnRXcml0YWJsZV9zCisgICAgICBSVENf
R1VBUkRFRF9CWShzaWduYWxpbmdfdGhyZWFkKCkpOworICBzaWdzbG90OjpzaWduYWwyPGNvbnN0
IGNyaWNrZXQ6OlJlY2VpdmVEYXRhUGFyYW1zJiwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBy
dGM6OkNvcHlPbldyaXRlQnVmZmVyJj4KKyAgICAgIFNpZ25hbE1lZGlhVHJhbnNwb3J0UmVjZWl2
ZWREYXRhX3MgUlRDX0dVQVJERURfQlkoc2lnbmFsaW5nX3RocmVhZCgpKTsKKyAgc2lnc2xvdDo6
c2lnbmFsMTxpbnQ+IFNpZ25hbE1lZGlhVHJhbnNwb3J0Q2hhbm5lbENsb3NpbmdfcworICAgICAg
UlRDX0dVQVJERURfQlkoc2lnbmFsaW5nX3RocmVhZCgpKTsKKyAgc2lnc2xvdDo6c2lnbmFsMTxp
bnQ+IFNpZ25hbE1lZGlhVHJhbnNwb3J0Q2hhbm5lbENsb3NlZF9zCisgICAgICBSVENfR1VBUkRF
RF9CWShzaWduYWxpbmdfdGhyZWFkKCkpOworCiAgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVz
Y3JpcHRpb25JbnRlcmZhY2U+IGN1cnJlbnRfbG9jYWxfZGVzY3JpcHRpb25fOwogICBzdGQ6OnVu
aXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlPiBwZW5kaW5nX2xvY2FsX2Rlc2Ny
aXB0aW9uXzsKICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZT4g
Y3VycmVudF9yZW1vdGVfZGVzY3JpcHRpb25fOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fYnVuZGxlX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVl
cmNvbm5lY3Rpb25fYnVuZGxlX3VuaXR0ZXN0LmNjCmluZGV4IDkwNzY2OWI1YWQzMGM0ODY2YWVh
YWM4M2IzYzYyNmI0MDc2ZjJjNDIuLjZjMzcyYjRiODk4MmI4Mjg5OTIxYzc1YzA3YTJhNjliZmEy
ZTZkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3BlZXJjb25uZWN0aW9uX2J1bmRsZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9idW5kbGVf
dW5pdHRlc3QuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2Rl
Y3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL2Ny
ZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0
aW9ucHJveHkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVj
b2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVv
X2VuY29kZXJfZmFjdG9yeS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fY3J5cHRvX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b25fY3J5cHRvX3VuaXR0ZXN0LmNjCmluZGV4IDFjY2ZlNTU2MGYwOTUwOWY1MTQzYzYwYzRmODdm
NDg0YTRiNWIwMzMuLjZmN2UyM2I5NGY1YWQzNTA1MzRhM2VkNzE0MzJhZDVlZDFlNWNlZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Bl
ZXJjb25uZWN0aW9uX2NyeXB0b191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9jcnlwdG9fdW5pdHRlc3Qu
Y2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRp
bl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1
aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL2NyZWF0ZV9wZWVy
Y29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGlu
X3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVp
bHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9mYWtlcG9y
dGFsbG9jYXRvci5oIgpAQCAtNzYsNiArNzcsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkNyeXB0
b0Jhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKKyAgICBvYnNlcnZlci0+U2V0UGVlckNvbm5lY3Rpb25JbnRlcmZhY2UocGMu
Z2V0KCkpOwogICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxQZWVyQ29ubmVjdGlvbldyYXBw
ZXI+KHBjX2ZhY3RvcnlfLCBwYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUob2JzZXJ2ZXIpKTsKICAgfQpAQCAtMjc4LDEzICsy
ODAsMzUgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uQ3J5cHRvVGVzdCwgQ29ycmVjdENyeXB0b0lu
QW5zd2VyV2hlbkVuY3J5cHRpb25EaXNhYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbnN3ZXItPmRlc2NyaXB0aW9uKCkpKTsKIH0KIAorLy8gQ3J5cHRvT3B0aW9ucyBoYXMg
YmVlbiBwcm9tb3RlZCB0byBSVENDb25maWd1cmF0aW9uLiBBcyBzdWNoIGlmIGl0IGlzIGV2ZXIK
Ky8vIHNldCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdCBzaG91bGQgb3ZlcnJpdGUgdGhlIHNldHRp
bmdzIHNldCBpbiB0aGUgZmFjdG9yeS4KK1RFU1RfUChQZWVyQ29ubmVjdGlvbkNyeXB0b1Rlc3Qs
IFJUQ0NvbmZpZ3VyYXRpb25DcnlwdG9PcHRpb25PdmVycmlkZXNGYWN0b3J5KSB7CisgIFBlZXJD
b25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0aW9ucyBvcHRpb25zOworICBvcHRpb25zLmNy
eXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKKyAgcGNf
ZmFjdG9yeV8tPlNldE9wdGlvbnMob3B0aW9ucyk7CisKKyAgUlRDQ29uZmlndXJhdGlvbiBjb25m
aWc7CisgIGNvbmZpZy5lbmFibGVfZHRsc19zcnRwLmVtcGxhY2UoZmFsc2UpOworICBDcnlwdG9P
cHRpb25zIGNyeXB0b19vcHRpb25zOworICBjcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21f
Y3J5cHRvX3N1aXRlcyA9IGZhbHNlOworICBjb25maWcuY3J5cHRvX29wdGlvbnMgPSBjcnlwdG9f
b3B0aW9uczsKKyAgYXV0byBjYWxsZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhBdWRpb1Zp
ZGVvKGNvbmZpZyk7CisKKyAgYXV0byBvZmZlciA9IGNhbGxlci0+Q3JlYXRlT2ZmZXIoKTsKKyAg
QVNTRVJUX1RSVUUob2ZmZXIpOworCisgIEFTU0VSVF9GQUxTRShvZmZlci0+ZGVzY3JpcHRpb24o
KS0+Y29udGVudHMoKS5lbXB0eSgpKTsKKyAgLy8gVGhpcyBzaG91bGQgZXhpc3QgaWYgR0NNIGlz
IGVuYWJsZWQgc2VlIENvcnJlY3RDcnlwdG9Jbk9mZmVyV2l0aFNkZXNBbmRHY20KKyAgRVhQRUNU
X0ZBTFNFKFNkcENvbnRlbnRzQWxsKEhhdmVTZGVzR2NtQ3J5cHRvcygzKSwgb2ZmZXItPmRlc2Ny
aXB0aW9uKCkpKTsKK30KKwogLy8gV2hlbiBEVExTIGlzIGRpc2FibGVkIGFuZCBHQ00gY2lwaGVy
IHN1aXRlcyBhcmUgZW5hYmxlZCwgdGhlIFNEUCBvZmZlci9hbnN3ZXIKIC8vIHNob3VsZCBoYXZl
IHRoZSBjb3JyZWN0IGNpcGhlcnMgaW4gdGhlIFNERVMgY3J5cHRvIG9wdGlvbnMuCiAvLyBXaXRo
IEdDTSBjaXBoZXIgc3VpdGVzIGVuYWJsZWQsIHRoZXJlIHdpbGwgYmUgMyBjcnlwdG9zIGluIHRo
ZSBvZmZlciBhbmQgMQogLy8gaW4gdGhlIGFuc3dlci4KIFRFU1RfUChQZWVyQ29ubmVjdGlvbkNy
eXB0b1Rlc3QsIENvcnJlY3RDcnlwdG9Jbk9mZmVyV2l0aFNkZXNBbmRHY20pIHsKICAgUGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlOjpPcHRpb25zIG9wdGlvbnM7Ci0gIG9wdGlvbnMuY3J5
cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKKyAgb3B0aW9ucy5j
cnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHRydWU7CiAgIHBj
X2ZhY3RvcnlfLT5TZXRPcHRpb25zKG9wdGlvbnMpOwogCiAgIFJUQ0NvbmZpZ3VyYXRpb24gY29u
ZmlnOwpAQCAtMjk3LDkgKzMyMSwxMCBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25DcnlwdG9UZXN0
LCBDb3JyZWN0Q3J5cHRvSW5PZmZlcldpdGhTZGVzQW5kR2NtKSB7CiAgIEFTU0VSVF9GQUxTRShv
ZmZlci0+ZGVzY3JpcHRpb24oKS0+Y29udGVudHMoKS5lbXB0eSgpKTsKICAgRVhQRUNUX1RSVUUo
U2RwQ29udGVudHNBbGwoSGF2ZVNkZXNHY21DcnlwdG9zKDMpLCBvZmZlci0+ZGVzY3JpcHRpb24o
KSkpOwogfQorCiBURVNUX1AoUGVlckNvbm5lY3Rpb25DcnlwdG9UZXN0LCBDb3JyZWN0Q3J5cHRv
SW5BbnN3ZXJXaXRoU2Rlc0FuZEdjbSkgewogICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2U6Ok9wdGlvbnMgb3B0aW9uczsKLSAgb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2Nt
X2NyeXB0b19zdWl0ZXMgPSB0cnVlOworICBvcHRpb25zLmNyeXB0b19vcHRpb25zLnNydHAuZW5h
YmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKICAgcGNfZmFjdG9yeV8tPlNldE9wdGlvbnMo
b3B0aW9ucyk7CiAKICAgUlRDQ29uZmlndXJhdGlvbiBjb25maWc7CkBAIC0zMTcsNyArMzQyLDcg
QEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uQ3J5cHRvVGVzdCwgQ29ycmVjdENyeXB0b0luQW5zd2Vy
V2l0aFNkZXNBbmRHY20pIHsKIAogVEVTVF9QKFBlZXJDb25uZWN0aW9uQ3J5cHRvVGVzdCwgQ2Fu
U2V0U2Rlc0djbVJlbW90ZU9mZmVyQW5kTG9jYWxBbnN3ZXIpIHsKICAgUGVlckNvbm5lY3Rpb25G
YWN0b3J5SW50ZXJmYWNlOjpPcHRpb25zIG9wdGlvbnM7Ci0gIG9wdGlvbnMuY3J5cHRvX29wdGlv
bnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKKyAgb3B0aW9ucy5jcnlwdG9fb3B0
aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHRydWU7CiAgIHBjX2ZhY3Rvcnlf
LT5TZXRPcHRpb25zKG9wdGlvbnMpOwogCiAgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOwpAQCAt
NzAzLDggKzcyOCw4IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkNyeXB0b1Rlc3QsIFNlc3Npb25F
cnJvcklmRmluZ2VycHJpbnRJbnZhbGlkKSB7CiAgICAgICBpbnZhbGlkX2Fuc3dlci0+ZGVzY3Jp
cHRpb24oKS0+R2V0VHJhbnNwb3J0SW5mb0J5TmFtZSgKICAgICAgICAgICBhdWRpb19jb250ZW50
LT5uYW1lKTsKICAgQVNTRVJUX1RSVUUoYXVkaW9fdHJhbnNwb3J0X2luZm8pOwotICBhdWRpb190
cmFuc3BvcnRfaW5mby0+ZGVzY3JpcHRpb24uaWRlbnRpdHlfZmluZ2VycHJpbnQucmVzZXQoCi0g
ICAgICBydGM6OlNTTEZpbmdlcnByaW50OjpDcmVhdGVGcm9tQ2VydGlmaWNhdGUob3RoZXJfY2Vy
dGlmaWNhdGUpKTsKKyAgYXVkaW9fdHJhbnNwb3J0X2luZm8tPmRlc2NyaXB0aW9uLmlkZW50aXR5
X2ZpbmdlcnByaW50ID0KKyAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0
aWZpY2F0ZSgqb3RoZXJfY2VydGlmaWNhdGUpOwogCiAgIC8vIFNldCB0aGUgaW52YWxpZCBhbnN3
ZXIgYW5kIGV4cGVjdCBhIGZpbmdlcnByaW50IGVycm9yLgogICBzdGQ6OnN0cmluZyBlcnJvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3BlZXJjb25uZWN0aW9uX2RhdGFjaGFubmVsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fZGF0YWNoYW5uZWxf
dW5pdHRlc3QuY2MKaW5kZXggMDMzYTYwOWY5OGFkYWIyMzkxMTE5Y2U5NmRmYzcxNWVhYjY2NTFl
MS4uY2ZiNWRkZTIyYWYzY2JlMDQ4N2Q0NmU5Y2Y5YzkzMjM1MWMwNDg3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b25fZGF0YWNoYW5uZWxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fZGF0YWNoYW5uZWxfdW5pdHRlc3Qu
Y2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDx0dXBsZT4KIAogI2luY2x1ZGUgImFwaS9w
ZWVyY29ubmVjdGlvbnByb3h5LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvZmFrZV9tZWRpYV90cmFu
c3BvcnQuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2VtZWRpYWVuZ2luZS5oIgogI2luY2x1
ZGUgInBjL21lZGlhc2Vzc2lvbi5oIgogI2luY2x1ZGUgInBjL3BlZXJjb25uZWN0aW9uLmgiCkBA
IC0zMSwxNyArMzIsMzkgQEAgdXNpbmcgUlRDQ29uZmlndXJhdGlvbiA9IFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uOwogdXNpbmcgUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
ID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ09mZmVyQW5zd2VyT3B0aW9uczsKIHVzaW5n
IDo6dGVzdGluZzo6VmFsdWVzOwogCituYW1lc3BhY2UgeworCitQZWVyQ29ubmVjdGlvbkZhY3Rv
cnlEZXBlbmRlbmNpZXMgQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5RGVwZW5kZW5jaWVzKAor
ICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogd29ya2Vy
X3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2VuZ2luZSwKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEZhY3RvcnlJbnRlcmZhY2U+IGNhbGxfZmFjdG9yeSwKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRGYWN0b3J5PiBtZWRpYV90cmFuc3BvcnRf
ZmFjdG9yeSkgeworICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlEZXBlbmRlbmNpZXMgZGVwczsKKyAg
ZGVwcy5uZXR3b3JrX3RocmVhZCA9IG5ldHdvcmtfdGhyZWFkOworICBkZXBzLndvcmtlcl90aHJl
YWQgPSB3b3JrZXJfdGhyZWFkOworICBkZXBzLnNpZ25hbGluZ190aHJlYWQgPSBzaWduYWxpbmdf
dGhyZWFkOworICBkZXBzLm1lZGlhX2VuZ2luZSA9IHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpOwor
ICBkZXBzLmNhbGxfZmFjdG9yeSA9IHN0ZDo6bW92ZShjYWxsX2ZhY3RvcnkpOworICBkZXBzLm1l
ZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gc3RkOjptb3ZlKG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
KTsKKyAgcmV0dXJuIGRlcHM7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCiBjbGFzcyBQZWVyQ29u
bmVjdGlvbkZhY3RvcnlGb3JEYXRhQ2hhbm5lbFRlc3QKICAgICA6IHB1YmxpYyBydGM6OlJlZkNv
dW50ZWRPYmplY3Q8UGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7CiAgcHVibGljOgogICBQZWVyQ29u
bmVjdGlvbkZhY3RvcnlGb3JEYXRhQ2hhbm5lbFRlc3QoKQogICAgICAgOiBydGM6OlJlZkNvdW50
ZWRPYmplY3Q8UGVlckNvbm5lY3Rpb25GYWN0b3J5PigKLSAgICAgICAgICAgIHJ0Yzo6VGhyZWFk
OjpDdXJyZW50KCksCi0gICAgICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLAotICAgICAg
ICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwKLSAgICAgICAgICAgIGFic2w6Om1ha2VfdW5p
cXVlPGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZT4oKSwKLSAgICAgICAgICAgIENyZWF0ZUNhbGxG
YWN0b3J5KCksCi0gICAgICAgICAgICBudWxscHRyKSB7fQorICAgICAgICAgICAgQ3JlYXRlUGVl
ckNvbm5lY3Rpb25GYWN0b3J5RGVwZW5kZW5jaWVzKAorICAgICAgICAgICAgICAgIHJ0Yzo6VGhy
ZWFkOjpDdXJyZW50KCksCisgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwK
KyAgICAgICAgICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLAorICAgICAgICAgICAgICAg
IGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZT4oKSwKKyAgICAgICAg
ICAgICAgICBDcmVhdGVDYWxsRmFjdG9yeSgpLAorICAgICAgICAgICAgICAgIGFic2w6Om1ha2Vf
dW5pcXVlPEZha2VNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+KCkpKSB7fQogCiAgIHN0ZDo6dW5pcXVl
X3B0cjxjcmlja2V0OjpTY3RwVHJhbnNwb3J0SW50ZXJuYWxGYWN0b3J5PgogICBDcmVhdGVTY3Rw
VHJhbnNwb3J0SW50ZXJuYWxGYWN0b3J5KCkgewpAQCAtMTIzLDYgKzE0Niw3IEBAIGNsYXNzIFBl
ZXJDb25uZWN0aW9uRGF0YUNoYW5uZWxCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
ewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgb2JzZXJ2ZXItPlNldFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlKHBjLmdldCgpKTsKICAgICBhdXRvIHdyYXBwZXIgPSBhYnNsOjpt
YWtlX3VuaXF1ZTxQZWVyQ29ubmVjdGlvbldyYXBwZXJGb3JEYXRhQ2hhbm5lbFRlc3Q+KAogICAg
ICAgICBwY19mYWN0b3J5LCBwYywgc3RkOjptb3ZlKG9ic2VydmVyKSk7CiAgICAgUlRDX0RDSEVD
SyhwY19mYWN0b3J5LT5sYXN0X2Zha2Vfc2N0cF90cmFuc3BvcnRfZmFjdG9yeV8pOwpAQCAtMzIz
LDYgKzM0Nyw1MiBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25EYXRhQ2hhbm5lbFRlc3QsIFNjdHBQ
b3J0UHJvcGFnYXRlZEZyb21TZHBUb1RyYW5zcG9ydCkgewogICBFWFBFQ1RfRVEoa05ld1JlY3ZQ
b3J0LCBjYWxsZWVfdHJhbnNwb3J0LT5sb2NhbF9wb3J0KCkpOwogfQogCitURVNUX1AoUGVlckNv
bm5lY3Rpb25EYXRhQ2hhbm5lbFRlc3QsCisgICAgICAgTm9TY3RwVHJhbnNwb3J0Q3JlYXRlZElm
TWVkaWFUcmFuc3BvcnREYXRhQ2hhbm5lbHNFbmFibGVkKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24g
Y29uZmlnOworICBjb25maWcudXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9
IHRydWU7CisgIGNvbmZpZy5lbmFibGVfZHRsc19zcnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJl
cXVpcmVkIHRvIHVzZSBtZWRpYSB0cmFuc3BvcnQuCisgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVl
ckNvbm5lY3Rpb25XaXRoRGF0YUNoYW5uZWwoY29uZmlnKTsKKworICBBU1NFUlRfVFJVRShjYWxs
ZXItPlNldExvY2FsRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVPZmZlcigpKSk7CisgIEVYUEVD
VF9GQUxTRShjYWxsZXItPnNjdHBfdHJhbnNwb3J0X2ZhY3RvcnkoKS0+bGFzdF9mYWtlX3NjdHBf
dHJhbnNwb3J0KCkpOworfQorCitURVNUX1AoUGVlckNvbm5lY3Rpb25EYXRhQ2hhbm5lbFRlc3Qs
CisgICAgICAgTWVkaWFUcmFuc3BvcnREYXRhQ2hhbm5lbENyZWF0ZWRFdmVuSWZTY3RwQXZhaWxh
YmxlKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOworICBjb25maWcudXNlX21lZGlhX3Ry
YW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9IHRydWU7CisgIGNvbmZpZy5lbmFibGVfZHRsc19z
cnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJlcXVpcmVkIHRvIHVzZSBtZWRpYSB0cmFuc3BvcnQu
CisgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0aW9ucyBvcHRpb25zOworICBv
cHRpb25zLmRpc2FibGVfc2N0cF9kYXRhX2NoYW5uZWxzID0gZmFsc2U7CisgIGF1dG8gY2FsbGVy
ID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoRGF0YUNoYW5uZWwoY29uZmlnLCBvcHRpb25zKTsK
KworICBBU1NFUlRfVFJVRShjYWxsZXItPlNldExvY2FsRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVh
dGVPZmZlcigpKSk7CisgIEVYUEVDVF9GQUxTRShjYWxsZXItPnNjdHBfdHJhbnNwb3J0X2ZhY3Rv
cnkoKS0+bGFzdF9mYWtlX3NjdHBfdHJhbnNwb3J0KCkpOworfQorCitURVNUX1AoUGVlckNvbm5l
Y3Rpb25EYXRhQ2hhbm5lbFRlc3QsCisgICAgICAgQ2Fubm90RW5hYmxlQm90aE1lZGlhVHJhbnNw
b3J0QW5kUnRwRGF0YUNoYW5uZWxzKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOworICBj
b25maWcuZW5hYmxlX3J0cF9kYXRhX2NoYW5uZWwgPSB0cnVlOworICBjb25maWcudXNlX21lZGlh
X3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9IHRydWU7CisgIGNvbmZpZy5lbmFibGVfZHRs
c19zcnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJlcXVpcmVkIHRvIHVzZSBtZWRpYSB0cmFuc3Bv
cnQuCisgIEVYUEVDVF9FUShDcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWcpLCBudWxscHRyKTsK
K30KKworVEVTVF9QKFBlZXJDb25uZWN0aW9uRGF0YUNoYW5uZWxUZXN0LAorICAgICAgIE1lZGlh
VHJhbnNwb3J0RGF0YUNoYW5uZWxGYWlsc1dpdGhvdXRTZGVzKSB7CisgIFJUQ0NvbmZpZ3VyYXRp
b24gY29uZmlnOworICBjb25maWcudXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVs
cyA9IHRydWU7CisgIGNvbmZpZy5lbmFibGVfZHRsc19zcnRwID0gdHJ1ZTsgIC8vIERpc2FibGVz
IFNERVMgZm9yIGRhdGEgc2VjdGlvbnMuCisgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5l
Y3Rpb25XaXRoRGF0YUNoYW5uZWwoY29uZmlnKTsKKworICBzdGQ6OnN0cmluZyBlcnJvcjsKKyAg
QVNTRVJUX0ZBTFNFKGNhbGxlci0+U2V0TG9jYWxEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9m
ZmVyKCksICZlcnJvcikpOworICBFWFBFQ1RfRVEoZXJyb3IsCisgICAgICAgICAgICAiRmFpbGVk
IHRvIHNldCBsb2NhbCBvZmZlciBzZHA6IEZhaWxlZCB0byBjcmVhdGUgZGF0YSBjaGFubmVsLiIp
OworfQorCiBJTlNUQU5USUFURV9URVNUX0NBU0VfUChQZWVyQ29ubmVjdGlvbkRhdGFDaGFubmVs
VGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFBlZXJDb25uZWN0aW9uRGF0YUNoYW5uZWxU
ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKFNkcFNlbWFudGljczo6a1BsYW5C
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcGVlcmNvbm5lY3Rpb25faGlzdG9ncmFtX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25faGlzdG9ncmFtX3Vu
aXR0ZXN0LmNjCmluZGV4IGI1YzA3ZjQ5ZWM0MTFiMDY4MGNhMTNiZGQ3NTBiYTg2ZTA0NDc5NWUu
LjQ5N2UzM2E2ODhjNjVkYjQ5MTA3NzY4YTJjOWIyYzk5NzdjMDk2ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9u
X2hpc3RvZ3JhbV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9oaXN0b2dyYW1fdW5pdHRlc3QuY2MKQEAg
LTI1MSw2ICsyNTEsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvblVzYWdlSGlzdG9ncmFtVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CisgICAgb2JzZXJ2ZXItPlNldFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlKHBjLmdldCgpKTsKICAg
ICBhdXRvIHdyYXBwZXIgPQogICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxQZWVyQ29ubmVjdGlv
bldyYXBwZXJGb3JVc2FnZUhpc3RvZ3JhbVRlc3Q+KAogICAgICAgICAgICAgcGNfZmFjdG9yeSwg
cGMsIHN0ZDo6bW92ZShvYnNlcnZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25faWNlX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5l
Y3Rpb25faWNlX3VuaXR0ZXN0LmNjCmluZGV4IDk2NTk1NmM0MmEzMjQxYjExODBlNWRiODczNTgx
NGVkZTM2ZjUzNzUuLjkyODU0OWYzODAwZjI1NjRmZTliNjc0YzJkNGM2ZjgwNWVmMGFhOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Bl
ZXJjb25uZWN0aW9uX2ljZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9pY2VfdW5pdHRlc3QuY2MKQEAg
LTIxLDcgKzIxLDkgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgor
I2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIgogI2luY2x1ZGUg
ImFwaS9wZWVyY29ubmVjdGlvbnByb3h5LmgiCisjaW5jbHVkZSAiYXBpL3VtYW1ldHJpY3MuaCIK
ICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFj
dG9yeS5oIgogI2luY2x1ZGUgInBjL3Rlc3QvZmFrZWF1ZGlvY2FwdHVyZW1vZHVsZS5oIgpAQCAt
NzcsNiArNzksOSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbldyYXBwZXJGb3JJY2VUZXN0IDogcHVi
bGljIFBlZXJDb25uZWN0aW9uV3JhcHBlciB7CiAKICAgdm9pZCBzZXRfbmV0d29yayhydGM6OkZh
a2VOZXR3b3JrTWFuYWdlciogbmV0d29yaykgeyBuZXR3b3JrXyA9IG5ldHdvcms7IH0KIAorICAv
LyBUaGUgcG9ydCBhbGxvY2F0b3IgdXNlZCBieSB0aGlzIFBDLgorICBjcmlja2V0OjpQb3J0QWxs
b2NhdG9yKiBwb3J0X2FsbG9jYXRvcl87CisKICBwcml2YXRlOgogICBydGM6OkZha2VOZXR3b3Jr
TWFuYWdlciogbmV0d29ya187CiB9OwpAQCAtMTE0LDE1ICsxMTksMTggQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb25JY2VCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIFJUQ0Nv
bmZpZ3VyYXRpb24gbW9kaWZpZWRfY29uZmlnID0gY29uZmlnOwogICAgIG1vZGlmaWVkX2NvbmZp
Zy5zZHBfc2VtYW50aWNzID0gc2RwX3NlbWFudGljc187CiAgICAgYXV0byBvYnNlcnZlciA9IGFi
c2w6Om1ha2VfdW5pcXVlPE1vY2tQZWVyQ29ubmVjdGlvbk9ic2VydmVyPigpOworICAgIGF1dG8g
cG9ydF9hbGxvY2F0b3JfY29weSA9IHBvcnRfYWxsb2NhdG9yLmdldCgpOwogICAgIGF1dG8gcGMg
PSBwY19mYWN0b3J5Xy0+Q3JlYXRlUGVlckNvbm5lY3Rpb24oCiAgICAgICAgIG1vZGlmaWVkX2Nv
bmZpZywgc3RkOjptb3ZlKHBvcnRfYWxsb2NhdG9yKSwgbnVsbHB0ciwgb2JzZXJ2ZXIuZ2V0KCkp
OwogICAgIGlmICghcGMpIHsKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIG9i
c2VydmVyLT5TZXRQZWVyQ29ubmVjdGlvbkludGVyZmFjZShwYy5nZXQoKSk7CiAgICAgYXV0byB3
cmFwcGVyID0gYWJzbDo6bWFrZV91bmlxdWU8UGVlckNvbm5lY3Rpb25XcmFwcGVyRm9ySWNlVGVz
dD4oCiAgICAgICAgIHBjX2ZhY3RvcnlfLCBwYywgc3RkOjptb3ZlKG9ic2VydmVyKSk7CiAgICAg
d3JhcHBlci0+c2V0X25ldHdvcmsoZmFrZV9uZXR3b3JrKTsKKyAgICB3cmFwcGVyLT5wb3J0X2Fs
bG9jYXRvcl8gPSBwb3J0X2FsbG9jYXRvcl9jb3B5OwogICAgIHJldHVybiB3cmFwcGVyOwogICB9
CiAKQEAgLTIwNSw3ICsyMTMsMTIgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JY2VCYXNlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIFBlZXJDb25uZWN0aW9uKiBwYyA9IHN0YXRp
Y19jYXN0PFBlZXJDb25uZWN0aW9uKj4ocGNfcHJveHktPmludGVybmFsKCkpOwogICAgIGZvciAo
YXV0byB0cmFuc2NlaXZlciA6IHBjLT5HZXRUcmFuc2NlaXZlcnNJbnRlcm5hbCgpKSB7CiAgICAg
ICBpZiAodHJhbnNjZWl2ZXItPm1lZGlhX3R5cGUoKSA9PSBjcmlja2V0OjpNRURJQV9UWVBFX0FV
RElPKSB7Ci0gICAgICAgIGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsID0gdHJhbnNjZWl2
ZXItPmludGVybmFsKCktPmNoYW5uZWwoKTsKKyAgICAgICAgLy8gVE9ETyhhbWl0aGkpOiBUaGlz
IHRlc3Qgc2VlbXMgdG8gYmUgdXNpbmcgYSBtZXRob2QgdGhhdCBzaG91bGQgbm90CisgICAgICAg
IC8vIGJlIHB1YmxpYyB8cnRwX3BhY2tldF90cmFuc3BvcnR8LiBCZWNhdXNlIHRoZSB0ZXN0IGlz
IG5vdCBtb2NraW5nCisgICAgICAgIC8vIHRoZSBjaGFubmVscyBvciB0cmFuc2NlaXZlciwgd29y
a2Fyb3VuZCB3aWxsIGJlIHRvIHxzdGF0aWNfY2FzdHwKKyAgICAgICAgLy8gdGhlIGNoYW5uZWwg
dW50aWwgdGhlIG1ldGhvZCBpcyByZXdyaXR0ZW4uCisgICAgICAgIGNyaWNrZXQ6OkJhc2VDaGFu
bmVsKiBjaGFubmVsID0gc3RhdGljX2Nhc3Q8Y3JpY2tldDo6QmFzZUNoYW5uZWwqPigKKyAgICAg
ICAgICAgIHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCkpOwogICAgICAgICBpZiAo
Y2hhbm5lbCkgewogICAgICAgICAgIGF1dG8gZHRsc190cmFuc3BvcnQgPSBzdGF0aWNfY2FzdDxj
cmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqPigKICAgICAgICAgICAgICAgY2hhbm5lbC0+
cnRwX3BhY2tldF90cmFuc3BvcnQoKSk7CkBAIC0xMDA3LDQgKzEwMjAsNDEgQEAgVEVTVF9GKFBl
ZXJDb25uZWN0aW9uSWNlQ29uZmlnVGVzdCwgU2V0U3R1bkNhbmRpZGF0ZUtlZXBhbGl2ZUludGVy
dmFsKSB7CiAgIEVYUEVDVF9FUShhY3R1YWxfc3R1bl9rZWVwYWxpdmVfaW50ZXJ2YWwudmFsdWVf
b3IoLTEpLCAzMjEpOwogfQogCitURVNUX1AoUGVlckNvbm5lY3Rpb25JY2VUZXN0LCBJY2VDcmVk
ZW50aWFsc0NyZWF0ZU9mZmVyKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOworICBjb25m
aWcuaWNlX2NhbmRpZGF0ZV9wb29sX3NpemUgPSAxOworICBhdXRvIHBjID0gQ3JlYXRlUGVlckNv
bm5lY3Rpb25XaXRoQXVkaW9WaWRlbyhjb25maWcpOworICBBU1NFUlRfTkUocGMtPnBvcnRfYWxs
b2NhdG9yXywgbnVsbHB0cik7CisgIGF1dG8gb2ZmZXIgPSBwYy0+Q3JlYXRlT2ZmZXIoKTsKKyAg
YXV0byBjcmVkZW50aWFscyA9IHBjLT5wb3J0X2FsbG9jYXRvcl8tPkdldFBvb2xlZEljZUNyZWRl
bnRpYWxzKCk7CisgIEFTU0VSVF9FUSgxdSwgY3JlZGVudGlhbHMuc2l6ZSgpKTsKKworICBhdXRv
KiBkZXNjID0gb2ZmZXItPmRlc2NyaXB0aW9uKCk7CisgIGZvciAoY29uc3QgYXV0byYgY29udGVu
dCA6IGRlc2MtPmNvbnRlbnRzKCkpIHsKKyAgICBhdXRvKiB0cmFuc3BvcnRfaW5mbyA9IGRlc2Mt
PkdldFRyYW5zcG9ydEluZm9CeU5hbWUoY29udGVudC5uYW1lKTsKKyAgICBFWFBFQ1RfRVEodHJh
bnNwb3J0X2luZm8tPmRlc2NyaXB0aW9uLmljZV91ZnJhZywgY3JlZGVudGlhbHNbMF0udWZyYWcp
OworICAgIEVYUEVDVF9FUSh0cmFuc3BvcnRfaW5mby0+ZGVzY3JpcHRpb24uaWNlX3B3ZCwgY3Jl
ZGVudGlhbHNbMF0ucHdkKTsKKyAgfQorfQorCitURVNUX1AoUGVlckNvbm5lY3Rpb25JY2VUZXN0
LCBJY2VDcmVkZW50aWFsc0NyZWF0ZUFuc3dlcikgeworICBSVENDb25maWd1cmF0aW9uIGNvbmZp
ZzsKKyAgY29uZmlnLmljZV9jYW5kaWRhdGVfcG9vbF9zaXplID0gMTsKKyAgYXV0byBwYyA9IENy
ZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlvVmlkZW8oY29uZmlnKTsKKyAgQVNTRVJUX05FKHBj
LT5wb3J0X2FsbG9jYXRvcl8sIG51bGxwdHIpOworICBhdXRvIG9mZmVyID0gcGMtPkNyZWF0ZU9m
ZmVyKCk7CisgIEFTU0VSVF9UUlVFKHBjLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihzdGQ6Om1vdmUo
b2ZmZXIpKSk7CisgIGF1dG8gYW5zd2VyID0gcGMtPkNyZWF0ZUFuc3dlcigpOworCisgIGF1dG8g
Y3JlZGVudGlhbHMgPSBwYy0+cG9ydF9hbGxvY2F0b3JfLT5HZXRQb29sZWRJY2VDcmVkZW50aWFs
cygpOworICBBU1NFUlRfRVEoMXUsIGNyZWRlbnRpYWxzLnNpemUoKSk7CisKKyAgYXV0byogZGVz
YyA9IGFuc3dlci0+ZGVzY3JpcHRpb24oKTsKKyAgZm9yIChjb25zdCBhdXRvJiBjb250ZW50IDog
ZGVzYy0+Y29udGVudHMoKSkgeworICAgIGF1dG8qIHRyYW5zcG9ydF9pbmZvID0gZGVzYy0+R2V0
VHJhbnNwb3J0SW5mb0J5TmFtZShjb250ZW50Lm5hbWUpOworICAgIEVYUEVDVF9FUSh0cmFuc3Bv
cnRfaW5mby0+ZGVzY3JpcHRpb24uaWNlX3VmcmFnLCBjcmVkZW50aWFsc1swXS51ZnJhZyk7Cisg
ICAgRVhQRUNUX0VRKHRyYW5zcG9ydF9pbmZvLT5kZXNjcmlwdGlvbi5pY2VfcHdkLCBjcmVkZW50
aWFsc1swXS5wd2QpOworICB9Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25u
ZWN0aW9uX2ludGVncmF0aW9udGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2ludGVncmF0aW9udGVzdC5jYwppbmRleCAy
OGUwMTEwMzU1MDM3ZWQ0ZDdlYzkxNjMyNmFlNjhmMTcxY2UxM2QzLi5hN2Y3YWFkMGY1NGIzMWNh
ZWQzZWE3ZmQ0NWY2M2Y0N2M5NGE5ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9pbnRlZ3JhdGlvbnRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVl
cmNvbm5lY3Rpb25faW50ZWdyYXRpb250ZXN0LmNjCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVk
ZSAiYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25u
ZWN0aW9ucHJveHkuaCIKICNpbmNsdWRlICJhcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKKyNp
bmNsdWRlICJhcGkvdGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJh
cGkvdW1hbWV0cmljcy5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRl
b19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5f
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBf
dmlkZW9fZm9ybWF0LmgiCkBAIC0yNTAsNyArMjUyLDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25X
cmFwcGVyIDogcHVibGljIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciwKICAgICB3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llcyhudWxscHRyKTsKICAg
ICBkZXBlbmRlbmNpZXMuY2VydF9nZW5lcmF0b3IgPSBzdGQ6Om1vdmUoY2VydF9nZW5lcmF0b3Ip
OwogICAgIGlmICghY2xpZW50LT5Jbml0KG51bGxwdHIsIG51bGxwdHIsIHN0ZDo6bW92ZShkZXBl
bmRlbmNpZXMpLCBuZXR3b3JrX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJf
dGhyZWFkLCBudWxscHRyKSkgeworICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcl90aHJlYWQs
IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnRfZmFjdG9y
eT0qL251bGxwdHIpKSB7CiAgICAgICBkZWxldGUgY2xpZW50OwogICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQpAQCAtMzE3LDYgKzMyMCwxMiBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbldyYXBw
ZXIgOiBwdWJsaWMgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyLAogICAgIGljZV9jb25u
ZWN0aW9uX3N0YXRlX2hpc3RvcnlfLmNsZWFyKCk7CiAgIH0KIAorICAvLyBFdmVyeSBQZWVyQ29u
bmVjdGlvbiBzdGF0ZSBpbiBvcmRlciB0aGF0IGhhcyBiZWVuIHNlZW4gYnkgdGhlIG9ic2VydmVy
LgorICBzdGQ6OnZlY3RvcjxQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25T
dGF0ZT4KKyAgcGVlcl9jb25uZWN0aW9uX3N0YXRlX2hpc3RvcnkoKSBjb25zdCB7CisgICAgcmV0
dXJuIHBlZXJfY29ubmVjdGlvbl9zdGF0ZV9oaXN0b3J5XzsKKyAgfQorCiAgIC8vIEV2ZXJ5IElD
RSBnYXRoZXJpbmcgc3RhdGUgaW4gb3JkZXIgdGhhdCBoYXMgYmVlbiBzZWVuIGJ5IHRoZSBvYnNl
cnZlci4KICAgc3RkOjp2ZWN0b3I8UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdhdGhlcmlu
Z1N0YXRlPgogICBpY2VfZ2F0aGVyaW5nX3N0YXRlX2hpc3RvcnkoKSBjb25zdCB7CkBAIC01ODEs
MTIgKzU5MCwxNCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbldyYXBwZXIgOiBwdWJsaWMgd2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyLAogICBleHBsaWNpdCBQZWVyQ29ubmVjdGlvbldyYXBw
ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGRlYnVnX25hbWUpCiAgICAgICA6IGRlYnVnX25hbWVfKGRl
YnVnX25hbWUpIHt9CiAKLSAgYm9vbCBJbml0KGNvbnN0IFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6
T3B0aW9ucyogb3B0aW9ucywKLSAgICAgICAgICAgIGNvbnN0IFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpSVENDb25maWd1cmF0aW9uKiBjb25maWcsCi0gICAgICAgICAgICB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uRGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llcywKLSAgICAgICAgICAgIHJ0Yzo6VGhy
ZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhy
ZWFkLAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6RmFrZVJ0Y0V2ZW50TG9n
RmFjdG9yeT4gZXZlbnRfbG9nX2ZhY3RvcnkpIHsKKyAgYm9vbCBJbml0KAorICAgICAgY29uc3Qg
UGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zKiBvcHRpb25zLAorICAgICAgY29uc3QgUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24qIGNvbmZpZywKKyAgICAgIHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzLAorICAgICAgcnRj
OjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJl
YWQsCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpGYWtlUnRjRXZlbnRMb2dGYWN0b3J5
PiBldmVudF9sb2dfZmFjdG9yeSwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Ok1lZGlh
VHJhbnNwb3J0RmFjdG9yeT4gbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpIHsKICAgICAvLyBUaGVy
ZSdzIGFuIGVycm9yIGluIHRoaXMgdGVzdCBjb2RlIGlmIEluaXQgZW5kcyB1cCBiZWluZyBjYWxs
ZWQgdHdpY2UuCiAgICAgUlRDX0RDSEVDSyghcGVlcl9jb25uZWN0aW9uXyk7CiAgICAgUlRDX0RD
SEVDSyghcGVlcl9jb25uZWN0aW9uX2ZhY3RvcnlfKTsKQEAgLTYyNCw2ICs2MzUsMTAgQEAgY2xh
c3MgUGVlckNvbm5lY3Rpb25XcmFwcGVyIDogcHVibGljIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25P
YnNlcnZlciwKICAgICAgIHBjX2ZhY3RvcnlfZGVwZW5kZW5jaWVzLmV2ZW50X2xvZ19mYWN0b3J5
ID0KICAgICAgICAgICB3ZWJydGM6OkNyZWF0ZVJ0Y0V2ZW50TG9nRmFjdG9yeSgpOwogICAgIH0K
KyAgICBpZiAobWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpIHsKKyAgICAgIHBjX2ZhY3RvcnlfZGVw
ZW5kZW5jaWVzLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0KKyAgICAgICAgICBzdGQ6Om1vdmUo
bWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpOworICAgIH0KICAgICBwZWVyX2Nvbm5lY3Rpb25fZmFj
dG9yeV8gPSB3ZWJydGM6OkNyZWF0ZU1vZHVsYXJQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCiAgICAg
ICAgIHN0ZDo6bW92ZShwY19mYWN0b3J5X2RlcGVuZGVuY2llcykpOwogCkBAIC05MTMsNiArOTI4
LDExIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uV3JhcHBlciA6IHB1YmxpYyB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uT2JzZXJ2ZXIsCiAgICAgRVhQRUNUX0VRKHBjKCktPmljZV9jb25uZWN0aW9uX3N0
YXRlKCksIG5ld19zdGF0ZSk7CiAgICAgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfaGlzdG9yeV8ucHVz
aF9iYWNrKG5ld19zdGF0ZSk7CiAgIH0KKyAgdm9pZCBPbkNvbm5lY3Rpb25DaGFuZ2UoCisgICAg
ICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlIG5l
d19zdGF0ZSkgb3ZlcnJpZGUgeworICAgIHBlZXJfY29ubmVjdGlvbl9zdGF0ZV9oaXN0b3J5Xy5w
dXNoX2JhY2sobmV3X3N0YXRlKTsKKyAgfQorCiAgIHZvaWQgT25JY2VHYXRoZXJpbmdDaGFuZ2Uo
CiAgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0
ZSBuZXdfc3RhdGUpIG92ZXJyaWRlIHsKICAgICBFWFBFQ1RfRVEocGMoKS0+aWNlX2dhdGhlcmlu
Z19zdGF0ZSgpLCBuZXdfc3RhdGUpOwpAQCAtMTAwOSw2ICsxMDI5LDggQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb25XcmFwcGVyIDogcHVibGljIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciwK
IAogICBzdGQ6OnZlY3RvcjxQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0
YXRlPgogICAgICAgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfaGlzdG9yeV87CisgIHN0ZDo6dmVjdG9y
PFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlPgorICAgICAgcGVl
cl9jb25uZWN0aW9uX3N0YXRlX2hpc3RvcnlfOwogICBzdGQ6OnZlY3RvcjxQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6SWNlR2F0aGVyaW5nU3RhdGU+CiAgICAgICBpY2VfZ2F0aGVyaW5nX3N0YXRl
X2hpc3RvcnlfOwogCkBAIC0xMTQyLDcgKzExNjQsOCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbklu
dGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgICAgIHNzXyhu
ZXcgcnRjOjpWaXJ0dWFsU29ja2V0U2VydmVyKCkpLAogICAgICAgICBmc3NfKG5ldyBydGM6OkZp
cmV3YWxsU29ja2V0U2VydmVyKHNzXy5nZXQoKSkpLAogICAgICAgICBuZXR3b3JrX3RocmVhZF8o
bmV3IHJ0Yzo6VGhyZWFkKGZzc18uZ2V0KCkpKSwKLSAgICAgICAgd29ya2VyX3RocmVhZF8ocnRj
OjpUaHJlYWQ6OkNyZWF0ZSgpKSB7CisgICAgICAgIHdvcmtlcl90aHJlYWRfKHJ0Yzo6VGhyZWFk
OjpDcmVhdGUoKSksCisgICAgICAgIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHNfKG5ldHdvcmtf
dGhyZWFkXy5nZXQoKSkgewogICAgIG5ldHdvcmtfdGhyZWFkXy0+U2V0TmFtZSgiUENOZXR3b3Jr
VGhyZWFkIiwgdGhpcyk7CiAgICAgd29ya2VyX3RocmVhZF8tPlNldE5hbWUoIlBDV29ya2VyVGhy
ZWFkIiwgdGhpcyk7CiAgICAgUlRDX0NIRUNLKG5ldHdvcmtfdGhyZWFkXy0+U3RhcnQoKSk7CkBA
IC0xMTk4LDcgKzEyMjEsOCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uQmFzZVRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgICBjb25zdCBQZWVyQ29ubmVjdGlvbkZh
Y3Rvcnk6Ok9wdGlvbnMqIG9wdGlvbnMsCiAgICAgICBjb25zdCBSVENDb25maWd1cmF0aW9uKiBj
b25maWcsCiAgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzIGRlcGVuZGVu
Y2llcywKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkZha2VSdGNFdmVudExvZ0ZhY3Rv
cnk+IGV2ZW50X2xvZ19mYWN0b3J5KSB7CisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpG
YWtlUnRjRXZlbnRMb2dGYWN0b3J5PiBldmVudF9sb2dfZmFjdG9yeSwKKyAgICAgIHN0ZDo6dW5p
cXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gbWVkaWFfdHJhbnNwb3J0X2Zh
Y3RvcnkpIHsKICAgICBSVENDb25maWd1cmF0aW9uIG1vZGlmaWVkX2NvbmZpZzsKICAgICBpZiAo
Y29uZmlnKSB7CiAgICAgICBtb2RpZmllZF9jb25maWcgPSAqY29uZmlnOwpAQCAtMTIxMyw3ICsx
MjM3LDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewogCiAgICAgaWYgKCFjbGllbnQtPkluaXQob3B0aW9ucywgJm1vZGlm
aWVkX2NvbmZpZywgc3RkOjptb3ZlKGRlcGVuZGVuY2llcyksCiAgICAgICAgICAgICAgICAgICAg
ICAgbmV0d29ya190aHJlYWRfLmdldCgpLCB3b3JrZXJfdGhyZWFkXy5nZXQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpKSkgeworICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSksCisgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptb3ZlKG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KSkpIHsKICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gY2xpZW50OwpAQCAtMTIyOSw3ICsxMjU0
LDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewogICAgICAgICBuZXcgd2VicnRjOjpGYWtlUnRjRXZlbnRMb2dGYWN0b3J5
KHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCkpKTsKICAgICByZXR1cm4gQ3JlYXRlUGVlckNvbm5lY3Rp
b25XcmFwcGVyKGRlYnVnX25hbWUsIG9wdGlvbnMsIGNvbmZpZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShkZXBlbmRlbmNpZXMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGV2ZW50X2xvZ19mYWN0b3J5
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoZXZl
bnRfbG9nX2ZhY3RvcnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyptZWRpYV90cmFuc3BvcnRfZmFjdG9yeT0qL251bGxwdHIpOwogICB9CiAKICAgYm9vbCBDcmVh
dGVQZWVyQ29ubmVjdGlvbldyYXBwZXJzKCkgewpAQCAtMTI1MCwxMSArMTI3NiwxMSBAQCBjbGFz
cyBQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiAgICAgc2RwX3NlbWFudGljc18gPSBjYWxsZXJfc2VtYW50aWNzOwogICAgIGNhbGxlcl8g
PSBDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXIoCiAgICAgICAgICJDYWxsZXIiLCBudWxscHRy
LCBudWxscHRyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzKG51bGxwdHIpLAot
ICAgICAgICBudWxscHRyKTsKKyAgICAgICAgbnVsbHB0ciwgLyptZWRpYV90cmFuc3BvcnRfZmFj
dG9yeT0qL251bGxwdHIpOwogICAgIHNkcF9zZW1hbnRpY3NfID0gY2FsbGVlX3NlbWFudGljczsK
ICAgICBjYWxsZWVfID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyKAogICAgICAgICAiQ2Fs
bGVlIiwgbnVsbHB0ciwgbnVsbHB0ciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2ll
cyhudWxscHRyKSwKLSAgICAgICAgbnVsbHB0cik7CisgICAgICAgIG51bGxwdHIsIC8qbWVkaWFf
dHJhbnNwb3J0X2ZhY3Rvcnk9Ki9udWxscHRyKTsKICAgICBzZHBfc2VtYW50aWNzXyA9IG9yaWdp
bmFsX3NlbWFudGljczsKICAgICByZXR1cm4gY2FsbGVyXyAmJiBjYWxsZWVfOwogICB9CkBAIC0x
MjY0LDEwICsxMjkwLDI4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25CYXNlVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICAgIGNvbnN0IFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiBjYWxsZWVfY29uZmlnKSB7CiAgICAgY2FsbGVyXyA9
IENyZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcigKICAgICAgICAgIkNhbGxlciIsIG51bGxwdHIs
ICZjYWxsZXJfY29uZmlnLAotICAgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5j
aWVzKG51bGxwdHIpLCBudWxscHRyKTsKKyAgICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRl
cGVuZGVuY2llcyhudWxscHRyKSwgbnVsbHB0ciwKKyAgICAgICAgLyptZWRpYV90cmFuc3BvcnRf
ZmFjdG9yeT0qL251bGxwdHIpOwogICAgIGNhbGxlZV8gPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldy
YXBwZXIoCiAgICAgICAgICJDYWxsZWUiLCBudWxscHRyLCAmY2FsbGVlX2NvbmZpZywKLSAgICAg
ICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwgbnVsbHB0cik7
CisgICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMobnVsbHB0ciksIG51
bGxwdHIsCisgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk9Ki9udWxscHRyKTsKKyAg
ICByZXR1cm4gY2FsbGVyXyAmJiBjYWxsZWVfOworICB9CisKKyAgYm9vbCBDcmVhdGVQZWVyQ29u
bmVjdGlvbldyYXBwZXJzV2l0aENvbmZpZ0FuZE1lZGlhVHJhbnNwb3J0RmFjdG9yeSgKKyAgICAg
IGNvbnN0IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiBjYWxsZXJf
Y29uZmlnLAorICAgICAgY29uc3QgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3Vy
YXRpb24mIGNhbGxlZV9jb25maWcsCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRp
YVRyYW5zcG9ydEZhY3Rvcnk+IGNhbGxlcl9mYWN0b3J5LAorICAgICAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRGYWN0b3J5PiBjYWxsZWVfZmFjdG9yeSkgeworICAgIGNh
bGxlcl8gPQorICAgICAgICBDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXIoIkNhbGxlciIsIG51
bGxwdHIsICZjYWxsZXJfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIHN0ZDo6bW92ZShjYWxsZXJfZmFj
dG9yeSkpOworICAgIGNhbGxlZV8gPQorICAgICAgICBDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBw
ZXIoIkNhbGxlZSIsIG51bGxwdHIsICZjYWxsZWVfY29uZmlnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxs
cHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIHN0ZDo6
bW92ZShjYWxsZWVfZmFjdG9yeSkpOwogICAgIHJldHVybiBjYWxsZXJfICYmIGNhbGxlZV87CiAg
IH0KIApAQCAtMTI3OCwxMCArMTMyMiwxMiBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVncmF0
aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgICB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uRGVwZW5kZW5jaWVzIGNhbGxlZV9kZXBlbmRlbmNpZXMpIHsKICAgICBjYWxsZXJf
ID0KICAgICAgICAgQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyKCJDYWxsZXIiLCBudWxscHRy
LCAmY2FsbGVyX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bW92ZShjYWxsZXJfZGVwZW5kZW5jaWVzKSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoY2FsbGVyX2RlcGVuZGVuY2llcyksIG51bGxw
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9y
dF9mYWN0b3J5PSovbnVsbHB0cik7CiAgICAgY2FsbGVlXyA9CiAgICAgICAgIENyZWF0ZVBlZXJD
b25uZWN0aW9uV3JhcHBlcigiQ2FsbGVlIiwgbnVsbHB0ciwgJmNhbGxlZV9jb25maWcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoY2FsbGVlX2RlcGVuZGVu
Y2llcyksIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojptb3ZlKGNhbGxlZV9kZXBlbmRlbmNpZXMpLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnRfZmFjdG9yeT0qL251bGxwdHIpOwog
ICAgIHJldHVybiBjYWxsZXJfICYmIGNhbGxlZV87CiAgIH0KIApAQCAtMTI5MCwxMCArMTMzNiwx
MiBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiAgICAgICBjb25zdCBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMm
IGNhbGxlZV9vcHRpb25zKSB7CiAgICAgY2FsbGVyXyA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV3Jh
cHBlcigKICAgICAgICAgIkNhbGxlciIsICZjYWxsZXJfb3B0aW9ucywgbnVsbHB0ciwKLSAgICAg
ICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwgbnVsbHB0cik7
CisgICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMobnVsbHB0ciksIG51
bGxwdHIsCisgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk9Ki9udWxscHRyKTsKICAg
ICBjYWxsZWVfID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyKAogICAgICAgICAiQ2FsbGVl
IiwgJmNhbGxlZV9vcHRpb25zLCBudWxscHRyLAotICAgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uRGVwZW5kZW5jaWVzKG51bGxwdHIpLCBudWxscHRyKTsKKyAgICAgICAgd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwgbnVsbHB0ciwKKyAgICAgICAgLyptZWRp
YV90cmFuc3BvcnRfZmFjdG9yeT0qL251bGxwdHIpOwogICAgIHJldHVybiBjYWxsZXJfICYmIGNh
bGxlZV87CiAgIH0KIApAQCAtMTMxNyw3ICsxMzY1LDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25J
bnRlZ3JhdGlvbkJhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzKG51bGxwdHIpOwogICAgIGRl
cGVuZGVuY2llcy5jZXJ0X2dlbmVyYXRvciA9IHN0ZDo6bW92ZShjZXJ0X2dlbmVyYXRvcik7CiAg
ICAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcigiTmV3IFBlZXIiLCBudWxscHRy
LCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
b3ZlKGRlcGVuZGVuY2llcyksIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptb3ZlKGRlcGVuZGVuY2llcyksIG51bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5PSov
bnVsbHB0cik7CiAgIH0KIAogICBjcmlja2V0OjpUZXN0VHVyblNlcnZlciogQ3JlYXRlVHVyblNl
cnZlcigKQEAgLTE0MDUsNiArMTQ1NCwxMCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVncmF0
aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAKICAgcnRjOjpWaXJ0dWFsU29j
a2V0U2VydmVyKiB2aXJ0dWFsX3NvY2tldF9zZXJ2ZXIoKSB7IHJldHVybiBzc18uZ2V0KCk7IH0K
IAorICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0UGFpciogbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0
cygpIHsKKyAgICByZXR1cm4gJmxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHNfOworICB9CisKICAg
UGVlckNvbm5lY3Rpb25XcmFwcGVyKiBjYWxsZXIoKSB7IHJldHVybiBjYWxsZXJfLmdldCgpOyB9
CiAKICAgLy8gU2V0IHRoZSB8Y2FsbGVyX3wgdG8gdGhlIHx3cmFwcGVyfCBwYXNzZWQgaW4gYW5k
IHJldHVybiB0aGUKQEAgLTE1NTcsOSArMTYxMCwxMSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbklu
dGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVtb3RlX2djbV9lbmFibGVkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXhwZWN0ZWRfY2lwaGVy
X3N1aXRlKSB7CiAgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zIGNhbGxlcl9vcHRp
b25zOwotICAgIGNhbGxlcl9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5cHRv
X3N1aXRlcyA9IGxvY2FsX2djbV9lbmFibGVkOworICAgIGNhbGxlcl9vcHRpb25zLmNyeXB0b19v
cHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0KKyAgICAgICAgbG9jYWxfZ2Nt
X2VuYWJsZWQ7CiAgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zIGNhbGxlZV9vcHRp
b25zOwotICAgIGNhbGxlZV9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5cHRv
X3N1aXRlcyA9IHJlbW90ZV9nY21fZW5hYmxlZDsKKyAgICBjYWxsZWVfb3B0aW9ucy5jcnlwdG9f
b3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9CisgICAgICAgIHJlbW90ZV9n
Y21fZW5hYmxlZDsKICAgICBUZXN0TmVnb3RpYXRlZENpcGhlclN1aXRlKGNhbGxlcl9vcHRpb25z
LCBjYWxsZWVfb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2NpcGhlcl9zdWl0ZSk7CiAgIH0KQEAgLTE1ODEsNiArMTYzNiw3IEBAIGNsYXNzIFBlZXJDb25u
ZWN0aW9uSW50ZWdyYXRpb25CYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgLy8g
b24gdGhlIG5ldHdvcmsgdGhyZWFkLgogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y3Jp
Y2tldDo6VGVzdFR1cm5TZXJ2ZXI+PiB0dXJuX3NlcnZlcnNfOwogICBzdGQ6OnZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Y3JpY2tldDo6VGVzdFR1cm5DdXN0b21pemVyPj4gdHVybl9jdXN0b21pemVy
c187CisgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRQYWlyIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9y
dHNfOwogICBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25XcmFwcGVyPiBjYWxsZXJfOwog
ICBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25XcmFwcGVyPiBjYWxsZWVfOwogfTsKQEAg
LTE4MDUsMjYgKzE4NjEsMjYgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0
LAogCiAgIGF1dG8gY2FsbGVyX3JlbW90ZV9jZXJ0ID0gR2V0UmVtb3RlQXVkaW9TU0xDZXJ0aWZp
Y2F0ZShjYWxsZXIoKSk7CiAgIEFTU0VSVF9UUlVFKGNhbGxlcl9yZW1vdGVfY2VydCk7Ci0gIEVY
UEVDVF9FUShjYWxsZWVfY2VydC0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwKKyAg
RVhQRUNUX0VRKGNhbGxlZV9jZXJ0LT5HZXRTU0xDZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCks
CiAgICAgICAgICAgICBjYWxsZXJfcmVtb3RlX2NlcnQtPlRvUEVNU3RyaW5nKCkpOwogCiAgIGF1
dG8gY2FsbGVlX3JlbW90ZV9jZXJ0ID0gR2V0UmVtb3RlQXVkaW9TU0xDZXJ0aWZpY2F0ZShjYWxs
ZWUoKSk7CiAgIEFTU0VSVF9UUlVFKGNhbGxlZV9yZW1vdGVfY2VydCk7Ci0gIEVYUEVDVF9FUShj
YWxsZXJfY2VydC0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwKKyAgRVhQRUNUX0VR
KGNhbGxlcl9jZXJ0LT5HZXRTU0xDZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCksCiAgICAgICAg
ICAgICBjYWxsZWVfcmVtb3RlX2NlcnQtPlRvUEVNU3RyaW5nKCkpOwogCiAgIGF1dG8gY2FsbGVy
X3JlbW90ZV9jZXJ0X2NoYWluID0gR2V0UmVtb3RlQXVkaW9TU0xDZXJ0Q2hhaW4oY2FsbGVyKCkp
OwogICBBU1NFUlRfVFJVRShjYWxsZXJfcmVtb3RlX2NlcnRfY2hhaW4pOwogICBBU1NFUlRfRVEo
MVUsIGNhbGxlcl9yZW1vdGVfY2VydF9jaGFpbi0+R2V0U2l6ZSgpKTsKICAgYXV0byByZW1vdGVf
Y2VydCA9ICZjYWxsZXJfcmVtb3RlX2NlcnRfY2hhaW4tPkdldCgwKTsKLSAgRVhQRUNUX0VRKGNh
bGxlZV9jZXJ0LT5zc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpLAorICBFWFBFQ1RfRVEo
Y2FsbGVlX2NlcnQtPkdldFNTTENlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwKICAgICAgICAg
ICAgIHJlbW90ZV9jZXJ0LT5Ub1BFTVN0cmluZygpKTsKIAogICBhdXRvIGNhbGxlZV9yZW1vdGVf
Y2VydF9jaGFpbiA9IEdldFJlbW90ZUF1ZGlvU1NMQ2VydENoYWluKGNhbGxlZSgpKTsKICAgQVNT
RVJUX1RSVUUoY2FsbGVlX3JlbW90ZV9jZXJ0X2NoYWluKTsKICAgQVNTRVJUX0VRKDFVLCBjYWxs
ZWVfcmVtb3RlX2NlcnRfY2hhaW4tPkdldFNpemUoKSk7CiAgIHJlbW90ZV9jZXJ0ID0gJmNhbGxl
ZV9yZW1vdGVfY2VydF9jaGFpbi0+R2V0KDApOwotICBFWFBFQ1RfRVEoY2FsbGVyX2NlcnQtPnNz
bF9jZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCksCisgIEVYUEVDVF9FUShjYWxsZXJfY2VydC0+
R2V0U1NMQ2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpLAogICAgICAgICAgICAgcmVtb3RlX2Nl
cnQtPlRvUEVNU3RyaW5nKCkpOwogfQogCkBAIC0yODQyLDkgKzI4OTgsMTAgQEAgVEVTVF9QKFBl
ZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LCBDYWxsZXJEdGxzMTBUb0NhbGxlZUR0bHMxMikg
ewogVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LAogICAgICAgIEFlczEyOFNo
YTFfMzJfQ2lwaGVyTm90VXNlZFdoZW5Pbmx5Q2FsbGVyU3VwcG9ydGVkKSB7CiAgIFBlZXJDb25u
ZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyBjYWxsZXJfb3B0aW9uczsKLSAgY2FsbGVyX29wdGlvbnMu
Y3J5cHRvX29wdGlvbnMuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPSB0cnVl
OworICBjYWxsZXJfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9hZXMxMjhfc2hh
MV8zMl9jcnlwdG9fY2lwaGVyID0gdHJ1ZTsKICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRp
b25zIGNhbGxlZV9vcHRpb25zOwotICBjYWxsZWVfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFi
bGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9IGZhbHNlOworICBjYWxsZWVfb3B0aW9u
cy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVy
ID0KKyAgICAgIGZhbHNlOwogICBpbnQgZXhwZWN0ZWRfY2lwaGVyX3N1aXRlID0gcnRjOjpTUlRQ
X0FFUzEyOF9DTV9TSEExXzgwOwogICBUZXN0TmVnb3RpYXRlZENpcGhlclN1aXRlKGNhbGxlcl9v
cHRpb25zLCBjYWxsZWVfb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZF9jaXBoZXJfc3VpdGUpOwpAQCAtMjg1Myw5ICsyOTEwLDEwIEBAIFRFU1RfUChQZWVyQ29u
bmVjdGlvbkludGVncmF0aW9uVGVzdCwKIFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVncmF0aW9u
VGVzdCwKICAgICAgICBBZXMxMjhTaGExXzMyX0NpcGhlck5vdFVzZWRXaGVuT25seUNhbGxlZVN1
cHBvcnRlZCkgewogICBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMgY2FsbGVyX29wdGlv
bnM7Ci0gIGNhbGxlcl9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9hZXMxMjhfc2hhMV8z
Ml9jcnlwdG9fY2lwaGVyID0gZmFsc2U7CisgIGNhbGxlcl9vcHRpb25zLmNyeXB0b19vcHRpb25z
LnNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPQorICAgICAgZmFsc2U7
CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyBjYWxsZWVfb3B0aW9uczsKLSAgY2Fs
bGVlX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19j
aXBoZXIgPSB0cnVlOworICBjYWxsZWVfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJs
ZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gdHJ1ZTsKICAgaW50IGV4cGVjdGVkX2Np
cGhlcl9zdWl0ZSA9IHJ0Yzo6U1JUUF9BRVMxMjhfQ01fU0hBMV84MDsKICAgVGVzdE5lZ290aWF0
ZWRDaXBoZXJTdWl0ZShjYWxsZXJfb3B0aW9ucywgY2FsbGVlX29wdGlvbnMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfY2lwaGVyX3N1aXRlKTsKQEAgLTI4NjMsOSArMjky
MSw5IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uVGVzdCwKIAogVEVTVF9QKFBl
ZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LCBBZXMxMjhTaGExXzMyX0NpcGhlclVzZWRXaGVu
U3VwcG9ydGVkKSB7CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyBjYWxsZXJfb3B0
aW9uczsKLSAgY2FsbGVyX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2FlczEyOF9zaGEx
XzMyX2NyeXB0b19jaXBoZXIgPSB0cnVlOworICBjYWxsZXJfb3B0aW9ucy5jcnlwdG9fb3B0aW9u
cy5zcnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gdHJ1ZTsKICAgUGVl
ckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zIGNhbGxlZV9vcHRpb25zOwotICBjYWxsZWVfb3B0
aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9
IHRydWU7CisgIGNhbGxlZV9vcHRpb25zLmNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2FlczEy
OF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPSB0cnVlOwogICBpbnQgZXhwZWN0ZWRfY2lwaGVyX3N1
aXRlID0gcnRjOjpTUlRQX0FFUzEyOF9DTV9TSEExXzMyOwogICBUZXN0TmVnb3RpYXRlZENpcGhl
clN1aXRlKGNhbGxlcl9vcHRpb25zLCBjYWxsZWVfb3B0aW9ucywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZF9jaXBoZXJfc3VpdGUpOwpAQCAtMjkxNSw3ICsyOTczLDcgQEAg
VEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LAogLy8gd29ya3Mgd2l0aCBpdC4K
IFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uVGVzdCwgRW5kVG9FbmRDYWxsV2l0aEdj
bUNpcGhlcikgewogICBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMgZ2NtX29wdGlvbnM7
Ci0gIGdjbV9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9
IHRydWU7CisgIGdjbV9vcHRpb25zLmNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlw
dG9fc3VpdGVzID0gdHJ1ZTsKICAgQVNTRVJUX1RSVUUoCiAgICAgICBDcmVhdGVQZWVyQ29ubmVj
dGlvbldyYXBwZXJzV2l0aE9wdGlvbnMoZ2NtX29wdGlvbnMsIGdjbV9vcHRpb25zKSk7CiAgIENv
bm5lY3RGYWtlU2lnbmFsaW5nKCk7CkBAIC0zMzI5LDYgKzMzODcsMTQ2IEBAIFRFU1RfUChQZWVy
Q29ubmVjdGlvbkludGVncmF0aW9uVGVzdCwKIAogI2VuZGlmICAvLyBIQVZFX1NDVFAKIAorLy8g
VGhpcyB0ZXN0IHNldHMgdXAgYSBjYWxsIGJldHdlZW4gdHdvIHBhcnRpZXMgd2l0aCBhIG1lZGlh
IHRyYW5zcG9ydCBkYXRhCisvLyBjaGFubmVsLgorVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdy
YXRpb25UZXN0LCBNZWRpYVRyYW5zcG9ydERhdGFDaGFubmVsRW5kVG9FbmQpIHsKKyAgUGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gcnRjX2NvbmZpZzsKKyAgcnRjX2Nv
bmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1ZTsKKyAgcnRj
X2NvbmZpZy5lbmFibGVfZHRsc19zcnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJlcXVpcmVkIGZv
ciBtZWRpYSB0cmFuc3BvcnQuCisgIEFTU0VSVF9UUlVFKENyZWF0ZVBlZXJDb25uZWN0aW9uV3Jh
cHBlcnNXaXRoQ29uZmlnQW5kTWVkaWFUcmFuc3BvcnRGYWN0b3J5KAorICAgICAgcnRjX2NvbmZp
ZywgcnRjX2NvbmZpZywgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5maXJzdF9mYWN0b3J5
KCksCisgICAgICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPnNlY29uZF9mYWN0b3J5KCkp
KTsKKyAgQ29ubmVjdEZha2VTaWduYWxpbmcoKTsKKworICAvLyBFeHBlY3QgdGhhdCBkYXRhIGNo
YW5uZWwgY3JlYXRlZCBvbiBjYWxsZXIgc2lkZSB3aWxsIHNob3cgdXAgZm9yIGNhbGxlZSBhcwor
ICAvLyB3ZWxsLgorICBjYWxsZXIoKS0+Q3JlYXRlRGF0YUNoYW5uZWwoKTsKKyAgY2FsbGVyKCkt
PkNyZWF0ZUFuZFNldEFuZFNpZ25hbE9mZmVyKCk7CisgIEFTU0VSVF9UUlVFX1dBSVQoU2lnbmFs
aW5nU3RhdGVTdGFibGUoKSwga0RlZmF1bHRUaW1lb3V0KTsKKworICAvLyBFbnN1cmUgdGhhdCB0
aGUgbWVkaWEgdHJhbnNwb3J0IGlzIHJlYWR5LgorICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRz
KCktPlNldFN0YXRlKHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKTsKKyAg
bG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5GbHVzaEFzeW5jSW52b2tlcygpOworCisgIC8v
IENhbGxlciBkYXRhIGNoYW5uZWwgc2hvdWxkIGFscmVhZHkgZXhpc3QgKGl0IGNyZWF0ZWQgb25l
KS4gQ2FsbGVlIGRhdGEKKyAgLy8gY2hhbm5lbCBtYXkgbm90IGV4aXN0IHlldCwgc2luY2UgbmVn
b3RpYXRpb24gaGFwcGVucyBpbi1iYW5kLCBub3QgaW4gU0RQLgorICBBU1NFUlRfTkUobnVsbHB0
ciwgY2FsbGVyKCktPmRhdGFfY2hhbm5lbCgpKTsKKyAgQVNTRVJUX1RSVUVfV0FJVChjYWxsZWUo
KS0+ZGF0YV9jaGFubmVsKCkgIT0gbnVsbHB0ciwga0RlZmF1bHRUaW1lb3V0KTsKKyAgRVhQRUNU
X1RSVUVfV0FJVChjYWxsZXIoKS0+ZGF0YV9vYnNlcnZlcigpLT5Jc09wZW4oKSwga0RlZmF1bHRU
aW1lb3V0KTsKKyAgRVhQRUNUX1RSVUVfV0FJVChjYWxsZWUoKS0+ZGF0YV9vYnNlcnZlcigpLT5J
c09wZW4oKSwga0RlZmF1bHRUaW1lb3V0KTsKKworICAvLyBFbnN1cmUgZGF0YSBjYW4gYmUgc2Vu
dCBpbiBib3RoIGRpcmVjdGlvbnMuCisgIHN0ZDo6c3RyaW5nIGRhdGEgPSAiaGVsbG8gd29ybGQi
OworICBjYWxsZXIoKS0+ZGF0YV9jaGFubmVsKCktPlNlbmQoRGF0YUJ1ZmZlcihkYXRhKSk7Cisg
IEVYUEVDVF9FUV9XQUlUKGRhdGEsIGNhbGxlZSgpLT5kYXRhX29ic2VydmVyKCktPmxhc3RfbWVz
c2FnZSgpLAorICAgICAgICAgICAgICAgICBrRGVmYXVsdFRpbWVvdXQpOworICBjYWxsZWUoKS0+
ZGF0YV9jaGFubmVsKCktPlNlbmQoRGF0YUJ1ZmZlcihkYXRhKSk7CisgIEVYUEVDVF9FUV9XQUlU
KGRhdGEsIGNhbGxlcigpLT5kYXRhX29ic2VydmVyKCktPmxhc3RfbWVzc2FnZSgpLAorICAgICAg
ICAgICAgICAgICBrRGVmYXVsdFRpbWVvdXQpOworfQorCisvLyBFbnN1cmUgdGhhdCB3aGVuIHRo
ZSBjYWxsZWUgY2xvc2VzIGEgbWVkaWEgdHJhbnNwb3J0IGRhdGEgY2hhbm5lbCwgdGhlCisvLyBj
bG9zaW5nIHByb2NlZHVyZSByZXN1bHRzIGluIHRoZSBkYXRhIGNoYW5uZWwgYmVpbmcgY2xvc2Vk
IGZvciB0aGUgY2FsbGVyCisvLyBhcyB3ZWxsLgorVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdy
YXRpb25UZXN0LCBNZWRpYVRyYW5zcG9ydERhdGFDaGFubmVsQ2FsbGVlQ2xvc2VzKSB7CisgIFBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uIHJ0Y19jb25maWc7CisgIHJ0
Y19jb25maWcudXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9IHRydWU7Cisg
IHJ0Y19jb25maWcuZW5hYmxlX2R0bHNfc3J0cCA9IGZhbHNlOyAgLy8gU0RFUyBpcyByZXF1aXJl
ZCBmb3IgbWVkaWEgdHJhbnNwb3J0LgorICBBU1NFUlRfVFJVRShDcmVhdGVQZWVyQ29ubmVjdGlv
bldyYXBwZXJzV2l0aENvbmZpZ0FuZE1lZGlhVHJhbnNwb3J0RmFjdG9yeSgKKyAgICAgIHJ0Y19j
b25maWcsIHJ0Y19jb25maWcsIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+Zmlyc3RfZmFj
dG9yeSgpLAorICAgICAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5zZWNvbmRfZmFjdG9y
eSgpKSk7CisgIENvbm5lY3RGYWtlU2lnbmFsaW5nKCk7CisKKyAgLy8gQ3JlYXRlIGEgZGF0YSBj
aGFubmVsIG9uIHRoZSBjYWxsZXIgYW5kIHNpZ25hbCBpdCB0byB0aGUgY2FsbGVlLgorICBjYWxs
ZXIoKS0+Q3JlYXRlRGF0YUNoYW5uZWwoKTsKKyAgY2FsbGVyKCktPkNyZWF0ZUFuZFNldEFuZFNp
Z25hbE9mZmVyKCk7CisgIEFTU0VSVF9UUlVFX1dBSVQoU2lnbmFsaW5nU3RhdGVTdGFibGUoKSwg
a0RlZmF1bHRUaW1lb3V0KTsKKworICAvLyBFbnN1cmUgdGhhdCB0aGUgbWVkaWEgdHJhbnNwb3J0
IGlzIHJlYWR5LgorICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPlNldFN0YXRlKHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKTsKKyAgbG9vcGJhY2tfbWVkaWFfdHJh
bnNwb3J0cygpLT5GbHVzaEFzeW5jSW52b2tlcygpOworCisgIC8vIERhdGEgY2hhbm5lbHMgZXhp
c3QgYW5kIG9wZW4gb24gYm90aCBlbmRzIG9mIHRoZSBjb25uZWN0aW9uLgorICBBU1NFUlRfTkUo
bnVsbHB0ciwgY2FsbGVyKCktPmRhdGFfY2hhbm5lbCgpKTsKKyAgQVNTRVJUX1RSVUVfV0FJVChj
YWxsZWUoKS0+ZGF0YV9jaGFubmVsKCkgIT0gbnVsbHB0ciwga0RlZmF1bHRUaW1lb3V0KTsKKyAg
QVNTRVJUX1RSVUVfV0FJVChjYWxsZXIoKS0+ZGF0YV9vYnNlcnZlcigpLT5Jc09wZW4oKSwga0Rl
ZmF1bHRUaW1lb3V0KTsKKyAgQVNTRVJUX1RSVUVfV0FJVChjYWxsZWUoKS0+ZGF0YV9vYnNlcnZl
cigpLT5Jc09wZW4oKSwga0RlZmF1bHRUaW1lb3V0KTsKKworICAvLyBDbG9zZSB0aGUgZGF0YSBj
aGFubmVsIG9uIHRoZSBjYWxsZWUgc2lkZSwgYW5kIHdhaXQgZm9yIGl0IHRvIHJlYWNoIHRoZQor
ICAvLyAiY2xvc2VkIiBzdGF0ZSBvbiBib3RoIHNpZGVzLgorICBjYWxsZWUoKS0+ZGF0YV9jaGFu
bmVsKCktPkNsb3NlKCk7CisgIEVYUEVDVF9UUlVFX1dBSVQoIWNhbGxlcigpLT5kYXRhX29ic2Vy
dmVyKCktPklzT3BlbigpLCBrRGVmYXVsdFRpbWVvdXQpOworICBFWFBFQ1RfVFJVRV9XQUlUKCFj
YWxsZWUoKS0+ZGF0YV9vYnNlcnZlcigpLT5Jc09wZW4oKSwga0RlZmF1bHRUaW1lb3V0KTsKK30K
KworVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LAorICAgICAgIE1lZGlhVHJh
bnNwb3J0RGF0YUNoYW5uZWxDb25maWdTZW50VG9PdGhlclNpZGUpIHsKKyAgUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gcnRjX2NvbmZpZzsKKyAgcnRjX2NvbmZpZy51
c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1ZTsKKyAgcnRjX2NvbmZp
Zy5lbmFibGVfZHRsc19zcnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJlcXVpcmVkIGZvciBtZWRp
YSB0cmFuc3BvcnQuCisgIEFTU0VSVF9UUlVFKENyZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcnNX
aXRoQ29uZmlnQW5kTWVkaWFUcmFuc3BvcnRGYWN0b3J5KAorICAgICAgcnRjX2NvbmZpZywgcnRj
X2NvbmZpZywgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5maXJzdF9mYWN0b3J5KCksCisg
ICAgICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPnNlY29uZF9mYWN0b3J5KCkpKTsKKyAg
Q29ubmVjdEZha2VTaWduYWxpbmcoKTsKKworICAvLyBDcmVhdGUgYSBkYXRhIGNoYW5uZWwgd2l0
aCBhIG5vbi1kZWZhdWx0IGNvbmZpZ3VyYXRpb24gYW5kIHNpZ25hbCBpdCB0byB0aGUKKyAgLy8g
Y2FsbGVlLgorICB3ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OworICBpbml0LmlkID0gNTM7
CisgIGluaXQubWF4UmV0cmFuc21pdHMgPSA1MjsKKyAgY2FsbGVyKCktPkNyZWF0ZURhdGFDaGFu
bmVsKCJkYXRhLWNoYW5uZWwiLCAmaW5pdCk7CisgIGNhbGxlcigpLT5DcmVhdGVBbmRTZXRBbmRT
aWduYWxPZmZlcigpOworICBBU1NFUlRfVFJVRV9XQUlUKFNpZ25hbGluZ1N0YXRlU3RhYmxlKCks
IGtEZWZhdWx0VGltZW91dCk7CisKKyAgLy8gRW5zdXJlIHRoYXQgdGhlIG1lZGlhIHRyYW5zcG9y
dCBpcyByZWFkeS4KKyAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5TZXRTdGF0ZSh3ZWJy
dGM6Ok1lZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJsZSk7CisgIGxvb3BiYWNrX21lZGlhX3Ry
YW5zcG9ydHMoKS0+Rmx1c2hBc3luY0ludm9rZXMoKTsKKworICAvLyBFbnN1cmUgdGhhdCB0aGUg
ZGF0YSBjaGFubmVsIGV4aXN0cyBvbiB0aGUgY2FsbGVlIHdpdGggdGhlIGNvcnJlY3QKKyAgLy8g
Y29uZmlndXJhdGlvbi4KKyAgQVNTRVJUX1RSVUVfV0FJVChjYWxsZWUoKS0+ZGF0YV9jaGFubmVs
KCkgIT0gbnVsbHB0ciwga0RlZmF1bHRUaW1lb3V0KTsKKyAgQVNTRVJUX1RSVUVfV0FJVChjYWxs
ZWUoKS0+ZGF0YV9vYnNlcnZlcigpLT5Jc09wZW4oKSwga0RlZmF1bHRUaW1lb3V0KTsKKyAgRVhQ
RUNUX0VRKGluaXQuaWQsIGNhbGxlZSgpLT5kYXRhX2NoYW5uZWwoKS0+aWQoKSk7CisgIEVYUEVD
VF9FUSgiZGF0YS1jaGFubmVsIiwgY2FsbGVlKCktPmRhdGFfY2hhbm5lbCgpLT5sYWJlbCgpKTsK
KyAgRVhQRUNUX0VRKGluaXQubWF4UmV0cmFuc21pdHMsIGNhbGxlZSgpLT5kYXRhX2NoYW5uZWwo
KS0+bWF4UmV0cmFuc21pdHMoKSk7CisgIEVYUEVDVF9GQUxTRShjYWxsZWUoKS0+ZGF0YV9jaGFu
bmVsKCktPm5lZ290aWF0ZWQoKSk7Cit9CisKK1RFU1RfUChQZWVyQ29ubmVjdGlvbkludGVncmF0
aW9uVGVzdCwgTWVkaWFUcmFuc3BvcnRCaWRpcmVjdGlvbmFsQXVkaW8pIHsKKyAgUGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gcnRjX2NvbmZpZzsKKyAgcnRjX2NvbmZp
Zy51c2VfbWVkaWFfdHJhbnNwb3J0ID0gdHJ1ZTsKKyAgcnRjX2NvbmZpZy5lbmFibGVfZHRsc19z
cnRwID0gZmFsc2U7ICAvLyBTREVTIGlzIHJlcXVpcmVkIGZvciBtZWRpYSB0cmFuc3BvcnQuCisg
IEFTU0VSVF9UUlVFKENyZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcnNXaXRoQ29uZmlnQW5kTWVk
aWFUcmFuc3BvcnRGYWN0b3J5KAorICAgICAgcnRjX2NvbmZpZywgcnRjX2NvbmZpZywgbG9vcGJh
Y2tfbWVkaWFfdHJhbnNwb3J0cygpLT5maXJzdF9mYWN0b3J5KCksCisgICAgICBsb29wYmFja19t
ZWRpYV90cmFuc3BvcnRzKCktPnNlY29uZF9mYWN0b3J5KCkpKTsKKyAgQ29ubmVjdEZha2VTaWdu
YWxpbmcoKTsKKworICBjYWxsZXIoKS0+QWRkQXVkaW9UcmFjaygpOworICBjYWxsZWUoKS0+QWRk
QXVkaW9UcmFjaygpOworICAvLyBTdGFydCBvZmZlci9hbnN3ZXIgZXhjaGFuZ2UgYW5kIHdhaXQg
Zm9yIGl0IHRvIGNvbXBsZXRlLgorICBjYWxsZXIoKS0+Q3JlYXRlQW5kU2V0QW5kU2lnbmFsT2Zm
ZXIoKTsKKyAgQVNTRVJUX1RSVUVfV0FJVChTaWduYWxpbmdTdGF0ZVN0YWJsZSgpLCBrRGVmYXVs
dFRpbWVvdXQpOworCisgIC8vIEVuc3VyZSB0aGF0IHRoZSBtZWRpYSB0cmFuc3BvcnQgaXMgcmVh
ZHkuCisgIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+U2V0U3RhdGUod2VicnRjOjpNZWRp
YVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpOworICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRz
KCktPkZsdXNoQXN5bmNJbnZva2VzKCk7CisKKyAgTWVkaWFFeHBlY3RhdGlvbnMgbWVkaWFfZXhw
ZWN0YXRpb25zOworICBtZWRpYV9leHBlY3RhdGlvbnMuRXhwZWN0QmlkaXJlY3Rpb25hbEF1ZGlv
KCk7CisgIEFTU0VSVF9UUlVFKEV4cGVjdE5ld0ZyYW1lcyhtZWRpYV9leHBlY3RhdGlvbnMpKTsK
KworICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0UGFpcjo6U3RhdHMgZmlyc3Rfc3RhdHMgPQorICAg
ICAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5GaXJzdFN0YXRzKCk7CisgIHdlYnJ0Yzo6
TWVkaWFUcmFuc3BvcnRQYWlyOjpTdGF0cyBzZWNvbmRfc3RhdHMgPQorICAgICAgbG9vcGJhY2tf
bWVkaWFfdHJhbnNwb3J0cygpLT5TZWNvbmRTdGF0cygpOworCisgIEVYUEVDVF9HVChmaXJzdF9z
dGF0cy5yZWNlaXZlZF9hdWRpb19mcmFtZXMsIDApOworICBFWFBFQ1RfR0Uoc2Vjb25kX3N0YXRz
LnNlbnRfYXVkaW9fZnJhbWVzLCBmaXJzdF9zdGF0cy5yZWNlaXZlZF9hdWRpb19mcmFtZXMpOwor
CisgIEVYUEVDVF9HVChzZWNvbmRfc3RhdHMucmVjZWl2ZWRfYXVkaW9fZnJhbWVzLCAwKTsKKyAg
RVhQRUNUX0dFKGZpcnN0X3N0YXRzLnNlbnRfYXVkaW9fZnJhbWVzLCBzZWNvbmRfc3RhdHMucmVj
ZWl2ZWRfYXVkaW9fZnJhbWVzKTsKK30KKwogLy8gVGVzdCB0aGF0IHRoZSBJQ0UgY29ubmVjdGlv
biBhbmQgZ2F0aGVyaW5nIHN0YXRlcyBldmVudHVhbGx5IHJlYWNoCiAvLyAiY29tcGxldGUiLgog
VEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25UZXN0LCBJY2VTdGF0ZXNSZWFjaENvbXBs
ZXRpb24pIHsKQEAgLTM1NTcsNiArMzc1NSwxNyBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRl
Z3JhdGlvbkljZVN0YXRlc1Rlc3QsIFZlcmlmeUljZVN0YXRlcykgewogICAgICAgICAgICAgICBF
bGVtZW50c0FyZShQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25DaGVja2lu
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJ
Y2VDb25uZWN0aW9uQ29ubmVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6a0ljZUNvbm5lY3Rpb25Db21wbGV0ZWQpKTsKKyAgLy8gQWZ0ZXIg
dGhlIGljZSB0cmFuc3BvcnQgdHJhbnNpdGlvbnMgZnJvbSBjaGVja2luZyB0byBjb25uZWN0ZWQg
d2UgcmV2ZXJ0CisgIC8vIGJhY2sgdG8gbmV3IGFzIHRoZSBzdGFuZGFyZCByZXF1aXJlcywgYXMg
YXQgdGhhdCBwb2ludCB0aGUgRFRMUyB0cmFuc3BvcnQKKyAgLy8gaXMgaW4gdGhlICJuZXciIHN0
YXRlIHdoaWxlIG5vIHRyYW5zcG9ydHMgYXJlICJjb25uZWN0aW5nIiwgImNoZWNraW5nIiwKKyAg
Ly8gImZhaWxlZCIgb3IgZGlzY29ubmVjdGVkLiBUaGlzIGlzIHByZXR0eSB1bmludHVpdGl2ZSwg
YW5kIHdlIG1pZ2h0IHdhbnQgdG8KKyAgLy8gYW1lbmQgdGhlIHNwZWMgdG8gaGFuZGxlIHRoaXMg
Y2FzZSBtb3JlIGdyYWNlZnVsbHkuCisgIEVYUEVDVF9USEFUKAorICAgICAgY2FsbGVyKCktPnBl
ZXJfY29ubmVjdGlvbl9zdGF0ZV9oaXN0b3J5KCksCisgICAgICBFbGVtZW50c0FyZShQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3RpbmcsCisgICAg
ICAgICAgICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0
ZTo6a05ldywKKyAgICAgICAgICAgICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVy
Q29ubmVjdGlvblN0YXRlOjprQ29ubmVjdGluZywKKyAgICAgICAgICAgICAgICAgIFBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29ubmVjdGVkKSk7CiAgIEVY
UEVDVF9USEFUKGNhbGxlcigpLT5pY2VfZ2F0aGVyaW5nX3N0YXRlX2hpc3RvcnkoKSwKICAgICAg
ICAgICAgICAgRWxlbWVudHNBcmUoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VHYXRoZXJp
bmdHYXRoZXJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjprSWNlR2F0aGVyaW5nQ29tcGxldGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2pzZXBfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9w
ZWVyY29ubmVjdGlvbl9qc2VwX3VuaXR0ZXN0LmNjCmluZGV4IDdkZTBhM2ZmMTRhNGFiOTdhOThj
YmM3NjdhOTM5OGNjN2ZhODg4YjEuLmZlODc4YjA1Zjc4YzIzMTc3MDA2OGFlYWUyY2NlYTYxOTAz
NTI0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3BlZXJjb25uZWN0aW9uX2pzZXBfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fanNlcF91bml0
dGVzdC5jYwpAQCAtOTUsNiArOTUsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkpzZXBUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
KyAgICBvYnNlcnZlci0+U2V0UGVlckNvbm5lY3Rpb25JbnRlcmZhY2UocGMuZ2V0KCkpOwogICAg
IHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxQZWVyQ29ubmVjdGlvbldyYXBwZXI+KHBjX2ZhY3Rv
cnksIHBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bW92ZShvYnNlcnZlcikpOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9tZWRpYV91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Bl
ZXJjb25uZWN0aW9uX21lZGlhX3VuaXR0ZXN0LmNjCmluZGV4IDZmNGZlMWUzZjQ4OWU5ODkyZDY0
OTIxNjhiMzdlYmRkNTAzMGU1YmYuLjZhZjBjOTg4N2U2ZTJkZmU0YTFjMDdjYWQyMjBlYmQxMjBl
NTY0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3BlZXJjb25uZWN0aW9uX21lZGlhX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX21lZGlhX3Vu
aXR0ZXN0LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8dHVwbGU+CiAKICNpbmNsdWRl
ICJhcGkvY2FsbC9jYWxsZmFjdG9yeWludGVyZmFjZS5oIgorI2luY2x1ZGUgImFwaS90ZXN0L2Zh
a2VfbWVkaWFfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0
Y19ldmVudF9sb2dfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZW1lZGlhZW5n
aW5lLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvZmFrZXBvcnRhbGxvY2F0b3IuaCIKQEAgLTcxLDEz
ICs3MiwyNiBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbk1lZGlhQmFzZVRlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsKICAgICByZXR1cm4gQ3JlYXRlUGVlckNvbm5lY3Rpb24oUlRDQ29uZmln
dXJhdGlvbigpKTsKICAgfQogCisgIC8vIENyZWF0ZXMgUGVlckNvbm5lY3Rpb25GYWN0b3J5IGFu
ZCBQZWVyQ29ubmVjdGlvbiBmb3IgZ2l2ZW4gY29uZmlndXJhdGlvbi4KKyAgLy8gTm90ZSB0aGF0
IFBlZXJDb25uZWN0aW9uRmFjdG9yeSBpcyBjcmVhdGVkIHdpdGggTWVkaWFUcmFuc3BvcnRGYWN0
b3J5LAorICAvLyBiZWNhdXNlIHNvbWUgdGVzdHMgcGFzcyBjb25maWcudXNlX21lZGlhX3RyYW5z
cG9ydCA9IHRydWUuCiAgIFdyYXBwZXJQdHIgQ3JlYXRlUGVlckNvbm5lY3Rpb24oY29uc3QgUlRD
Q29uZmlndXJhdGlvbiYgY29uZmlnKSB7CiAgICAgYXV0byBtZWRpYV9lbmdpbmUgPSBhYnNsOjpt
YWtlX3VuaXF1ZTxGYWtlTWVkaWFFbmdpbmU+KCk7CiAgICAgYXV0byogbWVkaWFfZW5naW5lX3B0
ciA9IG1lZGlhX2VuZ2luZS5nZXQoKTsKLSAgICBhdXRvIHBjX2ZhY3RvcnkgPSBDcmVhdGVNb2R1
bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgp
LCBydGM6OlRocmVhZDo6Q3VycmVudCgpLCBydGM6OlRocmVhZDo6Q3VycmVudCgpLAotICAgICAg
ICBzdGQ6Om1vdmUobWVkaWFfZW5naW5lKSwgQ3JlYXRlQ2FsbEZhY3RvcnkoKSwKLSAgICAgICAg
Q3JlYXRlUnRjRXZlbnRMb2dGYWN0b3J5KCkpOworCisgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5
RGVwZW5kZW5jaWVzIGZhY3RvcnlfZGVwZW5kZW5jaWVzOworCisgICAgZmFjdG9yeV9kZXBlbmRl
bmNpZXMubmV0d29ya190aHJlYWQgPSBydGM6OlRocmVhZDo6Q3VycmVudCgpOworICAgIGZhY3Rv
cnlfZGVwZW5kZW5jaWVzLndvcmtlcl90aHJlYWQgPSBydGM6OlRocmVhZDo6Q3VycmVudCgpOwor
ICAgIGZhY3RvcnlfZGVwZW5kZW5jaWVzLnNpZ25hbGluZ190aHJlYWQgPSBydGM6OlRocmVhZDo6
Q3VycmVudCgpOworICAgIGZhY3RvcnlfZGVwZW5kZW5jaWVzLm1lZGlhX2VuZ2luZSA9IHN0ZDo6
bW92ZShtZWRpYV9lbmdpbmUpOworICAgIGZhY3RvcnlfZGVwZW5kZW5jaWVzLmNhbGxfZmFjdG9y
eSA9IENyZWF0ZUNhbGxGYWN0b3J5KCk7CisgICAgZmFjdG9yeV9kZXBlbmRlbmNpZXMuZXZlbnRf
bG9nX2ZhY3RvcnkgPSBDcmVhdGVSdGNFdmVudExvZ0ZhY3RvcnkoKTsKKyAgICBmYWN0b3J5X2Rl
cGVuZGVuY2llcy5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9CisgICAgICAgIGFic2w6Om1ha2Vf
dW5pcXVlPEZha2VNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+KCk7CisKKyAgICBhdXRvIHBjX2ZhY3Rv
cnkgPQorICAgICAgICBDcmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KHN0ZDo6bW92
ZShmYWN0b3J5X2RlcGVuZGVuY2llcykpOwogCiAgICAgYXV0byBmYWtlX3BvcnRfYWxsb2NhdG9y
ID0gYWJzbDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6RmFrZVBvcnRBbGxvY2F0b3I+KAogICAgICAg
ICBydGM6OlRocmVhZDo6Q3VycmVudCgpLCBudWxscHRyKTsKQEAgLTkxLDEyICsxMDUsMjUgQEAg
Y2xhc3MgUGVlckNvbm5lY3Rpb25NZWRpYUJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBvYnNlcnZlci0+U2V0UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2UocGMuZ2V0KCkpOwogICAgIGF1dG8gd3JhcHBlciA9IGFic2w6
Om1ha2VfdW5pcXVlPFBlZXJDb25uZWN0aW9uV3JhcHBlckZvck1lZGlhVGVzdD4oCiAgICAgICAg
IHBjX2ZhY3RvcnksIHBjLCBzdGQ6Om1vdmUob2JzZXJ2ZXIpKTsKICAgICB3cmFwcGVyLT5zZXRf
bWVkaWFfZW5naW5lKG1lZGlhX2VuZ2luZV9wdHIpOwogICAgIHJldHVybiB3cmFwcGVyOwogICB9
CiAKKyAgLy8gQWNjZXB0cyB0aGUgc2FtZSBhcmd1bWVudHMgYXMgQ3JlYXRlUGVlckNvbm5lY3Rp
b24gYW5kIGFkZHMgZGVmYXVsdCBhdWRpbworICAvLyB0cmFjayAoYnV0IG5vIHZpZGVvKS4KKyAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgIFdyYXBwZXJQdHIgQ3JlYXRlUGVlckNvbm5l
Y3Rpb25XaXRoQXVkaW8oQXJncyYmLi4uIGFyZ3MpIHsKKyAgICBhdXRvIHdyYXBwZXIgPSBDcmVh
dGVQZWVyQ29ubmVjdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIGlmICgh
d3JhcHBlcikgeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHdyYXBwZXItPkFk
ZEF1ZGlvVHJhY2soImEiKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKKyAgfQorCiAgIC8vIEFjY2Vw
dHMgdGhlIHNhbWUgYXJndW1lbnRzIGFzIENyZWF0ZVBlZXJDb25uZWN0aW9uIGFuZCBhZGRzIGRl
ZmF1bHQgYXVkaW8KICAgLy8gYW5kIHZpZGVvIHRyYWNrcy4KICAgdGVtcGxhdGUgPHR5cGVuYW1l
Li4uIEFyZ3M+CkBAIC02NzcsNyArNzA0LDcgQEAgdm9pZCBBZGRDb21mb3J0Tm9pc2VDb2RlY3NU
b1NlbmQoY3JpY2tldDo6RmFrZU1lZGlhRW5naW5lKiBtZWRpYV9lbmdpbmUpIHsKICAgY29uc3Qg
Y3JpY2tldDo6QXVkaW9Db2RlYyBrQ29tZm9ydE5vaXNlQ29kZWM4aygxMDIsICJDTiIsIDgwMDAs
IDAsIDEpOwogICBjb25zdCBjcmlja2V0OjpBdWRpb0NvZGVjIGtDb21mb3J0Tm9pc2VDb2RlYzE2
aygxMDMsICJDTiIsIDE2MDAwLCAwLCAxKTsKIAotICBhdXRvIGNvZGVjcyA9IG1lZGlhX2VuZ2lu
ZS0+YXVkaW9fc2VuZF9jb2RlY3MoKTsKKyAgYXV0byBjb2RlY3MgPSBtZWRpYV9lbmdpbmUtPnZv
aWNlKCkuc2VuZF9jb2RlY3MoKTsKICAgY29kZWNzLnB1c2hfYmFjayhrQ29tZm9ydE5vaXNlQ29k
ZWM4ayk7CiAgIGNvZGVjcy5wdXNoX2JhY2soa0NvbWZvcnROb2lzZUNvZGVjMTZrKTsKICAgbWVk
aWFfZW5naW5lLT5TZXRBdWRpb0NvZGVjcyhjb2RlY3MpOwpAQCAtMTA3Miw2ICsxMDk5LDEyOCBA
QCBURVNUX1AoUGVlckNvbm5lY3Rpb25NZWRpYVRlc3QsCiAgICAgICAgICAgICBhdWRpb19vcHRp
b25zLmNvbWJpbmVkX2F1ZGlvX3ZpZGVvX2J3ZSk7CiB9CiAKK1RFU1RfUChQZWVyQ29ubmVjdGlv
bk1lZGlhVGVzdCwgTWVkaWFUcmFuc3BvcnRQcm9wYWdhdGVkVG9Wb2ljZUVuZ2luZSkgeworICBS
VENDb25maWd1cmF0aW9uIGNvbmZpZzsKKworICAvLyBTZXR1cCBQZWVyQ29ubmVjdGlvbiB0byB1
c2UgbWVkaWEgdHJhbnNwb3J0LgorICBjb25maWcudXNlX21lZGlhX3RyYW5zcG9ydCA9IHRydWU7
CisKKyAgLy8gRm9yY2UgU0RFUy4KKyAgY29uZmlnLmVuYWJsZV9kdGxzX3NydHAgPSBmYWxzZTsK
KworICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlvKGNvbmZpZyk7
CisgIGF1dG8gY2FsbGVlID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQXVkaW8oY29uZmlnKTsK
KworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldFJlbW90ZURlc2NyaXB0aW9uKGNhbGxlci0+Q3Jl
YXRlT2ZmZXJBbmRTZXRBc0xvY2FsKCkpKTsKKyAgYXV0byBhbnN3ZXIgPSBjYWxsZWUtPkNyZWF0
ZUFuc3dlcigpOworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldExvY2FsRGVzY3JpcHRpb24oc3Rk
Ojptb3ZlKGFuc3dlcikpKTsKKworICBhdXRvIGNhbGxlcl92b2ljZSA9IGNhbGxlci0+bWVkaWFf
ZW5naW5lKCktPkdldFZvaWNlQ2hhbm5lbCgwKTsKKyAgYXV0byBjYWxsZWVfdm9pY2UgPSBjYWxs
ZWUtPm1lZGlhX2VuZ2luZSgpLT5HZXRWb2ljZUNoYW5uZWwoMCk7CisgIEFTU0VSVF9UUlVFKGNh
bGxlcl92b2ljZSk7CisgIEFTU0VSVF9UUlVFKGNhbGxlZV92b2ljZSk7CisKKyAgLy8gTWFrZSBz
dXJlIG1lZGlhIHRyYW5zcG9ydCBpcyBwcm9wYWdhdGVkIHRvIHZvaWNlIGNoYW5uZWwuCisgIEZh
a2VNZWRpYVRyYW5zcG9ydCogY2FsbGVyX3ZvaWNlX21lZGlhX3RyYW5zcG9ydCA9CisgICAgICBz
dGF0aWNfY2FzdDxGYWtlTWVkaWFUcmFuc3BvcnQqPihjYWxsZXJfdm9pY2UtPm1lZGlhX3RyYW5z
cG9ydCgpKTsKKyAgRmFrZU1lZGlhVHJhbnNwb3J0KiBjYWxsZWVfdm9pY2VfbWVkaWFfdHJhbnNw
b3J0ID0KKyAgICAgIHN0YXRpY19jYXN0PEZha2VNZWRpYVRyYW5zcG9ydCo+KGNhbGxlZV92b2lj
ZS0+bWVkaWFfdHJhbnNwb3J0KCkpOworICBBU1NFUlRfTkUobnVsbHB0ciwgY2FsbGVyX3ZvaWNl
X21lZGlhX3RyYW5zcG9ydCk7CisgIEFTU0VSVF9ORShudWxscHRyLCBjYWxsZWVfdm9pY2VfbWVk
aWFfdHJhbnNwb3J0KTsKKworICAvLyBNYWtlIHN1cmUgbWVkaWEgdHJhbnNwb3J0IGlzIGNyZWF0
ZWQgd2l0aCBjb3JyZWN0IGlzX2NhbGxlci4KKyAgRVhQRUNUX1RSVUUoY2FsbGVyX3ZvaWNlX21l
ZGlhX3RyYW5zcG9ydC0+aXNfY2FsbGVyKCkpOworICBFWFBFQ1RfRkFMU0UoY2FsbGVlX3ZvaWNl
X21lZGlhX3RyYW5zcG9ydC0+aXNfY2FsbGVyKCkpOworCisgIC8vIFRPRE8oc3VraGFub3YpOiBQ
cm9wYWdhdGUgbWVkaWEgdHJhbnNwb3J0IHRvIHZpZGVvIGNoYW5uZWwuCisgIC8vIFRoaXMgdGVz
dCBkb2VzIE5PVCBzZXQgdXAgdmlkZW8gY2hhbm5lbHMsIGJlY2F1c2UgY3VycmVudGx5IGl0IGNh
dXNlcworICAvLyB1cyB0byBjcmVhdGUgdHdvIG1lZGlhIHRyYW5zcG9ydHMuCit9CisKK1RFU1Rf
UChQZWVyQ29ubmVjdGlvbk1lZGlhVGVzdCwgTWVkaWFUcmFuc3BvcnRPbmx5Rm9yRGF0YUNoYW5u
ZWxzKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOworCisgIC8vIFNldHVwIFBlZXJDb25u
ZWN0aW9uIHRvIHVzZSBtZWRpYSB0cmFuc3BvcnQgZm9yIGRhdGEgY2hhbm5lbHMuCisgIGNvbmZp
Zy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1ZTsKKworICAvLyBG
b3JjZSBTREVTLgorICBjb25maWcuZW5hYmxlX2R0bHNfc3J0cCA9IGZhbHNlOworCisgIGF1dG8g
Y2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQXVkaW8oY29uZmlnKTsKKyAgYXV0byBj
YWxsZWUgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhBdWRpbyhjb25maWcpOworCisgIEFTU0VS
VF9UUlVFKGNhbGxlZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVPZmZlckFu
ZFNldEFzTG9jYWwoKSkpOworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldExvY2FsRGVzY3JpcHRp
b24oY2FsbGVlLT5DcmVhdGVBbnN3ZXIoKSkpOworCisgIGF1dG8gY2FsbGVyX3ZvaWNlID0gY2Fs
bGVyLT5tZWRpYV9lbmdpbmUoKS0+R2V0Vm9pY2VDaGFubmVsKDApOworICBhdXRvIGNhbGxlZV92
b2ljZSA9IGNhbGxlZS0+bWVkaWFfZW5naW5lKCktPkdldFZvaWNlQ2hhbm5lbCgwKTsKKyAgQVNT
RVJUX1RSVUUoY2FsbGVyX3ZvaWNlKTsKKyAgQVNTRVJUX1RSVUUoY2FsbGVlX3ZvaWNlKTsKKwor
ICAvLyBNYWtlIHN1cmUgbWVkaWEgdHJhbnNwb3J0IGlzIG5vdCBwcm9wYWdhdGVkIHRvIHZvaWNl
IGNoYW5uZWwuCisgIEVYUEVDVF9FUShudWxscHRyLCBjYWxsZXJfdm9pY2UtPm1lZGlhX3RyYW5z
cG9ydCgpKTsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIGNhbGxlZV92b2ljZS0+bWVkaWFfdHJhbnNw
b3J0KCkpOworfQorCitURVNUX1AoUGVlckNvbm5lY3Rpb25NZWRpYVRlc3QsIE1lZGlhVHJhbnNw
b3J0Rm9yTWVkaWFBbmREYXRhQ2hhbm5lbHMpIHsKKyAgUlRDQ29uZmlndXJhdGlvbiBjb25maWc7
CisKKyAgLy8gU2V0dXAgUGVlckNvbm5lY3Rpb24gdG8gdXNlIG1lZGlhIHRyYW5zcG9ydCBmb3Ig
Ym90aCBtZWRpYSBhbmQgZGF0YQorICAvLyBjaGFubmVscy4KKyAgY29uZmlnLnVzZV9tZWRpYV90
cmFuc3BvcnQgPSB0cnVlOworICBjb25maWcudXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9j
aGFubmVscyA9IHRydWU7CisKKyAgLy8gRm9yY2UgU0RFUy4KKyAgY29uZmlnLmVuYWJsZV9kdGxz
X3NydHAgPSBmYWxzZTsKKworICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0
aEF1ZGlvKGNvbmZpZyk7CisgIGF1dG8gY2FsbGVlID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRo
QXVkaW8oY29uZmlnKTsKKworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldFJlbW90ZURlc2NyaXB0
aW9uKGNhbGxlci0+Q3JlYXRlT2ZmZXJBbmRTZXRBc0xvY2FsKCkpKTsKKyAgQVNTRVJUX1RSVUUo
Y2FsbGVlLT5TZXRMb2NhbERlc2NyaXB0aW9uKGNhbGxlZS0+Q3JlYXRlQW5zd2VyKCkpKTsKKwor
ICBhdXRvIGNhbGxlcl92b2ljZSA9IGNhbGxlci0+bWVkaWFfZW5naW5lKCktPkdldFZvaWNlQ2hh
bm5lbCgwKTsKKyAgYXV0byBjYWxsZWVfdm9pY2UgPSBjYWxsZWUtPm1lZGlhX2VuZ2luZSgpLT5H
ZXRWb2ljZUNoYW5uZWwoMCk7CisgIEFTU0VSVF9UUlVFKGNhbGxlcl92b2ljZSk7CisgIEFTU0VS
VF9UUlVFKGNhbGxlZV92b2ljZSk7CisKKyAgLy8gTWFrZSBzdXJlIG1lZGlhIHRyYW5zcG9ydCBp
cyBwcm9wYWdhdGVkIHRvIHZvaWNlIGNoYW5uZWwuCisgIEZha2VNZWRpYVRyYW5zcG9ydCogY2Fs
bGVyX3ZvaWNlX21lZGlhX3RyYW5zcG9ydCA9CisgICAgICBzdGF0aWNfY2FzdDxGYWtlTWVkaWFU
cmFuc3BvcnQqPihjYWxsZXJfdm9pY2UtPm1lZGlhX3RyYW5zcG9ydCgpKTsKKyAgRmFrZU1lZGlh
VHJhbnNwb3J0KiBjYWxsZWVfdm9pY2VfbWVkaWFfdHJhbnNwb3J0ID0KKyAgICAgIHN0YXRpY19j
YXN0PEZha2VNZWRpYVRyYW5zcG9ydCo+KGNhbGxlZV92b2ljZS0+bWVkaWFfdHJhbnNwb3J0KCkp
OworICBBU1NFUlRfTkUobnVsbHB0ciwgY2FsbGVyX3ZvaWNlX21lZGlhX3RyYW5zcG9ydCk7Cisg
IEFTU0VSVF9ORShudWxscHRyLCBjYWxsZWVfdm9pY2VfbWVkaWFfdHJhbnNwb3J0KTsKKworICAv
LyBNYWtlIHN1cmUgbWVkaWEgdHJhbnNwb3J0IGlzIGNyZWF0ZWQgd2l0aCBjb3JyZWN0IGlzX2Nh
bGxlci4KKyAgRVhQRUNUX1RSVUUoY2FsbGVyX3ZvaWNlX21lZGlhX3RyYW5zcG9ydC0+aXNfY2Fs
bGVyKCkpOworICBFWFBFQ1RfRkFMU0UoY2FsbGVlX3ZvaWNlX21lZGlhX3RyYW5zcG9ydC0+aXNf
Y2FsbGVyKCkpOworfQorCitURVNUX1AoUGVlckNvbm5lY3Rpb25NZWRpYVRlc3QsIE1lZGlhVHJh
bnNwb3J0Tm90UHJvcGFnYXRlZFRvVm9pY2VFbmdpbmUpIHsKKyAgYXV0byBjYWxsZXIgPSBDcmVh
dGVQZWVyQ29ubmVjdGlvbldpdGhBdWRpb1ZpZGVvKCk7CisgIGF1dG8gY2FsbGVlID0gQ3JlYXRl
UGVlckNvbm5lY3Rpb25XaXRoQXVkaW9WaWRlbygpOworCisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+
U2V0UmVtb3RlRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVPZmZlckFuZFNldEFzTG9jYWwoKSkp
OworICBhdXRvIGFuc3dlciA9IGNhbGxlZS0+Q3JlYXRlQW5zd2VyKCk7CisgIEFTU0VSVF9UUlVF
KGNhbGxlZS0+U2V0TG9jYWxEZXNjcmlwdGlvbihzdGQ6Om1vdmUoYW5zd2VyKSkpOworCisgIGF1
dG8gY2FsbGVyX3ZvaWNlID0gY2FsbGVyLT5tZWRpYV9lbmdpbmUoKS0+R2V0Vm9pY2VDaGFubmVs
KDApOworICBhdXRvIGNhbGxlZV92b2ljZSA9IGNhbGxlZS0+bWVkaWFfZW5naW5lKCktPkdldFZv
aWNlQ2hhbm5lbCgwKTsKKyAgQVNTRVJUX1RSVUUoY2FsbGVyX3ZvaWNlKTsKKyAgQVNTRVJUX1RS
VUUoY2FsbGVlX3ZvaWNlKTsKKworICAvLyBTaW5jZSB3ZSBkaWQgbm90IHNldHVwIFBlZXJDb25u
ZWN0aW9uIHRvIHVzZSBtZWRpYSB0cmFuc3BvcnQsIG1lZGlhCisgIC8vIHRyYW5zcG9ydCBzaG91
bGQgbm90IGJlIGNyZWF0ZWQgLyBwcm9wYWdhdGVkIHRvIHRoZSB2b2ljZSBlbmdpbmUuCisgIEFT
U0VSVF9FUShudWxscHRyLCBjYWxsZXJfdm9pY2UtPm1lZGlhX3RyYW5zcG9ydCgpKTsKKyAgQVNT
RVJUX0VRKG51bGxwdHIsIGNhbGxlZV92b2ljZS0+bWVkaWFfdHJhbnNwb3J0KCkpOworCisgIGF1
dG8gY2FsbGVyX3ZpZGVvID0gY2FsbGVyLT5tZWRpYV9lbmdpbmUoKS0+R2V0VmlkZW9DaGFubmVs
KDApOworICBhdXRvIGNhbGxlZV92aWRlbyA9IGNhbGxlZS0+bWVkaWFfZW5naW5lKCktPkdldFZp
ZGVvQ2hhbm5lbCgwKTsKKyAgQVNTRVJUX0VRKG51bGxwdHIsIGNhbGxlcl92aWRlby0+bWVkaWFf
dHJhbnNwb3J0KCkpOworICBBU1NFUlRfRVEobnVsbHB0ciwgY2FsbGVlX3ZpZGVvLT5tZWRpYV90
cmFuc3BvcnQoKSk7Cit9CisKIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFBlZXJDb25uZWN0aW9u
TWVkaWFUZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgUGVlckNvbm5lY3Rpb25NZWRpYVRl
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoU2RwU2VtYW50aWNzOjprUGxhbkIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9wZWVyY29ubmVjdGlvbl9yYW1wdXBfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9yYW1wdXBfdGVzdHMuY2MKaW5k
ZXggODUwMjEyYmYwZGNhNGJkNzUyODI4Mjg4NjkwMzJjZWRhOGM5MzMwZC4uNzRmODAxOGZiMDli
N2UwZGExMDdmNzgzNDk0MzIyNzIxNGU5YzhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fcmFtcHVwX3Rlc3Rz
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Bl
ZXJjb25uZWN0aW9uX3JhbXB1cF90ZXN0cy5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIK
KyNpbmNsdWRlICJhcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJhcGkvc3RhdHMvcnRjc3RhdHNfb2JqZWN0cy5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2Rl
Y3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9f
Y29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9y
dHBfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9wZWVyY29ubmVjdGlvbl9ydHBfdW5pdHRlc3QuY2MKaW5kZXggYmMzNjYyY2JiZDQzZTM0
MWQxYWFlODIzYzdkODE2ODMxOGFlMjgyZS4uNzA5ODQ3MGJhYWVlZTk4ZDBlNzRhNmZjNzA3NGE4
NzYxMWY5NTk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fcnRwX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX3J0cF91
bml0dGVzdC5jYwpAQCAtMTQsOSArMTQsMTEgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1v
cnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9m
YWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29k
ZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9y
eS5oIgogI2luY2x1ZGUgImFwaS9qc2VwLmgiCiAjaW5jbHVkZSAiYXBpL21lZGlhc3RyZWFtaW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmgiCisjaW5j
bHVkZSAiYXBpL3VtYW1ldHJpY3MuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0
aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9i
dWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInBjL21lZGlhc2Vzc2lv
bi5oIgpAQCAtMTE2LDYgKzExOCw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uUnRwQmFzZVRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgYXV0byBvYnNlcnZlciA9IGFic2w6Om1ha2Vf
dW5pcXVlPE1vY2tQZWVyQ29ubmVjdGlvbk9ic2VydmVyPigpOwogICAgIGF1dG8gcGMgPSBwY19m
YWN0b3J5Xy0+Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlnLCBudWxscHRyLCBudWxscHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIu
Z2V0KCkpOworICAgIEVYUEVDVF9UUlVFKHBjLmdldCgpKTsKKyAgICBvYnNlcnZlci0+U2V0UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2UocGMuZ2V0KCkpOwogICAgIHJldHVybiBhYnNsOjptYWtlX3Vu
aXF1ZTxQZWVyQ29ubmVjdGlvbldyYXBwZXI+KHBjX2ZhY3RvcnlfLCBwYywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUob2JzZXJ2
ZXIpKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fc2lnbmFsaW5nX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fc2ln
bmFsaW5nX3VuaXR0ZXN0LmNjCmluZGV4IDk1ZjQ2NGIyZWUyNDkyMjQwNDI0MThkNjdiMTljZmY5
YmE4NGM4MmIuLmY1N2Y4MDZiNjQ3ZjAxMzM5ZmJiMDI1MmNjMTA3MWVhM2EyNDJkNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJj
b25uZWN0aW9uX3NpZ25hbGluZ191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9zaWduYWxpbmdfdW5pdHRl
c3QuY2MKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVp
bHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL2NyZWF0ZV9w
ZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0aW9ucHJv
eHkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9m
YWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29k
ZXJfZmFjdG9yeS5oIgpAQCAtOTAsNiArOTEsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvblNpZ25h
bGluZ0Jhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKKyAgICBvYnNlcnZlci0+U2V0UGVlckNvbm5lY3Rpb25JbnRlcmZhY2Uo
cGMuZ2V0KCkpOwogICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxQZWVyQ29ubmVjdGlvbldy
YXBwZXJGb3JTaWduYWxpbmdUZXN0PigKICAgICAgICAgcGNfZmFjdG9yeV8sIHBjLCBzdGQ6Om1v
dmUob2JzZXJ2ZXIpKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25lbmR0b2VuZF91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0
aW9uZW5kdG9lbmRfdW5pdHRlc3QuY2MKaW5kZXggNjBkYTJkMjQyYzFhYTM1ZGNmMWNkZGVmNDdm
ZTZiMzIzZmVkZTlmZi4uZGVlMjUzYjdjNzE4NzBhNzI4YzIyYjk4YTBmNjdiNTM5MGNjOTRjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cGVlcmNvbm5lY3Rpb25lbmR0b2VuZF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmVuZHRvZW5kX3VuaXR0
ZXN0LmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAj
aW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rlcl9MMTYuaCIKICNpbmNs
dWRlICJhcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5oIgogI2luY2x1ZGUg
ImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9pZC5oIgpAQCAtMjAsNyArMjEsNiBA
QAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Z2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiAjaWZkZWYgV0VCUlRDX0FORFJPSUQKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJwYy90ZXN0L21vY2twZWVyY29ubmVjdGlvbm9ic2VydmVycy5o
IgogI2luY2x1ZGUgInRlc3QvbW9ja19hdWRpb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAidGVzdC9t
b2NrX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgInRlc3QvbW9ja19hdWRpb19l
bmNvZGVyX2ZhY3RvcnkuaCIKIAogdXNpbmcgdGVzdGluZzo6QXRMZWFzdDsKIHVzaW5nIHRlc3Rp
bmc6Okludm9rZTsKQEAgLTMwMCw3ICszMDEsNyBAQCBDcmVhdGVGb3J3YXJkaW5nTW9ja0RlY29k
ZXJGYWN0b3J5KAogc3RydWN0IEF1ZGlvRW5jb2RlclVuaWNvcm5TcGFya2xlc1JhaW5ib3cgewog
ICB1c2luZyBDb25maWcgPSB3ZWJydGM6OkF1ZGlvRW5jb2RlckwxNjo6Q29uZmlnOwogICBzdGF0
aWMgYWJzbDo6b3B0aW9uYWw8Q29uZmlnPiBTZHBUb0NvbmZpZyh3ZWJydGM6OlNkcEF1ZGlvRm9y
bWF0IGZvcm1hdCkgewotICAgIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwg
IlVuaWNvcm5TcGFya2xlc1JhaW5ib3ciKSA9PSAwKSB7CisgICAgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJVbmljb3JuU3BhcmtsZXNSYWluYm93IikpIHsKICAgICAg
IGNvbnN0IHdlYnJ0Yzo6U2RwQXVkaW9Gb3JtYXQ6OlBhcmFtZXRlcnMgZXhwZWN0ZWRfcGFyYW1z
ID0gewogICAgICAgICAgIHsibnVtX2hvcm5zIiwgIjEifX07CiAgICAgICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRfcGFyYW1zLCBmb3JtYXQucGFyYW1ldGVycyk7CkBAIC0zMzcsNyArMzM4LDcgQEAgc3Ry
dWN0IEF1ZGlvRW5jb2RlclVuaWNvcm5TcGFya2xlc1JhaW5ib3cgewogc3RydWN0IEF1ZGlvRGVj
b2RlclVuaWNvcm5TcGFya2xlc1JhaW5ib3cgewogICB1c2luZyBDb25maWcgPSB3ZWJydGM6OkF1
ZGlvRGVjb2RlckwxNjo6Q29uZmlnOwogICBzdGF0aWMgYWJzbDo6b3B0aW9uYWw8Q29uZmlnPiBT
ZHBUb0NvbmZpZyh3ZWJydGM6OlNkcEF1ZGlvRm9ybWF0IGZvcm1hdCkgewotICAgIGlmIChTVFJf
Q0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIlVuaWNvcm5TcGFya2xlc1JhaW5ib3ciKSA9
PSAwKSB7CisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJVbmlj
b3JuU3BhcmtsZXNSYWluYm93IikpIHsKICAgICAgIGNvbnN0IHdlYnJ0Yzo6U2RwQXVkaW9Gb3Jt
YXQ6OlBhcmFtZXRlcnMgZXhwZWN0ZWRfcGFyYW1zID0gewogICAgICAgICAgIHsibnVtX2hvcm5z
IiwgIjEifX07CiAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGFyYW1zLCBmb3JtYXQucGFyYW1l
dGVycyk7CkBAIC00ODEsNyArNDgyLDcgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uRW5kVG9FbmRU
ZXN0LCBDYWxsV2l0aEN1c3RvbUNvZGVjKSB7CiAvLyBWZXJpZmllcyB0aGF0IGEgRGF0YUNoYW5u
ZWwgY3JlYXRlZCBiZWZvcmUgdGhlIG5lZ290aWF0aW9uIGNhbiB0cmFuc2l0aW9uIHRvCiAvLyAi
T1BFTiIgYW5kIHRyYW5zZmVyIGRhdGEuCiBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRl
c3QsIENyZWF0ZURhdGFDaGFubmVsQmVmb3JlTmVnb3RpYXRlKSB7Ci0gIENyZWF0ZVBjcyh3ZWJy
dGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCisgIENyZWF0ZVBjcyh3ZWJy
dGM6Ok1vY2tBdWRpb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSwKICAgICAg
ICAgICAgIHdlYnJ0Yzo6TW9ja0F1ZGlvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9y
eSgpKTsKIAogICB3ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OwpAQCAtNTA2LDcgKzUwNyw3
IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwgQ3JlYXRlRGF0YUNoYW5uZWxC
ZWZvcmVOZWdvdGlhdGUpIHsKIC8vIFZlcmlmaWVzIHRoYXQgYSBEYXRhQ2hhbm5lbCBjcmVhdGVk
IGFmdGVyIHRoZSBuZWdvdGlhdGlvbiBjYW4gdHJhbnNpdGlvbiB0bwogLy8gIk9QRU4iIGFuZCB0
cmFuc2ZlciBkYXRhLgogVEVTVF9QKFBlZXJDb25uZWN0aW9uRW5kVG9FbmRUZXN0LCBDcmVhdGVE
YXRhQ2hhbm5lbEFmdGVyTmVnb3RpYXRlKSB7Ci0gIENyZWF0ZVBjcyh3ZWJydGM6OkNyZWF0ZUJ1
aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCisgIENyZWF0ZVBjcyh3ZWJydGM6Ok1vY2tBdWRp
b0VuY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSwKICAgICAgICAgICAgIHdlYnJ0
Yzo6TW9ja0F1ZGlvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpKTsKIAogICB3
ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OwpAQCAtNTM4LDcgKzUzOSw3IEBAIFRFU1RfUChQ
ZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwgQ3JlYXRlRGF0YUNoYW5uZWxBZnRlck5lZ290aWF0
ZSkgewogCiAvLyBWZXJpZmllcyB0aGF0IGEgRGF0YUNoYW5uZWwgY3JlYXRlZCBjYW4gdHJhbnNm
ZXIgbGFyZ2UgbWVzc2FnZXMuCiBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRlc3QsIENy
ZWF0ZURhdGFDaGFubmVsTGFyZ2VUcmFuc2ZlcikgewotICBDcmVhdGVQY3Mod2VicnRjOjpDcmVh
dGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLAorICBDcmVhdGVQY3Mod2VicnRjOjpNb2Nr
QXVkaW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCksCiAgICAgICAgICAgICB3
ZWJydGM6Ok1vY2tBdWRpb0RlY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSk7CiAK
ICAgd2VicnRjOjpEYXRhQ2hhbm5lbEluaXQgaW5pdDsKQEAgLTU3Miw3ICs1NzMsNyBAQCBURVNU
X1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRlc3QsIENyZWF0ZURhdGFDaGFubmVsTGFyZ2VUcmFu
c2ZlcikgewogCiAvLyBWZXJpZmllcyB0aGF0IERhdGFDaGFubmVsIElEcyBhcmUgZXZlbi9vZGQg
YmFzZWQgb24gdGhlIERUTFMgcm9sZXMuCiBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRl
c3QsIERhdGFDaGFubmVsSWRBc3NpZ25tZW50KSB7Ci0gIENyZWF0ZVBjcyh3ZWJydGM6OkNyZWF0
ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCisgIENyZWF0ZVBjcyh3ZWJydGM6Ok1vY2tB
dWRpb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSwKICAgICAgICAgICAgIHdl
YnJ0Yzo6TW9ja0F1ZGlvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpKTsKIAog
ICB3ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OwpAQCAtNjAwLDcgKzYwMSw3IEBAIFRFU1Rf
UChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwgRGF0YUNoYW5uZWxJZEFzc2lnbm1lbnQpIHsK
IC8vIHRoZXJlIGFyZSBtdWx0aXBsZSBEYXRhQ2hhbm5lbHMuCiBURVNUX1AoUGVlckNvbm5lY3Rp
b25FbmRUb0VuZFRlc3QsCiAgICAgICAgTWVzc2FnZVRyYW5zZmVyQmV0d2VlblR3b1BhaXJzT2ZE
YXRhQ2hhbm5lbHMpIHsKLSAgQ3JlYXRlUGNzKHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRW5j
b2RlckZhY3RvcnkoKSwKKyAgQ3JlYXRlUGNzKHdlYnJ0Yzo6TW9ja0F1ZGlvRW5jb2RlckZhY3Rv
cnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpLAogICAgICAgICAgICAgd2VicnRjOjpNb2NrQXVkaW9E
ZWNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCkpOwogCiAgIHdlYnJ0Yzo6RGF0YUNo
YW5uZWxJbml0IGluaXQ7CkBAIC02NDAsNyArNjQxLDcgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9u
RW5kVG9FbmRUZXN0LAogLy8gY2hhbm5lbCwgYW5kIHRoZSBjbG9zZWQgY2hhbm5lbCB3YXMgaW5j
b3JyZWN0bHkgc3RpbGwgYXNzaWduZWQgdG8gdGhlIElELgogVEVTVF9QKFBlZXJDb25uZWN0aW9u
RW5kVG9FbmRUZXN0LAogICAgICAgIERhdGFDaGFubmVsRnJvbU9wZW5Xb3Jrc0FmdGVyUHJldmlv
dXNDaGFubmVsQ2xvc2VkKSB7Ci0gIENyZWF0ZVBjcyh3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5BdWRp
b0VuY29kZXJGYWN0b3J5KCksCisgIENyZWF0ZVBjcyh3ZWJydGM6Ok1vY2tBdWRpb0VuY29kZXJG
YWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSwKICAgICAgICAgICAgIHdlYnJ0Yzo6TW9ja0F1
ZGlvRGVjb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpKTsKIAogICB3ZWJydGM6OkRh
dGFDaGFubmVsSW5pdCBpbml0OwpAQCAtNjczLDcgKzY3NCw3IEBAIFRFU1RfUChQZWVyQ29ubmVj
dGlvbkVuZFRvRW5kVGVzdCwKIC8vIGNsb3NpbmcgYmVmb3JlIGNyZWF0aW5nIHRoZSBzZWNvbmQg
b25lLgogVEVTVF9QKFBlZXJDb25uZWN0aW9uRW5kVG9FbmRUZXN0LAogICAgICAgIERhdGFDaGFu
bmVsRnJvbU9wZW5Xb3Jrc1doaWxlUHJldmlvdXNDaGFubmVsQ2xvc2luZykgewotICBDcmVhdGVQ
Y3Mod2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLAorICBDcmVhdGVQ
Y3Mod2VicnRjOjpNb2NrQXVkaW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCks
CiAgICAgICAgICAgICB3ZWJydGM6Ok1vY2tBdWRpb0RlY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0
eUZhY3RvcnkoKSk7CiAKICAgd2VicnRjOjpEYXRhQ2hhbm5lbEluaXQgaW5pdDsKQEAgLTcwNCw3
ICs3MDUsNyBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRlc3QsCiAvLyByZWZlcmVu
Y2UgY291bnQpLCBubyBtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiB3aWxsIG9jY3VyLgogLy8gU2Vl
OiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NTY1
MDQ4CiBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRlc3QsIENsb3NlRGF0YUNoYW5uZWxS
ZW1vdGVseVdoaWxlTm90UmVmZXJlbmNlZCkgewotICBDcmVhdGVQY3Mod2VicnRjOjpDcmVhdGVC
dWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpLAorICBDcmVhdGVQY3Mod2VicnRjOjpNb2NrQXVk
aW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCksCiAgICAgICAgICAgICB3ZWJy
dGM6Ok1vY2tBdWRpb0RlY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSk7CiAKICAg
d2VicnRjOjpEYXRhQ2hhbm5lbEluaXQgaW5pdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0
aW9uZmFjdG9yeS5jYwppbmRleCA1M2Y0ZGE4NTE2ZTQ2YzhmNTg4NDYzZWQ5MjIyZjU2ZWRiMjAy
Mjk0Li43NTI2MTUwOGIyNzJkMmU3ZTY2MmE1Zjg3M2YzNWFmOGJkZTUzOGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVj
dGlvbmZhY3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAKICNp
bmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvZmVjX2NvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1
ZGUgImFwaS9tZWRpYWNvbnN0cmFpbnRzaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL21lZGlh
c3RyZWFtcHJveHkuaCIKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW10cmFja3Byb3h5LmgiCkBA
IC00Niw2ICs0Nyw3IEBACiAjaW5jbHVkZSAicGMvdmlkZW9jYXB0dXJlcnRyYWNrc291cmNlLmgi
CiAjaW5jbHVkZSAicGMvdmlkZW90cmFjay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1l
bnRzL2Nvbmdlc3Rpb25fY29udHJvbGxlcl9leHBlcmltZW50LmgiCisjaW5jbHVkZSAic3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
QEAgLTE4Nyw3ICsxODksOSBAQCBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OlBlZXJDb25uZWN0aW9u
RmFjdG9yeSgKICAgICAgICAgICBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzLmNhbGxfZmFjdG9yeSks
CiAgICAgICAgICAgc3RkOjptb3ZlKGRlcGVuZGVuY2llcy5ldmVudF9sb2dfZmFjdG9yeSksCiAg
ICAgICAgICAgc3RkOjptb3ZlKGRlcGVuZGVuY2llcy5mZWNfY29udHJvbGxlcl9mYWN0b3J5KSwK
LSAgICAgICAgICBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzLm5ldHdvcmtfY29udHJvbGxlcl9mYWN0
b3J5KSkge30KKyAgICAgICAgICBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzLm5ldHdvcmtfY29udHJv
bGxlcl9mYWN0b3J5KSkgeworICBtZWRpYV90cmFuc3BvcnRfZmFjdG9yeV8gPSBzdGQ6Om1vdmUo
ZGVwZW5kZW5jaWVzLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KTsKK30KIAogUGVlckNvbm5lY3Rp
b25GYWN0b3J5Ojp+UGVlckNvbm5lY3Rpb25GYWN0b3J5KCkgewogICBSVENfRENIRUNLKHNpZ25h
bGluZ190aHJlYWRfLT5Jc0N1cnJlbnQoKSk7CkBAIC0zNTYsOSArMzYwLDEyIEBAIFBlZXJDb25u
ZWN0aW9uRmFjdG9yeTo6Q3JlYXRlUGVlckNvbm5lY3Rpb24oCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfdGhyZWFkXyk7CiAg
IH0KICAgaWYgKCFkZXBlbmRlbmNpZXMuYWxsb2NhdG9yKSB7Ci0gICAgZGVwZW5kZW5jaWVzLmFs
bG9jYXRvci5yZXNldChuZXcgY3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yKAotICAgICAgICBk
ZWZhdWx0X25ldHdvcmtfbWFuYWdlcl8uZ2V0KCksIGRlZmF1bHRfc29ja2V0X2ZhY3RvcnlfLmdl
dCgpLAotICAgICAgICBjb25maWd1cmF0aW9uLnR1cm5fY3VzdG9taXplcikpOworICAgIG5ldHdv
cmtfdGhyZWFkXy0+SW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIFt0aGlzLCAmY29uZmlndXJh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmRlcGVuZGVuY2llc10oKSB7CisgICAgICBkZXBlbmRlbmNpZXMuYWxsb2NhdG9yID0gYWJzbDo6
bWFrZV91bmlxdWU8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPigKKyAgICAgICAgICBkZWZh
dWx0X25ldHdvcmtfbWFuYWdlcl8uZ2V0KCksIGRlZmF1bHRfc29ja2V0X2ZhY3RvcnlfLmdldCgp
LAorICAgICAgICAgIGNvbmZpZ3VyYXRpb24udHVybl9jdXN0b21pemVyKTsKKyAgICB9KTsKICAg
fQogCiAgIC8vIFRPRE8oenN0ZWluKTogT25jZSBjaHJvbWl1bSBpbmplY3RzIGl0cyBvd24gQXN5
bmNSZXNvbHZlckZhY3RvcnksIHNldApAQCAtNDQyLDcgKzQ0OSwxMCBAQCBydGM6OlRocmVhZCog
UGVlckNvbm5lY3Rpb25GYWN0b3J5OjpuZXR3b3JrX3RocmVhZCgpIHsKIAogc3RkOjp1bmlxdWVf
cHRyPFJ0Y0V2ZW50TG9nPiBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkNyZWF0ZVJ0Y0V2ZW50TG9n
X3coKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKHdvcmtlcl90aHJlYWRfKTsKLSAgY29uc3QgYXV0
byBlbmNvZGluZ190eXBlID0gUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TGVnYWN5OworCisg
IGF1dG8gZW5jb2RpbmdfdHlwZSA9IFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6OkxlZ2FjeTsK
KyAgaWYgKGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1SdGNFdmVudExvZ05ld0Zvcm1h
dCIpKQorICAgIGVuY29kaW5nX3R5cGUgPSBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpOZXdG
b3JtYXQ7CiAgIHJldHVybiBldmVudF9sb2dfZmFjdG9yeV8KICAgICAgICAgICAgICA/IGV2ZW50
X2xvZ19mYWN0b3J5Xy0+Q3JlYXRlUnRjRXZlbnRMb2coZW5jb2RpbmdfdHlwZSkKICAgICAgICAg
ICAgICA6IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nTnVsbEltcGw+KCk7CkBAIC00NjAs
NyArNDcwLDggQEAgc3RkOjp1bmlxdWVfcHRyPENhbGw+IFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6
Q3JlYXRlQ2FsbF93KAogICBpZiAoIWNoYW5uZWxfbWFuYWdlcl8tPm1lZGlhX2VuZ2luZSgpIHx8
ICFjYWxsX2ZhY3RvcnlfKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KLSAgY2FsbF9jb25m
aWcuYXVkaW9fc3RhdGUgPSBjaGFubmVsX21hbmFnZXJfLT5tZWRpYV9lbmdpbmUoKS0+R2V0QXVk
aW9TdGF0ZSgpOworICBjYWxsX2NvbmZpZy5hdWRpb19zdGF0ZSA9CisgICAgICBjaGFubmVsX21h
bmFnZXJfLT5tZWRpYV9lbmdpbmUoKS0+dm9pY2UoKS5HZXRBdWRpb1N0YXRlKCk7CiAgIGNhbGxf
Y29uZmlnLmJpdHJhdGVfY29uZmlnLm1pbl9iaXRyYXRlX2JwcyA9IGtNaW5CYW5kd2lkdGhCcHM7
CiAgIGNhbGxfY29uZmlnLmJpdHJhdGVfY29uZmlnLnN0YXJ0X2JpdHJhdGVfYnBzID0ga1N0YXJ0
QmFuZHdpZHRoQnBzOwogICBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5tYXhfYml0cmF0ZV9i
cHMgPSBrTWF4QmFuZHdpZHRoQnBzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3Rv
cnkuaAppbmRleCBmMzZhNGUwYzA0NGJjNDQ1YmI2OGVjYzk4ODQ3NzQ5MWYzNzA1MmIxLi4xYzFl
YTk0ZmUyOGE3M2FhY2NiNjI0NzFlYWU3OWJjMGQ1NDM3YjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3Rv
cnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9w
ZWVyY29ubmVjdGlvbmZhY3RvcnkuaApAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2lu
dGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oIgogI2luY2x1
ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1lZGlhL3NjdHAv
c2N0cHRyYW5zcG9ydGludGVybmFsLmgiCkBAIC05Niw2ICs5NywxMCBAQCBjbGFzcyBQZWVyQ29u
bmVjdGlvbkZhY3RvcnkgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHsK
ICAgdmlydHVhbCBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQoKTsKICAgY29uc3QgT3B0aW9u
cyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG9wdGlvbnNfOyB9CiAKKyAgTWVkaWFUcmFuc3Bv
cnRGYWN0b3J5KiBtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSgpIHsKKyAgICByZXR1cm4gbWVkaWFf
dHJhbnNwb3J0X2ZhY3RvcnlfLmdldCgpOworICB9CisKICBwcm90ZWN0ZWQ6CiAgIFBlZXJDb25u
ZWN0aW9uRmFjdG9yeSgKICAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKQEAgLTE0
OCw2ICsxNTMsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkZhY3RvcnkgOiBwdWJsaWMgUGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHsKICAgICAgIGluamVjdGVkX25ldHdvcmtfY29udHJv
bGxlcl9mYWN0b3J5XzsKICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250cm9sbGVyRmFjdG9y
eUludGVyZmFjZT4KICAgICAgIGJicl9uZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV87CisgIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IG1lZGlhX3RyYW5zcG9ydF9mYWN0
b3J5XzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9y
eV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeV91bml0dGVzdC5jYwppbmRleCA4NGM4MjhmMDk2MTA0
MmE1ZDUxY2JjZjEyZjYwODFiNzY0NjJlOTNhLi4yNDQ0MTQzMmQ3YTM4Yjg4NDA5NzEzNDA2YWEz
OWZhMTNhNTUyMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnlfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25m
YWN0b3J5X3VuaXR0ZXN0LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAKICNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBp
L2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUg
ImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9tZWRp
YXN0cmVhbWludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92
aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0
aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmludGVyZmFjZV91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Bl
ZXJjb25uZWN0aW9uaW50ZXJmYWNlX3VuaXR0ZXN0LmNjCmluZGV4IDcxOWZkYmRkN2Y0MWNjODBk
OGJiM2I4MDgyMTlkNjlkM2EwYTU1MzYuLmRkNWQwZDE2YTkxOTg2YjBlYzQ1ZjI0YjdkZjAzMGUx
MWVhNDBiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uaW50
ZXJmYWNlX3VuaXR0ZXN0LmNjCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiYWJzbC9tZW1v
cnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2Rl
Y29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRp
b19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9u
X2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvanNlcHNlc3Npb25kZXNjcmlwdGlvbi5oIgogI2lu
Y2x1ZGUgImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS9wZWVyY29u
bmVjdGlvbmludGVyZmFjZS5oIgpAQCAtMTM5Nyw2ICsxMzk4LDggQEAgVEVTVF9QKFBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlVGVzdCwKICAgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlPiBwYygKICAgICAgIHBjX2ZhY3RvcnktPkNyZWF0ZVBlZXJDb25uZWN0aW9uKGNv
bmZpZywgc3RkOjptb3ZlKHBvcnRfYWxsb2NhdG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsICZvYnNlcnZlcl8pKTsKKyAgRVhQRUNUX1RSVUUocGMu
Z2V0KCkpOworICBvYnNlcnZlcl8uU2V0UGVlckNvbm5lY3Rpb25JbnRlcmZhY2UocGMuZ2V0KCkp
OwogCiAgIC8vIE5vdyB2YWxpZGF0ZSB0aGF0IHRoZSBjb25maWcgZmllbGRzIHNldCBhYm92ZSB3
ZXJlIGFwcGxpZWQgdG8gdGhlCiAgIC8vIFBvcnRBbGxvY2F0b3IsIGFzIGZsYWdzIG9yIG90aGVy
d2lzZS4KQEAgLTE0MjQsMTUgKzE0MjcsMjIgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlVGVzdCwgR2V0Q29uZmlndXJhdGlvbkFmdGVyQ3JlYXRlUGVlckNvbm5lY3Rpb24pIHsKIC8v
IENoZWNrIHRoYXQgR2V0Q29uZmlndXJhdGlvbiByZXR1cm5zIHRoZSBsYXN0IGNvbmZpZ3VyYXRp
b24gcGFzc2VkIGludG8KIC8vIFNldENvbmZpZ3VyYXRpb24uCiBURVNUX1AoUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2VUZXN0LCBHZXRDb25maWd1cmF0aW9uQWZ0ZXJTZXRDb25maWd1cmF0aW9uKSB7
Ci0gIENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpS
VENDb25maWd1cmF0aW9uIHN0YXJ0aW5nX2NvbmZpZzsKKyAgc3RhcnRpbmdfY29uZmlnLmJ1bmRs
ZV9wb2xpY3kgPQorICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbjo6a0J1bmRsZVBvbGljeU1h
eEJ1bmRsZTsKKyAgQ3JlYXRlUGVlckNvbm5lY3Rpb24oc3RhcnRpbmdfY29uZmlnKTsKIAogICBQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBjb25maWcgPSBwY18tPkdl
dENvbmZpZ3VyYXRpb24oKTsKICAgY29uZmlnLnR5cGUgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6a1JlbGF5OworICBjb25maWcudXNlX21lZGlhX3RyYW5zcG9ydCA9IHRydWU7CisgIGNvbmZp
Zy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0gdHJ1ZTsKICAgRVhQRUNU
X1RSVUUocGNfLT5TZXRDb25maWd1cmF0aW9uKGNvbmZpZykpOwogCiAgIFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uIHJldHVybmVkX2NvbmZpZyA9CiAgICAgICBwY18t
PkdldENvbmZpZ3VyYXRpb24oKTsKICAgRVhQRUNUX0VRKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjprUmVsYXksIHJldHVybmVkX2NvbmZpZy50eXBlKTsKKyAgRVhQRUNUX1RSVUUocmV0dXJuZWRf
Y29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnQpOworICBFWFBFQ1RfVFJVRShyZXR1cm5lZF9jb25m
aWcudXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyk7CiB9CiAKIFRFU1RfUChQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZVRlc3QsIFNldENvbmZpZ3VyYXRpb25GYWlsc0FmdGVyQ2xv
c2UpIHsKQEAgLTM5MzgsNiArMzk0OCwyMSBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2VUZXN0LAogICBFWFBFQ1RfRkFMU0UoRG9TZXRMb2NhbERlc2NyaXB0aW9uKHN0ZDo6bW92ZShv
ZmZlcikpKTsKIH0KIAorVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlVGVzdCwgRXh0bWFw
QWxsb3dNaXhlZElzQ29uZmlndXJhYmxlKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOwor
ICAvLyBEZWZhdWx0IGJlaGF2aW9yIGlzIGZhbHNlLgorICBDcmVhdGVQZWVyQ29ubmVjdGlvbihj
b25maWcpOworICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlPiBv
ZmZlcjsKKyAgQVNTRVJUX1RSVUUoRG9DcmVhdGVPZmZlcigmb2ZmZXIsIG51bGxwdHIpKTsKKyAg
RVhQRUNUX0ZBTFNFKG9mZmVyLT5kZXNjcmlwdGlvbigpLT5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7
CisgIC8vIFBvc3NpYmxlIHRvIHNldCB0byB0cnVlLgorICBjb25maWcub2ZmZXJfZXh0bWFwX2Fs
bG93X21peGVkID0gdHJ1ZTsKKyAgQ3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlnKTsKKyAgb2Zm
ZXIucmVsZWFzZSgpOworICBBU1NFUlRfVFJVRShEb0NyZWF0ZU9mZmVyKCZvZmZlciwgbnVsbHB0
cikpOworICBFWFBFQ1RfVFJVRShvZmZlci0+ZGVzY3JpcHRpb24oKS0+ZXh0bWFwX2FsbG93X21p
eGVkKCkpOworfQorCiBJTlNUQU5USUFURV9URVNUX0NBU0VfUChQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoU2RwU2VtYW50aWNzOjprUGxh
bkIsCkBAIC0zOTU0LDYgKzM5NzksNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbk1lZGlhQ29uZmln
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U+IHBjKAogICAgICAgICBwY2ZfLT5DcmVhdGVQZWVyQ29ubmVj
dGlvbihjb25maWcsIG51bGxwdHIsIG51bGxwdHIsICZvYnNlcnZlcl8pKTsKICAgICBFWFBFQ1Rf
VFJVRShwYy5nZXQoKSk7CisgICAgb2JzZXJ2ZXJfLlNldFBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
KHBjLmdldCgpKTsKICAgICByZXR1cm4gcGMtPkdldENvbmZpZ3VyYXRpb24oKS5tZWRpYV9jb25m
aWc7CiAgIH0KIApAQCAtMzk2MSw2ICszOTg3LDE3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uTWVk
aWFDb25maWdUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICBNb2NrUGVlckNvbm5lY3Rp
b25PYnNlcnZlciBvYnNlcnZlcl87CiB9OwogCisvLyBUaGlzIHNhbml0eSBjaGVjayB2YWxpZGF0
ZXMgdGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgaXRzZWxmLgorVEVTVF9GKFBlZXJDb25uZWN0aW9u
TWVkaWFDb25maWdUZXN0LCBUZXN0Q3JlYXRlQW5kQ2xvc2UpIHsKKyAgUGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOworICBydGM6OnNjb3BlZF9yZWZwdHI8
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IHBjKAorICAgICAgcGNmXy0+Q3JlYXRlUGVlckNvbm5l
Y3Rpb24oY29uZmlnLCBudWxscHRyLCBudWxscHRyLCAmb2JzZXJ2ZXJfKSk7CisgIEVYUEVDVF9U
UlVFKHBjLmdldCgpKTsKKyAgb2JzZXJ2ZXJfLlNldFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlKHBj
LmdldCgpKTsgIC8vIFJlcXVpcmVkLgorICBwYy0+Q2xvc2UoKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gTm8gYWJvcnQgLT4gb2suCisgIFNVQ0NFRUQoKTsKK30KKwog
Ly8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBkZWZhdWx0IGJlaGF2aW91ciB3aXRoIG5vIGNvbnN0
cmFpbnRzIGFuZCBhCiAvLyBkZWZhdWx0IFJUQ0NvbmZpZ3VyYXRpb24uCiBURVNUX0YoUGVlckNv
bm5lY3Rpb25NZWRpYUNvbmZpZ1Rlc3QsIFRlc3REZWZhdWx0cykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjcG11eGZpbHRlcl91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3J0Y3BtdXhmaWx0ZXJfdW5pdHRlc3QuY2MKaW5kZXggNTU1YWI1YzQ2ODEwNTRjNDBhNzFlMWRj
ZTZjMzRhYTk3MGNlMTI0YS4uYTZhYzQ0NzhmY2Q1YWU3NWJhNTcxNmMwMzZmOTAwMDNmZTA4YWEw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcnRjcG11eGZpbHRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNwbXV4ZmlsdGVyX3VuaXR0ZXN0LmNjCkBAIC05LDcg
KzksNiBAQAogICovCiAKICNpbmNsdWRlICJwYy9ydGNwbXV4ZmlsdGVyLmgiCi0jaW5jbHVkZSAi
bWVkaWEvYmFzZS90ZXN0dXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgogCiBU
RVNUKFJ0Y3BNdXhGaWx0ZXJUZXN0LCBJc0FjdGl2ZVNlbmRlcikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjc3RhdHNfaW50ZWdy
YXRpb250ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcnRjc3RhdHNfaW50ZWdyYXRpb250ZXN0LmNjCmluZGV4IDNjMDdlMzhiNWE0OTVhYTkzZTdk
YjlmZmQxZWYyZjU1OTQwODNiYTguLjQ5MDg0ZGU0ZDIwNzE3YzIyZGRjODkxYjdlYTQ2MzIwNGNi
NjNiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3J0Y3N0YXRzX2ludGVncmF0aW9udGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNzdGF0c19pbnRlZ3JhdGlvbnRlc3QuY2MK
QEAgLTYwNCwxMSArNjA0LDE4IEBAIGNsYXNzIFJUQ1N0YXRzUmVwb3J0VmVyaWZpZXIgewogICAg
ICAgICAgIG1lZGlhX3N0cmVhbV90cmFjay5jb25jZWFsZWRfc2FtcGxlcyk7CiAgICAgICB2ZXJp
Zmllci5UZXN0TWVtYmVySXNOb25OZWdhdGl2ZTx1aW50NjRfdD4oCiAgICAgICAgICAgbWVkaWFf
c3RyZWFtX3RyYWNrLmNvbmNlYWxtZW50X2V2ZW50cyk7CisgICAgICB2ZXJpZmllci5UZXN0TWVt
YmVySXNOb25OZWdhdGl2ZTx1aW50NjRfdD4oCisgICAgICAgICAgbWVkaWFfc3RyZWFtX3RyYWNr
LmppdHRlcl9idWZmZXJfZmx1c2hlcyk7CisgICAgICB2ZXJpZmllci5UZXN0TWVtYmVySXNOb25O
ZWdhdGl2ZTx1aW50NjRfdD4oCisgICAgICAgICAgbWVkaWFfc3RyZWFtX3RyYWNrLmRlbGF5ZWRf
cGFja2V0X291dGFnZV9zYW1wbGVzKTsKICAgICB9IGVsc2UgewogICAgICAgdmVyaWZpZXIuVGVz
dE1lbWJlcklzVW5kZWZpbmVkKG1lZGlhX3N0cmVhbV90cmFjay5qaXR0ZXJfYnVmZmVyX2RlbGF5
KTsKICAgICAgIHZlcmlmaWVyLlRlc3RNZW1iZXJJc1VuZGVmaW5lZChtZWRpYV9zdHJlYW1fdHJh
Y2sudG90YWxfc2FtcGxlc19yZWNlaXZlZCk7CiAgICAgICB2ZXJpZmllci5UZXN0TWVtYmVySXNV
bmRlZmluZWQobWVkaWFfc3RyZWFtX3RyYWNrLmNvbmNlYWxlZF9zYW1wbGVzKTsKICAgICAgIHZl
cmlmaWVyLlRlc3RNZW1iZXJJc1VuZGVmaW5lZChtZWRpYV9zdHJlYW1fdHJhY2suY29uY2VhbG1l
bnRfZXZlbnRzKTsKKyAgICAgIHZlcmlmaWVyLlRlc3RNZW1iZXJJc1VuZGVmaW5lZChtZWRpYV9z
dHJlYW1fdHJhY2suaml0dGVyX2J1ZmZlcl9mbHVzaGVzKTsKKyAgICAgIHZlcmlmaWVyLlRlc3RN
ZW1iZXJJc1VuZGVmaW5lZCgKKyAgICAgICAgICBtZWRpYV9zdHJlYW1fdHJhY2suZGVsYXllZF9w
YWNrZXRfb3V0YWdlX3NhbXBsZXMpOwogICAgIH0KICAgICByZXR1cm4gdmVyaWZpZXIuRXhwZWN0
QWxsTWVtYmVyc1N1Y2Nlc3NmdWxseVRlc3RlZCgpOwogICB9CkBAIC04MDYsNyArODEzLDExIEBA
IFRFU1RfRihSVENTdGF0c0ludGVncmF0aW9uVGVzdCwgR2V0U3RhdHNXaXRoSW52YWxpZFJlY2Vp
dmVyU2VsZWN0b3IpIHsKICAgRVhQRUNUX0ZBTFNFKHJlcG9ydC0+c2l6ZSgpKTsKIH0KIAotVEVT
VF9GKFJUQ1N0YXRzSW50ZWdyYXRpb25UZXN0LCBHZXRzU3RhdHNXaGlsZURlc3Ryb3lpbmdQZWVy
Q29ubmVjdGlvbnMpIHsKKy8vIFRPRE8oYnVncy53ZWJydGMub3JnLzEwMDQxKSBGb3Igbm93IHRo
aXMgaXMgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nCisvLyB0ZXN0IEdldHNTdGF0c1doaWxl
Q2xvc2luZ1BlZXJDb25uZWN0aW9uLCBiZWNhdXNlIHBjKCkgaXMgY2xvc2VkIGJ5CisvLyBQZWVy
Q29ubmVjdGlvblRlc3RXcmFwcGVyLiBTZWU6IGJ1Z3Mud2VicnRjLm9yZy85ODQ3CitURVNUX0Yo
UlRDU3RhdHNJbnRlZ3JhdGlvblRlc3QsCisgICAgICAgRElTQUJMRURfR2V0U3RhdHNXaGlsZURl
c3Ryb3lpbmdQZWVyQ29ubmVjdGlvbikgewogICBTdGFydENhbGwoKTsKIAogICBydGM6OnNjb3Bl
ZF9yZWZwdHI8UlRDU3RhdHNPYnRhaW5lcj4gc3RhdHNfb2J0YWluZXIgPQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjc3RhdHNjb2xs
ZWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9y
dGNzdGF0c2NvbGxlY3Rvci5jYwppbmRleCBkODgzOTQzMGViZWY4NDIzZTJmOThmNTgzNDQzYzFl
NDViY2Y5MmQ3Li5kNDhlY2MwMWYzNTllNTFiOTAwMjU5ODI4YzA4NWM4YjVlMTYxN2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNz
dGF0c2NvbGxlY3Rvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9ydGNzdGF0c2NvbGxlY3Rvci5jYwpAQCAtNDU0LDYgKzQ1NCwxMCBAQCBQcm9k
dWNlTWVkaWFTdHJlYW1UcmFja1N0YXRzRnJvbVZvaWNlUmVjZWl2ZXJJbmZvKAogICBhdWRpb190
cmFja19zdGF0cy0+Y29uY2VhbGVkX3NhbXBsZXMgPSB2b2ljZV9yZWNlaXZlcl9pbmZvLmNvbmNl
YWxlZF9zYW1wbGVzOwogICBhdWRpb190cmFja19zdGF0cy0+Y29uY2VhbG1lbnRfZXZlbnRzID0K
ICAgICAgIHZvaWNlX3JlY2VpdmVyX2luZm8uY29uY2VhbG1lbnRfZXZlbnRzOworICBhdWRpb190
cmFja19zdGF0cy0+aml0dGVyX2J1ZmZlcl9mbHVzaGVzID0KKyAgICAgIHZvaWNlX3JlY2VpdmVy
X2luZm8uaml0dGVyX2J1ZmZlcl9mbHVzaGVzOworICBhdWRpb190cmFja19zdGF0cy0+ZGVsYXll
ZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMgPQorICAgICAgdm9pY2VfcmVjZWl2ZXJfaW5mby5kZWxh
eWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlczsKICAgcmV0dXJuIGF1ZGlvX3RyYWNrX3N0YXRzOwog
fQogCkBAIC0xMzg4LDcgKzEzOTIsNyBAQCBSVENTdGF0c0NvbGxlY3Rvcjo6UHJlcGFyZVRyYW5z
cG9ydENlcnRpZmljYXRlU3RhdHNfbigKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8cnRjOjpSVEND
ZXJ0aWZpY2F0ZT4gbG9jYWxfY2VydGlmaWNhdGU7CiAgICAgaWYgKHBjXy0+R2V0TG9jYWxDZXJ0
aWZpY2F0ZSh0cmFuc3BvcnRfbmFtZSwgJmxvY2FsX2NlcnRpZmljYXRlKSkgewogICAgICAgY2Vy
dGlmaWNhdGVfc3RhdHNfcGFpci5sb2NhbCA9Ci0gICAgICAgICAgbG9jYWxfY2VydGlmaWNhdGUt
PnNzbF9jZXJ0X2NoYWluKCkuR2V0U3RhdHMoKTsKKyAgICAgICAgICBsb2NhbF9jZXJ0aWZpY2F0
ZS0+R2V0U1NMQ2VydGlmaWNhdGVDaGFpbigpLkdldFN0YXRzKCk7CiAgICAgfQogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHJ0Yzo6U1NMQ2VydENoYWluPiByZW1vdGVfY2VydF9jaGFpbiA9CkBAIC0x
NDI2LDcgKzE0MzAsNyBAQCBSVENTdGF0c0NvbGxlY3Rvcjo6UHJlcGFyZVRyYW5zY2VpdmVyU3Rh
dHNJbmZvc19zKCkgY29uc3QgewogICAgIHN0YXRzLnRyYW5zY2VpdmVyID0gdHJhbnNjZWl2ZXIt
PmludGVybmFsKCk7CiAgICAgc3RhdHMubWVkaWFfdHlwZSA9IG1lZGlhX3R5cGU7CiAKLSAgICBj
cmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5j
aGFubmVsKCk7CisgICAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbCA9IHRyYW5z
Y2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCk7CiAgICAgaWYgKCFjaGFubmVsKSB7CiAgICAg
ICAvLyBUaGUgcmVtYWluaW5nIGZpZWxkcyByZXF1aXJlIGEgQmFzZUNoYW5uZWwuCiAgICAgICBj
b250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3J0Y3N0YXRzY29sbGVjdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjc3RhdHNjb2xsZWN0b3JfdW5pdHRlc3Qu
Y2MKaW5kZXggNzQwNGQ0OTJlZjM3ZGQxYWFkY2I3ZjQyM2JkN2I4ODZkNjVhZGNiMy4uYWRjYTll
ZjZjNDY1N2VjZGRjZjRmNThkNzFlMzVkMDYwYzYzOTUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjc3RhdHNjb2xsZWN0b3JfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcnRjc3RhdHNjb2xsZWN0b3JfdW5pdHRlc3QuY2MKQEAgLTE0MywxMCArMTQzLDEwIEBAIHN0
ZDo6dW5pcXVlX3B0cjxDZXJ0aWZpY2F0ZUluZm8+IENyZWF0ZUZha2VDZXJ0aWZpY2F0ZUFuZElu
Zm9Gcm9tRGVycygKICAgfQogICAvLyBGaW5nZXJwcmludHMgZm9yIHRoZSB3aG9sZSBjZXJ0aWZp
Y2F0ZSBjaGFpbiwgc3RhcnRpbmcgd2l0aCBsZWFmCiAgIC8vIGNlcnRpZmljYXRlLgotICBjb25z
dCBydGM6OlNTTENlcnRDaGFpbiYgY2hhaW4gPSBpbmZvLT5jZXJ0aWZpY2F0ZS0+c3NsX2NlcnRf
Y2hhaW4oKTsKKyAgY29uc3QgcnRjOjpTU0xDZXJ0Q2hhaW4mIGNoYWluID0gaW5mby0+Y2VydGlm
aWNhdGUtPkdldFNTTENlcnRpZmljYXRlQ2hhaW4oKTsKICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6
U1NMRmluZ2VycHJpbnQ+IGZwOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYWluLkdldFNp
emUoKTsgaSsrKSB7Ci0gICAgZnAucmVzZXQocnRjOjpTU0xGaW5nZXJwcmludDo6Q3JlYXRlKCJz
aGEtMSIsICZjaGFpbi5HZXQoaSkpKTsKKyAgICBmcCA9IHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNy
ZWF0ZSgic2hhLTEiLCBjaGFpbi5HZXQoaSkpOwogICAgIEVYUEVDVF9UUlVFKGZwKTsKICAgICBp
bmZvLT5maW5nZXJwcmludHMucHVzaF9iYWNrKGZwLT5HZXRSZmM0NTcyRmluZ2VycHJpbnQoKSk7
CiAgIH0KQEAgLTcwNCw3ICs3MDQsNyBAQCBURVNUX0YoUlRDU3RhdHNDb2xsZWN0b3JUZXN0LCBD
b2xsZWN0UlRDQ2VydGlmaWNhdGVTdGF0c1NpbmdsZSkgewogICAgICAgICAgIHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPih7IihyZW1vdGUpIHNpbmdsZSBjZXJ0aWZpY2F0ZSJ9KSk7CiAgIHBjXy0+
U2V0UmVtb3RlQ2VydENoYWluKAogICAgICAga1RyYW5zcG9ydE5hbWUsCi0gICAgICByZW1vdGVf
Y2VydGluZm8tPmNlcnRpZmljYXRlLT5zc2xfY2VydF9jaGFpbigpLlVuaXF1ZUNvcHkoKSk7Cisg
ICAgICByZW1vdGVfY2VydGluZm8tPmNlcnRpZmljYXRlLT5HZXRTU0xDZXJ0aWZpY2F0ZUNoYWlu
KCkuQ2xvbmUoKSk7CiAKICAgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0IFJUQ1N0YXRzUmVwb3J0
PiByZXBvcnQgPSBzdGF0c18tPkdldFN0YXRzUmVwb3J0KCk7CiAKQEAgLTgxOCw3ICs4MTgsNyBA
QCBURVNUX0YoUlRDU3RhdHNDb2xsZWN0b3JUZXN0LCBDb2xsZWN0UlRDQ2VydGlmaWNhdGVTdGF0
c011bHRpcGxlKSB7CiAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KHsiKHJlbW90
ZSkgYXVkaW8ifSkpOwogICBwY18tPlNldFJlbW90ZUNlcnRDaGFpbigKICAgICAgIGtBdWRpb1Ry
YW5zcG9ydCwKLSAgICAgIGF1ZGlvX3JlbW90ZV9jZXJ0aW5mby0+Y2VydGlmaWNhdGUtPnNzbF9j
ZXJ0X2NoYWluKCkuVW5pcXVlQ29weSgpKTsKKyAgICAgIGF1ZGlvX3JlbW90ZV9jZXJ0aW5mby0+
Y2VydGlmaWNhdGUtPkdldFNTTENlcnRpZmljYXRlQ2hhaW4oKS5DbG9uZSgpKTsKIAogICBwY18t
PkFkZFZpZGVvQ2hhbm5lbCgidmlkZW8iLCBrVmlkZW9UcmFuc3BvcnQpOwogICBzdGQ6OnVuaXF1
ZV9wdHI8Q2VydGlmaWNhdGVJbmZvPiB2aWRlb19sb2NhbF9jZXJ0aW5mbyA9CkBAIC04MzAsNyAr
ODMwLDcgQEAgVEVTVF9GKFJUQ1N0YXRzQ29sbGVjdG9yVGVzdCwgQ29sbGVjdFJUQ0NlcnRpZmlj
YXRlU3RhdHNNdWx0aXBsZSkgewogICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPih7
IihyZW1vdGUpIHZpZGVvIn0pKTsKICAgcGNfLT5TZXRSZW1vdGVDZXJ0Q2hhaW4oCiAgICAgICBr
VmlkZW9UcmFuc3BvcnQsCi0gICAgICB2aWRlb19yZW1vdGVfY2VydGluZm8tPmNlcnRpZmljYXRl
LT5zc2xfY2VydF9jaGFpbigpLlVuaXF1ZUNvcHkoKSk7CisgICAgICB2aWRlb19yZW1vdGVfY2Vy
dGluZm8tPmNlcnRpZmljYXRlLT5HZXRTU0xDZXJ0aWZpY2F0ZUNoYWluKCkuQ2xvbmUoKSk7CiAK
ICAgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0IFJUQ1N0YXRzUmVwb3J0PiByZXBvcnQgPSBzdGF0
c18tPkdldFN0YXRzUmVwb3J0KCk7CiAgIEV4cGVjdFJlcG9ydENvbnRhaW5zQ2VydGlmaWNhdGVJ
bmZvKHJlcG9ydCwgKmF1ZGlvX2xvY2FsX2NlcnRpbmZvKTsKQEAgLTg1NSw3ICs4NTUsNyBAQCBU
RVNUX0YoUlRDU3RhdHNDb2xsZWN0b3JUZXN0LCBDb2xsZWN0UlRDQ2VydGlmaWNhdGVTdGF0c0No
YWluKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIocmVt
b3RlKSBjaGFpbiJ9KTsKICAgcGNfLT5TZXRSZW1vdGVDZXJ0Q2hhaW4oCiAgICAgICBrVHJhbnNw
b3J0TmFtZSwKLSAgICAgIHJlbW90ZV9jZXJ0aW5mby0+Y2VydGlmaWNhdGUtPnNzbF9jZXJ0X2No
YWluKCkuVW5pcXVlQ29weSgpKTsKKyAgICAgIHJlbW90ZV9jZXJ0aW5mby0+Y2VydGlmaWNhdGUt
PkdldFNTTENlcnRpZmljYXRlQ2hhaW4oKS5DbG9uZSgpKTsKIAogICBydGM6OnNjb3BlZF9yZWZw
dHI8Y29uc3QgUlRDU3RhdHNSZXBvcnQ+IHJlcG9ydCA9IHN0YXRzXy0+R2V0U3RhdHNSZXBvcnQo
KTsKICAgRXhwZWN0UmVwb3J0Q29udGFpbnNDZXJ0aWZpY2F0ZUluZm8ocmVwb3J0LCAqbG9jYWxf
Y2VydGluZm8pOwpAQCAtMTQyNiw2ICsxNDI2LDggQEAgVEVTVF9GKFJUQ1N0YXRzQ29sbGVjdG9y
VGVzdCwKICAgdm9pY2VfcmVjZWl2ZXJfaW5mby5jb25jZWFsZWRfc2FtcGxlcyA9IDEyMzsKICAg
dm9pY2VfcmVjZWl2ZXJfaW5mby5jb25jZWFsbWVudF9ldmVudHMgPSAxMjsKICAgdm9pY2VfcmVj
ZWl2ZXJfaW5mby5qaXR0ZXJfYnVmZmVyX2RlbGF5X3NlY29uZHMgPSAzNDU2OworICB2b2ljZV9y
ZWNlaXZlcl9pbmZvLmppdHRlcl9idWZmZXJfZmx1c2hlcyA9IDc7CisgIHZvaWNlX3JlY2VpdmVy
X2luZm8uZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMgPSAxNTsKIAogICBzdGF0c18tPkNy
ZWF0ZU1vY2tSdHBTZW5kZXJzUmVjZWl2ZXJzQW5kQ2hhbm5lbHMoCiAgICAgICB7fSwge3N0ZDo6
bWFrZV9wYWlyKHJlbW90ZV9hdWRpb190cmFjay5nZXQoKSwgdm9pY2VfcmVjZWl2ZXJfaW5mbyl9
LCB7fSwKQEAgLTE0NTksNiArMTQ2MSw4IEBAIFRFU1RfRihSVENTdGF0c0NvbGxlY3RvclRlc3Qs
CiAgIGV4cGVjdGVkX3JlbW90ZV9hdWRpb190cmFjay5jb25jZWFsZWRfc2FtcGxlcyA9IDEyMzsK
ICAgZXhwZWN0ZWRfcmVtb3RlX2F1ZGlvX3RyYWNrLmNvbmNlYWxtZW50X2V2ZW50cyA9IDEyOwog
ICBleHBlY3RlZF9yZW1vdGVfYXVkaW9fdHJhY2suaml0dGVyX2J1ZmZlcl9kZWxheSA9IDM0NTY7
CisgIGV4cGVjdGVkX3JlbW90ZV9hdWRpb190cmFjay5qaXR0ZXJfYnVmZmVyX2ZsdXNoZXMgPSA3
OworICBleHBlY3RlZF9yZW1vdGVfYXVkaW9fdHJhY2suZGVsYXllZF9wYWNrZXRfb3V0YWdlX3Nh
bXBsZXMgPSAxNTsKICAgQVNTRVJUX1RSVUUocmVwb3J0LT5HZXQoZXhwZWN0ZWRfcmVtb3RlX2F1
ZGlvX3RyYWNrLmlkKCkpKTsKICAgRVhQRUNUX0VRKGV4cGVjdGVkX3JlbW90ZV9hdWRpb190cmFj
aywKICAgICAgICAgICAgIHJlcG9ydC0+R2V0KGV4cGVjdGVkX3JlbW90ZV9hdWRpb190cmFjay5p
ZCgpKQpAQCAtMTk1Nyw3ICsxOTYxLDcgQEAgVEVTVF9GKFJUQ1N0YXRzQ29sbGVjdG9yVGVzdCwg
Q29sbGVjdFJUQ1RyYW5zcG9ydFN0YXRzKSB7CiAgICAgICAgICAgeyIocmVtb3RlKSBsb2NhbCIs
ICIocmVtb3RlKSBjaGFpbiJ9KTsKICAgcGNfLT5TZXRSZW1vdGVDZXJ0Q2hhaW4oCiAgICAgICBr
VHJhbnNwb3J0TmFtZSwKLSAgICAgIHJlbW90ZV9jZXJ0aW5mby0+Y2VydGlmaWNhdGUtPnNzbF9j
ZXJ0X2NoYWluKCkuVW5pcXVlQ29weSgpKTsKKyAgICAgIHJlbW90ZV9jZXJ0aW5mby0+Y2VydGlm
aWNhdGUtPkdldFNTTENlcnRpZmljYXRlQ2hhaW4oKS5DbG9uZSgpKTsKIAogICByZXBvcnQgPSBz
dGF0c18tPkdldEZyZXNoU3RhdHNSZXBvcnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb24u
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJh
bWV0ZXJzY29udmVyc2lvbi5jYwppbmRleCBlNTE5YjliMDZkZTZjMzNhMDI2ZDQ5NTllOWI3M2Nl
NmQ0ZTJkNzkwLi44NjU2ODVkNzNjNDMyNGZiOGYyZjYxZmVhMDY4NDdkYjljNjU2MzI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBw
YXJhbWV0ZXJzY29udmVyc2lvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYwpAQCAtMzk2LDYgKzM5
Niw3IEBAIFJ0cENhcGFiaWxpdGllcyBUb1J0cENhcGFiaWxpdGllcygKICAgYm9vbCBoYXZlX3Jl
ZCA9IGZhbHNlOwogICBib29sIGhhdmVfdWxwZmVjID0gZmFsc2U7CiAgIGJvb2wgaGF2ZV9mbGV4
ZmVjID0gZmFsc2U7CisgIGJvb2wgaGF2ZV9ydHggPSBmYWxzZTsKICAgZm9yIChjb25zdCBDJiBj
cmlja2V0X2NvZGVjIDogY3JpY2tldF9jb2RlY3MpIHsKICAgICBpZiAoY3JpY2tldF9jb2RlYy5u
YW1lID09IGNyaWNrZXQ6OmtSZWRDb2RlY05hbWUpIHsKICAgICAgIGhhdmVfcmVkID0gdHJ1ZTsK
QEAgLTQwMyw4ICs0MDQsMTkgQEAgUnRwQ2FwYWJpbGl0aWVzIFRvUnRwQ2FwYWJpbGl0aWVzKAog
ICAgICAgaGF2ZV91bHBmZWMgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAoY3JpY2tldF9jb2RlYy5u
YW1lID09IGNyaWNrZXQ6OmtGbGV4ZmVjQ29kZWNOYW1lKSB7CiAgICAgICBoYXZlX2ZsZXhmZWMg
PSB0cnVlOworICAgIH0gZWxzZSBpZiAoY3JpY2tldF9jb2RlYy5uYW1lID09IGNyaWNrZXQ6OmtS
dHhDb2RlY05hbWUpIHsKKyAgICAgIGlmIChoYXZlX3J0eCkgeworICAgICAgICAvLyBUaGVyZSBz
aG91bGQgb25seSBiZSBvbmUgUlRYIGNvZGVjIGVudHJ5CisgICAgICAgIGNvbnRpbnVlOworICAg
ICAgfQorICAgICAgaGF2ZV9ydHggPSB0cnVlOworICAgIH0KKyAgICBhdXRvIGNvZGVjX2NhcGFi
aWxpdHkgPSBUb1J0cENvZGVjQ2FwYWJpbGl0eShjcmlja2V0X2NvZGVjKTsKKyAgICBpZiAoY3Jp
Y2tldF9jb2RlYy5uYW1lID09IGNyaWNrZXQ6OmtSdHhDb2RlY05hbWUpIHsKKyAgICAgIC8vIFJU
WCBjb2RlYyBzaG91bGQgbm90IGhhdmUgYW55IHBhcmFtZXRlcgorICAgICAgY29kZWNfY2FwYWJp
bGl0eS5wYXJhbWV0ZXJzLmNsZWFyKCk7CiAgICAgfQotICAgIGNhcGFiaWxpdGllcy5jb2RlY3Mu
cHVzaF9iYWNrKFRvUnRwQ29kZWNDYXBhYmlsaXR5KGNyaWNrZXRfY29kZWMpKTsKKyAgICBjYXBh
YmlsaXRpZXMuY29kZWNzLnB1c2hfYmFjayhjb2RlY19jYXBhYmlsaXR5KTsKICAgfQogICBmb3Ig
KGNvbnN0IFJ0cEV4dGVuc2lvbiYgY3JpY2tldF9leHRlbnNpb24gOiBjcmlja2V0X2V4dGVuc2lv
bnMpIHsKICAgICBjYXBhYmlsaXRpZXMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKGNy
aWNrZXRfZXh0ZW5zaW9uLnVyaSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1l
dGVyc2NvbnZlcnNpb25fdW5pdHRlc3QuY2MKaW5kZXggMjU3ZDI2ZWJiNTBjM2I4ZTZmMjVjOTk3
MDhhNjYxMzdiZjVjMzBjMS4uZjRmMWI5MjcwYzZjOTZhZmVkOTk5NDc4MGU5ODkyYjFlN2Q5MmQ2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb25fdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb25f
dW5pdHRlc3QuY2MKQEAgLTU3NCwxMSArNTc0LDIzIEBAIFRFU1QoUnRwUGFyYW1ldGVyc0NvbnZl
cnNpb25UZXN0LCBUb1J0cENhcGFiaWxpdGllcykgewogICBmbGV4ZmVjLmlkID0gMTAyOwogICBm
bGV4ZmVjLmNsb2NrcmF0ZSA9IDkwMDAwOwogCisgIGNyaWNrZXQ6OlZpZGVvQ29kZWMgcnR4Owor
ICBydHgubmFtZSA9ICJydHgiOworICBydHguaWQgPSAxMDQ7CisgIHJ0eC5wYXJhbXMuaW5zZXJ0
KHsiYXB0IiwgIjEwMSJ9KTsKKworICBjcmlja2V0OjpWaWRlb0NvZGVjIHJ0eDI7CisgIHJ0eDIu
bmFtZSA9ICJydHgiOworICBydHgyLmlkID0gMTA1OworICBydHgyLnBhcmFtcy5pbnNlcnQoeyJh
cHQiLCAiMTA5In0pOworCiAgIFJ0cENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMgPSBUb1J0cENh
cGFiaWxpdGllczxjcmlja2V0OjpWaWRlb0NvZGVjPigKLSAgICAgIHt2cDgsIHVscGZlY30sIHt7
InVyaSIsIDF9LCB7InVyaTIiLCAzfX0pOwotICBBU1NFUlRfRVEoMnUsIGNhcGFiaWxpdGllcy5j
b2RlY3Muc2l6ZSgpKTsKKyAgICAgIHt2cDgsIHVscGZlYywgcnR4LCBydHgyfSwge3sidXJpIiwg
MX0sIHsidXJpMiIsIDN9fSk7CisgIEFTU0VSVF9FUSgzdSwgY2FwYWJpbGl0aWVzLmNvZGVjcy5z
aXplKCkpOwogICBFWFBFQ1RfRVEoIlZQOCIsIGNhcGFiaWxpdGllcy5jb2RlY3NbMF0ubmFtZSk7
CiAgIEVYUEVDVF9FUSgidWxwZmVjIiwgY2FwYWJpbGl0aWVzLmNvZGVjc1sxXS5uYW1lKTsKKyAg
RVhQRUNUX0VRKCJydHgiLCBjYXBhYmlsaXRpZXMuY29kZWNzWzJdLm5hbWUpOworICBFWFBFQ1Rf
RVEoMHUsIGNhcGFiaWxpdGllcy5jb2RlY3NbMl0ucGFyYW1ldGVycy5zaXplKCkpOwogICBBU1NF
UlRfRVEoMnUsIGNhcGFiaWxpdGllcy5oZWFkZXJfZXh0ZW5zaW9ucy5zaXplKCkpOwogICBFWFBF
Q1RfRVEoInVyaSIsIGNhcGFiaWxpdGllcy5oZWFkZXJfZXh0ZW5zaW9uc1swXS51cmkpOwogICBF
WFBFQ1RfRVEoMSwgY2FwYWJpbGl0aWVzLmhlYWRlcl9leHRlbnNpb25zWzBdLnByZWZlcnJlZF9p
ZCk7CkBAIC01ODcsOCArNTk5LDggQEAgVEVTVChSdHBQYXJhbWV0ZXJzQ29udmVyc2lvblRlc3Qs
IFRvUnRwQ2FwYWJpbGl0aWVzKSB7CiAgIEVYUEVDVF9FUSgwdSwgY2FwYWJpbGl0aWVzLmZlYy5z
aXplKCkpOwogCiAgIGNhcGFiaWxpdGllcyA9IFRvUnRwQ2FwYWJpbGl0aWVzPGNyaWNrZXQ6OlZp
ZGVvQ29kZWM+KAotICAgICAge3ZwOCwgcmVkLCB1bHBmZWN9LCBjcmlja2V0OjpSdHBIZWFkZXJF
eHRlbnNpb25zKCkpOwotICBFWFBFQ1RfRVEoM3UsIGNhcGFiaWxpdGllcy5jb2RlY3Muc2l6ZSgp
KTsKKyAgICAgIHt2cDgsIHJlZCwgdWxwZmVjLCBydHh9LCBjcmlja2V0OjpSdHBIZWFkZXJFeHRl
bnNpb25zKCkpOworICBFWFBFQ1RfRVEoNHUsIGNhcGFiaWxpdGllcy5jb2RlY3Muc2l6ZSgpKTsK
ICAgRVhQRUNUX0VRKDJ1LCBjYXBhYmlsaXRpZXMuZmVjLnNpemUoKSk7CiAgIEVYUEVDVF9ORShj
YXBhYmlsaXRpZXMuZmVjLmVuZCgpLAogICAgICAgICAgICAgc3RkOjpmaW5kKGNhcGFiaWxpdGll
cy5mZWMuYmVnaW4oKSwgY2FwYWJpbGl0aWVzLmZlYy5lbmQoKSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHJlY2VpdmVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcmVjZWl2ZXIu
Y2MKaW5kZXggZDRhMWY2MmY4M2I4NGNjYTY3MGZhYTBiZTU4MjkxZTBjMmEzYmM0Zi4uMTkxNmE3
MzY3MDMyYzRiYjFmODFhNjUxMGQyZWVmMTFjNDVhOTI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcmVjZWl2ZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcmVjZWl2ZXIu
Y2MKQEAgLTUwLDkgKzUwLDEwIEBAIHZvaWQgTWF5YmVBdHRhY2hGcmFtZURlY3J5cHRvclRvTWVk
aWFDaGFubmVsKAogICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiYgc3NyYywKICAg
ICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yLAotICAgIGNyaWNr
ZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgewotICBpZiAobWVkaWFfY2hhbm5lbCAm
JiBzc3JjLmhhc192YWx1ZSgpKSB7Ci0gICAgcmV0dXJuIHdvcmtlcl90aHJlYWQtPkludm9rZTx2
b2lkPihSVENfRlJPTV9IRVJFLCBbJl0geworICAgIGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVk
aWFfY2hhbm5lbCwKKyAgICBib29sIHN0b3BwZWQpIHsKKyAgaWYgKG1lZGlhX2NoYW5uZWwgJiYg
ZnJhbWVfZGVjcnlwdG9yICYmIHNzcmMuaGFzX3ZhbHVlKCkgJiYgIXN0b3BwZWQpIHsKKyAgICB3
b3JrZXJfdGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdIHsKICAgICAgIG1l
ZGlhX2NoYW5uZWwtPlNldEZyYW1lRGVjcnlwdG9yKCpzc3JjLCBmcmFtZV9kZWNyeXB0b3IpOwog
ICAgIH0pOwogICB9CkBAIC0xNTYsOSArMTU3LDEyIEBAIGJvb2wgQXVkaW9SdHBSZWNlaXZlcjo6
U2V0UGFyYW1ldGVycyhjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSB7CiB2b2lkIEF1
ZGlvUnRwUmVjZWl2ZXI6OlNldEZyYW1lRGVjcnlwdG9yKAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yKSB7CiAgIGZyYW1lX2Rl
Y3J5cHRvcl8gPSBzdGQ6Om1vdmUoZnJhbWVfZGVjcnlwdG9yKTsKLSAgLy8gQXR0YWNoIHRoZSBm
cmFtZSBkZWNyeXB0b3IgdG8gdGhlIG1lZGlhIGNoYW5uZWwgaWYgaXQgZXhpc3RzLgotICBNYXli
ZUF0dGFjaEZyYW1lRGVjcnlwdG9yVG9NZWRpYUNoYW5uZWwoc3NyY18sIHdvcmtlcl90aHJlYWRf
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZGVjcnlw
dG9yXywgbWVkaWFfY2hhbm5lbF8pOworICAvLyBTcGVjaWFsIENhc2U6IFNldCB0aGUgZnJhbWUg
ZGVjcnlwdG9yIHRvIGFueSB2YWx1ZSBvbiBhbnkgZXhpc3RpbmcgY2hhbm5lbC4KKyAgaWYgKG1l
ZGlhX2NoYW5uZWxfICYmIHNzcmNfLmhhc192YWx1ZSgpICYmICFzdG9wcGVkXykgeworICAgIHdv
cmtlcl90aHJlYWRfLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdIHsKKyAgICAgIG1l
ZGlhX2NoYW5uZWxfLT5TZXRGcmFtZURlY3J5cHRvcigqc3NyY18sIGZyYW1lX2RlY3J5cHRvcl8p
OworICAgIH0pOworICB9CiB9CiAKIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvcklu
dGVyZmFjZT4KQEAgLTI1Miw4ICsyNTYsOCBAQCB2b2lkIEF1ZGlvUnRwUmVjZWl2ZXI6OlJlY29u
ZmlndXJlKCkgewogICAgIFJUQ19OT1RSRUFDSEVEKCk7CiAgIH0KICAgLy8gUmVhdHRhY2ggdGhl
IGZyYW1lIGRlY3J5cHRvciBpZiB3ZSB3ZXJlIHJlY29uZmlndXJlZC4KLSAgTWF5YmVBdHRhY2hG
cmFtZURlY3J5cHRvclRvTWVkaWFDaGFubmVsKHNzcmNfLCB3b3JrZXJfdGhyZWFkXywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2RlY3J5cHRvcl8sIG1l
ZGlhX2NoYW5uZWxfKTsKKyAgTWF5YmVBdHRhY2hGcmFtZURlY3J5cHRvclRvTWVkaWFDaGFubmVs
KAorICAgICAgc3NyY18sIHdvcmtlcl90aHJlYWRfLCBmcmFtZV9kZWNyeXB0b3JfLCBtZWRpYV9j
aGFubmVsXywgc3RvcHBlZF8pOwogfQogCiB2b2lkIEF1ZGlvUnRwUmVjZWl2ZXI6OlNldE9ic2Vy
dmVyKFJ0cFJlY2VpdmVyT2JzZXJ2ZXJJbnRlcmZhY2UqIG9ic2VydmVyKSB7CkBAIC0yNjQsOSAr
MjY4LDEwIEBAIHZvaWQgQXVkaW9SdHBSZWNlaXZlcjo6U2V0T2JzZXJ2ZXIoUnRwUmVjZWl2ZXJP
YnNlcnZlckludGVyZmFjZSogb2JzZXJ2ZXIpIHsKICAgfQogfQogCi12b2lkIEF1ZGlvUnRwUmVj
ZWl2ZXI6OlNldFZvaWNlTWVkaWFDaGFubmVsKAotICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFu
bmVsKiB2b2ljZV9tZWRpYV9jaGFubmVsKSB7Ci0gIG1lZGlhX2NoYW5uZWxfID0gdm9pY2VfbWVk
aWFfY2hhbm5lbDsKK3ZvaWQgQXVkaW9SdHBSZWNlaXZlcjo6U2V0TWVkaWFDaGFubmVsKGNyaWNr
ZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgeworICBSVENfRENIRUNLKG1lZGlhX2No
YW5uZWwgPT0gbnVsbHB0ciB8fAorICAgICAgICAgICAgIG1lZGlhX2NoYW5uZWwtPm1lZGlhX3R5
cGUoKSA9PSBtZWRpYV90eXBlKCkpOworICBtZWRpYV9jaGFubmVsXyA9IHN0YXRpY19jYXN0PGNy
aWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKj4obWVkaWFfY2hhbm5lbCk7CiB9CiAKIHZvaWQgQXVk
aW9SdHBSZWNlaXZlcjo6Tm90aWZ5Rmlyc3RQYWNrZXRSZWNlaXZlZCgpIHsKQEAgLTM0Nyw5ICsz
NTIsMTIgQEAgYm9vbCBWaWRlb1J0cFJlY2VpdmVyOjpTZXRQYXJhbWV0ZXJzKGNvbnN0IFJ0cFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpIHsKIHZvaWQgVmlkZW9SdHBSZWNlaXZlcjo6U2V0RnJhbWVE
ZWNyeXB0b3IoCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNl
PiBmcmFtZV9kZWNyeXB0b3IpIHsKICAgZnJhbWVfZGVjcnlwdG9yXyA9IHN0ZDo6bW92ZShmcmFt
ZV9kZWNyeXB0b3IpOwotICAvLyBBdHRhY2ggdGhlIG5ldyBmcmFtZSBkZWNyeXB0b3IgdGhlIG1l
ZGlhIGNoYW5uZWwgaWYgaXQgZXhpc3RzIHlldC4KLSAgTWF5YmVBdHRhY2hGcmFtZURlY3J5cHRv
clRvTWVkaWFDaGFubmVsKHNzcmNfLCB3b3JrZXJfdGhyZWFkXywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2RlY3J5cHRvcl8sIG1lZGlhX2NoYW5uZWxf
KTsKKyAgLy8gU3BlY2lhbCBDYXNlOiBTZXQgdGhlIGZyYW1lIGRlY3J5cHRvciB0byBhbnkgdmFs
dWUgb24gYW55IGV4aXN0aW5nIGNoYW5uZWwuCisgIGlmIChtZWRpYV9jaGFubmVsXyAmJiBzc3Jj
Xy5oYXNfdmFsdWUoKSAmJiAhc3RvcHBlZF8pIHsKKyAgICB3b3JrZXJfdGhyZWFkXy0+SW52b2tl
PHZvaWQ+KFJUQ19GUk9NX0hFUkUsIFsmXSB7CisgICAgICBtZWRpYV9jaGFubmVsXy0+U2V0RnJh
bWVEZWNyeXB0b3IoKnNzcmNfLCBmcmFtZV9kZWNyeXB0b3JfKTsKKyAgICB9KTsKKyAgfQogfQog
CiBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+CkBAIC0zODcsOCAr
Mzk1LDggQEAgdm9pZCBWaWRlb1J0cFJlY2VpdmVyOjpTZXR1cE1lZGlhQ2hhbm5lbCh1aW50MzJf
dCBzc3JjKSB7CiAgIHNzcmNfID0gc3NyYzsKICAgU2V0U2luayhzb3VyY2VfLT5zaW5rKCkpOwog
ICAvLyBBdHRhY2ggYW55IGV4aXN0aW5nIGZyYW1lIGRlY3J5cHRvciB0byB0aGUgbWVkaWEgY2hh
bm5lbC4KLSAgTWF5YmVBdHRhY2hGcmFtZURlY3J5cHRvclRvTWVkaWFDaGFubmVsKHNzcmNfLCB3
b3JrZXJfdGhyZWFkXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZyYW1lX2RlY3J5cHRvcl8sIG1lZGlhX2NoYW5uZWxfKTsKKyAgTWF5YmVBdHRhY2hGcmFtZURl
Y3J5cHRvclRvTWVkaWFDaGFubmVsKAorICAgICAgc3NyY18sIHdvcmtlcl90aHJlYWRfLCBmcmFt
ZV9kZWNyeXB0b3JfLCBtZWRpYV9jaGFubmVsXywgc3RvcHBlZF8pOwogfQogCiB2b2lkIFZpZGVv
UnRwUmVjZWl2ZXI6OnNldF9zdHJlYW1faWRzKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBzdHJl
YW1faWRzKSB7CkBAIC00MzYsOSArNDQ0LDEwIEBAIHZvaWQgVmlkZW9SdHBSZWNlaXZlcjo6U2V0
T2JzZXJ2ZXIoUnRwUmVjZWl2ZXJPYnNlcnZlckludGVyZmFjZSogb2JzZXJ2ZXIpIHsKICAgfQog
fQogCi12b2lkIFZpZGVvUnRwUmVjZWl2ZXI6OlNldFZpZGVvTWVkaWFDaGFubmVsKAotICAgIGNy
aWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVsKiB2aWRlb19tZWRpYV9jaGFubmVsKSB7Ci0gIG1lZGlh
X2NoYW5uZWxfID0gdmlkZW9fbWVkaWFfY2hhbm5lbDsKK3ZvaWQgVmlkZW9SdHBSZWNlaXZlcjo6
U2V0TWVkaWFDaGFubmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgewor
ICBSVENfRENIRUNLKG1lZGlhX2NoYW5uZWwgPT0gbnVsbHB0ciB8fAorICAgICAgICAgICAgIG1l
ZGlhX2NoYW5uZWwtPm1lZGlhX3R5cGUoKSA9PSBtZWRpYV90eXBlKCkpOworICBtZWRpYV9jaGFu
bmVsXyA9IHN0YXRpY19jYXN0PGNyaWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVsKj4obWVkaWFfY2hh
bm5lbCk7CiB9CiAKIHZvaWQgVmlkZW9SdHBSZWNlaXZlcjo6Tm90aWZ5Rmlyc3RQYWNrZXRSZWNl
aXZlZCgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3J0cHJlY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9ydHByZWNlaXZlci5oCmluZGV4IDg1YmU4YzI1OGJmYmEyZjViMDkyZWZm
MWJmY2Q1MmM0MTIyYzNmNjkuLjA2MzMxYTY2YzRkZDk1Y2EyZTVlMTU4ODQ2MmJiMWVmZWZkODcy
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3J0cHJlY2VpdmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcnRwcmVjZWl2ZXIuaApAQCAtMzQsMTQgKzM0LDEwIEBAIGNsYXNzIFJ0cFJl
Y2VpdmVySW50ZXJuYWwgOiBwdWJsaWMgUnRwUmVjZWl2ZXJJbnRlcmZhY2UgewogICB2aXJ0dWFs
IHZvaWQgU3RvcCgpID0gMDsKIAogICAvLyBTZXRzIHRoZSB1bmRlcmx5aW5nIE1lZGlhRW5naW5l
IGNoYW5uZWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUnRwU2VuZGVyLgotICAvLyBTZXRWb2ljZU1l
ZGlhQ2hhbm5lbCBzaG91bGQgYmUgdXNlZCBmb3IgYXVkaW8gUnRwU2VuZGVycyBhbmQKLSAgLy8g
U2V0VmlkZW9NZWRpYUNoYW5uZWwgc2hvdWxkIGJlIHVzZWQgZm9yIHZpZGVvIFJ0cFNlbmRlcnMu
IE11c3QgY2FsbCB0aGUKLSAgLy8gYXBwcm9wcmlhdGUgU2V0WHh4TWVkaWFDaGFubmVsKG51bGxw
dHIpIGJlZm9yZSB0aGUgbWVkaWEgY2hhbm5lbCBpcwotICAvLyBkZXN0cm95ZWQuCi0gIHZpcnR1
YWwgdm9pZCBTZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFD
aGFubmVsKiB2b2ljZV9tZWRpYV9jaGFubmVsKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBTZXRWaWRl
b01lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVsKiB2aWRlb19t
ZWRpYV9jaGFubmVsKSA9IDA7CisgIC8vIEEgVm9pY2VNZWRpYUNoYW5uZWwgc2hvdWxkIGJlIHVz
ZWQgZm9yIGF1ZGlvIFJ0cFNlbmRlcnMgYW5kCisgIC8vIGEgVmlkZW9NZWRpYUNoYW5uZWwgc2hv
dWxkIGJlIHVzZWQgZm9yIHZpZGVvIFJ0cFNlbmRlcnMuCisgIC8vIE11c3QgY2FsbCBTZXRNZWRp
YUNoYW5uZWwobnVsbHB0cikgYmVmb3JlIHRoZSBtZWRpYSBjaGFubmVsIGlzIGRlc3Ryb3llZC4K
KyAgdmlydHVhbCB2b2lkIFNldE1lZGlhQ2hhbm5lbChjcmlja2V0OjpNZWRpYUNoYW5uZWwqIG1l
ZGlhX2NoYW5uZWwpID0gMDsKIAogICAvLyBDb25maWd1cmVzIHRoZSBSdHBSZWNlaXZlciB3aXRo
IHRoZSB1bmRlcmx5aW5nIG1lZGlhIGNoYW5uZWwsIHdpdGggdGhlCiAgIC8vIGdpdmVuIFNTUkMg
YXMgdGhlIHN0cmVhbSBpZGVudGlmaWVyLiBJZiB8c3NyY3wgaXMgMCwgdGhlIHJlY2VpdmVyIHdp
bGwKQEAgLTEzMCwxMyArMTI2LDggQEAgY2xhc3MgQXVkaW9SdHBSZWNlaXZlciA6IHB1YmxpYyBP
YnNlcnZlckludGVyZmFjZSwKICAgdm9pZCBTZXRTdHJlYW1zKGNvbnN0IHN0ZDo6dmVjdG9yPHJ0
Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+JgogICAgICAgICAgICAgICAg
ICAgICAgIHN0cmVhbXMpIG92ZXJyaWRlOwogICB2b2lkIFNldE9ic2VydmVyKFJ0cFJlY2VpdmVy
T2JzZXJ2ZXJJbnRlcmZhY2UqIG9ic2VydmVyKSBvdmVycmlkZTsKLSAgdm9pZCBTZXRWb2ljZU1l
ZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiB2b2ljZV9tZWRp
YV9jaGFubmVsKSBvdmVycmlkZTsKIAotICB2b2lkIFNldFZpZGVvTWVkaWFDaGFubmVsKAotICAg
ICAgY3JpY2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqIHZpZGVvX21lZGlhX2NoYW5uZWwpIG92ZXJy
aWRlIHsKLSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICB9CisgIHZvaWQgU2V0TWVkaWFDaGFubmVs
KGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgb3ZlcnJpZGU7CiAKICAgc3Rk
Ojp2ZWN0b3I8UnRwU291cmNlPiBHZXRTb3VyY2VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIGludCBB
dHRhY2htZW50SWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBhdHRhY2htZW50X2lkXzsgfQpA
QCAtMjE3LDEzICsyMDgsNyBAQCBjbGFzcyBWaWRlb1J0cFJlY2VpdmVyIDogcHVibGljIHJ0Yzo6
UmVmQ291bnRlZE9iamVjdDxSdHBSZWNlaXZlckludGVybmFsPiB7CiAKICAgdm9pZCBTZXRPYnNl
cnZlcihSdHBSZWNlaXZlck9ic2VydmVySW50ZXJmYWNlKiBvYnNlcnZlcikgb3ZlcnJpZGU7CiAK
LSAgdm9pZCBTZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFD
aGFubmVsKiB2b2ljZV9tZWRpYV9jaGFubmVsKSBvdmVycmlkZSB7Ci0gICAgUlRDX05PVFJFQUNI
RUQoKTsKLSAgfQotCi0gIHZvaWQgU2V0VmlkZW9NZWRpYUNoYW5uZWwoCi0gICAgICBjcmlja2V0
OjpWaWRlb01lZGlhQ2hhbm5lbCogdmlkZW9fbWVkaWFfY2hhbm5lbCkgb3ZlcnJpZGU7CisgIHZv
aWQgU2V0TWVkaWFDaGFubmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkg
b3ZlcnJpZGU7CiAKICAgaW50IEF0dGFjaG1lbnRJZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGF0dGFjaG1lbnRfaWRfOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHNlbmRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHNlbmRlci5jYwppbmRleCAzYmI5MGYyNGRhMTRi
OTE0ZDMwM2Y1YmE4ZWMzYzYzN2NkNGI1MmJkLi43NmZkY2E2ZTk0MjA5NDgzZWE3NjczMjUxZGRh
NDJkNWU5YzZmODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVyLmNjCkBAIC01OCw3ICs1OCw4IEBAIGJvb2wg
VW5pbXBsZW1lbnRlZFJ0cEVuY29kaW5nUGFyYW1ldGVySGFzVmFsdWUoCiAvLyBsYXllci4KIGJv
b2wgUGVyU2VuZGVyUnRwRW5jb2RpbmdQYXJhbWV0ZXJIYXNWYWx1ZSgKICAgICBjb25zdCBSdHBF
bmNvZGluZ1BhcmFtZXRlcnMmIGVuY29kaW5nX3BhcmFtcykgewotICBpZiAoZW5jb2RpbmdfcGFy
YW1zLmJpdHJhdGVfcHJpb3JpdHkgIT0ga0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkpIHsKKyAgaWYg
KGVuY29kaW5nX3BhcmFtcy5iaXRyYXRlX3ByaW9yaXR5ICE9IGtEZWZhdWx0Qml0cmF0ZVByaW9y
aXR5IHx8CisgICAgICBlbmNvZGluZ19wYXJhbXMubmV0d29ya19wcmlvcml0eSAhPSBrRGVmYXVs
dEJpdHJhdGVQcmlvcml0eSkgewogICAgIHJldHVybiB0cnVlOwogICB9CiAgIHJldHVybiBmYWxz
ZTsKQEAgLTY4LDEzICs2OSwxNCBAQCBib29sIFBlclNlbmRlclJ0cEVuY29kaW5nUGFyYW1ldGVy
SGFzVmFsdWUoCiAvLyBjb3JyZWN0IHdvcmtlciB0aHJlYWQgb25seSBpZiBib3RoIHRoZSBtZWRp
YSBjaGFubmVsIGV4aXN0cyBhbmQgYSBzc3JjIGhhcwogLy8gYmVlbiBhbGxvY2F0ZWQgdG8gdGhl
IHN0cmVhbS4KIHZvaWQgTWF5YmVBdHRhY2hGcmFtZUVuY3J5cHRvclRvTWVkaWFDaGFubmVsKAot
ICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBzc3JjLAorICAgIGNvbnN0IHVpbnQz
Ml90IHNzcmMsCiAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCiAgICAgcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2VuY3J5cHRv
ciwKLSAgICBjcmlja2V0OjpNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwpIHsKLSAgaWYgKG1l
ZGlhX2NoYW5uZWwgJiYgc3NyYy5oYXNfdmFsdWUoKSkgewotICAgIHJldHVybiB3b3JrZXJfdGhy
ZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdIHsKLSAgICAgIG1lZGlhX2NoYW5u
ZWwtPlNldEZyYW1lRW5jcnlwdG9yKCpzc3JjLCBmcmFtZV9lbmNyeXB0b3IpOworICAgIGNyaWNr
ZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCwKKyAgICBib29sIHN0b3BwZWQpIHsKKyAg
aWYgKG1lZGlhX2NoYW5uZWwgJiYgZnJhbWVfZW5jcnlwdG9yICYmIHNzcmMgJiYgIXN0b3BwZWQp
IHsKKyAgICB3b3JrZXJfdGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdIHsK
KyAgICAgIG1lZGlhX2NoYW5uZWwtPlNldEZyYW1lRW5jcnlwdG9yKHNzcmMsIGZyYW1lX2VuY3J5
cHRvcik7CiAgICAgfSk7CiAgIH0KIH0KQEAgLTMwNSw4ICszMDcsMTIgQEAgcnRjOjpzY29wZWRf
cmVmcHRyPER0bWZTZW5kZXJJbnRlcmZhY2U+IEF1ZGlvUnRwU2VuZGVyOjpHZXREdG1mU2VuZGVy
KCkgY29uc3Qgewogdm9pZCBBdWRpb1J0cFNlbmRlcjo6U2V0RnJhbWVFbmNyeXB0b3IoCiAgICAg
cnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9lbmNyeXB0
b3IpIHsKICAgZnJhbWVfZW5jcnlwdG9yXyA9IHN0ZDo6bW92ZShmcmFtZV9lbmNyeXB0b3IpOwot
ICBNYXliZUF0dGFjaEZyYW1lRW5jcnlwdG9yVG9NZWRpYUNoYW5uZWwoc3NyY18sIHdvcmtlcl90
aHJlYWRfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVf
ZW5jcnlwdG9yXywgbWVkaWFfY2hhbm5lbF8pOworICAvLyBTcGVjaWFsIENhc2U6IFNldCB0aGUg
ZnJhbWUgZW5jcnlwdG9yIHRvIGFueSB2YWx1ZSBvbiBhbnkgZXhpc3RpbmcgY2hhbm5lbC4KKyAg
aWYgKG1lZGlhX2NoYW5uZWxfICYmIHNzcmNfICYmICFzdG9wcGVkXykgeworICAgIHdvcmtlcl90
aHJlYWRfLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdIHsKKyAgICAgIG1lZGlhX2No
YW5uZWxfLT5TZXRGcmFtZUVuY3J5cHRvcihzc3JjXywgZnJhbWVfZW5jcnlwdG9yXyk7CisgICAg
fSk7CisgIH0KIH0KIAogcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNl
PiBBdWRpb1J0cFNlbmRlcjo6R2V0RnJhbWVFbmNyeXB0b3IoKQpAQCAtMzU2LDggKzM2Miw4IEBA
IHZvaWQgQXVkaW9SdHBTZW5kZXI6OlNldFNzcmModWludDMyX3Qgc3NyYykgewogICAgIH0pOwog
ICB9CiAgIC8vIEVhY2ggdGltZSB0aGVyZSBpcyBhbiBzc3JjIHVwZGF0ZS4KLSAgTWF5YmVBdHRh
Y2hGcmFtZUVuY3J5cHRvclRvTWVkaWFDaGFubmVsKHNzcmNfLCB3b3JrZXJfdGhyZWFkXywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2VuY3J5cHRvcl8s
IG1lZGlhX2NoYW5uZWxfKTsKKyAgTWF5YmVBdHRhY2hGcmFtZUVuY3J5cHRvclRvTWVkaWFDaGFu
bmVsKAorICAgICAgc3NyY18sIHdvcmtlcl90aHJlYWRfLCBmcmFtZV9lbmNyeXB0b3JfLCBtZWRp
YV9jaGFubmVsXywgc3RvcHBlZF8pOwogfQogCiB2b2lkIEF1ZGlvUnRwU2VuZGVyOjpTdG9wKCkg
ewpAQCAtMzgwLDkgKzM4NiwxMCBAQCB2b2lkIEF1ZGlvUnRwU2VuZGVyOjpTdG9wKCkgewogICBz
dG9wcGVkXyA9IHRydWU7CiB9CiAKLXZvaWQgQXVkaW9SdHBTZW5kZXI6OlNldFZvaWNlTWVkaWFD
aGFubmVsKAotICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiB2b2ljZV9tZWRpYV9jaGFu
bmVsKSB7Ci0gIG1lZGlhX2NoYW5uZWxfID0gdm9pY2VfbWVkaWFfY2hhbm5lbDsKK3ZvaWQgQXVk
aW9SdHBTZW5kZXI6OlNldE1lZGlhQ2hhbm5lbChjcmlja2V0OjpNZWRpYUNoYW5uZWwqIG1lZGlh
X2NoYW5uZWwpIHsKKyAgUlRDX0RDSEVDSyhtZWRpYV9jaGFubmVsID09IG51bGxwdHIgfHwKKyAg
ICAgICAgICAgICBtZWRpYV9jaGFubmVsLT5tZWRpYV90eXBlKCkgPT0gbWVkaWFfdHlwZSgpKTsK
KyAgbWVkaWFfY2hhbm5lbF8gPSBzdGF0aWNfY2FzdDxjcmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5l
bCo+KG1lZGlhX2NoYW5uZWwpOwogfQogCiB2b2lkIEF1ZGlvUnRwU2VuZGVyOjpTZXRBdWRpb1Nl
bmQoKSB7CkBAIC0zOTksOSArNDA2LDcgQEAgdm9pZCBBdWRpb1J0cFNlbmRlcjo6U2V0QXVkaW9T
ZW5kKCkgewogICAvLyBvcHRpb25zIHNpbmNlIGl0IGlzIGFsc28gYXBwbGllZCB0byBhbGwgc3Ry
ZWFtcy9jaGFubmVscywgbG9jYWwgb3IgcmVtb3RlLgogICBpZiAodHJhY2tfLT5lbmFibGVkKCkg
JiYgdHJhY2tfLT5HZXRTb3VyY2UoKSAmJgogICAgICAgIXRyYWNrXy0+R2V0U291cmNlKCktPnJl
bW90ZSgpKSB7Ci0gICAgLy8gVE9ETyh4aWFucyk6IFJlbW92ZSB0aGlzIHN0YXRpY19jYXN0IHNp
bmNlIHdlIHNob3VsZCBiZSBhYmxlIHRvIGNvbm5lY3QKLSAgICAvLyBhIHJlbW90ZSBhdWRpbyB0
cmFjayB0byBhIHBlZXIgY29ubmVjdGlvbi4KLSAgICBvcHRpb25zID0gc3RhdGljX2Nhc3Q8TG9j
YWxBdWRpb1NvdXJjZSo+KHRyYWNrXy0+R2V0U291cmNlKCkpLT5vcHRpb25zKCk7CisgICAgb3B0
aW9ucyA9IHRyYWNrXy0+R2V0U291cmNlKCktPm9wdGlvbnMoKTsKICAgfQogI2VuZGlmCiAKQEAg
LTU1Nyw4ICs1NjIsMTIgQEAgcnRjOjpzY29wZWRfcmVmcHRyPER0bWZTZW5kZXJJbnRlcmZhY2U+
IFZpZGVvUnRwU2VuZGVyOjpHZXREdG1mU2VuZGVyKCkgY29uc3Qgewogdm9pZCBWaWRlb1J0cFNl
bmRlcjo6U2V0RnJhbWVFbmNyeXB0b3IoCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5j
cnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9lbmNyeXB0b3IpIHsKICAgZnJhbWVfZW5jcnlwdG9yXyA9
IHN0ZDo6bW92ZShmcmFtZV9lbmNyeXB0b3IpOwotICBNYXliZUF0dGFjaEZyYW1lRW5jcnlwdG9y
VG9NZWRpYUNoYW5uZWwoc3NyY18sIHdvcmtlcl90aHJlYWRfLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZW5jcnlwdG9yXywgbWVkaWFfY2hhbm5lbF8p
OworICAvLyBTcGVjaWFsIENhc2U6IFNldCB0aGUgZnJhbWUgZW5jcnlwdG9yIHRvIGFueSB2YWx1
ZSBvbiBhbnkgZXhpc3RpbmcgY2hhbm5lbC4KKyAgaWYgKG1lZGlhX2NoYW5uZWxfICYmIHNzcmNf
ICYmICFzdG9wcGVkXykgeworICAgIHdvcmtlcl90aHJlYWRfLT5JbnZva2U8dm9pZD4oUlRDX0ZS
T01fSEVSRSwgWyZdIHsKKyAgICAgIG1lZGlhX2NoYW5uZWxfLT5TZXRGcmFtZUVuY3J5cHRvcihz
c3JjXywgZnJhbWVfZW5jcnlwdG9yXyk7CisgICAgfSk7CisgIH0KIH0KIAogcnRjOjpzY29wZWRf
cmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBWaWRlb1J0cFNlbmRlcjo6R2V0RnJhbWVF
bmNyeXB0b3IoKQpAQCAtNjAxLDggKzYxMCw4IEBAIHZvaWQgVmlkZW9SdHBTZW5kZXI6OlNldFNz
cmModWludDMyX3Qgc3NyYykgewogICAgICAgaW5pdF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3MuY2xl
YXIoKTsKICAgICB9KTsKICAgfQotICBNYXliZUF0dGFjaEZyYW1lRW5jcnlwdG9yVG9NZWRpYUNo
YW5uZWwoc3NyY18sIHdvcmtlcl90aHJlYWRfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhbWVfZW5jcnlwdG9yXywgbWVkaWFfY2hhbm5lbF8pOworICBNYXli
ZUF0dGFjaEZyYW1lRW5jcnlwdG9yVG9NZWRpYUNoYW5uZWwoCisgICAgICBzc3JjXywgd29ya2Vy
X3RocmVhZF8sIGZyYW1lX2VuY3J5cHRvcl8sIG1lZGlhX2NoYW5uZWxfLCBzdG9wcGVkXyk7CiB9
CiAKIHZvaWQgVmlkZW9SdHBTZW5kZXI6OlN0b3AoKSB7CkBAIC02MjEsOSArNjMwLDEwIEBAIHZv
aWQgVmlkZW9SdHBTZW5kZXI6OlN0b3AoKSB7CiAgIHN0b3BwZWRfID0gdHJ1ZTsKIH0KIAotdm9p
ZCBWaWRlb1J0cFNlbmRlcjo6U2V0VmlkZW9NZWRpYUNoYW5uZWwoCi0gICAgY3JpY2tldDo6Vmlk
ZW9NZWRpYUNoYW5uZWwqIHZpZGVvX21lZGlhX2NoYW5uZWwpIHsKLSAgbWVkaWFfY2hhbm5lbF8g
PSB2aWRlb19tZWRpYV9jaGFubmVsOwordm9pZCBWaWRlb1J0cFNlbmRlcjo6U2V0TWVkaWFDaGFu
bmVsKGNyaWNrZXQ6Ok1lZGlhQ2hhbm5lbCogbWVkaWFfY2hhbm5lbCkgeworICBSVENfRENIRUNL
KG1lZGlhX2NoYW5uZWwgPT0gbnVsbHB0ciB8fAorICAgICAgICAgICAgIG1lZGlhX2NoYW5uZWwt
Pm1lZGlhX3R5cGUoKSA9PSBtZWRpYV90eXBlKCkpOworICBtZWRpYV9jaGFubmVsXyA9IHN0YXRp
Y19jYXN0PGNyaWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVsKj4obWVkaWFfY2hhbm5lbCk7CiB9CiAK
IHZvaWQgVmlkZW9SdHBTZW5kZXI6OlNldFZpZGVvU2VuZCgpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHNlbmRlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVyLmgKaW5k
ZXggMmE4Mjg5ZjQxN2VhYzk0ZTI0ODNhOThiZTdmNzhiNmJiZDdmODI3Yy4uMDdmYWU2Yjk1NDdj
NDk0YTIzZmYzZDc1OGUyZTNhNjJhZWZmYzhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVyLmgKQEAgLTM2LDE0
ICszNiwxMCBAQCBib29sIFVuaW1wbGVtZW50ZWRSdHBQYXJhbWV0ZXJIYXNWYWx1ZShjb25zdCBS
dHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKIGNsYXNzIFJ0cFNlbmRlckludGVybmFsIDogcHVi
bGljIFJ0cFNlbmRlckludGVyZmFjZSB7CiAgcHVibGljOgogICAvLyBTZXRzIHRoZSB1bmRlcmx5
aW5nIE1lZGlhRW5naW5lIGNoYW5uZWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUnRwU2VuZGVyLgot
ICAvLyBTZXRWb2ljZU1lZGlhQ2hhbm5lbCBzaG91bGQgYmUgdXNlZCBmb3IgYXVkaW8gUnRwU2Vu
ZGVycyBhbmQKLSAgLy8gU2V0VmlkZW9NZWRpYUNoYW5uZWwgc2hvdWxkIGJlIHVzZWQgZm9yIHZp
ZGVvIFJ0cFNlbmRlcnMuIE11c3QgY2FsbCB0aGUKLSAgLy8gYXBwcm9wcmlhdGUgU2V0WHh4TWVk
aWFDaGFubmVsKG51bGxwdHIpIGJlZm9yZSB0aGUgbWVkaWEgY2hhbm5lbCBpcwotICAvLyBkZXN0
cm95ZWQuCi0gIHZpcnR1YWwgdm9pZCBTZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNr
ZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiB2b2ljZV9tZWRpYV9jaGFubmVsKSA9IDA7Ci0gIHZpcnR1
YWwgdm9pZCBTZXRWaWRlb01lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZpZGVvTWVkaWFD
aGFubmVsKiB2aWRlb19tZWRpYV9jaGFubmVsKSA9IDA7CisgIC8vIEEgVm9pY2VNZWRpYUNoYW5u
ZWwgc2hvdWxkIGJlIHVzZWQgZm9yIGF1ZGlvIFJ0cFNlbmRlcnMgYW5kCisgIC8vIGEgVmlkZW9N
ZWRpYUNoYW5uZWwgc2hvdWxkIGJlIHVzZWQgZm9yIHZpZGVvIFJ0cFNlbmRlcnMuCisgIC8vIE11
c3QgY2FsbCBTZXRNZWRpYUNoYW5uZWwobnVsbHB0cikgYmVmb3JlIHRoZSBtZWRpYSBjaGFubmVs
IGlzIGRlc3Ryb3llZC4KKyAgdmlydHVhbCB2b2lkIFNldE1lZGlhQ2hhbm5lbChjcmlja2V0OjpN
ZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwpID0gMDsKIAogICAvLyBVc2VkIHRvIHNldCB0aGUg
U1NSQyBvZiB0aGUgc2VuZGVyLCBvbmNlIGEgbG9jYWwgZGVzY3JpcHRpb24gaGFzIGJlZW4gc2V0
LgogICAvLyBJZiB8c3NyY3wgaXMgMCwgdGhpcyBpbmRpYXRlcyB0aGF0IHRoZSBzZW5kZXIgc2hv
dWxkIGRpc2Nvbm5lY3QgZnJvbSB0aGUKQEAgLTE1NiwxMyArMTUyLDcgQEAgY2xhc3MgQXVkaW9S
dHBTZW5kZXIgOiBwdWJsaWMgRHRtZlByb3ZpZGVySW50ZXJmYWNlLAogCiAgIGludCBBdHRhY2ht
ZW50SWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBhdHRhY2htZW50X2lkXzsgfQogCi0gIHZv
aWQgU2V0Vm9pY2VNZWRpYUNoYW5uZWwoCi0gICAgICBjcmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5l
bCogdm9pY2VfbWVkaWFfY2hhbm5lbCkgb3ZlcnJpZGU7Ci0KLSAgdm9pZCBTZXRWaWRlb01lZGlh
Q2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVsKiB2aWRlb19tZWRpYV9j
aGFubmVsKSBvdmVycmlkZSB7Ci0gICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgfQorICB2b2lkIFNl
dE1lZGlhQ2hhbm5lbChjcmlja2V0OjpNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwpIG92ZXJy
aWRlOwogCiAgcHJpdmF0ZToKICAgLy8gVE9ETyhuaXNzZSk6IFNpbmNlIFNTUkMgPT0gMCBpcyB0
ZWNobmljYWxseSB2YWxpZCwgZmlndXJlIG91dApAQCAtMjUzLDEzICsyNDMsNyBAQCBjbGFzcyBW
aWRlb1J0cFNlbmRlciA6IHB1YmxpYyBPYnNlcnZlckludGVyZmFjZSwKICAgdm9pZCBTdG9wKCkg
b3ZlcnJpZGU7CiAgIGludCBBdHRhY2htZW50SWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBh
dHRhY2htZW50X2lkXzsgfQogCi0gIHZvaWQgU2V0Vm9pY2VNZWRpYUNoYW5uZWwoCi0gICAgICBj
cmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCogdm9pY2VfbWVkaWFfY2hhbm5lbCkgb3ZlcnJpZGUg
ewotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIH0KLQotICB2b2lkIFNldFZpZGVvTWVkaWFDaGFu
bmVsKAotICAgICAgY3JpY2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqIHZpZGVvX21lZGlhX2NoYW5u
ZWwpIG92ZXJyaWRlOworICB2b2lkIFNldE1lZGlhQ2hhbm5lbChjcmlja2V0OjpNZWRpYUNoYW5u
ZWwqIG1lZGlhX2NoYW5uZWwpIG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAgYm9vbCBjYW5fc2Vu
ZF90cmFjaygpIGNvbnN0IHsgcmV0dXJuIHRyYWNrXyAmJiBzc3JjXzsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVycmVj
ZWl2ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9ydHBzZW5kZXJyZWNlaXZlcl91bml0dGVzdC5jYwppbmRleCAwN2ZmNmEzODY1NDQ2
NDc0YTIxODZlMmI2OTFlOGZmYzljYTkwMzQ0Li4zYmU2OWJhZmM5YzAxZjVkNmVmNGQ0MmYwNzE4
ODJhMjNlMjNhNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXJyZWNlaXZlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXJyZWNlaXZlcl91
bml0dGVzdC5jYwpAQCAtODAsMTIgKzgwLDEyIEBAIGNsYXNzIFJ0cFNlbmRlclJlY2VpdmVyVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogCiAgICAgdm9pY2VfY2hhbm5lbF8gPSBjaGFubmVs
X21hbmFnZXJfLkNyZWF0ZVZvaWNlQ2hhbm5lbCgKICAgICAgICAgJmZha2VfY2FsbF8sIGNyaWNr
ZXQ6Ok1lZGlhQ29uZmlnKCksIHJ0cF90cmFuc3BvcnRfLmdldCgpLAotICAgICAgICBydGM6OlRo
cmVhZDo6Q3VycmVudCgpLCBjcmlja2V0OjpDTl9BVURJTywgc3J0cF9yZXF1aXJlZCwKLSAgICAg
ICAgcnRjOjpDcnlwdG9PcHRpb25zKCksIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKTsKKyAgICAg
ICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyLCBydGM6OlRocmVhZDo6Q3VycmVudCgpLCBj
cmlja2V0OjpDTl9BVURJTywKKyAgICAgICAgc3J0cF9yZXF1aXJlZCwgd2VicnRjOjpDcnlwdG9P
cHRpb25zKCksIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpKTsKICAgICB2aWRlb19jaGFubmVsXyA9
IGNoYW5uZWxfbWFuYWdlcl8uQ3JlYXRlVmlkZW9DaGFubmVsKAogICAgICAgICAmZmFrZV9jYWxs
XywgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgcnRwX3RyYW5zcG9ydF8uZ2V0KCksCiAgICAgICAg
IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksIGNyaWNrZXQ6OkNOX1ZJREVPLCBzcnRwX3JlcXVpcmVk
LAotICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMoKSwgY3JpY2tldDo6VmlkZW9PcHRpb25zKCkp
OworICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSwgY3JpY2tldDo6VmlkZW9PcHRpb25z
KCkpOwogICAgIHZvaWNlX2NoYW5uZWxfLT5FbmFibGUodHJ1ZSk7CiAgICAgdmlkZW9fY2hhbm5l
bF8tPkVuYWJsZSh0cnVlKTsKICAgICB2b2ljZV9tZWRpYV9jaGFubmVsXyA9IG1lZGlhX2VuZ2lu
ZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBjbGFzcyBSdHBTZW5k
ZXJSZWNlaXZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgICAgICAgbmV3IEF1ZGlv
UnRwU2VuZGVyKHdvcmtlcl90aHJlYWRfLCBhdWRpb190cmFja18tPmlkKCksIG51bGxwdHIpOwog
ICAgIEFTU0VSVF9UUlVFKGF1ZGlvX3J0cF9zZW5kZXJfLT5TZXRUcmFjayhhdWRpb190cmFja18p
KTsKICAgICBhdWRpb19ydHBfc2VuZGVyXy0+c2V0X3N0cmVhbV9pZHMoe2xvY2FsX3N0cmVhbV8t
PmlkKCl9KTsKLSAgICBhdWRpb19ydHBfc2VuZGVyXy0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwodm9p
Y2VfbWVkaWFfY2hhbm5lbF8pOworICAgIGF1ZGlvX3J0cF9zZW5kZXJfLT5TZXRNZWRpYUNoYW5u
ZWwodm9pY2VfbWVkaWFfY2hhbm5lbF8pOwogICAgIGF1ZGlvX3J0cF9zZW5kZXJfLT5TZXRTc3Jj
KGtBdWRpb1NzcmMpOwogICAgIGF1ZGlvX3J0cF9zZW5kZXJfLT5HZXRPbkRlc3Ryb3llZFNpZ25h
bCgpLT5jb25uZWN0KAogICAgICAgICB0aGlzLCAmUnRwU2VuZGVyUmVjZWl2ZXJUZXN0OjpPbkF1
ZGlvU2VuZGVyRGVzdHJveWVkKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBSdHBTZW5kZXJS
ZWNlaXZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKIAogICB2b2lkIENyZWF0ZUF1ZGlv
UnRwU2VuZGVyV2l0aE5vVHJhY2soKSB7CiAgICAgYXVkaW9fcnRwX3NlbmRlcl8gPSBuZXcgQXVk
aW9SdHBTZW5kZXIod29ya2VyX3RocmVhZF8sIC8qaWQ9Ki8iIiwgbnVsbHB0cik7Ci0gICAgYXVk
aW9fcnRwX3NlbmRlcl8tPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWxf
KTsKKyAgICBhdWRpb19ydHBfc2VuZGVyXy0+U2V0TWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2No
YW5uZWxfKTsKICAgfQogCiAgIHZvaWQgT25BdWRpb1NlbmRlckRlc3Ryb3llZCgpIHsgYXVkaW9f
c2VuZGVyX2Rlc3Ryb3llZF9zaWduYWxfZmlyZWRfID0gdHJ1ZTsgfQpAQCAtMTkxLDEzICsxOTEs
MTMgQEAgY2xhc3MgUnRwU2VuZGVyUmVjZWl2ZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qs
CiAgICAgdmlkZW9fcnRwX3NlbmRlcl8gPSBuZXcgVmlkZW9SdHBTZW5kZXIod29ya2VyX3RocmVh
ZF8sIHZpZGVvX3RyYWNrXy0+aWQoKSk7CiAgICAgQVNTRVJUX1RSVUUodmlkZW9fcnRwX3NlbmRl
cl8tPlNldFRyYWNrKHZpZGVvX3RyYWNrXykpOwogICAgIHZpZGVvX3J0cF9zZW5kZXJfLT5zZXRf
c3RyZWFtX2lkcyh7bG9jYWxfc3RyZWFtXy0+aWQoKX0pOwotICAgIHZpZGVvX3J0cF9zZW5kZXJf
LT5TZXRWaWRlb01lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CisgICAgdmlkZW9f
cnRwX3NlbmRlcl8tPlNldE1lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CiAgICAg
dmlkZW9fcnRwX3NlbmRlcl8tPlNldFNzcmMoc3NyYyk7CiAgICAgVmVyaWZ5VmlkZW9DaGFubmVs
SW5wdXQoc3NyYyk7CiAgIH0KICAgdm9pZCBDcmVhdGVWaWRlb1J0cFNlbmRlcldpdGhOb1RyYWNr
KCkgewogICAgIHZpZGVvX3J0cF9zZW5kZXJfID0gbmV3IFZpZGVvUnRwU2VuZGVyKHdvcmtlcl90
aHJlYWRfLCAvKmlkPSovIiIpOwotICAgIHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRWaWRlb01lZGlh
Q2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CisgICAgdmlkZW9fcnRwX3NlbmRlcl8tPlNl
dE1lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CiAgIH0KIAogICB2b2lkIERlc3Ry
b3lBdWRpb1J0cFNlbmRlcigpIHsKQEAgLTIxNCw3ICsyMTQsNyBAQCBjbGFzcyBSdHBTZW5kZXJS
ZWNlaXZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgICAgIHN0ZDo6dmVjdG9yPHJ0
Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+IHN0cmVhbXMgPSB7fSkgewog
ICAgIGF1ZGlvX3J0cF9yZWNlaXZlcl8gPSBuZXcgQXVkaW9SdHBSZWNlaXZlcigKICAgICAgICAg
cnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwga0F1ZGlvVHJhY2tJZCwgc3RkOjptb3ZlKHN0cmVhbXMp
KTsKLSAgICBhdWRpb19ydHBfcmVjZWl2ZXJfLT5TZXRWb2ljZU1lZGlhQ2hhbm5lbCh2b2ljZV9t
ZWRpYV9jaGFubmVsXyk7CisgICAgYXVkaW9fcnRwX3JlY2VpdmVyXy0+U2V0TWVkaWFDaGFubmVs
KHZvaWNlX21lZGlhX2NoYW5uZWxfKTsKICAgICBhdWRpb19ydHBfcmVjZWl2ZXJfLT5TZXR1cE1l
ZGlhQ2hhbm5lbChrQXVkaW9Tc3JjKTsKICAgICBhdWRpb190cmFja18gPSBhdWRpb19ydHBfcmVj
ZWl2ZXJfLT5hdWRpb190cmFjaygpOwogICAgIFZlcmlmeVZvaWNlQ2hhbm5lbE91dHB1dCgpOwpA
QCAtMjI0LDEyICsyMjQsMzAgQEAgY2xhc3MgUnRwU2VuZGVyUmVjZWl2ZXJUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QsCiAgICAgICBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVk
aWFTdHJlYW1JbnRlcmZhY2U+PiBzdHJlYW1zID0ge30pIHsKICAgICB2aWRlb19ydHBfcmVjZWl2
ZXJfID0gbmV3IFZpZGVvUnRwUmVjZWl2ZXIoCiAgICAgICAgIHJ0Yzo6VGhyZWFkOjpDdXJyZW50
KCksIGtWaWRlb1RyYWNrSWQsIHN0ZDo6bW92ZShzdHJlYW1zKSk7Ci0gICAgdmlkZW9fcnRwX3Jl
Y2VpdmVyXy0+U2V0VmlkZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbF8pOworICAg
IHZpZGVvX3J0cF9yZWNlaXZlcl8tPlNldE1lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVs
Xyk7CiAgICAgdmlkZW9fcnRwX3JlY2VpdmVyXy0+U2V0dXBNZWRpYUNoYW5uZWwoa1ZpZGVvU3Ny
Yyk7CiAgICAgdmlkZW9fdHJhY2tfID0gdmlkZW9fcnRwX3JlY2VpdmVyXy0+dmlkZW9fdHJhY2so
KTsKICAgICBWZXJpZnlWaWRlb0NoYW5uZWxPdXRwdXQoKTsKICAgfQogCisgIHZvaWQgQ3JlYXRl
VmlkZW9SdHBSZWNlaXZlcldpdGhTaW11bGNhc3QoCisgICAgICBzdGQ6OnZlY3RvcjxydGM6OnNj
b3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiBzdHJlYW1zID0ge30sCisgICAgICBp
bnQgbnVtX2xheWVycyA9IGtWaWRlb1NpbXVsY2FzdExheWVyQ291bnQpIHsKKyAgICBzdGQ6OnZl
Y3Rvcjx1aW50MzJfdD4gc3NyY3M7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fbGF5ZXJz
OyArK2kpCisgICAgICBzc3Jjcy5wdXNoX2JhY2soa1ZpZGVvU3NyY1NpbXVsY2FzdCArIGkpOwor
ICAgIGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyBzdHJlYW1fcGFyYW1zID0KKyAgICAgICAgY3JpY2tl
dDo6Q3JlYXRlU2ltU3RyZWFtUGFyYW1zKCJjbmFtZSIsIHNzcmNzKTsKKyAgICB2aWRlb19tZWRp
YV9jaGFubmVsXy0+QWRkUmVjdlN0cmVhbShzdHJlYW1fcGFyYW1zKTsKKyAgICB1aW50MzJfdCBw
cmltYXJ5X3NzcmMgPSBzdHJlYW1fcGFyYW1zLmZpcnN0X3NzcmMoKTsKKworICAgIHZpZGVvX3J0
cF9yZWNlaXZlcl8gPSBuZXcgVmlkZW9SdHBSZWNlaXZlcigKKyAgICAgICAgcnRjOjpUaHJlYWQ6
OkN1cnJlbnQoKSwga1ZpZGVvVHJhY2tJZCwgc3RkOjptb3ZlKHN0cmVhbXMpKTsKKyAgICB2aWRl
b19ydHBfcmVjZWl2ZXJfLT5TZXRNZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbF8pOwor
ICAgIHZpZGVvX3J0cF9yZWNlaXZlcl8tPlNldHVwTWVkaWFDaGFubmVsKHByaW1hcnlfc3NyYyk7
CisgICAgdmlkZW9fdHJhY2tfID0gdmlkZW9fcnRwX3JlY2VpdmVyXy0+dmlkZW9fdHJhY2soKTsK
KyAgfQorCiAgIHZvaWQgRGVzdHJveUF1ZGlvUnRwUmVjZWl2ZXIoKSB7CiAgICAgYXVkaW9fcnRw
X3JlY2VpdmVyXyA9IG51bGxwdHI7CiAgICAgVmVyaWZ5Vm9pY2VDaGFubmVsTm9PdXRwdXQoKTsK
QEAgLTY2NCw3ICs2ODIsNyBAQCBURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBBdWRpb1Nl
bmRlckluaXRQYXJhbWV0ZXJzTW92ZWRBZnRlck5lZ290aWF0aW9uKSB7CiAgIGNyaWNrZXQ6OlN0
cmVhbVBhcmFtcyBzdHJlYW1fcGFyYW1zID0KICAgICAgIGNyaWNrZXQ6OkNyZWF0ZVNpbVN0cmVh
bVBhcmFtcygiY25hbWUiLCBzc3Jjcyk7CiAgIHZvaWNlX21lZGlhX2NoYW5uZWxfLT5BZGRTZW5k
U3RyZWFtKHN0cmVhbV9wYXJhbXMpOwotICBhdWRpb19ydHBfc2VuZGVyXy0+U2V0Vm9pY2VNZWRp
YUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbF8pOworICBhdWRpb19ydHBfc2VuZGVyXy0+U2V0
TWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWxfKTsKICAgYXVkaW9fcnRwX3NlbmRlcl8t
PlNldFNzcmMoMSk7CiAKICAgcGFyYW1zID0gYXVkaW9fcnRwX3NlbmRlcl8tPkdldFBhcmFtZXRl
cnMoKTsKQEAgLTkwMyw3ICs5MjEsNyBAQCBURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBW
aWRlb1NlbmRlckluaXRQYXJhbWV0ZXJzTW92ZWRBZnRlck5lZ290aWF0aW9uKSB7CiAgIGNyaWNr
ZXQ6OlN0cmVhbVBhcmFtcyBzdHJlYW1fcGFyYW1zID0KICAgICAgIGNyaWNrZXQ6OkNyZWF0ZVNp
bVN0cmVhbVBhcmFtcygiY25hbWUiLCBzc3Jjcyk7CiAgIHZpZGVvX21lZGlhX2NoYW5uZWxfLT5B
ZGRTZW5kU3RyZWFtKHN0cmVhbV9wYXJhbXMpOwotICB2aWRlb19ydHBfc2VuZGVyXy0+U2V0Vmlk
ZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbF8pOworICB2aWRlb19ydHBfc2VuZGVy
Xy0+U2V0TWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWxfKTsKICAgdmlkZW9fcnRwX3Nl
bmRlcl8tPlNldFNzcmMoa1ZpZGVvU3NyY1NpbXVsY2FzdCk7CiAKICAgcGFyYW1zID0gdmlkZW9f
cnRwX3NlbmRlcl8tPkdldFBhcmFtZXRlcnMoKTsKQEAgLTkzOCw3ICs5NTYsNyBAQCBURVNUX0Yo
UnRwU2VuZGVyUmVjZWl2ZXJUZXN0LAogICBjcmlja2V0OjpTdHJlYW1QYXJhbXMgc3RyZWFtX3Bh
cmFtcyA9CiAgICAgICBjcmlja2V0OjpDcmVhdGVTaW1TdHJlYW1QYXJhbXMoImNuYW1lIiwgc3Ny
Y3MpOwogICB2aWRlb19tZWRpYV9jaGFubmVsXy0+QWRkU2VuZFN0cmVhbShzdHJlYW1fcGFyYW1z
KTsKLSAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldFZpZGVvTWVkaWFDaGFubmVsKHZpZGVvX21lZGlh
X2NoYW5uZWxfKTsKKyAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldE1lZGlhQ2hhbm5lbCh2aWRlb19t
ZWRpYV9jaGFubmVsXyk7CiAgIHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRTc3JjKGtWaWRlb1NzcmNT
aW11bGNhc3QpOwogCiAgIHBhcmFtcyA9IHZpZGVvX3J0cF9zZW5kZXJfLT5HZXRQYXJhbWV0ZXJz
KCk7CkBAIC0xMjYzLDYgKzEyODEsMTUgQEAgVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwg
VmlkZW9SZWNlaXZlckNhblNldFBhcmFtZXRlcnMpIHsKICAgRGVzdHJveVZpZGVvUnRwUmVjZWl2
ZXIoKTsKIH0KIAorVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgVmlkZW9SZWNlaXZlckNh
bkdldFBhcmFtZXRlcnNXaXRoU2ltdWxjYXN0KSB7CisgIENyZWF0ZVZpZGVvUnRwUmVjZWl2ZXJX
aXRoU2ltdWxjYXN0KHt9LCAyKTsKKworICBSdHBQYXJhbWV0ZXJzIHBhcmFtcyA9IHZpZGVvX3J0
cF9yZWNlaXZlcl8tPkdldFBhcmFtZXRlcnMoKTsKKyAgRVhQRUNUX0VRKDJ1LCBwYXJhbXMuZW5j
b2RpbmdzLnNpemUoKSk7CisKKyAgRGVzdHJveVZpZGVvUnRwUmVjZWl2ZXIoKTsKK30KKwogLy8g
VGVzdCB0aGF0IG1ha2VzIHN1cmUgdGhhdCBhIHZpZGVvIHRyYWNrIGNvbnRlbnQgaGludCB0cmFu
c2xhdGVzIHRvIHRoZSBwcm9wZXIKIC8vIHZhbHVlIGZvciBzb3VyY2VzIHRoYXQgYXJlIG5vdCBz
Y3JlZW5jYXN0LgogVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgUHJvcGFnYXRlc1ZpZGVv
VHJhY2tDb250ZW50SGludCkgewpAQCAtMTMzMiw3ICsxMzU5LDcgQEAgVEVTVF9GKFJ0cFNlbmRl
clJlY2VpdmVyVGVzdCwKICAgdmlkZW9fcnRwX3NlbmRlcl8gPSBuZXcgVmlkZW9SdHBTZW5kZXIo
d29ya2VyX3RocmVhZF8sIHZpZGVvX3RyYWNrXy0+aWQoKSk7CiAgIEFTU0VSVF9UUlVFKHZpZGVv
X3J0cF9zZW5kZXJfLT5TZXRUcmFjayh2aWRlb190cmFja18pKTsKICAgdmlkZW9fcnRwX3NlbmRl
cl8tPnNldF9zdHJlYW1faWRzKHtsb2NhbF9zdHJlYW1fLT5pZCgpfSk7Ci0gIHZpZGVvX3J0cF9z
ZW5kZXJfLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CisgIHZp
ZGVvX3J0cF9zZW5kZXJfLT5TZXRNZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbF8pOwog
ICB2aWRlb190cmFja18tPnNldF9lbmFibGVkKHRydWUpOwogCiAgIC8vIFNlbmRlciBpcyBub3Qg
cmVhZHkgdG8gc2VuZCAobm8gU1NSQykgc28gbm8gb3B0aW9uIHNob3VsZCBoYXZlIGJlZW4gc2V0
LgpAQCAtMTQyNCw2ICsxNDUxLDE4IEBAIFRFU1RfRihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIEF1
ZGlvU2VuZGVyQ2FuU2V0RnJhbWVFbmNyeXB0b3IpIHsKICAgICAgICAgICAgIGF1ZGlvX3J0cF9z
ZW5kZXJfLT5HZXRGcmFtZUVuY3J5cHRvcigpLmdldCgpKTsKIH0KIAorLy8gVmFsaWRhdGUgdGhh
dCBzZXR0aW5nIGEgRnJhbWVFbmNyeXB0b3IgYWZ0ZXIgdGhlIHNlbmQgc3RyZWFtIGlzIHN0b3Bw
ZWQgZG9lcworLy8gbm90aGluZy4KK1RFU1RfRihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIEF1ZGlv
U2VuZGVyQ2Fubm90U2V0RnJhbWVFbmNyeXB0b3JBZnRlclN0b3ApIHsKKyAgQ3JlYXRlQXVkaW9S
dHBTZW5kZXIoKTsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNl
PiBmYWtlX2ZyYW1lX2VuY3J5cHRvcigKKyAgICAgIG5ldyBGYWtlRnJhbWVFbmNyeXB0b3IoKSk7
CisgIEVYUEVDVF9FUShudWxscHRyLCBhdWRpb19ydHBfc2VuZGVyXy0+R2V0RnJhbWVFbmNyeXB0
b3IoKSk7CisgIGF1ZGlvX3J0cF9zZW5kZXJfLT5TdG9wKCk7CisgIGF1ZGlvX3J0cF9zZW5kZXJf
LT5TZXRGcmFtZUVuY3J5cHRvcihmYWtlX2ZyYW1lX2VuY3J5cHRvcik7CisgIC8vIFRPRE8od2Vi
cnRjOjk5MjYpIC0gVmFsaWRhdGUgbWVkaWEgY2hhbm5lbCBub3Qgc2V0IG9uY2UgZmFrZXMgdXBk
YXRlZC4KK30KKwogLy8gVmFsaWRhdGUgdGhhdCB0aGUgZGVmYXVsdCBGcmFtZUVuY3J5cHRvciBz
ZXR0aW5nIGlzIG51bGxwdHIuCiBURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBBdWRpb1Jl
Y2VpdmVyQ2FuU2V0RnJhbWVEZWNyeXB0b3IpIHsKICAgQ3JlYXRlQXVkaW9SdHBSZWNlaXZlcigp
OwpAQCAtMTQzNSw0ICsxNDc0LDYwIEBAIFRFU1RfRihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIEF1
ZGlvUmVjZWl2ZXJDYW5TZXRGcmFtZURlY3J5cHRvcikgewogICAgICAgICAgICAgYXVkaW9fcnRw
X3JlY2VpdmVyXy0+R2V0RnJhbWVEZWNyeXB0b3IoKS5nZXQoKSk7CiB9CiAKKy8vIFZhbGlkYXRl
IHRoYXQgdGhlIGRlZmF1bHQgRnJhbWVFbmNyeXB0b3Igc2V0dGluZyBpcyBudWxscHRyLgorVEVT
VF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgQXVkaW9SZWNlaXZlckNhbm5vdFNldEZyYW1lRGVj
cnlwdG9yQWZ0ZXJTdG9wKSB7CisgIENyZWF0ZUF1ZGlvUnRwUmVjZWl2ZXIoKTsKKyAgcnRjOjpz
Y29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmYWtlX2ZyYW1lX2RlY3J5cHRv
cigKKyAgICAgIG5ldyBGYWtlRnJhbWVEZWNyeXB0b3IoKSk7CisgIEVYUEVDVF9FUShudWxscHRy
LCBhdWRpb19ydHBfcmVjZWl2ZXJfLT5HZXRGcmFtZURlY3J5cHRvcigpKTsKKyAgYXVkaW9fcnRw
X3JlY2VpdmVyXy0+U3RvcCgpOworICBhdWRpb19ydHBfcmVjZWl2ZXJfLT5TZXRGcmFtZURlY3J5
cHRvcihmYWtlX2ZyYW1lX2RlY3J5cHRvcik7CisgIC8vIFRPRE8od2VicnRjOjk5MjYpIC0gVmFs
aWRhdGUgbWVkaWEgY2hhbm5lbCBub3Qgc2V0IG9uY2UgZmFrZXMgdXBkYXRlZC4KK30KKworLy8g
VmFsaWRhdGUgdGhhdCB0aGUgZGVmYXVsdCBGcmFtZUVuY3J5cHRvciBzZXR0aW5nIGlzIG51bGxw
dHIuCitURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBWaWRlb1NlbmRlckNhblNldEZyYW1l
RW5jcnlwdG9yKSB7CisgIENyZWF0ZVZpZGVvUnRwU2VuZGVyKCk7CisgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZmFrZV9mcmFtZV9lbmNyeXB0b3IoCisgICAg
ICBuZXcgRmFrZUZyYW1lRW5jcnlwdG9yKCkpOworICBFWFBFQ1RfRVEobnVsbHB0ciwgdmlkZW9f
cnRwX3NlbmRlcl8tPkdldEZyYW1lRW5jcnlwdG9yKCkpOworICB2aWRlb19ydHBfc2VuZGVyXy0+
U2V0RnJhbWVFbmNyeXB0b3IoZmFrZV9mcmFtZV9lbmNyeXB0b3IpOworICBFWFBFQ1RfRVEoZmFr
ZV9mcmFtZV9lbmNyeXB0b3IuZ2V0KCksCisgICAgICAgICAgICB2aWRlb19ydHBfc2VuZGVyXy0+
R2V0RnJhbWVFbmNyeXB0b3IoKS5nZXQoKSk7Cit9CisKKy8vIFZhbGlkYXRlIHRoYXQgc2V0dGlu
ZyBhIEZyYW1lRW5jcnlwdG9yIGFmdGVyIHRoZSBzZW5kIHN0cmVhbSBpcyBzdG9wcGVkIGRvZXMK
Ky8vIG5vdGhpbmcuCitURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBWaWRlb1NlbmRlckNh
bm5vdFNldEZyYW1lRW5jcnlwdG9yQWZ0ZXJTdG9wKSB7CisgIENyZWF0ZVZpZGVvUnRwU2VuZGVy
KCk7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZmFrZV9m
cmFtZV9lbmNyeXB0b3IoCisgICAgICBuZXcgRmFrZUZyYW1lRW5jcnlwdG9yKCkpOworICBFWFBF
Q1RfRVEobnVsbHB0ciwgdmlkZW9fcnRwX3NlbmRlcl8tPkdldEZyYW1lRW5jcnlwdG9yKCkpOwor
ICB2aWRlb19ydHBfc2VuZGVyXy0+U3RvcCgpOworICB2aWRlb19ydHBfc2VuZGVyXy0+U2V0RnJh
bWVFbmNyeXB0b3IoZmFrZV9mcmFtZV9lbmNyeXB0b3IpOworICAvLyBUT0RPKHdlYnJ0Yzo5OTI2
KSAtIFZhbGlkYXRlIG1lZGlhIGNoYW5uZWwgbm90IHNldCBvbmNlIGZha2VzIHVwZGF0ZWQuCit9
CisKKy8vIFZhbGlkYXRlIHRoYXQgdGhlIGRlZmF1bHQgRnJhbWVFbmNyeXB0b3Igc2V0dGluZyBp
cyBudWxscHRyLgorVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgVmlkZW9SZWNlaXZlckNh
blNldEZyYW1lRGVjcnlwdG9yKSB7CisgIENyZWF0ZVZpZGVvUnRwUmVjZWl2ZXIoKTsKKyAgcnRj
OjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmYWtlX2ZyYW1lX2RlY3J5
cHRvcigKKyAgICAgIG5ldyBGYWtlRnJhbWVEZWNyeXB0b3IoKSk7CisgIEVYUEVDVF9FUShudWxs
cHRyLCB2aWRlb19ydHBfcmVjZWl2ZXJfLT5HZXRGcmFtZURlY3J5cHRvcigpKTsKKyAgdmlkZW9f
cnRwX3JlY2VpdmVyXy0+U2V0RnJhbWVEZWNyeXB0b3IoZmFrZV9mcmFtZV9kZWNyeXB0b3IpOwor
ICBFWFBFQ1RfRVEoZmFrZV9mcmFtZV9kZWNyeXB0b3IuZ2V0KCksCisgICAgICAgICAgICB2aWRl
b19ydHBfcmVjZWl2ZXJfLT5HZXRGcmFtZURlY3J5cHRvcigpLmdldCgpKTsKK30KKworLy8gVmFs
aWRhdGUgdGhhdCB0aGUgZGVmYXVsdCBGcmFtZUVuY3J5cHRvciBzZXR0aW5nIGlzIG51bGxwdHIu
CitURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBWaWRlb1JlY2VpdmVyQ2Fubm90U2V0RnJh
bWVEZWNyeXB0b3JBZnRlclN0b3ApIHsKKyAgQ3JlYXRlVmlkZW9SdHBSZWNlaXZlcigpOworICBy
dGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+IGZha2VfZnJhbWVfZGVj
cnlwdG9yKAorICAgICAgbmV3IEZha2VGcmFtZURlY3J5cHRvcigpKTsKKyAgRVhQRUNUX0VRKG51
bGxwdHIsIHZpZGVvX3J0cF9yZWNlaXZlcl8tPkdldEZyYW1lRGVjcnlwdG9yKCkpOworICB2aWRl
b19ydHBfcmVjZWl2ZXJfLT5TdG9wKCk7CisgIHZpZGVvX3J0cF9yZWNlaXZlcl8tPlNldEZyYW1l
RGVjcnlwdG9yKGZha2VfZnJhbWVfZGVjcnlwdG9yKTsKKyAgLy8gVE9ETyh3ZWJydGM6OTkyNikg
LSBWYWxpZGF0ZSBtZWRpYSBjaGFubmVsIG5vdCBzZXQgb25jZSBmYWtlcyB1cGRhdGVkLgorfQor
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2VpdmVyLmNjCmluZGV4
IDBmZThlYTZmNTBhOTkzMGYzZThjOGFiMzE1MTY5NmQzYmVmZDI0MDIuLjhiNTZiOGI0ZjEwYTUy
OWY5YjlhM2IzZTA4MTQyMTRkMTY2NGI3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2VpdmVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2VpdmVyLmNj
CkBAIC0zOCw1MiArMzgsNDUgQEAgUnRwVHJhbnNjZWl2ZXI6On5SdHBUcmFuc2NlaXZlcigpIHsK
ICAgU3RvcCgpOwogfQogCi12b2lkIFJ0cFRyYW5zY2VpdmVyOjpTZXRDaGFubmVsKGNyaWNrZXQ6
OkJhc2VDaGFubmVsKiBjaGFubmVsKSB7Cit2b2lkIFJ0cFRyYW5zY2VpdmVyOjpTZXRDaGFubmVs
KGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwpIHsKKyAgLy8gQ2Fubm90IHNldCBh
IG5vbi1udWxsIGNoYW5uZWwgb24gYSBzdG9wcGVkIHRyYW5zY2VpdmVyLgorICBpZiAoc3RvcHBl
ZF8gJiYgY2hhbm5lbCkgeworICAgIHJldHVybjsKKyAgfQorCiAgIGlmIChjaGFubmVsKSB7CiAg
ICAgUlRDX0RDSEVDS19FUShtZWRpYV90eXBlKCksIGNoYW5uZWwtPm1lZGlhX3R5cGUoKSk7CiAg
IH0KIAogICBpZiAoY2hhbm5lbF8pIHsKLSAgICBjaGFubmVsXy0+U2lnbmFsRmlyc3RQYWNrZXRS
ZWNlaXZlZC5kaXNjb25uZWN0KHRoaXMpOworICAgIGNoYW5uZWxfLT5TaWduYWxGaXJzdFBhY2tl
dFJlY2VpdmVkKCkuZGlzY29ubmVjdCh0aGlzKTsKICAgfQogCiAgIGNoYW5uZWxfID0gY2hhbm5l
bDsKIAogICBpZiAoY2hhbm5lbF8pIHsKLSAgICBjaGFubmVsXy0+U2lnbmFsRmlyc3RQYWNrZXRS
ZWNlaXZlZC5jb25uZWN0KAorICAgIGNoYW5uZWxfLT5TaWduYWxGaXJzdFBhY2tldFJlY2VpdmVk
KCkuY29ubmVjdCgKICAgICAgICAgdGhpcywgJlJ0cFRyYW5zY2VpdmVyOjpPbkZpcnN0UGFja2V0
UmVjZWl2ZWQpOwogICB9CiAKICAgZm9yIChhdXRvIHNlbmRlciA6IHNlbmRlcnNfKSB7Ci0gICAg
aWYgKG1lZGlhX3R5cGUoKSA9PSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPKSB7Ci0gICAgICBh
dXRvKiB2b2ljZV9jaGFubmVsID0gc3RhdGljX2Nhc3Q8Y3JpY2tldDo6Vm9pY2VDaGFubmVsKj4o
Y2hhbm5lbCk7Ci0gICAgICBzZW5kZXItPmludGVybmFsKCktPlNldFZvaWNlTWVkaWFDaGFubmVs
KAotICAgICAgICAgIHZvaWNlX2NoYW5uZWwgPyB2b2ljZV9jaGFubmVsLT5tZWRpYV9jaGFubmVs
KCkgOiBudWxscHRyKTsKLSAgICB9IGVsc2UgewotICAgICAgYXV0byogdmlkZW9fY2hhbm5lbCA9
IHN0YXRpY19jYXN0PGNyaWNrZXQ6OlZpZGVvQ2hhbm5lbCo+KGNoYW5uZWwpOwotICAgICAgc2Vu
ZGVyLT5pbnRlcm5hbCgpLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCgKLSAgICAgICAgICB2aWRlb19j
aGFubmVsID8gdmlkZW9fY2hhbm5lbC0+bWVkaWFfY2hhbm5lbCgpIDogbnVsbHB0cik7Ci0gICAg
fQorICAgIHNlbmRlci0+aW50ZXJuYWwoKS0+U2V0TWVkaWFDaGFubmVsKGNoYW5uZWxfID8gY2hh
bm5lbF8tPm1lZGlhX2NoYW5uZWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogbnVsbHB0cik7CiAgIH0KIAogICBmb3IgKGF1dG8gcmVjZWl2ZXIg
OiByZWNlaXZlcnNfKSB7Ci0gICAgaWYgKCFjaGFubmVsKSB7CisgICAgaWYgKCFjaGFubmVsXykg
ewogICAgICAgcmVjZWl2ZXItPmludGVybmFsKCktPlN0b3AoKTsKICAgICB9Ci0gICAgaWYgKG1l
ZGlhX3R5cGUoKSA9PSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPKSB7Ci0gICAgICBhdXRvKiB2
b2ljZV9jaGFubmVsID0gc3RhdGljX2Nhc3Q8Y3JpY2tldDo6Vm9pY2VDaGFubmVsKj4oY2hhbm5l
bCk7Ci0gICAgICByZWNlaXZlci0+aW50ZXJuYWwoKS0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwoCi0g
ICAgICAgICAgdm9pY2VfY2hhbm5lbCA/IHZvaWNlX2NoYW5uZWwtPm1lZGlhX2NoYW5uZWwoKSA6
IG51bGxwdHIpOwotICAgIH0gZWxzZSB7Ci0gICAgICBhdXRvKiB2aWRlb19jaGFubmVsID0gc3Rh
dGljX2Nhc3Q8Y3JpY2tldDo6VmlkZW9DaGFubmVsKj4oY2hhbm5lbCk7Ci0gICAgICByZWNlaXZl
ci0+aW50ZXJuYWwoKS0+U2V0VmlkZW9NZWRpYUNoYW5uZWwoCi0gICAgICAgICAgdmlkZW9fY2hh
bm5lbCA/IHZpZGVvX2NoYW5uZWwtPm1lZGlhX2NoYW5uZWwoKSA6IG51bGxwdHIpOwotICAgIH0K
KworICAgIHJlY2VpdmVyLT5pbnRlcm5hbCgpLT5TZXRNZWRpYUNoYW5uZWwoY2hhbm5lbF8gPyBj
aGFubmVsXy0+bWVkaWFfY2hhbm5lbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IG51bGxwdHIpOwogICB9CiB9CiAKIHZvaWQgUnRwVHJhbnNj
ZWl2ZXI6OkFkZFNlbmRlcigKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8UnRwU2VuZGVyUHJveHlX
aXRoSW50ZXJuYWw8UnRwU2VuZGVySW50ZXJuYWw+PiBzZW5kZXIpIHsKKyAgUlRDX0RDSEVDSygh
c3RvcHBlZF8pOwogICBSVENfRENIRUNLKCF1bmlmaWVkX3BsYW5fKTsKICAgUlRDX0RDSEVDSyhz
ZW5kZXIpOwogICBSVENfRENIRUNLX0VRKG1lZGlhX3R5cGUoKSwgc2VuZGVyLT5tZWRpYV90eXBl
KCkpOwpAQCAtMTA5LDYgKzEwMiw3IEBAIGJvb2wgUnRwVHJhbnNjZWl2ZXI6OlJlbW92ZVNlbmRl
cihSdHBTZW5kZXJJbnRlcmZhY2UqIHNlbmRlcikgewogdm9pZCBSdHBUcmFuc2NlaXZlcjo6QWRk
UmVjZWl2ZXIoCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPFJ0cFJlY2VpdmVyUHJveHlXaXRoSW50
ZXJuYWw8UnRwUmVjZWl2ZXJJbnRlcm5hbD4+CiAgICAgICAgIHJlY2VpdmVyKSB7CisgIFJUQ19E
Q0hFQ0soIXN0b3BwZWRfKTsKICAgUlRDX0RDSEVDSyghdW5pZmllZF9wbGFuXyk7CiAgIFJUQ19E
Q0hFQ0socmVjZWl2ZXIpOwogICBSVENfRENIRUNLX0VRKG1lZGlhX3R5cGUoKSwgcmVjZWl2ZXIt
Pm1lZGlhX3R5cGUoKSk7CkBAIC0xNTIsNyArMTQ2LDcgQEAgYWJzbDo6b3B0aW9uYWw8c3RkOjpz
dHJpbmc+IFJ0cFRyYW5zY2VpdmVyOjptaWQoKSBjb25zdCB7CiAgIHJldHVybiBtaWRfOwogfQog
Ci12b2lkIFJ0cFRyYW5zY2VpdmVyOjpPbkZpcnN0UGFja2V0UmVjZWl2ZWQoY3JpY2tldDo6QmFz
ZUNoYW5uZWwqIGNoYW5uZWwpIHsKK3ZvaWQgUnRwVHJhbnNjZWl2ZXI6Ok9uRmlyc3RQYWNrZXRS
ZWNlaXZlZChjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKikgewogICBmb3IgKGF1dG8gcmVjZWl2
ZXIgOiByZWNlaXZlcnNfKSB7CiAgICAgcmVjZWl2ZXItPmludGVybmFsKCktPk5vdGlmeUZpcnN0
UGFja2V0UmVjZWl2ZWQoKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2VpdmVyLmgKaW5kZXggM2Uw
ZDQzMzc4MjYxMTU3NmNhOTJlNTE2ZTRlNmI0OTU0M2FlMjk1MC4uMDdkYjE5NmVkZDlhYmRjYTUz
Y2M4ZWVlMzNjNjJhMmJiNGVhNjRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZlci5oCkBAIC03
MCwxMSArNzAsMTEgQEAgY2xhc3MgUnRwVHJhbnNjZWl2ZXIgZmluYWwKIAogICAvLyBSZXR1cm5z
IHRoZSBWb2ljZS9WaWRlb0NoYW5uZWwgc2V0IGZvciB0aGlzIHRyYW5zY2VpdmVyLiBNYXkgYmUg
bnVsbCBpZgogICAvLyB0aGUgdHJhbnNjZWl2ZXIgaXMgbm90IGluIHRoZSBjdXJyZW50bHkgc2V0
IGxvY2FsL3JlbW90ZSBkZXNjcmlwdGlvbi4KLSAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5u
ZWwoKSBjb25zdCB7IHJldHVybiBjaGFubmVsXzsgfQorICBjcmlja2V0OjpDaGFubmVsSW50ZXJm
YWNlKiBjaGFubmVsKCkgY29uc3QgeyByZXR1cm4gY2hhbm5lbF87IH0KIAogICAvLyBTZXRzIHRo
ZSBWb2ljZS9WaWRlb0NoYW5uZWwuIFRoZSBjYWxsZXIgbXVzdCBwYXNzIGluIHRoZSBjb3JyZWN0
IGNoYW5uZWwKICAgLy8gaW1wbGVtZW50YXRpb24gYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlIHRy
YW5zY2VpdmVyLgotICB2b2lkIFNldENoYW5uZWwoY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5u
ZWwpOworICB2b2lkIFNldENoYW5uZWwoY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5l
bCk7CiAKICAgLy8gQWRkcyBhbiBSdHBTZW5kZXIgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUgdG8g
YmUgb3duZWQgYnkgdGhpcyB0cmFuc2NlaXZlci4KICAgLy8gTXVzdCBub3QgYmUgbnVsbC4KQEAg
LTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBSdHBUcmFuc2NlaXZlciBmaW5hbAogICB2b2lkIFNldENv
ZGVjUHJlZmVyZW5jZXMocnRjOjpBcnJheVZpZXc8UnRwQ29kZWNDYXBhYmlsaXR5PiBjb2RlY3Mp
IG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKLSAgdm9pZCBPbkZpcnN0UGFja2V0UmVjZWl2ZWQoY3Jp
Y2tldDo6QmFzZUNoYW5uZWwqIGNoYW5uZWwpOworICB2b2lkIE9uRmlyc3RQYWNrZXRSZWNlaXZl
ZChjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBjaGFubmVsKTsKIAogICBjb25zdCBib29sIHVu
aWZpZWRfcGxhbl87CiAgIGNvbnN0IGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlXzsKQEAg
LTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBSdHBUcmFuc2NlaXZlciBmaW5hbAogICBib29sIGNyZWF0
ZWRfYnlfYWRkdHJhY2tfID0gZmFsc2U7CiAgIGJvb2wgaGFzX2V2ZXJfYmVlbl91c2VkX3RvX3Nl
bmRfID0gZmFsc2U7CiAKLSAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5uZWxfID0gbnVsbHB0
cjsKKyAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbF8gPSBudWxscHRyOwogfTsK
IAogQkVHSU5fU0lHTkFMSU5HX1BST1hZX01BUChSdHBUcmFuc2NlaXZlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2Vp
dmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcnRwdHJhbnNjZWl2ZXJfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU3ZDIxMjNkMTUy
ZmIyYmYzMzVhODk2OTY1ZTdmZTYxMDUyZjU4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2VpdmVyX3VuaXR0
ZXN0LmNjCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKy8vIFRoaXMgZmls
ZSBjb250YWlucyB0ZXN0cyBmb3IgfFJ0cFRyYW5zY2VpdmVyfC4KKworI2luY2x1ZGUgInBjL3J0
cHRyYW5zY2VpdmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKKyNpbmNsdWRlICJ0
ZXN0L2dtb2NrLmgiCisjaW5jbHVkZSAidGVzdC9tb2NrX2NoYW5uZWxpbnRlcmZhY2UuaCIKKwor
dXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Cit1c2luZyA6OnRlc3Rpbmc6OlJldHVyblJlZjsKKwor
bmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIENoZWNrcyB0aGF0IGEgY2hhbm5lbCBjYW5ub3QgYmUg
c2V0IG9uIGEgc3RvcHBlZCB8UnRwVHJhbnNjZWl2ZXJ8LgorVEVTVChSdHBUcmFuc2NlaXZlclRl
c3QsIENhbm5vdFNldENoYW5uZWxPblN0b3BwZWRUcmFuc2NlaXZlcikgeworICBSdHBUcmFuc2Nl
aXZlciB0cmFuc2NlaXZlcihjcmlja2V0OjpNZWRpYVR5cGU6Ok1FRElBX1RZUEVfQVVESU8pOwor
ICBjcmlja2V0OjpNb2NrQ2hhbm5lbEludGVyZmFjZSBjaGFubmVsMTsKKyAgc2lnc2xvdDo6c2ln
bmFsMTxjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKj4gc2lnbmFsOworICBFWFBFQ1RfQ0FMTChj
aGFubmVsMSwgbWVkaWFfdHlwZSgpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihjcmlj
a2V0OjpNZWRpYVR5cGU6Ok1FRElBX1RZUEVfQVVESU8pKTsKKyAgRVhQRUNUX0NBTEwoY2hhbm5l
bDEsIFNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWQoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShS
ZXR1cm5SZWYoc2lnbmFsKSk7CisKKyAgdHJhbnNjZWl2ZXIuU2V0Q2hhbm5lbCgmY2hhbm5lbDEp
OworICBFWFBFQ1RfRVEoJmNoYW5uZWwxLCB0cmFuc2NlaXZlci5jaGFubmVsKCkpOworCisgIC8v
IFN0b3AgdGhlIHRyYW5zY2VpdmVyLgorICB0cmFuc2NlaXZlci5TdG9wKCk7CisgIEVYUEVDVF9F
USgmY2hhbm5lbDEsIHRyYW5zY2VpdmVyLmNoYW5uZWwoKSk7CisKKyAgY3JpY2tldDo6TW9ja0No
YW5uZWxJbnRlcmZhY2UgY2hhbm5lbDI7CisgIEVYUEVDVF9DQUxMKGNoYW5uZWwyLCBtZWRpYV90
eXBlKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGNyaWNrZXQ6Ok1lZGlhVHlwZTo6
TUVESUFfVFlQRV9BVURJTykpOworCisgIC8vIENoYW5uZWwgY2FuIG5vIGxvbmdlciBiZSBzZXQs
IHNvIHRoaXMgY2FsbCBzaG91bGQgYmUgYSBuby1vcC4KKyAgdHJhbnNjZWl2ZXIuU2V0Q2hhbm5l
bCgmY2hhbm5lbDIpOworICBFWFBFQ1RfRVEoJmNoYW5uZWwxLCB0cmFuc2NlaXZlci5jaGFubmVs
KCkpOworfQorCisvLyBDaGVja3MgdGhhdCBhIGNoYW5uZWwgY2FuIGJlIHVuc2V0IG9uIGEgc3Rv
cHBlZCB8UnRwVHJhbnNjZWl2ZXJ8CitURVNUKFJ0cFRyYW5zY2VpdmVyVGVzdCwgQ2FuVW5zZXRD
aGFubmVsT25TdG9wcGVkVHJhbnNjZWl2ZXIpIHsKKyAgUnRwVHJhbnNjZWl2ZXIgdHJhbnNjZWl2
ZXIoY3JpY2tldDo6TWVkaWFUeXBlOjpNRURJQV9UWVBFX1ZJREVPKTsKKyAgY3JpY2tldDo6TW9j
a0NoYW5uZWxJbnRlcmZhY2UgY2hhbm5lbDsKKyAgc2lnc2xvdDo6c2lnbmFsMTxjcmlja2V0OjpD
aGFubmVsSW50ZXJmYWNlKj4gc2lnbmFsOworICBFWFBFQ1RfQ0FMTChjaGFubmVsLCBtZWRpYV90
eXBlKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGNyaWNrZXQ6Ok1lZGlhVHlwZTo6
TUVESUFfVFlQRV9WSURFTykpOworICBFWFBFQ1RfQ0FMTChjaGFubmVsLCBTaWduYWxGaXJzdFBh
Y2tldFJlY2VpdmVkKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuUmVmKHNpZ25hbCkp
OworCisgIHRyYW5zY2VpdmVyLlNldENoYW5uZWwoJmNoYW5uZWwpOworICBFWFBFQ1RfRVEoJmNo
YW5uZWwsIHRyYW5zY2VpdmVyLmNoYW5uZWwoKSk7CisKKyAgLy8gU3RvcCB0aGUgdHJhbnNjZWl2
ZXIuCisgIHRyYW5zY2VpdmVyLlN0b3AoKTsKKyAgRVhQRUNUX0VRKCZjaGFubmVsLCB0cmFuc2Nl
aXZlci5jaGFubmVsKCkpOworCisgIC8vIFNldCB0aGUgY2hhbm5lbCB0byB8bnVsbHB0cnwuCisg
IHRyYW5zY2VpdmVyLlNldENoYW5uZWwobnVsbHB0cik7CisgIEVYUEVDVF9FUShudWxscHRyLCB0
cmFuc2NlaXZlci5jaGFubmVsKCkpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0
cmFuc3BvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9ydHB0cmFuc3BvcnQuY2MKaW5kZXggOWU5OTRlOWI5ODA0YTUxYWM1NmI2Nzk3YTU2N2QwYWY3
MTM2ZWNkMC4uNGE1NzMwMTZmMjFlODdiY2M4YjIxZTBmYTcxZWViODQ2NDgxZDc3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJh
bnNwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3J0cHRyYW5zcG9ydC5jYwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFJ0cFRyYW5zcG9ydFBhcmFt
ZXRlcnMgUnRwVHJhbnNwb3J0OjpHZXRQYXJhbWV0ZXJzKCkgY29uc3QgewogfQogCiB2b2lkIFJ0
cFRyYW5zcG9ydDo6RGVtdXhQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGlt
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVf
dXMpIHsKICAgd2VicnRjOjpSdHBQYWNrZXRSZWNlaXZlZCBwYXJzZWRfcGFja2V0KCZoZWFkZXJf
ZXh0ZW5zaW9uX21hcF8pOwogICBpZiAoIXBhcnNlZF9wYWNrZXQuUGFyc2Uoc3RkOjptb3ZlKCpw
YWNrZXQpKSkgewogICAgIFJUQ19MT0coTFNfRVJST1IpCkBAIC0xOTUsOCArMTk1LDggQEAgdm9p
ZCBSdHBUcmFuc3BvcnQ6OkRlbXV4UGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tl
dCwKICAgICByZXR1cm47CiAgIH0KIAotICBpZiAodGltZS50aW1lc3RhbXAgIT0gLTEpIHsKLSAg
ICBwYXJzZWRfcGFja2V0LnNldF9hcnJpdmFsX3RpbWVfbXMoKHRpbWUudGltZXN0YW1wICsgNTAw
KSAvIDEwMDApOworICBpZiAocGFja2V0X3RpbWVfdXMgIT0gLTEpIHsKKyAgICBwYXJzZWRfcGFj
a2V0LnNldF9hcnJpdmFsX3RpbWVfbXMoKHBhY2tldF90aW1lX3VzICsgNTAwKSAvIDEwMDApOwog
ICB9CiAgIHJ0cF9kZW11eGVyXy5PblJ0cFBhY2tldChwYXJzZWRfcGFja2V0KTsKIH0KQEAgLTIz
NiwxOSArMjM2LDE5IEBAIHZvaWQgUnRwVHJhbnNwb3J0OjpPblNlbnRQYWNrZXQocnRjOjpQYWNr
ZXRUcmFuc3BvcnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9ydCwKIH0KIAogdm9pZCBSdHBUcmFu
c3BvcnQ6Ok9uUnRwUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNr
ZXRUaW1lJiBwYWNrZXRfdGltZSkgewotICBEZW11eFBhY2tldChwYWNrZXQsIHBhY2tldF90aW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0
X3RpbWVfdXMpIHsKKyAgRGVtdXhQYWNrZXQocGFja2V0LCBwYWNrZXRfdGltZV91cyk7CiB9CiAK
IHZvaWQgUnRwVHJhbnNwb3J0OjpPblJ0Y3BQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRl
QnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewotICBTaWduYWxSdGNwUGFja2V0
UmVjZWl2ZWQocGFja2V0LCBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgeworICBTaWduYWxSdGNwUGFj
a2V0UmVjZWl2ZWQocGFja2V0LCBwYWNrZXRfdGltZV91cyk7CiB9CiAKIHZvaWQgUnRwVHJhbnNw
b3J0OjpPblJlYWRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7CiAgIFRSQUNF
X0VWRU5UMCgid2VicnRjIiwgIlJ0cFRyYW5zcG9ydDo6T25SZWFkUGFja2V0Iik7CiAKQEAgLTI3
Miw5ICsyNzIsOSBAQCB2b2lkIFJ0cFRyYW5zcG9ydDo6T25SZWFkUGFja2V0KHJ0Yzo6UGFja2V0
VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgfQogCiAgIGlmIChydGNwKSB7Ci0gICAg
T25SdGNwUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgcGFja2V0X3RpbWUpOworICAgIE9uUnRjcFBh
Y2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lX3VzKTsKICAgfSBlbHNlIHsKLSAgICBP
blJ0cFBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgICBPblJ0cFBhY2tl
dFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lX3VzKTsKICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc3Bv
cnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRy
YW5zcG9ydC5oCmluZGV4IDc5M2FjOTAxYWE1YzhjYjQ4Y2YyY2YzM2U1YWViOWJkNDZiOWQwOTgu
LmRhYjU5MDMxNzE1NThlZjc3OTNjZjljZmU4ZjliNDRkNDI3OTNjZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zcG9ydC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRy
YW5zcG9ydC5oCkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNzIFJ0cFRyYW5zcG9ydCA6IHB1YmxpYyBS
dHBUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIFJ0cFRyYW5zcG9ydEFkYXB0ZXIqIEdldEludGVybmFs
KCkgb3ZlcnJpZGU7CiAKICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIGJlIHVzZWQgaW4gdGhlIHN1
YmNsYXNzZXMuCi0gIHZvaWQgRGVtdXhQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFj
a2V0LCBjb25zdCBydGM6OlBhY2tldFRpbWUmIHRpbWUpOworICB2b2lkIERlbXV4UGFja2V0KHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAK
ICAgYm9vbCBTZW5kUGFja2V0KGJvb2wgcnRjcCwKICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q29w
eU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKQEAgLTk4LDkgKzk4LDkgQEAgY2xhc3MgUnRwVHJhbnNw
b3J0IDogcHVibGljIFJ0cFRyYW5zcG9ydEludGVybmFsIHsKICAgdmlydHVhbCB2b2lkIE9uTmV0
d29ya1JvdXRlQ2hhbmdlZCgKICAgICAgIGFic2w6Om9wdGlvbmFsPHJ0Yzo6TmV0d29ya1JvdXRl
PiBuZXR3b3JrX3JvdXRlKTsKICAgdmlydHVhbCB2b2lkIE9uUnRwUGFja2V0UmVjZWl2ZWQocnRj
OjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAgIHZpcnR1
YWwgdm9pZCBPblJ0Y3BQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNr
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tl
dFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgcGFja2V0X3RpbWVfdXMpOwogICAvLyBPdmVycmlkZGVuIGJ5IFNydHBUcmFuc3Bv
cnQgYW5kIER0bHNTcnRwVHJhbnNwb3J0LgogICB2aXJ0dWFsIHZvaWQgT25Xcml0YWJsZVN0YXRl
KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHBhY2tldF90cmFuc3BvcnQpOwogCkBAIC0x
MTEsNyArMTExLDcgQEAgY2xhc3MgUnRwVHJhbnNwb3J0IDogcHVibGljIFJ0cFRyYW5zcG9ydElu
dGVybmFsIHsKICAgdm9pZCBPblJlYWRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5h
bCogdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBy
dGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQ2NF90JiBwYWNrZXRfdGltZV91cywKICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsK
IAogICAvLyBVcGRhdGVzICJyZWFkeSB0byBzZW5kIiBmb3IgYW4gaW5kaXZpZHVhbCBjaGFubmVs
IGFuZCBmaXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0aW50ZXJuYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zcG9ydGludGVybmFsLmgKaW5kZXggY2Ew
NTY4MDcxMDg2Y2U1MWFkMTY4MGI2MmNmMjllN2VjMGU1OWVkZC4uZTYzMzgzNjZjMDYzN2VjZjA2
ZDNiMjhmZTMxZTE5ZTY1Nzc0NWQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0aW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc3BvcnRpbnRl
cm5hbC5oCkBAIC0yNCw3ICsyNCw2IEBACiBuYW1lc3BhY2UgcnRjIHsKIGNsYXNzIENvcHlPbldy
aXRlQnVmZmVyOwogc3RydWN0IFBhY2tldE9wdGlvbnM7Ci1zdHJ1Y3QgUGFja2V0VGltZTsKIH0g
IC8vIG5hbWVzcGFjZSBydGMKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC01OSw4ICs1OCw3IEBA
IGNsYXNzIFJ0cFRyYW5zcG9ydEludGVybmFsIDogcHVibGljIFNydHBUcmFuc3BvcnRJbnRlcmZh
Y2UsCiAgIC8vIENhbGxlZCB3aGVuZXZlciBhbiBSVENQIHBhY2tldCBpcyByZWNlaXZlZC4gVGhl
cmUgaXMgbm8gZXF1aXZhbGVudCBzaWduYWwKICAgLy8gZm9yIFJUUCBwYWNrZXRzIGJlY2F1c2Ug
dGhleSB3b3VsZCBiZSBmb3J3YXJkZWQgdG8gdGhlIEJhc2VDaGFubmVsIHRocm91Z2gKICAgLy8g
dGhlIFJ0cERlbXV4ZXIgY2FsbGJhY2suCi0gIHNpZ3Nsb3Q6OnNpZ25hbDI8cnRjOjpDb3B5T25X
cml0ZUJ1ZmZlciosIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSY+Ci0gICAgICBTaWduYWxSdGNwUGFj
a2V0UmVjZWl2ZWQ7CisgIHNpZ3Nsb3Q6OnNpZ25hbDI8cnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcios
IGludDY0X3Q+IFNpZ25hbFJ0Y3BQYWNrZXRSZWNlaXZlZDsKIAogICAvLyBDYWxsZWQgd2hlbmV2
ZXIgdGhlIG5ldHdvcmsgcm91dGUgb2YgdGhlIFAyUCBsYXllciB0cmFuc3BvcnQgY2hhbmdlcy4K
ICAgLy8gVGhlIGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIG5ldHdvcmsgcm91dGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFu
c3BvcnR0ZXN0dXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcnRwdHJhbnNwb3J0dGVzdHV0aWwuaAppbmRleCBlYjMzNzczMGQxMDdmOGM4ZDgxYThk
MjhhMmFhMDRmMzJlNjAyMjU0Li5mMmMzNTEyMmFhZjQ0YTM0NzI2N2ZhZDM3ZjlmMjI1YzI0NDc2
MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9ydHB0cmFuc3BvcnR0ZXN0dXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zcG9ydHRlc3R1dGlsLmgKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgVHJhbnNwb3J0T2JzZXJ2ZXIgOiBwdWJsaWMgUnRwUGFja2V0U2lua0ludGVy
ZmFjZSwKICAgfQogCiAgIHZvaWQgT25SdGNwUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0
ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgICAgcnRjcF9jb3VudF8rKzsKICAgICBsYXN0X3Jl
Y3ZfcnRjcF9wYWNrZXRfID0gKnBhY2tldDsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2Ny
aXB0aW9uLmNjCmluZGV4IGYzZTg5YjQ3ZmFkYjY2YzAwMDAxMWRjODg4ZjJjYzM2MzRiOTk1N2Qu
LjNhOWIxOGVlNjkxOWIzN2ZmNTk0MGVlNjA2NGVjY2I3YjQ2YThkNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlw
dGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9zZXNzaW9uZGVzY3JpcHRpb24uY2MKQEAgLTg0LDIxICs4NCw2IEBAIGJvb2wgQ29udGVudEdy
b3VwOjpSZW1vdmVDb250ZW50TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lKSB7
CiB9CiAKIFNlc3Npb25EZXNjcmlwdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uKCkgPSBkZWZhdWx0
OwotCi1TZXNzaW9uRGVzY3JpcHRpb246OlNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBDb250ZW50
SW5mb3MmIGNvbnRlbnRzKQotICAgIDogY29udGVudHNfKGNvbnRlbnRzKSB7fQotCi1TZXNzaW9u
RGVzY3JpcHRpb246OlNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBDb250ZW50SW5mb3MmIGNvbnRl
bnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udGVu
dEdyb3VwcyYgZ3JvdXBzKQotICAgIDogY29udGVudHNfKGNvbnRlbnRzKSwgY29udGVudF9ncm91
cHNfKGdyb3Vwcykge30KLQotU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb24o
Y29uc3QgQ29udGVudEluZm9zJiBjb250ZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRyYW5zcG9ydEluZm9zJiB0cmFuc3BvcnRzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udGVudEdyb3VwcyYgZ3JvdXBz
KQotICAgIDogY29udGVudHNfKGNvbnRlbnRzKSwKLSAgICAgIHRyYW5zcG9ydF9pbmZvc18odHJh
bnNwb3J0cyksCi0gICAgICBjb250ZW50X2dyb3Vwc18oZ3JvdXBzKSB7fQotCiBTZXNzaW9uRGVz
Y3JpcHRpb246OlNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24mKSA9
IGRlZmF1bHQ7CiAKIFNlc3Npb25EZXNjcmlwdGlvbjo6flNlc3Npb25EZXNjcmlwdGlvbigpIHsK
QEAgLTE2Miw3ICsxNDcsNyBAQCB2b2lkIFNlc3Npb25EZXNjcmlwdGlvbjo6QWRkQ29udGVudChj
b25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKICAgQ29udGVudEluZm8gY29udGVudCh0eXBlKTsKICAg
Y29udGVudC5uYW1lID0gbmFtZTsKICAgY29udGVudC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9u
OwotICBjb250ZW50c18ucHVzaF9iYWNrKHN0ZDo6bW92ZShjb250ZW50KSk7CisgIEFkZENvbnRl
bnQoJmNvbnRlbnQpOwogfQogCiB2b2lkIFNlc3Npb25EZXNjcmlwdGlvbjo6QWRkQ29udGVudChj
b25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKQEAgLTE3Myw3ICsxNTgsNyBAQCB2b2lkIFNlc3Npb25E
ZXNjcmlwdGlvbjo6QWRkQ29udGVudChjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKICAgY29udGVu
dC5uYW1lID0gbmFtZTsKICAgY29udGVudC5yZWplY3RlZCA9IHJlamVjdGVkOwogICBjb250ZW50
LmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247Ci0gIGNvbnRlbnRzXy5wdXNoX2JhY2soc3RkOjpt
b3ZlKGNvbnRlbnQpKTsKKyAgQWRkQ29udGVudCgmY29udGVudCk7CiB9CiAKIHZvaWQgU2Vzc2lv
bkRlc2NyaXB0aW9uOjpBZGRDb250ZW50KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLApAQCAtMTg2
LDcgKzE3MSwxNiBAQCB2b2lkIFNlc3Npb25EZXNjcmlwdGlvbjo6QWRkQ29udGVudChjb25zdCBz
dGQ6OnN0cmluZyYgbmFtZSwKICAgY29udGVudC5yZWplY3RlZCA9IHJlamVjdGVkOwogICBjb250
ZW50LmJ1bmRsZV9vbmx5ID0gYnVuZGxlX29ubHk7CiAgIGNvbnRlbnQuZGVzY3JpcHRpb24gPSBk
ZXNjcmlwdGlvbjsKLSAgY29udGVudHNfLnB1c2hfYmFjayhzdGQ6Om1vdmUoY29udGVudCkpOwor
ICBBZGRDb250ZW50KCZjb250ZW50KTsKK30KKwordm9pZCBTZXNzaW9uRGVzY3JpcHRpb246OkFk
ZENvbnRlbnQoQ29udGVudEluZm8qIGNvbnRlbnQpIHsKKyAgaWYgKGV4dG1hcF9hbGxvd19taXhl
ZCgpKSB7CisgICAgLy8gTWl4ZWQgc3VwcG9ydCBvbiBzZXNzaW9uIGxldmVsIG92ZXJyaWRlcyBz
ZXR0aW5nIG9uIG1lZGlhIGxldmVsLgorICAgIGNvbnRlbnQtPmRlc2NyaXB0aW9uLT5zZXRfZXh0
bWFwX2FsbG93X21peGVkX2VudW0oCisgICAgICAgIE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjpr
U2Vzc2lvbik7CisgIH0KKyAgY29udGVudHNfLnB1c2hfYmFjayhzdGQ6Om1vdmUoKmNvbnRlbnQp
KTsKIH0KIAogYm9vbCBTZXNzaW9uRGVzY3JpcHRpb246OlJlbW92ZUNvbnRlbnRCeU5hbWUoY29u
c3Qgc3RkOjpzdHJpbmcmIG5hbWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlvbi5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgK
aW5kZXggNjQ1ZWJjNTRmODZlNTc5NzQ2NDBhZjdiZDU5Yzg2Y2VhMDc3NjI3Mi4uMzgyOTE0ODRj
ZDhjYjRlODg4ODczN2E3OGQ2YjBmODIxNTRlODBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRl
c2NyaXB0aW9uLmgKQEAgLTE4Myw2ICsxODMsMjIgQEAgY2xhc3MgTWVkaWFDb250ZW50RGVzY3Jp
cHRpb24gewogICAgIHJldHVybiBjb25uZWN0aW9uX2FkZHJlc3NfOwogICB9CiAKKyAgLy8gRGV0
ZXJtaW5lcyBpZiBpdCdzIGFsbG93ZWQgdG8gbWl4IG9uZS0gYW5kIHR3by1ieXRlIHJ0cCBoZWFk
ZXIgZXh0ZW5zaW9ucworICAvLyB3aXRoaW4gdGhlIHNhbWUgcnRwIHN0cmVhbS4KKyAgZW51bSBF
eHRtYXBBbGxvd01peGVkIHsga05vLCBrU2Vzc2lvbiwga01lZGlhIH07CisgIHZvaWQgc2V0X2V4
dG1hcF9hbGxvd19taXhlZF9lbnVtKEV4dG1hcEFsbG93TWl4ZWQgbmV3X2V4dG1hcF9hbGxvd19t
aXhlZCkgeworICAgIGlmIChuZXdfZXh0bWFwX2FsbG93X21peGVkID09IGtNZWRpYSAmJgorICAg
ICAgICBleHRtYXBfYWxsb3dfbWl4ZWRfZW51bV8gPT0ga1Nlc3Npb24pIHsKKyAgICAgIC8vIERv
IG5vdCBkb3duZ3JhZGUgZnJvbSBzZXNzaW9uIGxldmVsIHRvIG1lZGlhIGxldmVsLgorICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBleHRtYXBfYWxsb3dfbWl4ZWRfZW51bV8gPSBuZXdfZXh0bWFw
X2FsbG93X21peGVkOworICB9CisgIEV4dG1hcEFsbG93TWl4ZWQgZXh0bWFwX2FsbG93X21peGVk
X2VudW0oKSBjb25zdCB7CisgICAgcmV0dXJuIGV4dG1hcF9hbGxvd19taXhlZF9lbnVtXzsKKyAg
fQorICBib29sIGV4dG1hcF9hbGxvd19taXhlZCgpIGNvbnN0IHsgcmV0dXJuIGV4dG1hcF9hbGxv
d19taXhlZF9lbnVtXyAhPSBrTm87IH0KKwogIHByb3RlY3RlZDoKICAgYm9vbCBydGNwX211eF8g
PSBmYWxzZTsKICAgYm9vbCBydGNwX3JlZHVjZWRfc2l6ZV8gPSBmYWxzZTsKQEAgLTE5Niw2ICsy
MTIsMTAgQEAgY2xhc3MgTWVkaWFDb250ZW50RGVzY3JpcHRpb24gewogICB3ZWJydGM6OlJ0cFRy
YW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbl8gPQogICAgICAgd2VicnRjOjpSdHBUcmFuc2Nl
aXZlckRpcmVjdGlvbjo6a1NlbmRSZWN2OwogICBydGM6OlNvY2tldEFkZHJlc3MgY29ubmVjdGlv
bl9hZGRyZXNzXzsKKyAgLy8gTWl4ZWQgb25lLSBhbmQgdHdvLWJ5dGUgaGVhZGVyIG5vdCBpbmNs
dWRlZCBpbiBvZmZlciBvbiBtZWRpYSBsZXZlbCBvcgorICAvLyBzZXNzaW9uIGxldmVsLCBidXQg
d2Ugd2lsbCByZXNwb25kIHRoYXQgd2Ugc3VwcG9ydCBpdC4gVGhlIHBsYW4gaXMgdG8gYWRkCisg
IC8vIGl0IHRvIG91ciBvZmZlciBvbiBzZXNzaW9uIGxldmVsLiBTZWUgdG9kbyBpbiBTZXNzaW9u
RGVzY3JpcHRpb24uCisgIEV4dG1hcEFsbG93TWl4ZWQgZXh0bWFwX2FsbG93X21peGVkX2VudW1f
ID0ga05vOwogfTsKIAogLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODYyMCk6IFJlbW92ZSB0aGlz
IGFsaWFzIG9uY2UgZG93bnN0cmVhbSBwcm9qZWN0cyBoYXZlCkBAIC0zNzgsMTEgKzM5OCw2IEBA
IGVudW0gTXNpZFNpZ25hbGluZyB7CiBjbGFzcyBTZXNzaW9uRGVzY3JpcHRpb24gewogIHB1Ymxp
YzoKICAgU2Vzc2lvbkRlc2NyaXB0aW9uKCk7Ci0gIGV4cGxpY2l0IFNlc3Npb25EZXNjcmlwdGlv
bihjb25zdCBDb250ZW50SW5mb3MmIGNvbnRlbnRzKTsKLSAgU2Vzc2lvbkRlc2NyaXB0aW9uKGNv
bnN0IENvbnRlbnRJbmZvcyYgY29udGVudHMsIGNvbnN0IENvbnRlbnRHcm91cHMmIGdyb3Vwcyk7
Ci0gIFNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBDb250ZW50SW5mb3MmIGNvbnRlbnRzLAotICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNwb3J0SW5mb3MmIHRyYW5zcG9ydHMsCi0gICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDb250ZW50R3JvdXBzJiBncm91cHMpOwogICB+U2Vzc2lv
bkRlc2NyaXB0aW9uKCk7CiAKICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBDb3B5KCkgY29uc3Q7CkBA
IC00MTIsNiArNDI3LDggQEAgY2xhc3MgU2Vzc2lvbkRlc2NyaXB0aW9uIHsKICAgICAgICAgICAg
ICAgICAgIGJvb2wgcmVqZWN0ZWQsCiAgICAgICAgICAgICAgICAgICBib29sIGJ1bmRsZV9vbmx5
LAogICAgICAgICAgICAgICAgICAgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIGRlc2NyaXB0aW9u
KTsKKyAgdm9pZCBBZGRDb250ZW50KENvbnRlbnRJbmZvKiBjb250ZW50KTsKKwogICBib29sIFJl
bW92ZUNvbnRlbnRCeU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwogCiAgIC8vIFRyYW5z
cG9ydCBhY2Nlc3NvcnMuCkBAIC00NTUsNiArNDcyLDI0IEBAIGNsYXNzIFNlc3Npb25EZXNjcmlw
dGlvbiB7CiAgIH0KICAgaW50IG1zaWRfc2lnbmFsaW5nKCkgY29uc3QgeyByZXR1cm4gbXNpZF9z
aWduYWxpbmdfOyB9CiAKKyAgLy8gRGV0ZXJtaW5lcyBpZiBpdCdzIGFsbG93ZWQgdG8gbWl4IG9u
ZS0gYW5kIHR3by1ieXRlIHJ0cCBoZWFkZXIgZXh0ZW5zaW9ucworICAvLyB3aXRoaW4gdGhlIHNh
bWUgcnRwIHN0cmVhbS4KKyAgdm9pZCBzZXRfZXh0bWFwX2FsbG93X21peGVkKGJvb2wgc3VwcG9y
dGVkKSB7CisgICAgZXh0bWFwX2FsbG93X21peGVkXyA9IHN1cHBvcnRlZDsKKyAgICBNZWRpYUNv
bnRlbnREZXNjcmlwdGlvbjo6RXh0bWFwQWxsb3dNaXhlZCBtZWRpYV9sZXZlbF9zZXR0aW5nID0K
KyAgICAgICAgc3VwcG9ydGVkID8gTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtTZXNzaW9uCisg
ICAgICAgICAgICAgICAgICA6IE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm87CisgICAgZm9y
IChhdXRvJiBjb250ZW50IDogY29udGVudHNfKSB7CisgICAgICAvLyBEbyBub3Qgc2V0IHRvIGtO
byBpZiB0aGUgY3VycmVudCBzZXR0aW5nIGlzIGtNZWRpYS4KKyAgICAgIGlmIChzdXBwb3J0ZWQg
fHwgY29udGVudC5tZWRpYV9kZXNjcmlwdGlvbigpLT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgp
ICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6
a01lZGlhKSB7CisgICAgICAgIGNvbnRlbnQubWVkaWFfZGVzY3JpcHRpb24oKS0+c2V0X2V4dG1h
cF9hbGxvd19taXhlZF9lbnVtKAorICAgICAgICAgICAgbWVkaWFfbGV2ZWxfc2V0dGluZyk7Cisg
ICAgICB9CisgICAgfQorICB9CisgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkKCkgY29uc3QgeyBy
ZXR1cm4gZXh0bWFwX2FsbG93X21peGVkXzsgfQorCiAgcHJpdmF0ZToKICAgU2Vzc2lvbkRlc2Ny
aXB0aW9uKGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiYpOwogCkBAIC00NjUsNiArNTAwLDEyIEBA
IGNsYXNzIFNlc3Npb25EZXNjcmlwdGlvbiB7CiAgIC8vIERlZmF1bHQgdG8gd2hhdCBQbGFuIEIg
d291bGQgZG8uCiAgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzg1MzApOiBDaGFuZ2UgZGVmYXVs
dCB0byBrTXNpZFNpZ25hbGluZ01lZGlhU2VjdGlvbi4KICAgaW50IG1zaWRfc2lnbmFsaW5nXyA9
IGtNc2lkU2lnbmFsaW5nU3NyY0F0dHJpYnV0ZTsKKyAgLy8gVE9ETyh3ZWJydGM6OTk4NSk6IEFj
dGl2YXRlIG1peGVkIG9uZS0gYW5kIHR3by1ieXRlIGhlYWRlciBleHRlbnNpb24gaW4KKyAgLy8g
b2ZmZXIgYXQgc2Vzc2lvbiBsZXZlbC4gSXQncyBjdXJyZW50bHkgbm90IGluY2x1ZGVkIGluIG9m
ZmVyIGJ5IGRlZmF1bHQKKyAgLy8gYmVjYXVzZSBjbGllbnRzIHByaW9yIHRvIGh0dHBzOi8vYnVn
cy53ZWJydGMub3JnLzk3MTIgY2Fubm90IHBhcnNlIHRoaXMKKyAgLy8gY29ycmVjdGx5LiBJZiBp
dCdzIGluY2x1ZGVkIGluIG9mZmVyIHRvIHVzIHdlIHdpbGwgcmVzcG9uZCB0aGF0IHdlIHN1cHBv
cnQKKyAgLy8gaXQuCisgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkXyA9IGZhbHNlOwogfTsKIAog
Ly8gSW5kaWNhdGVzIHdoZXRoZXIgYSBzZXNzaW9uIGRlc2NyaXB0aW9uIHdhcyBzZW50IGJ5IHRo
ZSBsb2NhbCBjbGllbnQgb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlvbl91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlv
bl91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2FjZjU4N2Y1NjJiNGY5YTUyNjdiNGFjMjc1YWRk
Nzg4ZTI3MzFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uX3VuaXR0ZXN0LmNjCkBAIC0wLDAg
KzEsMTMwIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworI2luY2x1ZGUgInBjL3Nlc3Npb25kZXNjcmlw
dGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCisKK25hbWVzcGFjZSBjcmlja2V0
IHsKKworVEVTVChNZWRpYUNvbnRlbnREZXNjcmlwdGlvblRlc3QsIEV4dG1hcEFsbG93TWl4ZWRE
ZWZhdWx0VmFsdWUpIHsKKyAgVmlkZW9Db250ZW50RGVzY3JpcHRpb24gdmlkZW9fZGVzYzsKKyAg
RVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8sIHZpZGVvX2Rlc2MuZXh0bWFw
X2FsbG93X21peGVkX2VudW0oKSk7Cit9CisKK1RFU1QoTWVkaWFDb250ZW50RGVzY3JpcHRpb25U
ZXN0LCBTZXRFeHRtYXBBbGxvd01peGVkKSB7CisgIFZpZGVvQ29udGVudERlc2NyaXB0aW9uIHZp
ZGVvX2Rlc2M7CisgIHZpZGVvX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlh
Q29udGVudERlc2NyaXB0aW9uOjprTm8pOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3Jp
cHRpb246OmtObywgdmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKyAgdmlk
ZW9fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRp
b246OmtNZWRpYSk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlh
LAorICAgICAgICAgICAgdmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKyAg
dmlkZW9fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3Jp
cHRpb246OmtTZXNzaW9uKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjpr
U2Vzc2lvbiwKKyAgICAgICAgICAgIHZpZGVvX2Rlc2MuZXh0bWFwX2FsbG93X21peGVkX2VudW0o
KSk7CisKKyAgLy8gTm90IGFsbG93ZWQgdG8gZG93bmdyYWRlIGZyb20ga1Nlc3Npb24gdG8ga01l
ZGlhLgorICB2aWRlb19kZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRl
bnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0
aW9uOjprU2Vzc2lvbiwKKyAgICAgICAgICAgIHZpZGVvX2Rlc2MuZXh0bWFwX2FsbG93X21peGVk
X2VudW0oKSk7CisKKyAgLy8gQWx3YXlzIG9rYXkgdG8gc2V0IG5vdCBzdXBwb3J0ZWQuCisgIHZp
ZGVvX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0
aW9uOjprTm8pOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtObywgdmlk
ZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKyAgdmlkZW9fZGVzYy5zZXRfZXh0
bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7Cisg
IEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhLAorICAgICAgICAgICAg
dmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKyAgdmlkZW9fZGVzYy5zZXRf
ZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtObyk7Cisg
IEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a05vLCB2aWRlb19kZXNjLmV4dG1h
cF9hbGxvd19taXhlZF9lbnVtKCkpOworfQorCitURVNUKE1lZGlhQ29udGVudERlc2NyaXB0aW9u
VGVzdCwgTWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKSB7CisgIFZpZGVvQ29udGVudERl
c2NyaXB0aW9uIHZpZGVvX2Rlc2M7CisgIHZpZGVvX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhl
ZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8pOworICBFWFBFQ1RfRkFMU0Uodmlk
ZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7CisgIHZpZGVvX2Rlc2Muc2V0X2V4dG1hcF9h
bGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEpOworICBFWFBF
Q1RfVFJVRSh2aWRlb19kZXNjLmV4dG1hcF9hbGxvd19taXhlZCgpKTsKKyAgdmlkZW9fZGVzYy5z
ZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtTZXNz
aW9uKTsKKyAgRVhQRUNUX1RSVUUodmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7Cit9
CisKK1RFU1QoU2Vzc2lvbkRlc2NyaXB0aW9uVGVzdCwgU2V0RXh0bWFwQWxsb3dNaXhlZCkgewor
ICBTZXNzaW9uRGVzY3JpcHRpb24gc2Vzc2lvbl9kZXNjOworICBzZXNzaW9uX2Rlc2Muc2V0X2V4
dG1hcF9hbGxvd19taXhlZCh0cnVlKTsKKyAgRVhQRUNUX1RSVUUoc2Vzc2lvbl9kZXNjLmV4dG1h
cF9hbGxvd19taXhlZCgpKTsKKyAgc2Vzc2lvbl9kZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWQo
ZmFsc2UpOworICBFWFBFQ1RfRkFMU0Uoc2Vzc2lvbl9kZXNjLmV4dG1hcF9hbGxvd19taXhlZCgp
KTsKK30KKworVEVTVChTZXNzaW9uRGVzY3JpcHRpb25UZXN0LCBTZXRFeHRtYXBBbGxvd01peGVk
UHJvcGFnYXRlc1RvTWVkaWFMZXZlbCkgeworICBTZXNzaW9uRGVzY3JpcHRpb24gc2Vzc2lvbl9k
ZXNjOworICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogdmlkZW9fZGVzYyA9IG5ldyBWaWRlb0Nv
bnRlbnREZXNjcmlwdGlvbigpOworICBzZXNzaW9uX2Rlc2MuQWRkQ29udGVudCgidmlkZW8iLCBN
ZWRpYVByb3RvY29sVHlwZTo6a1J0cCwgdmlkZW9fZGVzYyk7CisKKyAgLy8gU2V0dGluZyB0cnVl
IG9uIHNlc3Npb24gbGV2ZWwgcHJvcGFnYXRlcyB0byBtZWRpYSBsZXZlbC4KKyAgc2Vzc2lvbl9k
ZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWQodHJ1ZSk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRl
bnREZXNjcmlwdGlvbjo6a1Nlc3Npb24sCisgICAgICAgICAgICB2aWRlb19kZXNjLT5leHRtYXBf
YWxsb3dfbWl4ZWRfZW51bSgpKTsKKworICAvLyBEb24ndCBkb3duZ3JhZGUgZnJvbSBzZXNzaW9u
IGxldmVsIHRvIG1lZGlhIGxldmVsCisgIHZpZGVvX2Rlc2MtPnNldF9leHRtYXBfYWxsb3dfbWl4
ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgRVhQRUNUX0VRKE1l
ZGlhQ29udGVudERlc2NyaXB0aW9uOjprU2Vzc2lvbiwKKyAgICAgICAgICAgIHZpZGVvX2Rlc2Mt
PmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworCisgIC8vIFNldHRpbmcgZmFsc2Ugb24gc2Vz
c2lvbiBsZXZlbCBwcm9wYWdhdGVzIHRvIG1lZGlhIGxldmVsIGlmIHRoZSBjdXJyZW50CisgIC8v
IHN0YXRlIGlzIGtTZXNzaW9uLgorICBzZXNzaW9uX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhl
ZChmYWxzZSk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a05vLAorICAg
ICAgICAgICAgdmlkZW9fZGVzYy0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7CisKKyAgLy8g
Tm93IHBvc3NpYmxlIHRvIHNldCBhdCBtZWRpYSBsZXZlbC4KKyAgdmlkZW9fZGVzYy0+c2V0X2V4
dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEpOwor
ICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSwKKyAgICAgICAgICAg
IHZpZGVvX2Rlc2MtPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworCisgIC8vIFNldHRpbmcg
ZmFsc2Ugb24gc2Vzc2lvbiBsZXZlbCBkb2VzIG5vdCBvdmVycmlkZSBvbiBtZWRpYSBsZXZlbCBp
ZiBjdXJyZW50CisgIC8vIHN0YXRlIGlzIGtNZWRpYS4KKyAgc2Vzc2lvbl9kZXNjLnNldF9leHRt
YXBfYWxsb3dfbWl4ZWQoZmFsc2UpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRp
b246OmtNZWRpYSwKKyAgICAgICAgICAgIHZpZGVvX2Rlc2MtPmV4dG1hcF9hbGxvd19taXhlZF9l
bnVtKCkpOworCisgIC8vIFNldHRpbmcgdHJ1ZSBvbiBzZXNzaW9uIGxldmVsIG92ZXJyaWRlcyBz
ZXR0aW5nIG9uIG1lZGlhIGxldmVsLgorICBzZXNzaW9uX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19t
aXhlZCh0cnVlKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprU2Vzc2lv
biwKKyAgICAgICAgICAgIHZpZGVvX2Rlc2MtPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOwor
fQorCitURVNUKFNlc3Npb25EZXNjcmlwdGlvblRlc3QsIEFkZENvbnRlbnRUcmFuc2ZlcnNFeHRt
YXBBbGxvd01peGVkU2V0dGluZykgeworICBTZXNzaW9uRGVzY3JpcHRpb24gc2Vzc2lvbl9kZXNj
OworICBzZXNzaW9uX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZChmYWxzZSk7CisgIE1lZGlh
Q29udGVudERlc2NyaXB0aW9uKiBhdWRpb19kZXNjID0gbmV3IEF1ZGlvQ29udGVudERlc2NyaXB0
aW9uKCk7CisgIGF1ZGlvX2Rlc2MtPnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShNZWRpYUNv
bnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKworICAvLyBJZiBzZXNzaW9uIHNldHRpbmcgaXMg
ZmFsc2UsIG1lZGlhIGxldmVsIHNldHRpbmcgaXMgcHJlc2VydmVkIHdoZW4gbmV3CisgIC8vIGNv
bnRlbnQgaXMgYWRkZWQuCisgIHNlc3Npb25fZGVzYy5BZGRDb250ZW50KCJhdWRpbyIsIE1lZGlh
UHJvdG9jb2xUeXBlOjprUnRwLCBhdWRpb19kZXNjKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVu
dERlc2NyaXB0aW9uOjprTWVkaWEsCisgICAgICAgICAgICBhdWRpb19kZXNjLT5leHRtYXBfYWxs
b3dfbWl4ZWRfZW51bSgpKTsKKworICAvLyBJZiBzZXNzaW9uIHNldHRpbmcgaXMgdHJ1ZSwgaXQn
cyB0cmFuc2ZlcnJlZCB0byBtZWRpYSBsZXZlbCB3aGVuIG5ldworICAvLyBjb250ZW50IGlzIGFk
ZGVkLgorICBzZXNzaW9uX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZCh0cnVlKTsKKyAgTWVk
aWFDb250ZW50RGVzY3JpcHRpb24qIHZpZGVvX2Rlc2MgPSBuZXcgVmlkZW9Db250ZW50RGVzY3Jp
cHRpb24oKTsKKyAgc2Vzc2lvbl9kZXNjLkFkZENvbnRlbnQoInZpZGVvIiwgTWVkaWFQcm90b2Nv
bFR5cGU6OmtSdHAsIHZpZGVvX2Rlc2MpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3Jp
cHRpb246OmtTZXNzaW9uLAorICAgICAgICAgICAgdmlkZW9fZGVzYy0+ZXh0bWFwX2FsbG93X21p
eGVkX2VudW0oKSk7CisKKyAgLy8gU2Vzc2lvbiBsZXZlbCBzZXR0aW5nIG92ZXJyaWRlcyBtZWRp
YSBsZXZlbCB3aGVuIG5ldyBjb250ZW50IGlzIGFkZGVkLgorICBNZWRpYUNvbnRlbnREZXNjcmlw
dGlvbiogZGF0YV9kZXNjID0gbmV3IERhdGFDb250ZW50RGVzY3JpcHRpb247CisgIGRhdGFfZGVz
Yy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjpr
TWVkaWEpOworICBzZXNzaW9uX2Rlc2MuQWRkQ29udGVudCgiZGF0YSIsIE1lZGlhUHJvdG9jb2xU
eXBlOjprUnRwLCBkYXRhX2Rlc2MpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRp
b246OmtTZXNzaW9uLAorICAgICAgICAgICAgZGF0YV9kZXNjLT5leHRtYXBfYWxsb3dfbWl4ZWRf
ZW51bSgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0ZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwZmlsdGVyLmNj
CmluZGV4IDVmZmUzNDIxMmU1MDhiYTczYTAwZTNmODY5NDhhZTUwN2ZmNjJlMTAuLmNkMDM5M2Ew
M2UzMzFiMWQ3M2NmZjRhMjI1OWUyM2FlN2E1MmY0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0ZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cGZpbHRlci5jYwpA
QCAtMTksNyArMTksNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2J5dGVvcmRlci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGly
ZF9wYXJ0eS9iYXNlNjQvYmFzZTY0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvemVyb19tZW1vcnkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0ZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0ZXIuaAppbmRl
eCBhNGRkNTRmYThiZGViY2E2OGUxOWMwZmRkZDA4MzliNjkxMGU2OWQ1Li40YWIwZGQ3MmMxYTQx
MmMxNDIzYzhjMDI0NWFkZTc5NGVhOGVmODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwZmlsdGVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cGZpbHRlci5oCkBAIC03OCw2
ICs3OCwxMCBAQCBjbGFzcyBTcnRwRmlsdGVyIHsKIAogICBib29sIFJlc2V0UGFyYW1zKCk7CiAK
KyAgc3RhdGljIGJvb2wgUGFyc2VLZXlQYXJhbXMoY29uc3Qgc3RkOjpzdHJpbmcmIHBhcmFtcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCoga2V5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKTsKKwogICBhYnNsOjpvcHRpb25hbDxpbnQ+IHNl
bmRfY2lwaGVyX3N1aXRlKCkgeyByZXR1cm4gc2VuZF9jaXBoZXJfc3VpdGVfOyB9CiAgIGFic2w6
Om9wdGlvbmFsPGludD4gcmVjdl9jaXBoZXJfc3VpdGUoKSB7IHJldHVybiByZWN2X2NpcGhlcl9z
dWl0ZV87IH0KIApAQCAtMTA0LDEwICsxMDgsNiBAQCBjbGFzcyBTcnRwRmlsdGVyIHsKIAogICBi
b29sIEFwcGx5UmVjdlBhcmFtcyhjb25zdCBDcnlwdG9QYXJhbXMmIHJlY3ZfcGFyYW1zKTsKIAot
ICBzdGF0aWMgYm9vbCBQYXJzZUtleVBhcmFtcyhjb25zdCBzdGQ6OnN0cmluZyYgcGFyYW1zLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBrZXksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOwotCiAgIGVudW0gU3RhdGUgewogICAgIFNUX0lO
SVQsICAgICAgICAgICAgICAgICAgICAvLyBTUlRQIGZpbHRlciB1bnVzZWQuCiAgICAgU1RfU0VO
VE9GRkVSLCAgICAgICAgICAgICAgIC8vIE9mZmVyIHdpdGggU1JUUCBwYXJhbWV0ZXJzIHNlbnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9zcnRwc2Vzc2lvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3NydHBzZXNzaW9uLmNjCmluZGV4IGE1ZmRhODg5N2ZlYjlkNzI2Mjk1ZDVlNTM3OGRl
NDU2ZmNmMGI1MzcuLmFhZGQ0NzExYTUwM2UxZTc0NzMzZjNmODQ2MjVlMGE4MTFkODJmMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Ny
dHBzZXNzaW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3NydHBzZXNzaW9uLmNjCkBAIC0xMzgsNyArMTM4LDE1IEBAIGJvb2wgU3J0cFNlc3Np
b246OlVucHJvdGVjdFJ0cCh2b2lkKiBwLCBpbnQgaW5fbGVuLCBpbnQqIG91dF9sZW4pIHsKICAg
Km91dF9sZW4gPSBpbl9sZW47CiAgIGludCBlcnIgPSBzcnRwX3VucHJvdGVjdChzZXNzaW9uXywg
cCwgb3V0X2xlbik7CiAgIGlmIChlcnIgIT0gc3J0cF9lcnJfc3RhdHVzX29rKSB7Ci0gICAgUlRD
X0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHVucHJvdGVjdCBTUlRQIHBhY2tldCwgZXJy
PSIgPDwgZXJyOworICAgIC8vIExpbWl0IHRoZSBlcnJvciBsb2dnaW5nIHRvIGF2b2lkIGV4Y2Vz
c2l2ZSBsb2dzIHdoZW4gdGhlcmUgYXJlIGxvdHMgb2YKKyAgICAvLyBiYWQgcGFja2V0cy4KKyAg
ICBjb25zdCBpbnQga0ZhaWx1cmVMb2dUaHJvdHRsZUNvdW50ID0gMTAwOworICAgIGlmIChkZWNy
eXB0aW9uX2ZhaWx1cmVfY291bnRfICUga0ZhaWx1cmVMb2dUaHJvdHRsZUNvdW50ID09IDApIHsK
KyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byB1bnByb3RlY3QgU1JUUCBw
YWNrZXQsIGVycj0iIDw8IGVycgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBwcmV2
aW91cyBmYWlsdXJlIGNvdW50OiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGRlY3J5
cHRpb25fZmFpbHVyZV9jb3VudF87CisgICAgfQorICAgICsrZGVjcnlwdGlvbl9mYWlsdXJlX2Nv
dW50XzsKICAgICBSVENfSElTVE9HUkFNX0VOVU1FUkFUSU9OKCJXZWJSVEMuUGVlckNvbm5lY3Rp
b24uU3J0cFVucHJvdGVjdEVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludD4oZXJyKSwga1NydHBFcnJvckNvZGVCb3VuZGFyeSk7CiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvc3J0cHNlc3Npb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3NydHBzZXNzaW9uLmgKaW5kZXggYzNhMDFiZDEzOWJiMGE1MzZjYmY4ZDk3
NzRjNGUyYmZhN2U3NjE5My4uY2UwNWNlNmQ3MjU4NjIyYzg0OTczYjJmNzcxZGRjNmJiMGYzZDQ5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvc3J0cHNlc3Npb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9zcnRwc2Vzc2lvbi5oCkBAIC0xMjIsNiArMTIyLDcgQEAgY2xhc3MgU3J0cFNl
c3Npb24gewogICBpbnQgbGFzdF9zZW5kX3NlcV9udW1fID0gLTE7CiAgIGJvb2wgZXh0ZXJuYWxf
YXV0aF9hY3RpdmVfID0gZmFsc2U7CiAgIGJvb2wgZXh0ZXJuYWxfYXV0aF9lbmFibGVkXyA9IGZh
bHNlOworICBpbnQgZGVjcnlwdGlvbl9mYWlsdXJlX2NvdW50XyA9IDA7CiAgIFJUQ19ESVNBTExP
V19DT1BZX0FORF9BU1NJR04oU3J0cFNlc3Npb24pOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHRyYW5zcG9ydC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHB0cmFuc3Bv
cnQuY2MKaW5kZXggNmZkOGJlMzdjMjQyNDgxYjljOTc4OTkzMGJlNDNjZGRhMTQ3MGYzYi4uMGNm
NDEwNjIwM2U2MzUxNTBkZTdmZTg5OGZjNGE5MTc1NjhkM2UzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHRyYW5zcG9ydC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwdHJh
bnNwb3J0LmNjCkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBTcnRwVHJhbnNwb3J0OjpTZW5kUnRj
cFBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCiB9CiAKIHZvaWQgU3J0cFRy
YW5zcG9ydDo6T25SdHBQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNr
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQ
YWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgaWYgKCFJc1NydHBBY3RpdmUo
KSkgewogICAgIFJUQ19MT0coTFNfV0FSTklORykKICAgICAgICAgPDwgIkluYWN0aXZlIFNSVFAg
dHJhbnNwb3J0IHJlY2VpdmVkIGFuIFJUUCBwYWNrZXQuIERyb3AgaXQuIjsKQEAgLTIwNywxNiAr
MjA3LDI1IEBAIHZvaWQgU3J0cFRyYW5zcG9ydDo6T25SdHBQYWNrZXRSZWNlaXZlZChydGM6OkNv
cHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCiAgICAgdWludDMyX3Qgc3NyYyA9IDA7CiAgICAgY3Jp
Y2tldDo6R2V0UnRwU2VxTnVtKGRhdGEsIGxlbiwgJnNlcV9udW0pOwogICAgIGNyaWNrZXQ6Okdl
dFJ0cFNzcmMoZGF0YSwgbGVuLCAmc3NyYyk7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZh
aWxlZCB0byB1bnByb3RlY3QgUlRQIHBhY2tldDogc2l6ZT0iIDw8IGxlbgotICAgICAgICAgICAg
ICAgICAgICAgIDw8ICIsIHNlcW51bT0iIDw8IHNlcV9udW0gPDwgIiwgU1NSQz0iIDw8IHNzcmM7
CisKKyAgICAvLyBMaW1pdCB0aGUgZXJyb3IgbG9nZ2luZyB0byBhdm9pZCBleGNlc3NpdmUgbG9n
cyB3aGVuIHRoZXJlIGFyZSBsb3RzIG9mCisgICAgLy8gYmFkIHBhY2tldHMuCisgICAgY29uc3Qg
aW50IGtGYWlsdXJlTG9nVGhyb3R0bGVDb3VudCA9IDEwMDsKKyAgICBpZiAoZGVjcnlwdGlvbl9m
YWlsdXJlX2NvdW50XyAlIGtGYWlsdXJlTG9nVGhyb3R0bGVDb3VudCA9PSAwKSB7CisgICAgICBS
VENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHVucHJvdGVjdCBSVFAgcGFja2V0OiBzaXpl
PSIgPDwgbGVuCisgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBzZXFudW09IiA8PCBzZXFf
bnVtIDw8ICIsIFNTUkM9IiA8PCBzc3JjCisgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBw
cmV2aW91cyBmYWlsdXJlIGNvdW50OiAiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBkZWNy
eXB0aW9uX2ZhaWx1cmVfY291bnRfOworICAgIH0KKyAgICArK2RlY3J5cHRpb25fZmFpbHVyZV9j
b3VudF87CiAgICAgcmV0dXJuOwogICB9CiAgIHBhY2tldC0+U2V0U2l6ZShsZW4pOwotICBEZW11
eFBhY2tldChwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgRGVtdXhQYWNrZXQocGFja2V0LCBwYWNr
ZXRfdGltZV91cyk7CiB9CiAKIHZvaWQgU3J0cFRyYW5zcG9ydDo6T25SdGNwUGFja2V0UmVjZWl2
ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0
X3RpbWVfdXMpIHsKICAgaWYgKCFJc1NydHBBY3RpdmUoKSkgewogICAgIFJUQ19MT0coTFNfV0FS
TklORykKICAgICAgICAgPDwgIkluYWN0aXZlIFNSVFAgdHJhbnNwb3J0IHJlY2VpdmVkIGFuIFJU
Q1AgcGFja2V0LiBEcm9wIGl0LiI7CkBAIC0yMzMsNyArMjQyLDcgQEAgdm9pZCBTcnRwVHJhbnNw
b3J0OjpPblJ0Y3BQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQs
CiAgICAgcmV0dXJuOwogICB9CiAgIHBhY2tldC0+U2V0U2l6ZShsZW4pOwotICBTaWduYWxSdGNw
UGFja2V0UmVjZWl2ZWQocGFja2V0LCBwYWNrZXRfdGltZSk7CisgIFNpZ25hbFJ0Y3BQYWNrZXRS
ZWNlaXZlZChwYWNrZXQsIHBhY2tldF90aW1lX3VzKTsKIH0KIAogdm9pZCBTcnRwVHJhbnNwb3J0
OjpPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwdHJhbnNwb3J0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwdHJhbnNwb3J0LmgKaW5kZXggMTk4
MDI0ZjVhNTRjYTRkOTQxNDU3NTA4ODM4NGI0NmU5OGFkOTk1ZC4uYzYyMzU5Yjk0NGQ0ODcyMzk5
MGZhMDA1MDM5ZjFhM2RjMzQyMWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHRyYW5zcG9ydC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHB0cmFuc3BvcnQuaApAQCAtMTEz
LDkgKzExMyw5IEBAIGNsYXNzIFNydHBUcmFuc3BvcnQgOiBwdWJsaWMgUnRwVHJhbnNwb3J0IHsK
ICAgdm9pZCBDcmVhdGVTcnRwU2Vzc2lvbnMoKTsKIAogICB2b2lkIE9uUnRwUGFja2V0UmVjZWl2
ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgb3ZlcnJpZGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSBvdmVycmlkZTsK
ICAgdm9pZCBPblJ0Y3BQYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNr
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBw
YWNrZXRfdGltZSkgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBwYWNrZXRfdGltZV91cykgb3ZlcnJpZGU7CiAgIHZvaWQgT25OZXR3b3JrUm91dGVDaGFuZ2Vk
KAogICAgICAgYWJzbDo6b3B0aW9uYWw8cnRjOjpOZXR3b3JrUm91dGU+IG5ldHdvcmtfcm91dGUp
IG92ZXJyaWRlOwogCkBAIC0xNjAsNiArMTYwLDggQEAgY2xhc3MgU3J0cFRyYW5zcG9ydCA6IHB1
YmxpYyBSdHBUcmFuc3BvcnQgewogICBib29sIGV4dGVybmFsX2F1dGhfZW5hYmxlZF8gPSBmYWxz
ZTsKIAogICBpbnQgcnRwX2Fic19zZW5kdGltZV9leHRuX2lkXyA9IC0xOworCisgIGludCBkZWNy
eXB0aW9uX2ZhaWx1cmVfY291bnRfID0gMDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3N0YXRzY29sbGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvc3RhdHNjb2xsZWN0b3IuY2MKaW5kZXggMjNhNDQ5MzA4YzMxN2U5MTExMGNhZDg0
MDQwMGYyZGIzNWQ3ODEyMC4uYTFkNTJkYjA0ZTkyZGU4ZDQ1N2M5M2EwNjg5YTg1MjIxYWNkNzE0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvc3RhdHNjb2xsZWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvc3RhdHNjb2xsZWN0b3IuY2MKQEAgLTc4Myw4ICs3ODMsOCBAQCB2b2lk
IFN0YXRzQ29sbGVjdG9yOjpFeHRyYWN0U2Vzc2lvbkluZm8oKSB7CiAgICAgU3RhdHNSZXBvcnQ6
OklkIGxvY2FsX2NlcnRfcmVwb3J0X2lkLCByZW1vdGVfY2VydF9yZXBvcnRfaWQ7CiAgICAgcnRj
OjpzY29wZWRfcmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRlOwogICAgIGlm
IChwY18tPkdldExvY2FsQ2VydGlmaWNhdGUodHJhbnNwb3J0X25hbWUsICZjZXJ0aWZpY2F0ZSkp
IHsKLSAgICAgIFN0YXRzUmVwb3J0KiByID0KLSAgICAgICAgICBBZGRDZXJ0aWZpY2F0ZVJlcG9y
dHMoY2VydGlmaWNhdGUtPnNzbF9jZXJ0X2NoYWluKCkuR2V0U3RhdHMoKSk7CisgICAgICBTdGF0
c1JlcG9ydCogciA9IEFkZENlcnRpZmljYXRlUmVwb3J0cygKKyAgICAgICAgICBjZXJ0aWZpY2F0
ZS0+R2V0U1NMQ2VydGlmaWNhdGVDaGFpbigpLkdldFN0YXRzKCkpOwogICAgICAgaWYgKHIpCiAg
ICAgICAgIGxvY2FsX2NlcnRfcmVwb3J0X2lkID0gci0+aWQoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zdGF0c2NvbGxl
Y3Rvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3N0YXRzY29sbGVjdG9yX3VuaXR0ZXN0LmNjCmluZGV4IGZhNGQzZGI4MWJkN2M1NzZm
NzVjZDE5NzcyOTRlMzZkZGYyNTFmODkuLjUzZWIyZWFhNWVhYmE0Njc3MjA1YmQzYTk0MTZhMzQy
MGE2NzY3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3N0YXRzY29sbGVjdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3N0YXRzY29sbGVjdG9yX3VuaXR0ZXN0LmNj
CkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAicGMvdGVzdC9mYWtldmlkZW90cmFja3NvdXJj
ZS5oIgogI2luY2x1ZGUgInBjL3ZpZGVvdHJhY2suaCIKICNpbmNsdWRlICJydGNfYmFzZS9mYWtl
c3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0L2Jhc2U2NC5oIgogI2luY2x1ZGUgInRl
c3QvZ3Rlc3QuaCIKIApAQCAtNTYsMTQgKzU3LDYgQEAgY2xhc3MgRmFrZUF1ZGlvUHJvY2Vzc29y
IDogcHVibGljIEF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNlIHsKICAgfkZha2VBdWRpb1Byb2Nlc3Nv
cigpIHt9CiAKICBwcml2YXRlOgotICB2b2lkIEdldFN0YXRzKEF1ZGlvUHJvY2Vzc29ySW50ZXJm
YWNlOjpBdWRpb1Byb2Nlc3NvclN0YXRzKiBzdGF0cykgb3ZlcnJpZGUgewotICAgIHN0YXRzLT50
eXBpbmdfbm9pc2VfZGV0ZWN0ZWQgPSB0cnVlOwotICAgIHN0YXRzLT5lY2hvX3JldHVybl9sb3Nz
ID0gMjsKLSAgICBzdGF0cy0+ZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudCA9IDM7Ci0gICAg
c3RhdHMtPmVjaG9fZGVsYXlfbWVkaWFuX21zID0gNDsKLSAgICBzdGF0cy0+ZWNob19kZWxheV9z
dGRfbXMgPSA2OwotICB9Ci0KICAgQXVkaW9Qcm9jZXNzb3JJbnRlcmZhY2U6OkF1ZGlvUHJvY2Vz
c29yU3RhdGlzdGljcyBHZXRTdGF0cygKICAgICAgIGJvb2wgaGFzX3JlY3Zfc3RyZWFtcykgb3Zl
cnJpZGUgewogICAgIEF1ZGlvUHJvY2Vzc29yU3RhdGlzdGljcyBzdGF0czsKQEAgLTEwNywxNCAr
MTAwLDYgQEAgY2xhc3MgRmFrZUF1ZGlvUHJvY2Vzc29yV2l0aEluaXRWYWx1ZSA6IHB1YmxpYyBB
dWRpb1Byb2Nlc3NvckludGVyZmFjZSB7CiAgIH5GYWtlQXVkaW9Qcm9jZXNzb3JXaXRoSW5pdFZh
bHVlKCkge30KIAogIHByaXZhdGU6Ci0gIHZvaWQgR2V0U3RhdHMoQXVkaW9Qcm9jZXNzb3JJbnRl
cmZhY2U6OkF1ZGlvUHJvY2Vzc29yU3RhdHMqIHN0YXRzKSBvdmVycmlkZSB7Ci0gICAgc3RhdHMt
PnR5cGluZ19ub2lzZV9kZXRlY3RlZCA9IGZhbHNlOwotICAgIHN0YXRzLT5lY2hvX3JldHVybl9s
b3NzID0gLTEwMDsKLSAgICBzdGF0cy0+ZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudCA9IC0x
MDA7Ci0gICAgc3RhdHMtPmVjaG9fZGVsYXlfbWVkaWFuX21zID0gLTE7Ci0gICAgc3RhdHMtPmVj
aG9fZGVsYXlfc3RkX21zID0gLTE7Ci0gIH0KLQogICBBdWRpb1Byb2Nlc3NvckludGVyZmFjZTo6
QXVkaW9Qcm9jZXNzb3JTdGF0aXN0aWNzIEdldFN0YXRzKAogICAgICAgYm9vbCAvKmhhc19yZWN2
X3N0cmVhbXMqLykgb3ZlcnJpZGUgewogICAgIEF1ZGlvUHJvY2Vzc29yU3RhdGlzdGljcyBzdGF0
czsKQEAgLTQ5NCwxMCArNDc5LDEwIEBAIHZvaWQgSW5pdFZvaWNlU2VuZGVySW5mbyhjcmlja2V0
OjpWb2ljZVNlbmRlckluZm8qIHZvaWNlX3NlbmRlcl9pbmZvKSB7CiAgIHZvaWNlX3NlbmRlcl9p
bmZvLT5wYWNrZXRzX2xvc3QgPSAxMDU7CiAgIHZvaWNlX3NlbmRlcl9pbmZvLT5leHRfc2VxbnVt
ID0gMTA2OwogICB2b2ljZV9zZW5kZXJfaW5mby0+YXVkaW9fbGV2ZWwgPSAxMDc7Ci0gIHZvaWNl
X3NlbmRlcl9pbmZvLT5lY2hvX3JldHVybl9sb3NzID0gMTA4OwotICB2b2ljZV9zZW5kZXJfaW5m
by0+ZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudCA9IDEwOTsKLSAgdm9pY2Vfc2VuZGVyX2lu
Zm8tPmVjaG9fZGVsYXlfbWVkaWFuX21zID0gMTEwOwotICB2b2ljZV9zZW5kZXJfaW5mby0+ZWNo
b19kZWxheV9zdGRfbXMgPSAxMTE7CisgIHZvaWNlX3NlbmRlcl9pbmZvLT5hcG1fc3RhdGlzdGlj
cy5lY2hvX3JldHVybl9sb3NzID0gMTA4OworICB2b2ljZV9zZW5kZXJfaW5mby0+YXBtX3N0YXRp
c3RpY3MuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudCA9IDEwOTsKKyAgdm9pY2Vfc2VuZGVy
X2luZm8tPmFwbV9zdGF0aXN0aWNzLmRlbGF5X21lZGlhbl9tcyA9IDExMDsKKyAgdm9pY2Vfc2Vu
ZGVyX2luZm8tPmFwbV9zdGF0aXN0aWNzLmRlbGF5X3N0YW5kYXJkX2RldmlhdGlvbl9tcyA9IDEx
MTsKICAgdm9pY2Vfc2VuZGVyX2luZm8tPnR5cGluZ19ub2lzZV9kZXRlY3RlZCA9IGZhbHNlOwog
ICB2b2ljZV9zZW5kZXJfaW5mby0+YW5hX3N0YXRpc3RpY3MuYml0cmF0ZV9hY3Rpb25fY291bnRl
ciA9IDExMjsKICAgdm9pY2Vfc2VuZGVyX2luZm8tPmFuYV9zdGF0aXN0aWNzLmNoYW5uZWxfYWN0
aW9uX2NvdW50ZXIgPSAxMTM7CkBAIC02NDEsNyArNjI2LDcgQEAgY2xhc3MgU3RhdHNDb2xsZWN0
b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPHJ0Yzo6U1NMSWRlbnRpdHk+KGxvY2FsX2lkZW50aXR5LkdldFJlZmVyZW5jZSgpKSkpOwog
ICAgIHBjLT5TZXRMb2NhbENlcnRpZmljYXRlKGtUcmFuc3BvcnROYW1lLCBsb2NhbF9jZXJ0aWZp
Y2F0ZSk7CiAgICAgcGMtPlNldFJlbW90ZUNlcnRDaGFpbihrVHJhbnNwb3J0TmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9pZGVudGl0eS5jZXJ0X2NoYWluKCkuVW5pcXVl
Q29weSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9pZGVudGl0eS5jZXJ0
X2NoYWluKCkuQ2xvbmUoKSk7CiAKICAgICBzdGF0cy0+VXBkYXRlU3RhdHMoUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OmtTdGF0c091dHB1dExldmVsU3RhbmRhcmQpOwogCkBAIC0xNTY3LDcgKzE1
NTIsNyBAQCBURVNUX1AoU3RhdHNDb2xsZWN0b3JUcmFja1Rlc3QsIEdldFN0YXRzQWZ0ZXJSZW1v
dmVBdWRpb1N0cmVhbSkgewogCiAgIC8vIFZlcmlmaWVzIHRoZSB2YWx1ZXMgaW4gdGhlIHRyYWNr
IHJlcG9ydCwgbm8gdmFsdWUgd2lsbCBiZSBjaGFuZ2VkIGJ5IHRoZQogICAvLyBBdWRpb1RyYWNr
SW50ZXJmYWNlOjpHZXRTaWduYWxWYWx1ZSgpIGFuZAotICAvLyBBdWRpb1Byb2Nlc3NvckludGVy
ZmFjZTo6QXVkaW9Qcm9jZXNzb3JTdGF0czo6R2V0U3RhdHMoKTsKKyAgLy8gQXVkaW9Qcm9jZXNz
b3JJbnRlcmZhY2U6OkdldFN0YXRzKCk7CiAgIFZlcmlmeVZvaWNlU2VuZGVySW5mb1JlcG9ydChy
ZXBvcnQsIHZvaWNlX3NlbmRlcl9pbmZvKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9mYWtlcGVlcmNvbm5lY3Rpb25m
b3JzdGF0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
dGVzdC9mYWtlcGVlcmNvbm5lY3Rpb25mb3JzdGF0cy5oCmluZGV4IDY0MmZhMDExZWI0ZTg4MDk2
YzgyNDllMjZjMjBhNTcyZmU5ZTc3ZDIuLmFmODY2MzllY2E0ZDU5ODQ5ZjZkNWVlODlhNDUxZTRi
NjQwMGIyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3Rlc3QvZmFrZXBlZXJjb25uZWN0aW9uZm9yc3RhdHMuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L2Zha2VwZWVyY29ubmVj
dGlvbmZvcnN0YXRzLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFzcyBGYWtlUGVlckNvbm5lY3Rp
b25Gb3JTdGF0cyA6IHB1YmxpYyBGYWtlUGVlckNvbm5lY3Rpb25CYXNlIHsKICAgICB2b2ljZV9j
aGFubmVsXyA9IGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OlZvaWNlQ2hhbm5lbD4oCiAgICAg
ICAgIHdvcmtlcl90aHJlYWRfLCBuZXR3b3JrX3RocmVhZF8sIHNpZ25hbGluZ190aHJlYWRfLCBu
dWxscHRyLAogICAgICAgICBzdGQ6Om1vdmUodm9pY2VfbWVkaWFfY2hhbm5lbCksIG1pZCwga0Rl
ZmF1bHRTcnRwUmVxdWlyZWQsCi0gICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKKyAgICAg
ICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpOwogICAgIHZvaWNlX2NoYW5uZWxfLT5zZXRfdHJh
bnNwb3J0X25hbWVfZm9yX3Rlc3RpbmcodHJhbnNwb3J0X25hbWUpOwogICAgIEdldE9yQ3JlYXRl
Rmlyc3RUcmFuc2NlaXZlck9mVHlwZShjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPKQogICAgICAg
ICAtPmludGVybmFsKCkKQEAgLTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBGYWtlUGVlckNvbm5lY3Rp
b25Gb3JTdGF0cyA6IHB1YmxpYyBGYWtlUGVlckNvbm5lY3Rpb25CYXNlIHsKICAgICB2aWRlb19j
aGFubmVsXyA9IGFic2w6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OlZpZGVvQ2hhbm5lbD4oCiAgICAg
ICAgIHdvcmtlcl90aHJlYWRfLCBuZXR3b3JrX3RocmVhZF8sIHNpZ25hbGluZ190aHJlYWRfLAog
ICAgICAgICBzdGQ6Om1vdmUodmlkZW9fbWVkaWFfY2hhbm5lbCksIG1pZCwga0RlZmF1bHRTcnRw
UmVxdWlyZWQsCi0gICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKKyAgICAgICAgd2VicnRj
OjpDcnlwdG9PcHRpb25zKCkpOwogICAgIHZpZGVvX2NoYW5uZWxfLT5zZXRfdHJhbnNwb3J0X25h
bWVfZm9yX3Rlc3RpbmcodHJhbnNwb3J0X25hbWUpOwogICAgIEdldE9yQ3JlYXRlRmlyc3RUcmFu
c2NlaXZlck9mVHlwZShjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPKQogICAgICAgICAtPmludGVy
bmFsKCkKQEAgLTMxOSw3ICszMTksNyBAQCBjbGFzcyBGYWtlUGVlckNvbm5lY3Rpb25Gb3JTdGF0
cyA6IHB1YmxpYyBGYWtlUGVlckNvbm5lY3Rpb25CYXNlIHsKICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB0cmFuc3BvcnRfbmFtZSkgb3ZlcnJpZGUgewogICAgIGF1dG8gaXQgPSByZW1vdGVfY2Vy
dF9jaGFpbnNfYnlfdHJhbnNwb3J0Xy5maW5kKHRyYW5zcG9ydF9uYW1lKTsKICAgICBpZiAoaXQg
IT0gcmVtb3RlX2NlcnRfY2hhaW5zX2J5X3RyYW5zcG9ydF8uZW5kKCkpIHsKLSAgICAgIHJldHVy
biBpdC0+c2Vjb25kLT5VbmlxdWVDb3B5KCk7CisgICAgICByZXR1cm4gaXQtPnNlY29uZC0+Q2xv
bmUoKTsKICAgICB9IGVsc2UgewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9t
b2NrX2NoYW5uZWxpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3Rlc3QvbW9ja19jaGFubmVsaW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMz
MmE4ZmI4ZDk3OWMwNWQ5OTAwNGNkMWQ0NGM0MmJiZjRlZGQ2MAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja19j
aGFubmVsaW50ZXJmYWNlLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKwor
I2lmbmRlZiBQQ19URVNUX01PQ0tfQ0hBTk5FTElOVEVSRkFDRV9IXworI2RlZmluZSBQQ19URVNU
X01PQ0tfQ0hBTk5FTElOVEVSRkFDRV9IXworCisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVk
ZSAicGMvY2hhbm5lbGludGVyZmFjZS5oIgorI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKKworbmFt
ZXNwYWNlIGNyaWNrZXQgeworCisvLyBNb2NrIGNsYXNzIGZvciBCYXNlQ2hhbm5lbC4KKy8vIFVz
ZSB0aGlzIGNsYXNzIGluIHVuaXQgdGVzdHMgdG8gYXZvaWQgZGVwZW5kZWN5IG9uIGEgc3BlY2lm
aWMKKy8vIGltcGxlbWVudGF0aW9uIG9mIEJhc2VDaGFubmVsLgorY2xhc3MgTW9ja0NoYW5uZWxJ
bnRlcmZhY2UgOiBwdWJsaWMgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSB7CisgcHVibGljOgor
ICBNT0NLX0NPTlNUX01FVEhPRDAobWVkaWFfdHlwZSwgY3JpY2tldDo6TWVkaWFUeXBlKCkpOwor
ICBNT0NLX0NPTlNUX01FVEhPRDAobWVkaWFfY2hhbm5lbCwgTWVkaWFDaGFubmVsKigpKTsKKyAg
TU9DS19DT05TVF9NRVRIT0QwKHRyYW5zcG9ydF9uYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYoKSk7
CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChjb250ZW50X25hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJigp
KTsKKyAgTU9DS19DT05TVF9NRVRIT0QwKGVuYWJsZWQsIGJvb2woKSk7CisgIE1PQ0tfTUVUSE9E
MShFbmFibGUsIGJvb2woYm9vbCkpOworICBNT0NLX01FVEhPRDAoU2lnbmFsRmlyc3RQYWNrZXRS
ZWNlaXZlZCwKKyAgICAgICAgICAgICAgIHNpZ3Nsb3Q6OnNpZ25hbDE8Q2hhbm5lbEludGVyZmFj
ZSo+JigpKTsKKyAgTU9DS19NRVRIT0QzKFNldExvY2FsQ29udGVudCwKKyAgICAgICAgICAgICAg
IGJvb2woY29uc3QgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qLAorICAgICAgICAg
ICAgICAgICAgICB3ZWJydGM6OlNkcFR5cGUsCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nKikpOworICBNT0NLX01FVEhPRDMoU2V0UmVtb3RlQ29udGVudCwKKyAgICAgICAgICAgICAg
IGJvb2woY29uc3QgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qLAorICAgICAgICAg
ICAgICAgICAgICB3ZWJydGM6OlNkcFR5cGUsCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nKikpOworICBNT0NLX01FVEhPRDEoU2V0UnRwVHJhbnNwb3J0LCBib29sKHdlYnJ0Yzo6UnRw
VHJhbnNwb3J0SW50ZXJuYWwqKSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY3JpY2tldAorCisj
ZW5kaWYgIC8vIFBDX1RFU1RfTU9DS19DSEFOTkVMSU5URVJGQUNFX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2tfcnRw
cmVjZWl2ZXJpbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvdGVzdC9tb2NrX3J0cHJlY2VpdmVyaW50ZXJuYWwuaAppbmRleCA4NTBkNWE5Zjhl
NTk5MGQwMTBmZDEzNWM5OGUwNTUxMDFiY2NjYTFhLi44NGIwZDcxNzY2Yjk3MDVlNTViNWViNDA4
ZGJiODFjODI0NTU2NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2tfcnRwcmVjZWl2ZXJpbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja19ydHBy
ZWNlaXZlcmludGVybmFsLmgKQEAgLTQxLDggKzQxLDcgQEAgY2xhc3MgTW9ja1J0cFJlY2VpdmVy
SW50ZXJuYWwgOiBwdWJsaWMgUnRwUmVjZWl2ZXJJbnRlcm5hbCB7CiAKICAgLy8gUnRwUmVjZWl2
ZXJJbnRlcm5hbCBtZXRob2RzLgogICBNT0NLX01FVEhPRDAoU3RvcCwgdm9pZCgpKTsKLSAgTU9D
S19NRVRIT0QxKFNldFZvaWNlTWVkaWFDaGFubmVsLCB2b2lkKGNyaWNrZXQ6OlZvaWNlTWVkaWFD
aGFubmVsKikpOwotICBNT0NLX01FVEhPRDEoU2V0VmlkZW9NZWRpYUNoYW5uZWwsIHZvaWQoY3Jp
Y2tldDo6VmlkZW9NZWRpYUNoYW5uZWwqKSk7CisgIE1PQ0tfTUVUSE9EMShTZXRNZWRpYUNoYW5u
ZWwsIHZvaWQoY3JpY2tldDo6TWVkaWFDaGFubmVsKikpOwogICBNT0NLX01FVEhPRDEoU2V0dXBN
ZWRpYUNoYW5uZWwsIHZvaWQodWludDMyX3QpKTsKICAgTU9DS19DT05TVF9NRVRIT0QwKHNzcmMs
IHVpbnQzMl90KCkpOwogICBNT0NLX01FVEhPRDAoTm90aWZ5Rmlyc3RQYWNrZXRSZWNlaXZlZCwg
dm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3Rlc3QvbW9ja19ydHBzZW5kZXJpbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrX3J0cHNlbmRlcmludGVybmFs
LmgKaW5kZXggNWUxNGY3YWQ3ZGU2MjVjNDhiMmE4ZGUyNTgyNjYyZjQ2NWIwODI2OS4uZGQ0ZjY5
NDk3ZGY0MTI5MTYxMGMxNTdhYzM3MGRkOWQzYzBhNzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrX3J0cHNlbmRlcmlu
dGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvdGVzdC9tb2NrX3J0cHNlbmRlcmludGVybmFsLmgKQEAgLTM5LDggKzM5LDcgQEAgY2xhc3Mg
TW9ja1J0cFNlbmRlckludGVybmFsIDogcHVibGljIFJ0cFNlbmRlckludGVybmFsIHsKICAgICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFj
ZT4oKSk7CiAKICAgLy8gUnRwU2VuZGVySW50ZXJuYWwgbWV0aG9kcy4KLSAgTU9DS19NRVRIT0Qx
KFNldFZvaWNlTWVkaWFDaGFubmVsLCB2b2lkKGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKikp
OwotICBNT0NLX01FVEhPRDEoU2V0VmlkZW9NZWRpYUNoYW5uZWwsIHZvaWQoY3JpY2tldDo6Vmlk
ZW9NZWRpYUNoYW5uZWwqKSk7CisgIE1PQ0tfTUVUSE9EMShTZXRNZWRpYUNoYW5uZWwsIHZvaWQo
Y3JpY2tldDo6TWVkaWFDaGFubmVsKikpOwogICBNT0NLX01FVEhPRDEoU2V0U3NyYywgdm9pZCh1
aW50MzJfdCkpOwogICBNT0NLX01FVEhPRDEoc2V0X3N0cmVhbV9pZHMsIHZvaWQoY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+JikpOwogICBNT0NLX01FVEhPRDEoc2V0X2luaXRfc2VuZF9l
bmNvZGluZ3MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy90ZXN0L21vY2twZWVyY29ubmVjdGlvbm9ic2VydmVycy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrcGVlcmNvbm5lY3Rp
b25vYnNlcnZlcnMuaAppbmRleCA2ZjVlOWJjNjY1MjU5ZTcxMGIzNjhjZGI0ZDZlNTk5MDhjMDYy
MGY4Li42MmMwYzk0MTVmNmM0MTgzYmVjZTEyNzg4NzBlMmIwNjdhZDQzOTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2tw
ZWVyY29ubmVjdGlvbm9ic2VydmVycy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja3BlZXJjb25uZWN0aW9ub2JzZXJ2ZXJzLmgKQEAg
LTY3LDYgKzY3LDcgQEAgY2xhc3MgTW9ja1BlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgOiBwdWJsaWMg
UGVlckNvbm5lY3Rpb25PYnNlcnZlciB7CiAgIH0KICAgdm9pZCBPblNpZ25hbGluZ0NoYW5nZSgK
ICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpTaWduYWxpbmdTdGF0ZSBuZXdfc3RhdGUp
IG92ZXJyaWRlIHsKKyAgICBSVENfRENIRUNLKHBjXyk7CiAgICAgUlRDX0RDSEVDSyhwY18tPnNp
Z25hbGluZ19zdGF0ZSgpID09IG5ld19zdGF0ZSk7CiAgICAgc3RhdGVfID0gbmV3X3N0YXRlOwog
ICB9CkBAIC05Miw2ICs5Myw3IEBAIGNsYXNzIE1vY2tQZWVyQ29ubmVjdGlvbk9ic2VydmVyIDog
cHVibGljIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgewogCiAgIHZvaWQgT25JY2VDb25uZWN0aW9u
Q2hhbmdlKAogICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0
ZSBuZXdfc3RhdGUpIG92ZXJyaWRlIHsKKyAgICBSVENfRENIRUNLKHBjXyk7CiAgICAgUlRDX0RD
SEVDSyhwY18tPmljZV9jb25uZWN0aW9uX3N0YXRlKCkgPT0gbmV3X3N0YXRlKTsKICAgICAvLyBX
aGVuIElDRSBpcyBmaW5pc2hlZCwgdGhlIGNhbGxlciB3aWxsIGdldCB0byBhIGtJY2VDb25uZWN0
aW9uQ29tcGxldGVkCiAgICAgLy8gc3RhdGUsIGJlY2F1c2UgaXQgaGFzIHRoZSBJQ0UgY29udHJv
bGxpbmcgcm9sZSwgd2hpbGUgdGhlIGNhbGxlZQpAQCAtMTA0LDEyICsxMDYsMTQgQEAgY2xhc3Mg
TW9ja1BlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25PYnNlcnZl
ciB7CiAgIH0KICAgdm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZSgKICAgICAgIFBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0ZSBuZXdfc3RhdGUpIG92ZXJyaWRlIHsKKyAg
ICBSVENfRENIRUNLKHBjXyk7CiAgICAgUlRDX0RDSEVDSyhwY18tPmljZV9nYXRoZXJpbmdfc3Rh
dGUoKSA9PSBuZXdfc3RhdGUpOwogICAgIGljZV9nYXRoZXJpbmdfY29tcGxldGVfID0KICAgICAg
ICAgbmV3X3N0YXRlID09IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlR2F0aGVyaW5nQ29t
cGxldGU7CiAgICAgY2FsbGJhY2tfdHJpZ2dlcmVkXyA9IHRydWU7CiAgIH0KICAgdm9pZCBPbklj
ZUNhbmRpZGF0ZShjb25zdCBJY2VDYW5kaWRhdGVJbnRlcmZhY2UqIGNhbmRpZGF0ZSkgb3ZlcnJp
ZGUgeworICAgIFJUQ19EQ0hFQ0socGNfKTsKICAgICBSVENfRENIRUNLKFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjprSWNlR2F0aGVyaW5nTmV3ICE9CiAgICAgICAgICAgICAgICBwY18tPmljZV9n
YXRoZXJpbmdfc3RhdGUoKSk7CiAgICAgY2FuZGlkYXRlc18ucHVzaF9iYWNrKGFic2w6Om1ha2Vf
dW5pcXVlPEpzZXBJY2VDYW5kaWRhdGU+KApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9wZWVyY29ubmVjdGlvbnRlc3R3cmFwcGVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9w
ZWVyY29ubmVjdGlvbnRlc3R3cmFwcGVyLmNjCmluZGV4IDliZTE1OTYzNzNjNjgxYWQ0MjBjNTY4
OGQ4MGM1NjAwMzM3M2E3ZjQuLmExZGI5ZWQ5ZTZmMzBjM2UwNzI2OTU0OTRlMDhjNWE2OGY5ZWIw
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3Rlc3QvcGVlcmNvbm5lY3Rpb250ZXN0d3JhcHBlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L3BlZXJjb25uZWN0aW9udGVzdHdy
YXBwZXIuY2MKQEAgLTEyLDYgKzEyLDcgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5o
IgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVk
aW9fcHJvY2Vzc2luZy5oIgpAQCAtMjIsNiArMjMsNyBAQAogI2luY2x1ZGUgInBjL3Rlc3QvbW9j
a3BlZXJjb25uZWN0aW9ub2JzZXJ2ZXJzLmgiCiAjaW5jbHVkZSAicGMvdGVzdC9wZWVyY29ubmVj
dGlvbnRlc3R3cmFwcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGls
cy5oIgogCiB1c2luZyB3ZWJydGM6OkZha2VDb25zdHJhaW50czsKQEAgLTY0LDkgKzY2LDIwIEBA
IFBlZXJDb25uZWN0aW9uVGVzdFdyYXBwZXI6OlBlZXJDb25uZWN0aW9uVGVzdFdyYXBwZXIoCiAg
ICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQpCiAgICAgOiBuYW1lXyhuYW1lKSwKICAgICAg
IG5ldHdvcmtfdGhyZWFkXyhuZXR3b3JrX3RocmVhZCksCi0gICAgICB3b3JrZXJfdGhyZWFkXyh3
b3JrZXJfdGhyZWFkKSB7fQorICAgICAgd29ya2VyX3RocmVhZF8od29ya2VyX3RocmVhZCkgewor
ICBwY190aHJlYWRfY2hlY2tlcl8uRGV0YWNoRnJvbVRocmVhZCgpOworfQogCi1QZWVyQ29ubmVj
dGlvblRlc3RXcmFwcGVyOjp+UGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcigpIHt9CitQZWVyQ29u
bmVjdGlvblRlc3RXcmFwcGVyOjp+UGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcigpIHsKKyAgUlRD
X0RDSEVDS19SVU5fT04oJnBjX3RocmVhZF9jaGVja2VyXyk7CisgIC8vIEVpdGhlciBuZXR3b3Jr
X3RocmVhZCBvciB3b3JrZXJfdGhyZWFkIG1pZ2h0IGJlIGFjdGl2ZSBhdCB0aGlzIHBvaW50Lgor
ICAvLyBSZWx5aW5nIG9uIH5QZWVyQ29ubmVjdGlvbiB0byBwcm9wZXJseSB3YWl0IGZvciB0aGVt
IGRvZXNuJ3Qgd29yaywKKyAgLy8gYXMgYSB2cHRyIHJhY2UgbWlnaHQgb2NjdXIgKGJlZm9yZSB3
ZSBlbnRlciB0aGUgZGVzdHJ1Y3Rpb24gYm9keSkuCisgIC8vIFNlZTogYnVncy53ZWJydGMub3Jn
Lzk4NDcKKyAgaWYgKHBjKCkpIHsKKyAgICBwYygpLT5DbG9zZSgpOworICB9Cit9CiAKIGJvb2wg
UGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcjo6Q3JlYXRlUGMoCiAgICAgY29uc3Qgd2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYgY29uZmlnLApAQCAtNzUs
NiArODgsOCBAQCBib29sIFBlZXJDb25uZWN0aW9uVGVzdFdyYXBwZXI6OkNyZWF0ZVBjKAogICBz
dGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6UG9ydEFsbG9jYXRvcj4gcG9ydF9hbGxvY2F0b3IoCiAg
ICAgICBuZXcgY3JpY2tldDo6RmFrZVBvcnRBbGxvY2F0b3IobmV0d29ya190aHJlYWRfLCBudWxs
cHRyKSk7CiAKKyAgUlRDX0RDSEVDS19SVU5fT04oJnBjX3RocmVhZF9jaGVja2VyXyk7CisKICAg
ZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZV8gPSBGYWtlQXVkaW9DYXB0dXJlTW9kdWxlOjpDcmVh
dGUoKTsKICAgaWYgKGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGVfID09IE5VTEwpIHsKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy90ZXN0L3BlZXJjb25uZWN0aW9udGVzdHdyYXBwZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvcGVlcmNvbm5lY3Rpb250
ZXN0d3JhcHBlci5oCmluZGV4IDIxYmE4OWFjYmYwNzMwNTgzOWE1MWQ1MTk4ZmFkNGRkODkxMTFm
NTIuLmI2YTU3ZjM1ZDM4MjMzMTFiYTVmM2QzZDdmNjY0NmZmMDdkMjA4ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvcGVlcmNv
bm5lY3Rpb250ZXN0d3JhcHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3Rlc3QvcGVlcmNvbm5lY3Rpb250ZXN0d3JhcHBlci5oCkBAIC0yMCw2
ICsyMCw3IEBACiAjaW5jbHVkZSAicGMvdGVzdC9mYWtlYXVkaW9jYXB0dXJlbW9kdWxlLmgiCiAj
aW5jbHVkZSAicGMvdGVzdC9mYWtldmlkZW90cmFja3JlbmRlcmVyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
dGhyZWFkX2NoZWNrZXIuaCIKIAogY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcgogICAg
IDogcHVibGljIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciwKQEAgLTEwNiw2ICsxMDcs
NyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyCiAgIHN0ZDo6c3RyaW5nIG5hbWVf
OwogICBydGM6OlRocmVhZCogY29uc3QgbmV0d29ya190aHJlYWRfOwogICBydGM6OlRocmVhZCog
Y29uc3Qgd29ya2VyX3RocmVhZF87CisgIHJ0Yzo6VGhyZWFkQ2hlY2tlciBwY190aHJlYWRfY2hl
Y2tlcl87CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlPiBwZWVyX2Nvbm5lY3Rpb25fOwogICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVy
Q29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+CiAgICAgICBwZWVyX2Nvbm5lY3Rpb25fZmFjdG9y
eV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy92aWRlb2NhcHR1cmVydHJhY2tzb3VyY2VfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy92aWRlb2NhcHR1cmVydHJhY2tzb3VyY2Vf
dW5pdHRlc3QuY2MKaW5kZXggZDJiOGUxNTc0Y2ViZDA4M2Q2MjM3MmRjMjQ4Y2U3ZWM2NDhjZTg4
Yy4uNjdiZWMzNDViNjk3YTRhNzI1YTMzMjQ0M2ZhNTBjM2M5NjFlMWVjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdmlkZW9jYXB0dXJl
cnRyYWNrc291cmNlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3ZpZGVvY2FwdHVyZXJ0cmFja3NvdXJjZV91bml0dGVzdC5jYwpA
QCAtMTI2LDcgKzEyNiw3IEBAIGNsYXNzIFZpZGVvQ2FwdHVyZXJUcmFja1NvdXJjZVRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgIH0KIAogICB2b2lkIENhcHR1cmVTaW5nbGVGcmFtZSgp
IHsKLSAgICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgICAgcnRjOjpFdmVudCBl
dmVudDsKICAgICB0YXNrX3F1ZXVlXy5Qb3N0VGFzayhbdGhpcywgJmV2ZW50XSgpIHsKICAgICAg
IEFTU0VSVF9UUlVFKGNhcHR1cmVyXy0+Q2FwdHVyZUZyYW1lKCkpOwogICAgICAgZXZlbnQuU2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy92aWRlb3RyYWNrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy92aWRlb3RyYWNrLmgKaW5kZXggZTY2OWUwODE0YzcyNTNlMGE4NzM3NzRmODkzM2Ez
NDIxNmJiNTUwZC4uZjExOWRkODZkODNkZTY4MDZkNjNkMDcyYTdlYTNlMjk4ODI2NDdiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdmlk
ZW90cmFjay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3ZpZGVvdHJhY2suaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgIm1lZGlhL2Jhc2Uv
dmlkZW9zb3VyY2ViYXNlLmgiCiAjaW5jbHVkZSAicGMvbWVkaWFzdHJlYW10cmFjay5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhy
ZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy92aWRlb3RyYWNrc291cmNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy92aWRlb3RyYWNrc291cmNlLmgKaW5kZXggNTA0ODhkZDJjNjAx
MWQzMzZhYmU5YmJhMjc3ZTEwZjY0NjQ2N2U1My4uY2VkYjc1YjNjODhkZDczMGY2Mzg3NTk1ZTFi
MTZhMGE2MmFkYTk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvdmlkZW90cmFja3NvdXJjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3ZpZGVvdHJhY2tzb3VyY2UuaApAQCAtMTUsMTMg
KzE1LDE0IEBACiAjaW5jbHVkZSAiYXBpL25vdGlmaWVyLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVv
L3ZpZGVvX3NpbmtfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNoYW5u
ZWwuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBW
aWRlb1RyYWNrU291cmNlIGlzIGEgY29udmVuaWVuY2UgYmFzZSBjbGFzcyBmb3IgaW1wbGVtZW50
YXRpb25zIG9mCiAvLyBWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlLgotY2xhc3MgVmlkZW9UcmFj
a1NvdXJjZSA6IHB1YmxpYyBOb3RpZmllcjxWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlPiB7Citj
bGFzcyBSVENfRVhQT1JUIFZpZGVvVHJhY2tTb3VyY2UgOiBwdWJsaWMgTm90aWZpZXI8VmlkZW9U
cmFja1NvdXJjZUludGVyZmFjZT4gewogIHB1YmxpYzoKICAgZXhwbGljaXQgVmlkZW9UcmFja1Nv
dXJjZShib29sIHJlbW90ZSk7CiAgIHZvaWQgU2V0U3RhdGUoU291cmNlU3RhdGUgbmV3X3N0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3dlYnJ0Y3NkcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3dlYnJ0Y3NkcC5jYwppbmRleCA2NjViNGQ0MTFhMDUwYTk4NDMwZjI2ZDRmNGZhYjM0
N2YwYmE0N2E4Li4wY2Q2YmVjZWVmYTM3N2RmZmU3ZjkzNGI5ZTViOTY2MzUwNDZjNTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJy
dGNzZHAuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvd2VicnRjc2RwLmNjCkBAIC0yMCwxMyArMjAsMTUgQEAKICNpbmNsdWRlIDxzZXQ+CiAjaW5j
bHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CisjaW5jbHVkZSA8dXRpbGl0
eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJhcGkvbWVkaWF0eXBlcy5oIgorI2lu
Y2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS9jYW5kaWRhdGUuaCIK
ICNpbmNsdWRlICJhcGkvY3J5cHRvcGFyYW1zLmgiCiAjaW5jbHVkZSAiYXBpL2pzZXBpY2VjYW5k
aWRhdGUuaCIKICNpbmNsdWRlICJhcGkvanNlcHNlc3Npb25kZXNjcmlwdGlvbi5oIgorI2luY2x1
ZGUgImFwaS9tZWRpYXR5cGVzLmgiCiAvLyBmb3IgUnRwRXh0ZW5zaW9uCiAjaW5jbHVkZSAiYXBp
L3J0cHBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2NvZGVjLmgiCkBAIC0xMTks
NiArMTIxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIga0F0dHJpYnV0ZVJ0Y3BNdXhbXSA9ICJydGNw
LW11eCI7CiBzdGF0aWMgY29uc3QgY2hhciBrQXR0cmlidXRlUnRjcFJlZHVjZWRTaXplW10gPSAi
cnRjcC1yc2l6ZSI7CiBzdGF0aWMgY29uc3QgY2hhciBrQXR0cmlidXRlU3NyY1tdID0gInNzcmMi
Owogc3RhdGljIGNvbnN0IGNoYXIga1NzcmNBdHRyaWJ1dGVDbmFtZVtdID0gImNuYW1lIjsKK3N0
YXRpYyBjb25zdCBjaGFyIGtBdHRyaWJ1dGVFeHRtYXBBbGxvd01peGVkW10gPSAiZXh0bWFwLWFs
bG93LW1peGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIGtBdHRyaWJ1dGVFeHRtYXBbXSA9ICJleHRt
YXAiOwogLy8gZHJhZnQtYWx2ZXN0cmFuZC1tbXVzaWMtbXNpZC0wMQogLy8gYT1tc2lkLXNlbWFu
dGljOiBXTVMKQEAgLTMzNCw5ICszMzcsMTAgQEAgc3RhdGljIGJvb2wgUGFyc2VJY2VPcHRpb25z
KGNvbnN0IHN0ZDo6c3RyaW5nJiBsaW5lLAogc3RhdGljIGJvb2wgUGFyc2VFeHRtYXAoY29uc3Qg
c3RkOjpzdHJpbmcmIGxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICBSdHBFeHRlbnNpb24q
IGV4dG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yKTsK
LXN0YXRpYyBib29sIFBhcnNlRmluZ2VycHJpbnRBdHRyaWJ1dGUoY29uc3Qgc3RkOjpzdHJpbmcm
IGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6U1NMRmlu
Z2VycHJpbnQqKiBmaW5nZXJwcmludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2RwUGFyc2VFcnJvciogZXJyb3IpOworc3RhdGljIGJvb2wgUGFyc2VGaW5nZXJwcmlu
dEF0dHJpYnV0ZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbGluZSwKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4qIGZpbmdlcnByaW50LAorICAgIFNkcFBhcnNlRXJy
b3IqIGVycm9yKTsKIHN0YXRpYyBib29sIFBhcnNlRHRsc1NldHVwKGNvbnN0IHN0ZDo6c3RyaW5n
JiBsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6Q29ubmVjdGlvblJv
bGUqIHJvbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBQYXJzZUVycm9yKiBlcnJv
cik7CkBAIC04NTIsNiArODU2LDEyIEBAIHN0ZDo6c3RyaW5nIFNkcFNlcmlhbGl6ZShjb25zdCBK
c2VwU2Vzc2lvbkRlc2NyaXB0aW9uJiBqZGVzYykgewogICAgIEFkZExpbmUoZ3JvdXBfbGluZSwg
Jm1lc3NhZ2UpOwogICB9CiAKKyAgLy8gTWl4ZWQgb25lLSBhbmQgdHdvLWJ5dGUgaGVhZGVyIGV4
dGVuc2lvbi4KKyAgaWYgKGRlc2MtPmV4dG1hcF9hbGxvd19taXhlZCgpKSB7CisgICAgSW5pdEF0
dHJMaW5lKGtBdHRyaWJ1dGVFeHRtYXBBbGxvd01peGVkLCAmb3MpOworICAgIEFkZExpbmUob3Mu
c3RyKCksICZtZXNzYWdlKTsKKyAgfQorCiAgIC8vIE1lZGlhU3RyZWFtIHNlbWFudGljcwogICBJ
bml0QXR0ckxpbmUoa0F0dHJpYnV0ZU1zaWRTZW1hbnRpY3MsICZvcyk7CiAgIG9zIDw8IGtTZHBE
ZWxpbWl0ZXJDb2xvbiA8PCAiICIgPDwga01lZGlhU3RyZWFtU2VtYW50aWM7CkBAIC0xMzAzLDgg
KzEzMTMsOCBAQCB2b2lkIEJ1aWxkTWVkaWFEZXNjcmlwdGlvbihjb25zdCBDb250ZW50SW5mbyog
Y29udGVudF9pbmZvLAogCiAgICAgICBpZiAoZGF0YV9kZXNjLT51c2Vfc2N0cG1hcCgpKSB7CiAg
ICAgICAgIGZvciAoY29uc3QgY3JpY2tldDo6RGF0YUNvZGVjJiBjb2RlYyA6IGRhdGFfZGVzYy0+
Y29kZWNzKCkpIHsKLSAgICAgICAgICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGNvZGVjLm5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjprR29vZ2xl
U2N0cERhdGFDb2RlY05hbWUpICYmCisgICAgICAgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNh
c2UoY29kZWMubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlj
a2V0OjprR29vZ2xlU2N0cERhdGFDb2RlY05hbWUpICYmCiAgICAgICAgICAgICAgIGNvZGVjLkdl
dFBhcmFtKGNyaWNrZXQ6OmtDb2RlY1BhcmFtUG9ydCwgJnNjdHBfcG9ydCkpIHsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgIH0KQEAgLTE0ODIsNyArMTQ5MiwxNyBAQCB2b2lkIEJ1aWxk
UnRwQ29udGVudEF0dHJpYnV0ZXMoY29uc3QgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIG1lZGlh
X2Rlc2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1zaWRfc2lnbmFsaW5n
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBtZXNzYWdlKSB7
CiAgIHJ0Yzo6U3RyaW5nQnVpbGRlciBvczsKLSAgLy8gUkZDIDUyODUKKyAgLy8gUkZDIDgyODUK
KyAgLy8gYT1leHRtYXAtYWxsb3ctbWl4ZWQKKyAgLy8gVGhlIGF0dHJpYnV0ZSBNVVNUIGJlIGVp
dGhlciBvbiBzZXNzaW9uIGxldmVsIG9yIG1lZGlhIGxldmVsLiBXZSBzdXBwb3J0CisgIC8vIHJl
c3BvbmRpbmcgb24gYm90aCBsZXZlbHMsIGhvd2V2ZXIsIHdlIGRvbid0IHJlc3BvbmQgb24gbWVk
aWEgbGV2ZWwgaWYgaXQncworICAvLyBzZXQgb24gc2Vzc2lvbiBsZXZlbC4KKyAgaWYgKG1lZGlh
X2Rlc2MtPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkgPT0KKyAgICAgIE1lZGlhQ29udGVudERl
c2NyaXB0aW9uOjprTWVkaWEpIHsKKyAgICBJbml0QXR0ckxpbmUoa0F0dHJpYnV0ZUV4dG1hcEFs
bG93TWl4ZWQsICZvcyk7CisgICAgQWRkTGluZShvcy5zdHIoKSwgbWVzc2FnZSk7CisgIH0KKyAg
Ly8gUkZDIDgyODUKICAgLy8gYT1leHRtYXA6PHZhbHVlPlsiLyI8ZGlyZWN0aW9uPl0gPFVSST4g
PGV4dGVuc2lvbmF0dHJpYnV0ZXM+CiAgIC8vIFRoZSBkZWZpbml0aW9ucyBNVVNUIGJlIGVpdGhl
ciBhbGwgc2Vzc2lvbiBsZXZlbCBvciBhbGwgbWVkaWEgbGV2ZWwuIFRoaXMKICAgLy8gaW1wbGVt
ZW50YXRpb24gdXNlcyBhbGwgbWVkaWEgbGV2ZWwuCkBAIC0xNjA5LDcgKzE2MjksMTIgQEAgdm9p
ZCBCdWlsZFJ0cENvbnRlbnRBdHRyaWJ1dGVzKGNvbnN0IE1lZGlhQ29udGVudERlc2NyaXB0aW9u
KiBtZWRpYV9kZXNjLAogICAgICAgICAvLyBTaW5jZSBhPXNzcmMgbXNpZCBzaWduYWxpbmcgaXMg
dXNlZCBpbiBQbGFuIEIgU0RQIHNlbWFudGljcywgYW5kCiAgICAgICAgIC8vIG11bHRpcGxlIHN0
cmVhbSBpZHMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIFBsYW4gQiwgd2UgYXJlIG9ubHkgYWRkaW5n
CiAgICAgICAgIC8vIGEgbGluZSBmb3IgdGhlIGZpcnN0IG1lZGlhIHN0cmVhbSBpZCBoZXJlLgot
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3RyZWFtX2lkID0gdHJhY2suZmlyc3Rfc3RyZWFt
X2lkKCk7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFja19zdHJlYW1faWQgPSB0cmFj
ay5maXJzdF9zdHJlYW1faWQoKTsKKyAgICAgICAgLy8gV2UgdXNlIGEgc3BlY2lhbCBtc2lkLWlk
IHZhbHVlIG9mICItIiB0byByZXByZXNlbnQgbm8gc3RyZWFtcywKKyAgICAgICAgLy8gZm9yIFVu
aWZpZWQgUGxhbiBjb21wYXRpYmlsaXR5LiBQbGFuIEIgd2lsbCBhbHdheXMgaGF2ZSBhCisgICAg
ICAgIC8vIHRyYWNrX3N0cmVhbV9pZC4KKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmVh
bV9pZCA9CisgICAgICAgICAgICB0cmFja19zdHJlYW1faWQuZW1wdHkoKSA/IGtOb1N0cmVhbU1z
aWQgOiB0cmFja19zdHJlYW1faWQ7CiAgICAgICAgIEluaXRBdHRyTGluZShrQXR0cmlidXRlU3Ny
YywgJm9zKTsKICAgICAgICAgb3MgPDwga1NkcERlbGltaXRlckNvbG9uIDw8IHNzcmMgPDwga1Nk
cERlbGltaXRlclNwYWNlCiAgICAgICAgICAgIDw8IGtTc3JjQXR0cmlidXRlTXNpZCA8PCBrU2Rw
RGVsaW1pdGVyQ29sb24gPDwgc3RyZWFtX2lkCkBAIC0xNzI3LDcgKzE3NTIsNyBAQCB2b2lkIEFk
ZFJ0Y3BGYkxpbmVzKGNvbnN0IFQmIGNvZGVjLCBzdGQ6OnN0cmluZyogbWVzc2FnZSkgewogCiBi
b29sIEFkZFNjdHBEYXRhQ29kZWMoRGF0YUNvbnRlbnREZXNjcmlwdGlvbiogbWVkaWFfZGVzYywg
aW50IHNjdHBfcG9ydCkgewogICBmb3IgKGNvbnN0IGF1dG8mIGNvZGVjIDogbWVkaWFfZGVzYy0+
Y29kZWNzKCkpIHsKLSAgICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGNvZGVjLm5hbWUsIGNy
aWNrZXQ6OmtHb29nbGVTY3RwRGF0YUNvZGVjTmFtZSkpIHsKKyAgICBpZiAoYWJzbDo6RXF1YWxz
SWdub3JlQ2FzZShjb2RlYy5uYW1lLCBjcmlja2V0OjprR29vZ2xlU2N0cERhdGFDb2RlY05hbWUp
KSB7CiAgICAgICByZXR1cm4gUGFyc2VGYWlsZWQoIiIsICJDYW4ndCBoYXZlIG11bHRpcGxlIHNj
dHAgcG9ydCBhdHRyaWJ1dGVzLiIsIE5VTEwpOwogICAgIH0KICAgfQpAQCAtMTk5Niw3ICsyMDIx
LDcgQEAgYm9vbCBQYXJzZVNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgbWVz
c2FnZSwKICAgc3RkOjpzdHJpbmcgbGluZTsKIAogICBkZXNjLT5zZXRfbXNpZF9zdXBwb3J0ZWQo
ZmFsc2UpOwotCisgIGRlc2MtPnNldF9leHRtYXBfYWxsb3dfbWl4ZWQoZmFsc2UpOwogICAvLyBS
RkMgNDU2NgogICAvLyB2PSAgKHByb3RvY29sIHZlcnNpb24pCiAgIGlmICghR2V0TGluZVdpdGhU
eXBlKG1lc3NhZ2UsIHBvcywgJmxpbmUsIGtMaW5lVHlwZVZlcnNpb24pKSB7CkBAIC0yMTE3LDEx
ICsyMTQyLDExIEBAIGJvb2wgUGFyc2VTZXNzaW9uRGVzY3JpcHRpb24oY29uc3Qgc3RkOjpzdHJp
bmcmIG1lc3NhZ2UsCiAgICAgICAgICAgICAiQ2FuJ3QgaGF2ZSBtdWx0aXBsZSBmaW5nZXJwcmlu
dCBhdHRyaWJ1dGVzIGF0IHRoZSBzYW1lIGxldmVsLiIsCiAgICAgICAgICAgICBlcnJvcik7CiAg
ICAgICB9Ci0gICAgICBydGM6OlNTTEZpbmdlcnByaW50KiBmaW5nZXJwcmludCA9IE5VTEw7Cisg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4gZmluZ2VycHJpbnQ7CiAg
ICAgICBpZiAoIVBhcnNlRmluZ2VycHJpbnRBdHRyaWJ1dGUobGluZSwgJmZpbmdlcnByaW50LCBl
cnJvcikpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgfQotICAgICAgc2Vzc2lvbl90
ZC0+aWRlbnRpdHlfZmluZ2VycHJpbnQucmVzZXQoZmluZ2VycHJpbnQpOworICAgICAgc2Vzc2lv
bl90ZC0+aWRlbnRpdHlfZmluZ2VycHJpbnQgPSBzdGQ6Om1vdmUoZmluZ2VycHJpbnQpOwogICAg
IH0gZWxzZSBpZiAoSGFzQXR0cmlidXRlKGxpbmUsIGtBdHRyaWJ1dGVTZXR1cCkpIHsKICAgICAg
IGlmICghUGFyc2VEdGxzU2V0dXAobGluZSwgJihzZXNzaW9uX3RkLT5jb25uZWN0aW9uX3JvbGUp
LCBlcnJvcikpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjEzMyw2ICsyMTU4LDggQEAg
Ym9vbCBQYXJzZVNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwK
ICAgICAgIH0KICAgICAgIGRlc2MtPnNldF9tc2lkX3N1cHBvcnRlZCgKICAgICAgICAgICBDYXNl
SW5zZW5zaXRpdmVGaW5kKHNlbWFudGljcywga01lZGlhU3RyZWFtU2VtYW50aWMpKTsKKyAgICB9
IGVsc2UgaWYgKEhhc0F0dHJpYnV0ZShsaW5lLCBrQXR0cmlidXRlRXh0bWFwQWxsb3dNaXhlZCkp
IHsKKyAgICAgIGRlc2MtPnNldF9leHRtYXBfYWxsb3dfbWl4ZWQodHJ1ZSk7CiAgICAgfSBlbHNl
IGlmIChIYXNBdHRyaWJ1dGUobGluZSwga0F0dHJpYnV0ZUV4dG1hcCkpIHsKICAgICAgIFJ0cEV4
dGVuc2lvbiBleHRtYXA7CiAgICAgICBpZiAoIVBhcnNlRXh0bWFwKGxpbmUsICZleHRtYXAsIGVy
cm9yKSkgewpAQCAtMjE2Niw5ICsyMTkzLDEwIEBAIGJvb2wgUGFyc2VHcm91cEF0dHJpYnV0ZShj
b25zdCBzdGQ6OnN0cmluZyYgbGluZSwKICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29s
IFBhcnNlRmluZ2VycHJpbnRBdHRyaWJ1dGUoY29uc3Qgc3RkOjpzdHJpbmcmIGxpbmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQqKiBm
aW5nZXJwcmludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwUGFy
c2VFcnJvciogZXJyb3IpIHsKK3N0YXRpYyBib29sIFBhcnNlRmluZ2VycHJpbnRBdHRyaWJ1dGUo
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxpbmUsCisgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6
U1NMRmluZ2VycHJpbnQ+KiBmaW5nZXJwcmludCwKKyAgICBTZHBQYXJzZUVycm9yKiBlcnJvcikg
ewogICBpZiAoIUlzTGluZVR5cGUobGluZSwga0xpbmVUeXBlQXR0cmlidXRlcykgfHwKICAgICAg
ICFIYXNBdHRyaWJ1dGUobGluZSwga0F0dHJpYnV0ZUZpbmdlcnByaW50KSkgewogICAgIHJldHVy
biBQYXJzZUZhaWxlZEV4cGVjdExpbmUobGluZSwgMCwga0xpbmVUeXBlQXR0cmlidXRlcywKQEAg
LTIxOTQsNyArMjIyMiw4IEBAIHN0YXRpYyBib29sIFBhcnNlRmluZ2VycHJpbnRBdHRyaWJ1dGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIGxpbmUsCiAgICAgICAgICAgICAgICAgIDo6dG9sb3dlcik7CiAK
ICAgLy8gVGhlIHNlY29uZCBmaWVsZCBpcyB0aGUgZGlnZXN0IHZhbHVlLiBEZS1oZXhpZnkgaXQu
Ci0gICpmaW5nZXJwcmludCA9IHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21SZmM0NTcy
KGFsZ29yaXRobSwgZmllbGRzWzFdKTsKKyAgKmZpbmdlcnByaW50ID0KKyAgICAgIHJ0Yzo6U1NM
RmluZ2VycHJpbnQ6OkNyZWF0ZVVuaXF1ZUZyb21SZmM0NTcyKGFsZ29yaXRobSwgZmllbGRzWzFd
KTsKICAgaWYgKCEqZmluZ2VycHJpbnQpIHsKICAgICByZXR1cm4gUGFyc2VGYWlsZWQobGluZSwg
IkZhaWxlZCB0byBjcmVhdGUgZmluZ2VycHJpbnQgZnJvbSB0aGUgZGlnZXN0LiIsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGVycm9yKTsKQEAgLTI4MzQsMTIgKzI4NjMsMTEgQEAgYm9vbCBQYXJz
ZUNvbnRlbnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgIH0KICAgICB9IGVsc2UgaWYgKEhhc0F0dHJpYnV0ZShsaW5lLCBrQXR0cmlidXRl
RmluZ2VycHJpbnQpKSB7Ci0gICAgICBydGM6OlNTTEZpbmdlcnByaW50KiBmaW5nZXJwcmludCA9
IE5VTEw7Ci0KKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTEZpbmdlcnByaW50PiBmaW5n
ZXJwcmludDsKICAgICAgIGlmICghUGFyc2VGaW5nZXJwcmludEF0dHJpYnV0ZShsaW5lLCAmZmlu
Z2VycHJpbnQsIGVycm9yKSkgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICB9Ci0gICAg
ICB0cmFuc3BvcnQtPmlkZW50aXR5X2ZpbmdlcnByaW50LnJlc2V0KGZpbmdlcnByaW50KTsKKyAg
ICAgIHRyYW5zcG9ydC0+aWRlbnRpdHlfZmluZ2VycHJpbnQgPSBzdGQ6Om1vdmUoZmluZ2VycHJp
bnQpOwogICAgIH0gZWxzZSBpZiAoSGFzQXR0cmlidXRlKGxpbmUsIGtBdHRyaWJ1dGVTZXR1cCkp
IHsKICAgICAgIGlmICghUGFyc2VEdGxzU2V0dXAobGluZSwgJih0cmFuc3BvcnQtPmNvbm5lY3Rp
b25fcm9sZSksIGVycm9yKSkgewogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yOTAyLDYgKzI5
MzAsOSBAQCBib29sIFBhcnNlQ29udGVudChjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKICAg
ICAgICAgbWVkaWFfZGVzYy0+c2V0X2RpcmVjdGlvbihSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6
a0luYWN0aXZlKTsKICAgICAgIH0gZWxzZSBpZiAoSGFzQXR0cmlidXRlKGxpbmUsIGtBdHRyaWJ1
dGVTZW5kUmVjdikpIHsKICAgICAgICAgbWVkaWFfZGVzYy0+c2V0X2RpcmVjdGlvbihSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbjo6a1NlbmRSZWN2KTsKKyAgICAgIH0gZWxzZSBpZiAoSGFzQXR0cmli
dXRlKGxpbmUsIGtBdHRyaWJ1dGVFeHRtYXBBbGxvd01peGVkKSkgeworICAgICAgICBtZWRpYV9k
ZXNjLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oCisgICAgICAgICAgICBNZWRpYUNvbnRl
bnREZXNjcmlwdGlvbjo6a01lZGlhKTsKICAgICAgIH0gZWxzZSBpZiAoSGFzQXR0cmlidXRlKGxp
bmUsIGtBdHRyaWJ1dGVFeHRtYXApKSB7CiAgICAgICAgIFJ0cEV4dGVuc2lvbiBleHRtYXA7CiAg
ICAgICAgIGlmICghUGFyc2VFeHRtYXAobGluZSwgJmV4dG1hcCwgZXJyb3IpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNz
ZHAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0
Y3NkcC5oCmluZGV4IDJkODQyYTFkNWQ0YjgwOTFiYjc0YTk0Zjk2ZWZhYjYwOWQwNzdkMjkuLmYx
ODVjMDg5MzIwMDg5OGJkMTcwNjUxOWYxYjY1OWQ1ZjQ5NmIyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcC5o
CkBAIC0yMiw2ICsyMiw4IEBACiAKICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJydGNf
YmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgorCiBuYW1lc3BhY2UgY3JpY2tldCB7CiBjbGFzcyBD
YW5kaWRhdGU7CiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApAQCAtNDYsNyArNDgsOCBAQCBzdGQ6
OnN0cmluZyBTZHBTZXJpYWxpemVDYW5kaWRhdGUoY29uc3QgSWNlQ2FuZGlkYXRlSW50ZXJmYWNl
JiBjYW5kaWRhdGUpOwogCiAvLyBTZXJpYWxpemVzIGEgY3JpY2tldCBDYW5kaWRhdGUuCiAvLyBj
YW5kaWRhdGUgLSBUaGUgY2FuZGlkYXRlIHRvIGJlIHNlcmlhbGl6ZWQuCi1zdGQ6OnN0cmluZyBT
ZHBTZXJpYWxpemVDYW5kaWRhdGUoY29uc3QgY3JpY2tldDo6Q2FuZGlkYXRlJiBjYW5kaWRhdGUp
OworUlRDX0VYUE9SVCBzdGQ6OnN0cmluZyBTZHBTZXJpYWxpemVDYW5kaWRhdGUoCisgICAgY29u
c3QgY3JpY2tldDo6Q2FuZGlkYXRlJiBjYW5kaWRhdGUpOwogCiAvLyBEZXNlcmlhbGl6ZXMgdGhl
IHBhc3NlZCBpbiBTRFAgc3RyaW5nIHRvIGEgSnNlcFNlc3Npb25EZXNjcmlwdGlvbi4KIC8vIG1l
c3NhZ2UgLSBTRFAgc3RyaW5nIHRvIGJlIERlc2VyaWFsaXplZC4KQEAgLTc2LDEwICs3OSwxMCBA
QCBib29sIFNkcERlc2VyaWFsaXplQ2FuZGlkYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdl
LAogLy8gY2FuZGlkYXRlIC0gVGhlIGNyaWNrZXQgQ2FuZGlkYXRlIGZyb20gdGhlIFNEUCBzdHJp
bmcuCiAvLyBlcnJvciAtIFRoZSBkZXRhaWwgZXJyb3IgaW5mb3JtYXRpb24gd2hlbiBwYXJzaW5n
IGZhaWxzLgogLy8gcmV0dXJuIC0gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgot
Ym9vbCBTZHBEZXNlcmlhbGl6ZUNhbmRpZGF0ZShjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0
X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBt
ZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpDYW5kaWRhdGUq
IGNhbmRpZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwUGFyc2VFcnJvciog
ZXJyb3IpOworUlRDX0VYUE9SVCBib29sIFNkcERlc2VyaWFsaXplQ2FuZGlkYXRlKGNvbnN0IHN0
ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpDYW5kaWRhdGUqIGNhbmRpZGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBQYXJzZUVycm9yKiBlcnJv
cik7CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwX3Vu
aXR0ZXN0LmNjCmluZGV4IDljMTA1NTQ2MzE1M2JlNzEyMjU0YTAzNDIxMjdhODAwNDZlZjY2ZWUu
LmU3YzVjNzdiYjYxYWRlMmI1Zjk0ODkyNjYxMDI1N2IxMDk2NWQwN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcF91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy93ZWJydGNzZHBfdW5pdHRlc3QuY2MKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Ry
aW5ndXRpbHMuaCIKIApAQCAtODksNiArOTAsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBrQXR0cmli
dXRlQ3J5cHRvVmlkZW9bXSA9CiBzdGF0aWMgY29uc3QgY2hhciBrRmluZ2VycHJpbnRbXSA9CiAg
ICAgImE9ZmluZ2VycHJpbnQ6c2hhLTEgIgogICAgICI0QTpBRDpCOTpCMTozRjo4MjoxODozQjo1
NDowMjoxMjpERjozRTo1RDo0OTo2QjoxOTpFNTo3QzpBQlxyXG4iOworc3RhdGljIGNvbnN0IGNo
YXIga0V4dG1hcEFsbG93TWl4ZWRbXSA9ICJhPWV4dG1hcC1hbGxvdy1taXhlZFxyXG4iOwogc3Rh
dGljIGNvbnN0IGludCBrRXh0bWFwSWQgPSAxOwogc3RhdGljIGNvbnN0IGNoYXIga0V4dG1hcFVy
aVtdID0gImh0dHA6Ly9leGFtcGxlLmNvbS8wODIwMDUvZXh0Lmh0bSN0dGltZSI7CiBzdGF0aWMg
Y29uc3QgY2hhciBrRXh0bWFwW10gPQpAQCAtNjIxLDggKzYyMyw4IEBAIHN0YXRpYyBjb25zdCBj
aGFyIGtVbmlmaWVkUGxhblNkcEZ1bGxTdHJpbmdXaXRoU3BlY2lhbE1zaWRbXSA9CiAgICAgImdl
bmVyYXRpb24gMlxyXG4iCiAgICAgImE9aWNlLXVmcmFnOnVmcmFnX3ZvaWNlXHJcbmE9aWNlLXB3
ZDpwd2Rfdm9pY2VcclxuIgogICAgICJhPW1pZDphdWRpb19jb250ZW50X25hbWVcclxuIgotICAg
ICJhPW1zaWQ6bG9jYWxfc3RyZWFtXzEgYXVkaW9fdHJhY2tfaWRfMVxyXG4iCiAgICAgImE9c2Vu
ZHJlY3ZcclxuIgorICAgICJhPW1zaWQ6bG9jYWxfc3RyZWFtXzEgYXVkaW9fdHJhY2tfaWRfMVxy
XG4iCiAgICAgImE9cnRjcC1tdXhcclxuIgogICAgICJhPXJ0Y3AtcnNpemVcclxuIgogICAgICJh
PWNyeXB0bzoxIEFFU19DTV8xMjhfSE1BQ19TSEExXzMyICIKQEAgLTY0MSw5ICs2NDMsOSBAQCBz
dGF0aWMgY29uc3QgY2hhciBrVW5pZmllZFBsYW5TZHBGdWxsU3RyaW5nV2l0aFNwZWNpYWxNc2lk
W10gPQogICAgICJhPXJ0Y3A6OSBJTiBJUDQgMC4wLjAuMFxyXG4iCiAgICAgImE9aWNlLXVmcmFn
OnVmcmFnX3ZvaWNlXzJcclxuYT1pY2UtcHdkOnB3ZF92b2ljZV8yXHJcbiIKICAgICAiYT1taWQ6
YXVkaW9fY29udGVudF9uYW1lXzJcclxuIgorICAgICJhPXNlbmRyZWN2XHJcbiIKICAgICAiYT1t
c2lkOmxvY2FsX3N0cmVhbV8xIGF1ZGlvX3RyYWNrX2lkXzJcclxuIgogICAgICJhPW1zaWQ6bG9j
YWxfc3RyZWFtXzIgYXVkaW9fdHJhY2tfaWRfMlxyXG4iCi0gICAgImE9c2VuZHJlY3ZcclxuIgog
ICAgICJhPXJ0Y3AtbXV4XHJcbiIKICAgICAiYT1ydGNwLXJzaXplXHJcbiIKICAgICAiYT1jcnlw
dG86MSBBRVNfQ01fMTI4X0hNQUNfU0hBMV8zMiAiCkBAIC02NjQsOCArNjY2LDggQEAgc3RhdGlj
IGNvbnN0IGNoYXIga1VuaWZpZWRQbGFuU2RwRnVsbFN0cmluZ1dpdGhTcGVjaWFsTXNpZFtdID0K
ICAgICAiYT1ydGNwOjkgSU4gSVA0IDAuMC4wLjBcclxuIgogICAgICJhPWljZS11ZnJhZzp1ZnJh
Z192b2ljZV8zXHJcbmE9aWNlLXB3ZDpwd2Rfdm9pY2VfM1xyXG4iCiAgICAgImE9bWlkOmF1ZGlv
X2NvbnRlbnRfbmFtZV8zXHJcbiIKLSAgICAiYT1tc2lkOi0gYXVkaW9fdHJhY2tfaWRfM1xyXG4i
CiAgICAgImE9c2VuZHJlY3ZcclxuIgorICAgICJhPW1zaWQ6LSBhdWRpb190cmFja19pZF8zXHJc
biIKICAgICAiYT1ydGNwLW11eFxyXG4iCiAgICAgImE9cnRjcC1yc2l6ZVxyXG4iCiAgICAgImE9
Y3J5cHRvOjEgQUVTX0NNXzEyOF9ITUFDX1NIQTFfMzIgIgpAQCAtNjc0LDcgKzY3NiwxMCBAQCBz
dGF0aWMgY29uc3QgY2hhciBrVW5pZmllZFBsYW5TZHBGdWxsU3RyaW5nV2l0aFNwZWNpYWxNc2lk
W10gPQogICAgICJhPXJ0cG1hcDoxMTEgb3B1cy80ODAwMC8yXHJcbiIKICAgICAiYT1ydHBtYXA6
MTAzIElTQUMvMTYwMDBcclxuIgogICAgICJhPXJ0cG1hcDoxMDQgSVNBQy8zMjAwMFxyXG4iCi0g
ICAgImE9c3NyYzo3IGNuYW1lOnN0cmVhbV8yX2NuYW1lXHJcbiI7CisgICAgImE9c3NyYzo3IGNu
YW1lOnN0cmVhbV8yX2NuYW1lXHJcbiIKKyAgICAiYT1zc3JjOjcgbXNpZDotIGF1ZGlvX3RyYWNr
X2lkXzNcclxuIgorICAgICJhPXNzcmM6NyBtc2xhYmVsOi1cclxuIgorICAgICJhPXNzcmM6NyBs
YWJlbDphdWRpb190cmFja19pZF8zXHJcbiI7CiAKIC8vIE9uZSBjYW5kaWRhdGUgcmVmZXJlbmNl
IHN0cmluZyBhcyBwZXIgVzNjIHNwZWMuCiAvLyBjYW5kaWRhdGU6PGJsYWg+IG5vdCBhPWNhbmRp
ZGF0ZTo8YmxhaD5DUkxGCkBAIC0xMTYwLDcgKzExNjUsNyBAQCBjbGFzcyBXZWJSdGNTZHBUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAvLyB3aXRoIDMgYXVkaW8gTWVkaWFDb250ZW50
RGVzY3JpcHRpb25zIHdpdGggc3BlY2lhbCBTdHJlYW1QYXJhbXMgdGhhdAogICAvLyBjb250YWlu
IDAgb3IgbXVsdGlwbGUgc3RyZWFtIGlkczogLSBhdWRpbyB0cmFjayAxIGhhcyAxIG1lZGlhIHN0
cmVhbSBpZCAtCiAgIC8vIGF1ZGlvIHRyYWNrIDIgaGFzIDIgbWVkaWEgc3RyZWFtIGlkcyAtIGF1
ZGlvIHRyYWNrIDMgaGFzIDAgbWVkaWEgc3RyZWFtIGlkcwotICB2b2lkIE1ha2VVbmlmaWVkUGxh
bkRlc2NyaXB0aW9uTXVsdGlwbGVTdHJlYW1JZHMoKSB7CisgIHZvaWQgTWFrZVVuaWZpZWRQbGFu
RGVzY3JpcHRpb25NdWx0aXBsZVN0cmVhbUlkcyhjb25zdCBpbnQgbXNpZF9zaWduYWxpbmcpIHsK
ICAgICBkZXNjXy5SZW1vdmVDb250ZW50QnlOYW1lKGtWaWRlb0NvbnRlbnROYW1lKTsKICAgICBk
ZXNjXy5SZW1vdmVUcmFuc3BvcnRJbmZvQnlOYW1lKGtWaWRlb0NvbnRlbnROYW1lKTsKICAgICBS
ZW1vdmVWaWRlb0NhbmRpZGF0ZXMoKTsKQEAgLTExODgsOSArMTE5Myw3IEBAIGNsYXNzIFdlYlJ0
Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgZGVzY18uQWRkQ29udGVudChr
QXVkaW9Db250ZW50TmFtZTMsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCBhdWRpb19kZXNjXzMp
OwogICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0SW5mbygK
ICAgICAgICAga0F1ZGlvQ29udGVudE5hbWUzLCBUcmFuc3BvcnREZXNjcmlwdGlvbihrVWZyYWdW
b2ljZTMsIGtQd2RWb2ljZTMpKSkpOwotICAgIC8vIE1ha2Ugc3VyZSB0byBjcmVhdGUgYm90aCBh
PW1zaWQgbGluZXMuCi0gICAgZGVzY18uc2V0X21zaWRfc2lnbmFsaW5nKGNyaWNrZXQ6OmtNc2lk
U2lnbmFsaW5nTWVkaWFTZWN0aW9uIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jp
Y2tldDo6a01zaWRTaWduYWxpbmdTc3JjQXR0cmlidXRlKTsKKyAgICBkZXNjXy5zZXRfbXNpZF9z
aWduYWxpbmcobXNpZF9zaWduYWxpbmcpOwogICAgIEFTU0VSVF9UUlVFKGpkZXNjXy5Jbml0aWFs
aXplKGRlc2NfLkNvcHkoKSwgamRlc2NfLnNlc3Npb25faWQoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqZGVzY18uc2Vzc2lvbl92ZXJzaW9uKCkpKTsKICAgfQpAQCAtMTI4
Miw2ICsxMjg1LDkgQEAgY2xhc3MgV2ViUnRjU2RwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKICAgICAvLyBzdHJlYW1zCiAgICAgRVhQRUNUX0VRKGNkMS0+c3RyZWFtcygpLCBjZDItPnN0
cmVhbXMoKSk7CiAKKyAgICAvLyBleHRtYXAtYWxsb3ctbWl4ZWQKKyAgICBFWFBFQ1RfRVEoY2Qx
LT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpLCBjZDItPmV4dG1hcF9hbGxvd19taXhlZF9lbnVt
KCkpOworCiAgICAgLy8gZXh0bWFwCiAgICAgQVNTRVJUX0VRKGNkMS0+cnRwX2hlYWRlcl9leHRl
bnNpb25zKCkuc2l6ZSgpLAogICAgICAgICAgICAgICBjZDItPnJ0cF9oZWFkZXJfZXh0ZW5zaW9u
cygpLnNpemUoKSk7CkBAIC0xMzk4LDYgKzE0MDQsNyBAQCBjbGFzcyBXZWJSdGNTZHBUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewogCiAgICAgLy8gZ2xvYmFsIGF0dHJpYnV0ZXMKICAgICBF
WFBFQ1RfRVEoZGVzYzEubXNpZF9zdXBwb3J0ZWQoKSwgZGVzYzIubXNpZF9zdXBwb3J0ZWQoKSk7
CisgICAgRVhQRUNUX0VRKGRlc2MxLmV4dG1hcF9hbGxvd19taXhlZCgpLCBkZXNjMi5leHRtYXBf
YWxsb3dfbWl4ZWQoKSk7CiAgIH0KIAogICBib29sIENvbXBhcmVTZXNzaW9uRGVzY3JpcHRpb24o
Y29uc3QgSnNlcFNlc3Npb25EZXNjcmlwdGlvbiYgZGVzYzEsCkBAIC0xNDk1LDggKzE1MDIsNyBA
QCBjbGFzcyBXZWJSdGNTZHBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICB2b2lkIEFk
ZEZpbmdlcnByaW50KCkgewogICAgIGRlc2NfLlJlbW92ZVRyYW5zcG9ydEluZm9CeU5hbWUoa0F1
ZGlvQ29udGVudE5hbWUpOwogICAgIGRlc2NfLlJlbW92ZVRyYW5zcG9ydEluZm9CeU5hbWUoa1Zp
ZGVvQ29udGVudE5hbWUpOwotICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQgZmluZ2VycHJpbnQocnRj
OjpESUdFU1RfU0hBXzEsIGtJZGVudGl0eURpZ2VzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVvZihrSWRlbnRpdHlEaWdlc3QpKTsKKyAgICBydGM6OlNTTEZpbmdl
cnByaW50IGZpbmdlcnByaW50KHJ0Yzo6RElHRVNUX1NIQV8xLCBrSWRlbnRpdHlEaWdlc3QpOwog
ICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0SW5mbygKICAg
ICAgICAga0F1ZGlvQ29udGVudE5hbWUsCiAgICAgICAgIFRyYW5zcG9ydERlc2NyaXB0aW9uKHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpLCBrVWZyYWdWb2ljZSwga1B3ZFZvaWNlLApAQCAtMTU0
MCw2ICsxNTQ2LDI3IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiAgICAgfQogICB9CiAKKyAgLy8gUmVtb3ZlcyBhbGwgYT1zc3JjIGxpbmVzIGZyb20gdGhl
IFNEUCBzdHJpbmcsIGV4Y2VwdCBmb3IgdGhlCisgIC8vICJhPXNzcmM6Li4uIGNuYW1lOi4uLiIg
bGluZXMuCisgIHZvaWQgUmVtb3ZlU3NyY01zaWRMaW5lc0Zyb21TZHBTdHJpbmcoc3RkOjpzdHJp
bmcqIHNkcF9zdHJpbmcpIHsKKyAgICBjb25zdCBjaGFyIGtBdHRyaWJ1dGVTc3JjW10gPSAiYT1z
c3JjIjsKKyAgICBjb25zdCBjaGFyIGtBdHRyaWJ1dGVDbmFtZVtdID0gImNuYW1lIjsKKyAgICBz
aXplX3Qgc3NyY19saW5lX3BvcyA9IHNkcF9zdHJpbmctPmZpbmQoa0F0dHJpYnV0ZVNzcmMpOwor
ICAgIHdoaWxlIChzc3JjX2xpbmVfcG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICBz
aXplX3QgYmVnX2xpbmVfcG9zID0gc2RwX3N0cmluZy0+cmZpbmQoJ1xuJywgc3NyY19saW5lX3Bv
cyk7CisgICAgICBzaXplX3QgZW5kX2xpbmVfcG9zID0gc2RwX3N0cmluZy0+ZmluZCgnXG4nLCBz
c3JjX2xpbmVfcG9zKTsKKyAgICAgIHNpemVfdCBjbmFtZV9wb3MgPSBzZHBfc3RyaW5nLT5maW5k
KGtBdHRyaWJ1dGVDbmFtZSwgc3NyY19saW5lX3Bvcyk7CisgICAgICBpZiAoY25hbWVfcG9zID09
IHN0ZDo6c3RyaW5nOjpucG9zIHx8IGNuYW1lX3BvcyA+IGVuZF9saW5lX3BvcykgeworICAgICAg
ICAvLyBPbmx5IGVyYXNlIGE9c3NyYyBsaW5lcyB0aGF0IGRvbid0IGNvbnRhaW4gImNuYW1lIi4K
KyAgICAgICAgc2RwX3N0cmluZy0+ZXJhc2UoYmVnX2xpbmVfcG9zLCBlbmRfbGluZV9wb3MgLSBi
ZWdfbGluZV9wb3MpOworICAgICAgICBzc3JjX2xpbmVfcG9zID0gc2RwX3N0cmluZy0+ZmluZChr
QXR0cmlidXRlU3NyYywgYmVnX2xpbmVfcG9zKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IFNraXAgdGhlICJhPXNzcmM6Li4uIGNuYW1lIiBsaW5lIGFuZCBmaW5kIHRoZSBuZXh0ICJhPXNz
cmMiIGxpbmUuCisgICAgICAgIHNzcmNfbGluZV9wb3MgPSBzZHBfc3RyaW5nLT5maW5kKGtBdHRy
aWJ1dGVTc3JjLCBlbmRfbGluZV9wb3MpOworICAgICAgfQorICAgIH0KKyAgfQorCiAgIC8vIFJl
bW92ZXMgYWxsIGE9c3NyYyBsaW5lcyBmcm9tIHRoZSBTRFAgc3RyaW5nLgogICB2b2lkIFJlbW92
ZVNzcmNMaW5lc0Zyb21TZHBTdHJpbmcoc3RkOjpzdHJpbmcqIHNkcF9zdHJpbmcpIHsKICAgICBj
b25zdCBjaGFyIGtBdHRyaWJ1dGVTc3JjW10gPSAiYT1zc3JjIjsKQEAgLTIwNzAsOSArMjA5Nyw4
IEBAIFRFU1RfRihXZWJSdGNTZHBUZXN0LCBTZXJpYWxpemVXaXRoU2N0cERhdGFDaGFubmVsQW5k
TmV3UG9ydCkgewogCiAgIGNoYXIgZGVmYXVsdF9wb3J0c3RyWzE2XTsKICAgY2hhciBuZXdfcG9y
dHN0clsxNl07Ci0gIHJ0Yzo6c3ByaW50Zm4oZGVmYXVsdF9wb3J0c3RyLCBzaXplb2YoZGVmYXVs
dF9wb3J0c3RyKSwgIiVkIiwKLSAgICAgICAgICAgICAgICBrRGVmYXVsdFNjdHBQb3J0KTsKLSAg
cnRjOjpzcHJpbnRmbihuZXdfcG9ydHN0ciwgc2l6ZW9mKG5ld19wb3J0c3RyKSwgIiVkIiwga05l
d1BvcnQpOworICBzbnByaW50ZihkZWZhdWx0X3BvcnRzdHIsIHNpemVvZihkZWZhdWx0X3BvcnRz
dHIpLCAiJWQiLCBrRGVmYXVsdFNjdHBQb3J0KTsKKyAgc25wcmludGYobmV3X3BvcnRzdHIsIHNp
emVvZihuZXdfcG9ydHN0ciksICIlZCIsIGtOZXdQb3J0KTsKICAgcnRjOjpyZXBsYWNlX3N1YnN0
cnMoZGVmYXVsdF9wb3J0c3RyLCBzdHJsZW4oZGVmYXVsdF9wb3J0c3RyKSwgbmV3X3BvcnRzdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihuZXdfcG9ydHN0ciksICZleHBlY3RlZF9z
ZHApOwogCkBAIC0yMDk0LDYgKzIxMjAsMjUgQEAgVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIFNlcmlh
bGl6ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhEYXRhQ2hhbm5lbEFuZEJhbmR3aWR0aCkgewogICBF
WFBFQ1RfRVEoZXhwZWN0ZWRfc2RwLCBtZXNzYWdlKTsKIH0KIAorVEVTVF9GKFdlYlJ0Y1NkcFRl
c3QsIFNlcmlhbGl6ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhFeHRtYXBBbGxvd01peGVkKSB7Cisg
IGpkZXNjXy5kZXNjcmlwdGlvbigpLT5zZXRfZXh0bWFwX2FsbG93X21peGVkKHRydWUpOworICBU
ZXN0U2VyaWFsaXplKGpkZXNjXyk7Cit9CisKK1RFU1RfRihXZWJSdGNTZHBUZXN0LCBTZXJpYWxp
emVNZWRpYUNvbnRlbnREZXNjcmlwdGlvbldpdGhFeHRtYXBBbGxvd01peGVkKSB7CisgIGNyaWNr
ZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uKiB2aWRlb19kZXNjID0KKyAgICAgIGpkZXNjXy5k
ZXNjcmlwdGlvbigpLT5HZXRDb250ZW50RGVzY3JpcHRpb25CeU5hbWUoa1ZpZGVvQ29udGVudE5h
bWUpOworICBBU1NFUlRfVFJVRSh2aWRlb19kZXNjKTsKKyAgY3JpY2tldDo6TWVkaWFDb250ZW50
RGVzY3JpcHRpb24qIGF1ZGlvX2Rlc2MgPQorICAgICAgamRlc2NfLmRlc2NyaXB0aW9uKCktPkdl
dENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZShrQXVkaW9Db250ZW50TmFtZSk7CisgIEFTU0VSVF9U
UlVFKGF1ZGlvX2Rlc2MpOworICB2aWRlb19kZXNjLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2Vu
dW0oCisgICAgICBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAg
YXVkaW9fZGVzYy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKAorICAgICAgY3JpY2tldDo6
TWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7CisgIFRlc3RTZXJpYWxpemUoamRlc2Nf
KTsKK30KKwogVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIFNlcmlhbGl6ZVNlc3Npb25EZXNjcmlwdGlv
bldpdGhFeHRtYXApIHsKICAgYm9vbCBlbmNyeXB0ZWQgPSBmYWxzZTsKICAgQWRkRXh0bWFwKGVu
Y3J5cHRlZCk7CkBAIC0yNDMxLDYgKzI0NzYsNTMgQEAgVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIERl
c2VyaWFsaXplU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aG91dE1zaWQpIHsKICAgRVhQRUNUX1RSVUUo
Q29tcGFyZVNlc3Npb25EZXNjcmlwdGlvbihqZGVzY18sIGpkZXNjKSk7CiB9CiAKK1RFU1RfRihX
ZWJSdGNTZHBUZXN0LCBEZXNlcmlhbGl6ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhFeHRtYXBBbGxv
d01peGVkKSB7CisgIGpkZXNjXy5kZXNjcmlwdGlvbigpLT5zZXRfZXh0bWFwX2FsbG93X21peGVk
KHRydWUpOworICBzdGQ6OnN0cmluZyBzZHBfd2l0aF9leHRtYXBfYWxsb3dfbWl4ZWQgPSBrU2Rw
RnVsbFN0cmluZzsKKyAgSW5qZWN0QWZ0ZXIoInQ9MCAwXHJcbiIsIGtFeHRtYXBBbGxvd01peGVk
LCAmc2RwX3dpdGhfZXh0bWFwX2FsbG93X21peGVkKTsKKyAgLy8gRGVzZXJpYWxpemUKKyAgSnNl
cFNlc3Npb25EZXNjcmlwdGlvbiBqZGVzY19kZXNlcmlhbGl6ZWQoa0R1bW15VHlwZSk7CisgIEVY
UEVDVF9UUlVFKFNkcERlc2VyaWFsaXplKHNkcF93aXRoX2V4dG1hcF9hbGxvd19taXhlZCwgJmpk
ZXNjX2Rlc2VyaWFsaXplZCkpOworICAvLyBWZXJpZnkKKyAgRVhQRUNUX1RSVUUoQ29tcGFyZVNl
c3Npb25EZXNjcmlwdGlvbihqZGVzY18sIGpkZXNjX2Rlc2VyaWFsaXplZCkpOworfQorCitURVNU
X0YoV2ViUnRjU2RwVGVzdCwgRGVzZXJpYWxpemVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0RXh0
bWFwQWxsb3dNaXhlZCkgeworICBqZGVzY18uZGVzY3JpcHRpb24oKS0+c2V0X2V4dG1hcF9hbGxv
d19taXhlZChmYWxzZSk7CisgIHN0ZDo6c3RyaW5nIHNkcF93aXRob3V0X2V4dG1hcF9hbGxvd19t
aXhlZCA9IGtTZHBGdWxsU3RyaW5nOworICAvLyBEZXNlcmlhbGl6ZQorICBKc2VwU2Vzc2lvbkRl
c2NyaXB0aW9uIGpkZXNjX2Rlc2VyaWFsaXplZChrRHVtbXlUeXBlKTsKKyAgRVhQRUNUX1RSVUUo
CisgICAgICBTZHBEZXNlcmlhbGl6ZShzZHBfd2l0aG91dF9leHRtYXBfYWxsb3dfbWl4ZWQsICZq
ZGVzY19kZXNlcmlhbGl6ZWQpKTsKKyAgLy8gVmVyaWZ5CisgIEVYUEVDVF9UUlVFKENvbXBhcmVT
ZXNzaW9uRGVzY3JpcHRpb24oamRlc2NfLCBqZGVzY19kZXNlcmlhbGl6ZWQpKTsKK30KKworVEVT
VF9GKFdlYlJ0Y1NkcFRlc3QsIERlc2VyaWFsaXplTWVkaWFDb250ZW50RGVzY3JpcHRpb25XaXRo
RXh0bWFwQWxsb3dNaXhlZCkgeworICBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiog
dmlkZW9fZGVzYyA9CisgICAgICBqZGVzY18uZGVzY3JpcHRpb24oKS0+R2V0Q29udGVudERlc2Ny
aXB0aW9uQnlOYW1lKGtWaWRlb0NvbnRlbnROYW1lKTsKKyAgQVNTRVJUX1RSVUUodmlkZW9fZGVz
Yyk7CisgIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBhdWRpb19kZXNjID0KKyAg
ICAgIGpkZXNjXy5kZXNjcmlwdGlvbigpLT5HZXRDb250ZW50RGVzY3JpcHRpb25CeU5hbWUoa0F1
ZGlvQ29udGVudE5hbWUpOworICBBU1NFUlRfVFJVRShhdWRpb19kZXNjKTsKKyAgdmlkZW9fZGVz
Yy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKAorICAgICAgY3JpY2tldDo6TWVkaWFDb250
ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7CisgIGF1ZGlvX2Rlc2MtPnNldF9leHRtYXBfYWxsb3df
bWl4ZWRfZW51bSgKKyAgICAgIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVk
aWEpOworCisgIHN0ZDo6c3RyaW5nIHNkcF93aXRoX2V4dG1hcF9hbGxvd19taXhlZCA9IGtTZHBG
dWxsU3RyaW5nOworICBJbmplY3RBZnRlcigiYT1taWQ6YXVkaW9fY29udGVudF9uYW1lXHJcbiIs
IGtFeHRtYXBBbGxvd01peGVkLAorICAgICAgICAgICAgICAmc2RwX3dpdGhfZXh0bWFwX2FsbG93
X21peGVkKTsKKyAgSW5qZWN0QWZ0ZXIoImE9bWlkOnZpZGVvX2NvbnRlbnRfbmFtZVxyXG4iLCBr
RXh0bWFwQWxsb3dNaXhlZCwKKyAgICAgICAgICAgICAgJnNkcF93aXRoX2V4dG1hcF9hbGxvd19t
aXhlZCk7CisKKyAgLy8gRGVzZXJpYWxpemUKKyAgSnNlcFNlc3Npb25EZXNjcmlwdGlvbiBqZGVz
Y19kZXNlcmlhbGl6ZWQoa0R1bW15VHlwZSk7CisgIEVYUEVDVF9UUlVFKFNkcERlc2VyaWFsaXpl
KHNkcF93aXRoX2V4dG1hcF9hbGxvd19taXhlZCwgJmpkZXNjX2Rlc2VyaWFsaXplZCkpOworICAv
LyBWZXJpZnkKKyAgRVhQRUNUX1RSVUUoQ29tcGFyZVNlc3Npb25EZXNjcmlwdGlvbihqZGVzY18s
IGpkZXNjX2Rlc2VyaWFsaXplZCkpOworfQorCiBURVNUX0YoV2ViUnRjU2RwVGVzdCwgRGVzZXJp
YWxpemVDYW5kaWRhdGUpIHsKICAgSnNlcEljZUNhbmRpZGF0ZSBqY2FuZGlkYXRlKGtEdW1teU1p
ZCwga0R1bW15SW5kZXgpOwogCkBAIC0zMzYyLDEyICszNDU0LDE2IEBAIFRFU1RfRihXZWJSdGNT
ZHBUZXN0LCBTZXJpYWxpemVVbmlmaWVkUGxhblNlc3Npb25EZXNjcmlwdGlvbikgewogfQogCiAv
LyBUaGlzIHRlc3RzIGRlc2VyaWFsaXppbmcgYSBVbmlmaWVkIFBsYW4gU0RQIHRoYXQgaXMgY29t
cGF0aWJsZSB3aXRoIGJvdGgKLS8vIFVuaWZpZWQgUGxhbiBhbmQgUGxhbiBCIHN0eWxlIFNEUC4g
SXQgdGVzdHMgdGhlIGNhc2UgZm9yIGF1ZGlvL3ZpZGVvIHRyYWNrcworLy8gVW5pZmllZCBQbGFu
IGFuZCBQbGFuIEIgc3R5bGUgU0RQLCBtZWFuaW5nIHRoYXQgaXQgY29udGFpbnMgYm90aCAiYT1z
c3JjCisvLyBtc2lkIiBsaW5lcyBhbmQgImE9bXNpZCAiIGxpbmVzLiBJdCB0ZXN0cyB0aGUgY2Fz
ZSBmb3IgYXVkaW8vdmlkZW8gdHJhY2tzCiAvLyB3aXRoIG5vIHN0cmVhbSBpZHMgYW5kIG11bHRp
cGxlIHN0cmVhbSBpZHMuIEZvciBwYXJzaW5nIHRoaXMsIHRoZSBVbmlmaWVkCiAvLyBQbGFuIGE9
bXNpZCBsaW5lcyBzaG91bGQgdGFrZSBwcmlvcml0eSwgYmVjYXVzZSB0aGUgUGxhbiBCIHN0eWxl
IGE9c3NyYyBtc2lkCiAvLyBsaW5lcyBkbyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBzdHJlYW0gaWRz
IGFuZCBubyBzdHJlYW0gaWRzLgotVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIERlc2VyaWFsaXplVW5p
ZmllZFBsYW5TZXNzaW9uRGVzY3JpcHRpb25TcGVjaWFsTXNpZCkgewotICBNYWtlVW5pZmllZFBs
YW5EZXNjcmlwdGlvbk11bHRpcGxlU3RyZWFtSWRzKCk7CitURVNUX0YoV2ViUnRjU2RwVGVzdCwg
RGVzZXJpYWxpemVTZXNzaW9uRGVzY3JpcHRpb25TcGVjaWFsTXNpZCkgeworICAvLyBDcmVhdGUg
Ym90aCBtc2lkIGxpbmVzIGZvciBQbGFuIEIgYW5kIFVuaWZpZWQgUGxhbiBzdXBwb3J0LgorICBN
YWtlVW5pZmllZFBsYW5EZXNjcmlwdGlvbk11bHRpcGxlU3RyZWFtSWRzKAorICAgICAgY3JpY2tl
dDo6a01zaWRTaWduYWxpbmdNZWRpYVNlY3Rpb24gfAorICAgICAgY3JpY2tldDo6a01zaWRTaWdu
YWxpbmdTc3JjQXR0cmlidXRlKTsKIAogICBKc2VwU2Vzc2lvbkRlc2NyaXB0aW9uIGRlc2VyaWFs
aXplZF9kZXNjcmlwdGlvbihrRHVtbXlUeXBlKTsKICAgRVhQRUNUX1RSVUUoU2RwRGVzZXJpYWxp
emUoa1VuaWZpZWRQbGFuU2RwRnVsbFN0cmluZ1dpdGhTcGVjaWFsTXNpZCwKQEAgLTMzNzYsOCAr
MzQ3Miw1MCBAQCBURVNUX0YoV2ViUnRjU2RwVGVzdCwgRGVzZXJpYWxpemVVbmlmaWVkUGxhblNl
c3Npb25EZXNjcmlwdGlvblNwZWNpYWxNc2lkKSB7CiAgIEVYUEVDVF9UUlVFKENvbXBhcmVTZXNz
aW9uRGVzY3JpcHRpb24oamRlc2NfLCBkZXNlcmlhbGl6ZWRfZGVzY3JpcHRpb24pKTsKIH0KIAot
VEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIFNlcmlhbGl6ZVVuaWZpZWRQbGFuU2Vzc2lvbkRlc2NyaXB0
aW9uU3BlY2lhbE1zaWQpIHsKLSAgTWFrZVVuaWZpZWRQbGFuRGVzY3JpcHRpb25NdWx0aXBsZVN0
cmVhbUlkcygpOworLy8gVGVzdHMgdGhlIHNlcmlhbGl6YXRpb24gb2YgYSBVbmlmaWVkIFBsYW4g
U0RQIHRoYXQgaXMgY29tcGF0aWJsZSBmb3IgYm90aAorLy8gVW5pZmllZCBQbGFuIGFuZCBQbGFu
IEIgc3R5bGUgU0RQcywgbWVhbmluZyB0aGF0IGl0IGNvbnRhaW5zIGJvdGggImE9c3NyYworLy8g
bXNpZCIgbGluZXMgYW5kICJhPW1zaWQgIiBsaW5lcy4gSXQgdGVzdHMgdGhlIGNhc2UgZm9yIG5v
IHN0cmVhbSBpZHMgYW5kCisvLyBtdWx0aXBsZSBzdHJlYW0gaWRzLgorVEVTVF9GKFdlYlJ0Y1Nk
cFRlc3QsIFNlcmlhbGl6ZVNlc3Npb25EZXNjcmlwdGlvblNwZWNpYWxNc2lkKSB7CisgIC8vIENy
ZWF0ZSBib3RoIG1zaWQgbGluZXMgZm9yIFBsYW4gQiBhbmQgVW5pZmllZCBQbGFuIHN1cHBvcnQu
CisgIE1ha2VVbmlmaWVkUGxhbkRlc2NyaXB0aW9uTXVsdGlwbGVTdHJlYW1JZHMoCisgICAgICBj
cmlja2V0OjprTXNpZFNpZ25hbGluZ01lZGlhU2VjdGlvbiB8CisgICAgICBjcmlja2V0OjprTXNp
ZFNpZ25hbGluZ1NzcmNBdHRyaWJ1dGUpOworICBzdGQ6OnN0cmluZyBzZXJpYWxpemVkX3NkcCA9
IHdlYnJ0Yzo6U2RwU2VyaWFsaXplKGpkZXNjXyk7CisgIC8vIFdlIGV4cGxpY2l0bHkgdGVzdCB0
aGF0IHRoZSBzZXJpYWxpemVkIFNEUCBzdHJpbmcgaXMgZXF1YWwgdG8gdGhlIGhhcmQKKyAgLy8g
Y29kZWQgU0RQIHN0cmluZy4gVGhpcyBpcyBuZWNlc3NhcnksIGJlY2F1c2UgaW4gdGhlIHBhcnNl
ciAiYT1tc2lkIiBsaW5lcworICAvLyB0YWtlIHByaW9yaXR5IG92ZXIgImE9c3NyYyBtc2lkIiBs
aW5lcy4gVGhpcyBtZWFucyBpZiB3ZSBqdXN0IHVzZWQKKyAgLy8gVGVzdFNlcmlhbGl6ZSgpLCBp
dCBjb3VsZCBzZXJpYWxpemUgYW4gU0RQIHRoYXQgb21pdHMgImE9c3NyYyBtc2lkIiBsaW5lcywK
KyAgLy8gYW5kIHN0aWxsIHBhc3MsIGJlY2F1c2UgdGhlIGRlc2VyaWFsaXplZCB2ZXJzaW9uIHdv
dWxkIGJlIHRoZSBzYW1lLgorICBFWFBFQ1RfRVEoa1VuaWZpZWRQbGFuU2RwRnVsbFN0cmluZ1dp
dGhTcGVjaWFsTXNpZCwgc2VyaWFsaXplZF9zZHApOworfQorCisvLyBUZXN0cyB0aGF0IGEgVW5p
ZmllZCBQbGFuIHN0eWxlIFNEUCAoZG9lcyBub3QgY29udGFpbiAiYT1zc3JjIG1zaWQiIGxpbmVz
CisvLyB0aGF0IHNpZ25hbCBzdHJlYW0gSURzKSBpcyBkZXNlcmlhbGl6ZWQgYXBwcm9wcmlhdGVs
eS4gSXQgdGVzdHMgdGhlIGNhc2UgZm9yCisvLyBubyBzdHJlYW0gaWRzIGFuZCBtdWx0aXBsZSBz
dHJlYW0gaWRzLgorVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIFVuaWZpZWRQbGFuRGVzZXJpYWxpemVT
ZXNzaW9uRGVzY3JpcHRpb25TcGVjaWFsTXNpZCkgeworICAvLyBPbmx5IGNyZWF0ZSBhPW1zaWQg
bGluZXMgZm9yIHN0cmljdGx5IFVuaWZpZWQgUGxhbiBzdHJlYW0gSUQgc3VwcG9ydC4KKyAgTWFr
ZVVuaWZpZWRQbGFuRGVzY3JpcHRpb25NdWx0aXBsZVN0cmVhbUlkcygKKyAgICAgIGNyaWNrZXQ6
OmtNc2lkU2lnbmFsaW5nTWVkaWFTZWN0aW9uKTsKKworICBKc2VwU2Vzc2lvbkRlc2NyaXB0aW9u
IGRlc2VyaWFsaXplZF9kZXNjcmlwdGlvbihrRHVtbXlUeXBlKTsKKyAgc3RkOjpzdHJpbmcgdW5p
ZmllZF9wbGFuX3NkcF9zdHJpbmcgPQorICAgICAga1VuaWZpZWRQbGFuU2RwRnVsbFN0cmluZ1dp
dGhTcGVjaWFsTXNpZDsKKyAgUmVtb3ZlU3NyY01zaWRMaW5lc0Zyb21TZHBTdHJpbmcoJnVuaWZp
ZWRfcGxhbl9zZHBfc3RyaW5nKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBTZHBEZXNlcmlhbGl6
ZSh1bmlmaWVkX3BsYW5fc2RwX3N0cmluZywgJmRlc2VyaWFsaXplZF9kZXNjcmlwdGlvbikpOwor
CisgIEVYUEVDVF9UUlVFKENvbXBhcmVTZXNzaW9uRGVzY3JpcHRpb24oamRlc2NfLCBkZXNlcmlh
bGl6ZWRfZGVzY3JpcHRpb24pKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIFVuaWZpZWQgUGxhbiBz
dHlsZSBTRFAgKGRvZXMgbm90IGNvbnRhaW4gImE9c3NyYyBtc2lkIiBsaW5lcworLy8gdGhhdCBz
aWduYWwgc3RyZWFtIElEcykgaXMgc2VyaWFsaXplZCBhcHByb3ByaWF0ZWx5LiBJdCB0ZXN0cyB0
aGUgY2FzZSBmb3Igbm8KKy8vIHN0cmVhbSBpZHMgYW5kIG11bHRpcGxlIHN0cmVhbSBpZHMuCitU
RVNUX0YoV2ViUnRjU2RwVGVzdCwgVW5pZmllZFBsYW5TZXJpYWxpemVTZXNzaW9uRGVzY3JpcHRp
b25TcGVjaWFsTXNpZCkgeworICAvLyBPbmx5IGNyZWF0ZSBhPW1zaWQgbGluZXMgZm9yIHN0cmlj
dGx5IFVuaWZpZWQgUGxhbiBzdHJlYW0gSUQgc3VwcG9ydC4KKyAgTWFrZVVuaWZpZWRQbGFuRGVz
Y3JpcHRpb25NdWx0aXBsZVN0cmVhbUlkcygKKyAgICAgIGNyaWNrZXQ6OmtNc2lkU2lnbmFsaW5n
TWVkaWFTZWN0aW9uKTsKKwogICBUZXN0U2VyaWFsaXplKGpkZXNjXyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3Nl
c3Npb25kZXNjcmlwdGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZXNzaW9uZGVzY3JpcHRpb25mYWN0b3J5LmNjCmluZGV4
IDgwOGU0MTFhMzk5ODU4NTJiOTYzMzE3NjY2YmM4ODFiNDhkN2E4YzUuLjA3YjhlMTQ3Y2M4Mjc3
NDA3ZTI2MTQ2NTg1ZWE2MGE3MGM0MGEyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3Nlc3Npb25kZXNjcmlwdGlvbmZhY3Rv
cnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
d2VicnRjc2Vzc2lvbmRlc2NyaXB0aW9uZmFjdG9yeS5jYwpAQCAtMTE2LDcgKzExNiw2IEBAIHZv
aWQgV2ViUnRjU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q29weUNhbmRpZGF0ZXNGcm9tU2Vz
c2lvbkRlc2NyaXB0aW9uKAogICB9CiB9CiAKLS8vIFByaXZhdGUgY29uc3RydWN0b3IgY2FsbGVk
IGJ5IG90aGVyIGNvbnN0cnVjdG9ycy4KIFdlYlJ0Y1Nlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6
OldlYlJ0Y1Nlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnkoCiAgICAgcnRjOjpUaHJlYWQqIHNpZ25h
bGluZ190aHJlYWQsCiAgICAgY3JpY2tldDo6Q2hhbm5lbE1hbmFnZXIqIGNoYW5uZWxfbWFuYWdl
ciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAwX3RsbTEwLk9VVDIwLnNoYTEgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0Yw
MF90bG0xMC5PVVQyMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2I4ZTUy
Y2IyNWRmMzE0YWY5NjBiMTA0Mjk4MDE0NDUyNTYwOWQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAwX3RsbTEwLk9VVDIwLnNoYTEKKysr
IC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi05NmZiNTMyN2ZmN2ExZmU4N2JkNDUxMjc3M2NlNzM0
N2I0ZDcyODg4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGlu
Zy9GMDBfdGxtMTAuT1VUMzAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAwX3RsbTEwLk9VVDMwLnNoYTEKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0NzAwMTNiNzJhZjBkZWZmNTg3NDJmMmNiOWY3
ZTU5M2U4ZDBlYWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1
ZGlvX2NvZGluZy9GMDBfdGxtMTAuT1VUMzAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLWVhNTI3ZThlNjEyNDFlYTczMjY1YWJiYTU3NjU3OTM1MTFjNDIyOTEKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwMV90bG0xMC5PVVQyMC5zaGEx
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1
ZGlvX2NvZGluZy9GMDFfdGxtMTAuT1VUMjAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDMzZWI3ZTFjNzQ3NWI4NTRkODMxY2I0Y2JiODJkYmJjMGUyM2ExNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwMV90bG0xMC5P
VVQyMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotYTVlOGMyNjg5MzZkN2M4ZDAz
ZWRkNzA4YzY3NTI1NDQ3NGFlZDk0NApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNl
cy9hdWRpb19jb2RpbmcvRjAxX3RsbTEwLk9VVDMwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwMV90bG0xMC5P
VVQzMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTM2NTZmZTAxYzBiMzM4
M2RhMzY4ZjA1NGZhZjNkMzI5MGVmMDUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAxX3RsbTEwLk9VVDMwLnNoYTEKKysrIC9kZXYvbnVs
bApAQCAtMSArMCwwIEBACi05ODkzNTA0YmRhYTU2MGE0ZGRiNjdhOTllNjcwMWU4ZDQyNDQ4OTZh
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDJfdGxt
MTAuT1VUMjAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAyX3RsbTEwLk9VVDIwLnNoYTEKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGI4YTUyNTM0YjNhZTgxNjBjM2MwNzI0Mjg5Mzg1NmQ5ZWRjMTlh
MjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGlu
Zy9GMDJfdGxtMTAuT1VUMjAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTVlMDA1
M2EwZGU3YjQ3MDg0MDJmY2MwYTFiNWFlMDI0ODE1OTM4YTMKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwMl90bG0xMC5PVVQzMC5zaGExIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGlu
Zy9GMDJfdGxtMTAuT1VUMzAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNi
YmM5ODY2ZDE1Njg3YzcyNjhkNzU0Y2ZlYTgxYmNlNjZlYTc5OC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwMl90bG0xMC5PVVQzMC5zaGEx
CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotZDU3OTg2ZDNkYzY1YzFjYWRjNDE0MTlhNzdl
ZDE0NzJiNzMwNTBiNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19j
b2RpbmcvRjA0LkJJVDIwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNC5CSVQyMC5zaGExCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhMzA0ZmE0MTgxMWE4OWRlMDhjMTVlMWFmMTgyMzdjMTUyZGQ2
NTUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2Rp
bmcvRjA0LkJJVDIwLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi04Y2MxZjgyZWUw
ZDFiN2RmMzk4NDA4OTVkM2U5OTc1NjkyMGI4NWFkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDQuQklUMzAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA0LkJJVDMw
LnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2Y2JlMTNhZmI0Yjg3YTExZmY5
NjdhMWE1MDE0NjViNDhjN2E5YzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVz
b3VyY2VzL2F1ZGlvX2NvZGluZy9GMDQuQklUMzAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICsw
LDAgQEAKLTg1Y2EzZDlhNWNhNjFjMWJiOWQ3OThiYTZkMzU1MTk0NWFiNzY2N2QKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNC5JTlAuc2hhMSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19j
b2RpbmcvRjA0LklOUC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzExOGZj
YjM1YzFkNjJmMWU2NDIyYTAwNGRlZThmMTc4NjAzN2Y2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA0LklOUC5zaGExCisrKyAvZGV2L251
bGwKQEAgLTEgKzAsMCBAQAotNzMwNTgxMDM1ZDVhZjgzMmQxYjA1YzhmM2E2MjNlYzkzODYzYjNl
MwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA0Lk9V
VDIwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNv
dXJjZXMvYXVkaW9fY29kaW5nL0YwNC5PVVQyMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmZDI3ZjA0MWUwOWVhYTMxYTk0YTQwYzU4OWM4M2VkNWNlZjJjMzkwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA0Lk9VVDIw
LnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi05ODVlNWZmYTBiOTg3MThhZmFkZmIx
ZjAyYjU1OTVmYjI0YTk0NzZjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1
ZGlvX2NvZGluZy9GMDQuT1VUMzAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA0Lk9VVDMwLnNoYTEKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjY2VjNGVmZmVmYjdmZWVmMDQzOWRlMmE3NmMwOWZk
MGNjMmI2ODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlv
X2NvZGluZy9GMDQuT1VUMzAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLThiMDM1
ZmIwZjljZTNiZGMyYWU2Yzk4M2UyMzJjMjU3YTUxNWE3ODEKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5CSVQyMC5zaGExIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDUu
QklUMjAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlkODJlNmY1MjFhNzJl
MGI5MzM0NWMyOTAzM2VmZGI2ZWM0MTliZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5CSVQyMC5zaGExCisrKyAvZGV2L251bGwKQEAg
LTEgKzAsMCBAQAotOTA2OWZlY2MzY2QxM2JmOTAxNzgxYWY0ZWNlOGIzNzRiNTI4NTk4NApcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1LkJJVDMwLnNo
YTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMv
YXVkaW9fY29kaW5nL0YwNS5CSVQzMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1MTNjOTM2MmE4OTExOWRiMmM2MmZmMjFlNGY4ZWVmYzE5MzQ3N2E0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1LkJJVDMwLnNoYTEK
KysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi00NGEwNGUxMzNjMTVlMDEzZjZiNDQyNDg3NzUy
OGE0NDQ1ZTI4YmVmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2Nv
ZGluZy9GMDUuSU5QLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5JTlAuc2hhMQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGVlMGEzOWYzY2E0MTJkMGYwNjgzNjgxMjg1OWE4ZjY1NzU5YjdhZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0Yw
NS5JTlAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWMzZGRlMTBjMzJmMTJkYTU4
MTgxZWNhY2NiN2FlYWE1MTUyMzkyMzMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJj
ZXMvYXVkaW9fY29kaW5nL0YwNS5PVVQyMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDUuT1VUMjAuc2hhMQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY1MTQ1MjY1MjFhMDU4OWE0YTRjYjY4Njc0
ZmVlZWQ4Y2JjMjY4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMv
YXVkaW9fY29kaW5nL0YwNS5PVVQyMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
MjYwZjUxZjgzMjBkOTJkM2M4YjgzNGMxZjM4ODc5YmFhMTJhN2E1YQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1Lk9VVDMwLnNoYTEgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5n
L0YwNS5PVVQzMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2MzMThjOTZm
NDk4YjIzNTgxYTdmYjMzNDliYzVmMGQ5ZDUxZDU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1Lk9VVDMwLnNoYTEKKysrIC9kZXYvbnVs
bApAQCAtMSArMCwwIEBACi03MmFiYjRjMWQ4NGE0Y2ZmMWVmZWQ0ZDNlMDEyODBkODM5YTlmNjkx
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuQklU
MjAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291
cmNlcy9hdWRpb19jb2RpbmcvRjA2LkJJVDIwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZiNmUzZGZiNjg0NWI1MTAxNDM0Nzg3ODUxM2FkMGFjMzQ4MGViNDIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuQklUMjAu
c2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWI2NTMwMjQ3YWNkZmQ3YWU3YjNmZDgw
YzY3N2Q3MTA0NTM1MWFkMDcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVk
aW9fY29kaW5nL0YwNi5CSVQzMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuQklUMzAuc2hhMQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjlmNzk3NTczMGU1YzFkODQ5NWNmODk4NzE4YjQyZDgy
NmRmMGI1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9f
Y29kaW5nL0YwNi5CSVQzMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotMDMxOGRl
NGRjNDg0MjJiZmUxMjVmZDZmODI3ZTZlNzExNGRjNjFiYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA2LklOUC5zaGExIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuSU5Q
LnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMTAyMDk2NTJjNzZkN2Q0Yjdl
NWEyOTAzOWU3NTdmN2QxNmU1YzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVz
b3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuSU5QLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCww
IEBACi04MDM1OWNmZjcyY2JkYzA0YTMzN2E1MWMyZmNjMGM3NDg5MDcxMGI0ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuT1VUMjAuc2hhMSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19j
b2RpbmcvRjA2Lk9VVDIwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNTBk
ZjgyNThkMzM0ZDBmMmU0OTQ0N2ZkZDBjY2UyZTNiMjYyNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuT1VUMjAuc2hhMQorKysgL2Rl
di9udWxsCkBAIC0xICswLDAgQEAKLWM3YmM3MWFiYzk3MzQ0MDEyM2E1MTdmNjFlM2RiY2I5NjA4
OWVlM2YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0Yw
Ni5PVVQzMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuT1VUMzAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWQ5MjE5ZGQwYWQwN2Y3YjIyNDA1NzYyNjUzOGNmOGM4YmEyMjZkNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNi5P
VVQzMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotNWZkZTJkZWZkMjM1MGI1Y2E3
ZDNiOGY4Y2VlZjc1ZDJiN2ZkN2YwMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNl
cy9hdWRpb19jb2RpbmcvdGxtMTAuY2huLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL3RsbTEwLmNobi5zaGExCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDFmNDQ4N2JjNjM2NTc4Yjk0ZDlmZTY1ZWU3
NDc5NGRhNTU3ZjAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9h
dWRpb19jb2RpbmcvdGxtMTAuY2huLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0y
MWM3ODUxNmMyNDcwNjY3YTc1YzdlZDg1ZmUzN2M1M2EzNTE0NDU2ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9CVUlMRC5nbgppbmRleCBlOWVmYmQxMzYwZjEyNGIyOTcx
MTA0ZDM2ODA5MGZmMTIxMzRkNDNhLi43NWM0Mzk3YWI3ZDQ4YWZjMTc3NWFkYWViMzYyZjQ4Mjcy
MjQwNGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9CVUlMRC5nbgpAQCAtNjcsOSArNjcsMTAyIEBAIHJ0Y19z
b3VyY2Vfc2V0KCJjb21waWxlX2Fzc2VydF9jIikgewogICBdCiB9CiAKKyMgVGhlIHN1YnNldCBv
ZiBydGNfYmFzZSBhcHByb3ZlZCBmb3IgdXNlIG91dHNpZGUgb2YgbGliamluZ2xlLgorIyBUT0RP
KGJ1Z3Mud2VicnRjLm9yZy85ODM4KTogQ3JlYXRlIHNtYWxsIGFuZCBmb2N1c2VkIGJ1aWxkIHRh
cmdldHMgYW5kIHJlbW92ZQorIyB0aGUgb2xkIGNvbmNlcHQgb2YgcnRjX2Jhc2UgYW5kIHJ0Y19i
YXNlX2FwcHJvdmVkLgogcnRjX3NvdXJjZV9zZXQoInJ0Y19iYXNlX2FwcHJvdmVkIikgewogICB2
aXNpYmlsaXR5ID0gWyAiKiIgXQotICBwdWJsaWNfZGVwcyA9IFsKKyAgZGVwcyA9IFsKKyAgICAi
OmNoZWNrcyIsCisgICAgIjpydGNfdGFza19xdWV1ZSIsCisgICAgIjpzYWZlX2NvbXBhcmUiLAor
ICAgICI6c2FmZV9taW5tYXgiLAorICAgICI6dHlwZV90cmFpdHMiLAorICAgICIuLi9hcGk6YXJy
YXlfdmlldyIsCisgICAgIi4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCisgICAgImV4
cGVyaW1lbnRzOmZpZWxkX3RyaWFsX3BhcnNlciIsCisgICAgInN5c3RlbTphcmNoIiwKKyAgICAi
c3lzdGVtOnVudXNlZCIsCisgICAgInRoaXJkX3BhcnR5L2Jhc2U2NCIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeTptZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KKworICBzb3VyY2VzID0gWwor
ICAgICJiaW5kLmgiLAorICAgICJiaXRidWZmZXIuY2MiLAorICAgICJiaXRidWZmZXIuaCIsCisg
ICAgImJpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuY2MiLAorICAgICJiaXRyYXRlYWxsb2NhdGlv
bnN0cmF0ZWd5LmgiLAorICAgICJidWZmZXIuaCIsCisgICAgImJ1ZmZlcnF1ZXVlLmNjIiwKKyAg
ICAiYnVmZmVycXVldWUuaCIsCisgICAgImJ5dGVidWZmZXIuY2MiLAorICAgICJieXRlYnVmZmVy
LmgiLAorICAgICJieXRlb3JkZXIuaCIsCisgICAgImNvcHlvbndyaXRlYnVmZmVyLmNjIiwKKyAg
ICAiY29weW9ud3JpdGVidWZmZXIuaCIsCisgICAgImV2ZW50X3RyYWNlci5jYyIsCisgICAgImV2
ZW50X3RyYWNlci5oIiwKKyAgICAiZmlsZS5jYyIsCisgICAgImZpbGUuaCIsCisgICAgImZsYWdz
LmNjIiwKKyAgICAiZmxhZ3MuaCIsCisgICAgImZ1bmN0aW9uX3ZpZXcuaCIsCisgICAgImlnbm9y
ZV93dW5kZWYuaCIsCisgICAgImxvY2F0aW9uLmNjIiwKKyAgICAibG9jYXRpb24uaCIsCisgICAg
Im1lc3NhZ2VfYnVmZmVyX3JlYWRlci5oIiwKKyAgICAibnVtZXJpY3MvaGlzdG9ncmFtX3BlcmNl
bnRpbGVfY291bnRlci5jYyIsCisgICAgIm51bWVyaWNzL2hpc3RvZ3JhbV9wZXJjZW50aWxlX2Nv
dW50ZXIuaCIsCisgICAgIm51bWVyaWNzL21vZF9vcHMuaCIsCisgICAgIm51bWVyaWNzL21vdmlu
Z19tYXhfY291bnRlci5oIiwKKyAgICAibnVtZXJpY3Mvc2FtcGxlX2NvdW50ZXIuY2MiLAorICAg
ICJudW1lcmljcy9zYW1wbGVfY291bnRlci5oIiwKKyAgICAib25ldGltZWV2ZW50LmgiLAorICAg
ICJwbGF0Zm9ybV9maWxlLmNjIiwKKyAgICAicGxhdGZvcm1fZmlsZS5oIiwKKyAgICAicmFjZV9j
aGVja2VyLmNjIiwKKyAgICAicmFjZV9jaGVja2VyLmgiLAorICAgICJyYW5kb20uY2MiLAorICAg
ICJyYW5kb20uaCIsCisgICAgInJhdGVfc3RhdGlzdGljcy5jYyIsCisgICAgInJhdGVfc3RhdGlz
dGljcy5oIiwKKyAgICAicmF0ZXRyYWNrZXIuY2MiLAorICAgICJyYXRldHJhY2tlci5oIiwKKyAg
ICAic3dhcF9xdWV1ZS5oIiwKKyAgICAidGVtcGxhdGVfdXRpbC5oIiwKKyAgICAidGltZXN0YW1w
YWxpZ25lci5jYyIsCisgICAgInRpbWVzdGFtcGFsaWduZXIuaCIsCisgICAgInRyYWNlX2V2ZW50
LmgiLAorICAgICJ6ZXJvX21lbW9yeS5jYyIsCisgICAgInplcm9fbWVtb3J5LmgiLAorICBdCisK
KyAgaWYgKGlzX3Bvc2l4IHx8IGlzX2Z1Y2hzaWEpIHsKKyAgICBzb3VyY2VzICs9IFsgImZpbGVf
cG9zaXguY2MiIF0KKyAgfQorCisgIGlmIChpc193aW4pIHsKKyAgICBzb3VyY2VzICs9IFsKKyAg
ICAgICJmaWxlX3dpbi5jYyIsCisgICAgICAid2luL3dpbmRvd3NfdmVyc2lvbi5jYyIsCisgICAg
ICAid2luL3dpbmRvd3NfdmVyc2lvbi5oIiwKKyAgICBdCisgICAgZGF0YV9kZXBzID0gWworICAg
ICAgIi8vYnVpbGQvd2luOnJ1bnRpbWVfbGlicyIsCisgICAgXQorICB9CisKKyAgaWYgKGlzX25h
Y2wpIHsKKyAgICBkZXBzICs9IFsgIi8vbmF0aXZlX2NsaWVudF9zZGsvc3JjL2xpYnJhcmllcy9u
YWNsX2lvIiBdCisgIH0KKworICBpZiAoaXNfYW5kcm9pZCkgeworICAgIGxpYnMgPSBbICJsb2ci
IF0KKyAgfQorCisgIHB1YmxpY19kZXBzID0gWyAgIyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3
ZWJydGM6ODYwMykKICAgICAiOmF0b21pY29wcyIsCiAgICAgIjpjcml0aWNhbHNlY3Rpb24iLAog
ICAgICI6bG9nZ2luZyIsCkBAIC03OCwxNiArMTcxLDEyIEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNf
YmFzZV9hcHByb3ZlZCIpIHsKICAgICAiOnBsYXRmb3JtX3RocmVhZF90eXBlcyIsCiAgICAgIjpw
dHJfdXRpbCIsCiAgICAgIjpyZWZjb3VudCIsCi0gICAgIjpydGNfYmFzZV9hcHByb3ZlZF9nZW5l
cmljIiwKICAgICAiOnJ0Y19ldmVudCIsCiAgICAgIjpzYWZlX2NvbnZlcnNpb25zIiwKICAgICAi
OnN0cmluZ3V0aWxzIiwKICAgICAiOnRocmVhZF9jaGVja2VyIiwKICAgICAiOnRpbWV1dGlscyIs
CiAgIF0KLSAgaWYgKGlzX21hYyAmJiAhYnVpbGRfd2l0aF9jaHJvbWl1bSkgewotICAgIHB1Ymxp
Y19kZXBzICs9IFsgIjpydGNfYmFzZV9hcHByb3ZlZF9vYmpjIiBdCi0gIH0KIH0KIAogcnRjX3Nv
dXJjZV9zZXQoIm1hY3JvbWFnaWMiKSB7CkBAIC0xMTcsNiArMjA2LDkgQEAgcnRjX3NvdXJjZV9z
ZXQoInB0cl91dGlsIikgewogICBzb3VyY2VzID0gWwogICAgICJzY29wZWRfcmVmX3B0ci5oIiwK
ICAgXQorICBkZXBzID0gWworICAgICIuLi9hcGk6c2NvcGVkX3JlZnB0ciIsCisgIF0KIH0KIAog
cnRjX3NvdXJjZV9zZXQoInJlZmNvdW50IikgewpAQCAtMTQ5LDkgKzI0MSw5IEBAIHJ0Y19zb3Vy
Y2Vfc2V0KCJjcml0aWNhbHNlY3Rpb24iKSB7CiBydGNfc291cmNlX3NldCgicGxhdGZvcm1fdGhy
ZWFkIikgewogICB2aXNpYmlsaXR5ID0gWwogICAgICI6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAg
ICI6cnRjX2Jhc2VfYXBwcm92ZWRfZ2VuZXJpYyIsCiAgICAgIjpydGNfdGFza19xdWV1ZV9saWJl
dmVudCIsCiAgICAgIjpydGNfdGFza19xdWV1ZV93aW4iLAorICAgICI6cnRjX3Rhc2tfcXVldWVf
c3RkbGliIiwKICAgICAiOnNlcXVlbmNlZF90YXNrX2NoZWNrZXIiLAogICBdCiAgIHNvdXJjZXMg
PSBbCkBAIC0xNzIsNyArMjY0LDYgQEAgcnRjX3NvdXJjZV9zZXQoInBsYXRmb3JtX3RocmVhZCIp
IHsKIHJ0Y19zb3VyY2Vfc2V0KCJydGNfZXZlbnQiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjpjaGVj
a3MiLAotICAgICI6bWFjcm9tYWdpYyIsCiAgIF0KIAogICBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1
bSkgewpAQCAtMTkyLDcgKzI4Myw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfZXZlbnQiKSB7CiAK
IHJ0Y19zb3VyY2Vfc2V0KCJsb2dnaW5nIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICBs
aWJzID0gW10KICAgZGVwcyA9IFsKKyAgICAiOmNoZWNrcyIsCiAgICAgIjpjcml0aWNhbHNlY3Rp
b24iLAogICAgICI6bWFjcm9tYWdpYyIsCiAgICAgIjpwbGF0Zm9ybV90aHJlYWRfdHlwZXMiLApA
QCAtMjE5LDkgKzMxMiwxNyBAQCBydGNfc291cmNlX3NldCgibG9nZ2luZyIpIHsKICAgICBdCiAg
ICAgZGVwcyArPSBbICJzeXN0ZW06aW5saW5lIiBdCiAKKyAgICBpZiAoaXNfbWFjKSB7CisgICAg
ICBkZXBzICs9IFsgIjpsb2dnaW5nX21hYyIgXQorICAgIH0KKwogICAgICMgbG9nZ2luZy5oIG5l
ZWRzIHRoZSBkZXByZWNhdGlvbiBoZWFkZXIgd2hpbGUgZG93bnN0cmVhbSBwcm9qZWN0cyBhcmUK
ICAgICAjIHJlbW92aW5nIGNvZGUgdGhhdCBkZXBlbmRzIG9uIGxvZ2dpbmcgaW1wbGVtZW50YXRp
b24gZGV0YWlscy4KICAgICBkZXBzICs9IFsgIjpkZXByZWNhdGlvbiIgXQorCisgICAgaWYgKGlz
X2FuZHJvaWQpIHsKKyAgICAgIGxpYnMgKz0gWyAibG9nIiBdCisgICAgfQogICB9CiB9CiAKQEAg
LTI0OCw2ICszNDksNyBAQCBydGNfc291cmNlX3NldCgiYXRvbWljb3BzIikgewogcnRjX3NvdXJj
ZV9zZXQoImNoZWNrcyIpIHsKICAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NjA3KTogVGhpcyBz
aG91bGQgbm90IGJlIHB1YmxpYy4KICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgbGlicyA9IFtd
CiAgIHNvdXJjZXMgPSBbCiAgICAgImNoZWNrcy5jYyIsCiAgICAgImNoZWNrcy5oIiwKQEAgLTI1
Niw2ICszNTgsOSBAQCBydGNfc291cmNlX3NldCgiY2hlY2tzIikgewogICAgICI6c2FmZV9jb21w
YXJlIiwKICAgICAic3lzdGVtOmlubGluZSIsCiAgIF0KKyAgaWYgKGlzX2FuZHJvaWQpIHsKKyAg
ICBsaWJzICs9IFsgImxvZyIgXQorICB9CiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJyYXRlX2xpbWl0
ZXIiKSB7CkBAIC0yNjYsNiArMzcxLDcgQEAgcnRjX3NvdXJjZV9zZXQoInJhdGVfbGltaXRlciIp
IHsKICAgZGVwcyA9IFsKICAgICAiOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4vc3lzdGVt
X3dyYXBwZXJzIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0
aW9uYWwiLAogICBdCiB9CiAKQEAgLTI3Myw2ICszNzksOSBAQCBydGNfc291cmNlX3NldCgic2Fu
aXRpemVyIikgewogICBzb3VyY2VzID0gWwogICAgICJzYW5pdGl6ZXIuaCIsCiAgIF0KKyAgZGVw
cyA9IFsKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YTp0eXBlX3RyYWl0
cyIsCisgIF0KIH0KIAogcnRjX3NvdXJjZV9zZXQoInNhZmVfY29tcGFyZSIpIHsKQEAgLTM2Miwx
MzcgKzQ3MSwxNCBAQCBydGNfc291cmNlX3NldCgiZGVwcmVjYXRpb24iKSB7CiAgIF0KIH0KIAot
IyBUaGUgc3Vic2V0IG9mIHJ0Y19iYXNlIGFwcHJvdmVkIGZvciB1c2Ugb3V0c2lkZSBvZiBsaWJq
aW5nbGUuCi1ydGNfc291cmNlX3NldCgicnRjX2Jhc2VfYXBwcm92ZWRfZ2VuZXJpYyIpIHsKLSAg
dmlzaWJpbGl0eSA9IFsKLSAgICAiOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAiOndlYWtfcHRy
X3VuaXR0ZXN0cyIsCi0gIF0KLQotICBjZmxhZ3MgPSBbXQotICBkZWZpbmVzID0gW10KLSAgbGli
cyA9IFtdCi0gIGRhdGFfZGVwcyA9IFtdCi0gIGRlcHMgPSBbCi0gICAgIjphdG9taWNvcHMiLAot
ICAgICI6Y2hlY2tzIiwKLSAgICAiOmNyaXRpY2Fsc2VjdGlvbiIsCi0gICAgIjpsb2dnaW5nIiwK
LSAgICAiOm1hY3JvbWFnaWMiLAotICAgICI6cGxhdGZvcm1fdGhyZWFkIiwKLSAgICAiOnBsYXRm
b3JtX3RocmVhZF90eXBlcyIsCi0gICAgIjpwdHJfdXRpbCIsCi0gICAgIjpyZWZjb3VudCIsCi0g
ICAgIjpydGNfZXZlbnQiLAotICAgICI6cnRjX3Rhc2tfcXVldWUiLAotICAgICI6c2FmZV9jb21w
YXJlIiwKLSAgICAiOnNhZmVfY29udmVyc2lvbnMiLAotICAgICI6c3RyaW5ndXRpbHMiLAotICAg
ICI6dGhyZWFkX2NoZWNrZXIiLAotICAgICI6dGltZXV0aWxzIiwKLSAgICAiOnR5cGVfdHJhaXRz
IiwKLSAgICAic3lzdGVtOmFyY2giLAotICAgICJzeXN0ZW06dW51c2VkIiwKLSAgICAidGhpcmRf
cGFydHkvYmFzZTY0IiwKLSAgXQotCi0gIHNvdXJjZXMgPSBbCi0gICAgImJpbmQuaCIsCi0gICAg
ImJpdGJ1ZmZlci5jYyIsCi0gICAgImJpdGJ1ZmZlci5oIiwKLSAgICAiYml0cmF0ZWFsbG9jYXRp
b25zdHJhdGVneS5jYyIsCi0gICAgImJpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuaCIsCi0gICAg
ImJ1ZmZlci5oIiwKLSAgICAiYnVmZmVycXVldWUuY2MiLAotICAgICJidWZmZXJxdWV1ZS5oIiwK
LSAgICAiYnl0ZWJ1ZmZlci5jYyIsCi0gICAgImJ5dGVidWZmZXIuaCIsCi0gICAgImJ5dGVvcmRl
ci5oIiwKLSAgICAiY29weW9ud3JpdGVidWZmZXIuY2MiLAotICAgICJjb3B5b253cml0ZWJ1ZmZl
ci5oIiwKLSAgICAiZXZlbnRfdHJhY2VyLmNjIiwKLSAgICAiZXZlbnRfdHJhY2VyLmgiLAotICAg
ICJmaWxlLmNjIiwKLSAgICAiZmlsZS5oIiwKLSAgICAiZmxhZ3MuY2MiLAotICAgICJmbGFncy5o
IiwKLSAgICAiZnVuY3Rpb25fdmlldy5oIiwKLSAgICAiaWdub3JlX3d1bmRlZi5oIiwKLSAgICAi
bG9jYXRpb24uY2MiLAotICAgICJsb2NhdGlvbi5oIiwKLSAgICAibWVzc2FnZV9idWZmZXJfcmVh
ZGVyLmgiLAotICAgICJudW1lcmljcy9oaXN0b2dyYW1fcGVyY2VudGlsZV9jb3VudGVyLmNjIiwK
LSAgICAibnVtZXJpY3MvaGlzdG9ncmFtX3BlcmNlbnRpbGVfY291bnRlci5oIiwKLSAgICAibnVt
ZXJpY3MvbW9kX29wcy5oIiwKLSAgICAibnVtZXJpY3MvbW92aW5nX21heF9jb3VudGVyLmgiLAot
ICAgICJudW1lcmljcy9zYW1wbGVfY291bnRlci5jYyIsCi0gICAgIm51bWVyaWNzL3NhbXBsZV9j
b3VudGVyLmgiLAotICAgICJvbmV0aW1lZXZlbnQuaCIsCi0gICAgInBhdGh1dGlscy5jYyIsCi0g
ICAgInBhdGh1dGlscy5oIiwKLSAgICAicGxhdGZvcm1fZmlsZS5jYyIsCi0gICAgInBsYXRmb3Jt
X2ZpbGUuaCIsCi0gICAgInJhY2VfY2hlY2tlci5jYyIsCi0gICAgInJhY2VfY2hlY2tlci5oIiwK
LSAgICAicmFuZG9tLmNjIiwKLSAgICAicmFuZG9tLmgiLAotICAgICJyYXRlX3N0YXRpc3RpY3Mu
Y2MiLAotICAgICJyYXRlX3N0YXRpc3RpY3MuaCIsCi0gICAgInJhdGV0cmFja2VyLmNjIiwKLSAg
ICAicmF0ZXRyYWNrZXIuaCIsCi0gICAgInN3YXBfcXVldWUuaCIsCi0gICAgInRlbXBsYXRlX3V0
aWwuaCIsCi0gICAgInRpbWVzdGFtcGFsaWduZXIuY2MiLAotICAgICJ0aW1lc3RhbXBhbGlnbmVy
LmgiLAotICAgICJ0cmFjZV9ldmVudC5oIiwKLSAgICAiemVyb19tZW1vcnkuY2MiLAotICAgICJ6
ZXJvX21lbW9yeS5oIiwKLSAgXQotCi0gIGRlcHMgKz0gWwotICAgICIuLjp3ZWJydGNfY29tbW9u
IiwKLSAgICAiLi4vYXBpOmFycmF5X3ZpZXciLAotICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9tZW1vcnk6bWVtb3J5IiwKLSAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXM6b3B0aW9uYWwiLAotICBdCi0KLSAgaWYgKGlzX2FuZHJvaWQpIHsKLSAgICBsaWJz
ICs9IFsgImxvZyIgXQotICB9Ci0KLSAgaWYgKGlzX3Bvc2l4IHx8IGlzX2Z1Y2hzaWEpIHsKLSAg
ICBzb3VyY2VzICs9IFsgImZpbGVfcG9zaXguY2MiIF0KLSAgfQotCi0gIGlmIChpc193aW4pIHsK
LSAgICBzb3VyY2VzICs9IFsKLSAgICAgICJmaWxlX3dpbi5jYyIsCi0gICAgICAid2luL3dpbmRv
d3NfdmVyc2lvbi5jYyIsCi0gICAgICAid2luL3dpbmRvd3NfdmVyc2lvbi5oIiwKLSAgICBdCi0g
ICAgZGF0YV9kZXBzICs9IFsgIi8vYnVpbGQvd2luOnJ1bnRpbWVfbGlicyIgXQotICB9Ci0KLSAg
aWYgKGlzX25hY2wpIHsKLSAgICBkZXBzICs9IFsgIi8vbmF0aXZlX2NsaWVudF9zZGsvc3JjL2xp
YnJhcmllcy9uYWNsX2lvIiBdCi0gIH0KLX0KLQogaWYgKGlzX21hYyAmJiAhYnVpbGRfd2l0aF9j
aHJvbWl1bSkgewotICBjb25maWcoInJ0Y19iYXNlX2FwcHJvdmVkX29iamNfYWxsX2RlcGVuZGVu
dF9jb25maWciKSB7Ci0gICAgdmlzaWJpbGl0eSA9IFsgIjpydGNfYmFzZV9hcHByb3ZlZF9vYmpj
IiBdCi0gICAgbGlicyA9IFsgIkZvdW5kYXRpb24uZnJhbWV3b3JrIiBdICAjIG5lZWRlZCBmb3Ig
bG9nZ2luZ19tYWMubW0KLSAgfQotCi0gIHJ0Y19zb3VyY2Vfc2V0KCJydGNfYmFzZV9hcHByb3Zl
ZF9vYmpjIikgewotICAgIHZpc2liaWxpdHkgPSBbICI6cnRjX2Jhc2VfYXBwcm92ZWQiIF0KLSAg
ICBhbGxfZGVwZW5kZW50X2NvbmZpZ3MgPSBbICI6cnRjX2Jhc2VfYXBwcm92ZWRfb2JqY19hbGxf
ZGVwZW5kZW50X2NvbmZpZyIgXQorICBydGNfc291cmNlX3NldCgibG9nZ2luZ19tYWMiKSB7Cisg
ICAgdmlzaWJpbGl0eSA9IFsgIjpsb2dnaW5nIiBdCisgICAgbGlicyA9IFsgIkZvdW5kYXRpb24u
ZnJhbWV3b3JrIiBdCiAgICAgc291cmNlcyA9IFsKKyAgICAgICJsb2dnaW5nX21hYy5oIiwKICAg
ICAgICJsb2dnaW5nX21hYy5tbSIsCiAgICAgXQotICAgIGRlcHMgPSBbCi0gICAgICAiOmxvZ2dp
bmciLAotICAgIF0KICAgfQogfQogCkBAIC01MjksNiArNTE1LDcgQEAgcnRjX3NvdXJjZV9zZXQo
InJ0Y190YXNrX3F1ZXVlX2FwaSIpIHsKICAgZGVwcyA9IFsKICAgICAiOm1hY3JvbWFnaWMiLAog
ICAgICI6cHRyX3V0aWwiLAorICAgICJzeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIH0KQEAgLTU2NSw3ICs1NTIsOSBA
QCBpZiAocnRjX2VuYWJsZV9saWJldmVudCkgewogICAgICAgIjpjaGVja3MiLAogICAgICAgIjpj
cml0aWNhbHNlY3Rpb24iLAogICAgICAgIjpsb2dnaW5nIiwKKyAgICAgICI6bWFjcm9tYWdpYyIs
CiAgICAgICAiOnBsYXRmb3JtX3RocmVhZCIsCisgICAgICAiOnBsYXRmb3JtX3RocmVhZF90eXBl
cyIsCiAgICAgICAiOnB0cl91dGlsIiwKICAgICAgICI6cmVmY291bnQiLAogICAgICAgIjpydGNf
dGFza19xdWV1ZV9hcGkiLApAQCAtNjE5LDYgKzYwOCwyNiBAQCBpZiAoaXNfd2luKSB7CiAgIH0K
IH0KIAorcnRjX3NvdXJjZV9zZXQoInJ0Y190YXNrX3F1ZXVlX3N0ZGxpYiIpIHsKKyAgdmlzaWJp
bGl0eSA9IFsgIjpydGNfdGFza19xdWV1ZV9pbXBsIiBdCisgIHNvdXJjZXMgPSBbCisgICAgInRh
c2tfcXVldWVfc3RkbGliLmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y2hlY2tzIiwKKyAg
ICAiOmNyaXRpY2Fsc2VjdGlvbiIsCisgICAgIjpsb2dnaW5nIiwKKyAgICAiOm1hY3JvbWFnaWMi
LAorICAgICI6cGxhdGZvcm1fdGhyZWFkIiwKKyAgICAiOnB0cl91dGlsIiwKKyAgICAiOnJlZmNv
dW50IiwKKyAgICAiOnJ0Y19ldmVudCIsCisgICAgIjpydGNfdGFza19xdWV1ZV9hcGkiLAorICAg
ICI6c2FmZV9jb252ZXJzaW9ucyIsCisgICAgIjp0aW1ldXRpbHMiLAorICBdCit9CisKIHJ0Y19z
b3VyY2Vfc2V0KCJydGNfdGFza19xdWV1ZV9pbXBsIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIg
XQogICBpZiAocnRjX2VuYWJsZV9saWJldmVudCkgewpAQCAtNjMyLDkgKzY0MSwxNSBAQCBydGNf
c291cmNlX3NldCgicnRjX3Rhc2tfcXVldWVfaW1wbCIpIHsKICAgICAgIF0KICAgICB9CiAgICAg
aWYgKGlzX3dpbikgewotICAgICAgZGVwcyA9IFsKLSAgICAgICAgIjpydGNfdGFza19xdWV1ZV93
aW4iLAotICAgICAgXQorICAgICAgaWYgKGN1cnJlbnRfb3MgPT0gIndpbnV3cCIpIHsKKyAgICAg
ICAgZGVwcyA9IFsKKyAgICAgICAgICAiOnJ0Y190YXNrX3F1ZXVlX3N0ZGxpYiIsCisgICAgICAg
IF0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGRlcHMgPSBbCisgICAgICAgICAgIjpydGNfdGFz
a19xdWV1ZV93aW4iLAorICAgICAgICBdCisgICAgICB9CiAgICAgfQogICB9CiB9CkBAIC02NzAs
NiArNjg1LDggQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfbnVtZXJpY3MiKSB7CiAgIHNvdXJj
ZXMgPSBbCiAgICAgIm51bWVyaWNzL2V4cF9maWx0ZXIuY2MiLAogICAgICJudW1lcmljcy9leHBf
ZmlsdGVyLmgiLAorICAgICJudW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5jYyIsCisgICAgIm51bWVy
aWNzL21vdmluZ19hdmVyYWdlLmgiLAogICAgICJudW1lcmljcy9tb3ZpbmdfbWVkaWFuX2ZpbHRl
ci5oIiwKICAgICAibnVtZXJpY3MvcGVyY2VudGlsZV9maWx0ZXIuaCIsCiAgICAgIm51bWVyaWNz
L3NlcXVlbmNlX251bWJlcl91dGlsLmgiLApAQCAtNzA3LDQ4ICs3MjQsMjMgQEAgcnRjX3NvdXJj
ZV9zZXQoInJ0Y19qc29uIikgewogCiBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19iYXNlIikgewog
ICB2aXNpYmlsaXR5ID0gWyAiKiIgXQotICBwdWJsaWNfZGVwcyA9IFtdCi0gIGlmICghYnVpbGRf
d2l0aF9tb3ppbGxhKSB7Ci0gICAgcHVibGljX2RlcHMgKz0gWyAiOnJ0Y19iYXNlX2dlbmVyaWMi
IF0KLSAgfQotICBpZiAoaXNfd2luKSB7Ci0gICAgc291cmNlcyA9IFsKLSAgICAgICJub29wLmNj
IiwKLSAgICBdCi0gIH0KLSAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKLSAgICBzb3VyY2VzID0g
WwotICAgICAgIm5vb3AubW0iLAotICAgIF0KLSAgICBwdWJsaWNfZGVwcyArPSBbICI6cnRjX2Jh
c2Vfb2JqYyIgXQotICB9Ci19Ci0KLWlmIChpc19pb3MgfHwgaXNfbWFjKSB7Ci0gIHJ0Y19zb3Vy
Y2Vfc2V0KCJydGNfYmFzZV9vYmpjIikgewotICAgIHNvdXJjZXMgPSBbCi0gICAgICAidGhyZWFk
X2Rhcndpbi5tbSIsCi0gICAgXQotICAgIGRlcHMgPSBbCi0gICAgICAiOnJ0Y19iYXNlX2dlbmVy
aWMiLAotICAgIF0KLSAgICB2aXNpYmlsaXR5ID0gWyAiOnJ0Y19iYXNlIiBdCi0gIH0KLX0KLQot
cnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewogICBjZmxhZ3MgPSBbXQog
ICBjZmxhZ3NfY2MgPSBbXQogICBsaWJzID0gW10KICAgZGVmaW5lcyA9IFtdCiAgIGRlcHMgPSBb
CiAgICAgIjpjaGVja3MiLAorCisgICAgIyBGb3IgZGVwcmVjYXRpb24gb2YgcnRjOjpQYWNrZXRU
aW1lLCBpbiBhc3luY3BhY2tldHNvY2tldC5oLgorICAgICI6ZGVwcmVjYXRpb24iLAogICAgICI6
c3RyaW5ndXRpbHMiLAogICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vYXBpOmFycmF5
X3ZpZXciLAorICAgICJuZXR3b3JrOnNlbnRfcGFja2V0IiwKICAgICAidGhpcmRfcGFydHkvYmFz
ZTY0IiwKICAgICAidGhpcmRfcGFydHkvc2lnc2xvdCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRp
b25hbCIsCiAgIF0KICAgcHVibGljX2RlcHMgPSBbCkBAIC03ODEsOCArNzczLDYgQEAgcnRjX3N0
YXRpY19saWJyYXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewogICAgICJkc2NwLmgiLAogICAgICJm
aWxlcm90YXRpbmdzdHJlYW0uY2MiLAogICAgICJmaWxlcm90YXRpbmdzdHJlYW0uaCIsCi0gICAg
ImZpbGV1dGlscy5jYyIsCi0gICAgImZpbGV1dGlscy5oIiwKICAgICAiZ3VuaXRfcHJvZC5oIiwK
ICAgICAiaGVscGVycy5jYyIsCiAgICAgImhlbHBlcnMuaCIsCkBAIC03OTEsNiArNzgxLDggQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewogICAgICJpcGFkZHJlc3Mu
Y2MiLAogICAgICJpcGFkZHJlc3MuaCIsCiAgICAgImtlZXBfcmVmX3VudGlsX2RvbmUuaCIsCisg
ICAgImtleV9kZXJpdmF0aW9uLmNjIiwKKyAgICAia2V5X2Rlcml2YXRpb24uaCIsCiAgICAgIm1k
bnNfcmVzcG9uZGVyX2ludGVyZmFjZS5oIiwKICAgICAibWVzc2FnZWRpZ2VzdC5jYyIsCiAgICAg
Im1lc3NhZ2VkaWdlc3QuaCIsCkBAIC04MTEsNiArODAzLDggQEAgcnRjX3N0YXRpY19saWJyYXJ5
KCJydGNfYmFzZV9nZW5lcmljIikgewogICAgICJudWxsc29ja2V0c2VydmVyLmNjIiwKICAgICAi
bnVsbHNvY2tldHNlcnZlci5oIiwKICAgICAib3BlbnNzbC5oIiwKKyAgICAib3BlbnNzbF9rZXlf
ZGVyaXZhdGlvbl9oa2RmLmNjIiwKKyAgICAib3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmgi
LAogICAgICJvcGVuc3NsYWRhcHRlci5jYyIsCiAgICAgIm9wZW5zc2xhZGFwdGVyLmgiLAogICAg
ICJvcGVuc3NsY2VydGlmaWNhdGUuY2MiLApAQCAtODQ2LDggKzg0MCw2IEBAIHJ0Y19zdGF0aWNf
bGlicmFyeSgicnRjX2Jhc2VfZ2VuZXJpYyIpIHsKICAgICAic29ja2V0YWRkcmVzc3BhaXIuaCIs
CiAgICAgInNvY2tldGZhY3RvcnkuaCIsCiAgICAgInNvY2tldHNlcnZlci5oIiwKLSAgICAic29j
a2V0c3RyZWFtLmNjIiwKLSAgICAic29ja2V0c3RyZWFtLmgiLAogICAgICJzc2xhZGFwdGVyLmNj
IiwKICAgICAic3NsYWRhcHRlci5oIiwKICAgICAic3NsY2VydGlmaWNhdGUuY2MiLApAQCAtODY0
LDExICs4NTYsNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19iYXNlX2dlbmVyaWMiKSB7CiAg
ICAgInRocmVhZC5oIiwKICAgXQogCi0gIHZpc2liaWxpdHkgPSBbCi0gICAgIjpydGNfYmFzZSIs
Ci0gICAgIjpydGNfYmFzZV9vYmpjIiwKLSAgXQotCiAgIGlmIChidWlsZF93aXRoX2Nocm9taXVt
KSB7CiAgICAgaW5jbHVkZV9kaXJzID0gWyAiLi4vLi4vYm9yaW5nc3NsL3NyYy9pbmNsdWRlIiBd
CiAgICAgcHVibGljX2NvbmZpZ3MgKz0gWyAiOnJ0Y19iYXNlX2Nocm9taXVtX2NvbmZpZyIgXQpA
QCAtODc4LDggKzg2NSw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2Jhc2VfZ2VuZXJpYyIp
IHsKICAgICAgICJsb2dzaW5rcy5jYyIsCiAgICAgICAibG9nc2lua3MuaCIsCiAgICAgICAibnVt
ZXJpY3MvbWF0aHV0aWxzLmgiLAotICAgICAgIm9wdGlvbnNmaWxlLmNjIiwKLSAgICAgICJvcHRp
b25zZmlsZS5oIiwKICAgICAgICJyb2xsaW5nYWNjdW11bGF0b3IuaCIsCiAgICAgICAic3Nscm9v
dHMuaCIsCiAgICAgXQpAQCAtOTEzLDYgKzg5OCw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRj
X2Jhc2VfZ2VuZXJpYyIpIHsKIAogICBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgIHNvdXJj
ZXMgKz0gWyAibWFjaWZhZGRyc19jb252ZXJ0ZXIuY2MiIF0KKyAgICBkZXBzICs9IFsgInN5c3Rl
bTpjb2NvYV90aHJlYWRpbmciIF0KICAgfQogCiAgIGlmIChydGNfdXNlX3gxMSkgewpAQCAtOTM4
LDE4ICs5MjQsMTIgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewog
ICAgICAgIm1hY3V0aWxzLmNjIiwKICAgICAgICJtYWN1dGlscy5oIiwKICAgICBdCi0gICAgbGli
cyArPSBbCi0gICAgICAjIEZvciBQcm9jZXNzSW5mb3JtYXRpb25Db3B5RGljdGlvbmFyeSBpbiB1
bml4ZmlsZXN5c3RlbS5jYy4KLSAgICAgICJBcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yayIs
Ci0gICAgXQogICB9CiAKICAgaWYgKGlzX3dpbikgewogICAgIHNvdXJjZXMgKz0gWwogICAgICAg
IndpbjMyLmNjIiwKICAgICAgICJ3aW4zMi5oIiwKLSAgICAgICJ3aW4zMmZpbGVzeXN0ZW0uY2Mi
LAotICAgICAgIndpbjMyZmlsZXN5c3RlbS5oIiwKICAgICAgICJ3aW4zMndpbmRvdy5jYyIsCiAg
ICAgICAid2luMzJ3aW5kb3cuaCIsCiAgICAgXQpAQCAtOTY3LDggKzk0Nyw2IEBAIHJ0Y19zdGF0
aWNfbGlicmFyeSgicnRjX2Jhc2VfZ2VuZXJpYyIpIHsKICAgICBzb3VyY2VzICs9IFsKICAgICAg
ICJpZmFkZHJzX2NvbnZlcnRlci5jYyIsCiAgICAgICAiaWZhZGRyc19jb252ZXJ0ZXIuaCIsCi0g
ICAgICAidW5peGZpbGVzeXN0ZW0uY2MiLAotICAgICAgInVuaXhmaWxlc3lzdGVtLmgiLAogICAg
IF0KICAgfQogCkBAIC05ODYsMTEgKzk2NCw0MSBAQCBydGNfc291cmNlX3NldCgiZ3Rlc3RfcHJv
ZCIpIHsKICAgXQogfQogCitydGNfc291cmNlX3NldCgiZ3VuaXRfaGVscGVycyIpIHsKKyAgdGVz
dG9ubHkgPSB0cnVlCisgIHNvdXJjZXMgPSBbCisgICAgImd1bml0LmNjIiwKKyAgICAiZ3VuaXQu
aCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmxvZ2dpbmciLAorICAgICI6cnRjX2Jhc2UiLAor
ICAgICI6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAorICAgICI6c3RyaW5ndXRpbHMiLAorICAgICIu
Li90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgIF0KK30KKworcnRjX3NvdXJjZV9zZXQoInRlc3RjbGll
bnQiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBzb3VyY2VzID0gWworICAgICJ0ZXN0Y2xpZW50
LmNjIiwKKyAgICAidGVzdGNsaWVudC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y3JpdGlj
YWxzZWN0aW9uIiwKKyAgICAiOmd1bml0X2hlbHBlcnMiLAorICAgICI6bWFjcm9tYWdpYyIsCisg
ICAgIjpydGNfYmFzZSIsCisgICAgIjpydGNfYmFzZV90ZXN0c191dGlscyIsCisgICAgIjp0aW1l
dXRpbHMiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnk6bWVtb3J5
IiwKKyAgXQorfQorCiBydGNfc291cmNlX3NldCgicnRjX2Jhc2VfdGVzdHNfdXRpbHMiKSB7CiAg
IHRlc3Rvbmx5ID0gdHJ1ZQogICBzb3VyY2VzID0gWwotICAgICMgQWxzbyB1c2UgdGhpcyBhcyBh
IGNvbnZlbmllbnQgZHVtcGluZyBncm91bmQgZm9yIG1pc2MgZmlsZXMgdGhhdCBhcmUKLSAgICAj
IGluY2x1ZGVkIGJ5IG11bHRpcGxlIHRhcmdldHMgYmVsb3cuCiAgICAgImNwdV90aW1lLmNjIiwK
ICAgICAiY3B1X3RpbWUuaCIsCiAgICAgImZha2VfbWRuc19yZXNwb25kZXIuaCIsCkBAIC0xMDAx
LDggKzEwMDksOCBAQCBydGNfc291cmNlX3NldCgicnRjX2Jhc2VfdGVzdHNfdXRpbHMiKSB7CiAg
ICAgImZha2Vzc2xpZGVudGl0eS5oIiwKICAgICAiZmlyZXdhbGxzb2NrZXRzZXJ2ZXIuY2MiLAog
ICAgICJmaXJld2FsbHNvY2tldHNlcnZlci5oIiwKLSAgICAiZ3VuaXQuY2MiLAotICAgICJndW5p
dC5oIiwKKyAgICAibWVtb3J5X3N0cmVhbS5jYyIsCisgICAgIm1lbW9yeV9zdHJlYW0uaCIsCiAg
ICAgIm1lbW9yeV91c2FnZS5jYyIsCiAgICAgIm1lbW9yeV91c2FnZS5oIiwKICAgICAibmF0c2Vy
dmVyLmNjIiwKQEAgLTEwMTUsMTAgKzEwMjMsMTAgQEAgcnRjX3NvdXJjZV9zZXQoInJ0Y19iYXNl
X3Rlc3RzX3V0aWxzIikgewogICAgICJwcm94eXNlcnZlci5oIiwKICAgICAic2lnc2xvdHRlc3Rl
ci5oIiwKICAgICAic2lnc2xvdHRlc3Rlci5oLnB1bXAiLAorICAgICJzb2NrZXRzdHJlYW0uY2Mi
LAorICAgICJzb2NrZXRzdHJlYW0uaCIsCiAgICAgInRlc3RiYXNlNjQuaCIsCiAgICAgInRlc3Rj
ZXJ0aWZpY2F0ZXZlcmlmaWVyLmgiLAotICAgICJ0ZXN0Y2xpZW50LmNjIiwKLSAgICAidGVzdGNs
aWVudC5oIiwKICAgICAidGVzdGVjaG9zZXJ2ZXIuY2MiLAogICAgICJ0ZXN0ZWNob3NlcnZlci5o
IiwKICAgICAidGVzdHV0aWxzLmNjIiwKQEAgLTEwMjksMTYgKzEwMzcsMTAgQEAgcnRjX3NvdXJj
ZV9zZXQoInJ0Y19iYXNlX3Rlc3RzX3V0aWxzIikgewogICBkZXBzID0gWwogICAgICI6Y2hlY2tz
IiwKICAgICAiOnJ0Y19iYXNlIiwKLSAgICAiOnN0cmluZ3V0aWxzIiwKICAgICAiLi4vYXBpL3Vu
aXRzOnRpbWVfZGVsdGEiLAotICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCi0gICAgInN5c3Rl
bTpmYWxsdGhyb3VnaCIsCiAgICAgInRoaXJkX3BhcnR5L3NpZ3Nsb3QiLAogICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCi0gIHB1YmxpY19kZXBzID0gWwot
ICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAotICBdCiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJydGNfdGFz
a19xdWV1ZV9mb3JfdGVzdCIpIHsKQEAgLTEwNjMsNiArMTA2NSw3IEBAIGlmIChydGNfaW5jbHVk
ZV90ZXN0cykgewogICAgICAgInNpZ3Nsb3RfdW5pdHRlc3QuY2MiLAogICAgIF0KICAgICBkZXBz
ID0gWworICAgICAgIjpndW5pdF9oZWxwZXJzIiwKICAgICAgICI6cnRjX2Jhc2UiLAogICAgICAg
IjpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAidGhpcmRfcGFydHkvc2lnc2xvdCIsCkBA
IC0xMDc1LDEzICsxMDc4LDEzIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgInVu
aXR0ZXN0X21haW4uY2MiLAogICAgIF0KICAgICBkZXBzID0gWworICAgICAgIjpndW5pdF9oZWxw
ZXJzIiwKICAgICAgICI6cnRjX2Jhc2UiLAogICAgICAgIjpydGNfYmFzZV9hcHByb3ZlZCIsCiAg
ICAgICAiOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6
ZmllbGRfdHJpYWwiLAogICAgICAgIi4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKICAgICAg
ICIuLi90ZXN0OmZpZWxkX3RyaWFsIiwKLSAgICAgICIuLi90ZXN0OmZpbGV1dGlscyIsCiAgICAg
ICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgIF0KIApAQCAtMTEwNCw5ICsxMTA3LDExIEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIF0KICAgICBkZXBzID0gWwogICAgICAgIjpj
aGVja3MiLAorICAgICAgIjpndW5pdF9oZWxwZXJzIiwKICAgICAgICI6cnRjX2Jhc2UiLAogICAg
ICAgIjpydGNfYmFzZV90ZXN0c19tYWluIiwKICAgICAgICI6cnRjX2Jhc2VfdGVzdHNfdXRpbHMi
LAorICAgICAgIjp0ZXN0Y2xpZW50IiwKICAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6c3lzdGVt
X3dyYXBwZXJzIiwKICAgICAgICIuLi90ZXN0OmZpbGV1dGlscyIsCiAgICAgICAiLi4vdGVzdDp0
ZXN0X3N1cHBvcnQiLApAQCAtMTE0Nyw3ICsxMTUyLDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3Rz
KSB7CiAgICAgICAibnVtZXJpY3Mvc2FmZV9taW5tYXhfdW5pdHRlc3QuY2MiLAogICAgICAgIm51
bWVyaWNzL3NhbXBsZV9jb3VudGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICJvbmV0aW1lZXZlbnRf
dW5pdHRlc3QuY2MiLAotICAgICAgInBhdGh1dGlsc191bml0dGVzdC5jYyIsCiAgICAgICAicGxh
dGZvcm1fZmlsZV91bml0dGVzdC5jYyIsCiAgICAgICAicGxhdGZvcm1fdGhyZWFkX3VuaXR0ZXN0
LmNjIiwKICAgICAgICJyYW5kb21fdW5pdHRlc3QuY2MiLApAQCAtMTE3NCw2ICsxMTc4LDcgQEAg
aWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgfQogICAgIGRlcHMgPSBbCiAgICAgICAiOmNo
ZWNrcyIsCisgICAgICAiOmd1bml0X2hlbHBlcnMiLAogICAgICAgIjpyYXRlX2xpbWl0ZXIiLAog
ICAgICAgIjpydGNfYmFzZSIsCiAgICAgICAiOnJ0Y19iYXNlX2FwcHJvdmVkIiwKQEAgLTExODQs
NiArMTE4OSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpzYWZlX21pbm1h
eCIsCiAgICAgICAiOnNhbml0aXplciIsCiAgICAgICAiOnN0cmluZ3V0aWxzIiwKKyAgICAgICI6
dGVzdGNsaWVudCIsCiAgICAgICAiLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICAgIi4uL3N5c3Rl
bV93cmFwcGVyczpzeXN0ZW1fd3JhcHBlcnMiLAogICAgICAgIi4uL3Rlc3Q6ZmlsZXV0aWxzIiwK
QEAgLTEyMDMsNiArMTIwOSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgInRh
c2tfcXVldWVfdW5pdHRlc3QuY2MiLAogICAgIF0KICAgICBkZXBzID0gWworICAgICAgIjpndW5p
dF9oZWxwZXJzIiwKICAgICAgICI6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIjpydGNfYmFz
ZV90ZXN0c19tYWluIiwKICAgICAgICI6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLApAQCAtMTIzNiw3
ICsxMjQzLDggQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAid2Vha19wdHJfdW5p
dHRlc3QuY2MiLAogICAgIF0KICAgICBkZXBzID0gWwotICAgICAgIjpydGNfYmFzZV9hcHByb3Zl
ZF9nZW5lcmljIiwKKyAgICAgICI6Z3VuaXRfaGVscGVycyIsCisgICAgICAiOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKICAgICAgICI6cnRjX2Jhc2VfdGVzdHNfbWFpbiIsCiAgICAgICAiOnJ0Y19iYXNl
X3Rlc3RzX3V0aWxzIiwKICAgICAgICI6cnRjX2V2ZW50IiwKQEAgLTEyNTEsNiArMTI1OSw3IEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogCiAgICAgc291cmNlcyA9IFsKICAgICAgICJudW1l
cmljcy9leHBfZmlsdGVyX3VuaXR0ZXN0LmNjIiwKKyAgICAgICJudW1lcmljcy9tb3ZpbmdfYXZl
cmFnZV91bml0dGVzdC5jYyIsCiAgICAgICAibnVtZXJpY3MvbW92aW5nX21lZGlhbl9maWx0ZXJf
dW5pdHRlc3QuY2MiLAogICAgICAgIm51bWVyaWNzL3BlcmNlbnRpbGVfZmlsdGVyX3VuaXR0ZXN0
LmNjIiwKICAgICAgICJudW1lcmljcy9zZXF1ZW5jZV9udW1iZXJfdXRpbF91bml0dGVzdC5jYyIs
CkBAIC0xMjcwLDYgKzEyNzksNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJz
dHJpbmdzL2pzb25fdW5pdHRlc3QuY2MiLAogICAgIF0KICAgICBkZXBzID0gWworICAgICAgIjpn
dW5pdF9oZWxwZXJzIiwKICAgICAgICI6cnRjX2Jhc2VfdGVzdHNfbWFpbiIsCiAgICAgICAiOnJ0
Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICI6cnRjX2pzb24iLApAQCAtMTI5Miw3ICsxMzAy
LDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAibWVzc2FnZXF1ZXVlX3VuaXR0
ZXN0LmNjIiwKICAgICAgICJuYXRfdW5pdHRlc3QuY2MiLAogICAgICAgIm5ldHdvcmtfdW5pdHRl
c3QuY2MiLAotICAgICAgIm9wdGlvbnNmaWxlX3VuaXR0ZXN0LmNjIiwKICAgICAgICJwcm94eV91
bml0dGVzdC5jYyIsCiAgICAgICAicm9sbGluZ2FjY3VtdWxhdG9yX3VuaXR0ZXN0LmNjIiwKICAg
ICAgICJydGNjZXJ0aWZpY2F0ZV91bml0dGVzdC5jYyIsCkBAIC0xMzExLDYgKzEzMjAsNyBAQCBp
ZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICB9CiAgICAgaWYgKGlzX3Bvc2l4IHx8IGlzX2Z1
Y2hzaWEpIHsKICAgICAgIHNvdXJjZXMgKz0gWworICAgICAgICAib3BlbnNzbF9rZXlfZGVyaXZh
dGlvbl9oa2RmX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgIm9wZW5zc2xhZGFwdGVyX3VuaXR0ZXN0
LmNjIiwKICAgICAgICAgIm9wZW5zc2xzZXNzaW9uY2FjaGVfdW5pdHRlc3QuY2MiLAogICAgICAg
ICAib3BlbnNzbHV0aWxpdHlfdW5pdHRlc3QuY2MiLApAQCAtMTMyMSw5ICsxMzMxLDExIEBAIGlm
IChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIH0KICAgICBkZXBzID0gWwogICAgICAgIjpjaGVj
a3MiLAorICAgICAgIjpndW5pdF9oZWxwZXJzIiwKICAgICAgICI6cnRjX2Jhc2VfdGVzdHNfbWFp
biIsCiAgICAgICAiOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICI6c3RyaW5ndXRpbHMi
LAorICAgICAgIjp0ZXN0Y2xpZW50IiwKICAgICAgICIuLi9hcGk6YXJyYXlfdmlldyIsCiAgICAg
ICAiLi4vdGVzdDpmaWxldXRpbHMiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL0R1bW15LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9EdW1teS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGYw
MmM5MGRiZjY2MGRkMDU4ZWU1ZDEzNmU5MWEyNGVlZmEyZTIxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL0R1bW15LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOSAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0vKioKLSAqIFRoaXMgY2xhc3Mgb25seSBleGlz
dHMgYXMgZ2x1ZSBpbiBhIHRyYW5zaXRpb24uCi0gKiBUT0RPKGtqZWxsYW5kZXIpOiBSZW1vdmUu
Ci0gKiBTZWUgaHR0cHM6Ly9idWdzLndlYnJ0Yy5vcmcvNzYzNCBmb3IgbW9yZSBkZXRhaWxzLgot
ICovCi1jbGFzcyBEdW1teSB7Ci0gIER1bW15KCkgewotICB9Ci19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9PV05FUlMgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9PV05FUlMK
aW5kZXggNjljZTI1MzA4N2Y1OWIxN2I3NmYyYTVjZTgwNzI5MGJjYmYyYmIxNC4uZTY3ZTgzNDBm
N2M3ODkwZjcwZTUxYjIzNjg5NTVhMTdlOTYxNWU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvT1dORVJTCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL09XTkVSUwpAQCAt
Miw3ICsyLDYgQEAgaHRhQHdlYnJ0Yy5vcmcKIGp1YmVydGlAd2VicnRjLm9yZwoga3dpYmVyZ0B3
ZWJydGMub3JnCiBtZmxvZG1hbkB3ZWJydGMub3JnCi1wZXJrakB3ZWJydGMub3JnCiBwdGhhdGNo
ZXJAd2VicnRjLm9yZwogcWluZ3NpQHdlYnJ0Yy5vcmcKIHNlcmdleXVAY2hyb21pdW0ub3JnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9hc3luY2ludm9rZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9hc3luY2ludm9rZXIuY2MKaW5kZXggZTI1NWZiOThmY2NiNzI3NmI0
OWYzMjZlODE3NzdlNzA5ODA0NWEwMC4uZjBkZDE4ODFlZjM0NzJiODVjMjYwZDQ3NmQ2NjFmZGU4
MzIzMDcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvYXN5bmNpbnZva2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jaW52b2tlci5jYwpAQCAtMTcsNyAr
MTcsNyBAQCBuYW1lc3BhY2UgcnRjIHsKIAogQXN5bmNJbnZva2VyOjpBc3luY0ludm9rZXIoKQog
ICAgIDogcGVuZGluZ19pbnZvY2F0aW9uc18oMCksCi0gICAgICBpbnZvY2F0aW9uX2NvbXBsZXRl
XyhuZXcgUmVmQ291bnRlZE9iamVjdDxFdmVudD4oZmFsc2UsIGZhbHNlKSksCisgICAgICBpbnZv
Y2F0aW9uX2NvbXBsZXRlXyhuZXcgUmVmQ291bnRlZE9iamVjdDxFdmVudD4oKSksCiAgICAgICBk
ZXN0cm95aW5nXyhmYWxzZSkge30KIAogQXN5bmNJbnZva2VyOjp+QXN5bmNJbnZva2VyKCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5jYwppbmRleCBlMWIxZWFl
NmEzMWQ3MzViNzAzYWYyNGI1OGNjODE4NGI4YzFkY2I5Li43ZTBjYzhmODEwMTFlNTk2YzQzODA1
YjIwYzllZDYyOWFhNGIxYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3BhY2tl
dHNvY2tldC5jYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5
bmNwYWNrZXRzb2NrZXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXRoZWxwZXIuaCIKIAogbmFt
ZXNwYWNlIHJ0YyB7CiAKQEAgLTMzLDkgKzM0LDExIEBAIHZvaWQgQ29weVNvY2tldEluZm9ybWF0
aW9uVG9QYWNrZXRJbmZvKHNpemVfdCBwYWNrZXRfc2l6ZV9ieXRlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfY29ubmVjdGlvbmxlc3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldEluZm8qIGluZm8pIHsK
ICAgaW5mby0+cGFja2V0X3NpemVfYnl0ZXMgPSBwYWNrZXRfc2l6ZV9ieXRlczsKLSAgaW5mby0+
bG9jYWxfc29ja2V0X2FkZHJlc3MgPSBzb2NrZXRfZnJvbS5HZXRMb2NhbEFkZHJlc3MoKTsKLSAg
aWYgKCFpc19jb25uZWN0aW9ubGVzcykgewotICAgIGluZm8tPnJlbW90ZV9zb2NrZXRfYWRkcmVz
cyA9IHNvY2tldF9mcm9tLkdldFJlbW90ZUFkZHJlc3MoKTsKKyAgLy8gVE9ETyhzcnRlKTogTWFr
ZSBzdXJlIHRoYXQgdGhlIGZhbWlseSBvZiB0aGUgbG9jYWwgc29ja2V0IGlzIGFsd2F5cyBzZXQK
KyAgLy8gaW4gdGhlIFZpcnR1YWxTb2NrZXQgaW1wbGVtZW50YXRpb24gYW5kIHJlbW92ZSB0aGlz
IGNoZWNrLgorICBpbnQgZmFtaWx5ID0gc29ja2V0X2Zyb20uR2V0TG9jYWxBZGRyZXNzKCkuZmFt
aWx5KCk7CisgIGlmIChmYW1pbHkgIT0gMCkgeworICAgIGluZm8tPmlwX292ZXJoZWFkX2J5dGVz
ID0gY3JpY2tldDo6R2V0SXBPdmVyaGVhZChmYW1pbHkpOwogICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5j
cGFja2V0c29ja2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oCmluZGV4IGJiMGIzYmNjMDQ4ZTc1ZmU0ODZl
ZmRmNjU1N2YzY2E3MTcxY2JiMDIuLjQ0ZDZjNjc0MjY3YTYxNjVmMmIxOTVmODFmMmQ4ODJmMzM2
NDEzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2FzeW5jcGFja2V0c29ja2V0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaApAQCAt
MTIsNiArMTIsNyBAQAogI2RlZmluZSBSVENfQkFTRV9BU1lOQ1BBQ0tFVFNPQ0tFVF9IXwogCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L2RlcHJlY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZHNjcC5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3NvY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qv
c2lnc2xvdC5oIgpAQCAtNTAsMjUgKzUxLDkgQEAgc3RydWN0IFBhY2tldE9wdGlvbnMgewogICBQ
YWNrZXRJbmZvIGluZm9fc2lnbmFsZWRfYWZ0ZXJfc2VudDsKIH07CiAKLS8vIFRoaXMgc3RydWN0
dXJlIHdpbGwgaGF2ZSB0aGUgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBwYWNrZXQgaXMgYWN0dWFs
bHkKLS8vIHJlY2VpdmVkIGJ5IHNvY2tldC4KLXN0cnVjdCBQYWNrZXRUaW1lIHsKLSAgUGFja2V0
VGltZSgpIDogdGltZXN0YW1wKC0xKSwgbm90X2JlZm9yZSgtMSkge30KLSAgUGFja2V0VGltZShp
bnQ2NF90IHRpbWVzdGFtcCwgaW50NjRfdCBub3RfYmVmb3JlKQotICAgICAgOiB0aW1lc3RhbXAo
dGltZXN0YW1wKSwgbm90X2JlZm9yZShub3RfYmVmb3JlKSB7fQotCi0gIGludDY0X3QgdGltZXN0
YW1wOyAgLy8gUmVjZWl2ZSB0aW1lIGFmdGVyIHNvY2tldCBkZWxpdmVycyB0aGUgZGF0YS4KLQot
ICAvLyBFYXJsaWVzdCBwb3NzaWJsZSB0aW1lIHRoZSBkYXRhIGNvdWxkIGhhdmUgYXJyaXZlZCwg
aW5kaWNhdGluZyB0aGUKLSAgLy8gcG90ZW50aWFsIGVycm9yIGluIHRoZSB8dGltZXN0YW1wfCB2
YWx1ZSwgaW4gY2FzZSB0aGUgc3lzdGVtLCBpcyBidXN5LiBGb3IKLSAgLy8gZXhhbXBsZSwgdGhl
IHRpbWUgb2YgdGhlIGxhc3Qgc2VsZWN0KCkgY2FsbC4KLSAgLy8gSWYgdW5rbm93biwgdGhpcyB2
YWx1ZSB3aWxsIGJlIHNldCB0byB6ZXJvLgotICBpbnQ2NF90IG5vdF9iZWZvcmU7Ci19OwotCi1p
bmxpbmUgUGFja2V0VGltZSBDcmVhdGVQYWNrZXRUaW1lKGludDY0X3Qgbm90X2JlZm9yZSkgewot
ICByZXR1cm4gUGFja2V0VGltZShUaW1lTWljcm9zKCksIG5vdF9iZWZvcmUpOwotfQorLy8gVE9E
TyhidWdzLndlYnJ0Yy5vcmcvOTU4NCk6IENvbXBhdGliaWxpdHkgYWxpYXMsIGRlbGV0ZSBhcyBz
b29uIGFzIGRvd25zdHJlYW0KKy8vIGNvZGUgaXMgdXBkYXRlZC4KK3R5cGVkZWYgaW50NjRfdCBQ
YWNrZXRUaW1lOwogCiAvLyBQcm92aWRlcyB0aGUgYWJpbGl0eSB0byByZWNlaXZlIHBhY2tldHMg
YXN5bmNocm9ub3VzbHkuIFNlbmRzIGFyZSBub3QKIC8vIGJ1ZmZlcmVkIHNpbmNlIGl0IGlzIGFj
Y2VwdGFibGUgdG8gZHJvcCBwYWNrZXRzIHVuZGVyIGhpZ2ggbG9hZC4KQEAgLTEyMCw3ICsxMDUs
OSBAQCBjbGFzcyBBc3luY1BhY2tldFNvY2tldCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8
PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciosCiAgICAgICAgICAgICAgICAgICAg
c2l6ZV90LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmLAotICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmPgorICAgICAgICAgICAgICAgICAgIC8vIFRP
RE8oYnVncy53ZWJydGMub3JnLzk1ODQpOiBDaGFuZ2UgdG8gcGFzc2luZyB0aGUgaW50NjRfdAor
ICAgICAgICAgICAgICAgICAgIC8vIHRpbWVzdGFtcCBieSB2YWx1ZS4KKyAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbnQ2NF90Jj4KICAgICAgIFNpZ25hbFJlYWRQYWNrZXQ7CiAKICAgLy8gRW1p
dHRlZCBlYWNoIHRpbWUgYSBwYWNrZXQgaXMgc2VudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jcmVzb2x2ZXJpbnRl
cmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2FzeW5jcmVzb2x2ZXJpbnRlcmZhY2UuaAppbmRleCA1YjIzMDNmNGQ4MDI4NjA4MWI3OWE5
YjEyOWY4ZDdmMjA1ZTAwNTFlLi5mM2RmODg0MjQ5M2ZkZTNjNzZjNGFkNWU5OWRjOWUwNjkxZTRm
N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9hc3luY3Jlc29sdmVyaW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNyZXNvbHZlcmludGVyZmFj
ZS5oCkBAIC0yMiw5ICsyMiwxMiBAQCBjbGFzcyBBc3luY1Jlc29sdmVySW50ZXJmYWNlIHsKICAg
QXN5bmNSZXNvbHZlckludGVyZmFjZSgpOwogICB2aXJ0dWFsIH5Bc3luY1Jlc29sdmVySW50ZXJm
YWNlKCk7CiAKLSAgLy8gU3RhcnQgYWRkcmVzcyByZXNvbHZlIHByb2Nlc3MuCisgIC8vIFN0YXJ0
IGFkZHJlc3MgcmVzb2x1dGlvbiBvZiB0aGUgaG9zdG5hbWUgaW4gfGFkZHJ8LgogICB2aXJ0dWFs
IHZvaWQgU3RhcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkcikgPSAwOwotICAvLyBSZXR1cm5z
IHRvcCBtb3N0IHJlc29sdmVkIGFkZHJlc3Mgb2YgfGZhbWlseXwKKyAgLy8gUmV0dXJucyB0cnVl
IGlmZiB0aGUgYWRkcmVzcyBmcm9tIHxTdGFydHwgd2FzIHN1Y2Nlc3NmdWxseSByZXNvbHZlZC4K
KyAgLy8gSWYgdGhlIGFkZHJlc3Mgd2FzIHN1Y2Nlc3NmdWxseSByZXNvbHZlZCwgc2V0cyB8YWRk
cnwgdG8gYSBjb3B5IG9mIHRoZQorICAvLyBhZGRyZXNzIGZyb20gfFN0YXJ0fCB3aXRoIHRoZSBJ
UCBhZGRyZXNzIHNldCB0byB0aGUgdG9wIG1vc3QgcmVzb2x2ZWQKKyAgLy8gYWRkcmVzcyBvZiB8
ZmFtaWx5fCAofGFkZHJ8IHdpbGwgaGF2ZSBib3RoIGhvc3RuYW1lIGFuZCB0aGUgcmVzb2x2ZWQg
aXApLgogICB2aXJ0dWFsIGJvb2wgR2V0UmVzb2x2ZWRBZGRyZXNzKGludCBmYW1pbHksIFNvY2tl
dEFkZHJlc3MqIGFkZHIpIGNvbnN0ID0gMDsKICAgLy8gUmV0dXJucyBlcnJvciBmcm9tIHJlc29s
dmVyLgogICB2aXJ0dWFsIGludCBHZXRFcnJvcigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdGNw
c29ja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuY2MKaW5kZXggM2Q2OGEyYTQ2YTZjNjM3YThlZDJmYTdhMmZi
ZDljYjNlNWNjZjdkZC4uNjY2YjMzNTdhYWFmNTUzZmEzMDc0MWVjYjY1MDc3NDI4NjZkYTJmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuY2MKQEAgLTE4LDYgKzE4LDcg
QEAKICNpbmNsdWRlICJydGNfYmFzZS9ieXRlb3JkZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvdGltZXV0aWxzLmgiICAvLyBmb3IgVGltZU1pbGxpcwogCiAjaWYgZGVmaW5lZChXRUJSVENf
UE9TSVgpCiAjaW5jbHVkZSA8ZXJybm8uaD4KQEAgLTMyMCw3ICszMjEsNyBAQCB2b2lkIEFzeW5j
VENQU29ja2V0OjpQcm9jZXNzSW5wdXQoY2hhciogZGF0YSwgc2l6ZV90KiBsZW4pIHsKICAgICAg
IHJldHVybjsKIAogICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSArIGtQYWNrZXRMZW5T
aXplLCBwa3RfbGVuLCByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgIENyZWF0ZVBh
Y2tldFRpbWUoMCkpOworICAgICAgICAgICAgICAgICAgICAgVGltZU1pY3JvcygpKTsKIAogICAg
ICpsZW4gLT0ga1BhY2tldExlblNpemUgKyBwa3RfbGVuOwogICAgIGlmICgqbGVuID4gMCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdGNwc29ja2V0LmgKaW5kZXggOTQzZTAxMGY0ZGFjMDE5
YzFjODEyZDhmNDA2NDg3Y2QyYzFmNWJkYS4uOTU2N2RkOTE0MzJiNzRjMDAzZThkN2IyZDI4Mjc4
YzNiMjk3MmQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3RjcHNvY2tldC5oCkBAIC0x
MSwxMiArMTEsMTUgQEAKICNpZm5kZWYgUlRDX0JBU0VfQVNZTkNUQ1BTT0NLRVRfSF8KICNkZWZp
bmUgUlRDX0JBU0VfQVNZTkNUQ1BTT0NLRVRfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcGFja2V0c29ja2V0Lmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9i
dWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2Uvc29ja2V0ZmFjdG9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldC5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKIAogbmFtZXNwYWNlIHJ0YyB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2FzeW5jdWRwc29ja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN1ZHBzb2NrZXQuY2MKaW5kZXggYmE1ZmE4OGFh
ZGIzZTJmNGQ2ZjQxMjRhOTM0ZjE0NGQ1MDIzNjhlYi4uMmY5MDExY2FiMTQzYWFiZDQwYWNmZjBk
ZTljNTUxMzMzYWIzODI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN1ZHBzb2NrZXQuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN1ZHBzb2NrZXQu
Y2MKQEAgLTc0LDcgKzc0LDYgQEAgaW50IEFzeW5jVURQU29ja2V0OjpTZW5kVG8oY29uc3Qgdm9p
ZCogcHYsCiAgIHJ0Yzo6U2VudFBhY2tldCBzZW50X3BhY2tldChvcHRpb25zLnBhY2tldF9pZCwg
cnRjOjpUaW1lTWlsbGlzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25z
LmluZm9fc2lnbmFsZWRfYWZ0ZXJfc2VudCk7CiAgIENvcHlTb2NrZXRJbmZvcm1hdGlvblRvUGFj
a2V0SW5mbyhjYiwgKnRoaXMsIHRydWUsICZzZW50X3BhY2tldC5pbmZvKTsKLSAgc2VudF9wYWNr
ZXQuaW5mby5yZW1vdGVfc29ja2V0X2FkZHJlc3MgPSBhZGRyOwogICBpbnQgcmV0ID0gc29ja2V0
Xy0+U2VuZFRvKHB2LCBjYiwgYWRkcik7CiAgIFNpZ25hbFNlbnRQYWNrZXQodGhpcywgc2VudF9w
YWNrZXQpOwogICByZXR1cm4gcmV0OwpAQCAtMTIzLDkgKzEyMiw4IEBAIHZvaWQgQXN5bmNVRFBT
b2NrZXQ6Ok9uUmVhZEV2ZW50KEFzeW5jU29ja2V0KiBzb2NrZXQpIHsKIAogICAvLyBUT0RPOiBN
YWtlIHN1cmUgdGhhdCB3ZSBnb3QgYWxsIG9mIHRoZSBwYWNrZXQuCiAgIC8vIElmIHdlIGRpZCBu
b3QsIHRoZW4gd2Ugc2hvdWxkIHJlc2l6ZSBvdXIgYnVmZmVyIHRvIGJlIGxhcmdlIGVub3VnaC4K
LSAgU2lnbmFsUmVhZFBhY2tldCgKLSAgICAgIHRoaXMsIGJ1Zl8sIHN0YXRpY19jYXN0PHNpemVf
dD4obGVuKSwgcmVtb3RlX2FkZHIsCi0gICAgICAodGltZXN0YW1wID4gLTEgPyBQYWNrZXRUaW1l
KHRpbWVzdGFtcCwgMCkgOiBDcmVhdGVQYWNrZXRUaW1lKDApKSk7CisgIFNpZ25hbFJlYWRQYWNr
ZXQodGhpcywgYnVmXywgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW4pLCByZW1vdGVfYWRkciwKKyAg
ICAgICAgICAgICAgICAgICAodGltZXN0YW1wID4gLTEgPyB0aW1lc3RhbXAgOiBUaW1lTWljcm9z
KCkpKTsKIH0KIAogdm9pZCBBc3luY1VEUFNvY2tldDo6T25Xcml0ZUV2ZW50KEFzeW5jU29ja2V0
KiBzb2NrZXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdWRwc29ja2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3VkcHNvY2tldC5oCmluZGV4IGQ4
MTRiNGJmZDBjNWRiZTVkN2U0ZDRhYzQ4NmM3YjhmYjU2MDk4ZjQuLjAzMDk0NmQ4YTAzYTVjNmNm
ODRiM2Y4N2I3NzZjMTc5YmNjMDkyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdWRwc29ja2V0LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN1ZHBz
b2NrZXQuaApAQCAtMTEsOSArMTEsMTMgQEAKICNpZm5kZWYgUlRDX0JBU0VfQVNZTkNVRFBTT0NL
RVRfSF8KICNkZWZpbmUgUlRDX0JBU0VfQVNZTkNVRFBTT0NLRVRfSF8KIAorI2luY2x1ZGUgPHN0
ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcGFj
a2V0c29ja2V0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNzb2NrZXQuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zb2NrZXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0ZmFjdG9yeS5oIgogCiBuYW1lc3BhY2UgcnRjIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2Jhc2U2NF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Jhc2U2NF91bml0dGVzdC5jYwppbmRleCA0Yjg1N2YxYWE5
NDAwODQxOWVkODQ2ZmE1ZDMzYjg4NDA1Zjg0NDBkLi5iZGY4NTU5YzEyN2Y0N2I0MWFmMjU4MmNk
ZDViNTM3Yzk4Yzk0MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9iYXNlNjRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYmFzZTY0X3VuaXR0ZXN0
LmNjCkBAIC0xMSw3ICsxMSw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFz
ZTY0L2Jhc2U2NC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKICNp
bmNsdWRlICJydGNfYmFzZS90ZXN0YmFzZTY0LmgiCiAKQEAgLTQzMCwxMCArNDI5LDEwIEBAIFRF
U1QoQmFzZTY0LCBFbmNvZGVEZWNvZGVCYXR0ZXJ5KSB7CiAKICAgICAgIC8vIHRyeSBwdXR0aW5n
IHNvbWUgZXh0cmEgc3R1ZmYgYWZ0ZXIgdGhlIGVxdWFscyBzaWducywgb3IgaW4gYmV0d2VlbiB0
aGVtCiAgICAgICBpZiAoZXF1YWxzID09IDIpIHsKLSAgICAgICAgc3ByaW50Zm4oZmlyc3RfZXF1
YWxzLCA2LCAiID0gPSAiKTsKKyAgICAgICAgc25wcmludGYoZmlyc3RfZXF1YWxzLCA2LCAiID0g
PSAiKTsKICAgICAgICAgbGVuID0gZmlyc3RfZXF1YWxzIC0gZW5jb2RlX2J1ZmZlciArIDU7CiAg
ICAgICB9IGVsc2UgewotICAgICAgICBzcHJpbnRmbihmaXJzdF9lcXVhbHMsIDYsICIgPSAiKTsK
KyAgICAgICAgc25wcmludGYoZmlyc3RfZXF1YWxzLCA2LCAiID0gIik7CiAgICAgICAgIGxlbiA9
IGZpcnN0X2VxdWFscyAtIGVuY29kZV9idWZmZXIgKyAzOwogICAgICAgfQogICAgICAgZGVjb2Rl
ZDIuYXNzaWduKCJ0aGlzIGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2JpdHJhdGVh
bGxvY2F0aW9uc3RyYXRlZ3kuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmNjCmluZGV4IGQyYTA2
Y2Q5ZWZlYzgxY2M3YTRlZWFiMTAzNjMxNWQ2NmRkZTdjZDEuLjQ2ZTY2NzQxZTBhMDQxMTU1NTI3
M2RjZWQ3NjE0MWExNGRmZDhhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
Yml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5jYwpAQCAtOSw5ICs5LDMxIEBACiAgKi8KIAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuaCIKKwogI2luY2x1ZGUg
PGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5j
bHVkZSA8bWFwPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9udW1l
cmljcy9zYWZlX21pbm1heC5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Zp
ZWxkX3RyaWFsLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworQXVkaW9Qcmlvcml0eUNvbmZpZzo6
QXVkaW9Qcmlvcml0eUNvbmZpZygpCisgICAgOiBtaW5fcmF0ZSgibWluIiksIG1heF9yYXRlKCJt
YXgiKSwgdGFyZ2V0X3JhdGUoInRhcmdldCIpIHsKKyAgc3RkOjpzdHJpbmcgdHJpYWxfc3RyaW5n
OworLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTg4OSk6IFJlbW92ZSB0aGlzIHdoZW4gQ2hyb21p
dW0gYnVpbGQgaGFzIGJlZW4gZml4ZWQuCisjaWYgIWRlZmluZWQoV0VCUlRDX0NIUk9NSVVNX0JV
SUxEKQorICB0cmlhbF9zdHJpbmcgPSBmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJXZWJSVEMt
QndlLUF1ZGlvUHJpb3JpdHkiKTsKKyNlbmRpZgorICBQYXJzZUZpZWxkVHJpYWwoeyZtaW5fcmF0
ZSwgJm1heF9yYXRlLCAmdGFyZ2V0X3JhdGV9LCB0cmlhbF9zdHJpbmcpOworfQorQXVkaW9Qcmlv
cml0eUNvbmZpZzo6QXVkaW9Qcmlvcml0eUNvbmZpZyhjb25zdCBBdWRpb1ByaW9yaXR5Q29uZmln
JikgPSBkZWZhdWx0OworQXVkaW9Qcmlvcml0eUNvbmZpZzo6fkF1ZGlvUHJpb3JpdHlDb25maWco
KSA9IGRlZmF1bHQ7CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKwogbmFtZXNwYWNlIHJ0YyB7
CiAKIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gYWxsb3cgdmlkZW8gc3RyZWFtcyB0byB1
c2UgZXh0cmEgYmFuZHdpZHRoIGZvciBGRUMuCkBAIC0yMSwzMSArNDMsMzEgQEAgbmFtZXNwYWNl
IHJ0YyB7CiBjb25zdCBpbnQga1RyYW5zbWlzc2lvbk1heEJpdHJhdGVNdWx0aXBsaWVyID0gMjsK
IAogc3RkOjp2ZWN0b3I8dWludDMyX3Q+IEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlNldEFs
bEJpdHJhdGVzVG9NaW5pbXVtKAotICAgIGNvbnN0IEFycmF5Vmlldzxjb25zdCBUcmFja0NvbmZp
Zyo+IHRyYWNrX2NvbmZpZ3MpIHsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxCaXRyYXRlQWxsb2Nh
dGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZz4mIHRyYWNrX2NvbmZpZ3MpIHsKICAgc3RkOjp2ZWN0
b3I8dWludDMyX3Q+IHRyYWNrX2FsbG9jYXRpb25zOwotICBmb3IgKGNvbnN0IGF1dG8qIHRyYWNr
X2NvbmZpZyA6IHRyYWNrX2NvbmZpZ3MpIHsKLSAgICB0cmFja19hbGxvY2F0aW9ucy5wdXNoX2Jh
Y2sodHJhY2tfY29uZmlnLT5taW5fYml0cmF0ZV9icHMpOworICBmb3IgKGNvbnN0IGF1dG8mIHRy
YWNrX2NvbmZpZyA6IHRyYWNrX2NvbmZpZ3MpIHsKKyAgICB0cmFja19hbGxvY2F0aW9ucy5wdXNo
X2JhY2sodHJhY2tfY29uZmlnLm1pbl9iaXRyYXRlX2Jwcyk7CiAgIH0KICAgcmV0dXJuIHRyYWNr
X2FsbG9jYXRpb25zOwogfQogCiBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gQml0cmF0ZUFsbG9jYXRp
b25TdHJhdGVneTo6RGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KAotICAgIGNvbnN0IEFycmF5Vmll
dzxjb25zdCBUcmFja0NvbmZpZyo+IHRyYWNrX2NvbmZpZ3MsCisgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWc+JiB0cmFja19jb25maWdz
LAogICAgIHVpbnQzMl90IGF2YWlsYWJsZV9iaXRyYXRlKSB7CiAgIHN0ZDo6dmVjdG9yPHVpbnQz
Ml90PiB0cmFja19hbGxvY2F0aW9ucyA9CiAgICAgICBTZXRBbGxCaXRyYXRlc1RvTWluaW11bSh0
cmFja19jb25maWdzKTsKICAgdWludDMyX3Qgc3VtX21pbl9iaXRyYXRlcyA9IDA7CiAgIHVpbnQz
Ml90IHN1bV9tYXhfYml0cmF0ZXMgPSAwOwotICBmb3IgKGNvbnN0IGF1dG8qIHRyYWNrX2NvbmZp
ZyA6IHRyYWNrX2NvbmZpZ3MpIHsKLSAgICBzdW1fbWluX2JpdHJhdGVzICs9IHRyYWNrX2NvbmZp
Zy0+bWluX2JpdHJhdGVfYnBzOwotICAgIHN1bV9tYXhfYml0cmF0ZXMgKz0gdHJhY2tfY29uZmln
LT5tYXhfYml0cmF0ZV9icHM7CisgIGZvciAoY29uc3QgYXV0byYgdHJhY2tfY29uZmlnIDogdHJh
Y2tfY29uZmlncykgeworICAgIHN1bV9taW5fYml0cmF0ZXMgKz0gdHJhY2tfY29uZmlnLm1pbl9i
aXRyYXRlX2JwczsKKyAgICBzdW1fbWF4X2JpdHJhdGVzICs9IHRyYWNrX2NvbmZpZy5tYXhfYml0
cmF0ZV9icHM7CiAgIH0KICAgaWYgKHN1bV9taW5fYml0cmF0ZXMgPj0gYXZhaWxhYmxlX2JpdHJh
dGUpIHsKICAgICByZXR1cm4gdHJhY2tfYWxsb2NhdGlvbnM7CiAgIH0gZWxzZSBpZiAoYXZhaWxh
YmxlX2JpdHJhdGUgPj0gc3VtX21heF9iaXRyYXRlcykgewogICAgIGF1dG8gdHJhY2tfYWxsb2Nh
dGlvbnNfaXQgPSB0cmFja19hbGxvY2F0aW9ucy5iZWdpbigpOwotICAgIGZvciAoY29uc3QgYXV0
byogdHJhY2tfY29uZmlnIDogdHJhY2tfY29uZmlncykgewotICAgICAgKnRyYWNrX2FsbG9jYXRp
b25zX2l0KysgPSB0cmFja19jb25maWctPm1heF9iaXRyYXRlX2JwczsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHRyYWNrX2NvbmZpZyA6IHRyYWNrX2NvbmZpZ3MpIHsKKyAgICAgICp0cmFja19hbGxv
Y2F0aW9uc19pdCsrID0gdHJhY2tfY29uZmlnLm1heF9iaXRyYXRlX2JwczsKICAgICB9CiAgICAg
cmV0dXJuIHRyYWNrX2FsbG9jYXRpb25zOwogICB9IGVsc2UgewpAQCAtNTQsMTEgKzc2LDEwIEBA
IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpEaXN0cmli
dXRlQml0cmF0ZXNFdmVubHkoCiAgICAgLy8gbG93ZXN0IG1heF9iaXRyYXRlX2Jwcy4gUmVtYWlu
ZGVyIG9mIGF2YWlsYWJsZSBiaXRyYXRlIHNwbGl0IGV2ZW5seSBhbW9uZwogICAgIC8vIHJlbWFp
bmluZyB0cmFja3MuCiAgICAgc3RkOjptdWx0aW1hcDx1aW50MzJfdCwgc2l6ZV90PiBtYXhfYml0
cmF0ZV9zb3J0ZWRfY29uZmlnczsKLSAgICBmb3IgKGNvbnN0IFRyYWNrQ29uZmlnKiogdHJhY2tf
Y29uZmlnc19pdCA9IHRyYWNrX2NvbmZpZ3MuYmVnaW4oKTsKLSAgICAgICAgIHRyYWNrX2NvbmZp
Z3NfaXQgIT0gdHJhY2tfY29uZmlncy5lbmQoKTsgKyt0cmFja19jb25maWdzX2l0KSB7CisgICAg
Zm9yIChjb25zdCBhdXRvJiB0cmFja19jb25maWcgOiB0cmFja19jb25maWdzKSB7CiAgICAgICBt
YXhfYml0cmF0ZV9zb3J0ZWRfY29uZmlncy5pbnNlcnQoCi0gICAgICAgICAgc3RkOjptYWtlX3Bh
aXIoKCp0cmFja19jb25maWdzX2l0KS0+bWF4X2JpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYWNrX2NvbmZpZ3NfaXQgLSB0cmFja19jb25maWdzLmJlZ2luKCkpKTsKKyAg
ICAgICAgICBzdGQ6Om1ha2VfcGFpcih0cmFja19jb25maWcubWF4X2JpdHJhdGVfYnBzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICZ0cmFja19jb25maWcgLSAmdHJhY2tfY29uZmlncy5mcm9u
dCgpKSk7CiAgICAgfQogICAgIHVpbnQzMl90IHRvdGFsX2F2YWlsYWJsZV9pbmNyZWFzZSA9IGF2
YWlsYWJsZV9iaXRyYXRlIC0gc3VtX21pbl9iaXRyYXRlczsKICAgICBpbnQgcHJvY2Vzc2VkX2Nv
bmZpZ3MgPSAwOwpAQCAtNjcsOCArODgsOCBAQCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gQml0cmF0
ZUFsbG9jYXRpb25TdHJhdGVneTo6RGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KAogICAgICAgICAg
IHRvdGFsX2F2YWlsYWJsZV9pbmNyZWFzZSAvCiAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQz
Ml90Pih0cmFja19jb25maWdzLnNpemUoKSAtIHByb2Nlc3NlZF9jb25maWdzKSk7CiAgICAgICB1
aW50MzJfdCBjb25zdW1lZF9pbmNyZWFzZSA9Ci0gICAgICAgICAgc3RkOjptaW4odHJhY2tfY29u
Zmlnc1t0cmFja19jb25maWdfcGFpci5zZWNvbmRdLT5tYXhfYml0cmF0ZV9icHMgLQotICAgICAg
ICAgICAgICAgICAgICAgICB0cmFja19jb25maWdzW3RyYWNrX2NvbmZpZ19wYWlyLnNlY29uZF0t
Pm1pbl9iaXRyYXRlX2JwcywKKyAgICAgICAgICBzdGQ6Om1pbih0cmFja19jb25maWdzW3RyYWNr
X2NvbmZpZ19wYWlyLnNlY29uZF0ubWF4X2JpdHJhdGVfYnBzIC0KKyAgICAgICAgICAgICAgICAg
ICAgICAgdHJhY2tfY29uZmlnc1t0cmFja19jb25maWdfcGFpci5zZWNvbmRdLm1pbl9iaXRyYXRl
X2JwcywKICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVfaW5jcmVhc2UpOwogICAgICAgdHJh
Y2tfYWxsb2NhdGlvbnNbdHJhY2tfY29uZmlnX3BhaXIuc2Vjb25kXSArPSBjb25zdW1lZF9pbmNy
ZWFzZTsKICAgICAgIHRvdGFsX2F2YWlsYWJsZV9pbmNyZWFzZSAtPSBjb25zdW1lZF9pbmNyZWFz
ZTsKQEAgLTc3LDUzICs5OCw1MCBAQCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gQml0cmF0ZUFsbG9j
YXRpb25TdHJhdGVneTo6RGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KAogICAgIHJldHVybiB0cmFj
a19hbGxvY2F0aW9uczsKICAgfQogfQotCiBBdWRpb1ByaW9yaXR5Qml0cmF0ZUFsbG9jYXRpb25T
dHJhdGVneTo6QXVkaW9Qcmlvcml0eUJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3koCiAgICAgc3Rk
OjpzdHJpbmcgYXVkaW9fdHJhY2tfaWQsCiAgICAgdWludDMyX3Qgc3VmZmljaWVudF9hdWRpb19i
aXRyYXRlKQogICAgIDogYXVkaW9fdHJhY2tfaWRfKGF1ZGlvX3RyYWNrX2lkKSwKLSAgICAgIHN1
ZmZpY2llbnRfYXVkaW9fYml0cmF0ZV8oc3VmZmljaWVudF9hdWRpb19iaXRyYXRlKSB7fQorICAg
ICAgc3VmZmljaWVudF9hdWRpb19iaXRyYXRlXyhzdWZmaWNpZW50X2F1ZGlvX2JpdHJhdGUpIHsK
KyAgaWYgKGNvbmZpZ18udGFyZ2V0X3JhdGUpIHsKKyAgICBzdWZmaWNpZW50X2F1ZGlvX2JpdHJh
dGVfID0gY29uZmlnXy50YXJnZXRfcmF0ZS0+YnBzKCk7CisgIH0KK30KIAogc3RkOjp2ZWN0b3I8
dWludDMyX3Q+IEF1ZGlvUHJpb3JpdHlCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpBbGxvY2F0
ZUJpdHJhdGVzKAogICAgIHVpbnQzMl90IGF2YWlsYWJsZV9iaXRyYXRlLAotICAgIGNvbnN0IEFy
cmF5Vmlldzxjb25zdCBUcmFja0NvbmZpZyo+IHRyYWNrX2NvbmZpZ3MpIHsKLSAgY29uc3QgVHJh
Y2tDb25maWcqIGF1ZGlvX3RyYWNrX2NvbmZpZyA9IE5VTEw7CisgICAgc3RkOjp2ZWN0b3I8Qml0
cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWc+IHRyYWNrX2NvbmZpZ3MpIHsKKyAg
VHJhY2tDb25maWcqIGF1ZGlvX3RyYWNrX2NvbmZpZyA9IG51bGxwdHI7CiAgIHNpemVfdCBhdWRp
b19jb25maWdfaW5kZXggPSAwOwogICB1aW50MzJfdCBzdW1fbWluX2JpdHJhdGVzID0gMDsKICAg
dWludDMyX3Qgc3VtX21heF9iaXRyYXRlcyA9IDA7CiAKLSAgZm9yIChjb25zdCBhdXRvKiYgdHJh
Y2tfY29uZmlnIDogdHJhY2tfY29uZmlncykgewotICAgIHN1bV9taW5fYml0cmF0ZXMgKz0gdHJh
Y2tfY29uZmlnLT5taW5fYml0cmF0ZV9icHM7Ci0gICAgc3VtX21heF9iaXRyYXRlcyArPSB0cmFj
a19jb25maWctPm1heF9iaXRyYXRlX2JwczsKLSAgICBpZiAodHJhY2tfY29uZmlnLT50cmFja19p
ZCA9PSBhdWRpb190cmFja19pZF8pIHsKLSAgICAgIGF1ZGlvX3RyYWNrX2NvbmZpZyA9IHRyYWNr
X2NvbmZpZzsKKyAgZm9yIChhdXRvJiB0cmFja19jb25maWcgOiB0cmFja19jb25maWdzKSB7Cisg
ICAgaWYgKHRyYWNrX2NvbmZpZy50cmFja19pZCA9PSBhdWRpb190cmFja19pZF8pIHsKICAgICAg
IGF1ZGlvX2NvbmZpZ19pbmRleCA9ICZ0cmFja19jb25maWcgLSAmdHJhY2tfY29uZmlnc1swXTsK
KyAgICAgIGF1ZGlvX3RyYWNrX2NvbmZpZyA9ICZ0cmFja19jb25maWc7CisgICAgICBpZiAoY29u
ZmlnXy5taW5fcmF0ZSkKKyAgICAgICAgYXVkaW9fdHJhY2tfY29uZmlnLT5taW5fYml0cmF0ZV9i
cHMgPSBjb25maWdfLm1pbl9yYXRlLT5icHMoKTsKKyAgICAgIGlmIChjb25maWdfLm1heF9yYXRl
KQorICAgICAgICBhdWRpb190cmFja19jb25maWctPm1heF9iaXRyYXRlX2JwcyA9IGNvbmZpZ18u
bWF4X3JhdGUtPmJwcygpOwogICAgIH0KKyAgICBzdW1fbWluX2JpdHJhdGVzICs9IHRyYWNrX2Nv
bmZpZy5taW5fYml0cmF0ZV9icHM7CisgICAgc3VtX21heF9iaXRyYXRlcyArPSB0cmFja19jb25m
aWcubWF4X2JpdHJhdGVfYnBzOwogICB9CiAgIGlmIChzdW1fbWF4X2JpdHJhdGVzIDwgYXZhaWxh
YmxlX2JpdHJhdGUpIHsKICAgICAvLyBBbGxvdyBub24gYXVkaW8gc3RyZWFtcyB0byBnbyBhYm92
ZSBtYXggdXB0bwogICAgIC8vIGtUcmFuc21pc3Npb25NYXhCaXRyYXRlTXVsdGlwbGllciAqIG1h
eF9iaXRyYXRlX2JwcwotICAgIHNpemVfdCB0cmFja19jb25maWdzX3NpemUgPSB0cmFja19jb25m
aWdzLnNpemUoKTsKLSAgICBzdGQ6OnZlY3RvcjxUcmFja0NvbmZpZz4gaW5jcmVhc2VkX3RyYWNr
X2NvbmZpZ3ModHJhY2tfY29uZmlnc19zaXplKTsKLSAgICBzdGQ6OnZlY3Rvcjxjb25zdCBUcmFj
a0NvbmZpZyo+IGluY3JlYXNlZF90cmFja19jb25maWdzX3B0cigKLSAgICAgICAgdHJhY2tfY29u
Zmlnc19zaXplKTsKLSAgICBmb3IgKHVuc2lnbmVkIGxvbmcgaSA9IDA7IGkgPCB0cmFja19jb25m
aWdzX3NpemU7IGkrKykgewotICAgICAgaW5jcmVhc2VkX3RyYWNrX2NvbmZpZ3NbaV0gPSAoKnRy
YWNrX2NvbmZpZ3NbaV0pOwotICAgICAgaW5jcmVhc2VkX3RyYWNrX2NvbmZpZ3NfcHRyW2ldID0g
JmluY3JlYXNlZF90cmFja19jb25maWdzW2ldOwotICAgICAgaWYgKHRyYWNrX2NvbmZpZ3NbaV0t
PnRyYWNrX2lkICE9IGF1ZGlvX3RyYWNrX2lkXykgewotICAgICAgICBpbmNyZWFzZWRfdHJhY2tf
Y29uZmlnc1tpXS5tYXhfYml0cmF0ZV9icHMgPQotICAgICAgICAgICAgdHJhY2tfY29uZmlnc1tp
XS0+bWF4X2JpdHJhdGVfYnBzICoKLSAgICAgICAgICAgIGtUcmFuc21pc3Npb25NYXhCaXRyYXRl
TXVsdGlwbGllcjsKLSAgICAgIH0KKyAgICBmb3IgKGF1dG8mIHRyYWNrX2NvbmZpZyA6IHRyYWNr
X2NvbmZpZ3MpIHsKKyAgICAgIGlmICgmdHJhY2tfY29uZmlnICE9IGF1ZGlvX3RyYWNrX2NvbmZp
ZykKKyAgICAgICAgdHJhY2tfY29uZmlnLm1heF9iaXRyYXRlX2JwcyAqPSBrVHJhbnNtaXNzaW9u
TWF4Qml0cmF0ZU11bHRpcGxpZXI7CiAgICAgfQotICAgIHJldHVybiBEaXN0cmlidXRlQml0cmF0
ZXNFdmVubHkoaW5jcmVhc2VkX3RyYWNrX2NvbmZpZ3NfcHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX2JpdHJhdGUpOworICAgIHJldHVybiBEaXN0cmli
dXRlQml0cmF0ZXNFdmVubHkodHJhY2tfY29uZmlncywgYXZhaWxhYmxlX2JpdHJhdGUpOwogICB9
Ci0gIGlmIChhdWRpb190cmFja19jb25maWcgPT0gbnVsbHB0cikgeworICBpZiAoIWF1ZGlvX3Ry
YWNrX2NvbmZpZykgewogICAgIHJldHVybiBEaXN0cmlidXRlQml0cmF0ZXNFdmVubHkodHJhY2tf
Y29uZmlncywgYXZhaWxhYmxlX2JpdHJhdGUpOwogICB9Ci0gIGF1dG8gc2FmZV9zdWZmaWNpZW50
X2F1ZGlvX2JpdHJhdGUgPSBzdGQ6Om1pbigKLSAgICAgIHN0ZDo6bWF4KGF1ZGlvX3RyYWNrX2Nv
bmZpZy0+bWluX2JpdHJhdGVfYnBzLCBzdWZmaWNpZW50X2F1ZGlvX2JpdHJhdGVfKSwKKyAgYXV0
byBzYWZlX3N1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZSA9IHJ0Yzo6U2FmZUNsYW1wKAorICAgICAg
c3VmZmljaWVudF9hdWRpb19iaXRyYXRlXywgYXVkaW9fdHJhY2tfY29uZmlnLT5taW5fYml0cmF0
ZV9icHMsCiAgICAgICBhdWRpb190cmFja19jb25maWctPm1heF9iaXRyYXRlX2Jwcyk7CiAgIGlm
IChhdmFpbGFibGVfYml0cmF0ZSA8PSBzdW1fbWluX2JpdHJhdGVzKSB7CiAgICAgcmV0dXJuIFNl
dEFsbEJpdHJhdGVzVG9NaW5pbXVtKHRyYWNrX2NvbmZpZ3MpOwpAQCAtMTM5LDkgKzE1Nyw3IEBA
IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBBdWRpb1ByaW9yaXR5Qml0cmF0ZUFsbG9jYXRpb25TdHJh
dGVneTo6QWxsb2NhdGVCaXRyYXRlcygKICAgICAgIC8vIFNldHRpbmcgYXVkaW8gdHJhY2sgbWlu
aW11bSB0byBzYWZlX3N1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZSB3aWxsCiAgICAgICAvLyBhbGxv
dyB1c2luZyBEaXN0cmlidXRlQml0cmF0ZXNFdmVubHkgdG8gYWxsb2NhdGUgYXQgbGVhc3Qgc3Vm
ZmljaWVudAogICAgICAgLy8gYml0cmF0ZSBmb3IgYXVkaW8gYW5kIHRoZSByZXN0IGV2ZW5seS4K
LSAgICAgIFRyYWNrQ29uZmlnIHN1ZmZpY2llbnRfdHJhY2tfY29uZmlnKCp0cmFja19jb25maWdz
W2F1ZGlvX2NvbmZpZ19pbmRleF0pOwotICAgICAgc3VmZmljaWVudF90cmFja19jb25maWcubWlu
X2JpdHJhdGVfYnBzID0gc2FmZV9zdWZmaWNpZW50X2F1ZGlvX2JpdHJhdGU7Ci0gICAgICB0cmFj
a19jb25maWdzW2F1ZGlvX2NvbmZpZ19pbmRleF0gPSAmc3VmZmljaWVudF90cmFja19jb25maWc7
CisgICAgICBhdWRpb190cmFja19jb25maWctPm1pbl9iaXRyYXRlX2JwcyA9IHNhZmVfc3VmZmlj
aWVudF9hdWRpb19iaXRyYXRlOwogICAgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHRyYWNrX2Fs
bG9jYXRpb25zID0KICAgICAgICAgICBEaXN0cmlidXRlQml0cmF0ZXNFdmVubHkodHJhY2tfY29u
ZmlncywgYXZhaWxhYmxlX2JpdHJhdGUpOwogICAgICAgcmV0dXJuIHRyYWNrX2FsbG9jYXRpb25z
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVn
eS5oCmluZGV4IGY3MTFkMWYxOGZmZDgxNGVlYjE2YjhkMzQ5OTk0ZjlhY2ExMzQyYzIuLjEzYTRl
ZWU1MjRlMmU5OGIxYzc2N2M5NWRkZmE3MjE3NGJlMGRiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2JpdHJhdGVhbGxvY2F0
aW9uc3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmgKQEAgLTExLDEyICsxMSwx
MyBAQAogI2lmbmRlZiBSVENfQkFTRV9CSVRSQVRFQUxMT0NBVElPTlNUUkFURUdZX0hfCiAjZGVm
aW5lIFJUQ19CQVNFX0JJVFJBVEVBTExPQ0FUSU9OU1RSQVRFR1lfSF8KIAotI2luY2x1ZGUgPG1h
cD4KLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3Ry
aW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KKwogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVu
dHMvZmllbGRfdHJpYWxfcGFyc2VyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMv
ZmllbGRfdHJpYWxfdW5pdHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKQEAgLTU2LDEwICs1Nywx
MiBAQCBjbGFzcyBCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5IHsKICAgICBzdGQ6OnN0cmluZyB0
cmFja19pZDsKICAgfTsKIAorICAvLyBUaGVzZSBhcmUgb25seSB1c2VkIGJ5IEF1ZGlvUHJpb3Jp
dHlCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5LiBUaGV5IGFyZQorICAvLyBleHBvc2VkIGhlcmUg
dG8gdGhleSBjYW4gYmUgdW5pdCB0ZXN0ZWQuCiAgIHN0YXRpYyBzdGQ6OnZlY3Rvcjx1aW50MzJf
dD4gU2V0QWxsQml0cmF0ZXNUb01pbmltdW0oCi0gICAgICBjb25zdCBBcnJheVZpZXc8Y29uc3Qg
VHJhY2tDb25maWcqPiB0cmFja19jb25maWdzKTsKKyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEJp
dHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRyYWNrQ29uZmlnPiYgdHJhY2tfY29uZmlncyk7CiAg
IHN0YXRpYyBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gRGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KAot
ICAgICAgY29uc3QgQXJyYXlWaWV3PGNvbnN0IFRyYWNrQ29uZmlnKj4gdHJhY2tfY29uZmlncywK
KyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRyYWNr
Q29uZmlnPiYgdHJhY2tfY29uZmlncywKICAgICAgIHVpbnQzMl90IGF2YWlsYWJsZV9iaXRyYXRl
KTsKIAogICAvLyBTdHJhdGVneSBpcyBleHBlY3RlZCB0byBhbGxvY2F0ZSBhbGwgYXZhaWxhYmxl
X2JpdHJhdGUgdXAgdG8gdGhlIHN1bSBvZgpAQCAtNzQsMTEgKzc3LDI1IEBAIGNsYXNzIEJpdHJh
dGVBbGxvY2F0aW9uU3RyYXRlZ3kgewogICAvLyBhdmFpbGFibGVfYml0cmF0ZSBkZWNyZWFzZS4K
ICAgdmlydHVhbCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gQWxsb2NhdGVCaXRyYXRlcygKICAgICAg
IHVpbnQzMl90IGF2YWlsYWJsZV9iaXRyYXRlLAotICAgICAgY29uc3QgQXJyYXlWaWV3PGNvbnN0
IFRyYWNrQ29uZmlnKj4gdHJhY2tfY29uZmlncykgPSAwOworICAgICAgc3RkOjp2ZWN0b3I8Qml0
cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWc+IHRyYWNrX2NvbmZpZ3MpID0gMDsK
IAogICB2aXJ0dWFsIH5CaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5KCkgPSBkZWZhdWx0OwogfTsK
K30gIC8vIG5hbWVzcGFjZSBydGMKIAorbmFtZXNwYWNlIHdlYnJ0YyB7CitzdHJ1Y3QgQXVkaW9Q
cmlvcml0eUNvbmZpZyB7CisgIEZpZWxkVHJpYWxPcHRpb25hbDxEYXRhUmF0ZT4gbWluX3JhdGU7
CisgIEZpZWxkVHJpYWxPcHRpb25hbDxEYXRhUmF0ZT4gbWF4X3JhdGU7CisgIEZpZWxkVHJpYWxP
cHRpb25hbDxEYXRhUmF0ZT4gdGFyZ2V0X3JhdGU7CisgIEF1ZGlvUHJpb3JpdHlDb25maWcoKTsK
KyAgQXVkaW9Qcmlvcml0eUNvbmZpZyhjb25zdCBBdWRpb1ByaW9yaXR5Q29uZmlnJik7CisgIEF1
ZGlvUHJpb3JpdHlDb25maWcmIG9wZXJhdG9yPShjb25zdCBBdWRpb1ByaW9yaXR5Q29uZmlnJikg
PSBkZWZhdWx0OworICB+QXVkaW9Qcmlvcml0eUNvbmZpZygpOworfTsKK30gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKKworbmFtZXNwYWNlIHJ0YyB7CiAvLyBTaW1wbGUgYWxsb2NhdGlvbiBzdHJhdGVn
eSBnaXZpbmcgcHJpb3JpdHkgdG8gYXVkaW8gdW50aWwKIC8vIHN1ZmZpY2llbnRfYXVkaW9fYml0
cmF0ZSBpcyByZWFjaGVkLiBCaXRyYXRlIGlzIGRpc3RyaWJ1dGVkIGV2ZW5seSBiZXR3ZWVuCiAv
LyB0aGUgdHJhY2tzIGFmdGVyIHN1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZSBpcyByZWFjaGVkLiBU
aGlzIGltcGxlbWVudGF0aW9uCkBAIC05MCw5ICsxMDcsMTEgQEAgY2xhc3MgQXVkaW9Qcmlvcml0
eUJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3kKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3Qgc3VmZmljaWVudF9hdWRpb19iaXRyYXRlKTsKICAgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+IEFsbG9jYXRlQml0cmF0ZXMoCiAgICAgICB1aW50MzJfdCBhdmFpbGFi
bGVfYml0cmF0ZSwKLSAgICAgIGNvbnN0IEFycmF5Vmlldzxjb25zdCBUcmFja0NvbmZpZyo+IHRy
YWNrX2NvbmZpZ3MpIG92ZXJyaWRlOworICAgICAgc3RkOjp2ZWN0b3I8Qml0cmF0ZUFsbG9jYXRp
b25TdHJhdGVneTo6VHJhY2tDb25maWc+IHRyYWNrX2NvbmZpZ3MpCisgICAgICBvdmVycmlkZTsK
IAogIHByaXZhdGU6CisgIHdlYnJ0Yzo6QXVkaW9Qcmlvcml0eUNvbmZpZyBjb25maWdfOwogICBz
dGQ6OnN0cmluZyBhdWRpb190cmFja19pZF87CiAgIHVpbnQzMl90IHN1ZmZpY2llbnRfYXVkaW9f
Yml0cmF0ZV87CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneV91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Jp
dHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3lfdW5pdHRlc3QuY2MKaW5kZXggYmZjNDFmNTZlODAxMDJh
ZmQ4NzUwOTY4OTVkMGEwNmQzY2QyYmMzOS4uZjRjN2VlNzA0M2I0NjQ2YTY5ZjMxYjg0NmMxMmQ2
NzNlZDc4NGY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneV91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9i
aXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5X3VuaXR0ZXN0LmNjCkBAIC00MywxMSArNDMsOCBAQCBU
RVNUKEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3lUZXN0LCBTZXRBbGxCaXRyYXRlc1RvTWluaW11
bSkgewogICAgICAgQml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWcobWluX290
aGVyX2JpdHJhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXhfb3RoZXJfYml0cmF0ZSwgZmFsc2UsICIiKX07CiAKLSAgc3RkOjp2ZWN0b3I8Y29uc3Qg
cnRjOjpCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZyo+Ci0gICAgICB0cmFj
a19jb25maWdfcHRycyA9IE1ha2VUcmFja0NvbmZpZ1B0cnNWZWN0b3IodHJhY2tfY29uZmlncyk7
Ci0KICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IGFsbG9jYXRpb25zID0KLSAgICAgIEJpdHJhdGVB
bGxvY2F0aW9uU3RyYXRlZ3k6OlNldEFsbEJpdHJhdGVzVG9NaW5pbXVtKHRyYWNrX2NvbmZpZ19w
dHJzKTsKKyAgICAgIEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlNldEFsbEJpdHJhdGVzVG9N
aW5pbXVtKHRyYWNrX2NvbmZpZ3MpOwogICBFWFBFQ1RfRVEobWluX2F1ZGlvX2JpdHJhdGUsIGFs
bG9jYXRpb25zWzBdKTsKICAgRVhQRUNUX0VRKG1pbl92aWRlb19iaXRyYXRlLCBhbGxvY2F0aW9u
c1sxXSk7CiAgIEVYUEVDVF9FUShtaW5fb3RoZXJfYml0cmF0ZSwgYWxsb2NhdGlvbnNbMl0pOwpA
QCAtNzYsMTEgKzczLDggQEAgVEVTVChCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5VGVzdCwgRGlz
dHJpYnV0ZUJpdHJhdGVzRXZlbmx5KSB7CiAgICAgICBCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5
OjpUcmFja0NvbmZpZyhtaW5fb3RoZXJfYml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1heF9vdGhlcl9iaXRyYXRlLCBmYWxzZSwgIiIpfTsKIAot
ICBzdGQ6OnZlY3Rvcjxjb25zdCBydGM6OkJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRyYWNr
Q29uZmlnKj4KLSAgICAgIHRyYWNrX2NvbmZpZ19wdHJzID0gTWFrZVRyYWNrQ29uZmlnUHRyc1Zl
Y3Rvcih0cmFja19jb25maWdzKTsKLQogICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gYWxsb2NhdGlv
bnMgPQotICAgICAgQml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6RGlzdHJpYnV0ZUJpdHJhdGVz
RXZlbmx5KHRyYWNrX2NvbmZpZ19wdHJzLAorICAgICAgQml0cmF0ZUFsbG9jYXRpb25TdHJhdGVn
eTo6RGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KHRyYWNrX2NvbmZpZ3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX2Jp
dHJhdGUpOwogICBFWFBFQ1RfRVEobWluX2F1ZGlvX2JpdHJhdGUgKyBldmVuX2JpdHJhdGVfaW5j
cmVhc2UsIGFsbG9jYXRpb25zWzBdKTsKICAgRVhQRUNUX0VRKG1pbl92aWRlb19iaXRyYXRlICsg
ZXZlbl9iaXRyYXRlX2luY3JlYXNlLCBhbGxvY2F0aW9uc1sxXSk7CkBAIC0xMDgsMTEgKzEwMiw3
IEBAIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBSdW5BdWRpb1ByaW9yaXR5QWxsb2NhdGlvbigKICAg
ICAgIEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRyYWNrQ29uZmlnKG1pbl9vdGhlcl9iaXRy
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X290
aGVyX2JpdHJhdGUsIGZhbHNlLCAiIil9OwogCi0gIHN0ZDo6dmVjdG9yPGNvbnN0IHJ0Yzo6Qml0
cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWcqPgotICAgICAgdHJhY2tfY29uZmln
X3B0cnMgPSBNYWtlVHJhY2tDb25maWdQdHJzVmVjdG9yKHRyYWNrX2NvbmZpZ3MpOwotCi0gIHJl
dHVybiBhbGxvY2F0aW9uX3N0cmF0ZWd5LkFsbG9jYXRlQml0cmF0ZXMoYXZhaWxhYmxlX2JpdHJh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tf
Y29uZmlnX3B0cnMpOworICByZXR1cm4gYWxsb2NhdGlvbl9zdHJhdGVneS5BbGxvY2F0ZUJpdHJh
dGVzKGF2YWlsYWJsZV9iaXRyYXRlLCB0cmFja19jb25maWdzKTsKIH0KIAogLy8gVGVzdCB0aGF0
IHdoZW4gdGhlIGF2YWlsYWJsZSBiaXRyYXRlIGlzIGxlc3MgdGhhbiB0aGUgc3VtIG9mIHRoZSBt
aW5pbXVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlci5oCmluZGV4IDIyZjg5MzcyZGViYzE2ZDU1ZDZjOGM0
YzM3ZjhmMGRkYTM1NjkxMTQuLmY5MjkxYjk5ZTVhMTAzMjQ0YzdkNmM0NmNiYTgyNjQxZTk2ZWIx
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlci5oCkBAIC0xNDksMTEgKzE0OSwxMyBAQCBjbGFzcyBC
dWZmZXJUIHsKICAgfQogCiAgIEJ1ZmZlclQmIG9wZXJhdG9yPShCdWZmZXJUJiYgYnVmKSB7Ci0g
ICAgUlRDX0RDSEVDSyhJc0NvbnNpc3RlbnQoKSk7CiAgICAgUlRDX0RDSEVDSyhidWYuSXNDb25z
aXN0ZW50KCkpOworICAgIE1heWJlWmVyb0NvbXBsZXRlQnVmZmVyKCk7CiAgICAgc2l6ZV8gPSBi
dWYuc2l6ZV87CiAgICAgY2FwYWNpdHlfID0gYnVmLmNhcGFjaXR5XzsKLSAgICBkYXRhXyA9IHN0
ZDo6bW92ZShidWYuZGF0YV8pOworICAgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgICBzd2FwKGRhdGFf
LCBidWYuZGF0YV8pOworICAgIGJ1Zi5kYXRhXy5yZXNldCgpOwogICAgIGJ1Zi5Pbk1vdmVkRnJv
bSgpOwogICAgIHJldHVybiAqdGhpczsKICAgfQpAQCAtMzc0LDEwICszNzYsMTAgQEAgY2xhc3Mg
QnVmZmVyVCB7CiAKICAgLy8gWmVybyB0aGUgY29tcGxldGUgYnVmZmVyIGlmIHRlbXBsYXRlIGFy
Z3VtZW50ICJaZXJvT25GcmVlIiBpcyB0cnVlLgogICB2b2lkIE1heWJlWmVyb0NvbXBsZXRlQnVm
ZmVyKCkgewotICAgIGlmIChaZXJvT25GcmVlICYmIGNhcGFjaXR5XykgeworICAgIGlmIChaZXJv
T25GcmVlICYmIGNhcGFjaXR5XyA+IDApIHsKICAgICAgIC8vIEl0IHdvdWxkIGJlIHN1ZmZpY2ll
bnQgdG8gb25seSB6ZXJvICJzaXplXyIgZWxlbWVudHMsIGFzIGFsbCBvdGhlcgogICAgICAgLy8g
bWV0aG9kcyBhbHJlYWR5IGVuc3VyZSB0aGF0IHRoZSB1bnVzZWQgY2FwYWNpdHkgY29udGFpbnMg
bm8gc2Vuc2l0aXZlCi0gICAgICAvLyBkYXRhIC0gYnV0IGJldHRlciBzYWZlIHRoYW4gc29ycnku
CisgICAgICAvLyBkYXRhLS0tYnV0IGJldHRlciBzYWZlIHRoYW4gc29ycnkuCiAgICAgICBFeHBs
aWNpdFplcm9NZW1vcnkoZGF0YV8uZ2V0KCksIGNhcGFjaXR5XyAqIHNpemVvZihUKSk7CiAgICAg
fQogICB9CkBAIC0zODksNyArMzkxLDcgQEAgY2xhc3MgQnVmZmVyVCB7CiAgICAgRXhwbGljaXRa
ZXJvTWVtb3J5KGRhdGFfLmdldCgpICsgc2l6ZV8sIGNvdW50ICogc2l6ZW9mKFQpKTsKICAgfQog
Ci0gIC8vIFByZWNvbmRpdGlvbiBmb3IgYWxsIG1ldGhvZHMgZXhjZXB0IENsZWFyIGFuZCB0aGUg
ZGVzdHJ1Y3Rvci4KKyAgLy8gUHJlY29uZGl0aW9uIGZvciBhbGwgbWV0aG9kcyBleGNlcHQgQ2xl
YXIsIG9wZXJhdG9yPSBhbmQgdGhlIGRlc3RydWN0b3IuCiAgIC8vIFBvc3Rjb25kaXRpb24gZm9y
IGFsbCBtZXRob2RzIGV4Y2VwdCBtb3ZlIGNvbnN0cnVjdGlvbiBhbmQgbW92ZQogICAvLyBhc3Np
Z25tZW50LCB3aGljaCBsZWF2ZSB0aGUgbW92ZWQtZnJvbSBvYmplY3QgaW4gYSBwb3NzaWJseSBp
bmNvbnNpc3RlbnQKICAgLy8gc3RhdGUuCkBAIC00MDAsMTUgKzQwMiwxNiBAQCBjbGFzcyBCdWZm
ZXJUIHsKICAgLy8gQ2FsbGVkIHdoZW4gKnRoaXMgaGFzIGJlZW4gbW92ZWQgZnJvbS4gQ29uY2Vw
dHVhbGx5IGl0J3MgYSBuby1vcCwgYnV0IHdlCiAgIC8vIGNhbiBtdXRhdGUgdGhlIHN0YXRlIHNs
aWdodGx5IHRvIGhlbHAgc3Vic2VxdWVudCBzYW5pdHkgY2hlY2tzIGNhdGNoIGJ1Z3MuCiAgIHZv
aWQgT25Nb3ZlZEZyb20oKSB7CisgICAgUlRDX0RDSEVDSyghZGF0YV8pOyAgLy8gT3VyIGhlYXAg
YmxvY2sgc2hvdWxkIGhhdmUgYmVlbiBzdG9sZW4uCiAjaWYgUlRDX0RDSEVDS19JU19PTgorICAg
IC8vIEVuc3VyZSB0aGF0ICp0aGlzIGlzIGFsd2F5cyBpbmNvbnNpc3RlbnQsIHRvIHByb3Zva2Ug
YnVncy4KKyAgICBzaXplXyA9IDE7CisgICAgY2FwYWNpdHlfID0gMDsKKyNlbHNlCiAgICAgLy8g
TWFrZSAqdGhpcyBjb25zaXN0ZW50IGFuZCBlbXB0eS4gU2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwg
YnV0IGJldHRlciBzYWZlCiAgICAgLy8gdGhhbiBzb3JyeS4KICAgICBzaXplXyA9IDA7CiAgICAg
Y2FwYWNpdHlfID0gMDsKLSNlbHNlCi0gICAgLy8gRW5zdXJlIHRoYXQgKnRoaXMgaXMgYWx3YXlz
IGluY29uc2lzdGVudCwgdG8gcHJvdm9rZSBidWdzLgotICAgIHNpemVfID0gMTsKLSAgICBjYXBh
Y2l0eV8gPSAwOwogI2VuZGlmCiAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnVmZmVyX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnVmZmVyX3Vu
aXR0ZXN0LmNjCmluZGV4IGFlOTc2ZjEzOTQzMjJmMTFiMWE5NDk2NDY2ZDczODVlMmJhYzk0YWEu
LmIyZjQ3YzE2ZWNiZTNmM2RmOGQxZmM2ODNmNmRhODBjYTNmOGQwMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlcl91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9idWZmZXJfdW5pdHRlc3QuY2MKQEAgLTE4NSw2ICsxODUsMTcgQEAgVEVTVChC
dWZmZXJUZXN0LCBUZXN0TW92ZUFzc2lnbikgewogICBFWFBFQ1RfVFJVRShidWYxLmVtcHR5KCkp
OwogfQogCitURVNUKEJ1ZmZlclRlc3QsIFRlc3RNb3ZlQXNzaWduU2VsZikgeworICAvLyBNb3Zl
IHNlbGYtYXNzaWdubWVudCBpc24ndCByZXF1aXJlZCB0byBwcm9kdWNlIGEgbWVhbmluZ2Z1bCBz
dGF0ZSwgYnV0CisgIC8vIHNob3VsZCBub3QgbGVhdmUgdGhlIG9iamVjdCBpbiBhbiBpbmNvbnNp
c3RlbnQgc3RhdGUuIChTdWNoIGluY29uc2lzdGVudAorICAvLyBzdGF0ZSBjb3VsZCBiZSBjYXVn
aHQgYnkgdGhlIERDSEVDS3MgYW5kL29yIGJ5IHRoZSBsZWFrIGNoZWNrZXIuKSBXZSBuZWVkCisg
IC8vIHRvIGJlIHNuZWFreSB3aGVuIHRlc3RpbmcgdGhpczsgaWYgd2UncmUgZG9pbmcgYSB0b28t
b2J2aW91cworICAvLyBtb3ZlLWFzc2lnbi10by1zZWxmLCBjbGFuZydzIC1Xc2VsZi1tb3ZlIHRy
aWdnZXJzIGF0IGNvbXBpbGUgdGltZS4KKyAgQnVmZmVyIGJ1ZihrVGVzdERhdGEsIDMsIDQwKTsK
KyAgQnVmZmVyKiBidWZfcHRyID0gJmJ1ZjsKKyAgYnVmID0gc3RkOjptb3ZlKCpidWZfcHRyKTsK
K30KKwogVEVTVChCdWZmZXJUZXN0LCBUZXN0U3dhcCkgewogICBCdWZmZXIgYnVmMShrVGVzdERh
dGEsIDMpOwogICBCdWZmZXIgYnVmMihrVGVzdERhdGEsIDYsIDQwKTsKQEAgLTQzNCw2ICs0NDUs
MTkgQEAgVEVTVChCdWZmZXJUZXN0LCBUZXN0U3RydWN0KSB7CiAgIEVYUEVDVF9FUShrT2JzaWRp
YW4sIGJ1ZlsyXS5zdG9uZSk7CiB9CiAKK1RFU1QoQnVmZmVyVGVzdCwgRGllT25Vc2VBZnRlck1v
dmUpIHsKKyAgQnVmZmVyIGJ1ZigxNyk7CisgIEJ1ZmZlciBidWYyID0gc3RkOjptb3ZlKGJ1Zik7
CisgIEVYUEVDVF9FUShidWYyLnNpemUoKSwgMTd1KTsKKyNpZiBSVENfRENIRUNLX0lTX09OCisj
aWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QgJiYgIWRlZmluZWQoV0VCUlRDX0FORFJPSUQpCisgIEVY
UEVDVF9ERUFUSChidWYuZW1wdHkoKSwgIiIpOworI2VuZGlmCisjZWxzZQorICBFWFBFQ1RfVFJV
RShidWYuZW1wdHkoKSk7CisjZW5kaWYKK30KKwogVEVTVChaZXJvT25GcmVlQnVmZmVyVGVzdCwg
VGVzdFplcm9PblNldERhdGEpIHsKICAgWmVyb09uRnJlZUJ1ZmZlcjx1aW50OF90PiBidWYoa1Rl
c3REYXRhLCA3KTsKICAgY29uc3QgdWludDhfdCogb2xkX2RhdGEgPSBidWYuZGF0YSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvYnVmZmVycXVldWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5jYwppbmRleCA0OGZmMmU2ZDMxN2Q3ODIwOGE2YjMz
MGVmYjM5OGFkZDY0ZTNkZjdjLi43NGY3YTUwMmMwYjkxMGU2MWY1YWFhOGJjMTA5ZTYzMzRiOGE5
MThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5jYwpAQCAtMTAsNiArMTAsOCBA
QAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVycXVldWUuaCIKIAorI2luY2x1ZGUgPHN0ZGlu
dC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogbmFtZXNw
YWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnVmZmVycXVldWUuaAppbmRleCA5NGFiMGNhNGM5
ZWIwY2YzYmIzZjk2NGY3ZTZjYzY4YTM5ZTFkNWQ3Li42M2Y1MTgyNTA5ZjYyMjA0YmUwMTExNTc5
OGI5MGYxZTBhOGUyNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlcnF1ZXVlLmgKQEAgLTEx
LDEyICsxMSwxNCBAQAogI2lmbmRlZiBSVENfQkFTRV9CVUZGRVJRVUVVRV9IXwogI2RlZmluZSBS
VENfQkFTRV9CVUZGRVJRVUVVRV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8
ZGVxdWU+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0
aW9ucy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnl0ZWJ1ZmZlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J5dGVidWZmZXIu
Y2MKaW5kZXggOTRmYzZhY2YwODAyNzQxMmEyNWVkNzM2NzMyMGY3NmUyMWRkYWQxMC4uZjhjZTFh
MjllZmUxNjY4N2FjNjU0ZmU5YWZjYjI1ZWRmYWEzMDhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnl0ZWJ1ZmZlci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9i
eXRlYnVmZmVyLmNjCkBAIC0xMiw4ICsxMiw2IEBACiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KIAot
I2luY2x1ZGUgPGFsZ29yaXRobT4KLQogbmFtZXNwYWNlIHJ0YyB7CiAKIEJ5dGVCdWZmZXJXcml0
ZXI6OkJ5dGVCdWZmZXJXcml0ZXIoKSA6IEJ5dGVCdWZmZXJXcml0ZXJUKCkge30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J5
dGVidWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2J5dGVidWZmZXIuaAppbmRleCA5ZTA4ZjAyNWE4NDIzN2U5NDRhMWZmM2U1MzhiYWY4
OTcyZGNlMjkzLi40ZDI1YzIxMDUwN2Q3MzEwNTlmODNiZDUzYWJkOTczN2JlNGQwZjg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9ieXRlYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvYnl0ZWJ1ZmZlci5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIFJU
Q19CQVNFX0JZVEVCVUZGRVJfSF8KICNkZWZpbmUgUlRDX0JBU0VfQllURUJVRkZFUl9IXwogCisj
aW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5n
PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jYW5jZWxhYmxlX3Blcmlv
ZGljX3Rhc2tfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9jYW5jZWxhYmxlX3BlcmlvZGljX3Rhc2tfdW5pdHRlc3QuY2MKaW5k
ZXggZmUyN2VhN2Q0OGI2NTZlYzVlOThiOWVmYWY1NmVmYzI2NjhiOTk0Ny4uYmFkZDYyMzQxNWFk
NTUzMTlmNzJkZGZmZmZiZjFiM2JjMmU0Yjc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2FuY2VsYWJsZV9wZXJpb2RpY190
YXNrX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2NhbmNlbGFibGVfcGVyaW9kaWNfdGFza191bml0dGVzdC5jYwpAQCAt
NjgsNyArNjgsNyBAQCBURVNUKENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBDYW5DYWxsQ2Fu
Y2VsT25FbXB0eUhhbmRsZSkgewogfQogCiBURVNUKENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0
LCBDYW5jZWxUYXNrQmVmb3JlSXRSdW5zKSB7Ci0gIHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFs
c2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIE1vY2tDbG9zdXJlIG1vY2s7CiAgIEVYUEVDVF9D
QUxMKG1vY2ssIENhbGwpLlRpbWVzKDApOwogICBFWFBFQ1RfQ0FMTChtb2NrLCBEZWxldGUpLldp
bGxPbmNlKEludm9rZShbJmRvbmVdIHsgZG9uZS5TZXQoKTsgfSkpOwpAQCAtODQsNyArODQsNyBA
QCBURVNUKENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBDYW5jZWxUYXNrQmVmb3JlSXRSdW5z
KSB7CiB9CiAKIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIENhbmNlbERlbGF5ZWRU
YXNrQmVmb3JlSXRSdW5zKSB7Ci0gIHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFsc2UpOworICBy
dGM6OkV2ZW50IGRvbmU7CiAgIE1vY2tDbG9zdXJlIG1vY2s7CiAgIEVYUEVDVF9DQUxMKG1vY2ss
IENhbGwpLlRpbWVzKDApOwogICBFWFBFQ1RfQ0FMTChtb2NrLCBEZWxldGUpLldpbGxPbmNlKElu
dm9rZShbJmRvbmVdIHsgZG9uZS5TZXQoKTsgfSkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIFRFU1Qo
Q2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIENhbmNlbERlbGF5ZWRUYXNrQmVmb3JlSXRSdW5z
KSB7CiB9CiAKIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIENhbmNlbFRhc2tBZnRl
ckl0UnVucykgewotICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVu
dCBkb25lOwogICBNb2NrQ2xvc3VyZSBtb2NrOwogICBFWFBFQ1RfQ0FMTChtb2NrLCBDYWxsKS5X
aWxsT25jZShSZXR1cm4oMTAwKSk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIERlbGV0ZSkuV2lsbE9u
Y2UoSW52b2tlKFsmZG9uZV0geyBkb25lLlNldCgpOyB9KSk7CkBAIC0xMTcsNyArMTE3LDcgQEAg
VEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgQ2FuY2VsVGFza0FmdGVySXRSdW5zKSB7
CiAKIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIFplcm9SZXR1cm5WYWx1ZVJlcG9z
dHNUaGVUYXNrKSB7CiAgIE5pY2VNb2NrPE1vY2tDbG9zdXJlPiBjbG9zdXJlOwotICBydGM6OkV2
ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICBFWFBFQ1RfQ0FM
TChjbG9zdXJlLCBDYWxsKCkpLldpbGxPbmNlKFJldHVybigwKSkuV2lsbE9uY2UoSW52b2tlKFsm
ZG9uZV0gewogICAgIGRvbmUuU2V0KCk7CiAgICAgcmV0dXJuIGtUaW1lb3V0TXM7CkBAIC0xMzAs
NyArMTMwLDcgQEAgVEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgWmVyb1JldHVyblZh
bHVlUmVwb3N0c1RoZVRhc2spIHsKIAogVEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwg
U3RhcnRQZXJpb2RpY1Rhc2spIHsKICAgTW9ja0Z1bmN0aW9uPGludCgpPiBjbG9zdXJlOwotICBy
dGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICBFWFBF
Q1RfQ0FMTChjbG9zdXJlLCBDYWxsKCkpCiAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDIwKSkKICAg
ICAgIC5XaWxsT25jZShSZXR1cm4oMjApKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIFRFU1QoQ2FuY2Vs
YWJsZVBlcmlvZGljVGFza1Rlc3QsIFN0YXJ0UGVyaW9kaWNUYXNrKSB7CiAKIC8vIFZhbGlkYXRl
cyBwZXJmZWN0IGZvcndhcmRpbmcgZG9lc24ndCBrZWVwIHJlZmVyZW5jZSB0byBkZWxldGVkIGNv
cHkuCiBURVNUKENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBDcmVhdGVXaXRoQ29weU9mQUNs
b3N1cmUpIHsKLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQg
ZG9uZTsKICAgTW9ja0Nsb3N1cmUgbW9jazsKICAgRVhQRUNUX0NBTEwobW9jaywgQ2FsbCkuV2ls
bE9uY2UoSW52b2tlKFsmZG9uZV0gewogICAgIGRvbmUuU2V0KCk7CkBAIC0xNjYsNyArMTY2LDcg
QEAgVEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgQ3JlYXRlV2l0aENvcHlPZkFDbG9z
dXJlKSB7CiB9CiAKIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIERlbGV0aW5nSGFu
ZGxlRG9lc250U3RvcFRoZVRhc2spIHsKLSAgcnRjOjpFdmVudCBydW4oZmFsc2UsIGZhbHNlKTsK
KyAgcnRjOjpFdmVudCBydW47CiAgIHJ0Yzo6VGFza1F1ZXVlIHRhc2tfcXVldWUoInF1ZXVlIik7
CiAgIGF1dG8gdGFzayA9IHJ0Yzo6Q3JlYXRlQ2FuY2VsYWJsZVBlcmlvZGljVGFzaygoWyZdIHsK
ICAgICBydW4uU2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVy
LmNjCmluZGV4IDZjNDhkNTJmMTcxNzJlZThjNGNmYWVmYWQzZTkwNTFjY2I0MjA5MzMuLjhmNTEy
NmEyODI2OGNmMTk4YWNiNGNkYTlmZjRhYzc0OTgxZTc3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NvcHlvbndyaXRlYnVm
ZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRl
ICJydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIgogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisK
IG5hbWVzcGFjZSBydGMgewogCiBDb3B5T25Xcml0ZUJ1ZmZlcjo6Q29weU9uV3JpdGVCdWZmZXIo
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIuaAppbmRleCAwNTE0
ZTJmZTY2MTFhMjU5NjZmZDYzM2U4ZjY5MmY0NjIzYTJmNWNmLi5jYzE3NGRmYzdjOTY5ZTcyODk5
NWRlM2QzNGRhYTRhYzhkMjgzM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NvcHlvbndy
aXRlYnVmZmVyLmgKQEAgLTExLDEyICsxMSwxNSBAQAogI2lmbmRlZiBSVENfQkFTRV9DT1BZT05X
UklURUJVRkZFUl9IXwogI2RlZmluZSBSVENfQkFTRV9DT1BZT05XUklURUJVRkZFUl9IXwogCisj
aW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdHJp
bmc+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRf
cmVmX3B0ci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jcHVfdGltZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NwdV90aW1lLmNjCmluZGV4IGRlNGE2YmQ2ODQ0
YjFlYjQzMjJiNDE3ZDE3NWZhMGYxNjZjOGVlMjMuLmFkOTFlY2FjZTk3MzE5NWM0OTViYjIyNzkx
NDI1OTI5ZDMzMzYyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NwdV90aW1lLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NwdV90aW1lLmNjCkBAIC02NSw2ICs2
NSw5IEBAIGludDY0X3QgR2V0UHJvY2Vzc0NwdVRpbWVOYW5vcygpIHsKICAgfSBlbHNlIHsKICAg
ICBSVENfTE9HX0VSUihMU19FUlJPUikgPDwgIkdldFByb2Nlc3NUaW1lcygpIGZhaWxlZC4iOwog
ICB9CisjZWxpZiBkZWZpbmVkKFdFQlJUQ19GVUNIU0lBKQorICBSVENfTE9HX0VSUihMU19FUlJP
UikgPDwgIkdldFByb2Nlc3NDcHVUaW1lTmFub3MoKSBub3QgaW1wbGVtZW50ZWQiOworICByZXR1
cm4gMDsKICNlbHNlCiAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCiAgIHN0YXRpY19hc3NlcnQo
CkBAIC0xMDcsMTAgKzExMCwxMyBAQCBpbnQ2NF90IEdldFRocmVhZENwdVRpbWVOYW5vcygpIHsK
ICAgfSBlbHNlIHsKICAgICBSVENfTE9HX0VSUihMU19FUlJPUikgPDwgIkdldFRocmVhZFRpbWVz
KCkgZmFpbGVkLiI7CiAgIH0KKyNlbGlmIGRlZmluZWQoV0VCUlRDX0ZVQ0hTSUEpCisgIFJUQ19M
T0dfRVJSKExTX0VSUk9SKSA8PCAiR2V0VGhyZWFkQ3B1VGltZU5hbm9zKCkgbm90IGltcGxlbWVu
dGVkIjsKKyAgcmV0dXJuIDA7CiAjZWxzZQogICAvLyBOb3QgaW1wbGVtZW50ZWQgeWV0LgogICBz
dGF0aWNfYXNzZXJ0KAotICAgICAgZmFsc2UsICJHZXRQcm9jZXNzQ3B1VGltZU5hbm9zKCkgcGxh
dGZvcm0gc3VwcG9ydCBub3QgeWV0IGltcGxlbWVudGVkLiIpOworICAgICAgZmFsc2UsICJHZXRU
aHJlYWRDcHVUaW1lTmFub3MoKSBwbGF0Zm9ybSBzdXBwb3J0IG5vdCB5ZXQgaW1wbGVtZW50ZWQu
Iik7CiAjZW5kaWYKICAgcmV0dXJuIC0xOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY3JpdGlj
YWxzZWN0aW9uLmNjCmluZGV4IGQ4YTViNDhjMDUxMzkwMjU4N2JhMjE5NTRmNjA4NDdjNTE2YTM5
NWEuLjRlMDBiZTk2OGRlOTAyYWQyYWRmYTdlZTQxMDIwZGZlYmYyMTliYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NyaXRp
Y2Fsc2VjdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogCisjaW5jbHVkZSA8dGltZS5oPgor
CiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9jcml0aWNhbHNlY3Rpb25fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jcml0aWNhbHNlY3Rpb25fdW5pdHRlc3QuY2MKaW5k
ZXggZGI0ZjllNzQ1MmY1N2M2NjBjN2Q5NTMyNDFiMzhjOWQyMGYwOTgwNC4uNjAxNmY4NWY4OThl
NWU0OGVhNjUwNWRkYTU5Y2U4YTY1ODdiZjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbl91bml0dGVzdC5jYwpAQCAtMzg5LDcgKzM4OSw3IEBAIGNs
YXNzIFBlcmZUZXN0VGhyZWFkIHsKIC8vIFRoZSB0ZXN0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQg
dG8gYXZvaWQgdW5lY2Vzc2FyaWx5IGxvYWRpbmcgdGhlIGJvdHMuCiBURVNUKENyaXRpY2FsU2Vj
dGlvblRlc3QsIERJU0FCTEVEX1BlcmZvcm1hbmNlKSB7CiAgIFBlcmZUZXN0VGhyZWFkIHRocmVh
ZHNbOF07Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogCiAg
IHN0YXRpYyBjb25zdCBpbnQga1RocmVhZFJlcGVhdHMgPSAxMDAwMDAwMDsKICAgc3RhdGljIGNv
bnN0IGludCBrRXhwZWN0ZWRDb3VudCA9IGtUaHJlYWRSZXBlYXRzICogYXJyYXlzaXplKHRocmVh
ZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvZXZlbnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9ldmVudC5jYwppbmRleCA2Yzk2MzliNGZlY2MxMTFhODA3ZWVhYTE4
YWVmMDNiYTcxODE2YmFhLi40MmMyMmEyOWNjYjA5NjhhODM3ZGVlZTlkYjZiZGRlYzFlNGUwYWIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9ldmVudC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9ldmVudC5jYwpAQCAtMjQsNiArMjQsOCBAQAogCiBuYW1lc3BhY2Ug
cnRjIHsKIAorRXZlbnQ6OkV2ZW50KCkgOiBFdmVudChmYWxzZSwgZmFsc2UpIHt9CisKICNpZiBk
ZWZpbmVkKFdFQlJUQ19XSU4pCiAKIEV2ZW50OjpFdmVudChib29sIG1hbnVhbF9yZXNldCwgYm9v
bCBpbml0aWFsbHlfc2lnbmFsZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ldmVudC5oCmluZGV4IDdlNjFjNGM4
YTY4NzhmZGVhMTNlYjcwMGEzOWMwMjVjZGYxY2FhNWIuLjJlMTEwMDIwNjZkYTkxZmM1OTE4NGFh
OTBmMTU2ZTFmNTI1ZGFmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnQuaApAQCAtMTEsNyArMTEsNiBA
QAogI2lmbmRlZiBSVENfQkFTRV9FVkVOVF9IXwogI2RlZmluZSBSVENfQkFTRV9FVkVOVF9IXwog
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2lmIGRlZmluZWQoV0VC
UlRDX1dJTikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZWxpZiBkZWZpbmVkKFdFQlJUQ19QT1NJ
WCkKQEAgLTI2LDcgKzI1LDEwIEBAIGNsYXNzIEV2ZW50IHsKICBwdWJsaWM6CiAgIHN0YXRpYyBj
b25zdCBpbnQga0ZvcmV2ZXIgPSAtMTsKIAorICBFdmVudCgpOwogICBFdmVudChib29sIG1hbnVh
bF9yZXNldCwgYm9vbCBpbml0aWFsbHlfc2lnbmFsZWQpOworICBFdmVudChjb25zdCBFdmVudCYp
ID0gZGVsZXRlOworICBFdmVudCYgb3BlcmF0b3I9KGNvbnN0IEV2ZW50JikgPSBkZWxldGU7CiAg
IH5FdmVudCgpOwogCiAgIHZvaWQgU2V0KCk7CkBAIC00NSw4ICs0Nyw2IEBAIGNsYXNzIEV2ZW50
IHsKICAgY29uc3QgYm9vbCBpc19tYW51YWxfcmVzZXRfOwogICBib29sIGV2ZW50X3N0YXR1c187
CiAjZW5kaWYKLQotICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKEV2ZW50KTsK
IH07CiAKIC8vIFRoaXMgY2xhc3MgaXMgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBD
aHJvbWl1bS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2V2ZW50X3RyYWNlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50X3RyYWNlci5jYwppbmRleCAzMWY0Mjcx
ZDMxZTJhMzlkYjdiODg0MTNkYzE4NjhlYTM3Y2I3ZjJiLi5hZjg4YzlkZGQ0YzEwMWNkODlmMWRj
YmY0ODZjMDNiZmI0OTgyZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ldmVudF90cmFjZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnRfdHJhY2VyLmNj
CkBAIC0xMCw3ICsxMCw5IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnRfdHJhY2VyLmgiCiAK
ICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8
c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCkBAIC0yMCw3ICsyMiw5IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxh
dGZvcm1fdGhyZWFkLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3RyYWNlX2V2ZW50LmgiCiAKQEAgLTg2LDggKzkwLDcgQEAgY2xhc3MgRXZlbnRMb2dnZXIgZmlu
YWwgewogICAgICAgOiBsb2dnaW5nX3RocmVhZF8oRXZlbnRUcmFjaW5nVGhyZWFkRnVuYywKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAiRXZl
bnRUcmFjaW5nVGhyZWFkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGtMb3dQcmlvcml0eSks
Ci0gICAgICAgIHNodXRkb3duX2V2ZW50XyhmYWxzZSwgZmFsc2UpIHt9CisgICAgICAgICAgICAg
ICAgICAgICAgICBrTG93UHJpb3JpdHkpIHt9CiAgIH5FdmVudExvZ2dlcigpIHsgUlRDX0RDSEVD
Syh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsgfQogCiAgIHZvaWQgQWRk
VHJhY2VFdmVudChjb25zdCBjaGFyKiBuYW1lLApAQCAtMjg2LDE5ICsyODksMTkgQEAgY2xhc3Mg
RXZlbnRMb2dnZXIgZmluYWwgewogICAgICAgICAgIH0KICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBUUkFDRV9WQUxVRV9UWVBFX1VJTlQ6Ci0gICAgICAgICAgcHJpbnRfbGVuZ3RoID0g
c3ByaW50Zm4oJm91dHB1dFswXSwga1RyYWNlQXJnQnVmZmVyTGVuZ3RoLCAiJWxsdSIsCisgICAg
ICAgICAgcHJpbnRfbGVuZ3RoID0gc25wcmludGYoJm91dHB1dFswXSwga1RyYWNlQXJnQnVmZmVy
TGVuZ3RoLCAiJWxsdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLnZh
bHVlLmFzX3VpbnQpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRSQUNFX1ZBTFVF
X1RZUEVfSU5UOgotICAgICAgICAgIHByaW50X2xlbmd0aCA9IHNwcmludGZuKCZvdXRwdXRbMF0s
IGtUcmFjZUFyZ0J1ZmZlckxlbmd0aCwgIiVsbGQiLAorICAgICAgICAgIHByaW50X2xlbmd0aCA9
IHNucHJpbnRmKCZvdXRwdXRbMF0sIGtUcmFjZUFyZ0J1ZmZlckxlbmd0aCwgIiVsbGQiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy52YWx1ZS5hc19pbnQpOwogICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRSQUNFX1ZBTFVFX1RZUEVfRE9VQkxFOgotICAgICAg
ICAgIHByaW50X2xlbmd0aCA9IHNwcmludGZuKCZvdXRwdXRbMF0sIGtUcmFjZUFyZ0J1ZmZlckxl
bmd0aCwgIiVmIiwKKyAgICAgICAgICBwcmludF9sZW5ndGggPSBzbnByaW50Zigmb3V0cHV0WzBd
LCBrVHJhY2VBcmdCdWZmZXJMZW5ndGgsICIlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXJnLnZhbHVlLmFzX2RvdWJsZSk7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgVFJBQ0VfVkFMVUVfVFlQRV9QT0lOVEVSOgotICAgICAgICAgIHByaW50X2xlbmd0aCA9
IHNwcmludGZuKCZvdXRwdXRbMF0sIGtUcmFjZUFyZ0J1ZmZlckxlbmd0aCwgIlwiJXBcIiIsCisg
ICAgICAgICAgcHJpbnRfbGVuZ3RoID0gc25wcmludGYoJm91dHB1dFswXSwga1RyYWNlQXJnQnVm
ZmVyTGVuZ3RoLCAiXCIlcFwiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmcudmFsdWUuYXNfcG9pbnRlcik7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9l
dmVudF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2V2ZW50X3VuaXR0ZXN0LmNjCmluZGV4IDA1MDYxOWU4NDk1NDFjYWMwN2Qw
OTBlZmQ3YmZjMGYzYjUwYjhkNDAuLmE2NTExMWJjOTBmN2YzODM3ZTM4ZDIzNzhhZGNjNDBhOGQ4
OTZiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2V2ZW50X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50X3VuaXR0ZXN0LmNjCkBAIC0zMiw3
ICszMiw3IEBAIFRFU1QoRXZlbnRUZXN0LCBNYW51YWxSZXNldCkgewogfQogCiBURVNUKEV2ZW50
VGVzdCwgQXV0b1Jlc2V0KSB7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50
IGV2ZW50OwogICBBU1NFUlRfRkFMU0UoZXZlbnQuV2FpdCgwKSk7CiAKICAgZXZlbnQuU2V0KCk7
CkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIFNpZ25hbGVyVGhyZWFkIHsKICAgICAgIG1lLT5yZWFk
ZXJfLT5XYWl0KEV2ZW50OjprRm9yZXZlcik7CiAgICAgfQogICB9Ci0gIEV2ZW50IHN0b3BfZXZl
bnRfe2ZhbHNlLCBmYWxzZX07CisgIEV2ZW50IHN0b3BfZXZlbnRfOwogICBFdmVudCogd3JpdGVy
XzsKICAgRXZlbnQqIHJlYWRlcl87CiAgIFBsYXRmb3JtVGhyZWFkIHRocmVhZF87CkBAIC02OCw3
ICs2OCw3IEBAIGNsYXNzIFNpZ25hbGVyVGhyZWFkIHsKIC8vIFRoZXNlIHRlc3RzIGFyZSBkaXNh
YmxlZCBieSBkZWZhdWx0IGFuZCBvbmx5IGludGVuZGVkIHRvIGJlIHJ1biBtYW51YWxseS4KIFRF
U1QoRXZlbnRUZXN0LCBESVNBQkxFRF9QZXJmb3JtYW5jZVNpbmdsZVRocmVhZCkgewogICBzdGF0
aWMgY29uc3QgaW50IGtOdW1JdGVyYXRpb25zID0gMTAwMDAwMDA7Ci0gIEV2ZW50IGV2ZW50KGZh
bHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBmb3IgKGludCBpID0gMDsgaSA8IGtOdW1J
dGVyYXRpb25zOyArK2kpIHsKICAgICBldmVudC5TZXQoKTsKICAgICBldmVudC5XYWl0KDApOwpA
QCAtNzcsOCArNzcsOCBAQCBURVNUKEV2ZW50VGVzdCwgRElTQUJMRURfUGVyZm9ybWFuY2VTaW5n
bGVUaHJlYWQpIHsKIAogVEVTVChFdmVudFRlc3QsIERJU0FCTEVEX1BlcmZvcm1hbmNlTXVsdGlU
aHJlYWQpIHsKICAgc3RhdGljIGNvbnN0IGludCBrTnVtSXRlcmF0aW9ucyA9IDEwMDAwOwotICBF
dmVudCByZWFkKGZhbHNlLCBmYWxzZSk7Ci0gIEV2ZW50IHdyaXRlKGZhbHNlLCBmYWxzZSk7Cisg
IEV2ZW50IHJlYWQ7CisgIEV2ZW50IHdyaXRlOwogICBTaWduYWxlclRocmVhZCB0aHJlYWQ7CiAg
IHRocmVhZC5TdGFydCgmcmVhZCwgJndyaXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvQlVJTEQu
Z24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9l
eHBlcmltZW50cy9CVUlMRC5nbgppbmRleCBiMTBkMGMxNTQ1OTIwNjI2NzFhOWYyYWM5ZDhhOTJm
NTAzNjgyNmRhLi5kMzZhNDNlOTQ2OTA1NWVkY2M0ZGY2OTVhM2FkMTU4ODRlYmY3MzE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9leHBlcmltZW50cy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9CVUlMRC5nbgpAQCAtMjgsMTEgKzI4
LDExIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiZmllbGRfdHJpYWxfcGFyc2VyIikgewogICAgICJm
aWVsZF90cmlhbF91bml0cy5oIiwKICAgXQogICBkZXBzID0gWwotICAgICIuLi86cnRjX2Jhc2Vf
YXBwcm92ZWQiLAogICAgICIuLi8uLi9hcGkvdW5pdHM6ZGF0YV9yYXRlIiwKICAgICAiLi4vLi4v
YXBpL3VuaXRzOmRhdGFfc2l6ZSIsCiAgICAgIi4uLy4uL2FwaS91bml0czp0aW1lX2RlbHRhIiwK
ICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6bG9nZ2lu
ZyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwK
ICAgXQogfQpAQCAtNTYsMTMgKzU2LDM2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicXVhbGl0eV9z
Y2FsaW5nX2V4cGVyaW1lbnQiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiLi4vOnJ0Y19iYXNl
X2FwcHJvdmVkIiwKLSAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL2FwaS92
aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVy
czpmaWVsZF90cmlhbCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
Om9wdGlvbmFsIiwKICAgXQogfQogCitydGNfc3RhdGljX2xpYnJhcnkoIm5vcm1hbGl6ZV9zaW11
bGNhc3Rfc2l6ZV9leHBlcmltZW50IikgeworICBzb3VyY2VzID0gWworICAgICJub3JtYWxpemVf
c2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5jYyIsCisgICAgIm5vcm1hbGl6ZV9zaW11bGNhc3Rf
c2l6ZV9leHBlcmltZW50LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uLzpydGNfYmFzZV9h
cHByb3ZlZCIsCisgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgXQorfQor
CitydGNfc3RhdGljX2xpYnJhcnkoImNwdV9zcGVlZF9leHBlcmltZW50IikgeworICBzb3VyY2Vz
ID0gWworICAgICJjcHVfc3BlZWRfZXhwZXJpbWVudC5jYyIsCisgICAgImNwdV9zcGVlZF9leHBl
cmltZW50LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uLzpydGNfYmFzZV9hcHByb3ZlZCIs
CisgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgXQorfQorCiBydGNfc3Rh
dGljX2xpYnJhcnkoInJ0dF9tdWx0X2V4cGVyaW1lbnQiKSB7CiAgIHNvdXJjZXMgPSBbCiAgICAg
InJ0dF9tdWx0X2V4cGVyaW1lbnQuY2MiLApAQCAtNzQsMjYgKzk3LDQ0IEBAIHJ0Y19zdGF0aWNf
bGlicmFyeSgicnR0X211bHRfZXhwZXJpbWVudCIpIHsKICAgXQogfQogCitydGNfc3RhdGljX2xp
YnJhcnkoImppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50IikgeworICBzb3VyY2VzID0gWwor
ICAgICJqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYyIsCisgICAgImppdHRlcl91cHBl
cl9ib3VuZF9leHBlcmltZW50LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uLzpydGNfYmFz
ZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCisg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgXQor
fQorCiBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgcnRjX3NvdXJjZV9zZXQoImV4cGVyaW1l
bnRzX3VuaXR0ZXN0cyIpIHsKICAgICB0ZXN0b25seSA9IHRydWUKIAogICAgIHNvdXJjZXMgPSBb
CiAgICAgICAiY29uZ2VzdGlvbl9jb250cm9sbGVyX2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MiLAor
ICAgICAgImNwdV9zcGVlZF9leHBlcmltZW50X3VuaXR0ZXN0LmNjIiwKICAgICAgICJmaWVsZF90
cmlhbF9wYXJzZXJfdW5pdHRlc3QuY2MiLAogICAgICAgImZpZWxkX3RyaWFsX3VuaXRzX3VuaXR0
ZXN0LmNjIiwKKyAgICAgICJub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudF91bml0
dGVzdC5jYyIsCiAgICAgICAicXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnRfdW5pdHRlc3QuY2Mi
LAogICAgICAgInJ0dF9tdWx0X2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MiLAogICAgIF0KICAgICBk
ZXBzID0gWwogICAgICAgIjpjb25nZXN0aW9uX2NvbnRyb2xsZXJfZXhwZXJpbWVudCIsCisgICAg
ICAiOmNwdV9zcGVlZF9leHBlcmltZW50IiwKICAgICAgICI6ZmllbGRfdHJpYWxfcGFyc2VyIiwK
KyAgICAgICI6bm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQiLAogICAgICAgIjpx
dWFsaXR5X3NjYWxpbmdfZXhwZXJpbWVudCIsCiAgICAgICAiOnJ0dF9tdWx0X2V4cGVyaW1lbnQi
LAorICAgICAgIi4uOmd1bml0X2hlbHBlcnMiLAogICAgICAgIi4uLzpydGNfYmFzZV90ZXN0c19t
YWluIiwKICAgICAgICIuLi86cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uLy4uL3N5
c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgICAiLi4vLi4vdGVzdDpmaWVsZF90cmlh
bCIsCisgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgIF0KICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvZXhwZXJpbWVudHMvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvT1dORVJTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljNTU4NzIy
NmY4ZGEyMjQ1NWUwMTRlZDk2MWExMTJjZTFmYThlMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50
cy9PV05FUlMKQEAgLTAsMCArMSw4IEBACitwZXItZmlsZSBhbHJfZXhwZXJpbWVudCo9c3ByYW5n
QHdlYnJ0Yy5vcmcKK3Blci1maWxlIGNvbmdlc3Rpb25fY29udHJvbGxlcl9leHBlcmltZW50Kj1z
cnRlQHdlYnJ0Yy5vcmcKK3Blci1maWxlIGNwdV9zcGVlZF9leHBlcmltZW50Kj1hc2FwZXJzc29u
QHdlYnJ0Yy5vcmcKK3Blci1maWxlIGZpZWxkX3RyaWFsKj1zcnRlQHdlYnJ0Yy5vcmcKK3Blci1m
aWxlIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50Kj1zcHJhbmdAd2VicnRjLm9yZworcGVy
LWZpbGUgbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQqPWFzYXBlcnNzb25Ad2Vi
cnRjLm9yZworcGVyLWZpbGUgcXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnQqPWFzYXBlcnNzb25A
d2VicnRjLm9yZworcGVyLWZpbGUgcnR0X211bHRfZXhwZXJpbWVudCo9bWhvcm9Ad2VicnRjLm9y
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJp
bWVudC5jYwppbmRleCBkZmY1YWNlY2M4Yjc1NjZhMDhjMTU2OWVlNzBmZjE1MDhlMjY3NDQ0Li4y
NWU5NDhkOThhMGU3Njg0YmFjZDM5OWRiNjYyYTY5ODVkNTdkMzdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50
cy9hbHJfZXhwZXJpbWVudC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5jYwpAQCAtMTAs
OSArMTAsMTAgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2Fscl9leHBlcmlt
ZW50LmgiCiAKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5j
bHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5j
bHVkZS9maWVsZF90cmlhbC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhw
ZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQuaAppbmRleCA0ZDlmZDAwMTMwNDk2NTU0MmZkNTU4ZDE0
NDEyN2VhMzM3Nzg0MmZlLi44NzZiZDAyNTE3MzBiNmEwNDBjY2EzYWU1ZjkxMDMxMTM1Y2U5NDU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2Fscl9leHBl
cmltZW50LmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgUlRDX0JBU0VfRVhQRVJJTUVOVFNf
QUxSX0VYUEVSSU1FTlRfSF8KICNkZWZpbmUgUlRDX0JBU0VfRVhQRVJJTUVOVFNfQUxSX0VYUEVS
SU1FTlRfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9v
cHRpb25hbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9z
cGVlZF9leHBlcmltZW50LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVkX2V4cGVyaW1lbnQuY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjM5NTQwY2YwMzkwZjFiOTk4OTRhY2QxZTRmMDRmNDE3NmM0ZmQ0ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBlcmltZW50LmNjCkBAIC0wLDAgKzEsNzAgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9jcHVf
c3BlZWRfZXhwZXJpbWVudC5oIgorCisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxk
X3RyaWFsLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHsKK2NvbnN0ZXhwciBj
aGFyIGtGaWVsZFRyaWFsW10gPSAiV2ViUlRDLVZQOC1DcHVTcGVlZC1Bcm0iOworY29uc3RleHBy
IGludCBrTWluU2V0dGluZyA9IC0xNjsKK2NvbnN0ZXhwciBpbnQga01heFNldHRpbmcgPSAtMTsK
K30gIC8vIG5hbWVzcGFjZQorCithYnNsOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxDcHVTcGVlZEV4
cGVyaW1lbnQ6OkNvbmZpZz4+CitDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENvbmZpZ3MoKSB7Cisg
IGlmICghd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtGaWVsZFRyaWFsKSkKKyAgICBy
ZXR1cm4gYWJzbDo6bnVsbG9wdDsKKworICBjb25zdCBzdGQ6OnN0cmluZyBncm91cCA9IHdlYnJ0
Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZShrRmllbGRUcmlhbCk7CisgIGlmIChncm91cC5l
bXB0eSgpKQorICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworCisgIHN0ZDo6dmVjdG9yPENvbmZp
Zz4gY29uZmlncygzKTsKKyAgaWYgKHNzY2FuZihncm91cC5jX3N0cigpLCAiRW5hYmxlZC0lZCwl
ZCwlZCwlZCwlZCwlZCIsICYoY29uZmlnc1swXS5waXhlbHMpLAorICAgICAgICAgICAgICYoY29u
Zmlnc1swXS5jcHVfc3BlZWQpLCAmKGNvbmZpZ3NbMV0ucGl4ZWxzKSwKKyAgICAgICAgICAgICAm
KGNvbmZpZ3NbMV0uY3B1X3NwZWVkKSwgJihjb25maWdzWzJdLnBpeGVscyksCisgICAgICAgICAg
ICAgJihjb25maWdzWzJdLmNwdV9zcGVlZCkpICE9IDYpIHsKKyAgICBSVENfTE9HKExTX1dBUk5J
TkcpIDw8ICJUb28gZmV3IHBhcmFtZXRlcnMgcHJvdmlkZWQuIjsKKyAgICByZXR1cm4gYWJzbDo6
bnVsbG9wdDsKKyAgfQorCisgIGZvciAoY29uc3QgYXV0byYgY29uZmlnIDogY29uZmlncykgewor
ICAgIGlmIChjb25maWcuY3B1X3NwZWVkIDwga01pblNldHRpbmcgfHwgY29uZmlnLmNwdV9zcGVl
ZCA+IGtNYXhTZXR0aW5nKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJVbnN1cHBv
cnRlZCBjcHUgc3BlZWQgc2V0dGluZywgdmFsdWUgaWdub3JlZC4iOworICAgICAgcmV0dXJuIGFi
c2w6Om51bGxvcHQ7CisgICAgfQorICB9CisKKyAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBjb25m
aWdzLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGNvbmZpZ3NbaV0ucGl4ZWxzIDwgY29uZmlnc1tp
IC0gMV0ucGl4ZWxzIHx8CisgICAgICAgIGNvbmZpZ3NbaV0uY3B1X3NwZWVkID4gY29uZmlnc1tp
IC0gMV0uY3B1X3NwZWVkKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJJbnZhbGlk
IHBhcmFtZXRlciB2YWx1ZSBwcm92aWRlZC4iOworICAgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7
CisgICAgfQorICB9CisKKyAgcmV0dXJuIGFic2w6Om9wdGlvbmFsPHN0ZDo6dmVjdG9yPENvbmZp
Zz4+KGNvbmZpZ3MpOworfQorCitpbnQgQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRWYWx1ZShpbnQg
cGl4ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8Q29uZmlnPiYgY29uZmlncykgeworICBmb3IgKGNvbnN0IGF1dG8mIGNvbmZpZyA6IGNvbmZp
Z3MpIHsKKyAgICBpZiAocGl4ZWxzIDw9IGNvbmZpZy5waXhlbHMpCisgICAgICByZXR1cm4gY29u
ZmlnLmNwdV9zcGVlZDsKKyAgfQorICByZXR1cm4ga01pblNldHRpbmc7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBlcmltZW50Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBl
cmltZW50cy9jcHVfc3BlZWRfZXhwZXJpbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2YzgzNDA5NDMwMTQx
ZTU3MDFhZTIwYmExNDRjN2Q2NzJjZTlkOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9jcHVf
c3BlZWRfZXhwZXJpbWVudC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
KyNpZm5kZWYgUlRDX0JBU0VfRVhQRVJJTUVOVFNfQ1BVX1NQRUVEX0VYUEVSSU1FTlRfSF8KKyNk
ZWZpbmUgUlRDX0JBU0VfRVhQRVJJTUVOVFNfQ1BVX1NQRUVEX0VYUEVSSU1FTlRfSF8KKworI2lu
Y2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIENwdVNwZWVkRXhwZXJpbWVudCB7CisgcHVibGljOgor
ICBzdHJ1Y3QgQ29uZmlnIHsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29uZmlnJiBvKSBj
b25zdCB7CisgICAgICByZXR1cm4gcGl4ZWxzID09IG8ucGl4ZWxzICYmIGNwdV9zcGVlZCA9PSBv
LmNwdV9zcGVlZDsKKyAgICB9CisKKyAgICBpbnQgcGl4ZWxzOyAgICAgLy8gVGhlIHZpZGVvIGZy
YW1lIHNpemUuCisgICAgaW50IGNwdV9zcGVlZDsgIC8vIFRoZSB8Y3B1X3NwZWVkfCB0byBiZSB1
c2VkIGlmIHRoZSBmcmFtZSBzaXplIGlzIGxlc3MKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhh
biBvciBlcXVhbCB0byB8cGl4ZWxzfC4KKyAgfTsKKworICAvLyBSZXR1cm5zIHRoZSBjb25maWd1
cmF0aW9ucyBmcm9tIGZpZWxkIHRyaWFsIG9uIHN1Y2Nlc3MuCisgIHN0YXRpYyBhYnNsOjpvcHRp
b25hbDxzdGQ6OnZlY3RvcjxDb25maWc+PiBHZXRDb25maWdzKCk7CisKKyAgLy8gR2V0cyB0aGUg
Y3B1IHNwZWVkIGZyb20gdGhlIHxjb25maWdzfCBiYXNlZCBvbiB8cGl4ZWxzfC4KKyAgc3RhdGlj
IGludCBHZXRWYWx1ZShpbnQgcGl4ZWxzLCBjb25zdCBzdGQ6OnZlY3RvcjxDb25maWc+JiBjb25m
aWdzKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBSVENfQkFT
RV9FWFBFUklNRU5UU19DUFVfU1BFRURfRVhQRVJJTUVOVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMv
Y3B1X3NwZWVkX2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9jcHVfc3BlZWRfZXhwZXJp
bWVudF91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGM3ODJjMGFkZGJkNjk0NDIxZTNiYmI1OWNi
NDc4YmIzMmVlYzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVkX2V4cGVyaW1l
bnRfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lu
Y2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBlcmltZW50LmgiCisKKyNp
bmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgorI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIK
KyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitURVNUKENw
dVNwZWVkRXhwZXJpbWVudFRlc3QsIEdldENvbmZpZ3NGYWlsc0lmTm90RW5hYmxlZCkgeworICBF
WFBFQ1RfRkFMU0UoQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRDb25maWdzKCkpOworfQorCitURVNU
KENwdVNwZWVkRXhwZXJpbWVudFRlc3QsIEdldENvbmZpZ3NGYWlsc0ZvclRvb0Zld1BhcmFtZXRl
cnMpIHsKKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisg
ICAgICAiV2ViUlRDLVZQOC1DcHVTcGVlZC1Bcm0vRW5hYmxlZC0xMDAwLC0xLDIwMDAsLTEwLDMw
MDAvIik7CisgIEVYUEVDVF9GQUxTRShDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENvbmZpZ3MoKSk7
Cit9CisKK1RFU1QoQ3B1U3BlZWRFeHBlcmltZW50VGVzdCwgR2V0Q29uZmlncykgeworICB3ZWJy
dGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJSVEMt
VlA4LUNwdVNwZWVkLUFybS9FbmFibGVkLTEwMDAsLTEsMjAwMCwtMTAsMzAwMCwtMTYvIik7CisK
KyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8c3RkOjp2ZWN0b3I8Q3B1U3BlZWRFeHBlcmltZW50OjpD
b25maWc+PiBrQ29uZmlncyA9CisgICAgICBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENvbmZpZ3Mo
KTsKKyAgQVNTRVJUX1RSVUUoa0NvbmZpZ3MpOworICBFWFBFQ1RfVEhBVCgqa0NvbmZpZ3MsCisg
ICAgICAgICAgICAgIDo6dGVzdGluZzo6RWxlbWVudHNBcmUoQ3B1U3BlZWRFeHBlcmltZW50OjpD
b25maWd7MTAwMCwgLTF9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENw
dVNwZWVkRXhwZXJpbWVudDo6Q29uZmlnezIwMDAsIC0xMH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ3B1U3BlZWRFeHBlcmltZW50OjpDb25maWd7MzAwMCwgLTE2fSkp
OworfQorCitURVNUKENwdVNwZWVkRXhwZXJpbWVudFRlc3QsIEdldFZhbHVlKSB7CisgIHdlYnJ0
Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1W
UDgtQ3B1U3BlZWQtQXJtL0VuYWJsZWQtMTAwMCwtNSwyMDAwLC0xMCwzMDAwLC0xMi8iKTsKKwor
ICBjb25zdCBhYnNsOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxDcHVTcGVlZEV4cGVyaW1lbnQ6OkNv
bmZpZz4+IGtDb25maWdzID0KKyAgICAgIENwdVNwZWVkRXhwZXJpbWVudDo6R2V0Q29uZmlncygp
OworICBBU1NFUlRfVFJVRShrQ29uZmlncyk7CisgIEFTU0VSVF9FUSgzdSwgKCprQ29uZmlncyku
c2l6ZSgpKTsKKyAgRVhQRUNUX0VRKC01LCBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKDEs
ICprQ29uZmlncykpOworICBFWFBFQ1RfRVEoLTUsIENwdVNwZWVkRXhwZXJpbWVudDo6R2V0VmFs
dWUoMTAwMCwgKmtDb25maWdzKSk7CisgIEVYUEVDVF9FUSgtMTAsIENwdVNwZWVkRXhwZXJpbWVu
dDo6R2V0VmFsdWUoMTAwMCArIDEsICprQ29uZmlncykpOworICBFWFBFQ1RfRVEoLTEwLCBDcHVT
cGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKDIwMDAsICprQ29uZmlncykpOworICBFWFBFQ1RfRVEo
LTEyLCBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKDIwMDAgKyAxLCAqa0NvbmZpZ3MpKTsK
KyAgRVhQRUNUX0VRKC0xMiwgQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRWYWx1ZSgzMDAwLCAqa0Nv
bmZpZ3MpKTsKKyAgRVhQRUNUX0VRKC0xNiwgQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRWYWx1ZSgz
MDAwICsgMSwgKmtDb25maWdzKSk7Cit9CisKK1RFU1QoQ3B1U3BlZWRFeHBlcmltZW50VGVzdCwg
R2V0Q29uZmlnc0ZhaWxzRm9yVG9vU21hbGxWYWx1ZSkgeworICAvLyBTdXBwb3J0ZWQgcmFuZ2U6
IFstMTYsIC0xXS4KKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlh
bHMoCisgICAgICAiV2ViUlRDLVZQOC1DcHVTcGVlZC1Bcm0vRW5hYmxlZC0xMDAwLC0xLDIwMDAs
LTEwLDMwMDAsLTE3LyIpOworICBFWFBFQ1RfRkFMU0UoQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRD
b25maWdzKCkpOworfQorCitURVNUKENwdVNwZWVkRXhwZXJpbWVudFRlc3QsIEdldENvbmZpZ3NG
YWlsc0ZvclRvb0xhcmdlVmFsdWUpIHsKKyAgLy8gU3VwcG9ydGVkIHJhbmdlOiBbLTE2LCAtMV0u
CisgIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAg
IldlYlJUQy1WUDgtQ3B1U3BlZWQtQXJtL0VuYWJsZWQtMTAwMCwwLDIwMDAsLTEwLDMwMDAsLTE2
LyIpOworICBFWFBFQ1RfRkFMU0UoQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRDb25maWdzKCkpOwor
fQorCitURVNUKENwdVNwZWVkRXhwZXJpbWVudFRlc3QsIEdldENvbmZpZ3NGYWlsc0lmUGl4ZWxz
RGVjcmVhc2luZykgeworICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3Ry
aWFscygKKyAgICAgICJXZWJSVEMtVlA4LUNwdVNwZWVkLUFybS9FbmFibGVkLTEwMDAsLTUsOTk5
LC0xMCwzMDAwLC0xNi8iKTsKKyAgRVhQRUNUX0ZBTFNFKENwdVNwZWVkRXhwZXJpbWVudDo6R2V0
Q29uZmlncygpKTsKK30KKworVEVTVChDcHVTcGVlZEV4cGVyaW1lbnRUZXN0LCBHZXRDb25maWdz
RmFpbHNJZkNwdVNwZWVkSW5jcmVhc2luZykgeworICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxk
VHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJSVEMtVlA4LUNwdVNwZWVkLUFybS9FbmFi
bGVkLTEwMDAsLTUsMjAwMCwtNCwzMDAwLC0xNi8iKTsKKyAgRVhQRUNUX0ZBTFNFKENwdVNwZWVk
RXhwZXJpbWVudDo6R2V0Q29uZmlncygpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJp
YWxfcGFyc2VyLmNjCmluZGV4IGEyZDdmOTdiZGUxZjQ2NDNmN2U1ZWZkZDQxYTJhMjRhZWYyOWZi
OTguLjkzNjQ4N2NiMDE1ZTAyNjJlZjkwYTI4MDJhYzI2ZGFiZjM0NzM1MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVy
aW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJz
ZXIuY2MKQEAgLTE2OSw2ICsxNjksOSBAQCB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1l
dGVyPGRvdWJsZT47CiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPGludD47CiB0
ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPHN0ZDo6c3RyaW5nPjsKIAordGVtcGxh
dGUgY2xhc3MgRmllbGRUcmlhbENvbnN0cmFpbmVkPGRvdWJsZT47Cit0ZW1wbGF0ZSBjbGFzcyBG
aWVsZFRyaWFsQ29uc3RyYWluZWQ8aW50PjsKKwogdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbE9w
dGlvbmFsPGRvdWJsZT47CiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9uYWw8aW50PjsK
IHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxPcHRpb25hbDxib29sPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1l
bnRzL2ZpZWxkX3RyaWFsX3BhcnNlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyLmgKaW5k
ZXggMjJhODg4OTcxNzBiYzU1MDcyZmQ4ZDFlMzFhMGRkN2YwMzdkOGZkMS4uOGJkZDliNWQ4ZWJl
ODYwMWE0NGU2YTIyYzlhNzY4ZDliYWU2ZmY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJp
YWxfcGFyc2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyLmgKQEAgLTkyLDYgKzky
LDQzIEBAIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXIgOiBwdWJsaWMgRmllbGRUcmlhbFBhcmFt
ZXRlckludGVyZmFjZSB7CiAgIFQgdmFsdWVfOwogfTsKIAorLy8gVGhpcyBjbGFzcyB1c2VzIHRo
ZSBQYXJzZVR5cGVkUGFyYW1ldGVyIGZ1bmN0aW9uIHRvIGltcGxlbWVudCBhIHBhcmFtZXRlcgor
Ly8gaW1wbGVtZW50YXRpb24gd2l0aCBhbiBlbmZvcmNlZCBkZWZhdWx0IHZhbHVlIGFuZCBhIHJh
bmdlIGNvbnN0cmFpbnQuIFZhbHVlcworLy8gb3V0c2lkZSB0aGUgY29uZmlndXJlZCByYW5nZSB3
aWxsIGJlIGlnbm9yZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZpZWxkVHJpYWxD
b25zdHJhaW5lZCA6IHB1YmxpYyBGaWVsZFRyaWFsUGFyYW1ldGVySW50ZXJmYWNlIHsKKyBwdWJs
aWM6CisgIEZpZWxkVHJpYWxDb25zdHJhaW5lZChzdGQ6OnN0cmluZyBrZXksCisgICAgICAgICAg
ICAgICAgICAgICAgICBUIGRlZmF1bHRfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBh
YnNsOjpvcHRpb25hbDxUPiBsb3dlcl9saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFi
c2w6Om9wdGlvbmFsPFQ+IHVwcGVyX2xpbWl0KQorICAgICAgOiBGaWVsZFRyaWFsUGFyYW1ldGVy
SW50ZXJmYWNlKGtleSksCisgICAgICAgIHZhbHVlXyhkZWZhdWx0X3ZhbHVlKSwKKyAgICAgICAg
bG93ZXJfbGltaXRfKGxvd2VyX2xpbWl0KSwKKyAgICAgICAgdXBwZXJfbGltaXRfKHVwcGVyX2xp
bWl0KSB7fQorICBUIEdldCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQorICBvcGVyYXRvciBU
KCkgY29uc3QgeyByZXR1cm4gR2V0KCk7IH0KKyAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuICZ2YWx1ZV87IH0KKworIHByb3RlY3RlZDoKKyAgYm9vbCBQYXJzZShhYnNsOjpv
cHRpb25hbDxzdGQ6OnN0cmluZz4gc3RyX3ZhbHVlKSBvdmVycmlkZSB7CisgICAgaWYgKHN0cl92
YWx1ZSkgeworICAgICAgYWJzbDo6b3B0aW9uYWw8VD4gdmFsdWUgPSBQYXJzZVR5cGVkUGFyYW1l
dGVyPFQ+KCpzdHJfdmFsdWUpOworICAgICAgaWYgKHZhbHVlICYmICghbG93ZXJfbGltaXRfIHx8
ICp2YWx1ZSA+PSAqbG93ZXJfbGltaXRfKSAmJgorICAgICAgICAgICghdXBwZXJfbGltaXRfIHx8
ICp2YWx1ZSA8PSAqdXBwZXJfbGltaXRfKSkgeworICAgICAgICB2YWx1ZV8gPSAqdmFsdWU7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cisg
IH0KKworIHByaXZhdGU6CisgIFQgdmFsdWVfOworICBhYnNsOjpvcHRpb25hbDxUPiBsb3dlcl9s
aW1pdF87CisgIGFic2w6Om9wdGlvbmFsPFQ+IHVwcGVyX2xpbWl0XzsKK307CisKIGNsYXNzIEFi
c3RyYWN0RmllbGRUcmlhbEVudW0gOiBwdWJsaWMgRmllbGRUcmlhbFBhcmFtZXRlckludGVyZmFj
ZSB7CiAgcHVibGljOgogICBBYnN0cmFjdEZpZWxkVHJpYWxFbnVtKHN0ZDo6c3RyaW5nIGtleSwK
QEAgLTE5MSw2ICsyMjgsOSBAQCBleHRlcm4gdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbFBhcmFt
ZXRlcjxpbnQ+OwogLy8gVXNpbmcgdGhlIGdpdmVuIHZhbHVlIGFzIGlzLgogZXh0ZXJuIHRlbXBs
YXRlIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8c3RkOjpzdHJpbmc+OwogCitleHRlcm4gdGVt
cGxhdGUgY2xhc3MgRmllbGRUcmlhbENvbnN0cmFpbmVkPGRvdWJsZT47CitleHRlcm4gdGVtcGxh
dGUgY2xhc3MgRmllbGRUcmlhbENvbnN0cmFpbmVkPGludD47CisKIGV4dGVybiB0ZW1wbGF0ZSBj
bGFzcyBGaWVsZFRyaWFsT3B0aW9uYWw8ZG91YmxlPjsKIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBG
aWVsZFRyaWFsT3B0aW9uYWw8aW50PjsKIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFs
T3B0aW9uYWw8Ym9vbD47CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXJfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXJfdW5pdHRlc3QuY2MKaW5kZXggZGU5
NzdlYzhiYTgwOTcyMjAzMDQwOGQ2NTk3ZjU3YmFjMTRlY2JkYy4uMGQwNjdmNWE0OTEzOGE3NWNk
OGNkZTE4NzI0ZTY1NzJiYzlhZDk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFy
c2VyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlcl91bml0dGVzdC5j
YwpAQCAtOTksNiArOTksMTkgQEAgVEVTVChGaWVsZFRyaWFsUGFyc2VyVGVzdCwgSWdub3Jlc0lu
dmFsaWQpIHsKICAgRVhQRUNUX0VRKGV4cC5waW5nLkdldCgpLCBmYWxzZSk7CiAgIEVYUEVDVF9F
UShleHAuaGFzaC5HZXQoKSwgImE4MCIpOwogfQorVEVTVChGaWVsZFRyaWFsUGFyc2VyVGVzdCwg
SWdub3Jlc091dE9mUmFuZ2UpIHsKKyAgRmllbGRUcmlhbENvbnN0cmFpbmVkPGRvdWJsZT4gbG93
KCJsb3ciLCAxMCwgYWJzbDo6bnVsbG9wdCwgMTAwKTsKKyAgRmllbGRUcmlhbENvbnN0cmFpbmVk
PGRvdWJsZT4gaGlnaCgiaGlnaCIsIDEwLCA1LCBhYnNsOjpudWxsb3B0KTsKKyAgUGFyc2VGaWVs
ZFRyaWFsKHsmbG93LCAmaGlnaH0sICJsb3c6MTAwMCxoaWdoOjAiKTsKKyAgRVhQRUNUX0VRKGxv
dy5HZXQoKSwgMTApOworICBFWFBFQ1RfRVEoaGlnaC5HZXQoKSwgMTApOworICBQYXJzZUZpZWxk
VHJpYWwoeyZsb3csICZoaWdofSwgImxvdzppbmYsaGlnaDpuYW4iKTsKKyAgRVhQRUNUX0VRKGxv
dy5HZXQoKSwgMTApOworICBFWFBFQ1RfRVEoaGlnaC5HZXQoKSwgMTApOworICBQYXJzZUZpZWxk
VHJpYWwoeyZsb3csICZoaWdofSwgImxvdzoyMCxoaWdoOjIwIik7CisgIEVYUEVDVF9FUShsb3cu
R2V0KCksIDIwKTsKKyAgRVhQRUNUX0VRKGhpZ2guR2V0KCksIDIwKTsKK30KIFRFU1QoRmllbGRU
cmlhbFBhcnNlclRlc3QsIFBhcnNlc09wdGlvbmFsUGFyYW1ldGVycykgewogICBGaWVsZFRyaWFs
T3B0aW9uYWw8aW50PiBtYXhfY291bnQoImMiLCBhYnNsOjpudWxsb3B0KTsKICAgUGFyc2VGaWVs
ZFRyaWFsKHsmbWF4X2NvdW50fSwgIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxf
dW5pdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF91bml0cy5jYwppbmRleCBmNTM5NzhiMjExNTNk
NGZkNTAyNGUxYzk5NTY0ZDU3ZWJmOTFhZGY3Li41MzExYTNhOTQxYzc4MGI5ZTAzNWMwZmIwYjM4
NzgxYzQzN2JhMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF91bml0cy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBl
cmltZW50cy9maWVsZF90cmlhbF91bml0cy5jYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogI2luY2x1
ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzLmgiCiAKKyNpbmNsdWRl
IDxzdGRpby5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdHJpbmc+CiAKQEAgLTg2
LDYgKzg3LDEwIEBAIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8RGF0YVJhdGU+
OwogdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbFBhcmFtZXRlcjxEYXRhU2l6ZT47CiB0ZW1wbGF0
ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT47CiAKK3RlbXBsYXRlIGNsYXNz
IEZpZWxkVHJpYWxDb25zdHJhaW5lZDxEYXRhUmF0ZT47Cit0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRy
aWFsQ29uc3RyYWluZWQ8RGF0YVNpemU+OwordGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbENvbnN0
cmFpbmVkPFRpbWVEZWx0YT47CisKIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxPcHRpb25hbDxE
YXRhUmF0ZT47CiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9uYWw8RGF0YVNpemU+Owog
dGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbE9wdGlvbmFsPFRpbWVEZWx0YT47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBl
cmltZW50cy9maWVsZF90cmlhbF91bml0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfdW5pdHMuaApp
bmRleCA5MzJjNWNiNDUwMDFjZjA2ZTU4MmUxYjlkYzY2MGZiOTMxMjA4MGRmLi5hZjg4ZjRhNmMw
MGRmMzUxMDZiOWM1Y2RhNDYzMzk3MDEyNTlhNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90
cmlhbF91bml0cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzLmgKQEAgLTIxLDYgKzIx
LDEwIEBAIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPERhdGFSYXRl
PjsKIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPERhdGFTaXplPjsK
IGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT47CiAK
K2V4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8RGF0YVJhdGU+Owor
ZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxDb25zdHJhaW5lZDxEYXRhU2l6ZT47Citl
eHRlcm4gdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbENvbnN0cmFpbmVkPFRpbWVEZWx0YT47CisK
IGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9uYWw8RGF0YVJhdGU+OwogZXh0
ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxPcHRpb25hbDxEYXRhU2l6ZT47CiBleHRlcm4g
dGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbE9wdGlvbmFsPFRpbWVEZWx0YT47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBl
cmltZW50cy9maWVsZF90cmlhbF91bml0c191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFs
X3VuaXRzX3VuaXR0ZXN0LmNjCmluZGV4IDgwNzcxZDkyNmFiZDM3ZTdjODBmZGU5MTgwNGVmZjM1
NWQyNzQwZTguLjU3MDIyYzJmMjNmNDZlMzBiODIzMTMxNzJiODM5MmUzYmEzYTIyNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2Zp
ZWxkX3RyaWFsX3VuaXRzX3VuaXR0ZXN0LmNjCkBAIC01OCw1ICs1OCwyNSBAQCBURVNUKEZpZWxk
VHJpYWxQYXJzZXJVbml0c1Rlc3QsIFBhcnNlc090aGVyVW5pdFBhcmFtZXRlcnMpIHsKICAgRVhQ
RUNUX0VRKCpleHAubWF4X2J1ZmZlci5HZXRPcHRpb25hbCgpLCBEYXRhU2l6ZTo6Ynl0ZXMoOCkp
OwogICBFWFBFQ1RfRVEoZXhwLnBlcmlvZC5HZXQoKSwgVGltZURlbHRhOjptcygzMDApKTsKIH0K
K1RFU1QoRmllbGRUcmlhbFBhcnNlclVuaXRzVGVzdCwgSWdub3Jlc091dE9mUmFuZ2UpIHsKKyAg
RmllbGRUcmlhbENvbnN0cmFpbmVkPERhdGFSYXRlPiByYXRlKCJyIiwgRGF0YVJhdGU6OmticHMo
MzApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVJhdGU6Omti
cHMoMTApLCBEYXRhUmF0ZTo6a2JwcygxMDApKTsKKyAgRmllbGRUcmlhbENvbnN0cmFpbmVkPFRp
bWVEZWx0YT4gZGVsdGEoImQiLCBUaW1lRGVsdGE6Om1zKDMwKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGltZURlbHRhOjptcygxMCksIFRpbWVEZWx0YTo6bXMo
MTAwKSk7CisgIEZpZWxkVHJpYWxDb25zdHJhaW5lZDxEYXRhU2l6ZT4gc2l6ZSgKKyAgICAgICJz
IiwgRGF0YVNpemU6OmJ5dGVzKDMwKSwgRGF0YVNpemU6OmJ5dGVzKDEwKSwgRGF0YVNpemU6OmJ5
dGVzKDEwMCkpOworICBQYXJzZUZpZWxkVHJpYWwoeyZyYXRlLCAmZGVsdGEsICZzaXplfSwgInI6
MCxkOjAsczowIik7CisgIEVYUEVDVF9FUShyYXRlLT5rYnBzKCksIDMwKTsKKyAgRVhQRUNUX0VR
KGRlbHRhLT5tcygpLCAzMCk7CisgIEVYUEVDVF9FUShzaXplLT5ieXRlcygpLCAzMCk7CisgIFBh
cnNlRmllbGRUcmlhbCh7JnJhdGUsICZkZWx0YSwgJnNpemV9LCAicjozMDAsZDozMDAsczozMDAi
KTsKKyAgRVhQRUNUX0VRKHJhdGUtPmticHMoKSwgMzApOworICBFWFBFQ1RfRVEoZGVsdGEtPm1z
KCksIDMwKTsKKyAgRVhQRUNUX0VRKHNpemUtPmJ5dGVzKCksIDMwKTsKKyAgUGFyc2VGaWVsZFRy
aWFsKHsmcmF0ZSwgJmRlbHRhLCAmc2l6ZX0sICJyOjUwLGQ6NTAsczo1MCIpOworICBFWFBFQ1Rf
RVEocmF0ZS0+a2JwcygpLCA1MCk7CisgIEVYUEVDVF9FUShkZWx0YS0+bXMoKSwgNTApOworICBF
WFBFQ1RfRVEoc2l6ZS0+Ynl0ZXMoKSwgNTApOworfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9leHBlcmltZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1l
bnRzL2ppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzZTkyMzAx
OWIzY2ZkODJkYzY0OGIzZmZhODkzNGRmNDA2ZmRiZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50
cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYwpAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2ppdHRl
cl91cHBlcl9ib3VuZF9leHBlcmltZW50LmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCisKK25hbWVzcGFjZSB3ZWJy
dGMgeworCitjb25zdCBjaGFyIEppdHRlclVwcGVyQm91bmRFeHBlcmltZW50OjprSml0dGVyVXBw
ZXJCb3VuZEV4cGVyaW1lbnROYW1lW10gPQorICAgICJXZWJSVEMtSml0dGVyVXBwZXJCb3VuZCI7
CisKK2Fic2w6Om9wdGlvbmFsPGRvdWJsZT4gSml0dGVyVXBwZXJCb3VuZEV4cGVyaW1lbnQ6Okdl
dFVwcGVyQm91bmRTaWdtYXMoKSB7CisgIGlmICghZmllbGRfdHJpYWw6OklzRW5hYmxlZChrSml0
dGVyVXBwZXJCb3VuZEV4cGVyaW1lbnROYW1lKSkgeworICAgIHJldHVybiBhYnNsOjpudWxsb3B0
OworICB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGdyb3VwID0KKyAgICAgIHdlYnJ0Yzo6ZmllbGRf
dHJpYWw6OkZpbmRGdWxsTmFtZShrSml0dGVyVXBwZXJCb3VuZEV4cGVyaW1lbnROYW1lKTsKKwor
ICBkb3VibGUgdXBwZXJfYm91bmRfc2lnbWFzOworICBpZiAoc3NjYW5mKGdyb3VwLmNfc3RyKCks
ICJFbmFibGVkLSVsZiIsICZ1cHBlcl9ib3VuZF9zaWdtYXMpICE9IDEpIHsKKyAgICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJJbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJzIHByb3ZpZGVkLiI7
CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKworICBpZiAodXBwZXJfYm91bmRfc2ln
bWFzIDwgMCkgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkludmFsaWQgaml0dGVyIHVw
cGVyIGJvdW5kIHNpZ21hcywgbXVzdCBiZSA+PSAwLjA6ICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IHVwcGVyX2JvdW5kX3NpZ21hczsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAg
fQorCisgIHJldHVybiB1cHBlcl9ib3VuZF9zaWdtYXM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBl
cmltZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MmNk
NzllZmE2Y2NjZmQ3YWMxYTkwNDRmZmQ5NzAwZTc4ZjIwYjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmlt
ZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5oCkBAIC0wLDAgKzEsMzEgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19CQVNFX0VYUEVSSU1FTlRTX0pJVFRF
Ul9VUFBFUl9CT1VORF9FWFBFUklNRU5UX0hfCisjZGVmaW5lIFJUQ19CQVNFX0VYUEVSSU1FTlRT
X0pJVFRFUl9VUFBFUl9CT1VORF9FWFBFUklNRU5UX0hfCisKKyNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBKaXR0ZXJVcHBlckJv
dW5kRXhwZXJpbWVudCB7CisgcHVibGljOgorICAvLyBSZXR1cm5zIG51bGxvcHQgaWYgZXhwZXJp
bWVudCBpcyBub3Qgb24sIG90aGVyd2lzZSByZXR1cm5zIHRoZSBjb25maWd1cmVkCisgIC8vIHVw
cGVyIGJvdW5kIGZvciBmcmFtZSBkZWxheSBkZWx0YSB1c2VkIGluIGppdHRlciBlc3RpbWF0aW9u
LCBleHByZXNzZWQgYXMKKyAgLy8gbnVtYmVyIG9mIHN0YW5kYXJkIGRldmlhdGlvbnMgb2YgdGhl
IGN1cnJlbnQgZGV2aWF0aW9uIGZyb20gdGhlIGV4cGVjdGVkCisgIC8vIGRlbGF5LgorICBzdGF0
aWMgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPiBHZXRVcHBlckJvdW5kU2lnbWFzKCk7CisKKyAgc3Rh
dGljIGNvbnN0IGNoYXIga0ppdHRlclVwcGVyQm91bmRFeHBlcmltZW50TmFtZVtdOworfTsKKwor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFJUQ19CQVNFX0VYUEVSSU1FTlRT
X0pJVFRFUl9VUFBFUl9CT1VORF9FWFBFUklNRU5UX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9ub3Jt
YWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9zaW11
bGNhc3Rfc2l6ZV9leHBlcmltZW50LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljZTVmNTdmOGYwNjUyZDI4M2Yy
ZWU3ZjM3ZDMwMTI2NzBmZDBkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9ub3JtYWxpemVf
c2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5jYwpAQCAtMCwwICsxLDQ3IEBACisvKgorICogIENv
cHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KKyAqLworCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVs
Y2FzdF9zaXplX2V4cGVyaW1lbnQuaCIKKworI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9m
aWVsZF90cmlhbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7Citjb25zdGV4
cHIgY2hhciBrRmllbGRUcmlhbFtdID0gIldlYlJUQy1Ob3JtYWxpemVTaW11bGNhc3RSZXNvbHV0
aW9uIjsKK2NvbnN0ZXhwciBpbnQga01pblNldHRpbmcgPSAwOworY29uc3RleHByIGludCBrTWF4
U2V0dGluZyA9IDU7Cit9ICAvLyBuYW1lc3BhY2UKKworYWJzbDo6b3B0aW9uYWw8aW50PiBOb3Jt
YWxpemVTaW11bGNhc3RTaXplRXhwZXJpbWVudDo6R2V0QmFzZTJFeHBvbmVudCgpIHsKKyAgaWYg
KCF3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa0ZpZWxkVHJpYWwpKQorICAgIHJldHVy
biBhYnNsOjpudWxsb3B0OworCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGdyb3VwID0gd2VicnRjOjpm
aWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtGaWVsZFRyaWFsKTsKKyAgaWYgKGdyb3VwLmVtcHR5
KCkpCisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisKKyAgaW50IGV4cG9uZW50OworICBpZiAo
c3NjYW5mKGdyb3VwLmNfc3RyKCksICJFbmFibGVkLSVkIiwgJmV4cG9uZW50KSAhPSAxKSB7Cisg
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiTm8gcGFyYW1ldGVyIHByb3ZpZGVkLiI7CisgICAg
cmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKworICBpZiAoZXhwb25lbnQgPCBrTWluU2V0dGlu
ZyB8fCBleHBvbmVudCA+IGtNYXhTZXR0aW5nKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8
PCAiVW5zdXBwb3J0ZWQgZXhwIHZhbHVlIHByb3ZpZGVkLCB2YWx1ZSBpZ25vcmVkLiI7CisgICAg
cmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKworICByZXR1cm4gYWJzbDo6b3B0aW9uYWw8aW50
PihleHBvbmVudCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1l
bnRzL25vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9ub3JtYWxp
emVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMzU4MjAyYjI3MmFk
YTQxNGNjNjg3NGIzNjBhMjVjN2ZiNTY3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9ub3Jt
YWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfRVhQRVJJTUVOVFNfTk9STUFMSVpFX1NJ
TVVMQ0FTVF9TSVpFX0VYUEVSSU1FTlRfSF8KKyNkZWZpbmUgUlRDX0JBU0VfRVhQRVJJTUVOVFNf
Tk9STUFMSVpFX1NJTVVMQ0FTVF9TSVpFX0VYUEVSSU1FTlRfSF8KKworI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBOb3JtYWxpemVT
aW11bGNhc3RTaXplRXhwZXJpbWVudCB7CisgcHVibGljOgorICAvLyBSZXR1cm5zIHRoZSBiYXNl
IHR3byBleHBvbmVudCBmcm9tIGZpZWxkIHRyaWFsLgorICBzdGF0aWMgYWJzbDo6b3B0aW9uYWw8
aW50PiBHZXRCYXNlMkV4cG9uZW50KCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisK
KyNlbmRpZiAgLy8gUlRDX0JBU0VfRVhQRVJJTUVOVFNfTk9STUFMSVpFX1NJTVVMQ0FTVF9TSVpF
X0VYUEVSSU1FTlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6
ZV9leHBlcmltZW50X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVsY2FzdF9zaXpl
X2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM3YjgwOTE3ZmUzYzYwZWIxZTY2
OTg0NDhjNDRmM2U0MGU4ZGZjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9z
aW11bGNhc3Rfc2l6ZV9leHBlcmltZW50X3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9ub3JtYWxp
emVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oIgorCisjaW5jbHVkZSAicnRjX2Jhc2UvZ3Vu
aXQuaCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCitURVNUKE5vcm1hbGl6ZVNpbXVsY2FzdFNpemVFeHBlcmltZW50VGVzdCwgR2V0RXhwb25l
bnQpIHsKKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisg
ICAgICAiV2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2FzdFJlc29sdXRpb24vRW5hYmxlZC0yLyIpOwor
ICBFWFBFQ1RfRVEoMiwgTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnQ6OkdldEJhc2Uy
RXhwb25lbnQoKSk7Cit9CisKK1RFU1QoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnRU
ZXN0LCBHZXRFeHBvbmVudFdpdGhUd29QYXJhbWV0ZXJzKSB7CisgIHdlYnJ0Yzo6dGVzdDo6U2Nv
cGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1Ob3JtYWxpemVTaW11
bGNhc3RSZXNvbHV0aW9uL0VuYWJsZWQtMy00LyIpOworICBFWFBFQ1RfRVEoMywgTm9ybWFsaXpl
U2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnQ6OkdldEJhc2UyRXhwb25lbnQoKSk7Cit9CisKK1RFU1Qo
Tm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnRUZXN0LCBHZXRFeHBvbmVudEZhaWxzSWZO
b3RFbmFibGVkKSB7CisgIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJp
YWxzKAorICAgICAgIldlYlJUQy1Ob3JtYWxpemVTaW11bGNhc3RSZXNvbHV0aW9uL0Rpc2FibGVk
LyIpOworICBFWFBFQ1RfRkFMU0UoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnQ6Okdl
dEJhc2UyRXhwb25lbnQoKSk7Cit9CisKK1RFU1QoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVy
aW1lbnRUZXN0LAorICAgICBHZXRFeHBvbmVudEZhaWxzRm9ySW52YWxpZEZpZWxkVHJpYWwpIHsK
KyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisgICAgICAi
V2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2FzdFJlc29sdXRpb24vRW5hYmxlZC1pbnZhbGlkLyIpOwor
ICBFWFBFQ1RfRkFMU0UoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnQ6OkdldEJhc2Uy
RXhwb25lbnQoKSk7Cit9CisKK1RFU1QoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnRU
ZXN0LAorICAgICBHZXRFeHBvbmVudEZhaWxzRm9yTmVnYXRpdmVPdXRPZkJvdW5kVmFsdWUpIHsK
KyAgLy8gU3VwcG9ydGVkIHJhbmdlOiBbMCwgNV0uCisgIHdlYnJ0Yzo6dGVzdDo6U2NvcGVkRmll
bGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1Ob3JtYWxpemVTaW11bGNhc3RS
ZXNvbHV0aW9uL0VuYWJsZWQtLTEvIik7CisgIEVYUEVDVF9GQUxTRShOb3JtYWxpemVTaW11bGNh
c3RTaXplRXhwZXJpbWVudDo6R2V0QmFzZTJFeHBvbmVudCgpKTsKK30KKworVEVTVChOb3JtYWxp
emVTaW11bGNhc3RTaXplRXhwZXJpbWVudFRlc3QsCisgICAgIEdldEV4cG9uZW50RmFpbHNGb3JQ
b3NpdGl2ZU91dE9mQm91bmRWYWx1ZSkgeworICAvLyBTdXBwb3J0ZWQgcmFuZ2U6IFswLCA1XS4K
KyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisgICAgICAi
V2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2FzdFJlc29sdXRpb24vRW5hYmxlZC02LyIpOworICBFWFBF
Q1RfRkFMU0UoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnQ6OkdldEJhc2UyRXhwb25l
bnQoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL3F1
YWxpdHlfc2NhbGluZ19leHBlcmltZW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9xdWFsaXR5X3NjYWxpbmdfZXhwZXJp
bWVudC5oCmluZGV4IDgwYTI1ZWYxZWVlNThiMTkxYWRjMGYxYmI1YTAxNTU1OWIxZTIzNTEuLjE0
ODMzYzAwYjEyNzk3OGNiNmI2NWU5MjRjOGMwNDQ5YTlkMzIzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRz
L3F1YWxpdHlfc2NhbGluZ19leHBlcmltZW50LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvcXVhbGl0eV9zY2FsaW5n
X2V4cGVyaW1lbnQuaApAQCAtMTIsNyArMTIsNiBAQAogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9v
cHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgot
I2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogY2xhc3MgUXVhbGl0eVNjYWxpbmdFeHBlcmltZW50IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2Zha2VfbWRuc19yZXNwb25kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2Zha2VfbWRuc19yZXNwb25kZXIuaAppbmRleCAzMmQ2OWJhNjgz
NmE3ZjlmYzM5ZTY5NzZmNmU2NmUyNmEzOTg3NGQxLi4xZTYwYTVkOWRlMmQxY2NjNGZkZjE1NGJm
NmIzMDU5OGQ1YjY1YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlX21kbnNfcmVzcG9uZGVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFrZV9tZG5zX3Jl
c3BvbmRlci5oCkBAIC0yMSwxMCArMjEsMTAgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNs
YXNzIEZha2VNRG5zUmVzcG9uZGVyIDogcHVibGljIE1EbnNSZXNwb25kZXJJbnRlcmZhY2Ugewor
Y2xhc3MgRmFrZU1kbnNSZXNwb25kZXIgOiBwdWJsaWMgTWRuc1Jlc3BvbmRlckludGVyZmFjZSB7
CiAgcHVibGljOgotICBGYWtlTURuc1Jlc3BvbmRlcigpID0gZGVmYXVsdDsKLSAgfkZha2VNRG5z
UmVzcG9uZGVyKCkgPSBkZWZhdWx0OworICBleHBsaWNpdCBGYWtlTWRuc1Jlc3BvbmRlcihydGM6
OlRocmVhZCogdGhyZWFkKSA6IHRocmVhZF8odGhyZWFkKSB7fQorICB+RmFrZU1kbnNSZXNwb25k
ZXIoKSA9IGRlZmF1bHQ7CiAKICAgdm9pZCBDcmVhdGVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6
OklQQWRkcmVzcyYgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lQ3JlYXRl
ZENhbGxiYWNrIGNhbGxiYWNrKSBvdmVycmlkZSB7CkBAIC0zNSw3ICszNSw5IEBAIGNsYXNzIEZh
a2VNRG5zUmVzcG9uZGVyIDogcHVibGljIE1EbnNSZXNwb25kZXJJbnRlcmZhY2UgewogICAgICAg
bmFtZSA9IHN0ZDo6dG9fc3RyaW5nKG5leHRfYXZhaWxhYmxlX2lkXysrKSArICIubG9jYWwiOwog
ICAgICAgYWRkcl9uYW1lX21hcF9bYWRkcl0gPSBuYW1lOwogICAgIH0KLSAgICBjYWxsYmFjayhh
ZGRyLCBuYW1lKTsKKyAgICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lkPigKKyAgICAgICAgUlRD
X0ZST01fSEVSRSwgdGhyZWFkXywKKyAgICAgICAgW2NhbGxiYWNrLCBhZGRyLCBuYW1lXSgpIHsg
Y2FsbGJhY2soYWRkciwgbmFtZSk7IH0pOwogICB9CiAgIHZvaWQgUmVtb3ZlTmFtZUZvckFkZHJl
c3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmFtZVJlbW92ZWRDYWxsYmFjayBjYWxsYmFjaykgb3ZlcnJpZGUgewpAQCAtNDMsMTIgKzQ1
LDE2IEBAIGNsYXNzIEZha2VNRG5zUmVzcG9uZGVyIDogcHVibGljIE1EbnNSZXNwb25kZXJJbnRl
cmZhY2UgewogICAgIGlmIChpdCAhPSBhZGRyX25hbWVfbWFwXy5lbmQoKSkgewogICAgICAgYWRk
cl9uYW1lX21hcF8uZXJhc2UoaXQpOwogICAgIH0KLSAgICBjYWxsYmFjayhpdCAhPSBhZGRyX25h
bWVfbWFwXy5lbmQoKSk7CisgICAgYm9vbCByZXN1bHQgPSBpdCAhPSBhZGRyX25hbWVfbWFwXy5l
bmQoKTsKKyAgICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCB0aHJl
YWRfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjaywgcmVzdWx0XSgp
IHsgY2FsbGJhY2socmVzdWx0KTsgfSk7CiAgIH0KIAogIHByaXZhdGU6CiAgIHVpbnQzMl90IG5l
eHRfYXZhaWxhYmxlX2lkXyA9IDA7CiAgIHN0ZDo6bWFwPHJ0Yzo6SVBBZGRyZXNzLCBzdGQ6OnN0
cmluZz4gYWRkcl9uYW1lX21hcF87CisgIHJ0Yzo6VGhyZWFkKiB0aHJlYWRfOworICBydGM6OkFz
eW5jSW52b2tlciBpbnZva2VyXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2Zha2VuZXR3b3JrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9mYWtlbmV0d29yay5oCmluZGV4IGQ1NDI2YTNlMmM5MDk1NTQ1NmRmMTdjMmQz
ZTY2YjI1YzE2ZWIwNzcuLmNiODkwZWM1ODNkYzg3NmJlNmY0ZDQ0ZDJlYmRmMDgwM2MwNWFiNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2Zha2VuZXR3b3JrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFrZW5ldHdvcmsuaApAQCAtODIsMTYgKzgyLDE3IEBAIGNs
YXNzIEZha2VOZXR3b3JrTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrTWFuYWdlckJhc2UsIHB1Ymxp
YyBNZXNzYWdlSGFuZGxlciB7CiAgIC8vIE1lc3NhZ2VIYW5kbGVyIGludGVyZmFjZS4KICAgdmly
dHVhbCB2b2lkIE9uTWVzc2FnZShNZXNzYWdlKiBtc2cpIHsgRG9VcGRhdGVOZXR3b3JrcygpOyB9
CiAKLSAgdm9pZCBDcmVhdGVNRG5zUmVzcG9uZGVyKCkgeworICB2b2lkIENyZWF0ZU1kbnNSZXNw
b25kZXIoKSB7CiAgICAgaWYgKG1kbnNfcmVzcG9uZGVyXyA9PSBudWxscHRyKSB7Ci0gICAgICBt
ZG5zX3Jlc3BvbmRlcl8gPSBhYnNsOjptYWtlX3VuaXF1ZTx3ZWJydGM6OkZha2VNRG5zUmVzcG9u
ZGVyPigpOworICAgICAgbWRuc19yZXNwb25kZXJfID0KKyAgICAgICAgICBhYnNsOjptYWtlX3Vu
aXF1ZTx3ZWJydGM6OkZha2VNZG5zUmVzcG9uZGVyPihydGM6OlRocmVhZDo6Q3VycmVudCgpKTsK
ICAgICB9CiAgIH0KIAogICB1c2luZyBOZXR3b3JrTWFuYWdlckJhc2U6OnNldF9lbnVtZXJhdGlv
bl9wZXJtaXNzaW9uOwogICB1c2luZyBOZXR3b3JrTWFuYWdlckJhc2U6OnNldF9kZWZhdWx0X2xv
Y2FsX2FkZHJlc3NlczsKIAotICB3ZWJydGM6Ok1EbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1E
bnNSZXNwb25kZXIoKSBjb25zdCBvdmVycmlkZSB7CisgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlcklu
dGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IG92ZXJyaWRlIHsKICAgICByZXR1cm4g
bWRuc19yZXNwb25kZXJfLmdldCgpOwogICB9CiAKQEAgLTEzMSw3ICsxMzIsNyBAQCBjbGFzcyBG
YWtlTmV0d29ya01hbmFnZXIgOiBwdWJsaWMgTmV0d29ya01hbmFnZXJCYXNlLCBwdWJsaWMgTWVz
c2FnZUhhbmRsZXIgewogICBJUEFkZHJlc3MgZGVmYXVsdF9sb2NhbF9pcHY0X2FkZHJlc3NfOwog
ICBJUEFkZHJlc3MgZGVmYXVsdF9sb2NhbF9pcHY2X2FkZHJlc3NfOwogCi0gIHN0ZDo6dW5pcXVl
X3B0cjx3ZWJydGM6OkZha2VNRG5zUmVzcG9uZGVyPiBtZG5zX3Jlc3BvbmRlcl87CisgIHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OkZha2VNZG5zUmVzcG9uZGVyPiBtZG5zX3Jlc3BvbmRlcl87CiB9
OwogCiB9ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlc3NsaWRlbnRpdHkuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlc3NsaWRl
bnRpdHkuY2MKaW5kZXggODBhM2U3ODg4Nzg0NDFlZDFkY2E2ODk3ODYzYzNkYjliMTIxMzYyYi4u
NjJhYzlkZDAyMDdkODU2YTAxYjUwZTg3YTYyYWMxYTMwOWM5Y2Q4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFrZXNzbGlk
ZW50aXR5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2Zha2Vzc2xpZGVudGl0eS5jYwpAQCAtMjksOCArMjksOCBAQCBGYWtlU1NMQ2Vy
dGlmaWNhdGU6OkZha2VTU0xDZXJ0aWZpY2F0ZShjb25zdCBGYWtlU1NMQ2VydGlmaWNhdGUmKSA9
IGRlZmF1bHQ7CiAKIEZha2VTU0xDZXJ0aWZpY2F0ZTo6fkZha2VTU0xDZXJ0aWZpY2F0ZSgpID0g
ZGVmYXVsdDsKIAotRmFrZVNTTENlcnRpZmljYXRlKiBGYWtlU1NMQ2VydGlmaWNhdGU6OkdldFJl
ZmVyZW5jZSgpIGNvbnN0IHsKLSAgcmV0dXJuIG5ldyBGYWtlU1NMQ2VydGlmaWNhdGUoKnRoaXMp
Oworc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiBGYWtlU1NMQ2VydGlmaWNhdGU6OkNs
b25lKCkgY29uc3QgeworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8RmFrZVNTTENlcnRpZmlj
YXRlPigqdGhpcyk7CiB9CiAKIHN0ZDo6c3RyaW5nIEZha2VTU0xDZXJ0aWZpY2F0ZTo6VG9QRU1T
dHJpbmcoKSBjb25zdCB7CkBAIC04MywxMCArODMsMTAgQEAgRmFrZVNTTElkZW50aXR5OjpGYWtl
U1NMSWRlbnRpdHkoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBwZW1fc3RyaW5ncykg
ewogfQogCiBGYWtlU1NMSWRlbnRpdHk6OkZha2VTU0xJZGVudGl0eShjb25zdCBGYWtlU1NMQ2Vy
dGlmaWNhdGUmIGNlcnQpCi0gICAgOiBjZXJ0X2NoYWluXyhhYnNsOjptYWtlX3VuaXF1ZTxTU0xD
ZXJ0Q2hhaW4+KCZjZXJ0KSkge30KKyAgICA6IGNlcnRfY2hhaW5fKGFic2w6Om1ha2VfdW5pcXVl
PFNTTENlcnRDaGFpbj4oY2VydC5DbG9uZSgpKSkge30KIAogRmFrZVNTTElkZW50aXR5OjpGYWtl
U1NMSWRlbnRpdHkoY29uc3QgRmFrZVNTTElkZW50aXR5JiBvKQotICAgIDogY2VydF9jaGFpbl8o
by5jZXJ0X2NoYWluXy0+VW5pcXVlQ29weSgpKSB7fQorICAgIDogY2VydF9jaGFpbl8oby5jZXJ0
X2NoYWluXy0+Q2xvbmUoKSkge30KIAogRmFrZVNTTElkZW50aXR5Ojp+RmFrZVNTTElkZW50aXR5
KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlc3NsaWRlbnRpdHkuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zha2Vzc2xpZGVudGl0eS5oCmlu
ZGV4IDQ0OTRhNTI0ZWZhYjkwNzkxNjQ2M2ZmZmIwYzcxNzg2MzY5NzRkMWQuLmIxOWNiZmJiNDky
Y2ExNmU2NmVjMTA3NWI2OWZhNWY5NTU4NGVhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zha2Vzc2xpZGVudGl0eS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zh
a2Vzc2xpZGVudGl0eS5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CkBAIC0y
OCw3ICsyOSw3IEBAIGNsYXNzIEZha2VTU0xDZXJ0aWZpY2F0ZSA6IHB1YmxpYyBTU0xDZXJ0aWZp
Y2F0ZSB7CiAgIH5GYWtlU1NMQ2VydGlmaWNhdGUoKSBvdmVycmlkZTsKIAogICAvLyBTU0xDZXJ0
aWZpY2F0ZSBpbXBsZW1lbnRhdGlvbi4KLSAgRmFrZVNTTENlcnRpZmljYXRlKiBHZXRSZWZlcmVu
Y2UoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiBD
bG9uZSgpIGNvbnN0IG92ZXJyaWRlOwogICBzdGQ6OnN0cmluZyBUb1BFTVN0cmluZygpIGNvbnN0
IG92ZXJyaWRlOwogICB2b2lkIFRvREVSKEJ1ZmZlciogZGVyX2J1ZmZlcikgY29uc3Qgb3ZlcnJp
ZGU7CiAgIGludDY0X3QgQ2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZmlsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2ZpbGUuY2MKaW5kZXggNjIwMjQxMTlmY2MxN2E0OWM1YTdkMzMxZGE0MmVm
N2VkMjJmNjUwNS4uYTc5MzUwMDY0NmFmNjIzZDYwMzg5NmIyMzRhMTBkMzE2MmE2YjYxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvZmlsZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9maWxlLmNjCkBAIC0xMCw4ICsxMCw2IEBACiAKICNpbmNsdWRlICJydGNfYmFz
ZS9maWxlLmgiCiAKLSNpbmNsdWRlIDx1dGlsaXR5PgotCiBuYW1lc3BhY2UgcnRjIHsKIAogRmls
ZTo6RmlsZShQbGF0Zm9ybUZpbGUgZmlsZSkgOiBmaWxlXyhmaWxlKSB7fQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmls
ZS5oCmluZGV4IDc1ZmQ5M2QxMzEwMWUyNWZjYmRjNzIyMWRjZjliOWE1NjhkM2FmMzQuLmJjMDk3
NGFlMmEwYmJmNWYxMDg0MGVkNTVhYTFjOWEyOWRkOTZkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGUuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlLmgK
QEAgLTExLDggKzExLDggQEAKICNpZm5kZWYgUlRDX0JBU0VfRklMRV9IXwogI2RlZmluZSBSVENf
QkFTRV9GSUxFX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4K
LQogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFn
aWMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2ZpbGVfcG9zaXguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlX3Bvc2l4LmNjCmluZGV4IGIwZmVjOWY5ZmNlYTAw
MTRjYzc2ZGQzMGYwNzcwNWY4YTQyYTE3OWYuLjQ5MjAxOTI4MGM1MzVhZjYxMzI3YzY1MmU0OTE0
ZTczZmE5NzFkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGVfcG9zaXguY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZV9wb3NpeC5jYwpAQCAtOCwxNyAr
OCwxNiBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgogICovCiAKLSNpbmNsdWRlICJydGNfYmFzZS9maWxlLmgiCi0KICNp
bmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQu
aD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KLQogI2luY2x1ZGUgPGxpbWl0cz4KIAog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2ZpbGUuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmgiCiAKIG5hbWVzcGFjZSBydGMgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0uY2MKaW5kZXggYzlh
NjYzYWFmZmY4NjlmMzcwNmYxZmRkZGUzODUwMmI0ZDg0MDU1OS4uYjFkYzVmZjk5ODE3ODUxYzFj
OTUyMWI0ZTA4N2IwMmFiZTUwOTM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGVy
b3RhdGluZ3N0cmVhbS5jYwpAQCAtMTMsMTcgKzEzLDE1OSBAQAogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8c3RyaW5nPgotCisjaW5jbHVkZSA8dXRp
bGl0eT4KKworI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKKyNpbmNsdWRlIDx3aW5kb3dzLmg+Cisj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKKyNlbHNlCisjaW5jbHVkZSA8ZGlyZW50
Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZiAg
Ly8gV0VCUlRDX1dJTgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZmlsZXV0aWxzLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvcGF0aHV0aWxzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
cy9zdHJpbmdfYnVpbGRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogLy8g
Tm90ZTogV2UgdXNlIGZwcmludGYgZm9yIGxvZ2dpbmcgaW4gdGhlIHdyaXRlIHBhdGhzIG9mIHRo
aXMgc3RyZWFtIHRvIGF2b2lkCiAvLyBpbmZpbml0ZSBsb29wcyB3aGVuIGxvZ2dpbmcuCiAKIG5h
bWVzcGFjZSBydGMgewogCituYW1lc3BhY2UgeworCitzdGQ6OnN0cmluZyBBZGRUcmFpbGluZ1Bh
dGhEZWxpbWl0ZXJJZk5lZWRlZChzdGQ6OnN0cmluZyBkaXJlY3RvcnkpOworCisvLyB8ZGlyfCBt
dXN0IGhhdmUgYSB0cmFpbGluZyBkZWxpbWl0ZXIuIHxwcmVmaXh8IG11c3Qgbm90IGluY2x1ZGUg
d2lsZCBjYXJkCisvLyBjaGFyYWN0ZXJzLgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEZp
bGVzV2l0aFByZWZpeChjb25zdCBzdGQ6OnN0cmluZyYgZGlyZWN0b3J5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcHJlZml4
KTsKK2Jvb2wgRGVsZXRlRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSk7Citib29sIE1vdmVG
aWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvbGRfZmlsZSwgY29uc3Qgc3RkOjpzdHJpbmcmIG5ld19m
aWxlKTsKK2Jvb2wgSXNGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKTsKK2Jvb2wgSXNGb2xk
ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpOworYWJzbDo6b3B0aW9uYWw8c2l6ZV90PiBHZXRG
aWxlU2l6ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSk7CisKKyNpZiBkZWZpbmVkKFdFQlJUQ19X
SU4pCisKK3N0ZDo6c3RyaW5nIEFkZFRyYWlsaW5nUGF0aERlbGltaXRlcklmTmVlZGVkKHN0ZDo6
c3RyaW5nIGRpcmVjdG9yeSkgeworICBpZiAoYWJzbDo6RW5kc1dpdGgoZGlyZWN0b3J5LCAiXFwi
KSkgeworICAgIHJldHVybiBkaXJlY3Rvcnk7CisgIH0KKyAgcmV0dXJuIGRpcmVjdG9yeSArICJc
XCI7Cit9CisKK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRGaWxlc1dpdGhQcmVmaXgoY29u
c3Qgc3RkOjpzdHJpbmcmIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHByZWZpeCkgeworICBSVENfRENIRUNL
KGFic2w6OkVuZHNXaXRoKGRpcmVjdG9yeSwgIlxcIikpOworICBXSU4zMl9GSU5EX0RBVEEgZGF0
YTsKKyAgSEFORExFIGhhbmRsZTsKKyAgaGFuZGxlID0gOjpGaW5kRmlyc3RGaWxlKFRvVXRmMTYo
ZGlyZWN0b3J5ICsgcHJlZml4ICsgJyonKS5jX3N0cigpLCAmZGF0YSk7CisgIGlmIChoYW5kbGUg
PT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgcmV0dXJuIHt9OworCisgIHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiBmaWxlX2xpc3Q7CisgIGRvIHsKKyAgICBmaWxlX2xpc3QuZW1wbGFjZV9i
YWNrKGRpcmVjdG9yeSArIFRvVXRmOChkYXRhLmNGaWxlTmFtZSkpOworICB9IHdoaWxlICg6OkZp
bmROZXh0RmlsZShoYW5kbGUsICZkYXRhKSA9PSBUUlVFKTsKKworICA6OkZpbmRDbG9zZShoYW5k
bGUpOworICByZXR1cm4gZmlsZV9saXN0OworfQorCitib29sIERlbGV0ZUZpbGUoY29uc3Qgc3Rk
OjpzdHJpbmcmIGZpbGUpIHsKKyAgcmV0dXJuIDo6RGVsZXRlRmlsZShUb1V0ZjE2KGZpbGUpLmNf
c3RyKCkpICE9IDA7Cit9CisKK2Jvb2wgTW92ZUZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIG9sZF9m
aWxlLCBjb25zdCBzdGQ6OnN0cmluZyYgbmV3X2ZpbGUpIHsKKyAgcmV0dXJuIDo6TW92ZUZpbGUo
VG9VdGYxNihvbGRfZmlsZSkuY19zdHIoKSwgVG9VdGYxNihuZXdfZmlsZSkuY19zdHIoKSkgIT0g
MDsKK30KKworYm9vbCBJc0ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpIHsKKyAgV0lOMzJf
RklMRV9BVFRSSUJVVEVfREFUQSBkYXRhID0gezB9OworICBpZiAoMCA9PSA6OkdldEZpbGVBdHRy
aWJ1dGVzRXgoVG9VdGYxNihmaWxlKS5jX3N0cigpLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YSkpCisgICAgcmV0dXJuIGZhbHNl
OworICByZXR1cm4gKGRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVD
VE9SWSkgPT0gMDsKK30KKworYm9vbCBJc0ZvbGRlcihjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSkg
eworICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIGRhdGEgPSB7MH07CisgIGlmICgwID09IDo6
R2V0RmlsZUF0dHJpYnV0ZXNFeChUb1V0ZjE2KGZpbGUpLmNfc3RyKCksIEdldEZpbGVFeEluZm9T
dGFuZGFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhKSkKKyAgICBy
ZXR1cm4gZmFsc2U7CisgIHJldHVybiAoZGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRS
SUJVVEVfRElSRUNUT1JZKSA9PQorICAgICAgICAgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZOwor
fQorCithYnNsOjpvcHRpb25hbDxzaXplX3Q+IEdldEZpbGVTaXplKGNvbnN0IHN0ZDo6c3RyaW5n
JiBmaWxlKSB7CisgIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgZGF0YSA9IHswfTsKKyAgaWYg
KDo6R2V0RmlsZUF0dHJpYnV0ZXNFeChUb1V0ZjE2KGZpbGUpLmNfc3RyKCksIEdldEZpbGVFeElu
Zm9TdGFuZGFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YSkgPT0gMCkKKyAg
ICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgcmV0dXJuIGRhdGEubkZpbGVTaXplTG93OworfQor
CisjZWxzZSAgLy8gZGVmaW5lZChXRUJSVENfV0lOKQorCitzdGQ6OnN0cmluZyBBZGRUcmFpbGlu
Z1BhdGhEZWxpbWl0ZXJJZk5lZWRlZChzdGQ6OnN0cmluZyBkaXJlY3RvcnkpIHsKKyAgaWYgKGFi
c2w6OkVuZHNXaXRoKGRpcmVjdG9yeSwgIi8iKSkgeworICAgIHJldHVybiBkaXJlY3Rvcnk7Cisg
IH0KKyAgcmV0dXJuIGRpcmVjdG9yeSArICIvIjsKK30KKworc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+IEdldEZpbGVzV2l0aFByZWZpeChjb25zdCBzdGQ6OnN0cmluZyYgZGlyZWN0b3J5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcHJlZml4KSB7CisgIFJUQ19EQ0hFQ0soYWJzbDo6RW5kc1dpdGgoZGlyZWN0b3J5LCAiLyIp
KTsKKyAgRElSKiBkaXIgPSA6Om9wZW5kaXIoZGlyZWN0b3J5LmNfc3RyKCkpOworICBpZiAoZGly
ID09IG51bGxwdHIpCisgICAgcmV0dXJuIHt9OworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
ZmlsZV9saXN0OworICBmb3IgKHN0cnVjdCBkaXJlbnQqIGRpcmVudCA9IDo6cmVhZGRpcihkaXIp
OyBkaXJlbnQ7CisgICAgICAgZGlyZW50ID0gOjpyZWFkZGlyKGRpcikpIHsKKyAgICBzdGQ6OnN0
cmluZyBuYW1lID0gZGlyZW50LT5kX25hbWU7CisgICAgaWYgKG5hbWUuY29tcGFyZSgwLCBwcmVm
aXguc2l6ZSgpLCBwcmVmaXgpID09IDApIHsKKyAgICAgIGZpbGVfbGlzdC5lbXBsYWNlX2JhY2so
ZGlyZWN0b3J5ICsgbmFtZSk7CisgICAgfQorICB9CisgIDo6Y2xvc2VkaXIoZGlyKTsKKyAgcmV0
dXJuIGZpbGVfbGlzdDsKK30KKworYm9vbCBEZWxldGVGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBm
aWxlKSB7CisgIHJldHVybiA6OnVubGluayhmaWxlLmNfc3RyKCkpID09IDA7Cit9CisKK2Jvb2wg
TW92ZUZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIG9sZF9maWxlLCBjb25zdCBzdGQ6OnN0cmluZyYg
bmV3X2ZpbGUpIHsKKyAgcmV0dXJuIDo6cmVuYW1lKG9sZF9maWxlLmNfc3RyKCksIG5ld19maWxl
LmNfc3RyKCkpID09IDA7Cit9CisKK2Jvb2wgSXNGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxl
KSB7CisgIHN0cnVjdCBzdGF0IHN0OworICBpbnQgcmVzID0gOjpzdGF0KGZpbGUuY19zdHIoKSwg
JnN0KTsKKyAgLy8gVHJlYXQgc3ltbGlua3MsIG5hbWVkIHBpcGVzLCBldGMuIGFsbCBhcyBmaWxl
cy4KKyAgcmV0dXJuIHJlcyA9PSAwICYmICFTX0lTRElSKHN0LnN0X21vZGUpOworfQorCitib29s
IElzRm9sZGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKSB7CisgIHN0cnVjdCBzdGF0IHN0Owor
ICBpbnQgcmVzID0gOjpzdGF0KGZpbGUuY19zdHIoKSwgJnN0KTsKKyAgcmV0dXJuIHJlcyA9PSAw
ICYmIFNfSVNESVIoc3Quc3RfbW9kZSk7Cit9CisKK2Fic2w6Om9wdGlvbmFsPHNpemVfdD4gR2V0
RmlsZVNpemUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpIHsKKyAgc3RydWN0IHN0YXQgc3Q7Cisg
IGlmICg6OnN0YXQoZmlsZS5jX3N0cigpLCAmc3QpICE9IDApCisgICAgcmV0dXJuIGFic2w6Om51
bGxvcHQ7CisgIHJldHVybiBzdC5zdF9zaXplOworfQorCisjZW5kaWYKKworfSAgLy8gbmFtZXNw
YWNlCisKIEZpbGVSb3RhdGluZ1N0cmVhbTo6RmlsZVJvdGF0aW5nU3RyZWFtKGNvbnN0IHN0ZDo6
c3RyaW5nJiBkaXJfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX3ByZWZpeCkKICAgICA6IEZpbGVSb3RhdGluZ1N0cmVh
bShkaXJfcGF0aCwgZmlsZV9wcmVmaXgsIDAsIDAsIGtSZWFkKSB7fQpAQCAtNDYsNyArMTg4LDcg
QEAgRmlsZVJvdGF0aW5nU3RyZWFtOjpGaWxlUm90YXRpbmdTdHJlYW0oY29uc3Qgc3RkOjpzdHJp
bmcmIGRpcl9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG1heF9maWxlX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgbnVtX2ZpbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTW9kZSBtb2RlKQotICAgIDogZGlyX3BhdGhfKGRpcl9wYXRoKSwKKyAgICA6IGRpcl9wYXRo
XyhBZGRUcmFpbGluZ1BhdGhEZWxpbWl0ZXJJZk5lZWRlZChkaXJfcGF0aCkpLAogICAgICAgZmls
ZV9wcmVmaXhfKGZpbGVfcHJlZml4KSwKICAgICAgIG1vZGVfKG1vZGUpLAogICAgICAgZmlsZV9z
dHJlYW1fKG51bGxwdHIpLApAQCAtNTUsNyArMTk3LDcgQEAgRmlsZVJvdGF0aW5nU3RyZWFtOjpG
aWxlUm90YXRpbmdTdHJlYW0oY29uc3Qgc3RkOjpzdHJpbmcmIGRpcl9wYXRoLAogICAgICAgcm90
YXRpb25faW5kZXhfKDApLAogICAgICAgY3VycmVudF9ieXRlc193cml0dGVuXygwKSwKICAgICAg
IGRpc2FibGVfYnVmZmVyaW5nXyhmYWxzZSkgewotICBSVENfRENIRUNLKEZpbGVzeXN0ZW06Oklz
Rm9sZGVyKGRpcl9wYXRoKSk7CisgIFJUQ19EQ0hFQ0soSXNGb2xkZXIoZGlyX3BhdGgpKTsKICAg
c3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBrV3JpdGU6IHsKICAgICAgIGZpbGVfbmFtZXNfLmNs
ZWFyKCk7CkBAIC02Niw3ICsyMDgsNyBAQCBGaWxlUm90YXRpbmdTdHJlYW06OkZpbGVSb3RhdGlu
Z1N0cmVhbShjb25zdCBzdGQ6OnN0cmluZyYgZGlyX3BhdGgsCiAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBrUmVhZDogewotICAgICAgZmlsZV9uYW1lc18gPSBHZXRGaWxlc1dpdGhQcmVm
aXgoKTsKKyAgICAgIGZpbGVfbmFtZXNfID0gR2V0RmlsZXNXaXRoUHJlZml4KGRpcl9wYXRoXywg
ZmlsZV9wcmVmaXhfKTsKICAgICAgIHN0ZDo6c29ydChmaWxlX25hbWVzXy5iZWdpbigpLCBmaWxl
X25hbWVzXy5lbmQoKSk7CiAgICAgICBpZiAoZmlsZV9uYW1lc18uc2l6ZSgpID4gMCkgewogICAg
ICAgICAvLyB8ZmlsZV9uYW1lc198IGlzIHNvcnRlZCBuZXdlc3QgZmlyc3QsIHNvIHJlYWQgZnJv
bSB0aGUgZW5kLgpAQCAtMTg3LDExICszMjksNyBAQCBib29sIEZpbGVSb3RhdGluZ1N0cmVhbTo6
R2V0U2l6ZShzaXplX3QqIHNpemUpIGNvbnN0IHsKICAgKnNpemUgPSAwOwogICBzaXplX3QgdG90
YWxfc2l6ZSA9IDA7CiAgIGZvciAoYXV0byBmaWxlX25hbWUgOiBmaWxlX25hbWVzXykgewotICAg
IFBhdGhuYW1lIHBhdGhuYW1lKGZpbGVfbmFtZSk7Ci0gICAgc2l6ZV90IGZpbGVfc2l6ZSA9IDA7
Ci0gICAgaWYgKEZpbGVzeXN0ZW06OkdldEZpbGVTaXplKGZpbGVfbmFtZSwgJmZpbGVfc2l6ZSkp
IHsKLSAgICAgIHRvdGFsX3NpemUgKz0gZmlsZV9zaXplOwotICAgIH0KKyAgICB0b3RhbF9zaXpl
ICs9IEdldEZpbGVTaXplKGZpbGVfbmFtZSkudmFsdWVfb3IoMCk7CiAgIH0KICAgKnNpemUgPSB0
b3RhbF9zaXplOwogICByZXR1cm4gdHJ1ZTsKQEAgLTIwOSw5ICszNDcsMTAgQEAgYm9vbCBGaWxl
Um90YXRpbmdTdHJlYW06Ok9wZW4oKSB7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIGtX
cml0ZTogewogICAgICAgLy8gRGVsZXRlIGV4aXN0aW5nIGZpbGVzIHdoZW4gb3BlbmluZyBmb3Ig
d3JpdGUuCi0gICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbWF0Y2hpbmdfZmlsZXMgPSBH
ZXRGaWxlc1dpdGhQcmVmaXgoKTsKLSAgICAgIGZvciAoYXV0byBtYXRjaGluZ19maWxlIDogbWF0
Y2hpbmdfZmlsZXMpIHsKLSAgICAgICAgaWYgKCFGaWxlc3lzdGVtOjpEZWxldGVGaWxlKG1hdGNo
aW5nX2ZpbGUpKSB7CisgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbWF0Y2hpbmdfZmls
ZXMgPQorICAgICAgICAgIEdldEZpbGVzV2l0aFByZWZpeChkaXJfcGF0aF8sIGZpbGVfcHJlZml4
Xyk7CisgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1hdGNoaW5nX2ZpbGUgOiBtYXRjaGluZ19maWxl
cykgeworICAgICAgICBpZiAoIURlbGV0ZUZpbGUobWF0Y2hpbmdfZmlsZSkpIHsKICAgICAgICAg
ICBzdGQ6OmZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGRlbGV0ZTogJXNcbiIsIG1hdGNoaW5n
X2ZpbGUuY19zdHIoKSk7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTI4MiwxNiArNDIxLDE2IEBA
IHZvaWQgRmlsZVJvdGF0aW5nU3RyZWFtOjpSb3RhdGVGaWxlcygpIHsKICAgLy8gU2VlIGhlYWRl
ciBmaWxlIGNvbW1lbnRzIGZvciBleGFtcGxlLgogICBSVENfRENIRUNLX0xUKHJvdGF0aW9uX2lu
ZGV4XywgZmlsZV9uYW1lc18uc2l6ZSgpKTsKICAgc3RkOjpzdHJpbmcgZmlsZV90b19kZWxldGUg
PSBmaWxlX25hbWVzX1tyb3RhdGlvbl9pbmRleF9dOwotICBpZiAoRmlsZXN5c3RlbTo6SXNGaWxl
KGZpbGVfdG9fZGVsZXRlKSkgewotICAgIGlmICghRmlsZXN5c3RlbTo6RGVsZXRlRmlsZShmaWxl
X3RvX2RlbGV0ZSkpIHsKKyAgaWYgKElzRmlsZShmaWxlX3RvX2RlbGV0ZSkpIHsKKyAgICBpZiAo
IURlbGV0ZUZpbGUoZmlsZV90b19kZWxldGUpKSB7CiAgICAgICBzdGQ6OmZwcmludGYoc3RkZXJy
LCAiRmFpbGVkIHRvIGRlbGV0ZTogJXNcbiIsIGZpbGVfdG9fZGVsZXRlLmNfc3RyKCkpOwogICAg
IH0KICAgfQogICBmb3IgKGF1dG8gaSA9IHJvdGF0aW9uX2luZGV4XzsgaSA+IDA7IC0taSkgewog
ICAgIHN0ZDo6c3RyaW5nIHJvdGF0ZWRfbmFtZSA9IGZpbGVfbmFtZXNfW2ldOwogICAgIHN0ZDo6
c3RyaW5nIHVucm90YXRlZF9uYW1lID0gZmlsZV9uYW1lc19baSAtIDFdOwotICAgIGlmIChGaWxl
c3lzdGVtOjpJc0ZpbGUodW5yb3RhdGVkX25hbWUpKSB7Ci0gICAgICBpZiAoIUZpbGVzeXN0ZW06
Ok1vdmVGaWxlKHVucm90YXRlZF9uYW1lLCByb3RhdGVkX25hbWUpKSB7CisgICAgaWYgKElzRmls
ZSh1bnJvdGF0ZWRfbmFtZSkpIHsKKyAgICAgIGlmICghTW92ZUZpbGUodW5yb3RhdGVkX25hbWUs
IHJvdGF0ZWRfbmFtZSkpIHsKICAgICAgICAgc3RkOjpmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0
byBtb3ZlOiAlcyB0byAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgIHVucm90YXRlZF9uYW1l
LmNfc3RyKCksIHJvdGF0ZWRfbmFtZS5jX3N0cigpKTsKICAgICAgIH0KQEAgLTMwMiwyNiArNDQx
LDYgQEAgdm9pZCBGaWxlUm90YXRpbmdTdHJlYW06OlJvdGF0ZUZpbGVzKCkgewogICBPblJvdGF0
aW9uKCk7CiB9CiAKLXN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBGaWxlUm90YXRpbmdTdHJlYW06
OkdldEZpbGVzV2l0aFByZWZpeCgpIGNvbnN0IHsKLSAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IGZpbGVzOwotICAvLyBJdGVyYXRlIG92ZXIgdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuCi0g
IERpcmVjdG9yeUl0ZXJhdG9yIGl0OwotICBQYXRobmFtZSBkaXJfcGF0aDsKLSAgZGlyX3BhdGgu
U2V0Rm9sZGVyKGRpcl9wYXRoXyk7Ci0gIGlmICghaXQuSXRlcmF0ZShkaXJfcGF0aCkpIHsKLSAg
ICByZXR1cm4gZmlsZXM7Ci0gIH0KLSAgZG8gewotICAgIHN0ZDo6c3RyaW5nIGN1cnJlbnRfbmFt
ZSA9IGl0Lk5hbWUoKTsKLSAgICBpZiAoY3VycmVudF9uYW1lLnNpemUoKSAmJiAhaXQuSXNEaXJl
Y3RvcnkoKSAmJgotICAgICAgICBjdXJyZW50X25hbWUuY29tcGFyZSgwLCBmaWxlX3ByZWZpeF8u
c2l6ZSgpLCBmaWxlX3ByZWZpeF8pID09IDApIHsKLSAgICAgIFBhdGhuYW1lIHBhdGgoZGlyX3Bh
dGhfLCBjdXJyZW50X25hbWUpOwotICAgICAgZmlsZXMucHVzaF9iYWNrKHBhdGgucGF0aG5hbWUo
KSk7Ci0gICAgfQotICB9IHdoaWxlIChpdC5OZXh0KCkpOwotICByZXR1cm4gZmlsZXM7Ci19Ci0K
IHN0ZDo6c3RyaW5nIEZpbGVSb3RhdGluZ1N0cmVhbTo6R2V0RmlsZVBhdGgoc2l6ZV90IGluZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVt
X2ZpbGVzKSBjb25zdCB7CiAgIFJUQ19EQ0hFQ0tfTFQoaW5kZXgsIG51bV9maWxlcyk7CkBAIC0z
MzMsOCArNDUyLDcgQEAgc3RkOjpzdHJpbmcgRmlsZVJvdGF0aW5nU3RyZWFtOjpHZXRGaWxlUGF0
aChzaXplX3QgaW5kZXgsCiAgIFJUQ19EQ0hFQ0tfTFQoMSArIG1heF9kaWdpdHMsIGJ1ZmZlcl9z
aXplKTsKICAgc3RkOjpzbnByaW50ZihmaWxlX3Bvc3RmaXgsIGJ1ZmZlcl9zaXplLCAiXyUwKnp1
IiwgbWF4X2RpZ2l0cywgaW5kZXgpOwogCi0gIFBhdGhuYW1lIGZpbGVfcGF0aChkaXJfcGF0aF8s
IGZpbGVfcHJlZml4XyArIGZpbGVfcG9zdGZpeCk7Ci0gIHJldHVybiBmaWxlX3BhdGgucGF0aG5h
bWUoKTsKKyAgcmV0dXJuIGRpcl9wYXRoXyArIGZpbGVfcHJlZml4XyArIGZpbGVfcG9zdGZpeDsK
IH0KIAogQ2FsbFNlc3Npb25GaWxlUm90YXRpbmdTdHJlYW06OkNhbGxTZXNzaW9uRmlsZVJvdGF0
aW5nU3RyZWFtKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0uaApp
bmRleCA0ZGFiMzQ1NWRiMDE5M2IyMTMzMmFkNWUxM2EwMjg1MDQyNjMxZTA4Li5jNzVlZTE1M2I2
ZTRhNjBlNGMzNGY4NzU0ZTBmMTZhMjEzYTg3NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9maWxlcm90YXRpbmdzdHJlYW0uaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBSVENfQkFT
RV9GSUxFUk9UQVRJTkdTVFJFQU1fSF8KICNkZWZpbmUgUlRDX0JBU0VfRklMRVJPVEFUSU5HU1RS
RUFNX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KQEAgLTEwMSw4ICsxMDIsNiBAQCBjbGFzcyBG
aWxlUm90YXRpbmdTdHJlYW0gOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKICAgLy8gY3JlYXRl
IG5ldyBmaWxlXzAKICAgdm9pZCBSb3RhdGVGaWxlcygpOwogCi0gIC8vIFJldHVybnMgYSBsaXN0
IG9mIGZpbGUgbmFtZXMgaW4gdGhlIGRpcmVjdG9yeSBiZWdpbm5pbmcgd2l0aCB0aGUgcHJlZml4
LgotICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0RmlsZXNXaXRoUHJlZml4KCkgY29uc3Q7
CiAgIC8vIFByaXZhdGUgdmVyc2lvbiBvZiBHZXRGaWxlUGF0aC4KICAgc3RkOjpzdHJpbmcgR2V0
RmlsZVBhdGgoc2l6ZV90IGluZGV4LCBzaXplX3QgbnVtX2ZpbGVzKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
ZmlsZXJvdGF0aW5nc3RyZWFtX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtX3VuaXR0ZXN0LmNj
CmluZGV4IDE5MDU1MTYyZmQwMTk0NWQ1YmNhZGYyYzFmN2Q5YmEwOWY1MzZjODkuLjE3MmJlNTdl
YWNjNjlkNDhjOWMyNWYwZTU4Nzg0MTg2YjljNzFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGVyb3RhdGluZ3N0cmVh
bV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW1fdW5pdHRlc3QuY2MKQEAgLTEzLDkgKzEz
LDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0uaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9maWxldXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL3BhdGh1dGlscy5oIgogI2luY2x1ZGUgInRlc3QvdGVzdHN1
cHBvcnQvZmlsZXV0aWxzLmgiCiAKIG5hbWVzcGFjZSBydGMgewpAQCAtNDYsMTIgKzQ0LDE1IEBA
IGNsYXNzIE1BWUJFX0ZpbGVSb3RhdGluZ1N0cmVhbVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKICAgdm9pZCBJbml0KGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXJfbmFtZSwKICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX3ByZWZpeCwKICAgICAgICAgICAgIHNpemVfdCBt
YXhfZmlsZV9zaXplLAotICAgICAgICAgICAgc2l6ZV90IG51bV9sb2dfZmlsZXMpIHsKKyAgICAg
ICAgICAgIHNpemVfdCBudW1fbG9nX2ZpbGVzLAorICAgICAgICAgICAgYm9vbCBlbnN1cmVfdHJh
aWxpbmdfZGVsaW1pdGVyID0gdHJ1ZSkgewogICAgIGRpcl9wYXRoXyA9IHdlYnJ0Yzo6dGVzdDo6
T3V0cHV0UGF0aCgpOwogCiAgICAgLy8gQXBwZW5kIHBlci10ZXN0IG91dHB1dCBwYXRoIGluIG9y
ZGVyIHRvIHJ1biB3aXRoaW4gZ3Rlc3QgcGFyYWxsZWwuCiAgICAgZGlyX3BhdGhfLmFwcGVuZChk
aXJfbmFtZSk7Ci0gICAgZGlyX3BhdGhfLnB1c2hfYmFjayhQYXRobmFtZTo6RGVmYXVsdEZvbGRl
ckRlbGltaXRlcigpKTsKKyAgICBpZiAoZW5zdXJlX3RyYWlsaW5nX2RlbGltaXRlcikgeworICAg
ICAgZGlyX3BhdGhfLmFwcGVuZCh3ZWJydGM6OnRlc3Q6OmtQYXRoRGVsaW1pdGVyKTsKKyAgICB9
CiAgICAgQVNTRVJUX1RSVUUod2VicnRjOjp0ZXN0OjpDcmVhdGVEaXIoZGlyX3BhdGhfKSk7CiAg
ICAgc3RyZWFtXy5yZXNldChuZXcgRmlsZVJvdGF0aW5nU3RyZWFtKGRpcl9wYXRoXywgZmlsZV9w
cmVmaXgsIG1heF9maWxlX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bV9sb2dfZmlsZXMpKTsKQEAgLTE1OSwxMiArMTYwLDEyIEBAIFRFU1RfRihNQVlC
RV9GaWxlUm90YXRpbmdTdHJlYW1UZXN0LCBXcml0ZUFuZFJlYWQpIHsKICAgfQogICAvLyBDaGVj
ayB0aGF0IGV4YWN0bHkgdGhyZWUgZmlsZXMgZXhpc3QuCiAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXJyYXlzaXplKG1lc3NhZ2VzKTsgKytpKSB7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZXN5c3Rl
bTo6SXNGaWxlKHN0cmVhbV8tPkdldEZpbGVQYXRoKGkpKSk7CisgICAgRVhQRUNUX1RSVUUod2Vi
cnRjOjp0ZXN0OjpGaWxlRXhpc3RzKHN0cmVhbV8tPkdldEZpbGVQYXRoKGkpKSk7CiAgIH0KICAg
c3RkOjpzdHJpbmcgbWVzc2FnZSgiZCIpOwogICBXcml0ZUFuZEZsdXNoKG1lc3NhZ2UuY19zdHIo
KSwgbWVzc2FnZS5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZSht
ZXNzYWdlcyk7ICsraSkgewotICAgIEVYUEVDVF9UUlVFKEZpbGVzeXN0ZW06OklzRmlsZShzdHJl
YW1fLT5HZXRGaWxlUGF0aChpKSkpOworICAgIEVYUEVDVF9UUlVFKHdlYnJ0Yzo6dGVzdDo6Rmls
ZUV4aXN0cyhzdHJlYW1fLT5HZXRGaWxlUGF0aChpKSkpOwogICB9CiAgIC8vIFRPRE8odGtjaGlu
KTogTWF5YmUgY2hlY2sgYWxsIHRoZSBmaWxlcyBpbiB0aGUgZGlyLgogCkBAIC0xNzQsNiArMTc1
LDUzIEBAIFRFU1RfRihNQVlCRV9GaWxlUm90YXRpbmdTdHJlYW1UZXN0LCBXcml0ZUFuZFJlYWQp
IHsKICAgICAgICAgICAgICAgICAgICBkaXJfcGF0aF8sIGtGaWxlUHJlZml4KTsKIH0KIAorLy8g
VGVzdHMgdGhhdCBhIHdyaXRlIG9wZXJhdGlvbiAod2l0aCBkaXIgbmFtZSB3aXRob3V0IGRlbGlt
aXRlcikgZm9sbG93ZWQgYnkgYQorLy8gcmVhZCByZXR1cm5zIHRoZSBleHBlY3RlZCBkYXRhIGFu
ZCB3cml0ZXMgdG8gdGhlIGV4cGVjdGVkIGZpbGVzLgorVEVTVF9GKE1BWUJFX0ZpbGVSb3RhdGlu
Z1N0cmVhbVRlc3QsIFdyaXRlV2l0aG91dERlbGltaXRlckFuZFJlYWQpIHsKKyAgSW5pdCgiRmls
ZVJvdGF0aW5nU3RyZWFtVGVzdFdyaXRlV2l0aG91dERlbGltaXRlckFuZFJlYWQiLCBrRmlsZVBy
ZWZpeCwKKyAgICAgICBrTWF4RmlsZVNpemUsIDMsCisgICAgICAgLyogZW5zdXJlX3RyYWlsaW5n
X2RlbGltaXRlciovIGZhbHNlKTsKKworICBBU1NFUlRfVFJVRShzdHJlYW1fLT5PcGVuKCkpOwor
ICAvLyBUaGUgdGVzdCBpcyBzZXQgdXAgdG8gY3JlYXRlIHRocmVlIGxvZyBmaWxlcyBvZiBsZW5n
dGggMi4gV3JpdGUgYW5kIGNoZWNrCisgIC8vIGNvbnRlbnRzLgorICBzdGQ6OnN0cmluZyBtZXNz
YWdlc1szXSA9IHsiYWEiLCAiYmIiLCAiY2MifTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
cnJheXNpemUobWVzc2FnZXMpOyArK2kpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2Fn
ZSA9IG1lc3NhZ2VzW2ldOworICAgIFdyaXRlQW5kRmx1c2gobWVzc2FnZS5jX3N0cigpLCBtZXNz
YWdlLnNpemUoKSk7CisgIH0KKyAgc3RkOjpzdHJpbmcgbWVzc2FnZSgiZCIpOworICBXcml0ZUFu
ZEZsdXNoKG1lc3NhZ2UuY19zdHIoKSwgbWVzc2FnZS5zaXplKCkpOworCisgIC8vIFJlb3BlbiBm
b3IgcmVhZC4KKyAgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfY29udGVudHMoImJiY2NkIik7CisgIFZl
cmlmeVN0cmVhbVJlYWQoZXhwZWN0ZWRfY29udGVudHMuY19zdHIoKSwgZXhwZWN0ZWRfY29udGVu
dHMuc2l6ZSgpLAorICAgICAgICAgICAgICAgICAgIGRpcl9wYXRoXyArIHdlYnJ0Yzo6dGVzdDo6
a1BhdGhEZWxpbWl0ZXIsIGtGaWxlUHJlZml4KTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHdyaXRl
IG9wZXJhdGlvbiBmb2xsb3dlZCBieSBhIHJlYWQgKHdpdGhvdXQgdHJhaWxpbmcgZGVsaW1pdGVy
KQorLy8gcmV0dXJucyB0aGUgZXhwZWN0ZWQgZGF0YSBhbmQgd3JpdGVzIHRvIHRoZSBleHBlY3Rl
ZCBmaWxlcy4KK1RFU1RfRihNQVlCRV9GaWxlUm90YXRpbmdTdHJlYW1UZXN0LCBXcml0ZUFuZFJl
YWRXaXRob3V0RGVsaW1pdGVyKSB7CisgIEluaXQoIkZpbGVSb3RhdGluZ1N0cmVhbVRlc3RXcml0
ZUFuZFJlYWRXaXRob3V0RGVsaW1pdGVyIiwga0ZpbGVQcmVmaXgsCisgICAgICAga01heEZpbGVT
aXplLCAzKTsKKworICBBU1NFUlRfVFJVRShzdHJlYW1fLT5PcGVuKCkpOworICAvLyBUaGUgdGVz
dCBpcyBzZXQgdXAgdG8gY3JlYXRlIHRocmVlIGxvZyBmaWxlcyBvZiBsZW5ndGggMi4gV3JpdGUg
YW5kIGNoZWNrCisgIC8vIGNvbnRlbnRzLgorICBzdGQ6OnN0cmluZyBtZXNzYWdlc1szXSA9IHsi
YWEiLCAiYmIiLCAiY2MifTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUobWVz
c2FnZXMpOyArK2kpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSA9IG1lc3NhZ2Vz
W2ldOworICAgIFdyaXRlQW5kRmx1c2gobWVzc2FnZS5jX3N0cigpLCBtZXNzYWdlLnNpemUoKSk7
CisgIH0KKyAgc3RkOjpzdHJpbmcgbWVzc2FnZSgiZCIpOworICBXcml0ZUFuZEZsdXNoKG1lc3Nh
Z2UuY19zdHIoKSwgbWVzc2FnZS5zaXplKCkpOworCisgIC8vIFJlb3BlbiBmb3IgcmVhZC4KKyAg
c3RkOjpzdHJpbmcgZXhwZWN0ZWRfY29udGVudHMoImJiY2NkIik7CisgIFZlcmlmeVN0cmVhbVJl
YWQoZXhwZWN0ZWRfY29udGVudHMuY19zdHIoKSwgZXhwZWN0ZWRfY29udGVudHMuc2l6ZSgpLAor
ICAgICAgICAgICAgICAgICAgIGRpcl9wYXRoXy5zdWJzdHIoMCwgZGlyX3BhdGhfLnNpemUoKSAt
IDEpLCBrRmlsZVByZWZpeCk7Cit9CisKIC8vIFRlc3RzIHRoYXQgd3JpdGluZyBkYXRhIGdyZWF0
ZXIgdGhhbiB0aGUgdG90YWwgY2FwYWNpdHkgb2YgdGhlIGZpbGVzCiAvLyBvdmVyd3JpdGVzIHRo
ZSBmaWxlcyBjb3JyZWN0bHkgYW5kIGlzIHJlYWQgY29ycmVjdGx5IGFmdGVyLgogVEVTVF9GKE1B
WUJFX0ZpbGVSb3RhdGluZ1N0cmVhbVRlc3QsIFdyaXRlT3ZlcmZsb3dBbmRSZWFkKSB7CkBAIC0y
MTgsNyArMjY2LDcgQEAgY2xhc3MgTUFZQkVfQ2FsbFNlc3Npb25GaWxlUm90YXRpbmdTdHJlYW1U
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAKICAgICAvLyBBcHBlbmQgcGVyLXRlc3Qg
b3V0cHV0IHBhdGggaW4gb3JkZXIgdG8gcnVuIHdpdGhpbiBndGVzdCBwYXJhbGxlbC4KICAgICBk
aXJfcGF0aF8uYXBwZW5kKGRpcl9uYW1lKTsKLSAgICBkaXJfcGF0aF8ucHVzaF9iYWNrKFBhdGhu
YW1lOjpEZWZhdWx0Rm9sZGVyRGVsaW1pdGVyKCkpOworICAgIGRpcl9wYXRoXy5hcHBlbmQod2Vi
cnRjOjp0ZXN0OjprUGF0aERlbGltaXRlcik7CiAgICAgQVNTRVJUX1RSVUUod2VicnRjOjp0ZXN0
OjpDcmVhdGVEaXIoZGlyX3BhdGhfKSk7CiAgICAgc3RyZWFtXy5yZXNldCgKICAgICAgICAgbmV3
IENhbGxTZXNzaW9uRmlsZVJvdGF0aW5nU3RyZWFtKGRpcl9wYXRoXywgbWF4X3RvdGFsX2xvZ19z
aXplKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9maWxldXRpbHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxldXRpbHMuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdkODNmOTdmYWU0YzFjYTA2OTE0NzQ1NTA5YmMwNDcxNzhhZTkzZmEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXV0aWxzLmNjCisrKyAvZGV2
L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdlYlJU
QyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJy
dGNfYmFzZS9maWxldXRpbHMuaCIKLQotI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3BhdGh1dGls
cy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCi0KLSNpZiBkZWZpbmVkKFdF
QlJUQ19XSU4pCi0jaW5jbHVkZSAicnRjX2Jhc2Uvd2luMzJmaWxlc3lzdGVtLmgiCi0jZWxzZQot
I2luY2x1ZGUgInJ0Y19iYXNlL3VuaXhmaWxlc3lzdGVtLmgiCi0jZW5kaWYKLQotI2lmICFkZWZp
bmVkKFdFQlJUQ19XSU4pCi0jZGVmaW5lIE1BWF9QQVRIIDI2MAotI2VuZGlmCi0KLW5hbWVzcGFj
ZSBydGMgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gRGlyZWN0b3J5IEl0ZXJh
dG9yICAgLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIEEgRGlyZWN0b3J5SXRl
cmF0b3IgaXMgY3JlYXRlZCB3aXRoIGEgZ2l2ZW4gZGlyZWN0b3J5LiBJdCBvcmlnaW5hbGx5IHBv
aW50cwotLy8gdG8gdGhlIGZpcnN0IGZpbGUgaW4gdGhlIGRpcmVjdG9yeSwgYW5kIGNhbiBiZSBh
ZHZhbmVjZCB3aXRoIE5leHQoKS4gVGhpcwotLy8gYWxsb3dzIHlvdSB0byBnZXQgaW5mb3JtYXRp
b24gYWJvdXQgZWFjaCBmaWxlLgotCi0vLyBDb25zdHJ1Y3RvcgotRGlyZWN0b3J5SXRlcmF0b3I6
OkRpcmVjdG9yeUl0ZXJhdG9yKCkKLSNpZmRlZiBXRUJSVENfV0lOCi0gICAgOiBoYW5kbGVfKElO
VkFMSURfSEFORExFX1ZBTFVFKSB7Ci0jZWxzZQotICAgIDogZGlyXyhudWxscHRyKSwKLSAgICAg
IGRpcmVudF8obnVsbHB0cil7Ci0jZW5kaWYKLX0KLQotLy8gRGVzdHJ1Y3RvcgotRGlyZWN0b3J5
SXRlcmF0b3I6On5EaXJlY3RvcnlJdGVyYXRvcigpIHsKLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4p
Ci0gIGlmIChoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgIDo6RmluZENsb3Nl
KGhhbmRsZV8pOwotI2Vsc2UKLSAgaWYgKGRpcl8pCi0gICAgY2xvc2VkaXIoZGlyXyk7Ci0jZW5k
aWYKLX0KLQotLy8gU3RhcnRzIHRyYXZlcnNpbmcgYSBkaXJlY3RvcnkuCi0vLyBkaXIgaXMgdGhl
IGRpcmVjdG9yeSB0byB0cmF2ZXJzZQotLy8gcmV0dXJucyB0cnVlIGlmIHRoZSBkaXJlY3Rvcnkg
ZXhpc3RzIGFuZCBpcyB2YWxpZAotYm9vbCBEaXJlY3RvcnlJdGVyYXRvcjo6SXRlcmF0ZShjb25z
dCBQYXRobmFtZSYgZGlyKSB7Ci0gIGRpcmVjdG9yeV8gPSBkaXIucGF0aG5hbWUoKTsKLSNpZiBk
ZWZpbmVkKFdFQlJUQ19XSU4pCi0gIGlmIChoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVF
KQotICAgIDo6RmluZENsb3NlKGhhbmRsZV8pOwotICBzdGQ6OnN0cmluZyBkID0gZGlyLnBhdGhu
YW1lKCkgKyAnKic7Ci0gIGhhbmRsZV8gPSA6OkZpbmRGaXJzdEZpbGUoVG9VdGYxNihkKS5jX3N0
cigpLCAmZGF0YV8pOwotICBpZiAoaGFuZGxlXyA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAg
ICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICBpZiAoZGlyXyAhPSBudWxscHRyKQotICAgIGNsb3Nl
ZGlyKGRpcl8pOwotICBkaXJfID0gOjpvcGVuZGlyKGRpcmVjdG9yeV8uY19zdHIoKSk7Ci0gIGlm
IChkaXJfID09IG51bGxwdHIpCi0gICAgcmV0dXJuIGZhbHNlOwotICBkaXJlbnRfID0gcmVhZGRp
cihkaXJfKTsKLSAgaWYgKGRpcmVudF8gPT0gbnVsbHB0cikKLSAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgaWYgKDo6c3RhdChzdGQ6OnN0cmluZyhkaXJlY3RvcnlfICsgTmFtZSgpKS5jX3N0cigpLCAm
c3RhdF8pICE9IDApCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0gIHJldHVybiB0cnVlOwot
fQotCi0vLyBBZHZhbmNlcyB0byB0aGUgbmV4dCBmaWxlCi0vLyByZXR1cm5zIHRydWUgaWYgdGhl
cmUgd2VyZSBtb3JlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuCi1ib29sIERpcmVjdG9yeUl0ZXJh
dG9yOjpOZXh0KCkgewotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLSAgcmV0dXJuIDo6RmluZE5l
eHRGaWxlKGhhbmRsZV8sICZkYXRhXykgPT0gVFJVRTsKLSNlbHNlCi0gIGRpcmVudF8gPSA6OnJl
YWRkaXIoZGlyXyk7Ci0gIGlmIChkaXJlbnRfID09IG51bGxwdHIpCi0gICAgcmV0dXJuIGZhbHNl
OwotCi0gIHJldHVybiA6OnN0YXQoc3RkOjpzdHJpbmcoZGlyZWN0b3J5XyArIE5hbWUoKSkuY19z
dHIoKSwgJnN0YXRfKSA9PSAwOwotI2VuZGlmCi19Ci0KLS8vIHJldHVybnMgdHJ1ZSBpZiB0aGUg
ZmlsZSBjdXJyZW50bHkgcG9pbnRlZCB0byBpcyBhIGRpcmVjdG9yeQotYm9vbCBEaXJlY3RvcnlJ
dGVyYXRvcjo6SXNEaXJlY3RvcnkoKSBjb25zdCB7Ci0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQot
ICByZXR1cm4gKGRhdGFfLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RP
UlkpICE9IEZBTFNFOwotI2Vsc2UKLSAgcmV0dXJuIFNfSVNESVIoc3RhdF8uc3RfbW9kZSk7Ci0j
ZW5kaWYKLX0KLQotLy8gcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBjdXJyZW50bHkgcG9p
bnRlZCB0bwotc3RkOjpzdHJpbmcgRGlyZWN0b3J5SXRlcmF0b3I6Ok5hbWUoKSBjb25zdCB7Ci0j
aWYgZGVmaW5lZChXRUJSVENfV0lOKQotICByZXR1cm4gVG9VdGY4KGRhdGFfLmNGaWxlTmFtZSk7
Ci0jZWxzZQotICBSVENfRENIRUNLKGRpcmVudF8pOwotICByZXR1cm4gZGlyZW50Xy0+ZF9uYW1l
OwotI2VuZGlmCi19Ci0KLUZpbGVzeXN0ZW1JbnRlcmZhY2UqIEZpbGVzeXN0ZW06OkdldEZpbGVz
eXN0ZW0oKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotICBzdGF0aWMgRmlsZXN5c3RlbUlu
dGVyZmFjZSogY29uc3QgZmlsZXN5c3RlbSA9IG5ldyBXaW4zMkZpbGVzeXN0ZW0oKTsKLSNlbHNl
Ci0gIHN0YXRpYyBGaWxlc3lzdGVtSW50ZXJmYWNlKiBjb25zdCBmaWxlc3lzdGVtID0gbmV3IFVu
aXhGaWxlc3lzdGVtKCk7Ci0jZW5kaWYKLQotICByZXR1cm4gZmlsZXN5c3RlbTsKLX0KLQotfSAg
Ly8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXV0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxldXRpbHMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTMyZmQ4ODQ0MDFjZmY1ZmZiMDIzZWZlODVlOGYwODk1Njc1MWZm
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxldXRpbHMuaAor
KysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDA0IFRo
ZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
Ci0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZu
ZGVmIFJUQ19CQVNFX0ZJTEVVVElMU19IXwotI2RlZmluZSBSVENfQkFTRV9GSUxFVVRJTFNfSF8K
LQotI2luY2x1ZGUgPHN0cmluZz4KLQotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLSNpbmNsdWRl
IDx3aW5kb3dzLmg+Ci0jZWxzZQotI2luY2x1ZGUgPGRpcmVudC5oPgotI2luY2x1ZGUgPHN0ZGlv
Lmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNs
dWRlIDx1bmlzdGQuaD4KLSNlbmRpZiAgLy8gV0VCUlRDX1dJTgotCi0jaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIKLQotbmFtZXNwYWNlIHJ0YyB7Ci0KLWNs
YXNzIEZpbGVTdHJlYW07Ci1jbGFzcyBQYXRobmFtZTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLS8vIERpcmVjdG9yeSBJdGVyYXRvciAgIC8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotCi0vLyBBIERpcmVjdG9yeUl0ZXJhdG9yIGlzIGNyZWF0ZWQgd2l0aCBhIGdpdmVuIGRp
cmVjdG9yeS4gSXQgb3JpZ2luYWxseSBwb2ludHMKLS8vIHRvIHRoZSBmaXJzdCBmaWxlIGluIHRo
ZSBkaXJlY3RvcnksIGFuZCBjYW4gYmUgYWR2YW5lY2Qgd2l0aCBOZXh0KCkuIFRoaXMKLS8vIGFs
bG93cyB5b3UgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IGVhY2ggZmlsZS4KLQotY2xhc3MgRGly
ZWN0b3J5SXRlcmF0b3IgewotICBmcmllbmQgY2xhc3MgRmlsZXN5c3RlbTsKLQotIHB1YmxpYzoK
LSAgLy8gQ29uc3RydWN0b3IKLSAgRGlyZWN0b3J5SXRlcmF0b3IoKTsKLSAgLy8gRGVzdHJ1Y3Rv
cgotICB2aXJ0dWFsIH5EaXJlY3RvcnlJdGVyYXRvcigpOwotCi0gIC8vIFN0YXJ0cyB0cmF2ZXJz
aW5nIGEgZGlyZWN0b3J5Ci0gIC8vIGRpciBpcyB0aGUgZGlyZWN0b3J5IHRvIHRyYXZlcnNlCi0g
IC8vIHJldHVybnMgdHJ1ZSBpZiB0aGUgZGlyZWN0b3J5IGV4aXN0cyBhbmQgaXMgdmFsaWQKLSAg
Ly8gVGhlIGl0ZXJhdG9yIHdpbGwgcG9pbnQgdG8gdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBkaXJl
Y3RvcnkKLSAgdmlydHVhbCBib29sIEl0ZXJhdGUoY29uc3QgUGF0aG5hbWUmIHBhdGgpOwotCi0g
IC8vIEFkdmFuY2VzIHRvIHRoZSBuZXh0IGZpbGUKLSAgLy8gcmV0dXJucyB0cnVlIGlmIHRoZXJl
IHdlcmUgbW9yZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LgotICB2aXJ0dWFsIGJvb2wgTmV4dCgp
OwotCi0gIC8vIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsZSBjdXJyZW50bHkgcG9pbnRlZCB0byBp
cyBhIGRpcmVjdG9yeQotICB2aXJ0dWFsIGJvb2wgSXNEaXJlY3RvcnkoKSBjb25zdDsKLQotICAv
LyByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGN1cnJlbnRseSBwb2ludGVkIHRvCi0gIHZp
cnR1YWwgc3RkOjpzdHJpbmcgTmFtZSgpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgc3RkOjpzdHJp
bmcgZGlyZWN0b3J5XzsKLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0gIFdJTjMyX0ZJTkRfREFU
QSBkYXRhXzsKLSAgSEFORExFIGhhbmRsZV87Ci0jZWxzZQotICBESVIqIGRpcl87Ci0gIHN0cnVj
dCBkaXJlbnQqIGRpcmVudF87Ci0gIHN0cnVjdCBzdGF0IHN0YXRfOwotI2VuZGlmCi19OwotCi1j
bGFzcyBGaWxlc3lzdGVtSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkZpbGVzeXN0
ZW1JbnRlcmZhY2UoKSB7fQotCi0gIC8vIFRoaXMgd2lsbCBhdHRlbXB0IHRvIGRlbGV0ZSB0aGUg
cGF0aCBsb2NhdGVkIGF0IGZpbGVuYW1lLgotICAvLyBJdCBEQ0hFQ0tzIGFuZCByZXR1cm5zIGZh
bHNlIGlmIHRoZSBwYXRoIHBvaW50cyB0byBhIGZvbGRlciBvciBhCi0gIC8vIG5vbi1leGlzdGVu
dCBmaWxlLgotICB2aXJ0dWFsIGJvb2wgRGVsZXRlRmlsZShjb25zdCBQYXRobmFtZSYgZmlsZW5h
bWUpID0gMDsKLQotICAvLyBUaGlzIG1vdmVzIGEgZmlsZSBmcm9tIG9sZF9wYXRoIHRvIG5ld19w
YXRoLCB3aGVyZSAib2xkX3BhdGgiIGlzIGEKLSAgLy8gcGxhaW4gZmlsZS4gVGhpcyBEQ0hFQ0tz
IGFuZCByZXR1cm5zIGZhbHNlIGlmIG9sZF9wYXRoIHBvaW50cyB0byBhCi0gIC8vIGRpcmVjdG9y
eSwgYW5kIHJldHVybnMgdHJ1ZSBpZiB0aGUgZnVuY3Rpb24gc3VjY2VlZHMuCi0gIHZpcnR1YWwg
Ym9vbCBNb3ZlRmlsZShjb25zdCBQYXRobmFtZSYgb2xkX3BhdGgsIGNvbnN0IFBhdGhuYW1lJiBu
ZXdfcGF0aCkgPSAwOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSByZWZlcnMgdG8g
YSBkaXJlY3RvcnkKLSAgdmlydHVhbCBib29sIElzRm9sZGVyKGNvbnN0IFBhdGhuYW1lJiBwYXRo
bmFtZSkgPSAwOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSByZWZlcnMgdG8gYSBm
aWxlCi0gIHZpcnR1YWwgYm9vbCBJc0ZpbGUoY29uc3QgUGF0aG5hbWUmIHBhdGhuYW1lKSA9IDA7
Ci0KLSAgLy8gRGV0ZXJtaW5lcyB0aGUgc2l6ZSBvZiB0aGUgZmlsZSBpbmRpY2F0ZWQgYnkgcGF0
aC4KLSAgdmlydHVhbCBib29sIEdldEZpbGVTaXplKGNvbnN0IFBhdGhuYW1lJiBwYXRoLCBzaXpl
X3QqIHNpemUpID0gMDsKLX07Ci0KLWNsYXNzIEZpbGVzeXN0ZW0gewotIHB1YmxpYzoKLSAgc3Rh
dGljIGJvb2wgRGVsZXRlRmlsZShjb25zdCBQYXRobmFtZSYgZmlsZW5hbWUpIHsKLSAgICByZXR1
cm4gR2V0RmlsZXN5c3RlbSgpLT5EZWxldGVGaWxlKGZpbGVuYW1lKTsKLSAgfQotCi0gIHN0YXRp
YyBib29sIE1vdmVGaWxlKGNvbnN0IFBhdGhuYW1lJiBvbGRfcGF0aCwgY29uc3QgUGF0aG5hbWUm
IG5ld19wYXRoKSB7Ci0gICAgcmV0dXJuIEdldEZpbGVzeXN0ZW0oKS0+TW92ZUZpbGUob2xkX3Bh
dGgsIG5ld19wYXRoKTsKLSAgfQotCi0gIHN0YXRpYyBib29sIElzRm9sZGVyKGNvbnN0IFBhdGhu
YW1lJiBwYXRobmFtZSkgewotICAgIHJldHVybiBHZXRGaWxlc3lzdGVtKCktPklzRm9sZGVyKHBh
dGhuYW1lKTsKLSAgfQotCi0gIHN0YXRpYyBib29sIElzRmlsZShjb25zdCBQYXRobmFtZSYgcGF0
aG5hbWUpIHsKLSAgICByZXR1cm4gR2V0RmlsZXN5c3RlbSgpLT5Jc0ZpbGUocGF0aG5hbWUpOwot
ICB9Ci0KLSAgc3RhdGljIGJvb2wgR2V0RmlsZVNpemUoY29uc3QgUGF0aG5hbWUmIHBhdGgsIHNp
emVfdCogc2l6ZSkgewotICAgIHJldHVybiBHZXRGaWxlc3lzdGVtKCktPkdldEZpbGVTaXplKHBh
dGgsIHNpemUpOwotICB9Ci0KLSBwcml2YXRlOgotICBzdGF0aWMgRmlsZXN5c3RlbUludGVyZmFj
ZSogR2V0RmlsZXN5c3RlbSgpOwotICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JT
KEZpbGVzeXN0ZW0pOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHJ0YwotCi0jZW5kaWYgIC8vIFJU
Q19CQVNFX0ZJTEVVVElMU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYwppbmRleCA0ZjI5NDU5NGJk
NGFmY2YyOWEzZjg5YWMyNzBlMjhhYmNiZjc1NTMxLi42YjQzYjkxZTAyNmFjZGM1ODQyMTVkZDRl
YjQyZGRiYTVlNWMwNGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYwpAQCAtMTUsNyArMTUsNiBA
QAogI2luY2x1ZGUgPHN0cmluZy5oPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogI2lmIGRlZmluZWQoV0VCUlRDX1dJ
TikKIC8vIGNsYW5nLWZvcm1hdCBvZmYKQEAgLTIzLDYgKzIyLDggQEAKICNpbmNsdWRlIDx3aW5k
b3dzLmg+CiAjaW5jbHVkZSA8c2hlbGxhcGkuaD4gLy8gbXVzdCBjb21lIGFmdGVyIHdpbmRvd3Mu
aAogLy8gY2xhbmctZm9ybWF0IG9uCisKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5o
IiAgLy8gRm9yIFRvVXRmOAogI2VuZGlmCiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3Mu
aAppbmRleCAzM2Y2ZTViZGExZGJkYTU0YzZkZjhlNWYyNjhmZDg2MGZkNDc2OGFkLi5hMDhiZmQy
OWI4NWQ1ZmYyYjBkMWRhZjUxMTE2NWVjYjRmMjEwM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmgK
QEAgLTIzLDcgKzIzLDEwIEBACiAjZGVmaW5lIFJUQ19CQVNFX0ZMQUdTX0hfCiAKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKKworI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKICNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIHJ0YyB7
CiAKQEAgLTMzLDcgKzM2LDcgQEAgdW5pb24gRmxhZ1ZhbHVlIHsKICAgLy8gYm9vbCB2YWx1ZXMg
KCdib29sIGIgPSAiZmFsc2UiOycgcmVzdWx0cyBpbiBiID09IHRydWUhKSwgd2UgcGFzcwogICAv
LyBhbmQgaW50IGFyZ3VtZW50IHRvIE5ld19CT09MIGFzIHRoaXMgYXBwZWFycyB0byBiZSBzYWZl
ciAtIHNpZ2guCiAgIC8vIEluIHBhcnRpY3VsYXIsIGl0IHByZXZlbnRzIHRoZSAobm90IHVuY29t
bW9uISkgYnVnIHdoZXJlIGEgYm9vbAotICAvLyBmbGFnIGlzIGRlZmluZWQgdmlhOiBERUZJTkVf
Ym9vbChmbGFnLCAiZmFsc2UiLCAic29tZSBjb21tZW50Iik7LgorICAvLyBmbGFnIGlzIGRlZmlu
ZWQgdmlhOiBXRUJSVENfREVGSU5FX2Jvb2woZmxhZywgImZhbHNlIiwgInNvbWUgY29tbWVudCIp
Oy4KICAgc3RhdGljIEZsYWdWYWx1ZSBOZXdfQk9PTChpbnQgYikgewogICAgIEZsYWdWYWx1ZSB2
OwogICAgIHYuYiA9IChiICE9IDApOwpAQCAtMTUyLDcgKzE1NSw3IEBAIGNsYXNzIEZsYWcgewog
fTsKIAogLy8gSW50ZXJuYWwgdXNlIG9ubHkuCi0jZGVmaW5lIERFRklORV9GTEFHKHR5cGUsIGNf
dHlwZSwgbmFtZSwgZGVmYXVsdCwgY29tbWVudCkgICAgICAgICAgICAgICAgICAgXAorI2RlZmlu
ZSBXRUJSVENfREVGSU5FX0ZMQUcodHlwZSwgY190eXBlLCBuYW1lLCBkZWZhdWx0LCBjb21tZW50
KSAgICAgICAgICAgIFwKICAgLyogZGVmaW5lIGFuZCBpbml0aWFsaXplIHRoZSBmbGFnICovICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIGNfdHlwZSBGTEFHXyMjbmFt
ZSA9IChkZWZhdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAvKiByZWdpc3RlciB0aGUgZmxhZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE2MSwyNSArMTY0LDI1IEBAIGNsYXNzIEZsYWcg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6RmxhZ1ZhbHVlOjpOZXdfIyN0
eXBlKGRlZmF1bHQpKQogCiAvLyBJbnRlcm5hbCB1c2Ugb25seS4KLSNkZWZpbmUgREVDTEFSRV9G
TEFHKGNfdHlwZSwgbmFtZSkgXAotICAvKiBkZWNsYXJlIHRoZSBleHRlcm5hbCBmbGFnICovICBc
CisjZGVmaW5lIFdFQlJUQ19ERUNMQVJFX0ZMQUcoY190eXBlLCBuYW1lKSBcCisgIC8qIGRlY2xh
cmUgdGhlIGV4dGVybmFsIGZsYWcgKi8gICAgICAgICBcCiAgIGV4dGVybiBjX3R5cGUgRkxBR18j
I25hbWUKIAogLy8gVXNlIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHRvIGRlZmluZSBhIG5ldyBmbGFn
OgotI2RlZmluZSBERUZJTkVfYm9vbChuYW1lLCBkZWZhdWx0LCBjb21tZW50KSBcCi0gIERFRklO
RV9GTEFHKEJPT0wsIGJvb2wsIG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpCi0jZGVmaW5lIERFRklO
RV9pbnQobmFtZSwgZGVmYXVsdCwgY29tbWVudCkgXAotICBERUZJTkVfRkxBRyhJTlQsIGludCwg
bmFtZSwgZGVmYXVsdCwgY29tbWVudCkKLSNkZWZpbmUgREVGSU5FX2Zsb2F0KG5hbWUsIGRlZmF1
bHQsIGNvbW1lbnQpIFwKLSAgREVGSU5FX0ZMQUcoRkxPQVQsIGRvdWJsZSwgbmFtZSwgZGVmYXVs
dCwgY29tbWVudCkKLSNkZWZpbmUgREVGSU5FX3N0cmluZyhuYW1lLCBkZWZhdWx0LCBjb21tZW50
KSBcCi0gIERFRklORV9GTEFHKFNUUklORywgY29uc3QgY2hhciosIG5hbWUsIGRlZmF1bHQsIGNv
bW1lbnQpCisjZGVmaW5lIFdFQlJUQ19ERUZJTkVfYm9vbChuYW1lLCBkZWZhdWx0LCBjb21tZW50
KSBcCisgIFdFQlJUQ19ERUZJTkVfRkxBRyhCT09MLCBib29sLCBuYW1lLCBkZWZhdWx0LCBjb21t
ZW50KQorI2RlZmluZSBXRUJSVENfREVGSU5FX2ludChuYW1lLCBkZWZhdWx0LCBjb21tZW50KSBc
CisgIFdFQlJUQ19ERUZJTkVfRkxBRyhJTlQsIGludCwgbmFtZSwgZGVmYXVsdCwgY29tbWVudCkK
KyNkZWZpbmUgV0VCUlRDX0RFRklORV9mbG9hdChuYW1lLCBkZWZhdWx0LCBjb21tZW50KSBcCisg
IFdFQlJUQ19ERUZJTkVfRkxBRyhGTE9BVCwgZG91YmxlLCBuYW1lLCBkZWZhdWx0LCBjb21tZW50
KQorI2RlZmluZSBXRUJSVENfREVGSU5FX3N0cmluZyhuYW1lLCBkZWZhdWx0LCBjb21tZW50KSBc
CisgIFdFQlJUQ19ERUZJTkVfRkxBRyhTVFJJTkcsIGNvbnN0IGNoYXIqLCBuYW1lLCBkZWZhdWx0
LCBjb21tZW50KQogCiAvLyBVc2UgdGhlIGZvbGxvd2luZyBtYWNyb3MgdG8gZGVjbGFyZSBhIGZs
YWcgZGVmaW5lZCBlbHNld2hlcmU6Ci0jZGVmaW5lIERFQ0xBUkVfYm9vbChuYW1lKSBERUNMQVJF
X0ZMQUcoYm9vbCwgbmFtZSkKLSNkZWZpbmUgREVDTEFSRV9pbnQobmFtZSkgREVDTEFSRV9GTEFH
KGludCwgbmFtZSkKLSNkZWZpbmUgREVDTEFSRV9mbG9hdChuYW1lKSBERUNMQVJFX0ZMQUcoZG91
YmxlLCBuYW1lKQotI2RlZmluZSBERUNMQVJFX3N0cmluZyhuYW1lKSBERUNMQVJFX0ZMQUcoY29u
c3QgY2hhciosIG5hbWUpCisjZGVmaW5lIFdFQlJUQ19ERUNMQVJFX2Jvb2wobmFtZSkgV0VCUlRD
X0RFQ0xBUkVfRkxBRyhib29sLCBuYW1lKQorI2RlZmluZSBXRUJSVENfREVDTEFSRV9pbnQobmFt
ZSkgV0VCUlRDX0RFQ0xBUkVfRkxBRyhpbnQsIG5hbWUpCisjZGVmaW5lIFdFQlJUQ19ERUNMQVJF
X2Zsb2F0KG5hbWUpIFdFQlJUQ19ERUNMQVJFX0ZMQUcoZG91YmxlLCBuYW1lKQorI2RlZmluZSBX
RUJSVENfREVDTEFSRV9zdHJpbmcobmFtZSkgV0VCUlRDX0RFQ0xBUkVfRkxBRyhjb25zdCBjaGFy
KiwgbmFtZSkKIAogLy8gVGhlIGdsb2JhbCBsaXN0IG9mIGFsbCBmbGFncy4KIGNsYXNzIEZsYWdM
aXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2hlbHBlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2hlbHBlcnMuaAppbmRleCBkM2IwOWNmZDQ4ZmI1YmQzZTVhZmQ5
M2JkNmY4NTRhMTFhY2UwZWY3Li5hOTNiMzIxZWFiOTI2NzNkZTkwM2I5ZTg3ZWMyNjU2MzY2ZTMx
ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9oZWxwZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvaGVscGVycy5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVm
IFJUQ19CQVNFX0hFTFBFUlNfSF8KICNkZWZpbmUgUlRDX0JBU0VfSEVMUEVSU19IXwogCisjaW5j
bHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgog
CiBuYW1lc3BhY2UgcnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2h0dHBjb21tb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9odHRwY29tbW9uLmNjCmluZGV4IDcx
NmE0MWUxNmU5M2U3MmM2ZTkwYzE2MmJlNjI1ZWUyMjE0NThiMzUuLjc5MjZmODg0ZjlkODgxYjM3
NWY4YzBkNzdjMDQ2NWYwOGVhNjRkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2h0dHBjb21tb24uY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaHR0cGNvbW1vbi5j
YwpAQCAtMTgsMTcgKzE4LDIzIEBACiAjaW5jbHVkZSA8c2VjdXJpdHkuaD4KICNlbmRpZgogCisj
aW5jbHVkZSA8Y3R5cGUuaD4gIC8vIGZvciBpc3NwYWNlCisjaW5jbHVkZSA8c3RkaW8uaD4gIC8v
IGZvciBzcHJpbnRmCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHV0aWxpdHk+ICAv
LyBmb3IgcGFpcgorI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9t
YXRjaC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NyeXB0c3RyaW5nLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvY3J5cHRzdHJpbmcuaCIgIC8vIGZvciBDcnlwdFN0cmluZwogI2luY2x1ZGUg
InJ0Y19iYXNlL2h0dHBjb21tb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Nv
Y2tldGFkZHJlc3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVy
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0L2Jhc2U2NC5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL3plcm9fbWVtb3J5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRf
cGFydHkvYmFzZTY0L2Jhc2U2NC5oIiAgLy8gZm9yIEJhc2U2NAorI2luY2x1ZGUgInJ0Y19iYXNl
L3plcm9fbWVtb3J5LmgiICAgICAgICAgICAgICAgIC8vIGZvciBFeHBsaWNpdFplcm9NZW1vcnkK
IAogbmFtZXNwYWNlIHJ0YyB7CiBuYW1lc3BhY2UgewpAQCAtMjYwLDcgKzI2Niw3IEBAIEh0dHBB
dXRoUmVzdWx0IEh0dHBBdXRoZW50aWNhdGUoY29uc3QgY2hhciogY2hhbGxlbmdlLAogICAgIHJl
dHVybiBIQVJfSUdOT1JFOwogCiAgIC8vIEJBU0lDCi0gIGlmIChfc3RyaWNtcChhdXRoX21ldGhv
ZC5jX3N0cigpLCAiYmFzaWMiKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KGF1dGhfbWV0aG9kLCAiYmFzaWMiKSkgewogICAgIGlmIChjb250ZXh0KQogICAgICAgcmV0dXJu
IEhBUl9DUkVERU5USUFMUzsgIC8vIEJhZCBjcmVkZW50aWFscwogICAgIGlmICh1c2VybmFtZS5l
bXB0eSgpKQpAQCAtMjg4LDcgKzI5NCw3IEBAIEh0dHBBdXRoUmVzdWx0IEh0dHBBdXRoZW50aWNh
dGUoY29uc3QgY2hhciogY2hhbGxlbmdlLAogICB9CiAKICAgLy8gRElHRVNUCi0gIGlmIChfc3Ry
aWNtcChhdXRoX21ldGhvZC5jX3N0cigpLCAiZGlnZXN0IikgPT0gMCkgeworICBpZiAoYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShhdXRoX21ldGhvZCwgImRpZ2VzdCIpKSB7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgICByZXR1cm4gSEFSX0NSRURFTlRJQUxTOyAgLy8gQmFkIGNyZWRlbnRpYWxzCiAg
ICAgaWYgKHVzZXJuYW1lLmVtcHR5KCkpCkBAIC0zNTUsOCArMzYxLDggQEAgSHR0cEF1dGhSZXN1
bHQgSHR0cEF1dGhlbnRpY2F0ZShjb25zdCBjaGFyKiBjaGFsbGVuZ2UsCiAKICNpZiBkZWZpbmVk
KFdFQlJUQ19XSU4pCiAjaWYgMQotICBib29sIHdhbnRfbmVnb3RpYXRlID0gKF9zdHJpY21wKGF1
dGhfbWV0aG9kLmNfc3RyKCksICJuZWdvdGlhdGUiKSA9PSAwKTsKLSAgYm9vbCB3YW50X250bG0g
PSAoX3N0cmljbXAoYXV0aF9tZXRob2QuY19zdHIoKSwgIm50bG0iKSA9PSAwKTsKKyAgYm9vbCB3
YW50X25lZ290aWF0ZSA9IGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoYXV0aF9tZXRob2QsICJuZWdv
dGlhdGUiKTsKKyAgYm9vbCB3YW50X250bG0gPSBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGF1dGhf
bWV0aG9kLCAibnRsbSIpOwogICAvLyBTUE5FR08gJiBOVExNCiAgIGlmICh3YW50X25lZ290aWF0
ZSB8fCB3YW50X250bG0pIHsKICAgICBjb25zdCBzaXplX3QgTUFYX01FU1NBR0UgPSAxMjAwMCwg
TUFYX1NQTiA9IDI1NjsKQEAgLTM3MSw3ICszNzcsNyBAQCBIdHRwQXV0aFJlc3VsdCBIdHRwQXV0
aGVudGljYXRlKGNvbnN0IGNoYXIqIGNoYWxsZW5nZSwKICAgICAgIHJldHVybiBIQVJfSUdOT1JF
OwogICAgIH0KICNlbHNlCi0gICAgc3ByaW50Zm4oc3BuLCBNQVhfU1BOLCAiSFRUUC8lcyIsIHNl
cnZlci5Ub1N0cmluZygpLmNfc3RyKCkpOworICAgIHNucHJpbnRmKHNwbiwgTUFYX1NQTiwgIkhU
VFAvJXMiLCBzZXJ2ZXIuVG9TdHJpbmcoKS5jX3N0cigpKTsKICNlbmRpZgogCiAgICAgU2VjQnVm
ZmVyIG91dF9zZWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9odHRwY29tbW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9odHRwY29tbW9uLmgKaW5kZXggNTgxYmQxZWU4
YTg2YzYxMmNiNjJmNmFiMjM0MTUzYWQ0ZDJjODA4ZC4uZmJhZDI4MGUwMjUwYTBiN2FkNTM1ZDkz
ODM4MTcyN2RkN2FjZDFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaHR0cGNvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2h0dHBjb21tb24uaApAQCAtMTEs
MTQgKzExLDcgQEAKICNpZm5kZWYgUlRDX0JBU0VfSFRUUENPTU1PTl9IXwogI2RlZmluZSBSVENf
QkFTRV9IVFRQQ09NTU9OX0hfCiAKLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaXBhZGRyZXNz
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
aXBhZGRyZXNzLmNjCmluZGV4IGM1MmM5YTRhZGRkYWMzMGRjNGVkMDA5ZGZmYWUwYWVjNTVlZGI2
YjYuLjAyN2E3YjIxOWUwMmE5ZTZjNTM3MGJjNTA1ZjU5M2FkOGI0MGE0N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2lwYWRk
cmVzcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9pcGFkZHJlc3MuY2MKQEAgLTExLDI0ICsxMSwxNyBAQAogI2lmIGRlZmluZWQoV0VC
UlRDX1BPU0lYKQogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNpbmNsdWRlIDxzeXMvc29ja2V0
Lmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWZkZWYgT1BFTkJTRAogI2luY2x1ZGUgPG5l
dGluZXQvaW5fc3lzdG0uaD4KICNlbmRpZgogI2lmbmRlZiBfX25hdGl2ZV9jbGllbnRfXwogI2lu
Y2x1ZGUgPG5ldGluZXQvaXAuaD4KICNlbmRpZgotI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogI2lu
Y2x1ZGUgPG5ldGRiLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUg
PHN0ZGlvLmg+Ci0KICNpbmNsdWRlICJydGNfYmFzZS9ieXRlb3JkZXIuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9pcGFkZHJlc3MuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0aGVscGVycy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKQEAgLTE2MiwxMSArMTU1LDEw
IEBAIHN0ZDo6c3RyaW5nIElQQWRkcmVzczo6VG9TZW5zaXRpdmVTdHJpbmcoKSBjb25zdCB7CiAg
ICAgICBzdGQ6OnN0cmluZyByZXN1bHQ7CiAgICAgICByZXN1bHQucmVzaXplKElORVQ2X0FERFJT
VFJMRU4pOwogICAgICAgaW42X2FkZHIgYWRkciA9IGlwdjZfYWRkcmVzcygpOwotICAgICAgc2l6
ZV90IGxlbiA9Ci0gICAgICAgICAgcnRjOjpzcHJpbnRmbigmKHJlc3VsdFswXSksIHJlc3VsdC5z
aXplKCksICIleDoleDoleDp4Ong6eDp4OngiLAotICAgICAgICAgICAgICAgICAgICAgICAgKGFk
ZHIuczZfYWRkclswXSA8PCA4KSArIGFkZHIuczZfYWRkclsxXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIChhZGRyLnM2X2FkZHJbMl0gPDwgOCkgKyBhZGRyLnM2X2FkZHJbM10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAoYWRkci5zNl9hZGRyWzRdIDw8IDgpICsgYWRkci5zNl9hZGRyWzVd
KTsKKyAgICAgIHNpemVfdCBsZW4gPSBzbnByaW50ZigmKHJlc3VsdFswXSksIHJlc3VsdC5zaXpl
KCksICIleDoleDoleDp4Ong6eDp4OngiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChh
ZGRyLnM2X2FkZHJbMF0gPDwgOCkgKyBhZGRyLnM2X2FkZHJbMV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGFkZHIuczZfYWRkclsyXSA8PCA4KSArIGFkZHIuczZfYWRkclszXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkci5zNl9hZGRyWzRdIDw8IDgpICsgYWRkci5z
Nl9hZGRyWzVdKTsKICAgICAgIHJlc3VsdC5yZXNpemUobGVuKTsKICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uva2V5X2Rlcml2YXRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9rZXlfZGVyaXZhdGlvbi5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yODhlNDA3ZWJjNWE5NzQzMTBkODQwYmE2OWNmNDA1NzUyOTc4YzJjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uva2V5X2Rlcml2YXRpb24uY2MKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqICBDb3B5cmlnaHQg
MjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8K
KworI2luY2x1ZGUgInJ0Y19iYXNlL2tleV9kZXJpdmF0aW9uLmgiCisKKyNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsX2tleV9kZXJpdmF0
aW9uX2hrZGYuaCIKKworbmFtZXNwYWNlIHJ0YyB7CisKK0tleURlcml2YXRpb246OktleURlcml2
YXRpb24oKSA9IGRlZmF1bHQ7CitLZXlEZXJpdmF0aW9uOjp+S2V5RGVyaXZhdGlvbigpID0gZGVm
YXVsdDsKKworLy8gc3RhdGljCitzdGQ6OnVuaXF1ZV9wdHI8S2V5RGVyaXZhdGlvbj4gS2V5RGVy
aXZhdGlvbjo6Q3JlYXRlKAorICAgIEtleURlcml2YXRpb25BbGdvcml0aG0ga2V5X2Rlcml2YXRp
b25fYWxnb3JpdGhtKSB7CisgIHN3aXRjaCAoa2V5X2Rlcml2YXRpb25fYWxnb3JpdGhtKSB7Cisg
ICAgY2FzZSBLZXlEZXJpdmF0aW9uQWxnb3JpdGhtOjpIS0RGX1NIQTI1NjoKKyAgICAgIHJldHVy
biBhYnNsOjptYWtlX3VuaXF1ZTxPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREY+KCk7CisgIH0KKyAg
UlRDX05PVFJFQUNIRUQoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uva2V5X2Rl
cml2YXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2tleV9kZXJpdmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEzMjlhZWI0Y2U0YzlkOThlYWJl
MTAwNjE2NzhiYzkxYjdiNmYzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2tleV9kZXJpdmF0aW9uLmgKQEAgLTAs
MCArMSw3MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBSVENfQkFTRV9LRVlfREVS
SVZBVElPTl9IXworI2RlZmluZSBSVENfQkFTRV9LRVlfREVSSVZBVElPTl9IXworCisjaW5jbHVk
ZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUg
ImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorCituYW1lc3BhY2UgcnRjIHsKKworLy8g
RGVmaW5lcyB0aGUgc2V0IG9mIGtleSBkZXJpdmF0aW9uIGFsZ29yaXRobXMgdGhhdCBhcmUgc3Vw
cG9ydGVkLiBJdCBpcyBpZGVhbAorLy8gdG8ga2VlcCB0aGlzIGxpc3QgYXMgc21hbGwgYXMgcG9z
c2libGUuCitlbnVtIGNsYXNzIEtleURlcml2YXRpb25BbGdvcml0aG0geworICAvLyBUaGlzIGFs
Z29yaXRobSBpcyBub3Qgc3VpdGFibGUgdG8gZ2VuZXJhdGUgYSBrZXkgZnJvbSBhIHBhc3N3b3Jk
LiBQbGVhc2UKKyAgLy8gb25seSB1c2Ugd2l0aCBhIGNyeXB0b2dyYXBoaWNhbGx5IHJhbmRvbSBt
YXN0ZXIgc2VjcmV0LgorICBIS0RGX1NIQTI1NgorfTsKKworLy8gS2V5RGVyaXZhdGlvbiBwcm92
aWRlcyBhIGdlbmVyaWMgaW50ZXJmYWNlIGZvciBkZXJpdmluZyBrZXlzIGluIFdlYlJUQy4gVGhp
cworLy8gY2xhc3Mgc2hvdWxkIGJlIHVzZWQgb3ZlciBkaXJlY3RseSBhY2Nlc3Npbmcgb3BlbnNz
bCBvciBib3Jpbmdzc2wgcHJpbWl0aXZlcworLy8gc28gdGhhdCB3ZSBjYW4gbWFpbnRhaW4gc2Vw
ZXJhdGUgaW1wbGVtZW50YXRpb25zLgorLy8gRXhhbXBsZToKKy8vICAgYXV0byBrZCA9IEtleURl
cml2YXRpb246OkNyZWF0ZShLZXlEZXJpdmF0aW9uQWxnb3JpdGhtOjpIREtGX1NIQTUyNik7Cisv
LyAgIGlmIChrZCA9PSBudWxscHRyKSByZXR1cm47CisvLyAgIGF1dG8gZGVyaXZlZF9rZXlfb3Ig
PSBrZC0+RGVyaXZlS2V5KHNlY3JldCwgc2FsdCwgbGFiZWwpOworLy8gICBpZiAoIWRlcml2ZWRf
a2V5X29yLm9rKCkpIHJldHVybjsKKy8vICAgRG9Tb21ldGhpbmdXaXRoS2V5KGRlcml2ZWRfa2V5
X29yLnZhbHVlKCkpOworY2xhc3MgS2V5RGVyaXZhdGlvbiB7CisgcHVibGljOgorICBLZXlEZXJp
dmF0aW9uKCk7CisgIHZpcnR1YWwgfktleURlcml2YXRpb24oKTsKKworICAvLyBEZXJpdmVzIGEg
bmV3IGtleSBmcm9tIGV4aXN0aW5nIGtleSBtYXRlcmlhbC4KKyAgLy8gc2VjcmV0IC0gVGhlIHJh
bmRvbSBzZWNyZXQgdmFsdWUgeW91IHdpc2ggdG8gZGVyaXZlIGEga2V5IGZyb20uCisgIC8vIHNh
bHQgLSBPcHRpb25hbCBidXQgcmVjb21tZW5kZWQgKG5vbiBzZWNyZXQpIGNyeXB0b2dyYXBoaWNh
bGx5IHJhbmRvbS4KKyAgLy8gbGFiZWwgLSBBIG5vbiBzZWNyZXQgYnV0IHVuaXF1ZSBsYWJlbCB2
YWx1ZSB0byBkZXRlcm1pbmUgdGhlIGRlcml2YXRpb24uCisgIC8vIGRlcml2ZWRfa2V5X2J5dGVf
c2l6ZSAtIFRoaXMgbXVzdCBiZSBhdCBsZWFzdCAxMjggYml0cy4KKyAgLy8gcmV0dXJuIC0gQW4g
b3B0aW9uYWwgWmVyb09uRnJlZUJ1ZmZlciBjb250YWluaW5nIHRoZSBkZXJpdmVkIGtleSBvcgor
ICAvLyBhYnNsOjpudWxsb3B0LiBOdWxsb3B0IGluZGljYXRlcyBhIGZhaWx1cmUgaW4gZGVyaXZh
dGlvbi4KKyAgdmlydHVhbCBhYnNsOjpvcHRpb25hbDxaZXJvT25GcmVlQnVmZmVyPHVpbnQ4X3Q+
PiBEZXJpdmVLZXkoCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBzZWNyZXQs
CisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBzYWx0LAorICAgICAgcnRjOjpB
cnJheVZpZXc8Y29uc3QgdWludDhfdD4gbGFiZWwsCisgICAgICBzaXplX3QgZGVyaXZlZF9rZXlf
Ynl0ZV9zaXplKSA9IDA7CisKKyAgLy8gU3RhdGljIGZhY3RvcnkgdGhhdCB3aWxsIHJldHVybiBh
biBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIGNhcGFibGUgb2YKKyAgLy8gaGFuZGxpbmcgdGhlIGtl
eSBkZXJpdmF0aW9uIHdpdGggdGhlIHJlcXVlc3RlZCBhbGdvcml0aG0uIElmIG5vCisgIC8vIGlt
cGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSBudWxscHRyIHdpbGwgYmUgcmV0dXJuZWQuCisgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8S2V5RGVyaXZhdGlvbj4gQ3JlYXRlKAorICAgICAgS2V5RGVy
aXZhdGlvbkFsZ29yaXRobSBrZXlfZGVyaXZhdGlvbl9hbGdvcml0aG0pOworCisgcHJpdmF0ZToK
KyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihLZXlEZXJpdmF0aW9uKTsKK307CisKK30g
IC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAvLyBSVENfQkFTRV9LRVlfREVSSVZBVElPTl9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvbG9jYXRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5jYwppbmRleCA5YzkwZDllYzE3OTc3NDViOTFjNzM5
Njk4NGVmYmNhOTA2NDczYjVhLi5jOTVhZDljNDg4YTA3ZDQxNWIwZTk4ZTVlZDVhN2UyNWUxOTAw
MDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9sb2NhdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5jYwpAQCAtMTAsOCArMTAsNiBAQAogCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIKIAotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmlu
Z3V0aWxzLmgiCi0KIG5hbWVzcGFjZSBydGMgewogCiBMb2NhdGlvbjo6TG9jYXRpb24oY29uc3Qg
Y2hhciogZnVuY3Rpb25fbmFtZSwgY29uc3QgY2hhciogZmlsZV9hbmRfbGluZSkKQEAgLTMxLDcg
KzI5LDcgQEAgTG9jYXRpb24mIExvY2F0aW9uOjpvcGVyYXRvcj0oY29uc3QgTG9jYXRpb24mIG90
aGVyKSB7CiAKIHN0ZDo6c3RyaW5nIExvY2F0aW9uOjpUb1N0cmluZygpIGNvbnN0IHsKICAgY2hh
ciBidWZbMjU2XTsKLSAgc3ByaW50Zm4oYnVmLCBzaXplb2YoYnVmKSwgIiVzQCVzIiwgZnVuY3Rp
b25fbmFtZV8sIGZpbGVfYW5kX2xpbmVfKTsKKyAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwg
IiVzQCVzIiwgZnVuY3Rpb25fbmFtZV8sIGZpbGVfYW5kX2xpbmVfKTsKICAgcmV0dXJuIGJ1ZjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbG9nZ2luZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZy5oCmluZGV4IDFiZDBjNzIwNWU2OTI2N2ExZDExNzM4
MTdmZjM0MTllZTQ1MzA1YWMuLmM3ZDA4M2U0MmQzN2EzMTkxMjZhMmFkZjdlNjAzN2I3YjBiNmQ4
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmgKQEAgLTUxLDE2ICs1MSwxNSBAQAogI2luY2x1
ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaWYgZGVmaW5lZChXRUJSVENfTUFD
KSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQotI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2Vy
dmljZXMuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2RlcHJlY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVp
bGRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9pbmxpbmUuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKKworI2lmIGRlZmluZWQoV0VCUlRDX01BQykg
JiYgIWRlZmluZWQoV0VCUlRDX0lPUykKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nX21hYy5o
IgorI2VuZGlmICAvLyBXRUJSVENfTUFDCiAKICNpZiAhZGVmaW5lZChOREVCVUcpIHx8IGRlZmlu
ZWQoRExPR19BTFdBWVNfT04pCiAjZGVmaW5lIFJUQ19ETE9HX0lTX09OIDEKQEAgLTcwLDExICs2
OSw2IEBACiAKIG5hbWVzcGFjZSBydGMgewogCi0jaWYgZGVmaW5lZChXRUJSVENfTUFDKSAmJiAh
ZGVmaW5lZChXRUJSVENfSU9TKQotLy8gUmV0dXJucyBhIFVURjggZGVzY3JpcHRpb24gZnJvbSBh
biBPUyBYIFN0YXR1cyBlcnJvci4KLXN0ZDo6c3RyaW5nIERlc2NyaXB0aW9uRnJvbU9TU3RhdHVz
KE9TU3RhdHVzIGVycik7Ci0jZW5kaWYKLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiAvLyBOb3RlIHRoYXQg
dGhlIG5vbi1zdGFuZGFyZCBMb2dnaW5nU2V2ZXJpdHkgYWxpYXNlcyBleGlzdCBiZWNhdXNlIHRo
ZXkgYXJlCkBAIC0xMjEsNiArMTE1LDggQEAgY2xhc3MgTG9nU2luayB7CiAgIHZpcnR1YWwgdm9p
ZCBPbkxvZ01lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1zZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogdGFnKTsKKyAgdmlydHVhbCB2b2lkIE9uTG9nTWVzc2FnZShj
b25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
b2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkpOwogICB2aXJ0dWFsIHZvaWQgT25Mb2dNZXNzYWdlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSA9IDA7CiB9OwogCkBAIC01MjMsMTAgKzUxOSwxMCBA
QCBjbGFzcyBMb2dNZXNzYWdlIHsKICAgICAgID8gc3RhdGljX2Nhc3Q8dm9pZD4oMCkgICAgICAg
ICAgICAgICBcCiAgICAgICA6IHJ0Yzo6d2VicnRjX2xvZ2dpbmdfaW1wbDo6TG9nTWVzc2FnZVZv
aWRpZnkoKSYKIAotI2RlZmluZSBSVENfTE9HX0ZJTEVfTElORShzZXYsIGZpbGUsIGxpbmUpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgcnRjOjp3ZWJydGNfbG9nZ2lu
Z19pbXBsOjpMb2dDYWxsKCkgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICBydGM6OndlYnJ0Y19sb2dnaW5nX2ltcGw6OkxvZ1N0cmVhbWVyPD4oKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIDw8IHJ0Yzo6d2VicnRjX2xv
Z2dpbmdfaW1wbDo6TG9nTWV0YWRhdGEoX19GSUxFX18sIF9fTElORV9fLCBzZXYpCisjZGVmaW5l
IFJUQ19MT0dfRklMRV9MSU5FKHNldiwgZmlsZSwgbGluZSkgICAgICBcCisgIHJ0Yzo6d2VicnRj
X2xvZ2dpbmdfaW1wbDo6TG9nQ2FsbCgpICYgICAgICAgICBcCisgICAgICBydGM6OndlYnJ0Y19s
b2dnaW5nX2ltcGw6OkxvZ1N0cmVhbWVyPD4oKSBcCisgICAgICAgICAgPDwgcnRjOjp3ZWJydGNf
bG9nZ2luZ19pbXBsOjpMb2dNZXRhZGF0YShmaWxlLCBsaW5lLCBzZXYpCiAKICNkZWZpbmUgUlRD
X0xPRyhzZXYpIFJUQ19MT0dfRklMRV9MSU5FKHJ0Yzo6c2V2LCBfX0ZJTEVfXywgX19MSU5FX18p
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2xvZ2dpbmdfbWFjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX21hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NWRiNTYwYzE4
NzlmMmI4ODAzNzczMzk0MTk4ODBjZjYxODdjNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX21hYy5o
CkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisjaWZuZGVmIFJUQ19CQVNFX0xP
R0dJTkdfTUFDX0hfCisjZGVmaW5lIFJUQ19CQVNFX0xPR0dJTkdfTUFDX0hfCisKKyNpZiAhZGVm
aW5lZChXRUJSVENfTUFDKSB8fCBkZWZpbmVkKFdFQlJUQ19JT1MpCisjZXJyb3IgIk9ubHkgaW5j
bHVkZSB0aGlzIGhlYWRlciBpbiBtYWNPUyBidWlsZHMiCisjZW5kaWYKKworI2luY2x1ZGUgPENv
cmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KKworI2luY2x1ZGUgPHN0cmluZz4KKworbmFtZXNw
YWNlIHJ0YyB7CisKKy8vIFJldHVybnMgYSBVVEY4IGRlc2NyaXB0aW9uIGZyb20gYW4gT1MgWCBT
dGF0dXMgZXJyb3IuCitzdGQ6OnN0cmluZyBEZXNjcmlwdGlvbkZyb21PU1N0YXR1cyhPU1N0YXR1
cyBlcnIpOworCit9ICAvLyBuYW1lc3BhY2UgcnRjCisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfTE9H
R0lOR19NQUNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfbWFjLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ19tYWMubW0KaW5kZXggMzc4Y2Zi
ZmNiOWNkMTQ3NzAxMTgwYjMwYjA3Yjg1OTI5N2I1ZmI1Ny4uYmQ1ZjJiOWQzOGZiZjVlOGQ5MDA3
NWJmYmM0OWE0MDAzNjQ0NGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ19tYWMubW0KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ19tYWMubW0K
QEAgLTgsMTUgKzgsMTUgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmdfbWFjLmgiCiAKICNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0KIG5hbWVzcGFjZSBydGMgewogc3RkOjpzdHJpbmcg
RGVzY3JpcHRpb25Gcm9tT1NTdGF0dXMoT1NTdGF0dXMgZXJyKSB7CiAgIE5TRXJyb3IqIGVycm9y
ID0KICAgICAgIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU09TU3RhdHVzRXJyb3JEb21haW4g
Y29kZTplcnIgdXNlckluZm86bmlsXTsKICAgcmV0dXJuIGVycm9yLmRlc2NyaXB0aW9uLlVURjhT
dHJpbmc7CiB9CisKIH0gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9s
b2dnaW5nX3VuaXR0ZXN0LmNjCmluZGV4IDZiMjI2MzkyM2ZhODUwMWI2N2IzYmRlYWNjMDQ2Nzdl
MDRjNmRmMzYuLjRkZTFjZjJmZTRjYWFiM2U3ZWRkNDRlYjliZmQ0NDdhMDZkZmIwMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2xvZ2dpbmdfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ191bml0dGVzdC5jYwpAQCAtMjIxLDcgKzIyMSw3
IEBAIFRFU1QoTG9nVGVzdCwgU2luZ2xlU3RyZWFtKSB7CiAKICNpZiBHVEVTVF9IQVNfREVBVEhf
VEVTVCAmJiAhZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKIFRFU1QoTG9nVGVzdCwgQ2hlY2tzKSB7
Ci0gIEVYUEVDVF9ERUFUSChSVENfRkFUQUwoKSA8PCAibWVzc2FnZSIsCisgIEVYUEVDVF9ERUFU
SChGQVRBTCgpIDw8ICJtZXNzYWdlIiwKICAgICAgICAgICAgICAgICJcblxuI1xuIgogICAgICAg
ICAgICAgICAgIiMgRmF0YWwgZXJyb3IgaW46IFxcUyssIGxpbmUgXFx3K1xuIgogICAgICAgICAg
ICAgICAgIiMgbGFzdCBzeXN0ZW0gZXJyb3I6IFxcdytcbiIKQEAgLTI5Miw3ICsyOTIsNyBAQCBj
bGFzcyBMb2dUaHJlYWQgewogICBzdGF0aWMgdm9pZCBUaHJlYWRFbnRyeSh2b2lkKiBwKSB7IHN0
YXRpY19jYXN0PExvZ1RocmVhZCo+KHApLT5SdW4oKTsgfQogCiAgIFBsYXRmb3JtVGhyZWFkIHRo
cmVhZF87Ci0gIEV2ZW50IGV2ZW50X3tmYWxzZSwgZmFsc2V9OworICBFdmVudCBldmVudF87CiB9
OwogCiAvLyBFbnN1cmUgd2UgZG9uJ3QgY3Jhc2ggd2hlbiBhZGRpbmcvcmVtb3Zpbmcgc3RyZWFt
cyB3aGlsZSB0aHJlYWRzIGFyZSBnb2luZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ3NpbmtzLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nc2lua3MuY2MKaW5k
ZXggNjYyYjFmMjBkZTk3ODVjNzUzNjA4NDBhYTVlZThiMDljN2Q5ZTcxNy4uYzAxYmFmYmRkMjI4
MGY0NTk4OGIyOTI3Y2M3NWJjYjA0ZGE0Zjg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nc2lua3MuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nc2lua3Mu
Y2MKQEAgLTEwLDEwICsxMCwxMiBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nc2lua3MuaCIK
IAorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxzdHJp
bmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9z
dHJlYW0uaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ3NpbmtzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dzaW5rcy5oCmlu
ZGV4IGNhZjRhNWY3MjhhMzc5NDUyNTBkMGY4OTI1NzI5MGI1Y2JjNTQ3OTcuLmQwODY3YTIyMDI0
YmJkMTVlN2VkZGY4NDU1YzNjOTdkZDBmOTYxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ3NpbmtzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nc2lua3Mu
aApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBSVENfQkFTRV9MT0dTSU5LU19IXwogI2RlZmlu
ZSBSVENfQkFTRV9MT0dTSU5LU19IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWRuc19yZXNwb25kZXJfaW50ZXJm
YWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9tZG5zX3Jlc3BvbmRlcl9pbnRlcmZhY2UuaAppbmRleCA5ZGJhZjU2YWQ4OGYxMDU5YmYzZjNm
MDA0OGFhMWMwYTYxNTZhODdiLi43MTkzOGIyNTc2ZDc5ZGQ4YTZjNzE3ZTZhMjA1ZDQzNjVhYzIx
N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9tZG5zX3Jlc3BvbmRlcl9pbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZG5zX3Jlc3BvbmRlcl9pbnRl
cmZhY2UuaApAQCAtMTIsMzYgKzEyLDM1IEBACiAjZGVmaW5lIFJUQ19CQVNFX01ETlNfUkVTUE9O
REVSX0lOVEVSRkFDRV9IXwogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDxtYXA+
Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJpbmc+CiAK
ICNpbmNsdWRlICJydGNfYmFzZS9pcGFkZHJlc3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zb2Nr
ZXRhZGRyZXNzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBEZWZpbmVzIGFuIG1ETlMg
cmVzcG9uZGVyIHRoYXQgY2FuIGJlIHVzZWQgaW4gSUNFIGNhbmRpZGF0ZSBnYXRoZXJpbmcsIHdo
ZXJlCi0vLyB0aGUgbG9jYWwgSVAgYWRkcmVzc2VzIG9mIGhvc3QgY2FuZGlkYXRlcyBhcmUgb2Jm
dXNjYXRlZCBieSBtRE5TIGhvc3RuYW1lcy4KLWNsYXNzIE1EbnNSZXNwb25kZXJJbnRlcmZhY2Ug
eworLy8gdGhlIGxvY2FsIElQIGFkZHJlc3NlcyBvZiBob3N0IGNhbmRpZGF0ZXMgYXJlIHJlcGxh
Y2VkIGJ5IG1ETlMgaG9zdG5hbWVzLgorY2xhc3MgTWRuc1Jlc3BvbmRlckludGVyZmFjZSB7CiAg
cHVibGljOgogICB1c2luZyBOYW1lQ3JlYXRlZENhbGxiYWNrID0KICAgICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBydGM6OklQQWRkcmVzcyYsIGNvbnN0IHN0ZDo6c3RyaW5nJik+OwogICB1
c2luZyBOYW1lUmVtb3ZlZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPjsKIAot
ICBNRG5zUmVzcG9uZGVySW50ZXJmYWNlKCkgPSBkZWZhdWx0OwotICB2aXJ0dWFsIH5NRG5zUmVz
cG9uZGVySW50ZXJmYWNlKCkgPSBkZWZhdWx0OworICBNZG5zUmVzcG9uZGVySW50ZXJmYWNlKCkg
PSBkZWZhdWx0OworICB2aXJ0dWFsIH5NZG5zUmVzcG9uZGVySW50ZXJmYWNlKCkgPSBkZWZhdWx0
OwogCi0gIC8vIEFzeW5jaHJvbm91c2x5IGNyZWF0ZXMgYSB0eXBlLTQgVVVJRCBob3N0bmFtZSBm
b3IgYW4gSVAgYWRkcmVzcy4gVGhlCi0gIC8vIGNyZWF0ZWQgbmFtZSBzaG91bGQgYmUgZ2l2ZW4g
dG8gfGNhbGxiYWNrfCB3aXRoIHRoZSBhZGRyZXNzIHRoYXQgaXQKLSAgLy8gcmVwcmVzZW50cy4K
KyAgLy8gQXN5bmNocm9ub3VzbHkgY3JlYXRlcyBhbmQgcmV0dXJucyBhIG5ldyBuYW1lIHZpYSB8
Y2FsbGJhY2t8IGZvciB8YWRkcnwgaWYKKyAgLy8gdGhlcmUgaXMgbm8gbmFtZSBtYXBwZWQgdG8g
aXQgYnkgdGhpcyByZXNwb25kZXIsIGFuZCBpbml0aWFsaXplcyB0aGUKKyAgLy8gcmVmZXJlbmNl
IGNvdW50IG9mIHRoaXMgbmFtZSB0byBvbmUuIE90aGVyd2lzZSB0aGUgZXhpc3RpbmcgbmFtZSBt
YXBwZWQgdG8KKyAgLy8gfGFkZHJ8IGlzIHJldHVybmVkIGFuZCBpdHMgcmVmZXJlbmNlIGNvdW50
IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4KICAgdmlydHVhbCB2b2lkIENyZWF0ZU5hbWVGb3JBZGRy
ZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxsYmFjaykgPSAwOwotICAvLyBSZW1v
dmVzIHRoZSBuYW1lIG1hcHBlZCB0byB0aGUgZ2l2ZW4gYWRkcmVzcyBpZiB0aGVyZSBpcyBzdWNo
IGFuCi0gIC8vIG5hbWUtYWRkcmVzcyBtYXBwaW5nIHByZXZpb3VzbHkgY3JlYXRlZCB2aWEgQ3Jl
YXRlTmFtZUZvckFkZHJlc3MuIFRoZQotICAvLyByZXN1bHQgb2Ygd2hldGhlciBhbiBhc3NvY2lh
dGVkIG5hbWUtYWRkcmVzcyBtYXBwaW5nIGlzIHJlbW92ZWQgc2hvdWxkIGJlCi0gIC8vIGdpdmVu
IHRvIHxjYWxsYmFja3wuCisgIC8vIERlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0
aGUgbWFwcGVkIG5hbWUgb2YgfGFkZHJ8LCBpZgorICAvLyB0aGVyZSBpcyBhIG1hcCBjcmVhdGVk
IHByZXZpb3VzbHkgdmlhIENyZWF0ZU5hbWVGb3JBZGRyZXNzOyBhc3luY2hyb25vdXNseQorICAv
LyByZW1vdmVzIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIHxhZGRyfCBhbmQgaXRzIG1hcHBlZCBu
YW1lLCBhbmQgcmV0dXJucworICAvLyB0cnVlIHZpYSB8Y2FsbGJhY2t8IGlmIHRoZSBkZWNyZW1l
bnRlZCByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLgorICAvLyBPdGhlcndpc2Ugbm8gb3Bl
cmF0aW9uIGlzIGRvbmUgYW5kIGZhbHNlIGlzIHJldHVybmVkIHZpYSB8Y2FsbGJhY2t8CisgIC8v
IGFzeW5jaHJvbm91c2x5LgogICB2aXJ0dWFsIHZvaWQgUmVtb3ZlTmFtZUZvckFkZHJlc3MoY29u
c3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOYW1lUmVtb3ZlZENhbGxiYWNrIGNhbGxiYWNrKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5
L2FsaWduZWRfbWFsbG9jLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbWVtb3J5L2FsaWduZWRfbWFsbG9jLmNjCmluZGV4IGExZDU0YmRiNzg1
YThkZmRhNWUzNDkzZDAyNmI5YWM0ZWQzOTIxMTkuLmM4OTNjOTZlZjJhZjA4ODNjMDNmYTEyMGVm
ZjM4NWE1OGUzYWNiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeS9hbGlnbmVkX21hbGxvYy5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZW1vcnkvYWxp
Z25lZF9tYWxsb2MuY2MKQEAgLTEwLDggKzEwLDggQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL21l
bW9yeS9hbGlnbmVkX21hbGxvYy5oIgogCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8
Y3N0cmluZz4KKyNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIGZvciBmcmVlLCBtYWxsb2MKKyNpbmNs
dWRlIDxzdHJpbmcuaD4gIC8vIGZvciBtZW1jcHkKIAogI2lmZGVmIF9XSU4zMgogI2luY2x1ZGUg
PHdpbmRvd3MuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeV9zdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZW1vcnlfc3RyZWFtLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU0MWRlMDcwYzcyODFjYjhmN2Y0OTk1NzZlNmM2ZGMxMDg3MTk2ZGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9tZW1vcnlfc3RyZWFtLmNjCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogIENvcHlyaWdodCAy
MDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVtb3J5X3N0cmVh
bS5oIgorCituYW1lc3BhY2UgcnRjIHsKKworU3RyZWFtU3RhdGUgTWVtb3J5U3RyZWFtOjpHZXRT
dGF0ZSgpIGNvbnN0IHsKKyAgcmV0dXJuIFNTX09QRU47Cit9CisKK1N0cmVhbVJlc3VsdCBNZW1v
cnlTdHJlYW06OlJlYWQodm9pZCogYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCogYnl0ZXNfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBlcnJv
cikgeworICBpZiAoc2Vla19wb3NpdGlvbl8gPj0gZGF0YV9sZW5ndGhfKSB7CisgICAgcmV0dXJu
IFNSX0VPUzsKKyAgfQorICBzaXplX3QgYXZhaWxhYmxlID0gZGF0YV9sZW5ndGhfIC0gc2Vla19w
b3NpdGlvbl87CisgIGlmIChieXRlcyA+IGF2YWlsYWJsZSkgeworICAgIC8vIFJlYWQgcGFydGlh
bCBidWZmZXIKKyAgICBieXRlcyA9IGF2YWlsYWJsZTsKKyAgfQorICBtZW1jcHkoYnVmZmVyLCAm
YnVmZmVyX1tzZWVrX3Bvc2l0aW9uX10sIGJ5dGVzKTsKKyAgc2Vla19wb3NpdGlvbl8gKz0gYnl0
ZXM7CisgIGlmIChieXRlc19yZWFkKSB7CisgICAgKmJ5dGVzX3JlYWQgPSBieXRlczsKKyAgfQor
ICByZXR1cm4gU1JfU1VDQ0VTUzsKK30KKworU3RyZWFtUmVzdWx0IE1lbW9yeVN0cmVhbTo6V3Jp
dGUoY29uc3Qgdm9pZCogYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBi
eXRlc193cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBlcnJv
cikgeworICBzaXplX3QgYXZhaWxhYmxlID0gYnVmZmVyX2xlbmd0aF8gLSBzZWVrX3Bvc2l0aW9u
XzsKKyAgaWYgKDAgPT0gYXZhaWxhYmxlKSB7CisgICAgLy8gSW5jcmVhc2UgYnVmZmVyIHNpemUg
dG8gdGhlIGxhcmdlciBvZjoKKyAgICAvLyBhKSBuZXcgcG9zaXRpb24gcm91bmRlZCB1cCB0byBu
ZXh0IDI1NiBieXRlcworICAgIC8vIGIpIGRvdWJsZSB0aGUgcHJldmlvdXMgbGVuZ3RoCisgICAg
c2l6ZV90IG5ld19idWZmZXJfbGVuZ3RoID0KKyAgICAgICAgc3RkOjptYXgoKChzZWVrX3Bvc2l0
aW9uXyArIGJ5dGVzKSB8IDB4RkYpICsgMSwgYnVmZmVyX2xlbmd0aF8gKiAyKTsKKyAgICBTdHJl
YW1SZXN1bHQgcmVzdWx0ID0gRG9SZXNlcnZlKG5ld19idWZmZXJfbGVuZ3RoLCBlcnJvcik7Cisg
ICAgaWYgKFNSX1NVQ0NFU1MgIT0gcmVzdWx0KSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICBSVENfRENIRUNLKGJ1ZmZlcl9sZW5ndGhfID49IG5ld19idWZmZXJfbGVuZ3RoKTsK
KyAgICBhdmFpbGFibGUgPSBidWZmZXJfbGVuZ3RoXyAtIHNlZWtfcG9zaXRpb25fOworICB9CisK
KyAgaWYgKGJ5dGVzID4gYXZhaWxhYmxlKSB7CisgICAgYnl0ZXMgPSBhdmFpbGFibGU7CisgIH0K
KyAgbWVtY3B5KCZidWZmZXJfW3NlZWtfcG9zaXRpb25fXSwgYnVmZmVyLCBieXRlcyk7CisgIHNl
ZWtfcG9zaXRpb25fICs9IGJ5dGVzOworICBpZiAoZGF0YV9sZW5ndGhfIDwgc2Vla19wb3NpdGlv
bl8pIHsKKyAgICBkYXRhX2xlbmd0aF8gPSBzZWVrX3Bvc2l0aW9uXzsKKyAgfQorICBpZiAoYnl0
ZXNfd3JpdHRlbikgeworICAgICpieXRlc193cml0dGVuID0gYnl0ZXM7CisgIH0KKyAgcmV0dXJu
IFNSX1NVQ0NFU1M7Cit9CisKK3ZvaWQgTWVtb3J5U3RyZWFtOjpDbG9zZSgpIHsKKyAgLy8gbm90
aGluZyB0byBkbworfQorCitib29sIE1lbW9yeVN0cmVhbTo6U2V0UG9zaXRpb24oc2l6ZV90IHBv
c2l0aW9uKSB7CisgIGlmIChwb3NpdGlvbiA+IGRhdGFfbGVuZ3RoXykKKyAgICByZXR1cm4gZmFs
c2U7CisgIHNlZWtfcG9zaXRpb25fID0gcG9zaXRpb247CisgIHJldHVybiB0cnVlOworfQorCiti
b29sIE1lbW9yeVN0cmVhbTo6R2V0UG9zaXRpb24oc2l6ZV90KiBwb3NpdGlvbikgY29uc3Qgewor
ICBpZiAocG9zaXRpb24pCisgICAgKnBvc2l0aW9uID0gc2Vla19wb3NpdGlvbl87CisgIHJldHVy
biB0cnVlOworfQorCitib29sIE1lbW9yeVN0cmVhbTo6R2V0U2l6ZShzaXplX3QqIHNpemUpIGNv
bnN0IHsKKyAgaWYgKHNpemUpCisgICAgKnNpemUgPSBkYXRhX2xlbmd0aF87CisgIHJldHVybiB0
cnVlOworfQorCitib29sIE1lbW9yeVN0cmVhbTo6UmVzZXJ2ZVNpemUoc2l6ZV90IHNpemUpIHsK
KyAgcmV0dXJuIChTUl9TVUNDRVNTID09IERvUmVzZXJ2ZShzaXplLCBudWxscHRyKSk7Cit9CisK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oKSB7
fQorCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShjb25zdCBjaGFyKiBkYXRhKSB7CisgIFNl
dERhdGEoZGF0YSwgc3RybGVuKGRhdGEpKTsKK30KKworTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJl
YW0oY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeworICBTZXREYXRhKGRhdGEsIGxl
bmd0aCk7Cit9CisKK01lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpIHsKKyAgZGVsZXRlW10g
YnVmZmVyXzsKK30KKwordm9pZCBNZW1vcnlTdHJlYW06OlNldERhdGEoY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90IGxlbmd0aCkgeworICBkYXRhX2xlbmd0aF8gPSBidWZmZXJfbGVuZ3RoXyA9IGxl
bmd0aDsKKyAgZGVsZXRlW10gYnVmZmVyXzsKKyAgYnVmZmVyXyA9IG5ldyBjaGFyW2J1ZmZlcl9s
ZW5ndGhfXTsKKyAgbWVtY3B5KGJ1ZmZlcl8sIGRhdGEsIGRhdGFfbGVuZ3RoXyk7CisgIHNlZWtf
cG9zaXRpb25fID0gMDsKK30KKworU3RyZWFtUmVzdWx0IE1lbW9yeVN0cmVhbTo6RG9SZXNlcnZl
KHNpemVfdCBzaXplLCBpbnQqIGVycm9yKSB7CisgIGlmIChidWZmZXJfbGVuZ3RoXyA+PSBzaXpl
KQorICAgIHJldHVybiBTUl9TVUNDRVNTOworCisgIGlmIChjaGFyKiBuZXdfYnVmZmVyID0gbmV3
IGNoYXJbc2l6ZV0pIHsKKyAgICBtZW1jcHkobmV3X2J1ZmZlciwgYnVmZmVyXywgZGF0YV9sZW5n
dGhfKTsKKyAgICBkZWxldGVbXSBidWZmZXJfOworICAgIGJ1ZmZlcl8gPSBuZXdfYnVmZmVyOwor
ICAgIGJ1ZmZlcl9sZW5ndGhfID0gc2l6ZTsKKyAgICByZXR1cm4gU1JfU1VDQ0VTUzsKKyAgfQor
CisgIGlmIChlcnJvcikgeworICAgICplcnJvciA9IEVOT01FTTsKKyAgfQorICByZXR1cm4gU1Jf
RVJST1I7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeV9zdHJlYW0uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9y
eV9zdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzZmNzFiMzRjMDEwYjIyNjNlNDc4MDI5MzI5YjFlY2Zk
MjcwZDcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5X3N0cmVhbS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfTUVNT1JZX1NUUkVBTV9IXworI2Rl
ZmluZSBSVENfQkFTRV9NRU1PUllfU1RSRUFNX0hfCisKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJl
YW0uaCIKKworbmFtZXNwYWNlIHJ0YyB7CisKKy8vIE1lbW9yeVN0cmVhbSBkeW5hbWljYWxseSBy
ZXNpemVzIHRvIGFjY29tb2RhdGUgd3JpdHRlbiBkYXRhLgorCitjbGFzcyBNZW1vcnlTdHJlYW0g
ZmluYWwgOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIE1lbW9yeVN0cmVh
bSgpOworICBleHBsaWNpdCBNZW1vcnlTdHJlYW0oY29uc3QgY2hhciogZGF0YSk7ICAvLyBDYWxs
cyBTZXREYXRhKGRhdGEsIHN0cmxlbihkYXRhKSkKKyAgTWVtb3J5U3RyZWFtKGNvbnN0IHZvaWQq
IGRhdGEsIHNpemVfdCBsZW5ndGgpOyAgLy8gQ2FsbHMgU2V0RGF0YShkYXRhLCBsZW5ndGgpCisg
IH5NZW1vcnlTdHJlYW0oKSBvdmVycmlkZTsKKworICBTdHJlYW1TdGF0ZSBHZXRTdGF0ZSgpIGNv
bnN0IG92ZXJyaWRlOworICBTdHJlYW1SZXN1bHQgUmVhZCh2b2lkKiBidWZmZXIsCisgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBi
eXRlc19yZWFkLAorICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVycmlkZTsKKyAg
U3RyZWFtUmVzdWx0IFdyaXRlKGNvbnN0IHZvaWQqIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfd3Jp
dHRlbiwKKyAgICAgICAgICAgICAgICAgICAgIGludCogZXJyb3IpIG92ZXJyaWRlOworICB2b2lk
IENsb3NlKCkgb3ZlcnJpZGU7CisgIGJvb2wgU2V0UG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBv
dmVycmlkZTsKKyAgYm9vbCBHZXRQb3NpdGlvbihzaXplX3QqIHBvc2l0aW9uKSBjb25zdCBvdmVy
cmlkZTsKKyAgYm9vbCBHZXRTaXplKHNpemVfdCogc2l6ZSkgY29uc3Qgb3ZlcnJpZGU7CisgIGJv
b2wgUmVzZXJ2ZVNpemUoc2l6ZV90IHNpemUpIG92ZXJyaWRlOworCisgIGNoYXIqIEdldEJ1ZmZl
cigpIHsgcmV0dXJuIGJ1ZmZlcl87IH0KKyAgY29uc3QgY2hhciogR2V0QnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gYnVmZmVyXzsgfQorCisgIHZvaWQgU2V0RGF0YShjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKTsKKworIHByaXZhdGU6CisgIFN0cmVhbVJlc3VsdCBEb1Jlc2VydmUoc2l6
ZV90IHNpemUsIGludCogZXJyb3IpOworCisgIC8vIEludmFyaWFudDogMCA8PSBzZWVrX3Bvc2l0
aW9uIDw9IGRhdGFfbGVuZ3RoXyA8PSBidWZmZXJfbGVuZ3RoXworICBjaGFyKiBidWZmZXJfID0g
bnVsbHB0cjsKKyAgc2l6ZV90IGJ1ZmZlcl9sZW5ndGhfID0gMDsKKyAgc2l6ZV90IGRhdGFfbGVu
Z3RoXyA9IDA7CisgIHNpemVfdCBzZWVrX3Bvc2l0aW9uXyA9IDA7Cit9OworCit9ICAvLyBuYW1l
c3BhY2UgcnRjCisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfTUVNT1JZX1NUUkVBTV9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
bWVtb3J5X3VzYWdlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbWVtb3J5X3VzYWdlLmNjCmluZGV4IGE3MGM1NDc1M2ZjNGFmN2M4NTc0MzVj
NDhkMmE3NGViMWEyNDRiZjUuLjljZDM2ZDM3MjA5OWFhNDk3YjBiNDNhYmM4NjZlYmJlMjNjYTY0
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL21lbW9yeV91c2FnZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZW1vcnlfdXNhZ2UuY2MKQEAgLTYxLDYgKzYxLDkg
QEAgaW50NjRfdCBHZXRQcm9jZXNzUmVzaWRlbnRTaXplQnl0ZXMoKSB7CiAgICAgcmV0dXJuIC0x
OwogICB9CiAgIHJldHVybiBwbWMuV29ya2luZ1NldFNpemU7CisjZWxpZiBkZWZpbmVkKFdFQlJU
Q19GVUNIU0lBKQorICBSVENfTE9HX0VSUihMU19FUlJPUikgPDwgIkdldFByb2Nlc3NSZXNpZGVu
dFNpemVCeXRlcygpIG5vdCBpbXBsZW1lbnRlZCI7CisgIHJldHVybiAwOwogI2Vsc2UKICAgLy8g
Tm90IGltcGxlbWVudGVkIHlldC4KICAgc3RhdGljX2Fzc2VydChmYWxzZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3Nh
Z2VkaWdlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9tZXNzYWdlZGlnZXN0LmNjCmluZGV4IDljMTBiY2Q0ODZhNzYxYmJlZDZkZmEzYTM5
YjZkYmE4MGRhNDRmODkuLjVhMGQxNmE5YTA0YjY3MmVjNjljZmY3N2ZjOTgyODc0NTA2NzdhNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL21lc3NhZ2VkaWdlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5jYwpAQCAtMTAsOSArMTAsOSBA
QAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogCi0jaW5jbHVkZSA8bWVt
b3J5PgotCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRl
IDxtZW1vcnk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsZGlnZXN0LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlZGln
ZXN0LmgKaW5kZXggZmM4MjA4ODU0MzZmOGNlNzFkNDVmNmNiMjE1M2E3ZWY2MTczYjM5OC4uNzU3
ZjkxNDg3NmIwN2U0MTMwNzgxZThlNGJjMTdmYTVmYWE5N2Y5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZWRpZ2Vz
dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL21lc3NhZ2VkaWdlc3QuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBSVENfQkFTRV9N
RVNTQUdFRElHRVNUX0hfCiAjZGVmaW5lIFJUQ19CQVNFX01FU1NBR0VESUdFU1RfSF8KIAorI2lu
Y2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAogbmFtZXNwYWNlIHJ0YyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9tZXNzYWdlaGFuZGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZWhhbmRsZXIuaAppbmRleCBkZjJkMWFkYThkZGNlY2M0
NDkzZTViYTI0NWE4NzQyNzBlYjAzYWY5Li4wYzQwODUzZTIxNDg1NWM0NjQ3OGM1ZjdhOTBlZmYx
NDIyNjRjNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VoYW5kbGVyLmgKQEAgLTEx
LDcgKzExLDYgQEAKICNpZm5kZWYgUlRDX0JBU0VfTUVTU0FHRUhBTkRMRVJfSF8KICNkZWZpbmUg
UlRDX0JBU0VfTUVTU0FHRUhBTkRMRVJfSF8KIAotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx1dGlsaXR5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbWVzc2FnZXF1ZXVlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmNjCmluZGV4IGE1NjFhZjQyZWI4MDg0YTc0YTM5
YmViYzlhNDQ4ODc3YjYyMzNkOGYuLjIwNDk1MmE3ZTJhYmZiNDIzMzg4MzRlMGVjOTM0YzRlYmNm
ZTVkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlcXVldWUuY2MKQEAgLTgsMTMgKzgs
MTUgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KICAqLwogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxzdHJp
bmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dp
bmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVu
dC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKQEAgLTM0OCw4ICszNTAsMTAgQEAgdm9pZCBNZXNzYWdl
UXVldWU6OlBvc3QoY29uc3QgTG9jYXRpb24mIHBvc3RlZF9mcm9tLAogICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlRGF0
YSogcGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRpbWVfc2Vuc2l0aXZlKSB7
Ci0gIGlmIChJc1F1aXR0aW5nKCkpCisgIGlmIChJc1F1aXR0aW5nKCkpIHsKKyAgICBkZWxldGUg
cGRhdGE7CiAgICAgcmV0dXJuOworICB9CiAKICAgLy8gS2VlcCB0aHJlYWQgc2FmZQogICAvLyBB
ZGQgdGhlIG1lc3NhZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUKQEAgLTQwNSw2ICs0MDksNyBA
QCB2b2lkIE1lc3NhZ2VRdWV1ZTo6RG9EZWxheVBvc3QoY29uc3QgTG9jYXRpb24mIHBvc3RlZF9m
cm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VEYXRhKiBwZGF0YSkgewogICBpZiAoSXNR
dWl0dGluZygpKSB7CisgICAgZGVsZXRlIHBkYXRhOwogICAgIHJldHVybjsKICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9tZXNzYWdlcXVldWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oCmluZGV4IGU3ZTQ3OTI4NWQyMGM4MzM5YTYyZWU2
M2VhZjNhYTUwZDA5OWUwMmUuLmMxYjliNWE5MTZhODk1YWMwNmYyYmRlYjdiNTk5Y2FjNjNkZTc4
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oCkBAIC0xNyw3ICsxNyw2IEBA
CiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cXVldWU+Ci0j
aW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCkBAIC0yOCw3ICsyNyw2IEBACiAjaW5jbHVkZSAicnRjX2Jh
c2Uvc29ja2V0c2VydmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xv
dC9zaWdzbG90LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKIG5hbWVzcGFjZSBydGMgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9uYXRzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuY2MKaW5kZXggODExOTM3NjFhNjNjMDU1YzcyNjkxYTkxZGZj
NjNjMDMzMzg5ZTEwZi4uYjAwNWVjYWU3YTBkMWE1YmY2YTBhNmE0NTgyZDEwYTFjNzhkOWE2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbmF0c2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL25hdHNlcnZlci5jYwpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQg
TkFUU2VydmVyOjpPbkludGVybmFsVURQUGFja2V0KEFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmIGFkZHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRUaW1lJiBwYWNr
ZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50
NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAgLy8gUmVhZCB0aGUgaW50ZW5kZWQgZGVz
dGluYXRpb24gZnJvbSB0aGUgd2lyZS4KICAgU29ja2V0QWRkcmVzcyBkZXN0X2FkZHI7CiAgIHNp
emVfdCBsZW5ndGggPSBVbnBhY2tBZGRyZXNzRnJvbU5BVChidWYsIHNpemUsICZkZXN0X2FkZHIp
OwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgTkFUU2VydmVyOjpPbkV4dGVybmFsVURQUGFja2V0
KEFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3Vz
ICovKSB7CiAgIFNvY2tldEFkZHJlc3MgbG9jYWxfYWRkciA9IHNvY2tldC0+R2V0TG9jYWxBZGRy
ZXNzKCk7CiAKICAgLy8gRmluZCB0aGUgdHJhbnNsYXRpb24gZm9yIHRoaXMgYWRkcmVzc2VzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbmF0c2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuaAppbmRleCBmNGNhYmNmMGQ5YjdlMTMwYjVjOGQyOTlh
OTVjNDhiODkxMTBkZTY0Li5kMTZiNTM3MGYwNTA3YzZjODRlZTg4ODEzNTM5Y2RlOWJlZmM2YTVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9uYXRzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuaApAQCAtODEsMTIgKzgxLDEyIEBAIGNsYXNz
IE5BVFNlcnZlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFk
ZHJlc3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRUaW1l
JiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90
JiBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQgT25FeHRlcm5hbFVEUFBhY2tldChBc3luY1BhY2tl
dFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsK
IAogIHByaXZhdGU6CiAgIHR5cGVkZWYgc3RkOjpzZXQ8U29ja2V0QWRkcmVzcywgQWRkckNtcD4g
QWRkcmVzc1NldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL25ldGhlbHBlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVyLmgKaW5kZXggZTg2ZDEyNmNiZjQ1
YzZmNzllYTIwMTUxNTUwMTU4OGQxYTU4M2RlYi4uZjk1NjEzODBmYjdkMjMwMzJhYWU5ZjZiMDZj
ZTkyMTkzM2MwZWUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVyLmgKQEAgLTEwLDcgKzEw
LDYgQEAKICNpZm5kZWYgUlRDX0JBU0VfTkVUSEVMUEVSX0hfCiAjZGVmaW5lIFJUQ19CQVNFX05F
VEhFTFBFUl9IXwogCi0jaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxzdHJpbmc+CiAKIC8v
IFRoaXMgaGVhZGVyIGNvbnRhaW5zIGhlbHBlciBmdW5jdGlvbnMgYW5kIGNvbnN0YW50cyB1c2Vk
IGJ5IGRpZmZlcmVudCB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVycy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldGhlbHBlcnMuY2MKaW5kZXgg
YjEyMjFjM2QwMDE0ZGI2MzQ0MThiYmRiZmIxZDdlNjU4NzhjZTg1Yi4uODFjZDFhZmNlZjRhMDY5
ZTZhNzZhMDc2ZGEyMGQxY2UxMDcxYjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVycy5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXRoZWxwZXJz
LmNjCkBAIC0yNSwxMCArMjUsOSBAQAogI2VuZGlmCiAjZW5kaWYgIC8vIGRlZmluZWQoV0VCUlRD
X1BPU0lYKSAmJiAhZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykKIAotI2luY2x1ZGUgInJ0Y19i
YXNlL2J5dGVvcmRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zaWduYWx0aHJlYWQuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIgIC8vIGZv
ciBzaWduYWxfd2l0aF90aHJlYWQuLi4KIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldGhl
bHBlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL25ldGhlbHBlcnMuaAppbmRleCBmOWQxODhmNjFkMDlhNzc4MjUxMzczYzczOGRhZTdlODY5
MzI0YTFlLi4xMzhmOTU4M2NjY2ExYWNhOGE4MDhmZGFkYzQxMmM4ZmI0YTgwZmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9u
ZXRoZWxwZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbmV0aGVscGVycy5oCkBAIC0xMiwxOCArMTIsMTcgQEAKICNkZWZpbmUgUlRD
X0JBU0VfTkVUSEVMUEVSU19IXwogCiAjaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCi0jaW5jbHVk
ZSA8bmV0ZGIuaD4KLSNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+
CiAjZWxpZiBXRUJSVENfV0lOCiAjaW5jbHVkZSA8d2luc29jazIuaD4gIC8vIE5PTElOVAogI2Vu
ZGlmCiAKLSNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2FzeW5jcmVzb2x2ZXJpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9pcGFk
ZHJlc3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zaWduYWx0aHJlYWQuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkv
c2lnc2xvdC9zaWdzbG90LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0
d29yay5jYwppbmRleCA2Nzg4OGVkZTgzNDIzMTBhMDcwNmNmMTNhZjgyNGFlOWI1ZjMyOTkyLi41
YzdiMDE5ZDY2YzJmZGQzMjU1ZDUyMGNlMzIwM2Y3Yzk2YjkxYmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L25ldHdvcmsuY2MKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29ya21vbml0b3IuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9zb2NrZXQuaCIgIC8vIGluY2x1ZGVzIHNvbWV0aGluZyB0aGF0IG1ha2VzIHdpbmRvd3Mg
aGFwcHkKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
dHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKQEAgLTI2MCw3ICsyNTksNyBA
QCBib29sIE5ldHdvcmtNYW5hZ2VyOjpHZXREZWZhdWx0TG9jYWxBZGRyZXNzKGludCBmYW1pbHks
IElQQWRkcmVzcyogYWRkcikgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXdlYnJ0Yzo6
TURuc1Jlc3BvbmRlckludGVyZmFjZSogTmV0d29ya01hbmFnZXI6OkdldE1EbnNSZXNwb25kZXIo
KSBjb25zdCB7Cit3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UqIE5ldHdvcmtNYW5hZ2Vy
OjpHZXRNZG5zUmVzcG9uZGVyKCkgY29uc3QgewogICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAt
Mjg2LDcgKzI4NSw3IEBAIHZvaWQgTmV0d29ya01hbmFnZXJCYXNlOjpHZXRBbnlBZGRyZXNzTmV0
d29ya3MoTmV0d29ya0xpc3QqIG5ldHdvcmtzKSB7CiAgICAgICAgIG5ldyBydGM6Ok5ldHdvcmso
ImFueSIsICJhbnkiLCBpcHY0X2FueV9hZGRyZXNzLCAwLCBBREFQVEVSX1RZUEVfQU5ZKSk7CiAg
ICAgaXB2NF9hbnlfYWRkcmVzc19uZXR3b3JrXy0+c2V0X2RlZmF1bHRfbG9jYWxfYWRkcmVzc19w
cm92aWRlcih0aGlzKTsKICAgICBpcHY0X2FueV9hZGRyZXNzX25ldHdvcmtfLT5BZGRJUChpcHY0
X2FueV9hZGRyZXNzKTsKLSAgICBpcHY0X2FueV9hZGRyZXNzX25ldHdvcmtfLT5TZXRNRG5zUmVz
cG9uZGVyKEdldE1EbnNSZXNwb25kZXIoKSk7CisgICAgaXB2NF9hbnlfYWRkcmVzc19uZXR3b3Jr
Xy0+U2V0TWRuc1Jlc3BvbmRlcihHZXRNZG5zUmVzcG9uZGVyKCkpOwogICB9CiAgIG5ldHdvcmtz
LT5wdXNoX2JhY2soaXB2NF9hbnlfYWRkcmVzc19uZXR3b3JrXy5nZXQoKSk7CiAKQEAgLTI5Nyw3
ICsyOTYsNyBAQCB2b2lkIE5ldHdvcmtNYW5hZ2VyQmFzZTo6R2V0QW55QWRkcmVzc05ldHdvcmtz
KE5ldHdvcmtMaXN0KiBuZXR3b3JrcykgewogICAgICAgICAgICJhbnkiLCAiYW55IiwgaXB2Nl9h
bnlfYWRkcmVzcywgMCwgQURBUFRFUl9UWVBFX0FOWSkpOwogICAgICAgaXB2Nl9hbnlfYWRkcmVz
c19uZXR3b3JrXy0+c2V0X2RlZmF1bHRfbG9jYWxfYWRkcmVzc19wcm92aWRlcih0aGlzKTsKICAg
ICAgIGlwdjZfYW55X2FkZHJlc3NfbmV0d29ya18tPkFkZElQKGlwdjZfYW55X2FkZHJlc3MpOwot
ICAgICAgaXB2Nl9hbnlfYWRkcmVzc19uZXR3b3JrXy0+U2V0TURuc1Jlc3BvbmRlcihHZXRNRG5z
UmVzcG9uZGVyKCkpOworICAgICAgaXB2Nl9hbnlfYWRkcmVzc19uZXR3b3JrXy0+U2V0TWRuc1Jl
c3BvbmRlcihHZXRNZG5zUmVzcG9uZGVyKCkpOwogICAgIH0KICAgICBuZXR3b3Jrcy0+cHVzaF9i
YWNrKGlwdjZfYW55X2FkZHJlc3NfbmV0d29ya18uZ2V0KCkpOwogICB9CkBAIC0zODcsNyArMzg2
LDcgQEAgdm9pZCBOZXR3b3JrTWFuYWdlckJhc2U6Ok1lcmdlTmV0d29ya0xpc3QoY29uc3QgTmV0
d29ya0xpc3QmIG5ld19uZXR3b3JrcywKICAgICAgICAgZGVsZXRlIG5ldDsKICAgICAgIH0KICAg
ICB9Ci0gICAgbmV0d29ya3NfbWFwX1trZXldLT5TZXRNRG5zUmVzcG9uZGVyKEdldE1EbnNSZXNw
b25kZXIoKSk7CisgICAgbmV0d29ya3NfbWFwX1trZXldLT5TZXRNZG5zUmVzcG9uZGVyKEdldE1k
bnNSZXNwb25kZXIoKSk7CiAgIH0KICAgLy8gSXQgbWF5IHN0aWxsIGhhcHBlbiB0aGF0IHRoZSBt
ZXJnZWQgbGlzdCBpcyBhIHN1YnNldCBvZiB8bmV0d29ya3NffC4KICAgLy8gVG8gZGV0ZWN0IHRo
aXMgY2hhbmdlLCB3ZSBjb21wYXJlIHRoZWlyIHNpemVzLgpAQCAtNzc1LDI2ICs3NzQsMjggQEAg
Ym9vbCBCYXNpY05ldHdvcmtNYW5hZ2VyOjpDcmVhdGVOZXR3b3Jrcyhib29sIGluY2x1ZGVfaWdu
b3JlZCwKIAogI2lmIGRlZmluZWQoV0VCUlRDX0xJTlVYKQogYm9vbCBJc0RlZmF1bHRSb3V0ZShj
b25zdCBzdGQ6OnN0cmluZyYgbmV0d29ya19uYW1lKSB7Ci0gIEZpbGVTdHJlYW0gZnM7Ci0gIGlm
ICghZnMuT3BlbigiL3Byb2MvbmV0L3JvdXRlIiwgInIiLCBudWxscHRyKSkgeworICBGSUxFKiBm
ID0gZm9wZW4oIi9wcm9jL25ldC9yb3V0ZSIsICJyIik7CisgIGlmICghZikgewogICAgIFJUQ19M
T0coTFNfV0FSTklORykKICAgICAgICAgPDwgIkNvdWxkbid0IHJlYWQgL3Byb2MvbmV0L3JvdXRl
LCBza2lwcGluZyBkZWZhdWx0ICIKICAgICAgICAgPDwgInJvdXRlIGNoZWNrIChhc3N1bWluZyBl
dmVyeXRoaW5nIGlzIGEgZGVmYXVsdCByb3V0ZSkuIjsKICAgICByZXR1cm4gdHJ1ZTsKLSAgfSBl
bHNlIHsKLSAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgIHdoaWxlIChmcy5SZWFkTGluZSgmbGlu
ZSkgPT0gU1JfU1VDQ0VTUykgewotICAgICAgY2hhciBpZmFjZV9uYW1lWzI1Nl07Ci0gICAgICB1
bnNpZ25lZCBpbnQgaWZhY2VfaXAsIGlmYWNlX2d3LCBpZmFjZV9tYXNrLCBpZmFjZV9mbGFnczsK
LSAgICAgIGlmIChzc2NhbmYobGluZS5jX3N0cigpLCAiJTI1NXMgJThYICU4WCAlNFggJSpkICUq
dSAlKmQgJThYIiwgaWZhY2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgJmlmYWNlX2lwLCAmaWZh
Y2VfZ3csICZpZmFjZV9mbGFncywgJmlmYWNlX21hc2spID09IDUgJiYKLSAgICAgICAgICBuZXR3
b3JrX25hbWUgPT0gaWZhY2VfbmFtZSAmJiBpZmFjZV9tYXNrID09IDAgJiYKLSAgICAgICAgICAo
aWZhY2VfZmxhZ3MgJiAoUlRGX1VQIHwgUlRGX0hPU1QpKSA9PSBSVEZfVVApIHsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICB9CisgIH0KKyAgYm9vbCBpc19kZWZhdWx0X3JvdXRlID0gZmFs
c2U7CisgIGNoYXIgbGluZVs1MDBdOworICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUp
LCBmKSkgeworICAgIGNoYXIgaWZhY2VfbmFtZVsyNTZdOworICAgIHVuc2lnbmVkIGludCBpZmFj
ZV9pcCwgaWZhY2VfZ3csIGlmYWNlX21hc2ssIGlmYWNlX2ZsYWdzOworICAgIGlmIChzc2NhbmYo
bGluZSwgIiUyNTVzICU4WCAlOFggJTRYICUqZCAlKnUgJSpkICU4WCIsIGlmYWNlX25hbWUsICZp
ZmFjZV9pcCwKKyAgICAgICAgICAgICAgICZpZmFjZV9ndywgJmlmYWNlX2ZsYWdzLCAmaWZhY2Vf
bWFzaykgPT0gNSAmJgorICAgICAgICBuZXR3b3JrX25hbWUgPT0gaWZhY2VfbmFtZSAmJiBpZmFj
ZV9tYXNrID09IDAgJiYKKyAgICAgICAgKGlmYWNlX2ZsYWdzICYgKFJURl9VUCB8IFJURl9IT1NU
KSkgPT0gUlRGX1VQKSB7CisgICAgICBpc19kZWZhdWx0X3JvdXRlID0gdHJ1ZTsKKyAgICAgIGJy
ZWFrOwogICAgIH0KICAgfQotICByZXR1cm4gZmFsc2U7CisgIGZjbG9zZShmKTsKKyAgcmV0dXJu
IGlzX2RlZmF1bHRfcm91dGU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29yay5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29yay5oCmlu
ZGV4IDYwMWUzOWYwMjc3MWQwMzI5M2U4ZDczMDA4YWM4M2Q0YjI3N2I3ODYuLjhiMWE1ZmNjNWMz
ZGVkMTE4M2JhODZiODAzN2RkOGQ4NmE5MGQ0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrLmgK
QEAgLTE0MSw3ICsxNDEsNyBAQCBjbGFzcyBOZXR3b3JrTWFuYWdlciA6IHB1YmxpYyBEZWZhdWx0
TG9jYWxBZGRyZXNzUHJvdmlkZXIgewogCiAgIC8vIFJldHVybnMgdGhlIG1ETlMgcmVzcG9uZGVy
IHRoYXQgY2FuIGJlIHVzZWQgdG8gb2JmdXNjYXRlIHRoZSBsb2NhbCBJUAogICAvLyBhZGRyZXNz
ZXMgb2YgSUNFIGhvc3QgY2FuZGlkYXRlcyBieSBtRE5TIGhvc3RuYW1lcy4KLSAgdmlydHVhbCB3
ZWJydGM6Ok1EbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1EbnNSZXNwb25kZXIoKSBjb25zdDsK
KyAgdmlydHVhbCB3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1kbnNSZXNwb25k
ZXIoKSBjb25zdDsKIH07CiAKIC8vIEJhc2UgY2xhc3MgZm9yIE5ldHdvcmtNYW5hZ2VyIGltcGxl
bWVudGF0aW9ucy4KQEAgLTM2NywxMSArMzY3LDExIEBAIGNsYXNzIE5ldHdvcmsgewogICAvLyBj
cmVhdGVkIG5hbWUgd2lsbCBiZSByZXNvbHZlZCBieSB0aGUgcmVzcG9uZGVyLgogICAvLwogICAv
LyBUaGUgbUROUyByZXNwb25kZXIsIGlmIG5vdCBudWxsLCBzaG91bGQgb3V0bGl2ZSB0aGlzIHJ0
Yzo6TmV0d29yay4KLSAgdm9pZCBTZXRNRG5zUmVzcG9uZGVyKHdlYnJ0Yzo6TURuc1Jlc3BvbmRl
ckludGVyZmFjZSogbWRuc19yZXNwb25kZXIpIHsKKyAgdm9pZCBTZXRNZG5zUmVzcG9uZGVyKHdl
YnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogbWRuc19yZXNwb25kZXIpIHsKICAgICBtZG5z
X3Jlc3BvbmRlcl8gPSBtZG5zX3Jlc3BvbmRlcjsKICAgfQogICAvLyBSZXR1cm5zIHRoZSBtRE5T
IHJlc3BvbmRlciwgd2hpY2ggaXMgbnVsbCBieSBkZWZhdWx0LgotICB3ZWJydGM6Ok1EbnNSZXNw
b25kZXJJbnRlcmZhY2UqIEdldE1EbnNSZXNwb25kZXIoKSBjb25zdCB7CisgIHdlYnJ0Yzo6TWRu
c1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IHsKICAgICByZXR1
cm4gbWRuc19yZXNwb25kZXJfOwogICB9CiAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBjbGFzcyBOZXR3
b3JrIHsKICAgaW50IHByZWZpeF9sZW5ndGhfOwogICBzdGQ6OnN0cmluZyBrZXlfOwogICBzdGQ6
OnZlY3RvcjxJbnRlcmZhY2VBZGRyZXNzPiBpcHNfOwotICB3ZWJydGM6Ok1EbnNSZXNwb25kZXJJ
bnRlcmZhY2UqIG1kbnNfcmVzcG9uZGVyXyA9IG51bGxwdHI7CisgIHdlYnJ0Yzo6TWRuc1Jlc3Bv
bmRlckludGVyZmFjZSogbWRuc19yZXNwb25kZXJfID0gbnVsbHB0cjsKICAgaW50IHNjb3BlX2lk
XzsKICAgYm9vbCBpZ25vcmVkXzsKICAgQWRhcHRlclR5cGUgdHlwZV87CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3Jr
L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbmV0d29yay9CVUlMRC5nbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZmJkYmIxZWRiYjBhZmMyNGUxZjRi
YjdjMTM1NDM2YTQ4ZWU4NDJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29yay9CVUlMRC5nbgpAQCAtMCww
ICsxLDE5IEBACisjIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyMgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
IyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisjIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorCitpbXBvcnQoIi4uLy4uL3dlYnJ0Yy5nbmkiKQorCitydGNfc291cmNlX3Nl
dCgic2VudF9wYWNrZXQiKSB7CisgIHNvdXJjZXMgPSBbCisgICAgInNlbnRfcGFja2V0LmNjIiwK
KyAgICAic2VudF9wYWNrZXQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICBdCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3Jr
L3NlbnRfcGFja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2M0OTczN2Vm
ZGVjYTcwODFlMTU1Y2RjNzU0MWU4MzVjMWMwYmVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29yay9zZW50
X3BhY2tldC5jYwpAQCAtMCwwICsxLDI3IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBX
ZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVk
ZSAicnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5oIgorCituYW1lc3BhY2UgcnRjIHsKKwor
UGFja2V0SW5mbzo6UGFja2V0SW5mbygpID0gZGVmYXVsdDsKK1BhY2tldEluZm86OlBhY2tldElu
Zm8oY29uc3QgUGFja2V0SW5mbyYgaW5mbykgPSBkZWZhdWx0OworUGFja2V0SW5mbzo6flBhY2tl
dEluZm8oKSA9IGRlZmF1bHQ7CisKK1NlbnRQYWNrZXQ6OlNlbnRQYWNrZXQoKSA9IGRlZmF1bHQ7
CitTZW50UGFja2V0OjpTZW50UGFja2V0KGludDY0X3QgcGFja2V0X2lkLCBpbnQ2NF90IHNlbmRf
dGltZV9tcykKKyAgICA6IHBhY2tldF9pZChwYWNrZXRfaWQpLCBzZW5kX3RpbWVfbXMoc2VuZF90
aW1lX21zKSB7fQorU2VudFBhY2tldDo6U2VudFBhY2tldChpbnQ2NF90IHBhY2tldF9pZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBzZW5kX3RpbWVfbXMsCisgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0SW5mbyYgaW5mbykKKyAgICA6IHBhY2tldF9pZChw
YWNrZXRfaWQpLCBzZW5kX3RpbWVfbXMoc2VuZF90aW1lX21zKSwgaW5mbyhpbmZvKSB7fQorCit9
ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrL3NlbnRf
cGFja2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNhZDMxY2E5MWMwZjg5MDJiYjRhZTRhOGRkZjQ3ODAxNGMx
YTQzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsvc2VudF9wYWNrZXQuaApAQCAtMCwwICsxLDY4IEBA
CisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19CQVNFX05FVFdPUktfU0VOVF9QQUNL
RVRfSF8KKyNkZWZpbmUgUlRDX0JBU0VfTkVUV09SS19TRU5UX1BBQ0tFVF9IXworCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCisKK25hbWVzcGFjZSBydGMgeworCitlbnVtIGNsYXNzIFBhY2tldFR5cGUg
eworICBrVW5rbm93biwKKyAga0RhdGEsCisgIGtJY2VDb25uZWN0aXZpdHlDaGVjaywKKyAga0lj
ZUNvbm5lY3Rpdml0eUNoZWNrUmVzcG9uc2UsCisgIGtTdHVuTWVzc2FnZSwKKyAga1R1cm5NZXNz
YWdlLAorfTsKKworZW51bSBjbGFzcyBQYWNrZXRJbmZvUHJvdG9jb2xUeXBlIHsKKyAga1Vua25v
d24sCisgIGtVZHAsCisgIGtUY3AsCisgIGtTc2x0Y3AsCisgIGtUbHMsCit9OworCitzdHJ1Y3Qg
UGFja2V0SW5mbyB7CisgIFBhY2tldEluZm8oKTsKKyAgUGFja2V0SW5mbyhjb25zdCBQYWNrZXRJ
bmZvJiBpbmZvKTsKKyAgflBhY2tldEluZm8oKTsKKworICBib29sIGluY2x1ZGVkX2luX2ZlZWRi
YWNrID0gZmFsc2U7CisgIGJvb2wgaW5jbHVkZWRfaW5fYWxsb2NhdGlvbiA9IGZhbHNlOworICBQ
YWNrZXRUeXBlIHBhY2tldF90eXBlID0gUGFja2V0VHlwZTo6a1Vua25vd247CisgIFBhY2tldElu
Zm9Qcm90b2NvbFR5cGUgcHJvdG9jb2wgPSBQYWNrZXRJbmZvUHJvdG9jb2xUeXBlOjprVW5rbm93
bjsKKyAgLy8gQSB1bmlxdWUgaWQgYXNzaWduZWQgYnkgdGhlIG5ldHdvcmsgbWFuYWdlciwgYW5k
IGFic2w6Om51bGxvcHQgaWYgbm90IHNldC4KKyAgYWJzbDo6b3B0aW9uYWw8dWludDE2X3Q+IG5l
dHdvcmtfaWQ7CisgIHNpemVfdCBwYWNrZXRfc2l6ZV9ieXRlcyA9IDA7CisgIHNpemVfdCB0dXJu
X292ZXJoZWFkX2J5dGVzID0gMDsKKyAgc2l6ZV90IGlwX292ZXJoZWFkX2J5dGVzID0gMDsKK307
CisKK3N0cnVjdCBTZW50UGFja2V0IHsKKyAgU2VudFBhY2tldCgpOworICBTZW50UGFja2V0KGlu
dDY0X3QgcGFja2V0X2lkLCBpbnQ2NF90IHNlbmRfdGltZV9tcyk7CisgIFNlbnRQYWNrZXQoaW50
NjRfdCBwYWNrZXRfaWQsCisgICAgICAgICAgICAgaW50NjRfdCBzZW5kX3RpbWVfbXMsCisgICAg
ICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRJbmZvJiBpbmZvKTsKKworICBpbnQ2NF90IHBhY2tl
dF9pZCA9IC0xOworICBpbnQ2NF90IHNlbmRfdGltZV9tcyA9IC0xOworICBydGM6OlBhY2tldElu
Zm8gaW5mbzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAvLyBSVENfQkFT
RV9ORVRXT1JLX1NFTlRfUEFDS0VUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrbW9uaXRvci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmttb25p
dG9yLmNjCmluZGV4IGFkNjgwNWFjZWM3ZTc5OGZmOGE5YzZlYTMzZGM5Nzc1NTgwY2JiYjAuLjAx
ODVlYWI4NTYxM2EzYjE5NTYxYTYxZmU0YWFjYTE2NWYzZmVjZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmttb25p
dG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL25ldHdvcmttb25pdG9yLmNjCkBAIC0xMCw3ICsxMCwxMSBAQAogCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbmV0d29ya21vbml0b3IuaCIKIAorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB7CiBjb25zdCB1aW50
MzJfdCBVUERBVEVfTkVUV09SS1NfTUVTU0FHRSA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrbW9uaXRvci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0
d29ya21vbml0b3IuaAppbmRleCBhODRhMzBhZWQyYmMzMzY4NjY1YjdkNDMxNDc3NWU2M2JmMDU1
NjFmLi4xYWQ3NjYzNjY5NmNjOGU2NmZlZGJiZWIwMWZiMjVlNjZjYzc3Y2FjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3
b3JrbW9uaXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL25ldHdvcmttb25pdG9yLmgKQEAgLTExLDcgKzExLDYgQEAKICNpZm5kZWYg
UlRDX0JBU0VfTkVUV09SS01PTklUT1JfSF8KICNkZWZpbmUgUlRDX0JBU0VfTkVUV09SS01PTklU
T1JfSF8KIAotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9uZXR3b3JrX2NvbnN0YW50cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3Np
Z3Nsb3Qvc2lnc2xvdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvbm9v
cC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L25vb3AuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YThlNmQ1YzEwYjk3MTM0
ZTY4YjA4ZTJjNjVlZjJmZmYxNmJkNTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvbm9vcC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS8qCi0gKiAg
Q29weXJpZ2h0IDIwMTUgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgotICovCi0KLS8vIFRoaXMgZmlsZSBpcyBvbmx5IG5lZWRlZCB0byBtYWtlIG5pbmphIGhh
cHB5IG9uIHNvbWUgcGxhdGZvcm1zLgotLy8gT24gc29tZSBwbGF0Zm9ybXMgaXQgaXMgbm90IHBv
c3NpYmxlIHRvIGxpbmsgYW4gcnRjX3N0YXRpY19saWJyYXJ5Ci0vLyB3aXRob3V0IGFueSBzb3Vy
Y2UgZmlsZSBsaXN0ZWQgaW4gdGhlIEdOIHRhcmdldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25vb3AubW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ub29wLm1tCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmE4ZTZkNWMxMGI5NzEzNGU2OGIwOGUyYzY1ZWYy
ZmZmMTZiZDUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25vb3Au
bW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE1
IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0v
LyBUaGlzIGZpbGUgaXMgb25seSBuZWVkZWQgdG8gbWFrZSBuaW5qYSBoYXBweSBvbiBzb21lIHBs
YXRmb3Jtcy4KLS8vIE9uIHNvbWUgcGxhdGZvcm1zIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBsaW5r
IGFuIHJ0Y19zdGF0aWNfbGlicmFyeQotLy8gd2l0aG91dCBhbnkgc291cmNlIGZpbGUgbGlzdGVk
IGluIHRoZSBHTiB0YXJnZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVsbHNvY2tldHNlcnZl
ci5jYwppbmRleCBjODkwYzZmM2RjZjY1M2Y5Njk0ZWZhNmJiYzVmYzgyOTkxY2FjOTFkLi5lYzA0
MmRkMDk1MTdkYzE4ZTdlMWUwNGI4NDlhZTUxNzg1MGEzMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udWxsc29ja2V0c2Vy
dmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIuY2MKQEAgLTEzLDcgKzEzLDcgQEAKIAogbmFtZXNwYWNl
IHJ0YyB7CiAKLU51bGxTb2NrZXRTZXJ2ZXI6Ok51bGxTb2NrZXRTZXJ2ZXIoKSA6IGV2ZW50Xyhm
YWxzZSwgZmFsc2UpIHt9CitOdWxsU29ja2V0U2VydmVyOjpOdWxsU29ja2V0U2VydmVyKCkgPSBk
ZWZhdWx0OwogTnVsbFNvY2tldFNlcnZlcjo6fk51bGxTb2NrZXRTZXJ2ZXIoKSB7fQogCiBib29s
IE51bGxTb2NrZXRTZXJ2ZXI6OldhaXQoaW50IGNtcywgYm9vbCBwcm9jZXNzX2lvKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9udWxsc29ja2V0c2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmgKaW5kZXggNDA4YmNkMWIyZjUxNjM2
MjFmMTMxMDE1YjZjNWY2ZGVmYWIzOWMxYS4uNDdhN2ZhNjExODcxYzQ0MjNkMjUxNmUzOThjOTQ4
MGM0ODVmODNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvbnVsbHNvY2tldHNlcnZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIuaApA
QCAtMTEsNyArMTEsOSBAQAogI2lmbmRlZiBSVENfQkFTRV9OVUxMU09DS0VUU0VSVkVSX0hfCiAj
ZGVmaW5lIFJUQ19CQVNFX05VTExTT0NLRVRTRVJWRVJfSF8KIAorI2luY2x1ZGUgInJ0Y19iYXNl
L2FzeW5jc29ja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9zb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRzZXJ2ZXIuaCIKIAog
bmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL21v
dmluZ19hdmVyYWdlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MjU4MzkyMjdlYmI4YTRhYWM3YzU5MTEzOGY2
MDk0MDUwOGQyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5jYwpAQCAt
MCwwICsxLDYwIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInJ0Y19iYXNl
L251bWVyaWNzL21vdmluZ19hdmVyYWdlLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKworbmFtZXNwYWNlIHJ0YyB7CisKK01vdmluZ0F2
ZXJhZ2U6Ok1vdmluZ0F2ZXJhZ2Uoc2l6ZV90IHdpbmRvd19zaXplKSA6IGhpc3RvcnlfKHdpbmRv
d19zaXplLCAwKSB7CisgIC8vIExpbWl0IHdpbmRvdyBzaXplIHRvIGF2b2lkIG92ZXJmbG93Lgor
ICBSVENfRENIRUNLX0xFKHdpbmRvd19zaXplLCAoaW50NjRfdHsxfSA8PCAzMikgLSAxKTsKK30K
K01vdmluZ0F2ZXJhZ2U6On5Nb3ZpbmdBdmVyYWdlKCkgPSBkZWZhdWx0OworCit2b2lkIE1vdmlu
Z0F2ZXJhZ2U6OkFkZFNhbXBsZShpbnQgc2FtcGxlKSB7CisgIGNvdW50XysrOworICBzaXplX3Qg
aW5kZXggPSBjb3VudF8gJSBoaXN0b3J5Xy5zaXplKCk7CisgIGlmIChjb3VudF8gPiBoaXN0b3J5
Xy5zaXplKCkpCisgICAgc3VtXyAtPSBoaXN0b3J5X1tpbmRleF07CisgIHN1bV8gKz0gc2FtcGxl
OworICBoaXN0b3J5X1tpbmRleF0gPSBzYW1wbGU7Cit9CisKK2Fic2w6Om9wdGlvbmFsPGludD4g
TW92aW5nQXZlcmFnZTo6R2V0QXZlcmFnZVJvdW5kZWREb3duKCkgY29uc3QgeworICBpZiAoY291
bnRfID09IDApCisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIHJldHVybiBzdW1fIC8gU2l6
ZSgpOworfQorCithYnNsOjpvcHRpb25hbDxpbnQ+IE1vdmluZ0F2ZXJhZ2U6OkdldEF2ZXJhZ2VS
b3VuZGVkVG9DbG9zZXN0KCkgY29uc3QgeworICBpZiAoY291bnRfID09IDApCisgICAgcmV0dXJu
IGFic2w6Om51bGxvcHQ7CisgIHJldHVybiAoc3VtXyArIFNpemUoKSAvIDIpIC8gU2l6ZSgpOwor
fQorCithYnNsOjpvcHRpb25hbDxkb3VibGU+IE1vdmluZ0F2ZXJhZ2U6OkdldFVucm91bmRlZEF2
ZXJhZ2UoKSBjb25zdCB7CisgIGlmIChjb3VudF8gPT0gMCkKKyAgICByZXR1cm4gYWJzbDo6bnVs
bG9wdDsKKyAgcmV0dXJuIHN1bV8gLyBzdGF0aWNfY2FzdDxkb3VibGU+KFNpemUoKSk7Cit9CisK
K3ZvaWQgTW92aW5nQXZlcmFnZTo6UmVzZXQoKSB7CisgIGNvdW50XyA9IDA7CisgIHN1bV8gPSAw
OworfQorCitzaXplX3QgTW92aW5nQXZlcmFnZTo6U2l6ZSgpIGNvbnN0IHsKKyAgcmV0dXJuIHN0
ZDo6bWluKGNvdW50XywgaGlzdG9yeV8uc2l6ZSgpKTsKK30KK30gIC8vIG5hbWVzcGFjZSBydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc3MGU0N2Q4NmY4MTI4ZmNmNzc3NGQ0YmM0NTA5Njc2OTc1YzYyYWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19CQVNFX05VTUVSSUNTX01PVklOR19BVkVS
QUdFX0hfCisjZGVmaW5lIFJUQ19CQVNFX05VTUVSSUNTX01PVklOR19BVkVSQUdFX0hfCisKKyNp
bmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisKK25h
bWVzcGFjZSBydGMgeworCisvLyBDYWxjdWxhdGVzIGF2ZXJhZ2Ugb3ZlciBmaXhlZCBzaXplIHdp
bmRvdy4gSWYgdGhlcmUgYXJlIGxlc3MgdGhhbiB3aW5kb3cKKy8vIHNpemUgZWxlbWVudHMsIGNh
bGN1bGF0ZXMgYXZlcmFnZSBvZiBhbGwgaW5zZXJ0ZWQgc28gZmFyIGVsZW1lbnRzLgorLy8KK2Ns
YXNzIE1vdmluZ0F2ZXJhZ2UgeworIHB1YmxpYzoKKyAgLy8gTWF4aW11bSBzdXBwb3J0ZWQgd2lu
ZG93IHNpemUgaXMgMl4zMiAtIDEuCisgIGV4cGxpY2l0IE1vdmluZ0F2ZXJhZ2Uoc2l6ZV90IHdp
bmRvd19zaXplKTsKKyAgfk1vdmluZ0F2ZXJhZ2UoKTsKKyAgLy8gTW92aW5nQXZlcmFnZSBpcyBu
ZWl0aGVyIGNvcHlhYmxlIG5vciBtb3ZhYmxlLgorICBNb3ZpbmdBdmVyYWdlKGNvbnN0IE1vdmlu
Z0F2ZXJhZ2UmKSA9IGRlbGV0ZTsKKyAgTW92aW5nQXZlcmFnZSYgb3BlcmF0b3I9KGNvbnN0IE1v
dmluZ0F2ZXJhZ2UmKSA9IGRlbGV0ZTsKKworICAvLyBBZGRzIG5ldyBzYW1wbGUuIElmIHRoZSB3
aW5kb3cgaXMgZnVsbCwgdGhlIG9sZGVzdCBlbGVtZW50IGlzIHB1c2hlZCBvdXQuCisgIHZvaWQg
QWRkU2FtcGxlKGludCBzYW1wbGUpOworCisgIC8vIFJldHVybnMgcm91bmRlZCBkb3duIGF2ZXJh
Z2Ugb2YgbGFzdCB8d2luZG93X3NpemV8IGVsZW1lbnRzIG9yIGFsbAorICAvLyBlbGVtZW50cyBp
ZiB0aGVyZSBhcmUgbm90IGVub3VnaCBvZiB0aGVtLiBSZXR1cm5zIG51bGxvcHQgaWYgdGhlcmUg
d2VyZQorICAvLyBubyBlbGVtZW50cyBhZGRlZC4KKyAgYWJzbDo6b3B0aW9uYWw8aW50PiBHZXRB
dmVyYWdlUm91bmRlZERvd24oKSBjb25zdDsKKworICAvLyBTYW1lIGFzIGFib3ZlIGJ1dCByb3Vu
ZGVkIHRvIHRoZSBjbG9zZXN0IGludGVnZXIuCisgIGFic2w6Om9wdGlvbmFsPGludD4gR2V0QXZl
cmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSBjb25zdDsKKworICAvLyBSZXR1cm5zIHVucm91bmRlZCBh
dmVyYWdlIG92ZXIgdGhlIHdpbmRvdy4KKyAgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPiBHZXRVbnJv
dW5kZWRBdmVyYWdlKCkgY29uc3Q7CisKKyAgLy8gUmVzZXRzIHRvIHRoZSBpbml0aWFsIHN0YXRl
IGJlZm9yZSBhbnkgZWxlbWVudHMgd2VyZSBhZGRlZC4KKyAgdm9pZCBSZXNldCgpOworCisgIC8v
IFJldHVybnMgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB3aW5kb3cuCisgIHNpemVfdCBTaXpl
KCkgY29uc3Q7CisKKyBwcml2YXRlOgorICAvLyBUb3RhbCBudW1iZXIgb2Ygc2FtcGxlcyBhZGRl
ZCB0byB0aGUgY2xhc3Mgc2luY2UgbGFzdCByZXNldC4KKyAgc2l6ZV90IGNvdW50XyA9IDA7Cisg
IC8vIFN1bSBvZiB0aGUgc2FtcGxlcyBpbiB0aGUgbW92aW5nIHdpbmRvdy4KKyAgaW50NjRfdCBz
dW1fID0gMDsKKyAgLy8gQ2lyY3VsYXIgYnVmZmVyIGZvciBhbGwgdGhlIHNhbXBsZXMgaW4gdGhl
IG1vdmluZyB3aW5kb3cuCisgIC8vIFNpemUgaXMgYWx3YXlzIHx3aW5kb3dfc2l6ZXwKKyAgc3Rk
Ojp2ZWN0b3I8aW50PiBoaXN0b3J5XzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBydGMKKyNlbmRp
ZiAgLy8gUlRDX0JBU0VfTlVNRVJJQ1NfTU9WSU5HX0FWRVJBR0VfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNz
L21vdmluZ19hdmVyYWdlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2VfdW5pdHRlc3Qu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWJjOWExYWVmODlhMTRiYTkzNjZiZTg4OGZkMjJiMmQxMzk2MDk1OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlX3VuaXR0ZXN0LmNjCkBAIC0wLDAg
KzEsODcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVt
ZXJpY3MvbW92aW5nX2F2ZXJhZ2UuaCIKKworI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFt
ZXNwYWNlIHRlc3QgeworCitURVNUKE1vdmluZ0F2ZXJhZ2VUZXN0LCBFbXB0eUF2ZXJhZ2UpIHsK
KyAgcnRjOjpNb3ZpbmdBdmVyYWdlIG1vdmluZ19hdmVyYWdlKDEpOworICBFWFBFQ1RfRVEoMHUs
IG1vdmluZ19hdmVyYWdlLlNpemUoKSk7CisgIEVYUEVDVF9FUShhYnNsOjpudWxsb3B0LCBtb3Zp
bmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSk7Cit9CisKKy8vIFRlc3Qgc2luZ2xl
IHZhbHVlLgorVEVTVChNb3ZpbmdBdmVyYWdlVGVzdCwgT25lRWxlbWVudCkgeworICBydGM6Ok1v
dmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMSk7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBs
ZSgzKTsKKyAgRVhQRUNUX0VRKDF1LCBtb3ZpbmdfYXZlcmFnZS5TaXplKCkpOworICBFWFBFQ1Rf
RVEoMywgKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVkRG93bigpKTsKK30KKworVEVT
VChNb3ZpbmdBdmVyYWdlVGVzdCwgR2V0QXZlcmFnZSkgeworICBydGM6Ok1vdmluZ0F2ZXJhZ2Ug
bW92aW5nX2F2ZXJhZ2UoMTAyNCk7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgxKTsKKyAg
bW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDEpOworICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUo
Myk7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgzKTsKKyAgRVhQRUNUX0VRKCptb3Zpbmdf
YXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSwgMik7CisgIEVYUEVDVF9FUSgqbW92aW5n
X2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSwgMik7Cit9CisKK1RFU1QoTW92
aW5nQXZlcmFnZVRlc3QsIEdldEF2ZXJhZ2VSb3VuZGVkRG93blJvdW5kcykgeworICBydGM6Ok1v
dmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMTAyNCk7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNh
bXBsZSgxKTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDIpOworICBtb3ZpbmdfYXZlcmFn
ZS5BZGRTYW1wbGUoMik7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgyKTsKKyAgRVhQRUNU
X0VRKCptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSwgMSk7Cit9CisKK1RF
U1QoTW92aW5nQXZlcmFnZVRlc3QsIEdldEF2ZXJhZ2VSb3VuZGVkVG9DbG9zZXN0Um91bmRzKSB7
CisgIHJ0Yzo6TW92aW5nQXZlcmFnZSBtb3ZpbmdfYXZlcmFnZSgxMDI0KTsKKyAgbW92aW5nX2F2
ZXJhZ2UuQWRkU2FtcGxlKDEpOworICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoMik7CisgIG1v
dmluZ19hdmVyYWdlLkFkZFNhbXBsZSgyKTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDIp
OworICBFWFBFQ1RfRVEoKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVkVG9DbG9zZXN0
KCksIDIpOworfQorCitURVNUKE1vdmluZ0F2ZXJhZ2VUZXN0LCBSZXNldCkgeworICBydGM6Ok1v
dmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoNSk7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBs
ZSgxKTsKKyAgRVhQRUNUX0VRKDEsICptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERv
d24oKSk7CisgIEVYUEVDVF9FUSgxLCAqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWRU
b0Nsb3Nlc3QoKSk7CisKKyAgbW92aW5nX2F2ZXJhZ2UuUmVzZXQoKTsKKworICBFWFBFQ1RfRkFM
U0UobW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWREb3duKCkpOworICBtb3ZpbmdfYXZl
cmFnZS5BZGRTYW1wbGUoMTApOworICBFWFBFQ1RfRVEoMTAsICptb3ZpbmdfYXZlcmFnZS5HZXRB
dmVyYWdlUm91bmRlZERvd24oKSk7CisgIEVYUEVDVF9FUSgxMCwgKm1vdmluZ19hdmVyYWdlLkdl
dEF2ZXJhZ2VSb3VuZGVkVG9DbG9zZXN0KCkpOworfQorCitURVNUKE1vdmluZ0F2ZXJhZ2VUZXN0
LCBNYW55U2FtcGxlcykgeworICBydGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMTAp
OworICBmb3IgKGludCBpID0gMTsgaSA8IDExOyBpKyspIHsKKyAgICBtb3ZpbmdfYXZlcmFnZS5B
ZGRTYW1wbGUoaSk7CisgIH0KKyAgRVhQRUNUX0VRKCptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdl
Um91bmRlZERvd24oKSwgNSk7CisgIEVYUEVDVF9FUSgqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFn
ZVJvdW5kZWRUb0Nsb3Nlc3QoKSwgNik7CisgIGZvciAoaW50IGkgPSAxOyBpIDwgMjAwMTsgaSsr
KSB7CisgICAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKGkpOworICB9CisgIEVYUEVDVF9FUSgq
bW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWREb3duKCksIDE5OTUpOworICBFWFBFQ1Rf
RVEoKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVkVG9DbG9zZXN0KCksIDE5OTYpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3Mvc2FtcGxlX2NvdW50ZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251
bWVyaWNzL3NhbXBsZV9jb3VudGVyLmgKaW5kZXggNGZlNzFkMTk0MjdhMjNlZTIyOWVjZjRkMjFi
NjE3MTBkODUwODBlZS4uMThiZDM2YjhmMzA1MmE2NTJhMWFhN2JlOTg2ZDZkYjNjOTcxNzkyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbnVtZXJpY3Mvc2FtcGxlX2NvdW50ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9zYW1wbGVfY291bnRlci5o
CkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIFJUQ19CQVNFX05VTUVSSUNTX1NBTVBMRV9DT1VO
VEVSX0hfCiAjZGVmaW5lIFJUQ19CQVNFX05VTUVSSUNTX1NBTVBMRV9DT1VOVEVSX0hfCiAKKyNp
bmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKIAog
bmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Ns
X2tleV9kZXJpdmF0aW9uX2hrZGYuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJhZjY2NzY0NWIzOWVlNzcwM2Nl
N2I3NGZmMjA0NTViOWU4YWNhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2YXRpb25f
aGtkZi5jYwpAQCAtMCwwICsxLDcwIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJS
VEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmgiCisKKyNpbmNsdWRlIDxvcGVu
c3NsL2RpZ2VzdC5oPgorI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisjaW5jbHVkZSA8b3BlbnNz
bC9oa2RmLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KKworI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbC5oIgorCituYW1lc3BhY2UgcnRjIHsKKworT3BlblNT
TEtleURlcml2YXRpb25IS0RGOjpPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYoKSA9IGRlZmF1bHQ7
CitPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREY6On5PcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYoKSA9
IGRlZmF1bHQ7CisKK2NvbnN0IHNpemVfdCBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREY6OmtNaW5L
ZXlCeXRlU2l6ZSA9IDE2OworY29uc3Qgc2l6ZV90IE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERjo6
a01heEtleUJ5dGVTaXplID0KKyAgICAyNTUgKiBTSEEyNTZfRElHRVNUX0xFTkdUSDsKK2NvbnN0
IHNpemVfdCBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREY6OmtNaW5TZWNyZXRCeXRlU2l6ZSA9IDE2
OworCithYnNsOjpvcHRpb25hbDxaZXJvT25GcmVlQnVmZmVyPHVpbnQ4X3Q+PiBPcGVuU1NMS2V5
RGVyaXZhdGlvbkhLREY6OkRlcml2ZUtleSgKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50
OF90PiBzZWNyZXQsCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gc2FsdCwKKyAg
ICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBsYWJlbCwKKyAgICBzaXplX3QgZGVyaXZl
ZF9rZXlfYnl0ZV9zaXplKSB7CisgIC8vIFByZXZlbnQgZGVyaXZpbmcgbGVzcyB0aGFuIDEyOCBi
aXRzIG9mIGtleSBtYXRlcmlhbCBvciBtb3JlIHRoYW4gdGhlIG1heC4KKyAgaWYgKGRlcml2ZWRf
a2V5X2J5dGVfc2l6ZSA8IGtNaW5LZXlCeXRlU2l6ZSB8fAorICAgICAgZGVyaXZlZF9rZXlfYnl0
ZV9zaXplID4ga01heEtleUJ5dGVTaXplKSB7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7Cisg
IH0KKyAgLy8gVGhlIHNlY3JldCBtdXN0IHJlYWNoIHRoZSBtaW5pbXVtIG51bWJlciBvZiBiaXRz
IHRvIGJlIHNlY3VyZS4KKyAgaWYgKHNlY3JldC5kYXRhKCkgPT0gbnVsbHB0ciB8fCBzZWNyZXQu
c2l6ZSgpIDwga01pblNlY3JldEJ5dGVTaXplKSB7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7
CisgIH0KKyAgLy8gRW1wdHkgbGFiZWxzIGFyZSBhbHdheXMgaW52YWxpZCBpbiBkZXJpdmF0aW9u
LgorICBpZiAobGFiZWwuZGF0YSgpID09IG51bGxwdHIgfHwgbGFiZWwuc2l6ZSgpID09IDApIHsK
KyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorICAvLyBJZiBhIHJhbmRvbSBzYWx0IGlz
IG5vdCBwcm92aWRlZCB1c2UgYWxsIHplcm9zLgorICBydGM6OkJ1ZmZlciBzYWx0X2J1ZmZlcjsK
KyAgaWYgKHNhbHQuZGF0YSgpID09IG51bGxwdHIgfHwgc2FsdC5zaXplKCkgPT0gMCkgeworICAg
IHNhbHRfYnVmZmVyLlNldFNpemUoU0hBMjU2X0RJR0VTVF9MRU5HVEgpOworICAgIHN0ZDo6Zmls
bChzYWx0X2J1ZmZlci5iZWdpbigpLCBzYWx0X2J1ZmZlci5lbmQoKSwgMCk7CisgICAgc2FsdCA9
IHNhbHRfYnVmZmVyOworICB9CisgIC8vIFRoaXMgYnVmZmVyIHdpbGwgZXJhc2UgaXRzZWxmIG9u
IHJlbGVhc2UuCisgIFplcm9PbkZyZWVCdWZmZXI8dWludDhfdD4gZGVyaXZlZF9rZXlfYnVmZmVy
KGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSwgMCk7CisgIGlmICghSEtERihkZXJpdmVkX2tleV9idWZm
ZXIuZGF0YSgpLCBkZXJpdmVkX2tleV9idWZmZXIuc2l6ZSgpLCBFVlBfc2hhMjU2KCksCisgICAg
ICAgICAgICBzZWNyZXQuZGF0YSgpLCBzZWNyZXQuc2l6ZSgpLCBzYWx0LmRhdGEoKSwgc2FsdC5z
aXplKCksCisgICAgICAgICAgICBsYWJlbC5kYXRhKCksIGxhYmVsLnNpemUoKSkpIHsKKyAgICBy
ZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorICByZXR1cm4gYWJzbDo6b3B0aW9uYWw8WmVyb09u
RnJlZUJ1ZmZlcjx1aW50OF90Pj4oCisgICAgICBzdGQ6Om1vdmUoZGVyaXZlZF9rZXlfYnVmZmVy
KSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2YXRp
b25faGtkZi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJmNDNjZmFh
N2FiYWQ3YTlhMTFhYTVkNTA5NmU4MWVmYTFlZTU5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xfa2V5
X2Rlcml2YXRpb25faGtkZi5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIw
MTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
KyNpZm5kZWYgUlRDX0JBU0VfT1BFTlNTTF9LRVlfREVSSVZBVElPTl9IS0RGX0hfCisjZGVmaW5l
IFJUQ19CQVNFX09QRU5TU0xfS0VZX0RFUklWQVRJT05fSEtERl9IXworCisjaW5jbHVkZSAicnRj
X2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2tleV9kZXJpdmF0
aW9uLmgiCisKK25hbWVzcGFjZSBydGMgeworCisvLyBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYg
cHJvdmlkZXMgYSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKKy8vIEtleURlcml2YXRp
b24gaW50ZXJmYWNlIHRvIHN1cHBvcnQgdGhlIEhLREYgYWxnb3JpdGhtIHVzaW5nIHRoZQorLy8g
T3BlblNTTC9Cb3JpbmdTU0wgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uCitjbGFzcyBPcGVuU1NM
S2V5RGVyaXZhdGlvbkhLREYgZmluYWwgOiBwdWJsaWMgS2V5RGVyaXZhdGlvbiB7CisgcHVibGlj
OgorICBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYoKTsKKyAgfk9wZW5TU0xLZXlEZXJpdmF0aW9u
SEtERigpIG92ZXJyaWRlOworCisgIC8vIEdlbmVyYWwgdXNlcnMgc2hvdWxkbid0IGJlIGdlbmVy
YXRpbmcga2V5cyBzbWFsbGVyIHRoYW4gMTI4IGJpdHMuCisgIHN0YXRpYyBjb25zdCBzaXplX3Qg
a01pbktleUJ5dGVTaXplOworICAvLyBUaGUgbWF4aW11bSBhdmFpbGFibGUgZGVyaXZhdGlvbiBz
aXplIDI1NSpESUdFU1RfTEVOR1RICisgIHN0YXRpYyBjb25zdCBzaXplX3Qga01heEtleUJ5dGVT
aXplOworICAvLyBUaGUgbWluaW11bSBhY2NlcHRhYmxlIHNlY3JldCBzaXplLgorICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGtNaW5TZWNyZXRCeXRlU2l6ZTsKKworICAvLyBEZXJpdmVzIGEgbmV3IGtl
eSBmcm9tIGV4aXN0aW5nIGtleSBtYXRlcmlhbCB1c2luZyBIS0RGLgorICAvLyBzZWNyZXQgLSBU
aGUgcmFuZG9tIHNlY3JldCB2YWx1ZSB5b3Ugd2lzaCB0byBkZXJpdmUgYSBrZXkgZnJvbS4KKyAg
Ly8gc2FsdCAtIE9wdGlvbmFsIChub24gc2VjcmV0KSBjcnlwdG9ncmFwaGljYWxseSByYW5kb20g
dmFsdWUuCisgIC8vIGxhYmVsIC0gQSBub24gc2VjcmV0IGJ1dCB1bmlxdWUgbGFiZWwgdmFsdWUg
dG8gZGV0ZXJtaW5lIHRoZSBkZXJpdmF0aW9uLgorICAvLyBkZXJpdmVkX2tleV9ieXRlX3NpemUg
LSBUaGUgc2l6ZSBvZiB0aGUgZGVyaXZlZCBrZXkuCisgIC8vIHJldHVybiAtIEEgWmVyb09uRnJl
ZUJ1ZmZlciBjb250YWluaW5nIHRoZSBkZXJpdmVkIGtleSBvciBhbiBlcnJvcgorICAvLyBjb25k
aXRpb24uIENoZWNraW5nIGVycm9yIGNvZGVzIGlzIGV4cGxpY2l0IGluIHRoZSBBUEkgYW5kIGVy
cm9yIHNob3VsZAorICAvLyBuZXZlciBiZSBpZ25vcmVkLgorICBhYnNsOjpvcHRpb25hbDxaZXJv
T25GcmVlQnVmZmVyPHVpbnQ4X3Q+PiBEZXJpdmVLZXkoCisgICAgICBydGM6OkFycmF5Vmlldzxj
b25zdCB1aW50OF90PiBzZWNyZXQsCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90
PiBzYWx0LAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gbGFiZWwsCisgICAg
ICBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKSBvdmVycmlkZTsKKworIHByaXZhdGU6Cisg
IFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oT3BlblNTTEtleURlcml2YXRpb25IS0RGKTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAvLyBSVENfQkFTRV9PUEVOU1NM
X0tFWV9ERVJJVkFUSU9OX0hLREZfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtk
Zl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZl91bml0dGVzdC5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45MmRmNDJmZmQzMGQ2YjRmZDM1OWMxNGIxM2QzODgzZGVhOWFmNGRiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsMTA3
IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbF9rZXlf
ZGVyaXZhdGlvbl9oa2RmLmgiCisKKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAidGVz
dC9nbW9jay5oIgorCituYW1lc3BhY2UgcnRjIHsKK25hbWVzcGFjZSB7CisKKy8vIFZhbGlkYXRl
cyB0aGF0IGEgYmFzaWMgdmFsaWQgY2FsbCB3b3JrcyBjb3JyZWN0bHkuCitURVNUKE9wZW5TU0xL
ZXlEZXJpdmF0aW9uSEtERiwgRGVyaXZhdGlvbkJhc2ljVGVzdCkgeworICBydGM6OkJ1ZmZlciBz
ZWNyZXQoMzIpOworICBydGM6OkJ1ZmZlciBzYWx0KDMyKTsKKyAgcnRjOjpCdWZmZXIgbGFiZWwo
MzIpOworICBjb25zdCBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9zaXplID0gMTY7CisKKyAgT3Bl
blNTTEtleURlcml2YXRpb25IS0RGIGhrZGY7CisgIGF1dG8ga2V5X29yID0gaGtkZi5EZXJpdmVL
ZXkoc2VjcmV0LCBzYWx0LCBsYWJlbCwgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKTsKKyAgRVhQRUNU
X1RSVUUoa2V5X29yLmhhc192YWx1ZSgpKTsKKyAgWmVyb09uRnJlZUJ1ZmZlcjx1aW50OF90PiBr
ZXkgPSBzdGQ6Om1vdmUoa2V5X29yLnZhbHVlKCkpOworICBFWFBFQ1RfRVEoZGVyaXZlZF9rZXlf
Ynl0ZV9zaXplLCBrZXkuc2l6ZSgpKTsKK30KKworLy8gRGVyaXZhdGlvbiBmYWlscyBpZiBvdXRw
dXQgaXMgdG9vIHNtYWxsLgorVEVTVChPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYsIERlcml2YXRp
b25GYWlsc0lmT3V0cHV0SXNUb29TbWFsbCkgeworICBydGM6OkJ1ZmZlciBzZWNyZXQoMzIpOwor
ICBydGM6OkJ1ZmZlciBzYWx0KDMyKTsKKyAgcnRjOjpCdWZmZXIgbGFiZWwoMzIpOworICBjb25z
dCBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9zaXplID0gMTU7CisKKyAgT3BlblNTTEtleURlcml2
YXRpb25IS0RGIGhrZGY7CisgIGF1dG8ga2V5X29yID0gaGtkZi5EZXJpdmVLZXkoc2VjcmV0LCBz
YWx0LCBsYWJlbCwgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKTsKKyAgRVhQRUNUX0ZBTFNFKGtleV9v
ci5oYXNfdmFsdWUoKSk7Cit9CisKKy8vIERlcml2YXRpb24gZmFpbHMgaWYgb3V0cHV0IGlzIHRv
byBsYXJnZS4KK1RFU1QoT3BlblNTTEtleURlcml2YXRpb25IS0RGLCBEZXJpdmF0aW9uRmFpbHNJ
Zk91dHB1dElzVG9vTGFyZ2UpIHsKKyAgcnRjOjpCdWZmZXIgc2VjcmV0KDMyKTsKKyAgcnRjOjpC
dWZmZXIgc2FsdCgzMik7CisgIHJ0Yzo6QnVmZmVyIGxhYmVsKDMyKTsKKyAgY29uc3Qgc2l6ZV90
IGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSA9IDI1NiAqIDMyOworCisgIE9wZW5TU0xLZXlEZXJpdmF0
aW9uSEtERiBoa2RmOworICBhdXRvIGtleV9vciA9IGhrZGYuRGVyaXZlS2V5KHNlY3JldCwgc2Fs
dCwgbGFiZWwsIGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSk7CisgIEVYUEVDVF9GQUxTRShrZXlfb3Iu
aGFzX3ZhbHVlKCkpOworfQorCisvLyBWYWxpZGF0ZXMgdGhhdCB0b28gbGl0dGxlIGtleSBtYXRl
cmlhbCBjYXVzZXMgYSBmYWlsdXJlLgorVEVTVChPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYsIERl
cml2YXRpb25GYWlsc1dpdGhJbnZhbGlkU2VjcmV0KSB7CisgIHJ0Yzo6QnVmZmVyIHNlY3JldCgx
NSk7CisgIHJ0Yzo6QnVmZmVyIHNhbHQoMzIpOworICBydGM6OkJ1ZmZlciBsYWJlbCgzMik7Cisg
IGNvbnN0IHNpemVfdCBkZXJpdmVkX2tleV9ieXRlX3NpemUgPSAxNjsKKworICBPcGVuU1NMS2V5
RGVyaXZhdGlvbkhLREYgaGtkZjsKKyAgYXV0byBrZXlfb3JfMCA9IGhrZGYuRGVyaXZlS2V5KHNl
Y3JldCwgc2FsdCwgbGFiZWwsIGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSk7CisgIEVYUEVDVF9GQUxT
RShrZXlfb3JfMC5oYXNfdmFsdWUoKSk7CisKKyAgYXV0byBrZXlfb3JfMSA9IGhrZGYuRGVyaXZl
S2V5KG51bGxwdHIsIHNhbHQsIGxhYmVsLCBkZXJpdmVkX2tleV9ieXRlX3NpemUpOworICBFWFBF
Q1RfRkFMU0Uoa2V5X29yXzEuaGFzX3ZhbHVlKCkpOworCisgIHJ0Yzo6QnVmZmVyIHNlY3JldF9l
bXB0eTsKKyAgYXV0byBrZXlfb3JfMiA9CisgICAgICBoa2RmLkRlcml2ZUtleShzZWNyZXRfZW1w
dHksIHNhbHQsIGxhYmVsLCBkZXJpdmVkX2tleV9ieXRlX3NpemUpOworICBFWFBFQ1RfRkFMU0Uo
a2V5X29yXzIuaGFzX3ZhbHVlKCkpOworfQorCisvLyBWYWxpZGF0ZXMgdGhhdCBIS0RGIHdvcmtz
IHdpdGhvdXQgYSBzYWx0IGJlaW5nIHNldC4KK1RFU1QoT3BlblNTTEtleURlcml2YXRpb25IS0RG
LCBEZXJpdmF0aW9uV29ya3NXaXRoTm9TYWx0KSB7CisgIHJ0Yzo6QnVmZmVyIHNlY3JldCgzMik7
CisgIHJ0Yzo6QnVmZmVyIGxhYmVsKDMyKTsKKyAgY29uc3Qgc2l6ZV90IGRlcml2ZWRfa2V5X2J5
dGVfc2l6ZSA9IDE2OworCisgIE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERiBoa2RmOworICBhdXRv
IGtleV9vciA9IGhrZGYuRGVyaXZlS2V5KHNlY3JldCwgbnVsbHB0ciwgbGFiZWwsIGRlcml2ZWRf
a2V5X2J5dGVfc2l6ZSk7CisgIEVYUEVDVF9UUlVFKGtleV9vci5oYXNfdmFsdWUoKSk7Cit9CisK
Ky8vIFZhbGlkYXRlcyB0aGF0IGEgbGFiZWwgaXMgcmVxdWlyZWQgdG8gd29yayBjb3JyZWN0bHku
CitURVNUKE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERiwgRGVyaXZhdGlvblJlcXVpcmVzTGFiZWwp
IHsKKyAgcnRjOjpCdWZmZXIgc2VjcmV0KDMyKTsKKyAgcnRjOjpCdWZmZXIgc2FsdCgzMik7Cisg
IHJ0Yzo6QnVmZmVyIGxhYmVsKDEpOworICBjb25zdCBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9z
aXplID0gMTY7CisKKyAgT3BlblNTTEtleURlcml2YXRpb25IS0RGIGhrZGY7CisgIGF1dG8ga2V5
X29yXzAgPSBoa2RmLkRlcml2ZUtleShzZWNyZXQsIHNhbHQsIGxhYmVsLCBkZXJpdmVkX2tleV9i
eXRlX3NpemUpOworICBFWFBFQ1RfVFJVRShrZXlfb3JfMC5oYXNfdmFsdWUoKSk7CisgIFplcm9P
bkZyZWVCdWZmZXI8dWludDhfdD4ga2V5ID0gc3RkOjptb3ZlKGtleV9vcl8wLnZhbHVlKCkpOwor
ICBFWFBFQ1RfRVEoa2V5LnNpemUoKSwgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKTsKKworICBhdXRv
IGtleV9vcl8xID0gaGtkZi5EZXJpdmVLZXkoc2VjcmV0LCBzYWx0LCBudWxscHRyLCBkZXJpdmVk
X2tleV9ieXRlX3NpemUpOworICBFWFBFQ1RfRkFMU0Uoa2V5X29yXzEuaGFzX3ZhbHVlKCkpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xh
ZGFwdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuY2MKaW5kZXggNTAyODRhNjcxOWZlNDUxNDZhY2U5MjY2ZTBm
OWNiZGIzYmQ2MzNkOC4uZmNmYTUzYjdlZTcwZDg0ZWMxYmFhZDAwYjg2NzQ1NGU0MzEzOTAxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuY2MKQEAgLTEwLDI1ICsxMCwy
NSBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuaCIKIAotI2lmIGRlZmlu
ZWQoV0VCUlRDX1BPU0lYKQotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCisjaW5jbHVkZSA8
ZXJybm8uaD4KIAogI2luY2x1ZGUgPG9wZW5zc2wvYmlvLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9j
cnlwdG8uaD4KICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotI2luY2x1ZGUgPG9wZW5zc2wvb3Bl
bnNzbHYuaD4KICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KICNpbmNsdWRlIDxvcGVuc3NsL3g1
MDkuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3g1MDl2My5oPgogI2luY2x1ZGUgInJ0Y19iYXNlL29w
ZW5zc2wuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKworI2lu
Y2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9vcGVuc3NsdXRpbGl0eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
dGhyZWFkLmgiCiAKICNpZm5kZWYgT1BFTlNTTF9JU19CT1JJTkdTU0wKQEAgLTM5MiwxNSArMzky
LDE3IEBAIGludCBPcGVuU1NMQWRhcHRlcjo6QmVnaW5TU0woKSB7CiAKICAgLy8gRG8gdGhlIGNv
bm5lY3QuCiAgIGVyciA9IENvbnRpbnVlU1NMKCk7Ci0gIGlmIChlcnIgIT0gMCkKKyAgaWYgKGVy
ciAhPSAwKSB7CiAgICAgZ290byBzc2xfZXJyb3I7CisgIH0KIAogICByZXR1cm4gZXJyOwogCiBz
c2xfZXJyb3I6CiAgIENsZWFudXAoKTsKLSAgaWYgKGJpbykKKyAgaWYgKGJpbykgewogICAgIEJJ
T19mcmVlKGJpbyk7CisgIH0KIAogICByZXR1cm4gZXJyOwogfQpAQCAtNDI0LDE0ICs0MjYsMTMg
QEAgaW50IE9wZW5TU0xBZGFwdGVyOjpDb250aW51ZVNTTCgpIHsKIAogICAgICAgc3RhdGVfID0g
U1NMX0NPTk5FQ1RFRDsKICAgICAgIEFzeW5jU29ja2V0QWRhcHRlcjo6T25Db25uZWN0RXZlbnQo
dGhpcyk7Ci0jaWYgMCAgLy8gVE9ETyhiZW53cmlnaHQpOiB3b3JyeSBhYm91dCB0aGlzCi0gICAg
Ly8gRG9uJ3QgbGV0IG91cnNlbHZlcyBnbyBhd2F5IGR1cmluZyB0aGUgY2FsbGJhY2tzCi0gICAg
UFJlZlB0cjxPcGVuU1NMQWRhcHRlcj4gbG9jayh0aGlzKTsKLSAgICBSVENfTE9HKExTX0lORk8p
IDw8ICIgLS0gb25TdHJlYW1SZWFkYWJsZSI7Ci0gICAgQXN5bmNTb2NrZXRBZGFwdGVyOjpPblJl
YWRFdmVudCh0aGlzKTsKLSAgICBSVENfTE9HKExTX0lORk8pIDw8ICIgLS0gb25TdHJlYW1Xcml0
ZWFibGUiOwotICAgIEFzeW5jU29ja2V0QWRhcHRlcjo6T25Xcml0ZUV2ZW50KHRoaXMpOwotI2Vu
ZGlmCisgICAgICAvLyBUT0RPKGJlbndyaWdodCk6IFJlZmFjdG9yIHRoaXMgY29kZSBwYXRoLgor
ICAgICAgLy8gRG9uJ3QgbGV0IG91cnNlbHZlcyBnbyBhd2F5IGR1cmluZyB0aGUgY2FsbGJhY2tz
CisgICAgICAvLyBQUmVmUHRyPE9wZW5TU0xBZGFwdGVyPiBsb2NrKHRoaXMpOworICAgICAgLy8g
UlRDX0xPRyhMU19JTkZPKSA8PCAiIC0tIG9uU3RyZWFtUmVhZGFibGUiOworICAgICAgLy8gQXN5
bmNTb2NrZXRBZGFwdGVyOjpPblJlYWRFdmVudCh0aGlzKTsKKyAgICAgIC8vIFJUQ19MT0coTFNf
SU5GTykgPDwgIiAtLSBvblN0cmVhbVdyaXRlYWJsZSI7CisgICAgICAvLyBBc3luY1NvY2tldEFk
YXB0ZXI6Ok9uV3JpdGVFdmVudCh0aGlzKTsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTU0xf
RVJST1JfV0FOVF9SRUFEOgpAQCAtNDYyLDggKzQ2Myw5IEBAIHZvaWQgT3BlblNTTEFkYXB0ZXI6
OkVycm9yKGNvbnN0IGNoYXIqIGNvbnRleHQsIGludCBlcnIsIGJvb2wgc2lnbmFsKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIikiOwogICBzdGF0ZV8gPSBTU0xfRVJST1I7CiAgIFNldEVy
cm9yKGVycik7Ci0gIGlmIChzaWduYWwpCisgIGlmIChzaWduYWwpIHsKICAgICBBc3luY1NvY2tl
dEFkYXB0ZXI6Ok9uQ2xvc2VFdmVudCh0aGlzLCBlcnIpOworICB9CiB9CiAKIHZvaWQgT3BlblNT
TEFkYXB0ZXI6OkNsZWFudXAoKSB7CkBAIC01MjgsMjMgKzUzMCwyMCBAQCBpbnQgT3BlblNTTEFk
YXB0ZXI6OkRvU3NsV3JpdGUoY29uc3Qgdm9pZCogcHYsIHNpemVfdCBjYiwgaW50KiBlcnJvcikg
ewogICByZXR1cm4gU09DS0VUX0VSUk9SOwogfQogCi0vLworLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwogLy8gQXN5bmNTb2NrZXQgSW1wbGVtZW50YXRpb24KLS8vCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCiAKIGludCBPcGVuU1NMQWRhcHRlcjo6U2VuZChjb25zdCB2b2lkKiBwdiwgc2l6ZV90IGNi
KSB7CiAgIHN3aXRjaCAoc3RhdGVfKSB7CiAgICAgY2FzZSBTU0xfTk9ORToKICAgICAgIHJldHVy
biBBc3luY1NvY2tldEFkYXB0ZXI6OlNlbmQocHYsIGNiKTsKLQogICAgIGNhc2UgU1NMX1dBSVQ6
CiAgICAgY2FzZSBTU0xfQ09OTkVDVElORzoKICAgICAgIFNldEVycm9yKEVOT1RDT05OKTsKICAg
ICAgIHJldHVybiBTT0NLRVRfRVJST1I7Ci0KICAgICBjYXNlIFNTTF9DT05ORUNURUQ6CiAgICAg
ICBicmVhazsKLQogICAgIGNhc2UgU1NMX0VSUk9SOgogICAgIGRlZmF1bHQ6CiAgICAgICByZXR1
cm4gU09DS0VUX0VSUk9SOwpAQCAtNTY3LDggKzU2Niw5IEBAIGludCBPcGVuU1NMQWRhcHRlcjo6
U2VuZChjb25zdCB2b2lkKiBwdiwgc2l6ZV90IGNiKSB7CiAgIH0KIAogICAvLyBPcGVuU1NMIHdp
bGwgcmV0dXJuIGFuIGVycm9yIGlmIHdlIHRyeSB0byB3cml0ZSB6ZXJvIGJ5dGVzCi0gIGlmIChj
YiA9PSAwKQorICBpZiAoY2IgPT0gMCkgewogICAgIHJldHVybiAwOworICB9CiAKICAgcmV0ID0g
RG9Tc2xXcml0ZShwdiwgY2IsICZlcnJvcik7CiAKQEAgLTU5NSw3ICs1OTUsNiBAQCBpbnQgT3Bl
blNTTEFkYXB0ZXI6OlNlbmQoY29uc3Qgdm9pZCogcHYsIHNpemVfdCBjYikgewogICAgIC8vIHNp
emUuIFRoZSB1c2VyIG9mIHRoaXMgY2xhc3MgY2FuIGNvbnNpZGVyIGl0IHNlbnQuCiAgICAgcmV0
dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ+KGNiKTsKICAgfQotCiAgIHJldHVybiByZXQ7CiB9
CiAKQEAgLTYwOCw3ICs2MDcsNiBAQCBpbnQgT3BlblNTTEFkYXB0ZXI6OlNlbmRUbyhjb25zdCB2
b2lkKiBwdiwKICAgfQogCiAgIFNldEVycm9yKEVOT1RDT05OKTsKLQogICByZXR1cm4gU09DS0VU
X0VSUk9SOwogfQogCkBAIC02MTYsMjggKzYxNCwyNiBAQCBpbnQgT3BlblNTTEFkYXB0ZXI6OlJl
Y3Yodm9pZCogcHYsIHNpemVfdCBjYiwgaW50NjRfdCogdGltZXN0YW1wKSB7CiAgIHN3aXRjaCAo
c3RhdGVfKSB7CiAgICAgY2FzZSBTU0xfTk9ORToKICAgICAgIHJldHVybiBBc3luY1NvY2tldEFk
YXB0ZXI6OlJlY3YocHYsIGNiLCB0aW1lc3RhbXApOwotCiAgICAgY2FzZSBTU0xfV0FJVDoKICAg
ICBjYXNlIFNTTF9DT05ORUNUSU5HOgogICAgICAgU2V0RXJyb3IoRU5PVENPTk4pOwogICAgICAg
cmV0dXJuIFNPQ0tFVF9FUlJPUjsKLQogICAgIGNhc2UgU1NMX0NPTk5FQ1RFRDoKICAgICAgIGJy
ZWFrOwotCiAgICAgY2FzZSBTU0xfRVJST1I6CiAgICAgZGVmYXVsdDoKICAgICAgIHJldHVybiBT
T0NLRVRfRVJST1I7CiAgIH0KIAogICAvLyBEb24ndCB0cnVzdCBPcGVuU1NMIHdpdGggemVybyBi
eXRlIHJlYWRzCi0gIGlmIChjYiA9PSAwKQorICBpZiAoY2IgPT0gMCkgewogICAgIHJldHVybiAw
OworICB9CiAKICAgc3NsX3JlYWRfbmVlZHNfd3JpdGVfID0gZmFsc2U7Ci0KICAgaW50IGNvZGUg
PSBTU0xfcmVhZChzc2xfLCBwdiwgY2hlY2tlZF9jYXN0PGludD4oY2IpKTsKICAgaW50IGVycm9y
ID0gU1NMX2dldF9lcnJvcihzc2xfLCBjb2RlKTsKKwogICBzd2l0Y2ggKGVycm9yKSB7CiAgICAg
Y2FzZSBTU0xfRVJST1JfTk9ORToKICAgICAgIHJldHVybiBjb2RlOwpAQCAtNjYwLDcgKzY1Niw2
IEBAIGludCBPcGVuU1NMQWRhcHRlcjo6UmVjdih2b2lkKiBwdiwgc2l6ZV90IGNiLCBpbnQ2NF90
KiB0aW1lc3RhbXApIHsKICAgICAgIEVycm9yKCJTU0xfcmVhZCIsIChjb2RlID8gY29kZSA6IC0x
KSwgZmFsc2UpOwogICAgICAgYnJlYWs7CiAgIH0KLQogICByZXR1cm4gU09DS0VUX0VSUk9SOwog
fQogCkBAIC02NzAsMTQgKzY2NSwxMSBAQCBpbnQgT3BlblNTTEFkYXB0ZXI6OlJlY3ZGcm9tKHZv
aWQqIHB2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90KiB0aW1lc3RhbXAp
IHsKICAgaWYgKHNvY2tldF8tPkdldFN0YXRlKCkgPT0gU29ja2V0OjpDU19DT05ORUNURUQpIHsK
ICAgICBpbnQgcmV0ID0gUmVjdihwdiwgY2IsIHRpbWVzdGFtcCk7Ci0KICAgICAqcGFkZHIgPSBH
ZXRSZW1vdGVBZGRyZXNzKCk7Ci0KICAgICByZXR1cm4gcmV0OwogICB9CiAKICAgU2V0RXJyb3Io
RU5PVENPTk4pOwotCiAgIHJldHVybiBTT0NLRVRfRVJST1I7CiB9CiAKQEAgLTY4OCwxMiArNjgw
LDExIEBAIGludCBPcGVuU1NMQWRhcHRlcjo6Q2xvc2UoKSB7CiB9CiAKIFNvY2tldDo6Q29ublN0
YXRlIE9wZW5TU0xBZGFwdGVyOjpHZXRTdGF0ZSgpIGNvbnN0IHsKLSAgLy8gaWYgKHNpZ25hbF9j
bG9zZV8pCi0gIC8vICByZXR1cm4gQ1NfQ09OTkVDVEVEOwogICBDb25uU3RhdGUgc3RhdGUgPSBz
b2NrZXRfLT5HZXRTdGF0ZSgpOwogICBpZiAoKHN0YXRlID09IENTX0NPTk5FQ1RFRCkgJiYKLSAg
ICAgICgoc3RhdGVfID09IFNTTF9XQUlUKSB8fCAoc3RhdGVfID09IFNTTF9DT05ORUNUSU5HKSkp
CisgICAgICAoKHN0YXRlXyA9PSBTU0xfV0FJVCkgfHwgKHN0YXRlXyA9PSBTU0xfQ09OTkVDVElO
RykpKSB7CiAgICAgc3RhdGUgPSBDU19DT05ORUNUSU5HOworICB9CiAgIHJldHVybiBzdGF0ZTsK
IH0KIApAQCAtNzM2LDggKzcyNyw5IEBAIHZvaWQgT3BlblNTTEFkYXB0ZXI6Ok9uUmVhZEV2ZW50
KEFzeW5jU29ja2V0KiBzb2NrZXQpIHsKICAgICByZXR1cm47CiAgIH0KIAotICBpZiAoc3RhdGVf
ICE9IFNTTF9DT05ORUNURUQpCisgIGlmIChzdGF0ZV8gIT0gU1NMX0NPTk5FQ1RFRCkgewogICAg
IHJldHVybjsKKyAgfQogCiAgIC8vIERvbid0IGxldCBvdXJzZWx2ZXMgZ28gYXdheSBkdXJpbmcg
dGhlIGNhbGxiYWNrcwogICAvLyBQUmVmUHRyPE9wZW5TU0xBZGFwdGVyPiBsb2NrKHRoaXMpOyAv
LyBUT0RPKGJlbndyaWdodCk6IGZpeCB0aGlzCkBAIC03NjEsOCArNzUzLDkgQEAgdm9pZCBPcGVu
U1NMQWRhcHRlcjo6T25Xcml0ZUV2ZW50KEFzeW5jU29ja2V0KiBzb2NrZXQpIHsKICAgICByZXR1
cm47CiAgIH0KIAotICBpZiAoc3RhdGVfICE9IFNTTF9DT05ORUNURUQpCisgIGlmIChzdGF0ZV8g
IT0gU1NMX0NPTk5FQ1RFRCkgewogICAgIHJldHVybjsKKyAgfQogCiAgIC8vIERvbid0IGxldCBv
dXJzZWx2ZXMgZ28gYXdheSBkdXJpbmcgdGhlIGNhbGxiYWNrcwogICAvLyBQUmVmUHRyPE9wZW5T
U0xBZGFwdGVyPiBsb2NrKHRoaXMpOyAvLyBUT0RPKGJlbndyaWdodCk6IGZpeCB0aGlzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9vcGVuc3NsYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuaAppbmRleCA1MGE3YzA4NDVjYTQ1OWRlZGQy
ODIxMDVjNzczYWM5N2VhOGEyZDZhLi4yZTNhMzU1ZjQzOWU3NTBlNWMyMmM4YWE5YmM2YWI2OTZi
ODVjOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9vcGVuc3NsYWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xhZGFwdGVyLmgKQEAgLTExLDI1
ICsxMSwyOCBAQAogI2lmbmRlZiBSVENfQkFTRV9PUEVOU1NMQURBUFRFUl9IXwogI2RlZmluZSBS
VENfQkFTRV9PUEVOU1NMQURBUFRFUl9IXwogCi0jaW5jbHVkZSA8b3BlbnNzbC9vc3NsX3R5cC5o
PgotCi0jaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGlu
dC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCi0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvYXN5bmNzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2Vx
dWV1ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL29wZW5zc2xpZGVudGl0eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5z
c2xzZXNzaW9uY2FjaGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsYWRhcHRl
ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2Uvc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVy
LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCi1jbGFzcyBPcGVuU1NMQWRhcHRlciA6IHB1YmxpYyBT
U0xBZGFwdGVyLCBwdWJsaWMgTWVzc2FnZUhhbmRsZXIgeworY2xhc3MgT3BlblNTTEFkYXB0ZXIg
ZmluYWwgOiBwdWJsaWMgU1NMQWRhcHRlciwgcHVibGljIE1lc3NhZ2VIYW5kbGVyIHsKICBwdWJs
aWM6CiAgIHN0YXRpYyBib29sIEluaXRpYWxpemVTU0woKTsKICAgc3RhdGljIGJvb2wgQ2xlYW51
cFNTTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjCmlu
ZGV4IDIzNmJlZjU1YzhhYWM5NWE2YzcxNDM3NGI4YTJjMGNlYTc3YjEyZGMuLjRlMzI1ZGNlYzAx
OGZjOTI1MzZhMGNlNWM4MjhjMzJhOTgyOTM4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MKQEAgLTEwLDEwICsxMCw2IEBACiAKICNpbmNsdWRlICJy
dGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKIAotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNs
dWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQogI2lmIGRlZmluZWQoV0VCUlRDX1dJ
TikKIC8vIE11c3QgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIG9wZW5zc2wgaGVhZGVycy4KICNp
bmNsdWRlICJydGNfYmFzZS93aW4zMi5oIiAgLy8gTk9MSU5UCkBAIC0yMSw2MyArMTcsNjkgQEAK
IAogI2luY2x1ZGUgPG9wZW5zc2wvYmlvLmg+CiAjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotI2lu
Y2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KICNpbmNs
dWRlIDxvcGVuc3NsL3BlbS5oPgotI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+CisjaW5jbHVkZSA8
dGltZS5oPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2Uvb3BlbnNzbC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
b3BlbnNzbGlkZW50aXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuaCIK
LSNpZm5kZWYgV0VCUlRDX0VYQ0xVREVfQlVJTFRfSU5fU1NMX1JPT1RfQ0VSVFMKLSNpbmNsdWRl
ICJydGNfYmFzZS9zc2xyb290cy5oIgotI2VuZGlmICAvLyBXRUJSVENfRVhDTFVERV9CVUlMVF9J
Tl9TU0xfUk9PVF9DRVJUUwogCiBuYW1lc3BhY2UgcnRjIHsKLQotLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8g
T3BlblNTTENlcnRpZmljYXRlCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIFdlIGNvdWxkIGhhdmUgZXhw
b3NlZCBhIG15cmlhZCBvZiBwYXJhbWV0ZXJzIGZvciB0aGUgY3J5cHRvIHN0dWZmLAotLy8gYnV0
IGtlZXBpbmcgaXQgc2ltcGxlIHNlZW1zIGJlc3QuCituYW1lc3BhY2UgewogCiAvLyBSYW5kb20g
Yml0cyBmb3IgY2VydGlmaWNhdGUgc2VyaWFsIG51bWJlcgogc3RhdGljIGNvbnN0IGludCBTRVJJ
QUxfUkFORF9CSVRTID0gNjQ7CiAKKyNpZiAhZGVmaW5lZChOREVCVUcpCisvLyBQcmludCBhIGNl
cnRpZmljYXRlIHRvIHRoZSBsb2csIGZvciBkZWJ1Z2dpbmcuCitzdGF0aWMgdm9pZCBQcmludENl
cnQoWDUwOSogeDUwOSkgeworICBCSU8qIHRlbXBfbWVtb3J5X2JpbyA9IEJJT19uZXcoQklPX3Nf
bWVtKCkpOworICBpZiAoIXRlbXBfbWVtb3J5X2JpbykgeworICAgIFJUQ19ETE9HX0YoTFNfRVJS
T1IpIDw8ICJGYWlsZWQgdG8gYWxsb2NhdGUgdGVtcG9yYXJ5IG1lbW9yeSBiaW8iOworICAgIHJl
dHVybjsKKyAgfQorICBYNTA5X3ByaW50X2V4KHRlbXBfbWVtb3J5X2JpbywgeDUwOSwgWE5fRkxB
R19TRVBfQ1BMVVNfU1BDLCAwKTsKKyAgQklPX3dyaXRlKHRlbXBfbWVtb3J5X2JpbywgIlwwIiwg
MSk7CisgIGNoYXIqIGJ1ZmZlcjsKKyAgQklPX2dldF9tZW1fZGF0YSh0ZW1wX21lbW9yeV9iaW8s
ICZidWZmZXIpOworICBSVENfRExPRyhMU19WRVJCT1NFKSA8PCBidWZmZXI7CisgIEJJT19mcmVl
KHRlbXBfbWVtb3J5X2Jpbyk7Cit9CisjZW5kaWYKKwogLy8gR2VuZXJhdGUgYSBzZWxmLXNpZ25l
ZCBjZXJ0aWZpY2F0ZSwgd2l0aCB0aGUgcHVibGljIGtleSBmcm9tIHRoZQogLy8gZ2l2ZW4ga2V5
IHBhaXIuIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGUgcmV0dXJuZWQgb2Jq
ZWN0Lgogc3RhdGljIFg1MDkqIE1ha2VDZXJ0aWZpY2F0ZShFVlBfUEtFWSogcGtleSwgY29uc3Qg
U1NMSWRlbnRpdHlQYXJhbXMmIHBhcmFtcykgewogICBSVENfTE9HKExTX0lORk8pIDw8ICJNYWtp
bmcgY2VydGlmaWNhdGUgZm9yICIgPDwgcGFyYW1zLmNvbW1vbl9uYW1lOwotICBYNTA5KiB4NTA5
ID0gbnVsbHB0cjsKKworICBBU04xX0lOVEVHRVIqIGFzbjFfc2VyaWFsX251bWJlciA9IG51bGxw
dHI7CiAgIEJJR05VTSogc2VyaWFsX251bWJlciA9IG51bGxwdHI7CisgIFg1MDkqIHg1MDkgPSBu
dWxscHRyOwogICBYNTA5X05BTUUqIG5hbWUgPSBudWxscHRyOwogICB0aW1lX3QgZXBvY2hfb2Zm
ID0gMDsgIC8vIFRpbWUgb2Zmc2V0IHNpbmNlIGVwb2NoLgogCi0gIGlmICgoeDUwOSA9IFg1MDlf
bmV3KCkpID09IG51bGxwdHIpCisgIGlmICgoeDUwOSA9IFg1MDlfbmV3KCkpID09IG51bGxwdHIp
IHsKICAgICBnb3RvIGVycm9yOwotCi0gIGlmICghWDUwOV9zZXRfcHVia2V5KHg1MDksIHBrZXkp
KQorICB9CisgIGlmICghWDUwOV9zZXRfcHVia2V5KHg1MDksIHBrZXkpKSB7CiAgICAgZ290byBl
cnJvcjsKLQotICAvLyBzZXJpYWwgbnVtYmVyCi0gIC8vIHRlbXBvcmFyeSByZWZlcmVuY2UgdG8g
c2VyaWFsIG51bWJlciBpbnNpZGUgeDUwOSBzdHJ1Y3QKLSAgQVNOMV9JTlRFR0VSKiBhc24xX3Nl
cmlhbF9udW1iZXI7CisgIH0KKyAgLy8gc2VyaWFsIG51bWJlciAtIHRlbXBvcmFyeSByZWZlcmVu
Y2UgdG8gc2VyaWFsIG51bWJlciBpbnNpZGUgeDUwOSBzdHJ1Y3QKICAgaWYgKChzZXJpYWxfbnVt
YmVyID0gQk5fbmV3KCkpID09IG51bGxwdHIgfHwKICAgICAgICFCTl9wc2V1ZG9fcmFuZChzZXJp
YWxfbnVtYmVyLCBTRVJJQUxfUkFORF9CSVRTLCAwLCAwKSB8fAogICAgICAgKGFzbjFfc2VyaWFs
X251bWJlciA9IFg1MDlfZ2V0X3NlcmlhbE51bWJlcih4NTA5KSkgPT0gbnVsbHB0ciB8fAotICAg
ICAgIUJOX3RvX0FTTjFfSU5URUdFUihzZXJpYWxfbnVtYmVyLCBhc24xX3NlcmlhbF9udW1iZXIp
KQorICAgICAgIUJOX3RvX0FTTjFfSU5URUdFUihzZXJpYWxfbnVtYmVyLCBhc24xX3NlcmlhbF9u
dW1iZXIpKSB7CiAgICAgZ290byBlcnJvcjsKLQotICBpZiAoIVg1MDlfc2V0X3ZlcnNpb24oeDUw
OSwgMkwpKSAgLy8gdmVyc2lvbiAzCisgIH0KKyAgLy8gU2V0IHZlcnNpb24gdG8gWDUwOS5WMwor
ICBpZiAoIVg1MDlfc2V0X3ZlcnNpb24oeDUwOSwgMkwpKSB7CiAgICAgZ290byBlcnJvcjsKKyAg
fQogCiAgIC8vIFRoZXJlIGFyZSBhIGxvdCBvZiBwb3NzaWJsZSBjb21wb25lbnRzIGZvciB0aGUg
bmFtZSBlbnRyaWVzLiBJbgogICAvLyBvdXIgUDJQIFNTTCBtb2RlIGhvd2V2ZXIsIHRoZSBjZXJ0
aWZpY2F0ZXMgYXJlIHByZS1leGNoYW5nZWQKQEAgLTkwLDE1ICs5MiwxNiBAQCBzdGF0aWMgWDUw
OSogTWFrZUNlcnRpZmljYXRlKEVWUF9QS0VZKiBwa2V5LCBjb25zdCBTU0xJZGVudGl0eVBhcmFt
cyYgcGFyYW1zKSB7CiAgICAgICAhWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9OSUQobmFtZSwgTklE
X2NvbW1vbk5hbWUsIE1CU1RSSU5HX1VURjgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHVuc2lnbmVkIGNoYXIqKXBhcmFtcy5jb21tb25fbmFtZS5jX3N0cigpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgMCkgfHwKLSAgICAgICFYNTA5X3Nl
dF9zdWJqZWN0X25hbWUoeDUwOSwgbmFtZSkgfHwgIVg1MDlfc2V0X2lzc3Vlcl9uYW1lKHg1MDks
IG5hbWUpKQorICAgICAgIVg1MDlfc2V0X3N1YmplY3RfbmFtZSh4NTA5LCBuYW1lKSB8fCAhWDUw
OV9zZXRfaXNzdWVyX25hbWUoeDUwOSwgbmFtZSkpIHsKICAgICBnb3RvIGVycm9yOwotCisgIH0K
ICAgaWYgKCFYNTA5X3RpbWVfYWRqKFg1MDlfZ2V0X25vdEJlZm9yZSh4NTA5KSwgcGFyYW1zLm5v
dF9iZWZvcmUsICZlcG9jaF9vZmYpIHx8Ci0gICAgICAhWDUwOV90aW1lX2FkaihYNTA5X2dldF9u
b3RBZnRlcih4NTA5KSwgcGFyYW1zLm5vdF9hZnRlciwgJmVwb2NoX29mZikpCisgICAgICAhWDUw
OV90aW1lX2FkaihYNTA5X2dldF9ub3RBZnRlcih4NTA5KSwgcGFyYW1zLm5vdF9hZnRlciwgJmVw
b2NoX29mZikpIHsKICAgICBnb3RvIGVycm9yOwotCi0gIGlmICghWDUwOV9zaWduKHg1MDksIHBr
ZXksIEVWUF9zaGEyNTYoKSkpCisgIH0KKyAgaWYgKCFYNTA5X3NpZ24oeDUwOSwgcGtleSwgRVZQ
X3NoYTI1NigpKSkgewogICAgIGdvdG8gZXJyb3I7CisgIH0KIAogICBCTl9mcmVlKHNlcmlhbF9u
dW1iZXIpOwogICBYNTA5X05BTUVfZnJlZShuYW1lKTsKQEAgLTExMiwyOCArMTE1LDE0IEBAIGVy
cm9yOgogICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmICFkZWZpbmVkKE5ERUJVRykKLS8vIFBy
aW50IGEgY2VydGlmaWNhdGUgdG8gdGhlIGxvZywgZm9yIGRlYnVnZ2luZy4KLXN0YXRpYyB2b2lk
IFByaW50Q2VydChYNTA5KiB4NTA5KSB7Ci0gIEJJTyogdGVtcF9tZW1vcnlfYmlvID0gQklPX25l
dyhCSU9fc19tZW0oKSk7Ci0gIGlmICghdGVtcF9tZW1vcnlfYmlvKSB7Ci0gICAgUlRDX0RMT0df
RihMU19FUlJPUikgPDwgIkZhaWxlZCB0byBhbGxvY2F0ZSB0ZW1wb3JhcnkgbWVtb3J5IGJpbyI7
Ci0gICAgcmV0dXJuOwotICB9Ci0gIFg1MDlfcHJpbnRfZXgodGVtcF9tZW1vcnlfYmlvLCB4NTA5
LCBYTl9GTEFHX1NFUF9DUExVU19TUEMsIDApOwotICBCSU9fd3JpdGUodGVtcF9tZW1vcnlfYmlv
LCAiXDAiLCAxKTsKLSAgY2hhciogYnVmZmVyOwotICBCSU9fZ2V0X21lbV9kYXRhKHRlbXBfbWVt
b3J5X2JpbywgJmJ1ZmZlcik7Ci0gIFJUQ19ETE9HKExTX1ZFUkJPU0UpIDw8IGJ1ZmZlcjsKLSAg
QklPX2ZyZWUodGVtcF9tZW1vcnlfYmlvKTsKLX0KLSNlbmRpZgorfSAgLy8gbmFtZXNwYWNlCiAK
IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6T3BlblNTTENlcnRpZmljYXRlKFg1MDkqIHg1MDkpIDogeDUw
OV8oeDUwOSkgewotICBBZGRSZWZlcmVuY2UoKTsKKyAgUlRDX0RDSEVDSyh4NTA5XyAhPSBudWxs
cHRyKTsKKyAgWDUwOV91cF9yZWYoeDUwOV8pOwogfQogCi1PcGVuU1NMQ2VydGlmaWNhdGUqIE9w
ZW5TU0xDZXJ0aWZpY2F0ZTo6R2VuZXJhdGUoCitzdGQ6OnVuaXF1ZV9wdHI8T3BlblNTTENlcnRp
ZmljYXRlPiBPcGVuU1NMQ2VydGlmaWNhdGU6OkdlbmVyYXRlKAogICAgIE9wZW5TU0xLZXlQYWly
KiBrZXlfcGFpciwKICAgICBjb25zdCBTU0xJZGVudGl0eVBhcmFtcyYgcGFyYW1zKSB7CiAgIFNT
TElkZW50aXR5UGFyYW1zIGFjdHVhbF9wYXJhbXMocGFyYW1zKTsKQEAgLTE0OSwyNSArMTM4LDI3
IEBAIE9wZW5TU0xDZXJ0aWZpY2F0ZSogT3BlblNTTENlcnRpZmljYXRlOjpHZW5lcmF0ZSgKICNp
ZiAhZGVmaW5lZChOREVCVUcpCiAgIFByaW50Q2VydCh4NTA5KTsKICNlbmRpZgotICBPcGVuU1NM
Q2VydGlmaWNhdGUqIHJldCA9IG5ldyBPcGVuU1NMQ2VydGlmaWNhdGUoeDUwOSk7CisgIGF1dG8g
cmV0ID0gYWJzbDo6bWFrZV91bmlxdWU8T3BlblNTTENlcnRpZmljYXRlPih4NTA5KTsKICAgWDUw
OV9mcmVlKHg1MDkpOwogICByZXR1cm4gcmV0OwogfQogCi1PcGVuU1NMQ2VydGlmaWNhdGUqIE9w
ZW5TU0xDZXJ0aWZpY2F0ZTo6RnJvbVBFTVN0cmluZygKK3N0ZDo6dW5pcXVlX3B0cjxPcGVuU1NM
Q2VydGlmaWNhdGU+IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6RnJvbVBFTVN0cmluZygKICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgcGVtX3N0cmluZykgewogICBCSU8qIGJpbyA9IEJJT19uZXdfbWVtX2J1
Zihjb25zdF9jYXN0PGNoYXIqPihwZW1fc3RyaW5nLmNfc3RyKCkpLCAtMSk7Ci0gIGlmICghYmlv
KQorICBpZiAoIWJpbykgewogICAgIHJldHVybiBudWxscHRyOworICB9CisKICAgQklPX3NldF9t
ZW1fZW9mX3JldHVybihiaW8sIDApOwogICBYNTA5KiB4NTA5ID0KICAgICAgIFBFTV9yZWFkX2Jp
b19YNTA5KGJpbywgbnVsbHB0ciwgbnVsbHB0ciwgY29uc3RfY2FzdDxjaGFyKj4oIlwwIikpOwog
ICBCSU9fZnJlZShiaW8pOyAgLy8gRnJlZXMgdGhlIEJJTywgYnV0IG5vdCB0aGUgcG9pbnRlZC10
byBzdHJpbmcuCiAKLSAgaWYgKCF4NTA5KQorICBpZiAoIXg1MDkpIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICBPcGVuU1NMQ2VydGlmaWNhdGUqIHJldCA9IG5ldyBPcGVuU1NMQ2VydGlmaWNh
dGUoeDUwOSk7CisgIH0KKyAgYXV0byByZXQgPSBhYnNsOjptYWtlX3VuaXF1ZTxPcGVuU1NMQ2Vy
dGlmaWNhdGU+KHg1MDkpOwogICBYNTA5X2ZyZWUoeDUwOSk7CiAgIHJldHVybiByZXQ7CiB9CkBA
IC0yMjksMTkgKzIyMCwxNiBAQCBib29sIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6Q29tcHV0ZURpZ2Vz
dChjb25zdCBYNTA5KiB4NTA5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciogZGlnZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QqIGxlbmd0aCkgewotICBjb25zdCBFVlBfTUQqIG1kOwotICB1bnNpZ25lZCBp
bnQgbjsKLQotICBpZiAoIU9wZW5TU0xEaWdlc3Q6OkdldERpZ2VzdEVWUChhbGdvcml0aG0sICZt
ZCkpCisgIGNvbnN0IEVWUF9NRCogbWQgPSBudWxscHRyOworICB1bnNpZ25lZCBpbnQgbiA9IDA7
CisgIGlmICghT3BlblNTTERpZ2VzdDo6R2V0RGlnZXN0RVZQKGFsZ29yaXRobSwgJm1kKSkgewog
ICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAoc2l6ZSA8IHN0YXRpY19jYXN0PHNpemVfdD4oRVZQ
X01EX3NpemUobWQpKSkKKyAgfQorICBpZiAoc2l6ZSA8IHN0YXRpY19jYXN0PHNpemVfdD4oRVZQ
X01EX3NpemUobWQpKSkgewogICAgIHJldHVybiBmYWxzZTsKLQorICB9CiAgIFg1MDlfZGlnZXN0
KHg1MDksIG1kLCBkaWdlc3QsICZuKTsKLQogICAqbGVuZ3RoID0gbjsKLQogICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMjQ5LDE4ICsyMzcsMTggQEAgT3BlblNTTENlcnRpZmljYXRlOjp+T3BlblNT
TENlcnRpZmljYXRlKCkgewogICBYNTA5X2ZyZWUoeDUwOV8pOwogfQogCi1PcGVuU1NMQ2VydGlm
aWNhdGUqIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6R2V0UmVmZXJlbmNlKCkgY29uc3QgewotICByZXR1
cm4gbmV3IE9wZW5TU0xDZXJ0aWZpY2F0ZSh4NTA5Xyk7CitzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2Vy
dGlmaWNhdGU+IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6Q2xvbmUoKSBjb25zdCB7CisgIHJldHVybiBh
YnNsOjptYWtlX3VuaXF1ZTxPcGVuU1NMQ2VydGlmaWNhdGU+KHg1MDlfKTsKIH0KIAogc3RkOjpz
dHJpbmcgT3BlblNTTENlcnRpZmljYXRlOjpUb1BFTVN0cmluZygpIGNvbnN0IHsKICAgQklPKiBi
aW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKICAgaWYgKCFiaW8pIHsKLSAgICBSVENfRkFUQUwo
KSA8PCAidW5yZWFjaGFibGUgY29kZSI7CisgICAgUlRDX0ZBVEFMKCkgPDwgIlVucmVhY2hhYmxl
IGNvZGUuIjsKICAgfQogICBpZiAoIVBFTV93cml0ZV9iaW9fWDUwOShiaW8sIHg1MDlfKSkgewog
ICAgIEJJT19mcmVlKGJpbyk7Ci0gICAgUlRDX0ZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUi
OworICAgIFJUQ19GQVRBTCgpIDw8ICJVbnJlYWNoYWJsZSBjb2RlLiI7CiAgIH0KICAgQklPX3dy
aXRlKGJpbywgIlwwIiwgMSk7CiAgIGNoYXIqIGJ1ZmZlcjsKQEAgLTI3MywyNyArMjYxLDIxIEBA
IHN0ZDo6c3RyaW5nIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9QRU1TdHJpbmcoKSBjb25zdCB7CiB2
b2lkIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9ERVIoQnVmZmVyKiBkZXJfYnVmZmVyKSBjb25zdCB7
CiAgIC8vIEluIGNhc2Ugb2YgZmFpbHVyZSwgbWFrZSBzdXJlIHRvIGxlYXZlIHRoZSBidWZmZXIg
ZW1wdHkuCiAgIGRlcl9idWZmZXItPlNldFNpemUoMCk7Ci0KICAgLy8gQ2FsY3VsYXRlcyB0aGUg
REVSIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZSwgZnJvbSBzY3JhdGNoLgogICBC
SU8qIGJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOwogICBpZiAoIWJpbykgewotICAgIFJUQ19G
QVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKyAgICBSVENfRkFUQUwoKSA8PCAiVW5yZWFj
aGFibGUgY29kZS4iOwogICB9CiAgIGlmICghaTJkX1g1MDlfYmlvKGJpbywgeDUwOV8pKSB7CiAg
ICAgQklPX2ZyZWUoYmlvKTsKLSAgICBSVENfRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7
CisgICAgUlRDX0ZBVEFMKCkgPDwgIlVucmVhY2hhYmxlIGNvZGUuIjsKICAgfQotICBjaGFyKiBk
YXRhOworICBjaGFyKiBkYXRhID0gbnVsbHB0cjsKICAgc2l6ZV90IGxlbmd0aCA9IEJJT19nZXRf
bWVtX2RhdGEoYmlvLCAmZGF0YSk7CiAgIGRlcl9idWZmZXItPlNldERhdGEoZGF0YSwgbGVuZ3Ro
KTsKICAgQklPX2ZyZWUoYmlvKTsKIH0KIAotdm9pZCBPcGVuU1NMQ2VydGlmaWNhdGU6OkFkZFJl
ZmVyZW5jZSgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyh4NTA5XyAhPSBudWxscHRyKTsKLSAgWDUw
OV91cF9yZWYoeDUwOV8pOwotfQotCiBib29sIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6b3BlcmF0b3I9
PShjb25zdCBPcGVuU1NMQ2VydGlmaWNhdGUmIG90aGVyKSBjb25zdCB7CiAgIHJldHVybiBYNTA5
X2NtcCh4NTA5Xywgb3RoZXIueDUwOV8pID09IDA7CiB9CkBAIC0zMDIsMTEgKzI4NCw5IEBAIGJv
b2wgT3BlblNTTENlcnRpZmljYXRlOjpvcGVyYXRvciE9KGNvbnN0IE9wZW5TU0xDZXJ0aWZpY2F0
ZSYgb3RoZXIpIGNvbnN0IHsKICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogfQogCi0vLyBE
b2N1bWVudGVkIGluIHNzbGlkZW50aXR5LmguCiBpbnQ2NF90IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6
Q2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpIGNvbnN0IHsKICAgQVNOMV9USU1FKiBleHBpcmVf
dGltZSA9IFg1MDlfZ2V0X25vdEFmdGVyKHg1MDlfKTsKICAgYm9vbCBsb25nX2Zvcm1hdDsKLQog
ICBpZiAoZXhwaXJlX3RpbWUtPnR5cGUgPT0gVl9BU04xX1VUQ1RJTUUpIHsKICAgICBsb25nX2Zv
cm1hdCA9IGZhbHNlOwogICB9IGVsc2UgaWYgKGV4cGlyZV90aW1lLT50eXBlID09IFZfQVNOMV9H
RU5FUkFMSVpFRFRJTUUpIHsKQEAgLTMxNCw3ICsyOTQsNiBAQCBpbnQ2NF90IE9wZW5TU0xDZXJ0
aWZpY2F0ZTo6Q2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpIGNvbnN0IHsKICAgfSBlbHNlIHsK
ICAgICByZXR1cm4gLTE7CiAgIH0KLQogICByZXR1cm4gQVNOMVRpbWVUb1NlYyhleHBpcmVfdGlt
ZS0+ZGF0YSwgZXhwaXJlX3RpbWUtPmxlbmd0aCwgbG9uZ19mb3JtYXQpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9v
cGVuc3NsY2VydGlmaWNhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5oCmluZGV4IGM3MzBmZmQwZGM5ZTc2
OWM2YmQwZjk3ZDRlZTFlN2JkYzU0MjlmZjIuLjA4ODcyNWMwZDc1NTY1M2QzYjIzMDM2NWM1NjMz
MWNkMDQyYzA2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0
ZS5oCkBAIC0xMSwzOCArMTEsMzggQEAKICNpZm5kZWYgUlRDX0JBU0VfT1BFTlNTTENFUlRJRklD
QVRFX0hfCiAjZGVmaW5lIFJUQ19CQVNFX09QRU5TU0xDRVJUSUZJQ0FURV9IXwogCi0jaW5jbHVk
ZSA8b3BlbnNzbC9ldnAuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KKyNpbmNsdWRlIDxv
cGVuc3NsL29zc2xfdHlwLmg+CiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RkZGVm
Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNl
cnRpZmljYXRlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKIAotdHlwZWRl
ZiBzdHJ1Y3Qgc3NsX2N0eF9zdCBTU0xfQ1RYOwotCiBuYW1lc3BhY2UgcnRjIHsKIAogY2xhc3Mg
T3BlblNTTEtleVBhaXI7CiAKIC8vIE9wZW5TU0xDZXJ0aWZpY2F0ZSBlbmNhcHN1bGF0ZXMgYW4g
T3BlblNTTCBYNTA5KiBjZXJ0aWZpY2F0ZSBvYmplY3QsCiAvLyB3aGljaCBpcyBhbHNvIHJlZmVy
ZW5jZSBjb3VudGVkIGluc2lkZSB0aGUgT3BlblNTTCBsaWJyYXJ5LgotY2xhc3MgT3BlblNTTENl
cnRpZmljYXRlIDogcHVibGljIFNTTENlcnRpZmljYXRlIHsKK2NsYXNzIE9wZW5TU0xDZXJ0aWZp
Y2F0ZSBmaW5hbCA6IHB1YmxpYyBTU0xDZXJ0aWZpY2F0ZSB7CiAgcHVibGljOgogICAvLyBYNTA5
IG9iamVjdCBoYXMgaXRzIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnRlZC4gU28gdGhlIGNhbGxl
ciBhbmQKICAgLy8gT3BlblNTTENlcnRpZmljYXRlIHNoYXJlIG93bmVyc2hpcC4KICAgZXhwbGlj
aXQgT3BlblNTTENlcnRpZmljYXRlKFg1MDkqIHg1MDkpOwogCi0gIHN0YXRpYyBPcGVuU1NMQ2Vy
dGlmaWNhdGUqIEdlbmVyYXRlKE9wZW5TU0xLZXlQYWlyKiBrZXlfcGFpciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1NMSWRlbnRpdHlQYXJhbXMmIHBhcmFt
cyk7Ci0gIHN0YXRpYyBPcGVuU1NMQ2VydGlmaWNhdGUqIEZyb21QRU1TdHJpbmcoY29uc3Qgc3Rk
OjpzdHJpbmcmIHBlbV9zdHJpbmcpOworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE9wZW5TU0xD
ZXJ0aWZpY2F0ZT4gR2VuZXJhdGUoCisgICAgICBPcGVuU1NMS2V5UGFpcioga2V5X3BhaXIsCisg
ICAgICBjb25zdCBTU0xJZGVudGl0eVBhcmFtcyYgcGFyYW1zKTsKKyAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxPcGVuU1NMQ2VydGlmaWNhdGU+IEZyb21QRU1TdHJpbmcoCisgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgcGVtX3N0cmluZyk7CiAKICAgfk9wZW5TU0xDZXJ0aWZpY2F0ZSgpIG92ZXJy
aWRlOwogCi0gIE9wZW5TU0xDZXJ0aWZpY2F0ZSogR2V0UmVmZXJlbmNlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4gQ2xvbmUoKSBjb25zdCBvdmVy
cmlkZTsKIAogICBYNTA5KiB4NTA5KCkgY29uc3QgeyByZXR1cm4geDUwOV87IH0KIApAQCAtNjks
OCArNjksNiBAQCBjbGFzcyBPcGVuU1NMQ2VydGlmaWNhdGUgOiBwdWJsaWMgU1NMQ2VydGlmaWNh
dGUgewogICBpbnQ2NF90IENlcnRpZmljYXRlRXhwaXJhdGlvblRpbWUoKSBjb25zdCBvdmVycmlk
ZTsKIAogIHByaXZhdGU6Ci0gIHZvaWQgQWRkUmVmZXJlbmNlKCkgY29uc3Q7Ci0KICAgWDUwOSog
eDUwOV87ICAvLyBOT1QgT1dORUQKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihPcGVu
U1NMQ2VydGlmaWNhdGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xkaWdlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsZGlnZXN0LmNj
CmluZGV4IDliNjQ0YzQ2MGI1YTU4MzRiODM5ZmU2OGYxZjc0YmU5MGM3YzVjOTMuLmRhOTBiNjVm
ODIyMWNhOTZjNmEwMzMzOWYyODg3ZDcwYjgyYjVhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xkaWdlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
b3BlbnNzbGRpZ2VzdC5jYwpAQCAtMTAsNyArMTAsNyBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
b3BlbnNzbGRpZ2VzdC5oIgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiICAvLyBSVENfRENIRUNLLCBSVENfQ0hFQ0sKICNpbmNsdWRl
ICJydGNfYmFzZS9vcGVuc3NsLmgiCiAKIG5hbWVzcGFjZSBydGMgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGRp
Z2VzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvb3BlbnNzbGRpZ2VzdC5oCmluZGV4IGM0Y2QxZTAzMTRlZDRlMGFiZWRjZGJjMDY3NmM4OTAw
NmExYjZlYjAuLjgyZGM5YTk2Y2Q4NGJiYWYwYzdjZGFmMjcxYWMyMjQ3MGFjNTgyOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L29wZW5zc2xkaWdlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsZGlnZXN0LmgKQEAgLTExLDE0ICsxMSwxNiBAQAogI2lm
bmRlZiBSVENfQkFTRV9PUEVOU1NMRElHRVNUX0hfCiAjZGVmaW5lIFJUQ19CQVNFX09QRU5TU0xE
SUdFU1RfSF8KIAotI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9i
YXNlLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIAogLy8gQW4g
aW1wbGVtZW50YXRpb24gb2YgdGhlIGRpZ2VzdCBjbGFzcyB0aGF0IHVzZXMgT3BlblNTTC4KLWNs
YXNzIE9wZW5TU0xEaWdlc3QgOiBwdWJsaWMgTWVzc2FnZURpZ2VzdCB7CitjbGFzcyBPcGVuU1NM
RGlnZXN0IGZpbmFsIDogcHVibGljIE1lc3NhZ2VEaWdlc3QgewogIHB1YmxpYzoKICAgLy8gQ3Jl
YXRlcyBhbiBPcGVuU1NMRGlnZXN0IHdpdGggfGFsZ29yaXRobXwgYXMgdGhlIGhhc2ggYWxnb3Jp
dGhtLgogICBleHBsaWNpdCBPcGVuU1NMRGlnZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0
aG0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmNjCmluZGV4IGE4YzY5
MTk3NzliZWRlNDc5MGY5ZmRmMGYxMTViNTcyY2VkNmU2ODUuLjk4NTBjODU1ZWExNjc5YTQxMzc5
MjY5MGU2NWY5OTg2MmM0ZDQ0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xpZGVudGl0eS5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsaWRl
bnRpdHkuY2MKQEAgLTIxLDE4ICsyMSwxNyBAQAogCiAjaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4K
ICNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KICNp
bmNsdWRlIDxvcGVuc3NsL2Vyci5oPgogI2luY2x1ZGUgPG9wZW5zc2wvcGVtLmg+CiAjaW5jbHVk
ZSA8b3BlbnNzbC9yc2EuaD4KIAorI2luY2x1ZGUgPHN0ZGludC5oPgorCiAjaW5jbHVkZSAiYWJz
bC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvb3BlbnNzbC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xkaWdlc3QuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5oIgogCiBuYW1lc3BhY2UgcnRjIHsK
QEAgLTMxNiw3ICszMTUsNyBAQCBjb25zdCBTU0xDZXJ0Q2hhaW4mIE9wZW5TU0xJZGVudGl0eTo6
Y2VydF9jaGFpbigpIGNvbnN0IHsKIAogT3BlblNTTElkZW50aXR5KiBPcGVuU1NMSWRlbnRpdHk6
OkdldFJlZmVyZW5jZSgpIGNvbnN0IHsKICAgcmV0dXJuIG5ldyBPcGVuU1NMSWRlbnRpdHkoYWJz
bDo6V3JhcFVuaXF1ZShrZXlfcGFpcl8tPkdldFJlZmVyZW5jZSgpKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6V3JhcFVuaXF1ZShjZXJ0X2NoYWluXy0+Q29weSgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfY2hhaW5fLT5DbG9uZSgpKTsKIH0KIAog
Ym9vbCBPcGVuU1NMSWRlbnRpdHk6OkNvbmZpZ3VyZUlkZW50aXR5KFNTTF9DVFgqIGN0eCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuaAppbmRleCAzNDA0NDI3NmNhNzY1
OWJkZDc4NTU0NWJkOWJlZjExYjhjYWY5YzkyLi5mY2Y3ZGViZjkwNzJmZWIxMzVmNzQ3MmYyNGNk
NmIwYzBjYWNlYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuaApA
QCAtMTEsMjQgKzExLDIzIEBACiAjaWZuZGVmIFJUQ19CQVNFX09QRU5TU0xJREVOVElUWV9IXwog
I2RlZmluZSBSVENfQkFTRV9PUEVOU1NMSURFTlRJVFlfSF8KIAotI2luY2x1ZGUgPG9wZW5zc2wv
ZXZwLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC94NTA5Lmg+CisjaW5jbHVkZSA8b3BlbnNzbC9vc3Ns
X3R5cC5oPgogCisjaW5jbHVkZSA8Y3RpbWU+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHN0cmluZz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsY2VydGlm
aWNhdGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3NzbGlkZW50aXR5LmgiCiAKLXR5cGVkZWYgc3RydWN0IHNzbF9jdHhfc3QgU1NM
X0NUWDsKLQogbmFtZXNwYWNlIHJ0YyB7CiAKIC8vIE9wZW5TU0xLZXlQYWlyIGVuY2Fwc3VsYXRl
cyBhbiBPcGVuU1NMIEVWUF9QS0VZKiBrZXlwYWlyIG9iamVjdCwKIC8vIHdoaWNoIGlzIHJlZmVy
ZW5jZSBjb3VudGVkIGluc2lkZSB0aGUgT3BlblNTTCBsaWJyYXJ5LgotY2xhc3MgT3BlblNTTEtl
eVBhaXIgeworY2xhc3MgT3BlblNTTEtleVBhaXIgZmluYWwgewogIHB1YmxpYzoKICAgZXhwbGlj
aXQgT3BlblNTTEtleVBhaXIoRVZQX1BLRVkqIHBrZXkpIDogcGtleV8ocGtleSkgewogICAgIFJU
Q19EQ0hFQ0socGtleV8gIT0gbnVsbHB0cik7CkBAIC01OSw3ICs1OCw3IEBAIGNsYXNzIE9wZW5T
U0xLZXlQYWlyIHsKIAogLy8gSG9sZHMgYSBrZXlwYWlyIGFuZCBjZXJ0aWZpY2F0ZSB0b2dldGhl
ciwgYW5kIGEgbWV0aG9kIHRvIGdlbmVyYXRlCiAvLyB0aGVtIGNvbnNpc3RlbnRseS4KLWNsYXNz
IE9wZW5TU0xJZGVudGl0eSA6IHB1YmxpYyBTU0xJZGVudGl0eSB7CitjbGFzcyBPcGVuU1NMSWRl
bnRpdHkgZmluYWwgOiBwdWJsaWMgU1NMSWRlbnRpdHkgewogIHB1YmxpYzoKICAgc3RhdGljIE9w
ZW5TU0xJZGVudGl0eSogR2VuZXJhdGVXaXRoRXhwaXJhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYg
Y29tbW9uX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgS2V5UGFyYW1zJiBrZXlfcGFyYW1zLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHN0cmVhbWFk
YXB0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9vcGVuc3Nsc3RyZWFtYWRhcHRlci5jYwppbmRleCBmZDU0YTA4MmE3ZDczODU4M2U4ODRj
ODg4ZWVlNTA4MmY5NDM0ZjhlLi43MjdjYjg0YWFlOTVkYTM3NWMyNDc0YTkyZmJjYzhlYjhkOTFk
OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9vcGVuc3Nsc3RyZWFtYWRhcHRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Nsc3RyZWFtYWRhcHRlci5j
YwpAQCAtMjIsNiArMjIsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKQEAgLTMxLDYgKzMyLDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsYWRhcHRl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xkaWdlc3QuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9vcGVuc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0
ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0
cmluZ3V0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCkBAIC0xODAsOCArMTgy
LDkgQEAgc3RhdGljIEJJT19NRVRIT0QqIEJJT19zdHJlYW1fbWV0aG9kKCkgewogCiBzdGF0aWMg
QklPKiBCSU9fbmV3X3N0cmVhbShTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSkgewogICBCSU8qIHJl
dCA9IEJJT19uZXcoQklPX3N0cmVhbV9tZXRob2QoKSk7Ci0gIGlmIChyZXQgPT0gbnVsbHB0cikK
KyAgaWYgKHJldCA9PSBudWxscHRyKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KICAgQklP
X3NldF9kYXRhKHJldCwgc3RyZWFtKTsKICAgcmV0dXJuIHJldDsKIH0KQEAgLTE5NiwxNCArMTk5
LDE2IEBAIHN0YXRpYyBpbnQgc3RyZWFtX25ldyhCSU8qIGIpIHsKIH0KIAogc3RhdGljIGludCBz
dHJlYW1fZnJlZShCSU8qIGIpIHsKLSAgaWYgKGIgPT0gbnVsbHB0cikKKyAgaWYgKGIgPT0gbnVs
bHB0cikgewogICAgIHJldHVybiAwOworICB9CiAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgaW50
IHN0cmVhbV9yZWFkKEJJTyogYiwgY2hhciogb3V0LCBpbnQgb3V0bCkgewotICBpZiAoIW91dCkK
KyAgaWYgKCFvdXQpIHsKICAgICByZXR1cm4gLTE7CisgIH0KICAgU3RyZWFtSW50ZXJmYWNlKiBz
dHJlYW0gPSBzdGF0aWNfY2FzdDxTdHJlYW1JbnRlcmZhY2UqPihCSU9fZ2V0X2RhdGEoYikpOwog
ICBCSU9fY2xlYXJfcmV0cnlfZmxhZ3MoYik7CiAgIHNpemVfdCByZWFkOwpAQCAtMjE4LDggKzIy
Myw5IEBAIHN0YXRpYyBpbnQgc3RyZWFtX3JlYWQoQklPKiBiLCBjaGFyKiBvdXQsIGludCBvdXRs
KSB7CiB9CiAKIHN0YXRpYyBpbnQgc3RyZWFtX3dyaXRlKEJJTyogYiwgY29uc3QgY2hhciogaW4s
IGludCBpbmwpIHsKLSAgaWYgKCFpbikKKyAgaWYgKCFpbikgewogICAgIHJldHVybiAtMTsKKyAg
fQogICBTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSA9IHN0YXRpY19jYXN0PFN0cmVhbUludGVyZmFj
ZSo+KEJJT19nZXRfZGF0YShiKSk7CiAgIEJJT19jbGVhcl9yZXRyeV9mbGFncyhiKTsKICAgc2l6
ZV90IHdyaXR0ZW47CkBAIC0yOTYsNyArMzAyLDcgQEAgYm9vbCBPcGVuU1NMU3RyZWFtQWRhcHRl
cjo6U2V0UGVlckNlcnRpZmljYXRlRGlnZXN0KAogICAgIHNpemVfdCBkaWdlc3RfbGVuLAogICAg
IFNTTFBlZXJDZXJ0aWZpY2F0ZURpZ2VzdEVycm9yKiBlcnJvcikgewogICBSVENfRENIRUNLKCFw
ZWVyX2NlcnRpZmljYXRlX3ZlcmlmaWVkXyk7Ci0gIFJUQ19EQ0hFQ0soIWhhc19wZWVyX2NlcnRp
ZmljYXRlX2RpZ2VzdCgpKTsKKyAgUlRDX0RDSEVDSyghSGFzUGVlckNlcnRpZmljYXRlRGlnZXN0
KCkpOwogICBzaXplX3QgZXhwZWN0ZWRfbGVuOwogICBpZiAoZXJyb3IpIHsKICAgICAqZXJyb3Ig
PSBTU0xQZWVyQ2VydGlmaWNhdGVEaWdlc3RFcnJvcjo6Tk9ORTsKQEAgLTM2Miw4ICszNjgsOSBA
QCBzdGQ6OnN0cmluZyBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6U3NsQ2lwaGVyU3VpdGVUb05hbWUo
aW50IGNpcGhlcl9zdWl0ZSkgewogfQogCiBib29sIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpHZXRT
c2xDaXBoZXJTdWl0ZShpbnQqIGNpcGhlcl9zdWl0ZSkgewotICBpZiAoc3RhdGVfICE9IFNTTF9D
T05ORUNURUQpCisgIGlmIChzdGF0ZV8gIT0gU1NMX0NPTk5FQ1RFRCkgewogICAgIHJldHVybiBm
YWxzZTsKKyAgfQogCiAgIGNvbnN0IFNTTF9DSVBIRVIqIGN1cnJlbnRfY2lwaGVyID0gU1NMX2dl
dF9jdXJyZW50X2NpcGhlcihzc2xfKTsKICAgaWYgKGN1cnJlbnRfY2lwaGVyID09IG51bGxwdHIp
IHsKQEAgLTM4MCwxNyArMzg3LDE5IEBAIGludCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6R2V0U3Ns
VmVyc2lvbigpIGNvbnN0IHsKIAogICBpbnQgc3NsX3ZlcnNpb24gPSBTU0xfdmVyc2lvbihzc2xf
KTsKICAgaWYgKHNzbF9tb2RlXyA9PSBTU0xfTU9ERV9EVExTKSB7Ci0gICAgaWYgKHNzbF92ZXJz
aW9uID09IERUTFMxX1ZFUlNJT04pCisgICAgaWYgKHNzbF92ZXJzaW9uID09IERUTFMxX1ZFUlNJ
T04pIHsKICAgICAgIHJldHVybiBTU0xfUFJPVE9DT0xfRFRMU18xMDsKLSAgICBlbHNlIGlmIChz
c2xfdmVyc2lvbiA9PSBEVExTMV8yX1ZFUlNJT04pCisgICAgfSBlbHNlIGlmIChzc2xfdmVyc2lv
biA9PSBEVExTMV8yX1ZFUlNJT04pIHsKICAgICAgIHJldHVybiBTU0xfUFJPVE9DT0xfRFRMU18x
MjsKKyAgICB9CiAgIH0gZWxzZSB7Ci0gICAgaWYgKHNzbF92ZXJzaW9uID09IFRMUzFfVkVSU0lP
TikKKyAgICBpZiAoc3NsX3ZlcnNpb24gPT0gVExTMV9WRVJTSU9OKSB7CiAgICAgICByZXR1cm4g
U1NMX1BST1RPQ09MX1RMU18xMDsKLSAgICBlbHNlIGlmIChzc2xfdmVyc2lvbiA9PSBUTFMxXzFf
VkVSU0lPTikKKyAgICB9IGVsc2UgaWYgKHNzbF92ZXJzaW9uID09IFRMUzFfMV9WRVJTSU9OKSB7
CiAgICAgICByZXR1cm4gU1NMX1BST1RPQ09MX1RMU18xMTsKLSAgICBlbHNlIGlmIChzc2xfdmVy
c2lvbiA9PSBUTFMxXzJfVkVSU0lPTikKKyAgICB9IGVsc2UgaWYgKHNzbF92ZXJzaW9uID09IFRM
UzFfMl9WRVJTSU9OKSB7CiAgICAgICByZXR1cm4gU1NMX1BST1RPQ09MX1RMU18xMjsKKyAgICB9
CiAgIH0KIAogICByZXR1cm4gLTE7CkBAIC00MDMsMTUgKzQxMiwxMSBAQCBib29sIE9wZW5TU0xT
dHJlYW1BZGFwdGVyOjpFeHBvcnRLZXlpbmdNYXRlcmlhbChjb25zdCBzdGQ6OnN0cmluZyYgbGFi
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHVzZV9jb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCogcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHJlc3VsdF9sZW4pIHsKLSAgaW50IGk7Ci0KLSAgaSA9IFNT
TF9leHBvcnRfa2V5aW5nX21hdGVyaWFsKHNzbF8sIHJlc3VsdCwgcmVzdWx0X2xlbiwgbGFiZWwu
Y19zdHIoKSwKKyAgaWYgKFNTTF9leHBvcnRfa2V5aW5nX21hdGVyaWFsKHNzbF8sIHJlc3VsdCwg
cmVzdWx0X2xlbiwgbGFiZWwuY19zdHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxhYmVsLmxlbmd0aCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjb250ZXh0KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfbGVuLCB1c2VfY29udGV4dCk7Ci0K
LSAgaWYgKGkgIT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRf
bGVuLCB1c2VfY29udGV4dCkgIT0gMSkgewogICAgIHJldHVybiBmYWxzZTsKLQorICB9CiAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC00MTksOCArNDI0LDkgQEAgYm9vbCBPcGVuU1NMU3RyZWFtQWRh
cHRlcjo6U2V0RHRsc1NydHBDcnlwdG9TdWl0ZXMoCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8aW50
PiYgY2lwaGVycykgewogICBzdGQ6OnN0cmluZyBpbnRlcm5hbF9jaXBoZXJzOwogCi0gIGlmIChz
dGF0ZV8gIT0gU1NMX05PTkUpCisgIGlmIChzdGF0ZV8gIT0gU1NMX05PTkUpIHsKICAgICByZXR1
cm4gZmFsc2U7CisgIH0KIAogICBmb3IgKHN0ZDo6dmVjdG9yPGludD46OmNvbnN0X2l0ZXJhdG9y
IGNpcGhlciA9IGNpcGhlcnMuYmVnaW4oKTsKICAgICAgICBjaXBoZXIgIT0gY2lwaGVycy5lbmQo
KTsgKytjaXBoZXIpIHsKQEAgLTQyOSw4ICs0MzUsOSBAQCBib29sIE9wZW5TU0xTdHJlYW1BZGFw
dGVyOjpTZXREdGxzU3J0cENyeXB0b1N1aXRlcygKICAgICAgICAgICsrZW50cnkpIHsKICAgICAg
IGlmICgqY2lwaGVyID09IGVudHJ5LT5pZCkgewogICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAg
ICAgIGlmICghaW50ZXJuYWxfY2lwaGVycy5lbXB0eSgpKQorICAgICAgICBpZiAoIWludGVybmFs
X2NpcGhlcnMuZW1wdHkoKSkgewogICAgICAgICAgIGludGVybmFsX2NpcGhlcnMgKz0gIjoiOwor
ICAgICAgICB9CiAgICAgICAgIGludGVybmFsX2NpcGhlcnMgKz0gZW50cnktPmludGVybmFsX25h
bWU7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtNDQyLDggKzQ0OSw5IEBAIGJvb2wgT3Bl
blNTTFN0cmVhbUFkYXB0ZXI6OlNldER0bHNTcnRwQ3J5cHRvU3VpdGVzKAogICAgIH0KICAgfQog
Ci0gIGlmIChpbnRlcm5hbF9jaXBoZXJzLmVtcHR5KCkpCisgIGlmIChpbnRlcm5hbF9jaXBoZXJz
LmVtcHR5KCkpIHsKICAgICByZXR1cm4gZmFsc2U7CisgIH0KIAogICBzcnRwX2NpcGhlcnNfID0g
aW50ZXJuYWxfY2lwaGVyczsKICAgcmV0dXJuIHRydWU7CkBAIC00NTEsMTQgKzQ1OSwxNiBAQCBi
b29sIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpTZXREdGxzU3J0cENyeXB0b1N1aXRlcygKIAogYm9v
bCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6R2V0RHRsc1NydHBDcnlwdG9TdWl0ZShpbnQqIGNyeXB0
b19zdWl0ZSkgewogICBSVENfRENIRUNLKHN0YXRlXyA9PSBTU0xfQ09OTkVDVEVEKTsKLSAgaWYg
KHN0YXRlXyAhPSBTU0xfQ09OTkVDVEVEKQorICBpZiAoc3RhdGVfICE9IFNTTF9DT05ORUNURUQp
IHsKICAgICByZXR1cm4gZmFsc2U7CisgIH0KIAogICBjb25zdCBTUlRQX1BST1RFQ1RJT05fUFJP
RklMRSogc3J0cF9wcm9maWxlID0KICAgICAgIFNTTF9nZXRfc2VsZWN0ZWRfc3J0cF9wcm9maWxl
KHNzbF8pOwogCi0gIGlmICghc3J0cF9wcm9maWxlKQorICBpZiAoIXNydHBfcHJvZmlsZSkgewog
ICAgIHJldHVybiBmYWxzZTsKKyAgfQogCiAgICpjcnlwdG9fc3VpdGUgPSBzcnRwX3Byb2ZpbGUt
PmlkOwogICBSVENfRENIRUNLKCFTcnRwQ3J5cHRvU3VpdGVUb05hbWUoKmNyeXB0b19zdWl0ZSku
ZW1wdHkoKSk7CkBAIC00NzAsOCArNDgwLDggQEAgYm9vbCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6
SXNUbHNDb25uZWN0ZWQoKSB7CiB9CiAKIGludCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6U3RhcnRT
U0woKSB7CisgIC8vIERvbid0IGFsbG93IFN0YXJ0U1NMIHRvIGJlIGNhbGxlZCB0d2ljZS4KICAg
aWYgKHN0YXRlXyAhPSBTU0xfTk9ORSkgewotICAgIC8vIERvbid0IGFsbG93IFN0YXJ0U1NMIHRv
IGJlIGNhbGxlZCB0d2ljZS4KICAgICByZXR1cm4gLTE7CiAgIH0KIApAQCAtNTI0LDcgKzUzNCw3
IEBAIFN0cmVhbVJlc3VsdCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6V3JpdGUoY29uc3Qgdm9pZCog
ZGF0YSwKICAgICAgIHJldHVybiBTUl9CTE9DSzsKIAogICAgIGNhc2UgU1NMX0NPTk5FQ1RFRDoK
LSAgICAgIGlmICh3YWl0aW5nX3RvX3ZlcmlmeV9wZWVyX2NlcnRpZmljYXRlKCkpIHsKKyAgICAg
IGlmIChXYWl0aW5nVG9WZXJpZnlQZWVyQ2VydGlmaWNhdGUoKSkgewogICAgICAgICByZXR1cm4g
U1JfQkxPQ0s7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTUzMiwxNSArNTQyLDE3IEBAIFN0
cmVhbVJlc3VsdCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6V3JpdGUoY29uc3Qgdm9pZCogZGF0YSwK
ICAgICBjYXNlIFNTTF9FUlJPUjoKICAgICBjYXNlIFNTTF9DTE9TRUQ6CiAgICAgZGVmYXVsdDoK
LSAgICAgIGlmIChlcnJvcikKKyAgICAgIGlmIChlcnJvcikgewogICAgICAgICAqZXJyb3IgPSBz
c2xfZXJyb3JfY29kZV87CisgICAgICB9CiAgICAgICByZXR1cm4gU1JfRVJST1I7CiAgIH0KIAog
ICAvLyBPcGVuU1NMIHdpbGwgcmV0dXJuIGFuIGVycm9yIGlmIHdlIHRyeSB0byB3cml0ZSB6ZXJv
IGJ5dGVzCiAgIGlmIChkYXRhX2xlbiA9PSAwKSB7Ci0gICAgaWYgKHdyaXR0ZW4pCisgICAgaWYg
KHdyaXR0ZW4pIHsKICAgICAgICp3cml0dGVuID0gMDsKKyAgICB9CiAgICAgcmV0dXJuIFNSX1NV
Q0NFU1M7CiAgIH0KIApAQCAtNTY3LDggKzU3OSw5IEBAIFN0cmVhbVJlc3VsdCBPcGVuU1NMU3Ry
ZWFtQWRhcHRlcjo6V3JpdGUoY29uc3Qgdm9pZCogZGF0YSwKICAgICBjYXNlIFNTTF9FUlJPUl9a
RVJPX1JFVFVSTjoKICAgICBkZWZhdWx0OgogICAgICAgRXJyb3IoIlNTTF93cml0ZSIsIChzc2xf
ZXJyb3IgPyBzc2xfZXJyb3IgOiAtMSksIDAsIGZhbHNlKTsKLSAgICAgIGlmIChlcnJvcikKKyAg
ICAgIGlmIChlcnJvcikgewogICAgICAgICAqZXJyb3IgPSBzc2xfZXJyb3JfY29kZV87CisgICAg
ICB9CiAgICAgICByZXR1cm4gU1JfRVJST1I7CiAgIH0KICAgLy8gbm90IHJlYWNoZWQKQEAgLTU4
MywzMSArNTk2LDI5IEBAIFN0cmVhbVJlc3VsdCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6UmVhZCh2
b2lkKiBkYXRhLAogICAgIGNhc2UgU1NMX05PTkU6CiAgICAgICAvLyBwYXNzLXRocm91Z2ggaW4g
Y2xlYXIgdGV4dAogICAgICAgcmV0dXJuIFN0cmVhbUFkYXB0ZXJJbnRlcmZhY2U6OlJlYWQoZGF0
YSwgZGF0YV9sZW4sIHJlYWQsIGVycm9yKTsKLQogICAgIGNhc2UgU1NMX1dBSVQ6CiAgICAgY2Fz
ZSBTU0xfQ09OTkVDVElORzoKICAgICAgIHJldHVybiBTUl9CTE9DSzsKLQogICAgIGNhc2UgU1NM
X0NPTk5FQ1RFRDoKLSAgICAgIGlmICh3YWl0aW5nX3RvX3ZlcmlmeV9wZWVyX2NlcnRpZmljYXRl
KCkpIHsKKyAgICAgIGlmIChXYWl0aW5nVG9WZXJpZnlQZWVyQ2VydGlmaWNhdGUoKSkgewogICAg
ICAgICByZXR1cm4gU1JfQkxPQ0s7CiAgICAgICB9CiAgICAgICBicmVhazsKLQogICAgIGNhc2Ug
U1NMX0NMT1NFRDoKICAgICAgIHJldHVybiBTUl9FT1M7Ci0KICAgICBjYXNlIFNTTF9FUlJPUjoK
ICAgICBkZWZhdWx0OgotICAgICAgaWYgKGVycm9yKQorICAgICAgaWYgKGVycm9yKSB7CiAgICAg
ICAgICplcnJvciA9IHNzbF9lcnJvcl9jb2RlXzsKKyAgICAgIH0KICAgICAgIHJldHVybiBTUl9F
UlJPUjsKICAgfQogCiAgIC8vIERvbid0IHRydXN0IE9wZW5TU0wgd2l0aCB6ZXJvIGJ5dGUgcmVh
ZHMKICAgaWYgKGRhdGFfbGVuID09IDApIHsKLSAgICBpZiAocmVhZCkKKyAgICBpZiAocmVhZCkg
ewogICAgICAgKnJlYWQgPSAwOworICAgIH0KICAgICByZXR1cm4gU1JfU1VDQ0VTUzsKICAgfQog
CkBAIC02MjAsOCArNjMxLDkgQEAgU3RyZWFtUmVzdWx0IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpS
ZWFkKHZvaWQqIGRhdGEsCiAgICAgICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICIgLS0gc3VjY2Vz
cyI7CiAgICAgICBSVENfRENIRUNLX0dUKGNvZGUsIDApOwogICAgICAgUlRDX0RDSEVDS19MRShj
b2RlLCBkYXRhX2xlbik7Ci0gICAgICBpZiAocmVhZCkKKyAgICAgIGlmIChyZWFkKSB7CiAgICAg
ICAgICpyZWFkID0gY29kZTsKKyAgICAgIH0KIAogICAgICAgaWYgKHNzbF9tb2RlXyA9PSBTU0xf
TU9ERV9EVExTKSB7CiAgICAgICAgIC8vIEVuZm9yY2UgYXRvbWljIHJlYWRzIC0tIHRoaXMgaXMg
YSBzaG9ydCByZWFkCkBAIC02MzAsOCArNjQyLDkgQEAgU3RyZWFtUmVzdWx0IE9wZW5TU0xTdHJl
YW1BZGFwdGVyOjpSZWFkKHZvaWQqIGRhdGEsCiAgICAgICAgIGlmIChwZW5kaW5nKSB7CiAgICAg
ICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiIC0tIHNob3J0IERUTFMgcmVhZC4gZmx1c2hpbmci
OwogICAgICAgICAgIEZsdXNoSW5wdXQocGVuZGluZyk7Ci0gICAgICAgICAgaWYgKGVycm9yKQor
ICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgKmVycm9yID0gU1NFX01TR19UUlVO
QzsKKyAgICAgICAgICB9CiAgICAgICAgICAgcmV0dXJuIFNSX0VSUk9SOwogICAgICAgICB9CiAg
ICAgICB9CkBAIC02NTAsOCArNjYzLDkgQEAgU3RyZWFtUmVzdWx0IE9wZW5TU0xTdHJlYW1BZGFw
dGVyOjpSZWFkKHZvaWQqIGRhdGEsCiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg
RXJyb3IoIlNTTF9yZWFkIiwgKHNzbF9lcnJvciA/IHNzbF9lcnJvciA6IC0xKSwgMCwgZmFsc2Up
OwotICAgICAgaWYgKGVycm9yKQorICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICplcnJvciA9
IHNzbF9lcnJvcl9jb2RlXzsKKyAgICAgIH0KICAgICAgIHJldHVybiBTUl9FUlJPUjsKICAgfQog
ICAvLyBub3QgcmVhY2hlZApAQCAtNjk0LDEzICs3MDgsMTMgQEAgU3RyZWFtU3RhdGUgT3BlblNT
TFN0cmVhbUFkYXB0ZXI6OkdldFN0YXRlKCkgY29uc3QgewogICAgIGNhc2UgU1NMX0NPTk5FQ1RJ
Tkc6CiAgICAgICByZXR1cm4gU1NfT1BFTklORzsKICAgICBjYXNlIFNTTF9DT05ORUNURUQ6Ci0g
ICAgICBpZiAod2FpdGluZ190b192ZXJpZnlfcGVlcl9jZXJ0aWZpY2F0ZSgpKSB7CisgICAgICBp
ZiAoV2FpdGluZ1RvVmVyaWZ5UGVlckNlcnRpZmljYXRlKCkpIHsKICAgICAgICAgcmV0dXJuIFNT
X09QRU5JTkc7CiAgICAgICB9CiAgICAgICByZXR1cm4gU1NfT1BFTjsKICAgICBkZWZhdWx0Ogog
ICAgICAgcmV0dXJuIFNTX0NMT1NFRDsKLSAgfTsKKyAgfQogICAvLyBub3QgcmVhY2hlZAogfQog
CkBAIC03MTAsNiArNzI0LDcgQEAgdm9pZCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6T25FdmVudChT
dHJlYW1JbnRlcmZhY2UqIHN0cmVhbSwKICAgaW50IGV2ZW50c190b19zaWduYWwgPSAwOwogICBp
bnQgc2lnbmFsX2Vycm9yID0gMDsKICAgUlRDX0RDSEVDSyhzdHJlYW0gPT0gdGhpcy0+c3RyZWFt
KCkpOworCiAgIGlmICgoZXZlbnRzICYgU0VfT1BFTikpIHsKICAgICBSVENfTE9HKExTX1ZFUkJP
U0UpIDw8ICJPcGVuU1NMU3RyZWFtQWRhcHRlcjo6T25FdmVudCBTRV9PUEVOIjsKICAgICBpZiAo
c3RhdGVfICE9IFNTTF9XQUlUKSB7CkBAIC03MjMsNiArNzM4LDcgQEAgdm9pZCBPcGVuU1NMU3Ry
ZWFtQWRhcHRlcjo6T25FdmVudChTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSwKICAgICAgIH0KICAg
ICB9CiAgIH0KKwogICBpZiAoKGV2ZW50cyAmIChTRV9SRUFEIHwgU0VfV1JJVEUpKSkgewogICAg
IFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIk9wZW5TU0xTdHJlYW1BZGFwdGVyOjpPbkV2ZW50Igog
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgKChldmVudHMgJiBTRV9SRUFEKSA/ICIgU0VfUkVB
RCIgOiAiIikKQEAgLTc0Nyw2ICs3NjMsNyBAQCB2b2lkIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpP
bkV2ZW50KFN0cmVhbUludGVyZmFjZSogc3RyZWFtLAogICAgICAgfQogICAgIH0KICAgfQorCiAg
IGlmICgoZXZlbnRzICYgU0VfQ0xPU0UpKSB7CiAgICAgUlRDX0xPRyhMU19WRVJCT1NFKSA8PCAi
T3BlblNTTFN0cmVhbUFkYXB0ZXI6Ok9uRXZlbnQoU0VfQ0xPU0UsICIgPDwgZXJyCiAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiKSI7CkBAIC03NTYsOCArNzczLDEwIEBAIHZvaWQgT3BlblNT
TFN0cmVhbUFkYXB0ZXI6Ok9uRXZlbnQoU3RyZWFtSW50ZXJmYWNlKiBzdHJlYW0sCiAgICAgUlRD
X0RDSEVDSyhzaWduYWxfZXJyb3IgPT0gMCk7CiAgICAgc2lnbmFsX2Vycm9yID0gZXJyOwogICB9
Ci0gIGlmIChldmVudHNfdG9fc2lnbmFsKQorCisgIGlmIChldmVudHNfdG9fc2lnbmFsKSB7CiAg
ICAgU3RyZWFtQWRhcHRlckludGVyZmFjZTo6T25FdmVudChzdHJlYW0sIGV2ZW50c190b19zaWdu
YWwsIHNpZ25hbF9lcnJvcik7CisgIH0KIH0KIAogaW50IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpC
ZWdpblNTTCgpIHsKQEAgLTc3MCwxMiArNzg5LDE0IEBAIGludCBPcGVuU1NMU3RyZWFtQWRhcHRl
cjo6QmVnaW5TU0woKSB7CiAgIC8vIEZpcnN0IHNldCB1cCB0aGUgY29udGV4dC4KICAgUlRDX0RD
SEVDSyhzc2xfY3R4XyA9PSBudWxscHRyKTsKICAgc3NsX2N0eF8gPSBTZXR1cFNTTENvbnRleHQo
KTsKLSAgaWYgKCFzc2xfY3R4XykKKyAgaWYgKCFzc2xfY3R4XykgewogICAgIHJldHVybiAtMTsK
KyAgfQogCiAgIGJpbyA9IEJJT19uZXdfc3RyZWFtKHN0YXRpY19jYXN0PFN0cmVhbUludGVyZmFj
ZSo+KHN0cmVhbSgpKSk7Ci0gIGlmICghYmlvKQorICBpZiAoIWJpbykgewogICAgIHJldHVybiAt
MTsKKyAgfQogCiAgIHNzbF8gPSBTU0xfbmV3KHNzbF9jdHhfKTsKICAgaWYgKCFzc2xfKSB7CkBA
IC04MDUsOCArODI2LDkgQEAgaW50IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpCZWdpblNTTCgpIHsK
ICAgLy8gY29tbW9ubHkgc3VwcG9ydGVkLiBCb3JpbmdTU0wgZG9lc24ndCBuZWVkIGV4cGxpY2l0
IGNvbmZpZ3VyYXRpb24gYW5kIGhhcwogICAvLyBhIHJlYXNvbmFibGUgZGVmYXVsdCBzZXQuCiAg
IEVDX0tFWSogZWNkaCA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShOSURfWDlfNjJfcHJpbWUy
NTZ2MSk7Ci0gIGlmIChlY2RoID09IG51bGxwdHIpCisgIGlmIChlY2RoID09IG51bGxwdHIpIHsK
ICAgICByZXR1cm4gLTE7CisgIH0KICAgU1NMX3NldF9vcHRpb25zKHNzbF8sIFNTTF9PUF9TSU5H
TEVfRUNESF9VU0UpOwogICBTU0xfc2V0X3RtcF9lY2RoKHNzbF8sIGVjZGgpOwogICBFQ19LRVlf
ZnJlZShlY2RoKTsKQEAgLTgzMCwxMCArODUyLDEwIEBAIGludCBPcGVuU1NMU3RyZWFtQWRhcHRl
cjo6Q29udGludWVTU0woKSB7CiAgICAgICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICIgLS0gc3Vj
Y2VzcyI7CiAgICAgICAvLyBCeSB0aGlzIHBvaW50LCBPcGVuU1NMIHNob3VsZCBoYXZlIGdpdmVu
IHVzIGEgY2VydGlmaWNhdGUsIG9yIGVycm9yZWQKICAgICAgIC8vIG91dCBpZiBvbmUgd2FzIG1p
c3NpbmcuCi0gICAgICBSVENfRENIRUNLKHBlZXJfY2VydF9jaGFpbl8gfHwgIWNsaWVudF9hdXRo
X2VuYWJsZWQoKSk7CisgICAgICBSVENfRENIRUNLKHBlZXJfY2VydF9jaGFpbl8gfHwgIUdldENs
aWVudEF1dGhFbmFibGVkKCkpOwogCiAgICAgICBzdGF0ZV8gPSBTU0xfQ09OTkVDVEVEOwotICAg
ICAgaWYgKCF3YWl0aW5nX3RvX3ZlcmlmeV9wZWVyX2NlcnRpZmljYXRlKCkpIHsKKyAgICAgIGlm
ICghV2FpdGluZ1RvVmVyaWZ5UGVlckNlcnRpZmljYXRlKCkpIHsKICAgICAgICAgLy8gV2UgaGF2
ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gc3RhcnQgdGhlIGNvbm5lY3Rpb24sIHNvIHNpZ25hbAog
ICAgICAgICAvLyBTRV9PUEVOLiBJZiB3ZSBuZWVkIGEgY2xpZW50IGNlcnRpZmljYXRlIGZpbmdl
cnByaW50IGFuZCBkb24ndCBoYXZlCiAgICAgICAgIC8vIGl0IHlldCwgd2UnbGwgaW5zdGVhZCBz
aWduYWwgU0VfT1BFTiBpbiBTZXRQZWVyQ2VydGlmaWNhdGVEaWdlc3QuCkBAIC04ODYsOCArOTA4
LDkgQEAgdm9pZCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6RXJyb3IoY29uc3QgY2hhciogY29udGV4
dCwKICAgc3RhdGVfID0gU1NMX0VSUk9SOwogICBzc2xfZXJyb3JfY29kZV8gPSBlcnI7CiAgIENs
ZWFudXAoYWxlcnQpOwotICBpZiAoc2lnbmFsKQorICBpZiAoc2lnbmFsKSB7CiAgICAgU3RyZWFt
QWRhcHRlckludGVyZmFjZTo6T25FdmVudChzdHJlYW0oKSwgU0VfQ0xPU0UsIGVycik7CisgIH0K
IH0KIAogdm9pZCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6Q2xlYW51cCh1aW50OF90IGFsZXJ0KSB7
CkBAIC05OTAsOCArMTAxMyw5IEBAIFNTTF9DVFgqIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpTZXR1
cFNTTENvbnRleHQoKSB7CiAgIGN0eCA9IFNTTF9DVFhfbmV3KG1ldGhvZCk7CiAjZW5kaWYgIC8v
IE9QRU5TU0xfSVNfQk9SSU5HU1NMCiAKLSAgaWYgKGN0eCA9PSBudWxscHRyKQorICBpZiAoY3R4
ID09IG51bGxwdHIpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQogCiAjaWZkZWYgT1BFTlNT
TF9JU19CT1JJTkdTU0wKICAgU1NMX0NUWF9zZXRfbWluX3Byb3RvX3ZlcnNpb24oCkBAIC0xMDI2
LDcgKzEwNTAsNyBAQCBTU0xfQ1RYKiBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6U2V0dXBTU0xDb250
ZXh0KCkgewogI2VuZGlmCiAKICAgaW50IG1vZGUgPSBTU0xfVkVSSUZZX1BFRVI7Ci0gIGlmIChj
bGllbnRfYXV0aF9lbmFibGVkKCkpIHsKKyAgaWYgKEdldENsaWVudEF1dGhFbmFibGVkKCkpIHsK
ICAgICAvLyBSZXF1aXJlIGEgY2VydGlmaWNhdGUgZnJvbSB0aGUgY2xpZW50LgogICAgIC8vIE5v
dGU6IE5vcm1hbGx5IHRoaXMgaXMgYWx3YXlzIHRydWUgaW4gcHJvZHVjdGlvbiwgYnV0IGl0IG1h
eSBiZSBkaXNhYmxlZAogICAgIC8vIGZvciB0ZXN0aW5nIHB1cnBvc2VzIChlLmcuIFNTTEFkYXB0
ZXIgdW5pdCB0ZXN0cykuCkBAIC0xMDU4LDcgKzEwODIsNyBAQCBTU0xfQ1RYKiBPcGVuU1NMU3Ry
ZWFtQWRhcHRlcjo6U2V0dXBTU0xDb250ZXh0KCkgewogfQogCiBib29sIE9wZW5TU0xTdHJlYW1B
ZGFwdGVyOjpWZXJpZnlQZWVyQ2VydGlmaWNhdGUoKSB7Ci0gIGlmICghaGFzX3BlZXJfY2VydGlm
aWNhdGVfZGlnZXN0KCkgfHwgIXBlZXJfY2VydF9jaGFpbl8gfHwKKyAgaWYgKCFIYXNQZWVyQ2Vy
dGlmaWNhdGVEaWdlc3QoKSB8fCAhcGVlcl9jZXJ0X2NoYWluXyB8fAogICAgICAgIXBlZXJfY2Vy
dF9jaGFpbl8tPkdldFNpemUoKSkgewogICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIk1pc3Np
bmcgZGlnZXN0IG9yIHBlZXIgY2VydGlmaWNhdGUuIjsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
MDkxLDcgKzExMTUsNyBAQCBib29sIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpWZXJpZnlQZWVyQ2Vy
dGlmaWNhdGUoKSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0Q2hhaW4+IE9wZW5TU0xTdHJl
YW1BZGFwdGVyOjpHZXRQZWVyU1NMQ2VydENoYWluKCkKICAgICBjb25zdCB7Ci0gIHJldHVybiBw
ZWVyX2NlcnRfY2hhaW5fID8gcGVlcl9jZXJ0X2NoYWluXy0+VW5pcXVlQ29weSgpIDogbnVsbHB0
cjsKKyAgcmV0dXJuIHBlZXJfY2VydF9jaGFpbl8gPyBwZWVyX2NlcnRfY2hhaW5fLT5DbG9uZSgp
IDogbnVsbHB0cjsKIH0KIAogaW50IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpTU0xWZXJpZnlDYWxs
YmFjayhYNTA5X1NUT1JFX0NUWCogc3RvcmUsIHZvaWQqIGFyZykgewpAQCAtMTE3NiwxNSArMTIw
MCwxNyBAQCBzdGF0aWMgY29uc3QgY2lwaGVyX2xpc3QgT0tfRUNEU0FfY2lwaGVyc1tdID0gewog
Ym9vbCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6SXNBY2NlcHRhYmxlQ2lwaGVyKGludCBjaXBoZXIs
IEtleVR5cGUga2V5X3R5cGUpIHsKICAgaWYgKGtleV90eXBlID09IEtUX1JTQSkgewogICAgIGZv
ciAoY29uc3QgY2lwaGVyX2xpc3QmIGMgOiBPS19SU0FfY2lwaGVycykgewotICAgICAgaWYgKGNp
cGhlciA9PSBjLmNpcGhlcikKKyAgICAgIGlmIChjaXBoZXIgPT0gYy5jaXBoZXIpIHsKICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICB9CiAgICAgfQogICB9CiAKICAgaWYgKGtleV90eXBlID09
IEtUX0VDRFNBKSB7CiAgICAgZm9yIChjb25zdCBjaXBoZXJfbGlzdCYgYyA6IE9LX0VDRFNBX2Np
cGhlcnMpIHsKLSAgICAgIGlmIChjaXBoZXIgPT0gYy5jaXBoZXIpCisgICAgICBpZiAoY2lwaGVy
ID09IGMuY2lwaGVyKSB7CiAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQogICAgIH0KICAg
fQogCkBAIC0xMTk1LDIyICsxMjIxLDI0IEBAIGJvb2wgT3BlblNTTFN0cmVhbUFkYXB0ZXI6Oklz
QWNjZXB0YWJsZUNpcGhlcihjb25zdCBzdGQ6OnN0cmluZyYgY2lwaGVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleVR5cGUga2V5X3R5cGUpIHsKICAg
aWYgKGtleV90eXBlID09IEtUX1JTQSkgewogICAgIGZvciAoY29uc3QgY2lwaGVyX2xpc3QmIGMg
OiBPS19SU0FfY2lwaGVycykgewotICAgICAgaWYgKGNpcGhlciA9PSBjLmNpcGhlcl9zdHIpCisg
ICAgICBpZiAoY2lwaGVyID09IGMuY2lwaGVyX3N0cikgewogICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgIH0KICAgICB9CiAgIH0KIAogICBpZiAoa2V5X3R5cGUgPT0gS1RfRUNEU0EpIHsKICAg
ICBmb3IgKGNvbnN0IGNpcGhlcl9saXN0JiBjIDogT0tfRUNEU0FfY2lwaGVycykgewotICAgICAg
aWYgKGNpcGhlciA9PSBjLmNpcGhlcl9zdHIpCisgICAgICBpZiAoY2lwaGVyID09IGMuY2lwaGVy
X3N0cikgewogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KICAgICB9CiAgIH0KIAogICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OmVuYWJsZV90aW1l
X2NhbGxiYWNrX2Zvcl90ZXN0aW5nKCkgewordm9pZCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6RW5h
YmxlVGltZUNhbGxiYWNrRm9yVGVzdGluZygpIHsKICAgZ191c2VfdGltZV9jYWxsYmFja19mb3Jf
dGVzdGluZyA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xzdHJlYW1hZGFwdGVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Nsc3Ry
ZWFtYWRhcHRlci5oCmluZGV4IDYxZmZjM2RiZmUyZDY1MzhiZDMwMzFmYzk3MGU3NTJjZWE0ZjQz
ZmYuLmUwMTJkMTcyYTYyYTBiNDU5NWM5MDVjYzYxMjgxYzQ5ODk3NTZlZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5z
c2xzdHJlYW1hZGFwdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHN0cmVhbWFkYXB0ZXIuaApAQCAtMTMsMTMgKzEzLDE4
IEBACiAKICNpbmNsdWRlIDxvcGVuc3NsL29zc2xfdHlwLmg+CiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3Ry
aW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL29w
ZW5zc2xpZGVudGl0eS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N0
cmVhbS5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApAQCAtNDcsMTEgKzUyLDExIEBAIG5hbWVzcGFj
ZSBydGMgewogCiAvLyBMb29rIGluIHNzbHN0cmVhbWFkYXB0ZXIuaCBmb3IgZG9jdW1lbnRhdGlv
biBvZiB0aGUgbWV0aG9kcy4KIAotY2xhc3MgT3BlblNTTElkZW50aXR5OworY2xhc3MgU1NMQ2Vy
dENoYWluOwogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLWNsYXNzIE9wZW5TU0xTdHJlYW1B
ZGFwdGVyIDogcHVibGljIFNTTFN0cmVhbUFkYXB0ZXIgeworY2xhc3MgT3BlblNTTFN0cmVhbUFk
YXB0ZXIgZmluYWwgOiBwdWJsaWMgU1NMU3RyZWFtQWRhcHRlciB7CiAgcHVibGljOgogICBleHBs
aWNpdCBPcGVuU1NMU3RyZWFtQWRhcHRlcihTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSk7CiAgIH5P
cGVuU1NMU3RyZWFtQWRhcHRlcigpIG92ZXJyaWRlOwpAQCAtMTE1LDcgKzEyMCw3IEBAIGNsYXNz
IE9wZW5TU0xTdHJlYW1BZGFwdGVyIDogcHVibGljIFNTTFN0cmVhbUFkYXB0ZXIgewogCiAgIC8v
IFVzZSBvdXIgdGltZXV0aWxzLmggc291cmNlIG9mIHRpbWluZyBpbiBCb3JpbmdTU0wsIGFsbG93
aW5nIHVzIHRvIHRlc3QKICAgLy8gdXNpbmcgYSBmYWtlIGNsb2NrLgotICBzdGF0aWMgdm9pZCBl
bmFibGVfdGltZV9jYWxsYmFja19mb3JfdGVzdGluZygpOworICBzdGF0aWMgdm9pZCBFbmFibGVU
aW1lQ2FsbGJhY2tGb3JUZXN0aW5nKCk7CiAKICBwcm90ZWN0ZWQ6CiAgIHZvaWQgT25FdmVudChT
dHJlYW1JbnRlcmZhY2UqIHN0cmVhbSwgaW50IGV2ZW50cywgaW50IGVycikgb3ZlcnJpZGU7CkBA
IC0xNzAsMTEgKzE3NSwxMSBAQCBjbGFzcyBPcGVuU1NMU3RyZWFtQWRhcHRlciA6IHB1YmxpYyBT
U0xTdHJlYW1BZGFwdGVyIHsKICAgLy8gU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2FsbGJhY2su
CiAgIHN0YXRpYyBpbnQgU1NMVmVyaWZ5Q2FsbGJhY2soWDUwOV9TVE9SRV9DVFgqIHN0b3JlLCB2
b2lkKiBhcmcpOwogCi0gIGJvb2wgd2FpdGluZ190b192ZXJpZnlfcGVlcl9jZXJ0aWZpY2F0ZSgp
IGNvbnN0IHsKLSAgICByZXR1cm4gY2xpZW50X2F1dGhfZW5hYmxlZCgpICYmICFwZWVyX2NlcnRp
ZmljYXRlX3ZlcmlmaWVkXzsKKyAgYm9vbCBXYWl0aW5nVG9WZXJpZnlQZWVyQ2VydGlmaWNhdGUo
KSBjb25zdCB7CisgICAgcmV0dXJuIEdldENsaWVudEF1dGhFbmFibGVkKCkgJiYgIXBlZXJfY2Vy
dGlmaWNhdGVfdmVyaWZpZWRfOwogICB9CiAKLSAgYm9vbCBoYXNfcGVlcl9jZXJ0aWZpY2F0ZV9k
aWdlc3QoKSBjb25zdCB7CisgIGJvb2wgSGFzUGVlckNlcnRpZmljYXRlRGlnZXN0KCkgY29uc3Qg
ewogICAgIHJldHVybiAhcGVlcl9jZXJ0aWZpY2F0ZV9kaWdlc3RfYWxnb3JpdGhtXy5lbXB0eSgp
ICYmCiAgICAgICAgICAgICFwZWVyX2NlcnRpZmljYXRlX2RpZ2VzdF92YWx1ZV8uZW1wdHkoKTsK
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5jYwppbmRleCA0NmY0NTQ3
NDM2ZTExNThhN2I4MDMwODA0M2Y4ZjY3N2QyNWUxOWU4Li5hM2YzMzQ3OGViYzdiMDUxMDBiNzNj
YjMwNDI4MWEwMjQ2YjkyNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsdXRpbGl0
eS5jYwpAQCAtOSwyOSArOSwyMSBAQAogICovCiAKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3Ns
dXRpbGl0eS5oIgotCi0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaWYgZGVmaW5lZChXRUJSVENfUE9T
SVgpCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQogI2lmIGRlZmluZWQoV0VCUlRDX1dJ
TikKIC8vIE11c3QgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIG9wZW5zc2wgaGVhZGVycy4KICNp
bmNsdWRlICJydGNfYmFzZS93aW4zMi5oIiAgLy8gTk9MSU5UCiAjZW5kaWYgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFdFQlJUQ19XSU4KIAotI2luY2x1ZGUgPG9wZW5zc2wvYmlvLmg+Ci0jaW5j
bHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgogI2luY2x1
ZGUgPG9wZW5zc2wveDUwOS5oPgogI2luY2x1ZGUgPG9wZW5zc2wveDUwOXYzLmg+CisjaW5jbHVk
ZSAicnRjX2Jhc2Uvb3BlbnNzbC5oIgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAKICNpbmNsdWRl
ICJydGNfYmFzZS9hcnJheXNpemUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mv
c2FmZV9jb252ZXJzaW9ucy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2wuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKICNpZm5kZWYgV0VCUlRDX0VYQ0xV
REVfQlVJTFRfSU5fU1NMX1JPT1RfQ0VSVFMKICNpbmNsdWRlICJydGNfYmFzZS9zc2xyb290cy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2x1dGlsaXR5LmgKaW5kZXggN2NiMzhiNWI1Mjc2
M2E1MWRkYjQwMjU4OTM2YTY1NmJkNjcyMWY5YS4uNzdlZDBiMWU3Y2NhMWNiNzk2OGE2ODFhY2Jm
MDY1YTlmYTNjMzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5oCkBA
IC0xMyw3ICsxMyw2IEBACiAKICNpbmNsdWRlIDxvcGVuc3NsL29zc2xfdHlwLmg+CiAjaW5jbHVk
ZSA8c3RyaW5nPgotI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCiAKIG5hbWVz
cGFjZSBydGMgewogLy8gVGhlIG9wZW5zc2wgbmFtZXNwYWNlIGhvbGRzIHN0YXRpYyBoZWxwZXIg
bWV0aG9kcy4gQWxsIG1ldGhvZHMgcmVsYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3B0aW9uc2ZpbGUuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcHRpb25zZmls
ZS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM1ODU5YjRjYzA3NTM2NGI0YmM2
MmQxZjg1ZWMzM2RlNTFjMGMxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9vcHRpb25zZmlsZS5jYworKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0vKgot
ICogIENvcHlyaWdodCAyMDA4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
LSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAicnRjX2Jhc2Uvb3B0aW9uc2ZpbGUuaCIKLQotI2lu
Y2x1ZGUgPGN0eXBlLmg+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2Uvc3RyZWFtLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgi
Ci0KLW5hbWVzcGFjZSBydGMgewotCi1PcHRpb25zRmlsZTo6T3B0aW9uc0ZpbGUoY29uc3Qgc3Rk
OjpzdHJpbmcmIHBhdGgpIDogcGF0aF8ocGF0aCkge30KLQotT3B0aW9uc0ZpbGU6On5PcHRpb25z
RmlsZSgpID0gZGVmYXVsdDsKLQotYm9vbCBPcHRpb25zRmlsZTo6TG9hZCgpIHsKLSAgb3B0aW9u
c18uY2xlYXIoKTsKLSAgLy8gT3BlbiBmaWxlLgotICBGaWxlU3RyZWFtIHN0cmVhbTsKLSAgaW50
IGVycjsKLSAgaWYgKCFzdHJlYW0uT3BlbihwYXRoXywgInIiLCAmZXJyKSkgewotICAgIFJUQ19M
T0dfRihMU19XQVJOSU5HKSA8PCAiQ291bGQgbm90IG9wZW4gZmlsZSwgZXJyPSIgPDwgZXJyOwot
ICAgIC8vIFdlIGRvIG5vdCBjb25zaWRlciB0aGlzIGFuIGVycm9yIGJlY2F1c2Ugd2UgZXhwZWN0
IHRoZXJlIHRvIGJlIG5vIGZpbGUKLSAgICAvLyB1bnRpbCB0aGUgdXNlciBzYXZlcyBhIHNldHRp
bmcuCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgLy8gUmVhZCBpbiBhbGwgaXRzIGRhdGEuCi0g
IHN0ZDo6c3RyaW5nIGxpbmU7Ci0gIFN0cmVhbVJlc3VsdCByZXM7Ci0gIGZvciAoOzspIHsKLSAg
ICByZXMgPSBzdHJlYW0uUmVhZExpbmUoJmxpbmUpOwotICAgIGlmIChyZXMgIT0gU1JfU1VDQ0VT
UykgewotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHNpemVfdCBlcXVhbHNfcG9zID0gbGluZS5m
aW5kKCc9Jyk7Ci0gICAgaWYgKGVxdWFsc19wb3MgPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAg
ICAgIC8vIFdlIGRvIG5vdCBjb25zaWRlciB0aGlzIGFuIGVycm9yLiBJbnN0ZWFkIHdlIGlnbm9y
ZSB0aGUgbGluZSBhbmQKLSAgICAgIC8vIGtlZXAgZ29pbmcuCi0gICAgICBSVENfTE9HX0YoTFNf
V0FSTklORykgPDwgIklnbm9yaW5nIG1hbGZvcm1lZCBsaW5lIGluICIgPDwgcGF0aF87Ci0gICAg
ICBjb250aW51ZTsKLSAgICB9Ci0gICAgc3RkOjpzdHJpbmcga2V5KGxpbmUsIDAsIGVxdWFsc19w
b3MpOwotICAgIHN0ZDo6c3RyaW5nIHZhbHVlKGxpbmUsIGVxdWFsc19wb3MgKyAxLCBsaW5lLmxl
bmd0aCgpIC0gKGVxdWFsc19wb3MgKyAxKSk7Ci0gICAgb3B0aW9uc19ba2V5XSA9IHZhbHVlOwot
ICB9Ci0gIGlmIChyZXMgIT0gU1JfRU9TKSB7Ci0gICAgUlRDX0xPR19GKExTX0VSUk9SKSA8PCAi
RXJyb3Igd2hlbiByZWFkaW5nIGZyb20gZmlsZSI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9IGVs
c2UgewotICAgIHJldHVybiB0cnVlOwotICB9Ci19Ci0KLWJvb2wgT3B0aW9uc0ZpbGU6OlNhdmUo
KSB7Ci0gIC8vIE9wZW4gZmlsZS4KLSAgRmlsZVN0cmVhbSBzdHJlYW07Ci0gIGludCBlcnI7Ci0g
IGlmICghc3RyZWFtLk9wZW4ocGF0aF8sICJ3IiwgJmVycikpIHsKLSAgICBSVENfTE9HX0YoTFNf
RVJST1IpIDw8ICJDb3VsZCBub3Qgb3BlbiBmaWxlLCBlcnI9IiA8PCBlcnI7Ci0gICAgcmV0dXJu
IGZhbHNlOwotICB9Ci0gIC8vIFdyaXRlIG91dCBhbGwgdGhlIGRhdGEuCi0gIFN0cmVhbVJlc3Vs
dCByZXMgPSBTUl9TVUNDRVNTOwotICBzaXplX3Qgd3JpdHRlbjsKLSAgaW50IGVycm9yOwotICBm
b3IgKE9wdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBvcHRpb25zXy5iZWdpbigpOyBpICE9
IG9wdGlvbnNfLmVuZCgpOwotICAgICAgICsraSkgewotICAgIHJlcyA9Ci0gICAgICAgIHN0cmVh
bS5Xcml0ZUFsbChpLT5maXJzdC5jX3N0cigpLCBpLT5maXJzdC5sZW5ndGgoKSwgJndyaXR0ZW4s
ICZlcnJvcik7Ci0gICAgaWYgKHJlcyAhPSBTUl9TVUNDRVNTKSB7Ci0gICAgICBicmVhazsKLSAg
ICB9Ci0gICAgcmVzID0gc3RyZWFtLldyaXRlQWxsKCI9IiwgMSwgJndyaXR0ZW4sICZlcnJvcik7
Ci0gICAgaWYgKHJlcyAhPSBTUl9TVUNDRVNTKSB7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAg
cmVzID0gc3RyZWFtLldyaXRlQWxsKGktPnNlY29uZC5jX3N0cigpLCBpLT5zZWNvbmQubGVuZ3Ro
KCksICZ3cml0dGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IpOwotICAgIGlm
IChyZXMgIT0gU1JfU1VDQ0VTUykgewotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJlcyA9IHN0
cmVhbS5Xcml0ZUFsbCgiXG4iLCAxLCAmd3JpdHRlbiwgJmVycm9yKTsKLSAgICBpZiAocmVzICE9
IFNSX1NVQ0NFU1MpIHsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotICBpZiAocmVzICE9IFNS
X1NVQ0NFU1MpIHsKLSAgICBSVENfTE9HX0YoTFNfRVJST1IpIDw8ICJVbmFibGUgdG8gd3JpdGUg
dG8gZmlsZSI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9IGVsc2UgewotICAgIHJldHVybiB0cnVl
OwotICB9Ci19Ci0KLWJvb2wgT3B0aW9uc0ZpbGU6OklzTGVnYWxOYW1lKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBuYW1lKSB7Ci0gIGZvciAoc2l6ZV90IHBvcyA9IDA7IHBvcyA8IG5hbWUubGVuZ3RoKCk7
ICsrcG9zKSB7Ci0gICAgaWYgKG5hbWVbcG9zXSA9PSAnXG4nIHx8IG5hbWVbcG9zXSA9PSAnXFwn
IHx8IG5hbWVbcG9zXSA9PSAnPScpIHsKLSAgICAgIC8vIElsbGVnYWwgY2hhcmFjdGVyLgotICAg
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiSWdub3Jpbmcgb3BlcmF0aW9uIGZvciBpbGxlZ2Fs
IG9wdGlvbiAiIDw8IG5hbWU7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0gIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIE9wdGlvbnNGaWxlOjpJc0xlZ2FsVmFsdWUoY29uc3Qgc3Rk
OjpzdHJpbmcmIHZhbHVlKSB7Ci0gIGZvciAoc2l6ZV90IHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxl
bmd0aCgpOyArK3BvcykgewotICAgIGlmICh2YWx1ZVtwb3NdID09ICdcbicgfHwgdmFsdWVbcG9z
XSA9PSAnXFwnKSB7Ci0gICAgICAvLyBJbGxlZ2FsIGNoYXJhY3Rlci4KLSAgICAgIFJUQ19MT0co
TFNfV0FSTklORykgPDwgIklnbm9yaW5nIG9wZXJhdGlvbiBmb3IgaWxsZWdhbCB2YWx1ZSAiIDw8
IHZhbHVlOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBPcHRpb25zRmlsZTo6R2V0U3RyaW5nVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcm
IG9wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBv
dXRfdmFsKSBjb25zdCB7Ci0gIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIk9wdGlvbnNGaWxlOjpH
ZXRTdHJpbmdWYWx1ZSAiIDw8IG9wdGlvbjsKLSAgaWYgKCFJc0xlZ2FsTmFtZShvcHRpb24pKSB7
Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIE9wdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGkg
PSBvcHRpb25zXy5maW5kKG9wdGlvbik7Ci0gIGlmIChpID09IG9wdGlvbnNfLmVuZCgpKSB7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gICpvdXRfdmFsID0gaS0+c2Vjb25kOwotICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBPcHRpb25zRmlsZTo6R2V0SW50VmFsdWUoY29uc3Qgc3RkOjpzdHJp
bmcmIG9wdGlvbiwgaW50KiBvdXRfdmFsKSBjb25zdCB7Ci0gIFJUQ19MT0coTFNfVkVSQk9TRSkg
PDwgIk9wdGlvbnNGaWxlOjpHZXRJbnRWYWx1ZSAiIDw8IG9wdGlvbjsKLSAgaWYgKCFJc0xlZ2Fs
TmFtZShvcHRpb24pKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIE9wdGlvbnNNYXA6OmNv
bnN0X2l0ZXJhdG9yIGkgPSBvcHRpb25zXy5maW5kKG9wdGlvbik7Ci0gIGlmIChpID09IG9wdGlv
bnNfLmVuZCgpKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHJldHVybiBGcm9tU3RyaW5n
KGktPnNlY29uZCwgb3V0X3ZhbCk7Ci19Ci0KLWJvb2wgT3B0aW9uc0ZpbGU6OlNldFN0cmluZ1Zh
bHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKLSAgUlRDX0xPRyhMU19WRVJCT1NF
KSA8PCAiT3B0aW9uc0ZpbGU6OlNldFN0cmluZ1ZhbHVlICIgPDwgb3B0aW9uIDw8ICI6IgotICAg
ICAgICAgICAgICAgICAgICAgIDw8IHZhbHVlOwotICBpZiAoIUlzTGVnYWxOYW1lKG9wdGlvbikg
fHwgIUlzTGVnYWxWYWx1ZSh2YWx1ZSkpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgb3B0
aW9uc19bb3B0aW9uXSA9IHZhbHVlOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPcHRpb25z
RmlsZTo6U2V0SW50VmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIG9wdGlvbiwgaW50IHZhbHVlKSB7
Ci0gIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIk9wdGlvbnNGaWxlOjpTZXRJbnRWYWx1ZSAiIDw8
IG9wdGlvbiA8PCAiOiIgPDwgdmFsdWU7Ci0gIGlmICghSXNMZWdhbE5hbWUob3B0aW9uKSkgewot
ICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBvcHRpb25zX1tvcHRpb25dID0gVG9TdHJpbmcodmFs
dWUpOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPcHRpb25zRmlsZTo6UmVtb3ZlVmFsdWUo
Y29uc3Qgc3RkOjpzdHJpbmcmIG9wdGlvbikgewotICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICJP
cHRpb25zRmlsZTo6UmVtb3ZlVmFsdWUgIiA8PCBvcHRpb247Ci0gIGlmICghSXNMZWdhbE5hbWUo
b3B0aW9uKSkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBvcHRpb25zXy5lcmFzZShvcHRp
b24pOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3B0
aW9uc2ZpbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL29wdGlvbnNmaWxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NjYw
ZmYyNTk4YmUzZGVjYjJlNTY5NjJlNTVlODUzYmUxNWUyYjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3B0aW9uc2ZpbGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUw
ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgUlRDX0JBU0VfT1BUSU9OU0ZJ
TEVfSF8KLSNkZWZpbmUgUlRDX0JBU0VfT1BUSU9OU0ZJTEVfSF8KLQotI2luY2x1ZGUgPG1hcD4K
LSNpbmNsdWRlIDxzdHJpbmc+Ci0KLW5hbWVzcGFjZSBydGMgewotCi0vLyBJbXBsZW1lbnRzIHN0
b3JhZ2Ugb2Ygc2ltcGxlIG9wdGlvbnMgaW4gYSB0ZXh0IGZpbGUgb24gZGlzay4gVGhpcyBpcwot
Ly8gY3Jvc3MtcGxhdGZvcm0sIGJ1dCBpdCBpcyBpbnRlbmRlZCBtb3N0bHkgZm9yIExpbnV4IHdo
ZXJlIHRoZXJlIGlzIG5vCi0vLyBmaXJzdC1jbGFzcyBvcHRpb25zIHN0b3JhZ2Ugc3lzdGVtLgot
Y2xhc3MgT3B0aW9uc0ZpbGUgewotIHB1YmxpYzoKLSAgT3B0aW9uc0ZpbGUoY29uc3Qgc3RkOjpz
dHJpbmcmIHBhdGgpOwotICB+T3B0aW9uc0ZpbGUoKTsKLQotICAvLyBMb2FkcyB0aGUgZmlsZSBm
cm9tIGRpc2ssIG92ZXJ3cml0aW5nIHRoZSBpbi1tZW1vcnkgdmFsdWVzLgotICBib29sIExvYWQo
KTsKLSAgLy8gU2F2ZXMgdGhlIGNvbnRlbnRzIGluIG1lbW9yeSwgb3ZlcndyaXRpbmcgdGhlIG9u
LWRpc2sgdmFsdWVzLgotICBib29sIFNhdmUoKTsKLQotICBib29sIEdldFN0cmluZ1ZhbHVlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24sIHN0ZDo6c3RyaW5nKiBvdXRfdmFsKSBjb25zdDsKLSAg
Ym9vbCBHZXRJbnRWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgb3B0aW9uLCBpbnQqIG91dF92YWwp
IGNvbnN0OwotICBib29sIFNldFN0cmluZ1ZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24s
IGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWwpOwotICBib29sIFNldEludFZhbHVlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBvcHRpb24sIGludCB2YWwpOwotICBib29sIFJlbW92ZVZhbHVlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBvcHRpb24pOwotCi0gcHJpdmF0ZToKLSAgdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0
cmluZywgc3RkOjpzdHJpbmc+IE9wdGlvbnNNYXA7Ci0KLSAgc3RhdGljIGJvb2wgSXNMZWdhbE5h
bWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotICBzdGF0aWMgYm9vbCBJc0xlZ2FsVmFsdWUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKLQotICBzdGQ6OnN0cmluZyBwYXRoXzsKLSAgT3B0
aW9uc01hcCBvcHRpb25zXzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBydGMKLQotI2VuZGlmICAv
LyBSVENfQkFTRV9PUFRJT05TRklMRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3B0aW9uc2ZpbGVfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcHRp
b25zZmlsZV91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM1YmM4
MjNmZjQxNThmNzJkYjJjNTA2ZTI2ZjdiODlkMDFkNDU3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcHRpb25zZmlsZV91bml0dGVzdC5jYworKysgL2Rldi9udWxs
CkBAIC0xLDE3OCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDA4IFRoZSBXZWJSVEMgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
Ci0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8bWVtb3J5
PgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3Vu
aXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9vcHRpb25zZmlsZS5oIgotI2luY2x1ZGUgInRlc3Qv
dGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCi0KLW5hbWVzcGFjZSBydGMgewotCi1zdGF0aWMgY29u
c3Qgc3RkOjpzdHJpbmcga1Rlc3RPcHRpb25BID0gInRlc3Qtb3B0aW9uLWEiOwotc3RhdGljIGNv
bnN0IHN0ZDo6c3RyaW5nIGtUZXN0T3B0aW9uQiA9ICJ0ZXN0LW9wdGlvbi1iIjsKLXN0YXRpYyBj
b25zdCBzdGQ6OnN0cmluZyBrVGVzdFN0cmluZzEgPSAiYSBzdHJpbmciOwotc3RhdGljIGNvbnN0
IHN0ZDo6c3RyaW5nIGtUZXN0U3RyaW5nMiA9ICJkaWZmZXJlbnQgc3RyaW5nIjsKLXN0YXRpYyBj
b25zdCBzdGQ6OnN0cmluZyBrT3B0aW9uV2l0aEVxdWFscyA9ICJmb289YmFyIjsKLXN0YXRpYyBj
b25zdCBzdGQ6OnN0cmluZyBrT3B0aW9uV2l0aE5ld2xpbmUgPSAiZm9vXG5iYXIiOwotc3RhdGlj
IGNvbnN0IHN0ZDo6c3RyaW5nIGtWYWx1ZVdpdGhFcXVhbHMgPSAiYmF6PXF1dXgiOwotc3RhdGlj
IGNvbnN0IHN0ZDo6c3RyaW5nIGtWYWx1ZVdpdGhOZXdsaW5lID0gImJhelxucXV1eCI7Ci1zdGF0
aWMgY29uc3Qgc3RkOjpzdHJpbmcga0VtcHR5U3RyaW5nID0gIiI7Ci1zdGF0aWMgY29uc3QgY2hh
ciBrT3B0aW9uV2l0aFV0ZjhbXSA9IHsnTycsICAgICdwJywgJ3QnLCAnXDMwMicsICdcMjU2JywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpJywgICAgJ28nLCAnbics
ICdcMzQyJywgJ1wyMDQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1wyNDInLCAnXDAnfTsgIC8vIE9wdChSKWlvKFRNKS4KLXN0YXRpYyBjb25zdCBjaGFyIGtWYWx1
ZVdpdGhVdGY4W10gPSB7Ci0gICAgJ1YnLCAnYScsICAgICdsJywgICAgJ1wzMDInLCAnXDI1Nics
ICd2JywKLSAgICAnZScsICdcMzQyJywgJ1wyMDQnLCAnXDI0MicsICdcMCd9OyAgLy8gVmFsKFIp
dWUoVE0pLgotc3RhdGljIGludCBrVGVzdEludDEgPSAxMjM0NTsKLXN0YXRpYyBpbnQga1Rlc3RJ
bnQyID0gNjc4OTA7Ci1zdGF0aWMgaW50IGtOZWdJbnQgPSAtNjM0Owotc3RhdGljIGludCBrWmVy
byA9IDA7Ci0KLSNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQotLy8gRmFpbHMgb24gQW5kcm9p
ZDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3dlYnJ0Yy9pc3N1ZXMvZGV0YWlsP2lkPTQz
NjQuCi0jZGVmaW5lIE1BWUJFX09wdGlvbnNGaWxlVGVzdCBESVNBQkxFRF9PcHRpb25zRmlsZVRl
c3QKLSNlbHNlCi0jZGVmaW5lIE1BWUJFX09wdGlvbnNGaWxlVGVzdCBPcHRpb25zRmlsZVRlc3QK
LSNlbmRpZgotCi1jbGFzcyBNQVlCRV9PcHRpb25zRmlsZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci0gcHVibGljOgotICBNQVlCRV9PcHRpb25zRmlsZVRlc3QoKSB7Ci0gICAgdGVzdF9m
aWxlXyA9Ci0gICAgICAgIHdlYnJ0Yzo6dGVzdDo6VGVtcEZpbGVuYW1lKHdlYnJ0Yzo6dGVzdDo6
T3V0cHV0UGF0aCgpLCAiLnRlc3RmaWxlIik7Ci0gICAgT3BlblN0b3JlKCk7Ci0gIH0KLQotICB+
TUFZQkVfT3B0aW9uc0ZpbGVUZXN0KCkgb3ZlcnJpZGUgeyB3ZWJydGM6OnRlc3Q6OlJlbW92ZUZp
bGUodGVzdF9maWxlXyk7IH0KLQotIHByb3RlY3RlZDoKLSAgdm9pZCBPcGVuU3RvcmUoKSB7IHN0
b3JlXy5yZXNldChuZXcgT3B0aW9uc0ZpbGUodGVzdF9maWxlXykpOyB9Ci0KLSAgc3RkOjp1bmlx
dWVfcHRyPE9wdGlvbnNGaWxlPiBzdG9yZV87Ci0KLSBwcml2YXRlOgotICBzdGQ6OnN0cmluZyB0
ZXN0X2ZpbGVfOwotfTsKLQotVEVTVF9GKE1BWUJFX09wdGlvbnNGaWxlVGVzdCwgR2V0U2V0U3Ry
aW5nKSB7Ci0gIC8vIENsZWFyIGNvbnRlbnRzIG9mIHRoZSBmaWxlIG9uIGRpc2suCi0gIEVYUEVD
VF9UUlVFKHN0b3JlXy0+U2F2ZSgpKTsKLSAgc3RkOjpzdHJpbmcgb3V0MSwgb3V0MjsKLSAgRVhQ
RUNUX0ZBTFNFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCAmb3V0MSkpOwot
ICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkIsICZvdXQy
KSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCBr
VGVzdFN0cmluZzEpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1Rf
VFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0U3RyaW5nVmFs
dWUoa1Rlc3RPcHRpb25CLCBrVGVzdFN0cmluZzIpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5T
YXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0
b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCAmb3V0MSkpOwotICBFWFBFQ1RfVFJV
RShzdG9yZV8tPkdldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQiwgJm91dDIpKTsKLSAgRVhQRUNU
X0VRKGtUZXN0U3RyaW5nMSwgb3V0MSk7Ci0gIEVYUEVDVF9FUShrVGVzdFN0cmluZzIsIG91dDIp
OwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlJlbW92ZVZhbHVlKGtUZXN0T3B0aW9uQSkpOwotICBF
WFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgp
KTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5SZW1vdmVWYWx1ZShrVGVzdE9wdGlvbkIpKTsKLSAg
RVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQo
KSk7Ci0gIEVYUEVDVF9GQUxTRShzdG9yZV8tPkdldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQSwg
Jm91dDEpKTsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRp
b25CLCAmb3V0MikpOwotfQotCi1URVNUX0YoTUFZQkVfT3B0aW9uc0ZpbGVUZXN0LCBHZXRTZXRJ
bnQpIHsKLSAgLy8gQ2xlYXIgY29udGVudHMgb2YgdGhlIGZpbGUgb24gZGlzay4KLSAgRVhQRUNU
X1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBpbnQgb3V0MSwgb3V0MjsKLSAgRVhQRUNUX0ZBTFNF
KHN0b3JlXy0+R2V0SW50VmFsdWUoa1Rlc3RPcHRpb25BLCAmb3V0MSkpOwotICBFWFBFQ1RfRkFM
U0Uoc3RvcmVfLT5HZXRJbnRWYWx1ZShrVGVzdE9wdGlvbkIsICZvdXQyKSk7Ci0gIEVYUEVDVF9U
UlVFKHN0b3JlXy0+U2V0SW50VmFsdWUoa1Rlc3RPcHRpb25BLCBrVGVzdEludDEpKTsKLSAgRVhQ
RUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7
Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0SW50VmFsdWUoa1Rlc3RPcHRpb25CLCBrVGVzdElu
dDIpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9y
ZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0SW50VmFsdWUoa1Rlc3RPcHRp
b25BLCAmb3V0MSkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkdldEludFZhbHVlKGtUZXN0T3B0
aW9uQiwgJm91dDIpKTsKLSAgRVhQRUNUX0VRKGtUZXN0SW50MSwgb3V0MSk7Ci0gIEVYUEVDVF9F
UShrVGVzdEludDIsIG91dDIpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlJlbW92ZVZhbHVlKGtU
ZXN0T3B0aW9uQSkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9U
UlVFKHN0b3JlXy0+TG9hZCgpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5SZW1vdmVWYWx1ZShr
VGVzdE9wdGlvbkIpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1Rf
VFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShzdG9yZV8tPkdldEludFZhbHVl
KGtUZXN0T3B0aW9uQSwgJm91dDEpKTsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+R2V0SW50VmFs
dWUoa1Rlc3RPcHRpb25CLCAmb3V0MikpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNldEludFZh
bHVlKGtUZXN0T3B0aW9uQSwga05lZ0ludCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkdldElu
dFZhbHVlKGtUZXN0T3B0aW9uQSwgJm91dDEpKTsKLSAgRVhQRUNUX0VRKGtOZWdJbnQsIG91dDEp
OwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNldEludFZhbHVlKGtUZXN0T3B0aW9uQSwga1plcm8p
KTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5HZXRJbnRWYWx1ZShrVGVzdE9wdGlvbkEsICZvdXQx
KSk7Ci0gIEVYUEVDVF9FUShrWmVybywgb3V0MSk7Ci19Ci0KLVRFU1RfRihNQVlCRV9PcHRpb25z
RmlsZVRlc3QsIFBlcnNpc3QpIHsKLSAgLy8gQ2xlYXIgY29udGVudHMgb2YgdGhlIGZpbGUgb24g
ZGlzay4KLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9y
ZV8tPlNldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQSwga1Rlc3RTdHJpbmcxKSk7Ci0gIEVYUEVD
VF9UUlVFKHN0b3JlXy0+U2V0SW50VmFsdWUoa1Rlc3RPcHRpb25CLCBrTmVnSW50KSk7Ci0gIEVY
UEVDVF9UUlVFKHN0b3JlXy0+U2F2ZSgpKTsKLQotICAvLyBMb2FkIHRoZSBzYXZlZCBjb250ZW50
cyBmcm9tIGFib3ZlLgotICBPcGVuU3RvcmUoKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5Mb2Fk
KCkpOwotICBzdGQ6OnN0cmluZyBvdXQxOwotICBpbnQgb3V0MjsKLSAgRVhQRUNUX1RSVUUoc3Rv
cmVfLT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkEsICZvdXQxKSk7Ci0gIEVYUEVDVF9UUlVF
KHN0b3JlXy0+R2V0SW50VmFsdWUoa1Rlc3RPcHRpb25CLCAmb3V0MikpOwotICBFWFBFQ1RfRVEo
a1Rlc3RTdHJpbmcxLCBvdXQxKTsKLSAgRVhQRUNUX0VRKGtOZWdJbnQsIG91dDIpOwotfQotCi1U
RVNUX0YoTUFZQkVfT3B0aW9uc0ZpbGVUZXN0LCBTcGVjaWFsQ2hhcmFjdGVycykgewotICAvLyBD
bGVhciBjb250ZW50cyBvZiB0aGUgZmlsZSBvbiBkaXNrLgotICBFWFBFQ1RfVFJVRShzdG9yZV8t
PlNhdmUoKSk7Ci0gIHN0ZDo6c3RyaW5nIG91dDsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+U2V0
U3RyaW5nVmFsdWUoa09wdGlvbldpdGhFcXVhbHMsIGtUZXN0U3RyaW5nMSkpOwotICBFWFBFQ1Rf
RkFMU0Uoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrT3B0aW9uV2l0aEVxdWFscywgJm91dCkpOwot
ICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5TZXRTdHJpbmdWYWx1ZShrT3B0aW9uV2l0aE5ld2xpbmUs
IGtUZXN0U3RyaW5nMSkpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShr
T3B0aW9uV2l0aE5ld2xpbmUsICZvdXQpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TZXRTdHJp
bmdWYWx1ZShrT3B0aW9uV2l0aFV0ZjgsIGtWYWx1ZVdpdGhVdGY4KSk7Ci0gIEVYUEVDVF9UUlVF
KHN0b3JlXy0+U2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCBrVGVzdFN0cmluZzEpKTsKLSAg
RVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQo
KSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCAm
b3V0KSk7Ci0gIEVYUEVDVF9FUShrVGVzdFN0cmluZzEsIG91dCk7Ci0gIEVYUEVDVF9UUlVFKHN0
b3JlXy0+R2V0U3RyaW5nVmFsdWUoa09wdGlvbldpdGhVdGY4LCAmb3V0KSk7Ci0gIEVYUEVDVF9F
UShrVmFsdWVXaXRoVXRmOCwgb3V0KTsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+U2V0U3RyaW5n
VmFsdWUoa1Rlc3RPcHRpb25BLCBrVmFsdWVXaXRoTmV3bGluZSkpOwotICBFWFBFQ1RfVFJVRShz
dG9yZV8tPkdldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQSwgJm91dCkpOwotICBFWFBFQ1RfRVEo
a1Rlc3RTdHJpbmcxLCBvdXQpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNldFN0cmluZ1ZhbHVl
KGtUZXN0T3B0aW9uQSwga1ZhbHVlV2l0aEVxdWFscykpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8t
PlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgpKTsKLSAgRVhQRUNUX1RSVUUo
c3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkEsICZvdXQpKTsKLSAgRVhQRUNUX0VR
KGtWYWx1ZVdpdGhFcXVhbHMsIG91dCk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0U3RyaW5n
VmFsdWUoa0VtcHR5U3RyaW5nLCBrVGVzdFN0cmluZzIpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVf
LT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVF
KHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa0VtcHR5U3RyaW5nLCAmb3V0KSk7Ci0gIEVYUEVDVF9F
UShrVGVzdFN0cmluZzIsIG91dCk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0U3RyaW5nVmFs
dWUoa1Rlc3RPcHRpb25CLCBrRW1wdHlTdHJpbmcpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5T
YXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0
b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25CLCAmb3V0KSk7Ci0gIEVYUEVDVF9FUShr
RW1wdHlTdHJpbmcsIG91dCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BhdGh1
dGlscy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3BhdGh1dGlscy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk0ZGViN2Yw
ZmMxMzJmYTdjNDM2ZWMxNzQyZTY4Mjk4OTJhMWExMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHMuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLSNpbmNs
dWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8c2hlbGxhcGkuaD4KLSNpbmNsdWRlIDxzaGxvYmou
aD4KLSNpbmNsdWRlIDx0Y2hhci5oPgotI2VuZGlmICAvLyBXRUJSVENfV0lOCi0KLSNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvcGF0aHV0aWxzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRp
bHMuaCIKLQotbmFtZXNwYWNlIHJ0YyB7Ci0KLXN0YXRpYyBjb25zdCBjaGFyIEVNUFRZX1NUUltd
ID0gIiI7Ci0KLS8vIEVYVF9ERUxJTSBzZXBhcmF0ZXMgYSBmaWxlIGJhc2VuYW1lIGZyb20gZXh0
ZW5zaW9uCi1jb25zdCBjaGFyIEVYVF9ERUxJTSA9ICcuJzsKLQotLy8gRk9MREVSX0RFTElNUyBz
ZXBhcmF0ZSBmb2xkZXIgc2VnbWVudHMgYW5kIHRoZSBmaWxlbmFtZQotY29uc3QgY2hhciogY29u
c3QgRk9MREVSX0RFTElNUyA9ICIvXFwiOwotCi0vLyBERUZBVUxUX0ZPTERFUl9ERUxJTSBpcyB0
aGUgcHJlZmVycmVkIGRlbGltaXRlciBmb3IgdGhpcyBwbGF0Zm9ybQotI2lmZGVmIFdFQlJUQ19X
SU4KLWNvbnN0IGNoYXIgREVGQVVMVF9GT0xERVJfREVMSU0gPSAnXFwnOwotI2Vsc2UgIC8vICFX
RUJSVENfV0lOCi1jb25zdCBjaGFyIERFRkFVTFRfRk9MREVSX0RFTElNID0gJy8nOwotI2VuZGlm
ICAvLyAhV0VCUlRDX1dJTgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBQYXRobmFtZSAt
IHBhcnNpbmcgb2YgcGF0aG5hbWVzIGludG8gY29tcG9uZW50cywgYW5kIHZpY2UgdmVyc2EKLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLQotYm9vbCBQYXRobmFtZTo6SXNGb2xkZXJEZWxpbWl0ZXIo
Y2hhciBjaCkgewotICByZXR1cm4gKG51bGxwdHIgIT0gOjpzdHJjaHIoRk9MREVSX0RFTElNUywg
Y2gpKTsKLX0KLQotY2hhciBQYXRobmFtZTo6RGVmYXVsdEZvbGRlckRlbGltaXRlcigpIHsKLSAg
cmV0dXJuIERFRkFVTFRfRk9MREVSX0RFTElNOwotfQotCi1QYXRobmFtZTo6UGF0aG5hbWUoKQot
ICAgIDogZm9sZGVyX2RlbGltaXRlcl8oREVGQVVMVF9GT0xERVJfREVMSU0pIHsKLX0KLQotUGF0
aG5hbWU6OlBhdGhuYW1lKGNvbnN0IFBhdGhuYW1lJikgPSBkZWZhdWx0OwotUGF0aG5hbWU6OlBh
dGhuYW1lKFBhdGhuYW1lJiYpID0gZGVmYXVsdDsKLQotUGF0aG5hbWU6OlBhdGhuYW1lKGNvbnN0
IHN0ZDo6c3RyaW5nJiBwYXRobmFtZSkKLSAgICA6IGZvbGRlcl9kZWxpbWl0ZXJfKERFRkFVTFRf
Rk9MREVSX0RFTElNKSB7Ci0gIFNldFBhdGhuYW1lKHBhdGhuYW1lKTsKLX0KLQotUGF0aG5hbWU6
OlBhdGhuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb2xkZXIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBm
aWxlbmFtZSkKLSAgICA6IGZvbGRlcl9kZWxpbWl0ZXJfKERFRkFVTFRfRk9MREVSX0RFTElNKSB7
Ci0gIFNldFBhdGhuYW1lKGZvbGRlciwgZmlsZW5hbWUpOwotfQotCi1QYXRobmFtZSYgUGF0aG5h
bWU6Om9wZXJhdG9yPShjb25zdCBQYXRobmFtZSYpID0gZGVmYXVsdDsKLVBhdGhuYW1lJiBQYXRo
bmFtZTo6b3BlcmF0b3I9KFBhdGhuYW1lJiYpID0gZGVmYXVsdDsKLQotc3RkOjpzdHJpbmcgUGF0
aG5hbWU6OnBhdGhuYW1lKCkgY29uc3QgewotICBzdGQ6OnN0cmluZyBwYXRobmFtZShmb2xkZXJf
KTsKLSAgcGF0aG5hbWUuYXBwZW5kKGJhc2VuYW1lXyk7Ci0gIHBhdGhuYW1lLmFwcGVuZChleHRl
bnNpb25fKTsKLSAgaWYgKHBhdGhuYW1lLmVtcHR5KCkpIHsKLSAgICAvLyBJbnN0ZWFkIG9mIHRo
ZSBlbXB0eSBwYXRobmFtZSwgcmV0dXJuIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5Lgot
ICAgIHBhdGhuYW1lLnB1c2hfYmFjaygnLicpOwotICAgIHBhdGhuYW1lLnB1c2hfYmFjayhmb2xk
ZXJfZGVsaW1pdGVyXyk7Ci0gIH0KLSAgcmV0dXJuIHBhdGhuYW1lOwotfQotCi12b2lkIFBhdGhu
YW1lOjpTZXRQYXRobmFtZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aG5hbWUpIHsKLSAgc3RkOjpz
dHJpbmc6OnNpemVfdHlwZSBwb3MgPSBwYXRobmFtZS5maW5kX2xhc3Rfb2YoRk9MREVSX0RFTElN
Uyk7Ci0gIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICBTZXRGb2xkZXIocGF0
aG5hbWUuc3Vic3RyKDAsIHBvcyArIDEpKTsKLSAgICBTZXRGaWxlbmFtZShwYXRobmFtZS5zdWJz
dHIocG9zICsgMSkpOwotICB9IGVsc2UgewotICAgIFNldEZvbGRlcihFTVBUWV9TVFIpOwotICAg
IFNldEZpbGVuYW1lKHBhdGhuYW1lKTsKLSAgfQotfQotCi12b2lkIFBhdGhuYW1lOjpTZXRQYXRo
bmFtZShjb25zdCBzdGQ6OnN0cmluZyYgZm9sZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKSB7Ci0gIFNldEZvbGRlcihmb2xkZXIpOwot
ICBTZXRGaWxlbmFtZShmaWxlbmFtZSk7Ci19Ci0KLXZvaWQgUGF0aG5hbWU6OlNldEZvbGRlcihj
b25zdCBzdGQ6OnN0cmluZyYgZm9sZGVyKSB7Ci0gIGZvbGRlcl8uYXNzaWduKGZvbGRlcik7Ci0g
IC8vIEVuc3VyZSBmb2xkZXIgZW5kcyBpbiBhIHBhdGggZGVsaW1pdGVyCi0gIGlmICghZm9sZGVy
Xy5lbXB0eSgpICYmICFJc0ZvbGRlckRlbGltaXRlcihmb2xkZXJfW2ZvbGRlcl8ubGVuZ3RoKCkt
MV0pKSB7Ci0gICAgZm9sZGVyXy5wdXNoX2JhY2soZm9sZGVyX2RlbGltaXRlcl8pOwotICB9Ci19
Ci0KLXZvaWQgUGF0aG5hbWU6OkFwcGVuZEZvbGRlcihjb25zdCBzdGQ6OnN0cmluZyYgZm9sZGVy
KSB7Ci0gIGZvbGRlcl8uYXBwZW5kKGZvbGRlcik7Ci0gIC8vIEVuc3VyZSBmb2xkZXIgZW5kcyBp
biBhIHBhdGggZGVsaW1pdGVyCi0gIGlmICghZm9sZGVyXy5lbXB0eSgpICYmICFJc0ZvbGRlckRl
bGltaXRlcihmb2xkZXJfW2ZvbGRlcl8ubGVuZ3RoKCktMV0pKSB7Ci0gICAgZm9sZGVyXy5wdXNo
X2JhY2soZm9sZGVyX2RlbGltaXRlcl8pOwotICB9Ci19Ci0KLWJvb2wgUGF0aG5hbWU6OlNldEJh
c2VuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBiYXNlbmFtZSkgewotICBpZihiYXNlbmFtZS5maW5k
X2ZpcnN0X29mKEZPTERFUl9ERUxJTVMpICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgcmV0
dXJuIGZhbHNlOwotICB9Ci0gIGJhc2VuYW1lXy5hc3NpZ24oYmFzZW5hbWUpOwotICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBQYXRobmFtZTo6U2V0RXh0ZW5zaW9uKGNvbnN0IHN0ZDo6c3RyaW5n
JiBleHRlbnNpb24pIHsKLSAgaWYgKGV4dGVuc2lvbi5maW5kX2ZpcnN0X29mKEZPTERFUl9ERUxJ
TVMpICE9IHN0ZDo6c3RyaW5nOjpucG9zIHx8Ci0gICAgZXh0ZW5zaW9uLmZpbmRfZmlyc3Rfb2Yo
RVhUX0RFTElNLCAxKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAgcmV0dXJuIGZhbHNl
OwotICB9Ci0gIGV4dGVuc2lvbl8uYXNzaWduKGV4dGVuc2lvbik7Ci0gIC8vIEVuc3VyZSBleHRl
bnNpb24gYmVnaW5zIHdpdGggdGhlIGV4dGVuc2lvbiBkZWxpbWl0ZXIKLSAgaWYgKCFleHRlbnNp
b25fLmVtcHR5KCkgJiYgKGV4dGVuc2lvbl9bMF0gIT0gRVhUX0RFTElNKSkgewotICAgIGV4dGVu
c2lvbl8uaW5zZXJ0KGV4dGVuc2lvbl8uYmVnaW4oKSwgRVhUX0RFTElNKTsKLSAgfQotICByZXR1
cm4gdHJ1ZTsKLX0KLQotc3RkOjpzdHJpbmcgUGF0aG5hbWU6OmZpbGVuYW1lKCkgY29uc3Qgewot
ICBzdGQ6OnN0cmluZyBmaWxlbmFtZShiYXNlbmFtZV8pOwotICBmaWxlbmFtZS5hcHBlbmQoZXh0
ZW5zaW9uXyk7Ci0gIHJldHVybiBmaWxlbmFtZTsKLX0KLQotYm9vbCBQYXRobmFtZTo6U2V0Rmls
ZW5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKSB7Ci0gIHN0ZDo6c3RyaW5nOjpzaXpl
X3R5cGUgcG9zID0gZmlsZW5hbWUucmZpbmQoRVhUX0RFTElNKTsKLSAgaWYgKChwb3MgPT0gc3Rk
OjpzdHJpbmc6Om5wb3MpIHx8IChwb3MgPT0gMCkpIHsKLSAgICByZXR1cm4gU2V0RXh0ZW5zaW9u
KEVNUFRZX1NUUikgJiYgU2V0QmFzZW5hbWUoZmlsZW5hbWUpOwotICB9IGVsc2UgewotICAgIHJl
dHVybiBTZXRFeHRlbnNpb24oZmlsZW5hbWUuc3Vic3RyKHBvcykpICYmIFNldEJhc2VuYW1lKGZp
bGVuYW1lLnN1YnN0cigwLCBwb3MpKTsKLSAgfQotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0KLX0gLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGF0aHV0aWxzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHMuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU0M2JlMDczZjI0NWQzNDA5ZmQ2OTBiNWNmOWNjOTdk
YjZlNWE3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRp
bHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIw
MDQgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0K
LSNpZm5kZWYgUlRDX0JBU0VfUEFUSFVUSUxTX0hfCi0jZGVmaW5lIFJUQ19CQVNFX1BBVEhVVElM
U19IXwotCi0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
Ci0KLW5hbWVzcGFjZSBydGMgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBQYXRobmFt
ZSAtIHBhcnNpbmcgb2YgcGF0aG5hbWVzIGludG8gY29tcG9uZW50cywgYW5kIHZpY2UgdmVyc2Eu
Ci0vLwotLy8gVG8gZXN0YWJsaXNoIGNvbnNpc3RlbnQgdGVybWlub2xvZ3ksIGEgZmlsZW5hbWUg
bmV2ZXIgY29udGFpbnMgYSBmb2xkZXIKLS8vIGNvbXBvbmVudC4gIEEgZm9sZGVyIG5ldmVyIGNv
bnRhaW5zIGEgZmlsZW5hbWUuICBBIHBhdGhuYW1lIG1heSBpbmNsdWRlCi0vLyBhIGZvbGRlciBh
bmQvb3IgZmlsZW5hbWUgY29tcG9uZW50LiAgSGVyZSBhcmUgc29tZSBleGFtcGxlczoKLS8vCi0v
LyAgIHBhdGhuYW1lKCkgICAgICAvaG9tZS9qb2huL2V4YW1wbGUudHh0Ci0vLyAgIGZvbGRlcigp
ICAgICAgICAvaG9tZS9qb2huLwotLy8gICBmaWxlbmFtZSgpICAgICAgICAgICAgICAgICBleGFt
cGxlLnR4dAotLy8gICBwYXJlbnRfZm9sZGVyKCkgL2hvbWUvCi0vLyAgIGZvbGRlcl9uYW1lKCkg
ICAgICAgICBqb2huLwotLy8gICBiYXNlbmFtZSgpICAgICAgICAgICAgICAgICBleGFtcGxlCi0v
LyAgIGV4dGVuc2lvbigpICAgICAgICAgICAgICAgICAgICAgICAudHh0Ci0vLwotLy8gQmFzZW5h
bWUgbWF5IGJlZ2luLCBlbmQsIGFuZC9vciBpbmNsdWRlIHBlcmlvZHMsIGJ1dCBubyBmb2xkZXIg
ZGVsaW1pdGVycy4KLS8vIElmIGV4dGVuc2lvbiBleGlzdHMsIGl0IGNvbnNpc3RzIG9mIGEgcGVy
aW9kIGZvbGxvd2VkIGJ5IHplcm8gb3IgbW9yZQotLy8gbm9uLXBlcmlvZC9ub24tZGVsaW1pdGVy
IGNoYXJhY3RlcnMsIGFuZCBiYXNlbmFtZSBpcyBub24tZW1wdHkuCi0vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCi0KLWNsYXNzIFBhdGhuYW1lIHsKLSBwdWJsaWM6Ci0gIC8vIEZvbGRlciBkZWxpbWl0
ZXJzIGFyZSBzbGFzaCBhbmQgYmFja3NsYXNoCi0gIHN0YXRpYyBib29sIElzRm9sZGVyRGVsaW1p
dGVyKGNoYXIgY2gpOwotICBzdGF0aWMgY2hhciBEZWZhdWx0Rm9sZGVyRGVsaW1pdGVyKCk7Ci0K
LSAgUGF0aG5hbWUoKTsKLSAgUGF0aG5hbWUoY29uc3QgUGF0aG5hbWUmKTsKLSAgUGF0aG5hbWUo
UGF0aG5hbWUmJik7Ci0gIFBhdGhuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRobmFtZSk7Ci0g
IFBhdGhuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb2xkZXIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBm
aWxlbmFtZSk7Ci0KLSAgUGF0aG5hbWUmIG9wZXJhdG9yPShjb25zdCBQYXRobmFtZSYpOwotICBQ
YXRobmFtZSYgb3BlcmF0b3I9KFBhdGhuYW1lJiYpOwotCi0gIC8vIFJldHVybnMgdGhlIGZvbGRl
ciBhbmQgZmlsZW5hbWUgY29tcG9uZW50cy4gIElmIHRoZSBwYXRobmFtZSBpcyBlbXB0eSwKLSAg
Ly8gcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IChh
cyBhIHJlbGF0aXZlIHBhdGgsCi0gIC8vIGkuZS4sICIuIikuCi0gIHN0ZDo6c3RyaW5nIHBhdGhu
YW1lKCkgY29uc3Q7Ci0gIHZvaWQgU2V0UGF0aG5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhu
YW1lKTsKLSAgdm9pZCBTZXRQYXRobmFtZShjb25zdCBzdGQ6OnN0cmluZyYgZm9sZGVyLCBjb25z
dCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpOwotCi0gIC8vIFNldEZvbGRlciBhbmQgQXBwZW5kRm9s
ZGVyIHdpbGwgYXBwZW5kIGEgZm9sZGVyIGRlbGltaXRlciwgaWYgbmVlZGVkLgotICB2b2lkIFNl
dEZvbGRlcihjb25zdCBzdGQ6OnN0cmluZyYgZm9sZGVyKTsKLSAgdm9pZCBBcHBlbmRGb2xkZXIo
Y29uc3Qgc3RkOjpzdHJpbmcmIGZvbGRlcik7Ci0KLSAgYm9vbCBTZXRCYXNlbmFtZShjb25zdCBz
dGQ6OnN0cmluZyYgYmFzZW5hbWUpOwotCi0gIC8vIFNldEV4dGVuc2lvbiB3aWxsIHByZWZpeCBh
IHBlcmlvZCwgaWYgbmVlZGVkLgotICBib29sIFNldEV4dGVuc2lvbihjb25zdCBzdGQ6OnN0cmlu
ZyYgZXh0ZW5zaW9uKTsKLQotICBzdGQ6OnN0cmluZyBmaWxlbmFtZSgpIGNvbnN0OwotICBib29s
IFNldEZpbGVuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSk7Ci0KLSBwcml2YXRlOgot
ICBzdGQ6OnN0cmluZyBmb2xkZXJfLCBiYXNlbmFtZV8sIGV4dGVuc2lvbl87Ci0gIGNoYXIgZm9s
ZGVyX2RlbGltaXRlcl87Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgcnRjCi0KLSNlbmRpZiAgLy8g
UlRDX0JBU0VfUEFUSFVUSUxTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHNfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHNf
dW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZTRmMGFiYTU5YmY1
ZTRmOGU4OWJmOWQ5NTA4ZDBmNTc5ZGJlZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvcGF0aHV0aWxzX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzcg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNyBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgInJ0Y19iYXNlL3BhdGh1dGls
cy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0KLVRFU1QoUGF0aG5hbWUsIFJldHVy
bnNEb3RGb3JFbXB0eVBhdGhuYW1lKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGtDV0QgPQotICAg
ICAgc3RkOjpzdHJpbmcoIi4iKSArIHJ0Yzo6UGF0aG5hbWU6OkRlZmF1bHRGb2xkZXJEZWxpbWl0
ZXIoKTsKLQotICBydGM6OlBhdGhuYW1lIHBhdGgoIi8iLCAiIik7Ci0gIEVYUEVDVF9UUlVFIChw
YXRoLmZpbGVuYW1lKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShwYXRoLnBhdGhuYW1lKCku
ZW1wdHkoKSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZygiLyIpLCBwYXRoLnBhdGhuYW1lKCkp
OwotCi0gIHBhdGguU2V0UGF0aG5hbWUoIiIsICJmb28iKTsKLSAgRVhQRUNUX0ZBTFNFKHBhdGgu
ZmlsZW5hbWUoKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKHBhdGgucGF0aG5hbWUoKS5lbXB0
eSgpKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKCJmb28iKSwgcGF0aC5wYXRobmFtZSgpKTsK
LQotICBwYXRoLlNldFBhdGhuYW1lKCIiLCAiIik7Ci0gIEVYUEVDVF9UUlVFIChwYXRoLmZpbGVu
YW1lKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShwYXRoLnBhdGhuYW1lKCkuZW1wdHkoKSk7
Ci0gIEVYUEVDVF9FUShrQ1dELCBwYXRoLnBhdGhuYW1lKCkpOwotCi0gIHBhdGguU2V0UGF0aG5h
bWUoa0NXRCwgIiIpOwotICBFWFBFQ1RfVFJVRSAocGF0aC5maWxlbmFtZSgpLmVtcHR5KCkpOwot
ICBFWFBFQ1RfRkFMU0UocGF0aC5wYXRobmFtZSgpLmVtcHR5KCkpOwotICBFWFBFQ1RfRVEoa0NX
RCwgcGF0aC5wYXRobmFtZSgpKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2Fsc29ja2V0c2VydmVyX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3QuY2MKaW5kZXggMWUwNDZjMDU3ZTVkODIx
MWMyMzVkODU0ZjVkNmNlNzEyZTZiYmFhMy4uNGIzNmNkNWY2MDhlOGY4N2ZlOWU2ZDViOWQ5MGQ5
ZTkxMGU0ZWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGh5c2lj
YWxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3QuY2MKQEAgLTU0Nyw3ICs1NDcsMTMgQEAgVGhyZWFkKiBQ
b3NpeFNpZ25hbERlbGl2ZXJ5VGVzdDo6c2lnbmFsZWRfdGhyZWFkXyA9IG51bGxwdHI7CiAKIC8v
IFRlc3QgcmVjZWl2aW5nIGEgc3luY2hyb25vdXMgc2lnbmFsIHdoaWxlIG5vdCBpbiBXYWl0KCkg
YW5kIHRoZW4gZW50ZXJpbmcKIC8vIFdhaXQoKSBhZnRlcndhcmRzLgotVEVTVF9GKFBvc2l4U2ln
bmFsRGVsaXZlcnlUZXN0LCBSYWlzZVRoZW5XYWl0KSB7CisvLyBUT0RPKHdlYnJ0Yzo3ODY0KTog
RmFpbHMgb24gcmVhbCBpT1MgZGV2aWNlcworI2lmIGRlZmluZWQoV0VCUlRDX0lPUykgJiYgZGVm
aW5lZChXRUJSVENfQVJDSF9BUk1fRkFNSUxZKQorI2RlZmluZSBNQVlCRV9SYWlzZVRoZW5XYWl0
IERJU0FCTEVEX1JhaXNlVGhlbldhaXQKKyNlbHNlCisjZGVmaW5lIE1BWUJFX1JhaXNlVGhlbldh
aXQgUmFpc2VUaGVuV2FpdAorI2VuZGlmCitURVNUX0YoUG9zaXhTaWduYWxEZWxpdmVyeVRlc3Qs
IE1BWUJFX1JhaXNlVGhlbldhaXQpIHsKICAgQVNTRVJUX1RSVUUoc3NfLT5TZXRQb3NpeFNpZ25h
bEhhbmRsZXIoU0lHVEVSTSwgJlJlY29yZFNpZ25hbCkpOwogICByYWlzZShTSUdURVJNKTsKICAg
RVhQRUNUX1RSVUUoc3NfLT5XYWl0KDAsIHRydWUpKTsKQEAgLTU1Nyw3ICs1NjMsMTMgQEAgVEVT
VF9GKFBvc2l4U2lnbmFsRGVsaXZlcnlUZXN0LCBSYWlzZVRoZW5XYWl0KSB7CiAKIC8vIFRlc3Qg
dGhhdCB3ZSBjYW4gaGFuZGxlIGdldHRpbmcgdG9ucyBvZiByZXBlYXRlZCBzaWduYWxzIGFuZCB0
aGF0IHdlIHNlZSBhbGwKIC8vIHRoZSBkaWZmZXJlbnQgb25lcy4KLVRFU1RfRihQb3NpeFNpZ25h
bERlbGl2ZXJ5VGVzdCwgSW5zYW5lbHlNYW55U2lnbmFscykgeworLy8gVE9ETyh3ZWJydGM6Nzg2
NCk6IEZhaWxzIG9uIHJlYWwgaU9TIGRldmljZXMKKyNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpICYm
IGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNX0ZBTUlMWSkKKyNkZWZpbmUgTUFZQkVfSW5zYW5lbHlN
YW55U2lnbmFscyBESVNBQkxFRF9JbnNhbmVseU1hbnlTaWduYWxzCisjZWxzZQorI2RlZmluZSBN
QVlCRV9JbnNhbmVseU1hbnlTaWduYWxzIEluc2FuZWx5TWFueVNpZ25hbHMKKyNlbmRpZgorVEVT
VF9GKFBvc2l4U2lnbmFsRGVsaXZlcnlUZXN0LCBNQVlCRV9JbnNhbmVseU1hbnlTaWduYWxzKSB7
CiAgIHNzXy0+U2V0UG9zaXhTaWduYWxIYW5kbGVyKFNJR1RFUk0sICZSZWNvcmRTaWduYWwpOwog
ICBzc18tPlNldFBvc2l4U2lnbmFsSGFuZGxlcihTSUdJTlQsICZSZWNvcmRTaWduYWwpOwogICBm
b3IgKGludCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKQEAgLTU5Nyw3ICs2MDksMTMgQEAgY2xh
c3MgUmFpc2VTaWdUZXJtUnVubmFibGUgOiBwdWJsaWMgUnVubmFibGUgewogCiAvLyBUZXN0IHRo
YXQgaXQgd29ya3Mgbm8gbWF0dGVyIHdoYXQgdGhyZWFkIHRoZSBrZXJuZWwgY2hvb3NlcyB0byBn
aXZlIHRoZQogLy8gc2lnbmFsIHRvIChzaW5jZSBpdCdzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHRo
ZSBvbmUgdGhhdCBXYWl0KCkgcnVucyBvbikuCi1URVNUX0YoUG9zaXhTaWduYWxEZWxpdmVyeVRl
c3QsIFNpZ25hbE9uRGlmZmVyZW50VGhyZWFkKSB7CisvLyBUT0RPKHdlYnJ0Yzo3ODY0KTogRmFp
bHMgb24gcmVhbCBpT1MgZGV2aWNlcworI2lmIGRlZmluZWQoV0VCUlRDX0lPUykgJiYgZGVmaW5l
ZChXRUJSVENfQVJDSF9BUk1fRkFNSUxZKQorI2RlZmluZSBNQVlCRV9TaWduYWxPbkRpZmZlcmVu
dFRocmVhZCBESVNBQkxFRF9TaWduYWxPbkRpZmZlcmVudFRocmVhZAorI2Vsc2UKKyNkZWZpbmUg
TUFZQkVfU2lnbmFsT25EaWZmZXJlbnRUaHJlYWQgU2lnbmFsT25EaWZmZXJlbnRUaHJlYWQKKyNl
bmRpZgorVEVTVF9GKFBvc2l4U2lnbmFsRGVsaXZlcnlUZXN0LCBESVNBQkxFRF9TaWduYWxPbkRp
ZmZlcmVudFRocmVhZCkgewogICBzc18tPlNldFBvc2l4U2lnbmFsSGFuZGxlcihTSUdURVJNLCAm
UmVjb3JkU2lnbmFsKTsKICAgLy8gTWFzayBvdXQgU0lHVEVSTSBzbyB0aGF0IGl0IGNhbid0IGJl
IGRlbGl2ZXJlZCB0byB0aGlzIHRocmVhZC4KICAgc2lnc2V0X3QgbWFzazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BsYXRm
b3JtX2ZpbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9wbGF0Zm9ybV9maWxlLmNjCmluZGV4IGE0YzkwNmExZWQwMjhhZGY2ZGIwYmZmMjUy
ODQwN2I5MGI5YmNjYzkuLmJhZWZiMjI5MzEzYmQyYTczYTM0ZGQxMzI0ODA4YTU5MjlkOGQwMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3BsYXRmb3JtX2ZpbGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGxhdGZvcm1fZmlsZS5jYwpAQCAtMTAsMTQgKzEwLDEz
IEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmgiCiAKLSNpbmNsdWRlICJy
dGNfYmFzZS9zdHJpbmd1dGlscy5oIgotCiAjaWYgZGVmaW5lZChXRUJSVENfV0lOKQogI2luY2x1
ZGUgPGlvLmg+CisKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIiAgLy8gRm9yIFRv
VXRmMTYKICNlbHNlCiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgot
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3BsYXRmb3JtX3RocmVhZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5jYwppbmRleCA3OWQ5ZDUzYWVlZTAy
ZTBkOGJlMDQxMWIwZTAxOWI2MDc1ZDA3ZTFlLi5iYTg0YjZhZThlMDQ5NTQ4NzczYzdmZWQ0NzMx
NTVkZTVjNmEzNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmNj
CkBAIC0xMCwxNSArMTAsMTcgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3RocmVh
ZC5oIgogCisjaWYgIWRlZmluZWQoV0VCUlRDX1dJTikKKyNpbmNsdWRlIDxzY2hlZC5oPgorI2Vu
ZGlmCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPGFs
Z29yaXRobT4KKwogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCi0jaWYg
ZGVmaW5lZChXRUJSVENfTElOVVgpCi0jaW5jbHVkZSA8c3lzL3ByY3RsLmg+Ci0jaW5jbHVkZSA8
c3lzL3N5c2NhbGwuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgcnRjIHsKIG5hbWVzcGFjZSB7CiAj
aWYgZGVmaW5lZChXRUJSVENfV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV90aHJl
YWQuaAppbmRleCAzMzkyMWMyMDlkYTAyODliMDc0N2RhYTQ3YjE1NDViY2E1NDQ2ZDU0Li40N2My
M2RjMWI1YjQ3ZjRiMjk4ODUyMjhmMzhiMzA2ZTIzYWQyYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV90aHJl
YWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9wbGF0Zm9ybV90aHJlYWQuaApAQCAtMTEsMTAgKzExLDEyIEBACiAjaWZuZGVmIFJUQ19C
QVNFX1BMQVRGT1JNX1RIUkVBRF9IXwogI2RlZmluZSBSVENfQkFTRV9QTEFURk9STV9USFJFQURf
SF8KIAorI2lmbmRlZiBXRUJSVENfV0lOCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCiAj
aW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZv
cm1fdGhyZWFkX3R5cGVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvcHJveHlfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wcm94eV91bml0dGVzdC5jYwppbmRleCBmNDIwMzlmNTBi
YTIxMThkZGNjYWFiODQ1YzFkYzk0MGUyYTg0YzAyLi4wMTAxODkzODRmOGI3NTcwOTlhZTY4YmM4
YTM2ZDBlOThhZTJiZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wcm94eV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wcm94eV91bml0dGVzdC5j
YwpAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2
ZXIuaCIKIAogdXNpbmcgcnRjOjpTb2NrZXQ7Ci11c2luZyBydGM6OlRocmVhZDsKIHVzaW5nIHJ0
Yzo6U29ja2V0QWRkcmVzczsKIAogc3RhdGljIGNvbnN0IFNvY2tldEFkZHJlc3Mga1NvY2tzUHJv
eHlJbnRBZGRyKCIxLjIuMy40IiwgMTA4MCk7CkBAIC00OSw3ICs0OCw4IEBAIFRFU1RfRihQcm94
eVRlc3QsIFRlc3RTb2NrczVDb25uZWN0KSB7CiAgICAgICBzb2NrZXQsIGtTb2Nrc1Byb3h5SW50
QWRkciwgIiIsIHJ0Yzo6Q3J5cHRTdHJpbmcoKSk7CiAgIC8vIFRPRE86IElQdjYtaXplIHRoZXNl
IHRlc3RzIHdoZW4gcHJveHkgc3VwcG9ydHMgSVB2Ni4KIAotICBydGM6OlRlc3RFY2hvU2VydmVy
IHNlcnZlcihUaHJlYWQ6OkN1cnJlbnQoKSwgU29ja2V0QWRkcmVzcyhJTkFERFJfQU5ZLCAwKSk7
CisgIHJ0Yzo6VGVzdEVjaG9TZXJ2ZXIgc2VydmVyKHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvY2tldEFkZHJlc3MoSU5BRERSX0FOWSwgMCkp
OwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jVENQU29ja2V0PiBwYWNrZXRfc29ja2V0
KAogICAgICAgcnRjOjpBc3luY1RDUFNvY2tldDo6Q3JlYXRlKHByb3h5X3NvY2tldCwgU29ja2V0
QWRkcmVzcyhJTkFERFJfQU5ZLCAwKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Byb3h5c2VydmVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcHJveHlzZXJ2ZXIuY2MK
aW5kZXggNTVjYWI4MDk3NWMzNmZkMTU0M2U4NGVkYTUxMmFmZjM4MmJkZTc0Yy4uNzFjNDg3OTA5
OWYwNTY0OGM0ODUwNjA5NjM3NGJjYmE5ZDJmNTMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcHJveHlzZXJ2ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcHJv
eHlzZXJ2ZXIuY2MKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKICNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0ZmFjdG9yeS5oIgogCiBuYW1lc3BhY2UgcnRjIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3JhY2VfY2hlY2tlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgKaW5kZXggNzM1NjdlOThkOGFjMDdkYjc2
NmU4MWM4OTdkYjM0YzBkM2FkOGRlYy4uNGQ1NzQ2MDFlYjBiNGJhNjJhY2U1Y2RiNDZkNjkwYTM0
MTNmYTNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgKQEAgLTEyLDcgKzEy
LDcgQEAKICNkZWZpbmUgUlRDX0JBU0VfUkFDRV9DSEVDS0VSX0hfCiAKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYW5k
b20uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3JhbmRvbS5oCmluZGV4IDJmYWE5ODU2ZGM2YWVlMTEwNWNmZWJiOWZmNmM4YTVkNjA5YjZlMDku
LmUxYzNiYjcwNThlODI2OTc0OTQ5OTQ0OTAwODZmMDI3MTJkYmEwNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhbmRvbS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3JhbmRvbS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFJUQ19CQVNFX1JBTkRPTV9IXwog
I2RlZmluZSBSVENfQkFTRV9SQU5ET01fSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPGxpbWl0cz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9s
aW1pdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvcmF0ZV9saW1pdGVyLmNjCmluZGV4IDAzNDNmMjU2YjI5M2YwYTExNDQ4ZjE2N2RjYTMx
OTBjZjc1MDVkNTYuLjVjN2JkZWZiMGM4Yjk3YTA2OGNhZGQ5MzQ3N2Y1YTA1ZGI3MjZjYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3JhdGVfbGltaXRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRlX2xpbWl0ZXIuY2MKQEAgLTksNiArOSwxMCBAQAogICov
CiAKICNpbmNsdWRlICJydGNfYmFzZS9yYXRlX2xpbWl0ZXIuaCIKKworI2luY2x1ZGUgPGxpbWl0
cz4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJzeXN0ZW1f
d3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Jh
dGVfbGltaXRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmgKaW5kZXggMGJmZGUwZGEyNTliYjdhNGEyZTVkYTAxMDY3
NTNmMDM5M2U5NmYxZS4uNDNlZjg4ZDhmYzM1NmViMGU5MWM5NzgyYzE2MjljYjhkYTYzODljMSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvcmF0ZV9saW1pdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmgKQEAgLTExLDExICsxMSwxMyBAQAog
I2lmbmRlZiBSVENfQkFTRV9SQVRFX0xJTUlURVJfSF8KICNkZWZpbmUgUlRDX0JBU0VfUkFURV9M
SU1JVEVSX0hfCiAKLSNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5j
bHVkZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvcmF0ZV9zdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRp
b25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRlX2xpbWl0ZXJfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9yYXRlX2xpbWl0ZXJfdW5pdHRlc3QuY2MKaW5kZXggNmVmZWE1NDU4ZTFiMDg3Y2ZhMjA1Y2Ux
ZTVlMWI0ZjM3MTY1MDg2Zi4uYWMwNjI1ZmExODZmNzljZWIxN2NkYzI0MjY0OGEwN2ViZTkxOWUz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvcmF0ZV9saW1pdGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVfbGltaXRlcl91bml0dGVzdC5j
YwpAQCAtMTEyLDkgKzExMiw3IEBAIHN0YXRpYyBjb25zdCBpbnQ2NF90IGtNYXhUaW1lb3V0TXMg
PSAzMDAwMDsKIGNsYXNzIFRocmVhZFRhc2sgewogIHB1YmxpYzoKICAgZXhwbGljaXQgVGhyZWFk
VGFzayhSYXRlTGltaXRlciogcmF0ZV9saW1pdGVyKQotICAgICAgOiByYXRlX2xpbWl0ZXJfKHJh
dGVfbGltaXRlciksCi0gICAgICAgIHN0YXJ0X3NpZ25hbF8oZmFsc2UsIGZhbHNlKSwKLSAgICAg
ICAgZW5kX3NpZ25hbF8oZmFsc2UsIGZhbHNlKSB7fQorICAgICAgOiByYXRlX2xpbWl0ZXJfKHJh
dGVfbGltaXRlcikge30KICAgdmlydHVhbCB+VGhyZWFkVGFzaygpIHt9CiAKICAgdm9pZCBSdW4o
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9yYXRlX3N0YXRpc3RpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVfc3RhdGlzdGljcy5oCmluZGV4IDY4MDM1Yzlh
NjhlOThiYTAwMzJiNTdkZDNkYTAwMmQyNmNjMWU5NzYuLmQ0Y2NjNTliZjViZGZkMWM4OTM4OGZk
N2RmZWYxMmJmZDgwYmUwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVfc3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVfc3RhdGlzdGlj
cy5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIFJUQ19CQVNFX1JBVEVfU1RBVElTVElDU19I
XwogI2RlZmluZSBSVENfQkFTRV9SQVRFX1NUQVRJU1RJQ1NfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGV0cmFja2VyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZXRyYWNrZXIuY2MK
aW5kZXggZTMxZDI2NjI3YWIxOWVkYjI3YzFkYmUwMjBiODgzZTVkZjczZDBlOS4uN2M5NmNhOWY2
MDg1ODg5MmI5NTUwMWVmMmU2ODYxYjBiMjE3ODk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZXRyYWNrZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0
ZXRyYWNrZXIuY2MKQEAgLTEwLDggKzEwLDYgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL3JhdGV0
cmFja2VyLmgiCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4KLQogI2luY2x1ZGUgPGFsZ29yaXRobT4K
IAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ydGNj
ZXJ0aWZpY2F0ZS5jYwppbmRleCA3ZjAyN2JhNWY4MGY0ODg4NmQ3M2U1MGJiMzk0NTE2MGY1YTIz
YmY5Li44NzUwNjhmNGZjOTg4OTcwZTAyNmY4NzFmMjk2ZjNkMjVmNWVhMmVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ydGNj
ZXJ0aWZpY2F0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5jYwpAQCAtMTQsNiArMTQsOSBAQAogCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnRlZG9i
amVjdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIK
IAogbmFtZXNwYWNlIHJ0YyB7CiAKQEAgLTI5LDcgKzMyLDcgQEAgUlRDQ2VydGlmaWNhdGU6OlJU
Q0NlcnRpZmljYXRlKFNTTElkZW50aXR5KiBpZGVudGl0eSkgOiBpZGVudGl0eV8oaWRlbnRpdHkp
IHsKIFJUQ0NlcnRpZmljYXRlOjp+UlRDQ2VydGlmaWNhdGUoKSB7fQogCiB1aW50NjRfdCBSVEND
ZXJ0aWZpY2F0ZTo6RXhwaXJlcygpIGNvbnN0IHsKLSAgaW50NjRfdCBleHBpcmVzID0gc3NsX2Nl
cnRpZmljYXRlKCkuQ2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpOworICBpbnQ2NF90IGV4cGly
ZXMgPSBHZXRTU0xDZXJ0aWZpY2F0ZSgpLkNlcnRpZmljYXRlRXhwaXJhdGlvblRpbWUoKTsKICAg
aWYgKGV4cGlyZXMgIT0gLTEpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihleHBp
cmVzKSAqIGtOdW1NaWxsaXNlY3NQZXJTZWM7CiAgIC8vIElmIHRoZSBleHBpcmF0aW9uIHRpbWUg
Y291bGQgbm90IGJlIHJldHJpZXZlZCByZXR1cm4gYW4gZXhwaXJlZCB0aW1lc3RhbXAuCkBAIC00
MCwxNyArNDMsMjIgQEAgYm9vbCBSVENDZXJ0aWZpY2F0ZTo6SGFzRXhwaXJlZCh1aW50NjRfdCBu
b3cpIGNvbnN0IHsKICAgcmV0dXJuIEV4cGlyZXMoKSA8PSBub3c7CiB9CiAKK2NvbnN0IFNTTENl
cnRpZmljYXRlJiBSVENDZXJ0aWZpY2F0ZTo6R2V0U1NMQ2VydGlmaWNhdGUoKSBjb25zdCB7Cisg
IHJldHVybiBpZGVudGl0eV8tPmNlcnRpZmljYXRlKCk7Cit9CisKKy8vIERlcHJlY2F0ZWQ6IFRP
RE8oYmVud3JpZ2h0KSAtIFJlbW92ZSBvbmNlIGNocm9taXVtIGlzIHVwZGF0ZWQuCiBjb25zdCBT
U0xDZXJ0aWZpY2F0ZSYgUlRDQ2VydGlmaWNhdGU6OnNzbF9jZXJ0aWZpY2F0ZSgpIGNvbnN0IHsK
ICAgcmV0dXJuIGlkZW50aXR5Xy0+Y2VydGlmaWNhdGUoKTsKIH0KIAotY29uc3QgU1NMQ2VydENo
YWluJiBSVENDZXJ0aWZpY2F0ZTo6c3NsX2NlcnRfY2hhaW4oKSBjb25zdCB7Citjb25zdCBTU0xD
ZXJ0Q2hhaW4mIFJUQ0NlcnRpZmljYXRlOjpHZXRTU0xDZXJ0aWZpY2F0ZUNoYWluKCkgY29uc3Qg
ewogICByZXR1cm4gaWRlbnRpdHlfLT5jZXJ0X2NoYWluKCk7CiB9CiAKIFJUQ0NlcnRpZmljYXRl
UEVNIFJUQ0NlcnRpZmljYXRlOjpUb1BFTSgpIGNvbnN0IHsKICAgcmV0dXJuIFJUQ0NlcnRpZmlj
YXRlUEVNKGlkZW50aXR5Xy0+UHJpdmF0ZUtleVRvUEVNU3RyaW5nKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBzc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdldFNTTENlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSk7CiB9
CiAKIHNjb3BlZF9yZWZwdHI8UlRDQ2VydGlmaWNhdGU+IFJUQ0NlcnRpZmljYXRlOjpGcm9tUEVN
KApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlLmgKaW5kZXggZDU0MjJmOGI0YTQ3
ZDJmZTE5MjhiNjEyM2M3YjVjMDcyZTA2MzY0ZC4uNTYxZWEwZjllN2U5MDZmNGM3OGQwZmExMTk5
OWE5YmE4NzJjNzAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5oCkBA
IC0xMiwxNSArMTIsMTggQEAKICNkZWZpbmUgUlRDX0JBU0VfUlRDQ0VSVElGSUNBVEVfSF8KIAog
I2luY2x1ZGUgPHN0ZGludC5oPgotCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0cmlu
Zz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
c2NvcGVkX3JlZl9wdHIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zc2xpZGVudGl0eS5oIgogCiBu
YW1lc3BhY2UgcnRjIHsKIAorY2xhc3MgU1NMQ2VydENoYWluOworY2xhc3MgU1NMQ2VydGlmaWNh
dGU7CitjbGFzcyBTU0xJZGVudGl0eTsKKwogLy8gVGhpcyBjbGFzcyBjb250YWlucyBQRU0gc3Ry
aW5ncyBvZiBhbiBSVENDZXJ0aWZpY2F0ZSdzIHByaXZhdGUga2V5IGFuZAogLy8gY2VydGlmaWNh
dGUgYW5kIGFjdHMgYXMgYSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIFJUQ0NlcnRpZmljYXRlLiBD
ZXJ0aWZpY2F0ZXMKIC8vIGNhbiBiZSBzZXJpYWxpemVkIGFuZCBkZXNlcmlhbGl6ZWQgdG8gYW5k
IGZyb20gdGhpcyBmb3JtYXQsIHdoaWNoIGFsbG93cyBmb3IKQEAgLTU1LDExICs1OCwxNSBAQCBj
bGFzcyBSVENDZXJ0aWZpY2F0ZSA6IHB1YmxpYyBSZWZDb3VudEludGVyZmFjZSB7CiAgIC8vIENo
ZWNrcyBpZiB0aGUgY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQsIHdoZXJlIHxub3d8IGlzIGV4cHJl
c3NlZCBpbiBtcwogICAvLyByZWxhdGl2ZSB0byBlcG9jaCwgMTk3MC0wMS0wMVQwMDowMDowMFou
CiAgIGJvb2wgSGFzRXhwaXJlZCh1aW50NjRfdCBub3cpIGNvbnN0OworCisgIGNvbnN0IFNTTENl
cnRpZmljYXRlJiBHZXRTU0xDZXJ0aWZpY2F0ZSgpIGNvbnN0OworICBjb25zdCBTU0xDZXJ0Q2hh
aW4mIEdldFNTTENlcnRpZmljYXRlQ2hhaW4oKSBjb25zdDsKKworICAvLyBEZXByZWNhdGVkOiBU
T0RPKGJlbndyaWdodCkgLSBSZW1vdmUgb25jZSBjaHJvbWl1bSBpcyB1cGRhdGVkLgogICBjb25z
dCBTU0xDZXJ0aWZpY2F0ZSYgc3NsX2NlcnRpZmljYXRlKCkgY29uc3Q7Ci0gIGNvbnN0IFNTTENl
cnRDaGFpbiYgc3NsX2NlcnRfY2hhaW4oKSBjb25zdDsKIAogICAvLyBUT0RPKGhib3MpOiBJZiBw
b3NzaWJsZSwgcmVtb3ZlIG9uY2UgUlRDQ2VydGlmaWNhdGUgYW5kIGl0cwotICAvLyBzc2xfY2Vy
dGlmaWNhdGUoKSBpcyB1c2VkIGluIGFsbCByZWxldmFudCBwbGFjZXMuIFNob3VsZCBub3QgcGFz
cyBhcm91bmQKKyAgLy8gR2V0U1NMQ2VydGlmaWNhdGUoKSBpcyB1c2VkIGluIGFsbCByZWxldmFu
dCBwbGFjZXMuIFNob3VsZCBub3QgcGFzcyBhcm91bmQKICAgLy8gcmF3IFNTTElkZW50aXR5KiBm
b3IgdGhlIHNha2Ugb2YgYWNjZXNzaW5nIFNTTElkZW50aXR5OjpjZXJ0aWZpY2F0ZSgpLgogICAv
LyBIb3dldmVyLCBzb21lIHBsYWNlcyBtaWdodCBuZWVkIFNTTElkZW50aXR5KiBmb3IgaXRzIHB1
YmxpYy9wcml2YXRlIGtleS4uLgogICBTU0xJZGVudGl0eSogaWRlbnRpdHkoKSBjb25zdCB7IHJl
dHVybiBpZGVudGl0eV8uZ2V0KCk7IH0KQEAgLTc3LDcgKzg0LDcgQEAgY2xhc3MgUlRDQ2VydGlm
aWNhdGUgOiBwdWJsaWMgUmVmQ291bnRJbnRlcmZhY2UgewogCiAgcHJpdmF0ZToKICAgLy8gVGhl
IFNTTElkZW50aXR5IGlzIHRoZSBvd25lciBvZiB0aGUgU1NMQ2VydGlmaWNhdGUuIFRvIHByb3Rl
Y3Qgb3VyCi0gIC8vIHNzbF9jZXJ0aWZpY2F0ZSgpIHdlIHRha2Ugb3duZXJzaGlwIG9mIHxpZGVu
dGl0eV98LgorICAvLyBHZXRTU0xDZXJ0aWZpY2F0ZSgpIHdlIHRha2Ugb3duZXJzaGlwIG9mIHxp
ZGVudGl0eV98LgogICBzdGQ6OnVuaXF1ZV9wdHI8U1NMSWRlbnRpdHk+IGlkZW50aXR5XzsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlZ2VuZXJhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGVnZW5lcmF0b3Iu
Y2MKaW5kZXggMGI1MWM2MTFiYWRmNTM3MDE0YmQyMDRiM2U1YmFiNjg1M2ZmYjJlMi4uMTE0YjM1
YzY2NThmY2M5ZTU1NzI1ZTdhMzQ0NDU0OWJjMTJkZjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGVn
ZW5lcmF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGVnZW5lcmF0b3IuY2MKQEAgLTEwLDEwICsxMCwxNSBA
QAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2VydGlmaWNhdGVnZW5lcmF0b3IuaCIKIAorI2lu
Y2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VoYW5k
bGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5
LmgiCiAKQEAgLTIzLDcgKzI4LDYgQEAgbmFtZXNwYWNlIHsKIAogLy8gQSBjZXJ0aWZpY2F0ZXMn
IHN1YmplY3QgYW5kIGlzc3VlciBuYW1lLgogY29uc3QgY2hhciBrSWRlbnRpdHlOYW1lW10gPSAi
V2ViUlRDIjsKLQogY29uc3QgdWludDY0X3Qga1llYXJJblNlY29uZHMgPSAzNjUgKiAyNCAqIDYw
ICogNjA7CiAKIGVudW0gewpAQCAtNjAsMTEgKzY0LDkgQEAgY2xhc3MgUlRDQ2VydGlmaWNhdGVH
ZW5lcmF0aW9uVGFzayA6IHB1YmxpYyBSZWZDb3VudEludGVyZmFjZSwKICAgICBzd2l0Y2ggKG1z
Zy0+bWVzc2FnZV9pZCkgewogICAgICAgY2FzZSBNU0dfR0VORVJBVEU6CiAgICAgICAgIFJUQ19E
Q0hFQ0sod29ya2VyX3RocmVhZF8tPklzQ3VycmVudCgpKTsKLQogICAgICAgICAvLyBQZXJmb3Jt
IHRoZSBjZXJ0aWZpY2F0ZSBnZW5lcmF0aW9uIHdvcmsgaGVyZSBvbiB0aGUgd29ya2VyIHRocmVh
ZC4KICAgICAgICAgY2VydGlmaWNhdGVfID0gUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I6OkdlbmVy
YXRlQ2VydGlmaWNhdGUoCiAgICAgICAgICAgICBrZXlfcGFyYW1zXywgZXhwaXJlc19tc18pOwot
CiAgICAgICAgIC8vIEhhbmRsZSBjYWxsYmFja3Mgb24gc2lnbmFsaW5nIHRocmVhZC4gUGFzcyBv
biB0aGUgfG1zZy0+cGRhdGF8CiAgICAgICAgIC8vICh3aGljaCByZWZlcmVuY2VzIHx0aGlzfCB3
aXRoIHJlZiBjb3VudGluZykgdG8gdGhhdCB0aHJlYWQuCiAgICAgICAgIHNpZ25hbGluZ190aHJl
YWRfLT5Qb3N0KFJUQ19GUk9NX0hFUkUsIHRoaXMsIE1TR19HRU5FUkFURV9ET05FLApAQCAtNzIs
MTQgKzc0LDEyIEBAIGNsYXNzIFJUQ0NlcnRpZmljYXRlR2VuZXJhdGlvblRhc2sgOiBwdWJsaWMg
UmVmQ291bnRJbnRlcmZhY2UsCiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBNU0dfR0VORVJB
VEVfRE9ORToKICAgICAgICAgUlRDX0RDSEVDSyhzaWduYWxpbmdfdGhyZWFkXy0+SXNDdXJyZW50
KCkpOwotCiAgICAgICAgIC8vIFBlcmZvcm0gY2FsbGJhY2sgd2l0aCByZXN1bHQgaGVyZSBvbiB0
aGUgc2lnbmFsaW5nIHRocmVhZC4KICAgICAgICAgaWYgKGNlcnRpZmljYXRlXykgewogICAgICAg
ICAgIGNhbGxiYWNrXy0+T25TdWNjZXNzKGNlcnRpZmljYXRlXyk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgY2FsbGJhY2tfLT5PbkZhaWx1cmUoKTsKICAgICAgICAgfQotCiAgICAgICAg
IC8vIERlc3Ryb3kgfG1zZy0+cGRhdGF8IHdoaWNoIHJlZmVyZW5jZXMgfHRoaXN8IHdpdGggcmVm
IGNvdW50aW5nLiBUaGlzCiAgICAgICAgIC8vIG1heSByZXN1bHQgaW4gfHRoaXN8IGJlaW5nIGRl
bGV0ZWQgLSBkbyBub3QgdG91Y2ggbWVtYmVyIHZhcmlhYmxlcwogICAgICAgICAvLyBhZnRlciB0
aGlzIGxpbmUuCkBAIC0xMDUsOSArMTA1LDExIEBAIGNsYXNzIFJUQ0NlcnRpZmljYXRlR2VuZXJh
dGlvblRhc2sgOiBwdWJsaWMgUmVmQ291bnRJbnRlcmZhY2UsCiBzY29wZWRfcmVmcHRyPFJUQ0Nl
cnRpZmljYXRlPiBSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcjo6R2VuZXJhdGVDZXJ0aWZpY2F0ZSgK
ICAgICBjb25zdCBLZXlQYXJhbXMmIGtleV9wYXJhbXMsCiAgICAgY29uc3QgYWJzbDo6b3B0aW9u
YWw8dWludDY0X3Q+JiBleHBpcmVzX21zKSB7Ci0gIGlmICgha2V5X3BhcmFtcy5Jc1ZhbGlkKCkp
CisgIGlmICgha2V5X3BhcmFtcy5Jc1ZhbGlkKCkpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
U1NMSWRlbnRpdHkqIGlkZW50aXR5OworICB9CisKKyAgU1NMSWRlbnRpdHkqIGlkZW50aXR5ID0g
bnVsbHB0cjsKICAgaWYgKCFleHBpcmVzX21zKSB7CiAgICAgaWRlbnRpdHkgPSBTU0xJZGVudGl0
eTo6R2VuZXJhdGUoa0lkZW50aXR5TmFtZSwga2V5X3BhcmFtcyk7CiAgIH0gZWxzZSB7CkBAIC0x
MjQsOCArMTI2LDkgQEAgc2NvcGVkX3JlZnB0cjxSVENDZXJ0aWZpY2F0ZT4gUlRDQ2VydGlmaWNh
dGVHZW5lcmF0b3I6OkdlbmVyYXRlQ2VydGlmaWNhdGUoCiAgICAgaWRlbnRpdHkgPSBTU0xJZGVu
dGl0eTo6R2VuZXJhdGVXaXRoRXhwaXJhdGlvbihrSWRlbnRpdHlOYW1lLCBrZXlfcGFyYW1zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9s
aWZldGltZV9zKTsKICAgfQotICBpZiAoIWlkZW50aXR5KQorICBpZiAoIWlkZW50aXR5KSB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CisgIH0KICAgc3RkOjp1bmlxdWVfcHRyPFNTTElkZW50aXR5PiBp
ZGVudGl0eV9zcHRyKGlkZW50aXR5KTsKICAgcmV0dXJuIFJUQ0NlcnRpZmljYXRlOjpDcmVhdGUo
c3RkOjptb3ZlKGlkZW50aXR5X3NwdHIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlZ2VuZXJh
dG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9ydGNjZXJ0aWZpY2F0ZWdlbmVyYXRvci5oCmluZGV4IGE2YzUwM2E5ZjI5Y2YwNGQ2ZDI2YTA1
NzJiZTVlOTc0NDJmZjQ1ZDIuLmZlZDA3NWU2ZGRmNGU2N2I0MzRiYWFlYWIxYzYzMjlkYWFjM2Jj
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlZ2VuZXJhdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGVnZW5lcmF0
b3IuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBSVENfQkFTRV9SVENDRVJUSUZJQ0FURUdF
TkVSQVRPUl9IXwogI2RlZmluZSBSVENfQkFTRV9SVENDRVJUSUZJQ0FURUdFTkVSQVRPUl9IXwog
CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ydGNj
ZXJ0aWZpY2F0ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2FuaXRpemVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zYW5pdGl6ZXIuaAppbmRleCAyM2E3NDhmODRm
YzAyN2Q0Y2RmNWVmYmZiMjQzMGIyZjU2ZDgyZTkzLi44YWYwODI0YjY3Yzg1YmNkZWRiM2VmYmMz
NWU0MTBlNmUwMWFlOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zYW5pdGl6ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zYW5pdGl6ZXIuaApAQCAtMTQsNyAr
MTQsNyBAQAogI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gRm9yIHNpemVfdC4KIAogI2lmZGVmIF9f
Y3BsdXNwbHVzCi0jaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5
cGVfdHJhaXRzLmgiCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX19oYXNfZmVhdHVyZSkKQEAgLTk4
LDEwICs5OCwxMCBAQCBuYW1lc3BhY2Ugc2FuaXRpemVyX2ltcGwgewogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KIGNvbnN0ZXhwciBib29sIElzVHJpdmlhbGx5Q29weWFibGUoKSB7Ci0gIHJldHVy
biBzdGF0aWNfY2FzdDxib29sPihzdGQ6OmlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGU8
VD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RkOjppc190cml2aWFs
bHlfY29weV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSB8fAorICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9v
bD4oYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUgJiYKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChhYnNsOjppc190cml2aWFsbHlfY29weV9hc3NpZ25h
YmxlPFQ+Ojp2YWx1ZSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzdGQ6OmlzX2Nv
cHlfYXNzaWduYWJsZTxUPjo6dmFsdWUpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlKTsK
IH0KIAogfSAgLy8gbmFtZXNwYWNlIHNhbml0aXplcl9pbXBsCkBAIC0xMjMsOSArMTIzLDExIEBA
IGlubGluZSB2b2lkIE1zYW5NYXJrVW5pbml0aWFsaXplZChjb25zdCBUJiBtZW0pIHsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVCBNc2FuVW5pbml0aWFsaXplZChUIHQpIHsKKyNp
ZiBSVENfSEFTX01TQU4KICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODc2Mik6IFN3aXRjaCB0
byBzdGQ6OmlzX3RyaXZpYWxseV9jb3B5YWJsZSB3aGVuIGl0CiAgIC8vIGJlY29tZXMgYXZhaWxh
YmxlIGluIGRvd25zdHJlYW0gcHJvamVjdHMuCiAgIHN0YXRpY19hc3NlcnQoc2FuaXRpemVyX2lt
cGw6OklzVHJpdmlhbGx5Q29weWFibGU8VD4oKSwgIiIpOworI2VuZGlmCiAgIHJ0Y19Nc2FuTWFy
a1VuaW5pdGlhbGl6ZWQoJnQsIHNpemVvZihUKSwgMSk7CiAgIHJldHVybiB0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c2NvcGVkX3JlZl9wdHIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgKaW5kZXggYTU4M2FhOTliNTMzYmIyOWY2OTcz
YjJmZjI5N2FlMmZiYmEzZmExZS4uYjk2MWZmNTdlODY0YTczOTMyODA5MzRkM2IyYzgxMmM3MWI5
ZWUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oCkBAIC04LDE1NCAr
OCwxMiBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgogICovCiAKLS8vIE9yaWdpbmFsbHkgdGhlc2UgY2xhc3NlcyBhcmUg
ZnJvbSBDaHJvbWl1bS4KLS8vIGh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9jaHJvbWUv
dHJ1bmsvc3JjL2Jhc2UvbWVtb3J5L3JlZl9jb3VudGVkLmg/dmlldz1tYXJrdXAKLQotLy8KLS8v
IEEgc21hcnQgcG9pbnRlciBjbGFzcyBmb3IgcmVmZXJlbmNlIGNvdW50ZWQgb2JqZWN0cy4gIFVz
ZSB0aGlzIGNsYXNzIGluc3RlYWQKLS8vIG9mIGNhbGxpbmcgQWRkUmVmIGFuZCBSZWxlYXNlIG1h
bnVhbGx5IG9uIGEgcmVmZXJlbmNlIGNvdW50ZWQgb2JqZWN0IHRvCi0vLyBhdm9pZCBjb21tb24g
bWVtb3J5IGxlYWtzIGNhdXNlZCBieSBmb3JnZXR0aW5nIHRvIFJlbGVhc2UgYW4gb2JqZWN0Ci0v
LyByZWZlcmVuY2UuICBTYW1wbGUgdXNhZ2U6Ci0vLwotLy8gICBjbGFzcyBNeUZvbyA6IHB1Ymxp
YyBSZWZDb3VudGVkPE15Rm9vPiB7Ci0vLyAgICAuLi4KLS8vICAgfTsKLS8vCi0vLyAgIHZvaWQg
c29tZV9mdW5jdGlvbigpIHsKLS8vICAgICBzY29wZWRfcmVmcHRyPE15Rm9vPiBmb28gPSBuZXcg
TXlGb28oKTsKLS8vICAgICBmb28tPk1ldGhvZChwYXJhbSk7Ci0vLyAgICAgLy8gfGZvb3wgaXMg
cmVsZWFzZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMKLS8vICAgfQotLy8KLS8vICAgdm9p
ZCBzb21lX290aGVyX2Z1bmN0aW9uKCkgewotLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+IGZv
byA9IG5ldyBNeUZvbygpOwotLy8gICAgIC4uLgotLy8gICAgIGZvbyA9IG51bGxwdHI7ICAvLyBl
eHBsaWNpdGx5IHJlbGVhc2VzIHxmb298Ci0vLyAgICAgLi4uCi0vLyAgICAgaWYgKGZvbykKLS8v
ICAgICAgIGZvby0+TWV0aG9kKHBhcmFtKTsKLS8vICAgfQotLy8KLS8vIFRoZSBhYm92ZSBleGFt
cGxlcyBzaG93IGhvdyBzY29wZWRfcmVmcHRyPFQ+IGFjdHMgbGlrZSBhIHBvaW50ZXIgdG8gVC4K
LS8vIEdpdmVuIHR3byBzY29wZWRfcmVmcHRyPFQ+IGNsYXNzZXMsIGl0IGlzIGFsc28gcG9zc2li
bGUgdG8gZXhjaGFuZ2UKLS8vIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIG9iamVjdHMsIGxp
a2Ugc286Ci0vLwotLy8gICB7Ci0vLyAgICAgc2NvcGVkX3JlZnB0cjxNeUZvbz4gYSA9IG5ldyBN
eUZvbygpOwotLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+IGI7Ci0vLwotLy8gICAgIGIuc3dh
cChhKTsKLS8vICAgICAvLyBub3csIHxifCByZWZlcmVuY2VzIHRoZSBNeUZvbyBvYmplY3QsIGFu
ZCB8YXwgcmVmZXJlbmNlcyBudWxsLgotLy8gICB9Ci0vLwotLy8gVG8gbWFrZSBib3RoIHxhfCBh
bmQgfGJ8IGluIHRoZSBhYm92ZSBleGFtcGxlIHJlZmVyZW5jZSB0aGUgc2FtZSBNeUZvbwotLy8g
b2JqZWN0LCBzaW1wbHkgdXNlIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yOgotLy8KLS8vICAgewot
Ly8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+IGEgPSBuZXcgTXlGb28oKTsKLS8vICAgICBzY29w
ZWRfcmVmcHRyPE15Rm9vPiBiOwotLy8KLS8vICAgICBiID0gYTsKLS8vICAgICAvLyBub3csIHxh
fCBhbmQgfGJ8IGVhY2ggb3duIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIE15Rm9vIG9iamVjdC4K
LS8vICAgfQotLy8KLQogI2lmbmRlZiBSVENfQkFTRV9TQ09QRURfUkVGX1BUUl9IXwogI2RlZmlu
ZSBSVENfQkFTRV9TQ09QRURfUkVGX1BUUl9IXwogCi0jaW5jbHVkZSA8bWVtb3J5PgotCi1uYW1l
c3BhY2UgcnRjIHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1jbGFzcyBzY29wZWRfcmVmcHRyIHsK
LSBwdWJsaWM6Ci0gIHNjb3BlZF9yZWZwdHIoKSA6IHB0cl8obnVsbHB0cikge30KLQotICBzY29w
ZWRfcmVmcHRyKFQqIHApIDogcHRyXyhwKSB7Ci0gICAgaWYgKHB0cl8pCi0gICAgICBwdHJfLT5B
ZGRSZWYoKTsKLSAgfQotCi0gIHNjb3BlZF9yZWZwdHIoY29uc3Qgc2NvcGVkX3JlZnB0cjxUPiYg
cikgOiBwdHJfKHIucHRyXykgewotICAgIGlmIChwdHJfKQotICAgICAgcHRyXy0+QWRkUmVmKCk7
Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgc2NvcGVkX3JlZnB0cihjb25zdCBz
Y29wZWRfcmVmcHRyPFU+JiByKSA6IHB0cl8oci5nZXQoKSkgewotICAgIGlmIChwdHJfKQotICAg
ICAgcHRyXy0+QWRkUmVmKCk7Ci0gIH0KLQotICAvLyBNb3ZlIGNvbnN0cnVjdG9ycy4KLSAgc2Nv
cGVkX3JlZnB0cihzY29wZWRfcmVmcHRyPFQ+JiYgcikgOiBwdHJfKHIucmVsZWFzZSgpKSB7fQot
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICBzY29wZWRfcmVmcHRyKHNjb3BlZF9yZWZwdHI8
VT4mJiByKSA6IHB0cl8oci5yZWxlYXNlKCkpIHt9Ci0KLSAgfnNjb3BlZF9yZWZwdHIoKSB7Ci0g
ICAgaWYgKHB0cl8pCi0gICAgICBwdHJfLT5SZWxlYXNlKCk7Ci0gIH0KLQotICBUKiBnZXQoKSBj
b25zdCB7IHJldHVybiBwdHJfOyB9Ci0gIG9wZXJhdG9yIFQqKCkgY29uc3QgeyByZXR1cm4gcHRy
XzsgfQotICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gcHRyXzsgfQotCi0gIC8vIFJl
dHVybnMgdGhlIChwb3NzaWJseSBudWxsKSByYXcgcG9pbnRlciwgYW5kIG1ha2VzIHRoZSBzY29w
ZWRfcmVmcHRyIGhvbGQgYQotICAvLyBudWxsIHBvaW50ZXIsIGFsbCB3aXRob3V0IHRvdWNoaW5n
IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHVuZGVybHlpbmcKLSAgLy8gcG9pbnRlZC10byBv
YmplY3QuIFRoZSBvYmplY3QgaXMgc3RpbGwgcmVmZXJlbmNlIGNvdW50ZWQsIGFuZCB0aGUgY2Fs
bGVyIG9mCi0gIC8vIHJlbGVhc2UoKSBpcyBub3cgdGhlIHByb3VkIG93bmVyIG9mIG9uZSByZWZl
cmVuY2UsIHNvIGl0IGlzIHJlc3BvbnNpYmxlIGZvcgotICAvLyBjYWxsaW5nIFJlbGVhc2UoKSBv
bmNlIG9uIHRoZSBvYmplY3Qgd2hlbiBubyBsb25nZXIgdXNpbmcgaXQuCi0gIFQqIHJlbGVhc2Uo
KSB7Ci0gICAgVCogcmV0VmFsID0gcHRyXzsKLSAgICBwdHJfID0gbnVsbHB0cjsKLSAgICByZXR1
cm4gcmV0VmFsOwotICB9Ci0KLSAgc2NvcGVkX3JlZnB0cjxUPiYgb3BlcmF0b3I9KFQqIHApIHsK
LSAgICAvLyBBZGRSZWYgZmlyc3Qgc28gdGhhdCBzZWxmIGFzc2lnbm1lbnQgc2hvdWxkIHdvcmsK
LSAgICBpZiAocCkKLSAgICAgIHAtPkFkZFJlZigpOwotICAgIGlmIChwdHJfKQotICAgICAgcHRy
Xy0+UmVsZWFzZSgpOwotICAgIHB0cl8gPSBwOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0g
IHNjb3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShjb25zdCBzY29wZWRfcmVmcHRyPFQ+JiByKSB7
Ci0gICAgcmV0dXJuICp0aGlzID0gci5wdHJfOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+Ci0gIHNjb3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShjb25zdCBzY29wZWRfcmVmcHRyPFU+
JiByKSB7Ci0gICAgcmV0dXJuICp0aGlzID0gci5nZXQoKTsKLSAgfQotCi0gIHNjb3BlZF9yZWZw
dHI8VD4mIG9wZXJhdG9yPShzY29wZWRfcmVmcHRyPFQ+JiYgcikgewotICAgIHNjb3BlZF9yZWZw
dHI8VD4oc3RkOjptb3ZlKHIpKS5zd2FwKCp0aGlzKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0K
LQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgc2NvcGVkX3JlZnB0cjxUPiYgb3BlcmF0b3I9
KHNjb3BlZF9yZWZwdHI8VT4mJiByKSB7Ci0gICAgc2NvcGVkX3JlZnB0cjxUPihzdGQ6Om1vdmUo
cikpLnN3YXAoKnRoaXMpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIHZvaWQgc3dhcChU
KiogcHApIHsKLSAgICBUKiBwID0gcHRyXzsKLSAgICBwdHJfID0gKnBwOwotICAgICpwcCA9IHA7
Ci0gIH0KLQotICB2b2lkIHN3YXAoc2NvcGVkX3JlZnB0cjxUPiYgcikgeyBzd2FwKCZyLnB0cl8p
OyB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIFQqIHB0cl87Ci19OworLy8gVE9ETyhidWdzLndlYnJ0Yy5v
cmcvOTg4Nyk6IFRoaXMgaXMgYSBmb3J3YXJkIGhlYWRlciBmb3IgYmFja3dhcmRzCisvLyBjb21w
YXRpYmlsaXR5LiBSZW1vdmUgd2hlbiBkb3duc3RyZWFtIGNsaWVudHMgYXJlIHVwZGF0ZWQuCiAK
LX0gIC8vIG5hbWVzcGFjZSBydGMKKyNpbmNsdWRlICJhcGkvc2NvcGVkX3JlZnB0ci5oIgogCiAj
ZW5kaWYgIC8vIFJUQ19CQVNFX1NDT1BFRF9SRUZfUFRSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zZXF1ZW5jZWRfdGFz
a19jaGVja2VyX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyX2ltcGwuY2MKaW5kZXggMTYwNjlj
MjVmN2FiMDY0NjcyZDk2ZjNiYjA0MjZiMTQ3OTBkMmI0Ny4uNzE3Y2I5NTA0MDgzNWE1N2IxNDgw
NWJhYjIwMjVjZmFiOTgzODU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl9pbXBsLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3NlcXVlbmNlZF90YXNrX2NoZWNrZXJfaW1wbC5jYwpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1
ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2NoZWNrZXIuaCIKICNp
bmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2No
ZWNrZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyX3VuaXR0ZXN0LmNjCmluZGV4IDk2
ZTY1NWJhYWQ0ZjM3YzM3MDZiMjNiNzJkMTQxODNlYmZkZjM4MjYuLjdiNzI0N2M2NGMwMTVmYWQz
ZjE2NzdmOGFjNzEyYWZlYzliODkwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2NoZWNrZXJfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl91bml0dGVzdC5jYwpAQCAtMTIsNiArMTIs
NyBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19x
dWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCkBAIC00Myw3ICs0
NCw2IEBAIGNsYXNzIENhbGxDYWxsZWRTZXF1ZW50aWFsbHlPblRocmVhZCB7CiAgIENhbGxDYWxs
ZWRTZXF1ZW50aWFsbHlPblRocmVhZChib29sIGV4cGVjdF90cnVlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2VxdWVuY2VkVGFza0NoZWNrZXIqIHNlcXVlbmNlZF90YXNrX2No
ZWNrZXIpCiAgICAgICA6IGV4cGVjdF90cnVlXyhleHBlY3RfdHJ1ZSksCi0gICAgICAgIHRocmVh
ZF9oYXNfcnVuX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAogICAgICAgICB0aHJlYWRfKCZSdW4sIHRo
aXMsICJjYWxsX2RvX3N0dWZmX29uX3RocmVhZCIpLAogICAgICAgICBzZXF1ZW5jZWRfdGFza19j
aGVja2VyXyhzZXF1ZW5jZWRfdGFza19jaGVja2VyKSB7CiAgICAgdGhyZWFkXy5TdGFydCgpOwpA
QCAtNzcsNyArNzcsNiBAQCBjbGFzcyBEZWxldGVTZXF1ZW5jZWRDaGVja2VyT25UaHJlYWQgewog
ICBleHBsaWNpdCBEZWxldGVTZXF1ZW5jZWRDaGVja2VyT25UaHJlYWQoCiAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2VxdWVuY2VkVGFza0NoZWNrZXI+IHNlcXVlbmNlZF90YXNrX2NoZWNrZXIpCiAg
ICAgICA6IHRocmVhZF8oJlJ1biwgdGhpcywgImRlbGV0ZV9zZXF1ZW5jZWRfdGFza19jaGVja2Vy
X29uX3RocmVhZCIpLAotICAgICAgICB0aHJlYWRfaGFzX3J1bl9ldmVudF8oZmFsc2UsIGZhbHNl
KSwKICAgICAgICAgc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl8oc3RkOjptb3ZlKHNlcXVlbmNlZF90
YXNrX2NoZWNrZXIpKSB7CiAgICAgdGhyZWFkXy5TdGFydCgpOwogICB9CkBAIC0xMTgsNyArMTE3
LDcgQEAgdm9pZCBSdW5NZXRob2RPbkRpZmZlcmVudFRhc2tRdWV1ZShib29sIGV4cGVjdF90cnVl
KSB7CiAKICAgc3RhdGljIGNvbnN0IGNoYXIga1F1ZXVlTmFtZVtdID0gIk1ldGhvZE5vdEFsbG93
ZWRPbkRpZmZlcmVudFRxIjsKICAgVGFza1F1ZXVlIHF1ZXVlKGtRdWV1ZU5hbWUpOwotICBFdmVu
dCBkb25lX2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGRvbmVfZXZlbnQ7CiAgIHF1ZXVl
LlBvc3RUYXNrKFsmc2VxdWVuY2VkX3Rhc2tfY2hlY2tlciwgJmRvbmVfZXZlbnQsIGV4cGVjdF90
cnVlXSB7CiAgICAgaWYgKGV4cGVjdF90cnVlKQogICAgICAgRVhQRUNUX1RSVUUoc2VxdWVuY2Vk
X3Rhc2tfY2hlY2tlci0+Q2FsbGVkU2VxdWVudGlhbGx5KCkpOwpAQCAtMTM1LDcgKzEzNCw3IEBA
IHZvaWQgRGV0YWNoVGhlbkNhbGxGcm9tRGlmZmVyZW50VGFza1F1ZXVlKGJvb2wgZXhwZWN0X3Ry
dWUpIHsKIAogICBzZXF1ZW5jZWRfdGFza19jaGVja2VyLT5EZXRhY2goKTsKIAotICBFdmVudCBk
b25lX2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGRvbmVfZXZlbnQ7CiAgIFRhc2tRdWV1
ZSBxdWV1ZTEoIkRldGFjaFRoZW5DYWxsRnJvbURpZmZlcmVudFRhc2tRdWV1ZUltcGwxIik7CiAg
IHF1ZXVlMS5Qb3N0VGFzayhbJnNlcXVlbmNlZF90YXNrX2NoZWNrZXIsICZkb25lX2V2ZW50XSB7
CiAgICAgRVhQRUNUX1RSVUUoc2VxdWVuY2VkX3Rhc2tfY2hlY2tlci0+Q2FsbGVkU2VxdWVudGlh
bGx5KCkpOwpAQCAtMTkzLDcgKzE5Miw3IEBAIFRFU1QoU2VxdWVuY2VkVGFza0NoZWNrZXJUZXN0
LCBEZXRhY2hGcm9tVGhyZWFkQW5kVXNlT25UYXNrUXVldWUpIHsKICAgc2VxdWVuY2VkX3Rhc2tf
Y2hlY2tlci0+RGV0YWNoKCk7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtRdWV1ZU5hbWVbXSA9ICJE
ZXRhY2hGcm9tVGhyZWFkQW5kVXNlT25UYXNrUXVldWUiOwogICBUYXNrUXVldWUgcXVldWUoa1F1
ZXVlTmFtZSk7Ci0gIEV2ZW50IGRvbmVfZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZG9u
ZV9ldmVudDsKICAgcXVldWUuUG9zdFRhc2soWyZzZXF1ZW5jZWRfdGFza19jaGVja2VyLCAmZG9u
ZV9ldmVudF0gewogICAgIEVYUEVDVF9UUlVFKHNlcXVlbmNlZF90YXNrX2NoZWNrZXItPkNhbGxl
ZFNlcXVlbnRpYWxseSgpKTsKICAgICBkb25lX2V2ZW50LlNldCgpOwpAQCAtMjAzLDcgKzIwMiw3
IEBAIFRFU1QoU2VxdWVuY2VkVGFza0NoZWNrZXJUZXN0LCBEZXRhY2hGcm9tVGhyZWFkQW5kVXNl
T25UYXNrUXVldWUpIHsKIAogVEVTVChTZXF1ZW5jZWRUYXNrQ2hlY2tlclRlc3QsIERldGFjaEZy
b21UYXNrUXVldWVBbmRVc2VPblRocmVhZCkgewogICBUYXNrUXVldWUgcXVldWUoIkRldGFjaEZy
b21UYXNrUXVldWVBbmRVc2VPblRocmVhZCIpOwotICBFdmVudCBkb25lX2V2ZW50KGZhbHNlLCBm
YWxzZSk7CisgIEV2ZW50IGRvbmVfZXZlbnQ7CiAgIHF1ZXVlLlBvc3RUYXNrKFsmZG9uZV9ldmVu
dF0gewogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXF1ZW5jZWRUYXNrQ2hlY2tlcj4gc2VxdWVuY2Vk
X3Rhc2tfY2hlY2tlcigKICAgICAgICAgbmV3IFNlcXVlbmNlZFRhc2tDaGVja2VyKCkpOwpAQCAt
MjcxLDcgKzI3MCw3IEBAIHZvaWQgVGVzdEFubm90YXRpb25zT25Xcm9uZ1F1ZXVlKCkgewogICBU
ZXN0QW5ub3RhdGlvbnMgYW5ub3RhdGlvbnM7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtRdWV1ZU5h
bWVbXSA9ICJUZXN0QW5ub3RhdGlvbnNPbldyb25nUXVldWVEZWJ1ZyI7CiAgIFRhc2tRdWV1ZSBx
dWV1ZShrUXVldWVOYW1lKTsKLSAgRXZlbnQgZG9uZV9ldmVudChmYWxzZSwgZmFsc2UpOworICBF
dmVudCBkb25lX2V2ZW50OwogICBxdWV1ZS5Qb3N0VGFzayhbJmFubm90YXRpb25zLCAmZG9uZV9l
dmVudF0gewogICAgIGFubm90YXRpb25zLk1vZGlmeVRlc3RWYXIoKTsKICAgICBkb25lX2V2ZW50
LlNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvc2lnbmFsdGhyZWFkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2lnbmFsdGhyZWFkLmNjCmluZGV4IGViNzlkYzg0
ZmU4ZTU0NjVkYWMxZWU2ZTg5NDRkMGJlNzFiNGVmYjYuLjVkZDkzODc5MzE1YzM5ZWFkMGVmMDY1
ZmYzYzRmOTIxYjk3MWY4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NpZ25hbHRocmVhZC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zaWduYWx0aHJlYWQuY2MK
QEAgLTEwLDggKzEwLDEzIEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9zaWduYWx0aHJlYWQuaCIK
IAorI2luY2x1ZGUgPG1lbW9yeT4KKwogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9u
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVsbHNvY2tldHNlcnZlci5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3NvY2tldHNlcnZlci5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2lnbmFs
dGhyZWFkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9zaWduYWx0aHJlYWQuaAppbmRleCAwMjFjZjRkNzhkZjhlNGEzNWRiOGQ2YjM3Mjc4N2Jm
YzEwNzgzMGQzLi45MjA4ZTJjMjQ2Nzc4NzUzN2UwODNiNWFkOWY3M2I1ZjgyNDVkMzRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zaWduYWx0aHJlYWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zaWduYWx0aHJlYWQuaApAQCAtMTUsOSArMTUsMTIgQEAKIAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2Fn
ZWhhbmRsZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKICNpbmNsdWRlICJydGNf
YmFzZS90aHJlYWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIK
IAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldC5jYwppbmRleCBhOTc0OWE0
NzNlZTExODFmZTVjOTgwNGU4MzE0MTk3YmM0Y2IxYjFmLi5mMTliMzQ0MTJmNGE1OGY5NmRjMWEw
MTU1ZWUyMTAyMjYwZmI1YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0LmNjCkBAIC0xMiwxNiAr
MTIsNCBAQAogCiBuYW1lc3BhY2UgcnRjIHsKIAotUGFja2V0SW5mbzo6UGFja2V0SW5mbygpID0g
ZGVmYXVsdDsKLVBhY2tldEluZm86OlBhY2tldEluZm8oY29uc3QgUGFja2V0SW5mbyYgaW5mbykg
PSBkZWZhdWx0OwotUGFja2V0SW5mbzo6flBhY2tldEluZm8oKSA9IGRlZmF1bHQ7Ci0KLVNlbnRQ
YWNrZXQ6OlNlbnRQYWNrZXQoKSA9IGRlZmF1bHQ7Ci1TZW50UGFja2V0OjpTZW50UGFja2V0KGlu
dDY0X3QgcGFja2V0X2lkLCBpbnQ2NF90IHNlbmRfdGltZV9tcykKLSAgICA6IHBhY2tldF9pZChw
YWNrZXRfaWQpLCBzZW5kX3RpbWVfbXMoc2VuZF90aW1lX21zKSB7fQotU2VudFBhY2tldDo6U2Vu
dFBhY2tldChpbnQ2NF90IHBhY2tldF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBzZW5kX3RpbWVfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0
SW5mbyYgaW5mbykKLSAgICA6IHBhY2tldF9pZChwYWNrZXRfaWQpLCBzZW5kX3RpbWVfbXMoc2Vu
ZF90aW1lX21zKSwgaW5mbyhpbmZvKSB7fQotCiB9ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9z
b2NrZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3NvY2tldC5oCmluZGV4IGI4MjkwYmIxMzliMmU2OWE1N2IyMDc0ZWE1NzYzNTg5ZDQwNjY5
Y2YuLmU3ZTgyMTA4Y2QyOWQyYWJkYjMxOWJkMjM2ZDliNjQ3NjExYWM1MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tl
dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3NvY2tldC5oCkBAIC0yNSw4ICsyNSw4IEBACiAjaW5jbHVkZSAicnRjX2Jhc2Uvd2luMzIu
aCIKICNlbmRpZgogCi0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3Jr
L3NlbnRfcGFja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oIgogCiAv
LyBSYXRoZXIgdGhhbiBjb252ZXJ0aW5nIGVycm9ycyBpbnRvIGEgcHJpdmF0ZSBuYW1lc3BhY2Us
CkBAIC0xMjMsNTAgKzEyMyw2IEBAIGlubGluZSBib29sIElzQmxvY2tpbmdFcnJvcihpbnQgZSkg
ewogICByZXR1cm4gKGUgPT0gRVdPVUxEQkxPQ0spIHx8IChlID09IEVBR0FJTikgfHwgKGUgPT0g
RUlOUFJPR1JFU1MpOwogfQogCi1lbnVtIGNsYXNzIFBhY2tldFR5cGUgewotICBrVW5rbm93biwK
LSAga0RhdGEsCi0gIGtJY2VDb25uZWN0aXZpdHlDaGVjaywKLSAga0ljZUNvbm5lY3Rpdml0eUNo
ZWNrUmVzcG9uc2UsCi0gIGtTdHVuTWVzc2FnZSwKLSAga1R1cm5NZXNzYWdlLAotfTsKLQotZW51
bSBjbGFzcyBQYWNrZXRJbmZvUHJvdG9jb2xUeXBlIHsKLSAga1Vua25vd24sCi0gIGtVZHAsCi0g
IGtUY3AsCi0gIGtTc2x0Y3AsCi0gIGtUbHMsCi19OwotCi1zdHJ1Y3QgUGFja2V0SW5mbyB7Ci0g
IFBhY2tldEluZm8oKTsKLSAgUGFja2V0SW5mbyhjb25zdCBQYWNrZXRJbmZvJiBpbmZvKTsKLSAg
flBhY2tldEluZm8oKTsKLQotICBQYWNrZXRUeXBlIHBhY2tldF90eXBlID0gUGFja2V0VHlwZTo6
a1Vua25vd247Ci0gIFBhY2tldEluZm9Qcm90b2NvbFR5cGUgcHJvdG9jb2wgPSBQYWNrZXRJbmZv
UHJvdG9jb2xUeXBlOjprVW5rbm93bjsKLSAgLy8gQSB1bmlxdWUgaWQgYXNzaWduZWQgYnkgdGhl
IG5ldHdvcmsgbWFuYWdlciwgYW5kIGFic2w6Om51bGxvcHQgaWYgbm90IHNldC4KLSAgYWJzbDo6
b3B0aW9uYWw8dWludDE2X3Q+IG5ldHdvcmtfaWQ7Ci0gIHNpemVfdCBwYWNrZXRfc2l6ZV9ieXRl
cyA9IDA7Ci0gIHNpemVfdCB0dXJuX292ZXJoZWFkX2J5dGVzID0gMDsKLSAgU29ja2V0QWRkcmVz
cyBsb2NhbF9zb2NrZXRfYWRkcmVzczsKLSAgU29ja2V0QWRkcmVzcyByZW1vdGVfc29ja2V0X2Fk
ZHJlc3M7Ci19OwotCi1zdHJ1Y3QgU2VudFBhY2tldCB7Ci0gIFNlbnRQYWNrZXQoKTsKLSAgU2Vu
dFBhY2tldChpbnQ2NF90IHBhY2tldF9pZCwgaW50NjRfdCBzZW5kX3RpbWVfbXMpOwotICBTZW50
UGFja2V0KGludDY0X3QgcGFja2V0X2lkLAotICAgICAgICAgICAgIGludDY0X3Qgc2VuZF90aW1l
X21zLAotICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0SW5mbyYgaW5mbyk7Ci0KLSAgaW50
NjRfdCBwYWNrZXRfaWQgPSAtMTsKLSAgaW50NjRfdCBzZW5kX3RpbWVfbXMgPSAtMTsKLSAgcnRj
OjpQYWNrZXRJbmZvIGluZm87Ci19OwotCiAvLyBHZW5lcmFsIGludGVyZmFjZSBmb3IgdGhlIHNv
Y2tldCBpbXBsZW1lbnRhdGlvbnMgb2YgdmFyaW91cyBuZXR3b3Jrcy4gIFRoZQogLy8gbWV0aG9k
cyBtYXRjaCB0aG9zZSBvZiBub3JtYWwgVU5JWCBzb2NrZXRzIHZlcnkgY2xvc2VseS4KIGNsYXNz
IFNvY2tldCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGFwdGVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmNjCmluZGV4IGFj
ZDliNjMzODU4Yzg4MTRmNmQ0YjhmODZjYTFkOWQzZDUxODRlODEuLjk0NTE5Mjg4OTE0MmE4ZTA0
ZWQzZjlkM2Q3OGNhYjJkZWY4NTJiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFk
YXB0ZXJzLmNjCkBAIC0xMywyNCArMTMsMjkgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8ZXJybm8u
aD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0
cmluZy5oPgogI2luY2x1ZGUgPHRpbWUuaD4KIAogI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKICNp
bmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNpbmNsdWRlIDx3czJ0
Y3BpcC5oPgorCiAjZGVmaW5lIFNFQ1VSSVRZX1dJTjMyCiAjaW5jbHVkZSA8c2VjdXJpdHkuaD4K
ICNlbmRpZgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L21hdGNoLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvYnl0ZWJ1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2h0dHBjb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRhcHRlcnMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9z
dHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS96ZXJvX21lbW9yeS5oIgpAQCAtNDU3LDcgKzQ2Miw3IEBAIHZvaWQgQXN5bmNIdHRwc1Byb3h5
U29ja2V0OjpQcm9jZXNzTGluZShjaGFyKiBkYXRhLCBzaXplX3QgbGVuKSB7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgIH0gZWxzZSBpZiAoKHN0YXRlXyA9PSBQU19BVVRIRU5USUNBVEUpICYm
Ci0gICAgICAgICAgICAgKF9zdHJuaWNtcChkYXRhLCAiUHJveHktQXV0aGVudGljYXRlOiIsIDE5
KSA9PSAwKSkgeworICAgICAgICAgICAgIGFic2w6OlN0YXJ0c1dpdGhJZ25vcmVDYXNlKGRhdGEs
ICJQcm94eS1BdXRoZW50aWNhdGU6IikpIHsKICAgICBzdGQ6OnN0cmluZyByZXNwb25zZSwgYXV0
aF9tZXRob2Q7CiAgICAgc3dpdGNoIChIdHRwQXV0aGVudGljYXRlKGRhdGEgKyAxOSwgbGVuIC0g
MTksIHByb3h5XywgIkNPTk5FQ1QiLCAiLyIsIHVzZXJfLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXNzXywgY29udGV4dF8sIHJlc3BvbnNlLCBhdXRoX21ldGhvZCkpIHsKQEAgLTQ4
NSwxMiArNDkwLDEyIEBAIHZvaWQgQXN5bmNIdHRwc1Byb3h5U29ja2V0OjpQcm9jZXNzTGluZShj
aGFyKiBkYXRhLCBzaXplX3QgbGVuKSB7CiAgICAgICAgIHVua25vd25fbWVjaGFuaXNtc18uY2xl
YXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICB9IGVsc2UgaWYgKF9zdHJuaWNtcChkYXRh
LCAiQ29udGVudC1MZW5ndGg6IiwgMTUpID09IDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpTdGFy
dHNXaXRoSWdub3JlQ2FzZShkYXRhLCAiQ29udGVudC1MZW5ndGg6IikpIHsKICAgICBjb250ZW50
X2xlbmd0aF8gPSBzdHJ0b3VsKGRhdGEgKyAxNSwgMCwgMCk7Ci0gIH0gZWxzZSBpZiAoX3N0cm5p
Y21wKGRhdGEsICJQcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlIiwgMjgpID09IDApIHsKKyAg
fSBlbHNlIGlmIChhYnNsOjpTdGFydHNXaXRoSWdub3JlQ2FzZShkYXRhLCAiUHJveHktQ29ubmVj
dGlvbjogS2VlcC1BbGl2ZSIpKSB7CiAgICAgZXhwZWN0X2Nsb3NlXyA9IGZhbHNlOwogICAgIC8q
Ci0gIH0gZWxzZSBpZiAoX3N0cm5pY21wKGRhdGEsICJDb25uZWN0aW9uOiBjbG9zZSIsIDE3KSA9
PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6U3RhcnRzV2l0aElnbm9yZUNhc2UoZGF0YSwgIkNv
bm5lY3Rpb246IGNsb3NlIikgewogICAgIGV4cGVjdF9jbG9zZV8gPSB0cnVlOwogICAgICovCiAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGFwdGVycy5oCmluZGV4IGFkODhmZTZiNmZi
OGNmMjAwM2JlZWY4MTUzOWMzZTIyMjM4MmQxMGYuLjA2MmY3NWMzZmViMWZmZmMzMDA5NDQxNDQ3
MTllZWU1MjM4YTc5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRhcHRlcnMuaApA
QCAtMTEsMTMgKzExLDExIEBACiAjaWZuZGVmIFJUQ19CQVNFX1NPQ0tFVEFEQVBURVJTX0hfCiAj
ZGVmaW5lIFJUQ19CQVNFX1NPQ0tFVEFEQVBURVJTX0hfCiAKLSNpbmNsdWRlIDxtYXA+CiAjaW5j
bHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNzb2NrZXQuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3J5
cHRzdHJpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSBy
dGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgKaW5kZXggYmZmOGU3NjQ5
NWViNzRiY2E1ODk4MjRiOGVkOTMwMjFjY2YyMGIyMS4uYjFhNTJiOTM3MTZhOGUyNGNhMjhiN2U1
ZGVkMTVlZDk5NWVmZDkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkZHJlc3MuaApA
QCAtMTUsNyArMTUsNiBAQAogI2lmZGVmIFVOSVRfVEVTVAogI2luY2x1ZGUgPG9zdHJlYW0+ICAv
LyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKICNlbmRpZiAgICAgICAgICAg
ICAgLy8gVU5JVF9URVNUCi0jaW5jbHVkZSA8dmVjdG9yPgogI2luY2x1ZGUgInJ0Y19iYXNlL2lw
YWRkcmVzcy5oIgogCiAjdW5kZWYgU2V0UG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRkcmVzc3BhaXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tl
dGFkZHJlc3NwYWlyLmgKaW5kZXggNWZmMTQ4YTc1ZDg3NjA0ZTFkYjFmYzYxZDg0OTBjMWQyZGY3
MjJlOS4uNjY5MTM4NmQzYWJmZjhiOWU4ZTQzMGMzYjczNTVkMjk0NzlmOWVkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29j
a2V0YWRkcmVzc3BhaXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGRyZXNzcGFpci5oCkBAIC0xMSw2ICsxMSw4IEBACiAj
aWZuZGVmIFJUQ19CQVNFX1NPQ0tFVEFERFJFU1NQQUlSX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1NP
Q0tFVEFERFJFU1NQQUlSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgInJ0
Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRz
dHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9zb2NrZXRzdHJlYW0uY2MKaW5kZXggMmVhMWNlYzBhYzczNmQzNTUwMTEwM2VkYTJlZDA2
ZTgxODE1NzRlYy4uODk3ODQwNGNmNDVmMDJkOWQwOTAxNmE2ZjdjMTU0OTlkMmFiZjQ3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc29ja2V0c3RyZWFtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldHN0cmVhbS5jYwpAQCAtMTEsNiArMTEsNyBAQAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3NvY2tldHN0cmVhbS5oIgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0LmgiCiAKIG5hbWVzcGFjZSBydGMgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zc2xhZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zc2xhZGFwdGVyLmgKaW5kZXggNDg0M2QyNjRmY2NjZDM2NmQ0ODBm
NjQzODYxNDEwM2I5ZWE5Nzg1Yi4uN2ViZWRjYWRmMDI2ZmVmOWFiOWIxYzEzM2FkMzU5OGEzNzU0
Y2UwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3NsYWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGFkYXB0ZXIuaApAQCAtMTYsNiArMTYsNyBAQAog
CiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
c2xjZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgogCiBuYW1lc3BhY2UgcnRjIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3NzbGFkYXB0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xhZGFwdGVyX3VuaXR0ZXN0LmNjCmluZGV4IGVjNTMy
YjFjNDQyNjE4ZmYyZDc0ZjU1OGQ1NmM2MDJmNmZkZTI4MDkuLmM4NGM2NjhjN2UxYTgxMjgxYWY4
OTRmMjZlMDVmYjQ1YWZiODVmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGFkYXB0ZXJfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsYWRh
cHRlcl91bml0dGVzdC5jYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5
L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvaXBhZGRyZXNzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3NvY2tldHN0cmVhbS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGFk
YXB0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xpZGVudGl0eS5oIgpAQCAtMjY2LDcgKzI2
Nyw3IEBAIGNsYXNzIFNTTEFkYXB0ZXJUZXN0RHVtbXlTZXJ2ZXIgOiBwdWJsaWMgc2lnc2xvdDo6
aGFzX3Nsb3RzPD4gewogICAgIC8vIChlLmcuIGEgV2ViUlRDLWJhc2VkIGFwcGxpY2F0aW9uIGFu
ZCBhbiBSRkMgNTc2NiBUVVJOIHNlcnZlciksIHdoZXJlCiAgICAgLy8gY2xpZW50cyBhcmUgbm90
IHJlcXVpcmVkIHRvIHByb3ZpZGUgYSBjZXJ0aWZpY2F0ZSBkdXJpbmcgaGFuZHNoYWtlLgogICAg
IC8vIEFjY29yZGluZ2x5LCB3ZSBtdXN0IGRpc2FibGUgY2xpZW50IGF1dGhlbnRpY2F0aW9uIGhl
cmUuCi0gICAgc3NsX3N0cmVhbV9hZGFwdGVyXy0+c2V0X2NsaWVudF9hdXRoX2VuYWJsZWQoZmFs
c2UpOworICAgIHNzbF9zdHJlYW1fYWRhcHRlcl8tPlNldENsaWVudEF1dGhFbmFibGVkRm9yVGVz
dGluZyhmYWxzZSk7CiAKICAgICBzc2xfc3RyZWFtX2FkYXB0ZXJfLT5TZXRJZGVudGl0eShzc2xf
aWRlbnRpdHlfLT5HZXRSZWZlcmVuY2UoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsY2Vy
dGlmaWNhdGUuY2MKaW5kZXggOWEzOGZjMDM4NGI3MDQ5NDJhMGYyOGU4N2ExMzcwMjk3YmMyOWNk
NS4uOTM0ODQ4ZmI3MzA0NTdiMzk3OGY5MWExNzJjZGVkNjc3NTFlZWIyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsY2Vy
dGlmaWNhdGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuY2MKQEAgLTEwLDEzICsxMCwxMiBAQAogCiAjaW5j
bHVkZSAicnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaCIKIAotI2luY2x1ZGUgPGN0aW1lPgorI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dXRpbGl0eT4K
IAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xmaW5nZXJwcmlu
dC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2NC9iYXNlNjQuaCIKQEAg
LTMxLDcgKzMwLDcgQEAgU1NMQ2VydGlmaWNhdGVTdGF0czo6U1NMQ2VydGlmaWNhdGVTdGF0cygK
ICAgICBzdGQ6OnN0cmluZyYmIGZpbmdlcnByaW50LAogICAgIHN0ZDo6c3RyaW5nJiYgZmluZ2Vy
cHJpbnRfYWxnb3JpdGhtLAogICAgIHN0ZDo6c3RyaW5nJiYgYmFzZTY0X2NlcnRpZmljYXRlLAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZVN0YXRzPiYmIGlzc3VlcikKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGVTdGF0cz4gaXNzdWVyKQogICAgIDogZmluZ2Vy
cHJpbnQoc3RkOjptb3ZlKGZpbmdlcnByaW50KSksCiAgICAgICBmaW5nZXJwcmludF9hbGdvcml0
aG0oc3RkOjptb3ZlKGZpbmdlcnByaW50X2FsZ29yaXRobSkpLAogICAgICAgYmFzZTY0X2NlcnRp
ZmljYXRlKHN0ZDo6bW92ZShiYXNlNjRfY2VydGlmaWNhdGUpKSwKQEAgLTU1LDggKzU0LDggQEAg
c3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlU3RhdHM+IFNTTENlcnRpZmljYXRlOjpHZXRT
dGF0cygpIGNvbnN0IHsKICAgLy8gfFNTTENlcnRpZmljYXRlOjpHZXRTaWduYXR1cmVEaWdlc3RB
bGdvcml0aG18IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCiAgIC8vIGltcGxlbWVudGF0aW9uIG9m
IHxTU0xDZXJ0aWZpY2F0ZTo6Q29tcHV0ZURpZ2VzdHwuIFRoaXMgY3VycmVudGx5IGhhcHBlbnMK
ICAgLy8gd2l0aCBNRDUtIGFuZCBTSEEtMjI0LXNpZ25lZCBjZXJ0aWZpY2F0ZXMgd2hlbiBsaW5r
ZWQgdG8gbGliTlNTLgotICBzdGQ6OnVuaXF1ZV9wdHI8U1NMRmluZ2VycHJpbnQ+IHNzbF9maW5n
ZXJwcmludCgKLSAgICAgIFNTTEZpbmdlcnByaW50OjpDcmVhdGUoZGlnZXN0X2FsZ29yaXRobSwg
dGhpcykpOworICBzdGQ6OnVuaXF1ZV9wdHI8U1NMRmluZ2VycHJpbnQ+IHNzbF9maW5nZXJwcmlu
dCA9CisgICAgICBTU0xGaW5nZXJwcmludDo6Q3JlYXRlKGRpZ2VzdF9hbGdvcml0aG0sICp0aGlz
KTsKICAgaWYgKCFzc2xfZmluZ2VycHJpbnQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIHN0ZDo6
c3RyaW5nIGZpbmdlcnByaW50ID0gc3NsX2ZpbmdlcnByaW50LT5HZXRSZmM0NTcyRmluZ2VycHJp
bnQoKTsKQEAgLTcxLDQ5ICs3MCwzMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGVT
dGF0cz4gU1NMQ2VydGlmaWNhdGU6OkdldFN0YXRzKCkgY29uc3QgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGRlcl9iYXNlNjQpLCBu
dWxscHRyKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiBTU0xDZXJ0aWZp
Y2F0ZTo6R2V0VW5pcXVlUmVmZXJlbmNlKCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVu
aXF1ZShHZXRSZWZlcmVuY2UoKSk7Ci19Ci0KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIFNTTENlcnRDaGFp
bgogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogCi1TU0xDZXJ0Q2hhaW46OlNTTENlcnRDaGFpbihzdGQ6OnZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+PiBjZXJ0cykKLSAgICA6IGNlcnRzXyhz
dGQ6Om1vdmUoY2VydHMpKSB7fQotCi1TU0xDZXJ0Q2hhaW46OlNTTENlcnRDaGFpbihjb25zdCBz
dGQ6OnZlY3RvcjxTU0xDZXJ0aWZpY2F0ZSo+JiBjZXJ0cykgewotICBSVENfRENIRUNLKCFjZXJ0
cy5lbXB0eSgpKTsKLSAgY2VydHNfLnJlc2l6ZShjZXJ0cy5zaXplKCkpOwotICBzdGQ6OnRyYW5z
Zm9ybSgKLSAgICAgIGNlcnRzLmJlZ2luKCksIGNlcnRzLmVuZCgpLCBjZXJ0c18uYmVnaW4oKSwK
LSAgICAgIFtdKGNvbnN0IFNTTENlcnRpZmljYXRlKiBjZXJ0KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8
U1NMQ2VydGlmaWNhdGU+IHsKLSAgICAgICAgcmV0dXJuIGNlcnQtPkdldFVuaXF1ZVJlZmVyZW5j
ZSgpOwotICAgICAgfSk7CitTU0xDZXJ0Q2hhaW46OlNTTENlcnRDaGFpbihzdGQ6OnVuaXF1ZV9w
dHI8U1NMQ2VydGlmaWNhdGU+IHNpbmdsZV9jZXJ0KSB7CisgIGNlcnRzXy5wdXNoX2JhY2soc3Rk
Ojptb3ZlKHNpbmdsZV9jZXJ0KSk7CiB9CiAKLVNTTENlcnRDaGFpbjo6U1NMQ2VydENoYWluKGNv
bnN0IFNTTENlcnRpZmljYXRlKiBjZXJ0KSB7Ci0gIGNlcnRzXy5wdXNoX2JhY2soY2VydC0+R2V0
VW5pcXVlUmVmZXJlbmNlKCkpOwotfQorU1NMQ2VydENoYWluOjpTU0xDZXJ0Q2hhaW4oc3RkOjp2
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPj4gY2VydHMpCisgICAgOiBjZXJ0
c18oc3RkOjptb3ZlKGNlcnRzKSkge30KIAogU1NMQ2VydENoYWluOjpTU0xDZXJ0Q2hhaW4oU1NM
Q2VydENoYWluJiYgcmhzKSA9IGRlZmF1bHQ7CiAKIFNTTENlcnRDaGFpbiYgU1NMQ2VydENoYWlu
OjpvcGVyYXRvcj0oU1NMQ2VydENoYWluJiYpID0gZGVmYXVsdDsKIAotU1NMQ2VydENoYWluOjp+
U1NMQ2VydENoYWluKCkge30KK1NTTENlcnRDaGFpbjo6flNTTENlcnRDaGFpbigpID0gZGVmYXVs
dDsKIAotU1NMQ2VydENoYWluKiBTU0xDZXJ0Q2hhaW46OkNvcHkoKSBjb25zdCB7CitzdGQ6OnVu
aXF1ZV9wdHI8U1NMQ2VydENoYWluPiBTU0xDZXJ0Q2hhaW46OkNsb25lKCkgY29uc3QgewogICBz
dGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+PiBuZXdfY2VydHMoY2Vy
dHNfLnNpemUoKSk7Ci0gIHN0ZDo6dHJhbnNmb3JtKGNlcnRzXy5iZWdpbigpLCBjZXJ0c18uZW5k
KCksIG5ld19jZXJ0cy5iZWdpbigpLAotICAgICAgICAgICAgICAgICBbXShjb25zdCBzdGQ6OnVu
aXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+JiBjZXJ0KQotICAgICAgICAgICAgICAgICAgICAgLT4g
c3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiB7Ci0gICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNlcnQtPkdldFVuaXF1ZVJlZmVyZW5jZSgpOwotICAgICAgICAgICAgICAgICB9KTsKLSAg
cmV0dXJuIG5ldyBTU0xDZXJ0Q2hhaW4oc3RkOjptb3ZlKG5ld19jZXJ0cykpOwotfQotCi1zdGQ6
OnVuaXF1ZV9wdHI8U1NMQ2VydENoYWluPiBTU0xDZXJ0Q2hhaW46OlVuaXF1ZUNvcHkoKSBjb25z
dCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlKENvcHkoKSk7CisgIHN0ZDo6dHJhbnNmb3Jt
KAorICAgICAgY2VydHNfLmJlZ2luKCksIGNlcnRzXy5lbmQoKSwgbmV3X2NlcnRzLmJlZ2luKCks
CisgICAgICBbXShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+JiBjZXJ0KQor
ICAgICAgICAgIC0+IHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4geyByZXR1cm4gY2Vy
dC0+Q2xvbmUoKTsgfSk7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxTU0xDZXJ0Q2hhaW4+
KHN0ZDo6bW92ZShuZXdfY2VydHMpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmlj
YXRlU3RhdHM+IFNTTENlcnRDaGFpbjo6R2V0U3RhdHMoKSBjb25zdCB7CkBAIC0xMzUsNyArMTE1
LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlU3RhdHM+IFNTTENlcnRDaGFpbjo6
R2V0U3RhdHMoKSBjb25zdCB7CiB9CiAKIC8vIHN0YXRpYwotU1NMQ2VydGlmaWNhdGUqIFNTTENl
cnRpZmljYXRlOjpGcm9tUEVNU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBwZW1fc3RyaW5nKSB7
CitzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IFNTTENlcnRpZmljYXRlOjpGcm9tUEVN
U3RyaW5nKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwZW1fc3RyaW5nKSB7CiAgIHJldHVybiBP
cGVuU1NMQ2VydGlmaWNhdGU6OkZyb21QRU1TdHJpbmcocGVtX3N0cmluZyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3NzbGNlcnRpZmljYXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oCmluZGV4IDI5YzRkYjU4ZWY1NmM4MDAzNWU4
MzJjZDI0MmNhZDcyZTlkYzhkZDQuLmViODFjMjA5ZTRmMGMzMjY1NjY0ZTAxNWQ3YTczM2M0NDgw
NjAwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaApAQCAtMTUsMTUg
KzE1LDE0IEBACiAjaWZuZGVmIFJUQ19CQVNFX1NTTENFUlRJRklDQVRFX0hfCiAjZGVmaW5lIFJU
Q19CQVNFX1NTTENFUlRJRklDQVRFX0hfCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9i
dWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGls
cy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApAQCAtMzEsNyArMzAsNyBAQCBzdHJ1Y3QgU1NMQ2Vy
dGlmaWNhdGVTdGF0cyB7CiAgIFNTTENlcnRpZmljYXRlU3RhdHMoc3RkOjpzdHJpbmcmJiBmaW5n
ZXJwcmludCwKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyYmIGZpbmdlcnByaW50
X2FsZ29yaXRobSwKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyYmIGJhc2U2NF9j
ZXJ0aWZpY2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2Vy
dGlmaWNhdGVTdGF0cz4mJiBpc3N1ZXIpOworICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZVN0YXRzPiBpc3N1ZXIpOwogICB+U1NMQ2VydGlmaWNhdGVT
dGF0cygpOwogICBzdGQ6OnN0cmluZyBmaW5nZXJwcmludDsKICAgc3RkOjpzdHJpbmcgZmluZ2Vy
cHJpbnRfYWxnb3JpdGhtOwpAQCAtNTQsMTcgKzUzLDEzIEBAIGNsYXNzIFNTTENlcnRpZmljYXRl
IHsKICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBj
ZXJ0aWZpY2F0ZSBpcwogICAvLyBzdG9yZWQgaW4gKnBlbV9sZW5ndGggaWYgaXQgaXMgbm9uLW51
bGwsIGFuZCBvbmx5IGlmCiAgIC8vIHBhcnNpbmcgd2FzIHN1Y2Nlc3NmdWwuCi0gIC8vIENhbGxl
ciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGUgcmV0dXJuZWQgb2JqZWN0LgotICBzdGF0
aWMgU1NMQ2VydGlmaWNhdGUqIEZyb21QRU1TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV9z
dHJpbmcpOwotICB2aXJ0dWFsIH5TU0xDZXJ0aWZpY2F0ZSgpIHt9CisgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IEZyb21QRU1TdHJpbmcoCisgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgcGVtX3N0cmluZyk7CisgIHZpcnR1YWwgflNTTENlcnRpZmljYXRlKCkgPSBkZWZh
dWx0OwogCiAgIC8vIFJldHVybnMgYSBuZXcgU1NMQ2VydGlmaWNhdGUgb2JqZWN0IGluc3RhbmNl
IHdyYXBwaW5nIHRoZSBzYW1lCi0gIC8vIHVuZGVybHlpbmcgY2VydGlmaWNhdGUsIGluY2x1ZGlu
ZyBpdHMgY2hhaW4gaWYgcHJlc2VudC4gIENhbGxlciBpcwotICAvLyByZXNwb25zaWJsZSBmb3Ig
ZnJlZWluZyB0aGUgcmV0dXJuZWQgb2JqZWN0LiBVc2UgR2V0VW5pcXVlUmVmZXJlbmNlCi0gIC8v
IGluc3RlYWQuCi0gIHZpcnR1YWwgU1NMQ2VydGlmaWNhdGUqIEdldFJlZmVyZW5jZSgpIGNvbnN0
ID0gMDsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IEdldFVuaXF1ZVJlZmVy
ZW5jZSgpIGNvbnN0OworICAvLyB1bmRlcmx5aW5nIGNlcnRpZmljYXRlLCBpbmNsdWRpbmcgaXRz
IGNoYWluIGlmIHByZXNlbnQuCisgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmlj
YXRlPiBDbG9uZSgpIGNvbnN0ID0gMDsKIAogICAvLyBSZXR1cm5zIGEgUEVNIGVuY29kZWQgc3Ry
aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZS4KICAgdmlydHVhbCBzdGQ6OnN0
cmluZyBUb1BFTVN0cmluZygpIGNvbnN0ID0gMDsKQEAgLTk1LDEzICs5MCwxMCBAQCBjbGFzcyBT
U0xDZXJ0aWZpY2F0ZSB7CiAvLyBTU0xDZXJ0Q2hhaW4gaXMgYSBzaW1wbGUgd3JhcHBlciBmb3Ig
YSB2ZWN0b3Igb2YgU1NMQ2VydGlmaWNhdGVzLiBJdCBzZXJ2ZXMKIC8vIHByaW1hcmlseSB0byBl
bnN1cmUgcHJvcGVyIG1lbW9yeSBtYW5hZ2VtZW50IChlc3BlY2lhbGx5IGRlbGV0aW9uKSBvZiB0
aGUKIC8vIFNTTENlcnRpZmljYXRlIHBvaW50ZXJzLgotY2xhc3MgU1NMQ2VydENoYWluIHsKK2Ns
YXNzIFNTTENlcnRDaGFpbiBmaW5hbCB7CiAgcHVibGljOgorICBleHBsaWNpdCBTU0xDZXJ0Q2hh
aW4oc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiBzaW5nbGVfY2VydCk7CiAgIGV4cGxp
Y2l0IFNTTENlcnRDaGFpbihzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNh
dGU+PiBjZXJ0cyk7Ci0gIC8vIFRoZXNlIGNvbnN0cnVjdG9ycyBjb3B5IHRoZSBwcm92aWRlZCBT
U0xDZXJ0aWZpY2F0ZShzKSwgc28gdGhlIGNhbGxlcgotICAvLyByZXRhaW5zIG93bmVyc2hpcC4K
LSAgZXhwbGljaXQgU1NMQ2VydENoYWluKGNvbnN0IHN0ZDo6dmVjdG9yPFNTTENlcnRpZmljYXRl
Kj4mIGNlcnRzKTsKLSAgZXhwbGljaXQgU1NMQ2VydENoYWluKGNvbnN0IFNTTENlcnRpZmljYXRl
KiBjZXJ0KTsKICAgLy8gQWxsb3cgbW92ZSBzZW1hbnRpY3MgZm9yIHRoZSBvYmplY3QuCiAgIFNT
TENlcnRDaGFpbihTU0xDZXJ0Q2hhaW4mJik7CiAgIFNTTENlcnRDaGFpbiYgb3BlcmF0b3I9KFNT
TENlcnRDaGFpbiYmKTsKQEAgLTExNSwxMCArMTA3LDggQEAgY2xhc3MgU1NMQ2VydENoYWluIHsK
ICAgY29uc3QgU1NMQ2VydGlmaWNhdGUmIEdldChzaXplX3QgcG9zKSBjb25zdCB7IHJldHVybiAq
KGNlcnRzX1twb3NdKTsgfQogCiAgIC8vIFJldHVybnMgYSBuZXcgU1NMQ2VydENoYWluIG9iamVj
dCBpbnN0YW5jZSB3cmFwcGluZyB0aGUgc2FtZSB1bmRlcmx5aW5nCi0gIC8vIGNlcnRpZmljYXRl
IGNoYWluLiAgQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSByZXR1cm5lZCBv
YmplY3QuCi0gIFNTTENlcnRDaGFpbiogQ29weSgpIGNvbnN0OwotICAvLyBTYW1lIGFzIGFib3Zl
LCBidXQgcmV0dXJuaW5nIGEgdW5pcXVlX3B0ciBmb3IgY29udmVuaWVuY2UuCi0gIHN0ZDo6dW5p
cXVlX3B0cjxTU0xDZXJ0Q2hhaW4+IFVuaXF1ZUNvcHkoKSBjb25zdDsKKyAgLy8gY2VydGlmaWNh
dGUgY2hhaW4uCisgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0Q2hhaW4+IENsb25lKCkgY29uc3Q7
CiAKICAgLy8gR2V0cyBpbmZvcm1hdGlvbiAoZmluZ2VycHJpbnQsIGV0Yy4pIGFib3V0IHRoaXMg
Y2VydGlmaWNhdGUgY2hhaW4uIFRoaXMgaXMKICAgLy8gdXNlZCBmb3IgY2VydGlmaWNhdGUgc3Rh
dHMsIHNlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvc3NsZmluZ2VycHJpbnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xmaW5nZXJwcmludC5jYwppbmRleCBiNjUx
YTNkNjI4NTIwNWI1NWEyZmIwMzY3NzEwNGIxNWE5N2I3NjYyLi5iMjk2ZDMzZGRkOWM0MzEyM2E0
MTU0Yjk0YjVmMGYzYTg2NGE4MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xmaW5nZXJwcmludC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xmaW5nZXJw
cmludC5jYwpAQCAtMTEsNjcgKzExLDgyIEBACiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsZmluZ2Vy
cHJpbnQuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2lu
Y2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
aGVscGVycy5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9z
c2xjZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAKIG5hbWVzcGFjZSBydGMgewogCiBTU0xG
aW5nZXJwcmludCogU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYgYWxn
b3JpdGhtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpTU0xJZGVudGl0eSogaWRlbnRpdHkpIHsKLSAgaWYgKCFpZGVudGl0eSkgewotICAgIHJldHVy
biBudWxscHRyOwotICB9CisgIHJldHVybiBDcmVhdGVVbmlxdWUoYWxnb3JpdGhtLCAqaWRlbnRp
dHkpLnJlbGVhc2UoKTsKK30KIAotICByZXR1cm4gQ3JlYXRlKGFsZ29yaXRobSwgJihpZGVudGl0
eS0+Y2VydGlmaWNhdGUoKSkpOworc3RkOjp1bmlxdWVfcHRyPFNTTEZpbmdlcnByaW50PiBTU0xG
aW5nZXJwcmludDo6Q3JlYXRlVW5pcXVlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0
aG0sCisgICAgY29uc3QgcnRjOjpTU0xJZGVudGl0eSYgaWRlbnRpdHkpIHsKKyAgcmV0dXJuIENy
ZWF0ZShhbGdvcml0aG0sIGlkZW50aXR5LmNlcnRpZmljYXRlKCkpOwogfQogCi1TU0xGaW5nZXJw
cmludCogU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYgYWxnb3JpdGht
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTU0xD
ZXJ0aWZpY2F0ZSogY2VydCkgeworc3RkOjp1bmlxdWVfcHRyPFNTTEZpbmdlcnByaW50PiBTU0xG
aW5nZXJwcmludDo6Q3JlYXRlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0aG0sCisg
ICAgY29uc3QgcnRjOjpTU0xDZXJ0aWZpY2F0ZSYgY2VydCkgewogICB1aW50OF90IGRpZ2VzdF92
YWxbNjRdOwogICBzaXplX3QgZGlnZXN0X2xlbjsKLSAgYm9vbCByZXQgPSBjZXJ0LT5Db21wdXRl
RGlnZXN0KGFsZ29yaXRobSwgZGlnZXN0X3ZhbCwgc2l6ZW9mKGRpZ2VzdF92YWwpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRpZ2VzdF9sZW4pOworICBib29sIHJldCA9IGNl
cnQuQ29tcHV0ZURpZ2VzdChhbGdvcml0aG0sIGRpZ2VzdF92YWwsIHNpemVvZihkaWdlc3RfdmFs
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRpZ2VzdF9sZW4pOwogICBpZiAo
IXJldCkgewogICAgIHJldHVybiBudWxscHRyOwogICB9Ci0KLSAgcmV0dXJuIG5ldyBTU0xGaW5n
ZXJwcmludChhbGdvcml0aG0sIGRpZ2VzdF92YWwsIGRpZ2VzdF9sZW4pOworICByZXR1cm4gYWJz
bDo6bWFrZV91bmlxdWU8U1NMRmluZ2VycHJpbnQ+KAorICAgICAgYWxnb3JpdGhtLCBBcnJheVZp
ZXc8Y29uc3QgdWludDhfdD4oZGlnZXN0X3ZhbCwgZGlnZXN0X2xlbikpOwogfQogCiBTU0xGaW5n
ZXJwcmludCogU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21SZmM0NTcyKAogICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBhbGdvcml0aG0sCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbmdlcnByaW50
KSB7CisgIHJldHVybiBDcmVhdGVVbmlxdWVGcm9tUmZjNDU3MihhbGdvcml0aG0sIGZpbmdlcnBy
aW50KS5yZWxlYXNlKCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTU0xGaW5nZXJwcmludD4gU1NM
RmluZ2VycHJpbnQ6OkNyZWF0ZVVuaXF1ZUZyb21SZmM0NTcyKAorICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBhbGdvcml0aG0sCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbmdlcnByaW50KSB7CiAg
IGlmIChhbGdvcml0aG0uZW1wdHkoKSB8fCAhcnRjOjpJc0ZpcHMxODBEaWdlc3RBbGdvcml0aG0o
YWxnb3JpdGhtKSkKICAgICByZXR1cm4gbnVsbHB0cjsKIAogICBpZiAoZmluZ2VycHJpbnQuZW1w
dHkoKSkKICAgICByZXR1cm4gbnVsbHB0cjsKIAotICBzaXplX3QgdmFsdWVfbGVuOwogICBjaGFy
IHZhbHVlW3J0Yzo6TWVzc2FnZURpZ2VzdDo6a01heFNpemVdOwotICB2YWx1ZV9sZW4gPSBydGM6
OmhleF9kZWNvZGVfd2l0aF9kZWxpbWl0ZXIoCisgIHNpemVfdCB2YWx1ZV9sZW4gPSBydGM6Omhl
eF9kZWNvZGVfd2l0aF9kZWxpbWl0ZXIoCiAgICAgICB2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgZmlu
Z2VycHJpbnQuY19zdHIoKSwgZmluZ2VycHJpbnQubGVuZ3RoKCksICc6Jyk7CiAgIGlmICghdmFs
dWVfbGVuKQogICAgIHJldHVybiBudWxscHRyOwogCi0gIHJldHVybiBuZXcgU1NMRmluZ2VycHJp
bnQoYWxnb3JpdGhtLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih2YWx1ZSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWVfbGVuKTsKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5p
cXVlPFNTTEZpbmdlcnByaW50PigKKyAgICAgIGFsZ29yaXRobSwKKyAgICAgIEFycmF5Vmlldzxj
b25zdCB1aW50OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih2YWx1ZSksIHZhbHVlX2xl
bikpOwogfQogCi1TU0xGaW5nZXJwcmludCogU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0
aWZpY2F0ZSgKLSAgICBjb25zdCBSVENDZXJ0aWZpY2F0ZSogY2VydCkgeworc3RkOjp1bmlxdWVf
cHRyPFNTTEZpbmdlcnByaW50PiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRl
KAorICAgIGNvbnN0IFJUQ0NlcnRpZmljYXRlJiBjZXJ0KSB7CiAgIHN0ZDo6c3RyaW5nIGRpZ2Vz
dF9hbGc7Ci0gIGlmICghY2VydC0+c3NsX2NlcnRpZmljYXRlKCkuR2V0U2lnbmF0dXJlRGlnZXN0
QWxnb3JpdGhtKCZkaWdlc3RfYWxnKSkgeworICBpZiAoIWNlcnQuR2V0U1NMQ2VydGlmaWNhdGUo
KS5HZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG0oJmRpZ2VzdF9hbGcpKSB7CiAgICAgUlRDX0xP
RyhMU19FUlJPUikKICAgICAgICAgPDwgIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgY2VydGlmaWNh
dGUncyBkaWdlc3QgYWxnb3JpdGhtIjsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQogCi0gIFNT
TEZpbmdlcnByaW50KiBmaW5nZXJwcmludCA9IENyZWF0ZShkaWdlc3RfYWxnLCBjZXJ0LT5pZGVu
dGl0eSgpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFNTTEZpbmdlcnByaW50PiBmaW5nZXJwcmludCA9
CisgICAgICBDcmVhdGVVbmlxdWUoZGlnZXN0X2FsZywgKmNlcnQuaWRlbnRpdHkoKSk7CiAgIGlm
ICghZmluZ2VycHJpbnQpIHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGNy
ZWF0ZSBpZGVudGl0eSBmaW5nZXJwcmludCwgYWxnPSIKICAgICAgICAgICAgICAgICAgICAgICA8
PCBkaWdlc3RfYWxnOwpAQCAtNzksMTIgKzk0LDE0IEBAIFNTTEZpbmdlcnByaW50KiBTU0xGaW5n
ZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKAogICByZXR1cm4gZmluZ2VycHJpbnQ7CiB9
CiAKK1NTTEZpbmdlcnByaW50OjpTU0xGaW5nZXJwcmludChjb25zdCBzdGQ6OnN0cmluZyYgYWxn
b3JpdGhtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5Vmlldzxjb25zdCB1
aW50OF90PiBkaWdlc3RfdmlldykKKyAgICA6IGFsZ29yaXRobShhbGdvcml0aG0pLCBkaWdlc3Qo
ZGlnZXN0X3ZpZXcuZGF0YSgpLCBkaWdlc3Rfdmlldy5zaXplKCkpIHt9CisKIFNTTEZpbmdlcnBy
aW50OjpTU0xGaW5nZXJwcmludChjb25zdCBzdGQ6OnN0cmluZyYgYWxnb3JpdGhtLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRpZ2VzdF9pbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGlnZXN0X2xlbikKLSAgICA6IGFsZ29y
aXRobShhbGdvcml0aG0pIHsKLSAgZGlnZXN0LlNldERhdGEoZGlnZXN0X2luLCBkaWdlc3RfbGVu
KTsKLX0KKyAgICA6IFNTTEZpbmdlcnByaW50KGFsZ29yaXRobSwgTWFrZUFycmF5VmlldyhkaWdl
c3RfaW4sIGRpZ2VzdF9sZW4pKSB7fQogCiBTU0xGaW5nZXJwcmludDo6U1NMRmluZ2VycHJpbnQo
Y29uc3QgU1NMRmluZ2VycHJpbnQmIGZyb20pCiAgICAgOiBhbGdvcml0aG0oZnJvbS5hbGdvcml0
aG0pLCBkaWdlc3QoZnJvbS5kaWdlc3QpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xmaW5nZXJwcmludC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsZmluZ2Vy
cHJpbnQuaAppbmRleCBiMjA0YmM3N2YzMDAyMTFjNzNmNGM0N2MyMTZmMzhiM2I5MWVlZWQ5Li5l
YTEwZWRlNzIwNmJhNmYzNjkxZjk3ZjM5MDdiYjAyZmFlMjk1OTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xmaW5nZXJw
cmludC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3NzbGZpbmdlcnByaW50LmgKQEAgLTExLDMwICsxMSw0NyBAQAogI2lmbmRlZiBSVENf
QkFTRV9TU0xGSU5HRVJQUklOVF9IXwogI2RlZmluZSBSVENfQkFTRV9TU0xGSU5HRVJQUklOVF9I
XwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8
c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlk
ZW50aXR5LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCitjbGFzcyBSVENDZXJ0aWZpY2F0ZTsKIGNs
YXNzIFNTTENlcnRpZmljYXRlOworY2xhc3MgU1NMSWRlbnRpdHk7CiAKIHN0cnVjdCBTU0xGaW5n
ZXJwcmludCB7CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92ZSBvbmNlIGRvd25zdHJlYW0g
cHJvamVjdHMgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhpcy4KICAgc3RhdGljIFNTTEZpbmdlcnByaW50
KiBDcmVhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTU0xJZGVudGl0eSogaWRlbnRpdHkpOworICAvLyBU
T0RPKHN0ZXZlYW50b24pOiBSZW5hbWUgdG8gQ3JlYXRlIG9uY2UgcHJvamVjdHMgaGF2ZSBtaWdy
YXRlZC4KKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTU0xGaW5nZXJwcmludD4gQ3JlYXRlVW5p
cXVlKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKKyAgICAgIGNvbnN0IHJ0
Yzo6U1NMSWRlbnRpdHkmIGlkZW50aXR5KTsKIAotICBzdGF0aWMgU1NMRmluZ2VycHJpbnQqIENy
ZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYgYWxnb3JpdGhtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlNTTENlcnRpZmljYXRlKiBjZXJ0KTsKKyAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxTU0xGaW5nZXJwcmludD4gQ3JlYXRlKAorICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGFsZ29yaXRobSwKKyAgICAgIGNvbnN0IHJ0Yzo6U1NMQ2VydGlmaWNhdGUmIGNlcnQp
OwogCisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92ZSBvbmNlIGRvd25zdHJlYW0gcHJvamVj
dHMgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhpcy4KICAgc3RhdGljIFNTTEZpbmdlcnByaW50KiBDcmVh
dGVGcm9tUmZjNDU3Mihjb25zdCBzdGQ6OnN0cmluZyYgYWxnb3JpdGhtLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaW5nZXJw
cmludCk7CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbmFtZSB0byBDcmVhdGVGcm9tUmZjNDU3
MiBvbmNlIHByb2plY3RzIGhhdmUgbWlncmF0ZWQuCisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U1NMRmluZ2VycHJpbnQ+IENyZWF0ZVVuaXF1ZUZyb21SZmM0NTcyKAorICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGFsZ29yaXRobSwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaW5nZXJwcmlu
dCk7CiAKICAgLy8gQ3JlYXRlcyBhIGZpbmdlcnByaW50IGZyb20gYSBjZXJ0aWZpY2F0ZSwgdXNp
bmcgdGhlIHNhbWUgZGlnZXN0IGFsZ29yaXRobQogICAvLyBhcyB0aGUgY2VydGlmaWNhdGUncyBz
aWduYXR1cmUuCi0gIHN0YXRpYyBTU0xGaW5nZXJwcmludCogQ3JlYXRlRnJvbUNlcnRpZmljYXRl
KGNvbnN0IFJUQ0NlcnRpZmljYXRlKiBjZXJ0KTsKKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxT
U0xGaW5nZXJwcmludD4gQ3JlYXRlRnJvbUNlcnRpZmljYXRlKAorICAgICAgY29uc3QgUlRDQ2Vy
dGlmaWNhdGUmIGNlcnQpOwogCisgIFNTTEZpbmdlcnByaW50KGNvbnN0IHN0ZDo6c3RyaW5nJiBh
bGdvcml0aG0sCisgICAgICAgICAgICAgICAgIEFycmF5Vmlldzxjb25zdCB1aW50OF90PiBkaWdl
c3Rfdmlldyk7CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92ZSBvbmNlIGRvd25zdHJlYW0g
cHJvamVjdHMgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhpcy4KICAgU1NMRmluZ2VycHJpbnQoY29uc3Qg
c3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCog
ZGlnZXN0X2luLAogICAgICAgICAgICAgICAgICBzaXplX3QgZGlnZXN0X2xlbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9z
c2xpZGVudGl0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3NzbGlkZW50aXR5LmNjCmluZGV4IDgyM2ZjMzg4YTNjZWYxYjgxNTBmNjBjZjY5
OGI4NzM2YTE2NDJiMzcuLjQxZWIzNWQ1ZjUyYjY3MzdlNzFiOTMzNjE0MGViNzNjYzk3NzFhMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3NzbGlkZW50aXR5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5LmNjCkBAIC0xMSwyMCArMTEsOTUgQEAK
IC8vIEhhbmRsaW5nIG9mIGNlcnRpZmljYXRlcyBhbmQga2V5cGFpcnMgZm9yIFNTTFN0cmVhbUFk
YXB0ZXIncyBwZWVyIG1vZGUuCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKIAot
I2luY2x1ZGUgPGN0aW1lPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4K
ICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KIAotI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsaWRlbnRpdHku
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9zc2xmaW5nZXJwcmludC5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL3NzbGNlcnRpZmljYXRlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdf
YnVpbGRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2NC9iYXNlNjQu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KKy8vIEhlbHBlciBGdW5jdGlvbnMKKy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworbmFt
ZXNwYWNlIHsKKy8vIFJlYWQgfG58IGJ5dGVzIGZyb20gQVNOMSBudW1iZXIgc3RyaW5nIGF0ICp8
cHB8IGFuZCByZXR1cm4gdGhlIG51bWVyaWMgdmFsdWUuCisvLyBVcGRhdGUgKnxwcHwgYW5kICp8
bnB8IHRvIHJlZmxlY3QgbnVtYmVyIG9mIHJlYWQgYnl0ZXMuCisvLyBUT0RPKGJ1Z3Mud2VicnRj
Lm9yZy85ODYwKSAtIFJlbW92ZSB0aGlzIGNvZGUuCitpbmxpbmUgaW50IEFTTjFSZWFkSW50KGNv
bnN0IHVuc2lnbmVkIGNoYXIqKiBwcCwgc2l6ZV90KiBucCwgc2l6ZV90IG4pIHsKKyAgY29uc3Qg
dW5zaWduZWQgY2hhciogcCA9ICpwcDsKKyAgaW50IHggPSAwOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG47IGkrKykgeworICAgIHggPSAxMCAqIHggKyBwW2ldIC0gJzAnOworICB9CisgICpw
cCA9IHAgKyBuOworICAqbnAgPSAqbnAgLSBuOworICByZXR1cm4geDsKK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKKy8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk4NjApIC0gUmVtb3ZlIHRoaXMgY29k
ZS4KK2ludDY0X3QgQVNOMVRpbWVUb1NlYyhjb25zdCB1bnNpZ25lZCBjaGFyKiBzLCBzaXplX3Qg
bGVuZ3RoLCBib29sIGxvbmdfZm9ybWF0KSB7CisgIHNpemVfdCBieXRlc19sZWZ0ID0gbGVuZ3Ro
OworICAvLyBNYWtlIHN1cmUgdGhlIHN0cmluZyBlbmRzIHdpdGggWi4gIERvaW5nIGl0IGhlcmUg
cHJvdGVjdHMgdGhlIHN0cnNwbiBjYWxsCisgIC8vIGZyb20gcnVubmluZyBvZmYgdGhlIGVuZCBv
ZiB0aGUgc3RyaW5nIGluIFoncyBhYnNlbnNlLgorICBpZiAobGVuZ3RoID09IDAgfHwgc1tsZW5n
dGggLSAxXSAhPSAnWicpIHsKKyAgICByZXR1cm4gLTE7CisgIH0KKyAgLy8gTWFrZSBzdXJlIHdl
IG9ubHkgaGF2ZSBBU0NJSSBkaWdpdHMgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGNsdXR0ZXIg
dGhlCisgIC8vIGNvZGUgYmVsb3cgYW5kIEFTTjFSZWFkSW50IHdpdGggZXJyb3IgY2hlY2tpbmcu
CisgIHNpemVfdCBuID0gc3Ryc3BuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHMpLCAi
MDEyMzQ1Njc4OSIpOworICBpZiAobiArIDEgIT0gbGVuZ3RoKSB7CisgICAgcmV0dXJuIC0xOwor
ICB9CisgIC8vIFJlYWQgb3V0IEFTTjEgeWVhciwgaW4gZWl0aGVyIDItY2hhciAiVVRDVElNRSIg
b3IgNC1jaGFyICJHRU5FUkFMSVpFRFRJTUUiCisgIC8vIGZvcm1hdC4gIEJvdGggZm9ybWF0IHVz
ZSBVVEMgaW4gdGhpcyBjb250ZXh0LgorICBpbnQgeWVhciA9IDA7CisgIGlmIChsb25nX2Zvcm1h
dCkgeworICAgIC8vIEFTTjEgZm9ybWF0OiB5eXl5bW1kZGhoW21tW3NzWy5mZmZdXV1aIHdoZXJl
IHRoZSBaIGlzIGxpdGVyYWwsIGJ1dAorICAgIC8vIFJGQyA1MjgwIHJlcXVpcmVzIHVzIHRvIG9u
bHkgc3VwcG9ydCBleGFjdGx5IHl5eXltbWRkaGhtbXNzWi4KKyAgICBpZiAoYnl0ZXNfbGVmdCA8
IDExKSB7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHllYXIgPSBBU04xUmVhZEludCgm
cywgJmJ5dGVzX2xlZnQsIDQpOworICAgIHllYXIgLT0gMTkwMDsKKyAgfSBlbHNlIHsKKyAgICAv
LyBBU04xIGZvcm1hdDogeXltbWRkaGhtbVtzc11aIHdoZXJlIHRoZSBaIGlzIGxpdGVyYWwsIGJ1
dCBSRkMgNTI4MAorICAgIC8vIHJlcXVpcmVzIHVzIHRvIG9ubHkgc3VwcG9ydCBleGFjdGx5IHl5
bW1kZGhobW1zc1ouCisgICAgaWYgKGJ5dGVzX2xlZnQgPCA5KSB7CisgICAgICByZXR1cm4gLTE7
CisgICAgfQorICAgIHllYXIgPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpOworICAg
IC8vIFBlciBSRkMgNTI4MCA0LjEuMi41LjEKKyAgICBpZiAoeWVhciA8IDUwKSB7CisgICAgICB5
ZWFyICs9IDEwMDsKKyAgICB9CisgIH0KKworICAvLyBSZWFkIG91dCByZW1haW5pbmcgQVNOMSB0
aW1lIGRhdGEgYW5kIHN0b3JlIGl0IGluIHx0bXwgaW4gZG9jdW1lbnRlZAorICAvLyBzdGQ6OnRt
IGZvcm1hdC4KKyAgdG0gdG07CisgIHRtLnRtX3llYXIgPSB5ZWFyOworICB0bS50bV9tb24gPSBB
U04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpIC0gMTsKKyAgdG0udG1fbWRheSA9IEFTTjFS
ZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgMik7CisgIHRtLnRtX2hvdXIgPSBBU04xUmVhZEludCgm
cywgJmJ5dGVzX2xlZnQsIDIpOworICB0bS50bV9taW4gPSBBU04xUmVhZEludCgmcywgJmJ5dGVz
X2xlZnQsIDIpOworICB0bS50bV9zZWMgPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIp
OworCisgIC8vIE5vdyBqdXN0IFogc2hvdWxkIHJlbWFpbi4gIEl0cyBleGlzdGVuY2Ugd2FzIGFz
c2VydGVkIGFib3ZlLgorICBpZiAoYnl0ZXNfbGVmdCAhPSAxKSB7CisgICAgcmV0dXJuIC0xOwor
ICB9CisgIHJldHVybiBUbVRvU2Vjb25kcyh0bSk7Cit9CisKIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIEtl
eVBhcmFtcwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtOTMsMjIgKzE2OCwyMSBAQCBLZXlUeXBlIEludEtl
eVR5cGVGYW1pbHlUb0tleVR5cGUoaW50IGtleV90eXBlX2ZhbWlseSkgewogYm9vbCBTU0xJZGVu
dGl0eTo6UGVtVG9EZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV90eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV9zdHJpbmcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZGVyKSB7Ci0gIC8vIEZpbmQgdGhlIGlubmVy
IGJvZHkuIFdlIG5lZWQgdGhpcyB0byBmdWxmaWxsIHRoZSBjb250cmFjdCBvZgotICAvLyByZXR1
cm5pbmcgcGVtX2xlbmd0aC4KKyAgLy8gRmluZCB0aGUgaW5uZXIgYm9keS4gV2UgbmVlZCB0aGlz
IHRvIGZ1bGZpbGwgdGhlIGNvbnRyYWN0IG9mIHJldHVybmluZworICAvLyBwZW1fbGVuZ3RoLgog
ICBzaXplX3QgaGVhZGVyID0gcGVtX3N0cmluZy5maW5kKCItLS0tLUJFR0lOICIgKyBwZW1fdHlw
ZSArICItLS0tLSIpOwotICBpZiAoaGVhZGVyID09IHN0ZDo6c3RyaW5nOjpucG9zKQorICBpZiAo
aGVhZGVyID09IHN0ZDo6c3RyaW5nOjpucG9zKSB7CiAgICAgcmV0dXJuIGZhbHNlOwotCisgIH0K
ICAgc2l6ZV90IGJvZHkgPSBwZW1fc3RyaW5nLmZpbmQoIlxuIiwgaGVhZGVyKTsKLSAgaWYgKGJv
ZHkgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgIGlmIChib2R5ID09IHN0ZDo6c3RyaW5nOjpucG9z
KSB7CiAgICAgcmV0dXJuIGZhbHNlOwotCisgIH0KICAgc2l6ZV90IHRyYWlsZXIgPSBwZW1fc3Ry
aW5nLmZpbmQoIi0tLS0tRU5EICIgKyBwZW1fdHlwZSArICItLS0tLSIpOwotICBpZiAodHJhaWxl
ciA9PSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgaWYgKHRyYWlsZXIgPT0gc3RkOjpzdHJpbmc6Om5w
b3MpIHsKICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgfQogICBzdGQ6OnN0cmluZyBpbm5lciA9IHBl
bV9zdHJpbmcuc3Vic3RyKGJvZHkgKyAxLCB0cmFpbGVyIC0gKGJvZHkgKyAxKSk7Ci0KICAgKmRl
ciA9IEJhc2U2NDo6RGVjb2RlKGlubmVyLCBCYXNlNjQ6OkRPX1BBUlNFX1dISVRFIHwgQmFzZTY0
OjpET19QQURfQU5ZIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZTY0
OjpET19URVJNX0JVRkZFUik7CiAgIHJldHVybiB0cnVlOwpAQCAtMTE4LDE0ICsxOTIsMTIgQEAg
c3RkOjpzdHJpbmcgU1NMSWRlbnRpdHk6OkRlclRvUGVtKGNvbnN0IHN0ZDo6c3RyaW5nJiBwZW1f
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5n
dGgpIHsKICAgcnRjOjpTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLQogICByZXN1bHQgPDwgIi0tLS0t
QkVHSU4gIiA8PCBwZW1fdHlwZSA8PCAiLS0tLS1cbiI7CiAKICAgc3RkOjpzdHJpbmcgYjY0X2Vu
Y29kZWQ7CiAgIEJhc2U2NDo6RW5jb2RlRnJvbUFycmF5KGRhdGEsIGxlbmd0aCwgJmI2NF9lbmNv
ZGVkKTsKLQotICAvLyBEaXZpZGUgdGhlIEJhc2UtNjQgZW5jb2RlZCBkYXRhIGludG8gNjQtY2hh
cmFjdGVyIGNodW5rcywgYXMgcGVyCi0gIC8vIDQuMy4yLjQgb2YgUkZDIDE0MjEuCisgIC8vIERp
dmlkZSB0aGUgQmFzZS02NCBlbmNvZGVkIGRhdGEgaW50byA2NC1jaGFyYWN0ZXIgY2h1bmtzLCBh
cyBwZXIgNC4zLjIuNAorICAvLyBvZiBSRkMgMTQyMS4KICAgc3RhdGljIGNvbnN0IHNpemVfdCBr
Q2h1bmtTaXplID0gNjQ7CiAgIHNpemVfdCBjaHVua3MgPSAoYjY0X2VuY29kZWQuc2l6ZSgpICsg
KGtDaHVua1NpemUgLSAxKSkgLyBrQ2h1bmtTaXplOwogICBmb3IgKHNpemVfdCBpID0gMCwgY2h1
bmtfb2Zmc2V0ID0gMDsgaSA8IGNodW5rczsKQEAgLTEzMyw5ICsyMDUsNyBAQCBzdGQ6OnN0cmlu
ZyBTU0xJZGVudGl0eTo6RGVyVG9QZW0oY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV90eXBlLAogICAg
IHJlc3VsdCA8PCBiNjRfZW5jb2RlZC5zdWJzdHIoY2h1bmtfb2Zmc2V0LCBrQ2h1bmtTaXplKTsK
ICAgICByZXN1bHQgPDwgIlxuIjsKICAgfQotCiAgIHJlc3VsdCA8PCAiLS0tLS1FTkQgIiA8PCBw
ZW1fdHlwZSA8PCAiLS0tLS1cbiI7Ci0KICAgcmV0dXJuIHJlc3VsdC5SZWxlYXNlKCk7CiB9CiAK
QEAgLTE4Niw3OCArMjU2LDQgQEAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNTTElkZW50aXR5JiBh
LCBjb25zdCBTU0xJZGVudGl0eSYgYikgewogICByZXR1cm4gIShhID09IGIpOwogfQogCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0vLyBIZWxwZXIgRnVuY3Rpb25zCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIFJlYWQg
fG58IGJ5dGVzIGZyb20gQVNOMSBudW1iZXIgc3RyaW5nIGF0ICp8cHB8IGFuZCByZXR1cm4gdGhl
IG51bWVyaWMgdmFsdWUuCi0vLyBVcGRhdGUgKnxwcHwgYW5kICp8bnB8IHRvIHJlZmxlY3QgbnVt
YmVyIG9mIHJlYWQgYnl0ZXMuCi1zdGF0aWMgaW5saW5lIGludCBBU04xUmVhZEludChjb25zdCB1
bnNpZ25lZCBjaGFyKiogcHAsIHNpemVfdCogbnAsIHNpemVfdCBuKSB7Ci0gIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIHAgPSAqcHA7Ci0gIGludCB4ID0gMDsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBuOyBpKyspCi0gICAgeCA9IDEwICogeCArIHBbaV0gLSAnMCc7Ci0gICpwcCA9IHAgKyBuOwot
ICAqbnAgPSAqbnAgLSBuOwotICByZXR1cm4geDsKLX0KLQotaW50NjRfdCBBU04xVGltZVRvU2Vj
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHMsIHNpemVfdCBsZW5ndGgsIGJvb2wgbG9uZ19mb3JtYXQp
IHsKLSAgc2l6ZV90IGJ5dGVzX2xlZnQgPSBsZW5ndGg7Ci0KLSAgLy8gTWFrZSBzdXJlIHRoZSBz
dHJpbmcgZW5kcyB3aXRoIFouICBEb2luZyBpdCBoZXJlIHByb3RlY3RzIHRoZSBzdHJzcG4gY2Fs
bAotICAvLyBmcm9tIHJ1bm5pbmcgb2ZmIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBpbiBaJ3MgYWJz
ZW5zZS4KLSAgaWYgKGxlbmd0aCA9PSAwIHx8IHNbbGVuZ3RoIC0gMV0gIT0gJ1onKQotICAgIHJl
dHVybiAtMTsKLQotICAvLyBNYWtlIHN1cmUgd2Ugb25seSBoYXZlIEFTQ0lJIGRpZ2l0cyBzbyB0
aGF0IHdlIGRvbid0IG5lZWQgdG8gY2x1dHRlciB0aGUKLSAgLy8gY29kZSBiZWxvdyBhbmQgQVNO
MVJlYWRJbnQgd2l0aCBlcnJvciBjaGVja2luZy4KLSAgc2l6ZV90IG4gPSBzdHJzcG4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocyksICIwMTIzNDU2Nzg5Iik7Ci0gIGlmIChuICsgMSAh
PSBsZW5ndGgpCi0gICAgcmV0dXJuIC0xOwotCi0gIGludCB5ZWFyOwotCi0gIC8vIFJlYWQgb3V0
IEFTTjEgeWVhciwgaW4gZWl0aGVyIDItY2hhciAiVVRDVElNRSIgb3IgNC1jaGFyICJHRU5FUkFM
SVpFRFRJTUUiCi0gIC8vIGZvcm1hdC4gIEJvdGggZm9ybWF0IHVzZSBVVEMgaW4gdGhpcyBjb250
ZXh0LgotICBpZiAobG9uZ19mb3JtYXQpIHsKLSAgICAvLyBBU04xIGZvcm1hdDogeXl5eW1tZGRo
aFttbVtzc1suZmZmXV1dWiB3aGVyZSB0aGUgWiBpcyBsaXRlcmFsLCBidXQKLSAgICAvLyBSRkMg
NTI4MCByZXF1aXJlcyB1cyB0byBvbmx5IHN1cHBvcnQgZXhhY3RseSB5eXl5bW1kZGhobW1zc1ou
Ci0KLSAgICBpZiAoYnl0ZXNfbGVmdCA8IDExKQotICAgICAgcmV0dXJuIC0xOwotCi0gICAgeWVh
ciA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgNCk7Ci0gICAgeWVhciAtPSAxOTAwOwot
ICB9IGVsc2UgewotICAgIC8vIEFTTjEgZm9ybWF0OiB5eW1tZGRoaG1tW3NzXVogd2hlcmUgdGhl
IFogaXMgbGl0ZXJhbCwgYnV0IFJGQyA1MjgwCi0gICAgLy8gcmVxdWlyZXMgdXMgdG8gb25seSBz
dXBwb3J0IGV4YWN0bHkgeXltbWRkaGhtbXNzWi4KLQotICAgIGlmIChieXRlc19sZWZ0IDwgOSkK
LSAgICAgIHJldHVybiAtMTsKLQotICAgIHllYXIgPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xl
ZnQsIDIpOwotICAgIGlmICh5ZWFyIDwgNTApICAvLyBQZXIgUkZDIDUyODAgNC4xLjIuNS4xCi0g
ICAgICB5ZWFyICs9IDEwMDsKLSAgfQotCi0gIHN0ZDo6dG0gdG07Ci0gIHRtLnRtX3llYXIgPSB5
ZWFyOwotCi0gIC8vIFJlYWQgb3V0IHJlbWFpbmluZyBBU04xIHRpbWUgZGF0YSBhbmQgc3RvcmUg
aXQgaW4gfHRtfCBpbiBkb2N1bWVudGVkCi0gIC8vIHN0ZDo6dG0gZm9ybWF0LgotICB0bS50bV9t
b24gPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpIC0gMTsKLSAgdG0udG1fbWRheSA9
IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgMik7Ci0gIHRtLnRtX2hvdXIgPSBBU04xUmVh
ZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpOwotICB0bS50bV9taW4gPSBBU04xUmVhZEludCgmcywg
JmJ5dGVzX2xlZnQsIDIpOwotICB0bS50bV9zZWMgPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xl
ZnQsIDIpOwotCi0gIGlmIChieXRlc19sZWZ0ICE9IDEpIHsKLSAgICAvLyBOb3cganVzdCBaIHNo
b3VsZCByZW1haW4uICBJdHMgZXhpc3RlbmNlIHdhcyBhc3NlcnRlZCBhYm92ZS4KLSAgICByZXR1
cm4gLTE7Ci0gIH0KLQotICByZXR1cm4gVG1Ub1NlY29uZHModG0pOwotfQotCiB9ICAvLyBuYW1l
c3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zc2xpZGVudGl0eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaAppbmRleCAxMzc5ZDczM2Jl
NWY0ZjFhMmY4NzdjNjRmNWQzZmJhNWZlNzlmZmI1Li4zOWZlZWFiYWIzMTJjMTQwNTRkMjY1M2E1
M2FjMjQzZjU3ZWUwMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xpZGVudGl0eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5LmgKQEAgLTEz
LDE5ICsxMywxNSBAQAogI2lmbmRlZiBSVENfQkFTRV9TU0xJREVOVElUWV9IXwogI2RlZmluZSBS
VENfQkFTRV9TU0xJREVOVElUWV9IXwogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUg
PG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxjdGltZT4KICNpbmNsdWRl
IDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVy
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0
ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiBuYW1lc3BhY2UgcnRjIHsK
IAorY2xhc3MgU1NMQ2VydENoYWluOworY2xhc3MgU1NMQ2VydGlmaWNhdGU7CisKIC8vIEtUX0xB
U1QgaXMgaW50ZW5kZWQgZm9yIHZlY3RvciBkZWNsYXJhdGlvbnMgYW5kIGxvb3BzIG92ZXIgYWxs
IGtleSB0eXBlczsKIC8vIGl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnkga2V5IHR5cGUgaW4gaXRz
ZWxmLgogLy8gS1RfREVGQVVMVCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IEtleVR5cGUgZm9yIEtl
eVBhcmFtcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsaWRlbnRpdHlfdW5pdHRlc3Qu
Y2MKaW5kZXggMTMyZTI0MGMyZjVhNWMwZGM0OGM3N2FjODhlNzVlODZhM2FjMjhjMC4uYmE1M2Qx
N2RhNDMxYTJhY2YyYWI2YjE4ZjQxYzhlZDYxNjUxNGRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsaWRlbnRpdHlfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3NsaWRlbnRpdHlfdW5pdHRlc3QuY2MKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNs
dWRlICJydGNfYmFzZS9mYWtlc3NsaWRlbnRpdHkuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5p
dC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9t
ZXNzYWdlZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsYWRhcHRlci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3NzbGZpbmdlcnByaW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRl
bnRpdHkuaCIKQEAgLTE3OSw3ICsxODAsNyBAQCBJZGVudGl0eUFuZEluZm8gQ3JlYXRlRmFrZUlk
ZW50aXR5QW5kSW5mb0Zyb21EZXJzKAogICBjb25zdCBydGM6OlNTTENlcnRDaGFpbiYgY2hhaW4g
PSBpbmZvLmlkZW50aXR5LT5jZXJ0X2NoYWluKCk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNT
TEZpbmdlcnByaW50PiBmcDsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGFpbi5HZXRTaXpl
KCk7IGkrKykgewotICAgIGZwLnJlc2V0KHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZSgic2hh
LTEiLCAmY2hhaW4uR2V0KGkpKSk7CisgICAgZnAgPSBydGM6OlNTTEZpbmdlcnByaW50OjpDcmVh
dGUoInNoYS0xIiwgY2hhaW4uR2V0KGkpKTsKICAgICBFWFBFQ1RfVFJVRShmcCk7CiAgICAgaW5m
by5maW5nZXJwcmludHMucHVzaF9iYWNrKGZwLT5HZXRSZmM0NTcyRmluZ2VycHJpbnQoKSk7CiAg
IH0KQEAgLTIwMCw3ICsyMDEsNyBAQCBjbGFzcyBTU0xJZGVudGl0eVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiAgICAgQVNTRVJUX1RSVUUoaWRlbnRpdHlfZWNkc2ExXyk7CiAgICAgQVNT
RVJUX1RSVUUoaWRlbnRpdHlfZWNkc2EyXyk7CiAKLSAgICB0ZXN0X2NlcnRfLnJlc2V0KHJ0Yzo6
U1NMQ2VydGlmaWNhdGU6OkZyb21QRU1TdHJpbmcoa1Rlc3RDZXJ0aWZpY2F0ZSkpOworICAgIHRl
c3RfY2VydF8gPSBydGM6OlNTTENlcnRpZmljYXRlOjpGcm9tUEVNU3RyaW5nKGtUZXN0Q2VydGlm
aWNhdGUpOwogICAgIEFTU0VSVF9UUlVFKHRlc3RfY2VydF8pOwogICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbHN0
cmVhbWFkYXB0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyLmNjCmluZGV4IDc0NmViZDUwMDYzZGNhOGJmYWU2
ODk4NWRiZGI2ZWVkN2Y1MzJlMGUuLjljMzNhOWM5MzNjOThhOTA0MDQ5ZmM4NmJjZjAxMTBhNzdk
ZmI3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5jYwpAQCAt
ODksNDAgKzg5LDEyIEBAIGJvb2wgSXNHY21DcnlwdG9TdWl0ZU5hbWUoY29uc3Qgc3RkOjpzdHJp
bmcmIGNyeXB0b19zdWl0ZSkgewogICAgICAgICAgIGNyeXB0b19zdWl0ZSA9PSBDU19BRUFEX0FF
U18xMjhfR0NNKTsKIH0KIAotLy8gc3RhdGljCi1DcnlwdG9PcHRpb25zIENyeXB0b09wdGlvbnM6
Ok5vR2NtKCkgewotICBDcnlwdG9PcHRpb25zIG9wdGlvbnM7Ci0gIG9wdGlvbnMuZW5hYmxlX2dj
bV9jcnlwdG9fc3VpdGVzID0gZmFsc2U7Ci0gIHJldHVybiBvcHRpb25zOwotfQotCi1zdGQ6OnZl
Y3RvcjxpbnQ+IEdldFN1cHBvcnRlZER0bHNTcnRwQ3J5cHRvU3VpdGVzKAotICAgIGNvbnN0IHJ0
Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIHsKLSAgc3RkOjp2ZWN0b3I8aW50PiBj
cnlwdG9fc3VpdGVzOwotICBpZiAoY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3Vp
dGVzKSB7Ci0gICAgY3J5cHRvX3N1aXRlcy5wdXNoX2JhY2socnRjOjpTUlRQX0FFQURfQUVTXzI1
Nl9HQ00pOwotICAgIGNyeXB0b19zdWl0ZXMucHVzaF9iYWNrKHJ0Yzo6U1JUUF9BRUFEX0FFU18x
MjhfR0NNKTsKLSAgfQotICAvLyBOb3RlOiBTUlRQX0FFUzEyOF9DTV9TSEExXzgwIGlzIHdoYXQg
aXMgcmVxdWlyZWQgdG8gYmUgc3VwcG9ydGVkIChieQotICAvLyBkcmFmdC1pZXRmLXJ0Y3dlYi1z
ZWN1cml0eS1hcmNoKSwgYnV0IFNSVFBfQUVTMTI4X0NNX1NIQTFfMzIgaXMgYWxsb3dlZCBhcwot
ICAvLyB3ZWxsLCBhbmQgc2F2ZXMgYSBmZXcgYnl0ZXMgcGVyIHBhY2tldCBpZiBpdCBlbmRzIHVw
IHNlbGVjdGVkLgotICAvLyBBcyB0aGUgY2lwaGVyIHN1aXRlIGlzIHBvdGVudGlhbGx5IGluc2Vj
dXJlLCBpdCB3aWxsIG9ubHkgYmUgdXNlZCBpZgotICAvLyBlbmFibGVkIGJ5IGJvdGggcGVlcnMu
Ci0gIGlmIChjcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhl
cikgewotICAgIGNyeXB0b19zdWl0ZXMucHVzaF9iYWNrKHJ0Yzo6U1JUUF9BRVMxMjhfQ01fU0hB
MV8zMik7Ci0gIH0KLSAgY3J5cHRvX3N1aXRlcy5wdXNoX2JhY2socnRjOjpTUlRQX0FFUzEyOF9D
TV9TSEExXzgwKTsKLSAgcmV0dXJuIGNyeXB0b19zdWl0ZXM7Ci19Ci0KIFNTTFN0cmVhbUFkYXB0
ZXIqIFNTTFN0cmVhbUFkYXB0ZXI6OkNyZWF0ZShTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSkgewog
ICByZXR1cm4gbmV3IE9wZW5TU0xTdHJlYW1BZGFwdGVyKHN0cmVhbSk7CiB9CiAKIFNTTFN0cmVh
bUFkYXB0ZXI6OlNTTFN0cmVhbUFkYXB0ZXIoU3RyZWFtSW50ZXJmYWNlKiBzdHJlYW0pCi0gICAg
OiBTdHJlYW1BZGFwdGVySW50ZXJmYWNlKHN0cmVhbSksCi0gICAgICBpZ25vcmVfYmFkX2NlcnRf
KGZhbHNlKSwKLSAgICAgIGNsaWVudF9hdXRoX2VuYWJsZWRfKHRydWUpIHt9CisgICAgOiBTdHJl
YW1BZGFwdGVySW50ZXJmYWNlKHN0cmVhbSkge30KIAogU1NMU3RyZWFtQWRhcHRlcjo6flNTTFN0
cmVhbUFkYXB0ZXIoKSB7fQogCkBAIC0xNjEsOCArMTMzLDEzIEBAIGJvb2wgU1NMU3RyZWFtQWRh
cHRlcjo6SXNBY2NlcHRhYmxlQ2lwaGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBjaXBoZXIsCiBzdGQ6
OnN0cmluZyBTU0xTdHJlYW1BZGFwdGVyOjpTc2xDaXBoZXJTdWl0ZVRvTmFtZShpbnQgY2lwaGVy
X3N1aXRlKSB7CiAgIHJldHVybiBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6U3NsQ2lwaGVyU3VpdGVU
b05hbWUoY2lwaGVyX3N1aXRlKTsKIH0KLXZvaWQgU1NMU3RyZWFtQWRhcHRlcjo6ZW5hYmxlX3Rp
bWVfY2FsbGJhY2tfZm9yX3Rlc3RpbmcoKSB7Ci0gIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjplbmFi
bGVfdGltZV9jYWxsYmFja19mb3JfdGVzdGluZygpOworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisvLyBUZXN0IG9ubHkgc2V0dGluZ3MKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwordm9pZCBT
U0xTdHJlYW1BZGFwdGVyOjpFbmFibGVUaW1lQ2FsbGJhY2tGb3JUZXN0aW5nKCkgeworICBPcGVu
U1NMU3RyZWFtQWRhcHRlcjo6RW5hYmxlVGltZUNhbGxiYWNrRm9yVGVzdGluZygpOwogfQogCiAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xzdHJlYW1hZGFw
dGVyLmgKaW5kZXggMmQ0ZTE5ZjliNTBmZWYzMGMwOGNmMDYzYWRmNjU0NjQxMzNmZmM4NS4uMjVm
NGYzMzQ4NmRhZGQ5ODRjOGE0MmJlMWIzMWQzZjJhYTlhYjU4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Nsc3RyZWFtYWRh
cHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuaApAQCAtNzAsMzQgKzcwLDYgQEAgYm9vbCBJc0djbUNy
eXB0b1N1aXRlKGludCBjcnlwdG9fc3VpdGUpOwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZl
biBjcnlwdG8gc3VpdGUgbmFtZSB1c2VzIGEgR0NNIGNpcGhlci4KIGJvb2wgSXNHY21DcnlwdG9T
dWl0ZU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGNyeXB0b19zdWl0ZSk7CiAKLXN0cnVjdCBDcnlw
dG9PcHRpb25zIHsKLSAgQ3J5cHRvT3B0aW9ucygpIHt9Ci0KLSAgLy8gSGVscGVyIG1ldGhvZCB0
byByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlIENyeXB0b09wdGlvbnMgd2l0aCBHQ00gY3J5cHRv
Ci0gIC8vIHN1aXRlcyBkaXNhYmxlZC4gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgaW5zdGVh
ZCBvZiBkZXBlbmRpbmcgb24gY3VycmVudAotICAvLyBkZWZhdWx0IHZhbHVlcyBzZXQgYnkgdGhl
IGNvbnN0cnVjdG9yLgotICBzdGF0aWMgQ3J5cHRvT3B0aW9ucyBOb0djbSgpOwotCi0gIC8vIEVu
YWJsZSBHQ00gY3J5cHRvIHN1aXRlcyBmcm9tIFJGQyA3NzE0IGZvciBTUlRQLiBHQ00gd2lsbCBv
bmx5IGJlIHVzZWQKLSAgLy8gaWYgYm90aCBzaWRlcyBlbmFibGUgaXQuCi0gIGJvb2wgZW5hYmxl
X2djbV9jcnlwdG9fc3VpdGVzID0gZmFsc2U7Ci0KLSAgLy8gSWYgc2V0IHRvIHRydWUsIHRoZSAo
cG90ZW50aWFsbHkgaW5zZWN1cmUpIGNyeXB0byBjaXBoZXIKLSAgLy8gU1JUUF9BRVMxMjhfQ01f
U0hBMV8zMiB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBjaXBoZXJz
Ci0gIC8vIGR1cmluZyBuZWdvdGlhdGlvbi4gSXQgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYm90aCBw
ZWVycyBzdXBwb3J0IGl0IGFuZCBubwotICAvLyBvdGhlciBjaXBoZXJzIGdldCBwcmVmZXJyZWQu
Ci0gIGJvb2wgZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPSBmYWxzZTsKLQot
ICAvLyBJZiBzZXQgdG8gdHJ1ZSwgZW5jcnlwdGVkIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyBhcyBk
ZWZpbmVkIGluIFJGQyA2OTA0Ci0gIC8vIHdpbGwgYmUgbmVnb3RpYXRlZC4gVGhleSB3aWxsIG9u
bHkgYmUgdXNlZCBpZiBib3RoIHBlZXJzIHN1cHBvcnQgdGhlbS4KLSAgYm9vbCBlbmFibGVfZW5j
cnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9IGZhbHNlOwotfTsKLQotLy8gUmV0dXJucyBz
dXBwb3J0ZWQgY3J5cHRvIHN1aXRlcywgZ2l2ZW4gfGNyeXB0b19vcHRpb25zfC4KLS8vIENTX0FF
U19DTV8xMjhfSE1BQ19TSEExXzMyIHdpbGwgYmUgcHJlZmVycmVkIGJ5IGRlZmF1bHQuCi1zdGQ6
OnZlY3RvcjxpbnQ+IEdldFN1cHBvcnRlZER0bHNTcnRwQ3J5cHRvU3VpdGVzKAotICAgIGNvbnN0
IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpOwotCiAvLyBTU0xTdHJlYW1BZGFw
dGVyIDogQSBTdHJlYW1JbnRlcmZhY2VBZGFwdGVyIHRoYXQgZG9lcyBTU0wvVExTLgogLy8gQWZ0
ZXIgU1NMIGhhcyBiZWVuIHN0YXJ0ZWQsIHRoZSBzdHJlYW0gd2lsbCBvbmx5IG9wZW4gb24gc3Vj
Y2Vzc2Z1bAogLy8gU1NMIHZlcmlmaWNhdGlvbiBvZiBjZXJ0aWZpY2F0ZXMsIGFuZCB0aGUgY29t
bXVuaWNhdGlvbiBpcwpAQCAtMTQ0LDEyICsxMTYsNiBAQCBjbGFzcyBTU0xTdHJlYW1BZGFwdGVy
IDogcHVibGljIFN0cmVhbUFkYXB0ZXJJbnRlcmZhY2UgewogICBleHBsaWNpdCBTU0xTdHJlYW1B
ZGFwdGVyKFN0cmVhbUludGVyZmFjZSogc3RyZWFtKTsKICAgflNTTFN0cmVhbUFkYXB0ZXIoKSBv
dmVycmlkZTsKIAotICB2b2lkIHNldF9pZ25vcmVfYmFkX2NlcnQoYm9vbCBpZ25vcmUpIHsgaWdu
b3JlX2JhZF9jZXJ0XyA9IGlnbm9yZTsgfQotICBib29sIGlnbm9yZV9iYWRfY2VydCgpIGNvbnN0
IHsgcmV0dXJuIGlnbm9yZV9iYWRfY2VydF87IH0KLQotICB2b2lkIHNldF9jbGllbnRfYXV0aF9l
bmFibGVkKGJvb2wgZW5hYmxlZCkgeyBjbGllbnRfYXV0aF9lbmFibGVkXyA9IGVuYWJsZWQ7IH0K
LSAgYm9vbCBjbGllbnRfYXV0aF9lbmFibGVkKCkgY29uc3QgeyByZXR1cm4gY2xpZW50X2F1dGhf
ZW5hYmxlZF87IH0KLQogICAvLyBTcGVjaWZ5IG91ciBTU0wgaWRlbnRpdHk6IGtleSBhbmQgY2Vy
dGlmaWNhdGUuIFNTTFN0cmVhbSB0YWtlcyBvd25lcnNoaXAKICAgLy8gb2YgdGhlIFNTTElkZW50
aXR5IG9iamVjdCBhbmQgd2lsbCBmcmVlIGl0IHdoZW4gYXBwcm9wcmlhdGUuIFNob3VsZCBiZQog
ICAvLyBjYWxsZWQgbm8gbW9yZSB0aGFuIG9uY2Ugb24gYSBnaXZlbiBTU0xTdHJlYW0gaW5zdGFu
Y2UuCkBAIC0yNjMsMjIgKzIyOSwzMiBAQCBjbGFzcyBTU0xTdHJlYW1BZGFwdGVyIDogcHVibGlj
IFN0cmVhbUFkYXB0ZXJJbnRlcmZhY2UgewogICAvLyBkZXBlbmRpbmcgb24gc3BlY2lmaWMgU1NM
IGltcGxlbWVudGF0aW9uLgogICBzdGF0aWMgc3RkOjpzdHJpbmcgU3NsQ2lwaGVyU3VpdGVUb05h
bWUoaW50IGNpcGhlcl9zdWl0ZSk7CiAKKyAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAvLyBUZXN0
aW5nIG9ubHkgbWVtYmVyIGZ1bmN0aW9ucworICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKICAgLy8g
VXNlIG91ciB0aW1ldXRpbHMuaCBzb3VyY2Ugb2YgdGltaW5nIGluIEJvcmluZ1NTTCwgYWxsb3dp
bmcgdXMgdG8gdGVzdAogICAvLyB1c2luZyBhIGZha2UgY2xvY2suCi0gIHN0YXRpYyB2b2lkIGVu
YWJsZV90aW1lX2NhbGxiYWNrX2Zvcl90ZXN0aW5nKCk7CisgIHN0YXRpYyB2b2lkIEVuYWJsZVRp
bWVDYWxsYmFja0ZvclRlc3RpbmcoKTsKKworICAvLyBEZXByZWNhdGVkLiBEbyBub3QgdXNlIHRo
aXMgQVBJIG91dHNpZGUgb2YgdGVzdGluZy4KKyAgLy8gRG8gbm90IHNldCB0aGlzIHRvIGZhbHNl
IG91dHNpZGUgb2YgdGVzdGluZy4KKyAgdm9pZCBTZXRDbGllbnRBdXRoRW5hYmxlZEZvclRlc3Rp
bmcoYm9vbCBlbmFibGVkKSB7CisgICAgY2xpZW50X2F1dGhfZW5hYmxlZF8gPSBlbmFibGVkOwor
ICB9CisKKyAgLy8gRGVwcmVjYXRlZC4gRG8gbm90IHVzZSB0aGlzIEFQSSBvdXRzaWRlIG9mIHRl
c3RpbmcuCisgIC8vIFJldHVybnMgdHJ1ZSBieSBkZWZhdWx0LCBlbHNlIGZhbHNlIGlmIGV4cGxp
Y2l0bHkgc2V0IHRvIGRpc2FibGUgY2xpZW50CisgIC8vIGF1dGhlbnRpY2F0aW9uLgorICBib29s
IEdldENsaWVudEF1dGhFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gY2xpZW50X2F1dGhfZW5hYmxl
ZF87IH0KIAogICBzaWdzbG90OjpzaWduYWwxPFNTTEhhbmRzaGFrZUVycm9yPiBTaWduYWxTU0xI
YW5kc2hha2VFcnJvcjsKIAogIHByaXZhdGU6Ci0gIC8vIElmIHRydWUsIHRoZSBzZXJ2ZXIgY2Vy
dGlmaWNhdGUgbmVlZCBub3QgbWF0Y2ggdGhlIGNvbmZpZ3VyZWQKLSAgLy8gc2VydmVyX25hbWUs
IGFuZCBpbiBmYWN0IG1pc3NpbmcgY2VydGlmaWNhdGUgYXV0aG9yaXR5IGFuZCBvdGhlcgotICAv
LyB2ZXJpZmljYXRpb24gZXJyb3JzIGFyZSBpZ25vcmVkLgotICBib29sIGlnbm9yZV9iYWRfY2Vy
dF87Ci0KICAgLy8gSWYgdHJ1ZSAoZGVmYXVsdCksIHRoZSBjbGllbnQgaXMgcmVxdWlyZWQgdG8g
cHJvdmlkZSBhIGNlcnRpZmljYXRlIGR1cmluZwogICAvLyBoYW5kc2hha2UuIElmIG5vIGNlcnRp
ZmljYXRlIGlzIGdpdmVuLCBoYW5kc2hha2UgZmFpbHMuIFRoaXMgYXBwbGllcyB0bwogICAvLyBz
ZXJ2ZXIgbW9kZSBvbmx5LgotICBib29sIGNsaWVudF9hdXRoX2VuYWJsZWRfOworICBib29sIGNs
aWVudF9hdXRoX2VuYWJsZWRfID0gdHJ1ZTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3NzbHN0cmVhbWFkYXB0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyX3VuaXR0ZXN0LmNj
CmluZGV4IDM0MDNiZGJlNzI3ZWUzM2YwODYyODYwYzlmNzFhYWQxZGI2ZDlmZTcuLjZmYmIxZDdj
MmNjMDk4MjJkMjZiYTY3ZTlhNzBlYTUyYzMxNWE3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXJf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlcl91bml0dGVzdC5jYwpAQCAtMTcsNiArMTcsOCBA
QAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21l
bW9yeV9zdHJlYW0uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2Uvc3NsYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50
aXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgpAQCAtNTg3LDgg
KzU4OSw3IEBAIGNsYXNzIFNTTFN0cmVhbUFkYXB0ZXJUZXN0QmFzZSA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0LAogICAgICAgY2hhaW4gPSBjbGllbnRfc3NsXy0+R2V0UGVlclNTTENlcnRDaGFpbigp
OwogICAgIGVsc2UKICAgICAgIGNoYWluID0gc2VydmVyX3NzbF8tPkdldFBlZXJTU0xDZXJ0Q2hh
aW4oKTsKLSAgICByZXR1cm4gKGNoYWluICYmIGNoYWluLT5HZXRTaXplKCkpID8gY2hhaW4tPkdl
dCgwKS5HZXRVbmlxdWVSZWZlcmVuY2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiBudWxscHRyOworICAgIHJldHVybiAoY2hhaW4gJiYgY2hhaW4tPkdldFNpemUo
KSkgPyBjaGFpbi0+R2V0KDApLkNsb25lKCkgOiBudWxscHRyOwogICB9CiAKICAgYm9vbCBHZXRT
c2xDaXBoZXJTdWl0ZShib29sIGNsaWVudCwgaW50KiByZXR2YWwpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmVhbS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0
cmVhbS5jYwppbmRleCBkMWVjMTQwMGRlNjBiMWRlM2ZlZWRhOWY3NzlhMDA5NjcyZjIxOTBkLi43
ODM2MjVjNjdhOTQ2MDI1MTE5MzdhZTQwZDY2MzQzYWE4NTZlM2IyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJlYW0uY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c3RyZWFtLmNjCkBAIC03LDI5ICs3LDIzIEBACiAgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQogICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCi0KLSNpZiBk
ZWZpbmVkKFdFQlJUQ19QT1NJWCkKLSNpbmNsdWRlIDxzeXMvZmlsZS5oPgotI2VuZGlmICAvLyBX
RUJSVENfUE9TSVgKICNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2lu
Y2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0KICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3RyZWFtLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogI2lmIGRlZmluZWQoV0VC
UlRDX1dJTikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisKICNkZWZpbmUgZmlsZW5vIF9maWxlbm8K
KyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBy
dGMgewpAQCAtNzUsMjYgKzY5LDYgQEAgU3RyZWFtUmVzdWx0IFN0cmVhbUludGVyZmFjZTo6UmVh
ZEFsbCh2b2lkKiBidWZmZXIsCiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmVhbVJlc3VsdCBT
dHJlYW1JbnRlcmZhY2U6OlJlYWRMaW5lKHN0ZDo6c3RyaW5nKiBsaW5lKSB7Ci0gIGxpbmUtPmNs
ZWFyKCk7Ci0gIFN0cmVhbVJlc3VsdCByZXN1bHQgPSBTUl9TVUNDRVNTOwotICB3aGlsZSAodHJ1
ZSkgewotICAgIGNoYXIgY2g7Ci0gICAgcmVzdWx0ID0gUmVhZCgmY2gsIHNpemVvZihjaCksIG51
bGxwdHIsIG51bGxwdHIpOwotICAgIGlmIChyZXN1bHQgIT0gU1JfU1VDQ0VTUykgewotICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIGlmIChjaCA9PSAnXG4nKSB7Ci0gICAgICBicmVhazsKLSAgICB9
Ci0gICAgbGluZS0+cHVzaF9iYWNrKGNoKTsKLSAgfQotICBpZiAoIWxpbmUtPmVtcHR5KCkpIHsg
ICAvLyBnaXZlIGJhY2sgdGhlIGxpbmUgd2UndmUgY29sbGVjdGVkIHNvIGZhciB3aXRoCi0gICAg
cmVzdWx0ID0gU1JfU1VDQ0VTUzsgIC8vIGEgc3VjY2VzcyBjb2RlLiAgT3RoZXJ3aXNlIHJldHVy
biB0aGUgbGFzdCBjb2RlCi0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQogdm9pZCBTdHJlYW1J
bnRlcmZhY2U6OlBvc3RFdmVudChUaHJlYWQqIHQsIGludCBldmVudHMsIGludCBlcnIpIHsKICAg
dC0+UG9zdChSVENfRlJPTV9IRVJFLCB0aGlzLCBNU0dfUE9TVF9FVkVOVCwKICAgICAgICAgICBu
ZXcgU3RyZWFtRXZlbnREYXRhKGV2ZW50cywgZXJyKSk7CkBAIC0xMDQsMTQgKzc4LDYgQEAgdm9p
ZCBTdHJlYW1JbnRlcmZhY2U6OlBvc3RFdmVudChpbnQgZXZlbnRzLCBpbnQgZXJyKSB7CiAgIFBv
c3RFdmVudChUaHJlYWQ6OkN1cnJlbnQoKSwgZXZlbnRzLCBlcnIpOwogfQogCi1jb25zdCB2b2lk
KiBTdHJlYW1JbnRlcmZhY2U6OkdldFJlYWREYXRhKHNpemVfdCogZGF0YV9sZW4pIHsKLSAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQqIFN0cmVhbUludGVyZmFjZTo6R2V0V3JpdGVCdWZmZXIo
c2l6ZV90KiBidWZfbGVuKSB7Ci0gIHJldHVybiBudWxscHRyOwotfQotCiBib29sIFN0cmVhbUlu
dGVyZmFjZTo6U2V0UG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSB7CiAgIHJldHVybiBmYWxzZTsK
IH0KQEAgLTEyNCwxMCArOTAsNiBAQCBib29sIFN0cmVhbUludGVyZmFjZTo6R2V0U2l6ZShzaXpl
X3QqIHNpemUpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFN0cmVhbUludGVy
ZmFjZTo6R2V0V3JpdGVSZW1haW5pbmcoc2l6ZV90KiBzaXplKSBjb25zdCB7Ci0gIHJldHVybiBm
YWxzZTsKLX0KLQogYm9vbCBTdHJlYW1JbnRlcmZhY2U6OkZsdXNoKCkgewogICByZXR1cm4gZmFs
c2U7CiB9CkBAIC0xODgsMTAgKzE1MCw2IEBAIGJvb2wgU3RyZWFtQWRhcHRlckludGVyZmFjZTo6
R2V0U2l6ZShzaXplX3QqIHNpemUpIGNvbnN0IHsKICAgcmV0dXJuIHN0cmVhbV8tPkdldFNpemUo
c2l6ZSk7CiB9CiAKLWJvb2wgU3RyZWFtQWRhcHRlckludGVyZmFjZTo6R2V0V3JpdGVSZW1haW5p
bmcoc2l6ZV90KiBzaXplKSBjb25zdCB7Ci0gIHJldHVybiBzdHJlYW1fLT5HZXRXcml0ZVJlbWFp
bmluZyhzaXplKTsKLX0KLQogYm9vbCBTdHJlYW1BZGFwdGVySW50ZXJmYWNlOjpSZXNlcnZlU2l6
ZShzaXplX3Qgc2l6ZSkgewogICByZXR1cm4gc3RyZWFtXy0+UmVzZXJ2ZVNpemUoc2l6ZSk7CiB9
CkBAIC0zODksMTQzICszNDcsNiBAQCB2b2lkIEZpbGVTdHJlYW06OkRvQ2xvc2UoKSB7CiAgIGZj
bG9zZShmaWxlXyk7CiB9CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIE1lbW9yeVN0cmVh
bQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1NZW1vcnlTdHJlYW1CYXNlOjpNZW1vcnlTdHJl
YW1CYXNlKCkKLSAgICA6IGJ1ZmZlcl8obnVsbHB0ciksIGJ1ZmZlcl9sZW5ndGhfKDApLCBkYXRh
X2xlbmd0aF8oMCksIHNlZWtfcG9zaXRpb25fKDApIHt9Ci0KLVN0cmVhbVN0YXRlIE1lbW9yeVN0
cmVhbUJhc2U6OkdldFN0YXRlKCkgY29uc3QgewotICByZXR1cm4gU1NfT1BFTjsKLX0KLQotU3Ry
ZWFtUmVzdWx0IE1lbW9yeVN0cmVhbUJhc2U6OlJlYWQodm9pZCogYnVmZmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ5dGVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc19yZWFkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50KiBlcnJvcikgewotICBpZiAoc2Vla19wb3NpdGlvbl8g
Pj0gZGF0YV9sZW5ndGhfKSB7Ci0gICAgcmV0dXJuIFNSX0VPUzsKLSAgfQotICBzaXplX3QgYXZh
aWxhYmxlID0gZGF0YV9sZW5ndGhfIC0gc2Vla19wb3NpdGlvbl87Ci0gIGlmIChieXRlcyA+IGF2
YWlsYWJsZSkgewotICAgIC8vIFJlYWQgcGFydGlhbCBidWZmZXIKLSAgICBieXRlcyA9IGF2YWls
YWJsZTsKLSAgfQotICBtZW1jcHkoYnVmZmVyLCAmYnVmZmVyX1tzZWVrX3Bvc2l0aW9uX10sIGJ5
dGVzKTsKLSAgc2Vla19wb3NpdGlvbl8gKz0gYnl0ZXM7Ci0gIGlmIChieXRlc19yZWFkKSB7Ci0g
ICAgKmJ5dGVzX3JlYWQgPSBieXRlczsKLSAgfQotICByZXR1cm4gU1JfU1VDQ0VTUzsKLX0KLQot
U3RyZWFtUmVzdWx0IE1lbW9yeVN0cmVhbUJhc2U6OldyaXRlKGNvbnN0IHZvaWQqIGJ1ZmZlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnl0ZXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc193cml0dGVuLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogZXJyb3IpIHsKLSAgc2l6
ZV90IGF2YWlsYWJsZSA9IGJ1ZmZlcl9sZW5ndGhfIC0gc2Vla19wb3NpdGlvbl87Ci0gIGlmICgw
ID09IGF2YWlsYWJsZSkgewotICAgIC8vIEluY3JlYXNlIGJ1ZmZlciBzaXplIHRvIHRoZSBsYXJn
ZXIgb2Y6Ci0gICAgLy8gYSkgbmV3IHBvc2l0aW9uIHJvdW5kZWQgdXAgdG8gbmV4dCAyNTYgYnl0
ZXMKLSAgICAvLyBiKSBkb3VibGUgdGhlIHByZXZpb3VzIGxlbmd0aAotICAgIHNpemVfdCBuZXdf
YnVmZmVyX2xlbmd0aCA9Ci0gICAgICAgIHN0ZDo6bWF4KCgoc2Vla19wb3NpdGlvbl8gKyBieXRl
cykgfCAweEZGKSArIDEsIGJ1ZmZlcl9sZW5ndGhfICogMik7Ci0gICAgU3RyZWFtUmVzdWx0IHJl
c3VsdCA9IERvUmVzZXJ2ZShuZXdfYnVmZmVyX2xlbmd0aCwgZXJyb3IpOwotICAgIGlmIChTUl9T
VUNDRVNTICE9IHJlc3VsdCkgewotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgUlRD
X0RDSEVDSyhidWZmZXJfbGVuZ3RoXyA+PSBuZXdfYnVmZmVyX2xlbmd0aCk7Ci0gICAgYXZhaWxh
YmxlID0gYnVmZmVyX2xlbmd0aF8gLSBzZWVrX3Bvc2l0aW9uXzsKLSAgfQotCi0gIGlmIChieXRl
cyA+IGF2YWlsYWJsZSkgewotICAgIGJ5dGVzID0gYXZhaWxhYmxlOwotICB9Ci0gIG1lbWNweSgm
YnVmZmVyX1tzZWVrX3Bvc2l0aW9uX10sIGJ1ZmZlciwgYnl0ZXMpOwotICBzZWVrX3Bvc2l0aW9u
XyArPSBieXRlczsKLSAgaWYgKGRhdGFfbGVuZ3RoXyA8IHNlZWtfcG9zaXRpb25fKSB7Ci0gICAg
ZGF0YV9sZW5ndGhfID0gc2Vla19wb3NpdGlvbl87Ci0gIH0KLSAgaWYgKGJ5dGVzX3dyaXR0ZW4p
IHsKLSAgICAqYnl0ZXNfd3JpdHRlbiA9IGJ5dGVzOwotICB9Ci0gIHJldHVybiBTUl9TVUNDRVNT
OwotfQotCi12b2lkIE1lbW9yeVN0cmVhbUJhc2U6OkNsb3NlKCkgewotICAvLyBub3RoaW5nIHRv
IGRvCi19Ci0KLWJvb2wgTWVtb3J5U3RyZWFtQmFzZTo6U2V0UG9zaXRpb24oc2l6ZV90IHBvc2l0
aW9uKSB7Ci0gIGlmIChwb3NpdGlvbiA+IGRhdGFfbGVuZ3RoXykKLSAgICByZXR1cm4gZmFsc2U7
Ci0gIHNlZWtfcG9zaXRpb25fID0gcG9zaXRpb247Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29s
IE1lbW9yeVN0cmVhbUJhc2U6OkdldFBvc2l0aW9uKHNpemVfdCogcG9zaXRpb24pIGNvbnN0IHsK
LSAgaWYgKHBvc2l0aW9uKQotICAgICpwb3NpdGlvbiA9IHNlZWtfcG9zaXRpb25fOwotICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBNZW1vcnlTdHJlYW1CYXNlOjpHZXRTaXplKHNpemVfdCogc2l6
ZSkgY29uc3QgewotICBpZiAoc2l6ZSkKLSAgICAqc2l6ZSA9IGRhdGFfbGVuZ3RoXzsKLSAgcmV0
dXJuIHRydWU7Ci19Ci0KLWJvb2wgTWVtb3J5U3RyZWFtQmFzZTo6UmVzZXJ2ZVNpemUoc2l6ZV90
IHNpemUpIHsKLSAgcmV0dXJuIChTUl9TVUNDRVNTID09IERvUmVzZXJ2ZShzaXplLCBudWxscHRy
KSk7Ci19Ci0KLVN0cmVhbVJlc3VsdCBNZW1vcnlTdHJlYW1CYXNlOjpEb1Jlc2VydmUoc2l6ZV90
IHNpemUsIGludCogZXJyb3IpIHsKLSAgcmV0dXJuIChidWZmZXJfbGVuZ3RoXyA+PSBzaXplKSA/
IFNSX1NVQ0NFU1MgOiBTUl9FT1M7Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotTWVt
b3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oKSB7fQotCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVh
bShjb25zdCBjaGFyKiBkYXRhKSB7Ci0gIFNldERhdGEoZGF0YSwgc3RybGVuKGRhdGEpKTsKLX0K
LQotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxl
bmd0aCkgewotICBTZXREYXRhKGRhdGEsIGxlbmd0aCk7Ci19Ci0KLU1lbW9yeVN0cmVhbTo6fk1l
bW9yeVN0cmVhbSgpIHsKLSAgZGVsZXRlW10gYnVmZmVyXzsKLX0KLQotdm9pZCBNZW1vcnlTdHJl
YW06OlNldERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgewotICBkYXRhX2xl
bmd0aF8gPSBidWZmZXJfbGVuZ3RoXyA9IGxlbmd0aDsKLSAgZGVsZXRlW10gYnVmZmVyXzsKLSAg
YnVmZmVyXyA9IG5ldyBjaGFyW2J1ZmZlcl9sZW5ndGhfXTsKLSAgbWVtY3B5KGJ1ZmZlcl8sIGRh
dGEsIGRhdGFfbGVuZ3RoXyk7Ci0gIHNlZWtfcG9zaXRpb25fID0gMDsKLX0KLQotU3RyZWFtUmVz
dWx0IE1lbW9yeVN0cmVhbTo6RG9SZXNlcnZlKHNpemVfdCBzaXplLCBpbnQqIGVycm9yKSB7Ci0g
IGlmIChidWZmZXJfbGVuZ3RoXyA+PSBzaXplKQotICAgIHJldHVybiBTUl9TVUNDRVNTOwotCi0g
IGlmIChjaGFyKiBuZXdfYnVmZmVyID0gbmV3IGNoYXJbc2l6ZV0pIHsKLSAgICBtZW1jcHkobmV3
X2J1ZmZlciwgYnVmZmVyXywgZGF0YV9sZW5ndGhfKTsKLSAgICBkZWxldGVbXSBidWZmZXJfOwot
ICAgIGJ1ZmZlcl8gPSBuZXdfYnVmZmVyOwotICAgIGJ1ZmZlcl9sZW5ndGhfID0gc2l6ZTsKLSAg
ICByZXR1cm4gU1JfU1VDQ0VTUzsKLSAgfQotCi0gIGlmIChlcnJvcikgewotICAgICplcnJvciA9
IEVOT01FTTsKLSAgfQotICByZXR1cm4gU1JfRVJST1I7Ci19Ci0KIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KIC8vIEZpZm9CdWZmZXIKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTc1OCw2OCAr
NTc5LDQgQEAgU3RyZWFtUmVzdWx0IEZpZm9CdWZmZXI6OldyaXRlT2Zmc2V0TG9ja2VkKGNvbnN0
IHZvaWQqIGJ1ZmZlciwKICAgcmV0dXJuIFNSX1NVQ0NFU1M7CiB9CiAKLQotLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwotCi1TdHJlYW1SZXN1bHQgRmxvdyhTdHJlYW1JbnRlcmZhY2UqIHNvdXJjZSwK
LSAgICAgICAgICAgICAgICAgIGNoYXIqIGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgIHNpemVf
dCBidWZmZXJfbGVuLAotICAgICAgICAgICAgICAgICAgU3RyZWFtSW50ZXJmYWNlKiBzaW5rLAot
ICAgICAgICAgICAgICAgICAgc2l6ZV90KiBkYXRhX2xlbiAvKiA9IG51bGxwdHIgKi8pIHsKLSAg
UlRDX0RDSEVDSyhidWZmZXJfbGVuID4gMCk7Ci0KLSAgU3RyZWFtUmVzdWx0IHJlc3VsdDsKLSAg
c2l6ZV90IGNvdW50LCByZWFkX3Bvcywgd3JpdGVfcG9zOwotICBpZiAoZGF0YV9sZW4pIHsKLSAg
ICByZWFkX3BvcyA9ICpkYXRhX2xlbjsKLSAgfSBlbHNlIHsKLSAgICByZWFkX3BvcyA9IDA7Ci0g
IH0KLQotICBib29sIGVuZF9vZl9zdHJlYW0gPSBmYWxzZTsKLSAgZG8gewotICAgIC8vIFJlYWQg
dW50aWwgYnVmZmVyIGlzIGZ1bGwsIGVuZCBvZiBzdHJlYW0sIG9yIGVycm9yCi0gICAgd2hpbGUg
KCFlbmRfb2Zfc3RyZWFtICYmIChyZWFkX3BvcyA8IGJ1ZmZlcl9sZW4pKSB7Ci0gICAgICByZXN1
bHQgPSBzb3VyY2UtPlJlYWQoYnVmZmVyICsgcmVhZF9wb3MsIGJ1ZmZlcl9sZW4gLSByZWFkX3Bv
cywgJmNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAg
aWYgKHJlc3VsdCA9PSBTUl9FT1MpIHsKLSAgICAgICAgZW5kX29mX3N0cmVhbSA9IHRydWU7Ci0g
ICAgICB9IGVsc2UgaWYgKHJlc3VsdCAhPSBTUl9TVUNDRVNTKSB7Ci0gICAgICAgIGlmIChkYXRh
X2xlbikgewotICAgICAgICAgICpkYXRhX2xlbiA9IHJlYWRfcG9zOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZWFkX3BvcyArPSBj
b3VudDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBXcml0ZSB1bnRpbCBidWZmZXIgaXMgZW1w
dHksIG9yIGVycm9yIChpbmNsdWRpbmcgZW5kIG9mIHN0cmVhbSkKLSAgICB3cml0ZV9wb3MgPSAw
OwotICAgIHdoaWxlICh3cml0ZV9wb3MgPCByZWFkX3BvcykgewotICAgICAgcmVzdWx0ID0gc2lu
ay0+V3JpdGUoYnVmZmVyICsgd3JpdGVfcG9zLCByZWFkX3BvcyAtIHdyaXRlX3BvcywgJmNvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICBpZiAocmVzdWx0
ICE9IFNSX1NVQ0NFU1MpIHsKLSAgICAgICAgaWYgKGRhdGFfbGVuKSB7Ci0gICAgICAgICAgKmRh
dGFfbGVuID0gcmVhZF9wb3MgLSB3cml0ZV9wb3M7Ci0gICAgICAgICAgaWYgKHdyaXRlX3BvcyA+
IDApIHsKLSAgICAgICAgICAgIG1lbW1vdmUoYnVmZmVyLCBidWZmZXIgKyB3cml0ZV9wb3MsICpk
YXRhX2xlbik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgICB9Ci0gICAgICB3cml0ZV9wb3MgKz0gY291bnQ7Ci0gICAgfQotCi0gICAgcmVhZF9w
b3MgPSAwOwotICB9IHdoaWxlICghZW5kX29mX3N0cmVhbSk7Ci0KLSAgaWYgKGRhdGFfbGVuKSB7
Ci0gICAgKmRhdGFfbGVuID0gMDsKLSAgfQotICByZXR1cm4gU1JfU1VDQ0VTUzsKLX0KLQotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotCiB9ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJlYW0u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0
cmVhbS5oCmluZGV4IDgxYzVlNDE4MDFhNWJhYWQ2NTFiNDJiNWRhZGQ4NDUzYjUxMjMzNzguLjQz
ZTdmNThiYzdjMDk2MTM3MWNhOWNlMWVkODY1YzAwYmFjMGJlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmVhbS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0
cmVhbS5oCkBAIC0xOCw3ICsxOCw2IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NyaXRpY2Fsc2VjdGlvbi5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3Nh
Z2VxdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xv
dC5oIgpAQCAtMTA4LDU5ICsxMDcsNiBAQCBjbGFzcyBTdHJlYW1JbnRlcmZhY2UgOiBwdWJsaWMg
TWVzc2FnZUhhbmRsZXIgewogICAvLyBMaWtlIHRoZSBhZm9yZW1lbnRpb25lZCBtZXRob2QsIGJ1
dCBwb3N0cyB0byB0aGUgY3VycmVudCB0aHJlYWQuCiAgIHZvaWQgUG9zdEV2ZW50KGludCBldmVu
dHMsIGludCBlcnIpOwogCi0gIC8vCi0gIC8vIE9QVElPTkFMIE9QRVJBVElPTlMKLSAgLy8KLSAg
Ly8gTm90IGFsbCBpbXBsZW1lbnRhdGlvbnMgd2lsbCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgb3Bl
cmF0aW9ucy4gIEluIGdlbmVyYWwsCi0gIC8vIGEgc3RyZWFtIHdpbGwgb25seSBzdXBwb3J0IGFu
IG9wZXJhdGlvbiBpZiBpdCByZWFzb25hYmx5IGVmZmljaWVudCB0byBkbwotICAvLyBzby4gIEZv
ciBleGFtcGxlLCB3aGlsZSBhIHNvY2tldCBjb3VsZCBidWZmZXIgaW5jb21pbmcgZGF0YSB0byBz
dXBwb3J0Ci0gIC8vIHNlZWtpbmcsIGl0IHdpbGwgbm90IGRvIHNvLiAgSW5zdGVhZCwgYSBidWZm
ZXJpbmcgc3RyZWFtIGFkYXB0ZXIgc2hvdWxkCi0gIC8vIGJlIHVzZWQuCi0gIC8vCi0gIC8vIEV2
ZW4gdGhvdWdoIHNldmVyYWwgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgcmVsYXRlZCwgeW91IHNo
b3VsZAotICAvLyBhbHdheXMgdXNlIHdoaWNoZXZlciBvcGVyYXRpb24gaXMgbW9zdCByZWxldmFu
dC4KLSAgLy8KLSAgLy8gVGhlIGZvbGxvd2luZyBmb3VyIG1ldGhvZHMgYXJlIHVzZWQgdG8gYXZv
aWQgY29weWluZyBkYXRhIG11bHRpcGxlIHRpbWVzLgotCi0gIC8vIEdldFJlYWREYXRhIHJldHVy
bnMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIHdoaWNoIGlzIG93bmVkIGJ5IHRoZSBzdHJlYW0uCi0g
IC8vIFRoZSBidWZmZXIgY29udGFpbnMgZGF0YV9sZW4gYnl0ZXMuICBudWxsIGlzIHJldHVybmVk
IGlmIG5vIGRhdGEgaXMKLSAgLy8gYXZhaWxhYmxlLCBvciBpZiB0aGUgbWV0aG9kIGZhaWxzLiAg
SWYgdGhlIGNhbGxlciBwcm9jZXNzZXMgdGhlIGRhdGEsIGl0Ci0gIC8vIG11c3QgY2FsbCBDb25z
dW1lUmVhZERhdGEgd2l0aCB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlZCBieXRlcy4gIEdldFJlYWRE
YXRhCi0gIC8vIGRvZXMgbm90IHJlcXVpcmUgYSBtYXRjaGluZyBjYWxsIHRvIENvbnN1bWVSZWFk
RGF0YSBpZiB0aGUgZGF0YSBpcyBub3QKLSAgLy8gcHJvY2Vzc2VkLiAgUmVhZCBhbmQgQ29uc3Vt
ZVJlYWREYXRhIGludmFsaWRhdGUgdGhlIGJ1ZmZlciByZXR1cm5lZCBieQotICAvLyBHZXRSZWFk
RGF0YS4KLSAgdmlydHVhbCBjb25zdCB2b2lkKiBHZXRSZWFkRGF0YShzaXplX3QqIGRhdGFfbGVu
KTsKLSAgdmlydHVhbCB2b2lkIENvbnN1bWVSZWFkRGF0YShzaXplX3QgdXNlZCkge30KLQotICAv
LyBHZXRXcml0ZUJ1ZmZlciByZXR1cm5zIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB3aGljaCBpcyBv
d25lZCBieSB0aGUgc3RyZWFtLgotICAvLyBUaGUgYnVmZmVyIGhhcyBhIGNhcGFjaXR5IG9mIGJ1
Zl9sZW4gYnl0ZXMuICBudWxsIGlzIHJldHVybmVkIGlmIHRoZXJlIGlzCi0gIC8vIG5vIGJ1ZmZl
ciBhdmFpbGFibGUsIG9yIGlmIHRoZSBtZXRob2QgZmFpbHMuICBUaGUgY2FsbCBtYXkgd3JpdGUg
ZGF0YSB0bwotICAvLyB0aGUgYnVmZmVyLCBhbmQgdGhlbiBjYWxsIENvbnN1bWVXcml0ZUJ1ZmZl
ciB3aXRoIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgLy8gd3JpdHRlbi4gIEdldFdyaXRlQnVmZmVy
IGRvZXMgbm90IHJlcXVpcmUgYSBtYXRjaGluZyBjYWxsIHRvCi0gIC8vIENvbnN1bWVXcml0ZURh
dGEgaWYgbm8gZGF0YSBpcyB3cml0dGVuLiAgV3JpdGUsIEZvcmNlV3JpdGUsIGFuZAotICAvLyBD
b25zdW1lV3JpdGVEYXRhIGludmFsaWRhdGUgdGhlIGJ1ZmZlciByZXR1cm5lZCBieSBHZXRXcml0
ZUJ1ZmZlci4KLSAgLy8gVE9ETzogQWxsb3cgdGhlIGNhbGxlciB0byBzcGVjaWZ5IGEgbWluaW11
bSBidWZmZXIgc2l6ZS4gIElmIHRoZSBzcGVjaWZpZWQKLSAgLy8gYW1vdW50IG9mIGJ1ZmZlciBp
cyBub3QgeWV0IGF2YWlsYWJsZSwgcmV0dXJuIG51bGwgYW5kIFNpZ25hbCBTRV9XUklURQotICAv
LyB3aGVuIGl0IGlzIGF2YWlsYWJsZS4gIElmIHRoZSByZXF1ZXN0ZWQgYW1vdW50IGlzIHRvbyBs
YXJnZSwgcmV0dXJuIGFuCi0gIC8vIGVycm9yLgotICB2aXJ0dWFsIHZvaWQqIEdldFdyaXRlQnVm
ZmVyKHNpemVfdCogYnVmX2xlbik7Ci0gIHZpcnR1YWwgdm9pZCBDb25zdW1lV3JpdGVCdWZmZXIo
c2l6ZV90IHVzZWQpIHt9Ci0KLSAgLy8gV3JpdGUgZGF0YV9sZW4gYnl0ZXMgZm91bmQgaW4gZGF0
YSwgY2lyY3VtdmVudGluZyBhbnkgdGhyb3R0bGluZyB3aGljaAotICAvLyB3b3VsZCBjb3VsZCBj
YXVzZSBTUl9CTE9DSyB0byBiZSByZXR1cm5lZC4gIFJldHVybnMgdHJ1ZSBpZiBhbGwgdGhlIGRh
dGEKLSAgLy8gd2FzIHdyaXR0ZW4uICBPdGhlcndpc2UsIHRoZSBtZXRob2QgaXMgdW5zdXBwb3J0
ZWQsIG9yIGFuIHVucmVjb3ZlcmFibGUKLSAgLy8gZXJyb3Igb2NjdXJyZWQsIGFuZCB0aGUgZXJy
b3IgdmFsdWUgaXMgc2V0LiAgVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHVzZWQKLSAgLy8gc3Bhcmlu
Z2x5IHRvIHdyaXRlIGNyaXRpY2FsIGRhdGEgd2hpY2ggc2hvdWxkIG5vdCBiZSB0aHJvdHRsZWQu
ICBBIHN0cmVhbQotICAvLyB3aGljaCBjYW5ub3QgY2lyY3VtdmVudCBpdHMgYmxvY2tpbmcgY29u
c3RyYWludHMgc2hvdWxkIG5vdCBpbXBsZW1lbnQgdGhpcwotICAvLyBtZXRob2QuCi0gIC8vIE5P
VEU6IFRoaXMgaW50ZXJmYWNlIGlzIGJlaW5nIGNvbnNpZGVyZWQgZXhwZXJpbWVudGFsbHkgYXQg
dGhlIG1vbWVudC4gIEl0Ci0gIC8vIHdvdWxkIGJlIHVzZWQgYnkgSlVEUCBhbmQgQmFuZHdpZHRo
U3RyZWFtIGFzIGEgd2F5IHRvIGNpcmN1bXZlbnQgY2VydGFpbgotICAvLyBzb2Z0IGxpbWl0cyBp
biB3cml0aW5nLgotICAvLyB2aXJ0dWFsIGJvb2wgRm9yY2VXcml0ZShjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3QgZGF0YV9sZW4sIGludCogZXJyb3IpIHsKLSAgLy8gIGlmIChlcnJvcikgKmVycm9y
ID0gLTE7Ci0gIC8vICByZXR1cm4gZmFsc2U7Ci0gIC8vfQotCiAgIC8vIFNlZWsgdG8gYSBieXRl
IG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVhbS4gIFJldHVybnMgZmFsc2Ug
aWYKICAgLy8gdGhlIHN0cmVhbSBkb2VzIG5vdCBzdXBwb3J0IHNlZWtpbmcsIG9yIGNhbm5vdCBz
ZWVrIHRvIHRoZSBzcGVjaWZpZWQKICAgLy8gcG9zaXRpb24uCkBAIC0xNzQsMTAgKzEyMCw2IEBA
IGNsYXNzIFN0cmVhbUludGVyZmFjZSA6IHB1YmxpYyBNZXNzYWdlSGFuZGxlciB7CiAgIC8vIGlz
IG5vdCBrbm93bi4KICAgdmlydHVhbCBib29sIEdldFNpemUoc2l6ZV90KiBzaXplKSBjb25zdDsK
IAotICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBXcml0ZSgpLWFibGUgYnl0ZXMgcmVtYWluaW5n
IGJlZm9yZSBlbmQtb2Ytc3RyZWFtLgotICAvLyBSZXR1cm5zIGZhbHNlIGlmIG5vdCBrbm93bi4K
LSAgdmlydHVhbCBib29sIEdldFdyaXRlUmVtYWluaW5nKHNpemVfdCogc2l6ZSkgY29uc3Q7Ci0K
ICAgLy8gUmV0dXJuIHRydWUgaWYgZmx1c2ggaXMgc3VjY2Vzc2Z1bC4KICAgdmlydHVhbCBib29s
IEZsdXNoKCk7CiAKQEAgLTIxNCwxMiArMTU2LDYgQEAgY2xhc3MgU3RyZWFtSW50ZXJmYWNlIDog
cHVibGljIE1lc3NhZ2VIYW5kbGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBy
ZWFkLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKTsKIAotICAvLyBSZWFkTGlu
ZSBpcyBhIGhlbHBlciBmdW5jdGlvbiB3aGljaCByZXBlYXRlZGx5IGNhbGxzIFJlYWQgdW50aWwg
aXQgaGl0cwotICAvLyB0aGUgZW5kLW9mLWxpbmUgY2hhcmFjdGVyLCBvciBzb21ldGhpbmcgb3Ro
ZXIgdGhhbiBTUl9TVUNDRVNTLgotICAvLyBUT0RPOiB0aGlzIGlzIHRvbyBpbmVmZmljaWVudCB0
byBrZWVwIGhlcmUuICBCcmVhayB0aGlzIG91dCBpbnRvIGEgYnVmZmVyZWQKLSAgLy8gcmVhZGxp
bmUgb2JqZWN0IG9yIGFkYXB0ZXIKLSAgU3RyZWFtUmVzdWx0IFJlYWRMaW5lKHN0ZDo6c3RyaW5n
KiBsaW5lKTsKLQogIHByb3RlY3RlZDoKICAgU3RyZWFtSW50ZXJmYWNlKCk7CiAKQEAgLTI1NSwz
NyArMTkxLDkgQEAgY2xhc3MgU3RyZWFtQWRhcHRlckludGVyZmFjZSA6IHB1YmxpYyBTdHJlYW1J
bnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVycmlkZTsKICAg
dm9pZCBDbG9zZSgpIG92ZXJyaWRlOwogCi0gIC8vIE9wdGlvbmFsIFN0cmVhbSBJbnRlcmZhY2UK
LSAgLyogIE5vdGU6IE1hbnkgc3RyZWFtIGFkYXB0ZXJzIHdlcmUgaW1wbGVtZW50ZWQgcHJpb3Ig
dG8gdGhpcyBSZWFkL1dyaXRlCi0gICAgICBpbnRlcmZhY2UuICBUaGVyZWZvcmUsIGEgc2ltcGxl
IHBhc3MgdGhyb3VnaCBvZiBkYXRhIGluIHRob3NlIGNhc2VzIG1heQotICAgICAgYmUgYnJva2Vu
LiAgQXQgYSBsYXRlciB0aW1lLCB3ZSBzaG91bGQgZG8gYSBvbmNlLW92ZXIgcGFzcyBvZiBhbGwK
LSAgICAgIGFkYXB0ZXJzLCBhbmQgbWFrZSB0aGVtIGNvbXBsaWFudCB3aXRoIHRoZXNlIGludGVy
ZmFjZXMsIGFmdGVyIHdoaWNoIHRoaXMKLSAgICAgIGNvZGUgY2FuIGJlIHVuY29tbWVudGVkLgot
ICB2aXJ0dWFsIGNvbnN0IHZvaWQqIEdldFJlYWREYXRhKHNpemVfdCogZGF0YV9sZW4pIHsKLSAg
ICByZXR1cm4gc3RyZWFtXy0+R2V0UmVhZERhdGEoZGF0YV9sZW4pOwotICB9Ci0gIHZpcnR1YWwg
dm9pZCBDb25zdW1lUmVhZERhdGEoc2l6ZV90IHVzZWQpIHsKLSAgICBzdHJlYW1fLT5Db25zdW1l
UmVhZERhdGEodXNlZCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQqIEdldFdyaXRlQnVmZmVyKHNp
emVfdCogYnVmX2xlbikgewotICAgIHJldHVybiBzdHJlYW1fLT5HZXRXcml0ZUJ1ZmZlcihidWZf
bGVuKTsKLSAgfQotICB2aXJ0dWFsIHZvaWQgQ29uc3VtZVdyaXRlQnVmZmVyKHNpemVfdCB1c2Vk
KSB7Ci0gICAgc3RyZWFtXy0+Q29uc3VtZVdyaXRlQnVmZmVyKHVzZWQpOwotICB9Ci0gICovCi0K
LSAgLyogIE5vdGU6IFRoaXMgaW50ZXJmYWNlIGlzIGN1cnJlbnRseSB1bmRlcmdvaW5nIGV2YWx1
YXRpb24uCi0gIHZpcnR1YWwgYm9vbCBGb3JjZVdyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBkYXRhX2xlbiwgaW50KiBlcnJvcikgewotICAgIHJldHVybiBzdHJlYW1fLT5Gb3JjZVdyaXRl
KGRhdGEsIGRhdGFfbGVuLCBlcnJvcik7Ci0gIH0KLSAgKi8KLQogICBib29sIFNldFBvc2l0aW9u
KHNpemVfdCBwb3NpdGlvbikgb3ZlcnJpZGU7CiAgIGJvb2wgR2V0UG9zaXRpb24oc2l6ZV90KiBw
b3NpdGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgIGJvb2wgR2V0U2l6ZShzaXplX3QqIHNpemUpIGNv
bnN0IG92ZXJyaWRlOwotICBib29sIEdldFdyaXRlUmVtYWluaW5nKHNpemVfdCogc2l6ZSkgY29u
c3Qgb3ZlcnJpZGU7CiAgIGJvb2wgUmVzZXJ2ZVNpemUoc2l6ZV90IHNpemUpIG92ZXJyaWRlOwog
ICBib29sIEZsdXNoKCkgb3ZlcnJpZGU7CiAKQEAgLTM1Myw2OCArMjYxLDExIEBAIGNsYXNzIEZp
bGVTdHJlYW0gOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKICAgUlRDX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihGaWxlU3RyZWFtKTsKIH07CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8v
IE1lbW9yeVN0cmVhbSBpcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFN0cmVhbUludGVy
ZmFjZSBvdmVyIGluLW1lbW9yeQotLy8gZGF0YS4gIERhdGEgaXMgcmVhZCBhbmQgd3JpdHRlbiBh
dCB0aGUgY3VycmVudCBzZWVrIHBvc2l0aW9uLiAgUmVhZHMgcmV0dXJuCi0vLyBlbmQtb2Ytc3Ry
ZWFtIHdoZW4gdGhleSByZWFjaCB0aGUgZW5kIG9mIGRhdGEuICBXcml0ZXMgYWN0dWFsbHkgZXh0
ZW5kIHRoZQotLy8gZW5kIG9mIGRhdGEgbWFyay4KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQot
Y2xhc3MgTWVtb3J5U3RyZWFtQmFzZSA6IHB1YmxpYyBTdHJlYW1JbnRlcmZhY2UgewotIHB1Ymxp
YzoKLSAgU3RyZWFtU3RhdGUgR2V0U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgU3RyZWFtUmVz
dWx0IFJlYWQodm9pZCogYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnl0ZXMs
Ci0gICAgICAgICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfcmVhZCwKLSAgICAgICAgICAgICAg
ICAgICAgaW50KiBlcnJvcikgb3ZlcnJpZGU7Ci0gIFN0cmVhbVJlc3VsdCBXcml0ZShjb25zdCB2
b2lkKiBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnl0ZXMsCi0gICAgICAg
ICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVzX3dyaXR0ZW4sCi0gICAgICAgICAgICAgICAgICAg
ICBpbnQqIGVycm9yKSBvdmVycmlkZTsKLSAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlOwotICBib29s
IFNldFBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgb3ZlcnJpZGU7Ci0gIGJvb2wgR2V0UG9zaXRp
b24oc2l6ZV90KiBwb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gIGJvb2wgR2V0U2l6ZShzaXpl
X3QqIHNpemUpIGNvbnN0IG92ZXJyaWRlOwotICBib29sIFJlc2VydmVTaXplKHNpemVfdCBzaXpl
KSBvdmVycmlkZTsKLQotICBjaGFyKiBHZXRCdWZmZXIoKSB7IHJldHVybiBidWZmZXJfOyB9Ci0g
IGNvbnN0IGNoYXIqIEdldEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZlcl87IH0KLQotIHBy
b3RlY3RlZDoKLSAgTWVtb3J5U3RyZWFtQmFzZSgpOwotCi0gIHZpcnR1YWwgU3RyZWFtUmVzdWx0
IERvUmVzZXJ2ZShzaXplX3Qgc2l6ZSwgaW50KiBlcnJvcik7Ci0KLSAgLy8gSW52YXJpYW50OiAw
IDw9IHNlZWtfcG9zaXRpb24gPD0gZGF0YV9sZW5ndGhfIDw9IGJ1ZmZlcl9sZW5ndGhfCi0gIGNo
YXIqIGJ1ZmZlcl87Ci0gIHNpemVfdCBidWZmZXJfbGVuZ3RoXzsKLSAgc2l6ZV90IGRhdGFfbGVu
Z3RoXzsKLSAgc2l6ZV90IHNlZWtfcG9zaXRpb25fOwotCi0gcHJpdmF0ZToKLSAgUlRDX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihNZW1vcnlTdHJlYW1CYXNlKTsKLX07Ci0KLS8vIE1lbW9yeVN0
cmVhbSBkeW5hbWljYWxseSByZXNpemVzIHRvIGFjY29tb2RhdGUgd3JpdHRlbiBkYXRhLgotCi1j
bGFzcyBNZW1vcnlTdHJlYW0gOiBwdWJsaWMgTWVtb3J5U3RyZWFtQmFzZSB7Ci0gcHVibGljOgot
ICBNZW1vcnlTdHJlYW0oKTsKLSAgZXhwbGljaXQgTWVtb3J5U3RyZWFtKGNvbnN0IGNoYXIqIGRh
dGEpOyAgLy8gQ2FsbHMgU2V0RGF0YShkYXRhLCBzdHJsZW4oZGF0YSkpCi0gIE1lbW9yeVN0cmVh
bShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsgIC8vIENhbGxzIFNldERhdGEoZGF0
YSwgbGVuZ3RoKQotICB+TWVtb3J5U3RyZWFtKCkgb3ZlcnJpZGU7Ci0KLSAgdm9pZCBTZXREYXRh
KGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwotCi0gcHJvdGVjdGVkOgotICBTdHJl
YW1SZXN1bHQgRG9SZXNlcnZlKHNpemVfdCBzaXplLCBpbnQqIGVycm9yKSBvdmVycmlkZTsKLX07
Ci0KIC8vIEZpZm9CdWZmZXIgYWxsb3dzIGZvciBlZmZpY2llbnQsIHRocmVhZC1zYWZlIGJ1ZmZl
cmluZyBvZiBkYXRhIGJldHdlZW4KIC8vIHdyaXRlciBhbmQgcmVhZGVyLiBBcyB0aGUgZGF0YSBj
YW4gd3JhcCBhcm91bmQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLAogLy8gTWVtb3J5U3RyZWFtQmFz
ZSBjYW4ndCBoZWxwIHVzIGhlcmUuCiAKLWNsYXNzIEZpZm9CdWZmZXIgOiBwdWJsaWMgU3RyZWFt
SW50ZXJmYWNlIHsKK2NsYXNzIEZpZm9CdWZmZXIgZmluYWwgOiBwdWJsaWMgU3RyZWFtSW50ZXJm
YWNlIHsKICBwdWJsaWM6CiAgIC8vIENyZWF0ZXMgYSBGSUZPIGJ1ZmZlciB3aXRoIHRoZSBzcGVj
aWZpZWQgY2FwYWNpdHkuCiAgIGV4cGxpY2l0IEZpZm9CdWZmZXIoc2l6ZV90IGxlbmd0aCk7CkBA
IC00NTUsMTEgKzMwNiwyOCBAQCBjbGFzcyBGaWZvQnVmZmVyIDogcHVibGljIFN0cmVhbUludGVy
ZmFjZSB7CiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVzX3dyaXR0ZW4sCiAgICAg
ICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVycmlkZTsKICAgdm9pZCBDbG9zZSgpIG92
ZXJyaWRlOwotICBjb25zdCB2b2lkKiBHZXRSZWFkRGF0YShzaXplX3QqIGRhdGFfbGVuKSBvdmVy
cmlkZTsKLSAgdm9pZCBDb25zdW1lUmVhZERhdGEoc2l6ZV90IHVzZWQpIG92ZXJyaWRlOwotICB2
b2lkKiBHZXRXcml0ZUJ1ZmZlcihzaXplX3QqIGJ1Zl9sZW4pIG92ZXJyaWRlOwotICB2b2lkIENv
bnN1bWVXcml0ZUJ1ZmZlcihzaXplX3QgdXNlZCkgb3ZlcnJpZGU7Ci0gIGJvb2wgR2V0V3JpdGVS
ZW1haW5pbmcoc2l6ZV90KiBzaXplKSBjb25zdCBvdmVycmlkZTsKKyAgLy8gR2V0UmVhZERhdGEg
cmV0dXJucyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgd2hpY2ggaXMgb3duZWQgYnkgdGhlIHN0cmVh
bS4KKyAgLy8gVGhlIGJ1ZmZlciBjb250YWlucyBkYXRhX2xlbiBieXRlcy4gIG51bGwgaXMgcmV0
dXJuZWQgaWYgbm8gZGF0YSBpcworICAvLyBhdmFpbGFibGUsIG9yIGlmIHRoZSBtZXRob2QgZmFp
bHMuICBJZiB0aGUgY2FsbGVyIHByb2Nlc3NlcyB0aGUgZGF0YSwgaXQKKyAgLy8gbXVzdCBjYWxs
IENvbnN1bWVSZWFkRGF0YSB3aXRoIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VkIGJ5dGVzLiAgR2V0
UmVhZERhdGEKKyAgLy8gZG9lcyBub3QgcmVxdWlyZSBhIG1hdGNoaW5nIGNhbGwgdG8gQ29uc3Vt
ZVJlYWREYXRhIGlmIHRoZSBkYXRhIGlzIG5vdAorICAvLyBwcm9jZXNzZWQuICBSZWFkIGFuZCBD
b25zdW1lUmVhZERhdGEgaW52YWxpZGF0ZSB0aGUgYnVmZmVyIHJldHVybmVkIGJ5CisgIC8vIEdl
dFJlYWREYXRhLgorICBjb25zdCB2b2lkKiBHZXRSZWFkRGF0YShzaXplX3QqIGRhdGFfbGVuKTsK
KyAgdm9pZCBDb25zdW1lUmVhZERhdGEoc2l6ZV90IHVzZWQpOworICAvLyBHZXRXcml0ZUJ1ZmZl
ciByZXR1cm5zIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB3aGljaCBpcyBvd25lZCBieSB0aGUgc3Ry
ZWFtLgorICAvLyBUaGUgYnVmZmVyIGhhcyBhIGNhcGFjaXR5IG9mIGJ1Zl9sZW4gYnl0ZXMuICBu
dWxsIGlzIHJldHVybmVkIGlmIHRoZXJlIGlzCisgIC8vIG5vIGJ1ZmZlciBhdmFpbGFibGUsIG9y
IGlmIHRoZSBtZXRob2QgZmFpbHMuICBUaGUgY2FsbCBtYXkgd3JpdGUgZGF0YSB0bworICAvLyB0
aGUgYnVmZmVyLCBhbmQgdGhlbiBjYWxsIENvbnN1bWVXcml0ZUJ1ZmZlciB3aXRoIHRoZSBudW1i
ZXIgb2YgYnl0ZXMKKyAgLy8gd3JpdHRlbi4gIEdldFdyaXRlQnVmZmVyIGRvZXMgbm90IHJlcXVp
cmUgYSBtYXRjaGluZyBjYWxsIHRvCisgIC8vIENvbnN1bWVXcml0ZURhdGEgaWYgbm8gZGF0YSBp
cyB3cml0dGVuLiAgV3JpdGUgYW5kCisgIC8vIENvbnN1bWVXcml0ZURhdGEgaW52YWxpZGF0ZSB0
aGUgYnVmZmVyIHJldHVybmVkIGJ5IEdldFdyaXRlQnVmZmVyLgorICB2b2lkKiBHZXRXcml0ZUJ1
ZmZlcihzaXplX3QqIGJ1Zl9sZW4pOworICB2b2lkIENvbnN1bWVXcml0ZUJ1ZmZlcihzaXplX3Qg
dXNlZCk7CisKKyAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgV3JpdGUoKS1hYmxlIGJ5dGVzIHJl
bWFpbmluZyBiZWZvcmUgZW5kLW9mLXN0cmVhbS4KKyAgLy8gUmV0dXJucyBmYWxzZSBpZiBub3Qg
a25vd24uCisgIGJvb2wgR2V0V3JpdGVSZW1haW5pbmcoc2l6ZV90KiBzaXplKSBjb25zdDsKIAog
IHByaXZhdGU6CiAgIC8vIEhlbHBlciBtZXRob2QgdGhhdCBpbXBsZW1lbnRzIFJlYWRPZmZzZXQu
IENhbGxlciBtdXN0IGFjcXVpcmUgYSBsb2NrCkBAIC00OTUsMjUgKzM2Myw2IEBAIGNsYXNzIEZp
Zm9CdWZmZXIgOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKICAgUlRDX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihGaWZvQnVmZmVyKTsKIH07CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQot
Ly8gRmxvdyBhdHRlbXB0cyB0byBtb3ZlIGJ5dGVzIGZyb20gc291cmNlIHRvIHNpbmsgdmlhIGJ1
ZmZlciBvZiBzaXplCi0vLyBidWZmZXJfbGVuLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgU1JfU1VD
Q0VTUyB3aGVuIHNvdXJjZSByZWFjaGVzCi0vLyBlbmQtb2Ytc3RyZWFtIChyZXR1cm5zIFNSX0VP
UyksIGFuZCBhbGwgdGhlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiBzdWNjZXNzZnVsCi0vLyB0byBz
aW5rLiAgQWx0ZXJuYXRlbHksIGlmIHNvdXJjZSByZXR1cm5zIFNSX0JMT0NLIG9yIFNSX0VSUk9S
LCBvciBpZiBzaW5rCi0vLyByZXR1cm5zIFNSX0JMT0NLLCBTUl9FUlJPUiwgb3IgU1JfRU9TLCB0
aGVuIHRoZSBmdW5jdGlvbiBpbW1lZGlhdGVseSByZXR1cm5zCi0vLyB3aXRoIHRoZSB1bmV4cGVj
dGVkIFN0cmVhbVJlc3VsdCB2YWx1ZS4KLS8vIGRhdGFfbGVuIGlzIHRoZSBsZW5ndGggb2YgdGhl
IHZhbGlkIGRhdGEgaW4gYnVmZmVyLiBpbiBjYXNlIG9mIGVycm9yCi0vLyB0aGlzIGlzIHRoZSBk
YXRhIHRoYXQgcmVhZCBmcm9tIHNvdXJjZSBidXQgY2FuJ3QgbW92ZSB0byBkZXN0aW5hdGlvbi4K
LS8vIGFzIGEgcGFzcyBpbiBwYXJhbWV0ZXIsIGl0IGluZGljYXRlcyBkYXRhIGluIGJ1ZmZlciB0
aGF0IHNob3VsZCBtb3ZlIHRvIHNpbmsKLVN0cmVhbVJlc3VsdCBGbG93KFN0cmVhbUludGVyZmFj
ZSogc291cmNlLAotICAgICAgICAgICAgICAgICAgY2hhciogYnVmZmVyLAotICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGJ1ZmZlcl9sZW4sCi0gICAgICAgICAgICAgICAgICBTdHJlYW1JbnRlcmZh
Y2UqIHNpbmssCi0gICAgICAgICAgICAgICAgICBzaXplX3QqIGRhdGFfbGVuID0gbnVsbHB0cik7
Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQogfSAgLy8gbmFtZXNwYWNlIHJ0YwogCiAjZW5k
aWYgIC8vIFJUQ19CQVNFX1NUUkVBTV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyZWFtX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyZWFtX3Vu
aXR0ZXN0LmNjCmluZGV4IDYxNjc4M2NiNGRjNzYwMTFmNjA3OTNhMDZhMjhiMDhmZjc5ODMyMGUu
LjJjYTI1MjZjM2NhYWVhNzBmNDU0M2MwOTg2MmI0YmJjZmFmNGNkYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmVhbV91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zdHJlYW1fdW5pdHRlc3QuY2MKQEAgLTEwNSw1NiArMTA1LDUyIEBAIFRFU1Qo
Rmlmb0J1ZmZlclRlc3QsIFRlc3RBbGwpIHsKICAgY29uc3Qgdm9pZCogcTsKICAgc2l6ZV90IGJ5
dGVzOwogICBGaWZvQnVmZmVyIGJ1ZihrU2l6ZSk7Ci0gIFN0cmVhbUludGVyZmFjZSogc3RyZWFt
ID0gJmJ1ZjsKIAogICAvLyBUZXN0IGFzc3VtcHRpb25zIGFib3V0IGJhc2Ugc3RhdGUKLSAgRVhQ
RUNUX0VRKFNTX09QRU4sIHN0cmVhbS0+R2V0U3RhdGUoKSk7Ci0gIEVYUEVDVF9FUShTUl9CTE9D
Sywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwotICBFWFBFQ1Rf
VFJVRShudWxscHRyICE9IHN0cmVhbS0+R2V0UmVhZERhdGEoJmJ5dGVzKSk7Ci0gIEVYUEVDVF9F
USgoc2l6ZV90KTAsIGJ5dGVzKTsKLSAgc3RyZWFtLT5Db25zdW1lUmVhZERhdGEoMCk7Ci0gIEVY
UEVDVF9UUlVFKG51bGxwdHIgIT0gc3RyZWFtLT5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpKTsKKyAg
RVhQRUNUX0VRKFNTX09QRU4sIGJ1Zi5HZXRTdGF0ZSgpKTsKKyAgRVhQRUNUX0VRKFNSX0JMT0NL
LCBidWYuUmVhZChvdXQsIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNUX1RSVUUo
bnVsbHB0ciAhPSBidWYuR2V0V3JpdGVCdWZmZXIoJmJ5dGVzKSk7CiAgIEVYUEVDVF9FUShrU2l6
ZSwgYnl0ZXMpOwotICBzdHJlYW0tPkNvbnN1bWVXcml0ZUJ1ZmZlcigwKTsKKyAgYnVmLkNvbnN1
bWVXcml0ZUJ1ZmZlcigwKTsKIAogICAvLyBUcnkgYSBmdWxsIHdyaXRlCi0gIEVYUEVDVF9FUShT
Ul9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7Cisg
IEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxw
dHIpKTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAKICAgLy8gVHJ5IGEgd3JpdGUgdGhh
dCBzaG91bGQgYmxvY2sKLSAgRVhQRUNUX0VRKFNSX0JMT0NLLCBzdHJlYW0tPldyaXRlKGluLCBr
U2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9CTE9DSywgYnVmLldyaXRl
KGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAKICAgLy8gVHJ5IGEgZnVsbCByZWFkCi0g
IEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSwgJmJ5dGVzLCBu
dWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplLCAm
Ynl0ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAgIEVYUEVDVF9F
USgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUpKTsKIAogICAvLyBUcnkgYSByZWFkIHRoYXQgc2hv
dWxkIGJsb2NrCi0gIEVYUEVDVF9FUShTUl9CTE9DSywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUs
ICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIGJ1Zi5SZWFkKG91dCwg
a1NpemUsICZieXRlcywgbnVsbHB0cikpOwogCiAgIC8vIFRyeSBhIHRvby1iaWcgd3JpdGUKLSAg
RVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplICogMiwgJmJ5dGVz
LCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXpl
ICogMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShieXRlcywga1NpemUpOwogCiAg
IC8vIFRyeSBhIHRvby1iaWcgcmVhZAotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5S
ZWFkKG91dCwga1NpemUgKiAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNUX0VRKFNSX1NV
Q0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUgKiAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKICAgRVhQ
RUNUX0VRKGtTaXplLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1Np
emUpKTsKIAogICAvLyBUcnkgc29tZSBzbWFsbCB3cml0ZXMgYW5kIHJlYWRzCi0gIEVYUEVDVF9F
UShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0
cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSAvIDIsICZi
eXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7Ci0gIEVYUEVD
VF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAvIDIsICZieXRlcywgbnVs
bHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6ZSAvIDIs
ICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7CiAgIEVY
UEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUgLyAyKSk7Ci0gIEVYUEVDVF9FUShTUl9T
VUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwor
ICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywg
bnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7Ci0gIEVYUEVDVF9FUShT
Ul9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikp
OworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRl
cywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7Ci0gIEVYUEVDVF9F
UShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0
cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6ZSAvIDIsICZi
eXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7CiAgIEVYUEVD
VF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUgLyAyKSk7Ci0gIEVYUEVDVF9FUShTUl9TVUND
RVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOworICBF
WFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6ZSAvIDIsICZieXRlcywgbnVs
bHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBt
ZW1jbXAoaW4sIG91dCwga1NpemUgLyAyKSk7CiAKQEAgLTE2Niw1MSArMTYyLDUxIEBAIFRFU1Qo
Rmlmb0J1ZmZlclRlc3QsIFRlc3RBbGwpIHsKICAgLy8gWFhYWFdXV1dXV1dXWFhYWCA0NTY3MDEy
MzQ1NjcwMTIzCiAgIC8vIFJSUlJYWFhYWFhYWFJSUlIgLi4uLjAxMjM0NTY3Li4uLgogICAvLyAu
Li4uUlJSUlJSUlIuLi4uIC4uLi4uLi4uLi4uLi4uLi4KLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1Ms
IHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplICogMyAvIDQsICZieXRlcywgbnVsbHB0cikpOworICBF
WFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSAqIDMgLyA0LCAmYnl0ZXMs
IG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplICogMyAvIDQsIGJ5dGVzKTsKLSAgRVhQRUNU
X0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxs
cHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplIC8gMiwg
JmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKICAgRVhQ
RUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsKLSAgRVhQRUNUX0VRKFNSX1NV
Q0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7Cisg
IEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVzLCBu
dWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKLSAgRVhQRUNUX0VRKFNS
X1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gNCwgJmJ5dGVzLCBudWxscHRyKSk7
CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplIC8gNCwgJmJ5dGVz
LCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDQsIGJ5dGVzKTsKICAgRVhQRUNUX0VR
KDAsIG1lbWNtcChpbiArIGtTaXplIC8gMiwgb3V0LCBrU2l6ZSAvIDQpKTsKLSAgRVhQRUNUX0VR
KFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRy
KSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5
dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKLSAgRVhQRUNU
X0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxs
cHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplIC8gMiwg
JmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKICAgRVhQ
RUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsKLSAgRVhQRUNUX0VRKFNSX1NV
Q0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7Cisg
IEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBu
dWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAs
IG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsKIAogICAvLyBVc2UgR2V0V3JpdGVCdWZmZXIg
dG8gcmVzZXQgdGhlIHJlYWRfcG9zaXRpb24gZm9yIHRoZSBuZXh0IHRlc3RzCi0gIHN0cmVhbS0+
R2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKLSAgc3RyZWFtLT5Db25zdW1lV3JpdGVCdWZmZXIoMCk7
CisgIGJ1Zi5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOworICBidWYuQ29uc3VtZVdyaXRlQnVmZmVy
KDApOwogCiAgIC8vIFRyeSB1c2luZyBHZXRSZWFkRGF0YSB0byBkbyBhIGZ1bGwgcmVhZAotICBF
WFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiwga1NpemUsICZieXRlcywgbnVs
bHB0cikpOwotICBxID0gc3RyZWFtLT5HZXRSZWFkRGF0YSgmYnl0ZXMpOworICBFWFBFQ1RfRVEo
U1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIHEg
PSBidWYuR2V0UmVhZERhdGEoJmJ5dGVzKTsKICAgRVhQRUNUX1RSVUUobnVsbHB0ciAhPSBxKTsK
ICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAocSwgaW4s
IGtTaXplKSk7Ci0gIHN0cmVhbS0+Q29uc3VtZVJlYWREYXRhKGtTaXplKTsKLSAgRVhQRUNUX0VR
KFNSX0JMT0NLLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7Cisg
IGJ1Zi5Db25zdW1lUmVhZERhdGEoa1NpemUpOworICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIGJ1Zi5S
ZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogCiAgIC8vIFRyeSB1c2luZyBHZXRS
ZWFkRGF0YSB0byBkbyBzb21lIHNtYWxsIHJlYWRzCi0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBz
dHJlYW0tPldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7Ci0gIHEgPSBzdHJlYW0t
PkdldFJlYWREYXRhKCZieXRlcyk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUo
aW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgcSA9IGJ1Zi5HZXRSZWFkRGF0YSgmYnl0
ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHEpOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5
dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChxLCBpbiwga1NpemUgLyAyKSk7Ci0gIHN0cmVh
bS0+Q29uc3VtZVJlYWREYXRhKGtTaXplIC8gMik7Ci0gIHEgPSBzdHJlYW0tPkdldFJlYWREYXRh
KCZieXRlcyk7CisgIGJ1Zi5Db25zdW1lUmVhZERhdGEoa1NpemUgLyAyKTsKKyAgcSA9IGJ1Zi5H
ZXRSZWFkRGF0YSgmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHEpOwogICBFWFBF
Q1RfRVEoa1NpemUgLyAyLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAocSwgaW4gKyBr
U2l6ZSAvIDIsIGtTaXplIC8gMikpOwotICBzdHJlYW0tPkNvbnN1bWVSZWFkRGF0YShrU2l6ZSAv
IDIpOwotICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplLCAmYnl0
ZXMsIG51bGxwdHIpKTsKKyAgYnVmLkNvbnN1bWVSZWFkRGF0YShrU2l6ZSAvIDIpOworICBFWFBF
Q1RfRVEoU1JfQkxPQ0ssIGJ1Zi5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwog
CiAgIC8vIFRyeSB1c2luZyBHZXRSZWFkRGF0YSBpbiBhIHdyYXBhcm91bmQgY2FzZQogICAvLyBX
V1dXV1dXV1dXV1dXV1dXIDAxMjM0NTY3ODlBQkNERUYKQEAgLTIxOCw0NiArMjE0LDQ2IEBAIFRF
U1QoRmlmb0J1ZmZlclRlc3QsIFRlc3RBbGwpIHsKICAgLy8gV1dXV1dXV1cuLi4uWFhYWCAwMTIz
NDU2Ny4uLi5DREVGCiAgIC8vIC4uLi4uLi4uLi4uLlJSUlIgMDEyMzQ1NjcuLi4uLi4uLgogICAv
LyBSUlJSUlJSUi4uLi4uLi4uIC4uLi4uLi4uLi4uLi4uLi4KLSAgRVhQRUNUX0VRKFNSX1NVQ0NF
U1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKLSAgRVhQRUNU
X0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplICogMyAvIDQsICZieXRlcywg
bnVsbHB0cikpOwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiwga1Np
emUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKLSAgcSA9IHN0cmVhbS0+R2V0UmVhZERhdGEoJmJ5
dGVzKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUsICZieXRl
cywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6
ZSAqIDMgLyA0LCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1
Zi5Xcml0ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgcSA9IGJ1Zi5HZXRS
ZWFkRGF0YSgmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHEpOwogICBFWFBFQ1Rf
RVEoa1NpemUgLyA0LCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAocSwgaW4gKyBrU2l6
ZSAqIDMgLyA0LCBrU2l6ZSAvIDQpKTsKLSAgc3RyZWFtLT5Db25zdW1lUmVhZERhdGEoa1NpemUg
LyA0KTsKLSAgcSA9IHN0cmVhbS0+R2V0UmVhZERhdGEoJmJ5dGVzKTsKKyAgYnVmLkNvbnN1bWVS
ZWFkRGF0YShrU2l6ZSAvIDQpOworICBxID0gYnVmLkdldFJlYWREYXRhKCZieXRlcyk7CiAgIEVY
UEVDVF9UUlVFKG51bGxwdHIgIT0gcSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVzKTsK
ICAgRVhQRUNUX0VRKDAsIG1lbWNtcChxLCBpbiwga1NpemUgLyAyKSk7Ci0gIHN0cmVhbS0+Q29u
c3VtZVJlYWREYXRhKGtTaXplIC8gMik7CisgIGJ1Zi5Db25zdW1lUmVhZERhdGEoa1NpemUgLyAy
KTsKIAogICAvLyBVc2UgR2V0V3JpdGVCdWZmZXIgdG8gcmVzZXQgdGhlIHJlYWRfcG9zaXRpb24g
Zm9yIHRoZSBuZXh0IHRlc3RzCi0gIHN0cmVhbS0+R2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKLSAg
c3RyZWFtLT5Db25zdW1lV3JpdGVCdWZmZXIoMCk7CisgIGJ1Zi5HZXRXcml0ZUJ1ZmZlcigmYnl0
ZXMpOworICBidWYuQ29uc3VtZVdyaXRlQnVmZmVyKDApOwogCiAgIC8vIFRyeSB1c2luZyBHZXRX
cml0ZUJ1ZmZlciB0byBkbyBhIGZ1bGwgd3JpdGUKLSAgcCA9IHN0cmVhbS0+R2V0V3JpdGVCdWZm
ZXIoJmJ5dGVzKTsKKyAgcCA9IGJ1Zi5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOwogICBFWFBFQ1Rf
VFJVRShudWxscHRyICE9IHApOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgbWVtY3B5
KHAsIGluLCBrU2l6ZSk7Ci0gIHN0cmVhbS0+Q29uc3VtZVdyaXRlQnVmZmVyKGtTaXplKTsKLSAg
RVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplLCAmYnl0ZXMsIG51
bGxwdHIpKTsKKyAgYnVmLkNvbnN1bWVXcml0ZUJ1ZmZlcihrU2l6ZSk7CisgIEVYUEVDVF9FUShT
Ul9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKICAgRVhQ
RUNUX0VRKGtTaXplLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1Np
emUpKTsKIAogICAvLyBUcnkgdXNpbmcgR2V0V3JpdGVCdWZmZXIgdG8gZG8gc29tZSBzbWFsbCB3
cml0ZXMKLSAgcCA9IHN0cmVhbS0+R2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKKyAgcCA9IGJ1Zi5H
ZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHApOwogICBF
WFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgbWVtY3B5KHAsIGluLCBrU2l6ZSAvIDIpOwotICBz
dHJlYW0tPkNvbnN1bWVXcml0ZUJ1ZmZlcihrU2l6ZSAvIDIpOwotICBwID0gc3RyZWFtLT5HZXRX
cml0ZUJ1ZmZlcigmYnl0ZXMpOworICBidWYuQ29uc3VtZVdyaXRlQnVmZmVyKGtTaXplIC8gMik7
CisgIHAgPSBidWYuR2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKICAgRVhQRUNUX1RSVUUobnVsbHB0
ciAhPSBwKTsKICAgRVhQRUNUX0VRKGtTaXplIC8gMiwgYnl0ZXMpOwogICBtZW1jcHkocCwgaW4g
KyBrU2l6ZSAvIDIsIGtTaXplIC8gMik7Ci0gIHN0cmVhbS0+Q29uc3VtZVdyaXRlQnVmZmVyKGtT
aXplIC8gMik7Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6
ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIGJ1Zi5Db25zdW1lV3JpdGVCdWZmZXIoa1NpemUgLyAy
KTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUsICZieXRlcywg
bnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1l
bWNtcChpbiwgb3V0LCBrU2l6ZSkpOwogCkBAIC0yNjcsNTMgKzI2Myw1MyBAQCBURVNUKEZpZm9C
dWZmZXJUZXN0LCBUZXN0QWxsKSB7CiAgIC8vIC4uLi4uLi4uWFhYWFdXV1cgLi4uLi4uLi44OUFC
MDEyMwogICAvLyBXV1dXLi4uLlhYWFhYWFhYIDQ1NjcuLi4uODlBQjAxMjMKICAgLy8gUlJSUi4u
Li5SUlJSUlJSUiAuLi4uLi4uLi4uLi4uLi4uCi0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJl
YW0tPldyaXRlKGluLCBrU2l6ZSAqIDMgLyA0LCAmYnl0ZXMsIG51bGxwdHIpKTsKLSAgRVhQRUNU
X0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxs
cHRyKSk7Ci0gIHAgPSBzdHJlYW0tPkdldFdyaXRlQnVmZmVyKCZieXRlcyk7CisgIEVYUEVDVF9F
UShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplICogMyAvIDQsICZieXRlcywgbnVsbHB0
cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6ZSAvIDIsICZi
eXRlcywgbnVsbHB0cikpOworICBwID0gYnVmLkdldFdyaXRlQnVmZmVyKCZieXRlcyk7CiAgIEVY
UEVDVF9UUlVFKG51bGxwdHIgIT0gcCk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDQsIGJ5dGVzKTsK
ICAgbWVtY3B5KHAsIGluLCBrU2l6ZSAvIDQpOwotICBzdHJlYW0tPkNvbnN1bWVXcml0ZUJ1ZmZl
cihrU2l6ZSAvIDQpOwotICBwID0gc3RyZWFtLT5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOworICBi
dWYuQ29uc3VtZVdyaXRlQnVmZmVyKGtTaXplIC8gNCk7CisgIHAgPSBidWYuR2V0V3JpdGVCdWZm
ZXIoJmJ5dGVzKTsKICAgRVhQRUNUX1RSVUUobnVsbHB0ciAhPSBwKTsKICAgRVhQRUNUX0VRKGtT
aXplIC8gMiwgYnl0ZXMpOwogICBtZW1jcHkocCwgaW4gKyBrU2l6ZSAvIDQsIGtTaXplIC8gNCk7
Ci0gIHN0cmVhbS0+Q29uc3VtZVdyaXRlQnVmZmVyKGtTaXplIC8gNCk7Ci0gIEVYUEVDVF9FUShT
Ul9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAqIDMgLyA0LCAmYnl0ZXMsIG51bGxw
dHIpKTsKKyAgYnVmLkNvbnN1bWVXcml0ZUJ1ZmZlcihrU2l6ZSAvIDQpOworICBFWFBFQ1RfRVEo
U1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6ZSAqIDMgLyA0LCAmYnl0ZXMsIG51bGxwdHIp
KTsKICAgRVhQRUNUX0VRKGtTaXplICogMyAvIDQsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1l
bWNtcChpbiArIGtTaXplIC8gMiwgb3V0LCBrU2l6ZSAvIDQpKTsKICAgRVhQRUNUX0VRKDAsIG1l
bWNtcChpbiwgb3V0ICsga1NpemUgLyA0LCBrU2l6ZSAvIDQpKTsKIAogICAvLyBDaGVjayB0aGF0
IHRoZSBzdHJlYW0gaXMgbm93IGVtcHR5Ci0gIEVYUEVDVF9FUShTUl9CTE9DSywgc3RyZWFtLT5S
ZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfQkxPQ0ss
IGJ1Zi5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogCiAgIC8vIFRyeSBncm93
aW5nIHRoZSBidWZmZXIKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4s
IGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5X
cml0ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5
dGVzKTsKICAgRVhQRUNUX1RSVUUoYnVmLlNldENhcGFjaXR5KGtTaXplICogMikpOwotICBFWFBF
Q1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiArIGtTaXplLCBrU2l6ZSwgJmJ5dGVz
LCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4gKyBrU2l6
ZSwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsK
LSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplICogMiwgJmJ5
dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtT
aXplICogMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAqIDIsIGJ5dGVz
KTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAqIDIpKTsKIAogICAvLyBU
cnkgc2hyaW5raW5nIHRoZSBidWZmZXIKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+
V3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NF
U1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEo
a1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX1RSVUUoYnVmLlNldENhcGFjaXR5KGtTaXplKSk7Ci0g
IEVYUEVDVF9FUShTUl9CTE9DSywgc3RyZWFtLT5Xcml0ZShpbiwga1NpemUsICZieXRlcywgbnVs
bHB0cikpOwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUs
ICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIGJ1Zi5Xcml0ZShpbiwg
a1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJl
YWQob3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSwgYnl0
ZXMpOwogICBFWFBFQ1RfRVEoMCwgbWVtY21wKGluLCBvdXQsIGtTaXplKSk7CiAKICAgLy8gV3Jp
dGUgdG8gdGhlIHN0cmVhbSwgY2xvc2UgaXQsIHJlYWQgdGhlIHJlbWFpbmluZyBieXRlcwotICBF
WFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMs
IG51bGxwdHIpKTsKLSAgc3RyZWFtLT5DbG9zZSgpOwotICBFWFBFQ1RfRVEoU1NfQ0xPU0VELCBz
dHJlYW0tPkdldFN0YXRlKCkpOwotICBFWFBFQ1RfRVEoU1JfRU9TLCBzdHJlYW0tPldyaXRlKGlu
LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywg
c3RyZWFtLT5SZWFkKG91dCwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNU
X0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIp
KTsKKyAgYnVmLkNsb3NlKCk7CisgIEVYUEVDVF9FUShTU19DTE9TRUQsIGJ1Zi5HZXRTdGF0ZSgp
KTsKKyAgRVhQRUNUX0VRKFNSX0VPUywgYnVmLldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywg
bnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6ZSAv
IDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoMCwgbWVtY21wKGluLCBvdXQsIGtT
aXplIC8gMikpOwotICBFWFBFQ1RfRVEoU1JfRU9TLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAv
IDIsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfRU9TLCBidWYuUmVhZChvdXQs
IGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CiB9CiAKIFRFU1QoRmlmb0J1ZmZlclRlc3Qs
IEZ1bGxCdWZmZXJDaGVjaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nX3RvX251bWJlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ190b19udW1i
ZXIuY2MKaW5kZXggOTIwMTI0MmQ1ZjU3OGQ3ZjU1OGVmMWYwNzNhYzM1YjU1ODQ2N2Q2OS4uNjM0
NjUyYjgzZjZiZTJiZWEzNjdmYjkxMjhjMWRhNGRmZmQ5MTMwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nX3RvX251
bWJlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRl
ICJydGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmgiCiAKKyNpbmNsdWRlIDxjdHlwZS5oPgogI2lu
Y2x1ZGUgPGNlcnJubz4KICNpbmNsdWRlIDxjc3RkbGliPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdfdG9fbnVt
YmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zdHJpbmdfdG9fbnVtYmVyLmgKaW5kZXggN2VhOWYyNTFlZDQ2OGJiYjZhOGEwY2Y3NmM2ODg4
ZDQ5MWMwMzA5ZS4uNGNiNTIxNTk1ZGVmYWRkMmYxMGJmZDZkYWI0YTM4ZDE1NTM2MTdiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3RyaW5nX3RvX251bWJlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ190b19udW1iZXIuaApAQCAtMTMsNiArMTMsNyBA
QAogCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Ry
aW5nZW5jb2RlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmNjCmluZGV4IGE1Nzg0NWZmZGFkNWE4MGIwYmZjMjRmOWI1
NDU5MjJiMDY0ZWYyNmIuLmZjNGUzYmM4ZTczMTVjYzcyMzVjMWYzMjc2OWE1YTYxMzUyNTg1MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3N0cmluZ2VuY29kZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdlbmNvZGUuY2MKQEAgLTEwLDggKzEwLDcgQEAK
IAogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogCi0jaW5jbHVkZSA8c3RkaW8u
aD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjc3RkaW8+CiAKICNpbmNsdWRlICJy
dGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKQEAgLTUx
LDY3ICs1MCw2IEBAIHNpemVfdCB1cmxfZGVjb2RlKGNoYXIqIGJ1ZmZlciwKICAgcmV0dXJuIGJ1
ZnBvczsKIH0KIAotc2l6ZV90IHV0ZjhfZGVjb2RlKGNvbnN0IGNoYXIqIHNvdXJjZSwgc2l6ZV90
IHNyY2xlbiwgdW5zaWduZWQgbG9uZyogdmFsdWUpIHsKLSAgY29uc3QgdW5zaWduZWQgY2hhciog
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHNvdXJjZSk7Ci0gIGlm
ICgoc1swXSAmIDB4ODApID09IDB4MDApIHsgIC8vIENoZWNrIHNbMF0gPT0gMHh4eHh4eHgKLSAg
ICAqdmFsdWUgPSBzWzBdOwotICAgIHJldHVybiAxOwotICB9Ci0gIGlmICgoc3JjbGVuIDwgMikg
fHwgKChzWzFdICYgMHhDMCkgIT0gMHg4MCkpIHsgIC8vIENoZWNrIHNbMV0gIT0gMTB4eHh4eHgK
LSAgICByZXR1cm4gMDsKLSAgfQotICAvLyBBY2N1bXVsYXRlIHRoZSB0cmFpbGVyIGJ5dGUgdmFs
dWVzIGluIHZhbHVlMTYsIGFuZCBjb21iaW5lIGl0IHdpdGggdGhlCi0gIC8vIHJlbGV2YW50IGJp
dHMgZnJvbSBzWzBdLCBvbmNlIHdlJ3ZlIGRldGVybWluZWQgdGhlIHNlcXVlbmNlIGxlbmd0aC4K
LSAgdW5zaWduZWQgbG9uZyB2YWx1ZTE2ID0gKHNbMV0gJiAweDNGKTsKLSAgaWYgKChzWzBdICYg
MHhFMCkgPT0gMHhDMCkgeyAgLy8gQ2hlY2sgc1swXSA9PSAxMTB4eHh4eAotICAgICp2YWx1ZSA9
ICgoc1swXSAmIDB4MUYpIDw8IDYpIHwgdmFsdWUxNjsKLSAgICByZXR1cm4gMjsKLSAgfQotICBp
ZiAoKHNyY2xlbiA8IDMpIHx8ICgoc1syXSAmIDB4QzApICE9IDB4ODApKSB7ICAvLyBDaGVjayBz
WzJdICE9IDEweHh4eHh4Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgdmFsdWUxNiA9ICh2YWx1ZTE2
IDw8IDYpIHwgKHNbMl0gJiAweDNGKTsKLSAgaWYgKChzWzBdICYgMHhGMCkgPT0gMHhFMCkgeyAg
Ly8gQ2hlY2sgc1swXSA9PSAxMTEweHh4eAotICAgICp2YWx1ZSA9ICgoc1swXSAmIDB4MEYpIDw8
IDEyKSB8IHZhbHVlMTY7Ci0gICAgcmV0dXJuIDM7Ci0gIH0KLSAgaWYgKChzcmNsZW4gPCA0KSB8
fCAoKHNbM10gJiAweEMwKSAhPSAweDgwKSkgeyAgLy8gQ2hlY2sgc1szXSAhPSAxMHh4eHh4eAot
ICAgIHJldHVybiAwOwotICB9Ci0gIHZhbHVlMTYgPSAodmFsdWUxNiA8PCA2KSB8IChzWzNdICYg
MHgzRik7Ci0gIGlmICgoc1swXSAmIDB4RjgpID09IDB4RjApIHsgIC8vIENoZWNrIHNbMF0gPT0g
MTExMTB4eHgKLSAgICAqdmFsdWUgPSAoKHNbMF0gJiAweDA3KSA8PCAxOCkgfCB2YWx1ZTE2Owot
ICAgIHJldHVybiA0OwotICB9Ci0gIHJldHVybiAwOwotfQotCi1zaXplX3QgdXRmOF9lbmNvZGUo
Y2hhciogYnVmZmVyLCBzaXplX3QgYnVmbGVuLCB1bnNpZ25lZCBsb25nIHZhbHVlKSB7Ci0gIGlm
ICgodmFsdWUgPD0gMHg3RikgJiYgKGJ1ZmxlbiA+PSAxKSkgewotICAgIGJ1ZmZlclswXSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlKTsKLSAgICByZXR1cm4gMTsKLSAgfQotICBp
ZiAoKHZhbHVlIDw9IDB4N0ZGKSAmJiAoYnVmbGVuID49IDIpKSB7Ci0gICAgYnVmZmVyWzBdID0g
MHhDMCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlID4+IDYpOwotICAgIGJ1ZmZl
clsxXSA9IDB4ODAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZSAmIDB4M0YpOwot
ICAgIHJldHVybiAyOwotICB9Ci0gIGlmICgodmFsdWUgPD0gMHhGRkZGKSAmJiAoYnVmbGVuID49
IDMpKSB7Ci0gICAgYnVmZmVyWzBdID0gMHhFMCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KHZhbHVlID4+IDEyKTsKLSAgICBidWZmZXJbMV0gPSAweDgwIHwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oKHZhbHVlID4+IDYpICYgMHgzRik7Ci0gICAgYnVmZmVyWzJdID0gMHg4MCB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlICYgMHgzRik7Ci0gICAgcmV0dXJuIDM7Ci0g
IH0KLSAgaWYgKCh2YWx1ZSA8PSAweDFGRkZGRikgJiYgKGJ1ZmxlbiA+PSA0KSkgewotICAgIGJ1
ZmZlclswXSA9IDB4RjAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZSA+PiAxOCk7
Ci0gICAgYnVmZmVyWzFdID0gMHg4MCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCh2YWx1
ZSA+PiAxMikgJiAweDNGKTsKLSAgICBidWZmZXJbMl0gPSAweDgwIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oKHZhbHVlID4+IDYpICYgMHgzRik7Ci0gICAgYnVmZmVyWzNdID0gMHg4MCB8
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlICYgMHgzRik7Ci0gICAgcmV0dXJuIDQ7
Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBjb25zdCBjaGFyIEhFWFtdID0gIjAxMjM0
NTY3ODlhYmNkZWYiOwogCiBjaGFyIGhleF9lbmNvZGUodW5zaWduZWQgY2hhciB2YWwpIHsKQEAg
LTEyMiw5ICs2MCw5IEBAIGNoYXIgaGV4X2VuY29kZSh1bnNpZ25lZCBjaGFyIHZhbCkgewogYm9v
bCBoZXhfZGVjb2RlKGNoYXIgY2gsIHVuc2lnbmVkIGNoYXIqIHZhbCkgewogICBpZiAoKGNoID49
ICcwJykgJiYgKGNoIDw9ICc5JykpIHsKICAgICAqdmFsID0gY2ggLSAnMCc7Ci0gIH0gZWxzZSBp
ZiAoKGNoID49ICdBJykgJiYgKGNoIDw9ICdaJykpIHsKKyAgfSBlbHNlIGlmICgoY2ggPj0gJ0En
KSAmJiAoY2ggPD0gJ0YnKSkgewogICAgICp2YWwgPSAoY2ggLSAnQScpICsgMTA7Ci0gIH0gZWxz
ZSBpZiAoKGNoID49ICdhJykgJiYgKGNoIDw9ICd6JykpIHsKKyAgfSBlbHNlIGlmICgoY2ggPj0g
J2EnKSAmJiAoY2ggPD0gJ2YnKSkgewogICAgICp2YWwgPSAoY2ggLSAnYScpICsgMTA7CiAgIH0g
ZWxzZSB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdlbmNvZGUu
aAppbmRleCA1ZDQzNmRmZDU3YmEwOGE1NzMwN2Y1YWMzZDMxMDNlM2ZjZTZlMDgxLi4wOWJmNzdm
NDQ2MTUyNWEzYmFmYzFmYTFmYWNhNjljMjk2ZTJkMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdlbmNvZGUuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9z
dHJpbmdlbmNvZGUuaApAQCAtMTEsOSArMTEsMTIgQEAKICNpZm5kZWYgUlRDX0JBU0VfU1RSSU5H
RU5DT0RFX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1NUUklOR0VOQ09ERV9IXwogCisjaW5jbHVkZSA8
c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdfdG9fbnVt
YmVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3N0cmluZ2VuY29kZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2VuY29kZV91bml0dGVz
dC5jYwppbmRleCA5YmRjNTkyYzI5YWEwNjYzNzc4YWUyYzdkODZkY2E2MDE4MTliMWY0Li5mMjFj
NGNiNzhjNmY4NDg0Zjc4NTM1NzI4NDBiZWEyOTMyOTJiOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdlbmNvZGVf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlX3VuaXR0ZXN0LmNjCkBAIC0xNDEsNyArMTQxLDggQEAg
VEVTVF9GKEhleEVuY29kZVRlc3QsIFRlc3REZWNvZGVUb29TaG9ydCkgewogCiAvLyBUZXN0IHRo
YXQgZGVjb2Rpbmcgbm9uLWhleCBkYXRhIGZhaWxzLgogVEVTVF9GKEhleEVuY29kZVRlc3QsIFRl
c3REZWNvZGVCb2d1c0RhdGEpIHsKLSAgZGVjX3Jlc18gPSBoZXhfZGVjb2RlX3dpdGhfZGVsaW1p
dGVyKGRlY29kZWRfLCBzaXplb2YoZGVjb2RlZF8pLCAieHl6IiwgMywgMCk7CisgIGRlY19yZXNf
ID0KKyAgICAgIGhleF9kZWNvZGVfd2l0aF9kZWxpbWl0ZXIoZGVjb2RlZF8sIHNpemVvZihkZWNv
ZGVkXyksICJheHl6IiwgNCwgMCk7CiAgIEFTU0VSVF9FUSgwVSwgZGVjX3Jlc18pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9zdHJpbmdzL2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdzL2F1ZGlvX2Zvcm1hdF90
b19zdHJpbmcuY2MKaW5kZXggYTE0OTM0NDE5ODVmZGM5ZDcyZWUyNTQxMjE0NjBhMjU4Y2Y2OTdm
My4uN2U5MWMzYjQ5ZGQ0MTU1ODVjMThkY2Y2NTdlMzM5M2I5MjFkZWYxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5n
cy9hdWRpb19mb3JtYXRfdG9fc3RyaW5nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3MvYXVkaW9fZm9ybWF0X3RvX3N0cmlu
Zy5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9hdWRp
b19mb3JtYXRfdG9fc3RyaW5nLmgiCiAKKyNpbmNsdWRlIDx1dGlsaXR5PgorCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogCiBuYW1lc3BhY2UgcnRjIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmNjCmluZGV4
IDJmZDRhYmExOWNkY2RiZDMyZGZlOWU5OTlhMDliOGZmOTJlMzYzOGQuLmFkZjRmYTllODE5YTM4
OWRkNWIxYzJmZTllZGZmOTM2MGRkYzFiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5jYwpAQCAtMTAsNiArMTAsMTIgQEAKIAogI2luY2x1
ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAorI2luY2x1ZGUgPHN0ZGFy
Zy5oPgorI2luY2x1ZGUgPGNzdHJpbmc+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgorCiBuYW1lc3BhY2Ug
cnRjIHsKIAogU2ltcGxlU3RyaW5nQnVpbGRlcjo6U2ltcGxlU3RyaW5nQnVpbGRlcihydGM6OkFy
cmF5VmlldzxjaGFyPiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdz
L3N0cmluZ19idWlsZGVyLmgKaW5kZXggMTg2YzJmN2I5ZDc5ODE2ZTMxYWNjMDJlYzUwZGFlYTZm
ZjZkOGZmMi4uMjcwMDFkMWJlNWEzYzEyNTg4ODMwYWIzZGM2MGZjYTQ2YTczMzU4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaApAQCAtMTIs
MTMgKzEyLDExIEBACiAjZGVmaW5lIFJUQ19CQVNFX1NUUklOR1NfU1RSSU5HX0JVSUxERVJfSF8K
IAogI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPHN0cmlu
Zz4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192
aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmlu
Z3V0aWxzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3V0aWxzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHMuY2MKaW5kZXggNmJhZGRk
MTFiZGQzNmQxOTZkYjlmZTMxY2MyOTRhOGZlYTRjYTUzZS4uYzgwOGViMmNjNDFlZTYwN2MzYjll
NzNhOWVjNjBkYjc2MmVlZjFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHMuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHMuY2MK
QEAgLTcsOTcgKzcsMjkgQEAKICAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KLSNpbmNsdWRlIDxhbGdvcml0
aG0+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKLWJv
b2wgbWVtb3J5X2NoZWNrKGNvbnN0IHZvaWQqIG1lbW9yeSwgaW50IGMsIHNpemVfdCBjb3VudCkg
ewotICBjb25zdCBjaGFyKiBjaGFyX21lbW9yeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPiht
ZW1vcnkpOwotICBjaGFyIGNoYXJfYyA9IHN0YXRpY19jYXN0PGNoYXI+KGMpOwotICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICBpZiAoY2hhcl9tZW1vcnlbaV0gIT0g
Y2hhcl9jKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0gIHJldHVybiB0cnVl
OwotfQotCi1ib29sIHN0cmluZ19tYXRjaChjb25zdCBjaGFyKiB0YXJnZXQsIGNvbnN0IGNoYXIq
IHBhdHRlcm4pIHsKLSAgd2hpbGUgKCpwYXR0ZXJuKSB7Ci0gICAgaWYgKCpwYXR0ZXJuID09ICcq
JykgewotICAgICAgaWYgKCEqKytwYXR0ZXJuKSB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgfQotICAgICAgd2hpbGUgKCp0YXJnZXQpIHsKLSAgICAgICAgaWYgKCh0b3VwcGVyKCpwYXR0
ZXJuKSA9PSB0b3VwcGVyKCp0YXJnZXQpKSAmJgotICAgICAgICAgICAgc3RyaW5nX21hdGNoKHRh
cmdldCArIDEsIHBhdHRlcm4gKyAxKSkgewotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgICsrdGFyZ2V0OwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0gZWxzZSB7Ci0gICAgICBpZiAodG91cHBlcigqcGF0dGVybikgIT0gdG91cHBlcigqdGFyZ2V0
KSkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICArK3RhcmdldDsKLSAg
ICAgICsrcGF0dGVybjsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuICEqdGFyZ2V0OwotfQotCi0jaWYg
ZGVmaW5lZChXRUJSVENfV0lOKQotaW50IGFzY2lpX3N0cmluZ19jb21wYXJlKGNvbnN0IHdjaGFy
X3QqIHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBuLAotICAgICAgICAgICAgICAgICAgICAgICAgIENo
YXJhY3RlclRyYW5zZm9ybWF0aW9uIHRyYW5zZm9ybWF0aW9uKSB7Ci0gIHdjaGFyX3QgYzEsIGMy
OwotICB3aGlsZSAodHJ1ZSkgewotICAgIGlmIChuLS0gPT0gMCkKLSAgICAgIHJldHVybiAwOwot
ICAgIGMxID0gdHJhbnNmb3JtYXRpb24oKnMxKTsKLSAgICAvLyBEb3VibGUgY2hlY2sgdGhhdCBj
aGFyYWN0ZXJzIGFyZSBub3QgVVRGLTgKLSAgICBSVENfRENIRUNLX0xUKCpzMiwgMTI4KTsKLSAg
ICAvLyBOb3RlOiAqczIgZ2V0cyBpbXBsaWNpdGx5IHByb21vdGVkIHRvIHdjaGFyX3QKLSAgICBj
MiA9IHRyYW5zZm9ybWF0aW9uKCpzMik7Ci0gICAgaWYgKGMxICE9IGMyKQotICAgICAgcmV0dXJu
IChjMSA8IGMyKSA/IC0xIDogMTsKLSAgICBpZiAoIWMxKQotICAgICAgcmV0dXJuIDA7Ci0gICAg
KytzMTsKLSAgICArK3MyOwotICB9Ci19Ci0KLXNpemVfdCBhc2NjcHluKHdjaGFyX3QqIGJ1ZmZl
ciwKK3NpemVfdCBzdHJjcHluKGNoYXIqIGJ1ZmZlciwKICAgICAgICAgICAgICAgIHNpemVfdCBi
dWZsZW4sCiAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzb3VyY2UsCi0gICAgICAgICAgICAg
ICBzaXplX3Qgc3JjbGVuKSB7CisgICAgICAgICAgICAgICBzaXplX3Qgc3JjbGVuIC8qID0gU0la
RV9VTktOT1dOICovKSB7CiAgIGlmIChidWZsZW4gPD0gMCkKICAgICByZXR1cm4gMDsKIAogICBp
ZiAoc3JjbGVuID09IFNJWkVfVU5LTk9XTikgewotICAgIHNyY2xlbiA9IHN0cmxlbm4oc291cmNl
LCBidWZsZW4gLSAxKTsKLSAgfSBlbHNlIGlmIChzcmNsZW4gPj0gYnVmbGVuKSB7CisgICAgc3Jj
bGVuID0gc3RybGVuKHNvdXJjZSk7CisgIH0KKyAgaWYgKHNyY2xlbiA+PSBidWZsZW4pIHsKICAg
ICBzcmNsZW4gPSBidWZsZW4gLSAxOwogICB9Ci0jaWYgUlRDX0RDSEVDS19JU19PTgotICAvLyBE
b3VibGUgY2hlY2sgdGhhdCBjaGFyYWN0ZXJzIGFyZSBub3QgVVRGLTgKLSAgZm9yIChzaXplX3Qg
cG9zID0gMDsgcG9zIDwgc3JjbGVuOyArK3BvcykKLSAgICBSVENfRENIRUNLX0xUKHNvdXJjZVtw
b3NdLCAxMjgpOwotI2VuZGlmCi0gIHN0ZDo6Y29weShzb3VyY2UsIHNvdXJjZSArIHNyY2xlbiwg
YnVmZmVyKTsKKyAgbWVtY3B5KGJ1ZmZlciwgc291cmNlLCBzcmNsZW4pOwogICBidWZmZXJbc3Jj
bGVuXSA9IDA7CiAgIHJldHVybiBzcmNsZW47CiB9CiAKLSNlbmRpZiAgLy8gV0VCUlRDX1dJTgot
CiB2b2lkIHJlcGxhY2Vfc3Vic3Rycyhjb25zdCBjaGFyKiBzZWFyY2gsCiAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgc2VhcmNoX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHJlcGxhY2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaAppbmRleCAyNmM0NjI3
ZDVjYTU5ODAzYTRlM2ZiNWRhMjk3Nzg2M2JjYTk3OTcyLi5jOWRhYmZiOGFhYWZiODViNWViYjI4
ZjJmMmI5NjM3ZTc3N2Q0MzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlscy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3V0aWxzLmgKQEAg
LTEzLDggKzEzLDcgQEAKIAogI2lmICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCiAjaW5j
bHVkZSA8Y3R5cGUuaD4KLSNlbmRpZgotCisjZW5kaWYgLy8gIWRlZmluZWQoV0VCUlRDX1dFQktJ
VF9CVUlMRCkKICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1
ZGUgPHN0cmluZy5oPgpAQCAtMjMsNiArMjIsNyBAQAogI2luY2x1ZGUgPG1hbGxvYy5oPgogI2lu
Y2x1ZGUgPHdjaGFyLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgorCiAjZGVmaW5lIGFsbG9jYSBf
YWxsb2NhCiAjZW5kaWYgIC8vIFdFQlJUQ19XSU4KIApAQCAtMzIsNiArMzIsNyBAQAogI2Vsc2Ug
IC8vIEJTRAogI2luY2x1ZGUgPGFsbG9jYS5oPgogI2VuZGlmICAvLyAhQlNECisjaW5jbHVkZSA8
c3RyaW5ncy5oPgogI2VuZGlmICAvLyBXRUJSVENfUE9TSVgKIAogI2luY2x1ZGUgPHN0cmluZz4K
QEAgLTQzLDQ5ICs0NCw2IEBACiAjZGVmaW5lIFNUQUNLX0FSUkFZKFRZUEUsIExFTikgXAogICBz
dGF0aWNfY2FzdDxUWVBFKj4oOjphbGxvY2EoKExFTikgKiBzaXplb2YoVFlQRSkpKQogCi1uYW1l
c3BhY2UgcnRjIHsKLQotLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzaW1wbGUgd2lsZGNhcmQg
cGF0dGVybiBtYXRjaGVzIHRhcmdldC4KLS8vIEFscGhhIGNoYXJhY3RlcnMgaW4gcGF0dGVybiBt
YXRjaCBjYXNlLWluc2Vuc2l0aXZlbHkuCi0vLyBBc3Rlcmlza3MgaW4gcGF0dGVybiBtYXRjaCAw
IG9yIG1vcmUgY2hhcmFjdGVycy4KLS8vIEV4OiBzdHJpbmdfbWF0Y2goInd3dy5URVNULkdPT0dM
RS5DT00iLCAid3d3LiouY29tIikgLT4gdHJ1ZQotYm9vbCBzdHJpbmdfbWF0Y2goY29uc3QgY2hh
ciogdGFyZ2V0LCBjb25zdCBjaGFyKiBwYXR0ZXJuKTsKLQotfSAgLy8gbmFtZXNwYWNlIHJ0Ywot
Ci0jaWYgIWRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLS8vIFJlbmFtZSBhIGZldyBjb21tb24gc3RyaW5nIGZ1bmN0aW9ucyBzbyB0aGV5IGFyZSBj
b25zaXN0ZW50IGFjcm9zcyBwbGF0Zm9ybXMuCi0vLyB0b2xvd2VyY2FzZSBpcyBsaWtlIHRvbG93
ZXIsIGJ1dCBub3QgY29tcGF0aWJsZSB3aXRoIGVuZC1vZi1maWxlIHZhbHVlCi0vLwotLy8gSXQn
cyBub3QgY2xlYXIgaWYgd2Ugd2lsbCBldmVyIHVzZSB3Y2hhcl90IHN0cmluZ3Mgb24gdW5peC4g
IEluIHRoZW9yeSwKLS8vIGFsbCBzdHJpbmdzIHNob3VsZCBiZSBVdGY4IGFsbCB0aGUgdGltZSwg
ZXhjZXB0IHdoZW4gaW50ZXJmYWNpbmcgd2l0aCBXaW4zMgotLy8gQVBJcyB0aGF0IHJlcXVpcmUg
VXRmMTYuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1pbmxpbmUgY2hhciB0b2xvd2VyY2FzZShj
aGFyIGMpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KHRvbG93ZXIoYykpOwotfQotI2Vu
ZGlmIC8vICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCi0KLSNpZiBkZWZpbmVkKFdFQlJU
Q19XSU4pCi0KLWlubGluZSB3Y2hhcl90IHRvbG93ZXJjYXNlKHdjaGFyX3QgYykgewotICByZXR1
cm4gc3RhdGljX2Nhc3Q8d2NoYXJfdD4odG93bG93ZXIoYykpOwotfQotCi0jZW5kaWYgIC8vIFdF
QlJUQ19XSU4KLQotI2lmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQotCi1pbmxpbmUgaW50IF9zdHJp
Y21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4gc3RyY2FzZWNt
cChzMSwgczIpOwotfQotaW5saW5lIGludCBfc3RybmljbXAoY29uc3QgY2hhciogczEsIGNvbnN0
IGNoYXIqIHMyLCBzaXplX3QgbikgewotICByZXR1cm4gc3RybmNhc2VjbXAoczEsIHMyLCBuKTsK
LX0KLQotI2VuZGlmICAvLyBXRUJSVENfUE9TSVgKLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwog
Ly8gVHJhaXRzIHNpbXBsaWZpZXMgcG9ydGluZyBzdHJpbmcgZnVuY3Rpb25zIHRvIGJlIENUWVBF
LWFnbm9zdGljCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC05NCwxOTEgKzUyLDEyIEBAIG5h
bWVzcGFjZSBydGMgewogCiBjb25zdCBzaXplX3QgU0laRV9VTktOT1dOID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PigtMSk7CiAKLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4KLXN0cnVjdCBUcmFpdHMgewot
ICAvLyBTVEwgc3RyaW5nIHR5cGUKLSAgLy8gdHlwZWRlZiBYWFggc3RyaW5nOwotICAvLyBOdWxs
LXRlcm1pbmF0ZWQgc3RyaW5nCi0gIC8vIGlubGluZSBzdGF0aWMgY29uc3QgQ1RZUEUqIGVtcHR5
X3N0cigpOwotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gU3RyaW5nIHV0aWxpdGll
cyB3aGljaCB3b3JrIHdpdGggY2hhciBvciB3Y2hhcl90Ci0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0KLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4KLWlubGluZSBjb25zdCBDVFlQRSogbm9ubnVsbChj
b25zdCBDVFlQRSogc3RyLCBjb25zdCBDVFlQRSogZGVmX3N0ciA9IG51bGxwdHIpIHsKLSAgcmV0
dXJuIHN0ciA/IHN0ciA6IChkZWZfc3RyID8gZGVmX3N0ciA6IFRyYWl0czxDVFlQRT46OmVtcHR5
X3N0cigpKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIENUWVBFPgotY29uc3QgQ1RZUEUqIHN0cmNo
cihjb25zdCBDVFlQRSogc3RyLCBjb25zdCBDVFlQRSogY2hzKSB7Ci0gIGZvciAoc2l6ZV90IGkg
PSAwOyBzdHJbaV07ICsraSkgewotICAgIGZvciAoc2l6ZV90IGogPSAwOyBjaHNbal07ICsraikg
ewotICAgICAgaWYgKHN0cltpXSA9PSBjaHNbal0pIHsKLSAgICAgICAgcmV0dXJuIHN0ciArIGk7
Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJldHVybiAwOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3Mg
Q1RZUEU+Ci1jb25zdCBDVFlQRSogc3RyY2hybihjb25zdCBDVFlQRSogc3RyLCBzaXplX3Qgc2xl
biwgQ1RZUEUgY2gpIHsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzbGVuICYmIHN0cltpXTsg
KytpKSB7Ci0gICAgaWYgKHN0cltpXSA9PSBjaCkgewotICAgICAgcmV0dXJuIHN0ciArIGk7Ci0g
ICAgfQotICB9Ci0gIHJldHVybiAwOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQ1RZUEU+Ci1zaXpl
X3Qgc3RybGVubihjb25zdCBDVFlQRSogYnVmZmVyLCBzaXplX3QgYnVmbGVuKSB7Ci0gIHNpemVf
dCBidWZwb3MgPSAwOwotICB3aGlsZSAoYnVmZmVyW2J1ZnBvc10gJiYgKGJ1ZnBvcyA8IGJ1Zmxl
bikpIHsKLSAgICArK2J1ZnBvczsKLSAgfQotICByZXR1cm4gYnVmcG9zOwotfQotCi0vLyBTYWZl
IHZlcnNpb25zIG9mIHN0cm5jcHksIHN0cm5jYXQsIHNucHJpbnRmIGFuZCB2c25wcmludGYgdGhh
dCBhbHdheXMKLS8vIG51bGwtdGVybWluYXRlLgotCi10ZW1wbGF0ZSA8Y2xhc3MgQ1RZUEU+Ci1z
aXplX3Qgc3RyY3B5bihDVFlQRSogYnVmZmVyLAotICAgICAgICAgICAgICAgc2l6ZV90IGJ1Zmxl
biwKLSAgICAgICAgICAgICAgIGNvbnN0IENUWVBFKiBzb3VyY2UsCi0gICAgICAgICAgICAgICBz
aXplX3Qgc3JjbGVuID0gU0laRV9VTktOT1dOKSB7Ci0gIGlmIChidWZsZW4gPD0gMCkKLSAgICBy
ZXR1cm4gMDsKLQotICBpZiAoc3JjbGVuID09IFNJWkVfVU5LTk9XTikgewotICAgIHNyY2xlbiA9
IHN0cmxlbm4oc291cmNlLCBidWZsZW4gLSAxKTsKLSAgfSBlbHNlIGlmIChzcmNsZW4gPj0gYnVm
bGVuKSB7Ci0gICAgc3JjbGVuID0gYnVmbGVuIC0gMTsKLSAgfQotICBtZW1jcHkoYnVmZmVyLCBz
b3VyY2UsIHNyY2xlbiAqIHNpemVvZihDVFlQRSkpOwotICBidWZmZXJbc3JjbGVuXSA9IDA7Ci0g
IHJldHVybiBzcmNsZW47Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4KLXNpemVfdCBzdHJj
YXRuKENUWVBFKiBidWZmZXIsCi0gICAgICAgICAgICAgICBzaXplX3QgYnVmbGVuLAotICAgICAg
ICAgICAgICAgY29uc3QgQ1RZUEUqIHNvdXJjZSwKLSAgICAgICAgICAgICAgIHNpemVfdCBzcmNs
ZW4gPSBTSVpFX1VOS05PV04pIHsKLSAgaWYgKGJ1ZmxlbiA8PSAwKQotICAgIHJldHVybiAwOwot
Ci0gIHNpemVfdCBidWZwb3MgPSBzdHJsZW5uKGJ1ZmZlciwgYnVmbGVuIC0gMSk7Ci0gIHJldHVy
biBidWZwb3MgKyBzdHJjcHluKGJ1ZmZlciArIGJ1ZnBvcywgYnVmbGVuIC0gYnVmcG9zLCBzb3Vy
Y2UsIHNyY2xlbik7Ci19Ci0KLS8vIFNvbWUgY29tcGlsZXJzIChjbGFuZyBzcGVjaWZpY2FsbHkp
IHJlcXVpcmUgdnNwcmludGZuIGJlIGRlZmluZWQgYmVmb3JlCi0vLyBzcHJpbnRmbi4KLXRlbXBs
YXRlIDxjbGFzcyBDVFlQRT4KLXNpemVfdCB2c3ByaW50Zm4oQ1RZUEUqIGJ1ZmZlciwKLSAgICAg
ICAgICAgICAgICAgc2l6ZV90IGJ1ZmxlbiwKLSAgICAgICAgICAgICAgICAgY29uc3QgQ1RZUEUq
IGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7Ci0gIGludCBsZW4gPSB2
c25wcmludGYoYnVmZmVyLCBidWZsZW4sIGZvcm1hdCwgYXJncyk7Ci0gIGlmICgobGVuIDwgMCkg
fHwgKHN0YXRpY19jYXN0PHNpemVfdD4obGVuKSA+PSBidWZsZW4pKSB7Ci0gICAgbGVuID0gc3Rh
dGljX2Nhc3Q8aW50PihidWZsZW4gLSAxKTsKLSAgICBidWZmZXJbbGVuXSA9IDA7Ci0gIH0KLSAg
cmV0dXJuIGxlbjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIENUWVBFPgotc2l6ZV90IHNwcmludGZu
KENUWVBFKiBidWZmZXIsIHNpemVfdCBidWZsZW4sIGNvbnN0IENUWVBFKiBmb3JtYXQsIC4uLik7
Ci10ZW1wbGF0ZSA8Y2xhc3MgQ1RZUEU+Ci1zaXplX3Qgc3ByaW50Zm4oQ1RZUEUqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmxlbiwgY29uc3QgQ1RZUEUqIGZvcm1hdCwgLi4uKSB7Ci0gIHZhX2xpc3QgYXJn
czsKLSAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKLSAgc2l6ZV90IGxlbiA9IHZzcHJpbnRmbihi
dWZmZXIsIGJ1ZmxlbiwgZm9ybWF0LCBhcmdzKTsKLSAgdmFfZW5kKGFyZ3MpOwotICByZXR1cm4g
bGVuOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBBbGxvdyBzYWZlIGNvbXBhcmlu
ZyBhbmQgY29weWluZyBhc2NpaSAobm90IFVURi04KSB3aXRoIGJvdGggd2lkZSBhbmQKLS8vIG5v
bi13aWRlIGNoYXJhY3RlciBzdHJpbmdzLgotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbmxp
bmUgaW50IGFzY2NtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIpIHsKLSAgcmV0dXJu
IHN0cmNtcChzMSwgczIpOwotfQotaW5saW5lIGludCBhc2NpY21wKGNvbnN0IGNoYXIqIHMxLCBj
b25zdCBjaGFyKiBzMikgewotICByZXR1cm4gX3N0cmljbXAoczEsIHMyKTsKLX0KLWlubGluZSBp
bnQgYXNjbmNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIHNpemVfdCBuKSB7Ci0g
IHJldHVybiBzdHJuY21wKHMxLCBzMiwgbik7Ci19Ci1pbmxpbmUgaW50IGFzY25pY21wKGNvbnN0
IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgc2l6ZV90IG4pIHsKLSAgcmV0dXJuIF9zdHJuaWNt
cChzMSwgczIsIG4pOwotfQotaW5saW5lIHNpemVfdCBhc2NjcHluKGNoYXIqIGJ1ZmZlciwKLSAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmbGVuLAotICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3JjbGVu
ID0gU0laRV9VTktOT1dOKSB7Ci0gIHJldHVybiBzdHJjcHluKGJ1ZmZlciwgYnVmbGVuLCBzb3Vy
Y2UsIHNyY2xlbik7Ci19Ci0KLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0KLXR5cGVkZWYgd2No
YXJfdCAoKkNoYXJhY3RlclRyYW5zZm9ybWF0aW9uKSh3Y2hhcl90KTsKLWlubGluZSB3Y2hhcl90
IGlkZW50aXR5KHdjaGFyX3QgYykgewotICByZXR1cm4gYzsKLX0KLWludCBhc2NpaV9zdHJpbmdf
Y29tcGFyZShjb25zdCB3Y2hhcl90KiBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJUcmFuc2Zvcm1hdGlvbiB0cmFuc2Zvcm1hdGlvbik7
Ci0KLWlubGluZSBpbnQgYXNjY21wKGNvbnN0IHdjaGFyX3QqIHMxLCBjb25zdCBjaGFyKiBzMikg
ewotICByZXR1cm4gYXNjaWlfc3RyaW5nX2NvbXBhcmUoczEsIHMyLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KC0xKSwgaWRlbnRpdHkpOwotfQotaW5saW5lIGludCBhc2NpY21wKGNvbnN0IHdjaGFyX3Qq
IHMxLCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4gYXNjaWlfc3RyaW5nX2NvbXBhcmUoczEs
IHMyLCBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSwgdG9sb3dlcmNhc2UpOwotfQotaW5saW5lIGlu
dCBhc2NuY21wKGNvbnN0IHdjaGFyX3QqIHMxLCBjb25zdCBjaGFyKiBzMiwgc2l6ZV90IG4pIHsK
LSAgcmV0dXJuIGFzY2lpX3N0cmluZ19jb21wYXJlKHMxLCBzMiwgbiwgaWRlbnRpdHkpOwotfQot
aW5saW5lIGludCBhc2NuaWNtcChjb25zdCB3Y2hhcl90KiBzMSwgY29uc3QgY2hhciogczIsIHNp
emVfdCBuKSB7Ci0gIHJldHVybiBhc2NpaV9zdHJpbmdfY29tcGFyZShzMSwgczIsIG4sIHRvbG93
ZXJjYXNlKTsKLX0KLXNpemVfdCBhc2NjcHluKHdjaGFyX3QqIGJ1ZmZlciwKKy8vIFNhZmUgdmVy
c2lvbiBvZiBzdHJuY3B5IHRoYXQgYWx3YXlzIG51bC10ZXJtaW5hdGUuCitzaXplX3Qgc3RyY3B5
bihjaGFyKiBidWZmZXIsCiAgICAgICAgICAgICAgICBzaXplX3QgYnVmbGVuLAogICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogc291cmNlLAogICAgICAgICAgICAgICAgc2l6ZV90IHNyY2xlbiA9
IFNJWkVfVU5LTk9XTik7CiAKLSNlbmRpZiAgLy8gV0VCUlRDX1dJTgotCi0vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0vLyBUcmFpdHM8Y2hhcj4gc3BlY2lhbGl6YXRpb25zCi0vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgVHJhaXRzPGNoYXI+IHsKLSAgdHlwZWRl
ZiBzdGQ6OnN0cmluZyBzdHJpbmc7Ci0gIGlubGluZSBzdGF0aWMgY29uc3QgY2hhciogZW1wdHlf
c3RyKCkgeyByZXR1cm4gIiI7IH0KLX07Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFRy
YWl0czx3Y2hhcl90PiBzcGVjaWFsaXphdGlvbnMgKFdpbmRvd3Mgb25seSwgY3VycmVudGx5KQot
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotCi10ZW1w
bGF0ZSA8Pgotc3RydWN0IFRyYWl0czx3Y2hhcl90PiB7Ci0gIHR5cGVkZWYgc3RkOjp3c3RyaW5n
IHN0cmluZzsKLSAgaW5saW5lIHN0YXRpYyBjb25zdCB3Y2hhcl90KiBlbXB0eV9zdHIoKSB7IHJl
dHVybiBMIiI7IH0KLX07Ci0KLSNlbmRpZiAgLy8gV0VCUlRDX1dJTgotCiAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCiAvLyBVVEYgaGVscGVycyAoV2luZG93cyBvbmx5KQogLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHNfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlsc191bml0dGVzdC5j
YwppbmRleCBhNmU2NDY4MGJiNzM1OWQ4MWVkMWFlNGVmZmNiNjM5NjUwOGI2Y2M2Li42NjNlOTc2
OGY2MDhhMzQ2Yzg0MjA0NWExMWNlZDU3MDRlNzZjZjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlsc191bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zdHJpbmd1dGlsc191bml0dGVzdC5jYwpAQCAtMTMsNzAgKzEzLDYgQEAKIAogbmFt
ZXNwYWNlIHJ0YyB7CiAKLS8vIFRlc3RzIGZvciBzdHJpbmdfbWF0Y2goKS4KLQotVEVTVChzdHJp
bmdfbWF0Y2hUZXN0LCBNYXRjaGVzKSB7Ci0gIEVYUEVDVF9UUlVFKHN0cmluZ19tYXRjaCgiQS5C
LkMuRCIsICJhLmIuYy5kIikpOwotICBFWFBFQ1RfVFJVRShzdHJpbmdfbWF0Y2goInd3dy5URVNU
LkdPT0dMRS5DT00iLCAid3d3LiouY29tIikpOwotICBFWFBFQ1RfVFJVRShzdHJpbmdfbWF0Y2go
IjEyNy4wLjAuMSIsICIxMiouMC4qMSIpKTsKLSAgRVhQRUNUX1RSVUUoc3RyaW5nX21hdGNoKCIx
MjcuMS4wLjIxIiwgIjEyKi4wLioxIikpOwotICBFWFBFQ1RfRkFMU0Uoc3RyaW5nX21hdGNoKCIx
MjcuMC4wLjAiLCAiMTIqLjAuKjEiKSk7Ci0gIEVYUEVDVF9GQUxTRShzdHJpbmdfbWF0Y2goIjEy
Ny4wLjAuMCIsICIxMiouMC4qMSIpKTsKLSAgRVhQRUNUX0ZBTFNFKHN0cmluZ19tYXRjaCgiMTI3
LjEuMS4yMSIsICIxMiouMC4qMSIpKTsKLX0KLQotLy8gSXQncyBub3QgY2xlYXIgaWYgd2Ugd2ls
bCBldmVyIHVzZSB3Y2hhcl90IHN0cmluZ3Mgb24gdW5peC4gIEluIHRoZW9yeSwKLS8vIGFsbCBz
dHJpbmdzIHNob3VsZCBiZSBVdGY4IGFsbCB0aGUgdGltZSwgZXhjZXB0IHdoZW4gaW50ZXJmYWNp
bmcgd2l0aCBXaW4zMgotLy8gQVBJcyB0aGF0IHJlcXVpcmUgVXRmMTYuCi0KLSNpZiBkZWZpbmVk
KFdFQlJUQ19XSU4pCi0KLS8vIFRlc3RzIGZvciBhc2NpaV9zdHJpbmdfY29tcGFyZSgpLgotCi0v
LyBUZXN0cyBudWxsIGlucHV0LgotVEVTVChhc2NpaV9zdHJpbmdfY29tcGFyZVRlc3QsIE51bGxJ
bnB1dCkgewotICAvLyBUaGUgZm9sbG93aW5nIHJlc3VsdHMgaW4gYW4gYWNjZXNzIHZpb2xhdGlv
biBpbgotICAvLyBhc2NpaV9zdHJpbmdfY29tcGFyZS4gIElzIHRoaXMgYSBidWcgb3IgYnkgZGVz
aWduPyAgc3RyaW5ndXRpbHMuaAotICAvLyBzaG91bGQgZG9jdW1lbnQgdGhlIGV4cGVjdGVkIGJl
aGF2aW9yIGluIHRoaXMgY2FzZS4KLQotICAvLyBFWFBFQ1RfRVEoMCwgYXNjaWlfc3RyaW5nX2Nv
bXBhcmUobnVsbHB0ciwgbnVsbHB0ciwgMSwgaWRlbnRpdHkpKTsKLX0KLQotLy8gVGVzdHMgY29t
cGFyaW5nIHR3byBzdHJpbmdzIG9mIGRpZmZlcmVudCBsZW5ndGhzLgotVEVTVChhc2NpaV9zdHJp
bmdfY29tcGFyZVRlc3QsIERpZmZlcmVudExlbmd0aHMpIHsKLSAgRVhQRUNUX0VRKC0xLCBhc2Np
aV9zdHJpbmdfY29tcGFyZShMIlRlc3QiLCAiVGVzdDEiLCA1LCBpZGVudGl0eSkpOwotfQotCi0v
LyBUZXN0cyB0aGUgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIHNpemUgaXMgc21hbGxlciB0aGFuIHRo
ZSBzdHJpbmcKLS8vIGxlbmd0aHMuCi1URVNUKGFzY2lpX3N0cmluZ19jb21wYXJlVGVzdCwgU21h
bGxCdWZmZXIpIHsKLSAgRVhQRUNUX0VRKDAsIGFzY2lpX3N0cmluZ19jb21wYXJlKEwiVGVzdCIs
ICJUZXN0MSIsIDMsIGlkZW50aXR5KSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBjYXNlIHdoZXJlIHRo
ZSBidWZmZXIgaXMgbm90IGZ1bGwuCi1URVNUKGFzY2lpX3N0cmluZ19jb21wYXJlVGVzdCwgTGFy
Z2VCdWZmZXIpIHsKLSAgRVhQRUNUX0VRKDAsIGFzY2lpX3N0cmluZ19jb21wYXJlKEwiVGVzdCIs
ICJUZXN0IiwgMTAsIGlkZW50aXR5KSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyB0d28gZXFh
dWwgc3RyaW5ncy4KLVRFU1QoYXNjaWlfc3RyaW5nX2NvbXBhcmVUZXN0LCBFcXVhbCkgewotICBF
WFBFQ1RfRVEoMCwgYXNjaWlfc3RyaW5nX2NvbXBhcmUoTCJUZXN0IiwgIlRlc3QiLCA1LCBpZGVu
dGl0eSkpOwotICBFWFBFQ1RfRVEoMCwgYXNjaWlfc3RyaW5nX2NvbXBhcmUoTCJUZVN0IiwgInRF
c1QiLCA1LCB0b2xvd2VyY2FzZSkpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgYSBzbWxsZXIg
c3RyaW5nIHRvIGEgbGFyZ2VyIG9uZS4KLVRFU1QoYXNjaWlfc3RyaW5nX2NvbXBhcmVUZXN0LCBM
ZXNzVGhhbikgewotICBFWFBFQ1RfRVEoLTEsIGFzY2lpX3N0cmluZ19jb21wYXJlKEwiYWJjIiwg
ImFiZCIsIDQsIGlkZW50aXR5KSk7Ci0gIEVYUEVDVF9FUSgtMSwgYXNjaWlfc3RyaW5nX2NvbXBh
cmUoTCJBQkMiLCAiYWJEIiwgNSwgdG9sb3dlcmNhc2UpKTsKLX0KLQotLy8gVGVzdHMgY29tcGFy
aW5nIGEgbGFyZ2VyIHN0cmluZyB0byBhIHNtYWxsZXIgb25lLgotVEVTVChhc2NpaV9zdHJpbmdf
Y29tcGFyZVRlc3QsIEdyZWF0ZXJUaGFuKSB7Ci0gIEVYUEVDVF9FUSgxLCBhc2NpaV9zdHJpbmdf
Y29tcGFyZShMInh5eiIsICJ4eSIsIDUsIGlkZW50aXR5KSk7Ci0gIEVYUEVDVF9FUSgxLCBhc2Np
aV9zdHJpbmdfY29tcGFyZShMImFiYyIsICJBQkIiLCA1LCB0b2xvd2VyY2FzZSkpOwotfQotI2Vu
ZGlmICAvLyBXRUJSVENfV0lOCi0KIFRFU1Qoc3RyaW5nX3RyaW1fVGVzdCwgVHJpbW1pbmcpIHsK
ICAgRVhQRUNUX0VRKCJ0ZW1wIiwgc3RyaW5nX3RyaW0oIlxuXHJcdCB0ZW1wIFxuXHJcdCIpKTsK
ICAgRVhQRUNUX0VRKCJ0ZW1wXG5cclx0IHRlbXAiLCBzdHJpbmdfdHJpbSgiIHRlbXBcblxyXHQg
dGVtcCAiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zeW5jaHJvbml6YXRpb24vcndfbG9ja19wb3NpeC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5bmNocm9uaXph
dGlvbi9yd19sb2NrX3Bvc2l4LmNjCmluZGV4IDdlMzdkYzkyNGZkZjgxY2I3MDkxNmUzMWFhNzUw
N2I2MmNlNjIwMDMuLjE1ZWYzZDcwNmU4YWVjYWRkZGJjY2ZlZDYxMThlZWEzMGJkZjRjMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3N5bmNocm9uaXphdGlvbi9yd19sb2NrX3Bvc2l4LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5bmNocm9uaXphdGlvbi9yd19s
b2NrX3Bvc2l4LmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9zeW5j
aHJvbml6YXRpb24vcndfbG9ja19wb3NpeC5oIgogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKIG5h
bWVzcGFjZSB3ZWJydGMgewogCiBSV0xvY2tQb3NpeDo6UldMb2NrUG9zaXgoKSA6IGxvY2tfKCkg
e30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3N5c3RlbS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9CVUlMRC5nbgppbmRleCBmMjJlZmUxNGEwNDg4
ZTMzYjE3OGQ2Y2I2ZWIzNTIyYzQzZjZhY2NjLi5lNWFhMzJiNGVmMWQ4YzUyMmE4MjQzYTE2YjQ0
MDQzYmU3YmMyMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL0JVSUxELmduCkBAIC02
NSwzICs2NSwxNSBAQCBydGNfc291cmNlX3NldCgicnRjX2V4cG9ydCIpIHsKICAgICAicnRjX2V4
cG9ydC5oIiwKICAgXQogfQorCitpZiAoaXNfbWFjIHx8IGlzX2lvcykgeworICBydGNfc291cmNl
X3NldCgiY29jb2FfdGhyZWFkaW5nIikgeworICAgIHNvdXJjZXMgPSBbCisgICAgICAiY29jb2Ff
dGhyZWFkaW5nLmgiLAorICAgICAgImNvY29hX3RocmVhZGluZy5tbSIsCisgICAgXQorICAgIGRl
cHMgPSBbCisgICAgICAiLi46Y2hlY2tzIiwKKyAgICBdCisgIH0KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9j
b2NvYV90aHJlYWRpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3N5c3RlbS9jb2NvYV90aHJlYWRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MThjYjcx
Nzg2YmFmMzRhYzBlM2QyODMwZGE4NTE4Mzk4YzJmNzI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2Nv
Y29hX3RocmVhZGluZy5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTgg
VGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
Zm5kZWYgUlRDX0JBU0VfU1lTVEVNX0NPQ09BX1RIUkVBRElOR19IXworI2RlZmluZSBSVENfQkFT
RV9TWVNURU1fQ09DT0FfVEhSRUFESU5HX0hfCisKKy8vIElmIENvY29hIGlzIHRvIGJlIHVzZWQg
b24gbW9yZSB0aGFuIG9uZSB0aHJlYWQsIGl0IG11c3Qga25vdyB0aGF0IHRoZQorLy8gYXBwbGlj
YXRpb24gaXMgbXVsdGl0aHJlYWRlZC4gIFNpbmNlIGl0J3MgcG9zc2libGUgdG8gZW50ZXIgQ29j
b2EgY29kZQorLy8gZnJvbSB0aHJlYWRzIGNyZWF0ZWQgYnkgcHRocmVhZF90aHJlYWRfY3JlYXRl
LCBDb2NvYSB3b24ndCBuZWNlc3NhcmlseQorLy8gYmUgYXdhcmUgdGhhdCB0aGUgYXBwbGljYXRp
b24gaXMgbXVsdGl0aHJlYWRlZC4gIFNwYXduaW5nIGFuIE5TVGhyZWFkIGlzCisvLyBlbm91Z2gg
dG8gZ2V0IENvY29hIHRvIHNldCB1cCBmb3IgbXVsdGl0aHJlYWRlZCBvcGVyYXRpb24sIHNvIHRo
aXMgaXMgZG9uZQorLy8gaWYgbmVjZXNzYXJ5IGJlZm9yZSBwdGhyZWFkX3RocmVhZF9jcmVhdGUg
c3Bhd25zIGFueSB0aHJlYWRzLgorLy8KKy8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2Rv
Y3VtZW50YXRpb24vQ29jb2EvQ29uY2VwdHVhbC9NdWx0aXRocmVhZGluZy9DcmVhdGluZ1RocmVh
ZHMvY2hhcHRlcl80X3NlY3Rpb25fNC5odG1sCit2b2lkIEluaXRDb2NvYU11bHRpVGhyZWFkaW5n
KCk7CisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfU1lTVEVNX0NPQ09BX1RIUkVBRElOR19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3lzdGVtL2NvY29hX3RocmVhZGluZy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9jb2NvYV90aHJlYWRpbmcubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzA5ODYyZTdlNWY3NTBkYjA1YWI4ODRlMDViZTI0YjAxNWNkM2RiYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3N5c3RlbS9jb2NvYV90aHJlYWRpbmcubW0KQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqICBD
b3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vY29jb2FfdGhyZWFkaW5nLmgiCisK
KyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCisjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCisKK3ZvaWQgSW5pdENvY29hTXVsdGlUaHJlYWRpbmcoKSB7CisgIHN0YXRpYyBC
T09MIGlzX2NvY29hX211bHRpdGhyZWFkZWQgPSBbTlNUaHJlYWQgaXNNdWx0aVRocmVhZGVkXTsK
KyAgaWYgKCFpc19jb2NvYV9tdWx0aXRocmVhZGVkKSB7CisgICAgLy8gK1tOU09iamVjdCBjbGFz
c10gaXMgaWRlbXBvdGVudC4KKyAgICBbTlNUaHJlYWQgZGV0YWNoTmV3VGhyZWFkU2VsZWN0b3I6
QHNlbGVjdG9yKGNsYXNzKSB0b1RhcmdldDpbTlNPYmplY3QgY2xhc3NdIHdpdGhPYmplY3Q6bmls
XTsKKyAgICBpc19jb2NvYV9tdWx0aXRocmVhZGVkID0gWUVTOworICAgIFJUQ19EQ0hFQ0soW05T
VGhyZWFkIGlzTXVsdGlUaHJlYWRlZF0pOworICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vZmlsZV93cmFw
cGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3lzdGVtL2ZpbGVfd3JhcHBlci5jYwppbmRleCA3MmY1ZjI1OWRiZGY2ODlhMDM1ODRiYmNk
NzUxNWIxMWI5YWI1MDM4Li5jMDMzYTc5MmE1MGMzZTkyMzg4OTYyNTVhYjZjNjU3ZTM4ODA5NDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zeXN0ZW0vZmlsZV93cmFwcGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9maWxlX3dyYXBwZXIuY2MKQEAg
LTEzLDE0ICsxMywxMSBAQAogI2lmZGVmIF9XSU4zMgogI2luY2x1ZGUgPFdpbmRvd3MuaD4KICNl
bHNlCi0jaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZW5kaWYKIAog
I2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLQogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogRklMRSogRmlsZU9wZW4oY29uc3QgY2hhciog
ZmlsZV9uYW1lX3V0ZjgsIGJvb2wgcmVhZF9vbmx5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vZmlsZV93cmFw
cGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zeXN0ZW0vZmlsZV93cmFwcGVyLmgKaW5kZXggNTQxMWIwNGY2OTkyZDc1ZDNlYWI5MjEyNjkw
OTQ5YjAzNmNkYzAwMC4uMGJiODZhMzk3ZjkwNjBiZmU0MzNkOWUzNTZmNGY5ODlmNjU1NWYwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvc3lzdGVtL2ZpbGVfd3JhcHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9maWxlX3dyYXBwZXIuaApAQCAtMTQs
NyArMTQsNiBAQAogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLSNp
bmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1
ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogCiAvLyBJbXBsZW1lbnRhdGlvbiB0aGF0
IGNhbiByZWFkIChleGNsdXNpdmUpIG9yIHdyaXRlIGZyb20vdG8gYSBmaWxlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lz
dGVtL3J0Y19leHBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgKaW5kZXggYjdhMGZlNDE2ODI2MDgyMTk3
Yjk4NDYyNzk4ZjVjYWFiZGJkZGM1OC4uZDFlYjYwYWQ3ODNhNWYxYzhhN2E4MDc0MmViZmRlZDMx
YWI3MzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oCkBA
IC0xNiw3ICsxNiw3IEBACiAvLyBXaGVuIFdlYlJUQyBpcyBidWlsdCBhcyBhIHN0YXRpYyBsaWJy
YXJ5IHRoZSBSVENfRVhQT1JUIG1hY3JvIGV4cGFuZHMgdG8KIC8vIG5vdGhpbmcuCiAKLSNpZmRl
ZiBDT01QT05FTlRfQlVJTEQKKyNpZmRlZiBXRUJSVENfRU5BQkxFX1NZTUJPTF9FWFBPUlQKIAog
I2lmZGVmIFdFQlJUQ19XSU4KIApAQCAtMzQsNyArMzQsNyBAQAogCiAjZW5kaWYgIC8vIFdFQlJU
Q19XSU4KIAotI2VuZGlmICAvLyBDT01QT05FTlRfQlVJTEQKKyNlbmRpZiAgLy8gV0VCUlRDX0VO
QUJMRV9TWU1CT0xfRVhQT1JUCiAKICNpZm5kZWYgUlRDX0VYUE9SVAogI2RlZmluZSBSVENfRVhQ
T1JUCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS90YXNrX3F1ZXVlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlLmgKaW5kZXggYjhiMzA3Y2E2YTQwNTgzNTRl
NGIxYjg4ODY5ODg0OGI1Mzk0ZTc5My4uODg4ZTIwMzk2N2NkMzY1YWQwODJiMzNlODA5ZGMxYTc0
OWMxNmQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWUuaApAQCAtMTgsNiArMTgsNyBA
QAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Nv
bnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSBydGMgewpAQCAtMTUwLDcgKzE1
MSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gTmV3Q2xvc3VyZShDbG9z
dXJlJiYgY2xvc3VyZSwKIC8vIFRhc2tRdWV1ZSBpdHNlbGYgaGFzIGJlZW4gZGVsZXRlZCBvciBp
dCBtYXkgaGFwcGVuIHN5bmNocm9ub3VzbHkgd2hpbGUgdGhlCiAvLyBUYXNrUXVldWUgaW5zdGFu
Y2UgaXMgYmVpbmcgZGVsZXRlZC4gIFRoaXMgbWF5IHZhcnkgZnJvbSBvbmUgT1MgdG8gdGhlIG5l
eHQKIC8vIHNvIGFzc3VtcHRpb25zIGFib3V0IGxpZmV0aW1lcyBvZiBwZW5kaW5nIHRhc2tzIHNo
b3VsZCBub3QgYmUgbWFkZS4KLWNsYXNzIFJUQ19MT0NLQUJMRSBUYXNrUXVldWUgeworY2xhc3Mg
UlRDX0xPQ0tBQkxFIFJUQ19FWFBPUlQgVGFza1F1ZXVlIHsKICBwdWJsaWM6CiAgIC8vIFRhc2tR
dWV1ZSBwcmlvcml0eSBsZXZlbHMuIE9uIHNvbWUgcGxhdGZvcm1zIHRoZXNlIHdpbGwgbWFwIHRv
IHRocmVhZAogICAvLyBwcmlvcml0aWVzLCBvbiBvdGhlcnMgc3VjaCBhcyBNYWMgYW5kIGlPUywg
R0NEIHF1ZXVlIHByaW9yaXRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlX2Zvcl90ZXN0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVl
X2Zvcl90ZXN0LmgKaW5kZXggNzBjNThmYjUxNmMxYWE2YWQ0M2VkZmVhYTkzYmQzY2FiMmRhY2Ex
YS4uOTE2MmU4MWI4OGFjZTk1ODJiMDhkOGYyMGQzOTNjYzFlMGEyNGNhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19x
dWV1ZV9mb3JfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfZm9yX3Rlc3QuaApAQCAtMzMsNyArMzMsNyBAQCBj
bGFzcyBSVENfTE9DS0FCTEUgVGFza1F1ZXVlRm9yVGVzdCA6IHB1YmxpYyBUYXNrUXVldWUgewog
ICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xvc3VyZT4KICAgdm9pZCBTZW5kVGFzayhDbG9zdXJlKiB0YXNr
KSB7CiAgICAgUlRDX0RDSEVDSyghSXNDdXJyZW50KCkpOwotICAgIHJ0Yzo6RXZlbnQgZXZlbnQo
ZmFsc2UsIGZhbHNlKTsKKyAgICBydGM6OkV2ZW50IGV2ZW50OwogICAgIFBvc3RUYXNrKHJ0Yzo6
TmV3Q2xvc3VyZSgKICAgICAgICAgWyZ0YXNrXSgpIHsKICAgICAgICAgICBSVENfQ0hFQ0tfRVEo
ZmFsc2UsIHN0YXRpY19jYXN0PFF1ZXVlZFRhc2sqPih0YXNrKS0+UnVuKCkpOwpAQCAtNDcsNyAr
NDcsNyBAQCBjbGFzcyBSVENfTE9DS0FCTEUgVGFza1F1ZXVlRm9yVGVzdCA6IHB1YmxpYyBUYXNr
UXVldWUgewogICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xvc3VyZT4KICAgdm9pZCBTZW5kVGFzayhDbG9z
dXJlJiYgdGFzaykgewogICAgIFJUQ19EQ0hFQ0soIUlzQ3VycmVudCgpKTsKLSAgICBydGM6OkV2
ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgICAgcnRjOjpFdmVudCBldmVudDsKICAgICBQb3N0
VGFzayhydGM6Ok5ld0Nsb3N1cmUoc3RkOjptb3ZlKHRhc2spLCBbJmV2ZW50XSgpIHsgZXZlbnQu
U2V0KCk7IH0pKTsKICAgICBldmVudC5XYWl0KHJ0Yzo6RXZlbnQ6OmtGb3JldmVyKTsKICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvdGFza19xdWV1ZV9saWJldmVudC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfbGliZXZlbnQuY2MKaW5kZXggY2Jl
ZDMzMzRkNzdmZDdhYTg2NTdhYjg5NWE4ZjEzY2VhZWI1NjU4NC4uOTA1YmJkYWMwZTJlNWExYmVk
ZDFlNjRhZmZlZWY5ZDA4MzFkOGZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZV9saWJldmVudC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNr
X3F1ZXVlX2xpYmV2ZW50LmNjCkBAIC0xMCwzMCArMTAsMzEgQEAKIAogI2luY2x1ZGUgInJ0Y19i
YXNlL3Rhc2tfcXVldWUuaCIKIAorI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwu
aD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0jaW5jbHVkZSA8
c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1
ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNpZiBkZWZpbmVkKFdFQlJU
Q19MSU5VWCkKLSNpbmNsdWRlIDxldmVudDIvZXZlbnQuaD4KLSNpbmNsdWRlIDxldmVudDIvZXZl
bnRfY29tcGF0Lmg+Ci0jaW5jbHVkZSA8ZXZlbnQyL2V2ZW50X3N0cnVjdC5oPgotI2Vsc2UKICNp
bmNsdWRlICJiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L2V2ZW50LmgiCi0jZW5kaWYKLQogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2Vj
dGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZv
cm1fdGhyZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZj
b3VudGVkb2JqZWN0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vdW51c2VkLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGFz
a19xdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWVfcG9zaXguaCIKKyNpbmNs
dWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90
aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlX3N0ZGxpYi5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rh
c2tfcXVldWVfc3RkbGliLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYjBlZDI4Yjk1MWViYzkxMGUxMDM4Nzhi
MTg5M2FjN2I4MDg4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlX3N0ZGxpYi5jYwpAQCAtMCww
ICsxLDM5OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tf
cXVldWUuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8Y29uZGl0aW9uX3ZhcmlhYmxlPgorI2luY2x1ZGUg
PG1hcD4KKyNpbmNsdWRlIDxxdWV1ZT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvcmVmY291bnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0Lmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvdGltZXV0aWxzLmgiCisKK25hbWVzcGFjZSBydGMgeworbmFtZXNwYWNlIHsKKwordXNp
bmcgUHJpb3JpdHkgPSBUYXNrUXVldWU6OlByaW9yaXR5OworCitUaHJlYWRQcmlvcml0eSBUYXNr
UXVldWVQcmlvcml0eVRvVGhyZWFkUHJpb3JpdHkoUHJpb3JpdHkgcHJpb3JpdHkpIHsKKyAgc3dp
dGNoIChwcmlvcml0eSkgeworICAgIGNhc2UgUHJpb3JpdHk6OkhJR0g6CisgICAgICByZXR1cm4g
a1JlYWx0aW1lUHJpb3JpdHk7CisgICAgY2FzZSBQcmlvcml0eTo6TE9XOgorICAgICAgcmV0dXJu
IGtMb3dQcmlvcml0eTsKKyAgICBjYXNlIFByaW9yaXR5OjpOT1JNQUw6CisgICAgICByZXR1cm4g
a05vcm1hbFByaW9yaXR5OworICAgIGRlZmF1bHQ6CisgICAgICBSVENfTk9UUkVBQ0hFRCgpOwor
ICAgICAgcmV0dXJuIGtOb3JtYWxQcmlvcml0eTsKKyAgfQorICByZXR1cm4ga05vcm1hbFByaW9y
aXR5OworfQorCit9ICAvLyBuYW1lc3BhY2UKKworY2xhc3MgVGFza1F1ZXVlOjpJbXBsIDogcHVi
bGljIFJlZkNvdW50SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIEltcGwoY29uc3QgY2hhciogcXVl
dWVfbmFtZSwgVGFza1F1ZXVlKiBxdWV1ZSwgUHJpb3JpdHkgcHJpb3JpdHkpOworICB+SW1wbCgp
IG92ZXJyaWRlOworCisgIHN0YXRpYyBUYXNrUXVldWU6OkltcGwqIEN1cnJlbnQoKTsKKyAgc3Rh
dGljIFRhc2tRdWV1ZSogQ3VycmVudFF1ZXVlKCk7CisKKyAgLy8gVXNlZCBmb3IgRENIRUNLaW5n
IHRoZSBjdXJyZW50IHF1ZXVlLgorICBib29sIElzQ3VycmVudCgpIGNvbnN0OworCisgIHRlbXBs
YXRlIDxjbGFzcyBDbG9zdXJlLAorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
IXN0ZDo6aXNfY29udmVydGlibGU8CisgICAgICAgICAgICAgICAgQ2xvc3VyZSwKKyAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4+Ojp2YWx1ZT46OnR5cGUqID0gbnVs
bHB0cj4KKyAgdm9pZCBQb3N0VGFzayhDbG9zdXJlJiYgY2xvc3VyZSkgeworICAgIFBvc3RUYXNr
KE5ld0Nsb3N1cmUoc3RkOjpmb3J3YXJkPENsb3N1cmU+KGNsb3N1cmUpKSk7CisgIH0KKworICB2
b2lkIFBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiB0YXNrKTsKKyAgdm9pZCBQ
b3N0VGFza0FuZFJlcGx5KHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiB0YXNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHJlcGx5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVGFza1F1ZXVlOjpJbXBsKiByZXBseV9xdWV1ZSk7CisKKyAg
dm9pZCBQb3N0RGVsYXllZFRhc2soc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHRhc2ssIHVp
bnQzMl90IG1pbGxpc2Vjb25kcyk7CisKKyAgY2xhc3MgV29ya2VyVGhyZWFkIDogcHVibGljIFBs
YXRmb3JtVGhyZWFkIHsKKyAgIHB1YmxpYzoKKyAgICBXb3JrZXJUaHJlYWQoVGhyZWFkUnVuRnVu
Y3Rpb24gZnVuYywKKyAgICAgICAgICAgICAgICAgdm9pZCogb2JqLAorICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiB0aHJlYWRfbmFtZSwKKyAgICAgICAgICAgICAgICAgVGhyZWFkUHJpb3Jp
dHkgcHJpb3JpdHkpCisgICAgICAgIDogUGxhdGZvcm1UaHJlYWQoZnVuYywgb2JqLCB0aHJlYWRf
bmFtZSwgcHJpb3JpdHkpIHt9CisgIH07CisKKyAgdXNpbmcgT3JkZXJJZCA9IHVpbnQ2NF90Owor
CisgIHN0cnVjdCBEZWxheWVkRW50cnlUaW1lb3V0IHsKKyAgICBpbnQ2NF90IG5leHRfZmlyZV9h
dF9tc197fTsKKyAgICBPcmRlcklkIG9yZGVyX3t9OworCisgICAgYm9vbCBvcGVyYXRvcjwoY29u
c3QgRGVsYXllZEVudHJ5VGltZW91dCYgbykgY29uc3QgeworICAgICAgcmV0dXJuIHN0ZDo6dGll
KG5leHRfZmlyZV9hdF9tc18sIG9yZGVyXykgPAorICAgICAgICAgICAgIHN0ZDo6dGllKG8ubmV4
dF9maXJlX2F0X21zXywgby5vcmRlcl8pOworICAgIH0KKyAgfTsKKworICBzdHJ1Y3QgTmV4dFRh
c2sgeworICAgIGJvb2wgZmluYWxfdGFza197ZmFsc2V9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxR
dWV1ZWRUYXNrPiBydW5fdGFza187CisgICAgaW50NjRfdCBzbGVlcF90aW1lX21zX3t9OworICB9
OworCisgcHJvdGVjdGVkOgorICBOZXh0VGFzayBHZXROZXh0VGFzaygpOworCisgcHJpdmF0ZToK
KyAgLy8gVGhlIFRocmVhZFF1ZXVlOjpDdXJyZW50KCkgbWV0aG9kIHJlcXVpcmVzIHRoYXQgdGhl
IGN1cnJlbnQgdGhyZWFkCisgIC8vIHJldHVybnMgdGhlIHRhc2sgcXVldWUgaWYgdGhlIGN1cnJl
bnQgdGhyZWFkIGlzIHRoZSBhY3RpdmUgdGFzaworICAvLyBxdWV1ZSBhbmQgdGhpcyB2YXJpYWJs
ZSBob2xkcyB0aGUgdmFsdWUgbmVlZGVkIGluIHRocmVhZF9sb2NhbCB0bworICAvLyBvbiB0aGUg
aW5pdGlhbGl6ZWQgd29ya2VyIHRocmVhZCBob2xkaW5nIHRoZSBxdWV1ZS4KKyAgc3RhdGljIHRo
cmVhZF9sb2NhbCBUYXNrUXVldWU6OkltcGwqIHRocmVhZF9jb250ZXh0XzsKKworICBzdGF0aWMg
dm9pZCBUaHJlYWRNYWluKHZvaWQqIGNvbnRleHQpOworCisgIHZvaWQgUHJvY2Vzc1Rhc2tzKCk7
CisKKyAgdm9pZCBOb3RpZnlXYWtlKCk7CisKKyAgLy8gVGhlIGJhY2sgcG9pbnRlciBmcm9tIHRo
ZSBvd25lciB0YXNrIHF1ZXVlIG9iamVjdAorICAvLyBmcm9tIHRoaXMgaW1wbGVtZW50YXRpb24g
ZGV0YWlsLgorICBUYXNrUXVldWUqIGNvbnN0IHF1ZXVlXzsKKworICAvLyBJbmRpY2F0ZXMgaWYg
dGhlIHRocmVhZCBoYXMgc3RhcnRlZC4KKyAgRXZlbnQgc3RhcnRlZF87CisKKyAgLy8gSW5kaWNh
dGVzIGlmIHRoZSB0aHJlYWQgaGFzIHN0b3BwZWQuCisgIEV2ZW50IHN0b3BwZWRfOworCisgIC8v
IFNpZ25hbGVkIHdoZW5ldmVyIGEgbmV3IHRhc2sgaXMgcGVuZGluZy4KKyAgRXZlbnQgZmxhZ19u
b3RpZnlfOworCisgIC8vIENvbnRhaW5zIHRoZSBhY3RpdmUgd29ya2VyIHRocmVhZCBhc3NpZ25l
ZCB0byBwcm9jZXNzaW5nCisgIC8vIHRhc2tzIChpbmNsdWRpbmcgZGVsYXllZCB0YXNrcykuCisg
IFdvcmtlclRocmVhZCB0aHJlYWRfOworCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHBlbmRpbmdf
bG9ja187CisKKyAgLy8gSW5kaWNhdGVzIGlmIHRoZSB3b3JrZXIgdGhyZWFkIG5lZWRzIHRvIHNo
dXRkb3duIG5vdy4KKyAgYm9vbCB0aHJlYWRfc2hvdWxkX3F1aXRfIFJUQ19HVUFSREVEX0JZKHBl
bmRpbmdfbG9ja18pe2ZhbHNlfTsKKworICAvLyBIb2xkcyB0aGUgbmV4dCBvcmRlciB0byB1c2Ug
Zm9yIHRoZSBuZXh0IHRhc2sgdG8gYmUKKyAgLy8gcHV0IGludG8gb25lIG9mIHRoZSBwZW5kaW5n
IHF1ZXVlcy4KKyAgT3JkZXJJZCB0aHJlYWRfcG9zdGluZ19vcmRlcl8gUlRDX0dVQVJERURfQlko
cGVuZGluZ19sb2NrXyl7fTsKKworICAvLyBUaGUgbGlzdCBvZiBhbGwgcGVuZGluZyB0YXNrcyB0
aGF0IG5lZWQgdG8gYmUgcHJvY2Vzc2VkIGluIHRoZQorICAvLyBGSUZPIHF1ZXVlIG9yZGVyaW5n
IG9uIHRoZSB3b3JrZXIgdGhyZWFkLgorICBzdGQ6OnF1ZXVlPHN0ZDo6cGFpcjxPcmRlcklkLCBz
dGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4+PiBwZW5kaW5nX3F1ZXVlXworICAgICAgUlRDX0dV
QVJERURfQlkocGVuZGluZ19sb2NrXyk7CisKKyAgLy8gVGhlIGxpc3Qgb2YgYWxsIHBlbmRpbmcg
dGFza3MgdGhhdCBuZWVkIHRvIGJlIHByb2Nlc3NlZCBhdCBhIGZ1dHVyZQorICAvLyB0aW1lIGJh
c2VkIHVwb24gYSBkZWxheS4gT24gdGhlIG9mZiBjaGFuZ2UgdGhlIGRlbGF5ZWQgdGFzayBzaG91
bGQKKyAgLy8gaGFwcGVuIGF0IGV4YWN0bHkgdGhlIHNhbWUgdGltZSBpbnRlcnZhbCBhcyBhbm90
aGVyIHRhc2sgdGhlbiB0aGUKKyAgLy8gdGFzayBpcyBwcm9jZXNzZWQgYmFzZWQgb24gRklGTyBv
cmRlcmluZy4gc3RkOjpwcmlvcml0eV9xdWV1ZSB3YXMKKyAgLy8gY29uc2lkZXJlZCBidXQgcmVq
ZWN0ZWQgZHVlIHRvIGl0cyBpbmFiaWxpdHkgdG8gZXh0cmFjdCB0aGUKKyAgLy8gc3RkOjp1bmlx
dWVfcHRyIG91dCBvZiB0aGUgcXVldWUgd2l0aG91dCB0aGUgcHJlc2VuY2Ugb2YgYSBoYWNrLgor
ICBzdGQ6Om1hcDxEZWxheWVkRW50cnlUaW1lb3V0LCBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFz
az4+IGRlbGF5ZWRfcXVldWVfCisgICAgICBSVENfR1VBUkRFRF9CWShwZW5kaW5nX2xvY2tfKTsK
K307CisKKy8vIHN0YXRpYwordGhyZWFkX2xvY2FsIFRhc2tRdWV1ZTo6SW1wbCogVGFza1F1ZXVl
OjpJbXBsOjp0aHJlYWRfY29udGV4dF8gPSBudWxscHRyOworCitUYXNrUXVldWU6OkltcGw6Oklt
cGwoY29uc3QgY2hhciogcXVldWVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBUYXNrUXVl
dWUqIHF1ZXVlLAorICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5IHByaW9yaXR5KQorICAg
IDogcXVldWVfKHF1ZXVlKSwKKyAgICAgIHN0YXJ0ZWRfKC8qbWFudWFsX3Jlc2V0PSovZmFsc2Us
IC8qaW5pdGlhbGx5X3NpZ25hbGVkPSovZmFsc2UpLAorICAgICAgc3RvcHBlZF8oLyptYW51YWxf
cmVzZXQ9Ki9mYWxzZSwgLyppbml0aWFsbHlfc2lnbmFsZWQ9Ki9mYWxzZSksCisgICAgICBmbGFn
X25vdGlmeV8oLyptYW51YWxfcmVzZXQ9Ki9mYWxzZSwgLyppbml0aWFsbHlfc2lnbmFsZWQ9Ki9m
YWxzZSksCisgICAgICB0aHJlYWRfKCZUYXNrUXVldWU6OkltcGw6OlRocmVhZE1haW4sCisgICAg
ICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgIHF1ZXVlX25hbWUsCisgICAgICAgICAgICAg
IFRhc2tRdWV1ZVByaW9yaXR5VG9UaHJlYWRQcmlvcml0eShwcmlvcml0eSkpIHsKKyAgUlRDX0RD
SEVDSyhxdWV1ZV9uYW1lKTsKKyAgdGhyZWFkXy5TdGFydCgpOworICBzdGFydGVkXy5XYWl0KEV2
ZW50OjprRm9yZXZlcik7Cit9CisKK1Rhc2tRdWV1ZTo6SW1wbDo6fkltcGwoKSB7CisgIFJUQ19E
Q0hFQ0soIUlzQ3VycmVudCgpKTsKKworICB7CisgICAgQ3JpdFNjb3BlIGxvY2soJnBlbmRpbmdf
bG9ja18pOworICAgIHRocmVhZF9zaG91bGRfcXVpdF8gPSB0cnVlOworICB9CisKKyAgTm90aWZ5
V2FrZSgpOworCisgIHN0b3BwZWRfLldhaXQoRXZlbnQ6OmtGb3JldmVyKTsKKyAgdGhyZWFkXy5T
dG9wKCk7Cit9CisKKy8vIHN0YXRpYworVGFza1F1ZXVlOjpJbXBsKiBUYXNrUXVldWU6OkltcGw6
OkN1cnJlbnQoKSB7CisgIHJldHVybiB0aHJlYWRfY29udGV4dF87Cit9CisKKy8vIHN0YXRpYwor
VGFza1F1ZXVlKiBUYXNrUXVldWU6OkltcGw6OkN1cnJlbnRRdWV1ZSgpIHsKKyAgVGFza1F1ZXVl
OjpJbXBsKiBjdXJyZW50ID0gQ3VycmVudCgpOworICByZXR1cm4gY3VycmVudCA/IGN1cnJlbnQt
PnF1ZXVlXyA6IG51bGxwdHI7Cit9CisKK2Jvb2wgVGFza1F1ZXVlOjpJbXBsOjpJc0N1cnJlbnQo
KSBjb25zdCB7CisgIHJldHVybiBJc1RocmVhZFJlZkVxdWFsKHRocmVhZF8uR2V0VGhyZWFkUmVm
KCksIEN1cnJlbnRUaHJlYWRSZWYoKSk7Cit9CisKK3ZvaWQgVGFza1F1ZXVlOjpJbXBsOjpQb3N0
VGFzayhzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaykgeworICB7CisgICAgQ3JpdFNj
b3BlIGxvY2soJnBlbmRpbmdfbG9ja18pOworICAgIE9yZGVySWQgb3JkZXIgPSB0aHJlYWRfcG9z
dGluZ19vcmRlcl8rKzsKKworICAgIHBlbmRpbmdfcXVldWVfLnB1c2goc3RkOjpwYWlyPE9yZGVy
SWQsIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPj4oCisgICAgICAgIG9yZGVyLCBzdGQ6Om1v
dmUodGFzaykpKTsKKyAgfQorCisgIE5vdGlmeVdha2UoKTsKK30KKwordm9pZCBUYXNrUXVldWU6
OkltcGw6OlBvc3REZWxheWVkVGFzayhzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbWlsbGlzZWNv
bmRzKSB7CisgIGF1dG8gZmlyZV9hdCA9IHJ0Yzo6VGltZU1pbGxpcygpICsgbWlsbGlzZWNvbmRz
OworCisgIERlbGF5ZWRFbnRyeVRpbWVvdXQgZGVsYXk7CisgIGRlbGF5Lm5leHRfZmlyZV9hdF9t
c18gPSBmaXJlX2F0OworCisgIHsKKyAgICBDcml0U2NvcGUgbG9jaygmcGVuZGluZ19sb2NrXyk7
CisgICAgZGVsYXkub3JkZXJfID0gKyt0aHJlYWRfcG9zdGluZ19vcmRlcl87CisgICAgZGVsYXll
ZF9xdWV1ZV9bZGVsYXldID0gc3RkOjptb3ZlKHRhc2spOworICB9CisKKyAgTm90aWZ5V2FrZSgp
OworfQorCit2b2lkIFRhc2tRdWV1ZTo6SW1wbDo6UG9zdFRhc2tBbmRSZXBseShzdGQ6OnVuaXF1
ZV9wdHI8UXVldWVkVGFzaz4gdGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiByZXBseSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tRdWV1ZTo6SW1wbCogcmVwbHlfcXVldWUpIHsK
KyAgUXVldWVkVGFzayogdGFza19wdHIgPSB0YXNrLnJlbGVhc2UoKTsKKyAgUXVldWVkVGFzayog
cmVwbHlfdGFza19wdHIgPSByZXBseS5yZWxlYXNlKCk7CisgIFBvc3RUYXNrKFt0YXNrX3B0ciwg
cmVwbHlfdGFza19wdHIsIHJlcGx5X3F1ZXVlXSgpIHsKKyAgICBpZiAodGFza19wdHItPlJ1bigp
KQorICAgICAgZGVsZXRlIHRhc2tfcHRyOworCisgICAgcmVwbHlfcXVldWUtPlBvc3RUYXNrKHN0
ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPihyZXBseV90YXNrX3B0cikpOworICB9KTsKK30KKwor
VGFza1F1ZXVlOjpJbXBsOjpOZXh0VGFzayBUYXNrUXVldWU6OkltcGw6OkdldE5leHRUYXNrKCkg
eworICBOZXh0VGFzayByZXN1bHR7fTsKKworICBhdXRvIHRpY2sgPSBydGM6OlRpbWVNaWxsaXMo
KTsKKworICBDcml0U2NvcGUgbG9jaygmcGVuZGluZ19sb2NrXyk7CisKKyAgaWYgKHRocmVhZF9z
aG91bGRfcXVpdF8pIHsKKyAgICByZXN1bHQuZmluYWxfdGFza18gPSB0cnVlOworICAgIHJldHVy
biByZXN1bHQ7CisgIH0KKworICBpZiAoZGVsYXllZF9xdWV1ZV8uc2l6ZSgpID4gMCkgeworICAg
IGF1dG8gZGVsYXllZF9lbnRyeSA9IGRlbGF5ZWRfcXVldWVfLmJlZ2luKCk7CisgICAgY29uc3Qg
YXV0byYgZGVsYXlfaW5mbyA9IGRlbGF5ZWRfZW50cnktPmZpcnN0OworICAgIGF1dG8mIGRlbGF5
X3J1biA9IGRlbGF5ZWRfZW50cnktPnNlY29uZDsKKyAgICBpZiAodGljayA+PSBkZWxheV9pbmZv
Lm5leHRfZmlyZV9hdF9tc18pIHsKKyAgICAgIGlmIChwZW5kaW5nX3F1ZXVlXy5zaXplKCkgPiAw
KSB7CisgICAgICAgIGF1dG8mIGVudHJ5ID0gcGVuZGluZ19xdWV1ZV8uZnJvbnQoKTsKKyAgICAg
ICAgYXV0byYgZW50cnlfb3JkZXIgPSBlbnRyeS5maXJzdDsKKyAgICAgICAgYXV0byYgZW50cnlf
cnVuID0gZW50cnkuc2Vjb25kOworICAgICAgICBpZiAoZW50cnlfb3JkZXIgPCBkZWxheV9pbmZv
Lm9yZGVyXykgeworICAgICAgICAgIHJlc3VsdC5ydW5fdGFza18gPSBzdGQ6Om1vdmUoZW50cnlf
cnVuKTsKKyAgICAgICAgICBwZW5kaW5nX3F1ZXVlXy5wb3AoKTsKKyAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJlc3VsdC5ydW5fdGFza18gPSBz
dGQ6Om1vdmUoZGVsYXlfcnVuKTsKKyAgICAgIGRlbGF5ZWRfcXVldWVfLmVyYXNlKGRlbGF5ZWRf
ZW50cnkpOworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICByZXN1bHQuc2xlZXBf
dGltZV9tc18gPSBkZWxheV9pbmZvLm5leHRfZmlyZV9hdF9tc18gLSB0aWNrOworICB9CisKKyAg
aWYgKHBlbmRpbmdfcXVldWVfLnNpemUoKSA+IDApIHsKKyAgICBhdXRvJiBlbnRyeSA9IHBlbmRp
bmdfcXVldWVfLmZyb250KCk7CisgICAgcmVzdWx0LnJ1bl90YXNrXyA9IHN0ZDo6bW92ZShlbnRy
eS5zZWNvbmQpOworICAgIHBlbmRpbmdfcXVldWVfLnBvcCgpOworICB9CisKKyAgcmV0dXJuIHJl
c3VsdDsKK30KKworLy8gc3RhdGljCit2b2lkIFRhc2tRdWV1ZTo6SW1wbDo6VGhyZWFkTWFpbih2
b2lkKiBjb250ZXh0KSB7CisgIFRhc2tRdWV1ZTo6SW1wbCogbWUgPSBzdGF0aWNfY2FzdDxUYXNr
UXVldWU6OkltcGwqPihjb250ZXh0KTsKKyAgbWUtPlByb2Nlc3NUYXNrcygpOworfQorCit2b2lk
IFRhc2tRdWV1ZTo6SW1wbDo6UHJvY2Vzc1Rhc2tzKCkgeworICB0aHJlYWRfY29udGV4dF8gPSB0
aGlzOworICBzdGFydGVkXy5TZXQoKTsKKworICB3aGlsZSAodHJ1ZSkgeworICAgIGF1dG8gdGFz
ayA9IEdldE5leHRUYXNrKCk7CisKKyAgICBpZiAodGFzay5maW5hbF90YXNrXykKKyAgICAgIGJy
ZWFrOworCisgICAgaWYgKHRhc2sucnVuX3Rhc2tfKSB7CisgICAgICAvLyBwcm9jZXNzIGVudHJ5
IGltbWVkaWF0ZWx5IHRoZW4gdHJ5IGFnYWluCisgICAgICBRdWV1ZWRUYXNrKiByZWxlYXNlX3B0
ciA9IHRhc2sucnVuX3Rhc2tfLnJlbGVhc2UoKTsKKyAgICAgIGlmIChyZWxlYXNlX3B0ci0+UnVu
KCkpCisgICAgICAgIGRlbGV0ZSByZWxlYXNlX3B0cjsKKworICAgICAgLy8gYXR0ZW1wdCB0byBz
bGVlcCBhZ2FpbgorICAgICAgY29udGludWU7CisgICAgfQorCisgICAgaWYgKDAgPT0gdGFzay5z
bGVlcF90aW1lX21zXykKKyAgICAgIGZsYWdfbm90aWZ5Xy5XYWl0KEV2ZW50OjprRm9yZXZlcik7
CisgICAgZWxzZQorICAgICAgZmxhZ19ub3RpZnlfLldhaXQodGFzay5zbGVlcF90aW1lX21zXyk7
CisgIH0KKworICBzdG9wcGVkXy5TZXQoKTsKK30KKwordm9pZCBUYXNrUXVldWU6OkltcGw6Ok5v
dGlmeVdha2UoKSB7CisgIC8vIFRoZSBxdWV1ZSBob2xkcyBwZW5kaW5nIHRhc2tzIHRvIGNvbXBs
ZXRlLiBFaXRoZXIgdGFza3MgYXJlIHRvIGJlCisgIC8vIGV4ZWN1dGVkIGltbWVkaWF0ZWx5IG9y
IHRhc2tzIGFyZSB0byBiZSBydW4gYXQgc29tZSBmdXR1cmUgZGVsYXllZCB0aW1lLgorICAvLyBG
b3IgaW1tZWRpYXRlIHRhc2tzIHRoZSB0YXNrIHF1ZXVlJ3MgdGhyZWFkIGlzIGJ1c3kgcnVubmlu
ZyB0aGUgdGFzayBhbmQKKyAgLy8gdGhlIHRocmVhZCB3aWxsIG5vdCBiZSB3YWl0aW5nIG9uIHRo
ZSBmbGFnX25vdGlmeV8gZXZlbnQuIElmIG5vIGltbWVkaWF0ZQorICAvLyB0YXNrcyBhcmUgYXZh
aWxhYmxlIGJ1dCBhIGRlbGF5ZWQgdGFzayBpcyBwZW5kaW5nIHRoZW4gdGhlIHRocmVhZCB3aWxs
IGJlCisgIC8vIHdhaXRpbmcgb24gZmxhZ19ub3RpZnlfIHdpdGggYSBkZWxheWVkIHRpbWUtb3V0
IG9mIHRoZSBuZWFyZXN0IHRpbWVkIHRhc2sKKyAgLy8gdG8gcnVuLiBJZiBubyBpbW1lZGlhdGUg
b3IgcGVuZGluZyB0YXNrcyBhcmUgYXZhaWxhYmxlLCB0aGUgdGhyZWFkIHdpbGwKKyAgLy8gd2Fp
dCBvbiBmbGFnX25vdGlmeV8gdW50aWwgc2lnbmFsZWQgdGhhdCBhIHRhc2sgaGFzIGJlZW4gYWRk
ZWQgKG9yIHRoZQorICAvLyB0aHJlYWQgdG8gYmUgdG9sZCB0byBzaHV0ZG93bikuCisKKyAgLy8g
SW4gYWxsIGNhc2VzLCB3aGVuIGEgbmV3IGltbWVkaWF0ZSB0YXNrLCBkZWxheWVkIHRhc2ssIG9y
IHJlcXVlc3QgdG8KKyAgLy8gc2h1dGRvd24gdGhlIHRocmVhZCBpcyBhZGRlZCB0aGUgZmxhZ19u
b3RpZnlfIGlzIHNpZ25hbGVkIGFmdGVyLiBJZiB0aGUKKyAgLy8gdGhyZWFkIHdhcyB3YWl0aW5n
IHRoZW4gdGhlIHRocmVhZCB3aWxsIHdha2UgdXAgaW1tZWRpYXRlbHkgYW5kIHJlLWFzc2Vzcwor
ICAvLyB3aGF0IHRhc2sgbmVlZHMgdG8gYmUgcnVuIG5leHQgKGkuZS4gcnVuIGEgdGFzayBub3cs
IHdhaXQgZm9yIHRoZSBuZWFyZXN0CisgIC8vIHRpbWVkIGRlbGF5ZWQgdGFzaywgb3Igc2h1dGRv
d24gdGhlIHRocmVhZCkuIElmIHRoZSB0aHJlYWQgd2FzIG5vdCB3YWl0aW5nCisgIC8vIHRoZW4g
dGhlIHRocmVhZCB3aWxsIHJlbWFpbmVkIHNpZ25hbGVkIHRvIHdha2UgdXAgdGhlIG5leHQgdGlt
ZSBhbnkKKyAgLy8gYXR0ZW1wdCB0byB3YWl0IG9uIHRoZSBmbGFnX25vdGlmeV8gZXZlbnQgb2Nj
dXJzLgorCisgIC8vIEFueSBpbW1lZGlhdGUgb3IgZGVsYXllZCBwZW5kaW5nIHRhc2sgKG9yIHJl
cXVlc3QgdG8gc2h1dGRvd24gdGhlIHRocmVhZCkKKyAgLy8gbXVzdCBhbHdheXMgYmUgYWRkZWQg
dG8gdGhlIHF1ZXVlIHByaW9yIHRvIHNpZ25hbGluZyBmbGFnX25vdGlmeV8gdG8gd2FrZQorICAv
LyB1cCB0aGUgcG9zc2libHkgc2xlZXBpbmcgdGhyZWFkLiBUaGlzIHByZXZlbnRzIGEgcmFjZSBj
b25kaXRpb24gd2hlcmUgdGhlCisgIC8vIHRocmVhZCBpcyBub3RpZmllZCB0byB3YWtlIHVwIGJ1
dCB0aGUgdGFzayBxdWV1ZSdzIHRocmVhZCBmaW5kcyBub3RoaW5nIHRvCisgIC8vIGRvIHNvIGl0
IHdhaXRzIG9uY2UgYWdhaW4gdG8gYmUgc2lnbmFsZWQgd2hlcmUgc3VjaCBhIHNpZ25hbCBtYXkg
bmV2ZXIKKyAgLy8gaGFwcGVuLgorICBmbGFnX25vdGlmeV8uU2V0KCk7Cit9CisKKy8vIEJvaWxl
cnBsYXRlIGZvciB0aGUgUElNUEwgcGF0dGVybi4KK1Rhc2tRdWV1ZTo6VGFza1F1ZXVlKGNvbnN0
IGNoYXIqIHF1ZXVlX25hbWUsIFByaW9yaXR5IHByaW9yaXR5KQorICAgIDogaW1wbF8obmV3IFJl
ZkNvdW50ZWRPYmplY3Q8VGFza1F1ZXVlOjpJbXBsPihxdWV1ZV9uYW1lLCB0aGlzLCBwcmlvcml0
eSkpIHsKK30KKworVGFza1F1ZXVlOjp+VGFza1F1ZXVlKCkge30KKworLy8gc3RhdGljCitUYXNr
UXVldWUqIFRhc2tRdWV1ZTo6Q3VycmVudCgpIHsKKyAgcmV0dXJuIFRhc2tRdWV1ZTo6SW1wbDo6
Q3VycmVudFF1ZXVlKCk7Cit9CisKKy8vIFVzZWQgZm9yIERDSEVDS2luZyB0aGUgY3VycmVudCBx
dWV1ZS4KK2Jvb2wgVGFza1F1ZXVlOjpJc0N1cnJlbnQoKSBjb25zdCB7CisgIHJldHVybiBpbXBs
Xy0+SXNDdXJyZW50KCk7Cit9CisKK3ZvaWQgVGFza1F1ZXVlOjpQb3N0VGFzayhzdGQ6OnVuaXF1
ZV9wdHI8UXVldWVkVGFzaz4gdGFzaykgeworICByZXR1cm4gVGFza1F1ZXVlOjppbXBsXy0+UG9z
dFRhc2soc3RkOjptb3ZlKHRhc2spKTsKK30KKwordm9pZCBUYXNrUXVldWU6OlBvc3RUYXNrQW5k
UmVwbHkoc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHRhc2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gcmVwbHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrUXVldWUqIHJlcGx5X3F1ZXVlKSB7Cisg
IHJldHVybiBUYXNrUXVldWU6OmltcGxfLT5Qb3N0VGFza0FuZFJlcGx5KHN0ZDo6bW92ZSh0YXNr
KSwgc3RkOjptb3ZlKHJlcGx5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwbHlfcXVldWUtPmltcGxfLmdldCgpKTsKK30KKwordm9pZCBUYXNrUXVldWU6
OlBvc3RUYXNrQW5kUmVwbHkoc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHRhc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4g
cmVwbHkpIHsKKyAgcmV0dXJuIFRhc2tRdWV1ZTo6aW1wbF8tPlBvc3RUYXNrQW5kUmVwbHkoc3Rk
Ojptb3ZlKHRhc2spLCBzdGQ6Om1vdmUocmVwbHkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbXBsXy5nZXQoKSk7Cit9CisKK3ZvaWQgVGFza1F1ZXVlOjpQ
b3N0RGVsYXllZFRhc2soc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+IHRhc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1pbGxpc2Vjb25kcykgeworICByZXR1
cm4gVGFza1F1ZXVlOjppbXBsXy0+UG9zdERlbGF5ZWRUYXNrKHN0ZDo6bW92ZSh0YXNrKSwgbWls
bGlzZWNvbmRzKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZV91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3Rhc2tfcXVldWVfdW5pdHRlc3QuY2MKaW5kZXggY2VkZjY4ZTJlODUxMzU5YzUwNWU0
YzM0YjE0YjljZDg5YmRhZWU2My4uMGFmMzlhNWU3MTVmYjE1NzhjMzU5YmU2YzI4Y2M0MWFkM2Rk
ODI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdGFza19xdWV1ZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlX3VuaXR0ZXN0LmNj
CkBAIC02NCw3ICs2NCw3IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgQ29uc3RydWN0KSB7CiAKIFRF
U1QoVGFza1F1ZXVlVGVzdCwgUG9zdEFuZENoZWNrQ3VycmVudCkgewogICBzdGF0aWMgY29uc3Qg
Y2hhciBrUXVldWVOYW1lW10gPSAiUG9zdEFuZENoZWNrQ3VycmVudCI7Ci0gIEV2ZW50IGV2ZW50
KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBUYXNrUXVldWUgcXVldWUoa1F1ZXVl
TmFtZSk7CiAKICAgLy8gV2UncmUgbm90IHJ1bm5pbmcgYSB0YXNrLCBzbyB0aGVyZSBzaG91bGRu
J3QgYmUgYSBjdXJyZW50IHF1ZXVlLgpAQCAtMTA2LDcgKzEwNiw3IEBAIFRFU1QoVGFza1F1ZXVl
VGVzdCwgUG9zdExhbWJkYSkgewogCiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3REZWxheWVkWmVy
bykgewogICBzdGF0aWMgY29uc3QgY2hhciBrUXVldWVOYW1lW10gPSAiUG9zdERlbGF5ZWRaZXJv
IjsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7CiAgIFRhc2tR
dWV1ZSBxdWV1ZShrUXVldWVOYW1lKTsKIAogICBxdWV1ZS5Qb3N0RGVsYXllZFRhc2soWyZldmVu
dF0oKSB7IGV2ZW50LlNldCgpOyB9LCAwKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBURVNUKFRhc2tR
dWV1ZVRlc3QsIFBvc3REZWxheWVkWmVybykgewogCiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RG
cm9tUXVldWUpIHsKICAgc3RhdGljIGNvbnN0IGNoYXIga1F1ZXVlTmFtZVtdID0gIlBvc3RGcm9t
UXVldWUiOwotICBFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudDsKICAg
VGFza1F1ZXVlIHF1ZXVlKGtRdWV1ZU5hbWUpOwogCiAgIHF1ZXVlLlBvc3RUYXNrKApAQCAtMTI1
LDcgKzEyNSw3IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdEZyb21RdWV1ZSkgewogCiBURVNU
KFRhc2tRdWV1ZVRlc3QsIFBvc3REZWxheWVkKSB7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtRdWV1
ZU5hbWVbXSA9ICJQb3N0RGVsYXllZCI7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7Cisg
IEV2ZW50IGV2ZW50OwogICBUYXNrUXVldWUgcXVldWUoa1F1ZXVlTmFtZSwgVGFza1F1ZXVlOjpQ
cmlvcml0eTo6SElHSCk7CiAKICAgdWludDMyX3Qgc3RhcnQgPSBUaW1lKCk7CkBAIC0xNDUsNyAr
MTQ1LDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBESVNBQkxFRF9Qb3N0RGVsYXllZEhpZ2hSZXMp
IHsKICAgRW5hYmxlSGlnaFJlc1RpbWVycyBoaWdoX3Jlc19zY29wZTsKIAogICBzdGF0aWMgY29u
c3QgY2hhciBrUXVldWVOYW1lW10gPSAiUG9zdERlbGF5ZWRIaWdoUmVzIjsKLSAgRXZlbnQgZXZl
bnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7CiAgIFRhc2tRdWV1ZSBxdWV1ZShrUXVl
dWVOYW1lLCBUYXNrUXVldWU6OlByaW9yaXR5OjpISUdIKTsKIAogICB1aW50MzJfdCBzdGFydCA9
IFRpbWUoKTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RNdWx0
aXBsZURlbGF5ZWQpIHsKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXZlbnQ+PiBl
dmVudHM7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKLSAgICBldmVudHMucHVz
aF9iYWNrKHN0ZDo6dW5pcXVlX3B0cjxFdmVudD4obmV3IEV2ZW50KGZhbHNlLCBmYWxzZSkpKTsK
KyAgICBldmVudHMucHVzaF9iYWNrKGFic2w6Om1ha2VfdW5pcXVlPEV2ZW50PigpKTsKICAgICBx
dWV1ZS5Qb3N0RGVsYXllZFRhc2soQmluZCgmQ2hlY2tDdXJyZW50LCBldmVudHMuYmFjaygpLmdl
dCgpLCAmcXVldWUpLCBpKTsKICAgfQogCkBAIC0xNzUsOCArMTc1LDggQEAgVEVTVChUYXNrUXVl
dWVUZXN0LCBQb3N0TXVsdGlwbGVEZWxheWVkKSB7CiAKIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9z
dERlbGF5ZWRBZnRlckRlc3RydWN0KSB7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtRdWV1ZU5hbWVb
XSA9ICJQb3N0RGVsYXllZEFmdGVyRGVzdHJ1Y3QiOwotICBFdmVudCBydW4oZmFsc2UsIGZhbHNl
KTsKLSAgRXZlbnQgZGVsZXRlZChmYWxzZSwgZmFsc2UpOworICBFdmVudCBydW47CisgIEV2ZW50
IGRlbGV0ZWQ7CiAgIHsKICAgICBUYXNrUXVldWUgcXVldWUoa1F1ZXVlTmFtZSk7CiAgICAgcXVl
dWUuUG9zdERlbGF5ZWRUYXNrKApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1QoVGFza1F1ZXVlVGVz
dCwgUG9zdERlbGF5ZWRBZnRlckRlc3RydWN0KSB7CiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RB
bmRSZXBseSkgewogICBzdGF0aWMgY29uc3QgY2hhciBrUG9zdFF1ZXVlW10gPSAiUG9zdFF1ZXVl
IjsKICAgc3RhdGljIGNvbnN0IGNoYXIga1JlcGx5UXVldWVbXSA9ICJSZXBseVF1ZXVlIjsKLSAg
RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZlbnQ7CiAgIFRhc2tRdWV1ZSBw
b3N0X3F1ZXVlKGtQb3N0UXVldWUpOwogICBUYXNrUXVldWUgcmVwbHlfcXVldWUoa1JlcGx5UXVl
dWUpOwogCkBAIC0yMDQsNyArMjA0LDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0QW5kUmVw
bHkpIHsKIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdEFuZFJldXNlKSB7CiAgIHN0YXRpYyBjb25z
dCBjaGFyIGtQb3N0UXVldWVbXSA9ICJQb3N0UXVldWUiOwogICBzdGF0aWMgY29uc3QgY2hhciBr
UmVwbHlRdWV1ZVtdID0gIlJlcGx5UXVldWUiOwotICBFdmVudCBldmVudChmYWxzZSwgZmFsc2Up
OworICBFdmVudCBldmVudDsKICAgVGFza1F1ZXVlIHBvc3RfcXVldWUoa1Bvc3RRdWV1ZSk7CiAg
IFRhc2tRdWV1ZSByZXBseV9xdWV1ZShrUmVwbHlRdWV1ZSk7CiAKQEAgLTI1MSw3ICsyNTEsNyBA
QCBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RBbmRSZXVzZSkgewogVEVTVChUYXNrUXVldWVUZXN0
LCBQb3N0QW5kUmVwbHlMYW1iZGEpIHsKICAgc3RhdGljIGNvbnN0IGNoYXIga1Bvc3RRdWV1ZVtd
ID0gIlBvc3RRdWV1ZSI7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtSZXBseVF1ZXVlW10gPSAiUmVw
bHlRdWV1ZSI7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50Owog
ICBUYXNrUXVldWUgcG9zdF9xdWV1ZShrUG9zdFF1ZXVlKTsKICAgVGFza1F1ZXVlIHJlcGx5X3F1
ZXVlKGtSZXBseVF1ZXVlKTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIFRFU1QoVGFza1F1ZXVlVGVz
dCwgUG9zdENvcHlhYmxlQ2xvc3VyZSkgewogCiAgIGludCBudW1fY29waWVzID0gMDsKICAgaW50
IG51bV9tb3ZlcyA9IDA7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2
ZW50OwogCiAgIHN0YXRpYyBjb25zdCBjaGFyIGtQb3N0UXVldWVbXSA9ICJQb3N0Q29weWFibGVD
bG9zdXJlIjsKICAgVGFza1F1ZXVlIHBvc3RfcXVldWUoa1Bvc3RRdWV1ZSk7CkBAIC0zMjMsNyAr
MzIzLDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0TW92ZU9ubHlDbG9zdXJlKSB7CiAgIH07
CiAKICAgaW50IG51bV9tb3ZlcyA9IDA7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7Cisg
IEV2ZW50IGV2ZW50OwogICBzdGQ6OnVuaXF1ZV9wdHI8U29tZVN0YXRlPiBzdGF0ZShuZXcgU29t
ZVN0YXRlKCZldmVudCkpOwogCiAgIHN0YXRpYyBjb25zdCBjaGFyIGtQb3N0UXVldWVbXSA9ICJQ
b3N0TW92ZU9ubHlDbG9zdXJlIjsKQEAgLTM0Niw4ICszNDYsOCBAQCBURVNUKFRhc2tRdWV1ZVRl
c3QsIFBvc3RNb3ZlT25seUNsZWFudXApIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U29tZVN0YXRl
PiBzdGF0ZTsKICAgfTsKIAotICBFdmVudCBldmVudF9ydW4oZmFsc2UsIGZhbHNlKTsKLSAgRXZl
bnQgZXZlbnRfY2xlYW51cChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudF9ydW47CisgIEV2
ZW50IGV2ZW50X2NsZWFudXA7CiAgIHN0ZDo6dW5pcXVlX3B0cjxTb21lU3RhdGU+IHN0YXRlX3J1
bihuZXcgU29tZVN0YXRlKCZldmVudF9ydW4pKTsKICAgc3RkOjp1bmlxdWVfcHRyPFNvbWVTdGF0
ZT4gc3RhdGVfY2xlYW51cChuZXcgU29tZVN0YXRlKCZldmVudF9jbGVhbnVwKSk7CiAKQEAgLTM2
Nyw3ICszNjcsNyBAQCBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RNb3ZlT25seUNsZWFudXApIHsK
IC8vIHdyaXR0ZW4gaW4gYSB3YXkgdGhhdCBtYWtlcyBpdCBsaWtlbHkgYW5kIGJ5IHJ1bm5pbmcg
d2l0aCAtLWd0ZXN0X3JlcGVhdD0xMDAwCiAvLyB0aGUgYnVnIHdvdWxkIG9jY3VyLiBBbGFzLCBu
b3cgaXQgc2hvdWxkIGJlIGZpeGVkLgogVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0QW5kUmVwbHlE
ZWFkbG9jaykgewotICBFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudDsK
ICAgVGFza1F1ZXVlIHBvc3RfcXVldWUoIlBvc3RRdWV1ZSIpOwogICBUYXNrUXVldWUgcmVwbHlf
cXVldWUoIlJlcGx5UXVldWUiKTsKIApAQCAtMzg0LDggKzM4NCw4IEBAIFRFU1QoVGFza1F1ZXVl
VGVzdCwgUG9zdEFuZFJlcGx5RGVhZGxvY2spIHsKICNkZWZpbmUgTUFZQkVfRGVsZXRlVGFza1F1
ZXVlQWZ0ZXJQb3N0QW5kUmVwbHkgRGVsZXRlVGFza1F1ZXVlQWZ0ZXJQb3N0QW5kUmVwbHkKICNl
bmRpZgogVEVTVChUYXNrUXVldWVUZXN0LCBNQVlCRV9EZWxldGVUYXNrUXVldWVBZnRlclBvc3RB
bmRSZXBseSkgewotICBFdmVudCB0YXNrX2RlbGV0ZWQoZmFsc2UsIGZhbHNlKTsKLSAgRXZlbnQg
cmVwbHlfZGVsZXRlZChmYWxzZSwgZmFsc2UpOworICBFdmVudCB0YXNrX2RlbGV0ZWQ7CisgIEV2
ZW50IHJlcGx5X2RlbGV0ZWQ7CiAgIGF1dG8qIHRhc2tfcXVldWUgPSBuZXcgVGFza1F1ZXVlKCJR
dWV1ZSIpOwogCiAgIHRhc2tfcXVldWUtPlBvc3RUYXNrQW5kUmVwbHkoCkBAIC00MTMsNyArNDEz
LDcgQEAgdm9pZCBUZXN0UG9zdFRhc2tBbmRSZXBseShUYXNrUXVldWUqIHdvcmtfcXVldWUsIEV2
ZW50KiBldmVudCkgewogVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0QW5kUmVwbHkyKSB7CiAgIHN0
YXRpYyBjb25zdCBjaGFyIGtRdWV1ZU5hbWVbXSA9ICJQb3N0QW5kUmVwbHkyIjsKICAgc3RhdGlj
IGNvbnN0IGNoYXIga1dvcmtRdWV1ZU5hbWVbXSA9ICJQb3N0QW5kUmVwbHkyX1dvcmtlciI7Ci0g
IEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBUYXNrUXVldWUg
cXVldWUoa1F1ZXVlTmFtZSk7CiAgIFRhc2tRdWV1ZSB3b3JrX3F1ZXVlKGtXb3JrUXVldWVOYW1l
KTsKIApAQCAtNDI1LDcgKzQyNSw3IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdEFuZFJlcGx5
MikgewogLy8gSW4gc2l0dWF0aW9ucyBsaWtlIHRoYXQsIHRhc2tzIHdpbGwgZ2V0IGRyb3BwZWQu
CiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RBTG90KSB7CiAgIC8vIFRvIGRlc3RydWN0IHRoZSBl
dmVudCBhZnRlciB0aGUgcXVldWUgaGFzIGdvbmUgb3V0IG9mIHNjb3BlLgotICBFdmVudCBldmVu
dChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudDsKIAogICBpbnQgdGFza3NfZXhlY3V0ZWQg
PSAwOwogICBpbnQgdGFza3NfY2xlYW5lZF91cCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0Y2xpZW50LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGVzdGNs
aWVudC5jYwppbmRleCA3YzE1MWM3NTEwMWU3YjA1ODdmYWFjODAyZDU2MDMxZGE0ZDQyNTRmLi5h
NWI5MGRkZDIwMTdkZDZmMjgwYmZhYzdkN2E1YTYyYTc5NmVhYTdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0Y2xpZW50
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3Rlc3RjbGllbnQuY2MKQEAgLTk3LDcgKzk3LDcgQEAgYm9vbCBUZXN0Q2xpZW50OjpDaGVj
a05leHRQYWNrZXQoY29uc3QgY2hhciogYnVmLAogICBzdGQ6OnVuaXF1ZV9wdHI8UGFja2V0PiBw
YWNrZXQgPSBOZXh0UGFja2V0KGtUaW1lb3V0TXMpOwogICBpZiAocGFja2V0KSB7CiAgICAgcmVz
ID0gKHBhY2tldC0+c2l6ZSA9PSBzaXplICYmIG1lbWNtcChwYWNrZXQtPmJ1ZiwgYnVmLCBzaXpl
KSA9PSAwICYmCi0gICAgICAgICAgIENoZWNrVGltZXN0YW1wKHBhY2tldC0+cGFja2V0X3RpbWUu
dGltZXN0YW1wKSk7CisgICAgICAgICAgIENoZWNrVGltZXN0YW1wKHBhY2tldC0+cGFja2V0X3Rp
bWVfdXMpKTsKICAgICBpZiAoYWRkcikKICAgICAgICphZGRyID0gcGFja2V0LT5hZGRyOwogICB9
CkBAIC0xNDQsMTAgKzE0NCwxMCBAQCB2b2lkIFRlc3RDbGllbnQ6Ok9uUGFja2V0KEFzeW5jUGFj
a2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cykgewog
ICBDcml0U2NvcGUgY3MoJmNyaXRfKTsKICAgcGFja2V0c18ucHVzaF9iYWNrKAotICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8UGFja2V0PihyZW1vdGVfYWRkciwgYnVmLCBzaXplLCBwYWNrZXRfdGlt
ZSkpOworICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UGFja2V0PihyZW1vdGVfYWRkciwgYnVmLCBz
aXplLCBwYWNrZXRfdGltZV91cykpOwogfQogCiB2b2lkIFRlc3RDbGllbnQ6Ok9uUmVhZHlUb1Nl
bmQoQXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCkgewpAQCAtMTU3LDE0ICsxNTcsMTQgQEAgdm9p
ZCBUZXN0Q2xpZW50OjpPblJlYWR5VG9TZW5kKEFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQpIHsK
IFRlc3RDbGllbnQ6OlBhY2tldDo6UGFja2V0KGNvbnN0IFNvY2tldEFkZHJlc3MmIGEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBiLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNr
ZXRUaW1lJiBwYWNrZXRfdGltZSkKLSAgICA6IGFkZHIoYSksIGJ1ZigwKSwgc2l6ZShzKSwgcGFj
a2V0X3RpbWUocGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgcGFja2V0X3RpbWVfdXMpCisgICAgOiBhZGRyKGEpLCBidWYoMCksIHNpemUocyksIHBhY2tl
dF90aW1lX3VzKHBhY2tldF90aW1lX3VzKSB7CiAgIGJ1ZiA9IG5ldyBjaGFyW3NpemVdOwogICBt
ZW1jcHkoYnVmLCBiLCBzaXplKTsKIH0KIAogVGVzdENsaWVudDo6UGFja2V0OjpQYWNrZXQoY29u
c3QgUGFja2V0JiBwKQotICAgIDogYWRkcihwLmFkZHIpLCBidWYoMCksIHNpemUocC5zaXplKSwg
cGFja2V0X3RpbWUocC5wYWNrZXRfdGltZSkgeworICAgIDogYWRkcihwLmFkZHIpLCBidWYoMCks
IHNpemUocC5zaXplKSwgcGFja2V0X3RpbWVfdXMocC5wYWNrZXRfdGltZV91cykgewogICBidWYg
PSBuZXcgY2hhcltzaXplXTsKICAgbWVtY3B5KGJ1ZiwgcC5idWYsIHNpemUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
dGVzdGNsaWVudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvdGVzdGNsaWVudC5oCmluZGV4IGEwZDk4YjMwZDE2NTRiYzYwZDJhM2Q5NzQxYzg5
ZGExNDFkYjUyYWQuLjE2ZmI2YmE2NzdjMjIyNmRmODk4YjA5ZWIzZGI5YjRhN2M5NTI2ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3Rlc3RjbGllbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS90ZXN0Y2xpZW50LmgKQEAgLTI5LDE0ICsyOSwxNCBAQCBjbGFzcyBU
ZXN0Q2xpZW50IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICBQYWNrZXQoY29u
c3QgU29ja2V0QWRkcmVzcyYgYSwKICAgICAgICAgICAgY29uc3QgY2hhciogYiwKICAgICAgICAg
ICAgc2l6ZV90IHMsCi0gICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsK
KyAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAgICAgUGFja2V0KGNvbnN0IFBh
Y2tldCYgcCk7CiAgICAgdmlydHVhbCB+UGFja2V0KCk7CiAKICAgICBTb2NrZXRBZGRyZXNzIGFk
ZHI7CiAgICAgY2hhciogYnVmOwogICAgIHNpemVfdCBzaXplOwotICAgIFBhY2tldFRpbWUgcGFj
a2V0X3RpbWU7CisgICAgaW50NjRfdCBwYWNrZXRfdGltZV91czsKICAgfTsKIAogICAvLyBEZWZh
dWx0IHRpbWVvdXQgZm9yIE5leHRQYWNrZXQgcmVhZHMuCkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNz
IFRlc3RDbGllbnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAogICAgICAg
ICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAg
ICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICBjb25z
dCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQgT25SZWFkeVRvU2VuZChBc3luY1Bh
Y2tldFNvY2tldCogc29ja2V0KTsKICAgYm9vbCBDaGVja1RpbWVzdGFtcChpbnQ2NF90IHBhY2tl
dF90aW1lc3RhbXApOwogICB2b2lkIEFkdmFuY2VUaW1lKGludCBtcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0ZWNo
b3NlcnZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvdGVzdGVjaG9zZXJ2ZXIuaAppbmRleCA1ZTcxNGViNjNkZDMwZTBlNjk2NzViMWUwZGY5
ZmU0NzlmMmFmZjRhLi45ZmZkNzg2MjJhNDVmNzIwMmM4OTc1MmIxZTMyOTI3MjRkYTBiOGVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS90ZXN0ZWNob3NlcnZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3RlY2hvc2VydmVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgVGVzdEVjaG9TZXJ2ZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSwKICAgICAgICAgICAgICAgICBjb25zdCBTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAg
ICAgICAgICAgICAgICBjb25zdCBQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAg
ICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovKSB7CiAgICAgcnRjOjpQ
YWNrZXRPcHRpb25zIG9wdGlvbnM7CiAgICAgc29ja2V0LT5TZW5kKGJ1Ziwgc2l6ZSwgb3B0aW9u
cyk7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5jYwppbmRleCBiNGE3NDMzZmJkN2Yx
ODMwNTBiNDYyNmY1NThkN2IzMjA1NGM4NzdmLi5mMzI5MmZkNTlmN2NlZTBiMjBlN2Y4MTk5MmVj
MjFlMzI1N2UyNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0dXRpbHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGVzdHV0aWxzLmNjCkBAIC0xNCw3NSAr
MTQsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAogU3RyZWFt
U2luazo6U3RyZWFtU2luaygpID0gZGVmYXVsdDsKLQogU3RyZWFtU2luazo6flN0cmVhbVNpbmso
KSA9IGRlZmF1bHQ7CiAKLVN0cmVhbVNvdXJjZTo6U3RyZWFtU291cmNlKCkgewotICBDbGVhcigp
OwotfQotCi1TdHJlYW1Tb3VyY2U6On5TdHJlYW1Tb3VyY2UoKSA9IGRlZmF1bHQ7Ci0KLVN0cmVh
bVN0YXRlIFN0cmVhbVNvdXJjZTo6R2V0U3RhdGUoKSBjb25zdCB7Ci0gIHJldHVybiBzdGF0ZV87
Ci19Ci0KLVN0cmVhbVJlc3VsdCBTdHJlYW1Tb3VyY2U6OlJlYWQodm9pZCogYnVmZmVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiByZWFkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQqIGVycm9yKSB7Ci0gIGlmIChTU19DTE9TRUQgPT0gc3RhdGVfKSB7
Ci0gICAgaWYgKGVycm9yKQotICAgICAgKmVycm9yID0gLTE7Ci0gICAgcmV0dXJuIFNSX0VSUk9S
OwotICB9Ci0gIGlmICgoU1NfT1BFTklORyA9PSBzdGF0ZV8pIHx8IChyZWFkYWJsZV9kYXRhXy5z
aXplKCkgPD0gcmVhZF9ibG9ja18pKSB7Ci0gICAgcmV0dXJuIFNSX0JMT0NLOwotICB9Ci0gIHNp
emVfdCBjb3VudCA9IHN0ZDo6bWluKGJ1ZmZlcl9sZW4sIHJlYWRhYmxlX2RhdGFfLnNpemUoKSAt
IHJlYWRfYmxvY2tfKTsKLSAgbWVtY3B5KGJ1ZmZlciwgJnJlYWRhYmxlX2RhdGFfWzBdLCBjb3Vu
dCk7Ci0gIHNpemVfdCBuZXdfc2l6ZSA9IHJlYWRhYmxlX2RhdGFfLnNpemUoKSAtIGNvdW50Owot
ICAvLyBBdm9pZCB1bmRlZmluZWQgYWNjZXNzIGJleW9uZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRo
ZSB2ZWN0b3IuCi0gIC8vIFRoaXMgb25seSBoYXBwZW5zIHdoZW4gbmV3X3NpemUgaXMgMC4KLSAg
aWYgKGNvdW50IDwgcmVhZGFibGVfZGF0YV8uc2l6ZSgpKSB7Ci0gICAgbWVtbW92ZSgmcmVhZGFi
bGVfZGF0YV9bMF0sICZyZWFkYWJsZV9kYXRhX1tjb3VudF0sIG5ld19zaXplKTsKLSAgfQotICBy
ZWFkYWJsZV9kYXRhXy5yZXNpemUobmV3X3NpemUpOwotICBpZiAocmVhZCkKLSAgICAqcmVhZCA9
IGNvdW50OwotICByZXR1cm4gU1JfU1VDQ0VTUzsKLX0KLQotU3RyZWFtUmVzdWx0IFN0cmVhbVNv
dXJjZTo6V3JpdGUoY29uc3Qgdm9pZCogZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBkYXRhX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCogd3JpdHRlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCog
ZXJyb3IpIHsKLSAgaWYgKFNTX0NMT1NFRCA9PSBzdGF0ZV8pIHsKLSAgICBpZiAoZXJyb3IpCi0g
ICAgICAqZXJyb3IgPSAtMTsKLSAgICByZXR1cm4gU1JfRVJST1I7Ci0gIH0KLSAgaWYgKFNTX09Q
RU5JTkcgPT0gc3RhdGVfKSB7Ci0gICAgcmV0dXJuIFNSX0JMT0NLOwotICB9Ci0gIGlmIChTSVpF
X1VOS05PV04gIT0gd3JpdGVfYmxvY2tfKSB7Ci0gICAgaWYgKHdyaXR0ZW5fZGF0YV8uc2l6ZSgp
ID49IHdyaXRlX2Jsb2NrXykgewotICAgICAgcmV0dXJuIFNSX0JMT0NLOwotICAgIH0KLSAgICBp
ZiAoZGF0YV9sZW4gPiAod3JpdGVfYmxvY2tfIC0gd3JpdHRlbl9kYXRhXy5zaXplKCkpKSB7Ci0g
ICAgICBkYXRhX2xlbiA9IHdyaXRlX2Jsb2NrXyAtIHdyaXR0ZW5fZGF0YV8uc2l6ZSgpOwotICAg
IH0KLSAgfQotICBpZiAod3JpdHRlbikKLSAgICAqd3JpdHRlbiA9IGRhdGFfbGVuOwotICBjb25z
dCBjaGFyKiBjZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKTsKLSAgd3JpdHRl
bl9kYXRhXy5pbnNlcnQod3JpdHRlbl9kYXRhXy5lbmQoKSwgY2RhdGEsIGNkYXRhICsgZGF0YV9s
ZW4pOwotICByZXR1cm4gU1JfU1VDQ0VTUzsKLX0KLQotdm9pZCBTdHJlYW1Tb3VyY2U6OkNsb3Nl
KCkgewotICBzdGF0ZV8gPSBTU19DTE9TRUQ7Ci19Ci0KIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0dXRpbHMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5oCmluZGV4
IDJhYjRhMzU5NTZhMDU5ZWFjYjc0MzkxNWI1YWUyOGE3MjU0Y2I1YjguLmFjNzQyMDNjZjlmOTNj
ZjdiYWEyYTAyZTJkNjljYTY5ODJkZDBiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5o
CkBAIC0xOSw5ICsxOSw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogI2luY2x1ZGUgInJ0Y19iYXNl
L2FzeW5jc29ja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvZ3VuaXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFj
ZSB0ZXN0aW5nIHsKQEAgLTEzNyw5MSArMTM1LDYgQEAgY2xhc3MgU3RyZWFtU2luayA6IHB1Ymxp
YyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIEV2ZW50TWFwIGV2ZW50c187CiB9OwogCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyBTdHJlYW1Tb3VyY2UgLSBJbXBsZW1lbnRzIHN0cmVhbSBp
bnRlcmZhY2UgYW5kIHNpbXVsYXRlcyBhc3luY2hyb25vdXMKLS8vIGV2ZW50cyBvbiB0aGUgc3Ry
ZWFtLCB3aXRob3V0IGEgbmV0d29yay4gIEFsc28gYnVmZmVycyB3cml0dGVuIGRhdGEuCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0KLWNsYXNzIFN0cmVhbVNvdXJjZSA6IHB1YmxpYyBTdHJlYW1J
bnRlcmZhY2UgewotIHB1YmxpYzoKLSAgU3RyZWFtU291cmNlKCk7Ci0gIH5TdHJlYW1Tb3VyY2Uo
KSBvdmVycmlkZTsKLQotICB2b2lkIENsZWFyKCkgewotICAgIHJlYWRhYmxlX2RhdGFfLmNsZWFy
KCk7Ci0gICAgd3JpdHRlbl9kYXRhXy5jbGVhcigpOwotICAgIHN0YXRlXyA9IFNTX0NMT1NFRDsK
LSAgICByZWFkX2Jsb2NrXyA9IDA7Ci0gICAgd3JpdGVfYmxvY2tfID0gU0laRV9VTktOT1dOOwot
ICB9Ci0gIHZvaWQgUXVldWVTdHJpbmcoY29uc3QgY2hhciogZGF0YSkgeyBRdWV1ZURhdGEoZGF0
YSwgc3RybGVuKGRhdGEpKTsgfQotI2lmIGRlZmluZWQoX19HTlVDX18pCi0gIC8vIE5vdGU6IElt
cGxpY2l0IHx0aGlzfCBhcmd1bWVudCBjb3VudHMgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LgotICBf
X2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDIsIDMpKSkKLSNlbmRpZgotICB2
b2lkCi0gIFF1ZXVlU3RyaW5nRihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgewotICAgIHZhX2xp
c3QgYXJnczsKLSAgICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOwotICAgIGNoYXIgYnVmZmVyWzEw
MjRdOwotICAgIHNpemVfdCBsZW4gPSB2c3ByaW50Zm4oYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwg
Zm9ybWF0LCBhcmdzKTsKLSAgICBSVENfQ0hFQ0sobGVuIDwgc2l6ZW9mKGJ1ZmZlcikgLSAxKTsK
LSAgICB2YV9lbmQoYXJncyk7Ci0gICAgUXVldWVEYXRhKGJ1ZmZlciwgbGVuKTsKLSAgfQotICB2
b2lkIFF1ZXVlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKSB7Ci0gICAgcmVhZGFi
bGVfZGF0YV8uaW5zZXJ0KHJlYWRhYmxlX2RhdGFfLmVuZCgpLCBkYXRhLCBkYXRhICsgbGVuKTsK
LSAgICBpZiAoKFNTX09QRU4gPT0gc3RhdGVfKSAmJiAocmVhZGFibGVfZGF0YV8uc2l6ZSgpID09
IGxlbikpIHsKLSAgICAgIFNpZ25hbEV2ZW50KHRoaXMsIFNFX1JFQUQsIDApOwotICAgIH0KLSAg
fQotICBzdGQ6OnN0cmluZyBSZWFkRGF0YSgpIHsKLSAgICBzdGQ6OnN0cmluZyBkYXRhOwotICAg
IC8vIGF2b2lkIGFjY2Vzc2luZyB3cml0dGVuX2RhdGFfWzBdIGlmIGl0IGlzIHVuZGVmaW5lZAot
ICAgIGlmICh3cml0dGVuX2RhdGFfLnNpemUoKSA+IDApIHsKLSAgICAgIGRhdGEuaW5zZXJ0KDAs
ICZ3cml0dGVuX2RhdGFfWzBdLCB3cml0dGVuX2RhdGFfLnNpemUoKSk7Ci0gICAgfQotICAgIHdy
aXR0ZW5fZGF0YV8uY2xlYXIoKTsKLSAgICByZXR1cm4gZGF0YTsKLSAgfQotICB2b2lkIFNldFN0
YXRlKFN0cmVhbVN0YXRlIHN0YXRlKSB7Ci0gICAgaW50IGV2ZW50cyA9IDA7Ci0gICAgaWYgKChT
U19PUEVOSU5HID09IHN0YXRlXykgJiYgKFNTX09QRU4gPT0gc3RhdGUpKSB7Ci0gICAgICBldmVu
dHMgfD0gU0VfT1BFTjsKLSAgICAgIGlmICghcmVhZGFibGVfZGF0YV8uZW1wdHkoKSkgewotICAg
ICAgICBldmVudHMgfD0gU0VfUkVBRDsKLSAgICAgIH0KLSAgICB9IGVsc2UgaWYgKChTU19DTE9T
RUQgIT0gc3RhdGVfKSAmJiAoU1NfQ0xPU0VEID09IHN0YXRlKSkgewotICAgICAgZXZlbnRzIHw9
IFNFX0NMT1NFOwotICAgIH0KLSAgICBzdGF0ZV8gPSBzdGF0ZTsKLSAgICBpZiAoZXZlbnRzKSB7
Ci0gICAgICBTaWduYWxFdmVudCh0aGlzLCBldmVudHMsIDApOwotICAgIH0KLSAgfQotICAvLyBX
aWxsIGNhdXNlIFJlYWQgdG8gYmxvY2sgd2hlbiB0aGVyZSBhcmUgcG9zIGJ5dGVzIGluIHRoZSBy
ZWFkIHF1ZXVlLgotICB2b2lkIFNldFJlYWRCbG9jayhzaXplX3QgcG9zKSB7IHJlYWRfYmxvY2tf
ID0gcG9zOyB9Ci0gIC8vIFdpbGwgY2F1c2UgV3JpdGUgdG8gYmxvY2sgd2hlbiB0aGVyZSBhcmUg
cG9zIGJ5dGVzIGluIHRoZSB3cml0ZSBxdWV1ZS4KLSAgdm9pZCBTZXRXcml0ZUJsb2NrKHNpemVf
dCBwb3MpIHsgd3JpdGVfYmxvY2tfID0gcG9zOyB9Ci0KLSAgU3RyZWFtU3RhdGUgR2V0U3RhdGUo
KSBjb25zdCBvdmVycmlkZTsKLSAgU3RyZWFtUmVzdWx0IFJlYWQodm9pZCogYnVmZmVyLAotICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlbiwKLSAgICAgICAgICAgICAgICAgICAg
c2l6ZV90KiByZWFkLAotICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVycmlkZTsK
LSAgU3RyZWFtUmVzdWx0IFdyaXRlKGNvbnN0IHZvaWQqIGRhdGEsCi0gICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGF0YV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QqIHdyaXR0
ZW4sCi0gICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVycmlkZTsKLSAgdm9pZCBD
bG9zZSgpIG92ZXJyaWRlOwotCi0gcHJpdmF0ZToKLSAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxjaGFy
PiBCdWZmZXI7Ci0gIEJ1ZmZlciByZWFkYWJsZV9kYXRhXywgd3JpdHRlbl9kYXRhXzsKLSAgU3Ry
ZWFtU3RhdGUgc3RhdGVfOwotICBzaXplX3QgcmVhZF9ibG9ja18sIHdyaXRlX2Jsb2NrXzsKLX07
Ci0KIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90
LmgKaW5kZXggYzc3ZTRlNjc1ZGY1MDRhMDg0MjIzOTMyMjI3ZWFjOGI1NGZiYjQzNS4uOGJkMWM3
MDY0YTM4NDFlM2FhYmI3Y2M1ZmQ3MWVkNGQ3ODA2NTQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2ln
c2xvdC9zaWdzbG90LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgKQEAgLTk2LDcgKzk2
LDYgQEAKICNpZm5kZWYgUlRDX0JBU0VfVEhJUkRfUEFSVFlfU0lHU0xPVF9TSUdTTE9UX0hfCiAj
ZGVmaW5lIFJUQ19CQVNFX1RISVJEX1BBUlRZX1NJR1NMT1RfU0lHU0xPVF9IXwogCi0jaW5jbHVk
ZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxsaXN0PgogI2luY2x1
ZGUgPHNldD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3RocmVhZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZC5jYwppbmRleCAyZDU3MDRlMGJlNzgwYTQ3NDhl
ZTI1NGY3MjM0MjNiNDJmMTY2OWY3Li40ZGQ1ZmQyMjI0ZjEyYTZhYWViNTJhZTgxY2ZiODQ1YjJi
ZGI0ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS90aHJlYWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkLmNjCkBAIC0yNCwxNCArMjQsNDMgQEAKICNw
cmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDcyMikKICNlbmRpZgogCisjaW5jbHVkZSA8c3RkaW8u
aD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
bG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJp
bmd1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3RyYWNlX2V2ZW50LmgiCiAKKyNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3lzdGVtL2NvY29hX3RocmVhZGluZy5oIgorCisvKgorICogVGhlc2UgYXJl
IGZvcndhcmQtZGVjbGFyYXRpb25zIGZvciBtZXRob2RzIHRoYXQgYXJlIHBhcnQgb2YgdGhlCisg
KiBPYmpDIHJ1bnRpbWUuIFRoZXkgYXJlIGRlY2xhcmVkIGluIHRoZSBwcml2YXRlIGhlYWRlciBv
YmpjLWludGVybmFsLmguCisgKiBUaGVzZSBjYWxscyBhcmUgd2hhdCBjbGFuZyBpbnNlcnRzIHdo
ZW4gdXNpbmcgQGF1dG9yZWxlYXNlcG9vbCBpbiBPYmpDLAorICogYnV0IGhlcmUgdGhleSBhcmUg
dXNlZCBkaXJlY3RseSBpbiBvcmRlciB0byBrZWVwIHRoaXMgZmlsZSBDKysuCisgKiBodHRwczov
L2NsYW5nLmxsdm0ub3JnL2RvY3MvQXV0b21hdGljUmVmZXJlbmNlQ291bnRpbmcuaHRtbCNydW50
aW1lLXN1cHBvcnQKKyAqLworZXh0ZXJuICJDIiB7Cit2b2lkKiBvYmpjX2F1dG9yZWxlYXNlUG9v
bFB1c2godm9pZCk7Cit2b2lkIG9iamNfYXV0b3JlbGVhc2VQb29sUG9wKHZvaWQqIHBvb2wpOwor
fQorCituYW1lc3BhY2UgeworY2xhc3MgU2NvcGVkQXV0b1JlbGVhc2VQb29sIHsKKyBwdWJsaWM6
CisgIFNjb3BlZEF1dG9SZWxlYXNlUG9vbCgpIDogcG9vbF8ob2JqY19hdXRvcmVsZWFzZVBvb2xQ
dXNoKCkpIHt9CisgIH5TY29wZWRBdXRvUmVsZWFzZVBvb2woKSB7IG9iamNfYXV0b3JlbGVhc2VQ
b29sUG9wKHBvb2xfKTsgfQorCisgcHJpdmF0ZToKKyAgdm9pZCogY29uc3QgcG9vbF87Cit9Owor
fSAgLy8gbmFtZXNwYWNlCisjZW5kaWYKKwogbmFtZXNwYWNlIHJ0YyB7CiAKIFRocmVhZE1hbmFn
ZXIqIFRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCkgewpAQCAtNjEsMTEgKzkwLDEyIEBAIFRocmVh
ZCogVGhyZWFkOjpDdXJyZW50KCkgewogfQogCiAjaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCi0j
aWYgIWRlZmluZWQoV0VCUlRDX01BQykKIFRocmVhZE1hbmFnZXI6OlRocmVhZE1hbmFnZXIoKSA6
IG1haW5fdGhyZWFkX3JlZl8oQ3VycmVudFRocmVhZFJlZigpKSB7CisjaWYgZGVmaW5lZChXRUJS
VENfTUFDKQorICBJbml0Q29jb2FNdWx0aVRocmVhZGluZygpOworI2VuZGlmCiAgIHB0aHJlYWRf
a2V5X2NyZWF0ZSgma2V5XywgbnVsbHB0cik7CiB9Ci0jZW5kaWYKIAogVGhyZWFkKiBUaHJlYWRN
YW5hZ2VyOjpDdXJyZW50VGhyZWFkKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8VGhyZWFkKj4o
cHRocmVhZF9nZXRzcGVjaWZpYyhrZXlfKSk7CkBAIC0xOTMsOCArMjIzLDEwIEBAIGJvb2wgVGhy
ZWFkOjpTZXROYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCB2b2lkKiBvYmopIHsK
IAogICBuYW1lXyA9IG5hbWU7CiAgIGlmIChvYmopIHsKLSAgICBjaGFyIGJ1ZlsxNl07Ci0gICAg
c3ByaW50Zm4oYnVmLCBzaXplb2YoYnVmKSwgIiAweCVwIiwgb2JqKTsKKyAgICAvLyBUaGUgJXAg
c3BlY2lmaWVyIHR5cGljYWxseSBwcm9kdWNlIGF0IG1vc3QgMTYgaGV4IGRpZ2l0cywgcG9zc2li
bHkgd2l0aCBhCisgICAgLy8gMHggcHJlZml4LiBCdXQgZm9ybWF0IGlzIGltcGxlbWVudGF0aW9u
IGRlZmluZWQsIHNvIGFkZCBzb21lIG1hcmdpbi4KKyAgICBjaGFyIGJ1ZlszMF07CisgICAgc25w
cmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiAweCVwIiwgb2JqKTsKICAgICBuYW1lXyArPSBidWY7
CiAgIH0KICAgcmV0dXJuIHRydWU7CkBAIC0zMDAsNyArMzMyLDYgQEAgdm9pZCBUaHJlYWQ6OkFz
c2VydEJsb2NraW5nSXNBbGxvd2VkT25DdXJyZW50VGhyZWFkKCkgewogfQogCiAvLyBzdGF0aWMK
LSNpZiAhZGVmaW5lZChXRUJSVENfTUFDKQogI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKIERXT1JE
IFdJTkFQSSBUaHJlYWQ6OlByZVJ1bihMUFZPSUQgcHYpIHsKICNlbHNlCkBAIC0zMDksNiArMzQw
LDkgQEAgdm9pZCogVGhyZWFkOjpQcmVSdW4odm9pZCogcHYpIHsKICAgVGhyZWFkSW5pdCogaW5p
dCA9IHN0YXRpY19jYXN0PFRocmVhZEluaXQqPihwdik7CiAgIFRocmVhZE1hbmFnZXI6Okluc3Rh
bmNlKCktPlNldEN1cnJlbnRUaHJlYWQoaW5pdC0+dGhyZWFkKTsKICAgcnRjOjpTZXRDdXJyZW50
VGhyZWFkTmFtZShpbml0LT50aHJlYWQtPm5hbWVfLmNfc3RyKCkpOworI2lmIGRlZmluZWQoV0VC
UlRDX01BQykKKyAgU2NvcGVkQXV0b1JlbGVhc2VQb29sIHBvb2w7CisjZW5kaWYKICAgaWYgKGlu
aXQtPnJ1bm5hYmxlKSB7CiAgICAgaW5pdC0+cnVubmFibGUtPlJ1bihpbml0LT50aHJlYWQpOwog
ICB9IGVsc2UgewpAQCAtMzIyLDcgKzM1Niw2IEBAIHZvaWQqIFRocmVhZDo6UHJlUnVuKHZvaWQq
IHB2KSB7CiAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9Ci0jZW5kaWYKIAogdm9pZCBUaHJl
YWQ6OlJ1bigpIHsKICAgUHJvY2Vzc01lc3NhZ2VzKGtGb3JldmVyKTsKQEAgLTQ4NSw5ICs1MTgs
NiBAQCB2b2lkIFRocmVhZDo6Q2xlYXIoTWVzc2FnZUhhbmRsZXIqIHBoYW5kbGVyLAogICBDbGVh
ckludGVybmFsKHBoYW5kbGVyLCBpZCwgcmVtb3ZlZCk7CiB9CiAKLSNpZiAhZGVmaW5lZChXRUJS
VENfTUFDKQotLy8gTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgaGF2ZSBhIHNlcGFyYXRlIGltcGxl
bWVudGF0aW9uIGZvciBtYWMgYW5kIGlvcwotLy8gZGVmaW5lZCBpbiB3ZWJydGMvcnRjX2Jhc2Uv
dGhyZWFkX2Rhcndpbi5tbS4KIGJvb2wgVGhyZWFkOjpQcm9jZXNzTWVzc2FnZXMoaW50IGNtc0xv
b3ApIHsKICAgLy8gVXNpbmcgUHJvY2Vzc01lc3NhZ2VzIHdpdGggYSBjdXN0b20gY2xvY2sgZm9y
IHRlc3RpbmcgYW5kIGEgdGltZSBncmVhdGVyCiAgIC8vIHRoYW4gMCBkb2Vzbid0IHdvcmssIHNp
bmNlIGl0J3Mgbm90IGd1YXJhbnRlZWQgdG8gYWR2YW5jZSB0aGUgY3VzdG9tCkBAIC00OTgsNiAr
NTI4LDkgQEAgYm9vbCBUaHJlYWQ6OlByb2Nlc3NNZXNzYWdlcyhpbnQgY21zTG9vcCkgewogICBp
bnQgY21zTmV4dCA9IGNtc0xvb3A7CiAKICAgd2hpbGUgKHRydWUpIHsKKyNpZiBkZWZpbmVkKFdF
QlJUQ19NQUMpCisgICAgU2NvcGVkQXV0b1JlbGVhc2VQb29sIHBvb2w7CisjZW5kaWYKICAgICBN
ZXNzYWdlIG1zZzsKICAgICBpZiAoIUdldCgmbXNnLCBjbXNOZXh0KSkKICAgICAgIHJldHVybiAh
SXNRdWl0dGluZygpOwpAQCAtNTEwLDcgKzU0Myw2IEBAIGJvb2wgVGhyZWFkOjpQcm9jZXNzTWVz
c2FnZXMoaW50IGNtc0xvb3ApIHsKICAgICB9CiAgIH0KIH0KLSNlbmRpZgogCiBib29sIFRocmVh
ZDo6V3JhcEN1cnJlbnRXaXRoVGhyZWFkTWFuYWdlcihUaHJlYWRNYW5hZ2VyKiB0aHJlYWRfbWFu
YWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbmVl
ZF9zeW5jaHJvbml6ZV9hY2Nlc3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkLmgKaW5kZXggNWE0NjYx
MDRhYTI3M2U3NzRhZGM3NTI1Y2FjNTk2MjhlOTRlNjIzNi4uMDM5MTkyY2U3ZjY3NDY5NWFiMmYx
Yzc1OGVjMGM4NTQ5N2YyYWE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkLmgKQEAgLTExLDE5ICsx
MSwyMiBAQAogI2lmbmRlZiBSVENfQkFTRV9USFJFQURfSF8KICNkZWZpbmUgUlRDX0JBU0VfVEhS
RUFEX0hfCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1
ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgog
CiAjaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2VuZGlm
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2xvY2F0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWhhbmRsZXIuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0
Zm9ybV90aHJlYWRfdHlwZXMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRzZXJ2ZXIuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogI2lmIGRlZmluZWQo
V0VCUlRDX1dJTikKICNpbmNsdWRlICJydGNfYmFzZS93aW4zMi5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkX2Rh
cndpbi5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3RocmVhZF9kYXJ3aW4ubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0MDQ4
NDljNzJiNGNlZmQ1NmYxZjU0NTcwOTJjZmYwYTIzZDdhYTguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkX2Rhcndpbi5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDg0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWQuaCIKLQotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0KLSNpbmNsdWRlICJy
dGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCIKLQotLyoKLSAqIFRoaXMgZmlsZSBjb250YWlucyBw
bGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgZm9yIHNldmVyYWwKLSAqIG1ldGhvZHMg
aW4gcnRjOjpUaHJlYWQuCi0gKi8KLQotbmFtZXNwYWNlIHsKLXZvaWQgSW5pdENvY29hTXVsdGlU
aHJlYWRpbmcoKSB7Ci0gIGlmIChbTlNUaHJlYWQgaXNNdWx0aVRocmVhZGVkXSA9PSBOTykgewot
ICAgIC8vIFRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBhdXRvcmVsZWFzZSBwb29sIGlzIHRvIGF2
b2lkIGEgY29uc29sZQotICAgIC8vIG1lc3NhZ2Ugb24gTGVvcGFyZCB0aGF0IHRlbGxzIHVzIHdl
J3JlIGF1dG9yZWxlYXNpbmcgdGhlIHRocmVhZAotICAgIC8vIHdpdGggbm8gYXV0b3JlbGVhc2Ug
cG9vbCBpbiBwbGFjZS4KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgIFtOU1RocmVhZCBk
ZXRhY2hOZXdUaHJlYWRTZWxlY3RvcjpAc2VsZWN0b3IoY2xhc3MpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdG9UYXJnZXQ6W05TT2JqZWN0IGNsYXNzXQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aXRoT2JqZWN0Om5pbF07Ci0gICAgfQotICB9Ci0KLSAgUlRDX0RDSEVD
SyhbTlNUaHJlYWQgaXNNdWx0aVRocmVhZGVkXSk7Ci19Ci19Ci0KLW5hbWVzcGFjZSBydGMgewot
Ci1UaHJlYWRNYW5hZ2VyOjpUaHJlYWRNYW5hZ2VyKCkgOiBtYWluX3RocmVhZF9yZWZfKEN1cnJl
bnRUaHJlYWRSZWYoKSkgewotICBwdGhyZWFkX2tleV9jcmVhdGUoJmtleV8sIG51bGxwdHIpOwot
ICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhbGVydCB0aGUgY29jb2EgcnVudGltZSBvZiB0aGUg
ZmFjdCB0aGF0Ci0gIC8vIHdlIGFyZSBydW5uaW5nIGluIGEgbXVsdGl0aHJlYWRlZCBlbnZpcm9u
bWVudC4KLSAgSW5pdENvY29hTXVsdGlUaHJlYWRpbmcoKTsKLX0KLQotLy8gc3RhdGljCi12b2lk
KiBUaHJlYWQ6OlByZVJ1bih2b2lkKiBwdikgewotICBUaHJlYWRJbml0KiBpbml0ID0gc3RhdGlj
X2Nhc3Q8VGhyZWFkSW5pdCo+KHB2KTsKLSAgVGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+U2V0
Q3VycmVudFRocmVhZChpbml0LT50aHJlYWQpOwotICBydGM6OlNldEN1cnJlbnRUaHJlYWROYW1l
KGluaXQtPnRocmVhZC0+bmFtZV8uY19zdHIoKSk7Ci0gIEBhdXRvcmVsZWFzZXBvb2wgewotICAg
IGlmIChpbml0LT5ydW5uYWJsZSkgewotICAgICAgaW5pdC0+cnVubmFibGUtPlJ1bihpbml0LT50
aHJlYWQpOwotICAgIH0gZWxzZSB7Ci0gICAgICBpbml0LT50aHJlYWQtPlJ1bigpOwotICAgIH0K
LSAgfQotICBUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5TZXRDdXJyZW50VGhyZWFkKG51bGxw
dHIpOwotICBkZWxldGUgaW5pdDsKLSAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWJvb2wgVGhyZWFk
OjpQcm9jZXNzTWVzc2FnZXMoaW50IGNtc0xvb3ApIHsKLSAgaW50NjRfdCBtc0VuZCA9IChrRm9y
ZXZlciA9PSBjbXNMb29wKSA/IDAgOiBUaW1lQWZ0ZXIoY21zTG9vcCk7Ci0gIGludCBjbXNOZXh0
ID0gY21zTG9vcDsKLQotICB3aGlsZSAodHJ1ZSkgewotICAgIEBhdXRvcmVsZWFzZXBvb2wgewot
ICAgICAgTWVzc2FnZSBtc2c7Ci0gICAgICBpZiAoIUdldCgmbXNnLCBjbXNOZXh0KSkKLSAgICAg
ICAgcmV0dXJuICFJc1F1aXR0aW5nKCk7Ci0gICAgICBEaXNwYXRjaCgmbXNnKTsKLQotICAgICAg
aWYgKGNtc0xvb3AgIT0ga0ZvcmV2ZXIpIHsKLSAgICAgICAgY21zTmV4dCA9IHN0YXRpY19jYXN0
PGludD4oVGltZVVudGlsKG1zRW5kKSk7Ci0gICAgICAgIGlmIChjbXNOZXh0IDwgMCkKLSAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLX0KLX0gIC8vIG5hbWVzcGFj
ZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3RocmVhZF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZF91bml0dGVzdC5jYwppbmRleCBkNWM1
M2Y4YTdjYzBhMjdmYzRmYTY0N2JmOTdkMWNmNmYyOWNjMmVjLi43ZTM5MmFmZmQ5NGE1YjBhN2Jk
YmUzODA5ZTNiNmE2OGQ3MWQzZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aHJlYWRfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkX3Vu
aXR0ZXN0LmNjCkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIFNvY2tldENsaWVudCA6IHB1YmxpYyBU
ZXN0R2VuZXJhdG9yLCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAg
ICAgICAgICAgICBjb25zdCBTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAg
ICAgICBjb25zdCBQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgIGNv
bnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKSB7CiAgICAgRVhQRUNUX0VRKHNpemUsIHNpemVv
Zih1aW50MzJfdCkpOwogICAgIHVpbnQzMl90IHByZXYgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oYnVmKVswXTsKICAgICB1aW50MzJfdCByZXN1bHQgPSBOZXh0KHByZXYpOwpA
QCAtNDcwLDkgKzQ3MCw5IEBAIFRFU1RfRihBc3luY0ludm9rZVRlc3QsIEtpbGxJbnZva2VyRHVy
aW5nRXhlY3V0ZSkgewogICAvLyBVc2UgdGhlc2UgZXZlbnRzIHRvIGdldCBpbiBhIHN0YXRlIHdo
ZXJlIHRoZSBmdW5jdG9yIGlzIGluIHRoZSBtaWRkbGUgb2YKICAgLy8gZXhlY3V0aW5nLCBhbmQg
dGhlbiB0byB3YWl0IGZvciBpdCB0byBmaW5pc2gsIGVuc3VyaW5nIHRoZSAiRVhQRUNUX0ZBTFNF
IgogICAvLyBpcyBydW4uCi0gIEV2ZW50IGZ1bmN0b3Jfc3RhcnRlZChmYWxzZSwgZmFsc2UpOwot
ICBFdmVudCBmdW5jdG9yX2NvbnRpbnVlKGZhbHNlLCBmYWxzZSk7Ci0gIEV2ZW50IGZ1bmN0b3Jf
ZmluaXNoZWQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZnVuY3Rvcl9zdGFydGVkOworICBFdmVu
dCBmdW5jdG9yX2NvbnRpbnVlOworICBFdmVudCBmdW5jdG9yX2ZpbmlzaGVkOwogCiAgIGF1dG8g
dGhyZWFkID0gVGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2VydmVyKCk7CiAgIHRocmVhZC0+U3Rh
cnQoKTsKQEAgLTUwNyw3ICs1MDcsNyBAQCBURVNUX0YoQXN5bmNJbnZva2VUZXN0LCBLaWxsSW52
b2tlckR1cmluZ0V4ZWN1dGUpIHsKIC8vIGRlc3Ryb3llZC4gVGhpcyBzaG91bGRuJ3QgZGVhZGxv
Y2sgb3IgY3Jhc2g7IHRoaXMgc2Vjb25kIGludm9jYXRpb24gc2hvdWxkCiAvLyBqdXN0IGJlIGln
bm9yZWQuCiBURVNUX0YoQXN5bmNJbnZva2VUZXN0LCBLaWxsSW52b2tlckR1cmluZ0V4ZWN1dGVX
aXRoUmVlbnRyYW50SW52b2tlKSB7Ci0gIEV2ZW50IGZ1bmN0b3Jfc3RhcnRlZChmYWxzZSwgZmFs
c2UpOworICBFdmVudCBmdW5jdG9yX3N0YXJ0ZWQ7CiAgIC8vIEZsYWcgdXNlZCB0byB2ZXJpZnkg
dGhhdCB0aGUgcmVjdXJzaXZlbHkgaW52b2tlZCB0YXNrIG5ldmVyIGFjdHVhbGx5IHJ1bnMuCiAg
IGJvb2wgcmVlbnRyYW50X2Z1bmN0b3JfcnVuID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWVzdGFtcGFs
aWduZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS90aW1lc3RhbXBhbGlnbmVyLmNjCmluZGV4IGE5YmNhZmJkYzVmNWFkY2JkMmY2ZTY1ZTZl
ODVhMzllYzhhODY4ZTguLmYyZGExMDE3MjcxMTBkNDdhZWI5OWMwZGUyY2M0M2I0MzRjZTYxYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3RpbWVzdGFtcGFsaWduZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGltZXN0YW1wYWxpZ25lci5jYwpAQCAtOCw2ICs4
LDcgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KICAqLwogCisjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxsaW1p
dHM+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlscy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1
dGlscy5jYwppbmRleCBkZThmYzMyNTljMjhlYzRlN2MwN2RmNWE1NmY4ZTQ5NzMzNjA5NzM3Li5k
YzViNjExZjY0N2JlYzk0NTIyMDZkZTA1MmQ3ZTVmYjY5ZjQ1OTNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aW1ldXRpbHMu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvdGltZXV0aWxzLmNjCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4K
ICNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpCiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KKyNp
bmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjZW5kaWYKICNl
bmRpZgogCkBAIC0yOCw3ICsyOSw2IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CkBAIC0x
NTQsNyArMTU0LDcgQEAgaW50NjRfdCBUaW1lc3RhbXBXcmFwQXJvdW5kSGFuZGxlcjo6VW53cmFw
KHVpbnQzMl90IHRzKSB7CiAgIHJldHVybiB0cyArIChudW1fd3JhcF8gPDwgMzIpOwogfQogCi1p
bnQ2NF90IFRtVG9TZWNvbmRzKGNvbnN0IHN0ZDo6dG0mIHRtKSB7CitpbnQ2NF90IFRtVG9TZWNv
bmRzKGNvbnN0IHRtJiB0bSkgewogICBzdGF0aWMgc2hvcnQgaW50IG1kYXlzWzEyXSA9IHszMSwg
MjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxfTsKICAgc3RhdGljIHNo
b3J0IGludCBjdW11bF9tZGF5c1sxMl0gPSB7MCwgICAzMSwgIDU5LCAgOTAsICAxMjAsIDE1MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgxLCAyMTIsIDI0MywgMjcz
LCAzMDQsIDMzNH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aW1ldXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlscy5oCmluZGV4IDNhNDEyYTQ3Y2Y4
NDI1YmM5ZjFhNGUzMzAwZDU2ZDQ1MDFjY2E1YWMuLjRlMzhhMDMxNDA5ZjBmMDVhYjU4Mzg3NzRi
YzdlZWYxMGE2OTA3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlscy5oCkBAIC0xMyw4ICsx
Myw2IEBACiAKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx0aW1lLmg+Ci0KLSNpbmNs
dWRlIDxjdGltZT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKQEAgLTExMCwxMCArMTA4LDEwIEBAIGNsYXNzIFRpbWVzdGFtcFdyYXBBcm91bmRIYW5k
bGVyIHsKICAgaW50NjRfdCBudW1fd3JhcF87CiB9OwogCi0vLyBDb252ZXJ0IGZyb20gc3RkOjp0
bSwgd2hpY2ggaXMgcmVsYXRpdmUgdG8gMTkwMC0wMS0wMSAwMDowMCB0byBudW1iZXIgb2YKLS8v
IHNlY29uZHMgZnJvbSAxOTcwLTAxLTAxIDAwOjAwICgiZXBvY2giKS4gIERvbid0IHJldHVybiB0
aW1lX3Qgc2luY2UgdGhhdAorLy8gQ29udmVydCBmcm9tIHRtLCB3aGljaCBpcyByZWxhdGl2ZSB0
byAxOTAwLTAxLTAxIDAwOjAwIHRvIG51bWJlciBvZgorLy8gc2Vjb25kcyBmcm9tIDE5NzAtMDEt
MDEgMDA6MDAgKCJlcG9jaCIpLiBEb24ndCByZXR1cm4gdGltZV90IHNpbmNlIHRoYXQKIC8vIGlz
IHN0aWxsIDMyIGJpdHMgb24gbWFueSBzeXN0ZW1zLgotaW50NjRfdCBUbVRvU2Vjb25kcyhjb25z
dCBzdGQ6OnRtJiB0bSk7CitpbnQ2NF90IFRtVG9TZWNvbmRzKGNvbnN0IHRtJiB0bSk7CiAKIC8v
IFJldHVybiB0aGUgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDEsIDE5NzAs
IFVUQy4KIC8vIFVzZWZ1bCBtYWlubHkgd2hlbiBwcm9kdWNpbmcgbG9ncyB0byBiZSBjb3JyZWxh
dGVkIHdpdGggb3RoZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlsc191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlsc191bml0dGVz
dC5jYwppbmRleCAwZTE5NDlhZWUzMTEyNWJkMzZhNzIxMjAwMzM4NDE2ZTAyYjA3Yzk2Li41Nzdl
ZmRhMDI1NWIwM2NiNjc5ZjQ1OTViZGViYzU1NTljZjQ4MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aW1ldXRpbHNfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvdGltZXV0aWxzX3VuaXR0ZXN0LmNjCkBAIC0yNjIsNyArMjYyLDcgQEAgVEVTVChG
YWtlQ2xvY2ssIFNldHRpbmdUaW1lV2FrZXNUaHJlYWRzKSB7CiAgIHdvcmtlci0+U3RhcnQoKTsK
IAogICAvLyBQb3N0IGFuIGV2ZW50IHRoYXQgd29uJ3QgYmUgZXhlY3V0ZWQgZm9yIDEwIHNlY29u
ZHMuCi0gIEV2ZW50IG1lc3NhZ2VfaGFuZGxlcl9kaXNwYXRjaGVkKGZhbHNlLCBmYWxzZSk7Cisg
IEV2ZW50IG1lc3NhZ2VfaGFuZGxlcl9kaXNwYXRjaGVkOwogICBhdXRvIGZ1bmN0b3IgPSBbJm1l
c3NhZ2VfaGFuZGxlcl9kaXNwYXRjaGVkXSB7CiAgICAgbWVzc2FnZV9oYW5kbGVyX2Rpc3BhdGNo
ZWQuU2V0KCk7CiAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3VuaXRzL0JVSUxELmduCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhjNzIyYmJjN2I4ZTcwZmIyMDZmODA2YzExMmI2MWRkYmZlOTg1YjMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS91bml0cy9CVUlMRC5nbgpAQCAtMCwwICsxLDM3IEBACisjIENvcHlyaWdodCAoYykgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
IyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyMgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAorIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisjIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorCitpbXBvcnQoIi4uLy4uL3dlYnJ0
Yy5nbmkiKQorCitydGNfc291cmNlX3NldCgidW5pdF9iYXNlIikgeworICB2aXNpYmlsaXR5ID0g
WworICAgICIuLi8uLi9hcGkvdW5pdHM6KiIsCisgICAgIjoqIiwKKyAgXQorICBzb3VyY2VzID0g
WworICAgICJ1bml0X2Jhc2UuaCIsCisgIF0KKworICBkZXBzID0gWworICAgICIuLi8uLi9ydGNf
YmFzZTpjaGVja3MiLAorICAgICIuLi8uLi9ydGNfYmFzZTpzYWZlX2NvbnZlcnNpb25zIiwKKyAg
XQorfQorCitpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKKyAgcnRjX3NvdXJjZV9zZXQoInVuaXRz
X3VuaXR0ZXN0cyIpIHsKKyAgICB0ZXN0b25seSA9IHRydWUKKyAgICBzb3VyY2VzID0gWworICAg
ICAgInVuaXRfYmFzZV91bml0dGVzdC5jYyIsCisgICAgXQorICAgIGRlcHMgPSBbCisgICAgICAi
OnVuaXRfYmFzZSIsCisgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgIF0KKyAg
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy91bml0X2Jhc2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
NTAzYTMyOTkzNzY2NzY0MmNmYTcwZjdhMTdkMjllMzMzYjRmMDY0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5p
dHMvdW5pdF9iYXNlLmgKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisjaWZu
ZGVmIFJUQ19CQVNFX1VOSVRTX1VOSVRfQkFTRV9IXworI2RlZmluZSBSVENfQkFTRV9VTklUU19V
TklUX0JBU0VfSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9u
dW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNw
YWNlIHJ0Y191bml0c19pbXBsIHsKKworLy8gVW5pdEJhc2UgaXMgYSBiYXNlIGNsYXNzIGZvciBp
bXBsZW1lbnRpbmcgY3VzdG9tIHZhbHVlIHR5cGVzIHdpdGggYSBzcGVjaWZpYworLy8gdW5pdC4g
SXQgcHJvdmlkZXMgdHlwZSBzYWZldHkgYW5kIHNvbW1vbmx5IHVzZWZ1bCBvcGVyYXRpb25zLiBU
aGUgdW5kZWx5aW5nCisvLyBzdG9yYWdlIGlzIGFsd2F5cyBhbiBpbnQ2NF90LCBpdCdzIHVwIHRv
IHRoZSB1bml0IGltcGxlbWVudGF0aW9uIHRvIGNob29zZQorLy8gd2hhdCBzY2FsZSBpdCByZXBy
ZXNlbnRzLgorLy8KKy8vIEl0J3MgdXNlZCBsaWtlOgorLy8gY2xhc3MgTXlVbml0OiBwdWJsaWMg
VW5pdEJhc2U8TXlVbml0PiB7Li4ufTsKKy8vCisvLyBVbml0X1QgaXMgdGhlIHN1YmNsYXNzIHJl
cHJlc2VudGluZyB0aGUgc3BlY2lmaWMgdW5pdC4KK3RlbXBsYXRlIDxjbGFzcyBVbml0X1Q+Citj
bGFzcyBVbml0QmFzZSB7CisgcHVibGljOgorICBVbml0QmFzZSgpID0gZGVsZXRlOworICBzdGF0
aWMgY29uc3RleHByIFVuaXRfVCBaZXJvKCkgeyByZXR1cm4gVW5pdF9UKDApOyB9CisgIHN0YXRp
YyBjb25zdGV4cHIgVW5pdF9UIFBsdXNJbmZpbml0eSgpIHsgcmV0dXJuIFVuaXRfVChQbHVzSW5m
aW5pdHlWYWwoKSk7IH0KKyAgc3RhdGljIGNvbnN0ZXhwciBVbml0X1QgTWludXNJbmZpbml0eSgp
IHsgcmV0dXJuIFVuaXRfVChNaW51c0luZmluaXR5VmFsKCkpOyB9CisKKyAgY29uc3RleHByIGJv
b2wgSXNaZXJvKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfID09IDA7IH0KKyAgY29uc3RleHByIGJv
b2wgSXNGaW5pdGUoKSBjb25zdCB7IHJldHVybiAhSXNJbmZpbml0ZSgpOyB9CisgIGNvbnN0ZXhw
ciBib29sIElzSW5maW5pdGUoKSBjb25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyA9PSBQbHVzSW5m
aW5pdHlWYWwoKSB8fCB2YWx1ZV8gPT0gTWludXNJbmZpbml0eVZhbCgpOworICB9CisgIGNvbnN0
ZXhwciBib29sIElzUGx1c0luZmluaXR5KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfID09IFBsdXNJ
bmZpbml0eVZhbCgpOyB9CisgIGNvbnN0ZXhwciBib29sIElzTWludXNJbmZpbml0eSgpIGNvbnN0
IHsKKyAgICByZXR1cm4gdmFsdWVfID09IE1pbnVzSW5maW5pdHlWYWwoKTsKKyAgfQorCisgIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICAg
IHJldHVybiB2YWx1ZV8gPT0gb3RoZXIudmFsdWVfOworICB9CisgIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yIT0oY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB2YWx1ZV8g
IT0gb3RoZXIudmFsdWVfOworICB9CisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3Qg
VW5pdF9UJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB2YWx1ZV8gPD0gb3RoZXIudmFsdWVf
OworICB9CisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVW5pdF9UJiBvdGhlcikg
Y29uc3QgeworICAgIHJldHVybiB2YWx1ZV8gPj0gb3RoZXIudmFsdWVfOworICB9CisgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBVbml0X1QmIG90aGVyKSBjb25zdCB7CisgICAgcmV0
dXJuIHZhbHVlXyA+IG90aGVyLnZhbHVlXzsKKyAgfQorICBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjwoY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB2YWx1ZV8gPCBvdGhl
ci52YWx1ZV87CisgIH0KKworIHByb3RlY3RlZDoKKyAgdGVtcGxhdGUgPGludDY0X3QgdmFsdWU+
CisgIHN0YXRpYyBjb25zdGV4cHIgVW5pdF9UIEZyb21TdGF0aWNWYWx1ZSgpIHsKKyAgICBzdGF0
aWNfYXNzZXJ0KHZhbHVlID49IDAgfHwgIVVuaXRfVDo6b25lX3NpZGVkLCAiIik7CisgICAgc3Rh
dGljX2Fzc2VydCh2YWx1ZSA+IE1pbnVzSW5maW5pdHlWYWwoKSwgIiIpOworICAgIHN0YXRpY19h
c3NlcnQodmFsdWUgPCBQbHVzSW5maW5pdHlWYWwoKSwgIiIpOworICAgIHJldHVybiBVbml0X1Qo
dmFsdWUpOworICB9CisKKyAgdGVtcGxhdGUgPGludDY0X3QgZnJhY3Rpb25fdmFsdWUsIGludDY0
X3QgRGVub21pbmF0b3I+CisgIHN0YXRpYyBjb25zdGV4cHIgVW5pdF9UIEZyb21TdGF0aWNGcmFj
dGlvbigpIHsKKyAgICBzdGF0aWNfYXNzZXJ0KGZyYWN0aW9uX3ZhbHVlID49IDAgfHwgIVVuaXRf
VDo6b25lX3NpZGVkLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChmcmFjdGlvbl92YWx1ZSA+IE1p
bnVzSW5maW5pdHlWYWwoKSAvIERlbm9taW5hdG9yLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChm
cmFjdGlvbl92YWx1ZSA8IFBsdXNJbmZpbml0eVZhbCgpIC8gRGVub21pbmF0b3IsICIiKTsKKyAg
ICByZXR1cm4gVW5pdF9UKGZyYWN0aW9uX3ZhbHVlICogRGVub21pbmF0b3IpOworICB9CisKKyAg
dGVtcGxhdGUgPAorICAgICAgdHlwZW5hbWUgVCwKKyAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgorICBzdGF0
aWMgVW5pdF9UIEZyb21WYWx1ZShUIHZhbHVlKSB7CisgICAgaWYgKFVuaXRfVDo6b25lX3NpZGVk
KQorICAgICAgUlRDX0RDSEVDS19HRSh2YWx1ZSwgMCk7CisgICAgUlRDX0RDSEVDS19HVCh2YWx1
ZSwgTWludXNJbmZpbml0eVZhbCgpKTsKKyAgICBSVENfRENIRUNLX0xUKHZhbHVlLCBQbHVzSW5m
aW5pdHlWYWwoKSk7CisgICAgcmV0dXJuIFVuaXRfVChydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRf
dD4odmFsdWUpKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKKyAgICAgICAgICAgIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6
dHlwZSogPQorICAgICAgICAgICAgICAgIG51bGxwdHI+CisgIHN0YXRpYyBVbml0X1QgRnJvbVZh
bHVlKFQgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6
aW5maW5pdHkoKSkgeworICAgICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOworICAgIH0gZWxzZSBp
ZiAodmFsdWUgPT0gLXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkpIHsKKyAgICAg
IHJldHVybiBNaW51c0luZmluaXR5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIFJUQ19EQ0hFQ0so
IXN0ZDo6aXNuYW4odmFsdWUpKTsKKyAgICAgIHJldHVybiBGcm9tVmFsdWUocnRjOjpkY2hlY2tl
ZF9jYXN0PGludDY0X3Q+KHZhbHVlKSk7CisgICAgfQorICB9CisKKyAgdGVtcGxhdGUgPAorICAg
ICAgaW50NjRfdCBEZW5vbWluYXRvciwKKyAgICAgIHR5cGVuYW1lIFQsCisgICAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVs
bHB0cj4KKyAgc3RhdGljIFVuaXRfVCBGcm9tRnJhY3Rpb24oVCB2YWx1ZSkgeworICAgIGlmIChV
bml0X1Q6Om9uZV9zaWRlZCkKKyAgICAgIFJUQ19EQ0hFQ0tfR0UodmFsdWUsIDApOworICAgIFJU
Q19EQ0hFQ0tfR1QodmFsdWUsIE1pbnVzSW5maW5pdHlWYWwoKSAvIERlbm9taW5hdG9yKTsKKyAg
ICBSVENfRENIRUNLX0xUKHZhbHVlLCBQbHVzSW5maW5pdHlWYWwoKSAvIERlbm9taW5hdG9yKTsK
KyAgICByZXR1cm4gVW5pdF9UKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90Pih2YWx1ZSAqIERl
bm9taW5hdG9yKSk7CisgIH0KKyAgdGVtcGxhdGUgPGludDY0X3QgRGVub21pbmF0b3IsCisgICAg
ICAgICAgICB0eXBlbmFtZSBULAorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlKiA9CisgICAgICAgICAgICAg
ICAgbnVsbHB0cj4KKyAgc3RhdGljIFVuaXRfVCBGcm9tRnJhY3Rpb24oVCB2YWx1ZSkgeworICAg
IHJldHVybiBGcm9tVmFsdWUodmFsdWUgKiBEZW5vbWluYXRvcik7CisgIH0KKworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+CisgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlwZSBUb1ZhbHVlKCkgY29uc3QgeworICAgIFJU
Q19EQ0hFQ0soSXNGaW5pdGUoKSk7CisgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPih2
YWx1ZV8pOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBjb25zdGV4cHIgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0
eXBlCisgIFRvVmFsdWUoKSBjb25zdCB7CisgICAgcmV0dXJuIElzUGx1c0luZmluaXR5KCkKKyAg
ICAgICAgICAgICAgID8gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKQorICAgICAg
ICAgICAgICAgOiBJc01pbnVzSW5maW5pdHkoKSA/IC1zdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojpp
bmZpbml0eSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWVfOwor
ICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBjb25zdGV4cHIgVCBUb1ZhbHVlT3IoVCBm
YWxsYmFja192YWx1ZSkgY29uc3QgeworICAgIHJldHVybiBJc0Zpbml0ZSgpID8gdmFsdWVfIDog
ZmFsbGJhY2tfdmFsdWU7CisgIH0KKworICB0ZW1wbGF0ZSA8aW50NjRfdCBEZW5vbWluYXRvciwg
dHlwZW5hbWUgVCA9IGludDY0X3Q+CisgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
aW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlwZSBUb0ZyYWN0aW9uKCkKKyAgICAgIGNvbnN0IHsK
KyAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOworICAgIGlmIChVbml0X1Q6Om9uZV9zaWRlZCkg
eworICAgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPigKKyAgICAgICAgICBEaXZSb3Vu
ZFBvc2l0aXZlVG9OZWFyZXN0KHZhbHVlXywgRGVub21pbmF0b3IpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihEaXZSb3VuZFRvTmVhcmVzdCh2YWx1
ZV8sIERlbm9taW5hdG9yKSk7CisgICAgfQorICB9CisgIHRlbXBsYXRlIDxpbnQ2NF90IERlbm9t
aW5hdG9yLCB0eXBlbmFtZSBUPgorICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCisgIFRvRnJhY3Rpb24o
KSBjb25zdCB7CisgICAgcmV0dXJuIFRvVmFsdWU8VD4oKSAqICgxIC8gc3RhdGljX2Nhc3Q8VD4o
RGVub21pbmF0b3IpKTsKKyAgfQorCisgIHRlbXBsYXRlIDxpbnQ2NF90IERlbm9taW5hdG9yPgor
ICBjb25zdGV4cHIgaW50NjRfdCBUb0ZyYWN0aW9uT3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkg
Y29uc3QgeworICAgIHJldHVybiBJc0Zpbml0ZSgpID8gVW5pdF9UOjpvbmVfc2lkZWQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA/IERpdlJvdW5kUG9zaXRpdmVUb05lYXJlc3QodmFsdWVf
LCBEZW5vbWluYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IERpdlJvdW5kVG9O
ZWFyZXN0KHZhbHVlXywgRGVub21pbmF0b3IpCisgICAgICAgICAgICAgICAgICAgICAgOiBmYWxs
YmFja192YWx1ZTsKKyAgfQorCisgIHRlbXBsYXRlIDxpbnQ2NF90IEZhY3RvciwgdHlwZW5hbWUg
VCA9IGludDY0X3Q+CisgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8
VD46OnZhbHVlLCBUPjo6dHlwZSBUb011bHRpcGxlKCkKKyAgICAgIGNvbnN0IHsKKyAgICBSVENf
RENIRUNLX0dFKFRvVmFsdWUoKSwgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKCkgLyBGYWN0
b3IpOworICAgIFJUQ19EQ0hFQ0tfTEUoVG9WYWx1ZSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+
OjptYXgoKSAvIEZhY3Rvcik7CisgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihUb1Zh
bHVlKCkgKiBGYWN0b3IpOworICB9CisgIHRlbXBsYXRlIDxpbnQ2NF90IEZhY3RvciwgdHlwZW5h
bWUgVD4KKyAgY29uc3RleHByIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRp
bmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZQorICBUb011bHRpcGxlKCkgY29uc3QgeworICAg
IHJldHVybiBUb1ZhbHVlPFQ+KCkgKiBGYWN0b3I7CisgIH0KKworICBleHBsaWNpdCBjb25zdGV4
cHIgVW5pdEJhc2UoaW50NjRfdCB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisKKyBwcml2YXRl
OgorICB0ZW1wbGF0ZSA8Y2xhc3MgUmVsYXRpdmVVbml0X1Q+CisgIGZyaWVuZCBjbGFzcyBSZWxh
dGl2ZVVuaXQ7CisKKyAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgaW50NjRfdCBQbHVzSW5maW5p
dHlWYWwoKSB7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgp
OworICB9CisgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGludDY0X3QgTWludXNJbmZpbml0eVZh
bCgpIHsKKyAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCk7Cisg
IH0KKworICBVbml0X1QmIEFzU3ViQ2xhc3NSZWYoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0
PFVuaXRfVCY+KCp0aGlzKTsgfQorICBjb25zdGV4cHIgY29uc3QgVW5pdF9UJiBBc1N1YkNsYXNz
UmVmKCkgY29uc3QgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaXRfVCY+
KCp0aGlzKTsKKyAgfQorICAvLyBBc3N1bWVzIHRoYXQgbiA+PSAwIGFuZCBkID4gMC4KKyAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQ2NF90IERpdlJvdW5kUG9zaXRpdmVUb05lYXJlc3QoaW50NjRfdCBu
LCBpbnQ2NF90IGQpIHsKKyAgICByZXR1cm4gKG4gKyBkIC8gMikgLyBkOworICB9CisgIC8vIEFz
c3VtZXMgdGhhdCBkID4gMC4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IERpdlJvdW5kVG9O
ZWFyZXN0KGludDY0X3QgbiwgaW50NjRfdCBkKSB7CisgICAgcmV0dXJuIChuICsgKG4gPj0gMCA/
IGQgLyAyIDogLWQgLyAyKSkgLyBkOworICB9CisKKyAgaW50NjRfdCB2YWx1ZV87Cit9OworCisv
LyBFeHRlbmRzIFVuaXRCYXNlIHRvIHByb3ZpZGUgb3BlcmF0aW9ucyBmb3IgcmVsYXRpdmUgdW5p
dHMsIHRoYXQgaXMsIHVuaXRzCisvLyB0aGF0IGhhdmUgYSBtZWFuaW5nZnVsIHJlbGF0aW9uIGJl
dHdlZW4gdmFsdWVzIHN1Y2ggdGhhdCBhICs9IGIgaXMgYQorLy8gc2Vuc2libGUgdGhpbmcgdG8g
ZG8uIEZvciBhLGIgPC0gc2FtZSB1bml0LgordGVtcGxhdGUgPGNsYXNzIFVuaXRfVD4KK2NsYXNz
IFJlbGF0aXZlVW5pdCA6IHB1YmxpYyBVbml0QmFzZTxVbml0X1Q+IHsKKyBwdWJsaWM6CisgIFVu
aXRfVCBDbGFtcGVkKFVuaXRfVCBtaW5fdmFsdWUsIFVuaXRfVCBtYXhfdmFsdWUpIGNvbnN0IHsK
KyAgICByZXR1cm4gc3RkOjptYXgobWluX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1pbihVbml0QmFzZTxVbml0X1Q+OjpBc1N1YkNsYXNzUmVmKCksIG1heF92YWx1ZSkpOworICB9
CisgIHZvaWQgQ2xhbXAoVW5pdF9UIG1pbl92YWx1ZSwgVW5pdF9UIG1heF92YWx1ZSkgeworICAg
ICp0aGlzID0gQ2xhbXBlZChtaW5fdmFsdWUsIG1heF92YWx1ZSk7CisgIH0KKyAgVW5pdF9UIG9w
ZXJhdG9yKyhjb25zdCBVbml0X1Qgb3RoZXIpIGNvbnN0IHsKKyAgICBpZiAodGhpcy0+SXNQbHVz
SW5maW5pdHkoKSB8fCBvdGhlci5Jc1BsdXNJbmZpbml0eSgpKSB7CisgICAgICBSVENfRENIRUNL
KCF0aGlzLT5Jc01pbnVzSW5maW5pdHkoKSk7CisgICAgICBSVENfRENIRUNLKCFvdGhlci5Jc01p
bnVzSW5maW5pdHkoKSk7CisgICAgICByZXR1cm4gdGhpcy0+UGx1c0luZmluaXR5KCk7CisgICAg
fSBlbHNlIGlmICh0aGlzLT5Jc01pbnVzSW5maW5pdHkoKSB8fCBvdGhlci5Jc01pbnVzSW5maW5p
dHkoKSkgeworICAgICAgUlRDX0RDSEVDSyghdGhpcy0+SXNQbHVzSW5maW5pdHkoKSk7CisgICAg
ICBSVENfRENIRUNLKCFvdGhlci5Jc1BsdXNJbmZpbml0eSgpKTsKKyAgICAgIHJldHVybiB0aGlz
LT5NaW51c0luZmluaXR5KCk7CisgICAgfQorICAgIHJldHVybiBVbml0QmFzZTxVbml0X1Q+OjpG
cm9tVmFsdWUodGhpcy0+VG9WYWx1ZSgpICsgb3RoZXIuVG9WYWx1ZSgpKTsKKyAgfQorICBVbml0
X1Qgb3BlcmF0b3ItKGNvbnN0IFVuaXRfVCBvdGhlcikgY29uc3QgeworICAgIGlmICh0aGlzLT5J
c1BsdXNJbmZpbml0eSgpIHx8IG90aGVyLklzTWludXNJbmZpbml0eSgpKSB7CisgICAgICBSVENf
RENIRUNLKCF0aGlzLT5Jc01pbnVzSW5maW5pdHkoKSk7CisgICAgICBSVENfRENIRUNLKCFvdGhl
ci5Jc1BsdXNJbmZpbml0eSgpKTsKKyAgICAgIHJldHVybiB0aGlzLT5QbHVzSW5maW5pdHkoKTsK
KyAgICB9IGVsc2UgaWYgKHRoaXMtPklzTWludXNJbmZpbml0eSgpIHx8IG90aGVyLklzUGx1c0lu
ZmluaXR5KCkpIHsKKyAgICAgIFJUQ19EQ0hFQ0soIXRoaXMtPklzUGx1c0luZmluaXR5KCkpOwor
ICAgICAgUlRDX0RDSEVDSyghb3RoZXIuSXNNaW51c0luZmluaXR5KCkpOworICAgICAgcmV0dXJu
IHRoaXMtPk1pbnVzSW5maW5pdHkoKTsKKyAgICB9CisgICAgcmV0dXJuIFVuaXRCYXNlPFVuaXRf
VD46OkZyb21WYWx1ZSh0aGlzLT5Ub1ZhbHVlKCkgLSBvdGhlci5Ub1ZhbHVlKCkpOworICB9Cisg
IFVuaXRfVCYgb3BlcmF0b3IrPShjb25zdCBVbml0X1Qgb3RoZXIpIHsKKyAgICAqdGhpcyA9ICp0
aGlzICsgb3RoZXI7CisgICAgcmV0dXJuIHRoaXMtPkFzU3ViQ2xhc3NSZWYoKTsKKyAgfQorICBV
bml0X1QmIG9wZXJhdG9yLT0oY29uc3QgVW5pdF9UIG90aGVyKSB7CisgICAgKnRoaXMgPSAqdGhp
cyAtIG90aGVyOworICAgIHJldHVybiB0aGlzLT5Bc1N1YkNsYXNzUmVmKCk7CisgIH0KKyAgY29u
c3RleHByIGRvdWJsZSBvcGVyYXRvci8oY29uc3QgVW5pdF9UIG90aGVyKSBjb25zdCB7CisgICAg
cmV0dXJuIFVuaXRCYXNlPFVuaXRfVD46OnRlbXBsYXRlIFRvVmFsdWU8ZG91YmxlPigpIC8KKyAg
ICAgICAgICAgb3RoZXIudGVtcGxhdGUgVG9WYWx1ZTxkb3VibGU+KCk7CisgIH0KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfYXJpdGht
ZXRpYzxUPjo6dmFsdWUsIFVuaXRfVD46OnR5cGUgb3BlcmF0b3IvKAorICAgICAgY29uc3QgVCYg
c2NhbGFyKSBjb25zdCB7CisgICAgcmV0dXJuIFVuaXRCYXNlPFVuaXRfVD46OkZyb21WYWx1ZSgK
KyAgICAgICAgc3RkOjpyb3VuZChVbml0QmFzZTxVbml0X1Q+Ojp0ZW1wbGF0ZSBUb1ZhbHVlPGlu
dDY0X3Q+KCkgLyBzY2FsYXIpKTsKKyAgfQorICBVbml0X1Qgb3BlcmF0b3IqKGNvbnN0IGRvdWJs
ZSBzY2FsYXIpIGNvbnN0IHsKKyAgICByZXR1cm4gVW5pdEJhc2U8VW5pdF9UPjo6RnJvbVZhbHVl
KHN0ZDo6cm91bmQodGhpcy0+VG9WYWx1ZSgpICogc2NhbGFyKSk7CisgIH0KKyAgVW5pdF9UIG9w
ZXJhdG9yKihjb25zdCBpbnQ2NF90IHNjYWxhcikgY29uc3QgeworICAgIHJldHVybiBVbml0QmFz
ZTxVbml0X1Q+OjpGcm9tVmFsdWUodGhpcy0+VG9WYWx1ZSgpICogc2NhbGFyKTsKKyAgfQorICBV
bml0X1Qgb3BlcmF0b3IqKGNvbnN0IGludDMyX3Qgc2NhbGFyKSBjb25zdCB7CisgICAgcmV0dXJu
IFVuaXRCYXNlPFVuaXRfVD46OkZyb21WYWx1ZSh0aGlzLT5Ub1ZhbHVlKCkgKiBzY2FsYXIpOwor
ICB9CisKKyBwcm90ZWN0ZWQ6CisgIHVzaW5nIFVuaXRCYXNlPFVuaXRfVD46OlVuaXRCYXNlOwor
fTsKKwordGVtcGxhdGUgPGNsYXNzIFVuaXRfVD4KK2lubGluZSBVbml0X1Qgb3BlcmF0b3IqKGNv
bnN0IGRvdWJsZSBzY2FsYXIsIGNvbnN0IFJlbGF0aXZlVW5pdDxVbml0X1Q+IG90aGVyKSB7Cisg
IHJldHVybiBvdGhlciAqIHNjYWxhcjsKK30KK3RlbXBsYXRlIDxjbGFzcyBVbml0X1Q+Citpbmxp
bmUgVW5pdF9UIG9wZXJhdG9yKihjb25zdCBpbnQ2NF90IHNjYWxhciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFJlbGF0aXZlVW5pdDxVbml0X1Q+IG90aGVyKSB7CisgIHJldHVybiBv
dGhlciAqIHNjYWxhcjsKK30KK3RlbXBsYXRlIDxjbGFzcyBVbml0X1Q+CitpbmxpbmUgVW5pdF9U
IG9wZXJhdG9yKihjb25zdCBpbnQzMl90JiBzY2FsYXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBSZWxhdGl2ZVVuaXQ8VW5pdF9UPiBvdGhlcikgeworICByZXR1cm4gb3RoZXIgKiBz
Y2FsYXI7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBydGNfdW5pdHNfaW1wbAorCit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfVU5JVFNfVU5JVF9CQVNFX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS91bml0cy91bml0X2Jhc2VfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy91bml0X2Jhc2VfdW5pdHRlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjhjODUwM2RlY2I0NzgzM2U0OWQwZGYxNmQyMDM5Y2IwYWMwNGNmZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3VuaXRzL3VuaXRfYmFzZV91bml0dGVzdC5jYwpAQCAtMCwwICsxLDIzNCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
CisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfYmFzZS91bml0cy91bml0X2Jh
c2UuaCIKKworI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7Citu
YW1lc3BhY2UgeworY2xhc3MgVGVzdFVuaXQgZmluYWwgOiBwdWJsaWMgcnRjX3VuaXRzX2ltcGw6
OlJlbGF0aXZlVW5pdDxUZXN0VW5pdD4geworIHB1YmxpYzoKKyAgVGVzdFVuaXQoKSA9IGRlbGV0
ZTsKKworICB1c2luZyBVbml0QmFzZTo6RnJvbVN0YXRpY1ZhbHVlOworICB1c2luZyBVbml0QmFz
ZTo6RnJvbVZhbHVlOworICB1c2luZyBVbml0QmFzZTo6VG9WYWx1ZTsKKyAgdXNpbmcgVW5pdEJh
c2U6OlRvVmFsdWVPcjsKKworICB0ZW1wbGF0ZSA8aW50NjRfdCBraWxvPgorICBzdGF0aWMgY29u
c3RleHByIFRlc3RVbml0IEZyb21TdGF0aWNLaWxvKCkgeworICAgIHJldHVybiBGcm9tU3RhdGlj
RnJhY3Rpb248a2lsbywgMTAwMD4oKTsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
c3RhdGljIFRlc3RVbml0IEZyb21LaWxvKFQga2lsbykgeworICAgIHJldHVybiBGcm9tRnJhY3Rp
b248MTAwMD4oa2lsbyk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBpbnQ2NF90Pgor
ICBUIFRvS2lsbygpIGNvbnN0IHsKKyAgICByZXR1cm4gVW5pdEJhc2U6OlRvRnJhY3Rpb248MTAw
MCwgVD4oKTsKKyAgfQorICBjb25zdGV4cHIgaW50NjRfdCBUb0tpbG9PcihpbnQ2NF90IGZhbGxi
YWNrKSBjb25zdCB7CisgICAgcmV0dXJuIFVuaXRCYXNlOjpUb0ZyYWN0aW9uT3I8MTAwMD4oZmFs
bGJhY2spOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBjb25zdGV4cHIgVCBUb01p
bGxpKCkgY29uc3QgeworICAgIHJldHVybiBVbml0QmFzZTo6VG9NdWx0aXBsZTwxMDAwLCBUPigp
OworICB9CisKKyBwcml2YXRlOgorICBmcmllbmQgY2xhc3MgVW5pdEJhc2U8VGVzdFVuaXQ+Owor
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgb25lX3NpZGVkID0gZmFsc2U7CisgIHVzaW5nIFJlbGF0
aXZlVW5pdDxUZXN0VW5pdD46OlJlbGF0aXZlVW5pdDsKK307Cit9ICAvLyBuYW1lc3BhY2UKK25h
bWVzcGFjZSB0ZXN0IHsKK1RFU1QoVW5pdEJhc2VUZXN0LCBDb25zdEV4cHIpIHsKKyAgY29uc3Rl
eHByIGludDY0X3Qga1ZhbHVlID0gLTEyMzQ1OworICBjb25zdGV4cHIgVGVzdFVuaXQga1Rlc3RV
bml0WmVybyA9IFRlc3RVbml0OjpaZXJvKCk7CisgIGNvbnN0ZXhwciBUZXN0VW5pdCBrVGVzdFVu
aXRQbHVzSW5mID0gVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpOworICBjb25zdGV4cHIgVGVzdFVu
aXQga1Rlc3RVbml0TWludXNJbmYgPSBUZXN0VW5pdDo6TWludXNJbmZpbml0eSgpOworICBzdGF0
aWNfYXNzZXJ0KGtUZXN0VW5pdFplcm8uSXNaZXJvKCksICIiKTsKKyAgc3RhdGljX2Fzc2VydChr
VGVzdFVuaXRQbHVzSW5mLklzUGx1c0luZmluaXR5KCksICIiKTsKKyAgc3RhdGljX2Fzc2VydChr
VGVzdFVuaXRNaW51c0luZi5Jc01pbnVzSW5maW5pdHkoKSwgIiIpOworICBzdGF0aWNfYXNzZXJ0
KGtUZXN0VW5pdFBsdXNJbmYuVG9LaWxvT3IoLTEpID09IC0xLCAiIik7CisKKyAgc3RhdGljX2Fz
c2VydChrVGVzdFVuaXRQbHVzSW5mID4ga1Rlc3RVbml0WmVybywgIiIpOworCisgIGNvbnN0ZXhw
ciBUZXN0VW5pdCBrVGVzdFVuaXRLaWxvID0gVGVzdFVuaXQ6OkZyb21TdGF0aWNLaWxvPGtWYWx1
ZT4oKTsKKyAgY29uc3RleHByIFRlc3RVbml0IGtUZXN0VW5pdFZhbHVlID0gVGVzdFVuaXQ6OkZy
b21TdGF0aWNWYWx1ZTxrVmFsdWU+KCk7CisKKyAgc3RhdGljX2Fzc2VydChrVGVzdFVuaXRLaWxv
LlRvS2lsb09yKDApID09IGtWYWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KGtUZXN0VW5pdFZh
bHVlLlRvVmFsdWVPcigwKSA9PSBrVmFsdWUsICIiKTsKK30KKworVEVTVChVbml0QmFzZVRlc3Qs
IEdldEJhY2tTYW1lVmFsdWVzKSB7CisgIGNvbnN0IGludDY0X3Qga1ZhbHVlID0gNDk5OworICBm
b3IgKGludCBzaWduID0gLTE7IHNpZ24gPD0gMTsgKytzaWduKSB7CisgICAgaW50NjRfdCB2YWx1
ZSA9IGtWYWx1ZSAqIHNpZ247CisgICAgRVhQRUNUX0VRKFRlc3RVbml0OjpGcm9tS2lsbyh2YWx1
ZSkuVG9LaWxvKCksIHZhbHVlKTsKKyAgICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OkZyb21WYWx1ZSh2
YWx1ZSkuVG9WYWx1ZTxpbnQ2NF90PigpLCB2YWx1ZSk7CisgIH0KKyAgRVhQRUNUX0VRKFRlc3RV
bml0OjpaZXJvKCkuVG9WYWx1ZTxpbnQ2NF90PigpLCAwKTsKK30KKworVEVTVChVbml0QmFzZVRl
c3QsIEdldERpZmZlcmVudFByZWZpeCkgeworICBjb25zdCBpbnQ2NF90IGtWYWx1ZSA9IDMwMDAw
MDA7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6RnJvbVZhbHVlKGtWYWx1ZSkuVG9LaWxvKCksIGtW
YWx1ZSAvIDEwMDApOworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZSkuVG9W
YWx1ZTxpbnQ2NF90PigpLCBrVmFsdWUgKiAxMDAwKTsKK30KKworVEVTVChVbml0QmFzZVRlc3Qs
IElkZW50aXR5Q2hlY2tzKSB7CisgIGNvbnN0IGludDY0X3Qga1ZhbHVlID0gMzAwMDsKKyAgRVhQ
RUNUX1RSVUUoVGVzdFVuaXQ6Olplcm8oKS5Jc1plcm8oKSk7CisgIEVYUEVDVF9GQUxTRShUZXN0
VW5pdDo6RnJvbUtpbG8oa1ZhbHVlKS5Jc1plcm8oKSk7CisKKyAgRVhQRUNUX1RSVUUoVGVzdFVu
aXQ6OlBsdXNJbmZpbml0eSgpLklzSW5maW5pdGUoKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RVbml0
OjpNaW51c0luZmluaXR5KCkuSXNJbmZpbml0ZSgpKTsKKyAgRVhQRUNUX0ZBTFNFKFRlc3RVbml0
OjpaZXJvKCkuSXNJbmZpbml0ZSgpKTsKKyAgRVhQRUNUX0ZBTFNFKFRlc3RVbml0OjpGcm9tS2ls
bygta1ZhbHVlKS5Jc0luZmluaXRlKCkpOworICBFWFBFQ1RfRkFMU0UoVGVzdFVuaXQ6OkZyb21L
aWxvKGtWYWx1ZSkuSXNJbmZpbml0ZSgpKTsKKworICBFWFBFQ1RfRkFMU0UoVGVzdFVuaXQ6OlBs
dXNJbmZpbml0eSgpLklzRmluaXRlKCkpOworICBFWFBFQ1RfRkFMU0UoVGVzdFVuaXQ6Ok1pbnVz
SW5maW5pdHkoKS5Jc0Zpbml0ZSgpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6OkZyb21LaWxv
KC1rVmFsdWUpLklzRmluaXRlKCkpOworICBFWFBFQ1RfVFJVRShUZXN0VW5pdDo6RnJvbUtpbG8o
a1ZhbHVlKS5Jc0Zpbml0ZSgpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6Olplcm8oKS5Jc0Zp
bml0ZSgpKTsKKworICBFWFBFQ1RfVFJVRShUZXN0VW5pdDo6UGx1c0luZmluaXR5KCkuSXNQbHVz
SW5maW5pdHkoKSk7CisgIEVYUEVDVF9GQUxTRShUZXN0VW5pdDo6TWludXNJbmZpbml0eSgpLklz
UGx1c0luZmluaXR5KCkpOworCisgIEVYUEVDVF9UUlVFKFRlc3RVbml0OjpNaW51c0luZmluaXR5
KCkuSXNNaW51c0luZmluaXR5KCkpOworICBFWFBFQ1RfRkFMU0UoVGVzdFVuaXQ6OlBsdXNJbmZp
bml0eSgpLklzTWludXNJbmZpbml0eSgpKTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIENvbXBh
cmlzb25PcGVyYXRvcnMpIHsKKyAgY29uc3QgaW50NjRfdCBrU21hbGwgPSA0NTA7CisgIGNvbnN0
IGludDY0X3Qga0xhcmdlID0gNDUxOworICBjb25zdCBUZXN0VW5pdCBzbWFsbCA9IFRlc3RVbml0
OjpGcm9tS2lsbyhrU21hbGwpOworICBjb25zdCBUZXN0VW5pdCBsYXJnZSA9IFRlc3RVbml0OjpG
cm9tS2lsbyhrTGFyZ2UpOworCisgIEVYUEVDVF9FUShUZXN0VW5pdDo6WmVybygpLCBUZXN0VW5p
dDo6RnJvbUtpbG8oMCkpOworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpLCBU
ZXN0VW5pdDo6UGx1c0luZmluaXR5KCkpOworICBFWFBFQ1RfRVEoc21hbGwsIFRlc3RVbml0OjpG
cm9tS2lsbyhrU21hbGwpKTsKKyAgRVhQRUNUX0xFKHNtYWxsLCBUZXN0VW5pdDo6RnJvbUtpbG8o
a1NtYWxsKSk7CisgIEVYUEVDVF9HRShzbWFsbCwgVGVzdFVuaXQ6OkZyb21LaWxvKGtTbWFsbCkp
OworICBFWFBFQ1RfTkUoc21hbGwsIFRlc3RVbml0OjpGcm9tS2lsbyhrTGFyZ2UpKTsKKyAgRVhQ
RUNUX0xFKHNtYWxsLCBUZXN0VW5pdDo6RnJvbUtpbG8oa0xhcmdlKSk7CisgIEVYUEVDVF9MVChz
bWFsbCwgVGVzdFVuaXQ6OkZyb21LaWxvKGtMYXJnZSkpOworICBFWFBFQ1RfR0UobGFyZ2UsIFRl
c3RVbml0OjpGcm9tS2lsbyhrU21hbGwpKTsKKyAgRVhQRUNUX0dUKGxhcmdlLCBUZXN0VW5pdDo6
RnJvbUtpbG8oa1NtYWxsKSk7CisgIEVYUEVDVF9MVChUZXN0VW5pdDo6WmVybygpLCBzbWFsbCk7
CisgIEVYUEVDVF9HVChUZXN0VW5pdDo6WmVybygpLCBUZXN0VW5pdDo6RnJvbUtpbG8oLWtTbWFs
bCkpOworICBFWFBFQ1RfR1QoVGVzdFVuaXQ6Olplcm8oKSwgVGVzdFVuaXQ6OkZyb21LaWxvKC1r
U21hbGwpKTsKKworICBFWFBFQ1RfR1QoVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpLCBsYXJnZSk7
CisgIEVYUEVDVF9MVChUZXN0VW5pdDo6TWludXNJbmZpbml0eSgpLCBUZXN0VW5pdDo6WmVybygp
KTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIENsYW1waW5nKSB7CisgIGNvbnN0IFRlc3RVbml0
IHVwcGVyID0gVGVzdFVuaXQ6OkZyb21LaWxvKDgwMCk7CisgIGNvbnN0IFRlc3RVbml0IGxvd2Vy
ID0gVGVzdFVuaXQ6OkZyb21LaWxvKDEwMCk7CisgIGNvbnN0IFRlc3RVbml0IHVuZGVyID0gVGVz
dFVuaXQ6OkZyb21LaWxvKDEwMCk7CisgIGNvbnN0IFRlc3RVbml0IGluc2lkZSA9IFRlc3RVbml0
OjpGcm9tS2lsbyg1MDApOworICBjb25zdCBUZXN0VW5pdCBvdmVyID0gVGVzdFVuaXQ6OkZyb21L
aWxvKDEwMDApOworICBFWFBFQ1RfRVEodW5kZXIuQ2xhbXBlZChsb3dlciwgdXBwZXIpLCBsb3dl
cik7CisgIEVYUEVDVF9FUShpbnNpZGUuQ2xhbXBlZChsb3dlciwgdXBwZXIpLCBpbnNpZGUpOwor
ICBFWFBFQ1RfRVEob3Zlci5DbGFtcGVkKGxvd2VyLCB1cHBlciksIHVwcGVyKTsKKworICBUZXN0
VW5pdCBtdXRhYmxlX2RlbHRhID0gbG93ZXI7CisgIG11dGFibGVfZGVsdGEuQ2xhbXAobG93ZXIs
IHVwcGVyKTsKKyAgRVhQRUNUX0VRKG11dGFibGVfZGVsdGEsIGxvd2VyKTsKKyAgbXV0YWJsZV9k
ZWx0YSA9IGluc2lkZTsKKyAgbXV0YWJsZV9kZWx0YS5DbGFtcChsb3dlciwgdXBwZXIpOworICBF
WFBFQ1RfRVEobXV0YWJsZV9kZWx0YSwgaW5zaWRlKTsKKyAgbXV0YWJsZV9kZWx0YSA9IG92ZXI7
CisgIG11dGFibGVfZGVsdGEuQ2xhbXAobG93ZXIsIHVwcGVyKTsKKyAgRVhQRUNUX0VRKG11dGFi
bGVfZGVsdGEsIHVwcGVyKTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIENhbkJlSW5pdGl0aWFs
aXplZEZyb21MYXJnZUludCkgeworICBjb25zdCBpbnQga01heEludCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6RnJvbUtpbG8oa01heElu
dCkuVG9WYWx1ZTxpbnQ2NF90PigpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
a01heEludCkgKiAxMDAwKTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIENvbnZlcnRzVG9BbmRG
cm9tRG91YmxlKSB7CisgIGNvbnN0IGludDY0X3Qga1ZhbHVlID0gMTcwMTc7CisgIGNvbnN0IGRv
dWJsZSBrTWlsbGlEb3VibGUgPSBrVmFsdWUgKiAxZTM7CisgIGNvbnN0IGRvdWJsZSBrVmFsdWVE
b3VibGUgPSBrVmFsdWU7CisgIGNvbnN0IGRvdWJsZSBrS2lsb0RvdWJsZSA9IGtWYWx1ZSAqIDFl
LTM7CisKKyAgRVhQRUNUX0VRKFRlc3RVbml0OjpGcm9tVmFsdWUoa1ZhbHVlKS5Ub0tpbG88ZG91
YmxlPigpLCBrS2lsb0RvdWJsZSk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6RnJvbUtpbG8oa0tp
bG9Eb3VibGUpLlRvVmFsdWU8aW50NjRfdD4oKSwga1ZhbHVlKTsKKworICBFWFBFQ1RfRVEoVGVz
dFVuaXQ6OkZyb21WYWx1ZShrVmFsdWUpLlRvVmFsdWU8ZG91YmxlPigpLCBrVmFsdWVEb3VibGUp
OworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OkZyb21WYWx1ZShrVmFsdWVEb3VibGUpLlRvVmFsdWU8
aW50NjRfdD4oKSwga1ZhbHVlKTsKKworICBFWFBFQ1RfTkVBUihUZXN0VW5pdDo6RnJvbVZhbHVl
KGtWYWx1ZSkuVG9NaWxsaTxkb3VibGU+KCksIGtNaWxsaURvdWJsZSwgMSk7CisKKyAgY29uc3Qg
ZG91YmxlIGtQbHVzSW5maW5pdHkgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCk7CisgIGNvbnN0IGRvdWJsZSBrTWludXNJbmZpbml0eSA9IC1rUGx1c0luZmluaXR5Owor
CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6UGx1c0luZmluaXR5KCkuVG9LaWxvPGRvdWJsZT4oKSwg
a1BsdXNJbmZpbml0eSk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6TWludXNJbmZpbml0eSgpLlRv
S2lsbzxkb3VibGU+KCksIGtNaW51c0luZmluaXR5KTsKKyAgRVhQRUNUX0VRKFRlc3RVbml0OjpQ
bHVzSW5maW5pdHkoKS5Ub1ZhbHVlPGRvdWJsZT4oKSwga1BsdXNJbmZpbml0eSk7CisgIEVYUEVD
VF9FUShUZXN0VW5pdDo6TWludXNJbmZpbml0eSgpLlRvVmFsdWU8ZG91YmxlPigpLCBrTWludXNJ
bmZpbml0eSk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6UGx1c0luZmluaXR5KCkuVG9NaWxsaTxk
b3VibGU+KCksIGtQbHVzSW5maW5pdHkpOworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6Ok1pbnVzSW5m
aW5pdHkoKS5Ub01pbGxpPGRvdWJsZT4oKSwga01pbnVzSW5maW5pdHkpOworCisgIEVYUEVDVF9U
UlVFKFRlc3RVbml0OjpGcm9tS2lsbyhrUGx1c0luZmluaXR5KS5Jc1BsdXNJbmZpbml0eSgpKTsK
KyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6OkZyb21LaWxvKGtNaW51c0luZmluaXR5KS5Jc01pbnVz
SW5maW5pdHkoKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RVbml0OjpGcm9tVmFsdWUoa1BsdXNJbmZp
bml0eSkuSXNQbHVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RVbml0OjpGcm9tVmFs
dWUoa01pbnVzSW5maW5pdHkpLklzTWludXNJbmZpbml0eSgpKTsKK30KKworVEVTVChVbml0QmFz
ZVRlc3QsIE1hdGhPcGVyYXRpb25zKSB7CisgIGNvbnN0IGludDY0X3Qga1ZhbHVlQSA9IDI2NzsK
KyAgY29uc3QgaW50NjRfdCBrVmFsdWVCID0gNDUwOworICBjb25zdCBUZXN0VW5pdCBkZWx0YV9h
ID0gVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZUEpOworICBjb25zdCBUZXN0VW5pdCBkZWx0YV9i
ID0gVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZUIpOworICBFWFBFQ1RfRVEoKGRlbHRhX2EgKyBk
ZWx0YV9iKS5Ub0tpbG8oKSwga1ZhbHVlQSArIGtWYWx1ZUIpOworICBFWFBFQ1RfRVEoKGRlbHRh
X2EgLSBkZWx0YV9iKS5Ub0tpbG8oKSwga1ZhbHVlQSAtIGtWYWx1ZUIpOworCisgIGNvbnN0IGlu
dDMyX3Qga0ludDMyVmFsdWUgPSAxMjM7CisgIGNvbnN0IGRvdWJsZSBrRmxvYXRWYWx1ZSA9IDEy
My4wOworICBFWFBFQ1RfRVEoKFRlc3RVbml0OjpGcm9tVmFsdWUoa1ZhbHVlQSkgKiBrVmFsdWVC
KS5Ub1ZhbHVlPGludDY0X3Q+KCksCisgICAgICAgICAgICBrVmFsdWVBICoga1ZhbHVlQik7Cisg
IEVYUEVDVF9FUSgoVGVzdFVuaXQ6OkZyb21WYWx1ZShrVmFsdWVBKSAqIGtJbnQzMlZhbHVlKS5U
b1ZhbHVlPGludDY0X3Q+KCksCisgICAgICAgICAgICBrVmFsdWVBICoga0ludDMyVmFsdWUpOwor
ICBFWFBFQ1RfRVEoKFRlc3RVbml0OjpGcm9tVmFsdWUoa1ZhbHVlQSkgKiBrRmxvYXRWYWx1ZSku
VG9WYWx1ZTxpbnQ2NF90PigpLAorICAgICAgICAgICAga1ZhbHVlQSAqIGtGbG9hdFZhbHVlKTsK
KworICBFWFBFQ1RfRVEoKGRlbHRhX2IgLyAxMCkuVG9LaWxvKCksIGtWYWx1ZUIgLyAxMCk7Cisg
IEVYUEVDVF9FUShkZWx0YV9iIC8gZGVsdGFfYSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihrVmFsdWVC
KSAvIGtWYWx1ZUEpOworCisgIFRlc3RVbml0IG11dGFibGVfZGVsdGEgPSBUZXN0VW5pdDo6RnJv
bUtpbG8oa1ZhbHVlQSk7CisgIG11dGFibGVfZGVsdGEgKz0gVGVzdFVuaXQ6OkZyb21LaWxvKGtW
YWx1ZUIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9kZWx0YSwgVGVzdFVuaXQ6OkZyb21LaWxvKGtW
YWx1ZUEgKyBrVmFsdWVCKSk7CisgIG11dGFibGVfZGVsdGEgLT0gVGVzdFVuaXQ6OkZyb21LaWxv
KGtWYWx1ZUIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9kZWx0YSwgVGVzdFVuaXQ6OkZyb21LaWxv
KGtWYWx1ZUEpKTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIEluZmluaXR5T3BlcmF0aW9ucykg
eworICBjb25zdCBpbnQ2NF90IGtWYWx1ZSA9IDI2NzsKKyAgY29uc3QgVGVzdFVuaXQgZmluaXRl
ID0gVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZSk7CisgIEVYUEVDVF9UUlVFKChUZXN0VW5pdDo6
UGx1c0luZmluaXR5KCkgKyBmaW5pdGUpLklzUGx1c0luZmluaXR5KCkpOworICBFWFBFQ1RfVFJV
RSgoVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpIC0gZmluaXRlKS5Jc1BsdXNJbmZpbml0eSgpKTsK
KyAgRVhQRUNUX1RSVUUoKGZpbml0ZSArIFRlc3RVbml0OjpQbHVzSW5maW5pdHkoKSkuSXNQbHVz
SW5maW5pdHkoKSk7CisgIEVYUEVDVF9UUlVFKChmaW5pdGUgLSBUZXN0VW5pdDo6TWludXNJbmZp
bml0eSgpKS5Jc1BsdXNJbmZpbml0eSgpKTsKKworICBFWFBFQ1RfVFJVRSgoVGVzdFVuaXQ6Ok1p
bnVzSW5maW5pdHkoKSArIGZpbml0ZSkuSXNNaW51c0luZmluaXR5KCkpOworICBFWFBFQ1RfVFJV
RSgoVGVzdFVuaXQ6Ok1pbnVzSW5maW5pdHkoKSAtIGZpbml0ZSkuSXNNaW51c0luZmluaXR5KCkp
OworICBFWFBFQ1RfVFJVRSgoZmluaXRlICsgVGVzdFVuaXQ6Ok1pbnVzSW5maW5pdHkoKSkuSXNN
aW51c0luZmluaXR5KCkpOworICBFWFBFQ1RfVFJVRSgoZmluaXRlIC0gVGVzdFVuaXQ6OlBsdXNJ
bmZpbml0eSgpKS5Jc01pbnVzSW5maW5pdHkoKSk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgdGVzdAor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHRlc3RfbWFpbi5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3VuaXR0ZXN0X21haW4u
Y2MKaW5kZXggOGQ0ZmYyZGYyZDM5MzBjZjdlZDRjODU5ZTE5N2Y5MWY0M2NlMDgzYy4uNWZkM2E5
OTY4NzZmOGRjYTM1NDRkMDg4NDQxMjU0Nzc0NzAwOTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHRlc3RfbWFpbi5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS91bml0dGVzdF9tYWluLmNjCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAic3lzdGVtX3dy
YXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9tZXRyaWNzLmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgotI2luY2x1
ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19X
SU4pCiAjaW5jbHVkZSAicnRjX2Jhc2Uvd2luMzJzb2NrZXRpbml0LmgiCkBAIC0zMiwxOSArMzEs
MjAgQEAKICNpbmNsdWRlICJ0ZXN0L2lvcy90ZXN0X3N1cHBvcnQuaCIKICNlbmRpZgogCi1ERUZJ
TkVfYm9vbChoZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKTsKLURFRklORV9zdHJp
bmcobG9nLCAiIiwgImxvZ2dpbmcgb3B0aW9ucyB0byB1c2UiKTsKLURFRklORV9zdHJpbmcoCitX
RUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CitX
RUJSVENfREVGSU5FX3N0cmluZyhsb2csICIiLCAibG9nZ2luZyBvcHRpb25zIHRvIHVzZSIpOwor
V0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgZm9yY2VfZmllbGR0cmlhbHMsCiAgICAgIiIsCiAg
ICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2gg
Y2FuIGJlIGZvcmNlZC4gIgogICAgICJFLmcuIHJ1bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJp
YWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZS8iCiAgICAgIiB3aWxsIGFzc2lnbiB0aGUgZ3Jv
dXAgRW5hYmxlIHRvIGZpZWxkIHRyaWFsIFdlYlJUQy1Gb29GZWF0dXJlLiIpOwogI2lmIGRlZmlu
ZWQoV0VCUlRDX1dJTikKLURFRklORV9pbnQoY3J0X2JyZWFrX2FsbG9jLCAtMSwgIm1lbW9yeSBh
bGxvY2F0aW9uIHRvIGJyZWFrIG9uIik7Ci1ERUZJTkVfYm9vbChkZWZhdWx0X2Vycm9yX2hhbmRs
ZXJzLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAibGVhdmUgdGhlIGRlZmF1bHQg
ZXhjZXB0aW9uL2RiZyBoYW5kbGVyIGZ1bmN0aW9ucyBpbiBwbGFjZSIpOworV0VCUlRDX0RFRklO
RV9pbnQoY3J0X2JyZWFrX2FsbG9jLCAtMSwgIm1lbW9yeSBhbGxvY2F0aW9uIHRvIGJyZWFrIG9u
Iik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgZGVmYXVsdF9lcnJvcl9oYW5kbGVycywKKyAg
ICBmYWxzZSwKKyAgICAibGVhdmUgdGhlIGRlZmF1bHQgZXhjZXB0aW9uL2RiZyBoYW5kbGVyIGZ1
bmN0aW9ucyBpbiBwbGFjZSIpOwogCiB2b2lkIFRlc3RJbnZhbGlkUGFyYW1ldGVySGFuZGxlcihj
b25zdCB3Y2hhcl90KiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgd2NoYXJfdCogZnVuY3Rpb24sCkBAIC04MSw3ICs4MSw2IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICByZXR1cm4gMDsKICAgfQogCi0gIHdlYnJ0Yzo6
dGVzdDo6U2V0RXhlY3V0YWJsZVBhdGgoYXJndlswXSk7CiAgIHdlYnJ0Yzo6dGVzdDo6VmFsaWRh
dGVGaWVsZFRyaWFsc1N0cmluZ09yRGllKEZMQUdfZm9yY2VfZmllbGR0cmlhbHMpOwogICAvLyBJ
bml0RmllbGRUcmlhbHNGcm9tU3RyaW5nIHN0b3JlcyB0aGUgY2hhciosIHNvIHRoZSBjaGFyIGFy
cmF5IG11c3Qgb3V0bGl2ZQogICAvLyB0aGUgYXBwbGljYXRpb24uCkBAIC0xMTgsNyArMTE3LDcg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogCiAgIC8vIEluaXRpYWxpemUg
U1NMIHdoaWNoIGFyZSB1c2VkIGJ5IHNldmVyYWwgdGVzdHMuCiAgIHJ0Yzo6SW5pdGlhbGl6ZVNT
TCgpOwotICBydGM6OlNTTFN0cmVhbUFkYXB0ZXI6OmVuYWJsZV90aW1lX2NhbGxiYWNrX2Zvcl90
ZXN0aW5nKCk7CisgIHJ0Yzo6U1NMU3RyZWFtQWRhcHRlcjo6RW5hYmxlVGltZUNhbGxiYWNrRm9y
VGVzdGluZygpOwogCiAjaWYgZGVmaW5lZChXRUJSVENfSU9TKQogICBydGM6OnRlc3Q6OkluaXRU
ZXN0U3VpdGUoUlVOX0FMTF9URVNUUywgYXJnYywgYXJndiwgZmFsc2UpOwpAQCAtMTM4LDUgKzEz
NywxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgX0NydFNldFJl
cG9ydEhvb2syKF9DUlRfUlBUSE9PS19SRU1PVkUsIFRlc3RDcnRSZXBvcnRIYW5kbGVyKTsKICNl
bmRpZgogCisjaWYgZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgfHwgZGVmaW5lZChMRUFLX1NB
TklUSVpFUikgfHwgIFwKKyAgICBkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpIHx8IGRlZmluZWQo
VEhSRUFEX1NBTklUSVpFUikgfHwgXAorICAgIGRlZmluZWQoVU5ERUZJTkVEX1NBTklUSVpFUikK
KyAgLy8gV2Ugd2FudCB0aGUgdGVzdCBmbGFnZ2VkIGFzIGZhaWxlZCBvbmx5IGZvciBzYW5pdGl6
ZXIgZGVmZWN0cywKKyAgLy8gaW4gd2hpY2ggY2FzZSB0aGUgc2FuaXRpemVyIHdpbGwgb3ZlcnJp
ZGUgZXhpdCBjb2RlIHdpdGggNjYuCisgIHJldHVybiAwOworI2VuZGlmCisKICAgcmV0dXJuIHJl
czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3VuaXhmaWxlc3lzdGVtLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uY2MKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAyM2MzNGM4Yzk0M2Y4NzNkOGNiZmFmMTI1ZjVkNzFiODljODUz
MGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5peGZpbGVzeXN0
ZW0uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
MjAwNCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8K
LQotI2luY2x1ZGUgInJ0Y19iYXNlL3VuaXhmaWxlc3lzdGVtLmgiCi0KLSNpbmNsdWRlIDxlcnJu
by5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8
c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2lmIGRlZmluZWQoV0VCUlRDX01B
QykgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKLSNpbmNsdWRlIDxDb3JlU2VydmljZXMvQ29yZVNl
cnZpY2VzLmg+Ci0jaW5jbHVkZSA8SU9LaXQvSU9DRkJ1bmRsZS5oPgotI2luY2x1ZGUgPHN5cy9z
dGF0dmZzLmg+Ci0jaW5jbHVkZSAicnRjX2Jhc2UvbWFjdXRpbHMuaCIKLSNlbmRpZiAgLy8gV0VC
UlRDX01BQyAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQotCi0jaWYgZGVmaW5lZChXRUJSVENfUE9T
SVgpICYmICFkZWZpbmVkKFdFQlJUQ19NQUMpIHx8IGRlZmluZWQoV0VCUlRDX0lPUykKLSNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQotI2luY2x1ZGUg
PHN5cy9zdGF0ZnMuaD4KLSNlbGlmICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQotI2luY2x1
ZGUgPHN5cy9zdGF0dmZzLmg+Ci0jZW5kaWYgIC8vICAhZGVmaW5lZChfX25hdGl2ZV9jbGllbnRf
XykKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxwd2QuaD4KLSNpbmNsdWRlIDxzdGRp
by5oPgotI2VuZGlmICAvLyBXRUJSVENfUE9TSVggJiYgIVdFQlJUQ19NQUMgfHwgV0VCUlRDX0lP
UwotCi0jaWYgZGVmaW5lZChXRUJSVENfTElOVVgpICYmICFkZWZpbmVkKFdFQlJUQ19BTkRST0lE
KQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2VuZGlmCi0KLSNp
ZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCi0jaW5j
bHVkZSA8c3lzL3N5c2xpbWl0cy5oPgotI2VuZGlmCi0KLSNpbmNsdWRlICJydGNfYmFzZS9hcnJh
eXNpemUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9maWxldXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9wYXRodXRpbHMuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9zdHJlYW0uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgot
Ci1uYW1lc3BhY2UgcnRjIHsKLQotVW5peEZpbGVzeXN0ZW06OlVuaXhGaWxlc3lzdGVtKCkge30K
LQotVW5peEZpbGVzeXN0ZW06On5Vbml4RmlsZXN5c3RlbSgpIHt9Ci0KLWJvb2wgVW5peEZpbGVz
eXN0ZW06OkRlbGV0ZUZpbGUoY29uc3QgUGF0aG5hbWUmIGZpbGVuYW1lKSB7Ci0gIFJUQ19MT0co
TFNfSU5GTykgPDwgIkRlbGV0aW5nIGZpbGU6IiA8PCBmaWxlbmFtZS5wYXRobmFtZSgpOwotCi0g
IGlmICghSXNGaWxlKGZpbGVuYW1lKSkgewotICAgIFJUQ19EQ0hFQ0soSXNGaWxlKGZpbGVuYW1l
KSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHJldHVybiA6OnVubGluayhmaWxlbmFtZS5w
YXRobmFtZSgpLmNfc3RyKCkpID09IDA7Ci19Ci0KLWJvb2wgVW5peEZpbGVzeXN0ZW06Ok1vdmVG
aWxlKGNvbnN0IFBhdGhuYW1lJiBvbGRfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFBhdGhuYW1lJiBuZXdfcGF0aCkgewotICBpZiAoIUlzRmlsZShvbGRfcGF0aCkp
IHsKLSAgICBSVENfRENIRUNLKElzRmlsZShvbGRfcGF0aCkpOwotICAgIHJldHVybiBmYWxzZTsK
LSAgfQotICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICJNb3ZpbmcgIiA8PCBvbGRfcGF0aC5wYXRo
bmFtZSgpIDw8ICIgdG8gIgotICAgICAgICAgICAgICAgICAgICAgIDw8IG5ld19wYXRoLnBhdGhu
YW1lKCk7Ci0gIGlmIChyZW5hbWUob2xkX3BhdGgucGF0aG5hbWUoKS5jX3N0cigpLCBuZXdfcGF0
aC5wYXRobmFtZSgpLmNfc3RyKCkpICE9IDApIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVW5peEZpbGVzeXN0ZW06OklzRm9sZGVyKGNvbnN0IFBh
dGhuYW1lJiBwYXRoKSB7Ci0gIHN0cnVjdCBzdGF0IHN0OwotICBpZiAoc3RhdChwYXRoLnBhdGhu
YW1lKCkuY19zdHIoKSwgJnN0KSA8IDApCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gU19J
U0RJUihzdC5zdF9tb2RlKTsKLX0KLQotYm9vbCBVbml4RmlsZXN5c3RlbTo6SXNGaWxlKGNvbnN0
IFBhdGhuYW1lJiBwYXRobmFtZSkgewotICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgaW50IHJlcyA9IDo6
c3RhdChwYXRobmFtZS5wYXRobmFtZSgpLmNfc3RyKCksICZzdCk7Ci0gIC8vIFRyZWF0IHN5bWxp
bmtzLCBuYW1lZCBwaXBlcywgZXRjLiBhbGwgYXMgZmlsZXMuCi0gIHJldHVybiByZXMgPT0gMCAm
JiAhU19JU0RJUihzdC5zdF9tb2RlKTsKLX0KLQotYm9vbCBVbml4RmlsZXN5c3RlbTo6R2V0Rmls
ZVNpemUoY29uc3QgUGF0aG5hbWUmIHBhdGhuYW1lLCBzaXplX3QqIHNpemUpIHsKLSAgc3RydWN0
IHN0YXQgc3Q7Ci0gIGlmICg6OnN0YXQocGF0aG5hbWUucGF0aG5hbWUoKS5jX3N0cigpLCAmc3Qp
ICE9IDApCi0gICAgcmV0dXJuIGZhbHNlOwotICAqc2l6ZSA9IHN0LnN0X3NpemU7Ci0gIHJldHVy
biB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2UgcnRjCi0KLSNpZiBkZWZpbmVkKF9fbmF0aXZl
X2NsaWVudF9fKQotZXh0ZXJuICJDIiBpbnQgX19hdHRyaWJ1dGVfXygod2VhaykpCi1saW5rKGNv
bnN0IGNoYXIqIG9sZHBhdGgsIGNvbnN0IGNoYXIqIG5ld3BhdGgpIHsKLSAgZXJybm8gPSBFQUND
RVM7Ci0gIHJldHVybiAtMTsKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3VuaXhmaWxl
c3lzdGVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMWQ3YjNlYTE5MmUxNDlj
OTExMWEwZDk0YjllOGZkY2VlZGEyNzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAK
LS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0g
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgUlRDX0JBU0VfVU5JWEZJTEVTWVNURU1fSF8K
LSNkZWZpbmUgUlRDX0JBU0VfVU5JWEZJTEVTWVNURU1fSF8KLQotI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvZmlsZXV0aWxzLmgiCi0KLW5hbWVzcGFjZSBydGMg
ewotCi1jbGFzcyBVbml4RmlsZXN5c3RlbSA6IHB1YmxpYyBGaWxlc3lzdGVtSW50ZXJmYWNlIHsK
LSBwdWJsaWM6Ci0gIFVuaXhGaWxlc3lzdGVtKCk7Ci0gIH5Vbml4RmlsZXN5c3RlbSgpIG92ZXJy
aWRlOwotCi0gIC8vIFRoaXMgd2lsbCBhdHRlbXB0IHRvIGRlbGV0ZSB0aGUgZmlsZSBsb2NhdGVk
IGF0IGZpbGVuYW1lLgotICAvLyBJdCB3aWxsIGZhaWwgd2l0aCBWRVJJWSBpZiB5b3UgcGFzcyBp
dCBhIG5vbi1leGlzdGFudCBmaWxlLCBvciBhIGRpcmVjdG9yeS4KLSAgYm9vbCBEZWxldGVGaWxl
KGNvbnN0IFBhdGhuYW1lJiBmaWxlbmFtZSkgb3ZlcnJpZGU7Ci0KLSAgLy8gVGhpcyBtb3ZlcyBh
IGZpbGUgZnJvbSBvbGRfcGF0aCB0byBuZXdfcGF0aCwgd2hlcmUgImZpbGUiIGNhbiBiZSBhIHBs
YWluCi0gIC8vIGZpbGUgb3IgZGlyZWN0b3J5LCB3aGljaCB3aWxsIGJlIG1vdmVkIHJlY3Vyc2l2
ZWx5LgotICAvLyBSZXR1cm5zIHRydWUgaWYgZnVuY3Rpb24gc3VjY2VlZHMuCi0gIGJvb2wgTW92
ZUZpbGUoY29uc3QgUGF0aG5hbWUmIG9sZF9wYXRoLCBjb25zdCBQYXRobmFtZSYgbmV3X3BhdGgp
IG92ZXJyaWRlOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiBhIHBhdGhuYW1lIGlzIGEgZGlyZWN0
b3J5Ci0gIGJvb2wgSXNGb2xkZXIoY29uc3QgUGF0aG5hbWUmIHBhdGhuYW1lKSBvdmVycmlkZTsK
LQotICAvLyBSZXR1cm5zIHRydWUgb2YgcGF0aG5hbWUgcmVwcmVzZW50cyBhbiBleGlzdGluZyBm
aWxlCi0gIGJvb2wgSXNGaWxlKGNvbnN0IFBhdGhuYW1lJiBwYXRobmFtZSkgb3ZlcnJpZGU7Ci0K
LSAgYm9vbCBHZXRGaWxlU2l6ZShjb25zdCBQYXRobmFtZSYgcGF0aCwgc2l6ZV90KiBzaXplKSBv
dmVycmlkZTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBydGMKLQotI2VuZGlmICAvLyBSVENfQkFT
RV9VTklYRklMRVNZU1RFTV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldF91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxz
b2NrZXRfdW5pdHRlc3QuY2MKaW5kZXggZDJiZmY1NDY4ODM3YmQxNmQ5MzAzODMxYjU4NDM2ZmMz
N2FkNzU3Yi4uZDQ0ZjQ2YTY1ZTVjMTQ4M2Q1NWNjZGMxMDgyYzNmNTM1ZGZiOWZjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
dmlydHVhbHNvY2tldF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0X3VuaXR0ZXN0LmNjCkBAIC0x
MDQsNyArMTA0LDcgQEAgc3RydWN0IFJlY2VpdmVyIDogcHVibGljIE1lc3NhZ2VIYW5kbGVyLCBw
dWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgU29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovKSB7CiAgICAgQVNTRVJUX0VR
KHNvY2tldC5nZXQoKSwgcyk7CiAgICAgQVNTRVJUX0dFKHNpemUsIDRVKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvdmly
dHVhbHNvY2tldHNlcnZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuY2MKaW5kZXggYWU0MGQ3ODg4ZjU1
MWJmN2M1YWJjYjg4YmE0YTc3ZjY2YzQwYjc2YS4uYmZjZTBmNTQ1NDFlOWQxODE2YzZkMTMyYjY2
ZTM3Mjk2NDE3MDJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0
c2VydmVyLmNjCkBAIC01MjUsNyArNTI1LDYgQEAgVmlydHVhbFNvY2tldFNlcnZlcjo6VmlydHVh
bFNvY2tldFNlcnZlcigpIDogVmlydHVhbFNvY2tldFNlcnZlcihudWxscHRyKSB7fQogCiBWaXJ0
dWFsU29ja2V0U2VydmVyOjpWaXJ0dWFsU29ja2V0U2VydmVyKEZha2VDbG9jayogZmFrZV9jbG9j
aykKICAgICA6IGZha2VfY2xvY2tfKGZha2VfY2xvY2spLAotICAgICAgd2FrZXVwXygvKm1hbnVh
bF9yZXNldD0qL2ZhbHNlLCAvKmluaXRpYWxseV9zaWduYWxlZD0qL2ZhbHNlKSwKICAgICAgIG1z
Z19xdWV1ZV8obnVsbHB0ciksCiAgICAgICBzdG9wX29uX2lkbGVfKGZhbHNlKSwKICAgICAgIG5l
eHRfaXB2NF8oa0luaXRpYWxOZXh0SVB2NCksCkBAIC0xMDI3LDggKzEwMjYsOSBAQCB2b2lkIFZp
cnR1YWxTb2NrZXRTZXJ2ZXI6OlVwZGF0ZURlbGF5RGlzdHJpYnV0aW9uKCkgewogICB9CiB9CiAK
Kwogc3RhdGljIGRvdWJsZSBOb3JtYWwoZG91YmxlIHgsIGRvdWJsZSBtZWFuLCBkb3VibGUgc3Rk
ZGV2KSB7Ci0gIHN0YXRpYyBjb25zdCBkb3VibGUgUEkgPSA0ICogYXRhbigxLjApOworICBzdGF0
aWMgZG91YmxlIFBJID0gNCAqIGF0YW4oMS4wKTsKICAgZG91YmxlIGEgPSAoeCAtIG1lYW4pICog
KHggLSBtZWFuKSAvICgyICogc3RkZGV2ICogc3RkZGV2KTsKICAgcmV0dXJuIGV4cCgtYSkgLyAo
c3RkZGV2ICogc3FydCgyICogUEkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dlYWtfcHRyX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2Vha19w
dHJfdW5pdHRlc3QuY2MKaW5kZXggOTU0MTcxODM0ZTY3YjI5MDQ0ZTY3NDQ4YmI4OGVmNTI0OWIw
NzRmMi4uNjZmMmI0ZGY1YjE4ZmQ4ZjYyOTliNTgzMzRkNjE5NGMyNWM1NGI3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2Vh
a19wdHJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvd2Vha19wdHJfdW5pdHRlc3QuY2MKQEAgLTIwMiw3ICsyMDIsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVD4KIHN0ZDo6dW5pcXVlX3B0cjxUPiBOZXdPYmplY3RDcmVhdGVk
T25UYXNrUXVldWUoKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUPiBvYmo7CiAgIFRhc2tRdWV1ZSBx
dWV1ZSgiTmV3T2JqZWN0Q3JlYXRlZE9uVGFza1F1ZXVlIik7Ci0gIEV2ZW50IGV2ZW50KGZhbHNl
LCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBxdWV1ZS5Qb3N0VGFzayhbJmV2ZW50LCAmb2Jq
XSB7CiAgICAgb2JqLnJlc2V0KG5ldyBUKCkpOwogICAgIGV2ZW50LlNldCgpOwpAQCAtMjI5LDcg
KzIyOSw3IEBAIFRFU1QoV2Vha1B0clRlc3QsIFdlYWtQdHJJbml0aWF0ZUFuZFVzZU9uRGlmZmVy
ZW50VGhyZWFkcykgewogICAvLyBDcmVhdGUgd2VhayBwdHIgb24gbWFpbiB0aHJlYWQKICAgV2Vh
a1B0cjxUYXJnZXQ+IHdlYWtfcHRyID0gdGFyZ2V0LT5mYWN0b3J5LkdldFdlYWtQdHIoKTsKICAg
cnRjOjpUYXNrUXVldWUgcXVldWUoInF1ZXVlIik7Ci0gIHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwg
ZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIHF1ZXVlLlBvc3RUYXNrKFsmXSB7CiAgICAg
Ly8gRGVyZWZlcmVuY2UgYW5kIGludmFsaWRlIHdlYWtfcHRyIG9uIGFub3RoZXIgdGhyZWFkLgog
ICAgIEVYUEVDVF9FUSh3ZWFrX3B0ci5nZXQoKSwgdGFyZ2V0LmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dpbjMy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
d2luMzIuY2MKaW5kZXggZDgxZDY4NWYxNmMwZjI4YzBkY2QzZThhNzVlYzdjOWViZGE4ZTAxMC4u
ZTM0ODJlMzIzODQ0OGY2ZTVmMjYxNGU0NjU5OTU2YzhiMmE1ZDJjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2luMzIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
d2luMzIuY2MKQEAgLTcyLDkgKzcyLDkgQEAgY29uc3QgY2hhciogaW5ldF9udG9wX3Y0KGNvbnN0
IHZvaWQqIHNyYywgY2hhciogZHN0LCBzb2NrbGVuX3Qgc2l6ZSkgewogICB9CiAgIGNvbnN0IHN0
cnVjdCBpbl9hZGRyKiBhc19pbl9hZGRyID0KICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
c3RydWN0IGluX2FkZHIqPihzcmMpOwotICBydGM6OnNwcmludGZuKGRzdCwgc2l6ZSwgIiVkLiVk
LiVkLiVkIiwgYXNfaW5fYWRkci0+U191bi5TX3VuX2Iuc19iMSwKLSAgICAgICAgICAgICAgICBh
c19pbl9hZGRyLT5TX3VuLlNfdW5fYi5zX2IyLCBhc19pbl9hZGRyLT5TX3VuLlNfdW5fYi5zX2Iz
LAotICAgICAgICAgICAgICAgIGFzX2luX2FkZHItPlNfdW4uU191bl9iLnNfYjQpOworICBzbnBy
aW50Zihkc3QsIHNpemUsICIlZC4lZC4lZC4lZCIsIGFzX2luX2FkZHItPlNfdW4uU191bl9iLnNf
YjEsCisgICAgICAgICAgIGFzX2luX2FkZHItPlNfdW4uU191bl9iLnNfYjIsIGFzX2luX2FkZHIt
PlNfdW4uU191bl9iLnNfYjMsCisgICAgICAgICAgIGFzX2luX2FkZHItPlNfdW4uU191bl9iLnNf
YjQpOwogICByZXR1cm4gZHN0OwogfQogCkBAIC0xMjcsNyArMTI3LDcgQEAgY29uc3QgY2hhciog
aW5ldF9udG9wX3Y2KGNvbnN0IHZvaWQqIHNyYywgY2hhciogZHN0LCBzb2NrbGVuX3Qgc2l6ZSkg
ewogICAgICpjdXJzb3IrKyA9ICc6JzsKICAgICAqY3Vyc29yKysgPSAnOic7CiAgICAgaWYgKG1h
eHBvcyA9PSA0KSB7Ci0gICAgICBjdXJzb3IgKz0gcnRjOjpzcHJpbnRmbihjdXJzb3IsIElORVQ2
X0FERFJTVFJMRU4gLSAyLCAiZmZmZjoiKTsKKyAgICAgIGN1cnNvciArPSBzbnByaW50ZihjdXJz
b3IsIElORVQ2X0FERFJTVFJMRU4gLSAyLCAiZmZmZjoiKTsKICAgICB9CiAgICAgY29uc3Qgc3Ry
dWN0IGluX2FkZHIqIGFzX3Y0ID0KICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1
Y3QgaW5fYWRkcio+KCYoYXNfc2hvcnRzWzZdKSk7CkBAIC0xMzYsOCArMTM2LDggQEAgY29uc3Qg
Y2hhciogaW5ldF9udG9wX3Y2KGNvbnN0IHZvaWQqIHNyYywgY2hhciogZHN0LCBzb2NrbGVuX3Qg
c2l6ZSkgewogICB9IGVsc2UgewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVuX2FycmF5X3Np
emU7ICsraSkgewogICAgICAgaWYgKHJ1bnBvc1tpXSA9PSAtMSkgewotICAgICAgICBjdXJzb3Ig
Kz0gcnRjOjpzcHJpbnRmbihjdXJzb3IsIElORVQ2X0FERFJTVFJMRU4gLSAoY3Vyc29yIC0gZHN0
KSwgIiV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0d29ya1RvSG9zdDE2
KGFzX3Nob3J0c1tpXSkpOworICAgICAgICBjdXJzb3IgKz0gc25wcmludGYoY3Vyc29yLCBJTkVU
Nl9BRERSU1RSTEVOIC0gKGN1cnNvciAtIGRzdCksICIleCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXR3b3JrVG9Ib3N0MTYoYXNfc2hvcnRzW2ldKSk7CiAgICAgICAgIGlmIChpICE9
IDcgJiYgcnVucG9zW2kgKyAxXSAhPSAxKSB7CiAgICAgICAgICAgKmN1cnNvcisrID0gJzonOwog
ICAgICAgICB9CkBAIC0yMjQsOCArMjI0LDggQEAgaW50IGluZXRfcHRvbl92Nihjb25zdCBjaGFy
KiBzcmMsIHZvaWQqIGRzdCkgewogICAgICAgKihyZWFkY3Vyc29yICsgMikgIT0gMCkgewogICAg
IC8vIENoZWNrIGZvciBwZXJpb2RzLCB3aGljaCB3ZSdsbCB0YWtlIGFzIGEgc2lnbiBvZiB2NCBh
ZGRyZXNzZXMuCiAgICAgY29uc3QgY2hhciogYWRkcnN0YXJ0ID0gcmVhZGN1cnNvciArIDI7Ci0g
ICAgaWYgKHJ0Yzo6c3RyY2hyKGFkZHJzdGFydCwgIi4iKSkgewotICAgICAgY29uc3QgY2hhciog
Y29sb24gPSBydGM6OnN0cmNocihhZGRyc3RhcnQsICI6OiIpOworICAgIGlmIChzdHJjaHIoYWRk
cnN0YXJ0LCAnLicpKSB7CisgICAgICBjb25zdCBjaGFyKiBjb2xvbiA9IHN0cmNocihhZGRyc3Rh
cnQsICc6Jyk7CiAgICAgICBpZiAoY29sb24pIHsKICAgICAgICAgdWludDE2X3QgYV9zaG9ydDsK
ICAgICAgICAgaW50IGJ5dGVzcmVhZCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMmZpbGVzeXN0ZW0uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMmZp
bGVzeXN0ZW0uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MDBlNWU2MjliOGE2
ZmM1MDdhNjIyZmZhN2VkNWQ5MmM2Y2Q5MzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvd2luMzJmaWxlc3lzdGVtLmNjCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgInJ0Y19iYXNlL3dpbjMyZmlsZXN5
c3RlbS5oIgotCi0jaW5jbHVkZSA8c2hlbGxhcGkuaD4KLSNpbmNsdWRlIDxzaGxvYmouaD4KLSNp
bmNsdWRlIDx0Y2hhci5oPgotI2luY2x1ZGUgInJ0Y19iYXNlL3dpbjMyLmgiCi0KLSNpbmNsdWRl
IDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9maWxldXRpbHMuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9wYXRodXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgotCi0vLyBJbiBzZXZlcmFsIHBsYWNl
cyBpbiB0aGlzIGZpbGUsIHdlIHRlc3QgdGhlIGludGVncml0eSBsZXZlbCBvZiB0aGUgcHJvY2Vz
cwotLy8gYmVmb3JlIGNhbGxpbmcgR2V0TG9uZ1BhdGhOYW1lLiBXZSBkbyB0aGlzIGJlY2F1c2Ug
Y2FsbGluZyBHZXRMb25nUGF0aE5hbWUKLS8vIHdoZW4gcnVubmluZyB1bmRlciBwcm90ZWN0ZWQg
bW9kZSBJRSAoYSBsb3cgaW50ZWdyaXR5IHByb2Nlc3MpIGNhbiByZXN1bHQgaW4KLS8vIGEgdmly
dHVhbGl6ZWQgcGF0aCBiZWluZyByZXR1cm5lZCwgd2hpY2ggaXMgd3JvbmcgaWYgeW91IG9ubHkg
cGxhbiB0byByZWFkLgotLy8gVE9ETzogV2FpdGluZyB0byBoZWFyIGJhY2sgZnJvbSBJRSB0ZWFt
IG9uIHdoZXRoZXIgdGhpcyBpcyB0aGUKLS8vIGJlc3QgYXBwcm9hY2g7IElFSXNQcm90ZWN0ZWRN
b2RlUHJvY2VzcyBpcyBhbm90aGVyIHBvc3NpYmxlIHNvbHV0aW9uLgotCi1uYW1lc3BhY2UgcnRj
IHsKLQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06OkRlbGV0ZUZpbGUoY29uc3QgUGF0aG5hbWUmIGZp
bGVuYW1lKSB7Ci0gIFJUQ19MT0coTFNfSU5GTykgPDwgIkRlbGV0aW5nIGZpbGUgIiA8PCBmaWxl
bmFtZS5wYXRobmFtZSgpOwotICBpZiAoIUlzRmlsZShmaWxlbmFtZSkpIHsKLSAgICBSVENfRENI
RUNLKElzRmlsZShmaWxlbmFtZSkpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4g
OjpEZWxldGVGaWxlKFRvVXRmMTYoZmlsZW5hbWUucGF0aG5hbWUoKSkuY19zdHIoKSkgIT0gMDsK
LX0KLQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06Ok1vdmVGaWxlKGNvbnN0IFBhdGhuYW1lJiBvbGRf
cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXRobmFtZSYgbmV3
X3BhdGgpIHsKLSAgaWYgKCFJc0ZpbGUob2xkX3BhdGgpKSB7Ci0gICAgUlRDX0RDSEVDSyhJc0Zp
bGUob2xkX3BhdGgpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgUlRDX0xPRyhMU19JTkZP
KSA8PCAiTW92aW5nICIgPDwgb2xkX3BhdGgucGF0aG5hbWUoKSA8PCAiIHRvICIKLSAgICAgICAg
ICAgICAgICAgICA8PCBuZXdfcGF0aC5wYXRobmFtZSgpOwotICByZXR1cm4gOjpNb3ZlRmlsZShU
b1V0ZjE2KG9sZF9wYXRoLnBhdGhuYW1lKCkpLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAg
IFRvVXRmMTYobmV3X3BhdGgucGF0aG5hbWUoKSkuY19zdHIoKSkgIT0gMDsKLX0KLQotYm9vbCBX
aW4zMkZpbGVzeXN0ZW06OklzRm9sZGVyKGNvbnN0IFBhdGhuYW1lJiBwYXRoKSB7Ci0gIFdJTjMy
X0ZJTEVfQVRUUklCVVRFX0RBVEEgZGF0YSA9IHswfTsKLSAgaWYgKDAgPT0gOjpHZXRGaWxlQXR0
cmlidXRlc0V4KFRvVXRmMTYocGF0aC5wYXRobmFtZSgpKS5jX3N0cigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmZGF0YSkpCi0gICAg
cmV0dXJuIGZhbHNlOwotICByZXR1cm4gKGRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRU
UklCVVRFX0RJUkVDVE9SWSkgPT0KLSAgICAgICAgIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWTsK
LX0KLQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06OklzRmlsZShjb25zdCBQYXRobmFtZSYgcGF0aCkg
ewotICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIGRhdGEgPSB7MH07Ci0gIGlmICgwID09IDo6
R2V0RmlsZUF0dHJpYnV0ZXNFeChUb1V0ZjE2KHBhdGgucGF0aG5hbWUoKSkuY19zdHIoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmRh
dGEpKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIChkYXRhLmR3RmlsZUF0dHJpYnV0ZXMg
JiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpID09IDA7Ci19Ci0KLWJvb2wgV2luMzJGaWxlc3lz
dGVtOjpHZXRGaWxlU2l6ZShjb25zdCBQYXRobmFtZSYgcGF0aG5hbWUsIHNpemVfdCogc2l6ZSkg
ewotICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIGRhdGEgPSB7MH07Ci0gIGlmICg6OkdldEZp
bGVBdHRyaWJ1dGVzRXgoVG9VdGYxNihwYXRobmFtZS5wYXRobmFtZSgpKS5jX3N0cigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmRhdGEpID09
IDApCi0gICAgcmV0dXJuIGZhbHNlOwotICAqc2l6ZSA9IGRhdGEubkZpbGVTaXplTG93OwotICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2luMzJmaWxlc3lz
dGVtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS93aW4zMmZpbGVzeXN0ZW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI2NzQx
ZTY3Yjg3MDQ4ZTE4MWZjZjAxMTMyMDhhZjVmYWQ4NzNkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMmZpbGVzeXN0ZW0uaAorKysgL2Rldi9udWxsCkBAIC0x
LDQxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdlYlJUQyBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgUlRDX0JBU0VfV0lOMzJG
SUxFU1lTVEVNX0hfCi0jZGVmaW5lIFJUQ19CQVNFX1dJTjMyRklMRVNZU1RFTV9IXwotCi0jaW5j
bHVkZSAiZmlsZXV0aWxzLmgiCi0KLW5hbWVzcGFjZSBydGMgewotCi1jbGFzcyBXaW4zMkZpbGVz
eXN0ZW0gOiBwdWJsaWMgRmlsZXN5c3RlbUludGVyZmFjZSB7Ci0gcHVibGljOgotICAvLyBUaGlz
IHdpbGwgYXR0ZW1wdCB0byBkZWxldGUgdGhlIHBhdGggbG9jYXRlZCBhdCBmaWxlbmFtZS4KLSAg
Ly8gSWYgdGhlIHBhdGggcG9pbnRzIHRvIGEgZm9sZGVyLCBpdCB3aWxsIGZhaWwgd2l0aCBWRVJJ
RlkKLSAgYm9vbCBEZWxldGVGaWxlKGNvbnN0IFBhdGhuYW1lJiBmaWxlbmFtZSkgb3ZlcnJpZGU7
Ci0KLSAgLy8gVGhpcyBtb3ZlcyBhIGZpbGUgZnJvbSBvbGRfcGF0aCB0byBuZXdfcGF0aC4gSWYg
dGhlIG5ldyBwYXRoIGlzIG9uIGEKLSAgLy8gZGlmZmVyZW50IHZvbHVtZSB0aGFuIHRoZSBvbGQs
IGl0IHdpbGwgYXR0ZW1wdCB0byBjb3B5IGFuZCB0aGVuIGRlbGV0ZQotICAvLyB0aGUgZm9sZGVy
Ci0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsZSBpcyBzdWNjZXNzZnVsbHkgbW92ZWQKLSAg
Ym9vbCBNb3ZlRmlsZShjb25zdCBQYXRobmFtZSYgb2xkX3BhdGgsIGNvbnN0IFBhdGhuYW1lJiBu
ZXdfcGF0aCkgb3ZlcnJpZGU7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIGEgcGF0aG5hbWUgaXMg
YSBkaXJlY3RvcnkKLSAgYm9vbCBJc0ZvbGRlcihjb25zdCBQYXRobmFtZSYgcGF0aG5hbWUpIG92
ZXJyaWRlOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiBhIGZpbGUgZXhpc3RzIGF0IHBhdGgKLSAg
Ym9vbCBJc0ZpbGUoY29uc3QgUGF0aG5hbWUmIHBhdGgpIG92ZXJyaWRlOwotCi0gIGJvb2wgR2V0
RmlsZVNpemUoY29uc3QgUGF0aG5hbWUmIHBhdGgsIHNpemVfdCogc2l6ZSkgb3ZlcnJpZGU7Ci19
OwotCi19ICAvLyBuYW1lc3BhY2UgcnRjCi0KLSNlbmRpZiAgLy8gUlRDX0JBU0VfV0lOMzJGSUxF
U1lTVEVNX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS93aW4zMnNvY2tldHNlcnZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dpbjMyc29ja2V0c2VydmVyLmNjCmlu
ZGV4IGNhYjc1MWE2MzE3M2FiZmRjOTc5ZmVjYTJhMzgwNmNkNzYxZmY3MjMuLjIzMGYzZWQ0NmY5
MDU3ZThlZDY3ODhlZTYyODlmZjZlYWNhZTE4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dpbjMyc29ja2V0c2VydmVyLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3dpbjMyc29ja2V0c2VydmVyLmNjCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAicnRjX2Jh
c2UvYnl0ZW9yZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIiAgLy8g
Rm9yIFRpbWUsIFRpbWVTaW5jZQogI2luY2x1ZGUgInJ0Y19iYXNlL3dpbjMyd2luZG93LmgiCiAK
IG5hbWVzcGFjZSBydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvemVyb19tZW1vcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3plcm9fbWVtb3J5LmgKaW5kZXggY2I0
NjQ2YzFmZTRiMzU5ZjcxYWNiYTdjZDA4MDhmNDk0ZTQ2MzRjOS4uZjY5N2JjYmQ2YjgxYzc2MmIx
NTY3YmJjZTZjNTYxNWYyNWUzMmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvemVyb19tZW1vcnkuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS96ZXJvX21lbW9yeS5o
CkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFJUQ19CQVNFX1pFUk9fTUVNT1JZX0hfCiAjZGVm
aW5lIFJUQ19CQVNFX1pFUk9fTUVNT1JZX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMv
QlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
dG9vbHMvQlVJTEQuZ24KaW5kZXggMjUyYWVjNDU0N2Y0M2ExMmNkMWFlNTkwOTA4NDA0YzYxZDg2
ZjczMi4uNTIxNGJjM2JkMGYyNGZiZjk0MmRjYmQwYjRhOTJhZjdlMzA4MTY4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL0JV
SUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y190b29scy9CVUlMRC5nbgpAQCAtMjUsOSArMjUsNiBAQCBncm91cCgicnRjX3Rvb2xzIikgewog
ICAgICAgIjpwc25yX3NzaW1fYW5hbHl6ZXIiLAogICAgICAgIjpyZ2JhX3RvX2k0MjBfY29udmVy
dGVyIiwKICAgICBdCi0gICAgaWYgKHJ0Y19pbmNsdWRlX2ludGVybmFsX2F1ZGlvX2RldmljZSkg
ewotICAgICAgZGVwcyArPSBbICI6Zm9yY2VfbWljX3ZvbHVtZV9tYXgiIF0KLSAgICB9CiAgICAg
aWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAgICAgIGRlcHMgKz0gWyAiOmNoYXJ0X3Byb3Rv
IiBdCiAgICAgfQpAQCAtMzksOCArMzYsMTAgQEAgZ3JvdXAoInJ0Y190b29scyIpIHsKICAgICAg
ICI6dG9vbHNfdW5pdHRlc3RzIiwKICAgICBdCiAgICAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYp
IHsKKyAgICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgeworICAgICAgICBkZXBzICs9IFsg
IjpldmVudF9sb2dfdmlzdWFsaXplciIgXQorICAgICAgfQogICAgICAgZGVwcyArPSBbCi0gICAg
ICAgICI6ZXZlbnRfbG9nX3Zpc3VhbGl6ZXIiLAogICAgICAgICAiOnJ0cF9hbmFseXplciIsCiAg
ICAgICAgICI6dW5wYWNrX2FlY2R1bXAiLAogICAgICAgICAibmV0d29ya190ZXN0ZXIiLApAQCAt
ODksNiArODgsMTIgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlb19maWxlX3dyaXRlciIpIHsK
IAogcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlb19xdWFsaXR5X2FuYWx5c2lzIikgewogICBzb3Vy
Y2VzID0gWworICAgICJmcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJlcy5jYyIsCisg
ICAgImZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzLmgiLAorICAgICJmcmFtZV9h
bmFseXplci92aWRlb19jb2xvcl9hbGlnbmVyLmNjIiwKKyAgICAiZnJhbWVfYW5hbHl6ZXIvdmlk
ZW9fY29sb3JfYWxpZ25lci5oIiwKKyAgICAiZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlf
YWxpZ25lci5jYyIsCisgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5X2FsaWduZXIu
aCIsCiAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuY2MiLAogICAg
ICJmcmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lzLmgiLAogICAgICJmcmFtZV9h
bmFseXplci92aWRlb190ZW1wb3JhbF9hbGlnbmVyLmNjIiwKQEAgLTk2LDYgKzEwMSw4IEBAIHJ0
Y19zdGF0aWNfbGlicmFyeSgidmlkZW9fcXVhbGl0eV9hbmFseXNpcyIpIHsKICAgXQogICBkZXBz
ID0gWwogICAgICI6dmlkZW9fZmlsZV9yZWFkZXIiLAorICAgICIuLi9hcGk6YXJyYXlfdmlldyIs
CisgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRl
b19mcmFtZV9pNDIwIiwKICAgICAiLi4vY29tbW9uX3ZpZGVvIiwKICAgICAiLi4vcnRjX2Jhc2U6
Y2hlY2tzIiwKQEAgLTIxMSwyMCArMjE4LDYgQEAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtKSB7
CiAgICAgXQogICB9CiAKLSAgIyBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gYnVpbGQgdGhpcyB0
b29sIHdpdGhvdXQgdGhlIEFETSBlbmFibGVkLgotICBpZiAocnRjX2luY2x1ZGVfaW50ZXJuYWxf
YXVkaW9fZGV2aWNlKSB7Ci0gICAgcnRjX2V4ZWN1dGFibGUoImZvcmNlX21pY192b2x1bWVfbWF4
IikgewotICAgICAgc291cmNlcyA9IFsKLSAgICAgICAgImZvcmNlX21pY192b2x1bWVfbWF4L2Zv
cmNlX21pY192b2x1bWVfbWF4LmNjIiwKLSAgICAgIF0KLQotICAgICAgZGVwcyA9IFsKLSAgICAg
ICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlIiwKLSAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9f
ZGV2aWNlOmF1ZGlvX2RldmljZV9pbXBsIiwKLSAgICAgIF0KLSAgICB9Ci0gIH0KLQogICBpZiAo
cnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgIHByb3RvX2xpYnJhcnkoImNoYXJ0X3Byb3RvIikg
ewogICAgICAgc291cmNlcyA9IFsKQEAgLTI3MiwxMCArMjY1LDEzIEBAIGlmICghYnVpbGRfd2l0
aF9jaHJvbWl1bSkgewogCiAgICAgICAgICMgVE9ETyhrd2liZXJnKTogUmVtb3ZlIHRoaXMgZGVw
ZW5kZW5jeS4KICAgICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIs
CisgICAgICAgICIuLi9hcGkvdHJhbnNwb3J0Omdvb2dfY2MiLAogICAgICAgICAiLi4vbW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIiLAogICAgICAgICAiLi4vbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvZ29vZ19jYzpkZWxheV9iYXNlZF9id2UiLAogICAgICAgICAiLi4vbW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYzplc3RpbWF0b3JzIiwKKyAgICAgICAgIi4u
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cDp0cmFuc3BvcnRfZmVlZGJhY2siLAog
ICAgICAgICAiLi4vbW9kdWxlcy9wYWNpbmciLAorICAgICAgICAiLi4vbW9kdWxlcy9yZW1vdGVf
Yml0cmF0ZV9lc3RpbWF0b3IiLAogICAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcCIsCiAgICAg
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICAgICAgXQpAQCAt
Mjg0LDcgKzI4MCw3IEBAIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogfQogCiBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKLSAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKKyAgaWYgKHJ0
Y19lbmFibGVfcHJvdG9idWYgJiYgIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKICAgICBydGNfZXhl
Y3V0YWJsZSgiZXZlbnRfbG9nX3Zpc3VhbGl6ZXIiKSB7CiAgICAgICB0ZXN0b25seSA9IHRydWUK
ICAgICAgIHNvdXJjZXMgPSBbCkBAIC0zNDcsNyArMzQzLDEwIEBAIGlmIChydGNfaW5jbHVkZV90
ZXN0cykgewogICAgIHRlc3Rvbmx5ID0gdHJ1ZQogCiAgICAgc291cmNlcyA9IFsKKyAgICAgICJm
cmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJlc191bml0dGVzdC5jYyIsCiAgICAgICAi
ZnJhbWVfYW5hbHl6ZXIvcmVmZXJlbmNlX2xlc3NfdmlkZW9fYW5hbHlzaXNfdW5pdHRlc3QuY2Mi
LAorICAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXJfdW5pdHRlc3QuY2Mi
LAorICAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5X2FsaWduZXJfdW5pdHRlc3Qu
Y2MiLAogICAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXNfdW5pdHRl
c3QuY2MiLAogICAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVvX3RlbXBvcmFsX2FsaWduZXJfdW5p
dHRlc3QuY2MiLAogICAgICAgImZyYW1lX2VkaXRpbmcvZnJhbWVfZWRpdGluZ191bml0dGVzdC5j
YyIsCkBAIC0zNjQsOCArMzYzLDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAKICAgICBk
ZXBzID0gWwogICAgICAgIjpjb21tYW5kX2xpbmVfcGFyc2VyIiwKLSAgICAgICI6ZnJhbWVfZWRp
dGluZ19saWIiLAotICAgICAgIjpyZWZlcmVuY2VfbGVzc192aWRlb19hbmFseXNpc19saWIiLAog
ICAgICAgIjp2aWRlb19maWxlX3JlYWRlciIsCiAgICAgICAiOnZpZGVvX2ZpbGVfd3JpdGVyIiwK
ICAgICAgICI6dmlkZW9fcXVhbGl0eV9hbmFseXNpcyIsCkBAIC0zNzQsMTAgKzM3MSwxOSBAQCBp
ZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAg
ICAgIi4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi90ZXN0OnRlc3RfbWFpbiIsCisgICAg
ICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCiAgICAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAgICIvL3RoaXJk
X3BhcnR5L2xpYnl1diIsCiAgICAgXQogCisgICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtKSB7
CisgICAgICBkZXBzICs9IFsKKyAgICAgICAgIjpmcmFtZV9lZGl0aW5nX2xpYiIsCisgICAgICAg
ICI6cmVmZXJlbmNlX2xlc3NfdmlkZW9fYW5hbHlzaXNfbGliIiwKKyAgICAgIF0KKyAgICB9CisK
ICAgICBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgICAgZGVwcyArPSBbICJuZXR3b3Jr
X3Rlc3RlcjpuZXR3b3JrX3Rlc3Rlcl91bml0dGVzdHMiIF0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvREVQUyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ERVBT
CmluZGV4IGQ5YjE2MmNkMTVmYjJjNzA0NTk3YmFhZDFhYTIwZjRmZDNiODkyY2UuLjQwMTVhZTI2
NWFjOGU0OTIwODc3NGU3Yjk2YmIxZmFiYWI4NGQ1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ERVBTCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ERVBTCkBAIC03
LDYgKzcsNyBAQCBpbmNsdWRlX3J1bGVzID0gWwogICAiK21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Rvb2xzIiwKICAgIittb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmciLAogICAiK21vZHVsZXMv
Yml0cmF0ZV9jb250cm9sbGVyIiwKKyAgIittb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRv
ciIsCiAgICIrbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIiLAogICAiK21vZHVsZXMvcGFj
aW5nIiwKICAgIittb2R1bGVzL3J0cF9ydGNwIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9PV05FUlMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvT1dORVJTCmluZGV4IGMx
Yjg3YzliZGNhMzdlMDg4MWQwM2JjNjgxYjMwZTdiZTc4NjcwYjguLjc3Mzg1ZmNkMzE2MTc3YTdj
MWM1NjU4NGUxYjE0OTIzMDVhZGFlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9PV05FUlMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL09XTkVSUwpAQCAtMywzICsz
LDYgQEAgcGVyLWZpbGUgQlVJTEQuZ249KgogcGhvZ2x1bmRAd2VicnRjLm9yZwogb3ByeXBpbkB3
ZWJydGMub3JnCiBtYm9uYWRlaUB3ZWJydGMub3JnCisKKyMgRm9yIHZpZGVvIGFuYWx5c2lzIHRv
b2xzCittYWdqZWRAd2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2FnYy9hY3Rpdml0eV9tZXRyaWMuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYWdjL2Fj
dGl2aXR5X21ldHJpYy5jYwppbmRleCBiNGVkM2ZhY2IzNTliNWE4MWJhODNiM2Q0ZTUyZmNhNzUz
NGNkM2ZhLi45YjIyNzZmMTZmMWY1ZTI3NTM2Zjk1OGQ5ZDllOTcyZjg1OTllZTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMv
YWdjL2FjdGl2aXR5X21ldHJpYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYWdjL2FjdGl2aXR5X21ldHJpYy5jYwpAQCAtMzAsMzIg
KzMwLDM0IEBACiBzdGF0aWMgY29uc3QgaW50IGtBZ2NBbmFsV2luZG93U2FtcGxlcyA9IDEwMDsK
IHN0YXRpYyBjb25zdCBmbG9hdCBrRGVmYXVsdEFjdGl2aXR5VGhyZXNob2xkID0gMC4zZjsKIAot
REVGSU5FX2Jvb2woc3RhbmRhbG9uZV92YWQsIHRydWUsICJlbmFibGUgc3RhbmQtYWxvbmUgVkFE
Iik7Ci1ERUZJTkVfc3RyaW5nKHRydWVfdmFkLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAg
ICAgICAgIm5hbWUgb2YgYSBmaWxlIGNvbnRhaW5pbmcgdHJ1ZSBWQUQgaW4gJ2ludCciCi0gICAg
ICAgICAgICAgICIgZm9ybWF0Iik7Ci1ERUZJTkVfc3RyaW5nKHZpZGVvX3ZhZCwKLSAgICAgICAg
ICAgICAgIiIsCi0gICAgICAgICAgICAgICJuYW1lIG9mIGEgZmlsZSBjb250YWluaW5nIHZpZGVv
IFZBRCAoYWN0aXZpdHkiCi0gICAgICAgICAgICAgICIgcHJvYmFiaWxpdGllcykgaW4gZG91Ymxl
IGZvcm1hdC4gT25lIGFjdGl2aXR5IHBlciAxMG1zIGlzIgotICAgICAgICAgICAgICAiIHJlcXVp
cmVkLiBJZiBubyBmaWxlIGlzIGdpdmVuIHRoZSB2aWRlbyBpbmZvcm1hdGlvbiBpcyBub3QiCi0g
ICAgICAgICAgICAgICIgaW5jb3Jwb3JhdGVkLiBOZWdhdGl2ZSBhY3Rpdml0eSBpcyBpbnRlcnBy
ZXRlZCBhcyB2aWRlbyBpcyIKLSAgICAgICAgICAgICAgIiBub3QgYWRhcHRlZCBhbmQgdGhlIHN0
YXRpc3RpY3MgYXJlIG5vdCBjb21wdXRlZCBkdXJpbmciCi0gICAgICAgICAgICAgICIgdGhlIGxl
YXJuaW5nIHBoYXNlLiBOb3RlIHRoYXQgdGhlIG5lZ2F0aXZlIHZpZGVvIGFjdGl2aXRpZXMiCi0g
ICAgICAgICAgICAgICIgYXJlIE9OTFkgYWxsb3dlZCBhdCB0aGUgYmVnaW5uaW5nLiIpOwotREVG
SU5FX3N0cmluZyhyZXN1bHQsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAibmFt
ZSBvZiBhIGZpbGUgdG8gd3JpdGUgdGhlIHJlc3VsdHMuIFRoZSByZXN1bHRzIgotICAgICAgICAg
ICAgICAiIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4gVGhpcyBpcyBv
cHRpb25hbC4iKTsKLURFRklORV9zdHJpbmcoYXVkaW9fY29udGVudCwKLSAgICAgICAgICAgICAg
IiIsCi0gICAgICAgICAgICAgICJuYW1lIG9mIGEgZmlsZSB3aGVyZSBhdWRpbyBjb250ZW50IGlz
IHdyaXR0ZW4iCi0gICAgICAgICAgICAgICIgdG8sIGluIGRvdWJsZSBmb3JtYXQuIik7Ci1ERUZJ
TkVfZmxvYXQoYWN0aXZpdHlfdGhyZXNob2xkLAotICAgICAgICAgICAgIGtEZWZhdWx0QWN0aXZp
dHlUaHJlc2hvbGQsCi0gICAgICAgICAgICAgIkFjdGl2aXR5IHRocmVzaG9sZCIpOwotREVGSU5F
X2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5F
X2Jvb2woc3RhbmRhbG9uZV92YWQsIHRydWUsICJlbmFibGUgc3RhbmQtYWxvbmUgVkFEIik7CitX
RUJSVENfREVGSU5FX3N0cmluZyh0cnVlX3ZhZCwKKyAgICAgICAgICAgICAgICAgICAgICIiLAor
ICAgICAgICAgICAgICAgICAgICAgIm5hbWUgb2YgYSBmaWxlIGNvbnRhaW5pbmcgdHJ1ZSBWQUQg
aW4gJ2ludCciCisgICAgICAgICAgICAgICAgICAgICAiIGZvcm1hdCIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcoCisgICAgdmlkZW9fdmFkLAorICAgICIiLAorICAgICJuYW1lIG9mIGEgZmlsZSBj
b250YWluaW5nIHZpZGVvIFZBRCAoYWN0aXZpdHkiCisgICAgIiBwcm9iYWJpbGl0aWVzKSBpbiBk
b3VibGUgZm9ybWF0LiBPbmUgYWN0aXZpdHkgcGVyIDEwbXMgaXMiCisgICAgIiByZXF1aXJlZC4g
SWYgbm8gZmlsZSBpcyBnaXZlbiB0aGUgdmlkZW8gaW5mb3JtYXRpb24gaXMgbm90IgorICAgICIg
aW5jb3Jwb3JhdGVkLiBOZWdhdGl2ZSBhY3Rpdml0eSBpcyBpbnRlcnByZXRlZCBhcyB2aWRlbyBp
cyIKKyAgICAiIG5vdCBhZGFwdGVkIGFuZCB0aGUgc3RhdGlzdGljcyBhcmUgbm90IGNvbXB1dGVk
IGR1cmluZyIKKyAgICAiIHRoZSBsZWFybmluZyBwaGFzZS4gTm90ZSB0aGF0IHRoZSBuZWdhdGl2
ZSB2aWRlbyBhY3Rpdml0aWVzIgorICAgICIgYXJlIE9OTFkgYWxsb3dlZCBhdCB0aGUgYmVnaW5u
aW5nLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgcmVzdWx0LAorICAgICIiLAorICAg
ICJuYW1lIG9mIGEgZmlsZSB0byB3cml0ZSB0aGUgcmVzdWx0cy4gVGhlIHJlc3VsdHMiCisgICAg
IiB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuIFRoaXMgaXMgb3B0aW9u
YWwuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhhdWRpb19jb250ZW50LAorICAgICAgICAgICAg
ICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAibmFtZSBvZiBhIGZpbGUgd2hlcmUg
YXVkaW8gY29udGVudCBpcyB3cml0dGVuIgorICAgICAgICAgICAgICAgICAgICAgIiB0bywgaW4g
ZG91YmxlIGZvcm1hdC4iKTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoYWN0aXZpdHlfdGhyZXNob2xk
LAorICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdEFjdGl2aXR5VGhyZXNob2xkLAorICAgICAg
ICAgICAgICAgICAgICAiQWN0aXZpdHkgdGhyZXNob2xkIik7CitXRUJSVENfREVGSU5FX2Jvb2wo
aGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9ERVBTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvREVQUwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZDAzMjVhNjVhYTFlMzQ0OTkwMTIwY2YyMmYyZDM0YTIzODA4
ZTIwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90
b29scy9ERVBTCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotIyBUaGlzIGlzIHRyaW1t
ZWQgZG93biB2ZXJzaW9uIG9mIHRoZSBtYWluIHRvb2xzIERFUFMgZmlsZSB3aGljaCBpcyB0byBi
ZSB1c2VkCi0jIGluIENocm9taXVtcyBQeUF1dG8gV2ViUlRDIHZpZGVvIHF1YWxpdHkgbWVhc3Vy
ZW1lbnQgdGVzdC4gV2Ugd2lsbCBvbmx5Ci0jIG5lZWQgdGhlIFp4aW5nIGRlcGVuZGVuY2llcyBh
cyB3ZSBvbmx5IHVzZSB0aGUgYmFyY29kZSB0b29scyBpbiB0aGlzIHRlc3QuCi0KLWRlcHMgPSB7
Ci0gICMgVXNlZCBieSBiYXJjb2RlX3Rvb2xzCi0gICJiYXJjb2RlX3Rvb2xzL3RoaXJkX3BhcnR5
L3p4aW5nL2NvcmUiOgotICAgICJodHRwOi8venhpbmcuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5r
L2NvcmVAMjM0OSIsCi0KLSAgIyBVc2VkIGJ5IGJhcmNvZGVfdG9vbHMKLSAgImJhcmNvZGVfdG9v
bHMvdGhpcmRfcGFydHkvenhpbmcvamF2YXNlIjoKLSAgICAiaHR0cDovL3p4aW5nLmdvb2dsZWNv
ZGUuY29tL3N2bi90cnVuay9qYXZhc2VAMjM0OSIsCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9S
RUFETUUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9v
bHMvYmFyY29kZV90b29scy9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEy
M2U3OTgwNjRkZWYyMmM5OWQ2NjgzODNmYmQ4ZGRjY2M0MzU3NjguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvUkVBRE1FCisrKyAvZGV2L251
bGwKQEAgLTEsMzQgKzAsMCBAQAotVGhpcyBmaWxlIGV4cGxhaW5zIGhvdyB0byBnZXQgdGhlIGRl
cGVuZGVuY2llcyBuZWVkZWQgZm9yIHRoZSBiYXJjb2RlIHRvb2xzLgotCi1iYXJjb2RlX2VuY29k
ZXIucHkKLT09PT09PT09PT09PT09PT09PQotVGhpcyBzY3JpcHQgZGVwZW5kcyBvbjoKLSogWnhp
bmcgKEphdmEgdmVyc2lvbikKLSogQW50IChtdXN0IGJlIGluc3RhbGxlZCBtYW51YWxseSkKLSog
SmF2YQotCi1UbyBhdXRvbWF0aWNhbGx5IGRvd25sb2FkIFp4aW5nIGZvciB0aGUgZW5jb2RlciBz
Y3JpcHQsIGNoZWNrb3V0IHRoaXMgZGlyZWN0b3J5Ci1hcyBhIHNlcGFyYXRlIGdjbGllbnQgc29s
dXRpb24sIGxpa2UgdGhpczoKLWdjbGllbnQgY29uZmlnIGh0dHA6Ly93ZWJydGMuZ29vZ2xlY29k
ZS5jb20vc3ZuL3RydW5rL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scwotZ2NsaWVudCBz
eW5jCi1UaGVuIHRoZSBaeGluZyBKYXZhIHNvdXJjZSBjb2RlIHdpbGwgYmUgcHV0IGluIHRoaXJk
X3BhcnR5L3p4aW5nLgotCi1JbiBvcmRlciB0byBydW4gYmFyY29kZV9lbmNvZGVyLnB5IHlvdSB0
aGVuIG5lZWQgdG8gYnVpbGQ6Ci0qIHp4aW5nL2NvcmUvY29yZS5qYXIKLSogenhpbmcvamF2YXNl
L2phdmFzZS5qYXIKLVRoZXNlIGFyZSBjb21waWxlZCB1c2luZyBBbnQgYnkgcnVubmluZyBidWls
ZF96eGluZy5weToKLXB5dGhvbiBidWlsZF96eGluZy5weQotCi1Gb3IgbW9yZSBpbmZvIGFib3V0
IFp4aW5nLCBzZWUgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC96eGluZy8KLQotCi1iYXJjb2Rl
X2RlY29kZXIucHkKLT09PT09PT09PT09PT09PT09PQotVGhpcyBzY3JpcHQgZGVwZW5kcyBvbjoK
LSogWnhpbmcgKEMrKyB2ZXJzaW9uKS4gWW91IG5lZWQgdG8gY2hlY2tvdXQgZnJvbSBTdWJ2ZXJz
aW9uIGFuZCBidWlsZCB0aGUgbGlicwotICBhbmQgenhpbmcgU0NvbnMgdGFyZ2V0cy4gU1ZOIFVS
TDogaHR0cDovL3p4aW5nLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHAKLSogRkZNUEVHIGZt
cGVnIDAuMTEuMQotCi1UaGVzZSBkZXBlbmRlbmNpZXMgbXVzdCBiZSBwcmVjb21waWxlZCBzZXBh
cmF0ZWx5IGJlZm9yZSBydW5uaW5nIHRoZSBzY3JpcHQuCi1NYWtlIHN1cmUgdG8gYWRkIEZGTVBF
RyB0byB0aGUgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgcHJvdmlkZSB0aGUgcGF0aAot
dG8gdGhlIHp4aW5nIGV4ZWN1dGFibGUgdXNpbmcgdGhlIG1hbmRhdG9yeSBjb21tYW5kIGxpbmUg
ZmxhZyB0byB0aGUgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvYmFyY29kZV9kZWNvZGVy
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xz
L2JhcmNvZGVfdG9vbHMvYmFyY29kZV9kZWNvZGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwNzhlNDdmMWJhYzcyNDMwNzkzOWUzOGVmODQ2ODc4ZTBlYjE0YmNlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL2JhcmNvZGVf
ZGVjb2Rlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0jIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotIyB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0j
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCi0KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICMgTWFrZSBzdXJlIHdlIGFsd2F5cyBjYW4gaW1w
b3J0IGhlbHBlcl9mdW5jdGlvbnMuCi0gIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pKQotCi1pbXBvcnQgaGVscGVyX2Z1bmN0aW9ucwotCi0jIENocm9tZSBicm93c2Vy
dGVzdHMgd2lsbCB0aHJvdyBhd2F5IHN0ZGVycjsgYXZvaWQgdGhhdCBvdXRwdXQgZ2V0cyBsb3N0
Lgotc3lzLnN0ZGVyciA9IHN5cy5zdGRvdXQKLQotCi1kZWYgQ29udmVydFl1dlRvUG5nRmlsZXMo
eXV2X2ZpbGVfbmFtZSwgeXV2X2ZyYW1lX3dpZHRoLCB5dXZfZnJhbWVfaGVpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dHB1dF9kaXJlY3RvcnksIGZmbXBlZ19wYXRoKToKLSAgIiIi
Q29udmVydHMgYSBZVVYgdmlkZW8gZmlsZSBpbnRvIFBORyBmcmFtZXMuCi0KLSAgVGhlIGZ1bmN0
aW9uIHVzZXMgZmZtcGVnIHRvIGNvbnZlcnQgdGhlIFlVViBmaWxlLiBUaGUgb3V0cHV0IG9mIGZm
bXBlZyBpcyBpbgotICB0aGUgZm9ybSBmcmFtZV94eHh4LnBuZywgd2hlcmUgeHh4eCBpcyB0aGUg
ZnJhbWUgbnVtYmVyLCBzdGFydGluZyBmcm9tIDAwMDEuCi0KLSAgQXJnczoKLSAgICB5dXZfZmls
ZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9mIHRoZSBZVVYgZmlsZS4KLSAgICB5dXZfZnJhbWVf
d2lkdGgoaW50KTogVGhlIHdpZHRoIG9mIG9uZSBZVVYgZnJhbWUuCi0gICAgeXV2X2ZyYW1lX2hl
aWdodChpbnQpOiBUaGUgaGVpZ2h0IG9mIG9uZSBZVVYgZnJhbWUuCi0gICAgb3V0cHV0X2RpcmVj
dG9yeShzdHJpbmcpOiBUaGUgb3V0cHV0IGRpcmVjdG9yeSB3aGVyZSB0aGUgUE5HIGZyYW1lcyB3
aWxsIGJlCi0gICAgICBzdG9yZWQuCi0gICAgZmZtcGVnX3BhdGgoc3RyaW5nKTogVGhlIHBhdGgg
dG8gdGhlIGZmbXBlZyBleGVjdXRhYmxlLiBJZiBOb25lLCB0aGUgUEFUSAotICAgICAgd2lsbCBi
ZSBzZWFyY2hlZCBmb3IgaXQuCi0KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1ZSBpZiB0aGUg
Y29udmVyc2lvbiB3YXMgT0suCi0gICIiIgotICBzaXplX3N0cmluZyA9IHN0cih5dXZfZnJhbWVf
d2lkdGgpICsgJ3gnICsgc3RyKHl1dl9mcmFtZV9oZWlnaHQpCi0gIG91dHB1dF9maWxlc19wYXR0
ZXJuID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXJlY3RvcnksICdmcmFtZV8lMDRkLnBuZycpCi0g
IGlmIG5vdCBmZm1wZWdfcGF0aDoKLSAgICBmZm1wZWdfcGF0aCA9ICdmZm1wZWcuZXhlJyBpZiBz
eXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBlbHNlICdmZm1wZWcnCi0gIGlmIHl1dl9maWxlX25hbWUu
ZW5kc3dpdGgoJy55dXYnKToKLSAgICBjb21tYW5kID0gW2ZmbXBlZ19wYXRoLCAnLXMnLCAnJXMn
ICUgc2l6ZV9zdHJpbmcsICctaScsICclcycKLSAgICAgICAgICAgICAgICUgeXV2X2ZpbGVfbmFt
ZSwgJy1mJywgJ2ltYWdlMicsICctdmNvZGVjJywgJ3BuZycsCi0gICAgICAgICAgICAgICAnJXMn
ICUgb3V0cHV0X2ZpbGVzX3BhdHRlcm5dCi0gIGVsc2U6Ci0gICAgY29tbWFuZCA9IFtmZm1wZWdf
cGF0aCwgJy1pJywgJyVzJyAlIHl1dl9maWxlX25hbWUsICctZicsICdpbWFnZTInLAotICAgICAg
ICAgICAgICAgJy12Y29kZWMnLCAncG5nJywgJyVzJyAlIG91dHB1dF9maWxlc19wYXR0ZXJuXQot
ICB0cnk6Ci0gICAgcHJpbnQgJ0NvbnZlcnRpbmcgWVVWIGZpbGUgdG8gUE5HIGltYWdlcyAobWF5
IHRha2UgYSB3aGlsZSkuLi4nCi0gICAgcHJpbnQgJyAnLmpvaW4oY29tbWFuZCkKLSAgICBoZWxw
ZXJfZnVuY3Rpb25zLlJ1blNoZWxsQ29tbWFuZCgKLSAgICAgICAgY29tbWFuZCwgZmFpbF9tc2c9
J0Vycm9yIGR1cmluZyBZVVYgdG8gUE5HIGNvbnZlcnNpb24nKQotICBleGNlcHQgaGVscGVyX2Z1
bmN0aW9ucy5IZWxwZXJFcnJvciwgZXJyOgotICAgIHByaW50ICdFcnJvciBleGVjdXRpbmcgY29t
bWFuZDogJXMuIEVycm9yOiAlcycgJSAoY29tbWFuZCwgZXJyKQotICAgIHJldHVybiBGYWxzZQot
ICBleGNlcHQgT1NFcnJvcjoKLSAgICBwcmludCAnRGlkIG5vdCBmaW5kICVzLiBIYXZlIHlvdSBp
bnN0YWxsZWQgaXQ/JyAlIGZmbXBlZ19wYXRoCi0gICAgcmV0dXJuIEZhbHNlCi0gIHJldHVybiBU
cnVlCi0KLQotZGVmIERlY29kZUZyYW1lcyhpbnB1dF9kaXJlY3RvcnksIHp4aW5nX3BhdGgpOgot
ICAiIiJEZWNvZGVzIHRoZSBiYXJjb2RlcyBvdmVybGFpZCBpbiBlYWNoIGZyYW1lLgotCi0gIFRo
ZSBmdW5jdGlvbiB1c2VzIHRoZSBaeGluZyBjb21tYW5kLWxpbmUgdG9vbCBmcm9tIHRoZSBaeGlu
ZyBDKysgZGlzdHJpYnV0aW9uCi0gIHRvIGRlY29kZSB0aGUgYmFyY29kZSBpbiBldmVyeSBQTkcg
ZnJhbWUgZnJvbSB0aGUgaW5wdXQgZGlyZWN0b3J5LiBUaGUgZnJhbWVzCi0gIHNob3VsZCBiZSBu
YW1lZCBmcmFtZV94eHh4LnBuZywgd2hlcmUgeHh4eCBpcyB0aGUgZnJhbWUgbnVtYmVyLiBUaGUg
ZnJhbWUKLSAgbnVtYmVycyBzaG91bGQgYmUgY29uc2VjdXRpdmUgYW5kIHNob3VsZCBzdGFydCBm
cm9tIDAwMDEuCi0gIFRoZSBkZWNvZGluZyByZXN1bHRzIGluIGEgZnJhbWVfeHh4eC50eHQgZmls
ZSBmb3IgZXZlcnkgc3VjY2Vzc2Z1bGx5IGRlY29kZWQKLSAgYmFyY29kZS4gVGhpcyBmaWxlIGNv
bnRhaW5zIHRoZSBkZWNvZGVkIGJhcmNvZGUgYXMgMTItZGlnaXQgc3RyaW5nIChVUEMtQQotICBm
b3JtYXQ6IDExIGRpZ2l0cyBjb250ZW50ICsgb25lIGNoZWNrIGRpZ2l0KS4KLQotICBBcmdzOgot
ICAgIGlucHV0X2RpcmVjdG9yeShzdHJpbmcpOiBUaGUgaW5wdXQgZGlyZWN0b3J5IGZyb20gd2hl
cmUgdGhlIFBORyBmcmFtZXMgYXJlCi0gICAgICByZWFkLgotICAgIHp4aW5nX3BhdGgoc3RyaW5n
KTogVGhlIHBhdGggdG8gdGhlIHp4aW5nIGJpbmFyeS4gSWYgc3BlY2lmaWVkIGFzIE5vbmUsCi0g
ICAgICB0aGUgUEFUSCB3aWxsIGJlIHNlYXJjaGVkIGZvciBpdC4KLSAgUmV0dXJuOgotICAgIChi
b29sKTogVHJ1ZSBpZiB0aGUgZGVjb2Rpbmcgc3VjY2VlZGVkLgotICAiIiIKLSAgaWYgbm90IHp4
aW5nX3BhdGg6Ci0gICAgenhpbmdfcGF0aCA9ICd6eGluZy5leGUnIGlmIHN5cy5wbGF0Zm9ybSA9
PSAnd2luMzInIGVsc2UgJ3p4aW5nJwotICBwcmludCAnRGVjb2RpbmcgYmFyY29kZXMgZnJvbSBQ
TkcgZmlsZXMgd2l0aCAlcy4uLicgJSB6eGluZ19wYXRoCi0gIHJldHVybiBoZWxwZXJfZnVuY3Rp
b25zLlBlcmZvcm1BY3Rpb25PbkFsbEZpbGVzKAotICAgICAgZGlyZWN0b3J5PWlucHV0X2RpcmVj
dG9yeSwgZmlsZV9wYXR0ZXJuPSdmcmFtZV8nLAotICAgICAgZmlsZV9leHRlbnNpb249J3BuZycs
IHN0YXJ0X251bWJlcj0xLCBhY3Rpb249X0RlY29kZUJhcmNvZGVJbkZpbGUsCi0gICAgICBjb21t
YW5kX2xpbmVfZGVjb2Rlcj16eGluZ19wYXRoKQotCi0KLWRlZiBfRGVjb2RlQmFyY29kZUluRmls
ZShmaWxlX25hbWUsIGNvbW1hbmRfbGluZV9kZWNvZGVyKToKLSAgIiIiRGVjb2RlcyB0aGUgYmFy
Y29kZSBpbiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgYSBQTkcgZmlsZS4KLQotICBBcmdzOgot
ICAgIGZpbGVfbmFtZShzdHJpbmcpOiBGaWxlIG5hbWUgb2YgdGhlIFBORyBmaWxlLgotICAgIGNv
bW1hbmRfbGluZV9kZWNvZGVyKHN0cmluZyk6IFRoZSBaWGluZyBjb21tYW5kLWxpbmUgZGVjb2Rp
bmcgdG9vbC4KLQotICBSZXR1cm46Ci0gICAgKGJvb2wpOiBUcnVlIHVwb24gc3VjY2VzcywgRmFs
c2Ugb3RoZXJ3aXNlLgotICAiIiIKLSAgY29tbWFuZCA9IFtjb21tYW5kX2xpbmVfZGVjb2Rlciwg
Jy0tdHJ5LWhhcmRlcicsICctLWR1bXAtcmF3JywgZmlsZV9uYW1lXQotICB0cnk6Ci0gICAgb3V0
ID0gaGVscGVyX2Z1bmN0aW9ucy5SdW5TaGVsbENvbW1hbmQoCi0gICAgICAgIGNvbW1hbmQsIGZh
aWxfbXNnPSdFcnJvciBkdXJpbmcgZGVjb2Rpbmcgb2YgJXMnICUgZmlsZV9uYW1lKQotICAgIHRl
eHRfZmlsZSA9IG9wZW4oJyVzLnR4dCcgJSBmaWxlX25hbWVbOi00XSwgJ3cnKQotICAgIHRleHRf
ZmlsZS53cml0ZShvdXQpCi0gICAgdGV4dF9maWxlLmNsb3NlKCkKLSAgZXhjZXB0IGhlbHBlcl9m
dW5jdGlvbnMuSGVscGVyRXJyb3IsIGVycjoKLSAgICBwcmludCAnQmFyY29kZSBpbiAlcyBjYW5u
b3QgYmUgZGVjb2RlZC4nICUgZmlsZV9uYW1lCi0gICAgcHJpbnQgZXJyCi0gICAgcmV0dXJuIEZh
bHNlCi0gIGV4Y2VwdCBPU0Vycm9yOgotICAgIHByaW50ICdEaWQgbm90IGZpbmQgJXMuIEhhdmUg
eW91IGluc3RhbGxlZCBpdD8nICUgY29tbWFuZF9saW5lX2RlY29kZXIKLSAgICByZXR1cm4gRmFs
c2UKLSAgcmV0dXJuIFRydWUKLQotCi1kZWYgX0dlbmVyYXRlU3RhdHNGaWxlKHN0YXRzX2ZpbGVf
bmFtZSwgaW5wdXRfZGlyZWN0b3J5PScuJyk6Ci0gICIiIkdlbmVyYXRlIHN0YXRpc3RpY3MgZmls
ZS4KLQotICBUaGUgZnVuY3Rpb24gZ2VuZXJhdGVzIGEgc3RhdGlzdGljcyBmaWxlLiBUaGUgY29u
dGVudHMgb2YgdGhlIGZpbGUgYXJlIGluIHRoZQotICBmb3JtYXQgPGZyYW1lX25hbWU+IDxiYXJj
b2RlPiwgd2hlcmUgZnJhbWUgbmFtZSBpcyB0aGUgbmFtZSBvZiBldmVyeSBmcmFtZQotICAoZWZm
ZWN0aXZlbHkgdGhlIGZyYW1lIG51bWJlcikgYW5kIGJhcmNvZGUgaXMgdGhlIGRlY29kZWQgYmFy
Y29kZS4gVGhlIGZyYW1lcwotICBhbmQgdGhlIGhlbHBlciAudHh0IGZpbGVzIGFyZSByZW1vdmVk
IGFmdGVyIHRoZXkgaGF2ZSBiZWVuIHVzZWQuCi0gICIiIgotICBmaWxlX3ByZWZpeCA9IG9zLnBh
dGguam9pbihpbnB1dF9kaXJlY3RvcnksICdmcmFtZV8nKQotICBzdGF0c19maWxlID0gb3Blbihz
dGF0c19maWxlX25hbWUsICd3JykKLQotICBwcmludCAnR2VuZXJhdGluZyBzdGF0cyBmaWxlOiAl
cycgJSBzdGF0c19maWxlX25hbWUKLSAgZm9yIGkgaW4gcmFuZ2UoMSwgX0NvdW50RnJhbWVzSW4o
aW5wdXRfZGlyZWN0b3J5PWlucHV0X2RpcmVjdG9yeSkgKyAxKToKLSAgICBmcmFtZV9udW1iZXIg
PSBoZWxwZXJfZnVuY3Rpb25zLlplcm9QYWQoaSkKLSAgICBiYXJjb2RlX2ZpbGVfbmFtZSA9IGZp
bGVfcHJlZml4ICsgZnJhbWVfbnVtYmVyICsgJy50eHQnCi0gICAgcG5nX2ZyYW1lID0gZmlsZV9w
cmVmaXggKyBmcmFtZV9udW1iZXIgKyAnLnBuZycKLSAgICBlbnRyeV9mcmFtZV9udW1iZXIgPSBo
ZWxwZXJfZnVuY3Rpb25zLlplcm9QYWQoaS0xKQotICAgIGVudHJ5ID0gJ2ZyYW1lXycgKyBlbnRy
eV9mcmFtZV9udW1iZXIgKyAnICcKLQotICAgIGlmIG9zLnBhdGguaXNmaWxlKGJhcmNvZGVfZmls
ZV9uYW1lKToKLSAgICAgIGJhcmNvZGUgPSBfUmVhZEJhcmNvZGVGcm9tVGV4dEZpbGUoYmFyY29k
ZV9maWxlX25hbWUpCi0gICAgICBvcy5yZW1vdmUoYmFyY29kZV9maWxlX25hbWUpCi0KLSAgICAg
IGlmIF9DaGVja0JhcmNvZGUoYmFyY29kZSk6Ci0gICAgICAgIGVudHJ5ICs9IChoZWxwZXJfZnVu
Y3Rpb25zLlplcm9QYWQoaW50KGJhcmNvZGVbMDoxMV0pKSArICdcbicpCi0gICAgICBlbHNlOgot
ICAgICAgICBlbnRyeSArPSAnQmFyY29kZSBlcnJvclxuJyAgIyBCYXJjb2RlIGlzIHdyb25nbHkg
ZGV0ZWN0ZWQuCi0gICAgZWxzZTogICMgQmFyY29kZSBmaWxlIGRvZXNuJ3QgZXhpc3QuCi0gICAg
ICBlbnRyeSArPSAnQmFyY29kZSBlcnJvclxuJwotCi0gICAgc3RhdHNfZmlsZS53cml0ZShlbnRy
eSkKLSAgICBvcy5yZW1vdmUocG5nX2ZyYW1lKQotCi0gIHN0YXRzX2ZpbGUuY2xvc2UoKQotCi0K
LWRlZiBfUmVhZEJhcmNvZGVGcm9tVGV4dEZpbGUoYmFyY29kZV9maWxlX25hbWUpOgotICAiIiJS
ZWFkcyB0aGUgZGVjb2RlZCBiYXJjb2RlIGZvciBhIC50eHQgZmlsZS4KLQotICBBcmdzOgotICAg
IGJhcmNvZGVfZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9mIHRoZSAudHh0IGZpbGUuCi0g
IFJldHVybjoKLSAgICAoc3RyaW5nKTogVGhlIGRlY29kZWQgYmFyY29kZS4KLSAgIiIiCi0gIGJh
cmNvZGVfZmlsZSA9IG9wZW4oYmFyY29kZV9maWxlX25hbWUsICdyJykKLSAgYmFyY29kZSA9IGJh
cmNvZGVfZmlsZS5yZWFkKCkKLSAgYmFyY29kZV9maWxlLmNsb3NlKCkKLSAgcmV0dXJuIGJhcmNv
ZGUKLQotCi1kZWYgX0NoZWNrQmFyY29kZShiYXJjb2RlKToKLSAgIiIiQ2hlY2sgd2VhdGhlciB0
aGUgVVBDLUEgYmFyY29kZSB3YXMgZGVjb2RlZCBjb3JyZWN0bHkuCi0KLSAgVGhpcyBmdW5jdGlv
biBjYWxjdWxhdGVzIHRoZSBjaGVjayBkaWdpdCBvZiB0aGUgcHJvdmlkZWQgYmFyY29kZSBhbmQg
Y29tcGFyZXMKLSAgaXQgdG8gdGhlIGNoZWNrIGRpZ2l0IHRoYXQgd2FzIGRlY29kZWQuCi0KLSAg
QXJnczoKLSAgICBiYXJjb2RlKHN0cmluZyk6IFRoZSBiYXJjb2RlICgxMi1kaWdpdCkuCi0gIFJl
dHVybjoKLSAgICAoYm9vbCk6IFRydWUgaWYgdGhlIGJhcmNvZGUgd2FzIGRlY29kZWQgY29ycmVj
dGx5LgotICAiIiIKLSAgaWYgbGVuKGJhcmNvZGUpICE9IDEyOgotICAgIHJldHVybiBGYWxzZQot
Ci0gIHIxID0gcmFuZ2UoMCwgMTEsIDIpICAjIE9kZCBkaWdpdHMKLSAgcjIgPSByYW5nZSgxLCAx
MCwgMikgICMgRXZlbiBkaWdpdHMgZXhjZXB0IGxhc3QKLSAgZHN1bSA9IDAKLSAgIyBTdW0gYWxs
IHRoZSBldmVuIGRpZ2l0cwotICBmb3IgaSBpbiByMToKLSAgICBkc3VtICs9IGludChiYXJjb2Rl
W2ldKQotICAjIE11bHRpcGx5IHRoZSBzdW0gYnkgMwotICBkc3VtICo9IDMKLSAgIyBBZGQgYWxs
IHRoZSBldmVuIGRpZ2l0cyBleGNlcHQgdGhlIGNoZWNrIGRpZ2l0ICgxMnRoIGRpZ2l0KQotICBm
b3IgaSBpbiByMjoKLSAgICBkc3VtICs9IGludChiYXJjb2RlW2ldKQotICAjIEdldCB0aGUgbW9k
dWxvIDEwCi0gIGRzdW0gPSBkc3VtICUgMTAKLSAgIyBJZiBub3QgMCBzdWJzdHJhY3QgZnJvbSAx
MAotICBpZiBkc3VtICE9IDA6Ci0gICAgZHN1bSA9IDEwIC0gZHN1bQotICAjIENvbXBhcmUgcmVz
dWx0IGFuZCBjaGVjayBkaWdpdAotICByZXR1cm4gZHN1bSA9PSBpbnQoYmFyY29kZVsxMV0pCi0K
LQotZGVmIF9Db3VudEZyYW1lc0luKGlucHV0X2RpcmVjdG9yeT0nLicpOgotICAiIiJDYWxjdWxh
dGVzIHRoZSBudW1iZXIgb2YgZnJhbWVzIGluIHRoZSBpbnB1dCBkaXJlY3RvcnkuCi0KLSAgVGhl
IGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiBmcmFtZXMgaW4gdGhlIGlucHV0IGRp
cmVjdG9yeS4gVGhlCi0gIGZyYW1lcyBzaG91bGQgYmUgbmFtZWQgZnJhbWVfeHh4eC5wbmcsIHdo
ZXJlIHh4eHggaXMgdGhlIG51bWJlciBvZiB0aGUgZnJhbWUuCi0gIFRoZSBudW1iZXJzIHNob3Vs
ZCBzdGFydCBmcm9tIDEgYW5kIHNob3VsZCBiZSBjb25zZWN1dGl2ZS4KLQotICBBcmdzOgotICAg
IGlucHV0X2RpcmVjdG9yeShzdHJpbmcpOiBUaGUgaW5wdXQgZGlyZWN0b3J5LgotICBSZXR1cm46
Ci0gICAgKGludCk6IFRoZSBudW1iZXIgb2YgZnJhbWVzLgotICAiIiIKLSAgZmlsZV9wcmVmaXgg
PSBvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0b3J5LCAnZnJhbWVfJykKLSAgZmlsZV9leGlzdHMg
PSBUcnVlCi0gIG51bSA9IDEKLQotICB3aGlsZSBmaWxlX2V4aXN0czoKLSAgICBmaWxlX25hbWUg
PSAoZmlsZV9wcmVmaXggKyBoZWxwZXJfZnVuY3Rpb25zLlplcm9QYWQobnVtKSArICcucG5nJykK
LSAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX25hbWUpOgotICAgICAgbnVtICs9IDEKLSAgICBl
bHNlOgotICAgICAgZmlsZV9leGlzdHMgPSBGYWxzZQotICByZXR1cm4gbnVtIC0gMQotCi0KLWRl
ZiBfUGFyc2VBcmdzKCk6Ci0gICIiIlJlZ2lzdGVycyB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMu
IiIiCi0gIHVzYWdlID0gInVzYWdlOiAlcHJvZyBbb3B0aW9uc10iCi0gIHBhcnNlciA9IG9wdHBh
cnNlLk9wdGlvblBhcnNlcih1c2FnZT11c2FnZSkKLQotICBwYXJzZXIuYWRkX29wdGlvbignLS16
eGluZ19wYXRoJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1Ro
ZSBwYXRoIHRvIHdoZXJlIHRoZSB6eGluZyBleGVjdXRhYmxlIGlzIGxvY2F0ZWQuICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0lmIG9taXR0ZWQsIGl0IHdpbGwgYmUgYXNzdW1lZCB0byBi
ZSBwcmVzZW50IGluIHRoZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdQQVRIIHdpdGgg
dGhlIG5hbWUgenhpbmdbLmV4ZV0uJykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLWZmbXBlZ19w
YXRoJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1RoZSBwYXRo
IHRvIHdoZXJlIHRoZSBmZm1wZWcgZXhlY3V0YWJsZSBpcyBsb2NhdGVkLiAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICdJZiBvbWl0dGVkLCBpdCB3aWxsIGJlIGFzc3VtZWQgdG8gYmUgcHJl
c2VudCBpbiB0aGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnUEFUSCB3aXRoIHRoZSBu
YW1lIGZmbXBlZ1suZXhlXS4nKSkKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0teXV2X2ZyYW1lX3dp
ZHRoJywgdHlwZT0naW50JywgZGVmYXVsdD02NDAsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9
J1dpZHRoIG9mIHRoZSBZVVYgZmlsZVwncyBmcmFtZXMuIERlZmF1bHQ6ICVkZWZhdWx0JykKLSAg
cGFyc2VyLmFkZF9vcHRpb24oJy0teXV2X2ZyYW1lX2hlaWdodCcsIHR5cGU9J2ludCcsIGRlZmF1
bHQ9NDgwLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSdIZWlnaHQgb2YgdGhlIFlVViBmaWxl
XCdzIGZyYW1lcy4gRGVmYXVsdDogJWRlZmF1bHQnKQotICBwYXJzZXIuYWRkX29wdGlvbignLS15
dXZfZmlsZScsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9J291dHB1dC55dXYnLAotICAgICAgICAg
ICAgICAgICAgICBoZWxwPSdUaGUgWVVWIGZpbGUgdG8gYmUgZGVjb2RlZC4gRGVmYXVsdDogJWRl
ZmF1bHQnKQotICBwYXJzZXIuYWRkX29wdGlvbignLS1zdGF0c19maWxlJywgdHlwZT0nc3RyaW5n
JywgZGVmYXVsdD0nc3RhdHMudHh0JywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0nVGhlIG91
dHB1dCBzdGF0cyBmaWxlLiBEZWZhdWx0OiAlZGVmYXVsdCcpCi0gIHBhcnNlci5hZGRfb3B0aW9u
KCctLXBuZ193b3JraW5nX2RpcicsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9Jy4nLAotICAgICAg
ICAgICAgICAgICAgICBoZWxwPSgnVGhlIGRpcmVjdG9yeSBmb3IgdGVtcG9yYXJ5IFBORyBpbWFn
ZXMgdG8gYmUgc3RvcmVkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luIHdoZW4gZGVj
b2RpbmcgZnJvbSBZVVYgYmVmb3JlIHRoZXlcJ3JlIGJhcmNvZGUgJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAnZGVjb2RlZC4gSWYgdXNpbmcgV2luZG93cyBhbmQgYSBDeWd3aW4tY29tcGls
ZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnenhpbmcuZXhlLCB5b3Ugc2hvdWxkIGtl
ZXAgdGhlIGRlZmF1bHQgdmFsdWUgdG8gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnYXZv
aWQgcHJvYmxlbXMuIERlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIG9wdGlvbnMsIF8gPSBwYXJzZXIu
cGFyc2VfYXJncygpCi0gIHJldHVybiBvcHRpb25zCi0KLQotZGVmIG1haW4oKToKLSAgIiIiVGhl
IG1haW4gZnVuY3Rpb24uCi0KLSAgQSBzaW1wbGUgaW52b2NhdGlvbiBpczoKLSAgLi93ZWJydGMv
cnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvYmFyY29kZV9kZWNvZGVyLnB5Ci0gIC0teXV2X2ZpbGU9
PHBhdGhfYW5kX25hbWVfb2Zfb3ZlcmxhaWRfeXV2X3ZpZGVvPgotICAtLXl1dl9mcmFtZV93aWR0
aD02NDAgLS15dXZfZnJhbWVfaGVpZ2h0PTQ4MAotICAtLXN0YXRzX2ZpbGU9PHBhdGhfYW5kX25h
bWVfdG9fc3RhdHNfZmlsZT4KLSAgIiIiCi0gIG9wdGlvbnMgPSBfUGFyc2VBcmdzKCkKLQotICAj
IENvbnZlcnQgdGhlIG92ZXJsYWlkIFlVViB2aWRlbyBpbnRvIGEgc2V0IG9mIFBORyBmcmFtZXMu
Ci0gIGlmIG5vdCBDb252ZXJ0WXV2VG9QbmdGaWxlcyhvcHRpb25zLnl1dl9maWxlLCBvcHRpb25z
Lnl1dl9mcmFtZV93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMu
eXV2X2ZyYW1lX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9k
aXJlY3Rvcnk9b3B0aW9ucy5wbmdfd29ya2luZ19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmZm1wZWdfcGF0aD1vcHRpb25zLmZmbXBlZ19wYXRoKToKLSAgICBwcmludCAnQW4g
ZXJyb3Igb2NjdXJyZWQgY29udmVydGluZyBmcm9tIFlVViB0byBQTkcgZnJhbWVzLicKLSAgICBy
ZXR1cm4gLTEKLQotICAjIERlY29kZSB0aGUgYmFyY29kZXMgZnJvbSB0aGUgUE5HIGZyYW1lcy4K
LSAgaWYgbm90IERlY29kZUZyYW1lcyhpbnB1dF9kaXJlY3Rvcnk9b3B0aW9ucy5wbmdfd29ya2lu
Z19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgenhpbmdfcGF0aD1vcHRpb25zLnp4aW5nX3Bh
dGgpOgotICAgIHByaW50ICdBbiBlcnJvciBvY2N1cnJlZCBkZWNvZGluZyBiYXJjb2RlcyBmcm9t
IFBORyBmcmFtZXMuJwotICAgIHJldHVybiAtMgotCi0gICMgR2VuZXJhdGUgc3RhdGlzdGljcyBm
aWxlLgotICBfR2VuZXJhdGVTdGF0c0ZpbGUob3B0aW9ucy5zdGF0c19maWxlLAotICAgICAgICAg
ICAgICAgICAgICAgaW5wdXRfZGlyZWN0b3J5PW9wdGlvbnMucG5nX3dvcmtpbmdfZGlyKQotICBw
cmludCAnQ29tcGxldGVkIGJhcmNvZGUgZGVjb2RpbmcuJwotICByZXR1cm4gMAotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90
b29scy9iYXJjb2RlX2VuY29kZXIucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9iYXJjb2RlX2VuY29kZXIucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhYjhiNTA3NTQyMzk5MmY5MmI4YzdmODczOTNj
ZTAyY2U5ZTZiOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2Jh
cmNvZGVfdG9vbHMvYmFyY29kZV9lbmNvZGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzcyICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0jIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSMgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCi0jIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKLSMgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQotIyBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLQotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQg
b3MKLWltcG9ydCBzeXMKLQotaW1wb3J0IGhlbHBlcl9mdW5jdGlvbnMKLQotX0RFRkFVTFRfQkFS
Q09ERV9XSURUSCA9IDM1MgotX0RFRkFVTFRfQkFSQ09ERVNfRklMRSA9ICdiYXJjb2Rlcy55dXYn
Ci0KLQotZGVmIEdlbmVyYXRlVXBjYUJhcmNvZGVzKG51bWJlcl9vZl9iYXJjb2RlcywgYmFyY29k
ZV93aWR0aCwgYmFyY29kZV9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0
X2RpcmVjdG9yeT0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF90b196eGluZz0n
enhpbmctcmVhZC1vbmx5Jyk6Ci0gICIiIkdlbmVyYXRlcyBVUEMtQSBiYXJjb2Rlcy4KLQotICBU
aGlzIGZ1bmN0aW9uIGdlbmVyYXRlcyBhIG51bWJlcl9vZl9iYXJjb2RlcyBVUEMtQSBiYXJjb2Rl
cy4gVGhlIGZ1bmN0aW9uCi0gIGNhbGxzIGFuIGV4YW1wbGUgSmF2YSBlbmNvZGVyIGZyb20gdGhl
IFp4aW5nIGxpYnJhcnkuIFRoZSBiYXJjb2RlcyBhcmUKLSAgZ2VuZXJhdGVkIGFzIFBORyBpbWFn
ZXMuIFRoZSB3aWR0aCBvZiB0aGUgYmFyY29kZXMgc2hvdWxkbid0IGJlIGxlc3MgdGhhbiAxMDIK
LSAgcGl4ZWxzIGJlY2F1c2Ugb3RoZXJ3aXNlIFp4aW5nIGNhbid0IHByb3Blcmx5IGdlbmVyYXRl
IHRoZSBiYXJjb2Rlcy4KLQotICBBcmdzOgotICAgIG51bWJlcl9vZl9iYXJjb2RlcyhpbnQpOiBU
aGUgbnVtYmVyIG9mIGJhcmNvZGVzIHRvIGdlbmVyYXRlLgotICAgIGJhcmNvZGVfd2lkdGgoaW50
KTogV2lkdGggb2YgYmFyY29kZSBpbiBwaXhlbHMuCi0gICAgYmFyY29kZV9oZWlnaHQoaW50KTog
SGVpZ2h0IG9mIGJhcmNvZGUgaW4gcGl4ZWxzLgotICAgIG91dHB1dF9kaXJlY3Rvcnkoc3RyaW5n
KTogT3V0cHV0IGRpcmVjdG9yeSB3aGVyZSB0byBzdG9yZSBnZW5lcmF0ZWQKLSAgICAgIGJhcmNv
ZGVzLgotICAgIHBhdGhfdG9fenhpbmcoc3RyaW5nKTogVGhlIHBhdGggdG8gWnhpbmcuCi0KLSAg
UmV0dXJuOgotICAgIChib29sKTogVHJ1ZSBpZiB0aGUgY29udmVyc2lvbiBpcyBzdWNjZXNzZnVs
LgotICAiIiIKLSAgYmFzZV9maWxlX25hbWUgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpcmVjdG9y
eSwgImJhcmNvZGVfIikKLSAgamFycyA9IF9Gb3JtSmFyc1N0cmluZyhwYXRoX3RvX3p4aW5nKQot
ICBjb21tYW5kX2xpbmVfZW5jb2RlciA9ICdjb20uZ29vZ2xlLnp4aW5nLmNsaWVudC5qMnNlLkNv
bW1hbmRMaW5lRW5jb2RlcicKLSAgYmFyY29kZV93aWR0aCA9IHN0cihiYXJjb2RlX3dpZHRoKQot
ICBiYXJjb2RlX2hlaWdodCA9IHN0cihiYXJjb2RlX2hlaWdodCkKLQotICBlcnJvcnMgPSBGYWxz
ZQotICBmb3IgaSBpbiByYW5nZShudW1iZXJfb2ZfYmFyY29kZXMpOgotICAgIHN1ZmZpeCA9IGhl
bHBlcl9mdW5jdGlvbnMuWmVyb1BhZChpKQotICAgICMgQmFyY29kZXMgc3RhcnRpbmcgZnJvbSAw
Ci0gICAgY29udGVudCA9IGhlbHBlcl9mdW5jdGlvbnMuWmVyb1BhZChpLCAxMSkKLSAgICBvdXRw
dXRfZmlsZV9uYW1lID0gYmFzZV9maWxlX25hbWUgKyBzdWZmaXggKyAiLnBuZyIKLQotICAgIGNv
bW1hbmQgPSBbImphdmEiLCAiLWNwIiwgamFycywgY29tbWFuZF9saW5lX2VuY29kZXIsCi0gICAg
ICAgICAgICAgICAiLS1iYXJjb2RlX2Zvcm1hdD1VUENfQSIsICItLWhlaWdodD0lcyIgJSBiYXJj
b2RlX2hlaWdodCwKLSAgICAgICAgICAgICAgICItLXdpZHRoPSVzIiAlIGJhcmNvZGVfd2lkdGgs
Ci0gICAgICAgICAgICAgICAiLS1vdXRwdXQ9JXMiICUgKG91dHB1dF9maWxlX25hbWUpLCAiJXMi
ICUgKGNvbnRlbnQpXQotICAgIHRyeToKLSAgICAgIGhlbHBlcl9mdW5jdGlvbnMuUnVuU2hlbGxD
b21tYW5kKAotICAgICAgICAgIGNvbW1hbmQsIGZhaWxfbXNnPSgnRXJyb3IgZHVyaW5nIGJhcmNv
ZGUgJXMgZ2VuZXJhdGlvbicgJSBjb250ZW50KSkKLSAgICBleGNlcHQgaGVscGVyX2Z1bmN0aW9u
cy5IZWxwZXJFcnJvciBhcyBlcnI6Ci0gICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCBlcnIKLSAg
ICAgIGVycm9ycyA9IFRydWUKLSAgcmV0dXJuIG5vdCBlcnJvcnMKLQotCi1kZWYgQ29udmVydFBu
Z1RvWXV2QmFyY29kZXMoaW5wdXRfZGlyZWN0b3J5PScuJywgb3V0cHV0X2RpcmVjdG9yeT0nLicp
OgotICAiIiJDb252ZXJ0cyBQTkcgYmFyY29kZXMgdG8gWVVWIGJhcmNvZGUgaW1hZ2VzLgotCi0g
IFRoaXMgZnVuY3Rpb24gcmVhZHMgYWxsIHRoZSBQTkcgZmlsZXMgZnJvbSB0aGUgaW5wdXQgZGly
ZWN0b3J5IHdoaWNoIGFyZSBpbgotICB0aGUgZm9ybWF0IGZyYW1lX3h4eHgucG5nLCB3aGVyZSB4
eHh4IGlzIHRoZSBudW1iZXIgb2YgdGhlIGZyYW1lLCBzdGFydGluZwotICBmcm9tIDAwMDAuIFRo
ZSBmcmFtZXMgc2hvdWxkIGJlIGNvbnNlY3V0aXZlIG51bWJlcnMuIFRoZSBvdXRwdXQgWVVWIGZp
bGUgaXMKLSAgbmFtZWQgZnJhbWVfeHh4eC55dXYuIFRoZSBmdW5jdGlvbiB1c2VzIGZmbXBlZyB0
byBkbyB0aGUgY29udmVyc2lvbi4KLQotICBBcmdzOgotICAgIGlucHV0X2RpcmVjdG9yeShzdHJp
bmcpOiBUaGUgaW5wdXQgZGlyZWNvdHJ5IHRvIHJlYWQgdGhlIFBORyBiYXJjb2RlcyBmcm9tLgot
ICAgIG91dHB1dF9kaXJlY3Rvcnkoc3RyaW5nKTogVGhlIHB1dHB1dCBkaXJlY3RvcnkgdG8gd3Jp
dGUgdGhlIFlVViBmaWxlcyB0by4KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1ZSBpZiB0aGUg
Y29udmVyc2lvbiB3YXMgd2l0aG91dCBlcnJvcnMuCi0gICIiIgotICByZXR1cm4gaGVscGVyX2Z1
bmN0aW9ucy5QZXJmb3JtQWN0aW9uT25BbGxGaWxlcygKLSAgICAgIGlucHV0X2RpcmVjdG9yeSwg
J2JhcmNvZGVfJywgJ3BuZycsIDAsIF9Db252ZXJ0VG9ZdXZBbmREZWxldGUsCi0gICAgICBvdXRw
dXRfZGlyZWN0b3J5PW91dHB1dF9kaXJlY3RvcnksIHBhdHRlcm49J2JhcmNvZGVfJykKLQotCi1k
ZWYgX0NvbnZlcnRUb1l1dkFuZERlbGV0ZShvdXRwdXRfZGlyZWN0b3J5LCBmaWxlX25hbWUsIHBh
dHRlcm4pOgotICAiIiJDb252ZXJ0cyBhIFBORyBmaWxlIHRvIGEgWVVWIGZpbGUgYW5kIGRlbGV0
ZXMgdGhlIFBORyBmaWxlLgotCi0gIEFyZ3M6Ci0gICAgb3V0cHV0X2RpcmVjdG9yeShzdHJpbmcp
OiBUaGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIFlVViBmaWxlLgotICAgIGZpbGVfbmFtZShz
dHJpbmcpOiBUaGUgUE5HIGZpbGUgbmFtZS4KLSAgICBwYXR0ZXJuKHN0cmluZyk6IFRoZSBmaWxl
IHBhdHRlcm4gb2YgdGhlIFBORy9ZVVYgZmlsZS4gVGhlIFBORy9ZVVYgZmlsZXMgYXJlCi0gICAg
ICBuYW1lZCBwYXR0ZXJueHguLngucG5nL3l1diwgd2hlcmUgeHguLnggYXJlIGRpZ2l0cyBzdGFy
dGluZyBmcm9tIDAwLi4wLgotICBSZXR1cm46Ci0gICAgKGJvb2wpOiBUcnVlIHVwb24gc3VjY2Vz
c2Z1bCBjb252ZXJzaW9uLCBmYWxzZSBvdGhlcndpc2UuCi0gICIiIgotICAjIFBhdHRlcm4gc2hv
dWxkIGJlIGluIGZpbGUgbmFtZQotICBpZiBub3QgcGF0dGVybiBpbiBmaWxlX25hbWU6Ci0gICAg
cmV0dXJuIEZhbHNlCi0gIHBhdHRlcm5fcG9zaXRpb24gPSBmaWxlX25hbWUucmZpbmQocGF0dGVy
bikKLQotICAjIFN0cmlwIHRoZSBwYXRoIHRvIHRoZSBQTkcgZmlsZSBhbmQgcmVwbGFjZSB0aGUg
cG5nIGV4dGVuc2lvbiB3aXRoIHl1dgotICB5dXZfZmlsZV9uYW1lID0gZmlsZV9uYW1lW3BhdHRl
cm5fcG9zaXRpb246LTNdICsgJ3l1dicKLSAgeXV2X2ZpbGVfbmFtZSA9IG9zLnBhdGguam9pbihv
dXRwdXRfZGlyZWN0b3J5LCB5dXZfZmlsZV9uYW1lKQotCi0gIGNvbW1hbmQgPSBbJ2ZmbXBlZycs
ICctaScsICclcycgJSAoZmlsZV9uYW1lKSwgJy1waXhfZm10JywgJ3l1djQyMHAnLAotICAgICAg
ICAgICAgICclcycgJSAoeXV2X2ZpbGVfbmFtZSldCi0gIHRyeToKLSAgICBoZWxwZXJfZnVuY3Rp
b25zLlJ1blNoZWxsQ29tbWFuZCgKLSAgICAgICAgY29tbWFuZCwgZmFpbF9tc2c9KCdFcnJvciBk
dXJpbmcgUE5HIHRvIFlVViBjb252ZXJzaW9uIG9mICVzJyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWxlX25hbWUpKQotICAgIG9zLnJlbW92ZShmaWxlX25hbWUpCi0gIGV4Y2VwdCBo
ZWxwZXJfZnVuY3Rpb25zLkhlbHBlckVycm9yIGFzIGVycjoKLSAgICBwcmludCA+PiBzeXMuc3Rk
ZXJyLCBlcnIKLSAgICByZXR1cm4gRmFsc2UKLSAgcmV0dXJuIFRydWUKLQotCi1kZWYgQ29tYmlu
ZVl1dkZyYW1lc0ludG9PbmVGaWxlKG91dHB1dF9maWxlX25hbWUsIGlucHV0X2RpcmVjdG9yeT0n
LicpOgotICAiIiJDb21iaW5lcyBzZXZlcmFsIFlVViBmcmFtZXMgaW50byBvbmUgWVVWIHZpZGVv
IGZpbGUuCi0KLSAgVGhlIGZ1bmN0aW9uIGNvbWJpbmVzIHRoZSBZVVYgZnJhbWVzIGZyb20gaW5w
dXRfZGlyZWN0b3J5IGludG8gb25lIFlVViB2aWRlbwotICBmaWxlLiBUaGUgZnJhbWVzIHNob3Vs
ZCBiZSBuYW1lZCBpbiB0aGUgZm9ybWF0IGZyYW1lX3h4eHgueXV2IHdoZXJlIHh4eHgKLSAgc3Rh
bmRzIGZvciB0aGUgZnJhbWUgbnVtYmVyLiBUaGUgbnVtYmVycyBoYXZlIHRvIGJlIGNvbnNlY3V0
aXZlIGFuZCBzdGFydCBmcm9tCi0gIDAwMDAuIFRoZSBZVVYgZnJhbWVzIGFyZSByZW1vdmVkIGFm
dGVyIHRoZXkgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSB2aWRlby4KLQotICBBcmdzOgotICAgIG91
dHB1dF9maWxlX25hbWUoc3RyaW5nKTogVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gcHJvZHVjZS4K
LSAgICBpbnB1dF9kaXJlY3Rvcnkoc3RyaW5nKTogVGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIHRo
ZSBZVVYgZnJhbWVzIGFyZSByZWFkLgotICBSZXR1cm46Ci0gICAgKGJvb2wpOiBUcnVlIGlmIHRo
ZSBmcmFtZSBzdGl0Y2hpbmcgd2VudCBPSy4KLSAgIiIiCi0gIG91dHB1dF9maWxlID0gb3Blbihv
dXRwdXRfZmlsZV9uYW1lLCAid2IiKQotICBzdWNjZXNzID0gaGVscGVyX2Z1bmN0aW9ucy5QZXJm
b3JtQWN0aW9uT25BbGxGaWxlcygKLSAgICAgIGlucHV0X2RpcmVjdG9yeSwgJ2JhcmNvZGVfJywg
J3l1dicsIDAsIF9BZGRUb0ZpbGVBbmREZWxldGUsCi0gICAgICBvdXRwdXRfZmlsZT1vdXRwdXRf
ZmlsZSkKLSAgb3V0cHV0X2ZpbGUuY2xvc2UoKQotICByZXR1cm4gc3VjY2VzcwotCi1kZWYgX0Fk
ZFRvRmlsZUFuZERlbGV0ZShvdXRwdXRfZmlsZSwgZmlsZV9uYW1lKToKLSAgIiIiQWRkcyB0aGUg
Y29udGVudHMgb2YgYSBmaWxlIHRvIGEgcHJldmlvdXNseSBvcGVuZWQgZmlsZS4KLQotICBBcmdz
OgotICAgIG91dHB1dF9maWxlKGZpbGUpOiBUaGUgb3VwdXQgZmlsZSwgcHJldmlvdXNseSBvcGVu
ZWQuCi0gICAgZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBmaWxlIG5hbWUgb2YgdGhlIGZpbGUgdG8g
YWRkIHRvIHRoZSBvdXRwdXQgZmlsZS4KLQotICBSZXR1cm46Ci0gICAgKGJvb2wpOiBUcnVlIGlm
IHN1Y2Nlc3NmdWwsIEZhbHNlIG90aGVyd2lzZS4KLSAgIiIiCi0gIGlucHV0X2ZpbGUgPSBvcGVu
KGZpbGVfbmFtZSwgInJiIikKLSAgaW5wdXRfZmlsZV9jb250ZW50cyA9IGlucHV0X2ZpbGUucmVh
ZCgpCi0gIG91dHB1dF9maWxlLndyaXRlKGlucHV0X2ZpbGVfY29udGVudHMpCi0gIGlucHV0X2Zp
bGUuY2xvc2UoKQotICB0cnk6Ci0gICAgb3MucmVtb3ZlKGZpbGVfbmFtZSkKLSAgZXhjZXB0IE9T
RXJyb3IgYXMgZToKLSAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnRXJyb3IgZGVsZXRpbmcgZmls
ZSAlcy5cbkVycm9yOiAlcycgJSAoZmlsZV9uYW1lLCBlKQotICAgIHJldHVybiBGYWxzZQotICBy
ZXR1cm4gVHJ1ZQotCi0KLWRlZiBfT3ZlcmxheUJhcmNvZGVBbmRCYXNlRnJhbWVzKGJhcmNvZGVz
X2ZpbGUsIGJhc2VfZmlsZSwgb3V0cHV0X2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXJjb2Rlc19jb21wb25lbnRfc2l6ZXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlX2NvbXBvbmVudF9zaXplcyk6Ci0gICIiIk92ZXJsYXlzIHRoZSBuZXh0
IFlVViBmcmFtZSBmcm9tIGEgZmlsZSB3aXRoIGEgYmFyY29kZS4KLQotICBBcmdzOgotICAgIGJh
cmNvZGVzX2ZpbGUoRmlsZU9iamVjdCk6IFRoZSBZVVYgZmlsZSBjb250YWluaW5nIHRoZSBiYXJj
b2RlcyAob3BlbmVkKS4KLSAgICBiYXNlX2ZpbGUoRmlsZU9iamVjdCk6IFRoZSBiYXNlIFlVViBm
aWxlIChvcGVuZWQpLgotICAgIG91dHB1dF9maWxlKEZpbGVPYmplY3QpOiBUaGUgb3V0cHV0IG92
ZXJsYWlkIGZpbGUgKG9wZW5lZCkuCi0gICAgYmFyY29kZXNfY29tcG9uZW50X3NpemVzKGxpc3Qg
b2YgdHVwbGVzKTogVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgZWFjaCBZLCBVCi0gICAgICBhbmQg
ViBwbGFuZSBvZiB0aGUgYmFyY29kZXMgWVVWIGZpbGUuCi0gICAgYmFzZV9jb21wb25lbnRfc2l6
ZXMobGlzdCBvZiB0dXBsZXMpOiBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiBlYWNoIFksIFUgYW5k
Ci0gICAgICBWIHBsYW5lIG9mIHRoZSBiYXNlIFlVViBmaWxlLgotICBSZXR1cm46Ci0gICAgKGJv
b2wpOiBUcnVlIGlmIHRoZXJlIGFyZSBtb3JlIHBsYW5lcyAoaS5lLiBmcmFtZXMpIGluIHRoZSBi
YXNlIGZpbGUsIGZhbHNlCi0gICAgICBvdGhlcndpc2UuCi0gICIiIgotICAjIFdlIHdpbGwgbG9v
cCB0aHJlZSB0aW1lcyAtIG9uY2UgZm9yIHRoZSBZLCBVIGFuZCBWIHBsYW5lcwotICBmb3IgKChi
YXJjb2RlX2NvbXBfd2lkdGgsIGJhcmNvZGVfY29tcF9oZWlnaHQpLAotICAgICAgKGJhc2VfY29t
cF93aWR0aCwgYmFzZV9jb21wX2hlaWdodCkpIGluIHppcChiYXJjb2Rlc19jb21wb25lbnRfc2l6
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh
c2VfY29tcG9uZW50X3NpemVzKToKLSAgICBmb3IgYmFzZV9yb3cgaW4gcmFuZ2UoYmFzZV9jb21w
X2hlaWdodCk6Ci0gICAgICBiYXJjb2RlX3BsYW5lX3RyYXZlcnNlZCA9IEZhbHNlCi0gICAgICBp
ZiAoYmFzZV9yb3cgPCBiYXJjb2RlX2NvbXBfaGVpZ2h0KSBhbmQgbm90IGJhcmNvZGVfcGxhbmVf
dHJhdmVyc2VkOgotICAgICAgICBiYXJjb2RlX3BsYW5lID0gYmFyY29kZXNfZmlsZS5yZWFkKGJh
cmNvZGVfY29tcF93aWR0aCkKLSAgICAgICAgaWYgYmFyY29kZV9wbGFuZSA9PSAiIjoKLSAgICAg
ICAgICBiYXJjb2RlX3BsYW5lX3RyYXZlcnNlZCA9IFRydWUKLSAgICAgIGVsc2U6Ci0gICAgICAg
IGJhcmNvZGVfcGxhbmVfdHJhdmVyc2VkID0gVHJ1ZQotICAgICAgYmFzZV9wbGFuZSA9IGJhc2Vf
ZmlsZS5yZWFkKGJhc2VfY29tcF93aWR0aCkKLQotICAgICAgaWYgYmFzZV9wbGFuZSA9PSAiIjoK
LSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgIGlmIG5vdCBiYXJjb2RlX3BsYW5lX3RyYXZl
cnNlZDoKLSAgICAgICAgIyBTdWJzdGl0dXRlIHBhcnQgb2YgdGhlIGJhc2UgY29tcG9uZW50IHdp
dGggdGhlIHRvcCBjb21wb25lbnQKLSAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoYmFyY29kZV9w
bGFuZSkKLSAgICAgICAgYmFzZV9wbGFuZSA9IGJhc2VfcGxhbmVbYmFyY29kZV9jb21wX3dpZHRo
Ol0KLSAgICAgIG91dHB1dF9maWxlLndyaXRlKGJhc2VfcGxhbmUpCi0gIHJldHVybiBUcnVlCi0K
LQotZGVmIE92ZXJsYXlZdXZGaWxlcyhiYXJjb2RlX3dpZHRoLCBiYXJjb2RlX2hlaWdodCwgYmFz
ZV93aWR0aCwgYmFzZV9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgIGJhcmNvZGVzX2ZpbGVf
bmFtZSwgYmFzZV9maWxlX25hbWUsIG91dHB1dF9maWxlX25hbWUpOgotICAiIiJPdmVybGF5cyB0
d28gWVVWIGZpbGVzIHN0YXJ0aW5nIGZyb20gdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIGJvdGgu
Ci0KLSAgQXJnczoKLSAgICBiYXJjb2RlX3dpZHRoKGludCk6IFRoZSB3aWR0aCBvZiB0aGUgYmFy
Y29kZSAodG8gYmUgb3ZlcmxhaWQpLgotICAgIGJhcmNvZGVfaGVpZ2h0KGludCk6IFRoZSBoZWln
aHQgb2YgdGhlIGJhcmNvZGUgKHRvIGJlIG92ZXJsYWlkKS4KLSAgICBiYXNlX3dpZHRoKGludCk6
IFRoZSB3aWR0aCBvZiBhIGZyYW1lIG9mIHRoZSBiYXNlIGZpbGUuCi0gICAgYmFzZV9oZWlnaHQo
aW50KTogVGhlIGhlaWdodCBvZiBhIGZyYW1lIG9mIHRoZSBiYXNlIGZpbGUuCi0gICAgYmFyY29k
ZXNfZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9mIHRoZSBZVVYgZmlsZSBjb250YWluaW5n
IHRoZSBZVVYKLSAgICAgIGJhcmNvZGVzLgotICAgIGJhc2VfZmlsZV9uYW1lKHN0cmluZyk6IFRo
ZSBuYW1lIG9mIHRoZSBiYXNlIFlVViBmaWxlLgotICAgIG91dHB1dF9maWxlX25hbWUoc3RyaW5n
KTogVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBmaWxlIHdoZXJlIHRoZSBvdmVybGFpZAotICAgICAg
dmlkZW8gd2lsbCBiZSB3cml0dGVuLgotICAiIiIKLSAgIyBDb21wb25lbnQgc2l6ZXMgPSBbWV9z
aXplcywgVV9zaXplcywgVl9zaXplc10KLSAgYmFyY29kZXNfY29tcG9uZW50X3NpemVzID0gWyhi
YXJjb2RlX3dpZHRoLCBiYXJjb2RlX2hlaWdodCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoYmFyY29kZV93aWR0aC8yLCBiYXJjb2RlX2hlaWdodC8yKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChiYXJjb2RlX3dpZHRoLzIsIGJhcmNvZGVfaGVpZ2h0LzIpXQotICBi
YXNlX2NvbXBvbmVudF9zaXplcyA9IFsoYmFzZV93aWR0aCwgYmFzZV9oZWlnaHQpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYmFzZV93aWR0aC8yLCBiYXNlX2hlaWdodC8yKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGJhc2Vfd2lkdGgvMiwgYmFzZV9oZWlnaHQvMildCi0KLSAg
YmFyY29kZXNfZmlsZSA9IG9wZW4oYmFyY29kZXNfZmlsZV9uYW1lLCAncmInKQotICBiYXNlX2Zp
bGUgPSBvcGVuKGJhc2VfZmlsZV9uYW1lLCAncmInKQotICBvdXRwdXRfZmlsZSA9IG9wZW4ob3V0
cHV0X2ZpbGVfbmFtZSwgJ3diJykKLQotICBkYXRhX2xlZnQgPSBUcnVlCi0gIHdoaWxlIGRhdGFf
bGVmdDoKLSAgICBkYXRhX2xlZnQgPSBfT3ZlcmxheUJhcmNvZGVBbmRCYXNlRnJhbWVzKGJhcmNv
ZGVzX2ZpbGUsIGJhc2VfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dF9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFyY29kZXNfY29tcG9uZW50X3NpemVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9jb21wb25lbnRfc2l6ZXMpCi0KLSAgYmFy
Y29kZXNfZmlsZS5jbG9zZSgpCi0gIGJhc2VfZmlsZS5jbG9zZSgpCi0gIG91dHB1dF9maWxlLmNs
b3NlKCkKLQotCi1kZWYgQ2FsY3VsYXRlRnJhbWVzTnVtYmVyRnJvbVl1dih5dXZfd2lkdGgsIHl1
dl9oZWlnaHQsIGZpbGVfbmFtZSk6Ci0gICIiIkNhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiBmcmFt
ZXMgb2YgYSBZVVYgdmlkZW8uCi0KLSAgQXJnczoKLSAgICB5dXZfd2lkdGgoaW50KTogV2lkdGgg
b2YgYSBmcmFtZSBvZiB0aGUgeXV2IGZpbGUuCi0gICAgeXV2X2hlaWdodChpbnQpOiBIZWlnaHQg
b2YgYSBmcmFtZSBvZiB0aGUgWVVWIGZpbGUuCi0gICAgZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBu
YW1lIG9mIHRoZSBZVVYgZmlsZS4KLSAgUmV0dXJuOgotICAgIChpbnQpOiBUaGUgbnVtYmVyIG9m
IGZyYW1lcyBpbiB0aGUgWVVWIGZpbGUuCi0gICIiIgotICBmaWxlX3NpemUgPSBvcy5wYXRoLmdl
dHNpemUoZmlsZV9uYW1lKQotCi0gIHlfcGxhbmVfc2l6ZSA9IHl1dl93aWR0aCAqIHl1dl9oZWln
aHQKLSAgdV9wbGFuZV9zaXplID0gKHl1dl93aWR0aC8yKSAqICh5dXZfaGVpZ2h0LzIpICAjIEVx
dWFscyB0byBWIHBsYW5lIHNpemUgdG9vCi0gIGZyYW1lX3NpemUgPSB5X3BsYW5lX3NpemUgKyAo
MiAqIHVfcGxhbmVfc2l6ZSkKLSAgcmV0dXJuIGludChmaWxlX3NpemUvZnJhbWVfc2l6ZSkgICMg
U2hvdWxkIGJlIGludCBhbnl3YXkKLQotCi1kZWYgX0Zvcm1KYXJzU3RyaW5nKHBhdGhfdG9fenhp
bmcpOgotICAiIiJGb3JtcyB0aGUgdGhlIFp4aW5nIGNvcmUgYW5kIGphdmFzZSBqYXJzIGFyZ3Vt
ZW50LgotCi0gIEFyZ3M6Ci0gICAgcGF0aF90b196eGluZyhzdHJpbmcpOiBUaGUgcGF0aCB0byB0
aGUgWnhpbmcgY2hlY2tvdXQgZm9sZGVyLgotICBSZXR1cm46Ci0gICAgKHN0cmluZyk6IFRoZSBu
ZXdseSBmb3JtZWQgamFycyBhcmd1bWVudC4KLSAgIiIiCi0gIGphdmFzZV9qYXIgPSBvcy5wYXRo
LmpvaW4ocGF0aF90b196eGluZywgImphdmFzZSIsICJqYXZhc2UuamFyIikKLSAgY29yZV9qYXIg
PSBvcy5wYXRoLmpvaW4ocGF0aF90b196eGluZywgImNvcmUiLCAiY29yZS5qYXIiKQotICBkZWxp
bWl0ZXIgPSAnOicKLSAgaWYgb3MubmFtZSAhPSAncG9zaXgnOgotICAgIGRlbGltaXRlciA9ICc7
JwotICByZXR1cm4gamF2YXNlX2phciArIGRlbGltaXRlciArIGNvcmVfamFyCi0KLWRlZiBfUGFy
c2VBcmdzKCk6Ci0gICIiIlJlZ2lzdGVycyB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMuIiIiCi0g
IHVzYWdlID0gInVzYWdlOiAlcHJvZyBbb3B0aW9uc10iCi0gIHBhcnNlciA9IG9wdHBhcnNlLk9w
dGlvblBhcnNlcih1c2FnZT11c2FnZSkKLQotICBwYXJzZXIuYWRkX29wdGlvbignLS1iYXJjb2Rl
X3dpZHRoJywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1fREVGQVVM
VF9CQVJDT0RFX1dJRFRILAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnV2lkdGggb2YgdGhl
IGJhcmNvZGVzIHRvIGJlIG92ZXJsYWlkIG9uIHRvcCBvZiB0aGUnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICcgYmFzZSBmaWxlLiBEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBwYXJzZXIuYWRk
X29wdGlvbignLS1iYXJjb2RlX2hlaWdodCcsIHR5cGU9J2ludCcsIGRlZmF1bHQ9MzIsCi0gICAg
ICAgICAgICAgICAgICAgIGhlbHA9KCdIZWlnaHQgb2YgdGhlIGJhcmNvZGVzIHRvIGJlIG92ZXJs
YWlkIG9uIHRvcCBvZiB0aGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcgYmFzZSBmaWxl
LiBEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBwYXJzZXIuYWRkX29wdGlvbignLS1iYXNlX2ZyYW1l
X3dpZHRoJywgdHlwZT0naW50JywgZGVmYXVsdD0zNTIsCi0gICAgICAgICAgICAgICAgICAgIGhl
bHA9KCdXaWR0aCBvZiB0aGUgYmFzZSBZVVYgZmlsZVwncyBmcmFtZXMuICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9u
KCctLWJhc2VfZnJhbWVfaGVpZ2h0JywgdHlwZT0naW50JywgZGVmYXVsdD0yODgsCi0gICAgICAg
ICAgICAgICAgICAgIGhlbHA9KCdIZWlnaHQgb2YgdGhlIHRvcCBZVVYgZmlsZVwncyBmcmFtZXMu
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBh
cnNlci5hZGRfb3B0aW9uKCctLWJhcmNvZGVzX3l1dicsIHR5cGU9J3N0cmluZycsCi0gICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfQkFSQ09ERVNfRklMRSwKLSAgICAgICAgICAg
ICAgICAgICAgaGVscD0oJ1RoZSBZVVYgZmlsZSB3aXRoIHRoZSBiYXJjb2RlcyBpbiBZVVYuICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNl
ci5hZGRfb3B0aW9uKCctLWJhc2VfeXV2JywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nYmFzZS55
dXYnLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnVGhlIGJhc2UgWVVWIGZpbGUgdG8gYmUg
b3ZlcmxhaWQuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0
JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLW91dHB1dF95dXYnLCB0eXBlPSdzdHJpbmcnLCBk
ZWZhdWx0PSdvdXRwdXQueXV2JywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1RoZSBvdXRw
dXQgWVVWIGZpbGUgY29udGFpbmluZyB0aGUgYmFzZSBvdmVybGFpZCcKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyB3aXRoIHRoZSBiYXJjb2Rlcy4gRGVmYXVsdDogJWRlZmF1bHQnKSkKLSAg
cGFyc2VyLmFkZF9vcHRpb24oJy0tcG5nX2JhcmNvZGVzX291dHB1dF9kaXInLCB0eXBlPSdzdHJp
bmcnLCBkZWZhdWx0PScuJywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ091dHB1dCBkaXJl
Y3Rvcnkgd2hlcmUgdGhlIFBORyBiYXJjb2RlcyB3aWxsIGJlICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2dlbmVyYXRlZC4gRGVmYXVsdDogJWRlZmF1bHQnKSkKLSAgcGFyc2VyLmFkZF9v
cHRpb24oJy0tcG5nX2JhcmNvZGVzX2lucHV0X2RpcicsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9
Jy4nLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnSW5wdXQgZGlyZWN0b3J5IGZyb20gd2hl
cmUgdGhlIFBORyBiYXJjb2RlcyB3aWxsIGJlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
J3JlYWQuIERlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLXl1dl9i
YXJjb2Rlc19vdXRwdXRfZGlyJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nLicsCi0gICAgICAg
ICAgICAgICAgICAgIGhlbHA9KCdPdXRwdXQgZGlyZWN0b3J5IHdoZXJlIHRoZSBZVVYgYmFyY29k
ZXMgd2lsbCBiZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQuIERlZmF1
bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLXl1dl9mcmFtZXNfaW5wdXRf
ZGlyJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nLicsCi0gICAgICAgICAgICAgICAgICAgIGhl
bHA9KCdJbnB1dCBkaXJlY3RvcnkgZnJvbSB3aGVyZSB0aGUgWVVWIHdpbGwgYmUgJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAncmVhZCBiZWZvcmUgY29tYmluYXRpb24uIERlZmF1bHQ6ICVk
ZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLXp4aW5nX2RpcicsIHR5cGU9J3N0cmlu
ZycsIGRlZmF1bHQ9J3p4aW5nJywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1BhdGggdG8g
dGhlIFp4aW5nIGJhcmNvZGVzIGxpYnJhcnkuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
J0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygpWzBd
Ci0gIHJldHVybiBvcHRpb25zCi0KLQotZGVmIG1haW4oKToKLSAgIiIiVGhlIG1haW4gZnVuY3Rp
b24uCi0KLSAgQSBzaW1wbGUgaW52b2NhdGlvbiB3aWxsIGJlOgotICAuL3dlYnJ0Yy9ydGNfdG9v
bHMvYmFyY29kZV90b29scy9iYXJjb2RlX2VuY29kZXIucHkgLS1iYXJjb2RlX2hlaWdodD0zMgot
ICAtLWJhc2VfZnJhbWVfd2lkdGg9MzUyIC0tYmFzZV9mcmFtZV9oZWlnaHQ9Mjg4Ci0gIC0tYmFz
ZV95dXY9PHBhdGhfYW5kX25hbWVfb2ZfYmFzZV9maWxlPgotICAtLW91dHB1dF95dXY9PHBhdGgg
YW5kIG5hbWVfb2Zfb3V0cHV0X2ZpbGU+Ci0gICIiIgotICBvcHRpb25zID0gX1BhcnNlQXJncygp
Ci0gICMgVGhlIGJhcmNvZGVzIHdpdGggd2lsbCBiZSBkaWZmZXJlbnQgdGhhbiB0aGUgYmFzZSBm
cmFtZSB3aWR0aCBvbmx5IGlmCi0gICMgZXhwbGljaXRseSBzcGVjaWZpZWQgYXQgdGhlIGNvbW1h
bmQgbGluZS4KLSAgaWYgb3B0aW9ucy5iYXJjb2RlX3dpZHRoID09IF9ERUZBVUxUX0JBUkNPREVf
V0lEVEg6Ci0gICAgb3B0aW9ucy5iYXJjb2RlX3dpZHRoID0gb3B0aW9ucy5iYXNlX2ZyYW1lX3dp
ZHRoCi0gICMgSWYgdGhlIHVzZXIgcHJvdmlkZXMgYSB2YWx1ZSBmb3IgdGhlIGJhcmNvZGVzIFlV
ViB2aWRlbyBmaWxlLCB3ZSB3aWxsIGtlZXAKLSAgIyBpdC4gT3RoZXJ3aXNlIHdlIGNyZWF0ZSBh
IHRlbXAgZmlsZSB3aGljaCBpcyByZW1vdmVkIGFmdGVyIGl0IGhhcyBiZWVuIHVzZWQuCi0gIGtl
ZXBfYmFyY29kZXNfeXV2X2ZpbGUgPSBGYWxzZQotICBpZiBvcHRpb25zLmJhcmNvZGVzX3l1diAh
PSBfREVGQVVMVF9CQVJDT0RFU19GSUxFOgotICAgIGtlZXBfYmFyY29kZXNfeXV2X2ZpbGUgPSBU
cnVlCi0KLSAgIyBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBiYXJjb2RlcyAtIGl0IGlzIGVxdWFs
IHRvIHRoZSBudW1iZXIgb2YgZnJhbWVzIGluCi0gICMgdGhlIGJhc2UgZmlsZS4KLSAgbnVtYmVy
X29mX2JhcmNvZGVzID0gQ2FsY3VsYXRlRnJhbWVzTnVtYmVyRnJvbVl1digKLSAgICAgIG9wdGlv
bnMuYmFzZV9mcmFtZV93aWR0aCwgb3B0aW9ucy5iYXNlX2ZyYW1lX2hlaWdodCwgb3B0aW9ucy5i
YXNlX3l1dikKLQotICBzY3JpcHRfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0
aChzeXMuYXJndlswXSkpCi0gIHp4aW5nX2RpciA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAn
dGhpcmRfcGFydHknLCAnenhpbmcnKQotICAjIEdlbmVyYXRlIGJhcmNvZGVzIC0gd2lsbCBnZW5l
cmF0ZSB0aGVtIGluIFBORy4KLSAgR2VuZXJhdGVVcGNhQmFyY29kZXMobnVtYmVyX29mX2JhcmNv
ZGVzLCBvcHRpb25zLmJhcmNvZGVfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bnMuYmFyY29kZV9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9kaXJlY3Rv
cnk9b3B0aW9ucy5wbmdfYmFyY29kZXNfb3V0cHV0X2RpciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgcGF0aF90b196eGluZz16eGluZ19kaXIpCi0gICMgQ29udmVydCB0aGUgUE5HIGJhcmNvZGVz
IHRvIHRvIFlVViBmb3JtYXQuCi0gIENvbnZlcnRQbmdUb1l1dkJhcmNvZGVzKG9wdGlvbnMucG5n
X2JhcmNvZGVzX2lucHV0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy55
dXZfYmFyY29kZXNfb3V0cHV0X2RpcikKLSAgIyBDb21iaW5lIHRoZSBZVVYgYmFyY29kZXMgaW50
byBvbmUgWVVWIGZpbGUuCi0gIENvbWJpbmVZdXZGcmFtZXNJbnRvT25lRmlsZShvcHRpb25zLmJh
cmNvZGVzX3l1diwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2RpcmVjdG9y
eT1vcHRpb25zLnl1dl9mcmFtZXNfaW5wdXRfZGlyKQotICAjIE92ZXJsYXkgdGhlIGJhcmNvZGVz
IG92ZXIgdGhlIGJhc2UgZmlsZS4KLSAgT3ZlcmxheVl1dkZpbGVzKG9wdGlvbnMuYmFyY29kZV93
aWR0aCwgb3B0aW9ucy5iYXJjb2RlX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgIG9wdGlvbnMu
YmFzZV9mcmFtZV93aWR0aCwgb3B0aW9ucy5iYXNlX2ZyYW1lX2hlaWdodCwKLSAgICAgICAgICAg
ICAgICAgIG9wdGlvbnMuYmFyY29kZXNfeXV2LCBvcHRpb25zLmJhc2VfeXV2LCBvcHRpb25zLm91
dHB1dF95dXYpCi0KLSAgaWYgbm90IGtlZXBfYmFyY29kZXNfeXV2X2ZpbGU6Ci0gICAgIyBSZW1v
dmUgdGhlIHRlbXBvcmFyeSBiYXJjb2RlcyBZVVYgZmlsZQotICAgIG9zLnJlbW92ZShvcHRpb25z
LmJhcmNvZGVzX3l1dikKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBzeXMuZXhp
dChtYWluKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9idWlsZF96eGluZy5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xz
L2J1aWxkX3p4aW5nLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjY5NmE3OGMy
YzM2ZmQxMjNhOWZjMTI1MzFkYzM0YzJlZDBlOWQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL2J1aWxkX3p4aW5nLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNDQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAo
YykgMjAxMiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQotIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKLSMgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0jIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotCi1pbXBvcnQgb3MK
LWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi0KLQotZGVmIFJ1bkFudEJ1aWxkQ29tbWFu
ZChwYXRoX3RvX2FudF9idWlsZF9maWxlKToKLSAgIiIiVHJpZXMgdG8gYnVpbGQgdGhlIHBhc3Nl
ZCBidWlsZCBmaWxlIHdpdGggYW50LiIiIgotICBhbnRfZXhlY3V0YWJsZSA9ICdhbnQnCi0gIGlm
IHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgIGlmIG9zLmdldGVudignQU5UX0hPTUUnKToK
LSAgICAgIGFudF9leGVjdXRhYmxlID0gb3MucGF0aC5qb2luKG9zLmdldGVudignQU5UX0hPTUUn
KSwgJ2JpbicsICdhbnQuYmF0JykKLSAgICBlbHNlOgotICAgICAgYW50X2V4ZWN1dGFibGUgPSAn
YW50LmJhdCcKLSAgY21kID0gW2FudF9leGVjdXRhYmxlLCAnLWJ1aWxkZmlsZScsIHBhdGhfdG9f
YW50X2J1aWxkX2ZpbGVdCi0gIHRyeToKLSAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihj
bWQsIHN0ZG91dD1zeXMuc3Rkb3V0LCBzdGRlcnI9c3lzLnN0ZGVycikKLSAgICBwcm9jZXNzLndh
aXQoKQotICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgotICAgICAgcHJpbnQgPj4gc3lz
LnN0ZGVyciwgJ0ZhaWxlZCB0byBleGVjdXRlOiAlcycgJSAnICcuam9pbihjbWQpCi0gICAgcmV0
dXJuIHByb2Nlc3MucmV0dXJuY29kZQotICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNz
RXJyb3IgYXMgZToKLSAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnRmFpbGVkIHRvIGV4ZWN1dGU6
ICVzLlxuQ2F1c2U6ICVzJyAlICgnICcuam9pbihjbWQpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUpCi0gICAgcmV0dXJu
IC0xCi0KLWRlZiBtYWluKCk6Ci0gIGNvcmVfYnVpbGQgPSBvcy5wYXRoLmpvaW4oJ3RoaXJkX3Bh
cnR5JywgJ3p4aW5nJywgJ2NvcmUnLCAnYnVpbGQueG1sJykKLSAgUnVuQW50QnVpbGRDb21tYW5k
KGNvcmVfYnVpbGQpCi0KLSAgamF2YXNlX2J1aWxkID0gb3MucGF0aC5qb2luKCd0aGlyZF9wYXJ0
eScsICd6eGluZycsICdqYXZhc2UnLCAnYnVpbGQueG1sJykKLSAgcmV0dXJuIFJ1bkFudEJ1aWxk
Q29tbWFuZChqYXZhc2VfYnVpbGQpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAg
c3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvaGVscGVyX2Z1bmN0aW9ucy5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9i
YXJjb2RlX3Rvb2xzL2hlbHBlcl9mdW5jdGlvbnMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUyNzMyMmY0MWY5MjY3MGI3MTFhZTVmOGE4YTdiNjA3MWUxNDA3YzMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvaGVscGVyX2Z1
bmN0aW9ucy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0jIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotIyB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0j
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCi0KLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKLWltcG9ydCBvcwotaW1wb3J0IHN1
YnByb2Nlc3MKLWltcG9ydCBzeXMKLQotX0RFRkFVTFRfUEFERElORyA9IDQKLQotCi1jbGFzcyBI
ZWxwZXJFcnJvcihFeGNlcHRpb24pOgotICAiIiJFeGNlcHRpb24gcmFpc2VkIGZvciBlcnJvcnMg
aW4gdGhlIGhlbHBlci4iIiIKLSAgcGFzcwotCi0KLWRlZiBaZXJvUGFkKG51bWJlciwgcGFkZGlu
Zz1fREVGQVVMVF9QQURESU5HKToKLSAgIiIiQ29udmVydHMgYW4gaW50IGludG8gYSB6ZXJvIHBh
ZGRlZCBzdHJpbmcuCi0KLSAgQXJnczoKLSAgICBudW1iZXIoaW50KTogVGhlIG51bWJlciB0byBj
b252ZXJ0LgotICAgIHBhZGRpbmcoaW50KTogVGhlIG51bWJlciBvZiBjaGFycyBpbiB0aGUgb3V0
cHV0LiBOb3RlIHRoYXQgaWYgeW91IHBhc3MgZm9yCi0gICAgICBleGFtcGxlIG51bWJlcj0yMzQ1
NiBhbmQgcGFkZGluZz00LCB0aGUgb3V0cHV0IHdpbGwgc3RpbGwgYmUgJzIzNDU2JywKLSAgICAg
IGkuZS4gaXQgd2lsbCBub3QgYmUgY3JvcHBlZC4gSWYgeW91IHBhc3MgbnVtYmVyPTIgYW5kIHBh
ZGRpbmc9NCwgdGhlCi0gICAgICByZXR1cm4gdmFsdWUgd2lsbCBiZSAnMDAwMicuCi0gIFJldHVy
bjoKLSAgICAoc3RyaW5nKTogVGhlIHplcm8gcGFkZGVkIG51bWJlciBjb252ZXJ0ZWQgdG8gc3Ry
aW5nLgotICAiIiIKLSAgcmV0dXJuIHN0cihudW1iZXIpLnpmaWxsKHBhZGRpbmcpCi0KLQotZGVm
IFJ1blNoZWxsQ29tbWFuZChjbWRfbGlzdCwgZmFpbF9tc2c9Tm9uZSk6Ci0gICIiIkV4ZWN1dGVz
IGEgY29tbWFuZC4KLQotICBBcmdzOgotICAgIGNtZF9saXN0KGxpc3QpOiBDb21tYW5kIGxpc3Qg
dG8gZXhlY3V0ZS4KLSAgICBmYWlsX21zZyhzdHJpbmcpOiBNZXNzYWdlIGRlc2NyaWJpbmcgdGhl
IGVycm9yIGluIGNhc2UgdGhlIGNvbW1hbmQgZmFpbHMuCi0KLSAgUmV0dXJuOgotICAgIChzdHJp
bmcpOiBUaGUgc3RhbmRhcmQgb3V0cHV0IGZyb20gcnVubmluZyB0aGUgY29tbWFuZC4KLQotICBS
YWlzZToKLSAgICBIZWxwZXJFcnJvcjogSWYgY29tbWFuZCBmYWlscy4KLSAgIiIiCi0gIHByb2Nl
c3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZF9saXN0LCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICBv
dXRwdXQsIGVycm9yID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gIGlmIHByb2Nlc3MucmV0dXJu
Y29kZSAhPSAwOgotICAgIGlmIGZhaWxfbXNnOgotICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwg
ZmFpbF9tc2cKLSAgICByYWlzZSBIZWxwZXJFcnJvcignRmFpbGVkIHRvIHJ1biAlczogY29tbWFu
ZCByZXR1cm5lZCAlZCBhbmQgcHJpbnRlZCAnCi0gICAgICAgICAgICAgICAgICAgICAgJyVzIGFu
ZCAlcycgJSAoJyAnLmpvaW4oY21kX2xpc3QpLCBwcm9jZXNzLnJldHVybmNvZGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LCBlcnJvcikpCi0gIHJldHVybiBv
dXRwdXQuc3RyaXAoKQotCi0KLWRlZiBQZXJmb3JtQWN0aW9uT25BbGxGaWxlcyhkaXJlY3Rvcnks
IGZpbGVfcGF0dGVybiwgZmlsZV9leHRlbnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhcnRfbnVtYmVyLCBhY3Rpb24sICoqa3dhcmdzKToKLSAgIiIiRnVuY3Rpb24gdGhhdCBw
ZXJmb3JtcyBhIGdpdmVuIGFjdGlvbiBvbiBhbGwgZmlsZXMgbWF0Y2hpbmcgYSBwYXR0ZXJuLgot
Ci0gIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgZmlsZXMgYXJlIG5hbWVkIGZpbGVfcGF0dGVybnh4
eHguZmlsZV9leHRlbnNpb24sIHdoZXJlCi0gIHh4eHggYXJlIGRpZ2l0cyBzdGFydGluZyBmcm9t
IHN0YXJ0X251bWJlci4KLQotICBBcmdzOgotICAgIGRpcmVjdG9yeShzdHJpbmcpOiBUaGUgZGly
ZWN0b3J5IHdoZXJlIHRoZSBmaWxlcyBsaXZlLgotICAgIGZpbGVfcGF0dGVybihzdHJpbmcpOiBU
aGUgbmFtZSBwYXR0ZXJuIG9mIHRoZSBmaWxlcy4KLSAgICBmaWxlX2V4dGVuc2lvbihzdHJpbmcp
OiBUaGUgZmlsZXMnIGV4dGVuc2lvbi4KLSAgICBzdGFydF9udW1iZXIoaW50KTogRnJvbSB3aGVy
ZSB0byBzdGFydCB0byBjb3VudCBmcmFtZXMuCi0gICAgYWN0aW9uKGZ1bmN0aW9uKTogVGhlIGFj
dGlvbiB0byBiZSBwZXJmb3JtZWQgb3ZlciB0aGUgZmlsZXMuIE11c3QgcmV0dXJuCi0gICAgICAg
IEZhbHNlIGlmIHRoZSBhY3Rpb24gZmFpbGVkLCBUcnVlIG90aGVyd2lzZS4gSXQgc2hvdWxkIHRh
a2UgYSBmaWxlIG5hbWUKLSAgICAgICAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCAqKmt3YXJn
cyBhcyBhcmd1bWVudHMuIFRoZSBmdW5jdGlvbiBtdXN0IGJlCi0gICAgICAgIHBvc3NpYmxlIHRv
IHBpY2tsZSwgc28gaXQgY2Fubm90IGJlIGEgYm91bmQgZnVuY3Rpb24gKGZvciBpbnN0YW5jZSku
Ci0KLSAgUmV0dXJuOgotICAgIChib29sKTogV2hldGhlciBwZXJmb3JtaW5nIHRoZSBhY3Rpb24g
b3ZlciBhbGwgZmlsZXMgd2FzIHN1Y2Nlc3NmdWwgb3Igbm90LgotICAiIiIKLSAgZmlsZV9wcmVm
aXggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBmaWxlX3BhdHRlcm4pCi0gIGZpbGVfbnVtYmVy
ID0gc3RhcnRfbnVtYmVyCi0KLSAgcHJvY2Vzc19wb29sID0gbXVsdGlwcm9jZXNzaW5nLlBvb2wo
cHJvY2Vzc2VzPW11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKSkKLSAgcmVzdWx0cyA9IFtdCi0g
IHdoaWxlIFRydWU6Ci0gICAgemVyb19wYWRkZWRfZmlsZV9udW1iZXIgPSBaZXJvUGFkKGZpbGVf
bnVtYmVyKQotICAgIGZpbGVfbmFtZSA9IGZpbGVfcHJlZml4ICsgemVyb19wYWRkZWRfZmlsZV9u
dW1iZXIgKyAnLicgKyBmaWxlX2V4dGVuc2lvbgotICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShm
aWxlX25hbWUpOgotICAgICAgYnJlYWsKLSAgICBmdXR1cmUgPSBwcm9jZXNzX3Bvb2wuYXBwbHlf
YXN5bmMoYWN0aW9uLCBhcmdzPShmaWxlX25hbWUsKSwga3dkcz1rd2FyZ3MpCi0gICAgcmVzdWx0
cy5hcHBlbmQoZnV0dXJlKQotICAgIGZpbGVfbnVtYmVyICs9IDEKLQotICBzdWNjZXNzZnVsID0g
VHJ1ZQotICBmb3IgcmVzdWx0IGluIHJlc3VsdHM6Ci0gICAgaWYgbm90IHJlc3VsdC5nZXQoKToK
LSAgICAgIHByaW50ICJBdCBsZWFzdCBvbmUgYWN0aW9uICVzIGZhaWxlZCBmb3IgZmlsZXMgJXN4
eHh4LiVzLiIgJSAoCi0gICAgICAgICAgYWN0aW9uLCBmaWxlX3BhdHRlcm4sIGZpbGVfZXh0ZW5z
aW9uKQotICAgICAgc3VjY2Vzc2Z1bCA9IEZhbHNlCi0KLSAgcHJvY2Vzc19wb29sLmNsb3NlKCkK
LSAgcmV0dXJuIHN1Y2Nlc3NmdWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL3l1dl9jcm9wcGVyLnB5
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2Jh
cmNvZGVfdG9vbHMveXV2X2Nyb3BwZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDYwOWYwN2RjOWNjN2FkOTBlYzJkNDI5MTY3ZjkyYjUzYTc4MmNmM2EuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMveXV2X2Nyb3BwZXIucHkK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0j
IENvcHlyaWdodCAoYykgMjAxMiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQotIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSMgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotIyBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0jIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
Ci1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi0KLWRlZiBfQ3JvcE9u
ZUZyYW1lKHl1dl9maWxlLCBvdXRwdXRfZmlsZSwgY29tcG9uZW50X3NpemVzKToKLSAgIiIiQ3Jv
cHMgb25lIGZyYW1lLgotCi0gIFRoaXMgZnVuY3Rpb24gY3JvcHMgb25lIGZyYW1lIGdvaW5nIHRo
cm91Z2ggYWxsIHRoZSBZVVYgcGxhbmVzIGFuZCBjcm9wcGluZwotICByZXNwZWN0aXZlIGFtb3Vu
dCBvZiByb3dzLgotCi0gIEFyZ3M6Ci0gICAgeXV2X2ZpbGUoZmlsZSk6IFRoZSBvcGVuZWQgKGZv
ciBiaW5hcnkgcmVhZGluZykgWVVWIGZpbGUuCi0gICAgb3V0cHV0X2ZpbGUoZmlsZSk6IFRoZSBv
cGVuZWQgKGZvciBiaW5hcnkgd3JpdGluZykgZmlsZS4KLSAgICBjb21wb25lbnRfc2l6ZXMobGlz
dCBvZiAzIDMtcGxlcyk6IFRoZSBsaXN0IGNvbnRhaW5zIHRoZSBzaXplcyBmb3IgYWxsIHRoZQot
ICAgICAgcGxhbmVzIChZLCBVLCBWKSBvZiB0aGUgWVVWIGZpbGUgcGx1cyB0aGUgY3JvcF9oZWln
aHQgc2NhbGVkIGZvciBldmVyeQotICAgICAgcGxhbmUuIFRoZSBzaXplcyBlcXVhbCB3aWR0aCwg
aGVpZ2h0IGFuZCBjcm9wX2hlaWdodCBmb3IgdGhlIFkgcGxhbmUsCi0gICAgICBhbmQgYXJlIGVx
dWFsIHRvIHdpZHRoLzIsIGhlaWdodC8yIGFuZCBjcm9wX2hlaWdodC8yIGZvciB0aGUgVSBhbmQg
VgotICAgICAgcGxhbmVzLgotICBSZXR1cm46Ci0gICAgKGJvb2wpOiBUcnVlIGlmIHRoZXJlIGFy
ZSBtb3JlIGZyYW1lcyB0byBjcm9wLCBGYWxzZSBvdGhlcndpc2UuCi0gICIiIgotICBmb3IgY29t
cF93aWR0aCwgY29tcF9oZWlnaHQsIGNvbXBfY3JvcF9oZWlnaHQgaW4gY29tcG9uZW50X3NpemVz
OgotICAgIGZvciByb3cgaW4gcmFuZ2UoY29tcF9oZWlnaHQpOgotICAgICAgIyBSZWFkIHRoZSBw
bGFuZSBkYXRhIGZvciB0aGlzIHJvdy4KLSAgICAgIHl1dl9wbGFuZSA9IHl1dl9maWxlLnJlYWQo
Y29tcF93aWR0aCkKLQotICAgICAgIyBJZiB0aGUgcGxhbmUgaXMgZW1wdHksIHdlIGhhdmUgcmVh
Y2hlZCB0aGUgZW5kIG9mIHRoZSBmaWxlLgotICAgICAgaWYgeXV2X3BsYW5lID09ICIiOgotICAg
ICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgIyBPbmx5IHdyaXRlIHRoZSBwbGFuZSBkYXRhIGZv
ciB0aGUgcm93cyBiaWdnZXIgdGhhbiBjcm9wX2hlaWdodC4KLSAgICAgIGlmIHJvdyA+PSBjb21w
X2Nyb3BfaGVpZ2h0OgotICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSh5dXZfcGxhbmUpCi0gIHJl
dHVybiBUcnVlCi0KLQotZGVmIENyb3BGcmFtZXMoeXV2X2ZpbGVfbmFtZSwgb3V0cHV0X2ZpbGVf
bmFtZSwgd2lkdGgsIGhlaWdodCwgY3JvcF9oZWlnaHQpOgotICAiIiJDcm9wcyByb3dzIG9mIHBp
eGVscyBmcm9tIHRoZSB0b3Agb2YgdGhlIFlVViBmcmFtZXMuCi0KLSAgVGhpcyBmdW5jdGlvbiBn
b2VzIHRocm91Z2ggYWxsIHRoZSBmcmFtZXMgaW4gYSB2aWRlbyBhbmQgY3JvcHMgdGhlIGNyb3Bf
aGVpZ2h0Ci0gIHRvcCBwaXhlbCByb3dzIG9mIGV2ZXJ5IGZyYW1lLgotCi0gIEFyZ3M6Ci0gICAg
eXV2X2ZpbGVfbmFtZShzdHJpbmcpOiBUaGUgbmFtZSBvZiB0aGUgWVVWIGZpbGUgdG8gYmUgY3Jv
cHBlZC4KLSAgICBvdXRwdXRfZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9mIHRoZSBvdXRw
dXQgZmlsZSB3aGVyZSB0aGUgcmVzdWx0IHdpbGwKLSAgICAgIGJlIHdyaXR0ZW4uCi0gICAgd2lk
dGgoaW50KTogVGhlIHdpZHRoIG9mIHRoZSBvcmlnaW5hbCBZVVYgZmlsZS4KLSAgICBoZWlnaHQo
aW50KTogVGhlIGhlaWdodCBvZiB0aGUgb3JpZ2luYWwgWVVWIGZpbGUuCi0gICAgY3JvcF9oZWln
aHQoaW50KTogVGhlIGhlaWdodCAodGhlIG51bWJlciBvZiBwaXhlbCByb3dzKSB0byBiZSBjcm9w
cGVkIGZyb20KLSAgICAgIHRoZSBmcmFtZXMuCi0gICIiIgotICAjIENvbXBvbmVudCBzaXplcyA9
IFtZX3NpemVzLCBVX3NpemVzLCBWX3NpemVzXS4KLSAgY29tcG9uZW50X3NpemVzID0gWyh3aWR0
aCwgaGVpZ2h0LCBjcm9wX2hlaWdodCksCi0gICAgICAgICAgICAgICAgICAgICAod2lkdGgvMiwg
aGVpZ2h0LzIsIGNyb3BfaGVpZ2h0LzIpLAotICAgICAgICAgICAgICAgICAgICAgKHdpZHRoLzIs
IGhlaWdodC8yLCBjcm9wX2hlaWdodC8yKV0KLQotICB5dXZfZmlsZSA9IG9wZW4oeXV2X2ZpbGVf
bmFtZSwgJ3JiJykKLSAgb3V0cHV0X2ZpbGUgPSBvcGVuKG91dHB1dF9maWxlX25hbWUsICd3Yicp
Ci0KLSAgZGF0YV9sZWZ0ID0gVHJ1ZQotICB3aGlsZSBkYXRhX2xlZnQ6Ci0gICAgZGF0YV9sZWZ0
ID0gX0Nyb3BPbmVGcmFtZSh5dXZfZmlsZSwgb3V0cHV0X2ZpbGUsIGNvbXBvbmVudF9zaXplcykK
LQotICB5dXZfZmlsZS5jbG9zZSgpCi0gIG91dHB1dF9maWxlLmNsb3NlKCkKLQotCi1kZWYgX1Bh
cnNlQXJncygpOgotICAiIiJSZWdpc3RlcnMgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zLiIiIgot
ICB1c2FnZSA9ICJ1c2FnZTogJXByb2cgW29wdGlvbnNdIgotICBwYXJzZXIgPSBvcHRwYXJzZS5P
cHRpb25QYXJzZXIodXNhZ2U9dXNhZ2UpCi0KLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0td2lkdGgn
LCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTM1MiwKLSAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ1dpZHRoIG9mIHRoZSBZVVYgZmlsZVwncyBmcmFtZXMuICcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5h
ZGRfb3B0aW9uKCctLWhlaWdodCcsIHR5cGU9J2ludCcsIGRlZmF1bHQ9Mjg4LAotICAgICAgICAg
ICAgICAgICAgICBoZWxwPSgnSGVpZ2h0IG9mIHRoZSBZVVYgZmlsZVwncyBmcmFtZXMuICcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5h
ZGRfb3B0aW9uKCctLWNyb3BfaGVpZ2h0JywgdHlwZT0naW50JywgZGVmYXVsdD0zMiwKLSAgICAg
ICAgICAgICAgICAgICAgaGVscD0oJ0hvdyBtdWNoIG9mIHRoZSB0b3Agb2YgdGhlIFlVViBmaWxl
IHRvIGNyb3AuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0hhcyB0byBiZSBtb2R1bGUg
b2YgMi4gRGVmYXVsdDogJWRlZmF1bHQnKSkKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0teXV2X2Zp
bGUnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnVGhlIFlVViBm
aWxlIHRvIGJlIGNyb3BwZWQuJykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLW91dHB1dF9maWxl
JywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nb3V0cHV0Lnl1dicsCi0gICAgICAgICAgICAgICAg
ICAgIGhlbHA9KCdUaGUgb3V0cHV0IFlVViBmaWxlIGNvbnRhaW5pbmcgdGhlIGNyb3BwZWQgWVVW
LiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBv
cHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKVswXQotICBpZiBub3Qgb3B0aW9ucy55dXZfZmls
ZToKLSAgICBwYXJzZXIuZXJyb3IoJ3l1dl9maWxlIGFyZ3VtZW50IG1pc3NpbmcuIFBsZWFzZSBz
cGVjaWZ5IGlucHV0IFlVViBmaWxlIScpCi0gIHJldHVybiBvcHRpb25zCi0KLQotZGVmIG1haW4o
KToKLSAgIiIiQSB0b29sIHRvIGNyb3Agcm93cyBvZiBwaXhlbHMgZnJvbSB0aGUgdG9wIHBhcnQg
b2YgYSBZVVYgZmlsZS4KLQotICBBIHNpbXBsZSBpbnZvY2F0aW9uIHdpbGwgYmU6Ci0gIC4veXV2
X2Nyb3BwZXIucHkgLS13aWR0aD02NDAgLS1oZWlnaHQ9NDgwIC0tY3JvcF9oZWlnaHQ9MzIKLSAg
LS15dXZfZmlsZT08cGF0aF9hbmRfbmFtZV9vZl95dXZfZmlsZT4KLSAgLS1vdXRwdXRfeXV2PTxw
YXRoIGFuZCBuYW1lX29mX291dHB1dF9maWxlPgotICAiIiIKLSAgb3B0aW9ucyA9IF9QYXJzZUFy
Z3MoKQotCi0gIGlmIG9zLnBhdGguZ2V0c2l6ZShvcHRpb25zLnl1dl9maWxlKSA9PSAwOgotICAg
IHN5cy5zdGRlcnIud3JpdGUoJ0Vycm9yOiBUaGUgWVVWIGZpbGUgeW91IGhhdmUgcGFzc2VkIGhh
cyBzaXplIDAuIFRoZSAnCi0gICAgICAgICAgICAgICAgICAgICAncHJvZHVjZWQgb3V0cHV0IHdp
bGwgYWxzbyBoYXZlIHNpemUgMC5cbicpCi0gICAgcmV0dXJuIC0xCi0KLSAgQ3JvcEZyYW1lcyhv
cHRpb25zLnl1dl9maWxlLCBvcHRpb25zLm91dHB1dF9maWxlLCBvcHRpb25zLndpZHRoLAotICAg
ICAgICAgICAgIG9wdGlvbnMuaGVpZ2h0LCBvcHRpb25zLmNyb3BfaGVpZ2h0KQotICByZXR1cm4g
MAotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIHN5cy5leGl0KG1haW4oKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190
b29scy9jb21wYXJlX3ZpZGVvcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y190b29scy9jb21wYXJlX3ZpZGVvcy5weQppbmRleCA3OTc5MDQzOWIxNzZk
YWFjMTkxNzI3Y2QwYzIxN2M5NDZkNTI1NzlkLi4wY2I0YTZkZGIxOTlmNTYwZjQ2N2M0ZGRkOWIy
NTUxY2Y0NDNjNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvY29tcGFyZV92aWRlb3MucHkKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2NvbXBhcmVfdmlkZW9zLnB5
CkBAIC03LDYgKzcsNyBAQAogIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CiAjIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogCitpbXBvcnQganNvbgogaW1wb3J0IG9wdHBh
cnNlCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKQEAgLTQ1LDI1ICs0NiwxNSBAQCBkZWYgX1Bh
cnNlQXJncygpOgogICBwYXJzZXIuYWRkX29wdGlvbignLS12bWFmX3Bob25lX21vZGVsJywgYWN0
aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgaGVscD0nV2hldGhlciB0byB1
c2UgcGhvbmUgbW9kZWwgaW4gVk1BRi4nKQogICBwYXJzZXIuYWRkX29wdGlvbignLS1iYXJjb2Rl
X2RlY29kZXInLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnUGF0
aCB0byB0aGUgYmFyY29kZSBkZWNvZGVyIHNjcmlwdC4gQnkgZGVmYXVsdCwgd2UgJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAnd2lsbCBhc3N1bWUgd2UgY2FuIGZpbmQgaXQgaW4gYmFyY29k
ZV90b29scy8nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxhdGl2ZSB0byB0aGlzIGRp
cmVjdG9yeS4nKSkKKyAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0RFUFJFQ0FURUQnKSkKICAg
cGFyc2VyLmFkZF9vcHRpb24oJy0tZmZtcGVnX3BhdGgnLCB0eXBlPSdzdHJpbmcnLAotICAgICAg
ICAgICAgICAgICAgICBoZWxwPSgnVGhlIHBhdGggdG8gd2hlcmUgdGhlIGZmbXBlZyBleGVjdXRh
YmxlIGlzIGxvY2F0ZWQuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lmIG9taXR0ZWQs
IGl0IHdpbGwgYmUgYXNzdW1lZCB0byBiZSBwcmVzZW50IGluIHRoZSAnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICdQQVRIIHdpdGggdGhlIG5hbWUgZmZtcGVnWy5leGVdLicpKQorICAgICAg
ICAgICAgICAgICAgICBoZWxwPSgnREVQUkVDQVRFRCcpKQogICBwYXJzZXIuYWRkX29wdGlvbign
LS16eGluZ19wYXRoJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0o
J1RoZSBwYXRoIHRvIHdoZXJlIHRoZSB6eGluZyBleGVjdXRhYmxlIGlzIGxvY2F0ZWQuICcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0lmIG9taXR0ZWQsIGl0IHdpbGwgYmUgYXNzdW1lZCB0
byBiZSBwcmVzZW50IGluIHRoZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdQQVRIIHdp
dGggdGhlIG5hbWUgenhpbmdbLmV4ZV0uJykpCisgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdE
RVBSRUNBVEVEJykpCiAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXN0YXRzX2ZpbGVfcmVmJywgdHlw
ZT0nc3RyaW5nJywgZGVmYXVsdD0nc3RhdHNfcmVmLnR4dCcsCi0gICAgICAgICAgICAgICAgICAg
IGhlbHA9KCdQYXRoIHRvIHRoZSB0ZW1wb3Jhcnkgc3RhdHMgZmlsZSB0byBiZSBjcmVhdGVkIGFu
ZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd1c2VkIGZvciB0aGUgcmVmZXJlbmNlIHZp
ZGVvIGZpbGUuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0
JykpCisgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdERVBSRUNBVEVEJykpCiAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctLXN0YXRzX2ZpbGVfdGVzdCcsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ9J3N0YXRzX3Rlc3QudHh0JywKLSAgICAgICAgICAgICAgICAgICAg
aGVscD0oJ1BhdGggdG8gdGhlIHRlbXBvcmFyeSBzdGF0cyBmaWxlIHRvIGJlIGNyZWF0ZWQgYW5k
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZWQgZm9yIHRoZSB0ZXN0IHZpZGVvIGZp
bGUuIERlZmF1bHQ6ICVkZWZhdWx0JykpCisgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdERVBS
RUNBVEVEJykpCiAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXN0YXRzX2ZpbGUnLCB0eXBlPSdzdHJp
bmcnLAogICAgICAgICAgICAgICAgICAgICBoZWxwPSgnREVQUkVDQVRFRCcpKQogICBwYXJzZXIu
YWRkX29wdGlvbignLS15dXZfZnJhbWVfd2lkdGgnLCB0eXBlPSdpbnQnLCBkZWZhdWx0PTY0MCwK
QEAgLTc0LDExICs2NSw2IEBAIGRlZiBfUGFyc2VBcmdzKCk6CiAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J1doZXJlIHRvIHN0b3JlIHBlcmYgcmVzdWx0cyBpbiBjaGFydGpzb24gZm9ybWF0Licp
CiAgIG9wdGlvbnMsIF8gPSBwYXJzZXIucGFyc2VfYXJncygpCiAKLSAgaWYgb3B0aW9ucy5zdGF0
c19maWxlOgotICAgIG9wdGlvbnMuc3RhdHNfZmlsZV90ZXN0ID0gb3B0aW9ucy5zdGF0c19maWxl
Ci0gICAgcHJpbnQgKCdXQVJOSU5HOiBVc2luZyBkZXByZWNhdGVkIHN3aXRjaCAtLXN0YXRzX2Zp
bGUuICcKLSAgICAgICAgICAgJ1RoZSBuZXcgZmxhZyBpcyAtLXN0YXRzX2ZpbGVfdGVzdC4nKQot
CiAgIGlmIG5vdCBvcHRpb25zLnJlZl92aWRlbzoKICAgICBwYXJzZXIuZXJyb3IoJ1lvdSBtdXN0
IHByb3ZpZGUgYSBwYXRoIHRvIHRoZSByZWZlcmVuY2UgdmlkZW8hJykKICAgaWYgbm90IG9zLnBh
dGguZXhpc3RzKG9wdGlvbnMucmVmX3ZpZGVvKToKQEAgLTEwNywzNCArOTMsNiBAQCBkZWYgX0Rl
dk51bGwoKToKICAgIiIiCiAgIHJldHVybiBvcGVuKG9zLmRldm51bGwsICdyJykKIAotZGVmIERl
Y29kZUJhcmNvZGVzSW5WaWRlbyhvcHRpb25zLCBwYXRoX3RvX2RlY29kZXIsIHZpZGVvLCBzdGF0
X2ZpbGUpOgotICAjIFJ1biBiYXJjb2RlIGRlY29kZXIgb24gdGhlIHRlc3QgdmlkZW8gdG8gaWRl
bnRpZnkgZnJhbWUgbnVtYmVycy4KLSAgcG5nX3dvcmtpbmdfZGlyZWN0b3J5ID0gdGVtcGZpbGUu
bWtkdGVtcCgpCi0gIGNtZCA9IFsKLSAgICBzeXMuZXhlY3V0YWJsZSwKLSAgICBwYXRoX3RvX2Rl
Y29kZXIsCi0gICAgJy0teXV2X2ZpbGU9JXMnICUgdmlkZW8sCi0gICAgJy0teXV2X2ZyYW1lX3dp
ZHRoPSVkJyAlIG9wdGlvbnMueXV2X2ZyYW1lX3dpZHRoLAotICAgICctLXl1dl9mcmFtZV9oZWln
aHQ9JWQnICUgb3B0aW9ucy55dXZfZnJhbWVfaGVpZ2h0LAotICAgICctLXN0YXRzX2ZpbGU9JXMn
ICUgc3RhdF9maWxlLAotICAgICctLXBuZ193b3JraW5nX2Rpcj0lcycgJSBwbmdfd29ya2luZ19k
aXJlY3RvcnksCi0gIF0KLSAgaWYgb3B0aW9ucy56eGluZ19wYXRoOgotICAgIGNtZC5hcHBlbmQo
Jy0tenhpbmdfcGF0aD0lcycgJSBvcHRpb25zLnp4aW5nX3BhdGgpCi0gIGlmIG9wdGlvbnMuZmZt
cGVnX3BhdGg6Ci0gICAgY21kLmFwcGVuZCgnLS1mZm1wZWdfcGF0aD0lcycgJSBvcHRpb25zLmZm
bXBlZ19wYXRoKQotCi0KLSAgYmFyY29kZV9kZWNvZGVyID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQs
IHN0ZGluPV9EZXZOdWxsKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3Rkb3V0PXN5cy5zdGRvdXQsIHN0ZGVycj1zeXMuc3RkZXJyKQotICBiYXJjb2RlX2RlY29kZXIu
d2FpdCgpCi0KLSAgc2h1dGlsLnJtdHJlZShwbmdfd29ya2luZ19kaXJlY3RvcnkpCi0gIGlmIGJh
cmNvZGVfZGVjb2Rlci5yZXR1cm5jb2RlICE9IDA6Ci0gICAgcHJpbnQgJ0ZhaWxlZCB0byBydW4g
YmFyY29kZSBkZWNvZGVyIHNjcmlwdC4nCi0gICAgcmV0dXJuIDEKLSAgcmV0dXJuIDAKLQogCiBk
ZWYgX1J1bkZyYW1lQW5hbHl6ZXIob3B0aW9ucywgeXV2X2RpcmVjdG9yeT1Ob25lKToKICAgIiIi
UnVuIGZyYW1lIGFuYWx5emVyIHRvIGNvbXBhcmUgdGhlIHZpZGVvcyBhbmQgcHJpbnQgb3V0cHV0
LiIiIgpAQCAtMTYyLDEyICsxMjAsOSBAQCBkZWYgX1J1bkZyYW1lQW5hbHl6ZXIob3B0aW9ucywg
eXV2X2RpcmVjdG9yeT1Ob25lKToKICAgcmV0dXJuIGZyYW1lX2FuYWx5emVyLnJldHVybmNvZGUK
IAogCi1kZWYgX1J1blZtYWYob3B0aW9ucywgeXV2X2RpcmVjdG9yeSk6CitkZWYgX1J1blZtYWYo
b3B0aW9ucywgeXV2X2RpcmVjdG9yeSwgbG9nZmlsZSk6CiAgICIiIiBSdW4gVk1BRiB0byBjb21w
YXJlIHZpZGVvcyBhbmQgcHJpbnQgb3V0cHV0LgogCi0gIFRoZSBwcm92aWRlZCB2bWFmIGRpcmVj
dG9yeSBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gYSBjKysgd3JhcHBlciBleGVjdXRhYmxlCi0gIGFu
ZCBhIG1vZGVsLgotCiAgIFRoZSB5dXZfZGlyZWN0b3J5IGlzIGFzc3VtZWQgdG8gaGF2ZSBiZWVu
IHBvcHVsYXRlZCB3aXRoIGEgcmVmZXJlbmNlIGFuZCB0ZXN0CiAgIHZpZGVvIGluIC55dXYgZm9y
bWF0LCB3aXRoIG5hbWVzIGFjY29yZGluZyB0byB0aGUgbGFiZWwuCiAgICIiIgpAQCAtMTc5LDI2
ICsxMzQsMjkgQEAgZGVmIF9SdW5WbWFmKG9wdGlvbnMsIHl1dl9kaXJlY3RvcnkpOgogICAgIG9z
LnBhdGguam9pbih5dXZfZGlyZWN0b3J5LCAicmVmLnl1diIpLAogICAgIG9zLnBhdGguam9pbih5
dXZfZGlyZWN0b3J5LCAidGVzdC55dXYiKSwKICAgICBvcHRpb25zLnZtYWZfbW9kZWwsCisgICAg
Jy0tbG9nJywKKyAgICBsb2dmaWxlLAorICAgICctLWxvZy1mbXQnLAorICAgICdqc29uJywKICAg
XQogICBpZiBvcHRpb25zLnZtYWZfcGhvbmVfbW9kZWw6CiAgICAgY21kLmFwcGVuZCgnLS1waG9u
ZS1tb2RlbCcpCiAKICAgdm1hZiA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRpbj1fRGV2TnVs
bCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBz
dGRlcnI9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN5cy5z
dGRvdXQsIHN0ZGVycj1zeXMuc3RkZXJyKQogICB2bWFmLndhaXQoKQogICBpZiB2bWFmLnJldHVy
bmNvZGUgIT0gMDoKICAgICBwcmludCAnRmFpbGVkIHRvIHJ1biBWTUFGLicKICAgICByZXR1cm4g
MQotICBvdXRwdXQgPSB2bWFmLnN0ZG91dC5yZWFkKCkKLSAgIyBFeHRyYWN0IHNjb3JlIGZyb20g
Vk1BRiBvdXRwdXQuCi0gIHRyeToKLSAgICBzY29yZSA9IGZsb2F0KG91dHB1dC5zcGxpdCgnXG4n
KVsyXS5zcGxpdCgpWzNdKQotICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJyb3IpOgotICAg
IHByaW50ICdFcnJvciBpbiBWTUFGIG91dHB1dCAoZXhwZWN0ZWQgIlZNQUYgc2NvcmUgPSBbZmxv
YXRdIiBvbiBsaW5lIDMpOicKLSAgICBwcmludCBvdXRwdXQKLSAgICByZXR1cm4gMQogCi0gIHBy
aW50ICdSRVNVTFQgVm1hZjogJXM9ICVmJyAlIChvcHRpb25zLmxhYmVsLCBzY29yZSkKKyAgIyBS
ZWFkIHBlci1mcmFtZSBzY29yZXMgZnJvbSBWTUFGIG91dHB1dCBhbmQgcHJpbnQuCisgIHdpdGgg
b3Blbihsb2dmaWxlKSBhcyBmOgorICAgIHZtYWZfZGF0YSA9IGpzb24ubG9hZChmKQorICAgIHZt
YWZfc2NvcmVzID0gW10KKyAgICBmb3IgZnJhbWUgaW4gdm1hZl9kYXRhWydmcmFtZXMnXToKKyAg
ICAgIHZtYWZfc2NvcmVzLmFwcGVuZChmcmFtZVsnbWV0cmljcyddWyd2bWFmJ10pCisgICAgcHJp
bnQgJ1JFU1VMVCBWTUFGOiAlcz0nICUgb3B0aW9ucy5sYWJlbCwgdm1hZl9zY29yZXMKKwogICBy
ZXR1cm4gMAogCiAKQEAgLTIxMyw0MCArMTcxLDI0IEBAIGRlZiBtYWluKCk6CiAKICAgUnVubmlu
ZyB2bWFmIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOgogICAtLXZtYWYsIC0tdm1h
Zl9tb2RlbCwgLS15dXZfZnJhbWVfd2lkdGgsIC0teXV2X2ZyYW1lX2hlaWdodAotCi0gIE5vdGlj
ZSB0aGF0IHRoZSBwcmVyZXF1aXNpdGVzIGZvciBiYXJjb2RlX2RlY29kZXIucHkgYWxzbyBhcHBs
aWVzIHRvIHRoaXMKLSAgc2NyaXB0LiBUaGUgbWVhbnMgdGhlIGZvbGxvd2luZyBleGVjdXRhYmxl
cyBoYXZlIHRvIGJlIGF2YWlsYWJsZSBpbiB0aGUgUEFUSDoKLSAgKiB6eGluZwotICAqIGZmbXBl
ZwogICAiIiIKICAgb3B0aW9ucyA9IF9QYXJzZUFyZ3MoKQogCi0gIGlmIG9wdGlvbnMuYmFyY29k
ZV9kZWNvZGVyOgotICAgIHBhdGhfdG9fZGVjb2RlciA9IG9wdGlvbnMuYmFyY29kZV9kZWNvZGVy
Ci0gIGVsc2U6Ci0gICAgcGF0aF90b19kZWNvZGVyID0gb3MucGF0aC5qb2luKFNDUklQVF9ESVIs
ICdiYXJjb2RlX3Rvb2xzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jh
cmNvZGVfZGVjb2Rlci5weScpCi0KLSAgaWYgRGVjb2RlQmFyY29kZXNJblZpZGVvKG9wdGlvbnMs
IHBhdGhfdG9fZGVjb2RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucmVm
X3ZpZGVvLCBvcHRpb25zLnN0YXRzX2ZpbGVfcmVmKSAhPSAwOgotICAgIHJldHVybiAxCi0gIGlm
IERlY29kZUJhcmNvZGVzSW5WaWRlbyhvcHRpb25zLCBwYXRoX3RvX2RlY29kZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnRlc3RfdmlkZW8sIG9wdGlvbnMuc3RhdHNfZmls
ZV90ZXN0KSAhPSAwOgotICAgIHJldHVybiAxCi0KICAgaWYgb3B0aW9ucy52bWFmOgogICAgIHRy
eToKICAgICAgICMgRGlyZWN0b3J5IHRvIHNhdmUgdGVtcG9yYXJ5IFlVViBmaWxlcyBmb3IgVk1B
RiBpbiBmcmFtZV9hbmFseXplci4KICAgICAgIHl1dl9kaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0
ZW1wKCkKKyAgICAgIF8sIHZtYWZfbG9nZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogCiAgICAg
ICAjIFJ1biBmcmFtZSBhbmFseXplciB0byBjb21wYXJlIHRoZSB2aWRlb3MgYW5kIHByaW50IG91
dHB1dC4KICAgICAgIGlmIF9SdW5GcmFtZUFuYWx5emVyKG9wdGlvbnMsIHl1dl9kaXJlY3Rvcnk9
eXV2X2RpcmVjdG9yeSkgIT0gMDoKICAgICAgICAgcmV0dXJuIDEKIAogICAgICAgIyBSdW4gVk1B
RiBmb3IgZnVydGhlciB2aWRlbyBjb21wYXJpc29uIGFuZCBwcmludCBvdXRwdXQuCi0gICAgICBy
ZXR1cm4gX1J1blZtYWYob3B0aW9ucywgeXV2X2RpcmVjdG9yeSkKKyAgICAgIHJldHVybiBfUnVu
Vm1hZihvcHRpb25zLCB5dXZfZGlyZWN0b3J5LCB2bWFmX2xvZ2ZpbGUpCiAgICAgZmluYWxseToK
ICAgICAgIHNodXRpbC5ybXRyZWUoeXV2X2RpcmVjdG9yeSkKKyAgICAgIG9zLnJlbW92ZSh2bWFm
X2xvZ2ZpbGUpCiAgIGVsc2U6CiAgICAgcmV0dXJuIF9SdW5GcmFtZUFuYWx5emVyKG9wdGlvbnMp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9hbmFseXplci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFs
aXplci9hbmFseXplci5jYwppbmRleCA0M2NiZDY5ZmM4ZTE4Yzk0NjE3MjlkMzUyZmRhZWIwYjBk
MzE4NWU1Li4zYmRmYmYzMmEwZTFiNTE2YTU0OTc4NDUxMjQzMjUyYzA5MzRjMDE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMv
ZXZlbnRfbG9nX3Zpc3VhbGl6ZXIvYW5hbHl6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2V2ZW50X2xvZ192aXN1YWxpemVyL2Fu
YWx5emVyLmNjCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1
ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvZ29vZ19j
Y19mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9hdWRpb19yZWNlaXZlX3N0cmVhbS5oIgogI2lu
Y2x1ZGUgImNhbGwvYXVkaW9fc2VuZF9zdHJlYW0uaCIKICNpbmNsdWRlICJjYWxsL2NhbGwuaCIK
QEAgLTM2LDggKzM3LDkgQEAKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2JpdHJhdGVfZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2UuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9pbmNsdWRlL3JlY2VpdmVfc2lkZV9jb25nZXN0aW9u
X2NvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9p
bmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQuaCIKQEAgLTE3NSwxMyArMTc3LDEz
IEBAIGNvbnN0ZXhwciBmbG9hdCBrQm90dG9tTWFyZ2luID0gMC4wMmY7CiBjb25zdGV4cHIgZmxv
YXQga1RvcE1hcmdpbiA9IDAuMDVmOwogCiBhYnNsOjpvcHRpb25hbDxkb3VibGU+IE5ldHdvcmtE
ZWxheURpZmZfQWJzU2VuZFRpbWUoCi0gICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0JiBvbGRfcGFj
a2V0LAotICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldCYgbmV3X3BhY2tldCkgewotICBpZiAob2xk
X3BhY2tldC5oZWFkZXIuZXh0ZW5zaW9uLmhhc0Fic29sdXRlU2VuZFRpbWUgJiYKLSAgICAgIG5l
d19wYWNrZXQuaGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0ZVNlbmRUaW1lKSB7CisgICAgY29u
c3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIG9sZF9wYWNrZXQsCisgICAgY29uc3QgTG9nZ2Vk
UnRwUGFja2V0SW5jb21pbmcmIG5ld19wYWNrZXQpIHsKKyAgaWYgKG9sZF9wYWNrZXQucnRwLmhl
YWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5kVGltZSAmJgorICAgICAgbmV3X3BhY2tldC5y
dHAuaGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0ZVNlbmRUaW1lKSB7CiAgICAgaW50NjRfdCBz
ZW5kX3RpbWVfZGlmZiA9IFdyYXBwaW5nRGlmZmVyZW5jZSgKLSAgICAgICAgbmV3X3BhY2tldC5o
ZWFkZXIuZXh0ZW5zaW9uLmFic29sdXRlU2VuZFRpbWUsCi0gICAgICAgIG9sZF9wYWNrZXQuaGVh
ZGVyLmV4dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1lLCAxdWwgPDwgMjQpOworICAgICAgICBuZXdf
cGFja2V0LnJ0cC5oZWFkZXIuZXh0ZW5zaW9uLmFic29sdXRlU2VuZFRpbWUsCisgICAgICAgIG9s
ZF9wYWNrZXQucnRwLmhlYWRlci5leHRlbnNpb24uYWJzb2x1dGVTZW5kVGltZSwgMXVsIDw8IDI0
KTsKICAgICBpbnQ2NF90IHJlY3ZfdGltZV9kaWZmID0KICAgICAgICAgbmV3X3BhY2tldC5sb2df
dGltZV91cygpIC0gb2xkX3BhY2tldC5sb2dfdGltZV91cygpOwogICAgIGRvdWJsZSBkZWxheV9j
aGFuZ2VfdXMgPQpAQCAtMTkzLDM0ICsxOTUsMzEgQEAgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPiBO
ZXR3b3JrRGVsYXlEaWZmX0Fic1NlbmRUaW1lKAogfQogCiBhYnNsOjpvcHRpb25hbDxkb3VibGU+
IE5ldHdvcmtEZWxheURpZmZfQ2FwdHVyZVRpbWUoCi0gICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0
JiBvbGRfcGFja2V0LAotICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldCYgbmV3X3BhY2tldCkgewot
ICBpbnQ2NF90IHNlbmRfdGltZV9kaWZmID0gV3JhcHBpbmdEaWZmZXJlbmNlKAotICAgICAgbmV3
X3BhY2tldC5oZWFkZXIudGltZXN0YW1wLCBvbGRfcGFja2V0LmhlYWRlci50aW1lc3RhbXAsIDF1
bGwgPDwgMzIpOworICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBvbGRfcGFja2V0
LAorICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBuZXdfcGFja2V0LAorICAgIGNv
bnN0IGRvdWJsZSBzYW1wbGVfcmF0ZSkgeworICBpbnQ2NF90IHNlbmRfdGltZV9kaWZmID0KKyAg
ICAgIFdyYXBwaW5nRGlmZmVyZW5jZShuZXdfcGFja2V0LnJ0cC5oZWFkZXIudGltZXN0YW1wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9wYWNrZXQucnRwLmhlYWRlci50aW1lc3RhbXAs
IDF1bGwgPDwgMzIpOwogICBpbnQ2NF90IHJlY3ZfdGltZV9kaWZmID0gbmV3X3BhY2tldC5sb2df
dGltZV91cygpIC0gb2xkX3BhY2tldC5sb2dfdGltZV91cygpOwogCi0gIGNvbnN0IGRvdWJsZSBr
VmlkZW9TYW1wbGVSYXRlID0gOTAwMDA7Ci0gIC8vIFRPRE8odGVyZWxpdXMpOiBXZSB0cmVhdCBh
bGwgc3RyZWFtcyBhcyB2aWRlbyBmb3Igbm93LCBldmVuIHRob3VnaAotICAvLyBhdWRpbyBtaWdo
dCBiZSBzYW1wbGVkIGF0IGUuZy4gMTZrSHosIGJlY2F1c2UgaXQgaXMgcmVhbGx5IGRpZmZpY3Vs
dCB0bwotICAvLyBmaWd1cmUgb3V0IHRoZSB0cnVlIHNhbXBsaW5nIHJhdGUgb2YgYSBzdHJlYW0u
IFRoZSBlZmZlY3QgaXMgdGhhdCB0aGUKLSAgLy8gZGVsYXkgd2lsbCBiZSBzY2FsZWQgaW5jb3Jy
ZWN0bHkgZm9yIG5vbi12aWRlbyBzdHJlYW1zLgotCiAgIGRvdWJsZSBkZWxheV9jaGFuZ2UgPQog
ICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihyZWN2X3RpbWVfZGlmZikgLyAxMDAwIC0KLSAgICAg
IHN0YXRpY19jYXN0PGRvdWJsZT4oc2VuZF90aW1lX2RpZmYpIC8ga1ZpZGVvU2FtcGxlUmF0ZSAq
IDEwMDA7CisgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHNlbmRfdGltZV9kaWZmKSAvIHNhbXBs
ZV9yYXRlICogMTAwMDsKICAgaWYgKGRlbGF5X2NoYW5nZSA8IC0xMDAwMCB8fCAxMDAwMCA8IGRl
bGF5X2NoYW5nZSkgewogICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlZlcnkgbGFyZ2UgZGVs
YXkgY2hhbmdlLiBUaW1lc3RhbXBzIGNvcnJlY3Q/IjsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcp
IDw8ICJPbGQgY2FwdHVyZSB0aW1lICIgPDwgb2xkX3BhY2tldC5oZWFkZXIudGltZXN0YW1wCi0g
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCByZWNlaXZlZCB0aW1lICIgPDwgb2xkX3BhY2tl
dC5sb2dfdGltZV91cygpOwotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIk5ldyBjYXB0dXJl
IHRpbWUgIiA8PCBuZXdfcGFja2V0LmhlYWRlci50aW1lc3RhbXAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIsIHJlY2VpdmVkIHRpbWUgIiA8PCBuZXdfcGFja2V0LmxvZ190aW1lX3VzKCk7
CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiT2xkIGNhcHR1cmUgdGltZSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBvbGRfcGFja2V0LnJ0cC5oZWFkZXIudGltZXN0YW1wIDw8ICIs
IHJlY2VpdmVkIHRpbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgb2xkX3BhY2tldC5s
b2dfdGltZV91cygpOworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIk5ldyBjYXB0dXJlIHRp
bWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgbmV3X3BhY2tldC5ydHAuaGVhZGVyLnRp
bWVzdGFtcCA8PCAiLCByZWNlaXZlZCB0aW1lICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8
IG5ld19wYWNrZXQubG9nX3RpbWVfdXMoKTsKICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJS
ZWNlaXZlIHRpbWUgZGlmZmVyZW5jZSAiIDw8IHJlY3ZfdGltZV9kaWZmIDw8ICIgPSAiCiAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxkb3VibGU+KHJlY3ZfdGltZV9kaWZm
KSAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga051bU1pY3Jvc2Vjc1BlclNlYwog
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgInMiOwogICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIlNlbmQgdGltZSBkaWZmZXJlbmNlICIgPDwgc2VuZF90aW1lX2RpZmYgPDwgIiA9ICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGRvdWJsZT4oc2VuZF90aW1lX2Rp
ZmYpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVmlkZW9TYW1wbGVSYXRlCisg
ICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxkb3VibGU+KHNlbmRfdGltZV9k
aWZmKSAvIHNhbXBsZV9yYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAicyI7CiAgIH0K
ICAgcmV0dXJuIGRlbGF5X2NoYW5nZTsKQEAgLTI3NCw5ICsyNzMsMTAgQEAgdm9pZCBBY2N1bXVs
YXRlUGFpcnMoCiAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgZGF0YS5zaXplKCk7IGkrKykgewog
ICAgIGZsb2F0IHggPSBmeChkYXRhW2ldKTsKICAgICBhYnNsOjpvcHRpb25hbDxSZXN1bHRUeXBl
PiB5ID0gZnkoZGF0YVtpIC0gMV0sIGRhdGFbaV0pOwotICAgIGlmICh5KQorICAgIGlmICh5KSB7
CiAgICAgICBzdW0gKz0gKnk7Ci0gICAgcmVzdWx0LT5wb2ludHMuZW1wbGFjZV9iYWNrKHgsIHN0
YXRpY19jYXN0PGZsb2F0PihzdW0pKTsKKyAgICAgIHJlc3VsdC0+cG9pbnRzLmVtcGxhY2VfYmFj
ayh4LCBzdGF0aWNfY2FzdDxmbG9hdD4oc3VtKSk7CisgICAgfQogICB9CiB9CiAKQEAgLTQ4Niwx
NyArNDg2LDE1IEBAIEV2ZW50TG9nQW5hbHl6ZXI6OkV2ZW50TG9nQW5hbHl6ZXIoY29uc3QgUGFy
c2VkUnRjRXZlbnRMb2dOZXcmIGxvZywKICAgICAgICAgICAgICAgICAgICA8PCAiIChMT0dfU1RB
UlQsIExPR19FTkQpIHNlZ21lbnRzIGluIGxvZy4iOwogfQogCi1jbGFzcyBCaXRyYXRlT2JzZXJ2
ZXIgOiBwdWJsaWMgTmV0d29ya0NoYW5nZWRPYnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBSZW1vdGVCaXRyYXRlT2JzZXJ2ZXIgeworY2xhc3MgQml0cmF0ZU9ic2VydmVy
IDogcHVibGljIFJlbW90ZUJpdHJhdGVPYnNlcnZlciB7CiAgcHVibGljOgogICBCaXRyYXRlT2Jz
ZXJ2ZXIoKSA6IGxhc3RfYml0cmF0ZV9icHNfKDApLCBiaXRyYXRlX3VwZGF0ZWRfKGZhbHNlKSB7
fQogCi0gIHZvaWQgT25OZXR3b3JrQ2hhbmdlZCh1aW50MzJfdCBiaXRyYXRlX2JwcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgcnR0X21zLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBwcm9iaW5nX2ludGVydmFsX21zKSBvdmVycmlkZSB7Ci0gICAgbGFzdF9iaXRyYXRlX2Jwc18g
PSBiaXRyYXRlX2JwczsKLSAgICBiaXRyYXRlX3VwZGF0ZWRfID0gdHJ1ZTsKKyAgdm9pZCBVcGRh
dGUoTmV0d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRlKSB7CisgICAgaWYgKHVwZGF0ZS50YXJnZXRf
cmF0ZSkgeworICAgICAgbGFzdF9iaXRyYXRlX2Jwc18gPSB1cGRhdGUudGFyZ2V0X3JhdGUtPnRh
cmdldF9yYXRlLmJwcygpOworICAgICAgYml0cmF0ZV91cGRhdGVkXyA9IHRydWU7CisgICAgfQog
ICB9CiAKICAgdm9pZCBPblJlY2VpdmVCaXRyYXRlQ2hhbmdlZChjb25zdCBzdGQ6OnZlY3Rvcjx1
aW50MzJfdD4mIHNzcmNzLApAQCAtNzM3LDcxICs3MzUsNTggQEAgdm9pZCBFdmVudExvZ0FuYWx5
emVyOjpDcmVhdGVJbmNvbWluZ1BhY2tldExvc3NHcmFwaChQbG90KiBwbG90KSB7CiAgIHBsb3Qt
PlNldFRpdGxlKCJFc3RpbWF0ZWQgaW5jb21pbmcgbG9zcyByYXRlIik7CiB9CiAKLXZvaWQgRXZl
bnRMb2dBbmFseXplcjo6Q3JlYXRlSW5jb21pbmdEZWxheURlbHRhR3JhcGgoUGxvdCogcGxvdCkg
ewotICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHBhcnNlZF9sb2dfLnJ0cF9wYWNrZXRzX2J5
X3NzcmMoa0luY29taW5nUGFja2V0KSkgewordm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVJ
bmNvbWluZ0RlbGF5R3JhcGgoUGxvdCogcGxvdCkgeworICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVh
bSA6IHBhcnNlZF9sb2dfLmluY29taW5nX3J0cF9wYWNrZXRzX2J5X3NzcmMoKSkgewogICAgIC8v
IEZpbHRlciBvbiBTU1JDLgogICAgIGlmICghTWF0Y2hpbmdTc3JjKHN0cmVhbS5zc3JjLCBkZXNp
cmVkX3NzcmNfKSB8fAotICAgICAgICBJc0F1ZGlvU3NyYyhrSW5jb21pbmdQYWNrZXQsIHN0cmVh
bS5zc3JjKSB8fAotICAgICAgICAhSXNWaWRlb1NzcmMoa0luY29taW5nUGFja2V0LCBzdHJlYW0u
c3NyYykgfHwKICAgICAgICAgSXNSdHhTc3JjKGtJbmNvbWluZ1BhY2tldCwgc3RyZWFtLnNzcmMp
KSB7CiAgICAgICBjb250aW51ZTsKICAgICB9CiAKLSAgICBUaW1lU2VyaWVzIGNhcHR1cmVfdGlt
ZV9kYXRhKAotICAgICAgICBHZXRTdHJlYW1OYW1lKGtJbmNvbWluZ1BhY2tldCwgc3RyZWFtLnNz
cmMpICsgIiBjYXB0dXJlLXRpbWUiLAotICAgICAgICBMaW5lU3R5bGU6OmtCYXIpOwotICAgIGF1
dG8gVG9DYWxsVGltZSA9IFt0aGlzXShjb25zdCBMb2dnZWRSdHBQYWNrZXQmIHBhY2tldCkgewot
ICAgICAgcmV0dXJuIHRoaXMtPlRvQ2FsbFRpbWVTZWMocGFja2V0LmxvZ190aW1lX3VzKCkpOwot
ICAgIH07Ci0gICAgUHJvY2Vzc1BhaXJzPExvZ2dlZFJ0cFBhY2tldCwgZG91YmxlPigKLSAgICAg
ICAgVG9DYWxsVGltZSwgTmV0d29ya0RlbGF5RGlmZl9DYXB0dXJlVGltZSwgc3RyZWFtLnBhY2tl
dF92aWV3LAotICAgICAgICAmY2FwdHVyZV90aW1lX2RhdGEpOwotICAgIHBsb3QtPkFwcGVuZFRp
bWVTZXJpZXMoc3RkOjptb3ZlKGNhcHR1cmVfdGltZV9kYXRhKSk7Ci0KLSAgICBUaW1lU2VyaWVz
IHNlbmRfdGltZV9kYXRhKAotICAgICAgICBHZXRTdHJlYW1OYW1lKGtJbmNvbWluZ1BhY2tldCwg
c3RyZWFtLnNzcmMpICsgIiBhYnMtc2VuZC10aW1lIiwKLSAgICAgICAgTGluZVN0eWxlOjprQmFy
KTsKLSAgICBQcm9jZXNzUGFpcnM8TG9nZ2VkUnRwUGFja2V0LCBkb3VibGU+KFRvQ2FsbFRpbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXR3b3JrRGVsYXlE
aWZmX0Fic1NlbmRUaW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtLnBhY2tldF92aWV3LCAmc2VuZF90aW1lX2RhdGEpOwotICAgIHBsb3QtPkFwcGVu
ZFRpbWVTZXJpZXMoc3RkOjptb3ZlKHNlbmRfdGltZV9kYXRhKSk7Ci0gIH0KLQotICBwbG90LT5T
ZXRYQXhpcyhUb0NhbGxUaW1lU2VjKGJlZ2luX3RpbWVfKSwgY2FsbF9kdXJhdGlvbl9zXywgIlRp
bWUgKHMpIiwKLSAgICAgICAgICAgICAgICAga0xlZnRNYXJnaW4sIGtSaWdodE1hcmdpbik7Ci0g
IHBsb3QtPlNldFN1Z2dlc3RlZFlBeGlzKDAsIDEsICJMYXRlbmN5IGNoYW5nZSAobXMpIiwga0Jv
dHRvbU1hcmdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAga1RvcE1hcmdpbik7Ci0gIHBs
b3QtPlNldFRpdGxlKCJOZXR3b3JrIGxhdGVuY3kgZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbnNlY3V0
aXZlIHBhY2tldHMiKTsKLX0KLQotdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVJbmNvbWlu
Z0RlbGF5R3JhcGgoUGxvdCogcGxvdCkgewotICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHBh
cnNlZF9sb2dfLnJ0cF9wYWNrZXRzX2J5X3NzcmMoa0luY29taW5nUGFja2V0KSkgewotICAgIC8v
IEZpbHRlciBvbiBTU1JDLgotICAgIGlmICghTWF0Y2hpbmdTc3JjKHN0cmVhbS5zc3JjLCBkZXNp
cmVkX3NzcmNfKSB8fAotICAgICAgICBJc0F1ZGlvU3NyYyhrSW5jb21pbmdQYWNrZXQsIHN0cmVh
bS5zc3JjKSB8fAotICAgICAgICAhSXNWaWRlb1NzcmMoa0luY29taW5nUGFja2V0LCBzdHJlYW0u
c3NyYykgfHwKLSAgICAgICAgSXNSdHhTc3JjKGtJbmNvbWluZ1BhY2tldCwgc3RyZWFtLnNzcmMp
KSB7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8TG9nZ2VkUnRwUGFja2V0SW5jb21pbmc+JiBwYWNr
ZXRzID0KKyAgICAgICAgc3RyZWFtLmluY29taW5nX3BhY2tldHM7CisgICAgaWYgKHBhY2tldHMu
c2l6ZSgpIDwgMTAwKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJDYW4ndCBlc3Rp
bWF0ZSB0aGUgUlRQIGNsb2NrIGZyZXF1ZW5jeSB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgcGFja2V0cy5zaXplKCkgPDwgIiBwYWNrZXRzIGluIHRoZSBzdHJlYW0uIjsKKyAg
ICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBpbnQ2NF90IGVuZF90aW1lX3VzID0gbG9nX3NlZ21l
bnRzXy5lbXB0eSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1heCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IGxvZ19zZWdtZW50c18uZnJvbnQoKS5zZWNvbmQ7CisgICAgYWJzbDo6b3B0aW9uYWw8dWludDMy
X3Q+IGVzdGltYXRlZF9mcmVxdWVuY3kgPQorICAgICAgICBFc3RpbWF0ZVJ0cENsb2NrRnJlcXVl
bmN5KHBhY2tldHMsIGVuZF90aW1lX3VzKTsKKyAgICBpZiAoIWVzdGltYXRlZF9mcmVxdWVuY3kp
CisgICAgICBjb250aW51ZTsKKyAgICBjb25zdCBkb3VibGUgZnJlcXVlbmN5X2h6ID0gKmVzdGlt
YXRlZF9mcmVxdWVuY3k7CisgICAgaWYgKElzVmlkZW9Tc3JjKGtJbmNvbWluZ1BhY2tldCwgc3Ry
ZWFtLnNzcmMpICYmIGZyZXF1ZW5jeV9oeiAhPSA5MDAwMCkgeworICAgICAgUlRDX0xPRyhMU19X
QVJOSU5HKQorICAgICAgICAgIDw8ICJWaWRlbyBzdHJlYW0gc2hvdWxkIHVzZSBhIDkwIGtIeiBj
bG9jayBidXQgYXBwZWFycyB0byB1c2UgIgorICAgICAgICAgIDw8IGZyZXF1ZW5jeV9oeiAvIDEw
MDAgPDwgIi4gRGlzY2FyZGluZy4iOwogICAgICAgY29udGludWU7CiAgICAgfQogCisgICAgYXV0
byBUb0NhbGxUaW1lID0gW3RoaXNdKGNvbnN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBwYWNr
ZXQpIHsKKyAgICAgIHJldHVybiB0aGlzLT5Ub0NhbGxUaW1lU2VjKHBhY2tldC5sb2dfdGltZV91
cygpKTsKKyAgICB9OworICAgIGF1dG8gVG9OZXR3b3JrRGVsYXkgPSBbZnJlcXVlbmN5X2h6XSgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldEluY29t
aW5nJiBvbGRfcGFja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9n
Z2VkUnRwUGFja2V0SW5jb21pbmcmIG5ld19wYWNrZXQpIHsKKyAgICAgIHJldHVybiBOZXR3b3Jr
RGVsYXlEaWZmX0NhcHR1cmVUaW1lKG9sZF9wYWNrZXQsIG5ld19wYWNrZXQsIGZyZXF1ZW5jeV9o
eik7CisgICAgfTsKKwogICAgIFRpbWVTZXJpZXMgY2FwdHVyZV90aW1lX2RhdGEoCiAgICAgICAg
IEdldFN0cmVhbU5hbWUoa0luY29taW5nUGFja2V0LCBzdHJlYW0uc3NyYykgKyAiIGNhcHR1cmUt
dGltZSIsCiAgICAgICAgIExpbmVTdHlsZTo6a0xpbmUpOwotICAgIGF1dG8gVG9DYWxsVGltZSA9
IFt0aGlzXShjb25zdCBMb2dnZWRSdHBQYWNrZXQmIHBhY2tldCkgewotICAgICAgcmV0dXJuIHRo
aXMtPlRvQ2FsbFRpbWVTZWMocGFja2V0LmxvZ190aW1lX3VzKCkpOwotICAgIH07Ci0gICAgQWNj
dW11bGF0ZVBhaXJzPExvZ2dlZFJ0cFBhY2tldCwgZG91YmxlPigKLSAgICAgICAgVG9DYWxsVGlt
ZSwgTmV0d29ya0RlbGF5RGlmZl9DYXB0dXJlVGltZSwgc3RyZWFtLnBhY2tldF92aWV3LAotICAg
ICAgICAmY2FwdHVyZV90aW1lX2RhdGEpOworICAgIEFjY3VtdWxhdGVQYWlyczxMb2dnZWRSdHBQ
YWNrZXRJbmNvbWluZywgZG91YmxlPigKKyAgICAgICAgVG9DYWxsVGltZSwgVG9OZXR3b3JrRGVs
YXksIHBhY2tldHMsICZjYXB0dXJlX3RpbWVfZGF0YSk7CiAgICAgcGxvdC0+QXBwZW5kVGltZVNl
cmllcyhzdGQ6Om1vdmUoY2FwdHVyZV90aW1lX2RhdGEpKTsKIAogICAgIFRpbWVTZXJpZXMgc2Vu
ZF90aW1lX2RhdGEoCiAgICAgICAgIEdldFN0cmVhbU5hbWUoa0luY29taW5nUGFja2V0LCBzdHJl
YW0uc3NyYykgKyAiIGFicy1zZW5kLXRpbWUiLAogICAgICAgICBMaW5lU3R5bGU6OmtMaW5lKTsK
LSAgICBBY2N1bXVsYXRlUGFpcnM8TG9nZ2VkUnRwUGFja2V0LCBkb3VibGU+KAotICAgICAgICBU
b0NhbGxUaW1lLCBOZXR3b3JrRGVsYXlEaWZmX0Fic1NlbmRUaW1lLCBzdHJlYW0ucGFja2V0X3Zp
ZXcsCi0gICAgICAgICZzZW5kX3RpbWVfZGF0YSk7Ci0gICAgcGxvdC0+QXBwZW5kVGltZVNlcmll
cyhzdGQ6Om1vdmUoc2VuZF90aW1lX2RhdGEpKTsKKyAgICBBY2N1bXVsYXRlUGFpcnM8TG9nZ2Vk
UnRwUGFja2V0SW5jb21pbmcsIGRvdWJsZT4oCisgICAgICAgIFRvQ2FsbFRpbWUsIE5ldHdvcmtE
ZWxheURpZmZfQWJzU2VuZFRpbWUsIHBhY2tldHMsICZzZW5kX3RpbWVfZGF0YSk7CisgICAgcGxv
dC0+QXBwZW5kVGltZVNlcmllc0lmTm90RW1wdHkoc3RkOjptb3ZlKHNlbmRfdGltZV9kYXRhKSk7
CiAgIH0KIAogICBwbG90LT5TZXRYQXhpcyhUb0NhbGxUaW1lU2VjKGJlZ2luX3RpbWVfKSwgY2Fs
bF9kdXJhdGlvbl9zXywgIlRpbWUgKHMpIiwKQEAgLTEwODEsMTAgKzEwNjYsMTUgQEAgdm9pZCBF
dmVudExvZ0FuYWx5emVyOjpDcmVhdGVTZW5kU2lkZUJ3ZVNpbXVsYXRpb25HcmFwaChQbG90KiBw
bG90KSB7CiAgIFJ0Y0V2ZW50TG9nTnVsbEltcGwgbnVsbF9ldmVudF9sb2c7CiAgIFBhY2tldFJv
dXRlciBwYWNrZXRfcm91dGVyOwogICBQYWNlZFNlbmRlciBwYWNlcigmY2xvY2ssICZwYWNrZXRf
cm91dGVyLCAmbnVsbF9ldmVudF9sb2cpOwotICBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVy
IGNjKCZjbG9jaywgJm9ic2VydmVyLCAmbnVsbF9ldmVudF9sb2csICZwYWNlcik7CisgIFRyYW5z
cG9ydEZlZWRiYWNrQWRhcHRlciB0cmFuc3BvcnRfZmVlZGJhY2soJmNsb2NrKTsKKyAgYXV0byBm
YWN0b3J5ID0gR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KCZudWxsX2V2ZW50X2xvZyk7
CisgIFRpbWVEZWx0YSBwcm9jZXNzX2ludGVydmFsID0gZmFjdG9yeS5HZXRQcm9jZXNzSW50ZXJ2
YWwoKTsKICAgLy8gVE9ETyhob2xtZXIpOiBMb2cgdGhlIGNhbGwgY29uZmlnIGFuZCB1c2UgdGhh
dCBoZXJlIGluc3RlYWQuCiAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrRGVmYXVsdFN0YXJ0Qml0
cmF0ZUJwcyA9IDMwMDAwMDsKLSAgY2MuU2V0QndlQml0cmF0ZXMoMCwga0RlZmF1bHRTdGFydEJp
dHJhdGVCcHMsIC0xKTsKKyAgTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY2NfY29uZmlnOworICBj
Y19jb25maWcuY29uc3RyYWludHMuYXRfdGltZSA9IFRpbWVzdGFtcDo6dXMoY2xvY2suVGltZUlu
TWljcm9zZWNvbmRzKCkpOworICBjY19jb25maWcuY29uc3RyYWludHMuc3RhcnRpbmdfcmF0ZSA9
IERhdGFSYXRlOjpicHMoa0RlZmF1bHRTdGFydEJpdHJhdGVCcHMpOworICBhdXRvIGdvb2dfY2Mg
PSBmYWN0b3J5LkNyZWF0ZShjY19jb25maWcpOwogCiAgIFRpbWVTZXJpZXMgdGltZV9zZXJpZXMo
IkRlbGF5LWJhc2VkIGVzdGltYXRlIiwgTGluZVN0eWxlOjprU3RlcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBQb2ludFN0eWxlOjprSGlnaGxpZ2h0KTsKQEAgLTExMDcsMTIgKzEwOTcsMTIg
QEAgdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVTZW5kU2lkZUJ3ZVNpbXVsYXRpb25HcmFw
aChQbG90KiBwbG90KSB7CiAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4ocnRjcF9p
dGVyYXRvci0+bG9nX3RpbWVfdXMoKSk7CiAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1heCgpOwogICB9OworICBpbnQ2NF90IG5leHRfcHJvY2Vzc190aW1lX3VzXyA9
IGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygpOwogCiAgIGF1dG8gTmV4dFByb2Nlc3NUaW1lID0g
WyZdKCkgewogICAgIGlmIChydGNwX2l0ZXJhdG9yICE9IGluY29taW5nX3J0Y3AuZW5kKCkgfHwK
ICAgICAgICAgcnRwX2l0ZXJhdG9yICE9IG91dGdvaW5nX3J0cC5lbmQoKSkgewotICAgICAgcmV0
dXJuIGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygpICsKLSAgICAgICAgICAgICBzdGQ6Om1heDxp
bnQ2NF90PihjYy5UaW1lVW50aWxOZXh0UHJvY2VzcygpICogMTAwMCwgMCk7CisgICAgICByZXR1
cm4gbmV4dF9wcm9jZXNzX3RpbWVfdXNfOwogICAgIH0KICAgICByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7CiAgIH07CkBAIC0xMTI5LDI0ICsxMTE5LDMyIEBAIHZv
aWQgRXZlbnRMb2dBbmFseXplcjo6Q3JlYXRlU2VuZFNpZGVCd2VTaW11bGF0aW9uR3JhcGgoUGxv
dCogcGxvdCkgewogICBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yIGFja25vd2xlZGdlZF9i
aXRyYXRlX2VzdGltYXRvcigKICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEJpdHJhdGVFc3RpbWF0
b3I+KCkpOwogI2VuZGlmICAvLyAhKEJXRV9URVNUX0xPR0dJTkdfQ09NUElMRV9USU1FX0VOQUJM
RSkKLSAgaW50NjRfdCB0aW1lX3VzID0gc3RkOjptaW4oTmV4dFJ0cFRpbWUoKSwgTmV4dFJ0Y3BU
aW1lKCkpOworICBpbnQ2NF90IHRpbWVfdXMgPQorICAgICAgc3RkOjptaW4oe05leHRSdHBUaW1l
KCksIE5leHRSdGNwVGltZSgpLCBOZXh0UHJvY2Vzc1RpbWUoKX0pOwogICBpbnQ2NF90IGxhc3Rf
dXBkYXRlX3VzID0gMDsKICAgd2hpbGUgKHRpbWVfdXMgIT0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWF4KCkpIHsKICAgICBjbG9jay5BZHZhbmNlVGltZU1pY3Jvc2Vjb25kcyh0aW1l
X3VzIC0gY2xvY2suVGltZUluTWljcm9zZWNvbmRzKCkpOwogICAgIGlmIChjbG9jay5UaW1lSW5N
aWNyb3NlY29uZHMoKSA+PSBOZXh0UnRjcFRpbWUoKSkgewogICAgICAgUlRDX0RDSEVDS19FUShj
bG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSwgTmV4dFJ0Y3BUaW1lKCkpOwotICAgICAgY2MuT25U
cmFuc3BvcnRGZWVkYmFjayhydGNwX2l0ZXJhdG9yLT50cmFuc3BvcnRfZmVlZGJhY2spOwotICAg
ICAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IGZlZWRiYWNrID0gY2MuR2V0VHJhbnNwb3J0
RmVlZGJhY2tWZWN0b3IoKTsKLSAgICAgIFNvcnRQYWNrZXRGZWVkYmFja1ZlY3RvcigmZmVlZGJh
Y2spOworCisgICAgICBhdXRvIGZlZWRiYWNrX21zZyA9IHRyYW5zcG9ydF9mZWVkYmFjay5Qcm9j
ZXNzVHJhbnNwb3J0RmVlZGJhY2soCisgICAgICAgICAgcnRjcF9pdGVyYXRvci0+dHJhbnNwb3J0
X2ZlZWRiYWNrKTsKICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBiaXRyYXRlX2JwczsK
LSAgICAgIGlmICghZmVlZGJhY2suZW1wdHkoKSkgeworICAgICAgaWYgKGZlZWRiYWNrX21zZykg
eworICAgICAgICBvYnNlcnZlci5VcGRhdGUoZ29vZ19jYy0+T25UcmFuc3BvcnRQYWNrZXRzRmVl
ZGJhY2soKmZlZWRiYWNrX21zZykpOworICAgICAgICBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFj
az4gZmVlZGJhY2sgPQorICAgICAgICAgICAgdHJhbnNwb3J0X2ZlZWRiYWNrLkdldFRyYW5zcG9y
dEZlZWRiYWNrVmVjdG9yKCk7CisgICAgICAgIFNvcnRQYWNrZXRGZWVkYmFja1ZlY3RvcigmZmVl
ZGJhY2spOworICAgICAgICBpZiAoIWZlZWRiYWNrLmVtcHR5KCkpIHsKICNpZiAhKEJXRV9URVNU
X0xPR0dJTkdfQ09NUElMRV9USU1FX0VOQUJMRSkKLSAgICAgICAgYWNrbm93bGVkZ2VkX2JpdHJh
dGVfZXN0aW1hdG9yLkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoZmVlZGJhY2spOworICAg
ICAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5JbmNvbWluZ1BhY2tldEZlZWRi
YWNrVmVjdG9yKGZlZWRiYWNrKTsKICNlbmRpZiAgLy8gIShCV0VfVEVTVF9MT0dHSU5HX0NPTVBJ
TEVfVElNRV9FTkFCTEUpCi0gICAgICAgIGZvciAoY29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tl
dCA6IGZlZWRiYWNrKQotICAgICAgICAgIGFja2VkX2JpdHJhdGUuVXBkYXRlKHBhY2tldC5wYXls
b2FkX3NpemUsIHBhY2tldC5hcnJpdmFsX3RpbWVfbXMpOwotICAgICAgICBiaXRyYXRlX2JwcyA9
IGFja2VkX2JpdHJhdGUuUmF0ZShmZWVkYmFjay5iYWNrKCkuYXJyaXZhbF90aW1lX21zKTsKKyAg
ICAgICAgICBmb3IgKGNvbnN0IFBhY2tldEZlZWRiYWNrJiBwYWNrZXQgOiBmZWVkYmFjaykKKyAg
ICAgICAgICAgIGFja2VkX2JpdHJhdGUuVXBkYXRlKHBhY2tldC5wYXlsb2FkX3NpemUsIHBhY2tl
dC5hcnJpdmFsX3RpbWVfbXMpOworICAgICAgICAgIGJpdHJhdGVfYnBzID0gYWNrZWRfYml0cmF0
ZS5SYXRlKGZlZWRiYWNrLmJhY2soKS5hcnJpdmFsX3RpbWVfbXMpOworICAgICAgICB9CiAgICAg
ICB9CisKICAgICAgIGZsb2F0IHggPSBUb0NhbGxUaW1lU2VjKGNsb2NrLlRpbWVJbk1pY3Jvc2Vj
b25kcygpKTsKICAgICAgIGZsb2F0IHkgPSBiaXRyYXRlX2Jwcy52YWx1ZV9vcigwKSAvIDEwMDA7
CiAgICAgICBhY2tlZF90aW1lX3Nlcmllcy5wb2ludHMuZW1wbGFjZV9iYWNrKHgsIHkpOwpAQCAt
MTE2MSwxOSArMTE1OSwyNSBAQCB2b2lkIEV2ZW50TG9nQW5hbHl6ZXI6OkNyZWF0ZVNlbmRTaWRl
QndlU2ltdWxhdGlvbkdyYXBoKFBsb3QqIHBsb3QpIHsKICAgICAgIGNvbnN0IFJ0cFBhY2tldFR5
cGUmIHJ0cF9wYWNrZXQgPSAqcnRwX2l0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICBpZiAocnRwX3Bh
Y2tldC5ydHAuaGVhZGVyLmV4dGVuc2lvbi5oYXNUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcikgewog
ICAgICAgICBSVENfRENIRUNLKHJ0cF9wYWNrZXQucnRwLmhlYWRlci5leHRlbnNpb24uaGFzVHJh
bnNwb3J0U2VxdWVuY2VOdW1iZXIpOwotICAgICAgICBjYy5BZGRQYWNrZXQocnRwX3BhY2tldC5y
dHAuaGVhZGVyLnNzcmMsCi0gICAgICAgICAgICAgICAgICAgICBydHBfcGFja2V0LnJ0cC5oZWFk
ZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyLAotICAgICAgICAgICAgICAgICAg
ICAgcnRwX3BhY2tldC5ydHAudG90YWxfbGVuZ3RoLCBQYWNlZFBhY2tldEluZm8oKSk7CisgICAg
ICAgIHRyYW5zcG9ydF9mZWVkYmFjay5BZGRQYWNrZXQoCisgICAgICAgICAgICBydHBfcGFja2V0
LnJ0cC5oZWFkZXIuc3NyYywKKyAgICAgICAgICAgIHJ0cF9wYWNrZXQucnRwLmhlYWRlci5leHRl
bnNpb24udHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIsCisgICAgICAgICAgICBydHBfcGFja2V0LnJ0
cC50b3RhbF9sZW5ndGgsIFBhY2VkUGFja2V0SW5mbygpKTsKICAgICAgICAgcnRjOjpTZW50UGFj
a2V0IHNlbnRfcGFja2V0KAogICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAuaGVhZGVyLmV4dGVu
c2lvbi50cmFuc3BvcnRTZXF1ZW5jZU51bWJlciwKICAgICAgICAgICAgIHJ0cF9wYWNrZXQucnRw
LmxvZ190aW1lX3VzKCkgLyAxMDAwKTsKLSAgICAgICAgY2MuT25TZW50UGFja2V0KHNlbnRfcGFj
a2V0KTsKKyAgICAgICAgYXV0byBzZW50X21zZyA9IHRyYW5zcG9ydF9mZWVkYmFjay5Qcm9jZXNz
U2VudFBhY2tldChzZW50X3BhY2tldCk7CisgICAgICAgIGlmIChzZW50X21zZykKKyAgICAgICAg
ICBvYnNlcnZlci5VcGRhdGUoZ29vZ19jYy0+T25TZW50UGFja2V0KCpzZW50X21zZykpOwogICAg
ICAgfQogICAgICAgKytydHBfaXRlcmF0b3I7CiAgICAgfQogICAgIGlmIChjbG9jay5UaW1lSW5N
aWNyb3NlY29uZHMoKSA+PSBOZXh0UHJvY2Vzc1RpbWUoKSkgewogICAgICAgUlRDX0RDSEVDS19F
UShjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSwgTmV4dFByb2Nlc3NUaW1lKCkpOwotICAgICAg
Y2MuUHJvY2VzcygpOworICAgICAgUHJvY2Vzc0ludGVydmFsIG1zZzsKKyAgICAgIG1zZy5hdF90
aW1lID0gVGltZXN0YW1wOjp1cyhjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSk7CisgICAgICBv
YnNlcnZlci5VcGRhdGUoZ29vZ19jYy0+T25Qcm9jZXNzSW50ZXJ2YWwobXNnKSk7CisgICAgICBu
ZXh0X3Byb2Nlc3NfdGltZV91c18gKz0gcHJvY2Vzc19pbnRlcnZhbC51cygpOwogICAgIH0KICAg
ICBpZiAob2JzZXJ2ZXIuR2V0QW5kUmVzZXRCaXRyYXRlVXBkYXRlZCgpIHx8CiAgICAgICAgIHRp
bWVfdXMgLSBsYXN0X3VwZGF0ZV91cyA+PSAxZTYpIHsKQEAgLTEyNzcsOSArMTI4MSwxMCBAQCB2
b2lkIEV2ZW50TG9nQW5hbHl6ZXI6OkNyZWF0ZVJlY2VpdmVTaWRlQndlU2ltdWxhdGlvbkdyYXBo
KFBsb3QqIHBsb3QpIHsKIHZvaWQgRXZlbnRMb2dBbmFseXplcjo6Q3JlYXRlTmV0d29ya0RlbGF5
RmVlZGJhY2tHcmFwaChQbG90KiBwbG90KSB7CiAgIFRpbWVTZXJpZXMgbGF0ZV9mZWVkYmFja19z
ZXJpZXMoIkxhdGUgZmVlZGJhY2sgcmVzdWx0cy4iLCBMaW5lU3R5bGU6OmtOb25lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50U3R5bGU6OmtIaWdobGlnaHQpOwotICBU
aW1lU2VyaWVzIHRpbWVfc2VyaWVzKCJOZXR3b3JrIERlbGF5IENoYW5nZSIsIExpbmVTdHlsZTo6
a0xpbmUsCisgIFRpbWVTZXJpZXMgdGltZV9zZXJpZXMoIk5ldHdvcmsgZGVsYXkiLCBMaW5lU3R5
bGU6OmtMaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50U3R5bGU6OmtIaWdobGln
aHQpOwotICBpbnQ2NF90IGVzdGltYXRlZF9iYXNlX2RlbGF5X21zID0gc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWF4KCk7CisgIGludDY0X3QgbWluX3NlbmRfcmVjZWl2ZV9kaWZmX21z
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7CisgIGludDY0X3QgbWluX3J0
dF9tcyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOwogCiAgIGludDY0X3Qg
cHJldl95ID0gMDsKICAgZm9yIChhdXRvIHBhY2tldCA6IEdldE5ldHdvcmtUcmFjZShwYXJzZWRf
bG9nXykpIHsKQEAgLTEyOTIsMTYgKzEyOTcsMjIgQEAgdm9pZCBFdmVudExvZ0FuYWx5emVyOjpD
cmVhdGVOZXR3b3JrRGVsYXlGZWVkYmFja0dyYXBoKFBsb3QqIHBsb3QpIHsKICAgICB9CiAgICAg
aW50NjRfdCB5ID0gcGFja2V0LmFycml2YWxfdGltZV9tcyAtIHBhY2tldC5zZW5kX3RpbWVfbXM7
CiAgICAgcHJldl95ID0geTsKLSAgICBlc3RpbWF0ZWRfYmFzZV9kZWxheV9tcyA9IHN0ZDo6bWlu
KHksIGVzdGltYXRlZF9iYXNlX2RlbGF5X21zKTsKKyAgICBpbnQ2NF90IHJ0dF9tcyA9IHBhY2tl
dC5mZWVkYmFja19hcnJpdmFsX3RpbWVfbXMgLSBwYWNrZXQuc2VuZF90aW1lX21zOworICAgIG1p
bl9ydHRfbXMgPSBzdGQ6Om1pbihydHRfbXMsIG1pbl9ydHRfbXMpOworICAgIG1pbl9zZW5kX3Jl
Y2VpdmVfZGlmZl9tcyA9IHN0ZDo6bWluKHksIG1pbl9zZW5kX3JlY2VpdmVfZGlmZl9tcyk7CiAg
ICAgdGltZV9zZXJpZXMucG9pbnRzLmVtcGxhY2VfYmFjayh4LCB5KTsKICAgfQogCi0gIC8vIFdl
IGFzc3VtZSB0aGF0IHRoZSBiYXNlIG5ldHdvcmsgZGVsYXkgKHcvbyBxdWV1ZXMpIGlzIHRoZSBt
aW4gZGVsYXkKLSAgLy8gb2JzZXJ2ZWQgZHVyaW5nIHRoZSBjYWxsLgorICAvLyBXZSBhc3N1bWUg
dGhhdCB0aGUgYmFzZSBuZXR3b3JrIGRlbGF5ICh3L28gcXVldWVzKSBpcyBlcXVhbCB0byBoYWxm
CisgIC8vIHRoZSBtaW5pbXVtIFJUVC4gVGhlcmVmb3JlIHJlc2NhbGUgdGhlIGRlbGF5cyBieSBz
dWJ0cmFjdGluZyB0aGUgbWluaW11bQorICAvLyBvYnNlcnZlZCAxLXdheXMgZGVsYXkgYW5kIGFk
ZCBoYWxmIHRoZSBtaW51bXVtIFJUVC4KKyAgY29uc3QgaW50NjRfdCBlc3RpbWF0ZWRfY2xvY2tf
b2Zmc2V0X21zID0KKyAgICAgIG1pbl9zZW5kX3JlY2VpdmVfZGlmZl9tcyAtIG1pbl9ydHRfbXMg
LyAyOwogICBmb3IgKFRpbWVTZXJpZXNQb2ludCYgcG9pbnQgOiB0aW1lX3Nlcmllcy5wb2ludHMp
Ci0gICAgcG9pbnQueSAtPSBlc3RpbWF0ZWRfYmFzZV9kZWxheV9tczsKKyAgICBwb2ludC55IC09
IGVzdGltYXRlZF9jbG9ja19vZmZzZXRfbXM7CiAgIGZvciAoVGltZVNlcmllc1BvaW50JiBwb2lu
dCA6IGxhdGVfZmVlZGJhY2tfc2VyaWVzLnBvaW50cykKLSAgICBwb2ludC55IC09IGVzdGltYXRl
ZF9iYXNlX2RlbGF5X21zOworICAgIHBvaW50LnkgLT0gZXN0aW1hdGVkX2Nsb2NrX29mZnNldF9t
czsKKwogICAvLyBBZGQgdGhlIGRhdGEgc2V0IHRvIHRoZSBwbG90LgogICBwbG90LT5BcHBlbmRU
aW1lU2VyaWVzSWZOb3RFbXB0eShzdGQ6Om1vdmUodGltZV9zZXJpZXMpKTsKICAgcGxvdC0+QXBw
ZW5kVGltZVNlcmllc0lmTm90RW1wdHkoc3RkOjptb3ZlKGxhdGVfZmVlZGJhY2tfc2VyaWVzKSk7
CkBAIC0xMzA5LDcgKzEzMjAsNyBAQCB2b2lkIEV2ZW50TG9nQW5hbHl6ZXI6OkNyZWF0ZU5ldHdv
cmtEZWxheUZlZWRiYWNrR3JhcGgoUGxvdCogcGxvdCkgewogICBwbG90LT5TZXRYQXhpcyhUb0Nh
bGxUaW1lU2VjKGJlZ2luX3RpbWVfKSwgY2FsbF9kdXJhdGlvbl9zXywgIlRpbWUgKHMpIiwKICAg
ICAgICAgICAgICAgICAga0xlZnRNYXJnaW4sIGtSaWdodE1hcmdpbik7CiAgIHBsb3QtPlNldFN1
Z2dlc3RlZFlBeGlzKDAsIDEwLCAiRGVsYXkgKG1zKSIsIGtCb3R0b21NYXJnaW4sIGtUb3BNYXJn
aW4pOwotICBwbG90LT5TZXRUaXRsZSgiTmV0d29yayBEZWxheSBDaGFuZ2UuIik7CisgIHBsb3Qt
PlNldFRpdGxlKCJOZXR3b3JrIGRlbGF5IChiYXNlZCBvbiBwZXItcGFja2V0IGZlZWRiYWNrKSIp
OwogfQogCiB2b2lkIEV2ZW50TG9nQW5hbHl6ZXI6OkNyZWF0ZVBhY2VyRGVsYXlHcmFwaChQbG90
KiBwbG90KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfdG9vbHMvZXZlbnRfbG9nX3Zpc3VhbGl6ZXIvYW5hbHl6ZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9sb2df
dmlzdWFsaXplci9hbmFseXplci5oCmluZGV4IDRiOGMyN2M5NTE3ZDBjYmNjMDQwMWQ0OGFiMTE4
Y2MyM2Q5MDEyOGEuLmM2NjA2YzJiMWYxNmIxMjJkMzViMmUxZmQ2ZjNjZWQzZWJmOWU2MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190
b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9hbmFseXplci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXpl
ci9hbmFseXplci5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEV2ZW50TG9nQW5hbHl6ZXIgewog
CiAgIHZvaWQgQ3JlYXRlSW5jb21pbmdQYWNrZXRMb3NzR3JhcGgoUGxvdCogcGxvdCk7CiAKLSAg
dm9pZCBDcmVhdGVJbmNvbWluZ0RlbGF5RGVsdGFHcmFwaChQbG90KiBwbG90KTsKICAgdm9pZCBD
cmVhdGVJbmNvbWluZ0RlbGF5R3JhcGgoUGxvdCogcGxvdCk7CiAKICAgdm9pZCBDcmVhdGVGcmFj
dGlvbkxvc3NHcmFwaChQbG90KiBwbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9t
YWluLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rv
b2xzL2V2ZW50X2xvZ192aXN1YWxpemVyL21haW4uY2MKaW5kZXggMGMzNjg5YzFiY2FlM2EwZmRk
MDAzODYyYjFkOGRmZjQ0ZGFiMmVlMS4uMGI0ZTc2MTdlNjA2OGQ3NTZmMzkwZjRiZTJjNzRjYzkx
ZWJjYTYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX3Rvb2xzL2V2ZW50X2xvZ192aXN1YWxpemVyL21haW4uY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2V2ZW50X2xvZ192
aXN1YWxpemVyL21haW4uY2MKQEAgLTIwLDE1MSArMjAsMTY5IEBACiAjaW5jbHVkZSAidGVzdC9m
aWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAK
LURFRklORV9zdHJpbmcocGxvdF9wcm9maWxlLAotICAgICAgICAgICAgICAiZGVmYXVsdCIsCi0g
ICAgICAgICAgICAgICJBIHByb2ZpbGUgdGhhdCBzZWxlY3RzIGEgY2VydGFpbiBzdWJzZXQgb2Yg
dGhlIHBsb3RzLiBDdXJyZW50bHkgIgotICAgICAgICAgICAgICAiZGVmaW5lZCBwcm9maWxlcyBh
cmUgXCJhbGxcIiwgXCJub25lXCIsIFwic2VuZHNpZGVfYndlXCIsIgotICAgICAgICAgICAgICAi
XCJyZWNlaXZlc2lkZV9id2VcIiBhbmQgXCJkZWZhdWx0XCIiKTsKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKAorICAgIHBsb3RfcHJvZmlsZSwKKyAgICAiZGVmYXVsdCIsCisgICAgIkEgcHJvZmlsZSB0
aGF0IHNlbGVjdHMgYSBjZXJ0YWluIHN1YnNldCBvZiB0aGUgcGxvdHMuIEN1cnJlbnRseSAiCisg
ICAgImRlZmluZWQgcHJvZmlsZXMgYXJlIFwiYWxsXCIsIFwibm9uZVwiLCBcInNlbmRzaWRlX2J3
ZVwiLCIKKyAgICAiXCJyZWNlaXZlc2lkZV9id2VcIiBhbmQgXCJkZWZhdWx0XCIiKTsKIAotREVG
SU5FX2Jvb2wocGxvdF9pbmNvbWluZ19wYWNrZXRfc2l6ZXMsCi0gICAgICAgICAgICBmYWxzZSwK
LSAgICAgICAgICAgICJQbG90IGJhciBncmFwaCBzaG93aW5nIHRoZSBzaXplIG9mIGVhY2ggaW5j
b21pbmcgcGFja2V0LiIpOwotREVGSU5FX2Jvb2wocGxvdF9vdXRnb2luZ19wYWNrZXRfc2l6ZXMs
Ci0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IGJhciBncmFwaCBzaG93aW5n
IHRoZSBzaXplIG9mIGVhY2ggb3V0Z29pbmcgcGFja2V0LiIpOwotREVGSU5FX2Jvb2wocGxvdF9p
bmNvbWluZ19wYWNrZXRfY291bnQsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQ
bG90IHRoZSBhY2N1bXVsYXRlZCBudW1iZXIgb2YgcGFja2V0cyBmb3IgZWFjaCBpbmNvbWluZyBz
dHJlYW0uIik7Ci1ERUZJTkVfYm9vbChwbG90X291dGdvaW5nX3BhY2tldF9jb3VudCwKLSAgICAg
ICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBsb3QgdGhlIGFjY3VtdWxhdGVkIG51bWJlciBv
ZiBwYWNrZXRzIGZvciBlYWNoIG91dGdvaW5nIHN0cmVhbS4iKTsKLURFRklORV9ib29sKHBsb3Rf
YXVkaW9fcGxheW91dCwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBsb3QgYmFy
IGdyYXBoIHNob3dpbmcgdGhlIHRpbWUgYmV0d2VlbiBlYWNoIGF1ZGlvIHBsYXlvdXQuIik7Ci1E
RUZJTkVfYm9vbChwbG90X2F1ZGlvX2xldmVsLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAg
ICAgICAiUGxvdCBsaW5lIGdyYXBoIHNob3dpbmcgdGhlIGF1ZGlvIGxldmVsIG9mIGluY29taW5n
IGF1ZGlvLiIpOwotREVGSU5FX2Jvb2wocGxvdF9pbmNvbWluZ19zZXF1ZW5jZV9udW1iZXJfZGVs
dGEsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IHRoZSBzZXF1ZW5jZSBu
dW1iZXIgZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbnNlY3V0aXZlIGluY29taW5nICIKLSAgICAgICAg
ICAgICJwYWNrZXRzLiIpOwotREVGSU5FX2Jvb2woCi0gICAgcGxvdF9pbmNvbWluZ19kZWxheV9k
ZWx0YSwKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X2luY29taW5nX3BhY2tldF9zaXplcywKKyAg
ICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUGxvdCBiYXIgZ3Jh
cGggc2hvd2luZyB0aGUgc2l6ZSBvZiBlYWNoIGluY29taW5nIHBhY2tldC4iKTsKK1dFQlJUQ19E
RUZJTkVfYm9vbChwbG90X291dGdvaW5nX3BhY2tldF9zaXplcywKKyAgICAgICAgICAgICAgICAg
ICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUGxvdCBiYXIgZ3JhcGggc2hvd2luZyB0aGUg
c2l6ZSBvZiBlYWNoIG91dGdvaW5nIHBhY2tldC4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAg
ICBwbG90X2luY29taW5nX3BhY2tldF9jb3VudCwKICAgICBmYWxzZSwKLSAgICAiUGxvdCB0aGUg
ZGlmZmVyZW5jZSBpbiAxLXdheSBwYXRoIGRlbGF5IGJldHdlZW4gY29uc2VjdXRpdmUgcGFja2V0
cy4iKTsKLURFRklORV9ib29sKHBsb3RfaW5jb21pbmdfZGVsYXksCi0gICAgICAgICAgICB0cnVl
LAotICAgICAgICAgICAgIlBsb3QgdGhlIDEtd2F5IHBhdGggZGVsYXkgZm9yIGluY29taW5nIHBh
Y2tldHMsIG5vcm1hbGl6ZWQgc28gIgotICAgICAgICAgICAgInRoYXQgdGhlIGZpcnN0IHBhY2tl
dCBoYXMgZGVsYXkgMC4iKTsKLURFRklORV9ib29sKHBsb3RfaW5jb21pbmdfbG9zc19yYXRlLAot
ICAgICAgICAgICAgdHJ1ZSwKLSAgICAgICAgICAgICJDb21wdXRlIHRoZSBsb3NzIHJhdGUgZm9y
IGluY29taW5nIHBhY2tldHMgdXNpbmcgYSBtZXRob2QgdGhhdCdzICIKLSAgICAgICAgICAgICJz
aW1pbGFyIHRvIHRoZSBvbmUgdXNlZCBmb3IgUlRDUCBTUiBhbmQgUlIgZnJhY3Rpb24gbG9zdC4g
Tm90ZSAiCi0gICAgICAgICAgICAidGhhdCB0aGUgbG9zcyByYXRlIGNhbiBiZSBuZWdhdGl2ZSBp
ZiBwYWNrZXRzIGFyZSBkdXBsaWNhdGVkIG9yICIKLSAgICAgICAgICAgICJyZW9yZGVyZWQuIik7
Ci1ERUZJTkVfYm9vbChwbG90X2luY29taW5nX2JpdHJhdGUsCi0gICAgICAgICAgICB0cnVlLAot
ICAgICAgICAgICAgIlBsb3QgdGhlIHRvdGFsIGJpdHJhdGUgdXNlZCBieSBhbGwgaW5jb21pbmcg
c3RyZWFtcy4iKTsKLURFRklORV9ib29sKHBsb3Rfb3V0Z29pbmdfYml0cmF0ZSwKLSAgICAgICAg
ICAgIHRydWUsCi0gICAgICAgICAgICAiUGxvdCB0aGUgdG90YWwgYml0cmF0ZSB1c2VkIGJ5IGFs
bCBvdXRnb2luZyBzdHJlYW1zLiIpOwotREVGSU5FX2Jvb2wocGxvdF9pbmNvbWluZ19zdHJlYW1f
Yml0cmF0ZSwKLSAgICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAiUGxvdCB0aGUgYml0cmF0
ZSB1c2VkIGJ5IGVhY2ggaW5jb21pbmcgc3RyZWFtLiIpOwotREVGSU5FX2Jvb2wocGxvdF9vdXRn
b2luZ19zdHJlYW1fYml0cmF0ZSwKLSAgICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAiUGxv
dCB0aGUgYml0cmF0ZSB1c2VkIGJ5IGVhY2ggb3V0Z29pbmcgc3RyZWFtLiIpOwotREVGSU5FX2Jv
b2wocGxvdF9zaW11bGF0ZWRfcmVjZWl2ZXNpZGVfYndlLAotICAgICAgICAgICAgZmFsc2UsCi0g
ICAgICAgICAgICAiUnVuIHRoZSByZWNlaXZlLXNpZGUgYmFuZHdpZHRoIGVzdGltYXRvciB3aXRo
IHRoZSBpbmNvbWluZyBydHAgIgotICAgICAgICAgICAgInBhY2tldHMgYW5kIHBsb3QgdGhlIHJl
c3VsdGluZyBlc3RpbWF0ZS4iKTsKLURFRklORV9ib29sKHBsb3Rfc2ltdWxhdGVkX3NlbmRzaWRl
X2J3ZSwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlJ1biB0aGUgc2VuZC1zaWRl
IGJhbmR3aWR0aCBlc3RpbWF0b3Igd2l0aCB0aGUgb3V0Z29pbmcgcnRwIGFuZCAiCi0gICAgICAg
ICAgICAiaW5jb21pbmcgcnRjcCBhbmQgcGxvdCB0aGUgcmVzdWx0aW5nIGVzdGltYXRlLiIpOwot
REVGSU5FX2Jvb2wocGxvdF9uZXR3b3JrX2RlbGF5X2ZlZWRiYWNrLAotICAgICAgICAgICAgdHJ1
ZSwKLSAgICAgICAgICAgICJDb21wdXRlIG5ldHdvcmsgZGVsYXkgYmFzZWQgb24gc2VudCBwYWNr
ZXRzIGFuZCB0aGUgcmVjZWl2ZWQgIgotICAgICAgICAgICAgInRyYW5zcG9ydCBmZWVkYmFjay4i
KTsKLURFRklORV9ib29sKHBsb3RfZnJhY3Rpb25fbG9zc19mZWVkYmFjaywKLSAgICAgICAgICAg
IHRydWUsCi0gICAgICAgICAgICAiUGxvdCBwYWNrZXQgbG9zcyBpbiBwZXJjZW50IGZvciBvdXRn
b2luZyBwYWNrZXRzIChhcyBwZXJjZWl2ZWQgYnkgIgotICAgICAgICAgICAgInRoZSBzZW5kLXNp
ZGUgYmFuZHdpZHRoIGVzdGltYXRvcikuIik7Ci1ERUZJTkVfYm9vbChwbG90X3BhY2VyX2RlbGF5
LAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUGxvdCB0aGUgdGltZSBlYWNoIHNl
bnQgcGFja2V0IGhhcyBzcGVudCBpbiB0aGUgcGFjZXIgKGJhc2VkIG9uICIKLSAgICAgICAgICAg
ICJ0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBSVFAgdGltZXN0YW1wIGFuZCB0aGUgc2VuZCAi
Ci0gICAgICAgICAgICAidGltZXN0YW1wKS4iKTsKLURFRklORV9ib29sKHBsb3RfdGltZXN0YW1w
cywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBsb3QgdGhlIHJ0cCB0aW1lc3Rh
bXBzIG9mIGFsbCBydHAgYW5kIHJ0Y3AgcGFja2V0cyBvdmVyIHRpbWUuIik7Ci1ERUZJTkVfYm9v
bChwbG90X3J0Y3BfZGV0YWlscywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBs
b3QgdGhlIGNvbnRlbnRzIG9mIGFsbCByZXBvcnQgYmxvY2tzIGluIGFsbCBzZW5kZXIgYW5kIHJl
Y2VpdmVyICIKLSAgICAgICAgICAgICJyZXBvcnRzLiBUaGlzIGluY2x1ZGVzIGZyYWN0aW9uIGxv
c3QsIGN1bXVsYXRpdmUgbnVtYmVyIG9mIGxvc3QgIgotICAgICAgICAgICAgInBhY2tldHMsIGV4
dGVuZGVkIGhpZ2hlc3Qgc2VxdWVuY2UgbnVtYmVyIGFuZCB0aW1lIHNpbmNlIGxhc3QgIgotICAg
ICAgICAgICAgInJlY2VpdmVkIFNSLiIpOwotREVGSU5FX2Jvb2wocGxvdF9hdWRpb19lbmNvZGVy
X2JpdHJhdGVfYnBzLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUGxvdCB0aGUg
YXVkaW8gZW5jb2RlciB0YXJnZXQgYml0cmF0ZS4iKTsKLURFRklORV9ib29sKHBsb3RfYXVkaW9f
ZW5jb2Rlcl9mcmFtZV9sZW5ndGhfbXMsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAg
ICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIGZyYW1lIGxlbmd0aC4iKTsKLURFRklORV9ib29sKAor
ICAgICJQbG90IHRoZSBhY2N1bXVsYXRlZCBudW1iZXIgb2YgcGFja2V0cyBmb3IgZWFjaCBpbmNv
bWluZyBzdHJlYW0uIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF9vdXRnb2luZ19w
YWNrZXRfY291bnQsCisgICAgZmFsc2UsCisgICAgIlBsb3QgdGhlIGFjY3VtdWxhdGVkIG51bWJl
ciBvZiBwYWNrZXRzIGZvciBlYWNoIG91dGdvaW5nIHN0cmVhbS4iKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbCgKKyAgICBwbG90X2F1ZGlvX3BsYXlvdXQsCisgICAgZmFsc2UsCisgICAgIlBsb3QgYmFy
IGdyYXBoIHNob3dpbmcgdGhlIHRpbWUgYmV0d2VlbiBlYWNoIGF1ZGlvIHBsYXlvdXQuIik7CitX
RUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF9hdWRpb19sZXZlbCwKKyAgICBmYWxzZSwKKyAg
ICAiUGxvdCBsaW5lIGdyYXBoIHNob3dpbmcgdGhlIGF1ZGlvIGxldmVsIG9mIGluY29taW5nIGF1
ZGlvLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHBsb3RfaW5jb21pbmdfc2VxdWVuY2Vf
bnVtYmVyX2RlbHRhLAorICAgIGZhbHNlLAorICAgICJQbG90IHRoZSBzZXF1ZW5jZSBudW1iZXIg
ZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbnNlY3V0aXZlIGluY29taW5nICIKKyAgICAicGFja2V0cy4i
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBwbG90X2luY29taW5nX2RlbGF5LAorICAgIHRy
dWUsCisgICAgIlBsb3QgdGhlIDEtd2F5IHBhdGggZGVsYXkgZm9yIGluY29taW5nIHBhY2tldHMs
IG5vcm1hbGl6ZWQgc28gIgorICAgICJ0aGF0IHRoZSBmaXJzdCBwYWNrZXQgaGFzIGRlbGF5IDAu
Iik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF9pbmNvbWluZ19sb3NzX3JhdGUsCisg
ICAgdHJ1ZSwKKyAgICAiQ29tcHV0ZSB0aGUgbG9zcyByYXRlIGZvciBpbmNvbWluZyBwYWNrZXRz
IHVzaW5nIGEgbWV0aG9kIHRoYXQncyAiCisgICAgInNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIGZv
ciBSVENQIFNSIGFuZCBSUiBmcmFjdGlvbiBsb3N0LiBOb3RlICIKKyAgICAidGhhdCB0aGUgbG9z
cyByYXRlIGNhbiBiZSBuZWdhdGl2ZSBpZiBwYWNrZXRzIGFyZSBkdXBsaWNhdGVkIG9yICIKKyAg
ICAicmVvcmRlcmVkLiIpOworV0VCUlRDX0RFRklORV9ib29sKHBsb3RfaW5jb21pbmdfYml0cmF0
ZSwKKyAgICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICJQbG90IHRo
ZSB0b3RhbCBiaXRyYXRlIHVzZWQgYnkgYWxsIGluY29taW5nIHN0cmVhbXMuIik7CitXRUJSVENf
REVGSU5FX2Jvb2wocGxvdF9vdXRnb2luZ19iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgIHRy
dWUsCisgICAgICAgICAgICAgICAgICAgIlBsb3QgdGhlIHRvdGFsIGJpdHJhdGUgdXNlZCBieSBh
bGwgb3V0Z29pbmcgc3RyZWFtcy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X2luY29taW5n
X3N0cmVhbV9iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAg
ICAgICAgIlBsb3QgdGhlIGJpdHJhdGUgdXNlZCBieSBlYWNoIGluY29taW5nIHN0cmVhbS4iKTsK
K1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X291dGdvaW5nX3N0cmVhbV9iaXRyYXRlLAorICAgICAg
ICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgIlBsb3QgdGhlIGJpdHJhdGUg
dXNlZCBieSBlYWNoIG91dGdvaW5nIHN0cmVhbS4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAg
ICBwbG90X3NpbXVsYXRlZF9yZWNlaXZlc2lkZV9id2UsCisgICAgZmFsc2UsCisgICAgIlJ1biB0
aGUgcmVjZWl2ZS1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0b3Igd2l0aCB0aGUgaW5jb21pbmcgcnRw
ICIKKyAgICAicGFja2V0cyBhbmQgcGxvdCB0aGUgcmVzdWx0aW5nIGVzdGltYXRlLiIpOworV0VC
UlRDX0RFRklORV9ib29sKAorICAgIHBsb3Rfc2ltdWxhdGVkX3NlbmRzaWRlX2J3ZSwKKyAgICBm
YWxzZSwKKyAgICAiUnVuIHRoZSBzZW5kLXNpZGUgYmFuZHdpZHRoIGVzdGltYXRvciB3aXRoIHRo
ZSBvdXRnb2luZyBydHAgYW5kICIKKyAgICAiaW5jb21pbmcgcnRjcCBhbmQgcGxvdCB0aGUgcmVz
dWx0aW5nIGVzdGltYXRlLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHBsb3RfbmV0d29y
a19kZWxheV9mZWVkYmFjaywKKyAgICB0cnVlLAorICAgICJDb21wdXRlIG5ldHdvcmsgZGVsYXkg
YmFzZWQgb24gc2VudCBwYWNrZXRzIGFuZCB0aGUgcmVjZWl2ZWQgIgorICAgICJ0cmFuc3BvcnQg
ZmVlZGJhY2suIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF9mcmFjdGlvbl9sb3Nz
X2ZlZWRiYWNrLAorICAgIHRydWUsCisgICAgIlBsb3QgcGFja2V0IGxvc3MgaW4gcGVyY2VudCBm
b3Igb3V0Z29pbmcgcGFja2V0cyAoYXMgcGVyY2VpdmVkIGJ5ICIKKyAgICAidGhlIHNlbmQtc2lk
ZSBiYW5kd2lkdGggZXN0aW1hdG9yKS4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBwbG90
X3BhY2VyX2RlbGF5LAorICAgIGZhbHNlLAorICAgICJQbG90IHRoZSB0aW1lIGVhY2ggc2VudCBw
YWNrZXQgaGFzIHNwZW50IGluIHRoZSBwYWNlciAoYmFzZWQgb24gIgorICAgICJ0aGUgZGlmZmVy
ZW5jZSBiZXR3ZWVuIHRoZSBSVFAgdGltZXN0YW1wIGFuZCB0aGUgc2VuZCAiCisgICAgInRpbWVz
dGFtcCkuIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF90aW1lc3RhbXBzLAorICAg
IGZhbHNlLAorICAgICJQbG90IHRoZSBydHAgdGltZXN0YW1wcyBvZiBhbGwgcnRwIGFuZCBydGNw
IHBhY2tldHMgb3ZlciB0aW1lLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHBsb3RfcnRj
cF9kZXRhaWxzLAorICAgIGZhbHNlLAorICAgICJQbG90IHRoZSBjb250ZW50cyBvZiBhbGwgcmVw
b3J0IGJsb2NrcyBpbiBhbGwgc2VuZGVyIGFuZCByZWNlaXZlciAiCisgICAgInJlcG9ydHMuIFRo
aXMgaW5jbHVkZXMgZnJhY3Rpb24gbG9zdCwgY3VtdWxhdGl2ZSBudW1iZXIgb2YgbG9zdCAiCisg
ICAgInBhY2tldHMsIGV4dGVuZGVkIGhpZ2hlc3Qgc2VxdWVuY2UgbnVtYmVyIGFuZCB0aW1lIHNp
bmNlIGxhc3QgIgorICAgICJyZWNlaXZlZCBTUi4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90
X2F1ZGlvX2VuY29kZXJfYml0cmF0ZV9icHMsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgIlBsb3QgdGhlIGF1ZGlvIGVuY29kZXIgdGFyZ2V0IGJpdHJhdGUu
Iik7CitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9hdWRpb19lbmNvZGVyX2ZyYW1lX2xlbmd0aF9t
cywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUGxvdCB0
aGUgYXVkaW8gZW5jb2RlciBmcmFtZSBsZW5ndGguIik7CitXRUJSVENfREVGSU5FX2Jvb2woCiAg
ICAgcGxvdF9hdWRpb19lbmNvZGVyX3BhY2tldF9sb3NzLAogICAgIGZhbHNlLAogICAgICJQbG90
IHRoZSB1cGxpbmsgcGFja2V0IGxvc3MgZnJhY3Rpb24gd2hpY2ggaXMgc2VudCB0byB0aGUgYXVk
aW8gZW5jb2Rlci4iKTsKLURFRklORV9ib29sKHBsb3RfYXVkaW9fZW5jb2Rlcl9mZWMsIGZhbHNl
LCAiUGxvdCB0aGUgYXVkaW8gZW5jb2RlciBGRUMuIik7Ci1ERUZJTkVfYm9vbChwbG90X2F1ZGlv
X2VuY29kZXJfZHR4LCBmYWxzZSwgIlBsb3QgdGhlIGF1ZGlvIGVuY29kZXIgRFRYLiIpOwotREVG
SU5FX2Jvb2wocGxvdF9hdWRpb19lbmNvZGVyX251bV9jaGFubmVscywKLSAgICAgICAgICAgIGZh
bHNlLAotICAgICAgICAgICAgIlBsb3QgdGhlIGF1ZGlvIGVuY29kZXIgbnVtYmVyIG9mIGNoYW5u
ZWxzLiIpOwotREVGSU5FX2Jvb2wocGxvdF9uZXRlcV9zdGF0cywgZmFsc2UsICJQbG90IHRoZSBO
ZXRFcSBzdGF0aXN0aWNzLiIpOwotREVGSU5FX2Jvb2wocGxvdF9pY2VfY2FuZGlkYXRlX3BhaXJf
Y29uZmlnLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUGxvdCB0aGUgSUNFIGNh
bmRpZGF0ZSBwYWlyIGNvbmZpZyBldmVudHMuIik7Ci1ERUZJTkVfYm9vbChwbG90X2ljZV9jb25u
ZWN0aXZpdHlfY2hlY2ssCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IHRo
ZSBJQ0UgY2FuZGlkYXRlIHBhaXIgY29ubmVjdGl2aXR5IGNoZWNrcy4iKTsKK1dFQlJUQ19ERUZJ
TkVfYm9vbChwbG90X2F1ZGlvX2VuY29kZXJfZmVjLAorICAgICAgICAgICAgICAgICAgIGZhbHNl
LAorICAgICAgICAgICAgICAgICAgICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIEZFQy4iKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2VuY29kZXJfZHR4LAorICAgICAgICAgICAgICAg
ICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIERU
WC4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2VuY29kZXJfbnVtX2NoYW5uZWxz
LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJQbG90IHRo
ZSBhdWRpbyBlbmNvZGVyIG51bWJlciBvZiBjaGFubmVscy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9v
bChwbG90X25ldGVxX3N0YXRzLCBmYWxzZSwgIlBsb3QgdGhlIE5ldEVxIHN0YXRpc3RpY3MuIik7
CitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnLAorICAg
ICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJQbG90IHRoZSBJQ0Ug
Y2FuZGlkYXRlIHBhaXIgY29uZmlnIGV2ZW50cy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90
X2ljZV9jb25uZWN0aXZpdHlfY2hlY2ssCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAg
ICAgICAgICAgICAgICAgIlBsb3QgdGhlIElDRSBjYW5kaWRhdGUgcGFpciBjb25uZWN0aXZpdHkg
Y2hlY2tzLiIpOwogCi1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAg
Zm9yY2VfZmllbGR0cmlhbHMsCiAgICAgIiIsCiAgICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4
cGVyaW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgogICAgICJFLmcu
IHJ1bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJs
ZWQvIgogICAgICIgd2lsbCBhc3NpZ24gdGhlIGdyb3VwIEVuYWJsZWQgdG8gZmllbGQgdHJpYWwg
V2ViUlRDLUZvb0ZlYXR1cmUuIE11bHRpcGxlICIKICAgICAidHJpYWxzIGFyZSBzZXBhcmF0ZWQg
YnkgXCIvXCIiKTsKLURFRklORV9zdHJpbmcod2F2X2ZpbGVuYW1lLAotICAgICAgICAgICAgICAi
IiwKLSAgICAgICAgICAgICAgIlBhdGggdG8gd2F2IGZpbGUgdXNlZCBmb3Igc2ltdWxhdGlvbiBv
ZiBqaXR0ZXIgYnVmZmVyIik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgInByaW50cyB0aGlz
IG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHdhdl9maWxlbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIlBhdGggdG8gd2F2IGZpbGUg
dXNlZCBmb3Igc2ltdWxhdGlvbiBvZiBqaXR0ZXIgYnVmZmVyIik7CitXRUJSVENfREVGSU5FX2Jv
b2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CiAKLURFRklORV9ib29sKHNo
b3dfZGV0ZWN0b3Jfc3RhdGUsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJTaG93
IHRoZSBzdGF0ZSBvZiB0aGUgZGVsYXkgYmFzZWQgQldFIGRldGVjdG9yIG9uIHRoZSB0b3RhbCAi
Ci0gICAgICAgICAgICAiYml0cmF0ZSBncmFwaCIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAg
IHNob3dfZGV0ZWN0b3Jfc3RhdGUsCisgICAgZmFsc2UsCisgICAgIlNob3cgdGhlIHN0YXRlIG9m
IHRoZSBkZWxheSBiYXNlZCBCV0UgZGV0ZWN0b3Igb24gdGhlIHRvdGFsICIKKyAgICAiYml0cmF0
ZSBncmFwaCIpOwogCi1ERUZJTkVfYm9vbChzaG93X2Fscl9zdGF0ZSwKLSAgICAgICAgICAgIGZh
bHNlLAotICAgICAgICAgICAgIlNob3cgdGhlIHN0YXRlIEFMUiBzdGF0ZSBvbiB0aGUgdG90YWwg
Yml0cmF0ZSBncmFwaCIpOworV0VCUlRDX0RFRklORV9ib29sKHNob3dfYWxyX3N0YXRlLAorICAg
ICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJTaG93IHRoZSBzdGF0
ZSBBTFIgc3RhdGUgb24gdGhlIHRvdGFsIGJpdHJhdGUgZ3JhcGgiKTsKIAotREVGSU5FX2Jvb2wo
cGFyc2VfdW5jb25maWd1cmVkX2hlYWRlcl9leHRlbnNpb25zLAotICAgICAgICAgICAgdHJ1ZSwK
LSAgICAgICAgICAgICJBdHRlbXB0IHRvIHBhcnNlIHVuY29uZmlndXJlZCBoZWFkZXIgZXh0ZW5z
aW9ucyB1c2luZyB0aGUgZGVmYXVsdCAiCi0gICAgICAgICAgICAiV2ViUlRDIG1hcHBpbmcuIFRo
aXMgY2FuIGdpdmUgdmVyeSBtaXNsZWFkaW5nIHJlc3VsdHMgaWYgdGhlICIKLSAgICAgICAgICAg
ICJhcHBsaWNhdGlvbiBuZWdvdGlhdGVzIGEgZGlmZmVyZW50IG1hcHBpbmcuIik7CitXRUJSVENf
REVGSU5FX2Jvb2woCisgICAgcGFyc2VfdW5jb25maWd1cmVkX2hlYWRlcl9leHRlbnNpb25zLAor
ICAgIHRydWUsCisgICAgIkF0dGVtcHQgdG8gcGFyc2UgdW5jb25maWd1cmVkIGhlYWRlciBleHRl
bnNpb25zIHVzaW5nIHRoZSBkZWZhdWx0ICIKKyAgICAiV2ViUlRDIG1hcHBpbmcuIFRoaXMgY2Fu
IGdpdmUgdmVyeSBtaXNsZWFkaW5nIHJlc3VsdHMgaWYgdGhlICIKKyAgICAiYXBwbGljYXRpb24g
bmVnb3RpYXRlcyBhIGRpZmZlcmVudCBtYXBwaW5nLiIpOwogCi1ERUZJTkVfYm9vbChwcmludF90
cmlhZ2VfYWxlcnRzLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUHJpbnQgdHJp
YWdlIGFsZXJ0cywgaS5lLiBhIGxpc3Qgb2YgcG90ZW50aWFsIHByb2JsZW1zLiIpOworV0VCUlRD
X0RFRklORV9ib29sKHByaW50X3RyaWFnZV9hbGVydHMsCisgICAgICAgICAgICAgICAgICAgZmFs
c2UsCisgICAgICAgICAgICAgICAgICAgIlByaW50IHRyaWFnZSBhbGVydHMsIGkuZS4gYSBsaXN0
IG9mIHBvdGVudGlhbCBwcm9ibGVtcy4iKTsKIAotREVGSU5FX2Jvb2wobm9ybWFsaXplX3RpbWUs
Ci0gICAgICAgICAgICB0cnVlLAotICAgICAgICAgICAgIk5vcm1hbGl6ZSB0aGUgbG9nIHRpbWVz
dGFtcHMgc28gdGhhdCB0aGUgY2FsbCBzdGFydHMgYXQgdGltZSAwLiIpOworV0VCUlRDX0RFRklO
RV9ib29sKAorICAgIG5vcm1hbGl6ZV90aW1lLAorICAgIHRydWUsCisgICAgIk5vcm1hbGl6ZSB0
aGUgbG9nIHRpbWVzdGFtcHMgc28gdGhhdCB0aGUgY2FsbCBzdGFydHMgYXQgdGltZSAwLiIpOwog
Ci1ERUZJTkVfYm9vbChwcm90b2J1Zl9vdXRwdXQsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAg
ICAgICAgICJPdXRwdXQgY2hhcnRzIGFzIHByb3RvYnVmIGluc3RlYWQgb2YgcHl0aG9uIGNvZGUu
Iik7CitXRUJSVENfREVGSU5FX2Jvb2wocHJvdG9idWZfb3V0cHV0LAorICAgICAgICAgICAgICAg
ICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJPdXRwdXQgY2hhcnRzIGFzIHByb3RvYnVm
IGluc3RlYWQgb2YgcHl0aG9uIGNvZGUuIik7CiAKIHZvaWQgU2V0QWxsUGxvdEZsYWdzKGJvb2wg
c2V0dGluZyk7CiAKQEAgLTE5NCw3ICsyMTIsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciog
YXJndltdKSB7CiAgIH0gZWxzZSBpZiAoc3RyY21wKEZMQUdfcGxvdF9wcm9maWxlLCAicmVjZWl2
ZXNpZGVfYndlIikgPT0gMCkgewogICAgIFNldEFsbFBsb3RGbGFncyhmYWxzZSk7CiAgICAgRkxB
R19wbG90X2luY29taW5nX3BhY2tldF9zaXplcyA9IHRydWU7Ci0gICAgRkxBR19wbG90X2luY29t
aW5nX2RlbGF5X2RlbHRhID0gdHJ1ZTsKICAgICBGTEFHX3Bsb3RfaW5jb21pbmdfZGVsYXkgPSB0
cnVlOwogICAgIEZMQUdfcGxvdF9pbmNvbWluZ19sb3NzX3JhdGUgPSB0cnVlOwogICAgIEZMQUdf
cGxvdF9pbmNvbWluZ19iaXRyYXRlID0gdHJ1ZTsKQEAgLTIxOCw3ICsyMzUsNiBAQCBpbnQgbWFp
bihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgcmV0dXJuIDA7CiAgIH0KIAotICB3ZWJy
dGM6OnRlc3Q6OlNldEV4ZWN1dGFibGVQYXRoKGFyZ3ZbMF0pOwogICB3ZWJydGM6OnRlc3Q6OlZh
bGlkYXRlRmllbGRUcmlhbHNTdHJpbmdPckRpZShGTEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsKICAg
Ly8gSW5pdEZpZWxkVHJpYWxzRnJvbVN0cmluZyBzdG9yZXMgdGhlIGNoYXIqLCBzbyB0aGUgY2hh
ciBhcnJheSBtdXN0IG91dGxpdmUKICAgLy8gdGhlIGFwcGxpY2F0aW9uLgpAQCAtMjM2LDkgKzI1
Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKIAogICBpZiAoIXBhcnNl
ZF9sb2cuUGFyc2VGaWxlKGZpbGVuYW1lKSkgewogICAgIHN0ZDo6Y2VyciA8PCAiQ291bGQgbm90
IHBhcnNlIHRoZSBlbnRpcmUgbG9nIGZpbGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgc3RkOjpjZXJy
IDw8ICJQcm9jZWVkaW5nIHRvIGFuYWx5emUgdGhlIGZpcnN0ICIKLSAgICAgICAgICAgICAgPDwg
cGFyc2VkX2xvZy5HZXROdW1iZXJPZkV2ZW50cygpIDw8ICIgZXZlbnRzIGluIHRoZSBmaWxlLiIK
LSAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgIHN0ZDo6Y2VyciA8PCAiT25seSB0aGUg
cGFyc2FibGUgZXZlbnRzIHdpbGwgYmUgYW5hbHl6ZWQuIiA8PCBzdGQ6OmVuZGw7CiAgIH0KIAog
ICB3ZWJydGM6OkV2ZW50TG9nQW5hbHl6ZXIgYW5hbHl6ZXIocGFyc2VkX2xvZywgRkxBR19ub3Jt
YWxpemVfdGltZSk7CkBAIC0yNzcsOSArMjkxLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
IGFyZ3ZbXSkgewogICBpZiAoRkxBR19wbG90X2luY29taW5nX3NlcXVlbmNlX251bWJlcl9kZWx0
YSkgewogICAgIGFuYWx5emVyLkNyZWF0ZVNlcXVlbmNlTnVtYmVyR3JhcGgoY29sbGVjdGlvbi0+
QXBwZW5kTmV3UGxvdCgpKTsKICAgfQotICBpZiAoRkxBR19wbG90X2luY29taW5nX2RlbGF5X2Rl
bHRhKSB7Ci0gICAgYW5hbHl6ZXIuQ3JlYXRlSW5jb21pbmdEZWxheURlbHRhR3JhcGgoY29sbGVj
dGlvbi0+QXBwZW5kTmV3UGxvdCgpKTsKLSAgfQogICBpZiAoRkxBR19wbG90X2luY29taW5nX2Rl
bGF5KSB7CiAgICAgYW5hbHl6ZXIuQ3JlYXRlSW5jb21pbmdEZWxheUdyYXBoKGNvbGxlY3Rpb24t
PkFwcGVuZE5ld1Bsb3QoKSk7CiAgIH0KQEAgLTQ2Niw3ICs0NzcsNiBAQCB2b2lkIFNldEFsbFBs
b3RGbGFncyhib29sIHNldHRpbmcpIHsKICAgRkxBR19wbG90X2F1ZGlvX3BsYXlvdXQgPSBzZXR0
aW5nOwogICBGTEFHX3Bsb3RfYXVkaW9fbGV2ZWwgPSBzZXR0aW5nOwogICBGTEFHX3Bsb3RfaW5j
b21pbmdfc2VxdWVuY2VfbnVtYmVyX2RlbHRhID0gc2V0dGluZzsKLSAgRkxBR19wbG90X2luY29t
aW5nX2RlbGF5X2RlbHRhID0gc2V0dGluZzsKICAgRkxBR19wbG90X2luY29taW5nX2RlbGF5ID0g
c2V0dGluZzsKICAgRkxBR19wbG90X2luY29taW5nX2xvc3NfcmF0ZSA9IHNldHRpbmc7CiAgIEZM
QUdfcGxvdF9pbmNvbWluZ19iaXRyYXRlID0gc2V0dGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mb3JjZV9taWNfdm9s
dW1lX21heC9mb3JjZV9taWNfdm9sdW1lX21heC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mb3JjZV9taWNfdm9sdW1lX21heC9mb3JjZV9t
aWNfdm9sdW1lX21heC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNkMWIzNmQ5
MDQ3Yjg5Y2U5NTlhNjhiZmM2NTliMWVmOTRmZGIwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfdG9vbHMvZm9yY2VfbWljX3ZvbHVtZV9tYXgvZm9yY2VfbWljX3ZvbHVtZV9t
YXguY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAo
YykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0g
Ki8KLQotLy8gVGhpcyB1dGlsaXR5IHdpbGwgcG9ydGFibHkgZm9yY2UgdGhlIHZvbHVtZSBvZiB0
aGUgZGVmYXVsdCBtaWNyb3Bob25lIHRvIG1heC4KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgotCi11
c2luZyB3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlOwotCi0jaWYgZGVmaW5lZChfV0lOMzIpCi0j
ZGVmaW5lIERFRkFVTFRfSU5QVVRfREVWSUNFIChBdWRpb0RldmljZU1vZHVsZTo6a0RlZmF1bHRD
b21tdW5pY2F0aW9uRGV2aWNlKQotI2Vsc2UKLSNkZWZpbmUgREVGQVVMVF9JTlBVVF9ERVZJQ0Ug
KDApCi0jZW5kaWYKLQotaW50IG1haW4oaW50IC8qYXJnYyovLCBjaGFyKiAvKmFyZ3YqLyBbXSkg
ewotICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIEFETS4KLSAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBhZG0oCi0gICAgICBBdWRpb0RldmljZU1vZHVsZTo6Q3Jl
YXRlKEF1ZGlvRGV2aWNlTW9kdWxlOjprUGxhdGZvcm1EZWZhdWx0QXVkaW8pKTsKLSAgaWYgKCFh
ZG0uZ2V0KCkpIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgQXVkaW8g
RGV2aWNlIE1vZHVsZS5cbiIpOwotICAgIHJldHVybiAxOwotICB9Ci0gIGlmIChhZG0tPkluaXQo
KSAhPSAwKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBBdWRp
byBEZXZpY2UgTW9kdWxlLlxuIik7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLSAgaWYgKGFkbS0+U2V0
UmVjb3JkaW5nRGV2aWNlKERFRkFVTFRfSU5QVVRfREVWSUNFKSAhPSAwKSB7Ci0gICAgZnByaW50
ZihzdGRlcnIsICJGYWlsZWQgdG8gc2V0IHRoZSBkZWZhdWx0IGlucHV0IGRldmljZS5cbiIpOwot
ICAgIHJldHVybiAxOwotICB9Ci0gIGlmIChhZG0tPkluaXRNaWNyb3Bob25lKCkgIT0gMCkgewot
ICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHRvIGluaXRpYWxpemUgdGhlIG1pY3JvcGhv
bmUuXG4iKTsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0gIC8vIFNldCBtaWMgdm9sdW1lIHRvIG1h
eC4KLSAgdWludDMyX3QgbWF4X3ZvbCA9IDA7Ci0gIGlmIChhZG0tPk1heE1pY3JvcGhvbmVWb2x1
bWUoJm1heF92b2wpICE9IDApIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQg
bWF4IHZvbHVtZS5cbiIpOwotICAgIHJldHVybiAxOwotICB9Ci0gIGlmIChhZG0tPlNldE1pY3Jv
cGhvbmVWb2x1bWUobWF4X3ZvbCkgIT0gMCkgewotICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVk
IHRvIHNldCBtaWMgdm9sdW1lLlxuIik7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICByZXR1cm4g
MDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci9mcmFtZV9hbmFseXplci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXpl
ci9mcmFtZV9hbmFseXplci5jYwppbmRleCA4OTQ0MGVhOTg0NWEyNWVmMTU4OTg4MTFkYjY3ZDMw
MWFmZmJjYWYxLi5mYjVmOGRlMjI3YWZiYzIyOTQ5ZDA1ZGRlZjRlMGFlYWNhMDQ5MDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9v
bHMvZnJhbWVfYW5hbHl6ZXIvZnJhbWVfYW5hbHl6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2ZyYW1l
X2FuYWx5emVyLmNjCkBAIC0xNSw3ICsxNSwxMCBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVy
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKKyNpbmNsdWRlICJydGNfdG9v
bHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5oIgorI2luY2x1ZGUgInJ0Y190
b29scy9mcmFtZV9hbmFseXplci92aWRlb19nZW9tZXRyeV9hbGlnbmVyLmgiCiAjaW5jbHVkZSAi
cnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuaCIKICNpbmNs
dWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fdGVtcG9yYWxfYWxpZ25lci5oIgog
I2luY2x1ZGUgInJ0Y190b29scy9zaW1wbGVfY29tbWFuZF9saW5lX3BhcnNlci5oIgpAQCAtMTMz
LDggKzEzNiwzNSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgIGNvbnN0
IHN0ZDo6dmVjdG9yPHNpemVfdD4gbWF0Y2hpbmdfaW5kaWNlcyA9CiAgICAgICB3ZWJydGM6OnRl
c3Q6OkZpbmRNYXRjaGluZ0ZyYW1lSW5kaWNlcyhyZWZlcmVuY2VfdmlkZW8sIHRlc3RfdmlkZW8p
OwogCi0gIHJlc3VsdHMuZnJhbWVzID0KLSAgICAgIHdlYnJ0Yzo6dGVzdDo6UnVuQW5hbHlzaXMo
cmVmZXJlbmNlX3ZpZGVvLCB0ZXN0X3ZpZGVvLCBtYXRjaGluZ19pbmRpY2VzKTsKKyAgLy8gQWxp
Z24gdGhlIHJlZmVyZW5jZSB2aWRlbyBib3RoIHRlbXBvcmFsbHkgYW5kIGdlb21ldHJpY2FsbHku
IEkuZS4gYWxpZ24gdGhlCisgIC8vIGZyYW1lcyB0byBtYXRjaCB1cCBpbiBvcmRlciB0byB0aGUg
dGVzdCB2aWRlbywgYW5kIGFsaWduIGEgY3JvcCByZWdpb24gb2YKKyAgLy8gdGhlIHJlZmVyZW5j
ZSB2aWRlbyB0byBtYXRjaCB1cCB0byB0aGUgdGVzdCB2aWRlby4KKyAgY29uc3QgcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6dGVzdDo6VmlkZW8+IGFsaWduZWRfcmVmZXJlbmNlX3ZpZGVvID0K
KyAgICAgIEFkanVzdENyb3BwaW5nKFJlb3JkZXJWaWRlbyhyZWZlcmVuY2VfdmlkZW8sIG1hdGNo
aW5nX2luZGljZXMpLAorICAgICAgICAgICAgICAgICAgICAgdGVzdF92aWRlbyk7CisKKyAgLy8g
Q2FsY3VsYXRlIGlmIHRoZXJlIGlzIGFueSBzeXN0ZW1hdGljIGNvbG9yIGRpZmZlcmVuY2UgYmV0
d2VlbiB0aGUgcmVmZXJlbmNlCisgIC8vIGFuZCB0ZXN0IHZpZGVvLgorICBjb25zdCB3ZWJydGM6
OnRlc3Q6OkNvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggY29sb3JfdHJhbnNmb3JtYXRpb24gPQor
ICAgICAgQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeChhbGlnbmVkX3JlZmVyZW5j
ZV92aWRlbywgdGVzdF92aWRlbyk7CisKKyAgY2hhciBidWZbMjU2XTsKKyAgcnRjOjpTaW1wbGVT
dHJpbmdCdWlsZGVyIHN0cmluZ19idWlsZGVyKGJ1Zik7CisgIGZvciAoaW50IGkgPSAwOyBpIDwg
MzsgKytpKSB7CisgICAgc3RyaW5nX2J1aWxkZXIgPDwgIlxuIjsKKyAgICBmb3IgKGludCBqID0g
MDsgaiA8IDQ7ICsraikKKyAgICAgIHN0cmluZ19idWlsZGVyLkFwcGVuZEZvcm1hdCgiJTYuMmYg
IiwgY29sb3JfdHJhbnNmb3JtYXRpb25baV1bal0pOworICB9CisgIHByaW50ZigiQWRqdXN0aW5n
IHRlc3QgdmlkZW8gd2l0aCBjb2xvciB0cmFuc2Zvcm1hdGlvbjogJXNcbiIsCisgICAgICAgICBz
dHJpbmdfYnVpbGRlci5zdHIoKSk7CisKKyAgLy8gQWRqdXN0IGFsbCBmcmFtZXMgaW4gdGhlIHRl
c3QgdmlkZW8gd2l0aCB0aGUgY2FsY3VsYXRlZCBjb2xvcgorICAvLyB0cmFuc2Zvcm1hdGlvbi4K
KyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6dGVzdDo6VmlkZW8+IGNvbG9yX2Fk
anVzdGVkX3Rlc3RfdmlkZW8gPQorICAgICAgQWRqdXN0Q29sb3JzKGNvbG9yX3RyYW5zZm9ybWF0
aW9uLCB0ZXN0X3ZpZGVvKTsKKworICByZXN1bHRzLmZyYW1lcyA9IHdlYnJ0Yzo6dGVzdDo6UnVu
QW5hbHlzaXMoCisgICAgICBhbGlnbmVkX3JlZmVyZW5jZV92aWRlbywgY29sb3JfYWRqdXN0ZWRf
dGVzdF92aWRlbywgbWF0Y2hpbmdfaW5kaWNlcyk7CiAKICAgY29uc3Qgc3RkOjp2ZWN0b3I8d2Vi
cnRjOjp0ZXN0OjpDbHVzdGVyPiBjbHVzdGVycyA9CiAgICAgICB3ZWJydGM6OnRlc3Q6OkNhbGN1
bGF0ZUZyYW1lQ2x1c3RlcnMobWF0Y2hpbmdfaW5kaWNlcyk7CkBAIC0xNTEsMjAgKzE4MSwxNyBA
QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgIGlmICghY2hhcnRqc29uX3Jl
c3VsdF9maWxlLmVtcHR5KCkpIHsKICAgICB3ZWJydGM6OnRlc3Q6OldyaXRlUGVyZlJlc3VsdHMo
Y2hhcnRqc29uX3Jlc3VsdF9maWxlKTsKICAgfQotICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
Ojp0ZXN0OjpWaWRlbz4gcmVvcmRlcmVkX3ZpZGVvID0KLSAgICAgIHdlYnJ0Yzo6dGVzdDo6R2Vu
ZXJhdGVBbGlnbmVkUmVmZXJlbmNlVmlkZW8ocmVmZXJlbmNlX3ZpZGVvLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ19pbmRpY2VzKTsK
ICAgc3RkOjpzdHJpbmcgYWxpZ25lZF9vdXRwdXRfZmlsZSA9IHBhcnNlci5HZXRGbGFnKCJhbGln
bmVkX291dHB1dF9maWxlIik7CiAgIGlmICghYWxpZ25lZF9vdXRwdXRfZmlsZS5lbXB0eSgpKSB7
Ci0gICAgd2VicnRjOjp0ZXN0OjpXcml0ZVZpZGVvVG9GaWxlKHJlb3JkZXJlZF92aWRlbywgYWxp
Z25lZF9vdXRwdXRfZmlsZSwKKyAgICB3ZWJydGM6OnRlc3Q6OldyaXRlVmlkZW9Ub0ZpbGUoYWxp
Z25lZF9yZWZlcmVuY2VfdmlkZW8sIGFsaWduZWRfb3V0cHV0X2ZpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qZnBzPSovMzApOwogICB9CiAgIHN0ZDo6c3RyaW5nIHl1
dl9kaXJlY3RvcnkgPSBwYXJzZXIuR2V0RmxhZygieXV2X2RpcmVjdG9yeSIpOwogICBpZiAoIXl1
dl9kaXJlY3RvcnkuZW1wdHkoKSkgewotICAgIHdlYnJ0Yzo6dGVzdDo6V3JpdGVWaWRlb1RvRmls
ZShyZW9yZGVyZWRfdmlkZW8sCisgICAgd2VicnRjOjp0ZXN0OjpXcml0ZVZpZGVvVG9GaWxlKGFs
aWduZWRfcmVmZXJlbmNlX3ZpZGVvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBKb2luRmlsZW5hbWUoeXV2X2RpcmVjdG9yeSwgInJlZi55dXYiKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLypmcHM9Ki8zMCk7Ci0gICAgd2VicnRjOjp0ZXN0OjpXcml0
ZVZpZGVvVG9GaWxlKHRlc3RfdmlkZW8sCisgICAgd2VicnRjOjp0ZXN0OjpXcml0ZVZpZGVvVG9G
aWxlKGNvbG9yX2FkanVzdGVkX3Rlc3RfdmlkZW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpvaW5GaWxlbmFtZSh5dXZfZGlyZWN0b3J5LCAidGVzdC55dXYiKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmcHM9Ki8zMCk7CiAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9m
cmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJlcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci9saW5lYXJf
bGVhc3Rfc3F1YXJlcy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDZkMjEyZDE3NGFiZTlkNzZjZTIwMDM5YTBi
YTgzZTNmZTg0MmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9z
cXVhcmVzLmNjCkBAIC0wLDAgKzEsMjAwIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lu
Y2x1ZGUgInJ0Y190b29scy9mcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJlcy5oIgor
CisjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorCituYW1lc3Bh
Y2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKwordGVtcGxhdGUgPGNsYXNzIFQ+Cit1c2lu
ZyBNYXRyaXggPSBzdGQ6OnZhbGFycmF5PHN0ZDo6dmFsYXJyYXk8VD4+OworCituYW1lc3BhY2Ug
eworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVD4KK1IgRG90UHJvZHVjdChjb25z
dCBzdGQ6OnZhbGFycmF5PFQ+JiBhLCBjb25zdCBzdGQ6OnZhbGFycmF5PFQ+JiBiKSB7CisgIFJU
Q19DSEVDS19FUShhLnNpemUoKSwgYi5zaXplKCkpOworICByZXR1cm4gc3RkOjppbm5lcl9wcm9k
dWN0KHN0ZDo6YmVnaW4oYSksIHN0ZDo6ZW5kKGEpLCBzdGQ6OmJlZ2luKGIpLCBSKDApKTsKK30K
KworLy8gQ2FsY3VsYXRlcyBhXlQgKiBiLgordGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1l
IFQ+CitNYXRyaXg8Uj4gTWF0cml4TXVsdGlwbHkoY29uc3QgTWF0cml4PFQ+JiBhLCBjb25zdCBN
YXRyaXg8VD4mIGIpIHsKKyAgTWF0cml4PFI+IHJlc3VsdChzdGQ6OnZhbGFycmF5PFI+KGEuc2l6
ZSgpKSwgYi5zaXplKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGEuc2l6ZSgpOyArK2kp
IHsKKyAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGIuc2l6ZSgpOyArK2opCisgICAgICByZXN1
bHRbal1baV0gPSBEb3RQcm9kdWN0PFI+KGFbaV0sIGJbal0pOworICB9CisKKyAgcmV0dXJuIHJl
c3VsdDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitNYXRyaXg8VD4gVHJhbnNwb3NlKGNv
bnN0IE1hdHJpeDxUPiYgbWF0cml4KSB7CisgIGlmIChtYXRyaXguc2l6ZSgpID09IDApCisgICAg
cmV0dXJuIE1hdHJpeDxUPigpOworICBjb25zdCBzaXplX3Qgcm93cyA9IG1hdHJpeC5zaXplKCk7
CisgIGNvbnN0IHNpemVfdCBjb2x1bW5zID0gbWF0cml4WzBdLnNpemUoKTsKKyAgTWF0cml4PFQ+
IHJlc3VsdChzdGQ6OnZhbGFycmF5PFQ+KHJvd3MpLCBjb2x1bW5zKTsKKworICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJvd3M7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgY29s
dW1uczsgKytqKQorICAgICAgcmVzdWx0W2pdW2ldID0gbWF0cml4W2ldW2pdOworICB9CisKKyAg
cmV0dXJuIHJlc3VsdDsKK30KKworLy8gQ29udmVydCB2YWxhcnJheSBmcm9tIHR5cGUgVCB0byB0
eXBlIFIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVD4KK3N0ZDo6dmFsYXJyYXk8
Uj4gQ29udmVydFRvKGNvbnN0IHN0ZDo6dmFsYXJyYXk8VD4mIHYpIHsKKyAgc3RkOjp2YWxhcnJh
eTxSPiByZXN1bHQodi5zaXplKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHYuc2l6ZSgp
OyArK2kpCisgICAgcmVzdWx0W2ldID0gc3RhdGljX2Nhc3Q8Uj4odltpXSk7CisgIHJldHVybiBy
ZXN1bHQ7Cit9CisKKy8vIENvbnZlcnQgdmFsYXJyYXkgTWF0cml4IGZyb20gdHlwZSBUIHRvIHR5
cGUgUi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUPgorTWF0cml4PFI+IENvbnZl
cnRUbyhjb25zdCBNYXRyaXg8VD4mIG1hdCkgeworICBNYXRyaXg8Uj4gcmVzdWx0KG1hdC5zaXpl
KCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdC5zaXplKCk7ICsraSkKKyAgICByZXN1
bHRbaV0gPSBDb252ZXJ0VG88Uj4obWF0W2ldKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8g
Q29udmVydCBmcm9tIHZhbGFycmF5IE1hdHJpeCBiYWNrIHRvIHRoZSBtb3JlIGNvbnZlbnRpb25h
bCBzdGQ6OnZlY3Rvci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RkOjp2ZWN0b3I8c3RkOjp2
ZWN0b3I8VD4+IFRvVmVjdG9yTWF0cml4KGNvbnN0IE1hdHJpeDxUPiYgbSkgeworICBzdGQ6OnZl
Y3RvcjxzdGQ6OnZlY3RvcjxUPj4gcmVzdWx0OworICBmb3IgKGNvbnN0IHN0ZDo6dmFsYXJyYXk8
VD4mIHYgOiBtKQorICAgIHJlc3VsdC5lbXBsYWNlX2JhY2soc3RkOjpiZWdpbih2KSwgc3RkOjpl
bmQodikpOworICByZXR1cm4gcmVzdWx0OworfQorCisvLyBDcmVhdGUgYSB2YWxhcnJheSBNYXRy
aXggZnJvbSBhIGNvbnZlbnRpb25hbCBzdGQ6OnZlY3Rvci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorTWF0cml4PFQ+IEZyb21WZWN0b3JNYXRyaXgoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0
b3I8VD4+JiBtYXQpIHsKKyAgTWF0cml4PFQ+IHJlc3VsdChtYXQuc2l6ZSgpKTsKKyAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtYXQuc2l6ZSgpOyArK2kpCisgICAgcmVzdWx0W2ldID0gc3RkOjp2
YWxhcnJheTxUPihtYXRbaV0uZGF0YSgpLCBtYXRbaV0uc2l6ZSgpKTsKKyAgcmV0dXJuIHJlc3Vs
dDsKK30KKworLy8gUmV0dXJucyB8bWF0cml4X3RvX2ludmVydHxeLTEgKiB8cmlnaHRfaGFuZF9t
YXRyaXh8LiB8bWF0cml4X3RvX2ludmVydHwgbXVzdAorLy8gaGF2ZSBzcXVhcmUgc2l6ZS4KK01h
dHJpeDxkb3VibGU+IEdhdXNzaWFuRWxpbWluYXRpb24oTWF0cml4PGRvdWJsZT4gbWF0cml4X3Rv
X2ludmVydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0cml4PGRvdWJs
ZT4gcmlnaHRfaGFuZF9tYXRyaXgpIHsKKyAgLy8gfG58IGlzIHRoZSB3aWR0aC9oZWlnaHQgb2Yg
fG1hdHJpeF90b19pbnZlcnR8LgorICBjb25zdCBzaXplX3QgbiA9IG1hdHJpeF90b19pbnZlcnQu
c2l6ZSgpOworICAvLyBNYWtlIHN1cmUgfG1hdHJpeF90b19pbnZlcnR8IGhhcyBzcXVhcmUgc2l6
ZS4KKyAgZm9yIChjb25zdCBzdGQ6OnZhbGFycmF5PGRvdWJsZT4mIGNvbHVtbiA6IG1hdHJpeF90
b19pbnZlcnQpCisgICAgUlRDX0NIRUNLX0VRKG4sIGNvbHVtbi5zaXplKCkpOworICAvLyBNYWtl
IHN1cmUgfHJpZ2h0X2hhbmRfbWF0cml4fCBoYXMgY29ycmVjdCBzaXplLgorICBmb3IgKGNvbnN0
IHN0ZDo6dmFsYXJyYXk8ZG91YmxlPiYgY29sdW1uIDogcmlnaHRfaGFuZF9tYXRyaXgpCisgICAg
UlRDX0NIRUNLX0VRKG4sIGNvbHVtbi5zaXplKCkpOworCisgIC8vIFRyYW5zcG9zZSB0aGUgbWF0
cmljZXMgYmVmb3JlIGFuZCBhZnRlciBzbyB0aGF0IHdlIGNhbiBwZXJmb3JtIEdhdXNzaWFuCisg
IC8vIGVsaW1pbmF0aW9uIG9uIHRoZSBjb2x1bW5zIGluc3RlYWQgb2YgdGhlIHJvd3MsIHNpbmNl
IHRoYXQgaXMgZWFzaWVyIHdpdGgKKyAgLy8gb3VyIHJlcHJlc2VudGF0aW9uLgorICBtYXRyaXhf
dG9faW52ZXJ0ID0gVHJhbnNwb3NlKG1hdHJpeF90b19pbnZlcnQpOworICByaWdodF9oYW5kX21h
dHJpeCA9IFRyYW5zcG9zZShyaWdodF9oYW5kX21hdHJpeCk7CisKKyAgLy8gTG9vcCBvdmVyIHRo
ZSBkaWFnb25hbCBvZiB8bWF0cml4X3RvX2ludmVydHwgYW5kIHBlcmZvcm0gY29sdW1uIHJlZHVj
dGlvbi4KKyAgLy8gQ29sdW1uIHJlZHVjdGlvbiBpcyBhIHNlcXVlbmNlIG9mIGVsZW1lbnRhcnkg
Y29sdW1uIG9wZXJhdGlvbnMgdGhhdCBpcworICAvLyBwZXJmb3JtZWQgb24gYm90aCB8bWF0cml4
X3RvX2ludmVydHwgYW5kIHxyaWdodF9oYW5kX21hdHJpeHwgdW50aWwKKyAgLy8gfG1hdHJpeF90
b19pbnZlcnR8IGhhcyBiZWVuIHRyYW5zZm9ybWVkIHRvIHRoZSBpZGVudGl0eSBtYXRyaXguCisg
IGZvciAoc2l6ZV90IGRpYWdvbmFsX2luZGV4ID0gMDsgZGlhZ29uYWxfaW5kZXggPCBuOyArK2Rp
YWdvbmFsX2luZGV4KSB7CisgICAgLy8gTWFrZSBzdXJlIHRoZSBkaWFnb25hbCBlbGVtZW50IGhh
cyB0aGUgaGlnaGVzdCBhYnNvbHV0ZSB2YWx1ZSBieQorICAgIC8vIHN3YXBwaW5nIGNvbHVtbnMg
aWYgbmVjZXNzYXJ5LgorICAgIGZvciAoc2l6ZV90IGNvbHVtbiA9IGRpYWdvbmFsX2luZGV4ICsg
MTsgY29sdW1uIDwgbjsgKytjb2x1bW4pIHsKKyAgICAgIGlmIChzdGQ6OmFicyhtYXRyaXhfdG9f
aW52ZXJ0W2NvbHVtbl1bZGlhZ29uYWxfaW5kZXhdKSA+CisgICAgICAgICAgc3RkOjphYnMobWF0
cml4X3RvX2ludmVydFtkaWFnb25hbF9pbmRleF1bZGlhZ29uYWxfaW5kZXhdKSkgeworICAgICAg
ICBzdGQ6OnN3YXAobWF0cml4X3RvX2ludmVydFtjb2x1bW5dLCBtYXRyaXhfdG9faW52ZXJ0W2Rp
YWdvbmFsX2luZGV4XSk7CisgICAgICAgIHN0ZDo6c3dhcChyaWdodF9oYW5kX21hdHJpeFtjb2x1
bW5dLCByaWdodF9oYW5kX21hdHJpeFtkaWFnb25hbF9pbmRleF0pOworICAgICAgfQorICAgIH0K
KworICAgIC8vIFJlZHVjZSB0aGUgZGlhZ29uYWwgZWxlbWVudCB0byBiZSAxLCBieSBkaXZpZGlu
ZyB0aGUgY29sdW1uIHdpdGggdGhhdAorICAgIC8vIHZhbHVlLiBJZiB0aGUgZGlhZ29uYWwgZWxl
bWVudCBpcyAwLCBpdCBtZWFucyB0aGUgc3lzdGVtIG9mIGVxdWF0aW9ucyBoYXMKKyAgICAvLyBt
YW55IHNvbHV0aW9ucywgYW5kIGluIHRoYXQgY2FzZSB3ZSB3aWxsIHJldHVybiBhbiBhcmJpdHJh
cnkgc29sdXRpb24uCisgICAgaWYgKG1hdHJpeF90b19pbnZlcnRbZGlhZ29uYWxfaW5kZXhdW2Rp
YWdvbmFsX2luZGV4XSA9PSAwLjApIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIk1h
dHJpeCBpcyBub3QgaW52ZXJ0aWJsZSwgaWdub3JpbmcuIjsKKyAgICAgIGNvbnRpbnVlOworICAg
IH0KKyAgICBjb25zdCBkb3VibGUgZGlhZ29uYWxfZWxlbWVudCA9CisgICAgICAgIG1hdHJpeF90
b19pbnZlcnRbZGlhZ29uYWxfaW5kZXhdW2RpYWdvbmFsX2luZGV4XTsKKyAgICBtYXRyaXhfdG9f
aW52ZXJ0W2RpYWdvbmFsX2luZGV4XSAvPSBkaWFnb25hbF9lbGVtZW50OworICAgIHJpZ2h0X2hh
bmRfbWF0cml4W2RpYWdvbmFsX2luZGV4XSAvPSBkaWFnb25hbF9lbGVtZW50OworCisgICAgLy8g
RWxpbWluYXRlIHRoZSBvdGhlciBlbnRyaWVzIGluIHJvdyB8ZGlhZ29uYWxfaW5kZXh8IGJ5IG1h
a2luZyB0aGVtIHplcm8uCisgICAgZm9yIChzaXplX3QgY29sdW1uID0gMDsgY29sdW1uIDwgbjsg
Kytjb2x1bW4pIHsKKyAgICAgIGlmIChjb2x1bW4gPT0gZGlhZ29uYWxfaW5kZXgpCisgICAgICAg
IGNvbnRpbnVlOworICAgICAgY29uc3QgZG91YmxlIHJvd19lbGVtZW50ID0gbWF0cml4X3RvX2lu
dmVydFtjb2x1bW5dW2RpYWdvbmFsX2luZGV4XTsKKyAgICAgIG1hdHJpeF90b19pbnZlcnRbY29s
dW1uXSAtPQorICAgICAgICAgIHJvd19lbGVtZW50ICogbWF0cml4X3RvX2ludmVydFtkaWFnb25h
bF9pbmRleF07CisgICAgICByaWdodF9oYW5kX21hdHJpeFtjb2x1bW5dIC09CisgICAgICAgICAg
cm93X2VsZW1lbnQgKiByaWdodF9oYW5kX21hdHJpeFtkaWFnb25hbF9pbmRleF07CisgICAgfQor
ICB9CisKKyAgLy8gVHJhbnNwb3NlIHRoZSByZXN1bHQgYmVmb3JlIHJldHVybmluZyBpdCwgZXhw
bGFpbmVkIGluIGNvbW1lbnQgYWJvdmUuCisgIHJldHVybiBUcmFuc3Bvc2UocmlnaHRfaGFuZF9t
YXRyaXgpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNx
dWFyZXM6OkluY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVzKCkgPSBkZWZhdWx0OworSW5jcmVt
ZW50YWxMaW5lYXJMZWFzdFNxdWFyZXM6On5JbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlcygp
ID0gZGVmYXVsdDsKKwordm9pZCBJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlczo6QWRkT2Jz
ZXJ2YXRpb25zKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+PiYg
eCwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjx1aW50OF90Pj4mIHkpIHsKKyAg
aWYgKHguZW1wdHkoKSB8fCB5LmVtcHR5KCkpCisgICAgcmV0dXJuOworICAvLyBNYWtlIHN1cmUg
YWxsIGNvbHVtbnMgYXJlIHRoZSBzYW1lIHNpemUuCisgIGNvbnN0IHNpemVfdCBuID0geFswXS5z
aXplKCk7CisgIGZvciAoY29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4mIGNvbHVtbiA6IHgpCisg
ICAgUlRDX0NIRUNLX0VRKG4sIGNvbHVtbi5zaXplKCkpOworICBmb3IgKGNvbnN0IHN0ZDo6dmVj
dG9yPHVpbnQ4X3Q+JiBjb2x1bW4gOiB5KQorICAgIFJUQ19DSEVDS19FUShuLCBjb2x1bW4uc2l6
ZSgpKTsKKworICAvLyBXZSB3aWxsIG11bHRpcGx5IHRoZSB1aW50OF90IHZhbHVlcyB0b2dldGhl
ciwgc28gd2UgbmVlZCB0byBleHBhbmQgdG8gYQorICAvLyB0eXBlIHRoYXQgY2FuIHNhZmVseSBz
dG9yZSB0aG9zZSB2YWx1ZXMsIGkuZS4gdWludDE2X3QuCisgIGNvbnN0IE1hdHJpeDx1aW50MTZf
dD4gdW5wYWNrZWRfeCA9IENvbnZlcnRUbzx1aW50MTZfdD4oRnJvbVZlY3Rvck1hdHJpeCh4KSk7
CisgIGNvbnN0IE1hdHJpeDx1aW50MTZfdD4gdW5wYWNrZWRfeSA9IENvbnZlcnRUbzx1aW50MTZf
dD4oRnJvbVZlY3Rvck1hdHJpeCh5KSk7CisKKyAgY29uc3QgTWF0cml4PHVpbnQ2NF90PiB4eCA9
IE1hdHJpeE11bHRpcGx5PHVpbnQ2NF90Pih1bnBhY2tlZF94LCB1bnBhY2tlZF94KTsKKyAgY29u
c3QgTWF0cml4PHVpbnQ2NF90PiB4eSA9IE1hdHJpeE11bHRpcGx5PHVpbnQ2NF90Pih1bnBhY2tl
ZF94LCB1bnBhY2tlZF95KTsKKyAgaWYgKHN1bV94eCAmJiBzdW1feHkpIHsKKyAgICAqc3VtX3h4
ICs9IHh4OworICAgICpzdW1feHkgKz0geHk7CisgIH0gZWxzZSB7CisgICAgc3VtX3h4ID0geHg7
CisgICAgc3VtX3h5ID0geHk7CisgIH0KK30KKworc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZG91
YmxlPj4KK0luY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVzOjpHZXRCZXN0U29sdXRpb24oKSBj
b25zdCB7CisgIFJUQ19DSEVDSyhzdW1feHggJiYgc3VtX3h5KSA8PCAiTm8gb2JzZXJ2YXRpb25z
IGhhdmUgYmVlbiBhZGRlZCI7CisgIHJldHVybiBUb1ZlY3Rvck1hdHJpeChHYXVzc2lhbkVsaW1p
bmF0aW9uKENvbnZlcnRUbzxkb3VibGU+KCpzdW1feHgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0VG88ZG91YmxlPigqc3VtX3h5KSkpOworfQor
Cit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2Zy
YW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvbGluZWFyX2xl
YXN0X3NxdWFyZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjA3ZGMxYmRlNjQwYWZiNzkyZjFkYzc2MjViM2U2
M2Q4YjU4MmIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVh
cmVzLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYg
UlRDX1RPT0xTX0ZSQU1FX0FOQUxZWkVSX0xJTkVBUl9MRUFTVF9TUVVBUkVTX0hfCisjZGVmaW5l
IFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9MSU5FQVJfTEVBU1RfU1FVQVJFU19IXworCisjaW5j
bHVkZSA8dmFsYXJyYXk+CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgImFic2wvdHlwZXMv
b3B0aW9uYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKKy8v
IFRoaXMgY2xhc3MgaXMgdXNlZCBmb3IgZmluZGluZyBhIG1hdHJpeCBiIHRoYXQgcm91Z2hseSBz
b2x2ZXMgdGhlIGVxdWF0aW9uOgorLy8geSA9IHggKiBiLiBUaGlzIGlzIGdlbmVyYWxseSBpbXBv
c3NpYmxlIHRvIGRvIGV4YWN0bHksIHNvIHRoZSBwcm9ibGVtIGlzCisvLyByZXBocmFzZWQgYXMg
ZmluZGluZyB0aGUgbWF0cml4IGIgdGhhdCBtaW5pbWl6ZXMgdGhlIGRpZmZlcmVuY2U6CisvLyB8
eSAtIHggKiBifF4yLiBDYWxsaW5nIG11bHRpcGxlIEFkZE9ic2VydmF0aW9ucygpIGlzIGVxdWl2
YWxlbnQgdG8KKy8vIGNvbmNhdGVuYXRpbmcgdGhlIG9ic2VydmF0aW9uIHZlY3RvcnMgYW5kIGNh
bGxpbmcgQWRkT2JzZXJ2YXRpb25zKCkgb25jZS4gVGhlCisvLyByZWFzb24gZm9yIGRvaW5nIGl0
IGluY3JlbWVudGFsbHkgaXMgdGhhdCB3ZSBjYW4ndCBzdG9yZSB0aGUgcmF3IFlVViB2YWx1ZXMK
Ky8vIGZvciBhIHdob2xlIHZpZGVvIGZpbGUgaW4gbWVtb3J5IGF0IG9uY2UuIFRoaXMgY2xhc3Mg
aGFzIGEgY29uc3RhbnQgbWVtb3J5CisvLyBmb290cHJpbnQsIHJlZ2FyZGxlc3MgaG93IG1heSB0
aW1lcyBBZGRPYnNlcnZhdGlvbnMoKSBpcyBjYWxsZWQuCitjbGFzcyBJbmNyZW1lbnRhbExpbmVh
ckxlYXN0U3F1YXJlcyB7CisgcHVibGljOgorICBJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJl
cygpOworICB+SW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMoKTsKKworICAvLyBBZGQgYSBu
dW1iZXIgb2Ygb2JzZXJ2YXRpb25zLiBUaGUgc3VidmVjdG9ycyBvZiB4IGFuZCB5IG11c3QgaGF2
ZSB0aGUgc2FtZQorICAvLyBsZW5ndGguCisgIHZvaWQgQWRkT2JzZXJ2YXRpb25zKGNvbnN0IHN0
ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+PiYgeCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8dWludDhfdD4+JiB5KTsKKworICAvLyBD
YWxjdWxhdGUgYW5kIHJldHVybiB0aGUgYmVzdCBsaW5lYXIgc29sdXRpb24sIGdpdmVuIHRoZSBv
YnNlcnZhdGlvbnMgc28KKyAgLy8gZmFyLgorICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjxkb3Vi
bGU+PiBHZXRCZXN0U29sdXRpb24oKSBjb25zdDsKKworIHByaXZhdGU6CisgIC8vIFJ1bm5pbmcg
c3VtIG9mIHheVCAqIHguCisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6dmFsYXJyYXk8c3RkOjp2YWxh
cnJheTx1aW50NjRfdD4+PiBzdW1feHg7CisgIC8vIFJ1bm5pbmcgc3VtIG9mIHheVCAqIHkuCisg
IGFic2w6Om9wdGlvbmFsPHN0ZDo6dmFsYXJyYXk8c3RkOjp2YWxhcnJheTx1aW50NjRfdD4+PiBz
dW1feHk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YworCisjZW5kaWYgIC8vIFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9MSU5FQVJfTEVBU1RfU1FV
QVJFU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rv
b2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzX3VuaXR0ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIwNzRhYWNjZTg1NmE4ZmY2Mzk2OTZiODg2MDYyNGE5ZWQ5OWM3Y2YKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
dG9vbHMvZnJhbWVfYW5hbHl6ZXIvbGluZWFyX2xlYXN0X3NxdWFyZXNfdW5pdHRlc3QuY2MKQEAg
LTAsMCArMSw5MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfdG9v
bHMvZnJhbWVfYW5hbHl6ZXIvbGluZWFyX2xlYXN0X3NxdWFyZXMuaCIKKworI2luY2x1ZGUgInRl
c3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKK1RF
U1QoTGluZWFyTGVhc3RTcXVhcmVzLCBTY2FsYXJJZGVudGl0eU9uZU9ic2VydmF0aW9uKSB7Cisg
IEluY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVzIGxsczsKKyAgbGxzLkFkZE9ic2VydmF0aW9u
cyh7ezF9fSwge3sxfX0pOworICBFWFBFQ1RfRVEoc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZG91
YmxlPj4oe3sxLjB9fSksIGxscy5HZXRCZXN0U29sdXRpb24oKSk7Cit9CisKK1RFU1QoTGluZWFy
TGVhc3RTcXVhcmVzLCBTY2FsYXJJZGVudGl0eVR3b09ic2VydmF0aW9uc09uZUNhbGwpIHsKKyAg
SW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMgbGxzOworICBsbHMuQWRkT2JzZXJ2YXRpb25z
KHt7MSwgMn19LCB7ezEsIDJ9fSk7CisgIEVYUEVDVF9FUShzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rv
cjxkb3VibGU+Pih7ezEuMH19KSwgbGxzLkdldEJlc3RTb2x1dGlvbigpKTsKK30KKworVEVTVChM
aW5lYXJMZWFzdFNxdWFyZXMsIFNjYWxhcklkZW50aXR5VHdvT2JzZXJ2YXRpb25zVHdvQ2FsbHMp
IHsKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMgbGxzOworICBsbHMuQWRkT2JzZXJ2
YXRpb25zKHt7MX19LCB7ezF9fSk7CisgIGxscy5BZGRPYnNlcnZhdGlvbnMoe3syfX0sIHt7Mn19
KTsKKyAgRVhQRUNUX0VRKHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4+KHt7MS4wfX0p
LCBsbHMuR2V0QmVzdFNvbHV0aW9uKCkpOworfQorCitURVNUKExpbmVhckxlYXN0U3F1YXJlcywg
TWF0cml4SWRlbnRpdHlPbmVPYnNlcnZhdGlvbikgeworICBJbmNyZW1lbnRhbExpbmVhckxlYXN0
U3F1YXJlcyBsbHM7CisgIGxscy5BZGRPYnNlcnZhdGlvbnMoe3sxLCAyfSwgezMsIDR9fSwge3sx
LCAyfSwgezMsIDR9fSk7CisgIEVYUEVDVF9FUShzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjxkb3Vi
bGU+Pih7ezEuMCwgMC4wfSwgezAuMCwgMS4wfX0pLAorICAgICAgICAgICAgbGxzLkdldEJlc3RT
b2x1dGlvbigpKTsKK30KKworVEVTVChMaW5lYXJMZWFzdFNxdWFyZXMsIE1hdHJpeE1hbnlPYnNl
cnZhdGlvbnMpIHsKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMgbGxzOworICAvLyBU
ZXN0IHRoYXQgd2UgY2FuIGZpbmQgdGhlIHNvbHV0aW9uIG9mIHRoZSBvdmVyc3BlY2lmaWVkIGVx
dWF0aW9uIHN5c3RlbToKKyAgLy8gWzEsIDJdIFsxLCAzXSA9IFs1LCAgMTFdCisgIC8vIFszLCA0
XSBbMiwgNF0gICBbMTEsIDI1XQorICAvLyBbNSwgNl0gICAgICAgICAgWzE3LCAzOV0KKyAgbGxz
LkFkZE9ic2VydmF0aW9ucyh7ezF9LCB7Mn19LCB7ezV9LCB7MTF9fSk7CisgIGxscy5BZGRPYnNl
cnZhdGlvbnMoe3szfSwgezR9fSwge3sxMX0sIHsyNX19KTsKKyAgbGxzLkFkZE9ic2VydmF0aW9u
cyh7ezV9LCB7Nn19LCB7ezE3fSwgezM5fX0pOworCisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6
dmVjdG9yPGRvdWJsZT4+IHJlc3VsdCA9IGxscy5HZXRCZXN0U29sdXRpb24oKTsKKyAgLy8gV2Ug
YWxsb3cgc29tZSBudW1lcmljYWwgZmxleGliaWxpdHkgaGVyZS4KKyAgRVhQRUNUX0RPVUJMRV9F
USgxLjAsIHJlc3VsdFswXVswXSk7CisgIEVYUEVDVF9ET1VCTEVfRVEoMi4wLCByZXN1bHRbMF1b
MV0pOworICBFWFBFQ1RfRE9VQkxFX0VRKDMuMCwgcmVzdWx0WzFdWzBdKTsKKyAgRVhQRUNUX0RP
VUJMRV9FUSg0LjAsIHJlc3VsdFsxXVsxXSk7Cit9CisKK1RFU1QoTGluZWFyTGVhc3RTcXVhcmVz
LCBNYXRyaXhWZWN0b3JPbmVPYnNlcnZhdGlvbikgeworICBJbmNyZW1lbnRhbExpbmVhckxlYXN0
U3F1YXJlcyBsbHM7CisgIC8vIFRlc3QgdGhhdCB3ZSBjYW4gZmluZCB0aGUgc29sdXRpb24gb2Yg
dGhlIG92ZXJzcGVjaWZpZWQgZXF1YXRpb24gc3lzdGVtOgorICAvLyBbMSwgMl0gWzFdID0gWzVd
CisgIC8vIFszLCA0XSBbMl0gICBbMTFdCisgIC8vIFs1LCA2XSAgICAgICBbMTddCisgIGxscy5B
ZGRPYnNlcnZhdGlvbnMoe3sxLCAzLCA1fSwgezIsIDQsIDZ9fSwge3s1LCAxMSwgMTd9fSk7CisK
KyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZG91YmxlPj4gcmVzdWx0ID0gbGxzLkdl
dEJlc3RTb2x1dGlvbigpOworICAvLyBXZSBhbGxvdyBzb21lIG51bWVyaWNhbCBmbGV4aWJpbGl0
eSBoZXJlLgorICBFWFBFQ1RfRE9VQkxFX0VRKDEuMCwgcmVzdWx0WzBdWzBdKTsKKyAgRVhQRUNU
X0RPVUJMRV9FUSgyLjAsIHJlc3VsdFswXVsxXSk7Cit9CisKK1RFU1QoTGluZWFyTGVhc3RTcXVh
cmVzLCBMaW5lYXJMZWFzdFNxdWFyZXNOb25QZXJmZWN0U29sdXRpb24pIHsKKyAgSW5jcmVtZW50
YWxMaW5lYXJMZWFzdFNxdWFyZXMgbGxzOworICAvLyBUZXN0IHRoYXQgd2UgY2FuIGZpbmQgdGhl
IG5vbi1wZXJmZWN0IHNvbHV0aW9uIG9mIHRoZSBvdmVyc3BlY2lmaWVkCisgIC8vIGVxdWF0aW9u
IHN5c3RlbToKKyAgLy8gWzFdIFsyMF0gPSBbMjFdCisgIC8vIFsyXSAgICAgICAgWzM5XQorICAv
LyBbM10gICAgICAgIFs2MF0KKyAgLy8gWzJdICAgICAgICBbNDFdCisgIC8vIFsxXSAgICAgICAg
WzE5XQorICBsbHMuQWRkT2JzZXJ2YXRpb25zKHt7MSwgMiwgMywgMiwgMX19LCB7ezIxLCAzOSwg
NjAsIDQxLCAxOX19KTsKKworICBFWFBFQ1RfRE9VQkxFX0VRKDIwLjAsIGxscy5HZXRCZXN0U29s
dXRpb24oKVswXVswXSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFt
ZV9hbmFseXplci92aWRlb19jb2xvcl9hbGlnbmVyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhZmIxZTQ2OTUw
Zjk5MjFmOTAwYWFhNmExZDE4OWUwYTJhNWQyMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6
ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5jYwpAQCAtMCwwICsxLDIzOSBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fY29s
b3JfYWxpZ25lci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNtYXRoPgor
I2luY2x1ZGUgPGRlcXVlPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisK
KyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1
ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCisjaW5j
bHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzLmgiCisj
aW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMu
aCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvY29tcGFyZS5o
IgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9wbGFuYXJfZnVu
Y3Rpb25zLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L3Nj
YWxlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCituYW1lc3Bh
Y2UgeworCisvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIEFkanVzdENvbG9ycygpLiBUaGlzIGZ1bmN0
aW9ucyBjYWxjdWxhdGVzIGEgc2luZ2xlIG91dHB1dAorLy8gcm93IGZvciB5IHdpdGggdGhlIGdp
dmVuIGNvbG9yIGNvZWZmaWNpZW50cy4gVGhlIHUvdiBjaGFubmVscyBhcmUgYXNzdW1lZCB0bwor
Ly8gYmUgc3Vic2FtcGxlZCBieSBhIGZhY3RvciBvZiAyLCB3aGljaCBpcyB0aGUgY2FzZSBvZiBJ
NDIwLgordm9pZCBDYWxjdWxhdGVZQ2hhbm5lbChydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90
PiB5X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVp
bnQ4X3Q+IHVfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29u
c3QgdWludDhfdD4gdl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmFy
cmF5PGZsb2F0LCA0PiYgY29lZmYsCisgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlW
aWV3PHVpbnQ4X3Q+IG91dHB1dCkgeworICBSVENfQ0hFQ0tfRVEoeV9kYXRhLnNpemUoKSwgb3V0
cHV0LnNpemUoKSk7CisgIC8vIEVhY2ggdS92IGVsZW1lbnQgcmVwcmVzZW50cyB0d28geSBlbGVt
ZW50cy4gTWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIHRvCisgIC8vIGNvdmVyIHRoZSBZIHZhbHVl
cy4KKyAgUlRDX0NIRUNLX0dFKHVfZGF0YS5zaXplKCkgKiAyLCB5X2RhdGEuc2l6ZSgpKTsKKyAg
UlRDX0NIRUNLX0dFKHZfZGF0YS5zaXplKCkgKiAyLCB5X2RhdGEuc2l6ZSgpKTsKKworICAvLyBE
byB0d28gcGl4ZWxzIGF0IGEgdGltZSBzaW5jZSB1L3YgYXJlIHN1YnNhbXBsZWQuCisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpICogMiA8IHlfZGF0YS5zaXplKCkgLSAxOyArK2kpIHsKKyAgICBjb25z
dCBmbG9hdCB1dl9jb250cmlidXRpb24gPQorICAgICAgICBjb2VmZlsxXSAqIHVfZGF0YVtpXSAr
IGNvZWZmWzJdICogdl9kYXRhW2ldICsgY29lZmZbM107CisKKyAgICBjb25zdCBmbG9hdCB2YWww
ID0gY29lZmZbMF0gKiB5X2RhdGFbaSAqIDIgKyAwXSArIHV2X2NvbnRyaWJ1dGlvbjsKKyAgICBj
b25zdCBmbG9hdCB2YWwxID0gY29lZmZbMF0gKiB5X2RhdGFbaSAqIDIgKyAxXSArIHV2X2NvbnRy
aWJ1dGlvbjsKKworICAgIC8vIENsYW1wIHJlc3VsdCB0byBhIGJ5dGUuCisgICAgb3V0cHV0W2kg
KiAyICsgMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PigKKyAgICAgICAgc3RkOjpyb3VuZChzdGQ6
Om1heCgwLjBmLCBzdGQ6Om1pbih2YWwwLCAyNTUuMGYpKSkpOworICAgIG91dHB1dFtpICogMiAr
IDFdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oCisgICAgICAgIHN0ZDo6cm91bmQoc3RkOjptYXgo
MC4wZiwgc3RkOjptaW4odmFsMSwgMjU1LjBmKSkpKTsKKyAgfQorCisgIC8vIEhhbmRsZSB0aGUg
bGFzdCBwaXhlbCBmb3Igb2RkIHdpZHRocy4KKyAgaWYgKHlfZGF0YS5zaXplKCkgJSAyID09IDEp
IHsKKyAgICBjb25zdCBmbG9hdCB2YWwgPSBjb2VmZlswXSAqIHlfZGF0YVt5X2RhdGEuc2l6ZSgp
IC0gMV0gKworICAgICAgICAgICAgICAgICAgICAgIGNvZWZmWzFdICogdV9kYXRhWyh5X2RhdGEu
c2l6ZSgpIC0gMSkgLyAyXSArCisgICAgICAgICAgICAgICAgICAgICAgY29lZmZbMl0gKiB2X2Rh
dGFbKHlfZGF0YS5zaXplKCkgLSAxKSAvIDJdICsgY29lZmZbM107CisgICAgb3V0cHV0W3lfZGF0
YS5zaXplKCkgLSAxXSA9CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0ZDo6cm91bmQo
c3RkOjptYXgoMC4wZiwgc3RkOjptaW4odmFsLCAyNTUuMGYpKSkpOworICB9Cit9CisKKy8vIEhl
bHBlciBmdW5jdGlvbiBmb3IgQWRqdXN0Q29sb3JzKCkuIFRoaXMgZnVuY3Rpb25zIGNhbGN1bGF0
ZXMgYSBzaW5nbGUgb3V0cHV0CisvLyByb3cgZm9yIGVpdGhlciB1IG9yIHYsIHdpdGggdGhlIGdp
dmVuIGNvbG9yIGNvZWZmaWNpZW50cy4gWSwgVSwgYW5kIFYgYXJlCisvLyBhc3N1bWVkIHRvIGJl
IHRoZSBzYW1lIHNpemUsIGkuZS4gbm8gc3Vic2FtcGxpbmcuCit2b2lkIENhbGN1bGF0ZVVWQ2hh
bm5lbChydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiB5X2RhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiB1X2RhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiB2X2RhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCA0PiYgY29lZmYs
CisgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzx1aW50OF90PiBvdXRwdXQp
IHsKKyAgUlRDX0NIRUNLX0VRKHlfZGF0YS5zaXplKCksIHVfZGF0YS5zaXplKCkpOworICBSVENf
Q0hFQ0tfRVEoeV9kYXRhLnNpemUoKSwgdl9kYXRhLnNpemUoKSk7CisgIFJUQ19DSEVDS19FUSh5
X2RhdGEuc2l6ZSgpLCBvdXRwdXQuc2l6ZSgpKTsKKworICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8
IHlfZGF0YS5zaXplKCk7ICsreCkgeworICAgIGNvbnN0IGZsb2F0IHZhbCA9IGNvZWZmWzBdICog
eV9kYXRhW3hdICsgY29lZmZbMV0gKiB1X2RhdGFbeF0gKworICAgICAgICAgICAgICAgICAgICAg
IGNvZWZmWzJdICogdl9kYXRhW3hdICsgY29lZmZbM107CisgICAgLy8gQ2xhbXAgcmVzdWx0IHRv
IGEgYnl0ZS4KKyAgICBvdXRwdXRbeF0gPQorICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90Pihz
dGQ6OnJvdW5kKHN0ZDo6bWF4KDAuMGYsIHN0ZDo6bWluKHZhbCwgMjU1LjBmKSkpKTsKKyAgfQor
fQorCisvLyBDb252ZXJ0IGEgZnJhbWUgdG8gZm91ciB2ZWN0b3JzIGNvbnNpc3Rpbmcgb2YgW3ks
IHUsIHYsIDFdLgorc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8dWludDhfdD4+IEZsYXR0ZW5ZdXZE
YXRhKAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYg
ZnJhbWUpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8dWludDhfdD4+IHJlc3VsdCgKKyAg
ICAgIDQsIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGZyYW1lLT5DaHJvbWFXaWR0aCgpICogZnJhbWUt
PkNocm9tYUhlaWdodCgpKSk7CisKKyAgLy8gRG93bnNjYWxlIHRoZSBZIHBsYW5lIHNvIHRoYXQg
YWxsIFlVViBwbGFuZXMgYXJlIHRoZSBzYW1lIHNpemUuCisgIGxpYnl1djo6U2NhbGVQbGFuZShm
cmFtZS0+RGF0YVkoKSwgZnJhbWUtPlN0cmlkZVkoKSwgZnJhbWUtPndpZHRoKCksCisgICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+aGVpZ2h0KCksIHJlc3VsdFswXS5kYXRhKCksIGZyYW1lLT5D
aHJvbWFXaWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPkNocm9tYVdpZHRoKCks
IGZyYW1lLT5DaHJvbWFIZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgIGxpYnl1djo6a0Zp
bHRlckJveCk7CisKKyAgbGlieXV2OjpDb3B5UGxhbmUoZnJhbWUtPkRhdGFVKCksIGZyYW1lLT5T
dHJpZGVVKCksIHJlc3VsdFsxXS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5D
aHJvbWFXaWR0aCgpLCBmcmFtZS0+Q2hyb21hV2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAg
ZnJhbWUtPkNocm9tYUhlaWdodCgpKTsKKworICBsaWJ5dXY6OkNvcHlQbGFuZShmcmFtZS0+RGF0
YVYoKSwgZnJhbWUtPlN0cmlkZVYoKSwgcmVzdWx0WzJdLmRhdGEoKSwKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPkNocm9tYVdpZHRoKCksIGZyYW1lLT5DaHJvbWFXaWR0aCgpLAorICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+Q2hyb21hSGVpZ2h0KCkpOworCisgIHN0ZDo6ZmlsbChyZXN1
bHRbM10uYmVnaW4oKSwgcmVzdWx0WzNdLmVuZCgpLCAxdSk7CisKKyAgcmV0dXJuIHJlc3VsdDsK
K30KKworQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCBWZWN0b3JUb0NvbG9yTWF0cml4KAorICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4+JiB2KSB7CisgIENvbG9yVHJh
bnNmb3JtYXRpb25NYXRyaXggY29sb3JfdHJhbnNmb3JtYXRpb247CisgIGZvciAoaW50IGkgPSAw
OyBpIDwgMzsgKytpKSB7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCA0OyArK2opCisgICAgICBj
b2xvcl90cmFuc2Zvcm1hdGlvbltpXVtqXSA9IHZbaV1bal07CisgIH0KKyAgcmV0dXJuIGNvbG9y
X3RyYW5zZm9ybWF0aW9uOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworQ29sb3JUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBDYWxjdWxhdGVDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4KAorICAgIGNvbnN0
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgcmVmZXJlbmNlX2ZyYW1l
LAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgdGVz
dF9mcmFtZSkgeworICBJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlcyBpbmNyZW1lbnRhbF9s
bHM7CisgIGluY3JlbWVudGFsX2xscy5BZGRPYnNlcnZhdGlvbnMoRmxhdHRlbll1dkRhdGEodGVz
dF9mcmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhdHRlbll1dkRh
dGEocmVmZXJlbmNlX2ZyYW1lKSk7CisgIHJldHVybiBWZWN0b3JUb0NvbG9yTWF0cml4KGluY3Jl
bWVudGFsX2xscy5HZXRCZXN0U29sdXRpb24oKSk7Cit9CisKK0NvbG9yVHJhbnNmb3JtYXRpb25N
YXRyaXggQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICBjb25zdCBydGM6
OnNjb3BlZF9yZWZwdHI8VmlkZW8+JiByZWZlcmVuY2VfdmlkZW8sCisgICAgY29uc3QgcnRjOjpz
Y29wZWRfcmVmcHRyPFZpZGVvPiYgdGVzdF92aWRlbykgeworICBSVENfQ0hFQ0tfR0UocmVmZXJl
bmNlX3ZpZGVvLT5udW1iZXJfb2ZfZnJhbWVzKCksCisgICAgICAgICAgICAgICB0ZXN0X3ZpZGVv
LT5udW1iZXJfb2ZfZnJhbWVzKCkpOworCisgIEluY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVz
IGluY3JlbWVudGFsX2xsczsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X3ZpZGVvLT5u
dW1iZXJfb2ZfZnJhbWVzKCk7ICsraSkgeworICAgIGluY3JlbWVudGFsX2xscy5BZGRPYnNlcnZh
dGlvbnMoCisgICAgICAgIEZsYXR0ZW5ZdXZEYXRhKHRlc3RfdmlkZW8tPkdldEZyYW1lKGkpKSwK
KyAgICAgICAgRmxhdHRlbll1dkRhdGEocmVmZXJlbmNlX3ZpZGVvLT5HZXRGcmFtZShpKSkpOwor
ICB9CisKKyAgcmV0dXJuIFZlY3RvclRvQ29sb3JNYXRyaXgoaW5jcmVtZW50YWxfbGxzLkdldEJl
c3RTb2x1dGlvbigpKTsKK30KKworcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiBBZGp1c3RDb2xv
cnMoCisgICAgY29uc3QgQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29sb3JfdHJhbnNmb3Jt
YXRpb24sCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgdmlkZW8pIHsKKyAg
Y2xhc3MgQ29sb3JBZGp1c3RlZFZpZGVvIDogcHVibGljIHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxW
aWRlbz4geworICAgcHVibGljOgorICAgIENvbG9yQWRqdXN0ZWRWaWRlbyhjb25zdCBDb2xvclRy
YW5zZm9ybWF0aW9uTWF0cml4JiBjb2xvcl90cmFuc2Zvcm1hdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgdmlkZW8pCisgICAgICAg
IDogY29sb3JfdHJhbnNmb3JtYXRpb25fKGNvbG9yX3RyYW5zZm9ybWF0aW9uKSwgdmlkZW9fKHZp
ZGVvKSB7fQorCisgICAgaW50IHdpZHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlkZW9f
LT53aWR0aCgpOyB9CisgICAgaW50IGhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZp
ZGVvXy0+aGVpZ2h0KCk7IH0KKyAgICBzaXplX3QgbnVtYmVyX29mX2ZyYW1lcygpIGNvbnN0IG92
ZXJyaWRlIHsKKyAgICAgIHJldHVybiB2aWRlb18tPm51bWJlcl9vZl9mcmFtZXMoKTsKKyAgICB9
CisKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gR2V0RnJhbWUo
CisgICAgICAgIHNpemVfdCBpbmRleCkgY29uc3Qgb3ZlcnJpZGUgeworICAgICAgcmV0dXJuIEFk
anVzdENvbG9ycyhjb2xvcl90cmFuc2Zvcm1hdGlvbl8sIHZpZGVvXy0+R2V0RnJhbWUoaW5kZXgp
KTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgY29uc3QgQ29sb3JUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBjb2xvcl90cmFuc2Zvcm1hdGlvbl87CisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRy
PFZpZGVvPiB2aWRlb187CisgIH07CisKKyAgcmV0dXJuIG5ldyBDb2xvckFkanVzdGVkVmlkZW8o
Y29sb3JfdHJhbnNmb3JtYXRpb24sIHZpZGVvKTsKK30KKworcnRjOjpzY29wZWRfcmVmcHRyPEk0
MjBCdWZmZXJJbnRlcmZhY2U+IEFkanVzdENvbG9ycygKKyAgICBjb25zdCBDb2xvclRyYW5zZm9y
bWF0aW9uTWF0cml4JiBjb2xvcl9tYXRyaXgsCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRy
PEk0MjBCdWZmZXJJbnRlcmZhY2U+JiBmcmFtZSkgeworICAvLyBBbGxvY2F0ZSBJNDIwIGJ1ZmZl
ciB0aGF0IHdpbGwgaG9sZCB0aGUgY29sb3IgYWRqdXN0ZWQgZnJhbWUuCisgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxJNDIwQnVmZmVyPiBhZGp1c3RlZF9mcmFtZSA9CisgICAgICBJNDIwQnVmZmVyOjpD
cmVhdGUoZnJhbWUtPndpZHRoKCksIGZyYW1lLT5oZWlnaHQoKSk7CisKKyAgLy8gQ3JlYXRlIGEg
ZG93bnNjYWxlZCBZIHBsYW5lIHdpdGggdGhlIHNhbWUgc2l6ZSBhcyB0aGUgVS9WIHBsYW5lcyB0
bworICAvLyBzaW1wbGlmeSBjb252ZXJ0aW5nIHRoZSBVL1YgcGxhbmVzLgorICBzdGQ6OnZlY3Rv
cjx1aW50OF90PiBkb3duc2NhbGVkX3lfcGxhbmUoZnJhbWUtPkNocm9tYVdpZHRoKCkgKgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPkNocm9tYUhlaWdo
dCgpKTsKKyAgbGlieXV2OjpTY2FsZVBsYW5lKGZyYW1lLT5EYXRhWSgpLCBmcmFtZS0+U3RyaWRl
WSgpLCBmcmFtZS0+d2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5oZWlnaHQo
KSwgZG93bnNjYWxlZF95X3BsYW5lLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5DaHJvbWFXaWR0aCgpLCBmcmFtZS0+Q2hyb21hV2lkdGgoKSwKKyAgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5DaHJvbWFIZWlnaHQoKSwgbGlieXV2OjprRmlsdGVyQm94KTsKKworICAvLyBG
aWxsIGluIHRoZSBhZGp1c3RlZCBkYXRhIHJvdyBieSByb3cuCisgIGZvciAoaW50IHkgPSAwOyB5
IDwgZnJhbWUtPmhlaWdodCgpOyArK3kpIHsKKyAgICBjb25zdCBpbnQgaGFsZl95ID0geSAvIDI7
CisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4geV9yb3coZnJhbWUtPkRhdGFZKCkg
KyBmcmFtZS0+U3RyaWRlWSgpICogeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFtZS0+d2lkdGgoKSk7CisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhf
dD4gdV9yb3coCisgICAgICAgIGZyYW1lLT5EYXRhVSgpICsgZnJhbWUtPlN0cmlkZVUoKSAqIGhh
bGZfeSwgZnJhbWUtPkNocm9tYVdpZHRoKCkpOworICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVp
bnQ4X3Q+IHZfcm93KAorICAgICAgICBmcmFtZS0+RGF0YVYoKSArIGZyYW1lLT5TdHJpZGVWKCkg
KiBoYWxmX3ksIGZyYW1lLT5DaHJvbWFXaWR0aCgpKTsKKyAgICBydGM6OkFycmF5Vmlldzx1aW50
OF90PiBvdXRwdXRfeV9yb3coCisgICAgICAgIGFkanVzdGVkX2ZyYW1lLT5NdXRhYmxlRGF0YVko
KSArIGFkanVzdGVkX2ZyYW1lLT5TdHJpZGVZKCkgKiB5LAorICAgICAgICBmcmFtZS0+d2lkdGgo
KSk7CisKKyAgICBDYWxjdWxhdGVZQ2hhbm5lbCh5X3JvdywgdV9yb3csIHZfcm93LCBjb2xvcl9t
YXRyaXhbMF0sIG91dHB1dF95X3Jvdyk7CisKKyAgICAvLyBDaHJvbWEgY2hhbm5lbHMgb25seSBl
eGlzdCBldmVyeSBzZWNvbmQgcm93IGZvciBJNDIwLgorICAgIGlmICh5ICUgMiA9PSAwKSB7Cisg
ICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBkb3duc2NhbGVkX3lfcm93KAorICAg
ICAgICAgIGRvd25zY2FsZWRfeV9wbGFuZS5kYXRhKCkgKyBmcmFtZS0+Q2hyb21hV2lkdGgoKSAq
IGhhbGZfeSwKKyAgICAgICAgICBmcmFtZS0+Q2hyb21hV2lkdGgoKSk7CisgICAgICBydGM6OkFy
cmF5Vmlldzx1aW50OF90PiBvdXRwdXRfdV9yb3coCisgICAgICAgICAgYWRqdXN0ZWRfZnJhbWUt
Pk11dGFibGVEYXRhVSgpICsgYWRqdXN0ZWRfZnJhbWUtPlN0cmlkZVUoKSAqIGhhbGZfeSwKKyAg
ICAgICAgICBmcmFtZS0+Q2hyb21hV2lkdGgoKSk7CisgICAgICBydGM6OkFycmF5Vmlldzx1aW50
OF90PiBvdXRwdXRfdl9yb3coCisgICAgICAgICAgYWRqdXN0ZWRfZnJhbWUtPk11dGFibGVEYXRh
VigpICsgYWRqdXN0ZWRfZnJhbWUtPlN0cmlkZVYoKSAqIGhhbGZfeSwKKyAgICAgICAgICBmcmFt
ZS0+Q2hyb21hV2lkdGgoKSk7CisKKyAgICAgIENhbGN1bGF0ZVVWQ2hhbm5lbChkb3duc2NhbGVk
X3lfcm93LCB1X3Jvdywgdl9yb3csIGNvbG9yX21hdHJpeFsxXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBvdXRwdXRfdV9yb3cpOworICAgICAgQ2FsY3VsYXRlVVZDaGFubmVsKGRvd25zY2Fs
ZWRfeV9yb3csIHVfcm93LCB2X3JvdywgY29sb3JfbWF0cml4WzJdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dF92X3Jvdyk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGFkanVzdGVk
X2ZyYW1lOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXpl
ci92aWRlb19jb2xvcl9hbGlnbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk3Y2JmNjU4MjlmNjgyNmY2ZTIx
Y2I4MjkxYzMzNmJmYjdhNGRhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19j
b2xvcl9hbGlnbmVyLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
KyNpZm5kZWYgUlRDX1RPT0xTX0ZSQU1FX0FOQUxZWkVSX1ZJREVPX0NPTE9SX0FMSUdORVJfSF8K
KyNkZWZpbmUgUlRDX1RPT0xTX0ZSQU1FX0FOQUxZWkVSX1ZJREVPX0NPTE9SX0FMSUdORVJfSF8K
KworI2luY2x1ZGUgPGFycmF5PgorCisjaW5jbHVkZSAicnRjX3Rvb2xzL3ZpZGVvX2ZpbGVfcmVh
ZGVyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCisvLyBSZXBy
ZXNlbnRzIGEgbGluZWFyIGNvbG9yIHRyYW5zZm9ybWF0aW9uIGZyb20gW3ksIHUsIHZdIHRvIFt5
JywgdScsIHYnXQorLy8gdGhyb3VnaCB0aGUgZXF1YXRpb246IFt5JywgdScsIHYnXSA9IFt5LCB1
LCB2LCAxXSAqIG1hdHJpeC4KK3VzaW5nIENvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggPSBzdGQ6
OmFycmF5PHN0ZDo6YXJyYXk8ZmxvYXQsIDQ+LCAzPjsKKworLy8gQ2FsY3VsYXRlIHRoZSBvcHRp
bWFsIGNvbG9yIHRyYW5zZm9ybWF0aW9uIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIHRl
c3QKKy8vIHZpZGVvIHRvIG1hdGNoIGFzIGNsb3NlbHkgYXMgcG9zc2libGUgdG8gdGhlIHJlZmVy
ZW5jZSB2aWRlby4KK0NvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggQ2FsY3VsYXRlQ29sb3JUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+JiBy
ZWZlcmVuY2VfdmlkZW8sCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgdGVz
dF92aWRlbyk7CisKKy8vIENhbGN1bGF0ZSBjb2xvciB0cmFuc2Zvcm1hdGlvbiBmb3IgYSBzaW5n
bGUgSTQyMCBmcmFtZS4KK0NvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggQ2FsY3VsYXRlQ29sb3JU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1
ZmZlckludGVyZmFjZT4mIHJlZmVyZW5jZV9mcmFtZSwKKyAgICBjb25zdCBydGM6OnNjb3BlZF9y
ZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHRlc3RfZnJhbWUpOworCisvLyBBcHBseSBhIGNv
bG9yIHRyYW5zZm9ybWF0aW9uIHRvIGEgdmlkZW8uCitydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+
IEFkanVzdENvbG9ycygKKyAgICBjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb2xv
cl9tYXRyaXgsCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgdmlkZW8pOwor
CisvLyBBcHBseSBhIGNvbG9yIHRyYW5zZm9ybWF0aW9uIHRvIGEgc2luZ2xlIEk0MjAgZnJhbWUu
CitydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gQWRqdXN0Q29sb3JzKAor
ICAgIGNvbnN0IENvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbG9yX21hdHJpeCwKKyAgICBj
b25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIGZyYW1lKTsKKwor
fSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAv
LyBSVENfVE9PTFNfRlJBTUVfQU5BTFlaRVJfVklERU9fQ09MT1JfQUxJR05FUl9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xz
L2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6
ZXIvdmlkZW9fY29sb3JfYWxpZ25lcl91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjBkNmY0NTll
NzA1MmI1ZmFkYjBhNGFhYmY5ZGZhNDY1YWNjOTBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5
emVyL3ZpZGVvX2NvbG9yX2FsaWduZXJfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSwxNzQgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVy
L3ZpZGVvX2NvbG9yX2FsaWduZXIuaCIKKworI2luY2x1ZGUgInJ0Y190b29scy9mcmFtZV9hbmFs
eXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lzLmgiCisjaW5jbHVkZSAicnRjX3Rvb2xzL3ZpZGVv
X2ZpbGVfcmVhZGVyLmgiCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInRlc3Qv
dGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2lu
Y2x1ZGUvbGlieXV2L3NjYWxlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRl
c3QgeworCituYW1lc3BhY2UgeworCitjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4IGtJ
ZGVudGl0eUNvbG9yTWF0cml4ID0geworICAgIHt7MSwgMCwgMCwgMH0sIHswLCAxLCAwLCAwfSwg
ezAsIDAsIDEsIDB9fX07CisKK3ZvaWQgRXhwZWN0TmVhcihjb25zdCBDb2xvclRyYW5zZm9ybWF0
aW9uTWF0cml4JiBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICBjb25zdCBDb2xvclRyYW5zZm9y
bWF0aW9uTWF0cml4JiBhY3R1YWwpIHsKKyAgLy8gVGhlIHNjYWxpbmcgZmFjdG9yIG9uIHkvdS92
IHNob3VsZCBiZSBwcmV0dHkgcHJlY2lzZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kp
IHsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IDM7ICsraikKKyAgICAgIEVYUEVDVF9ORUFSKGV4
cGVjdGVkW2ldW2pdLCBhY3R1YWxbaV1bal0sIC8qIGFic19lcnJvcj0gKi8gMS4wZS0zKQorICAg
ICAgICAgIDw8ICJhdCBlbGVtZW50IGk6ICIgPDwgaSA8PCAiLCBqOiAiIDw8IGo7CisgIH0KKyAg
Ly8gVGhlIG9mZnNldCBjYW4gYmUgbGVzcyBwcmVjaXNlIHNpbmNlIHRoZSByYW5nZSBpcyBbMCwg
MjU1XS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgRVhQRUNUX05FQVIoZXhw
ZWN0ZWRbaV1bM10sIGFjdHVhbFtpXVszXSwgLyogYWJzX2Vycm9yPSAqLyAwLjEpCisgICAgICAg
IDw8ICJhdCBlbGVtZW50IGk6ICIgPDwgaTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2NsYXNz
IFZpZGVvQ29sb3JBbGlnbmVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3Rl
Y3RlZDoKKyAgdm9pZCBTZXRVcCgpIHsKKyAgICByZWZlcmVuY2VfdmlkZW9fID0KKyAgICAgICAg
T3Blbll1dkZpbGUoUmVzb3VyY2VQYXRoKCJmb3JlbWFuXzEyOHg5NiIsICJ5dXYiKSwgMTI4LCA5
Nik7CisgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlX3ZpZGVvXyk7CisgIH0KKworICBydGM6OnNj
b3BlZF9yZWZwdHI8VmlkZW8+IHJlZmVyZW5jZV92aWRlb187Cit9OworCitURVNUX0YoVmlkZW9D
b2xvckFsaWduZXJUZXN0LCBBZGp1c3RDb2xvcnNGcmFtZUlkZW50aXR5KSB7CisgIGNvbnN0IHJ0
Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiB0ZXN0X2ZyYW1lID0KKyAgICAg
IHJlZmVyZW5jZV92aWRlb18tPkdldEZyYW1lKDApOworCisgIC8vIEFzc3VtZSBwZXJmZWN0IG1h
dGNoLCBpLmUuIHNzaW0gPT0gMS4KKyAgRVhQRUNUX0VRKDEuMCwKKyAgICAgICAgICAgIFNzaW0o
dGVzdF9mcmFtZSwgQWRqdXN0Q29sb3JzKGtJZGVudGl0eUNvbG9yTWF0cml4LCB0ZXN0X2ZyYW1l
KSkpOworfQorCitURVNUX0YoVmlkZW9Db2xvckFsaWduZXJUZXN0LCBBZGp1c3RDb2xvcnNGcmFt
ZTF4MSkgeworICBjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbG9yX21hdHJpeCA9
IHsKKyAgICAgIHt7MSwgMiwgMywgNH0sIHs1LCA2LCA3LCA4fSwgezksIDEwLCAxMSwgMTJ9fX07
CisKKyAgY29uc3QgdWludDhfdCBkYXRhX3lbXSA9IHsyfTsKKyAgY29uc3QgdWludDhfdCBkYXRh
X3VbXSA9IHs2fTsKKyAgY29uc3QgdWludDhfdCBkYXRhX3ZbXSA9IHs3fTsKKyAgY29uc3QgcnRj
OjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGk0MjBfYnVmZmVyID0gSTQyMEJ1
ZmZlcjo6Q29weSgKKyAgICAgIC8qIHdpZHRoPSAqLyAxLCAvKiBoZWlnaHQ9ICovIDEsIGRhdGFf
eSwgLyogc3RyaWRlX3k9ICovIDEsIGRhdGFfdSwKKyAgICAgIC8qIHN0cmlkZV91PSAqLyAxLCBk
YXRhX3YsIC8qIHN0cmlkZV92PSAqLyAxKTsKKworICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8
STQyMEJ1ZmZlckludGVyZmFjZT4gYWRqdXN0ZWRfYnVmZmVyID0KKyAgICAgIEFkanVzdENvbG9y
cyhjb2xvcl9tYXRyaXgsIGk0MjBfYnVmZmVyKTsKKworICBFWFBFQ1RfRVEoMiAqIDEgKyA2ICog
MiArIDcgKiAzICsgNCwgYWRqdXN0ZWRfYnVmZmVyLT5EYXRhWSgpWzBdKTsKKyAgRVhQRUNUX0VR
KDIgKiA1ICsgNiAqIDYgKyA3ICogNyArIDgsIGFkanVzdGVkX2J1ZmZlci0+RGF0YVUoKVswXSk7
CisgIEVYUEVDVF9FUSgyICogOSArIDYgKiAxMCArIDcgKiAxMSArIDEyLCBhZGp1c3RlZF9idWZm
ZXItPkRhdGFWKClbMF0pOworfQorCitURVNUX0YoVmlkZW9Db2xvckFsaWduZXJUZXN0LCBBZGp1
c3RDb2xvcnNGcmFtZTF4MU5lZ2F0aXZlKSB7CisgIGNvbnN0IENvbG9yVHJhbnNmb3JtYXRpb25N
YXRyaXggY29sb3JfbWF0cml4ID0geworICAgICAge3stMSwgMCwgMCwgMjU1fSwgezAsIC0xLCAw
LCAyNTV9LCB7MCwgMCwgLTEsIDI1NX19fTsKKworICBjb25zdCB1aW50OF90IGRhdGFfeVtdID0g
ezJ9OworICBjb25zdCB1aW50OF90IGRhdGFfdVtdID0gezZ9OworICBjb25zdCB1aW50OF90IGRh
dGFfdltdID0gezd9OworICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVy
ZmFjZT4gaTQyMF9idWZmZXIgPSBJNDIwQnVmZmVyOjpDb3B5KAorICAgICAgLyogd2lkdGg9ICov
IDEsIC8qIGhlaWdodD0gKi8gMSwgZGF0YV95LCAvKiBzdHJpZGVfeT0gKi8gMSwgZGF0YV91LAor
ICAgICAgLyogc3RyaWRlX3U9ICovIDEsIGRhdGFfdiwgLyogc3RyaWRlX3Y9ICovIDEpOworCisg
IGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBhZGp1c3RlZF9i
dWZmZXIgPQorICAgICAgQWRqdXN0Q29sb3JzKGNvbG9yX21hdHJpeCwgaTQyMF9idWZmZXIpOwor
CisgIEVYUEVDVF9FUSgyNTUgLSAyLCBhZGp1c3RlZF9idWZmZXItPkRhdGFZKClbMF0pOworICBF
WFBFQ1RfRVEoMjU1IC0gNiwgYWRqdXN0ZWRfYnVmZmVyLT5EYXRhVSgpWzBdKTsKKyAgRVhQRUNU
X0VRKDI1NSAtIDcsIGFkanVzdGVkX2J1ZmZlci0+RGF0YVYoKVswXSk7Cit9CisKK1RFU1RfRihW
aWRlb0NvbG9yQWxpZ25lclRlc3QsIEFkanVzdENvbG9yc0ZyYW1lMngyKSB7CisgIGNvbnN0IENv
bG9yVHJhbnNmb3JtYXRpb25NYXRyaXggY29sb3JfbWF0cml4ID0geworICAgICAge3sxLCAyLCAz
LCA0fSwgezUsIDYsIDcsIDh9LCB7OSwgMTAsIDExLCAxMn19fTsKKworICBjb25zdCB1aW50OF90
IGRhdGFfeVtdID0gezAsIDEsIDMsIDR9OworICBjb25zdCB1aW50OF90IGRhdGFfdVtdID0gezZ9
OworICBjb25zdCB1aW50OF90IGRhdGFfdltdID0gezd9OworICBjb25zdCBydGM6OnNjb3BlZF9y
ZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gaTQyMF9idWZmZXIgPSBJNDIwQnVmZmVyOjpDb3B5
KAorICAgICAgLyogd2lkdGg9ICovIDIsIC8qIGhlaWdodD0gKi8gMiwgZGF0YV95LCAvKiBzdHJp
ZGVfeT0gKi8gMiwgZGF0YV91LAorICAgICAgLyogc3RyaWRlX3U9ICovIDEsIGRhdGFfdiwgLyog
c3RyaWRlX3Y9ICovIDEpOworCisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVy
SW50ZXJmYWNlPiBhZGp1c3RlZF9idWZmZXIgPQorICAgICAgQWRqdXN0Q29sb3JzKGNvbG9yX21h
dHJpeCwgaTQyMF9idWZmZXIpOworCisgIEVYUEVDVF9FUSgwICogMSArIDYgKiAyICsgNyAqIDMg
KyA0LCBhZGp1c3RlZF9idWZmZXItPkRhdGFZKClbMF0pOworICBFWFBFQ1RfRVEoMSAqIDEgKyA2
ICogMiArIDcgKiAzICsgNCwgYWRqdXN0ZWRfYnVmZmVyLT5EYXRhWSgpWzFdKTsKKyAgRVhQRUNU
X0VRKDMgKiAxICsgNiAqIDIgKyA3ICogMyArIDQsIGFkanVzdGVkX2J1ZmZlci0+RGF0YVkoKVsy
XSk7CisgIEVYUEVDVF9FUSg0ICogMSArIDYgKiAyICsgNyAqIDMgKyA0LCBhZGp1c3RlZF9idWZm
ZXItPkRhdGFZKClbM10pOworCisgIEVYUEVDVF9FUSgyICogNSArIDYgKiA2ICsgNyAqIDcgKyA4
LCBhZGp1c3RlZF9idWZmZXItPkRhdGFVKClbMF0pOworICBFWFBFQ1RfRVEoMiAqIDkgKyA2ICog
MTAgKyA3ICogMTEgKyAxMiwgYWRqdXN0ZWRfYnVmZmVyLT5EYXRhVigpWzBdKTsKK30KKworVEVT
VF9GKFZpZGVvQ29sb3JBbGlnbmVyVGVzdCwgQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1h
dHJpeElkZW50aXR5KSB7CisgIEVYUEVDVF9FUShrSWRlbnRpdHlDb2xvck1hdHJpeCwgQ2FsY3Vs
YXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVmZXJlbmNlX3ZpZGVvXywgcmVmZXJlbmNlX3ZpZGVvXykpOworfQorCitU
RVNUX0YoVmlkZW9Db2xvckFsaWduZXJUZXN0LCBDYWxjdWxhdGVDb2xvclRyYW5zZm9ybWF0aW9u
TWF0cml4T2Zmc2V0KSB7CisgIGNvbnN0IHVpbnQ4X3Qgc21hbGxfZGF0YV95W10gPSB7MCwgMSwg
MiwgIDMsICA0LCAgNSwgIDYsICA3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTV9OworICBjb25zdCB1aW50OF90IHNtYWxsX2Rh
dGFfdVtdID0gezE1LCAxMywgMTcsIDI5fTsKKyAgY29uc3QgdWludDhfdCBzbWFsbF9kYXRhX3Zb
XSA9IHszLCAyMDAsIDE3MCwgMjl9OworICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1
ZmZlckludGVyZmFjZT4gc21hbGxfaTQyMF9idWZmZXIgPQorICAgICAgSTQyMEJ1ZmZlcjo6Q29w
eSgKKyAgICAgICAgICAvKiB3aWR0aD0gKi8gNCwgLyogaGVpZ2h0PSAqLyA0LCBzbWFsbF9kYXRh
X3ksIC8qIHN0cmlkZV95PSAqLyA0LAorICAgICAgICAgIHNtYWxsX2RhdGFfdSwgLyogc3RyaWRl
X3U9ICovIDIsIHNtYWxsX2RhdGFfdiwgLyogc3RyaWRlX3Y9ICovIDIpOworCisgIHVpbnQ4X3Qg
YmlnX2RhdGFfeVsxNl07CisgIHVpbnQ4X3QgYmlnX2RhdGFfdVs0XTsKKyAgdWludDhfdCBiaWdf
ZGF0YV92WzRdOworICAvLyBDcmVhdGUgYW5vdGhlciBJNDIwIGZyYW1lIHdoZXJlIGFsbCB2YWx1
ZXMgYXJlIDEwIGJpZ2dlci4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytpKQorICAgIGJp
Z19kYXRhX3lbaV0gPSBzbWFsbF9kYXRhX3lbaV0gKyAxMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCA0OyArK2kpCisgICAgYmlnX2RhdGFfdVtpXSA9IHNtYWxsX2RhdGFfdVtpXSArIDEwOworICBm
b3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkKKyAgICBiaWdfZGF0YV92W2ldID0gc21hbGxfZGF0
YV92W2ldICsgMTA7CisKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRl
cmZhY2U+IGJpZ19pNDIwX2J1ZmZlciA9CisgICAgICBJNDIwQnVmZmVyOjpDb3B5KAorICAgICAg
ICAgIC8qIHdpZHRoPSAqLyA0LCAvKiBoZWlnaHQ9ICovIDQsIGJpZ19kYXRhX3ksIC8qIHN0cmlk
ZV95PSAqLyA0LAorICAgICAgICAgIGJpZ19kYXRhX3UsIC8qIHN0cmlkZV91PSAqLyAyLCBiaWdf
ZGF0YV92LCAvKiBzdHJpZGVfdj0gKi8gMik7CisKKyAgY29uc3QgQ29sb3JUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBjb2xvcl9tYXRyaXggPQorICAgICAgQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlv
bk1hdHJpeChiaWdfaTQyMF9idWZmZXIsIHNtYWxsX2k0MjBfYnVmZmVyKTsKKworICBFeHBlY3RO
ZWFyKHt7ezEsIDAsIDAsIDEwfSwgezAsIDEsIDAsIDEwfSwgezAsIDAsIDEsIDEwfX19LCBjb2xv
cl9tYXRyaXgpOworfQorCitURVNUX0YoVmlkZW9Db2xvckFsaWduZXJUZXN0LCBDYWxjdWxhdGVD
b2xvclRyYW5zZm9ybWF0aW9uTWF0cml4KSB7CisgIC8vIEFyYml0cmFyeSBjb2xvciB0cmFuc2Zv
cm1hdGlvbiBtYXRyaXguCisgIGNvbnN0IENvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggb3JnX2Nv
bG9yX21hdHJpeCA9IHsKKyAgICAgIHt7MC44LCAwLjA1LCAwLjA0LCAtNH0sIHstMC4yLCAwLjcs
IDAuMSwgMTB9LCB7MC4xLCAwLjIsIDAuNCwgMjB9fX07CisKKyAgY29uc3QgQ29sb3JUcmFuc2Zv
cm1hdGlvbk1hdHJpeCByZXN1bHRfY29sb3JfbWF0cml4ID0KKyAgICAgIENhbGN1bGF0ZUNvbG9y
VHJhbnNmb3JtYXRpb25NYXRyaXgoCisgICAgICAgICAgQWRqdXN0Q29sb3JzKG9yZ19jb2xvcl9t
YXRyaXgsIHJlZmVyZW5jZV92aWRlb18pLCByZWZlcmVuY2VfdmlkZW9fKTsKKworICBFeHBlY3RO
ZWFyKG9yZ19jb2xvcl9tYXRyaXgsIHJlc3VsdF9jb2xvcl9tYXRyaXgpOworfQorCit9ICAvLyBu
YW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5
emVyL3ZpZGVvX2dlb21ldHJ5X2FsaWduZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlf
YWxpZ25lci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2NiYzA1MWM5YmYxMzNjMWZkZjFlOWNiN2Y1MmY1MDZj
MDZjYzVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5X2FsaWdu
ZXIuY2MKQEAgLTAsMCArMSwxNzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVk
ZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5X2FsaWduZXIuaCIKKwor
I2luY2x1ZGUgPG1hcD4KKworI2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZlci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50ZWRv
YmplY3QuaCIKKyNpbmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fcXVhbGl0
eV9hbmFseXNpcy5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1
di9zY2FsZS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworbmFt
ZXNwYWNlIHsKKworYm9vbCBJc1ZhbGlkUmVnaW9uKGNvbnN0IENyb3BSZWdpb24mIHJlZ2lvbiwK
KyAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlcklu
dGVyZmFjZT4mIGZyYW1lKSB7CisgIHJldHVybiByZWdpb24ubGVmdCA+PSAwICYmIHJlZ2lvbi5y
aWdodCA+PSAwICYmIHJlZ2lvbi50b3AgPj0gMCAmJgorICAgICAgICAgcmVnaW9uLmJvdHRvbSA+
PSAwICYmIHJlZ2lvbi5sZWZ0ICsgcmVnaW9uLnJpZ2h0IDwgZnJhbWUtPndpZHRoKCkgJiYKKyAg
ICAgICAgIHJlZ2lvbi50b3AgKyByZWdpb24uYm90dG9tIDwgZnJhbWUtPmhlaWdodCgpOworfQor
Cit9ICAvLyBuYW1lc3BhY2UKKworcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZh
Y2U+IENyb3BBbmRab29tKAorICAgIGNvbnN0IENyb3BSZWdpb24mIGNyb3BfcmVnaW9uLAorICAg
IGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgZnJhbWUpIHsK
KyAgUlRDX0NIRUNLKElzVmFsaWRSZWdpb24oY3JvcF9yZWdpb24sIGZyYW1lKSk7CisKKyAgY29u
c3QgaW50IHV2X2Nyb3BfbGVmdCA9IGNyb3BfcmVnaW9uLmxlZnQgLyAyOworICBjb25zdCBpbnQg
dXZfY3JvcF90b3AgPSBjcm9wX3JlZ2lvbi50b3AgLyAyOworCisgIGNvbnN0IGludCBjcm9wcGVk
X3dpZHRoID0KKyAgICAgIGZyYW1lLT53aWR0aCgpIC0gY3JvcF9yZWdpb24ubGVmdCAtIGNyb3Bf
cmVnaW9uLnJpZ2h0OworICBjb25zdCBpbnQgY3JvcHBlZF9oZWlnaHQgPQorICAgICAgZnJhbWUt
PmhlaWdodCgpIC0gY3JvcF9yZWdpb24udG9wIC0gY3JvcF9yZWdpb24uYm90dG9tOworCisgIC8v
IENyb3AgYnkgb25seSBhZGp1c3RpbmcgcG9pbnRlcnMuCisgIGNvbnN0IHVpbnQ4X3QqIHlfcGxh
bmUgPQorICAgICAgZnJhbWUtPkRhdGFZKCkgKyBmcmFtZS0+U3RyaWRlWSgpICogY3JvcF9yZWdp
b24udG9wICsgY3JvcF9yZWdpb24ubGVmdDsKKyAgY29uc3QgdWludDhfdCogdV9wbGFuZSA9Cisg
ICAgICBmcmFtZS0+RGF0YVUoKSArIGZyYW1lLT5TdHJpZGVVKCkgKiB1dl9jcm9wX3RvcCArIHV2
X2Nyb3BfbGVmdDsKKyAgY29uc3QgdWludDhfdCogdl9wbGFuZSA9CisgICAgICBmcmFtZS0+RGF0
YVYoKSArIGZyYW1lLT5TdHJpZGVWKCkgKiB1dl9jcm9wX3RvcCArIHV2X2Nyb3BfbGVmdDsKKwor
ICAvLyBTdHJldGNoIHRoZSBjcm9wcGVkIGZyYW1lIHRvIHRoZSBvcmlnaW5hbCBzaXplIHVzaW5n
IGxpYnl1di4KKyAgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXI+IGFkanVzdGVkX2ZyYW1l
ID0KKyAgICAgIEk0MjBCdWZmZXI6OkNyZWF0ZShmcmFtZS0+d2lkdGgoKSwgZnJhbWUtPmhlaWdo
dCgpKTsKKyAgbGlieXV2OjpJNDIwU2NhbGUoeV9wbGFuZSwgZnJhbWUtPlN0cmlkZVkoKSwgdV9w
bGFuZSwgZnJhbWUtPlN0cmlkZVUoKSwKKyAgICAgICAgICAgICAgICAgICAgdl9wbGFuZSwgZnJh
bWUtPlN0cmlkZVYoKSwgY3JvcHBlZF93aWR0aCwgY3JvcHBlZF9oZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgIGFkanVzdGVkX2ZyYW1lLT5NdXRhYmxlRGF0YVkoKSwgYWRqdXN0ZWRfZnJhbWUt
PlN0cmlkZVkoKSwKKyAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRfZnJhbWUtPk11dGFibGVE
YXRhVSgpLCBhZGp1c3RlZF9mcmFtZS0+U3RyaWRlVSgpLAorICAgICAgICAgICAgICAgICAgICBh
ZGp1c3RlZF9mcmFtZS0+TXV0YWJsZURhdGFWKCksIGFkanVzdGVkX2ZyYW1lLT5TdHJpZGVWKCks
CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT53aWR0aCgpLCBmcmFtZS0+aGVpZ2h0KCksIGxp
Ynl1djo6a0ZpbHRlckJpbGluZWFyKTsKKworICByZXR1cm4gYWRqdXN0ZWRfZnJhbWU7Cit9CisK
K0Nyb3BSZWdpb24gQ2FsY3VsYXRlQ3JvcFJlZ2lvbigKKyAgICBjb25zdCBydGM6OnNjb3BlZF9y
ZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHJlZmVyZW5jZV9mcmFtZSwKKyAgICBjb25zdCBy
dGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHRlc3RfZnJhbWUpIHsKKyAg
UlRDX0NIRUNLX0VRKHJlZmVyZW5jZV9mcmFtZS0+d2lkdGgoKSwgdGVzdF9mcmFtZS0+d2lkdGgo
KSk7CisgIFJUQ19DSEVDS19FUShyZWZlcmVuY2VfZnJhbWUtPmhlaWdodCgpLCB0ZXN0X2ZyYW1l
LT5oZWlnaHQoKSk7CisKKyAgQ3JvcFJlZ2lvbiBiZXN0X3JlZ2lvbjsKKyAgZG91YmxlIGJlc3Rf
c3NpbSA9IFNzaW0ocmVmZXJlbmNlX2ZyYW1lLCB0ZXN0X2ZyYW1lKTsKKworICB0eXBlZGVmIGlu
dCBDcm9wUmVnaW9uOjoqQ3JvcFBhcmFtZXRlcjsKKyAgQ3JvcFBhcmFtZXRlciBjcm9wX3BhcmFt
ZXRlcnNbNF0gPSB7JkNyb3BSZWdpb246OmxlZnQsICZDcm9wUmVnaW9uOjp0b3AsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDcm9wUmVnaW9uOjpyaWdodCwgJkNyb3BS
ZWdpb246OmJvdHRvbX07CisKKyAgd2hpbGUgKHRydWUpIHsKKyAgICAvLyBGaW5kIHRoZSBwYXJh
bWV0ZXIgaW4gd2hpY2ggZGlyZWN0aW9uIFNTSU0gaW1wcm92ZXMgdGhlIG1vc3QuCisgICAgQ3Jv
cFBhcmFtZXRlciBiZXN0X3BhcmFtZXRlciA9IG51bGxwdHI7CisgICAgY29uc3QgQ3JvcFJlZ2lv
biBwcmV2X2Jlc3RfcmVnaW9uID0gYmVzdF9yZWdpb247CisKKyAgICBmb3IgKENyb3BQYXJhbWV0
ZXIgY3JvcF9wYXJhbWV0ZXIgOiBjcm9wX3BhcmFtZXRlcnMpIHsKKyAgICAgIENyb3BSZWdpb24g
dGVzdF9yZWdpb24gPSBwcmV2X2Jlc3RfcmVnaW9uOworICAgICAgKysodGVzdF9yZWdpb24uKmNy
b3BfcGFyYW1ldGVyKTsKKworICAgICAgaWYgKCFJc1ZhbGlkUmVnaW9uKHRlc3RfcmVnaW9uLCBy
ZWZlcmVuY2VfZnJhbWUpKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgY29uc3QgZG91Ymxl
IHNzaW0gPQorICAgICAgICAgIFNzaW0oQ3JvcEFuZFpvb20odGVzdF9yZWdpb24sIHJlZmVyZW5j
ZV9mcmFtZSksIHRlc3RfZnJhbWUpOworCisgICAgICBpZiAoc3NpbSA+IGJlc3Rfc3NpbSkgewor
ICAgICAgICBiZXN0X3NzaW0gPSBzc2ltOworICAgICAgICBiZXN0X3BhcmFtZXRlciA9IGNyb3Bf
cGFyYW1ldGVyOworICAgICAgICBiZXN0X3JlZ2lvbiA9IHRlc3RfcmVnaW9uOworICAgICAgfQor
ICAgIH0KKworICAgIC8vIE5vIGltcHJvdmVtZW50IGFtb25nIGFueSBkaXJlY3Rpb24sIHN0b3Ag
aXRlcmF0aW9uLgorICAgIGlmIChiZXN0X3BhcmFtZXRlciA9PSBudWxscHRyKQorICAgICAgYnJl
YWs7CisKKyAgICAvLyBJdGVyYXRlIGluIHRoZSBiZXN0IGRpcmVjdGlvbiBhcyBsb25nIGFzIGl0
IGltcHJvdmVzIFNTSU0uCisgICAgZm9yIChDcm9wUmVnaW9uIHRlc3RfcmVnaW9uID0gYmVzdF9y
ZWdpb247CisgICAgICAgICBJc1ZhbGlkUmVnaW9uKHRlc3RfcmVnaW9uLCByZWZlcmVuY2VfZnJh
bWUpOworICAgICAgICAgKysodGVzdF9yZWdpb24uKmJlc3RfcGFyYW1ldGVyKSkgeworICAgICAg
Y29uc3QgZG91YmxlIHNzaW0gPQorICAgICAgICAgIFNzaW0oQ3JvcEFuZFpvb20odGVzdF9yZWdp
b24sIHJlZmVyZW5jZV9mcmFtZSksIHRlc3RfZnJhbWUpOworICAgICAgaWYgKHNzaW0gPD0gYmVz
dF9zc2ltKQorICAgICAgICBicmVhazsKKworICAgICAgYmVzdF9zc2ltID0gc3NpbTsKKyAgICAg
IGJlc3RfcmVnaW9uID0gdGVzdF9yZWdpb247CisgICAgfQorICB9CisKKyAgcmV0dXJuIGJlc3Rf
cmVnaW9uOworfQorCitydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gQWRq
dXN0Q3JvcHBpbmcoCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRl
cmZhY2U+JiByZWZlcmVuY2VfZnJhbWUsCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0
MjBCdWZmZXJJbnRlcmZhY2U+JiB0ZXN0X2ZyYW1lKSB7CisgIHJldHVybiBDcm9wQW5kWm9vbShD
YWxjdWxhdGVDcm9wUmVnaW9uKHJlZmVyZW5jZV9mcmFtZSwgdGVzdF9mcmFtZSksCisgICAgICAg
ICAgICAgICAgICAgICByZWZlcmVuY2VfZnJhbWUpOworfQorCitydGM6OnNjb3BlZF9yZWZwdHI8
VmlkZW8+IEFkanVzdENyb3BwaW5nKAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRl
bz4mIHJlZmVyZW5jZV92aWRlbywKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+
JiB0ZXN0X3ZpZGVvKSB7CisgIGNsYXNzIENyb3BwZWRWaWRlbyA6IHB1YmxpYyBydGM6OlJlZkNv
dW50ZWRPYmplY3Q8VmlkZW8+IHsKKyAgIHB1YmxpYzoKKyAgICBDcm9wcGVkVmlkZW8oY29uc3Qg
cnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgcmVmZXJlbmNlX3ZpZGVvLAorICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+JiB0ZXN0X3ZpZGVvKQorICAgICAg
ICA6IHJlZmVyZW5jZV92aWRlb18ocmVmZXJlbmNlX3ZpZGVvKSwgdGVzdF92aWRlb18odGVzdF92
aWRlbykgeworICAgICAgUlRDX0NIRUNLX0VRKHJlZmVyZW5jZV92aWRlby0+bnVtYmVyX29mX2Zy
YW1lcygpLAorICAgICAgICAgICAgICAgICAgIHRlc3RfdmlkZW8tPm51bWJlcl9vZl9mcmFtZXMo
KSk7CisgICAgICBSVENfQ0hFQ0tfRVEocmVmZXJlbmNlX3ZpZGVvLT53aWR0aCgpLCB0ZXN0X3Zp
ZGVvLT53aWR0aCgpKTsKKyAgICAgIFJUQ19DSEVDS19FUShyZWZlcmVuY2VfdmlkZW8tPmhlaWdo
dCgpLCB0ZXN0X3ZpZGVvLT5oZWlnaHQoKSk7CisgICAgfQorCisgICAgaW50IHdpZHRoKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdGVzdF92aWRlb18tPndpZHRoKCk7IH0KKyAgICBpbnQgaGVp
Z2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdGVzdF92aWRlb18tPmhlaWdodCgpOyB9Cisg
ICAgc2l6ZV90IG51bWJlcl9vZl9mcmFtZXMoKSBjb25zdCBvdmVycmlkZSB7CisgICAgICByZXR1
cm4gdGVzdF92aWRlb18tPm51bWJlcl9vZl9mcmFtZXMoKTsKKyAgICB9CisKKyAgICBydGM6OnNj
b3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gR2V0RnJhbWUoCisgICAgICAgIHNpemVf
dCBpbmRleCkgY29uc3Qgb3ZlcnJpZGUgeworICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRy
PEk0MjBCdWZmZXJJbnRlcmZhY2U+IHJlZmVyZW5jZV9mcmFtZSA9CisgICAgICAgICAgcmVmZXJl
bmNlX3ZpZGVvXy0+R2V0RnJhbWUoaW5kZXgpOworCisgICAgICAvLyBPbmx5IGNhbGN1bGF0ZSBj
cm9wcGluZyByZWdpb24gb25jZSBwZXIgZnJhbWUgc2luY2UgaXQncyBleHBlbnNpdmUuCisgICAg
ICBpZiAoIWNyb3BfcmVnaW9uc18uY291bnQoaW5kZXgpKSB7CisgICAgICAgIGNyb3BfcmVnaW9u
c19baW5kZXhdID0KKyAgICAgICAgICAgIENhbGN1bGF0ZUNyb3BSZWdpb24ocmVmZXJlbmNlX2Zy
YW1lLCB0ZXN0X3ZpZGVvXy0+R2V0RnJhbWUoaW5kZXgpKTsKKyAgICAgIH0KKworICAgICAgcmV0
dXJuIENyb3BBbmRab29tKGNyb3BfcmVnaW9uc19baW5kZXhdLCByZWZlcmVuY2VfZnJhbWUpOwor
ICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+
IHJlZmVyZW5jZV92aWRlb187CisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiB0
ZXN0X3ZpZGVvXzsKKyAgICAvLyBNdXRhYmxlIHNpbmNlIHRoaXMgaXMgYSBjYWNoZSB0aGF0IGFm
ZmVjdHMgcGVyZm9ybWFuY2UgYW5kIG5vdCBsb2dpY2FsCisgICAgLy8gYmVoYXZpb3IuCisgICAg
bXV0YWJsZSBzdGQ6Om1hcDxzaXplX3QsIENyb3BSZWdpb24+IGNyb3BfcmVnaW9uc187CisgIH07
CisKKyAgcmV0dXJuIG5ldyBDcm9wcGVkVmlkZW8ocmVmZXJlbmNlX3ZpZGVvLCB0ZXN0X3ZpZGVv
KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190
b29scy9mcmFtZV9hbmFseXplci92aWRlb19nZW9tZXRyeV9hbGlnbmVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIv
dmlkZW9fZ2VvbWV0cnlfYWxpZ25lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3NjY3YjBkMTM1ZGEyNjNlZTQw
ZDAwMDJmMGI0OTM3ZjFkYTZlNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9f
Z2VvbWV0cnlfYWxpZ25lci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChj
KSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaWZuZGVmIFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9WSURFT19HRU9NRVRSWV9BTElH
TkVSX0hfCisjZGVmaW5lIFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9WSURFT19HRU9NRVRSWV9B
TElHTkVSX0hfCisKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCisj
aW5jbHVkZSAicnRjX3Rvb2xzL3ZpZGVvX2ZpbGVfcmVhZGVyLmgiCisKK25hbWVzcGFjZSB3ZWJy
dGMgeworbmFtZXNwYWNlIHRlc3QgeworCitzdHJ1Y3QgQ3JvcFJlZ2lvbiB7CisgIC8vIEVhY2gg
dmFsdWUgcmVwcmVzZW50cyBob3cgbXVjaCB0byBjcm9wIGZyb20gZWFjaCBzaWRlLiBMZWZ0IGlz
IHdoZXJlIHg9MCwKKyAgLy8gYW5kIHRvcCBpcyB3aGVyZSB5PTAuIEFsbCB2YWx1ZXMgZXF1YWwg
dG8gemVybyByZXByZXNlbnRzIG5vIGNyb3BwaW5nLgorICBpbnQgbGVmdCA9IDA7CisgIGludCBy
aWdodCA9IDA7CisgIGludCB0b3AgPSAwOworICBpbnQgYm90dG9tID0gMDsKK307CisKKy8vIENy
b3BzIGFuZCB6b29tcyBpbiBvbiB0aGUgY3JvcHBlZCByZWdpb24gc28gdGhhdCB0aGUgcmV0dXJu
ZWQgZnJhbWUgaGFzIHRoZQorLy8gc2FtZSByZXNvbHV0aW9uIGFzIHRoZSBpbnB1dCBmcmFtZS4K
K3J0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBDcm9wQW5kWm9vbSgKKyAg
ICBjb25zdCBDcm9wUmVnaW9uJiBjcm9wX3JlZ2lvbiwKKyAgICBjb25zdCBydGM6OnNjb3BlZF9y
ZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIGZyYW1lKTsKKworLy8gQ2FsY3VsYXRlIHRoZSBv
cHRpbWFsIGNyb3BwaW5nIHJlZ2lvbiBvbiB0aGUgcmVmZXJlbmNlIGZyYW1lIHRvIG1heGltaXpl
IFNTSU0KKy8vIHRvIHRoZSB0ZXN0IGZyYW1lLgorQ3JvcFJlZ2lvbiBDYWxjdWxhdGVDcm9wUmVn
aW9uKAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYg
cmVmZXJlbmNlX2ZyYW1lLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVy
SW50ZXJmYWNlPiYgdGVzdF9mcmFtZSk7CisKKy8vIFJldHVybnMgYSBjcm9wcGVkIGFuZCB6b29t
ZWQgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNlIGZyYW1lIHRoYXQgbWF0Y2hlcyB1cAorLy8gdG8g
dGhlIHRlc3QgZnJhbWUuIFRoaXMgaXMgYSBzaW1wbGUgaGVscGVyIGZ1bmN0aW9uIG9uIHRvcCBv
ZgorLy8gQ2FsY3VsYXRlQ3JvcFJlZ2lvbigpIGFuZCBDcm9wQW5kWm9vbSgpLgorcnRjOjpzY29w
ZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IEFkanVzdENyb3BwaW5nKAorICAgIGNvbnN0
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgcmVmZXJlbmNlX2ZyYW1l
LAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgdGVz
dF9mcmFtZSk7CisKKy8vIFJldHVybnMgYSBjcm9wcGVkIGFuZCB6b29tZWQgdmVyc2lvbiBvZiB0
aGUgcmVmZXJlbmNlIHZpZGVvIHRoYXQgbWF0Y2hlcyB1cAorLy8gdG8gdGhlIHRlc3QgdmlkZW8u
IEZyYW1lcyBhcmUgaW5kaXZpZHVhbGx5IGFkanVzdGVkIGZvciBjcm9wcGluZy4KK3J0Yzo6c2Nv
cGVkX3JlZnB0cjxWaWRlbz4gQWRqdXN0Q3JvcHBpbmcoCisgICAgY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPFZpZGVvPiYgcmVmZXJlbmNlX3ZpZGVvLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxWaWRlbz4mIHRlc3RfdmlkZW8pOworCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9W
SURFT19HRU9NRVRSWV9BTElHTkVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2Vv
bWV0cnlfYWxpZ25lcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19nZW9tZXRyeV9hbGln
bmVyX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyNmY3NzcyZTFiOTIwNDZlOTAwZGZiNDBhM2Fm
YzZhNWY3YmQxNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlf
YWxpZ25lcl91bml0dGVzdC5jYwpAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpbmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlf
YWxpZ25lci5oIgorCisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAicnRjX3Rvb2xzL2Zy
YW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuaCIKKyNpbmNsdWRlICJydGNfdG9v
bHMvdmlkZW9fZmlsZV9yZWFkZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisjaW5jbHVk
ZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7Citu
YW1lc3BhY2UgdGVzdCB7CisKK2NsYXNzIFZpZGVvR2VvbWV0cnlBbGlnbmVyVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdm9pZCBTZXRVcCgpIHsKKyAgICBy
ZWZlcmVuY2VfdmlkZW9fID0KKyAgICAgICAgT3Blbll1dkZpbGUoUmVzb3VyY2VQYXRoKCJmb3Jl
bWFuXzEyOHg5NiIsICJ5dXYiKSwgMTI4LCA5Nik7CisgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNl
X3ZpZGVvXyk7CisKKyAgICAvLyBWZXJ5IHNpbXBsZSA0eDQgZnJhbWUgdXNlZCBmb3IgdmVyeWlu
ZyBDcm9wQW5kWm9vbS4KKyAgICBjb25zdCB1aW50OF90IGRhdGFfeVtdID0gezAsIDEsIDIsICAz
LCAgNCwgIDUsICA2LCAgNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDksIDEw
LCAxMSwgMTIsIDEzLCAxNCwgMTV9OworICAgIGNvbnN0IHVpbnQ4X3QgZGF0YV91W10gPSB7MCwg
MSwgMiwgM307CisgICAgY29uc3QgdWludDhfdCBkYXRhX3ZbXSA9IHswLCAxLCAyLCAzfTsKKyAg
ICB0ZXN0X2ZyYW1lXyA9IEk0MjBCdWZmZXI6OkNvcHkoCisgICAgICAgIC8qIHdpZHRoPSAqLyA0
LCAvKiBoZWlnaHQ9ICovIDQsIGRhdGFfeSwgLyogc3RyaWRlX3k9ICovIDQsIGRhdGFfdSwKKyAg
ICAgICAgLyogc3RyaWRlX3U9ICovIDIsIGRhdGFfdiwgLyogc3RyaWRlX3Y9ICovIDIpOworICB9
CisKKyAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiByZWZlcmVuY2VfdmlkZW9fOworICBydGM6
OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gdGVzdF9mcmFtZV87Cit9OworCisv
LyBUZWFjaCBndGVzdCBob3cgdG8gY29tcGFyZSBDcm9wUmVnaW9ucy4KK2Jvb2wgb3BlcmF0b3I9
PShjb25zdCBDcm9wUmVnaW9uJiBhLCBjb25zdCBDcm9wUmVnaW9uJiBiKSB7CisgIHJldHVybiBh
LmxlZnQgPT0gYi5sZWZ0ICYmIGEudG9wID09IGIudG9wICYmIGEucmlnaHQgPT0gYi5yaWdodCAm
JgorICAgICAgICAgYS5ib3R0b20gPT0gYi5ib3R0b207Cit9CisKK1RFU1RfRihWaWRlb0dlb21l
dHJ5QWxpZ25lclRlc3QsIENyb3BBbmRab29tSWRlbnRpdHkpIHsKKyAgY29uc3QgcnRjOjpzY29w
ZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGZyYW1lID0KKyAgICAgIHJlZmVyZW5jZV92
aWRlb18tPkdldEZyYW1lKDApOworCisgIC8vIEFzc3VtZSBwZXJmZWN0IG1hdGNoLCBpLmUuIFNT
SU0gPT0gMS4KKyAgQ3JvcFJlZ2lvbiBpZGVudGl0eV9yZWdpb247CisgIEVYUEVDVF9FUSgxLjAs
IFNzaW0oZnJhbWUsIENyb3BBbmRab29tKGlkZW50aXR5X3JlZ2lvbiwgZnJhbWUpKSk7Cit9CisK
K1RFU1RfRihWaWRlb0dlb21ldHJ5QWxpZ25lclRlc3QsIENyb3BBbmRab29tTGVmdCkgeworICBD
cm9wUmVnaW9uIHJlZ2lvbjsKKyAgcmVnaW9uLmxlZnQgPSAyOworICBjb25zdCBydGM6OnNjb3Bl
ZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gY3JvcHBlZF9mcmFtZSA9CisgICAgICBDcm9w
QW5kWm9vbShyZWdpb24sIHRlc3RfZnJhbWVfKTsKKyAgRVhQRUNUX0VRKHN0ZDo6dmVjdG9yPHVp
bnQ4X3Q+KAorICAgICAgICAgICAgICAgIHsyLCAyLCAzLCAzLCA2LCA2LCA3LCA3LCAxMCwgMTAs
IDExLCAxMSwgMTQsIDE0LCAxNSwgMTV9KSwKKyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4
X3Q+KGNyb3BwZWRfZnJhbWUtPkRhdGFZKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcm9wcGVkX2ZyYW1lLT5EYXRhWSgpICsgMTYpKTsKKyAgRVhQRUNUX0VRKAorICAgICAg
c3RkOjp2ZWN0b3I8dWludDhfdD4oezEsIDEsIDMsIDN9KSwKKyAgICAgIHN0ZDo6dmVjdG9yPHVp
bnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRhdGFVKCksIGNyb3BwZWRfZnJhbWUtPkRhdGFVKCkgKyA0
KSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHsxLCAxLCAzLCAz
fSksCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhVigpLCBj
cm9wcGVkX2ZyYW1lLT5EYXRhVigpICsgNCkpOworfQorCitURVNUX0YoVmlkZW9HZW9tZXRyeUFs
aWduZXJUZXN0LCBDcm9wQW5kWm9vbVRvcCkgeworICBDcm9wUmVnaW9uIHJlZ2lvbjsKKyAgcmVn
aW9uLnRvcCA9IDI7CisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJm
YWNlPiBjcm9wcGVkX2ZyYW1lID0KKyAgICAgIENyb3BBbmRab29tKHJlZ2lvbiwgdGVzdF9mcmFt
ZV8pOworICBFWFBFQ1RfRVEoc3RkOjp2ZWN0b3I8dWludDhfdD4oCisgICAgICAgICAgICAgICAg
ezgsIDksIDEwLCAxMSwgMTAsIDExLCAxMiwgMTMsIDEyLCAxMywgMTQsIDE1LCAxMiwgMTMsIDE0
LCAxNX0pLAorICAgICAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oY3JvcHBlZF9mcmFtZS0+
RGF0YVkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3BwZWRfZnJhbWUt
PkRhdGFZKCkgKyAxNikpOworICBFWFBFQ1RfRVEoCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90
Pih7MiwgMywgMiwgM30pLAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oY3JvcHBlZF9mcmFt
ZS0+RGF0YVUoKSwgY3JvcHBlZF9mcmFtZS0+RGF0YVUoKSArIDQpKTsKKyAgRVhQRUNUX0VRKAor
ICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oezIsIDMsIDIsIDN9KSwKKyAgICAgIHN0ZDo6dmVj
dG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRhdGFWKCksIGNyb3BwZWRfZnJhbWUtPkRhdGFW
KCkgKyA0KSk7Cit9CisKK1RFU1RfRihWaWRlb0dlb21ldHJ5QWxpZ25lclRlc3QsIENyb3BBbmRa
b29tUmlnaHQpIHsKKyAgQ3JvcFJlZ2lvbiByZWdpb247CisgIHJlZ2lvbi5yaWdodCA9IDI7Cisg
IGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBjcm9wcGVkX2Zy
YW1lID0KKyAgICAgIENyb3BBbmRab29tKHJlZ2lvbiwgdGVzdF9mcmFtZV8pOworICBFWFBFQ1Rf
RVEoc3RkOjp2ZWN0b3I8dWludDhfdD4oCisgICAgICAgICAgICAgICAgezAsIDAsIDEsIDEsIDQs
IDQsIDUsIDUsIDgsIDgsIDksIDksIDEyLCAxMiwgMTMsIDEzfSksCisgICAgICAgICAgICBzdGQ6
OnZlY3Rvcjx1aW50OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhWSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JvcHBlZF9mcmFtZS0+RGF0YVkoKSArIDE2KSk7CisgIEVYUEVD
VF9FUSgKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHswLCAwLCAyLCAyfSksCisgICAgICBz
dGQ6OnZlY3Rvcjx1aW50OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhVSgpLCBjcm9wcGVkX2ZyYW1l
LT5EYXRhVSgpICsgNCkpOworICBFWFBFQ1RfRVEoCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90
Pih7MCwgMCwgMiwgMn0pLAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oY3JvcHBlZF9mcmFt
ZS0+RGF0YVYoKSwgY3JvcHBlZF9mcmFtZS0+RGF0YVYoKSArIDQpKTsKK30KKworVEVTVF9GKFZp
ZGVvR2VvbWV0cnlBbGlnbmVyVGVzdCwgQ3JvcEFuZFpvb21Cb3R0b20pIHsKKyAgQ3JvcFJlZ2lv
biByZWdpb247CisgIHJlZ2lvbi5ib3R0b20gPSAyOworICBjb25zdCBydGM6OnNjb3BlZF9yZWZw
dHI8STQyMEJ1ZmZlckludGVyZmFjZT4gY3JvcHBlZF9mcmFtZSA9CisgICAgICBDcm9wQW5kWm9v
bShyZWdpb24sIHRlc3RfZnJhbWVfKTsKKyAgRVhQRUNUX0VRKAorICAgICAgc3RkOjp2ZWN0b3I8
dWludDhfdD4oezAsIDEsIDIsIDMsIDIsIDMsIDQsIDUsIDQsIDUsIDYsIDcsIDQsIDUsIDYsIDd9
KSwKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRhdGFZKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9wcGVkX2ZyYW1lLT5EYXRhWSgpICsgMTYpKTsK
KyAgRVhQRUNUX0VRKAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oezAsIDEsIDAsIDF9KSwK
KyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRhdGFVKCksIGNyb3Bw
ZWRfZnJhbWUtPkRhdGFVKCkgKyA0KSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0ZDo6dmVjdG9y
PHVpbnQ4X3Q+KHswLCAxLCAwLCAxfSksCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pihjcm9w
cGVkX2ZyYW1lLT5EYXRhVigpLCBjcm9wcGVkX2ZyYW1lLT5EYXRhVigpICsgNCkpOworfQorCitU
RVNUX0YoVmlkZW9HZW9tZXRyeUFsaWduZXJUZXN0LCBDYWxjdWxhdGVDcm9wUmVnaW9uSWRlbnRp
dHkpIHsKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGZy
YW1lID0KKyAgICAgIHJlZmVyZW5jZV92aWRlb18tPkdldEZyYW1lKDApOworICBDcm9wUmVnaW9u
IGlkZW50aXR5X3JlZ2lvbjsKKyAgRVhQRUNUX0VRKGlkZW50aXR5X3JlZ2lvbiwgQ2FsY3VsYXRl
Q3JvcFJlZ2lvbihmcmFtZSwgZnJhbWUpKTsKK30KKworVEVTVF9GKFZpZGVvR2VvbWV0cnlBbGln
bmVyVGVzdCwgQ2FsY3VsYXRlQ3JvcFJlZ2lvbkFyYml0cmFyeSkgeworICAvLyBBcmJpdHJhcnkg
Y3JvcCByZWdpb24uCisgIENyb3BSZWdpb24gY3JvcF9yZWdpb247CisgIGNyb3BfcmVnaW9uLmxl
ZnQgPSAyOworICBjcm9wX3JlZ2lvbi50b3AgPSA0OworICBjcm9wX3JlZ2lvbi5yaWdodCA9IDU7
CisgIGNyb3BfcmVnaW9uLmJvdHRvbSA9IDM7CisKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRy
PEk0MjBCdWZmZXJJbnRlcmZhY2U+IGZyYW1lID0KKyAgICAgIHJlZmVyZW5jZV92aWRlb18tPkdl
dEZyYW1lKDApOworCisgIEVYUEVDVF9FUShjcm9wX3JlZ2lvbiwKKyAgICAgICAgICAgIENhbGN1
bGF0ZUNyb3BSZWdpb24oZnJhbWUsIENyb3BBbmRab29tKGNyb3BfcmVnaW9uLCBmcmFtZSkpKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29s
cy9mcmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3Zp
ZGVvX3F1YWxpdHlfYW5hbHlzaXMuY2MKaW5kZXggMWMzMGQwOGM1NjU1MWJhMzk1MWNkYzNjZmY0
ZjBlZDM3NjE2YjMyOS4uNDAwMjY4MDJjNzc0M2RhODQxMjk0MjA5YmRhYWJmMWVlODIyMGFiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2Fu
YWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuY2MKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bnVtZXJpYz4KIAorI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L3BlcmZfdGVzdC5oIgogI2lu
Y2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9jb21wYXJlLmgiCiAjaW5j
bHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnQuaCIKQEAgLTU2
LDE2ICs1NywxMSBAQCBzdGQ6OnZlY3RvcjxBbmFseXNpc1Jlc3VsdD4gUnVuQW5hbHlzaXMoCiAg
ICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6dGVzdDo6VmlkZW8+JiB0ZXN0X3Zp
ZGVvLAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHRlc3RfZnJhbWVfaW5kaWNlcykg
ewogICBzdGQ6OnZlY3RvcjxBbmFseXNpc1Jlc3VsdD4gcmVzdWx0czsKLSAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0ZXN0X2ZyYW1lX2luZGljZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAvLyBJZ25v
cmUgZHVwbGljYXRlZCBmcmFtZXMgaW4gdGhlIHRlc3QgdmlkZW8uCi0gICAgaWYgKGkgPiAwICYm
IHRlc3RfZnJhbWVfaW5kaWNlc1tpXSA9PSB0ZXN0X2ZyYW1lX2luZGljZXNbaSAtIDFdKQotICAg
ICAgY29udGludWU7Ci0KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X3ZpZGVvLT5udW1i
ZXJfb2ZfZnJhbWVzKCk7ICsraSkgewogICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIw
QnVmZmVySW50ZXJmYWNlPiYgdGVzdF9mcmFtZSA9CiAgICAgICAgIHRlc3RfdmlkZW8tPkdldEZy
YW1lKGkpOwogICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNl
PiYgcmVmZXJlbmNlX2ZyYW1lID0KLSAgICAgICAgcmVmZXJlbmNlX3ZpZGVvLT5HZXRGcmFtZSh0
ZXN0X2ZyYW1lX2luZGljZXNbaV0gJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlZmVyZW5jZV92aWRlby0+bnVtYmVyX29mX2ZyYW1lcygpKTsKKyAgICAgICAgcmVmZXJlbmNl
X3ZpZGVvLT5HZXRGcmFtZShpKTsKIAogICAgIC8vIEZpbGwgaW4gdGhlIHJlc3VsdCBzdHJ1Y3Qu
CiAgICAgQW5hbHlzaXNSZXN1bHQgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVv
X3RlbXBvcmFsX2FsaWduZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fdGVtcG9yYWxfYWxpZ25lci5j
YwppbmRleCAyZWJmZmJjNGU3NWIzYmU0MDBkOWVkOGQ0ZDY4NDQ4MWRhYjFjZTgwLi5mYTI1Zjcz
ZjhlMTQ0OGM4N2Q0MGQ3Nzk5ZTJkOTAxMWU4ZDA0M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIv
dmlkZW9fdGVtcG9yYWxfYWxpZ25lci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fdGVtcG9yYWxf
YWxpZ25lci5jYwpAQCAtMjE1LDcgKzIxNSw3IEBAIHN0ZDo6dmVjdG9yPHNpemVfdD4gRmluZE1h
dGNoaW5nRnJhbWVJbmRpY2VzKAogCiBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+IFJlb3JkZXJW
aWRlbyhjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+JiB2aWRlbywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIGlu
ZGljZXMpIHsKLSAgcmV0dXJuIG5ldyBSZW9yZGVyZWRWaWRlbyh2aWRlbywgaW5kaWNlcyk7Cisg
IHJldHVybiBuZXcgUmVvcmRlcmVkVmlkZW8obmV3IExvb3BpbmdWaWRlbyh2aWRlbyksIGluZGlj
ZXMpOwogfQogCiBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+IEdlbmVyYXRlQWxpZ25lZFJlZmVy
ZW5jZVZpZGVvKApAQCAtMjI4LDcgKzIyOCw3IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4g
R2VuZXJhdGVBbGlnbmVkUmVmZXJlbmNlVmlkZW8oCiBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+
IEdlbmVyYXRlQWxpZ25lZFJlZmVyZW5jZVZpZGVvKAogICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxWaWRlbz4mIHJlZmVyZW5jZV92aWRlbywKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXpl
X3Q+JiBpbmRpY2VzKSB7Ci0gIHJldHVybiBSZW9yZGVyVmlkZW8obmV3IExvb3BpbmdWaWRlbyhy
ZWZlcmVuY2VfdmlkZW8pLCBpbmRpY2VzKTsKKyAgcmV0dXJuIFJlb3JkZXJWaWRlbyhyZWZlcmVu
Y2VfdmlkZW8sIGluZGljZXMpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25l
dHdvcmtfdGVzdGVyL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVyL0JVSUxELmduCmluZGV4IGE1MDM2ZGNl
YTljZDE4NjAwMWQ4ZDQ5M2Y0MTI1NzUwMDkyZTcyYjYuLjQ3YjgxNDMwNDcyYjE3OTU3NGIwNTZh
MzNmYWVkOGIwNjYyNGRiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci9CVUlMRC5nbgorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvbmV0d29y
a190ZXN0ZXIvQlVJTEQuZ24KQEAgLTYsOCArNiw4IEBACiAjIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKICMgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAKLWltcG9ydCgi
Li4vLi4vd2VicnRjLmduaSIpCiBpbXBvcnQoIi8vdGhpcmRfcGFydHkvcHJvdG9idWYvcHJvdG9f
bGlicmFyeS5nbmkiKQoraW1wb3J0KCIuLi8uLi93ZWJydGMuZ25pIikKIAogaWYgKHJ0Y19lbmFi
bGVfcHJvdG9idWYpIHsKICAgcHJvdG9fbGlicmFyeSgibmV0d29ya190ZXN0ZXJfY29uZmlnX3By
b3RvIikgewpAQCAtNDQsNiArNDQsNyBAQCBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAg
ICAgIi4uLy4uL3AycCIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAgICIu
Li8uLi9ydGNfYmFzZTpwcm90b2J1Zl91dGlscyIsCisgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRj
X2Jhc2UiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAg
ICIuLi8uLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6
c2VxdWVuY2VkX3Rhc2tfY2hlY2tlciIsCkBAIC04MCw3ICs4MSw3IEBAIGlmIChydGNfZW5hYmxl
X3Byb3RvYnVmKSB7CiAKICAgICBkZXBzID0gWwogICAgICAgIjpuZXR3b3JrX3Rlc3RlciIsCi0g
ICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAorICAgICAgIi4uLy4u
L3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwK
ICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0
IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci90ZXN0X2NvbnRyb2xsZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvbmV0d29ya190ZXN0ZXIv
dGVzdF9jb250cm9sbGVyLmNjCmluZGV4IGU1YmQ5MmVmYTkzYzZkYjE1NTA1NDhhYjYyODg3NWYy
NTliNWIwODEuLjliZmRmYTc3MzJjODIwZTg2MDE5ZmQ5MTMxODA4MzRjMTg4NGMwZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29s
cy9uZXR3b3JrX3Rlc3Rlci90ZXN0X2NvbnRyb2xsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVyL3Rlc3Rf
Y29udHJvbGxlci5jYwpAQCAtMTAsNiArMTAsOSBAQAogCiAjaW5jbHVkZSAicnRjX3Rvb2xzL25l
dHdvcmtfdGVzdGVyL3Rlc3RfY29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9v
cHRpb25hbC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgorCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIAogVGVzdENvbnRyb2xsZXI6OlRlc3RDb250cm9sbGVyKGludCBtaW5fcG9ydCwKQEAg
LTI0LDE3ICsyNywxNSBAQCBUZXN0Q29udHJvbGxlcjo6VGVzdENvbnRyb2xsZXIoaW50IG1pbl9w
b3J0LAogICBSVENfRENIRUNLX1JVTl9PTigmdGVzdF9jb250cm9sbGVyX3RocmVhZF9jaGVja2Vy
Xyk7CiAgIHBhY2tldF9zZW5kZXJfY2hlY2tlcl8uRGV0YWNoKCk7CiAgIHNlbmRfZGF0YV8uZmls
bCg0Mik7Ci0gIGF1dG8gc29ja2V0ID0KKyAgdWRwX3NvY2tldF8gPQogICAgICAgc3RkOjp1bmlx
dWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+KHNvY2tldF9mYWN0b3J5Xy5DcmVhdGVVZHBT
b2NrZXQoCiAgICAgICAgICAgcnRjOjpTb2NrZXRBZGRyZXNzKHJ0Yzo6R2V0QW55SVAoQUZfSU5F
VCksIDApLCBtaW5fcG9ydCwgbWF4X3BvcnQpKTsKLSAgc29ja2V0LT5TaWduYWxSZWFkUGFja2V0
LmNvbm5lY3QodGhpcywgJlRlc3RDb250cm9sbGVyOjpPblJlYWRQYWNrZXQpOwotICB1ZHBfdHJh
bnNwb3J0Xy5yZXNldCgKLSAgICAgIG5ldyBjcmlja2V0OjpVZHBUcmFuc3BvcnQoIm5ldHdvcmsg
dGVzdGVyIHRyYW5zcG9ydCIsIHN0ZDo6bW92ZShzb2NrZXQpKSk7CisgIHVkcF9zb2NrZXRfLT5T
aWduYWxSZWFkUGFja2V0LmNvbm5lY3QodGhpcywgJlRlc3RDb250cm9sbGVyOjpPblJlYWRQYWNr
ZXQpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpTZW5kQ29ubmVjdFRvKGNvbnN0IHN0ZDo6
c3RyaW5nJiBob3N0bmFtZSwgaW50IHBvcnQpIHsKICAgUlRDX0RDSEVDS19SVU5fT04oJnRlc3Rf
Y29udHJvbGxlcl90aHJlYWRfY2hlY2tlcl8pOwotICB1ZHBfdHJhbnNwb3J0Xy0+U2V0UmVtb3Rl
QWRkcmVzcyhydGM6OlNvY2tldEFkZHJlc3MoaG9zdG5hbWUsIHBvcnQpKTsKKyAgcmVtb3RlX2Fk
ZHJlc3NfID0gcnRjOjpTb2NrZXRBZGRyZXNzKGhvc3RuYW1lLCBwb3J0KTsKICAgTmV0d29ya1Rl
c3RlclBhY2tldCBwYWNrZXQ7CiAgIHBhY2tldC5zZXRfdHlwZShOZXR3b3JrVGVzdGVyUGFja2V0
OjpIQU5EX1NIQUtJTkcpOwogICBTZW5kRGF0YShwYWNrZXQsIGFic2w6Om51bGxvcHQpOwpAQCAt
NTcsOCArNTgsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpTZW5kRGF0YShjb25zdCBOZXR3b3Jr
VGVzdGVyUGFja2V0JiBwYWNrZXQsCiAgIHBhY2tldC5TZXJpYWxpemVUb0FycmF5KCZzZW5kX2Rh
dGFfWzFdLCBzdGQ6Om51bWVyaWNfbGltaXRzPGNoYXI+OjptYXgoKSk7CiAgIGlmIChkYXRhX3Np
emUgJiYgKmRhdGFfc2l6ZSA+IHBhY2tldF9zaXplKQogICAgIHBhY2tldF9zaXplID0gKmRhdGFf
c2l6ZTsKLSAgdWRwX3RyYW5zcG9ydF8tPlNlbmRQYWNrZXQoc2VuZF9kYXRhXy5kYXRhKCksIHBh
Y2tldF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBhY2tldE9wdGlv
bnMoKSwgMCk7CisgIHVkcF9zb2NrZXRfLT5TZW5kVG8oKGNvbnN0IHZvaWQqKXNlbmRfZGF0YV8u
ZGF0YSgpLCBwYWNrZXRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfYWRkcmVz
c18sIHJ0Yzo6UGFja2V0T3B0aW9ucygpKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6T25U
ZXN0RG9uZSgpIHsKQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6T25SZWFk
UGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0
X3RpbWVfdXMpIHsKICAgUlRDX0RDSEVDS19SVU5fT04oJnRlc3RfY29udHJvbGxlcl90aHJlYWRf
Y2hlY2tlcl8pOwogICBzaXplX3QgcGFja2V0X3NpemUgPSBkYXRhWzBdOwogICBzdGQ6OnN0cmlu
ZyByZWNlaXZlX2RhdGEoJmRhdGFbMV0sIHBhY2tldF9zaXplKTsKQEAgLTkxLDcgKzkyLDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQq
IHNvY2tldCwKICAgICBjYXNlIE5ldHdvcmtUZXN0ZXJQYWNrZXQ6OkhBTkRfU0hBS0lORzogewog
ICAgICAgTmV0d29ya1Rlc3RlclBhY2tldCBwYWNrZXQ7CiAgICAgICBwYWNrZXQuc2V0X3R5cGUo
TmV0d29ya1Rlc3RlclBhY2tldDo6VEVTVF9TVEFSVCk7Ci0gICAgICB1ZHBfdHJhbnNwb3J0Xy0+
U2V0UmVtb3RlQWRkcmVzcyhyZW1vdGVfYWRkcik7CisgICAgICByZW1vdGVfYWRkcmVzc18gPSBy
ZW1vdGVfYWRkcjsKICAgICAgIFNlbmREYXRhKHBhY2tldCwgYWJzbDo6bnVsbG9wdCk7CiAgICAg
ICBwYWNrZXRfc2VuZGVyXy5yZXNldChuZXcgUGFja2V0U2VuZGVyKHRoaXMsIGNvbmZpZ19maWxl
X3BhdGhfKSk7CiAgICAgICBwYWNrZXRfc2VuZGVyXy0+U3RhcnRTZW5kaW5nKCk7CkBAIC0xMDks
NyArMTEwLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQ
YWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE5ldHdv
cmtUZXN0ZXJQYWNrZXQ6OlRFU1RfREFUQTogewotICAgICAgcGFja2V0LnNldF9hcnJpdmFsX3Rp
bWVzdGFtcChwYWNrZXRfdGltZS50aW1lc3RhbXApOworICAgICAgcGFja2V0LnNldF9hcnJpdmFs
X3RpbWVzdGFtcChwYWNrZXRfdGltZV91cyk7CiAgICAgICBwYWNrZXQuc2V0X3BhY2tldF9zaXpl
KGxlbik7CiAgICAgICBwYWNrZXRfbG9nZ2VyXy5Mb2dQYWNrZXQocGFja2V0KTsKICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVyL3Rlc3RfY29udHJvbGxlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVy
L3Rlc3RfY29udHJvbGxlci5oCmluZGV4IGNmNjVlMTc0NTk1NjE2OTk1ZjNmZDM4NzMyMzRlMDky
YjA4ZmMzOGQuLmE2NTI3MmEwOWQxZWI0MGE1ZjBiOTBmNTM3ZWY3YjhiYjYyMjIyOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29s
cy9uZXR3b3JrX3Rlc3Rlci90ZXN0X2NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvbmV0d29ya190ZXN0ZXIvdGVzdF9j
b250cm9sbGVyLmgKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5j
bHVkZSAicDJwL2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0b3J5LmgiCi0jaW5jbHVkZSAicDJw
L2Jhc2UvdWRwdHJhbnNwb3J0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2Nr
ZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvaWdub3JlX3d1bmRlZi5oIgogI2luY2x1ZGUgInJ0Y190b29scy9uZXR3b3JrX3Rl
c3Rlci9wYWNrZXRfbG9nZ2VyLmgiCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFRlc3RDb250cm9s
bGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsKICAgcnRj
OjpUaHJlYWRDaGVja2VyIHRlc3RfY29udHJvbGxlcl90aHJlYWRfY2hlY2tlcl87CiAgIHJ0Yzo6
U2VxdWVuY2VkVGFza0NoZWNrZXIgcGFja2V0X3NlbmRlcl9jaGVja2VyXzsKICAgcnRjOjpCYXNp
Y1BhY2tldFNvY2tldEZhY3Rvcnkgc29ja2V0X2ZhY3RvcnlfOwpAQCAtNzAsNyArNzAsOCBAQCBj
bGFzcyBUZXN0Q29udHJvbGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIGJv
b2wgbG9jYWxfdGVzdF9kb25lXyBSVENfR1VBUkRFRF9CWShsb2NhbF90ZXN0X2RvbmVfbG9ja18p
OwogICBib29sIHJlbW90ZV90ZXN0X2RvbmVfOwogICBzdGQ6OmFycmF5PGNoYXIsIGtFdGhlcm5l
dE10dT4gc2VuZF9kYXRhXzsKLSAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OlVkcFRyYW5zcG9y
dD4gdWRwX3RyYW5zcG9ydF87CisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29j
a2V0PiB1ZHBfc29ja2V0XzsKKyAgcnRjOjpTb2NrZXRBZGRyZXNzIHJlbW90ZV9hZGRyZXNzXzsK
ICAgc3RkOjp1bmlxdWVfcHRyPFBhY2tldFNlbmRlcj4gcGFja2V0X3NlbmRlcl87CiAKICAgUlRD
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXN0Q29udHJvbGxlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvdW5wYWNr
X2FlY2R1bXAvdW5wYWNrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX3Rvb2xzL3VucGFja19hZWNkdW1wL3VucGFjay5jYwppbmRleCA0Yzc1NjA4ZTc0
ODhhNjA0MzVmYzExY2YxNDQ4OTY2NmEyOGM2M2NhLi4xNDJiNDk3MzBhMzYxNzBiNjU3NjE3NGE1
YjczMTIyOGZkNjU3YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvdW5wYWNrX2FlY2R1bXAvdW5wYWNrLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy91bnBhY2tf
YWVjZHVtcC91bnBhY2suY2MKQEAgLTI5LDI3ICsyOSwzNCBAQCBSVENfUFVTSF9JR05PUklOR19X
VU5ERUYoKQogUlRDX1BPUF9JR05PUklOR19XVU5ERUYoKQogCiAvLyBUT0RPKGFuZHJldyk6IHVu
cGFjayBtb3JlIG9mIHRoZSBkYXRhLgotREVGSU5FX3N0cmluZyhpbnB1dF9maWxlLCAiaW5wdXQi
LCAiVGhlIG5hbWUgb2YgdGhlIGlucHV0IHN0cmVhbSBmaWxlLiIpOwotREVGSU5FX3N0cmluZyhv
dXRwdXRfZmlsZSwKLSAgICAgICAgICAgICAgInJlZl9vdXQiLAotICAgICAgICAgICAgICAiVGhl
IG5hbWUgb2YgdGhlIHJlZmVyZW5jZSBvdXRwdXQgc3RyZWFtIGZpbGUuIik7Ci1ERUZJTkVfc3Ry
aW5nKHJldmVyc2VfZmlsZSwKLSAgICAgICAgICAgICAgInJldmVyc2UiLAotICAgICAgICAgICAg
ICAiVGhlIG5hbWUgb2YgdGhlIHJldmVyc2UgaW5wdXQgc3RyZWFtIGZpbGUuIik7Ci1ERUZJTkVf
c3RyaW5nKGRlbGF5X2ZpbGUsICJkZWxheS5pbnQzMiIsICJUaGUgbmFtZSBvZiB0aGUgZGVsYXkg
ZmlsZS4iKTsKLURFRklORV9zdHJpbmcoZHJpZnRfZmlsZSwgImRyaWZ0LmludDMyIiwgIlRoZSBu
YW1lIG9mIHRoZSBkcmlmdCBmaWxlLiIpOwotREVGSU5FX3N0cmluZyhsZXZlbF9maWxlLCAibGV2
ZWwuaW50MzIiLCAiVGhlIG5hbWUgb2YgdGhlIGxldmVsIGZpbGUuIik7Ci1ERUZJTkVfc3RyaW5n
KGtleXByZXNzX2ZpbGUsICJrZXlwcmVzcy5ib29sIiwgIlRoZSBuYW1lIG9mIHRoZSBrZXlwcmVz
cyBmaWxlLiIpOwotREVGSU5FX3N0cmluZyhjYWxsb3JkZXJfZmlsZSwKLSAgICAgICAgICAgICAg
ImNhbGxvcmRlciIsCi0gICAgICAgICAgICAgICJUaGUgbmFtZSBvZiB0aGUgcmVuZGVyL2NhcHR1
cmUgY2FsbCBvcmRlciBmaWxlLiIpOwotREVGSU5FX3N0cmluZyhzZXR0aW5nc19maWxlLCAic2V0
dGluZ3MudHh0IiwgIlRoZSBuYW1lIG9mIHRoZSBzZXR0aW5ncyBmaWxlLiIpOwotREVGSU5FX2Jv
b2woZnVsbCwgZmFsc2UsICJVbnBhY2sgdGhlIGZ1bGwgc2V0IG9mIGZpbGVzIChub3JtYWxseSBu
b3QgbmVlZGVkKS4iKTsKLURFRklORV9ib29sKHJhdywgZmFsc2UsICJXcml0ZSByYXcgZGF0YSBp
bnN0ZWFkIG9mIGEgV0FWIGZpbGUuIik7Ci1ERUZJTkVfYm9vbCh0ZXh0LAotICAgICAgICAgICAg
ZmFsc2UsCi0gICAgICAgICAgICAiV3JpdGUgbm9uLWF1ZGlvIGZpbGVzIGFzIHRleHQgZmlsZXMg
aW5zdGVhZCBvZiBiaW5hcnkgZmlsZXMuIik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlBy
aW50IHRoaXMgbWVzc2FnZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGlucHV0X2ZpbGUsICJp
bnB1dCIsICJUaGUgbmFtZSBvZiB0aGUgaW5wdXQgc3RyZWFtIGZpbGUuIik7CitXRUJSVENfREVG
SU5FX3N0cmluZyhvdXRwdXRfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICJyZWZfb3V0IiwK
KyAgICAgICAgICAgICAgICAgICAgICJUaGUgbmFtZSBvZiB0aGUgcmVmZXJlbmNlIG91dHB1dCBz
dHJlYW0gZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHJldmVyc2VfZmlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICJyZXZlcnNlIiwKKyAgICAgICAgICAgICAgICAgICAgICJUaGUgbmFt
ZSBvZiB0aGUgcmV2ZXJzZSBpbnB1dCBzdHJlYW0gZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKGRlbGF5X2ZpbGUsICJkZWxheS5pbnQzMiIsICJUaGUgbmFtZSBvZiB0aGUgZGVsYXkgZmls
ZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGRyaWZ0X2ZpbGUsICJkcmlmdC5pbnQzMiIsICJU
aGUgbmFtZSBvZiB0aGUgZHJpZnQgZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGxldmVs
X2ZpbGUsICJsZXZlbC5pbnQzMiIsICJUaGUgbmFtZSBvZiB0aGUgbGV2ZWwgZmlsZS4iKTsKK1dF
QlJUQ19ERUZJTkVfc3RyaW5nKGtleXByZXNzX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAi
a2V5cHJlc3MuYm9vbCIsCisgICAgICAgICAgICAgICAgICAgICAiVGhlIG5hbWUgb2YgdGhlIGtl
eXByZXNzIGZpbGUuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhjYWxsb3JkZXJfZmlsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICJjYWxsb3JkZXIiLAorICAgICAgICAgICAgICAgICAgICAgIlRo
ZSBuYW1lIG9mIHRoZSByZW5kZXIvY2FwdHVyZSBjYWxsIG9yZGVyIGZpbGUuIik7CitXRUJSVENf
REVGSU5FX3N0cmluZyhzZXR0aW5nc19maWxlLAorICAgICAgICAgICAgICAgICAgICAgInNldHRp
bmdzLnR4dCIsCisgICAgICAgICAgICAgICAgICAgICAiVGhlIG5hbWUgb2YgdGhlIHNldHRpbmdz
IGZpbGUuIik7CitXRUJSVENfREVGSU5FX2Jvb2woZnVsbCwKKyAgICAgICAgICAgICAgICAgICBm
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAiVW5wYWNrIHRoZSBmdWxsIHNldCBvZiBmaWxlcyAo
bm9ybWFsbHkgbm90IG5lZWRlZCkuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocmF3LCBmYWxzZSwg
IldyaXRlIHJhdyBkYXRhIGluc3RlYWQgb2YgYSBXQVYgZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbCgKKyAgICB0ZXh0LAorICAgIGZhbHNlLAorICAgICJXcml0ZSBub24tYXVkaW8gZmlsZXMg
YXMgdGV4dCBmaWxlcyBpbnN0ZWFkIG9mIGJpbmFyeSBmaWxlcy4iKTsKK1dFQlJUQ19ERUZJTkVf
Ym9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMgbWVzc2FnZS4iKTsKIAogI2RlZmluZSBQUklO
VF9DT05GSUcoZmllbGRfbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgaWYgKG1zZy5oYXNfIyNmaWVsZF9uYW1lKCkpIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC04Nyw2ICs5NCwxMCBAQCB2b2lkIFdyaXRlQ2Fs
bE9yZGVyRGF0YShjb25zdCBib29sIHJlbmRlcl9jYWxsLAogICBXcml0ZURhdGEoJmNhbGxfdHlw
ZSwgc2l6ZW9mKGNhbGxfdHlwZSksIGZpbGUsIGZpbGVuYW1lLmNfc3RyKCkpOwogfQogCitib29s
IFdyaXRpbmdDYWxsT3JkZXJGaWxlKCkgeworICByZXR1cm4gRkxBR19mdWxsOworfQorCiB9ICAv
LyBuYW1lc3BhY2UKIAogaW50IGRvX21haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewpAQCAt
MTI1LDcgKzEzNiw5IEBAIGludCBkb19tYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKIAog
ICBydGM6OlN0cmluZ0J1aWxkZXIgY2FsbG9yZGVyX3Jhd19uYW1lOwogICBjYWxsb3JkZXJfcmF3
X25hbWUgPDwgRkxBR19jYWxsb3JkZXJfZmlsZSA8PCAiLmNoYXIiOwotICBGSUxFKiBjYWxsb3Jk
ZXJfY2hhcl9maWxlID0gT3BlbkZpbGUoY2FsbG9yZGVyX3Jhd19uYW1lLnN0cigpLCAid2IiKTsK
KyAgRklMRSogY2FsbG9yZGVyX2NoYXJfZmlsZSA9IFdyaXRpbmdDYWxsT3JkZXJGaWxlKCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE9wZW5GaWxlKGNhbGxvcmRlcl9yYXdf
bmFtZS5zdHIoKSwgIndiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51
bGxwdHI7CiAgIEZJTEUqIHNldHRpbmdzX2ZpbGUgPSBPcGVuRmlsZShGTEFHX3NldHRpbmdzX2Zp
bGUsICJ3YiIpOwogCiAgIHdoaWxlIChSZWFkTWVzc2FnZUZyb21GaWxlKGRlYnVnX2ZpbGUsICZl
dmVudF9tc2cpKSB7CkBAIC0xNjMsOCArMTc2LDEwIEBAIGludCBkb19tYWluKGludCBhcmdjLCBj
aGFyKiBhcmd2W10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZV9yYXdfZmlsZS5n
ZXQoKSk7CiAgICAgICB9CiAgICAgICBpZiAoRkxBR19mdWxsKSB7Ci0gICAgICAgIFdyaXRlQ2Fs
bE9yZGVyRGF0YSh0cnVlIC8qIHJlbmRlcl9jYWxsICovLCBjYWxsb3JkZXJfY2hhcl9maWxlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxBR19jYWxsb3JkZXJfZmlsZSk7CisgICAgICAg
IGlmIChXcml0aW5nQ2FsbE9yZGVyRmlsZSgpKSB7CisgICAgICAgICAgV3JpdGVDYWxsT3JkZXJE
YXRhKHRydWUgLyogcmVuZGVyX2NhbGwgKi8sIGNhbGxvcmRlcl9jaGFyX2ZpbGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZMQUdfY2FsbG9yZGVyX2ZpbGUpOworICAgICAgICB9CiAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChldmVudF9tc2cudHlwZSgpID09IEV2ZW50OjpTVFJFQU0p
IHsKICAgICAgIGZyYW1lX2NvdW50Kys7CkBAIC0yMjIsOCArMjM3LDEwIEBAIGludCBkb19tYWlu
KGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICAgIH0KIAogICAgICAgaWYgKEZMQUdfZnVs
bCkgewotICAgICAgICBXcml0ZUNhbGxPcmRlckRhdGEoZmFsc2UgLyogcmVuZGVyX2NhbGwgKi8s
IGNhbGxvcmRlcl9jaGFyX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBGTEFHX2Nh
bGxvcmRlcl9maWxlKTsKKyAgICAgICAgaWYgKFdyaXRpbmdDYWxsT3JkZXJGaWxlKCkpIHsKKyAg
ICAgICAgICBXcml0ZUNhbGxPcmRlckRhdGEoZmFsc2UgLyogcmVuZGVyX2NhbGwgKi8sIGNhbGxv
cmRlcl9jaGFyX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQUdfY2FsbG9y
ZGVyX2ZpbGUpOworICAgICAgICB9CiAgICAgICAgIGlmIChtc2cuaGFzX2RlbGF5KCkpIHsKICAg
ICAgICAgICBzdGF0aWMgRklMRSogZGVsYXlfZmlsZSA9IE9wZW5GaWxlKEZMQUdfZGVsYXlfZmls
ZSwgIndiIik7CiAgICAgICAgICAgaW50MzJfdCBkZWxheSA9IG1zZy5kZWxheSgpOwpAQCAtMzU5
LDkgKzM3NiwxMSBAQCBpbnQgZG9fbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAg
ICAgIG91dHB1dF93YXZfZmlsZS5yZXNldChuZXcgV2F2V3JpdGVyKAogICAgICAgICAgICAgb3V0
cHV0X25hbWUuc3RyKCksIG91dHB1dF9zYW1wbGVfcmF0ZSwgbnVtX291dHB1dF9jaGFubmVscykp
OwogCi0gICAgICAgIHJ0Yzo6U3RyaW5nQnVpbGRlciBjYWxsb3JkZXJfbmFtZTsKLSAgICAgICAg
Y2FsbG9yZGVyX25hbWUgPDwgRkxBR19jYWxsb3JkZXJfZmlsZSA8PCBmcmFtZV9jb3VudCA8PCAi
LmNoYXIiOwotICAgICAgICBjYWxsb3JkZXJfY2hhcl9maWxlID0gT3BlbkZpbGUoY2FsbG9yZGVy
X25hbWUuc3RyKCksICJ3YiIpOworICAgICAgICBpZiAoV3JpdGluZ0NhbGxPcmRlckZpbGUoKSkg
eworICAgICAgICAgIHJ0Yzo6U3RyaW5nQnVpbGRlciBjYWxsb3JkZXJfbmFtZTsKKyAgICAgICAg
ICBjYWxsb3JkZXJfbmFtZSA8PCBGTEFHX2NhbGxvcmRlcl9maWxlIDw8IGZyYW1lX2NvdW50IDw8
ICIuY2hhciI7CisgICAgICAgICAgY2FsbG9yZGVyX2NoYXJfZmlsZSA9IE9wZW5GaWxlKGNhbGxv
cmRlcl9uYW1lLnN0cigpLCAid2IiKTsKKyAgICAgICAgfQogICAgICAgfQogICAgIH0KICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X3Rvb2xzL3ZpZGVvX2FuYWx5c2lzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX3Rvb2xzL3ZpZGVvX2FuYWx5c2lzLnB5CmluZGV4IGE1ZDI2N2IwYjI5
YTNhMzA2Y2U2OTZiNWRjZTdiZmE5NjQ4MDhlY2QuLjBjMjI2MTdlY2YyMTBiYTc4N2FlOTk4MjVj
YjU3NDcwNjMxMzQzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y190b29scy92aWRlb19hbmFseXNpcy5weQorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvdmlkZW9fYW5hbHlzaXMu
cHkKQEAgLTc5LDcgKzc5LDcgQEAgZGVmIF9QYXJzZUFyZ3MoKToKICAgICAgICAgICAgICAgICAg
ICAgaGVscD0nUGF0aCB0byB0aGUgZnJhbWUgYW5hbHl6ZXIgZXhlY3V0YWJsZS4nCiAgICAgICAg
ICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVsdCcpCiAgIHBhcnNlci5hZGRfb3B0aW9uKCct
LXp4aW5nX3BhdGgnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSdQ
YXRoIHRvIHRoZSB6ZWJyYSB4aW5nIGJhcmNvZGUgYW5hbHl6ZXIuJykKKyAgICAgICAgICAgICAg
ICAgICAgaGVscD0nREVQUkVDQVRFRC4nKQogICBwYXJzZXIuYWRkX29wdGlvbignLS1yZWZfcmVj
X2RpcicsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9J3JlZicsCiAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J1BhdGggdG8gd2hlcmUgcmVmZXJlbmNlIHJlY29yZGluZ3Mgd2lsbCBiZSBjcmVhdGVk
LicKICAgICAgICAgICAgICAgICAgICAgJ0lkZWFsbHkga2VlcCB0aGUgcmVmIGFuZCB0ZXN0IGRp
cmVjdG9yaWVzIG9uIHNlcGFyYXRlJwpAQCAtMTE4LDggKzExOCw2IEBAIGRlZiBfUGFyc2VBcmdz
KCk6CiAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZCEnKQogICBpZiBub3Qgb3MucGF0aC5p
c2ZpbGUob3B0aW9ucy5mcmFtZV9hbmFseXplcik6CiAgICAgcGFyc2VyLndhcm5pbmcoJ0Nhbm5v
dCBmaW5kIGZyYW1lX2FuYWx5emVyLCBubyBtZXRyaWNzIHdpbGwgYmUgZ2VuZXJhdGVkIScpCi0g
IGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcHRpb25zLnp4aW5nX3BhdGgpOgotICAgIHBhcnNlci53
YXJuaW5nKCdDYW5ub3QgZmluZCBaZWJyYSBYaW5nLCBubyBtZXRyaWNzIHdpbGwgYmUgZ2VuZXJh
dGVkIScpCiAKICAgcmV0dXJuIG9wdGlvbnMKIApAQCAtNDQyLDEyICs0NDAsNiBAQCBkZWYgQ29t
cGFyZVZpZGVvcyhvcHRpb25zLCBjcm9wcGVkX3JlZl9maWxlLCBjcm9wcGVkX3Rlc3RfZmlsZSk6
CiAgICAgJy0tcmVmX3ZpZGVvPSVzJyAlIGNyb3BwZWRfcmVmX2ZpbGUsCiAgICAgJy0tdGVzdF92
aWRlbz0lcycgJSBjcm9wcGVkX3Rlc3RfZmlsZSwKICAgICAnLS1mcmFtZV9hbmFseXplcj0lcycg
JSBvcy5wYXRoLmFic3BhdGgob3B0aW9ucy5mcmFtZV9hbmFseXplciksCi0gICAgJy0tenhpbmdf
cGF0aD0lcycgJSBvcHRpb25zLnp4aW5nX3BhdGgsCi0gICAgJy0tZmZtcGVnX3BhdGg9JXMnICUg
b3B0aW9ucy5mZm1wZWcsCi0gICAgJy0tc3RhdHNfZmlsZV9yZWY9JXNfc3RhdHMudHh0JyAlCi0g
ICAgICAgIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoY3JvcHBlZF9yZWZfZmlsZSksIGNy
b3BwZWRfcmVmX2ZpbGUpLAotICAgICctLXN0YXRzX2ZpbGVfdGVzdD0lc19zdGF0cy50eHQnICUK
LSAgICAgICAgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShjcm9wcGVkX3Rlc3RfZmlsZSks
IGNyb3BwZWRfdGVzdF9maWxlKSwKICAgICAnLS15dXZfZnJhbWVfaGVpZ2h0PSVkJyAlIGNyb3Bf
aGVpZ2h0LAogICAgICctLXl1dl9mcmFtZV93aWR0aD0lZCcgJSBjcm9wX3dpZHRoCiAgIF0KQEAg
LTQ3Miw3ICs0NjQsNiBAQCBkZWYgbWFpbigpOgogICAgIC0tYXBwX25hbWUgQXBwUlRDTW9iaWxl
IFwKICAgICAtLWZmbXBlZyAuL2ZmbXBlZyAtLXJlZl92aWRlb19kZXZpY2U9L2Rldi92aWRlbzAg
XAogICAgIC0tdGVzdF92aWRlb19kZXZpY2U9L2Rldi92aWRlbzEgXAotICAgIC0tenhpbmdfcGF0
aCAuL3p4aW5nIFwKICAgICAtLXRlc3RfY3JvcF9wYXJhbWV0ZXJzICdjcm9wPTk1MDo0MjA6MTMw
OjU2JyBcCiAgICAgLS1yZWZfY3JvcF9wYXJhbWV0ZXJzICdoZmxpcCwgY3JvcD05NTA6NDIwOjEz
MDo1NicgXAogICAgIC0tcmVmX3JlY19kaXIgL3RtcC9yZWYgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL0JVSUxELmduIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL0JVSUxELmduCmluZGV4IGI0
ZjE5M2QxZjMyNmE2YTU1MGIzMjExMWE1MGE5OWM0ZTkwMmI2ODUuLjYwZWE0NzM0ZTk1MjBjMTgx
ZGI1MWFjZTRhN2UzN2EwMDYyMWUyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvQlVJTEQuZ24KQEAgLTgsOCArOCw4IEBACiAK
IGltcG9ydCgiLi4vd2VicnRjLmduaSIpCiBpZiAoaXNfaW9zKSB7Ci0gIGltcG9ydCgiLy9idWls
ZC9jb25maWcvaW9zL3J1bGVzLmduaSIpCiAgIGltcG9ydCgiLy9idWlsZC9jb25maWcvaW9zL2lv
c19zZGsuZ25pIikKKyAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9pb3MvcnVsZXMuZ25pIikKIH0K
IGlmIChpc19tYWMpIHsKICAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9tYWMvcnVsZXMuZ25pIikK
QEAgLTQwLDYgKzQwLDcgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICAgICJvYmpjL0Zy
YW1ld29yay9IZWFkZXJzIiwgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTYyNyk6IFJlbW92ZSB0
aGlzLgogICAgIF0KICAgICBjZmxhZ3MgPSBbCisgICAgICAiLVdpbXBsaWNpdC1yZXRhaW4tc2Vs
ZiIsCiAgICAgICAiLVdzdHJpY3Qtb3ZlcmZsb3ciLAogICAgICAgIi1XbWlzc2luZy1maWVsZC1p
bml0aWFsaXplcnMiLAogICAgIF0KQEAgLTI2Miw2ICsyNjMsOCBAQCBpZiAoaXNfaW9zIHx8IGlz
X21hYykgewogICAgICAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgICAg
IF0KIAorICAgICAgICBsaWJzID0gWyAiQXVkaW9Ub29sYm94LmZyYW1ld29yayIgXQorCiAgICAg
ICAgIGlmIChpc19jbGFuZykgewogICAgICAgICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0
aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2luCiAgICAgICAgICAgIyAoYnVncy53ZWJydGMub3JnLzE2
MykuCkBAIC0yODcsNiArMjkwLDggQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKIAogICAgICAg
ICBwdWJsaWNfY29uZmlncyA9IFsgIjpjb21tb25fY29uZmlnX29iamMiIF0KIAorICAgICAgICBs
aWJzID0gWyAiQVZGb3VuZGF0aW9uLmZyYW1ld29yayIgXQorCiAgICAgICAgIGRlcHMgPSBbCiAg
ICAgICAgICAgIjphdWRpb19zZXNzaW9uX29ic2VydmVyIiwKICAgICAgICAgICAiOmJhc2Vfb2Jq
YyIsCkBAIC03NTYsOCArNzYxLDggQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICAgIGRl
cHMgPSBbCiAgICAgICAgICI6YmFzZV9vYmpjIiwKICAgICAgICAgIjpoZWxwZXJzX29iamMiLAor
ICAgICAgICAiLi4vYXBpL3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICAgICAiLi4vYXBpL3Zp
ZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKLSAgICAgICAgIi4uL2NvbW1vbl92aWRlbyIs
CiAgICAgICAgICIuLi9tb2R1bGVzOm1vZHVsZV9hcGkiLAogICAgICAgICAiLi4vbW9kdWxlcy92
aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKICAgICAgICAgIi4uL3J0Y19iYXNl
OnJ0Y19iYXNlIiwKQEAgLTc5Myw2ICs3OTgsOCBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewog
ICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbitQcml2YXRl
LmgiLAogICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5o
IiwKICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24ubW0i
LAorICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ3J5cHRvT3B0aW9ucy5oIiwK
KyAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlvbnMubW0iLAog
ICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRGF0YUNoYW5uZWwrUHJpdmF0ZS5o
IiwKICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0RhdGFDaGFubmVsLmgiLAog
ICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRGF0YUNoYW5uZWwubW0iLApAQCAt
OTAzLDYgKzkxMCw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAgICI6dmlkZW9y
ZW5kZXJlcmFkYXB0ZXJfb2JqYyIsCiAgICAgICAgICI6dmlkZW9zb3VyY2Vfb2JqYyIsCiAgICAg
ICAgICI6dmlkZW90b29sYm94X29iamMiLAorICAgICAgICAiLi4vYXBpOmNyZWF0ZV9wZWVyY29u
bmVjdGlvbl9mYWN0b3J5IiwKICAgICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rp
b25fYXBpIiwKICAgICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIs
CiAgICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5IiwKQEAgLTkxMyw5ICs5MjEsOSBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgICAg
ICAiLi4vbWVkaWE6cnRjX21lZGlhX2Jhc2UiLAogICAgICAgICAiLi4vbW9kdWxlczptb2R1bGVf
YXBpIiwKICAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZV9hcGki
LAorICAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgICAgICIu
Li9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAgICIu
Li9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAotICAgICAgICAi
Li4vcGM6Y3JlYXRlX3BjX2ZhY3RvcnkiLAogICAgICAgICAiLi4vcGM6cGVlcmNvbm5lY3Rpb24i
LAogICAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAgICAgIi4uL3J0Y19iYXNlOnJ0
Y19iYXNlIiwKQEAgLTEwMzEsNiArMTAzOSw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAg
ICAgICAgICAgICAib2JqYy91bml0dGVzdHMvUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5X3hjdGVz
dC5tIiwKICAgICAgICAgICAgICJvYmpjL3VuaXR0ZXN0cy9mcmFtZV9idWZmZXJfaGVscGVycy5o
IiwKICAgICAgICAgICAgICJvYmpjL3VuaXR0ZXN0cy9mcmFtZV9idWZmZXJfaGVscGVycy5tbSIs
CisgICAgICAgICAgICAib2JqYy91bml0dGVzdHMvbmFsdV9yZXdyaXRlcl94Y3Rlc3QubW0iLAog
ICAgICAgICAgIF0KIAogICAgICAgICAgICMgVE9ETyhwZXRlcmhhbnNwZXJzKTogUmVlbmFibGUg
dGhlc2UgdGVzdHMgb24gc2ltdWxhdG9yLgpAQCAtMTA1Myw2ICsxMDYyLDcgQEAgaWYgKGlzX2lv
cyB8fCBpc19tYWMpIHsKICAgICAgICAgICAgICI6bmF0aXZlX2FwaV9hdWRpb19kZXZpY2VfbW9k
dWxlIiwKICAgICAgICAgICAgICI6bmF0aXZlX3ZpZGVvIiwKICAgICAgICAgICAgICI6cGVlcmNv
bm5lY3Rpb25mYWN0b3J5X2Jhc2Vfb2JqYyIsCisgICAgICAgICAgICAiOnZpZGVvX3Rvb2xib3hf
Y2MiLAogICAgICAgICAgICAgIjp2aWRlb2NhcHR1cmVfb2JqYyIsCiAgICAgICAgICAgICAiOnZp
ZGVvY29kZWNfb2JqYyIsCiAgICAgICAgICAgICAiOnZpZGVvZnJhbWVidWZmZXJfb2JqYyIsCkBA
IC0xMDYzLDggKzEwNzMsOCBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgICAgICAgICAg
Ii4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKICAgICAgICAgICAgICIuLi9tZWRpYTpydGNfbWVk
aWFfdGVzdHNfdXRpbHMiLAogICAgICAgICAgICAgIi4uL21vZHVsZXM6bW9kdWxlX2FwaSIsCisg
ICAgICAgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAgICAgICAiLi4v
cnRjX2Jhc2U6cnRjX2Jhc2UiLAotICAgICAgICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rl
c3RzX3V0aWxzIiwKICAgICAgICAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6c3lzdGVtX3dyYXBw
ZXJzIiwKICAgICAgICAgICAgICIvL3RoaXJkX3BhcnR5L2xpYnl1diIsCiAgICAgICAgICAgXQpA
QCAtMTA5OCw3ICsxMTA4LDcgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICAgICAgcnRj
X2lvc194Y3Rlc3RfdGVzdCgic2RrX3VuaXR0ZXN0cyIpIHsKICAgICAgICAgICBpbmZvX3BsaXN0
ID0gIi8vdGVzdC9pb3MvSW5mby5wbGlzdCIKICAgICAgICAgICBzb3VyY2VzID0gWwotICAgICAg
ICAgICAgIm9iamMvdW5pdHRlc3RzL21haW4ubSIsCisgICAgICAgICAgICAib2JqYy91bml0dGVz
dHMvbWFpbi5tbSIsCiAgICAgICAgICAgXQogCiAgICAgICAgICAgX2J1bmRsZV9pZF9zdWZmaXgg
PSBpb3NfZ2VuZXJpY190ZXN0X2J1bmRsZV9pZF9zdWZmaXgKQEAgLTExMDcsNiArMTExNyw3IEBA
IGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAgICAgICAiOnBlZXJjb25uZWN0aW9uZmFj
dG9yeV9iYXNlX29iamMiLAogICAgICAgICAgICAgIjpzZGtfdW5pdHRlc3RzX2J1bmRsZV9kYXRh
IiwKICAgICAgICAgICAgICI6c2RrX3VuaXR0ZXN0c19zb3VyY2VzIiwKKyAgICAgICAgICAgICIv
L3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICAgICBdCiAgICAgICAgICAgbGRmbGFncyA9IFsg
Ii1hbGxfbG9hZCIgXQogICAgICAgICB9CkBAIC0xMTE2LDcgKzExMjcsNyBAQCBpZiAoaXNfaW9z
IHx8IGlzX21hYykgewogICAgICAgICAgIGluZm9fcGxpc3QgPSAiLy90ZXN0L2lvcy9JbmZvLnBs
aXN0IgogICAgICAgICAgIHNvdXJjZXMgPSBbCiAgICAgICAgICAgICAib2JqYy91bml0dGVzdHMv
UlRDRG9Ob3RQdXRDUGx1c1BsdXNJbkZyYW1ld29ya0hlYWRlcnNfeGN0ZXN0Lm0iLAotICAgICAg
ICAgICAgIm9iamMvdW5pdHRlc3RzL21haW4ubSIsCisgICAgICAgICAgICAib2JqYy91bml0dGVz
dHMvbWFpbi5tbSIsCiAgICAgICAgICAgXQogCiAgICAgICAgICAgX2J1bmRsZV9pZF9zdWZmaXgg
PSBpb3NfZ2VuZXJpY190ZXN0X2J1bmRsZV9pZF9zdWZmaXgKQEAgLTExMjQsNiArMTEzNSw3IEBA
IGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAgICAgZGVwcyA9IFsKICAgICAgICAgICAg
ICI6ZnJhbWV3b3JrX29iamMrbGluayIsCiAgICAgICAgICAgICAiOmlvc19mcmFtZXdvcmtfYnVu
ZGxlIiwKKyAgICAgICAgICAgICIvL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICAgICBdCiAg
ICAgICAgIH0KICAgICAgIH0KQEAgLTExNzAsNiArMTE4Miw3IEBAIGlmIChpc19pb3MgfHwgaXNf
bWFjKSB7CiAgICAgICAgICAgIjp2aWRlb2ZyYW1lYnVmZmVyX29iamMiLAogICAgICAgICAgICI6
dmlkZW9zb3VyY2Vfb2JqYyIsCiAgICAgICAgICAgIjp2aWRlb3Rvb2xib3hfb2JqYyIsCisgICAg
ICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICAgICAi
Li4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKICAgICAgICAgICAiLi4vYXBp
L2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeSIsCiAgICAgICAgICAg
Ii4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLApAQCAt
MTE3NywxMSArMTE5MCwxMiBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgICAgICAgICIu
Li9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCiAgICAgICAgICAgIi4uL21vZHVsZXM6bW9kdWxlX2Fw
aSIsCiAgICAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZV9hcGki
LAorICAgICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICAg
ICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAg
ICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAotICAg
ICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCisgICAgICAgICAgIi4u
L3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICAgICAgICIuLi9ydGNfYmFzZS9zeXN0ZW06
dW51c2VkIiwKLSAgICAgICAgICAiLy90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgICAgICAgIi4u
L3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICAgICAiLy90aGlyZF9wYXJ0eS9vY21vY2siLAog
ICAgICAgICBdCiAKQEAgLTEyNjksNiArMTI4Myw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7
CiAgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1Nlc3Npb25EZXNjcmlwdGlv
bi5oIiwKICAgICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVHJhY2luZy5oIiwK
ICAgICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ2VydGlmaWNhdGUuaCIsCisg
ICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlvbnMuaCIsCiAg
ICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvU291cmNlLmgiLAogICAg
ICAgICAgICJvYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb1RyYWNrLmgiLAogICAgICAg
ICAgICJvYmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0NvZGVjQ29uc3RhbnRzLmgiLApAQCAt
MTM1Nyw2ICsxMzcyLDcgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICAgICAgICAib2Jq
Yy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQXVkaW9UcmFjay5oIiwKICAgICAgICAgICAib2JqYy9h
cGkvcGVlcmNvbm5lY3Rpb24vUlRDQ2VydGlmaWNhdGUuaCIsCiAgICAgICAgICAgIm9iamMvYXBp
L3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24uaCIsCisgICAgICAgICAgIm9iamMvYXBp
L3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlvbnMuaCIsCiAgICAgICAgICAgIm9iamMvYXBp
L3BlZXJjb25uZWN0aW9uL1JUQ0RhdGFDaGFubmVsLmgiLAogICAgICAgICAgICJvYmpjL2FwaS9w
ZWVyY29ubmVjdGlvbi9SVENEYXRhQ2hhbm5lbENvbmZpZ3VyYXRpb24uaCIsCiAgICAgICAgICAg
Im9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0R0bWZTZW5kZXIuaCIsCkBAIC0xNTkwLDcgKzE2
MDYsMTAgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICB9CiAKICAgICBydGNfc3RhdGlj
X2xpYnJhcnkoInZpZGVvX3Rvb2xib3hfY2MiKSB7Ci0gICAgICB2aXNpYmlsaXR5ID0gWyAiOnZp
ZGVvdG9vbGJveF9vYmpjIiBdCisgICAgICB2aXNpYmlsaXR5ID0gWworICAgICAgICAiOnZpZGVv
dG9vbGJveF9vYmpjIiwKKyAgICAgICAgIjpzZGtfdW5pdHRlc3RzX3NvdXJjZXMiLAorICAgICAg
XQogICAgICAgc291cmNlcyA9IFsKICAgICAgICAgIm9iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9oZWxwZXJzLmNjIiwKICAgICAgICAgIm9iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxw
ZXJzLmgiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQppbmRl
eCAyZDk1OGI3NmRiZTc4MzE3Mjc5YjQ3MGY0ZWZiM2ZjYWQ4YjgzYmQ5Li42NWVlZmEzNmYyZGZi
MjA2OWVjY2E3Y2FhNDkyMjRiMjYyOTU1YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdFV0aWxpdGllcy5tbQpAQCAtMjksOCArMjksOSBAQAogI2ltcG9ydCAiV2ViUlRDL1JU
Q1ZpZGVvQ29kZWNIMjY0LmgiCiAKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCIK
LSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvY29udmVydF9mcm9t
LmgiCiAjaW5jbHVkZSAibmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oIgorI2luY2x1ZGUg
InRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9jb252ZXJ0X2Zyb20uaCIKKyNpbmNs
dWRlICJ3ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAiRnJhbWV3b3JrL0hlYWRl
cnMvV2ViUlRDL1JUQ1ZpZGVvQ29kZWNGYWN0b3J5LmgiCiAjaW5jbHVkZSAiRnJhbWV3b3JrL0hl
YWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZXdvcmsvSGVhZGVy
cy9XZWJSVEMvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvQlVJTEQuZ24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9CVUlMRC5n
bgppbmRleCA2M2M1YmQyMGMxMDQzNmIwMDAwMzJiMTAyNWVmNjkzNTk3YmFiODZjLi5lZGM1ZGEz
MGI3OWRhNzYzZGJjNzQzMDRkZjM5YWNiNzk3Y2NmMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9CVUlMRC5nbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9C
VUlMRC5nbgpAQCAtNyw5ICs3LDkgQEAKICMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAKIGlmIChpc19hbmRyb2lkKSB7Ci0gIGlt
cG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCiAgIGltcG9ydCgiLy9idWlsZC9jb25maWcvYW5kcm9p
ZC9jb25maWcuZ25pIikKICAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9hbmRyb2lkL3J1bGVzLmdu
aSIpCisgIGltcG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCiAKICAgZ3JvdXAoImFuZHJvaWQiKSB7
CiAgICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2FuZHJvaWQpIHsKQEAgLTM4LDYg
KzM4LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBkZXBzID0gWwogICAgICAgIjphdWRpb19h
cGlfamF2YSIsCiAgICAgICAiOmJhc2VfamF2YSIsCisgICAgICAiOmJ1aWx0aW5fYXVkaW9fY29k
ZWNzX2phdmEiLAogICAgICAgIjpjYW1lcmFfamF2YSIsCiAgICAgICAiOmRlZmF1bHRfdmlkZW9f
Y29kZWNfZmFjdG9yeV9qYXZhIiwKICAgICAgICI6ZmlsZXZpZGVvX2phdmEiLApAQCAtMTEwLDIz
ICsxMTEsMjIgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBwdWJsaWNfZGVwcyA9IFsgICMgbm8t
cHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg2MDMpCiAgICAgICAiOmF1ZGlvX2puaSIsCiAg
ICAgICAiOmJhc2Vfam5pIiwKKyAgICAgICI6YnVpbHRpbl9hdWRpb19jb2RlY3Nfam5pIiwKKyAg
ICAgICI6ZGVmYXVsdF92aWRlb19jb2RlY19mYWN0b3J5X2puaSIsCiAgICAgICAiOmphdmFfYXVk
aW9fZGV2aWNlX21vZHVsZV9qbmkiLAorICAgICAgIjpsZWdhY3lfaHdjb2RlY3Nfam5pIiwKICAg
ICAgICI6bWVkaWFfam5pIiwKICAgICAgICI6cGVlcmNvbm5lY3Rpb25fam5pIiwKICAgICAgICI6
dmlkZW9fam5pIiwKLSAgICAgICIuLi8uLi9wYzpjcmVhdGVfcGNfZmFjdG9yeSIsCisgICAgICAi
Li4vLi4vYXBpOmNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5IiwKICAgICBdCiAgIH0KIAog
ICBydGNfc3RhdGljX2xpYnJhcnkoImxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9tZXRyaWNzX2Rl
ZmF1bHRfam5pIikgewogICAgIHZpc2liaWxpdHkgPSBbICIqIiBdCi0KLSAgICBhbGxvd19wb2lz
b24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0gICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcv
NzkyNSk6IFJlbW92ZS4KLQogICAgIHNvdXJjZXMgPSBbCiAgICAgICAic3JjL2puaS9hbmRyb2lk
bWV0cmljcy5jYyIsCiAgICAgXQotCiAgICAgZGVwcyA9IFsKICAgICAgICI6YmFzZV9qbmkiLAog
ICAgICAgIjpnZW5lcmF0ZWRfbWV0cmljc19qbmkiLApAQCAtMjA0LDcgKzIwNCwxMSBAQCBpZiAo
aXNfYW5kcm9pZCkgewogICB9CiAKICAgcnRjX2FuZHJvaWRfbGlicmFyeSgiYXVkaW9fYXBpX2ph
dmEiKSB7Ci0gICAgamF2YV9maWxlcyA9IFsgImFwaS9vcmcvd2VicnRjL2F1ZGlvL0F1ZGlvRGV2
aWNlTW9kdWxlLmphdmEiIF0KKyAgICBqYXZhX2ZpbGVzID0gWworICAgICAgImFwaS9vcmcvd2Vi
cnRjL2F1ZGlvL0F1ZGlvRGV2aWNlTW9kdWxlLmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRj
L0F1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5LmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRj
L0F1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LmphdmEiLAorICAgIF0KIAogICAgIGRlcHMgPSBb
CiAgICAgICAiOmJhc2VfamF2YSIsCkBAIC0yNTAsNiArMjU0LDcgQEAgaWYgKGlzX2FuZHJvaWQp
IHsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9WaWRlb0ZyYW1lRHJhd2VyLmphdmEiLAogICAgICAg
ImFwaS9vcmcvd2VicnRjL1l1dkNvbnZlcnRlci5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0
Yy9ZdXZIZWxwZXIuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25l
ci5qYXZhIiwKICAgICAgICJzcmMvamF2YS9vcmcvd2VicnRjL0VnbEJhc2UxMC5qYXZhIiwKICAg
ICAgICJzcmMvamF2YS9vcmcvd2VicnRjL0VnbEJhc2UxNC5qYXZhIiwKICAgICAgICJzcmMvamF2
YS9vcmcvd2VicnRjL0dsR2VuZXJpY0RyYXdlci5qYXZhIiwKQEAgLTI3Niw5ICsyODEsMTEgQEAg
aWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9BdWRpb1NvdXJjZS5qYXZh
IiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9BdWRpb1RyYWNrLmphdmEiLAogICAgICAgImFwaS9v
cmcvd2VicnRjL0NhbGxTZXNzaW9uRmlsZVJvdGF0aW5nTG9nU2luay5qYXZhIiwKKyAgICAgICJh
cGkvb3JnL3dlYnJ0Yy9DcnlwdG9PcHRpb25zLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRj
L0RhdGFDaGFubmVsLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0R0bWZTZW5kZXIuamF2
YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvRmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5SW50
ZXJmYWNlLmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL01lZGlhVHJhbnNwb3J0RmFjdG9y
eUZhY3RvcnkuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvRnJhbWVEZWNyeXB0b3IuamF2
YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvRnJhbWVFbmNyeXB0b3IuamF2YSIsCiAgICAgICAi
YXBpL29yZy93ZWJydGMvSWNlQ2FuZGlkYXRlLmphdmEiLApAQCAtMjk1LDYgKzMwMiw3IEBAIGlm
IChpc19hbmRyb2lkKSB7CiAgICAgICAiYXBpL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb24uamF2
YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMuamF2
YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25GYWN0b3J5LmphdmEiLAor
ICAgICAgImFwaS9vcmcvd2VicnRjL1J0Y0NlcnRpZmljYXRlUGVtLmphdmEiLAogICAgICAgImFw
aS9vcmcvd2VicnRjL1JUQ1N0YXRzLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL1JUQ1N0
YXRzQ29sbGVjdG9yQ2FsbGJhY2suamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvUlRDU3Rh
dHNSZXBvcnQuamF2YSIsCkBAIC0zMTcsNiArMzI1LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAg
ICBkZXBzID0gWwogICAgICAgIjphdWRpb19hcGlfamF2YSIsCiAgICAgICAiOmJhc2VfamF2YSIs
CisgICAgICAiOmJ1aWx0aW5fYXVkaW9fY29kZWNzX2phdmEiLAogICAgICAgIjpkZWZhdWx0X3Zp
ZGVvX2NvZGVjX2ZhY3RvcnlfamF2YSIsCiAgICAgICAiOmxvZ2dpbmdfamF2YSIsCiAgICAgICAi
OnN3Y29kZWNzX2phdmEiLApAQCAtNDI2LDYgKzQzNSwxNyBAQCBpZiAoaXNfYW5kcm9pZCkgewog
ICAgIF0KICAgfQogCisgIHJ0Y19hbmRyb2lkX2xpYnJhcnkoImJ1aWx0aW5fYXVkaW9fY29kZWNz
X2phdmEiKSB7CisgICAgamF2YV9maWxlcyA9IFsKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9CdWls
dGluQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJy
dGMvQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LmphdmEiLAorICAgIF0KKworICAg
IGRlcHMgPSBbCisgICAgICAiOmF1ZGlvX2FwaV9qYXZhIiwKKyAgICBdCisgIH0KKwogICBydGNf
YW5kcm9pZF9saWJyYXJ5KCJzY3JlZW5jYXB0dXJlcl9qYXZhIikgewogICAgIGphdmFfZmlsZXMg
PSBbICJhcGkvb3JnL3dlYnJ0Yy9TY3JlZW5DYXB0dXJlckFuZHJvaWQuamF2YSIgXQogCkBAIC00
NDksMTggKzQ2OSw0NCBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgIF0KICAgfQogCisgIHJ0Y19h
bmRyb2lkX2xpYnJhcnkoImxpYnZweF92cDhfamF2YSIpIHsKKyAgICB2aXNpYmlsaXR5ID0gWyAi
KiIgXQorICAgIGphdmFfZmlsZXMgPSBbCisgICAgICAiYXBpL29yZy93ZWJydGMvTGlidnB4VnA4
RGVjb2Rlci5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDhFbmNvZGVyLmph
dmEiLAorICAgIF0KKyAgICBkZXBzID0gWworICAgICAgIjpiYXNlX2phdmEiLAorICAgICAgIjp2
aWRlb19hcGlfamF2YSIsCisgICAgICAiOnZpZGVvX2phdmEiLAorICAgICAgIi8vcnRjX2Jhc2U6
YmFzZV9qYXZhIiwKKyAgICBdCisgIH0KKworICBydGNfYW5kcm9pZF9saWJyYXJ5KCJsaWJ2cHhf
dnA5X2phdmEiKSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgICBqYXZhX2ZpbGVzID0g
WworICAgICAgImFwaS9vcmcvd2VicnRjL0xpYnZweFZwOURlY29kZXIuamF2YSIsCisgICAgICAi
YXBpL29yZy93ZWJydGMvTGlidnB4VnA5RW5jb2Rlci5qYXZhIiwKKyAgICBdCisgICAgZGVwcyA9
IFsKKyAgICAgICI6YmFzZV9qYXZhIiwKKyAgICAgICI6dmlkZW9fYXBpX2phdmEiLAorICAgICAg
Ijp2aWRlb19qYXZhIiwKKyAgICAgICIvL3J0Y19iYXNlOmJhc2VfamF2YSIsCisgICAgXQorICB9
CisKICAgcnRjX2FuZHJvaWRfbGlicmFyeSgic3djb2RlY3NfamF2YSIpIHsKICAgICBqYXZhX2Zp
bGVzID0gWwogICAgICAgImFwaS9vcmcvd2VicnRjL1NvZnR3YXJlVmlkZW9EZWNvZGVyRmFjdG9y
eS5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9Tb2Z0d2FyZVZpZGVvRW5jb2RlckZhY3Rv
cnkuamF2YSIsCi0gICAgICAic3JjL2phdmEvb3JnL3dlYnJ0Yy9WUDhFbmNvZGVyLmphdmEiLAot
ICAgICAgInNyYy9qYXZhL29yZy93ZWJydGMvVlA4RGVjb2Rlci5qYXZhIiwKLSAgICAgICJzcmMv
amF2YS9vcmcvd2VicnRjL1ZQOUVuY29kZXIuamF2YSIsCi0gICAgICAic3JjL2phdmEvb3JnL3dl
YnJ0Yy9WUDlEZWNvZGVyLmphdmEiLAogICAgIF0KIAogICAgIGRlcHMgPSBbCiAgICAgICAiOmJh
c2VfamF2YSIsCisgICAgICAiOmxpYnZweF92cDhfamF2YSIsCisgICAgICAiOmxpYnZweF92cDlf
amF2YSIsCiAgICAgICAiOnZpZGVvX2FwaV9qYXZhIiwKICAgICAgICI6dmlkZW9famF2YSIsCiAg
ICAgICAiLy9ydGNfYmFzZTpiYXNlX2phdmEiLApAQCAtNTExLDIzICs1NTcsNjYgQEAgaWYgKGlz
X2FuZHJvaWQpIHsKIAogICAgIGRlcHMgPSBbCiAgICAgICAiOmJhc2Vfam5pIiwKKyAgICAgICI6
YnVpbHRpbl9hdWRpb19jb2RlY3Nfam5pIiwKICAgICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNz
OmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKICAgICAgICIuLi8uLi9hcGkvYXVkaW9f
Y29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAgICIuLi8uLi9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jh
c2VfYXBwcm92ZWQiLAogICAgIF0KICAgfQogCi0gIHJ0Y19zdGF0aWNfbGlicmFyeSgidmlkZW9f
am5pIikgewotICAgIHNvdXJjZXMgPSBbXQorICBydGNfc3RhdGljX2xpYnJhcnkoImJ1aWx0aW5f
YXVkaW9fY29kZWNzX2puaSIpIHsKKyAgICBzb3VyY2VzID0gWworICAgICAgInNyYy9qbmkvYnVp
bHRpbmF1ZGlvZGVjb2RlcmZhY3RvcnlmYWN0b3J5LmNjIiwKKyAgICAgICJzcmMvam5pL2J1aWx0
aW5hdWRpb2VuY29kZXJmYWN0b3J5ZmFjdG9yeS5jYyIsCisgICAgXQorCiAgICAgZGVwcyA9IFsK
LSAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICAgIjpiYXNl
X2puaSIsCisgICAgICAiOmdlbmVyYXRlZF9idWlsdGluX2F1ZGlvX2NvZGVjc19qbmkiLAorICAg
ICAgIjpuYXRpdmVfYXBpX2puaSIsCisgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczpidWls
dGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeSIsCisgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVj
czpidWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeSIsCisgICAgICAiLi4vLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgIF0KKyAgfQogCi0gICAgc291cmNlcyArPSBbCisgICMg
Q29ycmVzcG9uZHMgdG8gTWVkaWFDb2RlY1ZpZGVvRW5jb2Rlci9EZWNvZGVyIGluIEphdmEuCisg
IHJ0Y19zdGF0aWNfbGlicmFyeSgibGVnYWN5X2h3Y29kZWNzX2puaSIpIHsKKyAgICB2aXNpYmls
aXR5ID0gWyAiKiIgXQorICAgIGFsbG93X3BvaXNvbiA9IFsgInNvZnR3YXJlX3ZpZGVvX2NvZGVj
cyIgXQorICAgIHNvdXJjZXMgPSBbCiAgICAgICAic3JjL2puaS9hbmRyb2lkbWVkaWFjb2RlY2Nv
bW1vbi5oIiwKICAgICAgICJzcmMvam5pL2FuZHJvaWRtZWRpYWRlY29kZXIuY2MiLAogICAgICAg
InNyYy9qbmkvYW5kcm9pZG1lZGlhZW5jb2Rlci5jYyIsCisgICAgXQorICAgIGRlcHMgPSBbCisg
ICAgICAiOmJhc2Vfam5pIiwKKyAgICAgICI6ZGVmYXVsdF92aWRlb19jb2RlY19mYWN0b3J5X2pu
aSIsCisgICAgICAiOmdlbmVyYXRlZF92aWRlb19qbmkiLAorICAgICAgIjpuYXRpdmVfYXBpX2pu
aSIsCisgICAgICAiOnZpZGVvX2puaSIsCisgICAgICAiOnZpZGVvZnJhbWVfam5pIiwKKyAgICAg
ICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKKyAgICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZp
ZGVvX2NvZGVjc19hcGkiLAorICAgICAgIi4uLy4uL2NvbW1vbl92aWRlbzpjb21tb25fdmlkZW8i
LAorICAgICAgIi4uLy4uL21lZGlhOnJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3MiLAorICAgICAg
Ii4uLy4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKKyAgICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVv
X2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAorICAgICAgIi4uLy4uL21vZHVsZXMvdmlk
ZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKKyAgICAgICIuLi8uLi9ydGNfYmFzZTpj
aGVja3MiLAorICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKKyAgICAgICIuLi8uLi9y
dGNfYmFzZTpydGNfdGFza19xdWV1ZV9hcGkiLAorICAgICAgIi4uLy4uL3J0Y19iYXNlOnNlcXVl
bmNlZF90YXNrX2NoZWNrZXIiLAorICAgICAgIi4uLy4uL3J0Y19iYXNlOndlYWtfcHRyIiwKKyAg
ICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICAgIi8vdGhpcmRf
cGFydHkvbGlieXV2IiwKKyAgICBdCisgIH0KKworICBydGNfc3RhdGljX2xpYnJhcnkoInZpZGVv
X2puaSIpIHsKKyAgICBzb3VyY2VzID0gWwogICAgICAgInNyYy9qbmkvYW5kcm9pZHZpZGVvdHJh
Y2tzb3VyY2UuY2MiLAogICAgICAgInNyYy9qbmkvYW5kcm9pZHZpZGVvdHJhY2tzb3VyY2UuaCIs
CiAgICAgICAic3JjL2puaS9lbmNvZGVkaW1hZ2UuY2MiLApAQCAtNTQwLDYgKzYyOSw3IEBAIGlm
IChpc19hbmRyb2lkKSB7CiAgICAgICAic3JjL2puaS9udjEyYnVmZmVyLmNjIiwKICAgICAgICJz
cmMvam5pL252MjFidWZmZXIuY2MiLAogICAgICAgInNyYy9qbmkvcGMvdmlkZW8uY2MiLAorICAg
ICAgInNyYy9qbmkvdGltZXN0YW1wYWxpZ25lci5jYyIsCiAgICAgICAic3JjL2puaS92aWRlb2Nv
ZGVjaW5mby5jYyIsCiAgICAgICAic3JjL2puaS92aWRlb2NvZGVjaW5mby5oIiwKICAgICAgICJz
cmMvam5pL3ZpZGVvY29kZWNzdGF0dXMuY2MiLApAQCAtNTYxLDM2ICs2NTEsMjUgQEAgaWYgKGlz
X2FuZHJvaWQpIHsKICAgICAgICJzcmMvam5pL3l1dmhlbHBlci5jYyIsCiAgICAgXQogCi0gICAg
ZGVwcyArPSBbCisgICAgZGVwcyA9IFsKICAgICAgICI6YmFzZV9qbmkiLAogICAgICAgIjpnZW5l
cmF0ZWRfdmlkZW9fam5pIiwKICAgICAgICI6bmF0aXZlX2FwaV9qbmkiLAogICAgICAgIjp2aWRl
b2ZyYW1lX2puaSIsCi0gICAgICAiOnZwOF9qbmkiLCAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy83
OTI1KTogUmVtb3ZlLgotICAgICAgIjp2cDlfam5pIiwgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcv
NzkyNSk6IFJlbW92ZS4KICAgICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi8u
Li9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCisgICAgICAiLi4vLi4vYXBpL3Zp
ZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIs
Ci0gICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczpidWlsdGluX3ZpZGVvX2RlY29kZXJfZmFj
dG9yeSIsCi0gICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczpidWlsdGluX3ZpZGVvX2VuY29k
ZXJfZmFjdG9yeSIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczpydGNfc29mdHdhcmVf
ZmFsbGJhY2tfd3JhcHBlcnMiLAogICAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9f
Y29kZWNzX2FwaSIsCiAgICAgICAiLi4vLi4vY29tbW9uX3ZpZGVvOmNvbW1vbl92aWRlbyIsCi0g
ICAgICAiLi4vLi4vbWVkaWE6cnRjX2F1ZGlvX3ZpZGVvIiwKLSAgICAgICIuLi8uLi9tZWRpYTpy
dGNfaDI2NF9wcm9maWxlX2lkIiwKLSAgICAgICIuLi8uLi9tZWRpYTpydGNfaW50ZXJuYWxfdmlk
ZW9fY29kZWNzIiwKICAgICAgICIuLi8uLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCi0gICAgICAi
Li4vLi4vbW9kdWxlcy91dGlsaXR5OnV0aWxpdHkiLAogICAgICAgIi4uLy4uL21vZHVsZXMvdmlk
ZW9fY29kaW5nOmNvZGVjX2dsb2JhbHNfaGVhZGVycyIsCiAgICAgICAiLi4vLi4vbW9kdWxlcy92
aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKICAgICAgICIuLi8uLi9tb2R1bGVz
L3ZpZGVvX2NvZGluZzp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAgICAgICAiLi4vLi4vcnRjX2Jh
c2U6Y2hlY2tzIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZSIsCi0gICAgICAiLi4v
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0
Y190YXNrX3F1ZXVlIiwKLSAgICAgICIuLi8uLi9ydGNfYmFzZTpzZXF1ZW5jZWRfdGFza19jaGVj
a2VyIiwKLSAgICAgICIuLi8uLi9ydGNfYmFzZTp3ZWFrX3B0ciIsCi0gICAgICAiLi4vLi4vcnRj
X2Jhc2UvbWVtb3J5OmFsaWduZWRfbWFsbG9jIiwKKyAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNf
dGFza19xdWV1ZV9hcGkiLAogICAgICAgIi8vdGhpcmRfcGFydHkvbGlieXV2IiwKICAgICBdCiAg
IH0KQEAgLTYwNiw2ICs2ODUsOCBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgInNyYy9qbmkv
cGMvYW5kcm9pZG5ldHdvcmttb25pdG9yLmgiLAogICAgICAgInNyYy9qbmkvcGMvYXVkaW90cmFj
ay5jYyIsCiAgICAgICAic3JjL2puaS9wYy9jYWxsc2Vzc2lvbmZpbGVyb3RhdGluZ2xvZ3Npbmsu
Y2MiLAorICAgICAgInNyYy9qbmkvcGMvY3J5cHRvb3B0aW9ucy5jYyIsCisgICAgICAic3JjL2pu
aS9wYy9jcnlwdG9vcHRpb25zLmgiLAogICAgICAgInNyYy9qbmkvcGMvZGF0YWNoYW5uZWwuY2Mi
LAogICAgICAgInNyYy9qbmkvcGMvZGF0YWNoYW5uZWwuaCIsCiAgICAgICAic3JjL2puaS9wYy9k
dG1mc2VuZGVyLmNjIiwKQEAgLTYyNCw2ICs3MDUsOCBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAg
ICAgInNyYy9qbmkvcGMvcGVlcmNvbm5lY3Rpb24uaCIsCiAgICAgICAic3JjL2puaS9wYy9wZWVy
Y29ubmVjdGlvbmZhY3RvcnkuY2MiLAogICAgICAgInNyYy9qbmkvcGMvcGVlcmNvbm5lY3Rpb25m
YWN0b3J5LmgiLAorICAgICAgInNyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuY2MiLAorICAgICAg
InNyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuaCIsCiAgICAgICAic3JjL2puaS9wYy9ydGNzdGF0
c2NvbGxlY3RvcmNhbGxiYWNrd3JhcHBlci5jYyIsCiAgICAgICAic3JjL2puaS9wYy9ydGNzdGF0
c2NvbGxlY3RvcmNhbGxiYWNrd3JhcHBlci5oIiwKICAgICAgICJzcmMvam5pL3BjL3J0cHBhcmFt
ZXRlcnMuY2MiLApAQCAtNjY5LDYgKzc1Miw3IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgICAi
Li4vLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAogICAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVy
czpmaWVsZF90cmlhbCIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25h
bCIsCiAgICAgXQogICB9CiAKQEAgLTY4NSw2ICs3NjksNTAgQEAgaWYgKGlzX2FuZHJvaWQpIHsK
ICAgICBdCiAgIH0KIAorICBydGNfc3RhdGljX2xpYnJhcnkoImRlZmF1bHRfdmlkZW9fY29kZWNf
ZmFjdG9yeV9qbmkiKSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgICBhbGxvd19wb2lz
b24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0KKyAgICBkZXBzID0gWworICAgICAgIjpz
d2NvZGVjc19qbmkiLAorICAgICAgIjp2aWRlb19qbmkiLAorICAgIF0KKyAgfQorCisgIHJ0Y19z
dGF0aWNfbGlicmFyeSgibGlidnB4X3ZwOF9qbmkiKSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIioi
IF0KKyAgICBhbGxvd19wb2lzb24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0KKyAgICBz
b3VyY2VzID0gWworICAgICAgInNyYy9qbmkvdnA4Y29kZWMuY2MiLAorICAgIF0KKyAgICBkZXBz
ID0gWworICAgICAgIjpiYXNlX2puaSIsCisgICAgICAiOmdlbmVyYXRlZF9saWJ2cHhfdnA4X2pu
aSIsCisgICAgICAiOnZpZGVvX2puaSIsCisgICAgICAiLi4vLi4vbW9kdWxlcy92aWRlb19jb2Rp
bmc6d2VicnRjX3ZwOCIsCisgICAgXQorICB9CisKKyAgcnRjX3N0YXRpY19saWJyYXJ5KCJsaWJ2
cHhfdnA5X2puaSIpIHsKKyAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICAgIGFsbG93X3BvaXNv
biA9IFsgInNvZnR3YXJlX3ZpZGVvX2NvZGVjcyIgXQorICAgIHNvdXJjZXMgPSBbCisgICAgICAi
c3JjL2puaS92cDljb2RlYy5jYyIsCisgICAgXQorICAgIGRlcHMgPSBbCisgICAgICAiOmJhc2Vf
am5pIiwKKyAgICAgICI6Z2VuZXJhdGVkX2xpYnZweF92cDlfam5pIiwKKyAgICAgICI6dmlkZW9f
am5pIiwKKyAgICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp3ZWJydGNfdnA5IiwKKyAg
ICBdCisgIH0KKworICBydGNfc3RhdGljX2xpYnJhcnkoInN3Y29kZWNzX2puaSIpIHsKKyAgICBk
ZXBzID0gWworICAgICAgIjpsaWJ2cHhfdnA4X2puaSIsCisgICAgICAiOmxpYnZweF92cDlfam5p
IiwKKyAgICBdCisgIH0KKwogICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICMgTmF0aXZlIEFQ
SSB0YXJnZXRzICMKICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNzY5LDEwICs4OTcsNyBA
QCBpZiAoaXNfYW5kcm9pZCkgewogICAjIG9iamVjdHMuCiAgIHJ0Y19zdGF0aWNfbGlicmFyeSgi
bmF0aXZlX2FwaV9jb2RlY3MiKSB7CiAgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KLSAgICBhbGxv
d19wb2lzb24gPSBbCi0gICAgICAiYXVkaW9fY29kZWNzIiwgICMgVE9ETyhidWdzLndlYnJ0Yy5v
cmcvODM5Nik6IFJlbW92ZS4KLSAgICAgICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiLCAgIyBUT0RP
KGJ1Z3Mud2VicnRjLm9yZy83OTI1KTogUmVtb3ZlLgotICAgIF0KKyAgICBhbGxvd19wb2lzb24g
PSBbICJhdWRpb19jb2RlY3MiIF0gICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvODM5Nik6IFJlbW92
ZS4KICAgICBzb3VyY2VzID0gWwogICAgICAgIm5hdGl2ZV9hcGkvY29kZWNzL3dyYXBwZXIuY2Mi
LAogICAgICAgIm5hdGl2ZV9hcGkvY29kZWNzL3dyYXBwZXIuaCIsCkBAIC03OTIsMTQgKzkxNywx
MCBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAjIEFQSSBmb3IgY3JlYXRpbmcgSmF2YSBQZWVyQ29u
bmVjdGlvbkZhY3RvcnkgZnJvbSBDKysgZXF1aXZhbGVudHMuCiAgIHJ0Y19zdGF0aWNfbGlicmFy
eSgibmF0aXZlX2FwaV9wZWVyY29ubmVjdGlvbiIpIHsKICAgICB2aXNpYmlsaXR5ID0gWyAiKiIg
XQotCi0gICAgYWxsb3dfcG9pc29uID0gWyAic29mdHdhcmVfdmlkZW9fY29kZWNzIiBdICAjIFRP
RE8oYnVncy53ZWJydGMub3JnLzc5MjUpOiBSZW1vdmUuCi0KICAgICBzb3VyY2VzID0gWwogICAg
ICAgIm5hdGl2ZV9hcGkvcGVlcmNvbm5lY3Rpb24vcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjIiwK
ICAgICAgICJuYXRpdmVfYXBpL3BlZXJjb25uZWN0aW9uL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5o
IiwKICAgICBdCi0KICAgICBkZXBzID0gWwogICAgICAgIjpiYXNlX2puaSIsCiAgICAgICAiOnBl
ZXJjb25uZWN0aW9uX2puaSIsCkBAIC04MTMsMTAgKzkzNCw3IEBAIGlmIChpc19hbmRyb2lkKSB7
CiAgICMgdmlkZW8gaW50ZXJmYWNlcyBmcm9tIHRoZWlyIEphdmEgZXF1aXZhbGVudHMuCiAgIHJ0
Y19zdGF0aWNfbGlicmFyeSgibmF0aXZlX2FwaV92aWRlbyIpIHsKICAgICB2aXNpYmlsaXR5ID0g
WyAiKiIgXQotICAgIGFsbG93X3BvaXNvbiA9IFsKLSAgICAgICJhdWRpb19jb2RlY3MiLCAgIyBU
T0RPKGJ1Z3Mud2VicnRjLm9yZy84Mzk2KTogUmVtb3ZlLgotICAgICAgInNvZnR3YXJlX3ZpZGVv
X2NvZGVjcyIsICAjIFRPRE8oYnVncy53ZWJydGMub3JnLzc5MjUpOiBSZW1vdmUuCi0gICAgXQor
ICAgIGFsbG93X3BvaXNvbiA9IFsgImF1ZGlvX2NvZGVjcyIgXSAgIyBUT0RPKGJ1Z3Mud2VicnRj
Lm9yZy84Mzk2KTogUmVtb3ZlLgogICAgIHNvdXJjZXMgPSBbCiAgICAgICAibmF0aXZlX2FwaS92
aWRlby92aWRlb3NvdXJjZS5jYyIsCiAgICAgICAibmF0aXZlX2FwaS92aWRlby92aWRlb3NvdXJj
ZS5oIiwKQEAgLTgyOSw2ICs5NDcsNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgIjp2aWRl
b2ZyYW1lX2puaSIsCiAgICAgICAiLy9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIs
CiAgICAgICAiLy9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAorICAgICAgIi8vcnRjX2Jhc2U6cnRj
X2Jhc2UiLAogICAgICAgIi8vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgICAgXQpAQCAtODkxLDYgKzEw
MTAsNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgIi4uLy4uL2xvZ2dpbmc6cnRjX2V2ZW50
X2xvZ19hcGkiLAogICAgICAgIi4uLy4uL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCiAgICAgICAi
Li4vLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6YXVkaW9fZGV2aWNlIiwKKyAgICAgICIuLi8uLi9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgXQogICB9CkBAIC05MjksMzAgKzEw
NDksNiBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgIF0KICAgfQogCi0gIHJ0Y19zdGF0aWNfbGli
cmFyeSgidnA4X2puaSIpIHsKLSAgICBzb3VyY2VzID0gWwotICAgICAgInNyYy9qbmkvdnA4Y29k
ZWMuY2MiLAotICAgIF0KLQotICAgIGRlcHMgPSBbCi0gICAgICAiOmJhc2Vfam5pIiwKLSAgICAg
ICI6Z2VuZXJhdGVkX3ZwOF9qbmkiLAotICAgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5n
OndlYnJ0Y192cDgiLAotICAgIF0KLSAgfQotCi0gIHJ0Y19zdGF0aWNfbGlicmFyeSgidnA5X2pu
aSIpIHsKLSAgICBzb3VyY2VzID0gWwotICAgICAgInNyYy9qbmkvdnA5Y29kZWMuY2MiLAotICAg
IF0KLQotICAgIGRlcHMgPSBbCi0gICAgICAiOmJhc2Vfam5pIiwKLSAgICAgICI6Z2VuZXJhdGVk
X3ZwOV9qbmkiLAotICAgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOndlYnJ0Y192cDki
LAotICAgIF0KLSAgfQotCiAgIHJ0Y19zdGF0aWNfbGlicmFyeSgibG9nZ2luZ19qbmkiKSB7CiAg
ICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgICBzb3VyY2VzID0gWwpAQCAtOTgxLDYgKzEwNzcs
NyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgIjpiYXNlX2puaSIsCiAgICAgICAiOmdlbmVy
YXRlZF9hdWRpb19kZXZpY2VfbW9kdWxlX2Jhc2Vfam5pIiwKICAgICAgICI6bmF0aXZlX2FwaV9q
bmkiLAorICAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZV9hcGki
LAogICAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZV9idWZmZXIi
LAogICAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfYXBwcm92ZWQiLApAQCAtMTExNCw2ICsxMjExLDcgQEAgaWYgKGlzX2FuZHJvaWQp
IHsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9KYXZhSTQyMEJ1ZmZlci5qYXZhIiwKICAgICAgICJh
cGkvb3JnL3dlYnJ0Yy9NZWRpYUNvZGVjVmlkZW9EZWNvZGVyLmphdmEiLAogICAgICAgImFwaS9v
cmcvd2VicnRjL01lZGlhQ29kZWNWaWRlb0VuY29kZXIuamF2YSIsCisgICAgICAiYXBpL29yZy93
ZWJydGMvVGltZXN0YW1wQWxpZ25lci5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9WaWRl
b0NvZGVjSW5mby5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9WaWRlb0NvZGVjU3RhdHVz
LmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL1ZpZGVvRGVjb2Rlci5qYXZhIiwKQEAgLTEx
NDAsMTAgKzEyMzgsMTAgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBqbmlfZ2VuZXJhdG9yX2lu
Y2x1ZGUgPSAiLy9zZGsvYW5kcm9pZC9zcmMvam5pL2puaV9nZW5lcmF0b3JfaGVscGVyLmgiCiAg
IH0KIAotICBnZW5lcmF0ZV9qbmkoImdlbmVyYXRlZF92cDhfam5pIikgeworICBnZW5lcmF0ZV9q
bmkoImdlbmVyYXRlZF9saWJ2cHhfdnA4X2puaSIpIHsKICAgICBzb3VyY2VzID0gWwotICAgICAg
InNyYy9qYXZhL29yZy93ZWJydGMvVlA4RGVjb2Rlci5qYXZhIiwKLSAgICAgICJzcmMvamF2YS9v
cmcvd2VicnRjL1ZQOEVuY29kZXIuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvTGlidnB4
VnA4RGVjb2Rlci5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDhFbmNvZGVy
LmphdmEiLAogICAgIF0KIAogICAgIGpuaV9wYWNrYWdlID0gIiIKQEAgLTExNTEsMTAgKzEyNDks
MTAgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBqbmlfZ2VuZXJhdG9yX2luY2x1ZGUgPSAiLy9z
ZGsvYW5kcm9pZC9zcmMvam5pL2puaV9nZW5lcmF0b3JfaGVscGVyLmgiCiAgIH0KIAotICBnZW5l
cmF0ZV9qbmkoImdlbmVyYXRlZF92cDlfam5pIikgeworICBnZW5lcmF0ZV9qbmkoImdlbmVyYXRl
ZF9saWJ2cHhfdnA5X2puaSIpIHsKICAgICBzb3VyY2VzID0gWwotICAgICAgInNyYy9qYXZhL29y
Zy93ZWJydGMvVlA5RGVjb2Rlci5qYXZhIiwKLSAgICAgICJzcmMvamF2YS9vcmcvd2VicnRjL1ZQ
OUVuY29kZXIuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvTGlidnB4VnA5RGVjb2Rlci5q
YXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDlFbmNvZGVyLmphdmEiLAogICAg
IF0KIAogICAgIGpuaV9wYWNrYWdlID0gIiIKQEAgLTExNjYsNiArMTI2NCw3IEBAIGlmIChpc19h
bmRyb2lkKSB7CiAgICAgc291cmNlcyA9IFsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9BdWRpb1Ry
YWNrLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0NhbGxTZXNzaW9uRmlsZVJvdGF0aW5n
TG9nU2luay5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9DcnlwdG9PcHRpb25zLmphdmEi
LAogICAgICAgImFwaS9vcmcvd2VicnRjL0RhdGFDaGFubmVsLmphdmEiLAogICAgICAgImFwaS9v
cmcvd2VicnRjL0R0bWZTZW5kZXIuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvSWNlQ2Fu
ZGlkYXRlLmphdmEiLApAQCAtMTE3OCw2ICsxMjc3LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAg
ICAgICJhcGkvb3JnL3dlYnJ0Yy9SVENTdGF0cy5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0
Yy9SVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRj
L1JUQ1N0YXRzUmVwb3J0LmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL1J0Y0NlcnRpZmlj
YXRlUGVtLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL1J0cFBhcmFtZXRlcnMuamF2YSIs
CiAgICAgICAiYXBpL29yZy93ZWJydGMvUnRwUmVjZWl2ZXIuamF2YSIsCiAgICAgICAiYXBpL29y
Zy93ZWJydGMvUnRwU2VuZGVyLmphdmEiLApAQCAtMTIwMyw2ICsxMzAzLDE2IEBAIGlmIChpc19h
bmRyb2lkKSB7CiAgICAgam5pX2dlbmVyYXRvcl9pbmNsdWRlID0gIi8vc2RrL2FuZHJvaWQvc3Jj
L2puaS9qbmlfZ2VuZXJhdG9yX2hlbHBlci5oIgogICB9CiAKKyAgZ2VuZXJhdGVfam5pKCJnZW5l
cmF0ZWRfYnVpbHRpbl9hdWRpb19jb2RlY3Nfam5pIikgeworICAgIHNvdXJjZXMgPSBbCisgICAg
ICAiYXBpL29yZy93ZWJydGMvQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5LmphdmEi
LAorICAgICAgImFwaS9vcmcvd2VicnRjL0J1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9y
eS5qYXZhIiwKKyAgICBdCisgICAgam5pX3BhY2thZ2UgPSAiIgorICAgIG5hbWVzcGFjZSA9ICJ3
ZWJydGM6OmpuaSIKKyAgICBqbmlfZ2VuZXJhdG9yX2luY2x1ZGUgPSAiLy9zZGsvYW5kcm9pZC9z
cmMvam5pL2puaV9nZW5lcmF0b3JfaGVscGVyLmgiCisgIH0KKwogICAjIEdlbmVyYXRlZCBKTkkg
Zm9yIG5hdGl2ZSBBUEkgdGFyZ2V0cwogCiAgIGdlbmVyYXRlX2puaSgiZ2VuZXJhdGVkX25hdGl2
ZV9hcGlfam5pIikgewpAQCAtMTI1NSw2ICsxMzY1LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKIAog
ICAgICAgamF2YV9maWxlcyA9IFsKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9v
cmcvd2VicnRjL0FuZHJvaWRWaWRlb0RlY29kZXJJbnN0cnVtZW50YXRpb25UZXN0LmphdmEiLAor
ICAgICAgICAiaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQnVpbHRpbkF1ZGlv
Q29kZWNzRmFjdG9yeUZhY3RvcnlUZXN0LmphdmEiLAogICAgICAgICAiaW5zdHJ1bWVudGF0aW9u
dGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMUNhcHR1cmVyVXNpbmdCeXRlQnVmZmVyVGVzdC5q
YXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVy
YTFDYXB0dXJlclVzaW5nVGV4dHVyZVRlc3QuamF2YSIsCiAgICAgICAgICJpbnN0cnVtZW50YXRp
b250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmEyQ2FwdHVyZXJUZXN0LmphdmEiLApAQCAtMTI3
MCwxMSArMTM4MSwxMyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgICAiaW5zdHJ1bWVudGF0
aW9udGVzdHMvc3JjL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25GYWN0b3J5VGVzdC5qYXZhIiwK
ICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1BlZXJDb25uZWN0
aW9uVGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2Vi
cnRjL1JlbmRlcmVyQ29tbW9uVGVzdC5qYXZhIiwKKyAgICAgICAgImluc3RydW1lbnRhdGlvbnRl
c3RzL3NyYy9vcmcvd2VicnRjL1J0Y0NlcnRpZmljYXRlUGVtVGVzdC5qYXZhIiwKICAgICAgICAg
Imluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1N1cmZhY2VUZXh0dXJlSGVscGVy
VGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRj
L1N1cmZhY2VWaWV3UmVuZGVyZXJPbk1lYXN1cmVUZXN0LmphdmEiLAogICAgICAgICAiaW5zdHJ1
bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvVGVzdENvbnN0YW50cy5qYXZhIiwKICAgICAg
ICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1ZpZGVvRmlsZVJlbmRlcmVy
VGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRj
L1ZpZGVvRnJhbWVCdWZmZXJUZXN0LmphdmEiLAorICAgICAgICAiaW5zdHJ1bWVudGF0aW9udGVz
dHMvc3JjL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25lclRlc3QuamF2YSIsCiAgICAgICAgICJp
bnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9XZWJSdGNKbmlCb290VGVzdC5qYXZh
IiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1l1dkhlbHBl
clRlc3QuamF2YSIsCiAgICAgICBdCkBAIC0xMjk0LDYgKzE0MDcsNyBAQCBpZiAoaXNfYW5kcm9p
ZCkgewogICAgICAgICAiLy9ydGNfYmFzZTpiYXNlX2phdmEiLAogICAgICAgICAiLy90aGlyZF9w
YXJ0eS9hbmRyb2lkX3N1cHBvcnRfdGVzdF9ydW5uZXI6cnVsZXNfamF2YSIsCiAgICAgICAgICIv
L3RoaXJkX3BhcnR5L2FuZHJvaWRfc3VwcG9ydF90ZXN0X3J1bm5lcjpydW5uZXJfamF2YSIsCisg
ICAgICAgICIvL3RoaXJkX3BhcnR5L2dvb2dsZS10cnV0aDpnb29nbGVfdHJ1dGhfamF2YSIsCiAg
ICAgICAgICIvL3RoaXJkX3BhcnR5L2p1bml0IiwKICAgICAgIF0KIApAQCAtMTM3MSwyMyArMTQ4
NSwyMyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgIjpuYXRpdmVfYXBpX3ZpZGVvIiwKICAg
ICAgICI6b3BlbnNsZXNfYXVkaW9fZGV2aWNlX21vZHVsZSIsCiAgICAgICAiOnZpZGVvX2puaSIs
Ci0gICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOnN5c3RlbV93cmFwcGVycyIsCi0gICAgICAi
Ly9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKLSAgICAg
ICIvL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLAotICAg
ICAgIi8vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKLSAgICAgICIvL21lZGlhOnJ0Y19hdWRpb192
aWRlbyIsCi0gICAgICAiLy9tZWRpYTpydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIiwKLSAgICAg
ICIvL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKLSAgICAgICIvL21vZHVsZXMvYXVkaW9fZGV2aWNl
OmF1ZGlvX2RldmljZSIsCi0gICAgICAiLy9tb2R1bGVzL2F1ZGlvX2RldmljZTptb2NrX2F1ZGlv
X2RldmljZSIsCi0gICAgICAiLy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vz
c2luZyIsCi0gICAgICAiLy9tb2R1bGVzL3V0aWxpdHk6dXRpbGl0eSIsCi0gICAgICAiLy9wYzps
aWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24iLAotICAgICAgIi8vcnRjX2Jhc2U6Y2hlY2tzIiwKLSAg
ICAgICIvL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIvL3Rlc3Q6ZmlsZXV0
aWxzIiwKLSAgICAgICIvL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKLSAgICAgICIvL3Rlc3RpbmcvZ3Rl
c3QiLAorICAgICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVy
X2ZhY3RvcnkiLAorICAgICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19l
bmNvZGVyX2ZhY3RvcnkiLAorICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCisg
ICAgICAiLi4vLi4vbWVkaWE6cnRjX2F1ZGlvX3ZpZGVvIiwKKyAgICAgICIuLi8uLi9tZWRpYTpy
dGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIiwKKyAgICAgICIuLi8uLi9tZWRpYTpydGNfbWVkaWFf
YmFzZSIsCisgICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6YXVkaW9fZGV2aWNlIiwK
KyAgICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX2RldmljZTptb2NrX2F1ZGlvX2RldmljZSIsCisg
ICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCisgICAgICAiLi4vLi4v
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3NpbmciLAorICAgICAgIi4uLy4u
L21vZHVsZXMvdXRpbGl0eTp1dGlsaXR5IiwKKyAgICAgICIuLi8uLi9wYzpsaWJqaW5nbGVfcGVl
cmNvbm5lY3Rpb24iLAorICAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLi4v
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0
aWxzIiwKKyAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgICAiLi4vLi4vdGVz
dGluZy9ndGVzdCIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5
IiwKICAgICBdCiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0F1ZGlvRGVjb2RlckZhY3Rv
cnlGYWN0b3J5LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9BdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeS5q
YXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRkM2UyNjI4OTZjYWI4NDQ0MWU0YTdkMmI3ZjgzOGZiNTljM2FiODMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9BdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9y
eS5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKK3BhY2thZ2Ugb3Jn
LndlYnJ0YzsKKworLyoqCisgKiBJbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBpbnRlcmZhY2UgY2Fu
IGNyZWF0ZSBhIG5hdGl2ZSB7QGNvZGUgd2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5fS4KKyAq
LworcHVibGljIGludGVyZmFjZSBBdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeSB7CisgIC8qKgor
ICAgKiBSZXR1cm5zIGEgcG9pbnRlciB0byBhIHtAY29kZSB3ZWJydGM6OkF1ZGlvRGVjb2RlckZh
Y3Rvcnl9LiBUaGUgY2FsbGVyIHRha2VzIG93bmVyc2hpcC4KKyAgICovCisgIGxvbmcgY3JlYXRl
TmF0aXZlQXVkaW9EZWNvZGVyRmFjdG9yeSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMv
QXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0F1ZGlvRW5jb2Rl
ckZhY3RvcnlGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE0YjcxYWJhMWYwNjBkNjZlZTBjM2Ez
MDRmODRjNDNlYjM5ZTY1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0F1ZGlvRW5j
b2RlckZhY3RvcnlGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwyMSBAQAorLyoKKyAqICBDb3B5cmln
aHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworcGFja2FnZSBvcmcud2VicnRjOworCisvKioKKyAqIEltcGxlbWVudGF0aW9ucyBvZiB0
aGlzIGludGVyZmFjZSBjYW4gY3JlYXRlIGEgbmF0aXZlIHtAY29kZSB3ZWJydGM6OkF1ZGlvRW5j
b2RlckZhY3Rvcnl9LgorICovCitwdWJsaWMgaW50ZXJmYWNlIEF1ZGlvRW5jb2RlckZhY3RvcnlG
YWN0b3J5IHsKKyAgLyoqCisgICAqIFJldHVybnMgYSBwb2ludGVyIHRvIGEge0Bjb2RlIHdlYnJ0
Yzo6QXVkaW9FbmNvZGVyRmFjdG9yeX0uIFRoZSBjYWxsZXIgdGFrZXMgb3duZXJzaGlwLgorICAg
Ki8KKyAgbG9uZyBjcmVhdGVOYXRpdmVBdWRpb0VuY29kZXJGYWN0b3J5KCk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkuamF2YSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2Fw
aS9vcmcvd2VicnRjL0J1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeS5qYXZhCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVlYmMxOWYyNWRjZWVhM2JmYTRlZmE4ODExNTg1MDQ0NTllYmVmMmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3Rvcnku
amF2YQpAQCAtMCwwICsxLDIzIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53
ZWJydGM7CisKKy8qKgorICogQ3JlYXRlcyBhIG5hdGl2ZSB7QGNvZGUgd2VicnRjOjpBdWRpb0Rl
Y29kZXJGYWN0b3J5fSB3aXRoIHRoZSBidWlsdGluIGF1ZGlvIGRlY29kZXJzLgorICovCitwdWJs
aWMgY2xhc3MgQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5IGltcGxlbWVudHMgQXVk
aW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkgeworICBAT3ZlcnJpZGUKKyAgcHVibGljIGxvbmcgY3Jl
YXRlTmF0aXZlQXVkaW9EZWNvZGVyRmFjdG9yeSgpIHsKKyAgICByZXR1cm4gbmF0aXZlQ3JlYXRl
QnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKTsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIG5h
dGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5KCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3Rvcnku
amF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL2FwaS9vcmcvd2VicnRjL0J1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeS5qYXZh
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU4ODRkNGMzYjk4ZDZjZDdkM2MyYmI1ZDVhNGEwMWI5M2IzMGMyZTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUZh
Y3RvcnkuamF2YQpAQCAtMCwwICsxLDIzIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdl
IG9yZy53ZWJydGM7CisKKy8qKgorICogVGhpcyBjbGFzcyBjcmVhdGVzIGEgbmF0aXZlIHtAY29k
ZSB3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnl9IHdpdGggdGhlIGJ1aWx0aW4gYXVkaW8gZW5j
b2RlcnMuCisgKi8KK3B1YmxpYyBjbGFzcyBCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3Rv
cnkgaW1wbGVtZW50cyBBdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSB7CisgIEBPdmVycmlkZQor
ICBwdWJsaWMgbG9uZyBjcmVhdGVOYXRpdmVBdWRpb0VuY29kZXJGYWN0b3J5KCkgeworICAgIHJl
dHVybiBuYXRpdmVDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpOworICB9CisKKyAg
cHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2Rl
ckZhY3RvcnkoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0NyeXB0b09wdGlvbnMuamF2
YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L2FwaS9vcmcvd2VicnRjL0NyeXB0b09wdGlvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2I5NTUyYWFk
ODdhNzE4ZDYyMTI4ODEwODYxOGRkZjg1NjMxZTkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93
ZWJydGMvQ3J5cHRvT3B0aW9ucy5qYXZhCkBAIC0wLDAgKzEsMTQ1IEBACisvKgorICogIENvcHly
aWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisKKy8qKgorICogQ3J5cHRvT3B0aW9ucyBkZWZp
bmVzIGFkdmFuY2VkIGNyeXB0b2dyYXBoaWMgc2V0dGluZ3MgZm9yIG5hdGl2ZSBXZWJSVEMuCisg
KiBUaGVzZSBzZXR0aW5ncyBtdXN0IGJlIHBhc3NlZCBpbnRvIFJUQ0NvbmZpZ3VyYXRpb24uIFdl
YlJUQyBpcyBzZWN1ciBieQorICogZGVmYXVsdCBhbmQgeW91IHNob3VsZCBub3QgbmVlZCB0byBz
ZXQgYW55IG9mIHRoZXNlIG9wdGlvbnMgdW5sZXNzIHlvdSBhcmUKKyAqIHNwZWNpZmljYWxseSBs
b29raW5nIGZvciBhbiBhZGRpdGlvbmFsIGNyeXB0byBmZWF0dXJlIHN1Y2ggYXMgQUVTX0dDTQor
ICogc3VwcG9ydC4gVGhpcyBjbGFzcyBpcyB0aGUgSmF2YSBiaW5kaW5nIG9mIG5hdGl2ZSBhcGkv
Y3J5cHRvL2NyeXB0b29wdGlvbnMuaAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQ3J5cHRvT3B0
aW9ucyB7CisgIC8qKgorICAgKiBTUlRQIFJlbGF0ZWQgUGVlciBDb25uZWN0aW9uIE9wdGlvbnMu
CisgICAqLworICBwdWJsaWMgZmluYWwgY2xhc3MgU3J0cCB7CisgICAgLyoqCisgICAgICogRW5h
YmxlIEdDTSBjcnlwdG8gc3VpdGVzIGZyb20gUkZDIDc3MTQgZm9yIFNSVFAuIEdDTSB3aWxsIG9u
bHkgYmUgdXNlZAorICAgICAqIGlmIGJvdGggc2lkZXMgZW5hYmxlIGl0CisgICAgICovCisgICAg
cHJpdmF0ZSBmaW5hbCBib29sZWFuIGVuYWJsZUdjbUNyeXB0b1N1aXRlczsKKyAgICAvKioKKyAg
ICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIChwb3RlbnRpYWxseSBpbnNlY3VyZSkgY3J5cHRvIGNp
cGhlcgorICAgICAqIFNSVFBfQUVTMTI4X0NNX1NIQTFfMzIgd2lsbCBiZSBpbmNsdWRlZCBpbiB0
aGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2lwaGVycworICAgICAqIGR1cmluZyBuZWdvdGlhdGlvbi4g
SXQgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYm90aCBwZWVycyBzdXBwb3J0IGl0IGFuZCBubworICAg
ICAqIG90aGVyIGNpcGhlcnMgZ2V0IHByZWZlcnJlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZp
bmFsIGJvb2xlYW4gZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjsKKyAgICAvKioKKyAg
ICAgKiBJZiBzZXQgdG8gdHJ1ZSwgZW5jcnlwdGVkIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyBhcyBk
ZWZpbmVkIGluIFJGQyA2OTA0CisgICAgICogd2lsbCBiZSBuZWdvdGlhdGVkLiBUaGV5IHdpbGwg
b25seSBiZSB1c2VkIGlmIGJvdGggcGVlcnMgc3VwcG9ydCB0aGVtLgorICAgICAqLworICAgIHBy
aXZhdGUgZmluYWwgYm9vbGVhbiBlbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zOwor
CisgICAgcHJpdmF0ZSBTcnRwKGJvb2xlYW4gZW5hYmxlR2NtQ3J5cHRvU3VpdGVzLCBib29sZWFu
IGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIsCisgICAgICAgIGJvb2xlYW4gZW5hYmxl
RW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucykgeworICAgICAgdGhpcy5lbmFibGVHY21Dcnlw
dG9TdWl0ZXMgPSBlbmFibGVHY21DcnlwdG9TdWl0ZXM7CisgICAgICB0aGlzLmVuYWJsZUFlczEy
OFNoYTFfMzJDcnlwdG9DaXBoZXIgPSBlbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOwor
ICAgICAgdGhpcy5lbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zID0gZW5hYmxlRW5j
cnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczsKKyAgICB9CisKKyAgICBAQ2FsbGVkQnlOYXRpdmUo
IlNydHAiKQorICAgIHB1YmxpYyBib29sZWFuIGdldEVuYWJsZUdjbUNyeXB0b1N1aXRlcygpIHsK
KyAgICAgIHJldHVybiBlbmFibGVHY21DcnlwdG9TdWl0ZXM7CisgICAgfQorCisgICAgQENhbGxl
ZEJ5TmF0aXZlKCJTcnRwIikKKyAgICBwdWJsaWMgYm9vbGVhbiBnZXRFbmFibGVBZXMxMjhTaGEx
XzMyQ3J5cHRvQ2lwaGVyKCkgeworICAgICAgcmV0dXJuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlw
dG9DaXBoZXI7CisgICAgfQorCisgICAgQENhbGxlZEJ5TmF0aXZlKCJTcnRwIikKKyAgICBwdWJs
aWMgYm9vbGVhbiBnZXRFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zKCkgeworICAg
ICAgcmV0dXJuIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnM7CisgICAgfQorICB9
CisKKyAgLyoqCisgICAqIE9wdGlvbnMgdG8gYmUgdXNlZCB3aGVuIHRoZSBGcmFtZUVuY3J5cHRv
ciAvIEZyYW1lRGVjcnlwdG9yIEFQSXMgYXJlIHVzZWQuCisgICAqLworICBwdWJsaWMgZmluYWwg
Y2xhc3MgU0ZyYW1lIHsKKyAgICAvKioKKyAgICAgKiBJZiBzZXQgYWxsIFJ0cFNlbmRlcnMgbXVz
dCBoYXZlIGFuIEZyYW1lRW5jcnlwdG9yIGF0dGFjaGVkIHRvIHRoZW0gYmVmb3JlCisgICAgICog
dGhleSBhcmUgYWxsb3dlZCB0byBzZW5kIHBhY2tldHMuIEFsbCBSdHBSZWNlaXZlcnMgbXVzdCBo
YXZlIGEKKyAgICAgKiBGcmFtZURlY3J5cHRvciBhdHRhY2hlZCB0byB0aGVtIGJlZm9yZSB0aGV5
IGFyZSBhYmxlIHRvIHJlY2VpdmUgcGFja2V0cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFs
IGJvb2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbjsKKworICAgIHByaXZhdGUgU0ZyYW1lKGJv
b2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbikgeworICAgICAgdGhpcy5yZXF1aXJlRnJhbWVF
bmNyeXB0aW9uID0gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbjsKKyAgICB9CisKKyAgICBAQ2FsbGVk
QnlOYXRpdmUoIlNGcmFtZSIpCisgICAgcHVibGljIGJvb2xlYW4gZ2V0UmVxdWlyZUZyYW1lRW5j
cnlwdGlvbigpIHsKKyAgICAgIHJldHVybiByZXF1aXJlRnJhbWVFbmNyeXB0aW9uOworICAgIH0K
KyAgfQorCisgIHByaXZhdGUgZmluYWwgU3J0cCBzcnRwOworICBwcml2YXRlIGZpbmFsIFNGcmFt
ZSBzZnJhbWU7CisKKyAgcHJpdmF0ZSBDcnlwdG9PcHRpb25zKGJvb2xlYW4gZW5hYmxlR2NtQ3J5
cHRvU3VpdGVzLCBib29sZWFuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIsCisgICAg
ICBib29sZWFuIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMsIGJvb2xlYW4gcmVx
dWlyZUZyYW1lRW5jcnlwdGlvbikgeworICAgIHRoaXMuc3J0cCA9IG5ldyBTcnRwKAorICAgICAg
ICBlbmFibGVHY21DcnlwdG9TdWl0ZXMsIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIs
IGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMpOworICAgIHRoaXMuc2ZyYW1lID0g
bmV3IFNGcmFtZShyZXF1aXJlRnJhbWVFbmNyeXB0aW9uKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0
aWMgQnVpbGRlciBidWlsZGVyKCkgeworICAgIHJldHVybiBuZXcgQnVpbGRlcigpOworICB9CisK
KyAgQENhbGxlZEJ5TmF0aXZlCisgIHB1YmxpYyBTcnRwIGdldFNydHAoKSB7CisgICAgcmV0dXJu
IHNydHA7CisgIH0KKworICBAQ2FsbGVkQnlOYXRpdmUKKyAgcHVibGljIFNGcmFtZSBnZXRTRnJh
bWUoKSB7CisgICAgcmV0dXJuIHNmcmFtZTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgY2xhc3Mg
QnVpbGRlciB7CisgICAgcHJpdmF0ZSBib29sZWFuIGVuYWJsZUdjbUNyeXB0b1N1aXRlczsKKyAg
ICBwcml2YXRlIGJvb2xlYW4gZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjsKKyAgICBw
cml2YXRlIGJvb2xlYW4gZW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczsKKyAgICBw
cml2YXRlIGJvb2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbjsKKworICAgIHByaXZhdGUgQnVp
bGRlcigpIHt9CisKKyAgICBwdWJsaWMgQnVpbGRlciBzZXRFbmFibGVHY21DcnlwdG9TdWl0ZXMo
Ym9vbGVhbiBlbmFibGVHY21DcnlwdG9TdWl0ZXMpIHsKKyAgICAgIHRoaXMuZW5hYmxlR2NtQ3J5
cHRvU3VpdGVzID0gZW5hYmxlR2NtQ3J5cHRvU3VpdGVzOworICAgICAgcmV0dXJuIHRoaXM7Cisg
ICAgfQorCisgICAgcHVibGljIEJ1aWxkZXIgc2V0RW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0Np
cGhlcihib29sZWFuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIpIHsKKyAgICAgIHRo
aXMuZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlciA9IGVuYWJsZUFlczEyOFNoYTFfMzJD
cnlwdG9DaXBoZXI7CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBwdWJsaWMgQnVp
bGRlciBzZXRFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zKAorICAgICAgICBib29s
ZWFuIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMpIHsKKyAgICAgIHRoaXMuZW5h
YmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucyA9IGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRl
ckV4dGVuc2lvbnM7CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBwdWJsaWMgQnVp
bGRlciBzZXRSZXF1aXJlRnJhbWVFbmNyeXB0aW9uKGJvb2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlw
dGlvbikgeworICAgICAgdGhpcy5yZXF1aXJlRnJhbWVFbmNyeXB0aW9uID0gcmVxdWlyZUZyYW1l
RW5jcnlwdGlvbjsKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHB1YmxpYyBDcnlw
dG9PcHRpb25zIGNyZWF0ZUNyeXB0b09wdGlvbnMoKSB7CisgICAgICByZXR1cm4gbmV3IENyeXB0
b09wdGlvbnMoZW5hYmxlR2NtQ3J5cHRvU3VpdGVzLCBlbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRv
Q2lwaGVyLAorICAgICAgICAgIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMsIHJl
cXVpcmVGcmFtZUVuY3J5cHRpb24pOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93
ZWJydGMvRWdsUmVuZGVyZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0VnbFJlbmRlcmVyLmphdmEKaW5k
ZXggZDBhMWQ5OGIyYmRlZmNhOTU5ZGNjNGQ4NTRjMWY2OTQyNzA1N2MwYy4uZTgxMDA1MzAwMzYx
ODNjZjMzYTc4MWRjYWMyZTJkMzcxZjlkMDI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvRWds
UmVuZGVyZXIuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9FZ2xSZW5kZXJlci5qYXZhCkBAIC0xNyw2
ICsxNyw3IEBAIGltcG9ydCBhbmRyb2lkLm9wZW5nbC5HTEVTMjA7CiBpbXBvcnQgYW5kcm9pZC5v
cy5IYW5kbGVyOwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlclRocmVhZDsKIGltcG9ydCBhbmRy
b2lkLm9zLkxvb3BlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CiBpbXBvcnQgYW5kcm9p
ZC52aWV3LlN1cmZhY2U7CiBpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKIGltcG9ydCBqYXZh
LnRleHQuRGVjaW1hbEZvcm1hdDsKQEAgLTc5LDYgKzgwLDI5IEBAIHB1YmxpYyBjbGFzcyBFZ2xS
ZW5kZXJlciBpbXBsZW1lbnRzIFZpZGVvU2luayB7CiAgICAgfQogICB9CiAKKyAgLyoqCisgICAq
IEhhbmRsZXIgdGhhdCB0cmlnZ2VycyBhIGNhbGxiYWNrIHdoZW4gYW4gdW5jYXVnaHQgZXhjZXB0
aW9uIGhhcHBlbnMgd2hlbiBoYW5kbGluZyBhIG1lc3NhZ2UuCisgICAqLworICBwcml2YXRlIHN0
YXRpYyBjbGFzcyBIYW5kbGVyV2l0aEV4Y2VwdGlvbkNhbGxiYWNrIGV4dGVuZHMgSGFuZGxlciB7
CisgICAgcHJpdmF0ZSBmaW5hbCBSdW5uYWJsZSBleGNlcHRpb25DYWxsYmFjazsKKworICAgIHB1
YmxpYyBIYW5kbGVyV2l0aEV4Y2VwdGlvbkNhbGxiYWNrKExvb3BlciBsb29wZXIsIFJ1bm5hYmxl
IGV4Y2VwdGlvbkNhbGxiYWNrKSB7CisgICAgICBzdXBlcihsb29wZXIpOworICAgICAgdGhpcy5l
eGNlcHRpb25DYWxsYmFjayA9IGV4Y2VwdGlvbkNhbGxiYWNrOworICAgIH0KKworICAgIEBPdmVy
cmlkZQorICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoTWVzc2FnZShNZXNzYWdlIG1zZykgeworICAg
ICAgdHJ5IHsKKyAgICAgICAgc3VwZXIuZGlzcGF0Y2hNZXNzYWdlKG1zZyk7CisgICAgICB9IGNh
dGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICBMb2dnaW5nLmUoVEFHLCAiRXhjZXB0aW9uIG9u
IEVnbFJlbmRlcmVyIHRocmVhZCIsIGUpOworICAgICAgICBleGNlcHRpb25DYWxsYmFjay5ydW4o
KTsKKyAgICAgICAgdGhyb3cgZTsKKyAgICAgIH0KKyAgICB9CisgIH0KKwogICBwcm90ZWN0ZWQg
ZmluYWwgU3RyaW5nIG5hbWU7CiAKICAgLy8gfHJlbmRlclRocmVhZEhhbmRsZXJ8IGlzIGEgaGFu
ZGxlciBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHxyZW5kZXJUaHJlYWR8LCBhbmQgaXMgc3luY2hy
b25pemVkCkBAIC0xMDEsNiArMTI1LDcgQEAgcHVibGljIGNsYXNzIEVnbFJlbmRlcmVyIGltcGxl
bWVudHMgVmlkZW9TaW5rIHsKICAgQE51bGxhYmxlIHByaXZhdGUgRWdsQmFzZSBlZ2xCYXNlOwog
ICBwcml2YXRlIGZpbmFsIFZpZGVvRnJhbWVEcmF3ZXIgZnJhbWVEcmF3ZXIgPSBuZXcgVmlkZW9G
cmFtZURyYXdlcigpOwogICBATnVsbGFibGUgcHJpdmF0ZSBSZW5kZXJlckNvbW1vbi5HbERyYXdl
ciBkcmF3ZXI7CisgIHByaXZhdGUgYm9vbGVhbiB1c2VQcmVzZW50YXRpb25UaW1lU3RhbXA7CiAg
IHByaXZhdGUgZmluYWwgTWF0cml4IGRyYXdNYXRyaXggPSBuZXcgTWF0cml4KCk7CiAKICAgLy8g
UGVuZGluZyBmcmFtZSB0byByZW5kZXIuIFNlcnZlcyBhcyBhIHF1ZXVlIHdpdGggc2l6ZSAxLiBT
eW5jaHJvbml6ZWQgb24gfGZyYW1lTG9ja3wuCkBAIC0xNjEsMjAgKzE4NiwzMSBAQCBwdWJsaWMg
Y2xhc3MgRWdsUmVuZGVyZXIgaW1wbGVtZW50cyBWaWRlb1NpbmsgewogICAgKiBJbml0aWFsaXpl
IHRoaXMgY2xhc3MsIHNoYXJpbmcgcmVzb3VyY2VzIHdpdGggfHNoYXJlZENvbnRleHR8LiBUaGUg
Y3VzdG9tIHxkcmF3ZXJ8IHdpbGwgYmUgdXNlZAogICAgKiBmb3IgZHJhd2luZyBmcmFtZXMgb24g
dGhlIEVHTFN1cmZhY2UuIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgcmVs
ZWFzZSgpIG9uCiAgICAqIHxkcmF3ZXJ8LiBJdCBpcyBhbGxvd2VkIHRvIGNhbGwgaW5pdCgpIHRv
IHJlaW5pdGlhbGl6ZSB0aGUgcmVuZGVyZXIgYWZ0ZXIgYSBwcmV2aW91cwotICAgKiBpbml0KCkv
cmVsZWFzZSgpIGN5Y2xlLgorICAgKiBpbml0KCkvcmVsZWFzZSgpIGN5Y2xlLiBJZiB1c2VQcmVz
ZW50YXRpb25UaW1lU3RhbXAgaXMgdHJ1ZSwgZWdsUHJlc2VudGF0aW9uVGltZUFORFJPSUQgd2ls
bCBiZQorICAgKiBzZXQgd2l0aCB0aGUgZnJhbWUgdGltZXN0YW1wcywgd2hpY2ggc3BlY2lmaWVz
IGRlc2lyZWQgcHJlc2VudGF0aW9uIHRpbWUgYW5kIG1pZ2h0IGJlIHVzZWZ1bAorICAgKiBmb3Ig
ZS5nLiBzeW5jaW5nIGF1ZGlvIGFuZCB2aWRlby4KICAgICovCiAgIHB1YmxpYyB2b2lkIGluaXQo
QE51bGxhYmxlIGZpbmFsIEVnbEJhc2UuQ29udGV4dCBzaGFyZWRDb250ZXh0LCBmaW5hbCBpbnRb
XSBjb25maWdBdHRyaWJ1dGVzLAotICAgICAgUmVuZGVyZXJDb21tb24uR2xEcmF3ZXIgZHJhd2Vy
KSB7CisgICAgICBSZW5kZXJlckNvbW1vbi5HbERyYXdlciBkcmF3ZXIsIGJvb2xlYW4gdXNlUHJl
c2VudGF0aW9uVGltZVN0YW1wKSB7CiAgICAgc3luY2hyb25pemVkIChoYW5kbGVyTG9jaykgewog
ICAgICAgaWYgKHJlbmRlclRocmVhZEhhbmRsZXIgIT0gbnVsbCkgewogICAgICAgICB0aHJvdyBu
ZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKG5hbWUgKyAiQWxyZWFkeSBpbml0aWFsaXplZCIpOwog
ICAgICAgfQogICAgICAgbG9nRCgiSW5pdGlhbGl6aW5nIEVnbFJlbmRlcmVyIik7CiAgICAgICB0
aGlzLmRyYXdlciA9IGRyYXdlcjsKKyAgICAgIHRoaXMudXNlUHJlc2VudGF0aW9uVGltZVN0YW1w
ID0gdXNlUHJlc2VudGF0aW9uVGltZVN0YW1wOwogCiAgICAgICBmaW5hbCBIYW5kbGVyVGhyZWFk
IHJlbmRlclRocmVhZCA9IG5ldyBIYW5kbGVyVGhyZWFkKG5hbWUgKyAiRWdsUmVuZGVyZXIiKTsK
ICAgICAgIHJlbmRlclRocmVhZC5zdGFydCgpOwotICAgICAgcmVuZGVyVGhyZWFkSGFuZGxlciA9
IG5ldyBIYW5kbGVyKHJlbmRlclRocmVhZC5nZXRMb29wZXIoKSk7CisgICAgICByZW5kZXJUaHJl
YWRIYW5kbGVyID0KKyAgICAgICAgICBuZXcgSGFuZGxlcldpdGhFeGNlcHRpb25DYWxsYmFjayhy
ZW5kZXJUaHJlYWQuZ2V0TG9vcGVyKCksIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIEBP
dmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICBz
eW5jaHJvbml6ZWQgKGhhbmRsZXJMb2NrKSB7CisgICAgICAgICAgICAgICAgcmVuZGVyVGhyZWFk
SGFuZGxlciA9IG51bGw7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9KTsKICAgICAgIC8vIENyZWF0ZSBFR0wgY29udGV4dCBvbiB0aGUgbmV3bHkgY3JlYXRlZCBy
ZW5kZXIgdGhyZWFkLiBJdCBzaG91bGQgYmUgcG9zc2libHkgdG8gY3JlYXRlIHRoZQogICAgICAg
Ly8gY29udGV4dCBvbiB0aGlzIHRocmVhZCBhbmQgbWFrZSBpdCBjdXJyZW50IG9uIHRoZSByZW5k
ZXIgdGhyZWFkLCBidXQgdGhpcyBjYXVzZXMgZmFpbHVyZSBvbgogICAgICAgLy8gc29tZSBNYXJ2
ZWwgYmFzZWQgSkIgZGV2aWNlcy4gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3dlYnJ0Yy9p
c3N1ZXMvZGV0YWlsP2lkPTYzNTAuCkBAIC0xOTgsNiArMjM0LDE2IEBAIHB1YmxpYyBjbGFzcyBF
Z2xSZW5kZXJlciBpbXBsZW1lbnRzIFZpZGVvU2luayB7CiAgICAgfQogICB9CiAKKyAgLyoqCisg
ICAqIFNhbWUgYXMgYWJvdmUgd2l0aCB1c2VQcmVzZW50YXRpb25UaW1lU3RhbXAgc2V0IHRvIGZh
bHNlLgorICAgKgorICAgKiBAc2VlICNpbml0KEVnbEJhc2UuQ29udGV4dCwgaW50W10sIFJlbmRl
cmVyQ29tbW9uLkdsRHJhd2VyLCBib29sZWFuKQorICAgKi8KKyAgcHVibGljIHZvaWQgaW5pdChA
TnVsbGFibGUgZmluYWwgRWdsQmFzZS5Db250ZXh0IHNoYXJlZENvbnRleHQsIGZpbmFsIGludFtd
IGNvbmZpZ0F0dHJpYnV0ZXMsCisgICAgICBSZW5kZXJlckNvbW1vbi5HbERyYXdlciBkcmF3ZXIp
IHsKKyAgICBpbml0KHNoYXJlZENvbnRleHQsIGNvbmZpZ0F0dHJpYnV0ZXMsIGRyYXdlciwgLyog
dXNlUHJlc2VudGF0aW9uVGltZVN0YW1wPSAqLyBmYWxzZSk7CisgIH0KKwogICBwdWJsaWMgdm9p
ZCBjcmVhdGVFZ2xTdXJmYWNlKFN1cmZhY2Ugc3VyZmFjZSkgewogICAgIGNyZWF0ZUVnbFN1cmZh
Y2VJbnRlcm5hbChzdXJmYWNlKTsKICAgfQpAQCAtNTg1LDcgKzYzMSwxMSBAQCBwdWJsaWMgY2xh
c3MgRWdsUmVuZGVyZXIgaW1wbGVtZW50cyBWaWRlb1NpbmsgewogICAgICAgICAgIGVnbEJhc2Uu
c3VyZmFjZVdpZHRoKCksIGVnbEJhc2Uuc3VyZmFjZUhlaWdodCgpKTsKIAogICAgICAgZmluYWwg
bG9uZyBzd2FwQnVmZmVyc1N0YXJ0VGltZU5zID0gU3lzdGVtLm5hbm9UaW1lKCk7Ci0gICAgICBl
Z2xCYXNlLnN3YXBCdWZmZXJzKCk7CisgICAgICBpZiAodXNlUHJlc2VudGF0aW9uVGltZVN0YW1w
KSB7CisgICAgICAgIGVnbEJhc2Uuc3dhcEJ1ZmZlcnMoZnJhbWUuZ2V0VGltZXN0YW1wTnMoKSk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBlZ2xCYXNlLnN3YXBCdWZmZXJzKCk7CisgICAgICB9
CiAKICAgICAgIGZpbmFsIGxvbmcgY3VycmVudFRpbWVOcyA9IFN5c3RlbS5uYW5vVGltZSgpOwog
ICAgICAgc3luY2hyb25pemVkIChzdGF0aXN0aWNzTG9jaykgewpAQCAtNjUyLDcgKzcwMiw3IEBA
IHB1YmxpYyBjbGFzcyBFZ2xSZW5kZXJlciBpbXBsZW1lbnRzIFZpZGVvU2luayB7CiAgIH0KIAog
ICBwcml2YXRlIFN0cmluZyBhdmVyYWdlVGltZUFzU3RyaW5nKGxvbmcgc3VtVGltZU5zLCBpbnQg
Y291bnQpIHsKLSAgICByZXR1cm4gKGNvdW50IDw9IDApID8gIk5BIiA6IFRpbWVVbml0Lk5BTk9T
RUNPTkRTLnRvTWljcm9zKHN1bVRpbWVOcyAvIGNvdW50KSArICIgzrxzIjsKKyAgICByZXR1cm4g
KGNvdW50IDw9IDApID8gIk5BIiA6IFRpbWVVbml0Lk5BTk9TRUNPTkRTLnRvTWljcm9zKHN1bVRp
bWVOcyAvIGNvdW50KSArICIgdXMiOwogICB9CiAKICAgcHJpdmF0ZSB2b2lkIGxvZ1N0YXRpc3Rp
Y3MoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDhEZWNvZGVyLmphdmEgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkv
b3JnL3dlYnJ0Yy9MaWJ2cHhWcDhEZWNvZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRhZDBhYTEzN2M3
NTIwZWJiNTkwOWUwZWUzNGFiMmRhNWNmNWRlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2Vi
cnRjL0xpYnZweFZwOERlY29kZXIuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogIENvcHly
aWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworcGFja2FnZSBvcmcud2VicnRjOworCitwdWJsaWMgY2xhc3MgTGlidnB4VnA4
RGVjb2RlciBleHRlbmRzIFdyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIgeworICBAT3ZlcnJpZGUK
KyAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZlVmlkZW9EZWNvZGVyKCkgeworICAgIHJldHVybiBu
YXRpdmVDcmVhdGVEZWNvZGVyKCk7CisgIH0KKworICBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZl
Q3JlYXRlRGVjb2RlcigpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTGlidnB4VnA4RW5j
b2Rlci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTGlidnB4VnA4RW5jb2Rlci5qYXZhCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRiZTllNTJjMTQyMWYyNDFjNGNjYzkxODk5YmUxNTkyMDNlM2E2ODEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDhFbmNvZGVyLmphdmEKQEAgLTAsMCArMSwyNSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
CisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorICovCisKK3BhY2thZ2Ugb3JnLndlYnJ0YzsKKworcHVibGljIGNs
YXNzIExpYnZweFZwOEVuY29kZXIgZXh0ZW5kcyBXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyIHsK
KyAgQE92ZXJyaWRlCisgIHB1YmxpYyBsb25nIGNyZWF0ZU5hdGl2ZVZpZGVvRW5jb2RlcigpIHsK
KyAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRW5jb2RlcigpOworICB9CisKKyAgc3RhdGljIG5hdGl2
ZSBsb25nIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsKKworICBAT3ZlcnJpZGUKKyAgcHVibGljIGJv
b2xlYW4gaXNIYXJkd2FyZUVuY29kZXIoKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDlEZWNvZGVyLmphdmEgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0
Yy9MaWJ2cHhWcDlEZWNvZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBhMjQ0MzNhM2VmNzQxY2M5Yjgx
ZDQ1ZTA3NmVjMjI4YmM0ZGI2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0xpYnZw
eFZwOURlY29kZXIuamF2YQpAQCAtMCwwICsxLDIyIEBACisvKgorICogIENvcHlyaWdodCAoYykg
MjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8K
KworcGFja2FnZSBvcmcud2VicnRjOworCitwdWJsaWMgY2xhc3MgTGlidnB4VnA5RGVjb2RlciBl
eHRlbmRzIFdyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIgeworICBAT3ZlcnJpZGUKKyAgcHVibGlj
IGxvbmcgY3JlYXRlTmF0aXZlVmlkZW9EZWNvZGVyKCkgeworICAgIHJldHVybiBuYXRpdmVDcmVh
dGVEZWNvZGVyKCk7CisgIH0KKworICBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlRGVj
b2RlcigpOworCisgIHN0YXRpYyBuYXRpdmUgYm9vbGVhbiBuYXRpdmVJc1N1cHBvcnRlZCgpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTGlidnB4VnA5RW5jb2Rlci5qYXZhIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93
ZWJydGMvTGlidnB4VnA5RW5jb2Rlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyMTFhZTkzZmI4YWM1YTE3
OWQzZjc3ZGFiZjdlM2M5ZjI2ODVmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9M
aWJ2cHhWcDlFbmNvZGVyLmphdmEKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKK3BhY2thZ2Ugb3JnLndlYnJ0YzsKKworcHVibGljIGNsYXNzIExpYnZweFZwOUVuY29k
ZXIgZXh0ZW5kcyBXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyIHsKKyAgQE92ZXJyaWRlCisgIHB1
YmxpYyBsb25nIGNyZWF0ZU5hdGl2ZVZpZGVvRW5jb2RlcigpIHsKKyAgICByZXR1cm4gbmF0aXZl
Q3JlYXRlRW5jb2RlcigpOworICB9CisKKyAgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0
ZUVuY29kZXIoKTsKKworICBAT3ZlcnJpZGUKKyAgcHVibGljIGJvb2xlYW4gaXNIYXJkd2FyZUVu
Y29kZXIoKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgc3RhdGljIG5hdGl2ZSBib29s
ZWFuIG5hdGl2ZUlzU3VwcG9ydGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9NZWRp
YVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9NZWRpYVRyYW5zcG9y
dEZhY3RvcnlGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE2YTM3YTZkNzc3NTM5YTQ2MGZjMjk0
NmRmMWEyMjBhZmZhMjM2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL01lZGlhVHJh
bnNwb3J0RmFjdG9yeUZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDIyIEBACisvKgorICogIENvcHly
aWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisKKy8qKgorICogRmFjdG9yeSBmb3IgY3JlYXRp
bmcgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEZhY3RvcnkgaW5zdGFuY2VzLgorICovCitwdWJsaWMg
aW50ZXJmYWNlIE1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkgeworICAvKioKKyAgICogRHlu
YW1pY2FsbHkgYWxsb2NhdGVzIGEgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEZhY3RvcnkgaW5zdGFu
Y2UgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGl0LgorICAgKiBUaGUgY2FsbGVyIHRha2VzIG93
bmVyc2hpcCBvZiB0aGUgb2JqZWN0LgorICAgKi8KKyAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZl
TWVkaWFUcmFuc3BvcnRGYWN0b3J5KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9OZXR3
b3JrTW9uaXRvci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTmV0d29ya01vbml0b3IuamF2YQppbmRleCBi
YTZiYWUwZWQ4MzQ5ODMyMTY1NmRlYjgyNTFmZDE2YjVkMjU4NzUxLi45NzY0YTBjYjM1NGZmNzcy
YWEzYTM1NTU0NzlkNDFhYjgwMmVmNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9OZXR3b3Jr
TW9uaXRvci5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL05ldHdvcmtNb25pdG9yLmphdmEKQEAgLTE0
LDExICsxNCwxMCBAQCBpbXBvcnQgc3RhdGljIG9yZy53ZWJydGMuTmV0d29ya01vbml0b3JBdXRv
RGV0ZWN0LklOVkFMSURfTkVUX0lEOwogCiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7
CiBpbXBvcnQgYW5kcm9pZC5vcy5CdWlsZDsKLWltcG9ydCBqYXZheC5hbm5vdGF0aW9uLk51bGxh
YmxlOwogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7
Ci1pbXBvcnQgb3JnLndlYnJ0Yy5OZXR3b3JrTW9uaXRvckF1dG9EZXRlY3QuQ29ubmVjdGlvblR5
cGU7Ci1pbXBvcnQgb3JnLndlYnJ0Yy5OZXR3b3JrTW9uaXRvckF1dG9EZXRlY3QuTmV0d29ya0lu
Zm9ybWF0aW9uOworaW1wb3J0IGphdmF4LmFubm90YXRpb24uTnVsbGFibGU7CitpbXBvcnQgb3Jn
LndlYnJ0Yy5OZXR3b3JrTW9uaXRvckF1dG9EZXRlY3Q7CiAKIC8qKgogICogQm9ycm93ZWQgZnJv
bSBDaHJvbWl1bSdzCkBAIC0zMyw3ICszMiw3IEBAIHB1YmxpYyBjbGFzcyBOZXR3b3JrTW9uaXRv
ciB7CiAgICAqIEFsZXJ0ZWQgd2hlbiB0aGUgY29ubmVjdGlvbiB0eXBlIG9mIHRoZSBuZXR3b3Jr
IGNoYW5nZXMuIFRoZSBhbGVydCBpcyBmaXJlZCBvbiB0aGUgVUkgdGhyZWFkLgogICAgKi8KICAg
cHVibGljIGludGVyZmFjZSBOZXR3b3JrT2JzZXJ2ZXIgewotICAgIHB1YmxpYyB2b2lkIG9uQ29u
bmVjdGlvblR5cGVDaGFuZ2VkKENvbm5lY3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBlKTsKKyAgICBw
dWJsaWMgdm9pZCBvbkNvbm5lY3Rpb25UeXBlQ2hhbmdlZChOZXR3b3JrTW9uaXRvckF1dG9EZXRl
Y3QuQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUpOwogICB9CiAKICAgcHJpdmF0ZSBzdGF0
aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJOZXR3b3JrTW9uaXRvciI7CkBAIC01NSwxMyArNTQsMTMg
QEAgcHVibGljIGNsYXNzIE5ldHdvcmtNb25pdG9yIHsKICAgLy8gQWxzbyBndWFyZGVkIGJ5IGF1
dG9EZXRlY3RMb2NrLgogICBwcml2YXRlIGludCBudW1PYnNlcnZlcnM7CiAKLSAgcHJpdmF0ZSB2
b2xhdGlsZSBDb25uZWN0aW9uVHlwZSBjdXJyZW50Q29ubmVjdGlvblR5cGU7CisgIHByaXZhdGUg
dm9sYXRpbGUgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBlIGN1cnJlbnRD
b25uZWN0aW9uVHlwZTsKIAogICBwcml2YXRlIE5ldHdvcmtNb25pdG9yKCkgewogICAgIG5hdGl2
ZU5ldHdvcmtPYnNlcnZlcnMgPSBuZXcgQXJyYXlMaXN0PExvbmc+KCk7CiAgICAgbmV0d29ya09i
c2VydmVycyA9IG5ldyBBcnJheUxpc3Q8TmV0d29ya09ic2VydmVyPigpOwogICAgIG51bU9ic2Vy
dmVycyA9IDA7Ci0gICAgY3VycmVudENvbm5lY3Rpb25UeXBlID0gQ29ubmVjdGlvblR5cGUuQ09O
TkVDVElPTl9VTktOT1dOOworICAgIGN1cnJlbnRDb25uZWN0aW9uVHlwZSA9IE5ldHdvcmtNb25p
dG9yQXV0b0RldGVjdC5Db25uZWN0aW9uVHlwZS5DT05ORUNUSU9OX1VOS05PV047CiAgIH0KIAog
ICAvLyBUT0RPKHNha2FsKTogUmVtb3ZlIG9uY2UgZG93bnN0cmVhbSBkZXBlbmRlbmNpZXMgaGF2
ZSBiZWVuIHVwZGF0ZWQuCkBAIC0xNTUsNyArMTU0LDcgQEAgcHVibGljIGNsYXNzIE5ldHdvcmtN
b25pdG9yIHsKICAgICByZXR1cm4gQnVpbGQuVkVSU0lPTi5TREtfSU5UOwogICB9CiAKLSAgcHJp
dmF0ZSBDb25uZWN0aW9uVHlwZSBnZXRDdXJyZW50Q29ubmVjdGlvblR5cGUoKSB7CisgIHByaXZh
dGUgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBlIGdldEN1cnJlbnRDb25u
ZWN0aW9uVHlwZSgpIHsKICAgICByZXR1cm4gY3VycmVudENvbm5lY3Rpb25UeXBlOwogICB9CiAK
QEAgLTE2OSwxMiArMTY4LDEzIEBAIHB1YmxpYyBjbGFzcyBOZXR3b3JrTW9uaXRvciB7CiAgICAg
cmV0dXJuIG5ldyBOZXR3b3JrTW9uaXRvckF1dG9EZXRlY3QobmV3IE5ldHdvcmtNb25pdG9yQXV0
b0RldGVjdC5PYnNlcnZlcigpIHsKIAogICAgICAgQE92ZXJyaWRlCi0gICAgICBwdWJsaWMgdm9p
ZCBvbkNvbm5lY3Rpb25UeXBlQ2hhbmdlZChDb25uZWN0aW9uVHlwZSBuZXdDb25uZWN0aW9uVHlw
ZSkgeworICAgICAgcHVibGljIHZvaWQgb25Db25uZWN0aW9uVHlwZUNoYW5nZWQoCisgICAgICAg
ICAgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBlIG5ld0Nvbm5lY3Rpb25U
eXBlKSB7CiAgICAgICAgIHVwZGF0ZUN1cnJlbnRDb25uZWN0aW9uVHlwZShuZXdDb25uZWN0aW9u
VHlwZSk7CiAgICAgICB9CiAKICAgICAgIEBPdmVycmlkZQotICAgICAgcHVibGljIHZvaWQgb25O
ZXR3b3JrQ29ubmVjdChOZXR3b3JrSW5mb3JtYXRpb24gbmV0d29ya0luZm8pIHsKKyAgICAgIHB1
YmxpYyB2b2lkIG9uTmV0d29ya0Nvbm5lY3QoTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0Lk5ldHdv
cmtJbmZvcm1hdGlvbiBuZXR3b3JrSW5mbykgewogICAgICAgICBub3RpZnlPYnNlcnZlcnNPZk5l
dHdvcmtDb25uZWN0KG5ldHdvcmtJbmZvKTsKICAgICAgIH0KIApAQCAtMTg1LDEzICsxODUsMTUg
QEAgcHVibGljIGNsYXNzIE5ldHdvcmtNb25pdG9yIHsKICAgICB9LCBhcHBDb250ZXh0KTsKICAg
fQogCi0gIHByaXZhdGUgdm9pZCB1cGRhdGVDdXJyZW50Q29ubmVjdGlvblR5cGUoQ29ubmVjdGlv
blR5cGUgbmV3Q29ubmVjdGlvblR5cGUpIHsKKyAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUN1cnJlbnRD
b25uZWN0aW9uVHlwZSgKKyAgICAgIE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5Db25uZWN0aW9u
VHlwZSBuZXdDb25uZWN0aW9uVHlwZSkgewogICAgIGN1cnJlbnRDb25uZWN0aW9uVHlwZSA9IG5l
d0Nvbm5lY3Rpb25UeXBlOwogICAgIG5vdGlmeU9ic2VydmVyc09mQ29ubmVjdGlvblR5cGVDaGFu
Z2UobmV3Q29ubmVjdGlvblR5cGUpOwogICB9CiAKICAgLyoqIEFsZXJ0cyBhbGwgb2JzZXJ2ZXJz
IG9mIGEgY29ubmVjdGlvbiBjaGFuZ2UuICovCi0gIHByaXZhdGUgdm9pZCBub3RpZnlPYnNlcnZl
cnNPZkNvbm5lY3Rpb25UeXBlQ2hhbmdlKENvbm5lY3Rpb25UeXBlIG5ld0Nvbm5lY3Rpb25UeXBl
KSB7CisgIHByaXZhdGUgdm9pZCBub3RpZnlPYnNlcnZlcnNPZkNvbm5lY3Rpb25UeXBlQ2hhbmdl
KAorICAgICAgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBlIG5ld0Nvbm5l
Y3Rpb25UeXBlKSB7CiAgICAgTGlzdDxMb25nPiBuYXRpdmVPYnNlcnZlcnMgPSBnZXROYXRpdmVO
ZXR3b3JrT2JzZXJ2ZXJzU3luYygpOwogICAgIGZvciAoTG9uZyBuYXRpdmVPYnNlcnZlciA6IG5h
dGl2ZU9ic2VydmVycykgewogICAgICAgbmF0aXZlTm90aWZ5Q29ubmVjdGlvblR5cGVDaGFuZ2Vk
KG5hdGl2ZU9ic2VydmVyKTsKQEAgLTIwNiw3ICsyMDgsOCBAQCBwdWJsaWMgY2xhc3MgTmV0d29y
a01vbml0b3IgewogICAgIH0KICAgfQogCi0gIHByaXZhdGUgdm9pZCBub3RpZnlPYnNlcnZlcnNP
Zk5ldHdvcmtDb25uZWN0KE5ldHdvcmtJbmZvcm1hdGlvbiBuZXR3b3JrSW5mbykgeworICBwcml2
YXRlIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzT2ZOZXR3b3JrQ29ubmVjdCgKKyAgICAgIE5ldHdvcmtN
b25pdG9yQXV0b0RldGVjdC5OZXR3b3JrSW5mb3JtYXRpb24gbmV0d29ya0luZm8pIHsKICAgICBM
aXN0PExvbmc+IG5hdGl2ZU9ic2VydmVycyA9IGdldE5hdGl2ZU5ldHdvcmtPYnNlcnZlcnNTeW5j
KCk7CiAgICAgZm9yIChMb25nIG5hdGl2ZU9ic2VydmVyIDogbmF0aXZlT2JzZXJ2ZXJzKSB7CiAg
ICAgICBuYXRpdmVOb3RpZnlPZk5ldHdvcmtDb25uZWN0KG5hdGl2ZU9ic2VydmVyLCBuZXR3b3Jr
SW5mbyk7CkBAIC0yMjEsNyArMjI0LDcgQEAgcHVibGljIGNsYXNzIE5ldHdvcmtNb25pdG9yIHsK
ICAgfQogCiAgIHByaXZhdGUgdm9pZCB1cGRhdGVPYnNlcnZlckFjdGl2ZU5ldHdvcmtMaXN0KGxv
bmcgbmF0aXZlT2JzZXJ2ZXIpIHsKLSAgICBMaXN0PE5ldHdvcmtJbmZvcm1hdGlvbj4gbmV0d29y
a0luZm9MaXN0OworICAgIExpc3Q8TmV0d29ya01vbml0b3JBdXRvRGV0ZWN0Lk5ldHdvcmtJbmZv
cm1hdGlvbj4gbmV0d29ya0luZm9MaXN0OwogICAgIHN5bmNocm9uaXplZCAoYXV0b0RldGVjdExv
Y2spIHsKICAgICAgIG5ldHdvcmtJbmZvTGlzdCA9IChhdXRvRGV0ZWN0ID09IG51bGwpID8gbnVs
bCA6IGF1dG9EZXRlY3QuZ2V0QWN0aXZlTmV0d29ya0xpc3QoKTsKICAgICB9CkBAIC0yMjksNyAr
MjMyLDggQEAgcHVibGljIGNsYXNzIE5ldHdvcmtNb25pdG9yIHsKICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBOZXR3b3JrSW5mb3JtYXRpb25bXSBuZXR3b3JrSW5mb3MgPSBuZXcgTmV0d29y
a0luZm9ybWF0aW9uW25ldHdvcmtJbmZvTGlzdC5zaXplKCldOworICAgIE5ldHdvcmtNb25pdG9y
QXV0b0RldGVjdC5OZXR3b3JrSW5mb3JtYXRpb25bXSBuZXR3b3JrSW5mb3MgPQorICAgICAgICBu
ZXcgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0Lk5ldHdvcmtJbmZvcm1hdGlvbltuZXR3b3JrSW5m
b0xpc3Quc2l6ZSgpXTsKICAgICBuZXR3b3JrSW5mb3MgPSBuZXR3b3JrSW5mb0xpc3QudG9BcnJh
eShuZXR3b3JrSW5mb3MpOwogICAgIG5hdGl2ZU5vdGlmeU9mQWN0aXZlTmV0d29ya0xpc3QobmF0
aXZlT2JzZXJ2ZXIsIG5ldHdvcmtJbmZvcyk7CiAgIH0KQEAgLTI3NCwxNyArMjc4LDE4IEBAIHB1
YmxpYyBjbGFzcyBOZXR3b3JrTW9uaXRvciB7CiAKICAgLyoqIENoZWNrcyBpZiB0aGVyZSBjdXJy
ZW50bHkgaXMgY29ubmVjdGl2aXR5LiAqLwogICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNPbmxp
bmUoKSB7Ci0gICAgQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUgPSBnZXRJbnN0YW5jZSgp
LmdldEN1cnJlbnRDb25uZWN0aW9uVHlwZSgpOwotICAgIHJldHVybiBjb25uZWN0aW9uVHlwZSAh
PSBDb25uZWN0aW9uVHlwZS5DT05ORUNUSU9OX05PTkU7CisgICAgTmV0d29ya01vbml0b3JBdXRv
RGV0ZWN0LkNvbm5lY3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBlID0KKyAgICAgICAgZ2V0SW5zdGFu
Y2UoKS5nZXRDdXJyZW50Q29ubmVjdGlvblR5cGUoKTsKKyAgICByZXR1cm4gY29ubmVjdGlvblR5
cGUgIT0gTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBlLkNPTk5FQ1RJT05f
Tk9ORTsKICAgfQogCiAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlTm90aWZ5Q29ubmVjdGlv
blR5cGVDaGFuZ2VkKGxvbmcgbmF0aXZlQW5kcm9pZE5ldHdvcmtNb25pdG9yKTsKICAgcHJpdmF0
ZSBuYXRpdmUgdm9pZCBuYXRpdmVOb3RpZnlPZk5ldHdvcmtDb25uZWN0KAotICAgICAgbG9uZyBu
YXRpdmVBbmRyb2lkTmV0d29ya01vbml0b3IsIE5ldHdvcmtJbmZvcm1hdGlvbiBuZXR3b3JrSW5m
byk7CisgICAgICBsb25nIG5hdGl2ZUFuZHJvaWROZXR3b3JrTW9uaXRvciwgTmV0d29ya01vbml0
b3JBdXRvRGV0ZWN0Lk5ldHdvcmtJbmZvcm1hdGlvbiBuZXR3b3JrSW5mbyk7CiAgIHByaXZhdGUg
bmF0aXZlIHZvaWQgbmF0aXZlTm90aWZ5T2ZOZXR3b3JrRGlzY29ubmVjdCgKICAgICAgIGxvbmcg
bmF0aXZlQW5kcm9pZE5ldHdvcmtNb25pdG9yLCBsb25nIG5ldHdvcmtIYW5kbGUpOwogICBwcml2
YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZU5vdGlmeU9mQWN0aXZlTmV0d29ya0xpc3QoCi0gICAgICBs
b25nIG5hdGl2ZUFuZHJvaWROZXR3b3JrTW9uaXRvciwgTmV0d29ya0luZm9ybWF0aW9uW10gbmV0
d29ya0luZm9zKTsKKyAgICAgIGxvbmcgbmF0aXZlQW5kcm9pZE5ldHdvcmtNb25pdG9yLCBOZXR3
b3JrTW9uaXRvckF1dG9EZXRlY3QuTmV0d29ya0luZm9ybWF0aW9uW10gbmV0d29ya0luZm9zKTsK
IAogICAvLyBGb3IgdGVzdGluZyBvbmx5LgogICBATnVsbGFibGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcv
d2VicnRjL05ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTmV0d29y
a01vbml0b3JBdXRvRGV0ZWN0LmphdmEKaW5kZXggM2Q3NGY1ZmQ3YzVkYTRkODJjOTRjMmU5Y2Rl
Y2RmNGEwMWI5YWNkMS4uMTc5ZjgzZDM3NjFiZTFiYzUwOGIyNmRkYzNkMWJlNmZjNzdmZDNmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LmphdmEKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
YXBpL29yZy93ZWJydGMvTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LmphdmEKQEAgLTI5Nyw3ICsy
OTcsOCBAQCBwdWJsaWMgY2xhc3MgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0IGV4dGVuZHMgQnJv
YWRjYXN0UmVjZWl2ZXIgewogICAgICAgICAgIC8vIGh0dHBzOi8vYW5kcm9pZC5nb29nbGVzb3Vy
Y2UuY29tL3BsYXRmb3JtL2ZyYW1ld29ya3MvYmFzZS8rL2Q2YTc5ODBkCiAgICAgICAgICAgTmV0
d29ya0luZm8gdW5kZXJseWluZ0FjdGl2ZU5ldHdvcmtJbmZvID0gY29ubmVjdGl2aXR5TWFuYWdl
ci5nZXRBY3RpdmVOZXR3b3JrSW5mbygpOwogICAgICAgICAgIC8vIFdlIHVzZSB0aGUgTmV0d29y
a0luZm8gb2YgdGhlIHVuZGVybHlpbmcgbmV0d29yayBpZiBpdCBpcyBub3Qgb2YgVFlQRV9WUE4g
aXRzZWxmLgotICAgICAgICAgIGlmICh1bmRlcmx5aW5nQWN0aXZlTmV0d29ya0luZm8uZ2V0VHlw
ZSgpICE9IENvbm5lY3Rpdml0eU1hbmFnZXIuVFlQRV9WUE4pIHsKKyAgICAgICAgICBpZiAodW5k
ZXJseWluZ0FjdGl2ZU5ldHdvcmtJbmZvICE9IG51bGwKKyAgICAgICAgICAgICAgJiYgdW5kZXJs
eWluZ0FjdGl2ZU5ldHdvcmtJbmZvLmdldFR5cGUoKSAhPSBDb25uZWN0aXZpdHlNYW5hZ2VyLlRZ
UEVfVlBOKSB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IE5ldHdvcmtTdGF0ZShuZXR3b3JrSW5m
by5pc0Nvbm5lY3RlZCgpLCBDb25uZWN0aXZpdHlNYW5hZ2VyLlRZUEVfVlBOLCAtMSwKICAgICAg
ICAgICAgICAgICB1bmRlcmx5aW5nQWN0aXZlTmV0d29ya0luZm8uZ2V0VHlwZSgpLCB1bmRlcmx5
aW5nQWN0aXZlTmV0d29ya0luZm8uZ2V0U3VidHlwZSgpKTsKICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9hcGkvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvbi5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvUGVlckNv
bm5lY3Rpb24uamF2YQppbmRleCA4NGQ0OWViYjhhN2RjZDQxMmQ0MDk2YjljMmNiMGExNzJkMzli
MmNhLi40N2M1NGVlNTQ5YzRmOThhODYwZTM0MDEzMDY3ZGZiZThkOTY4YjA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9h
cGkvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvbi5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1BlZXJD
b25uZWN0aW9uLmphdmEKQEAgLTE0LDYgKzE0LDkgQEAgaW1wb3J0IGphdmEudXRpbC5BcnJheUxp
c3Q7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5MaXN0
OwogaW1wb3J0IGphdmF4LmFubm90YXRpb24uTnVsbGFibGU7CitpbXBvcnQgb3JnLndlYnJ0Yy5E
YXRhQ2hhbm5lbDsKK2ltcG9ydCBvcmcud2VicnRjLk1lZGlhU3RyZWFtVHJhY2s7CitpbXBvcnQg
b3JnLndlYnJ0Yy5SdHBUcmFuc2NlaXZlcjsKIAogLyoqCiAgKiBKYXZhLWxhbmQgdmVyc2lvbiBv
ZiB0aGUgUGVlckNvbm5lY3Rpb24gQVBJczsgd3JhcHMgdGhlIEMrKyBBUEkKQEAgLTUwLDYgKzUz
LDIxIEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbiB7CiAgICAgfQogICB9CiAKKyAgLyoq
IFRyYWNrcyBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSAqLwor
ICBwdWJsaWMgZW51bSBQZWVyQ29ubmVjdGlvblN0YXRlIHsKKyAgICBORVcsCisgICAgQ09OTkVD
VElORywKKyAgICBDT05ORUNURUQsCisgICAgRElTQ09OTkVDVEVELAorICAgIEZBSUxFRCwKKyAg
ICBDTE9TRUQ7CisKKyAgICBAQ2FsbGVkQnlOYXRpdmUoIlBlZXJDb25uZWN0aW9uU3RhdGUiKQor
ICAgIHN0YXRpYyBQZWVyQ29ubmVjdGlvblN0YXRlIGZyb21OYXRpdmVJbmRleChpbnQgbmF0aXZl
SW5kZXgpIHsKKyAgICAgIHJldHVybiB2YWx1ZXMoKVtuYXRpdmVJbmRleF07CisgICAgfQorICB9
CisKICAgLyoqIFRyYWNrcyBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6VGxzQ2VydFBvbGljeSAq
LwogICBwdWJsaWMgZW51bSBUbHNDZXJ0UG9saWN5IHsKICAgICBUTFNfQ0VSVF9QT0xJQ1lfU0VD
VVJFLApAQCAtNzksNiArOTcsMTAgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uIHsKICAg
ICAvKiogVHJpZ2dlcmVkIHdoZW4gdGhlIEljZUNvbm5lY3Rpb25TdGF0ZSBjaGFuZ2VzLiAqLwog
ICAgIEBDYWxsZWRCeU5hdGl2ZSgiT2JzZXJ2ZXIiKSB2b2lkIG9uSWNlQ29ubmVjdGlvbkNoYW5n
ZShJY2VDb25uZWN0aW9uU3RhdGUgbmV3U3RhdGUpOwogCisgICAgLyoqIFRyaWdnZXJlZCB3aGVu
IHRoZSBQZWVyQ29ubmVjdGlvblN0YXRlIGNoYW5nZXMuICovCisgICAgQENhbGxlZEJ5TmF0aXZl
KCJPYnNlcnZlciIpCisgICAgZGVmYXVsdCB2b2lkIG9uQ29ubmVjdGlvbkNoYW5nZShQZWVyQ29u
bmVjdGlvblN0YXRlIG5ld1N0YXRlKSB7fQorCiAgICAgLyoqIFRyaWdnZXJlZCB3aGVuIHRoZSBJ
Q0UgY29ubmVjdGlvbiByZWNlaXZpbmcgc3RhdHVzIGNoYW5nZXMuICovCiAgICAgQENhbGxlZEJ5
TmF0aXZlKCJPYnNlcnZlciIpIHZvaWQgb25JY2VDb25uZWN0aW9uUmVjZWl2aW5nQ2hhbmdlKGJv
b2xlYW4gcmVjZWl2aW5nKTsKIApAQCAtMzg1LDYgKzQwNyw3IEBAIHB1YmxpYyBjbGFzcyBQZWVy
Q29ubmVjdGlvbiB7CiAgICAgcHVibGljIEljZVRyYW5zcG9ydHNUeXBlIGljZVRyYW5zcG9ydHNU
eXBlOwogICAgIHB1YmxpYyBMaXN0PEljZVNlcnZlcj4gaWNlU2VydmVyczsKICAgICBwdWJsaWMg
QnVuZGxlUG9saWN5IGJ1bmRsZVBvbGljeTsKKyAgICBATnVsbGFibGUgcHVibGljIFJ0Y0NlcnRp
ZmljYXRlUGVtIGNlcnRpZmljYXRlOwogICAgIHB1YmxpYyBSdGNwTXV4UG9saWN5IHJ0Y3BNdXhQ
b2xpY3k7CiAgICAgcHVibGljIFRjcENhbmRpZGF0ZVBvbGljeSB0Y3BDYW5kaWRhdGVQb2xpY3k7
CiAgICAgcHVibGljIENhbmRpZGF0ZU5ldHdvcmtQb2xpY3kgY2FuZGlkYXRlTmV0d29ya1BvbGlj
eTsKQEAgLTQ2MSw2ICs0ODQsMjUgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uIHsKICAg
ICAvLyBldmVyeSBvZmZlci9hbnN3ZXIgbmVnb3RpYXRpb24uVGhpcyBpcyBvbmx5IGludGVuZGVk
IHRvIGJlIGEgd29ya2Fyb3VuZCBmb3IgY3JidWcuY29tLzgzNTk1OAogICAgIHB1YmxpYyBib29s
ZWFuIGFjdGl2ZVJlc2V0U3J0cFBhcmFtczsKIAorICAgIC8qCisgICAgICogRXhwZXJpbWVudGFs
IGZsYWcgdGhhdCBlbmFibGVzIGEgdXNlIG9mIG1lZGlhIHRyYW5zcG9ydC4gSWYgdGhpcyBpcyB0
cnVlLCB0aGUgbWVkaWEgdHJhbnNwb3J0CisgICAgICogZmFjdG9yeSBNVVNUIGJlIHByb3ZpZGVk
IHRvIHRoZSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkuCisgICAgICovCisgICAgcHVibGljIGJvb2xl
YW4gdXNlTWVkaWFUcmFuc3BvcnQ7CisKKyAgICAvKgorICAgICAqIEV4cGVyaW1lbnRhbCBmbGFn
IHRoYXQgZW5hYmxlcyBhIHVzZSBvZiBtZWRpYSB0cmFuc3BvcnQgZm9yIGRhdGEgY2hhbm5lbHMu
IElmIHRoaXMgaXMgdHJ1ZSwKKyAgICAgKiB0aGUgbWVkaWEgdHJhbnNwb3J0IGZhY3RvcnkgTVVT
VCBiZSBwcm92aWRlZCB0byB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5LgorICAgICAqLworICAg
IHB1YmxpYyBib29sZWFuIHVzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzOworCisgICAg
LyoqCisgICAgICogRGVmaW5lcyBhZHZhbmNlZCBvcHRpb25hbCBjcnlwdG9ncmFwaGljIHNldHRp
bmdzIHJlbGF0ZWQgdG8gU1JUUCBhbmQKKyAgICAgKiBmcmFtZSBlbmNyeXB0aW9uIGZvciBuYXRp
dmUgV2ViUlRDLiBTZXR0aW5nIHRoaXMgd2lsbCBvdmVyd3JpdGUgYW55CisgICAgICogb3B0aW9u
cyBzZXQgdGhyb3VnaCB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5ICh3aGljaCBpcyBkZXByZWNh
dGVkKS4KKyAgICAgKi8KKyAgICBATnVsbGFibGUgcHVibGljIENyeXB0b09wdGlvbnMgY3J5cHRv
T3B0aW9uczsKKwogICAgIC8vIFRPRE8oZGVhZGJlZWYpOiBJbnN0ZWFkIG9mIGR1cGxpY2F0aW5n
IHRoZSBkZWZhdWx0cyBoZXJlLCB3ZSBzaG91bGQgZG8KICAgICAvLyBzb21ldGhpbmcgdG8gcGlj
ayB1cCB0aGUgZGVmYXVsdHMgZnJvbSBDKysuIFRoZSBPYmplY3RpdmUtQyBlcXVpdmFsZW50CiAg
ICAgLy8gb2YgUlRDQ29uZmlndXJhdGlvbiBkb2VzIHRoYXQuCkBAIC01MDAsNiArNTQyLDkgQEAg
cHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uIHsKICAgICAgIG5ldHdvcmtQcmVmZXJlbmNlID0g
QWRhcHRlclR5cGUuVU5LTk9XTjsKICAgICAgIHNkcFNlbWFudGljcyA9IFNkcFNlbWFudGljcy5Q
TEFOX0I7CiAgICAgICBhY3RpdmVSZXNldFNydHBQYXJhbXMgPSBmYWxzZTsKKyAgICAgIHVzZU1l
ZGlhVHJhbnNwb3J0ID0gZmFsc2U7CisgICAgICB1c2VNZWRpYVRyYW5zcG9ydEZvckRhdGFDaGFu
bmVscyA9IGZhbHNlOworICAgICAgY3J5cHRvT3B0aW9ucyA9IG51bGw7CiAgICAgfQogCiAgICAg
QENhbGxlZEJ5TmF0aXZlKCJSVENDb25maWd1cmF0aW9uIikKQEAgLTUxNyw2ICs1NjIsMTIgQEAg
cHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uIHsKICAgICAgIHJldHVybiBidW5kbGVQb2xpY3k7
CiAgICAgfQogCisgICAgQE51bGxhYmxlCisgICAgQENhbGxlZEJ5TmF0aXZlKCJSVENDb25maWd1
cmF0aW9uIikKKyAgICBSdGNDZXJ0aWZpY2F0ZVBlbSBnZXRDZXJ0aWZpY2F0ZSgpIHsKKyAgICAg
IHJldHVybiBjZXJ0aWZpY2F0ZTsKKyAgICB9CisKICAgICBAQ2FsbGVkQnlOYXRpdmUoIlJUQ0Nv
bmZpZ3VyYXRpb24iKQogICAgIFJ0Y3BNdXhQb2xpY3kgZ2V0UnRjcE11eFBvbGljeSgpIHsKICAg
ICAgIHJldHVybiBydGNwTXV4UG9saWN5OwpAQCAtNjkyLDYgKzc0MywyMiBAQCBwdWJsaWMgY2xh
c3MgUGVlckNvbm5lY3Rpb24gewogICAgIGJvb2xlYW4gZ2V0QWN0aXZlUmVzZXRTcnRwUGFyYW1z
KCkgewogICAgICAgcmV0dXJuIGFjdGl2ZVJlc2V0U3J0cFBhcmFtczsKICAgICB9CisKKyAgICBA
Q2FsbGVkQnlOYXRpdmUoIlJUQ0NvbmZpZ3VyYXRpb24iKQorICAgIGJvb2xlYW4gZ2V0VXNlTWVk
aWFUcmFuc3BvcnQoKSB7CisgICAgICByZXR1cm4gdXNlTWVkaWFUcmFuc3BvcnQ7CisgICAgfQor
CisgICAgQENhbGxlZEJ5TmF0aXZlKCJSVENDb25maWd1cmF0aW9uIikKKyAgICBib29sZWFuIGdl
dFVzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzKCkgeworICAgICAgcmV0dXJuIHVzZU1l
ZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzOworICAgIH0KKworICAgIEBOdWxsYWJsZQorICAg
IEBDYWxsZWRCeU5hdGl2ZSgiUlRDQ29uZmlndXJhdGlvbiIpCisgICAgQ3J5cHRvT3B0aW9ucyBn
ZXRDcnlwdG9PcHRpb25zKCkgeworICAgICAgcmV0dXJuIGNyeXB0b09wdGlvbnM7CisgICAgfQog
ICB9OwogCiAgIHByaXZhdGUgZmluYWwgTGlzdDxNZWRpYVN0cmVhbT4gbG9jYWxTdHJlYW1zID0g
bmV3IEFycmF5TGlzdDw+KCk7CkBAIC03MjEsNiArNzg4LDEwIEBAIHB1YmxpYyBjbGFzcyBQZWVy
Q29ubmVjdGlvbiB7CiAgICAgcmV0dXJuIG5hdGl2ZUdldFJlbW90ZURlc2NyaXB0aW9uKCk7CiAg
IH0KIAorICBwdWJsaWMgUnRjQ2VydGlmaWNhdGVQZW0gZ2V0Q2VydGlmaWNhdGUoKSB7CisgICAg
cmV0dXJuIG5hdGl2ZUdldENlcnRpZmljYXRlKCk7CisgIH0KKwogICBwdWJsaWMgRGF0YUNoYW5u
ZWwgY3JlYXRlRGF0YUNoYW5uZWwoU3RyaW5nIGxhYmVsLCBEYXRhQ2hhbm5lbC5Jbml0IGluaXQp
IHsKICAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRGF0YUNoYW5uZWwobGFiZWwsIGluaXQpOwogICB9
CkBAIC0xMDQ0LDYgKzExMTUsMTAgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uIHsKICAg
ICByZXR1cm4gbmF0aXZlSWNlQ29ubmVjdGlvblN0YXRlKCk7CiAgIH0KIAorICBwdWJsaWMgUGVl
ckNvbm5lY3Rpb25TdGF0ZSBjb25uZWN0aW9uU3RhdGUoKSB7CisgICAgcmV0dXJuIG5hdGl2ZUNv
bm5lY3Rpb25TdGF0ZSgpOworICB9CisKICAgcHVibGljIEljZUdhdGhlcmluZ1N0YXRlIGljZUdh
dGhlcmluZ1N0YXRlKCkgewogICAgIHJldHVybiBuYXRpdmVJY2VHYXRoZXJpbmdTdGF0ZSgpOwog
ICB9CkBAIC0xMTA3LDYgKzExODIsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb24gewog
ICBwcml2YXRlIG5hdGl2ZSBsb25nIG5hdGl2ZUdldE5hdGl2ZVBlZXJDb25uZWN0aW9uKCk7CiAg
IHByaXZhdGUgbmF0aXZlIFNlc3Npb25EZXNjcmlwdGlvbiBuYXRpdmVHZXRMb2NhbERlc2NyaXB0
aW9uKCk7CiAgIHByaXZhdGUgbmF0aXZlIFNlc3Npb25EZXNjcmlwdGlvbiBuYXRpdmVHZXRSZW1v
dGVEZXNjcmlwdGlvbigpOworICBwcml2YXRlIG5hdGl2ZSBSdGNDZXJ0aWZpY2F0ZVBlbSBuYXRp
dmVHZXRDZXJ0aWZpY2F0ZSgpOwogICBwcml2YXRlIG5hdGl2ZSBEYXRhQ2hhbm5lbCBuYXRpdmVD
cmVhdGVEYXRhQ2hhbm5lbChTdHJpbmcgbGFiZWwsIERhdGFDaGFubmVsLkluaXQgaW5pdCk7CiAg
IHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlQ3JlYXRlT2ZmZXIoU2RwT2JzZXJ2ZXIgb2JzZXJ2
ZXIsIE1lZGlhQ29uc3RyYWludHMgY29uc3RyYWludHMpOwogICBwcml2YXRlIG5hdGl2ZSB2b2lk
IG5hdGl2ZUNyZWF0ZUFuc3dlcihTZHBPYnNlcnZlciBvYnNlcnZlciwgTWVkaWFDb25zdHJhaW50
cyBjb25zdHJhaW50cyk7CkBAIC0xMTE3LDYgKzExOTMsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNv
bm5lY3Rpb24gewogICBwcml2YXRlIG5hdGl2ZSBib29sZWFuIG5hdGl2ZVNldEJpdHJhdGUoSW50
ZWdlciBtaW4sIEludGVnZXIgY3VycmVudCwgSW50ZWdlciBtYXgpOwogICBwcml2YXRlIG5hdGl2
ZSBTaWduYWxpbmdTdGF0ZSBuYXRpdmVTaWduYWxpbmdTdGF0ZSgpOwogICBwcml2YXRlIG5hdGl2
ZSBJY2VDb25uZWN0aW9uU3RhdGUgbmF0aXZlSWNlQ29ubmVjdGlvblN0YXRlKCk7CisgIHByaXZh
dGUgbmF0aXZlIFBlZXJDb25uZWN0aW9uU3RhdGUgbmF0aXZlQ29ubmVjdGlvblN0YXRlKCk7CiAg
IHByaXZhdGUgbmF0aXZlIEljZUdhdGhlcmluZ1N0YXRlIG5hdGl2ZUljZUdhdGhlcmluZ1N0YXRl
KCk7CiAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlQ2xvc2UoKTsKICAgcHJpdmF0ZSBzdGF0
aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlUGVlckNvbm5lY3Rpb25PYnNlcnZlcihPYnNlcnZl
ciBvYnNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvbkZhY3Rv
cnkuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL2FwaS9vcmcvd2VicnRjL1BlZXJDb25uZWN0aW9uRmFjdG9yeS5qYXZhCmluZGV4IGVi
OThlOTIzZjZjYzg1NmNmODA2MGU1ZGVjNjdlOTAzYjhlYzlkZTAuLjAxOGZiNzZlODU3MGM0Mzc5
YzRmMzFhM2RhNjZlZjlmYjcyMzRiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1BlZXJDb25u
ZWN0aW9uRmFjdG9yeS5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1BlZXJDb25uZWN0aW9uRmFjdG9y
eS5qYXZhCkBAIC0xNCw2ICsxNCw3IEBAIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsK
IGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZheC5hbm5vdGF0aW9uLk51bGxhYmxl
OwogaW1wb3J0IG9yZy53ZWJydGMuTG9nZ2luZy5TZXZlcml0eTsKK2ltcG9ydCBvcmcud2VicnRj
LlBlZXJDb25uZWN0aW9uOwogaW1wb3J0IG9yZy53ZWJydGMuYXVkaW8uQXVkaW9EZXZpY2VNb2R1
bGU7CiBpbXBvcnQgb3JnLndlYnJ0Yy5hdWRpby5MZWdhY3lBdWRpb0RldmljZU1vZHVsZTsKIApA
QCAtMTIyLDggKzEyMyw2IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbkZhY3Rvcnkgewog
ICAgIHB1YmxpYyBpbnQgbmV0d29ya0lnbm9yZU1hc2s7CiAgICAgcHVibGljIGJvb2xlYW4gZGlz
YWJsZUVuY3J5cHRpb247CiAgICAgcHVibGljIGJvb2xlYW4gZGlzYWJsZU5ldHdvcmtNb25pdG9y
OwotICAgIHB1YmxpYyBib29sZWFuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7Ci0g
ICAgcHVibGljIGJvb2xlYW4gZW5hYmxlR2NtQ3J5cHRvU3VpdGVzOwogCiAgICAgQENhbGxlZEJ5
TmF0aXZlKCJPcHRpb25zIikKICAgICBpbnQgZ2V0TmV0d29ya0lnbm9yZU1hc2soKSB7CkBAIC0x
MzksMjUgKzEzOCwyMCBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKICAg
ICBib29sZWFuIGdldERpc2FibGVOZXR3b3JrTW9uaXRvcigpIHsKICAgICAgIHJldHVybiBkaXNh
YmxlTmV0d29ya01vbml0b3I7CiAgICAgfQotCi0gICAgQENhbGxlZEJ5TmF0aXZlKCJPcHRpb25z
IikKLSAgICBib29sZWFuIGdldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIoKSB7Ci0g
ICAgICByZXR1cm4gZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjsKLSAgICB9Ci0KLSAg
ICBAQ2FsbGVkQnlOYXRpdmUoIk9wdGlvbnMiKQotICAgIGJvb2xlYW4gZ2V0RW5hYmxlR2NtQ3J5
cHRvU3VpdGVzKCkgewotICAgICAgcmV0dXJuIGVuYWJsZUdjbUNyeXB0b1N1aXRlczsKLSAgICB9
CiAgIH0KIAogICBwdWJsaWMgc3RhdGljIGNsYXNzIEJ1aWxkZXIgewotICAgIHByaXZhdGUgQE51
bGxhYmxlIE9wdGlvbnMgb3B0aW9uczsKLSAgICBwcml2YXRlIEBOdWxsYWJsZSBBdWRpb0Rldmlj
ZU1vZHVsZSBhdWRpb0RldmljZU1vZHVsZSA9IG5ldyBMZWdhY3lBdWRpb0RldmljZU1vZHVsZSgp
OwotICAgIHByaXZhdGUgQE51bGxhYmxlIFZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2RlckZhY3Rv
cnk7Ci0gICAgcHJpdmF0ZSBATnVsbGFibGUgVmlkZW9EZWNvZGVyRmFjdG9yeSBkZWNvZGVyRmFj
dG9yeTsKLSAgICBwcml2YXRlIEBOdWxsYWJsZSBBdWRpb1Byb2Nlc3NpbmdGYWN0b3J5IGF1ZGlv
UHJvY2Vzc2luZ0ZhY3Rvcnk7Ci0gICAgcHJpdmF0ZSBATnVsbGFibGUgRmVjQ29udHJvbGxlckZh
Y3RvcnlGYWN0b3J5SW50ZXJmYWNlIGZlY0NvbnRyb2xsZXJGYWN0b3J5RmFjdG9yeTsKKyAgICBA
TnVsbGFibGUgcHJpdmF0ZSBPcHRpb25zIG9wdGlvbnM7CisgICAgQE51bGxhYmxlIHByaXZhdGUg
QXVkaW9EZXZpY2VNb2R1bGUgYXVkaW9EZXZpY2VNb2R1bGUgPSBuZXcgTGVnYWN5QXVkaW9EZXZp
Y2VNb2R1bGUoKTsKKyAgICBwcml2YXRlIEF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5IGF1ZGlv
RW5jb2RlckZhY3RvcnlGYWN0b3J5ID0KKyAgICAgICAgbmV3IEJ1aWx0aW5BdWRpb0VuY29kZXJG
YWN0b3J5RmFjdG9yeSgpOworICAgIHByaXZhdGUgQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3Rvcnkg
YXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkgPQorICAgICAgICBuZXcgQnVpbHRpbkF1ZGlvRGVj
b2RlckZhY3RvcnlGYWN0b3J5KCk7CisgICAgQE51bGxhYmxlIHByaXZhdGUgVmlkZW9FbmNvZGVy
RmFjdG9yeSB2aWRlb0VuY29kZXJGYWN0b3J5OworICAgIEBOdWxsYWJsZSBwcml2YXRlIFZpZGVv
RGVjb2RlckZhY3RvcnkgdmlkZW9EZWNvZGVyRmFjdG9yeTsKKyAgICBATnVsbGFibGUgcHJpdmF0
ZSBBdWRpb1Byb2Nlc3NpbmdGYWN0b3J5IGF1ZGlvUHJvY2Vzc2luZ0ZhY3Rvcnk7CisgICAgQE51
bGxhYmxlIHByaXZhdGUgRmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5SW50ZXJmYWNlIGZlY0Nv
bnRyb2xsZXJGYWN0b3J5RmFjdG9yeTsKKyAgICBATnVsbGFibGUgcHJpdmF0ZSBNZWRpYVRyYW5z
cG9ydEZhY3RvcnlGYWN0b3J5IG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3Rvcnk7CiAKICAgICBw
cml2YXRlIEJ1aWxkZXIoKSB7fQogCkBAIC0xNzEsMTMgKzE2NSwzMyBAQCBwdWJsaWMgY2xhc3Mg
UGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KIAotICAg
IHB1YmxpYyBCdWlsZGVyIHNldFZpZGVvRW5jb2RlckZhY3RvcnkoVmlkZW9FbmNvZGVyRmFjdG9y
eSBlbmNvZGVyRmFjdG9yeSkgewotICAgICAgdGhpcy5lbmNvZGVyRmFjdG9yeSA9IGVuY29kZXJG
YWN0b3J5OworICAgIHB1YmxpYyBCdWlsZGVyIHNldEF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5
KAorICAgICAgICBBdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSBhdWRpb0VuY29kZXJGYWN0b3J5
RmFjdG9yeSkgeworICAgICAgaWYgKGF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5ID09IG51bGwp
IHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAg
ICAgICJQZWVyQ29ubmVjdGlvbkZhY3RvcnkuQnVpbGRlciBkb2VzIG5vdCBhY2NlcHQgYSBudWxs
IEF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LiIpOworICAgICAgfQorICAgICAgdGhpcy5hdWRp
b0VuY29kZXJGYWN0b3J5RmFjdG9yeSA9IGF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5OworICAg
ICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIEJ1aWxkZXIgc2V0QXVkaW9EZWNv
ZGVyRmFjdG9yeUZhY3RvcnkoCisgICAgICAgIEF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5IGF1
ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5KSB7CisgICAgICBpZiAoYXVkaW9EZWNvZGVyRmFjdG9y
eUZhY3RvcnkgPT0gbnVsbCkgeworICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhj
ZXB0aW9uKAorICAgICAgICAgICAgIlBlZXJDb25uZWN0aW9uRmFjdG9yeS5CdWlsZGVyIGRvZXMg
bm90IGFjY2VwdCBhIG51bGwgQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkuIik7CisgICAgICB9
CisgICAgICB0aGlzLmF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5ID0gYXVkaW9EZWNvZGVyRmFj
dG9yeUZhY3Rvcnk7CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBwdWJsaWMgQnVp
bGRlciBzZXRWaWRlb0VuY29kZXJGYWN0b3J5KFZpZGVvRW5jb2RlckZhY3RvcnkgdmlkZW9FbmNv
ZGVyRmFjdG9yeSkgeworICAgICAgdGhpcy52aWRlb0VuY29kZXJGYWN0b3J5ID0gdmlkZW9FbmNv
ZGVyRmFjdG9yeTsKICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KIAotICAgIHB1YmxpYyBCdWls
ZGVyIHNldFZpZGVvRGVjb2RlckZhY3RvcnkoVmlkZW9EZWNvZGVyRmFjdG9yeSBkZWNvZGVyRmFj
dG9yeSkgewotICAgICAgdGhpcy5kZWNvZGVyRmFjdG9yeSA9IGRlY29kZXJGYWN0b3J5OworICAg
IHB1YmxpYyBCdWlsZGVyIHNldFZpZGVvRGVjb2RlckZhY3RvcnkoVmlkZW9EZWNvZGVyRmFjdG9y
eSB2aWRlb0RlY29kZXJGYWN0b3J5KSB7CisgICAgICB0aGlzLnZpZGVvRGVjb2RlckZhY3Rvcnkg
PSB2aWRlb0RlY29kZXJGYWN0b3J5OwogICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfQogCkBAIC0x
OTYsOSArMjEwLDE3IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbkZhY3RvcnkgewogICAg
ICAgcmV0dXJuIHRoaXM7CiAgICAgfQogCisgICAgLyoqIFNldHMgYSBNZWRpYVRyYW5zcG9ydEZh
Y3RvcnlGYWN0b3J5IGZvciBhIFBlZXJDb25uZWN0aW9uRmFjdG9yeS4gKi8KKyAgICBwdWJsaWMg
QnVpbGRlciBzZXRNZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5KAorICAgICAgICBNZWRpYVRy
YW5zcG9ydEZhY3RvcnlGYWN0b3J5IG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkpIHsKKyAg
ICAgIHRoaXMubWVkaWFUcmFuc3BvcnRGYWN0b3J5RmFjdG9yeSA9IG1lZGlhVHJhbnNwb3J0RmFj
dG9yeUZhY3Rvcnk7CisgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKICAgICBwdWJsaWMgUGVl
ckNvbm5lY3Rpb25GYWN0b3J5IGNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgpIHsKLSAgICAg
IHJldHVybiBuZXcgUGVlckNvbm5lY3Rpb25GYWN0b3J5KG9wdGlvbnMsIGF1ZGlvRGV2aWNlTW9k
dWxlLCBlbmNvZGVyRmFjdG9yeSwgZGVjb2RlckZhY3RvcnksCi0gICAgICAgICAgYXVkaW9Qcm9j
ZXNzaW5nRmFjdG9yeSwgZmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5KTsKKyAgICAgIHJldHVy
biBuZXcgUGVlckNvbm5lY3Rpb25GYWN0b3J5KG9wdGlvbnMsIGF1ZGlvRGV2aWNlTW9kdWxlLCBh
dWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSwKKyAgICAgICAgICBhdWRpb0RlY29kZXJGYWN0b3J5
RmFjdG9yeSwgdmlkZW9FbmNvZGVyRmFjdG9yeSwgdmlkZW9EZWNvZGVyRmFjdG9yeSwKKyAgICAg
ICAgICBhdWRpb1Byb2Nlc3NpbmdGYWN0b3J5LCBmZWNDb250cm9sbGVyRmFjdG9yeUZhY3Rvcnks
IG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkpOwogICAgIH0KICAgfQogCkBAIC0yNzcsMTUg
KzI5OSwyNCBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKICAgfQogCiAg
IHByaXZhdGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5KE9wdGlvbnMgb3B0aW9ucywgQE51bGxhYmxl
IEF1ZGlvRGV2aWNlTW9kdWxlIGF1ZGlvRGV2aWNlTW9kdWxlLAotICAgICAgQE51bGxhYmxlIFZp
ZGVvRW5jb2RlckZhY3RvcnkgZW5jb2RlckZhY3RvcnksIEBOdWxsYWJsZSBWaWRlb0RlY29kZXJG
YWN0b3J5IGRlY29kZXJGYWN0b3J5LAorICAgICAgQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3Rvcnkg
YXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnksCisgICAgICBBdWRpb0RlY29kZXJGYWN0b3J5RmFj
dG9yeSBhdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeSwKKyAgICAgIEBOdWxsYWJsZSBWaWRlb0Vu
Y29kZXJGYWN0b3J5IHZpZGVvRW5jb2RlckZhY3RvcnksCisgICAgICBATnVsbGFibGUgVmlkZW9E
ZWNvZGVyRmFjdG9yeSB2aWRlb0RlY29kZXJGYWN0b3J5LAogICAgICAgQE51bGxhYmxlIEF1ZGlv
UHJvY2Vzc2luZ0ZhY3RvcnkgYXVkaW9Qcm9jZXNzaW5nRmFjdG9yeSwKLSAgICAgIEBOdWxsYWJs
ZSBGZWNDb250cm9sbGVyRmFjdG9yeUZhY3RvcnlJbnRlcmZhY2UgZmVjQ29udHJvbGxlckZhY3Rv
cnlGYWN0b3J5KSB7CisgICAgICBATnVsbGFibGUgRmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5
SW50ZXJmYWNlIGZlY0NvbnRyb2xsZXJGYWN0b3J5RmFjdG9yeSwKKyAgICAgIEBOdWxsYWJsZSBN
ZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5IG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3Rvcnkp
IHsKICAgICBjaGVja0luaXRpYWxpemVIYXNCZWVuQ2FsbGVkKCk7CiAgICAgbmF0aXZlRmFjdG9y
eSA9IG5hdGl2ZUNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeShDb250ZXh0VXRpbHMuZ2V0QXBw
bGljYXRpb25Db250ZXh0KCksIG9wdGlvbnMsCiAgICAgICAgIGF1ZGlvRGV2aWNlTW9kdWxlID09
IG51bGwgPyAwIDogYXVkaW9EZXZpY2VNb2R1bGUuZ2V0TmF0aXZlQXVkaW9EZXZpY2VNb2R1bGVQ
b2ludGVyKCksCi0gICAgICAgIGVuY29kZXJGYWN0b3J5LCBkZWNvZGVyRmFjdG9yeSwKKyAgICAg
ICAgYXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkuY3JlYXRlTmF0aXZlQXVkaW9FbmNvZGVyRmFj
dG9yeSgpLAorICAgICAgICBhdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeS5jcmVhdGVOYXRpdmVB
dWRpb0RlY29kZXJGYWN0b3J5KCksIHZpZGVvRW5jb2RlckZhY3RvcnksCisgICAgICAgIHZpZGVv
RGVjb2RlckZhY3RvcnksCiAgICAgICAgIGF1ZGlvUHJvY2Vzc2luZ0ZhY3RvcnkgPT0gbnVsbCA/
IDAgOiBhdWRpb1Byb2Nlc3NpbmdGYWN0b3J5LmNyZWF0ZU5hdGl2ZSgpLAotICAgICAgICBmZWND
b250cm9sbGVyRmFjdG9yeUZhY3RvcnkgPT0gbnVsbCA/IDAgOiBmZWNDb250cm9sbGVyRmFjdG9y
eUZhY3RvcnkuY3JlYXRlTmF0aXZlKCkpOworICAgICAgICBmZWNDb250cm9sbGVyRmFjdG9yeUZh
Y3RvcnkgPT0gbnVsbCA/IDAgOiBmZWNDb250cm9sbGVyRmFjdG9yeUZhY3RvcnkuY3JlYXRlTmF0
aXZlKCksCisgICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkgPT0gbnVsbAorICAg
ICAgICAgICAgPyAwCisgICAgICAgICAgICA6IG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3Rvcnku
Y3JlYXRlTmF0aXZlTWVkaWFUcmFuc3BvcnRGYWN0b3J5KCkpOwogICAgIGlmIChuYXRpdmVGYWN0
b3J5ID09IDApIHsKICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJGYWlsZWQgdG8g
aW5pdGlhbGl6ZSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkhIik7CiAgICAgfQpAQCAtMzY5LDkgKzQw
MCwyNSBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKICAgICByZXR1cm4g
bmV3IE1lZGlhU3RyZWFtKG5hdGl2ZUNyZWF0ZUxvY2FsTWVkaWFTdHJlYW0obmF0aXZlRmFjdG9y
eSwgbGFiZWwpKTsKICAgfQogCi0gIHB1YmxpYyBWaWRlb1NvdXJjZSBjcmVhdGVWaWRlb1NvdXJj
ZShib29sZWFuIGlzU2NyZWVuY2FzdCkgeworICAvKioKKyAgICogQ3JlYXRlIHZpZGVvIHNvdXJj
ZSB3aXRoIGdpdmVuIHBhcmFtZXRlcnMuIElmIGFsaWduVGltZXN0YW1wcyBpcyBmYWxzZSwgdGhl
IGNhbGxlciBpcworICAgKiByZXNwb25zaWJsZSBmb3IgYWxpZ25pbmcgdGhlIGZyYW1lIHRpbWVz
dGFtcHMgdG8gcnRjOjpUaW1lTmFub3MoKS4gVGhpcyBjYW4gYmUgdXNlZCB0byBhY2hpZXZlCisg
ICAqIGhpZ2hlciBhY2N1cmFjeSBpZiB0aGVyZSBpcyBhIGJpZyBkZWxheSBiZXR3ZWVuIGZyYW1l
IGNyZWF0aW9uIGFuZCBmcmFtZXMgYmVpbmcgZGVsaXZlcmVkIHRvCisgICAqIHRoZSByZXR1cm5l
ZCB2aWRlbyBzb3VyY2UuIElmIGFsaWduVGltZXN0YW1wcyBpcyB0cnVlLCB0aW1lc3RhbXBzIHdp
bGwgYmUgYWxpZ25lZCB0bworICAgKiBydGM6OlRpbWVOYW5vcygpIHdoZW4gdGhleSBhcnJpdmUg
dG8gdGhlIHJldHVybmVkIHZpZGVvIHNvdXJjZS4KKyAgICovCisgIHB1YmxpYyBWaWRlb1NvdXJj
ZSBjcmVhdGVWaWRlb1NvdXJjZShib29sZWFuIGlzU2NyZWVuY2FzdCwgYm9vbGVhbiBhbGlnblRp
bWVzdGFtcHMpIHsKICAgICBjaGVja1BlZXJDb25uZWN0aW9uRmFjdG9yeUV4aXN0cygpOwotICAg
IHJldHVybiBuZXcgVmlkZW9Tb3VyY2UobmF0aXZlQ3JlYXRlVmlkZW9Tb3VyY2UobmF0aXZlRmFj
dG9yeSwgaXNTY3JlZW5jYXN0KSk7CisgICAgcmV0dXJuIG5ldyBWaWRlb1NvdXJjZShuYXRpdmVD
cmVhdGVWaWRlb1NvdXJjZShuYXRpdmVGYWN0b3J5LCBpc1NjcmVlbmNhc3QsIGFsaWduVGltZXN0
YW1wcykpOworICB9CisKKyAgLyoqCisgICAqIFNhbWUgYXMgYWJvdmUgd2l0aCBhbGlnblRpbWVz
dGFtcHMgc2V0IHRvIHRydWUuCisgICAqCisgICAqIEBzZWUgI2NyZWF0ZVZpZGVvU291cmNlKGJv
b2xlYW4sIGJvb2xlYW4pCisgICAqLworICBwdWJsaWMgVmlkZW9Tb3VyY2UgY3JlYXRlVmlkZW9T
b3VyY2UoYm9vbGVhbiBpc1NjcmVlbmNhc3QpIHsKKyAgICByZXR1cm4gY3JlYXRlVmlkZW9Tb3Vy
Y2UoaXNTY3JlZW5jYXN0LCAvKiBhbGlnblRpbWVzdGFtcHM9ICovIHRydWUpOwogICB9CiAKICAg
cHVibGljIFZpZGVvVHJhY2sgY3JlYXRlVmlkZW9UcmFjayhTdHJpbmcgaWQsIFZpZGVvU291cmNl
IHNvdXJjZSkgewpAQCAtNDg2LDE1ICs1MzMsMTggQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0
aW9uRmFjdG9yeSB7CiAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZVNodXRkb3du
SW50ZXJuYWxUcmFjZXIoKTsKICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGJvb2xlYW4gbmF0aXZl
U3RhcnRJbnRlcm5hbFRyYWNpbmdDYXB0dXJlKFN0cmluZyB0cmFjaW5nRmlsZW5hbWUpOwogICBw
cml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVTdG9wSW50ZXJuYWxUcmFjaW5nQ2FwdHVy
ZSgpOworCiAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZVBlZXJDb25u
ZWN0aW9uRmFjdG9yeShDb250ZXh0IGNvbnRleHQsIE9wdGlvbnMgb3B0aW9ucywKLSAgICAgIGxv
bmcgbmF0aXZlQXVkaW9EZXZpY2VNb2R1bGUsIFZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2RlckZh
Y3RvcnksCi0gICAgICBWaWRlb0RlY29kZXJGYWN0b3J5IGRlY29kZXJGYWN0b3J5LCBsb25nIG5h
dGl2ZUF1ZGlvUHJvY2Vzc29yLAotICAgICAgbG9uZyBuYXRpdmVGZWNDb250cm9sbGVyRmFjdG9y
eSk7CisgICAgICBsb25nIG5hdGl2ZUF1ZGlvRGV2aWNlTW9kdWxlLCBsb25nIGF1ZGlvRW5jb2Rl
ckZhY3RvcnksIGxvbmcgYXVkaW9EZWNvZGVyRmFjdG9yeSwKKyAgICAgIFZpZGVvRW5jb2RlckZh
Y3RvcnkgZW5jb2RlckZhY3RvcnksIFZpZGVvRGVjb2RlckZhY3RvcnkgZGVjb2RlckZhY3Rvcnks
CisgICAgICBsb25nIG5hdGl2ZUF1ZGlvUHJvY2Vzc29yLCBsb25nIG5hdGl2ZUZlY0NvbnRyb2xs
ZXJGYWN0b3J5LCBsb25nIG1lZGlhVHJhbnNwb3J0RmFjdG9yeSk7CisKICAgcHJpdmF0ZSBzdGF0
aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlUGVlckNvbm5lY3Rpb24obG9uZyBmYWN0b3J5LAog
ICAgICAgUGVlckNvbm5lY3Rpb24uUlRDQ29uZmlndXJhdGlvbiBydGNDb25maWcsIE1lZGlhQ29u
c3RyYWludHMgY29uc3RyYWludHMsIGxvbmcgbmF0aXZlT2JzZXJ2ZXIsCiAgICAgICBTU0xDZXJ0
aWZpY2F0ZVZlcmlmaWVyIHNzbENlcnRpZmljYXRlVmVyaWZpZXIpOwogICBwcml2YXRlIHN0YXRp
YyBuYXRpdmUgbG9uZyBuYXRpdmVDcmVhdGVMb2NhbE1lZGlhU3RyZWFtKGxvbmcgZmFjdG9yeSwg
U3RyaW5nIGxhYmVsKTsKLSAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRl
VmlkZW9Tb3VyY2UobG9uZyBmYWN0b3J5LCBib29sZWFuIGlzX3NjcmVlbmNhc3QpOworICBwcml2
YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVDcmVhdGVWaWRlb1NvdXJjZSgKKyAgICAgIGxv
bmcgZmFjdG9yeSwgYm9vbGVhbiBpc19zY3JlZW5jYXN0LCBib29sZWFuIGFsaWduVGltZXN0YW1w
cyk7CiAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZVZpZGVvVHJhY2so
CiAgICAgICBsb25nIGZhY3RvcnksIFN0cmluZyBpZCwgbG9uZyBuYXRpdmVWaWRlb1NvdXJjZSk7
CiAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUF1ZGlvU291cmNlKGxv
bmcgZmFjdG9yeSwgTWVkaWFDb25zdHJhaW50cyBjb25zdHJhaW50cyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkv
b3JnL3dlYnJ0Yy9SdGNDZXJ0aWZpY2F0ZVBlbS5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvUnRjQ2VydGlm
aWNhdGVQZW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDcwMTM1YjNlMTJmMjdlZjc1MzU5NmI0NWY5Y2U5
ZGRmOTQxNWYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvUnRjQ2VydGlmaWNhdGVQ
ZW0uamF2YQpAQCAtMCwwICsxLDc1IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9y
Zy53ZWJydGM7CisKK2ltcG9ydCBvcmcud2VicnRjLlBlZXJDb25uZWN0aW9uOworCisvKioKKyAq
IEVhc2lseSBzdG9yYWJsZS9zZXJpYWxpemFibGUgdmVyc2lvbiBvZiBhIG5hdGl2ZSBDKysgUlRD
Q2VydGlmaWNhdGVQRU0uCisgKi8KK3B1YmxpYyBjbGFzcyBSdGNDZXJ0aWZpY2F0ZVBlbSB7Cisg
IC8qKiBQRU0gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcml2YXRlIGtleS4gKi8KKyAg
cHVibGljIGZpbmFsIFN0cmluZyBwcml2YXRlS2V5OworICAvKiogUEVNIHN0cmluZyByZXByZXNl
bnRhdGlvbiBvZiB0aGUgY2VydGlmaWNhdGUuICovCisgIHB1YmxpYyBmaW5hbCBTdHJpbmcgY2Vy
dGlmaWNhdGU7CisgIC8qKiBEZWZhdWx0IGV4cGlyYXRpb24gdGltZSBvZiAzMCBkYXlzLiAqLwor
ICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIERFRkFVTFRfRVhQSVJZID0gNjAgKiA2MCAqIDI0
ICogMzA7CisKKyAgLyoqIEluc3RhbnRpYXRlIGFuIFJ0Y0NlcnRpZmljYXRlUGVtIG9iamVjdCBm
cm9tIHN0b3JlZCBzdHJpbmdzLiAqLworICBAQ2FsbGVkQnlOYXRpdmUKKyAgcHVibGljIFJ0Y0Nl
cnRpZmljYXRlUGVtKFN0cmluZyBwcml2YXRlS2V5LCBTdHJpbmcgY2VydGlmaWNhdGUpIHsKKyAg
ICB0aGlzLnByaXZhdGVLZXkgPSBwcml2YXRlS2V5OworICAgIHRoaXMuY2VydGlmaWNhdGUgPSBj
ZXJ0aWZpY2F0ZTsKKyAgfQorCisgIEBDYWxsZWRCeU5hdGl2ZQorICBTdHJpbmcgZ2V0UHJpdmF0
ZUtleSgpIHsKKyAgICByZXR1cm4gcHJpdmF0ZUtleTsKKyAgfQorCisgIEBDYWxsZWRCeU5hdGl2
ZQorICBTdHJpbmcgZ2V0Q2VydGlmaWNhdGUoKSB7CisgICAgcmV0dXJuIGNlcnRpZmljYXRlOwor
ICB9CisKKyAgLyoqCisgICAqIEdlbmVyYXRlIGEgbmV3IFJ0Y0NlcnRpZmljYXRlUGVtIHdpdGgg
dGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YgS2V5VHlwZSA9IEVDRFNBIGFuZAorICAgKiBleHBpcmVz
ID0gMzAgZGF5cy4KKyAgICovCisgIHB1YmxpYyBzdGF0aWMgUnRjQ2VydGlmaWNhdGVQZW0gZ2Vu
ZXJhdGVDZXJ0aWZpY2F0ZSgpIHsKKyAgICByZXR1cm4gbmF0aXZlR2VuZXJhdGVDZXJ0aWZpY2F0
ZShQZWVyQ29ubmVjdGlvbi5LZXlUeXBlLkVDRFNBLCBERUZBVUxUX0VYUElSWSk7CisgIH0KKwor
ICAvKioKKyAgICogR2VuZXJhdGUgYSBuZXcgUnRjQ2VydGlmaWNhdGVQZW0gd2l0aCBhIGN1c3Rv
bSBLZXlUeXBlIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5nIG9mCisgICAqIGV4cGlyZXMgPSAzMCBk
YXlzLgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBSdGNDZXJ0aWZpY2F0ZVBlbSBnZW5lcmF0ZUNl
cnRpZmljYXRlKFBlZXJDb25uZWN0aW9uLktleVR5cGUga2V5VHlwZSkgeworICAgIHJldHVybiBu
YXRpdmVHZW5lcmF0ZUNlcnRpZmljYXRlKGtleVR5cGUsIERFRkFVTFRfRVhQSVJZKTsKKyAgfQor
CisgIC8qKgorICAgKiBHZW5lcmF0ZSBhIG5ldyBSdGNDZXJ0aWZpY2F0ZVBlbSB3aXRoIGEgY3Vz
dG9tIGV4cGlyZXMgYW5kIHRoZSBkZWZhdWx0IHNldHRpbmcgb2YKKyAgICogS2V5VHlwZSA9IEVD
RFNBLgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBSdGNDZXJ0aWZpY2F0ZVBlbSBnZW5lcmF0ZUNl
cnRpZmljYXRlKGxvbmcgZXhwaXJlcykgeworICAgIHJldHVybiBuYXRpdmVHZW5lcmF0ZUNlcnRp
ZmljYXRlKFBlZXJDb25uZWN0aW9uLktleVR5cGUuRUNEU0EsIGV4cGlyZXMpOworICB9CisKKyAg
LyoqIEdlbmVyYXRlIGEgbmV3IFJ0Y0NlcnRpZmljYXRlUGVtIHdpdGggYSBjdXN0b20gS2V5VHlw
ZSBhbmQgYSBjdXN0b20gZXhwaXJlcy4gKi8KKyAgcHVibGljIHN0YXRpYyBSdGNDZXJ0aWZpY2F0
ZVBlbSBnZW5lcmF0ZUNlcnRpZmljYXRlKAorICAgICAgUGVlckNvbm5lY3Rpb24uS2V5VHlwZSBr
ZXlUeXBlLCBsb25nIGV4cGlyZXMpIHsKKyAgICByZXR1cm4gbmF0aXZlR2VuZXJhdGVDZXJ0aWZp
Y2F0ZShrZXlUeXBlLCBleHBpcmVzKTsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBS
dGNDZXJ0aWZpY2F0ZVBlbSBuYXRpdmVHZW5lcmF0ZUNlcnRpZmljYXRlKAorICAgICAgUGVlckNv
bm5lY3Rpb24uS2V5VHlwZSBrZXlUeXBlLCBsb25nIGV4cGlyZXMpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBp
L29yZy93ZWJydGMvUnRwVHJhbnNjZWl2ZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1J0cFRyYW5zY2Vp
dmVyLmphdmEKaW5kZXggYTRhNWFhMDU0MDU4MWM2MTFiMDE3YWFlZGY2OWJhMDU0MmNkMGZmZi4u
N2Y4NzVlNmM4ZWFkNDZkMjgxYzMxMzFlOTZjNzJiYTU1NDkyNzhlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29y
Zy93ZWJydGMvUnRwVHJhbnNjZWl2ZXIuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9SdHBUcmFuc2Nl
aXZlci5qYXZhCkBAIC0xMyw2ICsxMyw3IEBAIHBhY2thZ2Ugb3JnLndlYnJ0YzsKIGltcG9ydCBq
YXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9y
dCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBvcmcud2VicnRjLk1lZGlhU3RyZWFtVHJhY2s7CiAK
IC8qKgogICogSmF2YSB3cmFwcGVyIGZvciBhIEMrKyBSdHBUcmFuc2NlaXZlckludGVyZmFjZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1NvZnR3YXJlVmlkZW9EZWNvZGVyRmFjdG9yeS5qYXZh
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
YXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0RlY29kZXJGYWN0b3J5LmphdmEKaW5kZXggODZk
ZmI3YTJjNmYyMTFlY2E0MWZiYzNhOWM0MWE2M2VhMjAwNzMzMy4uZjQyMWYxNmIxYTFmOGI5N2Jm
ZjA3ZTNiOWM3MzgwYTZiOWNlOTFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU29mdHdhcmVW
aWRlb0RlY29kZXJGYWN0b3J5LmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0Rl
Y29kZXJGYWN0b3J5LmphdmEKQEAgLTI3LDEwICsyNywxMCBAQCBwdWJsaWMgY2xhc3MgU29mdHdh
cmVWaWRlb0RlY29kZXJGYWN0b3J5IGltcGxlbWVudHMgVmlkZW9EZWNvZGVyRmFjdG9yeSB7CiAg
IEBPdmVycmlkZQogICBwdWJsaWMgVmlkZW9EZWNvZGVyIGNyZWF0ZURlY29kZXIoVmlkZW9Db2Rl
Y0luZm8gY29kZWNUeXBlKSB7CiAgICAgaWYgKGNvZGVjVHlwZS5nZXROYW1lKCkuZXF1YWxzSWdu
b3JlQ2FzZSgiVlA4IikpIHsKLSAgICAgIHJldHVybiBuZXcgVlA4RGVjb2RlcigpOworICAgICAg
cmV0dXJuIG5ldyBMaWJ2cHhWcDhEZWNvZGVyKCk7CiAgICAgfQotICAgIGlmIChjb2RlY1R5cGUu
Z2V0TmFtZSgpLmVxdWFsc0lnbm9yZUNhc2UoIlZQOSIpICYmIFZQOURlY29kZXIubmF0aXZlSXNT
dXBwb3J0ZWQoKSkgewotICAgICAgcmV0dXJuIG5ldyBWUDlEZWNvZGVyKCk7CisgICAgaWYgKGNv
ZGVjVHlwZS5nZXROYW1lKCkuZXF1YWxzSWdub3JlQ2FzZSgiVlA5IikgJiYgTGlidnB4VnA5RGVj
b2Rlci5uYXRpdmVJc1N1cHBvcnRlZCgpKSB7CisgICAgICByZXR1cm4gbmV3IExpYnZweFZwOURl
Y29kZXIoKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbDsKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVi
bGljIGNsYXNzIFNvZnR3YXJlVmlkZW9EZWNvZGVyRmFjdG9yeSBpbXBsZW1lbnRzIFZpZGVvRGVj
b2RlckZhY3RvcnkgewogICAgIExpc3Q8VmlkZW9Db2RlY0luZm8+IGNvZGVjcyA9IG5ldyBBcnJh
eUxpc3Q8VmlkZW9Db2RlY0luZm8+KCk7CiAKICAgICBjb2RlY3MuYWRkKG5ldyBWaWRlb0NvZGVj
SW5mbygiVlA4IiwgbmV3IEhhc2hNYXA8PigpKSk7Ci0gICAgaWYgKFZQOURlY29kZXIubmF0aXZl
SXNTdXBwb3J0ZWQoKSkgeworICAgIGlmIChMaWJ2cHhWcDlEZWNvZGVyLm5hdGl2ZUlzU3VwcG9y
dGVkKCkpIHsKICAgICAgIGNvZGVjcy5hZGQobmV3IFZpZGVvQ29kZWNJbmZvKCJWUDkiLCBuZXcg
SGFzaE1hcDw+KCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1NvZnR3YXJl
VmlkZW9FbmNvZGVyRmFjdG9yeS5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0VuY29k
ZXJGYWN0b3J5LmphdmEKaW5kZXggYTJkZGYzNmMzODlkN2MxNDI5MzlhY2JkNjM4NjI3ZmNhYmY2
Y2FlYi4uM2MzNmM0ZDU2YTI4MzMxMzE1MWZkOWZlZGFmODgzNzY3NDdhMjM1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
YXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0VuY29kZXJGYWN0b3J5LmphdmEKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29y
Zy93ZWJydGMvU29mdHdhcmVWaWRlb0VuY29kZXJGYWN0b3J5LmphdmEKQEAgLTIwLDEwICsyMCwx
MCBAQCBwdWJsaWMgY2xhc3MgU29mdHdhcmVWaWRlb0VuY29kZXJGYWN0b3J5IGltcGxlbWVudHMg
VmlkZW9FbmNvZGVyRmFjdG9yeSB7CiAgIEBPdmVycmlkZQogICBwdWJsaWMgVmlkZW9FbmNvZGVy
IGNyZWF0ZUVuY29kZXIoVmlkZW9Db2RlY0luZm8gaW5mbykgewogICAgIGlmIChpbmZvLm5hbWUu
ZXF1YWxzSWdub3JlQ2FzZSgiVlA4IikpIHsKLSAgICAgIHJldHVybiBuZXcgVlA4RW5jb2Rlcigp
OworICAgICAgcmV0dXJuIG5ldyBMaWJ2cHhWcDhFbmNvZGVyKCk7CiAgICAgfQotICAgIGlmIChp
bmZvLm5hbWUuZXF1YWxzSWdub3JlQ2FzZSgiVlA5IikgJiYgVlA5RW5jb2Rlci5uYXRpdmVJc1N1
cHBvcnRlZCgpKSB7Ci0gICAgICByZXR1cm4gbmV3IFZQOUVuY29kZXIoKTsKKyAgICBpZiAoaW5m
by5uYW1lLmVxdWFsc0lnbm9yZUNhc2UoIlZQOSIpICYmIExpYnZweFZwOUVuY29kZXIubmF0aXZl
SXNTdXBwb3J0ZWQoKSkgeworICAgICAgcmV0dXJuIG5ldyBMaWJ2cHhWcDlFbmNvZGVyKCk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIG51bGw7CkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYyBjbGFzcyBT
b2Z0d2FyZVZpZGVvRW5jb2RlckZhY3RvcnkgaW1wbGVtZW50cyBWaWRlb0VuY29kZXJGYWN0b3J5
IHsKICAgICBMaXN0PFZpZGVvQ29kZWNJbmZvPiBjb2RlY3MgPSBuZXcgQXJyYXlMaXN0PFZpZGVv
Q29kZWNJbmZvPigpOwogCiAgICAgY29kZWNzLmFkZChuZXcgVmlkZW9Db2RlY0luZm8oIlZQOCIs
IG5ldyBIYXNoTWFwPD4oKSkpOwotICAgIGlmIChWUDlFbmNvZGVyLm5hdGl2ZUlzU3VwcG9ydGVk
KCkpIHsKKyAgICBpZiAoTGlidnB4VnA5RW5jb2Rlci5uYXRpdmVJc1N1cHBvcnRlZCgpKSB7CiAg
ICAgICBjb2RlY3MuYWRkKG5ldyBWaWRlb0NvZGVjSW5mbygiVlA5IiwgbmV3IEhhc2hNYXA8Pigp
KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9TdXJmYWNlVGV4dHVyZUhlbHBl
ci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvYXBpL29yZy93ZWJydGMvU3VyZmFjZVRleHR1cmVIZWxwZXIuamF2YQppbmRleCBiYjY3
ZDFmOWZlMGE2MmM3MDEwOWE5MjQ4MjI1MmM0YzQ0ZGUwZTBiLi4yOWRmNjg4OTAxZTE2MjZkMWYz
ZTA0NmE2ZDQxZjk5ZDc0ODZiZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9TdXJmYWNlVGV4
dHVyZUhlbHBlci5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1N1cmZhY2VUZXh0dXJlSGVscGVyLmph
dmEKQEAgLTM2LDEwICszNiwxNCBAQCBwdWJsaWMgY2xhc3MgU3VyZmFjZVRleHR1cmVIZWxwZXIg
ewogICAvKioKICAgICogQ29uc3RydWN0IGEgbmV3IFN1cmZhY2VUZXh0dXJlSGVscGVyIHNoYXJp
bmcgT3BlbkdMIHJlc291cmNlcyB3aXRoIHxzaGFyZWRDb250ZXh0fC4gQSBkZWRpY2F0ZWQKICAg
ICogdGhyZWFkIGFuZCBoYW5kbGVyIGlzIGNyZWF0ZWQgZm9yIGhhbmRsaW5nIHRoZSBTdXJmYWNl
VGV4dHVyZS4gTWF5IHJldHVybiBudWxsIGlmIEVHTCBmYWlscyB0bwotICAgKiBpbml0aWFsaXpl
IGEgcGl4ZWwgYnVmZmVyIHN1cmZhY2UgYW5kIG1ha2UgaXQgY3VycmVudC4KKyAgICogaW5pdGlh
bGl6ZSBhIHBpeGVsIGJ1ZmZlciBzdXJmYWNlIGFuZCBtYWtlIGl0IGN1cnJlbnQuIElmIGFsaWdu
VGltZXN0YW1wcyBpcyB0cnVlLCB0aGUgZnJhbWUKKyAgICogdGltZXN0YW1wcyB3aWxsIGJlIGFs
aWduZWQgdG8gcnRjOjpUaW1lTmFub3MoKS4gSWYgZnJhbWUgdGltZXN0YW1wcyBhcmUgYWxpZ25l
ZCB0bworICAgKiBydGM6OlRpbWVOYW5vcygpIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGFsaWduaW5n
IHRpbWVzdGFtcHMgYWdhaW4gaW4KKyAgICogUGVlckNvbm5lY3Rpb25GYWN0b3J5LmNyZWF0ZVZp
ZGVvU291cmNlKCkuIFRoaXMgbWFrZXMgdGhlIHRpbWVzdGFtcHMgbW9yZSBhY2N1cmF0ZSBhbmQK
KyAgICogY2xvc2VyIHRvIGFjdHVhbCBjcmVhdGlvbiB0aW1lLgogICAgKi8KICAgcHVibGljIHN0
YXRpYyBTdXJmYWNlVGV4dHVyZUhlbHBlciBjcmVhdGUoCi0gICAgICBmaW5hbCBTdHJpbmcgdGhy
ZWFkTmFtZSwgZmluYWwgRWdsQmFzZS5Db250ZXh0IHNoYXJlZENvbnRleHQpIHsKKyAgICAgIGZp
bmFsIFN0cmluZyB0aHJlYWROYW1lLCBmaW5hbCBFZ2xCYXNlLkNvbnRleHQgc2hhcmVkQ29udGV4
dCwgYm9vbGVhbiBhbGlnblRpbWVzdGFtcHMpIHsKICAgICBmaW5hbCBIYW5kbGVyVGhyZWFkIHRo
cmVhZCA9IG5ldyBIYW5kbGVyVGhyZWFkKHRocmVhZE5hbWUpOwogICAgIHRocmVhZC5zdGFydCgp
OwogICAgIGZpbmFsIEhhbmRsZXIgaGFuZGxlciA9IG5ldyBIYW5kbGVyKHRocmVhZC5nZXRMb29w
ZXIoKSk7CkBAIC01Myw3ICs1Nyw3IEBAIHB1YmxpYyBjbGFzcyBTdXJmYWNlVGV4dHVyZUhlbHBl
ciB7CiAgICAgICBAT3ZlcnJpZGUKICAgICAgIHB1YmxpYyBTdXJmYWNlVGV4dHVyZUhlbHBlciBj
YWxsKCkgewogICAgICAgICB0cnkgewotICAgICAgICAgIHJldHVybiBuZXcgU3VyZmFjZVRleHR1
cmVIZWxwZXIoc2hhcmVkQ29udGV4dCwgaGFuZGxlcik7CisgICAgICAgICAgcmV0dXJuIG5ldyBT
dXJmYWNlVGV4dHVyZUhlbHBlcihzaGFyZWRDb250ZXh0LCBoYW5kbGVyLCBhbGlnblRpbWVzdGFt
cHMpOwogICAgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICBM
b2dnaW5nLmUoVEFHLCB0aHJlYWROYW1lICsgIiBjcmVhdGUgZmFpbHVyZSIsIGUpOwogICAgICAg
ICAgIHJldHVybiBudWxsOwpAQCAtNjIsMTEgKzY2LDIyIEBAIHB1YmxpYyBjbGFzcyBTdXJmYWNl
VGV4dHVyZUhlbHBlciB7CiAgICAgfSk7CiAgIH0KIAorICAvKioKKyAgICogU2FtZSBhcyBhYm92
ZSB3aXRoIGFsaWduVGltZXN0YW1wcyBzZXQgdG8gZmFsc2UuCisgICAqCisgICAqIEBzZWUgI2Ny
ZWF0ZShTdHJpbmcsIEVnbEJhc2UuQ29udGV4dCwgYm9vbGVhbikKKyAgICovCisgIHB1YmxpYyBz
dGF0aWMgU3VyZmFjZVRleHR1cmVIZWxwZXIgY3JlYXRlKAorICAgICAgZmluYWwgU3RyaW5nIHRo
cmVhZE5hbWUsIGZpbmFsIEVnbEJhc2UuQ29udGV4dCBzaGFyZWRDb250ZXh0KSB7CisgICAgcmV0
dXJuIGNyZWF0ZSh0aHJlYWROYW1lLCBzaGFyZWRDb250ZXh0LCAvKiBhbGlnblRpbWVzdGFtcHM9
ICovIGZhbHNlKTsKKyAgfQorCiAgIHByaXZhdGUgZmluYWwgSGFuZGxlciBoYW5kbGVyOwogICBw
cml2YXRlIGZpbmFsIEVnbEJhc2UgZWdsQmFzZTsKICAgcHJpdmF0ZSBmaW5hbCBTdXJmYWNlVGV4
dHVyZSBzdXJmYWNlVGV4dHVyZTsKICAgcHJpdmF0ZSBmaW5hbCBpbnQgb2VzVGV4dHVyZUlkOwog
ICBwcml2YXRlIGZpbmFsIFl1dkNvbnZlcnRlciB5dXZDb252ZXJ0ZXIgPSBuZXcgWXV2Q29udmVy
dGVyKCk7CisgIEBOdWxsYWJsZSBwcml2YXRlIGZpbmFsIFRpbWVzdGFtcEFsaWduZXIgdGltZXN0
YW1wQWxpZ25lcjsKIAogICAvLyBUaGVzZSB2YXJpYWJsZXMgYXJlIG9ubHkgYWNjZXNzZWQgZnJv
bSB0aGUgfGhhbmRsZXJ8IHRocmVhZC4KICAgQE51bGxhYmxlIHByaXZhdGUgVmlkZW9TaW5rIGxp
c3RlbmVyOwpAQCAtOTUsMTEgKzExMCwxMyBAQCBwdWJsaWMgY2xhc3MgU3VyZmFjZVRleHR1cmVI
ZWxwZXIgewogICAgIH0KICAgfTsKIAotICBwcml2YXRlIFN1cmZhY2VUZXh0dXJlSGVscGVyKEVn
bEJhc2UuQ29udGV4dCBzaGFyZWRDb250ZXh0LCBIYW5kbGVyIGhhbmRsZXIpIHsKKyAgcHJpdmF0
ZSBTdXJmYWNlVGV4dHVyZUhlbHBlcigKKyAgICAgIEVnbEJhc2UuQ29udGV4dCBzaGFyZWRDb250
ZXh0LCBIYW5kbGVyIGhhbmRsZXIsIGJvb2xlYW4gYWxpZ25UaW1lc3RhbXBzKSB7CiAgICAgaWYg
KGhhbmRsZXIuZ2V0TG9vcGVyKCkuZ2V0VGhyZWFkKCkgIT0gVGhyZWFkLmN1cnJlbnRUaHJlYWQo
KSkgewogICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiU3VyZmFjZVRleHR1
cmVIZWxwZXIgbXVzdCBiZSBjcmVhdGVkIG9uIHRoZSBoYW5kbGVyIHRocmVhZCIpOwogICAgIH0K
ICAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyOworICAgIHRoaXMudGltZXN0YW1wQWxpZ25lciA9
IGFsaWduVGltZXN0YW1wcyA/IG5ldyBUaW1lc3RhbXBBbGlnbmVyKCkgOiBudWxsOwogCiAgICAg
ZWdsQmFzZSA9IEVnbEJhc2UuY3JlYXRlKHNoYXJlZENvbnRleHQsIEVnbEJhc2UuQ09ORklHX1BJ
WEVMX0JVRkZFUik7CiAgICAgdHJ5IHsKQEAgLTI2NCw3ICsyODEsMTAgQEAgcHVibGljIGNsYXNz
IFN1cmZhY2VUZXh0dXJlSGVscGVyIHsKIAogICAgIGZpbmFsIGZsb2F0W10gdHJhbnNmb3JtTWF0
cml4ID0gbmV3IGZsb2F0WzE2XTsKICAgICBzdXJmYWNlVGV4dHVyZS5nZXRUcmFuc2Zvcm1NYXRy
aXgodHJhbnNmb3JtTWF0cml4KTsKLSAgICBmaW5hbCBsb25nIHRpbWVzdGFtcE5zID0gc3VyZmFj
ZVRleHR1cmUuZ2V0VGltZXN0YW1wKCk7CisgICAgbG9uZyB0aW1lc3RhbXBOcyA9IHN1cmZhY2VU
ZXh0dXJlLmdldFRpbWVzdGFtcCgpOworICAgIGlmICh0aW1lc3RhbXBBbGlnbmVyICE9IG51bGwp
IHsKKyAgICAgIHRpbWVzdGFtcE5zID0gdGltZXN0YW1wQWxpZ25lci50cmFuc2xhdGVUaW1lc3Rh
bXAodGltZXN0YW1wTnMpOworICAgIH0KICAgICBpZiAodGV4dHVyZVdpZHRoID09IDAgfHwgdGV4
dHVyZUhlaWdodCA9PSAwKSB7CiAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiVGV4
dHVyZSBzaXplIGhhcyBub3QgYmVlbiBzZXQuIik7CiAgICAgfQpAQCAtMjg5LDUgKzMwOSw4IEBA
IHB1YmxpYyBjbGFzcyBTdXJmYWNlVGV4dHVyZUhlbHBlciB7CiAgICAgc3VyZmFjZVRleHR1cmUu
cmVsZWFzZSgpOwogICAgIGVnbEJhc2UucmVsZWFzZSgpOwogICAgIGhhbmRsZXIuZ2V0TG9vcGVy
KCkucXVpdCgpOworICAgIGlmICh0aW1lc3RhbXBBbGlnbmVyICE9IG51bGwpIHsKKyAgICAgIHRp
bWVzdGFtcEFsaWduZXIuZGlzcG9zZSgpOworICAgIH0KICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29y
Zy93ZWJydGMvVGltZXN0YW1wQWxpZ25lci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvVGltZXN0YW1wQWxp
Z25lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNGJlZDRkOGZiYTQ0ODRkNWQxZWE1ZTg0YTBhMWEyOGYy
OTk1NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9UaW1lc3RhbXBBbGlnbmVyLmph
dmEKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworcGFja2FnZSBvcmcud2Vi
cnRjOworCisvKioKKyAqIFRoZSBUaW1lc3RhbXBBbGlnbmVyIGNsYXNzIGhlbHBzIHRyYW5zbGF0
aW5nIGNhbWVyYSB0aW1lc3RhbXBzIGludG8gdGhlIHNhbWUgdGltZXNjYWxlIGFzIGlzCisgKiB1
c2VkIGJ5IHJ0Yzo6VGltZU5hbm9zKCkuIFNvbWUgY2FtZXJhcyBoYXZlIGJ1aWx0IGluIHRpbWVz
dGFtcGluZyB3aGljaCBpcyBtb3JlIGFjY3VyYXRlIHRoYW4KKyAqIHJlYWRpbmcgdGhlIHN5c3Rl
bSBjbG9jaywgYnV0IHVzaW5nIGEgZGlmZmVyZW50IGVwb2NoIGFuZCB1bmtub3duIGNsb2NrIGRy
aWZ0LiBGcmFtZSB0aW1lc3RhbXBzCisgKiBpbiB3ZWJydGMgc2hvdWxkIHVzZSBydGM6OlRpbWVO
YW5vcyAoc3lzdGVtIG1vbm90b25pYyB0aW1lKSwgYW5kIHRoaXMgY2xhc3MgcHJvdmlkZXMgYSBm
aWx0ZXIKKyAqIHdoaWNoIGxldHMgdXMgdXNlIHRoZSBydGM6OlRpbWVOYW5vcyB0aW1lc2NhbGUs
IGFuZCBhdCB0aGUgc2FtZSB0aW1lIHRha2UgYWR2YW50YWdlIG9mIGhpZ2hlcgorICogYWNjdXJh
Y3kgb2YgdGhlIGNhbWVyYSBjbG9jay4gVGhpcyBjbGFzcyBpcyBhIHdyYXBwZXIgb24gdG9wIG9m
IHJ0Yzo6VGltZXN0YW1wQWxpZ25lci4KKyAqLworcHVibGljIGNsYXNzIFRpbWVzdGFtcEFsaWdu
ZXIgeworICAvKioKKyAgICogV3JhcHBlciBhcm91bmQgcnRjOjpUaW1lTmFub3MoKS4gVGhpcyBp
cyBub3JtYWxseSBzYW1lIGFzIFN5c3RlbS5uYW5vVGltZSgpLCBidXQgY2FsbCB0aGlzCisgICAq
IGZ1bmN0aW9uIHRvIGJlIHNhZmUuCisgICAqLworICBwdWJsaWMgc3RhdGljIGxvbmcgZ2V0UnRj
VGltZU5hbm9zKCkgeworICAgIHJldHVybiBuYXRpdmVSdGNUaW1lTmFub3MoKTsKKyAgfQorCisg
IHByaXZhdGUgdm9sYXRpbGUgbG9uZyBuYXRpdmVUaW1lc3RhbXBBbGlnbmVyID0gbmF0aXZlQ3Jl
YXRlVGltZXN0YW1wQWxpZ25lcigpOworCisgIC8qKgorICAgKiBUcmFuc2xhdGVzIGNhbWVyYSB0
aW1lc3RhbXBzIHRvIHRoZSBzYW1lIHRpbWVzY2FsZSBhcyBpcyB1c2VkIGJ5IHJ0Yzo6VGltZU5h
bm9zKCkuCisgICAqIHxjYW1lcmFUaW1lTnN8IGlzIGFzc3VtZWQgdG8gYmUgYWNjdXJhdGUsIGJ1
dCB3aXRoIGFuIHVua25vd24gZXBvY2ggYW5kIGNsb2NrIGRyaWZ0LiBSZXR1cm5zCisgICAqIHRo
ZSB0cmFuc2xhdGVkIHRpbWVzdGFtcC4KKyAgICovCisgIHB1YmxpYyBsb25nIHRyYW5zbGF0ZVRp
bWVzdGFtcChsb25nIGNhbWVyYVRpbWVOcykgeworICAgIGNoZWNrTmF0aXZlQWxpZ25lckV4aXN0
cygpOworICAgIHJldHVybiBuYXRpdmVUcmFuc2xhdGVUaW1lc3RhbXAobmF0aXZlVGltZXN0YW1w
QWxpZ25lciwgY2FtZXJhVGltZU5zKTsKKyAgfQorCisgIC8qKiBEaXNwb3NlIG5hdGl2ZSB0aW1l
c3RhbXAgYWxpZ25lci4gKi8KKyAgcHVibGljIHZvaWQgZGlzcG9zZSgpIHsKKyAgICBjaGVja05h
dGl2ZUFsaWduZXJFeGlzdHMoKTsKKyAgICBuYXRpdmVSZWxlYXNlVGltZXN0YW1wQWxpZ25lcihu
YXRpdmVUaW1lc3RhbXBBbGlnbmVyKTsKKyAgICBuYXRpdmVUaW1lc3RhbXBBbGlnbmVyID0gMDsK
KyAgfQorCisgIHByaXZhdGUgdm9pZCBjaGVja05hdGl2ZUFsaWduZXJFeGlzdHMoKSB7CisgICAg
aWYgKG5hdGl2ZVRpbWVzdGFtcEFsaWduZXIgPT0gMCkgeworICAgICAgdGhyb3cgbmV3IElsbGVn
YWxTdGF0ZUV4Y2VwdGlvbigiVGltZXN0YW1wQWxpZ25lciBoYXMgYmVlbiBkaXNwb3NlZC4iKTsK
KyAgICB9CisgIH0KKworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVSdGNUaW1l
TmFub3MoKTsKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlVGltZXN0
YW1wQWxpZ25lcigpOworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVSZWxlYXNl
VGltZXN0YW1wQWxpZ25lcihsb25nIHRpbWVzdGFtcEFsaWduZXIpOworICBwcml2YXRlIHN0YXRp
YyBuYXRpdmUgbG9uZyBuYXRpdmVUcmFuc2xhdGVUaW1lc3RhbXAobG9uZyB0aW1lc3RhbXBBbGln
bmVyLCBsb25nIGNhbWVyYVRpbWVOcyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9WaWRl
b0VuY29kZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1ZpZGVvRW5jb2Rlci5qYXZhCmluZGV4IDhkYzc1
ODI5MjZiMjQzYWI5ZDYwZDIyOGU2NmI1YzAzNmNmYWZlMmIuLmFmYzVjZDAyMzlkMWE1YTJlMjA4
MmNhOTFkZDdjOGEzNGY1OGUwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1ZpZGVvRW5jb2Rl
ci5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1ZpZGVvRW5jb2Rlci5qYXZhCkBAIC0yMTAsMTQgKzIx
MCw2IEBAIHB1YmxpYyBpbnRlcmZhY2UgVmlkZW9FbmNvZGVyIHsKICAgICovCiAgIEBDYWxsZWRC
eU5hdGl2ZSBWaWRlb0NvZGVjU3RhdHVzIGVuY29kZShWaWRlb0ZyYW1lIGZyYW1lLCBFbmNvZGVJ
bmZvIGluZm8pOwogCi0gIC8qKgotICAgKiBJbmZvcm1zIHRoZSBlbmNvZGVyIG9mIHRoZSBwYWNr
ZXQgbG9zcyBhbmQgdGhlIHJvdW5kLXRyaXAgdGltZSBvZiB0aGUgbmV0d29yay4KLSAgICoKLSAg
ICogQHBhcmFtIHBhY2tldExvc3MgSG93IG1hbnkgcGFja2V0cyBhcmUgbG9zdCBvbiBhdmVyYWdl
IHBlciAyNTUgcGFja2V0cy4KLSAgICogQHBhcmFtIHJvdW5kVHJpcFRpbWVNcyBSb3VuZC10cmlw
IHRpbWUgb2YgdGhlIG5ldHdvcmsgaW4gbWlsbGlzZWNvbmRzLgotICAgKi8KLSAgQENhbGxlZEJ5
TmF0aXZlIFZpZGVvQ29kZWNTdGF0dXMgc2V0Q2hhbm5lbFBhcmFtZXRlcnMoc2hvcnQgcGFja2V0
TG9zcywgbG9uZyByb3VuZFRyaXBUaW1lTXMpOwotCiAgIC8qKiBTZXRzIHRoZSBiaXRyYXRlIGFs
bG9jYXRpb24gYW5kIHRoZSB0YXJnZXQgZnJhbWVyYXRlIGZvciB0aGUgZW5jb2Rlci4gKi8KICAg
QENhbGxlZEJ5TmF0aXZlIFZpZGVvQ29kZWNTdGF0dXMgc2V0UmF0ZUFsbG9jYXRpb24oQml0cmF0
ZUFsbG9jYXRpb24gYWxsb2NhdGlvbiwgaW50IGZyYW1lcmF0ZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9v
cmcvd2VicnRjL1ZpZGVvU291cmNlLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9WaWRlb1NvdXJjZS5qYXZh
CmluZGV4IDdmOWYzZTUzMjNmZjUzMGY4M2YxNzFiNTdiOTdmZTQxZmEzM2NhYzcuLmE4ZWY2NjIw
YWNmY2I0YTQzYzliY2RlZjZhZmQyODRlZDlkOTA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRj
L1ZpZGVvU291cmNlLmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvVmlkZW9Tb3VyY2UuamF2YQpAQCAt
MzAsNyArMzAsMjAgQEAgcHVibGljIGNsYXNzIFZpZGVvU291cmNlIGV4dGVuZHMgTWVkaWFTb3Vy
Y2UgewogICAgKiBtYWludGFpbiB0aGUgaW5wdXQgb3JpZW50YXRpb24sIHNvIGl0IGRvZXNuJ3Qg
bWF0dGVyIGlmIGUuZy4gMTI4MHg3MjAgb3IgNzIweDEyODAgaXMgcmVxdWVzdGVkLgogICAgKi8K
ICAgcHVibGljIHZvaWQgYWRhcHRPdXRwdXRGb3JtYXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBp
bnQgZnBzKSB7Ci0gICAgbmF0aXZlQWRhcHRPdXRwdXRGb3JtYXQoZ2V0TmF0aXZlVmlkZW9UcmFj
a1NvdXJjZSgpLCB3aWR0aCwgaGVpZ2h0LCBmcHMpOworICAgIGZpbmFsIGludCBtYXhTaWRlID0g
TWF0aC5tYXgod2lkdGgsIGhlaWdodCk7CisgICAgZmluYWwgaW50IG1pblNpZGUgPSBNYXRoLm1p
bih3aWR0aCwgaGVpZ2h0KTsKKyAgICBhZGFwdE91dHB1dEZvcm1hdChtYXhTaWRlLCBtaW5TaWRl
LCBtaW5TaWRlLCBtYXhTaWRlLCBmcHMpOworICB9CisKKyAgLyoqCisgICAqIFNhbWUgYXMgYWJv
dmUsIGJ1dCBhbGxvd3Mgc2V0dGluZyB0d28gZGlmZmVyZW50IHRhcmdldCByZXNvbHV0aW9ucyBk
ZXBlbmRpbmcgb24gaW5jb21pbmcKKyAgICogZnJhbWUgb3JpZW50YXRpb24uIFRoaXMgZ2l2ZXMg
bW9yZSBmaW5lLWdyYWluZWQgY29udHJvbCBhbmQgY2FuIGUuZy4gYmUgdXNlZCB0byBmb3JjZSBs
YW5kc2NhcGUKKyAgICogdmlkZW8gdG8gYmUgY3JvcHBlZCB0byBwb3J0cmFpdCB2aWRlby4KKyAg
ICovCisgIHB1YmxpYyB2b2lkIGFkYXB0T3V0cHV0Rm9ybWF0KAorICAgICAgaW50IGxhbmRzY2Fw
ZVdpZHRoLCBpbnQgbGFuZHNjYXBlSGVpZ2h0LCBpbnQgcG9ydHJhaXRXaWR0aCwgaW50IHBvcnRy
YWl0SGVpZ2h0LCBpbnQgZnBzKSB7CisgICAgbmF0aXZlQWRhcHRPdXRwdXRGb3JtYXQoZ2V0TmF0
aXZlVmlkZW9UcmFja1NvdXJjZSgpLCBsYW5kc2NhcGVXaWR0aCwgbGFuZHNjYXBlSGVpZ2h0LAor
ICAgICAgICBwb3J0cmFpdFdpZHRoLCBwb3J0cmFpdEhlaWdodCwgZnBzKTsKICAgfQogCiAgIHB1
YmxpYyBDYXB0dXJlck9ic2VydmVyIGdldENhcHR1cmVyT2JzZXJ2ZXIoKSB7CkBAIC00NCw1ICs1
Nyw2IEBAIHB1YmxpYyBjbGFzcyBWaWRlb1NvdXJjZSBleHRlbmRzIE1lZGlhU291cmNlIHsKIAog
ICAvLyBSZXR1cm5zIHNvdXJjZS0+aW50ZXJuYWwoKSBmcm9tIHdlYnJ0Yzo6VmlkZW9UcmFja1Nv
dXJjZVByb3h5LgogICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVHZXRJbnRlcm5h
bFNvdXJjZShsb25nIHNvdXJjZSk7Ci0gIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2
ZUFkYXB0T3V0cHV0Rm9ybWF0KGxvbmcgc291cmNlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGlu
dCBmcHMpOworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVBZGFwdE91dHB1dEZv
cm1hdChsb25nIHNvdXJjZSwgaW50IGxhbmRzY2FwZVdpZHRoLAorICAgICAgaW50IGxhbmRzY2Fw
ZUhlaWdodCwgaW50IHBvcnRyYWl0V2lkdGgsIGludCBwb3J0cmFpdEhlaWdodCwgaW50IGZwcyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9CdWlsdGlu
QXVkaW9Db2RlY3NGYWN0b3J5RmFjdG9yeVRlc3QuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3Ny
Yy9vcmcvd2VicnRjL0J1aWx0aW5BdWRpb0NvZGVjc0ZhY3RvcnlGYWN0b3J5VGVzdC5qYXZhCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM2ZWUwZTkzMmUxY2MyMDJhZmRkZDFkOWJhN2ZlMzRlZTU3NzUxNzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9CdWlsdGluQXVk
aW9Db2RlY3NGYWN0b3J5RmFjdG9yeVRlc3QuamF2YQpAQCAtMCwwICsxLDU4IEBACisvKgorICog
IENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisKK2ltcG9ydCBzdGF0aWMgY29tLmdv
b2dsZS5jb21tb24udHJ1dGguVHJ1dGguYXNzZXJ0VGhhdDsKKworaW1wb3J0IGFuZHJvaWQuc3Vw
cG9ydC50ZXN0LmZpbHRlcnMuU21hbGxUZXN0OworCitpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsK
K2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7
CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuSlVuaXQ0OworCitAUnVuV2l0aChKVW5pdDQuY2xh
c3MpCitwdWJsaWMgZmluYWwgY2xhc3MgQnVpbHRpbkF1ZGlvQ29kZWNzRmFjdG9yeUZhY3RvcnlU
ZXN0IHsKKyAgQEJlZm9yZQorICBwdWJsaWMgdm9pZCBzZXRVcCgpIHsKKyAgICBTeXN0ZW0ubG9h
ZExpYnJhcnkoVGVzdENvbnN0YW50cy5OQVRJVkVfTElCUkFSWSk7CisgIH0KKworICBAVGVzdAor
ICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RBdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9y
eVRlc3QoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICBCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9y
eUZhY3RvcnkgZmFjdG9yeSA9IG5ldyBCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3Rvcnko
KTsKKyAgICBsb25nIGFlZiA9IDA7CisgICAgdHJ5IHsKKyAgICAgIGFlZiA9IGZhY3RvcnkuY3Jl
YXRlTmF0aXZlQXVkaW9FbmNvZGVyRmFjdG9yeSgpOworICAgICAgYXNzZXJ0VGhhdChhZWYpLmlz
Tm90RXF1YWxUbygwKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgaWYgKGFlZiAhPSAwKSB7Cisg
ICAgICAgIEpuaUNvbW1vbi5uYXRpdmVSZWxlYXNlUmVmKGFlZik7CisgICAgICB9CisgICAgfQor
ICB9CisKKyAgQFRlc3QKKyAgQFNtYWxsVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0QXVkaW9EZWNv
ZGVyRmFjdG9yeUZhY3RvcnlUZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgQnVpbHRpbkF1
ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5IGZhY3RvcnkgPSBuZXcgQnVpbHRpbkF1ZGlvRGVjb2Rl
ckZhY3RvcnlGYWN0b3J5KCk7CisgICAgbG9uZyBhZGYgPSAwOworICAgIHRyeSB7CisgICAgICBh
ZGYgPSBmYWN0b3J5LmNyZWF0ZU5hdGl2ZUF1ZGlvRGVjb2RlckZhY3RvcnkoKTsKKyAgICAgIGFz
c2VydFRoYXQoYWRmKS5pc05vdEVxdWFsVG8oMCk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgIGlm
IChhZGYgIT0gMCkgeworICAgICAgICBKbmlDb21tb24ubmF0aXZlUmVsZWFzZVJlZihhZGYpOwor
ICAgICAgfQorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3Jj
L29yZy93ZWJydGMvQ2FtZXJhMUNhcHR1cmVyVXNpbmdCeXRlQnVmZmVyVGVzdC5qYXZhIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1
bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMUNhcHR1cmVyVXNpbmdCeXRlQnVm
ZmVyVGVzdC5qYXZhCmluZGV4IGVmNzY2OTEwMmY5YmI2NDhiNmRiMTU0MjExMDRjOWIwNjZlOWIz
NWQuLjE3YjA5NzdkNTk1ZmQyN2FmZjU4NjYxZWY5YWE3ZDFjYzdkODc1OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2lu
c3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYTFDYXB0dXJlclVzaW5nQnl0
ZUJ1ZmZlclRlc3QuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9D
YW1lcmExQ2FwdHVyZXJVc2luZ0J5dGVCdWZmZXJUZXN0LmphdmEKQEAgLTE2OSw2ICsxNjksMTQg
QEAgcHVibGljIGNsYXNzIENhbWVyYTFDYXB0dXJlclVzaW5nQnl0ZUJ1ZmZlclRlc3QgewogICAg
IGZpeHR1cmVzLnNjYWxlQ2FtZXJhT3V0cHV0KCk7CiAgIH0KIAorICAvLyBUaGlzIHRlc3QgdGhh
dCBmcmFtZXMgZm9yd2FyZGVkIHRvIGEgcmVuZGVyZXIgaXMgY3JvcHBlZCB0byBhIG5ldyBvcmll
bnRhdGlvbiBpZgorICAvLyBhZGFwdE91dHB1dEZvcm1hdCBpcyBjYWxsZWQgaW4gc3VjaCBhIHdh
eS4gVGhpcyB0ZXN0IGJvdGggSmF2YSBhbmQgQysrIHBhcnRzIG9mIG9mIHRoZSBzdGFjay4KKyAg
QFRlc3QKKyAgQE1lZGl1bVRlc3QKKyAgcHVibGljIHZvaWQgdGVzdENyb3BDYW1lcmFPdXRwdXQo
KSB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24geworICAgIGZpeHR1cmVzLmNyb3BDYW1lcmFP
dXRwdXQoKTsKKyAgfQorCiAgIC8vIFRoaXMgdGVzdCB0aGF0IGFuIGVycm9yIGlzIHJlcG9ydGVk
IGlmIHRoZSBjYW1lcmEgaXMgYWxyZWFkeSBvcGVuZWQKICAgLy8gd2hlbiBDYW1lcmFWaWRlb0Nh
cHR1cmVyIGlzIHN0YXJ0ZWQuCiAgIEBUZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0
cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmExQ2FwdHVyZXJVc2luZ1RleHR1cmVUZXN0LmphdmEgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0
cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmExQ2FwdHVyZXJVc2luZ1RleHR1
cmVUZXN0LmphdmEKaW5kZXggMjhmYTgyNWFkNzRlNjFjYzk0MDZiMzJkMjRiOWI2ZGJlNjBjODg1
NS4uNGRjMDAzNzI2YTcxOTZjNjI2YTQ3NTYwZjk0OTE4YzQxNTExNTVmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5z
dHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMUNhcHR1cmVyVXNpbmdUZXh0
dXJlVGVzdC5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVy
YTFDYXB0dXJlclVzaW5nVGV4dHVyZVRlc3QuamF2YQpAQCAtMTcyLDYgKzE3MiwxNCBAQCBwdWJs
aWMgY2xhc3MgQ2FtZXJhMUNhcHR1cmVyVXNpbmdUZXh0dXJlVGVzdCB7CiAgICAgZml4dHVyZXMu
c2NhbGVDYW1lcmFPdXRwdXQoKTsKICAgfQogCisgIC8vIFRoaXMgdGVzdCB0aGF0IGZyYW1lcyBm
b3J3YXJkZWQgdG8gYSByZW5kZXJlciBpcyBjcm9wcGVkIHRvIGEgbmV3IG9yaWVudGF0aW9uIGlm
CisgIC8vIGFkYXB0T3V0cHV0Rm9ybWF0IGlzIGNhbGxlZCBpbiBzdWNoIGEgd2F5LiBUaGlzIHRl
c3QgYm90aCBKYXZhIGFuZCBDKysgcGFydHMgb2Ygb2YgdGhlIHN0YWNrLgorICBAVGVzdAorICBA
TWVkaXVtVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0Q3JvcENhbWVyYU91dHB1dCgpIHRocm93cyBJ
bnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CisgICAgZml4dHVyZXMuY3JvcENhbWVyYU91dHB1dCgpOwor
ICB9CisKICAgLy8gVGhpcyB0ZXN0IHRoYXQgYW4gZXJyb3IgaXMgcmVwb3J0ZWQgaWYgdGhlIGNh
bWVyYSBpcyBhbHJlYWR5IG9wZW5lZAogICAvLyB3aGVuIENhbWVyYVZpZGVvQ2FwdHVyZXIgaXMg
c3RhcnRlZC4KICAgQFRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcv
d2VicnRjL0NhbWVyYTJDYXB0dXJlclRlc3QuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9v
cmcvd2VicnRjL0NhbWVyYTJDYXB0dXJlclRlc3QuamF2YQppbmRleCA3N2U4ZDc3ZjBhZWYxZDY1
NjhiMWM3YWRhNTM0ZGNiOGM2NDExYmMxLi5mYmE5NDMxNzZhODU4NmMyOGVjZjQ5MTg3MTM5MjJi
NGJmYTRmNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9D
YW1lcmEyQ2FwdHVyZXJUZXN0LmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93
ZWJydGMvQ2FtZXJhMkNhcHR1cmVyVGVzdC5qYXZhCkBAIC0zMDIsNiArMzAyLDE0IEBAIHB1Ymxp
YyBjbGFzcyBDYW1lcmEyQ2FwdHVyZXJUZXN0IHsKICAgICBmaXh0dXJlcy5zY2FsZUNhbWVyYU91
dHB1dCgpOwogICB9CiAKKyAgLy8gVGhpcyB0ZXN0IHRoYXQgZnJhbWVzIGZvcndhcmRlZCB0byBh
IHJlbmRlcmVyIGlzIGNyb3BwZWQgdG8gYSBuZXcgb3JpZW50YXRpb24gaWYKKyAgLy8gYWRhcHRP
dXRwdXRGb3JtYXQgaXMgY2FsbGVkIGluIHN1Y2ggYSB3YXkuIFRoaXMgdGVzdCBib3RoIEphdmEg
YW5kIEMrKyBwYXJ0cyBvZiBvZiB0aGUgc3RhY2suCisgIEBUZXN0CisgIEBNZWRpdW1UZXN0Cisg
IHB1YmxpYyB2b2lkIHRlc3RDcm9wQ2FtZXJhT3V0cHV0KCkgdGhyb3dzIEludGVycnVwdGVkRXhj
ZXB0aW9uIHsKKyAgICBmaXh0dXJlcy5jcm9wQ2FtZXJhT3V0cHV0KCk7CisgIH0KKwogICAvLyBU
aGlzIHRlc3QgdGhhdCBhbiBlcnJvciBpcyByZXBvcnRlZCBpZiB0aGUgY2FtZXJhIGlzIGFscmVh
ZHkgb3BlbmVkCiAgIC8vIHdoZW4gQ2FtZXJhVmlkZW9DYXB0dXJlciBpcyBzdGFydGVkLgogICBA
VGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJh
VmlkZW9DYXB0dXJlclRlc3RGaXh0dXJlcy5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29y
Zy93ZWJydGMvQ2FtZXJhVmlkZW9DYXB0dXJlclRlc3RGaXh0dXJlcy5qYXZhCmluZGV4IGRkMGQ3
ODBkZjA4YzcxOTYyNjAyNjFlZDE4MmQ5YjgzY2M5ZTViNmQuLmI0N2ZlZTA4ZDE1Nzk2ZjIzNDk4
OTYxMjNkY2EwYWM0M2MzYmVlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9v
cmcvd2VicnRjL0NhbWVyYVZpZGVvQ2FwdHVyZXJUZXN0Rml4dHVyZXMuamF2YQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVt
ZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmFWaWRlb0NhcHR1cmVyVGVzdEZpeHR1
cmVzLmphdmEKQEAgLTY4OCw2ICs2ODgsNDkgQEAgY2xhc3MgQ2FtZXJhVmlkZW9DYXB0dXJlclRl
c3RGaXh0dXJlcyB7CiAgICAgYXNzZXJ0VHJ1ZShnb3RFeHBlY3RlZFJlc29sdXRpb24pOwogICB9
CiAKKyAgcHVibGljIHZvaWQgY3JvcENhbWVyYU91dHB1dCgpIHRocm93cyBJbnRlcnJ1cHRlZEV4
Y2VwdGlvbiB7CisgICAgZmluYWwgQ2FwdHVyZXJJbnN0YW5jZSBjYXB0dXJlckluc3RhbmNlID0g
Y3JlYXRlQ2FwdHVyZXIoZmFsc2UgLyogaW5pdGlhbGl6ZSAqLyk7CisgICAgZmluYWwgVmlkZW9U
cmFja1dpdGhSZW5kZXJlciB2aWRlb1RyYWNrV2l0aFJlbmRlcmVyID0KKyAgICAgICAgY3JlYXRl
VmlkZW9UcmFja1dpdGhSZW5kZXJlcihjYXB0dXJlckluc3RhbmNlLmNhcHR1cmVyKTsKKyAgICBh
c3NlcnRUcnVlKHZpZGVvVHJhY2tXaXRoUmVuZGVyZXIucmVuZGVyZXJDYWxsYmFja3Mud2FpdEZv
ck5leHRGcmFtZVRvUmVuZGVyKCkgPiAwKTsKKworICAgIGZpbmFsIGludCBzdGFydFdpZHRoID0g
dmlkZW9UcmFja1dpdGhSZW5kZXJlci5yZW5kZXJlckNhbGxiYWNrcy5mcmFtZVdpZHRoKCk7Cisg
ICAgZmluYWwgaW50IHN0YXJ0SGVpZ2h0ID0gdmlkZW9UcmFja1dpdGhSZW5kZXJlci5yZW5kZXJl
ckNhbGxiYWNrcy5mcmFtZUhlaWdodCgpOworICAgIGZpbmFsIGludCBmcmFtZVJhdGUgPSAzMDsK
KyAgICBmaW5hbCBpbnQgY3JvcFdpZHRoOworICAgIGZpbmFsIGludCBjcm9wSGVpZ2h0OworICAg
IGlmIChzdGFydFdpZHRoID4gc3RhcnRIZWlnaHQpIHsKKyAgICAgIC8vIExhbmRzY2FwZSBpbnB1
dCwgcmVxdWVzdCBwb3J0cmFpdCBvdXRwdXQuCisgICAgICBjcm9wV2lkdGggPSAzNjA7CisgICAg
ICBjcm9wSGVpZ2h0ID0gNjQwOworICAgIH0gZWxzZSB7CisgICAgICAvLyBQb3J0cmFpdCBpbnB1
dCwgcmVxdWVzdCBsYW5kc2NhcGUgb3V0cHV0LgorICAgICAgY3JvcFdpZHRoID0gNjQwOworICAg
ICAgY3JvcEhlaWdodCA9IDYzMDsKKyAgICB9CisKKyAgICAvLyBSZXF1ZXN0IGRpZmZlcmVudCBv
dXRwdXQgb3JpZW50YXRpb24gdGhhbiBpbnB1dC4KKyAgICB2aWRlb1RyYWNrV2l0aFJlbmRlcmVy
LnNvdXJjZS5hZGFwdE91dHB1dEZvcm1hdCgKKyAgICAgICAgY3JvcFdpZHRoLCBjcm9wSGVpZ2h0
LCBjcm9wV2lkdGgsIGNyb3BIZWlnaHQsIGZyYW1lUmF0ZSk7CisKKyAgICBib29sZWFuIGdvdEV4
cGVjdGVkT3JpZW50YXRpb24gPSBmYWxzZTsKKyAgICBpbnQgbnVtYmVyT2ZJbnNwZWN0ZWRGcmFt
ZXMgPSAwOworCisgICAgZG8geworICAgICAgdmlkZW9UcmFja1dpdGhSZW5kZXJlci5yZW5kZXJl
ckNhbGxiYWNrcy53YWl0Rm9yTmV4dEZyYW1lVG9SZW5kZXIoKTsKKyAgICAgICsrbnVtYmVyT2ZJ
bnNwZWN0ZWRGcmFtZXM7CisKKyAgICAgIGdvdEV4cGVjdGVkT3JpZW50YXRpb24gPSAoY3JvcFdp
ZHRoID4gY3JvcEhlaWdodCkKKyAgICAgICAgICA9PSAodmlkZW9UcmFja1dpdGhSZW5kZXJlci5y
ZW5kZXJlckNhbGxiYWNrcy5mcmFtZVdpZHRoKCkKKyAgICAgICAgICAgICAgICAgPiB2aWRlb1Ry
YWNrV2l0aFJlbmRlcmVyLnJlbmRlcmVyQ2FsbGJhY2tzLmZyYW1lSGVpZ2h0KCkpOworICAgIH0g
d2hpbGUgKCFnb3RFeHBlY3RlZE9yaWVudGF0aW9uICYmIG51bWJlck9mSW5zcGVjdGVkRnJhbWVz
IDwgMzApOworCisgICAgZGlzcG9zZUNhcHR1cmVyKGNhcHR1cmVySW5zdGFuY2UpOworICAgIGRp
c3Bvc2VWaWRlb1RyYWNrV2l0aFJlbmRlcmVyKHZpZGVvVHJhY2tXaXRoUmVuZGVyZXIpOworCisg
ICAgYXNzZXJ0VHJ1ZShnb3RFeHBlY3RlZE9yaWVudGF0aW9uKTsKKyAgfQorCiAgIHB1YmxpYyB2
b2lkIHN0YXJ0V2hpbGVDYW1lcmFJc0FscmVhZHlPcGVuKCkgdGhyb3dzIEludGVycnVwdGVkRXhj
ZXB0aW9uIHsKICAgICBmaW5hbCBTdHJpbmcgY2FtZXJhTmFtZSA9IHRlc3RPYmplY3RGYWN0b3J5
LmdldE5hbWVPZkJhY2tGYWNpbmdEZXZpY2UoKTsKICAgICAvLyBBdCB0aGlzIHBvaW50IGNhbWVy
YSBpcyBub3QgYWN0dWFsbHkgb3BlbmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMv
c3JjL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25UZXN0LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0
cy9zcmMvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvblRlc3QuamF2YQppbmRleCA3ZDBlZGM1OThl
NmM2NjhjOTBiNGRiMjI1OTE2M2I2MTljNzZkNDUxLi4yMDYzMTk5ZTcyZGVhODUwNzMyNjkwOGU2
NWFjYmYyN2UyNWIyYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dl
YnJ0Yy9QZWVyQ29ubmVjdGlvblRlc3QuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMv
b3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvblRlc3QuamF2YQpAQCAtMTEsNiArMTEsNyBAQAogcGFj
a2FnZSBvcmcud2VicnRjOwogCiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0
RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE5vdEVxdWFsczsK
IGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRGYWxzZTsKIGltcG9ydCBzdGF0
aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3ROdWxsOwogaW1wb3J0IHN0YXRpYyBvcmcuanVu
aXQuQXNzZXJ0LmFzc2VydE51bGw7CkBAIC00NCw2ICs0NSw3IEBAIGltcG9ydCBvcmcuanVuaXQu
cnVubmVyLlJ1bldpdGg7CiBpbXBvcnQgb3JnLndlYnJ0Yy5NZXRyaWNzLkhpc3RvZ3JhbUluZm87
CiBpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbi5JY2VDb25uZWN0aW9uU3RhdGU7CiBp
bXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbi5JY2VHYXRoZXJpbmdTdGF0ZTsKK2ltcG9y
dCBvcmcud2VicnRjLlBlZXJDb25uZWN0aW9uLlBlZXJDb25uZWN0aW9uU3RhdGU7CiBpbXBvcnQg
b3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbi5TaWduYWxpbmdTdGF0ZTsKIAogLyoqIEVuZC10by1l
bmQgdGVzdHMgZm9yIFBlZXJDb25uZWN0aW9uLmphdmEuICovCkBAIC03Myw2ICs3NSw3IEBAIHB1
YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3QgewogICAgIHByaXZhdGUgaW50IGV4cGVjdGVk
VHJhY2tzQWRkZWQ7CiAgICAgcHJpdmF0ZSBRdWV1ZTxTaWduYWxpbmdTdGF0ZT4gZXhwZWN0ZWRT
aWduYWxpbmdDaGFuZ2VzID0gbmV3IEFycmF5RGVxdWU8PigpOwogICAgIHByaXZhdGUgUXVldWU8
SWNlQ29ubmVjdGlvblN0YXRlPiBleHBlY3RlZEljZUNvbm5lY3Rpb25DaGFuZ2VzID0gbmV3IEFy
cmF5RGVxdWU8PigpOworICAgIHByaXZhdGUgUXVldWU8UGVlckNvbm5lY3Rpb25TdGF0ZT4gZXhw
ZWN0ZWRDb25uZWN0aW9uQ2hhbmdlcyA9IG5ldyBBcnJheURlcXVlPD4oKTsKICAgICBwcml2YXRl
IFF1ZXVlPEljZUdhdGhlcmluZ1N0YXRlPiBleHBlY3RlZEljZUdhdGhlcmluZ0NoYW5nZXMgPSBu
ZXcgQXJyYXlEZXF1ZTw+KCk7CiAgICAgcHJpdmF0ZSBRdWV1ZTxTdHJpbmc+IGV4cGVjdGVkQWRk
U3RyZWFtTGFiZWxzID0gbmV3IEFycmF5RGVxdWU8PigpOwogICAgIHByaXZhdGUgUXVldWU8U3Ry
aW5nPiBleHBlY3RlZFJlbW92ZVN0cmVhbUxhYmVscyA9IG5ldyBBcnJheURlcXVlPD4oKTsKQEAg
LTE4NywxMSArMTkwLDI5IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3QgewogICAg
ICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkSWNlQ29ubmVjdGlvbkNoYW5nZXMucmVtb3ZlKCksIG5l
d1N0YXRlKTsKICAgICB9CiAKKyAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NDkxKTogUmVt
b3ZlIE5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2sgc3VwcHJlc3Npb24uCisgICAgQFN1cHByZXNz
V2FybmluZ3MoIk5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2siKQorICAgIHB1YmxpYyBzeW5jaHJv
bml6ZWQgdm9pZCBleHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUgbmV3
U3RhdGUpIHsKKyAgICAgIGV4cGVjdGVkQ29ubmVjdGlvbkNoYW5nZXMuYWRkKG5ld1N0YXRlKTsK
KyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NDkx
KTogUmVtb3ZlIE5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2sgc3VwcHJlc3Npb24uCisgICAgQFN1
cHByZXNzV2FybmluZ3MoIk5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2siKQorICAgIHB1YmxpYyBz
eW5jaHJvbml6ZWQgdm9pZCBvbkNvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZSBu
ZXdTdGF0ZSkgeworICAgICAgaWYgKGV4cGVjdGVkQ29ubmVjdGlvbkNoYW5nZXMuaXNFbXB0eSgp
KSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuYW1lICsgIiBnb3QgYW4gdW5leHBlY3Rl
ZCBEVExTIGNvbm5lY3Rpb24gY2hhbmdlICIgKyBuZXdTdGF0ZSk7CisgICAgICAgIHJldHVybjsK
KyAgICAgIH0KKworICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkQ29ubmVjdGlvbkNoYW5nZXMu
cmVtb3ZlKCksIG5ld1N0YXRlKTsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICAvLyBUT0RP
KGJ1Z3Mud2VicnRjLm9yZy84NDkxKTogUmVtb3ZlIE5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2sg
c3VwcHJlc3Npb24uCiAgICAgQFN1cHByZXNzV2FybmluZ3MoIk5vU3luY2hyb25pemVkTWV0aG9k
Q2hlY2siKQogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBvbkljZUNvbm5lY3Rpb25SZWNl
aXZpbmdDaGFuZ2UoYm9vbGVhbiByZWNlaXZpbmcpIHsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRs
bihuYW1lICsgIkdvdCBhbiBJQ0UgY29ubmVjdGlvbiByZWNlaXZpbmcgY2hhbmdlICIgKyByZWNl
aXZpbmcpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5hbWUgKyAiIGdvdCBhbiBJQ0UgY29u
bmVjdGlvbiByZWNlaXZpbmcgY2hhbmdlICIgKyByZWNlaXZpbmcpOwogICAgIH0KIAogICAgIC8v
IFRPRE8oYnVncy53ZWJydGMub3JnLzg0OTEpOiBSZW1vdmUgTm9TeW5jaHJvbml6ZWRNZXRob2RD
aGVjayBzdXBwcmVzc2lvbi4KQEAgLTY2Myw2ICs2ODQsNDUgQEAgcHVibGljIGNsYXNzIFBlZXJD
b25uZWN0aW9uVGVzdCB7CiAgICAgYXNzZXJ0Tm90TnVsbChvZmZlcmluZ1BDKTsKICAgfQogCisg
IEBUZXN0CisgIEBTbWFsbFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdENyZWF0aW9uV2l0aENlcnRp
ZmljYXRlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZh
Y3RvcnkgPSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkuYnVpbGRlcigpLmNyZWF0ZVBlZXJDb25uZWN0
aW9uRmFjdG9yeSgpOworICAgIFBlZXJDb25uZWN0aW9uLlJUQ0NvbmZpZ3VyYXRpb24gY29uZmln
ID0gbmV3IFBlZXJDb25uZWN0aW9uLlJUQ0NvbmZpZ3VyYXRpb24oQXJyYXlzLmFzTGlzdCgpKTsK
KworICAgIC8vIFRlc3QgY2VydGlmaWNhdGUuCisgICAgUnRjQ2VydGlmaWNhdGVQZW0gb3JpZ2lu
YWxDZXJ0ID0gUnRjQ2VydGlmaWNhdGVQZW0uZ2VuZXJhdGVDZXJ0aWZpY2F0ZSgpOworICAgIGNv
bmZpZy5jZXJ0aWZpY2F0ZSA9IG9yaWdpbmFsQ2VydDsKKworICAgIE9ic2VydmVyRXhwZWN0YXRp
b25zIG9mZmVyaW5nRXhwZWN0YXRpb25zID0gbmV3IE9ic2VydmVyRXhwZWN0YXRpb25zKCJQQ1Rl
c3Q6b2ZmZXJlciIpOworICAgIFBlZXJDb25uZWN0aW9uIG9mZmVyaW5nUEMgPSBmYWN0b3J5LmNy
ZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZywgb2ZmZXJpbmdFeHBlY3RhdGlvbnMpOworCisgICAg
UnRjQ2VydGlmaWNhdGVQZW0gcmVzdG9yZWRDZXJ0ID0gb2ZmZXJpbmdQQy5nZXRDZXJ0aWZpY2F0
ZSgpOworICAgIGFzc2VydEVxdWFscyhvcmlnaW5hbENlcnQucHJpdmF0ZUtleSwgcmVzdG9yZWRD
ZXJ0LnByaXZhdGVLZXkpOworICAgIGFzc2VydEVxdWFscyhvcmlnaW5hbENlcnQuY2VydGlmaWNh
dGUsIHJlc3RvcmVkQ2VydC5jZXJ0aWZpY2F0ZSk7CisgIH0KKworICBAVGVzdAorICBAU21hbGxU
ZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDcmVhdGlvbldpdGhDcnlwdG9PcHRpb25zKCkgdGhyb3dz
IEV4Y2VwdGlvbiB7CisgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZhY3RvcnkgPSBQZWVyQ29u
bmVjdGlvbkZhY3RvcnkuYnVpbGRlcigpLmNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOwor
ICAgIFBlZXJDb25uZWN0aW9uLlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnID0gbmV3IFBlZXJDb25u
ZWN0aW9uLlJUQ0NvbmZpZ3VyYXRpb24oQXJyYXlzLmFzTGlzdCgpKTsKKworICAgIGFzc2VydE51
bGwoY29uZmlnLmNyeXB0b09wdGlvbnMpOworCisgICAgQ3J5cHRvT3B0aW9ucyBjcnlwdG9PcHRp
b25zID0gQ3J5cHRvT3B0aW9ucy5idWlsZGVyKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLnNldEVuYWJsZUdjbUNyeXB0b1N1aXRlcyh0cnVlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0RW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0Np
cGhlcih0cnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0RW5h
YmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucyh0cnVlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAuc2V0UmVxdWlyZUZyYW1lRW5jcnlwdGlvbih0cnVlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlQ3J5cHRvT3B0aW9ucygp
OworICAgIGNvbmZpZy5jcnlwdG9PcHRpb25zID0gY3J5cHRvT3B0aW9uczsKKworICAgIE9ic2Vy
dmVyRXhwZWN0YXRpb25zIG9mZmVyaW5nRXhwZWN0YXRpb25zID0gbmV3IE9ic2VydmVyRXhwZWN0
YXRpb25zKCJQQ1Rlc3Q6b2ZmZXJlciIpOworICAgIFBlZXJDb25uZWN0aW9uIG9mZmVyaW5nUEMg
PSBmYWN0b3J5LmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZywgb2ZmZXJpbmdFeHBlY3RhdGlv
bnMpOworICAgIGFzc2VydE5vdE51bGwob2ZmZXJpbmdQQyk7CisgIH0KKwogICBAVGVzdAogICBA
TWVkaXVtVGVzdAogICBwdWJsaWMgdm9pZCB0ZXN0Q29tcGxldGVTZXNzaW9uKCkgdGhyb3dzIEV4
Y2VwdGlvbiB7CkBAIC03NTksMTIgKzgxOSwxNCBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rp
b25UZXN0IHsKIAogICAgIHNkcExhdGNoID0gbmV3IFNkcE9ic2VydmVyTGF0Y2goKTsKICAgICBh
bnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0U2lnbmFsaW5nQ2hhbmdlKFNpZ25hbGluZ1N0YXRl
LlNUQUJMRSk7CisgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFu
Z2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNUSU5HKTsKICAgICBhbnN3ZXJpbmdQQy5zZXRM
b2NhbERlc2NyaXB0aW9uKHNkcExhdGNoLCBhbnN3ZXJTZHApOwogICAgIGFzc2VydFRydWUoc2Rw
TGF0Y2guYXdhaXQoKSk7CiAgICAgYXNzZXJ0TnVsbChzZHBMYXRjaC5nZXRTZHAoKSk7CiAKICAg
ICBzZHBMYXRjaCA9IG5ldyBTZHBPYnNlcnZlckxhdGNoKCk7CiAgICAgb2ZmZXJpbmdFeHBlY3Rh
dGlvbnMuZXhwZWN0U2lnbmFsaW5nQ2hhbmdlKFNpZ25hbGluZ1N0YXRlLkhBVkVfTE9DQUxfT0ZG
RVIpOworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVl
ckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNUSU5HKTsKICAgICBvZmZlcmluZ1BDLnNldExvY2FsRGVz
Y3JpcHRpb24oc2RwTGF0Y2gsIG9mZmVyU2RwKTsKICAgICBhc3NlcnRUcnVlKHNkcExhdGNoLmF3
YWl0KCkpOwogICAgIGFzc2VydE51bGwoc2RwTGF0Y2guZ2V0U2RwKCkpOwpAQCAtNzc0LDYgKzgz
Niw5IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3QgewogCiAgICAgb2ZmZXJpbmdF
eHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUu
Q0hFQ0tJTkcpOwogICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUNvbm5lY3Rpb25D
aGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCk7CisgICAgb2ZmZXJpbmdFeHBlY3Rh
dGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLk5FVyk7Cisg
ICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVj
dGlvblN0YXRlLkNPTk5FQ1RJTkcpOworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENv
bm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpOwogICAgIC8vIFRP
RE8oYmVtYXNjKTogdW5jb21tZW50IG9uY2UgZGVsaXZlcnkgb2YgSUNFQ29tcGxldGVkIGlzIHJl
bGlhYmxlCiAgICAgLy8gKGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Avd2VicnRjL2lzc3Vlcy9k
ZXRhaWw/aWQ9MzAyMSkuCiAgICAgLy8KQEAgLTc4MSw2ICs4NDYsNyBAQCBwdWJsaWMgY2xhc3Mg
UGVlckNvbm5lY3Rpb25UZXN0IHsKICAgICAvLyAgICAgSWNlQ29ubmVjdGlvblN0YXRlLkNPTVBM
RVRFRCk7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUNvbm5lY3Rpb25DaGFu
Z2UoSWNlQ29ubmVjdGlvblN0YXRlLkNIRUNLSU5HKTsKICAgICBhbnN3ZXJpbmdFeHBlY3RhdGlv
bnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVE
KTsKKyAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVy
Q29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCk7CiAKICAgICBvZmZlcmluZ1BDLnNldFJlbW90ZURl
c2NyaXB0aW9uKHNkcExhdGNoLCBhbnN3ZXJTZHApOwogICAgIGFzc2VydFRydWUoc2RwTGF0Y2gu
YXdhaXQoKSk7CkBAIC05ODksMTIgKzEwNTUsMTQgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0
aW9uVGVzdCB7CiAKICAgICBzZHBMYXRjaCA9IG5ldyBTZHBPYnNlcnZlckxhdGNoKCk7CiAgICAg
YW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdFNpZ25hbGluZ0NoYW5nZShTaWduYWxpbmdTdGF0
ZS5TVEFCTEUpOworICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hh
bmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7CiAgICAgYW5zd2VyaW5nUEMuc2V0
TG9jYWxEZXNjcmlwdGlvbihzZHBMYXRjaCwgYW5zd2VyU2RwKTsKICAgICBhc3NlcnRUcnVlKHNk
cExhdGNoLmF3YWl0KCkpOwogICAgIGFzc2VydE51bGwoc2RwTGF0Y2guZ2V0U2RwKCkpOwogCiAg
ICAgc2RwTGF0Y2ggPSBuZXcgU2RwT2JzZXJ2ZXJMYXRjaCgpOwogICAgIG9mZmVyaW5nRXhwZWN0
YXRpb25zLmV4cGVjdFNpZ25hbGluZ0NoYW5nZShTaWduYWxpbmdTdGF0ZS5IQVZFX0xPQ0FMX09G
RkVSKTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBl
ZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7CiAgICAgb2ZmZXJpbmdQQy5zZXRMb2NhbERl
c2NyaXB0aW9uKHNkcExhdGNoLCBvZmZlclNkcCk7CiAgICAgYXNzZXJ0VHJ1ZShzZHBMYXRjaC5h
d2FpdCgpKTsKICAgICBhc3NlcnROdWxsKHNkcExhdGNoLmdldFNkcCgpKTsKQEAgLTEwMDMsMTAg
KzEwNzEsMTQgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uVGVzdCB7CiAKICAgICBvZmZl
cmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25uZWN0aW9uQ2hhbmdlKEljZUNvbm5lY3Rpb25T
dGF0ZS5DSEVDS0lORyk7CiAgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVj
dGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKTsKKyAgICBvZmZlcmluZ0V4
cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuTkVX
KTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJD
b25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7CisgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhw
ZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCk7CiAgICAg
Ly8gVE9ETyhiZW1hc2MpOiB1bmNvbW1lbnQgb25jZSBkZWxpdmVyeSBvZiBJQ0VDb21wbGV0ZWQg
aXMgcmVsaWFibGUKICAgICAvLyAoaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC93ZWJydGMvaXNz
dWVzL2RldGFpbD9pZD0zMDIxKS4KICAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0SWNl
Q29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUuQ0hFQ0tJTkcpOwogICAgIGFuc3dl
cmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25uZWN0aW9uQ2hhbmdlKEljZUNvbm5lY3Rpb25T
dGF0ZS5DT05ORUNURUQpOworICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0
aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKTsKIAogICAgIG9mZmVyaW5n
UEMuc2V0UmVtb3RlRGVzY3JpcHRpb24oc2RwTGF0Y2gsIGFuc3dlclNkcCk7CiAgICAgYXNzZXJ0
VHJ1ZShzZHBMYXRjaC5hd2FpdCgpKTsKQEAgLTExMzksNiArMTIxMSw3IEBAIHB1YmxpYyBjbGFz
cyBQZWVyQ29ubmVjdGlvblRlc3QgewogICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdFNp
Z25hbGluZ0NoYW5nZShTaWduYWxpbmdTdGF0ZS5IQVZFX0xPQ0FMX09GRkVSKTsKICAgICBvZmZl
cmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDYW5kaWRhdGVzKDIpOwogICAgIG9mZmVyaW5nRXhw
ZWN0YXRpb25zLmV4cGVjdEljZUdhdGhlcmluZ0NoYW5nZShJY2VHYXRoZXJpbmdTdGF0ZS5DT01Q
TEVURSk7CisgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQ
ZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RJTkcpOwogICAgIG9mZmVyaW5nUEMuc2V0TG9jYWxE
ZXNjcmlwdGlvbihzZHBMYXRjaCwgb2ZmZXJTZHApOwogICAgIGFzc2VydFRydWUoc2RwTGF0Y2gu
YXdhaXQoKSk7CiAgICAgYXNzZXJ0TnVsbChzZHBMYXRjaC5nZXRTZHAoKSk7CkBAIC0xMTcwLDYg
KzEyNDMsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKICAgICBhbnN3ZXJp
bmdFeHBlY3RhdGlvbnMuZXhwZWN0U2lnbmFsaW5nQ2hhbmdlKFNpZ25hbGluZ1N0YXRlLlNUQUJM
RSk7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUNhbmRpZGF0ZXMoMik7CiAg
ICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUdhdGhlcmluZ0NoYW5nZShJY2VHYXRo
ZXJpbmdTdGF0ZS5DT01QTEVURSk7CisgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENv
bm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNUSU5HKTsKICAgICBhbnN3
ZXJpbmdQQy5zZXRMb2NhbERlc2NyaXB0aW9uKHNkcExhdGNoLCBhbnN3ZXJTZHApOwogICAgIGFz
c2VydFRydWUoc2RwTGF0Y2guYXdhaXQoKSk7CiAgICAgYXNzZXJ0TnVsbChzZHBMYXRjaC5nZXRT
ZHAoKSk7CkBAIC0xMTgxLDYgKzEyNTUsOSBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25U
ZXN0IHsKIAogICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUNvbm5lY3Rpb25DaGFu
Z2UoSWNlQ29ubmVjdGlvblN0YXRlLkNIRUNLSU5HKTsKICAgICBvZmZlcmluZ0V4cGVjdGF0aW9u
cy5leHBlY3RJY2VDb25uZWN0aW9uQ2hhbmdlKEljZUNvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQp
OworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNv
bm5lY3Rpb25TdGF0ZS5ORVcpOworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5l
Y3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNUSU5HKTsKKyAgICBvZmZlcmlu
Z0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUu
Q09OTkVDVEVEKTsKICAgICAvLyBUT0RPKGJlbWFzYyk6IHVuY29tbWVudCBvbmNlIGRlbGl2ZXJ5
IG9mIElDRUNvbXBsZXRlZCBpcyByZWxpYWJsZQogICAgIC8vIChodHRwczovL2NvZGUuZ29vZ2xl
LmNvbS9wL3dlYnJ0Yy9pc3N1ZXMvZGV0YWlsP2lkPTMwMjEpLgogICAgIC8vCkBAIC0xMTg4LDYg
KzEyNjUsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKICAgICAvLyAgICAg
SWNlQ29ubmVjdGlvblN0YXRlLkNPTVBMRVRFRCk7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25z
LmV4cGVjdEljZUNvbm5lY3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNIRUNLSU5HKTsK
ICAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VD
b25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKTsKKyAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhw
ZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCk7CiAKICAg
ICBvZmZlcmluZ1BDLnNldFJlbW90ZURlc2NyaXB0aW9uKHNkcExhdGNoLCBhbnN3ZXJTZHApOwog
ICAgIGFzc2VydFRydWUoc2RwTGF0Y2guYXdhaXQoKSk7CkBAIC0xNTczLDYgKzE2NTEsNyBAQCBw
dWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKICAgICBhc3NlcnRUcnVlKGV4cGVjdGF0
aW9ucy53YWl0Rm9yQWxsRXhwZWN0YXRpb25zVG9CZVNhdGlzZmllZChUSU1FT1VUX1NFQ09ORFMp
KTsKIAogICAgIGV4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25uZWN0aW9uQ2hhbmdlKEljZUNvbm5l
Y3Rpb25TdGF0ZS5DTE9TRUQpOworICAgIGV4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hh
bmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ0xPU0VEKTsKICAgICBleHBlY3RhdGlvbnMuZXhwZWN0
U2lnbmFsaW5nQ2hhbmdlKFNpZ25hbGluZ1N0YXRlLkNMT1NFRCk7CiAgICAgcGMuY2xvc2UoKTsK
ICAgICBhc3NlcnRUcnVlKGV4cGVjdGF0aW9ucy53YWl0Rm9yQWxsRXhwZWN0YXRpb25zVG9CZVNh
dGlzZmllZChUSU1FT1VUX1NFQ09ORFMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3Rz
L3NyYy9vcmcvd2VicnRjL1J0Y0NlcnRpZmljYXRlUGVtVGVzdC5qYXZhIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9u
dGVzdHMvc3JjL29yZy93ZWJydGMvUnRjQ2VydGlmaWNhdGVQZW1UZXN0LmphdmEKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDBmMjk1Yzk0MmY1N2ZmNGY4YmQzYmFkYzY3YzEyODdkOTEzMGRiNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1J0Y0NlcnRpZmljYXRlUGVt
VGVzdC5qYXZhCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKK3BhY2thZ2Ug
b3JnLndlYnJ0YzsKKworaW1wb3J0IHN0YXRpYyBjb20uZ29vZ2xlLmNvbW1vbi50cnV0aC5UcnV0
aC5hc3NlcnRUaGF0OworCitpbXBvcnQgYW5kcm9pZC5zdXBwb3J0LnRlc3QuZmlsdGVycy5TbWFs
bFRlc3Q7CitpbXBvcnQgb3JnLmNocm9taXVtLmJhc2UudGVzdC5CYXNlSlVuaXQ0Q2xhc3NSdW5u
ZXI7CitpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2lt
cG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29u
bmVjdGlvbjsKK2ltcG9ydCBvcmcud2VicnRjLlJ0Y0NlcnRpZmljYXRlUGVtOworCisvKiogVGVz
dHMgZm9yIFJ0Y0NlcnRpZmljYXRlUGVtLmphdmEuICovCitAUnVuV2l0aChCYXNlSlVuaXQ0Q2xh
c3NSdW5uZXIuY2xhc3MpCitwdWJsaWMgY2xhc3MgUnRjQ2VydGlmaWNhdGVQZW1UZXN0IHsKKyAg
QEJlZm9yZQorICBwdWJsaWMgdm9pZCBzZXRVcCgpIHsKKyAgICBTeXN0ZW0ubG9hZExpYnJhcnko
VGVzdENvbnN0YW50cy5OQVRJVkVfTElCUkFSWSk7CisgIH0KKworICBAVGVzdAorICBAU21hbGxU
ZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDb25zdHJ1Y3RvcigpIHsKKyAgICBSdGNDZXJ0aWZpY2F0
ZVBlbSBvcmlnaW5hbCA9IFJ0Y0NlcnRpZmljYXRlUGVtLmdlbmVyYXRlQ2VydGlmaWNhdGUoKTsK
KyAgICBSdGNDZXJ0aWZpY2F0ZVBlbSByZWNyZWF0ZWQgPSBuZXcgUnRjQ2VydGlmaWNhdGVQZW0o
b3JpZ2luYWwucHJpdmF0ZUtleSwgb3JpZ2luYWwuY2VydGlmaWNhdGUpOworICAgIGFzc2VydFRo
YXQob3JpZ2luYWwucHJpdmF0ZUtleSkuaXNFcXVhbFRvKHJlY3JlYXRlZC5wcml2YXRlS2V5KTsK
KyAgICBhc3NlcnRUaGF0KG9yaWdpbmFsLmNlcnRpZmljYXRlKS5pc0VxdWFsVG8ocmVjcmVhdGVk
LmNlcnRpZmljYXRlKTsKKyAgfQorCisgIEBUZXN0CisgIEBTbWFsbFRlc3QKKyAgcHVibGljIHZv
aWQgdGVzdEdlbmVyYXRlQ2VydGlmaWNhdGVEZWZhdWx0cygpIHsKKyAgICBSdGNDZXJ0aWZpY2F0
ZVBlbSBydGNDZXJ0aWZpY2F0ZSA9IFJ0Y0NlcnRpZmljYXRlUGVtLmdlbmVyYXRlQ2VydGlmaWNh
dGUoKTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRpZmljYXRlLnByaXZhdGVLZXkpLmlzTm90RW1w
dHkoKTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRpZmljYXRlLmNlcnRpZmljYXRlKS5pc05vdEVt
cHR5KCk7CisgIH0KKworICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RH
ZW5lcmF0ZUNlcnRpZmljYXRlQ3VzdG9tS2V5VHlwZURlZmF1bHRFeHBpcmVzKCkgeworICAgIFJ0
Y0NlcnRpZmljYXRlUGVtIHJ0Y0NlcnRpZmljYXRlID0KKyAgICAgICAgUnRjQ2VydGlmaWNhdGVQ
ZW0uZ2VuZXJhdGVDZXJ0aWZpY2F0ZShQZWVyQ29ubmVjdGlvbi5LZXlUeXBlLlJTQSk7CisgICAg
YXNzZXJ0VGhhdChydGNDZXJ0aWZpY2F0ZS5wcml2YXRlS2V5KS5pc05vdEVtcHR5KCk7CisgICAg
YXNzZXJ0VGhhdChydGNDZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZSkuaXNOb3RFbXB0eSgpOworICB9
CisKKyAgQFRlc3QKKyAgQFNtYWxsVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0R2VuZXJhdGVDZXJ0
aWZpY2F0ZUN1c3RvbUV4cGlyZXNEZWZhdWx0S2V5VHlwZSgpIHsKKyAgICBSdGNDZXJ0aWZpY2F0
ZVBlbSBydGNDZXJ0aWZpY2F0ZSA9IFJ0Y0NlcnRpZmljYXRlUGVtLmdlbmVyYXRlQ2VydGlmaWNh
dGUoNjAgKiA2MCAqIDI0KTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRpZmljYXRlLnByaXZhdGVL
ZXkpLmlzTm90RW1wdHkoKTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRpZmljYXRlLmNlcnRpZmlj
YXRlKS5pc05vdEVtcHR5KCk7CisgIH0KKworICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1Ymxp
YyB2b2lkIHRlc3RHZW5lcmF0ZUNlcnRpZmljYXRlQ3VzdG9tS2V5VHlwZUFuZEV4cGlyZXMoKSB7
CisgICAgUnRjQ2VydGlmaWNhdGVQZW0gcnRjQ2VydGlmaWNhdGUgPQorICAgICAgICBSdGNDZXJ0
aWZpY2F0ZVBlbS5nZW5lcmF0ZUNlcnRpZmljYXRlKFBlZXJDb25uZWN0aW9uLktleVR5cGUuUlNB
LCA2MCAqIDYwICogMjQpOworICAgIGFzc2VydFRoYXQocnRjQ2VydGlmaWNhdGUucHJpdmF0ZUtl
eSkuaXNOb3RFbXB0eSgpOworICAgIGFzc2VydFRoYXQocnRjQ2VydGlmaWNhdGUuY2VydGlmaWNh
dGUpLmlzTm90RW1wdHkoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMv
c3JjL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25lclRlc3QuamF2YSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRl
c3RzL3NyYy9vcmcvd2VicnRjL1RpbWVzdGFtcEFsaWduZXJUZXN0LmphdmEKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWQ5NDRiNTdmOWQ2NTRkODlkYjAwN2U0ODQwN2E2MTgwYzY3YjRhNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1RpbWVzdGFtcEFsaWduZXJUZXN0
LmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworcGFja2FnZSBvcmcu
d2VicnRjOworCitpbXBvcnQgYW5kcm9pZC5zdXBwb3J0LnRlc3QuZmlsdGVycy5TbWFsbFRlc3Q7
CitpbXBvcnQgb3JnLmNocm9taXVtLmJhc2UudGVzdC5wYXJhbXMuQmFzZUpVbml0NFJ1bm5lckRl
bGVnYXRlOworaW1wb3J0IG9yZy5jaHJvbWl1bS5iYXNlLnRlc3QucGFyYW1zLlBhcmFtZXRlckFu
bm90YXRpb25zLlVzZVJ1bm5lckRlbGVnYXRlOworaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmVDbGFz
czsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworQFVzZVJ1bm5lckRlbGVnYXRlKEJhc2VKVW5p
dDRSdW5uZXJEZWxlZ2F0ZS5jbGFzcykKK3B1YmxpYyBjbGFzcyBUaW1lc3RhbXBBbGlnbmVyVGVz
dCB7CisgIEBCZWZvcmVDbGFzcworICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0VXAoKSB7CisgICAg
U3lzdGVtLmxvYWRMaWJyYXJ5KFRlc3RDb25zdGFudHMuTkFUSVZFX0xJQlJBUlkpOworICB9CisK
KyAgQFRlc3QKKyAgQFNtYWxsVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0R2V0UnRjVGltZU5hbm9z
KCkgeworICAgIFRpbWVzdGFtcEFsaWduZXIuZ2V0UnRjVGltZU5hbm9zKCk7CisgIH0KKworICBA
VGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3REaXNwb3NlKCkgeworICAgIGZp
bmFsIFRpbWVzdGFtcEFsaWduZXIgdGltZXN0YW1wQWxpZ25lciA9IG5ldyBUaW1lc3RhbXBBbGln
bmVyKCk7CisgICAgdGltZXN0YW1wQWxpZ25lci5kaXNwb3NlKCk7CisgIH0KKworICBAVGVzdAor
ICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RUcmFuc2xhdGVUaW1lc3RhbXAoKSB7Cisg
ICAgZmluYWwgVGltZXN0YW1wQWxpZ25lciB0aW1lc3RhbXBBbGlnbmVyID0gbmV3IFRpbWVzdGFt
cEFsaWduZXIoKTsKKyAgICB0aW1lc3RhbXBBbGlnbmVyLnRyYW5zbGF0ZVRpbWVzdGFtcCgvKiBj
YW1lcmFUaW1lTnM9ICovIDEyMyk7CisgICAgdGltZXN0YW1wQWxpZ25lci5kaXNwb3NlKCk7Cisg
IH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL25hdGl2ZV9hcGkvdmlkZW8vdmlkZW9zb3VyY2UuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfYXBp
L3ZpZGVvL3ZpZGVvc291cmNlLmNjCmluZGV4IDRjMzAyZGEwZWQ5ZWIwYjM4YzMxMWYwMTNmNjQ0
M2U0ZmY2OTIyMzYuLmFhZTFkZTdmZjAzNDJhMGViNWNjYzcxNWRjN2ZhZWE3YzRlNGQ5YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL25hdGl2ZV9hcGkvdmlkZW8vdmlkZW9zb3VyY2UuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX2FwaS92aWRl
by92aWRlb3NvdXJjZS5jYwpAQCAtMjUsMTIgKzI1LDE0IEBAIGNsYXNzIEphdmFWaWRlb1RyYWNr
U291cmNlSW1wbCA6IHB1YmxpYyBKYXZhVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZSB7CiAgcHVi
bGljOgogICBKYXZhVmlkZW9UcmFja1NvdXJjZUltcGwoSk5JRW52KiBlbnYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfc2NyZWVuY2FzdCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNfc2NyZWVuY2FzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgYWxpZ25fdGltZXN0YW1wcykKICAgICAgIDogYW5kcm9pZF92aWRlb190cmFja19zb3Vy
Y2VfKAogICAgICAgICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxqbmk6OkFuZHJvaWRW
aWRlb1RyYWNrU291cmNlPigKICAgICAgICAgICAgICAgICBzaWduYWxpbmdfdGhyZWFkLAogICAg
ICAgICAgICAgICAgIGVudiwKLSAgICAgICAgICAgICAgICBpc19zY3JlZW5jYXN0KSksCisgICAg
ICAgICAgICAgICAgaXNfc2NyZWVuY2FzdCwKKyAgICAgICAgICAgICAgICBhbGlnbl90aW1lc3Rh
bXBzKSksCiAgICAgICAgIG5hdGl2ZV9jYXB0dXJlcl9vYnNlcnZlcl8oam5pOjpDcmVhdGVKYXZh
TmF0aXZlQ2FwdHVyZXJPYnNlcnZlcigKICAgICAgICAgICAgIGVudiwKICAgICAgICAgICAgIGFu
ZHJvaWRfdmlkZW9fdHJhY2tfc291cmNlXykpIHt9CkBAIC05Niw5ICs5OCwxMCBAQCBjbGFzcyBK
YXZhVmlkZW9UcmFja1NvdXJjZUltcGwgOiBwdWJsaWMgSmF2YVZpZGVvVHJhY2tTb3VyY2VJbnRl
cmZhY2UgewogcnRjOjpzY29wZWRfcmVmcHRyPEphdmFWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNl
PiBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCiAgICAgSk5JRW52KiBqbmksCiAgICAgcnRjOjpUaHJl
YWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgYm9vbCBpc19zY3JlZW5jYXN0KSB7CisgICAgYm9v
bCBpc19zY3JlZW5jYXN0LAorICAgIGJvb2wgYWxpZ25fdGltZXN0YW1wcykgewogICByZXR1cm4g
bmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxKYXZhVmlkZW9UcmFja1NvdXJjZUltcGw+KAotICAg
ICAgam5pLCBzaWduYWxpbmdfdGhyZWFkLCBpc19zY3JlZW5jYXN0KTsKKyAgICAgIGpuaSwgc2ln
bmFsaW5nX3RocmVhZCwgaXNfc2NyZWVuY2FzdCwgYWxpZ25fdGltZXN0YW1wcyk7CiB9CiAKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV9hcGkvdmlkZW8vdmlkZW9zb3Vy
Y2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL25hdGl2ZV9hcGkvdmlkZW8vdmlkZW9zb3VyY2UuaAppbmRleCAwYzRmMzMzNDJlYmFkNmQ0
YjU5NzlkYWYzY2FlZTk3NjAzYjA2Zjg3Li43NWViZGJjZTMwMjYzZTMwODU1NDA0MTRmMTI4M2Y2
MTAzNjFhMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfYXBpL3ZpZGVvL3ZpZGVvc291cmNlLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0
aXZlX2FwaS92aWRlby92aWRlb3NvdXJjZS5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8
am5pLmg+CiAKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS90aHJlYWQuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9uYXRpdmVfYXBpL2pu
aS9zY29wZWRfamF2YV9yZWYuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zMiw3ICszMyw4
IEBAIGNsYXNzIEphdmFWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlIDogcHVibGljIFZpZGVvVHJh
Y2tTb3VyY2VJbnRlcmZhY2UgewogcnRjOjpzY29wZWRfcmVmcHRyPEphdmFWaWRlb1RyYWNrU291
cmNlSW50ZXJmYWNlPiBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCiAgICAgSk5JRW52KiBlbnYsCiAg
ICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgYm9vbCBpc19zY3JlZW5jYXN0
KTsKKyAgICBib29sIGlzX3NjcmVlbmNhc3QsCisgICAgYm9vbCBhbGlnbl90aW1lc3RhbXBzKTsK
IAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfdW5pdHRlc3RzL2F1
ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfdW5pdHRlc3RzL2F1ZGlv
X2RldmljZS9hdWRpb19kZXZpY2VfdW5pdHRlc3QuY2MKaW5kZXggNWU0NjA1MmI5MDA0ODE1NmJm
MWMzZDY5OGEyNTEzNjg0ZGY4ZDM2OS4uOThkNTg1Mzg3YTA0ZDhiNjY0NjdmZTJlYWNlZTQ2MGZk
OTdiMmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0ZXN0cy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2
aWNlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVzdHMvYXVkaW9fZGV2aWNlL2F1ZGlvX2Rl
dmljZV91bml0dGVzdC5jYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fZGV2aWNlL2luY2x1ZGUvbW9ja19hdWRpb190cmFuc3BvcnQuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9t
YWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3RpbWV1dGlscy5oIgpAQCAtMjUsNyArMjYsNiBAQAogI2luY2x1ZGUgInNkay9h
bmRyb2lkL3NyYy9qbmkvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9tb2R1bGUuaCIKICNpbmNs
dWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL2F1ZGlvX2RldmljZS9vcGVuc2xlc19jb21tb24uaCIK
ICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL2puaV9oZWxwZXJzLmgiCi0jaW5jbHVkZSAi
c3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oIgogI2luY2x1ZGUgInRlc3Qv
Z21vY2suaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3Vw
cG9ydC9maWxldXRpbHMuaCIKQEAgLTM2NCw3ICszNjQsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFu
c3BvcnRBbmRyb2lkIDogcHVibGljIHRlc3Q6Ok1vY2tBdWRpb1RyYW5zcG9ydCB7CiAKICAgLy8g
U2V0IGRlZmF1bHQgYWN0aW9ucyBvZiB0aGUgbW9jayBvYmplY3QuIFdlIGFyZSBkZWxlZ2F0aW5n
IHRvIGZha2UKICAgLy8gaW1wbGVtZW50YXRpb25zIChvZiBBdWRpb1N0cmVhbUludGVyZmFjZSkg
aGVyZS4KLSAgdm9pZCBIYW5kbGVDYWxsYmFja3MoRXZlbnRXcmFwcGVyKiB0ZXN0X2lzX2RvbmUs
CisgIHZvaWQgSGFuZGxlQ2FsbGJhY2tzKHJ0Yzo6RXZlbnQqIHRlc3RfaXNfZG9uZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgQXVkaW9TdHJlYW1JbnRlcmZhY2UqIGF1ZGlvX3N0cmVhbSwKICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG51bV9jYWxsYmFja3MpIHsKICAgICB0ZXN0X2lzX2Rv
bmVfID0gdGVzdF9pc19kb25lOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGNsYXNzIE1vY2tBdWRpb1Ry
YW5zcG9ydEFuZHJvaWQgOiBwdWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0IHsKICAgYm9v
bCByZWNfbW9kZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGVfICYga1JlY29yZGluZzsgfQogCiAgcHJp
dmF0ZToKLSAgRXZlbnRXcmFwcGVyKiB0ZXN0X2lzX2RvbmVfOworICBydGM6OkV2ZW50KiB0ZXN0
X2lzX2RvbmVfOwogICBzaXplX3QgbnVtX2NhbGxiYWNrc187CiAgIGludCB0eXBlXzsKICAgc2l6
ZV90IHBsYXlfY291bnRfOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIGNsYXNzIE1vY2tBdWRpb1RyYW5z
cG9ydEFuZHJvaWQgOiBwdWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0IHsKIC8vIEF1ZGlv
RGV2aWNlVGVzdCB0ZXN0IGZpeHR1cmUuCiBjbGFzcyBBdWRpb0RldmljZVRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKICBwcm90ZWN0ZWQ6Ci0gIEF1ZGlvRGV2aWNlVGVzdCgpIDogdGVz
dF9pc19kb25lXyhFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSB7CisgIEF1ZGlvRGV2aWNlVGVzdCgp
IHsKICAgICAvLyBPbmUtdGltZSBpbml0aWFsaXphdGlvbiBvZiBKVk0gYW5kIGFwcGxpY2F0aW9u
IGNvbnRleHQuIEVuc3VyZXMgdGhhdCB3ZQogICAgIC8vIGNhbiBkbyBjYWxscyBiZXR3ZWVuIEMr
KyBhbmQgSmF2YS4gSW5pdGlhbGl6ZXMgYm90aCBKYXZhIGFuZCBPcGVuU0wgRVMKICAgICAvLyBp
bXBsZW1lbnRhdGlvbnMuCkBAIC02ODMsNyArNjgzLDcgQEAgY2xhc3MgQXVkaW9EZXZpY2VUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAKICAgSk5JRW52KiBqbmlfOwogICBzdGQ6OnVu
aXF1ZV9wdHI8SmF2YVBhcmFtUmVmPGpvYmplY3Q+PiBjb250ZXh0XzsKLSAgc3RkOjp1bmlxdWVf
cHRyPEV2ZW50V3JhcHBlcj4gdGVzdF9pc19kb25lXzsKKyAgcnRjOjpFdmVudCB0ZXN0X2lzX2Rv
bmVfOwogICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZXZpY2VNb2R1bGU+IGF1ZGlvX2Rldmlj
ZV87CiAgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBhdWRpb19tYW5hZ2VyXzsKICAgQXVk
aW9QYXJhbWV0ZXJzIG91dHB1dF9wYXJhbWV0ZXJzXzsKQEAgLTg4MCwxNCArODgwLDE0IEBAIFRF
U1RfRihBdWRpb0RldmljZVRlc3QsIFN0b3BSZWNvcmRpbmdSZXF1aXJlc0luaXRUb1Jlc3RhcnQp
IHsKIC8vIGF1ZGlvIHNhbXBsZXMgdG8gcGxheSBvdXQgdXNpbmcgdGhlIE5lZWRNb3JlUGxheURh
dGEgY2FsbGJhY2suCiBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRWZXJpZnlD
YWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCBtb2NrKGtQbGF5b3V0KTsK
LSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgbnVsbHB0ciwga051
bUNhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBudWxs
cHRyLCBrTnVtQ2FsbGJhY2tzKTsKICAgRVhQRUNUX0NBTEwobW9jaywgTmVlZE1vcmVQbGF5RGF0
YShwbGF5b3V0X2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrQnl0ZXNQZXJTYW1wbGUsIHBsYXlvdXRfY2hhbm5lbHMoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5b3V0X3NhbXBsZV9yYXRlKCks
IE5vdE51bGwoKSwgXywgXywgXykpCiAgICAgICAuVGltZXMoQXRMZWFzdChrTnVtQ2FsbGJhY2tz
KSk7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNr
KCZtb2NrKSk7CiAgIFN0YXJ0UGxheW91dCgpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0
VGltZU91dEluTWlsbGlzZWNvbmRzKTsKKyAgdGVzdF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91
dEluTWlsbGlzZWNvbmRzKTsKICAgU3RvcFBsYXlvdXQoKTsKIH0KIApAQCAtODk1LDcgKzg5NSw3
IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UGxheW91dFZlcmlmeUNhbGxiYWNrcykg
ewogLy8gYXVkaW8gc2FtcGxlcyB2aWEgdGhlIFJlY29yZGVkRGF0YUlzQXZhaWxhYmxlIGNhbGxi
YWNrLgogVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFj
a3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCBtb2NrKGtSZWNvcmRpbmcpOwotICBt
b2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBudWxscHRyLCBrTnVtQ2Fs
bGJhY2tzKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRlc3RfaXNfZG9uZV8sIG51bGxwdHIs
IGtOdW1DYWxsYmFja3MpOwogICBFWFBFQ1RfQ0FMTCgKICAgICAgIG1vY2ssIFJlY29yZGVkRGF0
YUlzQXZhaWxhYmxlKE5vdE51bGwoKSwgcmVjb3JkX2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtCeXRlc1BlclNhbXBsZSwgcmVj
b3JkX2NoYW5uZWxzKCksCkBAIC05MDQsNyArOTA0LDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVz
dCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKIAogICBFWFBFQ1RfRVEoMCwgYXVk
aW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFJlY29y
ZGluZygpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRz
KTsKKyAgdGVzdF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAg
U3RvcFJlY29yZGluZygpOwogfQogCkBAIC05MTIsNyArOTEyLDcgQEAgVEVTVF9GKEF1ZGlvRGV2
aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKIC8vIGFjdGl2ZSBpbiBi
b3RoIGRpcmVjdGlvbnMuCiBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRBbmRS
ZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCBt
b2NrKGtQbGF5b3V0IHwga1JlY29yZGluZyk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3Rf
aXNfZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNh
bGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVD
VF9DQUxMKG1vY2ssIE5lZWRNb3JlUGxheURhdGEocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVm
ZmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J5dGVzUGVyU2Ft
cGxlLCBwbGF5b3V0X2NoYW5uZWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGxheW91dF9zYW1wbGVfcmF0ZSgpLCBOb3ROdWxsKCksIF8sIF8sIF8pKQpAQCAtOTI1
LDcgKzkyNSw3IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UGxheW91dEFuZFJlY29y
ZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJl
Z2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsKICAgU3RhcnRS
ZWNvcmRpbmcoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vj
b25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7
CiAgIFN0b3BSZWNvcmRpbmcoKTsKICAgU3RvcFBsYXlvdXQoKTsKIH0KQEAgLTk0MSwxMiArOTQx
LDExIEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFJ1blBsYXlvdXRXaXRoRmlsZUFzU291cmNl
KSB7CiAgIHN0ZDo6c3RyaW5nIGZpbGVfbmFtZSA9IEdldEZpbGVOYW1lKHBsYXlvdXRfc2FtcGxl
X3JhdGUoKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxlQXVkaW9TdHJlYW0+IGZpbGVfYXVkaW9f
c3RyZWFtKAogICAgICAgbmV3IEZpbGVBdWRpb1N0cmVhbShudW1fY2FsbGJhY2tzLCBmaWxlX25h
bWUsIHBsYXlvdXRfc2FtcGxlX3JhdGUoKSkpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0
X2lzX2RvbmVfLmdldCgpLCBmaWxlX2F1ZGlvX3N0cmVhbS5nZXQoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgbnVtX2NhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lz
X2RvbmVfLCBmaWxlX2F1ZGlvX3N0cmVhbS5nZXQoKSwgbnVtX2NhbGxiYWNrcyk7CiAgIC8vIFNl
dE1heFBsYXlvdXRWb2x1bWUoKTsKICAgRVhQRUNUX0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdp
c3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNf
ZG9uZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOworICB0ZXN0X2lzX2RvbmVf
LldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOwogICBTdG9wUGxheW91dCgpOwogfQog
CkBAIC0xMDg0LDEzICsxMDgzLDEzIEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIERJU0FCTEVE
X1J1blBsYXlvdXRBbmRSZWNvcmRpbmdJbkZ1bGxEdXBsZXgpIHsKICAgTmljZU1vY2s8TW9ja0F1
ZGlvVHJhbnNwb3J0QW5kcm9pZD4gbW9jayhrUGxheW91dCB8IGtSZWNvcmRpbmcpOwogICBzdGQ6
OnVuaXF1ZV9wdHI8Rmlmb0F1ZGlvU3RyZWFtPiBmaWZvX2F1ZGlvX3N0cmVhbSgKICAgICAgIG5l
dyBGaWZvQXVkaW9TdHJlYW0ocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpKTsKLSAg
bW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgZmlmb19hdWRpb19zdHJl
YW0uZ2V0KCksCisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBmaWZvX2F1
ZGlvX3N0cmVhbS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAga0Z1bGxEdXBsZXhUaW1l
SW5TZWMgKiBrTnVtQ2FsbGJhY2tzUGVyU2Vjb25kKTsKICAgU2V0TWF4UGxheW91dFZvbHVtZSgp
OwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygm
bW9jaykpOwogICBTdGFydFJlY29yZGluZygpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9p
c19kb25lXy0+V2FpdCgKKyAgdGVzdF9pc19kb25lXy5XYWl0KAogICAgICAgc3RkOjptYXgoa1Rl
c3RUaW1lT3V0SW5NaWxsaXNlY29uZHMsIDEwMDAgKiBrRnVsbER1cGxleFRpbWVJblNlYykpOwog
ICBTdG9wUGxheW91dCgpOwogICBTdG9wUmVjb3JkaW5nKCk7CkBAIC0xMTE3LDE0ICsxMTE2LDE0
IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIERJU0FCTEVEX01lYXN1cmVMb29wYmFja0xhdGVu
Y3kpIHsKICAgTmljZU1vY2s8TW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZD4gbW9jayhrUGxheW91
dCB8IGtSZWNvcmRpbmcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8TGF0ZW5jeU1lYXN1cmluZ0F1ZGlv
U3RyZWFtPiBsYXRlbmN5X2F1ZGlvX3N0cmVhbSgKICAgICAgIG5ldyBMYXRlbmN5TWVhc3VyaW5n
QXVkaW9TdHJlYW0ocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpKTsKLSAgbW9jay5I
YW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgbGF0ZW5jeV9hdWRpb19zdHJlYW0u
Z2V0KCksCisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBsYXRlbmN5X2F1
ZGlvX3N0cmVhbS5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAga01lYXN1cmVMYXRlbmN5
VGltZUluU2VjICoga051bUNhbGxiYWNrc1BlclNlY29uZCk7CiAgIEVYUEVDVF9FUSgwLCBhdWRp
b19kZXZpY2UoKS0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFNldE1heFBsYXlv
dXRWb2x1bWUoKTsKICAgRGlzYWJsZUJ1aWx0SW5BRUNJZkF2YWlsYWJsZSgpOwogICBTdGFydFJl
Y29yZGluZygpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdCgKKyAg
dGVzdF9pc19kb25lXy5XYWl0KAogICAgICAgc3RkOjptYXgoa1Rlc3RUaW1lT3V0SW5NaWxsaXNl
Y29uZHMsIDEwMDAgKiBrTWVhc3VyZUxhdGVuY3lUaW1lSW5TZWMpKTsKICAgU3RvcFBsYXlvdXQo
KTsKICAgU3RvcFJlY29yZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0ZXN0cy9vcmcvd2Vi
cnRjL0phdmFWaWRlb1NvdXJjZVRlc3RIZWxwZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVzdHMvb3JnL3dl
YnJ0Yy9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyLmphdmEKaW5kZXggYmRlMzRlOTVjZjYzMzNi
MGQ5MjUwMWU2NmEyMjBlOTgwMzU5NTVlNC4uMzA5Yzc4NjU0ZWYzNjZkNjU1YzU4MWQ1YjkzYjM2
ZGU1MDA0OWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0ZXN0cy9vcmcvd2VicnRjL0phdmFWaWRl
b1NvdXJjZVRlc3RIZWxwZXIuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfdW5pdHRlc3RzL29yZy93ZWJydGMvSmF2
YVZpZGVvU291cmNlVGVzdEhlbHBlci5qYXZhCkBAIC0yNCw4ICsyNCw5IEBAIHB1YmxpYyBjbGFz
cyBKYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyIHsKICAgfQogCiAgIEBDYWxsZWRCeU5hdGl2ZQot
ICBwdWJsaWMgc3RhdGljIHZvaWQgZGVsaXZlckZyYW1lKGludCB3aWR0aCwgaW50IGhlaWdodCwg
aW50IHJvdGF0aW9uLCBDYXB0dXJlck9ic2VydmVyIG9ic2VydmVyKSB7CisgIHB1YmxpYyBzdGF0
aWMgdm9pZCBkZWxpdmVyRnJhbWUoCisgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBy
b3RhdGlvbiwgbG9uZyB0aW1lc3RhbXBOcywgQ2FwdHVyZXJPYnNlcnZlciBvYnNlcnZlcikgewog
ICAgIG9ic2VydmVyLm9uRnJhbWVDYXB0dXJlZCgKLSAgICAgICAgbmV3IFZpZGVvRnJhbWUoSmF2
YUk0MjBCdWZmZXIuYWxsb2NhdGUod2lkdGgsIGhlaWdodCksIHJvdGF0aW9uLCAwIC8qIHRpbWVz
dGFtcE5zPSAqLykpOworICAgICAgICBuZXcgVmlkZW9GcmFtZShKYXZhSTQyMEJ1ZmZlci5hbGxv
Y2F0ZSh3aWR0aCwgaGVpZ2h0KSwgcm90YXRpb24sIHRpbWVzdGFtcE5zKSk7CiAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL25hdGl2ZV91bml0dGVzdHMvdmlkZW8vdmlkZW9zb3VyY2VfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRp
dmVfdW5pdHRlc3RzL3ZpZGVvL3ZpZGVvc291cmNlX3VuaXR0ZXN0LmNjCmluZGV4IGI1OGVkMWE0
NWE1NGVkMDdiOWQ4N2ZjMjQzMDgyYmQ5ZGUwNzBjN2IuLjdlY2Y5ZjhlYjRiOGEwZjc4OTY1M2Fl
ZjZlZDY3OWMzMzU0OGIzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVzdHMvdmlkZW8vdmlkZW9z
b3VyY2VfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0ZXN0cy92aWRlby92aWRlb3NvdXJjZV91
bml0dGVzdC5jYwpAQCAtNDAsOSArNDAsOSBAQCBURVNUKEphdmFWaWRlb1NvdXJjZVRlc3QsIENy
ZWF0ZUphdmFWaWRlb1NvdXJjZSkgewogICBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCkt
PldyYXBDdXJyZW50VGhyZWFkKCk7CiAKICAgcnRjOjpzY29wZWRfcmVmcHRyPEphdmFWaWRlb1Ry
YWNrU291cmNlSW50ZXJmYWNlPiB2aWRlb190cmFja19zb3VyY2UgPQotICAgICAgQ3JlYXRlSmF2
YVZpZGVvU291cmNlKGVudiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRocmVh
ZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovKTsKKyAgICAgIENyZWF0ZUphdmFW
aWRlb1NvdXJjZSgKKyAgICAgICAgICBlbnYsIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2Uo
KS0+Q3VycmVudFRocmVhZCgpLAorICAgICAgICAgIGZhbHNlIC8qIGlzX3NjcmVlbmNhc3QgKi8s
IHRydWUgLyogYWxpZ25fdGltZXN0YW1wcyAqLyk7CiAKICAgQVNTRVJUX05FKG51bGxwdHIsIHZp
ZGVvX3RyYWNrX3NvdXJjZSk7CiAgIEVYUEVDVF9ORShudWxscHRyLApAQCAtNTcsOSArNTcsOSBA
QCBURVNUKEphdmFWaWRlb1NvdXJjZVRlc3QsIE9uRnJhbWVDYXB0dXJlZEZyYW1lSXNEZWxpdmVy
ZWRUb1NpbmspIHsKICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVu
dFRocmVhZCgpOwogCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxKYXZhVmlkZW9UcmFja1NvdXJjZUlu
dGVyZmFjZT4gdmlkZW9fdHJhY2tfc291cmNlID0KLSAgICAgIENyZWF0ZUphdmFWaWRlb1NvdXJj
ZShlbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJ
bnN0YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFsc2UgLyogaXNfc2NyZWVuY2FzdCAqLyk7CisgICAgICBDcmVhdGVKYXZhVmlkZW9Tb3VyY2Uo
CisgICAgICAgICAgZW52LCBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRU
aHJlYWQoKSwKKyAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovLCB0cnVlIC8qIGFs
aWduX3RpbWVzdGFtcHMgKi8pOwogICB2aWRlb190cmFja19zb3VyY2UtPkFkZE9yVXBkYXRlU2lu
aygmdGVzdF92aWRlb19zaW5rLCBydGM6OlZpZGVvU2lua1dhbnRzKCkpOwogCiAgIGpuaTo6SmF2
YV9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyX3N0YXJ0Q2FwdHVyZSgKQEAgLTY4LDggKzY4LDkg
QEAgVEVTVChKYXZhVmlkZW9Tb3VyY2VUZXN0LCBPbkZyYW1lQ2FwdHVyZWRGcmFtZUlzRGVsaXZl
cmVkVG9TaW5rKSB7CiAgIGNvbnN0IGludCB3aWR0aCA9IDIwOwogICBjb25zdCBpbnQgaGVpZ2h0
ID0gMzI7CiAgIGNvbnN0IGludCByb3RhdGlvbiA9IDE4MDsKKyAgY29uc3QgaW50NjRfdCB0aW1l
c3RhbXAgPSA5ODc2NTQzMjE7CiAgIGpuaTo6SmF2YV9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVy
X2RlbGl2ZXJGcmFtZSgKLSAgICAgIGVudiwgd2lkdGgsIGhlaWdodCwgcm90YXRpb24sCisgICAg
ICBlbnYsIHdpZHRoLCBoZWlnaHQsIHJvdGF0aW9uLCB0aW1lc3RhbXAsCiAgICAgICB2aWRlb190
cmFja19zb3VyY2UtPkdldEphdmFWaWRlb0NhcHR1cmVyT2JzZXJ2ZXIoZW52KSk7CiAKICAgc3Rk
Ojp2ZWN0b3I8VmlkZW9GcmFtZT4gZnJhbWVzID0gdGVzdF92aWRlb19zaW5rLkdldEZyYW1lcygp
OwpAQCAtODAsMTUgKzgxLDQ5IEBAIFRFU1QoSmF2YVZpZGVvU291cmNlVGVzdCwgT25GcmFtZUNh
cHR1cmVkRnJhbWVJc0RlbGl2ZXJlZFRvU2luaykgewogICBFWFBFQ1RfRVEocm90YXRpb24sIGZy
YW1lLnJvdGF0aW9uKCkpOwogfQogCitURVNUKEphdmFWaWRlb1NvdXJjZVRlc3QsCisgICAgIE9u
RnJhbWVDYXB0dXJlZEZyYW1lSXNEZWxpdmVyZWRUb1NpbmtXaXRoUHJlc2VydmVkVGltZXN0YW1w
KSB7CisgIFRlc3RWaWRlb1NpbmsgdGVzdF92aWRlb19zaW5rOworCisgIEpOSUVudiogZW52ID0g
QXR0YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7CisgIC8vIFdyYXAgdGVzdCB0aHJlYWQgc28g
aXQgY2FuIGJlIHVzZWQgYXMgdGhlIHNpZ25hbGluZyB0aHJlYWQuCisgIHJ0Yzo6VGhyZWFkTWFu
YWdlcjo6SW5zdGFuY2UoKS0+V3JhcEN1cnJlbnRUaHJlYWQoKTsKKworICBydGM6OnNjb3BlZF9y
ZWZwdHI8SmF2YVZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2U+IHZpZGVvX3RyYWNrX3NvdXJjZSA9
CisgICAgICBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCisgICAgICAgICAgZW52LCBydGM6OlRocmVh
ZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKKyAgICAgICAgICBmYWxzZSAv
KiBpc19zY3JlZW5jYXN0ICovLCBmYWxzZSAvKiBhbGlnbl90aW1lc3RhbXBzICovKTsKKyAgdmlk
ZW9fdHJhY2tfc291cmNlLT5BZGRPclVwZGF0ZVNpbmsoJnRlc3RfdmlkZW9fc2luaywgcnRjOjpW
aWRlb1NpbmtXYW50cygpKTsKKworICBqbmk6OkphdmFfSmF2YVZpZGVvU291cmNlVGVzdEhlbHBl
cl9zdGFydENhcHR1cmUoCisgICAgICBlbnYsIHZpZGVvX3RyYWNrX3NvdXJjZS0+R2V0SmF2YVZp
ZGVvQ2FwdHVyZXJPYnNlcnZlcihlbnYpLAorICAgICAgdHJ1ZSAvKiBzdWNjZXNzICovKTsKKyAg
Y29uc3QgaW50IHdpZHRoID0gMjA7CisgIGNvbnN0IGludCBoZWlnaHQgPSAzMjsKKyAgY29uc3Qg
aW50IHJvdGF0aW9uID0gMTgwOworICBjb25zdCBpbnQ2NF90IHRpbWVzdGFtcCA9IDk4NzY1NDMy
MTsKKyAgam5pOjpKYXZhX0phdmFWaWRlb1NvdXJjZVRlc3RIZWxwZXJfZGVsaXZlckZyYW1lKAor
ICAgICAgZW52LCB3aWR0aCwgaGVpZ2h0LCByb3RhdGlvbiwgOTg3NjU0MzIxLAorICAgICAgdmlk
ZW9fdHJhY2tfc291cmNlLT5HZXRKYXZhVmlkZW9DYXB0dXJlck9ic2VydmVyKGVudikpOworCisg
IHN0ZDo6dmVjdG9yPFZpZGVvRnJhbWU+IGZyYW1lcyA9IHRlc3RfdmlkZW9fc2luay5HZXRGcmFt
ZXMoKTsKKyAgQVNTRVJUX0VRKDF1LCBmcmFtZXMuc2l6ZSgpKTsKKyAgd2VicnRjOjpWaWRlb0Zy
YW1lIGZyYW1lID0gZnJhbWVzWzBdOworICBFWFBFQ1RfRVEod2lkdGgsIGZyYW1lLndpZHRoKCkp
OworICBFWFBFQ1RfRVEoaGVpZ2h0LCBmcmFtZS5oZWlnaHQoKSk7CisgIEVYUEVDVF9FUShyb3Rh
dGlvbiwgZnJhbWUucm90YXRpb24oKSk7CisgIEVYUEVDVF9FUSh0aW1lc3RhbXAgLyAxMDAwLCBm
cmFtZS50aW1lc3RhbXBfdXMoKSk7Cit9CisKIFRFU1QoSmF2YVZpZGVvU291cmNlVGVzdCwgQ2Fw
dHVyZXJTdGFydGVkU3VjY2Vzc1N0YXRlQmVjb21lc0xpdmUpIHsKICAgSk5JRW52KiBlbnYgPSBB
dHRhY2hDdXJyZW50VGhyZWFkSWZOZWVkZWQoKTsKICAgLy8gV3JhcCB0ZXN0IHRocmVhZCBzbyBp
dCBjYW4gYmUgdXNlZCBhcyB0aGUgc2lnbmFsaW5nIHRocmVhZC4KICAgcnRjOjpUaHJlYWRNYW5h
Z2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVudFRocmVhZCgpOwogCiAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxKYXZhVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZT4gdmlkZW9fdHJhY2tfc291cmNlID0K
LSAgICAgIENyZWF0ZUphdmFWaWRlb1NvdXJjZShlbnYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaXNfc2NyZWVuY2FzdCAqLyk7Cisg
ICAgICBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCisgICAgICAgICAgZW52LCBydGM6OlRocmVhZE1h
bmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKKyAgICAgICAgICBmYWxzZSAvKiBp
c19zY3JlZW5jYXN0ICovLCB0cnVlIC8qIGFsaWduX3RpbWVzdGFtcHMgKi8pOwogCiAgIGpuaTo6
SmF2YV9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyX3N0YXJ0Q2FwdHVyZSgKICAgICAgIGVudiwg
dmlkZW9fdHJhY2tfc291cmNlLT5HZXRKYXZhVmlkZW9DYXB0dXJlck9ic2VydmVyKGVudiksCkBA
IC0xMDQsOSArMTM5LDkgQEAgVEVTVChKYXZhVmlkZW9Tb3VyY2VUZXN0LCBDYXB0dXJlclN0YXJ0
ZWRGYWlsdXJlU3RhdGVCZWNvbWVzRW5kZWQpIHsKICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0
YW5jZSgpLT5XcmFwQ3VycmVudFRocmVhZCgpOwogCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxKYXZh
VmlkZW9UcmFja1NvdXJjZUludGVyZmFjZT4gdmlkZW9fdHJhY2tfc291cmNlID0KLSAgICAgIENy
ZWF0ZUphdmFWaWRlb1NvdXJjZShlbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRj
OjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaXNfc2NyZWVuY2FzdCAqLyk7CisgICAgICBDcmVh
dGVKYXZhVmlkZW9Tb3VyY2UoCisgICAgICAgICAgZW52LCBydGM6OlRocmVhZE1hbmFnZXI6Oklu
c3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKKyAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5j
YXN0ICovLCB0cnVlIC8qIGFsaWduX3RpbWVzdGFtcHMgKi8pOwogCiAgIGpuaTo6SmF2YV9KYXZh
VmlkZW9Tb3VyY2VUZXN0SGVscGVyX3N0YXJ0Q2FwdHVyZSgKICAgICAgIGVudiwgdmlkZW9fdHJh
Y2tfc291cmNlLT5HZXRKYXZhVmlkZW9DYXB0dXJlck9ic2VydmVyKGVudiksCkBAIC0xMjIsOSAr
MTU3LDkgQEAgVEVTVChKYXZhVmlkZW9Tb3VyY2VUZXN0LCBDYXB0dXJlclN0b3BwZWRTdGF0ZUJl
Y29tZXNFbmRlZCkgewogICBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPldyYXBDdXJy
ZW50VGhyZWFkKCk7CiAKICAgcnRjOjpzY29wZWRfcmVmcHRyPEphdmFWaWRlb1RyYWNrU291cmNl
SW50ZXJmYWNlPiB2aWRlb190cmFja19zb3VyY2UgPQotICAgICAgQ3JlYXRlSmF2YVZpZGVvU291
cmNlKGVudiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRocmVhZE1hbmFnZXI6
Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovKTsKKyAgICAgIENyZWF0ZUphdmFWaWRlb1NvdXJj
ZSgKKyAgICAgICAgICBlbnYsIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+Q3VycmVu
dFRocmVhZCgpLAorICAgICAgICAgIGZhbHNlIC8qIGlzX3NjcmVlbmNhc3QgKi8sIHRydWUgLyog
YWxpZ25fdGltZXN0YW1wcyAqLyk7CiAKICAgam5pOjpKYXZhX0phdmFWaWRlb1NvdXJjZVRlc3RI
ZWxwZXJfc3RhcnRDYXB0dXJlKAogICAgICAgZW52LCB2aWRlb190cmFja19zb3VyY2UtPkdldEph
dmFWaWRlb0NhcHR1cmVyT2JzZXJ2ZXIoZW52KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJy
dGMvSGFyZHdhcmVWaWRlb0VuY29kZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvSGFyZHdhcmVW
aWRlb0VuY29kZXIuamF2YQppbmRleCBlYmY5ZGUzNzRmMTRiMDFkOTNhMTgxY2Y3YmUyNzY1ZjZk
NDM4N2Q5Li5jMzZhNjhjZDIxYjdmMWI1MzBmZTE0ODM4MWY4ODM2NWY0ZjI5MGMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9zcmMvamF2YS9vcmcvd2VicnRjL0hhcmR3YXJlVmlkZW9FbmNvZGVyLmphdmEKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2ph
dmEvb3JnL3dlYnJ0Yy9IYXJkd2FyZVZpZGVvRW5jb2Rlci5qYXZhCkBAIC00MDMsMTIgKzQwMyw2
IEBAIGNsYXNzIEhhcmR3YXJlVmlkZW9FbmNvZGVyIGltcGxlbWVudHMgVmlkZW9FbmNvZGVyIHsK
ICAgICByZXR1cm4gVmlkZW9Db2RlY1N0YXR1cy5PSzsKICAgfQogCi0gIEBPdmVycmlkZQotICBw
dWJsaWMgVmlkZW9Db2RlY1N0YXR1cyBzZXRDaGFubmVsUGFyYW1ldGVycyhzaG9ydCBwYWNrZXRM
b3NzLCBsb25nIHJvdW5kVHJpcFRpbWVNcykgewotICAgIGVuY29kZVRocmVhZENoZWNrZXIuY2hl
Y2tJc09uVmFsaWRUaHJlYWQoKTsKLSAgICByZXR1cm4gVmlkZW9Db2RlY1N0YXR1cy5PSzsgLy8g
Tm8gb3AuCi0gIH0KLQogICBAT3ZlcnJpZGUKICAgcHVibGljIFZpZGVvQ29kZWNTdGF0dXMgc2V0
UmF0ZUFsbG9jYXRpb24oQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZUFsbG9jYXRpb24sIGludCBm
cmFtZXJhdGUpIHsKICAgICBlbmNvZGVUaHJlYWRDaGVja2VyLmNoZWNrSXNPblZhbGlkVGhyZWFk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL05hdGl2ZUNhcHR1cmVyT2JzZXJ2ZXIu
amF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qYXZhL29yZy93ZWJydGMvTmF0aXZlQ2FwdHVyZXJPYnNlcnZlci5qYXZhCmluZGV4
IDI0ODY5ODE4YTY2YTM4ZTljMDNlMTIyYTBhM2E5MDQyMzgwYzNjOGUuLmY2NzNiMjQ4ODViMmI2
MmVlZGMyMGFiMjBlYjY1ZmUxOGExMzg3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMv
TmF0aXZlQ2FwdHVyZXJPYnNlcnZlci5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvTmF0aXZl
Q2FwdHVyZXJPYnNlcnZlci5qYXZhCkBAIC0xMSw2ICsxMSw3IEBACiBwYWNrYWdlIG9yZy53ZWJy
dGM7CiAKIGltcG9ydCBqYXZheC5hbm5vdGF0aW9uLk51bGxhYmxlOworaW1wb3J0IG9yZy53ZWJy
dGMuVmlkZW9GcmFtZTsKIAogLyoqCiAgKiBJbXBsZW1lbnRzIFZpZGVvQ2FwdHVyZXIuQ2FwdHVy
ZXJPYnNlcnZlciBhbmQgZmVlZHMgZnJhbWVzIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2Vi
cnRjL1ZQOERlY29kZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvVlA4RGVjb2Rlci5qYXZhCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjI5YzM0OWM3YTEwMjE4NzE3YjlmYzY5NGZl
MDQwNTZhYjEzZWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L3NyYy9qYXZhL29yZy93ZWJydGMvVlA4RGVjb2Rlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEs
MjAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLXBhY2thZ2Ugb3JnLndlYnJ0YzsK
LQotY2xhc3MgVlA4RGVjb2RlciBleHRlbmRzIFdyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIgewot
ICBAT3ZlcnJpZGUKLSAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZlVmlkZW9EZWNvZGVyKCkgewot
ICAgIHJldHVybiBuYXRpdmVDcmVhdGVEZWNvZGVyKCk7Ci0gIH0KLQotICBzdGF0aWMgbmF0aXZl
IGxvbmcgbmF0aXZlQ3JlYXRlRGVjb2RlcigpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2phdmEvb3JnL3dl
YnJ0Yy9WUDhFbmNvZGVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOEVuY29kZXIuamF2YQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJmOGY1MDQxNzdkZWVlZjljM2VhN2M3NzU4
NTJkYTI4ZTQzYjRlNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOEVuY29kZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0x
LDI1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi1wYWNrYWdlIG9yZy53ZWJydGM7
Ci0KLWNsYXNzIFZQOEVuY29kZXIgZXh0ZW5kcyBXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyIHsK
LSAgQE92ZXJyaWRlCi0gIHB1YmxpYyBsb25nIGNyZWF0ZU5hdGl2ZVZpZGVvRW5jb2RlcigpIHsK
LSAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRW5jb2RlcigpOwotICB9Ci0KLSAgc3RhdGljIG5hdGl2
ZSBsb25nIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsKLQotICBAT3ZlcnJpZGUKLSAgcHVibGljIGJv
b2xlYW4gaXNIYXJkd2FyZUVuY29kZXIoKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOURlY29kZXIuamF2YSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93
ZWJydGMvVlA5RGVjb2Rlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmZl
ZTJkMzYyYjJhZTU4Mzc1OGNiZWI5ZGNkMWFkN2RhOWVlMWI2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvVlA5RGVjb2Rlci5q
YXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMp
IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICov
Ci0KLXBhY2thZ2Ugb3JnLndlYnJ0YzsKLQotY2xhc3MgVlA5RGVjb2RlciBleHRlbmRzIFdyYXBw
ZWROYXRpdmVWaWRlb0RlY29kZXIgewotICBAT3ZlcnJpZGUKLSAgcHVibGljIGxvbmcgY3JlYXRl
TmF0aXZlVmlkZW9EZWNvZGVyKCkgewotICAgIHJldHVybiBuYXRpdmVDcmVhdGVEZWNvZGVyKCk7
Ci0gIH0KLQotICBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlRGVjb2RlcigpOwotCi0g
IHN0YXRpYyBuYXRpdmUgYm9vbGVhbiBuYXRpdmVJc1N1cHBvcnRlZCgpOwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
c3JjL2phdmEvb3JnL3dlYnJ0Yy9WUDlFbmNvZGVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQ
OUVuY29kZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM3MDViZDljNjAx
N2ViNjY0NDljNzI3ZjM2NDA3MTVmNzE5MTNkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOUVuY29kZXIuamF2YQorKysg
L2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
Ci0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi1wYWNr
YWdlIG9yZy53ZWJydGM7Ci0KLWNsYXNzIFZQOUVuY29kZXIgZXh0ZW5kcyBXcmFwcGVkTmF0aXZl
VmlkZW9FbmNvZGVyIHsKLSAgQE92ZXJyaWRlCi0gIHB1YmxpYyBsb25nIGNyZWF0ZU5hdGl2ZVZp
ZGVvRW5jb2RlcigpIHsKLSAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRW5jb2RlcigpOwotICB9Ci0K
LSAgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsKLQotICBAT3ZlcnJp
ZGUKLSAgcHVibGljIGJvb2xlYW4gaXNIYXJkd2FyZUVuY29kZXIoKSB7Ci0gICAgcmV0dXJuIGZh
bHNlOwotICB9Ci0KLSAgc3RhdGljIG5hdGl2ZSBib29sZWFuIG5hdGl2ZUlzU3VwcG9ydGVkKCk7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1dyYXBwZWROYXRpdmVWaWRlb0VuY29k
ZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5qYXZh
CmluZGV4IDA3ZTg0Mjg2MjEwMTIwNzEwN2NmZDQyNzgzYmI5ZDYwNTBhNTFkNWIuLjk1OWNhZmNh
NTY5MDdjMGExOGJmNTFjNjZmOGJmYWIyNjFjY2MyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93
ZWJydGMvV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJy
dGMvV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5qYXZhCkBAIC0zMiwxMSArMzIsNiBAQCBhYnN0
cmFjdCBjbGFzcyBXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyIGltcGxlbWVudHMgVmlkZW9FbmNv
ZGVyIHsKICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIk5vdCBp
bXBsZW1lbnRlZC4iKTsKICAgfQogCi0gIEBPdmVycmlkZQotICBwdWJsaWMgVmlkZW9Db2RlY1N0
YXR1cyBzZXRDaGFubmVsUGFyYW1ldGVycyhzaG9ydCBwYWNrZXRMb3NzLCBsb25nIHJvdW5kVHJp
cFRpbWVNcykgewotICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigi
Tm90IGltcGxlbWVudGVkLiIpOwotICB9Ci0KICAgQE92ZXJyaWRlCiAgIHB1YmxpYyBWaWRlb0Nv
ZGVjU3RhdHVzIHNldFJhdGVBbGxvY2F0aW9uKEJpdHJhdGVBbGxvY2F0aW9uIGFsbG9jYXRpb24s
IGludCBmcmFtZXJhdGUpIHsKICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNl
cHRpb24oIk5vdCBpbXBsZW1lbnRlZC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZG1lZGlh
ZGVjb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZG1lZGlhZGVjb2Rlci5jYwppbmRleCA0N2RkYWFjNDY3
MmViMDFkYTBjMjQxNDc0NzlkNWEzY2IxZTFjZjQxLi40ZGY1MDgyOWMzNmIxMGUxYzBlMDA5OTIx
MjNjNTM2OGQ5ZmQ4ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRtZWRpYWRlY29kZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS9hbmRyb2lkbWVkaWFkZWNvZGVyLmNjCkBAIC0zNSw3ICszNSw2IEBACiAjaW5j
bHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L3ZpZGVvX2NvbW1vbi5oIgog
CiB1c2luZyBydGM6OkJpbmQ7Ci11c2luZyBydGM6OlRocmVhZDsKIHVzaW5nIHJ0Yzo6VGhyZWFk
TWFuYWdlcjsKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIGpuaSB7CkBAIC0xMjEsNyAr
MTIwLDcgQEAgY2xhc3MgTWVkaWFDb2RlY1ZpZGVvRGVjb2RlciA6IHB1YmxpYyBWaWRlb0RlY29k
ZXIsIHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyIHsKIAogICAvLyBTdGF0ZSB0aGF0IGlzIGNv
bnN0YW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhpcyBvYmplY3Qgb25jZSB0aGUgY3RvcgogICAv
LyByZXR1cm5zLgotICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkPgorICBzdGQ6OnVuaXF1ZV9wdHI8
cnRjOjpUaHJlYWQ+CiAgICAgICBjb2RlY190aHJlYWRfOyAgLy8gVGhyZWFkIG9uIHdoaWNoIHRv
IG9wZXJhdGUgTWVkaWFDb2RlYy4KICAgU2NvcGVkSmF2YUdsb2JhbFJlZjxqb2JqZWN0PiBqX21l
ZGlhX2NvZGVjX3ZpZGVvX2RlY29kZXJfOwogCkBAIC0xMzcsNyArMTM2LDcgQEAgTWVkaWFDb2Rl
Y1ZpZGVvRGVjb2Rlcjo6TWVkaWFDb2RlY1ZpZGVvRGVjb2RlcihKTklFbnYqIGpuaSwKICAgICAg
IGluaXRlZF8oZmFsc2UpLAogICAgICAgc3dfZmFsbGJhY2tfcmVxdWlyZWRfKGZhbHNlKSwKICAg
ICAgIHVzZV9zdXJmYWNlXyh1c2Vfc3VyZmFjZSksCi0gICAgICBjb2RlY190aHJlYWRfKFRocmVh
ZDo6Q3JlYXRlKCkpLAorICAgICAgY29kZWNfdGhyZWFkXyhydGM6OlRocmVhZDo6Q3JlYXRlKCkp
LAogICAgICAgal9tZWRpYV9jb2RlY192aWRlb19kZWNvZGVyXygKICAgICAgICAgICBqbmksCiAg
ICAgICAgICAgSmF2YV9NZWRpYUNvZGVjVmlkZW9EZWNvZGVyX0NvbnN0cnVjdG9yKGpuaSkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZG1lZGlhZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZG1l
ZGlhZW5jb2Rlci5jYwppbmRleCA0MzViYzcxM2E4NTgwY2Q5YWI0ZjFhOTY3MTY4MGUxNGE4OTg0
OWJjLi4wOWIyY2NmNDNmNDBjZDQ5MWJlYTA1NjE4YmIyYmFiYmUxMTY3MjM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL2FuZHJvaWRtZWRpYWVuY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkbWVkaWFlbmNv
ZGVyLmNjCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2lu
Y2x1ZGUvbGlieXV2L3ZpZGVvX2NvbW1vbi5oIgogCiB1c2luZyBydGM6OkJpbmQ7Ci11c2luZyBy
dGM6OlRocmVhZDsKIHVzaW5nIHJ0Yzo6VGhyZWFkTWFuYWdlcjsKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CkBAIC0xMDUsMTMgKzEwNCw5IEBAIGNsYXNzIE1lZGlhQ29kZWNWaWRlb0VuY29kZXIgOiBw
dWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgaW50MzJfdCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2Fs
bGJhY2soCiAgICAgICBFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwog
ICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZTsKLSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1l
dGVycyh1aW50MzJfdCAvKiBwYWNrZXRfbG9zcyAqLywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IC8qIHJ0dCAqLykgb3ZlcnJpZGU7CiAgIGludDMyX3QgU2V0UmF0ZUFs
bG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgcmF0ZV9hbGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lX3JhdGUpIG92ZXJyaWRl
OwotCi0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBoYXNfZWdsX2NvbnRleHRfOyB9Ci0gIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgp
IGNvbnN0IG92ZXJyaWRlOworICBFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0IG92
ZXJyaWRlOwogCiAgIC8vIEZpbGxzIHRoZSBpbnB1dCBidWZmZXIgd2l0aCBkYXRhIGZyb20gdGhl
IGJ1ZmZlcnMgcGFzc2VkIGFzIHBhcmFtZXRlcnMuCiAgIGJvb2wgRmlsbElucHV0QnVmZmVyKEpO
SUVudiogam5pLApAQCAtMTgwLDcgKzE3NSw3IEBAIGNsYXNzIE1lZGlhQ29kZWNWaWRlb0VuY29k
ZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgLy8gdHJ1ZSBvbiBzdWNjZXNzLgogICBib29s
IERlbGl2ZXJQZW5kaW5nT3V0cHV0cyhKTklFbnYqIGpuaSk7CiAKLSAgVmlkZW9FbmNvZGVyOjpT
Y2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIFZp
ZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5nc0ludGVybmFsKCkg
Y29uc3Q7CiAKICAgLy8gRGlzcGxheXMgZW5jb2RlciBzdGF0aXN0aWNzLgogICB2b2lkIExvZ1N0
YXRpc3RpY3MoYm9vbCBmb3JjZV9sb2cpOwpAQCAtMjcxLDYgKzI2Niw3IEBAIGNsYXNzIE1lZGlh
Q29kZWNWaWRlb0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgc2l6ZV90IGdvZl9p
ZHhfOwogCiAgIGNvbnN0IGJvb2wgaGFzX2VnbF9jb250ZXh0XzsKKyAgRW5jb2RlckluZm8gZW5j
b2Rlcl9pbmZvXzsKIAogICAvLyBUZW1wb3JhcnkgZml4IGZvciBWUDguCiAgIC8vIFNlbmRzIGEg
a2V5IGZyYW1lIGlmIGZyYW1lcyBhcmUgbGFyZ2VseSBzcGFjZWQgYXBhcnQgKHBvc3NpYmx5CkBA
IC0zNTgsMTcgKzM1NCwxNiBAQCBpbnQzMl90IE1lZGlhQ29kZWNWaWRlb0VuY29kZXI6OkluaXRF
bmNvZGUoY29uc3QgVmlkZW9Db2RlYyogY29kZWNfc2V0dGluZ3MsCiAgICAgQUxPR0QgPDwgIkgu
MjY0IHByb2ZpbGU6ICIgPDwgcHJvZmlsZV87CiAgIH0KIAorICBlbmNvZGVyX2luZm9fLnN1cHBv
cnRzX25hdGl2ZV9oYW5kbGUgPSBoYXNfZWdsX2NvbnRleHRfOworICBlbmNvZGVyX2luZm9fLmlt
cGxlbWVudGF0aW9uX25hbWUgPSAiTWVkaWFDb2RlYyI7CisgIGVuY29kZXJfaW5mb18uc2NhbGlu
Z19zZXR0aW5ncyA9IEdldFNjYWxpbmdTZXR0aW5nc0ludGVybmFsKCk7CisKICAgcmV0dXJuIElu
aXRFbmNvZGVJbnRlcm5hbCgKICAgICAgIGluaXRfd2lkdGgsIGluaXRfaGVpZ2h0LCBjb2RlY19z
ZXR0aW5ncy0+c3RhcnRCaXRyYXRlLAogICAgICAgY29kZWNfc2V0dGluZ3MtPm1heEZyYW1lcmF0
ZSwKICAgICAgIGNvZGVjX3NldHRpbmdzLT5leHBlY3RfZW5jb2RlX2Zyb21fdGV4dHVyZSAmJiBo
YXNfZWdsX2NvbnRleHRfKTsKIH0KIAotaW50MzJfdCBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpT
ZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCAvKiBwYWNrZXRfbG9zcyAqLywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCAvKiBy
dHQgKi8pIHsKLSAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLX0KLQogYm9vbCBNZWRp
YUNvZGVjVmlkZW9FbmNvZGVyOjpSZXNldENvZGVjKCkgewogICBSVENfRENIRUNLX0NBTExFRF9T
RVFVRU5USUFMTFkoJmVuY29kZXJfcXVldWVfY2hlY2tlcl8pOwogICBBTE9HRSA8PCAiUmVzZXQi
OwpAQCAtOTMwLDYgKzkyNSwxMCBAQCBpbnQzMl90IE1lZGlhQ29kZWNWaWRlb0VuY29kZXI6OlNl
dFJhdGVBbGxvY2F0aW9uKAogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQogCitW
aWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIE1lZGlhQ29kZWNWaWRlb0VuY29kZXI6OkdldEVuY29k
ZXJJbmZvKCkgY29uc3QgeworICByZXR1cm4gZW5jb2Rlcl9pbmZvXzsKK30KKwogYm9vbCBNZWRp
YUNvZGVjVmlkZW9FbmNvZGVyOjpEZWxpdmVyUGVuZGluZ091dHB1dHMoSk5JRW52KiBqbmkpIHsK
ICAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZlbmNvZGVyX3F1ZXVlX2NoZWNrZXJf
KTsKIApAQCAtMTE0OCw4ICsxMTQ3LDggQEAgdm9pZCBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpM
b2dTdGF0aXN0aWNzKGJvb2wgZm9yY2VfbG9nKSB7CiAgIH0KIH0KIAotVmlkZW9FbmNvZGVyOjpT
Y2FsaW5nU2V0dGluZ3MgTWVkaWFDb2RlY1ZpZGVvRW5jb2Rlcjo6R2V0U2NhbGluZ1NldHRpbmdz
KCkKLSAgICBjb25zdCB7CitWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncworTWVkaWFDb2Rl
Y1ZpZGVvRW5jb2Rlcjo6R2V0U2NhbGluZ1NldHRpbmdzSW50ZXJuYWwoKSBjb25zdCB7CiAgIGlm
ICghc2NhbGVfKQogICAgIHJldHVybiBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5nczo6a09m
ZjsKIApAQCAtMTIwNiwxMCArMTIwNSw2IEBAIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdz
IE1lZGlhQ29kZWNWaWRlb0VuY29kZXI6OkdldFNjYWxpbmdTZXR0aW5ncygpCiAgIHJldHVybiBW
aWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5nczo6a09mZjsKIH0KIAotY29uc3QgY2hhciogTWVk
aWFDb2RlY1ZpZGVvRW5jb2Rlcjo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3QgewotICByZXR1
cm4gIk1lZGlhQ29kZWMiOwotfQotCiBzdGF0aWMgdm9pZCBKTklfTWVkaWFDb2RlY1ZpZGVvRW5j
b2Rlcl9GaWxsSW5wdXRCdWZmZXIoCiAgICAgSk5JRW52KiBqbmksCiAgICAgY29uc3QgSmF2YVBh
cmFtUmVmPGpjbGFzcz4mLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkbmV0d29ya21vbml0b3Iu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9zcmMvam5pL2FuZHJvaWRuZXR3b3JrbW9uaXRvci5jYwppbmRleCBiMTM1MWVmMWUxYjc0NTU1
MDQ5NzU2MWY5YmMwZDE5MmY5NTEyZjc2Li43YWMxNzI4MWY5N2NhZjlmY2U3MzYxZTU0N2U2ZDli
ZTJkNzBjOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRuZXR3b3JrbW9uaXRvci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL2FuZHJvaWRuZXR3b3JrbW9uaXRvci5jYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1
ZGUgInJ0Y19iYXNlL2JpbmQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9pcGFkZHJlc3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogI2luY2x1ZGUg
InNkay9hbmRyb2lkL2dlbmVyYXRlZF9iYXNlX2puaS9qbmkvTmV0d29ya01vbml0b3JBdXRvRGV0
ZWN0X2puaS5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF9iYXNlX2puaS9qbmkv
TmV0d29ya01vbml0b3Jfam5pLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWR2aWRlb3RyYWNr
c291cmNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkdmlkZW90cmFja3NvdXJjZS5jYwppbmRleCA0MWQ0Mjc4
YWM5Y2YzYWFkNDdjMWZhYTZkNmQyODM2MDA1YzFmODlmLi5lNzI4NTBmMjQ5ODhiMDQ4N2E4ODUw
YmEwNTExYzdjNGI1YjFlNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWR2aWRlb3RyYWNrc291
cmNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZHZpZGVvdHJhY2tzb3VyY2UuY2MKQEAgLTI1LDEwICsy
NSwxMiBAQCBjb25zdCBpbnQga1JlcXVpcmVkUmVzb2x1dGlvbkFsaWdubWVudCA9IDI7CiAKIEFu
ZHJvaWRWaWRlb1RyYWNrU291cmNlOjpBbmRyb2lkVmlkZW9UcmFja1NvdXJjZShydGM6OlRocmVh
ZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBKTklFbnYqIGpuaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzX3NjcmVlbmNhc3QpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19zY3JlZW5jYXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxpZ25f
dGltZXN0YW1wcykKICAgICA6IEFkYXB0ZWRWaWRlb1RyYWNrU291cmNlKGtSZXF1aXJlZFJlc29s
dXRpb25BbGlnbm1lbnQpLAogICAgICAgc2lnbmFsaW5nX3RocmVhZF8oc2lnbmFsaW5nX3RocmVh
ZCksCi0gICAgICBpc19zY3JlZW5jYXN0Xyhpc19zY3JlZW5jYXN0KSB7CisgICAgICBpc19zY3Jl
ZW5jYXN0Xyhpc19zY3JlZW5jYXN0KSwKKyAgICAgIGFsaWduX3RpbWVzdGFtcHNfKGFsaWduX3Rp
bWVzdGFtcHMpIHsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQW5kcm9pZFZpZGVvVHJhY2tTb3Vy
Y2UgY3RvciI7CiAgIGNhbWVyYV90aHJlYWRfY2hlY2tlcl8uRGV0YWNoRnJvbVRocmVhZCgpOwog
fQpAQCAtNzUsNyArNzcsOSBAQCB2b2lkIEFuZHJvaWRWaWRlb1RyYWNrU291cmNlOjpPbkZyYW1l
Q2FwdHVyZWQoCiAKICAgaW50NjRfdCBjYW1lcmFfdGltZV91cyA9IHRpbWVzdGFtcF9ucyAvIHJ0
Yzo6a051bU5hbm9zZWNzUGVyTWljcm9zZWM7CiAgIGludDY0X3QgdHJhbnNsYXRlZF9jYW1lcmFf
dGltZV91cyA9Ci0gICAgICB0aW1lc3RhbXBfYWxpZ25lcl8uVHJhbnNsYXRlVGltZXN0YW1wKGNh
bWVyYV90aW1lX3VzLCBydGM6OlRpbWVNaWNyb3MoKSk7CisgICAgICBhbGlnbl90aW1lc3RhbXBz
XyA/IHRpbWVzdGFtcF9hbGlnbmVyXy5UcmFuc2xhdGVUaW1lc3RhbXAoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYW1lcmFfdGltZV91cywgcnRjOjpUaW1lTWljcm9zKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICA6IGNhbWVyYV90aW1lX3VzOwogCiAgIGludCBhZGFwdGVkX3dp
ZHRoOwogICBpbnQgYWRhcHRlZF9oZWlnaHQ7CkBAIC04NCwxMCArODgsMTkgQEAgdm9pZCBBbmRy
b2lkVmlkZW9UcmFja1NvdXJjZTo6T25GcmFtZUNhcHR1cmVkKAogICBpbnQgY3JvcF94OwogICBp
bnQgY3JvcF95OwogCi0gIGlmICghQWRhcHRGcmFtZSh3aWR0aCwgaGVpZ2h0LCBjYW1lcmFfdGlt
ZV91cywgJmFkYXB0ZWRfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAmYWRhcHRlZF9oZWlnaHQs
ICZjcm9wX3dpZHRoLCAmY3JvcF9oZWlnaHQsICZjcm9wX3gsCi0gICAgICAgICAgICAgICAgICAm
Y3JvcF95KSkgewotICAgIHJldHVybjsKKyAgaWYgKHJvdGF0aW9uICUgMTgwID09IDApIHsKKyAg
ICBpZiAoIUFkYXB0RnJhbWUod2lkdGgsIGhlaWdodCwgY2FtZXJhX3RpbWVfdXMsICZhZGFwdGVk
X3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAmYWRhcHRlZF9oZWlnaHQsICZjcm9wX3dpZHRo
LCAmY3JvcF9oZWlnaHQsICZjcm9wX3gsCisgICAgICAgICAgICAgICAgICAgICZjcm9wX3kpKSB7
CisgICAgICByZXR1cm47CisgICAgfQorICB9IGVsc2UgeworICAgIC8vIFN3YXAgYWxsIHdpZHRo
L2hlaWdodCBhbmQgeC95LgorICAgIGlmICghQWRhcHRGcmFtZShoZWlnaHQsIHdpZHRoLCBjYW1l
cmFfdGltZV91cywgJmFkYXB0ZWRfaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAmYWRhcHRl
ZF93aWR0aCwgJmNyb3BfaGVpZ2h0LCAmY3JvcF93aWR0aCwgJmNyb3BfeSwKKyAgICAgICAgICAg
ICAgICAgICAgJmNyb3BfeCkpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CiAgIH0KIAogICBydGM6
OnNjb3BlZF9yZWZwdHI8VmlkZW9GcmFtZUJ1ZmZlcj4gYnVmZmVyID0KQEAgLTEwMywxMiArMTE2
LDE2IEBAIHZvaWQgQW5kcm9pZFZpZGVvVHJhY2tTb3VyY2U6Ok9uRnJhbWVDYXB0dXJlZCgKICAg
T25GcmFtZShWaWRlb0ZyYW1lKGJ1ZmZlciwgcm90YXRpb24sIHRyYW5zbGF0ZWRfY2FtZXJhX3Rp
bWVfdXMpKTsKIH0KIAotdm9pZCBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZTo6T25PdXRwdXRGb3Jt
YXRSZXF1ZXN0KGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAordm9pZCBBbmRyb2lkVmlkZW9UcmFja1NvdXJj
ZTo6T25PdXRwdXRGb3JtYXRSZXF1ZXN0KGludCBsYW5kc2NhcGVfd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxhbmRzY2FwZV9o
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHBvcnRyYWl0X3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBwb3J0cmFpdF9oZWlnaHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZwcykgewotICBjcmlja2V0
OjpWaWRlb0Zvcm1hdCBmb3JtYXQod2lkdGgsIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyaWNrZXQ6OlZpZGVvRm9ybWF0OjpGcHNUb0ludGVydmFsKGZwcyksIDApOwot
ICB2aWRlb19hZGFwdGVyKCktPk9uT3V0cHV0Rm9ybWF0UmVxdWVzdChmb3JtYXQpOworICB2aWRl
b19hZGFwdGVyKCktPk9uT3V0cHV0Rm9ybWF0UmVxdWVzdCgKKyAgICAgIHN0ZDo6bWFrZV9wYWly
KGxhbmRzY2FwZV93aWR0aCwgbGFuZHNjYXBlX2hlaWdodCksCisgICAgICBsYW5kc2NhcGVfd2lk
dGggKiBsYW5kc2NhcGVfaGVpZ2h0LAorICAgICAgc3RkOjptYWtlX3BhaXIocG9ydHJhaXRfd2lk
dGgsIHBvcnRyYWl0X2hlaWdodCksCisgICAgICBwb3J0cmFpdF93aWR0aCAqIHBvcnRyYWl0X2hl
aWdodCwgZnBzKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGpuaQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9h
bmRyb2lkdmlkZW90cmFja3NvdXJjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkdmlkZW90cmFja3NvdXJjZS5o
CmluZGV4IDhmMDkyYzFiMDQxZDZhZWEzYjQ5NTJiNjA3YjJjOWE3MjE4MmRlNGMuLjRmODQ0MmU1
Nzc4MTU4MGZkZDE5YjI4N2M0YjhlNzAzYzVjNTRmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9p
ZHZpZGVvdHJhY2tzb3VyY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWR2aWRlb3RyYWNrc291cmNlLmgK
QEAgLTI5LDcgKzI5LDggQEAgY2xhc3MgQW5kcm9pZFZpZGVvVHJhY2tTb3VyY2UgOiBwdWJsaWMg
cnRjOjpBZGFwdGVkVmlkZW9UcmFja1NvdXJjZSB7CiAgcHVibGljOgogICBBbmRyb2lkVmlkZW9U
cmFja1NvdXJjZShydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSk5JRW52KiBqbmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNfc2NyZWVuY2FzdCA9IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c19zY3JlZW5jYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFsaWduX3RpbWVz
dGFtcHMpOwogICB+QW5kcm9pZFZpZGVvVHJhY2tTb3VyY2UoKSBvdmVycmlkZTsKIAogICBib29s
IGlzX3NjcmVlbmNhc3QoKSBjb25zdCBvdmVycmlkZTsKQEAgLTUzLDE1ICs1NCwyMCBAQCBjbGFz
cyBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZSA6IHB1YmxpYyBydGM6OkFkYXB0ZWRWaWRlb1RyYWNr
U291cmNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVJlZjxqb2JqZWN0PiYgal92aWRlb19m
cmFtZV9idWZmZXIpOwogCi0gIHZvaWQgT25PdXRwdXRGb3JtYXRSZXF1ZXN0KGludCB3aWR0aCwg
aW50IGhlaWdodCwgaW50IGZwcyk7CisgIHZvaWQgT25PdXRwdXRGb3JtYXRSZXF1ZXN0KGludCBs
YW5kc2NhcGVfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsYW5kc2Nh
cGVfaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9ydHJhaXRfd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3J0cmFpdF9oZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcHMpOwogCiAgcHJpdmF0ZToKICAgcnRj
OjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWRfOwogICBydGM6OkFzeW5jSW52b2tlciBpbnZva2Vy
XzsKICAgcnRjOjpUaHJlYWRDaGVja2VyIGNhbWVyYV90aHJlYWRfY2hlY2tlcl87CiAgIFNvdXJj
ZVN0YXRlIHN0YXRlXzsKLSAgcnRjOjpUaW1lc3RhbXBBbGlnbmVyIHRpbWVzdGFtcF9hbGlnbmVy
XzsKICAgY29uc3QgYm9vbCBpc19zY3JlZW5jYXN0XzsKKyAgcnRjOjpUaW1lc3RhbXBBbGlnbmVy
IHRpbWVzdGFtcF9hbGlnbmVyXzsKKyAgY29uc3QgYm9vbCBhbGlnbl90aW1lc3RhbXBzXzsKIH07
CiAKIH0gIC8vIG5hbWVzcGFjZSBqbmkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYXVkaW9fZGV2aWNlL2F1
ZGlvX2RldmljZV9tb2R1bGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfbW9k
dWxlLmNjCmluZGV4IGRjM2E4ZmU0YmE1NTNhN2RhZTE0MjhjMzJlMDQ0MWE2NjRjMjZhN2UuLmUw
NGEwMWZhZWFkMWJmNjBjM2M2ZjRlMWMxOGNiZDUyZWY4ZGRlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
YXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9tb2R1bGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hdWRpb19kZXZp
Y2UvYXVkaW9fZGV2aWNlX21vZHVsZS5jYwpAQCAtMTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSA8
dXRpbGl0eT4KIAorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9i
dWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvc3JjL2puaS9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX21vZHVsZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9h
dWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX21vZHVsZS5oCmluZGV4IGNkZGQzZTA2NzY5Nzg1NTU5
NDAzODliMzQ5MmU2MTAyMmViZTFmMDIuLjQ3NmRhMTRjZWI5MjgyNWU5YzMzNDg5MjQ0MWViZjQw
NWNkOGJlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9tb2R1
bGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9zcmMvam5pL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfbW9kdWxlLmgKQEAgLTE0
LDEwICsxNCwxMyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMv
b3B0aW9uYWwuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2Vf
YnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19k
ZXZpY2UuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9uYXRpdmVfYXBpL2puaS9zY29wZWRfamF2
YV9yZWYuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIEF1ZGlvRGV2aWNlQnVmZmVy
OworCiBuYW1lc3BhY2Ugam5pIHsKIAogY2xhc3MgQXVkaW9JbnB1dCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMv
am5pL2J1aWx0aW5hdWRpb2RlY29kZXJmYWN0b3J5ZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYnVpbHRpbmF1
ZGlvZGVjb2RlcmZhY3RvcnlmYWN0b3J5LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4YTI4NDM2Mzc0OTY3NjRk
NDE4NDEyYzNjOWY0NGRmNDY5OTI2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2J1aWx0aW5h
dWRpb2RlY29kZXJmYWN0b3J5ZmFjdG9yeS5jYwpAQCAtMCwwICsxLDI4IEBACisvKgorICogIENv
cHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KKyAqLworCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX2J1aWx0aW5fYXVkaW9f
Y29kZWNzX2puaS9qbmkvQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5X2puaS5oIgor
I2luY2x1ZGUgInNkay9hbmRyb2lkL25hdGl2ZV9hcGkvam5pL2phdmFfdHlwZXMuaCIKKyNpbmNs
dWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL2puaV9oZWxwZXJzLmgiCisKKyNpbmNsdWRlICJhcGkv
YXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworbmFtZXNwYWNlIGpuaSB7CisKK3N0YXRpYyBqbG9uZworSk5JX0J1aWx0aW5B
dWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeV9DcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9y
eSgKKyAgICBKTklFbnYqIGVudiwKKyAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNzPiYgamNh
bGxlcikgeworICByZXR1cm4gTmF0aXZlVG9KYXZhUG9pbnRlcihDcmVhdGVCdWlsdGluQXVkaW9E
ZWNvZGVyRmFjdG9yeSgpLnJlbGVhc2UoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBqbmkKK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYnVpbHRpbmF1ZGlvZW5jb2Rl
cmZhY3RvcnlmYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9idWlsdGluYXVkaW9lbmNvZGVyZmFjdG9yeWZhY3Rv
cnkuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzFhZWZiYTlhYjI3OGVmNjQzZGIwMjJkNjBlMjc5ZTkxYWNlODJi
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYnVpbHRpbmF1ZGlvZW5jb2RlcmZhY3RvcnlmYWN0
b3J5LmNjCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJz
ZGsvYW5kcm9pZC9nZW5lcmF0ZWRfYnVpbHRpbl9hdWRpb19jb2RlY3Nfam5pL2puaS9CdWlsdGlu
QXVkaW9FbmNvZGVyRmFjdG9yeUZhY3Rvcnlfam5pLmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQv
bmF0aXZlX2FwaS9qbmkvamF2YV90eXBlcy5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9q
bmkvam5pX2hlbHBlcnMuaCIKKworI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9h
dWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2Ug
am5pIHsKKworc3RhdGljIGpsb25nCitKTklfQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0
b3J5X0NyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KAorICAgIEpOSUVudiogZW52LAor
ICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+JiBqY2FsbGVyKSB7CisgIHJldHVybiBOYXRp
dmVUb0phdmFQb2ludGVyKENyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCkucmVsZWFz
ZSgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGpuaQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvc3JjL2puaS9lbmNvZGVkaW1hZ2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2VuY29kZWRpbWFnZS5jYwpp
bmRleCBjMGVhMjhlMmRjMzIzOTI3YThlMjdiMDBkNzNkZjdjN2U1ZDNkYzYxLi4yMWY4MzM2NGQ5
N2Q2N2E1ZjU5NDk3ODRjNTVkZGFhMDZhYTE1ZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2VuY29kZWRp
bWFnZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvam5pL2VuY29kZWRpbWFnZS5jYwpAQCAtMTAsNyArMTAsNyBAQAogCiAj
aW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9lbmNvZGVkaW1hZ2UuaCIKIAotI2luY2x1ZGUg
ImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVv
L2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNs
dWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRfdmlkZW9fam5pL2puaS9FbmNvZGVkSW1hZ2Vfam5p
LmgiCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvbmF0aXZlX2FwaS9qbmkvamF2YV90eXBlcy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvc3JjL2puaS9qbmlfZ2VuZXJhdG9yX2hlbHBlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfZ2VuZXJh
dG9yX2hlbHBlci5oCmluZGV4IDUzZTFkODQxMjdkN2I2MWIyNzZiYzMxNjA2NjIxNDllMmIxODBl
MmIuLmU2ZDZmN2VmMTU5ZDY4YWE1NDI1NDBmMTMxZTA0N2U1MzRkYTQxMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3Ny
Yy9qbmkvam5pX2dlbmVyYXRvcl9oZWxwZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2puaV9nZW5lcmF0b3JfaGVs
cGVyLmgKQEAgLTMzLDEyICszMyw2IEBACiAgIFJUQ19DSEVDSygham5pLT5FeGNlcHRpb25DaGVj
aygpKSBcCiAgICAgICA8PCAoam5pLT5FeGNlcHRpb25EZXNjcmliZSgpLCBqbmktPkV4Y2VwdGlv
bkNsZWFyKCksICIiKQogCi1uYW1lc3BhY2Ugam5pX2dlbmVyYXRvciB7Ci1pbmxpbmUgdm9pZCBD
aGVja0V4Y2VwdGlvbihKTklFbnYqIGVudikgewotICBDSEVDS19FWENFUFRJT04oZW52KTsKLX0K
LX0gIC8vIG5hbWVzcGFjZSBqbmlfZ2VuZXJhdG9yCi0KIG5hbWVzcGFjZSB3ZWJydGMgewogCiAv
LyBUaGlzIGZ1bmN0aW9uIHdpbGwgaW5pdGlhbGl6ZSB8YXRvbWljX2NsYXNzX2lkfCB0byBjb250
YWluIGEgZ2xvYmFsIHJlZiB0bwpAQCAtODYsNCArODAsODAgQEAgdXNpbmcgd2VicnRjOjpNZXRo
b2RJRDsKIH0gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCiB9ICAvLyBuYW1lc3BhY2UgYmFzZQogCitu
YW1lc3BhY2Ugam5pX2dlbmVyYXRvciB7CitpbmxpbmUgdm9pZCBDaGVja0V4Y2VwdGlvbihKTklF
bnYqIGVudikgeworICBDSEVDS19FWENFUFRJT04oZW52KTsKK30KKworLy8gQSAzMiBiaXQgbnVt
YmVyIGNvdWxkIGJlIGFuIGFkZHJlc3Mgb24gc3RhY2suIFJhbmRvbSA2NCBiaXQgbWFya2VyIG9u
IHRoZQorLy8gc3RhY2sgaXMgbXVjaCBsZXNzIGxpa2VseSB0byBiZSBwcmVzZW50IG9uIHN0YWNr
LgorY29uc3RleHByIHVpbnQ2NF90IGtKbmlTdGFja01hcmtlclZhbHVlID0gMHhiZGJkZWYxYmVi
Y2FkZTFiOworCisvLyBDb250ZXh0IGFib3V0IHRoZSBKTkkgY2FsbCB3aXRoIGV4Y2VwdGlvbiBj
aGVja2VkIHRvIGJlIHN0b3JlZCBpbiBzdGFjay4KK3N0cnVjdCBCQVNFX0VYUE9SVCBKbmlKYXZh
Q2FsbENvbnRleHRVbmNoZWNrZWQgeworICBpbmxpbmUgSm5pSmF2YUNhbGxDb250ZXh0VW5jaGVj
a2VkKCkgeworLy8gVE9ETyhzc2lkKTogSW1wbGVtZW50IGZvciBvdGhlciBhcmNoaXRlY3R1cmVz
LgorI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKKyAgICAvLyBU
aGlzIGFzc3VtZXMgdGhhdCB0aGlzIG1ldGhvZCBkb2VzIG5vdCBpbmNyZW1lbnQgdGhlIHN0YWNr
IHBvaW50ZXIuCisgICAgYXNtIHZvbGF0aWxlKCJtb3YgJTAsIHNwIiA6ICI9ciIoc3ApKTsKKyNl
bHNlCisgICAgc3AgPSAwOworI2VuZGlmCisgIH0KKworICAvLyBGb3JjZSBubyBpbmxpbmUgdG8g
cmVkdWNlIGNvZGUgc2l6ZS4KKyAgdGVtcGxhdGUgPGJhc2U6OmFuZHJvaWQ6Ok1ldGhvZElEOjpU
eXBlIHR5cGU+CisgIHZvaWQgSW5pdChKTklFbnYqIGVudiwKKyAgICAgICAgICAgIGpjbGFzcyBj
bGF6eiwKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1ldGhvZF9uYW1lLAorICAgICAgICAgICAg
Y29uc3QgY2hhciogam5pX3NpZ25hdHVyZSwKKyAgICAgICAgICAgIHN0ZDo6YXRvbWljPGptZXRo
b2RJRD4qIGF0b21pY19tZXRob2RfaWQpIHsKKyAgICBlbnYxID0gZW52OworCisgICAgLy8gTWFr
ZSBzdXJlIGNvbXBpbGVyIGRvZXNuJ3Qgb3B0aW1pemUgb3V0IHRoZSBhc3NpZ25tZW50LgorICAg
IG1lbWNweSgmbWFya2VyLCAma0puaVN0YWNrTWFya2VyVmFsdWUsIHNpemVvZihrSm5pU3RhY2tN
YXJrZXJWYWx1ZSkpOworICAgIC8vIEdldHMgUEMgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24uCisg
ICAgcGMgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oX19idWlsdGluX3JldHVybl9hZGRy
ZXNzKDApKTsKKworICAgIG1ldGhvZF9pZCA9IGJhc2U6OmFuZHJvaWQ6Ok1ldGhvZElEOjpMYXp5
R2V0PHR5cGU+KAorICAgICAgICBlbnYsIGNsYXp6LCBtZXRob2RfbmFtZSwgam5pX3NpZ25hdHVy
ZSwgYXRvbWljX21ldGhvZF9pZCk7CisgIH0KKworICB+Sm5pSmF2YUNhbGxDb250ZXh0VW5jaGVj
a2VkKCkgeworICAgIC8vIFJlc2V0IHNvIHRoYXQgc3B1cmlvdXMgbWFya2VyIGZpbmRzIGFyZSBh
dm9pZGVkLgorICAgIG1lbXNldCgmbWFya2VyLCAwLCBzaXplb2YobWFya2VyKSk7CisgIH0KKwor
ICB1aW50NjRfdCBtYXJrZXI7CisgIHVpbnRwdHJfdCBzcDsKKyAgdWludHB0cl90IHBjOworCisg
IEpOSUVudiogZW52MTsKKyAgam1ldGhvZElEIG1ldGhvZF9pZDsKK307CisKKy8vIENvbnRleHQg
YWJvdXQgdGhlIEpOSSBjYWxsIHdpdGggZXhjZXB0aW9uIHVuY2hlY2tlZCB0byBiZSBzdG9yZWQg
aW4gc3RhY2suCitzdHJ1Y3QgQkFTRV9FWFBPUlQgSm5pSmF2YUNhbGxDb250ZXh0Q2hlY2tlZCB7
CisgIC8vIEZvcmNlIG5vIGlubGluZSB0byByZWR1Y2UgY29kZSBzaXplLgorICB0ZW1wbGF0ZSA8
YmFzZTo6YW5kcm9pZDo6TWV0aG9kSUQ6OlR5cGUgdHlwZT4KKyAgdm9pZCBJbml0KEpOSUVudiog
ZW52LAorICAgICAgICAgICAgamNsYXNzIGNsYXp6LAorICAgICAgICAgICAgY29uc3QgY2hhciog
bWV0aG9kX25hbWUsCisgICAgICAgICAgICBjb25zdCBjaGFyKiBqbmlfc2lnbmF0dXJlLAorICAg
ICAgICAgICAgc3RkOjphdG9taWM8am1ldGhvZElEPiogYXRvbWljX21ldGhvZF9pZCkgeworICAg
IGJhc2UuSW5pdDx0eXBlPihlbnYsIGNsYXp6LCBtZXRob2RfbmFtZSwgam5pX3NpZ25hdHVyZSwg
YXRvbWljX21ldGhvZF9pZCk7CisgICAgLy8gUmVzZXQgfHBjfCB0byBjb3JyZWN0IGNhbGxlci4K
KyAgICBiYXNlLnBjID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KF9fYnVpbHRpbl9yZXR1
cm5fYWRkcmVzcygwKSk7CisgIH0KKworICB+Sm5pSmF2YUNhbGxDb250ZXh0Q2hlY2tlZCgpIHsg
am5pX2dlbmVyYXRvcjo6Q2hlY2tFeGNlcHRpb24oYmFzZS5lbnYxKTsgfQorCisgIEpuaUphdmFD
YWxsQ29udGV4dFVuY2hlY2tlZCBiYXNlOworfTsKKworc3RhdGljX2Fzc2VydChzaXplb2YoSm5p
SmF2YUNhbGxDb250ZXh0Q2hlY2tlZCkgPT0KKyAgICAgICAgICAgICAgICAgIHNpemVvZihKbmlK
YXZhQ2FsbENvbnRleHRVbmNoZWNrZWQpLAorICAgICAgICAgICAgICAiU3RhY2sgdW53aW5kZXIg
Y2Fubm90IHdvcmsgd2l0aCBzdHJ1Y3RzIG9mIGRpZmZlcmVudCBzaXplcy4iKTsKK30gIC8vIG5h
bWVzcGFjZSBqbmlfZ2VuZXJhdG9yCisKICNlbmRpZiAgLy8gU0RLX0FORFJPSURfU1JDX0pOSV9K
TklfR0VORVJBVE9SX0hFTFBFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9jcnlwdG9vcHRpb25z
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS9wYy9jcnlwdG9vcHRpb25zLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmMzhiMTNmNzhiZGQ3
MzNlOTYyYjg1YWY2OTg3OWQyMTQ5MWY3ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL2Ny
eXB0b29wdGlvbnMuY2MKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lu
Y2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvY3J5cHRvb3B0aW9ucy5oIgorCisjaW5jbHVk
ZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3BlZXJjb25uZWN0aW9uX2puaS9qbmkvQ3J5cHRvT3B0
aW9uc19qbmkuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2Ugam5pIHsKKworYWJz
bDo6b3B0aW9uYWw8Q3J5cHRvT3B0aW9ucz4gSmF2YVRvTmF0aXZlT3B0aW9uYWxDcnlwdG9PcHRp
b25zKAorICAgIEpOSUVudiogam5pLAorICAgIGNvbnN0IEphdmFSZWY8am9iamVjdD4mIGpfY3J5
cHRvX29wdGlvbnMpIHsKKyAgaWYgKGpfY3J5cHRvX29wdGlvbnMuaXNfbnVsbCgpKSB7CisgICAg
cmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKworICBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVj
dD4gal9zcnRwID0KKyAgICAgIEphdmFfQ3J5cHRvT3B0aW9uc19nZXRTcnRwKGpuaSwgal9jcnlw
dG9fb3B0aW9ucyk7CisgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX3NmcmFtZSA9Cisg
ICAgICBKYXZhX0NyeXB0b09wdGlvbnNfZ2V0U0ZyYW1lKGpuaSwgal9jcnlwdG9fb3B0aW9ucyk7
CisKKyAgQ3J5cHRvT3B0aW9ucyBuYXRpdmVfY3J5cHRvX29wdGlvbnM7CisgIG5hdGl2ZV9jcnlw
dG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9CisgICAgICBKYXZhX1Ny
dHBfZ2V0RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKGpuaSwgal9zcnRwKTsKKyAgbmF0aXZlX2NyeXB0
b19vcHRpb25zLnNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPQorICAg
ICAgSmF2YV9TcnRwX2dldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIoam5pLCBqX3Ny
dHApOworICBuYXRpdmVfY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZW5jcnlwdGVkX3J0cF9o
ZWFkZXJfZXh0ZW5zaW9ucyA9CisgICAgICBKYXZhX1NydHBfZ2V0RW5hYmxlRW5jcnlwdGVkUnRw
SGVhZGVyRXh0ZW5zaW9ucyhqbmksIGpfc3J0cCk7CisgIG5hdGl2ZV9jcnlwdG9fb3B0aW9ucy5z
ZnJhbWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uID0KKyAgICAgIEphdmFfU0ZyYW1lX2dldFJl
cXVpcmVGcmFtZUVuY3J5cHRpb24oam5pLCBqX3NmcmFtZSk7CisgIHJldHVybiBhYnNsOjpvcHRp
b25hbDxDcnlwdG9PcHRpb25zPihuYXRpdmVfY3J5cHRvX29wdGlvbnMpOworfQorCit9ICAvLyBu
YW1lc3BhY2Ugam5pCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3Bj
L2NyeXB0b29wdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvY3J5cHRvb3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4
OTAyNjRhNTVjNmYyYzM4ODAyNzkxOGViZDkxMmI3NGMzNzIwZTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL3BjL2NyeXB0b29wdGlvbnMuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogIENvcHly
aWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaWZuZGVmIFNES19BTkRST0lEX1NSQ19KTklfUENfQ1JZUFRPT1BUSU9OU19IXwor
I2RlZmluZSBTREtfQU5EUk9JRF9TUkNfSk5JX1BDX0NSWVBUT09QVElPTlNfSF8KKworI2luY2x1
ZGUgPGpuaS5oPgorCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUg
ImFwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL25hdGl2
ZV9hcGkvam5pL3Njb3BlZF9qYXZhX3JlZi5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVz
cGFjZSBqbmkgeworCithYnNsOjpvcHRpb25hbDxDcnlwdG9PcHRpb25zPiBKYXZhVG9OYXRpdmVP
cHRpb25hbENyeXB0b09wdGlvbnMoCisgICAgSk5JRW52KiBqbmksCisgICAgY29uc3QgSmF2YVJl
Zjxqb2JqZWN0PiYgal9jcnlwdG9fb3B0aW9ucyk7CisKK30gIC8vIG5hbWVzcGFjZSBqbmkKK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBTREtfQU5EUk9JRF9TUkNfSk5JX1BD
X0NSWVBUT09QVElPTlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvbnVsbF92aWRlby5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9q
bmkvcGMvbnVsbF92aWRlby5jYwppbmRleCAwZTBiODBkNDYxMmYyNWU4NzRiOTBkOGVhNWE3MjI0
MDMxNjQ2NzRhLi41NGE0MDFkNjA1YzE5MTI4M2FlN2ZjZmZlNDY0NzI5NDIwMjExY2NiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9zcmMvam5pL3BjL251bGxfdmlkZW8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9udWxsX3ZpZGVvLmNj
CkBAIC0zMSw3ICszMSw4IEBAIFZpZGVvRGVjb2RlckZhY3RvcnkqIENyZWF0ZVZpZGVvRGVjb2Rl
ckZhY3RvcnkoCiB2b2lkKiBDcmVhdGVWaWRlb1NvdXJjZShKTklFbnYqIGVudiwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgamJv
b2xlYW4gYWxpZ25fdGltZXN0YW1wcykgewogICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS9wYy9vd25lZGZhY3RvcnlhbmR0aHJlYWRzLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9vd25lZGZh
Y3RvcnlhbmR0aHJlYWRzLmNjCmluZGV4IDk5ODdmMjUyMjc1ZTMyN2MyZGRhZDRmMzgwNDlkMGM4
ODllOTQ5OWUuLjJkNjJlYTMyYTEzMWNjNWUxMzZiODJhMTQ3YjMwZjBkNzk3NzJhYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qbmkvcGMvb3duZWRmYWN0b3J5YW5kdGhyZWFkcy5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL293
bmVkZmFjdG9yeWFuZHRocmVhZHMuY2MKQEAgLTIxLDkgKzIxLDkgQEAgUGVlckNvbm5lY3Rpb25G
YWN0b3J5SW50ZXJmYWNlKiBmYWN0b3J5RnJvbUphdmEoamxvbmcgal9wKSB7CiB9CiAKIE93bmVk
RmFjdG9yeUFuZFRocmVhZHM6Ok93bmVkRmFjdG9yeUFuZFRocmVhZHMoCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFRocmVhZD4gbmV0d29ya190aHJlYWQsCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRocmVh
ZD4gd29ya2VyX3RocmVhZCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkPiBzaWduYWxpbmdf
dGhyZWFkLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gbmV0d29ya190aHJlYWQs
CisgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiB3b3JrZXJfdGhyZWFkLAorICAgIHN0
ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gc2lnbmFsaW5nX3RocmVhZCwKICAgICBydGM6Ok5l
dHdvcmtNb25pdG9yRmFjdG9yeSogbmV0d29ya19tb25pdG9yX2ZhY3RvcnksCiAgICAgUGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBmYWN0b3J5KQogICAgIDogbmV0d29ya190aHJlYWRf
KHN0ZDo6bW92ZShuZXR3b3JrX3RocmVhZCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9vd25lZGZh
Y3RvcnlhbmR0aHJlYWRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL293bmVkZmFjdG9yeWFuZHRocmVhZHMuaAppbmRl
eCAyZWE4NTcwMjgyZDk1NWNhMDAwNjE4ZjEwM2MzMDk3NGM0NGNjOWU4Li5iYWNkNDJkZmNkNmMx
N2Y3OTBjZWFiNWRmZTg0ZjkwYjM0OTMzNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL293bmVkZmFj
dG9yeWFuZHRocmVhZHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL293bmVkZmFjdG9yeWFuZHRocmVhZHMuaApA
QCAtMTgsOCArMTgsNiBAQAogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogCi11c2luZyBydGM6OlRocmVhZDsKLQog
bmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2Ugam5pIHsKIApAQCAtMzMsMTggKzMxLDE4IEBA
IFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9yeUZyb21KYXZhKGpsb25nIGpf
cCk7CiAvLyBzaW5nbGUgdGhpbmcgZm9yIEphdmEgdG8gaG9sZCBhbmQgZXZlbnR1YWxseSBmcmVl
LgogY2xhc3MgT3duZWRGYWN0b3J5QW5kVGhyZWFkcyB7CiAgcHVibGljOgotICBPd25lZEZhY3Rv
cnlBbmRUaHJlYWRzKHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWQ+IG5ldHdvcmtfdGhyZWFkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWQ+IHdvcmtlcl90aHJl
YWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZD4gc2ln
bmFsaW5nX3RocmVhZCwKKyAgT3duZWRGYWN0b3J5QW5kVGhyZWFkcyhzdGQ6OnVuaXF1ZV9wdHI8
cnRjOjpUaHJlYWQ+IG5ldHdvcmtfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gd29ya2VyX3RocmVhZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHNpZ25hbGluZ190aHJlYWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpOZXR3b3JrTW9uaXRvckZhY3RvcnkqIG5l
dHdvcmtfbW9uaXRvcl9mYWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgIFBlZXJDb25u
ZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9yeSk7CiAKICAgfk93bmVkRmFjdG9yeUFuZFRo
cmVhZHMoKTsKIAogICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UqIGZhY3RvcnkoKSB7
IHJldHVybiBmYWN0b3J5XzsgfQotICBUaHJlYWQqIG5ldHdvcmtfdGhyZWFkKCkgeyByZXR1cm4g
bmV0d29ya190aHJlYWRfLmdldCgpOyB9Ci0gIFRocmVhZCogc2lnbmFsaW5nX3RocmVhZCgpIHsg
cmV0dXJuIHNpZ25hbGluZ190aHJlYWRfLmdldCgpOyB9Ci0gIFRocmVhZCogd29ya2VyX3RocmVh
ZCgpIHsgcmV0dXJuIHdvcmtlcl90aHJlYWRfLmdldCgpOyB9CisgIHJ0Yzo6VGhyZWFkKiBuZXR3
b3JrX3RocmVhZCgpIHsgcmV0dXJuIG5ldHdvcmtfdGhyZWFkXy5nZXQoKTsgfQorICBydGM6OlRo
cmVhZCogc2lnbmFsaW5nX3RocmVhZCgpIHsgcmV0dXJuIHNpZ25hbGluZ190aHJlYWRfLmdldCgp
OyB9CisgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkKCkgeyByZXR1cm4gd29ya2VyX3RocmVh
ZF8uZ2V0KCk7IH0KICAgcnRjOjpOZXR3b3JrTW9uaXRvckZhY3RvcnkqIG5ldHdvcmtfbW9uaXRv
cl9mYWN0b3J5KCkgewogICAgIHJldHVybiBuZXR3b3JrX21vbml0b3JfZmFjdG9yeV87CiAgIH0K
QEAgLTUyLDkgKzUwLDkgQEAgY2xhc3MgT3duZWRGYWN0b3J5QW5kVGhyZWFkcyB7CiAgIHZvaWQg
SW52b2tlSmF2YUNhbGxiYWNrc09uRmFjdG9yeVRocmVhZHMoKTsKIAogIHByaXZhdGU6Ci0gIGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWQ+IG5ldHdvcmtfdGhyZWFkXzsKLSAgY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPFRocmVhZD4gd29ya2VyX3RocmVhZF87Ci0gIGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxUaHJlYWQ+IHNpZ25hbGluZ190aHJlYWRfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
cnRjOjpUaHJlYWQ+IG5ldHdvcmtfdGhyZWFkXzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHJ0
Yzo6VGhyZWFkPiB3b3JrZXJfdGhyZWFkXzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6
VGhyZWFkPiBzaWduYWxpbmdfdGhyZWFkXzsKICAgcnRjOjpOZXR3b3JrTW9uaXRvckZhY3Rvcnkq
IG5ldHdvcmtfbW9uaXRvcl9mYWN0b3J5XzsKICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJm
YWNlKiBmYWN0b3J5XzsgIC8vIENvbnN0IGFmdGVyIGN0b3IgZXhjZXB0IGR0b3IuCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvc3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvcGVlcmNvbm5lY3Rp
b24uY2MKaW5kZXggNzlkYTc5N2UzODg3N2Q4YmZlZTQwYjNkMjg5ZThlNTc4MjA2MjllZi4uMDUx
NWNlMjY0ZTczOWQ3Y2Y1MzE1ZGVjOTkwNWY5MTc4NWUwMWY1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9w
Yy9wZWVyY29ubmVjdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJjb25uZWN0aW9uLmNjCkBAIC00
MywxMCArNDMsMTIgQEAKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRfcGVlcmNvbm5l
Y3Rpb25fam5pL2puaS9QZWVyQ29ubmVjdGlvbl9qbmkuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9p
ZC9uYXRpdmVfYXBpL2puaS9qYXZhX3R5cGVzLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3Jj
L2puaS9qbmlfaGVscGVycy5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvY3J5
cHRvb3B0aW9ucy5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvZGF0YWNoYW5u
ZWwuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL2ljZWNhbmRpZGF0ZS5oIgog
I2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvbWVkaWFjb25zdHJhaW50cy5oIgogI2lu
Y2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvbWVkaWFzdHJlYW10cmFjay5oIgorI2luY2x1
ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuaCIKICNpbmNsdWRlICJz
ZGsvYW5kcm9pZC9zcmMvam5pL3BjL3J0Y3N0YXRzY29sbGVjdG9yY2FsbGJhY2t3cmFwcGVyLmgi
CiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9wYy9ydHBzZW5kZXIuaCIKICNpbmNsdWRl
ICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL3NkcG9ic2VydmVyLmgiCkBAIC0xMjksNiArMTMxLDgg
QEAgdm9pZCBKYXZhVG9OYXRpdmVSVENDb25maWd1cmF0aW9uKAogICAgICAgSmF2YV9SVENDb25m
aWd1cmF0aW9uX2dldEJ1bmRsZVBvbGljeShqbmksIGpfcnRjX2NvbmZpZyk7CiAgIFNjb3BlZEph
dmFMb2NhbFJlZjxqb2JqZWN0PiBqX3J0Y3BfbXV4X3BvbGljeSA9CiAgICAgICBKYXZhX1JUQ0Nv
bmZpZ3VyYXRpb25fZ2V0UnRjcE11eFBvbGljeShqbmksIGpfcnRjX2NvbmZpZyk7CisgIFNjb3Bl
ZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX3J0Y19jZXJ0aWZpY2F0ZSA9CisgICAgICBKYXZhX1JU
Q0NvbmZpZ3VyYXRpb25fZ2V0Q2VydGlmaWNhdGUoam5pLCBqX3J0Y19jb25maWcpOwogICBTY29w
ZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gal90Y3BfY2FuZGlkYXRlX3BvbGljeSA9CiAgICAgICBK
YXZhX1JUQ0NvbmZpZ3VyYXRpb25fZ2V0VGNwQ2FuZGlkYXRlUG9saWN5KGpuaSwgal9ydGNfY29u
ZmlnKTsKICAgU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IGpfY2FuZGlkYXRlX25ldHdvcmtf
cG9saWN5ID0KQEAgLTE0MywxMSArMTQ3LDIwIEBAIHZvaWQgSmF2YVRvTmF0aXZlUlRDQ29uZmln
dXJhdGlvbigKICAgICAgIEphdmFfUlRDQ29uZmlndXJhdGlvbl9nZXROZXR3b3JrUHJlZmVyZW5j
ZShqbmksIGpfcnRjX2NvbmZpZyk7CiAgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX3Nk
cF9zZW1hbnRpY3MgPQogICAgICAgSmF2YV9SVENDb25maWd1cmF0aW9uX2dldFNkcFNlbWFudGlj
cyhqbmksIGpfcnRjX2NvbmZpZyk7CisgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX2Ny
eXB0b19vcHRpb25zID0KKyAgICAgIEphdmFfUlRDQ29uZmlndXJhdGlvbl9nZXRDcnlwdG9PcHRp
b25zKGpuaSwgal9ydGNfY29uZmlnKTsKIAogICBydGNfY29uZmlnLT50eXBlID0gSmF2YVRvTmF0
aXZlSWNlVHJhbnNwb3J0c1R5cGUoam5pLCBqX2ljZV90cmFuc3BvcnRzX3R5cGUpOwogICBydGNf
Y29uZmlnLT5idW5kbGVfcG9saWN5ID0gSmF2YVRvTmF0aXZlQnVuZGxlUG9saWN5KGpuaSwgal9i
dW5kbGVfcG9saWN5KTsKICAgcnRjX2NvbmZpZy0+cnRjcF9tdXhfcG9saWN5ID0KICAgICAgIEph
dmFUb05hdGl2ZVJ0Y3BNdXhQb2xpY3koam5pLCBqX3J0Y3BfbXV4X3BvbGljeSk7CisgIGlmICgh
al9ydGNfY2VydGlmaWNhdGUuaXNfbnVsbCgpKSB7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHJ0
Yzo6UlRDQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRlID0KKyAgICAgICAgcnRjOjpSVENDZXJ0aWZp
Y2F0ZTo6RnJvbVBFTSgKKyAgICAgICAgICAgIEphdmFUb05hdGl2ZVJUQ0NlcnRpZmljYXRlUEVN
KGpuaSwgal9ydGNfY2VydGlmaWNhdGUpKTsKKyAgICBSVENfQ0hFQ0soY2VydGlmaWNhdGUgIT0g
bnVsbHB0cikgPDwgInN1cHBsaWVkIGNlcnRpZmljYXRlIGlzIG1hbGZvcm1lZC4iOworICAgIHJ0
Y19jb25maWctPmNlcnRpZmljYXRlcy5wdXNoX2JhY2soY2VydGlmaWNhdGUpOworICB9CiAgIHJ0
Y19jb25maWctPnRjcF9jYW5kaWRhdGVfcG9saWN5ID0KICAgICAgIEphdmFUb05hdGl2ZVRjcENh
bmRpZGF0ZVBvbGljeShqbmksIGpfdGNwX2NhbmRpZGF0ZV9wb2xpY3kpOwogICBydGNfY29uZmln
LT5jYW5kaWRhdGVfbmV0d29ya19wb2xpY3kgPQpAQCAtMjM0LDYgKzI0NywxMyBAQCB2b2lkIEph
dmFUb05hdGl2ZVJUQ0NvbmZpZ3VyYXRpb24oCiAgIHJ0Y19jb25maWctPnNkcF9zZW1hbnRpY3Mg
PSBKYXZhVG9OYXRpdmVTZHBTZW1hbnRpY3Moam5pLCBqX3NkcF9zZW1hbnRpY3MpOwogICBydGNf
Y29uZmlnLT5hY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMgPQogICAgICAgSmF2YV9SVENDb25maWd1
cmF0aW9uX2dldEFjdGl2ZVJlc2V0U3J0cFBhcmFtcyhqbmksIGpfcnRjX2NvbmZpZyk7CisgIHJ0
Y19jb25maWctPnVzZV9tZWRpYV90cmFuc3BvcnQgPQorICAgICAgSmF2YV9SVENDb25maWd1cmF0
aW9uX2dldFVzZU1lZGlhVHJhbnNwb3J0KGpuaSwgal9ydGNfY29uZmlnKTsKKyAgcnRjX2NvbmZp
Zy0+dXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9CisgICAgICBKYXZhX1JU
Q0NvbmZpZ3VyYXRpb25fZ2V0VXNlTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5lbHMoam5pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGpfcnRjX2NvbmZpZyk7CisgIHJ0Y19jb25maWctPmNyeXB0b19vcHRpb25zID0KKyAg
ICAgIEphdmFUb05hdGl2ZU9wdGlvbmFsQ3J5cHRvT3B0aW9ucyhqbmksIGpfY3J5cHRvX29wdGlv
bnMpOwogfQogCiBydGM6OktleVR5cGUgR2V0UnRjQ29uZmlnS2V5VHlwZShKTklFbnYqIGVudiwK
QEAgLTI3OSw2ICsyOTksMTQgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbk9ic2VydmVySm5pOjpPbklj
ZUNvbm5lY3Rpb25DaGFuZ2UoCiAgICAgICBKYXZhX0ljZUNvbm5lY3Rpb25TdGF0ZV9mcm9tTmF0
aXZlSW5kZXgoZW52LCBuZXdfc3RhdGUpKTsKIH0KIAordm9pZCBQZWVyQ29ubmVjdGlvbk9ic2Vy
dmVySm5pOjpPbkNvbm5lY3Rpb25DaGFuZ2UoCisgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlBlZXJDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSB7CisgIEpOSUVudiogZW52ID0gQXR0YWNo
Q3VycmVudFRocmVhZElmTmVlZGVkKCk7CisgIEphdmFfT2JzZXJ2ZXJfb25Db25uZWN0aW9uQ2hh
bmdlKGVudiwgal9vYnNlcnZlcl9nbG9iYWxfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBKYXZhX1BlZXJDb25uZWN0aW9uU3RhdGVfZnJvbU5hdGl2ZUluZGV4KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LCBzdGF0aWNfY2FzdDxpbnQ+KG5l
d19zdGF0ZSkpKTsKK30KKwogdm9pZCBQZWVyQ29ubmVjdGlvbk9ic2VydmVySm5pOjpPbkljZUNv
bm5lY3Rpb25SZWNlaXZpbmdDaGFuZ2UoYm9vbCByZWNlaXZpbmcpIHsKICAgSk5JRW52KiBlbnYg
PSBBdHRhY2hDdXJyZW50VGhyZWFkSWZOZWVkZWQoKTsKICAgSmF2YV9PYnNlcnZlcl9vbkljZUNv
bm5lY3Rpb25SZWNlaXZpbmdDaGFuZ2UoZW52LCBqX29ic2VydmVyX2dsb2JhbF8sCkBAIC00Mjks
NiArNDU3LDE2IEBAIHN0YXRpYyBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gSk5JX1BlZXJD
b25uZWN0aW9uX0dldFJlbW90ZURlc2NyaXB0aW9uKAogICByZXR1cm4gc2RwID8gTmF0aXZlVG9K
YXZhU2Vzc2lvbkRlc2NyaXB0aW9uKGpuaSwgc2RwKSA6IG51bGxwdHI7CiB9CiAKK3N0YXRpYyBT
Y29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gSk5JX1BlZXJDb25uZWN0aW9uX0dldENlcnRpZmlj
YXRlKAorICAgIEpOSUVudiogam5pLAorICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqb2JqZWN0PiYg
al9wYykgeworICBjb25zdCBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlv
biBydGNfY29uZmlnID0KKyAgICAgIEV4dHJhY3ROYXRpdmVQQyhqbmksIGpfcGMpLT5HZXRDb25m
aWd1cmF0aW9uKCk7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxydGM6OlJUQ0NlcnRpZmljYXRlPiBj
ZXJ0aWZpY2F0ZSA9CisgICAgICBydGNfY29uZmlnLmNlcnRpZmljYXRlc1swXTsKKyAgcmV0dXJu
IE5hdGl2ZVRvSmF2YVJUQ0NlcnRpZmljYXRlUEVNKGpuaSwgY2VydGlmaWNhdGUtPlRvUEVNKCkp
OworfQorCiBzdGF0aWMgU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IEpOSV9QZWVyQ29ubmVj
dGlvbl9DcmVhdGVEYXRhQ2hhbm5lbCgKICAgICBKTklFbnYqIGpuaSwKICAgICBjb25zdCBKYXZh
UGFyYW1SZWY8am9iamVjdD4mIGpfcGMsCkBAIC03MjIsNiArNzYwLDE0IEBAIHN0YXRpYyBTY29w
ZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gSk5JX1BlZXJDb25uZWN0aW9uX0ljZUNvbm5lY3Rpb25T
dGF0ZSgKICAgICAgIGVudiwgRXh0cmFjdE5hdGl2ZVBDKGVudiwgal9wYyktPmljZV9jb25uZWN0
aW9uX3N0YXRlKCkpOwogfQogCitzdGF0aWMgU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IEpO
SV9QZWVyQ29ubmVjdGlvbl9Db25uZWN0aW9uU3RhdGUoCisgICAgSk5JRW52KiBlbnYsCisgICAg
Y29uc3QgSmF2YVBhcmFtUmVmPGpvYmplY3Q+JiBqX3BjKSB7CisgIHJldHVybiBKYXZhX1BlZXJD
b25uZWN0aW9uU3RhdGVfZnJvbU5hdGl2ZUluZGV4KAorICAgICAgZW52LAorICAgICAgc3RhdGlj
X2Nhc3Q8aW50PihFeHRyYWN0TmF0aXZlUEMoZW52LCBqX3BjKS0+cGVlcl9jb25uZWN0aW9uX3N0
YXRlKCkpKTsKK30KKwogc3RhdGljIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBKTklfUGVl
ckNvbm5lY3Rpb25fSWNlR2F0aGVyaW5nU3RhdGUoCiAgICAgSk5JRW52KiBlbnYsCiAgICAgY29u
c3QgSmF2YVBhcmFtUmVmPGpvYmplY3Q+JiBqX3BjKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3Bl
ZXJjb25uZWN0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJjb25uZWN0aW9uLmgKaW5kZXggZjIwMTY2NzI3
ZWEwYjQ5NTRiMDZhMTIxZWNjYzkzY2M2Y2FjNzVjMC4uYTlkN2IzOWMzZDQyMTdjZTJlYzgyNTdh
MTM5N2ZiNjg3MjNlMjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L3NyYy9qbmkvcGMvcGVlcmNvbm5lY3Rpb24uaApAQCAtNTEsNiArNTEsOCBAQCBjbGFzcyBQZWVy
Q29ubmVjdGlvbk9ic2VydmVySm5pIDogcHVibGljIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgewog
ICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlNpZ25hbGluZ1N0YXRlIG5ld19zdGF0ZSkg
b3ZlcnJpZGU7CiAgIHZvaWQgT25JY2VDb25uZWN0aW9uQ2hhbmdlKAogICAgICAgUGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpIG92ZXJyaWRlOwor
ICB2b2lkIE9uQ29ubmVjdGlvbkNoYW5nZSgKKyAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpQZWVyQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0ZSkgb3ZlcnJpZGU7CiAgIHZvaWQgT25JY2VD
b25uZWN0aW9uUmVjZWl2aW5nQ2hhbmdlKGJvb2wgcmVjZWl2aW5nKSBvdmVycmlkZTsKICAgdm9p
ZCBPbkljZUdhdGhlcmluZ0NoYW5nZSgKICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJ
Y2VHYXRoZXJpbmdTdGF0ZSBuZXdfc3RhdGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9w
Yy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9y
eS5jYwppbmRleCAzZGU3OTU1NWE2M2MxZGQ4MDVjYWUxMzUzMzhkYjRhYWUzOGVjYzk5Li5jMmI4
YjljNWQ3ZGZhN2JmZTJlYjg0MTZhOGUxMjJmNDAxNjY3MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3Bj
L3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJjb25uZWN0aW9uZmFj
dG9yeS5jYwpAQCAtNTAsMTAgKzUwLDYgQEAgSmF2YVRvTmF0aXZlUGVlckNvbm5lY3Rpb25GYWN0
b3J5T3B0aW9ucyhKTklFbnYqIGpuaSwKICAgYm9vbCBkaXNhYmxlX2VuY3J5cHRpb24gPSBKYXZh
X09wdGlvbnNfZ2V0RGlzYWJsZUVuY3J5cHRpb24oam5pLCBvcHRpb25zKTsKICAgYm9vbCBkaXNh
YmxlX25ldHdvcmtfbW9uaXRvciA9CiAgICAgICBKYXZhX09wdGlvbnNfZ2V0RGlzYWJsZU5ldHdv
cmtNb25pdG9yKGpuaSwgb3B0aW9ucyk7Ci0gIGJvb2wgZW5hYmxlX2FlczEyOF9zaGExXzMyX2Ny
eXB0b19jaXBoZXIgPQotICAgICAgSmF2YV9PcHRpb25zX2dldEVuYWJsZUFlczEyOFNoYTFfMzJD
cnlwdG9DaXBoZXIoam5pLCBvcHRpb25zKTsKLSAgYm9vbCBlbmFibGVfZ2NtX2NyeXB0b19zdWl0
ZXMgPQotICAgICAgSmF2YV9PcHRpb25zX2dldEVuYWJsZUdjbUNyeXB0b1N1aXRlcyhqbmksIG9w
dGlvbnMpOwogCiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0aW9ucyBuYXRp
dmVfb3B0aW9uczsKIApAQCAtNjMsMTAgKzU5LDYgQEAgSmF2YVRvTmF0aXZlUGVlckNvbm5lY3Rp
b25GYWN0b3J5T3B0aW9ucyhKTklFbnYqIGpuaSwKICAgbmF0aXZlX29wdGlvbnMuZGlzYWJsZV9l
bmNyeXB0aW9uID0gZGlzYWJsZV9lbmNyeXB0aW9uOwogICBuYXRpdmVfb3B0aW9ucy5kaXNhYmxl
X25ldHdvcmtfbW9uaXRvciA9IGRpc2FibGVfbmV0d29ya19tb25pdG9yOwogCi0gIG5hdGl2ZV9v
cHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVy
ID0KLSAgICAgIGVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyOwotICBuYXRpdmVf
b3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPQotICAgICAg
ZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzOwogICByZXR1cm4gbmF0aXZlX29wdGlvbnM7CiB9CiAK
QEAgLTE5OSwxNSArMTkxLDIxIEBAIHN0YXRpYyB2b2lkIEpOSV9QZWVyQ29ubmVjdGlvbkZhY3Rv
cnlfU2h1dGRvd25JbnRlcm5hbFRyYWNlcigKICAgcnRjOjp0cmFjaW5nOjpTaHV0ZG93bkludGVy
bmFsVHJhY2VyKCk7CiB9CiAKKy8vIEZvbGxvd2luZyBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbDoK
Ky8vIHxhdWRpb19kZXZpY2VfbW9kdWxlfCwgfGplbmNvZGVyX2ZhY3Rvcnl8LCB8amRlY29kZXJf
ZmFjdG9yeXwsCisvLyB8YXVkaW9fcHJvY2Vzc29yfCwgfG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
fCwgfGZlY19jb250cm9sbGVyX2ZhY3Rvcnl8LgogamxvbmcgQ3JlYXRlUGVlckNvbm5lY3Rpb25G
YWN0b3J5Rm9ySmF2YSgKICAgICBKTklFbnYqIGpuaSwKICAgICBjb25zdCBKYXZhUGFyYW1SZWY8
am9iamVjdD4mIGpjb250ZXh0LAogICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqb2JqZWN0PiYgam9w
dGlvbnMsCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBhdWRpb19k
ZXZpY2VfbW9kdWxlLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5
PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVj
b2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKICAgICBjb25zdCBKYXZhUGFyYW1S
ZWY8am9iamVjdD4mIGplbmNvZGVyX2ZhY3RvcnksCiAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpv
YmplY3Q+JiBqZGVjb2Rlcl9mYWN0b3J5LAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1By
b2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NvciwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJv
bGxlckZhY3RvcnlJbnRlcmZhY2U+IGZlY19jb250cm9sbGVyX2ZhY3RvcnkpIHsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+IGZlY19jb250cm9sbGVy
X2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gbWVk
aWFfdHJhbnNwb3J0X2ZhY3RvcnkpIHsKICAgLy8gdGFsay8gYXNzdW1lcyBwcmV0dHkgd2lkZWx5
IHRoYXQgdGhlIGN1cnJlbnQgVGhyZWFkIGlzIFRocmVhZE1hbmFnZXInZCwgYnV0CiAgIC8vIFRo
cmVhZE1hbmFnZXIgb25seSBXcmFwQ3VycmVudFRocmVhZCgpcyB0aGUgdGhyZWFkIHdoZXJlIGl0
IGlzIGZpcnN0CiAgIC8vIGNyZWF0ZWQuICBTaW5jZSB0aGUgc2VtYW50aWNzIGFyb3VuZCB3aGVu
IGF1dG8td3JhcHBpbmcgaGFwcGVucyBpbgpAQCAtMjI5LDggKzIyNyw2IEBAIGpsb25nIENyZWF0
ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUZvckphdmEoCiAgIFJUQ19DSEVDSyhzaWduYWxpbmdfdGhy
ZWFkLT5TdGFydCgpKSA8PCAiRmFpbGVkIHRvIHN0YXJ0IHRocmVhZCI7CiAKICAgcnRjOjpOZXR3
b3JrTW9uaXRvckZhY3RvcnkqIG5ldHdvcmtfbW9uaXRvcl9mYWN0b3J5ID0gbnVsbHB0cjsKLSAg
YXV0byBhdWRpb19lbmNvZGVyX2ZhY3RvcnkgPSBDcmVhdGVBdWRpb0VuY29kZXJGYWN0b3J5KCk7
Ci0gIGF1dG8gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5ID0gQ3JlYXRlQXVkaW9EZWNvZGVyRmFjdG9y
eSgpOwogCiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0aW9ucyBvcHRpb25z
OwogICBib29sIGhhc19vcHRpb25zID0gIWpvcHRpb25zLmlzX251bGwoKTsKQEAgLTI1NywxMiAr
MjUzLDE5IEBAIGpsb25nIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUZvckphdmEoCiAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9yeT4oCiAgICAgICAgICAgQ3JlYXRl
VmlkZW9EZWNvZGVyRmFjdG9yeShqbmksIGpkZWNvZGVyX2ZhY3RvcnkpKSwKICAgICAgIGF1ZGlv
X21peGVyLCBhdWRpb19wcm9jZXNzb3IpKTsKKyAgUGVlckNvbm5lY3Rpb25GYWN0b3J5RGVwZW5k
ZW5jaWVzIGRlcGVuZGVuY2llczsKKyAgZGVwZW5kZW5jaWVzLm5ldHdvcmtfdGhyZWFkID0gbmV0
d29ya190aHJlYWQuZ2V0KCk7CisgIGRlcGVuZGVuY2llcy53b3JrZXJfdGhyZWFkID0gd29ya2Vy
X3RocmVhZC5nZXQoKTsKKyAgZGVwZW5kZW5jaWVzLnNpZ25hbGluZ190aHJlYWQgPSBzaWduYWxp
bmdfdGhyZWFkLmdldCgpOworICBkZXBlbmRlbmNpZXMubWVkaWFfZW5naW5lID0gc3RkOjptb3Zl
KG1lZGlhX2VuZ2luZSk7CisgIGRlcGVuZGVuY2llcy5jYWxsX2ZhY3RvcnkgPSBzdGQ6Om1vdmUo
Y2FsbF9mYWN0b3J5KTsKKyAgZGVwZW5kZW5jaWVzLmV2ZW50X2xvZ19mYWN0b3J5ID0gc3RkOjpt
b3ZlKHJ0Y19ldmVudF9sb2dfZmFjdG9yeSk7CisgIGRlcGVuZGVuY2llcy5mZWNfY29udHJvbGxl
cl9mYWN0b3J5ID0gc3RkOjptb3ZlKGZlY19jb250cm9sbGVyX2ZhY3RvcnkpOworICBkZXBlbmRl
bmNpZXMubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgPSBzdGQ6Om1vdmUobWVkaWFfdHJhbnNwb3J0
X2ZhY3RvcnkpOwogCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJ
bnRlcmZhY2U+IGZhY3RvcnkoCi0gICAgICBDcmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0
b3J5KAotICAgICAgICAgIG5ldHdvcmtfdGhyZWFkLmdldCgpLCB3b3JrZXJfdGhyZWFkLmdldCgp
LCBzaWduYWxpbmdfdGhyZWFkLmdldCgpLAotICAgICAgICAgIHN0ZDo6bW92ZShtZWRpYV9lbmdp
bmUpLCBzdGQ6Om1vdmUoY2FsbF9mYWN0b3J5KSwKLSAgICAgICAgICBzdGQ6Om1vdmUocnRjX2V2
ZW50X2xvZ19mYWN0b3J5KSwgc3RkOjptb3ZlKGZlY19jb250cm9sbGVyX2ZhY3RvcnkpKSk7Cisg
ICAgICBDcmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KHN0ZDo6bW92ZShkZXBlbmRl
bmNpZXMpKSk7CisKICAgUlRDX0NIRUNLKGZhY3RvcnkpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIHRo
ZSBwZWVyIGNvbm5lY3Rpb24gZmFjdG9yeTsgIgogICAgICAgICAgICAgICAgICAgICAgPDwgIldl
YlJUQy9saWJqaW5nbGUgaW5pdCBsaWtlbHkgZmFpbGVkIG9uIHRoaXMgZGV2aWNlIjsKICAgLy8g
VE9ETyhob25naGFpeik6IE1heWJlIHB1dCB0aGUgb3B0aW9ucyBhcyB0aGUgYXJndW1lbnQgb2YK
QEAgLTI4MywyMSArMjg2LDM5IEBAIHN0YXRpYyBqbG9uZyBKTklfUGVlckNvbm5lY3Rpb25GYWN0
b3J5X0NyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKICAgICBjb25zdCBKYXZhUGFyYW1SZWY8
am9iamVjdD4mIGpjb250ZXh0LAogICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqb2JqZWN0PiYgam9w
dGlvbnMsCiAgICAgamxvbmcgbmF0aXZlX2F1ZGlvX2RldmljZV9tb2R1bGUsCisgICAgamxvbmcg
bmF0aXZlX2F1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBqbG9uZyBuYXRpdmVfYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5LAogICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqb2JqZWN0PiYgamVuY29kZXJf
ZmFjdG9yeSwKICAgICBjb25zdCBKYXZhUGFyYW1SZWY8am9iamVjdD4mIGpkZWNvZGVyX2ZhY3Rv
cnksCiAgICAgamxvbmcgbmF0aXZlX2F1ZGlvX3Byb2Nlc3NvciwKLSAgICBqbG9uZyBuYXRpdmVf
ZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSkgeworICAgIGpsb25nIG5hdGl2ZV9mZWNfY29udHJvbGxl
cl9mYWN0b3J5LAorICAgIGpsb25nIG5hdGl2ZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSkgewog
ICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzb3IgPQog
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxBdWRpb1Byb2Nlc3NpbmcqPihuYXRpdmVfYXVkaW9fcHJv
Y2Vzc29yKTsKKyAgQXVkaW9FbmNvZGVyRmFjdG9yeSogYXVkaW9fZW5jb2Rlcl9mYWN0b3J5X3B0
ciA9CisgICAgICByZWludGVycHJldF9jYXN0PEF1ZGlvRW5jb2RlckZhY3RvcnkqPihuYXRpdmVf
YXVkaW9fZW5jb2Rlcl9mYWN0b3J5KTsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2Rl
ckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSgKKyAgICAgIGF1ZGlvX2VuY29kZXJfZmFj
dG9yeV9wdHIpOworICAvLyBSZWxlYXNlIHRoZSBjYWxsZXIncyByZWZlcmVuY2UgY291bnQuCisg
IGF1ZGlvX2VuY29kZXJfZmFjdG9yeS0+UmVsZWFzZSgpOworICBBdWRpb0RlY29kZXJGYWN0b3J5
KiBhdWRpb19kZWNvZGVyX2ZhY3RvcnlfcHRyID0KKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8QXVk
aW9EZWNvZGVyRmFjdG9yeSo+KG5hdGl2ZV9hdWRpb19kZWNvZGVyX2ZhY3RvcnkpOworICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
KAorICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5X3B0cik7CisgIC8vIFJlbGVhc2UgdGhlIGNh
bGxlcidzIHJlZmVyZW5jZSBjb3VudC4KKyAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LT5SZWxlYXNl
KCk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4gZmVj
X2NvbnRyb2xsZXJfZmFjdG9yeSgKICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RmVjQ29udHJvbGxl
ckZhY3RvcnlJbnRlcmZhY2UqPigKICAgICAgICAgICBuYXRpdmVfZmVjX2NvbnRyb2xsZXJfZmFj
dG9yeSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRGYWN0b3J5PiBtZWRpYV90
cmFuc3BvcnRfZmFjdG9yeSgKKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TWVkaWFUcmFuc3BvcnRG
YWN0b3J5Kj4obmF0aXZlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KSk7CiAgIHJldHVybiBDcmVh
dGVQZWVyQ29ubmVjdGlvbkZhY3RvcnlGb3JKYXZhKAogICAgICAgam5pLCBqY29udGV4dCwgam9w
dGlvbnMsCiAgICAgICByZWludGVycHJldF9jYXN0PEF1ZGlvRGV2aWNlTW9kdWxlKj4obmF0aXZl
X2F1ZGlvX2RldmljZV9tb2R1bGUpLAotICAgICAgamVuY29kZXJfZmFjdG9yeSwgamRlY29kZXJf
ZmFjdG9yeSwKKyAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5LCBqZW5jb2Rlcl9mYWN0b3J5LAorICAgICAgamRlY29kZXJfZmFjdG9yeSwKICAgICAgIGF1
ZGlvX3Byb2Nlc3NvciA/IGF1ZGlvX3Byb2Nlc3NvciA6IENyZWF0ZUF1ZGlvUHJvY2Vzc2luZygp
LAotICAgICAgc3RkOjptb3ZlKGZlY19jb250cm9sbGVyX2ZhY3RvcnkpKTsKKyAgICAgIHN0ZDo6
bW92ZShmZWNfY29udHJvbGxlcl9mYWN0b3J5KSwgc3RkOjptb3ZlKG1lZGlhX3RyYW5zcG9ydF9m
YWN0b3J5KSk7CiB9CiAKIHN0YXRpYyB2b2lkIEpOSV9QZWVyQ29ubmVjdGlvbkZhY3RvcnlfRnJl
ZUZhY3RvcnkoSk5JRW52KiwKQEAgLTM5NiwxOCArNDE3LDIwIEBAIHN0YXRpYyBqbG9uZyBKTklf
UGVlckNvbm5lY3Rpb25GYWN0b3J5X0NyZWF0ZVBlZXJDb25uZWN0aW9uKAogICAgICAgUGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb25UeXBlOjprQWdncmVzc2l2ZSk7CiAg
IEphdmFUb05hdGl2ZVJUQ0NvbmZpZ3VyYXRpb24oam5pLCBqX3J0Y19jb25maWcsICZydGNfY29u
ZmlnKTsKIAotICAvLyBHZW5lcmF0ZSBub24tZGVmYXVsdCBjZXJ0aWZpY2F0ZS4KLSAgcnRjOjpL
ZXlUeXBlIGtleV90eXBlID0gR2V0UnRjQ29uZmlnS2V5VHlwZShqbmksIGpfcnRjX2NvbmZpZyk7
Ci0gIGlmIChrZXlfdHlwZSAhPSBydGM6OktUX0RFRkFVTFQpIHsKLSAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGUgPQotICAgICAgICBydGM6OlJU
Q0NlcnRpZmljYXRlR2VuZXJhdG9yOjpHZW5lcmF0ZUNlcnRpZmljYXRlKAotICAgICAgICAgICAg
cnRjOjpLZXlQYXJhbXMoa2V5X3R5cGUpLCBhYnNsOjpudWxsb3B0KTsKLSAgICBpZiAoIWNlcnRp
ZmljYXRlKSB7Ci0gICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGdlbmVyYXRl
IGNlcnRpZmljYXRlLiBLZXlUeXBlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCBrZXlf
dHlwZTsKLSAgICAgIHJldHVybiAwOworICBpZiAocnRjX2NvbmZpZy5jZXJ0aWZpY2F0ZXMuZW1w
dHkoKSkgeworICAgIC8vIEdlbmVyYXRlIG5vbi1kZWZhdWx0IGNlcnRpZmljYXRlLgorICAgIHJ0
Yzo6S2V5VHlwZSBrZXlfdHlwZSA9IEdldFJ0Y0NvbmZpZ0tleVR5cGUoam5pLCBqX3J0Y19jb25m
aWcpOworICAgIGlmIChrZXlfdHlwZSAhPSBydGM6OktUX0RFRkFVTFQpIHsKKyAgICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxydGM6OlJUQ0NlcnRpZmljYXRlPiBjZXJ0aWZpY2F0ZSA9CisgICAgICAg
ICAgcnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcjo6R2VuZXJhdGVDZXJ0aWZpY2F0ZSgKKyAg
ICAgICAgICAgICAgcnRjOjpLZXlQYXJhbXMoa2V5X3R5cGUpLCBhYnNsOjpudWxsb3B0KTsKKyAg
ICAgIGlmICghY2VydGlmaWNhdGUpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZh
aWxlZCB0byBnZW5lcmF0ZSBjZXJ0aWZpY2F0ZS4gS2V5VHlwZTogIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCBrZXlfdHlwZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAg
ICBydGNfY29uZmlnLmNlcnRpZmljYXRlcy5wdXNoX2JhY2soY2VydGlmaWNhdGUpOwogICAgIH0K
LSAgICBydGNfY29uZmlnLmNlcnRpZmljYXRlcy5wdXNoX2JhY2soY2VydGlmaWNhdGUpOwogICB9
CiAKICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhQ29uc3RyYWludHNJbnRlcmZhY2U+IGNvbnN0cmFp
bnRzOwpAQCAtNDM3LDEyICs0NjAsMTMgQEAgc3RhdGljIGpsb25nIEpOSV9QZWVyQ29ubmVjdGlv
bkZhY3RvcnlfQ3JlYXRlVmlkZW9Tb3VyY2UoCiAgICAgSk5JRW52KiBqbmksCiAgICAgY29uc3Qg
SmF2YVBhcmFtUmVmPGpjbGFzcz4mLAogICAgIGpsb25nIG5hdGl2ZV9mYWN0b3J5LAotICAgIGpi
b29sZWFuIGlzX3NjcmVlbmNhc3QpIHsKKyAgICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0LAorICAg
IGpib29sZWFuIGFsaWduX3RpbWVzdGFtcHMpIHsKICAgT3duZWRGYWN0b3J5QW5kVGhyZWFkcyog
ZmFjdG9yeSA9CiAgICAgICByZWludGVycHJldF9jYXN0PE93bmVkRmFjdG9yeUFuZFRocmVhZHMq
PihuYXRpdmVfZmFjdG9yeSk7CiAgIHJldHVybiBqbG9uZ0Zyb21Qb2ludGVyKENyZWF0ZVZpZGVv
U291cmNlKGpuaSwgZmFjdG9yeS0+c2lnbmFsaW5nX3RocmVhZCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWN0b3J5LT53b3JrZXJfdGhyZWFkKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NjcmVlbmNhc3Qp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2NyZWVu
Y2FzdCwgYWxpZ25fdGltZXN0YW1wcykpOwogfQogCiBzdGF0aWMgamxvbmcgSk5JX1BlZXJDb25u
ZWN0aW9uRmFjdG9yeV9DcmVhdGVWaWRlb1RyYWNrKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9ydGNj
ZXJ0aWZpY2F0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM1
OThjY2UwOWUzNWM2YTRhYzJmMTFmMGRkNWZjZmQxYWY5ZTE2NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3Ny
Yy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuY2MKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUu
aCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL2ljZWNhbmRpZGF0ZS5oIgorCisj
aW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0
aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3J0Y2NlcnRpZmljYXRlZ2VuZXJhdG9yLmgi
CisjaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3BlZXJjb25uZWN0aW9uX2puaS9qbmkv
UnRjQ2VydGlmaWNhdGVQZW1fam5pLmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvbmF0aXZlX2Fw
aS9qbmkvamF2YV90eXBlcy5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvam5pX2hl
bHBlcnMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2Ugam5pIHsKKworcnRjOjpS
VENDZXJ0aWZpY2F0ZVBFTSBKYXZhVG9OYXRpdmVSVENDZXJ0aWZpY2F0ZVBFTSgKKyAgICBKTklF
bnYqIGpuaSwKKyAgICBjb25zdCBKYXZhUmVmPGpvYmplY3Q+JiBqX3J0Y19jZXJ0aWZpY2F0ZSkg
eworICBTY29wZWRKYXZhTG9jYWxSZWY8anN0cmluZz4gcHJpdmF0ZWtleV9maWVsZCA9CisgICAg
ICBKYXZhX1J0Y0NlcnRpZmljYXRlUGVtX2dldFByaXZhdGVLZXkoam5pLCBqX3J0Y19jZXJ0aWZp
Y2F0ZSk7CisgIFNjb3BlZEphdmFMb2NhbFJlZjxqc3RyaW5nPiBjZXJ0aWZpY2F0ZV9maWVsZCA9
CisgICAgICBKYXZhX1J0Y0NlcnRpZmljYXRlUGVtX2dldENlcnRpZmljYXRlKGpuaSwgal9ydGNf
Y2VydGlmaWNhdGUpOworICByZXR1cm4gcnRjOjpSVENDZXJ0aWZpY2F0ZVBFTShKYXZhVG9OYXRp
dmVTdHJpbmcoam5pLCBwcml2YXRla2V5X2ZpZWxkKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSmF2YVRvTmF0aXZlU3RyaW5nKGpuaSwgY2VydGlmaWNhdGVfZmllbGQpKTsKK30K
KworU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IE5hdGl2ZVRvSmF2YVJUQ0NlcnRpZmljYXRl
UEVNKAorICAgIEpOSUVudiogam5pLAorICAgIGNvbnN0IHJ0Yzo6UlRDQ2VydGlmaWNhdGVQRU0m
IGNlcnRpZmljYXRlKSB7CisgIHJldHVybiBKYXZhX1J0Y0NlcnRpZmljYXRlUGVtX0NvbnN0cnVj
dG9yKAorICAgICAgam5pLCBOYXRpdmVUb0phdmFTdHJpbmcoam5pLCBjZXJ0aWZpY2F0ZS5wcml2
YXRlX2tleSgpKSwKKyAgICAgIE5hdGl2ZVRvSmF2YVN0cmluZyhqbmksIGNlcnRpZmljYXRlLmNl
cnRpZmljYXRlKCkpKTsKK30KKworc3RhdGljIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBK
TklfUnRjQ2VydGlmaWNhdGVQZW1fR2VuZXJhdGVDZXJ0aWZpY2F0ZSgKKyAgICBKTklFbnYqIGpu
aSwKKyAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNzPiYsCisgICAgY29uc3QgSmF2YVBhcmFt
UmVmPGpvYmplY3Q+JiBqX2tleV90eXBlLAorICAgIGpsb25nIGpfZXhwaXJlcykgeworICBydGM6
OktleVR5cGUga2V5X3R5cGUgPSBKYXZhVG9OYXRpdmVLZXlUeXBlKGpuaSwgal9rZXlfdHlwZSk7
CisgIHVpbnQ2NF90IGV4cGlyZXMgPSAodWludDY0X3Qpal9leHBpcmVzOworICBydGM6OnNjb3Bl
ZF9yZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGUgPQorICAgICAgcnRjOjpS
VENDZXJ0aWZpY2F0ZUdlbmVyYXRvcjo6R2VuZXJhdGVDZXJ0aWZpY2F0ZSgKKyAgICAgICAgICBy
dGM6OktleVBhcmFtcyhrZXlfdHlwZSksIGV4cGlyZXMpOworICBydGM6OlJUQ0NlcnRpZmljYXRl
UEVNIHBlbSA9IGNlcnRpZmljYXRlLT5Ub1BFTSgpOworICByZXR1cm4gSmF2YV9SdGNDZXJ0aWZp
Y2F0ZVBlbV9Db25zdHJ1Y3RvcigKKyAgICAgIGpuaSwgTmF0aXZlVG9KYXZhU3RyaW5nKGpuaSwg
cGVtLnByaXZhdGVfa2V5KCkpLAorICAgICAgTmF0aXZlVG9KYXZhU3RyaW5nKGpuaSwgcGVtLmNl
cnRpZmljYXRlKCkpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGpuaQorfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9ydGNjZXJ0aWZpY2F0ZS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9y
dGNjZXJ0aWZpY2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZDFmNzVkMTM5OTNkNTBjYmVhYTZlZDdmNjE1
NmM4Mjk2NTlhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3J0Y2NlcnRpZmljYXRlLmgK
QEAgLTAsMCArMSwzMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBTREtfQU5EUk9J
RF9TUkNfSk5JX1BDX1JUQ0NFUlRJRklDQVRFX0hfCisjZGVmaW5lIFNES19BTkRST0lEX1NSQ19K
TklfUENfUlRDQ0VSVElGSUNBVEVfSF8KKworI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50Lmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaCIKKyNpbmNsdWRlICJzZGsvYW5k
cm9pZC9uYXRpdmVfYXBpL2puaS9qYXZhX3R5cGVzLmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQv
c3JjL2puaS9qbmlfaGVscGVycy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSBq
bmkgeworCitydGM6OlJUQ0NlcnRpZmljYXRlUEVNIEphdmFUb05hdGl2ZVJUQ0NlcnRpZmljYXRl
UEVNKAorICAgIEpOSUVudiogam5pLAorICAgIGNvbnN0IEphdmFSZWY8am9iamVjdD4mIGpfcnRj
X2NlcnRpZmljYXRlKTsKKworU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IE5hdGl2ZVRvSmF2
YVJUQ0NlcnRpZmljYXRlUEVNKAorICAgIEpOSUVudiogZW52LAorICAgIGNvbnN0IHJ0Yzo6UlRD
Q2VydGlmaWNhdGVQRU0mIGNlcnRpZmljYXRlKTsKKworfSAgLy8gbmFtZXNwYWNlIGpuaQorfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFNES19BTkRST0lEX1NSQ19KTklfUENf
UlRDQ0VSVElGSUNBVEVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvdmlkZW8uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3Bj
L3ZpZGVvLmNjCmluZGV4IGRkMTBmZDUxY2I2YWQ1ZjRmNzcwZjI4OGIyN2ZhZmJkN2ZjMDgzZGQu
LmM3YzZlNzZkNWQ5YmE3M2UwNWI5MDBkM2JmNWUwYzBjMTBlNTViYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9q
bmkvcGMvdmlkZW8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy92aWRlby5jYwpAQCAtNDQsMTAgKzQ0LDExIEBA
IFZpZGVvRGVjb2RlckZhY3RvcnkqIENyZWF0ZVZpZGVvRGVjb2RlckZhY3RvcnkoCiB2b2lkKiBD
cmVhdGVWaWRlb1NvdXJjZShKTklFbnYqIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgcnRj
OjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBqYm9vbGVh
biBpc19zY3JlZW5jYXN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqYm9vbGVhbiBpc19z
Y3JlZW5jYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgamJvb2xlYW4gYWxpZ25fdGltZXN0
YW1wcykgewogICBydGM6OnNjb3BlZF9yZWZwdHI8QW5kcm9pZFZpZGVvVHJhY2tTb3VyY2U+IHNv
dXJjZSgKLSAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8QW5kcm9pZFZpZGVvVHJhY2tT
b3VyY2U+KHNpZ25hbGluZ190aHJlYWQsIGVudiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NjcmVlbmNhc3QpKTsKKyAgICAgIG5l
dyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8QW5kcm9pZFZpZGVvVHJhY2tTb3VyY2U+KAorICAgICAg
ICAgIHNpZ25hbGluZ190aHJlYWQsIGVudiwgaXNfc2NyZWVuY2FzdCwgYWxpZ25fdGltZXN0YW1w
cykpOwogICByZXR1cm4gVmlkZW9UcmFja1NvdXJjZVByb3h5OjpDcmVhdGUoc2lnbmFsaW5nX3Ro
cmVhZCwgd29ya2VyX3RocmVhZCwgc291cmNlKQogICAgICAgLnJlbGVhc2UoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qbmkvcGMvdmlkZW8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvdmlkZW8uaAppbmRleCAxODM3NzBiODIw
NjI4MzkwMmY3OWIzNWY2MDczYjZlYWY3OWU5OGZiLi4wNDM5MGVhNDUzZWEwYTNiOGNlMTJiMWI0
ZTM1ZmNiOGU3ZTY1MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3ZpZGVvLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9w
Yy92aWRlby5oCkBAIC0zNiw3ICszNiw4IEBAIFZpZGVvRGVjb2RlckZhY3RvcnkqIENyZWF0ZVZp
ZGVvRGVjb2RlckZhY3RvcnkoCiB2b2lkKiBDcmVhdGVWaWRlb1NvdXJjZShKTklFbnYqIGVudiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGpib29sZWFuIGlzX3NjcmVlbmNhc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICBqYm9vbGVhbiBhbGlnbl90aW1lc3RhbXBzKTsKIAogfSAgLy8gbmFtZXNwYWNlIGpuaQog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS90aW1lc3RhbXBhbGlnbmVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS90aW1lc3RhbXBhbGlnbmVyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZTliMGZkYzUxMzQ1
NGY1MGRjYjJiNmJmZDEyYjdiYWMxMGJiYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3RpbWVz
dGFtcGFsaWduZXIuY2MKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lu
Y2x1ZGUgPGpuaS5oPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXN0YW1wYWxpZ25lci5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL2dl
bmVyYXRlZF92aWRlb19qbmkvam5pL1RpbWVzdGFtcEFsaWduZXJfam5pLmgiCisjaW5jbHVkZSAi
c2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfaGVscGVycy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsK
K25hbWVzcGFjZSBqbmkgeworCitzdGF0aWMgamxvbmcgSk5JX1RpbWVzdGFtcEFsaWduZXJfUnRj
VGltZU5hbm9zKAorICAgIEpOSUVudiogZW52LAorICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xh
c3M+JiBqX2NhbGxlcikgeworICByZXR1cm4gcnRjOjpUaW1lTmFub3MoKTsKK30KKworc3RhdGlj
IGpsb25nIEpOSV9UaW1lc3RhbXBBbGlnbmVyX0NyZWF0ZVRpbWVzdGFtcEFsaWduZXIoCisgICAg
Sk5JRW52KiBlbnYsCisgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mIGpfY2FsbGVyKSB7
CisgIHJldHVybiBqbG9uZ0Zyb21Qb2ludGVyKG5ldyBydGM6OlRpbWVzdGFtcEFsaWduZXIoKSk7
Cit9CisKK3N0YXRpYyB2b2lkIEpOSV9UaW1lc3RhbXBBbGlnbmVyX1JlbGVhc2VUaW1lc3RhbXBB
bGlnbmVyKAorICAgIEpOSUVudiogZW52LAorICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+
JiBqX2NhbGxlciwKKyAgICBqbG9uZyB0aW1lc3RhbXBfYWxpZ25lcikgeworICBkZWxldGUgcmVp
bnRlcnByZXRfY2FzdDxydGM6OlRpbWVzdGFtcEFsaWduZXIqPih0aW1lc3RhbXBfYWxpZ25lcik7
Cit9CisKK3N0YXRpYyBqbG9uZyBKTklfVGltZXN0YW1wQWxpZ25lcl9UcmFuc2xhdGVUaW1lc3Rh
bXAoCisgICAgSk5JRW52KiBlbnYsCisgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mIGpf
Y2FsbGVyLAorICAgIGpsb25nIHRpbWVzdGFtcF9hbGlnbmVyLAorICAgIGpsb25nIGNhbWVyYV90
aW1lX25zKSB7CisgIHJldHVybiByZWludGVycHJldF9jYXN0PHJ0Yzo6VGltZXN0YW1wQWxpZ25l
cio+KHRpbWVzdGFtcF9hbGlnbmVyKQorICAgICAgICAgICAgIC0+VHJhbnNsYXRlVGltZXN0YW1w
KGNhbWVyYV90aW1lX25zIC8gcnRjOjprTnVtTmFub3NlY3NQZXJNaWNyb3NlYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRpbWVNaWNyb3MoKSkgKgorICAgICAgICAg
cnRjOjprTnVtTmFub3NlY3NQZXJNaWNyb3NlYzsKK30KKworfSAgLy8gbmFtZXNwYWNlIGpuaQor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb2VuY29kZXJ3cmFw
cGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvc3JjL2puaS92aWRlb2VuY29kZXJ3cmFwcGVyLmNjCmluZGV4IDYzODFjNjNjYjA2Zjkw
NzI5NjgxNzhkY2EwOWIxNDRlOTBkYzkwMGQuLjFlNGI4NGVhYzYwZjJiN2M5YmFkZWYxYWMxY2Jl
MDUyYjlhYWU5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdmlkZW9lbmNvZGVyd3JhcHBlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL3ZpZGVvZW5jb2RlcndyYXBwZXIuY2MKQEAgLTMyLDggKzMyLDYgQEAgbmFtZXNwYWNl
IGpuaSB7CiBWaWRlb0VuY29kZXJXcmFwcGVyOjpWaWRlb0VuY29kZXJXcmFwcGVyKEpOSUVudiog
am5pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKYXZh
UmVmPGpvYmplY3Q+JiBqX2VuY29kZXIpCiAgICAgOiBlbmNvZGVyXyhqbmksIGpfZW5jb2Rlciks
IGludF9hcnJheV9jbGFzc18oR2V0Q2xhc3Moam5pLCAiW0kiKSkgewotICBpbXBsZW1lbnRhdGlv
bl9uYW1lXyA9IEdldEltcGxlbWVudGF0aW9uTmFtZShqbmkpOwotCiAgIGluaXRpYWxpemVkXyA9
IGZhbHNlOwogICBudW1fcmVzZXRzXyA9IDA7CiB9CkBAIC04Miw2ICs4MCwxMCBAQCBpbnQzMl90
IFZpZGVvRW5jb2RlcldyYXBwZXI6OkluaXRFbmNvZGVJbnRlcm5hbChKTklFbnYqIGpuaSkgewog
ICAgICAgam5pLCBKYXZhX1ZpZGVvRW5jb2Rlcl9pbml0RW5jb2RlKGpuaSwgZW5jb2Rlcl8sIHNl
dHRpbmdzLCBjYWxsYmFjaykpOwogICBSVENfTE9HKExTX0lORk8pIDw8ICJpbml0RW5jb2RlOiAi
IDw8IHN0YXR1czsKIAorICBlbmNvZGVyX2luZm9fLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSB0
cnVlOworICBlbmNvZGVyX2luZm9fLmltcGxlbWVudGF0aW9uX25hbWUgPSBHZXRJbXBsZW1lbnRh
dGlvbk5hbWUoam5pKTsKKyAgZW5jb2Rlcl9pbmZvXy5zY2FsaW5nX3NldHRpbmdzID0gR2V0U2Nh
bGluZ1NldHRpbmdzSW50ZXJuYWwoam5pKTsKKwogICBpZiAoc3RhdHVzID09IFdFQlJUQ19WSURF
T19DT0RFQ19PSykgewogICAgIGluaXRpYWxpemVkXyA9IHRydWU7CiAgIH0KQEAgLTEzNiwxNCAr
MTM4LDYgQEAgaW50MzJfdCBWaWRlb0VuY29kZXJXcmFwcGVyOjpFbmNvZGUoCiAgIHJldHVybiBI
YW5kbGVSZXR1cm5Db2RlKGpuaSwgcmV0LCAiZW5jb2RlIik7CiB9CiAKLWludDMyX3QgVmlkZW9F
bmNvZGVyV3JhcHBlcjo6U2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgcnR0KSB7Ci0gIEpOSUVudiogam5pID0gQXR0YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7
Ci0gIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiByZXQgPSBKYXZhX1ZpZGVvRW5jb2Rlcl9z
ZXRDaGFubmVsUGFyYW1ldGVycygKLSAgICAgIGpuaSwgZW5jb2Rlcl8sIChqc2hvcnQpcGFja2V0
X2xvc3MsIChqbG9uZylydHQpOwotICByZXR1cm4gSGFuZGxlUmV0dXJuQ29kZShqbmksIHJldCwg
InNldENoYW5uZWxQYXJhbWV0ZXJzIik7Ci19Ci0KIGludDMyX3QgVmlkZW9FbmNvZGVyV3JhcHBl
cjo6U2V0UmF0ZUFsbG9jYXRpb24oCiAgICAgY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYg
YWxsb2NhdGlvbiwKICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIHsKQEAgLTE1Niw5ICsxNTAsMTIg
QEAgaW50MzJfdCBWaWRlb0VuY29kZXJXcmFwcGVyOjpTZXRSYXRlQWxsb2NhdGlvbigKICAgcmV0
dXJuIEhhbmRsZVJldHVybkNvZGUoam5pLCByZXQsICJzZXRSYXRlQWxsb2NhdGlvbiIpOwogfQog
Ci1WaWRlb0VuY29kZXJXcmFwcGVyOjpTY2FsaW5nU2V0dGluZ3MgVmlkZW9FbmNvZGVyV3JhcHBl
cjo6R2V0U2NhbGluZ1NldHRpbmdzKCkKLSAgICBjb25zdCB7Ci0gIEpOSUVudiogam5pID0gQXR0
YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7CitWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIFZp
ZGVvRW5jb2RlcldyYXBwZXI6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICByZXR1cm4gZW5j
b2Rlcl9pbmZvXzsKK30KKworVmlkZW9FbmNvZGVyV3JhcHBlcjo6U2NhbGluZ1NldHRpbmdzCitW
aWRlb0VuY29kZXJXcmFwcGVyOjpHZXRTY2FsaW5nU2V0dGluZ3NJbnRlcm5hbChKTklFbnYqIGpu
aSkgY29uc3QgewogICBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gal9zY2FsaW5nX3NldHRp
bmdzID0KICAgICAgIEphdmFfVmlkZW9FbmNvZGVyX2dldFNjYWxpbmdTZXR0aW5ncyhqbmksIGVu
Y29kZXJfKTsKICAgYm9vbCBpc09uID0KQEAgLTIwNiwxNCArMjAzLDYgQEAgVmlkZW9FbmNvZGVy
V3JhcHBlcjo6U2NhbGluZ1NldHRpbmdzIFZpZGVvRW5jb2RlcldyYXBwZXI6OkdldFNjYWxpbmdT
ZXR0aW5ncygpCiAgIH0KIH0KIAotYm9vbCBWaWRlb0VuY29kZXJXcmFwcGVyOjpTdXBwb3J0c05h
dGl2ZUhhbmRsZSgpIGNvbnN0IHsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWNvbnN0IGNoYXIqIFZp
ZGVvRW5jb2RlcldyYXBwZXI6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJu
IGltcGxlbWVudGF0aW9uX25hbWVfLmNfc3RyKCk7Ci19Ci0KIHZvaWQgVmlkZW9FbmNvZGVyV3Jh
cHBlcjo6T25FbmNvZGVkRnJhbWUoSk5JRW52KiBqbmksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFSZWY8am9iamVjdD4mIGpfY2FsbGVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKYXZhUmVmPGpvYmpl
Y3Q+JiBqX2J1ZmZlciwKQEAgLTM4NSw3ICszNzQsNiBAQCBDb2RlY1NwZWNpZmljSW5mbyBWaWRl
b0VuY29kZXJXcmFwcGVyOjpQYXJzZUNvZGVjU3BlY2lmaWNJbmZvKAogICBDb2RlY1NwZWNpZmlj
SW5mbyBpbmZvOwogICBtZW1zZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7CiAgIGluZm8uY29k
ZWNUeXBlID0gY29kZWNfc2V0dGluZ3NfLmNvZGVjVHlwZTsKLSAgaW5mby5jb2RlY19uYW1lID0g
aW1wbGVtZW50YXRpb25fbmFtZV8uY19zdHIoKTsKIAogICBzd2l0Y2ggKGNvZGVjX3NldHRpbmdz
Xy5jb2RlY1R5cGUpIHsKICAgICBjYXNlIGtWaWRlb0NvZGVjVlA4OgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2pu
aS92aWRlb2VuY29kZXJ3cmFwcGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZpZGVvZW5jb2RlcndyYXBwZXIuaAppbmRl
eCBjMzA1NjA1MDNjYjc1ZWY5YWE1NDJkMTgxOTA1NTM5YWU2NGQ0ZGQ4Li4zNjE4Zjc4NDczNzVl
NTkwMzQ1Y2Y3N2MzMDg5ZWMwZDY3Y2ZkMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZpZGVvZW5jb2Rl
cndyYXBwZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZpZGVvZW5jb2RlcndyYXBwZXIuaApAQCAtNDUsMTQgKzQ1
LDEwIEBAIGNsYXNzIFZpZGVvRW5jb2RlcldyYXBwZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsK
ICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmlj
X2luZm8sCiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1lVHlwZT4qIGZy
YW1lX3R5cGVzKSBvdmVycmlkZTsKIAotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVp
bnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7Ci0KICAgaW50MzJfdCBT
ZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgb3ZlcnJp
ZGU7CiAKLSAgU2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IG92ZXJy
aWRlOwotCi0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
RW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZTsKIAogICAvLyBTaG91
bGQgb25seSBiZSBjYWxsZWQgYnkgSk5JLgogICB2b2lkIE9uRW5jb2RlZEZyYW1lKEpOSUVudiog
am5pLApAQCAtNjYsOCArNjIsNiBAQCBjbGFzcyBWaWRlb0VuY29kZXJXcmFwcGVyIDogcHVibGlj
IFZpZGVvRW5jb2RlciB7CiAgICAgICAgICAgICAgICAgICAgICAgamJvb2xlYW4gY29tcGxldGVf
ZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVJlZjxqb2JqZWN0PiYgal9x
cCk7CiAKLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0KICBwcml2YXRlOgogICBzdHJ1Y3QgRnJhbWVFeHRyYUluZm8gewogICAgIGludDY0X3QgY2Fw
dHVyZV90aW1lX25zOyAgLy8gVXNlZCBhcyBhbiBpZGVudGlmaWVyIG9mIHRoZSBmcmFtZS4KQEAg
LTkyLDExICs4NiwxMSBAQCBjbGFzcyBWaWRlb0VuY29kZXJXcmFwcGVyIDogcHVibGljIFZpZGVv
RW5jb2RlciB7CiAgICAgICBjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9u
KTsKICAgc3RkOjpzdHJpbmcgR2V0SW1wbGVtZW50YXRpb25OYW1lKEpOSUVudiogam5pKSBjb25z
dDsKIAorICBTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzSW50ZXJuYWwoSk5JRW52
KiBqbmkpIGNvbnN0OworCiAgIGNvbnN0IFNjb3BlZEphdmFHbG9iYWxSZWY8am9iamVjdD4gZW5j
b2Rlcl87CiAgIGNvbnN0IFNjb3BlZEphdmFHbG9iYWxSZWY8amNsYXNzPiBpbnRfYXJyYXlfY2xh
c3NfOwogCi0gIHN0ZDo6c3RyaW5nIGltcGxlbWVudGF0aW9uX25hbWVfOwotCiAgIHJ0Yzo6VGFz
a1F1ZXVlKiBlbmNvZGVyX3F1ZXVlXzsKICAgc3RkOjpkZXF1ZTxGcmFtZUV4dHJhSW5mbz4gZnJh
bWVfZXh0cmFfaW5mb3NfOwogICBFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2tfOwpAQCAt
MTA0LDYgKzk4LDcgQEAgY2xhc3MgVmlkZW9FbmNvZGVyV3JhcHBlciA6IHB1YmxpYyBWaWRlb0Vu
Y29kZXIgewogICBpbnQgbnVtX3Jlc2V0c187CiAgIGludCBudW1iZXJfb2ZfY29yZXNfOwogICBW
aWRlb0NvZGVjIGNvZGVjX3NldHRpbmdzXzsKKyAgRW5jb2RlckluZm8gZW5jb2Rlcl9pbmZvXzsK
ICAgSDI2NEJpdHN0cmVhbVBhcnNlciBoMjY0X2JpdHN0cmVhbV9wYXJzZXJfOwogCiAgIC8vIFZQ
OSB2YXJpYWJsZXMgdG8gcG9wdWxhdGUgY29kZWMgc3BlY2lmaWMgc3RydWN0dXJlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS92aWRlb3NvdXJjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdmlkZW9zb3VyY2UuY2MKaW5kZXggMDli
NTM4ZWJjMjY1YmE5ODdlMGMyMmM2YmNjMzk1MTMxZTg1NTA3Zi4uMzdiYTBiMDRiMTE1MTAxNTQ3
ZTMxNjQ1N2ZiY2E5NjhjNWE5NTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb3NvdXJjZS5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9zcmMvam5pL3ZpZGVvc291cmNlLmNjCkBAIC0zMywxMyArMzMsMTYgQEAgc3RhdGljIGpsb25n
IEpOSV9WaWRlb1NvdXJjZV9HZXRJbnRlcm5hbFNvdXJjZShKTklFbnYqIGpuaSwKIHN0YXRpYyB2
b2lkIEpOSV9WaWRlb1NvdXJjZV9BZGFwdE91dHB1dEZvcm1hdChKTklFbnYqIGpuaSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKYXZhUGFyYW1S
ZWY8amNsYXNzPiYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgamxvbmcgal9zb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgamludCBqX3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppbnQgal9oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgamludCBqX2xhbmRzY2FwZV93aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IGpfbGFuZHNjYXBlX2hlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IGpfcG9y
dHJhaXRfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgamludCBqX3BvcnRyYWl0X2hlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaW50IGpfZnBzKSB7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlZp
ZGVvU291cmNlX25hdGl2ZUFkYXB0T3V0cHV0Rm9ybWF0IjsKICAgQW5kcm9pZFZpZGVvVHJhY2tT
b3VyY2UqIHNvdXJjZSA9CiAgICAgICBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZUZyb21KYXZhUHJv
eHkoal9zb3VyY2UpOwotICBzb3VyY2UtPk9uT3V0cHV0Rm9ybWF0UmVxdWVzdChqX3dpZHRoLCBq
X2hlaWdodCwgal9mcHMpOworICBzb3VyY2UtPk9uT3V0cHV0Rm9ybWF0UmVxdWVzdChqX2xhbmRz
Y2FwZV93aWR0aCwgal9sYW5kc2NhcGVfaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqX3BvcnRyYWl0X3dpZHRoLCBqX3BvcnRyYWl0X2hlaWdodCwgal9mcHMpOwogfQog
CiB9ICAvLyBuYW1lc3BhY2Ugam5pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZwOGNvZGVjLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2pu
aS92cDhjb2RlYy5jYwppbmRleCAyOTVhMDNhNjEwNzcwZjA2Yjk0NDUxMWNmZTAwM2EyYzI3NWM5
ZmM1Li4yNzU2YjEwMmZhZjE5MzI0ZWMwZDZiNGUwOTFjM2ZiZDZjNDE3ZjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL3ZwOGNvZGVjLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdnA4Y29kZWMuY2MKQEAgLTExLDIwICsxMSwy
MCBAQAogI2luY2x1ZGUgPGpuaS5oPgogCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgotI2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRl
ZF92cDhfam5pL2puaS9WUDhEZWNvZGVyX2puaS5oIgotI2luY2x1ZGUgInNkay9hbmRyb2lkL2dl
bmVyYXRlZF92cDhfam5pL2puaS9WUDhFbmNvZGVyX2puaS5oIgorI2luY2x1ZGUgInNkay9hbmRy
b2lkL2dlbmVyYXRlZF9saWJ2cHhfdnA4X2puaS9qbmkvTGlidnB4VnA4RGVjb2Rlcl9qbmkuaCIK
KyNpbmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRfbGlidnB4X3ZwOF9qbmkvam5pL0xpYnZw
eFZwOEVuY29kZXJfam5pLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfaGVs
cGVycy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBqbmkgewogCi1zdGF0aWMg
amxvbmcgSk5JX1ZQOEVuY29kZXJfQ3JlYXRlRW5jb2RlcihKTklFbnYqIGpuaSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xh
c3M+Jikgeworc3RhdGljIGpsb25nIEpOSV9MaWJ2cHhWcDhFbmNvZGVyX0NyZWF0ZUVuY29kZXIo
Sk5JRW52KiBqbmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNzPiYpIHsKICAgcmV0dXJuIGpsb25nRnJvbVBv
aW50ZXIoVlA4RW5jb2Rlcjo6Q3JlYXRlKCkucmVsZWFzZSgpKTsKIH0KIAotc3RhdGljIGpsb25n
IEpOSV9WUDhEZWNvZGVyX0NyZWF0ZURlY29kZXIoSk5JRW52KiBqbmksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNzPiYp
IHsKK3N0YXRpYyBqbG9uZyBKTklfTGlidnB4VnA4RGVjb2Rlcl9DcmVhdGVEZWNvZGVyKEpOSUVu
diogam5pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mKSB7CiAgIHJldHVybiBqbG9uZ0Zyb21Qb2ludGVy
KFZQOERlY29kZXI6OkNyZWF0ZSgpLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
dnA5Y29kZWMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvam5pL3ZwOWNvZGVjLmNjCmluZGV4IGNhNzEyZTZkODY1NGQxZWM1ZTkw
MjM4ZDhmMmI3YjdiN2Y1OTQyZmEuLjkyZjk3NTRkNTYzMzExYTA3M2VjMmI4YTMxNGM2NmUxYTMw
ZmQ1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdnA5Y29kZWMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92cDljb2RlYy5j
YwpAQCAtMTEsMzAgKzExLDMwIEBACiAjaW5jbHVkZSA8am5pLmg+CiAKICNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L2luY2x1ZGUvdnA5LmgiCi0jaW5jbHVkZSAic2Rr
L2FuZHJvaWQvZ2VuZXJhdGVkX3ZwOV9qbmkvam5pL1ZQOURlY29kZXJfam5pLmgiCi0jaW5jbHVk
ZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3ZwOV9qbmkvam5pL1ZQOUVuY29kZXJfam5pLmgiCisj
aW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX2xpYnZweF92cDlfam5pL2puaS9MaWJ2cHhW
cDlEZWNvZGVyX2puaS5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF9saWJ2cHhf
dnA5X2puaS9qbmkvTGlidnB4VnA5RW5jb2Rlcl9qbmkuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9p
ZC9zcmMvam5pL2puaV9oZWxwZXJzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNl
IGpuaSB7CiAKLXN0YXRpYyBqbG9uZyBKTklfVlA5RW5jb2Rlcl9DcmVhdGVFbmNvZGVyKEpOSUVu
diogam5pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SmF2YVBhcmFtUmVmPGpjbGFzcz4mIHcpIHsKK3N0YXRpYyBqbG9uZyBKTklfTGlidnB4VnA5RW5j
b2Rlcl9DcmVhdGVFbmNvZGVyKEpOSUVudiogam5pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mIHcpIHsK
ICAgcmV0dXJuIGpsb25nRnJvbVBvaW50ZXIoVlA5RW5jb2Rlcjo6Q3JlYXRlKCkucmVsZWFzZSgp
KTsKIH0KIAotc3RhdGljIGpib29sZWFuIEpOSV9WUDlFbmNvZGVyX0lzU3VwcG9ydGVkKEpOSUVu
diogam5pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEphdmFQYXJhbVJlZjxqY2xhc3M+Jikgeworc3RhdGljIGpib29sZWFuIEpOSV9MaWJ2cHhWcDlF
bmNvZGVyX0lzU3VwcG9ydGVkKEpOSUVudiogam5pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+Jikgewog
ICByZXR1cm4gIVN1cHBvcnRlZFZQOUNvZGVjcygpLmVtcHR5KCk7CiB9CiAKLXN0YXRpYyBqbG9u
ZyBKTklfVlA5RGVjb2Rlcl9DcmVhdGVEZWNvZGVyKEpOSUVudiogam5pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4m
IHcpIHsKK3N0YXRpYyBqbG9uZyBKTklfTGlidnB4VnA5RGVjb2Rlcl9DcmVhdGVEZWNvZGVyKEpO
SUVudiogam5pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mIHcpIHsKICAgcmV0dXJuIGpsb25nRnJvbVBv
aW50ZXIoVlA5RGVjb2Rlcjo6Q3JlYXRlKCkucmVsZWFzZSgpKTsKIH0KIAotc3RhdGljIGpib29s
ZWFuIEpOSV9WUDlEZWNvZGVyX0lzU3VwcG9ydGVkKEpOSUVudiogam5pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+
Jikgeworc3RhdGljIGpib29sZWFuIEpOSV9MaWJ2cHhWcDlEZWNvZGVyX0lzU3VwcG9ydGVkKEpO
SUVudiogam5pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+JikgewogICByZXR1cm4gIVN1cHBvcnRlZFZQ
OUNvZGVjcygpLmVtcHR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3Rlc3RzL3NyYy9vcmcvd2VicnRjL0Ny
eXB0b09wdGlvbnNUZXN0LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC90ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DcnlwdG9PcHRpb25zVGVz
dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYwMzgxMWU2ZmNhZDUyYzg1MDRkNjhjNjdlOTI1NzljYjIyZjQ5
ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC90ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DcnlwdG9PcHRpb25zVGVz
dC5qYXZhCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJU
QyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKK3BhY2thZ2Ugb3Jn
LndlYnJ0YzsKKworaW1wb3J0IHN0YXRpYyBjb20uZ29vZ2xlLmNvbW1vbi50cnV0aC5UcnV0aC5h
c3NlcnRUaGF0OworCitpbXBvcnQgb3JnLmNocm9taXVtLnRlc3RpbmcubG9jYWwuTG9jYWxSb2Jv
bGVjdHJpY1Rlc3RSdW5uZXI7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLmp1
bml0LnJ1bm5lci5SdW5XaXRoOworaW1wb3J0IG9yZy5yb2JvbGVjdHJpYy5hbm5vdGF0aW9uLkNv
bmZpZzsKK2ltcG9ydCBvcmcud2VicnRjLkNyeXB0b09wdGlvbnM7CisKK0BSdW5XaXRoKExvY2Fs
Um9ib2xlY3RyaWNUZXN0UnVubmVyLmNsYXNzKQorQENvbmZpZyhtYW5pZmVzdCA9IENvbmZpZy5O
T05FKQorcHVibGljIGNsYXNzIENyeXB0b09wdGlvbnNUZXN0IHsKKyAgLy8gVmFsaWRhdGVzIHRo
ZSBidWlsZGVyIGJ1aWxkcyBieSBkZWZhdWx0IGFsbCBmYWxzZSBvcHRpb25zLgorICBAVGVzdAor
ICBwdWJsaWMgdm9pZCB0ZXN0QnVpbGRlckRlZmF1bHRzQXJlRmFsc2UoKSB7CisgICAgQ3J5cHRv
T3B0aW9ucyBjcnlwdG9PcHRpb25zID0gQ3J5cHRvT3B0aW9ucy5idWlsZGVyKCkuY3JlYXRlQ3J5
cHRvT3B0aW9ucygpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0
RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKCkpLmlzRmFsc2UoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0
b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIoKSku
aXNGYWxzZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5h
YmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucygpKS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0
VGhhdChjcnlwdG9PcHRpb25zLmdldFNGcmFtZSgpLmdldFJlcXVpcmVGcmFtZUVuY3J5cHRpb24o
KSkuaXNGYWxzZSgpOworICB9CisKKyAgLy8gVmFsaWRhdGVzIHRoZSBidWlsZGVyIHNldHMgdGhl
IGNvcnJlY3QgcGFyYW1ldGVycy4KKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEJ1aWxkZXJD
b3JyZWN0bHlJbml0aWFsaXppbmdHY21DcnlwdG8oKSB7CisgICAgQ3J5cHRvT3B0aW9ucyBjcnlw
dG9PcHRpb25zID0KKyAgICAgICAgQ3J5cHRvT3B0aW9ucy5idWlsZGVyKCkuc2V0RW5hYmxlR2Nt
Q3J5cHRvU3VpdGVzKHRydWUpLmNyZWF0ZUNyeXB0b09wdGlvbnMoKTsKKyAgICBhc3NlcnRUaGF0
KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUdjbUNyeXB0b1N1aXRlcygpKS5pc1Ry
dWUoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUFl
czEyOFNoYTFfMzJDcnlwdG9DaXBoZXIoKSkuaXNGYWxzZSgpOworICAgIGFzc2VydFRoYXQoY3J5
cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9u
cygpKS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNGcmFtZSgp
LmdldFJlcXVpcmVGcmFtZUVuY3J5cHRpb24oKSkuaXNGYWxzZSgpOworICB9CisKKyAgQFRlc3QK
KyAgcHVibGljIHZvaWQgdGVzdEJ1aWxkZXJDb3JyZWN0bHlJbml0aWFsaXppbmdBZXMxMjhTaGEx
XzMyQ3J5cHRvQ2lwaGVyKCkgeworICAgIENyeXB0b09wdGlvbnMgY3J5cHRvT3B0aW9ucyA9Cisg
ICAgICAgIENyeXB0b09wdGlvbnMuYnVpbGRlcigpLnNldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlw
dG9DaXBoZXIodHJ1ZSkuY3JlYXRlQ3J5cHRvT3B0aW9ucygpOworICAgIGFzc2VydFRoYXQoY3J5
cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKCkpLmlzRmFsc2Uo
KTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUFlczEy
OFNoYTFfMzJDcnlwdG9DaXBoZXIoKSkuaXNUcnVlKCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9P
cHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zKCkp
LmlzRmFsc2UoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U0ZyYW1lKCkuZ2V0
UmVxdWlyZUZyYW1lRW5jcnlwdGlvbigpKS5pc0ZhbHNlKCk7CisgIH0KKworICBAVGVzdAorICBw
dWJsaWMgdm9pZCB0ZXN0QnVpbGRlckNvcnJlY3RseUluaXRpYWxpemluZ0VuY3J5cHRlZFJ0cEhl
YWRlckV4dGVuc2lvbnMoKSB7CisgICAgQ3J5cHRvT3B0aW9ucyBjcnlwdG9PcHRpb25zID0KKyAg
ICAgICAgQ3J5cHRvT3B0aW9ucy5idWlsZGVyKCkuc2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVy
RXh0ZW5zaW9ucyh0cnVlKS5jcmVhdGVDcnlwdG9PcHRpb25zKCk7CisgICAgYXNzZXJ0VGhhdChj
cnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVHY21DcnlwdG9TdWl0ZXMoKSkuaXNGYWxz
ZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlQWVz
MTI4U2hhMV8zMkNyeXB0b0NpcGhlcigpKS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0VGhhdChjcnlw
dG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25z
KCkpLmlzVHJ1ZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTRnJhbWUoKS5n
ZXRSZXF1aXJlRnJhbWVFbmNyeXB0aW9uKCkpLmlzRmFsc2UoKTsKKyAgfQorCisgIEBUZXN0Cisg
IHB1YmxpYyB2b2lkIHRlc3RCdWlsZGVyQ29ycmVjdGx5SW5pdGlhbGl6aW5nUmVxdWlyZUZyYW1l
RW5jcnlwdGlvbigpIHsKKyAgICBDcnlwdG9PcHRpb25zIGNyeXB0b09wdGlvbnMgPQorICAgICAg
ICBDcnlwdG9PcHRpb25zLmJ1aWxkZXIoKS5zZXRSZXF1aXJlRnJhbWVFbmNyeXB0aW9uKHRydWUp
LmNyZWF0ZUNyeXB0b09wdGlvbnMoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0
U3J0cCgpLmdldEVuYWJsZUdjbUNyeXB0b1N1aXRlcygpKS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0
VGhhdChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRv
Q2lwaGVyKCkpLmlzRmFsc2UoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0
cCgpLmdldEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMoKSkuaXNGYWxzZSgpOwor
ICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTRnJhbWUoKS5nZXRSZXF1aXJlRnJhbWVF
bmNyeXB0aW9uKCkpLmlzVHJ1ZSgpOworICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy9Q
ZWVyQ29ubmVjdGlvbi9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy9QZWVy
Q29ubmVjdGlvbi9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDA0YTU2ODk0MTdjMjA3MzcyNzhhOGIyYjAyMmYxMjFmZmU5OTY2MmEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0NsYXNzZXMvUGVl
ckNvbm5lY3Rpb24vUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
NTggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKgotICovCi0KLSNpbXBvcnQgIldlYlJUQy9SVENW
aWRlb0NvZGVjSDI2NC5oIgotCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2
ZWxfaWQuaCIKLQotQGludGVyZmFjZSBSVENIMjY0UHJvZmlsZUxldmVsSWQgKCkKLQotQHByb3Bl
cnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENIMjY0UHJvZmlsZSBwcm9maWxlOwotQHByb3BlcnR5
KG5vbmF0b21pYywgYXNzaWduKSBSVENIMjY0TGV2ZWwgbGV2ZWw7Ci1AcHJvcGVydHkobm9uYXRv
bWljLCBzdHJvbmcpIE5TU3RyaW5nICpoZXhTdHJpbmc7Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIFJUQ0gyNjRQcm9maWxlTGV2ZWxJZAotCi1Ac3ludGhlc2l6ZSBwcm9maWxlID0gX3Byb2Zp
bGU7Ci1Ac3ludGhlc2l6ZSBsZXZlbCA9IF9sZXZlbDsKLUBzeW50aGVzaXplIGhleFN0cmluZyA9
IF9oZXhTdHJpbmc7Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEhleFN0cmluZzooTlNTdHJp
bmcgKiloZXhTdHJpbmcgewotICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewotICAgIHNlbGYu
aGV4U3RyaW5nID0gaGV4U3RyaW5nOwotCi0gICAgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpIMjY0
OjpQcm9maWxlTGV2ZWxJZD4gcHJvZmlsZV9sZXZlbF9pZCA9Ci0gICAgICAgIHdlYnJ0Yzo6SDI2
NDo6UGFyc2VQcm9maWxlTGV2ZWxJZChbaGV4U3RyaW5nIGNTdHJpbmdVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSk7Ci0gICAgaWYgKHByb2ZpbGVfbGV2ZWxfaWQuaGFzX3ZhbHVl
KCkpIHsKLSAgICAgIHNlbGYucHJvZmlsZSA9IHN0YXRpY19jYXN0PFJUQ0gyNjRQcm9maWxlPihw
cm9maWxlX2xldmVsX2lkLT5wcm9maWxlKTsKLSAgICAgIHNlbGYubGV2ZWwgPSBzdGF0aWNfY2Fz
dDxSVENIMjY0TGV2ZWw+KHByb2ZpbGVfbGV2ZWxfaWQtPmxldmVsKTsKLSAgICB9Ci0gIH0KLSAg
cmV0dXJuIHNlbGY7Ci19Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb2ZpbGU6KFJUQ0gy
NjRQcm9maWxlKXByb2ZpbGUgbGV2ZWw6KFJUQ0gyNjRMZXZlbClsZXZlbCB7Ci0gIGlmIChzZWxm
ID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgc2VsZi5wcm9maWxlID0gcHJvZmlsZTsKLSAgICBzZWxm
LmxldmVsID0gbGV2ZWw7Ci0KLSAgICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gaGV4X3N0
cmluZyA9Ci0gICAgICAgIHdlYnJ0Yzo6SDI2NDo6UHJvZmlsZUxldmVsSWRUb1N0cmluZyh3ZWJy
dGM6OkgyNjQ6OlByb2ZpbGVMZXZlbElkKAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d2VicnRj
OjpIMjY0OjpQcm9maWxlPihwcm9maWxlKSwgc3RhdGljX2Nhc3Q8d2VicnRjOjpIMjY0OjpMZXZl
bD4obGV2ZWwpKSk7Ci0gICAgc2VsZi5oZXhTdHJpbmcgPQotICAgICAgICBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENTdHJpbmc6aGV4X3N0cmluZy52YWx1ZV9vcigiIikuY19zdHIoKSBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ107Ci0gIH0KLSAgcmV0dXJuIHNlbGY7Ci19Ci0KLUBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvbG9nZ2luZy9SVENDYWxsYmFja0xv
Z2dlci5oCmluZGV4IDQ4NjdiMzFlMzY1Y2MxYjgzYjQ3YzA5NjY3NzRiNjU1MDQ5ZWVkOGMuLjJi
Y2UwM2ZlMGY4YWM1ZTA5NDZlMTY5OGZkNWQyN2ViZWUxNWNmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9sb2dnaW5n
L1JUQ0NhbGxiYWNrTG9nZ2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYXBpL2xvZ2dpbmcvUlRDQ2FsbGJhY2tMb2dnZXIuaApAQCAt
MTUsNiArMTUsMTAgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAordHlwZWRlZiB2b2lk
ICheUlRDQ2FsbGJhY2tMb2dnZXJNZXNzYWdlSGFuZGxlcikoTlNTdHJpbmcgKm1lc3NhZ2UpOwor
dHlwZWRlZiB2b2lkICheUlRDQ2FsbGJhY2tMb2dnZXJNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVy
KShOU1N0cmluZyAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUlRDTG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5KTsKKwog
Ly8gVGhpcyBjbGFzcyBpbnRlcmNlcHRzIFdlYlJUQyBsb2dzIGFuZCBmb3J3YXJkcyB0aGVtIHRv
IGEgcmVnaXN0ZXJlZCBibG9jay4KIC8vIFRoaXMgY2xhc3MgaXMgbm90IHRocmVhZHNhZmUuCiBS
VENfT0JKQ19FWFBPUlQKQEAgLTIzLDEwICsyNywxMiBAQCBSVENfT0JKQ19FWFBPUlQKIC8vIFRo
ZSBzZXZlcml0eSBsZXZlbCB0byBjYXB0dXJlLiBUaGUgZGVmYXVsdCBpcyBrUlRDTG9nZ2luZ1Nl
dmVyaXR5SW5mby4KIEBwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgUlRDTG9nZ2luZ1NldmVy
aXR5IHNldmVyaXR5OwogCi0vLyBUaGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgb24gdGhlIHNh
bWUgdGhyZWFkIHRoYXQgZG9lcyB0aGUgbG9nZ2luZywgc28KLS8vIGlmIHRoZSBsb2dnaW5nIGNh
bGxiYWNrIGNhbiBiZSBzbG93IGl0IG1heSBiZSBhIGdvb2QgaWRlYSB0byBpbXBsZW1lbnQKLS8v
IGRpc3BhdGNoaW5nIHRvIHNvbWUgb3RoZXIgcXVldWUuCi0tICh2b2lkKXN0YXJ0OihudWxsYWJs
ZSB2b2lkICheKShOU1N0cmluZyopKWNhbGxiYWNrOworLy8gVGhlIGNhbGxiYWNrIGhhbmRsZXIg
d2lsbCBiZSBjYWxsZWQgb24gdGhlIHNhbWUgdGhyZWFkIHRoYXQgZG9lcyB0aGUKKy8vIGxvZ2dp
bmcsIHNvIGlmIHRoZSBsb2dnaW5nIGNhbGxiYWNrIGNhbiBiZSBzbG93IGl0IG1heSBiZSBhIGdv
b2QgaWRlYQorLy8gdG8gaW1wbGVtZW50IGRpc3BhdGNoaW5nIHRvIHNvbWUgb3RoZXIgcXVldWUu
CistICh2b2lkKXN0YXJ0OihudWxsYWJsZSBSVENDYWxsYmFja0xvZ2dlck1lc3NhZ2VIYW5kbGVy
KWhhbmRsZXI7CistICh2b2lkKXN0YXJ0V2l0aE1lc3NhZ2VBbmRTZXZlcml0eUhhbmRsZXI6Cisg
ICAgICAgIChudWxsYWJsZSBSVENDYWxsYmFja0xvZ2dlck1lc3NhZ2VBbmRTZXZlcml0eUhhbmRs
ZXIpaGFuZGxlcjsKIAogLSAodm9pZClzdG9wOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvbG9nZ2luZy9SVENDYWxs
YmFja0xvZ2dlci5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2VyLm1tCmluZGV4IDg0NDBkNjM3
OTFlZjUyYWQyMjA2MTQyNTc4NWM0ZTQ0ODAwYzQ2NTAuLjliYmI1MzA0MzQwOWEyN2M1NmE2NGM1
YTE3Y2I4NGE5ZGMwZmI4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2VyLm1t
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2VyLm1tCkBAIC0xOCwxMSArMTgsOCBAQAogCiBj
bGFzcyBDYWxsYmFja0xvZ1NpbmsgOiBwdWJsaWMgcnRjOjpMb2dTaW5rIHsKICBwdWJsaWM6Ci0g
IENhbGxiYWNrTG9nU2luayh2b2lkICheY2FsbGJhY2tIYW5kbGVyKShOU1N0cmluZyAqbWVzc2Fn
ZSkpIHsKLSAgICBjYWxsYmFja19oYW5kbGVyXyA9IGNhbGxiYWNrSGFuZGxlcjsKLSAgfQotCi0g
IH5DYWxsYmFja0xvZ1NpbmsoKSBvdmVycmlkZSB7IGNhbGxiYWNrX2hhbmRsZXJfID0gbmlsOyB9
CisgIENhbGxiYWNrTG9nU2luayhSVENDYWxsYmFja0xvZ2dlck1lc3NhZ2VIYW5kbGVyIGNhbGxi
YWNrSGFuZGxlcikKKyAgICAgIDogY2FsbGJhY2tfaGFuZGxlcl8oY2FsbGJhY2tIYW5kbGVyKSB7
fQogCiAgIHZvaWQgT25Mb2dNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdlKSBvdmVy
cmlkZSB7CiAgICAgaWYgKGNhbGxiYWNrX2hhbmRsZXJfKSB7CkBAIC0zMSwxMiArMjgsNDcgQEAg
Y2xhc3MgQ2FsbGJhY2tMb2dTaW5rIDogcHVibGljIHJ0Yzo6TG9nU2luayB7CiAgIH0KIAogIHBy
aXZhdGU6Ci0gIHZvaWQgKF5jYWxsYmFja19oYW5kbGVyXykoTlNTdHJpbmcgKm1lc3NhZ2UpOwor
ICBSVENDYWxsYmFja0xvZ2dlck1lc3NhZ2VIYW5kbGVyIGNhbGxiYWNrX2hhbmRsZXJfOworfTsK
KworY2xhc3MgQ2FsbGJhY2tXaXRoU2V2ZXJpdHlMb2dTaW5rIDogcHVibGljIHJ0Yzo6TG9nU2lu
ayB7CisgcHVibGljOgorICBDYWxsYmFja1dpdGhTZXZlcml0eUxvZ1NpbmsoUlRDQ2FsbGJhY2tM
b2dnZXJNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyIGNhbGxiYWNrSGFuZGxlcikKKyAgICAgIDog
Y2FsbGJhY2tfaGFuZGxlcl8oY2FsbGJhY2tIYW5kbGVyKSB7fQorCisgIHZvaWQgT25Mb2dNZXNz
YWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZSB7IFJUQ19OT1RSRUFDSEVE
KCk7IH0KKworICB2b2lkIE9uTG9nTWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwg
cnRjOjpMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkpIG92ZXJyaWRlIHsKKyAgICBpZiAoY2FsbGJh
Y2tfaGFuZGxlcl8pIHsKKyAgICAgIFJUQ0xvZ2dpbmdTZXZlcml0eSBsb2dnaW5nU2V2ZXJpdHkg
PSBOYXRpdmVTZXZlcml0eVRvT2JqY1NldmVyaXR5KHNldmVyaXR5KTsKKyAgICAgIGNhbGxiYWNr
X2hhbmRsZXJfKFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzptZXNzYWdlLmNfc3RyKCld
LCBsb2dnaW5nU2V2ZXJpdHkpOworICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAgc3RhdGljIFJU
Q0xvZ2dpbmdTZXZlcml0eSBOYXRpdmVTZXZlcml0eVRvT2JqY1NldmVyaXR5KHJ0Yzo6TG9nZ2lu
Z1NldmVyaXR5IHNldmVyaXR5KSB7CisgICAgc3dpdGNoIChzZXZlcml0eSkgeworICAgICAgY2Fz
ZSBydGM6OkxTX1NFTlNJVElWRToKKyAgICAgICAgcmV0dXJuIFJUQ0xvZ2dpbmdTZXZlcml0eVNl
bnNpdGl2ZTsKKyAgICAgIGNhc2UgcnRjOjpMU19WRVJCT1NFOgorICAgICAgICByZXR1cm4gUlRD
TG9nZ2luZ1NldmVyaXR5VmVyYm9zZTsKKyAgICAgIGNhc2UgcnRjOjpMU19JTkZPOgorICAgICAg
ICByZXR1cm4gUlRDTG9nZ2luZ1NldmVyaXR5SW5mbzsKKyAgICAgIGNhc2UgcnRjOjpMU19XQVJO
SU5HOgorICAgICAgICByZXR1cm4gUlRDTG9nZ2luZ1NldmVyaXR5V2FybmluZzsKKyAgICAgIGNh
c2UgcnRjOjpMU19FUlJPUjoKKyAgICAgICAgcmV0dXJuIFJUQ0xvZ2dpbmdTZXZlcml0eUVycm9y
OworICAgICAgY2FzZSBydGM6OkxTX05PTkU6CisgICAgICAgIHJldHVybiBSVENMb2dnaW5nU2V2
ZXJpdHlOb25lOworICAgIH0KKyAgfQorCisgIFJUQ0NhbGxiYWNrTG9nZ2VyTWVzc2FnZUFuZFNl
dmVyaXR5SGFuZGxlciBjYWxsYmFja19oYW5kbGVyXzsKIH07CiAKIEBpbXBsZW1lbnRhdGlvbiBS
VENDYWxsYmFja0xvZ2dlciB7CiAgIEJPT0wgX2hhc1N0YXJ0ZWQ7Ci0gIHN0ZDo6dW5pcXVlX3B0
cjxDYWxsYmFja0xvZ1Npbms+IF9sb2dTaW5rOworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpMb2dT
aW5rPiBfbG9nU2luazsKIH0KIAogQHN5bnRoZXNpemUgc2V2ZXJpdHkgPSBfc2V2ZXJpdHk7CkBA
IC01MywxMiArODUsMjQgQEAgLSAodm9pZClkZWFsbG9jIHsKICAgW3NlbGYgc3RvcF07CiB9CiAK
LS0gKHZvaWQpc3RhcnQ6KG51bGxhYmxlIHZvaWQgKF4pKE5TU3RyaW5nICopKWNhbGxiYWNrIHsK
Ky0gKHZvaWQpc3RhcnQ6KG51bGxhYmxlIFJUQ0NhbGxiYWNrTG9nZ2VyTWVzc2FnZUhhbmRsZXIp
aGFuZGxlciB7CisgIGlmIChfaGFzU3RhcnRlZCkgeworICAgIHJldHVybjsKKyAgfQorCisgIF9s
b2dTaW5rLnJlc2V0KG5ldyBDYWxsYmFja0xvZ1NpbmsoaGFuZGxlcikpOworCisgIHJ0Yzo6TG9n
TWVzc2FnZTo6QWRkTG9nVG9TdHJlYW0oX2xvZ1NpbmsuZ2V0KCksIFtzZWxmIHJ0Y1NldmVyaXR5
XSk7CisgIF9oYXNTdGFydGVkID0gWUVTOworfQorCistICh2b2lkKXN0YXJ0V2l0aE1lc3NhZ2VB
bmRTZXZlcml0eUhhbmRsZXI6CisgICAgICAgIChudWxsYWJsZSBSVENDYWxsYmFja0xvZ2dlck1l
c3NhZ2VBbmRTZXZlcml0eUhhbmRsZXIpaGFuZGxlciB7CiAgIGlmIChfaGFzU3RhcnRlZCkgewog
ICAgIHJldHVybjsKICAgfQogCi0gIF9sb2dTaW5rLnJlc2V0KG5ldyBDYWxsYmFja0xvZ1Npbmso
Y2FsbGJhY2spKTsKKyAgX2xvZ1NpbmsucmVzZXQobmV3IENhbGxiYWNrV2l0aFNldmVyaXR5TG9n
U2luayhoYW5kbGVyKSk7CiAKICAgcnRjOjpMb2dNZXNzYWdlOjpBZGRMb2dUb1N0cmVhbShfbG9n
U2luay5nZXQoKSwgW3NlbGYgcnRjU2V2ZXJpdHldKTsKICAgX2hhc1N0YXJ0ZWQgPSBZRVM7CkBA
IC03OCw2ICsxMjIsOCBAQCAtICh2b2lkKXN0b3AgewogCiAtIChydGM6OkxvZ2dpbmdTZXZlcml0
eSlydGNTZXZlcml0eSB7CiAgIHN3aXRjaCAoX3NldmVyaXR5KSB7CisgICAgY2FzZSBSVENMb2dn
aW5nU2V2ZXJpdHlTZW5zaXRpdmU6CisgICAgICByZXR1cm4gcnRjOjpMU19TRU5TSVRJVkU7CiAg
ICAgY2FzZSBSVENMb2dnaW5nU2V2ZXJpdHlWZXJib3NlOgogICAgICAgcmV0dXJuIHJ0Yzo6TFNf
VkVSQk9TRTsKICAgICBjYXNlIFJUQ0xvZ2dpbmdTZXZlcml0eUluZm86CkBAIC04Niw2ICsxMzIs
OCBAQCAtIChydGM6OkxvZ2dpbmdTZXZlcml0eSlydGNTZXZlcml0eSB7CiAgICAgICByZXR1cm4g
cnRjOjpMU19XQVJOSU5HOwogICAgIGNhc2UgUlRDTG9nZ2luZ1NldmVyaXR5RXJyb3I6CiAgICAg
ICByZXR1cm4gcnRjOjpMU19FUlJPUjsKKyAgICBjYXNlIFJUQ0xvZ2dpbmdTZXZlcml0eU5vbmU6
CisgICAgICByZXR1cm4gcnRjOjpMU19OT05FOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29u
bmVjdGlvbi9SVENDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlv
bi5oCmluZGV4IDlmYjhiNGRmMzU5MWQ3YTY3YTE1ZDc0ZWE5ZTE3NWE1ZWFjMGJmOGEuLmY5ZTZl
ZGZkOTc0MTVhODIxOTBiMzc5Mzk5OWIzMTdlMDdkMjU3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRp
b24uaApAQCAtMTEsNiArMTEsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+
CiAKICNpbXBvcnQgIlJUQ0NlcnRpZmljYXRlLmgiCisjaW1wb3J0ICJSVENDcnlwdG9PcHRpb25z
LmgiCiAjaW1wb3J0ICJSVENNYWNyb3MuaCIKIAogQGNsYXNzIFJUQ0ljZVNlcnZlcjsKQEAgLTkx
LDYgKzkyLDE5IEBAIFJUQ19PQkpDX0VYUE9SVAogQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWdu
KSBSVENDYW5kaWRhdGVOZXR3b3JrUG9saWN5IGNhbmRpZGF0ZU5ldHdvcmtQb2xpY3k7CiBAcHJv
cGVydHkobm9uYXRvbWljLCBhc3NpZ24pIFJUQ0NvbnRpbnVhbEdhdGhlcmluZ1BvbGljeSBjb250
aW51YWxHYXRoZXJpbmdQb2xpY3k7CiAKKy8qKiBJZiBzZXQgdG8gWUVTLCBkb24ndCBnYXRoZXIg
SVB2NiBJQ0UgY2FuZGlkYXRlcy4KKyAqICBEZWZhdWx0IGlzIE5PLgorICovCitAcHJvcGVydHko
bm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgZGlzYWJsZUlQVjY7CisKKy8qKiBJZiBzZXQgdG8gWUVT
LCBkb24ndCBnYXRoZXIgSVB2NiBJQ0UgY2FuZGlkYXRlcyBvbiBXaS1GaS4KKyAqICBPbmx5IGlu
dGVuZGVkIHRvIGJlIHVzZWQgb24gc3BlY2lmaWMgZGV2aWNlcy4gQ2VydGFpbiBwaG9uZXMgZGlz
YWJsZSBJUHY2CisgKiAgd2hlbiB0aGUgc2NyZWVuIGlzIHR1cm5lZCBvZmYgYW5kIGl0IHdvdWxk
IGJlIGJldHRlciB0byBqdXN0IGRpc2FibGUgdGhlCisgKiAgSVB2NiBJQ0UgY2FuZGlkYXRlcyBv
biBXaS1GaSBpbiB0aG9zZSBjYXNlcy4KKyAqICBEZWZhdWx0IGlzIE5PLgorICovCitAcHJvcGVy
dHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgZGlzYWJsZUlQVjZPbldpRmk7CisKIC8qKiBCeSBk
ZWZhdWx0LCB0aGUgUGVlckNvbm5lY3Rpb24gd2lsbCB1c2UgYSBsaW1pdGVkIG51bWJlciBvZiBJ
UHY2IG5ldHdvcmsKICAqICBpbnRlcmZhY2VzLCBpbiBvcmRlciB0byBhdm9pZCB0b28gbWFueSBJ
Q0UgY2FuZGlkYXRlIHBhaXJzIGJlaW5nIGNyZWF0ZWQKICAqICBhbmQgZGVsYXlpbmcgSUNFIGNv
bXBsZXRpb24uCkBAIC0xNjgsNiArMTgyLDM1IEBAIFJUQ19PQkpDX0VYUE9SVAogICovCiBAcHJv
cGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgYWN0aXZlUmVzZXRTcnRwUGFyYW1zOwogCisv
KioKKyAqIElmIE1lZGlhVHJhbnNwb3J0RmFjdG9yeSBpcyBwcm92aWRlZCBpbiBQZWVyQ29ubmVj
dGlvbkZhY3RvcnksIHRoaXMgZmxhZyBpbmZvcm1zIFBlZXJDb25uZWN0aW9uCisgKiB0aGF0IGl0
IHNob3VsZCB1c2UgdGhlIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlLgorICovCitAcHJvcGVydHko
bm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgdXNlTWVkaWFUcmFuc3BvcnQ7CisKKy8qKgorICogSWYg
TWVkaWFUcmFuc3BvcnRGYWN0b3J5IGlzIHByb3ZpZGVkIGluIFBlZXJDb25uZWN0aW9uRmFjdG9y
eSwgdGhpcyBmbGFnIGluZm9ybXMgUGVlckNvbm5lY3Rpb24KKyAqIHRoYXQgaXQgc2hvdWxkIHVz
ZSB0aGUgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UgZm9yIGRhdGEgY2hhbm5lbHMuCisgKi8KK0Bw
cm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9PTCB1c2VNZWRpYVRyYW5zcG9ydEZvckRhdGFD
aGFubmVsczsKKworLyoqCisgKiBEZWZpbmVzIGFkdmFuY2VkIG9wdGlvbmFsIGNyeXB0b2dyYXBo
aWMgc2V0dGluZ3MgcmVsYXRlZCB0byBTUlRQIGFuZAorICogZnJhbWUgZW5jcnlwdGlvbiBmb3Ig
bmF0aXZlIFdlYlJUQy4gU2V0dGluZyB0aGlzIHdpbGwgb3ZlcndyaXRlIGFueQorICogb3B0aW9u
cyBzZXQgdGhyb3VnaCB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5ICh3aGljaCBpcyBkZXByZWNh
dGVkKS4KKyAqLworQHByb3BlcnR5KG5vbmF0b21pYywgbnVsbGFibGUpIFJUQ0NyeXB0b09wdGlv
bnMgKmNyeXB0b09wdGlvbnM7CisKKy8qKgorICogVGltZSBpbnRlcnZhbCBiZXR3ZWVuIGF1ZGlv
IFJUQ1AgcmVwb3J0cy4KKyAqLworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBpbnQgcnRj
cEF1ZGlvUmVwb3J0SW50ZXJ2YWxNczsKKworLyoqCisgKiBUaW1lIGludGVydmFsIGJldHdlZW4g
dmlkZW8gUlRDUCByZXBvcnRzLgorICovCitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIGlu
dCBydGNwVmlkZW9SZXBvcnRJbnRlcnZhbE1zOworCiAtIChpbnN0YW5jZXR5cGUpaW5pdDsKIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNv
bm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5tbQppbmRleCA3M2EwZmE5YWE1ZmQ4MGRiNGNkMjdj
ZDI5M2I2NTBiN2I4MDA2OTVmLi40MDQxZjgzOTlmYzhiMzU1NjdjYmQ5ODlhMjU0MjdlZWI0YmEx
ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5tbQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVl
cmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5tbQpAQCAtMzEsNiArMzEsOCBAQCBAc3ludGhl
c2l6ZSBydGNwTXV4UG9saWN5ID0gX3J0Y3BNdXhQb2xpY3k7CiBAc3ludGhlc2l6ZSB0Y3BDYW5k
aWRhdGVQb2xpY3kgPSBfdGNwQ2FuZGlkYXRlUG9saWN5OwogQHN5bnRoZXNpemUgY2FuZGlkYXRl
TmV0d29ya1BvbGljeSA9IF9jYW5kaWRhdGVOZXR3b3JrUG9saWN5OwogQHN5bnRoZXNpemUgY29u
dGludWFsR2F0aGVyaW5nUG9saWN5ID0gX2NvbnRpbnVhbEdhdGhlcmluZ1BvbGljeTsKK0BzeW50
aGVzaXplIGRpc2FibGVJUFY2ID0gX2Rpc2FibGVJUFY2OworQHN5bnRoZXNpemUgZGlzYWJsZUlQ
VjZPbldpRmkgPSBfZGlzYWJsZUlQVjZPbldpRmk7CiBAc3ludGhlc2l6ZSBtYXhJUHY2TmV0d29y
a3MgPSBfbWF4SVB2Nk5ldHdvcmtzOwogQHN5bnRoZXNpemUgZGlzYWJsZUxpbmtMb2NhbE5ldHdv
cmtzID0gX2Rpc2FibGVMaW5rTG9jYWxOZXR3b3JrczsKIEBzeW50aGVzaXplIGF1ZGlvSml0dGVy
QnVmZmVyTWF4UGFja2V0cyA9IF9hdWRpb0ppdHRlckJ1ZmZlck1heFBhY2tldHM7CkBAIC00OCw2
ICs1MCwxMSBAQCBAc3ludGhlc2l6ZSBpY2VSZWdhdGhlckludGVydmFsUmFuZ2UgPSBfaWNlUmVn
YXRoZXJJbnRlcnZhbFJhbmdlOwogQHN5bnRoZXNpemUgc2RwU2VtYW50aWNzID0gX3NkcFNlbWFu
dGljczsKIEBzeW50aGVzaXplIHR1cm5DdXN0b21pemVyID0gX3R1cm5DdXN0b21pemVyOwogQHN5
bnRoZXNpemUgYWN0aXZlUmVzZXRTcnRwUGFyYW1zID0gX2FjdGl2ZVJlc2V0U3J0cFBhcmFtczsK
K0BzeW50aGVzaXplIHVzZU1lZGlhVHJhbnNwb3J0ID0gX3VzZU1lZGlhVHJhbnNwb3J0OworQHN5
bnRoZXNpemUgdXNlTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5lbHMgPSBfdXNlTWVkaWFUcmFu
c3BvcnRGb3JEYXRhQ2hhbm5lbHM7CitAc3ludGhlc2l6ZSBjcnlwdG9PcHRpb25zID0gX2NyeXB0
b09wdGlvbnM7CitAc3ludGhlc2l6ZSBydGNwQXVkaW9SZXBvcnRJbnRlcnZhbE1zID0gX3J0Y3BB
dWRpb1JlcG9ydEludGVydmFsTXM7CitAc3ludGhlc2l6ZSBydGNwVmlkZW9SZXBvcnRJbnRlcnZh
bE1zID0gX3J0Y3BWaWRlb1JlcG9ydEludGVydmFsTXM7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0
IHsKICAgLy8gQ29weSBkZWZhdWx0cy4KQEAgLTg2LDYgKzkzLDggQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoTmF0aXZlQ29uZmlndXJhdGlvbjoKICAgICBjb25maWcuY29udGludWFsX2dhdGhl
cmluZ19wb2xpY3k7CiAgICAgX2NvbnRpbnVhbEdhdGhlcmluZ1BvbGljeSA9CiAgICAgICAgIFtb
c2VsZiBjbGFzc10gY29udGludWFsR2F0aGVyaW5nUG9saWN5Rm9yTmF0aXZlUG9saWN5Om5hdGl2
ZVBvbGljeV07CisgICAgX2Rpc2FibGVJUFY2ID0gY29uZmlnLmRpc2FibGVfaXB2NjsKKyAgICBf
ZGlzYWJsZUlQVjZPbldpRmkgPSBjb25maWcuZGlzYWJsZV9pcHY2X29uX3dpZmk7CiAgICAgX21h
eElQdjZOZXR3b3JrcyA9IGNvbmZpZy5tYXhfaXB2Nl9uZXR3b3JrczsKICAgICBfZGlzYWJsZUxp
bmtMb2NhbE5ldHdvcmtzID0gY29uZmlnLmRpc2FibGVfbGlua19sb2NhbF9uZXR3b3JrczsKICAg
ICBfYXVkaW9KaXR0ZXJCdWZmZXJNYXhQYWNrZXRzID0gY29uZmlnLmF1ZGlvX2ppdHRlcl9idWZm
ZXJfbWF4X3BhY2tldHM7CkBAIC05Myw2ICsxMDIsOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhOYXRpdmVDb25maWd1cmF0aW9uOgogICAgIF9pY2VDb25uZWN0aW9uUmVjZWl2aW5nVGltZW91
dCA9IGNvbmZpZy5pY2VfY29ubmVjdGlvbl9yZWNlaXZpbmdfdGltZW91dDsKICAgICBfaWNlQmFj
a3VwQ2FuZGlkYXRlUGFpclBpbmdJbnRlcnZhbCA9CiAgICAgICAgIGNvbmZpZy5pY2VfYmFja3Vw
X2NhbmRpZGF0ZV9wYWlyX3BpbmdfaW50ZXJ2YWw7CisgICAgX3VzZU1lZGlhVHJhbnNwb3J0ID0g
Y29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnQ7CisgICAgX3VzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0
YUNoYW5uZWxzID0gY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHM7
CiAgICAgX2tleVR5cGUgPSBSVENFbmNyeXB0aW9uS2V5VHlwZUVDRFNBOwogICAgIF9pY2VDYW5k
aWRhdGVQb29sU2l6ZSA9IGNvbmZpZy5pY2VfY2FuZGlkYXRlX3Bvb2xfc2l6ZTsKICAgICBfc2hv
dWxkUHJ1bmVUdXJuUG9ydHMgPSBjb25maWcucHJ1bmVfdHVybl9wb3J0czsKQEAgLTExMCwxNCAr
MTIxLDI3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZUNvbmZpZ3VyYXRpb246CiAg
ICAgX3NkcFNlbWFudGljcyA9IFtbc2VsZiBjbGFzc10gc2RwU2VtYW50aWNzRm9yTmF0aXZlU2Rw
U2VtYW50aWNzOmNvbmZpZy5zZHBfc2VtYW50aWNzXTsKICAgICBfdHVybkN1c3RvbWl6ZXIgPSBj
b25maWcudHVybl9jdXN0b21pemVyOwogICAgIF9hY3RpdmVSZXNldFNydHBQYXJhbXMgPSBjb25m
aWcuYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zOworICAgIGlmIChjb25maWcuY3J5cHRvX29wdGlv
bnMpIHsKKyAgICAgIF9jcnlwdG9PcHRpb25zID0gW1tSVENDcnlwdG9PcHRpb25zIGFsbG9jXQor
ICAgICAgICAgICAgICAgaW5pdFdpdGhTcnRwRW5hYmxlR2NtQ3J5cHRvU3VpdGVzOmNvbmZpZy5j
cnlwdG9fb3B0aW9ucy0+c3J0cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzCisgICAgICAgICAgICAg
c3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI6Y29uZmlnLmNyeXB0b19vcHRpb25z
LT5zcnRwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlcgorICAgICAgICAgIHNydHBF
bmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zOmNvbmZpZy5jcnlwdG9fb3B0aW9ucy0+
c3J0cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAuZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMKKyAgICAgICAgICAgICAg
ICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbjpjb25maWcuY3J5cHRvX29wdGlvbnMt
PnNmcmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uXTsKKyAgICB9CisgICAgX3J0Y3BBdWRpb1Jl
cG9ydEludGVydmFsTXMgPSBjb25maWcuYXVkaW9fcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMoKTsK
KyAgICBfcnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxNcyA9IGNvbmZpZy52aWRlb19ydGNwX3JlcG9y
dF9pbnRlcnZhbF9tcygpOwogICB9CiAgIHJldHVybiBzZWxmOwogfQogCiAtIChOU1N0cmluZyAq
KWRlc2NyaXB0aW9uIHsKLSAgc3RhdGljIE5TU3RyaW5nICpmb3JtYXRTdHJpbmcgPQotICAgICAg
QCJSVENDb25maWd1cmF0aW9uOiAiCi0gICAgICBAIntcbiVAXG4lQFxuJUBcbiVAXG4lQFxuJUBc
biVAXG4lQFxuJWRcbiVkXG4lZFxuJWRcbiVkXG4lZFxuJWRcbiVAXG4lQFxuJWRcbiVkXG4lZFxu
fVxuIjsKKyAgc3RhdGljIE5TU3RyaW5nICpmb3JtYXRTdHJpbmcgPSBAIlJUQ0NvbmZpZ3VyYXRp
b246ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIntcbiVAXG4lQFxuJUBc
biVAXG4lQFxuJUBcbiVAXG4lQFxuJWRcbiVkXG4lZFxuJWRcbiVkXG4lZFxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEAiJWRcbiVAXG4lQFxuJWRcbiVkXG4lZFxuJWRcbiVk
XG4lQFxufVxuIjsKIAogICByZXR1cm4gW05TU3RyaW5nCiAgICAgICBzdHJpbmdXaXRoRm9ybWF0
OmZvcm1hdFN0cmluZywKQEAgLTEzOSw4ICsxNjMsMTEgQEAgLSAoTlNTdHJpbmcgKilkZXNjcmlw
dGlvbiB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9pY2VDaGVja01pbkludGVydmFsLAogICAg
ICAgICAgICAgICAgICAgICAgICBfaWNlUmVnYXRoZXJJbnRlcnZhbFJhbmdlLAogICAgICAgICAg
ICAgICAgICAgICAgICBfZGlzYWJsZUxpbmtMb2NhbE5ldHdvcmtzLAorICAgICAgICAgICAgICAg
ICAgICAgICBfZGlzYWJsZUlQVjYsCisgICAgICAgICAgICAgICAgICAgICAgIF9kaXNhYmxlSVBW
Nk9uV2lGaSwKICAgICAgICAgICAgICAgICAgICAgICAgX21heElQdjZOZXR3b3JrcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgX2FjdGl2ZVJlc2V0U3J0cFBhcmFtc107CisgICAgICAgICAgICAg
ICAgICAgICAgIF9hY3RpdmVSZXNldFNydHBQYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAg
IF91c2VNZWRpYVRyYW5zcG9ydF07CiB9CiAKICNwcmFnbWEgbWFyayAtIFByaXZhdGUKQEAgLTE2
Niw2ICsxOTMsOCBAQCAtICh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25m
aWd1cmF0aW9uICopCiAgICAgICBuYXRpdmVDYW5kaWRhdGVOZXR3b3JrUG9saWN5Rm9yUG9saWN5
Ol9jYW5kaWRhdGVOZXR3b3JrUG9saWN5XTsKICAgbmF0aXZlQ29uZmlnLT5jb250aW51YWxfZ2F0
aGVyaW5nX3BvbGljeSA9IFtbc2VsZiBjbGFzc10KICAgICAgIG5hdGl2ZUNvbnRpbnVhbEdhdGhl
cmluZ1BvbGljeUZvclBvbGljeTpfY29udGludWFsR2F0aGVyaW5nUG9saWN5XTsKKyAgbmF0aXZl
Q29uZmlnLT5kaXNhYmxlX2lwdjYgPSBfZGlzYWJsZUlQVjY7CisgIG5hdGl2ZUNvbmZpZy0+ZGlz
YWJsZV9pcHY2X29uX3dpZmkgPSBfZGlzYWJsZUlQVjZPbldpRmk7CiAgIG5hdGl2ZUNvbmZpZy0+
bWF4X2lwdjZfbmV0d29ya3MgPSBfbWF4SVB2Nk5ldHdvcmtzOwogICBuYXRpdmVDb25maWctPmRp
c2FibGVfbGlua19sb2NhbF9uZXR3b3JrcyA9IF9kaXNhYmxlTGlua0xvY2FsTmV0d29ya3M7CiAg
IG5hdGl2ZUNvbmZpZy0+YXVkaW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyA9IF9hdWRpb0pp
dHRlckJ1ZmZlck1heFBhY2tldHM7CkBAIC0xNzUsNiArMjA0LDggQEAgLSAod2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiAqKQogICAgICAgX2ljZUNvbm5l
Y3Rpb25SZWNlaXZpbmdUaW1lb3V0OwogICBuYXRpdmVDb25maWctPmljZV9iYWNrdXBfY2FuZGlk
YXRlX3BhaXJfcGluZ19pbnRlcnZhbCA9CiAgICAgICBfaWNlQmFja3VwQ2FuZGlkYXRlUGFpclBp
bmdJbnRlcnZhbDsKKyAgbmF0aXZlQ29uZmlnLT51c2VfbWVkaWFfdHJhbnNwb3J0ID0gX3VzZU1l
ZGlhVHJhbnNwb3J0OworICBuYXRpdmVDb25maWctPnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2Rh
dGFfY2hhbm5lbHMgPSBfdXNlTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5lbHM7CiAgIHJ0Yzo6
S2V5VHlwZSBrZXlUeXBlID0KICAgICAgIFtbc2VsZiBjbGFzc10gbmF0aXZlRW5jcnlwdGlvbktl
eVR5cGVGb3JLZXlUeXBlOl9rZXlUeXBlXTsKICAgaWYgKF9jZXJ0aWZpY2F0ZSAhPSBudWxscHRy
KSB7CkBAIC0yMjIsNiArMjUzLDIwIEBAIC0gKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OlJUQ0NvbmZpZ3VyYXRpb24gKikKICAgICBuYXRpdmVDb25maWctPnR1cm5fY3VzdG9taXpl
ciA9IF90dXJuQ3VzdG9taXplcjsKICAgfQogICBuYXRpdmVDb25maWctPmFjdGl2ZV9yZXNldF9z
cnRwX3BhcmFtcyA9IF9hY3RpdmVSZXNldFNydHBQYXJhbXMgPyB0cnVlIDogZmFsc2U7CisgIGlm
IChfY3J5cHRvT3B0aW9ucykgeworICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBuYXRpdmVDcnlw
dG9PcHRpb25zOworICAgIG5hdGl2ZUNyeXB0b09wdGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0
b19zdWl0ZXMgPQorICAgICAgICBfY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxlR2NtQ3J5cHRvU3Vp
dGVzID8gdHJ1ZSA6IGZhbHNlOworICAgIG5hdGl2ZUNyeXB0b09wdGlvbnMuc3J0cC5lbmFibGVf
YWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9CisgICAgICAgIF9jcnlwdG9PcHRpb25zLnNy
dHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyID8gdHJ1ZSA6IGZhbHNlOworICAgIG5h
dGl2ZUNyeXB0b09wdGlvbnMuc3J0cC5lbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5z
aW9ucyA9CisgICAgICAgIF9jcnlwdG9PcHRpb25zLnNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFk
ZXJFeHRlbnNpb25zID8gdHJ1ZSA6IGZhbHNlOworICAgIG5hdGl2ZUNyeXB0b09wdGlvbnMuc2Zy
YW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbiA9CisgICAgICAgIF9jcnlwdG9PcHRpb25zLnNm
cmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb24gPyB0cnVlIDogZmFsc2U7CisgICAgbmF0aXZlQ29u
ZmlnLT5jcnlwdG9fb3B0aW9ucyA9IGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6Q3J5cHRvT3B0aW9u
cz4obmF0aXZlQ3J5cHRvT3B0aW9ucyk7CisgIH0KKyAgbmF0aXZlQ29uZmlnLT5zZXRfYXVkaW9f
cnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMoX3J0Y3BBdWRpb1JlcG9ydEludGVydmFsTXMpOworICBu
YXRpdmVDb25maWctPnNldF92aWRlb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyhfcnRjcFZpZGVv
UmVwb3J0SW50ZXJ2YWxNcyk7CiAgIHJldHVybiBuYXRpdmVDb25maWcucmVsZWFzZSgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ3J5cHRvT3B0aW9ucy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0
aW9uL1JUQ0NyeXB0b09wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDY1YmI1YTczYmRmYjhlMzdmODgy
NTE0YTljYjE2OTZjMDNjZmNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0Ny
eXB0b09wdGlvbnMuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
CisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworI2ltcG9ydCAiUlRDTWFjcm9zLmgiCisK
K05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKKy8qKgorICogT2JqZWN0aXZlLUMgYmluZGluZ3Mg
Zm9yIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucy4gVGhpcyBBUEkgaGFkIHRvIGJlIGZsYXR0ZW5lZAor
ICogYXMgT2JqZWN0aXZlLUMgZG9lc24ndCBzdXBwb3J0IG5lc3RlZCBzdHJ1Y3R1cmVzLgorICov
CitSVENfT0JKQ19FWFBPUlQKK0BpbnRlcmZhY2UgUlRDQ3J5cHRvT3B0aW9ucyA6IE5TT2JqZWN0
CisKKy8qKgorICogRW5hYmxlIEdDTSBjcnlwdG8gc3VpdGVzIGZyb20gUkZDIDc3MTQgZm9yIFNS
VFAuIEdDTSB3aWxsIG9ubHkgYmUgdXNlZAorICogaWYgYm90aCBzaWRlcyBlbmFibGUgaXQKKyAq
LworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIHNydHBFbmFibGVHY21DcnlwdG9T
dWl0ZXM7CisvKioKKyAqIElmIHNldCB0byB0cnVlLCB0aGUgKHBvdGVudGlhbGx5IGluc2VjdXJl
KSBjcnlwdG8gY2lwaGVyCisgKiBTUlRQX0FFUzEyOF9DTV9TSEExXzMyIHdpbGwgYmUgaW5jbHVk
ZWQgaW4gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGNpcGhlcnMKKyAqIGR1cmluZyBuZWdvdGlhdGlv
bi4gSXQgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYm90aCBwZWVycyBzdXBwb3J0IGl0IGFuZCBubwor
ICogb3RoZXIgY2lwaGVycyBnZXQgcHJlZmVycmVkLgorICovCitAcHJvcGVydHkobm9uYXRvbWlj
LCBhc3NpZ24pIEJPT0wgc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7CisvKioK
KyAqIElmIHNldCB0byB0cnVlLCBlbmNyeXB0ZWQgUlRQIGhlYWRlciBleHRlbnNpb25zIGFzIGRl
ZmluZWQgaW4gUkZDIDY5MDQKKyAqIHdpbGwgYmUgbmVnb3RpYXRlZC4gVGhleSB3aWxsIG9ubHkg
YmUgdXNlZCBpZiBib3RoIHBlZXJzIHN1cHBvcnQgdGhlbS4KKyAqLworQHByb3BlcnR5KG5vbmF0
b21pYywgYXNzaWduKSBCT09MIHNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25z
OworCisvKioKKyAqIElmIHNldCBhbGwgUnRwU2VuZGVycyBtdXN0IGhhdmUgYW4gRnJhbWVFbmNy
eXB0b3IgYXR0YWNoZWQgdG8gdGhlbSBiZWZvcmUKKyAqIHRoZXkgYXJlIGFsbG93ZWQgdG8gc2Vu
ZCBwYWNrZXRzLiBBbGwgUnRwUmVjZWl2ZXJzIG11c3QgaGF2ZSBhCisgKiBGcmFtZURlY3J5cHRv
ciBhdHRhY2hlZCB0byB0aGVtIGJlZm9yZSB0aGV5IGFyZSBhYmxlIHRvIHJlY2VpdmUgcGFja2V0
cy4KKyAqLworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIHNmcmFtZVJlcXVpcmVG
cmFtZUVuY3J5cHRpb247CisKKy8qKgorICogSW5pdGlhbGl6ZXMgQ3J5cHRvT3B0aW9ucyB3aXRo
IGFsbCBwb3NzaWJsZSBvcHRpb25zIHNldCBleHBsaWNpdGx5LiBUaGlzCisgKiBpcyBkb25lIHdo
ZW4gY29udmVydGluZyBmcm9tIGEgbmF0aXZlIFJUQ0NvbmZpZ3VyYXRpb24uY3J5cHRvX29wdGlv
bnMuCisgKi8KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNydHBFbmFibGVHY21DcnlwdG9TdWl0
ZXM6KEJPT0wpc3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlcworICAgICAgICAgICAgICBzcnRwRW5h
YmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjooQk9PTClzcnRwRW5hYmxlQWVzMTI4U2hhMV8z
MkNyeXB0b0NpcGhlcgorICAgICAgICAgICBzcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0
ZW5zaW9uczooQk9PTClzcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucworICAg
ICAgICAgICAgICAgICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbjooQk9PTClzZnJh
bWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uCisgICAgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsK
KworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisKK0BlbmQKKworTlNfQVNT
VU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ3J5cHRvT3B0aW9u
cy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2FwaS9wZWVyY29ubmVjdGlvbi9SVENDcnlwdG9PcHRpb25zLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwNTlm
NzU1OTk0ZTc0MzAzMDMyMWRhNWYyZTA0MzJmMGIyMTFmZjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVl
cmNvbm5lY3Rpb24vUlRDQ3J5cHRvT3B0aW9ucy5tbQpAQCAtMCwwICsxLDMzIEBACisvKgorICog
IENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCisjaW1wb3J0ICJSVENDcnlwdG9PcHRpb25zLmgiCisKK0BpbXBsZW1lbnRh
dGlvbiBSVENDcnlwdG9PcHRpb25zCisKK0BzeW50aGVzaXplIHNydHBFbmFibGVHY21DcnlwdG9T
dWl0ZXMgPSBfc3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlczsKK0BzeW50aGVzaXplIHNydHBFbmFi
bGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyID0gX3NydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5
cHRvQ2lwaGVyOworQHN5bnRoZXNpemUgc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVu
c2lvbnMgPSBfc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnM7CitAc3ludGhl
c2l6ZSBzZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uID0gX3NmcmFtZVJlcXVpcmVGcmFtZUVu
Y3J5cHRpb247CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNydHBFbmFibGVHY21DcnlwdG9T
dWl0ZXM6KEJPT0wpc3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlcworICAgICAgICAgICAgICBzcnRw
RW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjooQk9PTClzcnRwRW5hYmxlQWVzMTI4U2hh
MV8zMkNyeXB0b0NpcGhlcgorICAgICAgICAgICBzcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVy
RXh0ZW5zaW9uczooQk9PTClzcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucwor
ICAgICAgICAgICAgICAgICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbjooQk9PTClz
ZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uIHsKKyAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0p
IHsKKyAgICBfc3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlcyA9IHNydHBFbmFibGVHY21DcnlwdG9T
dWl0ZXM7CisgICAgX3NydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyID0gc3J0cEVu
YWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7CisgICAgX3NydHBFbmFibGVFbmNyeXB0ZWRS
dHBIZWFkZXJFeHRlbnNpb25zID0gc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lv
bnM7CisgICAgX3NmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb24gPSBzZnJhbWVSZXF1aXJlRnJh
bWVFbmNyeXB0aW9uOworICB9CisgIHJldHVybiBzZWxmOworfQorCitAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
cGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5oCmluZGV4IDFiMTI1ZjEwMzlhMjJmMjI5ZjA5MmI5YTc2
Y2YzNDJiMDhjNmJjNDEuLmM3N2E3YWQ4NWQ3YmI3YThkYmI1ZjBhOGNkNzEwOTU3N2Q1ODJlZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9w
ZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5oCkBAIC0xMCw3ICsxMCw3IEBA
CiAKICNpbXBvcnQgImJhc2UvUlRDRW5jb2RlZEltYWdlLmgiCiAKLSNpbmNsdWRlICJjb21tb25f
dmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVk
X2ltYWdlLmgiCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29u
bmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNv
ZGVkSW1hZ2UrUHJpdmF0ZS5tbQppbmRleCA5NGNiMWYxMTBmOTZjZjAzY2Q1MWFkN2JlZDQ1MGUx
NWI4MjE4OTQ3Li5mOTkwMWJkMzI3ZThmMjRiY2YwYmYxNzZiMDA0ZmY5ZTFhZjVhNzQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJj
b25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1tCkBAIC0zNSw3ICszNSw2IEBAIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZUVuY29kZWRJbWFnZTood2VicnRjOjpFbmNvZGVk
SW1hZ2UpZW5jb2RlZEltYWdlIHsKICAgICBzZWxmLmNvbnRlbnRUeXBlID0gKGVuY29kZWRJbWFn
ZS5jb250ZW50X3R5cGVfID09IHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6U0NSRUVOU0hBUkUp
ID8KICAgICAgICAgUlRDVmlkZW9Db250ZW50VHlwZVNjcmVlbnNoYXJlIDoKICAgICAgICAgUlRD
VmlkZW9Db250ZW50VHlwZVVuc3BlY2lmaWVkOwotICAgIHNlbGYuc3BhdGlhbEluZGV4ID0gZW5j
b2RlZEltYWdlLlNwYXRpYWxJbmRleCgpID8gKmVuY29kZWRJbWFnZS5TcGF0aWFsSW5kZXgoKSA6
IDA7CiAgIH0KIAogICByZXR1cm4gc2VsZjsKQEAgLTU3LDExICs1NiwxMSBAQCAtICh3ZWJydGM6
OkVuY29kZWRJbWFnZSluYXRpdmVFbmNvZGVkSW1hZ2UgewogICBlbmNvZGVkSW1hZ2Uucm90YXRp
b25fID0gd2VicnRjOjpWaWRlb1JvdGF0aW9uKHNlbGYucm90YXRpb24pOwogICBlbmNvZGVkSW1h
Z2UuX2NvbXBsZXRlRnJhbWUgPSBzZWxmLmNvbXBsZXRlRnJhbWU7CiAgIGVuY29kZWRJbWFnZS5x
cF8gPSBzZWxmLnFwID8gc2VsZi5xcC5pbnRWYWx1ZSA6IC0xOworICBlbmNvZGVkSW1hZ2UuU2V0
U3BhdGlhbEluZGV4KHNlbGYuc3BhdGlhbEluZGV4KTsKICAgZW5jb2RlZEltYWdlLmNvbnRlbnRf
dHlwZV8gPSAoc2VsZi5jb250ZW50VHlwZSA9PSBSVENWaWRlb0NvbnRlbnRUeXBlU2NyZWVuc2hh
cmUpID8KICAgICAgIHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6U0NSRUVOU0hBUkUgOgogICAg
ICAgd2VicnRjOjpWaWRlb0NvbnRlbnRUeXBlOjpVTlNQRUNJRklFRDsKLSAgaWYgKHNlbGYuc3Bh
dGlhbEluZGV4KQotICAgIGVuY29kZWRJbWFnZS5TZXRTcGF0aWFsSW5kZXgoc2VsZi5zcGF0aWFs
SW5kZXgpOworCiAgIHJldHVybiBlbmNvZGVkSW1hZ2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29u
bmVjdGlvbi9SVENGaWVsZFRyaWFscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0ZpZWxkVHJpYWxzLmgK
aW5kZXggZWZmYzQ3MDY4NmY4MTBiNDAxNWYyM2I1MWM0YTRjMWYzOTE3NDBlYi4uY2Y2NDhkMzJj
M2E5MTA4MWJlYjFkMjcxZjU1YzlkMmJhMjIxNzIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9u
L1JUQ0ZpZWxkVHJpYWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0ZpZWxkVHJpYWxzLmgKQEAg
LTIwLDI0ICsyMCwxMiBAQCBSVENfRVhURVJOIE5TU3RyaW5nICogY29uc3Qga1JUQ0ZpZWxkVHJp
YWxBdWRpb0ZvcmNlQUJXRU5vVFdDQ0tleTsKIFJUQ19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBr
UlRDRmllbGRUcmlhbFNlbmRTaWRlQndlV2l0aE92ZXJoZWFkS2V5OwogUlRDX0VYVEVSTiBOU1N0
cmluZyAqIGNvbnN0IGtSVENGaWVsZFRyaWFsRmxleEZlYzAzQWR2ZXJ0aXNlZEtleTsKIFJUQ19F
WFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEZsZXhGZWMwM0tleTsKLVJUQ19F
WFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEltcHJvdmVkQml0cmF0ZUVzdGlt
YXRlS2V5OwogUlRDX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IGtSVENGaWVsZFRyaWFsSDI2NEhp
Z2hQcm9maWxlS2V5OwogUlRDX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IGtSVENGaWVsZFRyaWFs
TWluaW1pemVSZXNhbXBsaW5nT25Nb2JpbGVLZXk7CiAKIC8qKiBUaGUgdmFsaWQgdmFsdWUgZm9y
IGZpZWxkIHRyaWFscyBhYm92ZS4gKi8KIFJUQ19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRD
RmllbGRUcmlhbEVuYWJsZWRWYWx1ZTsKIAotLyoqIFVzZSBhIHN0cmluZyByZXR1cm5lZCBieSBS
VENGaWVsZFRyaWFsTWVkaWFuU2xvcGVGaWx0ZXJWYWx1ZSBhcyB0aGUgdmFsdWUuICovCi1SVENf
RVhURVJOIE5TU3RyaW5nICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxNZWRpYW5TbG9wZUZpbHRlcktl
eTsKLVJUQ19FWFRFUk4gTlNTdHJpbmcgKlJUQ0ZpZWxkVHJpYWxNZWRpYW5TbG9wZUZpbHRlclZh
bHVlKAotICAgIHNpemVfdCB3aW5kb3dTaXplLCBkb3VibGUgdGhyZXNob2xkR2Fpbik7Ci0KLS8q
KiBVc2UgYSBzdHJpbmcgcmV0dXJuZWQgYnkgUlRDRmllbGRUcmlhbFRyZW5kbGluZUZpbHRlclZh
bHVlIGFzIHRoZSB2YWx1ZS4gKi8KLVJUQ19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmll
bGRUcmlhbFRyZW5kbGluZUZpbHRlcktleTsKLS8qKiBSZXR1cm5zIGEgdmFsaWQgdmFsdWUgZm9y
IGtSVENGaWVsZFRyaWFsVHJlbmRsaW5lRmlsdGVyS2V5LiAqLwotUlRDX0VYVEVSTiBOU1N0cmlu
ZyAqUlRDRmllbGRUcmlhbFRyZW5kbGluZUZpbHRlclZhbHVlKAotICAgIHNpemVfdCB3aW5kb3dT
aXplLCBkb3VibGUgc21vb3RoaW5nQ29lZmYsIGRvdWJsZSB0aHJlc2hvbGRHYWluKTsKLQogLyoq
IEluaXRpYWxpemUgZmllbGQgdHJpYWxzIHVzaW5nIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZpZWxk
IHRyaWFsIGtleXMgdG8gdGhlaXIKICAqIHZhbHVlcy4gU2VlIGFib3ZlIGZvciB2YWxpZCBrZXlz
IGFuZCB2YWx1ZXMuIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIKICAqIGNhbGwgaW50
byBXZWJSVEMuIFNlZTogd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFs
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENGaWVsZFRyaWFscy5tbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENGaWVsZFRyaWFscy5tbQppbmRleCAyMjEyYzdkZWM5NzE0Yjc5OWJkMjkxZjU3ZmYx
MzZmZDg1NGM2MjA2Li4xMjdjZTZmZWI4OWYzN2QzYTQxNGI1NWM5MDczMThhNGNkNTQzMGFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRmllbGRUcmlhbHMubW0KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0
aW9uL1JUQ0ZpZWxkVHJpYWxzLm1tCkBAIC0yMyw5ICsyMyw2IEBAIE5TU3RyaW5nICogY29uc3Qg
a1JUQ0ZpZWxkVHJpYWxBdWRpb0ZvcmNlQUJXRU5vVFdDQ0tleSA9IEAiV2ViUlRDLUF1ZGlvLUFC
V0VOb1RXCiBOU1N0cmluZyAqIGNvbnN0IGtSVENGaWVsZFRyaWFsU2VuZFNpZGVCd2VXaXRoT3Zl
cmhlYWRLZXkgPSBAIldlYlJUQy1TZW5kU2lkZUJ3ZS1XaXRoT3ZlcmhlYWQiOwogTlNTdHJpbmcg
KiBjb25zdCBrUlRDRmllbGRUcmlhbEZsZXhGZWMwM0FkdmVydGlzZWRLZXkgPSBAIldlYlJUQy1G
bGV4RkVDLTAzLUFkdmVydGlzZWQiOwogTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEZs
ZXhGZWMwM0tleSA9IEAiV2ViUlRDLUZsZXhGRUMtMDMiOwotTlNTdHJpbmcgKiBjb25zdCBrUlRD
RmllbGRUcmlhbEltcHJvdmVkQml0cmF0ZUVzdGltYXRlS2V5ID0gQCJXZWJSVEMtSW1wcm92ZWRC
aXRyYXRlRXN0aW1hdGUiOwotTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbE1lZGlhblNs
b3BlRmlsdGVyS2V5ID0gQCJXZWJSVEMtQndlTWVkaWFuU2xvcGVGaWx0ZXIiOwotTlNTdHJpbmcg
KiBjb25zdCBrUlRDRmllbGRUcmlhbFRyZW5kbGluZUZpbHRlcktleSA9IEAiV2ViUlRDLUJ3ZVRy
ZW5kbGluZUZpbHRlciI7CiBOU1N0cmluZyAqIGNvbnN0IGtSVENGaWVsZFRyaWFsSDI2NEhpZ2hQ
cm9maWxlS2V5ID0gQCJXZWJSVEMtSDI2NEhpZ2hQcm9maWxlIjsKIE5TU3RyaW5nICogY29uc3Qg
a1JUQ0ZpZWxkVHJpYWxNaW5pbWl6ZVJlc2FtcGxpbmdPbk1vYmlsZUtleSA9CiAgICAgQCJXZWJS
VEMtQXVkaW8tTWluaW1pemVSZXNhbXBsaW5nT25Nb2JpbGUiOwpAQCAtMzMsMTggKzMwLDYgQEAg
TlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEVuYWJsZWRWYWx1ZSA9IEAiRW5hYmxlZCI7
CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBnRmllbGRUcmlhbEluaXRTdHJpbmc7
CiAKLU5TU3RyaW5nICpSVENGaWVsZFRyaWFsTWVkaWFuU2xvcGVGaWx0ZXJWYWx1ZSgKLSAgICBz
aXplX3Qgd2luZG93U2l6ZSwgZG91YmxlIHRocmVzaG9sZEdhaW4pIHsKLSAgTlNTdHJpbmcgKmZv
cm1hdCA9IEAiRW5hYmxlZC0lenUsJWxmIjsKLSAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OmZvcm1hdCwgd2luZG93U2l6ZSwgdGhyZXNob2xkR2Fpbl07Ci19Ci0KLU5TU3RyaW5n
ICpSVENGaWVsZFRyaWFsVHJlbmRsaW5lRmlsdGVyVmFsdWUoCi0gICAgc2l6ZV90IHdpbmRvd1Np
emUsIGRvdWJsZSBzbW9vdGhpbmdDb2VmZiwgZG91YmxlIHRocmVzaG9sZEdhaW4pIHsKLSAgTlNT
dHJpbmcgKmZvcm1hdCA9IEAiRW5hYmxlZC0lenUsJWxmLCVsZiI7Ci0gIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIHdpbmRvd1NpemUsIHNtb290aGluZ0NvZWZmLCB0
aHJlc2hvbGRHYWluXTsKLX0KLQogdm9pZCBSVENJbml0RmllbGRUcmlhbERpY3Rpb25hcnkoTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICpmaWVsZFRyaWFscykgewogICBpZiAo
IWZpZWxkVHJpYWxzKSB7CiAgICAgUlRDTG9nV2FybmluZyhAIk5vIGZpZWxkVHJpYWxzIHByb3Zp
ZGVkLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uK1ByaXZh
dGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbitQcml2YXRlLmgKaW5kZXggYjY0
NDBjZDQzNGE4NTdlYmQ3YTMyMTZmODJmYjMzM2I5NzdiMjRjMS4uZDI2ZWIyZTU5MjU1NGJkMjNj
ZmI0ZGI4YTE4NzEzZGNjNzMyMTExMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJD
b25uZWN0aW9uK1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb24r
UHJpdmF0ZS5oCkBAIC0zOSw2ICszOSw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uRGVsZWdhdGVB
ZGFwdGVyIDogcHVibGljIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgewogCiAgIHZvaWQgT25JY2VD
b25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3Rh
dGUgbmV3X3N0YXRlKSBvdmVycmlkZTsKIAorICB2b2lkIE9uQ29ubmVjdGlvbkNoYW5nZShQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpIG92ZXJy
aWRlOworCiAgIHZvaWQgT25JY2VHYXRoZXJpbmdDaGFuZ2UoUGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OkljZUdhdGhlcmluZ1N0YXRlIG5ld19zdGF0ZSkgb3ZlcnJpZGU7CiAKICAgdm9pZCBPbklj
ZUNhbmRpZGF0ZShjb25zdCBJY2VDYW5kaWRhdGVJbnRlcmZhY2UgKmNhbmRpZGF0ZSkgb3ZlcnJp
ZGU7CkBAIC04NSwxMSArODcsMTkgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25EZWxlZ2F0ZUFkYXB0
ZXIgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25PYnNlcnZlciB7CiArICh3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUpbmF0aXZlSWNlQ29ubmVjdGlvblN0
YXRlRm9yU3RhdGU6CiAgICAgICAgIChSVENJY2VDb25uZWN0aW9uU3RhdGUpc3RhdGU7CiAKKysg
KHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUpbmF0
aXZlQ29ubmVjdGlvblN0YXRlRm9yU3RhdGU6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvblN0
YXRlKXN0YXRlOworCiArIChSVENJY2VDb25uZWN0aW9uU3RhdGUpaWNlQ29ubmVjdGlvblN0YXRl
Rm9yTmF0aXZlU3RhdGU6CiAgICAgICAgICh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpJY2VDb25uZWN0aW9uU3RhdGUpbmF0aXZlU3RhdGU7CiAKKysgKFJUQ1BlZXJDb25uZWN0aW9u
U3RhdGUpY29ubmVjdGlvblN0YXRlRm9yTmF0aXZlU3RhdGU6CisgICAgICAgICh3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlKW5hdGl2ZVN0YXRlOwor
CiArIChOU1N0cmluZyAqKXN0cmluZ0ZvckljZUNvbm5lY3Rpb25TdGF0ZTooUlRDSWNlQ29ubmVj
dGlvblN0YXRlKXN0YXRlOwogCisrIChOU1N0cmluZyAqKXN0cmluZ0ZvckNvbm5lY3Rpb25TdGF0
ZTooUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSlzdGF0ZTsKKwogKyAod2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6SWNlR2F0aGVyaW5nU3RhdGUpbmF0aXZlSWNlR2F0aGVyaW5nU3RhdGVG
b3JTdGF0ZToKICAgICAgICAgKFJUQ0ljZUdhdGhlcmluZ1N0YXRlKXN0YXRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9h
cGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQ
ZWVyQ29ubmVjdGlvbi5oCmluZGV4IDAxNzllYzBlMjZkZjkzYWI1MWVlMmI3ZGY1NzIyYzFmMmZm
NGNiYTEuLjM5M2E1MGJjODk4NGVjOTljMDE0Yjc0ZTYzNDFlNWU3YWYyNmM1MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENQZWVyQ29ubmVjdGlvbi5oCkBAIC01Nyw2ICs1NywxNiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBSVENJY2VDb25uZWN0aW9uU3RhdGUpIHsKICAgUlRDSWNlQ29ubmVjdGlvblN0YXRl
Q291bnQsCiB9OwogCisvKiogUmVwcmVzZW50cyB0aGUgY29tYmluZWQgaWNlK2R0bHMgY29ubmVj
dGlvbiBzdGF0ZSBvZiB0aGUgcGVlciBjb25uZWN0aW9uLiAqLwordHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSkgeworICBSVENQZWVyQ29ubmVjdGlvblN0
YXRlTmV3LAorICBSVENQZWVyQ29ubmVjdGlvblN0YXRlQ29ubmVjdGluZywKKyAgUlRDUGVlckNv
bm5lY3Rpb25TdGF0ZUNvbm5lY3RlZCwKKyAgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZURpc2Nvbm5l
Y3RlZCwKKyAgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUZhaWxlZCwKKyAgUlRDUGVlckNvbm5lY3Rp
b25TdGF0ZUNsb3NlZCwKK307CisKIC8qKiBSZXByZXNlbnRzIHRoZSBpY2UgZ2F0aGVyaW5nIHN0
YXRlIG9mIHRoZSBwZWVyIGNvbm5lY3Rpb24uICovCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBSVENJY2VHYXRoZXJpbmdTdGF0ZSkgewogICBSVENJY2VHYXRoZXJpbmdTdGF0ZU5ldywKQEAg
LTExNSwxMSArMTI1LDE0IEBAIFJUQ19PQkpDX0VYUE9SVAogICogIFRoaXMgaXMgb25seSBjYWxs
ZWQgd2l0aCBSVENTZHBTZW1hbnRpY3NVbmlmaWVkUGxhbiBzcGVjaWZpZWQuCiAgKi8KIEBvcHRp
b25hbAorLyoqIENhbGxlZCBhbnkgdGltZSB0aGUgUGVlckNvbm5lY3Rpb25TdGF0ZSBjaGFuZ2Vz
LiAqLworLSAodm9pZClwZWVyQ29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24gKilwZWVyQ29u
bmVjdGlvbgorICAgIGRpZENoYW5nZUNvbm5lY3Rpb25TdGF0ZTooUlRDUGVlckNvbm5lY3Rpb25T
dGF0ZSluZXdTdGF0ZTsKKwogLSAodm9pZClwZWVyQ29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rp
b24gKilwZWVyQ29ubmVjdGlvbgogICAgIGRpZFN0YXJ0UmVjZWl2aW5nT25UcmFuc2NlaXZlcjoo
UlRDUnRwVHJhbnNjZWl2ZXIgKil0cmFuc2NlaXZlcjsKIAogLyoqIENhbGxlZCB3aGVuIGEgcmVj
ZWl2ZXIgYW5kIGl0cyB0cmFjayBhcmUgY3JlYXRlZC4gKi8KLUBvcHRpb25hbAogLSAodm9pZClw
ZWVyQ29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24gKilwZWVyQ29ubmVjdGlvbgogICAgICAg
ICBkaWRBZGRSZWNlaXZlcjooUlRDUnRwUmVjZWl2ZXIgKilydHBSZWNlaXZlcgogICAgICAgICAg
ICAgICAgc3RyZWFtczooTlNBcnJheTxSVENNZWRpYVN0cmVhbSAqPiAqKW1lZGlhU3RyZWFtczsK
QEAgLTE0NSw2ICsxNTgsNyBAQCBSVENfT0JKQ19FWFBPUlQKIEBwcm9wZXJ0eShub25hdG9taWMs
IHJlYWRvbmx5LCBudWxsYWJsZSkgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uICpyZW1vdGVEZXNjcmlw
dGlvbjsKIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBSVENTaWduYWxpbmdTdGF0ZSBz
aWduYWxpbmdTdGF0ZTsKIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBSVENJY2VDb25u
ZWN0aW9uU3RhdGUgaWNlQ29ubmVjdGlvblN0YXRlOworQHByb3BlcnR5KG5vbmF0b21pYywgcmVh
ZG9ubHkpIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgY29ubmVjdGlvblN0YXRlOwogQHByb3BlcnR5
KG5vbmF0b21pYywgcmVhZG9ubHkpIFJUQ0ljZUdhdGhlcmluZ1N0YXRlIGljZUdhdGhlcmluZ1N0
YXRlOwogQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIFJUQ0NvbmZpZ3VyYXRp
b24gKmNvbmZpZ3VyYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29u
bmVjdGlvbi5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbi5tbQppbmRleCA1Mjc3
NDg5NzQ3YjBiOWQzODhhMDM5YzBmM2M4MDcwMjUyNzcyZTJjLi5iNTlkYWZlYzM1ZmY5MjI1NDkz
M2E3NGU5YmExNTBkNzc1NTRkM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNv
bm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uLm1tCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiYXBpL2pzZXBpY2Vj
YW5kaWRhdGUuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBOU1N0cmluZyAqIGNvbnN0IGtSVENQZWVy
Q29ubmVjdGlvbkVycm9yRG9tYWluID0KQEAgLTE3NCwxMSArMTc1LDE3IEBAIHZvaWQgUGVlckNv
bm5lY3Rpb25EZWxlZ2F0ZUFkYXB0ZXI6Ok9uUmVuZWdvdGlhdGlvbk5lZWRlZCgpIHsKIAogdm9p
ZCBQZWVyQ29ubmVjdGlvbkRlbGVnYXRlQWRhcHRlcjo6T25JY2VDb25uZWN0aW9uQ2hhbmdlKAog
ICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRl
KSB7Ci0gIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSBzdGF0ZSA9Ci0gICAgICBbW1JUQ1BlZXJDb25u
ZWN0aW9uIGNsYXNzXSBpY2VDb25uZWN0aW9uU3RhdGVGb3JOYXRpdmVTdGF0ZTpuZXdfc3RhdGVd
OwotICBSVENQZWVyQ29ubmVjdGlvbiAqcGVlcl9jb25uZWN0aW9uID0gcGVlcl9jb25uZWN0aW9u
XzsKLSAgW3BlZXJfY29ubmVjdGlvbi5kZWxlZ2F0ZSBwZWVyQ29ubmVjdGlvbjpwZWVyX2Nvbm5l
Y3Rpb24KLSAgICAgICAgICAgICAgIGRpZENoYW5nZUljZUNvbm5lY3Rpb25TdGF0ZTpzdGF0ZV07
CisgIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSBzdGF0ZSA9IFtSVENQZWVyQ29ubmVjdGlvbiBpY2VD
b25uZWN0aW9uU3RhdGVGb3JOYXRpdmVTdGF0ZTpuZXdfc3RhdGVdOworICBbcGVlcl9jb25uZWN0
aW9uXy5kZWxlZ2F0ZSBwZWVyQ29ubmVjdGlvbjpwZWVyX2Nvbm5lY3Rpb25fIGRpZENoYW5nZUlj
ZUNvbm5lY3Rpb25TdGF0ZTpzdGF0ZV07Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb25EZWxlZ2F0
ZUFkYXB0ZXI6Ok9uQ29ubmVjdGlvbkNoYW5nZSgKKyAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpIHsKKyAgaWYgKFtwZWVyX2Nvbm5lY3Rp
b25fLmRlbGVnYXRlCisgICAgICAgICAgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZWVy
Q29ubmVjdGlvbjpkaWRDaGFuZ2VDb25uZWN0aW9uU3RhdGU6KV0pIHsKKyAgICBSVENQZWVyQ29u
bmVjdGlvblN0YXRlIHN0YXRlID0gW1JUQ1BlZXJDb25uZWN0aW9uIGNvbm5lY3Rpb25TdGF0ZUZv
ck5hdGl2ZVN0YXRlOm5ld19zdGF0ZV07CisgICAgW3BlZXJfY29ubmVjdGlvbl8uZGVsZWdhdGUg
cGVlckNvbm5lY3Rpb246cGVlcl9jb25uZWN0aW9uXyBkaWRDaGFuZ2VDb25uZWN0aW9uU3RhdGU6
c3RhdGVdOworICB9CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25EZWxlZ2F0ZUFkYXB0ZXI6Ok9u
SWNlR2F0aGVyaW5nQ2hhbmdlKApAQCAtMzIxLDYgKzMyOCwxMCBAQCAtIChSVENJY2VDb25uZWN0
aW9uU3RhdGUpaWNlQ29ubmVjdGlvblN0YXRlIHsKICAgICAgIF9wZWVyQ29ubmVjdGlvbi0+aWNl
X2Nvbm5lY3Rpb25fc3RhdGUoKV07CiB9CiAKKy0gKFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUpY29u
bmVjdGlvblN0YXRlIHsKKyAgcmV0dXJuIFtbc2VsZiBjbGFzc10gY29ubmVjdGlvblN0YXRlRm9y
TmF0aXZlU3RhdGU6X3BlZXJDb25uZWN0aW9uLT5wZWVyX2Nvbm5lY3Rpb25fc3RhdGUoKV07Cit9
CisKIC0gKFJUQ0ljZUdhdGhlcmluZ1N0YXRlKWljZUdhdGhlcmluZ1N0YXRlIHsKICAgcmV0dXJu
IFtbc2VsZiBjbGFzc10gaWNlR2F0aGVyaW5nU3RhdGVGb3JOYXRpdmVTdGF0ZToKICAgICAgIF9w
ZWVyQ29ubmVjdGlvbi0+aWNlX2dhdGhlcmluZ19zdGF0ZSgpXTsKQEAgLTYzMSw2ICs2NDIsNTkg
QEAgKyAoTlNTdHJpbmcgKilzdHJpbmdGb3JTaWduYWxpbmdTdGF0ZTooUlRDU2lnbmFsaW5nU3Rh
dGUpc3RhdGUgewogICB9CiB9CiAKKysgKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlBlZXJDb25uZWN0aW9uU3RhdGUpbmF0aXZlQ29ubmVjdGlvblN0YXRlRm9yU3RhdGU6CisgICAg
ICAgIChSVENQZWVyQ29ubmVjdGlvblN0YXRlKXN0YXRlIHsKKyAgc3dpdGNoIChzdGF0ZSkgewor
ICAgIGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZU5ldzoKKyAgICAgIHJldHVybiB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprTmV3OworICAg
IGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNvbm5lY3Rpbmc6CisgICAgICByZXR1cm4gd2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5l
Y3Rpbmc7CisgICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0YXRlQ29ubmVjdGVkOgorICAgICAg
cmV0dXJuIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3Rh
dGU6OmtDb25uZWN0ZWQ7CisgICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0YXRlRmFpbGVkOgor
ICAgICAgcmV0dXJuIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0
aW9uU3RhdGU6OmtGYWlsZWQ7CisgICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0YXRlRGlzY29u
bmVjdGVkOgorICAgICAgcmV0dXJuIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBl
ZXJDb25uZWN0aW9uU3RhdGU6OmtEaXNjb25uZWN0ZWQ7CisgICAgY2FzZSBSVENQZWVyQ29ubmVj
dGlvblN0YXRlQ2xvc2VkOgorICAgICAgcmV0dXJuIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDbG9zZWQ7CisgIH0KK30KKworKyAoUlRDUGVl
ckNvbm5lY3Rpb25TdGF0ZSljb25uZWN0aW9uU3RhdGVGb3JOYXRpdmVTdGF0ZToKKyAgICAgICAg
KHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUpbmF0
aXZlU3RhdGUgeworICBzd2l0Y2ggKG5hdGl2ZVN0YXRlKSB7CisgICAgY2FzZSB3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprTmV3OgorICAgICAg
cmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVOZXc7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprQ29ubmVjdGluZzoKKyAg
ICAgIHJldHVybiBSVENQZWVyQ29ubmVjdGlvblN0YXRlQ29ubmVjdGluZzsKKyAgICBjYXNlIHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDb25u
ZWN0ZWQ6CisgICAgICByZXR1cm4gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNvbm5lY3RlZDsKKyAg
ICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3Rh
dGU6OmtGYWlsZWQ6CisgICAgICByZXR1cm4gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUZhaWxlZDsK
KyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9u
U3RhdGU6OmtEaXNjb25uZWN0ZWQ6CisgICAgICByZXR1cm4gUlRDUGVlckNvbm5lY3Rpb25TdGF0
ZURpc2Nvbm5lY3RlZDsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDbG9zZWQ6CisgICAgICByZXR1cm4gUlRDUGVlckNvbm5l
Y3Rpb25TdGF0ZUNsb3NlZDsKKyAgfQorfQorCisrIChOU1N0cmluZyAqKXN0cmluZ0ZvckNvbm5l
Y3Rpb25TdGF0ZTooUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSlzdGF0ZSB7CisgIHN3aXRjaCAoc3Rh
dGUpIHsKKyAgICBjYXNlIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVOZXc6CisgICAgICByZXR1cm4g
QCJORVciOworICAgIGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNvbm5lY3Rpbmc6CisgICAg
ICByZXR1cm4gQCJDT05ORUNUSU5HIjsKKyAgICBjYXNlIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVD
b25uZWN0ZWQ6CisgICAgICByZXR1cm4gQCJDT05ORUNURUQiOworICAgIGNhc2UgUlRDUGVlckNv
bm5lY3Rpb25TdGF0ZUZhaWxlZDoKKyAgICAgIHJldHVybiBAIkZBSUxFRCI7CisgICAgY2FzZSBS
VENQZWVyQ29ubmVjdGlvblN0YXRlRGlzY29ubmVjdGVkOgorICAgICAgcmV0dXJuIEAiRElTQ09O
TkVDVEVEIjsKKyAgICBjYXNlIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVDbG9zZWQ6CisgICAgICBy
ZXR1cm4gQCJDTE9TRUQiOworICB9Cit9CisKICsgKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSkKICAgICBuYXRpdmVJY2VDb25uZWN0aW9uU3RhdGVG
b3JTdGF0ZTooUlRDSWNlQ29ubmVjdGlvblN0YXRlKXN0YXRlIHsKICAgc3dpdGNoIChzdGF0ZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeStOYXRp
dmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnkrTmF0aXZlLmgKaW5k
ZXggNjBhYTA4ZjdjYTNhMDIzZmFhMDNjMzMyOWZiY2VhYzFlNzFhNGUyYS4uMjc1MmNmNDExNzY2
YjkwNDZmNDEyMzIzMmYzNGY0YTQ1YTcwMWE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JU
Q1BlZXJDb25uZWN0aW9uRmFjdG9yeStOYXRpdmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVl
ckNvbm5lY3Rpb25GYWN0b3J5K05hdGl2ZS5oCkBAIC0xNyw2ICsxNyw3IEBAIG5hbWVzcGFjZSB3
ZWJydGMgewogY2xhc3MgQXVkaW9EZXZpY2VNb2R1bGU7CiBjbGFzcyBBdWRpb0VuY29kZXJGYWN0
b3J5OwogY2xhc3MgQXVkaW9EZWNvZGVyRmFjdG9yeTsKK2NsYXNzIE1lZGlhVHJhbnNwb3J0RmFj
dG9yeTsKIGNsYXNzIFZpZGVvRW5jb2RlckZhY3Rvcnk7CiBjbGFzcyBWaWRlb0RlY29kZXJGYWN0
b3J5OwogY2xhc3MgQXVkaW9Qcm9jZXNzaW5nOwpAQCAtNDksNiArNTAsMjUgQEAgTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3Np
bmdNb2R1bGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+KWF1ZGlvUHJvY2Vzc2luZ01vZHVsZTsKIAor
LSAoaW5zdGFuY2V0eXBlKQorICAgIGluaXRXaXRoTmF0aXZlQXVkaW9FbmNvZGVyRmFjdG9yeToK
KyAgICAgICAgKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+
KWF1ZGlvRW5jb2RlckZhY3RvcnkKKyAgICAgICAgICAgIG5hdGl2ZUF1ZGlvRGVjb2RlckZhY3Rv
cnk6CisgICAgICAgICAgICAgICAgKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVj
b2RlckZhY3Rvcnk+KWF1ZGlvRGVjb2RlckZhY3RvcnkKKyAgICAgICAgICAgIG5hdGl2ZVZpZGVv
RW5jb2RlckZhY3Rvcnk6CisgICAgICAgICAgICAgICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6
OlZpZGVvRW5jb2RlckZhY3Rvcnk+KXZpZGVvRW5jb2RlckZhY3RvcnkKKyAgICAgICAgICAgIG5h
dGl2ZVZpZGVvRGVjb2RlckZhY3Rvcnk6CisgICAgICAgICAgICAgICAgKHN0ZDo6dW5pcXVlX3B0
cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+KXZpZGVvRGVjb2RlckZhY3RvcnkKKyAgICAg
ICAgICAgICAgICAgICAgYXVkaW9EZXZpY2VNb2R1bGU6KG51bGxhYmxlIHdlYnJ0Yzo6QXVkaW9E
ZXZpY2VNb2R1bGUgKilhdWRpb0RldmljZU1vZHVsZQorICAgICAgICAgICAgICAgIGF1ZGlvUHJv
Y2Vzc2luZ01vZHVsZToKKyAgICAgICAgICAgICAgICAgICAgKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4pYXVkaW9Qcm9jZXNzaW5nTW9kdWxlCisgICAgICAgICAg
ICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAoc3RkOjp1
bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRGYWN0b3J5PiltZWRpYVRyYW5zcG9ydEZh
Y3Rvcnk7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVuY29kZXJGYWN0b3J5OihudWxsYWJs
ZSBpZDxSVENWaWRlb0VuY29kZXJGYWN0b3J5PillbmNvZGVyRmFjdG9yeQorICAgICAgICAgICAg
ICAgICAgICAgICAgZGVjb2RlckZhY3Rvcnk6KG51bGxhYmxlIGlkPFJUQ1ZpZGVvRGVjb2RlckZh
Y3Rvcnk+KWRlY29kZXJGYWN0b3J5CisgICAgICAgICAgICAgICAgIG1lZGlhVHJhbnNwb3J0RmFj
dG9yeToKKyAgICAgICAgICAgICAgICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRp
YVRyYW5zcG9ydEZhY3Rvcnk+KW1lZGlhVHJhbnNwb3J0RmFjdG9yeTsKIEBlbmQKIAogTlNfQVNT
VU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rp
b25GYWN0b3J5Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeS5tbQpp
bmRleCA0MDNkYjA0MGZiODYyMjY0OGQ0ODMyYTBlYzIwODYwOTdhYjM3ZDc4Li40ODQ3NmYyMzY4
ZjAxNDUyNDBkZWI1MGU0NTRjZTY5Mzg5NzljZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24v
UlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29u
bmVjdGlvbkZhY3RvcnkubW0KQEAgLTUwLDYgKzUwLDcgQEAKIC8vIFRPRE8oemhpaHVhbmcpOiBS
ZW1vdmUgbm9nbmNoZWNrIG9uY2UgTWVkaWFFbmdpbmVJbnRlcmZhY2UgaXMgbW92ZWQgdG8gQysr
CiAvLyBBUEkgbGF5ZXIuCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVk
ZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdp
bmUvd2VicnRjbWVkaWFlbmdpbmUuaCIgIC8vIG5vZ25jaGVjawogCiBAaW1wbGVtZW50YXRpb24g
UlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKQEAgLTgwLDEyICs4MSwxNSBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRGVjb2RlckZh
Y3Rvcnk6d2VicnRjOjpPYmpDVG9OYXRpdmVWaWRlb0RlY29kZXJGYWN0b3J5KAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1JUQ1ZpZGVvRGVj
b2RlckZhY3RvcnlIMjY0IGFsbG9jXSBpbml0XSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhdWRpb0RldmljZU1vZHVsZTpbc2VsZiBhdWRpb0RldmljZU1vZHVsZV0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGF1ZGlvUHJvY2Vzc2luZ01vZHVsZTpudWxscHRyXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvUHJvY2Vzc2luZ01vZHVsZTpudWxscHRyCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVRyYW5zcG9ydEZhY3Rvcnk6bnVsbHB0cl07CiAj
ZW5kaWYKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRW5jb2RlckZhY3Rvcnk6KG51bGxh
YmxlIGlkPFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnk+KWVuY29kZXJGYWN0b3J5Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBkZWNvZGVyRmFjdG9yeToobnVsbGFibGUgaWQ8UlRDVmlkZW9EZWNvZGVy
RmFjdG9yeT4pZGVjb2RlckZhY3RvcnkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2Rl
ckZhY3Rvcnk6KG51bGxhYmxlIGlkPFJUQ1ZpZGVvRGVjb2RlckZhY3Rvcnk+KWRlY29kZXJGYWN0
b3J5CisgICAgICAgICAgICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9yeToKKyAgICAgICAgICAg
ICAgICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+
KW1lZGlhVHJhbnNwb3J0RmFjdG9yeSB7CiAjaWZkZWYgSEFWRV9OT19NRURJQQogICByZXR1cm4g
W3NlbGYgaW5pdFdpdGhOb01lZGlhXTsKICNlbHNlCkBAIC0xMDIsOSArMTA2LDE2IEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEVuY29kZXJGYWN0b3J5OihudWxsYWJsZSBpZDxSVENWaWRlb0Vu
Y29kZXJGYWN0b3J5PillbmNvCiAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRW5j
b2RlckZhY3Rvcnk6c3RkOjptb3ZlKG5hdGl2ZV9lbmNvZGVyX2ZhY3RvcnkpCiAgICAgICAgICAg
ICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRGVjb2RlckZhY3Rvcnk6c3RkOjptb3ZlKG5hdGl2ZV9k
ZWNvZGVyX2ZhY3RvcnkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9EZXZp
Y2VNb2R1bGU6W3NlbGYgYXVkaW9EZXZpY2VNb2R1bGVdCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6bnVsbHB0cl07CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6bnVsbHB0cgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5OnN0ZDo6bW92ZShtZWRpYVRyYW5zcG9ydEZh
Y3RvcnkpXTsKICNlbmRpZgogfQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRW5jb2RlckZhY3Rv
cnk6KG51bGxhYmxlIGlkPFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnk+KWVuY29kZXJGYWN0b3J5Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyRmFjdG9yeToobnVsbGFibGUgaWQ8UlRDVmlk
ZW9EZWNvZGVyRmFjdG9yeT4pZGVjb2RlckZhY3RvcnkgeworICByZXR1cm4gW3NlbGYgaW5pdFdp
dGhFbmNvZGVyRmFjdG9yeTplbmNvZGVyRmFjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICBk
ZWNvZGVyRmFjdG9yeTpkZWNvZGVyRmFjdG9yeQorICAgICAgICAgICAgICAgIG1lZGlhVHJhbnNw
b3J0RmFjdG9yeTpudWxscHRyXTsKK30KIAogLSAoaW5zdGFuY2V0eXBlKWluaXROYXRpdmUgewog
ICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewpAQCAtMTUyLDIwICsxNjMsNTcgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlQXVkaW9FbmNvZGVyRmFjdG9yeToKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsYWJsZSB3ZWJydGM6OkF1ZGlvRGV2aWNlTW9k
dWxlICopYXVkaW9EZXZpY2VNb2R1bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRp
b1Byb2Nlc3NpbmdNb2R1bGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+KWF1ZGlvUHJvY2Vzc2luZ01v
ZHVsZSB7CisgIHJldHVybiBbc2VsZiBpbml0V2l0aE5hdGl2ZUF1ZGlvRW5jb2RlckZhY3Rvcnk6
YXVkaW9FbmNvZGVyRmFjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVBdWRpb0Rl
Y29kZXJGYWN0b3J5OmF1ZGlvRGVjb2RlckZhY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAg
bmF0aXZlVmlkZW9FbmNvZGVyRmFjdG9yeTpzdGQ6Om1vdmUodmlkZW9FbmNvZGVyRmFjdG9yeSkK
KyAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlVmlkZW9EZWNvZGVyRmFjdG9yeTpzdGQ6Om1v
dmUodmlkZW9EZWNvZGVyRmFjdG9yeSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dWRpb0RldmljZU1vZHVsZTphdWRpb0RldmljZU1vZHVsZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOmF1ZGlvUHJvY2Vzc2luZ01vZHVsZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5Om51bGxwdHJdOworfQor
CistIChpbnN0YW5jZXR5cGUpCisgICAgaW5pdFdpdGhOYXRpdmVBdWRpb0VuY29kZXJGYWN0b3J5
OgorICAgICAgICAocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9FbmNvZGVyRmFjdG9y
eT4pYXVkaW9FbmNvZGVyRmFjdG9yeQorICAgICAgICAgICAgbmF0aXZlQXVkaW9EZWNvZGVyRmFj
dG9yeToKKyAgICAgICAgICAgICAgICAocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9E
ZWNvZGVyRmFjdG9yeT4pYXVkaW9EZWNvZGVyRmFjdG9yeQorICAgICAgICAgICAgbmF0aXZlVmlk
ZW9FbmNvZGVyRmFjdG9yeToKKyAgICAgICAgICAgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0
Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4pdmlkZW9FbmNvZGVyRmFjdG9yeQorICAgICAgICAgICAg
bmF0aXZlVmlkZW9EZWNvZGVyRmFjdG9yeToKKyAgICAgICAgICAgICAgICAoc3RkOjp1bmlxdWVf
cHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4pdmlkZW9EZWNvZGVyRmFjdG9yeQorICAg
ICAgICAgICAgICAgICAgICBhdWRpb0RldmljZU1vZHVsZToobnVsbGFibGUgd2VicnRjOjpBdWRp
b0RldmljZU1vZHVsZSAqKWF1ZGlvRGV2aWNlTW9kdWxlCisgICAgICAgICAgICAgICAgYXVkaW9Q
cm9jZXNzaW5nTW9kdWxlOgorICAgICAgICAgICAgICAgICAgICAocnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPilhdWRpb1Byb2Nlc3NpbmdNb2R1bGUKKyAgICAgICAg
ICAgICAgICBtZWRpYVRyYW5zcG9ydEZhY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIChzdGQ6
OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+KW1lZGlhVHJhbnNwb3J0
RmFjdG9yeSB7CiAjaWZkZWYgSEFWRV9OT19NRURJQQogICByZXR1cm4gW3NlbGYgaW5pdFdpdGhO
b01lZGlhXTsKICNlbHNlCiAgIGlmIChzZWxmID0gW3NlbGYgaW5pdE5hdGl2ZV0pIHsKLSAgICBf
bmF0aXZlRmFjdG9yeSA9IHdlYnJ0Yzo6Q3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KF9uZXR3
b3JrVGhyZWFkLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX3dvcmtlclRocmVhZC5nZXQoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zaWduYWxpbmdUaHJlYWQu
Z2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdWRpb0RldmljZU1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRW5jb2RlckZhY3RvcnksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0Rl
Y29kZXJGYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptb3ZlKHZpZGVvRW5jb2RlckZhY3RvcnkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3Zl
KHZpZGVvRGVjb2RlckZhY3RvcnkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgIC8vIGF1ZGlvIG1peGVyCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb1By
b2Nlc3NpbmdNb2R1bGUpOworICAgIGlmICghYXVkaW9Qcm9jZXNzaW5nTW9kdWxlKSBhdWRpb1By
b2Nlc3NpbmdNb2R1bGUgPSB3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUo
KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4g
bWVkaWFfZW5naW5lID0KKyAgICAgICAgY3JpY2tldDo6V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5
OjpDcmVhdGUoYXVkaW9EZXZpY2VNb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRW5jb2RlckZhY3RvcnksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGVjb2RlckZhY3Rvcnks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bW92ZSh2aWRlb0VuY29kZXJGYWN0b3J5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHZpZGVvRGVjb2RlckZhY3RvcnkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCAg
Ly8gYXVkaW8gbWl4ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjx3
ZWJydGM6OkNhbGxGYWN0b3J5SW50ZXJmYWNlPiBjYWxsX2ZhY3RvcnkgPSB3ZWJydGM6OkNyZWF0
ZUNhbGxGYWN0b3J5KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpSdGNFdmVudExv
Z0ZhY3RvcnlJbnRlcmZhY2U+IGV2ZW50X2xvZ19mYWN0b3J5ID0KKyAgICAgICAgd2VicnRjOjpD
cmVhdGVSdGNFdmVudExvZ0ZhY3RvcnkoKTsKKyAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFj
dG9yeURlcGVuZGVuY2llcyBkZXBlbmRlbmNpZXM7CisgICAgZGVwZW5kZW5jaWVzLm5ldHdvcmtf
dGhyZWFkID0gX25ldHdvcmtUaHJlYWQuZ2V0KCk7CisgICAgZGVwZW5kZW5jaWVzLndvcmtlcl90
aHJlYWQgPSBfd29ya2VyVGhyZWFkLmdldCgpOworICAgIGRlcGVuZGVuY2llcy5zaWduYWxpbmdf
dGhyZWFkID0gX3NpZ25hbGluZ1RocmVhZC5nZXQoKTsKKyAgICBkZXBlbmRlbmNpZXMubWVkaWFf
ZW5naW5lID0gc3RkOjptb3ZlKG1lZGlhX2VuZ2luZSk7CisgICAgZGVwZW5kZW5jaWVzLmNhbGxf
ZmFjdG9yeSA9IHN0ZDo6bW92ZShjYWxsX2ZhY3RvcnkpOworICAgIGRlcGVuZGVuY2llcy5ldmVu
dF9sb2dfZmFjdG9yeSA9IHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSk7CisgICAgZGVwZW5k
ZW5jaWVzLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gc3RkOjptb3ZlKG1lZGlhVHJhbnNwb3J0
RmFjdG9yeSk7CisgICAgX25hdGl2ZUZhY3RvcnkgPSB3ZWJydGM6OkNyZWF0ZU1vZHVsYXJQZWVy
Q29ubmVjdGlvbkZhY3Rvcnkoc3RkOjptb3ZlKGRlcGVuZGVuY2llcykpOwogICAgIE5TQXNzZXJ0
KF9uYXRpdmVGYWN0b3J5LCBAIkZhaWxlZCB0byBpbml0aWFsaXplIFBlZXJDb25uZWN0aW9uRmFj
dG9yeSEiKTsKICAgfQogICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENQZWVyQ29ubmVjdGlvbkZhY3RvcnlCdWlsZGVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJD
b25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIubW0KaW5kZXggYTI2YTYzOWUyOGU0NGYyMWI4YzI3NTZk
NGZkMGMyMTM3ZDI3MTE1Yy4uMGFkYWEzMGU0ZjA4ODk0NmI2ZGY0NzUwNGZjNWI5MTE4OWZiZWFm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxk
ZXIubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIu
bW0KQEAgLTEzLDYgKzEzLDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNv
ZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5o
IgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgpAQCAtMjUs
NiArMjYsNyBAQCBAaW1wbGVtZW50YXRpb24gUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRl
ciB7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVjb2RlckZhY3Rvcnk+IF9h
dWRpb0RlY29kZXJGYWN0b3J5OwogICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0Rl
dmljZU1vZHVsZT4gX2F1ZGlvRGV2aWNlTW9kdWxlOwogICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1Byb2Nlc3Npbmc+IF9hdWRpb1Byb2Nlc3NpbmdNb2R1bGU7CisgIHN0ZDo6dW5p
cXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gX21lZGlhVHJhbnNwb3J0RmFj
dG9yeTsKIH0KIAogKyAoUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlciAqKWJ1aWxkZXIg
ewpAQCAtMzgsNyArNDAsOCBAQCAtIChSVENQZWVyQ29ubmVjdGlvbkZhY3RvcnkgKiljcmVhdGVQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVW
aWRlb0VuY29kZXJGYWN0b3J5OnN0ZDo6bW92ZShfdmlkZW9FbmNvZGVyRmFjdG9yeSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmF0aXZlVmlkZW9EZWNvZGVyRmFjdG9yeTpzdGQ6Om1vdmUo
X3ZpZGVvRGVjb2RlckZhY3RvcnkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXVkaW9EZXZpY2VNb2R1bGU6X2F1ZGlvRGV2aWNlTW9kdWxlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6X2F1ZGlvUHJvY2Vzc2luZ01vZHVsZV07
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6X2F1
ZGlvUHJvY2Vzc2luZ01vZHVsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFU
cmFuc3BvcnRGYWN0b3J5OnN0ZDo6bW92ZShfbWVkaWFUcmFuc3BvcnRGYWN0b3J5KV07CiB9CiAK
IC0gKHZvaWQpc2V0VmlkZW9FbmNvZGVyRmFjdG9yeTooc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6
VmlkZW9FbmNvZGVyRmFjdG9yeT4pdmlkZW9FbmNvZGVyRmFjdG9yeSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVl
cmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5T3B0aW9ucy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0
aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeU9wdGlvbnMuaAppbmRleCBhZjMyN2Y5ODdiMjdi
Y2E3N2IxNDhkMzBmOTgwZDk2MjY0NmIzZGY3Li40YmVjODY5NWJkYmYxOTc5ZjUwNzM5ZWY5NWM2
NGFkZTEzNTkwYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb25G
YWN0b3J5T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3Rv
cnlPcHRpb25zLmgKQEAgLTMxLDEwICszMSw2IEBAIFJUQ19PQkpDX0VYUE9SVAogCiBAcHJvcGVy
dHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgaWdub3JlRXRoZXJuZXROZXR3b3JrQWRhcHRlcjsK
IAotQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIGVuYWJsZUFlczEyOFNoYTFfMzJD
cnlwdG9DaXBoZXI7Ci0KLUBwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9PTCBlbmFibGVH
Y21DcnlwdG9TdWl0ZXM7Ci0KIC0gKGluc3RhbmNldHlwZSlpbml0IE5TX0RFU0lHTkFURURfSU5J
VElBTElaRVI7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVj
dGlvbkZhY3RvcnlPcHRpb25zLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFj
dG9yeU9wdGlvbnMubW0KaW5kZXggMTAzYTEzMDM5MGMwNjJiYzZlYzc2Y2EwYWU3N2MwZjUyZmVj
M2ZlOS4uZjBjYzZhNmM4MWYwYzExZWY2MjJjZTJiM2UyODNlMjkzYmQyMGEzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBp
L3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeU9wdGlvbnMubW0KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3Bl
ZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeU9wdGlvbnMubW0KQEAgLTM0LDgg
KzM0LDYgQEAgQHN5bnRoZXNpemUgaWdub3JlVlBOTmV0d29ya0FkYXB0ZXIgPSBfaWdub3JlVlBO
TmV0d29ya0FkYXB0ZXI7CiBAc3ludGhlc2l6ZSBpZ25vcmVDZWxsdWxhck5ldHdvcmtBZGFwdGVy
ID0gX2lnbm9yZUNlbGx1bGFyTmV0d29ya0FkYXB0ZXI7CiBAc3ludGhlc2l6ZSBpZ25vcmVXaUZp
TmV0d29ya0FkYXB0ZXIgPSBfaWdub3JlV2lGaU5ldHdvcmtBZGFwdGVyOwogQHN5bnRoZXNpemUg
aWdub3JlRXRoZXJuZXROZXR3b3JrQWRhcHRlciA9IF9pZ25vcmVFdGhlcm5ldE5ldHdvcmtBZGFw
dGVyOwotQHN5bnRoZXNpemUgZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlciA9IF9lbmFi
bGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOwotQHN5bnRoZXNpemUgZW5hYmxlR2NtQ3J5cHRv
U3VpdGVzID0gX2VuYWJsZUdjbUNyeXB0b1N1aXRlczsKIAogLSAoaW5zdGFuY2V0eXBlKWluaXQg
ewogICByZXR1cm4gW3N1cGVyIGluaXRdOwpAQCAtNTIsOSArNTAsNiBAQCAtICh3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0aW9ucyluYXRpdmVPcHRpb25zIHsKICAg
c2V0TmV0d29ya0JpdCgmb3B0aW9ucywgcnRjOjpBREFQVEVSX1RZUEVfV0lGSSwgc2VsZi5pZ25v
cmVXaUZpTmV0d29ya0FkYXB0ZXIpOwogICBzZXROZXR3b3JrQml0KCZvcHRpb25zLCBydGM6OkFE
QVBURVJfVFlQRV9FVEhFUk5FVCwgc2VsZi5pZ25vcmVFdGhlcm5ldE5ldHdvcmtBZGFwdGVyKTsK
IAotICBvcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9f
Y2lwaGVyID0gc2VsZi5lbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOwotICBvcHRpb25z
LmNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHNlbGYuZW5hYmxlR2Nt
Q3J5cHRvU3VpdGVzOwotCiAgIHJldHVybiBvcHRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNv
bm5lY3Rpb24vUlRDUnRwVHJhbnNjZWl2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENSdHBUcmFuc2Nl
aXZlci5oCmluZGV4IDhiOTYyZTQ4ODRiMTQyZjI5YjQ2MjZiYTcwZDQ4NmUyYjJmOWI2NzUuLjhl
ZjNmYzFkNDJlN2EzMDE3ODYwOGUzNjQxYWU5OGRlYzdiYTdmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29u
bmVjdGlvbi9SVENSdHBUcmFuc2NlaXZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENSdHBUcmFu
c2NlaXZlci5oCkBAIC0yOCw2ICsyOCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFJU
Q1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uKSB7CiAgKiAgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJh
bnNjZWl2ZXIuCiAgKiAgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1wYy8jZG9tLXJ0Y3J0
cHRyYW5zY2VpdmVyaW5pdAogICovCitSVENfT0JKQ19FWFBPUlQKIEBpbnRlcmZhY2UgUlRDUnRw
VHJhbnNjZWl2ZXJJbml0IDogTlNPYmplY3QKIAogLyoqIERpcmVjdGlvbiBvZiB0aGUgUlRDUnRw
VHJhbnNjZWl2ZXIuIFNlZSBSVENSdHBUcmFuc2NlaXZlci5kaXJlY3Rpb24uICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9h
cGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9Tb3VyY2UrUHJpdmF0ZS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9u
L1JUQ1ZpZGVvU291cmNlK1ByaXZhdGUuaAppbmRleCAyNDQxZTBjZGJlNjI0OGFhZWJiM2U4OGVl
NDA5MjU3ZDQ0ZDBlZmU2Li44MjhhYWQ4N2JkMDc0OThjZTk0MmUyODUxZGQ5NWEwYmQ5MWFiOTY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9Tb3VyY2UrUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9w
ZWVyY29ubmVjdGlvbi9SVENWaWRlb1NvdXJjZStQcml2YXRlLmgKQEAgLTEzLDYgKzEzLDcgQEAK
ICNpbXBvcnQgIlJUQ01lZGlhU291cmNlK1ByaXZhdGUuaCIKIAogI2luY2x1ZGUgImFwaS9tZWRp
YXN0cmVhbWludGVyZmFjZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogCiBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0xvZ2dpbmcuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDTG9nZ2lu
Zy5oCmluZGV4IGJlNjJkYjI1YjU2OWM4NDQzZWUwNTI1Y2IyODVhZmRjNTZjNjFmZmMuLmIyMGE0
YjRkNDI4YjU4MDYwMGUwNzQ2NGMzNjYwMjQxZWVkMTMzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDTG9nZ2lu
Zy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2Jhc2UvUlRDTG9nZ2luZy5oCkBAIC0xNCwxMCArMTQsMTIgQEAKIAogLy8gU3Vic2V0IG9m
IHJ0Yzo6TG9nZ2luZ1NldmVyaXR5LgogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUlRDTG9n
Z2luZ1NldmVyaXR5KSB7CisgIFJUQ0xvZ2dpbmdTZXZlcml0eVNlbnNpdGl2ZSwKICAgUlRDTG9n
Z2luZ1NldmVyaXR5VmVyYm9zZSwKICAgUlRDTG9nZ2luZ1NldmVyaXR5SW5mbywKICAgUlRDTG9n
Z2luZ1NldmVyaXR5V2FybmluZywKICAgUlRDTG9nZ2luZ1NldmVyaXR5RXJyb3IsCisgIFJUQ0xv
Z2dpbmdTZXZlcml0eU5vbmUsCiB9OwogCiAvLyBXcmFwcGVyIGZvciBDKysgUlRDX0xPRyhzZXYp
IG1hY3Jvcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDTG9nZ2luZy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDTG9nZ2luZy5tbQppbmRleCA1
YzhmOWZiNGY4YmY5NDRmMTgxOGY0NDg0ZGFmY2E1NDMwZjYxYTlhLi4zYWFlNDdhMjQwY2M0MDBh
MmIyZmYwYjBiZjFiZjAzNDU0MzY5Mzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0xvZ2dpbmcubW0KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9S
VENMb2dnaW5nLm1tCkBAIC0xNCw2ICsxNCw4IEBACiAKIHJ0Yzo6TG9nZ2luZ1NldmVyaXR5IFJU
Q0dldE5hdGl2ZUxvZ2dpbmdTZXZlcml0eShSVENMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkpIHsK
ICAgc3dpdGNoIChzZXZlcml0eSkgeworICAgIGNhc2UgUlRDTG9nZ2luZ1NldmVyaXR5U2Vuc2l0
aXZlOgorICAgICAgcmV0dXJuIHJ0Yzo6TFNfU0VOU0lUSVZFOwogICAgIGNhc2UgUlRDTG9nZ2lu
Z1NldmVyaXR5VmVyYm9zZToKICAgICAgIHJldHVybiBydGM6OkxTX1ZFUkJPU0U7CiAgICAgY2Fz
ZSBSVENMb2dnaW5nU2V2ZXJpdHlJbmZvOgpAQCAtMjIsNiArMjQsOCBAQCBydGM6OkxvZ2dpbmdT
ZXZlcml0eSBSVENHZXROYXRpdmVMb2dnaW5nU2V2ZXJpdHkoUlRDTG9nZ2luZ1NldmVyaXR5IHNl
dmVyaXR5KSB7CiAgICAgICByZXR1cm4gcnRjOjpMU19XQVJOSU5HOwogICAgIGNhc2UgUlRDTG9n
Z2luZ1NldmVyaXR5RXJyb3I6CiAgICAgICByZXR1cm4gcnRjOjpMU19FUlJPUjsKKyAgICBjYXNl
IFJUQ0xvZ2dpbmdTZXZlcml0eU5vbmU6CisgICAgICByZXR1cm4gcnRjOjpMU19OT05FOwogICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvY2FwdHVyZXIvUlRDQ2FtZXJhVmlkZW9DYXB0dXJlci5t
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy9jYXB0dXJlci9SVENDYW1lcmFWaWRlb0NhcHR1cmVyLm0KaW5kZXggMjkwOTQwNWU3
ZDhjNTExYzU4MDA0OGMzODFkYmYzZmJhMzJlZGU5Ny4uZGI4MzNiMzk4Y2JmMWNjMTIxMWQ5OTZk
M2IyMWY5NzU3MjI0ODg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9jYXB0dXJlci9SVENDYW1lcmFWaWRl
b0NhcHR1cmVyLm0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy9jYXB0dXJlci9SVENDYW1lcmFWaWRlb0NhcHR1cmVyLm0K
QEAgLTI2LDE4ICsyNiwxOCBAQAogCiBAaW50ZXJmYWNlIFJUQ0NhbWVyYVZpZGVvQ2FwdHVyZXIg
KCk8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0U2FtcGxlQnVmZmVyRGVsZWdhdGU+CiBAcHJvcGVy
dHkobm9uYXRvbWljLCByZWFkb25seSkgZGlzcGF0Y2hfcXVldWVfdCBmcmFtZVF1ZXVlOworQHBy
b3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBBVkNhcHR1cmVEZXZpY2UgKmN1cnJlbnREZXZpY2U7
CitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgaGFzUmV0cmllZE9uRmF0YWxFcnJv
cjsKK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9PTCBpc1J1bm5pbmc7CisvLyBXaWxs
IHRoZSBzZXNzaW9uIGJlIHJ1bm5pbmcgb25jZSBhbGwgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMg
aGF2ZSBiZWVuIGNvbXBsZXRlZD8KK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9PTCB3
aWxsQmVSdW5uaW5nOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gUlRDQ2FtZXJhVmlkZW9DYXB0
dXJlciB7CiAgIEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dCAqX3ZpZGVvRGF0YU91dHB1dDsKICAg
QVZDYXB0dXJlU2Vzc2lvbiAqX2NhcHR1cmVTZXNzaW9uOwotICBBVkNhcHR1cmVEZXZpY2UgKl9j
dXJyZW50RGV2aWNlOwogICBGb3VyQ2hhckNvZGUgX3ByZWZlcnJlZE91dHB1dFBpeGVsRm9ybWF0
OwogICBGb3VyQ2hhckNvZGUgX291dHB1dFBpeGVsRm9ybWF0OwotICBCT09MIF9oYXNSZXRyaWVk
T25GYXRhbEVycm9yOwotICBCT09MIF9pc1J1bm5pbmc7Ci0gIC8vIFdpbGwgdGhlIHNlc3Npb24g
YmUgcnVubmluZyBvbmNlIGFsbCBhc3luY2hyb25vdXMgb3BlcmF0aW9ucyBoYXZlIGJlZW4gY29t
cGxldGVkPwotICBCT09MIF93aWxsQmVSdW5uaW5nOwogICBSVENWaWRlb1JvdGF0aW9uIF9yb3Rh
dGlvbjsKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAgIFVJRGV2aWNlT3JpZW50YXRpb24gX29yaWVu
dGF0aW9uOwpAQCAtNDYsNiArNDYsMTAgQEAgQGltcGxlbWVudGF0aW9uIFJUQ0NhbWVyYVZpZGVv
Q2FwdHVyZXIgewogCiBAc3ludGhlc2l6ZSBmcmFtZVF1ZXVlID0gX2ZyYW1lUXVldWU7CiBAc3lu
dGhlc2l6ZSBjYXB0dXJlU2Vzc2lvbiA9IF9jYXB0dXJlU2Vzc2lvbjsKK0BzeW50aGVzaXplIGN1
cnJlbnREZXZpY2UgPSBfY3VycmVudERldmljZTsKK0BzeW50aGVzaXplIGhhc1JldHJpZWRPbkZh
dGFsRXJyb3IgPSBfaGFzUmV0cmllZE9uRmF0YWxFcnJvcjsKK0BzeW50aGVzaXplIGlzUnVubmlu
ZyA9IF9pc1J1bm5pbmc7CitAc3ludGhlc2l6ZSB3aWxsQmVSdW5uaW5nID0gX3dpbGxCZVJ1bm5p
bmc7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0IHsKICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRGVs
ZWdhdGU6bmlsIGNhcHR1cmVTZXNzaW9uOltbQVZDYXB0dXJlU2Vzc2lvbiBhbGxvY10gaW5pdF1d
OwpAQCAtMTU3LDI1ICsxNjEsMjYgQEAgLSAodm9pZClzdGFydENhcHR1cmVXaXRoRGV2aWNlOihB
VkNhcHR1cmVEZXZpY2UgKilkZXZpY2UKICAgICAgICAgICAgICAgICAgICAgICBbW1VJRGV2aWNl
IGN1cnJlbnREZXZpY2VdIGJlZ2luR2VuZXJhdGluZ0RldmljZU9yaWVudGF0aW9uTm90aWZpY2F0
aW9uc107CiAjZW5kaWYKIAotICAgICAgICAgICAgICAgICAgICAgIF9jdXJyZW50RGV2aWNlID0g
ZGV2aWNlOworICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudERldmljZSA9IGRldmlj
ZTsKIAogICAgICAgICAgICAgICAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgICAg
ICAgICAgICAgICAgICAgIGlmICghW19jdXJyZW50RGV2aWNlIGxvY2tGb3JDb25maWd1cmF0aW9u
OiZlcnJvcl0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJUQ0xvZ0Vycm9yKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEAiRmFpbGVkIHRvIGxvY2sgZGV2aWNlICVALiBFcnJvcjog
JUAiLCBfY3VycmVudERldmljZSwgZXJyb3IudXNlckluZm8pOworICAgICAgICAgICAgICAgICAg
ICAgIGlmICghW3NlbGYuY3VycmVudERldmljZSBsb2NrRm9yQ29uZmlndXJhdGlvbjomZXJyb3Jd
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSVENMb2dFcnJvcihAIkZhaWxlZCB0byBsb2Nr
IGRldmljZSAlQC4gRXJyb3I6ICVAIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuY3VycmVudERldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVycm9yLnVzZXJJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV0
aW9uSGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBfd2lsbEJlUnVubmluZyA9IE5POworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53
aWxsQmVSdW5uaW5nID0gTk87CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgIFtzZWxmIHJlY29uZmln
dXJlQ2FwdHVyZVNlc3Npb25JbnB1dF07CiAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYgdXBk
YXRlT3JpZW50YXRpb25dOwogICAgICAgICAgICAgICAgICAgICAgIFtzZWxmIHVwZGF0ZURldmlj
ZUNhcHR1cmVGb3JtYXQ6Zm9ybWF0IGZwczpmcHNdOwogICAgICAgICAgICAgICAgICAgICAgIFtz
ZWxmIHVwZGF0ZVZpZGVvRGF0YU91dHB1dFBpeGVsRm9ybWF0OmZvcm1hdF07Ci0gICAgICAgICAg
ICAgICAgICAgICAgW19jYXB0dXJlU2Vzc2lvbiBzdGFydFJ1bm5pbmddOwotICAgICAgICAgICAg
ICAgICAgICAgIFtfY3VycmVudERldmljZSB1bmxvY2tGb3JDb25maWd1cmF0aW9uXTsKLSAgICAg
ICAgICAgICAgICAgICAgICBfaXNSdW5uaW5nID0gWUVTOworICAgICAgICAgICAgICAgICAgICAg
IFtzZWxmLmNhcHR1cmVTZXNzaW9uIHN0YXJ0UnVubmluZ107CisgICAgICAgICAgICAgICAgICAg
ICAgW3NlbGYuY3VycmVudERldmljZSB1bmxvY2tGb3JDb25maWd1cmF0aW9uXTsKKyAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmlzUnVubmluZyA9IFlFUzsKICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG5pbCk7CiAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTg4LDE2ICsx
OTMsMTYgQEAgLSAodm9pZClzdG9wQ2FwdHVyZVdpdGhDb21wbGV0aW9uSGFuZGxlcjoobnVsbGFi
bGUgdm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmQKICAgICAgIGRpc3BhdGNoQXN5bmNPblR5
cGU6UlRDRGlzcGF0Y2hlclR5cGVDYXB0dXJlU2Vzc2lvbgogICAgICAgICAgICAgICAgICAgICBi
bG9jazpeewogICAgICAgICAgICAgICAgICAgICAgIFJUQ0xvZ0luZm8oIlN0b3AiKTsKLSAgICAg
ICAgICAgICAgICAgICAgICBfY3VycmVudERldmljZSA9IG5pbDsKLSAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKEFWQ2FwdHVyZURldmljZUlucHV0ICpvbGRJbnB1dCBpbiBbX2NhcHR1cmVTZXNz
aW9uLmlucHV0cyBjb3B5XSkgewotICAgICAgICAgICAgICAgICAgICAgICAgW19jYXB0dXJlU2Vz
c2lvbiByZW1vdmVJbnB1dDpvbGRJbnB1dF07CisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5j
dXJyZW50RGV2aWNlID0gbmlsOworICAgICAgICAgICAgICAgICAgICAgIGZvciAoQVZDYXB0dXJl
RGV2aWNlSW5wdXQgKm9sZElucHV0IGluIFtzZWxmLmNhcHR1cmVTZXNzaW9uLmlucHV0cyBjb3B5
XSkgeworICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY2FwdHVyZVNlc3Npb24gcmVtb3Zl
SW5wdXQ6b2xkSW5wdXRdOwogICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICBbX2NhcHR1cmVTZXNzaW9uIHN0b3BSdW5uaW5nXTsKKyAgICAgICAgICAgICAgICAg
ICAgICBbc2VsZi5jYXB0dXJlU2Vzc2lvbiBzdG9wUnVubmluZ107CiAKICNpZiBUQVJHRVRfT1Nf
SVBIT05FCiAgICAgICAgICAgICAgICAgICAgICAgW1tVSURldmljZSBjdXJyZW50RGV2aWNlXSBl
bmRHZW5lcmF0aW5nRGV2aWNlT3JpZW50YXRpb25Ob3RpZmljYXRpb25zXTsKICNlbmRpZgotICAg
ICAgICAgICAgICAgICAgICAgIF9pc1J1bm5pbmcgPSBOTzsKKyAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmlzUnVubmluZyA9IE5POwogICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV0
aW9uSGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0zNDAsNyArMzQ1LDcgQEAgLSAodm9pZClo
YW5kbGVDYXB0dXJlU2Vzc2lvbkRpZFN0YXJ0UnVubmluZzooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzdWNjZXNzZnVsbHkgcmVzdGFy
dGVkIGFmdGVyIGFuIHVua25vd24gZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBhbGxvdyBmdXR1cmUgcmV0cmllcyBvbiBmYXRhbCBlcnJvcnMuCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfaGFzUmV0cmllZE9uRmF0YWxFcnJvciA9IE5POworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYXNSZXRyaWVkT25GYXRhbEVycm9y
ID0gTk87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV07CiB9CiAKQEAgLTM1Miwx
MCArMzU3LDEwIEBAIC0gKHZvaWQpaGFuZGxlRmF0YWxFcnJvciB7CiAgIFtSVENEaXNwYXRjaGVy
CiAgICAgICBkaXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3BhdGNoZXJUeXBlQ2FwdHVyZVNlc3Np
b24KICAgICAgICAgICAgICAgICAgICAgYmxvY2s6XnsKLSAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIV9oYXNSZXRyaWVkT25GYXRhbEVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFzZWxmLmhhc1JldHJpZWRPbkZhdGFsRXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IFJUQ0xvZ1dhcm5pbmcoQCJBdHRlbXB0aW5nIHRvIHJlY292ZXIgZnJvbSBmYXRhbCBjYXB0dXJl
IGVycm9yLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYgaGFuZGxlTm9uRmF0YWxF
cnJvcl07Ci0gICAgICAgICAgICAgICAgICAgICAgICBfaGFzUmV0cmllZE9uRmF0YWxFcnJvciA9
IFlFUzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFzUmV0cmllZE9uRmF0YWxFcnJv
ciA9IFlFUzsKICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgUlRDTG9nRXJyb3IoQCJQcmV2aW91cyBmYXRhbCBlcnJvciByZWNvdmVyeSBmYWls
ZWQuIik7CiAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzY2LDggKzM3MSw4IEBAIC0gKHZv
aWQpaGFuZGxlTm9uRmF0YWxFcnJvciB7CiAgIFtSVENEaXNwYXRjaGVyIGRpc3BhdGNoQXN5bmNP
blR5cGU6UlRDRGlzcGF0Y2hlclR5cGVDYXB0dXJlU2Vzc2lvbgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJsb2NrOl57CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
VENMb2coQCJSZXN0YXJ0aW5nIGNhcHR1cmUgc2Vzc2lvbiBhZnRlciBlcnJvci4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNSdW5uaW5nKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtfY2FwdHVyZVNlc3Npb24gc3RhcnRSdW5uaW5nXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmlzUnVubmluZykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5jYXB0dXJlU2Vzc2lvbiBz
dGFydFJ1bm5pbmddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH1dOwogfQpAQCAtMzc5LDkgKzM4NCw5IEBAIC0gKHZv
aWQpaGFuZGxlTm9uRmF0YWxFcnJvciB7CiAtICh2b2lkKWhhbmRsZUFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbiB7CiAgIFtSVENEaXNwYXRj
aGVyIGRpc3BhdGNoQXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hlclR5cGVDYXB0dXJlU2Vzc2lvbgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoX2lzUnVubmluZyAmJiAhX2NhcHR1cmVTZXNzaW9uLmlzUnVu
bmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuaXNSdW5u
aW5nICYmICFzZWxmLmNhcHR1cmVTZXNzaW9uLmlzUnVubmluZykgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSVENMb2coQCJSZXN0YXJ0aW5nIGNhcHR1cmUgc2Vzc2lvbiBv
biBhY3RpdmUuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfY2FwdHVy
ZVNlc3Npb24gc3RhcnRSdW5uaW5nXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW3NlbGYuY2FwdHVyZVNlc3Npb24gc3RhcnRSdW5uaW5nXTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2NvbXBvbmVudHMvY2FwdHVyZXIvUlRDRmlsZVZpZGVvQ2FwdHVyZXIubSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMv
Y2FwdHVyZXIvUlRDRmlsZVZpZGVvQ2FwdHVyZXIubQppbmRleCAwMDE0M2U5MDlmZDBhYTAyZmU3
NzFmODBkNzkwZTk2Nzc4NDg3OTlhLi4yMDdhMjFkOGMwZDNmNjkxNWQyMjhhZjRjYzIxZDJiZDgw
NTAwYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL2NhcHR1cmVyL1JUQ0ZpbGVWaWRlb0NhcHR1cmVyLm0K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
Y29tcG9uZW50cy9jYXB0dXJlci9SVENGaWxlVmlkZW9DYXB0dXJlci5tCkBAIC0yNywxNSArMjcs
MjEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUlRDRmlsZVZpZGVvQ2FwdHVyZXJTdGF0
dXMpIHsKICAgUlRDRmlsZVZpZGVvQ2FwdHVyZXJTdGF0dXNTdG9wcGVkCiB9OwogCitAaW50ZXJm
YWNlIFJUQ0ZpbGVWaWRlb0NhcHR1cmVyICgpCitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24p
IENNVGltZSBsYXN0UHJlc2VudGF0aW9uVGltZTsKK0Bwcm9wZXJ0eShub25hdG9taWMsIHN0cm9u
ZykgTlNVUkwgKmZpbGVVUkw7CitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBSVENGaWxlVmlkZW9D
YXB0dXJlciB7CiAgIEFWQXNzZXRSZWFkZXIgKl9yZWFkZXI7CiAgIEFWQXNzZXRSZWFkZXJUcmFj
a091dHB1dCAqX291dFRyYWNrOwogICBSVENGaWxlVmlkZW9DYXB0dXJlclN0YXR1cyBfc3RhdHVz
OwotICBDTVRpbWUgX2xhc3RQcmVzZW50YXRpb25UaW1lOwogICBkaXNwYXRjaF9xdWV1ZV90IF9m
cmFtZVF1ZXVlOwotICBOU1VSTCAqX2ZpbGVVUkw7CiB9CiAKK0BzeW50aGVzaXplIGxhc3RQcmVz
ZW50YXRpb25UaW1lID0gX2xhc3RQcmVzZW50YXRpb25UaW1lOworQHN5bnRoZXNpemUgZmlsZVVS
TCA9IF9maWxlVVJMOworCiAtICh2b2lkKXN0YXJ0Q2FwdHVyaW5nRnJvbUZpbGVOYW1lZDooTlNT
dHJpbmcgKiluYW1lT2ZGaWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcjoo
UlRDRmlsZVZpZGVvQ2FwdHVyZXJFcnJvckJsb2NrKWVycm9yQmxvY2sgewogICBpZiAoX3N0YXR1
cyA9PSBSVENGaWxlVmlkZW9DYXB0dXJlclN0YXR1c1N0YXJ0ZWQpIHsKQEAgLTYyLDkgKzY4LDkg
QEAgLSAodm9pZClzdGFydENhcHR1cmluZ0Zyb21GaWxlTmFtZWQ6KE5TU3RyaW5nICopbmFtZU9m
RmlsZQogICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9sYXN0UHJlc2VudGF0aW9uVGltZSA9
IENNVGltZU1ha2UoMCwgMCk7CisgICAgc2VsZi5sYXN0UHJlc2VudGF0aW9uVGltZSA9IENNVGlt
ZU1ha2UoMCwgMCk7CiAKLSAgICBfZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0
aEZvckZpbGVdOworICAgIHNlbGYuZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0
aEZvckZpbGVdOwogICAgIFtzZWxmIHNldHVwUmVhZGVyT25FcnJvcjplcnJvckJsb2NrXTsKICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRlcmVyL21ldGFsL1JUQ01UTFJlbmRlcmVyLm1t
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy9yZW5kZXJlci9tZXRhbC9SVENNVExSZW5kZXJlci5tbQppbmRleCA4ZjM3MmJjZGJk
ODE1MmZiZDI1Y2NkNGJhM2ViZWNmMTFmMWFkZTVhLi5mYjQ3OGQyNTMzMWU5Y2NlYzE0OTQwMTJm
NjAyMDk2NzdmOTFmNjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRlcmVyL21ldGFsL1JUQ01UTFJl
bmRlcmVyLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvcmVuZGVyZXIvbWV0YWwvUlRDTVRMUmVuZGVyZXIubW0KQEAg
LTE3Niw3ICsxNzYsOCBAQCAtIChCT09MKXNldHVwVGV4dHVyZXNGb3JGcmFtZToobm9ubnVsbCBS
VENWaWRlb0ZyYW1lICopZnJhbWUgewogICBSVENWaWRlb1JvdGF0aW9uIHJvdGF0aW9uOwogICBO
U1ZhbHVlICpyb3RhdGlvbk92ZXJyaWRlID0gc2VsZi5yb3RhdGlvbk92ZXJyaWRlOwogICBpZiAo
cm90YXRpb25PdmVycmlkZSkgewotI2lmIGRlZmluZWQoX19JUEhPTkVfMTFfMCkgJiYgKF9fSVBI
T05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gX19JUEhPTkVfMTFfMCkKKyNpZiBkZWZpbmVk
KF9fSVBIT05FXzExXzApICYmIGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dF
RCkgJiYgXAorICAgIChfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IF9fSVBIT05F
XzExXzApCiAgICAgaWYgKEBhdmFpbGFibGUoaU9TIDExLCAqKSkgewogICAgICAgW3JvdGF0aW9u
T3ZlcnJpZGUgZ2V0VmFsdWU6JnJvdGF0aW9uIHNpemU6c2l6ZW9mKHJvdGF0aW9uKV07CiAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRlcmVyL21ldGFsL1JUQ01UTFZpZGVvVmlldy5t
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy9yZW5kZXJlci9tZXRhbC9SVENNVExWaWRlb1ZpZXcubQppbmRleCA3YWQxZDc5ZDNl
M2Y2ZDYzYmU0NmRmZTA4NjExNjE4MTFhOWFhNTQzLi5mODU3NWMwY2ZlZDUyZmM0YTU1YjhmNjIx
NWZlOGIzY2I1ODY1NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRlcmVyL21ldGFsL1JUQ01UTFZp
ZGVvVmlldy5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvcmVuZGVyZXIvbWV0YWwvUlRDTVRMVmlkZW9WaWV3Lm0KQEAg
LTE0MSw2ICsxNDEsMTAgQEAgLSAodm9pZClkcmF3SW5NVEtWaWV3Oihub25udWxsIE1US1ZpZXcg
Kil2aWV3IHsKICAgICByZXR1cm47CiAgIH0KIAorICBpZiAoQ0dSZWN0SXNFbXB0eSh2aWV3LmJv
dW5kcykpIHsKKyAgICByZXR1cm47CisgIH0KKwogICBSVENNVExSZW5kZXJlciAqcmVuZGVyZXI7
CiAgIGlmIChbdmlkZW9GcmFtZS5idWZmZXIgaXNLaW5kT2ZDbGFzczpbUlRDQ1ZQaXhlbEJ1ZmZl
ciBjbGFzc11dKSB7CiAgICAgUlRDQ1ZQaXhlbEJ1ZmZlciAqYnVmZmVyID0gKFJUQ0NWUGl4ZWxC
dWZmZXIqKXZpZGVvRnJhbWUuYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9S
VENWaWRlb0RlY29kZXJIMjY0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJI
MjY0Lm1tCmluZGV4IDYzMTcwMTMxODBkYWEzNzEyYWQ3MjIyNWUwZDZmOGE2MDU5YzUxNzcuLjFj
MThmYWIxN2RmOTY0NTYzZWVjZDhlMmU0MmVkZDBmMDgwZWU0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMv
dmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L1JUQ1ZpZGVvRGVjb2RlckgyNjQubW0KQEAgLTY3LDEyICs2NywyMyBAQCB2b2lkIGRlY29tcHJl
c3Npb25PdXRwdXRDYWxsYmFjayh2b2lkICpkZWNvZGVyUmVmLAogLy8gRGVjb2Rlci4KIEBpbXBs
ZW1lbnRhdGlvbiBSVENWaWRlb0RlY29kZXJIMjY0IHsKICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0
aW9uUmVmIF92aWRlb0Zvcm1hdDsKKyAgQ01NZW1vcnlQb29sUmVmIF9tZW1vcnlQb29sOwogICBW
VERlY29tcHJlc3Npb25TZXNzaW9uUmVmIF9kZWNvbXByZXNzaW9uU2Vzc2lvbjsKICAgUlRDVmlk
ZW9EZWNvZGVyQ2FsbGJhY2sgX2NhbGxiYWNrOwogICBPU1N0YXR1cyBfZXJyb3I7CiB9CiAKKy0g
KGluc3RhbmNldHlwZSlpbml0IHsKKyAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgaWYgKHNlbGYp
IHsKKyAgICBfbWVtb3J5UG9vbCA9IENNTWVtb3J5UG9vbENyZWF0ZShuaWwpOworICB9CisgIHJl
dHVybiBzZWxmOworfQorCiAtICh2b2lkKWRlYWxsb2MgeworICBDTU1lbW9yeVBvb2xJbnZhbGlk
YXRlKF9tZW1vcnlQb29sKTsKKyAgQ0ZSZWxlYXNlKF9tZW1vcnlQb29sKTsKICAgW3NlbGYgZGVz
dHJveURlY29tcHJlc3Npb25TZXNzaW9uXTsKICAgW3NlbGYgc2V0VmlkZW9Gb3JtYXQ6bnVsbHB0
cl07CiB9CkBAIC0xMjUsNyArMTM2LDggQEAgLSAoTlNJbnRlZ2VyKWRlY29kZTooUlRDRW5jb2Rl
ZEltYWdlICopaW5wdXRJbWFnZQogICBpZiAoIXdlYnJ0Yzo6SDI2NEFubmV4QkJ1ZmZlclRvQ01T
YW1wbGVCdWZmZXIoKHVpbnQ4X3QgKilpbnB1dEltYWdlLmJ1ZmZlci5ieXRlcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0SW1hZ2UuYnVmZmVy
Lmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF92aWRlb0Zvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZzYW1wbGVCdWZmZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmc2FtcGxlQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX21lbW9yeVBvb2wpKSB7CiAgICAgcmV0dXJuIFdFQlJU
Q19WSURFT19DT0RFQ19FUlJPUjsKICAgfQogICBSVENfRENIRUNLKHNhbXBsZUJ1ZmZlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL25hbHVfcmV3cml0ZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVv
X2NvZGVjL25hbHVfcmV3cml0ZXIuY2MKaW5kZXggYTg0OWQzZjA1M2UzOWQyMWUzOTAxZWQ0NTU5
YTc1MDg2MmQ0NmNmYS4uNTVlZDFjMmI0Y2EzNzAwZTA4MDRhZGUyY2JiZWEwZTgwN2IxZTVhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMv
dmlkZW9fY29kZWMvbmFsdV9yZXdyaXRlci5jYwpAQCAtMTYwLDcgKzE2MCw4IEBAIGJvb2wgSDI2
NENNU2FtcGxlQnVmZmVyVG9Bbm5leEJCdWZmZXIoCiBib29sIEgyNjRBbm5leEJCdWZmZXJUb0NN
U2FtcGxlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGFubmV4Yl9idWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhbm5leGJfYnVmZmVyX3NpemUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlv
blJlZiB2aWRlb19mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENNU2FtcGxlQnVmZmVyUmVmKiBvdXRfc2FtcGxlX2J1ZmZlcikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiogb3V0X3NhbXBsZV9idWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENNTWVtb3J5UG9vbFJl
ZiBtZW1vcnlfcG9vbCkgewogICBSVENfRENIRUNLKGFubmV4Yl9idWZmZXIpOwogICBSVENfRENI
RUNLKG91dF9zYW1wbGVfYnVmZmVyKTsKICAgUlRDX0RDSEVDSyh2aWRlb19mb3JtYXQpOwpAQCAt
MTg1LDExICsxODYsMTEgQEAgYm9vbCBIMjY0QW5uZXhCQnVmZmVyVG9DTVNhbXBsZUJ1ZmZlcihj
b25zdCB1aW50OF90KiBhbm5leGJfYnVmZmVyLAogICB9CiAKICAgLy8gQWxsb2NhdGUgbWVtb3J5
IGFzIGEgYmxvY2sgYnVmZmVyLgotICAvLyBUT0RPKHRrY2hpbik6IGZpZ3VyZSBvdXQgaG93IHRv
IHVzZSBhIHBvb2wuCiAgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tfYnVmZmVyID0gbnVsbHB0cjsK
KyAgQ0ZBbGxvY2F0b3JSZWYgYmxvY2tfYWxsb2NhdG9yID0gQ01NZW1vcnlQb29sR2V0QWxsb2Nh
dG9yKG1lbW9yeV9wb29sKTsKICAgT1NTdGF0dXMgc3RhdHVzID0gQ01CbG9ja0J1ZmZlckNyZWF0
ZVdpdGhNZW1vcnlCbG9jaygKLSAgICAgIG51bGxwdHIsIG51bGxwdHIsIHJlYWRlci5CeXRlc1Jl
bWFpbmluZygpLCBudWxscHRyLCBudWxscHRyLCAwLAotICAgICAgcmVhZGVyLkJ5dGVzUmVtYWlu
aW5nKCksIGtDTUJsb2NrQnVmZmVyQXNzdXJlTWVtb3J5Tm93RmxhZywKKyAgICAgIGtDRkFsbG9j
YXRvckRlZmF1bHQsIG51bGxwdHIsIHJlYWRlci5CeXRlc1JlbWFpbmluZygpLCBibG9ja19hbGxv
Y2F0b3IsCisgICAgICBudWxscHRyLCAwLCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSwga0NNQmxv
Y2tCdWZmZXJBc3N1cmVNZW1vcnlOb3dGbGFnLAogICAgICAgJmJsb2NrX2J1ZmZlcik7CiAgIGlm
IChzdGF0dXMgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikgewogICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJGYWlsZWQgdG8gY3JlYXRlIGJsb2NrIGJ1ZmZlci4iOwpAQCAtMTk5LDggKzIwMCw5IEBA
IGJvb2wgSDI2NEFubmV4QkJ1ZmZlclRvQ01TYW1wbGVCdWZmZXIoY29uc3QgdWludDhfdCogYW5u
ZXhiX2J1ZmZlciwKICAgLy8gTWFrZSBzdXJlIGJsb2NrIGJ1ZmZlciBpcyBjb250aWd1b3VzLgog
ICBDTUJsb2NrQnVmZmVyUmVmIGNvbnRpZ3VvdXNfYnVmZmVyID0gbnVsbHB0cjsKICAgaWYgKCFD
TUJsb2NrQnVmZmVySXNSYW5nZUNvbnRpZ3VvdXMoYmxvY2tfYnVmZmVyLCAwLCAwKSkgewotICAg
IHN0YXR1cyA9IENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKAotICAgICAgICBudWxscHRy
LCBibG9ja19idWZmZXIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDAsIDAsICZjb250aWd1b3VzX2J1
ZmZlcik7CisgICAgc3RhdHVzID0gQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYmxvY2tfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJsb2NrX2FsbG9jYXRvciwgbnVsbHB0ciwgMCwgMCwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGlndW91c19idWZmZXIp
OwogICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8
ICJGYWlsZWQgdG8gZmxhdHRlbiBub24tY29udGlndW91cyBibG9jayBidWZmZXI6ICIKICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IHN0YXR1czsKQEAgLTIzNiw5ICsyMzgsOSBAQCBib29sIEgy
NjRBbm5leEJCdWZmZXJUb0NNU2FtcGxlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGFubmV4Yl9idWZm
ZXIsCiAgIH0KIAogICAvLyBDcmVhdGUgc2FtcGxlIGJ1ZmZlci4KLSAgc3RhdHVzID0gQ01TYW1w
bGVCdWZmZXJDcmVhdGUobnVsbHB0ciwgY29udGlndW91c19idWZmZXIsIHRydWUsIG51bGxwdHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIHZpZGVvX2Zvcm1hdCwg
MSwgMCwgbnVsbHB0ciwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwgb3V0X3NhbXBsZV9idWZmZXIpOworICBzdGF0dXMgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBjb250aWd1b3VzX2J1ZmZlciwgdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgdmlkZW9fZm9ybWF0LCAxLCAw
LCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBudWxscHRyLCBv
dXRfc2FtcGxlX2J1ZmZlcik7CiAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKICAgICBSVENfTE9H
KExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBzYW1wbGUgYnVmZmVyLiI7CiAgICAgQ0ZS
ZWxlYXNlKGNvbnRpZ3VvdXNfYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMv
bmFsdV9yZXdyaXRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVyLmgKaW5kZXgg
Y2Q1YTUxMDc5YWI1YjIyNTg3N2QwMGNlMjM1YzY3ZDBiMWViMGU5OC4uYTBjMWFhOTBhZjU3NTlk
ZTM5YjVkMDZjMjIxZDI4NDI5NDM4OTg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9u
YWx1X3Jld3JpdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVyLmgKQEAg
LTQ0LDcgKzQ0LDggQEAgYm9vbCBIMjY0Q01TYW1wbGVCdWZmZXJUb0FubmV4QkJ1ZmZlcigKIGJv
b2wgSDI2NEFubmV4QkJ1ZmZlclRvQ01TYW1wbGVCdWZmZXIoY29uc3QgdWludDhfdCogYW5uZXhi
X2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGFu
bmV4Yl9idWZmZXJfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIHZpZGVvX2Zvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYqIG91dF9zYW1wbGVfYnVm
ZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ01TYW1wbGVCdWZm
ZXJSZWYqIG91dF9zYW1wbGVfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDTU1lbW9yeVBvb2xSZWYgbWVtb3J5X3Bvb2wpOwogCiAvLyBSZXR1cm5zIGEgdmlk
ZW8gZm9ybWF0IGRlc2NyaXB0aW9uIGNyZWF0ZWQgZnJvbSB0aGUgc3BzL3BwcyBpbmZvcm1hdGlv
biBpbgogLy8gdGhlIEFubmV4IEIgYnVmZmVyLiBJZiB0aGVyZSBpcyBubyBzdWNoIGluZm9ybWF0
aW9uLCBudWxscHRyIGlzIHJldHVybmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19mcmFtZV9i
dWZmZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQ
aXhlbEJ1ZmZlci5oCmluZGV4IGFiZTlkZmNhOTNiMDRiZjU1MmVjMDMwMmI4MDc1OTdkZjI2MWVk
YjEuLjQzMmEzODI1NzQ2NGIyNmNiNTMyMzRjOGEzN2FmNjdkNThlZjgwYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ0NWUGl4ZWxCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3Zp
ZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVmZmVyLmgKQEAgLTE3LDcgKzE3LDYgQEAgTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KIAogLyoqIFJUQ1ZpZGVvRnJhbWVCdWZmZXIgY29udGFpbmlu
ZyBhIENWUGl4ZWxCdWZmZXJSZWYgKi8KIFJUQ19PQkpDX0VYUE9SVAotX19hdHRyaWJ1dGVfXygo
b2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0NWUGl4ZWxCdWZmZXIiKSkpCiBAaW50ZXJmYWNlIFJU
Q0NWUGl4ZWxCdWZmZXIgOiBOU09iamVjdCA8UlRDVmlkZW9GcmFtZUJ1ZmZlcj4KIAogQHByb3Bl
cnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9oZWxwZXJzL1JUQ0NhbWVyYVByZXZpZXdWaWV3Lm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1JUQ0NhbWVyYVByZXZpZXdW
aWV3Lm0KaW5kZXggMmFkZDQ2Y2Y3MWY2YTQ3ZGIwNWY5ODNjNDY5ZTNmNDAxYjBlMzZmZi4uYWRj
NjJjYzMwYWY0OTdiZGMxNjY0NGEzMTgxZTU5YTQ1YzhkZDM0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvaGVscGVycy9SVEND
YW1lcmFQcmV2aWV3Vmlldy5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2hlbHBlcnMvUlRDQ2FtZXJhUHJldmlld1ZpZXcubQpAQCAtNDcs
MTkgKzQ3LDIyIEBAIC0gKHZvaWQpc2V0Q2FwdHVyZVNlc3Npb246KEFWQ2FwdHVyZVNlc3Npb24g
KiljYXB0dXJlU2Vzc2lvbiB7CiAgIGlmIChfY2FwdHVyZVNlc3Npb24gPT0gY2FwdHVyZVNlc3Np
b24pIHsKICAgICByZXR1cm47CiAgIH0KLSAgW1JUQ0Rpc3BhdGNoZXIgZGlzcGF0Y2hBc3luY09u
VHlwZTpSVENEaXNwYXRjaGVyVHlwZU1haW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBibG9jazpeewotICAgIF9jYXB0dXJlU2Vzc2lvbiA9IGNhcHR1cmVTZXNzaW9uOwotICAgIEFW
Q2FwdHVyZVZpZGVvUHJldmlld0xheWVyICpwcmV2aWV3TGF5ZXIgPSBbc2VsZiBwcmV2aWV3TGF5
ZXJdOwotICAgIFtSVENEaXNwYXRjaGVyIGRpc3BhdGNoQXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hl
clR5cGVDYXB0dXJlU2Vzc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxv
Y2s6XnsKLSAgICAgIHByZXZpZXdMYXllci5zZXNzaW9uID0gY2FwdHVyZVNlc3Npb247Ci0gICAg
ICBbUlRDRGlzcGF0Y2hlciBkaXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3BhdGNoZXJUeXBlTWFp
bgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57Ci0gICAgICAgIFtzZWxm
IHNldENvcnJlY3RWaWRlb09yaWVudGF0aW9uXTsKLSAgICAgIH1dOwotICAgIH1dOwotICB9XTsK
KyAgW1JUQ0Rpc3BhdGNoZXIKKyAgICAgIGRpc3BhdGNoQXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hl
clR5cGVNYWluCisgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57CisgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5jYXB0dXJlU2Vzc2lvbiA9IGNhcHR1cmVTZXNzaW9uOworICAgICAgICAgICAg
ICAgICAgICAgIEFWQ2FwdHVyZVZpZGVvUHJldmlld0xheWVyICpwcmV2aWV3TGF5ZXIgPSBbc2Vs
ZiBwcmV2aWV3TGF5ZXJdOworICAgICAgICAgICAgICAgICAgICAgIFtSVENEaXNwYXRjaGVyCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoQXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hl
clR5cGVDYXB0dXJlU2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJsb2NrOl57CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cmV2aWV3TGF5ZXIuc2Vzc2lvbiA9IGNhcHR1cmVTZXNzaW9uOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW1JUQ0Rpc3BhdGNoZXIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3Bh
dGNoZXJUeXBlTWFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmxvY2s6XnsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYgc2V0Q29ycmVjdFZpZGVvT3Jp
ZW50YXRpb25dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfV07CisgICAgICAgICAgICAgICAgICAgIH1dOwogfQogCiAtICh2b2lkKWxheW91dFN1YnZp
ZXdzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2hlbHBlcnMvVUlEZXZpY2UrUlRDRGV2aWNlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1VJRGV2aWNlK1JU
Q0RldmljZS5oCmluZGV4IGViMzllYTljYzRkNzY3MzQxYTNmN2FhMzk2Yjk4ZTcwNmZiMTNlMDQu
LjczNjIzNzU4MmZlODI4YmQ3MzZlNWM4YzBiZGRlYWU0ZThiZWJhMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2hlbHBlcnMv
VUlEZXZpY2UrUlRDRGV2aWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvaGVscGVycy9VSURldmljZStSVENEZXZpY2UuaApAQCAtMzQs
NiArMzQsOSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBSVENEZXZpY2VUeXBlKSB7CiAg
IFJUQ0RldmljZVR5cGVJUGhvbmU4LAogICBSVENEZXZpY2VUeXBlSVBob25lOFBsdXMsCiAgIFJU
Q0RldmljZVR5cGVJUGhvbmVYLAorICBSVENEZXZpY2VUeXBlSVBob25lWFMsCisgIFJUQ0Rldmlj
ZVR5cGVJUGhvbmVYU01heCwKKyAgUlRDRGV2aWNlVHlwZUlQaG9uZVhSLAogICBSVENEZXZpY2VU
eXBlSVBvZFRvdWNoMUcsCiAgIFJUQ0RldmljZVR5cGVJUG9kVG91Y2gyRywKICAgUlRDRGV2aWNl
VHlwZUlQb2RUb3VjaDNHLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvaGVscGVycy9VSURldmljZStSVENEZXZpY2UubW0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJz
L1VJRGV2aWNlK1JUQ0RldmljZS5tbQppbmRleCA5NmFkYjlhZjc4MGUxM2YwOTg4MmVhZDdkODQ4
YWVlN2M2MTZjMDkwLi42ZjY4ZTlmN2EwZGE0NmIwNGU1YTk3OTUwOTg3NGQ2ZDJhM2FhMmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9oZWxwZXJzL1VJRGV2aWNlK1JUQ0RldmljZS5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1VJRGV2aWNlK1JUQ0Rl
dmljZS5tbQpAQCAtMTcsODEgKzE3LDg1IEBAIEBpbXBsZW1lbnRhdGlvbiBVSURldmljZSAoUlRD
RGV2aWNlKQogCiArIChSVENEZXZpY2VUeXBlKWRldmljZVR5cGUgewogICBOU0RpY3Rpb25hcnkg
Km1hY2hpbmVOYW1lVG9UeXBlID0gQHsKLSAgICBAImlQaG9uZTEsMSI6IEAoUlRDRGV2aWNlVHlw
ZUlQaG9uZTFHKSwKLSAgICBAImlQaG9uZTEsMiI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTNHKSwK
LSAgICBAImlQaG9uZTIsMSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTNHUyksCi0gICAgQCJpUGhv
bmUzLDEiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU0KSwKLSAgICBAImlQaG9uZTMsMiI6IEAoUlRD
RGV2aWNlVHlwZUlQaG9uZTQpLAotICAgIEAiaVBob25lMywzIjogQChSVENEZXZpY2VUeXBlSVBo
b25lNFZlcml6b24pLAotICAgIEAiaVBob25lNCwxIjogQChSVENEZXZpY2VUeXBlSVBob25lNFMp
LAotICAgIEAiaVBob25lNSwxIjogQChSVENEZXZpY2VUeXBlSVBob25lNUdTTSksCi0gICAgQCJp
UGhvbmU1LDIiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1R1NNX0NETUEpLAotICAgIEAiaVBob25l
NSwzIjogQChSVENEZXZpY2VUeXBlSVBob25lNUNHU00pLAotICAgIEAiaVBob25lNSw0IjogQChS
VENEZXZpY2VUeXBlSVBob25lNUNHU01fQ0RNQSksCi0gICAgQCJpUGhvbmU2LDEiOiBAKFJUQ0Rl
dmljZVR5cGVJUGhvbmU1U0dTTSksCi0gICAgQCJpUGhvbmU2LDIiOiBAKFJUQ0RldmljZVR5cGVJ
UGhvbmU1U0dTTV9DRE1BKSwKLSAgICBAImlQaG9uZTcsMSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9u
ZTZQbHVzKSwKLSAgICBAImlQaG9uZTcsMiI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTYpLAotICAg
IEAiaVBob25lOCwxIjogQChSVENEZXZpY2VUeXBlSVBob25lNlMpLAotICAgIEAiaVBob25lOCwy
IjogQChSVENEZXZpY2VUeXBlSVBob25lNlNQbHVzKSwKLSAgICBAImlQaG9uZTgsNCI6IEAoUlRD
RGV2aWNlVHlwZUlQaG9uZVNFKSwKLSAgICBAImlQaG9uZTksMSI6IEAoUlRDRGV2aWNlVHlwZUlQ
aG9uZTcpLAotICAgIEAiaVBob25lOSwyIjogQChSVENEZXZpY2VUeXBlSVBob25lN1BsdXMpLAot
ICAgIEAiaVBob25lOSwzIjogQChSVENEZXZpY2VUeXBlSVBob25lNyksCi0gICAgQCJpUGhvbmU5
LDQiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU3UGx1cyksCi0gICAgQCJpUGhvbmUxMCwxIjogQChS
VENEZXZpY2VUeXBlSVBob25lOCksCi0gICAgQCJpUGhvbmUxMCwyIjogQChSVENEZXZpY2VUeXBl
SVBob25lOFBsdXMpLAotICAgIEAiaVBob25lMTAsMyI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVgp
LAotICAgIEAiaVBob25lMTAsNCI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTgpLAotICAgIEAiaVBo
b25lMTAsNSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZThQbHVzKSwKLSAgICBAImlQaG9uZTEwLDYi
OiBAKFJUQ0RldmljZVR5cGVJUGhvbmVYKSwKLSAgICBAImlQb2QxLDEiOiBAKFJUQ0RldmljZVR5
cGVJUG9kVG91Y2gxRyksCi0gICAgQCJpUG9kMiwxIjogQChSVENEZXZpY2VUeXBlSVBvZFRvdWNo
MkcpLAotICAgIEAiaVBvZDMsMSI6IEAoUlRDRGV2aWNlVHlwZUlQb2RUb3VjaDNHKSwKLSAgICBA
ImlQb2Q0LDEiOiBAKFJUQ0RldmljZVR5cGVJUG9kVG91Y2g0RyksCi0gICAgQCJpUG9kNSwxIjog
QChSVENEZXZpY2VUeXBlSVBvZFRvdWNoNUcpLAotICAgIEAiaVBvZDcsMSI6IEAoUlRDRGV2aWNl
VHlwZUlQb2RUb3VjaDZHKSwKLSAgICBAImlQYWQxLDEiOiBAKFJUQ0RldmljZVR5cGVJUGFkKSwK
LSAgICBAImlQYWQyLDEiOiBAKFJUQ0RldmljZVR5cGVJUGFkMldpZmkpLAotICAgIEAiaVBhZDIs
MiI6IEAoUlRDRGV2aWNlVHlwZUlQYWQyR1NNKSwKLSAgICBAImlQYWQyLDMiOiBAKFJUQ0Rldmlj
ZVR5cGVJUGFkMkNETUEpLAotICAgIEAiaVBhZDIsNCI6IEAoUlRDRGV2aWNlVHlwZUlQYWQyV2lm
aTIpLAotICAgIEAiaVBhZDIsNSI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pV2lmaSksCi0gICAg
QCJpUGFkMiw2IjogQChSVENEZXZpY2VUeXBlSVBhZE1pbmlHU00pLAotICAgIEAiaVBhZDIsNyI6
IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pR1NNX0NETUEpLAotICAgIEAiaVBhZDMsMSI6IEAoUlRD
RGV2aWNlVHlwZUlQYWQzV2lmaSksCi0gICAgQCJpUGFkMywyIjogQChSVENEZXZpY2VUeXBlSVBh
ZDNHU01fQ0RNQSksCi0gICAgQCJpUGFkMywzIjogQChSVENEZXZpY2VUeXBlSVBhZDNHU00pLAot
ICAgIEAiaVBhZDMsNCI6IEAoUlRDRGV2aWNlVHlwZUlQYWQ0V2lmaSksCi0gICAgQCJpUGFkMyw1
IjogQChSVENEZXZpY2VUeXBlSVBhZDRHU00pLAotICAgIEAiaVBhZDMsNiI6IEAoUlRDRGV2aWNl
VHlwZUlQYWQ0R1NNX0NETUEpLAotICAgIEAiaVBhZDQsMSI6IEAoUlRDRGV2aWNlVHlwZUlQYWRB
aXJXaWZpKSwKLSAgICBAImlQYWQ0LDIiOiBAKFJUQ0RldmljZVR5cGVJUGFkQWlyQ2VsbHVsYXIp
LAotICAgIEAiaVBhZDQsMyI6IEAoUlRDRGV2aWNlVHlwZUlQYWRBaXJXaWZpQ2VsbHVsYXIpLAot
ICAgIEAiaVBhZDQsNCI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMkdXaWZpKSwKLSAgICBAImlQ
YWQ0LDUiOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaTJHQ2VsbHVsYXIpLAotICAgIEAiaVBhZDQs
NiI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMkdXaWZpQ2VsbHVsYXIpLAotICAgIEAiaVBhZDQs
NyI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMyksCi0gICAgQCJpUGFkNCw4IjogQChSVENEZXZp
Y2VUeXBlSVBhZE1pbmkzKSwKLSAgICBAImlQYWQ0LDkiOiBAKFJUQ0RldmljZVR5cGVJUGFkTWlu
aTMpLAotICAgIEAiaVBhZDUsMSI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pNCksCi0gICAgQCJp
UGFkNSwyIjogQChSVENEZXZpY2VUeXBlSVBhZE1pbmk0KSwKLSAgICBAImlQYWQ1LDMiOiBAKFJU
Q0RldmljZVR5cGVJUGFkQWlyMiksCi0gICAgQCJpUGFkNSw0IjogQChSVENEZXZpY2VUeXBlSVBh
ZEFpcjIpLAotICAgIEAiaVBhZDYsMyI6IEAoUlRDRGV2aWNlVHlwZUlQYWRQcm85SW5jaCksCi0g
ICAgQCJpUGFkNiw0IjogQChSVENEZXZpY2VUeXBlSVBhZFBybzlJbmNoKSwKLSAgICBAImlQYWQ2
LDciOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTJJbmNoKSwKLSAgICBAImlQYWQ2LDgiOiBAKFJU
Q0RldmljZVR5cGVJUGFkUHJvMTJJbmNoKSwKLSAgICBAImlQYWQ2LDExIjogQChSVENEZXZpY2VU
eXBlSVBhZDUpLAotICAgIEAiaVBhZDYsMTIiOiBAKFJUQ0RldmljZVR5cGVJUGFkNSksCi0gICAg
QCJpUGFkNywxIjogQChSVENEZXZpY2VUeXBlSVBhZFBybzEySW5jaDIpLAotICAgIEAiaVBhZDcs
MiI6IEAoUlRDRGV2aWNlVHlwZUlQYWRQcm8xMkluY2gyKSwKLSAgICBAImlQYWQ3LDMiOiBAKFJU
Q0RldmljZVR5cGVJUGFkUHJvMTBJbmNoKSwKLSAgICBAImlQYWQ3LDQiOiBAKFJUQ0RldmljZVR5
cGVJUGFkUHJvMTBJbmNoKSwKLSAgICBAImlQYWQ3LDUiOiBAKFJUQ0RldmljZVR5cGVJUGFkNiks
Ci0gICAgQCJpUGFkNyw2IjogQChSVENEZXZpY2VUeXBlSVBhZDYpLAotICAgIEAiaTM4NiI6IEAo
UlRDRGV2aWNlVHlwZVNpbXVsYXRvcmkzODYpLAotICAgIEAieDg2XzY0IjogQChSVENEZXZpY2VU
eXBlU2ltdWxhdG9yeDg2XzY0KSwKKyAgICBAImlQaG9uZTEsMSIgOiBAKFJUQ0RldmljZVR5cGVJ
UGhvbmUxRyksCisgICAgQCJpUGhvbmUxLDIiIDogQChSVENEZXZpY2VUeXBlSVBob25lM0cpLAor
ICAgIEAiaVBob25lMiwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTNHUyksCisgICAgQCJpUGhv
bmUzLDEiIDogQChSVENEZXZpY2VUeXBlSVBob25lNCksCisgICAgQCJpUGhvbmUzLDIiIDogQChS
VENEZXZpY2VUeXBlSVBob25lNCksCisgICAgQCJpUGhvbmUzLDMiIDogQChSVENEZXZpY2VUeXBl
SVBob25lNFZlcml6b24pLAorICAgIEAiaVBob25lNCwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9u
ZTRTKSwKKyAgICBAImlQaG9uZTUsMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1R1NNKSwKKyAg
ICBAImlQaG9uZTUsMiIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1R1NNX0NETUEpLAorICAgIEAi
aVBob25lNSwzIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTVDR1NNKSwKKyAgICBAImlQaG9uZTUs
NCIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1Q0dTTV9DRE1BKSwKKyAgICBAImlQaG9uZTYsMSIg
OiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1U0dTTSksCisgICAgQCJpUGhvbmU2LDIiIDogQChSVENE
ZXZpY2VUeXBlSVBob25lNVNHU01fQ0RNQSksCisgICAgQCJpUGhvbmU3LDEiIDogQChSVENEZXZp
Y2VUeXBlSVBob25lNlBsdXMpLAorICAgIEAiaVBob25lNywyIiA6IEAoUlRDRGV2aWNlVHlwZUlQ
aG9uZTYpLAorICAgIEAiaVBob25lOCwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTZTKSwKKyAg
ICBAImlQaG9uZTgsMiIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU2U1BsdXMpLAorICAgIEAiaVBo
b25lOCw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVNFKSwKKyAgICBAImlQaG9uZTksMSIgOiBA
KFJUQ0RldmljZVR5cGVJUGhvbmU3KSwKKyAgICBAImlQaG9uZTksMiIgOiBAKFJUQ0RldmljZVR5
cGVJUGhvbmU3UGx1cyksCisgICAgQCJpUGhvbmU5LDMiIDogQChSVENEZXZpY2VUeXBlSVBob25l
NyksCisgICAgQCJpUGhvbmU5LDQiIDogQChSVENEZXZpY2VUeXBlSVBob25lN1BsdXMpLAorICAg
IEAiaVBob25lMTAsMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU4KSwKKyAgICBAImlQaG9uZTEw
LDIiIDogQChSVENEZXZpY2VUeXBlSVBob25lOFBsdXMpLAorICAgIEAiaVBob25lMTAsMyIgOiBA
KFJUQ0RldmljZVR5cGVJUGhvbmVYKSwKKyAgICBAImlQaG9uZTEwLDQiIDogQChSVENEZXZpY2VU
eXBlSVBob25lOCksCisgICAgQCJpUGhvbmUxMCw1IiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZThQ
bHVzKSwKKyAgICBAImlQaG9uZTEwLDYiIDogQChSVENEZXZpY2VUeXBlSVBob25lWCksCisgICAg
QCJpUGhvbmUxMSwyIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVhTKSwKKyAgICBAImlQaG9uZTEx
LDQiIDogQChSVENEZXZpY2VUeXBlSVBob25lWFNNYXgpLAorICAgIEAiaVBob25lMTEsNiIgOiBA
KFJUQ0RldmljZVR5cGVJUGhvbmVYU01heCksCisgICAgQCJpUGhvbmUxMSw4IiA6IEAoUlRDRGV2
aWNlVHlwZUlQaG9uZVhSKSwKKyAgICBAImlQb2QxLDEiIDogQChSVENEZXZpY2VUeXBlSVBvZFRv
dWNoMUcpLAorICAgIEAiaVBvZDIsMSIgOiBAKFJUQ0RldmljZVR5cGVJUG9kVG91Y2gyRyksCisg
ICAgQCJpUG9kMywxIiA6IEAoUlRDRGV2aWNlVHlwZUlQb2RUb3VjaDNHKSwKKyAgICBAImlQb2Q0
LDEiIDogQChSVENEZXZpY2VUeXBlSVBvZFRvdWNoNEcpLAorICAgIEAiaVBvZDUsMSIgOiBAKFJU
Q0RldmljZVR5cGVJUG9kVG91Y2g1RyksCisgICAgQCJpUG9kNywxIiA6IEAoUlRDRGV2aWNlVHlw
ZUlQb2RUb3VjaDZHKSwKKyAgICBAImlQYWQxLDEiIDogQChSVENEZXZpY2VUeXBlSVBhZCksCisg
ICAgQCJpUGFkMiwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQyV2lmaSksCisgICAgQCJpUGFkMiwy
IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQyR1NNKSwKKyAgICBAImlQYWQyLDMiIDogQChSVENEZXZp
Y2VUeXBlSVBhZDJDRE1BKSwKKyAgICBAImlQYWQyLDQiIDogQChSVENEZXZpY2VUeXBlSVBhZDJX
aWZpMiksCisgICAgQCJpUGFkMiw1IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pV2lmaSksCisg
ICAgQCJpUGFkMiw2IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pR1NNKSwKKyAgICBAImlQYWQy
LDciIDogQChSVENEZXZpY2VUeXBlSVBhZE1pbmlHU01fQ0RNQSksCisgICAgQCJpUGFkMywxIiA6
IEAoUlRDRGV2aWNlVHlwZUlQYWQzV2lmaSksCisgICAgQCJpUGFkMywyIiA6IEAoUlRDRGV2aWNl
VHlwZUlQYWQzR1NNX0NETUEpLAorICAgIEAiaVBhZDMsMyIgOiBAKFJUQ0RldmljZVR5cGVJUGFk
M0dTTSksCisgICAgQCJpUGFkMyw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQ0V2lmaSksCisgICAg
QCJpUGFkMyw1IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQ0R1NNKSwKKyAgICBAImlQYWQzLDYiIDog
QChSVENEZXZpY2VUeXBlSVBhZDRHU01fQ0RNQSksCisgICAgQCJpUGFkNCwxIiA6IEAoUlRDRGV2
aWNlVHlwZUlQYWRBaXJXaWZpKSwKKyAgICBAImlQYWQ0LDIiIDogQChSVENEZXZpY2VUeXBlSVBh
ZEFpckNlbGx1bGFyKSwKKyAgICBAImlQYWQ0LDMiIDogQChSVENEZXZpY2VUeXBlSVBhZEFpcldp
ZmlDZWxsdWxhciksCisgICAgQCJpUGFkNCw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMkdX
aWZpKSwKKyAgICBAImlQYWQ0LDUiIDogQChSVENEZXZpY2VUeXBlSVBhZE1pbmkyR0NlbGx1bGFy
KSwKKyAgICBAImlQYWQ0LDYiIDogQChSVENEZXZpY2VUeXBlSVBhZE1pbmkyR1dpZmlDZWxsdWxh
ciksCisgICAgQCJpUGFkNCw3IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMyksCisgICAgQCJp
UGFkNCw4IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMyksCisgICAgQCJpUGFkNCw5IiA6IEAo
UlRDRGV2aWNlVHlwZUlQYWRNaW5pMyksCisgICAgQCJpUGFkNSwxIiA6IEAoUlRDRGV2aWNlVHlw
ZUlQYWRNaW5pNCksCisgICAgQCJpUGFkNSwyIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pNCks
CisgICAgQCJpUGFkNSwzIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRBaXIyKSwKKyAgICBAImlQYWQ1
LDQiIDogQChSVENEZXZpY2VUeXBlSVBhZEFpcjIpLAorICAgIEAiaVBhZDYsMyIgOiBAKFJUQ0Rl
dmljZVR5cGVJUGFkUHJvOUluY2gpLAorICAgIEAiaVBhZDYsNCIgOiBAKFJUQ0RldmljZVR5cGVJ
UGFkUHJvOUluY2gpLAorICAgIEAiaVBhZDYsNyIgOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTJJ
bmNoKSwKKyAgICBAImlQYWQ2LDgiIDogQChSVENEZXZpY2VUeXBlSVBhZFBybzEySW5jaCksCisg
ICAgQCJpUGFkNiwxMSIgOiBAKFJUQ0RldmljZVR5cGVJUGFkNSksCisgICAgQCJpUGFkNiwxMiIg
OiBAKFJUQ0RldmljZVR5cGVJUGFkNSksCisgICAgQCJpUGFkNywxIiA6IEAoUlRDRGV2aWNlVHlw
ZUlQYWRQcm8xMkluY2gyKSwKKyAgICBAImlQYWQ3LDIiIDogQChSVENEZXZpY2VUeXBlSVBhZFBy
bzEySW5jaDIpLAorICAgIEAiaVBhZDcsMyIgOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTBJbmNo
KSwKKyAgICBAImlQYWQ3LDQiIDogQChSVENEZXZpY2VUeXBlSVBhZFBybzEwSW5jaCksCisgICAg
QCJpUGFkNyw1IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQ2KSwKKyAgICBAImlQYWQ3LDYiIDogQChS
VENEZXZpY2VUeXBlSVBhZDYpLAorICAgIEAiaTM4NiIgOiBAKFJUQ0RldmljZVR5cGVTaW11bGF0
b3JpMzg2KSwKKyAgICBAIng4Nl82NCIgOiBAKFJUQ0RldmljZVR5cGVTaW11bGF0b3J4ODZfNjQp
LAogICB9OwogCiAgIFJUQ0RldmljZVR5cGUgZGV2aWNlVHlwZSA9IFJUQ0RldmljZVR5cGVVbmtu
b3duOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvbmF0aXZlL2FwaS92aWRlb19jYXB0dXJlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL2FwaS92aWRlb19jYXB0
dXJlci5oCmluZGV4IDViNmYzZjkzOWJhYTdjNjYyMzM1ZDc5MWU2ODgwNjkzMzg5YTFkNTEuLmQ2
ZjM5NmI0NzAxY2FjNTcwOGIwZjY3NmRhNDY2MzY2NTRmMzZhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9hcGkv
dmlkZW9fY2FwdHVyZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvYXBpL3ZpZGVvX2NhcHR1cmVyLmgKQEAgLTE1LDYgKzE1
LDcgQEAKIAogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbQppbmRl
eCBjNGM4NWNjNmFiOTAzNTM1ZTVlZjAxZTdjZjVhODE1MzFkMTcwZTZmLi5hZTQ1MDMzYTU3MGYx
YzE5ODlkYjMxYzU0ZTFmYmVmMTllZmM0YTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfdmlkZW9f
ZW5jb2Rlcl9mYWN0b3J5Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3Rvcnku
bW0KQEAgLTg2LDI4ICs4NiwyNiBAQCBjbGFzcyBPYmpDVmlkZW9FbmNvZGVyIDogcHVibGljIFZp
ZGVvRW5jb2RlciB7CiAgICAgICAgICAgICAgICAgIGZyYW1lVHlwZXM6cnRjRnJhbWVUeXBlc107
CiAgIH0KIAotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9s
b3NzLCBpbnQ2NF90IHJ0dCkgeyByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOyB9Ci0KICAg
aW50MzJfdCBTZXRSYXRlcyh1aW50MzJfdCBiaXRyYXRlLCB1aW50MzJfdCBmcmFtZXJhdGUpIHsK
ICAgICByZXR1cm4gW2VuY29kZXJfIHNldEJpdHJhdGU6Yml0cmF0ZSBmcmFtZXJhdGU6ZnJhbWVy
YXRlXTsKICAgfQogCiAgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRy
YXRlQWxsb2NhdGlvbiYgYWxsb2NhdGlvbiwgdWludDMyX3QgZnJhbWVyYXRlKSB7Ci0gICAgUlRD
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqYml0cmF0ZUFsbG9jYXRpb24gPQotICAgICAgW1tSVENW
aWRlb0JpdHJhdGVBbGxvY2F0aW9uIGFsbG9jXSBpbml0V2l0aE5hdGl2ZVZpZGVvQml0cmF0ZUFs
bG9jYXRpb246JmFsbG9jYXRpb25dOwotICAgIHJldHVybiBbZW5jb2Rlcl8gc2V0UmF0ZUFsbG9j
YXRpb246IGJpdHJhdGVBbGxvY2F0aW9uIGZyYW1lcmF0ZTpmcmFtZXJhdGVdOworICAgIGF1dG8g
KnJ0Y0FsbG9jYXRpb24gPSBbW1JUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYWxsb2NdIGluaXRX
aXRoTmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjomYWxsb2NhdGlvbl07CisgICAgcmV0dXJu
IFtlbmNvZGVyXyBzZXRSYXRlQWxsb2NhdGlvbjogcnRjQWxsb2NhdGlvbiBmcmFtZXJhdGU6ZnJh
bWVyYXRlXTsKICAgfQogCi0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisgIFZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8o
KSBjb25zdCB7CisgICAgRW5jb2RlckluZm8gaW5mbzsKKyAgICBpbmZvLnN1cHBvcnRzX25hdGl2
ZV9oYW5kbGUgPSB0cnVlOworICAgIGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSA9IGltcGxlbWVu
dGF0aW9uX25hbWVfOwogCi0gIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIEdldFNjYWxp
bmdTZXR0aW5ncygpIGNvbnN0IHsKICAgICBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMgKnFw
X3RocmVzaG9sZHMgPSBbZW5jb2Rlcl8gc2NhbGluZ1NldHRpbmdzXTsKLSAgICByZXR1cm4gcXBf
dGhyZXNob2xkcyA/IFNjYWxpbmdTZXR0aW5ncyhxcF90aHJlc2hvbGRzLmxvdywgcXBfdGhyZXNo
b2xkcy5oaWdoKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBTY2FsaW5nU2V0dGluZ3M6
OmtPZmY7CisgICAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0gcXBfdGhyZXNob2xkcyA/IFNjYWxp
bmdTZXR0aW5ncyhxcF90aHJlc2hvbGRzLmxvdywgcXBfdGhyZXNob2xkcy5oaWdoKSA6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjYWxpbmdTZXR0aW5nczo6
a09mZjsKKyAgICByZXR1cm4gaW5mbzsKICAgfQogCi0gIGNvbnN0IGNoYXIgKkltcGxlbWVudGF0
aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGltcGxlbWVudGF0aW9uX25hbWVfLmNfc3RyKCk7IH0K
LQogIHByaXZhdGU6CiAgIGlkPFJUQ1ZpZGVvRW5jb2Rlcj4gZW5jb2Rlcl87CiAgIGNvbnN0IHN0
ZDo6c3RyaW5nIGltcGxlbWVudGF0aW9uX25hbWVfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0F1ZGlv
RGV2aWNlTW9kdWxlX3hjdGVzdC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENBdWRpb0RldmljZU1vZHVsZV94Y3Rlc3Qu
bW0KaW5kZXggNjg5ZGU1ODFkMDRlYWY1OGFlNDczY2NkZmU1MjE4M2IwMjU2NDM3ZS4uNTVkNDhj
MjhiYTcxZTkzZjAzZjlkZWI3ODczZjU0MTEzYzBjMWVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0F1
ZGlvRGV2aWNlTW9kdWxlX3hjdGVzdC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQXVkaW9EZXZpY2VNb2R1bGVf
eGN0ZXN0Lm1tCkBAIC0xMjgsMTcgKzEyOCwyMCBAQCBzdGF0aWMgY29uc3QgTlNVSW50ZWdlciBr
RnVsbER1cGxleFRpbWVJblNlYyA9IDEwOwogc3RhdGljIGNvbnN0IE5TVUludGVnZXIga051bUln
bm9yZUZpcnN0Q2FsbGJhY2tzID0gNTA7CiAKIEBpbnRlcmZhY2UgUlRDQXVkaW9EZXZpY2VNb2R1
bGVUZXN0cyA6IFhDVGVzdENhc2UgewotCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1
ZGlvRGV2aWNlTW9kdWxlPiBhdWRpb0RldmljZU1vZHVsZTsKLSAgd2VicnRjOjpBdWRpb1BhcmFt
ZXRlcnMgcGxheW91dFBhcmFtZXRlcnM7Ci0gIHdlYnJ0Yzo6QXVkaW9QYXJhbWV0ZXJzIHJlY29y
ZFBhcmFtZXRlcnM7CiAgIE1vY2tBdWRpb1RyYW5zcG9ydCBtb2NrOwogfQogCitAcHJvcGVydHko
bm9uYXRvbWljLCBhc3NpZ24pIHdlYnJ0Yzo6QXVkaW9QYXJhbWV0ZXJzIHBsYXlvdXRQYXJhbWV0
ZXJzOworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSB3ZWJydGM6OkF1ZGlvUGFyYW1ldGVy
cyByZWNvcmRQYXJhbWV0ZXJzOworCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBSVENBdWRpb0Rl
dmljZU1vZHVsZVRlc3RzCiAKK0BzeW50aGVzaXplIHBsYXlvdXRQYXJhbWV0ZXJzOworQHN5bnRo
ZXNpemUgcmVjb3JkUGFyYW1ldGVyczsKKwogLSAodm9pZClzZXRVcCB7CiAgIFtzdXBlciBzZXRV
cF07CiAgIGF1ZGlvRGV2aWNlTW9kdWxlID0gd2VicnRjOjpDcmVhdGVBdWRpb0RldmljZU1vZHVs
ZSgpOwpAQCAtMjU0LDEwICsyNTcsMTAgQEAgLSAodm9pZCl0ZXN0U3RhcnRQbGF5b3V0T25Ud29J
bnN0YW5jZXMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCAqZWxhcHNlZF90aW1lX21zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCAqbnRwX3RpbWVfbXMpIHsKICAgICBuU2FtcGxlc091dCA9IG5TYW1wbGVzOwot
ICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCBwbGF5b3V0UGFyYW1ldGVycy5mcmFtZXNfcGVy
XzEwbXNfYnVmZmVyKCkpOworICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCBzZWxmLnBsYXlv
dXRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBtc19idWZmZXIoKSk7CiAgICAgWENUQXNzZXJ0RXF1
YWwobkJ5dGVzUGVyU2FtcGxlLCBrQnl0ZXNQZXJTYW1wbGUpOwotICAgIFhDVEFzc2VydEVxdWFs
KG5DaGFubmVscywgcGxheW91dFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7Ci0gICAgWENUQXNzZXJ0
RXF1YWwoKGludCkgc2FtcGxlc1BlclNlYywgcGxheW91dFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUo
KSk7CisgICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxzLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJz
LmNoYW5uZWxzKCkpOworICAgIFhDVEFzc2VydEVxdWFsKChpbnQpc2FtcGxlc1BlclNlYywgc2Vs
Zi5wbGF5b3V0UGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKICAgICBYQ1RBc3NlcnROb3RFcXVh
bCgodm9pZCopTlVMTCwgYXVkaW9TYW1wbGVzKTsKIAogICAgIHJldHVybiAwOwpAQCAtMjkxLDEw
ICsyOTQsMTAgQEAgLSAodm9pZCl0ZXN0U3RhcnRQbGF5b3V0T25Ud29JbnN0YW5jZXMgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgKmVsYXBzZWRfdGlt
ZV9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90ICpu
dHBfdGltZV9tcykgewogICAgIG5TYW1wbGVzT3V0ID0gblNhbXBsZXM7Ci0gICAgWENUQXNzZXJ0
RXF1YWwoblNhbXBsZXMsIHBsYXlvdXRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBtc19idWZmZXIo
KSk7CisgICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHNlbGYucGxheW91dFBhcmFtZXRlcnMu
ZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKTsKICAgICBYQ1RBc3NlcnRFcXVhbChuQnl0ZXNQZXJT
YW1wbGUsIGtCeXRlc1BlclNhbXBsZSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxzLCBw
bGF5b3V0UGFyYW1ldGVycy5jaGFubmVscygpKTsKLSAgICBYQ1RBc3NlcnRFcXVhbCgoaW50KSBz
YW1wbGVzUGVyU2VjLCBwbGF5b3V0UGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKKyAgICBYQ1RB
c3NlcnRFcXVhbChuQ2hhbm5lbHMsIHNlbGYucGxheW91dFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7
CisgICAgWENUQXNzZXJ0RXF1YWwoKGludClzYW1wbGVzUGVyU2VjLCBzZWxmLnBsYXlvdXRQYXJh
bWV0ZXJzLnNhbXBsZV9yYXRlKCkpOwogICAgIFhDVEFzc2VydE5vdEVxdWFsKCh2b2lkKilOVUxM
LCBhdWRpb1NhbXBsZXMpOwogICAgIGlmICgrK251bV9jYWxsYmFja3MgPT0ga051bUNhbGxiYWNr
cykgewogICAgICAgW3BsYXlvdXRFeHBlY3RhdGlvbiBmdWxmaWxsXTsKQEAgLTMzMCwxMCArMzMz
LDEwIEBAIC0gKHZvaWQpdGVzdFN0YXJ0UGxheW91dFZlcmlmeUNhbGxiYWNrcyB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90ICplbGFwc2VkX3RpbWVfbXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90ICpudHBfdGlt
ZV9tcykgewogICAgIG5TYW1wbGVzT3V0ID0gblNhbXBsZXM7Ci0gICAgWENUQXNzZXJ0RXF1YWwo
blNhbXBsZXMsIHBsYXlvdXRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBtc19idWZmZXIoKSk7Cisg
ICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHNlbGYucGxheW91dFBhcmFtZXRlcnMuZnJhbWVz
X3Blcl8xMG1zX2J1ZmZlcigpKTsKICAgICBYQ1RBc3NlcnRFcXVhbChuQnl0ZXNQZXJTYW1wbGUs
IGtCeXRlc1BlclNhbXBsZSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxzLCBwbGF5b3V0
UGFyYW1ldGVycy5jaGFubmVscygpKTsKLSAgICBYQ1RBc3NlcnRFcXVhbCgoaW50KSBzYW1wbGVz
UGVyU2VjLCBwbGF5b3V0UGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKKyAgICBYQ1RBc3NlcnRF
cXVhbChuQ2hhbm5lbHMsIHNlbGYucGxheW91dFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7CisgICAg
WENUQXNzZXJ0RXF1YWwoKGludClzYW1wbGVzUGVyU2VjLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJz
LnNhbXBsZV9yYXRlKCkpOwogICAgIFhDVEFzc2VydE5vdEVxdWFsKCh2b2lkKilOVUxMLCBhdWRp
b1NhbXBsZXMpOwogICAgIGlmICgrK251bV9jYWxsYmFja3MgPT0ga051bUNhbGxiYWNrcykgewog
ICAgICAgW3BsYXlvdXRFeHBlY3RhdGlvbiBmdWxmaWxsXTsKQEAgLTM2NiwxMCArMzY5LDEwIEBA
IC0gKHZvaWQpdGVzdFN0YXJ0UmVjb3JkaW5nVmVyaWZ5Q2FsbGJhY2tzIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wga2V5UHJlc3NlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90JiBuZXdNaWNMZXZlbCkg
ewogICAgIFhDVEFzc2VydE5vdEVxdWFsKCh2b2lkKilOVUxMLCBhdWRpb1NhbXBsZXMpOwotICAg
IFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCByZWNvcmRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBt
c19idWZmZXIoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHNlbGYucmVjb3JkUGFy
YW1ldGVycy5mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpOwogICAgIFhDVEFzc2VydEVxdWFsKG5C
eXRlc1BlclNhbXBsZSwga0J5dGVzUGVyU2FtcGxlKTsKLSAgICBYQ1RBc3NlcnRFcXVhbChuQ2hh
bm5lbHMsIHJlY29yZFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwo
KGludCkgc2FtcGxlc1BlclNlYywgcmVjb3JkUGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKKyAg
ICBYQ1RBc3NlcnRFcXVhbChuQ2hhbm5lbHMsIHNlbGYucmVjb3JkUGFyYW1ldGVycy5jaGFubmVs
cygpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbCgoaW50KXNhbXBsZXNQZXJTZWMsIHNlbGYucmVjb3Jk
UGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKICAgICBYQ1RBc3NlcnRFcXVhbCgwLCBjbG9ja0Ry
aWZ0KTsKICAgICBYQ1RBc3NlcnRFcXVhbCgwdSwgY3VycmVudE1pY0xldmVsKTsKICAgICBYQ1RB
c3NlcnRGYWxzZShrZXlQcmVzc2VkKTsKQEAgLTQwNSwxMCArNDA4LDEwIEBAIC0gKHZvaWQpdGVz
dFN0YXJ0UGxheW91dEFuZFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcyB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90ICplbGFwc2VkX3RpbWVfbXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90ICpudHBfdGltZV9tcykg
ewogICAgIG5TYW1wbGVzT3V0ID0gblNhbXBsZXM7Ci0gICAgWENUQXNzZXJ0RXF1YWwoblNhbXBs
ZXMsIHBsYXlvdXRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBtc19idWZmZXIoKSk7CisgICAgWENU
QXNzZXJ0RXF1YWwoblNhbXBsZXMsIHNlbGYucGxheW91dFBhcmFtZXRlcnMuZnJhbWVzX3Blcl8x
MG1zX2J1ZmZlcigpKTsKICAgICBYQ1RBc3NlcnRFcXVhbChuQnl0ZXNQZXJTYW1wbGUsIGtCeXRl
c1BlclNhbXBsZSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxzLCBwbGF5b3V0UGFyYW1l
dGVycy5jaGFubmVscygpKTsKLSAgICBYQ1RBc3NlcnRFcXVhbCgoaW50KSBzYW1wbGVzUGVyU2Vj
LCBwbGF5b3V0UGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbChu
Q2hhbm5lbHMsIHNlbGYucGxheW91dFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7CisgICAgWENUQXNz
ZXJ0RXF1YWwoKGludClzYW1wbGVzUGVyU2VjLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLnNhbXBs
ZV9yYXRlKCkpOwogICAgIFhDVEFzc2VydE5vdEVxdWFsKCh2b2lkKilOVUxMLCBhdWRpb1NhbXBs
ZXMpOwogICAgIGlmIChjYWxsYmFja0NvdW50KysgPj0ga051bUNhbGxiYWNrcykgewogICAgICAg
W3BsYXlvdXRFeHBlY3RhdGlvbiBmdWxmaWxsXTsKQEAgLTQyOCwxMCArNDMxLDEwIEBAIC0gKHZv
aWQpdGVzdFN0YXJ0UGxheW91dEFuZFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcyB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIGtleVByZXNzZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCYgbmV3TWljTGV2
ZWwpIHsKICAgICBYQ1RBc3NlcnROb3RFcXVhbCgodm9pZCopTlVMTCwgYXVkaW9TYW1wbGVzKTsK
LSAgICBYQ1RBc3NlcnRFcXVhbChuU2FtcGxlcywgcmVjb3JkUGFyYW1ldGVycy5mcmFtZXNfcGVy
XzEwbXNfYnVmZmVyKCkpOworICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCBzZWxmLnJlY29y
ZFBhcmFtZXRlcnMuZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKTsKICAgICBYQ1RBc3NlcnRFcXVh
bChuQnl0ZXNQZXJTYW1wbGUsIGtCeXRlc1BlclNhbXBsZSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwo
bkNoYW5uZWxzLCByZWNvcmRQYXJhbWV0ZXJzLmNoYW5uZWxzKCkpOwotICAgIFhDVEFzc2VydEVx
dWFsKChpbnQpIHNhbXBsZXNQZXJTZWMsIHJlY29yZFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7
CisgICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxzLCBzZWxmLnJlY29yZFBhcmFtZXRlcnMuY2hh
bm5lbHMoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoKGludClzYW1wbGVzUGVyU2VjLCBzZWxmLnJl
Y29yZFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7CiAgICAgWENUQXNzZXJ0RXF1YWwoMCwgY2xv
Y2tEcmlmdCk7CiAgICAgWENUQXNzZXJ0RXF1YWwoMHUsIGN1cnJlbnRNaWNMZXZlbCk7CiAgICAg
WENUQXNzZXJ0RmFsc2Uoa2V5UHJlc3NlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQ2FsbGJhY2tM
b2dnZXJfeGN0ZXN0Lm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQ2FsbGJhY2tMb2dnZXJfeGN0ZXN0Lm0KaW5kZXggNGEw
YTJiM2U2ZDE1YmQ3MWQ5NmE1OTIyMjJhY2Q1YTM0NzRjMmE5ZS4uY2VhYTc2MmYxZjhhMWYwOTdk
NTFjNTVlMDkyNTJkOTJlZDk5YjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0NhbGxiYWNrTG9nZ2Vy
X3hjdGVzdC5tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENDYWxsYmFja0xvZ2dlcl94Y3Rlc3QubQpAQCAtNDksNiAr
NDksMjMgQEAgLSAodm9pZCl0ZXN0Q2FsbGJhY2tHZXRzQ2FsbGVkRm9yQXBwcm9wcmlhdGVMZXZl
bCB7CiAgIFtzZWxmIHdhaXRGb3JFeHBlY3RhdGlvbnM6QFsgY2FsbGJhY2tFeHBlY3RhdGlvbiBd
IHRpbWVvdXQ6MTAuMF07CiB9CiAKKy0gKHZvaWQpdGVzdENhbGxiYWNrV2l0aFNldmVyaXR5R2V0
c0NhbGxlZEZvckFwcHJvcHJpYXRlTGV2ZWwgeworICBzZWxmLmxvZ2dlci5zZXZlcml0eSA9IFJU
Q0xvZ2dpbmdTZXZlcml0eVdhcm5pbmc7CisKKyAgWENUZXN0RXhwZWN0YXRpb24gKmNhbGxiYWNr
RXhwZWN0YXRpb24gPSBbc2VsZiBleHBlY3RhdGlvbldpdGhEZXNjcmlwdGlvbjpAImNhbGxiYWNr
V2FybmluZyJdOworCisgIFtzZWxmLmxvZ2dlcgorICAgICAgc3RhcnRXaXRoTWVzc2FnZUFuZFNl
dmVyaXR5SGFuZGxlcjpeKE5TU3RyaW5nICptZXNzYWdlLCBSVENMb2dnaW5nU2V2ZXJpdHkgc2V2
ZXJpdHkpIHsKKyAgICAgICAgWENUQXNzZXJ0VHJ1ZShbbWVzc2FnZSBoYXNTdWZmaXg6QCJIb3Jy
aWJsZSBlcnJvclxuIl0pOworICAgICAgICBYQ1RBc3NlcnRFcXVhbChzZXZlcml0eSwgUlRDTG9n
Z2luZ1NldmVyaXR5RXJyb3IpOworICAgICAgICBbY2FsbGJhY2tFeHBlY3RhdGlvbiBmdWxmaWxs
XTsKKyAgICAgIH1dOworCisgIFJUQ0xvZ0Vycm9yKCJIb3JyaWJsZSBlcnJvciIpOworCisgIFtz
ZWxmIHdhaXRGb3JFeHBlY3RhdGlvbnM6QFsgY2FsbGJhY2tFeHBlY3RhdGlvbiBdIHRpbWVvdXQ6
MTAuMF07Cit9CisKIC0gKHZvaWQpdGVzdENhbGxiYWNrRG9lc05vdEdldENhbGxlZEZvck90aGVy
TGV2ZWxzIHsKICAgc2VsZi5sb2dnZXIuc2V2ZXJpdHkgPSBSVENMb2dnaW5nU2V2ZXJpdHlFcnJv
cjsKIApAQCAtNjYsMTIgKzgzLDc2IEBAIC0gKHZvaWQpdGVzdENhbGxiYWNrRG9lc05vdEdldENh
bGxlZEZvck90aGVyTGV2ZWxzIHsKICAgW3NlbGYgd2FpdEZvckV4cGVjdGF0aW9uczpAWyBjYWxs
YmFja0V4cGVjdGF0aW9uIF0gdGltZW91dDoxMC4wXTsKIH0KIAorLSAodm9pZCl0ZXN0Q2FsbGJh
Y2tXaXRoU2V2ZXJpdHlEb2VzTm90R2V0Q2FsbGVkRm9yT3RoZXJMZXZlbHMgeworICBzZWxmLmxv
Z2dlci5zZXZlcml0eSA9IFJUQ0xvZ2dpbmdTZXZlcml0eUVycm9yOworCisgIFhDVGVzdEV4cGVj
dGF0aW9uICpjYWxsYmFja0V4cGVjdGF0aW9uID0gW3NlbGYgZXhwZWN0YXRpb25XaXRoRGVzY3Jp
cHRpb246QCJjYWxsYmFja0Vycm9yIl07CisKKyAgW3NlbGYubG9nZ2VyCisgICAgICBzdGFydFdp
dGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyOl4oTlNTdHJpbmcgKm1lc3NhZ2UsIFJUQ0xvZ2dp
bmdTZXZlcml0eSBzZXZlcml0eSkgeworICAgICAgICBYQ1RBc3NlcnRUcnVlKFttZXNzYWdlIGhh
c1N1ZmZpeDpAIkhvcnJpYmxlIGVycm9yXG4iXSk7CisgICAgICAgIFhDVEFzc2VydEVxdWFsKHNl
dmVyaXR5LCBSVENMb2dnaW5nU2V2ZXJpdHlFcnJvcik7CisgICAgICAgIFtjYWxsYmFja0V4cGVj
dGF0aW9uIGZ1bGZpbGxdOworICAgICAgfV07CisKKyAgUlRDTG9nSW5mbygiSnVzdCBzb21lIGlu
Zm8iKTsKKyAgUlRDTG9nV2FybmluZygiV2FybmluZyB3YXJuaW5nIik7CisgIFJUQ0xvZ0Vycm9y
KCJIb3JyaWJsZSBlcnJvciIpOworCisgIFtzZWxmIHdhaXRGb3JFeHBlY3RhdGlvbnM6QFsgY2Fs
bGJhY2tFeHBlY3RhdGlvbiBdIHRpbWVvdXQ6MTAuMF07Cit9CisKKy0gKHZvaWQpdGVzdENhbGxi
YWNrRG9lc05vdGdldENhbGxlZEZvclNldmVyaXR5Tm9uZSB7CisgIHNlbGYubG9nZ2VyLnNldmVy
aXR5ID0gUlRDTG9nZ2luZ1NldmVyaXR5Tm9uZTsKKworICBYQ1Rlc3RFeHBlY3RhdGlvbiAqY2Fs
bGJhY2tFeHBlY3RhdGlvbiA9IFtzZWxmIGV4cGVjdGF0aW9uV2l0aERlc2NyaXB0aW9uOkAidW5l
eHBlY3RlZENhbGxiYWNrIl07CisKKyAgW3NlbGYubG9nZ2VyIHN0YXJ0Ol4oTlNTdHJpbmcgKm1l
c3NhZ2UpIHsKKyAgICBbY2FsbGJhY2tFeHBlY3RhdGlvbiBmdWxmaWxsXTsKKyAgICBYQ1RBc3Nl
cnRUcnVlKGZhbHNlKTsKKyAgfV07CisKKyAgUlRDTG9nSW5mbygiSnVzdCBzb21lIGluZm8iKTsK
KyAgUlRDTG9nV2FybmluZygiV2FybmluZyB3YXJuaW5nIik7CisgIFJUQ0xvZ0Vycm9yKCJIb3Jy
aWJsZSBlcnJvciIpOworCisgIFhDVFdhaXRlciAqd2FpdGVyID0gW1tYQ1RXYWl0ZXIgYWxsb2Nd
IGluaXRdOworICBYQ1RXYWl0ZXJSZXN1bHQgcmVzdWx0ID0gW3dhaXRlciB3YWl0Rm9yRXhwZWN0
YXRpb25zOkBbIGNhbGxiYWNrRXhwZWN0YXRpb24gXSB0aW1lb3V0OjEuMF07CisgIFhDVEFzc2Vy
dEVxdWFsKHJlc3VsdCwgWENUV2FpdGVyUmVzdWx0VGltZWRPdXQpOworfQorCistICh2b2lkKXRl
c3RDYWxsYmFja1dpdGhTZXZlcml0eURvZXNOb3RnZXRDYWxsZWRGb3JTZXZlcml0eU5vbmUgewor
ICBzZWxmLmxvZ2dlci5zZXZlcml0eSA9IFJUQ0xvZ2dpbmdTZXZlcml0eU5vbmU7CisKKyAgWENU
ZXN0RXhwZWN0YXRpb24gKmNhbGxiYWNrRXhwZWN0YXRpb24gPSBbc2VsZiBleHBlY3RhdGlvbldp
dGhEZXNjcmlwdGlvbjpAInVuZXhwZWN0ZWRDYWxsYmFjayJdOworCisgIFtzZWxmLmxvZ2dlcgor
ICAgICAgc3RhcnRXaXRoTWVzc2FnZUFuZFNldmVyaXR5SGFuZGxlcjpeKE5TU3RyaW5nICptZXNz
YWdlLCBSVENMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkpIHsKKyAgICAgICAgW2NhbGxiYWNrRXhw
ZWN0YXRpb24gZnVsZmlsbF07CisgICAgICAgIFhDVEFzc2VydFRydWUoZmFsc2UpOworICAgICAg
fV07CisKKyAgUlRDTG9nSW5mbygiSnVzdCBzb21lIGluZm8iKTsKKyAgUlRDTG9nV2FybmluZygi
V2FybmluZyB3YXJuaW5nIik7CisgIFJUQ0xvZ0Vycm9yKCJIb3JyaWJsZSBlcnJvciIpOworCisg
IFhDVFdhaXRlciAqd2FpdGVyID0gW1tYQ1RXYWl0ZXIgYWxsb2NdIGluaXRdOworICBYQ1RXYWl0
ZXJSZXN1bHQgcmVzdWx0ID0gW3dhaXRlciB3YWl0Rm9yRXhwZWN0YXRpb25zOkBbIGNhbGxiYWNr
RXhwZWN0YXRpb24gXSB0aW1lb3V0OjEuMF07CisgIFhDVEFzc2VydEVxdWFsKHJlc3VsdCwgWENU
V2FpdGVyUmVzdWx0VGltZWRPdXQpOworfQorCiAtICh2b2lkKXRlc3RTdGFydGluZ1dpdGhOaWxD
YWxsYmFja0RvZXNOb3RDcmFzaCB7CiAgIFtzZWxmLmxvZ2dlciBzdGFydDpuaWxdOwogCiAgIFJU
Q0xvZ0Vycm9yKCJIb3JyaWJsZSBlcnJvciIpOwogfQogCistICh2b2lkKXRlc3RTdGFydGluZ1dp
dGhOaWxDYWxsYmFja1dpdGhTZXZlcml0eURvZXNOb3RDcmFzaCB7CisgIFtzZWxmLmxvZ2dlciBz
dGFydFdpdGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyOm5pbF07CisKKyAgUlRDTG9nRXJyb3Io
IkhvcnJpYmxlIGVycm9yIik7Cit9CisKIC0gKHZvaWQpdGVzdFN0b3BDYWxsYmFja0xvZ2dlciB7
CiAgIFhDVGVzdEV4cGVjdGF0aW9uICpjYWxsYmFja0V4cGVjdGF0aW9uID0gW3NlbGYgZXhwZWN0
YXRpb25XaXRoRGVzY3JpcHRpb246QCJzdG9wcGVkIl07CiAKQEAgLTg4LDYgKzE2OSwyMyBAQCAt
ICh2b2lkKXRlc3RTdG9wQ2FsbGJhY2tMb2dnZXIgewogICBYQ1RBc3NlcnRFcXVhbChyZXN1bHQs
IFhDVFdhaXRlclJlc3VsdFRpbWVkT3V0KTsKIH0KIAorLSAodm9pZCl0ZXN0U3RvcENhbGxiYWNr
V2l0aFNldmVyaXR5TG9nZ2VyIHsKKyAgWENUZXN0RXhwZWN0YXRpb24gKmNhbGxiYWNrRXhwZWN0
YXRpb24gPSBbc2VsZiBleHBlY3RhdGlvbldpdGhEZXNjcmlwdGlvbjpAInN0b3BwZWQiXTsKKwor
ICBbc2VsZi5sb2dnZXIKKyAgICAgIHN0YXJ0V2l0aE1lc3NhZ2VBbmRTZXZlcml0eUhhbmRsZXI6
XihOU1N0cmluZyAqbWVzc2FnZSwgUlRDTG9nZ2luZ1NldmVyaXR5IGxvZ2dpbmdTZXJ2ZXJpdHkp
IHsKKyAgICAgICAgW2NhbGxiYWNrRXhwZWN0YXRpb24gZnVsZmlsbF07CisgICAgICB9XTsKKwor
ICBbc2VsZi5sb2dnZXIgc3RvcF07CisKKyAgUlRDTG9nSW5mbygiSnVzdCBzb21lIGluZm8iKTsK
KworICBYQ1RXYWl0ZXIgKndhaXRlciA9IFtbWENUV2FpdGVyIGFsbG9jXSBpbml0XTsKKyAgWENU
V2FpdGVyUmVzdWx0IHJlc3VsdCA9IFt3YWl0ZXIgd2FpdEZvckV4cGVjdGF0aW9uczpAWyBjYWxs
YmFja0V4cGVjdGF0aW9uIF0gdGltZW91dDoxLjBdOworICBYQ1RBc3NlcnRFcXVhbChyZXN1bHQs
IFhDVFdhaXRlclJlc3VsdFRpbWVkT3V0KTsKK30KKwogLSAodm9pZCl0ZXN0RGVzdHJveWluZ0Nh
bGxiYWNrTG9nZ2VyIHsKICAgWENUZXN0RXhwZWN0YXRpb24gKmNhbGxiYWNrRXhwZWN0YXRpb24g
PSBbc2VsZiBleHBlY3RhdGlvbldpdGhEZXNjcmlwdGlvbjpAImRlc3Ryb3llZCJdOwogCkBAIC0x
MDQsNCArMjAyLDQzIEBAIC0gKHZvaWQpdGVzdERlc3Ryb3lpbmdDYWxsYmFja0xvZ2dlciB7CiAg
IFhDVEFzc2VydEVxdWFsKHJlc3VsdCwgWENUV2FpdGVyUmVzdWx0VGltZWRPdXQpOwogfQogCist
ICh2b2lkKXRlc3REZXN0cm95aW5nQ2FsbGJhY2tXaXRoU2V2ZXJpdHlMb2dnZXIgeworICBYQ1Rl
c3RFeHBlY3RhdGlvbiAqY2FsbGJhY2tFeHBlY3RhdGlvbiA9IFtzZWxmIGV4cGVjdGF0aW9uV2l0
aERlc2NyaXB0aW9uOkAiZGVzdHJveWVkIl07CisKKyAgW3NlbGYubG9nZ2VyCisgICAgICBzdGFy
dFdpdGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyOl4oTlNTdHJpbmcgKm1lc3NhZ2UsIFJUQ0xv
Z2dpbmdTZXZlcml0eSBsb2dnaW5nU2VydmVyaXR5KSB7CisgICAgICAgIFtjYWxsYmFja0V4cGVj
dGF0aW9uIGZ1bGZpbGxdOworICAgICAgfV07CisKKyAgc2VsZi5sb2dnZXIgPSBuaWw7CisKKyAg
UlRDTG9nSW5mbygiSnVzdCBzb21lIGluZm8iKTsKKworICBYQ1RXYWl0ZXIgKndhaXRlciA9IFtb
WENUV2FpdGVyIGFsbG9jXSBpbml0XTsKKyAgWENUV2FpdGVyUmVzdWx0IHJlc3VsdCA9IFt3YWl0
ZXIgd2FpdEZvckV4cGVjdGF0aW9uczpAWyBjYWxsYmFja0V4cGVjdGF0aW9uIF0gdGltZW91dDox
LjBdOworICBYQ1RBc3NlcnRFcXVhbChyZXN1bHQsIFhDVFdhaXRlclJlc3VsdFRpbWVkT3V0KTsK
K30KKworLSAodm9pZCl0ZXN0Q2FsbGJhY2tXaXRoU2V2ZXJpdHlMb2dnZXJDYW5ub3RTdGFydFR3
aWNlIHsKKyAgc2VsZi5sb2dnZXIuc2V2ZXJpdHkgPSBSVENMb2dnaW5nU2V2ZXJpdHlXYXJuaW5n
OworCisgIFhDVGVzdEV4cGVjdGF0aW9uICpjYWxsYmFja0V4cGVjdGF0aW9uID0gW3NlbGYgZXhw
ZWN0YXRpb25XaXRoRGVzY3JpcHRpb246QCJjYWxsYmFja1dhcm5pbmciXTsKKworICBbc2VsZi5s
b2dnZXIKKyAgICAgIHN0YXJ0V2l0aE1lc3NhZ2VBbmRTZXZlcml0eUhhbmRsZXI6XihOU1N0cmlu
ZyAqbWVzc2FnZSwgUlRDTG9nZ2luZ1NldmVyaXR5IGxvZ2dpbmdTZXJ2ZXJpdHkpIHsKKyAgICAg
ICAgWENUQXNzZXJ0VHJ1ZShbbWVzc2FnZSBoYXNTdWZmaXg6QCJIb3JyaWJsZSBlcnJvclxuIl0p
OworICAgICAgICBYQ1RBc3NlcnRFcXVhbChsb2dnaW5nU2VydmVyaXR5LCBSVENMb2dnaW5nU2V2
ZXJpdHlFcnJvcik7CisgICAgICAgIFtjYWxsYmFja0V4cGVjdGF0aW9uIGZ1bGZpbGxdOworICAg
ICAgfV07CisKKyAgW3NlbGYubG9nZ2VyIHN0YXJ0Ol4oTlNTdHJpbmcgKm1lc3NhZ2UpIHsKKyAg
ICBbY2FsbGJhY2tFeHBlY3RhdGlvbiBmdWxmaWxsXTsKKyAgICBYQ1RBc3NlcnRUcnVlKGZhbHNl
KTsKKyAgfV07CisKKyAgUlRDTG9nRXJyb3IoIkhvcnJpYmxlIGVycm9yIik7CisKKyAgW3NlbGYg
d2FpdEZvckV4cGVjdGF0aW9uczpAWyBjYWxsYmFja0V4cGVjdGF0aW9uIF0gdGltZW91dDoxMC4w
XTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0NlcnRpZmljYXRlVGVzdC5tbSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0
cy9SVENDZXJ0aWZpY2F0ZVRlc3QubW0KaW5kZXggMjU4NWEyNzgxMThlOTliZjM3NWI0MDFiMTNi
ODRmMDYyNWQ0ZTA1Zi4uNWJmMWViM2ZlNDcwNzQ3N2ZmYjg0MjIzYjU1NGY0NmFlODRkNTZjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvdW5pdHRlc3RzL1JUQ0NlcnRpZmljYXRlVGVzdC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQ2VydGlm
aWNhdGVUZXN0Lm1tCkBAIC03MSw3ICs3MSw3IEBAIC0gKHZvaWQpdGVzdENlcnRpZmljYXRlSXNV
c2VkSW5Db25maWcgewogCiBAZW5kCiAKLVRFU1QoQ2VydGlmaWNhdGVUZXN0LCBDZXJ0aWZpY2F0
ZUlzVXNlZEluQ29uZmlnKSB7CitURVNUKENlcnRpZmljYXRlVGVzdCwgRElTQUJMRURfQ2VydGlm
aWNhdGVJc1VzZWRJbkNvbmZpZykgewogICBSVENDZXJ0aWZpY2F0ZVRlc3QgKnRlc3QgPSBbW1JU
Q0NlcnRpZmljYXRlVGVzdCBhbGxvY10gaW5pdF07CiAgIFt0ZXN0IHRlc3RDZXJ0aWZpY2F0ZUlz
VXNlZEluQ29uZmlnXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENDb25maWd1cmF0aW9uVGVzdC5t
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3Vu
aXR0ZXN0cy9SVENDb25maWd1cmF0aW9uVGVzdC5tbQppbmRleCAxZWY3MThhZDQ5NThkZTdkNzc2
ZmY1OWJiNzQzM2QwNTcwM2E5OWZjLi5mMzFmY2ZkODU4ZDkyOWY2MDY0Zjg3YzQ4ZWYxMDdhNDZl
OGJmOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQ29uZmlndXJhdGlvblRlc3QubW0KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3Rz
L1JUQ0NvbmZpZ3VyYXRpb25UZXN0Lm1tCkBAIC01MCw2ICs1MCwxMiBAQCAtICh2b2lkKXRlc3RD
b252ZXJzaW9uVG9OYXRpdmVDb25maWd1cmF0aW9uIHsKICAgICAgIFJUQ0NvbnRpbnVhbEdhdGhl
cmluZ1BvbGljeUdhdGhlckNvbnRpbnVhbGx5OwogICBjb25maWcuc2hvdWxkUHJ1bmVUdXJuUG9y
dHMgPSBZRVM7CiAgIGNvbmZpZy5pY2VSZWdhdGhlckludGVydmFsUmFuZ2UgPSByYW5nZTsKKyAg
Y29uZmlnLmNyeXB0b09wdGlvbnMgPSBbW1JUQ0NyeXB0b09wdGlvbnMgYWxsb2NdIGluaXRXaXRo
U3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlczpZRVMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhl
cjpZRVMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnRw
RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczpZRVMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1l
RW5jcnlwdGlvbjpZRVNdOworICBjb25maWcucnRjcEF1ZGlvUmVwb3J0SW50ZXJ2YWxNcyA9IDI1
MDA7CisgIGNvbmZpZy5ydGNwVmlkZW9SZXBvcnRJbnRlcnZhbE1zID0gMzc1MDsKIAogICBzdGQ6
OnVuaXF1ZV9wdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJh
dGlvbj4KICAgICAgIG5hdGl2ZUNvbmZpZyhbY29uZmlnIGNyZWF0ZU5hdGl2ZUNvbmZpZ3VyYXRp
b25dKTsKQEAgLTc4LDYgKzg0LDEyIEBAIC0gKHZvaWQpdGVzdENvbnZlcnNpb25Ub05hdGl2ZUNv
bmZpZ3VyYXRpb24gewogICBFWFBFQ1RfRVEodHJ1ZSwgbmF0aXZlQ29uZmlnLT5wcnVuZV90dXJu
X3BvcnRzKTsKICAgRVhQRUNUX0VRKHJhbmdlLm1pbiwgbmF0aXZlQ29uZmlnLT5pY2VfcmVnYXRo
ZXJfaW50ZXJ2YWxfcmFuZ2UtPm1pbigpKTsKICAgRVhQRUNUX0VRKHJhbmdlLm1heCwgbmF0aXZl
Q29uZmlnLT5pY2VfcmVnYXRoZXJfaW50ZXJ2YWxfcmFuZ2UtPm1heCgpKTsKKyAgRVhQRUNUX0VR
KHRydWUsIG5hdGl2ZUNvbmZpZy0+Y3J5cHRvX29wdGlvbnMtPnNydHAuZW5hYmxlX2djbV9jcnlw
dG9fc3VpdGVzKTsKKyAgRVhQRUNUX0VRKHRydWUsIG5hdGl2ZUNvbmZpZy0+Y3J5cHRvX29wdGlv
bnMtPnNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIpOworICBFWFBFQ1Rf
RVEodHJ1ZSwgbmF0aXZlQ29uZmlnLT5jcnlwdG9fb3B0aW9ucy0+c3J0cC5lbmFibGVfZW5jcnlw
dGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyk7CisgIEVYUEVDVF9FUSh0cnVlLCBuYXRpdmVDb25m
aWctPmNyeXB0b19vcHRpb25zLT5zZnJhbWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uKTsKKyAg
RVhQRUNUX0VRKDI1MDAsIG5hdGl2ZUNvbmZpZy0+YXVkaW9fcnRjcF9yZXBvcnRfaW50ZXJ2YWxf
bXMoKSk7CisgIEVYUEVDVF9FUSgzNzUwLCBuYXRpdmVDb25maWctPnZpZGVvX3J0Y3BfcmVwb3J0
X2ludGVydmFsX21zKCkpOwogfQogCiAtICh2b2lkKXRlc3ROYXRpdmVDb252ZXJzaW9uVG9Db25m
aWd1cmF0aW9uIHsKQEAgLTEwMyw2ICsxMTUsMTIgQEAgLSAodm9pZCl0ZXN0TmF0aXZlQ29udmVy
c2lvblRvQ29uZmlndXJhdGlvbiB7CiAgICAgICBSVENDb250aW51YWxHYXRoZXJpbmdQb2xpY3lH
YXRoZXJDb250aW51YWxseTsKICAgY29uZmlnLnNob3VsZFBydW5lVHVyblBvcnRzID0gWUVTOwog
ICBjb25maWcuaWNlUmVnYXRoZXJJbnRlcnZhbFJhbmdlID0gcmFuZ2U7CisgIGNvbmZpZy5jcnlw
dG9PcHRpb25zID0gW1tSVENDcnlwdG9PcHRpb25zIGFsbG9jXSBpbml0V2l0aFNydHBFbmFibGVH
Y21DcnlwdG9TdWl0ZXM6WUVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI6Tk8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnRwRW5hYmxlRW5jcnlw
dGVkUnRwSGVhZGVyRXh0ZW5zaW9uczpOTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uOk5P
XTsKKyAgY29uZmlnLnJ0Y3BBdWRpb1JlcG9ydEludGVydmFsTXMgPSAxNTAwOworICBjb25maWcu
cnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxNcyA9IDIxNTA7CiAKICAgd2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiAqbmF0aXZlQ29uZmlnID0KICAgICAgIFtj
b25maWcgY3JlYXRlTmF0aXZlQ29uZmlndXJhdGlvbl07CkBAIC0xMzAsNiArMTQ4LDIxIEBAIC0g
KHZvaWQpdGVzdE5hdGl2ZUNvbnZlcnNpb25Ub0NvbmZpZ3VyYXRpb24gewogICBFWFBFQ1RfRVEo
Y29uZmlnLnNob3VsZFBydW5lVHVyblBvcnRzLCBuZXdDb25maWcuc2hvdWxkUHJ1bmVUdXJuUG9y
dHMpOwogICBFWFBFQ1RfRVEoY29uZmlnLmljZVJlZ2F0aGVySW50ZXJ2YWxSYW5nZS5taW4sIG5l
d0NvbmZpZy5pY2VSZWdhdGhlckludGVydmFsUmFuZ2UubWluKTsKICAgRVhQRUNUX0VRKGNvbmZp
Zy5pY2VSZWdhdGhlckludGVydmFsUmFuZ2UubWF4LCBuZXdDb25maWcuaWNlUmVnYXRoZXJJbnRl
cnZhbFJhbmdlLm1heCk7CisgIEVYUEVDVF9FUShjb25maWcuY3J5cHRvT3B0aW9ucy5zcnRwRW5h
YmxlR2NtQ3J5cHRvU3VpdGVzLAorICAgICAgICAgICAgbmV3Q29uZmlnLmNyeXB0b09wdGlvbnMu
c3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlcyk7CisgIEVYUEVDVF9FUShjb25maWcuY3J5cHRvT3B0
aW9ucy5zcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlciwKKyAgICAgICAgICAgIG5l
d0NvbmZpZy5jcnlwdG9PcHRpb25zLnNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVy
KTsKKyAgRVhQRUNUX0VRKGNvbmZpZy5jcnlwdG9PcHRpb25zLnNydHBFbmFibGVFbmNyeXB0ZWRS
dHBIZWFkZXJFeHRlbnNpb25zLAorICAgICAgICAgICAgbmV3Q29uZmlnLmNyeXB0b09wdGlvbnMu
c3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMpOworICBFWFBFQ1RfRVEoY29u
ZmlnLmNyeXB0b09wdGlvbnMuc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbiwKKyAgICAgICAg
ICAgIG5ld0NvbmZpZy5jcnlwdG9PcHRpb25zLnNmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb24p
OworICBFWFBFQ1RfRVEoY29uZmlnLnJ0Y3BBdWRpb1JlcG9ydEludGVydmFsTXMsIG5ld0NvbmZp
Zy5ydGNwQXVkaW9SZXBvcnRJbnRlcnZhbE1zKTsKKyAgRVhQRUNUX0VRKGNvbmZpZy5ydGNwVmlk
ZW9SZXBvcnRJbnRlcnZhbE1zLCBuZXdDb25maWcucnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxNcyk7
Cit9CisKKy0gKHZvaWQpdGVzdERlZmF1bHRWYWx1ZXMgeworICBSVENDb25maWd1cmF0aW9uICpj
b25maWcgPSBbW1JUQ0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOworICBFWFBFQ1RfRVEoY29u
ZmlnLmNyeXB0b09wdGlvbnMsIG5pbCk7CiB9CiAKIEBlbmQKQEAgLTEzOSw1ICsxNzIsNiBAQCBU
RVNUKFJUQ0NvbmZpZ3VyYXRpb25UZXN0LCBOYXRpdmVDb25maWd1cmF0aW9uQ29udmVyc2lvblRl
c3QpIHsKICAgICBSVENDb25maWd1cmF0aW9uVGVzdCAqdGVzdCA9IFtbUlRDQ29uZmlndXJhdGlv
blRlc3QgYWxsb2NdIGluaXRdOwogICAgIFt0ZXN0IHRlc3RDb252ZXJzaW9uVG9OYXRpdmVDb25m
aWd1cmF0aW9uXTsKICAgICBbdGVzdCB0ZXN0TmF0aXZlQ29udmVyc2lvblRvQ29uZmlndXJhdGlv
bl07CisgICAgW3Rlc3QgdGVzdERlZmF1bHRWYWx1ZXNdOwogICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVz
dHMvUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlclRlc3QubW0gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDUGVlckNv
bm5lY3Rpb25GYWN0b3J5QnVpbGRlclRlc3QubW0KaW5kZXggOWJiNTE3OTUyMWYzNGExNjFjY2Uz
ZTE1Zjc2MjNmZmQ1N2VkNTgwNC4uNWY4ODlhNjk5ZGE2MTA4NTExOTAwNDNlM2FjZmRmZDc2N2Jk
OWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXJUZXN0
Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL3VuaXR0ZXN0cy9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlCdWlsZGVyVGVzdC5tbQpAQCAt
MjIsNiArMjIsNyBAQCBleHRlcm4gIkMiIHsKIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3Mv
YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29k
ZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL21lZGlh
X3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVv
X2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9h
dWRpb19kZXZpY2UuaCIKQEAgLTQ5LDcgKzUwLDggQEAgLSAodm9pZCl0ZXN0QnVpbGRlciB7CiAg
ICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRW5jb2RlckZhY3Rvcnk6bnVsbHB0cgogICAgICAgICAg
ICAgICBuYXRpdmVWaWRlb0RlY29kZXJGYWN0b3J5Om51bGxwdHIKICAgICAgICAgICAgICAgICAg
ICAgICBhdWRpb0RldmljZU1vZHVsZTpudWxscHRyCi0gICAgICAgICAgICAgICAgICBhdWRpb1By
b2Nlc3NpbmdNb2R1bGU6bnVsbHB0cl0pOworICAgICAgICAgICAgICAgICAgYXVkaW9Qcm9jZXNz
aW5nTW9kdWxlOm51bGxwdHIKKyAgICAgICAgICAgICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9y
eTpudWxscHRyXSk7CiAjZW5kaWYKICAgUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlciog
YnVpbGRlciA9IFtbUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlciBhbGxvY10gaW5pdF07
CiAgIFJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeSogcGVlckNvbm5lY3Rpb25GYWN0b3J5ID0gW2J1
aWxkZXIgY3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5XTsKQEAgLTY5LDcgKzcxLDggQEAgLSAo
dm9pZCl0ZXN0RGVmYXVsdENvbXBvbmVudHNCdWlsZGVyIHsKICAgICAgICAgICAgICAgbmF0aXZl
VmlkZW9FbmNvZGVyRmFjdG9yeTpudWxscHRyCiAgICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRGVj
b2RlckZhY3Rvcnk6bnVsbHB0cgogICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGV2aWNlTW9k
dWxlOm51bGxwdHIKLSAgICAgICAgICAgICAgICAgIGF1ZGlvUHJvY2Vzc2luZ01vZHVsZTpudWxs
cHRyXSk7CisgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6bnVsbHB0cgor
ICAgICAgICAgICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5Om51bGxwdHJdKTsKICNlbmRp
ZgogICBSVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlCdWlsZGVyKiBidWlsZGVyID0gW1JUQ1BlZXJD
b25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIgZGVmYXVsdEJ1aWxkZXJdOwogICBSVENQZWVyQ29ubmVj
dGlvbkZhY3RvcnkqIHBlZXJDb25uZWN0aW9uRmFjdG9yeSA9IFtidWlsZGVyIGNyZWF0ZVBlZXJD
b25uZWN0aW9uRmFjdG9yeV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDUGVlckNvbm5lY3Rpb25UZXN0
Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
dW5pdHRlc3RzL1JUQ1BlZXJDb25uZWN0aW9uVGVzdC5tbQppbmRleCAyOGZkZWU2YTJiZDZlZDgx
ZTA3MDBiNGVjMTEwYTI0YjJjYTBhM2NkLi4zNTMyMjU4Nzk5NmQ5OGFjNjc2OWIwNjU1YTY0OGIx
OWEzYWQ5ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDUGVlckNvbm5lY3Rpb25UZXN0Lm1tCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0
ZXN0cy9SVENQZWVyQ29ubmVjdGlvblRlc3QubW0KQEAgLTE2LDYgKzE2LDcgQEAKIAogI2ltcG9y
dCAiYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24rUHJpdmF0ZS5oIgogI2ltcG9y
dCAiYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgImFwaS9w
ZWVyY29ubmVjdGlvbi9SVENDcnlwdG9PcHRpb25zLmgiCiAjaW1wb3J0ICJhcGkvcGVlcmNvbm5l
Y3Rpb24vUlRDSWNlU2VydmVyLmgiCiAjaW1wb3J0ICJhcGkvcGVlcmNvbm5lY3Rpb24vUlRDTWVk
aWFDb25zdHJhaW50cy5oIgogI2ltcG9ydCAiYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25u
ZWN0aW9uLmgiCkBAIC01MCw2ICs1MSwxMCBAQCAtICh2b2lkKXRlc3RDb25maWd1cmF0aW9uR2V0
dGVyIHsKICAgICAgIFJUQ0NvbnRpbnVhbEdhdGhlcmluZ1BvbGljeUdhdGhlckNvbnRpbnVhbGx5
OwogICBjb25maWcuc2hvdWxkUHJ1bmVUdXJuUG9ydHMgPSBZRVM7CiAgIGNvbmZpZy5hY3RpdmVS
ZXNldFNydHBQYXJhbXMgPSBZRVM7CisgIGNvbmZpZy5jcnlwdG9PcHRpb25zID0gW1tSVENDcnlw
dG9PcHRpb25zIGFsbG9jXSBpbml0V2l0aFNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXM6WUVTCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3J0cEVuYWJs
ZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI6WUVTCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lv
bnM6Tk8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbjpOT107CiAKICAgUlRDTWVkaWFDb25z
dHJhaW50cyAqY29udHJhaW50cyA9IFtbUlRDTWVkaWFDb25zdHJhaW50cyBhbGxvY10gaW5pdFdp
dGhNYW5kYXRvcnlDb25zdHJhaW50czpAe30KICAgICAgIG9wdGlvbmFsQ29uc3RyYWludHM6bmls
XTsKQEAgLTg5LDYgKzk0LDE0IEBAIC0gKHZvaWQpdGVzdENvbmZpZ3VyYXRpb25HZXR0ZXIgewog
ICBFWFBFQ1RfRVEoY29uZmlnLmNvbnRpbnVhbEdhdGhlcmluZ1BvbGljeSwgbmV3Q29uZmlnLmNv
bnRpbnVhbEdhdGhlcmluZ1BvbGljeSk7CiAgIEVYUEVDVF9FUShjb25maWcuc2hvdWxkUHJ1bmVU
dXJuUG9ydHMsIG5ld0NvbmZpZy5zaG91bGRQcnVuZVR1cm5Qb3J0cyk7CiAgIEVYUEVDVF9FUShj
b25maWcuYWN0aXZlUmVzZXRTcnRwUGFyYW1zLCBuZXdDb25maWcuYWN0aXZlUmVzZXRTcnRwUGFy
YW1zKTsKKyAgRVhQRUNUX0VRKGNvbmZpZy5jcnlwdG9PcHRpb25zLnNydHBFbmFibGVHY21Dcnlw
dG9TdWl0ZXMsCisgICAgICAgICAgICBuZXdDb25maWcuY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxl
R2NtQ3J5cHRvU3VpdGVzKTsKKyAgRVhQRUNUX0VRKGNvbmZpZy5jcnlwdG9PcHRpb25zLnNydHBF
bmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyLAorICAgICAgICAgICAgbmV3Q29uZmlnLmNy
eXB0b09wdGlvbnMuc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIpOworICBFWFBF
Q1RfRVEoY29uZmlnLmNyeXB0b09wdGlvbnMuc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4
dGVuc2lvbnMsCisgICAgICAgICAgICBuZXdDb25maWcuY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxl
RW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucyk7CisgIEVYUEVDVF9FUShjb25maWcuY3J5cHRv
T3B0aW9ucy5zZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uLAorICAgICAgICAgICAgbmV3Q29u
ZmlnLmNyeXB0b09wdGlvbnMuc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbik7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL3VuaXR0ZXN0cy9tYWluLm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvbWFpbi5tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyMTdmYjRmNDc5YzA1NmU3YzJhM2ZhMjhkOGNhNTdmNTg2ZGNhNGFjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9tYWluLm0K
KysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
Ci0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+Ci0K
LWludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKLSAgQGF1dG9yZWxlYXNlcG9vbCB7
Ci0gICAgcmV0dXJuIFVJQXBwbGljYXRpb25NYWluKGFyZ2MsIGFyZ3YsIG5pbCwgbmlsKTsKLSAg
fQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvdW5pdHRlc3RzL21haW4ubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvbWFpbi5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
N2E4OGE2NGQzZDc0ZTM1ZGE4ZWUwNTVlNzg4MDEwODIzZDZmYTZlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5p
dHRlc3RzL21haW4ubW0KQEAgLTAsMCArMSwyMSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxNyBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgor
I2luY2x1ZGUgInRlc3QvaW9zL2NvdmVyYWdlX3V0aWxfaW9zLmgiCisKK2ludCBtYWluKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pIHsKKyAgcnRjOjp0ZXN0OjpDb25maWd1cmVDb3ZlcmFnZVJlcG9y
dFBhdGgoKTsKKworICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICByZXR1cm4gVUlBcHBsaWNhdGlv
bk1haW4oYXJnYywgYXJndiwgbmlsLCBuaWwpOworICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvbmFs
dV9yZXdyaXRlcl94Y3Rlc3QubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvbmFsdV9yZXdyaXRlcl94Y3Rlc3QubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGIwNDk5MDFjNTFhYjc3NjU2YjkzNDdiMmVkMzAxZjBkMzQyMDYxZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL3VuaXR0ZXN0cy9uYWx1X3Jld3JpdGVyX3hjdGVzdC5tbQpAQCAtMCwwICsxLDQxNCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0L2gyNjRfY29t
bW9uLmgiCisjaW5jbHVkZSAiY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVyLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZ3Vu
aXQuaCIKKworI2ltcG9ydCA8WENUZXN0L1hDVGVzdC5oPgorCisjaWYgVEFSR0VUX09TX0lQSE9O
RQorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8VUlLaXQv
VUlLaXQuaD4KKyNlbmRpZgorCitAaW50ZXJmYWNlIE5hbHVSZXdyaXRlclRlc3RzIDogWENUZXN0
Q2FzZQorCitAZW5kCisKK3N0YXRpYyBjb25zdCB1aW50OF90IE5BTFVfVEVTVF9EQVRBXzBbXSA9
IHsweEFBLCAweEJCLCAweENDfTsKK3N0YXRpYyBjb25zdCB1aW50OF90IE5BTFVfVEVTVF9EQVRB
XzFbXSA9IHsweERFLCAweEFELCAweEJFLCAweEVGfTsKKworLy8gY2xhbmctZm9ybWF0IG9mZgor
c3RhdGljIGNvbnN0IHVpbnQ4X3QgU1BTX1BQU19CVUZGRVJbXSA9IHsKKyAgLy8gU1BTIG5hbHUu
CisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjcsIDB4NDIsIDB4MDAsIDB4MUUsIDB4QUIs
IDB4NDAsIDB4RjAsIDB4MjgsCisgIDB4RDMsIDB4NzAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAs
CisgIC8vIFBQUyBuYWx1LgorICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDI4LCAweENFLCAw
eDNDLCAweDMwfTsKKy8vIGNsYW5nLWZvcm1hdCBvbgorCitAaW1wbGVtZW50YXRpb24gTmFsdVJl
d3JpdGVyVGVzdHMKKworLSAodm9pZCl0ZXN0Q3JlYXRlVmlkZW9Gb3JtYXREZXNjcmlwdGlvbiB7
CisgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjcmlwdGlvbiA9CisgICAgICB3ZWJy
dGM6OkNyZWF0ZVZpZGVvRm9ybWF0RGVzY3JpcHRpb24oU1BTX1BQU19CVUZGRVIsIGFycmF5c2l6
ZShTUFNfUFBTX0JVRkZFUikpOworICBYQ1RBc3NlcnRUcnVlKGRlc2NyaXB0aW9uKTsKKyAgaWYg
KGRlc2NyaXB0aW9uKSB7CisgICAgQ0ZSZWxlYXNlKGRlc2NyaXB0aW9uKTsKKyAgICBkZXNjcmlw
dGlvbiA9IG51bGxwdHI7CisgIH0KKworICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgIGNvbnN0IHVp
bnQ4X3Qgc3BzX3Bwc19ub3RfYXRfc3RhcnRfYnVmZmVyW10gPSB7CisgICAgLy8gQWRkIHNvbWUg
bm9uLVNQUy9QUFMgTkFMVXMgYXQgdGhlIGJlZ2lubmluZworICAgIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDEsIDB4MDAsIDB4MDAsIDB4MDEsIDB4RkYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisg
ICAgMHhBQiwgMHgzMywgMHgyMSwKKyAgICAvLyBTUFMgbmFsdS4KKyAgICAweDAwLCAweDAwLCAw
eDAxLCAweDI3LCAweDQyLCAweDAwLCAweDFFLCAweEFCLCAweDQwLCAweEYwLCAweDI4LCAweEQz
LAorICAgIDB4NzAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgLy8gUFBTIG5hbHUuCisg
ICAgMHgwMCwgMHgwMCwgMHgwMSwgMHgyOCwgMHhDRSwgMHgzQywgMHgzMH07CisgIC8vIGNsYW5n
LWZvcm1hdCBvbgorICBkZXNjcmlwdGlvbiA9IHdlYnJ0Yzo6Q3JlYXRlVmlkZW9Gb3JtYXREZXNj
cmlwdGlvbihzcHNfcHBzX25vdF9hdF9zdGFydF9idWZmZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5c2l6ZShzcHNfcHBzX25vdF9h
dF9zdGFydF9idWZmZXIpKTsKKworICBYQ1RBc3NlcnRUcnVlKGRlc2NyaXB0aW9uKTsKKworICBp
ZiAoZGVzY3JpcHRpb24pIHsKKyAgICBDRlJlbGVhc2UoZGVzY3JpcHRpb24pOworICAgIGRlc2Ny
aXB0aW9uID0gbnVsbHB0cjsKKyAgfQorCisgIGNvbnN0IHVpbnQ4X3Qgb3RoZXJfYnVmZmVyW10g
PSB7MHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyOH07CisgIFhDVEFzc2VydEZhbHNlKHdlYnJ0
Yzo6Q3JlYXRlVmlkZW9Gb3JtYXREZXNjcmlwdGlvbihvdGhlcl9idWZmZXIsIGFycmF5c2l6ZShv
dGhlcl9idWZmZXIpKSk7Cit9CisKKy0gKHZvaWQpdGVzdFJlYWRFbXB0eUlucHV0IHsKKyAgY29u
c3QgdWludDhfdCBhbm5leF9iX3Rlc3RfZGF0YVtdID0gezB4MDB9OworICB3ZWJydGM6OkFubmV4
QkJ1ZmZlclJlYWRlciByZWFkZXIoYW5uZXhfYl90ZXN0X2RhdGEsIDApOworICBjb25zdCB1aW50
OF90KiBuYWx1ID0gbnVsbHB0cjsKKyAgc2l6ZV90IG5hbHVfbGVuZ3RoID0gMDsKKyAgWENUQXNz
ZXJ0RXF1YWwoMHUsIHJlYWRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0RmFsc2Uo
cmVhZGVyLlJlYWROYWx1KCZuYWx1LCAmbmFsdV9sZW5ndGgpKTsKKyAgWENUQXNzZXJ0RXF1YWwo
bnVsbHB0ciwgbmFsdSk7CisgIFhDVEFzc2VydEVxdWFsKDB1LCBuYWx1X2xlbmd0aCk7Cit9CisK
Ky0gKHZvaWQpdGVzdFJlYWRTaW5nbGVOYWx1IHsKKyAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rl
c3RfZGF0YVtdID0gezB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4QUF9OworICB3ZWJydGM6OkFu
bmV4QkJ1ZmZlclJlYWRlciByZWFkZXIoYW5uZXhfYl90ZXN0X2RhdGEsIGFycmF5c2l6ZShhbm5l
eF9iX3Rlc3RfZGF0YSkpOworICBjb25zdCB1aW50OF90KiBuYWx1ID0gbnVsbHB0cjsKKyAgc2l6
ZV90IG5hbHVfbGVuZ3RoID0gMDsKKyAgWENUQXNzZXJ0RXF1YWwoYXJyYXlzaXplKGFubmV4X2Jf
dGVzdF9kYXRhKSwgcmVhZGVyLkJ5dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3NlcnRUcnVlKHJl
YWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2VydEVxdWFsKGFu
bmV4X2JfdGVzdF9kYXRhICsgNCwgbmFsdSk7CisgIFhDVEFzc2VydEVxdWFsKDF1LCBuYWx1X2xl
bmd0aCk7CisgIFhDVEFzc2VydEVxdWFsKDB1LCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7Cisg
IFhDVEFzc2VydEZhbHNlKHJlYWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7Cisg
IFhDVEFzc2VydEVxdWFsKG51bGxwdHIsIG5hbHUpOworICBYQ1RBc3NlcnRFcXVhbCgwdSwgbmFs
dV9sZW5ndGgpOworfQorCistICh2b2lkKXRlc3RSZWFkU2luZ2xlTmFsdTNCeXRlSGVhZGVyIHsK
KyAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rlc3RfZGF0YVtdID0gezB4MDAsIDB4MDAsIDB4MDEs
IDB4QUF9OworICB3ZWJydGM6OkFubmV4QkJ1ZmZlclJlYWRlciByZWFkZXIoYW5uZXhfYl90ZXN0
X2RhdGEsIGFycmF5c2l6ZShhbm5leF9iX3Rlc3RfZGF0YSkpOworICBjb25zdCB1aW50OF90KiBu
YWx1ID0gbnVsbHB0cjsKKyAgc2l6ZV90IG5hbHVfbGVuZ3RoID0gMDsKKyAgWENUQXNzZXJ0RXF1
YWwoYXJyYXlzaXplKGFubmV4X2JfdGVzdF9kYXRhKSwgcmVhZGVyLkJ5dGVzUmVtYWluaW5nKCkp
OworICBYQ1RBc3NlcnRUcnVlKHJlYWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7
CisgIFhDVEFzc2VydEVxdWFsKGFubmV4X2JfdGVzdF9kYXRhICsgMywgbmFsdSk7CisgIFhDVEFz
c2VydEVxdWFsKDF1LCBuYWx1X2xlbmd0aCk7CisgIFhDVEFzc2VydEVxdWFsKDB1LCByZWFkZXIu
Qnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydEZhbHNlKHJlYWRlci5SZWFkTmFsdSgmbmFs
dSwgJm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2VydEVxdWFsKG51bGxwdHIsIG5hbHUpOworICBY
Q1RBc3NlcnRFcXVhbCgwdSwgbmFsdV9sZW5ndGgpOworfQorCistICh2b2lkKXRlc3RSZWFkTWlz
c2luZ05hbHUgeworICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgIGNvbnN0IHVpbnQ4X3QgYW5uZXhf
Yl90ZXN0X2RhdGFbXSA9IHsweDAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwMCwgMHgwMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4MDAsIDB4MDAsIDB4MDAsIDB4RkZ9OworICAvLyBjbGFuZy1mb3JtYXQgb24KKyAgd2VicnRj
OjpBbm5leEJCdWZmZXJSZWFkZXIgcmVhZGVyKGFubmV4X2JfdGVzdF9kYXRhLCBhcnJheXNpemUo
YW5uZXhfYl90ZXN0X2RhdGEpKTsKKyAgY29uc3QgdWludDhfdCogbmFsdSA9IG51bGxwdHI7Cisg
IHNpemVfdCBuYWx1X2xlbmd0aCA9IDA7CisgIFhDVEFzc2VydEVxdWFsKDB1LCByZWFkZXIuQnl0
ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydEZhbHNlKHJlYWRlci5SZWFkTmFsdSgmbmFsdSwg
Jm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2VydEVxdWFsKG51bGxwdHIsIG5hbHUpOworICBYQ1RB
c3NlcnRFcXVhbCgwdSwgbmFsdV9sZW5ndGgpOworfQorCistICh2b2lkKXRlc3RSZWFkTXVsdGlw
bGVOYWx1cyB7CisgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgY29uc3QgdWludDhfdCBhbm5leF9i
X3Rlc3RfZGF0YVtdID0gezB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4RkYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDAwLCAweDAwLCAweDAxLCAweEFBLCAweEJCfTsKKyAgLy8g
Y2xhbmctZm9ybWF0IG9uCisgIHdlYnJ0Yzo6QW5uZXhCQnVmZmVyUmVhZGVyIHJlYWRlcihhbm5l
eF9iX3Rlc3RfZGF0YSwgYXJyYXlzaXplKGFubmV4X2JfdGVzdF9kYXRhKSk7CisgIGNvbnN0IHVp
bnQ4X3QqIG5hbHUgPSBudWxscHRyOworICBzaXplX3QgbmFsdV9sZW5ndGggPSAwOworICBYQ1RB
c3NlcnRFcXVhbChhcnJheXNpemUoYW5uZXhfYl90ZXN0X2RhdGEpLCByZWFkZXIuQnl0ZXNSZW1h
aW5pbmcoKSk7CisgIFhDVEFzc2VydFRydWUocmVhZGVyLlJlYWROYWx1KCZuYWx1LCAmbmFsdV9s
ZW5ndGgpKTsKKyAgWENUQXNzZXJ0RXF1YWwoYW5uZXhfYl90ZXN0X2RhdGEgKyA0LCBuYWx1KTsK
KyAgWENUQXNzZXJ0RXF1YWwoOHUsIG5hbHVfbGVuZ3RoKTsKKyAgWENUQXNzZXJ0RXF1YWwoNXUs
IHJlYWRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0VHJ1ZShyZWFkZXIuUmVhZE5h
bHUoJm5hbHUsICZuYWx1X2xlbmd0aCkpOworICBYQ1RBc3NlcnRFcXVhbChhbm5leF9iX3Rlc3Rf
ZGF0YSArIDE1LCBuYWx1KTsKKyAgWENUQXNzZXJ0RXF1YWwoMnUsIG5hbHVfbGVuZ3RoKTsKKyAg
WENUQXNzZXJ0RXF1YWwoMHUsIHJlYWRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0
RmFsc2UocmVhZGVyLlJlYWROYWx1KCZuYWx1LCAmbmFsdV9sZW5ndGgpKTsKKyAgWENUQXNzZXJ0
RXF1YWwobnVsbHB0ciwgbmFsdSk7CisgIFhDVEFzc2VydEVxdWFsKDB1LCBuYWx1X2xlbmd0aCk7
Cit9CisKKy0gKHZvaWQpdGVzdEVtcHR5T3V0cHV0QnVmZmVyIHsKKyAgY29uc3QgdWludDhfdCBl
eHBlY3RlZF9idWZmZXJbXSA9IHsweDAwfTsKKyAgY29uc3Qgc2l6ZV90IGJ1ZmZlcl9zaXplID0g
MTsKKyAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gYnVmZmVyKG5ldyB1aW50OF90W2J1ZmZl
cl9zaXplXSk7CisgIG1lbXNldChidWZmZXIuZ2V0KCksIDAsIGJ1ZmZlcl9zaXplKTsKKyAgd2Vi
cnRjOjpBdmNjQnVmZmVyV3JpdGVyIHdyaXRlcihidWZmZXIuZ2V0KCksIDApOworICBYQ1RBc3Nl
cnRFcXVhbCgwdSwgd3JpdGVyLkJ5dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3NlcnRGYWxzZSh3
cml0ZXIuV3JpdGVOYWx1KE5BTFVfVEVTVF9EQVRBXzAsIGFycmF5c2l6ZShOQUxVX1RFU1RfREFU
QV8wKSkpOworICBYQ1RBc3NlcnRFcXVhbCgwLCBtZW1jbXAoZXhwZWN0ZWRfYnVmZmVyLCBidWZm
ZXIuZ2V0KCksIGFycmF5c2l6ZShleHBlY3RlZF9idWZmZXIpKSk7Cit9CisKKy0gKHZvaWQpdGVz
dFdyaXRlU2luZ2xlTmFsdSB7CisgIGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRfYnVmZmVyW10gPSB7
CisgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEFBLCAweEJCLCAweENDLAorICB9Owor
ICBjb25zdCBzaXplX3QgYnVmZmVyX3NpemUgPSBhcnJheXNpemUoTkFMVV9URVNUX0RBVEFfMCkg
KyA0OworICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBidWZmZXIobmV3IHVpbnQ4X3RbYnVm
ZmVyX3NpemVdKTsKKyAgd2VicnRjOjpBdmNjQnVmZmVyV3JpdGVyIHdyaXRlcihidWZmZXIuZ2V0
KCksIGJ1ZmZlcl9zaXplKTsKKyAgWENUQXNzZXJ0RXF1YWwoYnVmZmVyX3NpemUsIHdyaXRlci5C
eXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0VHJ1ZSh3cml0ZXIuV3JpdGVOYWx1KE5BTFVf
VEVTVF9EQVRBXzAsIGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8wKSkpOworICBYQ1RBc3NlcnRF
cXVhbCgwdSwgd3JpdGVyLkJ5dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3NlcnRGYWxzZSh3cml0
ZXIuV3JpdGVOYWx1KE5BTFVfVEVTVF9EQVRBXzEsIGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8x
KSkpOworICBYQ1RBc3NlcnRFcXVhbCgwLCBtZW1jbXAoZXhwZWN0ZWRfYnVmZmVyLCBidWZmZXIu
Z2V0KCksIGFycmF5c2l6ZShleHBlY3RlZF9idWZmZXIpKSk7Cit9CisKKy0gKHZvaWQpdGVzdFdy
aXRlTXVsdGlwbGVOYWx1cyB7CisgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgY29uc3QgdWludDhf
dCBleHBlY3RlZF9idWZmZXJbXSA9IHsKKyAgICAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweEFB
LCAweEJCLCAweENDLAorICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4REUsIDB4QUQsIDB4
QkUsIDB4RUYKKyAgfTsKKyAgLy8gY2xhbmctZm9ybWF0IG9uCisgIGNvbnN0IHNpemVfdCBidWZm
ZXJfc2l6ZSA9IGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8wKSArIGFycmF5c2l6ZShOQUxVX1RF
U1RfREFUQV8xKSArIDg7CisgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IGJ1ZmZlcihuZXcg
dWludDhfdFtidWZmZXJfc2l6ZV0pOworICB3ZWJydGM6OkF2Y2NCdWZmZXJXcml0ZXIgd3JpdGVy
KGJ1ZmZlci5nZXQoKSwgYnVmZmVyX3NpemUpOworICBYQ1RBc3NlcnRFcXVhbChidWZmZXJfc2l6
ZSwgd3JpdGVyLkJ5dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3NlcnRUcnVlKHdyaXRlci5Xcml0
ZU5hbHUoTkFMVV9URVNUX0RBVEFfMCwgYXJyYXlzaXplKE5BTFVfVEVTVF9EQVRBXzApKSk7Cisg
IFhDVEFzc2VydEVxdWFsKGJ1ZmZlcl9zaXplIC0gKGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8w
KSArIDQpLCB3cml0ZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydFRydWUod3JpdGVy
LldyaXRlTmFsdShOQUxVX1RFU1RfREFUQV8xLCBhcnJheXNpemUoTkFMVV9URVNUX0RBVEFfMSkp
KTsKKyAgWENUQXNzZXJ0RXF1YWwoMHUsIHdyaXRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENU
QXNzZXJ0RXF1YWwoMCwgbWVtY21wKGV4cGVjdGVkX2J1ZmZlciwgYnVmZmVyLmdldCgpLCBhcnJh
eXNpemUoZXhwZWN0ZWRfYnVmZmVyKSkpOworfQorCistICh2b2lkKXRlc3RPdmVyZmxvdyB7Cisg
IGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRfYnVmZmVyW10gPSB7MHgwMCwgMHgwMCwgMHgwMH07Cisg
IGNvbnN0IHNpemVfdCBidWZmZXJfc2l6ZSA9IGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8wKTsK
KyAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gYnVmZmVyKG5ldyB1aW50OF90W2J1ZmZlcl9z
aXplXSk7CisgIG1lbXNldChidWZmZXIuZ2V0KCksIDAsIGJ1ZmZlcl9zaXplKTsKKyAgd2VicnRj
OjpBdmNjQnVmZmVyV3JpdGVyIHdyaXRlcihidWZmZXIuZ2V0KCksIGJ1ZmZlcl9zaXplKTsKKyAg
WENUQXNzZXJ0RXF1YWwoYnVmZmVyX3NpemUsIHdyaXRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAg
WENUQXNzZXJ0RmFsc2Uod3JpdGVyLldyaXRlTmFsdShOQUxVX1RFU1RfREFUQV8wLCBhcnJheXNp
emUoTkFMVV9URVNUX0RBVEFfMCkpKTsKKyAgWENUQXNzZXJ0RXF1YWwoYnVmZmVyX3NpemUsIHdy
aXRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMCwgbWVtY21wKGV4cGVj
dGVkX2J1ZmZlciwgYnVmZmVyLmdldCgpLCBhcnJheXNpemUoZXhwZWN0ZWRfYnVmZmVyKSkpOwor
fQorCistICh2b2lkKXRlc3RIMjY0QW5uZXhCQnVmZmVyVG9DTVNhbXBsZUJ1ZmZlciB7CisgIC8v
IGNsYW5nLWZvcm1hdCBvZmYKKyAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rlc3RfZGF0YVtdID0g
eworICAgIDB4MDAsCisgICAgMHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweDAxLCAweDAwLCAweDAw
LCAweEZGLCAvLyBmaXJzdCBjaHVuaywgNCBieXRlcworICAgIDB4MDAsIDB4MDAsIDB4MDEsCisg
ICAgMHhBQSwgMHhGRiwgLy8gc2Vjb25kIGNodW5rLCAyIGJ5dGVzCisgICAgMHgwMCwgMHgwMCwg
MHgwMSwKKyAgICAweEJCfTsgIC8vIHRoaXJkIGNodW5rLCAxIGJ5dGUsIHdpbGwgbm90IGZpdCBp
bnRvIG91dHB1dCBhcnJheQorCisgIGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRfY21zYW1wbGVfZGF0
YVtdID0geworICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisgICAgMHgwMSwgMHgwMCwgMHgw
MCwgMHhGRiwgLy8gZmlyc3QgY2h1bmssIDQgYnl0ZXMKKyAgICAweDAwLCAweDAwLCAweDAwLCAw
eDAyLAorICAgIDB4QUEsIDB4RkZ9OyAvLyBzZWNvbmQgY2h1bmssIDIgYnl0ZXMKKyAgLy8gY2xh
bmctZm9ybWF0IG9uCisKKyAgQ01NZW1vcnlQb29sUmVmIG1lbW9yeV9wb29sID0gQ01NZW1vcnlQ
b29sQ3JlYXRlKG5pbCk7CisgIENNU2FtcGxlQnVmZmVyUmVmIG91dF9zYW1wbGVfYnVmZmVyID0g
bmlsOworICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBbc2VsZiBj
cmVhdGVEZXNjcmlwdGlvbl07CisKKyAgQm9vbGVhbiByZXN1bHQgPSB3ZWJydGM6OkgyNjRBbm5l
eEJCdWZmZXJUb0NNU2FtcGxlQnVmZmVyKGFubmV4X2JfdGVzdF9kYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlzaXpl
KGFubmV4X2JfdGVzdF9kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9zYW1wbGVfYnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVtb3J5X3Bvb2wpOworCisgIFhDVEFzc2VydFRydWUocmVzdWx0KTsKKworICBY
Q1RBc3NlcnRFcXVhbChkZXNjcmlwdGlvbiwgQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlw
dGlvbihvdXRfc2FtcGxlX2J1ZmZlcikpOworCisgIGNoYXIqIGRhdGFfcHRyID0gbnVsbHB0cjsK
KyAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja19idWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldERhdGFC
dWZmZXIob3V0X3NhbXBsZV9idWZmZXIpOworICBzaXplX3QgYmxvY2tfYnVmZmVyX3NpemUgPSBD
TUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChibG9ja19idWZmZXIpOworICBDTUJsb2NrQnVmZmVy
R2V0RGF0YVBvaW50ZXIoYmxvY2tfYnVmZmVyLCAwLCBudWxscHRyLCBudWxscHRyLCAmZGF0YV9w
dHIpOworICBYQ1RBc3NlcnRFcXVhbChibG9ja19idWZmZXJfc2l6ZSwgYXJyYXlzaXplKGFubmV4
X2JfdGVzdF9kYXRhKSk7CisKKyAgaW50IGRhdGFfY29tcGFyaXNvbl9yZXN1bHQgPQorICAgICAg
bWVtY21wKGV4cGVjdGVkX2Ntc2FtcGxlX2RhdGEsIGRhdGFfcHRyLCBhcnJheXNpemUoZXhwZWN0
ZWRfY21zYW1wbGVfZGF0YSkpOworCisgIFhDVEFzc2VydEVxdWFsKDAsIGRhdGFfY29tcGFyaXNv
bl9yZXN1bHQpOworCisgIGlmIChkZXNjcmlwdGlvbikgeworICAgIENGUmVsZWFzZShkZXNjcmlw
dGlvbik7CisgICAgZGVzY3JpcHRpb24gPSBudWxscHRyOworICB9CisKKyAgQ01NZW1vcnlQb29s
SW52YWxpZGF0ZShtZW1vcnlfcG9vbCk7CisgIENGUmVsZWFzZShtZW1vcnlfcG9vbCk7Cit9CisK
Ky0gKHZvaWQpdGVzdEgyNjRDTVNhbXBsZUJ1ZmZlclRvQW5uZXhCQnVmZmVyIHsKKyAgLy8gY2xh
bmctZm9ybWF0IG9mZgorICBjb25zdCB1aW50OF90IGNtc2FtcGxlX2RhdGFbXSA9IHsKKyAgICAw
eDAwLCAweDAwLCAweDAwLCAweDA0LAorICAgIDB4MDEsIDB4MDAsIDB4MDAsIDB4RkYsIC8vIGZp
cnN0IGNodW5rLCA0IGJ5dGVzCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwKKyAgICAweEFB
LCAweEZGfTsgLy8gc2Vjb25kIGNodW5rLCAyIGJ5dGVzCisKKyAgY29uc3QgdWludDhfdCBleHBl
Y3RlZF9hbm5leF9iX2RhdGFbXSA9IHsKKyAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLAorICAg
IDB4MDEsIDB4MDAsIDB4MDAsIDB4RkYsIC8vIGZpcnN0IGNodW5rLCA0IGJ5dGVzCisgICAgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweEFBLCAweEZGfTsgLy8gc2Vjb25kIGNodW5rLCAy
IGJ5dGVzCisgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgIHJ0Yzo6QnVmZmVyIGFubmV4Yl9idWZm
ZXIoYXJyYXlzaXplKGNtc2FtcGxlX2RhdGEpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6
UlRQRnJhZ21lbnRhdGlvbkhlYWRlcj4gb3V0X2hlYWRlcl9wdHI7CisgIENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZV9idWZmZXIgPQorICAgICAgW3NlbGYgY3JlYXRlQ01TYW1wbGVCdWZmZXJSZWY6
KHZvaWQqKWNtc2FtcGxlX2RhdGEgY21zYW1wbGVTaXplOmFycmF5c2l6ZShjbXNhbXBsZV9kYXRh
KV07CisKKyAgQm9vbGVhbiByZXN1bHQgPSB3ZWJydGM6OkgyNjRDTVNhbXBsZUJ1ZmZlclRvQW5u
ZXhCQnVmZmVyKHNhbXBsZV9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpc19rZXlmcmFtZSAqLyBmYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZhbm5leGJfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJm91dF9oZWFkZXJfcHRyKTsKKworICBYQ1RBc3NlcnRUcnVl
KHJlc3VsdCk7CisKKyAgWENUQXNzZXJ0RXF1YWwoYXJyYXlzaXplKGV4cGVjdGVkX2FubmV4X2Jf
ZGF0YSksIGFubmV4Yl9idWZmZXIuc2l6ZSgpKTsKKworICBpbnQgZGF0YV9jb21wYXJpc29uX3Jl
c3VsdCA9CisgICAgICBtZW1jbXAoZXhwZWN0ZWRfYW5uZXhfYl9kYXRhLCBhbm5leGJfYnVmZmVy
LmRhdGEoKSwgYXJyYXlzaXplKGV4cGVjdGVkX2FubmV4X2JfZGF0YSkpOworCisgIFhDVEFzc2Vy
dEVxdWFsKDAsIGRhdGFfY29tcGFyaXNvbl9yZXN1bHQpOworCisgIHdlYnJ0Yzo6UlRQRnJhZ21l
bnRhdGlvbkhlYWRlciogb3V0X2hlYWRlciA9IG91dF9oZWFkZXJfcHRyLmdldCgpOworCisgIFhD
VEFzc2VydEVxdWFsKDIsIChpbnQpb3V0X2hlYWRlci0+U2l6ZSgpKTsKKworICBYQ1RBc3NlcnRF
cXVhbCg0LCAoaW50KW91dF9oZWFkZXItPk9mZnNldCgwKSk7CisgIFhDVEFzc2VydEVxdWFsKDQs
IChpbnQpb3V0X2hlYWRlci0+TGVuZ3RoKDApKTsKKyAgWENUQXNzZXJ0RXF1YWwoMCwgKGludClv
dXRfaGVhZGVyLT5UaW1lRGlmZigwKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hl
YWRlci0+UGF5bG9hZFR5cGUoMCkpOworCisgIFhDVEFzc2VydEVxdWFsKDEyLCAoaW50KW91dF9o
ZWFkZXItPk9mZnNldCgxKSk7CisgIFhDVEFzc2VydEVxdWFsKDIsIChpbnQpb3V0X2hlYWRlci0+
TGVuZ3RoKDEpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMCwgKGludClvdXRfaGVhZGVyLT5UaW1lRGlm
ZigxKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+UGF5bG9hZFR5cGUo
MSkpOworfQorCistICh2b2lkKXRlc3RIMjY0Q01TYW1wbGVCdWZmZXJUb0FubmV4QkJ1ZmZlcldp
dGhLZXlmcmFtZSB7CisgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgY29uc3QgdWludDhfdCBjbXNh
bXBsZV9kYXRhW10gPSB7CisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwKKyAgICAweDAxLCAw
eDAwLCAweDAwLCAweEZGLCAvLyBmaXJzdCBjaHVuaywgNCBieXRlcworICAgIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDIsCisgICAgMHhBQSwgMHhGRn07IC8vIHNlY29uZCBjaHVuaywgMiBieXRlcwor
CisgIGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRfYW5uZXhfYl9kYXRhW10gPSB7CisgICAgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweDAxLCAweDAwLCAweDAwLCAweEZGLCAvLyBmaXJzdCBj
aHVuaywgNCBieXRlcworICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisgICAgMHhBQSwgMHhG
Rn07IC8vIHNlY29uZCBjaHVuaywgMiBieXRlcworICAvLyBjbGFuZy1mb3JtYXQgb24KKworICBy
dGM6OkJ1ZmZlciBhbm5leGJfYnVmZmVyKGFycmF5c2l6ZShjbXNhbXBsZV9kYXRhKSk7CisgIHN0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXI+IG91dF9oZWFkZXJf
cHRyOworICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVfYnVmZmVyID0KKyAgICAgIFtzZWxmIGNy
ZWF0ZUNNU2FtcGxlQnVmZmVyUmVmOih2b2lkKiljbXNhbXBsZV9kYXRhIGNtc2FtcGxlU2l6ZTph
cnJheXNpemUoY21zYW1wbGVfZGF0YSldOworCisgIEJvb2xlYW4gcmVzdWx0ID0gd2VicnRjOjpI
MjY0Q01TYW1wbGVCdWZmZXJUb0FubmV4QkJ1ZmZlcihzYW1wbGVfYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXNf
a2V5ZnJhbWUgKi8gdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZhbm5leGJfYnVmZmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9oZWFkZXJfcHRy
KTsKKworICBYQ1RBc3NlcnRUcnVlKHJlc3VsdCk7CisKKyAgWENUQXNzZXJ0RXF1YWwoYXJyYXlz
aXplKFNQU19QUFNfQlVGRkVSKSArIGFycmF5c2l6ZShleHBlY3RlZF9hbm5leF9iX2RhdGEpLAor
ICAgICAgICAgICAgICAgICBhbm5leGJfYnVmZmVyLnNpemUoKSk7CisKKyAgWENUQXNzZXJ0RXF1
YWwoMCwgbWVtY21wKFNQU19QUFNfQlVGRkVSLCBhbm5leGJfYnVmZmVyLmRhdGEoKSwgYXJyYXlz
aXplKFNQU19QUFNfQlVGRkVSKSkpOworCisgIFhDVEFzc2VydEVxdWFsKDAsCisgICAgICAgICAg
ICAgICAgIG1lbWNtcChleHBlY3RlZF9hbm5leF9iX2RhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICBhbm5leGJfYnVmZmVyLmRhdGEoKSArIGFycmF5c2l6ZShTUFNfUFBTX0JVRkZFUiksCisg
ICAgICAgICAgICAgICAgICAgICAgICBhcnJheXNpemUoZXhwZWN0ZWRfYW5uZXhfYl9kYXRhKSkp
OworCisgIHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlciogb3V0X2hlYWRlciA9IG91dF9o
ZWFkZXJfcHRyLmdldCgpOworCisgIFhDVEFzc2VydEVxdWFsKDQsIChpbnQpb3V0X2hlYWRlci0+
U2l6ZSgpKTsKKworICBYQ1RBc3NlcnRFcXVhbCg0LCAoaW50KW91dF9oZWFkZXItPk9mZnNldCgw
KSk7CisgIFhDVEFzc2VydEVxdWFsKDE0LCAoaW50KW91dF9oZWFkZXItPkxlbmd0aCgwKSk7Cisg
IFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+VGltZURpZmYoMCkpOworICBYQ1RB
c3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFkZXItPlBheWxvYWRUeXBlKDApKTsKKworICBYQ1RB
c3NlcnRFcXVhbCgyMiwgKGludClvdXRfaGVhZGVyLT5PZmZzZXQoMSkpOworICBYQ1RBc3NlcnRF
cXVhbCg0LCAoaW50KW91dF9oZWFkZXItPkxlbmd0aCgxKSk7CisgIFhDVEFzc2VydEVxdWFsKDAs
IChpbnQpb3V0X2hlYWRlci0+VGltZURpZmYoMSkpOworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50
KW91dF9oZWFkZXItPlBheWxvYWRUeXBlKDEpKTsKKworICBYQ1RBc3NlcnRFcXVhbCgzMCwgKGlu
dClvdXRfaGVhZGVyLT5PZmZzZXQoMikpOworICBYQ1RBc3NlcnRFcXVhbCg0LCAoaW50KW91dF9o
ZWFkZXItPkxlbmd0aCgyKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+
VGltZURpZmYoMikpOworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFkZXItPlBheWxv
YWRUeXBlKDIpKTsKKworICBYQ1RBc3NlcnRFcXVhbCgzOCwgKGludClvdXRfaGVhZGVyLT5PZmZz
ZXQoMykpOworICBYQ1RBc3NlcnRFcXVhbCgyLCAoaW50KW91dF9oZWFkZXItPkxlbmd0aCgzKSk7
CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+VGltZURpZmYoMykpOworICBY
Q1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFkZXItPlBheWxvYWRUeXBlKDMpKTsKK30KKwor
LSAoQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKWNyZWF0ZURlc2NyaXB0aW9uIHsKKyAgQ01W
aWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2NyaXB0aW9uID0KKyAgICAgIHdlYnJ0Yzo6Q3Jl
YXRlVmlkZW9Gb3JtYXREZXNjcmlwdGlvbihTUFNfUFBTX0JVRkZFUiwgYXJyYXlzaXplKFNQU19Q
UFNfQlVGRkVSKSk7CisgIFhDVEFzc2VydFRydWUoZGVzY3JpcHRpb24pOworICByZXR1cm4gZGVz
Y3JpcHRpb247Cit9CisKKy0gKENNU2FtcGxlQnVmZmVyUmVmKWNyZWF0ZUNNU2FtcGxlQnVmZmVy
UmVmOih2b2lkKiljbXNhbXBsZURhdGEgY21zYW1wbGVTaXplOihzaXplX3QpY21zYW1wbGVTaXpl
IHsKKyAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlX2J1ZmZlciA9IG5pbDsKKyAgT1NTdGF0dXMg
c3RhdHVzOworCisgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjcmlwdGlvbiA9IFtz
ZWxmIGNyZWF0ZURlc2NyaXB0aW9uXTsKKyAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja19idWZmZXIg
PSBudWxscHRyOworCisgIHN0YXR1cyA9IENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5Qmxv
Y2sobnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbXNhbXBsZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY21zYW1wbGVTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNtc2FtcGxlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0ZsYWcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsb2NrX2J1ZmZlcik7CisKKyAgc3RhdHVz
ID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUobnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYmxvY2tfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnNhbXBsZV9idWZmZXIpOworCisgIHJldHVybiBzYW1wbGVfYnVm
ZmVyOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3Rv
cnlfdGVzdHMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy91bml0dGVzdHMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnlfdGVzdHMubW0KaW5k
ZXggZDAwOWQ1MWJiYTMxNTQ1NDdjMmJjMTRlZWQyY2FmNjMwNjYyNjViMC4uNTBjMzBjMGM3NDQy
NzUzMzcxNjA3YTAxZmIwZmU1ZGVlYTJmZTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL29iamNfdmlkZW9f
ZW5jb2Rlcl9mYWN0b3J5X3Rlc3RzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFj
dG9yeV90ZXN0cy5tbQpAQCAtODIsNyArODIsNiBAQCBURVNUKE9iakNWaWRlb0VuY29kZXJGYWN0
b3J5VGVzdCwgRW5jb2RlUmV0dXJuc09LT25TdWNjZXNzKSB7CiAgIHdlYnJ0Yzo6VmlkZW9GcmFt
ZSBmcmFtZShidWZmZXIsIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCwgMCk7CiAgIHdlYnJ0Yzo6
Q29kZWNTcGVjaWZpY0luZm8gaW5mbzsKICAgaW5mby5jb2RlY1R5cGUgPSB3ZWJydGM6OmtWaWRl
b0NvZGVjSDI2NDsKLSAgaW5mby5jb2RlY19uYW1lID0gIkgyNjQiOwogICBzdGQ6OnZlY3Rvcjx3
ZWJydGM6OkZyYW1lVHlwZT4gZnJhbWVfdHlwZXM7CiAKICAgRVhQRUNUX0VRKGVuY29kZXItPkVu
Y29kZShmcmFtZSwgJmluZm8sICZmcmFtZV90eXBlcyksIFdFQlJUQ19WSURFT19DT0RFQ19PSyk7
CkBAIC05OSw3ICs5OCw2IEBAIFRFU1QoT2JqQ1ZpZGVvRW5jb2RlckZhY3RvcnlUZXN0LCBFbmNv
ZGVSZXR1cm5zRXJyb3JPbkZhaWwpIHsKICAgd2VicnRjOjpWaWRlb0ZyYW1lIGZyYW1lKGJ1ZmZl
ciwgd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wLCAwKTsKICAgd2VicnRjOjpDb2RlY1NwZWNpZmlj
SW5mbyBpbmZvOwogICBpbmZvLmNvZGVjVHlwZSA9IHdlYnJ0Yzo6a1ZpZGVvQ29kZWNIMjY0Owot
ICBpbmZvLmNvZGVjX25hbWUgPSAiSDI2NCI7CiAgIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6RnJhbWVU
eXBlPiBmcmFtZV90eXBlczsKIAogICBFWFBFQ1RfRVEoZW5jb2Rlci0+RW5jb2RlKGZyYW1lLCAm
aW5mbywgJmZyYW1lX3R5cGVzKSwgV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SKTsKQEAgLTExNywx
MiArMTE1LDYgQEAgVEVTVChPYmpDVmlkZW9FbmNvZGVyRmFjdG9yeVRlc3QsIFJlbGVhc2VFbmNv
ZGVSZXR1cm5zRXJyb3JPbkZhaWwpIHsKICAgRVhQRUNUX0VRKGVuY29kZXItPlJlbGVhc2UoKSwg
V0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SKTsKIH0KIAotVEVTVChPYmpDVmlkZW9FbmNvZGVyRmFj
dG9yeVRlc3QsIFNldENoYW5uZWxQYXJhbWV0ZXJzQWx3YXlzUmV0dXJuc09LKSB7Ci0gIHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rlcj4gZW5jb2RlciA9IEdldE9iakNFbmNvZGVy
KENyZWF0ZUVycm9yRW5jb2RlckZhY3RvcnkoKSk7Ci0KLSAgRVhQRUNUX0VRKGVuY29kZXItPlNl
dENoYW5uZWxQYXJhbWV0ZXJzKDEsIDEpLCBXRUJSVENfVklERU9fQ09ERUNfT0spOwotfQotCiBU
RVNUKE9iakNWaWRlb0VuY29kZXJGYWN0b3J5VGVzdCwgU2V0UmF0ZXNSZXR1cm5zT0tPblN1Y2Nl
c3MpIHsKICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyPiBlbmNvZGVyID0g
R2V0T2JqQ0VuY29kZXIoQ3JlYXRlT0tFbmNvZGVyRmFjdG9yeSgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3RhdHMvQlVJTEQuZ24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy9CVUlMRC5n
bgppbmRleCBkZTMwMGYxOGNmMmZhZjNiOTRiNmY1OTAwZmVkNWY3YmJkMTUyNzc4Li5jNjdhNWJl
MzY1NGRlNjIyNDQ0MmVhMTNmOTU0OGE3MGNjMzU1OGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy9CVUlMRC5nbgorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy9CVUlMRC5nbgpAQCAt
NDAsNiArNDAsNyBAQCBydGNfc291cmNlX3NldCgicnRjX3N0YXRzX3Rlc3RfdXRpbHMiKSB7CiAg
IGRlcHMgPSBbCiAgICAgIjpydGNfc3RhdHMiLAogICAgICIuLi9hcGk6cnRjX3N0YXRzX2FwaSIs
CisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgXQogfQogCkBAIC01Niw5
ICs1Nyw5IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpydGNfc3RhdHNfdGVz
dF91dGlscyIsCiAgICAgICAiLi4vYXBpOnJ0Y19zdGF0c19hcGkiLAogICAgICAgIi4uL3J0Y19i
YXNlOmNoZWNrcyIsCisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX3Rlc3RzX21haW4iLAotICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxz
IiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfanNvbiIsCiAgICAgXQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy9ydGNzdGF0c19v
YmplY3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3Rh
dHMvcnRjc3RhdHNfb2JqZWN0cy5jYwppbmRleCBkY2MxMTgwZjE2ZjEwZmZjMjg1YWRiZmU2NzAy
ZjE2NmM3MWVhODUxLi5jZDUyYTU1OTcxYmViYTNlZmZmNjkwNTdhYWUyZTYyMDZmZDU3MjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0
cy9ydGNzdGF0c19vYmplY3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3N0YXRzL3J0Y3N0YXRzX29iamVjdHMuY2MKQEAgLTM3NCw3ICszNzQsOSBA
QCBXRUJSVENfUlRDU1RBVFNfSU1QTChSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHMsIFJUQ1N0YXRz
LCAidHJhY2siLAogICAgICAgICAgICAgICAgICAgICAgJnRvdGFsX3NhbXBsZXNfcmVjZWl2ZWQs
CiAgICAgICAgICAgICAgICAgICAgICAmdG90YWxfc2FtcGxlc19kdXJhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICZjb25jZWFsZWRfc2FtcGxlcywKLSAgICAgICAgICAgICAgICAgICAgICZj
b25jZWFsbWVudF9ldmVudHMpOworICAgICAgICAgICAgICAgICAgICAgJmNvbmNlYWxtZW50X2V2
ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICZqaXR0ZXJfYnVmZmVyX2ZsdXNoZXMsCisgICAg
ICAgICAgICAgICAgICAgICAmZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMpOwogLy8gY2xh
bmctZm9ybWF0IG9uCiAKIFJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0czo6UlRDTWVkaWFTdHJlYW1U
cmFja1N0YXRzKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwKQEAgLTQxMCw3ICs0MTIsOSBAQCBSVENN
ZWRpYVN0cmVhbVRyYWNrU3RhdHM6OlJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyhzdGQ6OnN0cmlu
ZyYmIGlkLAogICAgICAgdG90YWxfc2FtcGxlc19yZWNlaXZlZCgidG90YWxTYW1wbGVzUmVjZWl2
ZWQiKSwKICAgICAgIHRvdGFsX3NhbXBsZXNfZHVyYXRpb24oInRvdGFsU2FtcGxlc0R1cmF0aW9u
IiksCiAgICAgICBjb25jZWFsZWRfc2FtcGxlcygiY29uY2VhbGVkU2FtcGxlcyIpLAotICAgICAg
Y29uY2VhbG1lbnRfZXZlbnRzKCJjb25jZWFsbWVudEV2ZW50cyIpIHsKKyAgICAgIGNvbmNlYWxt
ZW50X2V2ZW50cygiY29uY2VhbG1lbnRFdmVudHMiKSwKKyAgICAgIGppdHRlcl9idWZmZXJfZmx1
c2hlcygiaml0dGVyQnVmZmVyRmx1c2hlcyIpLAorICAgICAgZGVsYXllZF9wYWNrZXRfb3V0YWdl
X3NhbXBsZXMoImRlbGF5ZWRQYWNrZXRPdXRhZ2VTYW1wbGVzIikgewogICBSVENfRENIRUNLKGtp
bmQgPT0gUlRDTWVkaWFTdHJlYW1UcmFja0tpbmQ6OmtBdWRpbyB8fAogICAgICAgICAgICAgIGtp
bmQgPT0gUlRDTWVkaWFTdHJlYW1UcmFja0tpbmQ6OmtWaWRlbyk7CiB9CkBAIC00NDIsNyArNDQ2
LDkgQEAgUlRDTWVkaWFTdHJlYW1UcmFja1N0YXRzOjpSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHMo
CiAgICAgICB0b3RhbF9zYW1wbGVzX3JlY2VpdmVkKG90aGVyLnRvdGFsX3NhbXBsZXNfcmVjZWl2
ZWQpLAogICAgICAgdG90YWxfc2FtcGxlc19kdXJhdGlvbihvdGhlci50b3RhbF9zYW1wbGVzX2R1
cmF0aW9uKSwKICAgICAgIGNvbmNlYWxlZF9zYW1wbGVzKG90aGVyLmNvbmNlYWxlZF9zYW1wbGVz
KSwKLSAgICAgIGNvbmNlYWxtZW50X2V2ZW50cyhvdGhlci5jb25jZWFsbWVudF9ldmVudHMpIHt9
CisgICAgICBjb25jZWFsbWVudF9ldmVudHMob3RoZXIuY29uY2VhbG1lbnRfZXZlbnRzKSwKKyAg
ICAgIGppdHRlcl9idWZmZXJfZmx1c2hlcyhvdGhlci5qaXR0ZXJfYnVmZmVyX2ZsdXNoZXMpLAor
ICAgICAgZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMob3RoZXIuZGVsYXllZF9wYWNrZXRf
b3V0YWdlX3NhbXBsZXMpIHt9CiAKIFJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0czo6flJUQ01lZGlh
U3RyZWFtVHJhY2tTdGF0cygpIHt9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0YXRzL3Rlc3QvcnRjdGVzdHN0YXRzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy90ZXN0L3J0Y3Rlc3RzdGF0
cy5oCmluZGV4IDdjOGUxMDUxZmYxMGFjZTQ1NjhjMjU3NDlhOTJkNzk2YmJjYWQ4YTUuLmE3ZDJj
OTFkYTA2MWQyNDUyMjUxYjg2MGZmMDJjMGE1ZDEyOWM3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0YXRzL3Rlc3QvcnRjdGVzdHN0YXRz
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3RhdHMv
dGVzdC9ydGN0ZXN0c3RhdHMuaApAQCAtMTUsMTAgKzE1LDExIEBACiAjaW5jbHVkZSA8dmVjdG9y
PgogCiAjaW5jbHVkZSAiYXBpL3N0YXRzL3J0Y3N0YXRzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
c3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIFJUQ1Rl
c3RTdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ1Rlc3RTdGF0
cyA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zdHlsZS1ndWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3N0eWxlLWd1aWRlLm1kCmluZGV4IDJhMzVmZGM1ZDFhNDc2ZWQ3NTY5MmUyMTAxNDgxZTM2
NzY4M2U3YWIuLjM5MWM0NWI2NDRkMDQxYTg5NDI0MDFhZDNkZWJkNmRlODQxNjFjYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0eWxlLWd1
aWRlLm1kCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0
eWxlLWd1aWRlLm1kCkBAIC03Nyw2ICs3NywxOCBAQCBpbnN0ZWFkIG9mICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHVzZQogCiBTZWUgW3RoZSBzb3VyY2VdKGFwaS9hcnJheV92aWV3LmgpIGZv
ciBtb3JlIGRldGFpbGVkIGRvY3MuCiAKKyMjIyBgYWJzbDo6b3B0aW9uYWw8VD5gIGFzIGZ1bmN0
aW9uIGFyZ3VtZW50CisKK2BhYnNsOjpvcHRpb25hbDxUPmAgaXMgZ2VuZXJhbGx5IGEgZ29vZCBj
aG9pY2Ugd2hlbiB5b3Ugd2FudCB0byBwYXNzIGEKK3Bvc3NpYmx5IG1pc3NpbmcgYFRgIHRvIGEg
ZnVuY3Rpb24mbWRhc2g7cHJvdmlkZWQgb2YgY291cnNlIHRoYXQgYFRgCitpcyBhIHR5cGUgdGhh
dCBpdCBtYWtlcyBzZW5zZSB0byBwYXNzIGJ5IHZhbHVlLgorCitIb3dldmVyLCB3aGVuIHlvdSB3
YW50IHRvIGF2b2lkIHBhc3MtYnktdmFsdWUsIGdlbmVyYWxseSAqKmRvIG5vdCBwYXNzCitgY29u
c3QgYWJzbDo6b3B0aW9uYWw8VD4mYDsgdXNlIGBjb25zdCBUKmAgaW5zdGVhZC4qKiBgY29uc3QK
K2Fic2w6Om9wdGlvbmFsPFQ+JmAgZm9yY2VzIHRoZSBjYWxsZXIgdG8gc3RvcmUgdGhlIGBUYCBp
biBhbgorYGFic2w6Om9wdGlvbmFsPFQ+YDsgYGNvbnN0IFQqYCwgb24gdGhlIG90aGVyIGhhbmQs
IG1ha2VzIG5vCithc3N1bXB0aW9ucyBhYm91dCBob3cgdGhlIGBUYCBpcyBzdG9yZWQuCisKICMj
IyBzaWdzbG90CiAKIHNpZ3Nsb3QgaXMgYSBsaWdodHdlaWdodCBsaWJyYXJ5IHRoYXQgYWRkcyBh
IHNpZ25hbC9zbG90IGxhbmd1YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvQlVJTEQuZ24K
aW5kZXggZWI2MDA1MjI2NTkzYjRlZWE0NGIxOWZkOTRhZmU4MzBiODM5MWRiYy4uZGE4M2QxMmU4
ZGIxOTE5NDI4YTQ5MzkxYWIxMTQ2YTQwZjhlZjNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL0JVSUxELmduCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFw
cGVycy9CVUlMRC5nbgpAQCAtMzMsNyArMzMsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoInN5c3Rl
bV93cmFwcGVycyIpIHsKICAgbGlicyA9IFtdCiAgIGRlcHMgPSBbCiAgICAgIjpjcHVfZmVhdHVy
ZXNfYXBpIiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uL2FwaTphcnJheV92aWV3
IiwKICAgICAiLi4vbW9kdWxlczptb2R1bGVfYXBpX3B1YmxpYyIsCiAgICAgIi4uL3J0Y19iYXNl
OmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlL3N5bmNocm9uaXphdGlvbjpyd19sb2NrX3dyYXBw
ZXIiLApAQCAtODksOSArODksNiBAQCBydGNfc291cmNlX3NldCgiY3B1X2ZlYXR1cmVzX2FwaSIp
IHsKICAgc291cmNlcyA9IFsKICAgICAiaW5jbHVkZS9jcHVfZmVhdHVyZXNfd3JhcHBlci5oIiwK
ICAgXQotICBkZXBzID0gWwotICAgICIuLjp3ZWJydGNfY29tbW9uIiwKLSAgXQogfQogCiBydGNf
c291cmNlX3NldCgiZmllbGRfdHJpYWwiKSB7CkBAIC0xMDUsNiArMTAyLDE2IEBAIHJ0Y19zb3Vy
Y2Vfc2V0KCJmaWVsZF90cmlhbCIpIHsKICAgaWYgKHJ0Y19leGNsdWRlX2ZpZWxkX3RyaWFsX2Rl
ZmF1bHQpIHsKICAgICBkZWZpbmVzID0gWyAiV0VCUlRDX0VYQ0xVREVfRklFTERfVFJJQUxfREVG
QVVMVCIgXQogICB9CisgIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CisgICAgIyBXaGVuIFdl
YlJUQyBpcyBidWlsdCBhcyBwYXJ0IG9mIENocm9taXVtIGl0IHNob3VsZCBleGNsdWRlIHRoZSBk
ZWZhdWx0CisgICAgIyBpbXBsZW1lbnRhdGlvbiBvZiBmaWVsZF90cmlhbCB1bmxlc3MgaXQgaXMg
YnVpbGRpbmcgZm9yIE5BQ0wgb3IKKyAgICAjIENocm9tZWNhc3QuCisgICAgaWYgKCFpc19uYWNs
ICYmICFpc19jaHJvbWVjYXN0KSB7CisgICAgICBkZXBzID0gWworICAgICAgICAiLi4vLi4vd2Vi
cnRjX292ZXJyaWRlczpmaWVsZF90cmlhbCIsCisgICAgICBdCisgICAgfQorICB9CiB9CiAKIHJ0
Y19zb3VyY2Vfc2V0KCJtZXRyaWNzIikgewpAQCAtMTIzLDYgKzEzMCw5IEBAIHJ0Y19zb3VyY2Vf
c2V0KCJtZXRyaWNzIikgewogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgIF0KKyAgaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0p
IHsKKyAgICBkZXBzICs9IFsgIi4uLy4uL3dlYnJ0Y19vdmVycmlkZXM6bWV0cmljcyIgXQorICB9
CiB9CiAKIGlmIChpc19hbmRyb2lkICYmICFidWlsZF93aXRoX21vemlsbGEpIHsKQEAgLTE2Niw2
ICsxNzYsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLjp3ZWJydGNfY29t
bW9uIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4v
dGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICIv
L3Rlc3RpbmcvZ3Rlc3QiLAogICAgIF0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL09XTkVSUyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9PV05FUlMK
aW5kZXggMTNiMDhhMzZlZjhmNDgyYjQ5YjZhZmYyYTI4NGFmMGQzMTAyNzVmZC4uYTA4ZjYxMTRi
OTI3NWRmMTJkZTQ1YzE1ZWZlZjI0ZmVmOTlkODNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL09XTkVSUworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBl
cnMvT1dORVJTCkBAIC0yLDcgKzIsNiBAQCBoZW5yaWthQHdlYnJ0Yy5vcmcKIG1mbG9kbWFuQHdl
YnJ0Yy5vcmcKIG5pa2xhcy5lbmJvbUB3ZWJydGMub3JnCiBuaXNzZUB3ZWJydGMub3JnCi1wZXJr
akB3ZWJydGMub3JnCiAKICMgVGhlc2UgYXJlIGZvciB0aGUgY29tbW9uIGNhc2Ugb2YgYWRkaW5n
IG9yIHJlbmFtaW5nIGZpbGVzLiBJZiB5b3UncmUgZG9pbmcKICMgc3RydWN0dXJhbCBjaGFuZ2Vz
LCBwbGVhc2UgZ2V0IGEgcmV2aWV3IGZyb20gYSByZXZpZXdlciBpbiB0aGlzIGZpbGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1f
d3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaAppbmRleCA0YjZlYWI4
ZWRjZWJlNTk4YTNiOGRjYWQ4MzA4MWFiMjQzYjJmMmM1Li5mMWZjMTFmMTcyOThlODc2MmM5M2Nj
YmRjNjg0NjA0M2EyMWIxNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9p
bmNsdWRlL2Nsb2NrLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgU1lTVEVNX1dSQVBQRVJT
X0lOQ0xVREVfQ0xPQ0tfSF8KICNkZWZpbmUgU1lTVEVNX1dSQVBQRVJTX0lOQ0xVREVfQ0xPQ0tf
SF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUg
InJ0Y19iYXNlL3N5bmNocm9uaXphdGlvbi9yd19sb2NrX3dyYXBwZXIuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVy
cy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaAppbmRl
eCAwNTMxZGRiNTYzOGJlMGVjZTg0NTZlOThmNmMzZjQyMWQ1OWY1NzBlLi45ODllNzkyOWIzOWEw
ODE4MjMwMTExMGFlNGYyYjUyMmY5OTFiNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93
cmFwcGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oCkBAIC0xMiwxMSArMTIsNyBA
QAogI2RlZmluZSBTWVNURU1fV1JBUFBFUlNfSU5DTFVERV9FVkVOVF9XUkFQUEVSX0hfCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewotZW51bSBFdmVudFR5cGVXcmFwcGVyIHsKLSAga0V2ZW50U2lnbmFs
ZWQgPSAxLAotICBrRXZlbnRFcnJvciA9IDIsCi0gIGtFdmVudFRpbWVvdXQgPSAzCi19OworZW51
bSBFdmVudFR5cGVXcmFwcGVyIHsga0V2ZW50U2lnbmFsZWQgPSAxLCBrRXZlbnRUaW1lb3V0ID0g
MiB9OwogCiAjZGVmaW5lIFdFQlJUQ19FVkVOVF9JTkZJTklURSAweGZmZmZmZmZmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93
cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaAppbmRleCAyYTJj
ZGEwMmQwM2Y1OWEzNGQ2MjEwODhlYThlYTljMDZjNDU1MDEyLi5mMDBlY2YyNjIyYWVmZDgxNzcx
NzA4NmI2M2FiNGViNGQ5YjMzOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvbWV0cmljcy5oCkBAIC0xNSw3ICsxNSw2IEBACiAjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHN0cmluZz4KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9M
SU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL3J0cF90b19u
dHBfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ydHBfdG9fbnRwX2VzdGltYXRvci5oCmluZGV4IGQ3
MDA5ZDhiMWY0NTA0ZGI1ZDcyODNiZmE3OWQ5MmUyODg5ZjQ0NWMuLmMyNDRjNGZmMjc0NTIwOWJm
ZDQ4ZWM0NWQ5YzhiNjQzNGFlZmNlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL3J0cF90b19udHBf
ZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvcnRwX3RvX250cF9lc3RpbWF0b3IuaApAQCAtMTEs
MTAgKzExLDEyIEBACiAjaWZuZGVmIFNZU1RFTV9XUkFQUEVSU19JTkNMVURFX1JUUF9UT19OVFBf
RVNUSU1BVE9SX0hfCiAjZGVmaW5lIFNZU1RFTV9XUkFQUEVSU19JTkNMVURFX1JUUF9UT19OVFBf
RVNUSU1BVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxsaXN0PgogCiAj
aW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVk
ZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL21vdmluZ19tZWRpYW5fZmlsdGVyLmgi
CiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbnRwX3RpbWUuaCIKIApAQCAtNDAs
MjMgKzQyLDEzIEBAIGNsYXNzIFJ0cFRvTnRwRXN0aW1hdG9yIHsKIAogICAvLyBFc3RpbWF0ZWQg
cGFyYW1ldGVycyBmcm9tIFJUUCBhbmQgTlRQIHRpbWVzdGFtcCBwYWlycyBpbiB8bWVhc3VyZW1l
bnRzX3wuCiAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKLSAgICAvLyBJbXBsaWNpdCBjb252ZXJzaW9u
IGZyb20gaW50IGJlY2F1c2UgTW92aW5nTWVkaWFuRmlsdGVyIHJldHVybnMgMAotICAgIC8vIGlu
dGVybmFsbHkgaWYgbm8gc2FtcGxlcyBhcmUgcHJlc2VudC4gSG93ZXZlciwgaXQgc2hvdWxkIG5l
dmVyIGhhcHBlbiBhcwotICAgIC8vIHdlIGRvbid0IGFzayBzbW9vdGhpbmdfZmlsdGVyXyB0byBy
ZXR1cm4gYW55dGhpbmcgaWYgdGhlcmUgd2VyZSBubwotICAgIC8vIHNhbXBsZXMuCi0gICAgUGFy
YW1ldGVycyhjb25zdCBpbnQmIHZhbHVlKSB7ICAvLyBOT0xJTlQKLSAgICAgIFJUQ19OT1RSRUFD
SEVEKCk7Ci0gICAgfQogICAgIFBhcmFtZXRlcnMoKSA6IGZyZXF1ZW5jeV9raHooMC4wKSwgb2Zm
c2V0X21zKDAuMCkge30KIAorICAgIFBhcmFtZXRlcnMoZG91YmxlIGZyZXF1ZW5jeV9raHosIGRv
dWJsZSBvZmZzZXRfbXMpCisgICAgICAgIDogZnJlcXVlbmN5X2toeihmcmVxdWVuY3lfa2h6KSwg
b2Zmc2V0X21zKG9mZnNldF9tcykge30KKwogICAgIGRvdWJsZSBmcmVxdWVuY3lfa2h6OwogICAg
IGRvdWJsZSBvZmZzZXRfbXM7Ci0KLSAgICAvLyBOZWVkZWQgdG8gbWFrZSBpdCB3b3JrIGluc2lk
ZSBNb3ZpbmdNZWRpYW5GaWx0ZXIKLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBQYXJhbWV0ZXJz
JiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhcmFtZXRlcnMmIG90
aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgUGFyYW1ldGVycyYgb3RoZXIp
IGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXJhbWV0ZXJzJiBvdGhlcikgY29u
c3Q7CiAgIH07CiAKICAgLy8gVXBkYXRlcyBtZWFzdXJlbWVudHMgd2l0aCBSVFAvTlRQIHRpbWVz
dGFtcCBwYWlyIGZyb20gYSBSVENQIHNlbmRlciByZXBvcnQuCkBAIC02OCw3ICs2MCw3IEBAIGNs
YXNzIFJ0cFRvTnRwRXN0aW1hdG9yIHsKIAogICAvLyBDb252ZXJ0cyBhbiBSVFAgdGltZXN0YW1w
IHRvIHRoZSBOVFAgZG9tYWluIGluIG1pbGxpc2Vjb25kcy4KICAgLy8gUmV0dXJucyB0cnVlIG9u
IHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZS4KLSAgYm9vbCBFc3RpbWF0ZShpbnQ2NF90IHJ0cF90
aW1lc3RhbXAsIGludDY0X3QqIHJ0cF90aW1lc3RhbXBfbXMpIGNvbnN0OworICBib29sIEVzdGlt
YXRlKGludDY0X3QgcnRwX3RpbWVzdGFtcCwgaW50NjRfdCogbnRwX3RpbWVzdGFtcF9tcykgY29u
c3Q7CiAKICAgLy8gUmV0dXJucyBlc3RpbWF0ZWQgcnRwIHRvIG50cCBsaW5lYXIgdHJhbnNmb3Jt
IHBhcmFtZXRlcnMuCiAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFBhcmFtZXRlcnM+IHBhcmFtcygp
IGNvbnN0OwpAQCAtODAsOCArNzIsNyBAQCBjbGFzcyBSdHBUb050cEVzdGltYXRvciB7CiAKICAg
aW50IGNvbnNlY3V0aXZlX2ludmFsaWRfc2FtcGxlc187CiAgIHN0ZDo6bGlzdDxSdGNwTWVhc3Vy
ZW1lbnQ+IG1lYXN1cmVtZW50c187Ci0gIE1vdmluZ01lZGlhbkZpbHRlcjxQYXJhbWV0ZXJzPiBz
bW9vdGhpbmdfZmlsdGVyXzsKLSAgYm9vbCBwYXJhbXNfY2FsY3VsYXRlZF87CisgIGFic2w6Om9w
dGlvbmFsPFBhcmFtZXRlcnM+IHBhcmFtc187CiAgIG11dGFibGUgVGltZXN0YW1wVW53cmFwcGVy
IHVud3JhcHBlcl87CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3Nv
dXJjZS9jbG9jay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3N5c3RlbV93cmFwcGVycy9zb3VyY2UvY2xvY2suY2MKaW5kZXggMzVhYjVmMDg3ODM3OWVjZjU1
YzViZWE4NWQ5ZjFhYzU2ZTMyMDM2ZC4uNGY1ZDljZmYxZjNhM2E3M2MzOWFiYjMyYWRmNzcxM2Rh
OWIwZTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9jbG9jay5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL2Nsb2Nr
LmNjCkBAIC0xNyw2ICsxNyw4IEBACiAKICNpbmNsdWRlIDxtbXN5c3RlbS5oPgogCisjaW5jbHVk
ZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisKICNlbGlmIGRlZmluZWQoV0VCUlRDX1BP
U0lYKQogCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KQEAgLTI0LDcgKzI2LDYgQEAKIAogI2VuZGlm
ICAvLyBkZWZpbmVkKFdFQlJUQ19QT1NJWCkKIAotI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fs
c2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5bmNocm9uaXphdGlvbi9yd19sb2NrX3dy
YXBwZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJz
L3NvdXJjZS9ldmVudC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvZXZlbnQuY2MKaW5kZXggZDFkMmNkYWZmMDc3Y2Mz
Y2JiM2Q0YjI3Nzg0YjVhMmQxMzhjNWQ1ZS4uMGM0Y2UxMDE1N2MyMTYxMTE2OWRiYmViNzNjZDA5
MzE4ZDU5MDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9ldmVudC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL2V2
ZW50LmNjCkBAIC0xNCw5ICsxNCw2IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VsaWYgZGVm
aW5lZChXRUJSVENfTUFDKSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQogI2luY2x1ZGUgPEFwcGxp
Y2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgotI2luY2x1ZGUgPHB0aHJlYWQu
aD4KLSNlbHNlCi0jaW5jbHVkZSA8cHRocmVhZC5oPgogI2VuZGlmCiAKICNpbmNsdWRlICJydGNf
YmFzZS9ldmVudC5oIgpAQCAtMjUsNyArMjIsNiBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xh
c3MgRXZlbnRXcmFwcGVySW1wbCA6IHB1YmxpYyBFdmVudFdyYXBwZXIgewogIHB1YmxpYzoKLSAg
RXZlbnRXcmFwcGVySW1wbCgpIDogZXZlbnRfKGZhbHNlLCBmYWxzZSkge30KICAgfkV2ZW50V3Jh
cHBlckltcGwoKSBvdmVycmlkZSB7fQogCiAgIGJvb2wgU2V0KCkgb3ZlcnJpZGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dy
YXBwZXJzL3NvdXJjZS9maWVsZF90cmlhbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvZmllbGRfdHJpYWwuY2MKaW5k
ZXggNjAxNThmNDg4NjViYzUxYWFmZDdhMzcxMzIzNTI0YWI1YzJmZWFiMy4uYWM3MTMxMTQ0YWVm
MmI5NzEzNTAwZmMzNjNmYTQ5YmMzNjE3NTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9maWVsZF90
cmlhbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
eXN0ZW1fd3JhcHBlcnMvc291cmNlL2ZpZWxkX3RyaWFsLmNjCkBAIC05LDYgKzksNyBAQAogCiAj
aW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAorI2luY2x1
ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAogLy8gU2ltcGxlIGZpZWxkIHRyaWFs
IGltcGxlbWVudGF0aW9uLCB3aGljaCBhbGxvd3MgY2xpZW50IHRvCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291
cmNlL3J0cF90b19udHBfZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9ydHBfdG9fbnRwX2VzdGltYXRv
ci5jYwppbmRleCA3MzBjNGY2NjkxZmNjYzE0ZGNmMjQwMDQxY2IyNDBmZDFmMjM1MDAyLi40YmJm
NjA5NmQ5MGM1Y2MxNjRjN2ViNGM3NmY4M2IzYjkwZmU0NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNl
L3J0cF90b19udHBfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvcnRwX3RvX250cF9lc3RpbWF0
b3IuY2MKQEAgLTEwLDMwICsxMCwyMyBAQAogCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2lu
Y2x1ZGUvcnRwX3RvX250cF9lc3RpbWF0b3IuaCIKIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2lu
Y2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFwaS9hcnJheV92
aWV3LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
bG9nZ2luZy5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKLS8vIE51bWJlciBvZiBSVENQIFNSIHJl
cG9ydHMgdG8gdXNlIHRvIG1hcCBiZXR3ZWVuIFJUUCBhbmQgTlRQLgotY29uc3Qgc2l6ZV90IGtO
dW1SdGNwUmVwb3J0c1RvVXNlID0gMjsKLS8vIE51bWJlciBvZiBwYXJhbWV0ZXJzIHNhbXBsZXMg
dXNlZCB0byBzbW9vdGguCi1jb25zdCBzaXplX3Qga051bVNhbXBsZXNUb1Ntb290aCA9IDIwOwot
Ci0vLyBDYWxjdWxhdGVzIHRoZSBSVFAgdGltZXN0YW1wIGZyZXF1ZW5jeSBmcm9tIHR3byBwYWly
cyBvZiBOVFAvUlRQIHRpbWVzdGFtcHMuCi1ib29sIENhbGN1bGF0ZUZyZXF1ZW5jeShpbnQ2NF90
IG50cF9tczEsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBydHBfdGltZXN0YW1w
MSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgbnRwX21zMiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IHJ0cF90aW1lc3RhbXAyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgZG91YmxlKiBmcmVxdWVuY3lfa2h6KSB7Ci0gIGlmIChudHBfbXMxIDw9IG50cF9tczIp
Ci0gICAgcmV0dXJuIGZhbHNlOwotCi0gICpmcmVxdWVuY3lfa2h6ID0gc3RhdGljX2Nhc3Q8ZG91
YmxlPihydHBfdGltZXN0YW1wMSAtIHJ0cF90aW1lc3RhbXAyKSAvCi0gICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihudHBfbXMxIC0gbnRwX21zMik7Ci0gIHJldHVybiB0cnVl
OwotfQorLy8gTWF4aW11bSBudW1iZXIgb2YgUlRDUCBTUiByZXBvcnRzIHRvIHVzZSB0byBtYXAg
YmV0d2VlbiBSVFAgYW5kIE5UUC4KK2NvbnN0IHNpemVfdCBrTnVtUnRjcFJlcG9ydHNUb1VzZSA9
IDIwOworLy8gRG9uJ3QgYWxsb3cgTlRQIHRpbWVzdGFtcHMgdG8ganVtcCBtb3JlIHRoYW4gMSBo
b3VyLiBDaG9zZW4gYXJiaXRyYXJ5IGFzIGJpZworLy8gZW5vdWdoIHRvIG5vdCBhZmZlY3Qgbm9y
bWFsIHVzZS1jYXNlcy4gWWV0IGl0IGlzIHNtYWxsZXIgdGhhbiBSVFAgd3JhcC1hcm91bmQKKy8v
IGhhbGYtcGVyaW9kICg5MGtoeiBSVFAgY2xvY2sgd3JhcC1hcm91bmRzIGV2ZXJ5IDEzLjI1IGhv
dXJzKS4gQWZ0ZXIgaGFsZiBvZgorLy8gd3JhcC1hcm91bmQgcGVyaW9kIGl0IGlzIGltcG9zc2li
bGUgdG8gdW53cmFwIFJUUCB0aW1lc3RhbXBzIGNvcnJlY3RseS4KK2NvbnN0IGludCBrTWF4QWxs
b3dlZFJ0Y3BOdHBJbnRlcnZhbE1zID0gNjAgKiA2MCAqIDEwMDA7CiAKIGJvb2wgQ29udGFpbnMo
Y29uc3Qgc3RkOjpsaXN0PFJ0cFRvTnRwRXN0aW1hdG9yOjpSdGNwTWVhc3VyZW1lbnQ+JiBtZWFz
dXJlbWVudHMsCiAgICAgICAgICAgICAgIGNvbnN0IFJ0cFRvTnRwRXN0aW1hdG9yOjpSdGNwTWVh
c3VyZW1lbnQmIG90aGVyKSB7CkBAIC00MywyOSArMzYsNDcgQEAgYm9vbCBDb250YWlucyhjb25z
dCBzdGQ6Omxpc3Q8UnRwVG9OdHBFc3RpbWF0b3I6OlJ0Y3BNZWFzdXJlbWVudD4mIG1lYXN1cmVt
ZW50cywKICAgfQogICByZXR1cm4gZmFsc2U7CiB9Ci19ICAvLyBuYW1lc3BhY2UKIAotYm9vbCBS
dHBUb050cEVzdGltYXRvcjo6UGFyYW1ldGVyczo6b3BlcmF0b3I8KGNvbnN0IFBhcmFtZXRlcnMm
IG90aGVyKSBjb25zdCB7Ci0gIGlmIChmcmVxdWVuY3lfa2h6IDwgb3RoZXIuZnJlcXVlbmN5X2to
eiAtIDFlLTYpIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfSBlbHNlIGlmIChmcmVxdWVuY3lfa2h6
ID4gb3RoZXIuZnJlcXVlbmN5X2toeiArIDFlLTYpIHsKKy8vIEdpdmVuIHhbXSBhbmQgeVtdIHdy
aXRlcyBvdXQgc3VjaCBrIGFuZCBiIHRoYXQgbGluZSB5PWsqeCtiIGFwcHJveGltYXRlcworLy8g
Z2l2ZW4gcG9pbnRzIGluIHRoZSBiZXN0IHdheSAoTGVhc3QgU3F1YXJlcyBNZXRob2QpLgorYm9v
bCBMaW5lYXJSZWdyZXNzaW9uKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGRvdWJsZT4geCwKKyAgICAg
ICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBkb3VibGU+IHksCisgICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlKiBrLAorICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSog
YikgeworICBzaXplX3QgbiA9IHguc2l6ZSgpOworICBpZiAobiA8IDIpCisgICAgcmV0dXJuIGZh
bHNlOworCisgIGlmICh5LnNpemUoKSAhPSBuKQogICAgIHJldHVybiBmYWxzZTsKLSAgfSBlbHNl
IHsKLSAgICByZXR1cm4gb2Zmc2V0X21zIDwgb3RoZXIub2Zmc2V0X21zIC0gMWUtNjsKKworICBk
b3VibGUgYXZnX3ggPSAwOworICBkb3VibGUgYXZnX3kgPSAwOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG47ICsraSkgeworICAgIGF2Z194ICs9IHhbaV07CisgICAgYXZnX3kgKz0geVtpXTsK
KyAgfQorICBhdmdfeCAvPSBuOworICBhdmdfeSAvPSBuOworCisgIGRvdWJsZSB2YXJpYW5jZV94
ID0gMDsKKyAgZG91YmxlIGNvdmFyaWFuY2VfeHkgPSAwOworICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG47ICsraSkgeworICAgIGRvdWJsZSBub3JtYWxpemVkX3ggPSB4W2ldIC0gYXZnX3g7Cisg
ICAgZG91YmxlIG5vcm1hbGl6ZWRfeSA9IHlbaV0gLSBhdmdfeTsKKyAgICB2YXJpYW5jZV94ICs9
IG5vcm1hbGl6ZWRfeCAqIG5vcm1hbGl6ZWRfeDsKKyAgICBjb3ZhcmlhbmNlX3h5ICs9IG5vcm1h
bGl6ZWRfeCAqIG5vcm1hbGl6ZWRfeTsKICAgfQotfQogCi1ib29sIFJ0cFRvTnRwRXN0aW1hdG9y
OjpQYXJhbWV0ZXJzOjpvcGVyYXRvcj09KGNvbnN0IFBhcmFtZXRlcnMmIG90aGVyKSBjb25zdCB7
Ci0gIHJldHVybiAhKG90aGVyIDwgKnRoaXMgfHwgKnRoaXMgPCBvdGhlcik7Ci19CisgIGlmIChz
dGQ6OmZhYnModmFyaWFuY2VfeCkgPCAxZS04KQorICAgIHJldHVybiBmYWxzZTsKIAotYm9vbCBS
dHBUb050cEVzdGltYXRvcjo6UGFyYW1ldGVyczo6b3BlcmF0b3IhPShjb25zdCBQYXJhbWV0ZXJz
JiBvdGhlcikgY29uc3QgewotICByZXR1cm4gb3RoZXIgPCAqdGhpcyB8fCAqdGhpcyA8IG90aGVy
OworICAqayA9IHN0YXRpY19jYXN0PGRvdWJsZT4oY292YXJpYW5jZV94eSAvIHZhcmlhbmNlX3gp
OworICAqYiA9IHN0YXRpY19jYXN0PGRvdWJsZT4oYXZnX3kgLSAoKmspICogYXZnX3gpOworICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSdHBUb050cEVzdGltYXRvcjo6UGFyYW1ldGVyczo6b3Bl
cmF0b3I8PShjb25zdCBQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QgewotICByZXR1cm4gIShvdGhl
ciA8ICp0aGlzKTsKLX0KK30gIC8vIG5hbWVzcGFjZQogCiBSdHBUb050cEVzdGltYXRvcjo6UnRj
cE1lYXN1cmVtZW50OjpSdGNwTWVhc3VyZW1lbnQodWludDMyX3QgbnRwX3NlY3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnRw
X2ZyYWMsCkBAIC04MiwzMSArOTMsMjkgQEAgYm9vbCBSdHBUb050cEVzdGltYXRvcjo6UnRjcE1l
YXN1cmVtZW50OjpJc0VxdWFsKAogfQogCiAvLyBDbGFzcyBmb3IgY29udmVydGluZyBhbiBSVFAg
dGltZXN0YW1wIHRvIHRoZSBOVFAgZG9tYWluLgotUnRwVG9OdHBFc3RpbWF0b3I6OlJ0cFRvTnRw
RXN0aW1hdG9yKCkKLSAgICA6IGNvbnNlY3V0aXZlX2ludmFsaWRfc2FtcGxlc18oMCksCi0gICAg
ICBzbW9vdGhpbmdfZmlsdGVyXyhrTnVtU2FtcGxlc1RvU21vb3RoKSwKLSAgICAgIHBhcmFtc19j
YWxjdWxhdGVkXyhmYWxzZSkge30KK1J0cFRvTnRwRXN0aW1hdG9yOjpSdHBUb050cEVzdGltYXRv
cigpIDogY29uc2VjdXRpdmVfaW52YWxpZF9zYW1wbGVzXygwKSB7fQogCiBSdHBUb050cEVzdGlt
YXRvcjo6flJ0cFRvTnRwRXN0aW1hdG9yKCkge30KIAogdm9pZCBSdHBUb050cEVzdGltYXRvcjo6
VXBkYXRlUGFyYW1ldGVycygpIHsKLSAgaWYgKG1lYXN1cmVtZW50c18uc2l6ZSgpICE9IGtOdW1S
dGNwUmVwb3J0c1RvVXNlKQorICBpZiAobWVhc3VyZW1lbnRzXy5zaXplKCkgPCAyKQogICAgIHJl
dHVybjsKIAotICBQYXJhbWV0ZXJzIHBhcmFtczsKLSAgaW50NjRfdCB0aW1lc3RhbXBfbmV3ID0g
bWVhc3VyZW1lbnRzXy5mcm9udCgpLnVud3JhcHBlZF9ydHBfdGltZXN0YW1wOwotICBpbnQ2NF90
IHRpbWVzdGFtcF9vbGQgPSBtZWFzdXJlbWVudHNfLmJhY2soKS51bndyYXBwZWRfcnRwX3RpbWVz
dGFtcDsKLQotICBpbnQ2NF90IG50cF9tc19uZXcgPSBtZWFzdXJlbWVudHNfLmZyb250KCkubnRw
X3RpbWUuVG9NcygpOwotICBpbnQ2NF90IG50cF9tc19vbGQgPSBtZWFzdXJlbWVudHNfLmJhY2so
KS5udHBfdGltZS5Ub01zKCk7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4geDsKKyAgc3RkOjp2ZWN0
b3I8ZG91YmxlPiB5OworICB4LnJlc2VydmUobWVhc3VyZW1lbnRzXy5zaXplKCkpOworICB5LnJl
c2VydmUobWVhc3VyZW1lbnRzXy5zaXplKCkpOworICBmb3IgKGF1dG8gaXQgPSBtZWFzdXJlbWVu
dHNfLmJlZ2luKCk7IGl0ICE9IG1lYXN1cmVtZW50c18uZW5kKCk7ICsraXQpIHsKKyAgICB4LnB1
c2hfYmFjayhpdC0+dW53cmFwcGVkX3J0cF90aW1lc3RhbXApOworICAgIHkucHVzaF9iYWNrKGl0
LT5udHBfdGltZS5Ub01zKCkpOworICB9CisgIGRvdWJsZSBzbG9wZSwgb2Zmc2V0OwogCi0gIGlm
ICghQ2FsY3VsYXRlRnJlcXVlbmN5KG50cF9tc19uZXcsIHRpbWVzdGFtcF9uZXcsIG50cF9tc19v
bGQsIHRpbWVzdGFtcF9vbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJhbXMuZnJl
cXVlbmN5X2toeikpIHsKKyAgaWYgKCFMaW5lYXJSZWdyZXNzaW9uKHgsIHksICZzbG9wZSwgJm9m
ZnNldCkpIHsKICAgICByZXR1cm47CiAgIH0KLSAgcGFyYW1zLm9mZnNldF9tcyA9IHRpbWVzdGFt
cF9uZXcgLSBwYXJhbXMuZnJlcXVlbmN5X2toeiAqIG50cF9tc19uZXc7Ci0gIHBhcmFtc19jYWxj
dWxhdGVkXyA9IHRydWU7Ci0gIHNtb290aGluZ19maWx0ZXJfLkluc2VydChwYXJhbXMpOworCisg
IHBhcmFtc18uZW1wbGFjZSgxIC8gc2xvcGUsIG9mZnNldCk7CiB9CiAKIGJvb2wgUnRwVG9OdHBF
c3RpbWF0b3I6OlVwZGF0ZU1lYXN1cmVtZW50cyh1aW50MzJfdCBudHBfc2VjcywKQEAgLTEzMiw3
ICsxNDEsOCBAQCBib29sIFJ0cFRvTnRwRXN0aW1hdG9yOjpVcGRhdGVNZWFzdXJlbWVudHModWlu
dDMyX3QgbnRwX3NlY3MsCiAgIGlmICghbWVhc3VyZW1lbnRzXy5lbXB0eSgpKSB7CiAgICAgaW50
NjRfdCBvbGRfcnRwX3RpbWVzdGFtcCA9IG1lYXN1cmVtZW50c18uZnJvbnQoKS51bndyYXBwZWRf
cnRwX3RpbWVzdGFtcDsKICAgICBpbnQ2NF90IG9sZF9udHBfbXMgPSBtZWFzdXJlbWVudHNfLmZy
b250KCkubnRwX3RpbWUuVG9NcygpOwotICAgIGlmIChudHBfbXNfbmV3IDw9IG9sZF9udHBfbXMp
IHsKKyAgICBpZiAobnRwX21zX25ldyA8PSBvbGRfbnRwX21zIHx8CisgICAgICAgIG50cF9tc19u
ZXcgPiBvbGRfbnRwX21zICsga01heEFsbG93ZWRSdGNwTnRwSW50ZXJ2YWxNcykgewogICAgICAg
aW52YWxpZF9zYW1wbGUgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAodW53cmFwcGVkX3J0cF90aW1l
c3RhbXAgPD0gb2xkX3J0cF90aW1lc3RhbXApIHsKICAgICAgIFJUQ19MT0coTFNfV0FSTklORykK
QEAgLTE1Miw4ICsxNjIsNyBAQCBib29sIFJ0cFRvTnRwRXN0aW1hdG9yOjpVcGRhdGVNZWFzdXJl
bWVudHModWludDMyX3QgbnRwX3NlY3MsCiAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiTXVs
dGlwbGUgY29uc2VjdXRpdmVseSBpbnZhbGlkIFJUQ1AgU1IgcmVwb3J0cywgIgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNsZWFyaW5nIG1lYXN1cmVtZW50cy4iOwogICAgIG1lYXN1cmVt
ZW50c18uY2xlYXIoKTsKLSAgICBzbW9vdGhpbmdfZmlsdGVyXy5SZXNldCgpOwotICAgIHBhcmFt
c19jYWxjdWxhdGVkXyA9IGZhbHNlOworICAgIHBhcmFtc18gPSBhYnNsOjpudWxsb3B0OwogICB9
CiAgIGNvbnNlY3V0aXZlX2ludmFsaWRfc2FtcGxlc18gPSAwOwogCkBAIC0xNzAsMzUgKzE3OSwy
OSBAQCBib29sIFJ0cFRvTnRwRXN0aW1hdG9yOjpVcGRhdGVNZWFzdXJlbWVudHModWludDMyX3Qg
bnRwX3NlY3MsCiB9CiAKIGJvb2wgUnRwVG9OdHBFc3RpbWF0b3I6OkVzdGltYXRlKGludDY0X3Qg
cnRwX3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qq
IHJ0cF90aW1lc3RhbXBfbXMpIGNvbnN0IHsKLSAgaWYgKCFwYXJhbXNfY2FsY3VsYXRlZF8pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90KiBudHBfdGltZXN0YW1wX21z
KSBjb25zdCB7CisgIGlmICghcGFyYW1zXykKICAgICByZXR1cm4gZmFsc2U7CiAKICAgaW50NjRf
dCBydHBfdGltZXN0YW1wX3Vud3JhcHBlZCA9IHVud3JhcHBlcl8uVW53cmFwKHJ0cF90aW1lc3Rh
bXApOwogCi0gIFBhcmFtZXRlcnMgcGFyYW1zID0gc21vb3RoaW5nX2ZpbHRlcl8uR2V0RmlsdGVy
ZWRWYWx1ZSgpOwotCiAgIC8vIHBhcmFtc19jYWxjdWxhdGVkXyBzaG91bGQgbm90IGJlIHRydWUg
dW5sZXNzIG1zIHBhcmFtcy5mcmVxdWVuY3lfa2h6IGhhcwogICAvLyBiZWVuIGNhbGN1bGF0ZWQg
dG8gc29tZXRoaW5nIG5vbiB6ZXJvLgotICBSVENfRENIRUNLX05FKHBhcmFtcy5mcmVxdWVuY3lf
a2h6LCAwLjApOworICBSVENfRENIRUNLX05FKHBhcmFtc18tPmZyZXF1ZW5jeV9raHosIDAuMCk7
CiAgIGRvdWJsZSBydHBfbXMgPQotICAgICAgKHN0YXRpY19jYXN0PGRvdWJsZT4ocnRwX3RpbWVz
dGFtcF91bndyYXBwZWQpIC0gcGFyYW1zLm9mZnNldF9tcykgLwotICAgICAgICAgIHBhcmFtcy5m
cmVxdWVuY3lfa2h6ICsKLSAgICAgIDAuNWY7CisgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHJ0
cF90aW1lc3RhbXBfdW53cmFwcGVkKSAvIHBhcmFtc18tPmZyZXF1ZW5jeV9raHogKworICAgICAg
cGFyYW1zXy0+b2Zmc2V0X21zICsgMC41ZjsKIAogICBpZiAocnRwX21zIDwgMCkKICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgKnJ0cF90aW1lc3RhbXBfbXMgPSBydHBfbXM7CisgICpudHBfdGltZXN0
YW1wX21zID0gcnRwX21zOworCiAgIHJldHVybiB0cnVlOwogfQogCiBjb25zdCBhYnNsOjpvcHRp
b25hbDxSdHBUb050cEVzdGltYXRvcjo6UGFyYW1ldGVycz4gUnRwVG9OdHBFc3RpbWF0b3I6OnBh
cmFtcygpCiAgICAgY29uc3QgewotICBhYnNsOjpvcHRpb25hbDxQYXJhbWV0ZXJzPiByZXM7Ci0g
IGlmIChwYXJhbXNfY2FsY3VsYXRlZF8pIHsKLSAgICByZXMuZW1wbGFjZShzbW9vdGhpbmdfZmls
dGVyXy5HZXRGaWx0ZXJlZFZhbHVlKCkpOwotICB9Ci0gIHJldHVybiByZXM7CisgIHJldHVybiBw
YXJhbXNfOwogfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9y
dHBfdG9fbnRwX2VzdGltYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvcnRwX3RvX250cF9lc3Rp
bWF0b3JfdW5pdHRlc3QuY2MKaW5kZXggMDY0N2VjOGNhZDYzOThjMjZjNWJiYmRiZWY1ZGFjNDU1
N2JiM2Q0MC4uYjBiODNiYmJiMWM3NjY2YjRlNjE1NTM4MjU0ODBjYzI2OWNmMzM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dy
YXBwZXJzL3NvdXJjZS9ydHBfdG9fbnRwX2VzdGltYXRvcl91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291
cmNlL3J0cF90b19udHBfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCkBAIC05LDExICs5LDEzIEBACiAg
Ki8KIAogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL3J0cF90b19udHBfZXN0aW1h
dG9yLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcmFuZG9tLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVz
dC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CiBjb25zdCB1aW50MzJfdCBr
T25lTXNJbk50cEZyYWMgPSA0Mjk0OTY3OworY29uc3QgdWludDMyX3Qga09uZUhvdXJJbk50cFNl
YyA9IDYwICogNjA7CiBjb25zdCB1aW50MzJfdCBrVGltZXN0YW1wVGlja3NQZXJNcyA9IDkwOwog
fSAgLy8gbmFtZXNwYWNlCiAKQEAgLTIyNCw2ICsyMjYsMjIgQEAgVEVTVChVcGRhdGVSdGNwTWVh
c3VyZW1lbnRUZXN0cywgRmFpbHNGb3JPbGROdHApIHsKICAgICAgIGVzdGltYXRvci5VcGRhdGVN
ZWFzdXJlbWVudHMobnRwX3NlYywgbnRwX2ZyYWMsIHRpbWVzdGFtcCwgJm5ld19zcikpOwogfQog
CitURVNUKFVwZGF0ZVJ0Y3BNZWFzdXJlbWVudFRlc3RzLCBGYWlsc0ZvclRvb05ld050cCkgewor
ICBSdHBUb050cEVzdGltYXRvciBlc3RpbWF0b3I7CisgIHVpbnQzMl90IG50cF9zZWMgPSAxOwor
ICB1aW50MzJfdCBudHBfZnJhYyA9IDY5OTkyNTA1MDsKKyAgdWludDMyX3QgdGltZXN0YW1wID0g
MHgxMjM0NTY3ODsKKyAgYm9vbCBuZXdfc3I7CisgIEVYUEVDVF9UUlVFKAorICAgICAgZXN0aW1h
dG9yLlVwZGF0ZU1lYXN1cmVtZW50cyhudHBfc2VjLCBudHBfZnJhYywgdGltZXN0YW1wLCAmbmV3
X3NyKSk7CisgIEVYUEVDVF9UUlVFKG5ld19zcik7CisgIC8vIE50cCB0aW1lIGZyb20gZmFyIGZ1
dHVyZSwgbGlzdCBub3QgdXBkYXRlZC4KKyAgbnRwX3NlYyArPSBrT25lSG91ckluTnRwU2VjICog
MjsKKyAgdGltZXN0YW1wICs9IGtUaW1lc3RhbXBUaWNrc1Blck1zICogMTA7CisgIEVYUEVDVF9G
QUxTRSgKKyAgICAgIGVzdGltYXRvci5VcGRhdGVNZWFzdXJlbWVudHMobnRwX3NlYywgbnRwX2Zy
YWMsIHRpbWVzdGFtcCwgJm5ld19zcikpOworfQorCiBURVNUKFVwZGF0ZVJ0Y3BNZWFzdXJlbWVu
dFRlc3RzLCBGYWlsc0ZvckVxdWFsVGltZXN0YW1wKSB7CiAgIFJ0cFRvTnRwRXN0aW1hdG9yIGVz
dGltYXRvcjsKICAgdWludDMyX3QgbnRwX3NlYyA9IDA7CkBAIC0yOTIsNCArMzEwLDM3IEBAIFRF
U1QoUnRwVG9OdHBUZXN0cywgRmFpbHNGb3JOb1BhcmFtZXRlcnMpIHsKICAgRVhQRUNUX0ZBTFNF
KGVzdGltYXRvci5Fc3RpbWF0ZSh0aW1lc3RhbXAsICZ0aW1lc3RhbXBfbXMpKTsKIH0KIAorVEVT
VChSdHBUb050cFRlc3RzLCBBdmVyYWdlc0Vycm9yT3V0KSB7CisgIFJ0cFRvTnRwRXN0aW1hdG9y
IGVzdGltYXRvcjsKKyAgdWludDMyX3QgbnRwX3NlYyA9IDE7CisgIHVpbnQzMl90IG50cF9mcmFj
ID0gOTAwMDAwMDA7ICAvLyBNb3JlIHRoYW4gMSBtcy4KKyAgdWludDMyX3QgdGltZXN0YW1wID0g
MHgxMjM0NTY3ODsKKyAgY29uc3QgaW50IGtOdHBTZWNTdGVwID0gMTsgIC8vIDEgc2Vjb25kLgor
ICBjb25zdCBpbnQga1J0cFRpY2tzUGVyTXMgPSA5MDsKKyAgY29uc3QgaW50IGtSdHBTdGVwID0g
a1J0cFRpY2tzUGVyTXMgKiAxMDAwOworICBib29sIG5ld19zcjsKKyAgRVhQRUNUX1RSVUUoCisg
ICAgICBlc3RpbWF0b3IuVXBkYXRlTWVhc3VyZW1lbnRzKG50cF9zZWMsIG50cF9mcmFjLCB0aW1l
c3RhbXAsICZuZXdfc3IpKTsKKyAgRVhQRUNUX1RSVUUobmV3X3NyKTsKKworICBSYW5kb20gcmFu
ZCgxMTIzNTM2TCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAg
Ly8gQWR2YW5jZSBib3RoIHRpbWVzdGFtcHMgYnkgZXhhY3RseSAxIHNlY29uZC4KKyAgICBudHBf
c2VjICs9IGtOdHBTZWNTdGVwOworICAgIHRpbWVzdGFtcCArPSBrUnRwU3RlcDsKKyAgICAvLyBB
ZGQgdXB0byAxbXMgb2YgZXJyb3JzIHRvIE5UUCBhbmQgUlRQIHRpbWVzdGFtcHMgcGFzc2VkIHRv
IGVzdGltYXRvci4KKyAgICBFWFBFQ1RfVFJVRShlc3RpbWF0b3IuVXBkYXRlTWVhc3VyZW1lbnRz
KAorICAgICAgICBudHBfc2VjLAorICAgICAgICBudHBfZnJhYyArIHJhbmQuUmFuZCgtc3RhdGlj
X2Nhc3Q8aW50PihrT25lTXNJbk50cEZyYWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnQ+KGtPbmVNc0luTnRwRnJhYykpLAorICAgICAgICB0aW1lc3RhbXAg
KyByYW5kLlJhbmQoLWtSdHBUaWNrc1Blck1zLCBrUnRwVGlja3NQZXJNcyksICZuZXdfc3IpKTsK
KyAgICBFWFBFQ1RfVFJVRShuZXdfc3IpOworCisgICAgaW50NjRfdCBlc3RpbWF0ZWRfbnRwX21z
OworICAgIEVYUEVDVF9UUlVFKGVzdGltYXRvci5Fc3RpbWF0ZSh0aW1lc3RhbXAsICZlc3RpbWF0
ZWRfbnRwX21zKSk7CisgICAgLy8gQWxsb3cgdXB0byAyIG1zIG9mIGVycm9yLgorICAgIEVYUEVD
VF9ORUFSKE50cFRpbWUobnRwX3NlYywgbnRwX2ZyYWMpLlRvTXMoKSwgZXN0aW1hdGVkX250cF9t
cywgMik7CisgIH0KK30KKwogfTsgIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L0JVSUxELmduCmlu
ZGV4IDI4MTQ2ZTA1OTljZGU5YjU1MjAwYjNkNmZhOWU3NzFiMTA5ZDVmMGQuLjdjZDdiM2VhYTFm
YjkzNzI0YTI2ZDc0Y2RkNjkyNjVhMTVjZjA1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvQlVJTEQuZ24KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9CVUlMRC5nbgpAQCAtMTM3LDYg
KzEzNyw4IEBAIGlmIChpc19pb3MpIHsKICAgICB0ZXN0b25seSA9IHRydWUKICAgICB2aXNpYmls
aXR5ID0gWyAiOnRlc3Rfc3VwcG9ydCIgXQogICAgIHNvdXJjZXMgPSBbCisgICAgICAiaW9zL2Nv
dmVyYWdlX3V0aWxfaW9zLmgiLAorICAgICAgImlvcy9jb3ZlcmFnZV91dGlsX2lvcy5tbSIsCiAg
ICAgICAiaW9zL3Rlc3Rfc3VwcG9ydC5oIiwKICAgICAgICJpb3MvdGVzdF9zdXBwb3J0Lm1tIiwK
ICAgICBdCkBAIC0xNDQsNiArMTQ2LDE1IEBAIGlmIChpc19pb3MpIHsKICAgICAgICI6cGVyZl90
ZXN0IiwKICAgICAgICIuLi9zZGs6aGVscGVyc19vYmpjIiwKICAgICBdCisgICAgY29uZmlncyAr
PSBbICI6dGVzdF9zdXBwb3J0X29iamNfY29uZmlnIiBdCisgIH0KKworICBjb25maWcoInRlc3Rf
c3VwcG9ydF9vYmpjX2NvbmZpZyIpIHsKKyAgICBkZWZpbmVzID0gW10KKworICAgIGlmICh1c2Vf
Y2xhbmdfY292ZXJhZ2UpIHsKKyAgICAgIGRlZmluZXMgKz0gWyAiV0VCUlRDX0lPU19FTkFCTEVf
Q09WRVJBR0UiIF0KKyAgICB9CiAgIH0KIH0KIApAQCAtMTk2LDI0ICsyMDcsNDEgQEAgcnRjX3Nv
dXJjZV9zZXQoInRlc3Rfc3VwcG9ydCIpIHsKIH0KIAogaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7
Ci0gIHJ0Y19zb3VyY2Vfc2V0KCJ0ZXN0X21haW4iKSB7CisgIHJ0Y19zb3VyY2Vfc2V0KCJ0ZXN0
X21haW5fbGliIikgewogICAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgICAgdGVzdG9ubHkgPSB0
cnVlCiAgICAgc291cmNlcyA9IFsKLSAgICAgICJ0ZXN0X21haW4uY2MiLAorICAgICAgInRlc3Rf
bWFpbl9saWIuY2MiLAorICAgICAgInRlc3RfbWFpbl9saWIuaCIsCiAgICAgXQogCi0gICAgcHVi
bGljX2RlcHMgPSBbCi0gICAgICAiOnRlc3Rfc3VwcG9ydCIsCi0gICAgXQogICAgIGRlcHMgPSBb
CiAgICAgICAiOmZpZWxkX3RyaWFsIiwKLSAgICAgICI6ZmlsZXV0aWxzIiwKICAgICAgICI6cGVy
Zl90ZXN0IiwKKyAgICAgICI6dGVzdF9zdXBwb3J0IiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZSIsCiAgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAgICIu
Li9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAg
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnk6bWVtb3J5IiwKKworICAg
ICAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NzkyKTogVGhpcyBpcyBuZWVkZWQgZm9yIGRvd25z
dHJlYW0gcHJvamVjdHMgb24KKyAgICAgICMgQW5kcm9pZCwgd2hlcmUgaXQncyByZXBsYWNlZCBi
eSBhbiBpbnRlcm5hbCB2ZXJzaW9uIG9mIGZpbGV1dGlscyB0aGF0CisgICAgICAjIGhhcyBhIGNl
cnRhaW4gZmxhZy4gUmVtb3ZlIHRoaXMgb25jZSB0aGUgaW50ZXJuYWwgZmlsZXV0aWxzIGhhcyBi
ZWVuCisgICAgICAjIGVsaW1pbmF0ZWQuCisgICAgICAiLi4vdGVzdDpmaWxldXRpbHMiLAorICAg
IF0KKyAgfQorCisgIHJ0Y19zb3VyY2Vfc2V0KCJ0ZXN0X21haW4iKSB7CisgICAgdmlzaWJpbGl0
eSA9IFsgIioiIF0KKyAgICB0ZXN0b25seSA9IHRydWUKKyAgICBzb3VyY2VzID0gWworICAgICAg
InRlc3RfbWFpbi5jYyIsCisgICAgXQorCisgICAgZGVwcyA9IFsKKyAgICAgICI6dGVzdF9tYWlu
X2xpYiIsCiAgICAgXQogICB9CiAKQEAgLTMwOSw2ICszMzcsOCBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICAgICI6dmlkZW9fdGVzdF9zdXBwb3J0IiwKICAgICAgICIuLi9hcGk6Y3Jl
YXRlX3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmVfYXBpIiwKICAgICAgICIuLi9hcGk6c2ltdWxjYXN0
X3Rlc3RfZml4dHVyZV9hcGkiLAorICAgICAgIi4uL2FwaS90ZXN0L3ZpZGVvOmZ1bmN0aW9uX3Zp
ZGVvX2ZhY3RvcnkiLAorICAgICAgIi4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVf
YWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIw
IiwKICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwIiwKICAgICAgICIuLi9tb2R1
bGVzL3ZpZGVvX2NhcHR1cmUiLApAQCAtMzYwLDcgKzM5MCwxMCBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKIAogaWYgKGlzX2lvcykgewogICBydGNfc291cmNlX3NldCgiZmlsZXV0aWxzX2lv
c19vYmpjIikgewotICAgIHZpc2liaWxpdHkgPSBbICI6ZmlsZXV0aWxzIiBdCisgICAgdmlzaWJp
bGl0eSA9IFsKKyAgICAgICI6ZmlsZXV0aWxzIiwKKyAgICAgICI6ZmlsZXV0aWxzX292ZXJyaWRl
X2ltcGwiLAorICAgIF0KICAgICBzb3VyY2VzID0gWwogICAgICAgInRlc3RzdXBwb3J0L2lvc2Zp
bGV1dGlscy5oIiwKICAgICAgICJ0ZXN0c3VwcG9ydC9pb3NmaWxldXRpbHMubW0iLApAQCAtMzc2
LDcgKzQwOSwxMCBAQCBpZiAoaXNfaW9zKSB7CiAKIGlmIChpc19tYWMpIHsKICAgcnRjX3NvdXJj
ZV9zZXQoImZpbGV1dGlsc19tYWNfb2JqYyIpIHsKLSAgICB2aXNpYmlsaXR5ID0gWyAiOmZpbGV1
dGlscyIgXQorICAgIHZpc2liaWxpdHkgPSBbCisgICAgICAiOmZpbGV1dGlscyIsCisgICAgICAi
OmZpbGV1dGlsc19vdmVycmlkZV9pbXBsIiwKKyAgICBdCiAgICAgc291cmNlcyA9IFsKICAgICAg
ICJ0ZXN0c3VwcG9ydC9tYWNmaWxldXRpbHMuaCIsCiAgICAgICAidGVzdHN1cHBvcnQvbWFjZmls
ZXV0aWxzLm1tIiwKQEAgLTM5NSw2ICs0MzEsNDIgQEAgcnRjX3NvdXJjZV9zZXQoImZpbGV1dGls
cyIpIHsKICAgICAidGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiLAogICBdCiAgIGRlcHMgPSBbCisg
ICAgIjpmaWxldXRpbHNfb3ZlcnJpZGVfYXBpIiwKKyAgICAiOmZpbGV1dGlsc19vdmVycmlkZV9p
bXBsIiwKKyAgICAiLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIs
CisgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vcnRjX2Jhc2Uv
c3lzdGVtOmFyY2giLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpv
cHRpb25hbCIsCisgIF0KKyAgaWYgKGlzX2lvcykgeworICAgIGRlcHMgKz0gWyAiOmZpbGV1dGls
c19pb3Nfb2JqYyIgXQorICB9CisgIGlmIChpc19tYWMpIHsKKyAgICBkZXBzICs9IFsgIjpmaWxl
dXRpbHNfbWFjX29iamMiIF0KKyAgfQorICBpZiAoaXNfd2luKSB7CisgICAgZGVwcyArPSBbICIu
Li9ydGNfYmFzZTpydGNfYmFzZSIgXQorICB9Cit9CisKKyMgV2Ugc2VwYXJhdGUgaGVhZGVyIGlu
dG8gb3duIHRhcmdldCB0byBtYWtlIGl0IHBvc3NpYmxlIGZvciBkb3duc3RyZWFtCisjIHByb2pl
Y3RzIHRvIG92ZXJyaWRlIGltcGxlbWVudGF0aW9uLgorcnRjX3NvdXJjZV9zZXQoImZpbGV1dGls
c19vdmVycmlkZV9hcGkiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBzb3VyY2VzID0gWworICAg
ICJ0ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuaCIsCisgIF0KK30KKworcnRjX3NvdXJj
ZV9zZXQoImZpbGV1dGlsc19vdmVycmlkZV9pbXBsIikgeworICB0ZXN0b25seSA9IHRydWUKKyAg
dmlzaWJpbGl0eSA9IFsgIjpmaWxldXRpbHMiIF0KKyAgc291cmNlcyA9IFsKKyAgICAidGVzdHN1
cHBvcnQvZmlsZXV0aWxzX292ZXJyaWRlLmNjIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Zmls
ZXV0aWxzX292ZXJyaWRlX2FwaSIsCiAgICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi9y
dGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCkBA
IC01MjMsNiArNTk1LDggQEAgcnRjX3NvdXJjZV9zZXQoImZha2VfdmlkZW9fY29kZWNzIikgewog
ICAgICJmYWtlX2RlY29kZXIuaCIsCiAgICAgImZha2VfZW5jb2Rlci5jYyIsCiAgICAgImZha2Vf
ZW5jb2Rlci5oIiwKKyAgICAiZmFrZV92cDhfZGVjb2Rlci5jYyIsCisgICAgImZha2VfdnA4X2Rl
Y29kZXIuaCIsCiAgICAgImZha2VfdnA4X2VuY29kZXIuY2MiLAogICAgICJmYWtlX3ZwOF9lbmNv
ZGVyLmgiLAogICBdCkBAIC01MzIsNyArNjA2LDkgQEAgcnRjX3NvdXJjZV9zZXQoImZha2Vfdmlk
ZW9fY29kZWNzIikgewogICB9CiAgIGRlcHMgPSBbCiAgICAgIi4uOndlYnJ0Y19jb21tb24iLAor
ICAgICIuLi9hcGkvdmlkZW86ZW5jb2RlZF9pbWFnZSIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRl
b19mcmFtZV9pNDIwIiwKKyAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczpjcmVhdGVfdnA4X3RlbXBv
cmFsX2xheWVycyIsCiAgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIs
CiAgICAgIi4uL2NvbW1vbl92aWRlbzpjb21tb25fdmlkZW8iLAogICAgICIuLi9tb2R1bGVzL3Zp
ZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLApAQCAtNTYwLDggKzYzNiw2IEBAIHJ0
Y19zb3VyY2Vfc2V0KCJ0ZXN0X2NvbW1vbiIpIHsKICAgICAiZW5jb2Rlcl9zZXR0aW5ncy5jYyIs
CiAgICAgImVuY29kZXJfc2V0dGluZ3MuaCIsCiAgICAgImZha2VfdmlkZW9yZW5kZXJlci5oIiwK
LSAgICAiZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiLAotICAgICJmdW5jdGlvbl92
aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIsCiAgICAgImxheWVyX2ZpbHRlcmluZ190cmFuc3BvcnQu
Y2MiLAogICAgICJsYXllcl9maWx0ZXJpbmdfdHJhbnNwb3J0LmgiLAogICAgICJtb2NrX3RyYW5z
cG9ydC5jYyIsCkBAIC01OTksNiArNjczLDkgQEAgcnRjX3NvdXJjZV9zZXQoInRlc3RfY29tbW9u
IikgewogICAgICIuLi9hcGk6dHJhbnNwb3J0X2FwaSIsCiAgICAgIi4uL2FwaS9hdWRpb19jb2Rl
Y3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkiLAogICAgICIuLi9hcGkvYXVkaW9fY29k
ZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAiLi4vYXBpL3Rlc3Qvdmlk
ZW86ZnVuY3Rpb25fdmlkZW9fZmFjdG9yeSIsCisgICAgIi4uL2FwaS92aWRlbzpidWlsdGluX3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAorICAgICIuLi9hcGkvdmlkZW86dmlkZW9f
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFt
ZSIsCiAgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgIi4u
L2F1ZGlvIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvY2FsbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9jYWxsX3Rlc3QuY2MKaW5kZXggZjRmYmYyMjFiZTkwZjU0ZTg3ZmRk
ODY1MGVhODJiNjg0ZjY4MDM1YS4uNmUyNWI4NWE1NmM3MjUzODVlMzVkMmU4YjNlNWRjODRiNDZh
MTBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9jYWxsX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9jYWxsX3Rlc3QuY2MKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRl
ICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0
aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9i
dWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9idWls
dGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlk
ZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmlnLmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25l
dHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3Nl
bmQuaCIKQEAgLTM5LDcgKzQwLDggQEAgQ2FsbFRlc3Q6OkNhbGxUZXN0KCkKICAgICAgIHNlbmRf
ZXZlbnRfbG9nXyhSdGNFdmVudExvZzo6Q3JlYXRlTnVsbCgpKSwKICAgICAgIHJlY3ZfZXZlbnRf
bG9nXyhSdGNFdmVudExvZzo6Q3JlYXRlTnVsbCgpKSwKICAgICAgIHNlbmRlcl9jYWxsX3RyYW5z
cG9ydF9jb250cm9sbGVyXyhudWxscHRyKSwKLSAgICAgIGF1ZGlvX3NlbmRfY29uZmlnXyhudWxs
cHRyKSwKKyAgICAgIGF1ZGlvX3NlbmRfY29uZmlnXygvKnNlbmRfdHJhbnNwb3J0PSovbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIp
LAogICAgICAgYXVkaW9fc2VuZF9zdHJlYW1fKG51bGxwdHIpLAogICAgICAgYmJyX25ldHdvcmtf
Y29udHJvbGxlcl9mYWN0b3J5XyhuZXcgQmJyTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KCkpLAog
ICAgICAgZmFrZV9lbmNvZGVyX2ZhY3RvcnlfKFt0aGlzXSgpIHsKQEAgLTUzLDYgKzU1LDcgQEAg
Q2FsbFRlc3Q6OkNhbGxUZXN0KCkKICAgICAgICAgcmV0dXJuIGZha2VfZW5jb2RlcjsKICAgICAg
IH0pLAogICAgICAgZmFrZV9kZWNvZGVyX2ZhY3RvcnlfKFtdKCkgeyByZXR1cm4gYWJzbDo6bWFr
ZV91bmlxdWU8RmFrZURlY29kZXI+KCk7IH0pLAorICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFj
dG9yeV8oQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSksCiAgICAg
ICBudW1fdmlkZW9fc3RyZWFtc18oMSksCiAgICAgICBudW1fYXVkaW9fc3RyZWFtc18oMCksCiAg
ICAgICBudW1fZmxleGZlY19zdHJlYW1zXygwKSwKQEAgLTc1LDcgKzc4LDcgQEAgdm9pZCBDYWxs
VGVzdDo6UnVuQmFzZVRlc3QoQmFzZVRlc3QqIHRlc3QpIHsKICAgICBudW1fZmxleGZlY19zdHJl
YW1zXyA9IHRlc3QtPkdldE51bUZsZXhmZWNTdHJlYW1zKCk7CiAgICAgUlRDX0RDSEVDSyhudW1f
dmlkZW9fc3RyZWFtc18gPiAwIHx8IG51bV9hdWRpb19zdHJlYW1zXyA+IDApOwogICAgIENhbGw6
OkNvbmZpZyBzZW5kX2NvbmZpZyhzZW5kX2V2ZW50X2xvZ18uZ2V0KCkpOwotICAgIHRlc3QtPk1v
ZGlmeVNlbmRlckNhbGxDb25maWcoJnNlbmRfY29uZmlnKTsKKyAgICB0ZXN0LT5Nb2RpZnlTZW5k
ZXJCaXRyYXRlQ29uZmlnKCZzZW5kX2NvbmZpZy5iaXRyYXRlX2NvbmZpZyk7CiAgICAgaWYgKG51
bV9hdWRpb19zdHJlYW1zXyA+IDApIHsKICAgICAgIENyZWF0ZUZha2VBdWRpb0RldmljZXModGVz
dC0+Q3JlYXRlQ2FwdHVyZXIoKSwgdGVzdC0+Q3JlYXRlUmVuZGVyZXIoKSk7CiAgICAgICB0ZXN0
LT5PbkZha2VBdWRpb0RldmljZXNDcmVhdGVkKGZha2Vfc2VuZF9hdWRpb19kZXZpY2VfLmdldCgp
LApAQCAtOTksNyArMTAyLDcgQEAgdm9pZCBDYWxsVGVzdDo6UnVuQmFzZVRlc3QoQmFzZVRlc3Qq
IHRlc3QpIHsKICAgICB9CiAgICAgaWYgKHRlc3QtPlNob3VsZENyZWF0ZVJlY2VpdmVycygpKSB7
CiAgICAgICBDYWxsOjpDb25maWcgcmVjdl9jb25maWcocmVjdl9ldmVudF9sb2dfLmdldCgpKTsK
LSAgICAgIHRlc3QtPk1vZGlmeVJlY2VpdmVyQ2FsbENvbmZpZygmcmVjdl9jb25maWcpOworICAg
ICAgdGVzdC0+TW9kaWZ5UmVjZWl2ZXJCaXRyYXRlQ29uZmlnKCZyZWN2X2NvbmZpZy5iaXRyYXRl
X2NvbmZpZyk7CiAgICAgICBpZiAobnVtX2F1ZGlvX3N0cmVhbXNfID4gMCkgewogICAgICAgICBB
dWRpb1N0YXRlOjpDb25maWcgYXVkaW9fc3RhdGVfY29uZmlnOwogICAgICAgICBhdWRpb19zdGF0
ZV9jb25maWcuYXVkaW9fbWl4ZXIgPSBBdWRpb01peGVySW1wbDo6Q3JlYXRlKCk7CkBAIC0xNjMs
NiArMTY2LDcgQEAgdm9pZCBDYWxsVGVzdDo6UnVuQmFzZVRlc3QoQmFzZVRlc3QqIHRlc3QpIHsK
ICAgICAgIGludCBoZWlnaHQgPSBrRGVmYXVsdEhlaWdodDsKICAgICAgIGludCBmcmFtZV9yYXRl
ID0ga0RlZmF1bHRGcmFtZXJhdGU7CiAgICAgICB0ZXN0LT5Nb2RpZnlWaWRlb0NhcHR1cmVTdGFy
dFJlc29sdXRpb24oJndpZHRoLCAmaGVpZ2h0LCAmZnJhbWVfcmF0ZSk7CisgICAgICB0ZXN0LT5N
b2RpZnlWaWRlb0RlZ3JhZGF0aW9uUHJlZmVyZW5jZSgmZGVncmFkYXRpb25fcHJlZmVyZW5jZV8p
OwogICAgICAgQ3JlYXRlRnJhbWVHZW5lcmF0b3JDYXB0dXJlcihmcmFtZV9yYXRlLCB3aWR0aCwg
aGVpZ2h0KTsKICAgICAgIHRlc3QtPk9uRnJhbWVHZW5lcmF0b3JDYXB0dXJlckNyZWF0ZWQoZnJh
bWVfZ2VuZXJhdG9yX2NhcHR1cmVyXyk7CiAgICAgfQpAQCAtMjMyLDYgKzIzNiw4IEBAIHZvaWQg
Q2FsbFRlc3Q6OkNyZWF0ZVZpZGVvU2VuZENvbmZpZyhWaWRlb1NlbmRTdHJlYW06OkNvbmZpZyog
dmlkZW9fY29uZmlnLAogICBSVENfRENIRUNLX0xFKG51bV92aWRlb19zdHJlYW1zICsgbnVtX3Vz
ZWRfc3NyY3MsIGtOdW1Tc3Jjcyk7CiAgICp2aWRlb19jb25maWcgPSBWaWRlb1NlbmRTdHJlYW06
OkNvbmZpZyhzZW5kX3RyYW5zcG9ydCk7CiAgIHZpZGVvX2NvbmZpZy0+ZW5jb2Rlcl9zZXR0aW5n
cy5lbmNvZGVyX2ZhY3RvcnkgPSAmZmFrZV9lbmNvZGVyX2ZhY3RvcnlfOworICB2aWRlb19jb25m
aWctPmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICBi
aXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKTsKICAgdmlkZW9fY29uZmlnLT5ydHAucGF5
bG9hZF9uYW1lID0gIkZBS0UiOwogICB2aWRlb19jb25maWctPnJ0cC5wYXlsb2FkX3R5cGUgPSBr
RmFrZVZpZGVvU2VuZFBheWxvYWRUeXBlOwogICB2aWRlb19jb25maWctPnJ0cC5leHRlbnNpb25z
LnB1c2hfYmFjaygKQEAgLTI1OSw3ICsyNjUsOCBAQCB2b2lkIENhbGxUZXN0OjpDcmVhdGVBdWRp
b0FuZEZlY1NlbmRDb25maWdzKHNpemVfdCBudW1fYXVkaW9fc3RyZWFtcywKICAgUlRDX0RDSEVD
S19MRShudW1fYXVkaW9fc3RyZWFtcywgMSk7CiAgIFJUQ19EQ0hFQ0tfTEUobnVtX2ZsZXhmZWNf
c3RyZWFtcywgMSk7CiAgIGlmIChudW1fYXVkaW9fc3RyZWFtcyA+IDApIHsKLSAgICBBdWRpb1Nl
bmRTdHJlYW06OkNvbmZpZyBhdWRpb19zZW5kX2NvbmZpZyhzZW5kX3RyYW5zcG9ydCk7CisgICAg
QXVkaW9TZW5kU3RyZWFtOjpDb25maWcgYXVkaW9fc2VuZF9jb25maWcoc2VuZF90cmFuc3BvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90
cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgICBhdWRpb19zZW5kX2NvbmZpZy5ydHAuc3NyYyA9IGtB
dWRpb1NlbmRTc3JjOwogICAgIGF1ZGlvX3NlbmRfY29uZmlnLnNlbmRfY29kZWNfc3BlYyA9IEF1
ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjpTZW5kQ29kZWNTcGVjKAogICAgICAgICBrQXVkaW9TZW5k
UGF5bG9hZFR5cGUsIHsib3B1cyIsIDQ4MDAwLCAyLCB7eyJzdGVyZW8iLCAiMSJ9fX0pOwpAQCAt
NzI2LDkgKzczMywxMCBAQCB2b2lkIEJhc2VUZXN0OjpPbkZha2VBdWRpb0RldmljZXNDcmVhdGVk
KAogICAgIFRlc3RBdWRpb0RldmljZU1vZHVsZSogc2VuZF9hdWRpb19kZXZpY2UsCiAgICAgVGVz
dEF1ZGlvRGV2aWNlTW9kdWxlKiByZWN2X2F1ZGlvX2RldmljZSkge30KIAotdm9pZCBCYXNlVGVz
dDo6TW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZykge30KK3ZvaWQg
QmFzZVRlc3Q6Ok1vZGlmeVNlbmRlckJpdHJhdGVDb25maWcoQml0cmF0ZUNvbnN0cmFpbnRzKiBi
aXRyYXRlX2NvbmZpZykge30KIAotdm9pZCBCYXNlVGVzdDo6TW9kaWZ5UmVjZWl2ZXJDYWxsQ29u
ZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSB7fQordm9pZCBCYXNlVGVzdDo6TW9kaWZ5UmVjZWl2
ZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIHsKK30K
IAogdm9pZCBCYXNlVGVzdDo6T25SdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZENyZWF0ZWQoCiAg
ICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQqIGNvbnRyb2xsZXIpIHt9CkBAIC03NDIsOCAr
NzUwLDggQEAgdGVzdDo6UGFja2V0VHJhbnNwb3J0KiBCYXNlVGVzdDo6Q3JlYXRlU2VuZFRyYW5z
cG9ydCgKICAgICAgIHRhc2tfcXVldWUsIHNlbmRlcl9jYWxsLCB0aGlzLCB0ZXN0OjpQYWNrZXRU
cmFuc3BvcnQ6OmtTZW5kZXIsCiAgICAgICBDYWxsVGVzdDo6cGF5bG9hZF90eXBlX21hcF8sCiAg
ICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICAgIENsb2Nr
OjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29y
a1NpbXVsYXRpb25Db25maWcoKSkpKTsKKyAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9j
aygpLAorICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KEJ1aWx0
SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpKTsKIH0KIAogdGVzdDo6UGFja2V0VHJhbnNwb3J0
KiBCYXNlVGVzdDo6Q3JlYXRlUmVjZWl2ZVRyYW5zcG9ydCgKQEAgLTc1Miw4ICs3NjAsOCBAQCB0
ZXN0OjpQYWNrZXRUcmFuc3BvcnQqIEJhc2VUZXN0OjpDcmVhdGVSZWNlaXZlVHJhbnNwb3J0KAog
ICAgICAgdGFza19xdWV1ZSwgbnVsbHB0ciwgdGhpcywgdGVzdDo6UGFja2V0VHJhbnNwb3J0Ojpr
UmVjZWl2ZXIsCiAgICAgICBDYWxsVGVzdDo6cGF5bG9hZF90eXBlX21hcF8sCiAgICAgICBhYnNs
OjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICAgIENsb2NrOjpHZXRSZWFs
VGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRp
b25Db25maWcoKSkpKTsKKyAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAorICAg
ICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KEJ1aWx0SW5OZXR3b3Jr
QmVoYXZpb3JDb25maWcoKSkpKTsKIH0KIAogc2l6ZV90IEJhc2VUZXN0OjpHZXROdW1WaWRlb1N0
cmVhbXMoKSBjb25zdCB7CkBAIC03NzcsNiArNzg1LDkgQEAgdm9pZCBCYXNlVGVzdDo6TW9kaWZ5
VmlkZW9DYXB0dXJlU3RhcnRSZXNvbHV0aW9uKGludCogd2lkdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBoZWlndCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGZyYW1lX3JhdGUpIHt9
CiAKK3ZvaWQgQmFzZVRlc3Q6Ok1vZGlmeVZpZGVvRGVncmFkYXRpb25QcmVmZXJlbmNlKAorICAg
IERlZ3JhZGF0aW9uUHJlZmVyZW5jZSogZGVncmFkYXRpb25fcHJlZmVyZW5jZSkge30KKwogdm9p
ZCBCYXNlVGVzdDo6T25WaWRlb1N0cmVhbXNDcmVhdGVkKAogICAgIFZpZGVvU2VuZFN0cmVhbSog
c2VuZF9zdHJlYW0sCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9SZWNlaXZlU3RyZWFtKj4m
IHJlY2VpdmVfc3RyZWFtcykge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY2FsbF90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2NhbGxfdGVzdC5oCmluZGV4IDdhNWMzZTliOGMx
YTAwZWQ3MDZmODA0MmQxOTIyMTA2NzczNzE2NjMuLjg5NjFiN2ZjY2IzZjkzOTBlMTI2OTEyNzk5
MTRlYmM2NDI1Mzg5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvY2FsbF90ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jYWxsX3Rlc3QuaApAQCAtMTMsNiArMTMsOSBAQAog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdGVz
dC92aWRlby9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkv
dGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJh
cGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNh
bGwvY2FsbC5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQu
aCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgpAQCAt
MjIsOCArMjUsNiBAQAogI2luY2x1ZGUgInRlc3QvZmFrZV92aWRlb3JlbmRlcmVyLmgiCiAjaW5j
bHVkZSAidGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmgiCiAjaW5jbHVkZSAidGVzdC9mcmFtZV9nZW5l
cmF0b3JfY2FwdHVyZXIuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJf
ZmFjdG9yeS5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAidGVzdC9ydHBfcnRjcF9vYnNlcnZlci5oIgogI2luY2x1ZGUgInRlc3Qv
c2luZ2xlX3RocmVhZGVkX3Rhc2tfcXVldWUuaCIKIApAQCAtMjA1LDYgKzIwNiw3IEBAIGNsYXNz
IENhbGxUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgIHRlc3Q6OkZ1bmN0aW9uVmlk
ZW9FbmNvZGVyRmFjdG9yeSBmYWtlX2VuY29kZXJfZmFjdG9yeV87CiAgIGludCBmYWtlX2VuY29k
ZXJfbWF4X2JpdHJhdGVfID0gLTE7CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9y
eSBmYWtlX2RlY29kZXJfZmFjdG9yeV87CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVB
bGxvY2F0b3JGYWN0b3J5PiBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XzsKICAgLy8gTnVtYmVy
IG9mIHNpbXVsY2FzdCBzdWJzdHJlYW1zLgogICBzaXplX3QgbnVtX3ZpZGVvX3N0cmVhbXNfOwog
ICBzaXplX3QgbnVtX2F1ZGlvX3N0cmVhbXNfOwpAQCAtMjQxLDggKzI0Myw4IEBAIGNsYXNzIEJh
c2VUZXN0IDogcHVibGljIFJ0cFJ0Y3BPYnNlcnZlciB7CiAgICAgICBUZXN0QXVkaW9EZXZpY2VN
b2R1bGUqIHNlbmRfYXVkaW9fZGV2aWNlLAogICAgICAgVGVzdEF1ZGlvRGV2aWNlTW9kdWxlKiBy
ZWN2X2F1ZGlvX2RldmljZSk7CiAKLSAgdmlydHVhbCB2b2lkIE1vZGlmeVNlbmRlckNhbGxDb25m
aWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpOwotICB2aXJ0dWFsIHZvaWQgTW9kaWZ5UmVjZWl2ZXJD
YWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKTsKKyAgdmlydHVhbCB2b2lkIE1vZGlmeVNl
bmRlckJpdHJhdGVDb25maWcoQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZyk7Cisg
IHZpcnR1YWwgdm9pZCBNb2RpZnlSZWNlaXZlckJpdHJhdGVDb25maWcoQml0cmF0ZUNvbnN0cmFp
bnRzKiBiaXRyYXRlX2NvbmZpZyk7CiAKICAgdmlydHVhbCB2b2lkIE9uUnRwVHJhbnNwb3J0Q29u
dHJvbGxlclNlbmRDcmVhdGVkKAogICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQqIGNv
bnRyb2xsZXIpOwpAQCAtMjYxLDYgKzI2Myw5IEBAIGNsYXNzIEJhc2VUZXN0IDogcHVibGljIFJ0
cFJ0Y3BPYnNlcnZlciB7CiAgIHZpcnR1YWwgdm9pZCBNb2RpZnlWaWRlb0NhcHR1cmVTdGFydFJl
c29sdXRpb24oaW50KiB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQqIGhlaWd0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCogZnJhbWVfcmF0ZSk7CisgIHZpcnR1YWwgdm9pZCBNb2Rp
ZnlWaWRlb0RlZ3JhZGF0aW9uUHJlZmVyZW5jZSgKKyAgICAgIERlZ3JhZGF0aW9uUHJlZmVyZW5j
ZSogZGVncmFkYXRpb25fcHJlZmVyZW5jZSk7CisKICAgdmlydHVhbCB2b2lkIE9uVmlkZW9TdHJl
YW1zQ3JlYXRlZCgKICAgICAgIFZpZGVvU2VuZFN0cmVhbSogc2VuZF9zdHJlYW0sCiAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxWaWRlb1JlY2VpdmVTdHJlYW0qPiYgcmVjZWl2ZV9zdHJlYW1zKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvY29uZmlndXJhYmxlX2ZyYW1lX3NpemVfZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY29uZmlndXJhYmxlX2ZyYW1lX3NpemVfZW5j
b2Rlci5jYwppbmRleCBjMGZlMjk2NmU4NWZmMjFiNzEyYWQ0ODI4MmE5NGFlYTk1ODg1ODM1Li5i
ZGQ2MWQwMzJmYzgzNGExZDhkOTllNmMyNDE2YmZjNDM4YmQ2NWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2NvbmZpZ3VyYWJsZV9m
cmFtZV9zaXplX2VuY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9jb25maWd1cmFibGVfZnJhbWVfc2l6ZV9lbmNvZGVyLmNjCkBAIC0x
Miw3ICsxMiw3IEBACiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KIAotI2luY2x1ZGUgImNvbW1vbl92
aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRf
aW1hZ2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Nv
ZGVjX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCkBAIC01NCw3
ICs1NCw5IEBAIGludDMyX3QgQ29uZmlndXJhYmxlRnJhbWVTaXplRW5jb2Rlcjo6RW5jb2RlKAog
ICBDb2RlY1NwZWNpZmljSW5mbyBzcGVjaWZpY3t9OwogICBzcGVjaWZpYy5jb2RlY1R5cGUgPSBj
b2RlY190eXBlXzsKICAgY2FsbGJhY2tfLT5PbkVuY29kZWRJbWFnZShlbmNvZGVkSW1hZ2UsICZz
cGVjaWZpYywgZnJhZ21lbnRhdGlvbik7Ci0KKyAgaWYgKHBvc3RfZW5jb2RlX2NhbGxiYWNrXykg
eworICAgICgqcG9zdF9lbmNvZGVfY2FsbGJhY2tfKSgpOworICB9CiAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfT0s7CiB9CiAKQEAgLTY4LDExICs3MCw2IEBAIGludDMyX3QgQ29uZmlndXJh
YmxlRnJhbWVTaXplRW5jb2Rlcjo6UmVsZWFzZSgpIHsKICAgcmV0dXJuIFdFQlJUQ19WSURFT19D
T0RFQ19PSzsKIH0KIAotaW50MzJfdCBDb25maWd1cmFibGVGcmFtZVNpemVFbmNvZGVyOjpTZXRD
aGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBydHQpIHsK
LSAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLX0KLQogaW50MzJfdCBDb25maWd1cmFi
bGVGcmFtZVNpemVFbmNvZGVyOjpTZXRSYXRlQWxsb2NhdGlvbigKICAgICBjb25zdCBWaWRlb0Jp
dHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9uLAogICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgewpA
QCAtODksNSArODYsMTAgQEAgdm9pZCBDb25maWd1cmFibGVGcmFtZVNpemVFbmNvZGVyOjpTZXRD
b2RlY1R5cGUoVmlkZW9Db2RlY1R5cGUgY29kZWNfdHlwZSkgewogICBjb2RlY190eXBlXyA9IGNv
ZGVjX3R5cGU7CiB9CiAKK3ZvaWQgQ29uZmlndXJhYmxlRnJhbWVTaXplRW5jb2Rlcjo6UmVnaXN0
ZXJQb3N0RW5jb2RlQ2FsbGJhY2soCisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKHZvaWQpPiBwb3N0
X2VuY29kZV9jYWxsYmFjaykgeworICBwb3N0X2VuY29kZV9jYWxsYmFja18gPSBzdGQ6Om1vdmUo
cG9zdF9lbmNvZGVfY2FsbGJhY2spOworfQorCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9jb25maWd1cmFibGVfZnJhbWVfc2l6ZV9lbmNvZGVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2NvbmZpZ3VyYWJs
ZV9mcmFtZV9zaXplX2VuY29kZXIuaAppbmRleCAxZGM5ZTQ4ZjQ3ZjVhYjdiZjBjNDc4MDM4ZThi
ZGY1ODMxYmM1OWRkLi5mODgxNTEzZmNjMjczNjFmN2EwNGI0YmY2OGFlNTU3MGQzZWE4NzA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L2NvbmZpZ3VyYWJsZV9mcmFtZV9zaXplX2VuY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2NvbmZpZ3VyYWJsZV9mcmFtZV9zaXplX2Vu
Y29kZXIuaApAQCAtMzcsOCArMzcsNiBAQCBjbGFzcyBDb25maWd1cmFibGVGcmFtZVNpemVFbmNv
ZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAKICAgaW50MzJfdCBSZWxlYXNlKCkgb3ZlcnJp
ZGU7CiAKLSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9z
cywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwotCiAgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRpb24o
Y29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYWxsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIG92ZXJyaWRlOwogCkBAIC00Niw4ICs0
NCwxMyBAQCBjbGFzcyBDb25maWd1cmFibGVGcmFtZVNpemVFbmNvZGVyIDogcHVibGljIFZpZGVv
RW5jb2RlciB7CiAKICAgdm9pZCBTZXRDb2RlY1R5cGUoVmlkZW9Db2RlY1R5cGUgY29kZWNfdHlw
ZV8pOwogCisgIHZvaWQgUmVnaXN0ZXJQb3N0RW5jb2RlQ2FsbGJhY2soCisgICAgICBzdGQ6OmZ1
bmN0aW9uPHZvaWQodm9pZCk+IHBvc3RfZW5jb2RlX2NhbGxiYWNrKTsKKwogIHByaXZhdGU6CiAg
IEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFja187CisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6
ZnVuY3Rpb248dm9pZCh2b2lkKT4+IHBvc3RfZW5jb2RlX2NhbGxiYWNrXzsKKwogICBjb25zdCBz
aXplX3QgbWF4X2ZyYW1lX3NpemVfOwogICBzaXplX3QgY3VycmVudF9mcmFtZV9zaXplXzsKICAg
c3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gYnVmZmVyXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZGlyZWN0X3RyYW5zcG9ydC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZGlyZWN0
X3RyYW5zcG9ydC5jYwppbmRleCA2YWE4YzkxNThmMGRlNjcyMGUyMjViYjQ4ZWFlNDYzYTc5YTUz
MzEzLi5mZDczNjkxNzFhMjIwMGM3MTRkNDk3MjdkYTFmNjBmNTczODVjYjk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2RpcmVjdF90
cmFuc3BvcnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9kaXJlY3RfdHJhbnNwb3J0LmNjCkBAIC03Miw2ICs3Miw4IEBAIGJvb2wgRGlyZWN0
VHJhbnNwb3J0OjpTZW5kUnRwKGNvbnN0IHVpbnQ4X3QqIGRhdGEsCiAgIGlmIChzZW5kX2NhbGxf
KSB7CiAgICAgcnRjOjpTZW50UGFja2V0IHNlbnRfcGFja2V0KG9wdGlvbnMucGFja2V0X2lkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25k
cygpKTsKKyAgICBzZW50X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2ZlZWRiYWNrID0gb3B0aW9u
cy5pbmNsdWRlZF9pbl9mZWVkYmFjazsKKyAgICBzZW50X3BhY2tldC5pbmZvLmluY2x1ZGVkX2lu
X2FsbG9jYXRpb24gPSBvcHRpb25zLmluY2x1ZGVkX2luX2FsbG9jYXRpb247CiAgICAgc2VudF9w
YWNrZXQuaW5mby5wYWNrZXRfc2l6ZV9ieXRlcyA9IGxlbmd0aDsKICAgICBzZW50X3BhY2tldC5p
bmZvLnBhY2tldF90eXBlID0gcnRjOjpQYWNrZXRUeXBlOjprRGF0YTsKICAgICBzZW5kX2NhbGxf
LT5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9lbmNvZGVyX3NldHRpbmdzLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9lbmNvZGVyX3NldHRp
bmdzLmNjCmluZGV4IDk0NTU1OWI0ZWUwMmVlODU1MTlmNzMzYmE4NWQ2ODljNzEyOTk3MGUuLmJm
YmQyYmRlYzQ3YTk4MzQ5OTFhMTM3YzNlOTUyMWZmNzU5MGFkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZW5jb2Rlcl9zZXR0aW5n
cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L2VuY29kZXJfc2V0dGluZ3MuY2MKQEAgLTYxLDYgKzYxLDE0IEBAIHN0ZDo6dmVjdG9yPFZpZGVv
U3RyZWFtPiBDcmVhdGVWaWRlb1N0cmVhbXMoCiAgICAgICAgICAgICAgID8gc3RyZWFtLnRhcmdl
dF9iaXRyYXRlX2JwcwogICAgICAgICAgICAgICA6IERlZmF1bHRWaWRlb1N0cmVhbUZhY3Rvcnk6
OmtNYXhCaXRyYXRlUGVyU3RyZWFtW2ldOwogICAgICAgdGFyZ2V0X2JpdHJhdGVfYnBzID0gc3Rk
OjptaW4obWF4X2JpdHJhdGVfYnBzLCB0YXJnZXRfYml0cmF0ZV9icHMpOworCisgICAgICBpZiAo
c3RyZWFtLm1heF9mcmFtZXJhdGUgPiAwKSB7CisgICAgICAgIHN0cmVhbV9zZXR0aW5nc1tpXS5t
YXhfZnJhbWVyYXRlID0gc3RyZWFtLm1heF9mcmFtZXJhdGU7CisgICAgICB9CisgICAgICBpZiAo
c3RyZWFtLm51bV90ZW1wb3JhbF9sYXllcnMpIHsKKyAgICAgICAgUlRDX0RDSEVDS19HRSgqc3Ry
ZWFtLm51bV90ZW1wb3JhbF9sYXllcnMsIDEpOworICAgICAgICBzdHJlYW1fc2V0dGluZ3NbaV0u
bnVtX3RlbXBvcmFsX2xheWVycyA9IHN0cmVhbS5udW1fdGVtcG9yYWxfbGF5ZXJzOworICAgICAg
fQogICAgIH0gZWxzZSB7CiAgICAgICBtYXhfYml0cmF0ZV9icHMgPSBzdGQ6Om1pbigKICAgICAg
ICAgICBiaXRyYXRlX2xlZnRfYnBzLCBEZWZhdWx0VmlkZW9TdHJlYW1GYWN0b3J5OjprTWF4Qml0
cmF0ZVBlclN0cmVhbVtpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV9lbmNvZGVyLmNjCmluZGV4IGJjM2M3
YjEwODdiNGVhMGY2YTk1ODc5YzdhZTQ3MjZhMzExOTE3OWMuLmRkYWJhNzdhNGY0NWViYTEzNzA4
ZGI4YWI2ZTliOWE0NDNlZWUwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV9lbmNvZGVyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV9lbmNvZGVyLmNjCkBAIC0x
NSwxNiArMTUsMzMgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWVtb3J5Pgog
Ci0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKLSNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBv
cmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xh
eWVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29k
ZWNfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
c3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvc2xlZXAuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBu
YW1lc3BhY2UgdGVzdCB7CituYW1lc3BhY2UgeworY29uc3QgaW50IGtLZXlmcmFtZVNpemVGYWN0
b3IgPSA1OworCisvLyBJbnZlcnNlIG9mIHByb3BvcnRpb24gb2YgZnJhbWVzIGFzc2lnbmVkIHRv
IGVhY2ggdGVtcG9yYWwgbGF5ZXIgZm9yIGFsbAorLy8gcG9zc2libGUgdGVtcG9yYWwgbGF5ZXJz
IG51bWJlcnMuCitjb25zdCBpbnQga1RlbXBvcmFsTGF5ZXJSYXRlRmFjdG9yWzRdWzRdID0gewor
ICAgIHsxLCAwLCAwLCAwfSwgIC8vIDEvMQorICAgIHsyLCAyLCAwLCAwfSwgIC8vIDEvMiArIDEv
MgorICAgIHs0LCA0LCAyLCAwfSwgIC8vIDEvNCArIDEvNCArIDEvMgorICAgIHs4LCA4LCA0LCAy
fSwgIC8vIDEvOCArIDEvOCArIDEvNCArIDEvMgorfTsKKwordm9pZCBXcml0ZUNvdW50ZXIodW5z
aWduZWQgY2hhciogcGF5bG9hZCwgdWludDMyX3QgY291bnRlcikgeworICBwYXlsb2FkWzBdID0g
KGNvdW50ZXIgJiAweDAwRkYpOworICBwYXlsb2FkWzFdID0gKGNvdW50ZXIgJiAweEZGMDApID4+
IDg7CisgIHBheWxvYWRbMl0gPSAoY291bnRlciAmIDB4RkYwMDAwKSA+PiAxNjsKKyAgcGF5bG9h
ZFszXSA9IChjb3VudGVyICYgMHhGRjAwMDAwMCkgPj4gMjQ7Cit9CiAKLWNvbnN0IGludCBrS2V5
ZnJhbWVTaXplRmFjdG9yID0gMTA7Cit9OyAgLy8gbmFtZXNwYWNlCiAKIEZha2VFbmNvZGVyOjpG
YWtlRW5jb2RlcihDbG9jayogY2xvY2spCiAgICAgOiBjbG9ja18oY2xvY2spLApAQCAtMzIsNiAr
NDksNyBAQCBGYWtlRW5jb2Rlcjo6RmFrZUVuY29kZXIoQ2xvY2sqIGNsb2NrKQogICAgICAgY29u
ZmlndXJlZF9pbnB1dF9mcmFtZXJhdGVfKC0xKSwKICAgICAgIG1heF90YXJnZXRfYml0cmF0ZV9r
YnBzXygtMSksCiAgICAgICBwZW5kaW5nX2tleWZyYW1lXyh0cnVlKSwKKyAgICAgIGNvdW50ZXJf
KDApLAogICAgICAgZGVidF9ieXRlc18oMCkgewogICAvLyBHZW5lcmF0ZSBzb21lIGFyYml0cmFy
eSBub3QtYWxsLXplcm8gZGF0YQogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihlbmNv
ZGVkX2J1ZmZlcl8pOyArK2kpIHsKQEAgLTQ2LDYgKzY0LDcgQEAgdm9pZCBGYWtlRW5jb2Rlcjo6
U2V0TWF4Qml0cmF0ZShpbnQgbWF4X2ticHMpIHsKICAgUlRDX0RDSEVDS19HRShtYXhfa2Jwcywg
LTEpOyAgLy8gbWF4X2ticHMgPT0gLTEgZGlzYWJsZXMgaXQuCiAgIHJ0Yzo6Q3JpdFNjb3BlIGNz
KCZjcml0X3NlY3RfKTsKICAgbWF4X3RhcmdldF9iaXRyYXRlX2ticHNfID0gbWF4X2ticHM7Cisg
IFNldFJhdGVBbGxvY2F0aW9uKHRhcmdldF9iaXRyYXRlXywgY29uZmlndXJlZF9pbnB1dF9mcmFt
ZXJhdGVfKTsKIH0KIAogaW50MzJfdCBGYWtlRW5jb2Rlcjo6SW5pdEVuY29kZShjb25zdCBWaWRl
b0NvZGVjKiBjb25maWcsCkBAIC03MSw2ICs5MCw3IEBAIGludDMyX3QgRmFrZUVuY29kZXI6OkVu
Y29kZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9pbWFnZSwKICAgaW50IGZyYW1lcmF0ZTsKICAg
VmlkZW9Db2RlY01vZGUgbW9kZTsKICAgYm9vbCBrZXlmcmFtZTsKKyAgdWludDMyX3QgY291bnRl
cjsKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0X3NlY3RfKTsKICAgICBtYXhfZnJh
bWVyYXRlID0gY29uZmlnXy5tYXhGcmFtZXJhdGU7CkBAIC04OCwxMyArMTA4LDE1IEBAIGludDMy
X3QgRmFrZUVuY29kZXI6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9pbWFnZSwKICAg
ICB9CiAgICAga2V5ZnJhbWUgPSBwZW5kaW5nX2tleWZyYW1lXzsKICAgICBwZW5kaW5nX2tleWZy
YW1lXyA9IGZhbHNlOworICAgIGNvdW50ZXIgPSBjb3VudGVyXysrOwogICB9CiAKICAgRnJhbWVJ
bmZvIGZyYW1lX2luZm8gPQogICAgICAgTmV4dEZyYW1lKGZyYW1lX3R5cGVzLCBrZXlmcmFtZSwg
bnVtX3NpbXVsY2FzdF9zdHJlYW1zLCB0YXJnZXRfYml0cmF0ZSwKICAgICAgICAgICAgICAgICBz
aW11bGNhc3Rfc3RyZWFtcywgZnJhbWVyYXRlKTsKICAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwg
ZnJhbWVfaW5mby5sYXllcnMuc2l6ZSgpOyArK2kpIHsKLSAgICBpZiAoZnJhbWVfaW5mby5sYXll
cnNbaV0uc2l6ZSA9PSAwKSB7CisgICAgY29uc3RleHByIGludCBrTWluUGF5TG9hZExlbmd0aCA9
IDE0OworICAgIGlmIChmcmFtZV9pbmZvLmxheWVyc1tpXS5zaXplIDwga01pblBheUxvYWRMZW5n
dGgpIHsKICAgICAgIC8vIERyb3AgdGhpcyB0ZW1wb3JhbCBsYXllci4KICAgICAgIGNvbnRpbnVl
OwogICAgIH0KQEAgLTEwNCw3ICsxMjYsMTAgQEAgaW50MzJfdCBGYWtlRW5jb2Rlcjo6RW5jb2Rl
KGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2ltYWdlLAogICAgIHNwZWNpZmljcy5jb2RlY1R5cGUg
PSBrVmlkZW9Db2RlY0dlbmVyaWM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gZW5j
b2RlZF9idWZmZXIoCiAgICAgICAgIG5ldyB1aW50OF90W2ZyYW1lX2luZm8ubGF5ZXJzW2ldLnNp
emVdKTsKLSAgICBtZW1jcHkoZW5jb2RlZF9idWZmZXIuZ2V0KCksIGVuY29kZWRfYnVmZmVyXywg
ZnJhbWVfaW5mby5sYXllcnNbaV0uc2l6ZSk7CisgICAgbWVtY3B5KGVuY29kZWRfYnVmZmVyLmdl
dCgpLCBlbmNvZGVkX2J1ZmZlcl8sCisgICAgICAgICAgIGZyYW1lX2luZm8ubGF5ZXJzW2ldLnNp
emUgLSA0KTsKKyAgICAvLyBXcml0ZSBhIGNvdW50ZXIgdG8gdGhlIGltYWdlIHRvIG1ha2UgZWFj
aCBmcmFtZSB1bmlxdWUuCisgICAgV3JpdGVDb3VudGVyKGVuY29kZWRfYnVmZmVyLmdldCgpICsg
ZnJhbWVfaW5mby5sYXllcnNbaV0uc2l6ZSAtIDQsIGNvdW50ZXIpOwogICAgIEVuY29kZWRJbWFn
ZSBlbmNvZGVkKGVuY29kZWRfYnVmZmVyLmdldCgpLCBmcmFtZV9pbmZvLmxheWVyc1tpXS5zaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbmNvZGVkX2J1ZmZlcl8pKTsKICAg
ICBlbmNvZGVkLlNldFRpbWVzdGFtcChpbnB1dF9pbWFnZS50aW1lc3RhbXAoKSk7CkBAIC0xMTgs
NyArMTQzLDYgQEAgaW50MzJfdCBGYWtlRW5jb2Rlcjo6RW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUm
IGlucHV0X2ltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFZpZGVvQ29u
dGVudFR5cGU6OlNDUkVFTlNIQVJFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
VmlkZW9Db250ZW50VHlwZTo6VU5TUEVDSUZJRUQ7CiAgICAgZW5jb2RlZC5TZXRTcGF0aWFsSW5k
ZXgoaSk7Ci0gICAgc3BlY2lmaWNzLmNvZGVjX25hbWUgPSBJbXBsZW1lbnRhdGlvbk5hbWUoKTsK
ICAgICBpZiAoY2FsbGJhY2stPk9uRW5jb2RlZEltYWdlKGVuY29kZWQsICZzcGVjaWZpY3MsIG51
bGxwdHIpLmVycm9yICE9CiAgICAgICAgIEVuY29kZWRJbWFnZUNhbGxiYWNrOjpSZXN1bHQ6Ok9L
KSB7CiAgICAgICByZXR1cm4gLTE7CkBAIC0xNDYsNiArMTcwLDcgQEAgRmFrZUVuY29kZXI6OkZy
YW1lSW5mbyBGYWtlRW5jb2Rlcjo6TmV4dEZyYW1lKAogICAgIH0KICAgfQogCisgIHJ0Yzo6Q3Jp
dFNjb3BlIGNzKCZjcml0X3NlY3RfKTsKICAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgbnVtX3Np
bXVsY2FzdF9zdHJlYW1zOyArK2kpIHsKICAgICBpZiAodGFyZ2V0X2JpdHJhdGUuR2V0Qml0cmF0
ZShpLCAwKSA+IDApIHsKICAgICAgIGludCB0ZW1wb3JhbF9pZCA9IGxhc3RfZnJhbWVfaW5mb18u
bGF5ZXJzLnNpemUoKSA+IGkKQEAgLTE2Niw3ICsxOTEsOSBAQCBGYWtlRW5jb2Rlcjo6RnJhbWVJ
bmZvIEZha2VFbmNvZGVyOjpOZXh0RnJhbWUoCiAgICAgaWYgKGZyYW1lX2luZm8ua2V5ZnJhbWUp
IHsKICAgICAgIGxheWVyX2luZm8udGVtcG9yYWxfaWQgPSAwOwogICAgICAgc2l6ZV90IGF2Z19m
cmFtZV9zaXplID0KLSAgICAgICAgICAodGFyZ2V0X2JpdHJhdGUuR2V0Qml0cmF0ZShpLCAwKSAr
IDcpIC8gKDggKiBmcmFtZXJhdGUpOworICAgICAgICAgICh0YXJnZXRfYml0cmF0ZS5HZXRCaXRy
YXRlKGksIDApICsgNykgKgorICAgICAgICAgIGtUZW1wb3JhbExheWVyUmF0ZUZhY3RvcltmcmFt
ZV9pbmZvLmxheWVycy5zaXplKCkgLSAxXVtpXSAvCisgICAgICAgICAgKDggKiBmcmFtZXJhdGUp
OwogCiAgICAgICAvLyBUaGUgZmlyc3QgZnJhbWUgaXMgYSBrZXkgZnJhbWUgYW5kIHNob3VsZCBi
ZSBsYXJnZXIuCiAgICAgICAvLyBTdG9yZSB0aGUgb3ZlcnNob290IGJ5dGVzIGFuZCBkaXN0cmli
dXRlIHRoZW0gb3ZlciB0aGUgY29taW5nIGZyYW1lcywKQEAgLTE3NSw3ICsyMDIsOCBAQCBGYWtl
RW5jb2Rlcjo6RnJhbWVJbmZvIEZha2VFbmNvZGVyOjpOZXh0RnJhbWUoCiAgICAgICBsYXllcl9p
bmZvLnNpemUgPSBrS2V5ZnJhbWVTaXplRmFjdG9yICogYXZnX2ZyYW1lX3NpemU7CiAgICAgfSBl
bHNlIHsKICAgICAgIHNpemVfdCBhdmdfZnJhbWVfc2l6ZSA9Ci0gICAgICAgICAgKHRhcmdldF9i
aXRyYXRlLkdldEJpdHJhdGUoaSwgbGF5ZXJfaW5mby50ZW1wb3JhbF9pZCkgKyA3KSAvCisgICAg
ICAgICAgKHRhcmdldF9iaXRyYXRlLkdldEJpdHJhdGUoaSwgbGF5ZXJfaW5mby50ZW1wb3JhbF9p
ZCkgKyA3KSAqCisgICAgICAgICAga1RlbXBvcmFsTGF5ZXJSYXRlRmFjdG9yW2ZyYW1lX2luZm8u
bGF5ZXJzLnNpemUoKSAtIDFdW2ldIC8KICAgICAgICAgICAoOCAqIGZyYW1lcmF0ZSk7CiAgICAg
ICBsYXllcl9pbmZvLnNpemUgPSBhdmdfZnJhbWVfc2l6ZTsKICAgICAgIGlmIChkZWJ0X2J5dGVz
XyA+IDApIHsKQEAgLTIwMSwxMCArMjI5LDYgQEAgaW50MzJfdCBGYWtlRW5jb2Rlcjo6UmVsZWFz
ZSgpIHsKICAgcmV0dXJuIDA7CiB9CiAKLWludDMyX3QgRmFrZUVuY29kZXI6OlNldENoYW5uZWxQ
YXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgewotICByZXR1cm4g
MDsKLX0KLQogaW50MzJfdCBGYWtlRW5jb2Rlcjo6U2V0UmF0ZUFsbG9jYXRpb24oCiAgICAgY29u
c3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgcmF0ZV9hbGxvY2F0aW9uLAogICAgIHVpbnQzMl90
IGZyYW1lcmF0ZSkgewpAQCAtMjM2LDggKzI2MCwxMCBAQCBpbnQzMl90IEZha2VFbmNvZGVyOjpT
ZXRSYXRlQWxsb2NhdGlvbigKIH0KIAogY29uc3QgY2hhciogRmFrZUVuY29kZXI6OmtJbXBsZW1l
bnRhdGlvbk5hbWUgPSAiZmFrZV9lbmNvZGVyIjsKLWNvbnN0IGNoYXIqIEZha2VFbmNvZGVyOjpJ
bXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7Ci0gIHJldHVybiBrSW1wbGVtZW50YXRpb25OYW1l
OworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBGYWtlRW5jb2Rlcjo6R2V0RW5jb2RlckluZm8o
KSBjb25zdCB7CisgIEVuY29kZXJJbmZvIGluZm87CisgIGluZm8uaW1wbGVtZW50YXRpb25fbmFt
ZSA9IGtJbXBsZW1lbnRhdGlvbk5hbWU7CisgIHJldHVybiBpbmZvOwogfQogCiBpbnQgRmFrZUVu
Y29kZXI6OkdldENvbmZpZ3VyZWRJbnB1dEZyYW1lcmF0ZSgpIGNvbnN0IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV9lbmNv
ZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zh
a2VfZW5jb2Rlci5oCmluZGV4IDY3YWNlYmVjNjljOTRiNzI3MGY2ZmQyODcxM2ZmZWY3OGRmMzg5
NWYuLmRhMzhmMTFiNDU2Y2ZhYmFhNDdlNDY0NmQ1MGZmY2IzNmFiZWIzOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV9lbmNv
ZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9mYWtlX2VuY29kZXIuaApAQCAtMTUsNyArMTUsNiBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAog
I2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgotI2luY2x1ZGUgImNv
bW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tf
Y2hlY2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKQEAgLTQxLDExICs0
MCwxMCBAQCBjbGFzcyBGYWtlRW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICBpbnQz
Ml90IFJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaygKICAgICAgIEVuY29kZWRJbWFnZUNh
bGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgIGludDMyX3QgUmVsZWFzZSgpIG92ZXJyaWRl
OwotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBp
bnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CiAgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3Qg
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgcmF0ZV9hbGxvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgb3ZlcnJpZGU7Ci0gIGNvbnN0IGNoYXIq
IEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICBpbnQgR2V0Q29uZmlndXJl
ZElucHV0RnJhbWVyYXRlKCkgY29uc3Q7CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgc3RhdGljIGNvbnN0IGNoYXIqIGtJbXBsZW1lbnRhdGlvbk5h
bWU7CiAKQEAgLTcxLDcgKzY5LDcgQEAgY2xhc3MgRmFrZUVuY29kZXIgOiBwdWJsaWMgVmlkZW9F
bmNvZGVyIHsKICAgICAgICAgICAgICAgICAgICAgICBTaW11bGNhc3RTdHJlYW0gc2ltdWxjYXN0
X3N0cmVhbXNba01heFNpbXVsY2FzdFN0cmVhbXNdLAogICAgICAgICAgICAgICAgICAgICAgIGlu
dCBmcmFtZXJhdGUpOwogCi0gIEZyYW1lSW5mbyBsYXN0X2ZyYW1lX2luZm9fOworICBGcmFtZUlu
Zm8gbGFzdF9mcmFtZV9pbmZvXyBSVENfR1VBUkRFRF9CWShjcml0X3NlY3RfKTsKICAgQ2xvY2sq
IGNvbnN0IGNsb2NrXzsKIAogICBWaWRlb0NvZGVjIGNvbmZpZ18gUlRDX0dVQVJERURfQlkoY3Jp
dF9zZWN0Xyk7CkBAIC04MCw2ICs3OCw3IEBAIGNsYXNzIEZha2VFbmNvZGVyIDogcHVibGljIFZp
ZGVvRW5jb2RlciB7CiAgIGludCBjb25maWd1cmVkX2lucHV0X2ZyYW1lcmF0ZV8gUlRDX0dVQVJE
RURfQlkoY3JpdF9zZWN0Xyk7CiAgIGludCBtYXhfdGFyZ2V0X2JpdHJhdGVfa2Jwc18gUlRDX0dV
QVJERURfQlkoY3JpdF9zZWN0Xyk7CiAgIGJvb2wgcGVuZGluZ19rZXlmcmFtZV8gUlRDX0dVQVJE
RURfQlkoY3JpdF9zZWN0Xyk7CisgIHVpbnQzMl90IGNvdW50ZXJfIFJUQ19HVUFSREVEX0JZKGNy
aXRfc2VjdF8pOwogICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X3NlY3RfOwogCiAgIHVpbnQ4
X3QgZW5jb2RlZF9idWZmZXJfWzEwMDAwMF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2RlY29kZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2RlY29k
ZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjE1YmIyMTQ5ZGVhNGYyZWY2ZWM3OWU5YmIzNThkYjIzOGJiYjJi
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvZmFrZV92cDhfZGVjb2Rlci5jYwpAQCAtMCwwICsxLDc3IEBACisvKgorICog
IENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInRlc3QvZmFrZV92cDhfZGVjb2Rlci5oIgorCisj
aW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGlt
ZXV0aWxzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCituYW1l
c3BhY2UgeworLy8gUmVhZCB3aWR0aCBhbmQgaGVpZ2h0IGZyb20gdGhlIHBheWxvYWQgb2YgdGhl
IGZyYW1lIGlmIGl0IGlzIGEga2V5IGZyYW1lIHRoZQorLy8gc2FtZSB3YXkgYXMgdGhlIHJlYWwg
VlA4IGRlY29kZXIuCisvLyBGYWtlRW5jb2RlciB3cml0ZXMgd2lkdGgsIGhlaWdodCBhbmQgZnJh
bWUgdHlwZS4KK3ZvaWQgUGFyc2VGYWtlVnA4KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIGlu
dCogd2lkdGgsIGludCogaGVpZ2h0KSB7CisgIGJvb2wga2V5X2ZyYW1lID0gZGF0YVswXSA9PSAw
OworICBpZiAoa2V5X2ZyYW1lKSB7CisgICAgKndpZHRoID0gKChkYXRhWzddIDw8IDgpICsgZGF0
YVs2XSkgJiAweDNGRkY7CisgICAgKmhlaWdodCA9ICgoZGF0YVs5XSA8PCA4KSArIGRhdGFbOF0p
ICYgMHgzRkZGOworICB9Cit9Cit9ICAvLyBuYW1lc3BhY2UKKworRmFrZVZwOERlY29kZXI6OkZh
a2VWcDhEZWNvZGVyKCkgOiBjYWxsYmFja18obnVsbHB0ciksIHdpZHRoXygwKSwgaGVpZ2h0Xygw
KSB7fQorCitpbnQzMl90IEZha2VWcDhEZWNvZGVyOjpJbml0RGVjb2RlKGNvbnN0IFZpZGVvQ29k
ZWMqIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBu
dW1iZXJfb2ZfY29yZXMpIHsKKyAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKK30KKwor
aW50MzJfdCBGYWtlVnA4RGVjb2Rlcjo6RGVjb2RlKGNvbnN0IEVuY29kZWRJbWFnZSYgaW5wdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtaXNzaW5nX2ZyYW1lcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29k
ZWNfc3BlY2lmaWNfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IHJlbmRlcl90aW1lX21zKSB7CisgIGNvbnN0ZXhwciBzaXplX3Qga01pblBheUxvYWRIZWFkZXJM
ZW5ndGggPSAxMDsKKyAgaWYgKGlucHV0Ll9sZW5ndGggPCBrTWluUGF5TG9hZEhlYWRlckxlbmd0
aCkgeworICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CisgIH0KKyAgUGFyc2VG
YWtlVnA4KGlucHV0Ll9idWZmZXIsICZ3aWR0aF8sICZoZWlnaHRfKTsKKworICBWaWRlb0ZyYW1l
IGZyYW1lKEk0MjBCdWZmZXI6OkNyZWF0ZSh3aWR0aF8sIGhlaWdodF8pLAorICAgICAgICAgICAg
ICAgICAgIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCwKKyAgICAgICAgICAgICAgICAgICByZW5k
ZXJfdGltZV9tcyAqIHJ0Yzo6a051bU1pY3Jvc2Vjc1Blck1pbGxpc2VjKTsKKyAgZnJhbWUuc2V0
X3RpbWVzdGFtcChpbnB1dC5UaW1lc3RhbXAoKSk7CisgIGZyYW1lLnNldF9udHBfdGltZV9tcyhp
bnB1dC5udHBfdGltZV9tc18pOworCisgIGNhbGxiYWNrXy0+RGVjb2RlZChmcmFtZSwgLypkZWNv
ZGVfdGltZV9tcz0qL2Fic2w6Om51bGxvcHQsCisgICAgICAgICAgICAgICAgICAgICAvKnFwPSov
YWJzbDo6bnVsbG9wdCk7CisKKyAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKK30KKwor
aW50MzJfdCBGYWtlVnA4RGVjb2Rlcjo6UmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKAor
ICAgIERlY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgeworICBjYWxsYmFja18gPSBjYWxs
YmFjazsKKyAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKK30KKworaW50MzJfdCBGYWtl
VnA4RGVjb2Rlcjo6UmVsZWFzZSgpIHsKKyAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsK
K30KKworY29uc3QgY2hhciogRmFrZVZwOERlY29kZXI6OmtJbXBsZW1lbnRhdGlvbk5hbWUgPSAi
ZmFrZV92cDhfZGVjb2RlciI7Citjb25zdCBjaGFyKiBGYWtlVnA4RGVjb2Rlcjo6SW1wbGVtZW50
YXRpb25OYW1lKCkgY29uc3QgeworICByZXR1cm4ga0ltcGxlbWVudGF0aW9uTmFtZTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhf
ZGVjb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9mYWtlX3ZwOF9kZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc0YWY0MDNkNjkyMDQwZDZhNTZkNTQ2
YTIzYzA1YTY0YzVhYmEwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhfZGVjb2Rlci5oCkBAIC0wLDAgKzEs
NTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFRFU1RfRkFLRV9WUDhfREVD
T0RFUl9IXworI2RlZmluZSBURVNUX0ZBS0VfVlA4X0RFQ09ERVJfSF8KKworI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCisjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKKworbmFtZXNwYWNlIHdlYnJ0
YyB7CituYW1lc3BhY2UgdGVzdCB7CisKK2NsYXNzIEZha2VWcDhEZWNvZGVyIDogcHVibGljIFZp
ZGVvRGVjb2RlciB7CisgcHVibGljOgorICBGYWtlVnA4RGVjb2RlcigpOworICB+RmFrZVZwOERl
Y29kZXIoKSBvdmVycmlkZSB7fQorCisgIGludDMyX3QgSW5pdERlY29kZShjb25zdCBWaWRlb0Nv
ZGVjKiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IG51bWJlcl9vZl9jb3Jl
cykgb3ZlcnJpZGU7CisKKyAgaW50MzJfdCBEZWNvZGUoY29uc3QgRW5jb2RlZEltYWdlJiBpbnB1
dCwKKyAgICAgICAgICAgICAgICAgYm9vbCBtaXNzaW5nX2ZyYW1lcywKKyAgICAgICAgICAgICAg
ICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCisgICAgICAg
ICAgICAgICAgIGludDY0X3QgcmVuZGVyX3RpbWVfbXMpIG92ZXJyaWRlOworCisgIGludDMyX3Qg
UmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKAorICAgICAgRGVjb2RlZEltYWdlQ2FsbGJh
Y2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKKworICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZTsK
KworICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsKKwor
ICBzdGF0aWMgY29uc3QgY2hhcioga0ltcGxlbWVudGF0aW9uTmFtZTsKKworIHByaXZhdGU6Cisg
IERlY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFja187CisgIGludCB3aWR0aF87CisgIGludCBo
ZWlnaHRfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKKworI2VuZGlmICAvLyBURVNUX0ZBS0VfVlA4X0RFQ09ERVJfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhfZW5j
b2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
ZmFrZV92cDhfZW5jb2Rlci5jYwppbmRleCA0MDM4ODM3Nzk4MzE1NjAxYWQ4MTJlY2I2M2VkOWFh
ZWM1YmM0ZmFjLi45MTgwYmVjMDQ5OTZiNjg4NTgzZmVhNjU2N2UxZmEwNDc4Y2ExNGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zh
a2VfdnA4X2VuY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmNjCkBAIC0xMCw4ICsxMCw4IEBACiAKICNp
bmNsdWRlICJ0ZXN0L2Zha2VfdnA4X2VuY29kZXIuaCIKIAotI2luY2x1ZGUgImNvbW1vbl90eXBl
cy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKKyNpbmNsdWRl
ICJhcGkvdmlkZW9fY29kZWNzL2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCisjaW5jbHVk
ZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vycm9yX2NvZGVzLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdXRpbGl0eS5o
IgpAQCAtMjAsNiArMjAsMjYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9yYW5kb20uaCIKICNpbmNs
dWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAorbmFtZXNwYWNlIHsKKworLy8gV3JpdGUgd2lk
dGggYW5kIGhlaWdodCB0byB0aGUgcGF5bG9hZCB0aGUgc2FtZSB3YXkgYXMgdGhlIHJlYWwgZW5j
b2RlciBkb2VzLgorLy8gSXQgcmVxdWlyZXMgdGhhdCB8cGF5bG9hZHwgaGFzIGEgc2l6ZSBvZiBh
dCBsZWFzdCBrTWluUGF5TG9hZEhlYWRlckxlbmd0aC4KK3ZvaWQgV3JpdGVGYWtlVnA4KHVuc2ln
bmVkIGNoYXIqIHBheWxvYWQsCisgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICBpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgYm9vbCBrZXlfZnJhbWUp
IHsKKyAgcGF5bG9hZFswXSA9IGtleV9mcmFtZSA/IDAgOiAweDAxOworCisgIGlmIChrZXlfZnJh
bWUpIHsKKyAgICBwYXlsb2FkWzldID0gKGhlaWdodCAmIDB4M0YwMCkgPj4gODsKKyAgICBwYXls
b2FkWzhdID0gKGhlaWdodCAmIDB4MDBGRik7CisKKyAgICBwYXlsb2FkWzddID0gKHdpZHRoICYg
MHgzRjAwKSA+PiA4OworICAgIHBheWxvYWRbNl0gPSAod2lkdGggJiAweDAwRkYpOworICB9Cit9
Cit9ICAvLyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIG5hbWVzcGFjZSB0ZXN0
IHsKQEAgLTYzLDE4ICs4MywxOCBAQCB2b2lkIEZha2VWUDhFbmNvZGVyOjpTZXR1cFRlbXBvcmFs
TGF5ZXJzKGNvbnN0IFZpZGVvQ29kZWMmIGNvZGVjKSB7CiAKICAgaW50IG51bV9zdHJlYW1zID0g
U2ltdWxjYXN0VXRpbGl0eTo6TnVtYmVyT2ZTaW11bGNhc3RTdHJlYW1zKGNvZGVjKTsKICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1fc3RyZWFtczsgKytpKSB7Ci0gICAgVGVtcG9yYWxMYXllcnNU
eXBlIHR5cGU7CisgICAgVnA4VGVtcG9yYWxMYXllcnNUeXBlIHR5cGU7CiAgICAgaW50IG51bV90
ZW1wb3JhbF9sYXllcnMgPQogICAgICAgICBTaW11bGNhc3RVdGlsaXR5OjpOdW1iZXJPZlRlbXBv
cmFsTGF5ZXJzKGNvZGVjLCBpKTsKICAgICBpZiAoU2ltdWxjYXN0VXRpbGl0eTo6SXNDb25mZXJl
bmNlTW9kZVNjcmVlbnNoYXJlKGNvZGVjKSAmJiBpID09IDApIHsKLSAgICAgIHR5cGUgPSBUZW1w
b3JhbExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1pYzsKKyAgICAgIHR5cGUgPSBWcDhUZW1wb3Jh
bExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1pYzsKICAgICAgIC8vIExlZ2FjeSBzY3JlZW5zaGFy
ZSBsYXllcnMgc3VwcG9ydHMgbWF4IDIgbGF5ZXJzLgogICAgICAgbnVtX3RlbXBvcmFsX2xheWVy
cyA9IHN0ZDo6bWF4PGludD4oMiwgbnVtX3RlbXBvcmFsX2xheWVycyk7CiAgICAgfSBlbHNlIHsK
LSAgICAgIHR5cGUgPSBUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBhdHRlcm47CisgICAgICB0
eXBlID0gVnA4VGVtcG9yYWxMYXllcnNUeXBlOjprRml4ZWRQYXR0ZXJuOwogICAgIH0KICAgICB0
ZW1wb3JhbF9sYXllcnNfLmVtcGxhY2VfYmFjaygKLSAgICAgICAgVGVtcG9yYWxMYXllcnM6OkNy
ZWF0ZVRlbXBvcmFsTGF5ZXJzKHR5cGUsIG51bV90ZW1wb3JhbF9sYXllcnMpKTsKKyAgICAgICAg
Q3JlYXRlVnA4VGVtcG9yYWxMYXllcnModHlwZSwgbnVtX3RlbXBvcmFsX2xheWVycykpOwogICB9
CiB9CiAKQEAgLTg1LDcgKzEwNSw2IEBAIHZvaWQgRmFrZVZQOEVuY29kZXI6OlBvcHVsYXRlQ29k
ZWNTcGVjaWZpYyhDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZXN0YW1wKSB7CiAg
IFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VfY2hlY2tlcl8pOwogICBj
b2RlY19zcGVjaWZpYy0+Y29kZWNUeXBlID0ga1ZpZGVvQ29kZWNWUDg7Ci0gIGNvZGVjX3NwZWNp
ZmljLT5jb2RlY19uYW1lID0gSW1wbGVtZW50YXRpb25OYW1lKCk7CiAgIENvZGVjU3BlY2lmaWNJ
bmZvVlA4KiB2cDhJbmZvID0gJihjb2RlY19zcGVjaWZpYy0+Y29kZWNTcGVjaWZpYy5WUDgpOwog
ICB2cDhJbmZvLT5rZXlJZHggPSBrTm9LZXlJZHg7CiAgIHZwOEluZm8tPm5vblJlZmVyZW5jZSA9
IGZhbHNlOwpAQCAtMTA1LDkgKzEyNCwyMCBAQCBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6UmVzdWx0
IEZha2VWUDhFbmNvZGVyOjpPbkVuY29kZWRJbWFnZSgKICAgICAgICAgICAgICAgICAgICAgICAg
IGVuY29kZWRfaW1hZ2UuX2ZyYW1lVHlwZSwgc3RyZWFtX2lkeCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGVuY29kZWRfaW1hZ2UuVGltZXN0YW1wKCkpOwogCisgIC8vIFdyaXRlIHdpZHRoIGFu
ZCBoZWlnaHQgdG8gdGhlIHBheWxvYWQgdGhlIHNhbWUgd2F5IGFzIHRoZSByZWFsIGVuY29kZXIK
KyAgLy8gZG9lcy4KKyAgV3JpdGVGYWtlVnA4KGVuY29kZWRfaW1hZ2UuX2J1ZmZlciwgZW5jb2Rl
ZF9pbWFnZS5fZW5jb2RlZFdpZHRoLAorICAgICAgICAgICAgICAgZW5jb2RlZF9pbWFnZS5fZW5j
b2RlZEhlaWdodCwKKyAgICAgICAgICAgICAgIGVuY29kZWRfaW1hZ2UuX2ZyYW1lVHlwZSA9PSBr
VmlkZW9GcmFtZUtleSk7CiAgIHJldHVybiBjYWxsYmFja18tPk9uRW5jb2RlZEltYWdlKGVuY29k
ZWRfaW1hZ2UsICZvdmVycmlkZWRfc3BlY2lmaWNfaW5mbywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhZ21lbnRzKTsKIH0KIAorVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5m
byBGYWtlVlA4RW5jb2Rlcjo6R2V0RW5jb2RlckluZm8oKSBjb25zdCB7CisgIEVuY29kZXJJbmZv
IGluZm87CisgIGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSA9ICJGYWtlVnA4RW5jb2RlciI7Cisg
IHJldHVybiBpbmZvOworfQorCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29kZXIuaAppbmRleCA3NTE4ZTNhMmRi
NWQzNTg0MDVmZmMxNmM4NmE3M2QwMjU3MWM4Y2U0Li5hNGQ2M2E5YWUzMGE2NzAxY2EwYmIyYTZl
YjM5YzQ5NWYwN2IxMWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29kZXIuaApAQCAt
MTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBv
cmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xh
eWVycy5oIgogI2luY2x1ZGUgInRlc3QvZmFrZV9lbmNvZGVyLmgiCiAKICNpbmNsdWRlICJydGNf
YmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKQEAgLTM3LDEyICszNywxMiBAQCBjbGFzcyBGYWtlVlA4
RW5jb2RlciA6IHB1YmxpYyBGYWtlRW5jb2RlciwgcHVibGljIEVuY29kZWRJbWFnZUNhbGxiYWNr
IHsKIAogICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZTsKIAotICBjb25zdCBjaGFyKiBJbXBs
ZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiRmFrZVZwOEVuY29kZXIi
OyB9Ci0KICAgUmVzdWx0IE9uRW5jb2RlZEltYWdlKGNvbnN0IEVuY29kZWRJbWFnZSYgZW5jb2Rl
ZEltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8q
IGNvZGVjU3BlY2lmaWNJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUlRQRnJh
Z21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRzKSBvdmVycmlkZTsKIAorICBFbmNvZGVySW5mbyBH
ZXRFbmNvZGVySW5mbygpIGNvbnN0IG92ZXJyaWRlOworCiAgcHJpdmF0ZToKICAgdm9pZCBTZXR1
cFRlbXBvcmFsTGF5ZXJzKGNvbnN0IFZpZGVvQ29kZWMmIGNvZGVjKTsKICAgdm9pZCBQb3B1bGF0
ZUNvZGVjU3BlY2lmaWMoQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljLApAQCAtNTQs
NyArNTQsNyBAQCBjbGFzcyBGYWtlVlA4RW5jb2RlciA6IHB1YmxpYyBGYWtlRW5jb2RlciwgcHVi
bGljIEVuY29kZWRJbWFnZUNhbGxiYWNrIHsKICAgcnRjOjpTZXF1ZW5jZWRUYXNrQ2hlY2tlciBz
ZXF1ZW5jZV9jaGVja2VyXzsKICAgRW5jb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrXyBSVENf
R1VBUkRFRF9CWShzZXF1ZW5jZV9jaGVja2VyXyk7CiAKLSAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFRlbXBvcmFsTGF5ZXJzPj4gdGVtcG9yYWxfbGF5ZXJzXworICBzdGQ6OnZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8VnA4VGVtcG9yYWxMYXllcnM+PiB0ZW1wb3JhbF9sYXllcnNfCiAgICAg
ICBSVENfR1VBUkRFRF9CWShzZXF1ZW5jZV9jaGVja2VyXyk7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2Vu
Y29kZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29kZXJfdW5pdHRlc3QuY2MKaW5kZXggYzc5YmEwYzU1MTVj
NWZkNjU0MDRiZGEwNThjZWUwYzgyZGFlYjQzOC4uNGU1NzZmZTljOWMyNTM2NGYxNDg5YzlmMTk5
ODg1ZmFhMjg5OTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhfZW5jb2Rl
cl91bml0dGVzdC5jYwpAQCAtMTQsMTEgKzE0LDExIEBACiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkv
bWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL3Rlc3QvY3JlYXRlX3NpbXVsY2FzdF90ZXN0X2ZpeHR1
cmUuaCIKICNpbmNsdWRlICJhcGkvdGVzdC9zaW11bGNhc3RfdGVzdF9maXh0dXJlLmgiCisjaW5j
bHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisj
aW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdGVzdF9m
aXh0dXJlX2ltcGwuaCIKLSNpbmNsdWRlICJ0ZXN0L2Zha2VfZGVjb2Rlci5oIgorI2luY2x1ZGUg
InRlc3QvZmFrZV92cDhfZGVjb2Rlci5oIgogI2luY2x1ZGUgInRlc3QvZmFrZV92cDhfZW5jb2Rl
ci5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0j
aW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CkBAIC0zMiw3ICszMiw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxTaW11bGNhc3RUZXN0Rml4dHVyZT4gQ3JlYXRlU3BlY2lmaWNTaW11bGNhc3RUZXN0
Rml4dHVyZSgpIHsKICAgICAgIH0pOwogICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFj
dG9yeT4gZGVjb2Rlcl9mYWN0b3J5ID0KICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZ1bmN0aW9u
VmlkZW9EZWNvZGVyRmFjdG9yeT4oCi0gICAgICAgICAgW10oKSB7IHJldHVybiBhYnNsOjptYWtl
X3VuaXF1ZTxGYWtlRGVjb2Rlcj4oKTsgfSk7CisgICAgICAgICAgW10oKSB7IHJldHVybiBhYnNs
OjptYWtlX3VuaXF1ZTxGYWtlVnA4RGVjb2Rlcj4oKTsgfSk7CiAgIHJldHVybiBDcmVhdGVTaW11
bGNhc3RUZXN0Rml4dHVyZShzdGQ6Om1vdmUoZW5jb2Rlcl9mYWN0b3J5KSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShkZWNvZGVyX2ZhY3RvcnkpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVmlkZW9Gb3JtYXQoIlZQOCIpKTsK
QEAgLTk5LDUgKzk5LDEwIEBAIFRFU1QoVGVzdEZha2VWcDhDb2RlYywgVGVzdFNwYXRpb1RlbXBv
cmFsTGF5ZXJzMzMzUGF0dGVybkVuY29kZXIpIHsKICAgZml4dHVyZS0+VGVzdFNwYXRpb1RlbXBv
cmFsTGF5ZXJzMzMzUGF0dGVybkVuY29kZXIoKTsKIH0KIAorVEVTVChUZXN0RmFrZVZwOENvZGVj
LCBUZXN0RGVjb2RlV2lkdGhIZWlnaHRTZXQpIHsKKyAgYXV0byBmaXh0dXJlID0gQ3JlYXRlU3Bl
Y2lmaWNTaW11bGNhc3RUZXN0Rml4dHVyZSgpOworICBmaXh0dXJlLT5UZXN0RGVjb2RlV2lkdGhI
ZWlnaHRTZXQoKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3QvZnJhbWVfZ2VuZXJhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9mcmFtZV9nZW5lcmF0b3IuY2MKaW5kZXggYWNkNjNmOTMxMjIw
YjU4ODM2YjFmNWNiYjAzZTZkY2Y0ZGE2YjA2MC4uZjZmZDI4NWMxYTEzZWFlZWRhZjA4NTNlMzA4
MGRkMjJhZjU1NTE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9mcmFtZV9nZW5lcmF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mcmFtZV9nZW5lcmF0b3IuY2MKQEAgLTM5
MCwxMSArMzkwLDExIEBAIGNsYXNzIFNjcm9sbGluZ0ltYWdlRnJhbWVHZW5lcmF0b3IgOiBwdWJs
aWMgRnJhbWVHZW5lcmF0b3IgewogICAgICAgICAgICAgICAgICAgIChwaXhlbHNfc2Nyb2xsZWRf
eCAvIDIpOwogCiAgICAgY3VycmVudF9mcmFtZV8gPSB3ZWJydGM6OlZpZGVvRnJhbWUoCi0gICAg
ICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8d2VicnRjOjpXcmFwcGVkSTQyMEJ1ZmZlcj4o
Ci0gICAgICAgICAgICB0YXJnZXRfd2lkdGhfLCB0YXJnZXRfaGVpZ2h0XywgJmk0MjBfYnVmZmVy
LT5EYXRhWSgpW29mZnNldF95XSwKLSAgICAgICAgICAgIGk0MjBfYnVmZmVyLT5TdHJpZGVZKCks
ICZpNDIwX2J1ZmZlci0+RGF0YVUoKVtvZmZzZXRfdV0sCi0gICAgICAgICAgICBpNDIwX2J1ZmZl
ci0+U3RyaWRlVSgpLCAmaTQyMF9idWZmZXItPkRhdGFWKClbb2Zmc2V0X3ZdLAotICAgICAgICAg
ICAgaTQyMF9idWZmZXItPlN0cmlkZVYoKSwgS2VlcFJlZlVudGlsRG9uZShpNDIwX2J1ZmZlcikp
LAorICAgICAgICBXcmFwSTQyMEJ1ZmZlcih0YXJnZXRfd2lkdGhfLCB0YXJnZXRfaGVpZ2h0XywK
KyAgICAgICAgICAgICAgICAgICAgICAgJmk0MjBfYnVmZmVyLT5EYXRhWSgpW29mZnNldF95XSwg
aTQyMF9idWZmZXItPlN0cmlkZVkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgJmk0MjBfYnVm
ZmVyLT5EYXRhVSgpW29mZnNldF91XSwgaTQyMF9idWZmZXItPlN0cmlkZVUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgJmk0MjBfYnVmZmVyLT5EYXRhVigpW29mZnNldF92XSwgaTQyMF9idWZm
ZXItPlN0cmlkZVYoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgS2VlcFJlZlVudGlsRG9uZShp
NDIwX2J1ZmZlcikpLAogICAgICAgICBrVmlkZW9Sb3RhdGlvbl8wLCAwKTsKICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1
bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg0Zjg1MzRiZTAwYmI1OTAxZTlhYjc5OTQy
MzAxOGYzMDM5YmUwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1bmN0
aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBA
QAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgVEVTVF9GVU5DVElPTl9WSURFT19E
RUNPREVSX0ZBQ1RPUllfSF8KLSNkZWZpbmUgVEVTVF9GVU5DVElPTl9WSURFT19ERUNPREVSX0ZB
Q1RPUllfSF8KLQotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2lu
Y2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92
aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLQot
bmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgdGVzdCB7Ci0KLS8vIEEgZGVjb2RlciBmYWN0
b3J5IHByb2R1Y2luZyBkZWNvZGVycyBieSBjYWxsaW5nIGEgc3VwcGxpZWQgY3JlYXRlIGZ1bmN0
aW9uLgotY2xhc3MgRnVuY3Rpb25WaWRlb0RlY29kZXJGYWN0b3J5IGZpbmFsIDogcHVibGljIFZp
ZGVvRGVjb2RlckZhY3RvcnkgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgRnVuY3Rpb25WaWRlb0Rl
Y29kZXJGYWN0b3J5KAotICAgICAgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9E
ZWNvZGVyPigpPiBjcmVhdGUpCi0gICAgICA6IGNyZWF0ZV8oW2NyZWF0ZV0oY29uc3QgU2RwVmlk
ZW9Gb3JtYXQmKSB7IHJldHVybiBjcmVhdGUoKTsgfSkge30KLSAgZXhwbGljaXQgRnVuY3Rpb25W
aWRlb0RlY29kZXJGYWN0b3J5KAotICAgICAgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9EZWNvZGVyPihjb25zdCBTZHBWaWRlb0Zvcm1hdCYpPgotICAgICAgICAgIGNyZWF0ZSkK
LSAgICAgIDogY3JlYXRlXyhzdGQ6Om1vdmUoY3JlYXRlKSkge30KLQotICAvLyBVbnVzZWQgYnkg
dGVzdHMuCi0gIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBHZXRTdXBwb3J0ZWRGb3JtYXRz
KCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHt9
OwotICB9Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4gQ3JlYXRlVmlkZW9EZWNv
ZGVyKAotICAgICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgb3ZlcnJpZGUgewotICAg
IHJldHVybiBjcmVhdGVfKGZvcm1hdCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4oY29uc3QgU2RwVmlkZW9Gb3Jt
YXQmKT4KLSAgICAgIGNyZWF0ZV87Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgdGVzdAotfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIFRFU1RfRlVOQ1RJT05fVklERU9fREVDT0RF
Ul9GQUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdW5jdGlvbl92aWRlb19l
bmNvZGVyX2ZhY3RvcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY3Mzk3ZjZj
MGM2OTc5OTRjNjBiNTE0OWIxZDZkYzM3YWE0MGQwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgVEVT
VF9GVU5DVElPTl9WSURFT19FTkNPREVSX0ZBQ1RPUllfSF8KLSNkZWZpbmUgVEVTVF9GVU5DVElP
Tl9WSURFT19FTkNPREVSX0ZBQ1RPUllfSF8KLQotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5j
bHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0j
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCi0jaW5jbHVkZSAi
YXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgdGVzdCB7Ci0K
LS8vIEFuIGVuY29kZXIgZmFjdG9yeSBwcm9kdWNpbmcgZW5jb2RlcnMgYnkgY2FsbGluZyBhIHN1
cHBsaWVkIGNyZWF0ZQotLy8gZnVuY3Rpb24uCi1jbGFzcyBGdW5jdGlvblZpZGVvRW5jb2RlckZh
Y3RvcnkgZmluYWwgOiBwdWJsaWMgVmlkZW9FbmNvZGVyRmFjdG9yeSB7Ci0gcHVibGljOgotICBl
eHBsaWNpdCBGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkoCi0gICAgICBzdGQ6OmZ1bmN0aW9u
PHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KCk+IGNyZWF0ZSkKLSAgICAgIDogY3JlYXRl
XyhbY3JlYXRlXShjb25zdCBTZHBWaWRlb0Zvcm1hdCYpIHsgcmV0dXJuIGNyZWF0ZSgpOyB9KSB7
fQotICBleHBsaWNpdCBGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkoCi0gICAgICBzdGQ6OmZ1
bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KGNvbnN0IFNkcFZpZGVvRm9ybWF0
Jik+Ci0gICAgICAgICAgY3JlYXRlKQotICAgICAgOiBjcmVhdGVfKHN0ZDo6bW92ZShjcmVhdGUp
KSB7fQotCi0gIC8vIFVudXNlZCBieSB0ZXN0cy4KLSAgc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3Jt
YXQ+IEdldFN1cHBvcnRlZEZvcm1hdHMoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgUlRDX05PVFJF
QUNIRUQoKTsKLSAgICByZXR1cm4ge307Ci0gIH0KLQotICBDb2RlY0luZm8gUXVlcnlWaWRlb0Vu
Y29kZXIoCi0gICAgICBjb25zdCBTZHBWaWRlb0Zvcm1hdCYgLyogZm9ybWF0ICovKSBjb25zdCBv
dmVycmlkZSB7Ci0gICAgQ29kZWNJbmZvIGNvZGVjX2luZm87Ci0gICAgY29kZWNfaW5mby5pc19o
YXJkd2FyZV9hY2NlbGVyYXRlZCA9IGZhbHNlOwotICAgIGNvZGVjX2luZm8uaGFzX2ludGVybmFs
X3NvdXJjZSA9IGZhbHNlOwotICAgIHJldHVybiBjb2RlY19pbmZvOwotICB9Ci0KLSAgc3RkOjp1
bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVyKAotICAgICAgY29uc3Qg
U2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgb3ZlcnJpZGUgewotICAgIHJldHVybiBjcmVhdGVfKGZv
cm1hdCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlx
dWVfcHRyPFZpZGVvRW5jb2Rlcj4oY29uc3QgU2RwVmlkZW9Gb3JtYXQmKT4KLSAgICAgIGNyZWF0
ZV87Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgdGVzdAotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywot
Ci0jZW5kaWYgIC8vIFRFU1RfRlVOQ1RJT05fVklERU9fRU5DT0RFUl9GQUNUT1JZX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1
enplcnMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Z1enplcnMvQlVJTEQuZ24KaW5kZXggY2NjMTVhNjEwMDVlOWQzYWU4NjJmMDBjNjJk
MmQ1YTY4OWYzYTQ5Ny4uNDNkZTVmOTk4Y2VmNjEwODAwMDQxOGQwZTdmYzVjOTUwNGRhZjZjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9mdXp6ZXJzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvZnV6emVycy9CVUlMRC5nbgpAQCAtNiw5ICs2LDkgQEAKICMgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQogIyBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KIAotaW1wb3J0KCIuLi8uLi93ZWJydGMuZ25pIikKIGltcG9ydCgiLy9idWlsZC9jb25maWcv
ZmVhdHVyZXMuZ25pIikKIGltcG9ydCgiLy90ZXN0aW5nL2xpYmZ1enplci9mdXp6ZXJfdGVzdC5n
bmkiKQoraW1wb3J0KCIuLi8uLi93ZWJydGMuZ25pIikKIAogcnRjX3N0YXRpY19saWJyYXJ5KCJ3
ZWJydGNfZnV6emVyX21haW4iKSB7CiAgIHNvdXJjZXMgPSBbCkBAIC0xMjUsNyArMTI1LDYgQEAg
d2VicnRjX2Z1enplcl90ZXN0KCJmb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25fZnV6emVyIikgewog
ICAgICIuLi8uLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgICAgIi4uLy4u
L3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgXQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9
IFsgIm1heF9sZW49NTAwMCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoImZsZXhmZWNfaGVh
ZGVyX3JlYWRlcl9mdXp6ZXIiKSB7CkBAIC0xNDgsNyArMTQ3LDYgQEAgd2VicnRjX2Z1enplcl90
ZXN0KCJmbGV4ZmVjX3NlbmRlcl9mdXp6ZXIiKSB7CiAgICAgIi4uLy4uL21vZHVsZXMvcnRwX3J0
Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgXQot
ICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MjAwIiBdCiB9CiAKIHdlYnJ0Y19mdXp6
ZXJfdGVzdCgidWxwZmVjX2hlYWRlcl9yZWFkZXJfZnV6emVyIikgewpAQCAtMTg2LDcgKzE4NCw2
IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgidWxwZmVjX3JlY2VpdmVyX2Z1enplciIpIHsKICAgICAi
Li4vLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAogICAgICIuLi8uLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgIF0KLSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJt
YXhfbGVuPTIwMDAiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJmbGV4ZmVjX3JlY2VpdmVy
X2Z1enplciIpIHsKQEAgLTE5OCw3ICsxOTUsNiBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoImZsZXhm
ZWNfcmVjZWl2ZXJfZnV6emVyIikgewogICAgICIuLi8uLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9y
dGNwX2Zvcm1hdCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAg
XQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MjAwMCIgXQogfQogCiB3ZWJydGNf
ZnV6emVyX3Rlc3QoInBhY2tldF9idWZmZXJfZnV6emVyIikgewpAQCAtMjA5LDcgKzIwNSw2IEBA
IHdlYnJ0Y19mdXp6ZXJfdGVzdCgicGFja2V0X2J1ZmZlcl9mdXp6ZXIiKSB7CiAgICAgIi4uLy4u
L21vZHVsZXMvdmlkZW9fY29kaW5nLyIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAg
IF0KLSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTIwMDAwMCIgXQogfQogCiB3ZWJy
dGNfZnV6emVyX3Rlc3QoInJ0Y3BfcmVjZWl2ZXJfZnV6emVyIikgewpAQCAtMjgzLDggKzI3OCw2
IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiYXVkaW9fZGVjb2Rlcl9pbGJjX2Z1enplciIpIHsKICAg
ICAiOmF1ZGlvX2RlY29kZXJfZnV6emVyIiwKICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rp
bmc6aWxiYyIsCiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MTAwMDAi
IF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJhdWRpb19kZWNvZGVyX2lzYWNfZnV6emVyIikg
ewpAQCAtMjk1LDggKzI4OCw2IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiYXVkaW9fZGVjb2Rlcl9p
c2FjX2Z1enplciIpIHsKICAgICAiOmF1ZGlvX2RlY29kZXJfZnV6emVyIiwKICAgICAiLi4vLi4v
bW9kdWxlcy9hdWRpb19jb2Rpbmc6aXNhYyIsCiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9
IFsgIm1heF9sZW49MjAwMDAiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJhdWRpb19kZWNv
ZGVyX2lzYWNfaW5jb21pbmdfcGFja2V0X2Z1enplciIpIHsKQEAgLTMwNyw4ICsyOTgsNiBAQCB3
ZWJydGNfZnV6emVyX3Rlc3QoImF1ZGlvX2RlY29kZXJfaXNhY19pbmNvbWluZ19wYWNrZXRfZnV6
emVyIikgewogICAgICI6YXVkaW9fZGVjb2Rlcl9mdXp6ZXIiLAogICAgICIuLi8uLi9tb2R1bGVz
L2F1ZGlvX2NvZGluZzppc2FjIiwKICAgXQotCi0gIGxpYmZ1enplcl9vcHRpb25zID0gWyAibWF4
X2xlbj0yMDAwMCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoImF1ZGlvX2RlY29kZXJfaXNh
Y2ZpeF9mdXp6ZXIiKSB7CkBAIC0zMTksOCArMzA4LDYgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJh
dWRpb19kZWNvZGVyX2lzYWNmaXhfZnV6emVyIikgewogICAgICI6YXVkaW9fZGVjb2Rlcl9mdXp6
ZXIiLAogICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzppc2FjX2ZpeCIsCiAgIF0KLQot
ICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MjAwMDAiIF0KIH0KIAogd2VicnRjX2Z1
enplcl90ZXN0KCJhdWRpb19kZWNvZGVyX29wdXNfZnV6emVyIikgewpAQCAtMzc3LDEwICszNjQs
NyBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoIm5ldGVxX3J0cF9mdXp6ZXIiKSB7CiAgICAgIi4uLy4u
L21vZHVsZXMvYXVkaW9fY29kaW5nOnBjbTE2YiIsCiAgICAgIi4uLy4uL21vZHVsZXMvcnRwX3J0
Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92
ZWQiLAotICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgIF0KLQot
ICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MTAwMDAwIiBdCiB9CiAKIHdlYnJ0Y19m
dXp6ZXJfdGVzdCgibmV0ZXFfc2lnbmFsX2Z1enplciIpIHsKQEAgLTM5NCwxMCArMzc4LDcgQEAg
d2VicnRjX2Z1enplcl90ZXN0KCJuZXRlcV9zaWduYWxfZnV6emVyIikgewogICAgICIuLi8uLi9t
b2R1bGVzL2F1ZGlvX2NvZGluZzpuZXRlcV90b29sc19taW5pbWFsIiwKICAgICAiLi4vLi4vbW9k
dWxlcy9hdWRpb19jb2Rpbmc6cGNtMTZiIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLAotICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAg
IF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MTAwMDAwIiBdCiB9CiAKIHdl
YnJ0Y19mdXp6ZXJfdGVzdCgicmVzaWR1YWxfZWNob19kZXRlY3Rvcl9mdXp6ZXIiKSB7CkBAIC00
MjAsNyArNDAxLDYgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJzZHBfcGFyc2VyX2Z1enplciIpIHsK
ICAgICAiLi4vLi4vcGM6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uIiwKICAgXQogICBzZWVkX2Nv
cnB1cyA9ICJjb3Jwb3JhL3NkcC1jb3JwdXMiCi0gIGxpYmZ1enplcl9vcHRpb25zID0gWyAibWF4
X2xlbj0xNjM4NCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoInN0dW5fcGFyc2VyX2Z1enpl
ciIpIHsKQEAgLTQ4Nyw2ICs0NjcsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX3Byb2Nl
c3NpbmdfZnV6emVyX2hlbHBlciIpIHsKICAgICAiOmZ1enpfZGF0YV9oZWxwZXIiLAogICAgICIu
Li8uLi9hcGkvYXVkaW86YXVkaW9fZnJhbWVfYXBpIiwKICAgICAiLi4vLi4vbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nIiwKKyAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIs
CiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6
b3B0aW9uYWwiLApAQCAtNTAxLDEwICs0ODIsMTMgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJhdWRp
b19wcm9jZXNzaW5nX2Z1enplciIpIHsKICAgICAiOmF1ZGlvX3Byb2Nlc3NpbmdfZnV6emVyX2hl
bHBlciIsCiAgICAgIi4uLy4uL2FwaS9hdWRpbzphZWMzX2ZhY3RvcnkiLAogICAgICIuLi8uLi9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmciLAorICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3Npbmc6YXBpIiwKICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMiLAot
ICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXA6bW9ja19hZWNfZHVt
cCIsCisgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVtcCIsCisgICAg
Ii4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVtcDphZWNfZHVtcF9pbXBsIiwK
ICAgICAiLi4vLi4vcnRjX2Jhc2U6cHRyX3V0aWwiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKICAg
ICAiLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBl
cnM6ZmllbGRfdHJpYWwiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1v
cnkiLApAQCAtNTE5LDEzICs1MDMsMTMgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJhZ2NfZnV6emVy
IikgewogICBkZXBzID0gWwogICAgICI6ZnV6el9kYXRhX2hlbHBlciIsCiAgICAgIi4uLy4uL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZyIsCisgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZzphcGkiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAg
Ii4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5IiwKICAgXQogCiAgIHNlZWRfY29ycHVzID0gImNvcnBvcmEvYWdjLWNv
cnB1cyIKLSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTIwMDAwMCIgXQogfQogCiB3
ZWJydGNfZnV6emVyX3Rlc3QoImNvbWZvcnRfbm9pc2VfZGVjb2Rlcl9mdXp6ZXIiKSB7CkBAIC01
MzQsMTEgKzUxOCw5IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiY29tZm9ydF9ub2lzZV9kZWNvZGVy
X2Z1enplciIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIs
Ci0gICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmNuZyIsCisgICAgIi4uLy4uL21vZHVs
ZXMvYXVkaW9fY29kaW5nOndlYnJ0Y19jbmciLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFz
ZV9hcHByb3ZlZCIsCiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49NTAw
MCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoInJ0cF9mcmFtZV9yZWZlcmVuY2VfZmluZGVy
X2Z1enplciIpIHsKQEAgLTU1MSw3ICs1MzMsNiBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoInJ0cF9m
cmFtZV9yZWZlcmVuY2VfZmluZGVyX2Z1enplciIpIHsKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBw
ZXJzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQot
ICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MjAwMDAiIF0KIH0KIAogd2VicnRjX2Z1
enplcl90ZXN0KCJmcmFtZV9idWZmZXIyX2Z1enplciIpIHsKQEAgLTU2Miw1ICs1NDMsNCBAQCB3
ZWJydGNfZnV6emVyX3Rlc3QoImZyYW1lX2J1ZmZlcjJfZnV6emVyIikgewogICAgICIuLi8uLi9t
b2R1bGVzL3ZpZGVvX2NvZGluZy8iLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6c3lzdGVt
X3dyYXBwZXJzIiwKICAgXQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MTAwMDAi
IF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3QvZnV6emVycy9hZ2NfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2FnY19mdXp6ZXIuY2MKaW5kZXggNWJkOTIx
ZTc0ZGFlM2I5OTg1OWNjZjUyMjE0Y2MxMWZhYmEwOWY0MC4uZjJjOTA0ODBjODM1ZWFkZWUzZGIy
Mjg5MjIyYTVjY2FkZWI5OWU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2FnY19mdXp6ZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2FnY19mdXp6
ZXIuY2MKQEAgLTEwOSw2ICsxMDksOSBAQCB2b2lkIEZ1enpHYWluQ29udHJvbGxlcih0ZXN0OjpG
dXp6RGF0YUhlbHBlciogZnV6el9kYXRhLCBHYWluQ29udHJvbEltcGwqIGdjaSkgewogfSAgLy8g
bmFtZXNwYWNlCiAKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKSB7CisgIGlmIChzaXplID4gMjAwMDAwKSB7CisgICAgcmV0dXJuOworICB9CiAgIHRl
c3Q6OkZ1enpEYXRhSGVscGVyIGZ1enpfZGF0YShydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90
PihkYXRhLCBzaXplKSk7CiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfY2FwdHVyZTsKICAg
cnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9yZW5kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rl
cl9pbGJjX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lsYmNfZnV6emVyLmNjCmluZGV4IGE2ODcy
NWQ2YWFjZDE2MmUyYTJmYjQwZjY5YTExMTBmYzc0MDI3YjMuLjg1NDg2NDVjNjNmOWI3NjdhNTk1
MmI3NjAxY2IyYzBmMWMzZGFiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lsYmNfZnV6emVy
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
ZnV6emVycy9hdWRpb19kZWNvZGVyX2lsYmNfZnV6emVyLmNjCkBAIC0xMyw2ICsxMyw5IEBACiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUgPiAxMDAwMCkgeworICAgIHJldHVybjsKKyAg
fQogICBBdWRpb0RlY29kZXJJbGJjSW1wbCBkZWM7CiAgIHN0YXRpYyBjb25zdCBpbnQga1NhbXBs
ZVJhdGVIeiA9IDgwMDA7CiAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0FsbG9jYXRlZE91cHV0U2l6
ZVNhbXBsZXMgPSBrU2FtcGxlUmF0ZUh6IC8gMTA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rlcl9p
c2FjX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNfZnV6emVyLmNjCmluZGV4IGU3OTk5NmUw
NWIyOGEzNGJmMTFkMWI4OTY5NzQwNmI0NmQxMjBlNzAuLmI1NzkwODM5NTZjNmJjZTA2NGJlNGY5
OGI3NWU5NWYwMDNiNjdlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNfZnV6emVyLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6
emVycy9hdWRpb19kZWNvZGVyX2lzYWNfZnV6emVyLmNjCkBAIC0xMyw2ICsxMyw5IEBACiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUgPiAyMDAwMCkgeworICAgIHJldHVybjsKKyAgfQog
ICBjb25zdCBpbnQgc2FtcGxlX3JhdGVfaHogPSBzaXplICUgMiA9PSAwID8gMTYwMDAgOiAzMjAw
MDsgICAgIC8vIDE2IG9yIDMyIGtIei4KICAgc3RhdGljIGNvbnN0IHNpemVfdCBrQWxsb2NhdGVk
T3VwdXRTaXplU2FtcGxlcyA9IDMyMDAwIC8gMTA7ICAvLyAxMDAgbXMuCiAgIGludDE2X3Qgb3V0
cHV0W2tBbGxvY2F0ZWRPdXB1dFNpemVTYW1wbGVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVy
X2lzYWNfaW5jb21pbmdfcGFja2V0X2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNfaW5jb21p
bmdfcGFja2V0X2Z1enplci5jYwppbmRleCA1NjQ1MTQyYTAzNGZhMjMyNmNhMTUzZTIzOTMxOTRi
ZWM5NDYyNjg0Li45YmQ2MjM0ZmExNDk1ZTcxNzVmYzAxMjIxZTM2ZWFlMjRhNjMwM2FhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1
enplcnMvYXVkaW9fZGVjb2Rlcl9pc2FjX2luY29taW5nX3BhY2tldF9mdXp6ZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1
ZGlvX2RlY29kZXJfaXNhY19pbmNvbWluZ19wYWNrZXRfZnV6emVyLmNjCkBAIC0xMyw2ICsxMyw5
IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUgPiAyMDAwMCkgeworICAgIHJldHVy
bjsKKyAgfQogICBBdWRpb0RlY29kZXJJc2FjRmxvYXRJbXBsIGRlYygxNjAwMCk7CiAgIEZ1enpB
dWRpb0RlY29kZXJJbmNvbWluZ1BhY2tldChkYXRhLCBzaXplLCAmZGVjKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVy
cy9hdWRpb19kZWNvZGVyX2lzYWNmaXhfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX2RlY29kZXJfaXNhY2ZpeF9m
dXp6ZXIuY2MKaW5kZXggNDQ0Mzk1YjE3ZGYyMGM1YzlkOTBjOTIwOGUxZDBjZjIwNTI1NTM1NC4u
NjQ3N2RjMzYxYmRkZDc3N2Y2MGI4MzBiYWYyMTA1MGMzZGYwN2ExYyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlv
X2RlY29kZXJfaXNhY2ZpeF9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX2RlY29kZXJfaXNhY2ZpeF9mdXp6
ZXIuY2MKQEAgLTEzLDYgKzEzLDkgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiB2b2lkIEZ1enpP
bmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+
IDIwMDAwKSB7CisgICAgcmV0dXJuOworICB9CiAgIHN0YXRpYyBjb25zdCBpbnQga1NhbXBsZVJh
dGVIeiA9IDE2MDAwOwogICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtBbGxvY2F0ZWRPdXB1dFNpemVT
YW1wbGVzID0gMTYwMDAgLyAxMDsgIC8vIDEwMCBtcy4KICAgaW50MTZfdCBvdXRwdXRba0FsbG9j
YXRlZE91cHV0U2l6ZVNhbXBsZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX3Byb2Nlc3NpbmdfY29uZmln
c19mdXp6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2Z1enplcnMvYXVkaW9fcHJvY2Vzc2luZ19jb25maWdzX2Z1enplci5jYwppbmRleCA4MTE3
YzUyYWFmMmIzMTVmN2YwNjZiNGIxOTI5MTk4OTFhNDFkMzMzLi5kZDAwMTM2ODRlZGJjYmNmMzQw
ODFmYWYzOGFlMjE0MjFiZmIyMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fcHJvY2Vzc2luZ19jb25maWdz
X2Z1enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Z1enplcnMvYXVkaW9fcHJvY2Vzc2luZ19jb25maWdzX2Z1enplci5jYwpAQCAtMTMs
MTAgKzEzLDExIEBACiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRl
ICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvbW9ja19hZWNfZHVtcC5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVtcC9hZWNfZHVtcF9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfbWlubWF4LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgog
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVk
ZSAidGVzdC9mdXp6ZXJzL2F1ZGlvX3Byb2Nlc3NpbmdfZnV6emVyX2hlbHBlci5oIgogI2luY2x1
ZGUgInRlc3QvZnV6emVycy9mdXp6X2RhdGFfaGVscGVyLmgiCkBAIC0yNSwzNiArMjYsNDUgQEAg
bmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogCiBjb25zdCBzdGQ6OnN0cmluZyBrRmll
bGRUcmlhbE5hbWVzW10gPSB7Ci0gICAgIldlYlJUQy1BZWMzVHJhbnNwYXJlbnRNb2RlS2lsbFN3
aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzU3RhdGlvbmFyeVJlbmRlckltcHJvdmVtZW50c0tpbGxT
d2l0Y2giLAotICAgICJXZWJSVEMtQWVjM0VuZm9yY2VEZWxheUFmdGVyUmVhbGlnbm1lbnRLaWxs
U3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNVc2VTaG9ydERlbGF5RXN0aW1hdG9yV2luZG93IiwK
LSAgICAiV2ViUlRDLUFlYzNSZXZlcmJCYXNlZE9uUmVuZGVyS2lsbFN3aXRjaCIsCi0gICAgIldl
YlJUQy1BZWMzUmV2ZXJiTW9kZWxsaW5nS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzRmls
dGVyQW5hbHl6ZXJQcmVwcm9jZXNzb3JLaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNUcmFu
c3BhcmVuY3lJbXByb3ZlbWVudHNLaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNTb2Z0VHJh
bnNwYXJlbnRNb2RlS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzT3ZlcnJpZGVFY2hvUGF0
aEdhaW5LaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNaZXJvRXh0ZXJuYWxEZWxheUhlYWRy
b29tS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzRG93blNhbXBsaW5nRmFjdG9yOEtpbGxT
d2l0Y2giLAorICAgICJXZWJSVEMtQWVjM0FkYXB0RXJsZU9uTG93UmVuZGVyS2lsbFN3aXRjaCIs
CisgICAgIldlYlJUQy1BZWMzQWdjR2FpbkNoYW5nZVJlc3BvbnNlS2lsbFN3aXRjaCIsCisgICAg
IldlYlJUQy1BZWMzQm91bmRlZE5lYXJlbmRLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNF
YXJseVNoYWRvd0ZpbHRlckp1bXBzdGFydEtpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM0Vu
YWJsZUFkYXB0aXZlRWNob1JldmVyYkVzdGltYXRpb24iLAorICAgICJXZWJSVEMtQWVjM0VuYWJs
ZUxlZ2FjeURvbWluYW50TmVhcmVuZCIsCisgICAgIldlYlJUQy1BZWMzRW5hYmxlVW5pdHlJbml0
aWFsUmFtcHVwR2FpbiIsCisgICAgIldlYlJUQy1BZWMzRW5hYmxlVW5pdHlOb25aZXJvUmFtcHVw
R2FpbiIsCiAgICAgIldlYlJUQy1BZWMzRW5mb3JjZVNrZXdIeXN0ZXJlc2lzMSIsCiAgICAgIldl
YlJUQy1BZWMzRW5mb3JjZVNrZXdIeXN0ZXJlc2lzMiIsCi0gICAgIldlYlJUQy1BZWMzTmV3U3Vw
cHJlc3Npb25LaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNMaW5lYXJNb2RlV2l0aERpdmVy
Z2VkRmlsdGVyS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzRmlsdGVyQW5hbHl6ZXJQcmVw
cm9jZXNzb3JLaWxsU3dpdGNoIiwKICAgICAiV2ViUlRDLUFlYzNNaXNhZGp1c3RtZW50RXN0aW1h
dG9yS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzTmV3RmlsdGVyUGFyYW1zS2lsbFN3aXRj
aCIsCisgICAgIldlYlJUQy1BZWMzTmV3UmVuZGVyQnVmZmVyaW5nS2lsbFN3aXRjaCIsCisgICAg
IldlYlJUQy1BZWMzT3ZlcnJpZGVFY2hvUGF0aEdhaW5LaWxsU3dpdGNoIiwKICAgICAiV2ViUlRD
LUFlYzNSYXBpZEFnY0dhaW5SZWNvdmVyeUtpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM1Ns
b3dGaWx0ZXJBZGFwdGF0aW9uS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzU21vb3RoVXBk
YXRlc1RhaWxGcmVxUmVzcEtpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM1N1cHByZXNzb3JO
ZWFyZW5kQXZlcmFnaW5nS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzQWdjR2FpbkNoYW5n
ZVJlc3BvbnNlS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzUmVzZXRFcmxlQXRHYWluQ2hh
bmdlc0tpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM1JldmVyYkJhc2VkT25SZW5kZXJLaWxs
U3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNSZXZlcmJNb2RlbGxpbmdLaWxsU3dpdGNoIiwKKyAg
ICAiV2ViUlRDLUFlYzNTaGFkb3dGaWx0ZXJCb29zdGVkSnVtcHN0YXJ0S2lsbFN3aXRjaCIsCiAg
ICAgIldlYlJUQy1BZWMzU2hhZG93RmlsdGVySnVtcHN0YXJ0S2lsbFN3aXRjaCIsCi0gICAgIldl
YlJUQy1BZWMzRWFybHlMaW5lYXJGaWx0ZXJVc2FnZUtpbGxTd2l0Y2giLAotICAgICJXZWJSVEMt
QWVjM1Nob3J0SW5pdGlhbFN0YXRlS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzU2hvcnRS
ZXZlcmJLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNTbW9vdGhTaWduYWxUcmFuc2l0aW9u
c0tpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM1Ntb290aFVwZGF0ZXNUYWlsRnJlcVJlc3BL
aWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNTb2Z0VHJhbnNwYXJlbnRNb2RlS2lsbFN3aXRj
aCIsCiAgICAgIldlYlJUQy1BZWMzU3RhbmRhcmROb25saW5lYXJSZXZlcmJNb2RlbEtpbGxTd2l0
Y2giLAotICAgICJXZWJSVEMtQWVjM0VuYWJsZUFkYXB0aXZlRWNob1JldmVyYkVzdGltYXRpb24i
fTsKKyAgICAiV2ViUlRDLUFlYzNTdHJpY3REaXZlcmdlbmNlQ2hlY2tLaWxsU3dpdGNoIiwKKyAg
ICAiV2ViUlRDLUFlYzNVc2VMZWdhY3lOb3JtYWxTdXBwcmVzc29yVHVuaW5nIiwKKyAgICAiV2Vi
UlRDLUFlYzNVc2VPZmZzZXRCbG9ja3MiLAorICAgICJXZWJSVEMtQWVjM1VzZVNob3J0RGVsYXlF
c3RpbWF0b3JXaW5kb3ciLAorICAgICJXZWJSVEMtQWVjM1VzZVN0YXRpb25hcml0eVByb3BlcnRp
ZXNLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNVdGlsaXplU2hhZG93RmlsdGVyT3V0cHV0
S2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzWmVyb0V4dGVybmFsRGVsYXlIZWFkcm9vbUtp
bGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM0Vhcmx5RGVsYXlEZXRlY3Rpb25LaWxsU3dpdGNo
IiwKK307CiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Byb2Nlc3Npbmc+IENyZWF0ZUFwbSh0ZXN0
OjpGdXp6RGF0YUhlbHBlciogZnV6el9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBmaWVsZF90cmlhbF9zdHJpbmcpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZmllbGRf
dHJpYWxfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJ0Yzo6VGFza1F1ZXVlKiB3b3JrZXJfcXVldWUpIHsKICAgLy8gUGFyc2UgYm9vbGVhbiB2YWx1
ZXMgZm9yIG9wdGlvbmFsbHkgZW5hYmxpbmcgZGlmZmVyZW50CiAgIC8vIGNvbmZpZ3VyYWJsZSBw
dWJsaWMgY29tcG9uZW50cyBvZiBBUE0uCiAgIGJvb2wgZXhwX2FnYyA9IGZ1enpfZGF0YS0+UmVh
ZE9yRGVmYXVsdFZhbHVlKHRydWUpOwpAQCAtNzksMTIgKzg5LDEzIEBAIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb1Byb2Nlc3Npbmc+IENyZWF0ZUFwbSh0ZXN0OjpGdXp6RGF0YUhlbHBlciogZnV6el9k
YXRhLAogCiAgIC8vIFJlYWQgYW4gaW50OCB2YWx1ZSwgYnV0IGRvbid0IGxldCBpdCBiZSB0b28g
bGFyZ2Ugb3Igc21hbGwuCiAgIGNvbnN0IGZsb2F0IGdhaW5fY29udHJvbGxlcjJfZ2Fpbl9kYiA9
Ci0gICAgICBydGM6OlNhZmVDbGFtcDxpbnQ+KGZ1enpfZGF0YS0+UmVhZE9yRGVmYXVsdFZhbHVl
PGludDhfdD4oMCksIC01MCwgNTApOworICAgICAgcnRjOjpTYWZlQ2xhbXA8aW50PihmdXp6X2Rh
dGEtPlJlYWRPckRlZmF1bHRWYWx1ZTxpbnQ4X3Q+KDApLCAtNDAsIDQwKTsKIAogICBjb25zdGV4
cHIgc2l6ZV90IGtOdW1GaWVsZFRyaWFscyA9IGFycmF5c2l6ZShrRmllbGRUcmlhbE5hbWVzKTsK
ICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHJlYWQgZGF0YSB0eXBlIGhhcyBlbm91Z2ggYml0cyB0byBm
dXp6IHRoZSBmaWVsZCB0cmlhbHMuCi0gIHVzaW5nIEZpZWxkVHJpYWxCaXRtYXNrVHlwZSA9IHVp
bnQzMl90OwotICBSVENfRENIRUNLX0xFKGtOdW1GaWVsZFRyaWFscywgc2l6ZW9mKEZpZWxkVHJp
YWxCaXRtYXNrVHlwZSkgKiA4KTsKKyAgdXNpbmcgRmllbGRUcmlhbEJpdG1hc2tUeXBlID0gdWlu
dDY0X3Q7CisgIHN0YXRpY19hc3NlcnQoa051bUZpZWxkVHJpYWxzIDw9IHNpemVvZihGaWVsZFRy
aWFsQml0bWFza1R5cGUpICogOCwKKyAgICAgICAgICAgICAgICAiRmllbGRUcmlhbEJpdG1hc2tU
eXBlIGlzIG5vdCBsYXJnZSBlbm91Z2guIik7CiAgIHN0ZDo6Yml0c2V0PGtOdW1GaWVsZFRyaWFs
cz4gZmllbGRfdHJpYWxfYml0bWFzaygKICAgICAgIGZ1enpfZGF0YS0+UmVhZE9yRGVmYXVsdFZh
bHVlPEZpZWxkVHJpYWxCaXRtYXNrVHlwZT4oMCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGtOdW1GaWVsZFRyaWFsczsgKytpKSB7CkBAIC0xMjksOCArMTQwLDkgQEAgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvUHJvY2Vzc2luZz4gQ3JlYXRlQXBtKHRlc3Q6OkZ1enpEYXRhSGVscGVyKiBmdXp6
X2RhdGEsCiAgICAgICAgICAgLlNldEVjaG9Db250cm9sRmFjdG9yeShzdGQ6Om1vdmUoZWNob19j
b250cm9sX2ZhY3RvcnkpKQogICAgICAgICAgIC5DcmVhdGUoY29uZmlnKSk7CiAKLSAgYXBtLT5B
dHRhY2hBZWNEdW1wKAotICAgICAgYWJzbDo6bWFrZV91bmlxdWU8dGVzdGluZzo6TmljZU1vY2s8
d2VicnRjOjp0ZXN0OjpNb2NrQWVjRHVtcD4+KCkpOworI2lmZGVmIFdFQlJUQ19MSU5VWAorICBh
cG0tPkF0dGFjaEFlY0R1bXAoQWVjRHVtcEZhY3Rvcnk6OkNyZWF0ZSgiL2Rldi9udWxsIiwgLTEs
IHdvcmtlcl9xdWV1ZSkpOworI2VuZGlmCiAKICAgd2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc6OkNv
bmZpZyBhcG1fY29uZmlnOwogICBhcG1fY29uZmlnLmVjaG9fY2FuY2VsbGVyLmVuYWJsZWQgPSB1
c2VfYWVjIHx8IHVzZV9hZWNtOwpAQCAtMTM5LDcgKzE1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb1Byb2Nlc3Npbmc+IENyZWF0ZUFwbSh0ZXN0OjpGdXp6RGF0YUhlbHBlciogZnV6el9kYXRh
LAogICBhcG1fY29uZmlnLmhpZ2hfcGFzc19maWx0ZXIuZW5hYmxlZCA9IGhwZjsKICAgYXBtX2Nv
bmZpZy5nYWluX2NvbnRyb2xsZXIyLmVuYWJsZWQgPSB1c2VfYWdjMl9saW1pdGVyOwogCi0gIGFw
bV9jb25maWcuZ2Fpbl9jb250cm9sbGVyMi5maXhlZF9nYWluX2RiID0gZ2Fpbl9jb250cm9sbGVy
Ml9nYWluX2RiOworICBhcG1fY29uZmlnLmdhaW5fY29udHJvbGxlcjIuZml4ZWRfZGlnaXRhbC5n
YWluX2RiID0gZ2Fpbl9jb250cm9sbGVyMl9nYWluX2RiOwogCiAgIGFwbS0+QXBwbHlDb25maWco
YXBtX2NvbmZpZyk7CiAKQEAgLTE1OCw3ICsxNzAsMTAgQEAgdm9pZCBGdXp6T25lSW5wdXQoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgLy8gVGhpcyBzdHJpbmcgbXVzdCBi
ZSBpbiBzY29wZSBkdXJpbmcgZXhlY3V0aW9uLCBhY2NvcmRpbmcgdG8gZG9jdW1lbnRhdGlvbgog
ICAvLyBmb3IgZmllbGRfdHJpYWwuaC4gSGVuY2UgaXQncyBjcmVhdGVkIGhlcmUgYW5kIG5vdCBp
biBDcmVhdGVBcG0uCiAgIHN0ZDo6c3RyaW5nIGZpZWxkX3RyaWFsX3N0cmluZyA9ICIiOwotICBh
dXRvIGFwbSA9IENyZWF0ZUFwbSgmZnV6el9kYXRhLCAmZmllbGRfdHJpYWxfc3RyaW5nKTsKKwor
ICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUYXNrUXVldWU+IHdvcmtlcl9xdWV1ZSgKKyAgICAgIG5l
dyBydGM6OlRhc2tRdWV1ZSgicnRjLWxvdy1wcmlvIiwgcnRjOjpUYXNrUXVldWU6OlByaW9yaXR5
OjpMT1cpKTsKKyAgYXV0byBhcG0gPSBDcmVhdGVBcG0oJmZ1enpfZGF0YSwgJmZpZWxkX3RyaWFs
X3N0cmluZywgd29ya2VyX3F1ZXVlLmdldCgpKTsKIAogICBpZiAoYXBtKSB7CiAgICAgRnV6ekF1
ZGlvUHJvY2Vzc2luZygmZnV6el9kYXRhLCBzdGQ6Om1vdmUoYXBtKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVk
aW9fcHJvY2Vzc2luZ19mdXp6ZXJfaGVscGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX3Byb2Nlc3NpbmdfZnV6emVyX2hl
bHBlci5jYwppbmRleCAwNzNhYjE3YmQ5MzFjNGJiZWMxMzNkMGU5MGFkNWMxYjNjYmFmNGMzLi5k
ZWM0ZTFmMDVlNGQ0MjJhNGRmZWY4NmE2ODBmYTQzMGJlMDc2Zjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9f
cHJvY2Vzc2luZ19mdXp6ZXJfaGVscGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19wcm9jZXNzaW5nX2Z1enplcl9o
ZWxwZXIuY2MKQEAgLTEzMCwxMCArMTMwLDggQEAgdm9pZCBGdXp6QXVkaW9Qcm9jZXNzaW5nKHRl
c3Q6OkZ1enpEYXRhSGVscGVyKiBmdXp6X2RhdGEsCiAgICAgICB9CiAgICAgfQogCi0gICAgLy8g
TWFrZSBjYWxscyB0byBzdGF0cyBnYXRoZXJpbmcgZnVuY3Rpb25zIHRvIGNvdmVyIHRoZXNlCi0g
ICAgLy8gY29kZXdheXMuCi0gICAgc3RhdGljX2Nhc3Q8dm9pZD4oYXBtLT5HZXRTdGF0aXN0aWNz
KCkpOwotICAgIHN0YXRpY19jYXN0PHZvaWQ+KGFwbS0+R2V0U3RhdGlzdGljcyh0cnVlKSk7Cisg
ICAgLy8gQ292ZXIgc3RhdHMgZ2F0aGVyaW5nIGNvZGUgcGF0aHMuCisgICAgc3RhdGljX2Nhc3Q8
dm9pZD4oYXBtLT5HZXRTdGF0aXN0aWNzKHRydWUgLypoYXNfcmVtb3RlX3RyYWNrcyovKSk7CiAg
ICAgc3RhdGljX2Nhc3Q8dm9pZD4oYXBtLT5VcGRhdGVIaXN0b2dyYW1zT25DYWxsRW5kKCkpOwog
CiAgICAgUlRDX0RDSEVDS19ORShhcG1fcmV0dXJuX2NvZGUsIEF1ZGlvUHJvY2Vzc2luZzo6a0Jh
ZERhdGFMZW5ndGhFcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvY29tZm9ydF9ub2lzZV9kZWNvZGVyX2Z1enpl
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6
emVycy9jb21mb3J0X25vaXNlX2RlY29kZXJfZnV6emVyLmNjCmluZGV4IDUwMTY2ZDdkZjc3ODI1
MDA0MWU1MmRjNTc3ZTE3NGI0YTQ4Yjk0Y2UuLjdmNDRhZjk5ZmI1MzAzNWQ0M2M3MjVmYmE5Mzc3
OTgwMGJmOTJmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvZnV6emVycy9jb21mb3J0X25vaXNlX2RlY29kZXJfZnV6emVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVy
cy9jb21mb3J0X25vaXNlX2RlY29kZXJfZnV6emVyLmNjCkBAIC01MCw2ICs1MCw5IEBAIHZvaWQg
RnV6ek9uZUlucHV0VGVzdChydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBkYXRhKSB7CiB9
ICAvLyBuYW1lc3BhY2UgdGVzdAogCiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+IDUwMDApIHsKKyAgICByZXR1cm47Cisg
IH0KICAgdGVzdDo6RnV6ek9uZUlucHV0VGVzdChydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90
PihkYXRhLCBzaXplKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mbGV4ZmVjX3JlY2VpdmVyX2Z1enplci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVy
cy9mbGV4ZmVjX3JlY2VpdmVyX2Z1enplci5jYwppbmRleCBkOTZhMzI4ZmEyYzU4YmZlZjBhNWVh
NTRjNDMxY2QyMDJhMTE1ZDRmLi5jNTAzNGJiOTMzZWU4M2I0NmExOGZjNDBhMWE4ZjY5Yjk1M2I5
ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Z1enplcnMvZmxleGZlY19yZWNlaXZlcl9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2ZsZXhmZWNfcmVj
ZWl2ZXJfZnV6emVyLmNjCkBAIC0yNSw3ICsyNSw3IEBAIGNsYXNzIER1bW15Q2FsbGJhY2sgOiBw
dWJsaWMgUmVjb3ZlcmVkUGFja2V0UmVjZWl2ZXIgewogCiB2b2lkIEZ1enpPbmVJbnB1dChjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewogICBjb25zdGV4cHIgc2l6ZV90IGtNaW5E
YXRhTmVlZGVkID0gMTI7Ci0gIGlmIChzaXplIDwga01pbkRhdGFOZWVkZWQpIHsKKyAgaWYgKHNp
emUgPCBrTWluRGF0YU5lZWRlZCB8fCBzaXplID4gMjAwMCkgewogICAgIHJldHVybjsKICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2Z1enplcnMvZmxleGZlY19zZW5kZXJfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2ZsZXhmZWNfc2VuZGVyX2Z1enpl
ci5jYwppbmRleCA4ZTc5Zjk1Y2YzZmVlMzIzYWM1MDJlM2RkMmNkMDIzMWExYWFhMGQ0Li40ODgy
ZjdkZjUxYTVjNmJmZmYzODI0ZGMwMDA0YjcwYjM1MWQ3NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZmxleGZlY19z
ZW5kZXJfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvZnV6emVycy9mbGV4ZmVjX3NlbmRlcl9mdXp6ZXIuY2MKQEAgLTMxLDEwICsz
MSw5IEBAIGNvbnN0IHN0ZDo6dmVjdG9yPFJ0cEV4dGVuc2lvblNpemU+IGtOb1J0cEhlYWRlckV4
dGVuc2lvblNpemVzOwogCiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkgewogICBzaXplX3QgaSA9IDA7Ci0gIGlmIChzaXplIDwgNSkgeworICBpZiAo
c2l6ZSA8IDUgfHwgc2l6ZSA+IDIwMCkgewogICAgIHJldHVybjsKICAgfQotCiAgIFNpbXVsYXRl
ZENsb2NrIGNsb2NrKDEgKyBkYXRhW2krK10pOwogICBGbGV4ZmVjU2VuZGVyIHNlbmRlcihrRmxl
eGZlY1BheWxvYWRUeXBlLCBrRmxleGZlY1NzcmMsIGtNZWRpYVNzcmMsIGtOb01pZCwKICAgICAg
ICAgICAgICAgICAgICAgICAga05vUnRwSGVhZGVyRXh0ZW5zaW9ucywga05vUnRwSGVhZGVyRXh0
ZW5zaW9uU2l6ZXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2Z1enplci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVy
cy9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25fZnV6emVyLmNjCmluZGV4IDlkNWI4NzI0MzRhZDMx
NjNjNjU5ODA5MjRjZDljODg3M2FiYzdlMmUuLjJlYjM1N2I3NGE4MTQyNmJkM2M1ZjI2YmQ4NDli
YzhiNTE1NzVjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25fZnV6emVyLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6
emVycy9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25fZnV6emVyLmNjCkBAIC0yNiw2ICsyNiw5IEBA
IGNvbnN0ZXhwciBzaXplX3Qga01heFBhY2tldHNJbkJ1ZmZlciA9IDQ4OwogfSAgLy8gbmFtZXNw
YWNlCiAKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KSB7CisgIGlmIChzaXplID4gNTAwMCkgeworICAgIHJldHVybjsKKyAgfQogICAvLyBPYmplY3Qg
dW5kZXIgdGVzdC4KICAgc3RkOjp1bmlxdWVfcHRyPEZvcndhcmRFcnJvckNvcnJlY3Rpb24+IGZl
YyA9CiAgICAgICBGb3J3YXJkRXJyb3JDb3JyZWN0aW9uOjpDcmVhdGVGbGV4ZmVjKGtGZWNTc3Jj
LCBrTWVkaWFTc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mcmFtZV9idWZmZXIyX2Z1enplci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mcmFtZV9i
dWZmZXIyX2Z1enplci5jYwppbmRleCAyZDU4MzA5NzljMTI0ZTQwOWM3ZjRhYTE5YTIzZWYxNTcx
OTA1M2VhLi5hNTU5MTA0MWZmNjliMDkxYTMxYTM1ZGQzNWJlMzJmYTRjMDRkOTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enpl
cnMvZnJhbWVfYnVmZmVyMl9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2ZyYW1lX2J1ZmZlcjJfZnV6emVyLmNjCkBA
IC02Myw2ICs2Myw5IEBAIGNsYXNzIEZ1enp5RnJhbWVPYmplY3QgOiBwdWJsaWMgdmlkZW9fY29k
aW5nOjpFbmNvZGVkRnJhbWUgewogfSAgLy8gbmFtZXNwYWNlCiAKIHZvaWQgRnV6ek9uZUlucHV0
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGlmIChzaXplID4gMTAwMDAp
IHsKKyAgICByZXR1cm47CisgIH0KICAgRGF0YVJlYWRlciByZWFkZXIoZGF0YSwgc2l6ZSk7CiAg
IENsb2NrKiBjbG9jayA9IENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCk7CiAgIFZDTUppdHRlckVz
dGltYXRvciBqaXR0ZXJfZXN0aW1hdG9yKGNsb2NrLCAwLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9tZG5zX3Bh
cnNlcl9mdXp6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Z1enplcnMvbWRuc19wYXJzZXJfZnV6emVyLmNjCmluZGV4IGMzZjc2NWVmNzg3YjQ4
MmIwOThjMGU4ODE5ODIzNDVjM2E5ZGE3ZTguLjI5NGY2ODMyMjZjMDc2MDNmOGUzZmI4ODc1MDVj
OTc2ZTdiNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvZnV6emVycy9tZG5zX3BhcnNlcl9mdXp6ZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL21kbnNfcGFy
c2VyX2Z1enplci5jYwpAQCAtMTksNyArMTksNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogdm9p
ZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgTWVz
c2FnZUJ1ZmZlclJlYWRlciBidWYocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSks
IHNpemUpOwotICBhdXRvIG1kbnNfbXNnID0gYWJzbDo6bWFrZV91bmlxdWU8TURuc01lc3NhZ2U+
KCk7CisgIGF1dG8gbWRuc19tc2cgPSBhYnNsOjptYWtlX3VuaXF1ZTxNZG5zTWVzc2FnZT4oKTsK
ICAgbWRuc19tc2ctPlJlYWQoJmJ1Zik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9uZXRlcV9ydHBfZnV6emVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6
ZXJzL25ldGVxX3J0cF9mdXp6ZXIuY2MKaW5kZXggOGFhNmJlNTlkZDBlMWM4ZDc0Y2Y5YmMxZDg3
MzUxMDNlMDNiMjc5OC4uOTRkYmVmMzllYmU1ZWRlZWM0NmEzYzJlNWIwYzE0NjA5NDZhZDg1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9mdXp6ZXJzL25ldGVxX3J0cF9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL25ldGVxX3J0cF9mdXp6ZXIuY2MKQEAg
LTE0Niw2ICsxNDYsOSBAQCB2b2lkIEZ1enpPbmVJbnB1dFRlc3QoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpIHsKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiAKIHZvaWQgRnV6ek9uZUlu
cHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGlmIChzaXplID4gMTAw
MDAwKSB7CisgICAgcmV0dXJuOworICB9CiAgIHRlc3Q6OkZ1enpPbmVJbnB1dFRlc3QoZGF0YSwg
c2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvZnV6emVycy9uZXRlcV9zaWduYWxfZnV6emVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL25ldGVxX3NpZ25h
bF9mdXp6ZXIuY2MKaW5kZXggMTZlNzc2MDcyYmMyZjFjYzYyZTZjMTE0OTA5MWJmNzQ1NDZhZDg5
Ni4uMjUzMDJjMzFhODg1N2ExMGFjMDIyODU4NDM4NGY5MzY4YWRiOTljNSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL25l
dGVxX3NpZ25hbF9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL25ldGVxX3NpZ25hbF9mdXp6ZXIuY2MKQEAgLTE0MCw4
ICsxNDAsOSBAQCBjbGFzcyBGdXp6U2lnbmFsSW5wdXQgOiBwdWJsaWMgTmV0RXFJbnB1dCB7CiB9
ICAvLyBuYW1lc3BhY2UKIAogdm9pZCBGdXp6T25lSW5wdXRUZXN0KGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7Ci0gIGlmIChzaXplIDwgMSkKKyAgaWYgKHNpemUgPCAxIHx8IHNp
emUgPiA5MDAwMCkgewogICAgIHJldHVybjsKKyAgfQogCiAgIEZ1enpEYXRhSGVscGVyIGZ1enpf
ZGF0YShydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PihkYXRhLCBzaXplKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6
emVycy9wYWNrZXRfYnVmZmVyX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9wYWNrZXRfYnVmZmVyX2Z1enplci5jYwppbmRl
eCBkMjI2NzY0Y2IyNWQ4MmJmZjg1ZmRlNDhkZTg3ODk1Yjk3NTBiZWFkLi41NmQxNTU3MDcyZjQ3
ZjUyNTE2ZjA5NWY3ZThkMmIwNmVmZTFiNGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvcGFja2V0X2J1ZmZlcl9mdXp6
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9mdXp6ZXJzL3BhY2tldF9idWZmZXJfZnV6emVyLmNjCkBAIC0yMSw2ICsyMSw5IEBAIGNsYXNz
IE51bGxDYWxsYmFjayA6IHB1YmxpYyB2aWRlb19jb2Rpbmc6Ok9uUmVjZWl2ZWRGcmFtZUNhbGxi
YWNrIHsKIH0gIC8vIG5hbWVzcGFjZQogCiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+IDIwMDAwMCkgeworICAgIHJldHVy
bjsKKyAgfQogICBWQ01QYWNrZXQgcGFja2V0OwogICBOdWxsQ2FsbGJhY2sgY2FsbGJhY2s7CiAg
IFNpbXVsYXRlZENsb2NrIGNsb2NrKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0Y3BfcmVjZWl2ZXJfZnV6emVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6
ZXJzL3J0Y3BfcmVjZWl2ZXJfZnV6emVyLmNjCmluZGV4IGNkNzYzZDBmNjA1ODgwNDE2MzAyYjUw
YTJiYTMyMjRkZDIxNTI0ZTkuLjdmOGNhYmFmZDY4ZWE0OGJlYjlhNGI4N2U5NTcwY2M0ZTMwM2Rl
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvZnV6emVycy9ydGNwX3JlY2VpdmVyX2Z1enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvcnRjcF9yZWNlaXZlcl9m
dXp6ZXIuY2MKQEAgLTE1LDYgKzE1LDggQEAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNl
IHsKIAorY29uc3RleHByIGludCBrUnRjcEludGVydmFsTXMgPSAxMDAwOworCiBjbGFzcyBOdWxs
TW9kdWxlUnRwUnRjcCA6IHB1YmxpYyBSVENQUmVjZWl2ZXI6Ok1vZHVsZVJ0cFJ0Y3AgewogIHB1
YmxpYzoKICAgdm9pZCBTZXRUbW1ibihzdGQ6OnZlY3RvcjxydGNwOjpUbW1iSXRlbT4pIG92ZXJy
aWRlIHt9CkBAIC0zMCw3ICszMiw3IEBAIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSB7CiAgIFNpbXVsYXRlZENsb2NrIGNsb2NrKDEyMzQpOwogCiAg
IFJUQ1BSZWNlaXZlciByZWNlaXZlcigmY2xvY2ssIGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgJnJ0cF9y
dGNwX21vZHVsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBrUnRjcEludGVy
dmFsTXMsICZydHBfcnRjcF9tb2R1bGUpOwogCiAgIHJlY2VpdmVyLkluY29taW5nUGFja2V0KGRh
dGEsIHNpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0cF9mcmFtZV9yZWZlcmVuY2VfZmluZGVyX2Z1enpl
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6
emVycy9ydHBfZnJhbWVfcmVmZXJlbmNlX2ZpbmRlcl9mdXp6ZXIuY2MKaW5kZXggZmQ5ODg5MmEw
NDgwZmQ5Y2YwZWI0MGVmYmU4YTQ4ODE3NGQyMWMwZC4uNTdkN2E5NjIzYTA3YTBkMTI4ODdlZTc2
MTg0MzNlMmE5NGUxNzg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0cF9mcmFtZV9yZWZlcmVuY2VfZmluZGVyX2Z1
enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2Z1enplcnMvcnRwX2ZyYW1lX3JlZmVyZW5jZV9maW5kZXJfZnV6emVyLmNjCkBAIC0xMDEs
NiArMTAxLDkgQEAgY2xhc3MgRnV6enlQYWNrZXRCdWZmZXIgOiBwdWJsaWMgdmlkZW9fY29kaW5n
OjpQYWNrZXRCdWZmZXIgewogfSAgLy8gbmFtZXNwYWNlCiAKIHZvaWQgRnV6ek9uZUlucHV0KGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGlmIChzaXplID4gMjAwMDApIHsK
KyAgICByZXR1cm47CisgIH0KICAgRGF0YVJlYWRlciByZWFkZXIoZGF0YSwgc2l6ZSk7CiAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxGdXp6eVBhY2tldEJ1ZmZlcj4gcGIobmV3IEZ1enp5UGFja2V0QnVm
ZmVyKCZyZWFkZXIpKTsKICAgTnVsbENhbGxiYWNrIGNiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0cF9wYWNrZXRf
ZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9mdXp6ZXJzL3J0cF9wYWNrZXRfZnV6emVyLmNjCmluZGV4IDhiZjhlNzRhYmE5NGNmNzM0NWE1
ZGZmMWVjMTYwYmE1OWViY2M0ZmMuLmY3NzRjMGNiOGIwMTg0MzQzNjAxYThmMmZmYmM2MjMwOTAy
Nzk0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3QvZnV6emVycy9ydHBfcGFja2V0X2Z1enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvcnRwX3BhY2tldF9mdXp6
ZXIuY2MKQEAgLTEyMSw2ICsxMjEsMTEgQEAgdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgICAgICAgcGFja2V0LkdldEV4dGVuc2lvbjxSdHBH
ZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uPigmZGVzY3JpcHRvcik7CiAgICAgICAgIGJy
ZWFrOwogICAgICAgfQorICAgICAgY2FzZSBrUnRwRXh0ZW5zaW9uQ29sb3JTcGFjZTogeworICAg
ICAgICBDb2xvclNwYWNlIGNvbG9yX3NwYWNlOworICAgICAgICBwYWNrZXQuR2V0RXh0ZW5zaW9u
PENvbG9yU3BhY2VFeHRlbnNpb24+KCZjb2xvcl9zcGFjZSk7CisgICAgICAgIGJyZWFrOworICAg
ICAgfQogICAgIH0KICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3NkcF9wYXJzZXJfZnV6emVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3NkcF9w
YXJzZXJfZnV6emVyLmNjCmluZGV4IGU0NzE1NmM1NzFlNWNkOTAxNTMwYzBkYjZkOGQ4N2Y1MTBh
Nzg3MTQuLjc2M2RiYzU5NGFjYjc0MTI1YmMzMjhlY2NlODgxYWI5YWZlNmUzNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVy
cy9zZHBfcGFyc2VyX2Z1enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvc2RwX3BhcnNlcl9mdXp6ZXIuY2MKQEAgLTE1LDYg
KzE1LDkgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+IDE2Mzg0KSB7CisgICAg
cmV0dXJuOworICB9CiAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIHNpemUpOwogICB3ZWJydGM6OlNkcFBhcnNlRXJyb3IgZXJyb3I7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZnV6emVycy91bHBmZWNfcmVjZWl2ZXJfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3VscGZlY19yZWNlaXZlcl9mdXp6
ZXIuY2MKaW5kZXggNmI3NGYzYWM5NWQ0ZDNmZjNhZDI5MDc0YTEyZjY3NDEwYzE3NDI5OC4uN2Ni
MGZjNjFiNWQyZjIwYmNkNWM0MmI3MDlkMWM4YzdiZDVkMmMxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3VscGZlY19y
ZWNlaXZlcl9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3VscGZlY19yZWNlaXZlcl9mdXp6ZXIuY2MKQEAgLTI1LDcg
KzI1LDcgQEAgY2xhc3MgRHVtbXlDYWxsYmFjayA6IHB1YmxpYyBSZWNvdmVyZWRQYWNrZXRSZWNl
aXZlciB7CiAKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7CiAgIGNvbnN0ZXhwciBzaXplX3Qga01pbkRhdGFOZWVkZWQgPSAxMjsKLSAgaWYgKHNp
emUgPCBrTWluRGF0YU5lZWRlZCkgeworICBpZiAoc2l6ZSA8IGtNaW5EYXRhTmVlZGVkIHx8IHNp
emUgPiAyMDAwKSB7CiAgICAgcmV0dXJuOwogICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvaW9zL2NvdmVyYWdlX3V0aWxfaW9z
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lvcy9j
b3ZlcmFnZV91dGlsX2lvcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExN2I2OWRjYTgwMTFiMWQyMTZlM2NiYjhk
ZGU4NmQ4Nzc5ZmFiYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lvcy9jb3ZlcmFnZV91dGlsX2lvcy5oCkBAIC0wLDAg
KzEsMjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgVEVTVF9JT1NfQ09WRVJBR0Vf
VVRJTF9JT1NfSF8KKyNkZWZpbmUgVEVTVF9JT1NfQ09WRVJBR0VfVVRJTF9JT1NfSF8KKworbmFt
ZXNwYWNlIHJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKKy8vIEluIGRlYnVnIGJ1aWxkcywgaWYg
SU9TX0VOQUJMRV9DT1ZFUkFHRSBpcyBkZWZpbmVkLCBzZXRzIHRoZSBmaWxlbmFtZSBvZiB0aGUK
Ky8vIGNvdmVyYWdlIGZpbGUuIE90aGVyd2lzZSwgaXQgZG9lcyBub3RoaW5nLgordm9pZCBDb25m
aWd1cmVDb3ZlcmFnZVJlcG9ydFBhdGgoKTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8v
IG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAvLyBURVNUX0lPU19DT1ZFUkFHRV9VVElMX0lPU19I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC9pb3MvY292ZXJhZ2VfdXRpbF9pb3MubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lvcy9jb3ZlcmFnZV91dGlsX2lvcy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjFhMTZkZWYyNDc0NmE4ZmZkMGZkMjJkOWFjNzJiMmQyNDg0YWUwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9pb3Mv
Y292ZXJhZ2VfdXRpbF9pb3MubW0KQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqICBDb3B5cmlnaHQg
MjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8K
KworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpZmRlZiBXRUJSVENfSU9T
X0VOQUJMRV9DT1ZFUkFHRQorZXh0ZXJuICJDIiB2b2lkIF9fbGx2bV9wcm9maWxlX3NldF9maWxl
bmFtZShjb25zdCBjaGFyKiBuYW1lKTsKKyNlbmRpZgorCituYW1lc3BhY2UgcnRjIHsKK25hbWVz
cGFjZSB0ZXN0IHsKKwordm9pZCBDb25maWd1cmVDb3ZlcmFnZVJlcG9ydFBhdGgoKSB7CisjaWZk
ZWYgV0VCUlRDX0lPU19FTkFCTEVfQ09WRVJBR0UKKyAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlX3Rva2VuOworICBkaXNwYXRjaF9vbmNlKCZvbmNlX3Rva2VuLCBeeworICAgIC8vIFdyaXRl
cyB0aGUgcHJvZnJhdyBmaWxlIHRvIHRoZSBEb2N1bWVudHMgZGlyZWN0b3J5LCB3aGVyZSB0aGUg
YXBwIGhhcworICAgIC8vIHdyaXRlIHJpZ2h0cy4KKyAgICBOU0FycmF5KiBwYXRocyA9CisgICAg
ICAgIE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TRG9jdW1lbnREaXJlY3Rv
cnksIE5TVXNlckRvbWFpbk1hc2ssIFlFUyk7CisgICAgTlNTdHJpbmcqIGRvY3VtZW50c19kaXJl
Y3RvcnkgPSBbcGF0aHMgZmlyc3RPYmplY3RdOworICAgIE5TU3RyaW5nKiBmaWxlX25hbWUgPSBb
ZG9jdW1lbnRzX2RpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJjb3Zl
cmFnZS5wcm9mcmF3Il07CisKKyAgICAvLyBGb3IgZG9jdW1lbnRhdGlvbiwgc2VlOgorICAgIC8v
IGh0dHA6Ly9jbGFuZy5sbHZtLm9yZy9kb2NzL1NvdXJjZUJhc2VkQ29kZUNvdmVyYWdlLmh0bWwK
KyAgICBfX2xsdm1fcHJvZmlsZV9zZXRfZmlsZW5hbWUoW2ZpbGVfbmFtZSBjU3RyaW5nVXNpbmdF
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworCisgICAgLy8gUHJpbnQgdGhlIHBhdGgg
Zm9yIGVhc2llciByZXRyaWV2YWwuCisgICAgTlNMb2coQCJDb3ZlcmFnZSBkYXRhIGF0ICVALiIs
IGZpbGVfbmFtZSk7CisgIH0pOworI2VuZGlmICAvLyBpZmRlZiBXRUJSVENfSU9TX0VOQUJMRV9D
T1ZFUkFHRQorfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9pb3MvdGVzdF9zdXBwb3J0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9pb3MvdGVzdF9zdXBwb3J0Lm1tCmluZGV4IGZlYzU5Nzg4NTQ5N2Q2YmEy
OTk2Y2RlYmI2YmQ5NmJkMjIwY2YwNmIuLjg2MDA1OTc0ZmIyMjE2YzYzNjVjYzUwYzE2N2IzOTY4
YTgyNDRkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvaW9zL3Rlc3Rfc3VwcG9ydC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lvcy90ZXN0X3N1cHBvcnQubW0KQEAgLTEwLDYg
KzEwLDcgQEAKIAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KIAorI2luY2x1ZGUgInRlc3QvaW9z
L2NvdmVyYWdlX3V0aWxfaW9zLmgiCiAjaW5jbHVkZSAidGVzdC9pb3MvdGVzdF9zdXBwb3J0Lmgi
CiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9wZXJmX3Rlc3QuaCIKIApAQCAtNzAsNiArNzEs
OCBAQCAtIChCT09MKWFwcGxpY2F0aW9uOihVSUFwcGxpY2F0aW9uICopYXBwbGljYXRpb24KIH0K
IAogLSAodm9pZClydW5UZXN0cyB7CisgIHJ0Yzo6dGVzdDo6Q29uZmlndXJlQ292ZXJhZ2VSZXBv
cnRQYXRoKCk7CisKICAgaW50IGV4aXRTdGF0dXMgPSBnX3Rlc3Rfc3VpdGUoKTsKIAogICBpZiAo
Z19zYXZlX2NoYXJ0anNvbl9yZXN1bHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnRwX2ZpbGVfcmVhZGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J0cF9maWxlX3JlYWRlci5o
CmluZGV4IDQ5MTM1MjJiYTcwMWE2YWQ4MTAwNDc3YjVjZTNjZTk1OWJjODBiZjMuLjgwNTA0NGY1
MmY5ZjljNzM5OWM4MjQ5MTBmMTlkMTIxMTNlZmY5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnRwX2ZpbGVfcmVhZGVyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydHBfZmls
ZV9yZWFkZXIuaApAQCAtMTMsOCArMTMsNiBAQAogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxz
dHJpbmc+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlKQotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydHBfZmls
ZV93cml0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvcnRwX2ZpbGVfd3JpdGVyLmgKaW5kZXggNDQ5NmNhNGEyNWZkYzA4NjdmMTc3YTQ5YmI3YTVl
MDI1Nzk5MGJlNi4uNWU1NjBkNzM3NTYwYTQ3NzJiZTM5ZDkzMjE1ZGExOTI1ZDFjMDU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9y
dHBfZmlsZV93cml0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L3J0cF9maWxlX3dyaXRlci5oCkBAIC0xMiw3ICsxMiw2IEBACiAKICNpbmNs
dWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWls
ZC9pbmNsdWRlKQogI2luY2x1ZGUgInRlc3QvcnRwX2ZpbGVfcmVhZGVyLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9ydHBfcnRjcF9vYnNlcnZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydHBfcnRjcF9vYnNlcnZlci5oCmluZGV4IGM5NzQ0
MTA5NTUzNzQyZTdmZDk2NTEzY2NmYWEzYmViMGFiNGI3ZTIuLmQ0YWFkZmUwZGFkYWYwZjkzZmUz
MDg2ZTM5ODU3NDZiZWFhNDZkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnRwX3J0Y3Bfb2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J0cF9ydGNwX29ic2VydmVy
LmgKQEAgLTcxLDkgKzcxLDcgQEAgY2xhc3MgUnRwUnRjcE9ic2VydmVyIHsKICBwcm90ZWN0ZWQ6
CiAgIFJ0cFJ0Y3BPYnNlcnZlcigpIDogUnRwUnRjcE9ic2VydmVyKDApIHt9CiAgIGV4cGxpY2l0
IFJ0cFJ0Y3BPYnNlcnZlcihpbnQgZXZlbnRfdGltZW91dF9tcykKLSAgICAgIDogb2JzZXJ2YXRp
b25fY29tcGxldGVfKGZhbHNlLCBmYWxzZSksCi0gICAgICAgIHBhcnNlcl8oUnRwSGVhZGVyUGFy
c2VyOjpDcmVhdGUoKSksCi0gICAgICAgIHRpbWVvdXRfbXNfKGV2ZW50X3RpbWVvdXRfbXMpIHsK
KyAgICAgIDogcGFyc2VyXyhSdHBIZWFkZXJQYXJzZXI6OkNyZWF0ZSgpKSwgdGltZW91dF9tc18o
ZXZlbnRfdGltZW91dF9tcykgewogICAgIHBhcnNlcl8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5z
aW9uKGtSdHBFeHRlbnNpb25UcmFuc21pc3Npb25UaW1lT2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtUT2Zmc2V0RXh0ZW5zaW9uSWQpOwogICAgIHBhcnNl
cl8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKGtSdHBFeHRlbnNpb25BYnNvbHV0ZVNlbmRU
aW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9ydW5fbG9vcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvcnVuX2xvb3AuY2MKaW5kZXggZGMyZWMxOGVlYTc5ZjRkNDZjZTdlYzM5Y2I0
ZmI4MGNlYzI0MDA4ZS4uMDUyNjYyYTQ2NGU5NDIyOWQ0NjIxZGI3NGNlNjA1NTViM2JmOTJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9ydW5fbG9vcC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L3J1bl9sb29wLmNjCkBAIC0xNCw3ICsxNCw3IEBACiBuYW1lc3BhY2Ugd2VicnRj
IHsKIG5hbWVzcGFjZSB0ZXN0IHsKIAotdm9pZCBQcmVzc0VudGVyVG9Db250aW51ZSgpIHsKK3Zv
aWQgUHJlc3NFbnRlclRvQ29udGludWUoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5n
JikgewogICBwdXRzKCI+PiBQcmVzcyBFTlRFUiB0byBjb250aW51ZS4uLiIpOwogICB3aGlsZSAo
Z2V0YyhzdGRpbikgIT0gJ1xuJyAmJiAhZmVvZihzdGRpbikpCiAgICAgOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydW5fbG9vcC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydW5fbG9v
cC5oCmluZGV4IDkwMDYzZGMzZTg3M2Q3ZmYyNDk4MTJmYzUwYmUwNzlmOGNmZmE3MzEuLjM2YmZh
MDY2OTcwOGFiZThhYmJiZTAzMWU3NmNhMTcwYjkyZjhiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnVuX2xvb3AuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J1bl9sb29wLmgK
QEAgLTEwLDExICsxMCwxMyBAQAogI2lmbmRlZiBURVNUX1JVTl9MT09QX0hfCiAjZGVmaW5lIFRF
U1RfUlVOX0xPT1BfSF8KIAorI2luY2x1ZGUgInRlc3Qvc2luZ2xlX3RocmVhZGVkX3Rhc2tfcXVl
dWUuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiAKIC8vIEJsb2Nr
cyB1bnRpbCB0aGUgdXNlciBwcmVzc2VzIGVudGVyLgotdm9pZCBQcmVzc0VudGVyVG9Db250aW51
ZSgpOwordm9pZCBQcmVzc0VudGVyVG9Db250aW51ZShTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZv
clRlc3RpbmcgJnRhc2tfcXVldWUpOwogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vQlVJTEQuZ24KaW5kZXggMzcwM2Fh
ODRlNzJlNmM1Y2I1NjM5NjA3YTNjNjMzYzMwOGRmODYxMy4uZTliZGE1MTEyY2I4YWM5YmQ2MmY4
MGI2ODI0MmI5N2RjMjAxOTgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL0JVSUxELmduCkBA
IC0zNywxNCArMzcsMTUgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vOnRl
c3RfY29tbW9uIiwKICAgICAgICIuLi86dGVzdF9zdXBwb3J0IiwKICAgICAgICIuLi86dmlkZW9f
dGVzdF9jb21tb24iLAotICAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICAgIi4uLy4u
L2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi8uLi9hcGk6dHJh
bnNwb3J0X2FwaSIsCiAgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlv
X2RlY29kZXJfZmFjdG9yeSIsCiAgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGlu
X2F1ZGlvX2VuY29kZXJfZmFjdG9yeSIsCisgICAgICAiLi4vLi4vYXBpL3Rlc3QvdmlkZW86ZnVu
Y3Rpb25fdmlkZW9fZmFjdG9yeSIsCiAgICAgICAiLi4vLi4vYXBpL3VuaXRzOmRhdGFfcmF0ZSIs
CiAgICAgICAiLi4vLi4vYXBpL3VuaXRzOnRpbWVfZGVsdGEiLAogICAgICAgIi4uLy4uL2FwaS91
bml0czp0aW1lc3RhbXAiLAorICAgICAgIi4uLy4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2Jp
dHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19m
cmFtZSIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAogICAgICAg
Ii4uLy4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCkBAIC04Miw2ICs4Myw3
IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGls
cyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAorICAgICAgIi4uLy4u
L3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpzZXF1ZW5jZWRf
dGFza19jaGVja2VyIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIsCiAgICAg
ICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKQEAgLTk0LDYgKzk2LDkgQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgfSBlbHNlIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICBk
ZXBzICs9IFsgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOm9iamNfY29kZWNfZmFjdG9yeV9o
ZWxwZXIiIF0KICAgICB9CisgICAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKKyAgICAgIGRl
cHMgKz0gWyAiLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6YW5hX2NvbmZpZ19wcm90byIgXQor
ICAgIH0KICAgICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYgaXNfY2xhbmcpIHsKICAgICAg
IHN1cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9j
b25zdHJ1Y3RzIiBdCiAgICAgfQpAQCAtMTExLDExICsxMTYsMTAgQEAgaWYgKHJ0Y19pbmNsdWRl
X3Rlc3RzKSB7CiAgICAgICAiLi4vLi4vbG9nZ2luZzptb2NrcyIsCiAgICAgICAiLi4vLi4vcnRj
X2Jhc2U6Y2hlY2tzIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIs
Ci0gICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgIi4u
Ly4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxk
X3RyaWFsIiwKICAgICAgICIuLi8uLi90ZXN0OmZpZWxkX3RyaWFsIiwKICAgICAgICIuLi8uLi90
ZXN0OnRlc3Rfc3VwcG9ydCIsCi0gICAgICAiLy9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwi
LAogICAgICAgIi8vdGVzdGluZy9nbW9jayIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbWVtb3J5IiwKICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2F1ZGlvX3N0cmVhbS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vYXVk
aW9fc3RyZWFtLmNjCmluZGV4IGJkMzE3ZDk3ZDhiN2M0ODgxOWEwZGZlNjVhMWNiODY4Nzg4YzZl
MWUuLjgzNTliZDA5ZWM1OGVjZTE5ZWY5YmNmZDI2YjBkZjViY2EwODc0MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8v
YXVkaW9fc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3Qvc2NlbmFyaW8vYXVkaW9fc3RyZWFtLmNjCkBAIC05LDEwICs5LDU4IEBACiAg
Ki8KICNpbmNsdWRlICJ0ZXN0L3NjZW5hcmlvL2F1ZGlvX3N0cmVhbS5oIgogCisjaW5jbHVkZSAi
cnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oIgogI2luY2x1ZGUgInRlc3QvY2Fs
bF90ZXN0LmgiCiAKKyNpZiBXRUJSVENfRU5BQkxFX1BST1RPQlVGCitSVENfUFVTSF9JR05PUklO
R19XVU5ERUYoKQorI2lmZGVmIFdFQlJUQ19BTkRST0lEX1BMQVRGT1JNX0JVSUxECisjaW5jbHVk
ZSAiZXh0ZXJuYWwvd2VicnRjL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3
b3JrX2FkYXB0b3IvY29uZmlnLnBiLmgiCisjZWxzZQorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9jb25maWcucGIuaCIKKyNlbmRpZgorUlRDX1BP
UF9JR05PUklOR19XVU5ERUYoKQorI2VuZGlmCisKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNw
YWNlIHRlc3QgeworbmFtZXNwYWNlIHsKK2Fic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBDcmVh
dGVBZGFwdGF0aW9uU3RyaW5nKAorICAgIEF1ZGlvU3RyZWFtQ29uZmlnOjpOZXR3b3JrQWRhcHRh
dGlvbiBjb25maWcpIHsKKyNpZiBXRUJSVENfRU5BQkxFX1BST1RPQlVGCisKKyAgYXVkaW9fbmV0
d29ya19hZGFwdG9yOjpjb25maWc6OkNvbnRyb2xsZXJNYW5hZ2VyIGNvbnRfY29uZjsKKyAgaWYg
KGNvbmZpZy5mcmFtZS5tYXhfcmF0ZV9mb3JfNjBfbXMuSXNGaW5pdGUoKSkgeworICAgIGF1dG8g
Y29udHJvbGxlciA9CisgICAgICAgIGNvbnRfY29uZi5hZGRfY29udHJvbGxlcnMoKS0+bXV0YWJs
ZV9mcmFtZV9sZW5ndGhfY29udHJvbGxlcigpOworICAgIGNvbnRyb2xsZXItPnNldF9mbF9kZWNy
ZWFzaW5nX3BhY2tldF9sb3NzX2ZyYWN0aW9uKAorICAgICAgICBjb25maWcuZnJhbWUubWluX3Bh
Y2tldF9sb3NzX2Zvcl9kZWNyZWFzZSk7CisgICAgY29udHJvbGxlci0+c2V0X2ZsX2luY3JlYXNp
bmdfcGFja2V0X2xvc3NfZnJhY3Rpb24oCisgICAgICAgIGNvbmZpZy5mcmFtZS5tYXhfcGFja2V0
X2xvc3NfZm9yX2luY3JlYXNlKTsKKworICAgIGNvbnRyb2xsZXItPnNldF9mbF8yMG1zX3RvXzYw
bXNfYmFuZHdpZHRoX2JwcygKKyAgICAgICAgY29uZmlnLmZyYW1lLm1pbl9yYXRlX2Zvcl8yMF9t
cy5icHM8aW50MzJfdD4oKSk7CisgICAgY29udHJvbGxlci0+c2V0X2ZsXzYwbXNfdG9fMjBtc19i
YW5kd2lkdGhfYnBzKAorICAgICAgICBjb25maWcuZnJhbWUubWF4X3JhdGVfZm9yXzYwX21zLmJw
czxpbnQzMl90PigpKTsKKworICAgIGlmIChjb25maWcuZnJhbWUubWF4X3JhdGVfZm9yXzEyMF9t
cy5Jc0Zpbml0ZSgpKSB7CisgICAgICBjb250cm9sbGVyLT5zZXRfZmxfNjBtc190b18xMjBtc19i
YW5kd2lkdGhfYnBzKAorICAgICAgICAgIGNvbmZpZy5mcmFtZS5taW5fcmF0ZV9mb3JfNjBfbXMu
YnBzPGludDMyX3Q+KCkpOworICAgICAgY29udHJvbGxlci0+c2V0X2ZsXzEyMG1zX3RvXzYwbXNf
YmFuZHdpZHRoX2JwcygKKyAgICAgICAgICBjb25maWcuZnJhbWUubWF4X3JhdGVfZm9yXzEyMF9t
cy5icHM8aW50MzJfdD4oKSk7CisgICAgfQorICB9CisgIGNvbnRfY29uZi5hZGRfY29udHJvbGxl
cnMoKS0+bXV0YWJsZV9iaXRyYXRlX2NvbnRyb2xsZXIoKTsKKyAgc3RkOjpzdHJpbmcgY29uZmln
X3N0cmluZyA9IGNvbnRfY29uZi5TZXJpYWxpemVBc1N0cmluZygpOworICByZXR1cm4gY29uZmln
X3N0cmluZzsKKyNlbHNlCisgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJhdWRpb19uZXR3b3JrX2Fk
YXB0YXRpb24gaXMgZW5hYmxlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIiBidXQgV0VCUlRD
X0VOQUJMRV9QUk9UT0JVRiBpcyBmYWxzZS5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIkln
bm9yaW5nIHNldHRpbmdzLiI7CisgIHJldHVybiBhYnNsOjpudWxsb3B0OworI2VuZGlmICAvLyBX
RUJSVENfRU5BQkxFX1BST1RPQlVGCit9Cit9ICAvLyBuYW1lc3BhY2UKIAogU2VuZEF1ZGlvU3Ry
ZWFtOjpTZW5kQXVkaW9TdHJlYW0oCiAgICAgQ2FsbENsaWVudCogc2VuZGVyLApAQCAtMjAsNyAr
NjgsOCBAQCBTZW5kQXVkaW9TdHJlYW06OlNlbmRBdWRpb1N0cmVhbSgKICAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gZW5jb2Rlcl9mYWN0b3J5LAogICAgIFRyYW5z
cG9ydCogc2VuZF90cmFuc3BvcnQpCiAgICAgOiBzZW5kZXJfKHNlbmRlciksIGNvbmZpZ18oY29u
ZmlnKSB7Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIHNlbmRfY29uZmlnKHNlbmRfdHJhbnNw
b3J0KTsKKyAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgc2VuZF9jb25maWcoc2VuZF90cmFuc3Bv
cnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNw
b3J0PSovbnVsbHB0cik7CiAgIHNzcmNfID0gc2VuZGVyLT5HZXROZXh0QXVkaW9Tc3JjKCk7CiAg
IHNlbmRfY29uZmlnLnJ0cC5zc3JjID0gc3NyY187CiAgIFNkcEF1ZGlvRm9ybWF0OjpQYXJhbWV0
ZXJzIHNkcF9wYXJhbXM7CkBAIC00Miw2ICs5MSwxMCBAQCBTZW5kQXVkaW9TdHJlYW06OlNlbmRB
dWRpb1N0cmVhbSgKICAgICBzZW5kX2NvbmZpZy5zZW5kX2NvZGVjX3NwZWMtPnRhcmdldF9iaXRy
YXRlX2JwcyA9CiAgICAgICAgIGNvbmZpZy5lbmNvZGVyLmZpeGVkX3JhdGUtPmJwcygpOwogCisg
IGlmIChjb25maWcubmV0d29ya19hZGFwdGF0aW9uKSB7CisgICAgc2VuZF9jb25maWcuYXVkaW9f
bmV0d29ya19hZGFwdG9yX2NvbmZpZyA9CisgICAgICAgIENyZWF0ZUFkYXB0YXRpb25TdHJpbmco
Y29uZmlnLmFkYXB0KTsKKyAgfQogICBpZiAoY29uZmlnLmVuY29kZXIuYWxsb2NhdGVfYml0cmF0
ZSB8fAogICAgICAgY29uZmlnLnN0cmVhbS5pbl9iYW5kd2lkdGhfZXN0aW1hdGlvbikgewogICAg
IERhdGFSYXRlIG1pbl9yYXRlID0gRGF0YVJhdGU6OkluZmluaXR5KCk7CkBAIC01NCwxMSArMTA3
LDIwIEBAIFNlbmRBdWRpb1N0cmVhbTo6U2VuZEF1ZGlvU3RyZWFtKAogICAgICAgbWF4X3JhdGUg
PSAqY29uZmlnLmVuY29kZXIubWF4X3JhdGU7CiAgICAgfQogICAgIGlmIChmaWVsZF90cmlhbDo6
SXNFbmFibGVkKCJXZWJSVEMtU2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikpIHsKLSAgICAgIFRp
bWVEZWx0YSBmcmFtZV9sZW5ndGggPSBjb25maWcuZW5jb2Rlci5pbml0aWFsX2ZyYW1lX2xlbmd0
aDsKKyAgICAgIFRpbWVEZWx0YSBtaW5fZnJhbWVfbGVuZ3RoID0gVGltZURlbHRhOjptcygyMCk7
CisgICAgICAvLyBOb3RlLCBkZXBlbmRzIG9uIFdFQlJUQ19PUFVTX1NVUFBPUlRfMTIwTVNfUFRJ
TUUgYmVpbmcgc2V0LCB3aGljaCBpcworICAgICAgLy8gdGhlIGRlZmF1bHQuCisgICAgICBUaW1l
RGVsdGEgbWF4X2ZyYW1lX2xlbmd0aCA9IFRpbWVEZWx0YTo6bXMoMTIwKTsKICAgICAgIERhdGFT
aXplIHJ0cF9vdmVyaGVhZCA9IERhdGFTaXplOjpieXRlcygxMik7Ci0gICAgICBEYXRhU2l6ZSB0
b3RhbF9vdmVyaGVhZCA9IGNvbmZpZy5zdHJlYW0ucGFja2V0X292ZXJoZWFkICsgcnRwX292ZXJo
ZWFkOwotICAgICAgbWluX3JhdGUgKz0gdG90YWxfb3ZlcmhlYWQgLyBmcmFtZV9sZW5ndGg7Ci0g
ICAgICBtYXhfcmF0ZSArPSB0b3RhbF9vdmVyaGVhZCAvIGZyYW1lX2xlbmd0aDsKKyAgICAgIC8v
IE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgcnRwIGV4dGVuc2lvbiBvdmVyaGVhZCBh
bmQgd2lsbCBub3QKKyAgICAgIC8vIGZvbGxvdyB1cGRhdGVzIGluIHRoZSB0cmFuc3BvcnQgb3Zl
cmhlYWQgb3ZlciB0aW1lLgorICAgICAgRGF0YVNpemUgdG90YWxfb3ZlcmhlYWQgPQorICAgICAg
ICAgIHNlbmRlcl8tPnRyYW5zcG9ydF8ucGFja2V0X292ZXJoZWFkKCkgKyBydHBfb3ZlcmhlYWQ7
CisKKyAgICAgIG1pbl9yYXRlICs9IHRvdGFsX292ZXJoZWFkIC8gbWF4X2ZyYW1lX2xlbmd0aDsK
KyAgICAgIC8vIEluIFdlYlJUQ1ZvaWNlRW5naW5lIHRoZSBtYXggcmF0ZSBpcyBhbHNvIGJhc2Vk
IG9uIHRoZSBtYXggZnJhbWUKKyAgICAgIC8vIGxlbmd0aC4KKyAgICAgIG1heF9yYXRlICs9IHRv
dGFsX292ZXJoZWFkIC8gbWluX2ZyYW1lX2xlbmd0aDsKICAgICB9CiAgICAgc2VuZF9jb25maWcu
bWluX2JpdHJhdGVfYnBzID0gbWluX3JhdGUuYnBzKCk7CiAgICAgc2VuZF9jb25maWcubWF4X2Jp
dHJhdGVfYnBzID0gbWF4X3JhdGUuYnBzKCk7CkBAIC03MCwxMyArMTMyLDE3IEBAIFNlbmRBdWRp
b1N0cmVhbTo6U2VuZEF1ZGlvU3RyZWFtKAogICAgICAgICB7UnRwRXh0ZW5zaW9uOjprVHJhbnNw
b3J0U2VxdWVuY2VOdW1iZXJVcmksIDh9fTsKICAgfQogCi0gIGlmIChjb25maWcuc3RyZWFtLnJh
dGVfYWxsb2NhdGlvbl9wcmlvcml0eSkgeworICBpZiAoY29uZmlnLmVuY29kZXIucHJpb3JpdHlf
cmF0ZSkgewogICAgIHNlbmRfY29uZmlnLnRyYWNrX2lkID0gc2VuZGVyLT5HZXROZXh0UHJpb3Jp
dHlJZCgpOworICAgIHNlbmRlcl8tPmNhbGxfLT5TZXRCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5
KAorICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxydGM6OkF1ZGlvUHJpb3JpdHlCaXRyYXRlQWxs
b2NhdGlvblN0cmF0ZWd5PigKKyAgICAgICAgICAgIHNlbmRfY29uZmlnLnRyYWNrX2lkLAorICAg
ICAgICAgICAgY29uZmlnLmVuY29kZXIucHJpb3JpdHlfcmF0ZS0+YnBzPHVpbnQzMl90PigpKSk7
CiAgIH0KICAgc2VuZF9zdHJlYW1fID0gc2VuZGVyXy0+Y2FsbF8tPkNyZWF0ZUF1ZGlvU2VuZFN0
cmVhbShzZW5kX2NvbmZpZyk7CiAgIGlmIChmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMt
U2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikpIHsKICAgICBzZW5kZXItPmNhbGxfLT5PbkF1ZGlv
VHJhbnNwb3J0T3ZlcmhlYWRDaGFuZ2VkKAotICAgICAgICBjb25maWcuc3RyZWFtLnBhY2tldF9v
dmVyaGVhZC5ieXRlcygpKTsKKyAgICAgICAgc2VuZGVyXy0+dHJhbnNwb3J0Xy5wYWNrZXRfb3Zl
cmhlYWQoKS5ieXRlcygpKTsKICAgfQogfQogCkBAIC04NiwxNyArMTUyLDE5IEBAIFNlbmRBdWRp
b1N0cmVhbTo6flNlbmRBdWRpb1N0cmVhbSgpIHsKIAogdm9pZCBTZW5kQXVkaW9TdHJlYW06OlN0
YXJ0KCkgewogICBzZW5kX3N0cmVhbV8tPlN0YXJ0KCk7CisgIHNlbmRlcl8tPmNhbGxfLT5TaWdu
YWxDaGFubmVsTmV0d29ya1N0YXRlKE1lZGlhVHlwZTo6QVVESU8sIGtOZXR3b3JrVXApOwogfQog
Ci1ib29sIFNlbmRBdWRpb1N0cmVhbTo6VHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldyaXRl
QnVmZmVyIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ2NF90IHJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGltZXN0YW1wIGF0X3RpbWUpIHsKLSAgLy8gUmVtb3ZlcyBhZGRlZCBvdmVyaGVhZCBiZWZvcmUg
ZGVsaXZlcmluZyBSVENQIHBhY2tldCB0byBzZW5kZXIuCi0gIFJUQ19EQ0hFQ0tfR0UocGFja2V0
LnNpemUoKSwgY29uZmlnXy5zdHJlYW0ucGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwotICBwYWNr
ZXQuU2V0U2l6ZShwYWNrZXQuc2l6ZSgpIC0gY29uZmlnXy5zdHJlYW0ucGFja2V0X292ZXJoZWFk
LmJ5dGVzKCkpOwotICBzZW5kZXJfLT5EZWxpdmVyUGFja2V0KE1lZGlhVHlwZTo6QVVESU8sIHBh
Y2tldCwgYXRfdGltZSk7Ci0gIHJldHVybiB0cnVlOworQ29sdW1uUHJpbnRlciBTZW5kQXVkaW9T
dHJlYW06OlN0YXRzUHJpbnRlcigpIHsKKyAgcmV0dXJuIENvbHVtblByaW50ZXI6OkxhbWJkYSgK
KyAgICAgICJhdWRpb190YXJnZXRfcmF0ZSIsCisgICAgICBbdGhpc10ocnRjOjpTaW1wbGVTdHJp
bmdCdWlsZGVyJiBzYikgeworICAgICAgICBBdWRpb1NlbmRTdHJlYW06OlN0YXRzIHN0YXRzID0g
c2VuZF9zdHJlYW1fLT5HZXRTdGF0cygpOworICAgICAgICBzYi5BcHBlbmRGb3JtYXQoIiUuMGxm
Iiwgc3RhdHMudGFyZ2V0X2JpdHJhdGVfYnBzIC8gOC4wKTsKKyAgICAgIH0sCisgICAgICA2NCk7
CiB9CisKIFJlY2VpdmVBdWRpb1N0cmVhbTo6UmVjZWl2ZUF1ZGlvU3RyZWFtKAogICAgIENhbGxD
bGllbnQqIHJlY2VpdmVyLAogICAgIEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZywKQEAgLTEwOCwx
MSArMTc2LDEzIEBAIFJlY2VpdmVBdWRpb1N0cmVhbTo6UmVjZWl2ZUF1ZGlvU3RyZWFtKAogICBy
ZWN2X2NvbmZpZy5ydHAubG9jYWxfc3NyYyA9IENhbGxUZXN0OjprUmVjZWl2ZXJMb2NhbEF1ZGlv
U3NyYzsKICAgcmVjdl9jb25maWcucnRjcF9zZW5kX3RyYW5zcG9ydCA9IGZlZWRiYWNrX3RyYW5z
cG9ydDsKICAgcmVjdl9jb25maWcucnRwLnJlbW90ZV9zc3JjID0gc2VuZF9zdHJlYW0tPnNzcmNf
OworICByZWNlaXZlci0+c3NyY19tZWRpYV90eXBlc19bcmVjdl9jb25maWcucnRwLnJlbW90ZV9z
c3JjXSA9IE1lZGlhVHlwZTo6QVVESU87CiAgIGlmIChjb25maWcuc3RyZWFtLmluX2JhbmR3aWR0
aF9lc3RpbWF0aW9uKSB7CiAgICAgcmVjdl9jb25maWcucnRwLnRyYW5zcG9ydF9jYyA9IHRydWU7
CiAgICAgcmVjdl9jb25maWcucnRwLmV4dGVuc2lvbnMgPSB7CiAgICAgICAgIHtSdHBFeHRlbnNp
b246OmtUcmFuc3BvcnRTZXF1ZW5jZU51bWJlclVyaSwgOH19OwogICB9CisgIHJlY2VpdmVyXy0+
QWRkRXh0ZW5zaW9ucyhyZWN2X2NvbmZpZy5ydHAuZXh0ZW5zaW9ucyk7CiAgIHJlY3ZfY29uZmln
LmRlY29kZXJfZmFjdG9yeSA9IGRlY29kZXJfZmFjdG9yeTsKICAgcmVjdl9jb25maWcuZGVjb2Rl
cl9tYXAgPSB7CiAgICAgICB7Q2FsbFRlc3Q6OmtBdWRpb1NlbmRQYXlsb2FkVHlwZSwgeyJvcHVz
IiwgNDgwMDAsIDJ9fX07CkBAIC0xMjMsNDkgKzE5MywyNiBAQCBSZWNlaXZlQXVkaW9TdHJlYW06
On5SZWNlaXZlQXVkaW9TdHJlYW0oKSB7CiAgIHJlY2VpdmVyXy0+Y2FsbF8tPkRlc3Ryb3lBdWRp
b1JlY2VpdmVTdHJlYW0ocmVjZWl2ZV9zdHJlYW1fKTsKIH0KIAotYm9vbCBSZWNlaXZlQXVkaW9T
dHJlYW06OlRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBh
dF90aW1lKSB7Ci0gIFJUQ19EQ0hFQ0tfR0UocGFja2V0LnNpemUoKSwgY29uZmlnXy5zdHJlYW0u
cGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwotICBwYWNrZXQuU2V0U2l6ZShwYWNrZXQuc2l6ZSgp
IC0gY29uZmlnXy5zdHJlYW0ucGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwotICByZWNlaXZlcl8t
PkRlbGl2ZXJQYWNrZXQoTWVkaWFUeXBlOjpBVURJTywgcGFja2V0LCBhdF90aW1lKTsKLSAgcmV0
dXJuIHRydWU7Cit2b2lkIFJlY2VpdmVBdWRpb1N0cmVhbTo6U3RhcnQoKSB7CisgIHJlY2VpdmVf
c3RyZWFtXy0+U3RhcnQoKTsKKyAgcmVjZWl2ZXJfLT5jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdv
cmtTdGF0ZShNZWRpYVR5cGU6OkFVRElPLCBrTmV0d29ya1VwKTsKIH0KIAogQXVkaW9TdHJlYW1Q
YWlyOjp+QXVkaW9TdHJlYW1QYWlyKCkgPSBkZWZhdWx0OwogCiBBdWRpb1N0cmVhbVBhaXI6OkF1
ZGlvU3RyZWFtUGFpcigKICAgICBDYWxsQ2xpZW50KiBzZW5kZXIsCi0gICAgc3RkOjp2ZWN0b3I8
TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAgdWludDY0X3Qgc2VuZF9yZWNlaXZlcl9pZCwK
ICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gZW5jb2Rlcl9mYWN0
b3J5LAogICAgIENhbGxDbGllbnQqIHJlY2VpdmVyLAotICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtO
b2RlKj4gcmV0dXJuX2xpbmssCi0gICAgdWludDY0X3QgcmV0dXJuX3JlY2VpdmVyX2lkLAogICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBkZWNvZGVyX2ZhY3Rvcnks
CiAgICAgQXVkaW9TdHJlYW1Db25maWcgY29uZmlnKQogICAgIDogY29uZmlnXyhjb25maWcpLAot
ICAgICAgc2VuZF9saW5rXyhzZW5kX2xpbmspLAotICAgICAgcmV0dXJuX2xpbmtfKHJldHVybl9s
aW5rKSwKLSAgICAgIHNlbmRfdHJhbnNwb3J0XyhzZW5kZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgc2VuZF9saW5rLmZyb250KCksCi0gICAgICAgICAgICAgICAgICAgICAgc2VuZF9yZWNlaXZl
cl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc3RyZWFtLnBhY2tldF9vdmVyaGVh
ZCksCi0gICAgICByZXR1cm5fdHJhbnNwb3J0XyhyZWNlaXZlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybl9saW5rLmZyb250KCksCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm5fcmVjZWl2ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc3RyZWFtLnBh
Y2tldF9vdmVyaGVhZCksCi0gICAgICBzZW5kX3N0cmVhbV8oc2VuZGVyLCBjb25maWcsIGVuY29k
ZXJfZmFjdG9yeSwgJnNlbmRfdHJhbnNwb3J0XyksCisgICAgICBzZW5kX3N0cmVhbV8oc2VuZGVy
LCBjb25maWcsIGVuY29kZXJfZmFjdG9yeSwgJnNlbmRlci0+dHJhbnNwb3J0XyksCiAgICAgICBy
ZWNlaXZlX3N0cmVhbV8ocmVjZWl2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLAog
ICAgICAgICAgICAgICAgICAgICAgICZzZW5kX3N0cmVhbV8sCiAgICAgICAgICAgICAgICAgICAg
ICAgZGVjb2Rlcl9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICZyZXR1cm5fdHJhbnNw
b3J0XykgewotICBOZXR3b3JrTm9kZTo6Um91dGUoc2VuZF90cmFuc3BvcnRfLlJlY2VpdmVySWQo
KSwgc2VuZF9saW5rXywKLSAgICAgICAgICAgICAgICAgICAgICZyZWNlaXZlX3N0cmVhbV8pOwot
ICBOZXR3b3JrTm9kZTo6Um91dGUocmV0dXJuX3RyYW5zcG9ydF8uUmVjZWl2ZXJJZCgpLCByZXR1
cm5fbGlua18sCi0gICAgICAgICAgICAgICAgICAgICAmc2VuZF9zdHJlYW1fKTsKLX0KKyAgICAg
ICAgICAgICAgICAgICAgICAmcmVjZWl2ZXItPnRyYW5zcG9ydF8pIHt9CiAKIH0gIC8vIG5hbWVz
cGFjZSB0ZXN0CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2F1ZGlvX3N0cmVh
bS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2Vu
YXJpby9hdWRpb19zdHJlYW0uaAppbmRleCAxN2I4YmMzNzBlZmQzZDE5MjE1OThiODYwZmIwZjg3
YjMwMjM4OTI2Li4zYWIwYTFmMmRlZjc0YzllYmQ4N2QzNWM5ZWNiNTc4YTIzZDJmZmMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Nj
ZW5hcmlvL2F1ZGlvX3N0cmVhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vYXVkaW9fc3RyZWFtLmgKQEAgLTI0LDExICsyNCwx
MiBAQCBuYW1lc3BhY2UgdGVzdCB7CiAKIC8vIFNlbmRBdWRpb1N0cmVhbSByZXByZXNlbnRzIHNl
bmRpbmcgb2YgYXVkaW8uIEl0IGNhbiBiZSB1c2VkIGZvciBzdGFydGluZyB0aGUKIC8vIHN0cmVh
bSBpZiBuZWNjZXNzYXJ5LgotY2xhc3MgU2VuZEF1ZGlvU3RyZWFtIDogcHVibGljIE5ldHdvcmtS
ZWNlaXZlckludGVyZmFjZSB7CitjbGFzcyBTZW5kQXVkaW9TdHJlYW0gewogIHB1YmxpYzoKICAg
UlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTZW5kQXVkaW9TdHJlYW0pOwogICB+U2VuZEF1
ZGlvU3RyZWFtKCk7CiAgIHZvaWQgU3RhcnQoKTsKKyAgQ29sdW1uUHJpbnRlciBTdGF0c1ByaW50
ZXIoKTsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyBTY2VuYXJpbzsKQEAgLTM4LDExICsz
OSw2IEBAIGNsYXNzIFNlbmRBdWRpb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRl
cmZhY2UgewogICAgICAgICAgICAgICAgICAgQXVkaW9TdHJlYW1Db25maWcgY29uZmlnLAogICAg
ICAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGVu
Y29kZXJfZmFjdG9yeSwKICAgICAgICAgICAgICAgICAgIFRyYW5zcG9ydCogc2VuZF90cmFuc3Bv
cnQpOwotICAvLyBIYW5kbGVzIFJUQ1AgZmVlZGJhY2sgZm9yIHRoaXMgc3RyZWFtLgotICBib29s
IFRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFRpbWVzdGFtcCBhdF90aW1lKSBvdmVycmlkZTsKLQogICBBdWRpb1NlbmRTdHJlYW0qIHNl
bmRfc3RyZWFtXyA9IG51bGxwdHI7CiAgIENhbGxDbGllbnQqIGNvbnN0IHNlbmRlcl87CiAgIGNv
bnN0IEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZ187CkBAIC01MCwxMCArNDYsMTEgQEAgY2xhc3Mg
U2VuZEF1ZGlvU3RyZWFtIDogcHVibGljIE5ldHdvcmtSZWNlaXZlckludGVyZmFjZSB7CiB9Owog
CiAvLyBSZWNlaXZlQXVkaW9TdHJlYW0gcmVwcmVzZW50cyBhbiBhdWRpbyByZWNlaXZlci4gSXQg
Y2FuJ3QgYmUgdXNlZCBkaXJlY3RseS4KLWNsYXNzIFJlY2VpdmVBdWRpb1N0cmVhbSA6IHB1Ymxp
YyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgeworY2xhc3MgUmVjZWl2ZUF1ZGlvU3RyZWFtIHsK
ICBwdWJsaWM6CiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVjZWl2ZUF1ZGlvU3Ry
ZWFtKTsKICAgflJlY2VpdmVBdWRpb1N0cmVhbSgpOworICB2b2lkIFN0YXJ0KCk7CiAKICBwcml2
YXRlOgogICBmcmllbmQgY2xhc3MgU2NlbmFyaW87CkBAIC02Myw5ICs2MCw2IEBAIGNsYXNzIFJl
Y2VpdmVBdWRpb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgewogICAg
ICAgICAgICAgICAgICAgICAgU2VuZEF1ZGlvU3RyZWFtKiBzZW5kX3N0cmVhbSwKICAgICAgICAg
ICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBkZWNv
ZGVyX2ZhY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICBUcmFuc3BvcnQqIGZlZWRiYWNrX3Ry
YW5zcG9ydCk7Ci0gIGJvb2wgVHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVy
IHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlY2VpdmVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIG92ZXJyaWRlOwogICBBdWRp
b1JlY2VpdmVTdHJlYW0qIHJlY2VpdmVfc3RyZWFtXyA9IG51bGxwdHI7CiAgIENhbGxDbGllbnQq
IGNvbnN0IHJlY2VpdmVyXzsKICAgY29uc3QgQXVkaW9TdHJlYW1Db25maWcgY29uZmlnXzsKQEAg
LTg0LDIzICs3OCwxMyBAQCBjbGFzcyBBdWRpb1N0cmVhbVBhaXIgewogIHByaXZhdGU6CiAgIGZy
aWVuZCBjbGFzcyBTY2VuYXJpbzsKICAgQXVkaW9TdHJlYW1QYWlyKENhbGxDbGllbnQqIHNlbmRl
ciwKLSAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gc2VuZF9saW5r
LAotICAgICAgICAgICAgICAgICAgdWludDY0X3Qgc2VuZF9yZWNlaXZlcl9pZCwKICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBlbmNvZGVy
X2ZhY3RvcnksCi0KICAgICAgICAgICAgICAgICAgIENhbGxDbGllbnQqIHJlY2VpdmVyLAotICAg
ICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKLSAg
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJldHVybl9yZWNlaXZlcl9pZCwKICAgICAgICAgICAg
ICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBkZWNvZGVyX2Zh
Y3RvcnksCiAgICAgICAgICAgICAgICAgICBBdWRpb1N0cmVhbUNvbmZpZyBjb25maWcpOwogCiAg
cHJpdmF0ZToKICAgY29uc3QgQXVkaW9TdHJlYW1Db25maWcgY29uZmlnXzsKLSAgc3RkOjp2ZWN0
b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmtfOwotICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+
IHJldHVybl9saW5rXzsKLSAgTmV0d29ya05vZGVUcmFuc3BvcnQgc2VuZF90cmFuc3BvcnRfOwot
ICBOZXR3b3JrTm9kZVRyYW5zcG9ydCByZXR1cm5fdHJhbnNwb3J0XzsKLQogICBTZW5kQXVkaW9T
dHJlYW0gc2VuZF9zdHJlYW1fOwogICBSZWNlaXZlQXVkaW9TdHJlYW0gcmVjZWl2ZV9zdHJlYW1f
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3Qvc2NlbmFyaW8vY2FsbF9jbGllbnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2NhbGxfY2xpZW50LmNjCmluZGV4IDQ3
Y2MzYmM1N2I4MmQyNTM2ZTIyZmNkZTllNjJjMzdiYTQzZDI2MGUuLjg2ZWI0ZGMxZGI2YTQwYTVm
ODUxNjlhMzZmZTJlNDY0MTFjZTUzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vY2FsbF9jbGllbnQuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9j
YWxsX2NsaWVudC5jYwpAQCAtMjEsNiArMjEsMzkgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1l
c3BhY2UgdGVzdCB7CiBuYW1lc3BhY2UgewogY29uc3QgY2hhcioga1ByaW9yaXR5U3RyZWFtSWQg
PSAicHJpb3JpdHktdHJhY2siOworCitDYWxsQ2xpZW50RmFrZUF1ZGlvIEluaXRBdWRpbygpIHsK
KyAgQ2FsbENsaWVudEZha2VBdWRpbyBzZXR1cDsKKyAgYXV0byBjYXB0dXJlciA9IFRlc3RBdWRp
b0RldmljZU1vZHVsZTo6Q3JlYXRlUHVsc2VkTm9pc2VDYXB0dXJlcigyNTYsIDQ4MDAwKTsKKyAg
YXV0byByZW5kZXJlciA9IFRlc3RBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRlRGlzY2FyZFJlbmRl
cmVyKDQ4MDAwKTsKKyAgc2V0dXAuZmFrZV9hdWRpb19kZXZpY2UgPSBUZXN0QXVkaW9EZXZpY2VN
b2R1bGU6OkNyZWF0ZVRlc3RBdWRpb0RldmljZU1vZHVsZSgKKyAgICAgIHN0ZDo6bW92ZShjYXB0
dXJlciksIHN0ZDo6bW92ZShyZW5kZXJlciksIDEuZik7CisgIHNldHVwLmFwbSA9IEF1ZGlvUHJv
Y2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKTsKKyAgc2V0dXAuZmFrZV9hdWRpb19kZXZpY2UtPklu
aXQoKTsKKyAgQXVkaW9TdGF0ZTo6Q29uZmlnIGF1ZGlvX3N0YXRlX2NvbmZpZzsKKyAgYXVkaW9f
c3RhdGVfY29uZmlnLmF1ZGlvX21peGVyID0gQXVkaW9NaXhlckltcGw6OkNyZWF0ZSgpOworICBh
dWRpb19zdGF0ZV9jb25maWcuYXVkaW9fcHJvY2Vzc2luZyA9IHNldHVwLmFwbTsKKyAgYXVkaW9f
c3RhdGVfY29uZmlnLmF1ZGlvX2RldmljZV9tb2R1bGUgPSBzZXR1cC5mYWtlX2F1ZGlvX2Rldmlj
ZTsKKyAgc2V0dXAuYXVkaW9fc3RhdGUgPSBBdWRpb1N0YXRlOjpDcmVhdGUoYXVkaW9fc3RhdGVf
Y29uZmlnKTsKKyAgc2V0dXAuZmFrZV9hdWRpb19kZXZpY2UtPlJlZ2lzdGVyQXVkaW9DYWxsYmFj
aygKKyAgICAgIHNldHVwLmF1ZGlvX3N0YXRlLT5hdWRpb190cmFuc3BvcnQoKSk7CisgIHJldHVy
biBzZXR1cDsKK30KKworQ2FsbCogQ3JlYXRlQ2FsbChDYWxsQ2xpZW50Q29uZmlnIGNvbmZpZywK
KyAgICAgICAgICAgICAgICAgTG9nZ2luZ05ldHdvcmtDb250cm9sbGVyRmFjdG9yeSogbmV0d29y
a19jb250cm9sbGVyX2ZhY3RvcnlfLAorICAgICAgICAgICAgICAgICBydGM6OnNjb3BlZF9yZWZw
dHI8QXVkaW9TdGF0ZT4gYXVkaW9fc3RhdGUpIHsKKyAgQ2FsbENvbmZpZyBjYWxsX2NvbmZpZyhu
ZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV8tPkdldEV2ZW50TG9nKCkpOworICBjYWxsX2NvbmZp
Zy5iaXRyYXRlX2NvbmZpZy5tYXhfYml0cmF0ZV9icHMgPQorICAgICAgY29uZmlnLnRyYW5zcG9y
dC5yYXRlcy5tYXhfcmF0ZS5icHNfb3IoLTEpOworICBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZp
Zy5taW5fYml0cmF0ZV9icHMgPQorICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5taW5fcmF0
ZS5icHMoKTsKKyAgY2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMg
PQorICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlLmJwcygpOworICBjYWxs
X2NvbmZpZy5uZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeSA9IG5ldHdvcmtfY29udHJvbGxlcl9m
YWN0b3J5XzsKKyAgY2FsbF9jb25maWcuYXVkaW9fc3RhdGUgPSBhdWRpb19zdGF0ZTsKKyAgcmV0
dXJuIENhbGw6OkNyZWF0ZShjYWxsX2NvbmZpZyk7Cit9CiB9CiAKIExvZ2dpbmdOZXR3b3JrQ29u
dHJvbGxlckZhY3Rvcnk6OkxvZ2dpbmdOZXR3b3JrQ29udHJvbGxlckZhY3RvcnkoCkBAIC0xMDcs
MzEgKzE0MCwxNyBAQCBDYWxsQ2xpZW50OjpDYWxsQ2xpZW50KENsb2NrKiBjbG9jaywKICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbG9nX2ZpbGVuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICBDYWxsQ2xpZW50Q29uZmlnIGNvbmZpZykKICAgICA6IGNsb2NrXyhjbG9jayks
Ci0gICAgICBuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV8obG9nX2ZpbGVuYW1lLCBjb25maWcu
dHJhbnNwb3J0KSB7Ci0gIENhbGxDb25maWcgY2FsbF9jb25maWcobmV0d29ya19jb250cm9sbGVy
X2ZhY3RvcnlfLkdldEV2ZW50TG9nKCkpOwotICBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5t
YXhfYml0cmF0ZV9icHMgPQotICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5tYXhfcmF0ZS5i
cHNfb3IoLTEpOwotICBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5taW5fYml0cmF0ZV9icHMg
PQotICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5taW5fcmF0ZS5icHMoKTsKLSAgY2FsbF9j
b25maWcuYml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMgPQotICAgICAgY29uZmlnLnRy
YW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlLmJwcygpOwotICBjYWxsX2NvbmZpZy5uZXR3b3JrX2Nv
bnRyb2xsZXJfZmFjdG9yeSA9ICZuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV87Ci0gIGNhbGxf
Y29uZmlnLmF1ZGlvX3N0YXRlID0gSW5pdEF1ZGlvKCk7Ci0gIGNhbGxfLnJlc2V0KENhbGw6OkNy
ZWF0ZShjYWxsX2NvbmZpZykpOwotICBpZiAoIWNvbmZpZy5wcmlvcml0eV90YXJnZXRfcmF0ZS5J
c1plcm8oKSAmJgotICAgICAgY29uZmlnLnByaW9yaXR5X3RhcmdldF9yYXRlLklzRmluaXRlKCkp
IHsKLSAgICBjYWxsXy0+U2V0Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneSgKLSAgICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8cnRjOjpBdWRpb1ByaW9yaXR5Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVn
eT4oCi0gICAgICAgICAgICBrUHJpb3JpdHlTdHJlYW1JZCwgY29uZmlnLnByaW9yaXR5X3Rhcmdl
dF9yYXRlLmJwcygpKSk7Ci0gIH0KKyAgICAgIG5ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5Xyhs
b2dfZmlsZW5hbWUsIGNvbmZpZy50cmFuc3BvcnQpLAorICAgICAgZmFrZV9hdWRpb19zZXR1cF8o
SW5pdEF1ZGlvKCkpLAorICAgICAgY2FsbF8oQ3JlYXRlQ2FsbChjb25maWcsCisgICAgICAgICAg
ICAgICAgICAgICAgICZuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV8sCisgICAgICAgICAgICAg
ICAgICAgICAgIGZha2VfYXVkaW9fc2V0dXBfLmF1ZGlvX3N0YXRlKSksCisgICAgICB0cmFuc3Bv
cnRfKGNsb2NrXywgY2FsbF8uZ2V0KCkpLAorICAgICAgaGVhZGVyX3BhcnNlcl8oUnRwSGVhZGVy
UGFyc2VyOjpDcmVhdGUoKSkgewogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIAotQ2FsbENsaWVudDo6
fkNhbGxDbGllbnQoKSB7fQotCi12b2lkIENhbGxDbGllbnQ6OkRlbGl2ZXJQYWNrZXQoTWVkaWFU
eXBlIG1lZGlhX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpDb3B5
T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlt
ZXN0YW1wIGF0X3RpbWUpIHsKLSAgY2FsbF8tPlJlY2VpdmVyKCktPkRlbGl2ZXJQYWNrZXQobWVk
aWFfdHlwZSwgcGFja2V0LCBhdF90aW1lLnVzKCkpOworQ2FsbENsaWVudDo6fkNhbGxDbGllbnQo
KSB7CisgIGRlbGV0ZSBoZWFkZXJfcGFyc2VyXzsKIH0KIAogQ29sdW1uUHJpbnRlciBDYWxsQ2xp
ZW50OjpTdGF0c1ByaW50ZXIoKSB7CkBAIC0xNDksNiArMTY4LDI2IEBAIENhbGw6OlN0YXRzIENh
bGxDbGllbnQ6OkdldFN0YXRzKCkgewogICByZXR1cm4gY2FsbF8tPkdldFN0YXRzKCk7CiB9CiAK
K2Jvb2wgQ2FsbENsaWVudDo6VHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVy
IHBhY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNl
aXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGlt
ZSkgeworICAvLyBSZW1vdmVzIGFkZGVkIG92ZXJoZWFkIGJlZm9yZSBkZWxpdmVyaW5nIHBhY2tl
dCB0byBzZW5kZXIuCisgIFJUQ19EQ0hFQ0tfR0UocGFja2V0LnNpemUoKSwgcm91dGVfb3Zlcmhl
YWRfLmF0KHJlY2VpdmVyKS5ieXRlcygpKTsKKyAgcGFja2V0LlNldFNpemUocGFja2V0LnNpemUo
KSAtIHJvdXRlX292ZXJoZWFkXy5hdChyZWNlaXZlcikuYnl0ZXMoKSk7CisKKyAgTWVkaWFUeXBl
IG1lZGlhX3R5cGUgPSBNZWRpYVR5cGU6OkFOWTsKKyAgaWYgKCFSdHBIZWFkZXJQYXJzZXI6Oklz
UnRjcChwYWNrZXQuY2RhdGEoKSwgcGFja2V0LnNpemUoKSkpIHsKKyAgICBSVFBIZWFkZXIgaGVh
ZGVyOworICAgIGJvb2wgc3VjY2VzcyA9CisgICAgICAgIGhlYWRlcl9wYXJzZXJfLT5QYXJzZShw
YWNrZXQuY2RhdGEoKSwgcGFja2V0LnNpemUoKSwgJmhlYWRlcik7CisgICAgaWYgKCFzdWNjZXNz
KQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1lZGlhX3R5cGUgPSBzc3JjX21lZGlhX3R5cGVz
X1toZWFkZXIuc3NyY107CisgIH0KKyAgY2FsbF8tPlJlY2VpdmVyKCktPkRlbGl2ZXJQYWNrZXQo
bWVkaWFfdHlwZSwgcGFja2V0LCBhdF90aW1lLnVzKCkpOworICByZXR1cm4gdHJ1ZTsKK30KKwog
dWludDMyX3QgQ2FsbENsaWVudDo6R2V0TmV4dFZpZGVvU3NyYygpIHsKICAgUlRDX0NIRUNLX0xU
KG5leHRfdmlkZW9fc3NyY19pbmRleF8sIENhbGxUZXN0OjprTnVtU3NyY3MpOwogICByZXR1cm4g
Q2FsbFRlc3Q6OmtWaWRlb1NlbmRTc3Jjc1tuZXh0X3ZpZGVvX3NzcmNfaW5kZXhfKytdOwpAQCAt
MTcwLDIxICsyMDksMTIgQEAgc3RkOjpzdHJpbmcgQ2FsbENsaWVudDo6R2V0TmV4dFByaW9yaXR5
SWQoKSB7CiAgIHJldHVybiBrUHJpb3JpdHlTdHJlYW1JZDsKIH0KIAotcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvU3RhdGU+IENhbGxDbGllbnQ6OkluaXRBdWRpbygpIHsKLSAgYXV0byBjYXB0dXJl
ciA9IFRlc3RBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRlUHVsc2VkTm9pc2VDYXB0dXJlcigyNTYs
IDQ4MDAwKTsKLSAgYXV0byByZW5kZXJlciA9IFRlc3RBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRl
RGlzY2FyZFJlbmRlcmVyKDQ4MDAwKTsKLSAgZmFrZV9hdWRpb19kZXZpY2VfID0gVGVzdEF1ZGlv
RGV2aWNlTW9kdWxlOjpDcmVhdGVUZXN0QXVkaW9EZXZpY2VNb2R1bGUoCi0gICAgICBzdGQ6Om1v
dmUoY2FwdHVyZXIpLCBzdGQ6Om1vdmUocmVuZGVyZXIpLCAxLmYpOwotICBhcG1fID0gQXVkaW9Q
cm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpOwotICBmYWtlX2F1ZGlvX2RldmljZV8tPkluaXQo
KTsKLSAgQXVkaW9TdGF0ZTo6Q29uZmlnIGF1ZGlvX3N0YXRlX2NvbmZpZzsKLSAgYXVkaW9fc3Rh
dGVfY29uZmlnLmF1ZGlvX21peGVyID0gQXVkaW9NaXhlckltcGw6OkNyZWF0ZSgpOwotICBhdWRp
b19zdGF0ZV9jb25maWcuYXVkaW9fcHJvY2Vzc2luZyA9IGFwbV87Ci0gIGF1ZGlvX3N0YXRlX2Nv
bmZpZy5hdWRpb19kZXZpY2VfbW9kdWxlID0gZmFrZV9hdWRpb19kZXZpY2VfOwotICBhdXRvIGF1
ZGlvX3N0YXRlID0gQXVkaW9TdGF0ZTo6Q3JlYXRlKGF1ZGlvX3N0YXRlX2NvbmZpZyk7Ci0gIGZh
a2VfYXVkaW9fZGV2aWNlXy0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKGF1ZGlvX3N0YXRlLT5hdWRp
b190cmFuc3BvcnQoKSk7Ci0gIHJldHVybiBhdWRpb19zdGF0ZTsKK3ZvaWQgQ2FsbENsaWVudDo6
QWRkRXh0ZW5zaW9ucyhzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+IGV4dGVuc2lvbnMpIHsKKyAg
Zm9yIChjb25zdCBhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zKQorICAgIGhlYWRlcl9wYXJz
ZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihleHRlbnNpb24pOwogfQogCitDYWxsQ2xp
ZW50UGFpcjo6fkNhbGxDbGllbnRQYWlyKCkgPSBkZWZhdWx0OworCiB9ICAvLyBuYW1lc3BhY2Ug
dGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9jYWxsX2NsaWVudC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9j
YWxsX2NsaWVudC5oCmluZGV4IDgwZTJmYWYxNjI2YWZkMWQwYjdhYzRkNGY3Y2Y4OGIxZDk5ODg3
NzYuLmExMmUwNmEwNjU2NDg5Nzk5NDBiYjg0MWQyNGM2NTgwNDFlZGQ2MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8v
Y2FsbF9jbGllbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L3NjZW5hcmlvL2NhbGxfY2xpZW50LmgKQEAgLTE3LDggKzE3LDEwIEBACiAjaW5j
bHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL3Rlc3RfYXVkaW9fZGV2aWNlLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvdGVzdC9jb250cm9sbGVyX3ByaW50ZXIu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9wYXJzZXIu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAidGVz
dC9zY2VuYXJpby9jb2x1bW5fcHJpbnRlci5oIgorI2luY2x1ZGUgInRlc3Qvc2NlbmFyaW8vbmV0
d29ya19ub2RlLmgiCiAjaW5jbHVkZSAidGVzdC9zY2VuYXJpby9zY2VuYXJpb19jb25maWcuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC00NSwxMCArNDcsMTUgQEAgY2xhc3MgTG9nZ2luZ05l
dHdvcmtDb250cm9sbGVyRmFjdG9yeQogICBGSUxFKiBjY19vdXRfID0gbnVsbHB0cjsKIH07CiAK
K3N0cnVjdCBDYWxsQ2xpZW50RmFrZUF1ZGlvIHsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
UHJvY2Vzc2luZz4gYXBtOworICBydGM6OnNjb3BlZF9yZWZwdHI8VGVzdEF1ZGlvRGV2aWNlTW9k
dWxlPiBmYWtlX2F1ZGlvX2RldmljZTsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvU3RhdGU+
IGF1ZGlvX3N0YXRlOworfTsKIC8vIENhbGxDbGllbnQgcmVwcmVzZW50cyBhIHBhcnRpY2lwYW50
IGluIGEgY2FsbCBzY2VuYXJpby4gSXQgaXMgY3JlYXRlZCBieSB0aGUKIC8vIFNjZW5hcmlvIGNs
YXNzIGFuZCBpcyB1c2VkIGFzIHNlbmRlciBhbmQgcmVjZWl2ZXIgd2hlbiBzZXR0aW5nIHVwIGEg
bWVkaWEKIC8vIHN0cmVhbSBzZXNzaW9uLgotY2xhc3MgQ2FsbENsaWVudCB7CitjbGFzcyBDYWxs
Q2xpZW50IDogcHVibGljIE5ldHdvcmtSZWNlaXZlckludGVyZmFjZSB7CiAgcHVibGljOgogICBD
YWxsQ2xpZW50KENsb2NrKiBjbG9jaywgc3RkOjpzdHJpbmcgbG9nX2ZpbGVuYW1lLCBDYWxsQ2xp
ZW50Q29uZmlnIGNvbmZpZyk7CiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oQ2FsbENs
aWVudCk7CkBAIC01NiwzNyArNjMsNjMgQEAgY2xhc3MgQ2FsbENsaWVudCB7CiAgIH5DYWxsQ2xp
ZW50KCk7CiAgIENvbHVtblByaW50ZXIgU3RhdHNQcmludGVyKCk7CiAgIENhbGw6OlN0YXRzIEdl
dFN0YXRzKCk7CisgIERhdGFSYXRlIHNlbmRfYmFuZHdpZHRoKCkgeworICAgIHJldHVybiBEYXRh
UmF0ZTo6YnBzKEdldFN0YXRzKCkuc2VuZF9iYW5kd2lkdGhfYnBzKTsKKyAgfQorCisgIGJvb2wg
VHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlY2VpdmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgVGltZXN0YW1wIGF0X3RpbWUpIG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNs
YXNzIFNjZW5hcmlvOworICBmcmllbmQgY2xhc3MgQ2FsbENsaWVudFBhaXI7CiAgIGZyaWVuZCBj
bGFzcyBTZW5kVmlkZW9TdHJlYW07CisgIGZyaWVuZCBjbGFzcyBWaWRlb1N0cmVhbVBhaXI7CiAg
IGZyaWVuZCBjbGFzcyBSZWNlaXZlVmlkZW9TdHJlYW07CiAgIGZyaWVuZCBjbGFzcyBTZW5kQXVk
aW9TdHJlYW07CiAgIGZyaWVuZCBjbGFzcyBSZWNlaXZlQXVkaW9TdHJlYW07CisgIGZyaWVuZCBj
bGFzcyBBdWRpb1N0cmVhbVBhaXI7CiAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrTm9kZVRyYW5zcG9y
dDsKLSAgLy8gVE9ETyhzcnRlKTogQ29uc2lkZXIgdXNpbmcgdGhlIENvbHVtbnByaW50ZXIgaW50
ZXJmYWNlIGZvciB0aGlzLgotICB2b2lkIERlbGl2ZXJQYWNrZXQoTWVkaWFUeXBlIG1lZGlhX3R5
cGUsCi0gICAgICAgICAgICAgICAgICAgICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwK
LSAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsKICAgdWludDMyX3QgR2V0
TmV4dFZpZGVvU3NyYygpOwogICB1aW50MzJfdCBHZXROZXh0QXVkaW9Tc3JjKCk7CiAgIHVpbnQz
Ml90IEdldE5leHRSdHhTc3JjKCk7CiAgIHN0ZDo6c3RyaW5nIEdldE5leHRQcmlvcml0eUlkKCk7
CisgIHZvaWQgQWRkRXh0ZW5zaW9ucyhzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+IGV4dGVuc2lv
bnMpOwogCiAgIENsb2NrKiBjbG9ja187CiAgIExvZ2dpbmdOZXR3b3JrQ29udHJvbGxlckZhY3Rv
cnkgbmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnlfOworICBDYWxsQ2xpZW50RmFrZUF1ZGlvIGZh
a2VfYXVkaW9fc2V0dXBfOwogICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbD4gY2FsbF87Ci0KLSAgcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvU3RhdGU+IEluaXRBdWRpbygpOwotCi0gIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGFwbV87Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxUZXN0
QXVkaW9EZXZpY2VNb2R1bGU+IGZha2VfYXVkaW9fZGV2aWNlXzsKKyAgTmV0d29ya05vZGVUcmFu
c3BvcnQgdHJhbnNwb3J0XzsKKyAgUnRwSGVhZGVyUGFyc2VyKiBjb25zdCBoZWFkZXJfcGFyc2Vy
XzsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+IGZl
Y19jb250cm9sbGVyX2ZhY3RvcnlfOworICAvLyBTdG9yZXMgdGhlIGNvbmZpZ3VyZWQgb3Zlcmhl
YWQgcGVyIGtub3duIGluY29tbWluZyByb3V0ZS4gVGhpcyBpcyB1c2VkIHRvCisgIC8vIHN1YnRy
YWN0IHRoZSBvdmVyaGVhZCBiZWZvcmUgcHJvY2Vzc2luZy4KKyAgc3RkOjptYXA8dWludDY0X3Qs
IERhdGFTaXplPiByb3V0ZV9vdmVyaGVhZF87CiAgIGludCBuZXh0X3ZpZGVvX3NzcmNfaW5kZXhf
ID0gMDsKICAgaW50IG5leHRfcnR4X3NzcmNfaW5kZXhfID0gMDsKICAgaW50IG5leHRfYXVkaW9f
c3NyY19pbmRleF8gPSAwOwogICBpbnQgbmV4dF9wcmlvcml0eV9pbmRleF8gPSAwOworICBzdGQ6
Om1hcDx1aW50MzJfdCwgTWVkaWFUeXBlPiBzc3JjX21lZGlhX3R5cGVzXzsKK307CisKK2NsYXNz
IENhbGxDbGllbnRQYWlyIHsKKyBwdWJsaWM6CisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oQ2FsbENsaWVudFBhaXIpOworICB+Q2FsbENsaWVudFBhaXIoKTsKKyAgQ2FsbENsaWVudCog
Zmlyc3QoKSB7IHJldHVybiBmaXJzdF87IH0KKyAgQ2FsbENsaWVudCogc2Vjb25kKCkgeyByZXR1
cm4gc2Vjb25kXzsgfQorICBzdGQ6OnBhaXI8Q2FsbENsaWVudCosIENhbGxDbGllbnQqPiBmb3J3
YXJkKCkgeyByZXR1cm4ge2ZpcnN0KCksIHNlY29uZCgpfTsgfQorICBzdGQ6OnBhaXI8Q2FsbENs
aWVudCosIENhbGxDbGllbnQqPiByZXZlcnNlKCkgeyByZXR1cm4ge3NlY29uZCgpLCBmaXJzdCgp
fTsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGNsYXNzIFNjZW5hcmlvOworICBDYWxsQ2xpZW50
UGFpcihDYWxsQ2xpZW50KiBmaXJzdCwgQ2FsbENsaWVudCogc2Vjb25kKQorICAgICAgOiBmaXJz
dF8oZmlyc3QpLCBzZWNvbmRfKHNlY29uZCkge30KKyAgQ2FsbENsaWVudCogY29uc3QgZmlyc3Rf
OworICBDYWxsQ2xpZW50KiBjb25zdCBzZWNvbmRfOwogfTsKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL25ldHdvcmtfbm9kZS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vbmV0
d29ya19ub2RlLmNjCmluZGV4IGZmMTM4OTM5YWJiMWVmZDUxYzFhZTRhNThiYTE3OTUwMGRkZGJh
Y2EuLmIzOWQ2N2JkMjVjODkwOWEzMjAzNWQzYWVhYThhM2UzZGMzZTFjOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8v
bmV0d29ya19ub2RlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3Qvc2NlbmFyaW8vbmV0d29ya19ub2RlLmNjCkBAIC0xMiw2ICsxMiw4IEBACiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgInJ0Y19i
YXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNw
YWNlIHRlc3QgewogbmFtZXNwYWNlIHsKQEAgLTE2OCwyOSArMTcwLDI5IEBAIFNpbXVsYXRpb25O
b2RlOjpTaW11bGF0aW9uTm9kZSgKICAgICAgIHNpbXVsYXRlZF9uZXR3b3JrXyhzaW11bGF0aW9u
KSwKICAgICAgIGNvbmZpZ18oY29uZmlnKSB7fQogCi1OZXR3b3JrTm9kZVRyYW5zcG9ydDo6TmV0
d29ya05vZGVUcmFuc3BvcnQoQ2FsbENsaWVudCogc2VuZGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdvcmtOb2RlKiBzZW5kX25ldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSBwYWNrZXRf
b3ZlcmhlYWQpCi0gICAgOiBzZW5kZXJfKHNlbmRlciksCi0gICAgICBzZW5kX25ldF8oc2VuZF9u
ZXQpLAotICAgICAgcmVjZWl2ZXJfaWRfKHJlY2VpdmVyKSwKLSAgICAgIHBhY2tldF9vdmVyaGVh
ZF8ocGFja2V0X292ZXJoZWFkKSB7fQorTmV0d29ya05vZGVUcmFuc3BvcnQ6Ok5ldHdvcmtOb2Rl
VHJhbnNwb3J0KGNvbnN0IENsb2NrKiBzZW5kZXJfY2xvY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbCogc2VuZGVyX2NhbGwpCisgICAgOiBzZW5kZXJf
Y2xvY2tfKHNlbmRlcl9jbG9jayksIHNlbmRlcl9jYWxsXyhzZW5kZXJfY2FsbCkge30KIAogTmV0
d29ya05vZGVUcmFuc3BvcnQ6On5OZXR3b3JrTm9kZVRyYW5zcG9ydCgpID0gZGVmYXVsdDsKIAog
Ym9vbCBOZXR3b3JrTm9kZVRyYW5zcG9ydDo6U2VuZFJ0cChjb25zdCB1aW50OF90KiBwYWNrZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldE9wdGlvbnMmIG9wdGlv
bnMpIHsKLSAgaW50NjRfdCBzZW5kX3RpbWVfbXMgPSBzZW5kZXJfLT5jbG9ja18tPlRpbWVJbk1p
bGxpc2Vjb25kcygpOworICBpbnQ2NF90IHNlbmRfdGltZV9tcyA9IHNlbmRlcl9jbG9ja18tPlRp
bWVJbk1pbGxpc2Vjb25kcygpOwogICBydGM6OlNlbnRQYWNrZXQgc2VudF9wYWNrZXQ7CiAgIHNl
bnRfcGFja2V0LnBhY2tldF9pZCA9IG9wdGlvbnMucGFja2V0X2lkOworICBzZW50X3BhY2tldC5p
bmZvLmluY2x1ZGVkX2luX2ZlZWRiYWNrID0gb3B0aW9ucy5pbmNsdWRlZF9pbl9mZWVkYmFjazsK
KyAgc2VudF9wYWNrZXQuaW5mby5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0gb3B0aW9ucy5pbmNs
dWRlZF9pbl9hbGxvY2F0aW9uOwogICBzZW50X3BhY2tldC5zZW5kX3RpbWVfbXMgPSBzZW5kX3Rp
bWVfbXM7CiAgIHNlbnRfcGFja2V0LmluZm8ucGFja2V0X3NpemVfYnl0ZXMgPSBsZW5ndGg7CiAg
IHNlbnRfcGFja2V0LmluZm8ucGFja2V0X3R5cGUgPSBydGM6OlBhY2tldFR5cGU6OmtEYXRhOwot
ICBzZW5kZXJfLT5jYWxsXy0+T25TZW50UGFja2V0KHNlbnRfcGFja2V0KTsKKyAgc2VuZGVyX2Nh
bGxfLT5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQpOwogCiAgIFRpbWVzdGFtcCBzZW5kX3RpbWUg
PSBUaW1lc3RhbXA6Om1zKHNlbmRfdGltZV9tcyk7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJmNy
aXRfc2VjdF8pOworICBpZiAoIXNlbmRfbmV0XykKKyAgICByZXR1cm4gZmFsc2U7CiAgIHJ0Yzo6
Q29weU9uV3JpdGVCdWZmZXIgYnVmZmVyKHBhY2tldCwgbGVuZ3RoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsZW5ndGggKyBwYWNrZXRfb3ZlcmhlYWRfLmJ5dGVzKCkpOwogICBi
dWZmZXIuU2V0U2l6ZShsZW5ndGggKyBwYWNrZXRfb3ZlcmhlYWRfLmJ5dGVzKCkpOwpAQCAtMTk5
LDEzICsyMDEsMjkgQEAgYm9vbCBOZXR3b3JrTm9kZVRyYW5zcG9ydDo6U2VuZFJ0cChjb25zdCB1
aW50OF90KiBwYWNrZXQsCiAKIGJvb2wgTmV0d29ya05vZGVUcmFuc3BvcnQ6OlNlbmRSdGNwKGNv
bnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IGxlbmd0aCkgewogICBydGM6OkNvcHlPbldyaXRl
QnVmZmVyIGJ1ZmZlcihwYWNrZXQsIGxlbmd0aCk7Ci0gIFRpbWVzdGFtcCBzZW5kX3RpbWUgPSBU
aW1lc3RhbXA6Om1zKHNlbmRlcl8tPmNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpOworICBU
aW1lc3RhbXAgc2VuZF90aW1lID0gVGltZXN0YW1wOjptcyhzZW5kZXJfY2xvY2tfLT5UaW1lSW5N
aWxsaXNlY29uZHMoKSk7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJmNyaXRfc2VjdF8pOwogICBi
dWZmZXIuU2V0U2l6ZShsZW5ndGggKyBwYWNrZXRfb3ZlcmhlYWRfLmJ5dGVzKCkpOworICBpZiAo
IXNlbmRfbmV0XykKKyAgICByZXR1cm4gZmFsc2U7CiAgIHJldHVybiBzZW5kX25ldF8tPlRyeURl
bGl2ZXJQYWNrZXQoYnVmZmVyLCByZWNlaXZlcl9pZF8sIHNlbmRfdGltZSk7CiB9CiAKLXVpbnQ2
NF90IE5ldHdvcmtOb2RlVHJhbnNwb3J0OjpSZWNlaXZlcklkKCkgY29uc3QgewotICByZXR1cm4g
cmVjZWl2ZXJfaWRfOwordm9pZCBOZXR3b3JrTm9kZVRyYW5zcG9ydDo6Q29ubmVjdChOZXR3b3Jr
Tm9kZSogc2VuZF9ub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
NjRfdCByZWNlaXZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0
YVNpemUgcGFja2V0X292ZXJoZWFkKSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJmNyaXRfc2Vj
dF8pOworICBzZW5kX25ldF8gPSBzZW5kX25vZGU7CisgIHJlY2VpdmVyX2lkXyA9IHJlY2VpdmVy
X2lkOworICBwYWNrZXRfb3ZlcmhlYWRfID0gcGFja2V0X292ZXJoZWFkOworCisgIHJ0Yzo6TmV0
d29ya1JvdXRlIHJvdXRlOworICByb3V0ZS5jb25uZWN0ZWQgPSB0cnVlOworICByb3V0ZS5sb2Nh
bF9uZXR3b3JrX2lkID0gcmVjZWl2ZXJfaWQ7CisgIHJvdXRlLnJlbW90ZV9uZXR3b3JrX2lkID0g
cmVjZWl2ZXJfaWQ7CisgIHN0ZDo6c3RyaW5nIHRyYW5zcG9ydF9uYW1lID0gImR1bW15IjsKKyAg
c2VuZGVyX2NhbGxfLT5HZXRUcmFuc3BvcnRDb250cm9sbGVyU2VuZCgpLT5Pbk5ldHdvcmtSb3V0
ZUNoYW5nZWQoCisgICAgICB0cmFuc3BvcnRfbmFtZSwgcm91dGUpOwogfQogCiBDcm9zc1RyYWZm
aWNTb3VyY2U6OkNyb3NzVHJhZmZpY1NvdXJjZShOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UqIHRh
cmdldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3Qvc2NlbmFyaW8vbmV0d29ya19ub2RlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL25ldHdvcmtfbm9kZS5oCmluZGV4IGFm
NmRiMGEwMDk5Y2MzODdmZGI0NzA4Yjk4ZGUxYmE1OTVmNGNlYjIuLjRlOTBmNmYyNTJhMmM3Y2Y1
ZGU3NmI4OGRkMDlhN2U5MDdhODY4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vbmV0d29ya19ub2RlLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9u
ZXR3b3JrX25vZGUuaApAQCAtMTgsMTAgKzE4LDEwIEBACiAKICNpbmNsdWRlICJhcGkvY2FsbC90
cmFuc3BvcnQuaCIKICNpbmNsdWRlICJhcGkvdW5pdHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAi
Y2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29yay5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb3B5
b253cml0ZWJ1ZmZlci5oIgotI2luY2x1ZGUgInRlc3Qvc2NlbmFyaW8vY2FsbF9jbGllbnQuaCIK
ICNpbmNsdWRlICJ0ZXN0L3NjZW5hcmlvL2NvbHVtbl9wcmludGVyLmgiCiAjaW5jbHVkZSAidGVz
dC9zY2VuYXJpby9zY2VuYXJpb19jb25maWcuaCIKIApAQCAtMTE5LDIzICsxMTksMzAgQEAgY2xh
c3MgU2ltdWxhdGlvbk5vZGUgOiBwdWJsaWMgTmV0d29ya05vZGUgewogCiBjbGFzcyBOZXR3b3Jr
Tm9kZVRyYW5zcG9ydCA6IHB1YmxpYyBUcmFuc3BvcnQgewogIHB1YmxpYzoKLSAgTmV0d29ya05v
ZGVUcmFuc3BvcnQoQ2FsbENsaWVudCogc2VuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICBO
ZXR3b3JrTm9kZSogc2VuZF9uZXQsCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJl
Y2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSBwYWNrZXRfb3ZlcmhlYWQp
OworICBOZXR3b3JrTm9kZVRyYW5zcG9ydChjb25zdCBDbG9jayogc2VuZGVyX2Nsb2NrLCBDYWxs
KiBzZW5kZXJfY2FsbCk7CiAgIH5OZXR3b3JrTm9kZVRyYW5zcG9ydCgpIG92ZXJyaWRlOwogCiAg
IGJvb2wgU2VuZFJ0cChjb25zdCB1aW50OF90KiBwYWNrZXQsCiAgICAgICAgICAgICAgICBzaXpl
X3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgY29uc3QgUGFja2V0T3B0aW9ucyYgb3B0aW9ucykg
b3ZlcnJpZGU7CiAgIGJvb2wgU2VuZFJ0Y3AoY29uc3QgdWludDhfdCogcGFja2V0LCBzaXplX3Qg
bGVuZ3RoKSBvdmVycmlkZTsKLSAgdWludDY0X3QgUmVjZWl2ZXJJZCgpIGNvbnN0OworCisgIHZv
aWQgQ29ubmVjdChOZXR3b3JrTm9kZSogc2VuZF9ub2RlLAorICAgICAgICAgICAgICAgdWludDY0
X3QgcmVjZWl2ZXJfaWQsCisgICAgICAgICAgICAgICBEYXRhU2l6ZSBwYWNrZXRfb3ZlcmhlYWQp
OworCisgIERhdGFTaXplIHBhY2tldF9vdmVyaGVhZCgpIHsKKyAgICBydGM6OkNyaXRTY29wZSBj
cml0KCZjcml0X3NlY3RfKTsKKyAgICByZXR1cm4gcGFja2V0X292ZXJoZWFkXzsKKyAgfQogCiAg
cHJpdmF0ZToKLSAgQ2FsbENsaWVudCogY29uc3Qgc2VuZGVyXzsKLSAgTmV0d29ya05vZGUqIGNv
bnN0IHNlbmRfbmV0XzsKLSAgY29uc3QgdWludDY0X3QgcmVjZWl2ZXJfaWRfOwotICBjb25zdCBE
YXRhU2l6ZSBwYWNrZXRfb3ZlcmhlYWRfOworICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X3Nl
Y3RfOworICBjb25zdCBDbG9jayogY29uc3Qgc2VuZGVyX2Nsb2NrXzsKKyAgQ2FsbCogY29uc3Qg
c2VuZGVyX2NhbGxfOworICBOZXR3b3JrTm9kZSogc2VuZF9uZXRfIFJUQ19HVUFSREVEX0JZKGNy
aXRfc2VjdF8pID0gbnVsbHB0cjsKKyAgdWludDY0X3QgcmVjZWl2ZXJfaWRfIFJUQ19HVUFSREVE
X0JZKGNyaXRfc2VjdF8pID0gMDsKKyAgRGF0YVNpemUgcGFja2V0X292ZXJoZWFkXyBSVENfR1VB
UkRFRF9CWShjcml0X3NlY3RfKSA9IERhdGFTaXplOjpaZXJvKCk7CiB9OwogCiAvLyBDcm9zc1Ry
YWZmaWNTb3VyY2UgaXMgY3JlYXRlZCBieSBhIFNjZW5hcmlvIGFuZCBnZW5lcmF0ZXMgY3Jvc3Mg
dHJhZmZpYy4gSXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmNjCmluZGV4IDdl
YjA5ZThiYjdhMWQxMjQ4NjI0MzI3YWI0YmFhZTJlYWVhMzkxYzUuLjc1ODk4NzhkNWJhMzUzOTc4
ZjUzMGNjMmZiYzA2NjliZDVlNjRiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW8uY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2Vu
YXJpby5jYwpAQCAtMTYsNyArMTYsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCiAj
aW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKIAotREVGSU5FX2Jvb2woc2Nl
bmFyaW9fbG9ncywgZmFsc2UsICJTYXZlIGxvZ3MgZnJvbSBzY2VuYXJpbyBmcmFtZXdvcmsuIik7
CitXRUJSVENfREVGSU5FX2Jvb2woc2NlbmFyaW9fbG9ncywgZmFsc2UsICJTYXZlIGxvZ3MgZnJv
bSBzY2VuYXJpbyBmcmFtZXdvcmsuIik7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNl
IHRlc3QgewpAQCAtNzUsNiArNzUsOCBAQCBTY2VuYXJpbzo6U2NlbmFyaW8oc3RkOjpzdHJpbmcg
ZmlsZV9uYW1lLCBib29sIHJlYWxfdGltZSkKIH0KIAogU2NlbmFyaW86On5TY2VuYXJpbygpIHsK
KyAgaWYgKHN0YXJ0X3RpbWVfLklzRmluaXRlKCkpCisgICAgU3RvcCgpOwogICBpZiAoIXJlYWxf
dGltZV9tb2RlXykKICAgICBydGM6OlNldENsb2NrRm9yVGVzdGluZyhudWxscHRyKTsKIH0KQEAg
LTEyMywxNCArMTI1LDUwIEBAIENhbGxDbGllbnQqIFNjZW5hcmlvOjpDcmVhdGVDbGllbnQoCiAg
IHJldHVybiBDcmVhdGVDbGllbnQobmFtZSwgY29uZmlnKTsKIH0KIAorQ2FsbENsaWVudFBhaXIq
IFNjZW5hcmlvOjpDcmVhdGVSb3V0ZXMoQ2FsbENsaWVudCogZmlyc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRf
bGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxDbGllbnQq
IHNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmspIHsKKyAgcmV0dXJuIENyZWF0ZVJvdXRlcyhm
aXJzdCwgc2VuZF9saW5rLAorICAgICAgICAgICAgICAgICAgICAgIERhdGFTaXplOjpieXRlcyhQ
YWNrZXRPdmVyaGVhZDo6a0RlZmF1bHQpLCBzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuX2xpbmssIERhdGFTaXplOjpieXRlcyhQYWNrZXRPdmVyaGVhZDo6a0RlZmF1bHQpKTsK
K30KKworQ2FsbENsaWVudFBhaXIqIFNjZW5hcmlvOjpDcmVhdGVSb3V0ZXMoQ2FsbENsaWVudCog
Zmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rv
cjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERhdGFTaXplIGZpcnN0X292ZXJoZWFkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ2FsbENsaWVudCogc2Vjb25kLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGlu
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFTaXplIHNlY29u
ZF9vdmVyaGVhZCkgeworICBDYWxsQ2xpZW50UGFpciogY2xpZW50X3BhaXIgPSBuZXcgQ2FsbENs
aWVudFBhaXIoZmlyc3QsIHNlY29uZCk7CisgIENoYW5nZVJvdXRlKGNsaWVudF9wYWlyLT5mb3J3
YXJkKCksIHNlbmRfbGluaywgZmlyc3Rfb3ZlcmhlYWQpOworICBDaGFuZ2VSb3V0ZShjbGllbnRf
cGFpci0+cmV2ZXJzZSgpLCByZXR1cm5fbGluaywgc2Vjb25kX292ZXJoZWFkKTsKKyAgY2xpZW50
X3BhaXJzXy5lbXBsYWNlX2JhY2soY2xpZW50X3BhaXIpOworICByZXR1cm4gY2xpZW50X3BhaXI7
Cit9CisKK3ZvaWQgU2NlbmFyaW86OkNoYW5nZVJvdXRlKHN0ZDo6cGFpcjxDYWxsQ2xpZW50Kiwg
Q2FsbENsaWVudCo+IGNsaWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZl
Y3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMpIHsKKyAgQ2hhbmdlUm91dGUoY2xpZW50cywg
b3Zlcl9ub2RlcywgRGF0YVNpemU6OmJ5dGVzKFBhY2tldE92ZXJoZWFkOjprRGVmYXVsdCkpOwor
fQorCit2b2lkIFNjZW5hcmlvOjpDaGFuZ2VSb3V0ZShzdGQ6OnBhaXI8Q2FsbENsaWVudCosIENh
bGxDbGllbnQqPiBjbGllbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8TmV0d29ya05vZGUqPiBvdmVyX25vZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
RGF0YVNpemUgb3ZlcmhlYWQpIHsKKyAgdWludDY0X3Qgcm91dGVfaWQgPSBuZXh0X3JvdXRlX2lk
XysrOworICBjbGllbnRzLnNlY29uZC0+cm91dGVfb3ZlcmhlYWRfLmluc2VydCh7cm91dGVfaWQs
IG92ZXJoZWFkfSk7CisgIE5ldHdvcmtOb2RlOjpSb3V0ZShyb3V0ZV9pZCwgb3Zlcl9ub2Rlcywg
Y2xpZW50cy5zZWNvbmQpOworICBjbGllbnRzLmZpcnN0LT50cmFuc3BvcnRfLkNvbm5lY3Qob3Zl
cl9ub2Rlcy5mcm9udCgpLCByb3V0ZV9pZCwgb3ZlcmhlYWQpOworfQorCiBTaW11bGF0ZWRUaW1l
Q2xpZW50KiBTY2VuYXJpbzo6Q3JlYXRlU2ltdWxhdGVkVGltZUNsaWVudCgKICAgICBzdGQ6OnN0
cmluZyBuYW1lLAogICAgIFNpbXVsYXRlZFRpbWVDbGllbnRDb25maWcgY29uZmlnLAogICAgIHN0
ZDo6dmVjdG9yPFBhY2tldFN0cmVhbUNvbmZpZz4gc3RyZWFtX2NvbmZpZ3MsCiAgICAgc3RkOjp2
ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCiAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05v
ZGUqPiByZXR1cm5fbGluaykgewotICB1aW50NjRfdCBzZW5kX2lkID0gbmV4dF9yZWNlaXZlcl9p
ZF8rKzsKLSAgdWludDY0X3QgcmV0dXJuX2lkID0gbmV4dF9yZWNlaXZlcl9pZF8rKzsKKyAgdWlu
dDY0X3Qgc2VuZF9pZCA9IG5leHRfcm91dGVfaWRfKys7CisgIHVpbnQ2NF90IHJldHVybl9pZCA9
IG5leHRfcm91dGVfaWRfKys7CiAgIFNpbXVsYXRlZFRpbWVDbGllbnQqIGNsaWVudCA9IG5ldyBT
aW11bGF0ZWRUaW1lQ2xpZW50KAogICAgICAgR2V0RnVsbFBhdGhPckVtcHR5KG5hbWUpLCBjb25m
aWcsIHN0cmVhbV9jb25maWdzLCBzZW5kX2xpbmssIHJldHVybl9saW5rLAogICAgICAgc2VuZF9p
ZCwgcmV0dXJuX2lkLCBOb3coKSk7CkBAIC0xNzksMjEgKzIxNywyMSBAQCBOZXR3b3JrTm9kZSog
U2NlbmFyaW86OkNyZWF0ZU5ldHdvcmtOb2RlKAogdm9pZCBTY2VuYXJpbzo6VHJpZ2dlclBhY2tl
dEJ1cnN0KHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gb3Zlcl9ub2RlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX3BhY2tldHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhY2tldF9zaXplKSB7Ci0gIGludDY0X3QgcmVj
ZWl2ZXJfaWQgPSBuZXh0X3JlY2VpdmVyX2lkXysrOwotICBOZXR3b3JrTm9kZTo6Um91dGUocmVj
ZWl2ZXJfaWQsIG92ZXJfbm9kZXMsICZudWxsX3JlY2VpdmVyXyk7CisgIGludDY0X3Qgcm91dGVf
aWQgPSBuZXh0X3JvdXRlX2lkXysrOworICBOZXR3b3JrTm9kZTo6Um91dGUocm91dGVfaWQsIG92
ZXJfbm9kZXMsICZudWxsX3JlY2VpdmVyXyk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVt
X3BhY2tldHM7ICsraSkKICAgICBvdmVyX25vZGVzWzBdLT5UcnlEZWxpdmVyUGFja2V0KHJ0Yzo6
Q29weU9uV3JpdGVCdWZmZXIocGFja2V0X3NpemUpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVjZWl2ZXJfaWQsIE5vdygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJvdXRlX2lkLCBOb3coKSk7CiB9CiAKIHZvaWQgU2NlbmFyaW86Ok5ldHdv
cmtEZWxheWVkQWN0aW9uKHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gb3Zlcl9ub2RlcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYWNrZXRfc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBh
Y3Rpb24pIHsKLSAgaW50NjRfdCByZWNlaXZlcl9pZCA9IG5leHRfcmVjZWl2ZXJfaWRfKys7Cisg
IGludDY0X3Qgcm91dGVfaWQgPSBuZXh0X3JvdXRlX2lkXysrOwogICBhY3Rpb25fcmVjZWl2ZXJz
Xy5lbXBsYWNlX2JhY2sobmV3IEFjdGlvblJlY2VpdmVyKGFjdGlvbikpOwotICBOZXR3b3JrTm9k
ZTo6Um91dGUocmVjZWl2ZXJfaWQsIG92ZXJfbm9kZXMsIGFjdGlvbl9yZWNlaXZlcnNfLmJhY2so
KS5nZXQoKSk7Ci0gIG92ZXJfbm9kZXNbMF0tPlRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25X
cml0ZUJ1ZmZlcihwYWNrZXRfc2l6ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVjZWl2ZXJfaWQsIE5vdygpKTsKKyAgTmV0d29ya05vZGU6OlJvdXRlKHJvdXRlX2lkLCBv
dmVyX25vZGVzLCBhY3Rpb25fcmVjZWl2ZXJzXy5iYWNrKCkuZ2V0KCkpOworICBvdmVyX25vZGVz
WzBdLT5UcnlEZWxpdmVyUGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIocGFja2V0X3NpemUp
LCByb3V0ZV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3coKSk7CiB9
CiAKIENyb3NzVHJhZmZpY1NvdXJjZSogU2NlbmFyaW86OkNyZWF0ZUNyb3NzVHJhZmZpYygKQEAg
LTIwNyw2NSArMjQ1LDQ2IEBAIENyb3NzVHJhZmZpY1NvdXJjZSogU2NlbmFyaW86OkNyZWF0ZUNy
b3NzVHJhZmZpYygKIENyb3NzVHJhZmZpY1NvdXJjZSogU2NlbmFyaW86OkNyZWF0ZUNyb3NzVHJh
ZmZpYygKICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMsCiAgICAgQ3Jv
c3NUcmFmZmljQ29uZmlnIGNvbmZpZykgewotICBpbnQ2NF90IHJlY2VpdmVyX2lkID0gbmV4dF9y
ZWNlaXZlcl9pZF8rKzsKKyAgaW50NjRfdCByb3V0ZV9pZCA9IG5leHRfcm91dGVfaWRfKys7CiAg
IGNyb3NzX3RyYWZmaWNfc291cmNlc18uZW1wbGFjZV9iYWNrKAotICAgICAgbmV3IENyb3NzVHJh
ZmZpY1NvdXJjZShvdmVyX25vZGVzLmZyb250KCksIHJlY2VpdmVyX2lkLCBjb25maWcpKTsKKyAg
ICAgIG5ldyBDcm9zc1RyYWZmaWNTb3VyY2Uob3Zlcl9ub2Rlcy5mcm9udCgpLCByb3V0ZV9pZCwg
Y29uZmlnKSk7CiAgIENyb3NzVHJhZmZpY1NvdXJjZSogbm9kZSA9IGNyb3NzX3RyYWZmaWNfc291
cmNlc18uYmFjaygpLmdldCgpOwotICBOZXR3b3JrTm9kZTo6Um91dGUocmVjZWl2ZXJfaWQsIG92
ZXJfbm9kZXMsICZudWxsX3JlY2VpdmVyXyk7CisgIE5ldHdvcmtOb2RlOjpSb3V0ZShyb3V0ZV9p
ZCwgb3Zlcl9ub2RlcywgJm51bGxfcmVjZWl2ZXJfKTsKICAgRXZlcnkoY29uZmlnLm1pbl9wYWNr
ZXRfaW50ZXJ2YWwsCiAgICAgICAgIFt0aGlzLCBub2RlXShUaW1lRGVsdGEgZGVsdGEpIHsgbm9k
ZS0+UHJvY2VzcyhOb3coKSwgZGVsdGEpOyB9KTsKICAgcmV0dXJuIG5vZGU7CiB9CiAKIFZpZGVv
U3RyZWFtUGFpciogU2NlbmFyaW86OkNyZWF0ZVZpZGVvU3RyZWFtKAotICAgIENhbGxDbGllbnQq
IHNlbmRlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICBD
YWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVy
bl9saW5rLAorICAgIHN0ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMs
CiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKFZpZGVvU3RyZWFtQ29uZmlnKik+IGNvbmZpZ19tb2Rp
ZmllcikgewogICBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWc7CiAgIGNvbmZpZ19tb2RpZmllcigm
Y29uZmlnKTsKLSAgcmV0dXJuIENyZWF0ZVZpZGVvU3RyZWFtKHNlbmRlciwgc2VuZF9saW5rLCBy
ZWNlaXZlciwgcmV0dXJuX2xpbmssIGNvbmZpZyk7CisgIHJldHVybiBDcmVhdGVWaWRlb1N0cmVh
bShjbGllbnRzLCBjb25maWcpOwogfQogCiBWaWRlb1N0cmVhbVBhaXIqIFNjZW5hcmlvOjpDcmVh
dGVWaWRlb1N0cmVhbSgKLSAgICBDYWxsQ2xpZW50KiBzZW5kZXIsCi0gICAgc3RkOjp2ZWN0b3I8
TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAgQ2FsbENsaWVudCogcmVjZWl2ZXIsCi0gICAg
c3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKKyAgICBzdGQ6OnBhaXI8Q2Fs
bENsaWVudCosIENhbGxDbGllbnQqPiBjbGllbnRzLAogICAgIFZpZGVvU3RyZWFtQ29uZmlnIGNv
bmZpZykgewotICB1aW50NjRfdCBzZW5kX3JlY2VpdmVyX2lkID0gbmV4dF9yZWNlaXZlcl9pZF8r
KzsKLSAgdWludDY0X3QgcmV0dXJuX3JlY2VpdmVyX2lkID0gbmV4dF9yZWNlaXZlcl9pZF8rKzsK
LQogICB2aWRlb19zdHJlYW1zXy5lbXBsYWNlX2JhY2soCi0gICAgICBuZXcgVmlkZW9TdHJlYW1Q
YWlyKHNlbmRlciwgc2VuZF9saW5rLCBzZW5kX3JlY2VpdmVyX2lkLCByZWNlaXZlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2xpbmssIHJldHVybl9yZWNlaXZlcl9pZCwgY29u
ZmlnKSk7CisgICAgICBuZXcgVmlkZW9TdHJlYW1QYWlyKGNsaWVudHMuZmlyc3QsIGNsaWVudHMu
c2Vjb25kLCBjb25maWcpKTsKICAgcmV0dXJuIHZpZGVvX3N0cmVhbXNfLmJhY2soKS5nZXQoKTsK
IH0KIAogQXVkaW9TdHJlYW1QYWlyKiBTY2VuYXJpbzo6Q3JlYXRlQXVkaW9TdHJlYW0oCi0gICAg
Q2FsbENsaWVudCogc2VuZGVyLAotICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gc2VuZF9s
aW5rLAotICAgIENhbGxDbGllbnQqIHJlY2VpdmVyLAotICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtO
b2RlKj4gcmV0dXJuX2xpbmssCisgICAgc3RkOjpwYWlyPENhbGxDbGllbnQqLCBDYWxsQ2xpZW50
Kj4gY2xpZW50cywKICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoQXVkaW9TdHJlYW1Db25maWcqKT4g
Y29uZmlnX21vZGlmaWVyKSB7CiAgIEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZzsKICAgY29uZmln
X21vZGlmaWVyKCZjb25maWcpOwotICByZXR1cm4gQ3JlYXRlQXVkaW9TdHJlYW0oc2VuZGVyLCBz
ZW5kX2xpbmssIHJlY2VpdmVyLCByZXR1cm5fbGluaywgY29uZmlnKTsKKyAgcmV0dXJuIENyZWF0
ZUF1ZGlvU3RyZWFtKGNsaWVudHMsIGNvbmZpZyk7CiB9CiAKIEF1ZGlvU3RyZWFtUGFpciogU2Nl
bmFyaW86OkNyZWF0ZUF1ZGlvU3RyZWFtKAotICAgIENhbGxDbGllbnQqIHNlbmRlciwKLSAgICBz
dGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICBDYWxsQ2xpZW50KiByZWNl
aXZlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rLAorICAgIHN0
ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMsCiAgICAgQXVkaW9TdHJl
YW1Db25maWcgY29uZmlnKSB7Ci0gIHVpbnQ2NF90IHNlbmRfcmVjZWl2ZXJfaWQgPSBuZXh0X3Jl
Y2VpdmVyX2lkXysrOwotICB1aW50NjRfdCByZXR1cm5fcmVjZWl2ZXJfaWQgPSBuZXh0X3JlY2Vp
dmVyX2lkXysrOwotCi0gIGF1ZGlvX3N0cmVhbXNfLmVtcGxhY2VfYmFjayhuZXcgQXVkaW9TdHJl
YW1QYWlyKAotICAgICAgc2VuZGVyLCBzZW5kX2xpbmssIHNlbmRfcmVjZWl2ZXJfaWQsIGF1ZGlv
X2VuY29kZXJfZmFjdG9yeV8sIHJlY2VpdmVyLAotICAgICAgcmV0dXJuX2xpbmssIHJldHVybl9y
ZWNlaXZlcl9pZCwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5XywgY29uZmlnKSk7CisgIGF1ZGlvX3N0
cmVhbXNfLmVtcGxhY2VfYmFjaygKKyAgICAgIG5ldyBBdWRpb1N0cmVhbVBhaXIoY2xpZW50cy5m
aXJzdCwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5XywgY2xpZW50cy5zZWNvbmQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeV8sIGNvbmZpZykpOwogICByZXR1
cm4gYXVkaW9fc3RyZWFtc18uYmFjaygpLmdldCgpOwogfQogCkBAIC0yODgsMzcgKzMwNywyMCBA
QCB2b2lkIFNjZW5hcmlvOjpBdChUaW1lRGVsdGEgb2Zmc2V0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gZnVuY3Rpb24pIHsKIH0KIAogdm9pZCBTY2VuYXJpbzo6UnVuRm9yKFRpbWVEZWx0YSBkdXJh
dGlvbikgewotICBSdW5VbnRpbChkdXJhdGlvbiwgVGltZURlbHRhOjpQbHVzSW5maW5pdHkoKSwg
W10oKSB7IHJldHVybiBmYWxzZTsgfSk7CisgIFJ1blVudGlsKER1cmF0aW9uKCkgKyBkdXJhdGlv
bik7Cit9CisKK3ZvaWQgU2NlbmFyaW86OlJ1blVudGlsKFRpbWVEZWx0YSBtYXhfZHVyYXRpb24p
IHsKKyAgUnVuVW50aWwobWF4X2R1cmF0aW9uLCBUaW1lRGVsdGE6OlBsdXNJbmZpbml0eSgpLCBb
XSgpIHsgcmV0dXJuIGZhbHNlOyB9KTsKIH0KIAogdm9pZCBTY2VuYXJpbzo6UnVuVW50aWwoVGlt
ZURlbHRhIG1heF9kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVEZWx0YSBw
b2xsX2ludGVydmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmdW5jdGlvbjxib29s
KCk+IGV4aXRfZnVuY3Rpb24pIHsKLSAgc3RhcnRfdGltZV8gPSBUaW1lc3RhbXA6OnVzKGNsb2Nr
Xy0+VGltZUluTWljcm9zZWNvbmRzKCkpOwotICBmb3IgKGF1dG8mIGFjdGl2aXR5IDogcmVwZWF0
ZWRfYWN0aXZpdGllc18pIHsKLSAgICBhY3Rpdml0eS0+U2V0U3RhcnRUaW1lKHN0YXJ0X3RpbWVf
KTsKLSAgfQorICBpZiAoc3RhcnRfdGltZV8uSXNJbmZpbml0ZSgpKQorICAgIFN0YXJ0KCk7CiAK
LSAgZm9yIChhdXRvJiBzdHJlYW1fcGFpciA6IHZpZGVvX3N0cmVhbXNfKQotICAgIHN0cmVhbV9w
YWlyLT5yZWNlaXZlKCktPnJlY2VpdmVfc3RyZWFtXy0+U3RhcnQoKTsKLSAgZm9yIChhdXRvJiBz
dHJlYW1fcGFpciA6IGF1ZGlvX3N0cmVhbXNfKQotICAgIHN0cmVhbV9wYWlyLT5yZWNlaXZlKCkt
PnJlY2VpdmVfc3RyZWFtXy0+U3RhcnQoKTsKLSAgZm9yIChhdXRvJiBzdHJlYW1fcGFpciA6IHZp
ZGVvX3N0cmVhbXNfKSB7Ci0gICAgaWYgKHN0cmVhbV9wYWlyLT5jb25maWdfLmF1dG9zdGFydCkg
ewotICAgICAgc3RyZWFtX3BhaXItPnNlbmQoKS0+U3RhcnQoKTsKLSAgICB9Ci0gIH0KLSAgZm9y
IChhdXRvJiBzdHJlYW1fcGFpciA6IGF1ZGlvX3N0cmVhbXNfKSB7Ci0gICAgaWYgKHN0cmVhbV9w
YWlyLT5jb25maWdfLmF1dG9zdGFydCkgewotICAgICAgc3RyZWFtX3BhaXItPnNlbmQoKS0+U3Rh
cnQoKTsKLSAgICB9Ci0gIH0KLSAgZm9yIChhdXRvJiBjYWxsIDogY2xpZW50c18pIHsKLSAgICBj
YWxsLT5jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdvcmtTdGF0ZShNZWRpYVR5cGU6OkFVRElPLCBr
TmV0d29ya1VwKTsKLSAgICBjYWxsLT5jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdvcmtTdGF0ZShN
ZWRpYVR5cGU6OlZJREVPLCBrTmV0d29ya1VwKTsKLSAgfQotCi0gIHJ0Yzo6RXZlbnQgZG9uZV8o
ZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lXzsKICAgd2hpbGUgKCFleGl0X2Z1bmN0
aW9uKCkgJiYgRHVyYXRpb24oKSA8IG1heF9kdXJhdGlvbikgewogICAgIFRpbWVzdGFtcCBjdXJy
ZW50X3RpbWUgPSBOb3coKTsKICAgICBUaW1lRGVsdGEgZHVyYXRpb24gPSBjdXJyZW50X3RpbWUg
LSBzdGFydF90aW1lXzsKQEAgLTM0Niw2ICszNDgsMzIgQEAgdm9pZCBTY2VuYXJpbzo6UnVuVW50
aWwoVGltZURlbHRhIG1heF9kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMDAwKTsKICAgICB9CiAgIH0KK30KKwordm9pZCBTY2VuYXJpbzo6U3Rh
cnQoKSB7CisgIHN0YXJ0X3RpbWVfID0gVGltZXN0YW1wOjp1cyhjbG9ja18tPlRpbWVJbk1pY3Jv
c2Vjb25kcygpKTsKKyAgZm9yIChhdXRvJiBhY3Rpdml0eSA6IHJlcGVhdGVkX2FjdGl2aXRpZXNf
KSB7CisgICAgYWN0aXZpdHktPlNldFN0YXJ0VGltZShzdGFydF90aW1lXyk7CisgIH0KKworICBm
b3IgKGF1dG8mIHN0cmVhbV9wYWlyIDogdmlkZW9fc3RyZWFtc18pCisgICAgc3RyZWFtX3BhaXIt
PnJlY2VpdmUoKS0+U3RhcnQoKTsKKyAgZm9yIChhdXRvJiBzdHJlYW1fcGFpciA6IGF1ZGlvX3N0
cmVhbXNfKQorICAgIHN0cmVhbV9wYWlyLT5yZWNlaXZlKCktPlN0YXJ0KCk7CisgIGZvciAoYXV0
byYgc3RyZWFtX3BhaXIgOiB2aWRlb19zdHJlYW1zXykgeworICAgIGlmIChzdHJlYW1fcGFpci0+
Y29uZmlnXy5hdXRvc3RhcnQpIHsKKyAgICAgIHN0cmVhbV9wYWlyLT5zZW5kKCktPlN0YXJ0KCk7
CisgICAgfQorICB9CisgIGZvciAoYXV0byYgc3RyZWFtX3BhaXIgOiBhdWRpb19zdHJlYW1zXykg
eworICAgIGlmIChzdHJlYW1fcGFpci0+Y29uZmlnXy5hdXRvc3RhcnQpIHsKKyAgICAgIHN0cmVh
bV9wYWlyLT5zZW5kKCktPlN0YXJ0KCk7CisgICAgfQorICB9Cit9CisKK3ZvaWQgU2NlbmFyaW86
OlN0b3AoKSB7CisgIFJUQ19EQ0hFQ0soc3RhcnRfdGltZV8uSXNGaW5pdGUoKSk7CiAgIGZvciAo
YXV0byYgc3RyZWFtX3BhaXIgOiB2aWRlb19zdHJlYW1zXykgewogICAgIHN0cmVhbV9wYWlyLT5z
ZW5kKCktPnZpZGVvX2NhcHR1cmVyXy0+U3RvcCgpOwogICAgIHN0cmVhbV9wYWlyLT5zZW5kKCkt
PnNlbmRfc3RyZWFtXy0+U3RvcCgpOwpAQCAtMzU2LDYgKzM4NCw3IEBAIHZvaWQgU2NlbmFyaW86
OlJ1blVudGlsKFRpbWVEZWx0YSBtYXhfZHVyYXRpb24sCiAgICAgc3RyZWFtX3BhaXItPnJlY2Vp
dmUoKS0+cmVjZWl2ZV9zdHJlYW1fLT5TdG9wKCk7CiAgIGZvciAoYXV0byYgc3RyZWFtX3BhaXIg
OiBhdWRpb19zdHJlYW1zXykKICAgICBzdHJlYW1fcGFpci0+cmVjZWl2ZSgpLT5yZWNlaXZlX3N0
cmVhbV8tPlN0b3AoKTsKKyAgc3RhcnRfdGltZV8gPSBUaW1lc3RhbXA6OlBsdXNJbmZpbml0eSgp
OwogfQogCiBUaW1lc3RhbXAgU2NlbmFyaW86Ok5vdygpIHsKQEAgLTM2Myw2ICszOTIsOCBAQCBU
aW1lc3RhbXAgU2NlbmFyaW86Ok5vdygpIHsKIH0KIAogVGltZURlbHRhIFNjZW5hcmlvOjpEdXJh
dGlvbigpIHsKKyAgaWYgKHN0YXJ0X3RpbWVfLklzSW5maW5pdGUoKSkKKyAgICByZXR1cm4gVGlt
ZURlbHRhOjpaZXJvKCk7CiAgIHJldHVybiBOb3coKSAtIHN0YXJ0X3RpbWVfOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Nj
ZW5hcmlvL3NjZW5hcmlvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmgKaW5kZXggMDU4NzZhYzQ5YzE1NjM4NzJmMjZl
ZDM4ZGMwMDY4MzllODQ5MDM3OS4uMzhiZWY0NDJlY2RkNTMwMjk1MTM3NjhkY2VhMTJlYjU1NzM3
OTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpby5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW8uaApAQCAtNzgsNiArNzgs
MjUgQEAgY2xhc3MgU2NlbmFyaW8gewogICAgICAgc3RkOjpzdHJpbmcgbmFtZSwKICAgICAgIHN0
ZDo6ZnVuY3Rpb248dm9pZChDYWxsQ2xpZW50Q29uZmlnKik+IGNvbmZpZ19tb2RpZmllcik7CiAK
KyAgQ2FsbENsaWVudFBhaXIqIENyZWF0ZVJvdXRlcyhDYWxsQ2xpZW50KiBmaXJzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRf
bGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsQ2xpZW50KiBzZWNvbmQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUq
PiByZXR1cm5fbGluayk7CisKKyAgQ2FsbENsaWVudFBhaXIqIENyZWF0ZVJvdXRlcyhDYWxsQ2xp
ZW50KiBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxO
ZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
YXRhU2l6ZSBmaXJzdF9vdmVyaGVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
YWxsQ2xpZW50KiBzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEYXRhU2l6ZSBzZWNvbmRfb3ZlcmhlYWQpOworCisgIHZvaWQgQ2hhbmdlUm91dGUo
c3RkOjpwYWlyPENhbGxDbGllbnQqLCBDYWxsQ2xpZW50Kj4gY2xpZW50cywKKyAgICAgICAgICAg
ICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMpOworCisgIHZvaWQg
Q2hhbmdlUm91dGUoc3RkOjpwYWlyPENhbGxDbGllbnQqLCBDYWxsQ2xpZW50Kj4gY2xpZW50cywK
KyAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMs
CisgICAgICAgICAgICAgICAgICAgRGF0YVNpemUgb3ZlcmhlYWQpOworCiAgIFNpbXVsYXRlZFRp
bWVDbGllbnQqIENyZWF0ZVNpbXVsYXRlZFRpbWVDbGllbnQoCiAgICAgICBzdGQ6OnN0cmluZyBu
YW1lLAogICAgICAgU2ltdWxhdGVkVGltZUNsaWVudENvbmZpZyBjb25maWcsCkBAIC04NiwyOCAr
MTA1LDE4IEBAIGNsYXNzIFNjZW5hcmlvIHsKICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2Rl
Kj4gcmV0dXJuX2xpbmspOwogCiAgIFZpZGVvU3RyZWFtUGFpciogQ3JlYXRlVmlkZW9TdHJlYW0o
Ci0gICAgICBDYWxsQ2xpZW50KiBzZW5kZXIsCi0gICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9k
ZSo+IHNlbmRfbGluaywKLSAgICAgIENhbGxDbGllbnQqIHJlY2VpdmVyLAotICAgICAgc3RkOjp2
ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKKyAgICAgIHN0ZDo6cGFpcjxDYWxsQ2xp
ZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMsCiAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoVmlk
ZW9TdHJlYW1Db25maWcqKT4gY29uZmlnX21vZGlmaWVyKTsKLSAgVmlkZW9TdHJlYW1QYWlyKiBD
cmVhdGVWaWRlb1N0cmVhbShDYWxsQ2xpZW50KiBzZW5kZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbENsaWVudCogcmVjZWl2ZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29y
a05vZGUqPiByZXR1cm5fbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWcpOworICBWaWRlb1N0cmVhbVBhaXIqIENyZWF0ZVZp
ZGVvU3RyZWFtKAorICAgICAgc3RkOjpwYWlyPENhbGxDbGllbnQqLCBDYWxsQ2xpZW50Kj4gY2xp
ZW50cywKKyAgICAgIFZpZGVvU3RyZWFtQ29uZmlnIGNvbmZpZyk7CiAKICAgQXVkaW9TdHJlYW1Q
YWlyKiBDcmVhdGVBdWRpb1N0cmVhbSgKLSAgICAgIENhbGxDbGllbnQqIHNlbmRlciwKLSAgICAg
IHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gc2VuZF9saW5rLAotICAgICAgQ2FsbENsaWVudCog
cmVjZWl2ZXIsCi0gICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rLAor
ICAgICAgc3RkOjpwYWlyPENhbGxDbGllbnQqLCBDYWxsQ2xpZW50Kj4gY2xpZW50cywKICAgICAg
IHN0ZDo6ZnVuY3Rpb248dm9pZChBdWRpb1N0cmVhbUNvbmZpZyopPiBjb25maWdfbW9kaWZpZXIp
OwotICBBdWRpb1N0cmVhbVBhaXIqIENyZWF0ZUF1ZGlvU3RyZWFtKENhbGxDbGllbnQqIHNlbmRl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3
b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZyk7CisgIEF1
ZGlvU3RyZWFtUGFpciogQ3JlYXRlQXVkaW9TdHJlYW0oCisgICAgICBzdGQ6OnBhaXI8Q2FsbENs
aWVudCosIENhbGxDbGllbnQqPiBjbGllbnRzLAorICAgICAgQXVkaW9TdHJlYW1Db25maWcgY29u
ZmlnKTsKIAogICBDcm9zc1RyYWZmaWNTb3VyY2UqIENyZWF0ZUNyb3NzVHJhZmZpYygKICAgICAg
IHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gb3Zlcl9ub2RlcywKQEAgLTEzMSw5ICsxNDAsMTIg
QEAgY2xhc3MgU2NlbmFyaW8gewogICAvLyBSdW5zIHRoZSBzY2VuYXJpbyBmb3IgdGhlIGdpdmVu
IHRpbWUgb3IgdW50aWwgdGhlIGV4aXQgZnVuY3Rpb24gcmV0dXJucwogICAvLyB0cnVlLgogICB2
b2lkIFJ1bkZvcihUaW1lRGVsdGEgZHVyYXRpb24pOworICB2b2lkIFJ1blVudGlsKFRpbWVEZWx0
YSBtYXhfZHVyYXRpb24pOwogICB2b2lkIFJ1blVudGlsKFRpbWVEZWx0YSBtYXhfZHVyYXRpb24s
CiAgICAgICAgICAgICAgICAgVGltZURlbHRhIHByb2JlX2ludGVydmFsLAogICAgICAgICAgICAg
ICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbCgpPiBleGl0X2Z1bmN0aW9uKTsKKyAgdm9pZCBTdGFydCgp
OworICB2b2lkIFN0b3AoKTsKIAogICAvLyBUcmlnZ2VycyBzZW5kaW5nIG9mIGR1bW15IHBhY2tl
dHMgb3ZlciB0aGUgZ2l2ZW4gbm9kZXMuCiAgIHZvaWQgVHJpZ2dlclBhY2tldEJ1cnN0KHN0ZDo6
dmVjdG9yPE5ldHdvcmtOb2RlKj4gb3Zlcl9ub2RlcywKQEAgLTE2Nyw2ICsxNzksNyBAQCBjbGFz
cyBTY2VuYXJpbyB7CiAgIHJ0Yzo6RmFrZUNsb2NrIGV2ZW50X2xvZ19mYWtlX2Nsb2NrXzsKIAog
ICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsbENsaWVudD4+IGNsaWVudHNfOworICBz
dGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsbENsaWVudFBhaXI+PiBjbGllbnRfcGFpcnNf
OwogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya05vZGU+PiBuZXR3b3JrX25v
ZGVzXzsKICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENyb3NzVHJhZmZpY1NvdXJjZT4+
IGNyb3NzX3RyYWZmaWNfc291cmNlc187CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb1N0cmVhbVBhaXI+PiB2aWRlb19zdHJlYW1zXzsKQEAgLTE3OSw3ICsxOTIsNyBAQCBjbGFz
cyBTY2VuYXJpbyB7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nQWN0aXZp
dHk+PiBwZW5kaW5nX2FjdGl2aXRpZXNfOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
U3RhdGVzUHJpbnRlcj4+IHByaW50ZXJzXzsKIAotICBpbnQ2NF90IG5leHRfcmVjZWl2ZXJfaWRf
ID0gNDAwMDA7CisgIGludDY0X3QgbmV4dF9yb3V0ZV9pZF8gPSA0MDAwMDsKICAgcnRjOjpzY29w
ZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeV87CiAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2Zh
Y3RvcnlfOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb19jb25maWcu
aAppbmRleCBlNjUyZTJjZTM5MjFkZjlkNjM0OTU3YzFkMDVhMWRjODQ0M2U5N2ExLi44OGZkYjhh
ZjAxNzM1Y2JjMDU2N2MxYjE1NDhhNTMxY2QzY2ZlMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvX2Nv
bmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3Qvc2NlbmFyaW8vc2NlbmFyaW9fY29uZmlnLmgKQEAgLTI4LDcgKzI4LDEyIEBAIHN0cnVjdCBQ
YWNrZXRPdmVyaGVhZCB7CiAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtJcHY2ID0gNDA7CiAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtVZHAgPSA4OwogICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBrU3J0cCA9IDEwOwotICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrVHVybiA9IDQ7Cisg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTdHVuID0gNDsKKyAgLy8gVFVSTiBtZXNzYWdlcyBj
YW4gYmUgc2VudCBlaXRoZXIgd2l0aCBvciB3aXRob3V0IGFuIGVzdGFibGllc2hlZCBjaGFubmVs
LgorICAvLyBJbiB0aGUgbGF0dGVyIGNhc2UsIGEgVFVSTiBTZW5kL0RhdGEgSW5kaWNhdGlvbiBp
cyBzZW50IHdoaWNoIGhhcworICAvLyBzaWduaWZpY2FudGx5IG1vcmUgb3ZlcmhlYWQuCisgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtUdXJuQ2hhbm5lbE1lc3NhZ2UgPSA0OworICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBrVHVybkluZGljYXRpb25NZXNzYWdlID0gMzY7CiAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IGtEZWZhdWx0ID0ga0lwdjQgKyBrVWRwICsga1NydHA7CiB9Owogc3Ry
dWN0IFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWcgewpAQCAtNDYsNyArNTEsNiBAQCBzdHJ1Y3Qg
VHJhbnNwb3J0Q29udHJvbGxlckNvbmZpZyB7CiAKIHN0cnVjdCBDYWxsQ2xpZW50Q29uZmlnIHsK
ICAgVHJhbnNwb3J0Q29udHJvbGxlckNvbmZpZyB0cmFuc3BvcnQ7Ci0gIERhdGFSYXRlIHByaW9y
aXR5X3RhcmdldF9yYXRlID0gRGF0YVJhdGU6Olplcm8oKTsKIH07CiAKIHN0cnVjdCBTaW11bGF0
ZWRUaW1lQ2xpZW50Q29uZmlnIHsKQEAgLTcxLDYgKzc1LDEwIEBAIHN0cnVjdCBQYWNrZXRTdHJl
YW1Db25maWcgewogc3RydWN0IFZpZGVvU3RyZWFtQ29uZmlnIHsKICAgYm9vbCBhdXRvc3RhcnQg
PSB0cnVlOwogICBzdHJ1Y3QgU291cmNlIHsKKyAgICBlbnVtIGNsYXNzIENvbnRlbnRUeXBlIHsK
KyAgICAgIGtWaWRlbywKKyAgICAgIGtTY3JlZW4sCisgICAgfSBjb250ZW50X3R5cGUgPSBDb250
ZW50VHlwZTo6a1ZpZGVvOwogICAgIGVudW0gQ2FwdHVyZSB7CiAgICAgICBrR2VuZXJhdG9yLAog
ICAgICAga1ZpZGVvRmlsZSwKQEAgLTEwMyw2ICsxMTEsNyBAQCBzdHJ1Y3QgVmlkZW9TdHJlYW1D
b25maWcgewogICAgIGFic2w6Om9wdGlvbmFsPGludD4ga2V5X2ZyYW1lX2ludGVydmFsID0gMzAw
MDsKIAogICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBtYXhfZGF0YV9yYXRlOworICAgIGFi
c2w6Om9wdGlvbmFsPGludD4gbWF4X2ZyYW1lcmF0ZTsKICAgICBzaXplX3QgbnVtX3NpbXVsY2Fz
dF9zdHJlYW1zID0gMTsKICAgICB1c2luZyBEZWdyYWRhdGlvblByZWZlcmVuY2UgPSBEZWdyYWRh
dGlvblByZWZlcmVuY2U7CiAgICAgRGVncmFkYXRpb25QcmVmZXJlbmNlIGRlZ3JhZGF0aW9uX3By
ZWZlcmVuY2UgPQpAQCAtMTE0LDEwICsxMjMsMTAgQEAgc3RydWN0IFZpZGVvU3RyZWFtQ29uZmln
IHsKICAgICB+U3RyZWFtKCk7CiAgICAgYm9vbCBwYWNrZXRfZmVlZGJhY2sgPSB0cnVlOwogICAg
IGJvb2wgdXNlX3J0eCA9IHRydWU7CisgICAgRGF0YVJhdGUgcGFkX3RvX3JhdGUgPSBEYXRhUmF0
ZTo6WmVybygpOwogICAgIFRpbWVEZWx0YSBuYWNrX2hpc3RvcnlfdGltZSA9IFRpbWVEZWx0YTo6
bXMoMTAwMCk7CiAgICAgYm9vbCB1c2VfZmxleGZlYyA9IGZhbHNlOwogICAgIGJvb2wgdXNlX3Vs
cGZlYyA9IGZhbHNlOwotICAgIERhdGFTaXplIHBhY2tldF9vdmVyaGVhZCA9IERhdGFTaXplOjpi
eXRlcyhQYWNrZXRPdmVyaGVhZDo6a0RlZmF1bHQpOwogICB9IHN0cmVhbTsKICAgc3RydWN0IFJl
bmRlcmVyIHsKICAgICBlbnVtIFR5cGUgeyBrRmFrZSB9IHR5cGUgPSBrRmFrZTsKQEAgLTEzMiw2
ICsxNDEsMTcgQEAgc3RydWN0IEF1ZGlvU3RyZWFtQ29uZmlnIHsKICAgc3RydWN0IFNvdXJjZSB7
CiAgICAgaW50IGNoYW5uZWxzID0gMTsKICAgfSBzb3VyY2U7CisgIGJvb2wgbmV0d29ya19hZGFw
dGF0aW9uID0gZmFsc2U7CisgIHN0cnVjdCBOZXR3b3JrQWRhcHRhdGlvbiB7CisgICAgc3RydWN0
IEZyYW1lTGVuZ3RoIHsKKyAgICAgIGRvdWJsZSBtaW5fcGFja2V0X2xvc3NfZm9yX2RlY3JlYXNl
ID0gMDsKKyAgICAgIGRvdWJsZSBtYXhfcGFja2V0X2xvc3NfZm9yX2luY3JlYXNlID0gMTsKKyAg
ICAgIERhdGFSYXRlIG1pbl9yYXRlX2Zvcl8yMF9tcyA9IERhdGFSYXRlOjpaZXJvKCk7CisgICAg
ICBEYXRhUmF0ZSBtYXhfcmF0ZV9mb3JfNjBfbXMgPSBEYXRhUmF0ZTo6SW5maW5pdHkoKTsKKyAg
ICAgIERhdGFSYXRlIG1pbl9yYXRlX2Zvcl82MF9tcyA9IERhdGFSYXRlOjpaZXJvKCk7CisgICAg
ICBEYXRhUmF0ZSBtYXhfcmF0ZV9mb3JfMTIwX21zID0gRGF0YVJhdGU6OkluZmluaXR5KCk7Cisg
ICAgfSBmcmFtZTsKKyAgfSBhZGFwdDsKICAgc3RydWN0IEVuY29kZXIgewogICAgIEVuY29kZXIo
KTsKICAgICBFbmNvZGVyKGNvbnN0IEVuY29kZXImKTsKQEAgLTE0MCw2ICsxNjAsNyBAQCBzdHJ1
Y3QgQXVkaW9TdHJlYW1Db25maWcgewogICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBmaXhl
ZF9yYXRlOwogICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBtaW5fcmF0ZTsKICAgICBhYnNs
OjpvcHRpb25hbDxEYXRhUmF0ZT4gbWF4X3JhdGU7CisgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJh
dGU+IHByaW9yaXR5X3JhdGU7CiAgICAgVGltZURlbHRhIGluaXRpYWxfZnJhbWVfbGVuZ3RoID0g
VGltZURlbHRhOjptcygyMCk7CiAgIH0gZW5jb2RlcjsKICAgc3RydWN0IFN0cmVhbSB7CkBAIC0x
NDcsOCArMTY4LDYgQEAgc3RydWN0IEF1ZGlvU3RyZWFtQ29uZmlnIHsKICAgICBTdHJlYW0oY29u
c3QgU3RyZWFtJik7CiAgICAgflN0cmVhbSgpOwogICAgIGJvb2wgaW5fYmFuZHdpZHRoX2VzdGlt
YXRpb24gPSBmYWxzZTsKLSAgICBib29sIHJhdGVfYWxsb2NhdGlvbl9wcmlvcml0eSA9IGZhbHNl
OwotICAgIERhdGFTaXplIHBhY2tldF9vdmVyaGVhZCA9IERhdGFTaXplOjpieXRlcyhQYWNrZXRP
dmVyaGVhZDo6a0RlZmF1bHQpOwogICB9IHN0cmVhbTsKICAgc3RydWN0IFJlbmRlciB7CiAgICAg
c3RkOjpzdHJpbmcgc3luY19ncm91cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW9fdGVzdHMvYmJyX3Bl
cmZvcm1hbmNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC9zY2VuYXJpby9zY2VuYXJpb190ZXN0cy9iYnJfcGVyZm9ybWFuY2UuY2MKaW5kZXggZTg3
Y2M2OGRkMzFmNzBjOGY4ZmNlM2YwZGRhNzU3YTZhMjc1OWQyOS4uMjhjYWJjMDcwZmRhMDdmYjc2
NjNhMTMwZTRmODc3OTVjMTg3ZjU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb190ZXN0cy9iYnJfcGVy
Zm9ybWFuY2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb190ZXN0cy9iYnJfcGVyZm9ybWFuY2UuY2MKQEAgLTE2
NywzMSArMTY3LDMxIEBAIFRFU1RfUChCYnJTY2VuYXJpb1Rlc3QsIFJlY2VpdmVzVmlkZW8pIHsK
ICAgbmV0X2NvbmYuc2ltdWxhdGlvbi5kZWxheV9zdGRfZGV2ID0gY29uZl8uc2NlbmFyaW8uZGVs
YXlfbm9pc2U7CiAgIFNpbXVsYXRpb25Ob2RlKiBzZW5kX25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlv
bk5vZGUobmV0X2NvbmYpOwogICBTaW11bGF0aW9uTm9kZSogcmV0X25ldCA9IHMuQ3JlYXRlU2lt
dWxhdGlvbk5vZGUobmV0X2NvbmYpOwotICBWaWRlb1N0cmVhbVBhaXIqIGFsaWNlX3ZpZGVvID0g
cy5DcmVhdGVWaWRlb1N0cmVhbSgKLSAgICAgIGFsaWNlLCB7c2VuZF9uZXR9LCBib2IsIHtyZXRf
bmV0fSwgWyZdKFZpZGVvU3RyZWFtQ29uZmlnKiBjKSB7CisgIGF1dG8gcm91dGUgPSBzLkNyZWF0
ZVJvdXRlcyhhbGljZSwge3NlbmRfbmV0fSwgYm9iLCB7cmV0X25ldH0pOworCisgIFZpZGVvU3Ry
ZWFtUGFpciogYWxpY2VfdmlkZW8gPQorICAgICAgcy5DcmVhdGVWaWRlb1N0cmVhbShyb3V0ZS0+
Zm9yd2FyZCgpLCBbJl0oVmlkZW9TdHJlYW1Db25maWcqIGMpIHsKICAgICAgICAgYy0+ZW5jb2Rl
ci5mYWtlLm1heF9yYXRlID0gRGF0YVJhdGU6OmticHMoMTgwMCk7CiAgICAgICB9KTsKLSAgcy5D
cmVhdGVBdWRpb1N0cmVhbShhbGljZSwge3NlbmRfbmV0fSwgYm9iLCB7cmV0X25ldH0sCi0gICAg
ICAgICAgICAgICAgICAgICAgWyZdKEF1ZGlvU3RyZWFtQ29uZmlnKiBjKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY29uZl8udHVuaW5nLnVzZV9iYnIpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgYy0+c3RyZWFtLmluX2JhbmR3aWR0aF9lc3RpbWF0aW9uID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgYy0+ZW5jb2Rlci5maXhlZF9yYXRlID0gRGF0YVJhdGU6
OmticHMoMzEpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgIH0pOworICBzLkNyZWF0ZUF1ZGlvU3RyZWFtKHJvdXRlLT5mb3J3YXJkKCksIFsmXShBdWRp
b1N0cmVhbUNvbmZpZyogYykgeworICAgIGlmIChjb25mXy50dW5pbmcudXNlX2JicikgeworICAg
ICAgYy0+c3RyZWFtLmluX2JhbmR3aWR0aF9lc3RpbWF0aW9uID0gdHJ1ZTsKKyAgICAgIGMtPmVu
Y29kZXIuZml4ZWRfcmF0ZSA9IERhdGFSYXRlOjprYnBzKDMxKTsKKyAgICB9CisgIH0pOwogCiAg
IFZpZGVvU3RyZWFtUGFpciogYm9iX3ZpZGVvID0gbnVsbHB0cjsKICAgaWYgKGNvbmZfLnNjZW5h
cmlvLnJldHVybl90cmFmZmljKSB7Ci0gICAgYm9iX3ZpZGVvID0gcy5DcmVhdGVWaWRlb1N0cmVh
bSgKLSAgICAgICAgYm9iLCB7cmV0X25ldH0sIGFsaWNlLCB7c2VuZF9uZXR9LCBbJl0oVmlkZW9T
dHJlYW1Db25maWcqIGMpIHsKKyAgICBib2JfdmlkZW8gPQorICAgICAgICBzLkNyZWF0ZVZpZGVv
U3RyZWFtKHJvdXRlLT5yZXZlcnNlKCksIFsmXShWaWRlb1N0cmVhbUNvbmZpZyogYykgewogICAg
ICAgICAgIGMtPmVuY29kZXIuZmFrZS5tYXhfcmF0ZSA9IERhdGFSYXRlOjprYnBzKDE4MDApOwog
ICAgICAgICB9KTsKLSAgICBzLkNyZWF0ZUF1ZGlvU3RyZWFtKGJvYiwge3JldF9uZXR9LCBhbGlj
ZSwge3NlbmRfbmV0fSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsmXShBdWRpb1N0cmVhbUNv
bmZpZyogYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZl8udHVuaW5nLnVz
ZV9iYnIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5zdHJlYW0uaW5fYmFuZHdp
ZHRoX2VzdGltYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmVu
Y29kZXIuZml4ZWRfcmF0ZSA9IERhdGFSYXRlOjprYnBzKDMxKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgcy5DcmVhdGVBdWRp
b1N0cmVhbShyb3V0ZS0+cmV2ZXJzZSgpLCBbJl0oQXVkaW9TdHJlYW1Db25maWcqIGMpIHsKKyAg
ICAgIGlmIChjb25mXy50dW5pbmcudXNlX2JicikgeworICAgICAgICBjLT5zdHJlYW0uaW5fYmFu
ZHdpZHRoX2VzdGltYXRpb24gPSB0cnVlOworICAgICAgICBjLT5lbmNvZGVyLmZpeGVkX3JhdGUg
PSBEYXRhUmF0ZTo6a2JwcygzMSk7CisgICAgICB9CisgICAgfSk7CiAgIH0KICAgQ3Jvc3NUcmFm
ZmljQ29uZmlnIGNyb3NzX2NvbmZpZzsKICAgY3Jvc3NfY29uZmlnLnBlYWtfcmF0ZSA9IGNvbmZf
LnNjZW5hcmlvLmNyb3NzX3RyYWZmaWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJp
by9zY2VuYXJpb191bml0dGVzdC5jYwppbmRleCAzMDVmODY2MGNjZDc0NGU5ZTdmNTYzZDhmMzNl
MmJmZGMyNGM4Y2UzLi45NzI4NWQzOTE0NTlmMmNmYzhjM2FmYzY2NWIzODFjODE1MWY3Y2MxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L3NjZW5hcmlvL3NjZW5hcmlvX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW9fdW5pdHRlc3QuY2MK
QEAgLTIxLDE0ICsyMSwxOSBAQCBURVNUKFNjZW5hcmlvVGVzdCwgU3RhcnRzQW5kU3RvcHNXaXRo
b3V0RXJyb3JzKSB7CiAgIE5ldHdvcmtOb2RlQ29uZmlnIG5ldHdvcmtfY29uZmlnOwogICBhdXRv
IGFsaWNlX25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUobmV0d29ya19jb25maWcpOwogICBh
dXRvIGJvYl9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKG5ldHdvcmtfY29uZmlnKTsKKyAg
YXV0byByb3V0ZSA9IHMuQ3JlYXRlUm91dGVzKGFsaWNlLCB7YWxpY2VfbmV0fSwgYm9iLCB7Ym9i
X25ldH0pOwogCiAgIFZpZGVvU3RyZWFtQ29uZmlnIHZpZGVvX3N0cmVhbV9jb25maWc7Ci0gIHMu
Q3JlYXRlVmlkZW9TdHJlYW0oYWxpY2UsIHthbGljZV9uZXR9LCBib2IsIHtib2JfbmV0fSwgdmlk
ZW9fc3RyZWFtX2NvbmZpZyk7Ci0gIHMuQ3JlYXRlVmlkZW9TdHJlYW0oYm9iLCB7Ym9iX25ldH0s
IGFsaWNlLCB7YWxpY2VfbmV0fSwgdmlkZW9fc3RyZWFtX2NvbmZpZyk7CisgIHMuQ3JlYXRlVmlk
ZW9TdHJlYW0ocm91dGUtPmZvcndhcmQoKSwgdmlkZW9fc3RyZWFtX2NvbmZpZyk7CisgIHMuQ3Jl
YXRlVmlkZW9TdHJlYW0ocm91dGUtPnJldmVyc2UoKSwgdmlkZW9fc3RyZWFtX2NvbmZpZyk7CiAK
ICAgQXVkaW9TdHJlYW1Db25maWcgYXVkaW9fc3RyZWFtX2NvbmZpZzsKLSAgcy5DcmVhdGVBdWRp
b1N0cmVhbShhbGljZSwge2FsaWNlX25ldH0sIGJvYiwge2JvYl9uZXR9LCBhdWRpb19zdHJlYW1f
Y29uZmlnKTsKLSAgcy5DcmVhdGVBdWRpb1N0cmVhbShib2IsIHtib2JfbmV0fSwgYWxpY2UsIHth
bGljZV9uZXR9LCBhdWRpb19zdHJlYW1fY29uZmlnKTsKKyAgYXVkaW9fc3RyZWFtX2NvbmZpZy5l
bmNvZGVyLm1pbl9yYXRlID0gRGF0YVJhdGU6OmticHMoNik7CisgIGF1ZGlvX3N0cmVhbV9jb25m
aWcuZW5jb2Rlci5tYXhfcmF0ZSA9IERhdGFSYXRlOjprYnBzKDY0KTsKKyAgYXVkaW9fc3RyZWFt
X2NvbmZpZy5lbmNvZGVyLmFsbG9jYXRlX2JpdHJhdGUgPSB0cnVlOworICBhdWRpb19zdHJlYW1f
Y29uZmlnLnN0cmVhbS5pbl9iYW5kd2lkdGhfZXN0aW1hdGlvbiA9IGZhbHNlOworICBzLkNyZWF0
ZUF1ZGlvU3RyZWFtKHJvdXRlLT5mb3J3YXJkKCksIGF1ZGlvX3N0cmVhbV9jb25maWcpOworICBz
LkNyZWF0ZUF1ZGlvU3RyZWFtKHJvdXRlLT5yZXZlcnNlKCksIGF1ZGlvX3N0cmVhbV9jb25maWcp
OwogCiAgIENyb3NzVHJhZmZpY0NvbmZpZyBjcm9zc190cmFmZmljX2NvbmZpZzsKICAgcy5DcmVh
dGVDcm9zc1RyYWZmaWMoe2FsaWNlX25ldH0sIGNyb3NzX3RyYWZmaWNfY29uZmlnKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2Nl
bmFyaW8vc2ltdWxhdGVkX3RpbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NpbXVsYXRlZF90aW1lLmNjCmluZGV4IGYyOWE4MmM0
NTUwMjlmMjM5NjE0ZjNjMWVhYTQyZGNkMTZmOWIzMTMuLmE1OTc3ZTdkOTY1ZDIzNmU5OTU0ZTM4
MDFkZTRlMTQ1MWRjOTgxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2ltdWxhdGVkX3RpbWUuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zaW11
bGF0ZWRfdGltZS5jYwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRyYW5zcG9ydFBhY2tldHNGZWVkYmFj
ayBTaW11bGF0ZWRTZW5kZXI6OlB1bGxGZWVkYmFja1JlcG9ydCgKICAgICAgICAgfQogICAgICAg
fQogCi0gICAgICBkYXRhX2luX2ZsaWdodF8gLT0gZmVlZGJhY2suc2VudF9wYWNrZXQtPnNpemU7
CisgICAgICBkYXRhX2luX2ZsaWdodF8gLT0gZmVlZGJhY2suc2VudF9wYWNrZXQuc2l6ZTsKICAg
ICAgIHJlcG9ydC5wYWNrZXRfZmVlZGJhY2tzLnB1c2hfYmFjayhmZWVkYmFjayk7CiAgICAgfQog
ICB9CkBAIC0yNTIsMTEgKzI1MiwxMiBAQCBTaW11bGF0ZWRUaW1lQ2xpZW50OjpTaW11bGF0ZWRU
aW1lQ2xpZW50KAogICAgICAgcmV0dXJuX2xpbmtfKHJldHVybl9saW5rKSwKICAgICAgIHNlbmRl
cl8oc2VuZF9saW5rLmZyb250KCksIHNlbmRfcmVjZWl2ZXJfaWQpLAogICAgICAgZmVlZGJhY2tf
KGNvbmZpZywgcmV0dXJuX3JlY2VpdmVyX2lkLCByZXR1cm5fbGluay5mcm9udCgpKSB7CisgIGN1
cnJlbnRfY29udHJhaW50c18uYXRfdGltZSA9IGF0X3RpbWU7CisgIGN1cnJlbnRfY29udHJhaW50
c18uc3RhcnRpbmdfcmF0ZSA9IGNvbmZpZy50cmFuc3BvcnQucmF0ZXMuc3RhcnRfcmF0ZTsKKyAg
Y3VycmVudF9jb250cmFpbnRzXy5taW5fZGF0YV9yYXRlID0gY29uZmlnLnRyYW5zcG9ydC5yYXRl
cy5taW5fcmF0ZTsKKyAgY3VycmVudF9jb250cmFpbnRzXy5tYXhfZGF0YV9yYXRlID0gY29uZmln
LnRyYW5zcG9ydC5yYXRlcy5tYXhfcmF0ZTsKICAgTmV0d29ya0NvbnRyb2xsZXJDb25maWcgaW5p
dGlhbF9jb25maWc7Ci0gIGluaXRpYWxfY29uZmlnLmNvbnN0cmFpbnRzLmF0X3RpbWUgPSBhdF90
aW1lOwotICBpbml0aWFsX2NvbmZpZy5jb25zdHJhaW50cy5zdGFydGluZ19yYXRlID0gY29uZmln
LnRyYW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlOwotICBpbml0aWFsX2NvbmZpZy5jb25zdHJhaW50
cy5taW5fZGF0YV9yYXRlID0gY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5taW5fcmF0ZTsKLSAgaW5p
dGlhbF9jb25maWcuY29uc3RyYWludHMubWF4X2RhdGFfcmF0ZSA9IGNvbmZpZy50cmFuc3BvcnQu
cmF0ZXMubWF4X3JhdGU7CisgIGluaXRpYWxfY29uZmlnLmNvbnN0cmFpbnRzID0gY3VycmVudF9j
b250cmFpbnRzXzsKICAgY29uZ2VzdGlvbl9jb250cm9sbGVyXyA9IG5ldHdvcmtfY29udHJvbGxl
cl9mYWN0b3J5Xy5DcmVhdGUoaW5pdGlhbF9jb25maWcpOwogICBmb3IgKGF1dG8mIHN0cmVhbV9j
b25maWcgOiBzdHJlYW1fY29uZmlncykKICAgICBwYWNrZXRfc3RyZWFtc18uZW1wbGFjZV9iYWNr
KG5ldyBQYWNrZXRTdHJlYW0oc3RyZWFtX2NvbmZpZykpOwpAQCAtMjgzLDkgKzI4NCw5IEBAIGJv
b2wgU2ltdWxhdGVkVGltZUNsaWVudDo6VHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldyaXRl
QnVmZmVyIHJhd19idWZmZXIsCiAgIGZvciAoUGFja2V0UmVzdWx0JiBmZWVkYmFjayA6IHJlcG9y
dC5wYWNrZXRfZmVlZGJhY2tzKSB7CiAgICAgaWYgKHBhY2tldF9sb2dfKQogICAgICAgZnByaW50
ZihwYWNrZXRfbG9nXywgIiUiIFBSSWQ2NCAiICUiIFBSSWQ2NCAiICUuM2xmICUuM2xmICUuM2xm
XG4iLAotICAgICAgICAgICAgICBmZWVkYmFjay5zZW50X3BhY2tldC0+c2VxdWVuY2VfbnVtYmVy
LAotICAgICAgICAgICAgICBmZWVkYmFjay5zZW50X3BhY2tldC0+c2l6ZS5ieXRlcygpLAotICAg
ICAgICAgICAgICBmZWVkYmFjay5zZW50X3BhY2tldC0+c2VuZF90aW1lLnNlY29uZHM8ZG91Ymxl
PigpLAorICAgICAgICAgICAgICBmZWVkYmFjay5zZW50X3BhY2tldC5zZXF1ZW5jZV9udW1iZXIs
CisgICAgICAgICAgICAgIGZlZWRiYWNrLnNlbnRfcGFja2V0LnNpemUuYnl0ZXMoKSwKKyAgICAg
ICAgICAgICAgZmVlZGJhY2suc2VudF9wYWNrZXQuc2VuZF90aW1lLnNlY29uZHM8ZG91YmxlPigp
LAogICAgICAgICAgICAgICBmZWVkYmFjay5yZWNlaXZlX3RpbWUuc2Vjb25kczxkb3VibGU+KCks
CiAgICAgICAgICAgICAgIGF0X3RpbWUuc2Vjb25kczxkb3VibGU+KCkpOwogICB9CkBAIC0zMDcs
NiArMzA4LDcgQEAgdm9pZCBTaW11bGF0ZWRUaW1lQ2xpZW50OjpVcGRhdGUoTmV0d29ya0NvbnRy
b2xVcGRhdGUgdXBkYXRlKSB7CiAgICAgRGF0YVJhdGUgcmF0ZV9wZXJfc3RyZWFtID0KICAgICAg
ICAgdXBkYXRlLnRhcmdldF9yYXRlLT50YXJnZXRfcmF0ZSAqIHJhdGlvX3Blcl9zdHJlYW07CiAg
ICAgdGFyZ2V0X3JhdGVfID0gdXBkYXRlLnRhcmdldF9yYXRlLT50YXJnZXRfcmF0ZTsKKyAgICBs
aW5rX2NhcGFjaXR5XyA9IHVwZGF0ZS50YXJnZXRfcmF0ZS0+bmV0d29ya19lc3RpbWF0ZS5iYW5k
d2lkdGg7CiAgICAgZm9yIChhdXRvJiBzdHJlYW0gOiBwYWNrZXRfc3RyZWFtc18pCiAgICAgICBz
dHJlYW0tPk9uVGFyZ2V0UmF0ZVVwZGF0ZShyYXRlX3Blcl9zdHJlYW0pOwogICB9CkBAIC0zMzYs
MTAgKzMzOCwyMiBAQCB2b2lkIFNpbXVsYXRlZFRpbWVDbGllbnQ6OlByb2Nlc3NGcmFtZXMoVGlt
ZXN0YW1wIGF0X3RpbWUpIHsKICAgfQogfQogCit2b2lkIFNpbXVsYXRlZFRpbWVDbGllbnQ6OlRy
aWdnZXJGYWtlUmVyb3V0ZShUaW1lc3RhbXAgYXRfdGltZSkgeworICBOZXR3b3JrUm91dGVDaGFu
Z2UgbXNnOworICBtc2cuYXRfdGltZSA9IGF0X3RpbWU7CisgIG1zZy5jb25zdHJhaW50cyA9IGN1
cnJlbnRfY29udHJhaW50c187CisgIG1zZy5jb25zdHJhaW50cy5hdF90aW1lID0gYXRfdGltZTsK
KyAgVXBkYXRlKGNvbmdlc3Rpb25fY29udHJvbGxlcl8tPk9uTmV0d29ya1JvdXRlQ2hhbmdlKG1z
ZykpOworfQorCiBUaW1lRGVsdGEgU2ltdWxhdGVkVGltZUNsaWVudDo6R2V0TmV0d29ya0NvbnRy
b2xsZXJQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdCB7CiAgIHJldHVybiBuZXR3b3JrX2NvbnRyb2xs
ZXJfZmFjdG9yeV8uR2V0UHJvY2Vzc0ludGVydmFsKCk7CiB9CiAKK0RhdGFSYXRlIFNpbXVsYXRl
ZFRpbWVDbGllbnQ6OmxpbmtfY2FwYWNpdHkoKSBjb25zdCB7CisgIHJldHVybiBsaW5rX2NhcGFj
aXR5XzsKK30KKwogZG91YmxlIFNpbXVsYXRlZFRpbWVDbGllbnQ6OnRhcmdldF9yYXRlX2ticHMo
KSBjb25zdCB7CiAgIHJldHVybiB0YXJnZXRfcmF0ZV8ua2Jwczxkb3VibGU+KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Nj
ZW5hcmlvL3NpbXVsYXRlZF90aW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NpbXVsYXRlZF90aW1lLmgKaW5kZXggYjljNmRlMTI0
ZDQxZjVkNTNhYmU5MjgxOWI1ZWE2NWRkNDEyYmQ0Yi4uNzlmZGY4NDU3MzZkMjZhNDQyZjE3ZTFi
NjJjNjgwMjg5ZTMwZDU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zaW11bGF0ZWRfdGltZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2ltdWxh
dGVkX3RpbWUuaApAQCAtMTI5LDggKzEyOSwxMCBAQCBjbGFzcyBTaW11bGF0ZWRUaW1lQ2xpZW50
IDogTmV0d29ya1JlY2VpdmVySW50ZXJmYWNlIHsKICAgdm9pZCBDb25nZXN0aW9uUHJvY2VzcyhU
aW1lc3RhbXAgYXRfdGltZSk7CiAgIHZvaWQgUGFjZXJQcm9jZXNzKFRpbWVzdGFtcCBhdF90aW1l
KTsKICAgdm9pZCBQcm9jZXNzRnJhbWVzKFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgdm9pZCBUcmln
Z2VyRmFrZVJlcm91dGUoVGltZXN0YW1wIGF0X3RpbWUpOwogICBUaW1lRGVsdGEgR2V0TmV0d29y
a0NvbnRyb2xsZXJQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdDsKICAgZG91YmxlIHRhcmdldF9yYXRl
X2ticHMoKSBjb25zdDsKKyAgRGF0YVJhdGUgbGlua19jYXBhY2l0eSgpIGNvbnN0OwogCiAgIGJv
b2wgVHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlY2VpdmVyLApAQCAtMTQ0LDcgKzE0Niw5IEBA
IGNsYXNzIFNpbXVsYXRlZFRpbWVDbGllbnQgOiBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2Ugewog
ICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rXzsKICAgU2ltdWxhdGVkU2Vu
ZGVyIHNlbmRlcl87CiAgIFNpbXVsYXRlZEZlZWRiYWNrIGZlZWRiYWNrXzsKKyAgVGFyZ2V0UmF0
ZUNvbnN0cmFpbnRzIGN1cnJlbnRfY29udHJhaW50c187CiAgIERhdGFSYXRlIHRhcmdldF9yYXRl
XyA9IERhdGFSYXRlOjpJbmZpbml0eSgpOworICBEYXRhUmF0ZSBsaW5rX2NhcGFjaXR5XyA9IERh
dGFSYXRlOjpJbmZpbml0eSgpOwogICBGSUxFKiBwYWNrZXRfbG9nXyA9IG51bGxwdHI7CiAKICAg
c3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBhY2tldFN0cmVhbT4+IHBhY2tldF9zdHJlYW1z
XzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3Qvc2NlbmFyaW8vdmlkZW9fc3RyZWFtLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby92aWRlb19zdHJlYW0uY2MKaW5kZXggYjg1
MDM0ZmZiMjAyMjMzMDJiNjkyMzIzNThhZWIzNTk3YmRmZDAzYy4uMzYzOTkyMzRhZGNhZjk4ZDJh
YjZjNDY4MTg2MTRiM2Y1ZGQ2YzFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby92aWRlb19zdHJlYW0uY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby92
aWRlb19zdHJlYW0uY2MKQEAgLTEyLDEzICsxMiwxNCBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25f
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlk
ZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVk
aWFjb25zdGFudHMuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxkZWNvZGVyZmFj
dG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGVuY29kZXJmYWN0b3J5Lmgi
CiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lLmgiCiAjaW5jbHVkZSAi
dGVzdC9jYWxsX3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L2Zha2VfZW5jb2Rlci5oIgotI2luY2x1
ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVz
dC9zY2VuYXJpby9oYXJkd2FyZV9jb2RlY3MuaCIKICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0
L2ZpbGV1dGlscy5oIgogCkBAIC0xMzEsMTEgKzEzMiwyMCBAQCBWaWRlb0VuY29kZXJDb25maWcg
Q3JlYXRlVmlkZW9FbmNvZGVyQ29uZmlnKFZpZGVvU3RyZWFtQ29uZmlnIGNvbmZpZykgewogICBz
aXplX3QgbnVtX3N0cmVhbXMgPSBjb25maWcuZW5jb2Rlci5udW1fc2ltdWxjYXN0X3N0cmVhbXM7
CiAgIFZpZGVvRW5jb2RlckNvbmZpZyBlbmNvZGVyX2NvbmZpZzsKICAgZW5jb2Rlcl9jb25maWcu
Y29kZWNfdHlwZSA9IGNvbmZpZy5lbmNvZGVyLmNvZGVjOwotICBlbmNvZGVyX2NvbmZpZy5jb250
ZW50X3R5cGUgPSBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprUmVhbHRpbWVWaWRl
bzsKKyAgc3dpdGNoIChjb25maWcuc291cmNlLmNvbnRlbnRfdHlwZSkgeworICAgIGNhc2UgVmlk
ZW9TdHJlYW1Db25maWc6OlNvdXJjZTo6Q29udGVudFR5cGU6OmtWaWRlbzoKKyAgICAgIGVuY29k
ZXJfY29uZmlnLmNvbnRlbnRfdHlwZSA9CisgICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpD
b250ZW50VHlwZTo6a1JlYWx0aW1lVmlkZW87CisgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVv
U3RyZWFtQ29uZmlnOjpTb3VyY2U6OkNvbnRlbnRUeXBlOjprU2NyZWVuOgorICAgICAgZW5jb2Rl
cl9jb25maWcuY29udGVudF90eXBlID0gVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6
a1NjcmVlbjsKKyAgICAgIGJyZWFrOworICB9CiAgIGVuY29kZXJfY29uZmlnLnZpZGVvX2Zvcm1h
dCA9CiAgICAgICBTZHBWaWRlb0Zvcm1hdChDb2RlY1R5cGVUb1BheWxvYWRTdHJpbmcoY29uZmln
LmVuY29kZXIuY29kZWMpLCB7fSk7CiAgIGVuY29kZXJfY29uZmlnLm51bWJlcl9vZl9zdHJlYW1z
ID0gbnVtX3N0cmVhbXM7CiAgIGVuY29kZXJfY29uZmlnLnNpbXVsY2FzdF9sYXllcnMgPSBzdGQ6
OnZlY3RvcjxWaWRlb1N0cmVhbT4obnVtX3N0cmVhbXMpOworICBlbmNvZGVyX2NvbmZpZy5taW5f
dHJhbnNtaXRfYml0cmF0ZV9icHMgPSBjb25maWcuc3RyZWFtLnBhZF90b19yYXRlLmJwcygpOwog
CiAgIHN0ZDo6c3RyaW5nIGNyaWNrZXRfY29kZWMgPSBDb2RlY1R5cGVUb0NvZGVjTmFtZShjb25m
aWcuZW5jb2Rlci5jb2RlYyk7CiAgIGlmICghY3JpY2tldF9jb2RlYy5lbXB0eSgpKSB7CkBAIC0x
NTMsNiArMTYzLDEyIEBAIFZpZGVvRW5jb2RlckNvbmZpZyBDcmVhdGVWaWRlb0VuY29kZXJDb25m
aWcoVmlkZW9TdHJlYW1Db25maWcgY29uZmlnKSB7CiAgIH0KICAgZW5jb2Rlcl9jb25maWcuZW5j
b2Rlcl9zcGVjaWZpY19zZXR0aW5ncyA9CiAgICAgICBDcmVhdGVFbmNvZGVyU3BlY2lmaWNTZXR0
aW5ncyhjb25maWcpOworICBpZiAoY29uZmlnLmVuY29kZXIubWF4X2ZyYW1lcmF0ZSkgeworICAg
IGZvciAoYXV0byYgbGF5ZXIgOiBlbmNvZGVyX2NvbmZpZy5zaW11bGNhc3RfbGF5ZXJzKSB7Cisg
ICAgICBsYXllci5tYXhfZnJhbWVyYXRlID0gKmNvbmZpZy5lbmNvZGVyLm1heF9mcmFtZXJhdGU7
CisgICAgfQorICB9CisKICAgcmV0dXJuIGVuY29kZXJfY29uZmlnOwogfQogfSAgLy8gbmFtZXNw
YWNlCkBAIC0xOTMsMTEgKzIwOSwxMyBAQCBTZW5kVmlkZW9TdHJlYW06OlNlbmRWaWRlb1N0cmVh
bShDYWxsQ2xpZW50KiBzZW5kZXIsCiAgICAgY2FzZSBFbmNvZGVyOjpJbXBsZW1lbnRhdGlvbjo6
a0Zha2U6CiAgICAgICBpZiAoY29uZmlnLmVuY29kZXIuY29kZWMgPT0gQ29kZWM6OmtWaWRlb0Nv
ZGVjR2VuZXJpYykgewogICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfID0KLSAgICAgICAgICAgIGFi
c2w6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uVmlkZW9FbmNvZGVyRmFjdG9yeT4oW3RoaXMsIGNvbmZp
Z10oKSB7CisgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGdW5jdGlvblZpZGVvRW5jb2Rl
ckZhY3Rvcnk+KFt0aGlzXSgpIHsKKyAgICAgICAgICAgICAgcnRjOjpDcml0U2NvcGUgY3MoJmNy
aXRfKTsKICAgICAgICAgICAgICAgYXV0byBlbmNvZGVyID0KICAgICAgICAgICAgICAgICAgIGFi
c2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkZha2VFbmNvZGVyPihzZW5kZXJfLT5jbG9ja18pOwotICAg
ICAgICAgICAgICBpZiAoY29uZmlnLmVuY29kZXIuZmFrZS5tYXhfcmF0ZS5Jc0Zpbml0ZSgpKQot
ICAgICAgICAgICAgICAgIGVuY29kZXItPlNldE1heEJpdHJhdGUoY29uZmlnLmVuY29kZXIuZmFr
ZS5tYXhfcmF0ZS5rYnBzKCkpOworICAgICAgICAgICAgICBmYWtlX2VuY29kZXJzXy5wdXNoX2Jh
Y2soZW5jb2Rlci5nZXQoKSk7CisgICAgICAgICAgICAgIGlmIChjb25maWdfLmVuY29kZXIuZmFr
ZS5tYXhfcmF0ZS5Jc0Zpbml0ZSgpKQorICAgICAgICAgICAgICAgIGVuY29kZXItPlNldE1heEJp
dHJhdGUoY29uZmlnXy5lbmNvZGVyLmZha2UubWF4X3JhdGUua2JwcygpKTsKICAgICAgICAgICAg
ICAgcmV0dXJuIGVuY29kZXI7CiAgICAgICAgICAgICB9KTsKICAgICAgIH0gZWxzZSB7CkBAIC0y
MTMsOSArMjMxLDE1IEBAIFNlbmRWaWRlb1N0cmVhbTo6U2VuZFZpZGVvU3RyZWFtKENhbGxDbGll
bnQqIHNlbmRlciwKICAgfQogICBSVENfQ0hFQ0soZW5jb2Rlcl9mYWN0b3J5Xyk7CiAKKyAgYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8gPSBDcmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2Nh
dG9yRmFjdG9yeSgpOworICBSVENfQ0hFQ0soYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8pOwor
CiAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnIHNlbmRfY29uZmlnID0KICAgICAgIENyZWF0ZVZp
ZGVvU2VuZFN0cmVhbUNvbmZpZyhjb25maWcsIHNzcmNzXywgc2VuZF90cmFuc3BvcnQpOwogICBz
ZW5kX2NvbmZpZy5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9IGVuY29kZXJfZmFj
dG9yeV8uZ2V0KCk7CisgIHNlbmRfY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeSA9CisgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKTsK
KwogICBWaWRlb0VuY29kZXJDb25maWcgZW5jb2Rlcl9jb25maWcgPSBDcmVhdGVWaWRlb0VuY29k
ZXJDb25maWcoY29uZmlnKTsKIAogICBzZW5kX3N0cmVhbV8gPSBzZW5kZXJfLT5jYWxsXy0+Q3Jl
YXRlVmlkZW9TZW5kU3RyZWFtKApAQCAtMjMyLDI5ICsyNTYsMzQgQEAgU2VuZFZpZGVvU3RyZWFt
Ojp+U2VuZFZpZGVvU3RyZWFtKCkgewogdm9pZCBTZW5kVmlkZW9TdHJlYW06OlN0YXJ0KCkgewog
ICBzZW5kX3N0cmVhbV8tPlN0YXJ0KCk7CiAgIHZpZGVvX2NhcHR1cmVyXy0+U3RhcnQoKTsKKyAg
c2VuZGVyXy0+Y2FsbF8tPlNpZ25hbENoYW5uZWxOZXR3b3JrU3RhdGUoTWVkaWFUeXBlOjpWSURF
Tywga05ldHdvcmtVcCk7CiB9CiAKLWJvb2wgU2VuZFZpZGVvU3RyZWFtOjpUcnlEZWxpdmVyUGFj
a2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSkgewotICAvLyBSZW1vdmVzIGFk
ZGVkIG92ZXJoZWFkIGJlZm9yZSBkZWxpdmVyaW5nIFJUQ1AgcGFja2V0IHRvIHNlbmRlci4KLSAg
UlRDX0RDSEVDS19HRShwYWNrZXQuc2l6ZSgpLCBjb25maWdfLnN0cmVhbS5wYWNrZXRfb3Zlcmhl
YWQuYnl0ZXMoKSk7Ci0gIHBhY2tldC5TZXRTaXplKHBhY2tldC5zaXplKCkgLSBjb25maWdfLnN0
cmVhbS5wYWNrZXRfb3ZlcmhlYWQuYnl0ZXMoKSk7Ci0gIHNlbmRlcl8tPkRlbGl2ZXJQYWNrZXQo
TWVkaWFUeXBlOjpWSURFTywgcGFja2V0LCBhdF90aW1lKTsKLSAgcmV0dXJuIHRydWU7Cit2b2lk
IFNlbmRWaWRlb1N0cmVhbTo6VXBkYXRlQ29uZmlnKAorICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChW
aWRlb1N0cmVhbUNvbmZpZyopPiBtb2RpZmllcikgeworICBydGM6OkNyaXRTY29wZSBjcygmY3Jp
dF8pOworICBWaWRlb1N0cmVhbUNvbmZpZyBwcmlvcl9jb25maWcgPSBjb25maWdfOworICBtb2Rp
ZmllcigmY29uZmlnXyk7CisgIGlmIChwcmlvcl9jb25maWcuZW5jb2Rlci5mYWtlLm1heF9yYXRl
ICE9IGNvbmZpZ18uZW5jb2Rlci5mYWtlLm1heF9yYXRlKSB7CisgICAgZm9yIChhdXRvKiBlbmNv
ZGVyIDogZmFrZV9lbmNvZGVyc18pIHsKKyAgICAgIGVuY29kZXItPlNldE1heEJpdHJhdGUoY29u
ZmlnXy5lbmNvZGVyLmZha2UubWF4X3JhdGUua2JwcygpKTsKKyAgICB9CisgIH0KKyAgLy8gVE9E
TyhzcnRlKTogQWRkIG1vcmUgY29uZGl0aW9ucyB0aGF0IHNob3VsZCBjYXVzZSByZWNvbmZpZ3Vy
YXRpb24uCisgIGlmIChwcmlvcl9jb25maWcuZW5jb2Rlci5tYXhfZnJhbWVyYXRlICE9IGNvbmZp
Z18uZW5jb2Rlci5tYXhfZnJhbWVyYXRlKSB7CisgICAgVmlkZW9FbmNvZGVyQ29uZmlnIGVuY29k
ZXJfY29uZmlnID0gQ3JlYXRlVmlkZW9FbmNvZGVyQ29uZmlnKGNvbmZpZ18pOworICAgIHNlbmRf
c3RyZWFtXy0+UmVjb25maWd1cmVWaWRlb0VuY29kZXIoc3RkOjptb3ZlKGVuY29kZXJfY29uZmln
KSk7CisgIH0KKyAgaWYgKHByaW9yX2NvbmZpZy5zb3VyY2UuZnJhbWVyYXRlICE9IGNvbmZpZ18u
c291cmNlLmZyYW1lcmF0ZSkgeworICAgIFNldENhcHR1cmVGcmFtZXJhdGUoY29uZmlnXy5zb3Vy
Y2UuZnJhbWVyYXRlKTsKKyAgfQogfQogCiB2b2lkIFNlbmRWaWRlb1N0cmVhbTo6U2V0Q2FwdHVy
ZUZyYW1lcmF0ZShpbnQgZnJhbWVyYXRlKSB7CiAgIFJUQ19DSEVDSyhmcmFtZV9nZW5lcmF0b3Jf
KQogICAgICAgPDwgIkZyYW1lcmF0ZSBjaGFuZ2Ugb25seSBpbXBsZW1lbnRlZCBmb3IgZ2VuZXJh
dG9ycyI7CiAgIGZyYW1lX2dlbmVyYXRvcl8tPkNoYW5nZUZyYW1lcmF0ZShmcmFtZXJhdGUpOwot
fQogCi12b2lkIFNlbmRWaWRlb1N0cmVhbTo6U2V0TWF4RnJhbWVyYXRlKGFic2w6Om9wdGlvbmFs
PGludD4gbWF4X2ZyYW1lcmF0ZSkgewotICBWaWRlb0VuY29kZXJDb25maWcgZW5jb2Rlcl9jb25m
aWcgPSBDcmVhdGVWaWRlb0VuY29kZXJDb25maWcoY29uZmlnXyk7Ci0gIFJUQ19EQ0hFQ0tfRVEo
ZW5jb2Rlcl9jb25maWcuc2ltdWxjYXN0X2xheWVycy5zaXplKCksIDEpOwotICBlbmNvZGVyX2Nv
bmZpZy5zaW11bGNhc3RfbGF5ZXJzWzBdLm1heF9mcmFtZXJhdGUgPSBtYXhfZnJhbWVyYXRlLnZh
bHVlX29yKC0xKTsKLSAgc2VuZF9zdHJlYW1fLT5SZWNvbmZpZ3VyZVZpZGVvRW5jb2RlcihzdGQ6
Om1vdmUoZW5jb2Rlcl9jb25maWcpKTsKIH0KIAogVmlkZW9TZW5kU3RyZWFtOjpTdGF0cyBTZW5k
VmlkZW9TdHJlYW06OkdldFN0YXRzKCkgY29uc3QgewpAQCAtMjg0LDE1ICszMTMsMTQgQEAgUmVj
ZWl2ZVZpZGVvU3RyZWFtOjpSZWNlaXZlVmlkZW9TdHJlYW0oQ2FsbENsaWVudCogcmVjZWl2ZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kVmlkZW9TdHJlYW0q
IHNlbmRfc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGNob3Nlbl9zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUcmFuc3BvcnQqIGZlZWRiYWNrX3RyYW5zcG9ydCkKLSAgICA6IHJlY2VpdmVyXyhyZWNlaXZl
ciksCi0gICAgICBjb25maWdfKGNvbmZpZyksCi0gICAgICBkZWNvZGVyX2ZhY3RvcnlfKGFic2w6
Om1ha2VfdW5pcXVlPEludGVybmFsRGVjb2RlckZhY3Rvcnk+KCkpIHsKKyAgICA6IHJlY2VpdmVy
XyhyZWNlaXZlciksIGNvbmZpZ18oY29uZmlnKSB7CiAgIHJlbmRlcmVyXyA9IGFic2w6Om1ha2Vf
dW5pcXVlPEZha2VWaWRlb1JlbmRlcmVyPigpOwogICBWaWRlb1JlY2VpdmVTdHJlYW06OkNvbmZp
ZyByZWN2X2NvbmZpZyhmZWVkYmFja190cmFuc3BvcnQpOwogICByZWN2X2NvbmZpZy5ydHAucmVt
YiA9ICFjb25maWcuc3RyZWFtLnBhY2tldF9mZWVkYmFjazsKICAgcmVjdl9jb25maWcucnRwLnRy
YW5zcG9ydF9jYyA9IGNvbmZpZy5zdHJlYW0ucGFja2V0X2ZlZWRiYWNrOwogICByZWN2X2NvbmZp
Zy5ydHAubG9jYWxfc3NyYyA9IENhbGxUZXN0OjprUmVjZWl2ZXJMb2NhbFZpZGVvU3NyYzsKICAg
cmVjdl9jb25maWcucnRwLmV4dGVuc2lvbnMgPSBHZXRWaWRlb1J0cEV4dGVuc2lvbnMoY29uZmln
KTsKKyAgcmVjZWl2ZXJfLT5BZGRFeHRlbnNpb25zKHJlY3ZfY29uZmlnLnJ0cC5leHRlbnNpb25z
KTsKICAgUlRDX0RDSEVDSyghY29uZmlnLnN0cmVhbS51c2VfcnR4IHx8CiAgICAgICAgICAgICAg
Y29uZmlnLnN0cmVhbS5uYWNrX2hpc3RvcnlfdGltZSA+IFRpbWVEZWx0YTo6WmVybygpKTsKICAg
cmVjdl9jb25maWcucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgPSBjb25maWcuc3RyZWFtLm5hY2tf
aGlzdG9yeV90aW1lLm1zKCk7CkBAIC0zMDAsMTQgKzMyOCwyNCBAQCBSZWNlaXZlVmlkZW9TdHJl
YW06OlJlY2VpdmVWaWRlb1N0cmVhbShDYWxsQ2xpZW50KiByZWNlaXZlciwKICAgcmVjdl9jb25m
aWcucmVuZGVyZXIgPSByZW5kZXJlcl8uZ2V0KCk7CiAgIGlmIChjb25maWcuc3RyZWFtLnVzZV9y
dHgpIHsKICAgICByZWN2X2NvbmZpZy5ydHAucnR4X3NzcmMgPSBzZW5kX3N0cmVhbS0+cnR4X3Nz
cmNzX1tjaG9zZW5fc3RyZWFtXTsKKyAgICByZWNlaXZlci0+c3NyY19tZWRpYV90eXBlc19bcmVj
dl9jb25maWcucnRwLnJ0eF9zc3JjXSA9IE1lZGlhVHlwZTo6VklERU87CiAgICAgcmVjdl9jb25m
aWcucnRwCiAgICAgICAgIC5ydHhfYXNzb2NpYXRlZF9wYXlsb2FkX3R5cGVzW0NhbGxUZXN0Ojpr
U2VuZFJ0eFBheWxvYWRUeXBlXSA9CiAgICAgICAgIENvZGVjVHlwZVRvUGF5bG9hZFR5cGUoY29u
ZmlnLmVuY29kZXIuY29kZWMpOwogICB9CiAgIHJlY3ZfY29uZmlnLnJ0cC5yZW1vdGVfc3NyYyA9
IHNlbmRfc3RyZWFtLT5zc3Jjc19bY2hvc2VuX3N0cmVhbV07CisgIHJlY2VpdmVyLT5zc3JjX21l
ZGlhX3R5cGVzX1tyZWN2X2NvbmZpZy5ydHAucmVtb3RlX3NzcmNdID0gTWVkaWFUeXBlOjpWSURF
TzsKKwogICBWaWRlb1JlY2VpdmVTdHJlYW06OkRlY29kZXIgZGVjb2RlciA9CiAgICAgICBDcmVh
dGVNYXRjaGluZ0RlY29kZXIoQ29kZWNUeXBlVG9QYXlsb2FkVHlwZShjb25maWcuZW5jb2Rlci5j
b2RlYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZWNUeXBlVG9QYXlsb2FkU3Ry
aW5nKGNvbmZpZy5lbmNvZGVyLmNvZGVjKSk7CisgIGlmIChjb25maWcuZW5jb2Rlci5jb2RlYyA9
PQorICAgICAgVmlkZW9TdHJlYW1Db25maWc6OkVuY29kZXI6OkNvZGVjOjprVmlkZW9Db2RlY0dl
bmVyaWMpIHsKKyAgICBkZWNvZGVyX2ZhY3RvcnlfID0gYWJzbDo6bWFrZV91bmlxdWU8RnVuY3Rp
b25WaWRlb0RlY29kZXJGYWN0b3J5PigKKyAgICAgICAgW10oKSB7IHJldHVybiBhYnNsOjptYWtl
X3VuaXF1ZTxGYWtlRGVjb2Rlcj4oKTsgfSk7CisgIH0gZWxzZSB7CisgICAgZGVjb2Rlcl9mYWN0
b3J5XyA9IGFic2w6Om1ha2VfdW5pcXVlPEludGVybmFsRGVjb2RlckZhY3Rvcnk+KCk7CisgIH0K
ICAgZGVjb2Rlci5kZWNvZGVyX2ZhY3RvcnkgPSBkZWNvZGVyX2ZhY3RvcnlfLmdldCgpOwogICBy
ZWN2X2NvbmZpZy5kZWNvZGVycy5wdXNoX2JhY2soZGVjb2Rlcik7CiAKQEAgLTMxNiw2ICszNTQs
NyBAQCBSZWNlaXZlVmlkZW9TdHJlYW06OlJlY2VpdmVWaWRlb1N0cmVhbShDYWxsQ2xpZW50KiBy
ZWNlaXZlciwKICAgICBGbGV4ZmVjUmVjZWl2ZVN0cmVhbTo6Q29uZmlnIGZsZXhmZWNfY29uZmln
KGZlZWRiYWNrX3RyYW5zcG9ydCk7CiAgICAgZmxleGZlY19jb25maWcucGF5bG9hZF90eXBlID0g
Q2FsbFRlc3Q6OmtGbGV4ZmVjUGF5bG9hZFR5cGU7CiAgICAgZmxleGZlY19jb25maWcucmVtb3Rl
X3NzcmMgPSBDYWxsVGVzdDo6a0ZsZXhmZWNTZW5kU3NyYzsKKyAgICByZWNlaXZlci0+c3NyY19t
ZWRpYV90eXBlc19bZmxleGZlY19jb25maWcucmVtb3RlX3NzcmNdID0gTWVkaWFUeXBlOjpWSURF
TzsKICAgICBmbGV4ZmVjX2NvbmZpZy5wcm90ZWN0ZWRfbWVkaWFfc3NyY3MgPSBzZW5kX3N0cmVh
bS0+cnR4X3NzcmNzXzsKICAgICBmbGV4ZmVjX2NvbmZpZy5sb2NhbF9zc3JjID0gcmVjdl9jb25m
aWcucnRwLmxvY2FsX3NzcmM7CiAgICAgZmxlY2ZlY19zdHJlYW1fID0KQEAgLTMzNyw0NiArMzc2
LDIzIEBAIFJlY2VpdmVWaWRlb1N0cmVhbTo6flJlY2VpdmVWaWRlb1N0cmVhbSgpIHsKICAgICBy
ZWNlaXZlcl8tPmNhbGxfLT5EZXN0cm95RmxleGZlY1JlY2VpdmVTdHJlYW0oZmxlY2ZlY19zdHJl
YW1fKTsKIH0KIAotYm9vbCBSZWNlaXZlVmlkZW9TdHJlYW06OlRyeURlbGl2ZXJQYWNrZXQocnRj
OjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7Ci0gIFJUQ19EQ0hFQ0tfR0Uo
cGFja2V0LnNpemUoKSwgY29uZmlnXy5zdHJlYW0ucGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwot
ICBwYWNrZXQuU2V0U2l6ZShwYWNrZXQuc2l6ZSgpIC0gY29uZmlnXy5zdHJlYW0ucGFja2V0X292
ZXJoZWFkLmJ5dGVzKCkpOwotICByZWNlaXZlcl8tPkRlbGl2ZXJQYWNrZXQoTWVkaWFUeXBlOjpW
SURFTywgcGFja2V0LCBhdF90aW1lKTsKLSAgcmV0dXJuIHRydWU7Cit2b2lkIFJlY2VpdmVWaWRl
b1N0cmVhbTo6U3RhcnQoKSB7CisgIHJlY2VpdmVfc3RyZWFtXy0+U3RhcnQoKTsKKyAgcmVjZWl2
ZXJfLT5jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdvcmtTdGF0ZShNZWRpYVR5cGU6OlZJREVPLCBr
TmV0d29ya1VwKTsKIH0KIAogVmlkZW9TdHJlYW1QYWlyOjp+VmlkZW9TdHJlYW1QYWlyKCkgPSBk
ZWZhdWx0OwogCiBWaWRlb1N0cmVhbVBhaXI6OlZpZGVvU3RyZWFtUGFpcihDYWxsQ2xpZW50KiBz
ZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3
b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ2NF90IHNlbmRfcmVjZWl2ZXJfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50NjRfdCByZXR1cm5fcmVjZWl2ZXJfaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWcpCiAgICAgOiBj
b25maWdfKGNvbmZpZyksCi0gICAgICBzZW5kX2xpbmtfKHNlbmRfbGluayksCi0gICAgICByZXR1
cm5fbGlua18ocmV0dXJuX2xpbmspLAotICAgICAgc2VuZF90cmFuc3BvcnRfKHNlbmRlciwKLSAg
ICAgICAgICAgICAgICAgICAgICBzZW5kX2xpbmsuZnJvbnQoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICBzZW5kX3JlY2VpdmVyX2lkLAotICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zdHJl
YW0ucGFja2V0X292ZXJoZWFkKSwKLSAgICAgIHJldHVybl90cmFuc3BvcnRfKHJlY2VpdmVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2xpbmsuZnJvbnQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybl9yZWNlaXZlcl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbmZpZy5zdHJlYW0ucGFja2V0X292ZXJoZWFkKSwKLSAgICAgIHNlbmRfc3RyZWFtXyhzZW5k
ZXIsIGNvbmZpZywgJnNlbmRfdHJhbnNwb3J0XyksCisgICAgICBzZW5kX3N0cmVhbV8oc2VuZGVy
LCBjb25maWcsICZzZW5kZXItPnRyYW5zcG9ydF8pLAogICAgICAgcmVjZWl2ZV9zdHJlYW1fKHJl
Y2VpdmVyLAogICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywKICAgICAgICAgICAgICAgICAg
ICAgICAmc2VuZF9zdHJlYW1fLAogICAgICAgICAgICAgICAgICAgICAgIC8qY2hvc2VuX3N0cmVh
bT0qLzAsCi0gICAgICAgICAgICAgICAgICAgICAgJnJldHVybl90cmFuc3BvcnRfKSB7Ci0gIE5l
dHdvcmtOb2RlOjpSb3V0ZShzZW5kX3RyYW5zcG9ydF8uUmVjZWl2ZXJJZCgpLCBzZW5kX2xpbmtf
LAotICAgICAgICAgICAgICAgICAgICAgJnJlY2VpdmVfc3RyZWFtXyk7Ci0gIE5ldHdvcmtOb2Rl
OjpSb3V0ZShyZXR1cm5fdHJhbnNwb3J0Xy5SZWNlaXZlcklkKCksIHJldHVybl9saW5rXywKLSAg
ICAgICAgICAgICAgICAgICAgICZzZW5kX3N0cmVhbV8pOwotfQorICAgICAgICAgICAgICAgICAg
ICAgICZyZWNlaXZlci0+dHJhbnNwb3J0Xykge30KIAogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vdmlkZW9fc3RyZWFtLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3ZpZGVvX3N0
cmVhbS5oCmluZGV4IGU2Njk2MTgzYTdlYmQ1MDNjZmVlMDUyN2U3OGNhYzA0OGVjOWI2MDEuLmVi
ZjljOTUxYjcwNjkyMzU5NjUxODA1ODA2OGRjNjRiZWJjM2JkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vdmlkZW9f
c3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC9zY2VuYXJpby92aWRlb19zdHJlYW0uaApAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNs
dWRlICJ0ZXN0L2Zha2VfZW5jb2Rlci5oIgogI2luY2x1ZGUgInRlc3QvZnJhbWVfZ2VuZXJhdG9y
X2NhcHR1cmVyLmgiCiAjaW5jbHVkZSAidGVzdC9zY2VuYXJpby9jYWxsX2NsaWVudC5oIgogI2lu
Y2x1ZGUgInRlc3Qvc2NlbmFyaW8vY29sdW1uX3ByaW50ZXIuaCIKQEAgLTI1LDE1ICsyNiwxNSBA
QCBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIC8vIFNlbmRWaWRlb1N0cmVh
bSBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGNoYW5naW5nIHBhcmFtZXRlcnMgYW5kIHJldHJp
ZXZpbmcKIC8vIHN0YXRlcyBhdCBydW4gdGltZS4KLWNsYXNzIFNlbmRWaWRlb1N0cmVhbSA6IHB1
YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgeworY2xhc3MgU2VuZFZpZGVvU3RyZWFtIHsK
ICBwdWJsaWM6CiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2VuZFZpZGVvU3RyZWFt
KTsKICAgflNlbmRWaWRlb1N0cmVhbSgpOwogICB2b2lkIFNldENhcHR1cmVGcmFtZXJhdGUoaW50
IGZyYW1lcmF0ZSk7Ci0gIHZvaWQgU2V0TWF4RnJhbWVyYXRlKGFic2w6Om9wdGlvbmFsPGludD4g
bWF4X2ZyYW1lcmF0ZSk7CiAgIFZpZGVvU2VuZFN0cmVhbTo6U3RhdHMgR2V0U3RhdHMoKSBjb25z
dDsKICAgQ29sdW1uUHJpbnRlciBTdGF0c1ByaW50ZXIoKTsKICAgdm9pZCBTdGFydCgpOworICB2
b2lkIFVwZGF0ZUNvbmZpZyhzdGQ6OmZ1bmN0aW9uPHZvaWQoVmlkZW9TdHJlYW1Db25maWcqKT4g
bW9kaWZpZXIpOwogCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFNjZW5hcmlvOwpAQCAtNDMs
MjUgKzQ0LDI4IEBAIGNsYXNzIFNlbmRWaWRlb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2
ZXJJbnRlcmZhY2UgewogICBTZW5kVmlkZW9TdHJlYW0oQ2FsbENsaWVudCogc2VuZGVyLAogICAg
ICAgICAgICAgICAgICAgVmlkZW9TdHJlYW1Db25maWcgY29uZmlnLAogICAgICAgICAgICAgICAg
ICAgVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCk7Ci0gIGJvb2wgVHJ5RGVsaXZlclBhY2tldChy
dGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ2NF90IHJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3Rp
bWUpIG92ZXJyaWRlOwogCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfOwogICBzdGQ6OnZl
Y3Rvcjx1aW50MzJfdD4gc3NyY3NfOwogICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gcnR4X3NzcmNz
XzsKICAgVmlkZW9TZW5kU3RyZWFtKiBzZW5kX3N0cmVhbV8gPSBudWxscHRyOwogICBDYWxsQ2xp
ZW50KiBjb25zdCBzZW5kZXJfOwotICBjb25zdCBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWdfOwor
ICBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWdfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKICAgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IGVuY29kZXJfZmFjdG9yeV87CisgIHN0
ZDo6dmVjdG9yPHRlc3Q6OkZha2VFbmNvZGVyKj4gZmFrZV9lbmNvZGVyc18gUlRDX0dVQVJERURf
QlkoY3JpdF8pOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9y
eT4gYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV87CiAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0Vmlk
ZW9DYXB0dXJlcj4gdmlkZW9fY2FwdHVyZXJfOwogICBGcmFtZUdlbmVyYXRvckNhcHR1cmVyKiBm
cmFtZV9nZW5lcmF0b3JfID0gbnVsbHB0cjsKKyAgaW50IG5leHRfbG9jYWxfbmV0d29ya19pZF8g
PSAwOworICBpbnQgbmV4dF9yZW1vdGVfbmV0d29ya19pZF8gPSAwOwogfTsKIAogLy8gUmVjZWl2
ZVZpZGVvU3RyZWFtIHJlcHJlc2VudHMgYSB2aWRlbyByZWNlaXZlci4gSXQgY2FuJ3QgYmUgdXNl
ZCBkaXJlY3RseS4KLWNsYXNzIFJlY2VpdmVWaWRlb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVj
ZWl2ZXJJbnRlcmZhY2UgeworY2xhc3MgUmVjZWl2ZVZpZGVvU3RyZWFtIHsKICBwdWJsaWM6CiAg
IFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVjZWl2ZVZpZGVvU3RyZWFtKTsKICAgflJl
Y2VpdmVWaWRlb1N0cmVhbSgpOworICB2b2lkIFN0YXJ0KCk7CiAKICBwcml2YXRlOgogICBmcmll
bmQgY2xhc3MgU2NlbmFyaW87CkBAIC03MSw5ICs3NSw3IEBAIGNsYXNzIFJlY2VpdmVWaWRlb1N0
cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgewogICAgICAgICAgICAgICAg
ICAgICAgU2VuZFZpZGVvU3RyZWFtKiBzZW5kX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBjaG9zZW5fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgVHJhbnNwb3J0KiBm
ZWVkYmFja190cmFuc3BvcnQpOwotICBib29sIFRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25X
cml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNl
aXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSBvdmVycmlk
ZTsKKwogICBWaWRlb1JlY2VpdmVTdHJlYW0qIHJlY2VpdmVfc3RyZWFtXyA9IG51bGxwdHI7CiAg
IEZsZXhmZWNSZWNlaXZlU3RyZWFtKiBmbGVjZmVjX3N0cmVhbV8gPSBudWxscHRyOwogICBzdGQ6
OnVuaXF1ZV9wdHI8cnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPj4g
cmVuZGVyZXJfOwpAQCAtOTUsMTggKzk3LDEwIEBAIGNsYXNzIFZpZGVvU3RyZWFtUGFpciB7CiAg
cHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFNjZW5hcmlvOwogICBWaWRlb1N0cmVhbVBhaXIoQ2Fs
bENsaWVudCogc2VuZGVyLAotICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05v
ZGUqPiBzZW5kX2xpbmssCi0gICAgICAgICAgICAgICAgICB1aW50NjRfdCBzZW5kX3JlY2VpdmVy
X2lkLAogICAgICAgICAgICAgICAgICAgQ2FsbENsaWVudCogcmVjZWl2ZXIsCi0gICAgICAgICAg
ICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rLAotICAgICAgICAg
ICAgICAgICAgdWludDY0X3QgcmV0dXJuX3JlY2VpdmVyX2lkLAogICAgICAgICAgICAgICAgICAg
VmlkZW9TdHJlYW1Db25maWcgY29uZmlnKTsKIAogICBjb25zdCBWaWRlb1N0cmVhbUNvbmZpZyBj
b25maWdfOwotICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGlua187Ci0gIHN0ZDo6
dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmtfOwotICBOZXR3b3JrTm9kZVRyYW5zcG9y
dCBzZW5kX3RyYW5zcG9ydF87Ci0gIE5ldHdvcmtOb2RlVHJhbnNwb3J0IHJldHVybl90cmFuc3Bv
cnRfOwogCiAgIFNlbmRWaWRlb1N0cmVhbSBzZW5kX3N0cmVhbV87CiAgIFJlY2VpdmVWaWRlb1N0
cmVhbSByZWNlaXZlX3N0cmVhbV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NpbmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zaW5nbGVfdGhy
ZWFkZWRfdGFza19xdWV1ZS5jYwppbmRleCBhZDdhNTAzMjdiOTAwYmYyNTBhYjIzMTM4MTQzN2Vm
NmM1MmE5Mjg4Li41YzM1YzJlNDNiMDkzOWY5MTZjMjc4NDMxNDE2ODRkYzI5ODVlNDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Np
bmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2luZ2xlX3RocmVhZGVkX3Rhc2tfcXVldWUuY2MKQEAg
LTMyLDEwICszMiw3IEBAIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZzo6UXVldWVk
VGFzazo6flF1ZXVlZFRhc2soKSA9IGRlZmF1bHQ7CiAKIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVl
Rm9yVGVzdGluZzo6U2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nKAogICAgIGNvbnN0
IGNoYXIqIG5hbWUpCi0gICAgOiB0aHJlYWRfKFJ1biwgdGhpcywgbmFtZSksCi0gICAgICBydW5u
aW5nXyh0cnVlKSwKLSAgICAgIG5leHRfdGFza19pZF8oMCksCi0gICAgICB3YWtlX3VwXyhmYWxz
ZSwgZmFsc2UpIHsKKyAgICA6IHRocmVhZF8oUnVuLCB0aGlzLCBuYW1lKSwgcnVubmluZ18odHJ1
ZSksIG5leHRfdGFza19pZF8oMCkgewogICB0aHJlYWRfLlN0YXJ0KCk7CiB9CiAKQEAgLTgzLDcg
KzgwLDcgQEAgU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nOjpQb3N0RGVsYXllZFRh
c2soVGFzayB0YXNrLAogfQogCiB2b2lkIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGlu
Zzo6U2VuZFRhc2soVGFzayB0YXNrKSB7Ci0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxzZSk7
CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgUG9zdFRhc2soWyZ0YXNrLCAmZG9uZV0oKSB7CiAgICAg
dGFzaygpOwogICAgIGRvbmUuU2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NpbmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9zaW5nbGVfdGhyZWFkZWRfdGFza19xdWV1ZV91bml0dGVzdC5jYwppbmRleCAwODRmMGQ3ZThj
YmI4MjEyY2ZlMjcxNjUzMjA2NmJjOTVjZDMxMGMzLi4wNDk2MTY1MGM3NjBlMTRhYjJjYjQwNzg2
OGJmYTJlZGVhZTAzNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L3NpbmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlX3VuaXR0ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2lu
Z2xlX3RocmVhZGVkX3Rhc2tfcXVldWVfdW5pdHRlc3QuY2MKQEAgLTM3LDcgKzM3LDcgQEAgVEVT
VChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LCBFeGVjdXRlc1Bvc3RlZFRh
c2tzKSB7CiAgIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZyB0YXNrX3F1ZXVlKCJ0
YXNrX3F1ZXVlIik7CiAKICAgc3RkOjphdG9taWM8Ym9vbD4gZXhlY3V0ZWQoZmFsc2UpOwotICBy
dGM6OkV2ZW50IGRvbmUodHJ1ZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAKICAgdGFz
a19xdWV1ZS5Qb3N0VGFzayhbJmV4ZWN1dGVkLCAmZG9uZV0oKSB7CiAgICAgZXhlY3V0ZWQuc3Rv
cmUodHJ1ZSk7CkBAIC02MCwxNCArNjAsMTQgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1
ZUZvclRlc3RpbmdUZXN0LAogCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxydGM6OkV2
ZW50Pj4gZG9uZV9ldmVudHM7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga0NvdW50OyBpKysp
IHsKLSAgICBkb25lX2V2ZW50cy5lbXBsYWNlX2JhY2soYWJzbDo6bWFrZV91bmlxdWU8cnRjOjpF
dmVudD4oZmFsc2UsIGZhbHNlKSk7CisgICAgZG9uZV9ldmVudHMuZW1wbGFjZV9iYWNrKGFic2w6
Om1ha2VfdW5pcXVlPHJ0Yzo6RXZlbnQ+KCkpOwogICB9CiAKICAgLy8gVG8gYXZvaWQgdGhlIHRh
c2tzIHdoaWNoIGNvbXByaXNlIHRoZSBhY3R1YWwgdGVzdCBmcm9tIHJ1bm5pbmcgYmVmb3JlIHRo
ZXkKICAgLy8gaGF2ZSBhbGwgYmUgcG9zdGVkLCB3aGljaCBjb3VsZCByZXN1bHQgaW4gb25seSBv
bmUgdGFzayBldmVyIGJlaW5nIGluIHRoZQogICAvLyBxdWV1ZSBhdCBhbnkgZ2l2ZW4gdGltZSwg
cG9zdCBvbmUgd2FpdGluZyB0YXNrIHRoYXQgd291bGQgYmxvY2sgdGhlCiAgIC8vIHRhc2stcXVl
dWUsIGFuZCB1bmJsb2NrIG9ubHkgYWZ0ZXIgYWxsIHRhc2tzIGhhdmUgYmVlbiBwb3N0ZWQuCi0g
IHJ0Yzo6RXZlbnQgcmVuZGV6dm91cyh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgcmVuZGV6
dm91czsKICAgdGFza19xdWV1ZS5Qb3N0VGFzaygKICAgICAgIFsmcmVuZGV6dm91c10oKSB7IEFT
U0VSVF9UUlVFKHJlbmRlenZvdXMuV2FpdChrTWF4V2FpdFRpbWVNcykpOyB9KTsKIApAQCAtOTUs
NyArOTUsNyBAQCBURVNUKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIFBv
c3RUb1Rhc2tRdWV1ZUZyb21Pd25UaHJlYWQpIHsKICAgU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVG
b3JUZXN0aW5nIHRhc2tfcXVldWUoInRhc2tfcXVldWUiKTsKIAogICBzdGQ6OmF0b21pYzxib29s
PiBleGVjdXRlZChmYWxzZSk7Ci0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxzZSk7CisgIHJ0
Yzo6RXZlbnQgZG9uZTsKIAogICBhdXRvIGludGVybmFsbHlfcG9zdGVkX3Rhc2sgPSBbJmV4ZWN1
dGVkLCAmZG9uZV0oKSB7CiAgICAgZXhlY3V0ZWQuc3RvcmUodHJ1ZSk7CkBAIC0xMjQsNyArMTI0
LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LCBUYXNrc0V4
ZWN1dGVkSW5TZXF1ZW5jZSkgewogCiAgIC8vIFByZXZlbnQgdGhlIGNoYWluIGZyb20gYmVpbmcg
c2V0IGluIG1vdGlvbiBiZWZvcmUgd2UndmUgaGFkIHRpbWUgdG8KICAgLy8gc2NoZWR1bGUgaXQg
YWxsLCBsZXN0IHRoZSBxdWV1ZSBvbmx5IGNvbnRhaW4gb25lIHRhc2sgYXQgYSB0aW1lLgotICBy
dGM6OkV2ZW50IHJlbmRlenZvdXModHJ1ZSwgZmFsc2UpOworICBydGM6OkV2ZW50IHJlbmRlenZv
dXM7CiAgIHRhc2tfcXVldWUuUG9zdFRhc2soCiAgICAgICBbJnJlbmRlenZvdXNdKCkgeyBBU1NF
UlRfVFJVRShyZW5kZXp2b3VzLldhaXQoa01heFdhaXRUaW1lTXMpKTsgfSk7CiAKQEAgLTEzNiw3
ICsxMzYsNyBAQCBURVNUKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIFRh
c2tzRXhlY3V0ZWRJblNlcXVlbmNlKSB7CiAgIH0KIAogICAvLyBUaGUgdGVzdCB3aWxsIHdhaXQg
Zm9yIHRoZSB0YXNrLXF1ZXVlIHRvIGZpbmlzaC4KLSAgcnRjOjpFdmVudCBkb25lKHRydWUsIGZh
bHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICB0YXNrX3F1ZXVlLlBvc3RUYXNrKFsmZG9uZV0o
KSB7IGRvbmUuU2V0KCk7IH0pOwogCiAgIHJlbmRlenZvdXMuU2V0KCk7ICAvLyBTZXQgdGhlIGNo
YWluIGluIG1vdGlvbi4KQEAgLTE1MCw3ICsxNTAsNyBAQCBURVNUKFNpbmdsZVRocmVhZGVkVGFz
a1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIEV4ZWN1dGVzUG9zdGVkRGVsYXllZFRhc2spIHsKICAgU2lu
Z2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nIHRhc2tfcXVldWUoInRhc2tfcXVldWUiKTsK
IAogICBzdGQ6OmF0b21pYzxib29sPiBleGVjdXRlZChmYWxzZSk7Ci0gIHJ0Yzo6RXZlbnQgZG9u
ZSh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKIAogICBjb25zdGV4cHIgaW50NjRf
dCBkZWxheV9tcyA9IDIwOwogICBzdGF0aWNfYXNzZXJ0KGRlbGF5X21zIDwga01heFdhaXRUaW1l
TXMgLyAyLCAiRGVsYXkgdG9vIGxvbmcgZm9yIHRlc3RzLiIpOwpAQCAtMTc3LDcgKzE3Nyw3IEBA
IFRFU1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nVGVzdCwgRG9lc05vdEV4ZWN1
dGVEZWxheWVkVGFza1Rvb1Nvb24pIHsKICAgdGFza19xdWV1ZS5Qb3N0RGVsYXllZFRhc2soWyZl
eGVjdXRlZF0oKSB7IGV4ZWN1dGVkLnN0b3JlKHRydWUpOyB9LCBkZWxheV9tcyk7CiAKICAgLy8g
V2FpdCBsZXNzIHRoYW4gaXMgZW5vdWdoLCBtYWtlIHN1cmUgdGhlIHRhc2sgd2FzIG5vdCB5ZXQg
ZXhlY3V0ZWQuCi0gIHJ0Yzo6RXZlbnQgbm90X2RvbmUodHJ1ZSwgZmFsc2UpOworICBydGM6OkV2
ZW50IG5vdF9kb25lOwogICBBU1NFUlRfRkFMU0Uobm90X2RvbmUuV2FpdChkZWxheV9tcyAvIDIp
KTsKICAgRVhQRUNUX0ZBTFNFKGV4ZWN1dGVkLmxvYWQoKSk7CiB9CkBAIC0xOTUsNyArMTk1LDcg
QEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LAogICBzdGF0aWNf
YXNzZXJ0KGVhcmxpZXJfZGVsYXlfbXMgKyBsYXRlcl9kZWxheV9tcyA8IGtNYXhXYWl0VGltZU1z
IC8gMiwKICAgICAgICAgICAgICAgICAiRGVsYXkgdG9vIGxvbmcgZm9yIHRlc3RzLiIpOwogCi0g
IHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKIAogICBh
dXRvIGVhcmxpZXJfdGFzayA9IFsmZWFybGllcl9leGVjdXRlZCwgJmxhdGVyX2V4ZWN1dGVkXSgp
IHsKICAgICBFWFBFQ1RfRkFMU0UobGF0ZXJfZXhlY3V0ZWQubG9hZCgpKTsKQEAgLTIyOSw3ICsy
MjksNyBAQCBURVNUKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsCiAgIHN0
YXRpY19hc3NlcnQoZWFybGllcl9kZWxheV9tcyArIGxhdGVyX2RlbGF5X21zIDwga01heFdhaXRU
aW1lTXMgLyAyLAogICAgICAgICAgICAgICAgICJEZWxheSB0b28gbG9uZyBmb3IgdGVzdHMuIik7
CiAKLSAgcnRjOjpFdmVudCBkb25lKHRydWUsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwog
CiAgIGF1dG8gZWFybGllcl90YXNrID0gWyZlYXJsaWVyX2V4ZWN1dGVkLCAmbGF0ZXJfZXhlY3V0
ZWRdKCkgewogICAgIEVYUEVDVF9GQUxTRShsYXRlcl9leGVjdXRlZC5sb2FkKCkpOwpAQCAtMjUz
LDExICsyNTMsMTEgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0
LAogVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LCBFeHRlcm5hbFRo
cmVhZENhbmNlbHNUYXNrKSB7CiAgIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZyB0
YXNrX3F1ZXVlKCJ0YXNrX3F1ZXVlIik7CiAKLSAgcnRjOjpFdmVudCBkb25lKHRydWUsIGZhbHNl
KTsKKyAgcnRjOjpFdmVudCBkb25lOwogCiAgIC8vIFByZXZlbnQgdGhlIHRvLWJlLWNhbmNlbGxl
ZCB0YXNrIGZyb20gYmVpbmcgZXhlY3V0ZWQgYmVmb3JlIHdlJ3ZlIGhhZAogICAvLyB0aW1lIHRv
IGNhbmNlbCBpdC4KLSAgcnRjOjpFdmVudCByZW5kZXp2b3VzKHRydWUsIGZhbHNlKTsKKyAgcnRj
OjpFdmVudCByZW5kZXp2b3VzOwogICB0YXNrX3F1ZXVlLlBvc3RUYXNrKAogICAgICAgWyZyZW5k
ZXp2b3VzXSgpIHsgQVNTRVJUX1RSVUUocmVuZGV6dm91cy5XYWl0KGtNYXhXYWl0VGltZU1zKSk7
IH0pOwogCkBAIC0yNzksMTAgKzI3OSwxMCBAQCBURVNUKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVl
Rm9yVGVzdGluZ1Rlc3QsIEV4dGVybmFsVGhyZWFkQ2FuY2Vsc1Rhc2spIHsKIFRFU1QoU2luZ2xl
VGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nVGVzdCwgSW50ZXJuYWxUaHJlYWRDYW5jZWxzVGFz
aykgewogICBTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmcgdGFza19xdWV1ZSgidGFz
a19xdWV1ZSIpOwogCi0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZl
bnQgZG9uZTsKIAogICAvLyBQcmV2ZW50IHRoZSBjaGFpbiBmcm9tIGJlaW5nIHNldC1vZmYgYmVm
b3JlIHdlJ3ZlIHNldCBldmVyeXRoaW5nIHVwLgotICBydGM6OkV2ZW50IHJlbmRlenZvdXModHJ1
ZSwgZmFsc2UpOworICBydGM6OkV2ZW50IHJlbmRlenZvdXM7CiAgIHRhc2tfcXVldWUuUG9zdFRh
c2soCiAgICAgICBbJnJlbmRlenZvdXNdKCkgeyBBU1NFUlRfVFJVRShyZW5kZXp2b3VzLldhaXQo
a01heFdhaXRUaW1lTXMpKTsgfSk7CiAKQEAgLTMxNiw3ICszMTYsNyBAQCBURVNUKFNpbmdsZVRo
cmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIFNlbmRUYXNrKSB7CiAgIHRhc2tfcXVldWUu
U2VuZFRhc2soWyZleGVjdXRlZF0oKSB7CiAgICAgLy8gSW50ZW50aW9uYWxseSBkZWxheSwgc28g
dGhhdCBpZiBTZW5kVGFzayBkaWRuJ3QgYmxvY2ssIHRoZSBzZW5kZXIgdGhyZWFkCiAgICAgLy8g
d291bGQgaGF2ZSB0aW1lIHRvIHJlYWQgfGV4ZWN1dGVkfC4KLSAgICBydGM6OkV2ZW50IGRlbGF5
KHRydWUsIGZhbHNlKTsKKyAgICBydGM6OkV2ZW50IGRlbGF5OwogICAgIEFTU0VSVF9GQUxTRShk
ZWxheS5XYWl0KDEwMDApKTsKICAgICBleGVjdXRlZC5zdG9yZSh0cnVlKTsKICAgfSk7CkBAIC0z
MzUsNyArMzM1LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0
LAogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRhc2tzOyBpKyspIHsKICAgICB0YXNrX3F1ZXVl
LT5Qb3N0VGFzayhbJmNvdW50ZXJdKCkgewogICAgICAgc3RkOjphdG9taWNfZmV0Y2hfYWRkKCZj
b3VudGVyLCBzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKTsKLSAgICAgIHJ0Yzo6RXZlbnQgZGVsYXko
dHJ1ZSwgZmFsc2UpOworICAgICAgcnRjOjpFdmVudCBkZWxheTsKICAgICAgIEFTU0VSVF9GQUxT
RShkZWxheS5XYWl0KDUwMCkpOwogICAgIH0pOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RfbWFpbi5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9tYWluLmNjCmlu
ZGV4IGM4ZDBiMWI1ODRlNmE3NWM5NWYwNzZhNmRmNzVhN2MzMDllMDY1Y2YuLjFhMzExZjYzYzI3
OWNjOWI4ODI5ZGVjZmE5YjVjY2Q0MjkwMWFmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9tYWluLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9tYWluLmNjCkBA
IC04LDEyOSArOCwxNSBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKLSNpbmNsdWRlIDxmc3RyZWFtPgorI2lu
Y2x1ZGUgPG1lbW9yeT4KIAotI2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgotI2luY2x1
ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCi0jaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgotI2luY2x1ZGUgInRlc3QvZmllbGRfdHJp
YWwuaCIKLSNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC5oIgot
I2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCi0jaW5jbHVkZSAidGVzdC90
ZXN0c3VwcG9ydC9wZXJmX3Rlc3QuaCIKLQotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLSNpbmNs
dWRlICJydGNfYmFzZS93aW4zMnNvY2tldGluaXQuaCIKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChX
RUJSVENfSU9TKQotI2luY2x1ZGUgInRlc3QvaW9zL3Rlc3Rfc3VwcG9ydC5oIgotCi1ERUZJTkVf
c3RyaW5nKE5TVHJlYXRVbmtub3duQXJndW1lbnRzQXNPcGVuLAotICAgICAgICAgICAgICAiIiwK
LSAgICAgICAgICAgICAgIkludGVudGlvbmFsbHkgaWdub3JlZCBmbGFnIGludGVuZGVkIGZvciBp
T1Mgc2ltdWxhdG9yLiIpOwotREVGSU5FX3N0cmluZyhBcHBsZVBlcnNpc3RlbmNlSWdub3JlU3Rh
dGUsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiSW50ZW50aW9uYWxseSBpZ25v
cmVkIGZsYWcgaW50ZW5kZWQgZm9yIGlPUyBzaW11bGF0b3IuIik7Ci1ERUZJTkVfYm9vbCgKLSAg
ICBzYXZlX2NoYXJ0anNvbl9yZXN1bHQsCi0gICAgZmFsc2UsCi0gICAgIlN0b3JlIHRoZSBwZXJm
IHJlc3VsdHMgaW4gRG9jdW1lbnRzL3BlcmZfcmVzdWx0Lmpzb24gaW4gdGhlIGZvcm1hdCAiCi0g
ICAgImRlc2NyaWJlZCBieSAiCi0gICAgImh0dHBzOi8vZ2l0aHViLmNvbS9jYXRhcHVsdC1wcm9q
ZWN0L2NhdGFwdWx0L2Jsb2IvbWFzdGVyL2Rhc2hib2FyZC9kb2NzLyIKLSAgICAiZGF0YS1mb3Jt
YXQubWQuIik7Ci0KLSNlbHNlCi0KLURFRklORV9zdHJpbmcoCi0gICAgaXNvbGF0ZWRfc2NyaXB0
X3Rlc3Rfb3V0cHV0LAotICAgICIiLAotICAgICJQYXRoIHRvIG91dHB1dCBhbiBlbXB0eSBKU09O
IGZpbGUgd2hpY2ggQ2hyb21pdW0gaW5mcmEgcmVxdWlyZXMuIik7Ci0KLURFRklORV9zdHJpbmco
Ci0gICAgaXNvbGF0ZWRfc2NyaXB0X3Rlc3RfcGVyZl9vdXRwdXQsCi0gICAgIiIsCi0gICAgIlBh
dGggd2hlcmUgdGhlIHBlcmYgcmVzdWx0cyBzaG91bGQgYmUgc3RvcmVkIGluIHRoZSBKU09OIGZv
cm1hdCBkZXNjcmliZWQgIgotICAgICJieSAiCi0gICAgImh0dHBzOi8vZ2l0aHViLmNvbS9jYXRh
cHVsdC1wcm9qZWN0L2NhdGFwdWx0L2Jsb2IvbWFzdGVyL2Rhc2hib2FyZC9kb2NzLyIKLSAgICAi
ZGF0YS1mb3JtYXQubWQuIik7Ci0KLSNlbmRpZgotCi1ERUZJTkVfYm9vbChsb2dzLCBmYWxzZSwg
InByaW50IGxvZ3MgdG8gc3RkZXJyIik7Ci0KLURFRklORV9zdHJpbmcoCi0gICAgZm9yY2VfZmll
bGR0cmlhbHMsCi0gICAgIiIsCi0gICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRh
bCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgotICAgICJFLmcuIHJ1bm5pbmcg
d2l0aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZS8iCi0gICAg
IiB3aWxsIGFzc2lnbiB0aGUgZ3JvdXAgRW5hYmxlIHRvIGZpZWxkIHRyaWFsIFdlYlJUQy1Gb29G
ZWF0dXJlLiIpOwotCi1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMgbWVzc2Fn
ZS4iKTsKKyNpbmNsdWRlICJ0ZXN0L3Rlc3RfbWFpbl9saWIuaCIKIAogaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVNb2NrKCZhcmdjLCBh
cmd2KTsKLQotICAvLyBEZWZhdWx0IHRvIExTX0lORk8sIGV2ZW4gZm9yIHJlbGVhc2UgYnVpbGRz
IHRvIHByb3ZpZGUgYmV0dGVyIHRlc3QgbG9nZ2luZy4KLSAgLy8gVE9ETyhwYm9zKTogQ29uc2lk
ZXIgYWRkaW5nIGEgY29tbWFuZC1saW5lIG92ZXJyaWRlLgotICBpZiAocnRjOjpMb2dNZXNzYWdl
OjpHZXRMb2dUb0RlYnVnKCkgPiBydGM6OkxTX0lORk8pCi0gICAgcnRjOjpMb2dNZXNzYWdlOjpM
b2dUb0RlYnVnKHJ0Yzo6TFNfSU5GTyk7Ci0KLSAgaWYgKHJ0Yzo6RmxhZ0xpc3Q6OlNldEZsYWdz
RnJvbUNvbW1hbmRMaW5lKCZhcmdjLCBhcmd2LCBmYWxzZSkpIHsKLSAgICByZXR1cm4gMTsKLSAg
fQotICBpZiAoRkxBR19oZWxwKSB7Ci0gICAgcnRjOjpGbGFnTGlzdDo6UHJpbnQobnVsbHB0ciwg
ZmFsc2UpOwotICAgIHJldHVybiAwOworICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpUZXN0TWFp
bj4gbWFpbiA9IHdlYnJ0Yzo6VGVzdE1haW46OkNyZWF0ZSgpOworICBpbnQgZXJyX2NvZGUgPSBt
YWluLT5Jbml0KCZhcmdjLCBhcmd2KTsKKyAgaWYgKGVycl9jb2RlICE9IDApIHsKKyAgICByZXR1
cm4gZXJyX2NvZGU7CiAgIH0KLQotICB3ZWJydGM6OnRlc3Q6OlNldEV4ZWN1dGFibGVQYXRoKGFy
Z3ZbMF0pOwotICB3ZWJydGM6OnRlc3Q6OlZhbGlkYXRlRmllbGRUcmlhbHNTdHJpbmdPckRpZShG
TEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsKLSAgLy8gSW5pdEZpZWxkVHJpYWxzRnJvbVN0cmluZyBz
dG9yZXMgdGhlIGNoYXIqLCBzbyB0aGUgY2hhciBhcnJheSBtdXN0IG91dGxpdmUKLSAgLy8gdGhl
IGFwcGxpY2F0aW9uLgotICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJbml0RmllbGRUcmlhbHNGcm9t
U3RyaW5nKEZMQUdfZm9yY2VfZmllbGR0cmlhbHMpOwotICB3ZWJydGM6Om1ldHJpY3M6OkVuYWJs
ZSgpOwotCi0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotICBydGM6OldpbnNvY2tJbml0aWFsaXpl
ciB3aW5zb2NrX2luaXQ7Ci0jZW5kaWYKLQotICBydGM6OkxvZ01lc3NhZ2U6OlNldExvZ1RvU3Rk
ZXJyKEZMQUdfbG9ncyk7Ci0KLSAgLy8gRW5zdXJlIHRoYXQgbWFpbiB0aHJlYWQgZ2V0cyB3cmFw
cGVkIGFzIGFuIHJ0Yzo6VGhyZWFkLgotICAvLyBUT0RPKGJ1Z3Mud2VicnQub3JnLzk3MTQpOiBJ
dCBtaWdodCBiZSBiZXR0ZXIgdG8gYXZvaWQgd3JhcHBpbmcgdGhlIG1haW4KLSAgLy8gdGhyZWFk
LCBvciBsZWF2ZSBpdCB0byBpbmRpdmlkdWFsIHRlc3RzIHRoYXQgbmVlZCBpdC4gQnV0IGFzIGxv
bmcgYXMgd2UKLSAgLy8gaGF2ZSBhdXRvbWF0aWMgdGhyZWFkIHdyYXBwaW5nLCB3ZSBuZWVkIHRo
aXMgdG8gYXZvaWQgdGhhdCBzb21lIG90aGVyCi0gIC8vIHJhbmRvbSB0aHJlYWQgKHdoaWNoIG9u
ZSBkZXBlbmRpbmcgb24gd2hpY2ggdGVzdHMgYXJlIHJ1bikgZ2V0cwotICAvLyBhdXRvbWF0aWNh
bGx5IHdyYXBwZWQuCi0gIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+V3JhcEN1cnJl
bnRUaHJlYWQoKTsKLSAgUlRDX0NIRUNLKHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCkpOwotCi0jaWYg
ZGVmaW5lZChXRUJSVENfSU9TKQotCi0gIHJ0Yzo6dGVzdDo6SW5pdFRlc3RTdWl0ZShSVU5fQUxM
X1RFU1RTLCBhcmdjLCBhcmd2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxBR19zYXZl
X2NoYXJ0anNvbl9yZXN1bHQpOwotICBydGM6OnRlc3Q6OlJ1blRlc3RzRnJvbUlPU0FwcCgpOwot
Ci0jZWxzZQotCi0gIGludCBleGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7Ci0KLSAgc3RkOjpz
dHJpbmcgY2hhcnRqc29uX3Jlc3VsdF9maWxlID0gRkxBR19pc29sYXRlZF9zY3JpcHRfdGVzdF9w
ZXJmX291dHB1dDsKLSAgaWYgKCFjaGFydGpzb25fcmVzdWx0X2ZpbGUuZW1wdHkoKSkgewotICAg
IHdlYnJ0Yzo6dGVzdDo6V3JpdGVQZXJmUmVzdWx0cyhjaGFydGpzb25fcmVzdWx0X2ZpbGUpOwot
ICB9Ci0KLSAgc3RkOjpzdHJpbmcgcmVzdWx0X2ZpbGVuYW1lID0gRkxBR19pc29sYXRlZF9zY3Jp
cHRfdGVzdF9vdXRwdXQ7Ci0gIGlmICghcmVzdWx0X2ZpbGVuYW1lLmVtcHR5KCkpIHsKLSAgICBz
dGQ6Om9mc3RyZWFtIHJlc3VsdF9maWxlKHJlc3VsdF9maWxlbmFtZSk7Ci0gICAgcmVzdWx0X2Zp
bGUgPDwgIntcInZlcnNpb25cIjogM30iOwotICAgIHJlc3VsdF9maWxlLmNsb3NlKCk7Ci0gIH0K
LQotICByZXR1cm4gZXhpdF9jb2RlOwotCi0jZW5kaWYKKyAgcmV0dXJuIG1haW4tPlJ1bihhcmdj
LCBhcmd2KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvdGVzdF9tYWluX2xpYi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9tYWluX2xpYi5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTE0
NGM5OGZjYjkzNDdhMDdkNjRmZTcxMTc4OTVmNjEzNWFiZTg1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0X21haW5f
bGliLmNjCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1
ZGUgInRlc3QvdGVzdF9tYWluX2xpYi5oIgorCisjaW5jbHVkZSA8ZnN0cmVhbT4KKyNpbmNsdWRl
IDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9mbGFncy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS90aHJlYWQuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9m
aWVsZF90cmlhbC5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3Mu
aCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCisjaW5jbHVkZSAidGVzdC9nbW9jay5o
IgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2Zp
bGV1dGlscy5oIgorI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvcGVyZl90ZXN0LmgiCisKKyNp
ZiBkZWZpbmVkKFdFQlJUQ19XSU4pCisjaW5jbHVkZSAicnRjX2Jhc2Uvd2luMzJzb2NrZXRpbml0
LmgiCisjZW5kaWYKKworI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKKyNpbmNsdWRlICJ0ZXN0L2lv
cy90ZXN0X3N1cHBvcnQuaCIKKworV0VCUlRDX0RFRklORV9zdHJpbmcoTlNUcmVhdFVua25vd25B
cmd1bWVudHNBc09wZW4sCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAg
ICAgICAgICJJbnRlbnRpb25hbGx5IGlnbm9yZWQgZmxhZyBpbnRlbmRlZCBmb3IgaU9TIHNpbXVs
YXRvci4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKEFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIkludGVu
dGlvbmFsbHkgaWdub3JlZCBmbGFnIGludGVuZGVkIGZvciBpT1Mgc2ltdWxhdG9yLiIpOworV0VC
UlRDX0RFRklORV9ib29sKAorICAgIHNhdmVfY2hhcnRqc29uX3Jlc3VsdCwKKyAgICBmYWxzZSwK
KyAgICAiU3RvcmUgdGhlIHBlcmYgcmVzdWx0cyBpbiBEb2N1bWVudHMvcGVyZl9yZXN1bHQuanNv
biBpbiB0aGUgZm9ybWF0ICIKKyAgICAiZGVzY3JpYmVkIGJ5ICIKKyAgICAiaHR0cHM6Ly9naXRo
dWIuY29tL2NhdGFwdWx0LXByb2plY3QvY2F0YXB1bHQvYmxvYi9tYXN0ZXIvZGFzaGJvYXJkL2Rv
Y3MvIgorICAgICJkYXRhLWZvcm1hdC5tZC4iKTsKKworI2Vsc2UKKworV0VCUlRDX0RFRklORV9z
dHJpbmcoCisgICAgaXNvbGF0ZWRfc2NyaXB0X3Rlc3Rfb3V0cHV0LAorICAgICIiLAorICAgICJQ
YXRoIHRvIG91dHB1dCBhbiBlbXB0eSBKU09OIGZpbGUgd2hpY2ggQ2hyb21pdW0gaW5mcmEgcmVx
dWlyZXMuIik7CisKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIGlzb2xhdGVkX3NjcmlwdF90
ZXN0X3BlcmZfb3V0cHV0LAorICAgICIiLAorICAgICJQYXRoIHdoZXJlIHRoZSBwZXJmIHJlc3Vs
dHMgc2hvdWxkIGJlIHN0b3JlZCBpbiB0aGUgSlNPTiBmb3JtYXQgZGVzY3JpYmVkICIKKyAgICAi
YnkgIgorICAgICJodHRwczovL2dpdGh1Yi5jb20vY2F0YXB1bHQtcHJvamVjdC9jYXRhcHVsdC9i
bG9iL21hc3Rlci9kYXNoYm9hcmQvZG9jcy8iCisgICAgImRhdGEtZm9ybWF0Lm1kLiIpOworCisj
ZW5kaWYKKworV0VCUlRDX0RFRklORV9ib29sKGxvZ3MsIGZhbHNlLCAicHJpbnQgbG9ncyB0byBz
dGRlcnIiKTsKKworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgZm9yY2VfZmllbGR0cmlhbHMs
CisgICAgIiIsCisgICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJl
IGNvZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgorICAgICJFLmcuIHJ1bm5pbmcgd2l0aCAtLWZv
cmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZS8iCisgICAgIiB3aWxsIGFz
c2lnbiB0aGUgZ3JvdXAgRW5hYmxlIHRvIGZpZWxkIHRyaWFsIFdlYlJUQy1Gb29GZWF0dXJlLiIp
OworCitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2Uu
Iik7CisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1lc3BhY2UgeworCitjbGFzcyBUZXN0TWFp
bkltcGwgOiBwdWJsaWMgVGVzdE1haW4geworIHB1YmxpYzoKKyAgaW50IEluaXQoaW50KiBhcmdj
LCBjaGFyKiBhcmd2W10pIG92ZXJyaWRlIHsKKyAgICA6OnRlc3Rpbmc6OkluaXRHb29nbGVNb2Nr
KGFyZ2MsIGFyZ3YpOworCisgICAgLy8gRGVmYXVsdCB0byBMU19JTkZPLCBldmVuIGZvciByZWxl
YXNlIGJ1aWxkcyB0byBwcm92aWRlIGJldHRlciB0ZXN0CisgICAgLy8gbG9nZ2luZy4KKyAgICAv
LyBUT0RPKHBib3MpOiBDb25zaWRlciBhZGRpbmcgYSBjb21tYW5kLWxpbmUgb3ZlcnJpZGUuCisg
ICAgaWYgKHJ0Yzo6TG9nTWVzc2FnZTo6R2V0TG9nVG9EZWJ1ZygpID4gcnRjOjpMU19JTkZPKQor
ICAgICAgcnRjOjpMb2dNZXNzYWdlOjpMb2dUb0RlYnVnKHJ0Yzo6TFNfSU5GTyk7CisKKyAgICBp
ZiAocnRjOjpGbGFnTGlzdDo6U2V0RmxhZ3NGcm9tQ29tbWFuZExpbmUoYXJnYywgYXJndiwgZmFs
c2UpKSB7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKEZMQUdfaGVscCkgeworICAg
ICAgcnRjOjpGbGFnTGlzdDo6UHJpbnQobnVsbHB0ciwgZmFsc2UpOworICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTc5Mik6IHdlIG5lZWQgdG8g
cmVmZXJlbmNlIHNvbWV0aGluZyBmcm9tCisgICAgLy8gZmlsZXV0aWxzLmggc28gdGhhdCBvdXIg
ZG93bnN0cmVhbSBoYWNrIHdoZXJlIHdlIHJlcGxhY2UgZmlsZXV0aWxzLmNjCisgICAgLy8gd29y
a3MuIE90aGVyd2lzZSB0aGUgZG93bnN0cmVhbSBmbGFnIGltcGxlbWVudGF0aW9uIHdpbGwgdGFr
ZSBvdmVyIGFuZAorICAgIC8vIGJvdGNoIHRoZSBmbGFnIGludHJvZHVjZWQgYnkgdGhlIGhhY2su
IFJlbW92ZSB0aGlzIGF3ZnVsIHRoaW5nIG9uY2UgdGhlCisgICAgLy8gZG93bnN0cmVhbSBpbXBs
ZW1lbnRhdGlvbiBoYXMgYmVlbiBlbGltaW5hdGVkLgorICAgICh2b2lkKXdlYnJ0Yzo6dGVzdDo6
Sm9pbkZpbGVuYW1lKCJob3JyaWJsZSIsICJoYWNrIik7CisKKyAgICB3ZWJydGM6OnRlc3Q6OlZh
bGlkYXRlRmllbGRUcmlhbHNTdHJpbmdPckRpZShGTEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsKKyAg
ICAvLyBJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5nIHN0b3JlcyB0aGUgY2hhciosIHNvIHRoZSBj
aGFyIGFycmF5IG11c3QKKyAgICAvLyBvdXRsaXZlIHRoZSBhcHBsaWNhdGlvbi4KKyAgICB3ZWJy
dGM6OmZpZWxkX3RyaWFsOjpJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5nKEZMQUdfZm9yY2VfZmll
bGR0cmlhbHMpOworICAgIHdlYnJ0Yzo6bWV0cmljczo6RW5hYmxlKCk7CisKKyNpZiBkZWZpbmVk
KFdFQlJUQ19XSU4pCisgICAgd2luc29ja19pbml0XyA9IGFic2w6Om1ha2VfdW5pcXVlPHJ0Yzo6
V2luc29ja0luaXRpYWxpemVyPigpOworI2VuZGlmCisKKyAgICBydGM6OkxvZ01lc3NhZ2U6OlNl
dExvZ1RvU3RkZXJyKEZMQUdfbG9ncyk7CisKKyAgICAvLyBFbnN1cmUgdGhhdCBtYWluIHRocmVh
ZCBnZXRzIHdyYXBwZWQgYXMgYW4gcnRjOjpUaHJlYWQuCisgICAgLy8gVE9ETyhidWdzLndlYnJ0
Lm9yZy85NzE0KTogSXQgbWlnaHQgYmUgYmV0dGVyIHRvIGF2b2lkIHdyYXBwaW5nIHRoZSBtYWlu
CisgICAgLy8gdGhyZWFkLCBvciBsZWF2ZSBpdCB0byBpbmRpdmlkdWFsIHRlc3RzIHRoYXQgbmVl
ZCBpdC4gQnV0IGFzIGxvbmcgYXMgd2UKKyAgICAvLyBoYXZlIGF1dG9tYXRpYyB0aHJlYWQgd3Jh
cHBpbmcsIHdlIG5lZWQgdGhpcyB0byBhdm9pZCB0aGF0IHNvbWUgb3RoZXIKKyAgICAvLyByYW5k
b20gdGhyZWFkICh3aGljaCBvbmUgZGVwZW5kaW5nIG9uIHdoaWNoIHRlc3RzIGFyZSBydW4pIGdl
dHMKKyAgICAvLyBhdXRvbWF0aWNhbGx5IHdyYXBwZWQuCisgICAgcnRjOjpUaHJlYWRNYW5hZ2Vy
OjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVudFRocmVhZCgpOworICAgIFJUQ19DSEVDSyhydGM6OlRo
cmVhZDo6Q3VycmVudCgpKTsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIGludCBSdW4oaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkgb3ZlcnJpZGUgeworI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKKyAg
ICBydGM6OnRlc3Q6OkluaXRUZXN0U3VpdGUoUlVOX0FMTF9URVNUUywgYXJnYywgYXJndiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxBR19zYXZlX2NoYXJ0anNvbl9yZXN1bHQpOwor
ICAgIHJ0Yzo6dGVzdDo6UnVuVGVzdHNGcm9tSU9TQXBwKCk7CisgICAgcmV0dXJuIDA7CisjZWxz
ZQorICAgIGludCBleGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7CisKKyAgICBzdGQ6OnN0cmlu
ZyBjaGFydGpzb25fcmVzdWx0X2ZpbGUgPSBGTEFHX2lzb2xhdGVkX3NjcmlwdF90ZXN0X3BlcmZf
b3V0cHV0OworICAgIGlmICghY2hhcnRqc29uX3Jlc3VsdF9maWxlLmVtcHR5KCkpIHsKKyAgICAg
IHdlYnJ0Yzo6dGVzdDo6V3JpdGVQZXJmUmVzdWx0cyhjaGFydGpzb25fcmVzdWx0X2ZpbGUpOwor
ICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIHJlc3VsdF9maWxlbmFtZSA9IEZMQUdfaXNvbGF0ZWRf
c2NyaXB0X3Rlc3Rfb3V0cHV0OworICAgIGlmICghcmVzdWx0X2ZpbGVuYW1lLmVtcHR5KCkpIHsK
KyAgICAgIHN0ZDo6b2ZzdHJlYW0gcmVzdWx0X2ZpbGUocmVzdWx0X2ZpbGVuYW1lKTsKKyAgICAg
IHJlc3VsdF9maWxlIDw8ICJ7XCJ2ZXJzaW9uXCI6IDN9IjsKKyAgICAgIHJlc3VsdF9maWxlLmNs
b3NlKCk7CisgICAgfQorCisjaWYgZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgfHwgZGVmaW5l
ZChMRUFLX1NBTklUSVpFUikgfHwgIFwKKyAgICBkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpIHx8
IGRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikgfHwgXAorICAgIGRlZmluZWQoVU5ERUZJTkVEX1NB
TklUSVpFUikKKyAgICAvLyBXZSB3YW50IHRoZSB0ZXN0IGZsYWdnZWQgYXMgZmFpbGVkIG9ubHkg
Zm9yIHNhbml0aXplciBkZWZlY3RzLAorICAgIC8vIGluIHdoaWNoIGNhc2UgdGhlIHNhbml0aXpl
ciB3aWxsIG92ZXJyaWRlIGV4aXQgY29kZSB3aXRoIDY2LgorICAgIHJldHVybiAwOworI2VuZGlm
CisKKyAgICByZXR1cm4gZXhpdF9jb2RlOworI2VuZGlmCisgIH0KKworICB+VGVzdE1haW5JbXBs
KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworCisgcHJpdmF0ZToKKyNpZiBkZWZpbmVkKFdFQlJUQ19X
SU4pCisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OldpbnNvY2tJbml0aWFsaXplcj4gd2luc29ja19p
bml0XzsKKyNlbmRpZgorfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK3N0ZDo6dW5pcXVlX3B0cjxU
ZXN0TWFpbj4gVGVzdE1haW46OkNyZWF0ZSgpIHsKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVl
PFRlc3RNYWluSW1wbD4oKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0X21h
aW5fbGliLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L3Rlc3RfbWFpbl9saWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGRkNzY0YWUyNGQzZGZiODYzZjZlYzEzNGE0
ZDY5M2U4ZGQwMzBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0X21haW5fbGliLmgKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
CisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorICovCisjaWZuZGVmIFRFU1RfVEVTVF9NQUlOX0xJQl9IXworI2Rl
ZmluZSBURVNUX1RFU1RfTUFJTl9MSUJfSF8KKworI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNw
YWNlIHdlYnJ0YyB7CisKKy8vIENsYXNzIHRvIGluaXRpYWxpemUgdGVzdCBlbnZpcm9ubWVudCBh
bmQgcnVuIHRlc3RzLgorY2xhc3MgVGVzdE1haW4geworIHB1YmxpYzoKKyAgdmlydHVhbCB+VGVz
dE1haW4oKSB7fQorCisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGVzdE1haW4+IENyZWF0ZSgp
OworCisgIC8vIEluaXRpYWxpemVzIHRlc3QgZW52aXJvbm1lbnQuIENsaWVudHMgY2FuIGFkZCB0
aGVpciBvd24gaW5pdGlhbGl6YXRpb24KKyAgLy8gc3RlcHMgYWZ0ZXIgY2FsbCB0byB0aGlzIG1l
dGhvZCBhbmQgYmVmb3JlIHJ1bm5pbmcgdGVzdHMuCisgIC8vIFJldHVybnMgMCBpZiBpbml0aWFs
aXphdGlvbiB3YXMgc3VjY2Vzc2Z1bCBhbmQgbm9uIDAgb3RoZXJ3aXNlLgorICB2aXJ0dWFsIGlu
dCBJbml0KGludCogYXJnYywgY2hhciogYXJndltdKSA9IDA7CisKKyAgLy8gUnVucyB0ZXN0IGVu
ZCByZXR1cm4gcmVzdWx0IGVycm9yIGNvZGUuIDAgLSBubyBlcnJvcnMuCisgIHZpcnR1YWwgaW50
IFJ1bihpbnQgYXJnYywgY2hhciogYXJndltdKSA9IDA7CisKKyBwcm90ZWN0ZWQ6CisgIFRlc3RN
YWluKCkgPSBkZWZhdWx0OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYg
IC8vIFRFU1RfVEVTVF9NQUlOX0xJQl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0
L2ZpbGV1dGlscy5jYwppbmRleCBjYjg4NDcyZTQyNWJmMmFmYzZhODk4ODY0YzkzMDljYmQ0ZWJi
NTM1Li5hNzFkOGY4ZGI1N2Q1N2VlOTQwMzQxMTRkYjRiNjhlMDI4OGU2OGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBw
b3J0L2ZpbGV1dGlscy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5jYwpAQCAtNTksMzUgKzU5LDE3IEBA
CiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKKyNpbmNsdWRlICJ0ZXN0
L3Rlc3RzdXBwb3J0L2ZpbGV1dGlsc19vdmVycmlkZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IG5hbWVzcGFjZSB0ZXN0IHsKIAotbmFtZXNwYWNlIHsKLQogI2lmIGRlZmluZWQoV0VCUlRDX1dJ
TikKIGNvbnN0IGNoYXIqIGtQYXRoRGVsaW1pdGVyID0gIlxcIjsKICNlbHNlCiBjb25zdCBjaGFy
KiBrUGF0aERlbGltaXRlciA9ICIvIjsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChXRUJSVENfQU5E
Uk9JRCkKLS8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgaW4gQ2hyb21lIGluZnJhc3RydWN0dXJl
LiBTZWUKLS8vIGJhc2UvdGVzdC90ZXN0X3N1cHBvcnRfYW5kcm9pZC5jYy4KLWNvbnN0IGNoYXIq
IGtBbmRyb2lkQ2hyb21pdW1UZXN0c1Jvb3QgPSAiL3NkY2FyZC9jaHJvbWl1bV90ZXN0c19yb290
LyI7Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKFdFQlJUQ19JT1MpCi1jb25zdCBjaGFyKiBrUmVz
b3VyY2VzRGlyTmFtZSA9ICJyZXNvdXJjZXMiOwotI2VuZGlmCi0KLWNoYXIgcmVsYXRpdmVfZGly
X3BhdGhbRklMRU5BTUVfTUFYXTsKLWJvb2wgcmVsYXRpdmVfZGlyX3BhdGhfc2V0ID0gZmFsc2U7
Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1jb25zdCBjaGFyKiBrQ2Fubm90RmluZFByb2plY3RSb290
RGlyID0gIkVSUk9SX0NBTk5PVF9GSU5EX1BST0pFQ1RfUk9PVF9ESVIiOwotCiBzdGQ6OnN0cmlu
ZyBEaXJOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSB7CiAgIGlmIChwYXRoLmVtcHR5KCkp
CiAgICAgcmV0dXJuICIiOwpAQCAtMTAxLDI3ICs4Myw2IEBAIHN0ZDo6c3RyaW5nIERpck5hbWUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpIHsKICAgcmV0dXJuIHJlc3VsdC5zdWJzdHIoMCwgcmVz
dWx0LmZpbmRfbGFzdF9vZihrUGF0aERlbGltaXRlcikpOwogfQogCi12b2lkIFNldEV4ZWN1dGFi
bGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSB7Ci0gIHN0ZDo6c3RyaW5nIHdvcmtpbmdf
ZGlyID0gV29ya2luZ0RpcigpOwotICBzdGQ6OnN0cmluZyB0ZW1wX3BhdGggPSBwYXRoOwotCi0g
IC8vIEhhbmRsZSBhYnNvbHV0ZSBwYXRoczsgY29udmVydCB0aGVtIHRvIHJlbGF0aXZlIHBhdGhz
IHRvIHRoZSB3b3JraW5nIGRpci4KLSAgaWYgKHBhdGguZmluZCh3b3JraW5nX2RpcikgIT0gc3Rk
OjpzdHJpbmc6Om5wb3MpIHsKLSAgICB0ZW1wX3BhdGggPSBwYXRoLnN1YnN0cih3b3JraW5nX2Rp
ci5sZW5ndGgoKSArIDEpOwotICB9Ci0vLyBPbiBXaW5kb3dzLCB3aGVuIHRlc3RzIGFyZSBydW4g
dW5kZXIgbWVtb3J5IHRvb2xzIGxpa2UgRHJNZW1vcnkgYW5kIFRTYW4sCi0vLyBzbGFzaGVzIG9j
Y3VyIGluIHRoZSBwYXRoIGFzIGRpcmVjdG9yeSBzZXBhcmF0b3JzLiBNYWtlIHN1cmUgd2UgcmVw
bGFjZQotLy8gc3VjaCBjYXNlcyB3aXRoIGJhY2tzbGFzaGVzIGluIG9yZGVyIGZvciB0aGUgcGF0
aHMgdG8gYmUgY29ycmVjdC4KLSNpZmRlZiBXSU4zMgotICBzdGQ6OnJlcGxhY2UodGVtcF9wYXRo
LmJlZ2luKCksIHRlbXBfcGF0aC5lbmQoKSwgJy8nLCAnXFwnKTsKLSNlbmRpZgotCi0gIC8vIFRy
aW0gYXdheSB0aGUgZXhlY3V0YWJsZSBuYW1lOyBvbmx5IHN0b3JlIHRoZSByZWxhdGl2ZSBkaXIg
cGF0aC4KLSAgdGVtcF9wYXRoID0gRGlyTmFtZSh0ZW1wX3BhdGgpOwotICBzdHJuY3B5KHJlbGF0
aXZlX2Rpcl9wYXRoLCB0ZW1wX3BhdGguY19zdHIoKSwgRklMRU5BTUVfTUFYKTsKLSAgcmVsYXRp
dmVfZGlyX3BhdGhfc2V0ID0gdHJ1ZTsKLX0KLQogYm9vbCBGaWxlRXhpc3RzKGNvbnN0IHN0ZDo6
c3RyaW5nJiBmaWxlX25hbWUpIHsKICAgc3RydWN0IHN0YXQgZmlsZV9pbmZvID0gezB9OwogICBy
ZXR1cm4gc3RhdChmaWxlX25hbWUuY19zdHIoKSwgJmZpbGVfaW5mbykgPT0gMDsKQEAgLTEzMyw2
OSArOTQsMTIgQEAgYm9vbCBEaXJFeGlzdHMoY29uc3Qgc3RkOjpzdHJpbmcmIGRpcmVjdG9yeV9u
YW1lKSB7CiAgICAgICAgICBTX0lTRElSKGRpcmVjdG9yeV9pbmZvLnN0X21vZGUpOwogfQogCi0v
LyBGaW5kcyB0aGUgV2ViUlRDIHNyYyBkaXIuCi0vLyBUaGUgcmV0dXJuZWQgcGF0aCBhbHdheXMg
ZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IuCi1zdGQ6OnN0cmluZyBQcm9qZWN0Um9vdFBhdGgo
KSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKLSAgcmV0dXJuIGtBbmRyb2lkQ2hyb21p
dW1UZXN0c1Jvb3Q7Ci0jZWxpZiBkZWZpbmVkIFdFQlJUQ19JT1MKLSAgcmV0dXJuIElPU1Jvb3RQ
YXRoKCk7Ci0jZWxpZiBkZWZpbmVkKFdFQlJUQ19NQUMpCi0gIHN0ZDo6c3RyaW5nIHBhdGg7Ci0g
IEdldE5TRXhlY3V0YWJsZVBhdGgoJnBhdGgpOwotICBzdGQ6OnN0cmluZyBleGVfZGlyID0gRGly
TmFtZShwYXRoKTsKLSAgLy8gT24gTWFjLCB0ZXN0cyBleGVjdXRlIGluIG91dC9XaGF0ZXZlciwg
c28gc3JjIGlzIHR3byBsZXZlbHMgdXAgZXhjZXB0IGlmCi0gIC8vIHRoZSB0ZXN0IGlzIGJ1bmRs
ZWQgKHdoaWNoIG91ciB0ZXN0cyBhcmUgbm90KSwgaW4gd2hpY2ggY2FzZSBpdCdzIDUgbGV2ZWxz
LgotICByZXR1cm4gRGlyTmFtZShEaXJOYW1lKGV4ZV9kaXIpKSArIGtQYXRoRGVsaW1pdGVyOwot
I2VsaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCi0gIGNoYXIgYnVmW1BBVEhfTUFYXTsKLSAgc3Np
emVfdCBjb3VudCA9IDo6cmVhZGxpbmsoIi9wcm9jL3NlbGYvZXhlIiwgYnVmLCBhcnJheXNpemUo
YnVmKSk7Ci0gIGlmIChjb3VudCA8PSAwKSB7Ci0gICAgUlRDX05PVFJFQUNIRUQoKSA8PCAiVW5h
YmxlIHRvIHJlc29sdmUgL3Byb2Mvc2VsZi9leGUuIjsKLSAgICByZXR1cm4ga0Nhbm5vdEZpbmRQ
cm9qZWN0Um9vdERpcjsKLSAgfQotICAvLyBPbiBQT1NJWCwgdGVzdHMgZXhlY3V0ZSBpbiBvdXQv
V2hhdGV2ZXIsIHNvIHNyYyBpcyB0d28gbGV2ZWxzIHVwLgotICBzdGQ6OnN0cmluZyBleGVfZGly
ID0gRGlyTmFtZShzdGQ6OnN0cmluZyhidWYsIGNvdW50KSk7Ci0gIHJldHVybiBEaXJOYW1lKERp
ck5hbWUoZXhlX2RpcikpICsga1BhdGhEZWxpbWl0ZXI7Ci0jZWxpZiBkZWZpbmVkKFdFQlJUQ19X
SU4pCi0gIHdjaGFyX3QgYnVmW01BWF9QQVRIXTsKLSAgYnVmWzBdID0gMDsKLSAgaWYgKEdldE1v
ZHVsZUZpbGVOYW1lKE5VTEwsIGJ1ZiwgTUFYX1BBVEgpID09IDApCi0gICAgcmV0dXJuIGtDYW5u
b3RGaW5kUHJvamVjdFJvb3REaXI7Ci0KLSAgc3RkOjpzdHJpbmcgZXhlX3BhdGggPSBydGM6OlRv
VXRmOChzdGQ6OndzdHJpbmcoYnVmKSk7Ci0gIHN0ZDo6c3RyaW5nIGV4ZV9kaXIgPSBEaXJOYW1l
KGV4ZV9wYXRoKTsKLSAgcmV0dXJuIERpck5hbWUoRGlyTmFtZShleGVfZGlyKSkgKyBrUGF0aERl
bGltaXRlcjsKLSNlbmRpZgotfQotCiBzdGQ6OnN0cmluZyBPdXRwdXRQYXRoKCkgewotI2lmIGRl
ZmluZWQoV0VCUlRDX0lPUykKLSAgcmV0dXJuIElPU091dHB1dFBhdGgoKTsKLSNlbGlmIGRlZmlu
ZWQoV0VCUlRDX0FORFJPSUQpCi0gIHJldHVybiBrQW5kcm9pZENocm9taXVtVGVzdHNSb290Owot
I2Vsc2UKLSAgc3RkOjpzdHJpbmcgcGF0aCA9IFByb2plY3RSb290UGF0aCgpOwotICBSVENfRENI
RUNLX05FKHBhdGgsIGtDYW5ub3RGaW5kUHJvamVjdFJvb3REaXIpOwotICBwYXRoICs9ICJvdXQi
OwotICBpZiAoIUNyZWF0ZURpcihwYXRoKSkgewotICAgIHJldHVybiAiLi8iOwotICB9Ci0gIHJl
dHVybiBwYXRoICsga1BhdGhEZWxpbWl0ZXI7Ci0jZW5kaWYKKyAgcmV0dXJuIHdlYnJ0Yzo6dGVz
dDo6aW50ZXJuYWw6Ok91dHB1dFBhdGgoKTsKIH0KIAogc3RkOjpzdHJpbmcgV29ya2luZ0Rpcigp
IHsKLSNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQotICByZXR1cm4ga0FuZHJvaWRDaHJvbWl1
bVRlc3RzUm9vdDsKLSNlbmRpZgotICBjaGFyIHBhdGhfYnVmZmVyW0ZJTEVOQU1FX01BWF07Ci0g
IGlmICghR0VUX0NVUlJFTlRfRElSKHBhdGhfYnVmZmVyLCBzaXplb2YocGF0aF9idWZmZXIpKSkg
ewotICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGdldCBjdXJyZW50IGRpcmVjdG9yeSFcbiIp
OwotICAgIHJldHVybiAiLi8iOwotICB9IGVsc2UgewotICAgIHJldHVybiBzdGQ6OnN0cmluZyhw
YXRoX2J1ZmZlcik7Ci0gIH0KKyAgcmV0dXJuIHdlYnJ0Yzo6dGVzdDo6aW50ZXJuYWw6Oldvcmtp
bmdEaXIoKTsKIH0KIAogLy8gR2VuZXJhdGUgYSB0ZW1wb3JhcnkgZmlsZW5hbWUgaW4gYSBzYWZl
IHdheS4KQEAgLTMyMiwzMCArMjI2LDcgQEAgYm9vbCBSZW1vdmVGaWxlKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBmaWxlX25hbWUpIHsKIAogc3RkOjpzdHJpbmcgUmVzb3VyY2VQYXRoKGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBleHRlbnNpb24pIHsKLSNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCi0gIHJldHVybiBJT1NSZXNv
dXJjZVBhdGgobmFtZSwgZXh0ZW5zaW9uKTsKLSNlbHNlCi0gIHN0ZDo6c3RyaW5nIHBsYXRmb3Jt
ID0gIndpbiI7Ci0jaWZkZWYgV0VCUlRDX0xJTlVYCi0gIHBsYXRmb3JtID0gImxpbnV4IjsKLSNl
bmRpZiAgLy8gV0VCUlRDX0xJTlVYCi0jaWZkZWYgV0VCUlRDX01BQwotICBwbGF0Zm9ybSA9ICJt
YWMiOwotI2VuZGlmICAvLyBXRUJSVENfTUFDCi0jaWZkZWYgV0VCUlRDX0FORFJPSUQKLSAgcGxh
dGZvcm0gPSAiYW5kcm9pZCI7Ci0jZW5kaWYgIC8vIFdFQlJUQ19BTkRST0lECi0KLSAgc3RkOjpz
dHJpbmcgcmVzb3VyY2VzX3BhdGggPQotICAgICAgUHJvamVjdFJvb3RQYXRoKCkgKyBrUmVzb3Vy
Y2VzRGlyTmFtZSArIGtQYXRoRGVsaW1pdGVyOwotICBzdGQ6OnN0cmluZyByZXNvdXJjZV9maWxl
ID0KLSAgICAgIHJlc291cmNlc19wYXRoICsgbmFtZSArICJfIiArIHBsYXRmb3JtICsgIi4iICsg
ZXh0ZW5zaW9uOwotICBpZiAoRmlsZUV4aXN0cyhyZXNvdXJjZV9maWxlKSkgewotICAgIHJldHVy
biByZXNvdXJjZV9maWxlOwotICB9Ci0gIC8vIEZhbGwgYmFjayBvbiBuYW1lIHdpdGhvdXQgcGxh
dGZvcm0uCi0gIHJldHVybiByZXNvdXJjZXNfcGF0aCArIG5hbWUgKyAiLiIgKyBleHRlbnNpb247
Ci0jZW5kaWYgIC8vIGRlZmluZWQgKFdFQlJUQ19JT1MpCisgIHJldHVybiB3ZWJydGM6OnRlc3Q6
OmludGVybmFsOjpSZXNvdXJjZVBhdGgobmFtZSwgZXh0ZW5zaW9uKTsKIH0KIAogc3RkOjpzdHJp
bmcgSm9pbkZpbGVuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXIsIGNvbnN0IHN0ZDo6c3RyaW5n
JiBuYW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaAppbmRl
eCA1ZmYwMTk2MDBlZDU5ODFlY2ZlZjI1NDYxMTY5ZTk3NWQ0OTIyOTZhLi44YTE4Njk4OGQ2Mzgw
ODZkMTY0NDViZTIxZjVmZTE0YzFkYjU2N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1
cHBvcnQvZmlsZXV0aWxzLmgKQEAgLTI1LDYgKzI1LDkgQEAgbmFtZXNwYWNlIHRlc3QgewogLy8g
dG8gZmluZCB0aGUgcHJvamVjdCByb290LgogZXh0ZXJuIGNvbnN0IGNoYXIqIGtDYW5ub3RGaW5k
UHJvamVjdFJvb3REaXI7CiAKKy8vIFNsYXNoIG9yIGJhY2tzbGFzaCwgZGVwZW5kaW5nIG9uIHBs
YXRmb3JtLiBOVUwtdGVybWluYXRlZCBzdHJpbmcuCitleHRlcm4gY29uc3QgY2hhcioga1BhdGhE
ZWxpbWl0ZXI7CisKIC8vIFJldHVybnMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIG91dHB1dCBk
aXJlY3Rvcnkgd2hlcmUgbG9nIGZpbGVzIGFuZCBvdGhlcgogLy8gdGVzdCBhcnRpZmFjdHMgc2hv
dWxkIGJlIHB1dC4gVGhlIG91dHB1dCBkaXJlY3RvcnkgaXMgZ2VuZXJhbGx5IGEgZGlyZWN0b3J5
CiAvLyBuYW1lZCAib3V0IiBhdCB0aGUgcHJvamVjdCByb290LiBUaGlzIHJvb3QgaXMgYXNzdW1l
ZCB0byBiZSB0d28gbGV2ZWxzIGFib3ZlCkBAIC01MSwxOCArNTQsOCBAQCBzdGQ6OnN0cmluZyBU
ZW1wRmlsZW5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGRpciwgY29uc3Qgc3RkOjpzdHJpbmcmIHBy
ZWZpeCk7CiBzdGQ6OnN0cmluZyBHZW5lcmF0ZVRlbXBGaWxlbmFtZShjb25zdCBzdGQ6OnN0cmlu
ZyYgZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHByZWZpeCk7CiAKLS8vIFJldHVybnMgYSBwYXRoIHRvIGEgcmVzb3VyY2UgZmlsZSBmb3Ig
dGhlIGN1cnJlbnRseSBleGVjdXRpbmcgcGxhdGZvcm0uCi0vLyBBZGFwdHMgdG8gd2hhdCBmaWxl
bmFtZXMgYXJlIGN1cnJlbnRseSBwcmVzZW50IGluIHRoZQotLy8gW3Byb2plY3Qtcm9vdF0vcmVz
b3VyY2VzLyBkaXIuCi0vLyBSZXR1cm5zIGFuIGFic29sdXRlIHBhdGggYWNjb3JkaW5nIHRvIHRo
aXMgcHJpb3JpdHkgbGlzdCAodGhlIGRpcmVjdG9yeQotLy8gcGFydCBvZiB0aGUgcGF0aCBpcyBs
ZWZ0IG91dCBmb3IgcmVhZGFiaWxpdHkpOgotLy8gMS4gW25hbWVdX1twbGF0Zm9ybV1fW2FyY2hp
dGVjdHVyZV0uW2V4dGVuc2lvbl0KLS8vIDIuIFtuYW1lXV9bcGxhdGZvcm1dLltleHRlbnNpb25d
Ci0vLyAzLiBbbmFtZV1fW2FyY2hpdGVjdHVyZV0uW2V4dGVuc2lvbl0KLS8vIDQuIFtuYW1lXS5b
ZXh0ZW5zaW9uXQotLy8gV2hlcmUKLS8vICogcGxhdGZvcm0gaXMgZWl0aGVyIG9mICJ3aW4iLCAi
bWFjIiBvciAibGludXgiLgotLy8gKiBhcmNoaXRlY3R1cmUgaXMgZWl0aGVyIG9mICIzMiIgb3Ig
IjY0Ii4KKy8vIFJldHVybnMgYSBwYXRoIHRvIGEgcmVzb3VyY2UgZmlsZSBpbiBbcHJvamVjdC1y
b290XS9yZXNvdXJjZXMvIGRpci4KKy8vIFJldHVybnMgYW4gYWJzb2x1dGUgcGF0aAogLy8KIC8v
IEFyZ3VtZW50czoKIC8vICAgIG5hbWUgLSBOYW1lIG9mIHRoZSByZXNvdXJjZSBmaWxlLiBJZiBh
IHBsYWluIGZpbGVuYW1lIChubyBkaXJlY3RvcnkgcGF0aCkKQEAgLTExMCwxNSArMTAzLDYgQEAg
c3RkOjpzdHJpbmcgRGlyTmFtZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCk7CiAvLyBlbXB0eSBv
ciBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdC9pcyByZWFkYWJsZS4KIHNpemVfdCBHZXRGaWxl
U2l6ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpOwogCi0vLyBTZXRzIHRoZSBleGVjdXRh
YmxlIHBhdGgsIGkuZS4gdGhlIHBhdGggdG8gdGhlIGV4ZWN1dGFibGUgdGhhdCBpcyBiZWluZyB1
c2VkCi0vLyB3aGVuIGxhdW5jaGluZyBpdC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBwYXRoIHJlbGF0
aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeQotLy8gYnV0IGNhbiBhbHNvIGJlIGFuIGFic29s
dXRlIHBhdGguIFRoZSBpbnRlbnRpb24gd2l0aCB0aGlzIGZ1bmN0aW9uIGlzIHRvIHBhc3MKLS8v
IHRoZSBhcmd2WzBdIGJlaW5nIHNlbnQgaW50byB0aGUgbWFpbiBmdW5jdGlvbiB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvcgotLy8gZmlsZXV0aWxzLmggdG8gZmluZCB0aGUgY29ycmVjdCBwcm9qZWN0
IHBhdGhzIGV2ZW4gd2hlbiB0aGUgd29ya2luZyBkaXJlY3RvcnkKLS8vIGlzIG91dHNpZGUgdGhl
IHByb2plY3QgdHJlZSAod2hpY2ggaGFwcGVucyBpbiBzb21lIGNhc2VzKS4KLS8vIFRPRE8oYnVn
cy53ZWJydGMub3JnLzk3OTIpOiBEZXByZWNhdGVkIC0gZ29pbmcgYXdheSBzb29uLgotdm9pZCBT
ZXRFeGVjdXRhYmxlUGF0aChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aF90b19leGVjdXRhYmxlKTsK
LQogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0
c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlsc19vdmVycmlkZS5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ODQwNjljMTBkZDRmNjEwY2RiZWE5MDZhY2Y2MWFhMzIzYjJhMGFjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuY2MKQEAgLTAsMCArMSwxNTEgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxl
dXRpbHNfb3ZlcnJpZGUuaCIKKworI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKKyNpbmNsdWRlIDxk
aXJlY3QuaD4KKyNpbmNsdWRlIDx0Y2hhci5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y29kZWN2dD4KKyNpbmNsdWRlIDxsb2NhbGU+CisK
KyNpbmNsdWRlICJTaGx3YXBpLmgiCisjaW5jbHVkZSAiV2luRGVmLmgiCisKKyNpbmNsdWRlICJy
dGNfYmFzZS93aW4zMi5oIgorI2RlZmluZSBHRVRfQ1VSUkVOVF9ESVIgX2dldGN3ZAorI2Vsc2UK
KyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNkZWZpbmUgR0VUX0NV
UlJFTlRfRElSIGdldGN3ZAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCisjaW5j
bHVkZSAidGVzdC90ZXN0c3VwcG9ydC9pb3NmaWxldXRpbHMuaCIKKyNlbmRpZgorCisjaWYgZGVm
aW5lZChXRUJSVENfTUFDKQorI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvbWFjZmlsZXV0aWxz
LmgiCisjZW5kaWYKKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9hcnJheXNpemUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25h
bWVzcGFjZSB0ZXN0IHsKKworc3RkOjpzdHJpbmcgRGlyTmFtZShjb25zdCBzdGQ6OnN0cmluZyYg
cGF0aCk7Citib29sIENyZWF0ZURpcihjb25zdCBzdGQ6OnN0cmluZyYgZGlyZWN0b3J5X25hbWUp
OworCituYW1lc3BhY2UgaW50ZXJuYWwgeworCituYW1lc3BhY2UgeworI2lmIGRlZmluZWQoV0VC
UlRDX1dJTikKK2NvbnN0IGNoYXIqIGtQYXRoRGVsaW1pdGVyID0gIlxcIjsKKyNlbGlmICFkZWZp
bmVkKFdFQlJUQ19JT1MpCitjb25zdCBjaGFyKiBrUGF0aERlbGltaXRlciA9ICIvIjsKKyNlbmRp
ZgorCisjaWYgZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKKy8vIFRoaXMgaXMgYSBzcGVjaWFsIGNh
c2UgaW4gQ2hyb21lIGluZnJhc3RydWN0dXJlLiBTZWUKKy8vIGJhc2UvdGVzdC90ZXN0X3N1cHBv
cnRfYW5kcm9pZC5jYy4KK2NvbnN0IGNoYXIqIGtBbmRyb2lkQ2hyb21pdW1UZXN0c1Jvb3QgPSAi
L3NkY2FyZC9jaHJvbWl1bV90ZXN0c19yb290LyI7CisjZW5kaWYKKworI2lmICFkZWZpbmVkKFdF
QlJUQ19JT1MpCitjb25zdCBjaGFyKiBrUmVzb3VyY2VzRGlyTmFtZSA9ICJyZXNvdXJjZXMiOwor
I2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZQorCisvLyBGaW5kcyB0aGUgV2ViUlRDIHNyYyBkaXIu
CisvLyBUaGUgcmV0dXJuZWQgcGF0aCBhbHdheXMgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3Iu
CithYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gUHJvamVjdFJvb3RQYXRoKCkgeworI2lmIGRl
ZmluZWQoV0VCUlRDX0FORFJPSUQpCisgIHJldHVybiBrQW5kcm9pZENocm9taXVtVGVzdHNSb290
OworI2VsaWYgZGVmaW5lZCBXRUJSVENfSU9TCisgIHJldHVybiBJT1NSb290UGF0aCgpOworI2Vs
aWYgZGVmaW5lZChXRUJSVENfTUFDKQorICBzdGQ6OnN0cmluZyBwYXRoOworICBHZXROU0V4ZWN1
dGFibGVQYXRoKCZwYXRoKTsKKyAgc3RkOjpzdHJpbmcgZXhlX2RpciA9IERpck5hbWUocGF0aCk7
CisgIC8vIE9uIE1hYywgdGVzdHMgZXhlY3V0ZSBpbiBvdXQvV2hhdGV2ZXIsIHNvIHNyYyBpcyB0
d28gbGV2ZWxzIHVwIGV4Y2VwdCBpZgorICAvLyB0aGUgdGVzdCBpcyBidW5kbGVkICh3aGljaCBv
dXIgdGVzdHMgYXJlIG5vdCksIGluIHdoaWNoIGNhc2UgaXQncyA1IGxldmVscy4KKyAgcmV0dXJu
IERpck5hbWUoRGlyTmFtZShleGVfZGlyKSkgKyBrUGF0aERlbGltaXRlcjsKKyNlbGlmIGRlZmlu
ZWQoV0VCUlRDX1BPU0lYKQorICBjaGFyIGJ1ZltQQVRIX01BWF07CisgIHNzaXplX3QgY291bnQg
PSA6OnJlYWRsaW5rKCIvcHJvYy9zZWxmL2V4ZSIsIGJ1ZiwgYXJyYXlzaXplKGJ1ZikpOworICBp
ZiAoY291bnQgPD0gMCkgeworICAgIFJUQ19OT1RSRUFDSEVEKCkgPDwgIlVuYWJsZSB0byByZXNv
bHZlIC9wcm9jL3NlbGYvZXhlLiI7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKyAg
Ly8gT24gUE9TSVgsIHRlc3RzIGV4ZWN1dGUgaW4gb3V0L1doYXRldmVyLCBzbyBzcmMgaXMgdHdv
IGxldmVscyB1cC4KKyAgc3RkOjpzdHJpbmcgZXhlX2RpciA9IERpck5hbWUoc3RkOjpzdHJpbmco
YnVmLCBjb3VudCkpOworICByZXR1cm4gRGlyTmFtZShEaXJOYW1lKGV4ZV9kaXIpKSArIGtQYXRo
RGVsaW1pdGVyOworI2VsaWYgZGVmaW5lZChXRUJSVENfV0lOKQorICB3Y2hhcl90IGJ1ZltNQVhf
UEFUSF07CisgIGJ1ZlswXSA9IDA7CisgIGlmIChHZXRNb2R1bGVGaWxlTmFtZShOVUxMLCBidWYs
IE1BWF9QQVRIKSA9PSAwKQorICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworCisgIHN0ZDo6c3Ry
aW5nIGV4ZV9wYXRoID0gcnRjOjpUb1V0Zjgoc3RkOjp3c3RyaW5nKGJ1ZikpOworICBzdGQ6OnN0
cmluZyBleGVfZGlyID0gRGlyTmFtZShleGVfcGF0aCk7CisgIHJldHVybiBEaXJOYW1lKERpck5h
bWUoZXhlX2RpcikpICsga1BhdGhEZWxpbWl0ZXI7CisjZW5kaWYKK30KKworc3RkOjpzdHJpbmcg
T3V0cHV0UGF0aCgpIHsKKyNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCisgIHJldHVybiBJT1NPdXRw
dXRQYXRoKCk7CisjZWxpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQorICByZXR1cm4ga0FuZHJv
aWRDaHJvbWl1bVRlc3RzUm9vdDsKKyNlbHNlCisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5n
PiBwYXRoX29wdCA9IFByb2plY3RSb290UGF0aCgpOworICBSVENfRENIRUNLKHBhdGhfb3B0KTsK
KyAgc3RkOjpzdHJpbmcgcGF0aCA9ICpwYXRoX29wdCArICJvdXQiOworICBpZiAoIUNyZWF0ZURp
cihwYXRoKSkgeworICAgIHJldHVybiAiLi8iOworICB9CisgIHJldHVybiBwYXRoICsga1BhdGhE
ZWxpbWl0ZXI7CisjZW5kaWYKK30KKworc3RkOjpzdHJpbmcgV29ya2luZ0RpcigpIHsKKyNpZiBk
ZWZpbmVkKFdFQlJUQ19BTkRST0lEKQorICByZXR1cm4ga0FuZHJvaWRDaHJvbWl1bVRlc3RzUm9v
dDsKKyNlbmRpZgorICBjaGFyIHBhdGhfYnVmZmVyW0ZJTEVOQU1FX01BWF07CisgIGlmICghR0VU
X0NVUlJFTlRfRElSKHBhdGhfYnVmZmVyLCBzaXplb2YocGF0aF9idWZmZXIpKSkgeworICAgIGZw
cmludGYoc3RkZXJyLCAiQ2Fubm90IGdldCBjdXJyZW50IGRpcmVjdG9yeSFcbiIpOworICAgIHJl
dHVybiAiLi8iOworICB9IGVsc2UgeworICAgIHJldHVybiBzdGQ6OnN0cmluZyhwYXRoX2J1ZmZl
cik7CisgIH0KK30KKworc3RkOjpzdHJpbmcgUmVzb3VyY2VQYXRoKGNvbnN0IHN0ZDo6c3RyaW5n
JiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHRl
bnNpb24pIHsKKyNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCisgIHJldHVybiBJT1NSZXNvdXJjZVBh
dGgobmFtZSwgZXh0ZW5zaW9uKTsKKyNlbHNlCisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5n
PiBwYXRoX29wdCA9IFByb2plY3RSb290UGF0aCgpOworICBSVENfRENIRUNLKHBhdGhfb3B0KTsK
KyAgc3RkOjpzdHJpbmcgcmVzb3VyY2VzX3BhdGggPSAqcGF0aF9vcHQgKyBrUmVzb3VyY2VzRGly
TmFtZSArIGtQYXRoRGVsaW1pdGVyOworICByZXR1cm4gcmVzb3VyY2VzX3BhdGggKyBuYW1lICsg
Ii4iICsgZXh0ZW5zaW9uOworI2VuZGlmCit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAor
fSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBv
cnQvZmlsZXV0aWxzX292ZXJyaWRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlsc19vdmVycmlkZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE0MWM3Njg2MDcxNmFkNzg5MmVkZGRiZDgzNTk5MzFjZjIwYjAyNmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rl
c3RzdXBwb3J0L2ZpbGV1dGlsc19vdmVycmlkZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmc+CisK
KyNpZm5kZWYgVEVTVF9URVNUU1VQUE9SVF9GSUxFVVRJTFNfT1ZFUlJJREVfSF8KKyNkZWZpbmUg
VEVTVF9URVNUU1VQUE9SVF9GSUxFVVRJTFNfT1ZFUlJJREVfSF8KKworbmFtZXNwYWNlIHdlYnJ0
YyB7CituYW1lc3BhY2UgdGVzdCB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBSZXR1cm5z
IHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHdoZXJlIGxvZyBmaWxl
cyBhbmQgb3RoZXIKKy8vIHRlc3QgYXJ0aWZhY3RzIHNob3VsZCBiZSBwdXQuIFRoZSBvdXRwdXQg
ZGlyZWN0b3J5IGlzIGdlbmVyYWxseSBhIGRpcmVjdG9yeQorLy8gbmFtZWQgIm91dCIgYXQgdGhl
IHByb2plY3Qgcm9vdC4gVGhpcyByb290IGlzIGFzc3VtZWQgdG8gYmUgdHdvIGxldmVscyBhYm92
ZQorLy8gd2hlcmUgdGhlIHRlc3QgYmluYXJ5IGlzIGxvY2F0ZWQ7IHRoaXMgaXMgYmVjYXVzZSB0
ZXN0cyBleGVjdXRlIGluIGEgZGlyCisvLyBvdXQvV2hhdGV2ZXIgcmVsYXRpdmUgdG8gdGhlIHBy
b2plY3Qgcm9vdC4gVGhpcyBjb252ZW50aW9uIGlzIGFsc28gZm9sbG93ZWQKKy8vIGluIENocm9t
aXVtLgorLy8KKy8vIFRoZSBleGNlcHRpb24gaXMgQW5kcm9pZCB3aGVyZSB3ZSB1c2UgL3NkY2Fy
ZC8gaW5zdGVhZC4KKy8vCisvLyBJZiBzeW1ib2xpYyBsaW5rcyBvY2N1ciBpbiB0aGUgcGF0aCB0
aGV5IHdpbGwgYmUgcmVzb2x2ZWQgYW5kIHRoZSBhY3R1YWwKKy8vIGRpcmVjdG9yeSB3aWxsIGJl
IHJldHVybmVkLgorLy8KKy8vIFJldHVybnMgdGhlIHBhdGggV0lUSCBhIHRyYWlsaW5nIHBhdGgg
ZGVsaW1pdGVyLiBJZiB0aGUgcHJvamVjdCByb290IGlzIG5vdAorLy8gZm91bmQsIHRoZSBjdXJy
ZW50IHdvcmtpbmcgZGlyZWN0b3J5ICgiLi8iKSBpcyByZXR1cm5lZCBhcyBhIGZhbGxiYWNrLgor
c3RkOjpzdHJpbmcgT3V0cHV0UGF0aCgpOworCisvLyBHZXRzIHRoZSBjdXJyZW50IHdvcmtpbmcg
ZGlyZWN0b3J5IGZvciB0aGUgZXhlY3V0aW5nIHByb2dyYW0uCisvLyBSZXR1cm5zICIuLyIgaWYg
Zm9yIHNvbWUgcmVhc29uIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBmaW5kIHRoZSB3b3JraW5nCisv
LyBkaXJlY3RvcnkuCitzdGQ6OnN0cmluZyBXb3JraW5nRGlyKCk7CisKKy8vIFJldHVybnMgYSBw
YXRoIHRvIGEgcmVzb3VyY2UgZmlsZSBpbiBbcHJvamVjdC1yb290XS9yZXNvdXJjZXMvIGRpci4K
Ky8vIFJldHVybnMgYW4gYWJzb2x1dGUgcGF0aAorLy8KKy8vIEFyZ3VtZW50czoKKy8vICAgIG5h
bWUgLSBOYW1lIG9mIHRoZSByZXNvdXJjZSBmaWxlLiBJZiBhIHBsYWluIGZpbGVuYW1lIChubyBk
aXJlY3RvcnkgcGF0aCkKKy8vICAgICAgICAgICBpcyBzdXBwbGllZCwgdGhlIGZpbGUgaXMgYXNz
dW1lZCB0byBiZSBsb2NhdGVkIGluIHJlc291cmNlcy8KKy8vICAgICAgICAgICBJZiBhIGRpcmVj
dG9yeSBwYXRoIGlzIHByZXBlbmRlZCB0byB0aGUgZmlsZW5hbWUsIGEgc3ViZGlyZWN0b3J5Cisv
LyAgICAgICAgICAgaGllcmFyY2h5IHJlZmxlY3RpbmcgdGhhdCBwYXRoIGlzIGFzc3VtZWQgdG8g
YmUgcHJlc2VudC4KKy8vICAgIGV4dGVuc2lvbiAtIEZpbGUgZXh0ZW5zaW9uLCB3aXRob3V0IHRo
ZSBkb3QsIGkuZS4gImJtcCIgb3IgInl1diIuCitzdGQ6OnN0cmluZyBSZXNvdXJjZVBhdGgoY29u
c3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHRlbnNpb24pOworCit9
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gVEVTVF9URVNUU1VQUE9SVF9GSUxFVVRJTFNfT1ZF
UlJJREVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRp
bHNfdW5pdHRlc3QuY2MKaW5kZXggYzZkYzg2ZGViMjAwYTNjM2MwMmQyOGQxMDRlMjY1MjY2ODcw
OTgyYS4uZDM5ZjQ2ODAwNDE4ZGE3YzM3Njc2OGZhZDEyM2VlNzE5Njk2MDRiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3Vw
cG9ydC9maWxldXRpbHNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfdW5pdHRlc3QuY2MK
QEAgLTI0LDkgKzI0LDYgQEAKIAogI2lmZGVmIFdJTjMyCiAjZGVmaW5lIGNoZGlyIF9jaGRpcgot
c3RhdGljIGNvbnN0IGNoYXIqIGtQYXRoRGVsaW1pdGVyID0gIlxcIjsKLSNlbHNlCi1zdGF0aWMg
Y29uc3QgY2hhcioga1BhdGhEZWxpbWl0ZXIgPSAiLyI7CiAjZW5kaWYKIAogdXNpbmcgOjp0ZXN0
aW5nOjpFbmRzV2l0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvanBlZ19mcmFtZV93cml0ZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2pw
ZWdfZnJhbWVfd3JpdGVyLmNjCmluZGV4IDUzN2U4NWNmYTVlNTVmMTAwMjkxMTQ0MzJhMjVlOTc3
ZjY4YjVmOTguLjhiZjFlZTQ2MzBlMWYzYjg0YTdkYTQzZmQxNzFjOWQxYjEyNjM0NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVz
dHN1cHBvcnQvanBlZ19mcmFtZV93cml0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9qcGVnX2ZyYW1lX3dyaXRlci5j
YwpAQCAtMTAsNyArMTAsNiBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotI2luY2x1ZGUgImNv
bW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9u
X3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0
L3Rlc3RfYXJ0aWZhY3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC90ZXN0X2FydGlmYWN0cy5jYwppbmRleCAwZjdlMGNkNGZm
ODY2MDZkMGI5YWIyY2NmYmNjYTM1MmEzOTBkN2VlLi45NDM4Y2VmYmM0ZmQ3ZTE4NmJiYzIyZWZi
N2RhYmNhMjg0OWE0NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L3Rlc3RfYXJ0aWZhY3RzLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQv
dGVzdF9hcnRpZmFjdHMuY2MKQEAgLTI0LDkgKzI0LDkgQEAgY29uc3Qgc3RkOjpzdHJpbmcmIERl
ZmF1bHRBcnRpZmFjdFBhdGgoKSB7CiB9CiB9ICAvLyBuYW1lc3BhY2UKIAotREVGSU5FX3N0cmlu
Zyh0ZXN0X2FydGlmYWN0c19kaXIsCi0gICAgICAgICAgICAgIERlZmF1bHRBcnRpZmFjdFBhdGgo
KS5jX3N0cigpLAotICAgICAgICAgICAgICAiVGhlIG91dHB1dCBmb2xkZXIgd2hlcmUgdGVzdCBv
dXRwdXQgc2hvdWxkIGJlIHNhdmVkLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcodGVzdF9hcnRp
ZmFjdHNfZGlyLAorICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdEFydGlmYWN0UGF0aCgpLmNf
c3RyKCksCisgICAgICAgICAgICAgICAgICAgICAiVGhlIG91dHB1dCBmb2xkZXIgd2hlcmUgdGVz
dCBvdXRwdXQgc2hvdWxkIGJlIHNhdmVkLiIpOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVz
cGFjZSB0ZXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvdGVzdF9hcnRpZmFjdHNfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0
L3Rlc3RfYXJ0aWZhY3RzX3VuaXR0ZXN0LmNjCmluZGV4IGM0MjNjZDkwZWFkYTkwOGFmM2M5MmZm
YTlkZTJlMWY4NjE5NmRkYjkuLmRmMDJkMjdjNjcyNWQ2MTY3MjI2ZWYyNDEwZjU3MDQwNTEzYzM5
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvdGVzdHN1cHBvcnQvdGVzdF9hcnRpZmFjdHNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC90ZXN0
X2FydGlmYWN0c191bml0dGVzdC5jYwpAQCAtMTYsMTIgKzE2LDExIEBACiAKICNpbmNsdWRlICJy
dGNfYmFzZS9maWxlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZmxhZ3MuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9wYXRodXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmgi
CiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmls
ZXV0aWxzLmgiCiAKLURFQ0xBUkVfc3RyaW5nKHRlc3RfYXJ0aWZhY3RzX2Rpcik7CitXRUJSVENf
REVDTEFSRV9zdHJpbmcodGVzdF9hcnRpZmFjdHNfZGlyKTsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiBuYW1lc3BhY2UgdGVzdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L3ZjbV9jYXB0dXJlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC92Y21fY2FwdHVyZXIuaAppbmRleCA1OWRmNGM3
MWUyYWE4NjNlMWJjZDg5ZjZmMDAxM2FmZjRhYjkzNDIwLi41ZjQ3MDdmOTExNTUxZjQ0OWNiOGNm
NDJmNDZiNjQwMzYxODBmN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L3ZjbV9jYXB0dXJlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdmNtX2NhcHR1cmVyLmgKQEAgLTEyLDcg
KzEyLDYgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1
di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NhcHR1
cmUvdmlkZW9fY2FwdHVyZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC92aWRlb19lbmNvZGVyX3Byb3h5X2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdmlkZW9fZW5jb2Rlcl9wcm94eV9mYWN0b3J5LmgK
aW5kZXggZTcyODljMDM5OWUyNjY3ZWU4ZjEzMjU2NjQ4ZDYwMzc1NWUzNDVmNC4uOWU1ZWExMmNl
MmJjYmI5MzgyZjMzNTM4MWI1NTliOTU3NDBkZDcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC92aWRlb19lbmNvZGVyX3Byb3h5X2Zh
Y3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L3ZpZGVvX2VuY29kZXJfcHJveHlfZmFjdG9yeS5oCkBAIC03MSwyMyArNzEsMTcgQEAgY2xh
c3MgVmlkZW9FbmNvZGVyUHJveHlGYWN0b3J5IGZpbmFsIDogcHVibGljIFZpZGVvRW5jb2RlckZh
Y3RvcnkgewogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4X3BheWxvYWRfc2l6ZSkg
b3ZlcnJpZGUgewogICAgICAgcmV0dXJuIGVuY29kZXJfLT5Jbml0RW5jb2RlKGNvbmZpZywgbnVt
YmVyX29mX2NvcmVzLCBtYXhfcGF5bG9hZF9zaXplKTsKICAgICB9Ci0gICAgVmlkZW9FbmNvZGVy
OjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qgb3ZlcnJpZGUgewot
ICAgICAgcmV0dXJuIGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKLSAgICB9CiAgICAg
aW50MzJfdCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgICAgICAgIEVuY29kZWRJ
bWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGUgewogICAgICAgcmV0dXJuIGVuY29kZXJf
LT5SZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soY2FsbGJhY2spOwogICAgIH0KICAgICBp
bnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZSB7IHJldHVybiBlbmNvZGVyXy0+UmVsZWFzZSgpOyB9
Ci0gICAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywg
aW50NjRfdCBydHQpIG92ZXJyaWRlIHsKLSAgICAgIHJldHVybiBlbmNvZGVyXy0+U2V0Q2hhbm5l
bFBhcmFtZXRlcnMocGFja2V0X2xvc3MsIHJ0dCk7Ci0gICAgfQogICAgIGludDMyX3QgU2V0UmF0
ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgcmF0ZV9hbGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVyYXRlKSBvdmVy
cmlkZSB7CiAgICAgICByZXR1cm4gZW5jb2Rlcl8tPlNldFJhdGVBbGxvY2F0aW9uKHJhdGVfYWxs
b2NhdGlvbiwgZnJhbWVyYXRlKTsKICAgICB9Ci0gICAgY29uc3QgY2hhciogSW1wbGVtZW50YXRp
b25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgICAgcmV0dXJuIGVuY29kZXJfLT5JbXBsZW1l
bnRhdGlvbk5hbWUoKTsKKyAgICBWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIEdldEVuY29kZXJJ
bmZvKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgICAgcmV0dXJuIGVuY29kZXJfLT5HZXRFbmNvZGVy
SW5mbygpOwogICAgIH0KIAogICAgIFZpZGVvRW5jb2RlciogY29uc3QgZW5jb2Rlcl87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3dp
bi9ydW5fbG9vcF93aW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L3dpbi9ydW5fbG9vcF93aW4uY2MKaW5kZXggMjhkYzkzMzRlMDg2ZmY1OTE5YzYz
OWJkNjYwMjc1ZjU2ODUxYjllNC4uZWU5MzYzNThmYTZkMmJlMDNmYTc1OThiZDg0ODcwYjQ3YjVm
OTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC93aW4vcnVuX2xvb3Bfd2luLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvd2luL3J1bl9sb29wX3dpbi5jYwpAQCAtMTgsMTUgKzE4
LDE4IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIAotdm9pZCBQcmVz
c0VudGVyVG9Db250aW51ZSgpIHsKK3ZvaWQgUHJlc3NFbnRlclRvQ29udGludWUoU2luZ2xlVGhy
ZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nICZ0YXNrX3F1ZXVlKSB7CiAgIHB1dHMoIj4+IFByZXNz
IEVOVEVSIHRvIGNvbnRpbnVlLi4uIik7CiAKLSAgTVNHIG1zZzsKLSAgQk9PTCByZXQ7Ci0gIHdo
aWxlICgocmV0ID0gR2V0TWVzc2FnZSgmbXNnLCBOVUxMLCAwLCAwKSkgIT0gMCkgewotICAgIGFz
c2VydChyZXQgIT0gLTEpOwotICAgIFRyYW5zbGF0ZU1lc3NhZ2UoJm1zZyk7Ci0gICAgRGlzcGF0
Y2hNZXNzYWdlKCZtc2cpOworICB3aGlsZSAoIV9rYmhpdCgpIHx8IF9nZXRjaCgpICE9ICdccicp
IHsKKyAgICAvLyBEcml2ZSB0aGUgbWVzc2FnZSBsb29wIGZvciB0aGUgdGhyZWFkIHJ1bm5pbmcg
dGhlIHRhc2tfcXVldWUKKyAgICB0YXNrX3F1ZXVlLlNlbmRUYXNrKFsmXSgpIHsKKyAgICAgIE1T
RyBtc2c7CisgICAgICBpZiAoUGVla01lc3NhZ2UoJm1zZywgTlVMTCwgMCwgMCwgUE1fUkVNT1ZF
KSkgeworICAgICAgICBUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOworICAgICAgICBEaXNwYXRjaE1l
c3NhZ2UoJm1zZyk7CisgICAgICB9CisgICAgfSk7CiAgIH0KIH0KIH0gIC8vIG5hbWVzcGFjZSB0
ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvYW5kcm9pZC9zdXBwcmVzc2lvbnMueG1sIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2FuZHJvaWQvc3VwcHJlc3Np
b25zLnhtbAppbmRleCA2N2U1YjQxNjUzMDJmZTgzYzFiZmVjY2E2ZWM4NmEyMzUyMmRhMTlhLi40
NTM3NWMyZmU3MWM4ZDM2MjZjY2Y5ZmQwMWU2MzA1ZDVlY2EzMjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvYW5kcm9p
ZC9zdXBwcmVzc2lvbnMueG1sCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9hbmRyb2lkL3N1cHByZXNzaW9ucy54bWwKQEAgLTIyLDcg
KzIyLDEwIEBACiAKICAgPGlzc3VlIGlkPSJHb29nbGVBcHBJbmRleGluZ1dhcm5pbmciIHNldmVy
aXR5PSJpZ25vcmUiLz4KICAgPGlzc3VlIGlkPSJNaXNzaW5nUmVnaXN0ZXJlZCIgc2V2ZXJpdHk9
Imlnbm9yZSIvPgotCisgIDxpc3N1ZSBpZD0iTGludEVycm9yIj4KKyAgICA8IS0tIFdlIG5vIGxv
bmdlciBzdXBwbHkgY2xhc3MgZmlsZXMgdG8gbGludC4gLS0+CisgICAgPGlnbm9yZSByZWdleHA9
Ik5vIGAuY2xhc3NgIGZpbGVzIHdlcmUgZm91bmQgaW4gcHJvamVjdCIvPgorICA8L2lzc3VlPgog
ICA8IS0tIFRoZXNlIGFyZSBqdXN0IGZyb20gdGhlIGR1bW15IEFuZHJvaWRNYW5pZmVzdC54bWwg
d2UgdXNlIGZvciBsaW50aW5nLgogICAgICAgIEl0J3MgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFz
IHRoaXMgZmlsZS4gLS0+CiAgIDxpc3N1ZSBpZD0iTWlzc2luZ0FwcGxpY2F0aW9uSWNvbiIgc2V2
ZXJpdHk9Imlnbm9yZSIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2F1dG9yb2xsZXIvcm9sbF9kZXBzLnB5IGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2F1dG9y
b2xsZXIvcm9sbF9kZXBzLnB5CmluZGV4IDk5OTljNmY2YWZiZjZkZjFkYTExMGQxNTIwMzlmMmRh
MjBjMzhkZjUuLmQzYThiZGJjYThmOWZiMjdmMmYxMTM0Zjg4ZGQwNTFkOWVlMWRlOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9hdXRvcm9sbGVyL3JvbGxfZGVwcy5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvYXV0b3JvbGxlci9yb2xsX2RlcHMucHkK
QEAgLTcwLDYgKzcwLDggQEAgQU5EUk9JRF9ERVBTX0VORCA9IHInPT09IEFORFJPSURfREVQUyBH
ZW5lcmF0ZWQgQ29kZSBFbmQgPT09JwogIyBMb2NhdGlvbiBvZiBhdXRvbWljYWxseSBnYXRoZXJl
ZCBhbmRyb2lkIGRlcHMuCiBBTkRST0lEX0RFUFNfUEFUSCA9ICdzcmMvdGhpcmRfcGFydHkvYW5k
cm9pZF9kZXBzLycKIAorTk9USUZZX0VNQUlMID0gJ3dlYnJ0Yy10cm9vcGVyQGdyb3RhdGlvbnMu
YXBwc3BvdG1haWwuY29tJworCiAKIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4oQ0hFQ0tP
VVRfU1JDX0RJUiwgJ2J1aWxkJykpCiBpbXBvcnQgZmluZF9kZXBvdF90b29scwpAQCAtMjU2LDgg
KzI1OCw5IEBAIGRlZiBCdWlsZERlcHNlbnRyeURpY3QoZGVwc19kaWN0KToKIAogCiBkZWYgX0Zp
bmRDaGFuZ2VkQ2lwZFBhY2thZ2VzKHBhdGgsIG9sZF9wa2dzLCBuZXdfcGtncyk6Ci0gIGFzc2Vy
dCAoe3BbJ3BhY2thZ2UnXSBmb3IgcCBpbiBvbGRfcGtnc30gPT0KLSAgICAgICAgICB7cFsncGFj
a2FnZSddIGZvciBwIGluIG5ld19wa2dzfSkKKyAgcGtnc19lcXVhbCA9ICh7cFsncGFja2FnZSdd
IGZvciBwIGluIG9sZF9wa2dzfSA9PQorICAgICAge3BbJ3BhY2thZ2UnXSBmb3IgcCBpbiBuZXdf
cGtnc30pCisgIGFzc2VydCBwa2dzX2VxdWFsLCAnT2xkOiAlc1xuIE5ldzogJXMnICUgKG9sZF9w
a2dzLCBuZXdfcGtncykKICAgZm9yIG9sZF9wa2cgaW4gb2xkX3BrZ3M6CiAgICAgZm9yIG5ld19w
a2cgaW4gbmV3X3BrZ3M6CiAgICAgICBvbGRfdmVyc2lvbiA9IG9sZF9wa2dbJ3ZlcnNpb24nXQpA
QCAtNTkyLDEwICs1OTUsMTEgQEAgZGVmIF9VcGxvYWRDTChjb21taXRfcXVldWVfbW9kZSk6CiAg
ICAgLSAxOiBSdW4gdHJ5Ym90cyBidXQgZG8gbm90IHN1Ym1pdCB0byBDUS4KICAgICAtIDA6IFNr
aXAgQ1EsIHVwbG9hZCBvbmx5LgogICAiIiIKLSAgY21kID0gWydnaXQnLCAnY2wnLCAndXBsb2Fk
JywgJy0tZm9yY2UnLCAnLS1ieXBhc3MtaG9va3MnXQorICBjbWQgPSBbJ2dpdCcsICdjbCcsICd1
cGxvYWQnLCAnLS1mb3JjZScsICctLWJ5cGFzcy1ob29rcycsICctLXNlbmQtbWFpbCddCisgIGNt
ZC5leHRlbmQoWyctLWNjJywgTk9USUZZX0VNQUlMXSkKICAgaWYgY29tbWl0X3F1ZXVlX21vZGUg
Pj0gMjoKICAgICBsb2dnaW5nLmluZm8oJ1NlbmRpbmcgdGhlIENMIHRvIHRoZSBDUS4uLicpCi0g
ICAgY21kLmV4dGVuZChbJy0tdXNlLWNvbW1pdC1xdWV1ZScsICctLXNlbmQtbWFpbCddKQorICAg
IGNtZC5leHRlbmQoWyctLXVzZS1jb21taXQtcXVldWUnXSkKICAgZWxpZiBjb21taXRfcXVldWVf
bW9kZSA+PSAxOgogICAgIGxvZ2dpbmcuaW5mbygnU3RhcnRpbmcgQ1EgZHJ5IHJ1bi4uLicpCiAg
ICAgY21kLmV4dGVuZChbJy0tY3EtZHJ5LXJ1biddKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2NvdmVyYWdlL2dlbmVy
YXRlX2NvdmVyYWdlX2NvbW1hbmQucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvY292ZXJhZ2UvZ2VuZXJhdGVfY292ZXJhZ2VfY29tbWFu
ZC5weQppbmRleCBhNDAyZjM4ZGE3ZDQ1ODkzZGJhNzdkMzJhZGM4M2VhY2IzMTJkMDczLi44NTY2
NjY4MTZkZmYxNjU5ZDJmNjgxYTYyODA3ZjQ3NzI3OGMzZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvY292ZXJhZ2Uv
Z2VuZXJhdGVfY292ZXJhZ2VfY29tbWFuZC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvY292ZXJhZ2UvZ2VuZXJhdGVfY292ZXJh
Z2VfY29tbWFuZC5weQpAQCAtMjIsMTMgKzIyLDEzIEBAIFRFU1RTID0gWwogICAndmlkZW9fZW5n
aW5lX3Rlc3RzJywKICAgJ3Rvb2xzX3VuaXR0ZXN0cycsCiAgICd0ZXN0X3N1cHBvcnRfdW5pdHRl
c3RzJywKKyAgJ3Nsb3dfdGVzdHMnLAogICAnc3lzdGVtX3dyYXBwZXJzX3VuaXR0ZXN0cycsCiAg
ICdydGNfdW5pdHRlc3RzJywKICAgJ3J0Y19zdGF0c191bml0dGVzdHMnLAogICAncnRjX3BjX3Vu
aXR0ZXN0cycsCiAgICdydGNfbWVkaWFfdW5pdHRlc3RzJywKICAgJ3BlZXJjb25uZWN0aW9uX3Vu
aXR0ZXN0cycsCi0gICdvcnRjX3VuaXR0ZXN0cycsCiAgICdtb2R1bGVzX3VuaXR0ZXN0cycsCiAg
ICdtb2R1bGVzX3Rlc3RzJywKICAgJ2xvd19iYW5kd2lkdGhfYXVkaW9fdGVzdCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvY292ZXJhZ2UvZ2VuZXJhdGVfaW9zX2NvdmVyYWdlX2NvbW1hbmQucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvY292ZXJhZ2UvZ2Vu
ZXJhdGVfaW9zX2NvdmVyYWdlX2NvbW1hbmQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgxZWUyYzYyYjBhNzVk
MmU5YWNlOWMyYWZjOTVmZjZkYjYyYzhkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9jb3ZlcmFnZS9nZW5l
cmF0ZV9pb3NfY292ZXJhZ2VfY29tbWFuZC5weQpAQCAtMCwwICsxLDE3NCBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorIyB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyMgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAorIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisjIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorCisiIiJHZW5lcmF0ZXMgY29tbWFuZC1saW5lIGluc3RydWN0aW9ucyB0
byBwcm9kdWNlIG9uZS10aW1lIGlPUyBjb3ZlcmFnZSB1c2luZworY292ZXJhZ2UucHkuCisKK1Ro
aXMgc2NyaXB0IGlzIHVzYWJsZSBmb3IgYm90aCByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvci4K
K0J1dCBmb3IgcmVhbCBkZXZpY2VzIGFjdHVhbCBleGVjdXRpb24gc2hvdWxkIGJlIGRvbmUgbWFu
dWFsbHkgZnJvbSBYY29kZQorYW5kIGNvdmVyYWdlLnByb2ZyYXcgZmlsZXMgc2hvdWxkIGJlIGFs
c28gY29waWVkIG1hbnVhbGx5IGZyb20gdGhlIGRldmljZS4KKworQWRkaXRpb25hbCBwcmVyZXF1
aXNpdGVzOgorCisxLiBYY29kZSAxMCsgd2l0aCBpUGhvbmUgU2ltdWxhdG9yIFNESy4gQ2FuIGJl
IGluc3RhbGxlZCBieSBjb21tYW5kOgorICAgJCBtYWNfdG9vbGNoYWluIGluc3RhbGwgLWtpbmQg
aW9zIC14Y29kZS12ZXJzaW9uIDEwbDIzMm0gXAorICAgICAtb3V0cHV0LWRpciBidWlsZC9tYWNf
ZmlsZXMvWGNvZGUuYXBwCisKKzIuIEZvciBjb21wdXRpbmcgY292ZXJhZ2Ugb24gcmVhbCBkZXZp
Y2UgeW91IHByb2JhYmx5IGFsc28gbmVlZCB0byBhcHBseQorZm9sbG93aW5nIHBhdGNoIHRvIGNv
ZGVfY292ZXJhZ2UvY292ZXJhZ2UucHkgc2NyaXB0OgorCis9PT09PT09PT09IEJFR0lOTklORyBP
RiBQQVRDSCA9PT09PT09PT09CistLS0gYS9jb2RlX2NvdmVyYWdlL2NvdmVyYWdlLnB5CisrKysg
Yi9jb2RlX2NvdmVyYWdlL2NvdmVyYWdlLnB5CitAQCAtNjkzLDggKzY5Myw3IEBAIGRlZiBfQWRk
QXJjaEFyZ3VtZW50Rm9ySU9TSWZOZWVkZWQoY21kX2xpc3QsIG51bV9hcmNocyk6CisgICB0byB1
c2UsIGFuZCBvbmUgYXJjaGl0ZWN0dXJlIG5lZWRzIHRvIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBi
aW5hcnkuCisgICAiIiAiCitpZiBfSXNJT1MoKToKKy0gICAgY21kX2xpc3QuZXh0ZW5kKFsnLWFy
Y2g9eDg2XzY0J10gKiBudW1fYXJjaHMpCisrICAgIGNtZF9saXN0LmV4dGVuZChbJy1hcmNoPWFy
bTY0J10gKiBudW1fYXJjaHMpCisKKworZGVmIF9HZXRCaW5hcnlQYXRoKGNvbW1hbmQpOgorQEAg
LTgzNiw4ICs4MzUsOCBAQCBkZWYgX0dldEJpbmFyeVBhdGhzRnJvbVRhcmdldHModGFyZ2V0cywg
YnVpbGRfZGlyKToKKyAgYmluYXJ5X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCB0YXJn
ZXQpCisgIGlmIGNvdmVyYWdlX3V0aWxzLkdldEhvc3RQbGF0Zm9ybSgpID09ICd3aW4nOgorICAg
IGJpbmFyeV9wYXRoICs9ICcuZXhlJworKyAgICBlbGlmIGNvdmVyYWdlX3V0aWxzLkdldEhvc3RQ
bGF0Zm9ybSgpID09ICdtYWMnOgorKyAgICAgIGJpbmFyeV9wYXRoICs9ICcuYXBwLyVzJyAlIHRh
cmdldAorCitpZiBvcy5wYXRoLmV4aXN0cyhiaW5hcnlfcGF0aCk6CisgIGJpbmFyeV9wYXRocy5h
cHBlbmQoYmluYXJ5X3BhdGgpCis9PT09PT09PT09IEVORElORyBPRiBQQVRDSCA9PT09PT09PT09
CisKKyIiIgorCitpbXBvcnQgc3lzCisKK0RJUkVDVE9SWSA9ICdvdXQvY292ZXJhZ2UnCisKK1RF
U1RTID0gWworICAnYXVkaW9fZGVjb2Rlcl91bml0dGVzdHMnLAorICAnY29tbW9uX2F1ZGlvX3Vu
aXR0ZXN0cycsCisgICdjb21tb25fdmlkZW9fdW5pdHRlc3RzJywKKyAgJ21vZHVsZXNfdGVzdHMn
LAorICAnbW9kdWxlc191bml0dGVzdHMnLAorICAncnRjX21lZGlhX3VuaXR0ZXN0cycsCisgICdy
dGNfcGNfdW5pdHRlc3RzJywKKyAgJ3J0Y19zdGF0c191bml0dGVzdHMnLAorICAncnRjX3VuaXR0
ZXN0cycsCisgICdzbG93X3Rlc3RzJywKKyAgJ3N5c3RlbV93cmFwcGVyc191bml0dGVzdHMnLAor
ICAndGVzdF9zdXBwb3J0X3VuaXR0ZXN0cycsCisgICd0b29sc191bml0dGVzdHMnLAorICAndmlk
ZW9fY2FwdHVyZV90ZXN0cycsCisgICd2aWRlb19lbmdpbmVfdGVzdHMnLAorICAnd2VicnRjX25v
bnBhcmFsbGVsX3Rlc3RzJywKK10KKworWENfVEVTVFMgPSBbCisgICdhcHBydGNtb2JpbGVfdGVz
dHMnLAorICAnc2RrX2ZyYW1ld29ya191bml0dGVzdHMnLAorICAnc2RrX3VuaXR0ZXN0cycsCitd
CisKKworZGVmIEZvcm1hdElvc3NpbVRlc3QodGVzdF9uYW1lLCBpc194Y3Rlc3Q9RmFsc2UpOgor
ICBhcmdzID0gWyclcy8lcy5hcHAnICUgKERJUkVDVE9SWSwgdGVzdF9uYW1lKV0KKyAgaWYgaXNf
eGN0ZXN0OgorICAgIGFyZ3MgKz0gWyclcy8lc19tb2R1bGUueGN0ZXN0JyAlIChESVJFQ1RPUlks
IHRlc3RfbmFtZSldCisKKyAgcmV0dXJuICctYyBcJyVzL2lvc3NpbSAlc1wnJyAlIChESVJFQ1RP
UlksICcgJy5qb2luKGFyZ3MpKQorCisKK2RlZiBHZXRHTkFyZ3MoaXNfc2ltdWxhdG9yKToKKyAg
dGFyZ2V0X2NwdSA9ICd4NjQnIGlmIGlzX3NpbXVsYXRvciBlbHNlICdhcm02NCcKKyAgcmV0dXJu
IChbXSArCisgICAgICAgICAgWyd0YXJnZXRfb3M9ImlvcyInXSArCisgICAgICAgICAgWyd0YXJn
ZXRfY3B1PSIlcyInICUgdGFyZ2V0X2NwdV0gKworICAgICAgICAgIFsndXNlX2NsYW5nX2NvdmVy
YWdlPXRydWUnXSArCisgICAgICAgICAgWydpc19jb21wb25lbnRfYnVpbGQ9ZmFsc2UnXSArCisg
ICAgICAgICAgWydkY2hlY2tfYWx3YXlzX29uPXRydWUnXSkKKworCitkZWYgR2VuZXJhdGVJT1NT
aW11bGF0b3JDb21tYW5kKCk6CisgIGduX2FyZ3Nfc3RyaW5nID0gJyAnLmpvaW4oR2V0R05Bcmdz
KGlzX3NpbXVsYXRvcj1UcnVlKSkKKyAgZ25fY21kID0gWydnbicsICdnZW4nLCBESVJFQ1RPUlks
ICctLWFyZ3M9XCclc1wnJyAlIGduX2FyZ3Nfc3RyaW5nXQorCisgIGNvdmVyYWdlX2NtZCA9ICgK
KyAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJ3Rvb2xzL2NvZGVfY292ZXJhZ2UvY292ZXJhZ2UucHkn
XSArCisgICAgICBbIiVzLmFwcCIgJSB0IGZvciB0IGluIFhDX1RFU1RTICsgVEVTVFNdICsKKyAg
ICAgIFsnLWIgJXMnICUgRElSRUNUT1JZLCAnLW8gb3V0L3JlcG9ydCddICsKKyAgICAgIFsnLWk9
XCcuKi9vdXQvLip8LiovdGhpcmRfcGFydHkvLip8Lip0ZXN0LipcJyddICsKKyAgICAgIFtGb3Jt
YXRJb3NzaW1UZXN0KHQsIGlzX3hjdGVzdD1UcnVlKSBmb3IgdCBpbiBYQ19URVNUU10gKworICAg
ICAgW0Zvcm1hdElvc3NpbVRlc3QodCwgaXNfeGN0ZXN0PUZhbHNlKSBmb3IgdCBpbiBURVNUU10K
KyAgKQorCisgIHByaW50ICdUbyBnZXQgY29kZSBjb3ZlcmFnZSB1c2luZyBpT1Mgc2ltdWxhdG9y
IGp1c3QgcnVuIGZvbGxvd2luZyBjb21tYW5kczonCisgIHByaW50ICcnCisgIHByaW50ICcgJy5q
b2luKGduX2NtZCkKKyAgcHJpbnQgJycKKyAgcHJpbnQgJyAnLmpvaW4oY292ZXJhZ2VfY21kKQor
ICByZXR1cm4gMAorCisKK2RlZiBHZW5lcmF0ZUlPU0RldmljZUNvbW1hbmQoKToKKyAgZ25fYXJn
c19zdHJpbmcgPSAnICcuam9pbihHZXRHTkFyZ3MoaXNfc2ltdWxhdG9yPUZhbHNlKSkKKworICBj
b3ZlcmFnZV9yZXBvcnRfY21kID0gKAorICAgICAgW3N5cy5leGVjdXRhYmxlLCAndG9vbHMvY29k
ZV9jb3ZlcmFnZS9jb3ZlcmFnZS5weSddICsKKyAgICAgIFsnJXMuYXBwJyAlIHQgZm9yIHQgaW4g
VEVTVFNdICsKKyAgICAgIFsnLWIgJXMnICUgRElSRUNUT1JZXSArCisgICAgICBbJy1vIG91dC9y
ZXBvcnQnXSArCisgICAgICBbJy1wICVzL21lcmdlZC5wcm9mZGF0YScgJSBESVJFQ1RPUlldICsK
KyAgICAgIFsnLWk9XCcuKi9vdXQvLip8LiovdGhpcmRfcGFydHkvLip8Lip0ZXN0LipcJyddCisg
ICkKKworICBwcmludCAnQ29tcHV0aW5nIGNvZGUgY292ZXJhZ2UgZm9yIHJlYWwgaU9TIGRldmlj
ZSBpcyBhIGxpdHRsZSBiaXQgdGVkaW91cy4nCisgIHByaW50ICcnCisgIHByaW50ICdZb3Ugd2ls
bCBuZWVkOicKKyAgcHJpbnQgJycKKyAgcHJpbnQgJzEuIEdlbmVyYXRlIHhjb2RlIHByb2plY3Qg
YW5kIG9wZW4gaXQgd2l0aCBYY29kZSAxMCs6JworICBwcmludCAnICBnbiBnZW4gJXMgLS1pZGU9
eGNvZGUgLS1hcmdzPVwnJXNcJycgJSAoRElSRUNUT1JZLCBnbl9hcmdzX3N0cmluZykKKyAgcHJp
bnQgJyAgb3BlbiAlcy9hbGwueGN3b3Jrc3BhY2UnICUgRElSRUNUT1JZCisgIHByaW50ICcnCisg
IHByaW50ICcyLiBFeGVjdXRlIHRoZXNlIFJ1biB0YXJnZXRzIG1hbnVhbGx5IHdpdGggWGNvZGUg
UnVuIGJ1dHRvbiBhbmQgJworICBwcmludCAnbWFudWFsbHkgc2F2ZSBnZW5lcmF0ZWQgY292ZXJh
Z2UucHJvZnJhdyBmaWxlIHRvICVzOicgJSBESVJFQ1RPUlkKKyAgcHJpbnQgJ1xuJy5qb2luKCct
ICVzJyAlIHQgZm9yIHQgaW4gVEVTVFMpCisgIHByaW50ICcnCisgIHByaW50ICczLiBFeGVjdXRl
IHRoZXNlIFRlc3QgdGFyZ2V0cyBtYW51YWxseSB3aXRoIFhjb2RlIFRlc3QgYnV0dG9uIGFuZCAn
CisgIHByaW50ICdtYW51YWxseSBzYXZlIGdlbmVyYXRlZCBjb3ZlcmFnZS5wcm9mcmF3IGZpbGUg
dG8gJXM6JyAlIERJUkVDVE9SWQorICBwcmludCAnXG4nLmpvaW4oJy0gJXMnICUgdCBmb3IgdCBp
biBYQ19URVNUUykKKyAgcHJpbnQgJycKKyAgcHJpbnQgJzQuIE1lcmdlICoucHJvZnJhdyBmaWxl
cyB0byAqLnByb2ZkYXRhIHVzaW5nIGxsdm0tcHJvZmRhdGEgdG9vbDonCisgIHByaW50ICgnICBi
dWlsZC9tYWNfZmlsZXMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9Ub29sY2hhaW5zLycg
KworICAgICAgICAgJ1hjb2RlRGVmYXVsdC54Y3Rvb2xjaGFpbi91c3IvYmluL2xsdm0tcHJvZmRh
dGEgbWVyZ2UgJyArCisgICAgICAgICAnLW8gJXMvbWVyZ2VkLnByb2ZkYXRhICcgJSBESVJFQ1RP
UlkgKworICAgICAgICAgJy1zcGFyc2U9dHJ1ZSAlcy8qLnByb2ZyYXcnICUgRElSRUNUT1JZKQor
ICBwcmludCAnJworICBwcmludCAnNS4gR2VuZXJhdGUgY292ZXJhZ2UgcmVwb3J0OicKKyAgcHJp
bnQgJyAgJyArICcgJy5qb2luKGNvdmVyYWdlX3JlcG9ydF9jbWQpCisgIHJldHVybiAwCisKKwor
ZGVmIE1haW4oKToKKyAgaWYgbGVuKHN5cy5hcmd2KSA8IDI6CisgICAgcHJpbnQgJ1BsZWFzZSBz
cGVjaWZ5IHR5cGUgb2YgY292ZXJhZ2U6JworICAgIHByaW50ICcgICVzIHNpbXVsYXRvcicgJSBz
eXMuYXJndlswXQorICAgIHByaW50ICcgICVzIGRldmljZScgJSBzeXMuYXJndlswXQorICBlbGlm
IHN5cy5hcmd2WzFdID09ICdzaW11bGF0b3InOgorICAgIEdlbmVyYXRlSU9TU2ltdWxhdG9yQ29t
bWFuZCgpCisgIGVsaWYgc3lzLmFyZ3ZbMV0gPT0gJ2RldmljZSc6CisgICAgR2VuZXJhdGVJT1NE
ZXZpY2VDb21tYW5kKCkKKyAgZWxzZToKKyAgICBwcmludCAnVW5zdXBwb3J0ZWQgdHlwZSBvZiBj
b3ZlcmFnZScKKworICByZXR1cm4gMAorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBz
eXMuZXhpdChNYWluKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvZ25fY2hlY2tfYXV0b2ZpeC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9nbl9jaGVja19h
dXRvZml4LnB5CmluZGV4IGI5Mzk2MzZkMGM4MzFlOTI4NzcyMzg5YWI1ZjE5MTU1ZWRkZWZhNmYu
LmU0NGY3MTIyZGZmZjllZjAzN2NiYzlkNDYwNjJjY2M5NDYyYTc1OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9nbl9j
aGVja19hdXRvZml4LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rvb2xzX3dlYnJ0Yy9nbl9jaGVja19hdXRvZml4LnB5CkBAIC0zMSw2ICszMSw5IEBA
IGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKIFNDUklQVF9ESVIgPSBvcy5w
YXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKIAorQ0hST01JVU1fRElSUyA9
IFsnYmFzZScsICdidWlsZCcsICdidWlsZHRvb2xzJywKKyAgICAgICAgICAgICAgICAgJ3Rlc3Rp
bmcnLCAndGhpcmRfcGFydHknLCAndG9vbHMnXQorCiBUQVJHRVRfUkUgPSByZS5jb21waWxlKAog
ICAgIHInKD9QPGluZGVudGF0aW9uX2xldmVsPlxzKilcdypcKCIoP1A8dGFyZ2V0X25hbWU+XHcq
KSJcKSB7JCcpCiAKQEAgLTg4LDIyICs5MSw0OCBAQCBkZWYgRml4RXJyb3JzKGZpbGVuYW1lLCBt
aXNzaW5nX2RlcHMsIGRlbGV0ZWRfc291cmNlcyk6CiAKICAgUnVuKFsnZ24nLCAnZm9ybWF0Jywg
ZmlsZW5hbWVdKQogCitkZWYgRmlyc3ROb25FbXB0eShpdGVyYWJsZSk6CisgICIiIlJldHVybiBm
aXJzdCBpdGVtIHdoaWNoIGV2YWx1YXRlcyB0byBUcnVlLCBvciBmYWxsYmFjayB0byBOb25lLiIi
IgorICByZXR1cm4gbmV4dCgoeCBmb3IgeCBpbiBpdGVyYWJsZSBpZiB4KSwgTm9uZSkKKwogZGVm
IFJlYmFzZShiYXNlX3BhdGgsIGRlcGVuZGVuY3lfcGF0aCwgZGVwZW5kZW5jeSk6Ci0gIGJhc2Vf
cGF0aCA9IGJhc2VfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKLSAgZGVwZW5kZW5jeV9wYXRoID0g
ZGVwZW5kZW5jeV9wYXRoLnNwbGl0KG9zLnBhdGguc2VwKQotCi0gIGZpcnN0X2RpZmZlcmVuY2Ug
PSBOb25lCi0gIHNob3J0ZXN0X2xlbmd0aCA9IG1pbihsZW4oZGVwZW5kZW5jeV9wYXRoKSwgbGVu
KGJhc2VfcGF0aCkpCi0gIGZvciBpIGluIHJhbmdlKHNob3J0ZXN0X2xlbmd0aCk6Ci0gICAgaWYg
ZGVwZW5kZW5jeV9wYXRoW2ldICE9IGJhc2VfcGF0aFtpXToKLSAgICAgIGZpcnN0X2RpZmZlcmVu
Y2UgPSBpCi0gICAgICBicmVhawotCi0gIGZpcnN0X2RpZmZlcmVuY2UgPSBmaXJzdF9kaWZmZXJl
bmNlIG9yIHNob3J0ZXN0X2xlbmd0aAotICBiYXNlX3BhdGggPSBiYXNlX3BhdGhbZmlyc3RfZGlm
ZmVyZW5jZTpdCi0gIGRlcGVuZGVuY3lfcGF0aCA9IGRlcGVuZGVuY3lfcGF0aFtmaXJzdF9kaWZm
ZXJlbmNlOl0KLSAgcmV0dXJuIChvcy5wYXRoLnNlcC5qb2luKChbJy4uJ10gKiBsZW4oYmFzZV9w
YXRoKSkgKyBkZXBlbmRlbmN5X3BhdGgpICsKLSAgICAgICAgICAnOicgKyBkZXBlbmRlbmN5KQor
ICAiIiJBZGFwdCBwYXRocyBzbyB0aGV5IHdvcmsgYm90aCBpbiBzdGFuZC1hbG9uZSBXZWJSVEMg
YW5kIENocm9taXVtIHRyZWUuCisKKyAgVG8gY29wZSB3aXRoIHZhcnlpbmcgdG9wLWxldmVsIGRp
cmVjdG9yeSAoV2ViUlRDIFZTIENocm9taXVtKSwgd2UgdXNlOgorICAgICogcmVsYXRpdmUgcGF0
aHMgZm9yIFdlYlJUQyBtb2R1bGVzLgorICAgICogYWJzb2x1dGUgcGF0aHMgZm9yIHNoYXJlZCBv
bmVzLgorICBFLmcuICcvL2NvbW1vbl9hdWRpby8uLi4nIC0+ICcuLi8uLi9jb21tb25fYXVkaW8v
JworICAgICAgICcvL3RoaXJkX3BhcnR5Ly4uLicgcmVtYWlucyBhcyBpcy4KKworICBBcmdzOgor
ICAgIGJhc2VfcGF0aDogY3VycmVudCBtb2R1bGUgcGF0aCAgKEUuZy4gJy8vdmlkZW8nKQorICAg
IGRlcGVuZGVuY3lfcGF0aDogcGF0aCBmcm9tIHJvb3QgKEUuZy4gJy8vcnRjX2Jhc2UvdGltZScp
CisgICAgZGVwZW5kZW5jeTogdGFyZ2V0IGl0c2VsZiAgICAgICAoRS5nLiAndGltZXN0YW1wX2V4
dHJhcG9sYXRvcicpCisKKyAgUmV0dXJuczoKKyAgICBGdWxsIHRhcmdldCBwYXRoIChFLmcuICcu
Li9ydGNfYmFzZS90aW1lOnRpbWVzdGFtcF9leHRyYXBvbGF0b3InKS4KKyAgIiIiCisKKyAgcm9v
dCA9IEZpcnN0Tm9uRW1wdHkoZGVwZW5kZW5jeV9wYXRoLnNwbGl0KCcvJykpCisgIGlmIHJvb3Qg
aW4gQ0hST01JVU1fRElSUzoKKyAgICAjIENocm9taXVtIHBhdGhzIG11c3QgcmVtYWluIGFic29s
dXRlLiBFLmcuIC8vdGhpcmRfcGFydHkvL2Fic2VpbC1jcHAuLi4KKyAgICByZWJhc2VkID0gZGVw
ZW5kZW5jeV9wYXRoCisgIGVsc2U6CisgICAgYmFzZV9wYXRoID0gYmFzZV9wYXRoLnNwbGl0KG9z
LnBhdGguc2VwKQorICAgIGRlcGVuZGVuY3lfcGF0aCA9IGRlcGVuZGVuY3lfcGF0aC5zcGxpdChv
cy5wYXRoLnNlcCkKKworICAgIGZpcnN0X2RpZmZlcmVuY2UgPSBOb25lCisgICAgc2hvcnRlc3Rf
bGVuZ3RoID0gbWluKGxlbihkZXBlbmRlbmN5X3BhdGgpLCBsZW4oYmFzZV9wYXRoKSkKKyAgICBm
b3IgaSBpbiByYW5nZShzaG9ydGVzdF9sZW5ndGgpOgorICAgICAgaWYgZGVwZW5kZW5jeV9wYXRo
W2ldICE9IGJhc2VfcGF0aFtpXToKKyAgICAgICAgZmlyc3RfZGlmZmVyZW5jZSA9IGkKKyAgICAg
ICAgYnJlYWsKKworICAgIGZpcnN0X2RpZmZlcmVuY2UgPSBmaXJzdF9kaWZmZXJlbmNlIG9yIHNo
b3J0ZXN0X2xlbmd0aAorICAgIGJhc2VfcGF0aCA9IGJhc2VfcGF0aFtmaXJzdF9kaWZmZXJlbmNl
Ol0KKyAgICBkZXBlbmRlbmN5X3BhdGggPSBkZXBlbmRlbmN5X3BhdGhbZmlyc3RfZGlmZmVyZW5j
ZTpdCisgICAgcmViYXNlZCA9IG9zLnBhdGguc2VwLmpvaW4oKFsnLi4nXSAqIGxlbihiYXNlX3Bh
dGgpKSArIGRlcGVuZGVuY3lfcGF0aCkKKyAgcmV0dXJuIHJlYmFzZWQgKyAnOicgKyBkZXBlbmRl
bmN5CiAKIGRlZiBtYWluKCk6CiAgIGRlbGV0ZWRfc291cmNlcyA9IHNldCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMv
aW9zL2NsaWVudC53ZWJydGMvaU9TMzJfRGVidWcuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1Mz
Ml9EZWJ1Zy5qc29uCmluZGV4IGQyOTY2ZWMzYWQ0ZDY3ZWNlMGU4N2VkZjJiYzViZDViNmFhNTJm
YWQuLmIxNDgwOWZmM2Q0ZWZmYzNkYzc3M2JlOWJhZTQzM2M0NTdhMzgxMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9p
b3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9EZWJ1Zy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9p
T1MzMl9EZWJ1Zy5qc29uCkBAIC0xLDYgKzEsNyBAQAogewogICAiY29tbWVudHMiOiBbCi0gICAg
IkJ1aWxkZXIgZm9yIDMyLWJpdCBkZXZpY2VzLiIKKyAgICAiQnVpbGRlciBmb3IgMzItYml0IGRl
dmljZXMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0
LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQg
dmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVu
dC53ZWJydGMvaU9TMzJfUmVsZWFzZS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzMyX1JlbGVh
c2UuanNvbgppbmRleCBlNzJhMjI5MTc4N2M3MGY5ZTMwMWI3OGE2NmRmNTZhMTRjZjNlNGE1Li45
NzI2MzI1NmRlOTkxOWM5YjFmN2U5MzJiYmY0ZGQ0Y2RlZjhmMTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2Ns
aWVudC53ZWJydGMvaU9TMzJfUmVsZWFzZS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1Mz
Ml9SZWxlYXNlLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAi
QnVpbGRlciBmb3IgMzItYml0IGRldmljZXMuIgorICAgICJCdWlsZGVyIGZvciAzMi1iaXQgZGV2
aWNlcy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNrZXQu
Y2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWlsZCB2
ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50
LndlYnJ0Yy9pT1MzMl9TaW1fRGVidWdfKGlPU185LjApLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMv
aU9TMzJfU2ltX0RlYnVnXyhpT1NfOS4wKS5qc29uCmluZGV4IDdhNTZkNDYxODA3NTA2OGNlYjc0
YjExNDQxOGMyNGZhNjZiN2NiNmEuLjAzYjI3MmJiNTM0N2IzY2RkMjg5MDQ2OWUzMTM4YWQ0ZmFj
OTE1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9TaW1fRGVidWdfKGlPU185
LjApLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzMyX1NpbV9EZWJ1Z18oaU9TXzkuMCku
anNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAgICJUZXN0cyBmb3Ig
MzItYml0IGlPUyBzaW11bGF0b3JzLiIKKyAgICAiVGVzdHMgZm9yIDMyLWJpdCBpT1Mgc2ltdWxh
dG9ycy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNrZXQu
Y2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWlsZCB2
ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50
LndlYnJ0Yy9pT1M2NF9EZWJ1Zy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X0RlYnVnLmpz
b24KaW5kZXggNjUzMmM5MGY1MDk3YmFiOGU2ZTNjMGNkNjZkNmQ1ZjZjYzdmNWNmMi4uZjFmYjdm
YTcxOTAxYTgwZDMzMzg5Mzk4MzA2MTA1MDE5MjhiODE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQu
d2VicnRjL2lPUzY0X0RlYnVnLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X0RlYnVn
Lmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiQnVpbGRlciBm
b3IgNjQtYml0IGRldmljZXMuIgorICAgICJCdWlsZGVyIGZvciA2NC1iaXQgZGV2aWNlcy4iLAor
ICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNrZXQuY2ZnIHdoZW4g
Y2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWlsZCB2ZXJzaW9uIjog
IjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9p
T1M2NF9SZWxlYXNlLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRfUmVsZWFzZS5qc29uCmlu
ZGV4IDhjYTQ2NGMzYzQzMDA1NTVmYzhhNjg5NjU4YWE5Mjk4ZTJkMGRhNzQuLmMyNTU1YzZhMTcw
ZDQyMGE5Y2I0NmM0ZmY2MDNkZTI5MTcyZDQ2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0
Yy9pT1M2NF9SZWxlYXNlLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1JlbGVhc2Uu
anNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAgICJCdWlsZGVyIGZv
ciA2NC1iaXQgZGV2aWNlcy4iCisgICAgIkJ1aWxkZXIgZm9yIDY0LWJpdCBkZXZpY2VzLiIsCisg
ICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBpbiBjci1idWlsZGJ1Y2tldC5jZmcgd2hlbiBj
aGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwKICAgInhjb2RlIGJ1aWxkIHZlcnNpb24iOiAi
MTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lP
UzY0X1NpbV9EZWJ1Z18oaU9TXzEwLjApLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRfU2lt
X0RlYnVnXyhpT1NfMTAuMCkuanNvbgppbmRleCBlNzU5ZDk1ZTM2ODZiOTcyYzUyNGQ5OGM5YTJk
MDFkODA3NWJiNTYxLi5kOGE3MWY2NjVhMzQyYWQ5MTM1MzdhZjgwYjYzMGQ0ODk3NjkxMjVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29s
c193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRfU2ltX0RlYnVnXyhpT1NfMTAuMCkuanNv
bgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193
ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRfU2ltX0RlYnVnXyhpT1NfMTAuMCkuanNvbgpA
QCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAgICJUZXN0cyBmb3IgNjQtYml0
IGlPUyBzaW11bGF0b3JzLiIKKyAgICAiVGVzdHMgZm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4i
LAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNrZXQuY2ZnIHdo
ZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWlsZCB2ZXJzaW9u
IjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0
Yy9pT1M2NF9TaW1fRGVidWdfKGlPU18xMS4wKS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0
X1NpbV9EZWJ1Z18oaU9TXzExLjApLmpzb24KaW5kZXggM2RhZDkxYmE2NGY3ZTNmYWY3OGQ0MTg4
NjI0YWQ0ODIzZTQ4YmMyNS4uYzMwMzA4OGI0NDk3N2UxMDg1NmZkMzk0ZWUwOTlhNTRlY2ZjODlk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzExLjAp
Lmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9v
bHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzExLjApLmpz
b24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVzdHMgZm9yIDY0
LWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3RzIGZvciA2NC1iaXQgaU9TIHNpbXVsYXRv
cnMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNm
ZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVy
c2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53
ZWJydGMvaU9TNjRfU2ltX0RlYnVnXyhpT1NfOS4wKS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lP
UzY0X1NpbV9EZWJ1Z18oaU9TXzkuMCkuanNvbgppbmRleCBkMjdjZGFhNDVmNTQwYzU2YTA4Mjdj
ZGE2YWFhNmY5MzlkZmJlZDc5Li5iY2Y1MmQ3MjgzMjZlY2IyNzhjNWQxMjQ0NmU3YjkxMzU5MjBk
ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRfU2ltX0RlYnVnXyhpT1NfOS4w
KS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9TaW1fRGVidWdfKGlPU185LjApLmpz
b24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVzdHMgZm9yIDY0
LWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3RzIGZvciA2NC1iaXQgaU9TIHNpbXVsYXRv
cnMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNm
ZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVy
c2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2dlbmVyYXRl
X21vZHVsZW1hcC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rvb2xzX3dlYnJ0Yy9pb3MvZ2VuZXJhdGVfbW9kdWxlbWFwLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1YmQz
ZDg3NWU3Y2QwYTA2MmM3NWZjMGEyZmYxM2ZjN2QxZmU2NmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9z
L2dlbmVyYXRlX21vZHVsZW1hcC5weQpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoYykg
MjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMK
KyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyMgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisjIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorCitpbXBvcnQgYXJncGFy
c2UKK2ltcG9ydCBzeXMKKworZGVmIEdlbmVyYXRlTW9kdWxlbWFwKCk6CisgIHBhcnNlciA9IGFy
Z3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdHZW5lcmF0ZSBtb2R1bGVtYXAnKQor
ICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbyIsICItLW91dCIsIHR5cGU9c3RyLCBoZWxwPSJPdXRw
dXQgZmlsZS4iKQorICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbiIsICItLW5hbWUiLCB0eXBlPXN0
ciwgaGVscD0iTmFtZSBvZiBiaW5hcnkuIikKKworICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3Mo
KQorCisgIHdpdGggb3BlbihhcmdzLm91dCwgInciKSBhcyBvdXRmaWxlOgorICAgIG1vZHVsZV90
ZW1wbGF0ZSA9ICdmcmFtZXdvcmsgbW9kdWxlICVzIHtcbicgXAorICAgICAgICAgICAgICAgICAg
ICAgICcgIHVtYnJlbGxhIGhlYWRlciAiJXMuaCJcbicgXAorICAgICAgICAgICAgICAgICAgICAg
ICdcbicgXAorICAgICAgICAgICAgICAgICAgICAgICcgIGV4cG9ydCAqXG4nIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAnICBtb2R1bGUgKiB7IGV4cG9ydCAqIH1cbicgXAorICAgICAgICAgICAg
ICAgICAgICAgICd9XG4nICUgKGFyZ3MubmFtZSwgYXJncy5uYW1lKQorICAgIG91dGZpbGUud3Jp
dGUobW9kdWxlX3RlbXBsYXRlKQorICByZXR1cm4gMAorCisKK2lmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6CisgIHN5cy5leGl0KEdlbmVyYXRlTW9kdWxlbWFwKCkpCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3Mv
aW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9EZWJ1Zy5qc29uIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC5jbGll
bnQud2VicnRjL2lPUzY0X0RlYnVnLmpzb24KaW5kZXggN2MzYjNjZWUxZGExMjhhZGM2YjNiY2Ew
ODUzYTE4NGU1ZTRlM2IzMy4uYTk3ZDhiNzA2ZjgyMTUwZmQyMzZlMTE4NTVhYjRiZDM3YTc3YWQ4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X0RlYnVnLmpzb24K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2Vi
cnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X0RlYnVnLmpzb24KQEAgLTIxLDYg
KzIxLDcgQEAKICAgInRlc3RzIjogWwogICAgIHsKICAgICAgICJpbmNsdWRlIjogInJlYWxfZGV2
aWNlX3Rlc3RzLmpzb24iLAorICAgICAgImRldmljZSB0eXBlIjogImlQaG9uZSA2cyIsCiAgICAg
ICAib3MiOiAiMTEuNC4xIiwKICAgICAgICJkaW1lbnNpb25zIjogWwogICAgICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193
ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53ZWJydGMvaU9TNjRfUGVyZi5qc29uIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRl
cm5hbC5jbGllbnQud2VicnRjL2lPUzY0X1BlcmYuanNvbgppbmRleCBiNTM1NzY2MWE4NDI3YjIx
Y2YzZWIzNzIyNmM3MjY3NDk4ZjhkOWFiLi44OGJmZTc1MjY0YWQ1NmIyNTUyYWZkMDFiMzRiZmFi
OWE5YTRiOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53ZWJydGMvaU9TNjRfUGVy
Zi5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9QZXJmLmpzb24KQEAg
LTIxLDEzICsyMSw4IEBACiAgICJ0ZXN0cyI6IFsKICAgICB7CiAgICAgICAiaW5jbHVkZSI6ICJw
ZXJmX3Rlc3RzLmpzb24iLAorICAgICAgImRldmljZSB0eXBlIjogImlQaG9uZSA3IiwKICAgICAg
ICJvcyI6ICIxMS40LjEiLAotICAgICAgImRpbWVuc2lvbnMiOiBbCi0gICAgICAgIHsKLSAgICAg
ICAgICAib3MiOiAiTWFjIiwKLSAgICAgICAgICAicG9vbCI6ICJDaHJvbWUiCi0gICAgICAgIH0K
LSAgICAgIF0KICAgICB9CiAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50Lndl
YnJ0Yy9pT1M2NF9SZWxlYXNlLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53ZWJydGMvaU9TNjRf
UmVsZWFzZS5qc29uCmluZGV4IGFjODRkYjEwYmY1YzYyMjhmMzdjMGY5OTJjZDgwODI2Zjc3N2M1
NDQuLmQ3NWNkZTA3ZmY2ODFiYTY5ZDAyOTFlNGNiMDk2ODI2MmMwYjY5ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9p
b3MvaW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9SZWxlYXNlLmpzb24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRl
cm5hbC5jbGllbnQud2VicnRjL2lPUzY0X1JlbGVhc2UuanNvbgpAQCAtMjIsNiArMjIsNyBAQAog
ICAidGVzdHMiOiBbCiAgICAgewogICAgICAgImluY2x1ZGUiOiAicmVhbF9kZXZpY2VfdGVzdHMu
anNvbiIsCisgICAgICAiZGV2aWNlIHR5cGUiOiAiaVBob25lIDZzIiwKICAgICAgICJvcyI6ICIx
MS40LjEiLAogICAgICAgImRpbWVuc2lvbnMiOiBbCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3Mv
aW50ZXJuYWwudHJ5c2VydmVyLndlYnJ0Yy9pb3NfYXJtNjRfcGVyZi5qc29uIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5h
bC50cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9wZXJmLmpzb24KaW5kZXggMDIzMGM3NGE5MmFk
MDdkMTU4ZWYwNDg0MjNhNzY5NTM3OGU2ZDIzNy4uMGMzMDU4MWRhMWRmMDEwNzZkODhiZjgzOGI1
MDdjNDVkYjNlMmM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC50cnlzZXJ2ZXIud2VicnRjL2lv
c19hcm02NF9wZXJmLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC50cnlzZXJ2ZXIud2VicnRjL2lvc19h
cm02NF9wZXJmLmpzb24KQEAgLTIzLDEyICsyMyw2IEBACiAgICAgICAiaW5jbHVkZSI6ICJwZXJm
X3RyeWJvdF90ZXN0cy5qc29uIiwKICAgICAgICJkZXZpY2UgdHlwZSI6ICJpUGhvbmUgNyIsCiAg
ICAgICAib3MiOiAiMTEuMC4zIiwKLSAgICAgICJkaW1lbnNpb25zIjogWwotICAgICAgICB7Ci0g
ICAgICAgICAgIm9zIjogIk1hYyIsCi0gICAgICAgICAgInBvb2wiOiAiQ2hyb21lIgotICAgICAg
ICB9Ci0gICAgICBdCiAgICAgfQogICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Rlc3RzL2NvbW1vbl90
ZXN0cy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9v
bHNfd2VicnRjL2lvcy90ZXN0cy9jb21tb25fdGVzdHMuanNvbgppbmRleCA1ZWViNDA4Mzg3ZmVj
NDczNzEyZDRjNjc5ZWFiYTgzYjFlNTJmMDZjLi43NDU5NTAzZDdmMDY4MzI1MzliYWY0NzNmNDBj
OGZhYzQzOTIyZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Rlc3RzL2NvbW1vbl90ZXN0cy5qc29uCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9p
b3MvdGVzdHMvY29tbW9uX3Rlc3RzLmpzb24KQEAgLTI3LDkgKzI3LDYgQEAKICAgICB7CiAgICAg
ICAiYXBwIjogIm1vZHVsZXNfdW5pdHRlc3RzIgogICAgIH0sCi0gICAgewotICAgICAgImFwcCI6
ICJvcnRjX3VuaXR0ZXN0cyIKLSAgICB9LAogICAgIHsKICAgICAgICJhcHAiOiAicnRjX21lZGlh
X3VuaXR0ZXN0cyIKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90ZXN0cy9yZWFsX2RldmljZV90ZXN0
cy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL2lvcy90ZXN0cy9yZWFsX2RldmljZV90ZXN0cy5qc29uCmluZGV4IDg0MTc0NzBkZGI4
ODJlMjk4NTJjOTA0OGFlMGM3OWIxYmJlZDllM2IuLmRjZWU1MTY4OGQ2Y2Y5ZmQ1NWZhYTBhZTQ3
MWVmMmJkNGY1MTQzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdGVzdHMvcmVhbF9kZXZpY2VfdGVzdHMuanNv
bgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193
ZWJydGMvaW9zL3Rlc3RzL3JlYWxfZGV2aWNlX3Rlc3RzLmpzb24KQEAgLTEyLDkgKzEyLDYgQEAK
ICAgICB7CiAgICAgICAiYXBwIjogIm1vZHVsZXNfdW5pdHRlc3RzIgogICAgIH0sCi0gICAgewot
ICAgICAgImFwcCI6ICJvcnRjX3VuaXR0ZXN0cyIKLSAgICB9LAogICAgIHsKICAgICAgICJhcHAi
OiAicnRjX3BjX3VuaXR0ZXN0cyIKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2Vi
cnRjL2lvczMyX3NpbV9pb3M5X2RiZy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczMyX3Np
bV9pb3M5X2RiZy5qc29uCmluZGV4IDI5YTExM2Q0MTM4OGM3ZmViNmViOWViMzU4YzM0MDc1ZmMw
MjVmZjEuLjFlYWNjOTI5NWZiMWE3MmJmY2NlMzZlYWUyNzM5MjlkY2M4MjVkZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0
Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3MzMl9zaW1faW9zOV9kYmcuanNvbgorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Ry
eXNlcnZlci53ZWJydGMvaW9zMzJfc2ltX2lvczlfZGJnLmpzb24KQEAgLTEsNiArMSw3IEBACiB7
CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVzdHMgZm9yIDMyLWJpdCBpT1Mgc2ltdWxhdG9ycy4i
CisgICAgIlRlc3RzIGZvciAzMi1iaXQgaU9TIHNpbXVsYXRvcnMuIiwKKyAgICAiTk9URTogVXBk
YXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2Rl
IHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAg
ImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lv
czEwX2RiZy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczY0X3NpbV9pb3MxMF9kYmcuanNv
bgppbmRleCA2NDg0Y2ExMDUwZGUwZWFhNGYxOWQ4MTAwNWJmMDVkMGI2N2Y2YTBhLi44Y2VjZjRh
NDFlZjU5OWU1NWE4ZWE2M2NiNjZjZmQ3MjE2NWY3OTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZl
ci53ZWJydGMvaW9zNjRfc2ltX2lvczEwX2RiZy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0
Yy9pb3M2NF9zaW1faW9zMTBfZGJnLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50
cyI6IFsKLSAgICAiVGVzdHMgZm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3Rz
IGZvciA2NC1iaXQgaU9TIHNpbXVsYXRvcnMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVu
dHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgog
ICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBb
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lvczExX2RiZy5qc29u
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRj
L2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczY0X3NpbV9pb3MxMV9kYmcuanNvbgppbmRleCBiNTRm
MjEyYWNiZDY4YWRjMWVkNDI2ZWI0MWU5ZjZhYzQ5MGY5Zjk3Li4zYTVmN2MwY2Y2YjBmN2RkMDQx
MzJkNWI0ZmZkYjk0MjI5ZTY2MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9z
NjRfc2ltX2lvczExX2RiZy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3M2NF9zaW1f
aW9zMTFfZGJnLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAi
VGVzdHMgZm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3RzIGZvciA2NC1iaXQg
aU9TIHNpbXVsYXRvcnMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1
aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNv
ZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMv
aW9zL3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lvczlfZGJnLmpzb24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZl
ci53ZWJydGMvaW9zNjRfc2ltX2lvczlfZGJnLmpzb24KaW5kZXggZmRmYTdiMzgyZDVhZTJhMDlm
MjlmMjllNTMxZTAzZmYxMTk0YzMxZi4uNmM5ODQ4ZWU2ZGQ5Njg3MTU2NzI4MTBjYWIwZDVjMWVj
NWI3MzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczY0X3NpbV9pb3M5X2Ri
Zy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3M2NF9zaW1faW9zOV9kYmcuanNvbgpA
QCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAgICJUZXN0cyBmb3IgNjQtYml0
IGlPUyBzaW11bGF0b3JzLiIKKyAgICAiVGVzdHMgZm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4i
LAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNrZXQuY2ZnIHdo
ZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWlsZCB2ZXJzaW9u
IjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndl
YnJ0Yy9pb3NfYXJtNjRfZGJnLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zX2FybTY0X2Ri
Zy5qc29uCmluZGV4IDc1OTRjZDJhMzZkNjZlNmM4ZGNlYjYwOTkyMjdjYTQ1ZmJlODBkMDIuLjQz
YWRkNjcxMGU2YzU3MjlhMzIyZGM5MmJiYjE4NTU5NzcwN2Y2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5
c2VydmVyLndlYnJ0Yy9pb3NfYXJtNjRfZGJnLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRj
L2lvc19hcm02NF9kYmcuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwot
ICAgICJCdWlsZGVyIGZvciA2NC1iaXQgZGV2aWNlcy4iCisgICAgIkJ1aWxkZXIgZm9yIDY0LWJp
dCBkZXZpY2VzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBpbiBjci1idWlsZGJ1
Y2tldC5jZmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwKICAgInhjb2RlIGJ1
aWxkIHZlcnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90
cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9yZWwuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9p
b3NfYXJtNjRfcmVsLmpzb24KaW5kZXggMDhhZTdlMTk4MzMyMTI0YjMxZTQ1MzY0NjdlN2Y4MjY3
MzljZjA4MC4uOTVhNTdlNTIyNjJlNTJhZTZmZWVlOTVhMzVjZmJhZDc2ZGU1ZTQ1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2Vi
cnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9yZWwuanNvbgorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNl
cnZlci53ZWJydGMvaW9zX2FybTY0X3JlbC5qc29uCkBAIC0xLDYgKzEsNyBAQAogewogICAiY29t
bWVudHMiOiBbCi0gICAgIkJ1aWxkZXIgZm9yIDY0LWJpdCBkZXZpY2VzLiIKKyAgICAiQnVpbGRl
ciBmb3IgNjQtYml0IGRldmljZXMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGlu
IGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAog
ICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193
ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zX2RiZy5qc29uIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2Vi
cnRjL2lvc19kYmcuanNvbgppbmRleCBlOWQwNmMyYTc2MTQwMDQ4ODA5ZWJiMjM1YTQ2N2YwMmQ3
MDI0Zjc4Li44YmU5ZTk1YzBmMGI1YWExY2QzMmI4Yzk2ZTY2YWFkNTI1MmNjZDhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zX2RiZy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndl
YnJ0Yy9pb3NfZGJnLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAg
ICAiQnVpbGRlciBmb3IgMzItYml0IGRldmljZXMuIgorICAgICJCdWlsZGVyIGZvciAzMi1iaXQg
ZGV2aWNlcy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNr
ZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWls
ZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5
c2VydmVyLndlYnJ0Yy9pb3NfcmVsLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zX3JlbC5q
c29uCmluZGV4IDQ1MjFlZjUxNTM3MjE1NTc1OTM3NmE3M2FiZWNjNTFmNTIwYjQyMDUuLmY2NDQ5
NDBjN2M0MDBkOGQxOGZlZmM0NGFhODQ1MzU3M2FmYzBhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2Vy
dmVyLndlYnJ0Yy9pb3NfcmVsLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19yZWwu
anNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAgICJCdWlsZGVyIGZv
ciAzMi1iaXQgZGV2aWNlcy4iCisgICAgIkJ1aWxkZXIgZm9yIDMyLWJpdCBkZXZpY2VzLiIsCisg
ICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBpbiBjci1idWlsZGJ1Y2tldC5jZmcgd2hlbiBj
aGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwKICAgInhjb2RlIGJ1aWxkIHZlcnNpb24iOiAi
MTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2xpYnMvZ2VuZXJhdGVfbGljZW5z
ZXMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193
ZWJydGMvbGlicy9nZW5lcmF0ZV9saWNlbnNlcy5weQppbmRleCA4OTJmYjQ2YzA1MTc4ZjRlNWI0
OTU3NmFiNGRlNGUzNzc2MmUzNjRhLi5kMWE3NmE2NGVlYzFhMzU0NjdmMWVkZTk4ZWVmN2Y5NjI3
MzM5ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90b29sc193ZWJydGMvbGlicy9nZW5lcmF0ZV9saWNlbnNlcy5weQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbGlicy9nZW5l
cmF0ZV9saWNlbnNlcy5weQpAQCAtMzYsNyArMzYsNiBAQCBMSUJfVE9fTElDRU5TRVNfRElDVCA9
IHsKICAgICAnYmF6ZWwnOiBbJ3RoaXJkX3BhcnR5L2JhemVsL0xJQ0VOU0UnXSwKICAgICAnYm9y
aW5nc3NsJzogWyd0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL0xJQ0VOU0UnXSwKICAgICAnZXJy
b3Jwcm9uZSc6IFsndGhpcmRfcGFydHkvZXJyb3Jwcm9uZS9MSUNFTlNFJ10sCi0gICAgJ2V4cGF0
JzogWyd0aGlyZF9wYXJ0eS9leHBhdC9maWxlcy9DT1BZSU5HJ10sCiAgICAgJ2ZpYXQnOiBbJ3Ro
aXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvdGhpcmRfcGFydHkvZmlhdC9MSUNFTlNFJ10sCiAgICAg
J2d1YXZhJzogWyd0aGlyZF9wYXJ0eS9ndWF2YS9MSUNFTlNFJ10sCiAgICAgJ2lqYXInOiBbJ3Ro
aXJkX3BhcnR5L2lqYXIvTElDRU5TRSddLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL2duX2lzb2xhdGVfbWFwLnB5
bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0
Yy9tYi9nbl9pc29sYXRlX21hcC5weWwKaW5kZXggZmVjYzU2YzM4ZTFkMWVhNjk0ODg5YjAwYjY2
MTU0MDdlY2ViMGQxMy4uZDcyYmJkYzAwOTBhZjg0OGJmODljMjZjOWVlM2IzMmQxN2FmNTgyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9v
bHNfd2VicnRjL21iL2duX2lzb2xhdGVfbWFwLnB5bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbWIvZ25faXNvbGF0ZV9tYXAucHls
CkBAIC04MiwxMCArODIsNiBAQAogICAgICJsYWJlbCI6ICIvL21vZHVsZXM6bW9kdWxlc191bml0
dGVzdHMiLAogICAgICJ0eXBlIjogIndpbmRvd2VkX3Rlc3RfbGF1bmNoZXIiLAogICB9LAotICAi
b3J0Y191bml0dGVzdHMiOiB7Ci0gICAgImxhYmVsIjogIi8vb3J0YzpvcnRjX3VuaXR0ZXN0cyIs
Ci0gICAgInR5cGUiOiAiY29uc29sZV90ZXN0X2xhdW5jaGVyIiwKLSAgfSwKICAgInBlZXJjb25u
ZWN0aW9uX3VuaXR0ZXN0cyI6IHsKICAgICAibGFiZWwiOiAiLy9wYzpwZWVyY29ubmVjdGlvbl91
bml0dGVzdHMiLAogICAgICJ0eXBlIjogImNvbnNvbGVfdGVzdF9sYXVuY2hlciIsCkBAIC0xMDYs
NiArMTAyLDEwIEBACiAgICAgImxhYmVsIjogIi8vOnJ0Y191bml0dGVzdHMiLAogICAgICJ0eXBl
IjogImNvbnNvbGVfdGVzdF9sYXVuY2hlciIsCiAgIH0sCisgICJzbG93X3Rlc3RzIjogeworICAg
ICJsYWJlbCI6ICIvLzpzbG93X3Rlc3RzIiwKKyAgICAidHlwZSI6ICJjb25zb2xlX3Rlc3RfbGF1
bmNoZXIiLAorICB9LAogICAic3lzdGVtX3dyYXBwZXJzX3VuaXR0ZXN0cyI6IHsKICAgICAibGFi
ZWwiOiAiLy9zeXN0ZW1fd3JhcHBlcnM6c3lzdGVtX3dyYXBwZXJzX3VuaXR0ZXN0cyIsCiAgICAg
InR5cGUiOiAiY29uc29sZV90ZXN0X2xhdW5jaGVyIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9tYi5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9t
Yi5weQppbmRleCA3ZjE5NmJiNzMzODQ2YzhjZjAwMzFhZjExNzgyZjI1OTM5Njk5ZWI5Li40ODVm
Y2ViODU4Yzk4YWEzOWQyZTlmZmUyM2M2NjE0ZjdlMGRkMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbWIvbWIucHkK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2Vi
cnRjL21iL21iLnB5CkBAIC04MzMsNiArODMzLDcgQEAgY2xhc3MgTWV0YUJ1aWxkV3JhcHBlcihv
YmplY3QpOgogICAgICAgJy4uLy4uL3Rlc3RpbmcvdGVzdF9lbnYucHknLAogICAgIF0KIAorICAg
IG11c3RfcmV0cnkgPSBGYWxzZQogICAgIGlmIHRlc3RfdHlwZSA9PSAnc2NyaXB0JzoKICAgICAg
IGNtZGxpbmUgPSBbJy4uLy4uLycgKyBzZWxmLlRvU3JjUmVsUGF0aChpc29sYXRlX21hcFt0YXJn
ZXRdWydzY3JpcHQnXSldCiAgICAgZWxpZiBpc19hbmRyb2lkOgpAQCAtODc0LDEyICs4NzUsMjEg
QEAgY2xhc3MgTWV0YUJ1aWxkV3JhcHBlcihvYmplY3QpOgogICAgICAgICAgICAgIyBzbyBpdCBj
YW4gZXhpdCBjbGVhbmx5IGFuZCByZXBvcnQgcmVzdWx0cywgaW5zdGVhZCBvZiBiZWluZwogICAg
ICAgICAgICAgIyBpbnRlcnJ1cHRlZCBieSBzd2FybWluZyBhbmQgbm90IHJlcG9ydGluZyBhbnl0
aGluZy4KICAgICAgICAgICAgICctLXRpbWVvdXQ9JXMnICUgdGltZW91dCwKLSAgICAgICAgICAg
ICctLXJldHJ5X2ZhaWxlZD0zJywKICAgICAgICAgXQogICAgICAgICBpZiB0ZXN0X3R5cGUgPT0g
J25vbl9wYXJhbGxlbF9jb25zb2xlX3Rlc3RfbGF1bmNoZXInOgogICAgICAgICAgICMgU3RpbGwg
dXNlIHRoZSBndGVzdC1wYXJhbGxlbC13cmFwcGVyLnB5IHNjcmlwdCBzaW5jZSB3ZSBuZWVkIGl0
IHRvCiAgICAgICAgICAgIyBydW4gdGVzdHMgb24gc3dhcm1pbmcsIGJ1dCBkb24ndCBleGVjdXRl
IHRlc3RzIGluIHBhcmFsbGVsLgogICAgICAgICAgIGNtZGxpbmUuYXBwZW5kKCctLXdvcmtlcnM9
MScpCisgICAgICAgIG11c3RfcmV0cnkgPSBUcnVlCisKKyAgICAgIGFzYW4gPSAnaXNfYXNhbj10
cnVlJyBpbiB2YWxzWydnbl9hcmdzJ10KKyAgICAgIGxzYW4gPSAnaXNfbHNhbj10cnVlJyBpbiB2
YWxzWydnbl9hcmdzJ10KKyAgICAgIG1zYW4gPSAnaXNfbXNhbj10cnVlJyBpbiB2YWxzWydnbl9h
cmdzJ10KKyAgICAgIHRzYW4gPSAnaXNfdHNhbj10cnVlJyBpbiB2YWxzWydnbl9hcmdzJ10KKyAg
ICAgIHNhbml0aXplciA9IGFzYW4gb3IgbHNhbiBvciBtc2FuIG9yIHRzYW4KKyAgICAgIGlmIG11
c3RfcmV0cnkgYW5kIG5vdCBzYW5pdGl6ZXI6CisgICAgICAgICMgUmV0cnkgd291bGQgaGlkZSBt
b3N0IHNhbml0aXplcnMgZGV0ZWN0aW9ucy4KKyAgICAgICAgY21kbGluZS5hcHBlbmQoJy0tcmV0
cnlfZmFpbGVkPTMnKQogCiAgICAgICBleGVjdXRhYmxlX3ByZWZpeCA9ICcuXFwnIGlmIHNlbGYu
cGxhdGZvcm0gPT0gJ3dpbjMyJyBlbHNlICcuLycKICAgICAgIGV4ZWN1dGFibGVfc3VmZml4ID0g
Jy5leGUnIGlmIHNlbGYucGxhdGZvcm0gPT0gJ3dpbjMyJyBlbHNlICcnCkBAIC04ODcsMTEgKzg5
Nyw2IEBAIGNsYXNzIE1ldGFCdWlsZFdyYXBwZXIob2JqZWN0KToKIAogICAgICAgY21kbGluZS5h
cHBlbmQoZXhlY3V0YWJsZSkKIAotICAgICAgYXNhbiA9ICdpc19hc2FuPXRydWUnIGluIHZhbHNb
J2duX2FyZ3MnXQotICAgICAgbHNhbiA9ICdpc19sc2FuPXRydWUnIGluIHZhbHNbJ2duX2FyZ3Mn
XQotICAgICAgbXNhbiA9ICdpc19tc2FuPXRydWUnIGluIHZhbHNbJ2duX2FyZ3MnXQotICAgICAg
dHNhbiA9ICdpc190c2FuPXRydWUnIGluIHZhbHNbJ2duX2FyZ3MnXQotCiAgICAgICBjbWRsaW5l
LmV4dGVuZChbCiAgICAgICAgICAgJy0tYXNhbj0lZCcgJSBhc2FuLAogICAgICAgICAgICctLWxz
YW49JWQnICUgbHNhbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9tYl9jb25maWcucHlsIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL21iX2NvbmZpZy5w
eWwKaW5kZXggNTZjODU4MzdmZTZhNWExMGFiMTIxMzkxOTNmYzdjNDBjNDdkZTgzOC4uNTQ5ZWU0
Y2I2OGVjYmUxYThlOWQ2YTQwZDkzMDg2MzdkOTQxYTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL21iX2NvbmZp
Zy5weWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9v
bHNfd2VicnRjL21iL21iX2NvbmZpZy5weWwKQEAgLTI0LDcgKzI0LDYgQEAKICAgICAgICdpT1Mz
MiBSZWxlYXNlJzogJ2lvcycsCiAgICAgICAnaU9TNjQgRGVidWcnOiAnaW9zJywKICAgICAgICdp
T1M2NCBSZWxlYXNlJzogJ2lvcycsCi0gICAgICAnaU9TMzIgU2ltIERlYnVnIChpT1MgOS4wKSc6
ICdpb3MnLAogICAgICAgJ2lPUzY0IFNpbSBEZWJ1ZyAoaU9TIDkuMCknOiAnaW9zJywKICAgICAg
ICdpT1M2NCBTaW0gRGVidWcgKGlPUyAxMC4wKSc6ICdpb3MnLAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbWIvbWJf
dW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
b29sc193ZWJydGMvbWIvbWJfdW5pdHRlc3QucHkKaW5kZXggMDkwOTNjMDZiYWU5ODUxMWY1YTVm
NDBiODJkYjAxYzUzN2Q3MWM0YS4uMGU3MTczYWJiNGNlNjZhNjc1NTY4NmUzNTEyZDY2YTAxYTc0
NmViMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdG9vbHNfd2VicnRjL21iL21iX3VuaXR0ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9tYl91bml0dGVzdC5weQpA
QCAtMzgyLDggKzM4Miw4IEBAIGNsYXNzIFVuaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgJy0tb3V0cHV0X2Rpcj0ke0lTT0xBVEVEX09VVERJUn0vdGVzdF9sb2dzJywKICAgICAg
ICAgJy0tZ3Rlc3RfY29sb3I9bm8nLAogICAgICAgICAnLS10aW1lb3V0PTUwMCcsCi0gICAgICAg
ICctLXJldHJ5X2ZhaWxlZD0zJywKICAgICAgICAgJy0td29ya2Vycz0xJywKKyAgICAgICAgJy0t
cmV0cnlfZmFpbGVkPTMnLAogICAgICAgICAnLi9iYXNlX3VuaXR0ZXN0cycsCiAgICAgICAgICct
LWFzYW49MCcsCiAgICAgICAgICctLWxzYW49MCcsCkBAIC01MDIsOCArNTAyLDggQEAgY2xhc3Mg
VW5pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAnLS1vdXRwdXRfZGlyPSR7SVNP
TEFURURfT1VURElSfS90ZXN0X2xvZ3MnLAogICAgICAgICAnLS1ndGVzdF9jb2xvcj1ubycsCiAg
ICAgICAgICctLXRpbWVvdXQ9OTAwJywKLSAgICAgICAgJy0tcmV0cnlfZmFpbGVkPTMnLAogICAg
ICAgICAnLS13b3JrZXJzPTEnLAorICAgICAgICAnLS1yZXRyeV9mYWlsZWQ9MycsCiAgICAgICAg
ICcuL2Jhc2VfdW5pdHRlc3RzJywKICAgICAgICAgJy0tYXNhbj0wJywKICAgICAgICAgJy0tbHNh
bj0wJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rvb2xzX3dlYnJ0Yy92aWRlb19xdWFsaXR5X3Rvb2xjaGFpbi9saW51eC96eGluZy5zaGEx
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRj
L3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL2xpbnV4L3p4aW5nLnNoYTEKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGY2OWE2YWM0MzcxZjNjZTVjYzcxMGNmZmU2M2E0Mzk2MWE1NWY1YmIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxp
dHlfdG9vbGNoYWluL2xpbnV4L3p4aW5nLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBA
Ci0zZTJhMjVlYWEyZTIwN2ExZTU2OWM2NTg1ZTUwYWRkYjIwYmNhODlhClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL21hYy96eGlu
Zy5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL21hYy96eGluZy5zaGExCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxYjQ5NmU3Y2U2YTkwNGU2MTY4MGMyMGNiMTJiYzQ5MTcyNzc4
MzdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy92aWRlb19x
dWFsaXR5X3Rvb2xjaGFpbi9tYWMvenhpbmcuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLTY3NzhlM2FjNDg5ZjRmYzE4YTFlZDEyNTJiYmQ2ZWNhNTRjOTk2MGUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvdmlkZW9fcXVhbGl0eV90b29sY2hhaW4vd2luL3p4
aW5nLmV4ZS5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL3dpbi96eGluZy5leGUuc2hhMQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU1MjkwZmIzNDZjNTNhZjg2NmYzOWM0MDg0
ZDcxN2U5ZDI3ZmZkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvdmlkZW9fcXVhbGl0eV90b29sY2hhaW4vd2luL3p4aW5nLmV4ZS5zaGExCisrKyAvZGV2L251
bGwKQEAgLTEgKzAsMCBAQAotODZjYTMxNDg3NzgwNzk2NjVhZDViOTQ1OTMxMWQzNDNhMTg2NTk0
MwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL0JVSUxELmduIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KaW5kZXggMzI3M2Zk
YTI1ZDU1Mjg2OGViOTU4MDVmMmU1NGIyN2JlMDc5Y2E1YS4uYjUzZDczMGFlMDdlMDZmODAwNGUz
NTUzNmNhZTcyMmExYTVhNmVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KQEAgLTUyLDcgKzUyLDcgQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlbyIpIHsKICAgfQogCiAgIGRlcHMgPSBbCi0gICAgIi4u
OndlYnJ0Y19jb21tb24iLAorICAgICI6ZnJhbWVfZHVtcGluZ19kZWNvZGVyIiwKICAgICAiLi4v
YXBpOmZlY19jb250cm9sbGVyX2FwaSIsCiAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5l
Y3Rpb25fYXBpIiwKICAgICAiLi4vYXBpOnRyYW5zcG9ydF9hcGkiLApAQCAtMTMzLDYgKzEzMywy
NSBAQCBydGNfc291cmNlX3NldCgidmlkZW9fc3RyZWFtX2RlY29kZXJfaW1wbCIpIHsKICAgXQog
fQogCitydGNfc291cmNlX3NldCgiZnJhbWVfZHVtcGluZ19kZWNvZGVyIikgeworICB2aXNpYmls
aXR5ID0gWyAiKiIgXQorCisgIHNvdXJjZXMgPSBbCisgICAgImZyYW1lX2R1bXBpbmdfZGVjb2Rl
ci5jYyIsCisgICAgImZyYW1lX2R1bXBpbmdfZGVjb2Rlci5oIiwKKyAgXQorCisgIGRlcHMgPSBb
CisgICAgIi4uL2FwaS92aWRlbzplbmNvZGVkX2ZyYW1lIiwKKyAgICAiLi4vYXBpL3ZpZGVvX2Nv
ZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKKyAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlk
ZW9fY29kZWNfaW50ZXJmYWNlIiwKKyAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9f
Y29kaW5nIiwKKyAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kaW5nX3V0aWxp
dHkiLAorICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgIF0KK30KKwogcnRjX3NvdXJjZV9zZXQo
InZpZGVvX3N0cmVhbV9lbmNvZGVyX2ltcGwiKSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAK
QEAgLTE1Miw3ICsxNzEsOSBAQCBydGNfc291cmNlX3NldCgidmlkZW9fc3RyZWFtX2VuY29kZXJf
aW1wbCIpIHsKICAgfQogCiAgIGRlcHMgPSBbCisgICAgIi4uL2FwaS92aWRlbzplbmNvZGVkX2lt
YWdlIiwKICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yIiwKKyAgICAi
Li4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICIuLi9h
cGkvdmlkZW86dmlkZW9fZnJhbWUiLAogICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQy
MCIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19zdHJlYW1fZW5jb2RlciIsCkBAIC0yMDMsMTUg
KzIyNCwxOSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJ2aWRlb19xdWFsaXR5
X3Rlc3QuaCIsCiAgICAgXQogICAgIGRlcHMgPSBbCisgICAgICAiOmZyYW1lX2R1bXBpbmdfZGVj
b2RlciIsCiAgICAgICAiLi4vYXBpOmZlY19jb250cm9sbGVyX2FwaSIsCiAgICAgICAiLi4vYXBp
OnRlc3RfZGVwZW5kZW5jeV9mYWN0b3J5IiwKICAgICAgICIuLi9hcGk6dmlkZW9fcXVhbGl0eV90
ZXN0X2ZpeHR1cmVfYXBpIiwKKyAgICAgICIuLi9hcGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKKyAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0
ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAgICAgICAiLi4vY2FsbDpmYWtlX25ldHdvcmsiLAogICAg
ICAgIi4uL2NhbGw6c2ltdWxhdGVkX25ldHdvcmsiLAogICAgICAgIi4uL2xvZ2dpbmc6cnRjX2V2
ZW50X2xvZ19hcGkiLAogICAgICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19pbXBsX291dHB1
dCIsCiAgICAgICAiLi4vbWVkaWE6cnRjX2F1ZGlvX3ZpZGVvIiwKICAgICAgICIuLi9tZWRpYTpy
dGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIiwKKyAgICAgICIuLi9tZWRpYTpydGNfdnA4X2VuY29k
ZXJfc2ltdWxjYXN0X3Byb3h5IiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRp
b19kZXZpY2VfYXBpIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZp
Y2VfbW9kdWxlX2Zyb21faW5wdXRfYW5kX291dHB1dCIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRp
b19kZXZpY2U6d2luZG93c19jb3JlX2F1ZGlvX3V0aWxpdHkiLApAQCAtMzUwLDcgKzM3NSw3IEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgInJlcGxheS5jYyIsCiAgICAgXQogICAg
IGRlcHMgPSBbCi0gICAgICAiLi46d2VicnRjX2NvbW1vbiIsCisgICAgICAiLi4vYXBpL3Rlc3Qv
dmlkZW86ZnVuY3Rpb25fdmlkZW9fZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpL3ZpZGVvX2NvZGVj
czp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAgICIuLi9jYWxsOmNhbGxfaW50ZXJmYWNlcyIsCiAg
ICAgICAiLi4vY29tbW9uX3ZpZGVvIiwKQEAgLTM4NCw2ICs0MDksNyBAQCBpZiAocnRjX2luY2x1
ZGVfdGVzdHMpIHsKICAgICBkZWZpbmVzID0gW10KICAgICBzb3VyY2VzID0gWwogICAgICAgImNh
bGxfc3RhdHNfdW5pdHRlc3QuY2MiLAorICAgICAgImNwdV9zY2FsaW5nX3Rlc3RzLmNjIiwKICAg
ICAgICJlbmNvZGVyX3J0Y3BfZmVlZGJhY2tfdW5pdHRlc3QuY2MiLAogICAgICAgImVuZF90b19l
bmRfdGVzdHMvYmFuZHdpZHRoX3Rlc3RzLmNjIiwKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL2Nh
bGxfb3BlcmF0aW9uX3Rlc3RzLmNjIiwKQEAgLTM5MSw2ICs0MTcsNyBAQCBpZiAocnRjX2luY2x1
ZGVfdGVzdHMpIHsKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL2NvbmZpZ190ZXN0cy5jYyIsCiAg
ICAgICAiZW5kX3RvX2VuZF90ZXN0cy9leHRlbmRlZF9yZXBvcnRzX3Rlc3RzLmNjIiwKICAgICAg
ICJlbmRfdG9fZW5kX3Rlc3RzL2ZlY190ZXN0cy5jYyIsCisgICAgICAiZW5kX3RvX2VuZF90ZXN0
cy9mcmFtZV9lbmNyeXB0aW9uX3Rlc3RzLmNjIiwKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL2hp
c3RvZ3JhbV90ZXN0cy5jYyIsCiAgICAgICAiZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9jb2RlY19y
ZWNlaXZlX3Rlc3RzLmNjIiwKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL211bHRpX3N0cmVhbV90
ZXN0ZXIuY2MiLApAQCAtMzk4LDcgKzQyNSw2IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewog
ICAgICAgImVuZF90b19lbmRfdGVzdHMvbXVsdGlfc3RyZWFtX3Rlc3RzLmNjIiwKICAgICAgICJl
bmRfdG9fZW5kX3Rlc3RzL25ldHdvcmtfc3RhdGVfdGVzdHMuY2MiLAogICAgICAgImVuZF90b19l
bmRfdGVzdHMvcHJvYmluZ190ZXN0cy5jYyIsCi0gICAgICAiZW5kX3RvX2VuZF90ZXN0cy9yZWNl
aXZlX3RpbWVfdGVzdHMuY2MiLAogICAgICAgImVuZF90b19lbmRfdGVzdHMvcmV0cmFuc21pc3Np
b25fdGVzdHMuY2MiLAogICAgICAgImVuZF90b19lbmRfdGVzdHMvcnRwX3J0Y3BfdGVzdHMuY2Mi
LAogICAgICAgImVuZF90b19lbmRfdGVzdHMvc3NyY190ZXN0cy5jYyIsCkBAIC00MjQsOSArNDUw
LDE1IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjp2aWRlbyIsCiAgICAgICAi
OnZpZGVvX21vY2tzIiwKICAgICAgICI6dmlkZW9fc3RyZWFtX2VuY29kZXJfaW1wbCIsCisgICAg
ICAiLi4vYXBpOmZha2VfZnJhbWVfZGVjcnlwdG9yIiwKKyAgICAgICIuLi9hcGk6ZmFrZV9mcmFt
ZV9lbmNyeXB0b3IiLAogICAgICAgIi4uL2FwaTpzaW11bGF0ZWRfbmV0d29ya19hcGkiLAorICAg
ICAgIi4uL2FwaS90ZXN0L3ZpZGVvOmZ1bmN0aW9uX3ZpZGVvX2ZhY3RvcnkiLAorICAgICAgIi4u
L2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAorICAg
ICAgIi4uL2FwaS92aWRlbzplbmNvZGVkX2ltYWdlIiwKICAgICAgICIuLi9hcGkvdmlkZW86dmlk
ZW9fZnJhbWUiLAogICAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKKyAgICAg
ICIuLi9hcGkvdmlkZW9fY29kZWNzOmNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzIiwKICAgICAg
ICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAogICAgICAgIi4uL2NhbGw6
Y2FsbF9pbnRlcmZhY2VzIiwKICAgICAgICIuLi9jYWxsOmZha2VfbmV0d29yayIsCkBAIC00NDMs
NiArNDc1LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vbWVkaWE6cnRj
X21lZGlhIiwKICAgICAgICIuLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCiAgICAgICAiLi4vbWVk
aWE6cnRjX21lZGlhX3Rlc3RzX3V0aWxzIiwKKyAgICAgICIuLi9tZWRpYTpydGNfc2ltdWxjYXN0
X2VuY29kZXJfYWRhcHRlciIsCiAgICAgICAiLi4vbW9kdWxlczptb2R1bGVfYXBpIiwKICAgICAg
ICIuLi9tb2R1bGVzL3BhY2luZyIsCiAgICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcCIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9j
YWxsX3N0YXRzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vY2FsbF9zdGF0c191bml0dGVzdC5jYwppbmRleCA3MWZhYTY5MmE1Nzhh
OTZlYmUzMmU5YTVkNDQ5ZmRlYjA0MjUyYWIxLi5kYzZjNjlhZjllOThjNzFiNTYzOGIyZGQzNGJi
MjM1MjQ1YmJlN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9jYWxsX3N0YXRzX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2NhbGxfc3RhdHNfdW5pdHRlc3Qu
Y2MKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgQ2FsbFN0YXRzVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewogfTsKIAogVEVTVF9GKENhbGxTdGF0c1Rlc3QsIEFkZEFuZFRyaWdnZXJDYWxs
YmFjaykgewotICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQg
ZXZlbnQ7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQ2NF90IGtSdHQgPSAyNTsKIApA
QCAtNzcsNyArNzcsNyBAQCBURVNUX0YoQ2FsbFN0YXRzVGVzdCwgQWRkQW5kVHJpZ2dlckNhbGxi
YWNrKSB7CiB9CiAKIFRFU1RfRihDYWxsU3RhdHNUZXN0LCBQcm9jZXNzVGltZSkgewotICBydGM6
OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCBpbnQ2NF90IGtSdHQgPSAxMDA7CiAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgaW50NjRfdCBrUnR0MiA9IDgwOwpAQCAtMTI4LDggKzEyOCw4IEBAIFRFU1RfRihD
YWxsU3RhdHNUZXN0LCBNdWx0aXBsZU9ic2VydmVycykgewogICBzdGF0aWMgY29uc3RleHByIGNv
bnN0IGludDY0X3Qga1J0dCA9IDEwMDsKIAogICAvLyBWZXJpZnkgYm90aCBvYnNlcnZlcnMgYXJl
IHVwZGF0ZWQuCi0gIHJ0Yzo6RXZlbnQgZXYxKGZhbHNlLCBmYWxzZSk7Ci0gIHJ0Yzo6RXZlbnQg
ZXYyKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZXYxOworICBydGM6OkV2ZW50IGV2MjsK
ICAgRVhQRUNUX0NBTEwoc3RhdHNfb2JzZXJ2ZXJfMSwgT25SdHRVcGRhdGUoa1J0dCwga1J0dCkp
CiAgICAgICAuVGltZXMoQW55TnVtYmVyKCkpCiAgICAgICAuV2lsbE9uY2UoSW52b2tlV2l0aG91
dEFyZ3MoWyZldjFdIHsgZXYxLlNldCgpOyB9KSkKQEAgLTE2Nyw3ICsxNjcsNyBAQCBURVNUX0Yo
Q2FsbFN0YXRzVGVzdCwgTXVsdGlwbGVPYnNlcnZlcnMpIHsKIAogICAvLyBGbHVzaCB0aGUgcXVl
dWUgb24gdGhlIHByb2Nlc3MgdGhyZWFkIHRvIG1ha2Ugc3VyZSB3ZSByZXR1cm4gYWZ0ZXIKICAg
Ly8gUHJvY2VzcygpIGhhcyBiZWVuIGNhbGxlZC4KLSAgcnRjOjpFdmVudCBldmVudChmYWxzZSwg
ZmFsc2UpOworICBydGM6OkV2ZW50IGV2ZW50OwogICBwcm9jZXNzX3RocmVhZF8tPlBvc3RUYXNr
KHJ0Yzo6TmV3Q2xvc3VyZShbJmV2ZW50XSgpIHsgZXZlbnQuU2V0KCk7IH0pKTsKICAgZXZlbnQu
V2FpdChydGM6OkV2ZW50OjprRm9yZXZlcik7CiB9CkBAIC0xODMsNyArMTgzLDcgQEAgVEVTVF9G
KENhbGxTdGF0c1Rlc3QsIENoYW5nZVJ0dCkgewogICBjYWxsX3N0YXRzXy5SZWdpc3RlclN0YXRz
T2JzZXJ2ZXIoJnN0YXRzX29ic2VydmVyKTsKICAgUnRjcFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0
cyA9ICZjYWxsX3N0YXRzXzsKIAotICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7Cisg
IHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQ2NF90IGtG
aXJzdFJ0dCA9IDEwMDsKICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQ2NF90IGtMb3dSdHQg
PSBrRmlyc3RSdHQgLSAyMDsKQEAgLTI0MCw3ICsyNDAsNyBAQCBURVNUX0YoQ2FsbFN0YXRzVGVz
dCwgQ2hhbmdlUnR0KSB7CiB9CiAKIFRFU1RfRihDYWxsU3RhdHNUZXN0LCBMYXN0UHJvY2Vzc2Vk
UnR0KSB7Ci0gIHJ0Yzo6RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBl
dmVudDsKICAgTW9ja1N0YXRzT2JzZXJ2ZXIgc3RhdHNfb2JzZXJ2ZXI7CiAgIGNhbGxfc3RhdHNf
LlJlZ2lzdGVyU3RhdHNPYnNlcnZlcigmc3RhdHNfb2JzZXJ2ZXIpOwogICBSdGNwUnR0U3RhdHMq
IHJ0Y3BfcnR0X3N0YXRzID0gJmNhbGxfc3RhdHNfOwpAQCAtMjg5LDcgKzI4OSw3IEBAIFRFU1Rf
RihDYWxsU3RhdHNUZXN0LCBMYXN0UHJvY2Vzc2VkUnR0KSB7CiAKIFRFU1RfRihDYWxsU3RhdHNU
ZXN0LCBQcm9kdWNlc0hpc3RvZ3JhbU1ldHJpY3MpIHsKICAgbWV0cmljczo6UmVzZXQoKTsKLSAg
cnRjOjpFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGV2ZW50OwogICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IGludDY0X3Qga1J0dCA9IDEyMzsKICAgUnRjcFJ0dFN0YXRz
KiBydGNwX3J0dF9zdGF0cyA9ICZjYWxsX3N0YXRzXzsKICAgTW9ja1N0YXRzT2JzZXJ2ZXIgc3Rh
dHNfb2JzZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9jcHVfc2NhbGluZ190ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2NwdV9zY2FsaW5nX3Rlc3RzLmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYwOGYwNWUwNTI0N2RiOWYyMzZjM2YyZDA4MTA4ZTM5YjFkMzdiZGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9jcHVfc2NhbGluZ190ZXN0cy5jYwpAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqICBDb3B5cmln
aHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgorI2luY2x1ZGUgInRlc3QvZmll
bGRfdHJpYWwuaCIKKyNpbmNsdWRlICJ0ZXN0L2ZyYW1lX2dlbmVyYXRvcl9jYXB0dXJlci5oIgor
CituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7Citjb25zdGV4cHIgaW50IGtXaWR0aCA9
IDEyODA7Citjb25zdGV4cHIgaW50IGtIZWlnaHQgPSA3MjA7Citjb25zdGV4cHIgaW50IGtGcHMg
PSAyODsKK30gIC8vIG5hbWVzcGFjZQorCisvLyBNaW5pbWFsIG5vcm1hbCB1c2FnZSBhdCBzdGFy
dCwgdGhlbiA2MHMgb3ZlcnVzZS4KK2NsYXNzIENwdU92ZXJ1c2VUZXN0IDogcHVibGljIHRlc3Q6
OkNhbGxUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIENwdU92ZXJ1c2VUZXN0KCkKKyAgICAgIDogZmll
bGRfdHJpYWxzXygiV2ViUlRDLUZvcmNlU2ltdWxhdGVkT3ZlcnVzZUludGVydmFsTXMvMS02MDAw
MC02MDAwMC8iKSB7CisgIH0KKworICB2b2lkIFJ1blRlc3RBbmRDaGVja0ZvckFkYXB0YXRpb24o
CisgICAgICBjb25zdCBEZWdyYWRhdGlvblByZWZlcmVuY2UmIGRlZ3JhZGF0aW9uX3ByZWZlcmVu
Y2UsCisgICAgICBib29sIGV4cGVjdF9hZGFwdGF0aW9uKTsKKworICB0ZXN0OjpTY29wZWRGaWVs
ZFRyaWFscyBmaWVsZF90cmlhbHNfOworfTsKKwordm9pZCBDcHVPdmVydXNlVGVzdDo6UnVuVGVz
dEFuZENoZWNrRm9yQWRhcHRhdGlvbigKKyAgICBjb25zdCBEZWdyYWRhdGlvblByZWZlcmVuY2Um
IGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UsCisgICAgYm9vbCBleHBlY3RfYWRhcHRhdGlvbikgewor
ICBjbGFzcyBPdmVydXNlT2JzZXJ2ZXIKKyAgICAgIDogcHVibGljIHRlc3Q6OlNlbmRUZXN0LAor
ICAgICAgICBwdWJsaWMgdGVzdDo6RnJhbWVHZW5lcmF0b3JDYXB0dXJlcjo6U2lua1dhbnRzT2Jz
ZXJ2ZXIgeworICAgcHVibGljOgorICAgIE92ZXJ1c2VPYnNlcnZlcihjb25zdCBEZWdyYWRhdGlv
blByZWZlcmVuY2UmIGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAg
IGJvb2wgZXhwZWN0X2FkYXB0YXRpb24pCisgICAgICAgIDogU2VuZFRlc3QoZXhwZWN0X2FkYXB0
YXRpb24gPyBrTG9uZ1RpbWVvdXRNcyA6IGtEZWZhdWx0VGltZW91dE1zKSwKKyAgICAgICAgICBk
ZWdyYWRhdGlvbl9wcmVmZXJlbmNlXyhkZWdyYWRhdGlvbl9wcmVmZXJlbmNlKSwKKyAgICAgICAg
ICBleHBlY3RfYWRhcHRhdGlvbl8oZXhwZWN0X2FkYXB0YXRpb24pIHt9CisKKyAgIHByaXZhdGU6
CisgICAgdm9pZCBPbkZyYW1lR2VuZXJhdG9yQ2FwdHVyZXJDcmVhdGVkKAorICAgICAgICB0ZXN0
OjpGcmFtZUdlbmVyYXRvckNhcHR1cmVyKiBmcmFtZV9nZW5lcmF0b3JfY2FwdHVyZXIpIG92ZXJy
aWRlIHsKKyAgICAgIGZyYW1lX2dlbmVyYXRvcl9jYXB0dXJlci0+U2V0U2lua1dhbnRzT2JzZXJ2
ZXIodGhpcyk7CisgICAgICAvLyBTZXQgaW5pdGlhbCByZXNvbHV0aW9uLgorICAgICAgZnJhbWVf
Z2VuZXJhdG9yX2NhcHR1cmVyLT5DaGFuZ2VSZXNvbHV0aW9uKGtXaWR0aCwga0hlaWdodCk7Cisg
ICAgfQorCisgICAgLy8gQ2FsbGVkIHdoZW4gRnJhbWVHZW5lcmF0b3JDYXB0dXJlcjo6QWRkT3JV
cGRhdGVTaW5rIGlzIGNhbGxlZC4KKyAgICB2b2lkIE9uU2lua1dhbnRzQ2hhbmdlZChydGM6OlZp
ZGVvU2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiogc2luaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGM6OlZpZGVvU2lua1dhbnRzJiB3YW50cykgb3ZlcnJpZGUgeworICAg
ICAgaWYgKHdhbnRzLm1heF9waXhlbF9jb3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46
Om1heCgpICYmCisgICAgICAgICAgd2FudHMubWF4X2ZyYW1lcmF0ZV9mcHMgPT0ga0Zwcykgewor
ICAgICAgICAvLyBNYXggY29uZmlndXJlZCBmcmFtZXJhdGUgaXMgaW5pdGlhbGx5IHNldC4KKyAg
ICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgc3dpdGNoIChkZWdyYWRhdGlvbl9wcmVmZXJl
bmNlXykgeworICAgICAgICBjYXNlIERlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TUFJTlRBSU5fRlJB
TUVSQVRFOgorICAgICAgICAgIEVYUEVDVF9MVCh3YW50cy5tYXhfcGl4ZWxfY291bnQsIGtXaWR0
aCAqIGtIZWlnaHQpOworICAgICAgICAgIG9ic2VydmF0aW9uX2NvbXBsZXRlXy5TZXQoKTsKKyAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1BSU5U
QUlOX1JFU09MVVRJT046CisgICAgICAgICAgRVhQRUNUX0xUKHdhbnRzLm1heF9mcmFtZXJhdGVf
ZnBzLCBrRnBzKTsKKyAgICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7CisgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVncmFkYXRpb25QcmVmZXJlbmNlOjpCQUxBTkNF
RDoKKyAgICAgICAgICBpZiAod2FudHMubWF4X3BpeGVsX2NvdW50ID09IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCkgJiYKKyAgICAgICAgICAgICAgd2FudHMubWF4X2ZyYW1lcmF0ZV9m
cHMgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkgeworICAgICAgICAgICAgLy8g
fGFkYXB0X2NvdW50ZXJzX3wgbWFwIGluIFZpZGVvU3RyZWFtRW5jb2RlciBpcyByZXNldCB3aGVu
CisgICAgICAgICAgICAvLyBiYWxhbmNlZCBtb2RlIGlzIHNldC4KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgIH0KKyAgICAgICAgICBFWFBFQ1RfVFJVRSh3YW50cy5tYXhfcGl4ZWxfY291
bnQgPCBrV2lkdGggKiBrSGVpZ2h0IHx8CisgICAgICAgICAgICAgICAgICAgICAgd2FudHMubWF4
X2ZyYW1lcmF0ZV9mcHMgPCBrRnBzKTsKKyAgICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0ZV8u
U2V0KCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgUlRD
X05PVFJFQUNIRUQoKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIE1vZGlmeVZpZGVvQ29u
ZmlncygKKyAgICAgICAgVmlkZW9TZW5kU3RyZWFtOjpDb25maWcqIHNlbmRfY29uZmlnLAorICAg
ICAgICBzdGQ6OnZlY3RvcjxWaWRlb1JlY2VpdmVTdHJlYW06OkNvbmZpZz4qIHJlY2VpdmVfY29u
ZmlncywKKyAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnKiBlbmNvZGVyX2NvbmZpZykgb3ZlcnJp
ZGUgeworICAgICAgRVhQRUNUX0ZBTFNFKGVuY29kZXJfY29uZmlnLT5zaW11bGNhc3RfbGF5ZXJz
LmVtcHR5KCkpOworICAgICAgZW5jb2Rlcl9jb25maWctPnNpbXVsY2FzdF9sYXllcnNbMF0ubWF4
X2ZyYW1lcmF0ZSA9IGtGcHM7CisgICAgfQorCisgICAgdm9pZCBNb2RpZnlWaWRlb0RlZ3JhZGF0
aW9uUHJlZmVyZW5jZSgKKyAgICAgICAgRGVncmFkYXRpb25QcmVmZXJlbmNlKiBkZWdyYWRhdGlv
bl9wcmVmZXJlbmNlKSBvdmVycmlkZSB7CisgICAgICAqZGVncmFkYXRpb25fcHJlZmVyZW5jZSA9
IGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2VfOworICAgIH0KKworICAgIHZvaWQgUGVyZm9ybVRlc3Qo
KSBvdmVycmlkZSB7CisgICAgICBFWFBFQ1RfRVEoZXhwZWN0X2FkYXB0YXRpb25fLCBXYWl0KCkp
CisgICAgICAgICAgPDwgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhIHNjYWxlIGRvd24u
IjsKKyAgICB9CisKKyAgICBjb25zdCBEZWdyYWRhdGlvblByZWZlcmVuY2UgZGVncmFkYXRpb25f
cHJlZmVyZW5jZV87CisgICAgY29uc3QgYm9vbCBleHBlY3RfYWRhcHRhdGlvbl87CisgIH0gdGVz
dChkZWdyYWRhdGlvbl9wcmVmZXJlbmNlLCBleHBlY3RfYWRhcHRhdGlvbik7CisKKyAgUnVuQmFz
ZVRlc3QoJnRlc3QpOworfQorCitURVNUX0YoQ3B1T3ZlcnVzZVRlc3QsIEFkYXB0c0Rvd25JblJl
c29sdXRpb25Pbk92ZXJ1c2UpIHsKKyAgUnVuVGVzdEFuZENoZWNrRm9yQWRhcHRhdGlvbihEZWdy
YWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX0ZSQU1FUkFURSwgdHJ1ZSk7Cit9CisKK1RFU1Rf
RihDcHVPdmVydXNlVGVzdCwgQWRhcHRzRG93bkluRnBzT25PdmVydXNlKSB7CisgIFJ1blRlc3RB
bmRDaGVja0ZvckFkYXB0YXRpb24oRGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9SRVNP
TFVUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOworfQorCitURVNU
X0YoQ3B1T3ZlcnVzZVRlc3QsIEFkYXB0c0Rvd25JblJlc29sdXRpb25PckZwc09uT3ZlcnVzZSkg
eworICBSdW5UZXN0QW5kQ2hlY2tGb3JBZGFwdGF0aW9uKERlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6
QkFMQU5DRUQsIHRydWUpOworfQorCitURVNUX0YoQ3B1T3ZlcnVzZVRlc3QsIE5vQWRhcHREb3du
T25PdmVydXNlKSB7CisgIFJ1blRlc3RBbmRDaGVja0ZvckFkYXB0YXRpb24oRGVncmFkYXRpb25Q
cmVmZXJlbmNlOjpESVNBQkxFRCwgZmFsc2UpOworfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vZW5kX3RvX2VuZF90ZXN0cy9iYW5kd2lkdGhfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2JhbmR3aWR0
aF90ZXN0cy5jYwppbmRleCBhYjVlNTY4N2I5OTdiYWJlYmI0MjBjMzdmNmY1MTY2ZjA0YjM5N2Mz
Li5hMzVmMDhjM2Y1ZjZiZTNlNmIyNjIxNDE4YTE5MjkwNTlhOGIyYTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5k
X3Rlc3RzL2JhbmR3aWR0aF90ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2JhbmR3aWR0aF90ZXN0cy5j
YwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiYXBpL3Rlc3Qvc2ltdWxhdGVkX25l
dHdvcmsuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9j
YXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oIgogI2lu
Y2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL2luY2x1ZGUvcnRwX3J0Y3AuaCIKQEAgLTE0NSw3ICsxNDYsNiBAQCBURVNUX0YoQmFuZHdp
ZHRoRW5kVG9FbmRUZXN0LCBSZW1iV2l0aFNlbmRTaWRlQndlKSB7CiAgICAgICAgICAgc2VuZGVy
X3NzcmNfKDApLAogICAgICAgICAgIHJlbWJfYml0cmF0ZV9icHNfKDEwMDAwMDApLAogICAgICAg
ICAgIHJlY2VpdmVfdHJhbnNwb3J0XyhudWxscHRyKSwKLSAgICAgICAgICBzdG9wX2V2ZW50Xyhm
YWxzZSwgZmFsc2UpLAogICAgICAgICAgIHBvbGxlcl90aHJlYWRfKCZCaXRyYXRlU3RhdHNQb2xs
aW5nVGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkJpdHJhdGVTdGF0c1BvbGxpbmdUaHJlYWQiKSwKQEAgLTE2MCwxNSArMTYw
LDE1IEBAIFRFU1RfRihCYW5kd2lkdGhFbmRUb0VuZFRlc3QsIFJlbWJXaXRoU2VuZFNpZGVCd2Up
IHsKICAgICAgICAgICB0YXNrX3F1ZXVlLCBudWxscHRyLCB0aGlzLCB0ZXN0OjpQYWNrZXRUcmFu
c3BvcnQ6OmtSZWNlaXZlciwKICAgICAgICAgICBwYXlsb2FkX3R5cGVfbWFwXywKICAgICAgICAg
ICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICAgICAgICBDbG9j
azo6R2V0UmVhbFRpbWVDbG9jaygpLAotICAgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxT
aW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxh
dGlvbkNvbmZpZygpKSkpOworICAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygp
LCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWco
KSkpKTsKICAgICAgIHJldHVybiByZWNlaXZlX3RyYW5zcG9ydF87CiAgICAgfQogCi0gICAgdm9p
ZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSBvdmVycmlkZSB7
CisgICAgdm9pZCBNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKAorICAgICAgICBCaXRyYXRlQ29u
c3RyYWludHMqIGJpdHJhdGVfY29uZmlnKSBvdmVycmlkZSB7CiAgICAgICAvLyBTZXQgYSBoaWdo
IHN0YXJ0IGJpdHJhdGUgdG8gcmVkdWNlIHRoZSB0ZXN0IGNvbXBsZXRpb24gdGltZS4KLSAgICAg
IGNvbmZpZy0+Yml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMgPSByZW1iX2JpdHJhdGVf
YnBzXzsKKyAgICAgIGJpdHJhdGVfY29uZmlnLT5zdGFydF9iaXRyYXRlX2JwcyA9IHJlbWJfYml0
cmF0ZV9icHNfOwogICAgIH0KIAogICAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdzKApAQCAtMjc0
LDYgKzI3NCw4IEBAIFRFU1RfRihCYW5kd2lkdGhFbmRUb0VuZFRlc3QsIFJlcG9ydHNTZXRFbmNv
ZGVyUmF0ZXMpIHsKICAgICAgICAgICB0YXNrX3F1ZXVlXyh0YXNrX3F1ZXVlKSwKICAgICAgICAg
ICBzZW5kX3N0cmVhbV8obnVsbHB0ciksCiAgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyh0aGlz
KSwKKyAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XygKKyAgICAgICAgICAgICAg
Q3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSksCiAgICAgICAgICAg
Yml0cmF0ZV9rYnBzXygwKSB7fQogCiAgICAgdm9pZCBPblZpZGVvU3RyZWFtc0NyZWF0ZWQoCkBA
IC0yODcsNiArMjg5LDggQEAgVEVTVF9GKEJhbmR3aWR0aEVuZFRvRW5kVGVzdCwgUmVwb3J0c1Nl
dEVuY29kZXJSYXRlcykgewogICAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1JlY2VpdmVTdHJlYW06
OkNvbmZpZz4qIHJlY2VpdmVfY29uZmlncywKICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnKiBl
bmNvZGVyX2NvbmZpZykgb3ZlcnJpZGUgewogICAgICAgc2VuZF9jb25maWctPmVuY29kZXJfc2V0
dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gJmVuY29kZXJfZmFjdG9yeV87CisgICAgICBzZW5kX2Nv
bmZpZy0+ZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0KKyAgICAg
ICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKTsKICAgICAgIFJUQ19EQ0hFQ0tf
RVEoMSwgZW5jb2Rlcl9jb25maWctPm51bWJlcl9vZl9zdHJlYW1zKTsKICAgICB9CiAKQEAgLTM0
NSw2ICszNDksNyBAQCBURVNUX0YoQmFuZHdpZHRoRW5kVG9FbmRUZXN0LCBSZXBvcnRzU2V0RW5j
b2RlclJhdGVzKSB7CiAgICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF87CiAgICAgVmlkZW9T
ZW5kU3RyZWFtKiBzZW5kX3N0cmVhbV87CiAgICAgdGVzdDo6VmlkZW9FbmNvZGVyUHJveHlGYWN0
b3J5IGVuY29kZXJfZmFjdG9yeV87CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFs
bG9jYXRvckZhY3Rvcnk+IGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfOwogICAgIHVpbnQzMl90
IGJpdHJhdGVfa2Jwc18gUlRDX0dVQVJERURfQlkoY3JpdF8pOwogICB9IHRlc3QoJnRhc2tfcXVl
dWVfKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9jYWxsX29wZXJhdGlvbl90ZXN0cy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRf
dGVzdHMvY2FsbF9vcGVyYXRpb25fdGVzdHMuY2MKaW5kZXggMmFjZDFiOWZlODEyOTE4NzAxYWQ2
ZjZmNmM4MGY2ZDU3MTMyYzUxZi4uZWMzY2E4NGJmYjU0N2MxMGQ2NDM5YzliYzNlMzE3YzM2YjA2
MGY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9jYWxsX29wZXJhdGlvbl90ZXN0cy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5k
X3Rlc3RzL2NhbGxfb3BlcmF0aW9uX3Rlc3RzLmNjCkBAIC05Miw4ICs5Miw2IEBAIFRFU1RfUChD
YWxsT3BlcmF0aW9uRW5kVG9FbmRUZXN0LCBSZW5kZXJzU2luZ2xlRGVsYXllZEZyYW1lKSB7CiAK
ICAgY2xhc3MgUmVuZGVyZXIgOiBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9G
cmFtZT4gewogICAgcHVibGljOgotICAgIFJlbmRlcmVyKCkgOiBldmVudF8oZmFsc2UsIGZhbHNl
KSB7fQotCiAgICAgdm9pZCBPbkZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVvX2ZyYW1lKSBv
dmVycmlkZSB7CiAgICAgICBTbGVlcE1zKGtSZW5kZXJEZWxheU1zKTsKICAgICAgIGV2ZW50Xy5T
ZXQoKTsKQEAgLTExNCwxNSArMTEyLDE1IEBAIFRFU1RfUChDYWxsT3BlcmF0aW9uRW5kVG9FbmRU
ZXN0LCBSZW5kZXJzU2luZ2xlRGVsYXllZEZyYW1lKSB7CiAKICAgICBzZW5kZXJfdHJhbnNwb3J0
ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGlyZWN0VHJhbnNwb3J0PigKICAgICAgICAgJnRh
c2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAot
ICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8
U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgICAgYWJzbDo6
bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5p
cXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAgICAg
c2VuZGVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiAgICAgcmVjZWl2ZXJfdHJh
bnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGlyZWN0VHJhbnNwb3J0PigKICAgICAg
ICAgJnRhc2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1Bp
cGU+KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91
bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgICAg
YWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9jazo6R2V0UmVhbFRpbWVDbG9j
aygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om1h
a2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAg
ICAgICAgcmVjZWl2ZXJfY2FsbF8uZ2V0KCksIHBheWxvYWRfdHlwZV9tYXBfKTsKICAgICBzZW5k
ZXJfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CiAg
ICAgcmVjZWl2ZXJfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihzZW5kZXJfY2FsbF8tPlJlY2VpdmVy
KCkpOwpAQCAtMTYxLDggKzE1OSw2IEBAIFRFU1RfUChDYWxsT3BlcmF0aW9uRW5kVG9FbmRUZXN0
LCBSZW5kZXJzU2luZ2xlRGVsYXllZEZyYW1lKSB7CiBURVNUX1AoQ2FsbE9wZXJhdGlvbkVuZFRv
RW5kVGVzdCwgVHJhbnNtaXRzRmlyc3RGcmFtZSkgewogICBjbGFzcyBSZW5kZXJlciA6IHB1Ymxp
YyBydGM6OlZpZGVvU2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiB7CiAgICBwdWJsaWM6Ci0gICAg
UmVuZGVyZXIoKSA6IGV2ZW50XyhmYWxzZSwgZmFsc2UpIHt9Ci0KICAgICB2b2lkIE9uRnJhbWUo
Y29uc3QgVmlkZW9GcmFtZSYgdmlkZW9fZnJhbWUpIG92ZXJyaWRlIHsgZXZlbnRfLlNldCgpOyB9
CiAKICAgICBib29sIFdhaXQoKSB7IHJldHVybiBldmVudF8uV2FpdChrRGVmYXVsdFRpbWVvdXRN
cyk7IH0KQEAgLTE4MiwxNSArMTc4LDE1IEBAIFRFU1RfUChDYWxsT3BlcmF0aW9uRW5kVG9FbmRU
ZXN0LCBUcmFuc21pdHNGaXJzdEZyYW1lKSB7CiAKICAgICBzZW5kZXJfdHJhbnNwb3J0ID0gYWJz
bDo6bWFrZV91bmlxdWU8dGVzdDo6RGlyZWN0VHJhbnNwb3J0PigKICAgICAgICAgJnRhc2tfcXVl
dWVfLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAg
ICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxh
dGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgICAgYWJzbDo6bWFrZV91
bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNp
bXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAgICAgc2VuZGVy
X2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiAgICAgcmVjZWl2ZXJfdHJhbnNwb3J0
ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGlyZWN0VHJhbnNwb3J0PigKICAgICAgICAgJnRh
c2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAot
ICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8
U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgICAgYWJzbDo6
bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5p
cXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAgICAg
cmVjZWl2ZXJfY2FsbF8uZ2V0KCksIHBheWxvYWRfdHlwZV9tYXBfKTsKICAgICBzZW5kZXJfdHJh
bnNwb3J0LT5TZXRSZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CiAgICAgcmVj
ZWl2ZXJfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihzZW5kZXJfY2FsbF8tPlJlY2VpdmVyKCkpOwpA
QCAtMjIxLDc5ICsyMTcsNCBAQCBURVNUX1AoQ2FsbE9wZXJhdGlvbkVuZFRvRW5kVGVzdCwgVHJh
bnNtaXRzRmlyc3RGcmFtZSkgewogICB9KTsKIH0KIAotVEVTVF9QKENhbGxPcGVyYXRpb25FbmRU
b0VuZFRlc3QsIE9ic2VydmVyc0VuY29kZWRGcmFtZXMpIHsKLSAgY2xhc3MgRW5jb2RlZEZyYW1l
VGVzdE9ic2VydmVyIDogcHVibGljIEVuY29kZWRGcmFtZU9ic2VydmVyIHsKLSAgIHB1YmxpYzoK
LSAgICBFbmNvZGVkRnJhbWVUZXN0T2JzZXJ2ZXIoKQotICAgICAgICA6IGxlbmd0aF8oMCksIGZy
YW1lX3R5cGVfKGtFbXB0eUZyYW1lKSwgY2FsbGVkXyhmYWxzZSwgZmFsc2UpIHt9Ci0gICAgdmly
dHVhbCB+RW5jb2RlZEZyYW1lVGVzdE9ic2VydmVyKCkge30KLQotICAgIHZpcnR1YWwgdm9pZCBF
bmNvZGVkRnJhbWVDYWxsYmFjayhjb25zdCBFbmNvZGVkRnJhbWUmIGVuY29kZWRfZnJhbWUpIHsK
LSAgICAgIGZyYW1lX3R5cGVfID0gZW5jb2RlZF9mcmFtZS5mcmFtZV90eXBlXzsKLSAgICAgIGxl
bmd0aF8gPSBlbmNvZGVkX2ZyYW1lLmxlbmd0aF87Ci0gICAgICBidWZmZXJfLnJlc2V0KG5ldyB1
aW50OF90W2xlbmd0aF9dKTsKLSAgICAgIG1lbWNweShidWZmZXJfLmdldCgpLCBlbmNvZGVkX2Zy
YW1lLmRhdGFfLCBsZW5ndGhfKTsKLSAgICAgIGNhbGxlZF8uU2V0KCk7Ci0gICAgfQotCi0gICAg
Ym9vbCBXYWl0KCkgeyByZXR1cm4gY2FsbGVkXy5XYWl0KGtEZWZhdWx0VGltZW91dE1zKTsgfQot
Ci0gICBwcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IGJ1ZmZlcl87Ci0g
ICAgc2l6ZV90IGxlbmd0aF87Ci0gICAgRnJhbWVUeXBlIGZyYW1lX3R5cGVfOwotICAgIHJ0Yzo6
RXZlbnQgY2FsbGVkXzsKLSAgfTsKLQotICBFbmNvZGVkRnJhbWVUZXN0T2JzZXJ2ZXIgcG9zdF9l
bmNvZGVfb2JzZXJ2ZXI7Ci0gIHRlc3Q6OkZyYW1lRm9yd2FyZGVyIGZvcndhcmRlcjsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPHRlc3Q6OkZyYW1lR2VuZXJhdG9yPiBmcmFtZV9nZW5lcmF0b3I7Ci0KLSAg
c3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4gc2VuZGVyX3RyYW5zcG9ydDsK
LSAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4gcmVjZWl2ZXJfdHJhbnNw
b3J0OwotCi0gIHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsKLSAgICBDcmVhdGVDYWxscygp
OwotCi0gICAgc2VuZGVyX3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVj
dFRyYW5zcG9ydD4oCi0gICAgICAgICZ0YXNrX3F1ZXVlXywKLSAgICAgICAgYWJzbDo6bWFrZV91
bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNs
b2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNv
bmZpZygpKSksCi0gICAgICAgIHNlbmRlcl9jYWxsXy5nZXQoKSwgcGF5bG9hZF90eXBlX21hcF8p
OwotICAgIHJlY2VpdmVyX3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVj
dFRyYW5zcG9ydD4oCi0gICAgICAgICZ0YXNrX3F1ZXVlXywKLSAgICAgICAgYWJzbDo6bWFrZV91
bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNs
b2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNv
bmZpZygpKSksCi0gICAgICAgIHJlY2VpdmVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFw
Xyk7Ci0gICAgc2VuZGVyX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIocmVjZWl2ZXJfY2FsbF8tPlJl
Y2VpdmVyKCkpOwotICAgIHJlY2VpdmVyX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIoc2VuZGVyX2Nh
bGxfLT5SZWNlaXZlcigpKTsKLQotICAgIENyZWF0ZVNlbmRDb25maWcoMSwgMCwgMCwgc2VuZGVy
X3RyYW5zcG9ydC5nZXQoKSk7Ci0gICAgQ3JlYXRlTWF0Y2hpbmdSZWNlaXZlQ29uZmlncyhyZWNl
aXZlcl90cmFuc3BvcnQuZ2V0KCkpOwotICAgIEdldFZpZGVvU2VuZENvbmZpZygpLT5wb3N0X2Vu
Y29kZV9jYWxsYmFjayA9ICZwb3N0X2VuY29kZV9vYnNlcnZlcjsKLQotICAgIENyZWF0ZVZpZGVv
U3RyZWFtcygpOwotICAgIFN0YXJ0KCk7Ci0KLSAgICBmcmFtZV9nZW5lcmF0b3IgPSB0ZXN0OjpG
cmFtZUdlbmVyYXRvcjo6Q3JlYXRlU3F1YXJlR2VuZXJhdG9yKAotICAgICAgICBrRGVmYXVsdFdp
ZHRoLCBrRGVmYXVsdEhlaWdodCwgYWJzbDo6bnVsbG9wdCwgYWJzbDo6bnVsbG9wdCk7Ci0gICAg
R2V0VmlkZW9TZW5kU3RyZWFtKCktPlNldFNvdXJjZSgmZm9yd2FyZGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9G
UkFNRVJBVEUpOwotICAgIGZvcndhcmRlci5JbmNvbWluZ0NhcHR1cmVkRnJhbWUoKmZyYW1lX2dl
bmVyYXRvci0+TmV4dEZyYW1lKCkpOwotICB9KTsKLQotICBFWFBFQ1RfVFJVRShwb3N0X2VuY29k
ZV9vYnNlcnZlci5XYWl0KCkpCi0gICAgICA8PCAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y
IHNlbmQtc2lkZSBlbmNvZGVkLWZyYW1lIGNhbGxiYWNrLiI7Ci0KLSAgdGFza19xdWV1ZV8uU2Vu
ZFRhc2soW3RoaXMsICZzZW5kZXJfdHJhbnNwb3J0LCAmcmVjZWl2ZXJfdHJhbnNwb3J0XSgpIHsK
LSAgICBTdG9wKCk7Ci0gICAgRGVzdHJveVN0cmVhbXMoKTsKLSAgICBzZW5kZXJfdHJhbnNwb3J0
LnJlc2V0KCk7Ci0gICAgcmVjZWl2ZXJfdHJhbnNwb3J0LnJlc2V0KCk7Ci0gICAgRGVzdHJveUNh
bGxzKCk7Ci0gIH0pOwotfQotCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5k
X3Rlc3RzL2NvZGVjX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9jb2RlY190ZXN0cy5jYwppbmRleCBmYWQz
YWM3ZWRlZjNkMGRhYmMzZDJhMTVmODg4NjY5ZjgxMzFmYmI4Li42N2VmNjExYTcwODg4MjNkN2Qy
ZGRjNDMzMzJlNDhhNmEwZGZlNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2NvZGVjX3Rlc3RzLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2Vu
ZF90b19lbmRfdGVzdHMvY29kZWNfdGVzdHMuY2MKQEAgLTgsNiArOCw3IEBACiAgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAg
Ki8KIAorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFj
dG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGRlY29kZXJmYWN0b3J5Lmgi
CiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZW5jb2RlcmZhY3RvcnkuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9pbmNsdWRlL2gyNjQuaCIKQEAg
LTE4LDcgKzE5LDYgQEAKICNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgogI2luY2x1ZGUgInRl
c3QvZW5jb2Rlcl9zZXR0aW5ncy5oIgogI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKLSNp
bmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUg
InRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0xMTgsNyArMTE4LDcgQEAg
VEVTVF9QKENvZGVjRW5kVG9FbmRUZXN0LCBTZW5kc0FuZFJlY2VpdmVzVlA4Um90YXRpb245MCkg
ewogICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9CiAKLSNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9W
UDkpCisjaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIFRFU1RfUChDb2RlY0VuZFRvRW5kVGVz
dCwgU2VuZHNBbmRSZWNlaXZlc1ZQOSkgewogICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZh
Y3RvcnkgZW5jb2Rlcl9mYWN0b3J5KAogICAgICAgW10oKSB7IHJldHVybiBWUDlFbmNvZGVyOjpD
cmVhdGUoKTsgfSk7CkBAIC0xNzcsNyArMTc3LDcgQEAgVEVTVF9QKENvZGVjRW5kVG9FbmRUZXN0
LCBTZW5kc0FuZFJlY2VpdmVzTXVsdGlwbGV4VmlkZW9Sb3RhdGlvbjkwKSB7CiAgIFJ1bkJhc2VU
ZXN0KCZ0ZXN0KTsKIH0KIAotI2VuZGlmICAvLyAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisj
ZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19V
U0VfSDI2NCkKIGNsYXNzIEVuZFRvRW5kVGVzdEgyNjQgOiBwdWJsaWMgdGVzdDo6Q2FsbFRlc3Qs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92
aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2NvbmZpZ190ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvY29uZmlnX3Rl
c3RzLmNjCmluZGV4IGQzMmIxMTE4YjdjMzIxNzQ3MTI0ZTg4NzkyZTY2YjcxMTYyOTlhNDguLjFk
MzM1ODljOWQxY2VkN2NmMDI4MjA3MzMwZTMyZDU3MzIwODFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVz
dHMvY29uZmlnX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvY29uZmlnX3Rlc3RzLmNjCkBAIC00OSw2
ICs0OSwxMiBAQCBURVNUX0YoQ29uZmlnRW5kVG9FbmRUZXN0LCBWZXJpZnlEZWZhdWx0U2VuZENv
bmZpZ1BhcmFtZXRlcnMpIHsKICAgICAgIDw8ICJFbmFibGluZyBSVFggcmVxdWlyZXMgcnRwbWFw
OiBydHggbmVnb3RpYXRpb24uIjsKICAgRVhQRUNUX1RSVUUoZGVmYXVsdF9zZW5kX2NvbmZpZy5y
dHAuZXh0ZW5zaW9ucy5lbXB0eSgpKQogICAgICAgPDwgIkVuYWJsaW5nIFJUUCBleHRlbnNpb25z
IHJlcXVpcmUgbmVnb3RpYXRpb24uIjsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIGRlZmF1bHRfc2Vu
ZF9jb25maWcuZnJhbWVfZW5jcnlwdG9yKQorICAgICAgPDwgIkVuYWJsaW5nIEZyYW1lIEVuY3J5
cHRpb24gcmVxdWlyZXMgYSBmcmFtZSBlbmNyeXB0b3IgdG8gYmUgYXR0YWNoZWQiOworICBFWFBF
Q1RfRkFMU0UoCisgICAgICBkZWZhdWx0X3NlbmRfY29uZmlnLmNyeXB0b19vcHRpb25zLnNmcmFt
ZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24pCisgICAgICA8PCAiRW5hYmxpbmcgUmVxdWlyZSBG
cmFtZSBFbmNyeXB0aW9uIG1lYW5zIGFuIGVuY3J5cHRvciBtdXN0IGJlICIKKyAgICAgICAgICJh
dHRhY2hlZCI7CiAKICAgVmVyaWZ5RW1wdHlOYWNrQ29uZmlnKGRlZmF1bHRfc2VuZF9jb25maWcu
cnRwLm5hY2spOwogICBWZXJpZnlFbXB0eVVscGZlY0NvbmZpZyhkZWZhdWx0X3NlbmRfY29uZmln
LnJ0cC51bHBmZWMpOwpAQCAtNzAsMTIgKzc2LDE2IEBAIFRFU1RfRihDb25maWdFbmRUb0VuZFRl
c3QsIFZlcmlmeURlZmF1bHRWaWRlb1JlY2VpdmVDb25maWdQYXJhbWV0ZXJzKSB7CiAgICAgICA8
PCAiRW5hYmxpbmcgUlRYIHJlcXVpcmVzIHJ0cG1hcDogcnR4IG5lZ290aWF0aW9uLiI7CiAgIEVY
UEVDVF9UUlVFKGRlZmF1bHRfcmVjZWl2ZV9jb25maWcucnRwLmV4dGVuc2lvbnMuZW1wdHkoKSkK
ICAgICAgIDw8ICJFbmFibGluZyBSVFAgZXh0ZW5zaW9ucyByZXF1aXJlIG5lZ290aWF0aW9uLiI7
Ci0KICAgVmVyaWZ5RW1wdHlOYWNrQ29uZmlnKGRlZmF1bHRfcmVjZWl2ZV9jb25maWcucnRwLm5h
Y2spOwogICBFWFBFQ1RfRVEoLTEsIGRlZmF1bHRfcmVjZWl2ZV9jb25maWcucnRwLnVscGZlY19w
YXlsb2FkX3R5cGUpCiAgICAgICA8PCAiRW5hYmxpbmcgVUxQRkVDIHJlcXVpcmVzIHJ0cG1hcDog
dWxwZmVjIG5lZ290aWF0aW9uLiI7CiAgIEVYUEVDVF9FUSgtMSwgZGVmYXVsdF9yZWNlaXZlX2Nv
bmZpZy5ydHAucmVkX3BheWxvYWRfdHlwZSkKICAgICAgIDw8ICJFbmFibGluZyBVTFBGRUMgcmVx
dWlyZXMgcnRwbWFwOiByZWQgbmVnb3RpYXRpb24uIjsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIGRl
ZmF1bHRfcmVjZWl2ZV9jb25maWcuZnJhbWVfZGVjcnlwdG9yKQorICAgICAgPDwgIkVuYWJsaW5n
IEZyYW1lIERlY3J5cHRpb24gcmVxdWlyZXMgYSBmcmFtZSBkZWNyeXB0b3IgdG8gYmUgYXR0YWNo
ZWQiOworICBFWFBFQ1RfRkFMU0UoCisgICAgICBkZWZhdWx0X3JlY2VpdmVfY29uZmlnLmNyeXB0
b19vcHRpb25zLnNmcmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24pCisgICAgICA8PCAiRW5h
YmxpbmcgUmVxdWlyZSBGcmFtZSBFbmNyeXB0aW9uIG1lYW5zIGEgZGVjcnlwdG9yIG11c3QgYmUg
YXR0YWNoZWQiOwogfQogCiBURVNUX0YoQ29uZmlnRW5kVG9FbmRUZXN0LCBWZXJpZnlEZWZhdWx0
RmxleGZlY1JlY2VpdmVDb25maWdQYXJhbWV0ZXJzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2V4
dGVuZGVkX3JlcG9ydHNfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2V4dGVuZGVkX3JlcG9ydHNfdGVzdHMu
Y2MKaW5kZXggYmE1Y2E2OTNmMmI1ZThkNWJhODNmYjZkM2VhMWMxZWRkNjFkMTgyMi4uNGRlMDQ0
MWIzZGZjNDQ0ZmZlM2UwMjJkN2ViZTk0ODNkMDc0ZWYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9l
eHRlbmRlZF9yZXBvcnRzX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvZXh0ZW5kZWRfcmVwb3J0c190
ZXN0cy5jYwpAQCAtOCw5ICs4LDExIEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KIAorI2luY2x1ZGUgImFwaS92
aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25maWcuaCIKICNpbmNsdWRlICJjYWxsL2Zha2Vf
bmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29yay5oIgogI2lu
Y2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCisjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgog
I2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L3J0Y3BfcGFja2V0X3BhcnNl
ci5oIgogCkBAIC0yMSwxMiArMjMsMTQgQEAgY2xhc3MgRXh0ZW5kZWRSZXBvcnRzRW5kVG9FbmRU
ZXN0IDogcHVibGljIHRlc3Q6OkNhbGxUZXN0IHt9OwogY2xhc3MgUnRjcFhyT2JzZXJ2ZXIgOiBw
dWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKICBwdWJsaWM6CiAgIFJ0Y3BYck9ic2VydmVyKGJv
b2wgZW5hYmxlX3JydHIsCi0gICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlX3RhcmdldF9iaXRy
YXRlLAotICAgICAgICAgICAgICAgICBib29sIGVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlKQor
ICAgICAgICAgICAgICAgICBib29sIGV4cGVjdF90YXJnZXRfYml0cmF0ZSwKKyAgICAgICAgICAg
ICAgICAgYm9vbCBlbmFibGVfemVyb190YXJnZXRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAg
VmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZSBjb250ZW50X3R5cGUpCiAgICAgICA6IEVu
ZFRvRW5kVGVzdCh0ZXN0OjpDYWxsVGVzdDo6a0RlZmF1bHRUaW1lb3V0TXMpLAogICAgICAgICBl
bmFibGVfcnJ0cl8oZW5hYmxlX3JydHIpLAotICAgICAgICBlbmFibGVfdGFyZ2V0X2JpdHJhdGVf
KGVuYWJsZV90YXJnZXRfYml0cmF0ZSksCisgICAgICAgIGV4cGVjdF90YXJnZXRfYml0cmF0ZV8o
ZXhwZWN0X3RhcmdldF9iaXRyYXRlKSwKICAgICAgICAgZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJh
dGVfKGVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlKSwKKyAgICAgICAgY29udGVudF90eXBlXyhj
b250ZW50X3R5cGUpLAogICAgICAgICBzZW50X3J0Y3Bfc3JfKDApLAogICAgICAgICBzZW50X3J0
Y3BfcnJfKDApLAogICAgICAgICBzZW50X3J0Y3BfcnJ0cl8oMCksCkBAIC05NSw3ICs5OSw3IEBA
IGNsYXNzIFJ0Y3BYck9ic2VydmVyIDogcHVibGljIHRlc3Q6OkVuZFRvRW5kVGVzdCB7CiAKICAg
ICBpZiAoc2VudF9ydGNwX3NyXyA+IGtOdW1SdGNwUmVwb3J0UGFja2V0c1RvT2JzZXJ2ZSAmJgog
ICAgICAgICBzZW50X3J0Y3BfcnJfID4ga051bVJ0Y3BSZXBvcnRQYWNrZXRzVG9PYnNlcnZlICYm
Ci0gICAgICAgIChzZW50X3J0Y3BfdGFyZ2V0X2JpdHJhdGVfIHx8ICFlbmFibGVfdGFyZ2V0X2Jp
dHJhdGVfKSAmJgorICAgICAgICAoc2VudF9ydGNwX3RhcmdldF9iaXRyYXRlXyB8fCAhZXhwZWN0
X3RhcmdldF9iaXRyYXRlXykgJiYKICAgICAgICAgKHNlbnRfemVyb19ydGNwX3RhcmdldF9iaXRy
YXRlXyB8fCAhZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGVfKSkgewogICAgICAgaWYgKGVuYWJs
ZV9ycnRyXykgewogICAgICAgICBFWFBFQ1RfR1Qoc2VudF9ydGNwX3JydHJfLCAwKTsKQEAgLTEw
NCw3ICsxMDgsNyBAQCBjbGFzcyBSdGNwWHJPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0Vu
ZFRlc3QgewogICAgICAgICBFWFBFQ1RfRVEoc2VudF9ydGNwX3JydHJfLCAwKTsKICAgICAgICAg
RVhQRUNUX0VRKHNlbnRfcnRjcF9kbHJyXywgMCk7CiAgICAgICB9Ci0gICAgICBFWFBFQ1RfRVEo
ZW5hYmxlX3RhcmdldF9iaXRyYXRlXywgc2VudF9ydGNwX3RhcmdldF9iaXRyYXRlXyk7CisgICAg
ICBFWFBFQ1RfRVEoZXhwZWN0X3RhcmdldF9iaXRyYXRlXywgc2VudF9ydGNwX3RhcmdldF9iaXRy
YXRlXyk7CiAgICAgICBFWFBFQ1RfRVEoZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGVfLCBzZW50
X3plcm9fcnRjcF90YXJnZXRfYml0cmF0ZV8pOwogICAgICAgb2JzZXJ2YXRpb25fY29tcGxldGVf
LlNldCgpOwogICAgIH0KQEAgLTE0NCwxMCArMTQ4LDcgQEAgY2xhc3MgUnRjcFhyT2JzZXJ2ZXIg
OiBwdWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKICAgICAgICgqcmVjZWl2ZV9jb25maWdzKVsw
XS5kZWNvZGVyc1swXS52aWRlb19mb3JtYXQgPQogICAgICAgICAgIFNkcFZpZGVvRm9ybWF0KHNl
bmRfY29uZmlnLT5ydHAucGF5bG9hZF9uYW1lKTsKICAgICB9Ci0gICAgaWYgKGVuYWJsZV90YXJn
ZXRfYml0cmF0ZV8pIHsKLSAgICAgIC8vIFRhcmdldEJpdHJhdGUgb25seSBzaWduYWxlZCBmb3Ig
c2NyZWVuc2hhcmluZy4KLSAgICAgIGVuY29kZXJfY29uZmlnLT5jb250ZW50X3R5cGUgPSBWaWRl
b0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprU2NyZWVuOwotICAgIH0KKyAgICBlbmNvZGVy
X2NvbmZpZy0+Y29udGVudF90eXBlID0gY29udGVudF90eXBlXzsKICAgICAoKnJlY2VpdmVfY29u
ZmlncylbMF0ucnRwLnJ0Y3BfbW9kZSA9IFJ0Y3BNb2RlOjprUmVkdWNlZFNpemU7CiAgICAgKCpy
ZWNlaXZlX2NvbmZpZ3MpWzBdLnJ0cC5ydGNwX3hyLnJlY2VpdmVyX3JlZmVyZW5jZV90aW1lX3Jl
cG9ydCA9CiAgICAgICAgIGVuYWJsZV9ycnRyXzsKQEAgLTE2Miw1MCArMTYzLDY1IEBAIGNsYXNz
IFJ0Y3BYck9ic2VydmVyIDogcHVibGljIHRlc3Q6OkVuZFRvRW5kVGVzdCB7CiAKICAgcnRjOjpD
cml0aWNhbFNlY3Rpb24gY3JpdF87CiAgIGNvbnN0IGJvb2wgZW5hYmxlX3JydHJfOwotICBjb25z
dCBib29sIGVuYWJsZV90YXJnZXRfYml0cmF0ZV87CisgIGNvbnN0IGJvb2wgZXhwZWN0X3Rhcmdl
dF9iaXRyYXRlXzsKICAgY29uc3QgYm9vbCBlbmFibGVfemVyb190YXJnZXRfYml0cmF0ZV87Cisg
IGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZzo6Q29udGVudFR5cGUgY29udGVudF90eXBlXzsKICAg
aW50IHNlbnRfcnRjcF9zcl87CiAgIGludCBzZW50X3J0Y3BfcnJfIFJUQ19HVUFSREVEX0JZKCZj
cml0Xyk7CiAgIGludCBzZW50X3J0Y3BfcnJ0cl8gUlRDX0dVQVJERURfQlkoJmNyaXRfKTsKICAg
Ym9vbCBzZW50X3J0Y3BfdGFyZ2V0X2JpdHJhdGVfIFJUQ19HVUFSREVEX0JZKCZjcml0Xyk7CiAg
IGJvb2wgc2VudF96ZXJvX3J0Y3BfdGFyZ2V0X2JpdHJhdGVfIFJUQ19HVUFSREVEX0JZKCZjcml0
Xyk7CiAgIGludCBzZW50X3J0Y3BfZGxycl87Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNv
bmZpZyBmb3J3YXJkX3RyYW5zcG9ydF9jb25maWdfOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9y
Q29uZmlnIGZvcndhcmRfdHJhbnNwb3J0X2NvbmZpZ187CiAgIFNpbXVsYXRlZE5ldHdvcmsqIHNl
bmRfc2ltdWxhdGVkX25ldHdvcmtfOwogfTsKIAogVEVTVF9GKEV4dGVuZGVkUmVwb3J0c0VuZFRv
RW5kVGVzdCwKICAgICAgICBUZXN0RXh0ZW5kZWRSZXBvcnRzV2l0aFJydHJXaXRob3V0VGFyZ2V0
Qml0cmF0ZSkgewotICBSdGNwWHJPYnNlcnZlciB0ZXN0KC8qZW5hYmxlX3JydHI9Ki90cnVlLCAv
KmVuYWJsZV90YXJnZXRfYml0cmF0ZT0qL2ZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIC8q
ZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSk7CisgIFJ0Y3BYck9ic2VydmVyIHRl
c3QoLyplbmFibGVfcnJ0cj0qL3RydWUsIC8qZXhwZWN0X3RhcmdldF9iaXRyYXRlPSovZmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICAgLyplbmFibGVfemVyb190YXJnZXRfYml0cmF0ZT0qL2Zh
bHNlLAorICAgICAgICAgICAgICAgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZzo6Q29udGVudFR5
cGU6OmtSZWFsdGltZVZpZGVvKTsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCiBURVNUX0Yo
RXh0ZW5kZWRSZXBvcnRzRW5kVG9FbmRUZXN0LAogICAgICAgIFRlc3RFeHRlbmRlZFJlcG9ydHNX
aXRob3V0UnJ0cldpdGhvdXRUYXJnZXRCaXRyYXRlKSB7Ci0gIFJ0Y3BYck9ic2VydmVyIHRlc3Qo
LyplbmFibGVfcnJ0cj0qL2ZhbHNlLCAvKmVuYWJsZV90YXJnZXRfYml0cmF0ZT0qL2ZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9mYWxz
ZSk7CisgIFJ0Y3BYck9ic2VydmVyIHRlc3QoLyplbmFibGVfcnJ0cj0qL2ZhbHNlLCAvKmV4cGVj
dF90YXJnZXRfYml0cmF0ZT0qL2ZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIC8qZW5hYmxl
X3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBWaWRl
b0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprUmVhbHRpbWVWaWRlbyk7CiAgIFJ1bkJhc2VU
ZXN0KCZ0ZXN0KTsKIH0KIAogVEVTVF9GKEV4dGVuZGVkUmVwb3J0c0VuZFRvRW5kVGVzdCwKICAg
ICAgICBUZXN0RXh0ZW5kZWRSZXBvcnRzV2l0aFJydHJXaXRoVGFyZ2V0Qml0cmF0ZSkgewotICBS
dGNwWHJPYnNlcnZlciB0ZXN0KC8qZW5hYmxlX3JydHI9Ki90cnVlLCAvKmVuYWJsZV90YXJnZXRf
Yml0cmF0ZT0qL3RydWUsCi0gICAgICAgICAgICAgICAgICAgICAgLyplbmFibGVfemVyb190YXJn
ZXRfYml0cmF0ZT0qL2ZhbHNlKTsKKyAgUnRjcFhyT2JzZXJ2ZXIgdGVzdCgvKmVuYWJsZV9ycnRy
PSovdHJ1ZSwgLypleHBlY3RfdGFyZ2V0X2JpdHJhdGU9Ki90cnVlLAorICAgICAgICAgICAgICAg
ICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprU2NyZWVuKTsKICAg
UnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCiBURVNUX0YoRXh0ZW5kZWRSZXBvcnRzRW5kVG9FbmRU
ZXN0LAogICAgICAgIFRlc3RFeHRlbmRlZFJlcG9ydHNXaXRob3V0UnJ0cldpdGhUYXJnZXRCaXRy
YXRlKSB7Ci0gIFJ0Y3BYck9ic2VydmVyIHRlc3QoLyplbmFibGVfcnJ0cj0qL2ZhbHNlLCAvKmVu
YWJsZV90YXJnZXRfYml0cmF0ZT0qL3RydWUsCi0gICAgICAgICAgICAgICAgICAgICAgLyplbmFi
bGVfemVyb190YXJnZXRfYml0cmF0ZT0qL2ZhbHNlKTsKKyAgUnRjcFhyT2JzZXJ2ZXIgdGVzdCgv
KmVuYWJsZV9ycnRyPSovZmFsc2UsIC8qZXhwZWN0X3RhcmdldF9iaXRyYXRlPSovdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAvKmVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlPSovZmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6
a1NjcmVlbik7CisgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKK30KKworVEVTVF9GKEV4dGVuZGVkUmVw
b3J0c0VuZFRvRW5kVGVzdCwKKyAgICAgICBUZXN0RXh0ZW5kZWRSZXBvcnRzV2l0aG91dFJydHJX
aXRoVGFyZ2V0Qml0cmF0ZUZyb21GaWVsZFRyaWFsKSB7CisgIHRlc3Q6OlNjb3BlZEZpZWxkVHJp
YWxzIGZpZWxkX3RyaWFscygiV2ViUlRDLVRhcmdldC1CaXRyYXRlLVJ0Y3AvRW5hYmxlZC8iKTsK
KyAgUnRjcFhyT2JzZXJ2ZXIgdGVzdCgvKmVuYWJsZV9ycnRyPSovZmFsc2UsIC8qZXhwZWN0X3Rh
cmdldF9iaXRyYXRlPSovdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAvKmVuYWJsZV96ZXJv
X3RhcmdldF9iaXRyYXRlPSovZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgVmlkZW9FbmNv
ZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1JlYWx0aW1lVmlkZW8pOwogICBSdW5CYXNlVGVzdCgm
dGVzdCk7CiB9CiAKIFRFU1RfRihFeHRlbmRlZFJlcG9ydHNFbmRUb0VuZFRlc3QsCiAgICAgICAg
VGVzdEV4dGVuZGVkUmVwb3J0c0NhblNpZ25hbFplcm9UYXJnZXRCaXRyYXRlKSB7Ci0gIFJ0Y3BY
ck9ic2VydmVyIHRlc3QoLyplbmFibGVfcnJ0cj0qL2ZhbHNlLCAvKmVuYWJsZV90YXJnZXRfYml0
cmF0ZT0qL3RydWUsCi0gICAgICAgICAgICAgICAgICAgICAgLyplbmFibGVfemVyb190YXJnZXRf
Yml0cmF0ZT0qL3RydWUpOworICBSdGNwWHJPYnNlcnZlciB0ZXN0KC8qZW5hYmxlX3JydHI9Ki9m
YWxzZSwgLypleHBlY3RfdGFyZ2V0X2JpdHJhdGU9Ki90cnVlLAorICAgICAgICAgICAgICAgICAg
ICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki90cnVlLAorICAgICAgICAgICAgICAg
ICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZzo6Q29udGVudFR5cGU6OmtTY3JlZW4pOwogICBSdW5C
YXNlVGVzdCgmdGVzdCk7CiB9CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5k
X3Rlc3RzL2ZlY190ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvZmVjX3Rlc3RzLmNjCmluZGV4IDAzMDBkMTJm
OGJjYWM2ZDJhYTI4YmViZmZkMTI1MTg2ODk0MzgzZjMuLjJjNTNjY2M3Y2JlYzM0MDk5ZDc4ODA5
ZmQ1N2Y2NmY0NDFhNjkzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvZmVjX3Rlc3RzLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19l
bmRfdGVzdHMvZmVjX3Rlc3RzLmNjCkBAIC05LDYgKzksNyBAQAogICovCiAKICNpbmNsdWRlICJh
cGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1
bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwvZmFrZV9uZXR3
b3JrX3BpcGUuaCIKICNpbmNsdWRlICJjYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgiCiAjaW5jbHVk
ZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuaCIKQEAgLTE2LDcgKzE3LDYg
QEAKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4
LmgiCiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3Ry
aWFsLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9ydGNwX3BhY2tldF9wYXJz
ZXIuaCIKIApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIEZsZXhmZWNSZW5kZXJPYnNlcnZlciA6
IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QsCiAgICAgICBDYWxsKiBzZW5kZXJfY2FsbCkgb3Zl
cnJpZGUgewogICAgIC8vIEF0IGxvdyBSVFQgKDwga0xvd1J0dE5hY2tNcykgLT4gTkFDSyBvbmx5
LCBubyBGRUMuCiAgICAgY29uc3QgaW50IGtOZXR3b3JrRGVsYXlNcyA9IDEwMDsKLSAgICBEZWZh
dWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICAgIEJ1aWx0SW5OZXR3b3JrQmVo
YXZpb3JDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5xdWV1ZV9kZWxheV9tcyA9IGtOZXR3b3Jr
RGVsYXlNczsKICAgICByZXR1cm4gbmV3IHRlc3Q6OlBhY2tldFRyYW5zcG9ydCgKICAgICAgICAg
dGFza19xdWV1ZSwgc2VuZGVyX2NhbGwsIHRoaXMsIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1Nl
bmRlciwKQEAgLTQyMSw3ICs0MjEsNyBAQCBURVNUX0YoRmVjRW5kVG9FbmRUZXN0LCBSZWNlaXZl
ZFVscGZlY1BhY2tldHNOb3ROYWNrZWQpIHsKICAgICAgIC8vIEF0IGxvdyBSVFQgKDwga0xvd1J0
dE5hY2tNcykgLT4gTkFDSyBvbmx5LCBubyBGRUMuCiAgICAgICAvLyBDb25maWd1cmUgc29tZSBu
ZXR3b3JrIGRlbGF5LgogICAgICAgY29uc3QgaW50IGtOZXR3b3JrRGVsYXlNcyA9IDUwOwotICAg
ICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgICAgIEJ1aWx0SW5O
ZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICAgICAgY29uZmlnLnF1ZXVlX2RlbGF5X21z
ID0ga05ldHdvcmtEZWxheU1zOwogICAgICAgcmV0dXJuIG5ldyB0ZXN0OjpQYWNrZXRUcmFuc3Bv
cnQoCiAgICAgICAgICAgdGFza19xdWV1ZSwgc2VuZGVyX2NhbGwsIHRoaXMsIHRlc3Q6OlBhY2tl
dFRyYW5zcG9ydDo6a1NlbmRlciwKQEAgLTQzMyw5ICs0MzMsMTAgQEAgVEVTVF9GKEZlY0VuZFRv
RW5kVGVzdCwgUmVjZWl2ZWRVbHBmZWNQYWNrZXRzTm90TmFja2VkKSB7CiAKICAgICAvLyBUT0RP
KGhvbG1lcik6IEludmVzdGlnYXRlIHdoeSB3ZSBkb24ndCBzZW5kIEZFQyBwYWNrZXRzIHdoZW4g
dGhlIGJpdHJhdGUKICAgICAvLyBpcyAxMCBrYnBzLgotICAgIHZvaWQgTW9kaWZ5U2VuZGVyQ2Fs
bENvbmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZykgb3ZlcnJpZGUgeworICAgIHZvaWQgTW9kaWZ5
U2VuZGVyQml0cmF0ZUNvbmZpZygKKyAgICAgICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRl
X2NvbmZpZykgb3ZlcnJpZGUgewogICAgICAgY29uc3QgaW50IGtNaW5CaXRyYXRlQnBzID0gMzAw
MDA7Ci0gICAgICBjb25maWctPmJpdHJhdGVfY29uZmlnLm1pbl9iaXRyYXRlX2JwcyA9IGtNaW5C
aXRyYXRlQnBzOworICAgICAgYml0cmF0ZV9jb25maWctPm1pbl9iaXRyYXRlX2JwcyA9IGtNaW5C
aXRyYXRlQnBzOwogICAgIH0KIAogICAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdzKApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5k
X3RvX2VuZF90ZXN0cy9mcmFtZV9lbmNyeXB0aW9uX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9mcmFtZV9l
bmNyeXB0aW9uX3Rlc3RzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZDdiNDc4NDkzNTk0MDEyYWZhYzE3Y2Yz
NTYzZTk3ZWM0MTQ4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2ZyYW1lX2VuY3J5cHRp
b25fdGVzdHMuY2MKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1
ZGUgImFwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3Qv
ZmFrZV9mcmFtZV9lbmNyeXB0b3IuaCIKKyNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxk
ZWNvZGVyZmFjdG9yeS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDgvaW5jbHVkZS92cDguaCIKKyNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgorI2luY2x1ZGUg
InRlc3QvZmllbGRfdHJpYWwuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworCitjbGFzcyBGcmFtZUVuY3J5cHRpb25FbmRUb0VuZFRlc3QgOiBwdWJsaWMg
dGVzdDo6Q2FsbFRlc3QgeworIHB1YmxpYzoKKyAgRnJhbWVFbmNyeXB0aW9uRW5kVG9FbmRUZXN0
KCkgPSBkZWZhdWx0OworCisgcHJpdmF0ZToKKyAgLy8gR2VuZXJpY0Rlc2NyaXB0b3IgaXMgcmVx
dWlyZWQgZm9yIEZyYW1lRW5jcnlwdGlvbiB0byB3b3JrLgorICB0ZXN0OjpTY29wZWRGaWVsZFRy
aWFscyBmaWVsZF90cmlhbHNfeyJXZWJSVEMtR2VuZXJpY0Rlc2NyaXB0b3IvRW5hYmxlZC8ifTsK
K307CisKKy8vIFZhbGlkYXRlcyB0aGF0IHBheWxvYWRzIGNhbm5vdCBiZSBzZW50IHdpdGhvdXQg
YSBmcmFtZSBlbmNyeXB0b3IgYW5kIGZyYW1lCisvLyBkZWNyeXB0b3IgYXR0YWNoZWQuCitURVNU
X0YoRnJhbWVFbmNyeXB0aW9uRW5kVG9FbmRUZXN0LCBSZXF1aXJlRnJhbWVFbmNyeXB0aW9uRW5m
b3JjZWQpIHsKKyAgY2xhc3MgRGVjcnlwdGVkRnJhbWVPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpF
bmRUb0VuZFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgcnRj
OjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4geworICAgcHVibGljOgorICAgIERlY3J5
cHRlZEZyYW1lT2JzZXJ2ZXIoKQorICAgICAgICA6IEVuZFRvRW5kVGVzdChrRGVmYXVsdFRpbWVv
dXRNcyksCisgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5XyhbXSgpIHsgcmV0dXJuIFZQOEVuY29k
ZXI6OkNyZWF0ZSgpOyB9KSB7fQorCisgICBwcml2YXRlOgorICAgIHZvaWQgTW9kaWZ5VmlkZW9D
b25maWdzKAorICAgICAgICBWaWRlb1NlbmRTdHJlYW06OkNvbmZpZyogc2VuZF9jb25maWcsCisg
ICAgICAgIHN0ZDo6dmVjdG9yPFZpZGVvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnPiogcmVjZWl2ZV9j
b25maWdzLAorICAgICAgICBWaWRlb0VuY29kZXJDb25maWcqIGVuY29kZXJfY29uZmlnKSBvdmVy
cmlkZSB7CisgICAgICAvLyBVc2UgVlA4IGluc3RlYWQgb2YgRkFLRS4KKyAgICAgIHNlbmRfY29u
ZmlnLT5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9ICZlbmNvZGVyX2ZhY3Rvcnlf
OworICAgICAgc2VuZF9jb25maWctPnJ0cC5wYXlsb2FkX25hbWUgPSAiVlA4IjsKKyAgICAgIHNl
bmRfY29uZmlnLT5ydHAucGF5bG9hZF90eXBlID0ga1ZpZGVvU2VuZFBheWxvYWRUeXBlOworICAg
ICAgc2VuZF9jb25maWctPmZyYW1lX2VuY3J5cHRvciA9IG5ldyBGYWtlRnJhbWVFbmNyeXB0b3Io
KTsKKyAgICAgIHNlbmRfY29uZmlnLT5jcnlwdG9fb3B0aW9ucy5zZnJhbWUucmVxdWlyZV9mcmFt
ZV9lbmNyeXB0aW9uID0gdHJ1ZTsKKyAgICAgIGVuY29kZXJfY29uZmlnLT5jb2RlY190eXBlID0g
a1ZpZGVvQ29kZWNWUDg7CisgICAgICBWaWRlb1JlY2VpdmVTdHJlYW06OkRlY29kZXIgZGVjb2Rl
ciA9CisgICAgICAgICAgdGVzdDo6Q3JlYXRlTWF0Y2hpbmdEZWNvZGVyKCpzZW5kX2NvbmZpZyk7
CisgICAgICBkZWNvZGVyLmRlY29kZXJfZmFjdG9yeSA9ICZkZWNvZGVyX2ZhY3RvcnlfOworICAg
ICAgZm9yIChhdXRvJiByZWN2X2NvbmZpZyA6ICpyZWNlaXZlX2NvbmZpZ3MpIHsKKyAgICAgICAg
cmVjdl9jb25maWcuZGVjb2RlcnMuY2xlYXIoKTsKKyAgICAgICAgcmVjdl9jb25maWcuZGVjb2Rl
cnMucHVzaF9iYWNrKGRlY29kZXIpOworICAgICAgICByZWN2X2NvbmZpZy5yZW5kZXJlciA9IHRo
aXM7CisgICAgICAgIHJlY3ZfY29uZmlnLmZyYW1lX2RlY3J5cHRvciA9IG5ldyBGYWtlRnJhbWVE
ZWNyeXB0b3IoKTsKKyAgICAgICAgcmVjdl9jb25maWcuY3J5cHRvX29wdGlvbnMuc2ZyYW1lLnJl
cXVpcmVfZnJhbWVfZW5jcnlwdGlvbiA9IHRydWU7CisgICAgICB9CisgICAgfQorCisgICAgLy8g
VmFsaWRhdGUgdGhhdCByb3RhdGlvbiBpcyBwcmVzZXJ2ZWQuCisgICAgdm9pZCBPbkZyYW1lKGNv
bnN0IFZpZGVvRnJhbWUmIHZpZGVvX2ZyYW1lKSBvdmVycmlkZSB7CisgICAgICBvYnNlcnZhdGlv
bl9jb21wbGV0ZV8uU2V0KCk7CisgICAgfQorCisgICAgdm9pZCBQZXJmb3JtVGVzdCgpIG92ZXJy
aWRlIHsKKyAgICAgIEVYUEVDVF9UUlVFKFdhaXQoKSkKKyAgICAgICAgICA8PCAiVGltZWQgb3V0
IHdhaXRpbmcgZm9yIGRlY3J5cHRlZCBmcmFtZXMgdG8gYmUgcmVuZGVyZWQuIjsKKyAgICB9CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBlbmNvZGVyXzsKKyAgICB0ZXN0OjpG
dW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2Rlcl9mYWN0b3J5XzsKKyAgICBJbnRlcm5h
bERlY29kZXJGYWN0b3J5IGRlY29kZXJfZmFjdG9yeV87CisgIH0gdGVzdDsKKworICBSdW5CYXNl
VGVzdCgmdGVzdCk7Cit9Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rl
c3RzL2hpc3RvZ3JhbV90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvaGlzdG9ncmFtX3Rlc3RzLmNjCmluZGV4
IGE0YWEwYzgxMGE5NjI5NWE5ZjAwYzhmM2JlYzA4ZDc0OThmZjYyMmUuLjMxMjkyNGM5ODZiODYy
YzgxYWFlNjAwY2EwNjdhNmE5MWU1ZTRmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvaGlzdG9ncmFt
X3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvaGlzdG9ncmFtX3Rlc3RzLmNjCkBAIC05LDEwICs5LDEw
IEBACiAgKi8KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJh
cGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4LmgiCiAjaW5jbHVk
ZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogI2luY2x1ZGUgInRlc3QvY2Fs
bF90ZXN0LmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3Rvcnku
aCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5k
X3RvX2VuZF90ZXN0cy9tdWx0aV9jb2RlY19yZWNlaXZlX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0
aV9jb2RlY19yZWNlaXZlX3Rlc3RzLmNjCmluZGV4IGUxM2JjMzUxY2ExY2M3MDczOGE0MWJjMzBh
MzMyZmQxZGM3Yjk4N2EuLmM1OGYwZmUxNmE4ZTJlYWQwNTcwOWE4NjEyN2IzOWQ1NzRjMjNkOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL2VuZF90b19lbmRfdGVzdHMvbXVsdGlfY29kZWNfcmVjZWl2ZV90ZXN0cy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5k
X3Rlc3RzL211bHRpX2NvZGVjX3JlY2VpdmVfdGVzdHMuY2MKQEAgLTksMTMgKzksMTMgQEAKICAq
LwogCiAjaW5jbHVkZSAiYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaCIKKyNpbmNsdWRlICJh
cGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJjYWxsL2Zha2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0
d29yay5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2luY2x1
ZGUvaDI2NC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5j
bHVkZS92cDguaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L2lu
Y2x1ZGUvdnA5LmgiCiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKLSNpbmNsdWRlICJ0ZXN0
L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3Qu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC01MSwyOSArNTEsNiBAQCBpbnQgUmVtb3ZlT2xk
ZXJPckVxdWFsKHVpbnQzMl90IHRpbWVzdGFtcCwgc3RkOjp2ZWN0b3I8dWludDMyX3Q+KiB0aW1l
c3RhbXBzKSB7CiAgIHJldHVybiBudW1fcmVtb3ZlZDsKIH0KIAotY2xhc3MgVmlkZW9TdHJlYW1G
YWN0b3J5VGVzdAotICAgIDogcHVibGljIFZpZGVvRW5jb2RlckNvbmZpZzo6VmlkZW9TdHJlYW1G
YWN0b3J5SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFZpZGVvU3RyZWFtRmFjdG9y
eVRlc3Qoc2l6ZV90IG51bV90ZW1wb3JhbF9sYXllcnMpCi0gICAgICA6IG51bV90ZW1wb3JhbF9s
YXllcnNfKG51bV90ZW1wb3JhbF9sYXllcnMpIHt9Ci0KLSBwcml2YXRlOgotICBzdGQ6OnZlY3Rv
cjxWaWRlb1N0cmVhbT4gQ3JlYXRlRW5jb2RlclN0cmVhbXMoCi0gICAgICBpbnQgd2lkdGgsCi0g
ICAgICBpbnQgaGVpZ2h0LAotICAgICAgY29uc3QgVmlkZW9FbmNvZGVyQ29uZmlnJiBlbmNvZGVy
X2NvbmZpZykgb3ZlcnJpZGUgewotICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBzdHJlYW1z
ID0KLSAgICAgICAgdGVzdDo6Q3JlYXRlVmlkZW9TdHJlYW1zKHdpZHRoLCBoZWlnaHQsIGVuY29k
ZXJfY29uZmlnKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW5jb2Rlcl9jb25maWcu
bnVtYmVyX29mX3N0cmVhbXM7ICsraSkKLSAgICAgIHN0cmVhbXNbaV0ubnVtX3RlbXBvcmFsX2xh
eWVycyA9IG51bV90ZW1wb3JhbF9sYXllcnNfOwotCi0gICAgcmV0dXJuIHN0cmVhbXM7Ci0gIH0K
LQotICBjb25zdCBzaXplX3QgbnVtX3RlbXBvcmFsX2xheWVyc187Ci19OwotCiBjbGFzcyBGcmFt
ZU9ic2VydmVyIDogcHVibGljIHRlc3Q6OlJ0cFJ0Y3BPYnNlcnZlciwKICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4gewogIHB1
YmxpYzoKQEAgLTE1MywxOCArMTMwLDE2IEBAIGNsYXNzIE11bHRpQ29kZWNSZWNlaXZlVGVzdCA6
IHB1YmxpYyB0ZXN0OjpDYWxsVGVzdCB7CiAgICAgICAgICAgJnRhc2tfcXVldWVfLCBzZW5kZXJf
Y2FsbF8uZ2V0KCksICZvYnNlcnZlcl8sCiAgICAgICAgICAgdGVzdDo6UGFja2V0VHJhbnNwb3J0
OjprU2VuZGVyLCBrUGF5bG9hZFR5cGVNYXAsCiAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8
RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2so
KSwKLSAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0g
ICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKSk7Cisg
ICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVl
PFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSkpKTsKICAgICAgIHNlbmRf
dHJhbnNwb3J0Xy0+U2V0UmVjZWl2ZXIocmVjZWl2ZXJfY2FsbF8tPlJlY2VpdmVyKCkpOwogCiAg
ICAgICByZWNlaXZlX3RyYW5zcG9ydF8ucmVzZXQobmV3IHRlc3Q6OlBhY2tldFRyYW5zcG9ydCgK
ICAgICAgICAgICAmdGFza19xdWV1ZV8sIHJlY2VpdmVyX2NhbGxfLmdldCgpLCAmb2JzZXJ2ZXJf
LAogICAgICAgICAgIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1JlY2VpdmVyLCBrUGF5bG9hZFR5
cGVNYXAsCiAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAg
ICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKLSAgICAgICAgICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICBEZWZh
dWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKSk7CisgICAgICAgICAgICAgIENsb2NrOjpH
ZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdv
cmtCZWhhdmlvckNvbmZpZygpKSkpKTsKICAgICAgIHJlY2VpdmVfdHJhbnNwb3J0Xy0+U2V0UmVj
ZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZlcigpKTsKICAgICB9KTsKICAgfQpAQCAtMjE5LDkg
KzE5NCw5IEBAIHZvaWQgTXVsdGlDb2RlY1JlY2VpdmVUZXN0OjpDb25maWd1cmVFbmNvZGVyKGNv
bnN0IENvZGVjQ29uZmlnJiBjb25maWcpIHsKICAgICAgIFBheWxvYWROYW1lVG9QYXlsb2FkVHlw
ZShjb25maWcucGF5bG9hZF9uYW1lKTsKICAgR2V0VmlkZW9FbmNvZGVyQ29uZmlnKCktPmNvZGVj
X3R5cGUgPQogICAgICAgUGF5bG9hZFN0cmluZ1RvQ29kZWNUeXBlKGNvbmZpZy5wYXlsb2FkX25h
bWUpOwotICBHZXRWaWRlb0VuY29kZXJDb25maWcoKS0+dmlkZW9fc3RyZWFtX2ZhY3RvcnkgPQot
ICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxWaWRlb1N0cmVhbUZhY3RvcnlUZXN0PigK
LSAgICAgICAgICBjb25maWcubnVtX3RlbXBvcmFsX2xheWVycyk7CisgIEVYUEVDVF9FUSgxdSwg
R2V0VmlkZW9FbmNvZGVyQ29uZmlnKCktPnNpbXVsY2FzdF9sYXllcnMuc2l6ZSgpKTsKKyAgR2V0
VmlkZW9FbmNvZGVyQ29uZmlnKCktPnNpbXVsY2FzdF9sYXllcnNbMF0ubnVtX3RlbXBvcmFsX2xh
eWVycyA9CisgICAgICBjb25maWcubnVtX3RlbXBvcmFsX2xheWVyczsKIH0KIAogdm9pZCBNdWx0
aUNvZGVjUmVjZWl2ZVRlc3Q6OlJ1blRlc3RXaXRoQ29kZWNzKApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0
cy9tdWx0aV9zdHJlYW1fdGVzdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdGVyLmNj
CmluZGV4IDdkNjY5NzYwMDFhZGIyZmQ0NTY0NjdjZTdmNGNiNzZlYmJmMjUyYTIuLjVkNWRhNjVj
YThmN2Y4MDUxMmVjYzBmNmE4MGRkNTZlYTVlZmJmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvbXVs
dGlfc3RyZWFtX3Rlc3Rlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL211bHRpX3N0cmVhbV90ZXN0ZXIuY2MK
QEAgLTE1LDYgKzE1LDggQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvdGVz
dC9zaW11bGF0ZWRfbmV0d29yay5oIgorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9u
X3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS92aWRlby9idWlsdGluX3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJjYWxsL2Zha2VfbmV0
d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29yay5oIgogI2luY2x1
ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCkBAIC0yMiw3ICsyNCw2
IEBACiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3Zw
OC5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9lbmNvZGVy
X3NldHRpbmdzLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3Rv
cnkuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTU0LDYgKzU1LDggQEAgdm9pZCBNdWx0
aVN0cmVhbVRlc3Rlcjo6UnVuVGVzdCgpIHsKICAgdGVzdDo6RnJhbWVHZW5lcmF0b3JDYXB0dXJl
ciogZnJhbWVfZ2VuZXJhdG9yc1trTnVtU3RyZWFtc107CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9F
bmNvZGVyRmFjdG9yeSBlbmNvZGVyX2ZhY3RvcnkoCiAgICAgICBbXSgpIHsgcmV0dXJuIFZQOEVu
Y29kZXI6OkNyZWF0ZSgpOyB9KTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9j
YXRvckZhY3Rvcnk+IGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkgPQorICAgICAgQ3JlYXRlQnVp
bHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKTsKICAgSW50ZXJuYWxEZWNvZGVyRmFj
dG9yeSBkZWNvZGVyX2ZhY3Rvcnk7CiAKICAgdGFza19xdWV1ZV8tPlNlbmRUYXNrKFsmXSgpIHsK
QEAgLTc1LDYgKzc4LDggQEAgdm9pZCBNdWx0aVN0cmVhbVRlc3Rlcjo6UnVuVGVzdCgpIHsKICAg
ICAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnIHNlbmRfY29uZmlnKHNlbmRlcl90cmFuc3BvcnQu
Z2V0KCkpOwogICAgICAgc2VuZF9jb25maWcucnRwLnNzcmNzLnB1c2hfYmFjayhzc3JjKTsKICAg
ICAgIHNlbmRfY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gJmVuY29k
ZXJfZmFjdG9yeTsKKyAgICAgIHNlbmRfY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5n
ZXQoKTsKICAgICAgIHNlbmRfY29uZmlnLnJ0cC5wYXlsb2FkX25hbWUgPSAiVlA4IjsKICAgICAg
IHNlbmRfY29uZmlnLnJ0cC5wYXlsb2FkX3R5cGUgPSBrVmlkZW9QYXlsb2FkVHlwZTsKICAgICAg
IFZpZGVvRW5jb2RlckNvbmZpZyBlbmNvZGVyX2NvbmZpZzsKQEAgLTE0Myw5ICsxNDgsOSBAQCB0
ZXN0OjpEaXJlY3RUcmFuc3BvcnQqIE11bHRpU3RyZWFtVGVzdGVyOjpDcmVhdGVTZW5kVHJhbnNw
b3J0KAogICAgIENhbGwqIHNlbmRlcl9jYWxsKSB7CiAgIHJldHVybiBuZXcgdGVzdDo6RGlyZWN0
VHJhbnNwb3J0KAogICAgICAgdGFza19xdWV1ZSwKLSAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZh
a2VOZXR3b3JrUGlwZT4oQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0
d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZh
dWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpLAorICAgICAgYWJzbDo6bWFrZV91bmlxdWU8
RmFrZU5ldHdvcmtQaXBlPigKKyAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAor
ICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KEJ1aWx0SW5OZXR3
b3JrQmVoYXZpb3JDb25maWcoKSkpLAogICAgICAgc2VuZGVyX2NhbGwsIHBheWxvYWRfdHlwZV9t
YXBfKTsKIH0KIApAQCAtMTU0LDkgKzE1OSw5IEBAIHRlc3Q6OkRpcmVjdFRyYW5zcG9ydCogTXVs
dGlTdHJlYW1UZXN0ZXI6OkNyZWF0ZVJlY2VpdmVUcmFuc3BvcnQoCiAgICAgQ2FsbCogcmVjZWl2
ZXJfY2FsbCkgewogICByZXR1cm4gbmV3IHRlc3Q6OkRpcmVjdFRyYW5zcG9ydCgKICAgICAgIHRh
c2tfcXVldWUsCi0gICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KENsb2Nr
OjpHZXRSZWFsVGltZUNsb2NrKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9u
Q29uZmlnKCkpKSwKKyAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCisg
ICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKKyAgICAgICAgICBhYnNsOjptYWtl
X3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPihCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkp
KSwKICAgICAgIHJlY2VpdmVyX2NhbGwsIHBheWxvYWRfdHlwZV9tYXBfKTsKIH0KIH0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvbXVsdGlfc3RyZWFtX3Rlc3RzLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3Rv
X2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdHMuY2MKaW5kZXggZGJlYWQyNDU2NGZlMGQ3MGJl
MDAwMWZhZjEyNTkyNjM5Y2FiNGM1Yi4uOWM3NTRmYjcwYTU3ZGU2N2ZkMDJhMDQ0MjBlODdmMTk2
NWMzNWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdHMuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2Vu
ZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdHMuY2MKQEAgLTMwLDEwICszMCw3IEBAIFRFU1RfRihN
dWx0aVN0cmVhbUVuZFRvRW5kVGVzdCwgU2VuZHNBbmRSZWNlaXZlc011bHRpcGxlU3RyZWFtcykg
ewogICAgIFZpZGVvT3V0cHV0T2JzZXJ2ZXIoY29uc3QgTXVsdGlTdHJlYW1UZXN0ZXI6OkNvZGVj
U2V0dGluZ3MmIHNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3Ny
YywKICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6OkZyYW1lR2VuZXJhdG9yQ2FwdHVyZXIq
KiBmcmFtZV9nZW5lcmF0b3IpCi0gICAgICAgIDogc2V0dGluZ3NfKHNldHRpbmdzKSwKLSAgICAg
ICAgICBzc3JjXyhzc3JjKSwKLSAgICAgICAgICBmcmFtZV9nZW5lcmF0b3JfKGZyYW1lX2dlbmVy
YXRvciksCi0gICAgICAgICAgZG9uZV8oZmFsc2UsIGZhbHNlKSB7fQorICAgICAgICA6IHNldHRp
bmdzXyhzZXR0aW5ncyksIHNzcmNfKHNzcmMpLCBmcmFtZV9nZW5lcmF0b3JfKGZyYW1lX2dlbmVy
YXRvcikge30KIAogICAgIHZvaWQgT25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb19mcmFt
ZSkgb3ZlcnJpZGUgewogICAgICAgRVhQRUNUX0VRKHNldHRpbmdzXy53aWR0aCwgdmlkZW9fZnJh
bWUud2lkdGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL25ldHdvcmtfc3RhdGVfdGVzdHMuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9f
ZW5kX3Rlc3RzL25ldHdvcmtfc3RhdGVfdGVzdHMuY2MKaW5kZXggOTM3Nzc3ZjZiMzQ3OTI3NjUw
NjczOWQyNWEzODY5YzBjZWE2YzBjOC4uZDY2NjM0YTEzNWYzMmFhNjZiYjAzMmZhMTNiYTlmN2Ix
M2QyMjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9uZXR3b3JrX3N0YXRlX3Rlc3RzLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19l
bmRfdGVzdHMvbmV0d29ya19zdGF0ZV90ZXN0cy5jYwpAQCAtMTE4LDkgKzExOCw5IEBAIHZvaWQg
TmV0d29ya1N0YXRlRW5kVG9FbmRUZXN0OjpWZXJpZnlOZXdWaWRlb1JlY2VpdmVTdHJlYW1zUmVz
cGVjdE5ldHdvcmtTdGF0ZSgKICAgICByZWNlaXZlcl9jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdv
cmtTdGF0ZShuZXR3b3JrX3RvX2JyaW5nX3VwLCBrTmV0d29ya1VwKTsKICAgICBzZW5kZXJfdHJh
bnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGlyZWN0VHJhbnNwb3J0PigKICAgICAg
ICAgJnRhc2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1Bp
cGU+KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91
bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgICAg
YWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9jazo6R2V0UmVhbFRpbWVDbG9j
aygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om1h
a2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAg
ICAgICAgc2VuZGVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiAgICAgc2VuZGVy
X3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIocmVjZWl2ZXJfY2FsbF8tPlJlY2VpdmVyKCkpOwogICAg
IENyZWF0ZVNlbmRDb25maWcoMSwgMCwgMCwgc2VuZGVyX3RyYW5zcG9ydC5nZXQoKSk7CkBAIC0x
NTgsOCArMTU4LDYgQEAgVEVTVF9GKE5ldHdvcmtTdGF0ZUVuZFRvRW5kVGVzdCwgUmVzcGVjdHNO
ZXR3b3JrU3RhdGUpIHsKICAgICAgICAgOiBFbmRUb0VuZFRlc3Qoa0RlZmF1bHRUaW1lb3V0TXMp
LAogICAgICAgICAgIEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAg
ICAgICAgIHRhc2tfcXVldWVfKHRhc2tfcXVldWUpLAotICAgICAgICAgIGVuY29kZWRfZnJhbWVz
XyhmYWxzZSwgZmFsc2UpLAotICAgICAgICAgIHBhY2tldF9ldmVudF8oZmFsc2UsIGZhbHNlKSwK
ICAgICAgICAgICBzZW5kZXJfY2FsbF8obnVsbHB0ciksCiAgICAgICAgICAgcmVjZWl2ZXJfY2Fs
bF8obnVsbHB0ciksCiAgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyh0aGlzKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90
b19lbmRfdGVzdHMvcHJvYmluZ190ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcHJvYmluZ190ZXN0cy5jYwpp
bmRleCA3ZGZmNjU3YWQwMzk3Y2JmOTYzNDBhOTRjZjQzN2Y2MDYyMGMwYzk0Li43OTcwZDRhMWJm
Nzk4OWI5NWZmYzY5ZDNmNzZjYjliMjk2YmViNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3Byb2Jp
bmdfdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9wcm9iaW5nX3Rlc3RzLmNjCkBAIC00MSw4ICs0MSw4
IEBAIGNsYXNzIFByb2JpbmdUZXN0IDogcHVibGljIHRlc3Q6OkVuZFRvRW5kVGVzdCB7CiAgICAg
ICAgIHN0YXRlXygwKSwKICAgICAgICAgc2VuZGVyX2NhbGxfKG51bGxwdHIpIHt9CiAKLSAgdm9p
ZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSBvdmVycmlkZSB7
Ci0gICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5zdGFydF9iaXRyYXRlX2JwcyA9IHN0YXJ0X2Jp
dHJhdGVfYnBzXzsKKyAgdm9pZCBNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVDb25z
dHJhaW50cyogYml0cmF0ZV9jb25maWcpIG92ZXJyaWRlIHsKKyAgICBiaXRyYXRlX2NvbmZpZy0+
c3RhcnRfYml0cmF0ZV9icHMgPSBzdGFydF9iaXRyYXRlX2Jwc187CiAgIH0KIAogICB2b2lkIE9u
Q2FsbHNDcmVhdGVkKENhbGwqIHNlbmRlcl9jYWxsLCBDYWxsKiByZWNlaXZlcl9jYWxsKSBvdmVy
cmlkZSB7CkBAIC0yMjEsNyArMjIxLDcgQEAgVEVTVF9QKFByb2JpbmdFbmRUb0VuZFRlc3QsIFBy
b2JlT25WaWRlb0VuY29kZXJSZWNvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgdGVzdDo6U2luZ2xl
VGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nKiB0YXNrX3F1ZXVlLAogICAgICAgICBDYWxsKiBz
ZW5kZXJfY2FsbCkgb3ZlcnJpZGUgewogICAgICAgYXV0byBuZXR3b3JrID0KLSAgICAgICAgICBh
YnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPihEZWZhdWx0TmV0d29ya1NpbXVsYXRp
b25Db25maWcoKSk7CisgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29y
az4oQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKTsKICAgICAgIHNlbmRfc2ltdWxhdGVk
X25ldHdvcmtfID0gbmV0d29yay5nZXQoKTsKICAgICAgIHJldHVybiBuZXcgdGVzdDo6UGFja2V0
VHJhbnNwb3J0KAogICAgICAgICAgIHRhc2tfcXVldWUsIHNlbmRlcl9jYWxsLCB0aGlzLCB0ZXN0
OjpQYWNrZXRUcmFuc3BvcnQ6OmtTZW5kZXIsCkBAIC0yNDUsNyArMjQ1LDcgQEAgVEVTVF9QKFBy
b2JpbmdFbmRUb0VuZFRlc3QsIFByb2JlT25WaWRlb0VuY29kZXJSZWNvbmZpZ3VyYXRpb24pIHsK
ICAgICAgICAgICAgIC8vIGJpdHJhdGUpLgogICAgICAgICAgICAgaWYgKHN0YXRzLnNlbmRfYmFu
ZHdpZHRoX2JwcyA+PSAyNTAwMDAgJiYKICAgICAgICAgICAgICAgICBzdGF0cy5zZW5kX2JhbmR3
aWR0aF9icHMgPD0gMzUwMDAwKSB7Ci0gICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxh
dGlvbkNvbmZpZyBjb25maWc7CisgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JD
b25maWcgY29uZmlnOwogICAgICAgICAgICAgICBjb25maWcubGlua19jYXBhY2l0eV9rYnBzID0g
MjAwOwogICAgICAgICAgICAgICBzZW5kX3NpbXVsYXRlZF9uZXR3b3JrXy0+U2V0Q29uZmlnKGNv
bmZpZyk7CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCBURVNUX1AoUHJvYmluZ0VuZFRvRW5kVGVzdCwg
UHJvYmVPblZpZGVvRW5jb2RlclJlY29uZmlndXJhdGlvbikgewogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgaWYgKHN0YXRzLnNlbmRfYmFuZHdpZHRo
X2JwcyA8PSAyMTAwMDApIHsKLSAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9u
Q29uZmlnIGNvbmZpZzsKKyAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZp
ZyBjb25maWc7CiAgICAgICAgICAgICAgIGNvbmZpZy5saW5rX2NhcGFjaXR5X2ticHMgPSA1MDAw
OwogICAgICAgICAgICAgICBzZW5kX3NpbXVsYXRlZF9uZXR3b3JrXy0+U2V0Q29uZmlnKGNvbmZp
Zyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcmVjZWl2ZV90aW1lX3Rlc3RzLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0
cy9yZWNlaXZlX3RpbWVfdGVzdHMuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNj
YTY2ZjFkM2Q2N2UyNzZlNTdiMGE4ODMwOGNmMTg0NzBiYWI0ZDAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9yZWNlaXZlX3RpbWVfdGVzdHMu
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQot
I2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsYXRlZF9uZXR3b3JrLmgiCi0jaW5jbHVkZSAiY2FsbC9m
YWtlX25ldHdvcmtfcGlwZS5oIgotI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS90aW1ldXRpbHMuaCIKLSNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgotI2luY2x1ZGUgInRl
c3QvZmllbGRfdHJpYWwuaCIKLSNpbmNsdWRlICJ0ZXN0L3J0Y3BfcGFja2V0X3BhcnNlci5oIgot
Ci1uYW1lc3BhY2Ugd2VicnRjIHsKLW5hbWVzcGFjZSB7Ci0KLS8vIFRoaXMgdGVzdGVyIHNpbXVs
YXRlcyBhIHNlcmllcyBvZiBjbG9jayByZXNldCBldmVudHMgd2hlcmUgZGlmZmVyZW50IG9mZnNl
dHMKLS8vIGFyZSBhZGRlZCB0byB0aGUgcmVjZWl2ZSB0aW1lLiBJdCBkZXRlY3RzIGp1bXBzIGlu
IHRoZSByZXN1bHRpbmcgcmVwb3J0ZWQKLS8vIHJlY2VpdmUgdGltZXMgb2YgbW9yZSB0aGFuIDIw
MCBtcy4KLWNsYXNzIFJlcG9ydGVkUmVjZWl2ZVRpbWVUZXN0ZXIgOiBwdWJsaWMgdGVzdDo6RW5k
VG9FbmRUZXN0IHsKLSBwdWJsaWM6Ci0gIHN0cnVjdCBUaW1lSnVtcCB7Ci0gICAgaW50NjRfdCBh
dF9zZW5kX3RpbWVfbXM7Ci0gICAgaW50NjRfdCBhZGRfb2Zmc2V0X21zOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50NjRfdCBrU3RvcCA9IDA7Ci0gIH07Ci0KLSAgUmVwb3J0ZWRSZWNlaXZlVGlt
ZVRlc3RlcigpCi0gICAgICA6IEVuZFRvRW5kVGVzdCh0ZXN0OjpDYWxsVGVzdDo6a0RlZmF1bHRU
aW1lb3V0TXMpIHsKLSAgICAvLyBUaGVzZSBzaG91bGQgYmUgbGV0IHRyb3VnaCB3aXRob3V0IGNv
cnJlY3Rpb24gYW5kIGZpbHRlcmVkIGlmIGNvcnJlY3Rpb24KLSAgICAvLyBpcyBlbmFibGVkLgot
ICAgIGp1bXBzXy5wdXNoKHs1MDAsIDIwMDB9KTsKLSAgICBqdW1wc18ucHVzaCh7MTAwMCwgLTQw
MH0pOwotICAgIGp1bXBzXy5wdXNoKHsxNTAwLCAyMDAwMDAwfSk7Ci0gICAganVtcHNfLnB1c2go
ezE3MDAsIFRpbWVKdW1wOjprU3RvcH0pOwotICB9Ci0gIGJvb2wgSnVtcEluUmVwb3J0ZWRUaW1l
cygpIHsgcmV0dXJuIGp1bXBfaW5fcmVwb3J0ZWRfdGltZXNfOyB9Ci0KLSBwcm90ZWN0ZWQ6Ci0g
IEFjdGlvbiBPblJlY2VpdmVSdGNwKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgp
IG92ZXJyaWRlIHsKLSAgICB0ZXN0OjpSdGNwUGFja2V0UGFyc2VyIHBhcnNlcjsKLSAgICBFWFBF
Q1RfVFJVRShwYXJzZXIuUGFyc2UoZGF0YSwgbGVuZ3RoKSk7Ci0gICAgY29uc3QgYXV0byYgZmIg
PSBwYXJzZXIudHJhbnNwb3J0X2ZlZWRiYWNrKCk7Ci0gICAgaWYgKGZiLT5udW1fcGFja2V0cygp
ID4gMCkgewotICAgICAgaW50NjRfdCBhcnJpdmFsX3RpbWVfdXMgPSBmYi0+R2V0QmFzZVRpbWVV
cygpOwotICAgICAgZm9yIChjb25zdCBhdXRvJiBwa3QgOiBmYi0+R2V0UmVjZWl2ZWRQYWNrZXRz
KCkpIHsKLSAgICAgICAgYXJyaXZhbF90aW1lX3VzICs9IHBrdC5kZWx0YV91cygpOwotICAgICAg
ICBpZiAobGFzdF9hcnJpdmFsX3RpbWVfdXNfICE9IDApIHsKLSAgICAgICAgICBpbnQ2NF90IGRl
bHRhX3VzID0gYXJyaXZhbF90aW1lX3VzIC0gbGFzdF9hcnJpdmFsX3RpbWVfdXNfOwotICAgICAg
ICAgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJnNlbmRfdGltZXNfY3JpdF8pOwotICAgICAgICAgIGlm
IChzZW5kX3RpbWVzX3VzXy5zaXplKCkgPj0gMikgewotICAgICAgICAgICAgaW50NjRfdCBncm91
bmRfdHJ1dGhfZGVsdGFfdXMgPQotICAgICAgICAgICAgICAgIHNlbmRfdGltZXNfdXNfWzFdIC0g
c2VuZF90aW1lc191c19bMF07Ci0gICAgICAgICAgICBzZW5kX3RpbWVzX3VzXy5wb3BfZnJvbnQo
KTsKLSAgICAgICAgICAgIGludDY0X3QgZGVsdGFfZGlmZl9tcyA9IChkZWx0YV91cyAtIGdyb3Vu
ZF90cnV0aF9kZWx0YV91cykgLyAxMDAwOwotICAgICAgICAgICAgaWYgKHN0ZDo6YWJzKGRlbHRh
X2RpZmZfbXMpID4gMjAwKSB7Ci0gICAgICAgICAgICAgIGp1bXBfaW5fcmVwb3J0ZWRfdGltZXNf
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgb2JzZXJ2YXRpb25fY29tcGxldGVfLlNldCgpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBsYXN0X2Fycml2YWxf
dGltZV91c18gPSBhcnJpdmFsX3RpbWVfdXM7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBT
RU5EX1BBQ0tFVDsKLSAgfQotICBBY3Rpb24gT25TZW5kUnRwKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgpIG92ZXJyaWRlIHsKLSAgICB7Ci0gICAgICBydGM6OkNyaXRTY29wZSBj
cml0KCZzZW5kX3RpbWVzX2NyaXRfKTsKLSAgICAgIHNlbmRfdGltZXNfdXNfLnB1c2hfYmFjayhy
dGM6OlRpbWVNaWNyb3MoKSk7Ci0gICAgfQotICAgIGludDY0X3Qgbm93X21zID0gcnRjOjpUaW1l
TWlsbGlzKCk7Ci0gICAgaWYgKCFmaXJzdF9zZW5kX3RpbWVfbXNfKQotICAgICAgZmlyc3Rfc2Vu
ZF90aW1lX21zXyA9IG5vd19tczsKLSAgICBpbnQ2NF90IHNlbmRfdGltZV9tcyA9IG5vd19tcyAt
IGZpcnN0X3NlbmRfdGltZV9tc187Ci0gICAgaWYgKHNlbmRfdGltZV9tcyA+PSBqdW1wc18uZnJv
bnQoKS5hdF9zZW5kX3RpbWVfbXMpIHsKLSAgICAgIGlmIChqdW1wc18uZnJvbnQoKS5hZGRfb2Zm
c2V0X21zID09IFRpbWVKdW1wOjprU3RvcCkgewotICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0
ZV8uU2V0KCk7Ci0gICAgICAgIGp1bXBzXy5wb3AoKTsKLSAgICAgICAgcmV0dXJuIFNFTkRfUEFD
S0VUOwotICAgICAgfQotICAgICAgY2xvY2tfb2Zmc2V0X21zXyArPSBqdW1wc18uZnJvbnQoKS5h
ZGRfb2Zmc2V0X21zOwotICAgICAgc2VuZF9waXBlXy0+U2V0Q2xvY2tPZmZzZXQoY2xvY2tfb2Zm
c2V0X21zXyk7Ci0gICAgICBqdW1wc18ucG9wKCk7Ci0gICAgfQotICAgIHJldHVybiBTRU5EX1BB
Q0tFVDsKLSAgfQotICB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQqIENyZWF0ZVNlbmRUcmFuc3BvcnQo
Ci0gICAgICB0ZXN0OjpTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmcqIHRhc2tfcXVl
dWUsCi0gICAgICBDYWxsKiBzZW5kZXJfY2FsbCkgb3ZlcnJpZGUgewotICAgIGF1dG8gcGlwZSA9
IGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCi0gICAgICAgIENsb2NrOjpHZXRS
ZWFsVGltZUNsb2NrKCksCi0gICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdv
cms+KERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSk7Ci0gICAgc2VuZF9waXBlXyA9
IHBpcGUuZ2V0KCk7Ci0gICAgcmV0dXJuIHNlbmRfdHJhbnNwb3J0XyA9IG5ldyB0ZXN0OjpQYWNr
ZXRUcmFuc3BvcnQoCi0gICAgICAgICAgICAgICB0YXNrX3F1ZXVlLCBzZW5kZXJfY2FsbCwgdGhp
cywgdGVzdDo6UGFja2V0VHJhbnNwb3J0OjprU2VuZGVyLAotICAgICAgICAgICAgICAgdGVzdDo6
Q2FsbFRlc3Q6OnBheWxvYWRfdHlwZV9tYXBfLCBzdGQ6Om1vdmUocGlwZSkpOwotICB9Ci0gIHZv
aWQgUGVyZm9ybVRlc3QoKSBvdmVycmlkZSB7Ci0gICAgb2JzZXJ2YXRpb25fY29tcGxldGVfLldh
aXQodGVzdDo6Q2FsbFRlc3Q6OmtEZWZhdWx0VGltZW91dE1zKTsKLSAgfQotICBzaXplX3QgR2V0
TnVtVmlkZW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMTsgfQotICBzaXplX3Qg
R2V0TnVtQXVkaW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotCi0gcHJp
dmF0ZToKLSAgaW50NjRfdCBsYXN0X2Fycml2YWxfdGltZV91c18gPSAwOwotICBpbnQ2NF90IGZp
cnN0X3NlbmRfdGltZV9tc18gPSAwOwotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBzZW5kX3RpbWVz
X2NyaXRfOwotICBzdGQ6OmRlcXVlPGludDY0X3Q+IHNlbmRfdGltZXNfdXNfIFJUQ19HVUFSREVE
X0JZKHNlbmRfdGltZXNfY3JpdF8pOwotICBib29sIGp1bXBfaW5fcmVwb3J0ZWRfdGltZXNfID0g
ZmFsc2U7Ci0gIEZha2VOZXR3b3JrUGlwZSogc2VuZF9waXBlXzsKLSAgdGVzdDo6UGFja2V0VHJh
bnNwb3J0KiBzZW5kX3RyYW5zcG9ydF87Ci0gIGludDY0X3QgY2xvY2tfb2Zmc2V0X21zXyA9IDA7
Ci0gIHN0ZDo6cXVldWU8VGltZUp1bXA+IGp1bXBzXzsKLX07Ci19ICAvLyBuYW1lc3BhY2UKLQot
Y2xhc3MgUmVjZWl2ZVRpbWVFbmRUb0VuZFRlc3QgOiBwdWJsaWMgdGVzdDo6Q2FsbFRlc3Qgewot
IHB1YmxpYzoKLSAgUmVjZWl2ZVRpbWVFbmRUb0VuZFRlc3QoKSB7fQotCi0gIHZpcnR1YWwgflJl
Y2VpdmVUaW1lRW5kVG9FbmRUZXN0KCkge30KLX07Ci0KLVRFU1RfRihSZWNlaXZlVGltZUVuZFRv
RW5kVGVzdCwgUmVjZWl2ZVRpbWVKdW1wc1dpdGhvdXRGaWVsZFRyaWFsKSB7Ci0gIC8vIFdpdGhv
dXQgdGhlIGZpZWxkIHRyaWFsLCB0aGUganVtcHMgaW4gY2xvY2sgb2Zmc2V0IHNob3VsZCBiZSBs
ZXQgdHJvdWdoIGFuZAotICAvLyBiZSBkZXRlY3RlZC4KLSAgUmVwb3J0ZWRSZWNlaXZlVGltZVRl
c3RlciB0ZXN0OwotICBSdW5CYXNlVGVzdCgmdGVzdCk7Ci0gIEVYUEVDVF9UUlVFKHRlc3QuSnVt
cEluUmVwb3J0ZWRUaW1lcygpKTsKLX0KLQotVEVTVF9GKFJlY2VpdmVUaW1lRW5kVG9FbmRUZXN0
LCBSZWNlaXZlVGltZVN0ZWFkeVdpdGhGaWVsZFRyaWFsKSB7Ci0gIC8vIFNpbmNlIGFsbCB0aGUg
YWRkZWQganVtcHMgYnkgdGhlIHRlc3RlciBhcmUgb3V0c2lkZSB0aGUgaW50ZXJ2YWwgb2YgLTEw
MCBtcwotICAvLyB0byAxMDAwIG1zLCB0aGV5IHNob3VsZCBhbGwgYmUgZmlsdGVyZWQgYnkgdGhl
IGZpZWxkIHRyaWFsIGJlbG93LCBhbmQgbm8KLSAgLy8ganVtcHMgc2hvdWxkIGJlIGRldGVjdGVk
LgotICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbCgKLSAgICAgICJXZWJSVEMt
QndlUmVjZWl2ZVRpbWVDb3JyZWN0aW9uL0VuYWJsZWQsLTEwMCwxMDAwLyIpOwotICBSZXBvcnRl
ZFJlY2VpdmVUaW1lVGVzdGVyIHRlc3Q7Ci0gIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKLSAgRVhQRUNU
X0ZBTFNFKHRlc3QuSnVtcEluUmVwb3J0ZWRUaW1lcygpKTsKLX0KLX0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcmV0cmFuc21pc3Npb25fdGVzdHMuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rl
c3RzL3JldHJhbnNtaXNzaW9uX3Rlc3RzLmNjCmluZGV4IDczYTU1ODVlNzQ3MTkxYjJlMzg1ODY3
YWJmMjcyNTc0NzU3MjhlZjEuLmQxYTY5ZTNlZDMxODFjOWY1YmM1ZGE3OGI5NzZlNmY4NzY1OThm
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcmV0cmFuc21pc3Npb25fdGVzdHMuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90
ZXN0cy9yZXRyYW5zbWlzc2lvbl90ZXN0cy5jYwpAQCAtOSwxMyArOSwxMyBAQAogICovCiAKICNp
bmNsdWRlICJhcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgorI2luY2x1ZGUgImFwaS90ZXN0
L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwv
ZmFrZV9uZXR3b3JrX3BpcGUuaCIKICNpbmNsdWRlICJjYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5o
IgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL3NsZWVwLmgiCiAjaW5jbHVkZSAi
dGVzdC9jYWxsX3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCi0jaW5jbHVk
ZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJ0ZXN0
L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9ydGNwX3BhY2tldF9wYXJzZXIuaCIKIApAQCAtMTMx
LDkgKzEzMSw4IEBAIFRFU1RfRihSZXRyYW5zbWlzc2lvbkVuZFRvRW5kVGVzdCwgUmVjZWl2ZXNO
YWNrQW5kUmV0cmFuc21pdHNBdWRpbykgewogICAgICAgICAgIHRhc2tfcXVldWUsIG51bGxwdHIs
IHRoaXMsIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1JlY2VpdmVyLAogICAgICAgICAgIHBheWxv
YWRfdHlwZV9tYXBfLAogICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlw
ZT4oCi0gICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCi0gICAgICAgICAg
ICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAg
ICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSk7CisgICAgICAgICAgICAgIENs
b2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdv
cms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRJ
bk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSkpOwogICAgICAgcmVjZWl2ZV90cmFuc3BvcnRfID0g
cmVjZWl2ZV90cmFuc3BvcnQ7CiAgICAgICByZXR1cm4gcmVjZWl2ZV90cmFuc3BvcnQ7CiAgICAg
fQpAQCAtMTY2LDcgKzE2NSw2IEBAIFRFU1RfRihSZXRyYW5zbWlzc2lvbkVuZFRvRW5kVGVzdCwg
UmVjZWl2ZXNOYWNrQW5kUmV0cmFuc21pdHNBdWRpbykgewogICAgIHZvaWQgTW9kaWZ5QXVkaW9D
b25maWdzKAogICAgICAgICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyogc2VuZF9jb25maWcsCiAg
ICAgICAgIHN0ZDo6dmVjdG9yPEF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnPiogcmVjZWl2ZV9j
b25maWdzKSBvdmVycmlkZSB7Ci0gICAgICBzZW5kX2NvbmZpZy0+cnRwLm5hY2sucnRwX2hpc3Rv
cnlfbXMgPSBrTmFja1J0cEhpc3RvcnlNczsKICAgICAgICgqcmVjZWl2ZV9jb25maWdzKVswXS5y
dHAubmFjay5ydHBfaGlzdG9yeV9tcyA9IGtOYWNrUnRwSGlzdG9yeU1zOwogICAgICAgbG9jYWxf
c3NyY18gPSAoKnJlY2VpdmVfY29uZmlncylbMF0ucnRwLmxvY2FsX3NzcmM7CiAgICAgICByZW1v
dGVfc3NyY18gPSAoKnJlY2VpdmVfY29uZmlncylbMF0ucnRwLnJlbW90ZV9zc3JjOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5k
X3RvX2VuZF90ZXN0cy9ydHBfcnRjcF90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcnRwX3J0Y3BfdGVzdHMu
Y2MKaW5kZXggN2Q5NmRjY2E3NjEwZWRhMmJhMjU4YmE0Y2NmMjgxMjFjOGJiYmNiYi4uZjE5YzZh
ZDNmYWE1ZjZhNDE4NzBjMzg1OGRhOGI1NDBhYjJiZGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9y
dHBfcnRjcF90ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3J0cF9ydGNwX3Rlc3RzLmNjCkBAIC0yODIs
MTMgKzI4MiwxMyBAQCB2b2lkIFJ0cFJ0Y3BFbmRUb0VuZFRlc3Q6OlRlc3RSdHBTdGF0ZVByZXNl
cnZhdGlvbigKICAgICAgICAgdGVzdDo6UGFja2V0VHJhbnNwb3J0OjprU2VuZGVyLCBwYXlsb2Fk
X3R5cGVfbWFwXywKICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigK
ICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVl
PFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25m
aWcoKSkpKTsKICAgICByZWNlaXZlX3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6
OlBhY2tldFRyYW5zcG9ydD4oCiAgICAgICAgICZ0YXNrX3F1ZXVlXywgbnVsbHB0ciwgJm9ic2Vy
dmVyLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtSZWNlaXZlciwKICAgICAgICAgcGF5bG9hZF90
eXBlX21hcF8sCiAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCiAg
ICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxT
aW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmln
KCkpKSk7CiAgICAgc2VuZF90cmFuc3BvcnQtPlNldFJlY2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5S
ZWNlaXZlcigpKTsKICAgICByZWNlaXZlX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIoc2VuZGVyX2Nh
bGxfLT5SZWNlaXZlcigpKTsKIApAQCAtNDc0LDcgKzQ3NCw3IEBAIFRFU1RfRihSdHBSdGNwRW5k
VG9FbmRUZXN0LCBESVNBQkxFRF9UZXN0RmxleGZlY1J0cFN0YXRlUHJlc2VydmF0aW9uKSB7CiAg
IHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsKICAgICBDcmVhdGVDYWxscygpOwogCi0gICAg
RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGxvc3N5X2RlbGF5ZWRfbGluazsKKyAgICBC
dWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGxvc3N5X2RlbGF5ZWRfbGluazsKICAgICBsb3Nz
eV9kZWxheWVkX2xpbmsubG9zc19wZXJjZW50ID0gMjsKICAgICBsb3NzeV9kZWxheWVkX2xpbmsu
cXVldWVfZGVsYXlfbXMgPSA1MDsKIApAQCAtNDg2LDcgKzQ4Niw3IEBAIFRFU1RfRihSdHBSdGNw
RW5kVG9FbmRUZXN0LCBESVNBQkxFRF9UZXN0RmxleGZlY1J0cFN0YXRlUHJlc2VydmF0aW9uKSB7
CiAgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPihsb3NzeV9k
ZWxheWVkX2xpbmspKSk7CiAgICAgc2VuZF90cmFuc3BvcnQtPlNldFJlY2VpdmVyKHJlY2VpdmVy
X2NhbGxfLT5SZWNlaXZlcigpKTsKIAotICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZp
ZyBmbGF3bGVzc19saW5rOworICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgZmxhd2xl
c3NfbGluazsKICAgICByZWNlaXZlX3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6
OlBhY2tldFRyYW5zcG9ydD4oCiAgICAgICAgICZ0YXNrX3F1ZXVlXywgbnVsbHB0ciwgJm9ic2Vy
dmVyLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtSZWNlaXZlciwKICAgICAgICAgcGF5bG9hZF90
eXBlX21hcF8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3NzcmNfdGVzdHMuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3Nz
cmNfdGVzdHMuY2MKaW5kZXggYzAzYjQ5NDc3ZDYwYThiZTgyODU1MTlkM2VhZjk2MmRmMjkyYWJm
Zi4uODZmYWEwNDY1YjVmYjNjMWQ4ZGRhODgyYWIzOWNlZmQ5YTkyOTk1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2Vu
ZF90ZXN0cy9zc3JjX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvc3NyY190ZXN0cy5jYwpAQCAtNDgs
NyArNDgsNyBAQCBURVNUX0YoU3NyY0VuZFRvRW5kVGVzdCwgVW5rbm93blJ0cFBhY2tldEdpdmVz
VW5rbm93blNzcmNSZXR1cm5Db2RlKSB7CiAgIGNsYXNzIFBhY2tldElucHV0T2JzZXJ2ZXIgOiBw
dWJsaWMgUGFja2V0UmVjZWl2ZXIgewogICAgcHVibGljOgogICAgIGV4cGxpY2l0IFBhY2tldElu
cHV0T2JzZXJ2ZXIoUGFja2V0UmVjZWl2ZXIqIHJlY2VpdmVyKQotICAgICAgICA6IHJlY2VpdmVy
XyhyZWNlaXZlciksIGRlbGl2ZXJlZF9wYWNrZXRfKGZhbHNlLCBmYWxzZSkge30KKyAgICAgICAg
OiByZWNlaXZlcl8ocmVjZWl2ZXIpIHt9CiAKICAgICBib29sIFdhaXQoKSB7IHJldHVybiBkZWxp
dmVyZWRfcGFja2V0Xy5XYWl0KGtEZWZhdWx0VGltZW91dE1zKTsgfQogCkBAIC04MiwxNSArODIs
MTUgQEAgVEVTVF9GKFNzcmNFbmRUb0VuZFRlc3QsIFVua25vd25SdHBQYWNrZXRHaXZlc1Vua25v
d25Tc3JjUmV0dXJuQ29kZSkgewogCiAgICAgc2VuZF90cmFuc3BvcnQgPSBhYnNsOjptYWtlX3Vu
aXF1ZTx0ZXN0OjpEaXJlY3RUcmFuc3BvcnQ+KAogICAgICAgICAmdGFza19xdWV1ZV8sCi0gICAg
ICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCi0gICAgICAgICAgICBDbG9j
azo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3Jr
PigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0
d29ya1NpbXVsYXRpb25Db25maWcoKSkpLAorICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtl
TmV0d29ya1BpcGU+KENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0
d29yaz4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1
aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpLAogICAgICAgICBzZW5kZXJfY2FsbF8uZ2V0
KCksIHBheWxvYWRfdHlwZV9tYXBfKTsKICAgICByZWNlaXZlX3RyYW5zcG9ydCA9IGFic2w6Om1h
a2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4oCiAgICAgICAgICZ0YXNrX3F1ZXVlXywK
LSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICAg
IENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5l
dHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1
bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSksCisgICAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PEZha2VOZXR3b3JrUGlwZT4oQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0
ZWROZXR3b3JrPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSksCiAgICAgICAgIHJlY2VpdmVyX2Nh
bGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7CiAgICAgaW5wdXRfb2JzZXJ2ZXIgPQogICAg
ICAgICBhYnNsOjptYWtlX3VuaXF1ZTxQYWNrZXRJbnB1dE9ic2VydmVyPihyZWNlaXZlcl9jYWxs
Xy0+UmVjZWl2ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3N0YXRzX3Rlc3RzLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90
ZXN0cy9zdGF0c190ZXN0cy5jYwppbmRleCBhZjZiYmRhMTY4ZTI0NGRlYzc3NjBmZThhNTE0MDVl
YTQ1OTgwMzc5Li5kNmU5MmM4YWYyMDNhZWY1Y2JlZjU0NDE3ZmJkMjgwMDk0NmI5ZWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9l
bmRfdG9fZW5kX3Rlc3RzL3N0YXRzX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvc3RhdHNfdGVzdHMu
Y2MKQEAgLTksNiArOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsYXRlZF9u
ZXR3b3JrLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oIgogI2luY2x1
ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfdXRpbGl0eS5oIgpAQCAtMTgsNyArMTksNiBAQAogI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL3NsZWVwLmgiCiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIK
ICNpbmNsdWRlICJ0ZXN0L2Zha2VfZW5jb2Rlci5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25f
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogI2luY2x1
ZGUgInRlc3QvcnRjcF9wYWNrZXRfcGFyc2VyLmgiCiAKQEAgLTQ3LDggKzQ3LDcgQEAgVEVTVF9G
KFN0YXRzRW5kVG9FbmRUZXN0LCBHZXRTdGF0cykgewogICAgICAgICAgICAgICAgIENsb2NrOjpH
ZXRSZWFsVGltZUNsb2NrKCksIDEwKTsKICAgICAgICAgICB9KSwKICAgICAgICAgICBzZW5kX3N0
cmVhbV8obnVsbHB0ciksCi0gICAgICAgICAgZXhwZWN0ZWRfc2VuZF9zc3Jjc18oKSwKLSAgICAg
ICAgICBjaGVja19zdGF0c19ldmVudF8oZmFsc2UsIGZhbHNlKSB7fQorICAgICAgICAgIGV4cGVj
dGVkX3NlbmRfc3NyY3NfKCkge30KIAogICAgcHJpdmF0ZToKICAgICBBY3Rpb24gT25TZW5kUnRw
KGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IGxlbmd0aCkgb3ZlcnJpZGUgewpAQCAtMjMx
LDcgKzIzMCw3IEBAIFRFU1RfRihTdGF0c0VuZFRvRW5kVGVzdCwgR2V0U3RhdHMpIHsKICAgICB0
ZXN0OjpQYWNrZXRUcmFuc3BvcnQqIENyZWF0ZVNlbmRUcmFuc3BvcnQoCiAgICAgICAgIHRlc3Q6
OlNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZyogdGFza19xdWV1ZSwKICAgICAgICAg
Q2FsbCogc2VuZGVyX2NhbGwpIG92ZXJyaWRlIHsKLSAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxh
dGlvbkNvbmZpZyBuZXR3b3JrX2NvbmZpZzsKKyAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JD
b25maWcgbmV0d29ya19jb25maWc7CiAgICAgICBuZXR3b3JrX2NvbmZpZy5sb3NzX3BlcmNlbnQg
PSA1OwogICAgICAgcmV0dXJuIG5ldyB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQoCiAgICAgICAgICAg
dGFza19xdWV1ZSwgc2VuZGVyX2NhbGwsIHRoaXMsIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1Nl
bmRlciwKQEAgLTI0MCw4ICsyMzksOSBAQCBURVNUX0YoU3RhdHNFbmRUb0VuZFRlc3QsIEdldFN0
YXRzKSB7CiAgICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCiAgICAgICAg
ICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KG5ldHdvcmtfY29uZmln
KSkpOwogICAgIH0KLSAgICB2b2lkIE1vZGlmeVNlbmRlckNhbGxDb25maWcoQ2FsbDo6Q29uZmln
KiBjb25maWcpIG92ZXJyaWRlIHsKLSAgICAgIGNvbmZpZy0+Yml0cmF0ZV9jb25maWcuc3RhcnRf
Yml0cmF0ZV9icHMgPSBrU3RhcnRCaXRyYXRlQnBzOworICAgIHZvaWQgTW9kaWZ5U2VuZGVyQml0
cmF0ZUNvbmZpZygKKyAgICAgICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykg
b3ZlcnJpZGUgeworICAgICAgYml0cmF0ZV9jb25maWctPnN0YXJ0X2JpdHJhdGVfYnBzID0ga1N0
YXJ0Qml0cmF0ZUJwczsKICAgICB9CiAKICAgICAvLyBUaGlzIHRlc3QgdXNlIG90aGVyIFZpZGVv
U3RyZWFtIHNldHRpbmdzIHRoYW4gdGhlIHRoZSBkZWZhdWx0IHNldHRpbmdzCkBAIC01MTUsOSAr
NTE1LDkgQEAgVEVTVF9GKFN0YXRzRW5kVG9FbmRUZXN0LCBNQVlCRV9Db250ZW50VHlwZVN3aXRj
aGVzKSB7CiAgIG1ldHJpY3M6OlJlc2V0KCk7CiAKICAgQ2FsbDo6Q29uZmlnIHNlbmRfY29uZmln
KHNlbmRfZXZlbnRfbG9nXy5nZXQoKSk7Ci0gIHRlc3QuTW9kaWZ5U2VuZGVyQ2FsbENvbmZpZygm
c2VuZF9jb25maWcpOworICB0ZXN0Lk1vZGlmeVNlbmRlckJpdHJhdGVDb25maWcoJnNlbmRfY29u
ZmlnLmJpdHJhdGVfY29uZmlnKTsKICAgQ2FsbDo6Q29uZmlnIHJlY3ZfY29uZmlnKHJlY3ZfZXZl
bnRfbG9nXy5nZXQoKSk7Ci0gIHRlc3QuTW9kaWZ5UmVjZWl2ZXJDYWxsQ29uZmlnKCZyZWN2X2Nv
bmZpZyk7CisgIHRlc3QuTW9kaWZ5UmVjZWl2ZXJCaXRyYXRlQ29uZmlnKCZyZWN2X2NvbmZpZy5i
aXRyYXRlX2NvbmZpZyk7CiAKICAgVmlkZW9FbmNvZGVyQ29uZmlnIGVuY29kZXJfY29uZmlnX3dp
dGhfc2NyZWVuc2hhcmU7CiAKQEAgLTcxMyw3ICs3MTMsNyBAQCBURVNUX0YoU3RhdHNFbmRUb0Vu
ZFRlc3QsIENhbGxSZXBvcnRzUnR0Rm9yU2VuZGVyKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjx0ZXN0
OjpEaXJlY3RUcmFuc3BvcnQ+IHJlY2VpdmVyX3RyYW5zcG9ydDsKIAogICB0YXNrX3F1ZXVlXy5T
ZW5kVGFzayhbdGhpcywgJnNlbmRlcl90cmFuc3BvcnQsICZyZWNlaXZlcl90cmFuc3BvcnRdKCkg
ewotICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgICAgQnVpbHRJ
bk5ldHdvcmtCZWhhdmlvckNvbmZpZyBjb25maWc7CiAgICAgY29uZmlnLnF1ZXVlX2RlbGF5X21z
ID0ga1NlbmREZWxheU1zOwogICAgIENyZWF0ZUNhbGxzKCk7CiAgICAgc2VuZGVyX3RyYW5zcG9y
dCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9f
ZW5kX3Rlc3RzL3RyYW5zcG9ydF9mZWVkYmFja190ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvdHJhbnNwb3J0
X2ZlZWRiYWNrX3Rlc3RzLmNjCmluZGV4IDE0MzdjZDQ2ZTQ4NWViNGYzNjk5MDcxMjM5ZWRlMjhi
Y2UyZWZhMTQuLjk0ZGIwMzgzMzA1MTk4ZTYwMTZmNTY3ZDgyNGM1NDc4MTFkMGQ0NDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2Vu
ZF90b19lbmRfdGVzdHMvdHJhbnNwb3J0X2ZlZWRiYWNrX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMv
dHJhbnNwb3J0X2ZlZWRiYWNrX3Rlc3RzLmNjCkBAIC01NSwxMCArNTUsOSBAQCBURVNUX1AoVHJh
bnNwb3J0RmVlZGJhY2tFbmRUb0VuZFRlc3QsIEFzc2lnbnNUcmFuc3BvcnRTZXF1ZW5jZU51bWJl
cnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5l
dHdvcmtQaXBlPigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFs
VGltZUNsb2NrKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjptYWtlX3Vu
aXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZW5kZXJfY2FsbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGF5bG9hZF90eXBlX21hcCksCi0gICAgICAgICAgZG9uZV8oZmFsc2UsIGZhbHNlKSwKICAg
ICAgICAgICBwYXJzZXJfKFJ0cEhlYWRlclBhcnNlcjo6Q3JlYXRlKCkpLAogICAgICAgICAgIGZp
cnN0X21lZGlhX3NzcmNfKGZpcnN0X21lZGlhX3NzcmMpLAogICAgICAgICAgIHJ0eF90b19tZWRp
YV9zc3Jjc18oc3NyY19tYXApLApAQCAtNDE1LDggKzQxNCw5IEBAIFRFU1RfUChUcmFuc3BvcnRG
ZWVkYmFja0VuZFRvRW5kVGVzdCwKICAgICAgIEVYUEVDVF9UUlVFKHBhcnNlci5QYXJzZShkYXRh
LCBsZW5ndGgpKTsKICAgICAgIHJldHVybiBwYXJzZXIudHJhbnNwb3J0X2ZlZWRiYWNrKCktPm51
bV9wYWNrZXRzKCkgPiAwOwogICAgIH0KLSAgICB2b2lkIE1vZGlmeVNlbmRlckNhbGxDb25maWco
Q2FsbDo6Q29uZmlnKiBjb25maWcpIG92ZXJyaWRlIHsKLSAgICAgIGNvbmZpZy0+Yml0cmF0ZV9j
b25maWcubWF4X2JpdHJhdGVfYnBzID0gMzAwMDAwOworICAgIHZvaWQgTW9kaWZ5U2VuZGVyQml0
cmF0ZUNvbmZpZygKKyAgICAgICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykg
b3ZlcnJpZGUgeworICAgICAgYml0cmF0ZV9jb25maWctPm1heF9iaXRyYXRlX2JwcyA9IDMwMDAw
MDsKICAgICB9CiAKICAgICB2b2lkIFBlcmZvcm1UZXN0KCkgb3ZlcnJpZGUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZnJhbWVf
ZHVtcGluZ19kZWNvZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vZnJhbWVfZHVtcGluZ19kZWNvZGVyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3OTg1MTFi
NTQzOWEzYmE3MWNmYzhlY2MzMDYyZWJkMDM3OTRlMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9mcmFtZV9kdW1waW5n
X2RlY29kZXIuY2MKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
bmNsdWRlICJ2aWRlby9mcmFtZV9kdW1waW5nX2RlY29kZXIuaCIKKworI2luY2x1ZGUgPHV0aWxp
dHk+CisKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVj
X2ludGVyZmFjZS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworRnJhbWVEdW1waW5nRGVjb2Rl
cjo6RnJhbWVEdW1waW5nRGVjb2RlcihzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyPiBkZWNv
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlBsYXRm
b3JtRmlsZSBmaWxlKQorICAgIDogZGVjb2Rlcl8oc3RkOjptb3ZlKGRlY29kZXIpKSwKKyAgICAg
IHdyaXRlcl8oSXZmRmlsZVdyaXRlcjo6V3JhcChydGM6OkZpbGUoZmlsZSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogYnl0ZV9saW1pdD0gKi8gMTAwMDAwMDAwKSkge30K
KworRnJhbWVEdW1waW5nRGVjb2Rlcjo6fkZyYW1lRHVtcGluZ0RlY29kZXIoKSA9IGRlZmF1bHQ7
CisKK2ludDMyX3QgRnJhbWVEdW1waW5nRGVjb2Rlcjo6SW5pdERlY29kZShjb25zdCBWaWRlb0Nv
ZGVjKiBjb2RlY19zZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IG51bWJlcl9vZl9jb3JlcykgeworICByZXR1cm4gZGVjb2Rlcl8tPkluaXRE
ZWNvZGUoY29kZWNfc2V0dGluZ3MsIG51bWJlcl9vZl9jb3Jlcyk7Cit9CisKK2ludDMyX3QgRnJh
bWVEdW1waW5nRGVjb2Rlcjo6RGVjb2RlKAorICAgIGNvbnN0IEVuY29kZWRJbWFnZSYgaW5wdXRf
aW1hZ2UsCisgICAgYm9vbCBtaXNzaW5nX2ZyYW1lcywKKyAgICBjb25zdCBDb2RlY1NwZWNpZmlj
SW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKKyAgICBpbnQ2NF90IHJlbmRlcl90aW1lX21zKSB7
CisgIGludDMyX3QgcmV0ID0gZGVjb2Rlcl8tPkRlY29kZShpbnB1dF9pbWFnZSwgbWlzc2luZ19m
cmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY19zcGVjaWZpY19p
bmZvLCByZW5kZXJfdGltZV9tcyk7CisgIHdyaXRlcl8tPldyaXRlRnJhbWUoaW5wdXRfaW1hZ2Us
IGNvZGVjX3NwZWNpZmljX2luZm8tPmNvZGVjVHlwZSk7CisKKyAgcmV0dXJuIHJldDsKK30KKwor
aW50MzJfdCBGcmFtZUR1bXBpbmdEZWNvZGVyOjpSZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJh
Y2soCisgICAgRGVjb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSB7CisgIHJldHVybiBkZWNv
ZGVyXy0+UmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKGNhbGxiYWNrKTsKK30KKworaW50
MzJfdCBGcmFtZUR1bXBpbmdEZWNvZGVyOjpSZWxlYXNlKCkgeworICByZXR1cm4gZGVjb2Rlcl8t
PlJlbGVhc2UoKTsKK30KKworYm9vbCBGcmFtZUR1bXBpbmdEZWNvZGVyOjpQcmVmZXJzTGF0ZURl
Y29kaW5nKCkgY29uc3QgeworICByZXR1cm4gZGVjb2Rlcl8tPlByZWZlcnNMYXRlRGVjb2Rpbmco
KTsKK30KKworY29uc3QgY2hhciogRnJhbWVEdW1waW5nRGVjb2Rlcjo6SW1wbGVtZW50YXRpb25O
YW1lKCkgY29uc3QgeworICByZXR1cm4gZGVjb2Rlcl8tPkltcGxlbWVudGF0aW9uTmFtZSgpOwor
fQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9mcmFtZV9kdW1waW5nX2RlY29kZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2ZyYW1lX2R1
bXBpbmdfZGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxOWU5YjRkYjA4OWQ4MzVhMmYzZWI4MjU1OTQw
ZTI3MWZlYzA5MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby9mcmFtZV9kdW1waW5nX2RlY29kZXIuaApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBWSURFT19GUkFNRV9EVU1Q
SU5HX0RFQ09ERVJfSF8KKyNkZWZpbmUgVklERU9fRlJBTUVfRFVNUElOR19ERUNPREVSX0hfCisK
KyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2Rl
Y29kZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L2l2Zl9maWxl
X3dyaXRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIKKworbmFtZXNw
YWNlIHdlYnJ0YyB7CisKKy8vIEEgZGVjb2RlciB3cmFwcGVyIHRoYXQgd3JpdGVzIHRoZSBlbmNv
ZGVkIGZyYW1lcyB0byBhIGZpbGUuCitjbGFzcyBGcmFtZUR1bXBpbmdEZWNvZGVyIDogcHVibGlj
IFZpZGVvRGVjb2RlciB7CisgcHVibGljOgorICBGcmFtZUR1bXBpbmdEZWNvZGVyKHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb0RlY29kZXI+IGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgcnRj
OjpQbGF0Zm9ybUZpbGUgZmlsZSk7CisgIH5GcmFtZUR1bXBpbmdEZWNvZGVyKCkgb3ZlcnJpZGU7
CisKKyAgaW50MzJfdCBJbml0RGVjb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNvZGVjX3NldHRpbmdz
LAorICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBudW1iZXJfb2ZfY29yZXMpIG92ZXJyaWRl
OworICBpbnQzMl90IERlY29kZShjb25zdCBFbmNvZGVkSW1hZ2UmIGlucHV0X2ltYWdlLAorICAg
ICAgICAgICAgICAgICBib29sIG1pc3NpbmdfZnJhbWVzLAorICAgICAgICAgICAgICAgICBjb25z
dCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKKyAgICAgICAgICAgICAg
ICAgaW50NjRfdCByZW5kZXJfdGltZV9tcykgb3ZlcnJpZGU7CisgIGludDMyX3QgUmVnaXN0ZXJE
ZWNvZGVDb21wbGV0ZUNhbGxiYWNrKAorICAgICAgRGVjb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxi
YWNrKSBvdmVycmlkZTsKKyAgaW50MzJfdCBSZWxlYXNlKCkgb3ZlcnJpZGU7CisgIGJvb2wgUHJl
ZmVyc0xhdGVEZWNvZGluZygpIGNvbnN0IG92ZXJyaWRlOworICBjb25zdCBjaGFyKiBJbXBsZW1l
bnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIHN0ZDo6dW5pcXVl
X3B0cjxWaWRlb0RlY29kZXI+IGRlY29kZXJfOworICBzdGQ6OnVuaXF1ZV9wdHI8SXZmRmlsZVdy
aXRlcj4gd3JpdGVyXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAv
LyBWSURFT19GUkFNRV9EVU1QSU5HX0RFQ09ERVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2Z1bGxfc3RhY2tfdGVzdHMuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9mdWxsX3N0
YWNrX3Rlc3RzLmNjCmluZGV4IDc3ZGEyNTM0NDg5YTJhYWU4MDI3ZGM3OWVhODM4YTEyZDFlYjk2
N2MuLjlhOGQyNTJiZmNjNTFjNmZhZDEzYjU0MTY5MDE2MTg3MDIxMDRlOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2Z1bGxfc3Rh
Y2tfdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vZnVsbF9zdGFja190ZXN0cy5jYwpAQCAtMjIsMjEgKzIyLDI0IEBACiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBmbGFncyB7CiAKLURFRklORV9zdHJpbmcocnRjX2V2ZW50
X2xvZ19uYW1lLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkZpbGVuYW1lIGZv
ciBydGMgZXZlbnQgbG9nLiBUd28gZmlsZXMgIgotICAgICAgICAgICAgICAid2l0aCBcIl9zZW5k
XCIgYW5kIFwiX3JlY3ZcIiBzdWZmaXhlcyB3aWxsIGJlIGNyZWF0ZWQuIik7CitXRUJSVENfREVG
SU5FX3N0cmluZyhydGNfZXZlbnRfbG9nX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiIiwK
KyAgICAgICAgICAgICAgICAgICAgICJGaWxlbmFtZSBmb3IgcnRjIGV2ZW50IGxvZy4gVHdvIGZp
bGVzICIKKyAgICAgICAgICAgICAgICAgICAgICJ3aXRoIFwiX3NlbmRcIiBhbmQgXCJfcmVjdlwi
IHN1ZmZpeGVzIHdpbGwgYmUgY3JlYXRlZC4iKTsKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nTmFt
ZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3J0Y19ldmVudF9s
b2dfbmFtZSk7CiB9Ci1ERUZJTkVfc3RyaW5nKHJ0cF9kdW1wX25hbWUsICIiLCAiRmlsZW5hbWUg
Zm9yIGR1bXBlZCByZWNlaXZlZCBSVFAgc3RyZWFtLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmco
cnRwX2R1bXBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAg
ICAgICAgIkZpbGVuYW1lIGZvciBkdW1wZWQgcmVjZWl2ZWQgUlRQIHN0cmVhbS4iKTsKIHN0ZDo6
c3RyaW5nIFJ0cER1bXBOYW1lKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+
KEZMQUdfcnRwX2R1bXBfbmFtZSk7CiB9Ci1ERUZJTkVfc3RyaW5nKGVuY29kZWRfZnJhbWVfcGF0
aCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJUaGUgYmFzZSBwYXRoIGZvciBl
bmNvZGVkIGZyYW1lIGxvZ3MuIENyZWF0ZWQgZmlsZXMgd2lsbCBoYXZlICIKLSAgICAgICAgICAg
ICAgInRoZSBmb3JtIDxlbmNvZGVkX2ZyYW1lX3BhdGg+LjxuPi4ocmVjdnxzZW5kLjxtPikuaXZm
Iik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBlbmNvZGVkX2ZyYW1lX3BhdGgsCisgICAg
IiIsCisgICAgIlRoZSBiYXNlIHBhdGggZm9yIGVuY29kZWQgZnJhbWUgbG9ncy4gQ3JlYXRlZCBm
aWxlcyB3aWxsIGhhdmUgIgorICAgICJ0aGUgZm9ybSA8ZW5jb2RlZF9mcmFtZV9wYXRoPi48bj4u
KHJlY3Z8c2VuZC48bT4pLml2ZiIpOwogc3RkOjpzdHJpbmcgRW5jb2RlZEZyYW1lUGF0aCgpIHsK
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2VuY29kZWRfZnJhbWVfcGF0
aCk7CiB9CkBAIC00NywxMCArNTAsMTAgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIG5hbWVzcGFj
ZSB7CiBzdGF0aWMgY29uc3QgaW50IGtGdWxsU3RhY2tUZXN0RHVyYXRpb25TZWNzID0gNDU7Ci1j
b25zdCBjaGFyIGtTY3JlZW5zaGFyZVNpbXVsY2FzdEV4cGVyaW1lbnRbXSA9Ci0gICAgIldlYlJU
Qy1TaW11bGNhc3RTY3JlZW5zaGFyZS9FbmFibGVkLyI7CiBjb25zdCBjaGFyIGtQYWNlclB1c2hC
YWNrRXhwZXJpbWVudFtdID0KICAgICAiV2ViUlRDLVBhY2VyUHVzaGJhY2tFeHBlcmltZW50L0Vu
YWJsZWQvIjsKK2NvbnN0IGNoYXIga1ZwOFRydXN0ZWRSYXRlQ29udHJvbGxlckZpZWxkVHJpYWxb
XSA9CisgICAgIldlYlJUQy1MaWJ2cHhWcDhUcnVzdGVkUmF0ZUNvbnRyb2xsZXIvRW5hYmxlZC8i
OwogCiBzdHJ1Y3QgUGFyYW1zV2l0aExvZ2dpbmcgOiBwdWJsaWMgVmlkZW9RdWFsaXR5VGVzdDo6
UGFyYW1zIHsKICBwdWJsaWM6CkBAIC01OCw3ICs2MSw3IEBAIHN0cnVjdCBQYXJhbXNXaXRoTG9n
Z2luZyA6IHB1YmxpYyBWaWRlb1F1YWxpdHlUZXN0OjpQYXJhbXMgewogICAgIC8vIFVzZSB0aGVz
ZSBsb2dnaW5nIGZsYWdzIGJ5IGRlZmF1bHQsIGZvciBldmVyeXRoaW5nLgogICAgIGxvZ2dpbmcg
PSB7ZmxhZ3M6OlJ0Y0V2ZW50TG9nTmFtZSgpLCBmbGFnczo6UnRwRHVtcE5hbWUoKSwKICAgICAg
ICAgICAgICAgIGZsYWdzOjpFbmNvZGVkRnJhbWVQYXRoKCl9OwotICAgIHRoaXMtPmNvbmZpZyA9
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpOworICAgIHRoaXMtPmNvbmZpZyA9IEJ1
aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKTsKICAgfQogfTsKIApAQCAtMTA2LDcgKzEwOSw3
IEBAIGNsYXNzIEdlbmVyaWNEZXNjcmlwdG9yVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08c3RkOjpzdHJpbmc+IHsKICAgYm9vbCBnZW5lcmljX2Rlc2NyaXB0b3JfZW5hYmxl
ZF87CiB9OwogCi0jaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2lmIGRlZmluZWQoUlRD
X0VOQUJMRV9WUDkpCiBURVNUKEZ1bGxTdGFja1Rlc3QsIEZvcmVtYW5DaWZXaXRob3V0UGFja2V0
TG9zc1ZwOSkgewogICBhdXRvIGZpeHR1cmUgPSBDcmVhdGVWaWRlb1F1YWxpdHlUZXN0Rml4dHVy
ZSgpOwogICBQYXJhbXNXaXRoTG9nZ2luZyBmb3JlbWFuX2NpZjsKQEAgLTE4Nyw3ICsxOTAsNyBA
QCBURVNUKEZ1bGxTdGFja1Rlc3QsIEdlbmVyYXRvcldpdGhvdXRQYWNrZXRMb3NzTXVsdGlwbGV4
STQyMEFGcmFtZSkgewogICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6ZXIoZ2VuZXJhdG9yKTsKIH0K
IAotI2VuZGlmICAvLyAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjZW5kaWYgIC8vIGRlZmlu
ZWQoUlRDX0VOQUJMRV9WUDkpCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19MSU5VWCkKIC8vIENyYXNo
ZXMgb24gdGhlIGxpbnV4IHRydXN0eSBwZXJmIGJvdDogYnVncy53ZWJydGMub3JnLzkxMjkuCkBA
IC0yMzQsNiArMjM3LDI1IEBAIFRFU1RfUChHZW5lcmljRGVzY3JpcHRvclRlc3QsIEZvcmVtYW5D
aWYzMGticHNXaXRob3V0UGFja2V0TG9zcykgewogICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6ZXIo
Zm9yZW1hbl9jaWYpOwogfQogCisvLyBUT0RPKHdlYnJ0Yzo5NzIyKTogUmVtb3ZlIHdoZW4gZXhw
ZXJpbWVudCBpcyBjbGVhbmVkIHVwLgorVEVTVF9QKEdlbmVyaWNEZXNjcmlwdG9yVGVzdCwKKyAg
ICAgICBGb3JlbWFuQ2lmMzBrYnBzV2l0aG91dFBhY2tldExvc3NUcnVzdGVkUmF0ZUNvbnRyb2wp
IHsKKyAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAg
ICAgQXBwZW5kRmllbGRUcmlhbHMoa1ZwOFRydXN0ZWRSYXRlQ29udHJvbGxlckZpZWxkVHJpYWwp
KTsKKyAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKKwor
ICBQYXJhbXNXaXRoTG9nZ2luZyBmb3JlbWFuX2NpZjsKKyAgZm9yZW1hbl9jaWYuY2FsbC5zZW5k
X3NpZGVfYndlID0gdHJ1ZTsKKyAgZm9yZW1hbl9jaWYudmlkZW9bMF0gPSB7dHJ1ZSwgIDM1Miwg
ICAgICAgICAgMjg4LCAxMCwgMzAwMDAsIDMwMDAwLCAzMDAwMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFsc2UsICJWUDgiLCAgICAgICAgMSwgICAwLCAgMCwgICAgIGZhbHNlLCBmYWxz
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsICJmb3JlbWFuX2NpZiJ9OworICBm
b3JlbWFuX2NpZi5hbmFseXplciA9IHsKKyAgICAgIEdldFRlc3ROYW1lKCJmb3JlbWFuX2NpZl8z
MGticHNfbmV0X2RlbGF5XzBfMF9wbHJfMF90cnVzdGVkX3JhdGVfY3RybCIpLAorICAgICAgMC4w
LCAwLjAsIGtGdWxsU3RhY2tUZXN0RHVyYXRpb25TZWNzfTsKKyAgZm9yZW1hbl9jaWYuY2FsbC5n
ZW5lcmljX2Rlc2NyaXB0b3IgPSBHZW5lcmljRGVzY3JpcHRvckVuYWJsZWQoKTsKKyAgZml4dHVy
ZS0+UnVuV2l0aEFuYWx5emVyKGZvcmVtYW5fY2lmKTsKK30KKwogLy8gTGluayBjYXBhY2l0eSBi
ZWxvdyBkZWZhdWx0IHN0YXJ0IHJhdGUuIEF1dG9tYXRpYyBkb3duIHNjYWxpbmcgZW5hYmxlZC4K
IFRFU1QoRnVsbFN0YWNrVGVzdCwgRm9yZW1hbkNpZkxpbmsxNTBrYnBzV2l0aG91dFBhY2tldExv
c3MpIHsKICAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsK
QEAgLTM2NSw5ICszODcsOSBAQCBURVNUX1AoR2VuZXJpY0Rlc2NyaXB0b3JUZXN0LCBGb3JlbWFu
Q2lmUGxyNUgyNjQpIHsKIH0KIAogVEVTVChGdWxsU3RhY2tUZXN0LCBGb3JlbWFuQ2lmUGxyNUgy
NjRTcHNQcHNJZHJJc0tleWZyYW1lKSB7Ci0gIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVh
bGl0eVRlc3RGaXh0dXJlKCk7CiAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2Zp
ZWxkX3RyaWFscygKICAgICAgIEFwcGVuZEZpZWxkVHJpYWxzKCJXZWJSVEMtU3BzUHBzSWRySXNI
MjY0S2V5ZnJhbWUvRW5hYmxlZC8iKSk7CisgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVh
bGl0eVRlc3RGaXh0dXJlKCk7CiAKICAgUGFyYW1zV2l0aExvZ2dpbmcgZm9yZW1hbl9jaWY7CiAg
IGZvcmVtYW5fY2lmLmNhbGwuc2VuZF9zaWRlX2J3ZSA9IHRydWU7CkBAIC01MjEsMTYgKzU0Mywy
MSBAQCBURVNUKEZ1bGxTdGFja1Rlc3QsIENvbmZlcmVuY2VNb3Rpb25IZDIwMDBrYnBzMTAwbXNM
aW1pdGVkUXVldWUpIHsKICAgZml4dHVyZS0+UnVuV2l0aEFuYWx5emVyKGNvbmZfbW90aW9uX2hk
KTsKIH0KIAotVEVTVChGdWxsU3RhY2tUZXN0LCBDb25mZXJlbmNlTW90aW9uSGQxVExNb2RlcmF0
ZUxpbWl0cykgeworLy8gVE9ETyh3ZWJydGM6OTcyMik6IFJlbW92ZSB3aGVuIGV4cGVyaW1lbnQg
aXMgY2xlYW5lZCB1cC4KK1RFU1QoRnVsbFN0YWNrVGVzdCwgQ29uZmVyZW5jZU1vdGlvbkhkMVRM
TW9kZXJhdGVMaW1pdHNXaGl0ZWxpc3RWcDgpIHsKKyAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMg
b3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAgQXBwZW5kRmllbGRUcmlhbHMoa1ZwOFRydXN0
ZWRSYXRlQ29udHJvbGxlckZpZWxkVHJpYWwpKTsKICAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlk
ZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKKwogICBQYXJhbXNXaXRoTG9nZ2luZyBjb25mX21vdGlv
bl9oZDsKICAgY29uZl9tb3Rpb25faGQuY2FsbC5zZW5kX3NpZGVfYndlID0gdHJ1ZTsKICAgY29u
Zl9tb3Rpb25faGQudmlkZW9bMF0gPSB7CiAgICAgICB0cnVlLCAgICAxMjgwLCAgICA3MjAsICAg
NTAsICAgIDMwMDAwLAogICAgICAgMzAwMDAwMCwgMzAwMDAwMCwgZmFsc2UsICJWUDgiLCAxLAog
ICAgICAgLTEsICAgICAgMCwgICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgIkNvbmZlcmVuY2VN
b3Rpb25fMTI4MF83MjBfNTAifTsKLSAgY29uZl9tb3Rpb25faGQuYW5hbHl6ZXIgPSB7ImNvbmZl
cmVuY2VfbW90aW9uX2hkXzF0bF9tb2RlcmF0ZV9saW1pdHMiLCAwLjAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMCwga0Z1bGxTdGFja1Rlc3REdXJhdGlvblNlY3N9OworICBjb25m
X21vdGlvbl9oZC5hbmFseXplciA9IHsKKyAgICAgICJjb25mZXJlbmNlX21vdGlvbl9oZF8xdGxf
bW9kZXJhdGVfbGltaXRzX3RydXN0ZWRfcmF0ZV9jdHJsIiwgMC4wLCAwLjAsCisgICAgICBrRnVs
bFN0YWNrVGVzdER1cmF0aW9uU2Vjc307CiAgIGNvbmZfbW90aW9uX2hkLmNvbmZpZy0+cXVldWVf
bGVuZ3RoX3BhY2tldHMgPSA1MDsKICAgY29uZl9tb3Rpb25faGQuY29uZmlnLT5sb3NzX3BlcmNl
bnQgPSAzOwogICBjb25mX21vdGlvbl9oZC5jb25maWctPnF1ZXVlX2RlbGF5X21zID0gMTAwOwpA
QCAtNTkyLDE3ICs2MTksNDAgQEAgVEVTVChGdWxsU3RhY2tUZXN0LCBDb25mZXJlbmNlTW90aW9u
SGQ0VExNb2RlcmF0ZUxpbWl0cykgewogfQogCiBURVNUKEZ1bGxTdGFja1Rlc3QsIENvbmZlcmVu
Y2VNb3Rpb25IZDNUTE1vZGVyYXRlTGltaXRzQWx0VExQYXR0ZXJuKSB7Ci0gIGF1dG8gZml4dHVy
ZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CiAgIHRlc3Q6OlNjb3BlZEZpZWxk
VHJpYWxzIGZpZWxkX3RyaWFsKAogICAgICAgQXBwZW5kRmllbGRUcmlhbHMoIldlYlJUQy1Vc2VT
aG9ydFZQOFRMM1BhdHRlcm4vRW5hYmxlZC8iKSk7CisgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZp
ZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CisgIFBhcmFtc1dpdGhMb2dnaW5nIGNvbmZfbW90aW9u
X2hkOworICBjb25mX21vdGlvbl9oZC5jYWxsLnNlbmRfc2lkZV9id2UgPSB0cnVlOworICBjb25m
X21vdGlvbl9oZC52aWRlb1swXSA9IHsKKyAgICAgIHRydWUsICAxMjgwLCAgICA3MjAsICAgICA1
MCwKKyAgICAgIDMwMDAwLCAzMDAwMDAwLCAzMDAwMDAwLCBmYWxzZSwKKyAgICAgICJWUDgiLCAz
LCAgICAgICAtMSwgICAgICAwLAorICAgICAgZmFsc2UsIGZhbHNlLCAgIGZhbHNlLCAgICJDb25m
ZXJlbmNlTW90aW9uXzEyODBfNzIwXzUwIn07CisgIGNvbmZfbW90aW9uX2hkLmFuYWx5emVyID0g
eyJjb25mZXJlbmNlX21vdGlvbl9oZF8zdGxfYWx0X21vZGVyYXRlX2xpbWl0cyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMCwgMC4wLCBrRnVsbFN0YWNrVGVzdER1cmF0aW9uU2Vj
c307CisgIGNvbmZfbW90aW9uX2hkLmNvbmZpZy0+cXVldWVfbGVuZ3RoX3BhY2tldHMgPSA1MDsK
KyAgY29uZl9tb3Rpb25faGQuY29uZmlnLT5sb3NzX3BlcmNlbnQgPSAzOworICBjb25mX21vdGlv
bl9oZC5jb25maWctPnF1ZXVlX2RlbGF5X21zID0gMTAwOworICBjb25mX21vdGlvbl9oZC5jb25m
aWctPmxpbmtfY2FwYWNpdHlfa2JwcyA9IDIwMDA7CisgIGZpeHR1cmUtPlJ1bldpdGhBbmFseXpl
cihjb25mX21vdGlvbl9oZCk7Cit9CisKK1RFU1QoRnVsbFN0YWNrVGVzdCwKKyAgICAgQ29uZmVy
ZW5jZU1vdGlvbkhkM1RMTW9kZXJhdGVMaW1pdHNBbHRUTFBhdHRlcm5BbmRCYXNlSGVhdnlUTEFs
bG9jYXRpb24pIHsKKyAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1
cmUoKTsKKyAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWwoCisgICAgICBBcHBl
bmRGaWVsZFRyaWFscygiV2ViUlRDLVVzZVNob3J0VlA4VEwzUGF0dGVybi9FbmFibGVkLyIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJXZWJSVEMtVXNlQmFzZUhlYXZ5VlA4VEwzUmF0ZUFsbG9j
YXRpb24vRW5hYmxlZC8iKSk7CiAgIFBhcmFtc1dpdGhMb2dnaW5nIGNvbmZfbW90aW9uX2hkOwog
ICBjb25mX21vdGlvbl9oZC5jYWxsLnNlbmRfc2lkZV9id2UgPSB0cnVlOwogICBjb25mX21vdGlv
bl9oZC52aWRlb1swXSA9IHsKICAgICAgIHRydWUsICAgIDEyODAsICAgIDcyMCwgICA1MCwgICAg
MzAwMDAsCiAgICAgICAzMDAwMDAwLCAzMDAwMDAwLCBmYWxzZSwgIlZQOCIsIDMsCiAgICAgICAt
MSwgICAgICAwLCAgICAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCAiQ29uZmVyZW5jZU1vdGlvbl8x
MjgwXzcyMF81MCJ9OwotICBjb25mX21vdGlvbl9oZC5hbmFseXplciA9IHsiY29uZmVyZW5jZV9t
b3Rpb25faGRfM3RsX2FsdF9tb2RlcmF0ZV9saW1pdHMiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjAsIDAuMCwga0Z1bGxTdGFja1Rlc3REdXJhdGlvblNlY3N9OworICBjb25mX21v
dGlvbl9oZC5hbmFseXplciA9IHsKKyAgICAgICJjb25mZXJlbmNlX21vdGlvbl9oZF8zdGxfYWx0
X2hlYXZ5X21vZGVyYXRlX2xpbWl0cyIsIDAuMCwgMC4wLAorICAgICAga0Z1bGxTdGFja1Rlc3RE
dXJhdGlvblNlY3N9OwogICBjb25mX21vdGlvbl9oZC5jb25maWctPnF1ZXVlX2xlbmd0aF9wYWNr
ZXRzID0gNTA7CiAgIGNvbmZfbW90aW9uX2hkLmNvbmZpZy0+bG9zc19wZXJjZW50ID0gMzsKICAg
Y29uZl9tb3Rpb25faGQuY29uZmlnLT5xdWV1ZV9kZWxheV9tcyA9IDEwMDsKQEAgLTYxMCw3ICs2
NjAsNyBAQCBURVNUKEZ1bGxTdGFja1Rlc3QsIENvbmZlcmVuY2VNb3Rpb25IZDNUTE1vZGVyYXRl
TGltaXRzQWx0VExQYXR0ZXJuKSB7CiAgIGZpeHR1cmUtPlJ1bldpdGhBbmFseXplcihjb25mX21v
dGlvbl9oZCk7CiB9CiAKLSNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjaWYgZGVmaW5l
ZChSVENfRU5BQkxFX1ZQOSkKIFRFU1QoRnVsbFN0YWNrVGVzdCwgQ29uZmVyZW5jZU1vdGlvbkhk
MjAwMGticHMxMDBtc0xpbWl0ZWRRdWV1ZVZQOSkgewogICBhdXRvIGZpeHR1cmUgPSBDcmVhdGVW
aWRlb1F1YWxpdHlUZXN0Rml4dHVyZSgpOwogICBQYXJhbXNXaXRoTG9nZ2luZyBjb25mX21vdGlv
bl9oZDsKQEAgLTY0Miw5ICs2OTIsMTUgQEAgVEVTVChGdWxsU3RhY2tUZXN0LCBTY3JlZW5zaGFy
ZVNsaWRlc1ZQOF8yVEwpIHsKICAgZml4dHVyZS0+UnVuV2l0aEFuYWx5emVyKHNjcmVlbnNoYXJl
KTsKIH0KIAorLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTg0MCk6IEludmVzdGlnYXRlIHdoeSBp
cyB0aGlzIHRlc3QgZmxha3kgb24gTUFDLgorI2lmICFkZWZpbmVkKFdFQlJUQ19NQUMpCitjb25z
dCBjaGFyIGtTY3JlZW5zaGFyZVNpbXVsY2FzdEV4cGVyaW1lbnRbXSA9CisgICAgIldlYlJUQy1T
aW11bGNhc3RTY3JlZW5zaGFyZS9FbmFibGVkLyI7CisKIFRFU1QoRnVsbFN0YWNrVGVzdCwgU2Ny
ZWVuc2hhcmVTbGlkZXNWUDhfM1RMX1NpbXVsY2FzdCkgeworICB0ZXN0OjpTY29wZWRGaWVsZFRy
aWFscyBmaWVsZF90cmlhbCgKKyAgICAgIEFwcGVuZEZpZWxkVHJpYWxzKGtTY3JlZW5zaGFyZVNp
bXVsY2FzdEV4cGVyaW1lbnQpKTsKICAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5
VGVzdEZpeHR1cmUoKTsKLSAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWwoa1Nj
cmVlbnNoYXJlU2ltdWxjYXN0RXhwZXJpbWVudCk7CiAgIFBhcmFtc1dpdGhMb2dnaW5nIHNjcmVl
bnNoYXJlOwogICBzY3JlZW5zaGFyZS5jYWxsLnNlbmRfc2lkZV9id2UgPSB0cnVlOwogICBzY3Jl
ZW5zaGFyZS5zY3JlZW5zaGFyZVswXSA9IHt0cnVlLCBmYWxzZSwgMTB9OwpAQCAtNjcwLDYgKzcy
Niw3IEBAIFRFU1QoRnVsbFN0YWNrVGVzdCwgU2NyZWVuc2hhcmVTbGlkZXNWUDhfM1RMX1NpbXVs
Y2FzdCkgewogICAgICAgZmFsc2V9OwogICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6ZXIoc2NyZWVu
c2hhcmUpOwogfQorI2VuZGlmICAvLyAhZGVmaW5lZChXRUJSVENfTUFDKQogCiBURVNUKEZ1bGxT
dGFja1Rlc3QsIFNjcmVlbnNoYXJlU2xpZGVzVlA4XzJUTF9TY3JvbGwpIHsKICAgYXV0byBmaXh0
dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKQEAgLTc3MSw3ICs4MjgsNyBA
QCBjb25zdCBQYXJhbXNXaXRoTG9nZ2luZzo6VmlkZW8ga1NpbXVsY2FzdFZwOFZpZGVvTG93ID0g
ewogICAgIDE1MDAwMCwgMjAwMDAwLCBmYWxzZSwgIlZQOCIsIDMsCiAgICAgMiwgICAgICA0MDAw
MDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsICJDb25mZXJlbmNlTW90aW9uXzEyODBfNzIwXzUwIn07
CiAKLSNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjaWYgZGVmaW5lZChSVENfRU5BQkxF
X1ZQOSkKIFRFU1QoRnVsbFN0YWNrVGVzdCwgU2NyZWVuc2hhcmVTbGlkZXNWUDlfMlNMKSB7CiAg
IGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CiAgIFBhcmFt
c1dpdGhMb2dnaW5nIHNjcmVlbnNoYXJlOwpAQCAtODkxLDkgKzk0OCwyOCBAQCBURVNUKEZ1bGxT
dGFja1Rlc3QsIFZQOUtTVkNfM1NMX01lZGl1bV9OZXR3b3JrX1Jlc3RyaWN0ZWQpIHsKICAgc2lt
dWxjYXN0LmNvbmZpZy0+cXVldWVfZGVsYXlfbXMgPSAxMDA7CiAgIGZpeHR1cmUtPlJ1bldpdGhB
bmFseXplcihzaW11bGNhc3QpOwogfQorCisvLyBUT0RPKHdlYnJ0Yzo5NzIyKTogUmVtb3ZlIHdo
ZW4gZXhwZXJpbWVudCBpcyBjbGVhbmVkIHVwLgorVEVTVChGdWxsU3RhY2tUZXN0LCBWUDlLU1ZD
XzNTTF9NZWRpdW1fTmV0d29ya19SZXN0cmljdGVkX1RydXN0ZWRfUmF0ZSkgeworICB3ZWJydGM6
OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX3RyaWFscygKKyAgICAgIEFwcGVuZEZp
ZWxkVHJpYWxzKCJXZWJSVEMtVnA5SXNzdWVLZXlGcmFtZU9uTGF5ZXJEZWFjdGl2YXRpb24vRW5h
YmxlZC8iCisgICAgICAgICAgICAgICAgICAgICAgICAiV2ViUlRDLUxpYnZweFZwOVRydXN0ZWRS
YXRlQ29udHJvbGxlci9FbmFibGVkLyIpKTsKKyAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9R
dWFsaXR5VGVzdEZpeHR1cmUoKTsKKyAgUGFyYW1zV2l0aExvZ2dpbmcgc2ltdWxjYXN0OworICBz
aW11bGNhc3QuY2FsbC5zZW5kX3NpZGVfYndlID0gdHJ1ZTsKKyAgc2ltdWxjYXN0LnZpZGVvWzBd
ID0ga1N2Y1ZwOVZpZGVvOworICBzaW11bGNhc3QuYW5hbHl6ZXIgPSB7InZwOWtzdmNfM3NsX21l
ZGl1bV9uZXR3b3JrX3Jlc3RyaWN0ZWRfdHJ1c3RlZF9yYXRlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMCwgMC4wLCBrRnVsbFN0YWNrVGVzdER1cmF0aW9uU2Vjc307CisgIHNpbXVsY2Fz
dC5zc1swXSA9IHsKKyAgICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPigpLCAgMCwgICAgMywg
LTEsIEludGVyTGF5ZXJQcmVkTW9kZTo6a09uS2V5UGljLAorICAgICAgc3RkOjp2ZWN0b3I8U3Bh
dGlhbExheWVyPigpLCBmYWxzZX07CisgIHNpbXVsY2FzdC5jb25maWctPmxpbmtfY2FwYWNpdHlf
a2JwcyA9IDEwMDA7CisgIHNpbXVsY2FzdC5jb25maWctPnF1ZXVlX2RlbGF5X21zID0gMTAwOwor
ICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6ZXIoc2ltdWxjYXN0KTsKK30KICNlbmRpZiAgLy8gIWRl
ZmluZWQoV0VCUlRDX01BQykKIAotI2VuZGlmICAvLyAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkp
CisjZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKIC8vIEFuZHJvaWQgYm90cyBj
YW4ndCBoYW5kbGUgRnVsbEhELCBzbyBkaXNhYmxlIHRoZSB0ZXN0LgogLy8gVE9ETyhidWdzLndl
YnJ0Yy5vcmcvOTIyMCk6IEludmVzdGlnYXRlIHNvdXJjZSBvZiBmbGFraW5lc3Mgb24gTWFjLgpA
QCAtMTEwNCw3ICsxMTgwLDggQEAgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRnVsbFN0YWNrVGVz
dCwKIGNsYXNzIER1YWxTdHJlYW1zVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08aW50PiB7fTsKIAogLy8gRGlzYWJsZSBkdWFsIHZpZGVvIHRlc3Qgb24gbW9iaWxlIGRldmlj
ZSBiZWN1YXNlIGl0J3MgdG9vIGhlYXZ5LgotI2lmICFkZWZpbmVkKFdFQlJUQ19BTkRST0lEKSAm
JiAhZGVmaW5lZChXRUJSVENfSU9TKQorLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTg0MCk6IElu
dmVzdGlnYXRlIHdoeSBpcyB0aGlzIHRlc3QgZmxha3kgb24gTUFDLgorI2lmICFkZWZpbmVkKFdF
QlJUQ19BTkRST0lEKSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKSAmJiAhZGVmaW5lZChXRUJSVENf
TUFDKQogVEVTVF9QKER1YWxTdHJlYW1zVGVzdCwKICAgICAgICBNb2RlcmF0ZWx5UmVzdHJpY3Rl
ZF9TbGlkZXNWcDhfM1RMX1NpbXVsY2FzdF9WaWRlb19TaW11bGNhc3RfSGlnaCkgewogICB0ZXN0
OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbCgKQEAgLTExNjgsNyArMTI0NSw4IEBAIFRF
U1RfUChEdWFsU3RyZWFtc1Rlc3QsCiAgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0
eVRlc3RGaXh0dXJlKCk7CiAgIGZpeHR1cmUtPlJ1bldpdGhBbmFseXplcihkdWFsX3N0cmVhbXMp
OwogfQotI2VuZGlmICAvLyAhZGVmaW5lZChXRUJSVENfQU5EUk9JRCkgJiYgIWRlZmluZWQoV0VC
UlRDX0lPUykKKyNlbmRpZiAgLy8gIWRlZmluZWQoV0VCUlRDX0FORFJPSUQpICYmICFkZWZpbmVk
KFdFQlJUQ19JT1MpICYmCisgICAgICAgIC8vICFkZWZpbmVkKFdFQlJUQ19NQUMpCiAKIFRFU1Rf
UChEdWFsU3RyZWFtc1Rlc3QsIENvbmZlcmVuY2VfUmVzdHJpY3RlZCkgewogICB0ZXN0OjpTY29w
ZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL292ZXJ1c2VfZnJhbWVfZGV0ZWN0b3JfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9vdmVydXNlX2ZyYW1lX2RldGVjdG9yX3VuaXR0ZXN0LmNjCmluZGV4IGFjMDE5NzU0YzU0ZTI2
MWRhMTdmYWI4OWM5NjQwMWQ2N2VjNjFjYjguLjkxMDUwZDUwNTZmMDFiNGNmZTc5OGQyODgzNzQx
Y2Y0M2IzYzhjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL292ZXJ1c2VfZnJhbWVfZGV0ZWN0b3JfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vb3ZlcnVzZV9m
cmFtZV9kZXRlY3Rvcl91bml0dGVzdC5jYwpAQCAtMTAsOCArMTAsOCBAQAogCiAjaW5jbHVkZSA8
bWVtb3J5PgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRl
ICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVk
ZS92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkv
cXVhbGl0eV9zY2FsZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2Zha2VjbG9jay5oIgpAQCAtNDA2LDcgKzQwNiw3IEBAIFRFU1RfRihPdmVydXNl
RnJhbWVEZXRlY3RvclRlc3QsIFVwZGF0ZXNFeGlzdGluZ1NhbXBsZXMpIHsKIFRFU1RfRihPdmVy
dXNlRnJhbWVEZXRlY3RvclRlc3QsIFJ1bk9uVHFOb3JtYWxVc2FnZSkgewogICBydGM6OlRhc2tR
dWV1ZSBxdWV1ZSgiT3ZlcnVzZUZyYW1lRGV0ZWN0b3JUZXN0UXVldWUiKTsKIAotICBydGM6OkV2
ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAgIHF1ZXVlLlBv
c3RUYXNrKFt0aGlzLCAmZXZlbnRdIHsKICAgICBvdmVydXNlX2RldGVjdG9yXy0+U3RhcnRDaGVj
a0Zvck92ZXJ1c2Uob3B0aW9uc18sIG9ic2VydmVyXyk7CiAgICAgZXZlbnQuU2V0KCk7CkBAIC04
NzAsNyArODcwLDcgQEAgVEVTVF9GKE92ZXJ1c2VGcmFtZURldGVjdG9yVGVzdDIsIFVwZGF0ZXNF
eGlzdGluZ1NhbXBsZXMpIHsKIFRFU1RfRihPdmVydXNlRnJhbWVEZXRlY3RvclRlc3QyLCBSdW5P
blRxTm9ybWFsVXNhZ2UpIHsKICAgcnRjOjpUYXNrUXVldWUgcXVldWUoIk92ZXJ1c2VGcmFtZURl
dGVjdG9yVGVzdFF1ZXVlIik7CiAKLSAgcnRjOjpFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOwor
ICBydGM6OkV2ZW50IGV2ZW50OwogICBxdWV1ZS5Qb3N0VGFzayhbdGhpcywgJmV2ZW50XSB7CiAg
ICAgb3ZlcnVzZV9kZXRlY3Rvcl8tPlN0YXJ0Q2hlY2tGb3JPdmVydXNlKG9wdGlvbnNfLCBvYnNl
cnZlcl8pOwogICAgIGV2ZW50LlNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcGljdHVyZV9pZF90ZXN0cy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3BpY3R1cmVfaWRfdGVz
dHMuY2MKaW5kZXggMTU1ZGExM2FlNDlkYzQ5NjdhYmE5YWIyNzY5MGYzODNjNWZmMzdmNC4uNmNl
MGM5OWZmZTdiMzI3MDFhYTI1Mjg5YzEwZWRkZTU3ZDIyOTEyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcGljdHVyZV9pZF90ZXN0
cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9waWN0dXJlX2lkX3Rlc3RzLmNjCkBAIC05LDYgKzksNyBAQAogICovCiAKICNpbmNsdWRlICJh
cGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1
bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwvZmFrZV9uZXR3
b3JrX3BpcGUuaCIKICNpbmNsdWRlICJjYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgiCiAjaW5jbHVk
ZSAibWVkaWEvZW5naW5lL2ludGVybmFsZW5jb2RlcmZhY3RvcnkuaCIKQEAgLTE5LDcgKzIwLDYg
QEAKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2VxdWVuY2VfbnVtYmVyX3V0aWwuaCIKICNpbmNsdWRl
ICJ0ZXN0L2NhbGxfdGVzdC5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKQEAgLTI5OSw3
ICsyOTksNyBAQCB2b2lkIFBpY3R1cmVJZFRlc3Q6OlNldHVwRW5jb2RlcihWaWRlb0VuY29kZXJG
YWN0b3J5KiBlbmNvZGVyX2ZhY3RvcnksCiAgICAgICAgIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6
a1NlbmRlciwgcGF5bG9hZF90eXBlX21hcF8sCiAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZh
a2VOZXR3b3JrUGlwZT4oCiAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBh
YnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5l
dHdvcmtCZWhhdmlvckNvbmZpZygpKSkpKTsKIAogICAgIENyZWF0ZVNlbmRDb25maWcoa051bVNp
bXVsY2FzdFN0cmVhbXMsIDAsIDAsIHNlbmRfdHJhbnNwb3J0Xy5nZXQoKSk7CiAgICAgR2V0Vmlk
ZW9TZW5kQ29uZmlnKCktPmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gZW5jb2Rl
cl9mYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vcXVhbGl0eV9zY2FsaW5nX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcXVhbGl0eV9zY2FsaW5nX3Rlc3RzLmNj
CmluZGV4IDliMWQwZmFlZmYyMTI4YzdlYWNjYzI0ZTcyYjE3Njg2NzAyNzc5MDQuLjAxMzI4Zjgx
OTI1NzI1ZjIwNjJiMGRmYzQ2MmM3NDExYmM5OWNjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3F1YWxpdHlfc2NhbGluZ190ZXN0
cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9xdWFsaXR5X3NjYWxpbmdfdGVzdHMuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUg
PHN0cmluZz4KIAorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29k
ZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGVuY29kZXJmYWN0
b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaW5jbHVk
ZS9oMjY0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNs
dWRlL3ZwOC5oIgpAQCAtMTcsNyArMTgsNiBAQAogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0Lmgi
CiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZnJhbWVfZ2Vu
ZXJhdG9yX2NhcHR1cmVyLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVy
X2ZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewpAQCAtMTAzLDgg
KzEwMyw5IEBAIHZvaWQgUXVhbGl0eVNjYWxpbmdUZXN0OjpSdW5UZXN0KFZpZGVvRW5jb2RlckZh
Y3RvcnkqIGVuY29kZXJfZmFjdG9yeSwKICAgICAgIGlmICh3YW50cy5tYXhfcGl4ZWxfY291bnQg
PCBrV2lkdGggKiBrSGVpZ2h0KQogICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7
CiAgICAgfQotICAgIHZvaWQgTW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNv
bmZpZykgb3ZlcnJpZGUgewotICAgICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5zdGFydF9iaXRy
YXRlX2JwcyA9IHN0YXJ0X2Jwc187CisgICAgdm9pZCBNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmln
KAorICAgICAgICBCaXRyYXRlQ29uc3RyYWludHMqIGJpdHJhdGVfY29uZmlnKSBvdmVycmlkZSB7
CisgICAgICBiaXRyYXRlX2NvbmZpZy0+c3RhcnRfYml0cmF0ZV9icHMgPSBzdGFydF9icHNfOwog
ICAgIH0KIAogICAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdzKApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVjZWl2ZV9zdGF0aXN0
aWNzX3Byb3h5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vcmVjZWl2ZV9zdGF0aXN0aWNzX3Byb3h5LmNjCmluZGV4IGNjZDJjMjBmNjVmOGE3Mjll
ZWQxZGQ1NmQxNzdjY2VhYWNlOGVkN2MuLmUyMGI3ZDI5NGZkNjIyNDk0MmM3Nzk4YWU2NjQwM2I1
ZDgzNTdkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94eS5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0YXRpc3RpY3Nf
cHJveHkuY2MKQEAgLTc1OSw2ICs3NTksOSBAQCB2b2lkIFJlY2VpdmVTdGF0aXN0aWNzUHJveHk6
Ok9uUmVuZGVyZWRGcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSkgewogICBSVENfRENIRUNL
X0dUKGhlaWdodCwgMCk7CiAgIGludDY0X3Qgbm93X21zID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNl
Y29uZHMoKTsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF8pOworCisgIHZpZGVvX3F1YWxp
dHlfb2JzZXJ2ZXJfLT5PblJlbmRlcmVkRnJhbWUobm93X21zKTsKKwogICBDb250ZW50U3BlY2lm
aWNTdGF0cyogY29udGVudF9zcGVjaWZpY19zdGF0cyA9CiAgICAgICAmY29udGVudF9zcGVjaWZp
Y19zdGF0c19bbGFzdF9jb250ZW50X3R5cGVfXTsKICAgcmVuZGVyc19mcHNfZXN0aW1hdG9yXy5V
cGRhdGUoMSwgbm93X21zKTsKQEAgLTgxMyw4ICs4MTYsMTUgQEAgdm9pZCBSZWNlaXZlU3RhdGlz
dGljc1Byb3h5OjpPbkNvbXBsZXRlRnJhbWUoYm9vbCBpc19rZXlmcmFtZSwKICAgICArK3N0YXRz
Xy5mcmFtZV9jb3VudHMuZGVsdGFfZnJhbWVzOwogICB9CiAKKyAgLy8gQ29udGVudCB0eXBlIGV4
dGVuc2lvbiBpcyBzZXQgb25seSBmb3Iga2V5ZnJhbWVzIGFuZCBzaG91bGQgYmUgcHJvcGFnYXRl
ZAorICAvLyBmb3IgYWxsIHRoZSBmb2xsb3dpbmcgZGVsdGEgZnJhbWVzLiBIZXJlIHdlIG1heSBy
ZWNlaXZlIGZyYW1lcyBvdXQgb2Ygb3JkZXIKKyAgLy8gYW5kIG1pc2NhdGVnb3Jpc2Ugc29tZSBk
ZWx0YSBmcmFtZXMgbmVhciB0aGUgbGF5ZXIgc3dpdGNoLgorICAvLyBUaGlzIG1heSBzbGlnaHRs
eSBvZmZzZXQgY2FsY3VsYXRlZCBiaXRyYXRlIGFuZCBrZXlmcmFtZXMgcGVybWlsbGUgbWV0cmlj
cy4KKyAgVmlkZW9Db250ZW50VHlwZSBwcm9wYWdhdGVkX2NvbnRlbnRfdHlwZSA9CisgICAgICBp
c19rZXlmcmFtZSA/IGNvbnRlbnRfdHlwZSA6IGxhc3RfY29udGVudF90eXBlXzsKKwogICBDb250
ZW50U3BlY2lmaWNTdGF0cyogY29udGVudF9zcGVjaWZpY19zdGF0cyA9Ci0gICAgICAmY29udGVu
dF9zcGVjaWZpY19zdGF0c19bY29udGVudF90eXBlXTsKKyAgICAgICZjb250ZW50X3NwZWNpZmlj
X3N0YXRzX1twcm9wYWdhdGVkX2NvbnRlbnRfdHlwZV07CiAKICAgY29udGVudF9zcGVjaWZpY19z
dGF0cy0+dG90YWxfbWVkaWFfYnl0ZXMgKz0gc2l6ZV9ieXRlczsKICAgaWYgKGlzX2tleWZyYW1l
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby9yZWNlaXZlX3N0YXRpc3RpY3NfcHJveHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94eS5oCmlu
ZGV4IDRkYWVmZTA0N2Q2NTg5OTRlODkzYmQ4MzUzMzIwYzNjMjgxZmM2ZGUuLjEwMGU3NTExNmM0
NzM2MDAyMGMyOTQwMzZkZjRlMThiNTk5MTI4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94
eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L3JlY2VpdmVfc3RhdGlzdGljc19wcm94eS5oCkBAIC0xOCw4ICsxOCw2IEBACiAKICNpbmNsdWRl
ICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiY2FsbC92aWRlb19yZWNlaXZlX3N0
cmVhbS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1
ZGUpCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvZnJhbWVfY2FsbGJhY2suaCIKICNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZ19kZWZpbmVz
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbnVtZXJpY3MvaGlzdG9ncmFtX3BlcmNlbnRpbGVfY291bnRlci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVjZWl2
ZV9zdGF0aXN0aWNzX3Byb3h5X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVjZWl2ZV9zdGF0aXN0aWNzX3Byb3h5X3VuaXR0ZXN0
LmNjCmluZGV4IGI4YTk2YjJmNWU4MjQyNDgzNTEyODU2MDZlMDkzYWNmNjVlMDE4YzIuLmI3NGU0
NjAxYWFiMGE5MTZlODQ5NmFjM2VhMDI0YmUxZWExMTA0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGlj
c19wcm94eV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0YXRpc3RpY3NfcHJveHlfdW5pdHRlc3QuY2MKQEAg
LTEwNTcsMTUgKzEwNTcsMTkgQEAgVEVTVF9QKFJlY2VpdmVTdGF0aXN0aWNzUHJveHlUZXN0LCBG
cmVlemVzQXJlUmVwb3J0ZWQpIHsKICAgY29uc3QgaW50IGtGcmVlemVEZWxheU1zID0gMjAwOwog
ICBjb25zdCBpbnQga0NhbGxEdXJhdGlvbk1zID0KICAgICAgIGtNaW5SZXF1aXJlZFNhbXBsZXMg
KiBrSW50ZXJGcmFtZURlbGF5TXMgKyBrRnJlZXplRGVsYXlNczsKKyAgd2VicnRjOjpWaWRlb0Zy
YW1lIGZyYW1lKHdlYnJ0Yzo6STQyMEJ1ZmZlcjo6Q3JlYXRlKDEsIDEpLCAwLCAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wKTsKICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBrTWluUmVxdWlyZWRTYW1wbGVzOyArK2kpIHsKICAgICBzdGF0aXN0aWNz
X3Byb3h5Xy0+T25EZWNvZGVkRnJhbWUoYWJzbDo6bnVsbG9wdCwga1dpZHRoLCBrSGVpZ2h0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGUpOworICAg
IHN0YXRpc3RpY3NfcHJveHlfLT5PblJlbmRlcmVkRnJhbWUoZnJhbWUpOwogICAgIGZha2VfY2xv
Y2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtJbnRlckZyYW1lRGVsYXlNcyk7CiAgIH0KICAg
Ly8gQWRkIGV4dHJhIGZyZWV6ZS4KICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29u
ZHMoa0ZyZWV6ZURlbGF5TXMpOwogICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25EZWNvZGVkRnJhbWUo
YWJzbDo6bnVsbG9wdCwga1dpZHRoLCBrSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGVudF90eXBlKTsKKyAgc3RhdGlzdGljc19wcm94eV8tPk9uUmVuZGVy
ZWRGcmFtZShmcmFtZSk7CiAKICAgc3RhdGlzdGljc19wcm94eV8ucmVzZXQoKTsKICAgY29uc3Qg
aW50IGtFeHBlY3RlZFRpbWVCZXR3ZWVuRnJlZXplcyA9CkBAIC0xMDk1LDkgKzEwOTksMTIgQEAg
VEVTVF9QKFJlY2VpdmVTdGF0aXN0aWNzUHJveHlUZXN0LCBQYXVzZXNBcmVJZ25vcmVkKSB7CiAg
IGNvbnN0IFZpZGVvQ29udGVudFR5cGUgY29udGVudF90eXBlID0gR2V0UGFyYW0oKTsKICAgY29u
c3QgaW50IGtJbnRlckZyYW1lRGVsYXlNcyA9IDMzOwogICBjb25zdCBpbnQga1BhdXNlRHVyYXRp
b25NcyA9IDEwMDAwOworICB3ZWJydGM6OlZpZGVvRnJhbWUgZnJhbWUod2VicnRjOjpJNDIwQnVm
ZmVyOjpDcmVhdGUoMSwgMSksIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJy
dGM6OmtWaWRlb1JvdGF0aW9uXzApOwogICBmb3IgKGludCBpID0gMDsgaSA8PSBrTWluUmVxdWly
ZWRTYW1wbGVzOyArK2kpIHsKICAgICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25EZWNvZGVkRnJhbWUo
YWJzbDo6bnVsbG9wdCwga1dpZHRoLCBrSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZW50X3R5cGUpOworICAgIHN0YXRpc3RpY3NfcHJveHlfLT5PblJl
bmRlcmVkRnJhbWUoZnJhbWUpOwogICAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNv
bmRzKGtJbnRlckZyYW1lRGVsYXlNcyk7CiAgIH0KICAgLy8gQWRkIGEgcGF1c2UuCkBAIC0xMTA4
LDYgKzExMTUsNyBAQCBURVNUX1AoUmVjZWl2ZVN0YXRpc3RpY3NQcm94eVRlc3QsIFBhdXNlc0Fy
ZUlnbm9yZWQpIHsKICAgZm9yIChpbnQgaSA9IDA7IGkgPD0ga01pblJlcXVpcmVkU2FtcGxlcyAq
IDM7ICsraSkgewogICAgIHN0YXRpc3RpY3NfcHJveHlfLT5PbkRlY29kZWRGcmFtZShhYnNsOjpu
dWxsb3B0LCBrV2lkdGgsIGtIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRlbnRfdHlwZSk7CisgICAgc3RhdGlzdGljc19wcm94eV8tPk9uUmVuZGVyZWRG
cmFtZShmcmFtZSk7CiAgICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa0lu
dGVyRnJhbWVEZWxheU1zKTsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZXBsYXkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZXBsYXkuY2MKaW5kZXggNWMxN2U1YjNi
N2Q5NDdiZDg0NmU5ZjY5NjdiZjFkMWEyM2EwYjQ1My4uMmMxYzhhNTVhZDRmNWY4NTI3Y2IxNjJl
ODU1NWQxOWIyOGFjYjY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vcmVwbGF5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlcGxheS5jYwpAQCAtMTUsNiArMTUsNyBAQAog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzc3RyZWFtPgogCisjaW5jbHVkZSAiYXBpL3Rl
c3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBp
L3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAiY2FsbC9jYWxsLmgiCiAj
aW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKQEAg
LTMyLDcgKzMzLDYgQEAKICNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgogI2luY2x1ZGUgInRl
c3QvZW5jb2Rlcl9zZXR0aW5ncy5oIgogI2luY2x1ZGUgInRlc3QvZmFrZV9kZWNvZGVyLmgiCi0j
aW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9udWxsX3RyYW5zcG9ydC5oIgogI2luY2x1
ZGUgInRlc3QvcnRwX2ZpbGVfcmVhZGVyLmgiCkBAIC03MiwzOSArNzIsMzkgQEAgbmFtZXNwYWNl
IGZsYWdzIHsKIC8vIFRPRE8ocGJvcyk6IE11bHRpcGxlIHJlY2VpdmVycy4KIAogLy8gRmxhZyBm
b3IgcGF5bG9hZCB0eXBlLgotREVGSU5FX2ludChtZWRpYV9wYXlsb2FkX3R5cGUsCi0gICAgICAg
ICAgIHRlc3Q6OkNhbGxUZXN0OjprUGF5bG9hZFR5cGVWUDgsCi0gICAgICAgICAgICJNZWRpYSBw
YXlsb2FkIHR5cGUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KG1lZGlhX3BheWxvYWRfdHlwZSwKKyAg
ICAgICAgICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprUGF5bG9hZFR5cGVWUDgsCisgICAgICAg
ICAgICAgICAgICAiTWVkaWEgcGF5bG9hZCB0eXBlIik7CiBzdGF0aWMgaW50IE1lZGlhUGF5bG9h
ZFR5cGUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbWVkaWFfcGF5bG9hZF90
eXBlKTsKIH0KIAogLy8gRmxhZyBmb3IgUkVEIHBheWxvYWQgdHlwZS4KLURFRklORV9pbnQocmVk
X3BheWxvYWRfdHlwZSwKLSAgICAgICAgICAgdGVzdDo6Q2FsbFRlc3Q6OmtSZWRQYXlsb2FkVHlw
ZSwKLSAgICAgICAgICAgIlJFRCBwYXlsb2FkIHR5cGUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHJl
ZF9wYXlsb2FkX3R5cGUsCisgICAgICAgICAgICAgICAgICB0ZXN0OjpDYWxsVGVzdDo6a1JlZFBh
eWxvYWRUeXBlLAorICAgICAgICAgICAgICAgICAgIlJFRCBwYXlsb2FkIHR5cGUiKTsKIHN0YXRp
YyBpbnQgUmVkUGF5bG9hZFR5cGUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdf
cmVkX3BheWxvYWRfdHlwZSk7CiB9CiAKIC8vIEZsYWcgZm9yIFVMUEZFQyBwYXlsb2FkIHR5cGUu
Ci1ERUZJTkVfaW50KHVscGZlY19wYXlsb2FkX3R5cGUsCi0gICAgICAgICAgIHRlc3Q6OkNhbGxU
ZXN0OjprVWxwZmVjUGF5bG9hZFR5cGUsCi0gICAgICAgICAgICJVTFBGRUMgcGF5bG9hZCB0eXBl
Iik7CitXRUJSVENfREVGSU5FX2ludCh1bHBmZWNfcGF5bG9hZF90eXBlLAorICAgICAgICAgICAg
ICAgICAgdGVzdDo6Q2FsbFRlc3Q6OmtVbHBmZWNQYXlsb2FkVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICJVTFBGRUMgcGF5bG9hZCB0eXBlIik7CiBzdGF0aWMgaW50IFVscGZlY1BheWxvYWRUeXBl
KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3VscGZlY19wYXlsb2FkX3R5cGUp
OwogfQogCi1ERUZJTkVfaW50KG1lZGlhX3BheWxvYWRfdHlwZV9ydHgsCi0gICAgICAgICAgIHRl
c3Q6OkNhbGxUZXN0OjprU2VuZFJ0eFBheWxvYWRUeXBlLAotICAgICAgICAgICAiTWVkaWEgb3Zl
ciBSVFggcGF5bG9hZCB0eXBlIik7CitXRUJSVENfREVGSU5FX2ludChtZWRpYV9wYXlsb2FkX3R5
cGVfcnR4LAorICAgICAgICAgICAgICAgICAgdGVzdDo6Q2FsbFRlc3Q6OmtTZW5kUnR4UGF5bG9h
ZFR5cGUsCisgICAgICAgICAgICAgICAgICAiTWVkaWEgb3ZlciBSVFggcGF5bG9hZCB0eXBlIik7
CiBzdGF0aWMgaW50IE1lZGlhUGF5bG9hZFR5cGVSdHgoKSB7CiAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KEZMQUdfbWVkaWFfcGF5bG9hZF90eXBlX3J0eCk7CiB9CiAKLURFRklORV9pbnQocmVk
X3BheWxvYWRfdHlwZV9ydHgsCi0gICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprUnR4UmVkUGF5
bG9hZFR5cGUsCi0gICAgICAgICAgICJSRUQgb3ZlciBSVFggcGF5bG9hZCB0eXBlIik7CitXRUJS
VENfREVGSU5FX2ludChyZWRfcGF5bG9hZF90eXBlX3J0eCwKKyAgICAgICAgICAgICAgICAgIHRl
c3Q6OkNhbGxUZXN0OjprUnR4UmVkUGF5bG9hZFR5cGUsCisgICAgICAgICAgICAgICAgICAiUkVE
IG92ZXIgUlRYIHBheWxvYWQgdHlwZSIpOwogc3RhdGljIGludCBSZWRQYXlsb2FkVHlwZVJ0eCgp
IHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19yZWRfcGF5bG9hZF90eXBlX3J0eCk7
CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgY29uc3Qgc3RkOjpzdHJpbmcmIERlZmF1bHRTc3JjKCkg
ewogICAgICAgc3RkOjp0b19zdHJpbmcodGVzdDo6Q2FsbFRlc3Q6OmtWaWRlb1NlbmRTc3Jjc1sw
XSk7CiAgIHJldHVybiBzc3JjOwogfQotREVGSU5FX3N0cmluZyhzc3JjLCBEZWZhdWx0U3NyYygp
LmNfc3RyKCksICJJbmNvbWluZyBTU1JDIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhzc3JjLCBE
ZWZhdWx0U3NyYygpLmNfc3RyKCksICJJbmNvbWluZyBTU1JDIik7CiBzdGF0aWMgdWludDMyX3Qg
U3NyYygpIHsKICAgcmV0dXJuIHJ0Yzo6U3RyaW5nVG9OdW1iZXI8dWludDMyX3Q+KEZMQUdfc3Ny
YykudmFsdWUoKTsKIH0KQEAgLTEyNSw1NCArMTI1LDU2IEBAIGNvbnN0IHN0ZDo6c3RyaW5nJiBE
ZWZhdWx0U3NyY1J0eCgpIHsKICAgICAgIHN0ZDo6dG9fc3RyaW5nKHRlc3Q6OkNhbGxUZXN0Ojpr
U2VuZFJ0eFNzcmNzWzBdKTsKICAgcmV0dXJuIHNzcmNfcnR4OwogfQotREVGSU5FX3N0cmluZyhz
c3JjX3J0eCwgRGVmYXVsdFNzcmNSdHgoKS5jX3N0cigpLCAiSW5jb21pbmcgUlRYIFNTUkMiKTsK
K1dFQlJUQ19ERUZJTkVfc3RyaW5nKHNzcmNfcnR4LCBEZWZhdWx0U3NyY1J0eCgpLmNfc3RyKCks
ICJJbmNvbWluZyBSVFggU1NSQyIpOwogc3RhdGljIHVpbnQzMl90IFNzcmNSdHgoKSB7CiAgIHJl
dHVybiBydGM6OlN0cmluZ1RvTnVtYmVyPHVpbnQzMl90PihGTEFHX3NzcmNfcnR4KS52YWx1ZSgp
OwogfQogCiAvLyBGbGFnIGZvciBhYnMtc2VuZC10aW1lIGlkLgotREVGSU5FX2ludChhYnNfc2Vu
ZF90aW1lX2lkLCAtMSwgIlJUUCBleHRlbnNpb24gSUQgZm9yIGFicy1zZW5kLXRpbWUiKTsKK1dF
QlJUQ19ERUZJTkVfaW50KGFic19zZW5kX3RpbWVfaWQsIC0xLCAiUlRQIGV4dGVuc2lvbiBJRCBm
b3IgYWJzLXNlbmQtdGltZSIpOwogc3RhdGljIGludCBBYnNTZW5kVGltZUlkKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2Fic19zZW5kX3RpbWVfaWQpOwogfQogCiAvLyBGbGFn
IGZvciB0cmFuc21pc3Npb24tb2Zmc2V0IGlkLgotREVGSU5FX2ludCh0cmFuc21pc3Npb25fb2Zm
c2V0X2lkLAotICAgICAgICAgICAtMSwKLSAgICAgICAgICAgIlJUUCBleHRlbnNpb24gSUQgZm9y
IHRyYW5zbWlzc2lvbi1vZmZzZXQiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHRyYW5zbWlzc2lvbl9v
ZmZzZXRfaWQsCisgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICJSVFAg
ZXh0ZW5zaW9uIElEIGZvciB0cmFuc21pc3Npb24tb2Zmc2V0Iik7CiBzdGF0aWMgaW50IFRyYW5z
bWlzc2lvbk9mZnNldElkKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3RyYW5z
bWlzc2lvbl9vZmZzZXRfaWQpOwogfQogCiAvLyBGbGFnIGZvciBydHBkdW1wIGlucHV0IGZpbGUu
Ci1ERUZJTkVfc3RyaW5nKGlucHV0X2ZpbGUsICIiLCAiaW5wdXQgZmlsZSIpOworV0VCUlRDX0RF
RklORV9zdHJpbmcoaW5wdXRfZmlsZSwgIiIsICJpbnB1dCBmaWxlIik7CiBzdGF0aWMgc3RkOjpz
dHJpbmcgSW5wdXRGaWxlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZM
QUdfaW5wdXRfZmlsZSk7CiB9CiAKLURFRklORV9zdHJpbmcoY29uZmlnX2ZpbGUsICIiLCAiY29u
ZmlnIGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGNvbmZpZ19maWxlLCAiIiwgImNvbmZp
ZyBmaWxlIik7CiBzdGF0aWMgc3RkOjpzdHJpbmcgQ29uZmlnRmlsZSgpIHsKICAgcmV0dXJuIHN0
YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2NvbmZpZ19maWxlKTsKIH0KIAogLy8gRmxhZyBm
b3IgcmF3IG91dHB1dCBmaWxlcy4KLURFRklORV9zdHJpbmcob3V0X2Jhc2UsICIiLCAiQmFzZW5h
bWUgKGV4Y2x1ZGluZyAuanBnKSBmb3IgcmF3IG91dHB1dCIpOworV0VCUlRDX0RFRklORV9zdHJp
bmcob3V0X2Jhc2UsICIiLCAiQmFzZW5hbWUgKGV4Y2x1ZGluZyAuanBnKSBmb3IgcmF3IG91dHB1
dCIpOwogc3RhdGljIHN0ZDo6c3RyaW5nIE91dEJhc2UoKSB7CiAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzdGQ6OnN0cmluZz4oRkxBR19vdXRfYmFzZSk7CiB9CiAKLURFRklORV9zdHJpbmcoZGVjb2Rl
cl9iaXRzdHJlYW1fZmlsZW5hbWUsICIiLCAiRGVjb2RlciBiaXRzdHJlYW0gb3V0cHV0IGZpbGUi
KTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGRlY29kZXJfYml0c3RyZWFtX2ZpbGVuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiRGVjb2RlciBiaXRz
dHJlYW0gb3V0cHV0IGZpbGUiKTsKIHN0YXRpYyBzdGQ6OnN0cmluZyBEZWNvZGVyQml0c3RyZWFt
RmlsZW5hbWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19kZWNv
ZGVyX2JpdHN0cmVhbV9maWxlbmFtZSk7CiB9CiAKIC8vIEZsYWcgZm9yIHZpZGVvIGNvZGVjLgot
REVGSU5FX3N0cmluZyhjb2RlYywgIlZQOCIsICJWaWRlbyBjb2RlYyIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcoY29kZWMsICJWUDgiLCAiVmlkZW8gY29kZWMiKTsKIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBDb2RlYygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2NvZGVj
KTsKIH0KIAotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7
CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7
CiB9ICAvLyBuYW1lc3BhY2UgZmxhZ3MKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IGtSZWNlaXZl
ckxvY2FsU3NyYyA9IDB4MTIzNDU2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVwb3J0X2Jsb2NrX3N0YXRzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZXBvcnRfYmxvY2tfc3Rh
dHMuaAppbmRleCAyNDFmZWM3NmE2OTkyMzg0Mjk1OWRjYWM4NjRlODYwYzBjNDczNzVhLi45MGJh
ZGY3MDg2MmZjMWFiNzBkNmE0YjEyOTY3NTQ5ODhjNDUxNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZXBvcnRfYmxvY2tfc3Rh
dHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9yZXBvcnRfYmxvY2tfc3RhdHMuaApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPG1hcD4K
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElO
VChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydGNw
X3N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0
Y3BfZGVmaW5lcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1f
cmVjZWl2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92
aWRlby9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyLmNjCmluZGV4IDY0ZWM1NDRiNzBhNmYxYjMy
ODg4NDBiYWM0MDA2NTA2Y2Y5MDNjNDAuLmZkZjAyZmYzMjlkNzQxZmFmMjg5MDg0ZTM4YWQ4YWE3
ZTczOGI0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9y
ZWNlaXZlci5jYwpAQCAtMTYsNyArMTYsNiBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlKQogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVf
Yml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IuaCIKQEAg
LTUwLDcgKzQ5LDcgQEAgbmFtZXNwYWNlIHsKIC8vIFRPRE8ocGhpbGlwZWwpOiBDaGFuZ2Uga1Bh
Y2tldEJ1ZmZlclN0YXJ0U2l6ZSBiYWNrIHRvIDMyIGluIE02MyBzZWU6CiAvLyAgICAgICAgICAg
ICAgICAgY3JidWcuY29tLzc1Mjg4NgogY29uc3RleHByIGludCBrUGFja2V0QnVmZmVyU3RhcnRT
aXplID0gNTEyOwotY29uc3RleHByIGludCBrUGFja2V0QnVmZmVyTWF4U2l4ZSA9IDIwNDg7Citj
b25zdGV4cHIgaW50IGtQYWNrZXRCdWZmZXJNYXhTaXplID0gMjA0ODsKIH0gIC8vIG5hbWVzcGFj
ZQogCiBzdGQ6OnVuaXF1ZV9wdHI8UnRwUnRjcD4gQ3JlYXRlUnRwUnRjcE1vZHVsZSgKQEAgLTk1
LDcgKzk0LDggQEAgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6UnRwVmlkZW9TdHJlYW1SZWNlaXZl
cigKICAgICBQcm9jZXNzVGhyZWFkKiBwcm9jZXNzX3RocmVhZCwKICAgICBOYWNrU2VuZGVyKiBu
YWNrX3NlbmRlciwKICAgICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1lX3JlcXVlc3Rf
c2VuZGVyLAotICAgIHZpZGVvX2NvZGluZzo6T25Db21wbGV0ZUZyYW1lQ2FsbGJhY2sqIGNvbXBs
ZXRlX2ZyYW1lX2NhbGxiYWNrKQorICAgIHZpZGVvX2NvZGluZzo6T25Db21wbGV0ZUZyYW1lQ2Fs
bGJhY2sqIGNvbXBsZXRlX2ZyYW1lX2NhbGxiYWNrLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxG
cmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yKQogICAgIDogY2xvY2tfKENs
b2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgY29uZmlnXygqY29uZmlnKSwKICAgICAg
IHBhY2tldF9yb3V0ZXJfKHBhY2tldF9yb3V0ZXIpLApAQCAtMTEzLDExICsxMTMsMTAgQEAgUnRw
VmlkZW9TdHJlYW1SZWNlaXZlcjo6UnRwVmlkZW9TdHJlYW1SZWNlaXZlcigKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9yb3V0ZXIpKSwKICAgICAgIGNvbXBsZXRl
X2ZyYW1lX2NhbGxiYWNrXyhjb21wbGV0ZV9mcmFtZV9jYWxsYmFjayksCiAgICAgICBrZXlmcmFt
ZV9yZXF1ZXN0X3NlbmRlcl8oa2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIpLAotICAgICAgaGFzX3Jl
Y2VpdmVkX2ZyYW1lXyhmYWxzZSkgeworICAgICAgaGFzX3JlY2VpdmVkX2ZyYW1lXyhmYWxzZSks
CisgICAgICBmcmFtZV9kZWNyeXB0b3JfKGZyYW1lX2RlY3J5cHRvcikgewogICBjb25zdGV4cHIg
Ym9vbCByZW1iX2NhbmRpZGF0ZSA9IHRydWU7CiAgIHBhY2tldF9yb3V0ZXJfLT5BZGRSZWNlaXZl
UnRwTW9kdWxlKHJ0cF9ydGNwXy5nZXQoKSwgcmVtYl9jYW5kaWRhdGUpOwotICBydHBfcmVjZWl2
ZV9zdGF0aXN0aWNzXy0+UmVnaXN0ZXJSdHBTdGF0aXN0aWNzQ2FsbGJhY2socmVjZWl2ZV9zdGF0
c19wcm94eSk7Ci0gIHJ0cF9yZWNlaXZlX3N0YXRpc3RpY3NfLT5SZWdpc3RlclJ0Y3BTdGF0aXN0
aWNzQ2FsbGJhY2socmVjZWl2ZV9zdGF0c19wcm94eSk7CiAKICAgUlRDX0RDSEVDSyhjb25maWdf
LnJ0cC5ydGNwX21vZGUgIT0gUnRjcE1vZGU6OmtPZmYpCiAgICAgICA8PCAiQSBzdHJlYW0gc2hv
dWxkIG5vdCBiZSBjb25maWd1cmVkIHdpdGggUlRDUCBkaXNhYmxlZC4gVGhpcyB2YWx1ZSBpcyAi
CkBAIC0xNDcsMTQgKzE0NiwyOSBAQCBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyOjpSdHBWaWRlb1N0
cmVhbVJlY2VpdmVyKAogICBwcm9jZXNzX3RocmVhZF8tPlJlZ2lzdGVyTW9kdWxlKHJ0cF9ydGNw
Xy5nZXQoKSwgUlRDX0ZST01fSEVSRSk7CiAKICAgaWYgKGNvbmZpZ18ucnRwLm5hY2sucnRwX2hp
c3RvcnlfbXMgIT0gMCkgewotICAgIG5hY2tfbW9kdWxlXy5yZXNldCgKLSAgICAgICAgbmV3IE5h
Y2tNb2R1bGUoY2xvY2tfLCBuYWNrX3NlbmRlciwga2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIpKTsK
KyAgICBuYWNrX21vZHVsZV8gPSBhYnNsOjptYWtlX3VuaXF1ZTxOYWNrTW9kdWxlPihjbG9ja18s
IG5hY2tfc2VuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKTsKICAgICBwcm9jZXNzX3RocmVhZF8tPlJl
Z2lzdGVyTW9kdWxlKG5hY2tfbW9kdWxlXy5nZXQoKSwgUlRDX0ZST01fSEVSRSk7CiAgIH0KIAor
ICAvLyBUaGUgZ3JvdXAgaGVyZSBtdXN0IGJlIGEgcG9zaXRpdmUgcG93ZXIgb2YgMiwgaW4gd2hp
Y2ggY2FzZSB0aGF0IGlzIHVzZWQgYXMKKyAgLy8gc2l6ZS4gQWxsIG90aGVyIHZhbHVlcyBzaGFs
bCByZXN1bHQgaW4gdGhlIGRlZmF1bHQgdmFsdWUgYmVpbmcgdXNlZC4KKyAgY29uc3Qgc3RkOjpz
dHJpbmcgZ3JvdXBfbmFtZSA9CisgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpGaW5kRnVsbE5h
bWUoIldlYlJUQy1QYWNrZXRCdWZmZXJNYXhTaXplIik7CisgIGludCBwYWNrZXRfYnVmZmVyX21h
eF9zaXplID0ga1BhY2tldEJ1ZmZlck1heFNpemU7CisgIGlmICghZ3JvdXBfbmFtZS5lbXB0eSgp
ICYmCisgICAgICAoc3NjYW5mKGdyb3VwX25hbWUuY19zdHIoKSwgIiVkIiwgJnBhY2tldF9idWZm
ZXJfbWF4X3NpemUpICE9IDEgfHwKKyAgICAgICBwYWNrZXRfYnVmZmVyX21heF9zaXplIDw9IDAg
fHwKKyAgICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgbnVtYmVyIGlzIGEgcG9zaXRpdmUgcG93ZXIg
b2YgMi4KKyAgICAgICAocGFja2V0X2J1ZmZlcl9tYXhfc2l6ZSAmIChwYWNrZXRfYnVmZmVyX21h
eF9zaXplIC0gMSkpICE9IDApKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiSW52YWxp
ZCBwYWNrZXQgYnVmZmVyIG1heCBzaXplOiAiIDw8IGdyb3VwX25hbWU7CisgICAgcGFja2V0X2J1
ZmZlcl9tYXhfc2l6ZSA9IGtQYWNrZXRCdWZmZXJNYXhTaXplOworICB9CisKICAgcGFja2V0X2J1
ZmZlcl8gPSB2aWRlb19jb2Rpbmc6OlBhY2tldEJ1ZmZlcjo6Q3JlYXRlKAotICAgICAgY2xvY2tf
LCBrUGFja2V0QnVmZmVyU3RhcnRTaXplLCBrUGFja2V0QnVmZmVyTWF4U2l4ZSwgdGhpcyk7Ci0g
IHJlZmVyZW5jZV9maW5kZXJfLnJlc2V0KG5ldyB2aWRlb19jb2Rpbmc6OlJ0cEZyYW1lUmVmZXJl
bmNlRmluZGVyKHRoaXMpKTsKKyAgICAgIGNsb2NrXywga1BhY2tldEJ1ZmZlclN0YXJ0U2l6ZSwg
cGFja2V0X2J1ZmZlcl9tYXhfc2l6ZSwgdGhpcyk7CisgIHJlZmVyZW5jZV9maW5kZXJfID0KKyAg
ICAgIGFic2w6Om1ha2VfdW5pcXVlPHZpZGVvX2NvZGluZzo6UnRwRnJhbWVSZWZlcmVuY2VGaW5k
ZXI+KHRoaXMpOwogfQogCiBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyOjp+UnRwVmlkZW9TdHJlYW1S
ZWNlaXZlcigpIHsKQEAgLTIwMiwxNCArMjE2LDE1IEBAIGludDMyX3QgUnRwVmlkZW9TdHJlYW1S
ZWNlaXZlcjo6T25SZWNlaXZlZFBheWxvYWREYXRhKAogICAgIHNpemVfdCBwYXlsb2FkX3NpemUs
CiAgICAgY29uc3QgV2ViUnRjUlRQSGVhZGVyKiBydHBfaGVhZGVyKSB7CiAgIHJldHVybiBPblJl
Y2VpdmVkUGF5bG9hZERhdGEocGF5bG9hZF9kYXRhLCBwYXlsb2FkX3NpemUsIHJ0cF9oZWFkZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bnVsbG9wdCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bnVsbG9wdCwgZmFsc2UpOwogfQogCiBpbnQz
Ml90IFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6Ok9uUmVjZWl2ZWRQYXlsb2FkRGF0YSgKICAgICBj
b25zdCB1aW50OF90KiBwYXlsb2FkX2RhdGEsCiAgICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwKICAg
ICBjb25zdCBXZWJSdGNSVFBIZWFkZXIqIHJ0cF9oZWFkZXIsCi0gICAgY29uc3QgYWJzbDo6b3B0
aW9uYWw8UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvcj4mIGdlbmVyaWNfZGVzY3JpcHRvcikgewor
ICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I+JiBnZW5l
cmljX2Rlc2NyaXB0b3IsCisgICAgYm9vbCBpc19yZWNvdmVyZWQpIHsKICAgV2ViUnRjUlRQSGVh
ZGVyIHJ0cF9oZWFkZXJfd2l0aF9udHAgPSAqcnRwX2hlYWRlcjsKICAgcnRwX2hlYWRlcl93aXRo
X250cC5udHBfdGltZV9tcyA9CiAgICAgICBudHBfZXN0aW1hdG9yXy5Fc3RpbWF0ZShydHBfaGVh
ZGVyLT5oZWFkZXIudGltZXN0YW1wKTsKQEAgLTIyMSw3ICsyMzYsOCBAQCBpbnQzMl90IFJ0cFZp
ZGVvU3RyZWFtUmVjZWl2ZXI6Ok9uUmVjZWl2ZWRQYXlsb2FkRGF0YSgKICAgICAgICAgcnRwX2hl
YWRlci0+ZnJhbWVUeXBlID09IGtWaWRlb0ZyYW1lS2V5OwogCiAgICAgcGFja2V0LnRpbWVzTmFj
a2VkID0gbmFja19tb2R1bGVfLT5PblJlY2VpdmVkUGFja2V0KAotICAgICAgICBydHBfaGVhZGVy
LT5oZWFkZXIuc2VxdWVuY2VOdW1iZXIsIGlzX2tleWZyYW1lKTsKKyAgICAgICAgcnRwX2hlYWRl
ci0+aGVhZGVyLnNlcXVlbmNlTnVtYmVyLCBpc19rZXlmcmFtZSwgaXNfcmVjb3ZlcmVkKTsKKwog
ICB9IGVsc2UgewogICAgIHBhY2tldC50aW1lc05hY2tlZCA9IC0xOwogICB9CkBAIC0zMDIsNyAr
MzE4LDggQEAgdm9pZCBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyOjpPblJ0cFBhY2tldChjb25zdCBS
dHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgICAgICBsYXN0X3JlY2VpdmVkX3J0cF9zeXN0
ZW1fdGltZV9tc18gPSBub3dfbXM7CiAKICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBjc3Jj
cyA9IHBhY2tldC5Dc3JjcygpOwotICAgICAgY29udHJpYnV0aW5nX3NvdXJjZXNfLlVwZGF0ZShu
b3dfbXMsIGNzcmNzKTsKKyAgICAgIGNvbnRyaWJ1dGluZ19zb3VyY2VzXy5VcGRhdGUobm93X21z
LCBjc3JjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYXVkaW8gbGV2
ZWwgKi9hYnNsOjpudWxsb3B0KTsKICAgICB9CiAgICAgLy8gUGVyaW9kaWNhbGx5IGxvZyB0aGUg
UlRQIGhlYWRlciBvZiBpbmNvbWluZyBwYWNrZXRzLgogICAgIGlmIChub3dfbXMgLSBsYXN0X3Bh
Y2tldF9sb2dfbXNfID4ga1BhY2tldExvZ0ludGVydmFsTXMpIHsKQEAgLTM2MywxMCArMzgwLDYx
IEBAIGludDMyX3QgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6UmVzZW5kUGFja2V0cyhjb25zdCB1
aW50MTZfdCogc2VxdWVuY2VfbnVtYmVycywKIAogdm9pZCBSdHBWaWRlb1N0cmVhbVJlY2VpdmVy
OjpPblJlY2VpdmVkRnJhbWUoCiAgICAgc3RkOjp1bmlxdWVfcHRyPHZpZGVvX2NvZGluZzo6UnRw
RnJhbWVPYmplY3Q+IGZyYW1lKSB7CisgIC8vIFJlcXVlc3QgYSBrZXkgZnJhbWUgYXMgc29vbiBh
cyBwb3NzaWJsZS4KKyAgYm9vbCBrZXlfZnJhbWVfcmVxdWVzdGVkID0gZmFsc2U7CiAgIGlmICgh
aGFzX3JlY2VpdmVkX2ZyYW1lXykgewogICAgIGhhc19yZWNlaXZlZF9mcmFtZV8gPSB0cnVlOwot
ICAgIGlmIChmcmFtZS0+RnJhbWVUeXBlKCkgIT0ga1ZpZGVvRnJhbWVLZXkpCisgICAgaWYgKGZy
YW1lLT5GcmFtZVR5cGUoKSAhPSBrVmlkZW9GcmFtZUtleSkgeworICAgICAga2V5X2ZyYW1lX3Jl
cXVlc3RlZCA9IHRydWU7CiAgICAgICBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcl8tPlJlcXVlc3RL
ZXlGcmFtZSgpOworICAgIH0KKyAgfQorCisgIC8vIE9wdGlvbmFsbHkgYXR0ZW1wdCB0byBkZWNy
eXB0IHRoZSByYXcgdmlkZW8gZnJhbWUgaWYgaXQgd2FzIHByb3ZpZGVkLgorICBpZiAoZnJhbWVf
ZGVjcnlwdG9yXyAhPSBudWxscHRyKSB7CisgICAgLy8gV2hlbiB1c2luZyBlbmNyeXB0aW9uIHdl
IGV4cGVjdCB0aGUgZnJhbWUgdG8gaGF2ZSB0aGUgZ2VuZXJpYyBkZXNjcmlwdG9yLgorICAgIGFi
c2w6Om9wdGlvbmFsPFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I+IGRlc2NyaXB0b3IgPQorICAg
ICAgICBmcmFtZS0+R2V0R2VuZXJpY0ZyYW1lRGVzY3JpcHRvcigpOworICAgIGlmICghZGVzY3Jp
cHRvcikgeworICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIk5vIGdlbmVyaWMgZnJhbWUgZGVz
Y3JpcHRvciBmb3VuZCBkcm9wcGluZyBmcmFtZS4iOworICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIC8vIFJldHJpZXZlIHRoZSBiaXRzdHJlYW0gb2YgdGhlIGVuY3J5cHRlZCB2aWRlbyBmcmFt
ZS4KKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBlbmNyeXB0ZWRfZnJhbWVfYml0
c3RyZWFtKGZyYW1lLT5CdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zaXplKCkpOworICAgIC8vIFJldHJp
ZXZlIHRoZSBtYXhpbXVtIHBvc3NpYmxlIHNpemUgb2YgdGhlIGRlY3J5cHRlZCBwYXlsb2FkLgor
ICAgIGNvbnN0IHNpemVfdCBtYXhfcGxhaW50ZXh0X2J5dGVfc2l6ZSA9CisgICAgICAgIGZyYW1l
X2RlY3J5cHRvcl8tPkdldE1heFBsYWludGV4dEJ5dGVTaXplKGNyaWNrZXQ6Ok1FRElBX1RZUEVf
VklERU8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5zaXplKCkpOworICAgIFJUQ19DSEVDSyhtYXhfcGxhaW50ZXh0X2J5dGVfc2l6ZSA8
PSBmcmFtZS0+c2l6ZSgpKTsKKyAgICAvLyBQbGFjZSB0aGUgZGVjcnlwdGVkIGZyYW1lIGlubGlu
ZSBpbnRvIHRoZSBleGlzdGluZyBmcmFtZS4KKyAgICBydGM6OkFycmF5Vmlldzx1aW50OF90PiBp
bmxpbmVfZGVjcnlwdGVkX2JpdHN0cmVhbShmcmFtZS0+TXV0YWJsZUJ1ZmZlcigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9wbGFp
bnRleHRfYnl0ZV9zaXplKTsKKworICAgIC8vIEF0dGVtcHQgdG8gZGVjcnlwdCB0aGUgdmlkZW8g
ZnJhbWUuCisgICAgc2l6ZV90IGJ5dGVzX3dyaXR0ZW4gPSAwOworICAgIGlmIChmcmFtZV9kZWNy
eXB0b3JfLT5EZWNyeXB0KAorICAgICAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywg
Lypjc3Jjcz0qL3t9LAorICAgICAgICAgICAgLyphZGRpdGlvbmFsX2RhdGE9Ki9udWxscHRyLCBl
bmNyeXB0ZWRfZnJhbWVfYml0c3RyZWFtLAorICAgICAgICAgICAgaW5saW5lX2RlY3J5cHRlZF9i
aXRzdHJlYW0sICZieXRlc193cml0dGVuKSAhPSAwKSB7CisgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFoYXNfcmVjZWl2ZWRfZGVjcnlwdGVkX2ZyYW1lXyAmJiAha2V5X2ZyYW1lX3Jl
cXVlc3RlZCkgeworICAgICAgaGFzX3JlY2VpdmVkX2RlY3J5cHRlZF9mcmFtZV8gPSB0cnVlOwor
ICAgICAgaWYgKGZyYW1lLT5GcmFtZVR5cGUoKSAhPSBrVmlkZW9GcmFtZUtleSkgeworICAgICAg
ICBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcl8tPlJlcXVlc3RLZXlGcmFtZSgpOworICAgICAgfQor
ICAgIH0KKworICAgIFJUQ19DSEVDSyhieXRlc193cml0dGVuIDw9IG1heF9wbGFpbnRleHRfYnl0
ZV9zaXplKTsKKyAgICAvLyBVcGRhdGUgdGhlIGZyYW1lIHRvIGNvbnRhaW4ganVzdCB0aGUgd3Jp
dHRlbiBieXRlcy4KKyAgICBmcmFtZS0+U2V0TGVuZ3RoKGJ5dGVzX3dyaXR0ZW4pOworICB9IGVs
c2UgaWYgKGNvbmZpZ18uY3J5cHRvX29wdGlvbnMuc2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlw
dGlvbikgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZyYW1lIGRlY3J5cHRpb24gcmVx
dWlyZWQgYnV0IG5vdCBhdHRhY2hlZCB0byB0aGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzdHJlYW0uIERyb3BwaW5nICBmcmFtZS4iOworICAgIHJldHVybjsKICAgfQogCiAgIHJl
ZmVyZW5jZV9maW5kZXJfLT5NYW5hZ2VGcmFtZShzdGQ6Om1vdmUoZnJhbWUpKTsKQEAgLTQ1OSw4
ICs1MjcsNiBAQCB2b2lkIFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6OlJlY2VpdmVQYWNrZXQoY29u
c3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgewogICB3ZWJydGNfcnRwX2hlYWRlci52aWRl
b19oZWFkZXIoKS5jb250ZW50X3R5cGUgPSBWaWRlb0NvbnRlbnRUeXBlOjpVTlNQRUNJRklFRDsK
ICAgd2VicnRjX3J0cF9oZWFkZXIudmlkZW9faGVhZGVyKCkudmlkZW9fdGltaW5nLmZsYWdzID0K
ICAgICAgIFZpZGVvU2VuZFRpbWluZzo6a0ludmFsaWQ7Ci0gIHdlYnJ0Y19ydHBfaGVhZGVyLnZp
ZGVvX2hlYWRlcigpLnBsYXlvdXRfZGVsYXkubWluX21zID0gLTE7Ci0gIHdlYnJ0Y19ydHBfaGVh
ZGVyLnZpZGVvX2hlYWRlcigpLnBsYXlvdXRfZGVsYXkubWF4X21zID0gLTE7CiAgIHdlYnJ0Y19y
dHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLmlzX2xhc3RfcGFja2V0X2luX2ZyYW1lID0KICAgICAg
IHdlYnJ0Y19ydHBfaGVhZGVyLmhlYWRlci5tYXJrZXJCaXQ7CiAKQEAgLTQ4NiwxMiArNTUyLDIz
IEBAIHZvaWQgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6UmVjZWl2ZVBhY2tldChjb25zdCBSdHBQ
YWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgICAgICAgIHdlYnJ0Y19ydHBfaGVhZGVyLmhlYWRl
ci5tYXJrZXJCaXQgfHwKICAgICAgICAgKGdlbmVyaWNfZGVzY3JpcHRvcl93aXJlLT5MYXN0U3Vi
RnJhbWVJbkZyYW1lKCkgJiYKICAgICAgICAgIGdlbmVyaWNfZGVzY3JpcHRvcl93aXJlLT5MYXN0
UGFja2V0SW5TdWJGcmFtZSgpKTsKKworICAgIGlmIChnZW5lcmljX2Rlc2NyaXB0b3Jfd2lyZS0+
Rmlyc3RQYWNrZXRJblN1YkZyYW1lKCkpIHsKKyAgICAgIHdlYnJ0Y19ydHBfaGVhZGVyLmZyYW1l
VHlwZSA9CisgICAgICAgICAgZ2VuZXJpY19kZXNjcmlwdG9yX3dpcmUtPkZyYW1lRGVwZW5kZW5j
aWVzRGlmZnMoKS5lbXB0eSgpCisgICAgICAgICAgICAgID8ga1ZpZGVvRnJhbWVLZXkKKyAgICAg
ICAgICAgICAgOiBrVmlkZW9GcmFtZURlbHRhOworICAgIH0KKworICAgIHdlYnJ0Y19ydHBfaGVh
ZGVyLnZpZGVvX2hlYWRlcigpLndpZHRoID0gZ2VuZXJpY19kZXNjcmlwdG9yX3dpcmUtPldpZHRo
KCk7CisgICAgd2VicnRjX3J0cF9oZWFkZXIudmlkZW9faGVhZGVyKCkuaGVpZ2h0ID0gZ2VuZXJp
Y19kZXNjcmlwdG9yX3dpcmUtPkhlaWdodCgpOwogICB9IGVsc2UgewogICAgIGdlbmVyaWNfZGVz
Y3JpcHRvcl93aXJlLnJlc2V0KCk7CiAgIH0KIAogICBPblJlY2VpdmVkUGF5bG9hZERhdGEocGFy
c2VkX3BheWxvYWQucGF5bG9hZCwgcGFyc2VkX3BheWxvYWQucGF5bG9hZF9sZW5ndGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAmd2VicnRjX3J0cF9oZWFkZXIsIGdlbmVyaWNfZGVzY3JpcHRv
cl93aXJlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICZ3ZWJydGNfcnRwX2hlYWRlciwgZ2Vu
ZXJpY19kZXNjcmlwdG9yX3dpcmUsCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXQucmVj
b3ZlcmVkKCkpOwogfQogCiB2b2lkIFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6OlBhcnNlQW5kSGFu
ZGxlRW5jYXBzdWxhdGluZ0hlYWRlcigKQEAgLTUyMyw3ICs2MDAsOCBAQCB2b2lkIFJ0cFZpZGVv
U3RyZWFtUmVjZWl2ZXI6Ok5vdGlmeVJlY2VpdmVyT2ZFbXB0eVBhY2tldCh1aW50MTZfdCBzZXFf
bnVtKSB7CiAgIHJlZmVyZW5jZV9maW5kZXJfLT5QYWRkaW5nUmVjZWl2ZWQoc2VxX251bSk7CiAg
IHBhY2tldF9idWZmZXJfLT5QYWRkaW5nUmVjZWl2ZWQoc2VxX251bSk7CiAgIGlmIChuYWNrX21v
ZHVsZV8pIHsKLSAgICBuYWNrX21vZHVsZV8tPk9uUmVjZWl2ZWRQYWNrZXQoc2VxX251bSwgLyog
aXNfa2V5ZnJhbWUgPSAqLyBmYWxzZSk7CisgICAgbmFja19tb2R1bGVfLT5PblJlY2VpdmVkUGFj
a2V0KHNlcV9udW0sIC8qIGlzX2tleWZyYW1lID0gKi8gZmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIGlzIF9yZWNvdmVyZWQgPSAqLyBmYWxzZSk7CiAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlci5oCmlu
ZGV4IGNhNWQ3YTBhYmQ5NDI1ODE0N2IxZjZiOWIyYWFiYzU5YWRhNTUzYjAuLmEyMDA2ZDFiYjJh
MDg3MjQ2YTY4MGI2ZWVkMDU3ZTJkMjRhZjBiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1fcmVjZWl2
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyLmgKQEAgLTE5LDYgKzE5LDcgQEAKIAogI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKIAorI2luY2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVk
ZWNyeXB0b3JpbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2Nv
ZGVjLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfcGFja2V0X3NpbmtfaW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiY2FsbC9zeW5jYWJsZS5oIgpAQCAtNjcsNyArNjgsOCBAQCBjbGFzcyBSdHBWaWRlb1N0
cmVhbVJlY2VpdmVyIDogcHVibGljIFJlY292ZXJlZFBhY2tldFJlY2VpdmVyLAogICAgICAgUHJv
Y2Vzc1RocmVhZCogcHJvY2Vzc190aHJlYWQsCiAgICAgICBOYWNrU2VuZGVyKiBuYWNrX3NlbmRl
ciwKICAgICAgIEtleUZyYW1lUmVxdWVzdFNlbmRlcioga2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIs
Ci0gICAgICB2aWRlb19jb2Rpbmc6Ok9uQ29tcGxldGVGcmFtZUNhbGxiYWNrKiBjb21wbGV0ZV9m
cmFtZV9jYWxsYmFjayk7CisgICAgICB2aWRlb19jb2Rpbmc6Ok9uQ29tcGxldGVGcmFtZUNhbGxi
YWNrKiBjb21wbGV0ZV9mcmFtZV9jYWxsYmFjaywKKyAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxG
cmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yKTsKICAgflJ0cFZpZGVvU3Ry
ZWFtUmVjZWl2ZXIoKSBvdmVycmlkZTsKIAogICB2b2lkIEFkZFJlY2VpdmVDb2RlYyhjb25zdCBW
aWRlb0NvZGVjJiB2aWRlb19jb2RlYywKQEAgLTEwMiw3ICsxMDQsOCBAQCBjbGFzcyBSdHBWaWRl
b1N0cmVhbVJlY2VpdmVyIDogcHVibGljIFJlY292ZXJlZFBhY2tldFJlY2VpdmVyLAogICAgICAg
Y29uc3QgdWludDhfdCogcGF5bG9hZF9kYXRhLAogICAgICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwK
ICAgICAgIGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciogcnRwX2hlYWRlciwKLSAgICAgIGNvbnN0IGFi
c2w6Om9wdGlvbmFsPFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3I+JiBnZW5lcmljX2Rlc2NyaXB0
b3IpOworICAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRv
cj4mIGdlbmVyaWNfZGVzY3JpcHRvciwKKyAgICAgIGJvb2wgaXNfcmVjb3ZlcmVkKTsKIAogICAv
LyBJbXBsZW1lbnRzIFJlY292ZXJlZFBhY2tldFJlY2VpdmVyLgogICB2b2lkIE9uUmVjb3ZlcmVk
UGFja2V0KGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IHBhY2tldF9sZW5ndGgpIG92ZXJy
aWRlOwpAQCAtMjAzLDYgKzIwNiwxMSBAQCBjbGFzcyBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyIDog
cHVibGljIFJlY292ZXJlZFBhY2tldFJlY2VpdmVyLAogICAgICAgUlRDX0dVQVJERURfQlkocnRw
X3NvdXJjZXNfbG9ja18pOwogICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBsYXN0X3JlY2VpdmVk
X3J0cF9zeXN0ZW1fdGltZV9tc18KICAgICAgIFJUQ19HVUFSREVEX0JZKHJ0cF9zb3VyY2VzX2xv
Y2tfKTsKKworICAvLyBFMkVFIFZpZGVvIEZyYW1lIERlY3J5cHRvciAoT3B0aW9uYWwpCisgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9y
XzsKKyAgLy8gU2V0IHRvIHRydWUgb24gdGhlIGZpcnN0IHN1Y2Nlc3NzZnVsbHkgZGVjcnlwdGVk
IGZyYW1lLgorICBib29sIGhhc19yZWNlaXZlZF9kZWNyeXB0ZWRfZnJhbWVfID0gZmFsc2U7CiB9
OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVy
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlcl91bml0dGVzdC5jYwppbmRleCBlYzJiZjMz
NGU5YjZkMGU3OTg0ZmU4YzY2NTEwMDc0OWE0MTY5NjUzLi4xMGM1ZTdlZWJjZTJhZjFmY2IwY2Nj
OWM5ZjRlMjZmYWUzNWNlNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyX3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L3J0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXJfdW5pdHRlc3QuY2MKQEAgLTEzMyw3ICsxMzMsNyBA
QCBjbGFzcyBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKICAgICAgICAgJm1vY2tfdHJhbnNwb3J0XywgbnVsbHB0ciwgJnBhY2tldF9yb3V0ZXJfLCAm
Y29uZmlnXywKICAgICAgICAgcnRwX3JlY2VpdmVfc3RhdGlzdGljc18uZ2V0KCksIG51bGxwdHIs
IHByb2Nlc3NfdGhyZWFkXy5nZXQoKSwKICAgICAgICAgJm1vY2tfbmFja19zZW5kZXJfLCAmbW9j
a19rZXlfZnJhbWVfcmVxdWVzdF9zZW5kZXJfLAotICAgICAgICAmbW9ja19vbl9jb21wbGV0ZV9m
cmFtZV9jYWxsYmFja18pOworICAgICAgICAmbW9ja19vbl9jb21wbGV0ZV9mcmFtZV9jYWxsYmFj
a18sIG51bGxwdHIpOwogICB9CiAKICAgV2ViUnRjUlRQSGVhZGVyIEdldERlZmF1bHRQYWNrZXQo
KSB7CkBAIC01NjgsMTAgKzU2OCw4IEBAIFRFU1RfRihSdHBWaWRlb1N0cmVhbVJlY2VpdmVyVGVz
dCwgUGFyc2VHZW5lcmljRGVzY3JpcHRvclR3b1BhY2tldHMpIHsKICAgZmlyc3RfcGFja2V0X2Rl
c2NyaXB0b3IuU2V0Rmlyc3RTdWJGcmFtZUluRnJhbWUodHJ1ZSk7CiAgIGZpcnN0X3BhY2tldF9k
ZXNjcmlwdG9yLlNldExhc3RTdWJGcmFtZUluRnJhbWUodHJ1ZSk7CiAgIGZpcnN0X3BhY2tldF9k
ZXNjcmlwdG9yLlNldEZyYW1lSWQoMTAwKTsKLSAgZmlyc3RfcGFja2V0X2Rlc2NyaXB0b3IuU2V0
VGVtcG9yYWxMYXllcigxKTsKICAgZmlyc3RfcGFja2V0X2Rlc2NyaXB0b3IuU2V0U3BhdGlhbExh
eWVyc0JpdG1hc2soMSA8PCBrU3BhdGlhbEluZGV4KTsKLSAgZmlyc3RfcGFja2V0X2Rlc2NyaXB0
b3IuQWRkRnJhbWVEZXBlbmRlbmN5RGlmZig5MCk7Ci0gIGZpcnN0X3BhY2tldF9kZXNjcmlwdG9y
LkFkZEZyYW1lRGVwZW5kZW5jeURpZmYoODApOworICBmaXJzdF9wYWNrZXRfZGVzY3JpcHRvci5T
ZXRSZXNvbHV0aW9uKDQ4MCwgMzYwKTsKICAgRVhQRUNUX1RSVUUoZmlyc3RfcGFja2V0LlNldEV4
dGVuc2lvbjxSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uPigKICAgICAgIGZpcnN0
X3BhY2tldF9kZXNjcmlwdG9yKSk7CiAKQEAgLTYwNiwxMCArNjA0LDEwIEBAIFRFU1RfRihSdHBW
aWRlb1N0cmVhbVJlY2VpdmVyVGVzdCwgUGFyc2VHZW5lcmljRGVzY3JpcHRvclR3b1BhY2tldHMp
IHsKIAogICBFWFBFQ1RfQ0FMTChtb2NrX29uX2NvbXBsZXRlX2ZyYW1lX2NhbGxiYWNrXywgRG9P
bkNvbXBsZXRlRnJhbWUpCiAgICAgICAuV2lsbE9uY2UoSW52b2tlKFtrU3BhdGlhbEluZGV4XSh2
aWRlb19jb2Rpbmc6OkVuY29kZWRGcmFtZSogZnJhbWUpIHsKLSAgICAgICAgRVhQRUNUX0VRKGZy
YW1lLT5udW1fcmVmZXJlbmNlcywgMlUpOwotICAgICAgICBFWFBFQ1RfRVEoZnJhbWUtPnJlZmVy
ZW5jZXNbMF0sIGZyYW1lLT5pZC5waWN0dXJlX2lkIC0gOTApOwotICAgICAgICBFWFBFQ1RfRVEo
ZnJhbWUtPnJlZmVyZW5jZXNbMV0sIGZyYW1lLT5pZC5waWN0dXJlX2lkIC0gODApOworICAgICAg
ICBFWFBFQ1RfRVEoZnJhbWUtPm51bV9yZWZlcmVuY2VzLCAwVSk7CiAgICAgICAgIEVYUEVDVF9F
UShmcmFtZS0+aWQuc3BhdGlhbF9sYXllciwga1NwYXRpYWxJbmRleCk7CisgICAgICAgIEVYUEVD
VF9FUShmcmFtZS0+RW5jb2RlZEltYWdlKCkuX2VuY29kZWRXaWR0aCwgNDgwdSk7CisgICAgICAg
IEVYUEVDVF9FUShmcmFtZS0+RW5jb2RlZEltYWdlKCkuX2VuY29kZWRIZWlnaHQsIDM2MHUpOwog
ICAgICAgfSkpOwogCiAgIHJ0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXJfLT5PblJ0cFBhY2tldChz
ZWNvbmRfcGFja2V0KTsKQEAgLTYyOCw0ICs2MjYsMTMgQEAgVEVTVF9GKFJ0cFZpZGVvU3RyZWFt
UmVjZWl2ZXJUZXN0LCBSZXBlYXRlZFNlY29uZGFyeVNpbmtEaXNhbGxvd2VkKSB7CiB9CiAjZW5k
aWYKIAorLy8gSW5pdGlhbGl6YXRpb24gb2YgV2ViUnRjUlRQSGVhZGVyIGlzIGEgYml0IGNvbnZv
bHV0ZWQsIHdpdGggc29tZSBmaWVsZHMKKy8vIHplcm8taW5pdGlhbGl6ZWQuIFJ0cFZpZGVvU3Ry
ZWFtUmVjZWl2ZXIgZGVwZW5kcyBvbiBwcm9wZXIgZGVmYXVsdCB2YWx1ZXMgZm9yCisvLyB0aGUg
cGxheW91dCBkZWxheS4KK1RFU1QoV2ViUnRjUlRQSGVhZGVyLCBEZWZhdWx0UGxheW91dERlbGF5
SXNVbnNwZWNpZmllZCkgeworICBXZWJSdGNSVFBIZWFkZXIgd2VicnRjX3J0cF9oZWFkZXIgPSB7
fTsKKyAgRVhQRUNUX0VRKHdlYnJ0Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLnBsYXlvdXRf
ZGVsYXkubWluX21zLCAtMSk7CisgIEVYUEVDVF9FUSh3ZWJydGNfcnRwX2hlYWRlci52aWRlb19o
ZWFkZXIoKS5wbGF5b3V0X2RlbGF5Lm1heF9tcywgLTEpOworfQorCiB9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9zY3JlZW5zaGFyZV9sb29wYmFjay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NjcmVlbnNoYXJlX2xvb3BiYWNrLmNjCmluZGV4
IDFkNmU4N2U3MWZmNGJhOTJlNDdjYzc0ZDlhZThiMDIwYjNlMzllMDEuLjQ2OTY2NjY5MDg3MDdk
NDUwZTJhM2ZiM2ExN2U2MmEyMDYzNmNhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NjcmVlbnNoYXJlX2xvb3BiYWNrLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NjcmVl
bnNoYXJlX2xvb3BiYWNrLmNjCkBAIC0xMiw3ICsxMiw2IEBACiAKICNpbmNsdWRlICJydGNfYmFz
ZS9mbGFncy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9m
aWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJ0
ZXN0L2d0ZXN0LmgiCkBAIC0yMyw3MyArMjIsNzYgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1l
c3BhY2UgZmxhZ3MgewogCiAvLyBGbGFncyBjb21tb24gd2l0aCB2aWRlbyBsb29wYmFjaywgd2l0
aCBkaWZmZXJlbnQgZGVmYXVsdCB2YWx1ZXMuCi1ERUZJTkVfaW50KHdpZHRoLCAxODUwLCAiVmlk
ZW8gd2lkdGggKGNyb3BzIHNvdXJjZSkuIik7CitXRUJSVENfREVGSU5FX2ludCh3aWR0aCwgMTg1
MCwgIlZpZGVvIHdpZHRoIChjcm9wcyBzb3VyY2UpLiIpOwogc2l6ZV90IFdpZHRoKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihGTEFHX3dpZHRoKTsKIH0KIAotREVGSU5FX2ludCho
ZWlnaHQsIDExMTAsICJWaWRlbyBoZWlnaHQgKGNyb3BzIHNvdXJjZSkuIik7CitXRUJSVENfREVG
SU5FX2ludChoZWlnaHQsIDExMTAsICJWaWRlbyBoZWlnaHQgKGNyb3BzIHNvdXJjZSkuIik7CiBz
aXplX3QgSGVpZ2h0KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihGTEFHX2hlaWdo
dCk7CiB9CiAKLURFRklORV9pbnQoZnBzLCA1LCAiRnJhbWVzIHBlciBzZWNvbmQuIik7CitXRUJS
VENfREVGSU5FX2ludChmcHMsIDUsICJGcmFtZXMgcGVyIHNlY29uZC4iKTsKIGludCBGcHMoKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfZnBzKTsKIH0KIAotREVGSU5FX2ludCht
aW5fYml0cmF0ZSwgNTAsICJDYWxsIGFuZCBzdHJlYW0gbWluIGJpdHJhdGUgaW4ga2Jwcy4iKTsK
K1dFQlJUQ19ERUZJTkVfaW50KG1pbl9iaXRyYXRlLCA1MCwgIkNhbGwgYW5kIHN0cmVhbSBtaW4g
Yml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IE1pbkJpdHJhdGVLYnBzKCkgewogICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihGTEFHX21pbl9iaXRyYXRlKTsKIH0KIAotREVGSU5FX2ludChzdGFydF9i
aXRyYXRlLCAzMDAsICJDYWxsIHN0YXJ0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KHN0YXJ0X2JpdHJhdGUsIDMwMCwgIkNhbGwgc3RhcnQgYml0cmF0ZSBpbiBrYnBzLiIp
OwogaW50IFN0YXJ0Qml0cmF0ZUticHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZM
QUdfc3RhcnRfYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQodGFyZ2V0X2JpdHJhdGUsIDIwMCwg
IlN0cmVhbSB0YXJnZXQgYml0cmF0ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklORV9pbnQodGFy
Z2V0X2JpdHJhdGUsIDIwMCwgIlN0cmVhbSB0YXJnZXQgYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50
IFRhcmdldEJpdHJhdGVLYnBzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3Rh
cmdldF9iaXRyYXRlKTsKIH0KIAotREVGSU5FX2ludChtYXhfYml0cmF0ZSwgMTAwMCwgIkNhbGwg
YW5kIHN0cmVhbSBtYXggYml0cmF0ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklORV9pbnQobWF4
X2JpdHJhdGUsIDEwMDAsICJDYWxsIGFuZCBzdHJlYW0gbWF4IGJpdHJhdGUgaW4ga2Jwcy4iKTsK
IGludCBNYXhCaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19t
YXhfYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQobnVtX3RlbXBvcmFsX2xheWVycywgMiwgIk51
bWJlciBvZiB0ZW1wb3JhbCBsYXllcnMgdG8gdXNlLiIpOworV0VCUlRDX0RFRklORV9pbnQobnVt
X3RlbXBvcmFsX2xheWVycywgMiwgIk51bWJlciBvZiB0ZW1wb3JhbCBsYXllcnMgdG8gdXNlLiIp
OwogaW50IE51bVRlbXBvcmFsTGF5ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihG
TEFHX251bV90ZW1wb3JhbF9sYXllcnMpOwogfQogCiAvLyBGbGFncyBjb21tb24gd2l0aCB2aWRl
byBsb29wYmFjaywgd2l0aCBlcXVhbCBkZWZhdWx0IHZhbHVlcy4KLURFRklORV9zdHJpbmcoY29k
ZWMsICJWUDgiLCAiVmlkZW8gY29kZWMgdG8gdXNlLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmco
Y29kZWMsICJWUDgiLCAiVmlkZW8gY29kZWMgdG8gdXNlLiIpOwogc3RkOjpzdHJpbmcgQ29kZWMo
KSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19jb2RlYyk7CiB9CiAK
LURFRklORV9zdHJpbmcocnRjX2V2ZW50X2xvZ19uYW1lLAotICAgICAgICAgICAgICAiIiwKLSAg
ICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBydGMgZXZlbnQgbG9nLiBUd28gZmlsZXMgIgotICAg
ICAgICAgICAgICAid2l0aCBcIl9zZW5kXCIgYW5kIFwiX3JlY3ZcIiBzdWZmaXhlcyB3aWxsIGJl
IGNyZWF0ZWQuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhydGNfZXZlbnRfbG9nX25hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJGaWxlbmFtZSBm
b3IgcnRjIGV2ZW50IGxvZy4gVHdvIGZpbGVzICIKKyAgICAgICAgICAgICAgICAgICAgICJ3aXRo
IFwiX3NlbmRcIiBhbmQgXCJfcmVjdlwiIHN1ZmZpeGVzIHdpbGwgYmUgY3JlYXRlZC4iKTsKIHN0
ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nTmFtZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6
c3RyaW5nPihGTEFHX3J0Y19ldmVudF9sb2dfbmFtZSk7CiB9CiAKLURFRklORV9zdHJpbmcocnRw
X2R1bXBfbmFtZSwgIiIsICJGaWxlbmFtZSBmb3IgZHVtcGVkIHJlY2VpdmVkIFJUUCBzdHJlYW0u
Iik7CitXRUJSVENfREVGSU5FX3N0cmluZyhydHBfZHVtcF9uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiRmlsZW5hbWUgZm9yIGR1bXBlZCByZWNl
aXZlZCBSVFAgc3RyZWFtLiIpOwogc3RkOjpzdHJpbmcgUnRwRHVtcE5hbWUoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19ydHBfZHVtcF9uYW1lKTsKIH0KIAotREVG
SU5FX2ludChzZWxlY3RlZF90bCwKLSAgICAgICAgICAgLTEsCi0gICAgICAgICAgICJUZW1wb3Jh
bCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2FibGUgZmlsdGVyaW5nLiIpOwor
V0VCUlRDX0RFRklORV9pbnQoCisgICAgc2VsZWN0ZWRfdGwsCisgICAgLTEsCisgICAgIlRlbXBv
cmFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZS4gLTEgdG8gZGlzYWJsZSBmaWx0ZXJpbmcuIik7
CiBpbnQgU2VsZWN0ZWRUTCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zZWxl
Y3RlZF90bCk7CiB9CiAKLURFRklORV9pbnQoCitXRUJSVENfREVGSU5FX2ludCgKICAgICBkdXJh
dGlvbiwKICAgICAwLAogICAgICJEdXJhdGlvbiBvZiB0aGUgdGVzdCBpbiBzZWNvbmRzLiBJZiAw
LCByZW5kZXJlZCB3aWxsIGJlIHNob3duIGluc3RlYWQuIik7CkBAIC05Nyw3MSArOTksNzQgQEAg
aW50IER1cmF0aW9uU2VjcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19kdXJh
dGlvbik7CiB9CiAKLURFRklORV9zdHJpbmcob3V0cHV0X2ZpbGVuYW1lLCAiIiwgIlRhcmdldCBn
cmFwaCBkYXRhIGZpbGVuYW1lLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob3V0cHV0X2ZpbGVu
YW1lLCAiIiwgIlRhcmdldCBncmFwaCBkYXRhIGZpbGVuYW1lLiIpOwogc3RkOjpzdHJpbmcgT3V0
cHV0RmlsZW5hbWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19v
dXRwdXRfZmlsZW5hbWUpOwogfQogCi1ERUZJTkVfc3RyaW5nKGdyYXBoX3RpdGxlLAotICAgICAg
ICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIklmIGVtcHR5LCB0aXRsZSB3aWxsIGJlIGdlbmVy
YXRlZCBhdXRvbWF0aWNhbGx5LiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoZ3JhcGhfdGl0bGUs
CisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJJZiBlbXB0
eSwgdGl0bGUgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4iKTsKIHN0ZDo6c3RyaW5n
IEdyYXBoVGl0bGUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19n
cmFwaF90aXRsZSk7CiB9CiAKLURFRklORV9pbnQobG9zc19wZXJjZW50LCAwLCAiUGVyY2VudGFn
ZSBvZiBwYWNrZXRzIHJhbmRvbWx5IGxvc3QuIik7CitXRUJSVENfREVGSU5FX2ludChsb3NzX3Bl
cmNlbnQsIDAsICJQZXJjZW50YWdlIG9mIHBhY2tldHMgcmFuZG9tbHkgbG9zdC4iKTsKIGludCBM
b3NzUGVyY2VudCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19sb3NzX3BlcmNl
bnQpOwogfQogCi1ERUZJTkVfaW50KGxpbmtfY2FwYWNpdHksCi0gICAgICAgICAgIDAsCi0gICAg
ICAgICAgICJDYXBhY2l0eSAoa2Jwcykgb2YgdGhlIGZha2UgbGluay4gMCBtZWFucyBpbmZpbml0
ZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGxpbmtfY2FwYWNpdHksCisgICAgICAgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgICAgICAgIkNhcGFjaXR5IChrYnBzKSBvZiB0aGUgZmFrZSBsaW5r
LiAwIG1lYW5zIGluZmluaXRlLiIpOwogaW50IExpbmtDYXBhY2l0eUticHMoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbGlua19jYXBhY2l0eSk7CiB9CiAKLURFRklORV9pbnQo
cXVldWVfc2l6ZSwgMCwgIlNpemUgb2YgdGhlIGJvdHRsZW5lY2sgbGluayBxdWV1ZSBpbiBwYWNr
ZXRzLiIpOworV0VCUlRDX0RFRklORV9pbnQocXVldWVfc2l6ZSwKKyAgICAgICAgICAgICAgICAg
IDAsCisgICAgICAgICAgICAgICAgICAiU2l6ZSBvZiB0aGUgYm90dGxlbmVjayBsaW5rIHF1ZXVl
IGluIHBhY2tldHMuIik7CiBpbnQgUXVldWVTaXplKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50PihGTEFHX3F1ZXVlX3NpemUpOwogfQogCi1ERUZJTkVfaW50KGF2Z19wcm9wYWdhdGlvbl9k
ZWxheV9tcywKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkF2ZXJhZ2UgbGluayBwcm9wYWdh
dGlvbiBkZWxheSBpbiBtcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGF2Z19wcm9wYWdhdGlvbl9k
ZWxheV9tcywKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiQXZlcmFn
ZSBsaW5rIHByb3BhZ2F0aW9uIGRlbGF5IGluIG1zLiIpOwogaW50IEF2Z1Byb3BhZ2F0aW9uRGVs
YXlNcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19hdmdfcHJvcGFnYXRpb25f
ZGVsYXlfbXMpOwogfQogCi1ERUZJTkVfaW50KHN0ZF9wcm9wYWdhdGlvbl9kZWxheV9tcywKLSAg
ICAgICAgICAgMCwKLSAgICAgICAgICAgIkxpbmsgcHJvcGFnYXRpb24gZGVsYXkgc3RhbmRhcmQg
ZGV2aWF0aW9uIGluIG1zLiIpOworV0VCUlRDX0RFRklORV9pbnQoc3RkX3Byb3BhZ2F0aW9uX2Rl
bGF5X21zLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJMaW5rIHBy
b3BhZ2F0aW9uIGRlbGF5IHN0YW5kYXJkIGRldmlhdGlvbiBpbiBtcy4iKTsKIGludCBTdGRQcm9w
YWdhdGlvbkRlbGF5TXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc3RkX3By
b3BhZ2F0aW9uX2RlbGF5X21zKTsKIH0KIAotREVGSU5FX2ludChudW1fc3RyZWFtcywgMCwgIk51
bWJlciBvZiBzdHJlYW1zIHRvIHNob3cgb3IgYW5hbHl6ZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50
KG51bV9zdHJlYW1zLCAwLCAiTnVtYmVyIG9mIHN0cmVhbXMgdG8gc2hvdyBvciBhbmFseXplLiIp
OwogaW50IE51bVN0cmVhbXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbnVt
X3N0cmVhbXMpOwogfQogCi1ERUZJTkVfaW50KHNlbGVjdGVkX3N0cmVhbSwKLSAgICAgICAgICAg
MCwKLSAgICAgICAgICAgIklEIG9mIHRoZSBzdHJlYW0gdG8gc2hvdyBvciBhbmFseXplLiAiCi0g
ICAgICAgICAgICJTZXQgdG8gdGhlIG51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cgdGhlbSBhbGwu
Iik7CitXRUJSVENfREVGSU5FX2ludChzZWxlY3RlZF9zdHJlYW0sCisgICAgICAgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgICAgICAgIklEIG9mIHRoZSBzdHJlYW0gdG8gc2hvdyBvciBhbmFs
eXplLiAiCisgICAgICAgICAgICAgICAgICAiU2V0IHRvIHRoZSBudW1iZXIgb2Ygc3RyZWFtcyB0
byBzaG93IHRoZW0gYWxsLiIpOwogaW50IFNlbGVjdGVkU3RyZWFtKCkgewogICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihGTEFHX3NlbGVjdGVkX3N0cmVhbSk7CiB9CiAKLURFRklORV9pbnQobnVt
X3NwYXRpYWxfbGF5ZXJzLCAxLCAiTnVtYmVyIG9mIHNwYXRpYWwgbGF5ZXJzIHRvIHVzZS4iKTsK
K1dFQlJUQ19ERUZJTkVfaW50KG51bV9zcGF0aWFsX2xheWVycywgMSwgIk51bWJlciBvZiBzcGF0
aWFsIGxheWVycyB0byB1c2UuIik7CiBpbnQgTnVtU3BhdGlhbExheWVycygpIHsKICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oRkxBR19udW1fc3BhdGlhbF9sYXllcnMpOwogfQogCi1ERUZJTkVf
aW50KGludGVyX2xheWVyX3ByZWQsCi0gICAgICAgICAgIDAsCi0gICAgICAgICAgICJJbnRlci1s
YXllciBwcmVkaWN0aW9uIG1vZGUuICIKLSAgICAgICAgICAgIjAgLSBlbmFibGVkLCAxIC0gZGlz
YWJsZWQsIDIgLSBlbmFibGVkIG9ubHkgZm9yIGtleSBwaWN0dXJlcy4iKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KAorICAgIGludGVyX2xheWVyX3ByZWQsCisgICAgMCwKKyAgICAiSW50ZXItbGF5ZXIg
cHJlZGljdGlvbiBtb2RlLiAiCisgICAgIjAgLSBlbmFibGVkLCAxIC0gZGlzYWJsZWQsIDIgLSBl
bmFibGVkIG9ubHkgZm9yIGtleSBwaWN0dXJlcy4iKTsKIEludGVyTGF5ZXJQcmVkTW9kZSBJbnRl
ckxheWVyUHJlZCgpIHsKICAgaWYgKEZMQUdfaW50ZXJfbGF5ZXJfcHJlZCA9PSAwKSB7CiAgICAg
cmV0dXJuIEludGVyTGF5ZXJQcmVkTW9kZTo6a09uOwpAQCAtMTczLDU4ICsxNzgsNjUgQEAgSW50
ZXJMYXllclByZWRNb2RlIEludGVyTGF5ZXJQcmVkKCkgewogICB9CiB9CiAKLURFRklORV9pbnQo
c2VsZWN0ZWRfc2wsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiU3BhdGlhbCBsYXllciB0
byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2FibGUgZmlsdGVyaW5nLiIpOworV0VCUlRDX0RF
RklORV9pbnQoc2VsZWN0ZWRfc2wsCisgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAg
ICAgICAgICJTcGF0aWFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZS4gLTEgdG8gZGlzYWJsZSBm
aWx0ZXJpbmcuIik7CiBpbnQgU2VsZWN0ZWRTTCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oRkxBR19zZWxlY3RlZF9zbCk7CiB9CiAKLURFRklORV9zdHJpbmcoc3RyZWFtMCwKLSAgICAg
ICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2Ny
aWJpbmcgVmlkZW9TdHJlYW0gZm9yIHN0cmVhbSAjMC4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KAorICAgIHN0cmVhbTAsCisgICAgIiIsCisgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVz
Y3JpYmluZyBWaWRlb1N0cmVhbSBmb3Igc3RyZWFtICMwLiIpOwogc3RkOjpzdHJpbmcgU3RyZWFt
MCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3N0cmVhbTApOwog
fQogCi1ERUZJTkVfc3RyaW5nKHN0cmVhbTEsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAg
ICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZvciBz
dHJlYW0gIzEuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzdHJlYW0xLAorICAgICIi
LAorICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9y
IHN0cmVhbSAjMS4iKTsKIHN0ZDo6c3RyaW5nIFN0cmVhbTEoKSB7CiAgIHJldHVybiBzdGF0aWNf
Y2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zdHJlYW0xKTsKIH0KIAotREVGSU5FX3N0cmluZyhzbDAs
Ci0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVl
cyBkZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3IgbGF5ZXIgIzAuIik7CitXRUJSVENfREVGSU5F
X3N0cmluZygKKyAgICBzbDAsCisgICAgIiIsCisgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMg
ZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxheWVyICMwLiIpOwogc3RkOjpzdHJpbmcgU0ww
KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc2wwKTsKIH0KIAot
REVGSU5FX3N0cmluZyhzbDEsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiQ29t
bWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3IgbGF5ZXIgIzEu
Iik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzbDEsCisgICAgIiIsCisgICAgIkNvbW1h
IHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxheWVyICMxLiIp
Owogc3RkOjpzdHJpbmcgU0wxKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+
KEZMQUdfc2wxKTsKIH0KIAotREVGSU5FX3N0cmluZyhlbmNvZGVkX2ZyYW1lX3BhdGgsCi0gICAg
ICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiVGhlIGJhc2UgcGF0aCBmb3IgZW5jb2RlZCBm
cmFtZSBsb2dzLiBDcmVhdGVkIGZpbGVzIHdpbGwgaGF2ZSAiCi0gICAgICAgICAgICAgICJ0aGUg
Zm9ybSA8ZW5jb2RlZF9mcmFtZV9wYXRoPi48bj4uKHJlY3Z8c2VuZC48bT4pLml2ZiIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcoCisgICAgZW5jb2RlZF9mcmFtZV9wYXRoLAorICAgICIiLAorICAg
ICJUaGUgYmFzZSBwYXRoIGZvciBlbmNvZGVkIGZyYW1lIGxvZ3MuIENyZWF0ZWQgZmlsZXMgd2ls
bCBoYXZlICIKKyAgICAidGhlIGZvcm0gPGVuY29kZWRfZnJhbWVfcGF0aD4uPG4+LihyZWN2fHNl
bmQuPG0+KS5pdmYiKTsKIHN0ZDo6c3RyaW5nIEVuY29kZWRGcmFtZVBhdGgoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19lbmNvZGVkX2ZyYW1lX3BhdGgpOwogfQog
Ci1ERUZJTkVfYm9vbChsb2dzLCBmYWxzZSwgInByaW50IGxvZ3MgdG8gc3RkZXJyIik7CitXRUJS
VENfREVGSU5FX2Jvb2wobG9ncywgZmFsc2UsICJwcmludCBsb2dzIHRvIHN0ZGVyciIpOwogCi1E
RUZJTkVfYm9vbChzZW5kX3NpZGVfYndlLCB0cnVlLCAiVXNlIHNlbmQtc2lkZSBiYW5kd2lkdGgg
ZXN0aW1hdGlvbiIpOworV0VCUlRDX0RFRklORV9ib29sKHNlbmRfc2lkZV9id2UsIHRydWUsICJV
c2Ugc2VuZC1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0aW9uIik7CiAKLURFRklORV9ib29sKGdlbmVy
aWNfZGVzY3JpcHRvciwgZmFsc2UsICJVc2UgdGhlIGdlbmVyaWMgZnJhbWUgZGVzY3JpcHRvci4i
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbChnZW5lcmljX2Rlc2NyaXB0b3IsCisgICAgICAgICAgICAg
ICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlVzZSB0aGUgZ2VuZXJpYyBmcmFtZSBk
ZXNjcmlwdG9yLiIpOwogCi1ERUZJTkVfYm9vbChhbGxvd19yZW9yZGVyaW5nLCBmYWxzZSwgIkFs
bG93IHBhY2tldCByZW9yZGVyaW5nIHRvIG9jY3VyIik7CitXRUJSVENfREVGSU5FX2Jvb2woYWxs
b3dfcmVvcmRlcmluZywgZmFsc2UsICJBbGxvdyBwYWNrZXQgcmVvcmRlcmluZyB0byBvY2N1ciIp
OwogCi1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgZm9yY2VfZmll
bGR0cmlhbHMsCiAgICAgIiIsCiAgICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRh
bCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgpAQCAtMjMzLDEyICsyNDUsMTQg
QEAgREVGSU5FX3N0cmluZygKICAgICAidHJpYWxzIGFyZSBzZXBhcmF0ZWQgYnkgXCIvXCIiKTsK
IAogLy8gU2NyZWVuc2hhcmUtc3BlY2lmaWMgZmxhZ3MuCi1ERUZJTkVfaW50KG1pbl90cmFuc21p
dF9iaXRyYXRlLCA0MDAsICJNaW4gdHJhbnNtaXQgYml0cmF0ZSBpbmNsLiBwYWRkaW5nLiIpOwor
V0VCUlRDX0RFRklORV9pbnQobWluX3RyYW5zbWl0X2JpdHJhdGUsCisgICAgICAgICAgICAgICAg
ICA0MDAsCisgICAgICAgICAgICAgICAgICAiTWluIHRyYW5zbWl0IGJpdHJhdGUgaW5jbC4gcGFk
ZGluZy4iKTsKIGludCBNaW5UcmFuc21pdEJpdHJhdGVLYnBzKCkgewogICByZXR1cm4gRkxBR19t
aW5fdHJhbnNtaXRfYml0cmF0ZTsKIH0KIAotREVGSU5FX2Jvb2woCitXRUJSVENfREVGSU5FX2Jv
b2woCiAgICAgZ2VuZXJhdGVfc2xpZGVzLAogICAgIGZhbHNlLAogICAgICJXaGV0aGVyIHRvIHVz
ZSByYW5kb21seSBnZW5lcmF0ZWQgc2xpZGVzIG9yIHJlYWQgdGhlbSBmcm9tIGZpbGVzLiIpOwpA
QCAtMjQ2LDE0ICsyNjAsMTQgQEAgYm9vbCBHZW5lcmF0ZVNsaWRlcygpIHsKICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oRkxBR19nZW5lcmF0ZV9zbGlkZXMpOwogfQogCi1ERUZJTkVfaW50KHNs
aWRlX2NoYW5nZV9pbnRlcnZhbCwKLSAgICAgICAgICAgMTAsCi0gICAgICAgICAgICJJbnRlcnZh
bCAoaW4gc2Vjb25kcykgYmV0d2VlbiBzaW11bGF0ZWQgc2xpZGUgY2hhbmdlcy4iKTsKK1dFQlJU
Q19ERUZJTkVfaW50KHNsaWRlX2NoYW5nZV9pbnRlcnZhbCwKKyAgICAgICAgICAgICAgICAgIDEw
LAorICAgICAgICAgICAgICAgICAgIkludGVydmFsIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHNpbXVs
YXRlZCBzbGlkZSBjaGFuZ2VzLiIpOwogaW50IFNsaWRlQ2hhbmdlSW50ZXJ2YWwoKSB7CiAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2xpZGVfY2hhbmdlX2ludGVydmFsKTsKIH0KIAot
REVGSU5FX2ludCgKK1dFQlJUQ19ERUZJTkVfaW50KAogICAgIHNjcm9sbF9kdXJhdGlvbiwKICAg
ICAwLAogICAgICJEdXJhdGlvbiAoaW4gc2Vjb25kcykgZHVyaW5nIHdoaWNoIGEgc2xpZGUgd2ls
bCBiZSBzY3JvbGxlZCBpbnRvIHBsYWNlLiIpOwpAQCAtMjYxLDkgKzI3NSwxMCBAQCBpbnQgU2Ny
b2xsRHVyYXRpb24oKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2Nyb2xsX2R1
cmF0aW9uKTsKIH0KIAotREVGSU5FX3N0cmluZyhzbGlkZXMsCi0gICAgICAgICAgICAgICIiLAot
ICAgICAgICAgICAgICAiQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgKi55dXYgZmlsZXMgdG8gZGlz
cGxheSBhcyBzbGlkZXMuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzbGlkZXMsCisg
ICAgIiIsCisgICAgIkNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICoueXV2IGZpbGVzIHRvIGRpc3Bs
YXkgYXMgc2xpZGVzLiIpOwogc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IFNsaWRlcygpIHsKICAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHNsaWRlczsKICAgc3RkOjpzdHJpbmcgc2xpZGVzX2xp
c3QgPSBGTEFHX3NsaWRlczsKQEAgLTI3MSwxMiArMjg2LDEyIEBAIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiBTbGlkZXMoKSB7CiAgIHJldHVybiBzbGlkZXM7CiB9CiAKLURFRklORV9ib29sKGhl
bHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklORV9ib29sKGhl
bHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOwogCiB9ICAvLyBuYW1lc3BhY2UgZmxh
Z3MKIAogdm9pZCBMb29wYmFjaygpIHsKLSAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmln
IHBpcGVfY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIHBpcGVfY29uZmln
OwogICBwaXBlX2NvbmZpZy5sb3NzX3BlcmNlbnQgPSBmbGFnczo6TG9zc1BlcmNlbnQoKTsKICAg
cGlwZV9jb25maWcubGlua19jYXBhY2l0eV9rYnBzID0gZmxhZ3M6OkxpbmtDYXBhY2l0eUticHMo
KTsKICAgcGlwZV9jb25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMgPSBmbGFnczo6UXVldWVTaXpl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby9zZW5kX2RlbGF5X3N0YXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX2RlbGF5X3N0YXRzLmgKaW5kZXggMzMzNzg5OTA2OWEw
MDYwOTc2NjAwMzBiYTAwNWRlY2ZkYTAyYTU3Ni4uYjQ0NTE2YjI4NTU0MWFiYTA4MWYxMTBiMzE2
ZmUyMmRlOWMwYmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vc2VuZF9kZWxheV9zdGF0cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfZGVsYXlfc3RhdHMuaApAQCAt
MTYsNyArMTYsNiBAQAogI2luY2x1ZGUgPHNldD4KIAogI2luY2x1ZGUgImNhbGwvdmlkZW9fc2Vu
ZF9zdHJlYW0uaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9p
bmNsdWRlKQogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVy
cy9pbmNsdWRlL2Nsb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX3N0YXRpc3RpY3NfcHJveHkuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX3N0YXRpc3RpY3Nf
cHJveHkuY2MKaW5kZXggOTgzOWVkN2EzYjcwOTRiZGZmZTc0ZGU4MzRkMWY3NzMxNWVjYmFmYi4u
MjRlOTY0MTk0NzE0NTAzNzQ4ZjIwNTUzMzFjY2I1OTU5N2Y3ZDFiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0
aWNzX3Byb3h5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGljc19wcm94eS5jYwpAQCAtMTUsNyArMTUsNiBAQAogI2lu
Y2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaW5jbHVkZSAiY29tbW9uX3R5
cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVv
X2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKQEAgLTgyMywxMCAr
ODIyLDEzIEBAIHZvaWQgU2VuZFN0YXRpc3RpY3NQcm94eTo6VXBkYXRlRW5jb2RlckZhbGxiYWNr
U3RhdHMoCiAKICAgY29uc3QgaW50NjRfdCBub3dfbXMgPSBjbG9ja18tPlRpbWVJbk1pbGxpc2Vj
b25kcygpOwogICBib29sIGlzX2FjdGl2ZSA9IGZhbGxiYWNrX2luZm8tPmlzX2FjdGl2ZTsKLSAg
aWYgKGNvZGVjX2luZm8tPmNvZGVjX25hbWUgIT0gc3RhdHNfLmVuY29kZXJfaW1wbGVtZW50YXRp
b25fbmFtZSkgeworICBpZiAoZW5jb2Rlcl9jaGFuZ2VkXykgewogICAgIC8vIEltcGxlbWVudGF0
aW9uIGNoYW5nZWQuCi0gICAgaXNfYWN0aXZlID0gc3RyY21wKGNvZGVjX2luZm8tPmNvZGVjX25h
bWUsIGtWcDhTd0NvZGVjTmFtZSkgPT0gMDsKLSAgICBpZiAoIWlzX2FjdGl2ZSAmJiBzdGF0c18u
ZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbl9uYW1lICE9IGtWcDhTd0NvZGVjTmFtZSkgeworICAgIGNv
bnN0IGJvb2wgbGFzdF93YXNfdnA4X3NvZnR3YXJlID0KKyAgICAgICAgZW5jb2Rlcl9jaGFuZ2Vk
Xy0+cHJldmlvdXNfZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbiA9PSBrVnA4U3dDb2RlY05hbWU7Cisg
ICAgaXNfYWN0aXZlID0gZW5jb2Rlcl9jaGFuZ2VkXy0+bmV3X2VuY29kZXJfaW1wbGVtZW50YXRp
b24gPT0ga1ZwOFN3Q29kZWNOYW1lOworICAgIGVuY29kZXJfY2hhbmdlZF8ucmVzZXQoKTsKKyAg
ICBpZiAoIWlzX2FjdGl2ZSAmJiAhbGFzdF93YXNfdnA4X3NvZnR3YXJlKSB7CiAgICAgICAvLyBG
aXJzdCBvciBub3QgYSBWUDggU1cgY2hhbmdlLCB1cGRhdGUgc3RhdHMgb24gbmV4dCBjYWxsLgog
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg2NSw3ICs4NjcsNyBAQCB2b2lkIFNlbmRTdGF0aXN0
aWNzUHJveHk6OlVwZGF0ZUZhbGxiYWNrRGlzYWJsZWRTdGF0cygKICAgfQogCiAgIGlmICghSXNG
b3JjZWRGYWxsYmFja1Bvc3NpYmxlKGNvZGVjX2luZm8sIHNpbXVsY2FzdF9pbmRleCkgfHwKLSAg
ICAgIHN0cmNtcChjb2RlY19pbmZvLT5jb2RlY19uYW1lLCBrVnA4U3dDb2RlY05hbWUpID09IDAp
IHsKKyAgICAgIHN0YXRzXy5lbmNvZGVyX2ltcGxlbWVudGF0aW9uX25hbWUgPT0ga1ZwOFN3Q29k
ZWNOYW1lKSB7CiAgICAgdW1hX2NvbnRhaW5lcl8tPmZhbGxiYWNrX2luZm9fZGlzYWJsZWRfLmlz
X3Bvc3NpYmxlID0gZmFsc2U7CiAgICAgcmV0dXJuOwogICB9CkBAIC04OTUsMTMgKzg5Nyw5IEBA
IHZvaWQgU2VuZFN0YXRpc3RpY3NQcm94eTo6T25TZW5kRW5jb2RlZEltYWdlKAogICBydGM6OkNy
aXRTY29wZSBsb2NrKCZjcml0Xyk7CiAgICsrc3RhdHNfLmZyYW1lc19lbmNvZGVkOwogICBpZiAo
Y29kZWNfaW5mbykgewotICAgIGlmIChjb2RlY19pbmZvLT5jb2RlY19uYW1lKSB7Ci0gICAgICBV
cGRhdGVFbmNvZGVyRmFsbGJhY2tTdGF0cygKLSAgICAgICAgICBjb2RlY19pbmZvLAotICAgICAg
ICAgIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRXaWR0aCAqIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRI
ZWlnaHQsCi0gICAgICAgICAgc2ltdWxjYXN0X2lkeCk7Ci0gICAgICBzdGF0c18uZW5jb2Rlcl9p
bXBsZW1lbnRhdGlvbl9uYW1lID0gY29kZWNfaW5mby0+Y29kZWNfbmFtZTsKLSAgICB9CisgICAg
VXBkYXRlRW5jb2RlckZhbGxiYWNrU3RhdHMoCisgICAgICAgIGNvZGVjX2luZm8sIGVuY29kZWRf
aW1hZ2UuX2VuY29kZWRXaWR0aCAqIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRIZWlnaHQsCisgICAg
ICAgIHNpbXVsY2FzdF9pZHgpOwogICB9CiAKICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oc2lt
dWxjYXN0X2lkeCkgPj0gcnRwX2NvbmZpZ18uc3NyY3Muc2l6ZSgpKSB7CkBAIC05ODEsNiArOTc5
LDE0IEBAIHZvaWQgU2VuZFN0YXRpc3RpY3NQcm94eTo6T25TZW5kRW5jb2RlZEltYWdlKAogICB9
CiB9CiAKK3ZvaWQgU2VuZFN0YXRpc3RpY3NQcm94eTo6T25FbmNvZGVySW1wbGVtZW50YXRpb25D
aGFuZ2VkKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbXBsZW1lbnRhdGlvbl9uYW1lKSB7Cisg
IHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfKTsKKyAgZW5jb2Rlcl9jaGFuZ2VkXyA9IEVuY29k
ZXJDaGFuZ2VFdmVudHtzdGF0c18uZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbl9uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uX25hbWV9Owor
ICBzdGF0c18uZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbl9uYW1lID0gaW1wbGVtZW50YXRpb25fbmFt
ZTsKK30KKwogaW50IFNlbmRTdGF0aXN0aWNzUHJveHk6OkdldElucHV0RnJhbWVSYXRlKCkgY29u
c3QgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7CiAgIHJldHVybiByb3VuZCh1bWFf
Y29udGFpbmVyXy0+aW5wdXRfZnJhbWVfcmF0ZV90cmFja2VyXy5Db21wdXRlUmF0ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L3NlbmRfc3RhdGlzdGljc19wcm94eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmgKaW5kZXggYjU4NjhkMDg5
MDcyN2YwNTI2MGU5MDMwYjQ1NzA5MDlmZDJmNDE4Ni4uNzMxNmYzYjU1YWVjMGQzNGZkNWY1YWEw
OTJlMGYxOWNhODg5YmM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0aWNz
X3Byb3h5LmgKQEAgLTE4LDcgKzE4LDYgQEAKIAogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19z
dHJlYW1fZW5jb2Rlcl9vYnNlcnZlci5oIgogI2luY2x1ZGUgImNhbGwvdmlkZW9fc2VuZF9zdHJl
YW0uaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRl
KQogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19j
b2RpbmdfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgpA
QCAtNTMsNiArNTIsMTAgQEAgY2xhc3MgU2VuZFN0YXRpc3RpY3NQcm94eSA6IHB1YmxpYyBWaWRl
b1N0cmVhbUVuY29kZXJPYnNlcnZlciwKIAogICB2b2lkIE9uU2VuZEVuY29kZWRJbWFnZShjb25z
dCBFbmNvZGVkSW1hZ2UmIGVuY29kZWRfaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19pbmZvKSBvdmVycmlkZTsKKworICB2b2lk
IE9uRW5jb2RlckltcGxlbWVudGF0aW9uQ2hhbmdlZCgKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBpbXBsZW1lbnRhdGlvbl9uYW1lKSBvdmVycmlkZTsKKwogICAvLyBVc2VkIHRvIHVwZGF0ZSBp
bmNvbWluZyBmcmFtZSByYXRlLgogICB2b2lkIE9uSW5jb21pbmdGcmFtZShpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpIG92ZXJyaWRlOwogCkBAIC0yNDEsNiArMjQ0LDE0IEBAIGNsYXNzIFNlbmRTdGF0
aXN0aWNzUHJveHkgOiBwdWJsaWMgVmlkZW9TdHJlYW1FbmNvZGVyT2JzZXJ2ZXIsCiAKICAgYWJz
bDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9vdXRsaWVyX3RpbWVzdGFtcF8gUlRDX0dVQVJERURf
QlkoY3JpdF8pOwogCisgIHN0cnVjdCBFbmNvZGVyQ2hhbmdlRXZlbnQgeworICAgIHN0ZDo6c3Ry
aW5nIHByZXZpb3VzX2VuY29kZXJfaW1wbGVtZW50YXRpb247CisgICAgc3RkOjpzdHJpbmcgbmV3
X2VuY29kZXJfaW1wbGVtZW50YXRpb247CisgIH07CisgIC8vIFN0b3JlcyB0aGUgbGFzdCBjaGFu
Z2UgaW4gZW5jb2RlciBpbXBsZW1lbnRhdGlvbiBpbiBhbiBvcHRpb25hbCwgc28gdGhhdAorICAv
LyB0aGUgZXZlbnQgY2FuIGJlIGNvbnN1bWVkLgorICBhYnNsOjpvcHRpb25hbDxFbmNvZGVyQ2hh
bmdlRXZlbnQ+IGVuY29kZXJfY2hhbmdlZF87CisKICAgLy8gQ29udGFpbnMgc3RhdHMgdXNlZCBm
b3IgVU1BIGhpc3RvZ3JhbXMuIFRoZXNlIHN0YXRzIHdpbGwgYmUgcmVzZXQgaWYKICAgLy8gY29u
dGVudCB0eXBlIGNoYW5nZXMgYmV0d2VlbiByZWFsLXRpbWUgdmlkZW8gYW5kIHNjcmVlbnNoYXJl
LCBzaW5jZSB0aGVzZQogICAvLyB3aWxsIGJlIHJlcG9ydGVkIHNlcGFyYXRlbHkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5k
X3N0YXRpc3RpY3NfcHJveHlfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX3N0YXRpc3RpY3NfcHJveHlfdW5pdHRlc3QuY2MK
aW5kZXggM2QyN2M3MTJjNmI2YTM3MjdmOWY5OTNiZGIxNmQxYTMxMmRhZjQ0My4uNTg2ZDU3ZmIy
ODQ4ODBmZmYxNzMzZWM5ZTdjODIwNTViNDhmMzM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0aWNzX3Byb3h5
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGljc19wcm94eV91bml0dGVzdC5jYwpAQCAtMjE2NywxMyAr
MjE2Nyw5IEBAIFRFU1RfRihTZW5kU3RhdGlzdGljc1Byb3h5VGVzdCwgRmVjQml0cmF0ZU5vdFJl
cG9ydGVkV2hlbk5vdEVuYWJsZWQpIHsKIH0KIAogVEVTVF9GKFNlbmRTdGF0aXN0aWNzUHJveHlU
ZXN0LCBHZXRTdGF0c1JlcG9ydHNFbmNvZGVySW1wbGVtZW50YXRpb25OYW1lKSB7Ci0gIGNvbnN0
IGNoYXIqIGtOYW1lID0gImVuY29kZXJOYW1lIjsKLSAgRW5jb2RlZEltYWdlIGVuY29kZWRfaW1h
Z2U7Ci0gIENvZGVjU3BlY2lmaWNJbmZvIGNvZGVjX2luZm87Ci0gIGNvZGVjX2luZm8uY29kZWNf
bmFtZSA9IGtOYW1lOwotICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25TZW5kRW5jb2RlZEltYWdlKGVu
Y29kZWRfaW1hZ2UsICZjb2RlY19pbmZvKTsKLSAgRVhQRUNUX1NUUkVRKAotICAgICAga05hbWUs
IHN0YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygpLmVuY29kZXJfaW1wbGVtZW50YXRpb25fbmFt
ZS5jX3N0cigpKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga05hbWUgPSAiZW5jb2Rlck5hbWUiOwor
ICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25FbmNvZGVySW1wbGVtZW50YXRpb25DaGFuZ2VkKGtOYW1l
KTsKKyAgRVhQRUNUX0VRKGtOYW1lLCBzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5lbmNv
ZGVyX2ltcGxlbWVudGF0aW9uX25hbWUpOwogfQogCiBURVNUX0YoU2VuZFN0YXRpc3RpY3NQcm94
eVRlc3QsIFZwOVN2Y0xvd1NwYXRpYWxMYXllckRvZXNOb3RVcGRhdGVSZXNvbHV0aW9uKSB7CkBA
IC0yMjE5LDcgKzIyMTUsNiBAQCBjbGFzcyBGb3JjZWRGYWxsYmFja1Rlc3QgOiBwdWJsaWMgU2Vu
ZFN0YXRpc3RpY3NQcm94eVRlc3QgewogICAgICAgOiBTZW5kU3RhdGlzdGljc1Byb3h5VGVzdChm
aWVsZF90cmlhbHMpIHsKICAgICBjb2RlY19pbmZvXy5jb2RlY1R5cGUgPSBrVmlkZW9Db2RlY1ZQ
ODsKICAgICBjb2RlY19pbmZvXy5jb2RlY1NwZWNpZmljLlZQOC50ZW1wb3JhbElkeCA9IDA7Ci0g
ICAgY29kZWNfaW5mb18uY29kZWNfbmFtZSA9ICJmYWtlX2NvZGVjIjsKICAgICBlbmNvZGVkX2lt
YWdlXy5fZW5jb2RlZFdpZHRoID0ga1dpZHRoOwogICAgIGVuY29kZWRfaW1hZ2VfLl9lbmNvZGVk
SGVpZ2h0ID0ga0hlaWdodDsKICAgICBlbmNvZGVkX2ltYWdlXy5TZXRTcGF0aWFsSW5kZXgoMCk7
CkBAIC0yMjI5LDYgKzIyMjQsOCBAQCBjbGFzcyBGb3JjZWRGYWxsYmFja1Rlc3QgOiBwdWJsaWMg
U2VuZFN0YXRpc3RpY3NQcm94eVRlc3QgewogCiAgcHJvdGVjdGVkOgogICB2b2lkIEluc2VydEVu
Y29kZWRGcmFtZXMoaW50IG51bV9mcmFtZXMsIGludCBpbnRlcnZhbF9tcykgeworICAgIHN0YXRp
c3RpY3NfcHJveHlfLT5PbkVuY29kZXJJbXBsZW1lbnRhdGlvbkNoYW5nZWQoY29kZWNfbmFtZV8p
OworCiAgICAgLy8gRmlyc3QgZnJhbWUgaXMgbm90IHVwZGF0aW5nIHN0YXRzLCBpbnNlcnQgaW5p
dGlhbCBmcmFtZS4KICAgICBpZiAoc3RhdGlzdGljc19wcm94eV8tPkdldFN0YXRzKCkuZnJhbWVz
X2VuY29kZWQgPT0gMCkgewogICAgICAgc3RhdGlzdGljc19wcm94eV8tPk9uU2VuZEVuY29kZWRJ
bWFnZShlbmNvZGVkX2ltYWdlXywgJmNvZGVjX2luZm9fKTsKQEAgLTIyNDMsNiArMjI0MCw3IEBA
IGNsYXNzIEZvcmNlZEZhbGxiYWNrVGVzdCA6IHB1YmxpYyBTZW5kU3RhdGlzdGljc1Byb3h5VGVz
dCB7CiAKICAgRW5jb2RlZEltYWdlIGVuY29kZWRfaW1hZ2VfOwogICBDb2RlY1NwZWNpZmljSW5m
byBjb2RlY19pbmZvXzsKKyAgc3RkOjpzdHJpbmcgY29kZWNfbmFtZV87CiAgIGNvbnN0IHN0ZDo6
c3RyaW5nIGtQcmVmaXggPSAiV2ViUlRDLlZpZGVvLkVuY29kZXIuRm9yY2VkU3ciOwogICBjb25z
dCBpbnQga0ZyYW1lSW50ZXJ2YWxNcyA9IDEwMDA7CiAgIGNvbnN0IGludCBrTWluRnJhbWVzID0g
MjA7ICAvLyBNaW4gcnVuIHRpbWUgMjAgc2VjLgpAQCAtMjMyMSw3ICsyMzE5LDcgQEAgVEVTVF9G
KEZvcmNlZEZhbGxiYWNrRW5hYmxlZCwgRW50ZXJlZExvd1Jlc29sdXRpb25Ob3RTZXRJZk5vdExp
YnZweCkgewogfQogCiBURVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFibGVkLCBFbnRlcmVkTG93UmVz
b2x1dGlvblNldElmTGlidnB4KSB7Ci0gIGNvZGVjX2luZm9fLmNvZGVjX25hbWUgPSAibGlidnB4
IjsKKyAgY29kZWNfbmFtZV8gPSAibGlidnB4IjsKICAgSW5zZXJ0RW5jb2RlZEZyYW1lcygxLCBr
RnJhbWVJbnRlcnZhbE1zKTsKICAgRVhQRUNUX1RSVUUoc3RhdGlzdGljc19wcm94eV8tPkdldFN0
YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwogfQpAQCAtMjMzMyw3ICsyMzMxLDcg
QEAgVEVTVF9GKEZvcmNlZEZhbGxiYWNrRGlzYWJsZWQsIEVudGVyZWRMb3dSZXNvbHV0aW9uTm90
U2V0SWZBYm92ZU1heFBpeGVscykgewogfQogCiBURVNUX0YoRm9yY2VkRmFsbGJhY2tEaXNhYmxl
ZCwgRW50ZXJlZExvd1Jlc29sdXRpb25Ob3RTZXRJZkxpYnZweCkgewotICBjb2RlY19pbmZvXy5j
b2RlY19uYW1lID0gImxpYnZweCI7CisgIGNvZGVjX25hbWVfID0gImxpYnZweCI7CiAgIEluc2Vy
dEVuY29kZWRGcmFtZXMoMSwga0ZyYW1lSW50ZXJ2YWxNcyk7CiAgIEVYUEVDVF9GQUxTRShzdGF0
aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7CiB9
CkBAIC0yMzUxLDcgKzIzNDksNyBAQCBURVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFibGVkLCBPbmVG
YWxsYmFja0V2ZW50KSB7CiAgIEVYUEVDVF9GQUxTRShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3Rh
dHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7CiAgIEluc2VydEVuY29kZWRGcmFtZXMo
MTUsIDEwMDApOwogICBFWFBFQ1RfRkFMU0Uoc3RhdGlzdGljc19wcm94eV8tPkdldFN0YXRzKCku
aGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwotICBjb2RlY19pbmZvXy5jb2RlY19uYW1lID0g
ImxpYnZweCI7CisgIGNvZGVjX25hbWVfID0gImxpYnZweCI7CiAgIEluc2VydEVuY29kZWRGcmFt
ZXMoNSwgMTAwMCk7CiAgIEVYUEVDVF9UUlVFKHN0YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygp
Lmhhc19lbnRlcmVkX2xvd19yZXNvbHV0aW9uKTsKIApAQCAtMjM2OSwxOCArMjM2NywxOCBAQCBU
RVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFibGVkLCBUaHJlZUZhbGxiYWNrRXZlbnRzKSB7CiAgIC8v
IFRocmVlIGNoYW5nZXMuIFZpZGVvOiA2MDAwMCBtcywgZmFsbGJhY2s6IDE1MDAwIG1zICgyNSUp
LgogICBJbnNlcnRFbmNvZGVkRnJhbWVzKDEwLCAxMDAwKTsKICAgRVhQRUNUX0ZBTFNFKHN0YXRp
c3RpY3NfcHJveHlfLT5HZXRTdGF0cygpLmhhc19lbnRlcmVkX2xvd19yZXNvbHV0aW9uKTsKLSAg
Y29kZWNfaW5mb18uY29kZWNfbmFtZSA9ICJsaWJ2cHgiOworICBjb2RlY19uYW1lXyA9ICJsaWJ2
cHgiOwogICBJbnNlcnRFbmNvZGVkRnJhbWVzKDE1LCA1MDApOwogICBFWFBFQ1RfVFJVRShzdGF0
aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7Ci0g
IGNvZGVjX2luZm9fLmNvZGVjX25hbWUgPSAibm90bGlidnB4IjsKKyAgY29kZWNfbmFtZV8gPSAi
bm90bGlidnB4IjsKICAgSW5zZXJ0RW5jb2RlZEZyYW1lcygyMCwgMTAwMCk7CiAgIEluc2VydEVu
Y29kZWRGcmFtZXMoMywga01heEZyYW1lRGlmZk1zKTsgIC8vIFNob3VsZCBub3QgYmUgaW5jbHVk
ZWQuCiAgIEluc2VydEVuY29kZWRGcmFtZXMoMTAsIDEwMDApOwogICBFWFBFQ1RfVFJVRShzdGF0
aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7Ci0g
IGNvZGVjX2luZm9fLmNvZGVjX25hbWUgPSAibm90bGlidnB4MiI7CisgIGNvZGVjX25hbWVfID0g
Im5vdGxpYnZweDIiOwogICBJbnNlcnRFbmNvZGVkRnJhbWVzKDEwLCA1MDApOwogICBFWFBFQ1Rf
VFJVRShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1
dGlvbik7Ci0gIGNvZGVjX2luZm9fLmNvZGVjX25hbWUgPSAibGlidnB4IjsKKyAgY29kZWNfbmFt
ZV8gPSAibGlidnB4IjsKICAgSW5zZXJ0RW5jb2RlZEZyYW1lcygxNSwgNTAwKTsKICAgRVhQRUNU
X1RSVUUoc3RhdGlzdGljc19wcm94eV8tPkdldFN0YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29s
dXRpb24pOwogCkBAIC0yMzkzLDcgKzIzOTEsNyBAQCBURVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFi
bGVkLCBUaHJlZUZhbGxiYWNrRXZlbnRzKSB7CiAKIFRFU1RfRihGb3JjZWRGYWxsYmFja0VuYWJs
ZWQsIE5vRmFsbGJhY2tJZkFib3ZlTWF4UGl4ZWxzKSB7CiAgIGVuY29kZWRfaW1hZ2VfLl9lbmNv
ZGVkV2lkdGggPSBrV2lkdGggKyAxOwotICBjb2RlY19pbmZvXy5jb2RlY19uYW1lID0gImxpYnZw
eCI7CisgIGNvZGVjX25hbWVfID0gImxpYnZweCI7CiAgIEluc2VydEVuY29kZWRGcmFtZXMoa01p
bkZyYW1lcywga0ZyYW1lSW50ZXJ2YWxNcyk7CiAKICAgRVhQRUNUX0ZBTFNFKHN0YXRpc3RpY3Nf
cHJveHlfLT5HZXRTdGF0cygpLmhhc19lbnRlcmVkX2xvd19yZXNvbHV0aW9uKTsKQEAgLTI0MDQs
NyArMjQwMiw3IEBAIFRFU1RfRihGb3JjZWRGYWxsYmFja0VuYWJsZWQsIE5vRmFsbGJhY2tJZkFi
b3ZlTWF4UGl4ZWxzKSB7CiAKIFRFU1RfRihGb3JjZWRGYWxsYmFja0VuYWJsZWQsIEZhbGxiYWNr
SWZBdE1heFBpeGVscykgewogICBlbmNvZGVkX2ltYWdlXy5fZW5jb2RlZFdpZHRoID0ga1dpZHRo
OwotICBjb2RlY19pbmZvXy5jb2RlY19uYW1lID0gImxpYnZweCI7CisgIGNvZGVjX25hbWVfID0g
ImxpYnZweCI7CiAgIEluc2VydEVuY29kZWRGcmFtZXMoa01pbkZyYW1lcywga0ZyYW1lSW50ZXJ2
YWxNcyk7CiAKICAgRVhQRUNUX1RSVUUoc3RhdGlzdGljc19wcm94eV8tPkdldFN0YXRzKCkuaGFz
X2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc3ZfbG9vcGJhY2suY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zdl9sb29wYmFjay5jYwppbmRl
eCBmZDcyYzk5OTEyNGQxNTVhNWU0MDRhOWQ2YzIyNjI0MTQ5MTE4ZDFiLi4xZmY0OTU2Y2EyOTUw
Y2ViZjE3OTcyMzA0NGQ5YWVkMTAwM2M5NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zdl9sb29wYmFjay5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zdl9sb29wYmFjay5j
YwpAQCAtMTIsNyArMTIsNiBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvZmxhZ3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2Rl
LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKICNp
bmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgpAQCAt
MzQsNzMgKzMzLDc5IEBAIEludGVyTGF5ZXJQcmVkTW9kZSBJbnRUb0ludGVyTGF5ZXJQcmVkTW9k
ZShpbnQgaW50ZXJfbGF5ZXJfcHJlZCkgewogfQogCiAvLyBGbGFncyBmb3IgdmlkZW8uCi1ERUZJ
TkVfaW50KHZ3aWR0aCwgNjQwLCAiVmlkZW8gd2lkdGguIik7CitXRUJSVENfREVGSU5FX2ludCh2
d2lkdGgsIDY0MCwgIlZpZGVvIHdpZHRoLiIpOwogc2l6ZV90IFZpZGVvV2lkdGgoKSB7CiAgIHJl
dHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdfdndpZHRoKTsKIH0KIAotREVGSU5FX2ludCh2
aGVpZ2h0LCA0ODAsICJWaWRlbyBoZWlnaHQuIik7CitXRUJSVENfREVGSU5FX2ludCh2aGVpZ2h0
LCA0ODAsICJWaWRlbyBoZWlnaHQuIik7CiBzaXplX3QgVmlkZW9IZWlnaHQoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdfdmhlaWdodCk7CiB9CiAKLURFRklORV9pbnQodmZw
cywgMzAsICJWaWRlbyBmcmFtZXMgcGVyIHNlY29uZC4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZm
cHMsIDMwLCAiVmlkZW8gZnJhbWVzIHBlciBzZWNvbmQuIik7CiBpbnQgVmlkZW9GcHMoKSB7CiAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfdmZwcyk7CiB9CiAKLURFRklORV9pbnQoY2Fw
dHVyZV9kZXZpY2VfaW5kZXgsCi0gICAgICAgICAgIDAsCi0gICAgICAgICAgICJDYXB0dXJlIGRl
dmljZSB0byBzZWxlY3QgZm9yIHZpZGVvIHN0cmVhbSIpOworV0VCUlRDX0RFRklORV9pbnQoY2Fw
dHVyZV9kZXZpY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAg
ICAgIkNhcHR1cmUgZGV2aWNlIHRvIHNlbGVjdCBmb3IgdmlkZW8gc3RyZWFtIik7CiBzaXplX3Qg
R2V0Q2FwdHVyZURldmljZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oRkxBR19j
YXB0dXJlX2RldmljZV9pbmRleCk7CiB9CiAKLURFRklORV9pbnQodnRhcmdldF9iaXRyYXRlLCA0
MDAsICJWaWRlbyBzdHJlYW0gdGFyZ2V0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KHZ0YXJnZXRfYml0cmF0ZSwgNDAwLCAiVmlkZW8gc3RyZWFtIHRhcmdldCBiaXRyYXRl
IGluIGticHMuIik7CiBpbnQgVmlkZW9UYXJnZXRCaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oRkxBR192dGFyZ2V0X2JpdHJhdGUpOwogfQogCi1ERUZJTkVfaW50KHZt
aW5fYml0cmF0ZSwgMTAwLCAiVmlkZW8gc3RyZWFtIG1pbiBiaXRyYXRlIGluIGticHMuIik7CitX
RUJSVENfREVGSU5FX2ludCh2bWluX2JpdHJhdGUsIDEwMCwgIlZpZGVvIHN0cmVhbSBtaW4gYml0
cmF0ZSBpbiBrYnBzLiIpOwogaW50IFZpZGVvTWluQml0cmF0ZUticHMoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KEZMQUdfdm1pbl9iaXRyYXRlKTsKIH0KIAotREVGSU5FX2ludCh2bWF4
X2JpdHJhdGUsIDIwMDAsICJWaWRlbyBzdHJlYW0gbWF4IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dF
QlJUQ19ERUZJTkVfaW50KHZtYXhfYml0cmF0ZSwgMjAwMCwgIlZpZGVvIHN0cmVhbSBtYXggYml0
cmF0ZSBpbiBrYnBzLiIpOwogaW50IFZpZGVvTWF4Qml0cmF0ZUticHMoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KEZMQUdfdm1heF9iaXRyYXRlKTsKIH0KIAotREVGSU5FX2Jvb2woc3Vz
cGVuZF9iZWxvd19taW5fYml0cmF0ZSwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAg
IlN1c3BlbmRzIHZpZGVvIGJlbG93IHRoZSBjb25maWd1cmVkIG1pbiBiaXRyYXRlLiIpOworV0VC
UlRDX0RFRklORV9ib29sKHN1c3BlbmRfYmVsb3dfbWluX2JpdHJhdGUsCisgICAgICAgICAgICAg
ICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlN1c3BlbmRzIHZpZGVvIGJlbG93IHRo
ZSBjb25maWd1cmVkIG1pbiBiaXRyYXRlLiIpOwogCi1ERUZJTkVfaW50KHZudW1fdGVtcG9yYWxf
bGF5ZXJzLAotICAgICAgICAgICAxLAotICAgICAgICAgICAiTnVtYmVyIG9mIHRlbXBvcmFsIGxh
eWVycyBmb3IgdmlkZW8uIFNldCB0byAxLTQgdG8gb3ZlcnJpZGUuIik7CitXRUJSVENfREVGSU5F
X2ludCgKKyAgICB2bnVtX3RlbXBvcmFsX2xheWVycywKKyAgICAxLAorICAgICJOdW1iZXIgb2Yg
dGVtcG9yYWwgbGF5ZXJzIGZvciB2aWRlby4gU2V0IHRvIDEtNCB0byBvdmVycmlkZS4iKTsKIGlu
dCBWaWRlb051bVRlbXBvcmFsTGF5ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihG
TEFHX3ZudW1fdGVtcG9yYWxfbGF5ZXJzKTsKIH0KIAotREVGSU5FX2ludCh2bnVtX3N0cmVhbXMs
IDAsICJOdW1iZXIgb2YgdmlkZW8gc3RyZWFtcyB0byBzaG93IG9yIGFuYWx5emUuIik7CitXRUJS
VENfREVGSU5FX2ludCh2bnVtX3N0cmVhbXMsCisgICAgICAgICAgICAgICAgICAwLAorICAgICAg
ICAgICAgICAgICAgIk51bWJlciBvZiB2aWRlbyBzdHJlYW1zIHRvIHNob3cgb3IgYW5hbHl6ZS4i
KTsKIGludCBWaWRlb051bVN0cmVhbXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZM
QUdfdm51bV9zdHJlYW1zKTsKIH0KIAotREVGSU5FX2ludCh2bnVtX3NwYXRpYWxfbGF5ZXJzLCAx
LCAiTnVtYmVyIG9mIHZpZGVvIHNwYXRpYWwgbGF5ZXJzIHRvIHVzZS4iKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KHZudW1fc3BhdGlhbF9sYXllcnMsCisgICAgICAgICAgICAgICAgICAxLAorICAgICAg
ICAgICAgICAgICAgIk51bWJlciBvZiB2aWRlbyBzcGF0aWFsIGxheWVycyB0byB1c2UuIik7CiBp
bnQgVmlkZW9OdW1TcGF0aWFsTGF5ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihG
TEFHX3ZudW1fc3BhdGlhbF9sYXllcnMpOwogfQogCi1ERUZJTkVfaW50KHZpbnRlcl9sYXllcl9w
cmVkLAotICAgICAgICAgICAyLAotICAgICAgICAgICAiVmlkZW8gaW50ZXItbGF5ZXIgcHJlZGlj
dGlvbiBtb2RlLiAiCi0gICAgICAgICAgICIwIC0gZW5hYmxlZCwgMSAtIGRpc2FibGVkLCAyIC0g
ZW5hYmxlZCBvbmx5IGZvciBrZXkgcGljdHVyZXMuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAg
ICB2aW50ZXJfbGF5ZXJfcHJlZCwKKyAgICAyLAorICAgICJWaWRlbyBpbnRlci1sYXllciBwcmVk
aWN0aW9uIG1vZGUuICIKKyAgICAiMCAtIGVuYWJsZWQsIDEgLSBkaXNhYmxlZCwgMiAtIGVuYWJs
ZWQgb25seSBmb3Iga2V5IHBpY3R1cmVzLiIpOwogSW50ZXJMYXllclByZWRNb2RlIFZpZGVvSW50
ZXJMYXllclByZWQoKSB7CiAgIHJldHVybiBJbnRUb0ludGVyTGF5ZXJQcmVkTW9kZShGTEFHX3Zp
bnRlcl9sYXllcl9wcmVkKTsKIH0KIAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKAogICAgIHZzdHJlYW0wLAogICAgICIiLAogICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVz
IGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHZpZGVvIHN0cmVhbSAjMC4iKTsKQEAgLTEwOCw3
ICsxMTMsNyBAQCBzdGQ6OnN0cmluZyBWaWRlb1N0cmVhbTAoKSB7CiAgIHJldHVybiBzdGF0aWNf
Y2FzdDxzdGQ6OnN0cmluZz4oRkxBR192c3RyZWFtMCk7CiB9CiAKLURFRklORV9zdHJpbmcoCitX
RUJSVENfREVGSU5FX3N0cmluZygKICAgICB2c3RyZWFtMSwKICAgICAiIiwKICAgICAiQ29tbWEg
c2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZvciB2aWRlbyBzdHJlYW0g
IzEuIik7CkBAIC0xMTYsNyArMTIxLDcgQEAgc3RkOjpzdHJpbmcgVmlkZW9TdHJlYW0xKCkgewog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfdnN0cmVhbTEpOwogfQogCi1E
RUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgdnNsMCwKICAgICAiIiwK
ICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3Ig
dmlkZW8gbGF5ZXIgIzAuIik7CkBAIC0xMjQsNyArMTI5LDcgQEAgc3RkOjpzdHJpbmcgVmlkZW9T
TDAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR192c2wwKTsKIH0K
IAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIHZzbDEsCiAgICAg
IiIsCiAgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIg
Zm9yIHZpZGVvIGxheWVyICMxLiIpOwpAQCAtMTMyLDk4ICsxMzcsMTA1IEBAIHN0ZDo6c3RyaW5n
IFZpZGVvU0wxKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfdnNs
MSk7CiB9CiAKLURFRklORV9pbnQodnNlbGVjdGVkX3RsLAotICAgICAgICAgICAtMSwKLSAgICAg
ICAgICAgIlRlbXBvcmFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUu
IC0xIHRvIGRpc2FibGUgIgotICAgICAgICAgICAiZmlsdGVyaW5nLiIpOworV0VCUlRDX0RFRklO
RV9pbnQoCisgICAgdnNlbGVjdGVkX3RsLAorICAgIC0xLAorICAgICJUZW1wb3JhbCBsYXllciB0
byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNoYXJlLiAtMSB0byBkaXNhYmxlICIKKyAgICAi
ZmlsdGVyaW5nLiIpOwogaW50IFZpZGVvU2VsZWN0ZWRUTCgpIHsKICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oRkxBR192c2VsZWN0ZWRfdGwpOwogfQogCi1ERUZJTkVfaW50KHZzZWxlY3RlZF9z
dHJlYW0sCi0gICAgICAgICAgIDAsCi0gICAgICAgICAgICJJRCBvZiB0aGUgc3RyZWFtIHRvIHNo
b3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUuIgotICAgICAgICAgICAiU2V0IHRvIHRoZSBu
dW1iZXIgb2Ygc3RyZWFtcyB0byBzaG93IHRoZW0gYWxsLiIpOworV0VCUlRDX0RFRklORV9pbnQo
dnNlbGVjdGVkX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAg
ICAiSUQgb2YgdGhlIHN0cmVhbSB0byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNoYXJlLiIK
KyAgICAgICAgICAgICAgICAgICJTZXQgdG8gdGhlIG51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cg
dGhlbSBhbGwuIik7CiBpbnQgVmlkZW9TZWxlY3RlZFN0cmVhbSgpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4oRkxBR192c2VsZWN0ZWRfc3RyZWFtKTsKIH0KIAotREVGSU5FX2ludCh2c2Vs
ZWN0ZWRfc2wsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiU3BhdGlhbCBsYXllciB0byBz
aG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNoYXJlLiAtMSB0byBkaXNhYmxlICIKLSAgICAgICAg
ICAgImZpbHRlcmluZy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KAorICAgIHZzZWxlY3RlZF9zbCwK
KyAgICAtMSwKKyAgICAiU3BhdGlhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVl
bnNoYXJlLiAtMSB0byBkaXNhYmxlICIKKyAgICAiZmlsdGVyaW5nLiIpOwogaW50IFZpZGVvU2Vs
ZWN0ZWRTTCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR192c2VsZWN0ZWRfc2wp
OwogfQogCiAvLyBGbGFncyBmb3Igc2NyZWVuc2hhcmUuCi1ERUZJTkVfaW50KG1pbl90cmFuc21p
dF9iaXRyYXRlLAotICAgICAgICAgICA0MDAsCi0gICAgICAgICAgICJNaW4gdHJhbnNtaXQgYml0
cmF0ZSBpbmNsLiBwYWRkaW5nIGZvciBzY3JlZW5zaGFyZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50
KG1pbl90cmFuc21pdF9iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgNDAwLAorICAgICAgICAg
ICAgICAgICAgIk1pbiB0cmFuc21pdCBiaXRyYXRlIGluY2wuIHBhZGRpbmcgZm9yIHNjcmVlbnNo
YXJlLiIpOwogaW50IFNjcmVlbnNoYXJlTWluVHJhbnNtaXRCaXRyYXRlS2JwcygpIHsKICAgcmV0
dXJuIEZMQUdfbWluX3RyYW5zbWl0X2JpdHJhdGU7CiB9CiAKLURFRklORV9pbnQoc3dpZHRoLCAx
ODUwLCAiU2NyZWVuc2hhcmUgd2lkdGggKGNyb3BzIHNvdXJjZSkuIik7CitXRUJSVENfREVGSU5F
X2ludChzd2lkdGgsIDE4NTAsICJTY3JlZW5zaGFyZSB3aWR0aCAoY3JvcHMgc291cmNlKS4iKTsK
IHNpemVfdCBTY3JlZW5zaGFyZVdpZHRoKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90
PihGTEFHX3N3aWR0aCk7CiB9CiAKLURFRklORV9pbnQoc2hlaWdodCwgMTExMCwgIlNjcmVlbnNo
YXJlIGhlaWdodCAoY3JvcHMgc291cmNlKS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNoZWlnaHQs
IDExMTAsICJTY3JlZW5zaGFyZSBoZWlnaHQgKGNyb3BzIHNvdXJjZSkuIik7CiBzaXplX3QgU2Ny
ZWVuc2hhcmVIZWlnaHQoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdfc2hl
aWdodCk7CiB9CiAKLURFRklORV9pbnQoc2ZwcywgNSwgIkZyYW1lcyBwZXIgc2Vjb25kIGZvciBz
Y3JlZW5zaGFyZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNmcHMsIDUsICJGcmFtZXMgcGVyIHNl
Y29uZCBmb3Igc2NyZWVuc2hhcmUuIik7CiBpbnQgU2NyZWVuc2hhcmVGcHMoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2Zwcyk7CiB9CiAKLURFRklORV9pbnQoc3RhcmdldF9i
aXRyYXRlLCAxMDAsICJTY3JlZW5zaGFyZSBzdHJlYW0gdGFyZ2V0IGJpdHJhdGUgaW4ga2Jwcy4i
KTsKK1dFQlJUQ19ERUZJTkVfaW50KHN0YXJnZXRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAg
IDEwMCwKKyAgICAgICAgICAgICAgICAgICJTY3JlZW5zaGFyZSBzdHJlYW0gdGFyZ2V0IGJpdHJh
dGUgaW4ga2Jwcy4iKTsKIGludCBTY3JlZW5zaGFyZVRhcmdldEJpdHJhdGVLYnBzKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3N0YXJnZXRfYml0cmF0ZSk7CiB9CiAKLURFRklO
RV9pbnQoc21pbl9iaXRyYXRlLCAxMDAsICJTY3JlZW5zaGFyZSBzdHJlYW0gbWluIGJpdHJhdGUg
aW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNtaW5fYml0cmF0ZSwgMTAwLCAiU2NyZWVu
c2hhcmUgc3RyZWFtIG1pbiBiaXRyYXRlIGluIGticHMuIik7CiBpbnQgU2NyZWVuc2hhcmVNaW5C
aXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zbWluX2JpdHJh
dGUpOwogfQogCi1ERUZJTkVfaW50KHNtYXhfYml0cmF0ZSwgMjAwMCwgIlNjcmVlbnNoYXJlIHN0
cmVhbSBtYXggYml0cmF0ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklORV9pbnQoc21heF9iaXRy
YXRlLAorICAgICAgICAgICAgICAgICAgMjAwMCwKKyAgICAgICAgICAgICAgICAgICJTY3JlZW5z
aGFyZSBzdHJlYW0gbWF4IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBTY3JlZW5zaGFyZU1heEJp
dHJhdGVLYnBzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NtYXhfYml0cmF0
ZSk7CiB9CiAKLURFRklORV9pbnQoc251bV90ZW1wb3JhbF9sYXllcnMsCi0gICAgICAgICAgIDIs
Ci0gICAgICAgICAgICJOdW1iZXIgb2YgdGVtcG9yYWwgbGF5ZXJzIHRvIHVzZSBpbiBzY3JlZW5z
aGFyZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNudW1fdGVtcG9yYWxfbGF5ZXJzLAorICAgICAg
ICAgICAgICAgICAgMiwKKyAgICAgICAgICAgICAgICAgICJOdW1iZXIgb2YgdGVtcG9yYWwgbGF5
ZXJzIHRvIHVzZSBpbiBzY3JlZW5zaGFyZS4iKTsKIGludCBTY3JlZW5zaGFyZU51bVRlbXBvcmFs
TGF5ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NudW1fdGVtcG9yYWxf
bGF5ZXJzKTsKIH0KIAotREVGSU5FX2ludChzbnVtX3N0cmVhbXMsCi0gICAgICAgICAgIDAsCi0g
ICAgICAgICAgICJOdW1iZXIgb2Ygc2NyZWVuc2hhcmUgc3RyZWFtcyB0byBzaG93IG9yIGFuYWx5
emUuIik7CitXRUJSVENfREVGSU5FX2ludChzbnVtX3N0cmVhbXMsCisgICAgICAgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiBzY3JlZW5zaGFyZSBzdHJlYW1zIHRv
IHNob3cgb3IgYW5hbHl6ZS4iKTsKIGludCBTY3JlZW5zaGFyZU51bVN0cmVhbXMoKSB7CiAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc251bV9zdHJlYW1zKTsKIH0KIAotREVGSU5FX2lu
dChzbnVtX3NwYXRpYWxfbGF5ZXJzLAotICAgICAgICAgICAxLAotICAgICAgICAgICAiTnVtYmVy
IG9mIHNjcmVlbnNoYXJlIHNwYXRpYWwgbGF5ZXJzIHRvIHVzZS4iKTsKK1dFQlJUQ19ERUZJTkVf
aW50KHNudW1fc3BhdGlhbF9sYXllcnMsCisgICAgICAgICAgICAgICAgICAxLAorICAgICAgICAg
ICAgICAgICAgIk51bWJlciBvZiBzY3JlZW5zaGFyZSBzcGF0aWFsIGxheWVycyB0byB1c2UuIik7
CiBpbnQgU2NyZWVuc2hhcmVOdW1TcGF0aWFsTGF5ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihGTEFHX3NudW1fc3BhdGlhbF9sYXllcnMpOwogfQogCi1ERUZJTkVfaW50KHNpbnRl
cl9sYXllcl9wcmVkLAotICAgICAgICAgICAwLAotICAgICAgICAgICAiU2NyZWVuc2hhcmUgaW50
ZXItbGF5ZXIgcHJlZGljdGlvbiBtb2RlLiAiCi0gICAgICAgICAgICIwIC0gZW5hYmxlZCwgMSAt
IGRpc2FibGVkLCAyIC0gZW5hYmxlZCBvbmx5IGZvciBrZXkgcGljdHVyZXMuIik7CitXRUJSVENf
REVGSU5FX2ludCgKKyAgICBzaW50ZXJfbGF5ZXJfcHJlZCwKKyAgICAwLAorICAgICJTY3JlZW5z
aGFyZSBpbnRlci1sYXllciBwcmVkaWN0aW9uIG1vZGUuICIKKyAgICAiMCAtIGVuYWJsZWQsIDEg
LSBkaXNhYmxlZCwgMiAtIGVuYWJsZWQgb25seSBmb3Iga2V5IHBpY3R1cmVzLiIpOwogSW50ZXJM
YXllclByZWRNb2RlIFNjcmVlbnNoYXJlSW50ZXJMYXllclByZWQoKSB7CiAgIHJldHVybiBJbnRU
b0ludGVyTGF5ZXJQcmVkTW9kZShGTEFHX3NpbnRlcl9sYXllcl9wcmVkKTsKIH0KIAotREVGSU5F
X3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIHNzdHJlYW0wLAogICAgICIiLAog
ICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHNj
cmVlbnNoYXJlIHN0cmVhbSAjMC4iKTsKQEAgLTIzMSw3ICsyNDMsNyBAQCBzdGQ6OnN0cmluZyBT
Y3JlZW5zaGFyZVN0cmVhbTAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4o
RkxBR19zc3RyZWFtMCk7CiB9CiAKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVGSU5FX3N0cmlu
ZygKICAgICBzc3RyZWFtMSwKICAgICAiIiwKICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBk
ZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZvciBzY3JlZW5zaGFyZSBzdHJlYW0gIzEuIik7CkBAIC0y
MzksNyArMjUxLDcgQEAgc3RkOjpzdHJpbmcgU2NyZWVuc2hhcmVTdHJlYW0xKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc3N0cmVhbTEpOwogfQogCi1ERUZJTkVf
c3RyaW5nKAorV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgc3NsMCwKICAgICAiIiwKICAgICAi
Q29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3Igc2NyZWVu
c2hhcmUgbGF5ZXIgIzAuIik7CkBAIC0yNDcsNyArMjU5LDcgQEAgc3RkOjpzdHJpbmcgU2NyZWVu
c2hhcmVTTDAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zc2ww
KTsKIH0KIAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIHNzbDEs
CiAgICAgIiIsCiAgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFs
TGF5ZXIgZm9yIHNjcmVlbnNoYXJlIGxheWVyICMxLiIpOwpAQCAtMjU1LDMxICsyNjcsMzMgQEAg
c3RkOjpzdHJpbmcgU2NyZWVuc2hhcmVTTDEoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6
OnN0cmluZz4oRkxBR19zc2wxKTsKIH0KIAotREVGSU5FX2ludChzc2VsZWN0ZWRfdGwsCi0gICAg
ICAgICAgIC0xLAotICAgICAgICAgICAiVGVtcG9yYWwgbGF5ZXIgdG8gc2hvdyBvciBhbmFseXpl
IGZvciBzY3JlZW5zaGFyZS4gLTEgdG8gZGlzYWJsZSAiCi0gICAgICAgICAgICJmaWx0ZXJpbmcu
Iik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICBzc2VsZWN0ZWRfdGwsCisgICAgLTEsCisgICAg
IlRlbXBvcmFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUuIC0xIHRv
IGRpc2FibGUgIgorICAgICJmaWx0ZXJpbmcuIik7CiBpbnQgU2NyZWVuc2hhcmVTZWxlY3RlZFRM
KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NzZWxlY3RlZF90bCk7CiB9CiAK
LURFRklORV9pbnQoc3NlbGVjdGVkX3N0cmVhbSwKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAg
IklEIG9mIHRoZSBzdHJlYW0gdG8gc2hvdyBvciBhbmFseXplIGZvciBzY3JlZW5zaGFyZS4iCi0g
ICAgICAgICAgICJTZXQgdG8gdGhlIG51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cgdGhlbSBhbGwu
Iik7CitXRUJSVENfREVGSU5FX2ludChzc2VsZWN0ZWRfc3RyZWFtLAorICAgICAgICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgICAgICAgICJJRCBvZiB0aGUgc3RyZWFtIHRvIHNob3cgb3IgYW5h
bHl6ZSBmb3Igc2NyZWVuc2hhcmUuIgorICAgICAgICAgICAgICAgICAgIlNldCB0byB0aGUgbnVt
YmVyIG9mIHN0cmVhbXMgdG8gc2hvdyB0aGVtIGFsbC4iKTsKIGludCBTY3JlZW5zaGFyZVNlbGVj
dGVkU3RyZWFtKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NzZWxlY3RlZF9z
dHJlYW0pOwogfQogCi1ERUZJTkVfaW50KHNzZWxlY3RlZF9zbCwKLSAgICAgICAgICAgLTEsCi0g
ICAgICAgICAgICJTcGF0aWFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hh
cmUuIC0xIHRvIGRpc2FibGUgIgotICAgICAgICAgICAiZmlsdGVyaW5nLiIpOworV0VCUlRDX0RF
RklORV9pbnQoCisgICAgc3NlbGVjdGVkX3NsLAorICAgIC0xLAorICAgICJTcGF0aWFsIGxheWVy
IHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUuIC0xIHRvIGRpc2FibGUgIgorICAg
ICJmaWx0ZXJpbmcuIik7CiBpbnQgU2NyZWVuc2hhcmVTZWxlY3RlZFNMKCkgewogICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihGTEFHX3NzZWxlY3RlZF9zbCk7CiB9CiAKLURFRklORV9ib29sKAor
V0VCUlRDX0RFRklORV9ib29sKAogICAgIGdlbmVyYXRlX3NsaWRlcywKICAgICBmYWxzZSwKICAg
ICAiV2hldGhlciB0byB1c2UgcmFuZG9tbHkgZ2VuZXJhdGVkIHNsaWRlcyBvciByZWFkIHRoZW0g
ZnJvbSBmaWxlcy4iKTsKQEAgLTI4NywxNCArMzAxLDE0IEBAIGJvb2wgR2VuZXJhdGVTbGlkZXMo
KSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfZ2VuZXJhdGVfc2xpZGVzKTsKIH0K
IAotREVGSU5FX2ludChzbGlkZV9jaGFuZ2VfaW50ZXJ2YWwsCi0gICAgICAgICAgIDEwLAotICAg
ICAgICAgICAiSW50ZXJ2YWwgKGluIHNlY29uZHMpIGJldHdlZW4gc2ltdWxhdGVkIHNsaWRlIGNo
YW5nZXMuIik7CitXRUJSVENfREVGSU5FX2ludChzbGlkZV9jaGFuZ2VfaW50ZXJ2YWwsCisgICAg
ICAgICAgICAgICAgICAxMCwKKyAgICAgICAgICAgICAgICAgICJJbnRlcnZhbCAoaW4gc2Vjb25k
cykgYmV0d2VlbiBzaW11bGF0ZWQgc2xpZGUgY2hhbmdlcy4iKTsKIGludCBTbGlkZUNoYW5nZUlu
dGVydmFsKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NsaWRlX2NoYW5nZV9p
bnRlcnZhbCk7CiB9CiAKLURFRklORV9pbnQoCitXRUJSVENfREVGSU5FX2ludCgKICAgICBzY3Jv
bGxfZHVyYXRpb24sCiAgICAgMCwKICAgICAiRHVyYXRpb24gKGluIHNlY29uZHMpIGR1cmluZyB3
aGljaCBhIHNsaWRlIHdpbGwgYmUgc2Nyb2xsZWQgaW50byBwbGFjZS4iKTsKQEAgLTMwMiw5ICsz
MTYsMTAgQEAgaW50IFNjcm9sbER1cmF0aW9uKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihGTEFHX3Njcm9sbF9kdXJhdGlvbik7CiB9CiAKLURFRklORV9zdHJpbmcoc2xpZGVzLAotICAg
ICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICou
eXV2IGZpbGVzIHRvIGRpc3BsYXkgYXMgc2xpZGVzLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmco
CisgICAgc2xpZGVzLAorICAgICIiLAorICAgICJDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAqLnl1
diBmaWxlcyB0byBkaXNwbGF5IGFzIHNsaWRlcy4iKTsKIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiBTbGlkZXMoKSB7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBzbGlkZXM7CiAgIHN0ZDo6
c3RyaW5nIHNsaWRlc19saXN0ID0gRkxBR19zbGlkZXM7CkBAIC0zMTMsMzEgKzMyOCwzMSBAQCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gU2xpZGVzKCkgewogfQogCiAvLyBGbGFncyBjb21tb24g
d2l0aCBzY3JlZW5zaGFyZSBhbmQgdmlkZW8gbG9vcGJhY2ssIHdpdGggZXF1YWwgZGVmYXVsdCB2
YWx1ZXMuCi1ERUZJTkVfaW50KHN0YXJ0X2JpdHJhdGUsIDYwMCwgIkNhbGwgc3RhcnQgYml0cmF0
ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklORV9pbnQoc3RhcnRfYml0cmF0ZSwgNjAwLCAiQ2Fs
bCBzdGFydCBiaXRyYXRlIGluIGticHMuIik7CiBpbnQgU3RhcnRCaXRyYXRlS2JwcygpIHsKICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zdGFydF9iaXRyYXRlKTsKIH0KIAotREVGSU5F
X3N0cmluZyhjb2RlYywgIlZQOCIsICJWaWRlbyBjb2RlYyB0byB1c2UuIik7CitXRUJSVENfREVG
SU5FX3N0cmluZyhjb2RlYywgIlZQOCIsICJWaWRlbyBjb2RlYyB0byB1c2UuIik7CiBzdGQ6OnN0
cmluZyBDb2RlYygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2Nv
ZGVjKTsKIH0KIAotREVGSU5FX2Jvb2woYW5hbHl6ZV92aWRlbywKLSAgICAgICAgICAgIGZhbHNl
LAotICAgICAgICAgICAgIkFuYWx5emUgdmlkZW8gc3RyZWFtIChpZiAtLWR1cmF0aW9uIGlzIHBy
ZXNlbnQpIik7CitXRUJSVENfREVGSU5FX2Jvb2woYW5hbHl6ZV92aWRlbywKKyAgICAgICAgICAg
ICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiQW5hbHl6ZSB2aWRlbyBzdHJlYW0g
KGlmIC0tZHVyYXRpb24gaXMgcHJlc2VudCkiKTsKIGJvb2wgQW5hbHl6ZVZpZGVvKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oRkxBR19hbmFseXplX3ZpZGVvKTsKIH0KIAotREVGSU5F
X2Jvb2woYW5hbHl6ZV9zY3JlZW5zaGFyZSwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAg
ICAgIkFuYWx5emUgc2NyZWVuc2hhcmUgc3RyZWFtIChpZiAtLWR1cmF0aW9uIGlzIHByZXNlbnQp
Iik7CitXRUJSVENfREVGSU5FX2Jvb2woYW5hbHl6ZV9zY3JlZW5zaGFyZSwKKyAgICAgICAgICAg
ICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiQW5hbHl6ZSBzY3JlZW5zaGFyZSBz
dHJlYW0gKGlmIC0tZHVyYXRpb24gaXMgcHJlc2VudCkiKTsKIGJvb2wgQW5hbHl6ZVNjcmVlbnNo
YXJlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oRkxBR19hbmFseXplX3NjcmVlbnNo
YXJlKTsKIH0KIAotREVGSU5FX2ludCgKK1dFQlJUQ19ERUZJTkVfaW50KAogICAgIGR1cmF0aW9u
LAogICAgIDAsCiAgICAgIkR1cmF0aW9uIG9mIHRoZSB0ZXN0IGluIHNlY29uZHMuIElmIDAsIHJl
bmRlcmVkIHdpbGwgYmUgc2hvd24gaW5zdGVhZC4iKTsKQEAgLTM0NSwxMDAgKzM2MCwxMTMgQEAg
aW50IER1cmF0aW9uU2VjcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19kdXJh
dGlvbik7CiB9CiAKLURFRklORV9zdHJpbmcob3V0cHV0X2ZpbGVuYW1lLCAiIiwgIlRhcmdldCBn
cmFwaCBkYXRhIGZpbGVuYW1lLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob3V0cHV0X2ZpbGVu
YW1lLCAiIiwgIlRhcmdldCBncmFwaCBkYXRhIGZpbGVuYW1lLiIpOwogc3RkOjpzdHJpbmcgT3V0
cHV0RmlsZW5hbWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19v
dXRwdXRfZmlsZW5hbWUpOwogfQogCi1ERUZJTkVfc3RyaW5nKGdyYXBoX3RpdGxlLAotICAgICAg
ICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIklmIGVtcHR5LCB0aXRsZSB3aWxsIGJlIGdlbmVy
YXRlZCBhdXRvbWF0aWNhbGx5LiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoZ3JhcGhfdGl0bGUs
CisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJJZiBlbXB0
eSwgdGl0bGUgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4iKTsKIHN0ZDo6c3RyaW5n
IEdyYXBoVGl0bGUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19n
cmFwaF90aXRsZSk7CiB9CiAKLURFRklORV9pbnQobG9zc19wZXJjZW50LCAwLCAiUGVyY2VudGFn
ZSBvZiBwYWNrZXRzIHJhbmRvbWx5IGxvc3QuIik7CitXRUJSVENfREVGSU5FX2ludChsb3NzX3Bl
cmNlbnQsIDAsICJQZXJjZW50YWdlIG9mIHBhY2tldHMgcmFuZG9tbHkgbG9zdC4iKTsKIGludCBM
b3NzUGVyY2VudCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19sb3NzX3BlcmNl
bnQpOwogfQogCi1ERUZJTkVfaW50KGF2Z19idXJzdF9sb3NzX2xlbmd0aCwgLTEsICJBdmVyYWdl
IGJ1cnN0IGxlbmd0aCBvZiBsb3N0IHBhY2tldHMuIik7CitXRUJSVENfREVGSU5FX2ludChhdmdf
YnVyc3RfbG9zc19sZW5ndGgsCisgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAg
ICAgICJBdmVyYWdlIGJ1cnN0IGxlbmd0aCBvZiBsb3N0IHBhY2tldHMuIik7CiBpbnQgQXZnQnVy
c3RMb3NzTGVuZ3RoKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2F2Z19idXJz
dF9sb3NzX2xlbmd0aCk7CiB9CiAKLURFRklORV9pbnQobGlua19jYXBhY2l0eSwKLSAgICAgICAg
ICAgMCwKLSAgICAgICAgICAgIkNhcGFjaXR5IChrYnBzKSBvZiB0aGUgZmFrZSBsaW5rLiAwIG1l
YW5zIGluZmluaXRlLiIpOworV0VCUlRDX0RFRklORV9pbnQobGlua19jYXBhY2l0eSwKKyAgICAg
ICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiQ2FwYWNpdHkgKGticHMpIG9mIHRo
ZSBmYWtlIGxpbmsuIDAgbWVhbnMgaW5maW5pdGUuIik7CiBpbnQgTGlua0NhcGFjaXR5S2Jwcygp
IHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19saW5rX2NhcGFjaXR5KTsKIH0KIAot
REVGSU5FX2ludChxdWV1ZV9zaXplLCAwLCAiU2l6ZSBvZiB0aGUgYm90dGxlbmVjayBsaW5rIHF1
ZXVlIGluIHBhY2tldHMuIik7CitXRUJSVENfREVGSU5FX2ludChxdWV1ZV9zaXplLAorICAgICAg
ICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJTaXplIG9mIHRoZSBib3R0bGVuZWNr
IGxpbmsgcXVldWUgaW4gcGFja2V0cy4iKTsKIGludCBRdWV1ZVNpemUoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KEZMQUdfcXVldWVfc2l6ZSk7CiB9CiAKLURFRklORV9pbnQoYXZnX3By
b3BhZ2F0aW9uX2RlbGF5X21zLAotICAgICAgICAgICAwLAotICAgICAgICAgICAiQXZlcmFnZSBs
aW5rIHByb3BhZ2F0aW9uIGRlbGF5IGluIG1zLiIpOworV0VCUlRDX0RFRklORV9pbnQoYXZnX3By
b3BhZ2F0aW9uX2RlbGF5X21zLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAg
ICAgICJBdmVyYWdlIGxpbmsgcHJvcGFnYXRpb24gZGVsYXkgaW4gbXMuIik7CiBpbnQgQXZnUHJv
cGFnYXRpb25EZWxheU1zKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2F2Z19w
cm9wYWdhdGlvbl9kZWxheV9tcyk7CiB9CiAKLURFRklORV9zdHJpbmcocnRjX2V2ZW50X2xvZ19u
YW1lLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBydGMg
ZXZlbnQgbG9nLiBUd28gZmlsZXMgIgotICAgICAgICAgICAgICAid2l0aCBcIl9zZW5kXCIgYW5k
IFwiX3JlY3ZcIiBzdWZmaXhlcyB3aWxsIGJlIGNyZWF0ZWQuICIKLSAgICAgICAgICAgICAgIldv
cmtzIG9ubHkgd2hlbiAtLWR1cmF0aW9uIGlzIHNldC4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KHJ0Y19ldmVudF9sb2dfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAg
ICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBydGMgZXZlbnQgbG9nLiBUd28gZmlsZXMgIgorICAg
ICAgICAgICAgICAgICAgICAgIndpdGggXCJfc2VuZFwiIGFuZCBcIl9yZWN2XCIgc3VmZml4ZXMg
d2lsbCBiZSBjcmVhdGVkLiAiCisgICAgICAgICAgICAgICAgICAgICAiV29ya3Mgb25seSB3aGVu
IC0tZHVyYXRpb24gaXMgc2V0LiIpOwogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dOYW1lKCkgewog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfcnRjX2V2ZW50X2xvZ19uYW1l
KTsKIH0KIAotREVGSU5FX3N0cmluZyhydHBfZHVtcF9uYW1lLCAiIiwgIkZpbGVuYW1lIGZvciBk
dW1wZWQgcmVjZWl2ZWQgUlRQIHN0cmVhbS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHJ0cF9k
dW1wX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAg
ICJGaWxlbmFtZSBmb3IgZHVtcGVkIHJlY2VpdmVkIFJUUCBzdHJlYW0uIik7CiBzdGQ6OnN0cmlu
ZyBSdHBEdW1wTmFtZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFH
X3J0cF9kdW1wX25hbWUpOwogfQogCi1ERUZJTkVfaW50KHN0ZF9wcm9wYWdhdGlvbl9kZWxheV9t
cywKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkxpbmsgcHJvcGFnYXRpb24gZGVsYXkgc3Rh
bmRhcmQgZGV2aWF0aW9uIGluIG1zLiIpOworV0VCUlRDX0RFRklORV9pbnQoc3RkX3Byb3BhZ2F0
aW9uX2RlbGF5X21zLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJM
aW5rIHByb3BhZ2F0aW9uIGRlbGF5IHN0YW5kYXJkIGRldmlhdGlvbiBpbiBtcy4iKTsKIGludCBT
dGRQcm9wYWdhdGlvbkRlbGF5TXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdf
c3RkX3Byb3BhZ2F0aW9uX2RlbGF5X21zKTsKIH0KIAotREVGSU5FX3N0cmluZyhlbmNvZGVkX2Zy
YW1lX3BhdGgsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiVGhlIGJhc2UgcGF0
aCBmb3IgZW5jb2RlZCBmcmFtZSBsb2dzLiBDcmVhdGVkIGZpbGVzIHdpbGwgaGF2ZSAiCi0gICAg
ICAgICAgICAgICJ0aGUgZm9ybSA8ZW5jb2RlZF9mcmFtZV9wYXRoPi48bj4uKHJlY3Z8c2VuZC48
bT4pLml2ZiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgZW5jb2RlZF9mcmFtZV9wYXRo
LAorICAgICIiLAorICAgICJUaGUgYmFzZSBwYXRoIGZvciBlbmNvZGVkIGZyYW1lIGxvZ3MuIENy
ZWF0ZWQgZmlsZXMgd2lsbCBoYXZlICIKKyAgICAidGhlIGZvcm0gPGVuY29kZWRfZnJhbWVfcGF0
aD4uPG4+LihyZWN2fHNlbmQuPG0+KS5pdmYiKTsKIHN0ZDo6c3RyaW5nIEVuY29kZWRGcmFtZVBh
dGgoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19lbmNvZGVkX2Zy
YW1lX3BhdGgpOwogfQogCi1ERUZJTkVfYm9vbChsb2dzLCBmYWxzZSwgInByaW50IGxvZ3MgdG8g
c3RkZXJyIik7CitXRUJSVENfREVGSU5FX2Jvb2wobG9ncywgZmFsc2UsICJwcmludCBsb2dzIHRv
IHN0ZGVyciIpOwogCi1ERUZJTkVfYm9vbChzZW5kX3NpZGVfYndlLCB0cnVlLCAiVXNlIHNlbmQt
c2lkZSBiYW5kd2lkdGggZXN0aW1hdGlvbiIpOworV0VCUlRDX0RFRklORV9ib29sKHNlbmRfc2lk
ZV9id2UsIHRydWUsICJVc2Ugc2VuZC1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0aW9uIik7CiAKLURF
RklORV9ib29sKGdlbmVyaWNfZGVzY3JpcHRvciwgZmFsc2UsICJVc2UgdGhlIGdlbmVyaWMgZnJh
bWUgZGVzY3JpcHRvci4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChnZW5lcmljX2Rlc2NyaXB0b3Is
CisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlVzZSB0aGUg
Z2VuZXJpYyBmcmFtZSBkZXNjcmlwdG9yLiIpOwogCi1ERUZJTkVfYm9vbChhbGxvd19yZW9yZGVy
aW5nLCBmYWxzZSwgIkFsbG93IHBhY2tldCByZW9yZGVyaW5nIHRvIG9jY3VyIik7CitXRUJSVENf
REVGSU5FX2Jvb2woYWxsb3dfcmVvcmRlcmluZywgZmFsc2UsICJBbGxvdyBwYWNrZXQgcmVvcmRl
cmluZyB0byBvY2N1ciIpOwogCi1ERUZJTkVfYm9vbCh1c2VfdWxwZmVjLCBmYWxzZSwgIlVzZSBS
RUQrVUxQRkVDIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbi4iKTsKK1dFQlJUQ19ERUZJTkVfYm9v
bCh1c2VfdWxwZmVjLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICJVc2UgUkVEK1VMUEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24uIik7CiAKLURFRklO
RV9ib29sKHVzZV9mbGV4ZmVjLCBmYWxzZSwgIlVzZSBGbGV4RkVDIGZvcndhcmQgZXJyb3IgY29y
cmVjdGlvbi4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCh1c2VfZmxleGZlYywgZmFsc2UsICJVc2Ug
RmxleEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24uIik7CiAKLURFRklORV9ib29sKGF1ZGlv
LCBmYWxzZSwgIkFkZCBhdWRpbyBzdHJlYW0iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChhdWRpbywg
ZmFsc2UsICJBZGQgYXVkaW8gc3RyZWFtIik7CiAKLURFRklORV9ib29sKGF1ZGlvX3ZpZGVvX3N5
bmMsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJTeW5jIGF1ZGlvIGFuZCB2aWRl
byBzdHJlYW0gKG5vIGVmZmVjdCBpZiIKLSAgICAgICAgICAgICIgYXVkaW8gaXMgZmFsc2UpIik7
CitXRUJSVENfREVGSU5FX2Jvb2woYXVkaW9fdmlkZW9fc3luYywKKyAgICAgICAgICAgICAgICAg
ICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiU3luYyBhdWRpbyBhbmQgdmlkZW8gc3RyZWFt
IChubyBlZmZlY3QgaWYiCisgICAgICAgICAgICAgICAgICAgIiBhdWRpbyBpcyBmYWxzZSkiKTsK
IAotREVGSU5FX2Jvb2woYXVkaW9fZHR4LCBmYWxzZSwgIkVuYWJsZSBhdWRpbyBEVFggKG5vIGVm
ZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSkiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChhdWRpb19kdHgs
CisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIkVuYWJsZSBh
dWRpbyBEVFggKG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSkiKTsKIAotREVGSU5FX2Jvb2wo
dmlkZW8sIHRydWUsICJBZGQgdmlkZW8gc3RyZWFtIik7CitXRUJSVENfREVGSU5FX2Jvb2wodmlk
ZW8sIHRydWUsICJBZGQgdmlkZW8gc3RyZWFtIik7CiAKLURFRklORV9zdHJpbmcoCitXRUJSVENf
REVGSU5FX3N0cmluZygKICAgICBmb3JjZV9maWVsZHRyaWFscywKICAgICAiIiwKICAgICAiRmll
bGQgdHJpYWxzIGNvbnRyb2wgZXhwZXJpbWVudGFsIGZlYXR1cmUgY29kZSB3aGljaCBjYW4gYmUg
Zm9yY2VkLiAiCkBAIC00NDcsMTUgKzQ3NSwxNiBAQCBERUZJTkVfc3RyaW5nKAogICAgICJ0cmlh
bHMgYXJlIHNlcGFyYXRlZCBieSBcIi9cIiIpOwogCiAvLyBWaWRlby1zcGVjaWZpYyBmbGFncy4K
LURFRklORV9zdHJpbmcodmNsaXAsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAi
TmFtZSBvZiB0aGUgY2xpcCB0byBzaG93LiBJZiBlbXB0eSwgdGhlIGNhbWVyYSBpcyB1c2VkLiBV
c2UgIgotICAgICAgICAgICAgICAiXCJHZW5lcmF0b3JcIiBmb3IgY2hyb21hIGdlbmVyYXRvci4i
KTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIHZjbGlwLAorICAgICIiLAorICAgICJOYW1l
IG9mIHRoZSBjbGlwIHRvIHNob3cuIElmIGVtcHR5LCB0aGUgY2FtZXJhIGlzIHVzZWQuIFVzZSAi
CisgICAgIlwiR2VuZXJhdG9yXCIgZm9yIGNocm9tYSBnZW5lcmF0b3IuIik7CiBzdGQ6OnN0cmlu
ZyBWaWRlb0NsaXAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR192
Y2xpcCk7CiB9CiAKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2Fn
ZSIpOworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2Fn
ZSIpOwogCiB9ICAvLyBuYW1lc3BhY2UgZmxhZ3MKIApAQCAtNDc1LDcgKzUwNCw3IEBAIHZvaWQg
TG9vcGJhY2soKSB7CiAgICAgc2NyZWVuc2hhcmVfaWR4ID0gMDsKICAgfQogCi0gIERlZmF1bHRO
ZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBwaXBlX2NvbmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhh
dmlvckNvbmZpZyBwaXBlX2NvbmZpZzsKICAgcGlwZV9jb25maWcubG9zc19wZXJjZW50ID0gZmxh
Z3M6Okxvc3NQZXJjZW50KCk7CiAgIHBpcGVfY29uZmlnLmF2Z19idXJzdF9sb3NzX2xlbmd0aCA9
IGZsYWdzOjpBdmdCdXJzdExvc3NMZW5ndGgoKTsKICAgcGlwZV9jb25maWcubGlua19jYXBhY2l0
eV9rYnBzID0gZmxhZ3M6OkxpbmtDYXBhY2l0eUticHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3RyYW5zcG9ydF9hZGFwdGVy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby90cmFu
c3BvcnRfYWRhcHRlci5oCmluZGV4IDhlYzUzZmRmMjVhOTE2YzcxMDI5YzdkZWFlMjRiNTg4N2Zl
MjcyYWYuLjc4Njg1OGIwZTIxYzc0MTAzNDEwZWM0ZmViMmQ0NGVjNDg5OWFlOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3RyYW5z
cG9ydF9hZGFwdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vdHJhbnNwb3J0X2FkYXB0ZXIuaApAQCAtMTMsNyArMTMsNiBAQAogI2luY2x1
ZGUgPGF0b21pYz4KIAogI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgotI2luY2x1ZGUg
ImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogbmFtZXNwYWNlIGludGVybmFsIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX2FuYWx5emVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fYW5hbHl6
ZXIuY2MKaW5kZXggMDVhYmUxZmNmM2IyNDBiMjI5ZTIzZDJkZDAyMTM3NDExYWUyZDgzMS4uMWZk
MjJmZjgwNjBiMDk0YTVkZDg1NDFiODlkNGI1YjRlOGMyZTYwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fYW5hbHl6ZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
dmlkZW9fYW5hbHl6ZXIuY2MKQEAgLTE4LDE3ICsxOCwxOCBAQAogI2luY2x1ZGUgInJ0Y19iYXNl
L2ZsYWdzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL21lbW9yeV91c2FnZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3BhdGh1dGlscy5o
IgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9pbmZvLmgiCiAjaW5jbHVk
ZSAidGVzdC9jYWxsX3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGls
cy5oIgogI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZnJhbWVfd3JpdGVyLmgiCiAjaW5jbHVk
ZSAidGVzdC90ZXN0c3VwcG9ydC9wZXJmX3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBw
b3J0L3Rlc3RfYXJ0aWZhY3RzLmgiCiAKLURFRklORV9ib29sKHNhdmVfd29yc3RfZnJhbWUsCi0g
ICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJFbmFibGUgc2F2aW5nIGEgZnJhbWUgd2l0
aCB0aGUgbG93ZXN0IFBTTlIgdG8gYSBqcGVnIGZpbGUgaW4gdGhlICIKLSAgICAgICAgICAgICJ0
ZXN0X2FydGlmYWN0c19kaXIiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBzYXZlX3dvcnN0
X2ZyYW1lLAorICAgIGZhbHNlLAorICAgICJFbmFibGUgc2F2aW5nIGEgZnJhbWUgd2l0aCB0aGUg
bG93ZXN0IFBTTlIgdG8gYSBqcGVnIGZpbGUgaW4gdGhlICIKKyAgICAidGVzdF9hcnRpZmFjdHNf
ZGlyIik7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKQEAgLTcwLDcgKzcxLDYg
QEAgVmlkZW9BbmFseXplcjo6VmlkZW9BbmFseXplcih0ZXN0OjpMYXllckZpbHRlcmluZ1RyYW5z
cG9ydCogdHJhbnNwb3J0LAogICAgICAgc2VsZWN0ZWRfc3RyZWFtXyhzZWxlY3RlZF9zdHJlYW0p
LAogICAgICAgc2VsZWN0ZWRfc2xfKHNlbGVjdGVkX3NsKSwKICAgICAgIHNlbGVjdGVkX3RsXyhz
ZWxlY3RlZF90bCksCi0gICAgICBwcmVfZW5jb2RlX3Byb3h5Xyh0aGlzKSwKICAgICAgIGxhc3Rf
ZmVjX2J5dGVzXygwKSwKICAgICAgIGZyYW1lc190b19wcm9jZXNzXyhkdXJhdGlvbl9mcmFtZXMp
LAogICAgICAgZnJhbWVzX3JlY29yZGVkXygwKSwKQEAgLTkxLDcgKzkxLDYgQEAgVmlkZW9BbmFs
eXplcjo6VmlkZW9BbmFseXplcih0ZXN0OjpMYXllckZpbHRlcmluZ1RyYW5zcG9ydCogdHJhbnNw
b3J0LAogICAgICAgYXZnX3NzaW1fdGhyZXNob2xkXyhhdmdfc3NpbV90aHJlc2hvbGQpLAogICAg
ICAgaXNfcXVpY2tfdGVzdF9lbmFibGVkXyhpc19xdWlja190ZXN0X2VuYWJsZWQpLAogICAgICAg
c3RhdHNfcG9sbGluZ190aHJlYWRfKCZQb2xsU3RhdHNUaHJlYWQsIHRoaXMsICJTdGF0c1BvbGxl
ciIpLAotICAgICAgY29tcGFyaXNvbl9hdmFpbGFibGVfZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAg
ICAgICBkb25lXyh0cnVlLCBmYWxzZSksCiAgICAgICBjbG9ja18oY2xvY2spLAogICAgICAgc3Rh
cnRfbXNfKGNsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSkgewpAQCAtMjMxLDEwICsyMzAsMTAg
QEAgdm9pZCBWaWRlb0FuYWx5emVyOjpQcmVFbmNvZGVPbkZyYW1lKGNvbnN0IFZpZGVvRnJhbWUm
IHZpZGVvX2ZyYW1lKSB7CiAgIH0KIH0KIAotdm9pZCBWaWRlb0FuYWx5emVyOjpFbmNvZGVkRnJh
bWVDYWxsYmFjayhjb25zdCBFbmNvZGVkRnJhbWUmIGVuY29kZWRfZnJhbWUpIHsKK3ZvaWQgVmlk
ZW9BbmFseXplcjo6UG9zdEVuY29kZU9uRnJhbWUoc2l6ZV90IHN0cmVhbV9pZCwgdWludDMyX3Qg
dGltZXN0YW1wKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfKTsKLSAgaWYgKCFmaXJz
dF9zZW50X3RpbWVzdGFtcF8gJiYgZW5jb2RlZF9mcmFtZS5zdHJlYW1faWRfID09IHNlbGVjdGVk
X3N0cmVhbV8pIHsKLSAgICBmaXJzdF9zZW50X3RpbWVzdGFtcF8gPSBlbmNvZGVkX2ZyYW1lLnRp
bWVzdGFtcF87CisgIGlmICghZmlyc3Rfc2VudF90aW1lc3RhbXBfICYmIHN0cmVhbV9pZCA9PSBz
ZWxlY3RlZF9zdHJlYW1fKSB7CisgICAgZmlyc3Rfc2VudF90aW1lc3RhbXBfID0gdGltZXN0YW1w
OwogICB9CiB9CiAKQEAgLTM2NiwxMCArMzY1LDYgQEAgdm9pZCBWaWRlb0FuYWx5emVyOjpXYWl0
KCkgewogICBzdGF0c19wb2xsaW5nX3RocmVhZF8uU3RvcCgpOwogfQogCi1ydGM6OlZpZGVvU2lu
a0ludGVyZmFjZTxWaWRlb0ZyYW1lPiogVmlkZW9BbmFseXplcjo6cHJlX2VuY29kZV9wcm94eSgp
IHsKLSAgcmV0dXJuICZwcmVfZW5jb2RlX3Byb3h5XzsKLX0KLQogdm9pZCBWaWRlb0FuYWx5emVy
OjpTdGFydE1lYXN1cmluZ0NwdVByb2Nlc3NUaW1lKCkgewogICBydGM6OkNyaXRTY29wZSBsb2Nr
KCZjcHVfbWVhc3VyZW1lbnRfbG9ja18pOwogICBjcHVfdGltZV8gLT0gcnRjOjpHZXRQcm9jZXNz
Q3B1VGltZU5hbm9zKCk7CkBAIC02MTEsNyArNjA2LDcgQEAgdm9pZCBWaWRlb0FuYWx5emVyOjpQ
cmludFJlc3VsdHMoKSB7CiAgICAgc3RkOjpzdHJpbmcgb3V0cHV0X2RpcjsKICAgICB0ZXN0OjpH
ZXRUZXN0QXJ0aWZhY3RzRGlyKCZvdXRwdXRfZGlyKTsKICAgICBzdGQ6OnN0cmluZyBvdXRwdXRf
cGF0aCA9Ci0gICAgICAgIHJ0Yzo6UGF0aG5hbWUob3V0cHV0X2RpciwgdGVzdF9sYWJlbF8gKyAi
LmpwZyIpLnBhdGhuYW1lKCk7CisgICAgICAgIHRlc3Q6OkpvaW5GaWxlbmFtZShvdXRwdXRfZGly
LCB0ZXN0X2xhYmVsXyArICIuanBnIik7CiAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU2F2aW5n
IHdvcnN0IGZyYW1lIHRvICIgPDwgb3V0cHV0X3BhdGg7CiAgICAgdGVzdDo6SnBlZ0ZyYW1lV3Jp
dGVyIGZyYW1lX3dyaXRlcihvdXRwdXRfcGF0aCk7CiAgICAgUlRDX0NIRUNLKApAQCAtODQxLDEz
ICs4MzYsNiBAQCBWaWRlb0FuYWx5emVyOjpTYW1wbGU6OlNhbXBsZShpbnQgZHJvcHBlZCwKICAg
ICAgIHBzbnIocHNuciksCiAgICAgICBzc2ltKHNzaW0pIHt9CiAKLVZpZGVvQW5hbHl6ZXI6OlBy
ZUVuY29kZVByb3h5OjpQcmVFbmNvZGVQcm94eShWaWRlb0FuYWx5emVyKiBwYXJlbnQpCi0gICAg
OiBwYXJlbnRfKHBhcmVudCkge30KLQotdm9pZCBWaWRlb0FuYWx5emVyOjpQcmVFbmNvZGVQcm94
eTo6T25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb19mcmFtZSkgewotICBwYXJlbnRfLT5Q
cmVFbmNvZGVPbkZyYW1lKHZpZGVvX2ZyYW1lKTsKLX0KLQogVmlkZW9BbmFseXplcjo6Q2FwdHVy
ZWRGcmFtZUZvcndhcmRlcjo6Q2FwdHVyZWRGcmFtZUZvcndhcmRlcigKICAgICBWaWRlb0FuYWx5
emVyKiBhbmFseXplciwKICAgICBDbG9jayogY2xvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19hbmFseXplci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fYW5h
bHl6ZXIuaAppbmRleCA2ODFkMWY0NjRmNDgxYzZlN2JhZjNmMWZmNjFmZGNhZTJmNDBkN2NkLi5k
MmM0ZmE4NGNkYTNhMTViMzdlNjAwNzY5OGI3YmNjOWY5N2ZhZTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19hbmFseXpl
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L3ZpZGVvX2FuYWx5emVyLmgKQEAgLTI1LDggKzI1LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
IGNsYXNzIFZpZGVvQW5hbHl6ZXIgOiBwdWJsaWMgUGFja2V0UmVjZWl2ZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4sCi0gICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIEVuY29kZWRGcmFtZU9ic2VydmVyIHsKKyAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4gewogIHB1YmxpYzoK
ICAgVmlkZW9BbmFseXplcih0ZXN0OjpMYXllckZpbHRlcmluZ1RyYW5zcG9ydCogdHJhbnNwb3J0
LAogICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X2xhYmVsLApAQCAtNjEs
OSArNjAsNyBAQCBjbGFzcyBWaWRlb0FuYWx5emVyIDogcHVibGljIFBhY2tldFJlY2VpdmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIG92
ZXJyaWRlOwogCiAgIHZvaWQgUHJlRW5jb2RlT25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRl
b19mcmFtZSk7Ci0KLSAgLy8gRW5jb2RlZEZyYW1lT2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24sIHdp
cmVkIHRvIHBvc3RfZW5jb2RlX2NhbGxiYWNrLgotICB2b2lkIEVuY29kZWRGcmFtZUNhbGxiYWNr
KGNvbnN0IEVuY29kZWRGcmFtZSYgZW5jb2RlZF9mcmFtZSkgb3ZlcnJpZGU7CisgIHZvaWQgUG9z
dEVuY29kZU9uRnJhbWUoc2l6ZV90IHN0cmVhbV9pZCwgdWludDMyX3QgdGltZXN0YW1wKTsKIAog
ICBib29sIFNlbmRSdHAoY29uc3QgdWludDhfdCogcGFja2V0LAogICAgICAgICAgICAgICAgc2l6
ZV90IGxlbmd0aCwKQEAgLTczLDggKzcwLDYgQEAgY2xhc3MgVmlkZW9BbmFseXplciA6IHB1Ymxp
YyBQYWNrZXRSZWNlaXZlciwKICAgdm9pZCBPbkZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVv
X2ZyYW1lKSBvdmVycmlkZTsKICAgdm9pZCBXYWl0KCk7CiAKLSAgcnRjOjpWaWRlb1NpbmtJbnRl
cmZhY2U8VmlkZW9GcmFtZT4qIHByZV9lbmNvZGVfcHJveHkoKTsKLQogICB2b2lkIFN0YXJ0TWVh
c3VyaW5nQ3B1UHJvY2Vzc1RpbWUoKTsKICAgdm9pZCBTdG9wTWVhc3VyaW5nQ3B1UHJvY2Vzc1Rp
bWUoKTsKICAgdm9pZCBTdGFydEV4Y2x1ZGluZ0NwdVRocmVhZFRpbWUoKTsKQEAgLTEzMiwxNyAr
MTI3LDYgQEAgY2xhc3MgVmlkZW9BbmFseXplciA6IHB1YmxpYyBQYWNrZXRSZWNlaXZlciwKICAg
ICBkb3VibGUgc3NpbTsKICAgfTsKIAotICAvLyBUaGlzIGNsYXNzIHJlY2VpdmVzIHRoZSBzZW5k
LXNpZGUgT25GcmFtZSBjYWxsYmFjayBhbmQgaXMgcHJvdmlkZWQgdG8gbm90Ci0gIC8vIGNvbmZs
aWN0IHdpdGggdGhlIHJlY2VpdmVyLXNpZGUgcmVuZGVyZXIgY2FsbGJhY2suCi0gIGNsYXNzIFBy
ZUVuY29kZVByb3h5IDogcHVibGljIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPFZpZGVvRnJhbWU+
IHsKLSAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBQcmVFbmNvZGVQcm94eShWaWRlb0FuYWx5emVy
KiBwYXJlbnQpOwotICAgIHZvaWQgT25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb19mcmFt
ZSkgb3ZlcnJpZGU7Ci0KLSAgIHByaXZhdGU6Ci0gICAgVmlkZW9BbmFseXplciogY29uc3QgcGFy
ZW50XzsKLSAgfTsKLQogICAvLyBJbXBsZW1lbnRzIFZpZGVvU2lua0ludGVyZmFjZSB0byByZWNl
aXZlIGNhcHR1cmVkIGZyYW1lcyBmcm9tIGEKICAgLy8gRnJhbWVHZW5lcmF0b3JDYXB0dXJlci4g
SW1wbGVtZW50cyBWaWRlb1NvdXJjZUludGVyZmFjZSB0byBiZSBhYmxlIHRvIGFjdAogICAvLyBh
cyBhIHNvdXJjZSB0byBWaWRlb1NlbmRTdHJlYW0uCkBAIC0yMjEsNyArMjA1LDYgQEAgY2xhc3Mg
VmlkZW9BbmFseXplciA6IHB1YmxpYyBQYWNrZXRSZWNlaXZlciwKICAgY29uc3Qgc2l6ZV90IHNl
bGVjdGVkX3N0cmVhbV87CiAgIGNvbnN0IGludCBzZWxlY3RlZF9zbF87CiAgIGNvbnN0IGludCBz
ZWxlY3RlZF90bF87Ci0gIFByZUVuY29kZVByb3h5IHByZV9lbmNvZGVfcHJveHlfOwogCiAgIHJ0
Yzo6Q3JpdGljYWxTZWN0aW9uIGNvbXBhcmlzb25fbG9ja187CiAgIHN0ZDo6dmVjdG9yPFNhbXBs
ZT4gc2FtcGxlc18gUlRDX0dVQVJERURfQlkoY29tcGFyaXNvbl9sb2NrXyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19s
b29wYmFjay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL3ZpZGVvX2xvb3BiYWNrLmNjCmluZGV4IDU3NTkwZWQxNDQ5NTQ3NTZlOTA5NzM2NmE3YzA5
YTc2ZWIwM2MxZjEuLjRjZGRkYjk0ZTUyODU4NTBkOTNkOTNiMDk4ZWM4MTNkNzJiMGUzNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L3ZpZGVvX2xvb3BiYWNrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX2xvb3BiYWNrLmNjCkBAIC0yMiw2MSArMjIsNjIgQEAgbmFt
ZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgZmxhZ3MgewogCiAvLyBGbGFncyBjb21tb24gd2l0
aCBzY3JlZW5zaGFyZSBsb29wYmFjaywgd2l0aCBkaWZmZXJlbnQgZGVmYXVsdCB2YWx1ZXMuCi1E
RUZJTkVfaW50KHdpZHRoLCA2NDAsICJWaWRlbyB3aWR0aC4iKTsKK1dFQlJUQ19ERUZJTkVfaW50
KHdpZHRoLCA2NDAsICJWaWRlbyB3aWR0aC4iKTsKIHNpemVfdCBXaWR0aCgpIHsKICAgcmV0dXJu
IHN0YXRpY19jYXN0PHNpemVfdD4oRkxBR193aWR0aCk7CiB9CiAKLURFRklORV9pbnQoaGVpZ2h0
LCA0ODAsICJWaWRlbyBoZWlnaHQuIik7CitXRUJSVENfREVGSU5FX2ludChoZWlnaHQsIDQ4MCwg
IlZpZGVvIGhlaWdodC4iKTsKIHNpemVfdCBIZWlnaHQoKSB7CiAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KEZMQUdfaGVpZ2h0KTsKIH0KIAotREVGSU5FX2ludChmcHMsIDMwLCAiRnJhbWVz
IHBlciBzZWNvbmQuIik7CitXRUJSVENfREVGSU5FX2ludChmcHMsIDMwLCAiRnJhbWVzIHBlciBz
ZWNvbmQuIik7CiBpbnQgRnBzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2Zw
cyk7CiB9CiAKLURFRklORV9pbnQoY2FwdHVyZV9kZXZpY2VfaW5kZXgsIDAsICJDYXB0dXJlIGRl
dmljZSB0byBzZWxlY3QiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGNhcHR1cmVfZGV2aWNlX2luZGV4
LCAwLCAiQ2FwdHVyZSBkZXZpY2UgdG8gc2VsZWN0Iik7CiBzaXplX3QgR2V0Q2FwdHVyZURldmlj
ZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oRkxBR19jYXB0dXJlX2RldmljZV9p
bmRleCk7CiB9CiAKLURFRklORV9pbnQobWluX2JpdHJhdGUsIDUwLCAiQ2FsbCBhbmQgc3RyZWFt
IG1pbiBiaXRyYXRlIGluIGticHMuIik7CitXRUJSVENfREVGSU5FX2ludChtaW5fYml0cmF0ZSwg
NTAsICJDYWxsIGFuZCBzdHJlYW0gbWluIGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBNaW5CaXRy
YXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19taW5fYml0cmF0ZSk7
CiB9CiAKLURFRklORV9pbnQoc3RhcnRfYml0cmF0ZSwgMzAwLCAiQ2FsbCBzdGFydCBiaXRyYXRl
IGluIGticHMuIik7CitXRUJSVENfREVGSU5FX2ludChzdGFydF9iaXRyYXRlLCAzMDAsICJDYWxs
IHN0YXJ0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBTdGFydEJpdHJhdGVLYnBzKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3N0YXJ0X2JpdHJhdGUpOwogfQogCi1ERUZJTkVf
aW50KHRhcmdldF9iaXRyYXRlLCA4MDAsICJTdHJlYW0gdGFyZ2V0IGJpdHJhdGUgaW4ga2Jwcy4i
KTsKK1dFQlJUQ19ERUZJTkVfaW50KHRhcmdldF9iaXRyYXRlLCA4MDAsICJTdHJlYW0gdGFyZ2V0
IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBUYXJnZXRCaXRyYXRlS2JwcygpIHsKICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oRkxBR190YXJnZXRfYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQo
bWF4X2JpdHJhdGUsIDgwMCwgIkNhbGwgYW5kIHN0cmVhbSBtYXggYml0cmF0ZSBpbiBrYnBzLiIp
OworV0VCUlRDX0RFRklORV9pbnQobWF4X2JpdHJhdGUsIDgwMCwgIkNhbGwgYW5kIHN0cmVhbSBt
YXggYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IE1heEJpdHJhdGVLYnBzKCkgewogICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihGTEFHX21heF9iaXRyYXRlKTsKIH0KIAotREVGSU5FX2Jvb2woc3Vz
cGVuZF9iZWxvd19taW5fYml0cmF0ZSwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAg
IlN1c3BlbmRzIHZpZGVvIGJlbG93IHRoZSBjb25maWd1cmVkIG1pbiBiaXRyYXRlLiIpOworV0VC
UlRDX0RFRklORV9ib29sKHN1c3BlbmRfYmVsb3dfbWluX2JpdHJhdGUsCisgICAgICAgICAgICAg
ICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlN1c3BlbmRzIHZpZGVvIGJlbG93IHRo
ZSBjb25maWd1cmVkIG1pbiBiaXRyYXRlLiIpOwogCi1ERUZJTkVfaW50KG51bV90ZW1wb3JhbF9s
YXllcnMsCi0gICAgICAgICAgIDEsCi0gICAgICAgICAgICJOdW1iZXIgb2YgdGVtcG9yYWwgbGF5
ZXJzLiBTZXQgdG8gMS00IHRvIG92ZXJyaWRlLiIpOworV0VCUlRDX0RFRklORV9pbnQobnVtX3Rl
bXBvcmFsX2xheWVycywKKyAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAi
TnVtYmVyIG9mIHRlbXBvcmFsIGxheWVycy4gU2V0IHRvIDEtNCB0byBvdmVycmlkZS4iKTsKIGlu
dCBOdW1UZW1wb3JhbExheWVycygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19u
dW1fdGVtcG9yYWxfbGF5ZXJzKTsKIH0KIAotREVGSU5FX2ludChpbnRlcl9sYXllcl9wcmVkLAot
ICAgICAgICAgICAyLAotICAgICAgICAgICAiSW50ZXItbGF5ZXIgcHJlZGljdGlvbiBtb2RlLiAi
Ci0gICAgICAgICAgICIwIC0gZW5hYmxlZCwgMSAtIGRpc2FibGVkLCAyIC0gZW5hYmxlZCBvbmx5
IGZvciBrZXkgcGljdHVyZXMuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICBpbnRlcl9sYXll
cl9wcmVkLAorICAgIDIsCisgICAgIkludGVyLWxheWVyIHByZWRpY3Rpb24gbW9kZS4gIgorICAg
ICIwIC0gZW5hYmxlZCwgMSAtIGRpc2FibGVkLCAyIC0gZW5hYmxlZCBvbmx5IGZvciBrZXkgcGlj
dHVyZXMuIik7CiBJbnRlckxheWVyUHJlZE1vZGUgSW50ZXJMYXllclByZWQoKSB7CiAgIGlmIChG
TEFHX2ludGVyX2xheWVyX3ByZWQgPT0gMCkgewogICAgIHJldHVybiBJbnRlckxheWVyUHJlZE1v
ZGU6OmtPbjsKQEAgLTg5LDE5ICs5MCwyMCBAQCBJbnRlckxheWVyUHJlZE1vZGUgSW50ZXJMYXll
clByZWQoKSB7CiB9CiAKIC8vIEZsYWdzIGNvbW1vbiB3aXRoIHNjcmVlbnNoYXJlIGxvb3BiYWNr
LCB3aXRoIGVxdWFsIGRlZmF1bHQgdmFsdWVzLgotREVGSU5FX3N0cmluZyhjb2RlYywgIlZQOCIs
ICJWaWRlbyBjb2RlYyB0byB1c2UuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhjb2RlYywgIlZQ
OCIsICJWaWRlbyBjb2RlYyB0byB1c2UuIik7CiBzdGQ6OnN0cmluZyBDb2RlYygpIHsKICAgcmV0
dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2NvZGVjKTsKIH0KIAotREVGSU5FX2lu
dChzZWxlY3RlZF90bCwKLSAgICAgICAgICAgLTEsCi0gICAgICAgICAgICJUZW1wb3JhbCBsYXll
ciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2FibGUgZmlsdGVyaW5nLiIpOworV0VCUlRD
X0RFRklORV9pbnQoCisgICAgc2VsZWN0ZWRfdGwsCisgICAgLTEsCisgICAgIlRlbXBvcmFsIGxh
eWVyIHRvIHNob3cgb3IgYW5hbHl6ZS4gLTEgdG8gZGlzYWJsZSBmaWx0ZXJpbmcuIik7CiBpbnQg
U2VsZWN0ZWRUTCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zZWxlY3RlZF90
bCk7CiB9CiAKLURFRklORV9pbnQoCitXRUJSVENfREVGSU5FX2ludCgKICAgICBkdXJhdGlvbiwK
ICAgICAwLAogICAgICJEdXJhdGlvbiBvZiB0aGUgdGVzdCBpbiBzZWNvbmRzLiBJZiAwLCByZW5k
ZXJlZCB3aWxsIGJlIHNob3duIGluc3RlYWQuIik7CkBAIC0xMDksMTc3ICsxMTEsMTk2IEBAIGlu
dCBEdXJhdGlvblNlY3MoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfZHVyYXRp
b24pOwogfQogCi1ERUZJTkVfc3RyaW5nKG91dHB1dF9maWxlbmFtZSwgIiIsICJUYXJnZXQgZ3Jh
cGggZGF0YSBmaWxlbmFtZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKG91dHB1dF9maWxlbmFt
ZSwgIiIsICJUYXJnZXQgZ3JhcGggZGF0YSBmaWxlbmFtZS4iKTsKIHN0ZDo6c3RyaW5nIE91dHB1
dEZpbGVuYW1lKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfb3V0
cHV0X2ZpbGVuYW1lKTsKIH0KIAotREVGSU5FX3N0cmluZyhncmFwaF90aXRsZSwKLSAgICAgICAg
ICAgICAgIiIsCi0gICAgICAgICAgICAgICJJZiBlbXB0eSwgdGl0bGUgd2lsbCBiZSBnZW5lcmF0
ZWQgYXV0b21hdGljYWxseS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGdyYXBoX3RpdGxlLAor
ICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiSWYgZW1wdHks
IHRpdGxlIHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuIik7CiBzdGQ6OnN0cmluZyBH
cmFwaFRpdGxlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfZ3Jh
cGhfdGl0bGUpOwogfQogCi1ERUZJTkVfaW50KGxvc3NfcGVyY2VudCwgMCwgIlBlcmNlbnRhZ2Ug
b2YgcGFja2V0cyByYW5kb21seSBsb3N0LiIpOworV0VCUlRDX0RFRklORV9pbnQobG9zc19wZXJj
ZW50LCAwLCAiUGVyY2VudGFnZSBvZiBwYWNrZXRzIHJhbmRvbWx5IGxvc3QuIik7CiBpbnQgTG9z
c1BlcmNlbnQoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbG9zc19wZXJjZW50
KTsKIH0KIAotREVGSU5FX2ludChhdmdfYnVyc3RfbG9zc19sZW5ndGgsIC0xLCAiQXZlcmFnZSBi
dXJzdCBsZW5ndGggb2YgbG9zdCBwYWNrZXRzLiIpOworV0VCUlRDX0RFRklORV9pbnQoYXZnX2J1
cnN0X2xvc3NfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAg
ICAiQXZlcmFnZSBidXJzdCBsZW5ndGggb2YgbG9zdCBwYWNrZXRzLiIpOwogaW50IEF2Z0J1cnN0
TG9zc0xlbmd0aCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19hdmdfYnVyc3Rf
bG9zc19sZW5ndGgpOwogfQogCi1ERUZJTkVfaW50KGxpbmtfY2FwYWNpdHksCi0gICAgICAgICAg
IDAsCi0gICAgICAgICAgICJDYXBhY2l0eSAoa2Jwcykgb2YgdGhlIGZha2UgbGluay4gMCBtZWFu
cyBpbmZpbml0ZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGxpbmtfY2FwYWNpdHksCisgICAgICAg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIkNhcGFjaXR5IChrYnBzKSBvZiB0aGUg
ZmFrZSBsaW5rLiAwIG1lYW5zIGluZmluaXRlLiIpOwogaW50IExpbmtDYXBhY2l0eUticHMoKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbGlua19jYXBhY2l0eSk7CiB9CiAKLURF
RklORV9pbnQocXVldWVfc2l6ZSwgMCwgIlNpemUgb2YgdGhlIGJvdHRsZW5lY2sgbGluayBxdWV1
ZSBpbiBwYWNrZXRzLiIpOworV0VCUlRDX0RFRklORV9pbnQocXVldWVfc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiU2l6ZSBvZiB0aGUgYm90dGxlbmVjayBs
aW5rIHF1ZXVlIGluIHBhY2tldHMuIik7CiBpbnQgUXVldWVTaXplKCkgewogICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihGTEFHX3F1ZXVlX3NpemUpOwogfQogCi1ERUZJTkVfaW50KGF2Z19wcm9w
YWdhdGlvbl9kZWxheV9tcywKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkF2ZXJhZ2UgbGlu
ayBwcm9wYWdhdGlvbiBkZWxheSBpbiBtcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGF2Z19wcm9w
YWdhdGlvbl9kZWxheV9tcywKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAg
ICAiQXZlcmFnZSBsaW5rIHByb3BhZ2F0aW9uIGRlbGF5IGluIG1zLiIpOwogaW50IEF2Z1Byb3Bh
Z2F0aW9uRGVsYXlNcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19hdmdfcHJv
cGFnYXRpb25fZGVsYXlfbXMpOwogfQogCi1ERUZJTkVfc3RyaW5nKHJ0Y19ldmVudF9sb2dfbmFt
ZSwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJGaWxlbmFtZSBmb3IgcnRjIGV2
ZW50IGxvZy4gVHdvIGZpbGVzICIKLSAgICAgICAgICAgICAgIndpdGggXCJfc2VuZFwiIGFuZCBc
Il9yZWN2XCIgc3VmZml4ZXMgd2lsbCBiZSBjcmVhdGVkLiIpOworV0VCUlRDX0RFRklORV9zdHJp
bmcocnRjX2V2ZW50X2xvZ19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAg
ICAgICAgICAgICAgICAiRmlsZW5hbWUgZm9yIHJ0YyBldmVudCBsb2cuIFR3byBmaWxlcyAiCisg
ICAgICAgICAgICAgICAgICAgICAid2l0aCBcIl9zZW5kXCIgYW5kIFwiX3JlY3ZcIiBzdWZmaXhl
cyB3aWxsIGJlIGNyZWF0ZWQuIik7CiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ05hbWUoKSB7CiAg
IHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19ydGNfZXZlbnRfbG9nX25hbWUp
OwogfQogCi1ERUZJTkVfc3RyaW5nKHJ0cF9kdW1wX25hbWUsICIiLCAiRmlsZW5hbWUgZm9yIGR1
bXBlZCByZWNlaXZlZCBSVFAgc3RyZWFtLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcocnRwX2R1
bXBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAg
IkZpbGVuYW1lIGZvciBkdW1wZWQgcmVjZWl2ZWQgUlRQIHN0cmVhbS4iKTsKIHN0ZDo6c3RyaW5n
IFJ0cER1bXBOYW1lKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdf
cnRwX2R1bXBfbmFtZSk7CiB9CiAKLURFRklORV9pbnQoc3RkX3Byb3BhZ2F0aW9uX2RlbGF5X21z
LAotICAgICAgICAgICAwLAotICAgICAgICAgICAiTGluayBwcm9wYWdhdGlvbiBkZWxheSBzdGFu
ZGFyZCBkZXZpYXRpb24gaW4gbXMuIik7CitXRUJSVENfREVGSU5FX2ludChzdGRfcHJvcGFnYXRp
b25fZGVsYXlfbXMsCisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIkxp
bmsgcHJvcGFnYXRpb24gZGVsYXkgc3RhbmRhcmQgZGV2aWF0aW9uIGluIG1zLiIpOwogaW50IFN0
ZFByb3BhZ2F0aW9uRGVsYXlNcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19z
dGRfcHJvcGFnYXRpb25fZGVsYXlfbXMpOwogfQogCi1ERUZJTkVfaW50KG51bV9zdHJlYW1zLCAw
LCAiTnVtYmVyIG9mIHN0cmVhbXMgdG8gc2hvdyBvciBhbmFseXplLiIpOworV0VCUlRDX0RFRklO
RV9pbnQobnVtX3N0cmVhbXMsIDAsICJOdW1iZXIgb2Ygc3RyZWFtcyB0byBzaG93IG9yIGFuYWx5
emUuIik7CiBpbnQgTnVtU3RyZWFtcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxB
R19udW1fc3RyZWFtcyk7CiB9CiAKLURFRklORV9pbnQoc2VsZWN0ZWRfc3RyZWFtLAotICAgICAg
ICAgICAwLAotICAgICAgICAgICAiSUQgb2YgdGhlIHN0cmVhbSB0byBzaG93IG9yIGFuYWx5emUu
ICIKLSAgICAgICAgICAgIlNldCB0byB0aGUgbnVtYmVyIG9mIHN0cmVhbXMgdG8gc2hvdyB0aGVt
IGFsbC4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNlbGVjdGVkX3N0cmVhbSwKKyAgICAgICAgICAg
ICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiSUQgb2YgdGhlIHN0cmVhbSB0byBzaG93IG9y
IGFuYWx5emUuICIKKyAgICAgICAgICAgICAgICAgICJTZXQgdG8gdGhlIG51bWJlciBvZiBzdHJl
YW1zIHRvIHNob3cgdGhlbSBhbGwuIik7CiBpbnQgU2VsZWN0ZWRTdHJlYW0oKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2VsZWN0ZWRfc3RyZWFtKTsKIH0KIAotREVGSU5FX2lu
dChudW1fc3BhdGlhbF9sYXllcnMsIDEsICJOdW1iZXIgb2Ygc3BhdGlhbCBsYXllcnMgdG8gdXNl
LiIpOworV0VCUlRDX0RFRklORV9pbnQobnVtX3NwYXRpYWxfbGF5ZXJzLCAxLCAiTnVtYmVyIG9m
IHNwYXRpYWwgbGF5ZXJzIHRvIHVzZS4iKTsKIGludCBOdW1TcGF0aWFsTGF5ZXJzKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX251bV9zcGF0aWFsX2xheWVycyk7CiB9CiAKLURF
RklORV9pbnQoc2VsZWN0ZWRfc2wsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiU3BhdGlh
bCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2FibGUgZmlsdGVyaW5nLiIpOwor
V0VCUlRDX0RFRklORV9pbnQoc2VsZWN0ZWRfc2wsCisgICAgICAgICAgICAgICAgICAtMSwKKyAg
ICAgICAgICAgICAgICAgICJTcGF0aWFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZS4gLTEgdG8g
ZGlzYWJsZSBmaWx0ZXJpbmcuIik7CiBpbnQgU2VsZWN0ZWRTTCgpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4oRkxBR19zZWxlY3RlZF9zbCk7CiB9CiAKLURFRklORV9zdHJpbmcoc3RyZWFt
MCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJDb21tYSBzZXBhcmF0ZWQgdmFs
dWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHN0cmVhbSAjMC4iKTsKK1dFQlJUQ19ERUZJ
TkVfc3RyaW5nKAorICAgIHN0cmVhbTAsCisgICAgIiIsCisgICAgIkNvbW1hIHNlcGFyYXRlZCB2
YWx1ZXMgZGVzY3JpYmluZyBWaWRlb1N0cmVhbSBmb3Igc3RyZWFtICMwLiIpOwogc3RkOjpzdHJp
bmcgU3RyZWFtMCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3N0
cmVhbTApOwogfQogCi1ERUZJTkVfc3RyaW5nKHN0cmVhbTEsCi0gICAgICAgICAgICAgICIiLAot
ICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFZpZGVvU3Ry
ZWFtIGZvciBzdHJlYW0gIzEuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzdHJlYW0x
LAorICAgICIiLAorICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9T
dHJlYW0gZm9yIHN0cmVhbSAjMS4iKTsKIHN0ZDo6c3RyaW5nIFN0cmVhbTEoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zdHJlYW0xKTsKIH0KIAotREVGSU5FX3N0
cmluZyhzbDAsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJh
dGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3IgbGF5ZXIgIzAuIik7CitXRUJS
VENfREVGSU5FX3N0cmluZygKKyAgICBzbDAsCisgICAgIiIsCisgICAgIkNvbW1hIHNlcGFyYXRl
ZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxheWVyICMwLiIpOwogc3RkOjpz
dHJpbmcgU0wwKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc2ww
KTsKIH0KIAotREVGSU5FX3N0cmluZyhzbDEsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAg
ICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3Ig
bGF5ZXIgIzEuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzbDEsCisgICAgIiIsCisg
ICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxh
eWVyICMxLiIpOwogc3RkOjpzdHJpbmcgU0wxKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3Rk
OjpzdHJpbmc+KEZMQUdfc2wxKTsKIH0KIAotREVGSU5FX3N0cmluZyhlbmNvZGVkX2ZyYW1lX3Bh
dGgsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiVGhlIGJhc2UgcGF0aCBmb3Ig
ZW5jb2RlZCBmcmFtZSBsb2dzLiBDcmVhdGVkIGZpbGVzIHdpbGwgaGF2ZSAiCi0gICAgICAgICAg
ICAgICJ0aGUgZm9ybSA8ZW5jb2RlZF9mcmFtZV9wYXRoPi48bj4uKHJlY3Z8c2VuZC48bT4pLml2
ZiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgZW5jb2RlZF9mcmFtZV9wYXRoLAorICAg
ICIiLAorICAgICJUaGUgYmFzZSBwYXRoIGZvciBlbmNvZGVkIGZyYW1lIGxvZ3MuIENyZWF0ZWQg
ZmlsZXMgd2lsbCBoYXZlICIKKyAgICAidGhlIGZvcm0gPGVuY29kZWRfZnJhbWVfcGF0aD4uPG4+
LihyZWN2fHNlbmQuPG0+KS5pdmYiKTsKIHN0ZDo6c3RyaW5nIEVuY29kZWRGcmFtZVBhdGgoKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19lbmNvZGVkX2ZyYW1lX3Bh
dGgpOwogfQogCi1ERUZJTkVfYm9vbChsb2dzLCBmYWxzZSwgInByaW50IGxvZ3MgdG8gc3RkZXJy
Iik7CitXRUJSVENfREVGSU5FX2Jvb2wobG9ncywgZmFsc2UsICJwcmludCBsb2dzIHRvIHN0ZGVy
ciIpOwogCi1ERUZJTkVfYm9vbChzZW5kX3NpZGVfYndlLCB0cnVlLCAiVXNlIHNlbmQtc2lkZSBi
YW5kd2lkdGggZXN0aW1hdGlvbiIpOworV0VCUlRDX0RFRklORV9ib29sKHNlbmRfc2lkZV9id2Us
IHRydWUsICJVc2Ugc2VuZC1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0aW9uIik7CiAKLURFRklORV9i
b29sKGdlbmVyaWNfZGVzY3JpcHRvciwgZmFsc2UsICJVc2UgdGhlIGdlbmVyaWMgZnJhbWUgZGVz
Y3JpcHRvci4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChnZW5lcmljX2Rlc2NyaXB0b3IsCisgICAg
ICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlVzZSB0aGUgZ2VuZXJp
YyBmcmFtZSBkZXNjcmlwdG9yLiIpOwogCi1ERUZJTkVfYm9vbChhbGxvd19yZW9yZGVyaW5nLCBm
YWxzZSwgIkFsbG93IHBhY2tldCByZW9yZGVyaW5nIHRvIG9jY3VyIik7CitXRUJSVENfREVGSU5F
X2Jvb2woYWxsb3dfcmVvcmRlcmluZywgZmFsc2UsICJBbGxvdyBwYWNrZXQgcmVvcmRlcmluZyB0
byBvY2N1ciIpOwogCi1ERUZJTkVfYm9vbCh1c2VfdWxwZmVjLCBmYWxzZSwgIlVzZSBSRUQrVUxQ
RkVDIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbi4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCh1c2Vf
dWxwZmVjLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJV
c2UgUkVEK1VMUEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24uIik7CiAKLURFRklORV9ib29s
KHVzZV9mbGV4ZmVjLCBmYWxzZSwgIlVzZSBGbGV4RkVDIGZvcndhcmQgZXJyb3IgY29ycmVjdGlv
bi4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCh1c2VfZmxleGZlYywgZmFsc2UsICJVc2UgRmxleEZF
QyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24uIik7CiAKLURFRklORV9ib29sKGF1ZGlvLCBmYWxz
ZSwgIkFkZCBhdWRpbyBzdHJlYW0iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChhdWRpbywgZmFsc2Us
ICJBZGQgYXVkaW8gc3RyZWFtIik7CiAKLURFRklORV9ib29sKHVzZV9yZWFsX2FkbSwKLSAgICAg
ICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlVzZSByZWFsIEFETSBpbnN0ZWFkIG9mIGZha2Ug
KG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSkiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAg
ICB1c2VfcmVhbF9hZG0sCisgICAgZmFsc2UsCisgICAgIlVzZSByZWFsIEFETSBpbnN0ZWFkIG9m
IGZha2UgKG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSkiKTsKIAotREVGSU5FX2Jvb2woYXVk
aW9fdmlkZW9fc3luYywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlN5bmMgYXVk
aW8gYW5kIHZpZGVvIHN0cmVhbSAobm8gZWZmZWN0IGlmIgotICAgICAgICAgICAgIiBhdWRpbyBp
cyBmYWxzZSkiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChhdWRpb192aWRlb19zeW5jLAorICAgICAg
ICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJTeW5jIGF1ZGlvIGFuZCB2
aWRlbyBzdHJlYW0gKG5vIGVmZmVjdCBpZiIKKyAgICAgICAgICAgICAgICAgICAiIGF1ZGlvIGlz
IGZhbHNlKSIpOwogCi1ERUZJTkVfYm9vbChhdWRpb19kdHgsIGZhbHNlLCAiRW5hYmxlIGF1ZGlv
IERUWCAobm8gZWZmZWN0IGlmIGF1ZGlvIGlzIGZhbHNlKSIpOworV0VCUlRDX0RFRklORV9ib29s
KGF1ZGlvX2R0eCwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAiRW5hYmxlIGF1ZGlvIERUWCAobm8gZWZmZWN0IGlmIGF1ZGlvIGlzIGZhbHNlKSIpOwogCi1E
RUZJTkVfYm9vbCh2aWRlbywgdHJ1ZSwgIkFkZCB2aWRlbyBzdHJlYW0iKTsKK1dFQlJUQ19ERUZJ
TkVfYm9vbCh2aWRlbywgdHJ1ZSwgIkFkZCB2aWRlbyBzdHJlYW0iKTsKIAotREVGSU5FX3N0cmlu
ZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIGZvcmNlX2ZpZWxkdHJpYWxzLAogICAgICIi
LAogICAgICJGaWVsZCB0cmlhbHMgY29udHJvbCBleHBlcmltZW50YWwgZmVhdHVyZSBjb2RlIHdo
aWNoIGNhbiBiZSBmb3JjZWQuICIKLSAgICAiRS5nLiBydW5uaW5nIHdpdGggLS1mb3JjZV9maWVs
ZHRyaWFscz1XZWJSVEMtRm9vRmVhdHVyZS9FbmFibGUvIgorICAgICJFLmcuIHJ1bm5pbmcgd2l0
aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZWQvIgogICAgICIg
d2lsbCBhc3NpZ24gdGhlIGdyb3VwIEVuYWJsZSB0byBmaWVsZCB0cmlhbCBXZWJSVEMtRm9vRmVh
dHVyZS4gTXVsdGlwbGUgIgogICAgICJ0cmlhbHMgYXJlIHNlcGFyYXRlZCBieSBcIi9cIiIpOwog
CiAvLyBWaWRlby1zcGVjaWZpYyBmbGFncy4KLURFRklORV9zdHJpbmcoY2xpcCwKLSAgICAgICAg
ICAgICAgIiIsCi0gICAgICAgICAgICAgICJOYW1lIG9mIHRoZSBjbGlwIHRvIHNob3cuIElmIGVt
cHR5LCB1c2luZyBjaHJvbWEgZ2VuZXJhdG9yLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisg
ICAgY2xpcCwKKyAgICAiIiwKKyAgICAiTmFtZSBvZiB0aGUgY2xpcCB0byBzaG93LiBJZiBlbXB0
eSwgdXNpbmcgY2hyb21hIGdlbmVyYXRvci4iKTsKIHN0ZDo6c3RyaW5nIENsaXAoKSB7CiAgIHJl
dHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19jbGlwKTsKIH0KIAotREVGSU5FX2Jv
b2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2Jv
b2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNzYWdlIik7CiAKIH0gIC8vIG5hbWVzcGFj
ZSBmbGFncwogCiB2b2lkIExvb3BiYWNrKCkgewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWcgcGlwZV9jb25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgcGlwZV9j
b25maWc7CiAgIHBpcGVfY29uZmlnLmxvc3NfcGVyY2VudCA9IGZsYWdzOjpMb3NzUGVyY2VudCgp
OwogICBwaXBlX2NvbmZpZy5hdmdfYnVyc3RfbG9zc19sZW5ndGggPSBmbGFnczo6QXZnQnVyc3RM
b3NzTGVuZ3RoKCk7CiAgIHBpcGVfY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IGZsYWdzOjpM
aW5rQ2FwYWNpdHlLYnBzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X29ic2VydmVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcXVhbGl0eV9v
YnNlcnZlci5jYwppbmRleCBiMDVjMzUzNWUwY2U3MTcxNTIzMjFmNGE2YjBhNmZhNTE0NDc4ZDA5
Li5jNGE1NzRhYmZlMGU2MGExODI4NzljNTM0OWYxMzM2ODc4ZWY0MzU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFs
aXR5X29ic2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfb2JzZXJ2ZXIuY2MKQEAgLTM0LDcgKzM0LDkgQEAg
Y29uc3QgaW50IGtCbG9ja3lRcFRocmVzaG9sZFZwOSA9IDYwOyAgLy8gVE9ETyhpbG5payk6IHR1
bmUgdGhpcyB2YWx1ZS4KIAogVmlkZW9RdWFsaXR5T2JzZXJ2ZXI6OlZpZGVvUXVhbGl0eU9ic2Vy
dmVyKFZpZGVvQ29udGVudFR5cGUgY29udGVudF90eXBlKQogICAgIDogbGFzdF9mcmFtZV9kZWNv
ZGVkX21zXygtMSksCisgICAgICBsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXygtMSksCiAgICAgICBu
dW1fZnJhbWVzX2RlY29kZWRfKDApLAorICAgICAgbnVtX2ZyYW1lc19yZW5kZXJlZF8oMCksCiAg
ICAgICBmaXJzdF9mcmFtZV9kZWNvZGVkX21zXygtMSksCiAgICAgICBsYXN0X2ZyYW1lX3BpeGVs
c18oMCksCiAgICAgICBsYXN0X2ZyYW1lX3FwXygwKSwKQEAgLTExOSw2ICsxMjEsNDYgQEAgdm9p
ZCBWaWRlb1F1YWxpdHlPYnNlcnZlcjo6VXBkYXRlSGlzdG9ncmFtcygpIHsKICAgUlRDX0xPRyhM
U19JTkZPKSA8PCBsb2dfc3RyZWFtLnN0cigpOwogfQogCit2b2lkIFZpZGVvUXVhbGl0eU9ic2Vy
dmVyOjpPblJlbmRlcmVkRnJhbWUoaW50NjRfdCBub3dfbXMpIHsKKyAgaWYgKG51bV9mcmFtZXNf
cmVuZGVyZWRfID09IDApIHsKKyAgICBsYXN0X3VuZnJlZXplX3RpbWVfID0gbm93X21zOworICB9
CisKKyAgKytudW1fZnJhbWVzX3JlbmRlcmVkXzsKKworICBpZiAoIWlzX3BhdXNlZF8gJiYgbnVt
X2ZyYW1lc19yZW5kZXJlZF8gPiAxKSB7CisgICAgLy8gUHJvY2VzcyBpbnRlci1mcmFtZSBkZWxh
eS4KKyAgICBpbnQ2NF90IGludGVyZnJhbWVfZGVsYXlfbXMgPSBub3dfbXMgLSBsYXN0X2ZyYW1l
X3JlbmRlcmVkX21zXzsKKyAgICByZW5kZXJfaW50ZXJmcmFtZV9kZWxheXNfLkFkZChpbnRlcmZy
YW1lX2RlbGF5X21zKTsKKyAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IGF2Z19pbnRlcmZyYW1lX2Rl
bGF5ID0KKyAgICAgICAgcmVuZGVyX2ludGVyZnJhbWVfZGVsYXlzXy5Bdmcoa01pbkZyYW1lU2Ft
cGxlc1RvRGV0ZWN0RnJlZXplKTsKKyAgICAvLyBDaGVjayBpZiBpdCB3YXMgYSBmcmVlemUuCisg
ICAgaWYgKGF2Z19pbnRlcmZyYW1lX2RlbGF5ICYmCisgICAgICAgIGludGVyZnJhbWVfZGVsYXlf
bXMgPj0KKyAgICAgICAgICAgIHN0ZDo6bWF4KDMgKiAqYXZnX2ludGVyZnJhbWVfZGVsYXksCisg
ICAgICAgICAgICAgICAgICAgICAqYXZnX2ludGVyZnJhbWVfZGVsYXkgKyBrTWluSW5jcmVhc2VG
b3JGcmVlemVNcykpIHsKKyAgICAgIGZyZWV6ZXNfZHVyYXRpb25zXy5BZGQoaW50ZXJmcmFtZV9k
ZWxheV9tcyk7CisgICAgICBzbW9vdGhfcGxheWJhY2tfZHVyYXRpb25zXy5BZGQobGFzdF9mcmFt
ZV9yZW5kZXJlZF9tc18gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh
c3RfdW5mcmVlemVfdGltZV8pOworICAgICAgbGFzdF91bmZyZWV6ZV90aW1lXyA9IG5vd19tczsK
KyAgICB9CisgIH0KKworICBpZiAoaXNfcGF1c2VkXykgeworICAgIC8vIElmIHRoZSBzdHJlYW0g
d2FzIHBhdXNlZCBzaW5jZSB0aGUgcHJldmlvdXMgZnJhbWUsIGRvIG5vdCBjb3VudCB0aGUKKyAg
ICAvLyBwYXVzZSB0b3dhcmQgc21vb3RoIHBsYXliYWNrLiBFeHBsaWNpdGx5IGNvdW50IHRoZSBw
YXJ0IGJlZm9yZSBpdCBhbmQKKyAgICAvLyBzdGFydCB0aGUgbmV3IHNtb290aCBwbGF5YmFjayBp
bnRlcnZhbCBmcm9tIHRoaXMgZnJhbWUuCisgICAgaXNfcGF1c2VkXyA9IGZhbHNlOworICAgIGlm
IChsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXyA+IGxhc3RfdW5mcmVlemVfdGltZV8pIHsKKyAgICAg
IHNtb290aF9wbGF5YmFja19kdXJhdGlvbnNfLkFkZChsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXyAt
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF91bmZyZWV6ZV90aW1l
Xyk7CisgICAgfQorICAgIGxhc3RfdW5mcmVlemVfdGltZV8gPSBub3dfbXM7CisgIH0KKworICBs
YXN0X2ZyYW1lX3JlbmRlcmVkX21zXyA9IG5vd19tczsKK30KKwogdm9pZCBWaWRlb1F1YWxpdHlP
YnNlcnZlcjo6T25EZWNvZGVkRnJhbWUoYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gcXAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LApAQCAtMTI2LDcg
KzE2OCw2IEBAIHZvaWQgVmlkZW9RdWFsaXR5T2JzZXJ2ZXI6Ok9uRGVjb2RlZEZyYW1lKGFic2w6
Om9wdGlvbmFsPHVpbnQ4X3Q+IHFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmlkZW9Db2RlY1R5cGUgY29kZWMpIHsKICAgaWYgKG51bV9mcmFtZXNfZGVjb2Rl
ZF8gPT0gMCkgewogICAgIGZpcnN0X2ZyYW1lX2RlY29kZWRfbXNfID0gbm93X21zOwotICAgIGxh
c3RfdW5mcmVlemVfdGltZV8gPSBub3dfbXM7CiAgIH0KIAogICArK251bV9mcmFtZXNfZGVjb2Rl
ZF87CkBAIC0xMzQsMjEgKzE3NSwxNCBAQCB2b2lkIFZpZGVvUXVhbGl0eU9ic2VydmVyOjpPbkRl
Y29kZWRGcmFtZShhYnNsOjpvcHRpb25hbDx1aW50OF90PiBxcCwKICAgaWYgKCFpc19wYXVzZWRf
ICYmIG51bV9mcmFtZXNfZGVjb2RlZF8gPiAxKSB7CiAgICAgLy8gUHJvY2VzcyBpbnRlci1mcmFt
ZSBkZWxheS4KICAgICBpbnQ2NF90IGludGVyZnJhbWVfZGVsYXlfbXMgPSBub3dfbXMgLSBsYXN0
X2ZyYW1lX2RlY29kZWRfbXNfOwotICAgIGludGVyZnJhbWVfZGVsYXlzXy5BZGQoaW50ZXJmcmFt
ZV9kZWxheV9tcyk7CisgICAgZGVjb2RlX2ludGVyZnJhbWVfZGVsYXlzXy5BZGQoaW50ZXJmcmFt
ZV9kZWxheV9tcyk7CiAgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBhdmdfaW50ZXJmcmFtZV9kZWxh
eSA9Ci0gICAgICAgIGludGVyZnJhbWVfZGVsYXlzXy5Bdmcoa01pbkZyYW1lU2FtcGxlc1RvRGV0
ZWN0RnJlZXplKTsKLSAgICAvLyBDaGVjayBpZiBpdCB3YXMgYSBmcmVlemUuCi0gICAgaWYgKGF2
Z19pbnRlcmZyYW1lX2RlbGF5ICYmCi0gICAgICAgIGludGVyZnJhbWVfZGVsYXlfbXMgPj0KKyAg
ICAgICAgZGVjb2RlX2ludGVyZnJhbWVfZGVsYXlzXy5Bdmcoa01pbkZyYW1lU2FtcGxlc1RvRGV0
ZWN0RnJlZXplKTsKKyAgICAvLyBDb3VudCBzcGF0aWFsIG1ldHJpY3MgaWYgdGhlcmUgd2VyZSBu
byBmcmVlemUuCisgICAgaWYgKCFhdmdfaW50ZXJmcmFtZV9kZWxheSB8fAorICAgICAgICBpbnRl
cmZyYW1lX2RlbGF5X21zIDwKICAgICAgICAgICAgIHN0ZDo6bWF4KDMgKiAqYXZnX2ludGVyZnJh
bWVfZGVsYXksCiAgICAgICAgICAgICAgICAgICAgICAqYXZnX2ludGVyZnJhbWVfZGVsYXkgKyBr
TWluSW5jcmVhc2VGb3JGcmVlemVNcykpIHsKLSAgICAgIGZyZWV6ZXNfZHVyYXRpb25zXy5BZGQo
aW50ZXJmcmFtZV9kZWxheV9tcyk7Ci0gICAgICBzbW9vdGhfcGxheWJhY2tfZHVyYXRpb25zXy5B
ZGQobGFzdF9mcmFtZV9kZWNvZGVkX21zXyAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGFzdF91bmZyZWV6ZV90aW1lXyk7Ci0gICAgICBsYXN0X3VuZnJlZXplX3RpbWVf
ID0gbm93X21zOwotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBPbmx5IGNvdW50IGludGVyLWZyYW1l
IGRlbGF5IGFzIHBsYXliYWNrIHRpbWUgaWYgdGhlcmUKLSAgICAgIC8vIHdhcyBubyBmcmVlemUu
CiAgICAgICB0aW1lX2luX3Jlc29sdXRpb25fbXNfW2N1cnJlbnRfcmVzb2x1dGlvbl9dICs9IGlu
dGVyZnJhbWVfZGVsYXlfbXM7CiAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IHFwX2Jsb2NreV90
aHJlc2hvbGQ7CiAgICAgICAvLyBUT0RPKGlsbmlrKTogYWRkIG90aGVyIGNvZGVjIHR5cGVzIHdo
ZW4gd2UgaGF2ZSBRUCBmb3IgdGhlbS4KQEAgLTE2OCwxOCArMjAyLDYgQEAgdm9pZCBWaWRlb1F1
YWxpdHlPYnNlcnZlcjo6T25EZWNvZGVkRnJhbWUoYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gcXAs
CiAgICAgfQogICB9CiAKLSAgaWYgKGlzX3BhdXNlZF8pIHsKLSAgICAvLyBJZiB0aGUgc3RyZWFt
IHdhcyBwYXVzZWQgc2luY2UgdGhlIHByZXZpb3VzIGZyYW1lLCBkbyBub3QgY291bnQgdGhlCi0g
ICAgLy8gcGF1c2UgdG93YXJkIHNtb290aCBwbGF5YmFjay4gRXhwbGljaXRseSBjb3VudCB0aGUg
cGFydCBiZWZvcmUgaXQgYW5kCi0gICAgLy8gc3RhcnQgdGhlIG5ldyBzbW9vdGggcGxheWJhY2sg
aW50ZXJ2YWwgZnJvbSB0aGlzIGZyYW1lLgotICAgIGlzX3BhdXNlZF8gPSBmYWxzZTsKLSAgICBp
ZiAobGFzdF9mcmFtZV9kZWNvZGVkX21zXyA+IGxhc3RfdW5mcmVlemVfdGltZV8pIHsKLSAgICAg
IHNtb290aF9wbGF5YmFja19kdXJhdGlvbnNfLkFkZChsYXN0X2ZyYW1lX2RlY29kZWRfbXNfIC0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3VuZnJlZXplX3RpbWVf
KTsKLSAgICB9Ci0gICAgbGFzdF91bmZyZWV6ZV90aW1lXyA9IG5vd19tczsKLSAgfQotCiAgIGlu
dDY0X3QgcGl4ZWxzID0gd2lkdGggKiBoZWlnaHQ7CiAgIGlmIChwaXhlbHMgPj0ga1BpeGVsc0lu
SGlnaFJlc29sdXRpb24pIHsKICAgICBjdXJyZW50X3Jlc29sdXRpb25fID0gUmVzb2x1dGlvbjo6
SGlnaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfb2JzZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfb2JzZXJ2ZXIuaAppbmRl
eCA4YmE0YWYzOTg0MmE4ZGUwMTA2ODNlMWNkYTc0NDhjMWY2ZDNkYmIxLi43NGYyMDFlOGM0NWY1
M2Y1NjdlZTBjOTc1OWY4NTk4Y2I3MzQ0ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X29ic2VydmVyLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlk
ZW9fcXVhbGl0eV9vYnNlcnZlci5oCkBAIC0xNSw4ICsxNSw4IEBACiAjaW5jbHVkZSA8dmVjdG9y
PgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS92aWRl
by92aWRlb19jb2RlY190eXBlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvbnRlbnRf
dHlwZS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1
ZGUpCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FtcGxlX2NvdW50ZXIuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFZpZGVvUXVhbGl0eU9ic2Vy
dmVyIHsKICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAogICAgICAgICAgICAgICAg
ICAgICAgIGludDY0X3Qgbm93X21zLAogICAgICAgICAgICAgICAgICAgICAgIFZpZGVvQ29kZWNU
eXBlIGNvZGVjKTsKKyAgdm9pZCBPblJlbmRlcmVkRnJhbWUoaW50NjRfdCBub3dfbXMpOwogCiAg
IHZvaWQgT25TdHJlYW1JbmFjdGl2ZSgpOwogCkBAIC00OCwxMyArNDksMTYgQEAgY2xhc3MgVmlk
ZW9RdWFsaXR5T2JzZXJ2ZXIgewogICB9OwogCiAgIGludDY0X3QgbGFzdF9mcmFtZV9kZWNvZGVk
X21zXzsKKyAgaW50NjRfdCBsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXzsKICAgaW50NjRfdCBudW1f
ZnJhbWVzX2RlY29kZWRfOworICBpbnQ2NF90IG51bV9mcmFtZXNfcmVuZGVyZWRfOwogICBpbnQ2
NF90IGZpcnN0X2ZyYW1lX2RlY29kZWRfbXNfOwogICBpbnQ2NF90IGxhc3RfZnJhbWVfcGl4ZWxz
XzsKICAgdWludDhfdCBsYXN0X2ZyYW1lX3FwXzsKICAgLy8gRGVjb2RlZCB0aW1lc3RhbXAgb2Yg
dGhlIGxhc3QgZGVsYXllZCBmcmFtZS4KICAgaW50NjRfdCBsYXN0X3VuZnJlZXplX3RpbWVfOwot
ICBydGM6OlNhbXBsZUNvdW50ZXIgaW50ZXJmcmFtZV9kZWxheXNfOworICBydGM6OlNhbXBsZUNv
dW50ZXIgcmVuZGVyX2ludGVyZnJhbWVfZGVsYXlzXzsKKyAgcnRjOjpTYW1wbGVDb3VudGVyIGRl
Y29kZV9pbnRlcmZyYW1lX2RlbGF5c187CiAgIC8vIEFuIGludGVyLWZyYW1lIGRlbGF5IGlzIGNv
dW50ZWQgYXMgYSBmcmVlemUgaWYgaXQncyBzaWduaWZpY2FudGx5IGxvbmdlcgogICAvLyB0aGFu
IGF2ZXJhZ2UgaW50ZXItZnJhbWUgZGVsYXkuCiAgIHJ0Yzo6U2FtcGxlQ291bnRlciBmcmVlemVz
X2R1cmF0aW9uc187CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X3Rlc3QuY2MKaW5k
ZXggMmEzYmU2NzJkNzYwNjhhMTQxNTQzZTg5MGJhMWQ4YjYxYjViYzlhYi4uZDZjY2I2NTIyZTU4
MzIxNzdmYzViNDg1MzI5ZGFkZDkxYTAyNzY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcXVhbGl0eV90ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVv
X3F1YWxpdHlfdGVzdC5jYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNp
bmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlw
ZS5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKICNpbmNsdWRlICJsb2dn
aW5nL3J0Y19ldmVudF9sb2cvb3V0cHV0L3J0Y19ldmVudF9sb2dfb3V0cHV0X2ZpbGUuaCIKQEAg
LTM1LDcgKzM2LDcgQEAKICNpbmNsdWRlICJ0ZXN0L3J1bl9sb29wLmgiCiAjaW5jbHVkZSAidGVz
dC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKICNpbmNsdWRlICJ0ZXN0L3ZpZGVvX3JlbmRlcmVy
LmgiCi0jaW5jbHVkZSAidmlkZW8vdmlkZW9fYW5hbHl6ZXIuaCIKKyNpbmNsdWRlICJ2aWRlby9m
cmFtZV9kdW1waW5nX2RlY29kZXIuaCIKICNpZmRlZiBXRUJSVENfV0lOCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZmFjdG9yeS5oIgogI2VuZGlm
CkBAIC03NSw2MSArNzYsMTYgQEAgY2xhc3MgVmlkZW9TdHJlYW1GYWN0b3J5CiAgIHN0ZDo6dmVj
dG9yPFZpZGVvU3RyZWFtPiBzdHJlYW1zXzsKIH07CiAKLS8vIEEgZGVjb2RlciB3cmFwcGVyIHRo
YXQgd3JpdGVzIHRoZSBlbmNvZGVkIGZyYW1lcyB0byBhIGZpbGUuCi1jbGFzcyBGcmFtZUR1bXBp
bmdEZWNvZGVyIDogcHVibGljIFZpZGVvRGVjb2RlciB7CisvLyBUaGlzIHdyYXBwZXIgcHJvdmlk
ZXMgdHdvIGZlYXR1cmVzIG5lZWRlZCBieSB0aGUgdmlkZW8gcXVhbGl0eSB0ZXN0czoKKy8vICAx
LiBJbnZva2UgVmlkZW9BbmFseXplciBjYWxsYmFja3MgYmVmb3JlIGFuZCBhZnRlciBlbmNvZGlu
ZyBlYWNoIGZyYW1lLgorLy8gIDIuIFdyaXRlIHRoZSBlbmNvZGVkIGZyYW1lcyB0byBmaWxlLCBv
bmUgZmlsZSBwZXIgc2ltdWxjYXN0IGxheWVyLgorY2xhc3MgUXVhbGl0eVRlc3RWaWRlb0VuY29k
ZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcml2YXRlIEVuY29kZWRJbWFnZUNhbGxiYWNrIHsKICBwdWJsaWM6Ci0gIEZyYW1lRHVtcGlu
Z0RlY29kZXIoc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4gZGVjb2RlciwKLSAgICAgICAg
ICAgICAgICAgICAgICBydGM6OlBsYXRmb3JtRmlsZSBmaWxlKQotICAgICAgOiBkZWNvZGVyXyhz
dGQ6Om1vdmUoZGVjb2RlcikpLAotICAgICAgICB3cml0ZXJfKEl2ZkZpbGVXcml0ZXI6OldyYXAo
cnRjOjpGaWxlKGZpbGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Ynl0ZV9saW1pdD0gKi8gMTAwMDAwMDAwKSkge30KLQotICBpbnQzMl90IEluaXREZWNvZGUoY29u
c3QgVmlkZW9Db2RlYyogY29kZWNfc2V0dGluZ3MsCi0gICAgICAgICAgICAgICAgICAgICBpbnQz
Ml90IG51bWJlcl9vZl9jb3Jlcykgb3ZlcnJpZGUgewotICAgIHJldHVybiBkZWNvZGVyXy0+SW5p
dERlY29kZShjb2RlY19zZXR0aW5ncywgbnVtYmVyX29mX2NvcmVzKTsKLSAgfQotCi0gIGludDMy
X3QgRGVjb2RlKGNvbnN0IEVuY29kZWRJbWFnZSYgaW5wdXRfaW1hZ2UsCi0gICAgICAgICAgICAg
ICAgIGJvb2wgbWlzc2luZ19mcmFtZXMsCi0gICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3Bl
Y2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZvLAotICAgICAgICAgICAgICAgICBpbnQ2NF90
IHJlbmRlcl90aW1lX21zKSBvdmVycmlkZSB7Ci0gICAgaW50MzJfdCByZXQgPSBkZWNvZGVyXy0+
RGVjb2RlKGlucHV0X2ltYWdlLCBtaXNzaW5nX2ZyYW1lcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29kZWNfc3BlY2lmaWNfaW5mbywgcmVuZGVyX3RpbWVfbXMpOwotICAg
IHdyaXRlcl8tPldyaXRlRnJhbWUoaW5wdXRfaW1hZ2UsIGNvZGVjX3NwZWNpZmljX2luZm8tPmNv
ZGVjVHlwZSk7Ci0KLSAgICByZXR1cm4gcmV0OwotICB9Ci0KLSAgaW50MzJfdCBSZWdpc3RlckRl
Y29kZUNvbXBsZXRlQ2FsbGJhY2soCi0gICAgICBEZWNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJh
Y2spIG92ZXJyaWRlIHsKLSAgICByZXR1cm4gZGVjb2Rlcl8tPlJlZ2lzdGVyRGVjb2RlQ29tcGxl
dGVDYWxsYmFjayhjYWxsYmFjayk7Ci0gIH0KLQotICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlk
ZSB7IHJldHVybiBkZWNvZGVyXy0+UmVsZWFzZSgpOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBkZWNvZGVyIHByZWZlciB0byBkZWNvZGUgZnJhbWVzIGxhdGUuCi0gIC8vIFRoYXQgaXMs
IGl0IGNhbiBub3QgZGVjb2RlIGluZmluaXRlIG51bWJlciBvZiBmcmFtZXMgYmVmb3JlIHRoZSBk
ZWNvZGVkCi0gIC8vIGZyYW1lIGlzIGNvbnN1bWVkLgotICBib29sIFByZWZlcnNMYXRlRGVjb2Rp
bmcoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIGRlY29kZXJfLT5QcmVmZXJzTGF0ZURl
Y29kaW5nKCk7Ci0gIH0KLQotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25z
dCBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIGRlY29kZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKTsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4gZGVjb2Rl
cl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxJdmZGaWxlV3JpdGVyPiB3cml0ZXJfOwotfTsKLQotLy8g
QW4gZW5jb2RlciB3cmFwcGVyIHRoYXQgd3JpdGVzIHRoZSBlbmNvZGVkIGZyYW1lcyB0byBmaWxl
LCBvbmUgcGVyIHNpbXVsY2FzdAotLy8gbGF5ZXIuCi1jbGFzcyBGcmFtZUR1bXBpbmdFbmNvZGVy
IDogcHVibGljIFZpZGVvRW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7Ci0g
cHVibGljOgotICBGcmFtZUR1bXBpbmdFbmNvZGVyKHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29k
ZXI+IGVuY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpQbGF0
Zm9ybUZpbGU+IGZpbGVzKQotICAgICAgOiBlbmNvZGVyXyhzdGQ6Om1vdmUoZW5jb2RlcikpIHsK
KyAgUXVhbGl0eVRlc3RWaWRlb0VuY29kZXIoc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4g
ZW5jb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9BbmFseXplciogYW5hbHl6
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6UGxhdGZvcm1G
aWxlPiBmaWxlcykKKyAgICAgIDogZW5jb2Rlcl8oc3RkOjptb3ZlKGVuY29kZXIpKSwgYW5hbHl6
ZXJfKGFuYWx5emVyKSB7CiAgICAgZm9yIChydGM6OlBsYXRmb3JtRmlsZSBmaWxlIDogZmlsZXMp
IHsKICAgICAgIHdyaXRlcnNfLnB1c2hfYmFjaygKICAgICAgICAgICBJdmZGaWxlV3JpdGVyOjpX
cmFwKHJ0Yzo6RmlsZShmaWxlKSwgLyogYnl0ZV9saW1pdD0gKi8gMTAwMDAwMDAwKSk7CkBAIC0x
NTEsMTEgKzEwNywxMSBAQCBjbGFzcyBGcmFtZUR1bXBpbmdFbmNvZGVyIDogcHVibGljIFZpZGVv
RW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7CiAgIGludDMyX3QgRW5jb2Rl
KGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLAogICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1Nw
ZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiogZnJhbWVfdHlwZXMpIHsKKyAgICBpZiAoYW5hbHl6ZXJf
KSB7CisgICAgICBhbmFseXplcl8tPlByZUVuY29kZU9uRnJhbWUoZnJhbWUpOworICAgIH0KICAg
ICByZXR1cm4gZW5jb2Rlcl8tPkVuY29kZShmcmFtZSwgY29kZWNfc3BlY2lmaWNfaW5mbywgZnJh
bWVfdHlwZXMpOwogICB9Ci0gIGludDMyX3QgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3Qg
cGFja2V0X2xvc3MsIGludDY0X3QgcnR0KSBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIGVuY29kZXJf
LT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRfbG9zcywgcnR0KTsKLSAgfQogICBpbnQzMl90
IFNldFJhdGVzKHVpbnQzMl90IGJpdHJhdGUsIHVpbnQzMl90IGZyYW1lcmF0ZSkgb3ZlcnJpZGUg
ewogICAgIHJldHVybiBlbmNvZGVyXy0+U2V0UmF0ZXMoYml0cmF0ZSwgZnJhbWVyYXRlKTsKICAg
fQpAQCAtMTYzLDE0ICsxMTksOCBAQCBjbGFzcyBGcmFtZUR1bXBpbmdFbmNvZGVyIDogcHVibGlj
IFZpZGVvRW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVyYXRlKSBvdmVycmlkZSB7CiAgICAgcmV0
dXJuIGVuY29kZXJfLT5TZXRSYXRlQWxsb2NhdGlvbihhbGxvY2F0aW9uLCBmcmFtZXJhdGUpOwog
ICB9Ci0gIFNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25zdCBvdmVycmlk
ZSB7Ci0gICAgcmV0dXJuIGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKLSAgfQotICBi
b29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIHJldHVybiBl
bmNvZGVyXy0+U3VwcG9ydHNOYXRpdmVIYW5kbGUoKTsKLSAgfQotICBjb25zdCBjaGFyKiBJbXBs
ZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIGVuY29kZXJfLT5J
bXBsZW1lbnRhdGlvbk5hbWUoKTsKKyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25z
dCBvdmVycmlkZSB7CisgICAgcmV0dXJuIGVuY29kZXJfLT5HZXRFbmNvZGVySW5mbygpOwogICB9
CiAKICBwcml2YXRlOgpAQCAtMTg2LDYgKzEzNiwxMCBAQCBjbGFzcyBGcmFtZUR1bXBpbmdFbmNv
ZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7
CiAgICAgICAgIHNpbXVsY2FzdF9pbmRleCA9IGVuY29kZWRfaW1hZ2UuU3BhdGlhbEluZGV4KCku
dmFsdWVfb3IoMCk7CiAgICAgICB9CiAgICAgICBSVENfRENIRUNLX0dFKHNpbXVsY2FzdF9pbmRl
eCwgMCk7CisgICAgICBpZiAoYW5hbHl6ZXJfKSB7CisgICAgICAgIGFuYWx5emVyXy0+UG9zdEVu
Y29kZU9uRnJhbWUoc2ltdWxjYXN0X2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVuY29kZWRfaW1hZ2UuVGltZXN0YW1wKCkpOworICAgICAgfQogICAgICAgaWYg
KHN0YXRpY19jYXN0PHNpemVfdD4oc2ltdWxjYXN0X2luZGV4KSA8IHdyaXRlcnNfLnNpemUoKSkg
ewogICAgICAgICB3cml0ZXJzX1tzaW11bGNhc3RfaW5kZXhdLT5Xcml0ZUZyYW1lKGVuY29kZWRf
aW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29k
ZWNfc3BlY2lmaWNfaW5mby0+Y29kZWNUeXBlKTsKQEAgLTIwMiw2ICsxNTYsNyBAQCBjbGFzcyBG
cmFtZUR1bXBpbmdFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVk
SW1hZ2VDYWxsYmFjayB7CiAKICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gZW5jb2Rl
cl87CiAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFja18gPSBudWxscHRyOworICBWaWRl
b0FuYWx5emVyKiBjb25zdCBhbmFseXplcl87CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxJdmZGaWxlV3JpdGVyPj4gd3JpdGVyc187CiB9OwogCkBAIC0yMjgsNyArMTgzLDggQEAgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4gVmlkZW9RdWFsaXR5VGVzdDo6Q3JlYXRlVmlkZW9E
ZWNvZGVyKAogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBWaWRlb1F1YWxpdHlU
ZXN0OjpDcmVhdGVWaWRlb0VuY29kZXIoCi0gICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1h
dCkgeworICAgIGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQsCisgICAgVmlkZW9BbmFseXpl
ciogYW5hbHl6ZXIpIHsKICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gZW5jb2RlcjsK
ICAgaWYgKGZvcm1hdC5uYW1lID09ICJWUDgiKSB7CiAgICAgZW5jb2RlciA9IGFic2w6Om1ha2Vf
dW5pcXVlPFZQOEVuY29kZXJTaW11bGNhc3RQcm94eT4oCkBAIC0yNDUsMTIgKzIwMSwxNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBWaWRlb1F1YWxpdHlUZXN0OjpDcmVhdGVWaWRl
b0VuY29kZXIoCiAgICAgc2IgPDwgc2VuZF9sb2dzXysrOwogICAgIHN0ZDo6c3RyaW5nIHByZWZp
eCA9CiAgICAgICAgIHBhcmFtc18ubG9nZ2luZy5lbmNvZGVkX2ZyYW1lX2Jhc2VfcGF0aCArICIu
IiArIHNiLnN0cigpICsgIi5zZW5kLiI7Ci0gICAgZW5jb2RlciA9IGFic2w6Om1ha2VfdW5pcXVl
PEZyYW1lRHVtcGluZ0VuY29kZXI+KAotICAgICAgICBzdGQ6Om1vdmUoZW5jb2RlciksIHN0ZDo6
dmVjdG9yPHJ0Yzo6UGxhdGZvcm1GaWxlPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAge3J0Yzo6Q3JlYXRlUGxhdGZvcm1GaWxlKHByZWZpeCArICIxLml2ZiIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpDcmVhdGVQbGF0Zm9ybUZpbGUocHJlZml4ICsg
IjIuaXZmIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNyZWF0ZVBs
YXRmb3JtRmlsZShwcmVmaXggKyAiMy5pdmYiKX0pKTsKKyAgICBlbmNvZGVyID0gYWJzbDo6bWFr
ZV91bmlxdWU8UXVhbGl0eVRlc3RWaWRlb0VuY29kZXI+KAorICAgICAgICBzdGQ6Om1vdmUoZW5j
b2RlciksIGFuYWx5emVyLAorICAgICAgICBzdGQ6OnZlY3RvcjxydGM6OlBsYXRmb3JtRmlsZT4o
CisgICAgICAgICAgICB7cnRjOjpDcmVhdGVQbGF0Zm9ybUZpbGUocHJlZml4ICsgIjEuaXZmIiks
CisgICAgICAgICAgICAgcnRjOjpDcmVhdGVQbGF0Zm9ybUZpbGUocHJlZml4ICsgIjIuaXZmIiks
CisgICAgICAgICAgICAgcnRjOjpDcmVhdGVQbGF0Zm9ybUZpbGUocHJlZml4ICsgIjMuaXZmIil9
KSk7CisgIH0gZWxzZSBpZiAoYW5hbHl6ZXIpIHsKKyAgICBlbmNvZGVyID0gYWJzbDo6bWFrZV91
bmlxdWU8UXVhbGl0eVRlc3RWaWRlb0VuY29kZXI+KAorICAgICAgICBzdGQ6Om1vdmUoZW5jb2Rl
ciksIGFuYWx5emVyLCBzdGQ6OnZlY3RvcjxydGM6OlBsYXRmb3JtRmlsZT4oKSk7CiAgIH0KKwog
ICByZXR1cm4gZW5jb2RlcjsKIH0KIApAQCAtMjYxLDExICsyMjIsMTggQEAgVmlkZW9RdWFsaXR5
VGVzdDo6VmlkZW9RdWFsaXR5VGVzdCgKICAgICAgICAgcmV0dXJuIHRoaXMtPkNyZWF0ZVZpZGVv
RGVjb2Rlcihmb3JtYXQpOwogICAgICAgfSksCiAgICAgICB2aWRlb19lbmNvZGVyX2ZhY3Rvcnlf
KFt0aGlzXShjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLT5DcmVhdGVWaWRlb0VuY29kZXIoZm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIHRoaXMtPkNy
ZWF0ZVZpZGVvRW5jb2Rlcihmb3JtYXQsIG51bGxwdHIpOwogICAgICAgfSksCisgICAgICB2aWRl
b19lbmNvZGVyX2ZhY3Rvcnlfd2l0aF9hbmFseXplcl8oCisgICAgICAgICAgW3RoaXNdKGNvbnN0
IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLT5DcmVh
dGVWaWRlb0VuY29kZXIoZm9ybWF0LCBhbmFseXplcl8uZ2V0KCkpOworICAgICAgICAgIH0pLAor
ICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8oCisgICAgICAgICAgQ3JlYXRl
QnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSksCiAgICAgICByZWNlaXZlX2xv
Z3NfKDApLAogICAgICAgc2VuZF9sb2dzXygwKSwKLSAgICAgIGluamVjdGlvbl9jb21wb25lbnRz
XyhzdGQ6Om1vdmUoaW5qZWN0aW9uX2NvbXBvbmVudHMpKSB7CisgICAgICBpbmplY3Rpb25fY29t
cG9uZW50c18oc3RkOjptb3ZlKGluamVjdGlvbl9jb21wb25lbnRzKSksCisgICAgICBudW1fdmlk
ZW9fc3RyZWFtc18oMCkgewogICBpZiAoaW5qZWN0aW9uX2NvbXBvbmVudHNfID09IG51bGxwdHIp
IHsKICAgICBpbmplY3Rpb25fY29tcG9uZW50c18gPSBhYnNsOjptYWtlX3VuaXF1ZTxJbmplY3Rp
b25Db21wb25lbnRzPigpOwogICB9CkBAIC0yOTQsNyArMjYyLDYgQEAgVmlkZW9RdWFsaXR5VGVz
dDo6UGFyYW1zOjpQYXJhbXMoKQogICAgICAgYXVkaW8oe2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlfSksCiAgICAgICBzY3JlZW5zaGFyZXt7ZmFsc2UsIGZhbHNlLCAxMCwgMH0sIHtmYWxzZSwg
ZmFsc2UsIDEwLCAwfX0sCiAgICAgICBhbmFseXplcih7IiIsIDAuMCwgMC4wLCAwLCAiIiwgIiJ9
KSwKLSAgICAgIHBpcGUoKSwKICAgICAgIGNvbmZpZyhhYnNsOjpudWxsb3B0KSwKICAgICAgIHNz
e3tzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4oKSwgMCwgMCwgLTEsIEludGVyTGF5ZXJQcmVkTW9k
ZTo6a09uLAogICAgICAgICAgIHN0ZDo6dmVjdG9yPFNwYXRpYWxMYXllcj4oKX0sCkBAIC0zMzEs
OSArMjk4LDcgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpDaGVja1BhcmFtc0FuZEluamVjdGlv
bkNvbXBvbmVudHMoKSB7CiAgIH0KICAgaWYgKCFwYXJhbXNfLmNvbmZpZyAmJiBpbmplY3Rpb25f
Y29tcG9uZW50c18tPnNlbmRlcl9uZXR3b3JrID09IG51bGxwdHIgJiYKICAgICAgIGluamVjdGlv
bl9jb21wb25lbnRzXy0+cmVjZWl2ZXJfbmV0d29yayA9PSBudWxscHRyKSB7Ci0gICAgLy8gVE9E
Tyh0aXRvdmFydGVtKSByZXBsYWNlIHdpdGggZGVmYXVsdCBjb25maWcgY3JlYXRpb24gd2hlbiBy
ZW1vdmluZwotICAgIC8vIHBpcGUuCi0gICAgcGFyYW1zXy5jb25maWcgPSBwYXJhbXNfLnBpcGU7
CisgICAgcGFyYW1zXy5jb25maWcgPSBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCk7CiAg
IH0KICAgUlRDX0NIRUNLKAogICAgICAgKHBhcmFtc18uY29uZmlnICYmIGluamVjdGlvbl9jb21w
b25lbnRzXy0+c2VuZGVyX25ldHdvcmsgPT0gbnVsbHB0ciAmJgpAQCAtNTk0LDcgKzU1OSwxMCBA
QCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OlNldHVwVmlkZW8oVHJhbnNwb3J0KiBzZW5kX3RyYW5z
cG9ydCwKICAgICAgIHJldHVybjsKICAgICB9CiAgICAgdmlkZW9fc2VuZF9jb25maWdzX1t2aWRl
b19pZHhdLmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0KLSAgICAgICAgJnZpZGVv
X2VuY29kZXJfZmFjdG9yeV87CisgICAgICAgICh2aWRlb19pZHggPT0gMCkgPyAmdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5X3dpdGhfYW5hbHl6ZXJfCisgICAgICAgICAgICAgICAgICAgICAgICAgOiAm
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5XzsKKyAgICB2aWRlb19zZW5kX2NvbmZpZ3NfW3ZpZGVvX2lk
eF0uZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0KKyAgICAgICAg
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8uZ2V0KCk7CiAKICAgICB2aWRlb19zZW5k
X2NvbmZpZ3NfW3ZpZGVvX2lkeF0ucnRwLnBheWxvYWRfbmFtZSA9CiAgICAgICAgIHBhcmFtc18u
dmlkZW9bdmlkZW9faWR4XS5jb2RlYzsKQEAgLTcwMiw2ICs2NzAsMTAgQEAgdm9pZCBWaWRlb1F1
YWxpdHlUZXN0OjpTZXR1cFZpZGVvKFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQsCiAgICAgICAg
IHZwOV9zZXR0aW5ncy5udW1iZXJPZlNwYXRpYWxMYXllcnMgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPigKICAgICAgICAgICAgIHBhcmFtc18uc3NbdmlkZW9faWR4XS5udW1fc3BhdGlhbF9s
YXllcnMpOwogICAgICAgICB2cDlfc2V0dGluZ3MuaW50ZXJMYXllclByZWQgPSBwYXJhbXNfLnNz
W3ZpZGVvX2lkeF0uaW50ZXJfbGF5ZXJfcHJlZDsKKyAgICAgICAgLy8gSGlnaCBGUFMgdnA5IHNj
cmVlbnNoYXJlIHJlcXVpcmVzIGZsZXhpYmxlIG1vZGUuCisgICAgICAgIGlmIChwYXJhbXNfLnZp
ZGVvW3ZpZGVvX2lkeF0uZnBzID4gNSkgeworICAgICAgICAgIHZwOV9zZXR0aW5ncy5mbGV4aWJs
ZU1vZGUgPSB0cnVlOworICAgICAgICB9CiAgICAgICAgIHZpZGVvX2VuY29kZXJfY29uZmlnc19b
dmlkZW9faWR4XS5lbmNvZGVyX3NwZWNpZmljX3NldHRpbmdzID0KICAgICAgICAgICAgIG5ldyBy
dGM6OlJlZkNvdW50ZWRPYmplY3Q8CiAgICAgICAgICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmln
OjpWcDlFbmNvZGVyU3BlY2lmaWNTZXR0aW5ncz4odnA5X3NldHRpbmdzKTsKQEAgLTc4Myw2ICs3
NTUsOCBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OlNldHVwVGh1bWJuYWlscyhUcmFuc3BvcnQq
IHNlbmRfdHJhbnNwb3J0LAogICAgIC8vIFRPRE8obmlzc2UpOiBDb3VsZCB1c2UgYSBzaW1wbGVy
IFZQOC1vbmx5IGVuY29kZXIgZmFjdG9yeS4KICAgICB0aHVtYm5haWxfc2VuZF9jb25maWcuZW5j
b2Rlcl9zZXR0aW5ncy5lbmNvZGVyX2ZhY3RvcnkgPQogICAgICAgICAmdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5XzsKKyAgICB0aHVtYm5haWxfc2VuZF9jb25maWcuZW5jb2Rlcl9zZXR0aW5ncy5iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0KKyAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeV8uZ2V0KCk7CiAgICAgdGh1bWJuYWlsX3NlbmRfY29uZmlnLnJ0cC5wYXlsb2FkX25h
bWUgPSBwYXJhbXNfLnZpZGVvWzBdLmNvZGVjOwogICAgIHRodW1ibmFpbF9zZW5kX2NvbmZpZy5y
dHAucGF5bG9hZF90eXBlID0ga1BheWxvYWRUeXBlVlA4OwogICAgIHRodW1ibmFpbF9zZW5kX2Nv
bmZpZy5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyA9IGtOYWNrUnRwSGlzdG9yeU1zOwpAQCAtMTA0
Myw3ICsxMDE3LDYgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpSdW5XaXRoQW5hbHl6ZXIoY29u
c3QgUGFyYW1zJiBwYXJhbXMpIHsKICAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkxheWVyRmlsdGVy
aW5nVHJhbnNwb3J0PiBzZW5kX3RyYW5zcG9ydDsKICAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkRp
cmVjdFRyYW5zcG9ydD4gcmVjdl90cmFuc3BvcnQ7CiAgIEZJTEUqIGdyYXBoX2RhdGFfb3V0cHV0
X2ZpbGUgPSBudWxscHRyOwotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9BbmFseXplcj4gYW5hbHl6
ZXI7CiAKICAgcGFyYW1zXyA9IHBhcmFtczsKICAgLy8gVE9ETyhpdmljYSk6IE1lcmdlIHdpdGgg
UnVuV2l0aFJlbmRlcmVyIGFuZCB1c2UgYSBmbGFnIC8gYXJndW1lbnQgdG8KQEAgLTExMDAsNyAr
MTA3Myw3IEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6UnVuV2l0aEFuYWx5emVyKGNvbnN0IFBh
cmFtcyYgcGFyYW1zKSB7CiAgIGlmIChncmFwaF90aXRsZS5lbXB0eSgpKQogICAgIGdyYXBoX3Rp
dGxlID0gVmlkZW9RdWFsaXR5VGVzdDo6R2VuZXJhdGVHcmFwaFRpdGxlKCk7CiAgIGJvb2wgaXNf
cXVpY2tfdGVzdF9lbmFibGVkID0gZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVF1aWNr
UGVyZlRlc3QiKTsKLSAgYW5hbHl6ZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxWaWRlb0FuYWx5emVy
PigKKyAgYW5hbHl6ZXJfID0gYWJzbDo6bWFrZV91bmlxdWU8VmlkZW9BbmFseXplcj4oCiAgICAg
ICBzZW5kX3RyYW5zcG9ydC5nZXQoKSwgcGFyYW1zXy5hbmFseXplci50ZXN0X2xhYmVsLAogICAg
ICAgcGFyYW1zXy5hbmFseXplci5hdmdfcHNucl90aHJlc2hvbGQsIHBhcmFtc18uYW5hbHl6ZXIu
YXZnX3NzaW1fdGhyZXNob2xkLAogICAgICAgaXNfcXVpY2tfdGVzdF9lbmFibGVkCkBAIC0xMTE0
LDI2ICsxMDg3LDIzIEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6UnVuV2l0aEFuYWx5emVyKGNv
bnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICBpc19xdWlja190ZXN0X2VuYWJsZWQsIGNsb2Nr
XywgcGFyYW1zXy5sb2dnaW5nLnJ0cF9kdW1wX25hbWUpOwogCiAgIHRhc2tfcXVldWVfLlNlbmRU
YXNrKFsmXSgpIHsKLSAgICBhbmFseXplci0+U2V0Q2FsbChzZW5kZXJfY2FsbF8uZ2V0KCkpOwot
ICAgIGFuYWx5emVyLT5TZXRSZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7Ci0g
ICAgc2VuZF90cmFuc3BvcnQtPlNldFJlY2VpdmVyKGFuYWx5emVyLmdldCgpKTsKKyAgICBhbmFs
eXplcl8tPlNldENhbGwoc2VuZGVyX2NhbGxfLmdldCgpKTsKKyAgICBhbmFseXplcl8tPlNldFJl
Y2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5SZWNlaXZlcigpKTsKKyAgICBzZW5kX3RyYW5zcG9ydC0+
U2V0UmVjZWl2ZXIoYW5hbHl6ZXJfLmdldCgpKTsKICAgICByZWN2X3RyYW5zcG9ydC0+U2V0UmVj
ZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZlcigpKTsKIAotICAgIFNldHVwVmlkZW8oYW5hbHl6
ZXIuZ2V0KCksIHJlY3ZfdHJhbnNwb3J0LmdldCgpKTsKLSAgICBTZXR1cFRodW1ibmFpbHMoYW5h
bHl6ZXIuZ2V0KCksIHJlY3ZfdHJhbnNwb3J0LmdldCgpKTsKKyAgICBTZXR1cFZpZGVvKGFuYWx5
emVyXy5nZXQoKSwgcmVjdl90cmFuc3BvcnQuZ2V0KCkpOworICAgIFNldHVwVGh1bWJuYWlscyhh
bmFseXplcl8uZ2V0KCksIHJlY3ZfdHJhbnNwb3J0LmdldCgpKTsKICAgICB2aWRlb19yZWNlaXZl
X2NvbmZpZ3NfW3BhcmFtc18uc3NbMF0uc2VsZWN0ZWRfc3RyZWFtXS5yZW5kZXJlciA9Ci0gICAg
ICAgIGFuYWx5emVyLmdldCgpOwotICAgIEdldFZpZGVvU2VuZENvbmZpZygpLT5wcmVfZW5jb2Rl
X2NhbGxiYWNrID0gYW5hbHl6ZXItPnByZV9lbmNvZGVfcHJveHkoKTsKLSAgICBSVENfRENIRUNL
KCFHZXRWaWRlb1NlbmRDb25maWcoKS0+cG9zdF9lbmNvZGVfY2FsbGJhY2spOwotICAgIEdldFZp
ZGVvU2VuZENvbmZpZygpLT5wb3N0X2VuY29kZV9jYWxsYmFjayA9IGFuYWx5emVyLmdldCgpOwor
ICAgICAgICBhbmFseXplcl8uZ2V0KCk7CiAKICAgICBDcmVhdGVGbGV4ZmVjU3RyZWFtcygpOwog
ICAgIENyZWF0ZVZpZGVvU3RyZWFtcygpOwotICAgIGFuYWx5emVyLT5TZXRTZW5kU3RyZWFtKHZp
ZGVvX3NlbmRfc3RyZWFtc19bMF0pOworICAgIGFuYWx5emVyXy0+U2V0U2VuZFN0cmVhbSh2aWRl
b19zZW5kX3N0cmVhbXNfWzBdKTsKICAgICBpZiAodmlkZW9fcmVjZWl2ZV9zdHJlYW1zXy5zaXpl
KCkgPT0gMSkKLSAgICAgIGFuYWx5emVyLT5TZXRSZWNlaXZlU3RyZWFtKHZpZGVvX3JlY2VpdmVf
c3RyZWFtc19bMF0pOworICAgICAgYW5hbHl6ZXJfLT5TZXRSZWNlaXZlU3RyZWFtKHZpZGVvX3Jl
Y2VpdmVfc3RyZWFtc19bMF0pOwogCi0gICAgR2V0VmlkZW9TZW5kU3RyZWFtKCktPlNldFNvdXJj
ZShhbmFseXplci0+T3V0cHV0SW50ZXJmYWNlKCksCisgICAgR2V0VmlkZW9TZW5kU3RyZWFtKCkt
PlNldFNvdXJjZShhbmFseXplcl8tPk91dHB1dEludGVyZmFjZSgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVncmFkYXRpb25fcHJlZmVyZW5jZV8pOwogICAgIFNldHVw
VGh1bWJuYWlsQ2FwdHVyZXJzKHBhcmFtc18uY2FsbC5udW1fdGh1bWJuYWlscyk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0aHVtYm5haWxfc2VuZF9zdHJlYW1zXy5zaXplKCk7ICsraSkg
ewpAQCAtMTE0Myw3ICsxMTEzLDggQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpSdW5XaXRoQW5h
bHl6ZXIoY29uc3QgUGFyYW1zJiBwYXJhbXMpIHsKIAogICAgIENyZWF0ZUNhcHR1cmVycygpOwog
Ci0gICAgYW5hbHl6ZXItPlNldFNvdXJjZSh2aWRlb19jYXB0dXJlcnNfWzBdLmdldCgpLCBwYXJh
bXNfLnNzWzBdLmluZmVyX3N0cmVhbXMpOworICAgIGFuYWx5emVyXy0+U2V0U291cmNlKHZpZGVv
X2NhcHR1cmVyc19bMF0uZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zXy5z
c1swXS5pbmZlcl9zdHJlYW1zKTsKIAogICAgIGZvciAoc2l6ZV90IHZpZGVvX2lkeCA9IDE7IHZp
ZGVvX2lkeCA8IG51bV92aWRlb19zdHJlYW1zXzsgKyt2aWRlb19pZHgpIHsKICAgICAgIHZpZGVv
X3NlbmRfc3RyZWFtc19bdmlkZW9faWR4XS0+U2V0U291cmNlKApAQCAtMTE1MywxNiArMTEyNCwx
NiBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OlJ1bldpdGhBbmFseXplcihjb25zdCBQYXJhbXMm
IHBhcmFtcykgewogICAgIGlmIChwYXJhbXNfLmF1ZGlvLmVuYWJsZWQpIHsKICAgICAgIFNldHVw
QXVkaW8oc2VuZF90cmFuc3BvcnQuZ2V0KCkpOwogICAgICAgU3RhcnRBdWRpb1N0cmVhbXMoKTsK
LSAgICAgIGFuYWx5emVyLT5TZXRBdWRpb1JlY2VpdmVTdHJlYW0oYXVkaW9fcmVjZWl2ZV9zdHJl
YW1zX1swXSk7CisgICAgICBhbmFseXplcl8tPlNldEF1ZGlvUmVjZWl2ZVN0cmVhbShhdWRpb19y
ZWNlaXZlX3N0cmVhbXNfWzBdKTsKICAgICB9CiAgICAgU3RhcnRWaWRlb1N0cmVhbXMoKTsKICAg
ICBTdGFydFRodW1ibmFpbHMoKTsKLSAgICBhbmFseXplci0+U3RhcnRNZWFzdXJpbmdDcHVQcm9j
ZXNzVGltZSgpOworICAgIGFuYWx5emVyXy0+U3RhcnRNZWFzdXJpbmdDcHVQcm9jZXNzVGltZSgp
OwogICAgIFN0YXJ0VmlkZW9DYXB0dXJlKCk7CiAgICAgU3RhcnRUaHVtYm5haWxDYXB0dXJlKCk7
CiAgIH0pOwogCi0gIGFuYWx5emVyLT5XYWl0KCk7CisgIGFuYWx5emVyXy0+V2FpdCgpOwogCiAg
IHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsKICAgICBTdG9wVGh1bWJuYWlsQ2FwdHVyZSgp
OwpAQCAtMTE4MSw2ICsxMTUyLDcgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpSdW5XaXRoQW5h
bHl6ZXIoY29uc3QgUGFyYW1zJiBwYXJhbXMpIHsKIAogICAgIERlc3Ryb3lDYWxscygpOwogICB9
KTsKKyAgYW5hbHl6ZXJfID0gbnVsbHB0cjsKIH0KIAogcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
RGV2aWNlTW9kdWxlPiBWaWRlb1F1YWxpdHlUZXN0OjpDcmVhdGVBdWRpb0RldmljZSgpIHsKQEAg
LTEyMzksNyArMTIxMSw4IEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVzdDo6SW5pdGlhbGl6ZUF1ZGlv
RGV2aWNlKENhbGw6OkNvbmZpZyogc2VuZF9jYWxsX2NvbmZpZywKIH0KIAogdm9pZCBWaWRlb1F1
YWxpdHlUZXN0OjpTZXR1cEF1ZGlvKFRyYW5zcG9ydCogdHJhbnNwb3J0KSB7Ci0gIEF1ZGlvU2Vu
ZFN0cmVhbTo6Q29uZmlnIGF1ZGlvX3NlbmRfY29uZmlnKHRyYW5zcG9ydCk7CisgIEF1ZGlvU2Vu
ZFN0cmVhbTo6Q29uZmlnIGF1ZGlvX3NlbmRfY29uZmlnKHRyYW5zcG9ydCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxs
cHRyKTsKICAgYXVkaW9fc2VuZF9jb25maWcucnRwLnNzcmMgPSBrQXVkaW9TZW5kU3NyYzsKIAog
ICAvLyBBZGQgZXh0ZW5zaW9uIHRvIGVuYWJsZSBhdWRpbyBzZW5kIHNpZGUgQldFLCBhbmQgYWxs
b3cgYXVkaW8gYml0IHJhdGUKQEAgLTEyNzgsNyArMTI1MSwyOCBAQCB2b2lkIFZpZGVvUXVhbGl0
eVRlc3Q6OlJ1bldpdGhSZW5kZXJlcnMoY29uc3QgUGFyYW1zJiBwYXJhbXMpIHsKICAgc3RkOjp1
bmlxdWVfcHRyPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4gcmVjdl90cmFuc3BvcnQ7CiAgIHN0ZDo6
dW5pcXVlX3B0cjx0ZXN0OjpWaWRlb1JlbmRlcmVyPiBsb2NhbF9wcmV2aWV3OwogICBzdGQ6OnZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8dGVzdDo6VmlkZW9SZW5kZXJlcj4+IGxvb3BiYWNrX3JlbmRl
cmVyczsKLSAgUnRjRXZlbnRMb2dOdWxsSW1wbCBudWxsX2V2ZW50X2xvZzsKKworICBpZiAoIXBh
cmFtcy5sb2dnaW5nLnJ0Y19ldmVudF9sb2dfbmFtZS5lbXB0eSgpKSB7CisgICAgc2VuZF9ldmVu
dF9sb2dfID0gUnRjRXZlbnRMb2c6OkNyZWF0ZShSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpM
ZWdhY3kpOworICAgIHJlY3ZfZXZlbnRfbG9nXyA9IFJ0Y0V2ZW50TG9nOjpDcmVhdGUoUnRjRXZl
bnRMb2c6OkVuY29kaW5nVHlwZTo6TGVnYWN5KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnRMb2dPdXRwdXRGaWxlPiBzZW5kX291dHB1dCgKKyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8
UnRjRXZlbnRMb2dPdXRwdXRGaWxlPigKKyAgICAgICAgICAgIHBhcmFtcy5sb2dnaW5nLnJ0Y19l
dmVudF9sb2dfbmFtZSArICJfc2VuZCIsCisgICAgICAgICAgICBSdGNFdmVudExvZzo6a1VubGlt
aXRlZE91dHB1dCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZ091dHB1dEZpbGU+
IHJlY3Zfb3V0cHV0KAorICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudExvZ091dHB1
dEZpbGU+KAorICAgICAgICAgICAgcGFyYW1zLmxvZ2dpbmcucnRjX2V2ZW50X2xvZ19uYW1lICsg
Il9yZWN2IiwKKyAgICAgICAgICAgIFJ0Y0V2ZW50TG9nOjprVW5saW1pdGVkT3V0cHV0KSk7Cisg
ICAgYm9vbCBldmVudF9sb2dfc3RhcnRlZCA9CisgICAgICAgIHNlbmRfZXZlbnRfbG9nXy0+U3Rh
cnRMb2dnaW5nKHN0ZDo6bW92ZShzZW5kX291dHB1dCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qb3V0cHV0X3BlcmlvZF9tcz0qLzUwMDApICYmCisgICAgICAgIHJl
Y3ZfZXZlbnRfbG9nXy0+U3RhcnRMb2dnaW5nKHN0ZDo6bW92ZShyZWN2X291dHB1dCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qb3V0cHV0X3BlcmlvZF9tcz0qLzUw
MDApOworICAgIFJUQ19EQ0hFQ0soZXZlbnRfbG9nX3N0YXJ0ZWQpOworICB9IGVsc2UgeworICAg
IHNlbmRfZXZlbnRfbG9nXyA9IFJ0Y0V2ZW50TG9nOjpDcmVhdGVOdWxsKCk7CisgICAgcmVjdl9l
dmVudF9sb2dfID0gUnRjRXZlbnRMb2c6OkNyZWF0ZU51bGwoKTsKKyAgfQogCiAgIHRhc2tfcXVl
dWVfLlNlbmRUYXNrKFsmXSgpIHsKICAgICBwYXJhbXNfID0gcGFyYW1zOwpAQCAtMTI4Niw5ICsx
MjgwLDkgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpSdW5XaXRoUmVuZGVyZXJzKGNvbnN0IFBh
cmFtcyYgcGFyYW1zKSB7CiAKICAgICAvLyBUT0RPKGl2aWNhKTogUmVtb3ZlIGJpdHJhdGVfY29u
ZmlnIGFuZCB1c2UgdGhlIGRlZmF1bHQgQ2FsbDo6Q29uZmlnKCksIHRvCiAgICAgLy8gbWF0Y2gg
dGhlIGZ1bGwgc3RhY2sgdGVzdHMuCi0gICAgQ2FsbDo6Q29uZmlnIHNlbmRfY2FsbF9jb25maWco
Jm51bGxfZXZlbnRfbG9nKTsKKyAgICBDYWxsOjpDb25maWcgc2VuZF9jYWxsX2NvbmZpZyhzZW5k
X2V2ZW50X2xvZ18uZ2V0KCkpOwogICAgIHNlbmRfY2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcg
PSBwYXJhbXNfLmNhbGwuY2FsbF9iaXRyYXRlX2NvbmZpZzsKLSAgICBDYWxsOjpDb25maWcgcmVj
dl9jYWxsX2NvbmZpZygmbnVsbF9ldmVudF9sb2cpOworICAgIENhbGw6OkNvbmZpZyByZWN2X2Nh
bGxfY29uZmlnKHJlY3ZfZXZlbnRfbG9nXy5nZXQoKSk7CiAKICAgICBpZiAocGFyYW1zXy5hdWRp
by5lbmFibGVkKQogICAgICAgSW5pdGlhbGl6ZUF1ZGlvRGV2aWNlKApAQCAtMTM2NCw3ICsxMzU4
LDcgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpSdW5XaXRoUmVuZGVyZXJzKGNvbnN0IFBhcmFt
cyYgcGFyYW1zKSB7CiAgICAgU3RhcnQoKTsKICAgfSk7CiAKLSAgdGVzdDo6UHJlc3NFbnRlclRv
Q29udGludWUoKTsKKyAgdGVzdDo6UHJlc3NFbnRlclRvQ29udGludWUodGFza19xdWV1ZV8pOwog
CiAgIHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsKICAgICBTdG9wKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19x
dWFsaXR5X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL3ZpZGVvX3F1YWxpdHlfdGVzdC5oCmluZGV4IDdlYzdlOGRhN2U0NGI2MjdmZmJhODcx
MTI0YTAxYzU1OGRlNzJjN2IuLmY2N2U2NWJjMTM3OTc0MjhjMGNjN2NjNjFjYTY3OGE1MjY4NzBl
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL3ZpZGVvX3F1YWxpdHlfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfdGVzdC5oCkBAIC0xNywxMiAr
MTcsMTQgQEAKIAogI2luY2x1ZGUgImFwaS9mZWNfY29udHJvbGxlci5oIgogI2luY2x1ZGUgImFw
aS90ZXN0L3ZpZGVvX3F1YWxpdHlfdGVzdF9maXh0dXJlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVv
L3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJjYWxsL2Zha2Vf
bmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZh
Y3RvcnkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5o
IgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9mcmFtZV9nZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJ0ZXN0L2xheWVyX2ZpbHRlcmluZ190cmFuc3BvcnQuaCIKKyNp
bmNsdWRlICJ2aWRlby92aWRlb19hbmFseXplci5oIgogI2lmZGVmIFdFQlJUQ19XSU4KICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS93aW4vY29yZV9hdWRpb191dGlsaXR5X3dpbi5oIgog
I2VuZGlmCkBAIC03NSw4ICs3Nyw4IEBAIGNsYXNzIFZpZGVvUXVhbGl0eVRlc3QgOgogICB2b2lk
IFNldHVwVGh1bWJuYWlsQ2FwdHVyZXJzKHNpemVfdCBudW1fdGh1bWJuYWlsX3N0cmVhbXMpOwog
ICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyPiBDcmVhdGVWaWRlb0RlY29kZXIoCiAgICAg
ICBjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KTsKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
RW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVyKAotICAgICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQm
IGZvcm1hdCk7CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IENyZWF0ZVZpZGVvRW5j
b2Rlcihjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9BbmFseXplciogYW5hbHl6ZXIpOwog
ICB2b2lkIFNldHVwVmlkZW8oVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwgVHJhbnNwb3J0KiBy
ZWN2X3RyYW5zcG9ydCk7CiAgIHZvaWQgU2V0dXBUaHVtYm5haWxzKFRyYW5zcG9ydCogc2VuZF90
cmFuc3BvcnQsIFRyYW5zcG9ydCogcmVjdl90cmFuc3BvcnQpOwogICB2b2lkIFN0YXJ0QXVkaW9T
dHJlYW1zKCk7CkBAIC0xMDMsNiArMTA1LDkgQEAgY2xhc3MgVmlkZW9RdWFsaXR5VGVzdCA6CiAg
IHRlc3Q6OkZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9yeSB2aWRlb19kZWNvZGVyX2ZhY3Rvcnlf
OwogICBJbnRlcm5hbERlY29kZXJGYWN0b3J5IGludGVybmFsX2RlY29kZXJfZmFjdG9yeV87CiAg
IHRlc3Q6OkZ1bmN0aW9uVmlkZW9FbmNvZGVyRmFjdG9yeSB2aWRlb19lbmNvZGVyX2ZhY3Rvcnlf
OworICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5X3dpdGhfYW5hbHl6ZXJfOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2Nh
dG9yRmFjdG9yeT4KKyAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfOwogICBJ
bnRlcm5hbEVuY29kZXJGYWN0b3J5IGludGVybmFsX2VuY29kZXJfZmFjdG9yeV87CiAgIHN0ZDo6
dmVjdG9yPFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnPiB0aHVtYm5haWxfc2VuZF9jb25maWdzXzsK
ICAgc3RkOjp2ZWN0b3I8VmlkZW9FbmNvZGVyQ29uZmlnPiB0aHVtYm5haWxfZW5jb2Rlcl9jb25m
aWdzXzsKQEAgLTExNiw2ICsxMjEsOSBAQCBjbGFzcyBWaWRlb1F1YWxpdHlUZXN0IDoKICAgUGFy
YW1zIHBhcmFtc187CiAgIHN0ZDo6dW5pcXVlX3B0cjxJbmplY3Rpb25Db21wb25lbnRzPiBpbmpl
Y3Rpb25fY29tcG9uZW50c187CiAKKyAgLy8gU2V0IG5vbi1udWxsIHdoZW4gcnVubmluZyB3aXRo
IGFuYWx5emVyLgorICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9BbmFseXplcj4gYW5hbHl6ZXJfOwor
CiAgIC8vIE5vdGU6IG5vdCBzYW1lIGFzIHNpbWlsYXJseSBuYW1lZCBtZW1iZXIgaW4gQ2FsbFRl
c3QuIFRoaXMgaXMgdGhlIG51bWJlciBvZgogICAvLyBzZXBhcmF0ZSBzZW5kIHN0cmVhbXMsIHRo
ZSBvbmUgaW4gQ2FsbFRlc3QgaXMgdGhlIG51bWJlciBvZiBzdWJzdHJlYW1zIGZvcgogICAvLyBh
IHNpbmdsZSBzZW5kIHN0cmVhbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9z
dHJlYW0uY2MKaW5kZXggODZiOTM2ODZjYTVmOTczMzkyMDQ1NmQ5YjcxODllYjM4MGZlNDVkNS4u
YmJhMzNhYTM2M2U4YTY5NWRhYzZjZjQ0ODBjYmRjNDc3NzYxNTMwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2
ZV9zdHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW0uY2MKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNs
dWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUg
ImNhbGwvcnRwX3N0cmVhbV9yZWNlaXZlcl9jb250cm9sbGVyX2ludGVyZmFjZS5oIgogI2luY2x1
ZGUgImNhbGwvcnR4X3JlY2VpdmVfc3RyZWFtLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgi
ICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9w
cm9maWxlX2xldmVsX2lkLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvaW5jb21p
bmdfdmlkZW9fc3RyZWFtLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRl
L3dlYnJ0Y19saWJ5dXYuaCIKQEAgLTM1LDEwICszNCwxMyBAQAogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvdHJhY2VfZXZlbnQuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9j
bG9jay5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgi
CiAjaW5jbHVkZSAidmlkZW8vY2FsbF9zdGF0cy5oIgorI2luY2x1ZGUgInZpZGVvL2ZyYW1lX2R1
bXBpbmdfZGVjb2Rlci5oIgogI2luY2x1ZGUgInZpZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94
eS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTEwNyw2ICsxMDksMTEgQEAgY2xhc3MgTnVs
bFZpZGVvRGVjb2RlciA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRGVjb2RlciB7CiAgIGNvbnN0IGNo
YXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJOdWxsVmlk
ZW9EZWNvZGVyIjsgfQogfTsKIAorLy8gVE9ETyhodHRwczovL2J1Z3Mud2VicnRjLm9yZy85OTc0
KTogQ29uc2lkZXIgcmVtb3ZpbmcgdGhpcyB3b3JrYXJvdW5kLgorLy8gTWF4aW11bSB0aW1lIGJl
dHdlZW4gZnJhbWVzIGJlZm9yZSByZXNldHRpbmcgdGhlIEZyYW1lQnVmZmVyIHRvIGF2b2lkIFJU
UAorLy8gdGltZXN0YW1wcyB3cmFwYXJvdW5kIHRvIGFmZmVjdCBGcmFtZUJ1ZmZlci4KK2NvbnN0
ZXhwciBpbnQga0luYWN0aXZlU3RyZWFtVGhyZXNob2xkTXMgPSA2MDAwMDA7ICAvLyAgMTAgbWlu
dXRlcy4KKwogfSAgLy8gbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC0xMjgs
MTAgKzEzNSwxMSBAQCBWaWRlb1JlY2VpdmVTdHJlYW06OlZpZGVvUmVjZWl2ZVN0cmVhbSgKICAg
ICAgICAgICAgICAgICAgICAgICJEZWNvZGluZ1RocmVhZCIsCiAgICAgICAgICAgICAgICAgICAg
ICBydGM6OmtIaWdoZXN0UHJpb3JpdHkpLAogICAgICAgY2FsbF9zdGF0c18oY2FsbF9zdGF0cyks
Ci0gICAgICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXyhSZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRl
KGNsb2NrXykpLAotICAgICAgdGltaW5nXyhuZXcgVkNNVGltaW5nKGNsb2NrXykpLAotICAgICAg
dmlkZW9fcmVjZWl2ZXJfKGNsb2NrXywgbnVsbHB0ciwgdGltaW5nXy5nZXQoKSwgdGhpcywgdGhp
cyksCiAgICAgICBzdGF0c19wcm94eV8oJmNvbmZpZ18sIGNsb2NrXyksCisgICAgICBydHBfcmVj
ZWl2ZV9zdGF0aXN0aWNzXygKKyAgICAgICAgICBSZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRlKGNs
b2NrXywgJnN0YXRzX3Byb3h5XywgJnN0YXRzX3Byb3h5XykpLAorICAgICAgdGltaW5nXyhuZXcg
VkNNVGltaW5nKGNsb2NrXykpLAorICAgICAgdmlkZW9fcmVjZWl2ZXJfKGNsb2NrXywgdGltaW5n
Xy5nZXQoKSwgdGhpcywgdGhpcyksCiAgICAgICBydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyXygm
dHJhbnNwb3J0X2FkYXB0ZXJfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fs
bF9zdGF0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9yb3V0ZXIs
CkBAIC0xMzksOSArMTQ3LDEwIEBAIFZpZGVvUmVjZWl2ZVN0cmVhbTo6VmlkZW9SZWNlaXZlU3Ry
ZWFtKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX3JlY2VpdmVfc3RhdGlz
dGljc18uZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHNfcHJv
eHlfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc190aHJlYWRfLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgICAvLyBOYWNrU2VuZGVyCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCAgIC8vIEtleUZyYW1lUmVxdWVz
dFNlbmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyksICAvLyBPbkNv
bXBsZXRlRnJhbWVDYWxsYmFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cywgIC8vIE5hY2tTZW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMs
ICAvLyBLZXlGcmFtZVJlcXVlc3RTZW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMsICAvLyBPbkNvbXBsZXRlRnJhbWVDYWxsYmFjaworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uZmlnXy5mcmFtZV9kZWNyeXB0b3IpLAogICAgICAgcnRwX3N0cmVh
bV9zeW5jXyh0aGlzKSB7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlZpZGVvUmVjZWl2ZVN0cmVh
bTogIiA8PCBjb25maWdfLlRvU3RyaW5nKCk7CiAKQEAgLTI0NSw2ICsyNTQsMTggQEAgdm9pZCBW
aWRlb1JlY2VpdmVTdHJlYW06OlN0YXJ0KCkgewogICAgIGlmICghdmlkZW9fZGVjb2Rlcikgewog
ICAgICAgdmlkZW9fZGVjb2RlciA9IGFic2w6Om1ha2VfdW5pcXVlPE51bGxWaWRlb0RlY29kZXI+
KCk7CiAgICAgfQorCisgICAgc3RkOjpzdHJpbmcgZGVjb2RlZF9vdXRwdXRfZmlsZSA9CisgICAg
ICAgIGZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoIldlYlJUQy1EZWNvZGVyRGF0YUR1bXBEaXJl
Y3RvcnkiKTsKKyAgICBpZiAoIWRlY29kZWRfb3V0cHV0X2ZpbGUuZW1wdHkoKSkgeworICAgICAg
Y2hhciBmaWxlbmFtZV9idWZmZXJbMjU2XTsKKyAgICAgIHJ0Yzo6U2ltcGxlU3RyaW5nQnVpbGRl
ciBzc2IoZmlsZW5hbWVfYnVmZmVyKTsKKyAgICAgIHNzYiA8PCBkZWNvZGVkX291dHB1dF9maWxl
IDw8ICIvd2VicnRjX3JlY2VpdmVfc3RyZWFtXyIKKyAgICAgICAgICA8PCB0aGlzLT5jb25maWdf
LnJ0cC5sb2NhbF9zc3JjIDw8ICIuaXZmIjsKKyAgICAgIHZpZGVvX2RlY29kZXIgPSBhYnNsOjpt
YWtlX3VuaXF1ZTxGcmFtZUR1bXBpbmdEZWNvZGVyPigKKyAgICAgICAgICBzdGQ6Om1vdmUodmlk
ZW9fZGVjb2RlciksIHJ0Yzo6Q3JlYXRlUGxhdGZvcm1GaWxlKHNzYi5zdHIoKSkpOworICAgIH0K
KwogICAgIHZpZGVvX2RlY29kZXJzXy5wdXNoX2JhY2soc3RkOjptb3ZlKHZpZGVvX2RlY29kZXIp
KTsKIAogICAgIHZpZGVvX3JlY2VpdmVyXy5SZWdpc3RlckV4dGVybmFsRGVjb2Rlcih2aWRlb19k
ZWNvZGVyc18uYmFjaygpLmdldCgpLApAQCAtMzU3LDYgKzM3OCwxNCBAQCB2b2lkIFZpZGVvUmVj
ZWl2ZVN0cmVhbTo6T25Db21wbGV0ZUZyYW1lKAogICAvLyBwYXJ0aWFsbHkgZW5hYmxlZCBpbnRl
ci1sYXllciBwcmVkaWN0aW9uLgogICBmcmFtZS0+aWQuc3BhdGlhbF9sYXllciA9IDA7CiAKKyAg
Ly8gVE9ETyhodHRwczovL2J1Z3Mud2VicnRjLm9yZy85OTc0KTogQ29uc2lkZXIgcmVtb3Zpbmcg
dGhpcyB3b3JrYXJvdW5kLgorICBpbnQ2NF90IHRpbWVfbm93X21zID0gcnRjOjpUaW1lTWlsbGlz
KCk7CisgIGlmIChsYXN0X2NvbXBsZXRlX2ZyYW1lX3RpbWVfbXNfID4gMCAmJgorICAgICAgdGlt
ZV9ub3dfbXMgLSBsYXN0X2NvbXBsZXRlX2ZyYW1lX3RpbWVfbXNfID4ga0luYWN0aXZlU3RyZWFt
VGhyZXNob2xkTXMpIHsKKyAgICBmcmFtZV9idWZmZXJfLT5DbGVhcigpOworICB9CisgIGxhc3Rf
Y29tcGxldGVfZnJhbWVfdGltZV9tc18gPSB0aW1lX25vd19tczsKKwogICBpbnQ2NF90IGxhc3Rf
Y29udGludW91c19waWQgPSBmcmFtZV9idWZmZXJfLT5JbnNlcnRGcmFtZShzdGQ6Om1vdmUoZnJh
bWUpKTsKICAgaWYgKGxhc3RfY29udGludW91c19waWQgIT0gLTEpCiAgICAgcnRwX3ZpZGVvX3N0
cmVhbV9yZWNlaXZlcl8uRnJhbWVDb250aW51b3VzKGxhc3RfY29udGludW91c19waWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
dmlkZW9fcmVjZWl2ZV9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmgKaW5kZXggYWU1Y2VkNTFjM2I3
YjE5ZmVhMTg0MzI2YjA5MTJkZjk3YWJhMDg4ZS4uNWM5ZmQ4M2M2MmE5ZWQxMTUzYmIyMGU1MTA4
ZDRlYjNiM2IyYmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW0uaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19yZWNlaXZlX3N0cmVh
bS5oCkBAIC0xNyw3ICsxNyw2IEBACiAjaW5jbHVkZSAiY2FsbC9ydHBfcGFja2V0X3NpbmtfaW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9zeW5jYWJsZS5oIgogI2luY2x1ZGUgImNhbGwvdmlk
ZW9fcmVjZWl2ZV9zdHJlYW0uaCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vbGlieXV2L2luY2x1
ZGUvd2VicnRjX2xpYnl1di5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9m
bGV4ZmVjX3JlY2VpdmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVf
YnVmZmVyMi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGluZ19p
bXBsLmgiCkBAIC0xMTUsNiArMTE0LDcgQEAgY2xhc3MgVmlkZW9SZWNlaXZlU3RyZWFtIDogcHVi
bGljIHdlYnJ0Yzo6VmlkZW9SZWNlaXZlU3RyZWFtLAogCiAgIENhbGxTdGF0cyogY29uc3QgY2Fs
bF9zdGF0c187CiAKKyAgUmVjZWl2ZVN0YXRpc3RpY3NQcm94eSBzdGF0c19wcm94eV87CiAgIC8v
IFNoYXJlZCBieSBtZWRpYSBhbmQgcnR4IHN0cmVhbSByZWNlaXZlcnMsIHNpbmNlIHRoZSBsYXR0
ZXIgaGFzIG5vIFJ0cFJ0Y3AKICAgLy8gbW9kdWxlIG9mIGl0cyBvd24uCiAgIGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxSZWNlaXZlU3RhdGlzdGljcz4gcnRwX3JlY2VpdmVfc3RhdGlzdGljc187CkBA
IC0xMjIsNyArMTIyLDYgQEAgY2xhc3MgVmlkZW9SZWNlaXZlU3RyZWFtIDogcHVibGljIHdlYnJ0
Yzo6VmlkZW9SZWNlaXZlU3RyZWFtLAogICBzdGQ6OnVuaXF1ZV9wdHI8VkNNVGltaW5nPiB0aW1p
bmdfOyAgLy8gSml0dGVyIGJ1ZmZlciBleHBlcmltZW50LgogICB2Y206OlZpZGVvUmVjZWl2ZXIg
dmlkZW9fcmVjZWl2ZXJfOwogICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpWaWRlb1NpbmtJbnRlcmZh
Y2U8VmlkZW9GcmFtZT4+IGluY29taW5nX3ZpZGVvX3N0cmVhbV87Ci0gIFJlY2VpdmVTdGF0aXN0
aWNzUHJveHkgc3RhdHNfcHJveHlfOwogICBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyIHJ0cF92aWRl
b19zdHJlYW1fcmVjZWl2ZXJfOwogICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TdHJlYW1EZWNvZGVy
PiB2aWRlb19zdHJlYW1fZGVjb2Rlcl87CiAgIFJ0cFN0cmVhbXNTeW5jaHJvbml6ZXIgcnRwX3N0
cmVhbV9zeW5jXzsKQEAgLTE0Nyw2ICsxNDYsNyBAQCBjbGFzcyBWaWRlb1JlY2VpdmVTdHJlYW0g
OiBwdWJsaWMgd2VicnRjOjpWaWRlb1JlY2VpdmVTdHJlYW0sCiAgIGJvb2wgZnJhbWVfZGVjb2Rl
ZF8gPSBmYWxzZTsKIAogICBpbnQ2NF90IGxhc3Rfa2V5ZnJhbWVfcmVxdWVzdF9tc18gPSAwOwor
ICBpbnQ2NF90IGxhc3RfY29tcGxldGVfZnJhbWVfdGltZV9tc18gPSAwOwogfTsKIH0gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2
ZV9zdHJlYW1fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby92aWRlb19yZWNlaXZlX3N0cmVhbV91bml0dGVzdC5jYwppbmRleCBlNGJh
NjliN2I5MmJlNGJlZjA3N2RjYjZjOWIyNGM3YWNlZjBmNjdhLi4wZWM5ZTE3NzMzODRkM2U3MmI2
NjFjZTQ2OGFlNTc5NGQ1NmE3NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19yZWNlaXZlX3N0cmVhbV91bml0dGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92
aWRlb19yZWNlaXZlX3N0cmVhbV91bml0dGVzdC5jYwpAQCAtMTE4LDcgKzExOCw3IEBAIFRFU1Rf
RihWaWRlb1JlY2VpdmVTdHJlYW1UZXN0LCBDcmVhdGVGcmFtZUZyb21IMjY0Rm10cFNwcm9wQW5k
SWRyKSB7CiAgIHJ0cHBhY2tldC5TZXRQYXlsb2FkVHlwZSg5OSk7CiAgIHJ0cHBhY2tldC5TZXRT
ZXF1ZW5jZU51bWJlcigxKTsKICAgcnRwcGFja2V0LlNldFRpbWVzdGFtcCgwKTsKLSAgcnRjOjpF
dmVudCBpbml0X2RlY29kZV9ldmVudF8oZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBpbml0
X2RlY29kZV9ldmVudF87CiAgIEVYUEVDVF9DQUxMKG1vY2tfaDI2NF92aWRlb19kZWNvZGVyXywg
SW5pdERlY29kZShfLCBfKSkKICAgICAgIC5XaWxsT25jZShJbnZva2UoWyZpbml0X2RlY29kZV9l
dmVudF9dKGNvbnN0IFZpZGVvQ29kZWMqIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbnVtYmVyX29mX2NvcmVzKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRl
b19zZW5kX3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmNjCmluZGV4IDA1NGQyN2U0MjFjMDAxNzlkMmNm
YWQ5NmNmMDE4YTJhOGNmYTExY2UuLjA1OWE2MTUwYWY5YjljZTNlZDRmODc5YWM0Yzk3YWJmNDEy
MjNjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmNjCkBAIC0xNSwx
MiArMTUsMTUgQEAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVy
X2V4dGVuc2lvbl9zaXplLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X3NlbmRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInZpZGVvL3ZpZGVv
X3NlbmRfc3RyZWFtX2ltcGwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIG5hbWVzcGFjZSB7
CiAKK2NvbnN0ZXhwciBjaGFyIGtUYXJnZXRCaXRyYXRlUnRjcEZpZWxkVHJpYWxbXSA9ICJXZWJS
VEMtVGFyZ2V0LUJpdHJhdGUtUnRjcCI7CisKIHNpemVfdCBDYWxjdWxhdGVNYXhIZWFkZXJTaXpl
KGNvbnN0IFJ0cENvbmZpZyYgY29uZmlnKSB7CiAgIHNpemVfdCBoZWFkZXJfc2l6ZSA9IGtSdHBI
ZWFkZXJTaXplOwogICBzaXplX3QgZXh0ZW5zaW9uc19zaXplID0gMDsKQEAgLTYyLDcgKzY1LDcg
QEAgVmlkZW9TZW5kU3RyZWFtOjpWaWRlb1NlbmRTdHJlYW0oCiAgICAgcnRjOjpUYXNrUXVldWUq
IHdvcmtlcl9xdWV1ZSwKICAgICBDYWxsU3RhdHMqIGNhbGxfc3RhdHMsCiAgICAgUnRwVHJhbnNw
b3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHRyYW5zcG9ydCwKLSAgICBCaXRyYXRlQWxsb2Nh
dG9yKiBiaXRyYXRlX2FsbG9jYXRvciwKKyAgICBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlKiBi
aXRyYXRlX2FsbG9jYXRvciwKICAgICBTZW5kRGVsYXlTdGF0cyogc2VuZF9kZWxheV9zdGF0cywK
ICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmln
IGNvbmZpZywKQEAgLTcxLDEzICs3NCwxMyBAQCBWaWRlb1NlbmRTdHJlYW06OlZpZGVvU2VuZFN0
cmVhbSgKICAgICBjb25zdCBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwUGF5bG9hZFN0YXRlPiYgc3Vz
cGVuZGVkX3BheWxvYWRfc3RhdGVzLAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVy
PiBmZWNfY29udHJvbGxlcikKICAgICA6IHdvcmtlcl9xdWV1ZV8od29ya2VyX3F1ZXVlKSwKLSAg
ICAgIHRocmVhZF9zeW5jX2V2ZW50XyhmYWxzZSAvKiBtYW51YWxfcmVzZXQgKi8sIGZhbHNlKSwK
ICAgICAgIHN0YXRzX3Byb3h5XyhDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAogICAgICAgICAg
ICAgICAgICAgIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICBlbmNvZGVyX2NvbmZpZy5jb250
ZW50X3R5cGUpLAogICAgICAgY29uZmlnXyhzdGQ6Om1vdmUoY29uZmlnKSksCiAgICAgICBjb250
ZW50X3R5cGVfKGVuY29kZXJfY29uZmlnLmNvbnRlbnRfdHlwZSkgewogICBSVENfRENIRUNLKGNv
bmZpZ18uZW5jb2Rlcl9zZXR0aW5ncy5lbmNvZGVyX2ZhY3RvcnkpOworICBSVENfRENIRUNLKGNv
bmZpZ18uZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KTsKIAogICB2
aWRlb19zdHJlYW1fZW5jb2Rlcl8gPSBDcmVhdGVWaWRlb1N0cmVhbUVuY29kZXIobnVtX2NwdV9j
b3JlcywgJnN0YXRzX3Byb3h5XywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbmZpZ18uZW5jb2Rlcl9zZXR0aW5ncywKQEAgLTEwNCw5ICsxMDcs
MTAgQEAgVmlkZW9TZW5kU3RyZWFtOjpWaWRlb1NlbmRTdHJlYW0oCiAgIC8vIGl0IHdhcyBjcmVh
dGVkIG9uLgogICB0aHJlYWRfc3luY19ldmVudF8uV2FpdChydGM6OkV2ZW50OjprRm9yZXZlcik7
CiAgIHNlbmRfc3RyZWFtXy0+UmVnaXN0ZXJQcm9jZXNzVGhyZWFkKG1vZHVsZV9wcm9jZXNzX3Ro
cmVhZCk7Ci0gIC8vIFRPRE8oc3ByYW5nKTogRW5hYmxlIHRoaXMgYWxzbyBmb3IgcmVndWxhciB2
aWRlbyBjYWxscyBpZiBpdCB3b3JrcyB3ZWxsLgotICBpZiAoZW5jb2Rlcl9jb25maWcuY29udGVu
dF90eXBlID09IFZpZGVvRW5jb2RlckNvbmZpZzo6Q29udGVudFR5cGU6OmtTY3JlZW4pIHsKLSAg
ICAvLyBPbmx5IHNpZ25hbCB0YXJnZXQgYml0cmF0ZSBmb3Igc2NyZWVuc2hhcmUgc3RyZWFtcywg
Zm9yIG5vdy4KKyAgLy8gVE9ETyhzcHJhbmcpOiBFbmFibGUgdGhpcyBhbHNvIGZvciByZWd1bGFy
IHZpZGVvIGNhbGxzIGJ5IGRlZmF1bHQsIGlmIGl0CisgIC8vIHdvcmtzIHdlbGwuCisgIGlmIChl
bmNvZGVyX2NvbmZpZy5jb250ZW50X3R5cGUgPT0gVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50
VHlwZTo6a1NjcmVlbiB8fAorICAgICAgZmllbGRfdHJpYWw6OklzRW5hYmxlZChrVGFyZ2V0Qml0
cmF0ZVJ0Y3BGaWVsZFRyaWFsKSkgewogICAgIHZpZGVvX3N0cmVhbV9lbmNvZGVyXy0+U2V0Qml0
cmF0ZUFsbG9jYXRpb25PYnNlcnZlcihzZW5kX3N0cmVhbV8uZ2V0KCkpOwogICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Zp
ZGVvX3NlbmRfc3RyZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbS5oCmluZGV4IDA5NDUyMDNkZjMxYjVhNTc5ODE5
YTFiMWQ1YmIzMjUyYjU3NTc3ZGQuLjIyYWE0YjFjNmQ1ZGJkMzYyNzVlZmE3YTYxYWY5NTE4MWQ2
MzhhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW0uaApAQCAtMjAsNyAr
MjAsNiBAQAogI2luY2x1ZGUgImNhbGwvYml0cmF0ZV9hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJj
YWxsL3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmgiCiAjaW5jbHVkZSAiY2FsbC92aWRlb19zZW5kX3N0
cmVhbS5oIgotI2luY2x1ZGUgImNvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGli
eXV2LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVlLmgiCkBAIC02
MCw3ICs1OSw3IEBAIGNsYXNzIFZpZGVvU2VuZFN0cmVhbSA6IHB1YmxpYyB3ZWJydGM6OlZpZGVv
U2VuZFN0cmVhbSB7CiAgICAgICBydGM6OlRhc2tRdWV1ZSogd29ya2VyX3F1ZXVlLAogICAgICAg
Q2FsbFN0YXRzKiBjYWxsX3N0YXRzLAogICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJ
bnRlcmZhY2UqIHRyYW5zcG9ydCwKLSAgICAgIEJpdHJhdGVBbGxvY2F0b3IqIGJpdHJhdGVfYWxs
b2NhdG9yLAorICAgICAgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSogYml0cmF0ZV9hbGxvY2F0
b3IsCiAgICAgICBTZW5kRGVsYXlTdGF0cyogc2VuZF9kZWxheV9zdGF0cywKICAgICAgIFJ0Y0V2
ZW50TG9nKiBldmVudF9sb2csCiAgICAgICBWaWRlb1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92
aWRlby92aWRlb19zZW5kX3N0cmVhbV9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbC5jYwppbmRleCA1
OGNhZjQ3Nzc0NjJkNzU5NWNhMDBhZjZjM2Y1OGEwZTk3NDE0NTdiLi41ZGNmMTgyNDNkNWY4NzZm
MDEyMDY3NTA0NjRiMTk3ZmIzYzJkMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9pbXBsLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVv
X3NlbmRfc3RyZWFtX2ltcGwuY2MKQEAgLTExMSw2ICsxMTEsMTQgQEAgaW50IENhbGN1bGF0ZU1h
eFBhZEJpdHJhdGVCcHMoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+JiBzdHJlYW1zLAog
ICByZXR1cm4gcGFkX3VwX3RvX2JpdHJhdGVfYnBzOwogfQogCitSdHBTZW5kZXJGcmFtZUVuY3J5
cHRpb25Db25maWcgQ3JlYXRlRnJhbWVFbmNyeXB0aW9uQ29uZmlnKAorICAgIGNvbnN0IFZpZGVv
U2VuZFN0cmVhbTo6Q29uZmlnKiBjb25maWcpIHsKKyAgUnRwU2VuZGVyRnJhbWVFbmNyeXB0aW9u
Q29uZmlnIGZyYW1lX2VuY3J5cHRpb25fY29uZmlnOworICBmcmFtZV9lbmNyeXB0aW9uX2NvbmZp
Zy5mcmFtZV9lbmNyeXB0b3IgPSBjb25maWctPmZyYW1lX2VuY3J5cHRvcjsKKyAgZnJhbWVfZW5j
cnlwdGlvbl9jb25maWcuY3J5cHRvX29wdGlvbnMgPSBjb25maWctPmNyeXB0b19vcHRpb25zOwor
ICByZXR1cm4gZnJhbWVfZW5jcnlwdGlvbl9jb25maWc7Cit9CisKIFJ0cFNlbmRlck9ic2VydmVy
cyBDcmVhdGVPYnNlcnZlcnMoQ2FsbFN0YXRzKiBjYWxsX3N0YXRzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFbmNvZGVyUnRjcEZlZWRiYWNrKiBlbmNvZGVyX2ZlZWRiYWNr
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kU3RhdGlzdGljc1Byb3h5
KiBzdGF0c19wcm94eSwKQEAgLTE1MSw2ICsxNTksMTYgQEAgYm9vbCBTYW1lU3RyZWFtc0VuYWJs
ZWQoY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgbGhzLAogfQogfSAgLy8gbmFtZXNwYWNl
CiAKK1BhY2luZ0NvbmZpZzo6UGFjaW5nQ29uZmlnKCkKKyAgICA6IHBhY2luZ19mYWN0b3IoImZh
Y3RvciIsIFBhY2VkU2VuZGVyOjprRGVmYXVsdFBhY2VNdWx0aXBsaWVyKSwKKyAgICAgIG1heF9w
YWNpbmdfZGVsYXkoIm1heF9kZWxheSIsCisgICAgICAgICAgICAgICAgICAgICAgIFRpbWVEZWx0
YTo6bXMoUGFjZWRTZW5kZXI6OmtNYXhRdWV1ZUxlbmd0aE1zKSkgeworICBQYXJzZUZpZWxkVHJp
YWwoeyZwYWNpbmdfZmFjdG9yLCAmbWF4X3BhY2luZ19kZWxheX0sCisgICAgICAgICAgICAgICAg
ICBmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJXZWJSVEMtVmlkZW8tUGFjaW5nIikpOworfQor
UGFjaW5nQ29uZmlnOjpQYWNpbmdDb25maWcoY29uc3QgUGFjaW5nQ29uZmlnJikgPSBkZWZhdWx0
OworUGFjaW5nQ29uZmlnOjp+UGFjaW5nQ29uZmlnKCkgPSBkZWZhdWx0OworCiAvLyBDaGVja0Vu
Y29kZXJBY3Rpdml0eVRhc2sgaXMgdXNlZCBmb3IgdHJhY2tpbmcgd2hlbiB0aGUgZW5jb2RlciBs
YXN0IHByb2R1Y2VkCiAvLyBhbmQgZW5jb2RlZCB2aWRlbyBmcmFtZS4gSWYgdGhlIGVuY29kZXIg
aGFzIG5vdCBwcm9kdWNlZCBhbnl0aGluZyB0aGUgbGFzdAogLy8ga0VuY29kZXJUaW1lT3V0TXMg
d2UgYWxzbyB3YW50IHRvIHN0b3Agc2VuZGluZyBwYWRkaW5nLgpAQCAtMjIxLDYgKzIzOSw3IEBA
IFZpZGVvU2VuZFN0cmVhbUltcGw6OlZpZGVvU2VuZFN0cmVhbUltcGwoCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZlY0NvbnRyb2xsZXI+IGZlY19jb250cm9sbGVyKQogICAgIDogaGFzX2Fscl9wcm9i
aW5nXyhjb25maWctPnBlcmlvZGljX2Fscl9iYW5kd2lkdGhfcHJvYmluZyB8fAogICAgICAgICAg
ICAgICAgICAgICAgICBHZXRBbHJTZXR0aW5ncyhjb250ZW50X3R5cGUpKSwKKyAgICAgIHBhY2lu
Z19jb25maWdfKFBhY2luZ0NvbmZpZygpKSwKICAgICAgIHN0YXRzX3Byb3h5XyhzdGF0c19wcm94
eSksCiAgICAgICBjb25maWdfKGNvbmZpZyksCiAgICAgICB3b3JrZXJfcXVldWVfKHdvcmtlcl9x
dWV1ZSksCkBAIC0yMzgsMTkgKzI1NywyMCBAQCBWaWRlb1NlbmRTdHJlYW1JbXBsOjpWaWRlb1Nl
bmRTdHJlYW1JbXBsKAogICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnXy0+cnRwLnNzcmNz
LAogICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9fc3RyZWFtX2VuY29kZXIpLAogICAgICAg
YmFuZHdpZHRoX29ic2VydmVyXyh0cmFuc3BvcnQtPkdldEJhbmR3aWR0aE9ic2VydmVyKCkpLAot
ICAgICAgcnRwX3ZpZGVvX3NlbmRlcl8oCi0gICAgICAgICAgdHJhbnNwb3J0Xy0+Q3JlYXRlUnRw
VmlkZW9TZW5kZXIoY29uZmlnXy0+cnRwLnNzcmNzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1c3BlbmRlZF9zc3JjcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdXNwZW5kZWRfcGF5bG9hZF9zdGF0ZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnXy0+cnRwLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18tPnJ0Y3AsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnXy0+c2VuZF90cmFu
c3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRl
T2JzZXJ2ZXJzKGNhbGxfc3RhdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZlbmNvZGVyX2ZlZWRiYWNrXywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHNfcHJv
eHlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZW5kX2RlbGF5X3N0YXRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBldmVudF9sb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptb3ZlKGZlY19jb250cm9sbGVyKSkpLAorICAgICAgcnRwX3ZpZGVv
X3NlbmRlcl8odHJhbnNwb3J0Xy0+Q3JlYXRlUnRwVmlkZW9TZW5kZXIoCisgICAgICAgICAgY29u
ZmlnXy0+cnRwLnNzcmNzLAorICAgICAgICAgIHN1c3BlbmRlZF9zc3JjcywKKyAgICAgICAgICBz
dXNwZW5kZWRfcGF5bG9hZF9zdGF0ZXMsCisgICAgICAgICAgY29uZmlnXy0+cnRwLAorICAgICAg
ICAgIGNvbmZpZ18tPnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zLAorICAgICAgICAgIGNvbmZpZ18t
PnNlbmRfdHJhbnNwb3J0LAorICAgICAgICAgIENyZWF0ZU9ic2VydmVycyhjYWxsX3N0YXRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jb2Rlcl9mZWVkYmFja18sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRzX3Byb3h5XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VuZF9kZWxheV9zdGF0cyksCisgICAgICAgICAgZXZlbnRfbG9nLAorICAgICAgICAgIHN0ZDo6
bW92ZShmZWNfY29udHJvbGxlciksCisgICAgICAgICAgQ3JlYXRlRnJhbWVFbmNyeXB0aW9uQ29u
ZmlnKGNvbmZpZ18pKSksCiAgICAgICB3ZWFrX3B0cl9mYWN0b3J5Xyh0aGlzKSB7CiAgIFJUQ19E
Q0hFQ0tfUlVOX09OKHdvcmtlcl9xdWV1ZV8pOwogICBSVENfTE9HKExTX0lORk8pIDw8ICJWaWRl
b1NlbmRTdHJlYW1JbnRlcm5hbDogIiA8PCBjb25maWdfLT5Ub1N0cmluZygpOwpAQCAtMjkzLDkg
KzMxMyw5IEBAIFZpZGVvU2VuZFN0cmVhbUltcGw6OlZpZGVvU2VuZFN0cmVhbUltcGwoCiAgICAg
ICB0cmFuc3BvcnQtPlNldFF1ZXVlVGltZUxpbWl0KGFscl9zZXR0aW5ncy0+bWF4X3BhY2VkX3F1
ZXVlX3RpbWUpOwogICAgIH0gZWxzZSB7CiAgICAgICB0cmFuc3BvcnQtPkVuYWJsZVBlcmlvZGlj
QWxyUHJvYmluZyhmYWxzZSk7Ci0gICAgICB0cmFuc3BvcnQtPlNldFBhY2luZ0ZhY3RvcihQYWNl
ZFNlbmRlcjo6a0RlZmF1bHRQYWNlTXVsdGlwbGllcik7Ci0gICAgICBjb25maWd1cmVkX3BhY2lu
Z19mYWN0b3JfID0gUGFjZWRTZW5kZXI6OmtEZWZhdWx0UGFjZU11bHRpcGxpZXI7Ci0gICAgICB0
cmFuc3BvcnQtPlNldFF1ZXVlVGltZUxpbWl0KFBhY2VkU2VuZGVyOjprTWF4UXVldWVMZW5ndGhN
cyk7CisgICAgICB0cmFuc3BvcnQtPlNldFBhY2luZ0ZhY3RvcihwYWNpbmdfY29uZmlnXy5wYWNp
bmdfZmFjdG9yKTsKKyAgICAgIGNvbmZpZ3VyZWRfcGFjaW5nX2ZhY3Rvcl8gPSBwYWNpbmdfY29u
ZmlnXy5wYWNpbmdfZmFjdG9yOworICAgICAgdHJhbnNwb3J0LT5TZXRRdWV1ZVRpbWVMaW1pdChw
YWNpbmdfY29uZmlnXy5tYXhfcGFjaW5nX2RlbGF5LkdldCgpLm1zKCkpOwogICAgIH0KICAgfQog
CkBAIC01NjMsMTcgKzU4Myw2IEBAIEVuY29kZWRJbWFnZUNhbGxiYWNrOjpSZXN1bHQgVmlkZW9T
ZW5kU3RyZWFtSW1wbDo6T25FbmNvZGVkSW1hZ2UoCiAgIC8vIEVuY29kZWQgaXMgY2FsbGVkIG9u
IHdoYXRldmVyIHRocmVhZCB0aGUgcmVhbCBlbmNvZGVyIGltcGxlbWVudGF0aW9uIHJ1bgogICAv
LyBvbi4gSW4gdGhlIGNhc2Ugb2YgaGFyZHdhcmUgZW5jb2RlcnMsIHRoZXJlIG1pZ2h0IGJlIHNl
dmVyYWwgZW5jb2RlcnMKICAgLy8gcnVubmluZyBpbiBwYXJhbGxlbCBvbiBkaWZmZXJlbnQgdGhy
ZWFkcy4KLSAgY29uc3Qgc2l6ZV90IHNpbXVsY2FzdF9pZHggPQotICAgICAgKGNvZGVjX3NwZWNp
ZmljX2luZm8tPmNvZGVjVHlwZSAhPSBrVmlkZW9Db2RlY1ZQOSkKLSAgICAgICAgICA/IGVuY29k
ZWRfaW1hZ2UuU3BhdGlhbEluZGV4KCkudmFsdWVfb3IoMCkKLSAgICAgICAgICA6IDA7Ci0gIGlm
IChjb25maWdfLT5wb3N0X2VuY29kZV9jYWxsYmFjaykgewotICAgIC8vIFRPRE8obmlzc2UpOiBE
ZWxldGUgd2VicnRjOjpFbmNvZGVkRnJhbWUgY2xhc3MsIHBhc3MgRW5jb2RlZEltYWdlCi0gICAg
Ly8gaW5zdGVhZC4KLSAgICBjb25maWdfLT5wb3N0X2VuY29kZV9jYWxsYmFjay0+RW5jb2RlZEZy
YW1lQ2FsbGJhY2soRW5jb2RlZEZyYW1lKAotICAgICAgICBlbmNvZGVkX2ltYWdlLl9idWZmZXIs
IGVuY29kZWRfaW1hZ2UuX2xlbmd0aCwgZW5jb2RlZF9pbWFnZS5fZnJhbWVUeXBlLAotICAgICAg
ICBzaW11bGNhc3RfaWR4LCBlbmNvZGVkX2ltYWdlLlRpbWVzdGFtcCgpKSk7Ci0gIH0KICAgewog
ICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmVuY29kZXJfYWN0aXZpdHlfY3JpdF9zZWN0Xyk7CiAg
ICAgaWYgKGNoZWNrX2VuY29kZXJfYWN0aXZpdHlfdGFza18pCkBAIC02MTMsMjEgKzYyMiwyMiBA
QCBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwUGF5bG9hZFN0YXRlPiBWaWRlb1NlbmRTdHJlYW1JbXBs
OjpHZXRSdHBQYXlsb2FkU3RhdGVzKCkKICAgcmV0dXJuIHJ0cF92aWRlb19zZW5kZXJfLT5HZXRS
dHBQYXlsb2FkU3RhdGVzKCk7CiB9CiAKLXVpbnQzMl90IFZpZGVvU2VuZFN0cmVhbUltcGw6Ok9u
Qml0cmF0ZVVwZGF0ZWQodWludDMyX3QgYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBydHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcHJv
YmluZ19pbnRlcnZhbF9tcykgewordWludDMyX3QgVmlkZW9TZW5kU3RyZWFtSW1wbDo6T25CaXRy
YXRlVXBkYXRlZChCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpIHsKICAgUlRDX0RDSEVD
S19SVU5fT04od29ya2VyX3F1ZXVlXyk7CiAgIFJUQ19EQ0hFQ0socnRwX3ZpZGVvX3NlbmRlcl8t
PklzQWN0aXZlKCkpCiAgICAgICA8PCAiVmlkZW9TZW5kU3RyZWFtOjpTdGFydCBoYXMgbm90IGJl
ZW4gY2FsbGVkLiI7CiAKLSAgcnRwX3ZpZGVvX3NlbmRlcl8tPk9uQml0cmF0ZVVwZGF0ZWQoYml0
cmF0ZV9icHMsIGZyYWN0aW9uX2xvc3MsIHJ0dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdHNfcHJveHlfLT5HZXRTZW5kRnJhbWVSYXRlKCkpOworICBydHBfdmlk
ZW9fc2VuZGVyXy0+T25CaXRyYXRlVXBkYXRlZCgKKyAgICAgIHVwZGF0ZS50YXJnZXRfYml0cmF0
ZS5icHMoKSwKKyAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50OF90Pih1cGRhdGUucGFja2V0
X2xvc3NfcmF0aW8gKiAyNTYpLAorICAgICAgdXBkYXRlLnJvdW5kX3RyaXBfdGltZS5tcygpLCBz
dGF0c19wcm94eV8tPkdldFNlbmRGcmFtZVJhdGUoKSk7CiAgIGVuY29kZXJfdGFyZ2V0X3JhdGVf
YnBzXyA9IHJ0cF92aWRlb19zZW5kZXJfLT5HZXRQYXlsb2FkQml0cmF0ZUJwcygpOwogICBlbmNv
ZGVyX3RhcmdldF9yYXRlX2Jwc18gPQogICAgICAgc3RkOjptaW4oZW5jb2Rlcl9tYXhfYml0cmF0
ZV9icHNfLCBlbmNvZGVyX3RhcmdldF9yYXRlX2Jwc18pOwotICB2aWRlb19zdHJlYW1fZW5jb2Rl
cl8tPk9uQml0cmF0ZVVwZGF0ZWQoZW5jb2Rlcl90YXJnZXRfcmF0ZV9icHNfLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25fbG9zcywgcnR0KTsKKyAg
dmlkZW9fc3RyZWFtX2VuY29kZXJfLT5PbkJpdHJhdGVVcGRhdGVkKAorICAgICAgZW5jb2Rlcl90
YXJnZXRfcmF0ZV9icHNfLAorICAgICAgcnRjOjpkY2hlY2tlZF9jYXN0PHVpbnQ4X3Q+KHVwZGF0
ZS5wYWNrZXRfbG9zc19yYXRpbyAqIDI1NiksCisgICAgICB1cGRhdGUucm91bmRfdHJpcF90aW1l
Lm1zKCkpOwogICBzdGF0c19wcm94eV8tPk9uU2V0RW5jb2RlclRhcmdldFJhdGUoZW5jb2Rlcl90
YXJnZXRfcmF0ZV9icHNfKTsKICAgcmV0dXJuIHJ0cF92aWRlb19zZW5kZXJfLT5HZXRQcm90ZWN0
aW9uQml0cmF0ZUJwcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJl
YW1faW1wbC5oCmluZGV4IGVlZDlmNTY3ZmIwODE4NmZhODUxZGQyOWM0MmM1NDE3MGJhMzM5OTMu
LjljYWFiYWNkYWI5MjQ0OGQxMzY3N2NhZjkxMDUxN2YxYjJhZmZlYjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRf
c3RyZWFtX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9pbXBsLmgKQEAgLTE4LDcgKzE4LDYgQEAKICNp
bmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJfaW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiY2FsbC9iaXRyYXRlX2FsbG9jYXRvci5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3ZpZGVv
X3NlbmRlcl9pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElO
VChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nl
c3NfdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvd2Vha19wdHIuaCIKICNpbmNsdWRlICJ2
aWRlby9jYWxsX3N0YXRzLmgiCkBAIC0zMCw2ICsyOSwxNiBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCisvLyBQYWNpbmcgYnVmZmVyIGNvbmZpZzsgb3ZlcnJp
ZGRlbiBieSBBTFIgY29uZmlnIGlmIHByb3ZpZGVkLgorc3RydWN0IFBhY2luZ0NvbmZpZyB7Cisg
IFBhY2luZ0NvbmZpZygpOworICBQYWNpbmdDb25maWcoY29uc3QgUGFjaW5nQ29uZmlnJik7Cisg
IFBhY2luZ0NvbmZpZyYgb3BlcmF0b3I9KGNvbnN0IFBhY2luZ0NvbmZpZyYpID0gZGVmYXVsdDsK
KyAgflBhY2luZ0NvbmZpZygpOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPGRvdWJsZT4gcGFjaW5n
X2ZhY3RvcjsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IG1heF9wYWNpbmdfZGVs
YXk7Cit9OworCiAvLyBWaWRlb1NlbmRTdHJlYW1JbXBsIGltcGxlbWVudHMgaW50ZXJuYWw6OlZp
ZGVvU2VuZFN0cmVhbS4KIC8vIEl0IGlzIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCBvbiB8d29ya2Vy
X3F1ZXVlfC4gVGhlIGludGVudCBpcyB0byBkZWNyZWFzZSB0aGUKIC8vIG5lZWQgZm9yIGxvY2tp
bmcgYW5kIHRvIGVuc3VyZSBtZXRob2RzIGFyZSBjYWxsZWQgaW4gc2VxdWVuY2UuCkBAIC04Mywx
MCArOTIsNyBAQCBjbGFzcyBWaWRlb1NlbmRTdHJlYW1JbXBsIDogcHVibGljIHdlYnJ0Yzo6Qml0
cmF0ZUFsbG9jYXRvck9ic2VydmVyLAogICBjbGFzcyBDaGVja0VuY29kZXJBY3Rpdml0eVRhc2s7
CiAKICAgLy8gSW1wbGVtZW50cyBCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIuCi0gIHVpbnQzMl90
IE9uQml0cmF0ZVVwZGF0ZWQodWludDMyX3QgYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3NzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDY0X3QgcnR0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qg
cHJvYmluZ19pbnRlcnZhbF9tcykgb3ZlcnJpZGU7CisgIHVpbnQzMl90IE9uQml0cmF0ZVVwZGF0
ZWQoQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlKSBvdmVycmlkZTsKIAogICB2b2lkIE9u
RW5jb2RlckNvbmZpZ3VyYXRpb25DaGFuZ2VkKHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBzdHJl
YW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW5fdHJhbnNt
aXRfYml0cmF0ZV9icHMpIG92ZXJyaWRlOwpAQCAtMTE1LDYgKzEyMSw3IEBAIGNsYXNzIFZpZGVv
U2VuZFN0cmVhbUltcGwgOiBwdWJsaWMgd2VicnRjOjpCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIs
CiAgIHZvaWQgU2lnbmFsRW5jb2RlckFjdGl2ZSgpOwogCiAgIGNvbnN0IGJvb2wgaGFzX2Fscl9w
cm9iaW5nXzsKKyAgY29uc3QgUGFjaW5nQ29uZmlnIHBhY2luZ19jb25maWdfOwogCiAgIFNlbmRT
dGF0aXN0aWNzUHJveHkqIGNvbnN0IHN0YXRzX3Byb3h5XzsKICAgY29uc3QgVmlkZW9TZW5kU3Ry
ZWFtOjpDb25maWcqIGNvbnN0IGNvbmZpZ187CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9pbXBsX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbF91bml0dGVzdC5jYwppbmRleCBkZDAzNjkwOWE2YWYx
ZWM1Njc5OGQ0OGI5NThhMTY5ZDBiN2NkYjE4Li4zMmQwZGYxYzJlNjFiN2RjNWVmY2RhZTgzZjYz
YTQxODgxMDcxMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9pbXBsX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3Nl
bmRfc3RyZWFtX2ltcGxfdW5pdHRlc3QuY2MKQEAgLTY5LDYgKzY5LDE0IEBAIGNsYXNzIE1vY2tS
dHBWaWRlb1NlbmRlciA6IHB1YmxpYyBSdHBWaWRlb1NlbmRlckludGVyZmFjZSB7CiAgIE1PQ0tf
Q09OU1RfTUVUSE9EMChHZXRQcm90ZWN0aW9uQml0cmF0ZUJwcywgdWludDMyX3QoKSk7CiAgIE1P
Q0tfTUVUSE9EMyhTZXRFbmNvZGluZ0RhdGEsIHZvaWQoc2l6ZV90LCBzaXplX3QsIHNpemVfdCkp
OwogfTsKKworQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgQ3JlYXRlQWxsb2NhdGlvbihpbnQgYml0
cmF0ZV9icHMpIHsKKyAgQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlOworICB1cGRhdGUu
dGFyZ2V0X2JpdHJhdGUgPSBEYXRhUmF0ZTo6YnBzKGJpdHJhdGVfYnBzKTsKKyAgdXBkYXRlLnBh
Y2tldF9sb3NzX3JhdGlvID0gMDsKKyAgdXBkYXRlLnJvdW5kX3RyaXBfdGltZSA9IFRpbWVEZWx0
YTo6WmVybygpOworICByZXR1cm4gdXBkYXRlOworfQogfSAgLy8gbmFtZXNwYWNlCiAKIGNsYXNz
IFZpZGVvU2VuZFN0cmVhbUltcGxUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CkBAIC05
MSw3ICs5OSw3IEBAIGNsYXNzIFZpZGVvU2VuZFN0cmVhbUltcGxUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiAgICAgRVhQRUNUX0NBTEwodHJhbnNwb3J0X2NvbnRyb2xsZXJfLCBwYWNr
ZXRfcm91dGVyKCkpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oJnBhY2tldF9yb3V0
ZXJfKSk7CiAgICAgRVhQRUNUX0NBTEwodHJhbnNwb3J0X2NvbnRyb2xsZXJfLAotICAgICAgICAg
ICAgICAgIENyZWF0ZVJ0cFZpZGVvU2VuZGVyKF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8pKQor
ICAgICAgICAgICAgICAgIENyZWF0ZVJ0cFZpZGVvU2VuZGVyKF8sIF8sIF8sIF8sIF8sIF8sIF8s
IF8sIF8sIF8pKQogICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCZydHBfdmlkZW9fc2Vu
ZGVyXykpOwogICAgIEVYUEVDVF9DQUxMKHJ0cF92aWRlb19zZW5kZXJfLCBTZXRBY3RpdmUoXykp
CiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseSh0ZXN0aW5nOjpJbnZva2UoCkBAIC0zNjcsNyArMzc1
LDcgQEAgVEVTVF9GKFZpZGVvU2VuZFN0cmVhbUltcGxUZXN0LCBGb3J3YXJkc1ZpZGVvQml0cmF0
ZUFsbG9jYXRpb25XaGVuRW5hYmxlZCkgewogICAgICAgICAuVGltZXMoMSkKICAgICAgICAgLldp
bGxPbmNlKFJldHVybihrQml0cmF0ZUJwcykpOwogICAgIHN0YXRpY19jYXN0PEJpdHJhdGVBbGxv
Y2F0b3JPYnNlcnZlcio+KHZzc19pbXBsLmdldCgpKQotICAgICAgICAtPk9uQml0cmF0ZVVwZGF0
ZWQoa0JpdHJhdGVCcHMsIDAsIDAsIDApOworICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoQ3Jl
YXRlQWxsb2NhdGlvbihrQml0cmF0ZUJwcykpOwogICAgIEVYUEVDVF9DQUxMKHJ0cF92aWRlb19z
ZW5kZXJfLCBPbkJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlZChhbGxvYykpLlRpbWVzKDEpOwogICAg
IG9ic2VydmVyLT5PbkJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlZChhbGxvYyk7CiAKQEAgLTM3Niw3
ICszODQsNyBAQCBURVNUX0YoVmlkZW9TZW5kU3RyZWFtSW1wbFRlc3QsIEZvcndhcmRzVmlkZW9C
aXRyYXRlQWxsb2NhdGlvbldoZW5FbmFibGVkKSB7CiAgICAgICAgIC5UaW1lcygxKQogICAgICAg
ICAuV2lsbE9uY2UoUmV0dXJuKDApKTsKICAgICBzdGF0aWNfY2FzdDxCaXRyYXRlQWxsb2NhdG9y
T2JzZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSkKLSAgICAgICAgLT5PbkJpdHJhdGVVcGRhdGVkKDAs
IDAsIDAsIDApOworICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoQ3JlYXRlQWxsb2NhdGlvbigw
KSk7CiAgICAgRVhQRUNUX0NBTEwocnRwX3ZpZGVvX3NlbmRlcl8sIE9uQml0cmF0ZUFsbG9jYXRp
b25VcGRhdGVkKGFsbG9jKSkuVGltZXMoMCk7CiAgICAgb2JzZXJ2ZXItPk9uQml0cmF0ZUFsbG9j
YXRpb25VcGRhdGVkKGFsbG9jKTsKIApAQCAtMzk2LDcgKzQwNCw3IEBAIFRFU1RfRihWaWRlb1Nl
bmRTdHJlYW1JbXBsVGVzdCwgVGhyb3R0bGVzVmlkZW9CaXRyYXRlQWxsb2NhdGlvbldoZW5Ub29T
aW1pbGFyKSB7CiAgICAgICAgIC5UaW1lcygxKQogICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKGtC
aXRyYXRlQnBzKSk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKj4o
dnNzX2ltcGwuZ2V0KCkpCi0gICAgICAgIC0+T25CaXRyYXRlVXBkYXRlZChrQml0cmF0ZUJwcywg
MCwgMCwgMCk7CisgICAgICAgIC0+T25CaXRyYXRlVXBkYXRlZChDcmVhdGVBbGxvY2F0aW9uKGtC
aXRyYXRlQnBzKSk7CiAgICAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbk9ic2VydmVyKiBjb25zdCBv
YnNlcnZlciA9CiAgICAgICAgIHN0YXRpY19jYXN0PFZpZGVvQml0cmF0ZUFsbG9jYXRpb25PYnNl
cnZlcio+KHZzc19pbXBsLmdldCgpKTsKIApAQCAtNDUwLDcgKzQ1OCw3IEBAIFRFU1RfRihWaWRl
b1NlbmRTdHJlYW1JbXBsVGVzdCwgRm9yd2FyZHNWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT25MYXll
ckNoYW5nZSkgewogICAgICAgICAuVGltZXMoMSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybihr
Qml0cmF0ZUJwcykpOwogICAgIHN0YXRpY19jYXN0PEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlcio+
KHZzc19pbXBsLmdldCgpKQotICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoa0JpdHJhdGVCcHMs
IDAsIDAsIDApOworICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoQ3JlYXRlQWxsb2NhdGlvbihr
Qml0cmF0ZUJwcykpOwogICAgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb25PYnNlcnZlciogY29uc3Qg
b2JzZXJ2ZXIgPQogICAgICAgICBzdGF0aWNfY2FzdDxWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2Jz
ZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSk7CiAKQEAgLTQ5NCw3ICs1MDIsNyBAQCBURVNUX0YoVmlk
ZW9TZW5kU3RyZWFtSW1wbFRlc3QsIEZvcndhcmRzVmlkZW9CaXRyYXRlQWxsb2NhdGlvbkFmdGVy
VGltZW91dCkgewogICAgICAgICAuVGltZXMoMSkKICAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJl
dHVybihrQml0cmF0ZUJwcykpOwogICAgIHN0YXRpY19jYXN0PEJpdHJhdGVBbGxvY2F0b3JPYnNl
cnZlcio+KHZzc19pbXBsLmdldCgpKQotICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoa0JpdHJh
dGVCcHMsIDAsIDAsIDApOworICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoQ3JlYXRlQWxsb2Nh
dGlvbihrQml0cmF0ZUJwcykpOwogICAgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb25PYnNlcnZlciog
Y29uc3Qgb2JzZXJ2ZXIgPQogICAgICAgICBzdGF0aWNfY2FzdDxWaWRlb0JpdHJhdGVBbGxvY2F0
aW9uT2JzZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX3Rl
c3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
dmlkZW9fc2VuZF9zdHJlYW1fdGVzdHMuY2MKaW5kZXggMDljY2YxYzQ5ODkzYTUzY2YzYmM3Mzlk
ZGZmYjcwZmMyMTc1YWM5OS4uZWE3N2NkNjUyOTE0OTM3OTVjOWQyMWVhNGMyNzgwMWYzM2Q4OTU1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1fdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1fdGVzdHMuY2MK
QEAgLTEyLDEyICsxMiwxMSBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS90
ZXN0L3NpbXVsYXRlZF9uZXR3b3JrLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1h
Z2UuaCIKICNpbmNsdWRlICJjYWxsL2NhbGwuaCIKICNpbmNsdWRlICJjYWxsL2Zha2VfbmV0d29y
a19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5o
IgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKLSNpbmNsdWRlICJjb21tb25f
dmlkZW8vaW5jbHVkZS9mcmFtZV9jYWxsYmFjay5oIgotI2luY2x1ZGUgImNvbW1vbl92aWRlby9p
bmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRl
L3J0cF9oZWFkZXJfcGFyc2VyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRl
L3J0cF9ydGNwLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9zZW5k
ZXIuaCIKQEAgLTcwLDEwICs2OSwxNCBAQCBjbGFzcyBWaWRlb1NlbmRTdHJlYW1QZWVyIHsKIH07
CiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogCituYW1lc3BhY2UgeworY29uc3RleHByIGludDY0X3Qg
a1J0Y3BJbnRlcnZhbE1zID0gMTAwMDsKKwogZW51bSBWaWRlb0Zvcm1hdCB7CiAgIGtHZW5lcmlj
LAogICBrVlA4LAogfTsKK30gIC8vIG5hbWVzcGFjZQogCiB2b2lkIEV4cGVjdEVxdWFsRnJhbWVz
VmVjdG9yKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvRnJhbWU+JiBmcmFtZXMxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0ZyYW1lPiYgZnJhbWVz
Mik7CkBAIC01NDEsNyArNTQ0LDcgQEAgY2xhc3MgVWxwZmVjT2JzZXJ2ZXIgOiBwdWJsaWMgdGVz
dDo6RW5kVG9FbmRUZXN0IHsKICAgICAvLyBBdCBsb3cgUlRUICg8IGtMb3dSdHROYWNrTXMpIC0+
IE5BQ0sgb25seSwgbm8gRkVDLgogICAgIC8vIENvbmZpZ3VyZSBzb21lIG5ldHdvcmsgZGVsYXku
CiAgICAgY29uc3QgaW50IGtOZXR3b3JrRGVsYXlNcyA9IDEwMDsKLSAgICBEZWZhdWx0TmV0d29y
a1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25m
aWcgY29uZmlnOwogICAgIGNvbmZpZy5sb3NzX3BlcmNlbnQgPSA1OwogICAgIGNvbmZpZy5xdWV1
ZV9kZWxheV9tcyA9IGtOZXR3b3JrRGVsYXlNczsKICAgICByZXR1cm4gbmV3IHRlc3Q6OlBhY2tl
dFRyYW5zcG9ydCgKQEAgLTY1NSw3ICs2NTgsNyBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVz
dCwgRElTQUJMRURfRG9lc1V0aWxpemVVbHBmZWNGb3JWcDhXaXRoTmFja0VuYWJsZWQpIHsKICAg
UnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCi0jaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQor
I2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAvLyBEaXNhYmxlZCBhcyBmbGFreSwgc2VlIGh0
dHBzOi8vY3JidWcuY29tL3dlYnJ0Yy83Mjg1IGZvciBkZXRhaWxzLgogVEVTVF9QKFZpZGVvU2Vu
ZFN0cmVhbVRlc3QsIERJU0FCTEVEX0RvZXNVdGlsaXplVWxwZmVjRm9yVnA5V2l0aE5hY2tFbmFi
bGVkKSB7CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9FbmNvZGVyRmFjdG9yeSBlbmNvZGVyX2ZhY3Rv
cnkoCkBAIC02NjMsNyArNjY2LDcgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIERJU0FC
TEVEX0RvZXNVdGlsaXplVWxwZmVjRm9yVnA5V2l0aE5hY2tFbmFibGVkKSB7CiAgIFVscGZlY09i
c2VydmVyIHRlc3QoZmFsc2UsIHRydWUsIHRydWUsIHRydWUsICJWUDkiLCAmZW5jb2Rlcl9mYWN0
b3J5KTsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQotI2VuZGlmICAvLyAhZGVmaW5lZChSVENf
RElTQUJMRV9WUDkpCisjZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKIFRFU1Rf
UChWaWRlb1NlbmRTdHJlYW1UZXN0LCBTdXBwb3J0c1VscGZlY1dpdGhNdWx0aXRocmVhZGVkSDI2
NCkgewogICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2Rlcl9mYWN0b3J5
KFtdKCkgewpAQCAtNzMxLDcgKzczNCw3IEBAIGNsYXNzIEZsZXhmZWNPYnNlcnZlciA6IHB1Ymxp
YyB0ZXN0OjpFbmRUb0VuZFRlc3QgewogICAgIC8vIEF0IGxvdyBSVFQgKDwga0xvd1J0dE5hY2tN
cykgLT4gTkFDSyBvbmx5LCBubyBGRUMuCiAgICAgLy8gVGhlcmVmb3JlIHdlIG5lZWQgc29tZSBu
ZXR3b3JrIGRlbGF5LgogICAgIGNvbnN0IGludCBrTmV0d29ya0RlbGF5TXMgPSAxMDA7Ci0gICAg
RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgICBCdWlsdEluTmV0d29y
a0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgICBjb25maWcubG9zc19wZXJjZW50ID0gNTsKICAg
ICBjb25maWcucXVldWVfZGVsYXlfbXMgPSBrTmV0d29ya0RlbGF5TXM7CiAgICAgcmV0dXJuIG5l
dyB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQoCkBAIC04MDYsNyArODA5LDcgQEAgVEVTVF9QKFZpZGVv
U2VuZFN0cmVhbVRlc3QsIFN1cHBvcnRzRmxleGZlY1dpdGhSdHBFeHRlbnNpb25zVnA4KSB7CiAg
IFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KIAotI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkK
KyNpZiBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3Qs
IFN1cHBvcnRzRmxleGZlY1ZwOSkgewogICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3Rv
cnkgZW5jb2Rlcl9mYWN0b3J5KAogICAgICAgW10oKSB7IHJldHVybiBWUDlFbmNvZGVyOjpDcmVh
dGUoKTsgfSk7CkBAIC04MjAsNyArODIzLDcgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3Qs
IFN1cHBvcnRzRmxleGZlY1dpdGhOYWNrVnA5KSB7CiAgIEZsZXhmZWNPYnNlcnZlciB0ZXN0KGZh
bHNlLCB0cnVlLCAiVlA5IiwgJmVuY29kZXJfZmFjdG9yeSwgMSk7CiAgIFJ1bkJhc2VUZXN0KCZ0
ZXN0KTsKIH0KLSNlbmRpZiAgLy8gZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjZW5kaWYgIC8v
IGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBT
dXBwb3J0c0ZsZXhmZWNIMjY0KSB7CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9FbmNvZGVyRmFjdG9y
eSBlbmNvZGVyX2ZhY3RvcnkoW10oKSB7CkBAIC04NjYsMTkgKzg2OSwyNyBAQCB2b2lkIFZpZGVv
U2VuZFN0cmVhbVRlc3Q6OlRlc3ROYWNrUmV0cmFuc21pc3Npb24oCiAgICAgICBSVFBIZWFkZXIg
aGVhZGVyOwogICAgICAgRVhQRUNUX1RSVUUocGFyc2VyXy0+UGFyc2UocGFja2V0LCBsZW5ndGgs
ICZoZWFkZXIpKTsKIAotICAgICAgaW50IGtSZXRyYW5zbWl0VGFyZ2V0ID0gNjsKKyAgICAgIC8v
IE5BQ0sgcGFja2V0cyB0d28gdGltZXMgYXQgc29tZSBhcmJpdHJhcnkgcG9pbnRzLgorICAgICAg
Y29uc3QgaW50IGtOYWNrZWRQYWNrZXRzQXRPbmNlQ291bnQgPSAzOworICAgICAgY29uc3QgaW50
IGtSZXRyYW5zbWl0VGFyZ2V0ID0ga05hY2tlZFBhY2tldHNBdE9uY2VDb3VudCAqIDI7CisKKyAg
ICAgIC8vIFNraXAgcGFkZGluZyBwYWNrZXRzIGJlY2F1c2UgdGhleSB3aWxsIG5ldmVyIGJlIHJl
dHJhbnNtaXR0ZWQuCisgICAgICBpZiAoaGVhZGVyLnBhZGRpbmdMZW5ndGggKyBoZWFkZXIuaGVh
ZGVyTGVuZ3RoID09IGxlbmd0aCkgeworICAgICAgICByZXR1cm4gU0VORF9QQUNLRVQ7CisgICAg
ICB9CisKICAgICAgICsrc2VuZF9jb3VudF87CisKKyAgICAgIC8vIE5BQ0sgcGFja2V0cyBhdCBh
cmJpdHJhcnkgcG9pbnRzLgogICAgICAgaWYgKHNlbmRfY291bnRfID09IDUgfHwgc2VuZF9jb3Vu
dF8gPT0gMjUpIHsKLSAgICAgICAgbmFja2VkX3NlcXVlbmNlX251bWJlcnNfLnB1c2hfYmFjaygK
LSAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQxNl90PihoZWFkZXIuc2VxdWVuY2VOdW1iZXIg
LSAzKSk7Ci0gICAgICAgIG5hY2tlZF9zZXF1ZW5jZV9udW1iZXJzXy5wdXNoX2JhY2soCi0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4oaGVhZGVyLnNlcXVlbmNlTnVtYmVyIC0gMikp
OwotICAgICAgICBuYWNrZWRfc2VxdWVuY2VfbnVtYmVyc18ucHVzaF9iYWNrKAotICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGhlYWRlci5zZXF1ZW5jZU51bWJlciAtIDEpKTsKKyAg
ICAgICAgbmFja2VkX3NlcXVlbmNlX251bWJlcnNfLmluc2VydCgKKyAgICAgICAgICAgIG5hY2tl
ZF9zZXF1ZW5jZV9udW1iZXJzXy5lbmQoKSwKKyAgICAgICAgICAgIG5vbl9wYWRkaW5nX3NlcXVl
bmNlX251bWJlcnNfLmVuZCgpIC0ga05hY2tlZFBhY2tldHNBdE9uY2VDb3VudCwKKyAgICAgICAg
ICAgIG5vbl9wYWRkaW5nX3NlcXVlbmNlX251bWJlcnNfLmVuZCgpKTsKIAogICAgICAgICBSVENQ
U2VuZGVyIHJ0Y3Bfc2VuZGVyKGZhbHNlLCBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBudWxs
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIHRy
YW5zcG9ydF9hZGFwdGVyXy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
dGNwSW50ZXJ2YWxDb25maWd7fSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1J0
Y3BJbnRlcnZhbE1zKTsKIAogICAgICAgICBydGNwX3NlbmRlci5TZXRSVENQU3RhdHVzKFJ0Y3BN
b2RlOjprUmVkdWNlZFNpemUpOwogICAgICAgICBydGNwX3NlbmRlci5TZXRSZW1vdGVTU1JDKGtW
aWRlb1NlbmRTc3Jjc1swXSk7CkBAIC04OTIsNyArOTAzLDYgQEAgdm9pZCBWaWRlb1NlbmRTdHJl
YW1UZXN0OjpUZXN0TmFja1JldHJhbnNtaXNzaW9uKAogICAgICAgfQogCiAgICAgICB1aW50MTZf
dCBzZXF1ZW5jZV9udW1iZXIgPSBoZWFkZXIuc2VxdWVuY2VOdW1iZXI7Ci0KICAgICAgIGlmICho
ZWFkZXIuc3NyYyA9PSByZXRyYW5zbWl0X3NzcmNfICYmCiAgICAgICAgICAgcmV0cmFuc21pdF9z
c3JjXyAhPSBrVmlkZW9TZW5kU3NyY3NbMF0pIHsKICAgICAgICAgLy8gTm90IGtWaWRlb1NlbmRT
c3Jjc1swXSwgYXNzdW1lIGNvcnJlY3QgUlRYIHBhY2tldC4gRXh0cmFjdCBzZXF1ZW5jZQpAQCAt
OTAwLDYgKzkxMCw3IEBAIHZvaWQgVmlkZW9TZW5kU3RyZWFtVGVzdDo6VGVzdE5hY2tSZXRyYW5z
bWlzc2lvbigKICAgICAgICAgY29uc3QgdWludDhfdCogcnR4X2hlYWRlciA9IHBhY2tldCArIGhl
YWRlci5oZWFkZXJMZW5ndGg7CiAgICAgICAgIHNlcXVlbmNlX251bWJlciA9IChydHhfaGVhZGVy
WzBdIDw8IDgpICsgcnR4X2hlYWRlclsxXTsKICAgICAgIH0KKwogICAgICAgYXV0byBmb3VuZCA9
IHN0ZDo6ZmluZChuYWNrZWRfc2VxdWVuY2VfbnVtYmVyc18uYmVnaW4oKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmFja2VkX3NlcXVlbmNlX251bWJlcnNfLmVuZCgpLCBzZXF1ZW5j
ZV9udW1iZXIpOwogICAgICAgaWYgKGZvdW5kICE9IG5hY2tlZF9zZXF1ZW5jZV9udW1iZXJzXy5l
bmQoKSkgewpAQCAtOTEwLDYgKzkyMSw4IEBAIHZvaWQgVmlkZW9TZW5kU3RyZWFtVGVzdDo6VGVz
dE5hY2tSZXRyYW5zbWlzc2lvbigKICAgICAgICAgICBFWFBFQ1RfRVEocmV0cmFuc21pdF9wYXls
b2FkX3R5cGVfLCBoZWFkZXIucGF5bG9hZFR5cGUpOwogICAgICAgICAgIG9ic2VydmF0aW9uX2Nv
bXBsZXRlXy5TZXQoKTsKICAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgbm9uX3Bh
ZGRpbmdfc2VxdWVuY2VfbnVtYmVyc18ucHVzaF9iYWNrKHNlcXVlbmNlX251bWJlcik7CiAgICAg
ICB9CiAKICAgICAgIHJldHVybiBTRU5EX1BBQ0tFVDsKQEAgLTkzOCw2ICs5NTEsNyBAQCB2b2lk
IFZpZGVvU2VuZFN0cmVhbVRlc3Q6OlRlc3ROYWNrUmV0cmFuc21pc3Npb24oCiAgICAgdWludDMy
X3QgcmV0cmFuc21pdF9zc3JjXzsKICAgICB1aW50OF90IHJldHJhbnNtaXRfcGF5bG9hZF90eXBl
XzsKICAgICBzdGQ6OnZlY3Rvcjx1aW50MTZfdD4gbmFja2VkX3NlcXVlbmNlX251bWJlcnNfOwor
ICAgIHN0ZDo6dmVjdG9yPHVpbnQxNl90PiBub25fcGFkZGluZ19zZXF1ZW5jZV9udW1iZXJzXzsK
ICAgfSB0ZXN0KHJldHJhbnNtaXRfc3NyYywgcmV0cmFuc21pdF9wYXlsb2FkX3R5cGUpOwogCiAg
IFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKQEAgLTk2NCw4ICs5NzgsNyBAQCB2b2lkIFZpZGVvU2VuZFN0
cmVhbVRlc3Q6OlRlc3RQYWNrZXRGcmFnbWVudGF0aW9uU2l6ZShWaWRlb0Zvcm1hdCBmb3JtYXQs
CiAKICAgLy8gT2JzZXJ2ZXIgdGhhdCB2ZXJpZmllcyB0aGF0IHRoZSBleHBlY3RlZCBudW1iZXIg
b2YgcGFja2V0cyBhbmQgYnl0ZXMKICAgLy8gYXJyaXZlIGZvciBlYWNoIGZyYW1lIHNpemUsIGZy
b20gc3RhcnRfc2l6ZSB0byBzdG9wX3NpemUuCi0gIGNsYXNzIEZyYW1lRnJhZ21lbnRhdGlvblRl
c3QgOiBwdWJsaWMgdGVzdDo6U2VuZFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgRW5jb2RlZEZyYW1lT2JzZXJ2ZXIgeworICBjbGFzcyBGcmFtZUZyYWdtZW50
YXRpb25UZXN0IDogcHVibGljIHRlc3Q6OlNlbmRUZXN0IHsKICAgIHB1YmxpYzoKICAgICBGcmFt
ZUZyYWdtZW50YXRpb25UZXN0KHNpemVfdCBtYXhfcGFja2V0X3NpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc3RhcnRfc2l6ZSwKQEAgLTEwOTAsNyArMTEwMyw3IEBAIHZv
aWQgVmlkZW9TZW5kU3RyZWFtVGVzdDo6VGVzdFBhY2tldEZyYWdtZW50YXRpb25TaXplKFZpZGVv
Rm9ybWF0IGZvcm1hdCwKICAgICAgICAgICAgIGxvc3NfcmF0aW8pOyAgICAvLyBMb3NzIHBlcmNl
bnQuCiAgICAgICAgIFJUQ1BTZW5kZXIgcnRjcF9zZW5kZXIoZmFsc2UsIENsb2NrOjpHZXRSZWFs
VGltZUNsb2NrKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvc3N5X3JlY2Vp
dmVfc3RhdHMsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNwb3J0X2FkYXB0ZXJfLmdldCgpLCBSdGNwSW50ZXJ2YWxDb25maWd7fSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X2FkYXB0ZXJfLmdldCgpLCBrUnRj
cEludGVydmFsTXMpOwogCiAgICAgICAgIHJ0Y3Bfc2VuZGVyLlNldFJUQ1BTdGF0dXMoUnRjcE1v
ZGU6OmtSZWR1Y2VkU2l6ZSk7CiAgICAgICAgIHJ0Y3Bfc2VuZGVyLlNldFJlbW90ZVNTUkMoa1Zp
ZGVvU2VuZFNzcmNzWzBdKTsKQEAgLTExMDEsNyArMTExNCw3IEBAIHZvaWQgVmlkZW9TZW5kU3Ry
ZWFtVGVzdDo6VGVzdFBhY2tldEZyYWdtZW50YXRpb25TaXplKFZpZGVvRm9ybWF0IGZvcm1hdCwK
ICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIEVuY29kZWRGcmFtZUNhbGxiYWNrKGNvbnN0IEVu
Y29kZWRGcmFtZSYgZW5jb2RlZF9mcmFtZSkgb3ZlcnJpZGUgeworICAgIHZvaWQgVXBkYXRlQ29u
ZmlndXJhdGlvbigpIHsKICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJm11dGV4Xyk7CiAgICAg
ICAvLyBJbmNyZWFzZSBmcmFtZSBzaXplIGZvciBuZXh0IGVuY29kZWQgZnJhbWUsIGluIHRoZSBj
b250ZXh0IG9mIHRoZQogICAgICAgLy8gZW5jb2RlciB0aHJlYWQuCkBAIC0xMTEwLDkgKzExMjMs
MTAgQEAgdm9pZCBWaWRlb1NlbmRTdHJlYW1UZXN0OjpUZXN0UGFja2V0RnJhZ21lbnRhdGlvblNp
emUoVmlkZW9Gb3JtYXQgZm9ybWF0LAogICAgICAgfQogICAgICAgZW5jb2Rlcl8uU2V0RnJhbWVT
aXplKHN0YXRpY19jYXN0PHNpemVfdD4oY3VycmVudF9zaXplX2ZyYW1lXykpOwogICAgIH0KLSAg
ICB2b2lkIE1vZGlmeVNlbmRlckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpIG92ZXJy
aWRlIHsKKyAgICB2b2lkIE1vZGlmeVNlbmRlckJpdHJhdGVDb25maWcoCisgICAgICAgIEJpdHJh
dGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIG92ZXJyaWRlIHsKICAgICAgIGNvbnN0IGlu
dCBrTWluQml0cmF0ZUJwcyA9IDMwMDAwOwotICAgICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5t
aW5fYml0cmF0ZV9icHMgPSBrTWluQml0cmF0ZUJwczsKKyAgICAgIGJpdHJhdGVfY29uZmlnLT5t
aW5fYml0cmF0ZV9icHMgPSBrTWluQml0cmF0ZUJwczsKICAgICB9CiAKICAgICB2b2lkIE1vZGlm
eVZpZGVvQ29uZmlncygKQEAgLTExMzIsMzggKzExNDYsMTUgQEAgdm9pZCBWaWRlb1NlbmRTdHJl
YW1UZXN0OjpUZXN0UGFja2V0RnJhZ21lbnRhdGlvblNpemUoVmlkZW9Gb3JtYXQgZm9ybWF0LAog
CiAgICAgICBzZW5kX2NvbmZpZy0+ZW5jb2Rlcl9zZXR0aW5ncy5lbmNvZGVyX2ZhY3RvcnkgPSAm
ZW5jb2Rlcl9mYWN0b3J5XzsKICAgICAgIHNlbmRfY29uZmlnLT5ydHAubWF4X3BhY2tldF9zaXpl
ID0ga01heFBhY2tldFNpemU7Ci0gICAgICBzZW5kX2NvbmZpZy0+cG9zdF9lbmNvZGVfY2FsbGJh
Y2sgPSB0aGlzOworICAgICAgZW5jb2Rlcl8uUmVnaXN0ZXJQb3N0RW5jb2RlQ2FsbGJhY2soW3Ro
aXNdKCkgeyBVcGRhdGVDb25maWd1cmF0aW9uKCk7IH0pOwogCiAgICAgICAvLyBNYWtlIHN1cmUg
dGhlcmUgaXMgYXQgbGVhc3Qgb25lIGV4dGVuc2lvbiBoZWFkZXIsIHRvIG1ha2UgdGhlIFJUUAog
ICAgICAgLy8gaGVhZGVyIGxhcmdlciB0aGFuIHRoZSBiYXNlIGxlbmd0aCBvZiAxMiBieXRlcy4K
ICAgICAgIEVYUEVDVF9GQUxTRShzZW5kX2NvbmZpZy0+cnRwLmV4dGVuc2lvbnMuZW1wdHkoKSk7
CiAKICAgICAgIC8vIFNldHVwIHNjcmVlbiBjb250ZW50IGRpc2FibGVzIGZyYW1lIGRyb3BwaW5n
IHdoaWNoIG1ha2VzIHRoaXMgZWFzaWVyLgotICAgICAgY2xhc3MgVmlkZW9TdHJlYW1GYWN0b3J5
Ci0gICAgICAgICAgOiBwdWJsaWMgVmlkZW9FbmNvZGVyQ29uZmlnOjpWaWRlb1N0cmVhbUZhY3Rv
cnlJbnRlcmZhY2UgewotICAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgVmlkZW9TdHJl
YW1GYWN0b3J5KHNpemVfdCBudW1fdGVtcG9yYWxfbGF5ZXJzKQotICAgICAgICAgICAgOiBudW1f
dGVtcG9yYWxfbGF5ZXJzXyhudW1fdGVtcG9yYWxfbGF5ZXJzKSB7Ci0gICAgICAgICAgRVhQRUNU
X0dUKG51bV90ZW1wb3JhbF9sYXllcnMsIDB1KTsKLSAgICAgICAgfQotCi0gICAgICAgcHJpdmF0
ZToKLSAgICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+IENyZWF0ZUVuY29kZXJTdHJlYW1z
KAotICAgICAgICAgICAgaW50IHdpZHRoLAotICAgICAgICAgICAgaW50IGhlaWdodCwKLSAgICAg
ICAgICAgIGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZyYgZW5jb2Rlcl9jb25maWcpIG92ZXJyaWRl
IHsKLSAgICAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9Ci0gICAgICAg
ICAgICAgIHRlc3Q6OkNyZWF0ZVZpZGVvU3RyZWFtcyh3aWR0aCwgaGVpZ2h0LCBlbmNvZGVyX2Nv
bmZpZyk7Ci0gICAgICAgICAgZm9yIChWaWRlb1N0cmVhbSYgc3RyZWFtIDogc3RyZWFtcykgewot
ICAgICAgICAgICAgc3RyZWFtLm51bV90ZW1wb3JhbF9sYXllcnMgPSBudW1fdGVtcG9yYWxfbGF5
ZXJzXzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIHN0cmVhbXM7Ci0gICAgICAgIH0K
LSAgICAgICAgY29uc3Qgc2l6ZV90IG51bV90ZW1wb3JhbF9sYXllcnNfOwotICAgICAgfTsKLQot
ICAgICAgZW5jb2Rlcl9jb25maWctPnZpZGVvX3N0cmVhbV9mYWN0b3J5ID0KLSAgICAgICAgICBu
ZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PFZpZGVvU3RyZWFtRmFjdG9yeT4oMik7CisgICAgICBF
WFBFQ1RfRVEoMXUsIGVuY29kZXJfY29uZmlnLT5zaW11bGNhc3RfbGF5ZXJzLnNpemUoKSk7Cisg
ICAgICBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0X2xheWVyc1swXS5udW1fdGVtcG9yYWxfbGF5
ZXJzID0gMjsKICAgICAgIGVuY29kZXJfY29uZmlnLT5jb250ZW50X3R5cGUgPSBWaWRlb0VuY29k
ZXJDb25maWc6OkNvbnRlbnRUeXBlOjprU2NyZWVuOwogICAgIH0KIApAQCAtMTM0Nyw3ICsxMzM4
LDcgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFN1c3BlbmRCZWxvd01pbkJpdHJhdGUp
IHsKICAgICAgIEZha2VSZWNlaXZlU3RhdGlzdGljcyByZWNlaXZlX3N0YXRzKGtWaWRlb1NlbmRT
c3Jjc1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Rf
c2VxdWVuY2VfbnVtYmVyXywgcnRwX2NvdW50XywgMCk7CiAgICAgICBSVENQU2VuZGVyIHJ0Y3Bf
c2VuZGVyKGZhbHNlLCBjbG9ja18sICZyZWNlaXZlX3N0YXRzLCBudWxscHRyLCBudWxscHRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfYWRhcHRlcl8uZ2V0KCksIFJ0
Y3BJbnRlcnZhbENvbmZpZ3t9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNw
b3J0X2FkYXB0ZXJfLmdldCgpLCBrUnRjcEludGVydmFsTXMpOwogCiAgICAgICBydGNwX3NlbmRl
ci5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprUmVkdWNlZFNpemUpOwogICAgICAgcnRjcF9zZW5k
ZXIuU2V0UmVtb3RlU1NSQyhrVmlkZW9TZW5kU3NyY3NbMF0pOwpAQCAtMTM5NiwxMiArMTM4Nywy
MCBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgTm9QYWRkaW5nV2hlblZpZGVvSXNNdXRl
ZCkgewogICAgICAgICAgIGhlYWRlci5oZWFkZXJMZW5ndGggKyBoZWFkZXIucGFkZGluZ0xlbmd0
aCA9PSBsZW5ndGg7CiAKICAgICAgIGlmICh0ZXN0X3N0YXRlXyA9PSBrQmVmb3JlU3RvcENhcHR1
cmUpIHsKKyAgICAgICAgLy8gUGFja2V0cyBhcmUgZmxvd2luZywgc3RvcCBjYW1lcmEuCiAgICAg
ICAgIGNhcHR1cmVyXy0+U3RvcCgpOwogICAgICAgICB0ZXN0X3N0YXRlXyA9IGtXYWl0aW5nRm9y
UGFkZGluZzsKICAgICAgIH0gZWxzZSBpZiAodGVzdF9zdGF0ZV8gPT0ga1dhaXRpbmdGb3JQYWRk
aW5nICYmIG9ubHlfcGFkZGluZykgeworICAgICAgICAvLyBXZSdyZSBzdGlsbCBnZXR0aW5nIHBh
ZGRpbmcsIGFmdGVyIHN0b3BwaW5nIGNhbWVyYS4KICAgICAgICAgdGVzdF9zdGF0ZV8gPSBrV2Fp
dGluZ0Zvck5vUGFja2V0czsKLSAgICAgIH0gZWxzZSBpZiAodGVzdF9zdGF0ZV8gPT0ga1dhaXRp
bmdGb3JQYWRkaW5nQWZ0ZXJDYW1lcmFSZXN0YXJ0ICYmCisgICAgICB9IGVsc2UgaWYgKHRlc3Rf
c3RhdGVfID09IGtXYWl0aW5nRm9yTWVkaWFBZnRlckNhbWVyYVJlc3RhcnQgJiYKKyAgICAgICAg
ICAgICAgICAgIW9ubHlfcGFkZGluZykgeworICAgICAgICAvLyBNZWRpYSBwYWNrZXRzIGFyZSBm
bG93aW5nIGFnYWluLCBzdG9wIGNhbWVyYSBhIHNlY29uZCB0aW1lLgorICAgICAgICBjYXB0dXJl
cl8tPlN0b3AoKTsKKyAgICAgICAgdGVzdF9zdGF0ZV8gPSBrV2FpdGluZ0ZvclBhZGRpbmdBZnRl
ckNhbWVyYVN0b3BzQWdhaW47CisgICAgICB9IGVsc2UgaWYgKHRlc3Rfc3RhdGVfID09IGtXYWl0
aW5nRm9yUGFkZGluZ0FmdGVyQ2FtZXJhU3RvcHNBZ2FpbiAmJgogICAgICAgICAgICAgICAgICBv
bmx5X3BhZGRpbmcpIHsKKyAgICAgICAgLy8gUGFkZGluZyBpcyBzdGlsbCBmbG93aW5nLCB0ZXN0
IG9rLgogICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7CiAgICAgICB9CiAgICAg
ICByZXR1cm4gU0VORF9QQUNLRVQ7CkBAIC0xNDE0LDEzICsxNDEzLDIwIEBAIFRFU1RfUChWaWRl
b1NlbmRTdHJlYW1UZXN0LCBOb1BhZGRpbmdXaGVuVmlkZW9Jc011dGVkKSB7CiAgICAgICAgICAg
KGxhc3RfcGFja2V0X3RpbWVfbXNfID4gMCAmJgogICAgICAgICAgICBjbG9ja18tPlRpbWVJbk1p
bGxpc2Vjb25kcygpIC0gbGFzdF9wYWNrZXRfdGltZV9tc18gPgogICAgICAgICAgICAgICAga05v
UGFja2V0c1RocmVzaG9sZE1zKSkgeworICAgICAgICAvLyBObyBwYWNrZXRzIHNlZW4gZm9yIHxr
Tm9QYWNrZXRzVGhyZXNob2xkTXN8LCByZXN0YXJ0IGNhbWVyYS4KICAgICAgICAgY2FwdHVyZXJf
LT5TdGFydCgpOwotICAgICAgICB0ZXN0X3N0YXRlXyA9IGtXYWl0aW5nRm9yUGFkZGluZ0FmdGVy
Q2FtZXJhUmVzdGFydDsKKyAgICAgICAgdGVzdF9zdGF0ZV8gPSBrV2FpdGluZ0Zvck1lZGlhQWZ0
ZXJDYW1lcmFSZXN0YXJ0OwogICAgICAgfQogICAgICAgcmV0dXJuIFNFTkRfUEFDS0VUOwogICAg
IH0KIAotICAgIHNpemVfdCBHZXROdW1WaWRlb1N0cmVhbXMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAzOyB9CisgICAgdm9pZCBNb2RpZnlWaWRlb0NvbmZpZ3MoCisgICAgICAgIFZpZGVvU2Vu
ZFN0cmVhbTo6Q29uZmlnKiBzZW5kX2NvbmZpZywKKyAgICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9S
ZWNlaXZlU3RyZWFtOjpDb25maWc+KiByZWNlaXZlX2NvbmZpZ3MsCisgICAgICAgIFZpZGVvRW5j
b2RlckNvbmZpZyogZW5jb2Rlcl9jb25maWcpIG92ZXJyaWRlIHsKKyAgICAgIC8vIE1ha2Ugc3Vy
ZSBwYWRkaW5nIGlzIHNlbnQgaWYgZW5jb2RlciBpcyBub3QgcHJvZHVjaW5nIG1lZGlhLgorICAg
ICAgZW5jb2Rlcl9jb25maWctPm1pbl90cmFuc21pdF9iaXRyYXRlX2JwcyA9IDUwMDAwOworICAg
IH0KIAogICAgIHZvaWQgT25GcmFtZUdlbmVyYXRvckNhcHR1cmVyQ3JlYXRlZCgKICAgICAgICAg
dGVzdDo6RnJhbWVHZW5lcmF0b3JDYXB0dXJlciogZnJhbWVfZ2VuZXJhdG9yX2NhcHR1cmVyKSBv
dmVycmlkZSB7CkBAIC0xNDM3LDcgKzE0NDMsOCBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVz
dCwgTm9QYWRkaW5nV2hlblZpZGVvSXNNdXRlZCkgewogICAgICAga0JlZm9yZVN0b3BDYXB0dXJl
LAogICAgICAga1dhaXRpbmdGb3JQYWRkaW5nLAogICAgICAga1dhaXRpbmdGb3JOb1BhY2tldHMs
Ci0gICAgICBrV2FpdGluZ0ZvclBhZGRpbmdBZnRlckNhbWVyYVJlc3RhcnQKKyAgICAgIGtXYWl0
aW5nRm9yTWVkaWFBZnRlckNhbWVyYVJlc3RhcnQsCisgICAgICBrV2FpdGluZ0ZvclBhZGRpbmdB
ZnRlckNhbWVyYVN0b3BzQWdhaW4KICAgICB9OwogCiAgICAgVGVzdFN0YXRlIHRlc3Rfc3RhdGVf
ID0ga0JlZm9yZVN0b3BDYXB0dXJlOwpAQCAtMTQ4MSw3ICsxNDg4LDcgQEAgVEVTVF9QKFZpZGVv
U2VuZFN0cmVhbVRlc3QsIFBhZGRpbmdJc1ByaW1hcmlseVJldHJhbnNtaXNzaW9ucykgewogICAg
ICAgICB0ZXN0OjpTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmcqIHRhc2tfcXVldWUs
CiAgICAgICAgIENhbGwqIHNlbmRlcl9jYWxsKSBvdmVycmlkZSB7CiAgICAgICBjb25zdCBpbnQg
a05ldHdvcmtEZWxheU1zID0gNTA7Ci0gICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25m
aWcgY29uZmlnOworICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBjb25maWc7CiAg
ICAgICBjb25maWcubG9zc19wZXJjZW50ID0gMTA7CiAgICAgICBjb25maWcubGlua19jYXBhY2l0
eV9rYnBzID0ga0NhcGFjaXR5S2JwczsKICAgICAgIGNvbmZpZy5xdWV1ZV9kZWxheV9tcyA9IGtO
ZXR3b3JrRGVsYXlNczsKQEAgLTE3ODAsNyArMTc4Nyw2IEBAIGNsYXNzIE1heFBhZGRpbmdTZXRU
ZXN0IDogcHVibGljIHRlc3Q6OlNlbmRUZXN0IHsKIAogICBleHBsaWNpdCBNYXhQYWRkaW5nU2V0
VGVzdChib29sIHRlc3Rfc3dpdGNoX2NvbnRlbnRfdHlwZSwgVCogc3RyZWFtX3Jlc2V0X2Z1bikK
ICAgICAgIDogU2VuZFRlc3QodGVzdDo6Q2FsbFRlc3Q6OmtEZWZhdWx0VGltZW91dE1zKSwKLSAg
ICAgICAgY29udGVudF9zd2l0Y2hfZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAgICAgICAgIGNhbGxf
KG51bGxwdHIpLAogICAgICAgICBzZW5kX3N0cmVhbV8obnVsbHB0ciksCiAgICAgICAgIHNlbmRf
c3RyZWFtX2NvbmZpZ18obnVsbHB0ciksCkBAIC0xOTEwLDcgKzE5MTYsNiBAQCBURVNUX1AoVmlk
ZW9TZW5kU3RyZWFtVGVzdCwKICAgIHB1YmxpYzoKICAgICBFbmNvZGVyT2JzZXJ2ZXIoKQogICAg
ICAgICA6IEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAotICAgICAgICAg
IGluaXRfZW5jb2RlX2NhbGxlZF8oZmFsc2UsIGZhbHNlKSwKICAgICAgICAgICBudW1iZXJfb2Zf
aW5pdGlhbGl6YXRpb25zXygwKSwKICAgICAgICAgICBsYXN0X2luaXRpYWxpemVkX2ZyYW1lX3dp
ZHRoXygwKSwKICAgICAgICAgICBsYXN0X2luaXRpYWxpemVkX2ZyYW1lX2hlaWdodF8oMCkge30K
QEAgLTE5OTMsNyArMTk5OCw2IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBDYW5SZWNv
bmZpZ3VyZVRvVXNlU3RhcnRCaXRyYXRlQWJvdmVQcmV2aW91c01heCkgewogICAgcHVibGljOgog
ICAgIFN0YXJ0Qml0cmF0ZU9ic2VydmVyKCkKICAgICAgICAgOiBGYWtlRW5jb2RlcihDbG9jazo6
R2V0UmVhbFRpbWVDbG9jaygpKSwKLSAgICAgICAgICBzdGFydF9iaXRyYXRlX2NoYW5nZWRfKGZh
bHNlLCBmYWxzZSksCiAgICAgICAgICAgc3RhcnRfYml0cmF0ZV9rYnBzXygwKSB7fQogICAgIGlu
dDMyX3QgSW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBjb25maWcsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgbnVtYmVyX29mX2NvcmVzLApAQCAtMjA2OCwxMCArMjA3Miw3IEBA
IFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBDYW5SZWNvbmZpZ3VyZVRvVXNlU3RhcnRCaXRy
YXRlQWJvdmVQcmV2aW91c01heCkgewogCiBjbGFzcyBTdGFydFN0b3BCaXRyYXRlT2JzZXJ2ZXIg
OiBwdWJsaWMgdGVzdDo6RmFrZUVuY29kZXIgewogIHB1YmxpYzoKLSAgU3RhcnRTdG9wQml0cmF0
ZU9ic2VydmVyKCkKLSAgICAgIDogRmFrZUVuY29kZXIoQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2so
KSksCi0gICAgICAgIGVuY29kZXJfaW5pdF8oZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgYml0cmF0
ZV9jaGFuZ2VkXyhmYWxzZSwgZmFsc2UpIHt9CisgIFN0YXJ0U3RvcEJpdHJhdGVPYnNlcnZlcigp
IDogRmFrZUVuY29kZXIoQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSkge30KICAgaW50MzJfdCBJ
bml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAg
IGludDMyX3QgbnVtYmVyX29mX2NvcmVzLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1h
eF9wYXlsb2FkX3NpemUpIG92ZXJyaWRlIHsKQEAgLTIyMjgsOCArMjIyOSw2IEBAIFRFU1RfUChW
aWRlb1NlbmRTdHJlYW1UZXN0LCBWaWRlb1NlbmRTdHJlYW1VcGRhdGVBY3RpdmVTaW11bGNhc3RM
YXllcnMpIHsKIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBDYXB0dXJlc1RleHR1cmVBbmRW
aWRlb0ZyYW1lcykgewogICBjbGFzcyBGcmFtZU9ic2VydmVyIDogcHVibGljIHJ0Yzo6VmlkZW9T
aW5rSW50ZXJmYWNlPFZpZGVvRnJhbWU+IHsKICAgIHB1YmxpYzoKLSAgICBGcmFtZU9ic2VydmVy
KCkgOiBvdXRwdXRfZnJhbWVfZXZlbnRfKGZhbHNlLCBmYWxzZSkge30KLQogICAgIHZvaWQgT25G
cmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb19mcmFtZSkgb3ZlcnJpZGUgewogICAgICAgb3V0
cHV0X2ZyYW1lc18ucHVzaF9iYWNrKHZpZGVvX2ZyYW1lKTsKICAgICAgIG91dHB1dF9mcmFtZV9l
dmVudF8uU2V0KCk7CkBAIC0yMzkyLDExICsyMzkxLDYgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVh
bVRlc3QsIEVuY29kZXJJc1Byb3Blcmx5SW5pdGlhbGl6ZWRBbmREZXN0cm95ZWQpIHsKICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGludDMyX3QgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWlu
dDMyX3QgcGFja2V0TG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlIHsKLSAgICAgIEVYUEVDVF9U
UlVFKElzUmVhZHlGb3JFbmNvZGUoKSk7Ci0gICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBp
bnQzMl90IFNldFJhdGVzKHVpbnQzMl90IG5ld0JpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkg
b3ZlcnJpZGUgewogICAgICAgRVhQRUNUX1RSVUUoSXNSZWFkeUZvckVuY29kZSgpKTsKICAgICAg
IHJldHVybiAwOwpAQCAtMjQ1OCw3ICsyNDUyLDYgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRl
c3QsIEVuY29kZXJTZXR1cFByb3BhZ2F0ZXNDb21tb25FbmNvZGVyQ29uZmlnVmFsdWVzKSB7CiAg
ICAgVmlkZW9Db2RlY0NvbmZpZ09ic2VydmVyKCkKICAgICAgICAgOiBTZW5kVGVzdChrRGVmYXVs
dFRpbWVvdXRNcyksCiAgICAgICAgICAgRmFrZUVuY29kZXIoQ2xvY2s6OkdldFJlYWxUaW1lQ2xv
Y2soKSksCi0gICAgICAgICAgaW5pdF9lbmNvZGVfZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAgICAg
ICAgICAgbnVtX2luaXRpYWxpemF0aW9uc18oMCksCiAgICAgICAgICAgc3RyZWFtXyhudWxscHRy
KSwKICAgICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfKHRoaXMpIHt9CkBAIC0yNTMwLDcgKzI1MjMs
NiBAQCBjbGFzcyBWaWRlb0NvZGVjQ29uZmlnT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6U2VuZFRl
c3QsCiAgICAgICAgIEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAg
ICAgICB2aWRlb19jb2RlY190eXBlXyh2aWRlb19jb2RlY190eXBlKSwKICAgICAgICAgY29kZWNf
bmFtZV8oY29kZWNfbmFtZSksCi0gICAgICAgIGluaXRfZW5jb2RlX2V2ZW50XyhmYWxzZSwgZmFs
c2UpLAogICAgICAgICBudW1faW5pdGlhbGl6YXRpb25zXygwKSwKICAgICAgICAgc3RyZWFtXyhu
dWxscHRyKSwKICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyh0aGlzKSB7CkBAIC0yNTM4LDI2ICsy
NTMwLDYgQEAgY2xhc3MgVmlkZW9Db2RlY0NvbmZpZ09ic2VydmVyIDogcHVibGljIHRlc3Q6OlNl
bmRUZXN0LAogICB9CiAKICBwcml2YXRlOgotICBjbGFzcyBWaWRlb1N0cmVhbUZhY3RvcnkKLSAg
ICAgIDogcHVibGljIFZpZGVvRW5jb2RlckNvbmZpZzo6VmlkZW9TdHJlYW1GYWN0b3J5SW50ZXJm
YWNlIHsKLSAgIHB1YmxpYzoKLSAgICBWaWRlb1N0cmVhbUZhY3RvcnkoKSB7fQotCi0gICBwcml2
YXRlOgotICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBDcmVhdGVFbmNvZGVyU3RyZWFtcygK
LSAgICAgICAgaW50IHdpZHRoLAotICAgICAgICBpbnQgaGVpZ2h0LAotICAgICAgICBjb25zdCBW
aWRlb0VuY29kZXJDb25maWcmIGVuY29kZXJfY29uZmlnKSBvdmVycmlkZSB7Ci0gICAgICBzdGQ6
OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9Ci0gICAgICAgICAgdGVzdDo6Q3JlYXRlVmlk
ZW9TdHJlYW1zKHdpZHRoLCBoZWlnaHQsIGVuY29kZXJfY29uZmlnKTsKLSAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RyZWFtcy5zaXplKCk7ICsraSkgewotICAgICAgICBzdHJlYW1zW2ld
Lm51bV90ZW1wb3JhbF9sYXllcnMgPQotICAgICAgICAgICAga1ZpZGVvQ29kZWNDb25maWdPYnNl
cnZlck51bWJlck9mVGVtcG9yYWxMYXllcnM7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gc3RyZWFt
czsKLSAgICB9Ci0gIH07Ci0KICAgdm9pZCBNb2RpZnlWaWRlb0NvbmZpZ3MoCiAgICAgICBWaWRl
b1NlbmRTdHJlYW06OkNvbmZpZyogc2VuZF9jb25maWcsCiAgICAgICBzdGQ6OnZlY3RvcjxWaWRl
b1JlY2VpdmVTdHJlYW06OkNvbmZpZz4qIHJlY2VpdmVfY29uZmlncywKQEAgLTI1NjcsOCArMjUz
OSw5IEBAIGNsYXNzIFZpZGVvQ29kZWNDb25maWdPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpTZW5k
VGVzdCwKIAogICAgIGVuY29kZXJfY29uZmlnLT5jb2RlY190eXBlID0gdmlkZW9fY29kZWNfdHlw
ZV87CiAgICAgZW5jb2Rlcl9jb25maWctPmVuY29kZXJfc3BlY2lmaWNfc2V0dGluZ3MgPSBHZXRF
bmNvZGVyU3BlY2lmaWNTZXR0aW5ncygpOwotICAgIGVuY29kZXJfY29uZmlnLT52aWRlb19zdHJl
YW1fZmFjdG9yeSA9Ci0gICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8VmlkZW9TdHJl
YW1GYWN0b3J5PigpOworICAgIEVYUEVDVF9FUSgxdSwgZW5jb2Rlcl9jb25maWctPnNpbXVsY2Fz
dF9sYXllcnMuc2l6ZSgpKTsKKyAgICBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0X2xheWVyc1sw
XS5udW1fdGVtcG9yYWxfbGF5ZXJzID0KKyAgICAgICAga1ZpZGVvQ29kZWNDb25maWdPYnNlcnZl
ck51bWJlck9mVGVtcG9yYWxMYXllcnM7CiAgICAgZW5jb2Rlcl9jb25maWdfID0gZW5jb2Rlcl9j
b25maWctPkNvcHkoKTsKICAgfQogCkBAIC0yNzk0LDggKzI3NjcsNiBAQCBURVNUX1AoVmlkZW9T
ZW5kU3RyZWFtVGVzdCwgVHJhbnNsYXRlc1R3b0xheWVyU2NyZWVuY2FzdFRvVGFyZ2V0Qml0cmF0
ZSkgewogICAgICAgICBjb25zdCBWaWRlb0VuY29kZXJDb25maWcmIGVuY29kZXJfY29uZmlnKSBv
dmVycmlkZSB7CiAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9CiAgICAg
ICAgICAgdGVzdDo6Q3JlYXRlVmlkZW9TdHJlYW1zKHdpZHRoLCBoZWlnaHQsIGVuY29kZXJfY29u
ZmlnKTsKLSAgICAgIEVYUEVDVF9GQUxTRShzdHJlYW1zWzBdLm51bV90ZW1wb3JhbF9sYXllcnMu
aGFzX3ZhbHVlKCkpOwotICAgICAgc3RyZWFtc1swXS5udW1fdGVtcG9yYWxfbGF5ZXJzID0gMjsK
ICAgICAgIFJUQ19DSEVDS19HVChzdHJlYW1zWzBdLm1heF9iaXRyYXRlX2JwcywKICAgICAgICAg
ICAgICAgICAgICBrU2NyZWVuY2FzdE1heFRhcmdldEJpdHJhdGVEZWx0YUticHMpOwogICAgICAg
c3RyZWFtc1swXS50YXJnZXRfYml0cmF0ZV9icHMgPQpAQCAtMjgzMyw2ICsyODA0LDggQEAgVEVT
VF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFRyYW5zbGF0ZXNUd29MYXllclNjcmVlbmNhc3RUb1Rh
cmdldEJpdHJhdGUpIHsKICAgICAgIEVYUEVDVF9FUSgxdSwgZW5jb2Rlcl9jb25maWctPm51bWJl
cl9vZl9zdHJlYW1zKTsKICAgICAgIGVuY29kZXJfY29uZmlnLT52aWRlb19zdHJlYW1fZmFjdG9y
eSA9CiAgICAgICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxWaWRlb1N0cmVhbUZhY3Rv
cnk+KCk7CisgICAgICBFWFBFQ1RfRVEoMXUsIGVuY29kZXJfY29uZmlnLT5zaW11bGNhc3RfbGF5
ZXJzLnNpemUoKSk7CisgICAgICBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0X2xheWVyc1swXS5u
dW1fdGVtcG9yYWxfbGF5ZXJzID0gMjsKICAgICAgIGVuY29kZXJfY29uZmlnLT5jb250ZW50X3R5
cGUgPSBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprU2NyZWVuOwogICAgIH0KIApA
QCAtMjg2Myw4ICsyODM2LDYgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFJlY29uZmln
dXJlQml0cmF0ZXNTZXRzRW5jb2RlckJpdHJhdGVzQ29ycmVjdGx5KSB7CiAgICAgICAgIDogU2Vu
ZFRlc3Qoa0RlZmF1bHRUaW1lb3V0TXMpLAogICAgICAgICAgIEZha2VFbmNvZGVyKENsb2NrOjpH
ZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgICAgIHRhc2tfcXVldWVfKHRhc2tfcXVldWUpLAot
ICAgICAgICAgIGluaXRfZW5jb2RlX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAotICAgICAgICAgIGJp
dHJhdGVfY2hhbmdlZF9ldmVudF8oZmFsc2UsIGZhbHNlKSwKICAgICAgICAgICB0YXJnZXRfYml0
cmF0ZV8oMCksCiAgICAgICAgICAgbnVtX2luaXRpYWxpemF0aW9uc18oMCksCiAgICAgICAgICAg
Y2FsbF8obnVsbHB0ciksCkBAIC0yOTI3LDEwICsyODk4LDExIEBAIFRFU1RfUChWaWRlb1NlbmRT
dHJlYW1UZXN0LCBSZWNvbmZpZ3VyZUJpdHJhdGVzU2V0c0VuY29kZXJCaXRyYXRlc0NvcnJlY3Rs
eSkgewogICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2JpdHJhdGUsIHRhcmdldF9iaXRyYXRlXyk7
CiAgICAgfQogCi0gICAgdm9pZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyog
Y29uZmlnKSBvdmVycmlkZSB7Ci0gICAgICBjb25maWctPmJpdHJhdGVfY29uZmlnLm1pbl9iaXRy
YXRlX2JwcyA9IGtNaW5CaXRyYXRlS2JwcyAqIDEwMDA7Ci0gICAgICBjb25maWctPmJpdHJhdGVf
Y29uZmlnLnN0YXJ0X2JpdHJhdGVfYnBzID0ga1N0YXJ0Qml0cmF0ZUticHMgKiAxMDAwOwotICAg
ICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5tYXhfYml0cmF0ZV9icHMgPSBrTWF4Qml0cmF0ZUti
cHMgKiAxMDAwOworICAgIHZvaWQgTW9kaWZ5U2VuZGVyQml0cmF0ZUNvbmZpZygKKyAgICAgICAg
Qml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykgb3ZlcnJpZGUgeworICAgICAgYml0
cmF0ZV9jb25maWctPm1pbl9iaXRyYXRlX2JwcyA9IGtNaW5CaXRyYXRlS2JwcyAqIDEwMDA7Cisg
ICAgICBiaXRyYXRlX2NvbmZpZy0+c3RhcnRfYml0cmF0ZV9icHMgPSBrU3RhcnRCaXRyYXRlS2Jw
cyAqIDEwMDA7CisgICAgICBiaXRyYXRlX2NvbmZpZy0+bWF4X2JpdHJhdGVfYnBzID0ga01heEJp
dHJhdGVLYnBzICogMTAwMDsKICAgICB9CiAKICAgICBjbGFzcyBWaWRlb1N0cmVhbUZhY3RvcnkK
QEAgLTMxMTUsNyArMzA4Nyw3IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBSZXBvcnRz
U2VudFJlc29sdXRpb24pIHsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCi0jaWYgIWRlZmlu
ZWQoUlRDX0RJU0FCTEVfVlA5KQorI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiBjbGFzcyBW
cDlIZWFkZXJPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpTZW5kVGVzdCB7CiAgcHVibGljOgogICBW
cDlIZWFkZXJPYnNlcnZlcigpCkBAIC0zMTM3LDI2ICszMTA5LDYgQEAgY2xhc3MgVnA5SGVhZGVy
T2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6U2VuZFRlc3QgewogIHByaXZhdGU6CiAgIGNvbnN0IGlu
dCBrVnA5UGF5bG9hZFR5cGUgPSB0ZXN0OjpDYWxsVGVzdDo6a1ZpZGVvU2VuZFBheWxvYWRUeXBl
OwogCi0gIGNsYXNzIFZpZGVvU3RyZWFtRmFjdG9yeQotICAgICAgOiBwdWJsaWMgVmlkZW9FbmNv
ZGVyQ29uZmlnOjpWaWRlb1N0cmVhbUZhY3RvcnlJbnRlcmZhY2UgewotICAgcHVibGljOgotICAg
IGV4cGxpY2l0IFZpZGVvU3RyZWFtRmFjdG9yeShzaXplX3QgbnVtYmVyX29mX3RlbXBvcmFsX2xh
eWVycykKLSAgICAgICAgOiBudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzXyhudW1iZXJfb2ZfdGVt
cG9yYWxfbGF5ZXJzKSB7fQotCi0gICBwcml2YXRlOgotICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3Ry
ZWFtPiBDcmVhdGVFbmNvZGVyU3RyZWFtcygKLSAgICAgICAgaW50IHdpZHRoLAotICAgICAgICBp
bnQgaGVpZ2h0LAotICAgICAgICBjb25zdCBWaWRlb0VuY29kZXJDb25maWcmIGVuY29kZXJfY29u
ZmlnKSBvdmVycmlkZSB7Ci0gICAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9
Ci0gICAgICAgICAgdGVzdDo6Q3JlYXRlVmlkZW9TdHJlYW1zKHdpZHRoLCBoZWlnaHQsIGVuY29k
ZXJfY29uZmlnKTsKLSAgICAgIHN0cmVhbXMuYmFjaygpLm51bV90ZW1wb3JhbF9sYXllcnMgPSBu
dW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzXzsKLSAgICAgIHJldHVybiBzdHJlYW1zOwotICAgIH0K
LQotICAgIGNvbnN0IHNpemVfdCBudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzXzsKLSAgfTsKLQog
ICB2b2lkIE1vZGlmeVZpZGVvQ29uZmlncygKICAgICAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmln
KiBzZW5kX2NvbmZpZywKICAgICAgIHN0ZDo6dmVjdG9yPFZpZGVvUmVjZWl2ZVN0cmVhbTo6Q29u
ZmlnPiogcmVjZWl2ZV9jb25maWdzLApAQCAtMzE2OCw5ICszMTIwLDkgQEAgY2xhc3MgVnA5SGVh
ZGVyT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6U2VuZFRlc3QgewogICAgIGVuY29kZXJfY29uZmln
LT5lbmNvZGVyX3NwZWNpZmljX3NldHRpbmdzID0gbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDwK
ICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpWcDlFbmNvZGVyU3BlY2lmaWNTZXR0aW5ncz4o
dnA5X3NldHRpbmdzXyk7CiAgICAgRVhQRUNUX0VRKDF1LCBlbmNvZGVyX2NvbmZpZy0+bnVtYmVy
X29mX3N0cmVhbXMpOwotICAgIGVuY29kZXJfY29uZmlnLT52aWRlb19zdHJlYW1fZmFjdG9yeSA9
Ci0gICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8VmlkZW9TdHJlYW1GYWN0b3J5PigK
LSAgICAgICAgICAgIHZwOV9zZXR0aW5nc18ubnVtYmVyT2ZUZW1wb3JhbExheWVycyk7CisgICAg
RVhQRUNUX0VRKDF1LCBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0X2xheWVycy5zaXplKCkpOwor
ICAgIGVuY29kZXJfY29uZmlnLT5zaW11bGNhc3RfbGF5ZXJzWzBdLm51bV90ZW1wb3JhbF9sYXll
cnMgPQorICAgICAgICB2cDlfc2V0dGluZ3NfLm51bWJlck9mVGVtcG9yYWxMYXllcnM7CiAgICAg
ZW5jb2Rlcl9jb25maWdfID0gZW5jb2Rlcl9jb25maWctPkNvcHkoKTsKICAgfQogCkBAIC0zNjI4
LDcgKzM1ODAsNyBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgTUFZQkVfVnA5RmxleE1v
ZGVSZWZDb3VudCkgewogCiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KLSNlbmRpZiAgLy8gIWRl
ZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2VuZGlmICAvLyBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5
KQogCiB2b2lkIFZpZGVvU2VuZFN0cmVhbVRlc3Q6OlRlc3RSZXF1ZXN0U291cmNlUm90YXRlVmlk
ZW8oCiAgICAgYm9vbCBzdXBwb3J0X29yaWVudGF0aW9uX2V4dCkgewpAQCAtMzY2Myw2ICszNjE1
LDM5IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LAogICBUZXN0UmVxdWVzdFNvdXJjZVJv
dGF0ZVZpZGVvKHRydWUpOwogfQogCitURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgRW5jb2Rl
ckNvbmZpZ01heEZyYW1lcmF0ZVJlcG9ydGVkVG9Tb3VyY2UpIHsKKyAgc3RhdGljIGNvbnN0IGlu
dCBrTWF4RnBzID0gMjI7CisgIGNsYXNzIEZwc09ic2VydmVyIDogcHVibGljIHRlc3Q6OlNlbmRU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0OjpGcmFtZUdlbmVyYXRvckNh
cHR1cmVyOjpTaW5rV2FudHNPYnNlcnZlciB7CisgICBwdWJsaWM6CisgICAgRnBzT2JzZXJ2ZXIo
KSA6IFNlbmRUZXN0KGtEZWZhdWx0VGltZW91dE1zKSB7fQorCisgICAgdm9pZCBPbkZyYW1lR2Vu
ZXJhdG9yQ2FwdHVyZXJDcmVhdGVkKAorICAgICAgICB0ZXN0OjpGcmFtZUdlbmVyYXRvckNhcHR1
cmVyKiBmcmFtZV9nZW5lcmF0b3JfY2FwdHVyZXIpIG92ZXJyaWRlIHsKKyAgICAgIGZyYW1lX2dl
bmVyYXRvcl9jYXB0dXJlci0+U2V0U2lua1dhbnRzT2JzZXJ2ZXIodGhpcyk7CisgICAgfQorCisg
ICAgdm9pZCBPblNpbmtXYW50c0NoYW5nZWQocnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9G
cmFtZT4qIHNpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpWaWRl
b1NpbmtXYW50cyYgd2FudHMpIG92ZXJyaWRlIHsKKyAgICAgIGlmICh3YW50cy5tYXhfZnJhbWVy
YXRlX2ZwcyA9PSBrTWF4RnBzKQorICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7
CisgICAgfQorCisgICAgdm9pZCBNb2RpZnlWaWRlb0NvbmZpZ3MoCisgICAgICAgIFZpZGVvU2Vu
ZFN0cmVhbTo6Q29uZmlnKiBzZW5kX2NvbmZpZywKKyAgICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9S
ZWNlaXZlU3RyZWFtOjpDb25maWc+KiByZWNlaXZlX2NvbmZpZ3MsCisgICAgICAgIFZpZGVvRW5j
b2RlckNvbmZpZyogZW5jb2Rlcl9jb25maWcpIG92ZXJyaWRlIHsKKyAgICAgIGVuY29kZXJfY29u
ZmlnLT5zaW11bGNhc3RfbGF5ZXJzWzBdLm1heF9mcmFtZXJhdGUgPSBrTWF4RnBzOworICAgIH0K
KworICAgIHZvaWQgUGVyZm9ybVRlc3QoKSBvdmVycmlkZSB7CisgICAgICBFWFBFQ1RfVFJVRShX
YWl0KCkpIDw8ICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgZnBzIHRvIGJlIHJlcG9ydGVk
LiI7CisgICAgfQorICB9IHRlc3Q7CisKKyAgUnVuQmFzZVRlc3QoJnRlc3QpOworfQorCiAvLyBU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBvdmVyaGVhZCBpcyByZW1vdmVkIGZyb20gdGhlIGJhbmR3
aWR0aCBlc3RpbWF0ZSBieQogLy8gdGVzdGluZyB0aGF0IHRoZSBtYXhpbXVtIHBvc3NpYmxlIHRh
cmdldCBwYXlsb2FkIHJhdGUgaXMgc21hbGxlciB0aGFuIHRoZQogLy8gbWF4aW11bSBiYW5kd2lk
dGggZXN0aW1hdGUgYnkgdGhlIG92ZXJoZWFkIHJhdGUuCkBAIC0zNjgwLDggKzM2NjUsNyBAQCBU
RVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgUmVtb3ZlT3ZlcmhlYWRGcm9tQmFuZHdpZHRoKSB7
CiAgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyh0aGlzKSwKICAgICAgICAgICBjYWxsXyhudWxs
cHRyKSwKICAgICAgICAgICBtYXhfYml0cmF0ZV9icHNfKDApLAotICAgICAgICAgIGZpcnN0X3Bh
Y2tldF9zZW50XyhmYWxzZSksCi0gICAgICAgICAgYml0cmF0ZV9jaGFuZ2VkX2V2ZW50XyhmYWxz
ZSwgZmFsc2UpIHt9CisgICAgICAgICAgZmlyc3RfcGFja2V0X3NlbnRfKGZhbHNlKSB7fQogCiAg
ICAgaW50MzJfdCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9u
JiBiaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVS
YXRlKSBvdmVycmlkZSB7CkBAIC0zODk0LDcgKzM4NzgsNiBAQCBjbGFzcyBDb250ZW50U3dpdGNo
VGVzdCA6IHB1YmxpYyB0ZXN0OjpTZW5kVGVzdCB7CiAKICAgZXhwbGljaXQgQ29udGVudFN3aXRj
aFRlc3QoVCogc3RyZWFtX3Jlc2V0X2Z1bikKICAgICAgIDogU2VuZFRlc3QodGVzdDo6Q2FsbFRl
c3Q6OmtEZWZhdWx0VGltZW91dE1zKSwKLSAgICAgICAgY29udGVudF9zd2l0Y2hfZXZlbnRfKGZh
bHNlLCBmYWxzZSksCiAgICAgICAgIGNhbGxfKG51bGxwdHIpLAogICAgICAgICBzdGF0ZV8oU3Ry
ZWFtU3RhdGU6OmtCZWZvcmVTd2l0Y2gpLAogICAgICAgICBzZW5kX3N0cmVhbV8obnVsbHB0ciks
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92
aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyLmNjCmluZGV4IGI3YjVh
MzI2MTEzZjU3YTNmZjE0ZDlkYjJiMDE3MjI4MDBkNjI5OGYuLmEyMmQ1OGFkZjFlYWFkZjg4N2Jj
NTRiMzg3ZjBlNGQ2MmU2Y2VlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVh
bV9lbmNvZGVyLmNjCkBAIC0xNSw4ICsxNSw5IEBACiAjaW5jbHVkZSA8bnVtZXJpYz4KICNpbmNs
dWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNp
bmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8v
aW5jbHVkZS92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5j
bHVkZS92aWRlb19jb2RlY19pbml0aWFsaXplci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlz
aXplLmgiCkBAIC0zNjMsNiArMzY0LDggQEAgVmlkZW9TdHJlYW1FbmNvZGVyOjpWaWRlb1N0cmVh
bUVuY29kZXIoCiAgICAgICBtYXhfZnJhbWVyYXRlXygtMSksCiAgICAgICBwZW5kaW5nX2VuY29k
ZXJfcmVjb25maWd1cmF0aW9uXyhmYWxzZSksCiAgICAgICBwZW5kaW5nX2VuY29kZXJfY3JlYXRp
b25fKGZhbHNlKSwKKyAgICAgIGNyb3Bfd2lkdGhfKDApLAorICAgICAgY3JvcF9oZWlnaHRfKDAp
LAogICAgICAgZW5jb2Rlcl9zdGFydF9iaXRyYXRlX2Jwc18oMCksCiAgICAgICBtYXhfZGF0YV9w
YXlsb2FkX2xlbmd0aF8oMCksCiAgICAgICBsYXN0X29ic2VydmVkX2JpdHJhdGVfYnBzXygwKSwK
QEAgLTM3Niw2ICszNzksNyBAQCBWaWRlb1N0cmVhbUVuY29kZXI6OlZpZGVvU3RyZWFtRW5jb2Rl
cigKICAgICAgIGxhc3RfZnJhbWVfbG9nX21zXyhjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygp
KSwKICAgICAgIGNhcHR1cmVkX2ZyYW1lX2NvdW50XygwKSwKICAgICAgIGRyb3BwZWRfZnJhbWVf
Y291bnRfKDApLAorICAgICAgcGVuZGluZ19mcmFtZV9wb3N0X3RpbWVfdXNfKDApLAogICAgICAg
Yml0cmF0ZV9vYnNlcnZlcl8obnVsbHB0ciksCiAgICAgICBlbmNvZGVyX3F1ZXVlXygiRW5jb2Rl
clF1ZXVlIikgewogICBSVENfRENIRUNLKGVuY29kZXJfc3RhdHNfb2JzZXJ2ZXIpOwpAQCAtNTMx
LDExICs1MzUsMTQgQEAgdm9pZCBWaWRlb1N0cmVhbUVuY29kZXI6OlJlY29uZmlndXJlRW5jb2Rl
cigpIHsKICAgY3JvcF9oZWlnaHRfID0gbGFzdF9mcmFtZV9pbmZvXy0+aGVpZ2h0IC0gaGlnaGVz
dF9zdHJlYW1faGVpZ2h0OwogCiAgIFZpZGVvQ29kZWMgY29kZWM7Ci0gIGlmICghVmlkZW9Db2Rl
Y0luaXRpYWxpemVyOjpTZXR1cENvZGVjKGVuY29kZXJfY29uZmlnXywgc3RyZWFtcywgJmNvZGVj
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF0ZV9hbGxvY2F0
b3JfKSkgeworICBpZiAoIVZpZGVvQ29kZWNJbml0aWFsaXplcjo6U2V0dXBDb2RlYyhlbmNvZGVy
X2NvbmZpZ18sIHN0cmVhbXMsICZjb2RlYykpIHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAi
RmFpbGVkIHRvIGNyZWF0ZSBlbmNvZGVyIGNvbmZpZ3VyYXRpb24uIjsKICAgfQogCisgIHJhdGVf
YWxsb2NhdG9yXyA9CisgICAgICBzZXR0aW5nc18uYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS0+
Q3JlYXRlVmlkZW9CaXRyYXRlQWxsb2NhdG9yKGNvZGVjKTsKKyAgUlRDX0NIRUNLKHJhdGVfYWxs
b2NhdG9yXykgPDwgIkZhaWxlZCB0byBjcmVhdGUgYml0cmF0ZSBhbGxvY2F0b3IuIjsKKwogICAv
LyBTZXQgbWluX2JpdHJhdGVfYnBzLCBtYXhfYml0cmF0ZV9icHMsIGFuZCBtYXggcGFkZGluZyBi
aXQgcmF0ZSBmb3IgVlA5LgogICBpZiAoZW5jb2Rlcl9jb25maWdfLmNvZGVjX3R5cGUgPT0ga1Zp
ZGVvQ29kZWNWUDkpIHsKICAgICBSVENfRENIRUNLX0VRKDFVLCBzdHJlYW1zLnNpemUoKSk7CkBA
IC02MjksNyArNjM2LDcgQEAgdm9pZCBWaWRlb1N0cmVhbUVuY29kZXI6OlJlY29uZmlndXJlRW5j
b2RlcigpIHsKIAogdm9pZCBWaWRlb1N0cmVhbUVuY29kZXI6OkNvbmZpZ3VyZVF1YWxpdHlTY2Fs
ZXIoKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZlbmNvZGVyX3F1ZXVlXyk7Ci0gIGNvbnN0IGF1
dG8gc2NhbGluZ19zZXR0aW5ncyA9IGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKKyAg
Y29uc3QgYXV0byBzY2FsaW5nX3NldHRpbmdzID0gZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCku
c2NhbGluZ19zZXR0aW5nczsKICAgY29uc3QgYm9vbCBxdWFsaXR5X3NjYWxpbmdfYWxsb3dlZCA9
CiAgICAgICBJc1Jlc29sdXRpb25TY2FsaW5nRW5hYmxlZChkZWdyYWRhdGlvbl9wcmVmZXJlbmNl
XykgJiYKICAgICAgIHNjYWxpbmdfc2V0dGluZ3MudGhyZXNob2xkczsKQEAgLTg4Nyw3ICs4OTQs
MTUgQEAgdm9pZCBWaWRlb1N0cmVhbUVuY29kZXI6OkVuY29kZVZpZGVvRnJhbWUoY29uc3QgVmlk
ZW9GcmFtZSYgdmlkZW9fZnJhbWUsCiAKICAgb3ZlcnVzZV9kZXRlY3Rvcl8tPkZyYW1lQ2FwdHVy
ZWQob3V0X2ZyYW1lLCB0aW1lX3doZW5fcG9zdGVkX3VzKTsKIAotICB2aWRlb19zZW5kZXJfLkFk
ZFZpZGVvRnJhbWUob3V0X2ZyYW1lLCBudWxscHRyKTsKKyAgLy8gRW5jb2RlciBtZXRhZGF0YSBu
ZWVkcyB0byBiZSB1cGRhdGVkIGJlZm9yZSBlbmNvZGUgY29tcGxldGUgY2FsbGJhY2suCisgIFZp
ZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gaW5mbyA9IGVuY29kZXJfLT5HZXRFbmNvZGVySW5mbygp
OworICBpZiAoaW5mby5pbXBsZW1lbnRhdGlvbl9uYW1lICE9IGVuY29kZXJfaW5mb18uaW1wbGVt
ZW50YXRpb25fbmFtZSkgeworICAgIGVuY29kZXJfc3RhdHNfb2JzZXJ2ZXJfLT5PbkVuY29kZXJJ
bXBsZW1lbnRhdGlvbkNoYW5nZWQoCisgICAgICAgIGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSk7
CisgIH0KKyAgZW5jb2Rlcl9pbmZvXyA9IGluZm87CisKKyAgdmlkZW9fc2VuZGVyXy5BZGRWaWRl
b0ZyYW1lKG91dF9mcmFtZSwgbnVsbHB0ciwgZW5jb2Rlcl9pbmZvXyk7CiB9CiAKIHZvaWQgVmlk
ZW9TdHJlYW1FbmNvZGVyOjpTZW5kS2V5RnJhbWUoKSB7CkBAIC0xMDg1LDcgKzExMDAsNyBAQCB2
b2lkIFZpZGVvU3RyZWFtRW5jb2Rlcjo6QWRhcHREb3duKEFkYXB0UmVhc29uIHJlYXNvbikgewog
ICAgICAgYm9vbCBtaW5fcGl4ZWxzX3JlYWNoZWQgPSBmYWxzZTsKICAgICAgIGlmICghc291cmNl
X3Byb3h5Xy0+UmVxdWVzdFJlc29sdXRpb25Mb3dlclRoYW4oCiAgICAgICAgICAgICAgIGFkYXB0
YXRpb25fcmVxdWVzdC5pbnB1dF9waXhlbF9jb3VudF8sCi0gICAgICAgICAgICAgIGVuY29kZXJf
LT5HZXRTY2FsaW5nU2V0dGluZ3MoKS5taW5fcGl4ZWxzX3Blcl9mcmFtZSwKKyAgICAgICAgICAg
ICAgZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5ncy5taW5fcGl4ZWxz
X3Blcl9mcmFtZSwKICAgICAgICAgICAgICAgJm1pbl9waXhlbHNfcmVhY2hlZCkpIHsKICAgICAg
ICAgaWYgKG1pbl9waXhlbHNfcmVhY2hlZCkKICAgICAgICAgICBlbmNvZGVyX3N0YXRzX29ic2Vy
dmVyXy0+T25NaW5QaXhlbExpbWl0UmVhY2hlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVv
X3N0cmVhbV9lbmNvZGVyLmgKaW5kZXggNDAwODQyNmJhYzljZjBlNmRjMjhlOTI4NjQ0ODQ3MTMw
MDEyNTZkNS4uOGM1ZWZiZTVjMzY5OTkxYjM5YmMzZTljZjgyNzhlMzY0MTY0YTgzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlk
ZW9fc3RyZWFtX2VuY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlci5oCkBAIC0yNjgsNiArMjY4LDgg
QEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyIDogcHVibGljIFZpZGVvU3RyZWFtRW5jb2Rlcklu
dGVyZmFjZSwKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9wYXJhbWV0ZXJzX3VwZGF0
ZV9tc18KICAgICAgIFJUQ19HVUFSREVEX0JZKCZlbmNvZGVyX3F1ZXVlXyk7CiAKKyAgVmlkZW9F
bmNvZGVyOjpFbmNvZGVySW5mbyBlbmNvZGVyX2luZm9fIFJUQ19HVUFSREVEX0JZKCZlbmNvZGVy
X3F1ZXVlXyk7CisKICAgLy8gQWxsIHB1YmxpYyBtZXRob2RzIGFyZSBwcm94aWVkIHRvIHxlbmNv
ZGVyX3F1ZXVlX3wuIEl0IG11c3QgbXVzdCBiZQogICAvLyBkZXN0cm95ZWQgZmlyc3QgdG8gbWFr
ZSBzdXJlIG5vIHRhc2tzIGFyZSBydW4gdGhhdCB1c2Ugb3RoZXIgbWVtYmVycy4KICAgcnRjOjpU
YXNrUXVldWUgZW5jb2Rlcl9xdWV1ZV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlcl91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Zp
ZGVvX3N0cmVhbV9lbmNvZGVyX3VuaXR0ZXN0LmNjCmluZGV4IDgwZjhkNWE1OTIxNzVmM2MyMjU3
OTAzM2RlMDZmY2RhM2FiMzkwZDcuLjA1YTIzYzA1YjQ1ZTczNmQwN2RkODc2MWI1NDliZTEzNGEy
MjgwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNv
ZGVyX3VuaXR0ZXN0LmNjCkBAIC04LDEzICs4LDE3IEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KIAorI2luY2x1
ZGUgInZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyLmgiCisKICNpbmNsdWRlIDxhbGdvcml0aG0+
CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhcGkv
dmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9j
cmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
dnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvdmlkZW9hZGFwdGVy
LmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3Zw
OF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA5L2luY2x1ZGUvdnA5X2dsb2JhbHMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy91dGlsaXR5L2RlZmF1bHRfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9mYWtlY2xvY2suaCIKQEAgLTMwLDcgKzM0LDYgQEAKICNpbmNsdWRlICJ0ZXN0
L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC92aWRlb19lbmNvZGVyX3Byb3h5X2ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJ2aWRlby9zZW5kX3N0YXRpc3RpY3NfcHJveHkuaCIKLSNpbmNsdWRlICJ2aWRl
by92aWRlb19zdHJlYW1fZW5jb2Rlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMTAy
LDcgKzEwNSw3IEBAIGNsYXNzIFZpZGVvU3RyZWFtRW5jb2RlclVuZGVyVGVzdCA6IHB1YmxpYyBW
aWRlb1N0cmVhbUVuY29kZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXcgQ3B1T3ZlcnVzZURldGVjdG9yUHJveHkoc3RhdHNfcHJveHkpKSkge30KIAogICB2b2lkIFBv
c3RUYXNrQW5kV2FpdChib29sIGRvd24sIEFkYXB0UmVhc29uIHJlYXNvbikgewotICAgIHJ0Yzo6
RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgICBydGM6OkV2ZW50IGV2ZW50OwogICAgIGVu
Y29kZXJfcXVldWUoKS0+UG9zdFRhc2soW3RoaXMsICZldmVudCwgcmVhc29uLCBkb3duXSB7CiAg
ICAgICBkb3duID8gQWRhcHREb3duKHJlYXNvbikgOiBBZGFwdFVwKHJlYXNvbik7CiAgICAgICBl
dmVudC5TZXQoKTsKQEAgLTExMyw3ICsxMTYsNyBAQCBjbGFzcyBWaWRlb1N0cmVhbUVuY29kZXJV
bmRlclRlc3QgOiBwdWJsaWMgVmlkZW9TdHJlYW1FbmNvZGVyIHsKICAgLy8gVGhpcyBpcyB1c2Vk
IGFzIGEgc3luY2hyb25pc2F0aW9uIG1lY2hhbmlzbSwgdG8gbWFrZSBzdXJlIHRoYXQgdGhlCiAg
IC8vIGVuY29kZXIgcXVldWUgaXMgbm90IGJsb2NrZWQgYmVmb3JlIHdlIHN0YXJ0IHNlbmRpbmcg
aXQgZnJhbWVzLgogICB2b2lkIFdhaXRVbnRpbFRhc2tRdWV1ZUlzSWRsZSgpIHsKLSAgICBydGM6
OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgICAgcnRjOjpFdmVudCBldmVudDsKICAgICBl
bmNvZGVyX3F1ZXVlKCktPlBvc3RUYXNrKFsmZXZlbnRdIHsgZXZlbnQuU2V0KCk7IH0pOwogICAg
IEFTU0VSVF9UUlVFKGV2ZW50LldhaXQoNTAwMCkpOwogICB9CkBAIC0yNzcsNiArMjgwLDcgQEAg
Y2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qgewog
ICAgICAgICBtYXhfZnJhbWVyYXRlXyhrRGVmYXVsdEZyYW1lcmF0ZSksCiAgICAgICAgIGZha2Vf
ZW5jb2Rlcl8oKSwKICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5XygmZmFrZV9lbmNvZGVyXyksCisg
ICAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfKENyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJh
dGVBbGxvY2F0b3JGYWN0b3J5KCkpLAogICAgICAgICBzdGF0c19wcm94eV8obmV3IE1vY2thYmxl
U2VuZFN0YXRpc3RpY3NQcm94eSgKICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2Nr
KCksCiAgICAgICAgICAgICB2aWRlb19zZW5kX2NvbmZpZ18sCkBAIC0yODcsNiArMjkxLDggQEAg
Y2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qgewog
ICAgIG1ldHJpY3M6OlJlc2V0KCk7CiAgICAgdmlkZW9fc2VuZF9jb25maWdfID0gVmlkZW9TZW5k
U3RyZWFtOjpDb25maWcobnVsbHB0cik7CiAgICAgdmlkZW9fc2VuZF9jb25maWdfLmVuY29kZXJf
c2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gJmVuY29kZXJfZmFjdG9yeV87CisgICAgdmlkZW9f
c2VuZF9jb25maWdfLmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9
CisgICAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfLmdldCgpOwogICAgIHZpZGVvX3Nl
bmRfY29uZmlnXy5ydHAucGF5bG9hZF9uYW1lID0gIkZBS0UiOwogICAgIHZpZGVvX3NlbmRfY29u
ZmlnXy5ydHAucGF5bG9hZF90eXBlID0gMTI1OwogCkBAIC00OTIsOSArNDk4LDcgQEAgY2xhc3Mg
VmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogCiAgIGNs
YXNzIFRlc3RFbmNvZGVyIDogcHVibGljIHRlc3Q6OkZha2VFbmNvZGVyIHsKICAgIHB1YmxpYzoK
LSAgICBUZXN0RW5jb2RlcigpCi0gICAgICAgIDogRmFrZUVuY29kZXIoQ2xvY2s6OkdldFJlYWxU
aW1lQ2xvY2soKSksCi0gICAgICAgICAgY29udGludWVfZW5jb2RlX2V2ZW50XyhmYWxzZSwgZmFs
c2UpIHt9CisgICAgVGVzdEVuY29kZXIoKSA6IEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGlt
ZUNsb2NrKCkpIHt9CiAKICAgICBWaWRlb0NvZGVjIGNvZGVjX2NvbmZpZygpIGNvbnN0IHsKICAg
ICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfc2VjdF8pOwpAQCAtNTA2LDExICs1MTAsMTQg
QEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
ewogICAgICAgYmxvY2tfbmV4dF9lbmNvZGVfID0gdHJ1ZTsKICAgICB9CiAKLSAgICBWaWRlb0Vu
Y29kZXI6OlNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25zdCBvdmVycmlk
ZSB7CisgICAgVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0
IG92ZXJyaWRlIHsKKyAgICAgIEVuY29kZXJJbmZvIGluZm87CiAgICAgICBydGM6OkNyaXRTY29w
ZSBsb2NrKCZsb2NhbF9jcml0X3NlY3RfKTsKLSAgICAgIGlmIChxdWFsaXR5X3NjYWxpbmdfKQot
ICAgICAgICByZXR1cm4gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MoMSwgMiwga01pblBp
eGVsc1BlckZyYW1lKTsKLSAgICAgIHJldHVybiBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5n
czo6a09mZjsKKyAgICAgIGlmIChxdWFsaXR5X3NjYWxpbmdfKSB7CisgICAgICAgIGluZm8uc2Nh
bGluZ19zZXR0aW5ncyA9CisgICAgICAgICAgICBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5n
cygxLCAyLCBrTWluUGl4ZWxzUGVyRnJhbWUpOworICAgICAgfQorICAgICAgcmV0dXJuIGluZm87
CiAgICAgfQogCiAgICAgdm9pZCBDb250aW51ZUVuY29kZSgpIHsgY29udGludWVfZW5jb2RlX2V2
ZW50Xy5TZXQoKTsgfQpAQCAtNTY5LDkgKzU3Niw4IEBAIGNsYXNzIFZpZGVvU3RyZWFtRW5jb2Rl
clRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgaW50IG51bV9zdHJlYW1z
ID0gc3RkOjptYXg8aW50PigxLCBjb25maWctPm51bWJlck9mU2ltdWxjYXN0U3RyZWFtcyk7CiAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3N0cmVhbXM7ICsraSkgewogICAgICAgICAg
IGFsbG9jYXRlZF90ZW1wb3JhbF9sYXllcnNfLmVtcGxhY2VfYmFjaygKLSAgICAgICAgICAgICAg
VGVtcG9yYWxMYXllcnM6OkNyZWF0ZVRlbXBvcmFsTGF5ZXJzKAotICAgICAgICAgICAgICAgICAg
VGVtcG9yYWxMYXllcnNUeXBlOjprRml4ZWRQYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgY29u
ZmlnLT5WUDgoKS5udW1iZXJPZlRlbXBvcmFsTGF5ZXJzKSk7CisgICAgICAgICAgICAgIENyZWF0
ZVZwOFRlbXBvcmFsTGF5ZXJzKFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLT5WUDgoKS5udW1i
ZXJPZlRlbXBvcmFsTGF5ZXJzKSk7CiAgICAgICAgIH0KICAgICAgIH0KICAgICAgIGlmIChmb3Jj
ZV9pbml0X2VuY29kZV9mYWlsZWRfKQpAQCAtNTg3LDcgKzU5Myw3IEBAIGNsYXNzIFZpZGVvU3Ry
ZWFtRW5jb2RlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICBpbnQgbGFzdF9p
bnB1dF93aWR0aF8gUlRDX0dVQVJERURfQlkobG9jYWxfY3JpdF9zZWN0XykgPSAwOwogICAgIGlu
dCBsYXN0X2lucHV0X2hlaWdodF8gUlRDX0dVQVJERURfQlkobG9jYWxfY3JpdF9zZWN0XykgPSAw
OwogICAgIGJvb2wgcXVhbGl0eV9zY2FsaW5nXyBSVENfR1VBUkRFRF9CWShsb2NhbF9jcml0X3Nl
Y3RfKSA9IHRydWU7Ci0gICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRlbXBvcmFsTGF5
ZXJzPj4gYWxsb2NhdGVkX3RlbXBvcmFsX2xheWVyc18KKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8VnA4VGVtcG9yYWxMYXllcnM+PiBhbGxvY2F0ZWRfdGVtcG9yYWxfbGF5ZXJzXwog
ICAgICAgICBSVENfR1VBUkRFRF9CWShsb2NhbF9jcml0X3NlY3RfKTsKICAgICBib29sIGZvcmNl
X2luaXRfZW5jb2RlX2ZhaWxlZF8gUlRDX0dVQVJERURfQlkobG9jYWxfY3JpdF9zZWN0XykgPSBm
YWxzZTsKICAgfTsKQEAgLTU5NSw3ICs2MDEsNyBAQCBjbGFzcyBWaWRlb1N0cmVhbUVuY29kZXJU
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgIGNsYXNzIFRlc3RTaW5rIDogcHVibGlj
IFZpZGVvU3RyZWFtRW5jb2Rlcjo6RW5jb2RlclNpbmsgewogICAgcHVibGljOgogICAgIGV4cGxp
Y2l0IFRlc3RTaW5rKFRlc3RFbmNvZGVyKiB0ZXN0X2VuY29kZXIpCi0gICAgICAgIDogdGVzdF9l
bmNvZGVyXyh0ZXN0X2VuY29kZXIpLCBlbmNvZGVkX2ZyYW1lX2V2ZW50XyhmYWxzZSwgZmFsc2Up
IHt9CisgICAgICAgIDogdGVzdF9lbmNvZGVyXyh0ZXN0X2VuY29kZXIpIHt9CiAKICAgICB2b2lk
IFdhaXRGb3JFbmNvZGVkRnJhbWUoaW50NjRfdCBleHBlY3RlZF9udHBfdGltZSkgewogICAgICAg
RVhQRUNUX1RSVUUoCkBAIC02OTQsNiArNzAwLDcgQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVy
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICBpbnQgbWF4X2ZyYW1lcmF0ZV87CiAg
IFRlc3RFbmNvZGVyIGZha2VfZW5jb2Rlcl87CiAgIHRlc3Q6OlZpZGVvRW5jb2RlclByb3h5RmFj
dG9yeSBlbmNvZGVyX2ZhY3RvcnlfOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxs
b2NhdG9yRmFjdG9yeT4gYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV87CiAgIHN0ZDo6dW5pcXVl
X3B0cjxNb2NrYWJsZVNlbmRTdGF0aXN0aWNzUHJveHk+IHN0YXRzX3Byb3h5XzsKICAgVGVzdFNp
bmsgc2lua187CiAgIEFkYXB0aW5nRnJhbWVGb3J3YXJkZXIgdmlkZW9fc291cmNlXzsKQEAgLTcw
Myw3ICs3MTAsNyBAQCBjbGFzcyBWaWRlb1N0cmVhbUVuY29kZXJUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiAKIFRFU1RfRihWaWRlb1N0cmVhbUVuY29kZXJUZXN0LCBFbmNvZGVPbmVG
cmFtZSkgewogICB2aWRlb19zdHJlYW1fZW5jb2Rlcl8tPk9uQml0cmF0ZVVwZGF0ZWQoa1Rhcmdl
dEJpdHJhdGVCcHMsIDAsIDApOwotICBydGM6OkV2ZW50IGZyYW1lX2Rlc3Ryb3llZF9ldmVudChm
YWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGZyYW1lX2Rlc3Ryb3llZF9ldmVudDsKICAgdmlk
ZW9fc291cmNlXy5JbmNvbWluZ0NhcHR1cmVkRnJhbWUoQ3JlYXRlRnJhbWUoMSwgJmZyYW1lX2Rl
c3Ryb3llZF9ldmVudCkpOwogICBXYWl0Rm9yRW5jb2RlZEZyYW1lKDEpOwogICBFWFBFQ1RfVFJV
RShmcmFtZV9kZXN0cm95ZWRfZXZlbnQuV2FpdChrRGVmYXVsdFRpbWVvdXRNcykpOwpAQCAtNzEy
LDcgKzcxOSw3IEBAIFRFU1RfRihWaWRlb1N0cmVhbUVuY29kZXJUZXN0LCBFbmNvZGVPbmVGcmFt
ZSkgewogCiBURVNUX0YoVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCwgRHJvcHNGcmFtZXNCZWZvcmVG
aXJzdE9uQml0cmF0ZVVwZGF0ZWQpIHsKICAgLy8gRHJvcHBlZCBzaW5jZSBubyB0YXJnZXQgYml0
cmF0ZSBoYXMgYmVlbiBzZXQuCi0gIHJ0Yzo6RXZlbnQgZnJhbWVfZGVzdHJveWVkX2V2ZW50KGZh
bHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZnJhbWVfZGVzdHJveWVkX2V2ZW50OwogICAvLyBU
aGUgZW5jb2RlciB3aWxsIGNhY2hlIHVwIHRvIG9uZSBmcmFtZSBmb3IgYSBzaG9ydCBkdXJhdGlv
bi4gQWRkaW5nIHR3bwogICAvLyBmcmFtZXMgbWVhbnMgdGhhdCB0aGUgZmlyc3QgZnJhbWUgd2ls
bCBiZSBkcm9wcGVkIGFuZCB0aGUgc2Vjb25kIGZyYW1lIHdpbGwKICAgLy8gYmUgc2VudCB3aGVu
IHRoZSBlbmNvZGVyIGlzIGVuYWJsZWQuCkBAIC03NzAsNyArNzc3LDcgQEAgVEVTVF9GKFZpZGVv
U3RyZWFtRW5jb2RlclRlc3QsIERyb3BzRnJhbWVBZnRlclN0b3ApIHsKIAogICB2aWRlb19zdHJl
YW1fZW5jb2Rlcl8tPlN0b3AoKTsKICAgc2lua18uU2V0RXhwZWN0Tm9GcmFtZXMoKTsKLSAgcnRj
OjpFdmVudCBmcmFtZV9kZXN0cm95ZWRfZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVu
dCBmcmFtZV9kZXN0cm95ZWRfZXZlbnQ7CiAgIHZpZGVvX3NvdXJjZV8uSW5jb21pbmdDYXB0dXJl
ZEZyYW1lKENyZWF0ZUZyYW1lKDIsICZmcmFtZV9kZXN0cm95ZWRfZXZlbnQpKTsKICAgRVhQRUNU
X1RSVUUoZnJhbWVfZGVzdHJveWVkX2V2ZW50LldhaXQoa0RlZmF1bHRUaW1lb3V0TXMpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3dl
YnJ0Yy5nbmkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy93ZWJy
dGMuZ25pCmluZGV4IDZlY2Y4NTliYTEwM2QwZjY4NjA3NjU5ZDI5OGVlZTdjNmEzYzcxODQuLjVj
NTIxNGU4YTE1N2YxNmZjYThiODM4MDM3ODJiNTIzYjU5NDdhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3dlYnJ0Yy5nbmkKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvd2VicnRjLmduaQpAQCAtOSw2
ICs5LDcgQEAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9hcm0uZ25pIikKIGltcG9ydCgiLy9idWls
ZC9jb25maWcvZmVhdHVyZXMuZ25pIikKIGltcG9ydCgiLy9idWlsZC9jb25maWcvbWlwcy5nbmki
KQogaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9zYW5pdGl6ZXJzL3Nhbml0aXplcnMuZ25pIikKK2lt
cG9ydCgiLy9idWlsZC9jb25maWcvc3lzcm9vdC5nbmkiKQogaW1wb3J0KCIvL2J1aWxkL2NvbmZp
Zy91aS5nbmkiKQogaW1wb3J0KCIvL2J1aWxkX292ZXJyaWRlcy9idWlsZC5nbmkiKQogCkBAIC0z
NSw2ICszNiwxMCBAQCBpZiAoaXNfbWFjKSB7CiB9CiAKIGRlY2xhcmVfYXJncygpIHsKKyAgIyBT
ZXR0aW5nIHRoaXMgdG8gdHJ1ZSB3aWxsIG1ha2UgUlRDX0VYUE9SVCAoc2VlIHJ0Y19iYXNlL3N5
c3RlbS9ydGNfZXhwb3J0LmgpCisgICMgZXhwYW5kIHRvIGNvZGUgdGhhdCB3aWxsIG1hbmFnZSBz
eW1ib2xzIHZpc2liaWxpdHkuCisgIHJ0Y19lbmFibGVfc3ltYm9sX2V4cG9ydCA9IGZhbHNlCisK
ICAgIyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSB3aWxsIGRlZmluZSBXRUJSVENfRVhDTFVERV9GSUVM
RF9UUklBTF9ERUZBVUxUIHdoaWNoCiAgICMgd2lsbCB0ZWxsIHRoZSBwcmUtcHJvY2Vzc29yIHRv
IHJlbW92ZSB0aGUgZGVmYXVsdCBkZWZpbml0aW9uIG9mIHN5bWJvbHMKICAgIyBuZWVkZWQgdG8g
dXNlIGZpZWxkX3RyaWFsLiBJbiB0aGF0IGNhc2UgYSBuZXcgaW1wbGVtZW50YXRpb24gbmVlZHMg
dG8gYmUKQEAgLTEwMyw2ICsxMDgsOSBAQCBkZWNsYXJlX2FyZ3MoKSB7CiAgICMgU2V0IHRoaXMg
dG8gZmFsc2UgdG8gc2tpcCBidWlsZGluZyBjb2RlIHRoYXQgcmVxdWlyZXMgWDExLgogICBydGNf
dXNlX3gxMSA9IHVzZV94MTEKIAorICAjIFNldCB0aGlzIHRvIHVzZSBQaXBlV2lyZSBvbiB0aGUg
V2F5bGFuZCBkaXNwbGF5IHNlcnZlci4KKyAgcnRjX3VzZV9waXBld2lyZSA9IGZhbHNlCisKICAg
IyBFbmFibGUgdG8gdXNlIHRoZSBNb3ppbGxhIGludGVybmFsIHNldHRpbmdzLgogICBidWlsZF93
aXRoX21vemlsbGEgPSBmYWxzZQogCkBAIC0yMjUsNyArMjMzLDggQEAgcnRjX2xpYnZweF9kaXIg
PSAiLy90aGlyZF9wYXJ0eS9saWJ2cHgiCiBydGNfb3B1c19kaXIgPSAiLy90aGlyZF9wYXJ0eS9v
cHVzIgogCiAjIERlc2t0b3AgY2FwdHVyZXIgaXMgc3VwcG9ydGVkIG9ubHkgb24gV2luZG93cywg
T1NYIGFuZCBMaW51eC4KLXJ0Y19kZXNrdG9wX2NhcHR1cmVfc3VwcG9ydGVkID0gaXNfd2luIHx8
IGlzX21hYyB8fCAoaXNfbGludXggJiYgcnRjX3VzZV94MTEpCitydGNfZGVza3RvcF9jYXB0dXJl
X3N1cHBvcnRlZCA9CisgICAgaXNfd2luIHx8IGlzX21hYyB8fCAoaXNfbGludXggJiYgKHJ0Y191
c2VfeDExIHx8IHJ0Y191c2VfcGlwZXdpcmUpKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAj
IFRlbXBsYXRlcwpAQCAtNjQ5LDYgKzY1OCw4IEBAIGlmIChpc19pb3MpIHsKICAgICB9CiAgIH0K
IAorICAjIFRPRE86IEdlbmVyYXRlIG1vZHVsZS5tb2R1bGVtYXAgZmlsZSB0byBlbmFibGUgdXNl
IGluIFN3aWZ0CisgICMgcHJvamVjdHMuIFNlZSAibWFjX2ZyYW1ld29ya19idW5kbGVfd2l0aF91
bWJyZWxsYV9oZWFkZXIiLgogICB0ZW1wbGF0ZSgiaW9zX2ZyYW1ld29ya19idW5kbGVfd2l0aF91
bWJyZWxsYV9oZWFkZXIiKSB7CiAgICAgZm9yd2FyZF92YXJpYWJsZXNfZnJvbShpbnZva2VyLCBb
ICJvdXRwdXRfbmFtZSIgXSkKICAgICB1bWJyZWxsYV9oZWFkZXJfcGF0aCA9CkBAIC02OTksMTIg
KzcxMCwxNyBAQCBpZiAoaXNfbWFjKSB7CiAgICAgZm9yd2FyZF92YXJpYWJsZXNfZnJvbShpbnZv
a2VyLCBbICJvdXRwdXRfbmFtZSIgXSkKICAgICB0aGlzX3RhcmdldF9uYW1lID0gdGFyZ2V0X25h
bWUKICAgICB1bWJyZWxsYV9oZWFkZXJfcGF0aCA9ICIkdGFyZ2V0X2dlbl9kaXIvdW1icmVsbGFf
aGVhZGVyLyRvdXRwdXRfbmFtZS5oIgorICAgIG1vZHVsZW1hcF9wYXRoID0gIiR0YXJnZXRfZ2Vu
X2Rpci9Nb2R1bGVzL21vZHVsZS5tb2R1bGVtYXAiCiAKICAgICBtYWNfZnJhbWV3b3JrX2J1bmRs
ZSh0YXJnZXRfbmFtZSkgewogICAgICAgZm9yd2FyZF92YXJpYWJsZXNfZnJvbShpbnZva2VyLCAi
KiIsIFtdKQogCiAgICAgICBmcmFtZXdvcmtfdmVyc2lvbiA9ICJBIgotICAgICAgZnJhbWV3b3Jr
X2NvbnRlbnRzID0gWyAiSGVhZGVycyIgXQorICAgICAgZnJhbWV3b3JrX2NvbnRlbnRzID0gWwor
ICAgICAgICAiSGVhZGVycyIsCisgICAgICAgICJNb2R1bGVzIiwKKyAgICAgICAgIlJlc291cmNl
cyIsCisgICAgICBdCiAKICAgICAgIGxkZmxhZ3MgPSBbCiAgICAgICAgICItYWxsX2xvYWQiLApA
QCAtNzE0LDcgKzczMCw5IEBAIGlmIChpc19tYWMpIHsKIAogICAgICAgZGVwcyArPSBbCiAgICAg
ICAgICI6Y29weV9mcmFtZXdvcmtfaGVhZGVyc18kdGhpc190YXJnZXRfbmFtZSIsCisgICAgICAg
ICI6Y29weV9tb2R1bGVtYXBfJHRoaXNfdGFyZ2V0X25hbWUiLAogICAgICAgICAiOmNvcHlfdW1i
cmVsbGFfaGVhZGVyXyR0aGlzX3RhcmdldF9uYW1lIiwKKyAgICAgICAgIjptb2R1bGVtYXBfJHRo
aXNfdGFyZ2V0X25hbWUiLAogICAgICAgICAiOnVtYnJlbGxhX2hlYWRlcl8kdGhpc190YXJnZXRf
bmFtZSIsCiAgICAgICBdCiAgICAgfQpAQCAtNzI3LDYgKzc0NSwzMSBAQCBpZiAoaXNfbWFjKSB7
CiAgICAgICBdCiAgICAgfQogCisgICAgYWN0aW9uKCJtb2R1bGVtYXBfJHRoaXNfdGFyZ2V0X25h
bWUiKSB7CisgICAgICBzY3JpcHQgPSAiLy90b29sc193ZWJydGMvaW9zL2dlbmVyYXRlX21vZHVs
ZW1hcC5weSIKKyAgICAgIGFyZ3MgPSBbCisgICAgICAgICItLW91dCIsCisgICAgICAgIHJlYmFz
ZV9wYXRoKG1vZHVsZW1hcF9wYXRoLCByb290X2J1aWxkX2RpciksCisgICAgICAgICItLW5hbWUi
LAorICAgICAgICBvdXRwdXRfbmFtZSwKKyAgICAgIF0KKyAgICAgIG91dHB1dHMgPSBbCisgICAg
ICAgIG1vZHVsZW1hcF9wYXRoLAorICAgICAgXQorICAgIH0KKworICAgIGJ1bmRsZV9kYXRhKCJj
b3B5X21vZHVsZW1hcF8kdGhpc190YXJnZXRfbmFtZSIpIHsKKyAgICAgIHNvdXJjZXMgPSBbCisg
ICAgICAgIG1vZHVsZW1hcF9wYXRoLAorICAgICAgXQorICAgICAgb3V0cHV0cyA9IFsKKyAgICAg
ICAgInt7YnVuZGxlX2NvbnRlbnRzX2Rpcn19L01vZHVsZXMvbW9kdWxlLm1vZHVsZW1hcCIsCisg
ICAgICBdCisgICAgICBkZXBzID0gWworICAgICAgICAiOm1vZHVsZW1hcF8kdGhpc190YXJnZXRf
bmFtZSIsCisgICAgICBdCisgICAgfQorCiAgICAgYWN0aW9uKCJ1bWJyZWxsYV9oZWFkZXJfJHRo
aXNfdGFyZ2V0X25hbWUiKSB7CiAgICAgICBmb3J3YXJkX3ZhcmlhYmxlc19mcm9tKGludm9rZXIs
IFsgInNvdXJjZXMiIF0pCiAKQEAgLTc2OSwxNCArODEyLDE0IEBAIGlmIChpc19hbmRyb2lkKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZpc2liaWxpdHkiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKQogCi0gICAgICBqYXZhY19hcmdzID0gW10KKyAgICAgIGVy
cm9ycHJvbmVfYXJncyA9IFtdCiAKICAgICAgICMgVHJlYXQgd2FybmluZ3MgYXMgZXJyb3JzLgot
ICAgICAgamF2YWNfYXJncyArPSBbICItV2Vycm9yIiBdCisgICAgICBlcnJvcnByb25lX2FyZ3Mg
Kz0gWyAiLVdlcnJvciIgXQogCiAgICAgICAjIFRPRE8oY3JidWcuY29tLzgyNDY3OSk6IEZpbmQg
b3V0IHdoeSB0aGlzIGZhaWxzIGluIENocm9taXVtCiAgICAgICBpZiAoIWJ1aWxkX3dpdGhfY2hy
b21pdW0pIHsKLSAgICAgICAgamF2YWNfYXJncyArPSBbCisgICAgICAgIGVycm9ycHJvbmVfYXJn
cyArPSBbCiAgICAgICAgICAgIi1YZXA6UGFyYW1ldGVyTm90TnVsbGFibGU6RVJST1IiLAogICAg
ICAgICAgICItWGVwOkZpZWxkTWlzc2luZ051bGxhYmxlOkVSUk9SIiwKICAgICAgICAgICAiLVhl
cDpSZXR1cm5NaXNzaW5nTnVsbGFibGU6RVJST1IiLApAQCAtNzg0LDggKzgyNyw4IEBAIGlmIChp
c19hbmRyb2lkKSB7CiAgICAgICB9CiAKICAgICAgICMgQWRkIGFueSBhcmd1bWVudHMgZGVmaW5l
ZCBieSB0aGUgaW52b2tlci4KLSAgICAgIGlmIChkZWZpbmVkKGludm9rZXIuamF2YWNfYXJncykp
IHsKLSAgICAgICAgamF2YWNfYXJncyArPSBpbnZva2VyLmphdmFjX2FyZ3MKKyAgICAgIGlmIChk
ZWZpbmVkKGludm9rZXIuZXJyb3Jwcm9uZV9hcmdzKSkgeworICAgICAgICBlcnJvcnByb25lX2Fy
Z3MgKz0gaW52b2tlci5lcnJvcnByb25lX2FyZ3MKICAgICAgIH0KIAogICAgICAgaWYgKCFkZWZp
bmVkKGRlcHMpKSB7CkBAIC04MDksMTEgKzg1MiwxMSBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKQogCiAgICAgICAjIFRyZWF0IHdhcm5pbmdzIGFz
IGVycm9ycy4KLSAgICAgIGphdmFjX2FyZ3MgPSBbICItV2Vycm9yIiBdCisgICAgICBlcnJvcnBy
b25lX2FyZ3MgPSBbICItV2Vycm9yIiBdCiAKICAgICAgICMgVE9ETyhjcmJ1Zy5jb20vODI0Njc5
KTogRmluZCBvdXQgd2h5IHRoaXMgZmFpbHMgaW4gQ2hyb21pdW0KICAgICAgIGlmICghYnVpbGRf
d2l0aF9jaHJvbWl1bSkgewotICAgICAgICBqYXZhY19hcmdzICs9IFsKKyAgICAgICAgZXJyb3Jw
cm9uZV9hcmdzICs9IFsKICAgICAgICAgICAiLVhlcDpQYXJhbWV0ZXJOb3ROdWxsYWJsZTpFUlJP
UiIsCiAgICAgICAgICAgIi1YZXA6RmllbGRNaXNzaW5nTnVsbGFibGU6RVJST1IiLAogICAgICAg
ICAgICItWGVwOlJldHVybk1pc3NpbmdOdWxsYWJsZTpFUlJPUiIsCkBAIC04NDEsMTEgKzg4NCwx
MSBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQog
CiAgICAgICAjIFRyZWF0IHdhcm5pbmdzIGFzIGVycm9ycy4KLSAgICAgIGphdmFjX2FyZ3MgPSBb
ICItV2Vycm9yIiBdCisgICAgICBlcnJvcnByb25lX2FyZ3MgPSBbICItV2Vycm9yIiBdCiAKICAg
ICAgICMgVE9ETyhjcmJ1Zy5jb20vODI0Njc5KTogRmluZCBvdXQgd2h5IHRoaXMgZmFpbHMgaW4g
Q2hyb21pdW0KICAgICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewotICAgICAgICBqYXZh
Y19hcmdzICs9IFsKKyAgICAgICAgZXJyb3Jwcm9uZV9hcmdzICs9IFsKICAgICAgICAgICAiLVhl
cDpQYXJhbWV0ZXJOb3ROdWxsYWJsZTpFUlJPUiIsCiAgICAgICAgICAgIi1YZXA6RmllbGRNaXNz
aW5nTnVsbGFibGU6RVJST1IiLAogICAgICAgICAgICItWGVwOlJldHVybk1pc3NpbmdOdWxsYWJs
ZTpFUlJPUiIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvV2ViS2l0
LzAwMDEtbGlid2VicnRjLWNoYW5nZXMucGF0Y2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvV2ViS2l0LzAwMDEtbGlid2VicnRjLWNoYW5nZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZiMDEzNGJiMmQxYTBmMDQ0NjE2NzhlMWY0YmQ1OGJkNzRmYWVmZDIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1dlYktpdC8wMDAxLWxpYndlYnJ0Yy1jaGFuZ2VzLnBhdGNoCisrKyAv
ZGV2L251bGwKQEAgLTEsMjA4MiArMCwwIEBACi1Gcm9tIDM4YTgzODI4NDU1MjcxMWQ2MjI4ZGI5
YmFiMmRlYzcyODQwMjA5OGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZb3Vlbm4g
RmFibGV0IDx5b3Vlbm5AYXBwbGUuY29tPgotRGF0ZTogTW9uLCA4IE9jdCAyMDE4IDEwOjM4OjEy
IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBsaWJ3ZWJydGMgY2hhbmdlcwotCi0tLS0KLSAu
Li4vYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjICAgfCAgIDIgKy0KLSAu
Li4vbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhdHlwZXMuY2MgfCAgIDQgKy0KLSAu
Li4vU291cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYyAgICAgfCAgIDQgKy0KLSAu
Li4vU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MgICAgfCAgIDQgKy0KLSAu
Li4vd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZV9idWZmZXIuY2MgfCAgIDIgKy0KLSAu
Li4vbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuY2MgfCAgIDQgKy0KLSAu
Li4vY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5jYyAgICAgICAgICAgfCAgIDIgKy0KLSAu
Li4vY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjICAgICAgICAgfCAgIDQgKy0KLSAu
Li4vbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmNjICAgICAgICAgICAgfCAgIDIgKy0KLSAu
Li4vU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjICAgICAgICAgfCAgMTAgKwotIC4u
Li9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXIuaCB8ICAgMiArLQotIC4u
Li9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyB8ICAgNCArLQotIC4u
Li93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb24uY2MgICAgICB8ICAgMiArLQotIC4u
Li9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaCB8ICAgNiArLQotIC4u
Li9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYyB8ICAgNiArLQotIC4u
Li9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmggICAgICAgICB8ICAgMiArLQotIC4u
Li9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmcuY2MgICAgICAgICB8ICA1NCArKy0KLSAu
Li4vd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfdW5pdHRlc3QuY2MgICAgICAgfCAgIDIgKy0KLSAu
Li4vU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZlcl9kZXN0cm95ZWQuaCAgfCAgNjkgKysrKwot
IC4uLi9ydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmggICAgICB8ICAgNCArLQot
IC4uLi93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjICAgICB8ICAgOCArLQot
IC4uLi9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2l6ZV9tYWNyb3MuaCB8ICAgNCArLQot
IC4uLi93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYyAgICB8ICAgMyArLQot
IC4uLi9QZWVyQ29ubmVjdGlvbi9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0gICB8ICA1OCArKysK
LSAuLi4vcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0gfCAgIDQgKy0K
LSAuLi4vcGVlcmNvbm5lY3Rpb24vUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmggfCAgIDEgKwot
IC4uLi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLmggICAgICAgICB8ICAgNyArCi0g
Li4uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUubW0gICAgICAgIHwgIDUyICsrLQot
IC4uLi9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbSB8ICAgNCArLQot
IC4uLi9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaCB8ICAgMSArCi0g
Li4uL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0gICAgICAgICAgIHwgICA1ICsKLSAu
Li4vdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIuaCAgfCAgIDEgKwotIC4u
Li9SVENOYXRpdmVNdXRhYmxlSTQyMEJ1ZmZlci5oICAgICAgICAgICAgICB8ICAgMSArCi0gLi4u
L3Nkay9vYmpjL2Jhc2UvUlRDQ29kZWNTcGVjaWZpY0luZm8uaCAgICAgIHwgICAxICsKLSAuLi4v
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLmggICAgfCAgIDIgKwotIC4uLi93
ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UubSAgICB8ICAgMSArCi0gLi4uL3dl
YnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0k0MjBCdWZmZXIuaCAgICAgIHwgICAxICsKLSAuLi4vc2Rr
L29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLmggfCAgIDEgKwotIC4uLi9zZGsv
b2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubSB8ICAgMyArLQotIC4uLi93ZWJy
dGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0NvZGVjSW5mby5oICB8ICAgMSArCi0gLi4uL3dlYnJ0
Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2Rlci5oICAgIHwgICAxICsKLSAuLi4vc2RrL29i
amMvYmFzZS9SVENWaWRlb0RlY29kZXJGYWN0b3J5LmggICAgfCAgIDEgKwotIC4uLi93ZWJydGMv
c2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaCAgICB8ICAgOCArLQotIC4uLi9zZGsvb2Jq
Yy9iYXNlL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnkuaCAgICB8ICAgMSArCi0gLi4uL29iamMvYmFz
ZS9SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaCAgIHwgICAxICsKLSAuLi4vc2RrL29iamMv
YmFzZS9SVENWaWRlb0VuY29kZXJTZXR0aW5ncy5oICAgfCAgIDYgKwotIC4uLi93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENWaWRlb0ZyYW1lLmggICAgICB8ICAgMSArCi0gLi4uL3Nkay9vYmpjL2Jh
c2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oICAgICAgIHwgICAxICsKLSAuLi4vdmlkZW9fY29kZWMv
UlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0LmggICAgfCAgIDMgKy0KLSAuLi4vUlRDRGVmYXVsdFZp
ZGVvRGVjb2RlckZhY3RvcnkuaCAgICAgICAgICAgfCAgIDEgKwotIC4uLi9SVENEZWZhdWx0Vmlk
ZW9FbmNvZGVyRmFjdG9yeS5oICAgICAgICAgICB8ICAgMSArCi0gLi4uL3ZpZGVvX2NvZGVjL1JU
Q0gyNjRQcm9maWxlTGV2ZWxJZC5oICAgICAgIHwgICAxICsKLSAuLi4vdmlkZW9fY29kZWMvUlRD
SDI2NFByb2ZpbGVMZXZlbElkLm1tICAgICAgfCAgMTYgKy0KLSAuLi4vdmlkZW9fY29kZWMvUlRD
VmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQuaCAgfCAgIDEgKwotIC4uLi92aWRlb19jb2RlYy9SVENW
aWRlb0RlY29kZXJIMjY0LmggICAgICAgICB8ICAgMSArCi0gLi4uL3ZpZGVvX2NvZGVjL1JUQ1Zp
ZGVvRW5jb2RlckZhY3RvcnlIMjY0LmggIHwgICAxICsKLSAuLi4vdmlkZW9fY29kZWMvUlRDVmlk
ZW9FbmNvZGVySDI2NC5oICAgICAgICAgfCAgIDEgKwotIC4uLi92aWRlb19jb2RlYy9SVENWaWRl
b0VuY29kZXJIMjY0Lm1tICAgICAgICB8IDM4MiArKysrKysrKysrKysrKy0tLS0KLSAuLi4vb2Jq
Yy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuY2MgICAgfCAgMTYgKy0KLSAuLi4vc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmggfCAgMTAgKy0KLSAuLi4vdmlk
ZW9fZnJhbWVfYnVmZmVyL1JUQ0NWUGl4ZWxCdWZmZXIuaCAgICAgfCAgIDEgKwotIC4uLi9uYXRp
dmUvc3JjL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tICB8ICAgNiArCi0gNjIgZmlsZXMg
Y2hhbmdlZCwgNjM3IGluc2VydGlvbnMoKyksIDE3MiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbmV2ZXJfZGVzdHJveWVkLmgKLSBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0NsYXNzZXMvUGVl
ckNvbm5lY3Rpb24vUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tCi0KLWRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2ls
YmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYwot
aW5kZXggZWZjZWYzODJmZjcuLjJhZTc1NDc0Y2NkIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlv
X2VuY29kZXJfaWxiYy5jYwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYwotQEAg
LTMzLDcgKzMzLDcgQEAgaW50IEdldElsYmNCaXRyYXRlKGludCBwdGltZSkgewotICAgICAgIC8v
IDUwIGJ5dGVzIHBlciBmcmFtZSBvZiAzMCBtcyA9PiAoYXBwcm94KSAxMzMzMyBiaXRzL3MuCi0g
ICAgICAgcmV0dXJuIDEzMzMzOwotICAgICBkZWZhdWx0OgotLSAgICAgIEZBVEFMKCk7Ci0rICAg
ICAgUlRDX0ZBVEFMKCk7Ci0gICB9Ci0gfQotIH0gIC8vIG5hbWVzcGFjZQotZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXR5cGVz
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlh
dHlwZXMuY2MKLWluZGV4IDU5OTU0MmRiMDhmLi4xNDBkMGFlOTYyNSAxMDA2NDQKLS0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXR5cGVzLmNj
Ci0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVk
aWF0eXBlcy5jYwotQEAgLTI4LDcgKzI4LDcgQEAgc3RkOjpzdHJpbmcgTWVkaWFUeXBlVG9TdHJp
bmcoTWVkaWFUeXBlIHR5cGUpIHsKLSAgICAgY2FzZSBNRURJQV9UWVBFX0RBVEE6Ci0gICAgICAg
cmV0dXJuIGtNZWRpYVR5cGVEYXRhOwotICAgfQotLSAgRkFUQUwoKTsKLSsgIFJUQ19GQVRBTCgp
OwotICAgLy8gTm90IHJlYWNoYWJsZTsgYXZvaWRzIGNvbXBpbGUgd2FybmluZy4KLSAgIHJldHVy
biAiIjsKLSB9Ci1AQCAtNDEsNyArNDEsNyBAQCBNZWRpYVR5cGUgTWVkaWFUeXBlRnJvbVN0cmlu
Zyhjb25zdCBzdGQ6OnN0cmluZyYgdHlwZV9zdHIpIHsKLSAgIH0gZWxzZSBpZiAodHlwZV9zdHIg
PT0ga01lZGlhVHlwZURhdGEpIHsKLSAgICAgcmV0dXJuIE1FRElBX1RZUEVfREFUQTsKLSAgIH0K
LS0gIEZBVEFMKCk7Ci0rICBSVENfRkFUQUwoKTsKLSAgIC8vIE5vdCByZWFjaGFibGU7IGF2b2lk
cyBjb21waWxlIHdhcm5pbmcuCi0gICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFUeXBlPigtMSk7
Ci0gfQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2F1ZGlvL3JlbWl4X3Jlc2FtcGxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MKLWluZGV4IGVkYTcwYzdjMzc4
Li45NzIyMmU5NDdhNCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4X3Jlc2FtcGxlLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYwotQEAg
LTU4LDcgKzU4LDcgQEAgdm9pZCBSZW1peEFuZFJlc2FtcGxlKGNvbnN0IGludDE2X3QqIHNyY19k
YXRhLAotIAotICAgaWYgKHJlc2FtcGxlci0+SW5pdGlhbGl6ZUlmTmVlZGVkKHNhbXBsZV9yYXRl
X2h6LCBkc3RfZnJhbWUtPnNhbXBsZV9yYXRlX2h6XywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdWRpb19wdHJfbnVtX2NoYW5uZWxzKSA9PSAtMSkgewotLSAgICBGQVRB
TCgpIDw8ICJJbml0aWFsaXplSWZOZWVkZWQgZmFpbGVkOiBzYW1wbGVfcmF0ZV9oeiA9ICIgPDwg
c2FtcGxlX3JhdGVfaHoKLSsgICAgUlRDX0ZBVEFMKCkgPDwgIkluaXRpYWxpemVJZk5lZWRlZCBm
YWlsZWQ6IHNhbXBsZV9yYXRlX2h6ID0gIiA8PCBzYW1wbGVfcmF0ZV9oegotICAgICAgICAgICAg
IDw8ICIsIGRzdF9mcmFtZS0+c2FtcGxlX3JhdGVfaHpfID0gIiA8PCBkc3RfZnJhbWUtPnNhbXBs
ZV9yYXRlX2h6XwotICAgICAgICAgICAgIDw8ICIsIGF1ZGlvX3B0cl9udW1fY2hhbm5lbHMgPSAi
IDw8IGF1ZGlvX3B0cl9udW1fY2hhbm5lbHM7Ci0gICB9Ci1AQCAtNzIsNyArNzIsNyBAQCB2b2lk
IFJlbWl4QW5kUmVzYW1wbGUoY29uc3QgaW50MTZfdCogc3JjX2RhdGEsCi0gICAgICAgcmVzYW1w
bGVyLT5SZXNhbXBsZShhdWRpb19wdHIsIHNyY19sZW5ndGgsIGRzdF9mcmFtZS0+bXV0YWJsZV9k
YXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0ZyYW1lOjprTWF4RGF0YVNp
emVTYW1wbGVzKTsKLSAgIGlmIChvdXRfbGVuZ3RoID09IC0xKSB7Ci0tICAgIEZBVEFMKCkgPDwg
IlJlc2FtcGxlIGZhaWxlZDogYXVkaW9fcHRyID0gIiA8PCBhdWRpb19wdHIKLSsgICAgUlRDX0ZB
VEFMKCkgPDwgIlJlc2FtcGxlIGZhaWxlZDogYXVkaW9fcHRyID0gIiA8PCBhdWRpb19wdHIKLSAg
ICAgICAgICAgICA8PCAiLCBzcmNfbGVuZ3RoID0gIiA8PCBzcmNfbGVuZ3RoCi0gICAgICAgICAg
ICAgPDwgIiwgZHN0X2ZyYW1lLT5tdXRhYmxlX2RhdGEoKSA9ICIgPDwgZHN0X2ZyYW1lLT5tdXRh
YmxlX2RhdGEoKTsKLSAgIH0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKLWlu
ZGV4IDAwODg5MWY5Y2ZiLi4wMjA5ZjUyZDJjNyAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5jYwotKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlv
L3dhdl9maWxlLmNjCi1AQCAtNTMsNyArNTMsNyBAQCBXYXZSZWFkZXI6OldhdlJlYWRlcihydGM6
OlBsYXRmb3JtRmlsZSBmaWxlKSB7Ci0gICAgIGlmICghcnRjOjpDbG9zZVBsYXRmb3JtRmlsZShm
aWxlKSkgewotICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBjbG9zZSBmaWxlLiI7
Ci0gICAgIH0KLS0gICAgRkFUQUwoKSA8PCAiQ291bGQgbm90IG9wZW4gd2F2IGZpbGUgZm9yIHJl
YWRpbmcuIjsKLSsgICAgUlRDX0ZBVEFMKCkgPDwgIkNvdWxkIG5vdCBvcGVuIHdhdiBmaWxlIGZv
ciByZWFkaW5nLiI7Ci0gICB9Ci0gCi0gICBSZWFkYWJsZVdhdkZpbGUgcmVhZGFibGUoZmlsZV9o
YW5kbGVfKTsKLUBAIC0xMzgsNyArMTM4LDcgQEAgV2F2V3JpdGVyOjpXYXZXcml0ZXIocnRjOjpQ
bGF0Zm9ybUZpbGUgZmlsZSwKLSAgICAgaWYgKCFydGM6OkNsb3NlUGxhdGZvcm1GaWxlKGZpbGUp
KSB7Ci0gICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbid0IGNsb3NlIGZpbGUuIjsKLSAg
ICAgfQotLSAgICBGQVRBTCgpIDw8ICJDb3VsZCBub3Qgb3BlbiB3YXYgZmlsZSBmb3Igd3JpdGlu
Zy4iOwotKyAgICBSVENfRkFUQUwoKSA8PCAiQ291bGQgbm90IG9wZW4gd2F2IGZpbGUgZm9yIHdy
aXRpbmcuIjsKLSAgIH0KLSAKLSAgIFJUQ19DSEVDSyhDaGVja1dhdlBhcmFtZXRlcnMobnVtX2No
YW5uZWxzXywgc2FtcGxlX3JhdGVfLCBrV2F2Rm9ybWF0LAotZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFt
ZV9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjCi1pbmRleCAyY2QwYjI5MGYxNS4uYmUw
YjQ5MjdiYmUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjCi0rKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJh
bWVfYnVmZmVyLmNjCi1AQCAtMzIzLDcgKzMyMyw3IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjxQbGFu
YXJZdXZCdWZmZXI+IFdyYXBZdXZCdWZmZXIoCi0gICAgICAgcmV0dXJuIFdyYXBJNDQ0QnVmZmVy
KHdpZHRoLCBoZWlnaHQsIHlfcGxhbmUsIHlfc3RyaWRlLCB1X3BsYW5lLCB1X3N0cmlkZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdl9wbGFuZSwgdl9zdHJpZGUsIG5vX2xvbmdlcl91
c2VkKTsKLSAgICAgZGVmYXVsdDoKLS0gICAgICBGQVRBTCgpIDw8ICJVbmV4cGVjdGVkIGZyYW1l
IGJ1ZmZlciB0eXBlLiI7Ci0rICAgICAgUlRDX0ZBVEFMKCkgPDwgIlVuZXhwZWN0ZWQgZnJhbWUg
YnVmZmVyIHR5cGUuIjsKLSAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgIH0KLSB9Ci1kaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2Rl
Yy5jYwotaW5kZXggMGE5Y2UxMTdlMmIuLjQ1ZDc4ZDc0YTVkIDEwMDY0NAotLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
YWNtMi9yZW50X2FfY29kZWMuY2MKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmNjCi1A
QCAtMjExLDcgKzIxMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IENyZWF0ZUNu
Z0VuY29kZXIoCi0gICAgICAgY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkVmVyeUFnZ3Jlc3Np
dmU7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0tICAgICAgRkFUQUwoKTsKLSsgICAg
ICBSVENfRkFUQUwoKTsKLSAgIH0KLSAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNv
ZGVyPihuZXcgQXVkaW9FbmNvZGVyQ25nKHN0ZDo6bW92ZShjb25maWcpKSk7Ci0gfQotQEAgLTIy
Niw3ICsyMjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPiBDcmVhdGVJc2FjRGVj
b2RlcigKLSAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPigKLSAgICAgICBu
ZXcgQXVkaW9EZWNvZGVySXNhY0Zsb2F0SW1wbChzYW1wbGVfcmF0ZV9oeiwgYndpbmZvKSk7Ci0g
I2Vsc2UKLS0gIEZBVEFMKCkgPDwgImlTQUMgaXMgbm90IHN1cHBvcnRlZC4iOwotKyAgUlRDX0ZB
VEFMKCkgPDwgImlTQUMgaXMgbm90IHN1cHBvcnRlZC4iOwotICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0RlY29kZXI+KCk7Ci0gI2VuZGlmCi0gfQotZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2Vu
Y29kZXJfY25nLmNjCi1pbmRleCA0Y2RhMzQwMWZhMi4uMDU1MTkwNDk3YTUgMTAwNjQ0Ci0tLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjCi0rKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjCi1AQCAtMTM5LDcgKzEzOSw3IEBAIEF1ZGlvRW5j
b2Rlcjo6RW5jb2RlZEluZm8gQXVkaW9FbmNvZGVyQ25nOjpFbmNvZGVJbXBsKAotICAgICAgIGJy
ZWFrOwotICAgICB9Ci0gICAgIGNhc2UgVmFkOjprRXJyb3I6IHsKLS0gICAgICBGQVRBTCgpOyAg
Ly8gRmFpbHMgb25seSBpZiBmZWQgaW52YWxpZCBkYXRhLgotKyAgICAgIFJUQ19GQVRBTCgpOyAg
Ly8gRmFpbHMgb25seSBpZiBmZWQgaW52YWxpZCBkYXRhLgotICAgICAgIGJyZWFrOwotICAgICB9
Ci0gICB9Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJj
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCi1pbmRleCA4NDY5
NWUzNzYzMC4uZGFlOTU2YjMwYzAgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRp
b19lbmNvZGVyX2lsYmMuY2MKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJf
aWxiYy5jYwotQEAgLTQwLDcgKzQwLDcgQEAgaW50IEdldElsYmNCaXRyYXRlKGludCBwdGltZSkg
ewotICAgICAgIC8vIDUwIGJ5dGVzIHBlciBmcmFtZSBvZiAzMCBtcyA9PiAoYXBwcm94KSAxMzMz
MyBiaXRzL3MuCi0gICAgICAgcmV0dXJuIDEzMzMzOwotICAgICBkZWZhdWx0OgotLSAgICAgIEZB
VEFMKCk7Ci0rICAgICAgUlRDX0ZBVEFMKCk7Ci0gICB9Ci0gfQotIAotQEAgLTE0Nyw3ICsxNDcs
NyBAQCBzaXplX3QgQXVkaW9FbmNvZGVySWxiY0ltcGw6OlJlcXVpcmVkT3V0cHV0U2l6ZUJ5dGVz
KCkgY29uc3QgewotICAgICBjYXNlIDY6Ci0gICAgICAgcmV0dXJuIDIgKiA1MDsKLSAgICAgZGVm
YXVsdDoKLS0gICAgICBGQVRBTCgpOwotKyAgICAgIFJUQ19GQVRBTCgpOwotICAgfQotIH0KLSAK
LWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2UuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2UuY2MKLWluZGV4IDgwNmJiYTdhOWZlLi43YmY3
ZDUyMDgzYyAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJjZS5j
YwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmNjCi1AQCAtODksNyAr
ODksNyBAQCBib29sIFJ0cEZpbGVTb3VyY2U6Ok9wZW5GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBm
aWxlX25hbWUpIHsKLSAgICAgcmV0dXJuIHRydWU7Ci0gICBydHBfcmVhZGVyXy5yZXNldChSdHBG
aWxlUmVhZGVyOjpDcmVhdGUoUnRwRmlsZVJlYWRlcjo6a1BjYXAsIGZpbGVfbmFtZSkpOwotICAg
aWYgKCFydHBfcmVhZGVyXykgewotLSAgICBGQVRBTCgpIDw8ICJDb3VsZG4ndCBvcGVuIGlucHV0
IGZpbGUgYXMgZWl0aGVyIGEgcnRwZHVtcCBvciAucGNhcC4gTm90ZSAiCi0rICAgIFJUQ19GQVRB
TCgpIDw8ICJDb3VsZG4ndCBvcGVuIGlucHV0IGZpbGUgYXMgZWl0aGVyIGEgcnRwZHVtcCBvciAu
cGNhcC4gTm90ZSAiCi0gICAgICAgICAgICAgICAgInRoYXQgLnBjYXBuZyBpcyBub3Qgc3VwcG9y
dGVkLiI7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYwot
aW5kZXggZDA3MGY2ZWNlZTguLmM2NmM3MzA3Mzc1IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYwotKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9y
dC5jYwotQEAgLTM1MSwxMSArMzUxLDIxIEBAIFRDUENvbm5lY3Rpb246OlRDUENvbm5lY3Rpb24o
VENQUG9ydCogcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBwb3J0KCkgTmV0
d29yazoiIDw8IHBvcnQtPk5ldHdvcmsoKS0+VG9TdHJpbmcoKTsKLSAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8cnRjOjpJbnRlcmZhY2VBZGRyZXNzPiYgZGVzaXJlZF9hZGRyZXNzZXMgPQotICAgICAg
ICAgcG9ydF8tPk5ldHdvcmsoKS0+R2V0SVBzKCk7Ci0rCi0rI2lmIGRlZmluZWQoV0VCUlRDX1dF
QktJVF9CVUlMRCkKLSsgICAgIFJUQ19EQ0hFQ0soc29ja2V0LT5HZXRMb2NhbEFkZHJlc3MoKS5J
c0xvb3BiYWNrSVAoKSB8fAotKyAgICAgICAgICAgICAgICAoc3RkOjpmaW5kX2lmKGRlc2lyZWRf
YWRkcmVzc2VzLmJlZ2luKCksIGRlc2lyZWRfYWRkcmVzc2VzLmVuZCgpLAotKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW3RoaXNdKGNvbnN0IHJ0Yzo6SW50ZXJmYWNlQWRkcmVzcyYgYWRk
cikgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc29ja2V0Xy0+R2V0
TG9jYWxBZGRyZXNzKCkuaXBhZGRyKCkgPT0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZHI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAhPSBkZXNp
cmVkX2FkZHJlc3Nlcy5lbmQoKSkpOwotKyAjZWxzZQotICAgICBSVENfRENIRUNLKHN0ZDo6Zmlu
ZF9pZihkZXNpcmVkX2FkZHJlc3Nlcy5iZWdpbigpLCBkZXNpcmVkX2FkZHJlc3Nlcy5lbmQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXNdKGNvbnN0IHJ0Yzo6SW50ZXJmYWNl
QWRkcmVzcyYgYWRkcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBz
b2NrZXRfLT5HZXRMb2NhbEFkZHJlc3MoKS5pcGFkZHIoKSA9PQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KSAhPSBkZXNpcmVkX2FkZHJlc3Nlcy5lbmQoKSk7Ci0rI2VuZGlmCi0gICAgIENvbm5lY3RTb2Nr
ZXRTaWduYWxzKHNvY2tldCk7Ci0gICB9Ci0gfQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZpbHRlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVyLmgKLWluZGV4
IDdkZWNiYmE4YTRmLi5kZTQ3N2Y0NTdmMiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZpbHRlci5oCi0rKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXIuaAotQEAg
LTE3LDcgKzE3LDcgQEAKLSAjaW5jbHVkZSA8dmVjdG9yPgotIAotICNpbmNsdWRlICJtZWRpYS9i
YXNlL3N0cmVhbXBhcmFtcy5oIgotLSNpbmNsdWRlICJydGNfYmFzZS9iYXNpY3R5cGVzLmgiCi0r
Ly8jaW5jbHVkZSAicnRjX2Jhc2UvYmFzaWN0eXBlcy5oIgotIAotIG5hbWVzcGFjZSBjcmlja2V0
IHsKLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MKLWluZGV4IGI3
OGVkOGRiMWVlLi41M2Y0ZGE4NTE2ZSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYwotKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b25mYWN0b3J5LmNjCi1AQCAtMjU3LDcgKzI1Nyw3IEBAIFJ0cENhcGFiaWxpdGllcyBQZWVyQ29u
bmVjdGlvbkZhY3Rvcnk6OkdldFJ0cFNlbmRlckNhcGFiaWxpdGllcygKLSAgICAgICByZXR1cm4g
UnRwQ2FwYWJpbGl0aWVzKCk7Ci0gICB9Ci0gICAvLyBOb3QgcmVhY2hlZDsgYXZvaWRzIGNvbXBp
bGUgd2FybmluZy4KLS0gIEZBVEFMKCk7Ci0rICBSVENfRkFUQUwoKTsKLSB9Ci0gCi0gUnRwQ2Fw
YWJpbGl0aWVzIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6R2V0UnRwUmVjZWl2ZXJDYXBhYmlsaXRp
ZXMoCi1AQCAtMjg0LDcgKzI4NCw3IEBAIFJ0cENhcGFiaWxpdGllcyBQZWVyQ29ubmVjdGlvbkZh
Y3Rvcnk6OkdldFJ0cFJlY2VpdmVyQ2FwYWJpbGl0aWVzKAotICAgICAgIHJldHVybiBSdHBDYXBh
YmlsaXRpZXMoKTsKLSAgIH0KLSAgIC8vIE5vdCByZWFjaGVkOyBhdm9pZHMgY29tcGlsZSB3YXJu
aW5nLgotLSAgRkFUQUwoKTsKLSsgIFJUQ19GQVRBTCgpOwotIH0KLSAKLSBydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9Tb3VyY2VJbnRlcmZhY2U+Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb24uY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJhbWV0
ZXJzY29udmVyc2lvbi5jYwotaW5kZXggYTU3MDY2ZTRkYjAuLmU1MTliOWIwNmRlIDEwMDY0NAot
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFy
YW1ldGVyc2NvbnZlcnNpb24uY2MKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNjCi1AQCAtNjEsNyArNjEs
NyBAQCBSVENFcnJvck9yPGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0+IFRvQ3JpY2tldEZlZWRiYWNr
UGFyYW0oCi0gICAgICAgcmV0dXJuIGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0oY3JpY2tldDo6a1J0
Y3BGYlBhcmFtVHJhbnNwb3J0Q2MpOwotICAgfQotICAgLy8gTm90IHJlYWNoZWQ7IGF2b2lkcyBj
b21waWxlIHdhcm5pbmcuCi0tICBGQVRBTCgpOwotKyAgUlRDX0ZBVEFMKCk7Ci0gfQotIAotIHRl
bXBsYXRlIDx0eXBlbmFtZSBDPgotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NoZWNrcy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgKLWluZGV4IDlkZTZkNDc1
NzNjLi41Y2YwNjc5OTEwZSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NoZWNrcy5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaAotQEAgLTgwLDcgKzgw
LDcgQEAgUlRDX05PUkVUVVJOIHZvaWQgcnRjX0ZhdGFsTWVzc2FnZShjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgY29uc3QgY2hhciogbXNnKTsKLSAvLyAgIG1lc3NhZ2VzIGlmIHRoZSBjb25k
aXRpb24gZG9lc24ndCBob2xkLiBQcmVmZXIgdGhlbSB0byByYXcgUlRDX0NIRUNLIGFuZAotIC8v
ICAgUlRDX0RDSEVDSy4KLSAvLwotLS8vIC0gRkFUQUwoKSBhYm9ydHMgdW5jb25kaXRpb25hbGx5
LgotKy8vIC0gUlRDX0ZBVEFMKCkgYWJvcnRzIHVuY29uZGl0aW9uYWxseS4KLSAvLwotIC8vIFRP
RE8oYWptKTogSWRlYWxseSwgY2hlY2tzLmggd291bGQgYmUgY29tYmluZWQgd2l0aCBsb2dnaW5n
LmgsIGJ1dAotIC8vIGNvbnNvbGlkYXRpb24gd2l0aCBzeXN0ZW1fd3JhcHBlcnMvbG9nZ2luZy5o
IHNob3VsZCBoYXBwZW4gZmlyc3QuCi1AQCAtMzQ4LDkgKzM0OCw5IEBAIGNsYXNzIEZhdGFsTG9n
Q2FsbCBmaW5hbCB7Ci0gI2RlZmluZSBSVENfTk9UUkVBQ0hFRCgpIFJUQ19EQ0hFQ0soUlRDX1VO
UkVBQ0hBQkxFX0NPREVfSElUKQotIAotIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzg0NTQpOiBB
ZGQgYW4gUlRDXyBwcmVmaXggb3IgcmVuYW1lIGRpZmZlcmVudGx5LgotLSNkZWZpbmUgRkFUQUwo
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r
I2RlZmluZSBSVENfRkFUQUwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICBydGM6OndlYnJ0Y19jaGVja3NfaW1wbDo6RmF0YWxMb2dDYWxs
PGZhbHNlPihfX0ZJTEVfXywgX19MSU5FX18sIFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJGQVRBTCgpIikgJiAgICAgICAgXAotKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJUQ19GQVRBTCgpIikgJiAgICAg
ICAgXAotICAgICAgIHJ0Yzo6d2VicnRjX2NoZWNrc19pbXBsOjpMb2dTdHJlYW1lcjw+KCkKLSAK
LSAvLyBQZXJmb3JtcyB0aGUgaW50ZWdlciBkaXZpc2lvbiBhL2IgYW5kIHJldHVybnMgdGhlIHJl
c3VsdC4gQ0hFQ0tzIHRoYXQgdGhlCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYwotaW5kZXggNWIyODc5
NGY2Y2EuLjRmMjk0NTk0YmQ0IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MKLSsrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjCi1AQCAtODAsNyAr
ODAsNyBAQCB2b2lkIEZsYWc6OlNldFRvRGVmYXVsdCgpIHsKLSAgICAgICB2YXJpYWJsZV8tPnMg
PSBkZWZhdWx0Xy5zOwotICAgICAgIHJldHVybjsKLSAgIH0KLS0gIEZBVEFMKCkgPDwgInVucmVh
Y2hhYmxlIGNvZGUiOwotKyAgUlRDX0ZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotIH0K
LSAKLSBzdGF0aWMgY29uc3QgY2hhciogVHlwZTJTdHJpbmcoRmxhZzo6VHlwZSB0eXBlKSB7Ci1A
QCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogVHlwZTJTdHJpbmcoRmxhZzo6VHlw
ZSB0eXBlKSB7Ci0gICAgIGNhc2UgRmxhZzo6U1RSSU5HOgotICAgICAgIHJldHVybiAic3RyaW5n
IjsKLSAgIH0KLS0gIEZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotKyAgUlRDX0ZBVEFM
KCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBQcmludEZsYWdW
YWx1ZShGbGFnOjpUeXBlIHR5cGUsIEZsYWdWYWx1ZSogcCkgewotQEAgLTExMiw3ICsxMTIsNyBA
QCBzdGF0aWMgdm9pZCBQcmludEZsYWdWYWx1ZShGbGFnOjpUeXBlIHR5cGUsIEZsYWdWYWx1ZSog
cCkgewotICAgICAgIHByaW50ZigiJXMiLCBwLT5zKTsKLSAgICAgICByZXR1cm47Ci0gICB9Ci0t
ICBGQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSsgIFJUQ19GQVRBTCgpIDw8ICJ1bnJl
YWNoYWJsZSBjb2RlIjsKLSB9Ci0gCi0gdm9pZCBGbGFnOjpQcmludChib29sIHByaW50X2N1cnJl
bnRfdmFsdWUpIHsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaAotaW5kZXggNTEzYmMyNjM2NTEu
LjcxOGQ5NTg5MzQ4IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaAotQEAgLTUwLDcgKzUw
LDcgQEAgY2xhc3MgTG9jYXRpb24gewotICNkZWZpbmUgUlRDX0ZST01fSEVSRSBSVENfRlJPTV9I
RVJFX1dJVEhfRlVOQ1RJT04oX19GVU5DVElPTl9fKQotIAotICNkZWZpbmUgUlRDX0ZST01fSEVS
RV9XSVRIX0ZVTkNUSU9OKGZ1bmN0aW9uX25hbWUpIFwKLS0gIDo6cnRjOjpMb2NhdGlvbihmdW5j
dGlvbl9uYW1lLCBfX0ZJTEVfXyAiOiIgU1RSSU5HSVpFKF9fTElORV9fKSkKLSsgIDo6cnRjOjpM
b2NhdGlvbihmdW5jdGlvbl9uYW1lLCBfX0ZJTEVfXyAiOiIgUlRDX1NUUklOR0laRShfX0xJTkVf
XykpCi0gCi0gfSAgLy8gbmFtZXNwYWNlIHJ0YwotIAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmcuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmNj
Ci1pbmRleCAxMjlhODk3NDM5Ny4uNTg0NTZjNTk5ZWMgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmNjCi0rKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dn
aW5nLmNjCi1AQCAtMzYsNiArMzYsNyBAQCBzdGF0aWMgY29uc3QgaW50IGtNYXhMb2dMaW5lU2l6
ZSA9IDEwMjQgLSA2MDsKLSAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCi0g
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZv
cm1fdGhyZWFkX3R5cGVzLmgiCi0rI2luY2x1ZGUgInJ0Y19iYXNlL25ldmVyX2Rlc3Ryb3llZC5o
IgotICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKLSAjaW5jbHVkZSAicnRjX2Jh
c2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgotICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1
dGlscy5oIgotQEAgLTYyLDggKzYzLDEyIEBAIGNvbnN0IGNoYXIqIEZpbGVuYW1lRnJvbVBhdGgo
Y29uc3QgY2hhciogZmlsZSkgewotICAgICByZXR1cm4gKGVuZDEgPiBlbmQyKSA/IGVuZDEgKyAx
IDogZW5kMiArIDE7Ci0gfQotIAotLS8vIEdsb2JhbCBsb2NrIGZvciBsb2cgc3Vic3lzdGVtLCBv
bmx5IG5lZWRlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHN0cmVhbXNfLgotLUNyaXRpY2FsU2Vj
dGlvbiBnX2xvZ19jcml0OwotKy8vIEdsb2JhbCBsb2NrIGZvciBsb2cgc3Vic3lzdGVtLCBvbmx5
IG5lZWRlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHN0cmVhbUxpc3QoKS4KLStDcml0aWNhbFNl
Y3Rpb24mIGxvZ0NyaXRpY2FsU2NvcGUoKSB7Ci0rICBzdGF0aWMgYXV0byBzY29wZSA9IG1ha2VO
ZXZlckRlc3Ryb3llZDw+KENyaXRpY2FsU2VjdGlvbiB7IH0pOwotKyAgcmV0dXJuIHNjb3BlLmdl
dCgpOwotK30KLSsKLSB9ICAvLyBuYW1lc3BhY2UKLSAKLSAvLyBJbmVmZmljaWVudCBkZWZhdWx0
IGltcGxlbWVudGF0aW9uLCBvdmVycmlkZSBpcyByZWNvbW1lbmRlZC4KLUBAIC04Myw3ICs4OCwx
NSBAQCBib29sIExvZ01lc3NhZ2U6OmxvZ190b19zdGRlcnJfID0gdHJ1ZTsKLSAvLyBOb3RlOiB3
ZSBleHBsaWNpdGx5IGRvIG5vdCBjbGVhbiB0aGlzIHVwLCBiZWNhdXNlIG9mIHRoZSB1bmNlcnRh
aW4gb3JkZXJpbmcKLSAvLyBvZiBkZXN0cnVjdG9ycyBhdCBwcm9ncmFtIGV4aXQuICBMZXQgdGhl
IHBlcnNvbiB3aG8gc2V0cyB0aGUgc3RyZWFtIHRyaWdnZXIKLSAvLyBjbGVhbnVwIGJ5IHNldHRp
bmcgdG8gbnVsbCwgb3IgbGV0IGl0IGxlYWsgKHNhZmUgYXQgcHJvZ3JhbSBleGl0KS4KLS1Mb2dN
ZXNzYWdlOjpTdHJlYW1MaXN0IExvZ01lc3NhZ2U6OnN0cmVhbXNfIFJUQ19HVUFSREVEX0JZKGdf
bG9nX2NyaXQpOwotK3R5cGVkZWYgc3RkOjpwYWlyPExvZ1NpbmsqLCBMb2dnaW5nU2V2ZXJpdHk+
IFN0cmVhbUFuZFNldmVyaXR5OwotK3R5cGVkZWYgc3RkOjpsaXN0PFN0cmVhbUFuZFNldmVyaXR5
PiBTdHJlYW1MaXN0OwotKwotKy8vIFRoZSBvdXRwdXQgc3RyZWFtcyBhbmQgdGhlaXIgYXNzb2Np
YXRlZCBzZXZlcml0aWVzCi0rU3RyZWFtTGlzdCYgc3RyZWFtTGlzdCgpCi0rICAgIFJUQ19FWENM
VVNJVkVfTE9DS1NfUkVRVUlSRUQobG9nQ3JpdGljYWxTY29wZSgpKSB7Ci0rICAgICAgICBzdGF0
aWMgYXV0byBzdHJlYW1fbGlzdCA9IG1ha2VOZXZlckRlc3Ryb3llZDw+KFN0cmVhbUxpc3QgeyB9
KTsKLSsgIHJldHVybiBzdHJlYW1fbGlzdC5nZXQoKTsKLSt9Ci0gCi0gLy8gQm9vbGVhbiBvcHRp
b25zIGRlZmF1bHQgdG8gZmFsc2UgKDApCi0gYm9vbCBMb2dNZXNzYWdlOjp0aHJlYWRfLCBMb2dN
ZXNzYWdlOjp0aW1lc3RhbXBfOwotQEAgLTk3LDYgKzExMCwxMCBAQCBMb2dNZXNzYWdlOjpMb2dN
ZXNzYWdlKGNvbnN0IGNoYXIqIGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBMb2dFcnJv
ckNvbnRleHQgZXJyX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBlcnIpCi0gICAg
IDogc2V2ZXJpdHlfKHNldikgewotKwotKyAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGNhbGxMb2dD
cml0aWNhbFNjb3BlT25jZTsKLSsgIHN0ZDo6Y2FsbF9vbmNlKGNhbGxMb2dDcml0aWNhbFNjb3Bl
T25jZSxbXSB7IGxvZ0NyaXRpY2FsU2NvcGUoKTsgfSk7Ci0rCi0gICBpZiAodGltZXN0YW1wXykg
ewotICAgICAvLyBVc2UgU3lzdGVtVGltZU1pbGxpcyBzbyB0aGF0IGV2ZW4gaWYgdGVzdHMgdXNl
IGZha2UgY2xvY2tzLCB0aGUgdGltZXN0YW1wCi0gICAgIC8vIGluIGxvZyBtZXNzYWdlcyByZXBy
ZXNlbnRzIHRoZSByZWFsIHN5c3RlbSB0aW1lLgotQEAgLTE5Nyw4ICsyMTQsOCBAQCBMb2dNZXNz
YWdlOjp+TG9nTWVzc2FnZSgpIHsKLSAjZW5kaWYKLSAgIH0KLSAKLS0gIENyaXRTY29wZSBjcygm
Z19sb2dfY3JpdCk7Ci0tICBmb3IgKGF1dG8mIGt2IDogc3RyZWFtc18pIHsKLSsgIENyaXRTY29w
ZSBjcygmbG9nQ3JpdGljYWxTY29wZSgpKTsKLSsgIGZvciAoYXV0byYga3YgOiBzdHJlYW1MaXN0
KCkpIHsKLSAgICAgaWYgKHNldmVyaXR5XyA+PSBrdi5zZWNvbmQpIHsKLSAjaWYgZGVmaW5lZChX
RUJSVENfQU5EUk9JRCkKLSAgICAgICBrdi5maXJzdC0+T25Mb2dNZXNzYWdlKHN0ciwgc2V2ZXJp
dHlfLCB0YWdfKTsKLUBAIC0yNDYsNyArMjYzLDcgQEAgdm9pZCBMb2dNZXNzYWdlOjpMb2dUaW1l
c3RhbXBzKGJvb2wgb24pIHsKLSAKLSB2b2lkIExvZ01lc3NhZ2U6OkxvZ1RvRGVidWcoTG9nZ2lu
Z1NldmVyaXR5IG1pbl9zZXYpIHsKLSAgIGdfZGJnX3NldiA9IG1pbl9zZXY7Ci0tICBDcml0U2Nv
cGUgY3MoJmdfbG9nX2NyaXQpOwotKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0aWNhbFNjb3BlKCkp
OwotICAgVXBkYXRlTWluTG9nU2V2ZXJpdHkoKTsKLSB9Ci0gCi1AQCAtMjU1LDkgKzI3Miw5IEBA
IHZvaWQgTG9nTWVzc2FnZTo6U2V0TG9nVG9TdGRlcnIoYm9vbCBsb2dfdG9fc3RkZXJyKSB7Ci0g
fQotIAotIGludCBMb2dNZXNzYWdlOjpHZXRMb2dUb1N0cmVhbShMb2dTaW5rKiBzdHJlYW0pIHsK
LS0gIENyaXRTY29wZSBjcygmZ19sb2dfY3JpdCk7Ci0rICBDcml0U2NvcGUgY3MoJmxvZ0NyaXRp
Y2FsU2NvcGUoKSk7Ci0gICBMb2dnaW5nU2V2ZXJpdHkgc2V2ID0gTFNfTk9ORTsKLS0gIGZvciAo
YXV0byYga3YgOiBzdHJlYW1zXykgewotKyAgZm9yIChhdXRvJiBrdiA6IHN0cmVhbUxpc3QoKSkg
ewotICAgICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0gPT0ga3YuZmlyc3QpIHsKLSAgICAgICBzZXYg
PSBzdGQ6Om1pbihzZXYsIGt2LnNlY29uZCk7Ci0gICAgIH0KLUBAIC0yNjYsMTYgKzI4MywxNiBA
QCBpbnQgTG9nTWVzc2FnZTo6R2V0TG9nVG9TdHJlYW0oTG9nU2luayogc3RyZWFtKSB7Ci0gfQot
IAotIHZvaWQgTG9nTWVzc2FnZTo6QWRkTG9nVG9TdHJlYW0oTG9nU2luayogc3RyZWFtLCBMb2dn
aW5nU2V2ZXJpdHkgbWluX3NldikgewotLSAgQ3JpdFNjb3BlIGNzKCZnX2xvZ19jcml0KTsKLS0g
IHN0cmVhbXNfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihzdHJlYW0sIG1pbl9zZXYpKTsKLSsg
IENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29wZSgpKTsKLSsgIHN0cmVhbUxpc3QoKS5wdXNo
X2JhY2soc3RkOjptYWtlX3BhaXIoc3RyZWFtLCBtaW5fc2V2KSk7Ci0gICBVcGRhdGVNaW5Mb2dT
ZXZlcml0eSgpOwotIH0KLSAKLSB2b2lkIExvZ01lc3NhZ2U6OlJlbW92ZUxvZ1RvU3RyZWFtKExv
Z1NpbmsqIHN0cmVhbSkgewotLSAgQ3JpdFNjb3BlIGNzKCZnX2xvZ19jcml0KTsKLS0gIGZvciAo
U3RyZWFtTGlzdDo6aXRlcmF0b3IgaXQgPSBzdHJlYW1zXy5iZWdpbigpOyBpdCAhPSBzdHJlYW1z
Xy5lbmQoKTsgKytpdCkgewotKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0aWNhbFNjb3BlKCkpOwot
KyAgZm9yIChTdHJlYW1MaXN0OjppdGVyYXRvciBpdCA9IHN0cmVhbUxpc3QoKS5iZWdpbigpOyBp
dCAhPSBzdHJlYW1MaXN0KCkuZW5kKCk7ICsraXQpIHsKLSAgICAgaWYgKHN0cmVhbSA9PSBpdC0+
Zmlyc3QpIHsKLS0gICAgICBzdHJlYW1zXy5lcmFzZShpdCk7Ci0rICAgICAgc3RyZWFtTGlzdCgp
LmVyYXNlKGl0KTsKLSAgICAgICBicmVhazsKLSAgICAgfQotICAgfQotQEAgLTMzNCw5ICszNTEs
OSBAQCB2b2lkIExvZ01lc3NhZ2U6OkNvbmZpZ3VyZUxvZ2dpbmcoY29uc3QgY2hhciogcGFyYW1z
KSB7Ci0gfQotIAotIHZvaWQgTG9nTWVzc2FnZTo6VXBkYXRlTWluTG9nU2V2ZXJpdHkoKQotLSAg
ICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGdfbG9nX2NyaXQpIHsKLSsgICAgUlRDX0VY
Q0xVU0lWRV9MT0NLU19SRVFVSVJFRChsb2dDcml0aWNhbFNjb3BlKCkpIHsKLSAgIExvZ2dpbmdT
ZXZlcml0eSBtaW5fc2V2ID0gZ19kYmdfc2V2OwotLSAgZm9yIChjb25zdCBhdXRvJiBrdiA6IHN0
cmVhbXNfKSB7Ci0rICBmb3IgKGNvbnN0IGF1dG8mIGt2IDogc3RyZWFtTGlzdCgpKSB7Ci0gICAg
IGNvbnN0IExvZ2dpbmdTZXZlcml0eSBzZXYgPSBrdi5zZWNvbmQ7Ci0gICAgIG1pbl9zZXYgPSBz
dGQ6Om1pbihtaW5fc2V2LCBzZXYpOwotICAgfQotQEAgLTQ1MCwxMSArNDY3LDggQEAgYm9vbCBM
b2dNZXNzYWdlOjpJc05vb3AoTG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5KSB7Ci0gICAvLyBUT0RP
KHRvbW1pKTogV2UncmUgZ3JhYmJpbmcgdGhpcyBsb2NrIGZvciBldmVyeSBMb2dNZXNzYWdlIGlu
c3RhbmNlIHRoYXQKLSAgIC8vIGlzIGdvaW5nIHRvIGJlIGxvZ2dlZC4gVGhpcyBpbnRyb2R1Y2Vz
IHVubmVjZXNzYXJ5IHN5bmNocm9uaXphdGlvbiBmb3IKLSAgIC8vIGEgZmVhdHVyZSB0aGF0J3Mg
bW9zdGx5IHVzZWQgZm9yIHRlc3RpbmcuCi0tICBDcml0U2NvcGUgY3MoJmdfbG9nX2NyaXQpOwot
LSAgaWYgKHN0cmVhbXNfLnNpemUoKSA+IDApCi0tICAgIHJldHVybiBmYWxzZTsKLS0KLS0gIHJl
dHVybiB0cnVlOwotKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0aWNhbFNjb3BlKCkpOwotKyAgcmV0
dXJuIHN0cmVhbUxpc3QoKS5zaXplKCkgPT0gMDsKLSB9Ci0gCi0gdm9pZCBMb2dNZXNzYWdlOjpG
aW5pc2hQcmludFN0cmVhbSgpIHsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ191bml0
dGVzdC5jYwotaW5kZXggYTQ3NWU1MmQ0NjUuLjZiMjI2MzkyM2ZhIDEwMDY0NAotLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ191
bml0dGVzdC5jYwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbG9nZ2luZ191bml0dGVzdC5jYwotQEAgLTIyMSw3ICsyMjEsNyBAQCBURVNU
KExvZ1Rlc3QsIFNpbmdsZVN0cmVhbSkgewotIAotICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAm
JiAhZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKLSBURVNUKExvZ1Rlc3QsIENoZWNrcykgewotLSAg
RVhQRUNUX0RFQVRIKEZBVEFMKCkgPDwgIm1lc3NhZ2UiLAotKyAgRVhQRUNUX0RFQVRIKFJUQ19G
QVRBTCgpIDw8ICJtZXNzYWdlIiwKLSAgICAgICAgICAgICAgICAiXG5cbiNcbiIKLSAgICAgICAg
ICAgICAgICAiIyBGYXRhbCBlcnJvciBpbjogXFxTKywgbGluZSBcXHcrXG4iCi0gICAgICAgICAg
ICAgICAgIiMgbGFzdCBzeXN0ZW0gZXJyb3I6IFxcdytcbiIKLWRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZlcl9kZXN0cm95
ZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L25ldmVyX2Rlc3Ryb3llZC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAw
MDAuLmZjYzYyZTM1NTM0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZlcl9kZXN0cm95ZWQuaAotQEAgLTAs
MCArMSw2OSBAQAotKy8qCi0rICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFy
ZSBtZXQ6Ci0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0rICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0rICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSsgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0rICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0rICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0rICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSsgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICovCi0rCi0rI3ByYWdt
YSBvbmNlCi0rCi0rI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotKyNpbmNsdWRlIDx1dGlsaXR5Pgot
KwotK25hbWVzcGFjZSBydGMgewotKwotK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE5ldmVy
RGVzdHJveWVkIHsKLStwdWJsaWM6Ci0rICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IE5l
dmVyRGVzdHJveWVkKEFyZ3MmJi4uLiBhcmdzKQotKyAgICB7Ci0rICAgICAgICBuZXcgKHN0b3Jh
Z2VQb2ludGVyKCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSsgICAgfQotKwot
KyAgICBOZXZlckRlc3Ryb3llZChOZXZlckRlc3Ryb3llZCYmIG90aGVyKQotKyAgICB7Ci0rICAg
ICAgICBuZXcgKHN0b3JhZ2VQb2ludGVyKCkpIFQoc3RkOjptb3ZlKCpvdGhlci5zdG9yYWdlUG9p
bnRlcigpKSk7Ci0rICAgIH0KLSsKLSsgICAgb3BlcmF0b3IgVCYoKSB7IHJldHVybiAqc3RvcmFn
ZVBvaW50ZXIoKTsgfQotKyAgICBUJiBnZXQoKSB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsg
fQotKwotKyAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgcmV0dXJuICpzdG9yYWdlUG9p
bnRlcigpOyB9Ci0rICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpzdG9yYWdlUG9p
bnRlcigpOyB9Ci0rCi0rcHJpdmF0ZToKLSsgICAgTmV2ZXJEZXN0cm95ZWQoY29uc3QgTmV2ZXJE
ZXN0cm95ZWQmKSA9IGRlbGV0ZTsKLSsgICAgTmV2ZXJEZXN0cm95ZWQmIG9wZXJhdG9yPShjb25z
dCBOZXZlckRlc3Ryb3llZCYpID0gZGVsZXRlOwotKwotKyAgICB1c2luZyBQb2ludGVyVHlwZSA9
IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlKjsKLSsKLSsgICAgUG9pbnRlclR5
cGUgc3RvcmFnZVBvaW50ZXIoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFBvaW50ZXJUeXBl
PihyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPigmbV9zdG9yYWdlKSk7IH0KLSsKLSsgICAgLy8g
RklYTUU6IEludmVzdGlnYXRlIHdoZXRoZXIgd2Ugc2hvdWxkIGFsbG9jYXRlIGEgaHVuayBvZiB2
aXJ0dWFsIG1lbW9yeQotKyAgICAvLyBhbmQgaGFuZCBvdXQgY2h1bmtzIG9mIGl0IHRvIE5ldmVy
RGVzdHJveWVkIGluc3RlYWQsIHRvIHJlZHVjZSBmcmFnbWVudGF0aW9uLgotKyAgICB0eXBlbmFt
ZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2
YWx1ZT46OnR5cGUgbV9zdG9yYWdlOwotK307Ci0rCi0rdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIE5ldmVyRGVzdHJveWVkPFQ+IG1ha2VOZXZlckRlc3Ryb3llZChUJiYgYXJndW1lbnQpCi0r
ewotKyAgICByZXR1cm4gTmV2ZXJEZXN0cm95ZWQ8VD4oc3RkOjptb3ZlKGFyZ3VtZW50KSk7Ci0r
fQotKwotK30gLy8gbmFtZXNwYWNlIHJ0YwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lv
bnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaAotaW5kZXggNThlZmNhYTc0NmEuLjQ4YzIxMmU0
ZDQ5IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oCi0rKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9zYWZlX2Nv
bnZlcnNpb25zLmgKLUBAIC02MywxMSArNjMsMTEgQEAgaW5saW5lIERzdCBzYXR1cmF0ZWRfY2Fz
dChTcmMgdmFsdWUpIHsKLSAKLSAgICAgLy8gU2hvdWxkIGZhaWwgb25seSBvbiBhdHRlbXB0aW5n
IHRvIGFzc2lnbiBOYU4gdG8gYSBzYXR1cmF0ZWQgaW50ZWdlci4KLSAgICAgY2FzZSBpbnRlcm5h
bDo6VFlQRV9JTlZBTElEOgotLSAgICAgIEZBVEFMKCk7Ci0rICAgICAgUlRDX0ZBVEFMKCk7Ci0g
ICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8RHN0Pjo6bWF4KCk7Ci0gICB9Ci0gCi0t
ICBGQVRBTCgpOwotKyAgUlRDX0ZBVEFMKCk7Ci0gICByZXR1cm4gc3RhdGljX2Nhc3Q8RHN0Pih2
YWx1ZSk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0
ZS5jYwotaW5kZXggZWQ2N2E4OTM4ZTEuLjIzNmJlZjU1YzhhIDEwMDY0NAotLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRp
ZmljYXRlLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MKLUBAIC0yNTYsMTEgKzI1NiwxMSBAQCBP
cGVuU1NMQ2VydGlmaWNhdGUqIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6R2V0UmVmZXJlbmNlKCkgY29u
c3QgewotIHN0ZDo6c3RyaW5nIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9QRU1TdHJpbmcoKSBjb25z
dCB7Ci0gICBCSU8qIGJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOwotICAgaWYgKCFiaW8pIHsK
LS0gICAgRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7Ci0rICAgIFJUQ19GQVRBTCgpIDw8
ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSAgIH0KLSAgIGlmICghUEVNX3dyaXRlX2Jpb19YNTA5KGJp
bywgeDUwOV8pKSB7Ci0gICAgIEJJT19mcmVlKGJpbyk7Ci0tICAgIEZBVEFMKCkgPDwgInVucmVh
Y2hhYmxlIGNvZGUiOwotKyAgICBSVENfRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7Ci0g
ICB9Ci0gICBCSU9fd3JpdGUoYmlvLCAiXDAiLCAxKTsKLSAgIGNoYXIqIGJ1ZmZlcjsKLUBAIC0y
NzcsMTEgKzI3NywxMSBAQCB2b2lkIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9ERVIoQnVmZmVyKiBk
ZXJfYnVmZmVyKSBjb25zdCB7Ci0gICAvLyBDYWxjdWxhdGVzIHRoZSBERVIgcmVwcmVzZW50YXRp
b24gb2YgdGhlIGNlcnRpZmljYXRlLCBmcm9tIHNjcmF0Y2guCi0gICBCSU8qIGJpbyA9IEJJT19u
ZXcoQklPX3NfbWVtKCkpOwotICAgaWYgKCFiaW8pIHsKLS0gICAgRkFUQUwoKSA8PCAidW5yZWFj
aGFibGUgY29kZSI7Ci0rICAgIFJUQ19GQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSAg
IH0KLSAgIGlmICghaTJkX1g1MDlfYmlvKGJpbywgeDUwOV8pKSB7Ci0gICAgIEJJT19mcmVlKGJp
byk7Ci0tICAgIEZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotKyAgICBSVENfRkFUQUwo
KSA8PCAidW5yZWFjaGFibGUgY29kZSI7Ci0gICB9Ci0gICBjaGFyKiBkYXRhOwotICAgc2l6ZV90
IGxlbmd0aCA9IEJJT19nZXRfbWVtX2RhdGEoYmlvLCAmZGF0YSk7Ci1kaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5naXpl
X21hY3Jvcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oCi1pbmRleCBhZWU4ZDE0NTUxZC4uMzhjNmYxODM2YmQg
MTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2l6ZV9tYWNyb3MuaAotQEAgLTgsNyAr
OCw3IEBACi0gICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgotICAqLwotIAotLS8vIE1vZGlmaWVkIGZyb20gdGhlIENocm9taXVt
IG9yaWdpbmFsOgotKy8vIE1vZGlmaWVkIGZyb20gdGhlIENoeHNyb21pdW0gb3JpZ2luYWw6Ci0g
Ly8gc3JjL2Jhc2Uvc3RyaW5ncy9zdHJpbmdpemVfbWFjcm9zLmgKLSAKLSAvLyBUaGlzIGZpbGUg
ZGVmaW5lcyBwcmVwcm9jZXNzb3IgbWFjcm9zIGZvciBzdHJpbmdpemluZyBwcmVwcm9jZXNzb3IK
LUBAIC0zMyw2ICszMyw2IEBACi0gLy8gVGhlbjoKLSAvLyAgIFNUUklOR0laRShBKSBwcm9kdWNl
cyAiRk9PIgotIC8vICAgU1RSSU5HSVpFKEIoeSkpIHByb2R1Y2VzICJteW9iai0+RnVuY3Rpb25D
YWxsKHkpIgotLSNkZWZpbmUgU1RSSU5HSVpFKHgpIFNUUklOR0laRV9OT19FWFBBTlNJT04oeCkK
LSsjZGVmaW5lIFJUQ19TVFJJTkdJWkUoeCkgU1RSSU5HSVpFX05PX0VYUEFOU0lPTih4KQotIAot
ICNlbmRpZiAgLy8gUlRDX0JBU0VfU1RSSU5HSVpFX01BQ1JPU19IXwotZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxz
b2NrZXRzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNjCi1pbmRleCA1M2RhZDQ2ZmNlZC4uYWU0
MGQ3ODg4ZjUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNjCi0rKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2Vy
dmVyLmNjCi1AQCAtMTAyNyw5ICsxMDI3LDggQEAgdm9pZCBWaXJ0dWFsU29ja2V0U2VydmVyOjpV
cGRhdGVEZWxheURpc3RyaWJ1dGlvbigpIHsKLSAgIH0KLSB9Ci0gCi0tc3RhdGljIGRvdWJsZSBQ
SSA9IDQgKiBhdGFuKDEuMCk7Ci0tCi0gc3RhdGljIGRvdWJsZSBOb3JtYWwoZG91YmxlIHgsIGRv
dWJsZSBtZWFuLCBkb3VibGUgc3RkZGV2KSB7Ci0rICBzdGF0aWMgY29uc3QgZG91YmxlIFBJID0g
NCAqIGF0YW4oMS4wKTsKLSAgIGRvdWJsZSBhID0gKHggLSBtZWFuKSAqICh4IC0gbWVhbikgLyAo
MiAqIHN0ZGRldiAqIHN0ZGRldik7Ci0gICByZXR1cm4gZXhwKC1hKSAvIChzdGRkZXYgKiBzcXJ0
KDIgKiBQSSkpOwotIH0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy9QZWVyQ29ubmVjdGlvbi9S
VENIMjY0UHJvZmlsZUxldmVsSWQubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy9QZWVyQ29ubmVjdGlvbi9SVENI
MjY0UHJvZmlsZUxldmVsSWQubW0KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw
MDAwMC4uMDRhNTY4OTQxN2MKLS0tLSAvZGV2L251bGwKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL0ZyYW1ld29yay9DbGFzc2VzL1BlZXJD
b25uZWN0aW9uL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbQotQEAgLTAsMCArMSw1OCBAQAotKy8q
Ci0rICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotKyAqCi0rICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSsgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0rICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
LSsgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQotKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UgdHJlZS4KLSsgKgotKyAqLwotKwotKyNpbXBvcnQgIldlYlJUQy9SVENWaWRl
b0NvZGVjSDI2NC5oIgotKwotKyNpbmNsdWRlICJtZWRpYS9iYXNlL2gyNjRfcHJvZmlsZV9sZXZl
bF9pZC5oIgotKwotK0BpbnRlcmZhY2UgUlRDSDI2NFByb2ZpbGVMZXZlbElkICgpCi0rCi0rQHBy
b3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENIMjY0UHJvZmlsZSBwcm9maWxlOwotK0Bwcm9w
ZXJ0eShub25hdG9taWMsIGFzc2lnbikgUlRDSDI2NExldmVsIGxldmVsOwotK0Bwcm9wZXJ0eShu
b25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKmhleFN0cmluZzsKLSsKLStAZW5kCi0rCi0rQGlt
cGxlbWVudGF0aW9uIFJUQ0gyNjRQcm9maWxlTGV2ZWxJZAotKwotK0BzeW50aGVzaXplIHByb2Zp
bGUgPSBfcHJvZmlsZTsKLStAc3ludGhlc2l6ZSBsZXZlbCA9IF9sZXZlbDsKLStAc3ludGhlc2l6
ZSBoZXhTdHJpbmcgPSBfaGV4U3RyaW5nOwotKwotKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEhl
eFN0cmluZzooTlNTdHJpbmcgKiloZXhTdHJpbmcgewotKyAgaWYgKHNlbGYgPSBbc3VwZXIgaW5p
dF0pIHsKLSsgICAgc2VsZi5oZXhTdHJpbmcgPSBoZXhTdHJpbmc7Ci0rCi0rICAgIGFic2w6Om9w
dGlvbmFsPHdlYnJ0Yzo6SDI2NDo6UHJvZmlsZUxldmVsSWQ+IHByb2ZpbGVfbGV2ZWxfaWQgPQot
KyAgICAgICAgd2VicnRjOjpIMjY0OjpQYXJzZVByb2ZpbGVMZXZlbElkKFtoZXhTdHJpbmcgY1N0
cmluZ1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKLSsgICAgaWYgKHByb2Zp
bGVfbGV2ZWxfaWQuaGFzX3ZhbHVlKCkpIHsKLSsgICAgICBzZWxmLnByb2ZpbGUgPSBzdGF0aWNf
Y2FzdDxSVENIMjY0UHJvZmlsZT4ocHJvZmlsZV9sZXZlbF9pZC0+cHJvZmlsZSk7Ci0rICAgICAg
c2VsZi5sZXZlbCA9IHN0YXRpY19jYXN0PFJUQ0gyNjRMZXZlbD4ocHJvZmlsZV9sZXZlbF9pZC0+
bGV2ZWwpOwotKyAgICB9Ci0rICB9Ci0rICByZXR1cm4gc2VsZjsKLSt9Ci0rCi0rLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoUHJvZmlsZTooUlRDSDI2NFByb2ZpbGUpcHJvZmlsZSBsZXZlbDooUlRD
SDI2NExldmVsKWxldmVsIHsKLSsgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0rICAgIHNl
bGYucHJvZmlsZSA9IHByb2ZpbGU7Ci0rICAgIHNlbGYubGV2ZWwgPSBsZXZlbDsKLSsKLSsgICAg
YWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IGhleF9zdHJpbmcgPQotKyAgICAgICAgd2VicnRj
OjpIMjY0OjpQcm9maWxlTGV2ZWxJZFRvU3RyaW5nKHdlYnJ0Yzo6SDI2NDo6UHJvZmlsZUxldmVs
SWQoCi0rICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d2VicnRjOjpIMjY0OjpQcm9maWxlPihwcm9m
aWxlKSwgc3RhdGljX2Nhc3Q8d2VicnRjOjpIMjY0OjpMZXZlbD4obGV2ZWwpKSk7Ci0rICAgIHNl
bGYuaGV4U3RyaW5nID0KLSsgICAgICAgIFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpoZXhf
c3RyaW5nLnZhbHVlX29yKCIiKS5jX3N0cigpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKLSsgIH0KLSsgIHJldHVybiBzZWxmOwotK30KLSsKLStAZW5kCi1kaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJj
b25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1tIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0Vu
Y29kZWRJbWFnZStQcml2YXRlLm1tCi1pbmRleCA2ZjJkMWY0NmQ5Yy4uOTRjYjFmMTEwZjkgMTAw
NjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0KLSsrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9w
ZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbQotQEAgLTM1LDYgKzM1LDcg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlRW5jb2RlZEltYWdlOih3ZWJydGM6OkVu
Y29kZWRJbWFnZSllbmNvZGVkSW1hZ2UgewotICAgICBzZWxmLmNvbnRlbnRUeXBlID0gKGVuY29k
ZWRJbWFnZS5jb250ZW50X3R5cGVfID09IHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6U0NSRUVO
U0hBUkUpID8KLSAgICAgICAgIFJUQ1ZpZGVvQ29udGVudFR5cGVTY3JlZW5zaGFyZSA6Ci0gICAg
ICAgICBSVENWaWRlb0NvbnRlbnRUeXBlVW5zcGVjaWZpZWQ7Ci0rICAgIHNlbGYuc3BhdGlhbElu
ZGV4ID0gZW5jb2RlZEltYWdlLlNwYXRpYWxJbmRleCgpID8gKmVuY29kZWRJbWFnZS5TcGF0aWFs
SW5kZXgoKSA6IDA7Ci0gICB9Ci0gCi0gICByZXR1cm4gc2VsZjsKLUBAIC01OSw3ICs2MCw4IEBA
IC0gKHdlYnJ0Yzo6RW5jb2RlZEltYWdlKW5hdGl2ZUVuY29kZWRJbWFnZSB7Ci0gICBlbmNvZGVk
SW1hZ2UuY29udGVudF90eXBlXyA9IChzZWxmLmNvbnRlbnRUeXBlID09IFJUQ1ZpZGVvQ29udGVu
dFR5cGVTY3JlZW5zaGFyZSkgPwotICAgICAgIHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6U0NS
RUVOU0hBUkUgOgotICAgICAgIHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6VU5TUEVDSUZJRUQ7
Ci0tCi0rICBpZiAoc2VsZi5zcGF0aWFsSW5kZXgpCi0rICAgIGVuY29kZWRJbWFnZS5TZXRTcGF0
aWFsSW5kZXgoc2VsZi5zcGF0aWFsSW5kZXgpOwotICAgcmV0dXJuIGVuY29kZWRJbWFnZTsKLSB9
Ci0gCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBp
L3BlZXJjb25uZWN0aW9uL1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5oCi1pbmRleCBiYTUwYmRl
NjQ5Zi4uZGFiZmY3MjVhYmIgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUnRwRW5jb2Rp
bmdQYXJhbWV0ZXJzLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENSdHBFbmNvZGluZ1BhcmFtZXRl
cnMuaAotQEAgLTE1LDYgKzE1LDcgQEAKLSBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotIAotIFJU
Q19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENS
dHBFbmNvZGluZ1BhcmFtZXRlcnMiKSkpCi0gQGludGVyZmFjZSBSVENSdHBFbmNvZGluZ1BhcmFt
ZXRlcnMgOiBOU09iamVjdAotIAotIC8qKiBDb250cm9scyB3aGV0aGVyIHRoZSBlbmNvZGluZyBp
cyBjdXJyZW50bHkgdHJhbnNtaXR0ZWQuICovCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JU
Q1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0Vu
Y29kZXJTZXR0aW5ncytQcml2YXRlLmgKLWluZGV4IDViMDYyNDU1YmMwLi43MmFmNzMyYjIzYiAx
MDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRl
LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLmgK
LUBAIC0yMiw0ICsyMiwxMSBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotIAotIEBlbmQKLSAK
LStAaW50ZXJmYWNlIFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gKFByaXZhdGUpCi0rCi0rLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjooY29uc3Qg
d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uICpfX251bGxhYmxlKXZpZGVvQml0cmF0ZUFs
bG9jYXRpb247Ci0rLSAod2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uKW5hdGl2ZVZpZGVv
Qml0cmF0ZUFsbG9jYXRpb247Ci0rCi0rQGVuZAotKwotIE5TX0FTU1VNRV9OT05OVUxMX0VORAot
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRl
Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUubW0KLWlu
ZGV4IDZmYjgxZGJiOGFmLi44MmI1YmE3YmMwZiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLm1tCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRD
VmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5tbQotQEAgLTEyLDYgKzEyLDIzIEBACi0gCi0g
I2ltcG9ydCAiaGVscGVycy9OU1N0cmluZytTdGRTdHJpbmcuaCIKLSAKLStAaW1wbGVtZW50YXRp
b24gUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MgewotKyAgd2VicnRjOjpWaWRlb0NvZGVjIF9uYXRp
dmVWaWRlb0NvZGVjOwotK30KLSsKLStAc3ludGhlc2l6ZSBuYW1lID0gX25hbWU7Ci0rQHN5bnRo
ZXNpemUgd2lkdGggPSBfd2lkdGg7Ci0rQHN5bnRoZXNpemUgaGVpZ2h0ID0gX2hlaWdodDsKLStA
c3ludGhlc2l6ZSBzdGFydEJpdHJhdGUgPSBfc3RhcnRCaXRyYXRlOwotK0BzeW50aGVzaXplIG1h
eEJpdHJhdGUgPSBfbWF4Qml0cmF0ZTsKLStAc3ludGhlc2l6ZSBtaW5CaXRyYXRlID0gX21pbkJp
dHJhdGU7Ci0rQHN5bnRoZXNpemUgdGFyZ2V0Qml0cmF0ZSA9IF90YXJnZXRCaXRyYXRlOwotK0Bz
eW50aGVzaXplIG1heEZyYW1lcmF0ZSA9IF9tYXhGcmFtZXJhdGU7Ci0rQHN5bnRoZXNpemUgcXBN
YXggPSBfcXBNYXg7Ci0rQHN5bnRoZXNpemUgbW9kZSA9IF9tb2RlOwotKwotK0BlbmQKLSsKLSBA
aW1wbGVtZW50YXRpb24gUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MgKFByaXZhdGUpCi0gCi0gLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlVmlkZW9Db2RlYzooY29uc3Qgd2VicnRjOjpWaWRl
b0NvZGVjICopdmlkZW9Db2RlYyB7Ci1AQCAtMjAsNiArMzcsNyBAQCAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhOYXRpdmVWaWRlb0NvZGVjOihjb25zdCB3ZWJydGM6OlZpZGVvQ29kZWMgKil2aWRl
b0NvZGVjCi0gICAgICAgY29uc3QgY2hhciAqY29kZWNOYW1lID0gQ29kZWNUeXBlVG9QYXlsb2Fk
U3RyaW5nKHZpZGVvQ29kZWMtPmNvZGVjVHlwZSk7Ci0gICAgICAgc2VsZi5uYW1lID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmNvZGVjTmFtZV07Ci0gCi0rICAgICAgX25hdGl2ZVZp
ZGVvQ29kZWMgPSAqdmlkZW9Db2RlYzsKLSAgICAgICBzZWxmLndpZHRoID0gdmlkZW9Db2RlYy0+
d2lkdGg7Ci0gICAgICAgc2VsZi5oZWlnaHQgPSB2aWRlb0NvZGVjLT5oZWlnaHQ7Ci0gICAgICAg
c2VsZi5zdGFydEJpdHJhdGUgPSB2aWRlb0NvZGVjLT5zdGFydEJpdHJhdGU7Ci1AQCAtMzYsMTgg
KzU0LDI4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZVZpZGVvQ29kZWM6KGNvbnN0
IHdlYnJ0Yzo6VmlkZW9Db2RlYyAqKXZpZGVvQ29kZWMKLSB9Ci0gCi0gLSAod2VicnRjOjpWaWRl
b0NvZGVjKW5hdGl2ZVZpZGVvQ29kZWMgewotLSAgd2VicnRjOjpWaWRlb0NvZGVjIHZpZGVvQ29k
ZWM7Ci0tICB2aWRlb0NvZGVjLndpZHRoID0gc2VsZi53aWR0aDsKLS0gIHZpZGVvQ29kZWMuaGVp
Z2h0ID0gc2VsZi5oZWlnaHQ7Ci0tICB2aWRlb0NvZGVjLnN0YXJ0Qml0cmF0ZSA9IHNlbGYuc3Rh
cnRCaXRyYXRlOwotLSAgdmlkZW9Db2RlYy5tYXhCaXRyYXRlID0gc2VsZi5tYXhCaXRyYXRlOwot
LSAgdmlkZW9Db2RlYy5taW5CaXRyYXRlID0gc2VsZi5taW5CaXRyYXRlOwotLSAgdmlkZW9Db2Rl
Yy50YXJnZXRCaXRyYXRlID0gc2VsZi50YXJnZXRCaXRyYXRlOwotLSAgdmlkZW9Db2RlYy5tYXhC
aXRyYXRlID0gc2VsZi5tYXhCaXRyYXRlOwotLSAgdmlkZW9Db2RlYy5xcE1heCA9IHNlbGYucXBN
YXg7Ci0tICB2aWRlb0NvZGVjLm1vZGUgPSAod2VicnRjOjpWaWRlb0NvZGVjTW9kZSlzZWxmLm1v
ZGU7Ci0tCi0tICByZXR1cm4gdmlkZW9Db2RlYzsKLSsgIHJldHVybiBfbmF0aXZlVmlkZW9Db2Rl
YzsKLSt9Ci0rCi0rQGVuZAotKwotK0BpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0JpdHJhdGVBbGxv
Y2F0aW9uIHsKLSsgIHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBfbmF0aXZlVmlkZW9C
aXRyYXRlQWxsb2NhdGlvbjsKLSt9Ci0rCi0rQGVuZAotKwotK0BpbXBsZW1lbnRhdGlvbiBSVENW
aWRlb0JpdHJhdGVBbGxvY2F0aW9uIChQcml2YXRlKQotKwotKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aE5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb246KGNvbnN0IHdlYnJ0Yzo6VmlkZW9CaXRy
YXRlQWxsb2NhdGlvbiAqKXZpZGVvQml0cmF0ZUFsbG9jYXRpb24gewotKyAgaWYgKHNlbGYgPSBb
c3VwZXIgaW5pdF0pIHsKLSsgICAgX25hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb24gPSAqdmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbjsKLSsgIH0KLSsgIHJldHVybiBzZWxmOwotK30KLSsKLSstICh3
ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRpb24pbmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlv
biB7Ci0rICByZXR1cm4gX25hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb247Ci0gfQotIAotIEBl
bmQKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRl
b19jb2RlYy9SVENWaWRlb0NvZGVjQ29uc3RhbnRzLm1tCi1pbmRleCBhY2JmMTI2MTcwYy4uMTQ0
N2QzYjI3ZTEgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5t
bQotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29kZWNDb25zdGFudHMubW0KLUBAIC0xMyw1ICsx
Myw1IEBACi0gCi0gI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKLSAKLS1O
U1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNWcDhOYW1lID0gQChjcmlja2V0OjprVnA4Q29k
ZWNOYW1lKTsKLS1OU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNWcDlOYW1lID0gQChjcmlj
a2V0OjprVnA5Q29kZWNOYW1lKTsKLStOU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNWcDhO
YW1lID0gQCJWUDgiOwotK05TU3RyaW5nICpjb25zdCBrUlRDVmlkZW9Db2RlY1ZwOU5hbWUgPSBA
IlZQOSI7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlclZQOC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVv
X2NvZGVjL1JUQ1ZpZGVvRW5jb2RlclZQOC5oCi1pbmRleCA4ZDg3YTg5ODkzMS4uMDhkMTg1MDQy
MjIgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyVlA4LmgKLSsrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRl
b19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaAotQEAgLTE0LDYgKzE0LDcgQEAKLSAjaW1wb3J0
ICJSVENWaWRlb0VuY29kZXIuaCIKLSAKLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9f
KChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVyVlA4IikpKQotIEBpbnRlcmZh
Y2UgUlRDVmlkZW9FbmNvZGVyVlA4IDogTlNPYmplY3QKLSAKLSAvKiBUaGlzIHJldHVybnMgYSBW
UDggZW5jb2RlciB0aGF0IGNhbiBiZSByZXR1cm5lZCBmcm9tIGEgUlRDVmlkZW9FbmNvZGVyRmFj
dG9yeSBpbmplY3RlZCBpbnRvCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1dyYXBwZWROYXRp
dmVWaWRlb0VuY29kZXIubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rl
ci5tbQotaW5kZXggOWFmZDU0ZjU1ZjUuLmI5NjM0Nzc5ZjFmIDEwMDY0NAotLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2Nv
ZGVjL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0KLSsrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENX
cmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tCi1AQCAtNTgsNiArNTgsMTEgQEAgLSAoaW50KXNl
dEJpdHJhdGU6KHVpbnQzMl90KWJpdHJhdGVLYml0IGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVy
YXRlIHsKLSAgIHJldHVybiAwOwotIH0KLSAKLSstIChpbnQpc2V0UmF0ZUFsbG9jYXRpb246KG5v
bm51bGwgUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqKWFsbG9jYXRpb24gZnJhbWVyYXRlOih1
aW50MzJfdClmcmFtZXJhdGUgewotKyAgUlRDX05PVFJFQUNIRUQoKTsKLSsgIHJldHVybiAwOwot
K30KLSsKLSAtIChOU1N0cmluZyAqKWltcGxlbWVudGF0aW9uTmFtZSB7Ci0gICBSVENfTk9UUkVB
Q0hFRCgpOwotICAgcmV0dXJuIG5pbDsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JU
Q05hdGl2ZUk0MjBCdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlSTQyMEJ1ZmZl
ci5oCi1pbmRleCA5YTkwNGY1Mzk2YS4uZGM5MDNiYzRiY2EgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJh
bWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9S
VENOYXRpdmVJNDIwQnVmZmVyLmgKLUBAIC0xNyw2ICsxNyw3IEBAIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCi0gCi0gLyoqIFJUQ0k0MjBCdWZmZXIgaW1wbGVtZW50cyB0aGUgUlRDSTQyMEJ1ZmZl
ciBwcm90b2NvbCAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVu
dGltZV9uYW1lKCJXS19SVENJNDIwQnVmZmVyIikpKQotIEBpbnRlcmZhY2UgUlRDSTQyMEJ1ZmZl
ciA6IE5TT2JqZWN0PFJUQ0k0MjBCdWZmZXI+Ci0gQGVuZAotIAotZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19m
cmFtZV9idWZmZXIvUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZm
ZXIvUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIuaAotaW5kZXggNmNkNTExMDQ2MGIuLjdjZmE5
NTBhYmI2IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVNdXRhYmxlSTQy
MEJ1ZmZlci5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZU11dGFibGVJNDIwQnVm
ZmVyLmgKLUBAIC0xOCw2ICsxOCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCi0gCi0gLyoq
IE11dGFibGUgdmVyc2lvbiBvZiBSVENJNDIwQnVmZmVyICovCi0gUlRDX09CSkNfRVhQT1JUCi0r
X19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ011dGFibGVJNDIwQnVmZmVy
IikpKQotIEBpbnRlcmZhY2UgUlRDTXV0YWJsZUk0MjBCdWZmZXIgOiBSVENJNDIwQnVmZmVyPFJU
Q011dGFibGVJNDIwQnVmZmVyPgotIEBlbmQKLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0NvZGVjU3BlY2lm
aWNJbmZvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9iYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmgKLWluZGV4IGUyYWU0Y2FmYTExLi45ZGM0
NGMxMmFmOCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDQ29kZWNTcGVjaWZpY0luZm8uaAotKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENDb2Rl
Y1NwZWNpZmljSW5mby5oCi1AQCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgotICAqICBDb3JyZXNwb25kcyB0byB3ZWJydGM6OkNvZGVjU3BlY2lmaWNJbmZvLgotICAqLwot
IFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19S
VENDb2RlY1NwZWNpZmljSW5mbyIpKSkKLSBAcHJvdG9jb2wgUlRDQ29kZWNTcGVjaWZpY0luZm8g
PE5TT2JqZWN0PgotIEBlbmQKLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENF
bmNvZGVkSW1hZ2UuaAotaW5kZXggNjcwYzcyNzZmZjcuLjc5OTRjZTY0YTFmIDEwMDY0NAotLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFz
ZS9SVENFbmNvZGVkSW1hZ2UuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UuaAotQEAgLTMxLDYgKzMx
LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFJUQ1ZpZGVvQ29udGVudFR5cGUpIHsK
LSAKLSAvKiogUmVwcmVzZW50cyBhbiBlbmNvZGVkIGZyYW1lLiBDb3JyZXNwb25kcyB0byB3ZWJy
dGM6OkVuY29kZWRJbWFnZS4gKi8KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChv
YmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDRW5jb2RlZEltYWdlIikpKQotIEBpbnRlcmZhY2UgUlRD
RW5jb2RlZEltYWdlIDogTlNPYmplY3QKLSAKLSBAcHJvcGVydHkobm9uYXRvbWljLCBzdHJvbmcp
IE5TRGF0YSAqYnVmZmVyOwotQEAgLTQ3LDYgKzQ4LDcgQEAgUlRDX09CSkNfRVhQT1JUCi0gQHBy
b3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIGNvbXBsZXRlRnJhbWU7Ci0gQHByb3BlcnR5
KG5vbmF0b21pYywgc3Ryb25nKSBOU051bWJlciAqcXA7Ci0gQHByb3BlcnR5KG5vbmF0b21pYywg
YXNzaWduKSBSVENWaWRlb0NvbnRlbnRUeXBlIGNvbnRlbnRUeXBlOwotK0Bwcm9wZXJ0eShub25h
dG9taWMsIGFzc2lnbikgaW50IHNwYXRpYWxJbmRleDsKLSAKLSBAZW5kCi0gCi1kaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFz
ZS9SVENFbmNvZGVkSW1hZ2UubSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLm0KLWluZGV4IDAyNGE1N2M1NDFi
Li44NWNkNWUyOThlNCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLm0KLSsrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5j
b2RlZEltYWdlLm0KLUBAIC0yNiw1ICsyNiw2IEBAIEBpbXBsZW1lbnRhdGlvbiBSVENFbmNvZGVk
SW1hZ2UKLSBAc3ludGhlc2l6ZSBjb21wbGV0ZUZyYW1lID0gX2NvbXBsZXRlRnJhbWU7Ci0gQHN5
bnRoZXNpemUgcXAgPSBfcXA7Ci0gQHN5bnRoZXNpemUgY29udGVudFR5cGUgPSBfY29udGVudFR5
cGU7Ci0rQHN5bnRoZXNpemUgc3BhdGlhbEluZGV4ID0gX3NwYXRpYWxJbmRleDsKLSAKLSBAZW5k
Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYmFzZS9SVENJNDIwQnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0k0MjBCdWZmZXIuaAotaW5kZXggYTZj
N2U0MWJjYmEuLmNmYTE0ZjhhZjIzIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENJNDIwQnVmZmVyLmgKLSsrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2Uv
UlRDSTQyMEJ1ZmZlci5oCi1AQCAtMTYsNiArMTYsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgotIAotIC8qKiBQcm90b2NvbCBmb3IgUlRDWVVWUGxhbmFyQnVmZmVycyBjb250YWluaW5nIEk0
MjAgZGF0YSAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGlt
ZV9uYW1lKCJXS19SVENJNDIwQnVmZmVyIikpKQotIEBwcm90b2NvbCBSVENJNDIwQnVmZmVyIDxS
VENZVVZQbGFuYXJCdWZmZXI+Ci0gQGVuZAotIAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRh
dGlvbkhlYWRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLmgKLWluZGV4IDJlMjZiMDhi
OGFmLi5mYmJjNjhhOGVmNiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5o
Ci0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIuaAotQEAgLTE2LDYgKzE2LDcgQEAgTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KLSAKLSAvKiogSW5mb3JtYXRpb24gZm9yIGhlYWRlci4gQ29y
cmVzcG9uZHMgdG8gd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyLiAqLwotIFJUQ19PQkpD
X0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENSdHBGcmFn
bWVudGF0aW9uSGVhZGVyIikpKQotIEBpbnRlcmZhY2UgUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRl
ciA6IE5TT2JqZWN0Ci0gCi0gQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBOU0FycmF5PE5T
TnVtYmVyICo+ICpmcmFnbWVudGF0aW9uT2Zmc2V0OwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21l
bnRhdGlvbkhlYWRlci5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0KLWluZGV4IDgwNDlh
YmM0MTFlLi42Y2YyMWRkYzJhMSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRl
ci5tCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubQotQEAgLTE3LDQgKzE3LDUgQEAg
QGltcGxlbWVudGF0aW9uIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIKLSBAc3ludGhlc2l6ZSBm
cmFnbWVudGF0aW9uVGltZURpZmYgPSBfZnJhZ21lbnRhdGlvblRpbWVEaWZmOwotIEBzeW50aGVz
aXplIGZyYWdtZW50YXRpb25QbFR5cGUgPSBfZnJhZ21lbnRhdGlvblBsVHlwZTsKLSAKLS1AZW5k
Ci1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLStAZW5kCi0rCi1kaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENW
aWRlb0NvZGVjSW5mby5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0NvZGVjSW5mby5oCi1pbmRleCAyMTYyY2FhYTIxZi4u
NGU2NDNkOTQzNDcgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvQ29kZWNJbmZvLmgKLSsrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlk
ZW9Db2RlY0luZm8uaAotQEAgLTE2LDYgKzE2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
LSAKLSAvKiogSG9sZHMgaW5mb3JtYXRpb24gdG8gaWRlbnRpZnkgYSBjb2RlYy4gQ29ycmVzcG9u
ZHMgdG8gd2VicnRjOjpTZHBWaWRlb0Zvcm1hdC4gKi8KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0
dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9Db2RlY0luZm8iKSkpCi0g
QGludGVyZmFjZSBSVENWaWRlb0NvZGVjSW5mbyA6IE5TT2JqZWN0IDxOU0NvZGluZz4KLSAKLSAt
IChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKLWRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVv
RGVjb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENWaWRlb0RlY29kZXIuaAotaW5kZXggMThjNmY2YjAwMDYuLjUzNDQyMGQz
OTU1IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXIuaAotKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXIu
aAotQEAgLTIzLDYgKzIzLDcgQEAgdHlwZWRlZiB2b2lkICheUlRDVmlkZW9EZWNvZGVyQ2FsbGJh
Y2spKFJUQ1ZpZGVvRnJhbWUgKmZyYW1lKTsKLSAKLSAvKiogUHJvdG9jb2wgZm9yIGRlY29kZXIg
aW1wbGVtZW50YXRpb25zLiAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9i
amNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0RlY29kZXIiKSkpCi0gQHByb3RvY29sIFJUQ1Zp
ZGVvRGVjb2RlciA8TlNPYmplY3Q+Ci0gCi0gLSAodm9pZClzZXRDYWxsYmFjazooUlRDVmlkZW9E
ZWNvZGVyQ2FsbGJhY2spY2FsbGJhY2s7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXJGYWN0
b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9iYXNlL1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuaAotaW5kZXggM2UyNDE1M2I4MmMuLmNiOTVm
YTNmMTM0IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXJGYWN0b3J5LmgKLSsrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlk
ZW9EZWNvZGVyRmFjdG9yeS5oCi1AQCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgotIAotIC8qKiBSVENWaWRlb0RlY29kZXJGYWN0b3J5IGlzIGFuIE9iamVjdGl2ZS1DIHZl
cnNpb24gb2Ygd2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5LiAqLwotIFJUQ19PQkpDX0VYUE9S
VAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0RlY29kZXJG
YWN0b3J5IikpKQotIEBwcm90b2NvbCBSVENWaWRlb0RlY29kZXJGYWN0b3J5IDxOU09iamVjdD4K
LSAKLSAtIChudWxsYWJsZSBpZDxSVENWaWRlb0RlY29kZXI+KWNyZWF0ZURlY29kZXI6KFJUQ1Zp
ZGVvQ29kZWNJbmZvICopaW5mbzsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2Rlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENW
aWRlb0VuY29kZXIuaAotaW5kZXggYzUyNTc2NzRkODMuLjUyOTFiYjEzNDJiIDEwMDY0NAotLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFz
ZS9SVENWaWRlb0VuY29kZXIuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaAotQEAgLTE5LDcgKzE5
LDExIEBACi0gI2ltcG9ydCAiUlRDVmlkZW9GcmFtZS5oIgotIAotIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCi0tCi0rLyoKLStuYW1lc3BhY2Ugd2VicnRjIHsKLStjbGFzcyBWaWRlb0JpdHJhdGVB
bGxvY2F0aW9uOwotK307Ci0rKi8KLSAvKiogQ2FsbGJhY2sgYmxvY2sgZm9yIGVuY29kZXIuICov
Ci0gdHlwZWRlZiBCT09MICheUlRDVmlkZW9FbmNvZGVyQ2FsbGJhY2spKFJUQ0VuY29kZWRJbWFn
ZSAqZnJhbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPFJU
Q0NvZGVjU3BlY2lmaWNJbmZvPiBpbmZvLAotQEAgLTI3LDYgKzMxLDcgQEAgdHlwZWRlZiBCT09M
ICheUlRDVmlkZW9FbmNvZGVyQ2FsbGJhY2spKFJUQ0VuY29kZWRJbWFnZSAqZnJhbWUsCi0gCi0g
LyoqIFByb3RvY29sIGZvciBlbmNvZGVyIGltcGxlbWVudGF0aW9ucy4gKi8KLSBSVENfT0JKQ19F
WFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNv
ZGVyIikpKQotIEBwcm90b2NvbCBSVENWaWRlb0VuY29kZXIgPE5TT2JqZWN0PgotIAotIC0gKHZv
aWQpc2V0Q2FsbGJhY2s6KFJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrKWNhbGxiYWNrOwotQEAgLTM3
LDYgKzQyLDcgQEAgUlRDX09CSkNfRVhQT1JUCi0gICAgIGNvZGVjU3BlY2lmaWNJbmZvOihudWxs
YWJsZSBpZDxSVENDb2RlY1NwZWNpZmljSW5mbz4paW5mbwotICAgICAgICAgICAgZnJhbWVUeXBl
czooTlNBcnJheTxOU051bWJlciAqPiAqKWZyYW1lVHlwZXM7Ci0gLSAoaW50KXNldEJpdHJhdGU6
KHVpbnQzMl90KWJpdHJhdGVLYml0IGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlOwotKy0g
KGludClzZXRSYXRlQWxsb2NhdGlvbjogKFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gKilhbGxv
Y2F0aW9uIGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlOwotIC0gKE5TU3RyaW5nICopaW1w
bGVtZW50YXRpb25OYW1lOwotIAotIC8qKiBSZXR1cm5zIFFQIHNjYWxpbmcgc2V0dGluZ3MgZm9y
IGVuY29kZXIuIFRoZSBxdWFsaXR5IHNjYWxlciBhZGp1c3RzIHRoZSByZXNvbHV0aW9uIGluIG9y
ZGVyIHRvCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5j
b2RlckZhY3RvcnkuaAotaW5kZXggMjBjNjAzZDZmZTYuLmNiZTllYTQ5MmFlIDEwMDY0NAotLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFz
ZS9SVENWaWRlb0VuY29kZXJGYWN0b3J5LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5o
Ci1AQCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotIAotIC8qKiBSVENW
aWRlb0VuY29kZXJGYWN0b3J5IGlzIGFuIE9iamVjdGl2ZS1DIHZlcnNpb24gb2Ygd2VicnRjOjpW
aWRlb0VuY29kZXJGYWN0b3J5LiAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18o
KG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0VuY29kZXJGYWN0b3J5IikpKQotIEBwcm90
b2NvbCBSVENWaWRlb0VuY29kZXJGYWN0b3J5IDxOU09iamVjdD4KLSAKLSAtIChudWxsYWJsZSBp
ZDxSVENWaWRlb0VuY29kZXI+KWNyZWF0ZUVuY29kZXI6KFJUQ1ZpZGVvQ29kZWNJbmZvICopaW5m
bzsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0Vu
Y29kZXJRcFRocmVzaG9sZHMuaAotaW5kZXggMmI0OGY0NWNlMGEuLjY4Y2ZkNjZkZjQ3IDEwMDY0
NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYmFzZS9SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaAotKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29k
ZXJRcFRocmVzaG9sZHMuaAotQEAgLTE2LDYgKzE2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KLSAKLSAvKiogUVAgdGhyZXNob2xkcyBmb3IgZW5jb2Rlci4gQ29ycmVzcG9uZHMgdG8gd2Vi
cnRjOjpWaWRlb0VuY29kZXI6OlFwVGhyZXNob2xkcy4gKi8KLSBSVENfT0JKQ19FWFBPUlQKLStf
X2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVyUXBUaHJl
c2hvbGRzIikpKQotIEBpbnRlcmZhY2UgUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzIDogTlNP
YmplY3QKLSAKLSAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhUaHJlc2hvbGRzTG93OihOU0ludGVn
ZXIpbG93IGhpZ2g6KE5TSW50ZWdlciloaWdoOwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVy
U2V0dGluZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MuaAotaW5kZXggNjllMDRjYWM3MGYu
LmFlM2JmNWZiNWYxIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJTZXR0aW5ncy5oCi0rKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNl
L1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLmgKLUBAIC0yMSw2ICsyMSw3IEBAIHR5cGVkZWYgTlNf
RU5VTShOU1VJbnRlZ2VyLCBSVENWaWRlb0NvZGVjTW9kZSkgewotIAotIC8qKiBTZXR0aW5ncyBm
b3IgZW5jb2Rlci4gQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpWaWRlb0NvZGVjLiAqLwotIFJUQ19P
QkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRl
b0VuY29kZXJTZXR0aW5ncyIpKSkKLSBAaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdz
IDogTlNPYmplY3QKLSAKLSBAcHJvcGVydHkobm9uYXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICpu
YW1lOwotQEAgLTQwLDQgKzQxLDkgQEAgUlRDX09CSkNfRVhQT1JUCi0gCi0gQGVuZAotIAotK1JU
Q19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENW
aWRlb0JpdHJhdGVBbGxvY2F0aW9uIikpKQotK0BpbnRlcmZhY2UgUlRDVmlkZW9CaXRyYXRlQWxs
b2NhdGlvbiA6IE5TT2JqZWN0Ci0rQGVuZAotKwotIE5TX0FTU1VNRV9OT05OVUxMX0VORAotZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2Jhc2UvUlRDVmlkZW9GcmFtZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lLmgKLWluZGV4IDlhY2E3NDMz
ZjM0Li5iZGUwOWM1MGM5ZCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZS5oCi0rKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1Zp
ZGVvRnJhbWUuaAotQEAgLTI2LDYgKzI2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
UlRDVmlkZW9Sb3RhdGlvbikgewotIAotIC8vIFJUQ1ZpZGVvRnJhbWUgaXMgYW4gT2JqZWN0aXZl
QyB2ZXJzaW9uIG9mIHdlYnJ0Yzo6VmlkZW9GcmFtZS4KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0
dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9GcmFtZSIpKSkKLSBAaW50
ZXJmYWNlIFJUQ1ZpZGVvRnJhbWUgOiBOU09iamVjdAotIAotIC8qKiBXaWR0aCB3aXRob3V0IHJv
dGF0aW9uIGFwcGxpZWQuICovCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JU
Q1ZpZGVvRnJhbWVCdWZmZXIuaAotaW5kZXggYmI5ZTZmYmE2MzEuLjE4NmFkMDg4OWJmIDEwMDY0
NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYmFzZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5o
Ci1AQCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotIAotIC8vIFJUQ1Zp
ZGVvRnJhbWVCdWZmZXIgaXMgYW4gT2JqZWN0aXZlQyB2ZXJzaW9uIG9mIHdlYnJ0Yzo6VmlkZW9G
cmFtZUJ1ZmZlci4KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRp
bWVfbmFtZSgiV0tfUlRDVmlkZW9GcmFtZUJ1ZmZlciIpKSkKLSBAcHJvdG9jb2wgUlRDVmlkZW9G
cmFtZUJ1ZmZlciA8TlNPYmplY3Q+Ci0gCi0gQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkp
IGludCB3aWR0aDsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0NvZGVjU3BlY2lm
aWNJbmZvSDI2NC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQu
aAotaW5kZXggZWNlOTU3MGExM2IuLmU5NDdkYzZlNjIzIDEwMDY0NAotLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRl
b19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQuaAotKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQuaAotQEAgLTEwLDcgKzEwLDcgQEAKLSAKLSAjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSAKLS0jaW1wb3J0ICJSVENDb2RlY1NwZWNp
ZmljSW5mby5oIgotKyNpbXBvcnQgImJhc2UvUlRDQ29kZWNTcGVjaWZpY0luZm8uaCIKLSAjaW1w
b3J0ICJSVENNYWNyb3MuaCIKLSAKLSAvKiogQ2xhc3MgZm9yIEgyNjQgc3BlY2lmaWMgY29uZmln
LiAqLwotQEAgLTIwLDYgKzIwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFJUQ0gy
NjRQYWNrZXRpemF0aW9uTW9kZSkgewotIH07Ci0gCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRy
aWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NCIp
KSkKLSBAaW50ZXJmYWNlIFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NCA6IE5TT2JqZWN0IDxSVEND
b2RlY1NwZWNpZmljSW5mbz4KLSAKLSBAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIFJUQ0gy
NjRQYWNrZXRpemF0aW9uTW9kZSBwYWNrZXRpemF0aW9uTW9kZTsKLWRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVv
X2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5LmgKLWluZGV4IDdjYTk0NjNhNTkz
Li5kMTE0NjAzMDBkNSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZp
ZGVvRGVjb2RlckZhY3RvcnkuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0Vmlk
ZW9EZWNvZGVyRmFjdG9yeS5oCi1AQCAtMTksNiArMTksNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgotICAqICBjb2RlY3MsIGNyZWF0ZSBjdXN0b20gaW1wbGVtZW50YXRpb25zIG9mIFJUQ1Zp
ZGVvRW5jb2RlckZhY3RvcnkgYW5kIFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuCi0gICovCi0gUlRD
X09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0Rl
ZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5IikpKQotIEBpbnRlcmZhY2UgUlRDRGVmYXVsdFZpZGVv
RGVjb2RlckZhY3RvcnkgOiBOU09iamVjdCA8UlRDVmlkZW9EZWNvZGVyRmFjdG9yeT4KLSBAZW5k
Ci0gCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVy
RmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9y
eS5oCi1pbmRleCBjNDVlNTQzNjJiMi4uOTMyMzI1NmNlYWQgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3Zp
ZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5LmgKLSsrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlk
ZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkuaAotQEAgLTE5LDYgKzE5LDcg
QEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLSAgKiAgY29kZWNzLCBjcmVhdGUgY3VzdG9tIGlt
cGxlbWVudGF0aW9ucyBvZiBSVENWaWRlb0VuY29kZXJGYWN0b3J5IGFuZCBSVENWaWRlb0RlY29k
ZXJGYWN0b3J5LgotICAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNf
cnVudGltZV9uYW1lKCJXS19SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeSIpKSkKLSBAaW50
ZXJmYWNlIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5IDogTlNPYmplY3QgPFJUQ1ZpZGVv
RW5jb2RlckZhY3Rvcnk+Ci0gCi0gQHByb3BlcnR5KG5vbmF0b21pYywgcmV0YWluKSBSVENWaWRl
b0NvZGVjSW5mbyAqcHJlZmVycmVkQ29kZWM7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENIMjY0UHJvZmlsZUxldmVsSWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2Zp
bGVMZXZlbElkLmgKLWluZGV4IDU2YjM1MzIxNWEyLi5kMDIyMjk3Njc0ZSAxMDA2NDQKLS0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLmgKLSsrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlk
ZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLmgKLUBAIC00OCw2ICs0OCw3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBSVENIMjY0TGV2ZWwpIHsKLSB9OwotIAotIFJUQ19PQkpD
X0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENIMjY0UHJv
ZmlsZUxldmVsSWQiKSkpCi0gQGludGVyZmFjZSBSVENIMjY0UHJvZmlsZUxldmVsSWQgOiBOU09i
amVjdAotIAotIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBSVENIMjY0UHJvZmlsZSBw
cm9maWxlOwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZl
bElkLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0KLWluZGV4
IDM1OTY1NmNiOTdiLi4yOGY1MjEzOWMxNyAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMv
UlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQ
cm9maWxlTGV2ZWxJZC5tbQotQEAgLTE5LDIwICsxOSwzMCBAQAotICNpbmNsdWRlICJtZWRpYS9i
YXNlL2gyNjRfcHJvZmlsZV9sZXZlbF9pZC5oIgotICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlh
Y29uc3RhbnRzLmgiCi0gCi0rI2lmICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCi0gbmFt
ZXNwYWNlIHsKLSAKLSBOU1N0cmluZyAqTWF4U3VwcG9ydGVkUHJvZmlsZUxldmVsQ29uc3RyYWlu
ZWRIaWdoKCk7Ci0gTlNTdHJpbmcgKk1heFN1cHBvcnRlZFByb2ZpbGVMZXZlbENvbnN0cmFpbmVk
QmFzZWxpbmUoKTsKLSAKLSB9ICAvLyBuYW1lc3BhY2UKLSsjZW5kaWYKLSAKLS1OU1N0cmluZyAq
Y29uc3Qga1JUQ1ZpZGVvQ29kZWNIMjY0TmFtZSA9IEAoY3JpY2tldDo6a0gyNjRDb2RlY05hbWUp
OwotK05TU3RyaW5nICpjb25zdCBrUlRDVmlkZW9Db2RlY0gyNjROYW1lID0gQCJIMjY0IjsKLSBO
U1N0cmluZyAqY29uc3Qga1JUQ0xldmVsMzFDb25zdHJhaW5lZEhpZ2ggPSBAIjY0MGMxZiI7Ci0g
TlNTdHJpbmcgKmNvbnN0IGtSVENMZXZlbDMxQ29uc3RyYWluZWRCYXNlbGluZSA9IEAiNDJlMDFm
IjsKLSsKLSsjaWYgZGVmaW5lZChXRUJSVENfV0VCS0lUX0JVSUxEKQotK05TU3RyaW5nICpjb25z
dCBrUlRDTWF4U3VwcG9ydGVkSDI2NFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkSGlnaCA9Ci0rICAg
IEAiNjQwYzFmIjsKLStOU1N0cmluZyAqY29uc3Qga1JUQ01heFN1cHBvcnRlZEgyNjRQcm9maWxl
TGV2ZWxDb25zdHJhaW5lZEJhc2VsaW5lID0KLSsgICAgQCI0MmUwMWYiOwotKyNlbHNlCi0gTlNT
dHJpbmcgKmNvbnN0IGtSVENNYXhTdXBwb3J0ZWRIMjY0UHJvZmlsZUxldmVsQ29uc3RyYWluZWRI
aWdoID0KLSAgICAgTWF4U3VwcG9ydGVkUHJvZmlsZUxldmVsQ29uc3RyYWluZWRIaWdoKCk7Ci0g
TlNTdHJpbmcgKmNvbnN0IGtSVENNYXhTdXBwb3J0ZWRIMjY0UHJvZmlsZUxldmVsQ29uc3RyYWlu
ZWRCYXNlbGluZSA9Ci0gICAgIE1heFN1cHBvcnRlZFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkQmFz
ZWxpbmUoKTsKLSsjZW5kaWYKLSAKLSBuYW1lc3BhY2UgewotIAotQEAgLTUzLDYgKzYzLDggQEAg
TlNTdHJpbmcgKk1heFN1cHBvcnRlZExldmVsRm9yUHJvZmlsZShQcm9maWxlIHByb2ZpbGUpIHsK
LSB9Ci0gI2VuZGlmCi0gCi0rI2lmICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCi0rCi0g
TlNTdHJpbmcgKk1heFN1cHBvcnRlZFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkQmFzZWxpbmUoKSB7
Ci0gI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKLSAgIE5TU3RyaW5nICpwcm9maWxlID0gTWF4U3Vw
cG9ydGVkTGV2ZWxGb3JQcm9maWxlKHdlYnJ0Yzo6SDI2NDo6a1Byb2ZpbGVDb25zdHJhaW5lZEJh
c2VsaW5lKTsKLUBAIC03Myw2ICs4NSw4IEBAIE5TU3RyaW5nICpNYXhTdXBwb3J0ZWRQcm9maWxl
TGV2ZWxDb25zdHJhaW5lZEhpZ2goKSB7Ci0gICByZXR1cm4ga1JUQ0xldmVsMzFDb25zdHJhaW5l
ZEhpZ2g7Ci0gfQotIAotKyNlbmRpZgotKwotIH0gIC8vIG5hbWVzcGFjZQotIAotIEBpbnRlcmZh
Y2UgUlRDSDI2NFByb2ZpbGVMZXZlbElkICgpCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRl
b0RlY29kZXJGYWN0b3J5SDI2NC5oCi1pbmRleCA0ZmNmZjFkZmY3OS4uZmRhYmQ4MDc0ODAgMTAw
NjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0LmgK
LSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQuaAotQEAg
LTE0LDUgKzE0LDYgQEAKLSAjaW1wb3J0ICJSVENWaWRlb0RlY29kZXJGYWN0b3J5LmgiCi0gCi0g
UlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JU
Q1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0IikpKQotIEBpbnRlcmZhY2UgUlRDVmlkZW9EZWNvZGVy
RmFjdG9yeUgyNjQgOiBOU09iamVjdCA8UlRDVmlkZW9EZWNvZGVyRmFjdG9yeT4KLSBAZW5kCi1k
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQuaAotaW5kZXggYjg2MDI3NjIwNmMuLmIx
MGQxZTZhMDk5IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJI
MjY0LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5oCi1AQCAt
MTQsNSArMTQsNiBAQAotICNpbXBvcnQgIlJUQ1ZpZGVvRGVjb2Rlci5oIgotIAotIFJUQ19PQkpD
X0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0Rl
Y29kZXJIMjY0IikpKQotIEBpbnRlcmZhY2UgUlRDVmlkZW9EZWNvZGVySDI2NCA6IE5TT2JqZWN0
IDxSVENWaWRlb0RlY29kZXI+Ci0gQGVuZAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMv
UlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9F
bmNvZGVyRmFjdG9yeUgyNjQuaAotaW5kZXggYzY0NDA1ZTRkYWMuLjVmNmY3OGRmYTlhIDEwMDY0
NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NC5oCi0r
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9j
b21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0LmgKLUBAIC0x
NCw1ICsxNCw2IEBACi0gI2ltcG9ydCAiUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5oIgotIAotIFJU
Q19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENW
aWRlb0VuY29kZXJGYWN0b3J5SDI2NCIpKSkKLSBAaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlckZh
Y3RvcnlIMjY0IDogTlNPYmplY3QgPFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnk+Ci0gQGVuZAotZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0LmgKLWluZGV4IGE5YzA1NTgwYTQxLi43NzE0
YjI1ZWFhNCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2
NC5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQuaAotQEAgLTE1
LDYgKzE1LDcgQEAKLSAjaW1wb3J0ICJSVENWaWRlb0VuY29kZXIuaCIKLSAKLSBSVENfT0JKQ19F
WFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNv
ZGVySDI2NCIpKSkKLSBAaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlckgyNjQgOiBOU09iamVjdCA8
UlRDVmlkZW9FbmNvZGVyPgotIAotIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVjSW5mbzoo
UlRDVmlkZW9Db2RlY0luZm8gKiljb2RlY0luZm87Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19j
b2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0Vu
Y29kZXJIMjY0Lm1tCi1pbmRleCAxNmFkMWZmNDdhYS4uOTAxM2JhOTYyZmIgMTAwNjQ0Ci0tLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQubW0KLSsrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlk
ZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5tbQotQEAgLTksMzkgKzksNzIgQEAKLSAgKgot
ICAqLwotIAotLSNpbXBvcnQgIlJUQ1ZpZGVvRW5jb2RlckgyNjQuaCIKLSsjaW1wb3J0ICJXZWJS
VEMvUlRDVmlkZW9Db2RlY0gyNjQuaCIKLSAKLSAjaW1wb3J0IDxWaWRlb1Rvb2xib3gvVmlkZW9U
b29sYm94Lmg+Ci0gI2luY2x1ZGUgPHZlY3Rvcj4KLSAKLSAjaWYgZGVmaW5lZChXRUJSVENfSU9T
KQotLSNpbXBvcnQgImhlbHBlcnMvVUlEZXZpY2UrUlRDRGV2aWNlLmgiCi0rI2ltcG9ydCAiQ29t
bW9uL1JUQ1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZlci5oIgotKyNpbXBvcnQgIldlYlJUQy9V
SURldmljZStSVENEZXZpY2UuaCIKLSAjZW5kaWYKLS0jaW1wb3J0ICJSVENDb2RlY1NwZWNpZmlj
SW5mb0gyNjQuaCIKLS0jaW1wb3J0ICJSVENIMjY0UHJvZmlsZUxldmVsSWQuaCIKLS0jaW1wb3J0
ICJhcGkvcGVlcmNvbm5lY3Rpb24vUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlcitQcml2YXRlLmgi
Ci0tI2ltcG9ydCAiYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvQ29kZWNJbmZvK1ByaXZhdGUu
aCIKLS0jaW1wb3J0ICJiYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmgiCi0tI2ltcG9ydCAiYmFz
ZS9SVENJNDIwQnVmZmVyLmgiCi0tI2ltcG9ydCAiYmFzZS9SVENWaWRlb0VuY29kZXIuaCIKLS0j
aW1wb3J0ICJiYXNlL1JUQ1ZpZGVvRnJhbWUuaCIKLS0jaW1wb3J0ICJiYXNlL1JUQ1ZpZGVvRnJh
bWVCdWZmZXIuaCIKLS0jaW1wb3J0ICJjb21wb25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVEND
VlBpeGVsQnVmZmVyLmgiCi0tI2ltcG9ydCAiaGVscGVycy5oIgotLQotKyNpbXBvcnQgIlBlZXJD
b25uZWN0aW9uL1JUQ1ZpZGVvQ29kZWMrUHJpdmF0ZS5oIgotKyNpbXBvcnQgIldlYlJUQy9SVENW
aWRlb0NvZGVjLmgiCi0rI2ltcG9ydCAiV2ViUlRDL1JUQ1ZpZGVvRnJhbWUuaCIKLSsjaW1wb3J0
ICJXZWJSVEMvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIgotICNpbmNsdWRlICJjb21tb25fdmlkZW8v
aDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuaCIKLSAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gy
NjQvcHJvZmlsZV9sZXZlbF9pZC5oIgotICNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS9i
aXRyYXRlX2FkanVzdGVyLmgiCi0rI2ltcG9ydCAiaGVscGVycy5oIgotICNpbmNsdWRlICJtb2R1
bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgotICNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vycm9yX2NvZGVzLmgiCi0gI2luY2x1ZGUgInJ0Y19i
YXNlL2J1ZmZlci5oIgotICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0gI2luY2x1ZGUg
InJ0Y19iYXNlL3RpbWV1dGlscy5oIgotLSNpbmNsdWRlICJzZGsvb2JqYy9jb21wb25lbnRzL3Zp
ZGVvX2NvZGVjL25hbHVfcmV3cml0ZXIuaCIKLSsjaW5jbHVkZSAic2RrL29iamMvRnJhbWV3b3Jr
L0NsYXNzZXMvVmlkZW9Ub29sYm94L25hbHVfcmV3cml0ZXIuaCIKLSsjaW5jbHVkZSAic3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2
L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgotIAotLUBpbnRlcmZhY2UgUlRDVmlkZW9F
bmNvZGVySDI2NCAoKQotKyNpbmNsdWRlICJzZGsvV2ViS2l0L0VuY29kZXJVdGlsaXRpZXMuaCIK
LSsjaW5jbHVkZSAic2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaCIKLSsKLSsjaW1wb3J0IDxk
bGZjbi5oPgotKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotKwotK1NPRlRfTElOS19GUkFNRVdP
UktfT1BUSU9OQUwoVmlkZW9Ub29sQm94KQotK1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKFZp
ZGVvVG9vbEJveCwga1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9Vc2FnZSwgTlNTdHJpbmcg
KikKLSsKLSsjaWYgIUVOQUJMRV9WQ1BfRU5DT0RFUiAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQot
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc1N0YW5kYXJkRnJhbWVTaXplKGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQotK3sKLSsgICAgLy8gRklYTUU6IEVudmlzaW9uIHJlbGF4aW5nIHRoaXMg
cnVsZSwgc29tZXRoaW5nIGxpa2Ugd2lkdGggYW5kIGhlaWdodCBkaXZpZGFibGUgYnkgNCBvciA4
IHNob3VsZCBiZSBnb29kIGVub3VnaC4KLSsgICAgaWYgKHdpZHRoID09IDEyODApCi0rICAgICAg
ICByZXR1cm4gaGVpZ2h0ID09IDcyMDsKLSsgICAgaWYgKHdpZHRoID09IDcyMCkKLSsgICAgICAg
IHJldHVybiBoZWlnaHQgPT0gMTI4MDsKLSsgICAgaWYgKHdpZHRoID09IDk2MCkKLSsgICAgICAg
IHJldHVybiBoZWlnaHQgPT0gNTQwOwotKyAgICBpZiAod2lkdGggPT0gNTQwKQotKyAgICAgICAg
cmV0dXJuIGhlaWdodCA9PSA5NjA7Ci0rICAgIGlmICh3aWR0aCA9PSA2NDApCi0rICAgICAgICBy
ZXR1cm4gaGVpZ2h0ID09IDQ4MDsKLSsgICAgaWYgKHdpZHRoID09IDQ4MCkKLSsgICAgICAgIHJl
dHVybiBoZWlnaHQgPT0gNjQwOwotKyAgICBpZiAod2lkdGggPT0gMjg4KQotKyAgICAgICAgcmV0
dXJuIGhlaWdodCA9PSAzNTI7Ci0rICAgIGlmICh3aWR0aCA9PSAzNTIpCi0rICAgICAgICByZXR1
cm4gaGVpZ2h0ID09IDI4ODsKLSsgICAgaWYgKHdpZHRoID09IDMyMCkKLSsgICAgICAgIHJldHVy
biBoZWlnaHQgPT0gMjQwOwotKyAgICBpZiAod2lkdGggPT0gMjQwKQotKyAgICAgICAgcmV0dXJu
IGhlaWdodCA9PSAzMjA7Ci0rICAgIHJldHVybiBmYWxzZTsKLSt9Ci0rI2VuZGlmCi0gCi0rX19h
dHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1NpbmdsZVZpZGVvRW5jb2Rlckgy
NjQiKSkpCi0rQGludGVyZmFjZSBSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IDogTlNPYmplY3Qg
PFJUQ1ZpZGVvRW5jb2Rlcj4KLSstIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlY0luZm86KFJU
Q1ZpZGVvQ29kZWNJbmZvICopY29kZWNJbmZvIHNpbXVsY2FzdEluZGV4OiAoaW50KWluZGV4Owot
IC0gKHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1cylzdGF0dXMKLSAgICAgICAgICAgICAg
ICAgICBmbGFnczooVlRFbmNvZGVJbmZvRmxhZ3MpaW5mb0ZsYWdzCi0gICAgICAgICAgICBzYW1w
bGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgotQEAgLTUxLDcgKzg0LDYg
QEAgLSAodm9pZClmcmFtZVdhc0VuY29kZWQ6KE9TU3RhdHVzKXN0YXR1cwotICAgICAgICAgICAg
cmVuZGVyVGltZU1zOihpbnQ2NF90KXJlbmRlclRpbWVNcwotICAgICAgICAgICAgICAgdGltZXN0
YW1wOih1aW50MzJfdCl0aW1lc3RhbXAKLSAgICAgICAgICAgICAgICByb3RhdGlvbjooUlRDVmlk
ZW9Sb3RhdGlvbilyb3RhdGlvbjsKLS0KLSBAZW5kCi0gCi0gbmFtZXNwYWNlIHsgIC8vIGFub255
bW91cyBuYW1lc3BhY2UKLUBAIC03MCw3ICsxMDIsNyBAQCBjb25zdCBPU1R5cGUga05WMTJQaXhl
bEZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2U7
Ci0gLy8gU3RydWN0IHRoYXQgd2UgcGFzcyB0byB0aGUgZW5jb2RlciBwZXIgZnJhbWUgdG8gZW5j
b2RlLiBXZSByZWNlaXZlIGl0IGFnYWluCi0gLy8gaW4gdGhlIGVuY29kZXIgY2FsbGJhY2suCi0g
c3RydWN0IFJUQ0ZyYW1lRW5jb2RlUGFyYW1zIHsKLS0gIFJUQ0ZyYW1lRW5jb2RlUGFyYW1zKFJU
Q1ZpZGVvRW5jb2RlckgyNjQgKmUsCi0rICBSVENGcmFtZUVuY29kZVBhcmFtcyhSVENTaW5nbGVW
aWRlb0VuY29kZXJIMjY0ICplLAotICAgICAgICAgICAgICAgICAgICAgICAgUlRDQ29kZWNTcGVj
aWZpY0luZm9IMjY0ICpjc2ksCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGgsCi1AQCAtODUsNyArMTE3LDcgQEAgc3Ry
dWN0IFJUQ0ZyYW1lRW5jb2RlUGFyYW1zIHsKLSAgICAgfQotICAgfQotIAotLSAgUlRDVmlkZW9F
bmNvZGVySDI2NCAqZW5jb2RlcjsKLSsgIFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgKmVuY29k
ZXI7Ci0gICBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQgKmNvZGVjU3BlY2lmaWNJbmZvOwotICAg
aW50MzJfdCB3aWR0aDsKLSAgIGludDMyX3QgaGVpZ2h0OwotQEAgLTE3Myw4ICsyMDUsOCBAQCB2
b2lkIGNvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2sodm9pZCAqZW5jb2RlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOmVuY29kZVBhcmFtcy0+cm90YXRpb25dOwot
IH0KLSAKLS0vLyBFeHRyYWN0IFZpZGVvVG9vbGJveCBwcm9maWxlIG91dCBvZiB0aGUgd2VicnRj
OjpTZHBWaWRlb0Zvcm1hdC4gSWYgdGhlcmUgaXMKLS0vLyBubyBzcGVjaWZpYyBWaWRlb1Rvb2xi
b3ggcHJvZmlsZSBmb3IgdGhlIHNwZWNpZmllZCBsZXZlbCwgQXV0b0xldmVsIHdpbGwgYmUKLSsv
LyBFeHRyYWN0IFZpZGVvVG9vbGJveCBwcm9maWxlIG91dCBvZiB0aGUgY3JpY2tldDo6VmlkZW9D
b2RlYy4gSWYgdGhlcmUgaXMgbm8KLSsvLyBzcGVjaWZpYyBWaWRlb1Rvb2xib3ggcHJvZmlsZSBm
b3IgdGhlIHNwZWNpZmllZCBsZXZlbCwgQXV0b0xldmVsIHdpbGwgYmUKLSAvLyByZXR1cm5lZC4g
VGhlIHVzZXIgbXVzdCBpbml0aWFsaXplIHRoZSBlbmNvZGVyIHdpdGggYSByZXNvbHV0aW9uIGFu
ZAotIC8vIGZyYW1lcmF0ZSBjb25mb3JtaW5nIHRvIHRoZSBzZWxlY3RlZCBIMjY0IGxldmVsIHJl
Z2FyZGxlc3MuCi0gQ0ZTdHJpbmdSZWYgRXh0cmFjdFByb2ZpbGUod2VicnRjOjpTZHBWaWRlb0Zv
cm1hdCB2aWRlb0Zvcm1hdCkgewotQEAgLTI4MCw3ICszMTIsNyBAQCBDRlN0cmluZ1JlZiBFeHRy
YWN0UHJvZmlsZSh3ZWJydGM6OlNkcFZpZGVvRm9ybWF0IHZpZGVvRm9ybWF0KSB7Ci0gfQotIH0g
IC8vIG5hbWVzcGFjZQotIAotLUBpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0VuY29kZXJIMjY0IHsK
LStAaW1wbGVtZW50YXRpb24gUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCB7Ci0gICBSVENWaWRl
b0NvZGVjSW5mbyAqX2NvZGVjSW5mbzsKLSAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkJpdHJh
dGVBZGp1c3Rlcj4gX2JpdHJhdGVBZGp1c3RlcjsKLSAgIHVpbnQzMl90IF90YXJnZXRCaXRyYXRl
QnBzOwotQEAgLTI5MCwxMiArMzIyLDE0IEBAIEBpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0VuY29k
ZXJIMjY0IHsKLSAgIFJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrIF9jYWxsYmFjazsKLSAgIGludDMy
X3QgX3dpZHRoOwotICAgaW50MzJfdCBfaGVpZ2h0OwotLSAgVlRDb21wcmVzc2lvblNlc3Npb25S
ZWYgX2NvbXByZXNzaW9uU2Vzc2lvbjsKLS0gIENWUGl4ZWxCdWZmZXJQb29sUmVmIF9waXhlbEJ1
ZmZlclBvb2w7Ci0rICBDb21wcmVzc2lvblNlc3Npb25SZWYgX2NvbXByZXNzaW9uU2Vzc2lvbjsK
LSAgIFJUQ1ZpZGVvQ29kZWNNb2RlIF9tb2RlOwotIAotICAgd2VicnRjOjpIMjY0Qml0c3RyZWFt
UGFyc2VyIF9oMjY0Qml0c3RyZWFtUGFyc2VyOwotICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gX2Zy
YW1lU2NhbGVCdWZmZXI7Ci0rCi0rICB3ZWJydGM6OlZpZGVvQ29kZWMgX25hdGl2ZVZpZGVvQ29k
ZWM7Ci0rICBpbnQgX3NpbXVsY2FzdEluZGV4OwotIH0KLSAKLSAvLyAuNSBpcyBzZXQgYXMgYSBt
aW5pbnVtIHRvIHByZXZlbnQgb3ZlcmNvbXBlbnNhdGluZyBmb3IgbGFyZ2UgdGVtcG9yYXJ5Ci1A
QCAtMzA1LDE0ICszMzksMTkgQEAgQGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVvRW5jb2RlckgyNjQg
ewotIC8vIGRyYXN0aWNhbGx5IHJlZHVjZWQgYml0cmF0ZSwgc28gd2Ugd2FudCB0byBhdm9pZCB0
aGF0LiBJbiBzdGVhZHkgc3RhdGUKLSAvLyBjb25kaXRpb25zLCAwLjk1IHNlZW1zIHRvIGdpdmUg
dXMgYmV0dGVyIG92ZXJhbGwgYml0cmF0ZSBvdmVyIGxvbmcgcGVyaW9kcwotIC8vIG9mIHRpbWUu
Ci0tLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZWNJbmZvOihSVENWaWRlb0NvZGVjSW5mbyAq
KWNvZGVjSW5mbyB7Ci0rLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZWNJbmZvOihSVENWaWRl
b0NvZGVjSW5mbyAqKWNvZGVjSW5mbyBzaW11bGNhc3RJbmRleDooaW50KWluZGV4IHsKLSAgIGlm
IChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgIF9jb2RlY0luZm8gPSBjb2RlY0luZm87Ci0g
ICAgIF9iaXRyYXRlQWRqdXN0ZXIucmVzZXQobmV3IHdlYnJ0Yzo6Qml0cmF0ZUFkanVzdGVyKC41
LCAuOTUpKTsKLSAgICAgX3BhY2tldGl6YXRpb25Nb2RlID0gUlRDSDI2NFBhY2tldGl6YXRpb25N
b2RlTm9uSW50ZXJsZWF2ZWQ7Ci0gICAgIF9wcm9maWxlID0gRXh0cmFjdFByb2ZpbGUoW2NvZGVj
SW5mbyBuYXRpdmVTZHBWaWRlb0Zvcm1hdF0pOwotKyAgICBfc2ltdWxjYXN0SW5kZXggPSBpbmRl
eDsKLSAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiVXNpbmcgcHJvZmlsZSAiIDw8IENGU3RyaW5n
VG9TdHJpbmcoX3Byb2ZpbGUpOwotICAgICBSVENfQ0hFQ0soW2NvZGVjSW5mby5uYW1lIGlzRXF1
YWxUb1N0cmluZzprUlRDVmlkZW9Db2RlY0gyNjROYW1lXSk7Ci0rCi0rI2lmIGRlZmluZWQoV0VC
UlRDX0lPUykKLSsgICAgW1JUQ1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciBwcmVwYXJlRm9y
VXNlXTsKLSsjZW5kaWYKLSAgIH0KLSAgIHJldHVybiBzZWxmOwotIH0KLUBAIC0zMjksOSArMzY4
LDEyIEBAIC0gKE5TSW50ZWdlcilzdGFydEVuY29kZVdpdGhTZXR0aW5nczooUlRDVmlkZW9FbmNv
ZGVyU2V0dGluZ3MgKilzZXR0aW5ncwotICAgX3dpZHRoID0gc2V0dGluZ3Mud2lkdGg7Ci0gICBf
aGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0OwotICAgX21vZGUgPSBzZXR0aW5ncy5tb2RlOwotKyAg
X25hdGl2ZVZpZGVvQ29kZWMgPSBzZXR0aW5ncy5uYXRpdmVWaWRlb0NvZGVjOwotKwotKyAgUlRD
X0RDSEVDSyhfbmF0aXZlVmlkZW9Db2RlYy5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMgIT0gMSk7
Ci0gCi0gICAvLyBXZSBjYW4gb25seSBzZXQgYXZlcmFnZSBiaXRyYXRlIG9uIHRoZSBIVyBlbmNv
ZGVyLgotLSAgX3RhcmdldEJpdHJhdGVCcHMgPSBzZXR0aW5ncy5zdGFydEJpdHJhdGUgKiAxMDAw
OyAgLy8gc3RhcnRCaXRyYXRlIGlzIGluIGticHMuCi0rICBfdGFyZ2V0Qml0cmF0ZUJwcyA9IHNl
dHRpbmdzLnN0YXJ0Qml0cmF0ZTsKLSAgIF9iaXRyYXRlQWRqdXN0ZXItPlNldFRhcmdldEJpdHJh
dGVCcHMoX3RhcmdldEJpdHJhdGVCcHMpOwotIAotICAgLy8gVE9ETyh0a2NoaW4pOiBUcnkgc2V0
dGluZyBwYXlsb2FkIHNpemUgdmlhCi1AQCAtMzQ4LDEwICszOTAsMjAgQEAgLSAoTlNJbnRlZ2Vy
KWVuY29kZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1lCi0gICBpZiAoIV9jYWxsYmFjayB8fCAhX2Nv
bXByZXNzaW9uU2Vzc2lvbikgewotICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX1VOSU5J
VElBTElaRUQ7Ci0gICB9Ci0rI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKLSsgIGlmICghW1tSVENV
SUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIgc2hhcmVkSW5zdGFuY2VdIGlzQXBwbGljYXRpb25B
Y3RpdmVdKSB7Ci0rICAgIC8vIElnbm9yZSBhbGwgZW5jb2RlIHJlcXVlc3RzIHdoZW4gYXBwIGlz
bid0IGFjdGl2ZS4gSW4gdGhpcyBzdGF0ZSwgdGhlCi0rICAgIC8vIGhhcmR3YXJlIGVuY29kZXIg
aGFzIGJlZW4gaW52YWxpZGF0ZWQgYnkgdGhlIE9TLgotKyAgICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX09LOwotKyAgfQotKyNlbmRpZgotICAgQk9PTCBpc0tleWZyYW1lUmVxdWlyZWQgPSBO
TzsKLSAKLSAgIC8vIEdldCBhIHBpeGVsIGJ1ZmZlciBmcm9tIHRoZSBwb29sIGFuZCBjb3B5IGZy
YW1lIGRhdGEgb3Zlci4KLS0gIGlmIChbc2VsZiByZXNldENvbXByZXNzaW9uU2Vzc2lvbklmTmVl
ZGVkV2l0aEZyYW1lOmZyYW1lXSkgewotKyAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZm
ZXJQb29sID0KLSsgICAgICBDb21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2woX2Nv
bXByZXNzaW9uU2Vzc2lvbik7Ci0rICBpZiAoW3NlbGYgcmVzZXRDb21wcmVzc2lvblNlc3Npb25J
Zk5lZWRlZEZvclBvb2w6cGl4ZWxCdWZmZXJQb29sIHdpdGhGcmFtZTpmcmFtZV0pIHsKLSsgICAg
cGl4ZWxCdWZmZXJQb29sID0gQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sKF9j
b21wcmVzc2lvblNlc3Npb24pOwotICAgICBpc0tleWZyYW1lUmVxdWlyZWQgPSBZRVM7Ci0gICB9
Ci0gCi1AQCAtMzY4LDcgKzQyMCw3IEBAIC0gKE5TSW50ZWdlcillbmNvZGU6KFJUQ1ZpZGVvRnJh
bWUgKilmcmFtZQotICAgICAgIENWQnVmZmVyUmV0YWluKHBpeGVsQnVmZmVyKTsKLSAgICAgfSBl
bHNlIHsKLSAgICAgICAvLyBDcm9wcGluZyByZXF1aXJlZCwgd2UgbmVlZCB0byBjcm9wIGFuZCBz
Y2FsZSB0byBhIG5ldyBwaXhlbCBidWZmZXIuCi0tICAgICAgcGl4ZWxCdWZmZXIgPSBDcmVhdGVQ
aXhlbEJ1ZmZlcihfcGl4ZWxCdWZmZXJQb29sKTsKLSsgICAgICBwaXhlbEJ1ZmZlciA9IENyZWF0
ZVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyUG9vbCk7Ci0gICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikg
ewotICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKLSAgICAgICB9Ci1A
QCAtMzkxLDcgKzQ0Myw3IEBAIC0gKE5TSW50ZWdlcillbmNvZGU6KFJUQ1ZpZGVvRnJhbWUgKilm
cmFtZQotIAotICAgaWYgKCFwaXhlbEJ1ZmZlcikgewotICAgICAvLyBXZSBkaWQgbm90IGhhdmUg
YSBuYXRpdmUgZnJhbWUgYnVmZmVyCi0tICAgIHBpeGVsQnVmZmVyID0gQ3JlYXRlUGl4ZWxCdWZm
ZXIoX3BpeGVsQnVmZmVyUG9vbCk7Ci0rICAgIHBpeGVsQnVmZmVyID0gQ3JlYXRlUGl4ZWxCdWZm
ZXIocGl4ZWxCdWZmZXJQb29sKTsKLSAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewotICAgICAgIHJl
dHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0gICAgIH0KLUBAIC00MzQsNyArNDg2LDcg
QEAgLSAoTlNJbnRlZ2VyKWVuY29kZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1lCi0gICAvLyBVcGRh
dGUgdGhlIGJpdHJhdGUgaWYgbmVlZGVkLgotICAgW3NlbGYgc2V0Qml0cmF0ZUJwczpfYml0cmF0
ZUFkanVzdGVyLT5HZXRBZGp1c3RlZEJpdHJhdGVCcHMoKV07Ci0gCi0tICBPU1N0YXR1cyBzdGF0
dXMgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKF9jb21wcmVzc2lvblNlc3Npb24s
Ci0rICBPU1N0YXR1cyBzdGF0dXMgPSBDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZShfY29t
cHJlc3Npb25TZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwaXhlbEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudGF0aW9uVGltZVN0YW1wLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ01UaW1lSW52YWxp
ZCwKLUBAIC00NDcsMTQgKzQ5OSw3IEBAIC0gKE5TSW50ZWdlcillbmNvZGU6KFJUQ1ZpZGVvRnJh
bWUgKilmcmFtZQotICAgaWYgKHBpeGVsQnVmZmVyKSB7Ci0gICAgIENWQnVmZmVyUmVsZWFzZShw
aXhlbEJ1ZmZlcik7Ci0gICB9Ci0tCi0tICBpZiAoc3RhdHVzID09IGtWVEludmFsaWRTZXNzaW9u
RXJyKSB7Ci0tICAgIC8vIFRoaXMgZXJyb3Igb2NjdXJzIHdoZW4gZW50ZXJpbmcgZm9yZWdyb3Vu
ZCBhZnRlciBiYWNrZ3JvdW5kaW5nIHRoZSBhcHAuCi0tICAgIFJUQ19MT0coTFNfRVJST1IpIDw8
ICJJbnZhbGlkIGNvbXByZXNzaW9uIHNlc3Npb24sIHJlc2V0dGluZy4iOwotLSAgICBbc2VsZiBy
ZXNldENvbXByZXNzaW9uU2Vzc2lvbldpdGhQaXhlbEZvcm1hdDpbc2VsZiBwaXhlbEZvcm1hdE9m
RnJhbWU6ZnJhbWVdXTsKLS0KLS0gICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19OT19PVVRQ
VVQ7Ci0tICB9IGVsc2UgaWYgKHN0YXR1cyAhPSBub0VycikgewotKyAgaWYgKHN0YXR1cyAhPSBu
b0VycikgewotICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGVuY29kZSBmcmFt
ZSB3aXRoIGNvZGU6ICIgPDwgc3RhdHVzOwotICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVD
X0VSUk9SOwotICAgfQotQEAgLTQ2NSw4ICs1MTAsOCBAQCAtICh2b2lkKXNldENhbGxiYWNrOihS
VENWaWRlb0VuY29kZXJDYWxsYmFjayljYWxsYmFjayB7Ci0gICBfY2FsbGJhY2sgPSBjYWxsYmFj
azsKLSB9Ci0gCi0tLSAoaW50KXNldEJpdHJhdGU6KHVpbnQzMl90KWJpdHJhdGVLYml0IGZyYW1l
cmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsKLS0gIF90YXJnZXRCaXRyYXRlQnBzID0gMTAwMCAq
IGJpdHJhdGVLYml0OwotKy0gKGludClzZXRCaXRyYXRlOih1aW50MzJfdCliaXRyYXRlQnBzIGZy
YW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsKLSsgIF90YXJnZXRCaXRyYXRlQnBzID0gYml0
cmF0ZUJwczsKLSAgIF9iaXRyYXRlQWRqdXN0ZXItPlNldFRhcmdldEJpdHJhdGVCcHMoX3Rhcmdl
dEJpdHJhdGVCcHMpOwotICAgW3NlbGYgc2V0Qml0cmF0ZUJwczpfYml0cmF0ZUFkanVzdGVyLT5H
ZXRBZGp1c3RlZEJpdHJhdGVCcHMoKV07Ci0gICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09L
OwotQEAgLTQ4Myw0NCArNTI4LDUxIEBAIC0gKE5TSW50ZWdlcilyZWxlYXNlRW5jb2RlciB7Ci0g
ICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwotIH0KLSAKLS0tIChPU1R5cGUpcGl4ZWxG
b3JtYXRPZkZyYW1lOihSVENWaWRlb0ZyYW1lICopZnJhbWUgewotLSAgLy8gVXNlIE5WMTIgZm9y
IG5vbi1uYXRpdmUgZnJhbWVzLgotLSAgaWYgKFtmcmFtZS5idWZmZXIgaXNLaW5kT2ZDbGFzczpb
UlRDQ1ZQaXhlbEJ1ZmZlciBjbGFzc11dKSB7Ci0tICAgIFJUQ0NWUGl4ZWxCdWZmZXIgKnJ0Y1Bp
eGVsQnVmZmVyID0gKFJUQ0NWUGl4ZWxCdWZmZXIgKilmcmFtZS5idWZmZXI7Ci0tICAgIHJldHVy
biBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHJ0Y1BpeGVsQnVmZmVyLnBpeGVsQnVm
ZmVyKTsKLS0gIH0KLS0KLS0gIHJldHVybiBrTlYxMlBpeGVsRm9ybWF0OwotLX0KLS0KLS0tIChC
T09MKXJlc2V0Q29tcHJlc3Npb25TZXNzaW9uSWZOZWVkZWRXaXRoRnJhbWU6KFJUQ1ZpZGVvRnJh
bWUgKilmcmFtZSB7Ci0rLSAoQk9PTClyZXNldENvbXByZXNzaW9uU2Vzc2lvbklmTmVlZGVkRm9y
UG9vbDooQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYpcGl4ZWxCdWZmZXJQb29sCi0rICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhGcmFtZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1l
IHsKLSAgIEJPT0wgcmVzZXRDb21wcmVzc2lvblNlc3Npb24gPSBOTzsKLSAKLSsjaWYgZGVmaW5l
ZChXRUJSVENfSU9TKQotKyAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpIHsKLSsgICAgLy8gS2luZCBv
ZiBhIGhhY2suIE9uIGJhY2tncm91bmRpbmcsIHRoZSBjb21wcmVzc2lvbiBzZXNzaW9uIHNlZW1z
IHRvIGdldAotKyAgICAvLyBpbnZhbGlkYXRlZCwgd2hpY2ggY2F1c2VzIHRoaXMgcG9vbCBjYWxs
IHRvIGZhaWwgd2hlbiB0aGUgYXBwbGljYXRpb24KLSsgICAgLy8gaXMgZm9yZWdyb3VuZGVkIGFu
ZCBmcmFtZXMgYXJlIGJlaW5nIHNlbnQgZm9yIGVuY29kaW5nIGFnYWluLgotKyAgICAvLyBSZXNl
dHRpbmcgdGhlIHNlc3Npb24gd2hlbiB0aGlzIGhhcHBlbnMgZml4ZXMgdGhlIGlzc3VlLgotKyAg
ICAvLyBJbiBhZGRpdGlvbiB3ZSByZXF1ZXN0IGEga2V5ZnJhbWUgc28gdmlkZW8gY2FuIHJlY292
ZXIgcXVpY2tseS4KLSsgICAgcmVzZXRDb21wcmVzc2lvblNlc3Npb24gPSBZRVM7Ci0rICAgIFJU
Q19MT0coTFNfSU5GTykgPDwgIlJlc2V0dGluZyBjb21wcmVzc2lvbiBzZXNzaW9uIGR1ZSB0byBp
bnZhbGlkIHBvb2wuIjsKLSsgIH0KLSsjZW5kaWYKLSsKLSAgIC8vIElmIHdlJ3JlIGNhcHR1cmlu
ZyBuYXRpdmUgZnJhbWVzIGluIGFub3RoZXIgcGl4ZWwgZm9ybWF0IHRoYW4gdGhlIGNvbXByZXNz
aW9uIHNlc3Npb24gaXMKLSAgIC8vIGNvbmZpZ3VyZWQgd2l0aCwgbWFrZSBzdXJlIHRoZSBjb21w
cmVzc2lvbiBzZXNzaW9uIGlzIHJlc2V0IHVzaW5nIHRoZSBjb3JyZWN0IHBpeGVsIGZvcm1hdC4K
LS0gIE9TVHlwZSBmcmFtZVBpeGVsRm9ybWF0ID0gW3NlbGYgcGl4ZWxGb3JtYXRPZkZyYW1lOmZy
YW1lXTsKLS0KLS0gIGlmIChfY29tcHJlc3Npb25TZXNzaW9uKSB7Ci0rICAvLyBJZiB3ZSdyZSBj
YXB0dXJpbmcgbm9uLW5hdGl2ZSBmcmFtZXMgYW5kIHRoZSBjb21wcmVzc2lvbiBzZXNzaW9uIGlz
IGNvbmZpZ3VyZWQgd2l0aCBhIG5vbi1OVjEyCi0rICAvLyBmb3JtYXQsIHJlc2V0IGl0IHRvIE5W
MTIuCi0rICBPU1R5cGUgZnJhbWVQaXhlbEZvcm1hdCA9IGtOVjEyUGl4ZWxGb3JtYXQ7Ci0rICBp
ZiAocGl4ZWxCdWZmZXJQb29sKSB7Ci0gICAgIC8vIFRoZSBwb29sIGF0dHJpYnV0ZSBga0NWUGl4
ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXlgIGNhbiBjb250YWluIGVpdGhlciBhbiBhcnJheSBv
ZiBwaXhlbAotICAgICAvLyBmb3JtYXRzIG9yIGEgc2luZ2xlIHBpeGVsIGZvcm1hdC4KLSAgICAg
TlNEaWN0aW9uYXJ5ICpwb29sQXR0cmlidXRlcyA9Ci0tICAgICAgICAoX19icmlkZ2UgTlNEaWN0
aW9uYXJ5ICopQ1ZQaXhlbEJ1ZmZlclBvb2xHZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMoX3BpeGVs
QnVmZmVyUG9vbCk7Ci0rICAgICAgICAoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopQ1ZQaXhlbEJ1
ZmZlclBvb2xHZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMocGl4ZWxCdWZmZXJQb29sKTsKLSAgICAg
aWQgcGl4ZWxGb3JtYXRzID0KLSAgICAgICAgIFtwb29sQXR0cmlidXRlcyBvYmplY3RGb3JLZXk6
KF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXldOwot
ICAgICBOU0FycmF5PE5TTnVtYmVyICo+ICpjb21wcmVzc2lvblNlc3Npb25QaXhlbEZvcm1hdHMg
PSBuaWw7Ci0gICAgIGlmIChbcGl4ZWxGb3JtYXRzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xh
c3NdXSkgewotICAgICAgIGNvbXByZXNzaW9uU2Vzc2lvblBpeGVsRm9ybWF0cyA9IChOU0FycmF5
ICopcGl4ZWxGb3JtYXRzOwotLSAgICB9IGVsc2UgaWYgKFtwaXhlbEZvcm1hdHMgaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdXSkgewotKyAgICB9IGVsc2UgewotICAgICAgIGNvbXByZXNz
aW9uU2Vzc2lvblBpeGVsRm9ybWF0cyA9IEBbIChOU051bWJlciAqKXBpeGVsRm9ybWF0cyBdOwot
ICAgICB9Ci0gCi0rICAgIGlmIChbZnJhbWUuYnVmZmVyIGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4
ZWxCdWZmZXIgY2xhc3NdXSkgewotKyAgICAgIFJUQ0NWUGl4ZWxCdWZmZXIgKnJ0Y1BpeGVsQnVm
ZmVyID0gKFJUQ0NWUGl4ZWxCdWZmZXIgKilmcmFtZS5idWZmZXI7Ci0rICAgICAgZnJhbWVQaXhl
bEZvcm1hdCA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocnRjUGl4ZWxCdWZmZXIu
cGl4ZWxCdWZmZXIpOwotKyAgICB9Ci0rCi0gICAgIGlmICghW2NvbXByZXNzaW9uU2Vzc2lvblBp
eGVsRm9ybWF0cwotICAgICAgICAgICAgIGNvbnRhaW5zT2JqZWN0OltOU051bWJlciBudW1iZXJX
aXRoTG9uZzpmcmFtZVBpeGVsRm9ybWF0XV0pIHsKLSAgICAgICByZXNldENvbXByZXNzaW9uU2Vz
c2lvbiA9IFlFUzsKLSAgICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJSZXNldHRpbmcgY29tcHJl
c3Npb24gc2Vzc2lvbiBkdWUgdG8gbm9uLW1hdGNoaW5nIHBpeGVsIGZvcm1hdC4iOwotICAgICB9
Ci0tICB9IGVsc2UgewotLSAgICByZXNldENvbXByZXNzaW9uU2Vzc2lvbiA9IFlFUzsKLSAgIH0K
LSAKLSAgIGlmIChyZXNldENvbXByZXNzaW9uU2Vzc2lvbikgewotQEAgLTU1NywyMiArNjA5LDI2
IEBAIC0gKGludClyZXNldENvbXByZXNzaW9uU2Vzc2lvbldpdGhQaXhlbEZvcm1hdDooT1NUeXBl
KWZyYW1lUGl4ZWxGb3JtYXQgewotICAgICBDRlJlbGVhc2UocGl4ZWxGb3JtYXQpOwotICAgICBw
aXhlbEZvcm1hdCA9IG51bGxwdHI7Ci0gICB9Ci0tICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGVu
Y29kZXJfc3BlY3MgPSBudWxscHRyOwotLSNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpICYmICFkZWZp
bmVkKFdFQlJUQ19JT1MpCi0rICBDRkRpY3Rpb25hcnlSZWYgZW5jb2RlclNwZWNzID0gbnVsbHB0
cjsKLSsjaWYgIWRlZmluZWQoV0VCUlRDX0lPUykKLSsgIGF1dG8gdXNlSGFyZHdhcmVFbmNvZGVy
ID0gd2VicnRjOjppc0gyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKCkgPyBrQ0ZCb29sZWFuVHJ1
ZSA6IGtDRkJvb2xlYW5GYWxzZTsKLSAgIC8vIEN1cnJlbnRseSBodyBhY2NsIGlzIHN1cHBvcnRl
ZCBhYm92ZSAzNjBwIG9uIG1hYywgYmVsb3cgMzYwcAotICAgLy8gdGhlIGNvbXByZXNzaW9uIHNl
c3Npb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggaHcgYWNjbCBkaXNhYmxlZC4KLS0gIGVuY29kZXJf
c3BlY3MgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKAotLSAgICAgIG51bGxwdHIsIDEsICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpOwotLSAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZW5jb2Rlcl9zcGVjcywKLS0gICAgICAg
ICAgICAgICAgICAgICAgIGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdh
cmVBY2NlbGVyYXRlZFZpZGVvRW5jb2RlciwKLS0gICAgICAgICAgICAgICAgICAgICAgIGtDRkJv
b2xlYW5UcnVlKTsKLSsgIENGVHlwZVJlZiBzZXNzaW9uS2V5c1tdID0geyBrVlRWaWRlb0VuY29k
ZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsIGtW
VFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fUmVxdWlyZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRl
b0VuY29kZXIsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgfTsKLSsgIENGVHlw
ZVJlZiBzZXNzaW9uVmFsdWVzW10gPSB7IHVzZUhhcmR3YXJlRW5jb2RlciwgdXNlSGFyZHdhcmVF
bmNvZGVyLCBrQ0ZCb29sZWFuVHJ1ZSB9OwotKyAgZW5jb2RlclNwZWNzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb25LZXlzLCBzZXNzaW9uVmFsdWVzLCAz
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKTsKLSsjZWxzZQotKyAgQ0ZUeXBlUmVmIHNlc3Npb25LZXlzW10gPSB7IGtWVENv
bXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgfTsKLSsgIENGVHlwZVJlZiBzZXNzaW9uVmFs
dWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07Ci0rICBlbmNvZGVyU3BlY3MgPSBDRkRpY3Rpb25h
cnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbktleXMsIHNlc3Npb25WYWx1ZXMs
IDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpOwotICNlbmRpZgotKwotICAgT1NTdGF0dXMgc3RhdHVzID0KLS0gICAgICBW
VENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZShudWxscHRyLCAgLy8gdXNlIGRlZmF1bHQgYWxsb2Nh
dG9yCi0rICAgICAgQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKG51bGxwdHIsICAvLyB1c2UgZGVm
YXVsdCBhbGxvY2F0b3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfd2lkdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2hlaWdodCwKLS0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrQ01WaWRlb0NvZGVjVHlwZV9IMjY0LAotLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJfc3BlY3MsICAvLyB1c2UgaGFyZHdhcmUg
YWNjZWxlcmF0ZWQgZW5jb2RlciBpZiBhdmFpbGFibGUKLSsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrQ29kZWNUeXBlSDI2NCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbmNvZGVyU3BlY3MsICAvLyB1c2UgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgZW5jb2RlciBp
ZiBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBdHRy
aWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsICAvLyB1
c2UgZGVmYXVsdCBjb21wcmVzc2VkIGRhdGEgYWxsb2NhdG9yCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29tcHJlc3Npb25PdXRwdXRDYWxsYmFjaywKLUBAIC01ODIsMzIgKzYz
OCwxMDUgQEAgLSAoaW50KXJlc2V0Q29tcHJlc3Npb25TZXNzaW9uV2l0aFBpeGVsRm9ybWF0OihP
U1R5cGUpZnJhbWVQaXhlbEZvcm1hdCB7Ci0gICAgIENGUmVsZWFzZShzb3VyY2VBdHRyaWJ1dGVz
KTsKLSAgICAgc291cmNlQXR0cmlidXRlcyA9IG51bGxwdHI7Ci0gICB9Ci0tICBpZiAoZW5jb2Rl
cl9zcGVjcykgewotLSAgICBDRlJlbGVhc2UoZW5jb2Rlcl9zcGVjcyk7Ci0tICAgIGVuY29kZXJf
c3BlY3MgPSBudWxscHRyOwotKyAgaWYgKGVuY29kZXJTcGVjcykgewotKyAgICBDRlJlbGVhc2Uo
ZW5jb2RlclNwZWNzKTsKLSsgICAgZW5jb2RlclNwZWNzID0gbnVsbHB0cjsKLSAgIH0KLSsKLSsj
aWYgRU5BQkxFX1ZDUF9FTkNPREVSIHx8IGRlZmluZWQoV0VCUlRDX0lPUykKLSAgIGlmIChzdGF0
dXMgIT0gbm9FcnIpIHsKLSAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBjcmVh
dGUgY29tcHJlc3Npb24gc2Vzc2lvbjogIiA8PCBzdGF0dXM7Ci0gICAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfRVJST1I7Ci0gICB9Ci0rI2VuZGlmCi0gI2lmIGRlZmluZWQoV0VCUlRDX01B
QykgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKLSAgIENGQm9vbGVhblJlZiBod2FjY2xfZW5hYmxl
ZCA9IG51bGxwdHI7Ci0tICBzdGF0dXMgPSBWVFNlc3Npb25Db3B5UHJvcGVydHkoX2NvbXByZXNz
aW9uU2Vzc2lvbiwKLSsgIGlmIChzdGF0dXMgPT0gbm9FcnIpIHsKLSsgICAgc3RhdHVzID0gVlRT
ZXNzaW9uQ29weVByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9Vc2luZ0hhcmR3YXJl
QWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaHdhY2NsX2Vu
YWJsZWQpOwotKyAgfQotICAgaWYgKHN0YXR1cyA9PSBub0VyciAmJiAoQ0ZCb29sZWFuR2V0VmFs
dWUoaHdhY2NsX2VuYWJsZWQpKSkgewotICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJDb21wcmVz
c2lvbiBzZXNzaW9uIGNyZWF0ZWQgd2l0aCBodyBhY2NsIGVuYWJsZWQiOwotICAgfSBlbHNlIHsK
LSAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQ29tcHJlc3Npb24gc2Vzc2lvbiBjcmVhdGVkIHdp
dGggaHcgYWNjbCBkaXNhYmxlZCI7Ci0rCi0rI2lmICFFTkFCTEVfVkNQX0VOQ09ERVIgJiYgIWRl
ZmluZWQoV0VCUlRDX0lPUykKLSsgICAgaWYgKCFpc1N0YW5kYXJkRnJhbWVTaXplKF93aWR0aCwg
X2hlaWdodCkpIHsKLSsgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVXNpbmcgSDI2NCBzb2Z0
d2FyZSBlbmNvZGVyIHdpdGggbm9uIHN0YW5kYXJkIHNpemUgaXMgbm90IHN1cHBvcnRlZCI7Ci0r
ICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKLSsgICAgfQotKwotKyAgICBp
ZiAoIWdldGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fVXNhZ2UoKSkgewotKyAgICAgIFJU
Q19MT0coTFNfRVJST1IpIDw8ICJSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IGNhbm5vdCBjcmVh
dGUgYSBIMjY0IHNvZnR3YXJlIGVuY29kZXIiOwotKyAgICAgIHJldHVybiBXRUJSVENfVklERU9f
Q09ERUNfRVJST1I7Ci0rICAgIH0KLSsKLSsgICAgQ0ZEaWN0aW9uYXJ5UmVmIGlvU3VyZmFjZVZh
bHVlID0gQ3JlYXRlQ0ZUeXBlRGljdGlvbmFyeShudWxscHRyLCBudWxscHRyLCAwKTsKLSsgICAg
aW50NjRfdCBwaXhlbEZvcm1hdFR5cGUgPSBmcmFtZVBpeGVsRm9ybWF0OwotKyAgICBDRk51bWJl
clJlZiBwaXhlbEZvcm1hdCA9IENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsIGtDRk51bWJlckxvbmdU
eXBlLCAmcGl4ZWxGb3JtYXRUeXBlKTsKLSsKLSsgICAgY29uc3Qgc2l6ZV90IGF0dHJpYnV0ZXNT
aXplID0gMzsKLSsgICAgQ0ZUeXBlUmVmIGtleXNbYXR0cmlidXRlc1NpemVdID0gewotKyAgICAg
IGtDVlBpeGVsQnVmZmVyT3BlbkdMQ29tcGF0aWJpbGl0eUtleSwKLSsgICAgICBrQ1ZQaXhlbEJ1
ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXksCi0rICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZv
cm1hdFR5cGVLZXkKLSsgICAgfTsKLSsgICAgQ0ZUeXBlUmVmIHZhbHVlc1thdHRyaWJ1dGVzU2l6
ZV0gPSB7Ci0rICAgICAga0NGQm9vbGVhblRydWUsCi0rICAgICAgaW9TdXJmYWNlVmFsdWUsCi0r
ICAgICAgcGl4ZWxGb3JtYXR9OwotKyAgICBDRkRpY3Rpb25hcnlSZWYgc291cmNlQXR0cmlidXRl
cyA9IENyZWF0ZUNGVHlwZURpY3Rpb25hcnkoa2V5cywgdmFsdWVzLCBhdHRyaWJ1dGVzU2l6ZSk7
Ci0rCi0rICAgIGlmIChpb1N1cmZhY2VWYWx1ZSkgewotKyAgICAgIENGUmVsZWFzZShpb1N1cmZh
Y2VWYWx1ZSk7Ci0rICAgICAgaW9TdXJmYWNlVmFsdWUgPSBudWxscHRyOwotKyAgICB9Ci0rICAg
IGlmIChwaXhlbEZvcm1hdCkgewotKyAgICAgIENGUmVsZWFzZShwaXhlbEZvcm1hdCk7Ci0rICAg
ICAgcGl4ZWxGb3JtYXQgPSBudWxscHRyOwotKyAgICB9Ci0rCi0rICAgIENGTXV0YWJsZURpY3Rp
b25hcnlSZWYgZW5jb2RlclNwZWNzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShudWxscHRy
LCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKTsKLSsgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZW5jb2RlclNwZWNzLCBr
VlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRl
b0VuY29kZXIsIGtDRkJvb2xlYW5GYWxzZSk7Ci0rICAgIGludCB1c2FnZVZhbHVlID0gMTsKLSsg
ICAgQ0ZOdW1iZXJSZWYgdXNhZ2UgPSBDRk51bWJlckNyZWF0ZShudWxscHRyLCBrQ0ZOdW1iZXJJ
bnRUeXBlLCAmdXNhZ2VWYWx1ZSk7Ci0rICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGVuY29kZXJT
cGVjcywgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWdldGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRp
b25fVXNhZ2UoKSwgdXNhZ2UpOwotKwotKyAgICBpZiAodXNhZ2UpIHsKLSsgICAgICBDRlJlbGVh
c2UodXNhZ2UpOwotKyAgICAgIHVzYWdlID0gbnVsbHB0cjsKLSsgICAgfQotKwotKyAgICBbc2Vs
ZiBkZXN0cm95Q29tcHJlc3Npb25TZXNzaW9uXTsKLSsKLSsgICAgT1NTdGF0dXMgc3RhdHVzID0K
LSsgICAgICBDb21wcmVzc2lvblNlc3Npb25DcmVhdGUobnVsbHB0ciwgIC8vIHVzZSBkZWZhdWx0
IGFsbG9jYXRvcgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF93aWR0aCwKLSsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaGVpZ2h0LAotKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtDb2RlY1R5cGVIMjY0LAotKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuY29kZXJTcGVjcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzb3VyY2VBdHRyaWJ1dGVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsICAvLyB1c2UgZGVmYXVsdCBjb21wcmVzc2VkIGRhdGEgYWxsb2NhdG9yCi0rICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25PdXRwdXRDYWxsYmFjaywK
LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZfY29tcHJlc3Npb25TZXNzaW9uKTsKLSsgICAgaWYgKHNv
dXJjZUF0dHJpYnV0ZXMpIHsKLSsgICAgICBDRlJlbGVhc2Uoc291cmNlQXR0cmlidXRlcyk7Ci0r
ICAgICAgc291cmNlQXR0cmlidXRlcyA9IG51bGxwdHI7Ci0rICAgIH0KLSsgICAgaWYgKGVuY29k
ZXJTcGVjcykgewotKyAgICAgIENGUmVsZWFzZShlbmNvZGVyU3BlY3MpOwotKyAgICAgIGVuY29k
ZXJTcGVjcyA9IG51bGxwdHI7Ci0rICAgIH0KLSsgICAgaWYgKHN0YXR1cyAhPSBub0Vycikgewot
KyAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0rICAgIH0KLSsjZW5kaWYK
LSAgIH0KLSAjZW5kaWYKLSAgIFtzZWxmIGNvbmZpZ3VyZUNvbXByZXNzaW9uU2Vzc2lvbl07Ci0t
Ci0tICAvLyBUaGUgcGl4ZWwgYnVmZmVyIHBvb2wgaXMgZGVwZW5kZW50IG9uIHRoZSBjb21wcmVz
c2lvbiBzZXNzaW9uIHNvIGlmIHRoZSBzZXNzaW9uIGlzIHJlc2V0LCB0aGUKLS0gIC8vIHBvb2wg
c2hvdWxkIGJlIHJlc2V0IGFzIHdlbGwuCi0tICBfcGl4ZWxCdWZmZXJQb29sID0gVlRDb21wcmVz
c2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2woX2NvbXByZXNzaW9uU2Vzc2lvbik7Ci0tCi0g
ICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwotIH0KLSAKLUBAIC02MTYsNiArNzQ1LDEw
IEBAIC0gKHZvaWQpY29uZmlndXJlQ29tcHJlc3Npb25TZXNzaW9uIHsKLSAgIFNldFZUU2Vzc2lv
blByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlf
UmVhbFRpbWUsIHRydWUpOwotICAgU2V0VlRTZXNzaW9uUHJvcGVydHkoX2NvbXByZXNzaW9uU2Vz
c2lvbiwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9Qcm9maWxlTGV2ZWwsIF9wcm9maWxlKTsK
LSAgIFNldFZUU2Vzc2lvblByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNz
aW9uUHJvcGVydHlLZXlfQWxsb3dGcmFtZVJlb3JkZXJpbmcsIGZhbHNlKTsKLSsjaWYgRU5BQkxF
X1ZDUF9FTkNPREVSCi0rICBpZiAoYXV0byBrZXkgPSBnZXRrVlRWaWRlb0VuY29kZXJTcGVjaWZp
Y2F0aW9uX1VzYWdlKCkpCi0rICAgICAgU2V0VlRTZXNzaW9uUHJvcGVydHkoX2NvbXByZXNzaW9u
U2Vzc2lvbiwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleSwgMSk7Ci0rI2VuZGlmCi0gICBbc2Vs
ZiBzZXRFbmNvZGVyQml0cmF0ZUJwczpfdGFyZ2V0Qml0cmF0ZUJwc107Ci0gICAvLyBUT0RPKHRr
Y2hpbik6IExvb2sgYXQgZW50cm9weSBtb2RlIGFuZCBjb2xvcnNwYWNlIG1hdHJpY2VzLgotICAg
Ly8gVE9ETyh0a2NoaW4pOiBJbnZlc3RpZ2F0ZSB0byBzZWUgaWYgdGhlcmUncyBhbnkgd2F5IHRv
IG1ha2UgdGhpcyB3b3JrLgotQEAgLTYzMywxMCArNzY2LDkgQEAgLSAodm9pZCljb25maWd1cmVD
b21wcmVzc2lvblNlc3Npb24gewotIAotIC0gKHZvaWQpZGVzdHJveUNvbXByZXNzaW9uU2Vzc2lv
biB7Ci0gICBpZiAoX2NvbXByZXNzaW9uU2Vzc2lvbikgewotLSAgICBWVENvbXByZXNzaW9uU2Vz
c2lvbkludmFsaWRhdGUoX2NvbXByZXNzaW9uU2Vzc2lvbik7Ci0rICAgIENvbXByZXNzaW9uU2Vz
c2lvbkludmFsaWRhdGUoX2NvbXByZXNzaW9uU2Vzc2lvbik7Ci0gICAgIENGUmVsZWFzZShfY29t
cHJlc3Npb25TZXNzaW9uKTsKLSAgICAgX2NvbXByZXNzaW9uU2Vzc2lvbiA9IG51bGxwdHI7Ci0t
ICAgIF9waXhlbEJ1ZmZlclBvb2wgPSBudWxscHRyOwotICAgfQotIH0KLSAKLUBAIC02NjQsNyAr
Nzk2LDcgQEAgLSAodm9pZClzZXRFbmNvZGVyQml0cmF0ZUJwczoodWludDMyX3QpYml0cmF0ZUJw
cyB7Ci0gICAgICAgICBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJTSW50NjRUeXBlLCAmb25lU2Vjb25kVmFsdWUpOwotICAgICBjb25zdCB2b2lkICpudW1zWzJd
ID0ge2J5dGVzUGVyU2Vjb25kLCBvbmVTZWNvbmR9OwotICAgICBDRkFycmF5UmVmIGRhdGFSYXRl
TGltaXRzID0gQ0ZBcnJheUNyZWF0ZShudWxscHRyLCBudW1zLCAyLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKTsKLS0gICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVydHkoCi0r
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5KAotICAg
ICAgICAgX2NvbXByZXNzaW9uU2Vzc2lvbiwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9EYXRh
UmF0ZUxpbWl0cywgZGF0YVJhdGVMaW1pdHMpOwotICAgICBpZiAoYnl0ZXNQZXJTZWNvbmQpIHsK
LSAgICAgICBDRlJlbGVhc2UoYnl0ZXNQZXJTZWNvbmQpOwotQEAgLTY3Niw3ICs4MDgsNyBAQCAt
ICh2b2lkKXNldEVuY29kZXJCaXRyYXRlQnBzOih1aW50MzJfdCliaXRyYXRlQnBzIHsKLSAgICAg
ICBDRlJlbGVhc2UoZGF0YVJhdGVMaW1pdHMpOwotICAgICB9Ci0gICAgIGlmIChzdGF0dXMgIT0g
bm9FcnIpIHsKLS0gICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHNldCBkYXRh
IHJhdGUgbGltaXQgd2l0aCBjb2RlOiAiIDw8IHN0YXR1czsKLSsgICAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiRmFpbGVkIHRvIHNldCBkYXRhIHJhdGUgbGltaXQiOwotICAgICB9Ci0gCi0gICAg
IF9lbmNvZGVyQml0cmF0ZUJwcyA9IGJpdHJhdGVCcHM7Ci1AQCAtNjkzLDcgKzgyNSw3IEBAIC0g
KHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1cylzdGF0dXMKLSAgICAgICAgICAgICAgIHRp
bWVzdGFtcDoodWludDMyX3QpdGltZXN0YW1wCi0gICAgICAgICAgICAgICAgcm90YXRpb246KFJU
Q1ZpZGVvUm90YXRpb24pcm90YXRpb24gewotICAgaWYgKHN0YXR1cyAhPSBub0VycikgewotLSAg
ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiSDI2NCBlbmNvZGUgZmFpbGVkIHdpdGggY29kZTogIiA8
PCBzdGF0dXM7Ci0rICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJIMjY0IGVuY29kZSBmYWlsZWQ6
ICIgPDwgc3RhdHVzOwotICAgICByZXR1cm47Ci0gICB9Ci0gICBpZiAoaW5mb0ZsYWdzICYga1ZU
RW5jb2RlSW5mb19GcmFtZURyb3BwZWQpIHsKLUBAIC03MzgsNiArODcwLDcgQEAgLSAodm9pZClm
cmFtZVdhc0VuY29kZWQ6KE9TU3RhdHVzKXN0YXR1cwotICAgZnJhbWUucm90YXRpb24gPSByb3Rh
dGlvbjsKLSAgIGZyYW1lLmNvbnRlbnRUeXBlID0gKF9tb2RlID09IFJUQ1ZpZGVvQ29kZWNNb2Rl
U2NyZWVuc2hhcmluZykgPyBSVENWaWRlb0NvbnRlbnRUeXBlU2NyZWVuc2hhcmUgOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJUQ1ZpZGVvQ29udGVudFR5cGVVbnNwZWNpZmllZDsKLSsgIGZyYW1lLnNwYXRpYWxJbmRl
eCA9IF9zaW11bGNhc3RJbmRleDsKLSAgIGZyYW1lLmZsYWdzID0gd2VicnRjOjpWaWRlb1NlbmRU
aW1pbmc6OmtJbnZhbGlkOwotIAotICAgaW50IHFwOwotQEAgLTc1Myw5ICs4ODYsODggQEAgLSAo
dm9pZClmcmFtZVdhc0VuY29kZWQ6KE9TU3RhdHVzKXN0YXR1cwotICAgX2JpdHJhdGVBZGp1c3Rl
ci0+VXBkYXRlKGZyYW1lLmJ1ZmZlci5sZW5ndGgpOwotIH0KLSAKLS0tIChudWxsYWJsZSBSVENW
aWRlb0VuY29kZXJRcFRocmVzaG9sZHMgKilzY2FsaW5nU2V0dGluZ3MgewotLSAgcmV0dXJuIFtb
UlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzIGFsbG9jXSBpbml0V2l0aFRocmVzaG9sZHNMb3c6
a0xvd0gyNjRRcFRocmVzaG9sZAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2g6a0hpZ2hIMjY0UXBUaHJlc2hvbGRdOwot
Ky0gKFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyAqKXNjYWxpbmdTZXR0aW5ncyB7Ci0rICBy
ZXR1cm4gW1tSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMgYWxsb2NdIGluaXRXaXRoVGhyZXNo
b2xkc0xvdzprTG93SDI2NFFwVGhyZXNob2xkIGhpZ2g6a0hpZ2hIMjY0UXBUaHJlc2hvbGRdOwot
K30KLSsKLSstIChpbnQpc2V0UmF0ZUFsbG9jYXRpb246KFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRp
b24gKilhbGxvY2F0aW9uIGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsKLSsgIHJldHVy
biAwOwotK30KLSsKLStAZW5kCi0rCi0rQGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVvRW5jb2Rlckgy
NjQgewotKyAgTlNNdXRhYmxlQXJyYXk8UlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCo+ICpfY29k
ZWNzOwotKyAgUlRDVmlkZW9Db2RlY0luZm8gKl9jb2RlY0luZm87Ci0rfQotKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlkZW9Db2RlY0luZm8gKiljb2RlY0luZm8gewot
KyAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSsgICAgX2NvZGVjSW5mbyA9IGNvZGVjSW5m
bzsKLSsgIH0KLSsgIHJldHVybiBzZWxmOwotK30KLSsKLSstICh2b2lkKXNldENhbGxiYWNrOihS
VENWaWRlb0VuY29kZXJDYWxsYmFjayljYWxsYmFjayB7Ci0rICBmb3IgKFJUQ1NpbmdsZVZpZGVv
RW5jb2RlckgyNjQgKmNvZGVjIDogX2NvZGVjcykKLSsgICAgW2NvZGVjIHNldENhbGxiYWNrOmNh
bGxiYWNrXTsKLSt9Ci0rCi0rLSAoTlNJbnRlZ2VyKXN0YXJ0RW5jb2RlV2l0aFNldHRpbmdzOihS
VENWaWRlb0VuY29kZXJTZXR0aW5ncyAqKXNldHRpbmdzIG51bWJlck9mQ29yZXM6KGludCludW1i
ZXJPZkNvcmVzIHsKLSsgICAgYXV0byBuYXRpdmVDb2RlY1NldHRpbmdzID0gc2V0dGluZ3MubmF0
aXZlVmlkZW9Db2RlYzsKLSsKLSsgIF9jb2RlY3MgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XTsKLSsgIGZvciAodW5zaWduZWQgaW5kZXggPSAwIDsgaW5kZXggPCBuYXRpdmVDb2RlY1Nl
dHRpbmdzLm51bWJlck9mU2ltdWxjYXN0U3RyZWFtczsgKytpbmRleCkgewotKyAgICBhdXRvIGNv
ZGVjID0gW1tSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IGFsbG9jXSBpbml0V2l0aENvZGVjSW5m
bzpfY29kZWNJbmZvIHNpbXVsY2FzdEluZGV4OmluZGV4XTsKLSsgICAgW19jb2RlY3MgYWRkT2Jq
ZWN0OmNvZGVjXTsKLSsKLSsgICAgYXV0byBjb2RlY1NldHRpbmdzID0gbmF0aXZlQ29kZWNTZXR0
aW5nczsKLSsgICAgY29kZWNTZXR0aW5ncy53aWR0aCA9IG5hdGl2ZUNvZGVjU2V0dGluZ3Muc2lt
dWxjYXN0U3RyZWFtW2luZGV4XS53aWR0aDsKLSsgICAgY29kZWNTZXR0aW5ncy5oZWlnaHQgPSBu
YXRpdmVDb2RlY1NldHRpbmdzLnNpbXVsY2FzdFN0cmVhbVtpbmRleF0uaGVpZ2h0OwotKyAgICBj
b2RlY1NldHRpbmdzLm1heEJpdHJhdGUgPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNpbXVsY2FzdFN0
cmVhbVtpbmRleF0ubWF4Qml0cmF0ZTsKLSsgICAgY29kZWNTZXR0aW5ncy50YXJnZXRCaXRyYXRl
ID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNhc3RTdHJlYW1baW5kZXhdLnRhcmdldEJpdHJh
dGU7Ci0rICAgIGNvZGVjU2V0dGluZ3MubWluQml0cmF0ZSA9IG5hdGl2ZUNvZGVjU2V0dGluZ3Mu
c2ltdWxjYXN0U3RyZWFtW2luZGV4XS5taW5CaXRyYXRlOwotKyAgICBjb2RlY1NldHRpbmdzLnFw
TWF4ID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNhc3RTdHJlYW1baW5kZXhdLnFwTWF4Owot
KyAgICBjb2RlY1NldHRpbmdzLmFjdGl2ZSA9IHRydWU7Ci0rCi0rICAgIGF1dG8gKnNldHRpbmdz
ID0gW1tSVENWaWRlb0VuY29kZXJTZXR0aW5ncyBhbGxvY10gaW5pdFdpdGhOYXRpdmVWaWRlb0Nv
ZGVjOiZjb2RlY1NldHRpbmdzXTsKLSsgICAgW2NvZGVjIHN0YXJ0RW5jb2RlV2l0aFNldHRpbmdz
OnNldHRpbmdzIG51bWJlck9mQ29yZXM6bnVtYmVyT2ZDb3Jlc107Ci0rICB9Ci0rICByZXR1cm4g
MDsKLSt9Ci0rCi0rLSAoTlNJbnRlZ2VyKXJlbGVhc2VFbmNvZGVyIHsKLSsgIGZvciAoUlRDU2lu
Z2xlVmlkZW9FbmNvZGVySDI2NCAqY29kZWMgOiBfY29kZWNzKQotKyAgICBbY29kZWMgcmVsZWFz
ZUVuY29kZXJdOwotKyAgX2NvZGVjcyA9IG5pbDsKLSsgIHJldHVybiAwOwotK30KLSsKLSstIChO
U0ludGVnZXIpZW5jb2RlOihSVENWaWRlb0ZyYW1lICopZnJhbWUgY29kZWNTcGVjaWZpY0luZm86
KG51bGxhYmxlIGlkPFJUQ0NvZGVjU3BlY2lmaWNJbmZvPilpbmZvIGZyYW1lVHlwZXM6KE5TQXJy
YXk8TlNOdW1iZXIgKj4gKilmcmFtZVR5cGVzIHsKLSsgIGludCByZXN1bHQgPSAwOwotKyAgZm9y
IChSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICpjb2RlYyA6IF9jb2RlY3MpCi0rICAgIHJlc3Vs
dCB8PSBbY29kZWMgZW5jb2RlOmZyYW1lIGNvZGVjU3BlY2lmaWNJbmZvOmluZm8gZnJhbWVUeXBl
czpmcmFtZVR5cGVzXTsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotKy0gKGludClzZXRSYXRl
QWxsb2NhdGlvbjooUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqKWJpdFJhdGVBbGxvY2F0aW9u
IGZyYW1lcmF0ZToodWludDMyX3QpIGZyYW1lcmF0ZSB7Ci0rICBpbnQgcmVzdWx0ID0gMDsKLSsg
IHVuc2lnbmVkIGNvdW50ZXIgPSAwOwotKyAgYXV0byBuYXRpdmVCaXRSYXRlQWxsb2NhdGlvbiA9
IGJpdFJhdGVBbGxvY2F0aW9uLm5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb247Ci0rICBmb3Ig
KFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgKmNvZGVjIDogX2NvZGVjcykKLSsgICAgcmVzdWx0
IHw9IFtjb2RlYyBzZXRCaXRyYXRlOm5hdGl2ZUJpdFJhdGVBbGxvY2F0aW9uLkdldFNwYXRpYWxM
YXllclN1bShjb3VudGVyKyspIGZyYW1lcmF0ZTpmcmFtZXJhdGVdOwotKyAgcmV0dXJuIHJlc3Vs
dDsKLSt9Ci0rCi0rLSAoTlNTdHJpbmcgKilpbXBsZW1lbnRhdGlvbk5hbWUgewotKyAgcmV0dXJu
IEAiVmlkZW9Ub29sYm94IjsKLSt9Ci0rCi0rLSAoUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRz
ICopc2NhbGluZ1NldHRpbmdzIHsKLSsgIHJldHVybiBbW1JUQ1ZpZGVvRW5jb2RlclFwVGhyZXNo
b2xkcyBhbGxvY10gaW5pdFdpdGhUaHJlc2hvbGRzTG93OmtMb3dIMjY0UXBUaHJlc2hvbGQgaGln
aDprSGlnaEgyNjRRcFRocmVzaG9sZF07Ci0rfQotKwotKy0gKGludClzZXRCaXRyYXRlOih1aW50
MzJfdCliaXRyYXRlS2JpdCBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZSB7Ci0rICByZXR1
cm4gMDsKLSB9Ci0gCi0gQGVuZAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVy
cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5jYwotaW5kZXggYWM5NTdmMWI0OTcuLjQ2
ZGFmNDRlY2FjIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmNjCi0rKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuY2MKLUBAIC0zNSwxMiArMzUsMTIgQEAgc3RkOjpz
dHJpbmcgQ0ZTdHJpbmdUb1N0cmluZyhjb25zdCBDRlN0cmluZ1JlZiBjZl9zdHJpbmcpIHsKLSB9
Ci0gCi0gLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4K
LS12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAotK3ZvaWQg
U2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBrZXksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQzMl90IHZhbHVlKSB7Ci0gICBDRk51bWJlclJlZiBjZk51bSA9Ci0gICAg
ICAgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDMyVHlw
ZSwgJnZhbHVlKTsKLS0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHNl
c3Npb24sIGtleSwgY2ZOdW0pOwotKyAgT1NTdGF0dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNz
aW9uU2V0UHJvcGVydHkoc2Vzc2lvbiwga2V5LCBjZk51bSk7Ci0gICBDRlJlbGVhc2UoY2ZOdW0p
OwotICAgaWYgKHN0YXR1cyAhPSBub0VycikgewotICAgICBzdGQ6OnN0cmluZyBrZXlfc3RyaW5n
ID0gQ0ZTdHJpbmdUb1N0cmluZyhrZXkpOwotQEAgLTUwLDEzICs1MCwxMyBAQCB2b2lkIFNldFZU
U2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAotIH0KLSAKLSAvLyBDb252ZW5p
ZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZvaWQgU2V0VlRTZXNz
aW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sCi0rdm9pZCBTZXRWVFNlc3Npb25Qcm9w
ZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENGU3RyaW5nUmVmIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IHZhbHVlKSB7Ci0gICBpbnQ2NF90IHZhbHVlXzY0ID0gdmFsdWU7Ci0gICBDRk51bWJlclJl
ZiBjZk51bSA9Ci0gICAgICAgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
TnVtYmVyU0ludDY0VHlwZSwgJnZhbHVlXzY0KTsKLS0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vz
c2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZOdW0pOwotKyAgT1NTdGF0dXMgc3RhdHVz
ID0gQ29tcHJlc3Npb25TZXNzaW9uU2V0UHJvcGVydHkoc2Vzc2lvbiwga2V5LCBjZk51bSk7Ci0g
ICBDRlJlbGVhc2UoY2ZOdW0pOwotICAgaWYgKHN0YXR1cyAhPSBub0VycikgewotICAgICBzdGQ6
OnN0cmluZyBrZXlfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyhrZXkpOwotQEAgLTY2LDkgKzY2
LDkgQEAgdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKLSB9
Ci0gCi0gLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4K
LS12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmlu
Z1JlZiBrZXksIGJvb2wgdmFsdWUpIHsKLSt2b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KENvbXBy
ZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIGJvb2wgdmFsdWUpIHsK
LSAgIENGQm9vbGVhblJlZiBjZl9ib29sID0gKHZhbHVlKSA/IGtDRkJvb2xlYW5UcnVlIDoga0NG
Qm9vbGVhbkZhbHNlOwotLSAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVydHko
c2Vzc2lvbiwga2V5LCBjZl9ib29sKTsKLSsgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9u
U2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZfYm9vbCk7Ci0gICBpZiAoc3RhdHVz
ICE9IG5vRXJyKSB7Ci0gICAgIHN0ZDo6c3RyaW5nIGtleV9zdHJpbmcgPSBDRlN0cmluZ1RvU3Ry
aW5nKGtleSk7Ci0gICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWVFNlc3Npb25TZXRQcm9wZXJ0
eSBmYWlsZWQgdG8gc2V0OiAiIDw8IGtleV9zdHJpbmcKLUBAIC03NywxMCArNzcsMTAgQEAgdm9p
ZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYg
a2V5LCBib29sIHZhbHVlKSB7Ci0gfQotIAotIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBz
ZXR0aW5nIGEgVlQgcHJvcGVydHkuCi0tdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Np
b25SZWYgc2Vzc2lvbiwKLSt2b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KENvbXByZXNzaW9uU2Vz
c2lvblJlZiBzZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYg
a2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgdmFsdWUpIHsKLS0g
IE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgdmFs
dWUpOwotKyAgT1NTdGF0dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNzaW9uU2V0UHJvcGVydHko
c2Vzc2lvbiwga2V5LCB2YWx1ZSk7Ci0gICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7Ci0gICAgIHN0
ZDo6c3RyaW5nIGtleV9zdHJpbmcgPSBDRlN0cmluZ1RvU3RyaW5nKGtleSk7Ci0gICAgIHN0ZDo6
c3RyaW5nIHZhbF9zdHJpbmcgPSBDRlN0cmluZ1RvU3RyaW5nKHZhbHVlKTsKLWRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5o
Ci1pbmRleCAwNjgzZWE3OWU1Ni4uMGM2NjllOGJjZTYgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVv
X2NvZGVjL2hlbHBlcnMuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmgKLUBAIC0x
Niw2ICsxNiw4IEBACi0gI2luY2x1ZGUgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KLSAj
aW5jbHVkZSA8c3RyaW5nPgotIAotKyNpbmNsdWRlICJzZGsvV2ViS2l0L0VuY29kZXJVdGlsaXRp
ZXMuaCIKLSsKLSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBkaWN0aW9u
YXJ5LgotIGlubGluZSBDRkRpY3Rpb25hcnlSZWYgQ3JlYXRlQ0ZUeXBlRGljdGlvbmFyeShDRlR5
cGVSZWYqIGtleXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENGVHlwZVJlZiogdmFsdWVzLAotQEAgLTI5LDE4ICszMSwxOCBAQCBpbmxpbmUgQ0ZEaWN0
aW9uYXJ5UmVmIENyZWF0ZUNGVHlwZURpY3Rpb25hcnkoQ0ZUeXBlUmVmKiBrZXlzLAotIHN0ZDo6
c3RyaW5nIENGU3RyaW5nVG9TdHJpbmcoY29uc3QgQ0ZTdHJpbmdSZWYgY2Zfc3RyaW5nKTsKLSAK
LSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZv
aWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVm
IGtleSwgaW50MzJfdCB2YWx1ZSk7Ci0rdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVz
c2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBpbnQzMl90IHZhbHVlKTsK
LSAKLSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5Lgot
LXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sCi0rdm9pZCBT
ZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGtleSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IHZhbHVlKTsKLSAKLSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBm
b3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRT
ZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwgYm9vbCB2YWx1ZSk7Ci0rdm9pZCBT
ZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJp
bmdSZWYga2V5LCBib29sIHZhbHVlKTsKLSAKLSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Ig
c2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNz
aW9uUmVmIHNlc3Npb24sCi0rdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNl
c3Npb25SZWYgc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVm
IGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIHZhbHVlKTsKLSAK
LWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVmZmVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVmZmVyLmgKLWluZGV4IDQzMmEz
ODI1NzQ2Li5hYmU5ZGZjYTkzYiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fZnJhbWVfYnVmZmVy
L1JUQ0NWUGl4ZWxCdWZmZXIuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQ
aXhlbEJ1ZmZlci5oCi1AQCAtMTcsNiArMTcsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgot
IAotIC8qKiBSVENWaWRlb0ZyYW1lQnVmZmVyIGNvbnRhaW5pbmcgYSBDVlBpeGVsQnVmZmVyUmVm
ICovCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUo
IldLX1JUQ0NWUGl4ZWxCdWZmZXIiKSkpCi0gQGludGVyZmFjZSBSVENDVlBpeGVsQnVmZmVyIDog
TlNPYmplY3QgPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+Ci0gCi0gQHByb3BlcnR5KG5vbmF0b21pYywg
cmVhZG9ubHkpIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXI7Ci1kaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3Ny
Yy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVy
X2ZhY3RvcnkubW0KLWluZGV4IGJhN2MzZTk2NzU0Li5jNGM4NWNjNmFiOSAxMDA2NDQKLS0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2
ZS9zcmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KLSsrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY192aWRl
b19lbmNvZGVyX2ZhY3RvcnkubW0KLUBAIC05Miw2ICs5MiwxMiBAQCBjbGFzcyBPYmpDVmlkZW9F
bmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7Ci0gICAgIHJldHVybiBbZW5jb2Rlcl8gc2V0
Qml0cmF0ZTpiaXRyYXRlIGZyYW1lcmF0ZTpmcmFtZXJhdGVdOwotICAgfQotIAotKyAgaW50MzJf
dCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0
aW9uLCB1aW50MzJfdCBmcmFtZXJhdGUpIHsKLSsgICAgUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlv
biAqYml0cmF0ZUFsbG9jYXRpb24gPQotKyAgICAgIFtbUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlv
biBhbGxvY10gaW5pdFdpdGhOYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOiZhbGxvY2F0aW9u
XTsKLSsgICAgcmV0dXJuIFtlbmNvZGVyXyBzZXRSYXRlQWxsb2NhdGlvbjogYml0cmF0ZUFsbG9j
YXRpb24gZnJhbWVyYXRlOmZyYW1lcmF0ZV07Ci0rICB9Ci0rCi0gICBib29sIFN1cHBvcnRzTmF0
aXZlSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotIAotICAgVmlkZW9FbmNvZGVyOjpT
Y2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3QgewotLS0gCi0yLjE3LjEg
KEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9XZWJLaXQvbGlid2VicnRjLmRpZmYgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvV2Vi
S2l0L2xpYndlYnJ0Yy5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyNDI4ZTQxNWRjYTg2ZmMwNzQ0ZWNkOTgx
M2VlY2YwZDJjMDc3ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvV2ViS2l0L2xpYndlYnJ0Yy5kaWZmCkBAIC0wLDAgKzEsMjU2OCBAQAorZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19j
b2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9p
bGJjLmNjCitpbmRleCA4OTZlZDIzOGNjMy4uNGQwMjhjOWFhZjQgMTAwNjQ0CistLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2ls
YmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJj
LmNjCitAQCAtMzMsNyArMzMsNyBAQCBpbnQgR2V0SWxiY0JpdHJhdGUoaW50IHB0aW1lKSB7Cisg
ICAgICAgLy8gNTAgYnl0ZXMgcGVyIGZyYW1lIG9mIDMwIG1zID0+IChhcHByb3gpIDEzMzMzIGJp
dHMvcy4KKyAgICAgICByZXR1cm4gMTMzMzM7CisgICAgIGRlZmF1bHQ6CistICAgICAgRkFUQUwo
KTsKKysgICAgICBSVENfRkFUQUwoKTsKKyAgIH0KKyB9CisgfSAgLy8gbmFtZXNwYWNlCitkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21l
ZGlhdHlwZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvbWVkaWF0eXBlcy5jYworaW5kZXggNTk5NTQyZGIwOGYuLjE0MGQwYWU5NjI1IDEwMDY0NAor
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlh
dHlwZXMuY2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9tZWRpYXR5cGVzLmNjCitAQCAtMjgsNyArMjgsNyBAQCBzdGQ6OnN0cmluZyBNZWRpYVR5
cGVUb1N0cmluZyhNZWRpYVR5cGUgdHlwZSkgeworICAgICBjYXNlIE1FRElBX1RZUEVfREFUQToK
KyAgICAgICByZXR1cm4ga01lZGlhVHlwZURhdGE7CisgICB9CistICBGQVRBTCgpOworKyAgUlRD
X0ZBVEFMKCk7CisgICAvLyBOb3QgcmVhY2hhYmxlOyBhdm9pZHMgY29tcGlsZSB3YXJuaW5nLgor
ICAgcmV0dXJuICIiOworIH0KK0BAIC00MSw3ICs0MSw3IEBAIE1lZGlhVHlwZSBNZWRpYVR5cGVG
cm9tU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlX3N0cikgeworICAgfSBlbHNlIGlmICh0
eXBlX3N0ciA9PSBrTWVkaWFUeXBlRGF0YSkgeworICAgICByZXR1cm4gTUVESUFfVFlQRV9EQVRB
OworICAgfQorLSAgRkFUQUwoKTsKKysgIFJUQ19GQVRBTCgpOworICAgLy8gTm90IHJlYWNoYWJs
ZTsgYXZvaWRzIGNvbXBpbGUgd2FybmluZy4KKyAgIHJldHVybiBzdGF0aWNfY2FzdDxNZWRpYVR5
cGU+KC0xKTsKKyB9CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYworaW5kZXggY2M1
OWUyYTgyM2MuLmIxMTU4ZGEyMTNmIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MKKysrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4X3Jlc2FtcGxl
LmNjCitAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFJlbWl4QW5kUmVzYW1wbGUoY29uc3QgaW50MTZf
dCogc3JjX2RhdGEsCisgCisgICBpZiAocmVzYW1wbGVyLT5Jbml0aWFsaXplSWZOZWVkZWQoc2Ft
cGxlX3JhdGVfaHosIGRzdF9mcmFtZS0+c2FtcGxlX3JhdGVfaHpfLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3B0cl9udW1fY2hhbm5lbHMpID09IC0xKSB7Cist
ICAgIEZBVEFMKCkgPDwgIkluaXRpYWxpemVJZk5lZWRlZCBmYWlsZWQ6IHNhbXBsZV9yYXRlX2h6
ID0gIiA8PCBzYW1wbGVfcmF0ZV9oegorKyAgICBSVENfRkFUQUwoKSA8PCAiSW5pdGlhbGl6ZUlm
TmVlZGVkIGZhaWxlZDogc2FtcGxlX3JhdGVfaHogPSAiIDw8IHNhbXBsZV9yYXRlX2h6CisgICAg
ICAgICAgICAgPDwgIiwgZHN0X2ZyYW1lLT5zYW1wbGVfcmF0ZV9oel8gPSAiIDw8IGRzdF9mcmFt
ZS0+c2FtcGxlX3JhdGVfaHpfCisgICAgICAgICAgICAgPDwgIiwgYXVkaW9fcHRyX251bV9jaGFu
bmVscyA9ICIgPDwgYXVkaW9fcHRyX251bV9jaGFubmVsczsKKyAgIH0KK0BAIC02OSw3ICs2OSw3
IEBAIHZvaWQgUmVtaXhBbmRSZXNhbXBsZShjb25zdCBpbnQxNl90KiBzcmNfZGF0YSwKKyAgICAg
ICByZXNhbXBsZXItPlJlc2FtcGxlKGF1ZGlvX3B0ciwgc3JjX2xlbmd0aCwgZHN0X2ZyYW1lLT5t
dXRhYmxlX2RhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvRnJhbWU6OmtN
YXhEYXRhU2l6ZVNhbXBsZXMpOworICAgaWYgKG91dF9sZW5ndGggPT0gLTEpIHsKKy0gICAgRkFU
QUwoKSA8PCAiUmVzYW1wbGUgZmFpbGVkOiBhdWRpb19wdHIgPSAiIDw8IGF1ZGlvX3B0cgorKyAg
ICBSVENfRkFUQUwoKSA8PCAiUmVzYW1wbGUgZmFpbGVkOiBhdWRpb19wdHIgPSAiIDw8IGF1ZGlv
X3B0cgorICAgICAgICAgICAgIDw8ICIsIHNyY19sZW5ndGggPSAiIDw8IHNyY19sZW5ndGgKKyAg
ICAgICAgICAgICA8PCAiLCBkc3RfZnJhbWUtPm11dGFibGVfZGF0YSgpID0gIiA8PCBkc3RfZnJh
bWUtPm11dGFibGVfZGF0YSgpOworICAgfQorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmls
ZS5jYworaW5kZXggMWI4YmNiZDkyM2MuLjkwYTg5MjgxZTVjIDEwMDY0NAorLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxl
LmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fYXVkaW8vd2F2X2ZpbGUuY2MKK0BAIC02Myw3ICs2Myw3IEBAIFdhdlJlYWRlcjo6V2F2UmVh
ZGVyKHJ0Yzo6UGxhdGZvcm1GaWxlIGZpbGUpIHsKKyAgICAgaWYgKCFydGM6OkNsb3NlUGxhdGZv
cm1GaWxlKGZpbGUpKSB7CisgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbid0IGNsb3Nl
IGZpbGUuIjsKKyAgICAgfQorLSAgICBGQVRBTCgpIDw8ICJDb3VsZCBub3Qgb3BlbiB3YXYgZmls
ZSBmb3IgcmVhZGluZy4iOworKyAgICBSVENfRkFUQUwoKSA8PCAiQ291bGQgbm90IG9wZW4gd2F2
IGZpbGUgZm9yIHJlYWRpbmcuIjsKKyAgIH0KKyAKKyAgIFJlYWRhYmxlV2F2RmlsZSByZWFkYWJs
ZShmaWxlX2hhbmRsZV8pOworQEAgLTE0OCw3ICsxNDgsNyBAQCBXYXZXcml0ZXI6OldhdldyaXRl
cihydGM6OlBsYXRmb3JtRmlsZSBmaWxlLAorICAgICBpZiAoIXJ0Yzo6Q2xvc2VQbGF0Zm9ybUZp
bGUoZmlsZSkpIHsKKyAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ2FuJ3QgY2xvc2UgZmls
ZS4iOworICAgICB9CistICAgIEZBVEFMKCkgPDwgIkNvdWxkIG5vdCBvcGVuIHdhdiBmaWxlIGZv
ciB3cml0aW5nLiI7CisrICAgIFJUQ19GQVRBTCgpIDw8ICJDb3VsZCBub3Qgb3BlbiB3YXYgZmls
ZSBmb3Igd3JpdGluZy4iOworICAgfQorIAorICAgUlRDX0NIRUNLKENoZWNrV2F2UGFyYW1ldGVy
cyhudW1fY2hhbm5lbHNfLCBzYW1wbGVfcmF0ZV8sIGtXYXZGb3JtYXQsCitkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3Zp
ZGVvX2ZyYW1lX2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZV9idWZmZXIuY2MKK2luZGV4IGY0ZjEzOGZj
Y2I1Li41Zjg5YjRhY2I5NiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZV9idWZmZXIuY2MKKysrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92
aWRlb19mcmFtZV9idWZmZXIuY2MKK0BAIC0yNzIsNyArMjcyLDcgQEAgcnRjOjpzY29wZWRfcmVm
cHRyPFBsYW5hcll1dkJ1ZmZlcj4gV3JhcFl1dkJ1ZmZlcigKKyAgICAgICByZXR1cm4gV3JhcEk0
NDRCdWZmZXIod2lkdGgsIGhlaWdodCwgeV9wbGFuZSwgeV9zdHJpZGUsIHVfcGxhbmUsIHVfc3Ry
aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2X3BsYW5lLCB2X3N0cmlkZSwgbm9f
bG9uZ2VyX3VzZWQpOworICAgICBkZWZhdWx0OgorLSAgICAgIEZBVEFMKCkgPDwgIlVuZXhwZWN0
ZWQgZnJhbWUgYnVmZmVyIHR5cGUuIjsKKysgICAgICBSVENfRkFUQUwoKSA8PCAiVW5leHBlY3Rl
ZCBmcmFtZSBidWZmZXIgdHlwZS4iOworICAgICAgIHJldHVybiBudWxscHRyOworICAgfQorIH0K
K2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5jYworaW5kZXggOWEyOTI2MTQzZDAuLjQ3
Njk1NGZlNjBkIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2Nu
Zy5jYworKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5jYworQEAgLTE3
MSw3ICsxNzEsNyBAQCBBdWRpb0VuY29kZXI6OkVuY29kZWRJbmZvIEF1ZGlvRW5jb2RlckNuZzo6
RW5jb2RlSW1wbCgKKyAgICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIFZhZDo6a0Vycm9y
OiB7CistICAgICAgRkFUQUwoKTsgIC8vIEZhaWxzIG9ubHkgaWYgZmVkIGludmFsaWQgZGF0YS4K
KysgICAgICBSVENfRkFUQUwoKTsgIC8vIEZhaWxzIG9ubHkgaWYgZmVkIGludmFsaWQgZGF0YS4K
KyAgICAgICBicmVhazsKKyAgICAgfQorICAgfQorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9p
bGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29k
ZXJfaWxiYy5jYworaW5kZXggODgwMWZkNTU1OTAuLjM1ZTZmYzY0YTYyIDEwMDY0NAorLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCisrKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKK0BAIC00MSw3ICs0MSw3IEBAIGludCBHZXRJ
bGJjQml0cmF0ZShpbnQgcHRpbWUpIHsKKyAgICAgICAvLyA1MCBieXRlcyBwZXIgZnJhbWUgb2Yg
MzAgbXMgPT4gKGFwcHJveCkgMTMzMzMgYml0cy9zLgorICAgICAgIHJldHVybiAxMzMzMzsKKyAg
ICAgZGVmYXVsdDoKKy0gICAgICBGQVRBTCgpOworKyAgICAgIFJUQ19GQVRBTCgpOworICAgfQor
IH0KKyAKK0BAIC0xNDgsNyArMTQ4LDcgQEAgc2l6ZV90IEF1ZGlvRW5jb2RlcklsYmNJbXBsOjpS
ZXF1aXJlZE91dHB1dFNpemVCeXRlcygpIGNvbnN0IHsKKyAgICAgY2FzZSA2OgorICAgICAgIHJl
dHVybiAyICogNTA7CisgICAgIGRlZmF1bHQ6CistICAgICAgRkFUQUwoKTsKKysgICAgICBSVENf
RkFUQUwoKTsKKyAgIH0KKyB9CisgCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlf
bm9vcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X25vb3AuY2MKK25ldyBmaWxlIG1vZGUgMTAw
NjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uYjA1OGMyZDY3MjgKKy0tLSAvZGV2L251bGwKKysrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDkvdnA5X25vb3AuY2MKK0BAIC0wLDAgKzEsNDMgQEAKKysvKgorKyAq
ICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisrICoKKysgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKysgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisrICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorKyAqCisrICovCisrCisrI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxF
X1ZQOSkKKysjZXJyb3IKKysjZW5kaWYgIC8vICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKysK
KysjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9pbmNsdWRlL3ZwOS5o
IgorKworKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKKysj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisrCisrbmFtZXNwYWNlIHdlYnJ0YyB7CisrCisr
c3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IFN1cHBvcnRlZFZQOUNvZGVjcygpIHsKKysgIHJl
dHVybiBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4oKTsKKyt9CisrCisrc3RkOjp1bmlxdWVf
cHRyPFZQOUVuY29kZXI+IFZQOUVuY29kZXI6OkNyZWF0ZSgpIHsKKysgIFJUQ19OT1RSRUFDSEVE
KCk7CisrICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisrc3RkOjp1bmlxdWVfcHRyPFZQOUVuY29k
ZXI+IFZQOUVuY29kZXI6OkNyZWF0ZSgKKysgICAgY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyYg
Y29kZWMpIHsKKysgIFJUQ19OT1RSRUFDSEVEKCk7CisrICByZXR1cm4gbnVsbHB0cjsKKyt9Cisr
Cisrc3RkOjp1bmlxdWVfcHRyPFZQOURlY29kZXI+IFZQOURlY29kZXI6OkNyZWF0ZSgpIHsKKysg
IFJUQ19OT1RSRUFDSEVEKCk7CisrICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisrfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjCitpbmRleCBlMDE4ZWE3NTVk
Ni4uMGQ3YWVhOWQ2MGEgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjCitAQCAtMzUxLDEx
ICszNTEsMjEgQEAgVENQQ29ubmVjdGlvbjo6VENQQ29ubmVjdGlvbihUQ1BQb3J0KiBwb3J0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsIHBvcnQoKSBOZXR3b3JrOiIgPDwgcG9ydC0+
TmV0d29yaygpLT5Ub1N0cmluZygpOworICAgICBjb25zdCBzdGQ6OnZlY3RvcjxydGM6OkludGVy
ZmFjZUFkZHJlc3M+JiBkZXNpcmVkX2FkZHJlc3NlcyA9CisgICAgICAgICBwb3J0Xy0+TmV0d29y
aygpLT5HZXRJUHMoKTsKKysKKysjaWYgZGVmaW5lZChXRUJSVENfV0VCS0lUX0JVSUxEKQorKyAg
ICAgUlRDX0RDSEVDSyhzb2NrZXQtPkdldExvY2FsQWRkcmVzcygpLklzTG9vcGJhY2tJUCgpIHx8
CisrICAgICAgICAgICAgICAgIChzdGQ6OmZpbmRfaWYoZGVzaXJlZF9hZGRyZXNzZXMuYmVnaW4o
KSwgZGVzaXJlZF9hZGRyZXNzZXMuZW5kKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbdGhpc10oY29uc3QgcnRjOjpJbnRlcmZhY2VBZGRyZXNzJiBhZGRyKSB7CisrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzb2NrZXRfLT5HZXRMb2NhbEFkZHJlc3MoKS5p
cGFkZHIoKSA9PQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcjsK
KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICE9IGRlc2lyZWRfYWRkcmVzc2VzLmVu
ZCgpKSk7CisrICNlbHNlCisgICAgIFJUQ19EQ0hFQ0soc3RkOjpmaW5kX2lmKGRlc2lyZWRfYWRk
cmVzc2VzLmJlZ2luKCksIGRlc2lyZWRfYWRkcmVzc2VzLmVuZCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbdGhpc10oY29uc3QgcnRjOjpJbnRlcmZhY2VBZGRyZXNzJiBhZGRyKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvY2tldF8tPkdldExvY2Fs
QWRkcmVzcygpLmlwYWRkcigpID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICE9IGRlc2lyZWRfYWRk
cmVzc2VzLmVuZCgpKTsKKysjZW5kaWYKKyAgICAgQ29ubmVjdFNvY2tldFNpZ25hbHMoc29ja2V0
KTsKKyAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjCitp
bmRleCAzN2M2YTBiMGJjZi4uNzUyNjE1MDhiMjcgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MK
KysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJj
b25uZWN0aW9uZmFjdG9yeS5jYworQEAgLTI2MSw3ICsyNjEsNyBAQCBSdHBDYXBhYmlsaXRpZXMg
UGVlckNvbm5lY3Rpb25GYWN0b3J5OjpHZXRSdHBTZW5kZXJDYXBhYmlsaXRpZXMoCisgICAgICAg
cmV0dXJuIFJ0cENhcGFiaWxpdGllcygpOworICAgfQorICAgLy8gTm90IHJlYWNoZWQ7IGF2b2lk
cyBjb21waWxlIHdhcm5pbmcuCistICBGQVRBTCgpOworKyAgUlRDX0ZBVEFMKCk7CisgfQorIAor
IFJ0cENhcGFiaWxpdGllcyBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkdldFJ0cFJlY2VpdmVyQ2Fw
YWJpbGl0aWVzKAorQEAgLTI4OCw3ICsyODgsNyBAQCBSdHBDYXBhYmlsaXRpZXMgUGVlckNvbm5l
Y3Rpb25GYWN0b3J5OjpHZXRSdHBSZWNlaXZlckNhcGFiaWxpdGllcygKKyAgICAgICByZXR1cm4g
UnRwQ2FwYWJpbGl0aWVzKCk7CisgICB9CisgICAvLyBOb3QgcmVhY2hlZDsgYXZvaWRzIGNvbXBp
bGUgd2FybmluZy4KKy0gIEZBVEFMKCk7CisrICBSVENfRkFUQUwoKTsKKyB9CisgCisgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvU291cmNlSW50ZXJmYWNlPgorZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJz
aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRw
cGFyYW1ldGVyc2NvbnZlcnNpb24uY2MKK2luZGV4IGJmM2JjZTNkYWEzLi44NjU2ODVkNzNjNCAx
MDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYworQEAgLTYx
LDcgKzYxLDcgQEAgUlRDRXJyb3JPcjxjcmlja2V0OjpGZWVkYmFja1BhcmFtPiBUb0NyaWNrZXRG
ZWVkYmFja1BhcmFtKAorICAgICAgIHJldHVybiBjcmlja2V0OjpGZWVkYmFja1BhcmFtKGNyaWNr
ZXQ6OmtSdGNwRmJQYXJhbVRyYW5zcG9ydENjKTsKKyAgIH0KKyAgIC8vIE5vdCByZWFjaGVkOyBh
dm9pZHMgY29tcGlsZSB3YXJuaW5nLgorLSAgRkFUQUwoKTsKKysgIFJUQ19GQVRBTCgpOworIH0K
KyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NoZWNrcy5oCitpbmRleCA5
ZGU2ZDQ3NTczYy4uNWNmMDY3OTkxMGUgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaAorKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgKK0BAIC04
MCw3ICs4MCw3IEBAIFJUQ19OT1JFVFVSTiB2b2lkIHJ0Y19GYXRhbE1lc3NhZ2UoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIG1zZyk7CisgLy8gICBtZXNzYWdlcyBpZiB0
aGUgY29uZGl0aW9uIGRvZXNuJ3QgaG9sZC4gUHJlZmVyIHRoZW0gdG8gcmF3IFJUQ19DSEVDSyBh
bmQKKyAvLyAgIFJUQ19EQ0hFQ0suCisgLy8KKy0vLyAtIEZBVEFMKCkgYWJvcnRzIHVuY29uZGl0
aW9uYWxseS4KKysvLyAtIFJUQ19GQVRBTCgpIGFib3J0cyB1bmNvbmRpdGlvbmFsbHkuCisgLy8K
KyAvLyBUT0RPKGFqbSk6IElkZWFsbHksIGNoZWNrcy5oIHdvdWxkIGJlIGNvbWJpbmVkIHdpdGgg
bG9nZ2luZy5oLCBidXQKKyAvLyBjb25zb2xpZGF0aW9uIHdpdGggc3lzdGVtX3dyYXBwZXJzL2xv
Z2dpbmcuaCBzaG91bGQgaGFwcGVuIGZpcnN0LgorQEAgLTM0OCw5ICszNDgsOSBAQCBjbGFzcyBG
YXRhbExvZ0NhbGwgZmluYWwgeworICNkZWZpbmUgUlRDX05PVFJFQUNIRUQoKSBSVENfRENIRUNL
KFJUQ19VTlJFQUNIQUJMRV9DT0RFX0hJVCkKKyAKKyAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84
NDU0KTogQWRkIGFuIFJUQ18gcHJlZml4IG9yIHJlbmFtZSBkaWZmZXJlbnRseS4KKy0jZGVmaW5l
IEZBVEFMKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorKyNkZWZpbmUgUlRDX0ZBVEFMKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgcnRjOjp3ZWJydGNfY2hlY2tzX2ltcGw6OkZhdGFs
TG9nQ2FsbDxmYWxzZT4oX19GSUxFX18sIF9fTElORV9fLCBcCistICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRkFUQUwoKSIpICYgICAgICAgIFwKKysgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSVENfRkFUQUwoKSIp
ICYgICAgICAgIFwKKyAgICAgICBydGM6OndlYnJ0Y19jaGVja3NfaW1wbDo6TG9nU3RyZWFtZXI8
PigpCisgCisgLy8gUGVyZm9ybXMgdGhlIGludGVnZXIgZGl2aXNpb24gYS9iIGFuZCByZXR1cm5z
IHRoZSByZXN1bHQuIENIRUNLcyB0aGF0IHRoZQorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MKK2luZGV4
IGJjY2UwZGFmYmMwLi42YjQzYjkxZTAyNiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjCisrKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYworQEAg
LTgxLDcgKzgxLDcgQEAgdm9pZCBGbGFnOjpTZXRUb0RlZmF1bHQoKSB7CisgICAgICAgdmFyaWFi
bGVfLT5zID0gZGVmYXVsdF8uczsKKyAgICAgICByZXR1cm47CisgICB9CistICBGQVRBTCgpIDw8
ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKysgIFJUQ19GQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2Rl
IjsKKyB9CisgCisgc3RhdGljIGNvbnN0IGNoYXIqIFR5cGUyU3RyaW5nKEZsYWc6OlR5cGUgdHlw
ZSkgeworQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIFR5cGUyU3RyaW5nKEZs
YWc6OlR5cGUgdHlwZSkgeworICAgICBjYXNlIEZsYWc6OlNUUklORzoKKyAgICAgICByZXR1cm4g
InN0cmluZyI7CisgICB9CistICBGQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKysgIFJU
Q19GQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKyB9CisgCisgc3RhdGljIHZvaWQgUHJp
bnRGbGFnVmFsdWUoRmxhZzo6VHlwZSB0eXBlLCBGbGFnVmFsdWUqIHApIHsKK0BAIC0xMTMsNyAr
MTEzLDcgQEAgc3RhdGljIHZvaWQgUHJpbnRGbGFnVmFsdWUoRmxhZzo6VHlwZSB0eXBlLCBGbGFn
VmFsdWUqIHApIHsKKyAgICAgICBwcmludGYoIiVzIiwgcC0+cyk7CisgICAgICAgcmV0dXJuOwor
ICAgfQorLSAgRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7CisrICBSVENfRkFUQUwoKSA8
PCAidW5yZWFjaGFibGUgY29kZSI7CisgfQorIAorIHZvaWQgRmxhZzo6UHJpbnQoYm9vbCBwcmlu
dF9jdXJyZW50X3ZhbHVlKSB7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmgKK2luZGV4IDUxM2Jj
MjYzNjUxLi43MThkOTU4OTM0OCAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmgKKysrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9uLmgKK0BAIC01
MCw3ICs1MCw3IEBAIGNsYXNzIExvY2F0aW9uIHsKKyAjZGVmaW5lIFJUQ19GUk9NX0hFUkUgUlRD
X0ZST01fSEVSRV9XSVRIX0ZVTkNUSU9OKF9fRlVOQ1RJT05fXykKKyAKKyAjZGVmaW5lIFJUQ19G
Uk9NX0hFUkVfV0lUSF9GVU5DVElPTihmdW5jdGlvbl9uYW1lKSBcCistICA6OnJ0Yzo6TG9jYXRp
b24oZnVuY3Rpb25fbmFtZSwgX19GSUxFX18gIjoiIFNUUklOR0laRShfX0xJTkVfXykpCisrICA6
OnJ0Yzo6TG9jYXRpb24oZnVuY3Rpb25fbmFtZSwgX19GSUxFX18gIjoiIFJUQ19TVFJJTkdJWkUo
X19MSU5FX18pKQorIAorIH0gIC8vIG5hbWVzcGFjZSBydGMKKyAKK2RpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9n
Z2luZy5jYworaW5kZXggYmI0ZmJmYWFlMjUuLjQ0ZWMzZjUwYzE5IDEwMDY0NAorLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZy5j
YworKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbG9nZ2luZy5jYworQEAgLTIwLDI4ICsyMCwyNiBAQAorICNpbmNsdWRlIDxDb3JlU2Vydmlj
ZXMvQ29yZVNlcnZpY2VzLmg+CisgI2VsaWYgZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKKyAjaW5j
bHVkZSA8YW5kcm9pZC9sb2cuaD4KKy0KKyAvLyBBbmRyb2lkIGhhcyBhIDEwMjQgbGltaXQgb24g
bG9nIGlucHV0cy4gV2UgdXNlIDYwIGNoYXJzIGFzIGFuCisgLy8gYXBwcm94IGZvciB0aGUgaGVh
ZGVyL3RhZyBwb3J0aW9uLgorIC8vIFNlZSBhbmRyb2lkL3N5c3RlbS9jb3JlL2xpYmxvZy9sb2dk
X3dyaXRlLmMKKyBzdGF0aWMgY29uc3QgaW50IGtNYXhMb2dMaW5lU2l6ZSA9IDEwMjQgLSA2MDsK
KyAjZW5kaWYgIC8vIFdFQlJUQ19NQUMgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykgfHwgV0VCUlRD
X0FORFJPSUQKKyAKKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8c3RyaW5nLmg+Cisr
I2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDx0aW1lLmg+CisrCisgI2luY2x1ZGUgPGFs
Z29yaXRobT4KKyAjaW5jbHVkZSA8Y3N0ZGFyZz4KKyAjaW5jbHVkZSA8dmVjdG9yPgorIAorLSNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxz
ZWN0aW9uLmgiCisgI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyAjaW5jbHVkZSAicnRj
X2Jhc2UvcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmgiCisrI2luY2x1ZGUgInJ0Y19iYXNlL25ldmVy
X2Rlc3Ryb3llZC5oIgorICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKKyAjaW5j
bHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgorICNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmd1dGlscy5oIgorLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlv
bnMuaCIKKyAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCisgCisgbmFtZXNwYWNlIHJ0
YyB7CitAQCAtNjUsMjAgKzYzLDE5IEBAIGNvbnN0IGNoYXIqIEZpbGVuYW1lRnJvbVBhdGgoY29u
c3QgY2hhciogZmlsZSkgeworICAgICByZXR1cm4gKGVuZDEgPiBlbmQyKSA/IGVuZDEgKyAxIDog
ZW5kMiArIDE7CisgfQorIAorLS8vIEdsb2JhbCBsb2NrIGZvciBsb2cgc3Vic3lzdGVtLCBvbmx5
IG5lZWRlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHN0cmVhbXNfLgorLUNyaXRpY2FsU2VjdGlv
biBnX2xvZ19jcml0OworKy8vIEdsb2JhbCBsb2NrIGZvciBsb2cgc3Vic3lzdGVtLCBvbmx5IG5l
ZWRlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHN0cmVhbUxpc3QoKS4KKytDcml0aWNhbFNlY3Rp
b24mIGxvZ0NyaXRpY2FsU2NvcGUoKSB7CisrICBzdGF0aWMgYXV0byBzY29wZSA9IG1ha2VOZXZl
ckRlc3Ryb3llZDw+KENyaXRpY2FsU2VjdGlvbiB7IH0pOworKyAgcmV0dXJuIHNjb3BlLmdldCgp
OworK30KKysKKyB9ICAvLyBuYW1lc3BhY2UKKyAKKyAvLyBJbmVmZmljaWVudCBkZWZhdWx0IGlt
cGxlbWVudGF0aW9uLCBvdmVycmlkZSBpcyByZWNvbW1lbmRlZC4KKyB2b2lkIExvZ1Npbms6Ok9u
TG9nTWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbXNnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExvZ2dpbmdTZXZlcml0eSBzZXZlcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiB0YWcpIHsKKy0gIE9uTG9nTWVzc2FnZSh0YWcgKyAoIjogIiArIG1z
ZyksIHNldmVyaXR5KTsKKy19CistCistdm9pZCBMb2dTaW5rOjpPbkxvZ01lc3NhZ2UoY29uc3Qg
c3RkOjpzdHJpbmcmIG1zZywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnaW5nU2V2
ZXJpdHkgLyogc2V2ZXJpdHkgKi8pIHsKKy0gIE9uTG9nTWVzc2FnZShtc2cpOworKyAgT25Mb2dN
ZXNzYWdlKHRhZyArICgiOiAiICsgbXNnKSk7CisgfQorIAorIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CitAQCAtOTEsNyArODgsMTUgQEAgYm9vbCBMb2dNZXNzYWdlOjpsb2dfdG9fc3RkZXJyXyA9IHRy
dWU7CisgLy8gTm90ZTogd2UgZXhwbGljaXRseSBkbyBub3QgY2xlYW4gdGhpcyB1cCwgYmVjYXVz
ZSBvZiB0aGUgdW5jZXJ0YWluIG9yZGVyaW5nCisgLy8gb2YgZGVzdHJ1Y3RvcnMgYXQgcHJvZ3Jh
bSBleGl0LiAgTGV0IHRoZSBwZXJzb24gd2hvIHNldHMgdGhlIHN0cmVhbSB0cmlnZ2VyCisgLy8g
Y2xlYW51cCBieSBzZXR0aW5nIHRvIG51bGwsIG9yIGxldCBpdCBsZWFrIChzYWZlIGF0IHByb2dy
YW0gZXhpdCkuCistTG9nTWVzc2FnZTo6U3RyZWFtTGlzdCBMb2dNZXNzYWdlOjpzdHJlYW1zXyBS
VENfR1VBUkRFRF9CWShnX2xvZ19jcml0KTsKKyt0eXBlZGVmIHN0ZDo6cGFpcjxMb2dTaW5rKiwg
TG9nZ2luZ1NldmVyaXR5PiBTdHJlYW1BbmRTZXZlcml0eTsKKyt0eXBlZGVmIHN0ZDo6bGlzdDxT
dHJlYW1BbmRTZXZlcml0eT4gU3RyZWFtTGlzdDsKKysKKysvLyBUaGUgb3V0cHV0IHN0cmVhbXMg
YW5kIHRoZWlyIGFzc29jaWF0ZWQgc2V2ZXJpdGllcworK1N0cmVhbUxpc3QmIHN0cmVhbUxpc3Qo
KQorKyAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGxvZ0NyaXRpY2FsU2NvcGUoKSkg
eworKyAgICAgICAgc3RhdGljIGF1dG8gc3RyZWFtX2xpc3QgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8
PihTdHJlYW1MaXN0IHsgfSk7CisrICByZXR1cm4gc3RyZWFtX2xpc3QuZ2V0KCk7CisrfQorIAor
IC8vIEJvb2xlYW4gb3B0aW9ucyBkZWZhdWx0IHRvIGZhbHNlICgwKQorIGJvb2wgTG9nTWVzc2Fn
ZTo6dGhyZWFkXywgTG9nTWVzc2FnZTo6dGltZXN0YW1wXzsKK0BAIC0xMDUsNiArMTEwLDcgQEAg
TG9nTWVzc2FnZTo6TG9nTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgTG9nRXJyb3JDb250ZXh0IGVycl9jdHgsCisgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgZXJyKQorICAgICA6IHNldmVyaXR5XyhzZXYpIHsKKysKKyAgIGlmICh0aW1lc3RhbXBf
KSB7CisgICAgIC8vIFVzZSBTeXN0ZW1UaW1lTWlsbGlzIHNvIHRoYXQgZXZlbiBpZiB0ZXN0cyB1
c2UgZmFrZSBjbG9ja3MsIHRoZSB0aW1lc3RhbXAKKyAgICAgLy8gaW4gbG9nIG1lc3NhZ2VzIHJl
cHJlc2VudHMgdGhlIHJlYWwgc3lzdGVtIHRpbWUuCitAQCAtMjA1LDEzICsyMTEsMTMgQEAgTG9n
TWVzc2FnZTo6fkxvZ01lc3NhZ2UoKSB7CisgI2VuZGlmCisgICB9CisgCistICBDcml0U2NvcGUg
Y3MoJmdfbG9nX2NyaXQpOworLSAgZm9yIChhdXRvJiBrdiA6IHN0cmVhbXNfKSB7CisrICBDcml0
U2NvcGUgY3MoJmxvZ0NyaXRpY2FsU2NvcGUoKSk7CisrICBmb3IgKGF1dG8mIGt2IDogc3RyZWFt
TGlzdCgpKSB7CisgICAgIGlmIChzZXZlcml0eV8gPj0ga3Yuc2Vjb25kKSB7CisgI2lmIGRlZmlu
ZWQoV0VCUlRDX0FORFJPSUQpCisgICAgICAga3YuZmlyc3QtPk9uTG9nTWVzc2FnZShzdHIsIHNl
dmVyaXR5XywgdGFnXyk7CisgI2Vsc2UKKy0gICAgICBrdi5maXJzdC0+T25Mb2dNZXNzYWdlKHN0
ciwgc2V2ZXJpdHlfKTsKKysgICAgICBrdi5maXJzdC0+T25Mb2dNZXNzYWdlKHN0cik7CisgI2Vu
ZGlmCisgICAgIH0KKyAgIH0KK0BAIC0yNTQsNyArMjYwLDcgQEAgdm9pZCBMb2dNZXNzYWdlOjpM
b2dUaW1lc3RhbXBzKGJvb2wgb24pIHsKKyAKKyB2b2lkIExvZ01lc3NhZ2U6OkxvZ1RvRGVidWco
TG9nZ2luZ1NldmVyaXR5IG1pbl9zZXYpIHsKKyAgIGdfZGJnX3NldiA9IG1pbl9zZXY7CistICBD
cml0U2NvcGUgY3MoJmdfbG9nX2NyaXQpOworKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0aWNhbFNj
b3BlKCkpOworICAgVXBkYXRlTWluTG9nU2V2ZXJpdHkoKTsKKyB9CisgCitAQCAtMjYzLDkgKzI2
OSw5IEBAIHZvaWQgTG9nTWVzc2FnZTo6U2V0TG9nVG9TdGRlcnIoYm9vbCBsb2dfdG9fc3RkZXJy
KSB7CisgfQorIAorIGludCBMb2dNZXNzYWdlOjpHZXRMb2dUb1N0cmVhbShMb2dTaW5rKiBzdHJl
YW0pIHsKKy0gIENyaXRTY29wZSBjcygmZ19sb2dfY3JpdCk7CisrICBDcml0U2NvcGUgY3MoJmxv
Z0NyaXRpY2FsU2NvcGUoKSk7CisgICBMb2dnaW5nU2V2ZXJpdHkgc2V2ID0gTFNfTk9ORTsKKy0g
IGZvciAoYXV0byYga3YgOiBzdHJlYW1zXykgeworKyAgZm9yIChhdXRvJiBrdiA6IHN0cmVhbUxp
c3QoKSkgeworICAgICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0gPT0ga3YuZmlyc3QpIHsKKyAgICAg
ICBzZXYgPSBzdGQ6Om1pbihzZXYsIGt2LnNlY29uZCk7CisgICAgIH0KK0BAIC0yNzQsMTYgKzI4
MCwxNiBAQCBpbnQgTG9nTWVzc2FnZTo6R2V0TG9nVG9TdHJlYW0oTG9nU2luayogc3RyZWFtKSB7
CisgfQorIAorIHZvaWQgTG9nTWVzc2FnZTo6QWRkTG9nVG9TdHJlYW0oTG9nU2luayogc3RyZWFt
LCBMb2dnaW5nU2V2ZXJpdHkgbWluX3NldikgeworLSAgQ3JpdFNjb3BlIGNzKCZnX2xvZ19jcml0
KTsKKy0gIHN0cmVhbXNfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihzdHJlYW0sIG1pbl9zZXYp
KTsKKysgIENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29wZSgpKTsKKysgIHN0cmVhbUxpc3Qo
KS5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoc3RyZWFtLCBtaW5fc2V2KSk7CisgICBVcGRhdGVN
aW5Mb2dTZXZlcml0eSgpOworIH0KKyAKKyB2b2lkIExvZ01lc3NhZ2U6OlJlbW92ZUxvZ1RvU3Ry
ZWFtKExvZ1NpbmsqIHN0cmVhbSkgeworLSAgQ3JpdFNjb3BlIGNzKCZnX2xvZ19jcml0KTsKKy0g
IGZvciAoU3RyZWFtTGlzdDo6aXRlcmF0b3IgaXQgPSBzdHJlYW1zXy5iZWdpbigpOyBpdCAhPSBz
dHJlYW1zXy5lbmQoKTsgKytpdCkgeworKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0aWNhbFNjb3Bl
KCkpOworKyAgZm9yIChTdHJlYW1MaXN0OjppdGVyYXRvciBpdCA9IHN0cmVhbUxpc3QoKS5iZWdp
bigpOyBpdCAhPSBzdHJlYW1MaXN0KCkuZW5kKCk7ICsraXQpIHsKKyAgICAgaWYgKHN0cmVhbSA9
PSBpdC0+Zmlyc3QpIHsKKy0gICAgICBzdHJlYW1zXy5lcmFzZShpdCk7CisrICAgICAgc3RyZWFt
TGlzdCgpLmVyYXNlKGl0KTsKKyAgICAgICBicmVhazsKKyAgICAgfQorICAgfQorQEAgLTM0Miw5
ICszNDgsOSBAQCB2b2lkIExvZ01lc3NhZ2U6OkNvbmZpZ3VyZUxvZ2dpbmcoY29uc3QgY2hhciog
cGFyYW1zKSB7CisgfQorIAorIHZvaWQgTG9nTWVzc2FnZTo6VXBkYXRlTWluTG9nU2V2ZXJpdHko
KQorLSAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGdfbG9nX2NyaXQpIHsKKysgICAg
UlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChsb2dDcml0aWNhbFNjb3BlKCkpIHsKKyAgIExv
Z2dpbmdTZXZlcml0eSBtaW5fc2V2ID0gZ19kYmdfc2V2OworLSAgZm9yIChjb25zdCBhdXRvJiBr
diA6IHN0cmVhbXNfKSB7CisrICBmb3IgKGNvbnN0IGF1dG8mIGt2IDogc3RyZWFtTGlzdCgpKSB7
CisgICAgIGNvbnN0IExvZ2dpbmdTZXZlcml0eSBzZXYgPSBrdi5zZWNvbmQ7CisgICAgIG1pbl9z
ZXYgPSBzdGQ6Om1pbihtaW5fc2V2LCBzZXYpOworICAgfQorQEAgLTQ1OCwxMSArNDY0LDggQEAg
Ym9vbCBMb2dNZXNzYWdlOjpJc05vb3AoTG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5KSB7CisgICAv
LyBUT0RPKHRvbW1pKTogV2UncmUgZ3JhYmJpbmcgdGhpcyBsb2NrIGZvciBldmVyeSBMb2dNZXNz
YWdlIGluc3RhbmNlIHRoYXQKKyAgIC8vIGlzIGdvaW5nIHRvIGJlIGxvZ2dlZC4gVGhpcyBpbnRy
b2R1Y2VzIHVubmVjZXNzYXJ5IHN5bmNocm9uaXphdGlvbiBmb3IKKyAgIC8vIGEgZmVhdHVyZSB0
aGF0J3MgbW9zdGx5IHVzZWQgZm9yIHRlc3RpbmcuCistICBDcml0U2NvcGUgY3MoJmdfbG9nX2Ny
aXQpOworLSAgaWYgKHN0cmVhbXNfLnNpemUoKSA+IDApCistICAgIHJldHVybiBmYWxzZTsKKy0K
Ky0gIHJldHVybiB0cnVlOworKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0aWNhbFNjb3BlKCkpOwor
KyAgcmV0dXJuIHN0cmVhbUxpc3QoKS5zaXplKCkgPT0gMDsKKyB9CisgCisgdm9pZCBMb2dNZXNz
YWdlOjpGaW5pc2hQcmludFN0cmVhbSgpIHsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZlcl9kZXN0cm95ZWQuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldmVyX2Rl
c3Ryb3llZC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLmZjYzYy
ZTM1NTM0CistLS0gL2Rldi9udWxsCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZlcl9kZXN0cm95ZWQuaAorQEAgLTAsMCArMSw2OSBA
QAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6Cisr
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKysgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKysgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisrICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisrICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisrICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKysgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKysgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICovCisrCisrI3ByYWdtYSBvbmNlCisr
CisrI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorKyNpbmNsdWRlIDx1dGlsaXR5PgorKworK25hbWVz
cGFjZSBydGMgeworKworK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE5ldmVyRGVzdHJveWVk
IHsKKytwdWJsaWM6CisrICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IE5ldmVyRGVzdHJv
eWVkKEFyZ3MmJi4uLiBhcmdzKQorKyAgICB7CisrICAgICAgICBuZXcgKHN0b3JhZ2VQb2ludGVy
KCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKysgICAgfQorKworKyAgICBOZXZl
ckRlc3Ryb3llZChOZXZlckRlc3Ryb3llZCYmIG90aGVyKQorKyAgICB7CisrICAgICAgICBuZXcg
KHN0b3JhZ2VQb2ludGVyKCkpIFQoc3RkOjptb3ZlKCpvdGhlci5zdG9yYWdlUG9pbnRlcigpKSk7
CisrICAgIH0KKysKKysgICAgb3BlcmF0b3IgVCYoKSB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIo
KTsgfQorKyAgICBUJiBnZXQoKSB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsgfQorKworKyAg
ICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgcmV0dXJuICpzdG9yYWdlUG9pbnRlcigpOyB9
CisrICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpzdG9yYWdlUG9pbnRlcigpOyB9
CisrCisrcHJpdmF0ZToKKysgICAgTmV2ZXJEZXN0cm95ZWQoY29uc3QgTmV2ZXJEZXN0cm95ZWQm
KSA9IGRlbGV0ZTsKKysgICAgTmV2ZXJEZXN0cm95ZWQmIG9wZXJhdG9yPShjb25zdCBOZXZlckRl
c3Ryb3llZCYpID0gZGVsZXRlOworKworKyAgICB1c2luZyBQb2ludGVyVHlwZSA9IHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlKjsKKysKKysgICAgUG9pbnRlclR5cGUgc3RvcmFn
ZVBvaW50ZXIoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFBvaW50ZXJUeXBlPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IFQqPigmbV9zdG9yYWdlKSk7IH0KKysKKysgICAgLy8gRklYTUU6IElu
dmVzdGlnYXRlIHdoZXRoZXIgd2Ugc2hvdWxkIGFsbG9jYXRlIGEgaHVuayBvZiB2aXJ0dWFsIG1l
bW9yeQorKyAgICAvLyBhbmQgaGFuZCBvdXQgY2h1bmtzIG9mIGl0IHRvIE5ldmVyRGVzdHJveWVk
IGluc3RlYWQsIHRvIHJlZHVjZSBmcmFnbWVudGF0aW9uLgorKyAgICB0eXBlbmFtZSBzdGQ6OmFs
aWduZWRfc3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT46OnR5
cGUgbV9zdG9yYWdlOworK307CisrCisrdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE5ldmVy
RGVzdHJveWVkPFQ+IG1ha2VOZXZlckRlc3Ryb3llZChUJiYgYXJndW1lbnQpCisreworKyAgICBy
ZXR1cm4gTmV2ZXJEZXN0cm95ZWQ8VD4oc3RkOjptb3ZlKGFyZ3VtZW50KSk7CisrfQorKworK30g
Ly8gbmFtZXNwYWNlIHJ0YworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNz
L3NhZmVfY29udmVyc2lvbnMuaAoraW5kZXggNThlZmNhYTc0NmEuLjQ4YzIxMmU0ZDQ5IDEwMDY0
NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25z
LmgKK0BAIC02MywxMSArNjMsMTEgQEAgaW5saW5lIERzdCBzYXR1cmF0ZWRfY2FzdChTcmMgdmFs
dWUpIHsKKyAKKyAgICAgLy8gU2hvdWxkIGZhaWwgb25seSBvbiBhdHRlbXB0aW5nIHRvIGFzc2ln
biBOYU4gdG8gYSBzYXR1cmF0ZWQgaW50ZWdlci4KKyAgICAgY2FzZSBpbnRlcm5hbDo6VFlQRV9J
TlZBTElEOgorLSAgICAgIEZBVEFMKCk7CisrICAgICAgUlRDX0ZBVEFMKCk7CisgICAgICAgcmV0
dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8RHN0Pjo6bWF4KCk7CisgICB9CisgCistICBGQVRBTCgp
OworKyAgUlRDX0ZBVEFMKCk7CisgICByZXR1cm4gc3RhdGljX2Nhc3Q8RHN0Pih2YWx1ZSk7Cisg
fQorIAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5jYworaW5k
ZXggNGU2MWI4NmYzYmEuLjRlMzI1ZGNlYzAxIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNj
CisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MKK0BAIC0yNDQsMTEgKzI0NCwxMSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6Q2xvbmUoKSBjb25zdCB7
Cisgc3RkOjpzdHJpbmcgT3BlblNTTENlcnRpZmljYXRlOjpUb1BFTVN0cmluZygpIGNvbnN0IHsK
KyAgIEJJTyogYmlvID0gQklPX25ldyhCSU9fc19tZW0oKSk7CisgICBpZiAoIWJpbykgeworLSAg
ICBGQVRBTCgpIDw8ICJVbnJlYWNoYWJsZSBjb2RlLiI7CisrICAgIFJUQ19GQVRBTCgpIDw8ICJV
bnJlYWNoYWJsZSBjb2RlLiI7CisgICB9CisgICBpZiAoIVBFTV93cml0ZV9iaW9fWDUwOShiaW8s
IHg1MDlfKSkgeworICAgICBCSU9fZnJlZShiaW8pOworLSAgICBGQVRBTCgpIDw8ICJVbnJlYWNo
YWJsZSBjb2RlLiI7CisrICAgIFJUQ19GQVRBTCgpIDw8ICJVbnJlYWNoYWJsZSBjb2RlLiI7Cisg
ICB9CisgICBCSU9fd3JpdGUoYmlvLCAiXDAiLCAxKTsKKyAgIGNoYXIqIGJ1ZmZlcjsKK0BAIC0y
NjQsMTEgKzI2NCwxMSBAQCB2b2lkIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9ERVIoQnVmZmVyKiBk
ZXJfYnVmZmVyKSBjb25zdCB7CisgICAvLyBDYWxjdWxhdGVzIHRoZSBERVIgcmVwcmVzZW50YXRp
b24gb2YgdGhlIGNlcnRpZmljYXRlLCBmcm9tIHNjcmF0Y2guCisgICBCSU8qIGJpbyA9IEJJT19u
ZXcoQklPX3NfbWVtKCkpOworICAgaWYgKCFiaW8pIHsKKy0gICAgRkFUQUwoKSA8PCAiVW5yZWFj
aGFibGUgY29kZS4iOworKyAgICBSVENfRkFUQUwoKSA8PCAiVW5yZWFjaGFibGUgY29kZS4iOwor
ICAgfQorICAgaWYgKCFpMmRfWDUwOV9iaW8oYmlvLCB4NTA5XykpIHsKKyAgICAgQklPX2ZyZWUo
YmlvKTsKKy0gICAgRkFUQUwoKSA8PCAiVW5yZWFjaGFibGUgY29kZS4iOworKyAgICBSVENfRkFU
QUwoKSA8PCAiVW5yZWFjaGFibGUgY29kZS4iOworICAgfQorICAgY2hhciogZGF0YSA9IG51bGxw
dHI7CisgICBzaXplX3QgbGVuZ3RoID0gQklPX2dldF9tZW1fZGF0YShiaW8sICZkYXRhKTsKK2Rp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9waHlzaWNhbHNvY2tldHNlcnZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2Fsc29ja2V0c2VydmVyLmNjCitpbmRleCA0
YWQyODU3YzAwYy4uNzQ0OGE3ZTA0MjcgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9waHlzaWNhbHNvY2tldHNlcnZlci5jYwor
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
cGh5c2ljYWxzb2NrZXRzZXJ2ZXIuY2MKK0BAIC01OTYsNyArNTk2LDcgQEAgYm9vbCBTb2NrZXRE
aXNwYXRjaGVyOjpJbml0aWFsaXplKCkgeworICNlbGlmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQor
ICAgZmNudGwoc18sIEZfU0VURkwsIGZjbnRsKHNfLCBGX0dFVEZMLCAwKSB8IE9fTk9OQkxPQ0sp
OworICNlbmRpZgorLSNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCisrI2lmIGRlZmluZWQoV0VCUlRD
X0lPUykgfHwgKGRlZmluZWQoV0VCUlRDX01BQykgJiYgZGVmaW5lZChXRUJSVENfV0VCS0lUX0JV
SUxEKSkKKyAgIC8vIGlPUyBtYXkga2lsbCBzb2NrZXRzIHdoZW4gdGhlIGFwcCBpcyBtb3ZlZCB0
byB0aGUgYmFja2dyb3VuZAorICAgLy8gKHNwZWNpZmljYWxseSwgaWYgdGhlIGFwcCBkb2Vzbid0
IHVzZSB0aGUgInZvaXAiIFVJQmFja2dyb3VuZE1vZGUpLiBXaGVuCisgICAvLyB3ZSBhdHRlbXB0
IHRvIHdyaXRlIHRvIHN1Y2ggYSBzb2NrZXQsIFNJR1BJUEUgd2lsbCBiZSByYWlzZWQsIHdoaWNo
IGJ5CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oCitpbmRleCBhZWU4
ZDE0NTUxZC4uMzhjNmYxODM2YmQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmgKKysrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2l6
ZV9tYWNyb3MuaAorQEAgLTgsNyArOCw3IEBACisgICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICAqLworIAorLS8vIE1vZGlm
aWVkIGZyb20gdGhlIENocm9taXVtIG9yaWdpbmFsOgorKy8vIE1vZGlmaWVkIGZyb20gdGhlIENo
eHNyb21pdW0gb3JpZ2luYWw6CisgLy8gc3JjL2Jhc2Uvc3RyaW5ncy9zdHJpbmdpemVfbWFjcm9z
LmgKKyAKKyAvLyBUaGlzIGZpbGUgZGVmaW5lcyBwcmVwcm9jZXNzb3IgbWFjcm9zIGZvciBzdHJp
bmdpemluZyBwcmVwcm9jZXNzb3IKK0BAIC0zMyw2ICszMyw2IEBACisgLy8gVGhlbjoKKyAvLyAg
IFNUUklOR0laRShBKSBwcm9kdWNlcyAiRk9PIgorIC8vICAgU1RSSU5HSVpFKEIoeSkpIHByb2R1
Y2VzICJteW9iai0+RnVuY3Rpb25DYWxsKHkpIgorLSNkZWZpbmUgU1RSSU5HSVpFKHgpIFNUUklO
R0laRV9OT19FWFBBTlNJT04oeCkKKysjZGVmaW5lIFJUQ19TVFJJTkdJWkUoeCkgU1RSSU5HSVpF
X05PX0VYUEFOU0lPTih4KQorIAorICNlbmRpZiAgLy8gUlRDX0JBU0VfU1RSSU5HSVpFX01BQ1JP
U19IXworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNjCitp
bmRleCA3OTY5NDExMmM4MS4uYmZjZTBmNTQ1NDEgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVy
LmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNjCitAQCAtMTAyNiw5ICsxMDI2LDkgQEAgdm9pZCBW
aXJ0dWFsU29ja2V0U2VydmVyOjpVcGRhdGVEZWxheURpc3RyaWJ1dGlvbigpIHsKKyAgIH0KKyB9
CisgCistc3RhdGljIGRvdWJsZSBQSSA9IDQgKiBhdGFuKDEuMCk7CisgCisgc3RhdGljIGRvdWJs
ZSBOb3JtYWwoZG91YmxlIHgsIGRvdWJsZSBtZWFuLCBkb3VibGUgc3RkZGV2KSB7CisrICBzdGF0
aWMgZG91YmxlIFBJID0gNCAqIGF0YW4oMS4wKTsKKyAgIGRvdWJsZSBhID0gKHggLSBtZWFuKSAq
ICh4IC0gbWVhbikgLyAoMiAqIHN0ZGRldiAqIHN0ZGRldik7CisgICByZXR1cm4gZXhwKC1hKSAv
IChzdGRkZXYgKiBzcXJ0KDIgKiBQSSkpOworIH0KK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L0VuY29kZXJVdGlsaXRpZXMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
RW5jb2RlclV0aWxpdGllcy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAw
MDAuLjViOWJkZmRhMTE0CistLS0gL2Rldi9udWxsCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L0VuY29kZXJVdGlsaXRpZXMuaAorQEAg
LTAsMCArMSw1MCBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAq
IGFyZSBtZXQ6CisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKysgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKysgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisrICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisrICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisrICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKysgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKysgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICovCisrCisrI3By
YWdtYSBvbmNlCisrCisrI2luY2x1ZGUgIlZpZGVvUHJvY2Vzc2luZ1NvZnRMaW5rLmgiCisrCisr
I2lmIEVOQUJMRV9WQ1BfRU5DT0RFUgorKworKyNkZWZpbmUgQ29tcHJlc3Npb25TZXNzaW9uUmVm
IFZDUENvbXByZXNzaW9uU2Vzc2lvblJlZgorKyNkZWZpbmUgQ29tcHJlc3Npb25TZXNzaW9uU2V0
UHJvcGVydHkgd2VicnRjOjpWQ1BDb21wcmVzc2lvblNlc3Npb25TZXRQcm9wZXJ0eQorKyNkZWZp
bmUgQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sIHdlYnJ0Yzo6VkNQQ29tcHJl
c3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sCisrI2RlZmluZSBDb21wcmVzc2lvblNlc3Np
b25FbmNvZGVGcmFtZSB3ZWJydGM6OlZDUENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lCisr
I2RlZmluZSBDb21wcmVzc2lvblNlc3Npb25DcmVhdGUgd2VicnRjOjpWQ1BDb21wcmVzc2lvblNl
c3Npb25DcmVhdGUKKysjZGVmaW5lIGtDb2RlY1R5cGVIMjY0IGtWQ1BDb2RlY1R5cGU0Q0NfSDI2
NAorKyNkZWZpbmUgQ29tcHJlc3Npb25TZXNzaW9uSW52YWxpZGF0ZSB3ZWJydGM6OlZDUENvbXBy
ZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUKKysKKysjZWxzZQorKworKyNkZWZpbmUgQ29tcHJlc3Np
b25TZXNzaW9uUmVmIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmCisrI2RlZmluZSBDb21wcmVzc2lv
blNlc3Npb25TZXRQcm9wZXJ0eSBWVFNlc3Npb25TZXRQcm9wZXJ0eQorKyNkZWZpbmUgQ29tcHJl
c3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sIFZUQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4
ZWxCdWZmZXJQb29sCisrI2RlZmluZSBDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBWVENv
bXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lCisrI2RlZmluZSBDb21wcmVzc2lvblNlc3Npb25D
cmVhdGUgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUKKysjZGVmaW5lIGtDb2RlY1R5cGVIMjY0
IGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQKKysjZGVmaW5lIENvbXByZXNzaW9uU2Vzc2lvbkludmFs
aWRhdGUgVlRDb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRlCisrCisrI2VuZGlmCitkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9WaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1ZpZGVvUHJvY2Vzc2luZ1NvZnRMaW5rLmNwcAor
bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4xMDFlODdjNjY3NworLS0t
IC9kZXYvbnVsbAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9WaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5jcHAKK0BAIC0wLDAgKzEsNzgg
QEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0Ogor
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisrICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisrICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKysgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisrICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisrICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqLworKworKyNpbmNsdWRlICJWaWRl
b1Byb2Nlc3NpbmdTb2Z0TGluay5oIgorKworKyNpZiBFTkFCTEVfVkNQX0VOQ09ERVIKKysKKysj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorKyNpbXBvcnQgPGRsZmNuLmg+CisrI2ltcG9y
dCA8b2JqYy9ydW50aW1lLmg+CisrCisrLy8gTWFjcm9zIGNvcGllZCBmcm9tIDx3dGYvY29jb2Ev
U29mdExpbmtpbmcuaD4KKysjZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1Jf
U09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKysgICAgbmFtZXNwYWNlIGZ1
bmN0aW9uTmFtZXNwYWNlIHsgXAorKyAgICB2b2lkKiBmcmFtZXdvcmsjI0xpYnJhcnkoYm9vbCBp
c09wdGlvbmFsKSBcCisrICAgIHsgXAorKyAgICAgICAgc3RhdGljIHZvaWQqIGZyYW1ld29ya0xp
YnJhcnk7IFwKKysgICAgICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsgXAorKyAgICAg
ICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsgXAorKyAgICAgICAgICAgIGZyYW1ld29ya0xpYnJh
cnkgPSBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy8iICNmcmFtZXdv
cmsgIi5mcmFtZXdvcmsvIiAjZnJhbWV3b3JrLCBSVExEX05PVyk7IFwKKysgICAgICAgICAgICBp
ZiAoIWlzT3B0aW9uYWwgJiYgIWZyYW1ld29ya0xpYnJhcnkpIFwKKysgICAgICAgICAgICAgICAg
UlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbm5vdCBvcGVuIGZyYW1ld29yazogIiA8PCBkbGVycm9y
KCk7IFwKKysgICAgICAgIH0pOyBcCisrICAgICAgICByZXR1cm4gZnJhbWV3b3JrTGlicmFyeTsg
XAorKyAgICB9IFwKKysgICAgfQorKworKyNkZWZpbmUgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1bHRU
eXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzKSBcCisrICAgIGV4dGVy
biAiQyIgeyBcCisrICAgIHJlc3VsdFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0
aW9uczsgXAorKyAgICB9IFwKKysgICAgbmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAor
KyAgICBzdGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJh
bWV0ZXJEZWNsYXJhdGlvbnM7IFwKKysgICAgcmVzdWx0VHlwZSAoKnNvZnRMaW5rIyNmcmFtZXdv
cmsjI2Z1bmN0aW9uTmFtZSkgcGFyYW1ldGVyRGVjbGFyYXRpb25zID0gaW5pdCMjZnJhbWV3b3Jr
IyNmdW5jdGlvbk5hbWU7IFwKKysgICAgc3RhdGljIHJlc3VsdFR5cGUgaW5pdCMjZnJhbWV3b3Jr
IyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zIFwKKysgICAgeyBcCisrICAgICAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7IFwKKysgICAgICAgIGRpc3BhdGNoX29uY2Uo
Jm9uY2UsIF57IFwKKysgICAgICAgICAgICBzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5h
bWUgPSAocmVzdWx0VHlwZSAoKikgcGFyYW1ldGVyRGVjbGFyYXRpb25zKSBkbHN5bShmcmFtZXdv
cmsjI0xpYnJhcnkoKSwgI2Z1bmN0aW9uTmFtZSk7IFwKKysgICAgICAgICAgICBpZiAoIXNvZnRM
aW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkgXAorKyAgICAgICAgICAgICAgICBSVENfTE9H
KExTX0VSUk9SKSA8PCAiQ2Fubm90IGZpbmQgZnVuY3Rpb24gIyNmdW5jdGlvbk5hbWU6ICIgPDwg
ZGxlcnJvcigpOyBcCisrICAgICAgICB9KTsgXAorKyAgICAgICAgcmV0dXJuIHNvZnRMaW5rIyNm
cmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJOYW1lczsgXAorKyAgICB9IFwKKyt9Cisr
CisrU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0Uod2VicnRjLCBWaWRlb1By
b2Nlc3NpbmcpCisrCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uod2VicnRjLCBWaWRl
b1Byb2Nlc3NpbmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5LCBPU1N0YXR1cywg
KFZDUENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIENGVHlw
ZVJlZiB2YWx1ZSksIChzZXNzaW9uLCBrZXksIHZhbHVlKSkKKytTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRSh3ZWJydGMsIFZpZGVvUHJvY2Vzc2luZywgVkNQQ29tcHJlc3Npb25TZXNzaW9u
R2V0UGl4ZWxCdWZmZXJQb29sLCBDVlBpeGVsQnVmZmVyUG9vbFJlZiwgKFZDUENvbXByZXNzaW9u
U2Vzc2lvblJlZiBzZXNzaW9uKSwgKHNlc3Npb24pKQorK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKHdlYnJ0YywgVmlkZW9Qcm9jZXNzaW5nLCBWQ1BDb21wcmVzc2lvblNlc3Npb25FbmNv
ZGVGcmFtZSwgT1NTdGF0dXMsIChWQ1BDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJ
bWFnZUJ1ZmZlclJlZiBidWZmZXIsIENNVGltZSB0aW1lc3RhbXAsIENNVGltZSB0aW1lLCBDRkRp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgdm9pZCogZGF0YSwgVlRFbmNvZGVJbmZvRmxhZ3MqIGZs
YWdzKSwgKHNlc3Npb24sIGJ1ZmZlciwgdGltZXN0YW1wLCB0aW1lLCBkaWN0aW9uYXJ5LCBkYXRh
LCBmbGFncykpCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uod2VicnRjLCBWaWRlb1By
b2Nlc3NpbmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IxLCBpbnQzMl90IHZhbHVlMSAsIGludDMyX3QgdmFsdWUyLCBDTVZp
ZGVvQ29kZWNUeXBlIHR5cGUsIENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5MSwgQ0ZEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnkyLCBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IzLCBWVENvbXByZXNz
aW9uT3V0cHV0Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGRhdGEsIFZDUENvbXByZXNzaW9uU2Vz
c2lvblJlZiogc2Vzc2lvbiksIChhbGxvY2F0b3IxLCB2YWx1ZTEsIHZhbHVlMiwgdHlwZSwgZGlj
dGlvbmFyeTEsIGRpY3Rpb25hcnkyLCBhbGxvY2F0b3IzLCBjYWxsYmFjaywgZGF0YSwgc2Vzc2lv
bikpCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uod2VicnRjLCBWaWRlb1Byb2Nlc3Np
bmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUsIHZvaWQsIChWQ1BDb21wcmVzc2lv
blNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKytTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRSh3ZWJydGMsIFZpZGVvUHJvY2Vzc2luZywgVlBNb2R1bGVJbml0aWFsaXplLCB2b2lk
LCAoKSwgKCkpCisrCisrI2VuZGlmIC8vIEVOQUJMRV9WQ1BfRU5DT0RFUgorZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvVmlk
ZW9Qcm9jZXNzaW5nU29mdExpbmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuaAorbmV3IGZpbGUg
bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jZjg2NmQ4YThkYgorLS0tIC9kZXYvbnVs
bAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9WaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5oCitAQCAtMCwwICsxLDE0MCBAQAorKy8qCisr
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysg
KgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisrICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKysgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KysgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisrICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisrICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisrICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKysgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKysgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICovCisrCisrI3ByYWdtYSBvbmNlCisrCisrI2lmZGVm
IF9fQVBQTEVfXworKyNpbmNsdWRlIDxBdmFpbGFiaWxpdHkuaD4KKysjaW5jbHVkZSA8QXZhaWxh
YmlsaXR5TWFjcm9zLmg+CisrI2luY2x1ZGUgPFRhcmdldENvbmRpdGlvbmFscy5oPgorKworKy8v
IE1hY3JvIHRha2VuIGZyb20gV1RGL3d0Zi9QbGF0Zm9ybS5oCisrI2lmIGRlZmluZWQgX19oYXNf
aW5jbHVkZSAmJiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRhdGlvbi9DRlByaXYuaD4pCisrCisr
I2lmIChkZWZpbmVkKFRBUkdFVF9JUEhPTkVfU0lNVUxBVE9SKSAgJiYgVEFSR0VUX0lQSE9ORV9T
SU1VTEFUT1IpCisrI2RlZmluZSBFTkFCTEVfVkNQX0VOQ09ERVIgMAorKyNlbGlmIChkZWZpbmVk
KFRBUkdFVF9PU19JUEhPTkUpICAmJiBUQVJHRVRfT1NfSVBIT05FKQorKyNkZWZpbmUgRU5BQkxF
X1ZDUF9FTkNPREVSIDEKKysjZWxpZiAoZGVmaW5lZChUQVJHRVRfT1NfTUFDKSAmJiBUQVJHRVRf
T1NfTUFDKQorKyNkZWZpbmUgRU5BQkxFX1ZDUF9FTkNPREVSIChfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQg
Pj0gMTAxMzA0KQorKyNlbmRpZgorKworKyNlbmRpZgorKworKyNpZiAhZGVmaW5lZChFTkFCTEVf
VkNQX0VOQ09ERVIpCisrI2RlZmluZSBFTkFCTEVfVkNQX0VOQ09ERVIgMAorKyNlbmRpZgorKwor
KyNpZiAhZGVmaW5lZChBTFdBWVNfSU5MSU5FKQorKyNkZWZpbmUgQUxXQVlTX0lOTElORSBpbmxp
bmUKKysjZW5kaWYKKysKKysjaWZkZWYgX19jcGx1c3BsdXMKKysjZGVmaW5lIFdURl9FWFRFUk5f
Q19CRUdJTiBleHRlcm4gIkMiIHsKKysjZGVmaW5lIFdURl9FWFRFUk5fQ19FTkQgfQorKyNlbHNl
CisrI2RlZmluZSBXVEZfRVhURVJOX0NfQkVHSU4KKysjZGVmaW5lIFdURl9FWFRFUk5fQ19FTkQK
KysjZW5kaWYKKysKKysvLyBNYWNyb3MgY29waWVkIGZyb20gPHd0Zi9jb2NvYS9Tb2Z0TGlua2lu
Zy5oPgorKyNkZWZpbmUgU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKGZ1bmN0aW9uTmFt
ZXNwYWNlLCBmcmFtZXdvcmspIFwKKysgICAgbmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsg
XAorKyAgICBleHRlcm4gdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wgaXNPcHRpb25hbCA9
IGZhbHNlKTsgXAorKyAgICBib29sIGlzIyNmcmFtZXdvcmsjI0ZyYW1ld29ya0F2YWlsYWJsZSgp
OyBcCisrICAgIGlubGluZSBib29sIGlzIyNmcmFtZXdvcmsjI0ZyYW1ld29ya0F2YWlsYWJsZSgp
IHsgXAorKyAgICAgICAgcmV0dXJuIGZyYW1ld29yayMjTGlicmFyeSh0cnVlKSAhPSBudWxscHRy
OyBcCisrICAgIH0gXAorKyAgICB9CisrCisrI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3Vs
dFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMpIFwKKysgICAgV1RG
X0VYVEVSTl9DX0JFR0lOIFwKKysgICAgcmVzdWx0VHlwZSBmdW5jdGlvbk5hbWUgcGFyYW1ldGVy
RGVjbGFyYXRpb25zOyBcCisrICAgIFdURl9FWFRFUk5fQ19FTkQgXAorKyAgICBuYW1lc3BhY2Ug
ZnVuY3Rpb25OYW1lc3BhY2UgeyBcCisrICAgIGV4dGVybiByZXN1bHRUeXBlICgqc29mdExpbmsj
I2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lKSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnM7IFwKKysgICAg
aW5saW5lIHJlc3VsdFR5cGUgc29mdExpbmtfIyNmcmFtZXdvcmsjI18jI2Z1bmN0aW9uTmFtZSBw
YXJhbWV0ZXJEZWNsYXJhdGlvbnMgXAorKyAgICB7IFwKKysgICAgICAgIHJldHVybiBzb2Z0TGlu
ayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyTmFtZXM7IFwKKysgICAgfSBcCisr
ICAgIH0gXAorKyAgICBBTFdBWVNfSU5MSU5FIHJlc3VsdFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFt
ZXRlckRlY2xhcmF0aW9ucyBcCisrICAgIHtcCisrICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1l
c3BhY2U6OnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJOYW1lczsg
XAorKyAgICB9CisrCisrI2RlZmluZSBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKGZyYW1l
d29yaykgXAorKyAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KCkgXAorKyAgICB7
IFwKKysgICAgICAgIHN0YXRpYyB2b2lkKiBmcmFtZXdvcmtMaWJyYXJ5ID0gZGxvcGVuKCIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy8iICNmcmFtZXdvcmsgIi5mcmFtZXdvcmsvIiAjZnJhbWV3
b3JrLCBSVExEX05PVyk7IFwKKysgICAgICAgIHJldHVybiBmcmFtZXdvcmtMaWJyYXJ5OyBcCisr
ICAgIH0KKysKKysjZGVmaW5lIFNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKGZyYW1ld29yaywg
bmFtZSwgdHlwZSkgXAorKyAgICBzdGF0aWMgdHlwZSBpbml0IyNuYW1lKCk7IFwKKysgICAgc3Rh
dGljIHR5cGUgKCpnZXQjI25hbWUpKCkgPSBpbml0IyNuYW1lOyBcCisrICAgIHN0YXRpYyB0eXBl
IHBvaW50ZXIjI25hbWU7IFwKKysgICAgXAorKyAgICBzdGF0aWMgdHlwZSBuYW1lIyNGdW5jdGlv
bigpIFwKKysgICAgeyBcCisrICAgICAgICByZXR1cm4gcG9pbnRlciMjbmFtZTsgXAorKyAgICB9
IFwKKysgICAgXAorKyAgICBzdGF0aWMgdHlwZSBpbml0IyNuYW1lKCkgXAorKyAgICB7IFwKKysg
ICAgICAgIHZvaWQqKiBwb2ludGVyID0gc3RhdGljX2Nhc3Q8dm9pZCoqPihkbHN5bShmcmFtZXdv
cmsjI0xpYnJhcnkoKSwgI25hbWUpKTsgXAorKyAgICAgICAgaWYgKHBvaW50ZXIpIFwKKysgICAg
ICAgICAgICBwb2ludGVyIyNuYW1lID0gKF9fYnJpZGdlIHR5cGUpKCpwb2ludGVyKTsgXAorKyAg
ICAgICAgZ2V0IyNuYW1lID0gbmFtZSMjRnVuY3Rpb247IFwKKysgICAgICAgIHJldHVybiBwb2lu
dGVyIyNuYW1lOyBcCisrICAgIH0KKysKKysjaWYgRU5BQkxFX1ZDUF9FTkNPREVSCisrCisrI2lu
Y2x1ZGUgPFZpZGVvUHJvY2Vzc2luZy9WaWRlb1Byb2Nlc3NpbmcuaD4KKysKKytTT0ZUX0xJTktf
RlJBTUVXT1JLX0ZPUl9IRUFERVIod2VicnRjLCBWaWRlb1Byb2Nlc3NpbmcpCisrCisrU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIod2VicnRjLCBWaWRlb1Byb2Nlc3NpbmcsIFZDUENvbXBy
ZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5LCBPU1N0YXR1cywgKFZDUENvbXByZXNzaW9uU2Vzc2lv
blJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIENGVHlwZVJlZiB2YWx1ZSksIChzZXNzaW9u
LCBrZXksIHZhbHVlKSkKKysjZGVmaW5lIFZDUENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5
IHNvZnRMaW5rX1ZpZGVvUHJvY2Vzc2luZ19WQ1BDb21wcmVzc2lvblNlc3Npb25TZXRQcm9wZXJ0
eQorKworK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKHdlYnJ0YywgVmlkZW9Qcm9jZXNz
aW5nLCBWQ1BDb21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wsIENWUGl4ZWxCdWZm
ZXJQb29sUmVmLCAoVkNQQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikp
CisrI2RlZmluZSBWQ1BDb21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wgc29mdExp
bmtfVmlkZW9Qcm9jZXNzaW5nX1ZDUENvbXByZXNzaW9uU2Vzc2lvbkdldFBpeGVsQnVmZmVyUG9v
bAorKworK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKHdlYnJ0YywgVmlkZW9Qcm9jZXNz
aW5nLCBWQ1BDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSwgT1NTdGF0dXMsIChWQ1BDb21w
cmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1ZmZlclJlZiBidWZmZXIsIENNVGlt
ZSB0aW1lc3RhbXAsIENNVGltZSB0aW1lLCBDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgdm9p
ZCAqIGRhdGEsIFZURW5jb2RlSW5mb0ZsYWdzICogZmxhZ3MpLCAoc2Vzc2lvbiwgYnVmZmVyLCB0
aW1lc3RhbXAsIHRpbWUsIGRpY3Rpb25hcnksIGRhdGEsIGZsYWdzKSkKKysjZGVmaW5lIFZDUENv
bXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lIHNvZnRMaW5rX1ZpZGVvUHJvY2Vzc2luZ19WQ1BD
b21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZQorKworK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKHdlYnJ0YywgVmlkZW9Qcm9jZXNzaW5nLCBWQ1BDb21wcmVzc2lvblNlc3Npb25DcmVh
dGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yMSwgaW50MzJfdCB2YWx1ZTEg
LCBpbnQzMl90IHZhbHVlMiwgQ01WaWRlb0NvZGVjVHlwZSB0eXBlLCBDRkRpY3Rpb25hcnlSZWYg
ZGljdGlvbmFyeTEsIENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5MiwgQ0ZBbGxvY2F0b3JSZWYg
YWxsb2NhdG9yMywgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICog
ZGF0YSwgVkNQQ29tcHJlc3Npb25TZXNzaW9uUmVmICpzZXNzaW9uKSwgKGFsbG9jYXRvcjEsIHZh
bHVlMSwgdmFsdWUyLCB0eXBlLCBkaWN0aW9uYXJ5MSwgZGljdGlvbmFyeTIsIGFsbG9jYXRvcjMs
IGNhbGxiYWNrLCBkYXRhLCBzZXNzaW9uKSkKKysjZGVmaW5lIFZDUENvbXByZXNzaW9uU2Vzc2lv
bkNyZWF0ZSBzb2Z0TGlua19WaWRlb1Byb2Nlc3NpbmdfVkNQQ29tcHJlc3Npb25TZXNzaW9uQ3Jl
YXRlCisrCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIod2VicnRjLCBWaWRlb1Byb2Nl
c3NpbmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUsIHZvaWQsIChWQ1BDb21wcmVz
c2lvblNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKysjZGVmaW5lIFZDUENvbXByZXNz
aW9uU2Vzc2lvbkludmFsaWRhdGUgc29mdExpbmtfVmlkZW9Qcm9jZXNzaW5nX1ZDUENvbXByZXNz
aW9uU2Vzc2lvbkludmFsaWRhdGUKKysKKytTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUih3
ZWJydGMsIFZpZGVvUHJvY2Vzc2luZywgVlBNb2R1bGVJbml0aWFsaXplLCB2b2lkLCAoKSwgKCkp
CisrI2RlZmluZSBWUE1vZHVsZUluaXRpYWxpemUgc29mdExpbmtfVmlkZW9Qcm9jZXNzaW5nX1ZQ
TW9kdWxlSW5pdGlhbGl6ZQorKworKyNlbmRpZiAvLyBFTkFCTEVfVkNQX0VOQ09ERVIKKysKKysj
ZW5kaWYgLy8gX19BUFBMRV9fCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0
aWVzLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uZWYxNDU2ZWRk
ZDMKKy0tLSAvZGV2L251bGwKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKK0BAIC0wLDAgKzEsNTQgQEAK
KysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisrICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisrICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKysgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisrICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisrICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqLworKworKyNwcmFnbWEgb25jZQorKwor
KyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCisrI2luY2x1ZGUgInJ0
Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisrI2luY2x1ZGUgIndlYnJ0Yy9tZWRpYS9lbmdpbmUv
d2VicnRjdmlkZW9kZWNvZGVyZmFjdG9yeS5oIgorKyNpbmNsdWRlICJ3ZWJydGMvbWVkaWEvZW5n
aW5lL3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3RvcnkuaCIKKysKKyt0eXBlZGVmIHN0cnVjdCBfX0NW
QnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOworKworK25hbWVzcGFjZSB3ZWJydGMgeworKworK2Ns
YXNzIFZpZGVvRGVjb2RlckZhY3Rvcnk7CisrY2xhc3MgVmlkZW9FbmNvZGVyRmFjdG9yeTsKKytj
bGFzcyBWaWRlb0ZyYW1lOworKworK2VudW0gY2xhc3MgV2ViS2l0Q29kZWNTdXBwb3J0IHsgSDI2
NCwgSDI2NEFuZFZQOCB9OworKworK3N0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rl
ckZhY3Rvcnk+IGNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5KFdlYktpdENvZGVjU3VwcG9ydCk7
Cisrc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gY3JlYXRlV2Vi
S2l0RGVjb2RlckZhY3RvcnkoV2ViS2l0Q29kZWNTdXBwb3J0KTsKKysKKyt2b2lkIHNldEFwcGxp
Y2F0aW9uU3RhdHVzKGJvb2wgaXNBY3RpdmUpOworKworK3ZvaWQgc2V0SDI2NEhhcmR3YXJlRW5j
b2RlckFsbG93ZWQoYm9vbCk7CisrYm9vbCBpc0gyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKCk7
CisrCisrQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0Zy
YW1lJiwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90
KT4mKTsKKytydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBwaXhl
bEJ1ZmZlclRvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZik7CisrCisrfQorZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
VXRpbGl0aWVzLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl
eCAwMDAwMDAwMDAwMC4uNjVlZWZhMzZmMmQKKy0tLSAvZGV2L251bGwKKysrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0
aWVzLm1tCitAQCAtMCwwICsxLDE4NSBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKysgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKysgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisrICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisrICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisrICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKysgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKysgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisr
ICovCisrCisrI2luY2x1ZGUgIldlYktpdFV0aWxpdGllcy5oIgorKworKy8vI2luY2x1ZGUgIkNv
bW1vbi9SVENVSUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIuaCIKKysjaW1wb3J0ICJXZWJSVEMv
UlRDVmlkZW9Db2RlY0gyNjQuaCIKKysKKysjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1l
LmgiCisrI2luY2x1ZGUgIm5hdGl2ZS9zcmMvb2JqY19mcmFtZV9idWZmZXIuaCIKKysjaW5jbHVk
ZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgorKyNp
bmNsdWRlICJ3ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgiCisrI2luY2x1ZGUgIkZyYW1ld29yay9I
ZWFkZXJzL1dlYlJUQy9SVENWaWRlb0NvZGVjRmFjdG9yeS5oIgorKyNpbmNsdWRlICJGcmFtZXdv
cmsvSGVhZGVycy9XZWJSVEMvUlRDVmlkZW9GcmFtZS5oIgorKyNpbmNsdWRlICJGcmFtZXdvcmsv
SGVhZGVycy9XZWJSVEMvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIgorKyNpbmNsdWRlICJGcmFtZXdv
cmsvTmF0aXZlL2FwaS92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKKysjaW5jbHVkZSAiRnJhbWV3
b3JrL05hdGl2ZS9hcGkvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisrLyoKKysjaWYgIWRlZmlu
ZWQoV0VCUlRDX0lPUykKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRD
VUlBcHBsaWNhdGlvblN0YXR1c09ic2VydmVyIikpKQorK0BpbnRlcmZhY2UgUlRDVUlBcHBsaWNh
dGlvblN0YXR1c09ic2VydmVyIDogTlNPYmplY3QKKysKKysrIChpbnN0YW5jZXR5cGUpc2hhcmVk
SW5zdGFuY2U7CisrKyAodm9pZClwcmVwYXJlRm9yVXNlOworKworKy0gKEJPT0wpaXNBcHBsaWNh
dGlvbkFjdGl2ZTsKKysKKytAZW5kCisrI2VuZGlmCisrCisrQGltcGxlbWVudGF0aW9uIFJUQ1VJ
QXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciB7CisrICAgIEJPT0wgX2lzQWN0aXZlOworK30KKysK
KysrIChpbnN0YW5jZXR5cGUpc2hhcmVkSW5zdGFuY2UgeworKyAgICBzdGF0aWMgaWQgc2hhcmVk
SW5zdGFuY2U7CisrICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworKyAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisrICAgICAgICBzaGFyZWRJbnN0YW5jZSA9IFtb
c2VsZiBhbGxvY10gaW5pdF07CisrICAgIH0pOworKworKyAgICByZXR1cm4gc2hhcmVkSW5zdGFu
Y2U7CisrfQorKworKysgKHZvaWQpcHJlcGFyZUZvclVzZSB7CisrICAgIF9fdW51c2VkIFJUQ1VJ
QXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciAqb2JzZXJ2ZXIgPSBbc2VsZiBzaGFyZWRJbnN0YW5j
ZV07CisrfQorKworKy0gKGlkKWluaXQgeworKyAgICBfaXNBY3RpdmUgPSBZRVM7CisrICAgIHJl
dHVybiBzZWxmOworK30KKysKKystICh2b2lkKXNldEFjdGl2ZSB7CisrICAgIF9pc0FjdGl2ZSA9
IFlFUzsKKyt9CisrCisrLSAodm9pZClzZXRJbmFjdGl2ZSB7CisrICAgIF9pc0FjdGl2ZSA9IE5P
OworK30KKysKKystIChCT09MKWlzQXBwbGljYXRpb25BY3RpdmUgeworKyAgICByZXR1cm4gX2lz
QWN0aXZlOworK30KKysKKytAZW5kCisrKi8KKytuYW1lc3BhY2Ugd2VicnRjIHsKKysKKyt2b2lk
IHNldEFwcGxpY2F0aW9uU3RhdHVzKGJvb2wgaXNBY3RpdmUpCisreworKy8qCisrICAgIGlmIChp
c0FjdGl2ZSkKKysgICAgICAgIFtbUlRDVUlBcHBsaWNhdGlvblN0YXR1c09ic2VydmVyIHNoYXJl
ZEluc3RhbmNlXSBzZXRBY3RpdmVdOworKyAgICBlbHNlCisrICAgICAgICBbW1JUQ1VJQXBwbGlj
YXRpb25TdGF0dXNPYnNlcnZlciBzaGFyZWRJbnN0YW5jZV0gc2V0SW5hY3RpdmVdOworKyAqLwor
K30KKysKKytzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBjcmVh
dGVXZWJLaXRFbmNvZGVyRmFjdG9yeShXZWJLaXRDb2RlY1N1cHBvcnQgY29kZWNTdXBwb3J0KQor
K3sKKysjaWYgRU5BQkxFX1ZDUF9FTkNPREVSCisrICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlRmxhZzsKKysgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKysgICAgICAgIHdl
YnJ0Yzo6VlBNb2R1bGVJbml0aWFsaXplKCk7CisrICAgIH0pOworKyNlbmRpZgorKyAgICByZXR1
cm4gT2JqQ1RvTmF0aXZlVmlkZW9FbmNvZGVyRmFjdG9yeShjb2RlY1N1cHBvcnQgPT0gV2ViS2l0
Q29kZWNTdXBwb3J0OjpIMjY0QW5kVlA4ID8gW1tSVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9y
eSBhbGxvY10gaW5pdF0gOiBbW1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0IGFsbG9jXSBpbml0
XSk7CisrfQorKworK3N0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+
IGNyZWF0ZVdlYktpdERlY29kZXJGYWN0b3J5KFdlYktpdENvZGVjU3VwcG9ydCBjb2RlY1N1cHBv
cnQpCisreworKyAgICByZXR1cm4gT2JqQ1RvTmF0aXZlVmlkZW9EZWNvZGVyRmFjdG9yeShjb2Rl
Y1N1cHBvcnQgPT0gV2ViS2l0Q29kZWNTdXBwb3J0OjpIMjY0QW5kVlA4ID8gW1tSVENEZWZhdWx0
VmlkZW9EZWNvZGVyRmFjdG9yeSBhbGxvY10gaW5pdF0gOiBbW1JUQ1ZpZGVvRGVjb2RlckZhY3Rv
cnlIMjY0IGFsbG9jXSBpbml0XSk7CisrfQorKworK3N0YXRpYyBib29sIGgyNjRIYXJkd2FyZUVu
Y29kZXJBbGxvd2VkID0gdHJ1ZTsKKyt2b2lkIHNldEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2Vk
KGJvb2wgYWxsb3dlZCkKKyt7CisrICAgIGgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkID0gYWxs
b3dlZDsKKyt9CisrCisrYm9vbCBpc0gyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKCkKKyt7Cisr
ICAgIHJldHVybiBoMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZDsKKyt9CisrCisrcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENW
UGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpCisreworKyAgICBSVENDVlBpeGVsQnVmZmVyICpm
cmFtZUJ1ZmZlciA9IFtbUlRDQ1ZQaXhlbEJ1ZmZlciBhbGxvY10gaW5pdFdpdGhQaXhlbEJ1ZmZl
cjpwaXhlbEJ1ZmZlcl07CisrICAgIHJldHVybiBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE9i
akNGcmFtZUJ1ZmZlcj4oZnJhbWVCdWZmZXIpOworK30KKysKKytzdGF0aWMgYm9vbCBDb3B5Vmlk
ZW9GcmFtZVRvUGl4ZWxCdWZmZXIoY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6STQy
MEJ1ZmZlckludGVyZmFjZT4mIGZyYW1lLCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsX2J1ZmZlcikg
eworKyAgICBSVENfRENIRUNLKHBpeGVsX2J1ZmZlcik7CisrICAgIFJUQ19EQ0hFQ0soQ1ZQaXhl
bEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbF9idWZmZXIpID09IGtDVlBpeGVsRm9ybWF0
VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UgfHwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVs
Rm9ybWF0VHlwZShwaXhlbF9idWZmZXIpID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4
QmlQbGFuYXJWaWRlb1JhbmdlKTsKKysgICAgUlRDX0RDSEVDS19FUShDVlBpeGVsQnVmZmVyR2V0
SGVpZ2h0T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGZyYW1l
LT5oZWlnaHQoKSkpOworKyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9m
UGxhbmUocGl4ZWxfYnVmZmVyLCAwKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihmcmFtZS0+d2lkdGgo
KSkpOworKworKyAgICBpZiAoQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhwaXhlbF9idWZm
ZXIsIDApICE9IGtDVlJldHVyblN1Y2Nlc3MpCisrICAgICAgICByZXR1cm4gZmFsc2U7CisrCisr
ICAgIHVpbnQ4X3QqIGRzdF95ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oQ1ZQaXhlbEJ1
ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhlbF9idWZmZXIsIDApKTsKKysgICAgaW50IGRz
dF9zdHJpZGVfeSA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUocGl4ZWxfYnVm
ZmVyLCAwKTsKKysKKysgICAgdWludDhfdCogZHN0X3V2ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhlbF9idWZmZXIsIDEp
KTsKKysgICAgaW50IGRzdF9zdHJpZGVfdXYgPSBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3dP
ZlBsYW5lKHBpeGVsX2J1ZmZlciwgMSk7CisrCisrICAgIGludCByZXN1bHQgPSBsaWJ5dXY6Okk0
MjBUb05WMTIoCisrICAgICAgICBmcmFtZS0+RGF0YVkoKSwgZnJhbWUtPlN0cmlkZVkoKSwKKysg
ICAgICAgIGZyYW1lLT5EYXRhVSgpLCBmcmFtZS0+U3RyaWRlVSgpLAorKyAgICAgICAgZnJhbWUt
PkRhdGFWKCksIGZyYW1lLT5TdHJpZGVWKCksCisrICAgICAgICBkc3RfeSwgZHN0X3N0cmlkZV95
LCBkc3RfdXYsIGRzdF9zdHJpZGVfdXYsCisrICAgICAgICBmcmFtZS0+d2lkdGgoKSwgZnJhbWUt
PmhlaWdodCgpKTsKKysKKysgICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzKHBpeGVs
X2J1ZmZlciwgMCk7CisrCisrICAgIGlmIChyZXN1bHQpCisrICAgICAgICByZXR1cm4gZmFsc2U7
CisrCisrICAgIHJldHVybiB0cnVlOworK30KKysKKysKKytDVlBpeGVsQnVmZmVyUmVmIHBpeGVs
QnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QpPiYgbWFrZVBpeGVsQnVmZmVyKQor
K3sKKysgICAgaWYgKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT50eXBlKCkgIT0gVmlkZW9G
cmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkgeworKyAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRy
PGNvbnN0IEk0MjBCdWZmZXJJbnRlcmZhY2U+IGJ1ZmZlciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1
ZmZlcigpLT5HZXRJNDIwKCk7CisrCisrICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gbWFrZVBp
eGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSk7CisrICAgICAgICBp
ZiAocGl4ZWxCdWZmZXIpCisrICAgICAgICAgICAgQ29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVy
KGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKysg
ICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKKysgICAgfQorKworKyAgICBhdXRvICpmcmFtZUJ1
ZmZlciA9IHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1ZmZlcio+KGZyYW1lLnZpZGVvX2ZyYW1lX2J1
ZmZlcigpLmdldCgpKS0+d3JhcHBlZF9mcmFtZV9idWZmZXIoKTsKKysgICAgaWYgKCFbZnJhbWVC
dWZmZXIgaXNLaW5kT2ZDbGFzczpbUlRDQ1ZQaXhlbEJ1ZmZlciBjbGFzc11dKQorKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisrCisrICAgIGF1dG8gKnJ0Y1BpeGVsQnVmZmVyID0gKFJUQ0NWUGl4
ZWxCdWZmZXIgKilmcmFtZUJ1ZmZlcjsKKysgICAgcmV0dXJuIHJ0Y1BpeGVsQnVmZmVyLnBpeGVs
QnVmZmVyOworK30KKysKKyt9CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJ
bWFnZStQcml2YXRlLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1t
CitpbmRleCA2ZjJkMWY0NmQ5Yy4uZjk5MDFiZDMyN2UgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rp
b24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0KKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNv
ZGVkSW1hZ2UrUHJpdmF0ZS5tbQorQEAgLTU2LDYgKzU2LDcgQEAgLSAod2VicnRjOjpFbmNvZGVk
SW1hZ2UpbmF0aXZlRW5jb2RlZEltYWdlIHsKKyAgIGVuY29kZWRJbWFnZS5yb3RhdGlvbl8gPSB3
ZWJydGM6OlZpZGVvUm90YXRpb24oc2VsZi5yb3RhdGlvbik7CisgICBlbmNvZGVkSW1hZ2UuX2Nv
bXBsZXRlRnJhbWUgPSBzZWxmLmNvbXBsZXRlRnJhbWU7CisgICBlbmNvZGVkSW1hZ2UucXBfID0g
c2VsZi5xcCA/IHNlbGYucXAuaW50VmFsdWUgOiAtMTsKKysgIGVuY29kZWRJbWFnZS5TZXRTcGF0
aWFsSW5kZXgoc2VsZi5zcGF0aWFsSW5kZXgpOworICAgZW5jb2RlZEltYWdlLmNvbnRlbnRfdHlw
ZV8gPSAoc2VsZi5jb250ZW50VHlwZSA9PSBSVENWaWRlb0NvbnRlbnRUeXBlU2NyZWVuc2hhcmUp
ID8KKyAgICAgICB3ZWJydGM6OlZpZGVvQ29udGVudFR5cGU6OlNDUkVFTlNIQVJFIDoKKyAgICAg
ICB3ZWJydGM6OlZpZGVvQ29udGVudFR5cGU6OlVOU1BFQ0lGSUVEOworZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVy
Y29ubmVjdGlvbi9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENS
dHBFbmNvZGluZ1BhcmFtZXRlcnMuaAoraW5kZXggYmE1MGJkZTY0OWYuLmRhYmZmNzI1YWJiIDEw
MDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5oCisrKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
cGVlcmNvbm5lY3Rpb24vUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmgKK0BAIC0xNSw2ICsxNSw3
IEBACisgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0
dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJz
IikpKQorIEBpbnRlcmZhY2UgUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIDogTlNPYmplY3QKKyAK
KyAvKiogQ29udHJvbHMgd2hldGhlciB0aGUgZW5jb2RpbmcgaXMgY3VycmVudGx5IHRyYW5zbWl0
dGVkLiAqLworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5n
cytQcml2YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0
ZS5oCitpbmRleCA1YjA2MjQ1NWJjMC4uNzJhZjczMmIyM2IgMTAwNjQ0CistLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5l
Y3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5oCisrKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rp
b24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5oCitAQCAtMjIsNCArMjIsMTEgQEAg
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyBAZW5kCisgCisrQGludGVyZmFjZSBSVENWaWRl
b0JpdHJhdGVBbGxvY2F0aW9uIChQcml2YXRlKQorKworKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aE5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb246KGNvbnN0IHdlYnJ0Yzo6VmlkZW9CaXRyYXRl
QWxsb2NhdGlvbiAqX19udWxsYWJsZSl2aWRlb0JpdHJhdGVBbGxvY2F0aW9uOworKy0gKHdlYnJ0
Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiluYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOwor
KworK0BlbmQKKysKKyBOU19BU1NVTUVfTk9OTlVMTF9FTkQKK2RpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5l
Y3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5tbSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLm1tCitpbmRleCA2ZmI4MWRiYjhhZi4uODJi
NWJhN2JjMGYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGlu
Z3MrUHJpdmF0ZS5tbQorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdz
K1ByaXZhdGUubW0KK0BAIC0xMiw2ICsxMiwyMyBAQAorIAorICNpbXBvcnQgImhlbHBlcnMvTlNT
dHJpbmcrU3RkU3RyaW5nLmgiCisgCisrQGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVvRW5jb2RlclNl
dHRpbmdzIHsKKysgIHdlYnJ0Yzo6VmlkZW9Db2RlYyBfbmF0aXZlVmlkZW9Db2RlYzsKKyt9Cisr
CisrQHN5bnRoZXNpemUgbmFtZSA9IF9uYW1lOworK0BzeW50aGVzaXplIHdpZHRoID0gX3dpZHRo
OworK0BzeW50aGVzaXplIGhlaWdodCA9IF9oZWlnaHQ7CisrQHN5bnRoZXNpemUgc3RhcnRCaXRy
YXRlID0gX3N0YXJ0Qml0cmF0ZTsKKytAc3ludGhlc2l6ZSBtYXhCaXRyYXRlID0gX21heEJpdHJh
dGU7CisrQHN5bnRoZXNpemUgbWluQml0cmF0ZSA9IF9taW5CaXRyYXRlOworK0BzeW50aGVzaXpl
IHRhcmdldEJpdHJhdGUgPSBfdGFyZ2V0Qml0cmF0ZTsKKytAc3ludGhlc2l6ZSBtYXhGcmFtZXJh
dGUgPSBfbWF4RnJhbWVyYXRlOworK0BzeW50aGVzaXplIHFwTWF4ID0gX3FwTWF4OworK0BzeW50
aGVzaXplIG1vZGUgPSBfbW9kZTsKKysKKytAZW5kCisrCisgQGltcGxlbWVudGF0aW9uIFJUQ1Zp
ZGVvRW5jb2RlclNldHRpbmdzIChQcml2YXRlKQorIAorIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aE5hdGl2ZVZpZGVvQ29kZWM6KGNvbnN0IHdlYnJ0Yzo6VmlkZW9Db2RlYyAqKXZpZGVvQ29kZWMg
eworQEAgLTIwLDYgKzM3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlVmlkZW9D
b2RlYzooY29uc3Qgd2VicnRjOjpWaWRlb0NvZGVjICopdmlkZW9Db2RlYworICAgICAgIGNvbnN0
IGNoYXIgKmNvZGVjTmFtZSA9IENvZGVjVHlwZVRvUGF5bG9hZFN0cmluZyh2aWRlb0NvZGVjLT5j
b2RlY1R5cGUpOworICAgICAgIHNlbGYubmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0
cmluZzpjb2RlY05hbWVdOworIAorKyAgICAgIF9uYXRpdmVWaWRlb0NvZGVjID0gKnZpZGVvQ29k
ZWM7CisgICAgICAgc2VsZi53aWR0aCA9IHZpZGVvQ29kZWMtPndpZHRoOworICAgICAgIHNlbGYu
aGVpZ2h0ID0gdmlkZW9Db2RlYy0+aGVpZ2h0OworICAgICAgIHNlbGYuc3RhcnRCaXRyYXRlID0g
dmlkZW9Db2RlYy0+c3RhcnRCaXRyYXRlOworQEAgLTM2LDE4ICs1NCwyOCBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhOYXRpdmVWaWRlb0NvZGVjOihjb25zdCB3ZWJydGM6OlZpZGVvQ29kZWMg
Kil2aWRlb0NvZGVjCisgfQorIAorIC0gKHdlYnJ0Yzo6VmlkZW9Db2RlYyluYXRpdmVWaWRlb0Nv
ZGVjIHsKKy0gIHdlYnJ0Yzo6VmlkZW9Db2RlYyB2aWRlb0NvZGVjOworLSAgdmlkZW9Db2RlYy53
aWR0aCA9IHNlbGYud2lkdGg7CistICB2aWRlb0NvZGVjLmhlaWdodCA9IHNlbGYuaGVpZ2h0Owor
LSAgdmlkZW9Db2RlYy5zdGFydEJpdHJhdGUgPSBzZWxmLnN0YXJ0Qml0cmF0ZTsKKy0gIHZpZGVv
Q29kZWMubWF4Qml0cmF0ZSA9IHNlbGYubWF4Qml0cmF0ZTsKKy0gIHZpZGVvQ29kZWMubWluQml0
cmF0ZSA9IHNlbGYubWluQml0cmF0ZTsKKy0gIHZpZGVvQ29kZWMudGFyZ2V0Qml0cmF0ZSA9IHNl
bGYudGFyZ2V0Qml0cmF0ZTsKKy0gIHZpZGVvQ29kZWMubWF4Qml0cmF0ZSA9IHNlbGYubWF4Qml0
cmF0ZTsKKy0gIHZpZGVvQ29kZWMucXBNYXggPSBzZWxmLnFwTWF4OworLSAgdmlkZW9Db2RlYy5t
b2RlID0gKHdlYnJ0Yzo6VmlkZW9Db2RlY01vZGUpc2VsZi5tb2RlOworLQorLSAgcmV0dXJuIHZp
ZGVvQ29kZWM7CisrICByZXR1cm4gX25hdGl2ZVZpZGVvQ29kZWM7CisrfQorKworK0BlbmQKKysK
KytAaW1wbGVtZW50YXRpb24gUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiB7CisrICB3ZWJydGM6
OlZpZGVvQml0cmF0ZUFsbG9jYXRpb24gX25hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb247Cisr
fQorKworK0BlbmQKKysKKytAaW1wbGVtZW50YXRpb24gUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlv
biAoUHJpdmF0ZSkKKysKKystIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOYXRpdmVWaWRlb0JpdHJh
dGVBbGxvY2F0aW9uOihjb25zdCB3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRpb24gKil2aWRl
b0JpdHJhdGVBbGxvY2F0aW9uIHsKKysgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7CisrICAg
IF9uYXRpdmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uID0gKnZpZGVvQml0cmF0ZUFsbG9jYXRpb247
CisrICB9CisrICByZXR1cm4gc2VsZjsKKyt9CisrCisrLSAod2VicnRjOjpWaWRlb0JpdHJhdGVB
bGxvY2F0aW9uKW5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb24geworKyAgcmV0dXJuIF9uYXRp
dmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOworIH0KKyAKKyBAZW5kCitkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVv
X2NvZGVjL1JUQ1ZpZGVvQ29kZWNDb25zdGFudHMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9Db2Rl
Y0NvbnN0YW50cy5tbQoraW5kZXggYWNiZjEyNjE3MGMuLjE0NDdkM2IyN2UxIDEwMDY0NAorLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBp
L3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29kZWNDb25zdGFudHMubW0KKysrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9S
VENWaWRlb0NvZGVjQ29uc3RhbnRzLm1tCitAQCAtMTMsNSArMTMsNSBAQAorIAorICNpbmNsdWRl
ICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCisgCistTlNTdHJpbmcgKmNvbnN0IGtSVENW
aWRlb0NvZGVjVnA4TmFtZSA9IEAoY3JpY2tldDo6a1ZwOENvZGVjTmFtZSk7CistTlNTdHJpbmcg
KmNvbnN0IGtSVENWaWRlb0NvZGVjVnA5TmFtZSA9IEAoY3JpY2tldDo6a1ZwOUNvZGVjTmFtZSk7
CisrTlNTdHJpbmcgKmNvbnN0IGtSVENWaWRlb0NvZGVjVnA4TmFtZSA9IEAiVlA4IjsKKytOU1N0
cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNWcDlOYW1lID0gQCJWUDkiOworZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92
aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0VuY29k
ZXJWUDguaAoraW5kZXggOGQ4N2E4OTg5MzEuLjA4ZDE4NTA0MjIyIDEwMDY0NAorLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVv
X2NvZGVjL1JUQ1ZpZGVvRW5jb2RlclZQOC5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNv
ZGVyVlA4LmgKK0BAIC0xNCw2ICsxNCw3IEBACisgI2ltcG9ydCAiUlRDVmlkZW9FbmNvZGVyLmgi
CisgCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUo
IldLX1JUQ1ZpZGVvRW5jb2RlclZQOCIpKSkKKyBAaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlclZQ
OCA6IE5TT2JqZWN0CisgCisgLyogVGhpcyByZXR1cm5zIGEgVlA4IGVuY29kZXIgdGhhdCBjYW4g
YmUgcmV0dXJuZWQgZnJvbSBhIFJUQ1ZpZGVvRW5jb2RlckZhY3RvcnkgaW5qZWN0ZWQgaW50bwor
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3Zp
ZGVvX2NvZGVjL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0KK2luZGV4IDlhZmQ1NGY1
NWY1Li5iOTYzNDc3OWYxZiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENXcmFwcGVkTmF0aXZl
VmlkZW9FbmNvZGVyLm1tCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5j
b2Rlci5tbQorQEAgLTU4LDYgKzU4LDExIEBAIC0gKGludClzZXRCaXRyYXRlOih1aW50MzJfdCli
aXRyYXRlS2JpdCBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZSB7CisgICByZXR1cm4gMDsK
KyB9CisgCisrLSAoaW50KXNldFJhdGVBbGxvY2F0aW9uOihub25udWxsIFJUQ1ZpZGVvQml0cmF0
ZUFsbG9jYXRpb24gKilhbGxvY2F0aW9uIGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsK
KysgIFJUQ19OT1RSRUFDSEVEKCk7CisrICByZXR1cm4gMDsKKyt9CisrCisgLSAoTlNTdHJpbmcg
KilpbXBsZW1lbnRhdGlvbk5hbWUgeworICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgIHJldHVybiBu
aWw7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVJNDIwQnVmZmVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
dmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIuaAoraW5kZXggOWE5MDRmNTM5
NmEuLmRjOTAzYmM0YmNhIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVJ
NDIwQnVmZmVyLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlSTQyMEJ1ZmZlci5o
CitAQCAtMTcsNiArMTcsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAorIC8qKiBSVENJ
NDIwQnVmZmVyIGltcGxlbWVudHMgdGhlIFJUQ0k0MjBCdWZmZXIgcHJvdG9jb2wgKi8KKyBSVENf
T0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDSTQy
MEJ1ZmZlciIpKSkKKyBAaW50ZXJmYWNlIFJUQ0k0MjBCdWZmZXIgOiBOU09iamVjdDxSVENJNDIw
QnVmZmVyPgorIEBlbmQKKyAKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2
ZU11dGFibGVJNDIwQnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZU11dGFibGVJ
NDIwQnVmZmVyLmgKK2luZGV4IDZjZDUxMTA0NjBiLi43Y2ZhOTUwYWJiNiAxMDA2NDQKKy0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92
aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIuaAorKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVv
X2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVNdXRhYmxlSTQyMEJ1ZmZlci5oCitAQCAtMTgsNiArMTgs
NyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAorIC8qKiBNdXRhYmxlIHZlcnNpb24gb2Yg
UlRDSTQyMEJ1ZmZlciAqLworIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNf
cnVudGltZV9uYW1lKCJXS19SVENNdXRhYmxlSTQyMEJ1ZmZlciIpKSkKKyBAaW50ZXJmYWNlIFJU
Q011dGFibGVJNDIwQnVmZmVyIDogUlRDSTQyMEJ1ZmZlcjxSVENNdXRhYmxlSTQyMEJ1ZmZlcj4K
KyBAZW5kCisgCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENDb2RlY1NwZWNpZmljSW5mby5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENDb2RlY1Nw
ZWNpZmljSW5mby5oCitpbmRleCBlMmFlNGNhZmExMS4uOWRjNDRjMTJhZjggMTAwNjQ0CistLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNl
L1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDQ29kZWNTcGVjaWZpY0luZm8uaAorQEAg
LTE4LDYgKzE4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAgKiAgQ29ycmVzcG9uZHMg
dG8gd2VicnRjOjpDb2RlY1NwZWNpZmljSW5mby4KKyAgKi8KKyBSVENfT0JKQ19FWFBPUlQKKytf
X2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDQ29kZWNTcGVjaWZpY0luZm8i
KSkpCisgQHByb3RvY29sIFJUQ0NvZGVjU3BlY2lmaWNJbmZvIDxOU09iamVjdD4KKyBAZW5kCisg
CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLmgKK2luZGV4
IDY3MGM3Mjc2ZmY3Li43OTk0Y2U2NGExZiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLmgK
KysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2Jhc2UvUlRDRW5jb2RlZEltYWdlLmgKK0BAIC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgTlNfRU5V
TShOU1VJbnRlZ2VyLCBSVENWaWRlb0NvbnRlbnRUeXBlKSB7CisgCisgLyoqIFJlcHJlc2VudHMg
YW4gZW5jb2RlZCBmcmFtZS4gQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpFbmNvZGVkSW1hZ2UuICov
CisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldL
X1JUQ0VuY29kZWRJbWFnZSIpKSkKKyBAaW50ZXJmYWNlIFJUQ0VuY29kZWRJbWFnZSA6IE5TT2Jq
ZWN0CisgCisgQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBOU0RhdGEgKmJ1ZmZlcjsKK0BA
IC00Nyw2ICs0OCw3IEBAIFJUQ19PQkpDX0VYUE9SVAorIEBwcm9wZXJ0eShub25hdG9taWMsIGFz
c2lnbikgQk9PTCBjb21wbGV0ZUZyYW1lOworIEBwcm9wZXJ0eShub25hdG9taWMsIHN0cm9uZykg
TlNOdW1iZXIgKnFwOworIEBwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgUlRDVmlkZW9Db250
ZW50VHlwZSBjb250ZW50VHlwZTsKKytAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIGludCBz
cGF0aWFsSW5kZXg7CisgCisgQGVuZAorIAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLm0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNl
L1JUQ0VuY29kZWRJbWFnZS5tCitpbmRleCAwMjRhNTdjNTQxYi4uODVjZDVlMjk4ZTQgMTAwNjQ0
CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5tCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5tCitAQCAtMjYs
NSArMjYsNiBAQCBAaW1wbGVtZW50YXRpb24gUlRDRW5jb2RlZEltYWdlCisgQHN5bnRoZXNpemUg
Y29tcGxldGVGcmFtZSA9IF9jb21wbGV0ZUZyYW1lOworIEBzeW50aGVzaXplIHFwID0gX3FwOwor
IEBzeW50aGVzaXplIGNvbnRlbnRUeXBlID0gX2NvbnRlbnRUeXBlOworK0BzeW50aGVzaXplIHNw
YXRpYWxJbmRleCA9IF9zcGF0aWFsSW5kZXg7CisgCisgQGVuZAorZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDSTQy
MEJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENJNDIwQnVmZmVyLmgKK2luZGV4IGE2YzdlNDFiY2JhLi5jZmExNGY4YWYy
MyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDSTQyMEJ1ZmZlci5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0k0MjBCdWZmZXIuaAorQEAg
LTE2LDYgKzE2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAvKiogUHJvdG9jb2wg
Zm9yIFJUQ1lVVlBsYW5hckJ1ZmZlcnMgY29udGFpbmluZyBJNDIwIGRhdGEgKi8KKyBSVENfT0JK
Q19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDSTQyMEJ1
ZmZlciIpKSkKKyBAcHJvdG9jb2wgUlRDSTQyMEJ1ZmZlciA8UlRDWVVWUGxhbmFyQnVmZmVyPgor
IEBlbmQKKyAKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRw
RnJhZ21lbnRhdGlvbkhlYWRlci5oCitpbmRleCAyZTI2YjA4YjhhZi4uZmJiYzY4YThlZjYgMTAw
NjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIuaAorKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVu
dGF0aW9uSGVhZGVyLmgKK0BAIC0xNiw2ICsxNiw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CisgCisgLyoqIEluZm9ybWF0aW9uIGZvciBoZWFkZXIuIENvcnJlc3BvbmRzIHRvIHdlYnJ0Yzo6
UlRQRnJhZ21lbnRhdGlvbkhlYWRlci4gKi8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0
ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlciIpKSkK
KyBAaW50ZXJmYWNlIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIgOiBOU09iamVjdAorIAorIEBw
cm9wZXJ0eShub25hdG9taWMsIHN0cm9uZykgTlNBcnJheTxOU051bWJlciAqPiAqZnJhZ21lbnRh
dGlvbk9mZnNldDsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRD
UnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tCitpbmRleCA4MDQ5YWJjNDExZS4uNmNmMjFkZGMyYTEg
MTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubQorKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENSdHBGcmFn
bWVudGF0aW9uSGVhZGVyLm0KK0BAIC0xNyw0ICsxNyw1IEBAIEBpbXBsZW1lbnRhdGlvbiBSVENS
dHBGcmFnbWVudGF0aW9uSGVhZGVyCisgQHN5bnRoZXNpemUgZnJhZ21lbnRhdGlvblRpbWVEaWZm
ID0gX2ZyYWdtZW50YXRpb25UaW1lRGlmZjsKKyBAc3ludGhlc2l6ZSBmcmFnbWVudGF0aW9uUGxU
eXBlID0gX2ZyYWdtZW50YXRpb25QbFR5cGU7CisgCistQGVuZAorXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCisrQGVuZAorKworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9Db2RlY0luZm8uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRD
VmlkZW9Db2RlY0luZm8uaAoraW5kZXggMjE2MmNhYWEyMWYuLjRlNjQzZDk0MzQ3IDEwMDY0NAor
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YmFzZS9SVENWaWRlb0NvZGVjSW5mby5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvQ29kZWNJbmZvLmgKK0BAIC0x
Niw2ICsxNiw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgLyoqIEhvbGRzIGluZm9y
bWF0aW9uIHRvIGlkZW50aWZ5IGEgY29kZWMuIENvcnJlc3BvbmRzIHRvIHdlYnJ0Yzo6U2RwVmlk
ZW9Gb3JtYXQuICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50
aW1lX25hbWUoIldLX1JUQ1ZpZGVvQ29kZWNJbmZvIikpKQorIEBpbnRlcmZhY2UgUlRDVmlkZW9D
b2RlY0luZm8gOiBOU09iamVjdCA8TlNDb2Rpbmc+CisgCisgLSAoaW5zdGFuY2V0eXBlKWluaXQg
TlNfVU5BVkFJTEFCTEU7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9E
ZWNvZGVyLmgKK2luZGV4IDE4YzZmNmIwMDA2Li41MzQ0MjBkMzk1NSAxMDA2NDQKKy0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRD
VmlkZW9EZWNvZGVyLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyLmgKK0BAIC0yMyw2ICsyMyw3IEBA
IHR5cGVkZWYgdm9pZCAoXlJUQ1ZpZGVvRGVjb2RlckNhbGxiYWNrKShSVENWaWRlb0ZyYW1lICpm
cmFtZSk7CisgCisgLyoqIFByb3RvY29sIGZvciBkZWNvZGVyIGltcGxlbWVudGF0aW9ucy4gKi8K
KyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tf
UlRDVmlkZW9EZWNvZGVyIikpKQorIEBwcm90b2NvbCBSVENWaWRlb0RlY29kZXIgPE5TT2JqZWN0
PgorIAorIC0gKHZvaWQpc2V0Q2FsbGJhY2s6KFJUQ1ZpZGVvRGVjb2RlckNhbGxiYWNrKWNhbGxi
YWNrOworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29k
ZXJGYWN0b3J5LmgKK2luZGV4IDNlMjQxNTNiODJjLi5jYjk1ZmEzZjEzNCAxMDA2NDQKKy0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2Uv
UlRDVmlkZW9EZWNvZGVyRmFjdG9yeS5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuaAor
QEAgLTE4LDYgKzE4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAvKiogUlRDVmlk
ZW9EZWNvZGVyRmFjdG9yeSBpcyBhbiBPYmplY3RpdmUtQyB2ZXJzaW9uIG9mIHdlYnJ0Yzo6Vmlk
ZW9EZWNvZGVyRmFjdG9yeS4gKi8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChv
YmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9EZWNvZGVyRmFjdG9yeSIpKSkKKyBAcHJvdG9j
b2wgUlRDVmlkZW9EZWNvZGVyRmFjdG9yeSA8TlNPYmplY3Q+CisgCisgLSAobnVsbGFibGUgaWQ8
UlRDVmlkZW9EZWNvZGVyPiljcmVhdGVEZWNvZGVyOihSVENWaWRlb0NvZGVjSW5mbyAqKWluZm87
CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyLmgKK2luZGV4
IGM1MjU3Njc0ZDgzLi41MjkxYmIxMzQyYiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyLmgK
KysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2Jhc2UvUlRDVmlkZW9FbmNvZGVyLmgKK0BAIC0xOSw3ICsxOSwxMSBAQAorICNpbXBvcnQgIlJU
Q1ZpZGVvRnJhbWUuaCIKKyAKKyBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorLQorKy8qCisrbmFt
ZXNwYWNlIHdlYnJ0YyB7CisrY2xhc3MgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsKKyt9OworKyov
CisgLyoqIENhbGxiYWNrIGJsb2NrIGZvciBlbmNvZGVyLiAqLworIHR5cGVkZWYgQk9PTCAoXlJU
Q1ZpZGVvRW5jb2RlckNhbGxiYWNrKShSVENFbmNvZGVkSW1hZ2UgKmZyYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDxSVENDb2RlY1NwZWNpZmljSW5mbz4g
aW5mbywKK0BAIC0yNyw2ICszMSw3IEBAIHR5cGVkZWYgQk9PTCAoXlJUQ1ZpZGVvRW5jb2RlckNh
bGxiYWNrKShSVENFbmNvZGVkSW1hZ2UgKmZyYW1lLAorIAorIC8qKiBQcm90b2NvbCBmb3IgZW5j
b2RlciBpbXBsZW1lbnRhdGlvbnMuICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVf
Xygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRW5jb2RlciIpKSkKKyBAcHJvdG9jb2wg
UlRDVmlkZW9FbmNvZGVyIDxOU09iamVjdD4KKyAKKyAtICh2b2lkKXNldENhbGxiYWNrOihSVENW
aWRlb0VuY29kZXJDYWxsYmFjayljYWxsYmFjazsKK0BAIC0zNyw2ICs0Miw3IEBAIFJUQ19PQkpD
X0VYUE9SVAorICAgICBjb2RlY1NwZWNpZmljSW5mbzoobnVsbGFibGUgaWQ8UlRDQ29kZWNTcGVj
aWZpY0luZm8+KWluZm8KKyAgICAgICAgICAgIGZyYW1lVHlwZXM6KE5TQXJyYXk8TlNOdW1iZXIg
Kj4gKilmcmFtZVR5cGVzOworIC0gKGludClzZXRCaXRyYXRlOih1aW50MzJfdCliaXRyYXRlS2Jp
dCBmcmFtZXJhdGU6KHVpbnQzMl90KWZyYW1lcmF0ZTsKKystIChpbnQpc2V0UmF0ZUFsbG9jYXRp
b246IChSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uICopYWxsb2NhdGlvbiBmcmFtZXJhdGU6KHVp
bnQzMl90KWZyYW1lcmF0ZTsKKyAtIChOU1N0cmluZyAqKWltcGxlbWVudGF0aW9uTmFtZTsKKyAK
KyAvKiogUmV0dXJucyBRUCBzY2FsaW5nIHNldHRpbmdzIGZvciBlbmNvZGVyLiBUaGUgcXVhbGl0
eSBzY2FsZXIgYWRqdXN0cyB0aGUgcmVzb2x1dGlvbiBpbiBvcmRlciB0bworZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2Uv
UlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJGYWN0b3J5LmgKK2luZGV4
IDIwYzYwM2Q2ZmU2Li5jYmU5ZWE0OTJhZSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyRmFj
dG9yeS5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnkuaAorQEAgLTE4LDYgKzE4LDcgQEAg
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAvKiogUlRDVmlkZW9FbmNvZGVyRmFjdG9yeSBp
cyBhbiBPYmplY3RpdmUtQyB2ZXJzaW9uIG9mIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeS4g
Ki8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgi
V0tfUlRDVmlkZW9FbmNvZGVyRmFjdG9yeSIpKSkKKyBAcHJvdG9jb2wgUlRDVmlkZW9FbmNvZGVy
RmFjdG9yeSA8TlNPYmplY3Q+CisgCisgLSAobnVsbGFibGUgaWQ8UlRDVmlkZW9FbmNvZGVyPilj
cmVhdGVFbmNvZGVyOihSVENWaWRlb0NvZGVjSW5mbyAqKWluZm87CitkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENW
aWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmgK
K2luZGV4IDJiNDhmNDVjZTBhLi42OGNmZDY2ZGY0NyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNv
ZGVyUXBUaHJlc2hvbGRzLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmgKK0BA
IC0xNiw2ICsxNiw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgLyoqIFFQIHRocmVz
aG9sZHMgZm9yIGVuY29kZXIuIENvcnJlc3BvbmRzIHRvIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyOjpR
cFRocmVzaG9sZHMuICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19y
dW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyIpKSkKKyBAaW50ZXJm
YWNlIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyA6IE5TT2JqZWN0CisgCisgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoVGhyZXNob2xkc0xvdzooTlNJbnRlZ2VyKWxvdyBoaWdoOihOU0ludGVn
ZXIpaGlnaDsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVv
RW5jb2RlclNldHRpbmdzLmgKK2luZGV4IDY5ZTA0Y2FjNzBmLi5hZTNiZjVmYjVmMSAxMDA2NDQK
Ky0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2Jhc2UvUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJTZXR0
aW5ncy5oCitAQCAtMjEsNiArMjEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgUlRD
VmlkZW9Db2RlY01vZGUpIHsKKyAKKyAvKiogU2V0dGluZ3MgZm9yIGVuY29kZXIuIENvcnJlc3Bv
bmRzIHRvIHdlYnJ0Yzo6VmlkZW9Db2RlYy4gKi8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJp
YnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MiKSkp
CisgQGludGVyZmFjZSBSVENWaWRlb0VuY29kZXJTZXR0aW5ncyA6IE5TT2JqZWN0CisgCisgQHBy
b3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqbmFtZTsKK0BAIC00MCw0ICs0MSw5
IEBAIFJUQ19PQkpDX0VYUE9SVAorIAorIEBlbmQKKyAKKytSVENfT0JKQ19FWFBPUlQKKytfX2F0
dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlv
biIpKSkKKytAaW50ZXJmYWNlIFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gOiBOU09iamVjdAor
K0BlbmQKKysKKyBOU19BU1NVTUVfTk9OTlVMTF9FTkQKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJh
bWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2Jhc2UvUlRDVmlkZW9GcmFtZS5oCitpbmRleCA5YWNhNzQzM2YzNC4uYmRlMDljNTBjOWQgMTAw
NjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWUuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lLmgKK0BAIC0yNiw2
ICsyNiw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFJUQ1ZpZGVvUm90YXRpb24pIHsK
KyAKKyAvLyBSVENWaWRlb0ZyYW1lIGlzIGFuIE9iamVjdGl2ZUMgdmVyc2lvbiBvZiB3ZWJydGM6
OlZpZGVvRnJhbWUuCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50
aW1lX25hbWUoIldLX1JUQ1ZpZGVvRnJhbWUiKSkpCisgQGludGVyZmFjZSBSVENWaWRlb0ZyYW1l
IDogTlNPYmplY3QKKyAKKyAvKiogV2lkdGggd2l0aG91dCByb3RhdGlvbiBhcHBsaWVkLiAqLwor
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmgK
K2luZGV4IGJiOWU2ZmJhNjMxLi4xODZhZDA4ODliZiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFt
ZUJ1ZmZlci5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaAorQEAgLTE4LDYgKzE4LDcgQEAg
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAvLyBSVENWaWRlb0ZyYW1lQnVmZmVyIGlzIGFu
IE9iamVjdGl2ZUMgdmVyc2lvbiBvZiB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXIuCisgUlRDX09C
SkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVv
RnJhbWVCdWZmZXIiKSkpCisgQHByb3RvY29sIFJUQ1ZpZGVvRnJhbWVCdWZmZXIgPE5TT2JqZWN0
PgorIAorIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBpbnQgd2lkdGg7CitkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
Y29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMv
dmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0LmgKK2luZGV4IGVjZTk1NzBhMTNi
Li5lOTQ3ZGM2ZTYyMyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDQ29kZWNTcGVj
aWZpY0luZm9IMjY0LmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0lu
Zm9IMjY0LmgKK0BAIC0xMCw3ICsxMCw3IEBACisgCisgI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CisgCistI2ltcG9ydCAiUlRDQ29kZWNTcGVjaWZpY0luZm8uaCIKKysjaW1wb3J0
ICJiYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmgiCisgI2ltcG9ydCAiUlRDTWFjcm9zLmgiCisg
CisgLyoqIENsYXNzIGZvciBIMjY0IHNwZWNpZmljIGNvbmZpZy4gKi8KK0BAIC0yMCw2ICsyMCw3
IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBSVENIMjY0UGFja2V0aXphdGlvbk1vZGUp
IHsKKyB9OworIAorIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGlt
ZV9uYW1lKCJXS19SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQiKSkpCisgQGludGVyZmFjZSBSVEND
b2RlY1NwZWNpZmljSW5mb0gyNjQgOiBOU09iamVjdCA8UlRDQ29kZWNTcGVjaWZpY0luZm8+Cisg
CisgQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENIMjY0UGFja2V0aXphdGlvbk1vZGUg
cGFja2V0aXphdGlvbk1vZGU7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2Rl
Y1NwZWNpZmljSW5mb0gyNjQubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0NvZGVjU3BlY2lmaWNJ
bmZvSDI2NC5tbQoraW5kZXggNTdmMjQxMWUzYmIuLjYzZThiZDdmNDJhIDEwMDY0NAorLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9u
ZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQubW0KKysrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMv
dmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0Lm1tCitAQCAtMjAsNiArMjAsNyBA
QCBAc3ludGhlc2l6ZSBwYWNrZXRpemF0aW9uTW9kZSA9IF9wYWNrZXRpemF0aW9uTW9kZTsKKyAt
ICh3ZWJydGM6OkNvZGVjU3BlY2lmaWNJbmZvKW5hdGl2ZUNvZGVjU3BlY2lmaWNJbmZvIHsKKyAg
IHdlYnJ0Yzo6Q29kZWNTcGVjaWZpY0luZm8gY29kZWNTcGVjaWZpY0luZm87CisgICBjb2RlY1Nw
ZWNpZmljSW5mby5jb2RlY1R5cGUgPSB3ZWJydGM6OmtWaWRlb0NvZGVjSDI2NDsKKysgIGNvZGVj
U3BlY2lmaWNJbmZvLmNvZGVjX25hbWUgPSBba1JUQ1ZpZGVvQ29kZWNIMjY0TmFtZSBjU3RyaW5n
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICBjb2RlY1NwZWNpZmljSW5m
by5jb2RlY1NwZWNpZmljLkgyNjQucGFja2V0aXphdGlvbl9tb2RlID0KKyAgICAgICAod2VicnRj
OjpIMjY0UGFja2V0aXphdGlvbk1vZGUpX3BhY2tldGl6YXRpb25Nb2RlOworIAorZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVu
dHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaAoraW5kZXggN2Nh
OTQ2M2E1OTMuLmQxMTQ2MDMwMGQ1IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENE
ZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0Rl
ZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5LmgKK0BAIC0xOSw2ICsxOSw3IEBAIE5TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCisgICogIGNvZGVjcywgY3JlYXRlIGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMg
b2YgUlRDVmlkZW9FbmNvZGVyRmFjdG9yeSBhbmQgUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS4KKyAg
Ki8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgi
V0tfUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkiKSkpCisgQGludGVyZmFjZSBSVENEZWZh
dWx0VmlkZW9EZWNvZGVyRmFjdG9yeSA6IE5TT2JqZWN0IDxSVENWaWRlb0RlY29kZXJGYWN0b3J5
PgorIEBlbmQKKyAKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRl
b0RlY29kZXJGYWN0b3J5Lm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0RlY29k
ZXJGYWN0b3J5Lm0KK2luZGV4IGJkYjE4NTE3Y2FmLi5jN2QwOGNhYTljOSAxMDA2NDQKKy0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkubQorKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9u
ZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5tCitAQCAtMTUs
NyArMTUsNyBAQAorICNpbXBvcnQgImFwaS92aWRlb19jb2RlYy9SVENWaWRlb0NvZGVjQ29uc3Rh
bnRzLmgiCisgI2ltcG9ydCAiYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlclZQOC5oIgor
ICNpbXBvcnQgImJhc2UvUlRDVmlkZW9Db2RlY0luZm8uaCIKKy0jaWYgZGVmaW5lZChSVENfRU5B
QkxFX1ZQOSkKKysjaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorICNpbXBvcnQgImFwaS92
aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJWUDkuaCIKKyAjZW5kaWYKKyAKK0BAIC0yNiw3ICsy
Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBSVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeQorICAg
ICByZXR1cm4gW1tSVENWaWRlb0RlY29kZXJIMjY0IGFsbG9jXSBpbml0XTsKKyAgIH0gZWxzZSBp
ZiAoW2luZm8ubmFtZSBpc0VxdWFsVG9TdHJpbmc6a1JUQ1ZpZGVvQ29kZWNWcDhOYW1lXSkgewor
ICAgICByZXR1cm4gW1JUQ1ZpZGVvRGVjb2RlclZQOCB2cDhEZWNvZGVyXTsKKy0jaWYgZGVmaW5l
ZChSVENfRU5BQkxFX1ZQOSkKKysjaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorICAgfSBl
bHNlIGlmIChbaW5mby5uYW1lIGlzRXF1YWxUb1N0cmluZzprUlRDVmlkZW9Db2RlY1ZwOU5hbWVd
KSB7CisgICAgIHJldHVybiBbUlRDVmlkZW9EZWNvZGVyVlA5IHZwOURlY29kZXJdOworICNlbmRp
ZgorQEAgLTM5LDcgKzM5LDcgQEAgQGltcGxlbWVudGF0aW9uIFJUQ0RlZmF1bHRWaWRlb0RlY29k
ZXJGYWN0b3J5CisgICByZXR1cm4gQFsKKyAgICAgW1tSVENWaWRlb0NvZGVjSW5mbyBhbGxvY10g
aW5pdFdpdGhOYW1lOmtSVENWaWRlb0NvZGVjSDI2NE5hbWVdLAorICAgICBbW1JUQ1ZpZGVvQ29k
ZWNJbmZvIGFsbG9jXSBpbml0V2l0aE5hbWU6a1JUQ1ZpZGVvQ29kZWNWcDhOYW1lXSwKKy0jaWYg
ZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKKysjaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQor
ICAgICBbW1JUQ1ZpZGVvQ29kZWNJbmZvIGFsbG9jXSBpbml0V2l0aE5hbWU6a1JUQ1ZpZGVvQ29k
ZWNWcDlOYW1lXSwKKyAjZW5kaWYKKyAgIF07CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENE
ZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5oCitpbmRleCBjNDVlNTQzNjJiMi4uOTMyMzI1NmNl
YWQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJG
YWN0b3J5LmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZh
Y3RvcnkuaAorQEAgLTE5LDYgKzE5LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAgKiAg
Y29kZWNzLCBjcmVhdGUgY3VzdG9tIGltcGxlbWVudGF0aW9ucyBvZiBSVENWaWRlb0VuY29kZXJG
YWN0b3J5IGFuZCBSVENWaWRlb0RlY29kZXJGYWN0b3J5LgorICAqLworIFJUQ19PQkpDX0VYUE9S
VAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENEZWZhdWx0VmlkZW9F
bmNvZGVyRmFjdG9yeSIpKSkKKyBAaW50ZXJmYWNlIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0
b3J5IDogTlNPYmplY3QgPFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnk+CisgCisgQHByb3BlcnR5KG5v
bmF0b21pYywgcmV0YWluKSBSVENWaWRlb0NvZGVjSW5mbyAqcHJlZmVycmVkQ29kZWM7CitkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5t
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5tCitpbmRl
eCBiNzIyOTZiNjRmMy4uYjAxYzA3NDY3OTIgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5Lm0KKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMv
UlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkubQorQEAgLTE1LDcgKzE1LDcgQEAKKyAjaW1w
b3J0ICJhcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5oIgorICNpbXBvcnQg
ImFwaS92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaCIKKyAjaW1wb3J0ICJiYXNlL1JU
Q1ZpZGVvQ29kZWNJbmZvLmgiCistI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCisrI2lmICFk
ZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyAjaW1wb3J0ICJhcGkvdmlkZW9fY29kZWMvUlRDVmlk
ZW9FbmNvZGVyVlA5LmgiCisgI2VuZGlmCisgCitAQCAtNDQsNyArNDQsNyBAQCBAaW1wbGVtZW50
YXRpb24gUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkKKyAKKyAgIFJUQ1ZpZGVvQ29kZWNJ
bmZvICp2cDhJbmZvID0gW1tSVENWaWRlb0NvZGVjSW5mbyBhbGxvY10gaW5pdFdpdGhOYW1lOmtS
VENWaWRlb0NvZGVjVnA4TmFtZV07CisgCistI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCisr
I2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyAgIFJUQ1ZpZGVvQ29kZWNJbmZvICp2cDlJ
bmZvID0gW1tSVENWaWRlb0NvZGVjSW5mbyBhbGxvY10gaW5pdFdpdGhOYW1lOmtSVENWaWRlb0Nv
ZGVjVnA5TmFtZV07CisgI2VuZGlmCisgCitAQCAtNTIsNyArNTIsNyBAQCBAaW1wbGVtZW50YXRp
b24gUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkKKyAgICAgY29uc3RyYWluZWRIaWdoSW5m
bywKKyAgICAgY29uc3RyYWluZWRCYXNlbGluZUluZm8sCisgICAgIHZwOEluZm8sCistI2lmIGRl
ZmluZWQoUlRDX0VOQUJMRV9WUDkpCisrI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyAg
ICAgdnA5SW5mbywKKyAjZW5kaWYKKyAgIF07CitAQCAtNjMsNyArNjMsNyBAQCBAaW1wbGVtZW50
YXRpb24gUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkKKyAgICAgcmV0dXJuIFtbUlRDVmlk
ZW9FbmNvZGVySDI2NCBhbGxvY10gaW5pdFdpdGhDb2RlY0luZm86aW5mb107CisgICB9IGVsc2Ug
aWYgKFtpbmZvLm5hbWUgaXNFcXVhbFRvU3RyaW5nOmtSVENWaWRlb0NvZGVjVnA4TmFtZV0pIHsK
KyAgICAgcmV0dXJuIFtSVENWaWRlb0VuY29kZXJWUDggdnA4RW5jb2Rlcl07CistI2lmIGRlZmlu
ZWQoUlRDX0VOQUJMRV9WUDkpCisrI2lmICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyAgIH0g
ZWxzZSBpZiAoW2luZm8ubmFtZSBpc0VxdWFsVG9TdHJpbmc6a1JUQ1ZpZGVvQ29kZWNWcDlOYW1l
XSkgeworICAgICByZXR1cm4gW1JUQ1ZpZGVvRW5jb2RlclZQOSB2cDlFbmNvZGVyXTsKKyAjZW5k
aWYKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxldmVsSWQuaAoraW5kZXggNTZiMzUz
MjE1YTIuLmQwMjIyOTc2NzRlIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0
UHJvZmlsZUxldmVsSWQuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxl
dmVsSWQuaAorQEAgLTQ4LDYgKzQ4LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFJU
Q0gyNjRMZXZlbCkgeworIH07CisgCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygo
b2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0gyNjRQcm9maWxlTGV2ZWxJZCIpKSkKKyBAaW50ZXJm
YWNlIFJUQ0gyNjRQcm9maWxlTGV2ZWxJZCA6IE5TT2JqZWN0CisgCisgQHByb3BlcnR5KG5vbmF0
b21pYywgcmVhZG9ubHkpIFJUQ0gyNjRQcm9maWxlIHByb2ZpbGU7CitkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbQoraW5kZXggMzU5NjU2Y2I5N2IuLjNkNWM4MzM3MjQ2
IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0K
KysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tCitAQCAtMTks
MjMgKzE5LDM1IEBACisgI2luY2x1ZGUgIm1lZGlhL2Jhc2UvaDI2NF9wcm9maWxlX2xldmVsX2lk
LmgiCisgI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKKyAKKysjaWYgIWRl
ZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKKyBuYW1lc3BhY2UgeworIAorIE5TU3RyaW5nICpN
YXhTdXBwb3J0ZWRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEhpZ2goKTsKKyBOU1N0cmluZyAqTWF4
U3VwcG9ydGVkUHJvZmlsZUxldmVsQ29uc3RyYWluZWRCYXNlbGluZSgpOworIAorIH0gIC8vIG5h
bWVzcGFjZQorKyNlbmRpZgorIAorLU5TU3RyaW5nICpjb25zdCBrUlRDVmlkZW9Db2RlY0gyNjRO
YW1lID0gQChjcmlja2V0OjprSDI2NENvZGVjTmFtZSk7CisrTlNTdHJpbmcgKmNvbnN0IGtSVENW
aWRlb0NvZGVjSDI2NE5hbWUgPSBAIkgyNjQiOworIE5TU3RyaW5nICpjb25zdCBrUlRDTGV2ZWwz
MUNvbnN0cmFpbmVkSGlnaCA9IEAiNjQwYzFmIjsKKyBOU1N0cmluZyAqY29uc3Qga1JUQ0xldmVs
MzFDb25zdHJhaW5lZEJhc2VsaW5lID0gQCI0MmUwMWYiOworKworKyNpZiBkZWZpbmVkKFdFQlJU
Q19XRUJLSVRfQlVJTEQpCisrTlNTdHJpbmcgKmNvbnN0IGtSVENNYXhTdXBwb3J0ZWRIMjY0UHJv
ZmlsZUxldmVsQ29uc3RyYWluZWRIaWdoID0KKysgICAgQCI2NDBjMWYiOworK05TU3RyaW5nICpj
b25zdCBrUlRDTWF4U3VwcG9ydGVkSDI2NFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkQmFzZWxpbmUg
PQorKyAgICBAIjQyZTAxZiI7CisrI2Vsc2UKKyBOU1N0cmluZyAqY29uc3Qga1JUQ01heFN1cHBv
cnRlZEgyNjRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEhpZ2ggPQorICAgICBNYXhTdXBwb3J0ZWRQ
cm9maWxlTGV2ZWxDb25zdHJhaW5lZEhpZ2goKTsKKyBOU1N0cmluZyAqY29uc3Qga1JUQ01heFN1
cHBvcnRlZEgyNjRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEJhc2VsaW5lID0KKyAgICAgTWF4U3Vw
cG9ydGVkUHJvZmlsZUxldmVsQ29uc3RyYWluZWRCYXNlbGluZSgpOworKyNlbmRpZgorIAorIG5h
bWVzcGFjZSB7CisgCisrI2lmICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCisrCisgI2lm
IGRlZmluZWQoV0VCUlRDX0lPUykKKyAKKyB1c2luZyBuYW1lc3BhY2Ugd2VicnRjOjpIMjY0Owor
QEAgLTczLDYgKzg1LDggQEAgTlNTdHJpbmcgKk1heFN1cHBvcnRlZFByb2ZpbGVMZXZlbENvbnN0
cmFpbmVkSGlnaCgpIHsKKyAgIHJldHVybiBrUlRDTGV2ZWwzMUNvbnN0cmFpbmVkSGlnaDsKKyB9
CisgCisrI2VuZGlmCisrCisgfSAgLy8gbmFtZXNwYWNlCisgCisgQGludGVyZmFjZSBSVENIMjY0
UHJvZmlsZUxldmVsSWQgKCkKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVv
RGVjb2RlckZhY3RvcnlIMjY0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckZh
Y3RvcnlIMjY0LmgKK2luZGV4IDRmY2ZmMWRmZjc5Li5mZGFiZDgwNzQ4MCAxMDA2NDQKKy0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQuaAorKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5oCitAQCAtMTQsNSArMTQs
NiBAQAorICNpbXBvcnQgIlJUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuaCIKKyAKKyBSVENfT0JKQ19F
WFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9EZWNv
ZGVyRmFjdG9yeUgyNjQiKSkpCisgQGludGVyZmFjZSBSVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2
NCA6IE5TT2JqZWN0IDxSVENWaWRlb0RlY29kZXJGYWN0b3J5PgorIEBlbmQKK2RpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29k
ZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5oCitpbmRleCBiODYwMjc2MjA2Yy4uYjEwZDFlNmEwOTkg
MTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQuaAorKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0LmgKK0BAIC0xNCw1ICsxNCw2
IEBACisgI2ltcG9ydCAiUlRDVmlkZW9EZWNvZGVyLmgiCisgCisgUlRDX09CSkNfRVhQT1JUCisr
X19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRGVjb2RlckgyNjQi
KSkpCisgQGludGVyZmFjZSBSVENWaWRlb0RlY29kZXJIMjY0IDogTlNPYmplY3QgPFJUQ1ZpZGVv
RGVjb2Rlcj4KKyBAZW5kCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0Rl
Y29kZXJIMjY0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0Lm1tCitp
bmRleCAzYmZiOTE4YmY2MS4uMWMxOGZhYjE3ZGYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2Nv
ZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQubW0KKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlk
ZW9EZWNvZGVySDI2NC5tbQorQEAgLTE5LDEwICsxOSw2IEBACisgI2ltcG9ydCAiaGVscGVycy5o
IgorICNpbXBvcnQgImhlbHBlcnMvc2NvcGVkX2NmdHlwZXJlZi5oIgorIAorLSNpZiBkZWZpbmVk
KFdFQlJUQ19JT1MpCistI2ltcG9ydCAiaGVscGVycy9VSURldmljZStSVENEZXZpY2UuaCIKKy0j
ZW5kaWYKKy0KKyAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19l
cnJvcl9jb2Rlcy5oIgorICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgorQEAgLTI1MSw5ICsyNDcsNyBAQCAtICh2b2lkKWNvbmZpZ3Vy
ZURlY29tcHJlc3Npb25TZXNzaW9uIHsKKyAtICh2b2lkKWRlc3Ryb3lEZWNvbXByZXNzaW9uU2Vz
c2lvbiB7CisgICBpZiAoX2RlY29tcHJlc3Npb25TZXNzaW9uKSB7CisgI2lmIGRlZmluZWQoV0VC
UlRDX0lPUykKKy0gICAgaWYgKFtVSURldmljZSBpc0lPUzExT3JMYXRlcl0pIHsKKy0gICAgICBW
VERlY29tcHJlc3Npb25TZXNzaW9uV2FpdEZvckFzeW5jaHJvbm91c0ZyYW1lcyhfZGVjb21wcmVz
c2lvblNlc3Npb24pOworLSAgICB9CisrICAgIFZURGVjb21wcmVzc2lvblNlc3Npb25XYWl0Rm9y
QXN5bmNocm9ub3VzRnJhbWVzKF9kZWNvbXByZXNzaW9uU2Vzc2lvbik7CisgI2VuZGlmCisgICAg
IFZURGVjb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRlKF9kZWNvbXByZXNzaW9uU2Vzc2lvbik7
CisgICAgIENGUmVsZWFzZShfZGVjb21wcmVzc2lvblNlc3Npb24pOworZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVu
dHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9f
Y29kZWMvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQuaAoraW5kZXggYzY0NDA1ZTRkYWMuLjVm
NmY3OGRmYTlhIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJG
YWN0b3J5SDI2NC5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckZhY3Rv
cnlIMjY0LmgKK0BAIC0xNCw1ICsxNCw2IEBACisgI2ltcG9ydCAiUlRDVmlkZW9FbmNvZGVyRmFj
dG9yeS5oIgorIAorIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGlt
ZV9uYW1lKCJXS19SVENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NCIpKSkKKyBAaW50ZXJmYWNlIFJU
Q1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0IDogTlNPYmplY3QgPFJUQ1ZpZGVvRW5jb2RlckZhY3Rv
cnk+CisgQGVuZAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVy
SDI2NC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0LmgKK2luZGV4IGE5
YzA1NTgwYTQxLi43NzE0YjI1ZWFhNCAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRD
VmlkZW9FbmNvZGVySDI2NC5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2Rl
ckgyNjQuaAorQEAgLTE1LDYgKzE1LDcgQEAKKyAjaW1wb3J0ICJSVENWaWRlb0VuY29kZXIuaCIK
KyAKKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgi
V0tfUlRDVmlkZW9FbmNvZGVySDI2NCIpKSkKKyBAaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2Rlckgy
NjQgOiBOU09iamVjdCA8UlRDVmlkZW9FbmNvZGVyPgorIAorIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENvZGVjSW5mbzooUlRDVmlkZW9Db2RlY0luZm8gKiljb2RlY0luZm87CitkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19j
b2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tCitpbmRleCBmNjY5MGI2ZDg2MS4uYTE0MzU3ZmI4
MGMgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQubW0K
KysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5tbQorQEAgLTksMzkg
KzksNjggQEAKKyAgKgorICAqLworIAorLSNpbXBvcnQgIlJUQ1ZpZGVvRW5jb2RlckgyNjQuaCIK
KysjaW1wb3J0ICJXZWJSVEMvUlRDVmlkZW9Db2RlY0gyNjQuaCIKKyAKKyAjaW1wb3J0IDxWaWRl
b1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKy0jaWYgZGVm
aW5lZChXRUJSVENfSU9TKQorLSNpbXBvcnQgImhlbHBlcnMvVUlEZXZpY2UrUlRDRGV2aWNlLmgi
CistI2VuZGlmCistI2ltcG9ydCAiUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0LmgiCistI2ltcG9y
dCAiUlRDSDI2NFByb2ZpbGVMZXZlbElkLmgiCistI2ltcG9ydCAiYXBpL3BlZXJjb25uZWN0aW9u
L1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIrUHJpdmF0ZS5oIgorLSNpbXBvcnQgImFwaS9wZWVy
Y29ubmVjdGlvbi9SVENWaWRlb0NvZGVjSW5mbytQcml2YXRlLmgiCistI2ltcG9ydCAiYmFzZS9S
VENDb2RlY1NwZWNpZmljSW5mby5oIgorLSNpbXBvcnQgImJhc2UvUlRDSTQyMEJ1ZmZlci5oIgor
LSNpbXBvcnQgImJhc2UvUlRDVmlkZW9FbmNvZGVyLmgiCistI2ltcG9ydCAiYmFzZS9SVENWaWRl
b0ZyYW1lLmgiCistI2ltcG9ydCAiYmFzZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmgiCistI2ltcG9y
dCAiY29tcG9uZW50cy92aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oIgorLSNp
bXBvcnQgImhlbHBlcnMuaCIKKy0KKysjaW1wb3J0ICJQZWVyQ29ubmVjdGlvbi9SVENWaWRlb0Nv
ZGVjK1ByaXZhdGUuaCIKKysjaW1wb3J0ICJXZWJSVEMvUlRDVmlkZW9Db2RlYy5oIgorKyNpbXBv
cnQgIldlYlJUQy9SVENWaWRlb0ZyYW1lLmgiCisrI2ltcG9ydCAiV2ViUlRDL1JUQ1ZpZGVvRnJh
bWVCdWZmZXIuaCIKKyAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9iaXRzdHJlYW1f
cGFyc2VyLmgiCisgI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0L3Byb2ZpbGVfbGV2ZWxfaWQu
aCIKKyAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvYml0cmF0ZV9hZGp1c3Rlci5oIgor
KyNpbXBvcnQgImhlbHBlcnMuaCIKKyAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9j
b21tb25fdHlwZXMuaCIKKyAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92
aWRlb19lcnJvcl9jb2Rlcy5oIgorICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKKyAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMu
aCIKKy0jaW5jbHVkZSAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jld3Jp
dGVyLmgiCisrI2luY2x1ZGUgInNkay9vYmpjL0ZyYW1ld29yay9DbGFzc2VzL1ZpZGVvVG9vbGJv
eC9uYWx1X3Jld3JpdGVyLmgiCisrI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Ns
b2NrLmgiCisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9jb252
ZXJ0X2Zyb20uaCIKKyAKKy1AaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlckgyNjQgKCkKKysjaW5j
bHVkZSAic2RrL1dlYktpdC9FbmNvZGVyVXRpbGl0aWVzLmgiCisrI2luY2x1ZGUgInNkay9XZWJL
aXQvV2ViS2l0VXRpbGl0aWVzLmgiCisrCisrI2ltcG9ydCA8ZGxmY24uaD4KKysjaW1wb3J0IDxv
YmpjL3J1bnRpbWUuaD4KKysKKytTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKFZpZGVvVG9v
bEJveCkKKytTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChWaWRlb1Rvb2xCb3gsIGtWVFZpZGVv
RW5jb2RlclNwZWNpZmljYXRpb25fVXNhZ2UsIE5TU3RyaW5nICopCisrCisrI2lmICFFTkFCTEVf
VkNQX0VOQ09ERVIgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKKytzdGF0aWMgaW5saW5lIGJvb2wg
aXNTdGFuZGFyZEZyYW1lU2l6ZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyt7Cisr
ICAgIC8vIEZJWE1FOiBFbnZpc2lvbiByZWxheGluZyB0aGlzIHJ1bGUsIHNvbWV0aGluZyBsaWtl
IHdpZHRoIGFuZCBoZWlnaHQgZGl2aWRhYmxlIGJ5IDQgb3IgOCBzaG91bGQgYmUgZ29vZCBlbm91
Z2guCisrICAgIGlmICh3aWR0aCA9PSAxMjgwKQorKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSA3
MjA7CisrICAgIGlmICh3aWR0aCA9PSA3MjApCisrICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDEy
ODA7CisrICAgIGlmICh3aWR0aCA9PSA5NjApCisrICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDU0
MDsKKysgICAgaWYgKHdpZHRoID09IDU0MCkKKysgICAgICAgIHJldHVybiBoZWlnaHQgPT0gOTYw
OworKyAgICBpZiAod2lkdGggPT0gNjQwKQorKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSA0ODA7
CisrICAgIGlmICh3aWR0aCA9PSA0ODApCisrICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDY0MDsK
KysgICAgaWYgKHdpZHRoID09IDI4OCkKKysgICAgICAgIHJldHVybiBoZWlnaHQgPT0gMzUyOwor
KyAgICBpZiAod2lkdGggPT0gMzUyKQorKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSAyODg7Cisr
ICAgIGlmICh3aWR0aCA9PSAzMjApCisrICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDI0MDsKKysg
ICAgaWYgKHdpZHRoID09IDI0MCkKKysgICAgICAgIHJldHVybiBoZWlnaHQgPT0gMzIwOworKyAg
ICByZXR1cm4gZmFsc2U7CisrfQorKyNlbmRpZgorIAorK19fYXR0cmlidXRlX18oKG9iamNfcnVu
dGltZV9uYW1lKCJXS19SVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IikpKQorK0BpbnRlcmZhY2Ug
UlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCA6IE5TT2JqZWN0IDxSVENWaWRlb0VuY29kZXI+Cisr
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZWNJbmZvOihSVENWaWRlb0NvZGVjSW5mbyAqKWNv
ZGVjSW5mbyBzaW11bGNhc3RJbmRleDogKGludClpbmRleDsKKyAtICh2b2lkKWZyYW1lV2FzRW5j
b2RlZDooT1NTdGF0dXMpc3RhdHVzCisgICAgICAgICAgICAgICAgICAgZmxhZ3M6KFZURW5jb2Rl
SW5mb0ZsYWdzKWluZm9GbGFncworICAgICAgICAgICAgc2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1
ZmZlclJlZilzYW1wbGVCdWZmZXIKK0BAIC01MSw3ICs4MCw2IEBAIC0gKHZvaWQpZnJhbWVXYXNF
bmNvZGVkOihPU1N0YXR1cylzdGF0dXMKKyAgICAgICAgICAgIHJlbmRlclRpbWVNczooaW50NjRf
dClyZW5kZXJUaW1lTXMKKyAgICAgICAgICAgICAgIHRpbWVzdGFtcDoodWludDMyX3QpdGltZXN0
YW1wCisgICAgICAgICAgICAgICAgcm90YXRpb246KFJUQ1ZpZGVvUm90YXRpb24pcm90YXRpb247
CistCisgQGVuZAorIAorIG5hbWVzcGFjZSB7ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCitAQCAt
NzAsNyArOTgsNyBAQCBjb25zdCBPU1R5cGUga05WMTJQaXhlbEZvcm1hdCA9IGtDVlBpeGVsRm9y
bWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2U7CisgLy8gU3RydWN0IHRoYXQgd2Ug
cGFzcyB0byB0aGUgZW5jb2RlciBwZXIgZnJhbWUgdG8gZW5jb2RlLiBXZSByZWNlaXZlIGl0IGFn
YWluCisgLy8gaW4gdGhlIGVuY29kZXIgY2FsbGJhY2suCisgc3RydWN0IFJUQ0ZyYW1lRW5jb2Rl
UGFyYW1zIHsKKy0gIFJUQ0ZyYW1lRW5jb2RlUGFyYW1zKFJUQ1ZpZGVvRW5jb2RlckgyNjQgKmUs
CisrICBSVENGcmFtZUVuY29kZVBhcmFtcyhSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0ICpjc2ksCisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHcsCisgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IGgsCitAQCAtODUsNyArMTEzLDcgQEAgc3RydWN0IFJUQ0ZyYW1lRW5jb2RlUGFy
YW1zIHsKKyAgICAgfQorICAgfQorIAorLSAgUlRDVmlkZW9FbmNvZGVySDI2NCAqZW5jb2RlcjsK
KysgIFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgKmVuY29kZXI7CisgICBSVENDb2RlY1NwZWNp
ZmljSW5mb0gyNjQgKmNvZGVjU3BlY2lmaWNJbmZvOworICAgaW50MzJfdCB3aWR0aDsKKyAgIGlu
dDMyX3QgaGVpZ2h0OworQEAgLTE3Myw4ICsyMDEsOCBAQCB2b2lkIGNvbXByZXNzaW9uT3V0cHV0
Q2FsbGJhY2sodm9pZCAqZW5jb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJvdGF0aW9uOmVuY29kZVBhcmFtcy0+cm90YXRpb25dOworIH0KKyAKKy0vLyBFeHRyYWN0IFZp
ZGVvVG9vbGJveCBwcm9maWxlIG91dCBvZiB0aGUgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdC4gSWYg
dGhlcmUgaXMKKy0vLyBubyBzcGVjaWZpYyBWaWRlb1Rvb2xib3ggcHJvZmlsZSBmb3IgdGhlIHNw
ZWNpZmllZCBsZXZlbCwgQXV0b0xldmVsIHdpbGwgYmUKKysvLyBFeHRyYWN0IFZpZGVvVG9vbGJv
eCBwcm9maWxlIG91dCBvZiB0aGUgY3JpY2tldDo6VmlkZW9Db2RlYy4gSWYgdGhlcmUgaXMgbm8K
KysvLyBzcGVjaWZpYyBWaWRlb1Rvb2xib3ggcHJvZmlsZSBmb3IgdGhlIHNwZWNpZmllZCBsZXZl
bCwgQXV0b0xldmVsIHdpbGwgYmUKKyAvLyByZXR1cm5lZC4gVGhlIHVzZXIgbXVzdCBpbml0aWFs
aXplIHRoZSBlbmNvZGVyIHdpdGggYSByZXNvbHV0aW9uIGFuZAorIC8vIGZyYW1lcmF0ZSBjb25m
b3JtaW5nIHRvIHRoZSBzZWxlY3RlZCBIMjY0IGxldmVsIHJlZ2FyZGxlc3MuCisgQ0ZTdHJpbmdS
ZWYgRXh0cmFjdFByb2ZpbGUod2VicnRjOjpTZHBWaWRlb0Zvcm1hdCB2aWRlb0Zvcm1hdCkgewor
QEAgLTI4MCwyMyArMzA4LDI2IEBAIENGU3RyaW5nUmVmIEV4dHJhY3RQcm9maWxlKHdlYnJ0Yzo6
U2RwVmlkZW9Gb3JtYXQgdmlkZW9Gb3JtYXQpIHsKKyB9CisgfSAgLy8gbmFtZXNwYWNlCisgCist
QGltcGxlbWVudGF0aW9uIFJUQ1ZpZGVvRW5jb2RlckgyNjQgeworK0BpbXBsZW1lbnRhdGlvbiBS
VENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IHsKKyAgIFJUQ1ZpZGVvQ29kZWNJbmZvICpfY29kZWNJ
bmZvOworICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6Qml0cmF0ZUFkanVzdGVyPiBfYml0cmF0
ZUFkanVzdGVyOworICAgdWludDMyX3QgX3RhcmdldEJpdHJhdGVCcHM7CistICB1aW50MzJfdCBf
ZW5jb2RlckZyYW1lUmF0ZTsKKyAgIHVpbnQzMl90IF9lbmNvZGVyQml0cmF0ZUJwczsKKyAgIFJU
Q0gyNjRQYWNrZXRpemF0aW9uTW9kZSBfcGFja2V0aXphdGlvbk1vZGU7CisgICBDRlN0cmluZ1Jl
ZiBfcHJvZmlsZTsKKyAgIFJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrIF9jYWxsYmFjazsKKyAgIGlu
dDMyX3QgX3dpZHRoOworICAgaW50MzJfdCBfaGVpZ2h0OworLSAgVlRDb21wcmVzc2lvblNlc3Np
b25SZWYgX2NvbXByZXNzaW9uU2Vzc2lvbjsKKysgIENvbXByZXNzaW9uU2Vzc2lvblJlZiBfY29t
cHJlc3Npb25TZXNzaW9uOworICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgX3BpeGVsQnVmZmVyUG9v
bDsKKyAgIFJUQ1ZpZGVvQ29kZWNNb2RlIF9tb2RlOworIAorICAgd2VicnRjOjpIMjY0Qml0c3Ry
ZWFtUGFyc2VyIF9oMjY0Qml0c3RyZWFtUGFyc2VyOworICAgc3RkOjp2ZWN0b3I8dWludDhfdD4g
X2ZyYW1lU2NhbGVCdWZmZXI7CisrCisrICB3ZWJydGM6OlZpZGVvQ29kZWMgX25hdGl2ZVZpZGVv
Q29kZWM7CisrICBpbnQgX3NpbXVsY2FzdEluZGV4OworKyAgYm9vbCBfZGlzYWJsZUVuY29kaW5n
OworIH0KKyAKKyAvLyAuNSBpcyBzZXQgYXMgYSBtaW5pbnVtIHRvIHByZXZlbnQgb3ZlcmNvbXBl
bnNhdGluZyBmb3IgbGFyZ2UgdGVtcG9yYXJ5CitAQCAtMzA2LDEyICszMzcsMTMgQEAgQGltcGxl
bWVudGF0aW9uIFJUQ1ZpZGVvRW5jb2RlckgyNjQgeworIC8vIGRyYXN0aWNhbGx5IHJlZHVjZWQg
Yml0cmF0ZSwgc28gd2Ugd2FudCB0byBhdm9pZCB0aGF0LiBJbiBzdGVhZHkgc3RhdGUKKyAvLyBj
b25kaXRpb25zLCAwLjk1IHNlZW1zIHRvIGdpdmUgdXMgYmV0dGVyIG92ZXJhbGwgYml0cmF0ZSBv
dmVyIGxvbmcgcGVyaW9kcworIC8vIG9mIHRpbWUuCistLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q29kZWNJbmZvOihSVENWaWRlb0NvZGVjSW5mbyAqKWNvZGVjSW5mbyB7CisrLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoQ29kZWNJbmZvOihSVENWaWRlb0NvZGVjSW5mbyAqKWNvZGVjSW5mbyBzaW11
bGNhc3RJbmRleDooaW50KWluZGV4IHsKKyAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7Cisg
ICAgIF9jb2RlY0luZm8gPSBjb2RlY0luZm87CisgICAgIF9iaXRyYXRlQWRqdXN0ZXIucmVzZXQo
bmV3IHdlYnJ0Yzo6Qml0cmF0ZUFkanVzdGVyKC41LCAuOTUpKTsKKyAgICAgX3BhY2tldGl6YXRp
b25Nb2RlID0gUlRDSDI2NFBhY2tldGl6YXRpb25Nb2RlTm9uSW50ZXJsZWF2ZWQ7CisgICAgIF9w
cm9maWxlID0gRXh0cmFjdFByb2ZpbGUoW2NvZGVjSW5mbyBuYXRpdmVTZHBWaWRlb0Zvcm1hdF0p
OworKyAgICBfc2ltdWxjYXN0SW5kZXggPSBpbmRleDsKKyAgICAgUlRDX0xPRyhMU19JTkZPKSA8
PCAiVXNpbmcgcHJvZmlsZSAiIDw8IENGU3RyaW5nVG9TdHJpbmcoX3Byb2ZpbGUpOworICAgICBS
VENfQ0hFQ0soW2NvZGVjSW5mby5uYW1lIGlzRXF1YWxUb1N0cmluZzprUlRDVmlkZW9Db2RlY0gy
NjROYW1lXSk7CisgICB9CitAQCAtMzMwLDExICszNjIsMTMgQEAgLSAoTlNJbnRlZ2VyKXN0YXJ0
RW5jb2RlV2l0aFNldHRpbmdzOihSVENWaWRlb0VuY29kZXJTZXR0aW5ncyAqKXNldHRpbmdzCisg
ICBfd2lkdGggPSBzZXR0aW5ncy53aWR0aDsKKyAgIF9oZWlnaHQgPSBzZXR0aW5ncy5oZWlnaHQ7
CisgICBfbW9kZSA9IHNldHRpbmdzLm1vZGU7CisrICBfbmF0aXZlVmlkZW9Db2RlYyA9IHNldHRp
bmdzLm5hdGl2ZVZpZGVvQ29kZWM7CisrCisrICBSVENfRENIRUNLKF9uYXRpdmVWaWRlb0NvZGVj
Lm51bWJlck9mU2ltdWxjYXN0U3RyZWFtcyAhPSAxKTsKKyAKKyAgIC8vIFdlIGNhbiBvbmx5IHNl
dCBhdmVyYWdlIGJpdHJhdGUgb24gdGhlIEhXIGVuY29kZXIuCistICBfdGFyZ2V0Qml0cmF0ZUJw
cyA9IHNldHRpbmdzLnN0YXJ0Qml0cmF0ZSAqIDEwMDA7ICAvLyBzdGFydEJpdHJhdGUgaXMgaW4g
a2Jwcy4KKysgIF90YXJnZXRCaXRyYXRlQnBzID0gc2V0dGluZ3Muc3RhcnRCaXRyYXRlOworICAg
X2JpdHJhdGVBZGp1c3Rlci0+U2V0VGFyZ2V0Qml0cmF0ZUJwcyhfdGFyZ2V0Qml0cmF0ZUJwcyk7
CistICBfZW5jb2RlckZyYW1lUmF0ZSA9IHNldHRpbmdzLm1heEZyYW1lcmF0ZTsKKyAKKyAgIC8v
IFRPRE8odGtjaGluKTogVHJ5IHNldHRpbmcgcGF5bG9hZCBzaXplIHZpYQorICAgLy8ga1ZUQ29t
cHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhIMjY0U2xpY2VCeXRlcy4KK0BAIC0zNTcsNiArMzkxLDEw
IEBAIC0gKE5TSW50ZWdlcillbmNvZGU6KFJUQ1ZpZGVvRnJhbWUgKilmcmFtZQorICAgICBpc0tl
eWZyYW1lUmVxdWlyZWQgPSBZRVM7CisgICB9CisgCisrICBpZiAoX2Rpc2FibGVFbmNvZGluZykg
eworKyAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworKyAgfQorKworICAgQ1ZQ
aXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7CisgICBpZiAoW2ZyYW1lLmJ1ZmZl
ciBpc0tpbmRPZkNsYXNzOltSVENDVlBpeGVsQnVmZmVyIGNsYXNzXV0pIHsKKyAgICAgLy8gTmF0
aXZlIGZyYW1lIGJ1ZmZlcgorQEAgLTQzNCw5ICs0NzIsOSBAQCAtIChOU0ludGVnZXIpZW5jb2Rl
OihSVENWaWRlb0ZyYW1lICopZnJhbWUKKyAgIGVuY29kZVBhcmFtcy0+Y29kZWNTcGVjaWZpY0lu
Zm8ucGFja2V0aXphdGlvbk1vZGUgPSBfcGFja2V0aXphdGlvbk1vZGU7CisgCisgICAvLyBVcGRh
dGUgdGhlIGJpdHJhdGUgaWYgbmVlZGVkLgorLSAgW3NlbGYgc2V0Qml0cmF0ZUJwczpfYml0cmF0
ZUFkanVzdGVyLT5HZXRBZGp1c3RlZEJpdHJhdGVCcHMoKSBmcmFtZVJhdGU6X2VuY29kZXJGcmFt
ZVJhdGVdOworKyAgW3NlbGYgc2V0Qml0cmF0ZUJwczpfYml0cmF0ZUFkanVzdGVyLT5HZXRBZGp1
c3RlZEJpdHJhdGVCcHMoKV07CisgCistICBPU1N0YXR1cyBzdGF0dXMgPSBWVENvbXByZXNzaW9u
U2Vzc2lvbkVuY29kZUZyYW1lKF9jb21wcmVzc2lvblNlc3Npb24sCisrICBPU1N0YXR1cyBzdGF0
dXMgPSBDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZShfY29tcHJlc3Npb25TZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhl
bEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJlc2VudGF0aW9uVGltZVN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrQ01UaW1lSW52YWxpZCwKK0BAIC00NjcsMTAgKzUw
NSwxMCBAQCAtICh2b2lkKXNldENhbGxiYWNrOihSVENWaWRlb0VuY29kZXJDYWxsYmFjayljYWxs
YmFjayB7CisgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKKyB9CisgCistLSAoaW50KXNldEJpdHJh
dGU6KHVpbnQzMl90KWJpdHJhdGVLYml0IGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsK
Ky0gIF90YXJnZXRCaXRyYXRlQnBzID0gMTAwMCAqIGJpdHJhdGVLYml0OworKy0gKGludClzZXRC
aXRyYXRlOih1aW50MzJfdCliaXRyYXRlQnBzIGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRl
IHsKKysgIF90YXJnZXRCaXRyYXRlQnBzID0gYml0cmF0ZUJwczsKKyAgIF9iaXRyYXRlQWRqdXN0
ZXItPlNldFRhcmdldEJpdHJhdGVCcHMoX3RhcmdldEJpdHJhdGVCcHMpOworLSAgW3NlbGYgc2V0
Qml0cmF0ZUJwczpfYml0cmF0ZUFkanVzdGVyLT5HZXRBZGp1c3RlZEJpdHJhdGVCcHMoKSBmcmFt
ZVJhdGU6ZnJhbWVyYXRlXTsKKysgIFtzZWxmIHNldEJpdHJhdGVCcHM6X2JpdHJhdGVBZGp1c3Rl
ci0+R2V0QWRqdXN0ZWRCaXRyYXRlQnBzKCldOworICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19PSzsKKyB9CisgCitAQCAtNTAzLDYgKzU0MSwxMSBAQCAtIChCT09MKXJlc2V0Q29tcHJlc3Np
b25TZXNzaW9uSWZOZWVkZWRXaXRoRnJhbWU6KFJUQ1ZpZGVvRnJhbWUgKilmcmFtZSB7CisgICBP
U1R5cGUgZnJhbWVQaXhlbEZvcm1hdCA9IFtzZWxmIHBpeGVsRm9ybWF0T2ZGcmFtZTpmcmFtZV07
CisgCisgICBpZiAoX2NvbXByZXNzaW9uU2Vzc2lvbikgeworKyNpZiBkZWZpbmVkKFdFQlJUQ19X
RUJLSVRfQlVJTEQpCisrICAgIGlmICghX3BpeGVsQnVmZmVyUG9vbCkgeworKyAgICAgIHJldHVy
biBOTzsKKysgICAgfQorKyNlbmRpZgorICAgICAvLyBUaGUgcG9vbCBhdHRyaWJ1dGUgYGtDVlBp
eGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5YCBjYW4gY29udGFpbiBlaXRoZXIgYW4gYXJyYXkg
b2YgcGl4ZWwKKyAgICAgLy8gZm9ybWF0cyBvciBhIHNpbmdsZSBwaXhlbCBmb3JtYXQuCisgICAg
IE5TRGljdGlvbmFyeSAqcG9vbEF0dHJpYnV0ZXMgPQorQEAgLTUxNiw2ICs1NTksMTEgQEAgLSAo
Qk9PTClyZXNldENvbXByZXNzaW9uU2Vzc2lvbklmTmVlZGVkV2l0aEZyYW1lOihSVENWaWRlb0Zy
YW1lICopZnJhbWUgeworICAgICAgIGNvbXByZXNzaW9uU2Vzc2lvblBpeGVsRm9ybWF0cyA9IEBb
IChOU051bWJlciAqKXBpeGVsRm9ybWF0cyBdOworICAgICB9CisgCisrICAgIGlmIChbZnJhbWUu
YnVmZmVyIGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkgeworKyAgICAg
IFJUQ0NWUGl4ZWxCdWZmZXIgKnJ0Y1BpeGVsQnVmZmVyID0gKFJUQ0NWUGl4ZWxCdWZmZXIgKilm
cmFtZS5idWZmZXI7CisrICAgICAgZnJhbWVQaXhlbEZvcm1hdCA9IENWUGl4ZWxCdWZmZXJHZXRQ
aXhlbEZvcm1hdFR5cGUocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOworKyAgICB9CisrCisg
ICAgIGlmICghW2NvbXByZXNzaW9uU2Vzc2lvblBpeGVsRm9ybWF0cworICAgICAgICAgICAgIGNv
bnRhaW5zT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoTG9uZzpmcmFtZVBpeGVsRm9ybWF0XV0p
IHsKKyAgICAgICByZXNldENvbXByZXNzaW9uU2Vzc2lvbiA9IFlFUzsKK0BAIC01MzMsNiArNTgx
LDcgQEAgLSAoQk9PTClyZXNldENvbXByZXNzaW9uU2Vzc2lvbklmTmVlZGVkV2l0aEZyYW1lOihS
VENWaWRlb0ZyYW1lICopZnJhbWUgeworIAorIC0gKGludClyZXNldENvbXByZXNzaW9uU2Vzc2lv
bldpdGhQaXhlbEZvcm1hdDooT1NUeXBlKWZyYW1lUGl4ZWxGb3JtYXQgeworICAgW3NlbGYgZGVz
dHJveUNvbXByZXNzaW9uU2Vzc2lvbl07CisrICBfZGlzYWJsZUVuY29kaW5nID0gZmFsc2U7Cisg
CisgICAvLyBTZXQgc291cmNlIGltYWdlIGJ1ZmZlciBhdHRyaWJ1dGVzLiBUaGVzZSBhdHRyaWJ1
dGVzIHdpbGwgYmUgcHJlc2VudCBvbgorICAgLy8gYnVmZmVycyByZXRyaWV2ZWQgZnJvbSB0aGUg
ZW5jb2RlcidzIHBpeGVsIGJ1ZmZlciBwb29sLgorQEAgLTU1OSwyMiArNjA4LDI2IEBAIC0gKGlu
dClyZXNldENvbXByZXNzaW9uU2Vzc2lvbldpdGhQaXhlbEZvcm1hdDooT1NUeXBlKWZyYW1lUGl4
ZWxGb3JtYXQgeworICAgICBDRlJlbGVhc2UocGl4ZWxGb3JtYXQpOworICAgICBwaXhlbEZvcm1h
dCA9IG51bGxwdHI7CisgICB9CistICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGVuY29kZXJfc3Bl
Y3MgPSBudWxscHRyOworLSNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpICYmICFkZWZpbmVkKFdFQlJU
Q19JT1MpCisrICBDRkRpY3Rpb25hcnlSZWYgZW5jb2RlclNwZWNzID0gbnVsbHB0cjsKKysjaWYg
IWRlZmluZWQoV0VCUlRDX0lPUykKKysgIGF1dG8gdXNlSGFyZHdhcmVFbmNvZGVyID0gd2VicnRj
Ojppc0gyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKCkgPyBrQ0ZCb29sZWFuVHJ1ZSA6IGtDRkJv
b2xlYW5GYWxzZTsKKyAgIC8vIEN1cnJlbnRseSBodyBhY2NsIGlzIHN1cHBvcnRlZCBhYm92ZSAz
NjBwIG9uIG1hYywgYmVsb3cgMzYwcAorICAgLy8gdGhlIGNvbXByZXNzaW9uIHNlc3Npb24gd2ls
bCBiZSBjcmVhdGVkIHdpdGggaHcgYWNjbCBkaXNhYmxlZC4KKy0gIGVuY29kZXJfc3BlY3MgPSBD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKAorLSAgICAgIG51bGxwdHIsIDEsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwor
LSAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZW5jb2Rlcl9zcGVjcywKKy0gICAgICAgICAgICAgICAg
ICAgICAgIGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVy
YXRlZFZpZGVvRW5jb2RlciwKKy0gICAgICAgICAgICAgICAgICAgICAgIGtDRkJvb2xlYW5UcnVl
KTsKKysgIENGVHlwZVJlZiBzZXNzaW9uS2V5c1tdID0geyBrVlRWaWRlb0VuY29kZXJTcGVjaWZp
Y2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsIGtWVFZpZGVvRW5j
b2RlclNwZWNpZmljYXRpb25fUmVxdWlyZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIs
IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgfTsKKysgIENGVHlwZVJlZiBzZXNz
aW9uVmFsdWVzW10gPSB7IHVzZUhhcmR3YXJlRW5jb2RlciwgdXNlSGFyZHdhcmVFbmNvZGVyLCBr
Q0ZCb29sZWFuVHJ1ZSB9OworKyAgZW5jb2RlclNwZWNzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb25LZXlzLCBzZXNzaW9uVmFsdWVzLCAzLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KTsKKysjZWxzZQorKyAgQ0ZUeXBlUmVmIHNlc3Npb25LZXlzW10gPSB7IGtWVENvbXByZXNzaW9u
UHJvcGVydHlLZXlfUmVhbFRpbWUgfTsKKysgIENGVHlwZVJlZiBzZXNzaW9uVmFsdWVzW10gPSB7
IGtDRkJvb2xlYW5UcnVlIH07CisrICBlbmNvZGVyU3BlY3MgPSBDRkRpY3Rpb25hcnlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbktleXMsIHNlc3Npb25WYWx1ZXMsIDEsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpOworICNlbmRpZgorKworICAgT1NTdGF0dXMgc3RhdHVzID0KKy0gICAgICBWVENvbXByZXNz
aW9uU2Vzc2lvbkNyZWF0ZShudWxscHRyLCAgLy8gdXNlIGRlZmF1bHQgYWxsb2NhdG9yCisrICAg
ICAgQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKG51bGxwdHIsICAvLyB1c2UgZGVmYXVsdCBhbGxv
Y2F0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX2hlaWdodCwKKy0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrQ01WaWRlb0NvZGVjVHlwZV9IMjY0LAorLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kZXJfc3BlY3MsICAvLyB1c2UgaGFyZHdhcmUgYWNjZWxlcmF0
ZWQgZW5jb2RlciBpZiBhdmFpbGFibGUKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrQ29kZWNUeXBlSDI2NCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNv
ZGVyU3BlY3MsICAvLyB1c2UgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgZW5jb2RlciBpZiBhdmFpbGFi
bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBdHRyaWJ1dGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsICAvLyB1c2UgZGVmYXVs
dCBjb21wcmVzc2VkIGRhdGEgYWxsb2NhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tcHJlc3Npb25PdXRwdXRDYWxsYmFjaywKK0BAIC01ODQsMzIgKzYzNywxMTMgQEAg
LSAoaW50KXJlc2V0Q29tcHJlc3Npb25TZXNzaW9uV2l0aFBpeGVsRm9ybWF0OihPU1R5cGUpZnJh
bWVQaXhlbEZvcm1hdCB7CisgICAgIENGUmVsZWFzZShzb3VyY2VBdHRyaWJ1dGVzKTsKKyAgICAg
c291cmNlQXR0cmlidXRlcyA9IG51bGxwdHI7CisgICB9CistICBpZiAoZW5jb2Rlcl9zcGVjcykg
eworLSAgICBDRlJlbGVhc2UoZW5jb2Rlcl9zcGVjcyk7CistICAgIGVuY29kZXJfc3BlY3MgPSBu
dWxscHRyOworKyAgaWYgKGVuY29kZXJTcGVjcykgeworKyAgICBDRlJlbGVhc2UoZW5jb2RlclNw
ZWNzKTsKKysgICAgZW5jb2RlclNwZWNzID0gbnVsbHB0cjsKKyAgIH0KKysKKysjaWYgRU5BQkxF
X1ZDUF9FTkNPREVSIHx8IGRlZmluZWQoV0VCUlRDX0lPUykKKyAgIGlmIChzdGF0dXMgIT0gbm9F
cnIpIHsKKyAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBjcmVhdGUgY29tcHJl
c3Npb24gc2Vzc2lvbjogIiA8PCBzdGF0dXM7CisgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09E
RUNfRVJST1I7CisgICB9CisrI2VuZGlmCisgI2lmIGRlZmluZWQoV0VCUlRDX01BQykgJiYgIWRl
ZmluZWQoV0VCUlRDX0lPUykKKyAgIENGQm9vbGVhblJlZiBod2FjY2xfZW5hYmxlZCA9IG51bGxw
dHI7CistICBzdGF0dXMgPSBWVFNlc3Npb25Db3B5UHJvcGVydHkoX2NvbXByZXNzaW9uU2Vzc2lv
biwKKysgIGlmIChzdGF0dXMgPT0gbm9FcnIpIHsKKysgICAgc3RhdHVzID0gVlRTZXNzaW9uQ29w
eVByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9Vc2luZ0hhcmR3YXJlQWNjZWxlcmF0
ZWRWaWRlb0VuY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaHdhY2NsX2VuYWJsZWQpOwor
KyAgfQorICAgaWYgKHN0YXR1cyA9PSBub0VyciAmJiAoQ0ZCb29sZWFuR2V0VmFsdWUoaHdhY2Ns
X2VuYWJsZWQpKSkgeworICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJDb21wcmVzc2lvbiBzZXNz
aW9uIGNyZWF0ZWQgd2l0aCBodyBhY2NsIGVuYWJsZWQiOworICAgfSBlbHNlIHsKKyAgICAgUlRD
X0xPRyhMU19JTkZPKSA8PCAiQ29tcHJlc3Npb24gc2Vzc2lvbiBjcmVhdGVkIHdpdGggaHcgYWNj
bCBkaXNhYmxlZCI7CisrCisrI2lmICFFTkFCTEVfVkNQX0VOQ09ERVIgJiYgIWRlZmluZWQoV0VC
UlRDX0lPUykKKysgICAgaWYgKCFpc1N0YW5kYXJkRnJhbWVTaXplKF93aWR0aCwgX2hlaWdodCkp
IHsKKysgICAgICBfZGlzYWJsZUVuY29kaW5nID0gdHJ1ZTsKKysgICAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiVXNpbmcgSDI2NCBzb2Z0d2FyZSBlbmNvZGVyIHdpdGggbm9uIHN0YW5kYXJkIHNp
emUgaXMgbm90IHN1cHBvcnRlZCI7CisrICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19F
UlJPUjsKKysgICAgfQorKworKyAgICBpZiAoIWdldGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRp
b25fVXNhZ2UoKSkgeworKyAgICAgIF9kaXNhYmxlRW5jb2RpbmcgPSB0cnVlOworKyAgICAgIFJU
Q19MT0coTFNfRVJST1IpIDw8ICJSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IGNhbm5vdCBjcmVh
dGUgYSBIMjY0IHNvZnR3YXJlIGVuY29kZXIiOworKyAgICAgIHJldHVybiBXRUJSVENfVklERU9f
Q09ERUNfRVJST1I7CisrICAgIH0KKysKKysgICAgQ0ZEaWN0aW9uYXJ5UmVmIGlvU3VyZmFjZVZh
bHVlID0gQ3JlYXRlQ0ZUeXBlRGljdGlvbmFyeShudWxscHRyLCBudWxscHRyLCAwKTsKKysgICAg
aW50NjRfdCBwaXhlbEZvcm1hdFR5cGUgPSBmcmFtZVBpeGVsRm9ybWF0OworKyAgICBDRk51bWJl
clJlZiBwaXhlbEZvcm1hdCA9IENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsIGtDRk51bWJlckxvbmdU
eXBlLCAmcGl4ZWxGb3JtYXRUeXBlKTsKKysKKysgICAgY29uc3Qgc2l6ZV90IGF0dHJpYnV0ZXNT
aXplID0gMzsKKysgICAgQ0ZUeXBlUmVmIGtleXNbYXR0cmlidXRlc1NpemVdID0geworKyAgICAg
IGtDVlBpeGVsQnVmZmVyT3BlbkdMQ29tcGF0aWJpbGl0eUtleSwKKysgICAgICBrQ1ZQaXhlbEJ1
ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXksCisrICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZv
cm1hdFR5cGVLZXkKKysgICAgfTsKKysgICAgQ0ZUeXBlUmVmIHZhbHVlc1thdHRyaWJ1dGVzU2l6
ZV0gPSB7CisrICAgICAga0NGQm9vbGVhblRydWUsCisrICAgICAgaW9TdXJmYWNlVmFsdWUsCisr
ICAgICAgcGl4ZWxGb3JtYXR9OworKyAgICBDRkRpY3Rpb25hcnlSZWYgc291cmNlQXR0cmlidXRl
cyA9IENyZWF0ZUNGVHlwZURpY3Rpb25hcnkoa2V5cywgdmFsdWVzLCBhdHRyaWJ1dGVzU2l6ZSk7
CisrCisrICAgIGlmIChpb1N1cmZhY2VWYWx1ZSkgeworKyAgICAgIENGUmVsZWFzZShpb1N1cmZh
Y2VWYWx1ZSk7CisrICAgICAgaW9TdXJmYWNlVmFsdWUgPSBudWxscHRyOworKyAgICB9CisrICAg
IGlmIChwaXhlbEZvcm1hdCkgeworKyAgICAgIENGUmVsZWFzZShwaXhlbEZvcm1hdCk7CisrICAg
ICAgcGl4ZWxGb3JtYXQgPSBudWxscHRyOworKyAgICB9CisrCisrICAgIENGTXV0YWJsZURpY3Rp
b25hcnlSZWYgZW5jb2RlclNwZWNzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShudWxscHRy
LCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKTsKKysgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZW5jb2RlclNwZWNzLCBr
VlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRl
b0VuY29kZXIsIGtDRkJvb2xlYW5GYWxzZSk7CisrICAgIGludCB1c2FnZVZhbHVlID0gMTsKKysg
ICAgQ0ZOdW1iZXJSZWYgdXNhZ2UgPSBDRk51bWJlckNyZWF0ZShudWxscHRyLCBrQ0ZOdW1iZXJJ
bnRUeXBlLCAmdXNhZ2VWYWx1ZSk7CisrICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGVuY29kZXJT
cGVjcywgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWdldGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRp
b25fVXNhZ2UoKSwgdXNhZ2UpOworKworKyAgICBpZiAodXNhZ2UpIHsKKysgICAgICBDRlJlbGVh
c2UodXNhZ2UpOworKyAgICAgIHVzYWdlID0gbnVsbHB0cjsKKysgICAgfQorKworKyAgICBbc2Vs
ZiBkZXN0cm95Q29tcHJlc3Npb25TZXNzaW9uXTsKKysKKysgICAgT1NTdGF0dXMgc3RhdHVzID0K
KysgICAgICBDb21wcmVzc2lvblNlc3Npb25DcmVhdGUobnVsbHB0ciwgIC8vIHVzZSBkZWZhdWx0
IGFsbG9jYXRvcgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF93aWR0aCwKKysg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaGVpZ2h0LAorKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtDb2RlY1R5cGVIMjY0LAorKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuY29kZXJTcGVjcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzb3VyY2VBdHRyaWJ1dGVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsICAvLyB1c2UgZGVmYXVsdCBjb21wcmVzc2VkIGRhdGEgYWxsb2NhdG9yCisrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25PdXRwdXRDYWxsYmFjaywK
KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZfY29tcHJlc3Npb25TZXNzaW9uKTsKKysgICAgaWYgKHNv
dXJjZUF0dHJpYnV0ZXMpIHsKKysgICAgICBDRlJlbGVhc2Uoc291cmNlQXR0cmlidXRlcyk7Cisr
ICAgICAgc291cmNlQXR0cmlidXRlcyA9IG51bGxwdHI7CisrICAgIH0KKysgICAgaWYgKGVuY29k
ZXJTcGVjcykgeworKyAgICAgIENGUmVsZWFzZShlbmNvZGVyU3BlY3MpOworKyAgICAgIGVuY29k
ZXJTcGVjcyA9IG51bGxwdHI7CisrICAgIH0KKysgICAgaWYgKHN0YXR1cyAhPSBub0Vycikgewor
KyAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CisrICAgIH0KKysjZW5kaWYK
KyAgIH0KKyAjZW5kaWYKKyAgIFtzZWxmIGNvbmZpZ3VyZUNvbXByZXNzaW9uU2Vzc2lvbl07Cisg
CisrI2lmICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCisgICAvLyBUaGUgcGl4ZWwgYnVm
ZmVyIHBvb2wgaXMgZGVwZW5kZW50IG9uIHRoZSBjb21wcmVzc2lvbiBzZXNzaW9uIHNvIGlmIHRo
ZSBzZXNzaW9uIGlzIHJlc2V0LCB0aGUKKyAgIC8vIHBvb2wgc2hvdWxkIGJlIHJlc2V0IGFzIHdl
bGwuCistICBfcGl4ZWxCdWZmZXJQb29sID0gVlRDb21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1
ZmZlclBvb2woX2NvbXByZXNzaW9uU2Vzc2lvbik7CistCisrICBfcGl4ZWxCdWZmZXJQb29sID0g
Q29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sKF9jb21wcmVzc2lvblNlc3Npb24p
OworKyNlbmRpZgorICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKKyB9CisgCitAQCAt
NjE4LDcgKzc1MiwxMSBAQCAtICh2b2lkKWNvbmZpZ3VyZUNvbXByZXNzaW9uU2Vzc2lvbiB7Cisg
ICBTZXRWVFNlc3Npb25Qcm9wZXJ0eShfY29tcHJlc3Npb25TZXNzaW9uLCBrVlRDb21wcmVzc2lv
blByb3BlcnR5S2V5X1JlYWxUaW1lLCB0cnVlKTsKKyAgIFNldFZUU2Vzc2lvblByb3BlcnR5KF9j
b21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUHJvZmlsZUxldmVs
LCBfcHJvZmlsZSk7CisgICBTZXRWVFNlc3Npb25Qcm9wZXJ0eShfY29tcHJlc3Npb25TZXNzaW9u
LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0FsbG93RnJhbWVSZW9yZGVyaW5nLCBmYWxzZSk7
CistICBbc2VsZiBzZXRFbmNvZGVyQml0cmF0ZUJwczpfdGFyZ2V0Qml0cmF0ZUJwcyBmcmFtZVJh
dGU6X2VuY29kZXJGcmFtZVJhdGVdOworKyNpZiBFTkFCTEVfVkNQX0VOQ09ERVIKKysgIGlmIChh
dXRvIGtleSA9IGdldGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fVXNhZ2UoKSkKKysgICAg
ICBTZXRWVFNlc3Npb25Qcm9wZXJ0eShfY29tcHJlc3Npb25TZXNzaW9uLCAoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpa2V5LCAxKTsKKysjZW5kaWYKKysgIFtzZWxmIHNldEVuY29kZXJCaXRyYXRlQnBz
Ol90YXJnZXRCaXRyYXRlQnBzXTsKKyAgIC8vIFRPRE8odGtjaGluKTogTG9vayBhdCBlbnRyb3B5
IG1vZGUgYW5kIGNvbG9yc3BhY2UgbWF0cmljZXMuCisgICAvLyBUT0RPKHRrY2hpbik6IEludmVz
dGlnYXRlIHRvIHNlZSBpZiB0aGVyZSdzIGFueSB3YXkgdG8gbWFrZSB0aGlzIHdvcmsuCisgICAv
LyBNYXkgbmVlZCBpdCB0byBpbnRlcm9wIHdpdGggQW5kcm9pZC4gQ3VycmVudGx5IHRoaXMgY2Fs
bCBqdXN0IGZhaWxzLgorQEAgLTYzNSw3ICs3NzMsNyBAQCAtICh2b2lkKWNvbmZpZ3VyZUNvbXBy
ZXNzaW9uU2Vzc2lvbiB7CisgCisgLSAodm9pZClkZXN0cm95Q29tcHJlc3Npb25TZXNzaW9uIHsK
KyAgIGlmIChfY29tcHJlc3Npb25TZXNzaW9uKSB7CistICAgIFZUQ29tcHJlc3Npb25TZXNzaW9u
SW52YWxpZGF0ZShfY29tcHJlc3Npb25TZXNzaW9uKTsKKysgICAgQ29tcHJlc3Npb25TZXNzaW9u
SW52YWxpZGF0ZShfY29tcHJlc3Npb25TZXNzaW9uKTsKKyAgICAgQ0ZSZWxlYXNlKF9jb21wcmVz
c2lvblNlc3Npb24pOworICAgICBfY29tcHJlc3Npb25TZXNzaW9uID0gbnVsbHB0cjsKKyAgICAg
X3BpeGVsQnVmZmVyUG9vbCA9IG51bGxwdHI7CitAQCAtNjQ2LDE3ICs3ODQsMTUgQEAgLSAoTlNT
dHJpbmcgKilpbXBsZW1lbnRhdGlvbk5hbWUgeworICAgcmV0dXJuIEAiVmlkZW9Ub29sYm94IjsK
KyB9CisgCistLSAodm9pZClzZXRCaXRyYXRlQnBzOih1aW50MzJfdCliaXRyYXRlQnBzIGZyYW1l
UmF0ZToodWludDMyX3QpZnJhbWVSYXRlIHsKKy0gIGlmIChfZW5jb2RlckJpdHJhdGVCcHMgIT0g
Yml0cmF0ZUJwcyB8fCBfZW5jb2RlckZyYW1lUmF0ZSAhPSBmcmFtZVJhdGUpIHsKKy0gICAgW3Nl
bGYgc2V0RW5jb2RlckJpdHJhdGVCcHM6Yml0cmF0ZUJwcyBmcmFtZVJhdGU6ZnJhbWVSYXRlXTsK
KystICh2b2lkKXNldEJpdHJhdGVCcHM6KHVpbnQzMl90KWJpdHJhdGVCcHMgeworKyAgaWYgKF9l
bmNvZGVyQml0cmF0ZUJwcyAhPSBiaXRyYXRlQnBzKSB7CisrICAgIFtzZWxmIHNldEVuY29kZXJC
aXRyYXRlQnBzOmJpdHJhdGVCcHNdOworICAgfQorIH0KKyAKKy0tICh2b2lkKXNldEVuY29kZXJC
aXRyYXRlQnBzOih1aW50MzJfdCliaXRyYXRlQnBzIGZyYW1lUmF0ZToodWludDMyX3QpZnJhbWVS
YXRlIHsKKystICh2b2lkKXNldEVuY29kZXJCaXRyYXRlQnBzOih1aW50MzJfdCliaXRyYXRlQnBz
IHsKKyAgIGlmIChfY29tcHJlc3Npb25TZXNzaW9uKSB7CisgICAgIFNldFZUU2Vzc2lvblByb3Bl
cnR5KF9jb21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfQXZlcmFn
ZUJpdFJhdGUsIGJpdHJhdGVCcHMpOworLSAgICBTZXRWVFNlc3Npb25Qcm9wZXJ0eSgKKy0gICAg
ICAgIF9jb21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0
ZWRGcmFtZVJhdGUsIGZyYW1lUmF0ZSk7CisgCisgICAgIC8vIFRPRE8odGtjaGluKTogQWRkIGEg
aGVscGVyIG1ldGhvZCB0byBzZXQgYXJyYXkgdmFsdWUuCisgICAgIGludDY0X3QgZGF0YUxpbWl0
Qnl0ZXNQZXJTZWNvbmRWYWx1ZSA9CitAQCAtNjY4LDcgKzgwNCw3IEBAIC0gKHZvaWQpc2V0RW5j
b2RlckJpdHJhdGVCcHM6KHVpbnQzMl90KWJpdHJhdGVCcHMgZnJhbWVSYXRlOih1aW50MzJfdClm
cmFtZVJhdGUKKyAgICAgICAgIENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlclNJbnQ2NFR5cGUsICZvbmVTZWNvbmRWYWx1ZSk7CisgICAgIGNvbnN0IHZvaWQgKm51
bXNbMl0gPSB7Ynl0ZXNQZXJTZWNvbmQsIG9uZVNlY29uZH07CisgICAgIENGQXJyYXlSZWYgZGF0
YVJhdGVMaW1pdHMgPSBDRkFycmF5Q3JlYXRlKG51bGxwdHIsIG51bXMsIDIsICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpOworLSAgICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25TZXRQcm9wZXJ0
eSgKKysgICAgT1NTdGF0dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNzaW9uU2V0UHJvcGVydHko
CisgICAgICAgICBfY29tcHJlc3Npb25TZXNzaW9uLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5
X0RhdGFSYXRlTGltaXRzLCBkYXRhUmF0ZUxpbWl0cyk7CisgICAgIGlmIChieXRlc1BlclNlY29u
ZCkgeworICAgICAgIENGUmVsZWFzZShieXRlc1BlclNlY29uZCk7CitAQCAtNjgwLDExICs4MTYs
MTAgQEAgLSAodm9pZClzZXRFbmNvZGVyQml0cmF0ZUJwczoodWludDMyX3QpYml0cmF0ZUJwcyBm
cmFtZVJhdGU6KHVpbnQzMl90KWZyYW1lUmF0ZQorICAgICAgIENGUmVsZWFzZShkYXRhUmF0ZUxp
bWl0cyk7CisgICAgIH0KKyAgICAgaWYgKHN0YXR1cyAhPSBub0VycikgeworLSAgICAgIFJUQ19M
T0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gc2V0IGRhdGEgcmF0ZSBsaW1pdCB3aXRoIGNvZGU6
ICIgPDwgc3RhdHVzOworKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gc2V0
IGRhdGEgcmF0ZSBsaW1pdCI7CisgICAgIH0KKyAKKyAgICAgX2VuY29kZXJCaXRyYXRlQnBzID0g
Yml0cmF0ZUJwczsKKy0gICAgX2VuY29kZXJGcmFtZVJhdGUgPSBmcmFtZVJhdGU7CisgICB9Cisg
fQorIAorQEAgLTY5OCw3ICs4MzMsNyBAQCAtICh2b2lkKWZyYW1lV2FzRW5jb2RlZDooT1NTdGF0
dXMpc3RhdHVzCisgICAgICAgICAgICAgICB0aW1lc3RhbXA6KHVpbnQzMl90KXRpbWVzdGFtcAor
ICAgICAgICAgICAgICAgIHJvdGF0aW9uOihSVENWaWRlb1JvdGF0aW9uKXJvdGF0aW9uIHsKKyAg
IGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKKy0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkgyNjQg
ZW5jb2RlIGZhaWxlZCB3aXRoIGNvZGU6ICIgPDwgc3RhdHVzOworKyAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiSDI2NCBlbmNvZGUgZmFpbGVkOiAiIDw8IHN0YXR1czsKKyAgICAgcmV0dXJuOwor
ICAgfQorICAgaWYgKGluZm9GbGFncyAmIGtWVEVuY29kZUluZm9fRnJhbWVEcm9wcGVkKSB7CitA
QCAtNzQzLDYgKzg3OCw3IEBAIC0gKHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1cylzdGF0
dXMKKyAgIGZyYW1lLnJvdGF0aW9uID0gcm90YXRpb247CisgICBmcmFtZS5jb250ZW50VHlwZSA9
IChfbW9kZSA9PSBSVENWaWRlb0NvZGVjTW9kZVNjcmVlbnNoYXJpbmcpID8gUlRDVmlkZW9Db250
ZW50VHlwZVNjcmVlbnNoYXJlIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVENWaWRlb0NvbnRlbnRUeXBlVW5zcGVj
aWZpZWQ7CisrICBmcmFtZS5zcGF0aWFsSW5kZXggPSBfc2ltdWxjYXN0SW5kZXg7CisgICBmcmFt
ZS5mbGFncyA9IHdlYnJ0Yzo6VmlkZW9TZW5kVGltaW5nOjprSW52YWxpZDsKKyAKKyAgIGludCBx
cDsKK0BAIC03NTgsOSArODk0LDg4IEBAIC0gKHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1
cylzdGF0dXMKKyAgIF9iaXRyYXRlQWRqdXN0ZXItPlVwZGF0ZShmcmFtZS5idWZmZXIubGVuZ3Ro
KTsKKyB9CisgCistLSAobnVsbGFibGUgUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzICopc2Nh
bGluZ1NldHRpbmdzIHsKKy0gIHJldHVybiBbW1JUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyBh
bGxvY10gaW5pdFdpdGhUaHJlc2hvbGRzTG93OmtMb3dIMjY0UXBUaHJlc2hvbGQKKy0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
aWdoOmtIaWdoSDI2NFFwVGhyZXNob2xkXTsKKystIChSVENWaWRlb0VuY29kZXJRcFRocmVzaG9s
ZHMgKilzY2FsaW5nU2V0dGluZ3MgeworKyAgcmV0dXJuIFtbUlRDVmlkZW9FbmNvZGVyUXBUaHJl
c2hvbGRzIGFsbG9jXSBpbml0V2l0aFRocmVzaG9sZHNMb3c6a0xvd0gyNjRRcFRocmVzaG9sZCBo
aWdoOmtIaWdoSDI2NFFwVGhyZXNob2xkXTsKKyt9CisrCisrLSAoaW50KXNldFJhdGVBbGxvY2F0
aW9uOihSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uICopYWxsb2NhdGlvbiBmcmFtZXJhdGU6KHVp
bnQzMl90KWZyYW1lcmF0ZSB7CisrICByZXR1cm4gMDsKKyt9CisrCisrQGVuZAorKworK0BpbXBs
ZW1lbnRhdGlvbiBSVENWaWRlb0VuY29kZXJIMjY0IHsKKysgIE5TTXV0YWJsZUFycmF5PFJUQ1Np
bmdsZVZpZGVvRW5jb2RlckgyNjQqPiAqX2NvZGVjczsKKysgIFJUQ1ZpZGVvQ29kZWNJbmZvICpf
Y29kZWNJbmZvOworK30KKystIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlY0luZm86KFJUQ1Zp
ZGVvQ29kZWNJbmZvICopY29kZWNJbmZvIHsKKysgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7
CisrICAgIF9jb2RlY0luZm8gPSBjb2RlY0luZm87CisrICB9CisrICByZXR1cm4gc2VsZjsKKyt9
CisrCisrLSAodm9pZClzZXRDYWxsYmFjazooUlRDVmlkZW9FbmNvZGVyQ2FsbGJhY2spY2FsbGJh
Y2sgeworKyAgZm9yIChSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICpjb2RlYyA6IF9jb2RlY3Mp
CisrICAgIFtjb2RlYyBzZXRDYWxsYmFjazpjYWxsYmFja107CisrfQorKworKy0gKE5TSW50ZWdl
cilzdGFydEVuY29kZVdpdGhTZXR0aW5nczooUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MgKilzZXR0
aW5ncyBudW1iZXJPZkNvcmVzOihpbnQpbnVtYmVyT2ZDb3JlcyB7CisrICAgIGF1dG8gbmF0aXZl
Q29kZWNTZXR0aW5ncyA9IHNldHRpbmdzLm5hdGl2ZVZpZGVvQ29kZWM7CisrCisrICBfY29kZWNz
ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisrICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMCA7IGluZGV4IDwgbmF0aXZlQ29kZWNTZXR0aW5ncy5udW1iZXJPZlNpbXVsY2FzdFN0cmVh
bXM7ICsraW5kZXgpIHsKKysgICAgYXV0byBjb2RlYyA9IFtbUlRDU2luZ2xlVmlkZW9FbmNvZGVy
SDI2NCBhbGxvY10gaW5pdFdpdGhDb2RlY0luZm86X2NvZGVjSW5mbyBzaW11bGNhc3RJbmRleDpp
bmRleF07CisrICAgIFtfY29kZWNzIGFkZE9iamVjdDpjb2RlY107CisrCisrICAgIGF1dG8gY29k
ZWNTZXR0aW5ncyA9IG5hdGl2ZUNvZGVjU2V0dGluZ3M7CisrICAgIGNvZGVjU2V0dGluZ3Mud2lk
dGggPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNpbXVsY2FzdFN0cmVhbVtpbmRleF0ud2lkdGg7Cisr
ICAgIGNvZGVjU2V0dGluZ3MuaGVpZ2h0ID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNhc3RT
dHJlYW1baW5kZXhdLmhlaWdodDsKKysgICAgY29kZWNTZXR0aW5ncy5tYXhCaXRyYXRlID0gbmF0
aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNhc3RTdHJlYW1baW5kZXhdLm1heEJpdHJhdGU7CisrICAg
IGNvZGVjU2V0dGluZ3MudGFyZ2V0Qml0cmF0ZSA9IG5hdGl2ZUNvZGVjU2V0dGluZ3Muc2ltdWxj
YXN0U3RyZWFtW2luZGV4XS50YXJnZXRCaXRyYXRlOworKyAgICBjb2RlY1NldHRpbmdzLm1pbkJp
dHJhdGUgPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNpbXVsY2FzdFN0cmVhbVtpbmRleF0ubWluQml0
cmF0ZTsKKysgICAgY29kZWNTZXR0aW5ncy5xcE1heCA9IG5hdGl2ZUNvZGVjU2V0dGluZ3Muc2lt
dWxjYXN0U3RyZWFtW2luZGV4XS5xcE1heDsKKysgICAgY29kZWNTZXR0aW5ncy5hY3RpdmUgPSB0
cnVlOworKworKyAgICBhdXRvICpzZXR0aW5ncyA9IFtbUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3Mg
YWxsb2NdIGluaXRXaXRoTmF0aXZlVmlkZW9Db2RlYzomY29kZWNTZXR0aW5nc107CisrICAgIFtj
b2RlYyBzdGFydEVuY29kZVdpdGhTZXR0aW5nczpzZXR0aW5ncyBudW1iZXJPZkNvcmVzOm51bWJl
ck9mQ29yZXNdOworKyAgfQorKyAgcmV0dXJuIDA7CisrfQorKworKy0gKE5TSW50ZWdlcilyZWxl
YXNlRW5jb2RlciB7CisrICBmb3IgKFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgKmNvZGVjIDog
X2NvZGVjcykKKysgICAgW2NvZGVjIHJlbGVhc2VFbmNvZGVyXTsKKysgIF9jb2RlY3MgPSBuaWw7
CisrICByZXR1cm4gMDsKKyt9CisrCisrLSAoTlNJbnRlZ2VyKWVuY29kZTooUlRDVmlkZW9GcmFt
ZSAqKWZyYW1lIGNvZGVjU3BlY2lmaWNJbmZvOihudWxsYWJsZSBpZDxSVENDb2RlY1NwZWNpZmlj
SW5mbz4paW5mbyBmcmFtZVR5cGVzOihOU0FycmF5PE5TTnVtYmVyICo+ICopZnJhbWVUeXBlcyB7
CisrICBpbnQgcmVzdWx0ID0gMDsKKysgIGZvciAoUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCAq
Y29kZWMgOiBfY29kZWNzKQorKyAgICByZXN1bHQgfD0gW2NvZGVjIGVuY29kZTpmcmFtZSBjb2Rl
Y1NwZWNpZmljSW5mbzppbmZvIGZyYW1lVHlwZXM6ZnJhbWVUeXBlc107CisrICByZXR1cm4gcmVz
dWx0OworK30KKysKKystIChpbnQpc2V0UmF0ZUFsbG9jYXRpb246KFJUQ1ZpZGVvQml0cmF0ZUFs
bG9jYXRpb24gKiliaXRSYXRlQWxsb2NhdGlvbiBmcmFtZXJhdGU6KHVpbnQzMl90KSBmcmFtZXJh
dGUgeworKyAgaW50IHJlc3VsdCA9IDA7CisrICB1bnNpZ25lZCBjb3VudGVyID0gMDsKKysgIGF1
dG8gbmF0aXZlQml0UmF0ZUFsbG9jYXRpb24gPSBiaXRSYXRlQWxsb2NhdGlvbi5uYXRpdmVWaWRl
b0JpdHJhdGVBbGxvY2F0aW9uOworKyAgZm9yIChSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICpj
b2RlYyA6IF9jb2RlY3MpCisrICAgIHJlc3VsdCB8PSBbY29kZWMgc2V0Qml0cmF0ZTpuYXRpdmVC
aXRSYXRlQWxsb2NhdGlvbi5HZXRTcGF0aWFsTGF5ZXJTdW0oY291bnRlcisrKSBmcmFtZXJhdGU6
ZnJhbWVyYXRlXTsKKysgIHJldHVybiByZXN1bHQ7CisrfQorKworKy0gKE5TU3RyaW5nICopaW1w
bGVtZW50YXRpb25OYW1lIHsKKysgIHJldHVybiBAIlZpZGVvVG9vbGJveCI7CisrfQorKworKy0g
KFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyAqKXNjYWxpbmdTZXR0aW5ncyB7CisrICByZXR1
cm4gW1tSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMgYWxsb2NdIGluaXRXaXRoVGhyZXNob2xk
c0xvdzprTG93SDI2NFFwVGhyZXNob2xkIGhpZ2g6a0hpZ2hIMjY0UXBUaHJlc2hvbGRdOworK30K
KysKKystIChpbnQpc2V0Qml0cmF0ZToodWludDMyX3QpYml0cmF0ZUtiaXQgZnJhbWVyYXRlOih1
aW50MzJfdClmcmFtZXJhdGUgeworKyAgcmV0dXJuIDA7CisgfQorIAorIEBlbmQKK2RpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9j
b21wb25lbnRzL3ZpZGVvX2NvZGVjL1VJRGV2aWNlK0gyNjRQcm9maWxlLm1tIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRl
b19jb2RlYy9VSURldmljZStIMjY0UHJvZmlsZS5tbQoraW5kZXggODUyYzNkNDcwMmYuLmEwMTVm
N2NhMTVjIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9VSURldmljZStIMjY0UHJvZmls
ZS5tbQorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9VSURldmljZStIMjY0UHJvZmlsZS5tbQorQEAg
LTI0LDkgKzI0LDYgQEAgc3RydWN0IFN1cHBvcnRlZEgyNjRQcm9maWxlIHsKKyAKKyBjb25zdGV4
cHIgU3VwcG9ydGVkSDI2NFByb2ZpbGUga0gyNjRNYXhTdXBwb3J0ZWRQcm9maWxlc1tdID0gewor
ICAgICAvLyBpUGhvbmVzIHdpdGggYXQgbGVhc3QgaU9TIDkKKy0gICAge1JUQ0RldmljZVR5cGVJ
UGhvbmVYUywge2tQcm9maWxlSGlnaCwga0xldmVsNV8yfX0sICAgICAgLy8gaHR0cHM6Ly9zdXBw
b3J0LmFwcGxlLmNvbS9rYi9TUDc3OQorLSAgICB7UlRDRGV2aWNlVHlwZUlQaG9uZVhTTWF4LCB7
a1Byb2ZpbGVIaWdoLCBrTGV2ZWw1XzJ9fSwgICAvLyBodHRwczovL3N1cHBvcnQuYXBwbGUuY29t
L2tiL1NQNzgwCistICAgIHtSVENEZXZpY2VUeXBlSVBob25lWFIsIHtrUHJvZmlsZUhpZ2gsIGtM
ZXZlbDVfMn19LCAgICAgIC8vIGh0dHBzOi8vc3VwcG9ydC5hcHBsZS5jb20va2IvU1A3ODEKKyAg
ICAge1JUQ0RldmljZVR5cGVJUGhvbmVYLCB7a1Byb2ZpbGVIaWdoLCBrTGV2ZWw1XzJ9fSwgICAg
ICAgLy8gaHR0cHM6Ly9zdXBwb3J0LmFwcGxlLmNvbS9rYi9TUDc3MAorICAgICB7UlRDRGV2aWNl
VHlwZUlQaG9uZTgsIHtrUHJvZmlsZUhpZ2gsIGtMZXZlbDVfMn19LCAgICAgICAvLyBodHRwczov
L3N1cHBvcnQuYXBwbGUuY29tL2tiL1NQNzY3CisgICAgIHtSVENEZXZpY2VUeXBlSVBob25lOFBs
dXMsIHtrUHJvZmlsZUhpZ2gsIGtMZXZlbDVfMn19LCAgIC8vIGh0dHBzOi8vc3VwcG9ydC5hcHBs
ZS5jb20va2IvU1A3NjgKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuY2MKK2luZGV4IGFjOTU3ZjFiNDk3Li40NmRhZjQ0
ZWNhYyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5jYworKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9oZWxwZXJzLmNjCitAQCAtMzUsMTIgKzM1LDEyIEBAIHN0ZDo6c3RyaW5n
IENGU3RyaW5nVG9TdHJpbmcoY29uc3QgQ0ZTdHJpbmdSZWYgY2Zfc3RyaW5nKSB7CisgfQorIAor
IC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGEgVlQgcHJvcGVydHkuCistdm9p
ZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKKyt2b2lkIFNldFZU
U2Vzc2lvblByb3BlcnR5KENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYga2V5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCB2YWx1ZSkgeworICAgQ0ZOdW1iZXJSZWYgY2ZOdW0gPQorICAgICAgIENG
TnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZ2
YWx1ZSk7CistICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShzZXNzaW9u
LCBrZXksIGNmTnVtKTsKKysgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9uU2Vzc2lvblNl
dFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZOdW0pOworICAgQ0ZSZWxlYXNlKGNmTnVtKTsKKyAg
IGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgc3RkOjpzdHJpbmcga2V5X3N0cmluZyA9IENG
U3RyaW5nVG9TdHJpbmcoa2V5KTsKK0BAIC01MCwxMyArNTAsMTMgQEAgdm9pZCBTZXRWVFNlc3Np
b25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKKyB9CisgCisgLy8gQ29udmVuaWVuY2Ug
ZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KKy12b2lkIFNldFZUU2Vzc2lvblBy
b3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAorK3ZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHko
Q29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDRlN0cmluZ1JlZiBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2
YWx1ZSkgeworICAgaW50NjRfdCB2YWx1ZV82NCA9IHZhbHVlOworICAgQ0ZOdW1iZXJSZWYgY2ZO
dW0gPQorICAgICAgIENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJl
clNJbnQ2NFR5cGUsICZ2YWx1ZV82NCk7CistICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25T
ZXRQcm9wZXJ0eShzZXNzaW9uLCBrZXksIGNmTnVtKTsKKysgIE9TU3RhdHVzIHN0YXR1cyA9IENv
bXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZOdW0pOworICAgQ0ZS
ZWxlYXNlKGNmTnVtKTsKKyAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgc3RkOjpzdHJp
bmcga2V5X3N0cmluZyA9IENGU3RyaW5nVG9TdHJpbmcoa2V5KTsKK0BAIC02Niw5ICs2Niw5IEBA
IHZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sCisgfQorIAor
IC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGEgVlQgcHJvcGVydHkuCistdm9p
ZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYg
a2V5LCBib29sIHZhbHVlKSB7Cisrdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lv
blNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBib29sIHZhbHVlKSB7CisgICBD
RkJvb2xlYW5SZWYgY2ZfYm9vbCA9ICh2YWx1ZSkgPyBrQ0ZCb29sZWFuVHJ1ZSA6IGtDRkJvb2xl
YW5GYWxzZTsKKy0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHNlc3Np
b24sIGtleSwgY2ZfYm9vbCk7CisrICBPU1N0YXR1cyBzdGF0dXMgPSBDb21wcmVzc2lvblNlc3Np
b25TZXRQcm9wZXJ0eShzZXNzaW9uLCBrZXksIGNmX2Jvb2wpOworICAgaWYgKHN0YXR1cyAhPSBu
b0VycikgeworICAgICBzdGQ6OnN0cmluZyBrZXlfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyhr
ZXkpOworICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlRTZXNzaW9uU2V0UHJvcGVydHkgZmFp
bGVkIHRvIHNldDogIiA8PCBrZXlfc3RyaW5nCitAQCAtNzcsMTAgKzc3LDEwIEBAIHZvaWQgU2V0
VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwg
Ym9vbCB2YWx1ZSkgeworIH0KKyAKKyAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGlu
ZyBhIFZUIHByb3BlcnR5LgorLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVm
IHNlc3Npb24sCisrdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25S
ZWYgc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGtleSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIHZhbHVlKSB7CistICBPU1N0
YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShzZXNzaW9uLCBrZXksIHZhbHVlKTsK
KysgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5KHNlc3Np
b24sIGtleSwgdmFsdWUpOworICAgaWYgKHN0YXR1cyAhPSBub0VycikgeworICAgICBzdGQ6OnN0
cmluZyBrZXlfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyhrZXkpOworICAgICBzdGQ6OnN0cmlu
ZyB2YWxfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyh2YWx1ZSk7CitkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9oZWxwZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuaAoraW5k
ZXggMDY4M2VhNzllNTYuLjBjNjY5ZThiY2U2IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9oZWxwZXJzLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5oCitAQCAtMTYsNiAr
MTYsOCBAQAorICNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+CisgI2luY2x1
ZGUgPHN0cmluZz4KKyAKKysjaW5jbHVkZSAic2RrL1dlYktpdC9FbmNvZGVyVXRpbGl0aWVzLmgi
CisrCisgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgZGljdGlvbmFyeS4K
KyBpbmxpbmUgQ0ZEaWN0aW9uYXJ5UmVmIENyZWF0ZUNGVHlwZURpY3Rpb25hcnkoQ0ZUeXBlUmVm
KiBrZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
RlR5cGVSZWYqIHZhbHVlcywKK0BAIC0yOSwxOCArMzEsMTggQEAgaW5saW5lIENGRGljdGlvbmFy
eVJlZiBDcmVhdGVDRlR5cGVEaWN0aW9uYXJ5KENGVHlwZVJlZioga2V5cywKKyBzdGQ6OnN0cmlu
ZyBDRlN0cmluZ1RvU3RyaW5nKGNvbnN0IENGU3RyaW5nUmVmIGNmX3N0cmluZyk7CisgCisgLy8g
Q29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KKy12b2lkIFNl
dFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXks
IGludDMyX3QgdmFsdWUpOworK3ZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25T
ZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwgaW50MzJfdCB2YWx1ZSk7CisgCisg
Ly8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KKy12b2lk
IFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAorK3ZvaWQgU2V0VlRT
ZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBrZXksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCB2YWx1ZSk7CisgCisgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNl
dHRpbmcgYSBWVCBwcm9wZXJ0eS4KKy12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lv
blJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIGJvb2wgdmFsdWUpOworK3ZvaWQgU2V0VlRT
ZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVm
IGtleSwgYm9vbCB2YWx1ZSk7CisgCisgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRp
bmcgYSBWVCBwcm9wZXJ0eS4KKy12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJl
ZiBzZXNzaW9uLAorK3ZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9u
UmVmIHNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBrZXks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZSk7CisgCitkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvbmF0aXZlL3NyYy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY192
aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KK2luZGV4IGZhZmFkNzQ2NmVjLi5hZTQ1MDMzYTU3MCAx
MDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL25hdGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KKysrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9z
cmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KK0BAIC05MCw2ICs5MCwxMSBAQCBjbGFz
cyBPYmpDVmlkZW9FbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CisgICAgIHJldHVybiBb
ZW5jb2Rlcl8gc2V0Qml0cmF0ZTpiaXRyYXRlIGZyYW1lcmF0ZTpmcmFtZXJhdGVdOworICAgfQor
IAorKyAgaW50MzJfdCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0
aW9uJiBhbGxvY2F0aW9uLCB1aW50MzJfdCBmcmFtZXJhdGUpIHsKKysgICAgYXV0byAqcnRjQWxs
b2NhdGlvbiA9IFtbUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBhbGxvY10gaW5pdFdpdGhOYXRp
dmVWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOiZhbGxvY2F0aW9uXTsKKysgICAgcmV0dXJuIFtlbmNv
ZGVyXyBzZXRSYXRlQWxsb2NhdGlvbjogcnRjQWxsb2NhdGlvbiBmcmFtZXJhdGU6ZnJhbWVyYXRl
XTsKKysgIH0KKysKKyAgIFZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8o
KSBjb25zdCB7CisgICAgIEVuY29kZXJJbmZvIGluZm87CisgICAgIGluZm8uc3VwcG9ydHNfbmF0
aXZlX2hhbmRsZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmE1
NGJkYjAwNzhhNGI4MDA1YTMxYmVmZWQxMGY5Y2M2M2I0ZGUzYS4uMjI5NDY3MDE3ZmVhNmJjNWUz
MWFiNThjMGZiMzUzMTVjODI4OTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtODEsNyArODEsNiBAQAogCQk0MTI5NDA5MzIxMkUxMjhEMDBBRDk1RTcgLyogbGlidnB4X3Zw
OF9lbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTI5NDA4RjIxMkUxMjhDMDBBRDk1RTcgLyogbGlidnB4X3ZwOF9lbmNvZGVyLmggKi87IH07
CiAJCTQxMjk0MDk0MjEyRTEyOEQwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2RlY29kZXIuY2MgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NDA5MDIxMkUx
MjhDMDBBRDk1RTcgLyogbGlidnB4X3ZwOF9kZWNvZGVyLmNjICovOyB9OwogCQk0MTI5NDA5NTIx
MkUxMjhEMDBBRDk1RTcgLyogbGlidnB4X3ZwOF9kZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NDA5MTIxMkUxMjhDMDBBRDk1RTcgLyog
bGlidnB4X3ZwOF9kZWNvZGVyLmggKi87IH07Ci0JCTQxMjk5QjhCMjEyNzM2NTEwMEIzNDE0QiAv
KiBwYWNlcl9jb250cm9sbGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFFMDJDRDYyMTI3MzYzQzAwQzI3Q0Q2IC8qIHBhY2VyX2NvbnRyb2xsZXIu
Y2MgKi87IH07CiAJCTQxMjk5QjhDMjEyNzM2NTEwMEIzNDE0QiAvKiBzZW5kX3RpbWVfaGlzdG9y
eS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTAy
Q0Q4MjEyNzM2M0QwMEMyN0NENiAvKiBzZW5kX3RpbWVfaGlzdG9yeS5jYyAqLzsgfTsKIAkJNDEy
OTlCOEQyMTI3MzY1MTAwQjM0MTRCIC8qIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUwMkNENzIxMjcz
NjNDMDBDMjdDRDYgLyogdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaCAqLzsgfTsKIAkJNDEy
OTlCOTEyMTI3MzY3QjAwQjM0MTRCIC8qIGlzYWNfdmFkLmMgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5OUI4RTIxMjczNjdBMDBCMzQxNEIgLyogaXNh
Y192YWQuYyAqLzsgfTsKQEAgLTE0Miw3ICsxNDEsNiBAQAogCQk0MTNBMjJBMTFGRTE4RTA2MDAz
NzNFOTkgLyogdGVzdGJhc2U2NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDEzQTIxNDQxRkUxOEQ0QzAwMzczRTk5IC8qIHRlc3RiYXNlNjQuaCAqLzsg
fTsKIAkJNDEzQTIyQTIxRkUxOEUwNjAwMzczRTk5IC8qIGZ1bmN0aW9uX3ZpZXcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMTQ1MUZFMThENEMw
MDM3M0U5OSAvKiBmdW5jdGlvbl92aWV3LmggKi87IH07CiAJCTQxM0EyMkEzMUZFMThFMDYwMDM3
M0U5OSAvKiBmb3JtYXRfbWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTNBMjE0NzFGRTE4RDREMDAzNzNFOTkgLyogZm9ybWF0X21hY3Jvcy5o
ICovOyB9OwotCQk0MTNBMjJBNDFGRTE4RTA2MDAzNzNFOTkgLyogdW5peGZpbGVzeXN0ZW0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMTQ4MUZF
MThENEQwMDM3M0U5OSAvKiB1bml4ZmlsZXN5c3RlbS5oICovOyB9OwogCQk0MTNBMjJBNTFGRTE4
RTA2MDAzNzNFOTkgLyogdGVzdGVjaG9zZXJ2ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjE0OTFGRTE4RDRFMDAzNzNFOTkgLyogdGVzdGVj
aG9zZXJ2ZXIuY2MgKi87IH07CiAJCTQxM0EyMkE3MUZFMThFMDYwMDM3M0U5OSAvKiBwcm94eXNl
cnZlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
M0EyMTRDMUZFMThENEYwMDM3M0U5OSAvKiBwcm94eXNlcnZlci5jYyAqLzsgfTsKIAkJNDEzQTIy
QTgxRkUxOEUwNjAwMzczRTk5IC8qIGFzeW5jaW52b2tlci1pbmwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMTREMUZFMThENTAwMDM3M0U5OSAv
KiBhc3luY2ludm9rZXItaW5sLmggKi87IH07CkBAIC0yMjgsMTYgKzIyNiwxMyBAQAogCQk0MTNB
MjMzODFGRTE4RTA3MDAzNzNFOTkgLyogbWFjdXRpbHMuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFFNDFGRTE4REIwMDAzNzNFOTkgLyogbWFj
dXRpbHMuY2MgKi87IH07CiAJCTQxM0EyMzM5MUZFMThFMDcwMDM3M0U5OSAvKiB0YXNrX3F1ZXVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFF
NTFGRTE4REIxMDAzNzNFOTkgLyogdGFza19xdWV1ZS5oICovOyB9OwogCQk0MTNBMjMzQjFGRTE4
RTA3MDAzNzNFOTkgLyogYml0YnVmZmVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRTcxRkUxOERCMTAwMzczRTk5IC8qIGJpdGJ1ZmZlci5j
YyAqLzsgfTsKLQkJNDEzQTIzM0MxRkUxOEUwNzAwMzczRTk5IC8qIHBhdGh1dGlscy5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUU4MUZFMThE
QjIwMDM3M0U5OSAvKiBwYXRodXRpbHMuY2MgKi87IH07CiAJCTQxM0EyMzNEMUZFMThFMDcwMDM3
M0U5OSAvKiBwaHlzaWNhbHNvY2tldHNlcnZlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUU5MUZFMThEQjIwMDM3M0U5OSAvKiBwaHlzaWNh
bHNvY2tldHNlcnZlci5jYyAqLzsgfTsKIAkJNDEzQTIzM0UxRkUxOEUwNzAwMzczRTk5IC8qIGJ5
dGVvcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzQTIxRUExRkUxOERCMzAwMzczRTk5IC8qIGJ5dGVvcmRlci5oICovOyB9OwogCQk0MTNBMjM0
MjFGRTE4RTA3MDAzNzNFOTkgLyogdGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFFRTFGRTE4REI0MDAzNzNFOTkgLyogdGhyZWFkLmgg
Ki87IH07CiAJCTQxM0EyMzQzMUZFMThFMDcwMDM3M0U5OSAvKiBjcmMzMi5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUVGMUZFMThEQjUwMDM3
M0U5OSAvKiBjcmMzMi5jYyAqLzsgfTsKLQkJNDEzQTIzNDUxRkUxOEUwNzAwMzczRTk5IC8qIG9w
dGlvbnNmaWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTNBMjFGMTFGRTE4REI2MDAzNzNFOTkgLyogb3B0aW9uc2ZpbGUuaCAqLzsgfTsKIAkJNDEz
QTIzNDcxRkUxOEUwNzAwMzczRTk5IC8qIHN3YXBfcXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUYzMUZFMThEQjcwMDM3M0U5OSAvKiBz
d2FwX3F1ZXVlLmggKi87IH07CiAJCTQxM0EyMzQ4MUZFMThFMDcwMDM3M0U5OSAvKiBkc2NwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFGNDFG
RTE4REI3MDAzNzNFOTkgLyogZHNjcC5oICovOyB9OwogCQk0MTNBMjM0OTFGRTE4RTA3MDAzNzNF
OTkgLyogdGltZXV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTNBMjFGNTFGRTE4REI3MDAzNzNFOTkgLyogdGltZXV0aWxzLmggKi87IH07Ci0J
CTQxM0EyMzRBMUZFMThFMDcwMDM3M0U5OSAvKiBvcHRpb25zZmlsZS5jYyBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUY2MUZFMThEQjgwMDM3M0U5
OSAvKiBvcHRpb25zZmlsZS5jYyAqLzsgfTsKIAkJNDEzQTIzNEIxRkUxOEUwNzAwMzczRTk5IC8q
IHR5cGVfdHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTNBMjFGNzFGRTE4REI4MDAzNzNFOTkgLyogdHlwZV90cmFpdHMuaCAqLzsgfTsKIAkJ
NDEzQTIzNEMxRkUxOEUwNzAwMzczRTk5IC8qIHJhbmRvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRjgxRkUxOERCOTAwMzczRTk5IC8qIHJh
bmRvbS5oICovOyB9OwogCQk0MTNBMjM0RDFGRTE4RTA3MDAzNzNFOTkgLyogc29ja2V0YWRkcmVz
c3BhaXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNBMjFGOTFGRTE4REI5MDAzNzNFOTkgLyogc29ja2V0YWRkcmVzc3BhaXIuY2MgKi87IH07CkBA
IC0yNTUsNyArMjUwLDYgQEAKIAkJNDEzQTIzNUMxRkUxOEUwNzAwMzczRTk5IC8qIGJpbmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjA5MUZF
MThEQzAwMDM3M0U5OSAvKiBiaW5kLmggKi87IH07CiAJCTQxM0EyMzVEMUZFMThFMDcwMDM3M0U5
OSAvKiBndW5pdF9wcm9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTNBMjIwQTFGRTE4REMwMDAzNzNFOTkgLyogZ3VuaXRfcHJvZC5oICovOyB9Owog
CQk0MTNBMjM1RTFGRTE4RTA3MDAzNzNFOTkgLyogYXN5bmNzb2NrZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjBCMUZFMThEQzEwMDM3M0U5
OSAvKiBhc3luY3NvY2tldC5oICovOyB9OwotCQk0MTNBMjM1RjFGRTE4RTA3MDAzNzNFOTkgLyog
bm9vcC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
M0EyMjBDMUZFMThEQzEwMDM3M0U5OSAvKiBub29wLmNjICovOyB9OwogCQk0MTNBMjM2MDFGRTE4
RTA3MDAzNzNFOTkgLyogcmF0ZV9saW1pdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjIwRDFGRTE4REMyMDAzNzNFOTkgLyogcmF0ZV9saW1p
dGVyLmggKi87IH07CiAJCTQxM0EyMzYxMUZFMThFMDcwMDM3M0U5OSAvKiBzb2NrZXRhZGFwdGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIy
MEUxRkUxOERDMjAwMzczRTk5IC8qIHNvY2tldGFkYXB0ZXJzLmggKi87IH07CiAJCTQxM0EyMzYy
MUZFMThFMDcwMDM3M0U5OSAvKiByYXRldHJhY2tlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjBGMUZFMThEQzIwMDM3M0U5OSAvKiByYXRl
dHJhY2tlci5jYyAqLzsgfTsKQEAgLTI4Nyw3ICsyODEsNiBAQAogCQk0MTNBMjM4RDFGRTE4RTA3
MDAzNzNFOTkgLyogcmF0ZV9saW1pdGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyM0ExRkUxOEREODAwMzczRTk5IC8qIHJhdGVfbGltaXRl
ci5jYyAqLzsgfTsKIAkJNDEzQTIzOEUxRkUxOEUwNzAwMzczRTk5IC8qIGJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyM0IxRkUxOERE
OTAwMzczRTk5IC8qIGJ1ZmZlci5oICovOyB9OwogCQk0MTNBMjM4RjFGRTE4RTA3MDAzNzNFOTkg
LyogZXZlbnRfdHJhY2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEzQTIyM0MxRkUxOEREOTAwMzczRTk5IC8qIGV2ZW50X3RyYWNlci5jYyAqLzsg
fTsKLQkJNDEzQTIzOTAxRkUxOEUwODAwMzczRTk5IC8qIHBhdGh1dGlscy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyM0QxRkUxOEREOTAwMzcz
RTk5IC8qIHBhdGh1dGlscy5oICovOyB9OwogCQk0MTNBMjM5MjFGRTE4RTA4MDAzNzNFOTkgLyog
c3Nscm9vdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxM0EyMjNGMUZFMThEREEwMDM3M0U5OSAvKiBzc2xyb290cy5oICovOyB9OwogCQk0MTNBMjM5
NTFGRTE4RTA4MDAzNzNFOTkgLyogaHR0cGNvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNDIxRkUxOEREQjAwMzczRTk5IC8qIGh0dHBj
b21tb24uaCAqLzsgfTsKIAkJNDEzQTIzOTYxRkUxOEUwODAwMzczRTk5IC8qIGFzeW5jc29ja2V0
LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIy
NDMxRkUxOEREQzAwMzczRTk5IC8qIGFzeW5jc29ja2V0LmNjICovOyB9OwpAQCAtMzA2LDEyICsy
OTksMTAgQEAKIAkJNDEzQTIzQUUxRkUxOEUwODAwMzczRTk5IC8qIHNlcXVlbmNlZF90YXNrX2No
ZWNrZXJfaW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzQTIyNUIxRkUxOERFNjAwMzczRTk5IC8qIHNlcXVlbmNlZF90YXNrX2NoZWNrZXJfaW1w
bC5oICovOyB9OwogCQk0MTNBMjNBRjFGRTE4RTA4MDAzNzNFOTkgLyogc3NsZmluZ2VycHJpbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjVD
MUZFMThERTYwMDM3M0U5OSAvKiBzc2xmaW5nZXJwcmludC5oICovOyB9OwogCQk0MTNBMjNCMTFG
RTE4RTA4MDAzNzNFOTkgLyogc3RyaW5naXplX21hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNUUxRkUxOERFNzAwMzczRTk5IC8qIHN0
cmluZ2l6ZV9tYWNyb3MuaCAqLzsgfTsKLQkJNDEzQTIzQjUxRkUxOEUwODAwMzczRTk5IC8qIGZp
bGV1dGlscy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxM0EyMjYyMUZFMThERTkwMDM3M0U5OSAvKiBmaWxldXRpbHMuY2MgKi87IH07CiAJCTQxM0Ey
M0I3MUZFMThFMDgwMDM3M0U5OSAvKiBldmVudC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjY0MUZFMThERUIwMDM3M0U5OSAvKiBldmVudC5j
YyAqLzsgfTsKIAkJNDEzQTIzQjkxRkUxOEUwODAwMzczRTk5IC8qIHNvY2tldHNlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNjYxRkUx
OERFQzAwMzczRTk5IC8qIHNvY2tldHNlcnZlci5oICovOyB9OwogCQk0MTNBMjNCQTFGRTE4RTA4
MDAzNzNFOTkgLyogc2lnc2xvdHRlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNjcxRkUxOERFQzAwMzczRTk5IC8qIHNpZ3Nsb3R0ZXN0
ZXIuaCAqLzsgfTsKIAkJNDEzQTIzQkMxRkUxOEUwODAwMzczRTk5IC8qIGZsYWdzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI2OTFGRTE4REVG
MDAzNzNFOTkgLyogZmxhZ3MuaCAqLzsgfTsKLQkJNDEzQTIzQkQxRkUxOEUwODAwMzczRTk5IC8q
IGZpbGV1dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzQTIyNkExRkUxOERGMDAwMzczRTk5IC8qIGZpbGV1dGlscy5oICovOyB9OwogCQk0MTNB
MjNCRTFGRTE4RTA4MDAzNzNFOTkgLyogbG9nc2lua3MuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI2QjFGRTE4REYwMDAzNzNFOTkgLyogbG9n
c2lua3MuY2MgKi87IH07CiAJCTQxM0EyM0MwMUZFMThFMDgwMDM3M0U5OSAvKiBudWxsc29ja2V0
c2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNBMjI2RDFGRTE4REYxMDAzNzNFOTkgLyogbnVsbHNvY2tldHNlcnZlci5oICovOyB9OwogCQk0
MTNBMjNDMTFGRTE4RTA4MDAzNzNFOTkgLyogc3Nsc3RyZWFtYWRhcHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNkUxRkUxOERGMTAwMzcz
RTk5IC8qIHNzbHN0cmVhbWFkYXB0ZXIuaCAqLzsgfTsKQEAgLTMzMSw3ICszMjIsNiBAQAogCQk0
MTNBMjNEODFGRTE4RTA4MDAzNzNFOTkgLyogZmlsZV9wb3NpeC5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjg1MUZFMThERkMwMDM3M0U5OSAv
KiBmaWxlX3Bvc2l4LmNjICovOyB9OwogCQk0MTNBMjNEOTFGRTE4RTA4MDAzNzNFOTkgLyogdGVz
dHV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNBMjI4NjFGRTE4REZDMDAzNzNFOTkgLyogdGVzdHV0aWxzLmggKi87IH07CiAJCTQxM0EyM0RB
MUZFMThFMDgwMDM3M0U5OSAvKiBmaWxlcm90YXRpbmdzdHJlYW0uY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI4NzFGRTE4REZEMDAzNzNFOTkg
LyogZmlsZXJvdGF0aW5nc3RyZWFtLmNjICovOyB9OwotCQk0MTNBMjNERDFGRTE4RTA4MDAzNzNF
OTkgLyogdGhyZWFkX2Rhcndpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxM0EyMjhBMUZFMThERkUwMDM3M0U5OSAvKiB0aHJlYWRfZGFyd2luLm1t
ICovOyB9OwogCQk0MTNBMjNERTFGRTE4RTA4MDAzNzNFOTkgLyogdGFza19xdWV1ZV9nY2QuY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI4QjFG
RTE4REZFMDAzNzNFOTkgLyogdGFza19xdWV1ZV9nY2QuY2MgKi87IH07CiAJCTQxM0EyM0RGMUZF
MThFMDgwMDM3M0U5OSAvKiBmaXJld2FsbHNvY2tldHNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyOEMxRkUxOERGRTAwMzczRTk5IC8q
IGZpcmV3YWxsc29ja2V0c2VydmVyLmggKi87IH07CiAJCTQxM0EyM0UyMUZFMThFMDgwMDM3M0U5
OSAvKiBjcHVfdGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzQTIyOTAxRkUxOEUwMDAwMzczRTk5IC8qIGNwdV90aW1lLmggKi87IH07CkBAIC0z
NDIsNyArMzMyLDYgQEAKIAkJNDEzQTIzRUIxRkUxOEUwODAwMzczRTk5IC8qIGxvY2F0aW9uLmNj
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyOTkx
RkUxOEUwMzAwMzczRTk5IC8qIGxvY2F0aW9uLmNjICovOyB9OwogCQk0MTNBMjNFQzFGRTE4RTA4
MDAzNzNFOTkgLyogbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxM0EyMjlBMUZFMThFMDQwMDM3M0U5OSAvKiBsb2NhdGlvbi5oICovOyB9
OwogCQk0MTNBMjNFRDFGRTE4RTA4MDAzNzNFOTkgLyogaXBhZGRyZXNzLmNjIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyOUIxRkUxOEUwNDAwMzcz
RTk5IC8qIGlwYWRkcmVzcy5jYyAqLzsgfTsKLQkJNDEzQTIzRUUxRkUxOEUwODAwMzczRTk5IC8q
IG5vb3AubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNBMjI5QzFGRTE4RTA0MDAzNzNFOTkgLyogbm9vcC5tbSAqLzsgfTsKIAkJNDEzQTIzRUYxRkUx
OEUwODAwMzczRTk5IC8qIHJhY2VfY2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyOUQxRkUxOEUwNTAwMzczRTk5IC8qIHJhY2VfY2hl
Y2tlci5oICovOyB9OwogCQk0MTNBMjNGMTFGRTE4RTA4MDAzNzNFOTkgLyogc3NsZmluZ2VycHJp
bnQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNB
MjI5RjFGRTE4RTA2MDAzNzNFOTkgLyogc3NsZmluZ2VycHJpbnQuY2MgKi87IH07CiAJCTQxM0Ey
M0YyMUZFMThFMDgwMDM3M0U5OSAvKiBieXRlYnVmZmVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyQTAxRkUxOEUwNjAwMzczRTk5IC8qIGJ5
dGVidWZmZXIuY2MgKi87IH07CkBAIC00MTIsMTEgKzQwMSw4IEBACiAJCTQxM0U2NzZEMjE2OTg1
NEIwMEVGMzdFRCAvKiBSVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTU0MDAyMTY5ODUxRjAwMjgy
NjZCIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0gKi87IH07CiAJCTQxM0U2Nzcy
MjE2OTg2M0IwMEVGMzdFRCAvKiB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzZFMjE2OTg2M0EwMEVG
MzdFRCAvKiB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYyAqLzsgfTsKIAkJNDEzRTY3NzMyMTY5
ODYzQjAwRUYzN0VEIC8qIGxpYnZweF9pbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzZGMjE2OTg2M0EwMEVGMzdFRCAvKiBsaWJ2
cHhfaW50ZXJmYWNlLmggKi87IH07Ci0JCTQxM0U2Nzc0MjE2OTg2M0IwMEVGMzdFRCAvKiB2cDhf
dGVtcG9yYWxfbGF5ZXJzLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEzRTY3NzAyMTY5ODYzQjAwRUYzN0VEIC8qIHZwOF90ZW1wb3JhbF9sYXllcnMu
Y2MgKi87IH07CiAJCTQxM0U2Nzc1MjE2OTg2M0IwMEVGMzdFRCAvKiBsaWJ2cHhfaW50ZXJmYWNl
LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3
NzEyMTY5ODYzQjAwRUYzN0VEIC8qIGxpYnZweF9pbnRlcmZhY2UuY2MgKi87IH07CiAJCTQxM0U2
Nzc2MjE2OTg2NjEwMEVGMzdFRCAvKiBSVENWaWRlb0NvZGVjQ29uc3RhbnRzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTUzRkYyMTY5ODUxRjAw
MjgyNjZCIC8qIFJUQ1ZpZGVvQ29kZWNDb25zdGFudHMubW0gKi87IH07Ci0JCTQxM0U2Nzc5MjE2
OTg2N0EwMEVGMzdFRCAvKiBjaGFubmVsX3JlY2VpdmVfcHJveHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2Nzc3MjE2OTg2N0EwMEVGMzdFRCAv
KiBjaGFubmVsX3JlY2VpdmVfcHJveHkuaCAqLzsgfTsKLQkJNDEzRTY3N0EyMTY5ODY3QTAwRUYz
N0VEIC8qIGNoYW5uZWxfcmVjZWl2ZV9wcm94eS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2Nzc4MjE2OTg2N0EwMEVGMzdFRCAvKiBjaGFubmVs
X3JlY2VpdmVfcHJveHkuY2MgKi87IH07CiAJCTQxM0U2NzdEMjE2OTg2QUUwMEVGMzdFRCAvKiBy
dHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3N0IyMTY5ODZBRDAwRUYzN0VEIC8qIHJ0cF9oZWFkZXJf
ZXh0ZW5zaW9uX3NpemUuY2MgKi87IH07CiAJCTQxM0U2NzdFMjE2OTg2QUUwMEVGMzdFRCAvKiBy
dHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc3QzIxNjk4NkFFMDBFRjM3RUQgLyogcnRwX2hlYWRlcl9l
eHRlbnNpb25fc2l6ZS5oICovOyB9OwogCQk0MTNFNjc4MTIxNjk4NzBGMDBFRjM3RUQgLyogc3Zj
X2NvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzRTY3N0YyMTY5ODcwRjAwRUYzN0VEIC8qIHN2Y19jb25maWcuaCAqLzsgfTsKQEAgLTQzNCw3
ICs0MjAsNiBAQAogCQk0MTNFNjc5QjIxNjk4ODYyMDBFRjM3RUQgLyogYWdjMl9jb21tb24uY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc5QTIx
Njk4ODYyMDBFRjM3RUQgLyogYWdjMl9jb21tb24uY2MgKi87IH07CiAJCTQxM0U2N0EwMjE2OTg4
OTUwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzlDMjE2OTg4OTQwMEVGMzdF
RCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaCAqLzsgfTsKIAkJNDEzRTY3QTEyMTY5
ODg5NTAwRUYzN0VEIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzlEMjE2OTg4OTQwMEVGMzdF
RCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLmggKi87IH07Ci0JCTQxM0U2N0EyMjE2OTg4
OTUwMEVGMzdFRCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc5RTIxNjk4ODk0MDBFRjM3RUQg
LyogUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tICovOyB9OwogCQk0MTNFNjdBMzIxNjk4ODk1
MDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc5RjIxNjk4ODk1MDBFRjM3RUQg
LyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLm0gKi87IH07CiAJCTQxM0U2N0E1MjE2OTg4
REMwMEVGMzdFRCAvKiB2aWRlb19zdHJlYW1fZW5jb2Rlcl9vYnNlcnZlci5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2N0E0MjE2OTg4REMwMEVG
MzdFRCAvKiB2aWRlb19zdHJlYW1fZW5jb2Rlcl9vYnNlcnZlci5jYyAqLzsgfTsKIAkJNDE0MEI4
MjAxRTRFMzM4MzAwNzQwOUU2IC8qIGF1ZGlvX2VuY29kZXJfcGNtLmNjIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0MEI4MTgxRTRFMzM4MzAwNzQwOUU2
IC8qIGF1ZGlvX2VuY29kZXJfcGNtLmNjICovOyB9OwpAQCAtNTI1LDcgKzUxMCw2IEBACiAJCTQx
NDVFNEM2MUVGODk2RDcwMEZDRjZFNiAvKiBydGNzdGF0c3JlcG9ydC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NUU0QzIxRUY4OTZDRTAwRkNGNkU2
IC8qIHJ0Y3N0YXRzcmVwb3J0LmggKi87IH07CiAJCTQxNDVFNEM3MUVGODk2RDcwMEZDRjZFNiAv
KiBydGNzdGF0c19vYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTQ1RTRDMzFFRjg5NkQyMDBGQ0Y2RTYgLyogcnRjc3RhdHNfb2JqZWN0cy5o
ICovOyB9OwogCQk0MTQ1RTRDODFFRjg5NkQ3MDBGQ0Y2RTYgLyogcnRjc3RhdHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDVFNEM0MUVGODk2RDcw
MEZDRjZFNiAvKiBydGNzdGF0cy5oICovOyB9OwotCQk0MTQ1RTRDQTFFRjhDQjMyMDBGQ0Y2RTYg
LyogY3JlYXRlcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NUU0QzkxRUY4Q0IzMTAwRkNGNkU2IC8qIGNyZWF0
ZXBlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyAqLzsgfTsKIAkJNDE0NUU0Q0MxRUY4Q0I4QjAwRkNG
NkU2IC8qIHJ0cHRyYW5zcG9ydC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNDVFNENCMUVGOENCOEEwMEZDRjZFNiAvKiBydHB0cmFuc3BvcnQuY2Mg
Ki87IH07CiAJCTQxNDVFNENFMUVGOENCOTUwMEZDRjZFNiAvKiBydHB0cmFuc3BvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDVFNENEMUVGOENC
OTQwMEZDRjZFNiAvKiBydHB0cmFuc3BvcnQuaCAqLzsgfTsKIAkJNDE0NUU0RDExRUY4Q0MyMDAw
RkNGNkU2IC8qIHdlYnJ0Y3ZpZGVvZW5naW5lLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NUU0Q0YxRUY4Q0MxNzAwRkNGNkU2IC8qIHdlYnJ0Y3Zp
ZGVvZW5naW5lLmNjICovOyB9OwpAQCAtNTYxLDcgKzU0NSw2IEBACiAJCTQxNUYxRkFFMjEyNzJG
QkEwMDA2NENCRiAvKiBmaXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCREYyMTI3MkY4NDAwMUQ1
RDdCIC8qIGZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmggKi87IH07CiAJCTQxNUYxRkFG
MjEyNzJGQkEwMDA2NENCRiAvKiBnYWluX2FwcGxpZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJERTIxMjcyRjg0MDAxRDVEN0IgLyogZ2Fp
bl9hcHBsaWVyLmNjICovOyB9OwogCQk0MTVGMUZCMDIxMjcyRkJBMDAwNjRDQkYgLyogZ2Fpbl9h
cHBsaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUEwOEJFNzIxMjcyRjg2MDAxRDVEN0IgLyogZ2Fpbl9hcHBsaWVyLmggKi87IH07Ci0JCTQxNUYx
RkIxMjEyNzJGQkEwMDA2NENCRiAvKiBnYWluX2N1cnZlX2FwcGxpZXIuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJFMDIxMjcyRjg1MDAxRDVE
N0IgLyogZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmNjICovOyB9OwogCQk0MTVGMUZCMjIxMjcyRkJBMDAw
NjRDQkYgLyogaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJFMTIxMjcyRjg1MDAxRDVEN0IgLyogaW50
ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MgKi87IH07CiAJCTQxNUYxRkIzMjEyNzJGQkEwMDA2NENC
RiAvKiBsaW1pdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUEwOEJFQTIxMjcyRjg2MDAxRDVEN0IgLyogbGltaXRlci5oICovOyB9OwogCQk0MTVG
MUZCNDIxMjcyRkJBMDAwNjRDQkYgLyogbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJFMjIxMjcyRjg1
MDAxRDVEN0IgLyogbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmggKi87IH07CkBAIC02NDYsOSAr
NjI5LDYgQEAKIAkJNDE2RDNCRTAyMTI3MzFDMjAwNzc1RjA5IC8qIGJpcXVhZF9maWx0ZXIuY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQ2QjQ1RTIx
MjczMUEwMDA4RjkzNTMgLyogYmlxdWFkX2ZpbHRlci5jYyAqLzsgfTsKIAkJNDE2RDNCRTEyMTI3
MzFDMjAwNzc1RjA5IC8qIGJpcXVhZF9maWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZCNDYzMjEyNzMxQTIwMDhGOTM1MyAvKiBiaXF1YWRf
ZmlsdGVyLmggKi87IH07CiAJCTQxNkQzQkUyMjEyNzMxQzIwMDc3NUYwOSAvKiBkb3duX3NhbXBs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZC
NDYwMjEyNzMxQTEwMDhGOTM1MyAvKiBkb3duX3NhbXBsZXIuaCAqLzsgfTsKLQkJNDE2RDNCRTMy
MTI3MzFDMjAwNzc1RjA5IC8qIGZpeGVkX2dhaW5fY29udHJvbGxlci5jYyBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZCNDY1MjEyNzMxQTIwMDhGOTM1
MyAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIuY2MgKi87IH07Ci0JCTQxNkQzQkU0MjEyNzMxQzIw
MDc3NUYwOSAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZCNDY3MjEyNzMxQTMwMDhGOTM1MyAvKiBmaXhl
ZF9nYWluX2NvbnRyb2xsZXIuaCAqLzsgfTsKLQkJNDE2RDNCRTUyMTI3MzFDMjAwNzc1RjA5IC8q
IGdhaW5fY3VydmVfYXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFENkI0NjkyMTI3MzFBMzAwOEY5MzUzIC8qIGdhaW5fY3VydmVfYXBwbGll
ci5oICovOyB9OwogCQk0MTZEM0JFNjIxMjczMUMyMDA3NzVGMDkgLyogbGltaXRlci5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZCNDcwMjEyNzMx
QTYwMDhGOTM1MyAvKiBsaW1pdGVyLmNjICovOyB9OwogCQk0MTZEM0JFNzIxMjczMUMyMDA3NzVG
MDkgLyogbm9pc2VfbGV2ZWxfZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENkI0NjEyMTI3MzFBMTAwOEY5MzUzIC8qIG5vaXNlX2xl
dmVsX2VzdGltYXRvci5jYyAqLzsgfTsKIAkJNDE2RDNCRTgyMTI3MzFDMjAwNzc1RjA5IC8qIG5v
aXNlX3NwZWN0cnVtX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRDZCNDZBMjEyNzMxQTMwMDhGOTM1MyAvKiBub2lzZV9zcGVjdHJ1
bV9lc3RpbWF0b3IuY2MgKi87IH07CkBAIC02ODMsOSArNjYzLDcgQEAKIAkJNDE3OTUzQ0MyMTY5
ODJEQjAwMjgyNjZCIC8qIFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjIyNUVEMjE2OTgxRjIwMEE5MUM5
QiAvKiBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQubW0gKi87IH07CiAJCTQxNzk1M0QzMjE2OTgz
NEYwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5NTNDRDIxNjk4MzRFMDAyODI2NkIgLyogY2hhbm5lbF9z
ZW5kLmNjICovOyB9OwogCQk0MTc5NTNENDIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9zZW5k
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5NTND
RTIxNjk4MzRFMDAyODI2NkIgLyogY2hhbm5lbF9zZW5kLmggKi87IH07Ci0JCTQxNzk1M0Q1MjE2
OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmRfcHJveHkuY2MgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5NTNDRjIxNjk4MzRFMDAyODI2NkIgLyog
Y2hhbm5lbF9zZW5kX3Byb3h5LmNjICovOyB9OwogCQk0MTc5NTNENjIxNjk4MzRGMDAyODI2NkIg
LyogY2hhbm5lbF9yZWNlaXZlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTc5NTNEMDIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9yZWNlaXZlLmgg
Ki87IH07Ci0JCTQxNzk1M0Q3MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmRfcHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzk1M0Qx
MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmRfcHJveHkuaCAqLzsgfTsKIAkJNDE3OTUz
RDgyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfcmVjZWl2ZS5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzk1M0QyMjE2OTgzNEYwMDI4MjY2QiAv
KiBjaGFubmVsX3JlY2VpdmUuY2MgKi87IH07CiAJCTQxNzk1M0RCMjE2OTgzOTEwMDI4MjY2QiAv
KiBtZXRyaWNzLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE3OTUzRDkyMTY5ODM5MDAwMjgyNjZCIC8qIG1ldHJpY3MuY2MgKi87IH07CiAJCTQxNzk1
M0RDMjE2OTgzOTEwMDI4MjY2QiAvKiBmaWVsZF90cmlhbC5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzk1M0RBMjE2OTgzOTAwMDI4MjY2QiAvKiBm
aWVsZF90cmlhbC5jYyAqLzsgfTsKQEAgLTc1Miw3ICs3MzAsNiBAQAogCQk0MTkyNDE1NDIxMjcz
NzZGMDA2MzRGQ0YgLyogYmFzaWNhc3luY3Jlc29sdmVyZmFjdG9yeS5jYyBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MTRBMjEyNzM3NkQwMDYzNEZD
RiAvKiBiYXNpY2FzeW5jcmVzb2x2ZXJmYWN0b3J5LmNjICovOyB9OwogCQk0MTkyNDE1NTIxMjcz
NzZGMDA2MzRGQ0YgLyogcmVnYXRoZXJpbmdjb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE0QjIxMjczNzZEMDA2MzRGQ0YgLyog
cmVnYXRoZXJpbmdjb250cm9sbGVyLmggKi87IH07CiAJCTQxOTI0MTU2MjEyNzM3NkYwMDYzNEZD
RiAvKiBmYWtlY2FuZGlkYXRlcGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE5MjQxNEMyMTI3Mzc2RTAwNjM0RkNGIC8qIGZha2VjYW5kaWRhdGVw
YWlyLmggKi87IH07Ci0JCTQxOTI0MTU3MjEyNzM3NkYwMDYzNEZDRiAvKiB1ZHB0cmFuc3BvcnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MTRE
MjEyNzM3NkUwMDYzNEZDRiAvKiB1ZHB0cmFuc3BvcnQuaCAqLzsgfTsKIAkJNDE5MjQxNTgyMTI3
Mzc2RjAwNjM0RkNGIC8qIGZha2VwYWNrZXR0cmFuc3BvcnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MTRFMjEyNzM3NkUwMDYzNEZDRiAvKiBm
YWtlcGFja2V0dHJhbnNwb3J0LmggKi87IH07CiAJCTQxOTI0MTU5MjEyNzM3NkYwMDYzNEZDRiAv
KiBmYWtlaWNldHJhbnNwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTkyNDE0RjIxMjczNzZFMDA2MzRGQ0YgLyogZmFrZWljZXRyYW5zcG9ydC5o
ICovOyB9OwogCQk0MTkyNDE1QTIxMjczNzZGMDA2MzRGQ0YgLyogaWNldHJhbnNwb3J0aW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0
MTUwMjEyNzM3NkUwMDYzNEZDRiAvKiBpY2V0cmFuc3BvcnRpbnRlcm5hbC5oICovOyB9OwpAQCAt
Nzc3LDcgKzc1NCw2IEBACiAJCTQxOTI0MTgyMjEyNzQ5NzEwMDYzNEZDRiAvKiBiYWRfdmFyaWFu
dF9hY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxOTI0MTgwMjEyNzQ5NzEwMDYzNEZDRiAvKiBiYWRfdmFyaWFudF9hY2Nlc3MuaCAqLzsgfTsK
IAkJNDE5MjQxOEIyMTI3NDlDODAwNjM0RkNGIC8qIHNlbmRfdGltZV9oaXN0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE4NzIxMjc0OUM3
MDA2MzRGQ0YgLyogc2VuZF90aW1lX2hpc3RvcnkuaCAqLzsgfTsKIAkJNDE5MjQxOEMyMTI3NDlD
ODAwNjM0RkNGIC8qIHNlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE4ODIxMjc0OUM3MDA2
MzRGQ0YgLyogc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYyAqLzsgfTsKLQkJNDE5
MjQxOEQyMTI3NDlDODAwNjM0RkNGIC8qIHBhY2VyX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MTg5MjEyNzQ5QzgwMDYzNEZD
RiAvKiBwYWNlcl9jb250cm9sbGVyLmggKi87IH07CiAJCTQxOTI0MThFMjEyNzQ5QzgwMDYzNEZD
RiAvKiB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MThBMjEyNzQ5QzgwMDYzNEZDRiAvKiB0cmFu
c3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYyAqLzsgfTsKIAkJNDE5MjQxOTAyMTI3NTgxMDAwNjM0
RkNGIC8qIGZlY19wcml2YXRlX3RhYmxlc19idXJzdHkuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTkyNDE4RjIxMjc1ODEwMDA2MzRGQ0YgLyogZmVj
X3ByaXZhdGVfdGFibGVzX2J1cnN0eS5jYyAqLzsgfTsKIAkJNDE5MjQxOTgyMTI3NTg2NTAwNjM0
RkNGIC8qIHJubl92YWRfd2VpZ2h0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE5MjQxOTMyMTI3NTg2NDAwNjM0RkNGIC8qIHJubl92YWRfd2VpZ2h0
cy5oICovOyB9OwpAQCAtODkxLDggKzg2Nyw2IEBACiAJCTQxOUM4MzI1MUZFMjQ1MjgwMDQwQzMw
RiAvKiBydGNfZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzMjMxRkUyNDUyODAwNDBDMzBGIC8qIHJ0
Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmggKi87IH07CiAJCTQxOUM4MzJFMUZFMjQ1Q0Qw
MDQwQzMwRiAvKiBwYWNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE5QzgzMjgxRkUyNDVDQjAwNDBDMzBGIC8qIHBhY2VyLmggKi87IH07CiAJCTQx
OUM4MzMxMUZFMjQ1Q0QwMDQwQzMwRiAvKiBpbnRlcnZhbF9idWRnZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4MzJCMUZFMjQ1Q0MwMDQwQzMw
RiAvKiBpbnRlcnZhbF9idWRnZXQuaCAqLzsgfTsKLQkJNDE5QzgzMzQxRkUyNDVFQTAwNDBDMzBG
IC8qIHRpbWVfaW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxOUM4MzMyMUZFMjQ1RTkwMDQwQzMwRiAvKiB0aW1lX2ludGVydmFsLmggKi87
IH07Ci0JCTQxOUM4MzM1MUZFMjQ1RUEwMDQwQzMwRiAvKiB0aW1lX2ludGVydmFsLmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzMzMxRkUyNDVF
OTAwNDBDMzBGIC8qIHRpbWVfaW50ZXJ2YWwuY2MgKi87IH07CiAJCTQxOUM4MzNDMUZFMjQ2MjMw
MDQwQzMwRiAvKiBhdWRpb19lbmNvZGVyX2c3MjJfY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlDODMzNzFGRTI0NjIyMDA0MEMzMEYgLyog
YXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZy5oICovOyB9OwogCQk0MTlDODMzRDFGRTI0NjIzMDA0
MEMzMEYgLyogYXVkaW9fZGVjb2Rlcl9nNzIyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlDODMzODFGRTI0NjIyMDA0MEMzMEYgLyogYXVkaW9fZGVj
b2Rlcl9nNzIyLmggKi87IH07CiAJCTQxOUM4MzNFMUZFMjQ2MjMwMDQwQzMwRiAvKiBhdWRpb19l
bmNvZGVyX2c3MjIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTlDODMzOTFGRTI0NjIyMDA0MEMzMEYgLyogYXVkaW9fZW5jb2Rlcl9nNzIyLmNjICov
OyB9OwpAQCAtOTY1LDcgKzkzOSw2IEBACiAJCTQxOUM4M0Q5MUZFMjQ3RjIwMDQwQzMwRiAvKiBw
YWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE5QzgzRDAxRkUyNDdFRjAwNDBDMzBGIC8qIHBhY2tldHRyYW5zcG9y
dGludGVybmFsLmggKi87IH07CiAJCTQxOUM4M0RBMUZFMjQ3RjIwMDQwQzMwRiAvKiBwYWNrZXR0
cmFuc3BvcnRpbnRlcm5hbC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxOUM4M0QxMUZFMjQ3RjAwMDQwQzMwRiAvKiBwYWNrZXR0cmFuc3BvcnRpbnRl
cm5hbC5jYyAqLzsgfTsKIAkJNDE5QzgzREIxRkUyNDdGMjAwNDBDMzBGIC8qIHBvcnRpbnRlcmZh
Y2UuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlD
ODNEMjFGRTI0N0YwMDA0MEMzMEYgLyogcG9ydGludGVyZmFjZS5jYyAqLzsgfTsKLQkJNDE5Qzgz
REMxRkUyNDdGMjAwNDBDMzBGIC8qIHVkcHRyYW5zcG9ydC5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4M0QzMUZFMjQ3RjAwMDQwQzMwRiAvKiB1
ZHB0cmFuc3BvcnQuY2MgKi87IH07CiAJCTQxOUM4M0REMUZFMjQ3RjIwMDQwQzMwRiAvKiBkdGxz
dHJhbnNwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTlDODNENDFGRTI0N0YxMDA0MEMzMEYgLyogZHRsc3RyYW5zcG9ydC5oICovOyB9OwogCQk0
MTlDODNERTFGRTI0N0YyMDA0MEMzMEYgLyogZHRsc3RyYW5zcG9ydGludGVybmFsLmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzRDUxRkUyNDdG
MTAwNDBDMzBGIC8qIGR0bHN0cmFuc3BvcnRpbnRlcm5hbC5jYyAqLzsgfTsKIAkJNDE5QzgzREYx
RkUyNDdGMjAwNDBDMzBGIC8qIGR0bHN0cmFuc3BvcnRpbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzRDYxRkUyNDdGMTAwNDBDMzBG
IC8qIGR0bHN0cmFuc3BvcnRpbnRlcm5hbC5oICovOyB9OwpAQCAtMTA3OCw4ICsxMDUxLDYgQEAK
IAkJNDFBMDhCRDAyMTI3MkVFMjAwMUQ1RDdCIC8qIGdhaW5fY29udHJvbGxlcjIuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJDRTIxMjcyRUUx
MDAxRDVEN0IgLyogZ2Fpbl9jb250cm9sbGVyMi5jYyAqLzsgfTsKIAkJNDFBMDhCRDMyMTI3MkVG
QTAwMUQ1RDdCIC8qIHJvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCRDEyMTI3MkVGQTAwMUQ1RDdCIC8q
IHJvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5oICovOyB9OwogCQk0MUEwOEJENDIxMjcyRUZBMDAx
RDVEN0IgLyogcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCRDIyMTI3MkVGQTAwMUQ1RDdCIC8qIHJv
dW5kX3JvYmluX3BhY2tldF9xdWV1ZS5jYyAqLzsgfTsKLQkJNDFBMDhCRDcyMTI3MkYxRDAwMUQ1
RDdCIC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4QkQ1MjEyNzJGMUMwMDFE
NUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmggKi87IH07Ci0J
CTQxQTA4QkQ4MjEyNzJGMUQwMDFENUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19j
b250cm9sbGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFBMDhCRDYyMTI3MkYxQzAwMUQ1RDdCIC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNr
X2NvbnRyb2xsZXIuY2MgKi87IH07CiAJCTQxQTM5MTczMUVGQzQ0N0MwMEM0NTE2QSAvKiBzaGEx
LWFsdGl2ZWMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxQTM5MTRGMUVGQzQ0NkUwMEM0NTE2QSAvKiBzaGExLWFsdGl2ZWMuYyAqLzsgfTsKIAkJNDFB
MzkxNzQxRUZDNDQ3QzAwQzQ1MTZBIC8qIHNoYTEuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTM5MTUwMUVGQzQ0NkUwMEM0NTE2QSAvKiBzaGExLmMg
Ki87IH07CiAJCTQxQTM5MTc1MUVGQzQ0N0MwMEM0NTE2QSAvKiBzaGEyNTYuYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTM5MTUxMUVGQzQ0NkUwMEM0
NTE2QSAvKiBzaGEyNTYuYyAqLzsgfTsKQEAgLTEzNjgsNyArMTMzOSw2IEBACiAJCTQxRTAyQ0E2
MjEyNzM1MkQwMEMyN0NENiAvKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTAyQzkyMjEyNzM1
MkEwMEMyN0NENiAvKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCAqLzsgfTsKIAkJ
NDFFMDJDQTcyMTI3MzUyRDAwQzI3Q0Q2IC8qIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUwMkM5MzIxMjcz
NTJBMDBDMjdDRDYgLyogcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuaCAqLzsgfTsKIAkJNDFFMDJD
QTgyMTI3MzUyRDAwQzI3Q0Q2IC8qIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTAyQzk0MjEy
NzM1MkEwMEMyN0NENiAvKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuY2MgKi87IH07
Ci0JCTQxRTAyQ0E5MjEyNzM1MkQwMEMyN0NENiAvKiBnb29nX2NjX2ZhY3RvcnkuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUwMkM5NTIxMjczNTJB
MDBDMjdDRDYgLyogZ29vZ19jY19mYWN0b3J5LmNjICovOyB9OwogCQk0MUUwMkNBQTIxMjczNTJE
MDBDMjdDRDYgLyogZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTAyQzk2MjEyNzM1MkEwMEMyN0NENiAvKiBn
b29nX2NjX25ldHdvcmtfY29udHJvbC5oICovOyB9OwogCQk0MUUwMkNBQjIxMjczNTJEMDBDMjdD
RDYgLyogZGVsYXlfYmFzZWRfYndlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUUwMkM5NzIxMjczNTJBMDBDMjdDRDYgLyogZGVsYXlfYmFzZWRfYndl
LmggKi87IH07CiAJCTQxRTAyQ0FDMjEyNzM1MkQwMEMyN0NENiAvKiBiaXRyYXRlX2VzdGltYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMDJD
OTgyMTI3MzUyQjAwQzI3Q0Q2IC8qIGJpdHJhdGVfZXN0aW1hdG9yLmggKi87IH07CkBAIC0xNTkz
LDYgKzE1NjMsNjUgQEAKIAkJNDFGOUJGRTQyMDUxREUxODAwQUJGMEI5IC8qIHNlc3Npb25kZXNj
cmlwdGlvbi5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRjlCRkRFMjA1MURFMTcwMEFCRjBCOSAvKiBzZXNzaW9uZGVzY3JpcHRpb24uY2MgKi87IH07
CiAJCTQxRjlCRkU5MjA1MURFRUEwMEFCRjBCOSAvKiB0dXJucG9ydGZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjlCRkU3MjA1MURFRTkw
MEFCRjBCOSAvKiB0dXJucG9ydGZhY3RvcnkuaCAqLzsgfTsKIAkJNDFGOUJGRUEyMDUxREVFQTAw
QUJGMEI5IC8qIHR1cm5wb3J0ZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjlCRkU4MjA1MURFRUEwMEFCRjBCOSAvKiB0dXJucG9ydGZh
Y3RvcnkuY2MgKi87IH07CisJCTQxRkNCQjBFMjFCMUY1MzcwMEE1REYyNyAvKiBjcmVhdGVfcGVl
cmNvbm5lY3Rpb25fZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRkNCQjA5MjFCMUY1MzAwMEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5l
Y3Rpb25fZmFjdG9yeS5jYyAqLzsgfTsKKwkJNDFGQ0JCMEYyMUIxRjUzNzAwQTVERjI3IC8qIG1l
ZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRkNCQjBBMjFCMUY1MzEwMEE1REYyNyAvKiBtZWRpYV90cmFuc3Bv
cnRfaW50ZXJmYWNlLmggKi87IH07CisJCTQxRkNCQjEwMjFCMUY1MzcwMEE1REYyNyAvKiBzY29w
ZWRfcmVmcHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUZDQkIwQjIxQjFGNTMyMDBBNURGMjcgLyogc2NvcGVkX3JlZnB0ci5oICovOyB9OworCQk0
MUZDQkIxMTIxQjFGNTM3MDBBNURGMjcgLyogbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjBDMjFC
MUY1MzIwMEE1REYyNyAvKiBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmNjICovOyB9OworCQk0
MUZDQkIxMjIxQjFGNTM3MDBBNURGMjcgLyogY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3Rvcnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjBE
MjFCMUY1MzYwMEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oICovOyB9
OworCQk0MUZDQkIxNTIxQjFGN0FBMDBBNURGMjcgLyogbW92aW5nX2F2ZXJhZ2UuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIxMzIxQjFGN0FB
MDBBNURGMjcgLyogbW92aW5nX2F2ZXJhZ2UuY2MgKi87IH07CisJCTQxRkNCQjE2MjFCMUY3QUEw
MEE1REYyNyAvKiBtb3ZpbmdfYXZlcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMTQyMUIxRjdBQTAwQTVERjI3IC8qIG1vdmluZ19hdmVy
YWdlLmggKi87IH07CisJCTQxRkNCQjFCMjFCMUY3Q0QwMEE1REYyNyAvKiBidWlsdGluX3ZpZGVv
X2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIxNzIxQjFGN0NDMDBBNURGMjcgLyogYnVpbHRpbl92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNjICovOyB9OworCQk0MUZDQkIxQzIxQjFG
N0NEMDBBNURGMjcgLyogZW5jb2RlZF9pbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMTgyMUIxRjdDQzAwQTVERjI3IC8qIGVuY29kZWRf
aW1hZ2UuaCAqLzsgfTsKKwkJNDFGQ0JCMUQyMUIxRjdDRDAwQTVERjI3IC8qIGVuY29kZWRfaW1h
Z2UuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZD
QkIxOTIxQjFGN0NDMDBBNURGMjcgLyogZW5jb2RlZF9pbWFnZS5jYyAqLzsgfTsKKwkJNDFGQ0JC
MUUyMUIxRjdDRDAwQTVERjI3IC8qIGJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFG
Q0JCMUEyMUIxRjdDRDAwQTVERjI3IC8qIGJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeS5oICovOyB9OworCQk0MUZDQkIyMjIxQjFGODJGMDBBNURGMjcgLyogdGhyb3dfZGVs
ZWdhdGUuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUZDQkIyMDIxQjFGODJFMDBBNURGMjcgLyogdGhyb3dfZGVsZWdhdGUuY2MgKi87IH07CisJCTQx
RkNCQjIzMjFCMUY4MkYwMEE1REYyNyAvKiB0aHJvd19kZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMjEyMUIxRjgyRjAwQTVERjI3
IC8qIHRocm93X2RlbGVnYXRlLmggKi87IH07CisJCTQxRkNCQjI3MjFCMUY4N0UwMEE1REYyNyAv
KiBzZW50X3BhY2tldC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRkNCQjI1MjFCMUY4N0UwMEE1REYyNyAvKiBzZW50X3BhY2tldC5jYyAqLzsgfTsK
KwkJNDFGQ0JCMjgyMUIxRjg3RTAwQTVERjI3IC8qIHNlbnRfcGFja2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIyNjIxQjFGODdFMDBBNURG
MjcgLyogc2VudF9wYWNrZXQuaCAqLzsgfTsKKwkJNDFGQ0JCMkUyMUIxRjhCNzAwQTVERjI3IC8q
IGNyeXB0b29wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRkNCQjJBMjFCMUY4QjYwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25zLmggKi87IH07
CisJCTQxRkNCQjJGMjFCMUY4QjcwMEE1REYyNyAvKiBmcmFtZWRlY3J5cHRvcmludGVyZmFjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMkIy
MUIxRjhCNjAwQTVERjI3IC8qIGZyYW1lZGVjcnlwdG9yaW50ZXJmYWNlLmggKi87IH07CisJCTQx
RkNCQjMwMjFCMUY4QjcwMEE1REYyNyAvKiBmcmFtZWVuY3J5cHRvcmludGVyZmFjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMkMyMUIxRjhC
NjAwQTVERjI3IC8qIGZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmggKi87IH07CisJCTQxRkNCQjMx
MjFCMUY4QjcwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25zLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMkQyMUIxRjhCNjAwQTVERjI3IC8qIGNy
eXB0b29wdGlvbnMuY2MgKi87IH07CisJCTQxRkNCQjM4MjFCMUY4RkMwMEE1REYyNyAvKiBjb250
cm9sX2hhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRkNCQjM0MjFCMUY4RkIwMEE1REYyNyAvKiBjb250cm9sX2hhbmRsZXIuaCAqLzsgfTsK
KwkJNDFGQ0JCMzkyMUIxRjhGQzAwQTVERjI3IC8qIGNvbnRyb2xfaGFuZGxlci5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjM1MjFCMUY4RkMw
MEE1REYyNyAvKiBjb250cm9sX2hhbmRsZXIuY2MgKi87IH07CisJCTQxRkNCQjNDMjFCMUZENDAw
MEE1REYyNyAvKiBtYXRjaC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRkNCQjNBMjFCMUZEM0YwMEE1REYyNyAvKiBtYXRjaC5jYyAqLzsgfTsKKwkJ
NDFGQ0JCM0QyMUIxRkQ0MDAwQTVERjI3IC8qIG1hdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIzQjIxQjFGRDNGMDBBNURGMjcgLyogbWF0
Y2guaCAqLzsgfTsKKwkJNDFGQ0JCNDAyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2lu
ZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRkNCQjNFMjFCMUZEQjgwMEE1REYyNyAvKiBjb25nZXN0aW9uX3dp
bmRvd19wdXNoYmFja19jb250cm9sbGVyLmggKi87IH07CisJCTQxRkNCQjQxMjFCMUZEQjgwMEE1
REYyNyAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCM0YyMUIxRkRCODAw
QTVERjI3IC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgKi87IH07
CisJCTQxRkNCQjQ2MjFCMUZERUYwMEE1REYyNyAvKiBtZG5zX21lc3NhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjQyMjFCMUZERUUwMEE1
REYyNyAvKiBtZG5zX21lc3NhZ2UuaCAqLzsgfTsKKwkJNDFGQ0JCNDcyMUIxRkRFRjAwQTVERjI3
IC8qIGljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0MzIxQjFGREVFMDBBNURGMjcgLyogaWNlY3JlZGVu
dGlhbHNpdGVyYXRvci5jYyAqLzsgfTsKKwkJNDFGQ0JCNDgyMUIxRkRFRjAwQTVERjI3IC8qIG1k
bnNfbWVzc2FnZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRkNCQjQ0MjFCMUZERUYwMEE1REYyNyAvKiBtZG5zX21lc3NhZ2UuY2MgKi87IH07CisJ
CTQxRkNCQjQ5MjFCMUZERUYwMEE1REYyNyAvKiBpY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0NTIxQjFG
REVGMDBBNURGMjcgLyogaWNlY3JlZGVudGlhbHNpdGVyYXRvci5oICovOyB9OworCQk0MUZDQkI1
MTIxQjFGRTQ2MDBBNURGMjcgLyogY3B1X3NwZWVkX2V4cGVyaW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjRCMjFCMUZFNDQwMEE1REYy
NyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5oICovOyB9OworCQk0MUZDQkI1MjIxQjFGRTQ2MDBB
NURGMjcgLyogaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0QzIxQjFGRTQ0MDBBNURGMjcg
Lyogaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuY2MgKi87IH07CisJCTQxRkNCQjUzMjFC
MUZFNDYwMEE1REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjREMjFCMUZFNDUwMEE1REYyNyAv
KiBjcHVfc3BlZWRfZXhwZXJpbWVudC5jYyAqLzsgfTsKKwkJNDFGQ0JCNTQyMUIxRkU0NjAwQTVE
RjI3IC8qIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0RTIxQjFGRTQ1MDBBNURGMjcgLyog
aml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuaCAqLzsgfTsKKwkJNDFGQ0JCNTUyMUIxRkU0
NjAwQTVERjI3IC8qIG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI0RjIxQjFGRTQ1
MDBBNURGMjcgLyogbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuaCAqLzsgfTsK
KwkJNDFGQ0JCNTYyMUIxRkU0NjAwQTVERjI3IC8qIG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9l
eHBlcmltZW50LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFGQ0JCNTAyMUIxRkU0NTAwQTVERjI3IC8qIG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9l
eHBlcmltZW50LmNjICovOyB9OworCQk0MUZDQkI1OTIxQjFGRTZFMDBBNURGMjcgLyogZnJhbWVf
ZHVtcGluZ19kZWNvZGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQ0JCNTcyMUIxRkU2RDAwQTVERjI3IC8qIGZyYW1lX2R1bXBpbmdfZGVjb2Rl
ci5jYyAqLzsgfTsKKwkJNDFGQ0JCNUEyMUIxRkU2RTAwQTVERjI3IC8qIGZyYW1lX2R1bXBpbmdf
ZGVjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGQ0JCNTgyMUIxRkU2RTAwQTVERjI3IC8qIGZyYW1lX2R1bXBpbmdfZGVjb2Rlci5oICovOyB9
OworCQk0MUZDQkI1QzIxQjFGRUEzMDBBNURGMjcgLyogYml0cmF0ZV9jb250cm9sbGVyLmNjIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNUIyMUIx
RkVBMzAwQTVERjI3IC8qIGJpdHJhdGVfY29udHJvbGxlci5jYyAqLzsgfTsKKwkJNDFGQ0JCNUYy
MUIxRkVDNDAwQTVERjI3IC8qIGdvb2dfY2NfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNUQyMUIxRkVDNDAwQTVERjI3IC8qIGdv
b2dfY2NfZmFjdG9yeS5oICovOyB9OworCQk0MUZDQkI2MDIxQjFGRUM0MDBBNURGMjcgLyogZ29v
Z19jY19mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFGQ0JCNUUyMUIxRkVDNDAwQTVERjI3IC8qIGdvb2dfY2NfZmFjdG9yeS5jYyAqLzsg
fTsKKwkJNDFGQ0JCNjQyMUIxRkVGNjAwQTVERjI3IC8qIGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZD
QkI2MTIxQjFGRUY1MDBBNURGMjcgLyogY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuaCAqLzsg
fTsKKwkJNDFGQ0JCNjUyMUIxRkVGNjAwQTVERjI3IC8qIHZwOF90ZW1wb3JhbF9sYXllcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjYyMjFC
MUZFRjUwMEE1REYyNyAvKiB2cDhfdGVtcG9yYWxfbGF5ZXJzLmggKi87IH07CisJCTQxRkNCQjY2
MjFCMUZFRjYwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjYzMjFCMUZFRjUw
MEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5jYyAqLzsgfTsKKwkJNDFGQ0JC
NjkyMUIxRkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjY3MjFC
MUZGMUIwMEE1REYyNyAvKiBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmggKi87IH07
CisJCTQxRkNCQjZBMjFCMUZGMUIwMEE1REYyNyAvKiBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3Rp
bWF0aW9uLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGQ0JCNjgyMUIxRkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRp
b24uY2MgKi87IH07CisJCTQxRkNCQjZEMjFCMUZGM0EwMEE1REYyNyAvKiBrZXlfZGVyaXZhdGlv
bi5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNC
QjZCMjFCMUZGMzkwMEE1REYyNyAvKiBrZXlfZGVyaXZhdGlvbi5jYyAqLzsgfTsKKwkJNDFGQ0JC
NkUyMUIxRkYzQTAwQTVERjI3IC8qIGtleV9kZXJpdmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI2QzIxQjFGRjNBMDBBNURGMjcgLyog
a2V5X2Rlcml2YXRpb24uaCAqLzsgfTsKKwkJNDFGQ0JCNzEyMUIxRkY3NDAwQTVERjI3IC8qIGhk
cl9tZXRhZGF0YS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRkNCQjZGMjFCMUZGNzQwMEE1REYyNyAvKiBoZHJfbWV0YWRhdGEuY2MgKi87IH07CisJ
CTQxRkNCQjcyMjFCMUZGNzQwMEE1REYyNyAvKiBoZHJfbWV0YWRhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjcwMjFCMUZGNzQwMEE1REYy
NyAvKiBoZHJfbWV0YWRhdGEuaCAqLzsgfTsKKwkJNDFGQ0JCNzUyMUIxRkZBNDAwQTVERjI3IC8q
IGNvY29hX3RocmVhZGluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRkNCQjczMjFCMUZGQTQwMEE1REYyNyAvKiBjb2NvYV90aHJlYWRpbmcubW0g
Ki87IH07CisJCTQxRkNCQjc2MjFCMUZGQTQwMEE1REYyNyAvKiBjb2NvYV90aHJlYWRpbmcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjc0MjFC
MUZGQTQwMEE1REYyNyAvKiBjb2NvYV90aHJlYWRpbmcuaCAqLzsgfTsKKwkJNDFGQ0JCNzkyMUIx
RkZDMDAwQTVERjI3IC8qIGFzY2lpLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUZDQkI3NzIxQjFGRkJGMDBBNURGMjcgLyogYXNjaWkuaCAqLzsgfTsK
KwkJNDFGQ0JCN0EyMUIxRkZDMDAwQTVERjI3IC8qIGFzY2lpLmNjIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNzgyMUIxRkZDMDAwQTVERjI3IC8q
IGFzY2lpLmNjICovOyB9OworCQk0MUZDQkI3RDIxQjFGRkY2MDBBNURGMjcgLyogb3BlbnNzbF9r
ZXlfZGVyaXZhdGlvbl9oa2RmLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGQ0JCN0IyMUIxRkZGNTAwQTVERjI3IC8qIG9wZW5zc2xfa2V5X2Rlcml2
YXRpb25faGtkZi5jYyAqLzsgfTsKKwkJNDFGQ0JCN0UyMUIxRkZGNjAwQTVERjI3IC8qIG9wZW5z
c2xfa2V5X2Rlcml2YXRpb25faGtkZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFGQ0JCN0MyMUIxRkZGNTAwQTVERjI3IC8qIG9wZW5zc2xfa2V5X2Rl
cml2YXRpb25faGtkZi5oICovOyB9OworCQk0MUZDQkI4MDIxQjIwMDEyMDBBNURGMjcgLyogc3Ry
aW5nX3ZpZXcuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUZDQkI3RjIxQjIwMDExMDBBNURGMjcgLyogc3RyaW5nX3ZpZXcuY2MgKi87IH07CisJCTQx
RkNCQjg0MjFCMjAwN0IwMEE1REYyNyAvKiBtZW11dGlsLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCODIyMUIyMDA3QjAwQTVERjI3IC8qIG1l
bXV0aWwuY2MgKi87IH07CisJCTQxRkNCQjg1MjFCMjAwN0IwMEE1REYyNyAvKiBtZW11dGlsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI4MzIx
QjIwMDdCMDBBNURGMjcgLyogbWVtdXRpbC5oICovOyB9OworCQk0MUZDQkI4OTIxQjIwMEZEMDBB
NURGMjcgLyogUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3OUUyMTY5ODg5NDAwRUYzN0VEIC8qIFJU
Q1J0cEZyYWdtZW50YXRpb25IZWFkZXIubSAqLzsgfTsKIAkJNDFGRTg2NTEyMTVDNTMwNzAwQjYy
QzA3IC8qIG5hc20tbGlzdGZtdC5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGRTg2NTAyMTVDNTMwNjAwQjYyQzA3IC8qIG5hc20tbGlzdGZtdC5jICov
OyB9OwogCQk0MUZFODY1MzIxNUM1MzI1MDBCNjJDMDcgLyogbmFzbS1ldmFsLmMgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZFODY0NTIxNUM1MjYwMDBC
NjJDMDcgLyogbmFzbS1ldmFsLmMgKi87IH07CiAJCTQxRkU4NjU0MjE1QzUzMjUwMEI2MkMwNyAv
KiBuYXNtLXBwLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUQxMjQyNjIxNUM1MjQxMDAzNkIwNTcgLyogbmFzbS1wcC5jICovOyB9OwpAQCAtMTY4NSw4
ICsxNzE0LDYgQEAKIAkJNUMwODg1MzMxRTRBOTlEMjAwNDAzOTk1IC8qIHJkYi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwODg1MjExRTRBOTlEMjAw
NDAzOTk1IC8qIHJkYi5oICovOyB9OwogCQk1QzA4ODUzNDFFNEE5OUQyMDA0MDM5OTUgLyogcmRi
eC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwODg1
MjIxRTRBOTlEMjAwNDAzOTk1IC8qIHJkYnguaCAqLzsgfTsKIAkJNUMwODg1MzUxRTRBOTlEMjAw
NDAzOTk1IC8qIHN0YXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDMDg4NTIzMUU0QTk5RDIwMDQwMzk5NSAvKiBzdGF0LmggKi87IH07Ci0JCTVDMDg4
QzEwMUU0QUE0NDQwMDQwMzk5NSAvKiBidW5kbGVmaWx0ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzYzRkEzQTFFNDE3NjFGMDAyQ0E1MzEgLyog
YnVuZGxlZmlsdGVyLmNjICovOyB9OwotCQk1QzA4OEMxMTFFNEFBNDQ0MDA0MDM5OTUgLyogYnVu
ZGxlZmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzYzRkEzQjFFNDE3NjFGMDAyQ0E1MzEgLyogYnVuZGxlZmlsdGVyLmggKi87IH07CiAJCTVD
MDg4QzEyMUU0QUE0NDQwMDQwMzk5NSAvKiBjaGFubmVsLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2M0ZBM0QxRTQxNzYxRjAwMkNBNTMxIC8qIGNo
YW5uZWwuY2MgKi87IH07CiAJCTVDMDg4QzEzMUU0QUE0NDQwMDQwMzk5NSAvKiBjaGFubmVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzYzRkEzRTFF
NDE3NjFGMDAyQ0E1MzEgLyogY2hhbm5lbC5oICovOyB9OwogCQk1QzA4OEMxNDFFNEFBNDQ0MDA0
MDM5OTUgLyogY2hhbm5lbG1hbmFnZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzYzRkE0MDFFNDE3NjFGMDAyQ0E1MzEgLyogY2hhbm5lbG1hbmFn
ZXIuY2MgKi87IH07CkBAIC0xOTgwLDcgKzIwMDcsNiBAQAogCQk1QzRCNEMxQjFFNDMxRjc1MDAy
NjUxQzggLyogaTQyMF9idWZmZXJfcG9vbC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEI0QzEyMUU0MzFGNzUwMDI2NTFDOCAvKiBpNDIwX2J1ZmZl
cl9wb29sLmNjICovOyB9OwogCQk1QzRCNEMxQzFFNDMxRjc1MDAyNjUxQzggLyogaW5jb21pbmdf
dmlkZW9fc3RyZWFtLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUM0QjRDMTMxRTQzMUY3NTAwMjY1MUM4IC8qIGluY29taW5nX3ZpZGVvX3N0cmVhbS5j
YyAqLzsgfTsKIAkJNUM0QjRDMUUxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX2ZyYW1lX2J1ZmZl
ci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEI0
QzE1MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZV9idWZmZXIuY2MgKi87IH07Ci0JCTVD
NEI0QzFGMUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZS5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEI0QzE2MUU0MzFGNzUwMDI2NTFDOCAv
KiB2aWRlb19mcmFtZS5jYyAqLzsgfTsKIAkJNUM0QjRDMjAxRTQzMUY3NTAwMjY1MUM4IC8qIHZp
ZGVvX3JlbmRlcl9mcmFtZXMuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzRCNEMxNzFFNDMxRjc1MDAyNjUxQzggLyogdmlkZW9fcmVuZGVyX2ZyYW1l
cy5jYyAqLzsgfTsKIAkJNUM0QjRDMjExRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX3JlbmRlcl9m
cmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NEI0QzE4MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19yZW5kZXJfZnJhbWVzLmggKi87IH07CiAJ
CTVDNEI0QzU5MUU0MzFGOUMwMDI2NTFDOCAvKiBhdWRpb19jb252ZXJ0ZXIuY2MgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRCNEMyNDFFNDMxRjlDMDAy
NjUxQzggLyogYXVkaW9fY29udmVydGVyLmNjICovOyB9OwpAQCAtMjM0NSw4ICsyMzcxLDYgQEAK
IAkJNUNERDgzN0ExRTQzOUEzNTAwNjIxRTkyIC8qIGZyYW1lX2Ryb3BwZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4MzZDMUU0MzlBMzUwMDYy
MUU5MiAvKiBmcmFtZV9kcm9wcGVyLmggKi87IH07CiAJCTVDREQ4MzdCMUU0MzlBMzUwMDYyMUU5
MiAvKiBpdmZfZmlsZV93cml0ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0REODM2RDFFNDM5QTM1MDA2MjFFOTIgLyogaXZmX2ZpbGVfd3JpdGVy
LmNjICovOyB9OwogCQk1Q0REODM3QzFFNDM5QTM1MDA2MjFFOTIgLyogaXZmX2ZpbGVfd3JpdGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODM2
RTFFNDM5QTM1MDA2MjFFOTIgLyogaXZmX2ZpbGVfd3JpdGVyLmggKi87IH07Ci0JCTVDREQ4MzdE
MUU0MzlBMzUwMDYyMUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4MzZGMUU0MzlBMzUwMDYyMUU5MiAvKiBt
b3ZpbmdfYXZlcmFnZS5jYyAqLzsgfTsKLQkJNUNERDgzN0UxRTQzOUEzNTAwNjIxRTkyIC8qIG1v
dmluZ19hdmVyYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0REODM3MDFFNDM5QTM1MDA2MjFFOTIgLyogbW92aW5nX2F2ZXJhZ2UuaCAqLzsgfTsK
IAkJNUNERDgzODExRTQzOUEzNTAwNjIxRTkyIC8qIHF1YWxpdHlfc2NhbGVyLmNjIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDgzNzMxRTQzOUEzNTAw
NjIxRTkyIC8qIHF1YWxpdHlfc2NhbGVyLmNjICovOyB9OwogCQk1Q0REODM4MjFFNDM5QTM1MDA2
MjFFOTIgLyogcXVhbGl0eV9zY2FsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDREQ4Mzc0MUU0MzlBMzUwMDYyMUU5MiAvKiBxdWFsaXR5X3NjYWxl
ci5oICovOyB9OwogCQk1Q0REODM4NTFFNDM5QTM1MDA2MjFFOTIgLyogdnA4X2hlYWRlcl9wYXJz
ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0RE
ODM3NzFFNDM5QTM1MDA2MjFFOTIgLyogdnA4X2hlYWRlcl9wYXJzZXIuY2MgKi87IH07CkBAIC0y
NDUzLDggKzI0NzcsNiBAQAogCQk1Q0REODUxMDFFNDNCMUVBMDA2MjFFOTIgLyogYXVkaW9fY29k
aW5nX21vZHVsZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDREQ4NEY5MUU0M0IxRUEwMDYyMUU5MiAvKiBhdWRpb19jb2RpbmdfbW9kdWxlLmNjICov
OyB9OwogCQk1Q0REODUxMjFFNDNCMUVBMDA2MjFFOTIgLyogY2FsbF9zdGF0aXN0aWNzLmNjIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDg0RkIxRTQz
QjFFQTAwNjIxRTkyIC8qIGNhbGxfc3RhdGlzdGljcy5jYyAqLzsgfTsKIAkJNUNERDg1MTMxRTQz
QjFFQTAwNjIxRTkyIC8qIGNhbGxfc3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDg0RkMxRTQzQjFFQTAwNjIxRTkyIC8qIGNhbGxf
c3RhdGlzdGljcy5oICovOyB9OwotCQk1Q0REODUxNTFFNDNCMUVBMDA2MjFFOTIgLyogY29kZWNf
bWFuYWdlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDREQ4NEZFMUU0M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19tYW5hZ2VyLmNjICovOyB9OwotCQk1
Q0REODUxNjFFNDNCMUVBMDA2MjFFOTIgLyogY29kZWNfbWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDg0RkYxRTQzQjFFQTAwNjIxRTky
IC8qIGNvZGVjX21hbmFnZXIuaCAqLzsgfTsKIAkJNUNERDg1MTgxRTQzQjFFQTAwNjIxRTkyIC8q
IHJlbnRfYV9jb2RlYy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDREQ4NTAxMUU0M0IxRUEwMDYyMUU5MiAvKiByZW50X2FfY29kZWMuY2MgKi87IH07
CiAJCTVDREQ4NTE5MUU0M0IxRUEwMDYyMUU5MiAvKiByZW50X2FfY29kZWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4NTAyMUU0M0IxRUEwMDYy
MUU5MiAvKiByZW50X2FfY29kZWMuaCAqLzsgfTsKIAkJNUNERDg1MkYxRTQzQjM5QzAwNjIxRTky
IC8qIGJpdHJhdGVfYWxsb2NhdG9yLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNERDg1MUMxRTQzQjM5QzAwNjIxRTkyIC8qIGJpdHJhdGVfYWxsb2Nh
dG9yLmNjICovOyB9OwpAQCAtMjg0MSw4ICsyODYzLDYgQEAKIAkJNUNERDhBNEIxRTQzQkZCMzAw
NjIxRTkyIC8qIHJhbmRvbV92ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDREQ4OUUyMUU0M0JGQjMwMDYyMUU5MiAvKiByYW5kb21fdmVjdG9y
LmggKi87IH07CiAJCTVDREQ4QTREMUU0M0JGQjMwMDYyMUU5MiAvKiByZWRfcGF5bG9hZF9zcGxp
dHRlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
REQ4OUU0MUU0M0JGQjMwMDYyMUU5MiAvKiByZWRfcGF5bG9hZF9zcGxpdHRlci5jYyAqLzsgfTsK
IAkJNUNERDhBNEUxRTQzQkZCMzAwNjIxRTkyIC8qIHJlZF9wYXlsb2FkX3NwbGl0dGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODlFNTFFNDNC
RkIzMDA2MjFFOTIgLyogcmVkX3BheWxvYWRfc3BsaXR0ZXIuaCAqLzsgfTsKLQkJNUNERDhBNEYx
RTQzQkZCMzAwNjIxRTkyIC8qIHJ0Y3AuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0REODlFNjFFNDNCRkIzMDA2MjFFOTIgLyogcnRjcC5jYyAqLzsg
fTsKLQkJNUNERDhBNTAxRTQzQkZCMzAwNjIxRTkyIC8qIHJ0Y3AuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4OUU3MUU0M0JGQjMwMDYyMUU5MiAv
KiBydGNwLmggKi87IH07CiAJCTVDREQ4QTUxMUU0M0JGQjMwMDYyMUU5MiAvKiBzdGF0aXN0aWNz
X2NhbGN1bGF0b3IuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0REODlFODFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGljc19jYWxjdWxhdG9yLmNj
ICovOyB9OwogCQk1Q0REOEE1MjFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGljc19jYWxjdWxh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0RE
ODlFOTFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGljc19jYWxjdWxhdG9yLmggKi87IH07CiAJ
CTVDREQ4QTU0MUU0M0JGQjMwMDYyMUU5MiAvKiBzeW5jX2J1ZmZlci5jYyBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4OUVCMUU0M0JGQjMwMDYyMUU5
MiAvKiBzeW5jX2J1ZmZlci5jYyAqLzsgfTsKQEAgLTM3OTgsNyArMzgxOCw2IEBACiAJCTQxM0Ey
MTQ0MUZFMThENEMwMDM3M0U5OSAvKiB0ZXN0YmFzZTY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IHRlc3RiYXNlNjQuaDsgcGF0aCA9IHJ0Y19iYXNlL3Rlc3RiYXNlNjQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxNDUxRkUxOEQ0QzAwMzczRTk5IC8q
IGZ1bmN0aW9uX3ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gZnVuY3Rp
b25fdmlldy5oOyBwYXRoID0gcnRjX2Jhc2UvZnVuY3Rpb25fdmlldy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTNBMjE0NzFGRTE4RDREMDAzNzNFOTkgLyogZm9ybWF0X21hY3Jv
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBmb3JtYXRfbWFjcm9zLmg7IHBh
dGggPSBydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTQxM0EyMTQ4MUZFMThENEQwMDM3M0U5OSAvKiB1bml4ZmlsZXN5c3RlbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB1bml4ZmlsZXN5c3RlbS5oOyBwYXRoID0gcnRjX2Jh
c2UvdW5peGZpbGVzeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIx
NDkxRkUxOEQ0RTAwMzczRTk5IC8qIHRlc3RlY2hvc2VydmVyLmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGVjaG9zZXJ2ZXIuY2M7IHBhdGggPSBydGNfYmFzZS90
ZXN0ZWNob3NlcnZlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxNEEx
RkUxOEQ0RTAwMzczRTk5IC8qIGJpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBiaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmNj
OyBwYXRoID0gcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxNEIxRkUxOEQ0RTAwMzczRTk5IC8qIHByb3h5X3Vu
aXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gcHJveHlfdW5p
dHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9wcm94eV91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTM4NzIsNyArMzg5MSw2IEBACiAJCTQxM0EyMTk4MUZFMThEOEEw
MDM3M0U5OSAvKiBhdG9taWNvcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
YXRvbWljb3BzLmg7IHBhdGggPSBydGNfYmFzZS9hdG9taWNvcHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDEzQTIxOUExRkUxOEQ4QjAwMzczRTk5IC8qIG9wZW5zc2xhZGFwdGVy
LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gb3BlbnNzbGFkYXB0ZXIu
Y2M7IHBhdGggPSBydGNfYmFzZS9vcGVuc3NsYWRhcHRlci5jYzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzQTIxOUIxRkUxOEQ4QjAwMzczRTk5IC8qIHNvY2tldGFkYXB0ZXJzLmNj
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc29ja2V0YWRhcHRlcnMuY2M7
IHBhdGggPSBydGNfYmFzZS9zb2NrZXRhZGFwdGVycy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDEzQTIxOUQxRkUxOEQ4RDAwMzczRTk5IC8qIHBhdGh1dGlsc191bml0dGVzdC5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHBhdGh1dGlsc191bml0dGVz
dC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3BhdGh1dGlsc191bml0dGVzdC5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxOUUxRkUxOEQ4RDAwMzczRTk5IC8qIHRhc2tfcXVldWVf
d2luLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGFza19xdWV1ZV93
aW4uY2M7IHBhdGggPSBydGNfYmFzZS90YXNrX3F1ZXVlX3dpbi5jYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDEzQTIxOUYxRkUxOEQ4RTAwMzczRTk5IC8qIHRlc3R1dGlscy5jYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3R1dGlscy5jYzsgcGF0aCA9
IHJ0Y19iYXNlL3Rlc3R1dGlscy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEz
QTIxQTIxRkUxOEQ4RjAwMzczRTk5IC8qIHNpZ3Nsb3RfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzaWdzbG90X3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRj
X2Jhc2Uvc2lnc2xvdF91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTM5MDcsNyArMzkyNSw2IEBACiAJCTQxM0EyMUMzMUZFMThEOUUwMDM3M0U5OSAvKiBjYWxsYmFj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBjYWxsYmFjay5oOyBwYXRoID0g
cnRjX2Jhc2UvY2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIx
QzUxRkUxOEQ5RjAwMzczRTk5IC8qIGhlbHBlcnNfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBoZWxwZXJzX3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jh
c2UvaGVscGVyc191bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEz
QTIxQzYxRkUxOERBMDAwMzczRTk5IC8qIG5hdHNvY2tldGZhY3RvcnkuY2MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBuYXRzb2NrZXRmYWN0b3J5LmNjOyBwYXRoID0gcnRj
X2Jhc2UvbmF0c29ja2V0ZmFjdG9yeS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDEzQTIxQzcxRkUxOERBMTAwMzczRTk5IC8qIG9wdGlvbnNmaWxlX3VuaXR0ZXN0LmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gb3B0aW9uc2ZpbGVfdW5pdHRlc3QuY2M7
IHBhdGggPSBydGNfYmFzZS9vcHRpb25zZmlsZV91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDEzQTIxQzgxRkUxOERBMTAwMzczRTk5IC8qIG5hdF91bml0dGVzdC5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG5hdF91bml0dGVzdC5jYzsg
cGF0aCA9IHJ0Y19iYXNlL25hdF91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzQTIxQzkxRkUxOERBMjAwMzczRTk5IC8qIHBsYXRmb3JtX3RocmVhZF90eXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBwbGF0Zm9ybV90aHJlYWRfdHlwZXMu
aDsgcGF0aCA9IHJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZF90eXBlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTNBMjFDQTFGRTE4REEzMDAzNzNFOTkgLyogcGxhdGZvcm1fdGhy
ZWFkLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gcGxhdGZvcm1fdGhy
ZWFkLmNjOyBwYXRoID0gcnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzkzNiwxOCArMzk1MywxNSBAQAogCQk0MTNBMjFFNDFGRTE4REIw
MDAzNzNFOTkgLyogbWFjdXRpbHMuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBtYWN1dGlscy5jYzsgcGF0aCA9IHJ0Y19iYXNlL21hY3V0aWxzLmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFFNTFGRTE4REIxMDAzNzNFOTkgLyogdGFza19xdWV1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB0YXNrX3F1ZXVlLmg7IHBhdGgg
PSBydGNfYmFzZS90YXNrX3F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
M0EyMUU3MUZFMThEQjEwMDM3M0U5OSAvKiBiaXRidWZmZXIuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBiaXRidWZmZXIuY2M7IHBhdGggPSBydGNfYmFzZS9iaXRidWZm
ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxM0EyMUU4MUZFMThEQjIwMDM3
M0U5OSAvKiBwYXRodXRpbHMuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBwYXRodXRpbHMuY2M7IHBhdGggPSBydGNfYmFzZS9wYXRodXRpbHMuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUU5MUZFMThEQjIwMDM3M0U5OSAvKiBwaHlzaWNhbHNv
Y2tldHNlcnZlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHBoeXNp
Y2Fsc29ja2V0c2VydmVyLmNjOyBwYXRoID0gcnRjX2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXIu
Y2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUVBMUZFMThEQjMwMDM3M0U5
OSAvKiBieXRlb3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYnl0ZW9y
ZGVyLmg7IHBhdGggPSBydGNfYmFzZS9ieXRlb3JkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEzQTIxRUIxRkUxOERCMzAwMzczRTk5IC8qIHNzbHN0cmVhbWFkYXB0ZXJfdW5p
dHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzc2xzdHJlYW1h
ZGFwdGVyX3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlcl91bml0
dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRUUxRkUxOERCNDAw
MzczRTk5IC8qIHRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB0aHJl
YWQuaDsgcGF0aCA9IHJ0Y19iYXNlL3RocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTNBMjFFRjFGRTE4REI1MDAzNzNFOTkgLyogY3JjMzIuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBjcmMzMi5jYzsgcGF0aCA9IHJ0Y19iYXNlL2NyYzMyLmNj
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFGMDFGRTE4REI1MDAzNzNFOTkg
LyogbWVtb3J5X3VzYWdlX3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gbWVtb3J5X3VzYWdlX3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2UvbWVtb3J5
X3VzYWdlX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTNBMjFG
MTFGRTE4REI2MDAzNzNFOTkgLyogb3B0aW9uc2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gb3B0aW9uc2ZpbGUuaDsgcGF0aCA9IHJ0Y19iYXNlL29wdGlvbnNmaWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUYzMUZFMThEQjcwMDM3M0U5OSAv
KiBzd2FwX3F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHN3YXBfcXVl
dWUuaDsgcGF0aCA9IHJ0Y19iYXNlL3N3YXBfcXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEzQTIxRjQxRkUxOERCNzAwMzczRTk5IC8qIGRzY3AuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gZHNjcC5oOyBwYXRoID0gcnRjX2Jhc2UvZHNjcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFGNTFGRTE4REI3MDAzNzNFOTkgLyogdGlt
ZXV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHRpbWV1dGlscy5oOyBw
YXRoID0gcnRjX2Jhc2UvdGltZXV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQxM0EyMUY2MUZFMThEQjgwMDM3M0U5OSAvKiBvcHRpb25zZmlsZS5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG9wdGlvbnNmaWxlLmNjOyBwYXRoID0gcnRjX2Jhc2Uv
b3B0aW9uc2ZpbGUuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUY3MUZF
MThEQjgwMDM3M0U5OSAvKiB0eXBlX3RyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSB0eXBlX3RyYWl0cy5oOyBwYXRoID0gcnRjX2Jhc2UvdHlwZV90cmFpdHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRjgxRkUxOERCOTAwMzczRTk5IC8qIHJh
bmRvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSByYW5kb20uaDsgcGF0aCA9
IHJ0Y19iYXNlL3JhbmRvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFG
OTFGRTE4REI5MDAzNzNFOTkgLyogc29ja2V0YWRkcmVzc3BhaXIuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzb2NrZXRhZGRyZXNzcGFpci5jYzsgcGF0aCA9IHJ0Y19i
YXNlL3NvY2tldGFkZHJlc3NwYWlyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Mzk2Nyw3ICszOTgxLDYgQEAKIAkJNDEzQTIyMDkxRkUxOERDMDAwMzczRTk5IC8qIGJpbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYmluZC5oOyBwYXRoID0gcnRjX2Jhc2Uv
YmluZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjIwQTFGRTE4REMwMDAz
NzNFOTkgLyogZ3VuaXRfcHJvZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBn
dW5pdF9wcm9kLmg7IHBhdGggPSBydGNfYmFzZS9ndW5pdF9wcm9kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxM0EyMjBCMUZFMThEQzEwMDM3M0U5OSAvKiBhc3luY3NvY2tldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBhc3luY3NvY2tldC5oOyBwYXRoID0g
cnRjX2Jhc2UvYXN5bmNzb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEz
QTIyMEMxRkUxOERDMTAwMzczRTk5IC8qIG5vb3AuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBub29wLmNjOyBwYXRoID0gcnRjX2Jhc2Uvbm9vcC5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyMEQxRkUxOERDMjAwMzczRTk5IC8qIHJhdGVfbGlt
aXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSByYXRlX2xpbWl0ZXIuaDsg
cGF0aCA9IHJ0Y19iYXNlL3JhdGVfbGltaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTNBMjIwRTFGRTE4REMyMDAzNzNFOTkgLyogc29ja2V0YWRhcHRlcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gc29ja2V0YWRhcHRlcnMuaDsgcGF0aCA9IHJ0Y19i
YXNlL3NvY2tldGFkYXB0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0Ey
MjBGMUZFMThEQzIwMDM3M0U5OSAvKiByYXRldHJhY2tlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IHJhdGV0cmFja2VyLmNjOyBwYXRoID0gcnRjX2Jhc2UvcmF0ZXRy
YWNrZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDAyLDcgKzQwMTUsNiBA
QAogCQk0MTNBMjIyRjFGRTE4REQyMDAzNzNFOTkgLyogYmluZF91bml0dGVzdC5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGJpbmRfdW5pdHRlc3QuY2M7IHBhdGggPSBy
dGNfYmFzZS9iaW5kX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTNBMjIzMTFGRTE4REQzMDAzNzNFOTkgLyogc3RyaW5ndXRpbHNfdW5pdHRlc3QuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzdHJpbmd1dGlsc191bml0dGVzdC5jYzsg
cGF0aCA9IHJ0Y19iYXNlL3N0cmluZ3V0aWxzX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTNBMjIzMjFGRTE4REQzMDAzNzNFOTkgLyogY29tcGlsZV9hc3NlcnRf
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBjb21waWxlX2Fzc2VydF9jLmg7
IHBhdGggPSBydGNfYmFzZS9jb21waWxlX2Fzc2VydF9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxM0EyMjMzMUZFMThERDQwMDM3M0U5OSAvKiB1bml4ZmlsZXN5c3RlbS5jYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHVuaXhmaWxlc3lzdGVtLmNjOyBw
YXRoID0gcnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxM0EyMjM0MUZFMThERDQwMDM3M0U5OSAvKiBzc2xhZGFwdGVyX3VuaXR0ZXN0LmNj
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc3NsYWRhcHRlcl91bml0dGVz
dC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3NzbGFkYXB0ZXJfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjM1MUZFMThERDUwMDM3M0U5OSAvKiBjcml0aWNhbHNl
Y3Rpb24uY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBjcml0aWNhbHNl
Y3Rpb24uY2M7IHBhdGggPSBydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjM2MUZFMThERDUwMDM3M0U5OSAvKiBieXRlb3JkZXJf
dW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBieXRlb3Jk
ZXJfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9ieXRlb3JkZXJfdW5pdHRlc3QuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDEyLDcgKzQwMjQsNiBAQAogCQk0MTNBMjIz
QTFGRTE4REQ4MDAzNzNFOTkgLyogcmF0ZV9saW1pdGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gcmF0ZV9saW1pdGVyLmNjOyBwYXRoID0gcnRjX2Jhc2UvcmF0ZV9s
aW1pdGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjIzQjFGRTE4REQ5
MDAzNzNFOTkgLyogYnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGJ1
ZmZlci5oOyBwYXRoID0gcnRjX2Jhc2UvYnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxM0EyMjNDMUZFMThERDkwMDM3M0U5OSAvKiBldmVudF90cmFjZXIuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBldmVudF90cmFjZXIuY2M7IHBhdGggPSBy
dGNfYmFzZS9ldmVudF90cmFjZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQx
M0EyMjNEMUZFMThERDkwMDM3M0U5OSAvKiBwYXRodXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gcGF0aHV0aWxzLmg7IHBhdGggPSBydGNfYmFzZS9wYXRodXRpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyM0YxRkUxOEREQTAwMzczRTk5IC8q
IHNzbHJvb3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHNzbHJvb3RzLmg7
IHBhdGggPSBydGNfYmFzZS9zc2xyb290cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTNBMjI0MDFGRTE4RERCMDAzNzNFOTkgLyogb3BlbnNzbGRpZ2VzdC5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG9wZW5zc2xkaWdlc3QuY2M7IHBhdGggPSBydGNf
YmFzZS9vcGVuc3NsZGlnZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNB
MjI0MjFGRTE4RERCMDAzNzNFOTkgLyogaHR0cGNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBodHRwY29tbW9uLmg7IHBhdGggPSBydGNfYmFzZS9odHRwY29tbW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDQzLDcgKzQwNTQsNiBAQAogCQk0MTNB
MjI1RDFGRTE4REU2MDAzNzNFOTkgLyogYXRvbWljb3BzX3VuaXR0ZXN0LmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gYXRvbWljb3BzX3VuaXR0ZXN0LmNjOyBwYXRoID0g
cnRjX2Jhc2UvYXRvbWljb3BzX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTNBMjI1RTFGRTE4REU3MDAzNzNFOTkgLyogc3RyaW5naXplX21hY3Jvcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBzdHJpbmdpemVfbWFjcm9zLmg7IHBhdGggPSBy
dGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxM0EyMjYxMUZFMThERTgwMDM3M0U5OSAvKiBjcHVfdGltZV91bml0dGVzdC5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGNwdV90aW1lX3VuaXR0ZXN0LmNjOyBwYXRo
ID0gcnRjX2Jhc2UvY3B1X3RpbWVfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQxM0EyMjYyMUZFMThERTkwMDM3M0U5OSAvKiBmaWxldXRpbHMuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBmaWxldXRpbHMuY2M7IHBhdGggPSBydGNfYmFz
ZS9maWxldXRpbHMuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjYzMUZF
MThERUEwMDM3M0U5OSAvKiBvcGVuc3Nsc3RyZWFtYWRhcHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBvcGVuc3Nsc3RyZWFtYWRhcHRlci5oOyBwYXRoID0gcnRjX2Jhc2Uv
b3BlbnNzbHN0cmVhbWFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEz
QTIyNjQxRkUxOERFQjAwMzczRTk5IC8qIGV2ZW50LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gZXZlbnQuY2M7IHBhdGggPSBydGNfYmFzZS9ldmVudC5jYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyNjUxRkUxOERFQjAwMzczRTk5IC8qIGNyYzMy
X3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gY3JjMzJf
dW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9jcmMzMl91bml0dGVzdC5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwNTEsNyArNDA2MSw2IEBACiAJCTQxM0EyMjY3MUZFMThE
RUMwMDM3M0U5OSAvKiBzaWdzbG90dGVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IHNpZ3Nsb3R0ZXN0ZXIuaDsgcGF0aCA9IHJ0Y19iYXNlL3NpZ3Nsb3R0ZXN0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyNjgxRkUxOERFRTAwMzczRTk5IC8q
IG5ldHdvcmtfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBuZXR3b3JrX3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2UvbmV0d29ya191bml0dGVzdC5j
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyNjkxRkUxOERFRjAwMzczRTk5
IC8qIGZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGZsYWdzLmg7IHBh
dGggPSBydGNfYmFzZS9mbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTNB
MjI2QTFGRTE4REYwMDAzNzNFOTkgLyogZmlsZXV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IGZpbGV1dGlscy5oOyBwYXRoID0gcnRjX2Jhc2UvZmlsZXV0aWxzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjZCMUZFMThERjAwMDM3M0U5OSAvKiBs
b2dzaW5rcy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGxvZ3Npbmtz
LmNjOyBwYXRoID0gcnRjX2Jhc2UvbG9nc2lua3MuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxM0EyMjZDMUZFMThERjAwMDM3M0U5OSAvKiBzc2xpZGVudGl0eV91bml0dGVzdC5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHNzbGlkZW50aXR5X3VuaXR0
ZXN0LmNjOyBwYXRoID0gcnRjX2Jhc2Uvc3NsaWRlbnRpdHlfdW5pdHRlc3QuY2M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjZEMUZFMThERjEwMDM3M0U5OSAvKiBudWxsc29j
a2V0c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IG51bGxzb2NrZXRz
ZXJ2ZXIuaDsgcGF0aCA9IHJ0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQwODEsNyArNDA5MCw2IEBACiAJCTQxM0EyMjg2MUZFMThERkMw
MDM3M0U5OSAvKiB0ZXN0dXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
dGVzdHV0aWxzLmg7IHBhdGggPSBydGNfYmFzZS90ZXN0dXRpbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDEzQTIyODcxRkUxOERGRDAwMzczRTk5IC8qIGZpbGVyb3RhdGluZ3N0
cmVhbS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGZpbGVyb3RhdGlu
Z3N0cmVhbS5jYzsgcGF0aCA9IHJ0Y19iYXNlL2ZpbGVyb3RhdGluZ3N0cmVhbS5jYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyODgxRkUxOERGRDAwMzczRTk5IC8qIHJ0Y2Nl
cnRpZmljYXRlX3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gcnRjY2VydGlmaWNhdGVfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9ydGNjZXJ0aWZp
Y2F0ZV91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEzQTIyOEEx
RkUxOERGRTAwMzczRTk5IC8qIHRocmVhZF9kYXJ3aW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSB0aHJlYWRfZGFyd2luLm1tOyBwYXRoID0gcnRjX2Jhc2UvdGhy
ZWFkX2Rhcndpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyOEIxRkUx
OERGRTAwMzczRTk5IC8qIHRhc2tfcXVldWVfZ2NkLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gdGFza19xdWV1ZV9nY2QuY2M7IHBhdGggPSBydGNfYmFzZS90YXNrX3F1
ZXVlX2djZC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyOEMxRkUxOERG
RTAwMzczRTk5IC8qIGZpcmV3YWxsc29ja2V0c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IGZpcmV3YWxsc29ja2V0c2VydmVyLmg7IHBhdGggPSBydGNfYmFzZS9maXJl
d2FsbHNvY2tldHNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI4
RTFGRTE4REZGMDAzNzNFOTkgLyogdGltZXV0aWxzX3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGltZXV0aWxzX3VuaXR0ZXN0LmNjOyBwYXRoID0gcnRj
X2Jhc2UvdGltZXV0aWxzX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDA5Nyw3ICs0MTA1LDYgQEAKIAkJNDEzQTIyOTkxRkUxOEUwMzAwMzczRTk5IC8qIGxvY2F0
aW9uLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gbG9jYXRpb24uY2M7
IHBhdGggPSBydGNfYmFzZS9sb2NhdGlvbi5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEzQTIyOUExRkUxOEUwNDAwMzczRTk5IC8qIGxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IGxvY2F0aW9uLmg7IHBhdGggPSBydGNfYmFzZS9sb2NhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI5QjFGRTE4RTA0MDAzNzNFOTkg
LyogaXBhZGRyZXNzLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gaXBh
ZGRyZXNzLmNjOyBwYXRoID0gcnRjX2Jhc2UvaXBhZGRyZXNzLmNjOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MTNBMjI5QzFGRTE4RTA0MDAzNzNFOTkgLyogbm9vcC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IG5vb3AubW07IHBhdGggPSBydGNfYmFz
ZS9ub29wLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI5RDFGRTE4RTA1
MDAzNzNFOTkgLyogcmFjZV9jaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IHJhY2VfY2hlY2tlci5oOyBwYXRoID0gcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjlFMUZFMThFMDUwMDM3M0U5OSAvKiByYXRl
X2xpbWl0ZXJfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSByYXRlX2xpbWl0ZXJfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9yYXRlX2xpbWl0ZXJf
dW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjlGMUZFMThF
MDYwMDM3M0U5OSAvKiBzc2xmaW5nZXJwcmludC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IHNzbGZpbmdlcnByaW50LmNjOyBwYXRoID0gcnRjX2Jhc2Uvc3NsZmluZ2Vy
cHJpbnQuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTY1LDE2ICs0MTcyLDEy
IEBACiAJCTQxM0U2NzY0MjE2OTg1NDUwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJWUDgubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSVENWaWRlb0VuY29kZXJW
UDgubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0U2NzZFMjE2OTg2M0EwMEVG
MzdFRCAvKiB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IHRlbXBvcmFsX2xheWVyc19jaGVja2VyLmNjOyBwYXRoID0gY29kZWNz
L3ZwOC90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzRTY3NkYyMTY5ODYzQTAwRUYzN0VEIC8qIGxpYnZweF9pbnRlcmZhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gbGlidnB4X2ludGVyZmFjZS5oOyBwYXRoID0g
Y29kZWNzL3ZwOC9saWJ2cHhfaW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTQxM0U2NzcwMjE2OTg2M0IwMEVGMzdFRCAvKiB2cDhfdGVtcG9yYWxfbGF5ZXJzLmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdnA4X3RlbXBvcmFsX2xheWVycy5j
YzsgcGF0aCA9IGNvZGVjcy92cDgvdnA4X3RlbXBvcmFsX2xheWVycy5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTY3NzEyMTY5ODYzQjAwRUYzN0VEIC8qIGxpYnZweF9pbnRl
cmZhY2UuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBsaWJ2cHhfaW50
ZXJmYWNlLmNjOyBwYXRoID0gY29kZWNzL3ZwOC9saWJ2cHhfaW50ZXJmYWNlLmNjOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0MTNFNjc3NzIxNjk4NjdBMDBFRjM3RUQgLyogY2hhbm5l
bF9yZWNlaXZlX3Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNoYW5u
ZWxfcmVjZWl2ZV9wcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTNFNjc3
ODIxNjk4NjdBMDBFRjM3RUQgLyogY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmNjOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFNjc3QjIxNjk4NkFEMDBFRjM3RUQgLyogcnRw
X2hlYWRlcl9leHRlbnNpb25fc2l6ZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxM0U2NzdDMjE2OTg2QUUwMEVGMzdFRCAvKiBydHBfaGVhZGVyX2V4dGVuc2lv
bl9zaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJ0cF9oZWFkZXJfZXh0
ZW5zaW9uX3NpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTY3N0YyMTY5
ODcwRjAwRUYzN0VEIC8qIHN2Y19jb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gc3ZjX2NvbmZpZy5oOyBwYXRoID0gY29kZWNzL3ZwOS9zdmNfY29uZmlnLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0U2NzgwMjE2OTg3MEYwMEVGMzdFRCAvKiBzdmNf
Y29uZmlnLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc3ZjX2NvbmZp
Zy5jYzsgcGF0aCA9IGNvZGVjcy92cDkvc3ZjX2NvbmZpZy5jYzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzRTY3ODMyMTY5ODc3RDAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclNl
dHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1ZpZGVvRW5jb2Rl
clNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxM0U2Nzg0MjE2OTg3
N0QwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJTZXR0aW5ncy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFNjc4ODIxNjk4N0I5MDBFRjM3RUQgLyogUlRD
Q1ZQaXhlbEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENDVlBp
eGVsQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0U2Nzg5MjE2OTg3
QjkwMEVGMzdFRCAvKiBSVENDVlBpeGVsQnVmZmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUlRDQ1ZQaXhlbEJ1ZmZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzRTY3OEMyMTY5ODdEQjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRnJhbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDVmlkZW9GcmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDMwOCw3ICs0MzExLDYgQEAKIAkJNDE0NUU0QzIxRUY4
OTZDRTAwRkNGNkU2IC8qIHJ0Y3N0YXRzcmVwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IHJ0Y3N0YXRzcmVwb3J0Lmg7IHBhdGggPSBzdGF0cy9ydGNzdGF0c3JlcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQ1RTRDMzFFRjg5NkQyMDBGQ0Y2RTYg
LyogcnRjc3RhdHNfb2JqZWN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBy
dGNzdGF0c19vYmplY3RzLmg7IHBhdGggPSBzdGF0cy9ydGNzdGF0c19vYmplY3RzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDVFNEM0MUVGODk2RDcwMEZDRjZFNiAvKiBydGNz
dGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBydGNzdGF0cy5oOyBwYXRo
ID0gc3RhdHMvcnRjc3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE0NUU0
QzkxRUY4Q0IzMTAwRkNGNkU2IC8qIGNyZWF0ZXBlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNyZWF0ZXBlZXJjb25uZWN0aW9uZmFj
dG9yeS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0NUU0Q0IxRUY4Q0I4QTAw
RkNGNkU2IC8qIHJ0cHRyYW5zcG9ydC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IHJ0cHRyYW5zcG9ydC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0
NUU0Q0QxRUY4Q0I5NDAwRkNGNkU2IC8qIHJ0cHRyYW5zcG9ydC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBydHB0cmFuc3BvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE0NUU0Q0YxRUY4Q0MxNzAwRkNGNkU2IC8qIHdlYnJ0Y3ZpZGVvZW5naW5lLmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gd2VicnRjdmlkZW9lbmdpbmUuY2M7
IHBhdGggPSBlbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00NDU1LDkgKzQ0NTcsNyBAQAogCQk0MTc5NTNCMzIxNjk4MjQyMDAyODI2NkIg
LyogUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE3OTUzQ0QyMTY5ODM0RTAwMjgyNjZCIC8qIGNoYW5uZWxfc2Vu
ZC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNoYW5uZWxfc2VuZC5j
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3OTUzQ0UyMTY5ODM0RTAwMjgyNjZC
IC8qIGNoYW5uZWxfc2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjaGFu
bmVsX3NlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE3OTUzQ0YyMTY5ODM0
RTAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZF9wcm94eS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IGNoYW5uZWxfc2VuZF9wcm94eS5jYzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE3OTUzRDAyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfcmVjZWl2ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjaGFubmVsX3JlY2VpdmUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE3OTUzRDEyMTY5ODM0RjAwMjgyNjZCIC8qIGNo
YW5uZWxfc2VuZF9wcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjaGFu
bmVsX3NlbmRfcHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3OTUzRDIy
MTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfcmVjZWl2ZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IGNoYW5uZWxfcmVjZWl2ZS5jYzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE3OTUzRDkyMTY5ODM5MDAwMjgyNjZCIC8qIG1ldHJpY3MuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBtZXRyaWNzLmNjOyBwYXRoID0gc291cmNl
L21ldHJpY3MuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzk1M0RBMjE2OTgz
OTAwMDI4MjY2QiAvKiBmaWVsZF90cmlhbC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IGZpZWxkX3RyaWFsLmNjOyBwYXRoID0gc291cmNlL2ZpZWxkX3RyaWFsLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUzNiw3ICs0NTM2LDYgQEAKIAkJNDE5MjQx
NEEyMTI3Mzc2RDAwNjM0RkNGIC8qIGJhc2ljYXN5bmNyZXNvbHZlcmZhY3RvcnkuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBiYXNpY2FzeW5jcmVzb2x2ZXJmYWN0b3J5
LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTkyNDE0QjIxMjczNzZEMDA2MzRG
Q0YgLyogcmVnYXRoZXJpbmdjb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IHJlZ2F0aGVyaW5nY29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTkyNDE0QzIxMjczNzZFMDA2MzRGQ0YgLyogZmFrZWNhbmRpZGF0ZXBhaXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmFrZWNhbmRpZGF0ZXBhaXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5MjQxNEQyMTI3Mzc2RTAwNjM0RkNGIC8qIHVkcHRy
YW5zcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB1ZHB0cmFuc3BvcnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5MjQxNEUyMTI3Mzc2RTAwNjM0RkNG
IC8qIGZha2VwYWNrZXR0cmFuc3BvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gZmFrZXBhY2tldHRyYW5zcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTkyNDE0RjIxMjczNzZFMDA2MzRGQ0YgLyogZmFrZWljZXRyYW5zcG9ydC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBmYWtlaWNldHJhbnNwb3J0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxOTI0MTUwMjEyNzM3NkUwMDYzNEZDRiAvKiBpY2V0cmFuc3BvcnRp
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBpY2V0cmFuc3BvcnRp
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU2MSw3ICs0NTYwLDYg
QEAKIAkJNDE5MjQxODAyMTI3NDk3MTAwNjM0RkNGIC8qIGJhZF92YXJpYW50X2FjY2Vzcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBiYWRfdmFyaWFudF9hY2Nlc3MuaDsgcGF0
aCA9IHR5cGVzL2JhZF92YXJpYW50X2FjY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTkyNDE4NzIxMjc0OUM3MDA2MzRGQ0YgLyogc2VuZF90aW1lX2hpc3RvcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gc2VuZF90aW1lX2hpc3RvcnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5MjQxODgyMTI3NDlDNzAwNjM0RkNGIC8qIHNlbmRf
c2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBzZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MTkyNDE4OTIxMjc0OUM4MDA2MzRGQ0YgLyogcGFjZXJfY29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBwYWNlcl9jb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTI0MThBMjEyNzQ5QzgwMDYz
NEZDRiAvKiB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmNjOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTkyNDE4RjIxMjc1ODEwMDA2MzRGQ0YgLyogZmVjX3By
aXZhdGVfdGFibGVzX2J1cnN0eS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IGZlY19wcml2YXRlX3RhYmxlc19idXJzdHkuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxOTI0MTkzMjEyNzU4NjQwMDYzNEZDRiAvKiBybm5fdmFkX3dlaWdodHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcm5uX3ZhZF93ZWlnaHRzLmg7IHBhdGggPSBz
cmMvcm5uX3ZhZF93ZWlnaHRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzI0
LDggKzQ3MjIsNiBAQAogCQk0MTlDODMyMzFGRTI0NTI4MDA0MEMzMEYgLyogcnRjX2V2ZW50X3J0
cF9wYWNrZXRfaW5jb21pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnRj
X2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuaDsgcGF0aCA9IHJ0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxOUM4MzI4MUZFMjQ1Q0IwMDQwQzMwRiAvKiBwYWNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBwYWNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTlDODMyQjFGRTI0NUNDMDA0MEMzMEYgLyogaW50ZXJ2YWxfYnVkZ2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGludGVydmFsX2J1ZGdldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0MTlDODMzMjFGRTI0NUU5MDA0MEMzMEYgLyogdGltZV9pbnRlcnZh
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB0aW1lX2ludGVydmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxOUM4MzMzMUZFMjQ1RTkwMDQwQzMwRiAvKiB0
aW1lX2ludGVydmFsLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGlt
ZV9pbnRlcnZhbC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QzgzMzcxRkUy
NDYyMjAwNDBDMzBGIC8qIGF1ZGlvX2VuY29kZXJfZzcyMl9jb25maWcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gYXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZy5oOyBwYXRoID0g
YXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTlDODMzODFGRTI0NjIyMDA0MEMzMEYgLyogYXVkaW9fZGVj
b2Rlcl9nNzIyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGF1ZGlvX2RlY29k
ZXJfZzcyMi5oOyBwYXRoID0gYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUM4MzM5MUZFMjQ2MjIwMDQwQzMwRiAv
KiBhdWRpb19lbmNvZGVyX2c3MjIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBhdWRpb19lbmNvZGVyX2c3MjIuY2M7IHBhdGggPSBhdWRpb19jb2RlY3MvZzcyMi9hdWRp
b19lbmNvZGVyX2c3MjIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Nzk4LDcg
KzQ3OTQsNiBAQAogCQk0MTlDODNEMDFGRTI0N0VGMDA0MEMzMEYgLyogcGFja2V0dHJhbnNwb3J0
aW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcGFja2V0dHJhbnNw
b3J0aW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QzgzRDExRkUy
NDdGMDAwNDBDMzBGIC8qIHBhY2tldHRyYW5zcG9ydGludGVybmFsLmNjICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuY2M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUM4M0QyMUZFMjQ3RjAwMDQwQzMwRiAvKiBwb3J0
aW50ZXJmYWNlLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gcG9ydGlu
dGVyZmFjZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5QzgzRDMxRkUyNDdG
MDAwNDBDMzBGIC8qIHVkcHRyYW5zcG9ydC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IHVkcHRyYW5zcG9ydC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE5QzgzRDQxRkUyNDdGMTAwNDBDMzBGIC8qIGR0bHN0cmFuc3BvcnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gZHRsc3RyYW5zcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTlDODNENTFGRTI0N0YxMDA0MEMzMEYgLyogZHRsc3RyYW5zcG9ydGludGVy
bmFsLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZHRsc3RyYW5zcG9y
dGludGVybmFsLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlDODNENjFGRTI0
N0YxMDA0MEMzMEYgLyogZHRsc3RyYW5zcG9ydGludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IGR0bHN0cmFuc3BvcnRpbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDkwNywxNSArNDkwMiwxMiBAQAogCQk0MUEwOEJDRTIxMjcyRUUxMDAx
RDVEN0IgLyogZ2Fpbl9jb250cm9sbGVyMi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IGdhaW5fY29udHJvbGxlcjIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQTA4QkQxMjEyNzJFRkEwMDFENUQ3QiAvKiByb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcm91bmRfcm9iaW5fcGFja2V0X3F1
ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4QkQyMjEyNzJFRkEwMDFE
NUQ3QiAvKiByb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSByb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQxQTA4QkQ1MjEyNzJGMUMwMDFENUQ3QiAvKiBjb25nZXN0aW9u
X3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFBMDhCRDYyMTI3MkYxQzAwMUQ1RDdCIC8qIGNvbmdlc3Rp
b25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwOEJEQTIxMjcyRjg0MDAxRDVEN0IgLyog
Y29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb21wdXRl
X2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxQTA4QkRCMjEyNzJGODQwMDFENUQ3QiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwOEJEQzIxMjcyRjg0MDAxRDVEN0IgLyogYWRh
cHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYWRhcHRpdmVfbW9k
ZV9sZXZlbF9lc3RpbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBMDhC
REQyMTI3MkY4NDAwMUQ1RDdCIC8qIHZlY3Rvcl9mbG9hdF9mcmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSB2ZWN0b3JfZmxvYXRfZnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFB
MDhCREUyMTI3MkY4NDAwMUQ1RDdCIC8qIGdhaW5fYXBwbGllci5jYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IGdhaW5fYXBwbGllci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBMDhC
REYyMTI3MkY4NDAwMUQ1RDdCIC8qIGZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQxQTA4QkUwMjEyNzJGODUwMDFENUQ3QiAvKiBnYWluX2N1cnZl
X2FwcGxpZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnYWluX2N1cnZlX2FwcGxpZXIuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4QkUxMjEyNzJGODUwMDFENUQ3QiAvKiBp
bnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGludGVycG9sYXRl
ZF9nYWluX2N1cnZlLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwOEJFMjIx
MjcyRjg1MDAxRDVEN0IgLyogbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IG5vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUEwOEJFMzIxMjcyRjg1MDAxRDVEN0IgLyogdmFkX3dpdGhfbGV2ZWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gdmFkX3dpdGhfbGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTUxNzYsMTEgKzUxNjgsOCBAQAogCQk0MUQ2QjQ2MjIxMjczMUExMDA4RjkzNTMgLyogYWRhcHRp
dmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGFkYXB0aXZlX21v
ZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUQ2QjQ2MzIxMjczMUEyMDA4RjkzNTMgLyogYmlxdWFkX2ZpbHRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBiaXF1YWRfZmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDZCNDY0
MjEyNzMxQTIwMDhGOTM1MyAvKiBhZGFwdGl2ZV9hZ2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYWRhcHRp
dmVfYWdjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxRDZCNDY1MjEyNzMxQTIw
MDhGOTM1MyAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBm
aXhlZF9nYWluX2NvbnRyb2xsZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
RDZCNDY2MjEyNzMxQTIwMDhGOTM1MyAvKiB2ZWN0b3JfZmxvYXRfZnJhbWUuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSB2ZWN0b3JfZmxvYXRfZnJhbWUuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQxRDZCNDY3MjEyNzMxQTMwMDhGOTM1MyAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxRDZCNDY4MjEyNzMxQTMwMDhGOTM1MyAvKiBzYXR1cmF0aW9uX3By
b3RlY3Rvci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHNhdHVyYXRpb25fcHJvdGVjdG9yLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUQ2QjQ2OTIxMjczMUEzMDA4RjkzNTMgLyog
Z2Fpbl9jdXJ2ZV9hcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdhaW5fY3VydmVfYXBwbGllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQ2QjQ2QTIxMjczMUEzMDA4RjkzNTMg
Lyogbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbm9pc2Vf
c3BlY3RydW1fZXN0aW1hdG9yLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQ2
QjQ2QjIxMjczMUEzMDA4RjkzNTMgLyogc2F0dXJhdGlvbl9wcm90ZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gc2F0dXJhdGlvbl9wcm90ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFENkI0NkMyMTI3MzFBNDAwOEY5MzUzIC8qIHZhZF93aXRoX2xldmVsLmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gdmFkX3dpdGhfbGV2ZWwuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01MjMxLDcgKzUyMjAsNiBAQAogCQk0MUUwMkM5MjIxMjczNTJBMDBDMjdDRDYgLyogYWNr
bm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUUwMkM5MzIxMjczNTJBMDBDMjdDRDYgLyogcHJvYmVfYml0cmF0ZV9l
c3RpbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcHJvYmVfYml0cmF0
ZV9lc3RpbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMDJDOTQyMTI3
MzUyQTAwQzI3Q0Q2IC8qIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGlt
YXRvci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFFMDJDOTUyMTI3MzUyQTAw
QzI3Q0Q2IC8qIGdvb2dfY2NfZmFjdG9yeS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IGdvb2dfY2NfZmFjdG9yeS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFFMDJDOTYyMTI3MzUyQTAwQzI3Q0Q2IC8qIGdvb2dfY2NfbmV0d29ya19jb250cm9sLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdvb2dfY2NfbmV0d29ya19jb250cm9s
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTAyQzk3MjEyNzM1MkEwMEMyN0NE
NiAvKiBkZWxheV9iYXNlZF9id2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
ZGVsYXlfYmFzZWRfYndlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTAyQzk4
MjEyNzM1MkIwMEMyN0NENiAvKiBiaXRyYXRlX2VzdGltYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBiaXRyYXRlX2VzdGltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTI2MCw3ICs1MjQ4LDYgQEAKIAkJNDFFMDJDQ0IyMTI3MzVCNzAwQzI3Q0Q2
IC8qIGJpdHJhdGVfc2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Yml0cmF0ZV9zZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUwMkNE
MTIxMjczNjA2MDBDMjdDRDYgLyogc2FtcGxlX2NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gc2FtcGxlX2NvdW50ZXIuaDsgcGF0aCA9IHJ0Y19iYXNlL251bWVyaWNz
L3NhbXBsZV9jb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTAyQ0Qy
MjEyNzM2MDcwMEMyN0NENiAvKiBzYW1wbGVfY291bnRlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IHNhbXBsZV9jb3VudGVyLmNjOyBwYXRoID0gcnRjX2Jhc2UvbnVt
ZXJpY3Mvc2FtcGxlX2NvdW50ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQx
RTAyQ0Q2MjEyNzM2M0MwMEMyN0NENiAvKiBwYWNlcl9jb250cm9sbGVyLmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gcGFjZXJfY29udHJvbGxlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFFMDJDRDcyMTI3MzYzQzAwQzI3Q0Q2IC8qIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTAyQ0Q4MjEyNzM2M0QwMEMyN0NENiAvKiBzZW5kX3Rp
bWVfaGlzdG9yeS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHNlbmRfdGltZV9oaXN0b3J5LmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUVBNTNBNDFFRkMyQkZEMDAyRkYwNEMgLyog
aG1hYy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmM7IHBhdGggPSBobWFjLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01NDY1LDggKzU0NTIsOCBAQAogCQk0MUY5QkZCMzIwNTFDOTM2MDBBQkYwQjkgLyogc2lt
dWxjYXN0X2VuY29kZXJfYWRhcHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBzaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmg7IHBhdGggPSBlbmdpbmUvc2ltdWxjYXN0X2Vu
Y29kZXJfYWRhcHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY5QkZDNDIw
NTFDQUU0MDBBQkYwQjkgLyogc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBzaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5Lmg7IHBhdGgg
PSBzaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNzaW5nX2xpYnJhcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGOUJGQzYyMDUxRENFODAwQUJGMEI5IC8q
IHdlYnJ0Y192YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gd2VicnRjX3Zh
ZC5oOyBwYXRoID0gdmFkL2luY2x1ZGUvd2VicnRjX3ZhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MUY5QkZDOTIwNTFEREEyMDBBQkYwQjkgLyogYWxyX2V4cGVyaW1lbnQuY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBhbHJfZXhwZXJpbWVudC5jYzsg
cGF0aCA9IHJ0Y19iYXNlL2V4cGVyaW1lbnRzL2Fscl9leHBlcmltZW50LmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MUY5QkZDQTIwNTFEREEyMDBBQkYwQjkgLyogYWxyX2V4cGVy
aW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYWxyX2V4cGVyaW1lbnQu
aDsgcGF0aCA9IHJ0Y19iYXNlL2V4cGVyaW1lbnRzL2Fscl9leHBlcmltZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRjlCRkM5MjA1MUREQTIwMEFCRjBCOSAvKiBhbHJfZXhw
ZXJpbWVudC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGFscl9leHBl
cmltZW50LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUY5QkZDQTIwNTFEREEy
MDBBQkYwQjkgLyogYWxyX2V4cGVyaW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gYWxyX2V4cGVyaW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFG
OUJGQ0QyMDUxRERFNDAwQUJGMEI5IC8qIGZmdF9idWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gZmZ0X2J1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUY5QkZDRTIwNTFEREU0MDBBQkYwQjkgLyogbWF0cml4X2J1ZmZlci5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1hdHJpeF9idWZmZXIuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxRjlCRkNGMjA1MURERTQwMEFCRjBCOSAvKiB2ZWN0b3JfYnVm
ZmVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdmVjdG9yX2J1ZmZl
ci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0ODEsNiArNTQ2OCw2NSBAQAog
CQk0MUY5QkZERTIwNTFERTE3MDBBQkYwQjkgLyogc2Vzc2lvbmRlc2NyaXB0aW9uLmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gc2Vzc2lvbmRlc2NyaXB0aW9uLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY5QkZFNzIwNTFERUU5MDBBQkYwQjkgLyog
dHVybnBvcnRmYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHR1cm5w
b3J0ZmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY5QkZFODIwNTFE
RUVBMDBBQkYwQjkgLyogdHVybnBvcnRmYWN0b3J5LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gdHVybnBvcnRmYWN0b3J5LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MUZDQkIwOTIxQjFGNTMwMDBBNURGMjcgLyogY3JlYXRlX3BlZXJjb25uZWN0aW9u
X2ZhY3RvcnkuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjcmVhdGVf
cGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFGQ0JCMEEyMUIxRjUzMTAwQTVERjI3IC8qIG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIwQjIxQjFGNTMyMDBBNURG
MjcgLyogc2NvcGVkX3JlZnB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBz
Y29wZWRfcmVmcHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjBDMjFC
MUY1MzIwMEE1REYyNyAvKiBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMEQyMUIxRjUzNjAwQTVERjI3IC8q
IGNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IGNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRkNCQjEzMjFCMUY3QUEwMEE1REYyNyAvKiBtb3ZpbmdfYXZlcmFn
ZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG1vdmluZ19hdmVyYWdl
LmNjOyBwYXRoID0gcnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2UuY2M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjE0MjFCMUY3QUEwMEE1REYyNyAvKiBtb3Zpbmdf
YXZlcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBtb3ZpbmdfYXZlcmFn
ZS5oOyBwYXRoID0gcnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMTcyMUIxRjdDQzAwQTVERjI3IC8qIGJ1aWx0aW5f
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IGJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5j
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMTgyMUIxRjdDQzAwQTVERjI3
IC8qIGVuY29kZWRfaW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZW5j
b2RlZF9pbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIxOTIxQjFG
N0NDMDBBNURGMjcgLyogZW5jb2RlZF9pbWFnZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IGVuY29kZWRfaW1hZ2UuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxRkNCQjFBMjFCMUY3Q0QwMEE1REYyNyAvKiBidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxs
b2NhdG9yX2ZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYnVpbHRp
bl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxRkNCQjIwMjFCMUY4MkUwMEE1REYyNyAvKiB0aHJvd19kZWxlZ2F0ZS5jYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRocm93X2RlbGVnYXRlLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIyMTIxQjFGODJGMDBBNURGMjcgLyog
dGhyb3dfZGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gdGhyb3df
ZGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMjUyMUIxRjg3
RTAwQTVERjI3IC8qIHNlbnRfcGFja2V0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gc2VudF9wYWNrZXQuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
RkNCQjI2MjFCMUY4N0UwMEE1REYyNyAvKiBzZW50X3BhY2tldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBzZW50X3BhY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUZDQkIyQTIxQjFGOEI2MDBBNURGMjcgLyogY3J5cHRvb3B0aW9ucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjcnlwdG9vcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRkNCQjJCMjFCMUY4QjYwMEE1REYyNyAvKiBmcmFtZWRlY3J5cHRv
cmludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmcmFtZWRlY3J5
cHRvcmludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIyQzIx
QjFGOEI2MDBBNURGMjcgLyogZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMkQyMUIxRjhCNjAwQTVERjI3IC8qIGNyeXB0b29w
dGlvbnMuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjcnlwdG9vcHRp
b25zLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIzNDIxQjFGOEZCMDBB
NURGMjcgLyogY29udHJvbF9oYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IGNvbnRyb2xfaGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZD
QkIzNTIxQjFGOEZDMDBBNURGMjcgLyogY29udHJvbF9oYW5kbGVyLmNjICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY29udHJvbF9oYW5kbGVyLmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUZDQkIzQTIxQjFGRDNGMDBBNURGMjcgLyogbWF0Y2guY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtYXRjaC5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCM0IyMUIxRkQzRjAwQTVERjI3IC8qIG1hdGNoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG1hdGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxRkNCQjNFMjFCMUZEQjgwMEE1REYyNyAvKiBjb25nZXN0aW9uX3dpbmRv
d19wdXNoYmFja19jb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCM0YyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2lu
ZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI0MjIxQjFGREVFMDBBNURGMjcgLyogbWRuc19t
ZXNzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG1kbnNfbWVzc2FnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI0MzIxQjFGREVFMDBBNURGMjcg
LyogaWNlY3JlZGVudGlhbHNpdGVyYXRvci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IGljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxRkNCQjQ0MjFCMUZERUYwMEE1REYyNyAvKiBtZG5zX21lc3NhZ2UuY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtZG5zX21lc3NhZ2UuY2M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjQ1MjFCMUZERUYwMEE1REYyNyAvKiBpY2Vj
cmVkZW50aWFsc2l0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGlj
ZWNyZWRlbnRpYWxzaXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
Q0JCNEIyMUIxRkU0NDAwQTVERjI3IC8qIGNwdV9zcGVlZF9leHBlcmltZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNwdV9zcGVlZF9leHBlcmltZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjRDMjFCMUZFNDQwMEE1REYyNyAvKiBqaXR0ZXJf
dXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUZDQkI0RDIxQjFGRTQ1MDBBNURGMjcgLyogY3B1X3NwZWVkX2V4cGVy
aW1lbnQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjcHVfc3BlZWRf
ZXhwZXJpbWVudC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNEUyMUIx
RkU0NTAwQTVERjI3IC8qIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjRGMjFCMUZFNDUwMEE1REYyNyAv
KiBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI1MDIxQjFGRTQ1MDBBNURGMjcgLyog
bm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5j
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNTcyMUIxRkU2RDAwQTVERjI3
IC8qIGZyYW1lX2R1bXBpbmdfZGVjb2Rlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IGZyYW1lX2R1bXBpbmdfZGVjb2Rlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFGQ0JCNTgyMUIxRkU2RTAwQTVERjI3IC8qIGZyYW1lX2R1bXBpbmdfZGVjb2Rl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmcmFtZV9kdW1waW5nX2RlY29k
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNUIyMUIxRkVBMzAwQTVE
RjI3IC8qIGJpdHJhdGVfY29udHJvbGxlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IGJpdHJhdGVfY29udHJvbGxlci5jYzsgcGF0aCA9IGJpdHJhdGVfY29udHJvbGxl
ci9iaXRyYXRlX2NvbnRyb2xsZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
RkNCQjVEMjFCMUZFQzQwMEE1REYyNyAvKiBnb29nX2NjX2ZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gZ29vZ19jY19mYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxRkNCQjVFMjFCMUZFQzQwMEE1REYyNyAvKiBnb29nX2NjX2ZhY3Rvcnku
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnb29nX2NjX2ZhY3Rvcnku
Y2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjYxMjFCMUZFRjUwMEE1REYy
NyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oOyBwYXRoID0gdmlkZW9fY29k
ZWNzL2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRkNCQjYyMjFCMUZFRjUwMEE1REYyNyAvKiB2cDhfdGVtcG9yYWxfbGF5ZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHZwOF90ZW1wb3JhbF9sYXllcnMuaDsg
cGF0aCA9IHZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRkNCQjYzMjFCMUZFRjUwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3Rl
bXBvcmFsX2xheWVycy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGNy
ZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjOyBwYXRoID0gdmlkZW9fY29kZWNzL2NyZWF0ZV92
cDhfdGVtcG9yYWxfbGF5ZXJzLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZD
QkI2NzIxQjFGRjFCMDBBNURGMjcgLyogbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9l
c3RpbWF0aW9uLmg7IHBhdGggPSBiaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNlZF9iYW5kd2lk
dGhfZXN0aW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI2ODIx
QjFGRjFCMDBBNURGMjcgLyogbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5jYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGxvc3NfYmFzZWRfYmFuZHdpZHRoX2Vz
dGltYXRpb24uY2M7IHBhdGggPSBiaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNlZF9iYW5kd2lk
dGhfZXN0aW1hdGlvbi5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNkIy
MUIxRkYzOTAwQTVERjI3IC8qIGtleV9kZXJpdmF0aW9uLmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0ga2V5X2Rlcml2YXRpb24uY2M7IHBhdGggPSBydGNfYmFzZS9rZXlf
ZGVyaXZhdGlvbi5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNkMyMUIx
RkYzQTAwQTVERjI3IC8qIGtleV9kZXJpdmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IGtleV9kZXJpdmF0aW9uLmg7IHBhdGggPSBydGNfYmFzZS9rZXlfZGVyaXZhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI2RjIxQjFGRjc0MDBBNURG
MjcgLyogaGRyX21ldGFkYXRhLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gaGRyX21ldGFkYXRhLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI3
MDIxQjFGRjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGhkcl9tZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MUZDQkI3MzIxQjFGRkE0MDBBNURGMjcgLyogY29jb2FfdGhyZWFkaW5nLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gY29jb2FfdGhyZWFkaW5nLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI3NDIxQjFGRkE0MDBBNURGMjcgLyogY29j
b2FfdGhyZWFkaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvY29hX3Ro
cmVhZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI3NzIxQjFGRkJG
MDBBNURGMjcgLyogYXNjaWkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYXNj
aWkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNzgyMUIxRkZDMDAwQTVE
RjI3IC8qIGFzY2lpLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gYXNj
aWkuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjdCMjFCMUZGRjUwMEE1
REYyNyAvKiBvcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBvcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2M7IHBhdGgg
PSBydGNfYmFzZS9vcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRkNCQjdDMjFCMUZGRjUwMEE1REYyNyAvKiBvcGVuc3NsX2tleV9k
ZXJpdmF0aW9uX2hrZGYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gb3BlbnNz
bF9rZXlfZGVyaXZhdGlvbl9oa2RmLmg7IHBhdGggPSBydGNfYmFzZS9vcGVuc3NsX2tleV9kZXJp
dmF0aW9uX2hrZGYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCN0YyMUIy
MDAxMTAwQTVERjI3IC8qIHN0cmluZ192aWV3LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gc3RyaW5nX3ZpZXcuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxRkNCQjgyMjFCMjAwN0IwMEE1REYyNyAvKiBtZW11dGlsLmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gbWVtdXRpbC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFGQ0JCODMyMUIyMDA3QjAwQTVERjI3IC8qIG1lbXV0aWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gbWVtdXRpbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUZDQkI4NzIxQjIwMERCMDBBNURGMjcgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3Mu
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gUlRDVmlkZW9FbmNvZGVyU2V0
dGluZ3MubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGRTg2NDQyMTVDNTI1RjAw
QjYyQzA3IC8qIGdlbnZlcnNpb24uYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0g
Z2VudmVyc2lvbi5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZFODY0NTIxNUM1
MjYwMDBCNjJDMDcgLyogbmFzbS1ldmFsLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0
aCA9ICJuYXNtLWV2YWwuYyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkU4NjQ2
MjE1QzUyNjAwMEI2MkMwNyAvKiBuYXNtLWV2YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gIm5hc20tZXZhbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU4
ODcsNyArNTkzMyw2IEBACiAJCTVDNEI0QzEyMUU0MzFGNzUwMDI2NTFDOCAvKiBpNDIwX2J1ZmZl
cl9wb29sLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gaTQyMF9idWZm
ZXJfcG9vbC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjRDMTMxRTQzMUY3
NTAwMjY1MUM4IC8qIGluY29taW5nX3ZpZGVvX3N0cmVhbS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IGluY29taW5nX3ZpZGVvX3N0cmVhbS5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjRDMTUxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX2ZyYW1l
X2J1ZmZlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHZpZGVvX2Zy
YW1lX2J1ZmZlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM0QjRDMTYxRTQz
MUY3NTAwMjY1MUM4IC8qIHZpZGVvX2ZyYW1lLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gdmlkZW9fZnJhbWUuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDNEI0QzE3MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19yZW5kZXJfZnJhbWVzLmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdmlkZW9fcmVuZGVyX2ZyYW1lcy5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjRDMTgxRTQzMUY3NTAwMjY1MUM4IC8q
IHZpZGVvX3JlbmRlcl9mcmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
dmlkZW9fcmVuZGVyX2ZyYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzRC
NEMyNDFFNDMxRjlDMDAyNjUxQzggLyogYXVkaW9fY29udmVydGVyLmNjICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gYXVkaW9fY29udmVydGVyLmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjAyOCw4ICs2MDczLDYgQEAKIAkJNUM2M0Y5RDkxRTQxNzRGNjAw
MkNBNTMxIC8qIHR1cm5zZXJ2ZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSB0dXJuc2VydmVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzYzRjlE
QTFFNDE3NEY2MDAyQ0E1MzEgLyogdHVybnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSB0dXJuc2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
NjNGOURCMUU0MTc0RjYwMDJDQTUzMSAvKiB1ZHBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IHVkcHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM2
M0ZBM0ExRTQxNzYxRjAwMkNBNTMxIC8qIGJ1bmRsZWZpbHRlci5jYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGJ1bmRsZWZpbHRlci5jYzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNUM2M0ZBM0IxRTQxNzYxRjAwMkNBNTMxIC8qIGJ1bmRsZWZpbHRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBidW5kbGVmaWx0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2M0ZBM0QxRTQxNzYxRjAwMkNBNTMxIC8qIGNoYW5uZWwu
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjaGFubmVsLmNjOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzYzRkEzRTFFNDE3NjFGMDAyQ0E1MzEgLyogY2hh
bm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjaGFubmVsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjNGQTQwMUU0MTc2MUYwMDJDQTUzMSAvKiBjaGFu
bmVsbWFuYWdlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNoYW5u
ZWxtYW5hZ2VyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIzNCw4ICs2Mjc3
LDYgQEAKIAkJNUNERDgzNkMxRTQzOUEzNTAwNjIxRTkyIC8qIGZyYW1lX2Ryb3BwZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZnJhbWVfZHJvcHBlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Q0REODM2RDFFNDM5QTM1MDA2MjFFOTIgLyogaXZmX2ZpbGVf
d3JpdGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gaXZmX2ZpbGVf
d3JpdGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODM2RTFFNDM5QTM1
MDA2MjFFOTIgLyogaXZmX2ZpbGVfd3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGl2Zl9maWxlX3dyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
Q0REODM2RjFFNDM5QTM1MDA2MjFFOTIgLyogbW92aW5nX2F2ZXJhZ2UuY2MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtb3ZpbmdfYXZlcmFnZS5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNUNERDgzNzAxRTQzOUEzNTAwNjIxRTkyIC8qIG1vdmluZ19hdmVy
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG1vdmluZ19hdmVyYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4MzczMUU0MzlBMzUwMDYyMUU5MiAv
KiBxdWFsaXR5X3NjYWxlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IHF1YWxpdHlfc2NhbGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODM3
NDFFNDM5QTM1MDA2MjFFOTIgLyogcXVhbGl0eV9zY2FsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gcXVhbGl0eV9zY2FsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNERDgzNzcxRTQzOUEzNTAwNjIxRTkyIC8qIHZwOF9oZWFkZXJfcGFyc2VyLmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdnA4X2hlYWRlcl9wYXJzZXIuY2M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzQ2LDggKzYzODcsNiBAQAogCQk1Q0RE
ODRGOTFFNDNCMUVBMDA2MjFFOTIgLyogYXVkaW9fY29kaW5nX21vZHVsZS5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGF1ZGlvX2NvZGluZ19tb2R1bGUuY2M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4NEZCMUU0M0IxRUEwMDYyMUU5MiAvKiBjYWxs
X3N0YXRpc3RpY3MuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjYWxs
X3N0YXRpc3RpY3MuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4NEZDMUU0
M0IxRUEwMDYyMUU5MiAvKiBjYWxsX3N0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gY2FsbF9zdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTVDREQ4NEZFMUU0M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19tYW5hZ2VyLmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY29kZWNfbWFuYWdlci5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNERDg0RkYxRTQzQjFFQTAwNjIxRTkyIC8qIGNvZGVjX21h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29kZWNfbWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODUwMTFFNDNCMUVBMDA2MjFFOTIg
LyogcmVudF9hX2NvZGVjLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
cmVudF9hX2NvZGVjLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODUwMjFF
NDNCMUVBMDA2MjFFOTIgLyogcmVudF9hX2NvZGVjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IHJlbnRfYV9jb2RlYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0REODUxQzFFNDNCMzlDMDA2MjFFOTIgLyogYml0cmF0ZV9hbGxvY2F0b3IuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBiaXRyYXRlX2FsbG9jYXRvci5jYzsgcGF0aCA9
IGNhbGwvYml0cmF0ZV9hbGxvY2F0b3IuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02NzM0LDggKzY3NzMsNiBAQAogCQk1Q0REODlFMjFFNDNCRkIzMDA2MjFFOTIgLyogcmFuZG9t
X3ZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSByYW5kb21fdmVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4OUU0MUU0M0JGQjMwMDYyMUU5
MiAvKiByZWRfcGF5bG9hZF9zcGxpdHRlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IHJlZF9wYXlsb2FkX3NwbGl0dGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Q0REODlFNTFFNDNCRkIzMDA2MjFFOTIgLyogcmVkX3BheWxvYWRfc3BsaXR0ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcmVkX3BheWxvYWRfc3BsaXR0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNERDg5RTYxRTQzQkZCMzAwNjIxRTky
IC8qIHJ0Y3AuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBydGNwLmNj
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0REODlFNzFFNDNCRkIzMDA2MjFFOTIg
LyogcnRjcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBydGNwLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4OUU4MUU0M0JGQjMwMDYyMUU5MiAvKiBzdGF0
aXN0aWNzX2NhbGN1bGF0b3IuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBzdGF0aXN0aWNzX2NhbGN1bGF0b3IuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDREQ4OUU5MUU0M0JGQjMwMDYyMUU5MiAvKiBzdGF0aXN0aWNzX2NhbGN1bGF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gc3RhdGlzdGljc19jYWxjdWxhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4OUVCMUU0M0JGQjMwMDYyMUU5MiAvKiBz
eW5jX2J1ZmZlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHN5bmNf
YnVmZmVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY0Myw2ICs3NjgwLDEy
IEBACiAJCTQxMDZENTZCMjE2QzJCOTEwMDFFM0M0MCAvKiBzdHJpbmdzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MUZDQkI4MTIxQjIwMDVBMDBBNURG
MjcgLyogaW50ZXJuYWwgKi8sCisJCQkJNDFGQ0JCNzgyMUIxRkZDMDAwQTVERjI3IC8qIGFzY2lp
LmNjICovLAorCQkJCTQxRkNCQjc3MjFCMUZGQkYwMEE1REYyNyAvKiBhc2NpaS5oICovLAorCQkJ
CTQxRkNCQjNBMjFCMUZEM0YwMEE1REYyNyAvKiBtYXRjaC5jYyAqLywKKwkJCQk0MUZDQkIzQjIx
QjFGRDNGMDBBNURGMjcgLyogbWF0Y2guaCAqLywKKwkJCQk0MUZDQkI3RjIxQjIwMDExMDBBNURG
MjcgLyogc3RyaW5nX3ZpZXcuY2MgKi8sCiAJCQkJNDEwNkQ1NkMyMTZDMkJBOTAwMUUzQzQwIC8q
IHN0cmluZ192aWV3LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHN0cmluZ3M7CkBAIC03NzEzLDIz
ICs3NzU2LDI2IEBACiAJCQkJNDFEREIyNzYyMTI2N0FDMTAwMjk2RDQ3IC8qIGJ1aWx0aW5fdmlk
ZW9fZGVjb2Rlcl9mYWN0b3J5LmggKi8sCiAJCQkJNDFFMDJDQzIyMTI3MzU4NzAwQzI3Q0Q2IC8q
IGJ1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmNjICovLAogCQkJCTQxRERCMjc3MjEyNjdB
QzEwMDI5NkQ0NyAvKiBidWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oICovLAorCQkJCTQx
RkNCQjYzMjFCMUZFRjUwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5jYyAq
LywKKwkJCQk0MUZDQkI2MTIxQjFGRUY1MDBBNURGMjcgLyogY3JlYXRlX3ZwOF90ZW1wb3JhbF9s
YXllcnMuaCAqLywKIAkJCQk0MUREQjI3QTIxMjY3QUMyMDAyOTZENDcgLyogc2RwX3ZpZGVvX2Zv
cm1hdC5jYyAqLywKIAkJCQk0MTQ1RjYxOTFGRTFGMzhCMDBFQjlDQUYgLyogc2RwX3ZpZGVvX2Zv
cm1hdC5oICovLAogCQkJCTQxRERCMjcwMjEyNjdBQzAwMDI5NkQ0NyAvKiB2aWRlb19jb2RlYy5j
YyAqLywKIAkJCQk0MUREQjI3MTIxMjY3QUMwMDAyOTZENDcgLyogdmlkZW9fY29kZWMuaCAqLywK
KwkJCQk0MUREQjI3MjIxMjY3QUMwMDAyOTZENDcgLyogdmlkZW9fZGVjb2Rlci5jYyAqLywKKwkJ
CQk0MTQ1RTQ4QjFFRjg4Qjk2MDBGQ0Y2RTYgLyogdmlkZW9fZGVjb2Rlci5oICovLAogCQkJCTQx
Nzk1M0YwMjE2OTg0NTUwMDI4MjY2QiAvKiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkuY2MgKi8sCiAJ
CQkJNDE0NUY2MUExRkUxRjM4QzAwRUI5Q0FGIC8qIHZpZGVvX2RlY29kZXJfZmFjdG9yeS5oICov
LAogCQkJCTQxRERCMjc0MjEyNjdBQzEwMDI5NkQ0NyAvKiB2aWRlb19kZWNvZGVyX3NvZnR3YXJl
X2ZhbGxiYWNrX3dyYXBwZXIuY2MgKi8sCiAJCQkJNDFEREIyNzgyMTI2N0FDMTAwMjk2RDQ3IC8q
IHZpZGVvX2RlY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5oICovLAotCQkJCTQxRERC
MjcyMjEyNjdBQzAwMDI5NkQ0NyAvKiB2aWRlb19kZWNvZGVyLmNjICovLAotCQkJCTQxNDVFNDhC
MUVGODhCOTYwMEZDRjZFNiAvKiB2aWRlb19kZWNvZGVyLmggKi8sCisJCQkJNDE0NUY2MUMxRkUx
RjM4RDAwRUI5Q0FGIC8qIHZpZGVvX2VuY29kZXIuY2MgKi8sCisJCQkJNDE0NUU0OEMxRUY4OEI5
RDAwRkNGNkU2IC8qIHZpZGVvX2VuY29kZXIuaCAqLywKIAkJCQk0MUUwMkNDMzIxMjczNTg4MDBD
MjdDRDYgLyogdmlkZW9fZW5jb2Rlcl9jb25maWcuY2MgKi8sCiAJCQkJNDFEREIyN0IyMTI2N0FD
MjAwMjk2RDQ3IC8qIHZpZGVvX2VuY29kZXJfY29uZmlnLmggKi8sCiAJCQkJNDE0NUY2MUIxRkUx
RjM4RDAwRUI5Q0FGIC8qIHZpZGVvX2VuY29kZXJfZmFjdG9yeS5oICovLAogCQkJCTQxRERCMjc1
MjEyNjdBQzEwMDI5NkQ0NyAvKiB2aWRlb19lbmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBw
ZXIuY2MgKi8sCiAJCQkJNDFEREIyNzkyMTI2N0FDMjAwMjk2RDQ3IC8qIHZpZGVvX2VuY29kZXJf
c29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5oICovLAotCQkJCTQxNDVGNjFDMUZFMUYzOEQwMEVC
OUNBRiAvKiB2aWRlb19lbmNvZGVyLmNjICovLAotCQkJCTQxNDVFNDhDMUVGODhCOUQwMEZDRjZF
NiAvKiB2aWRlb19lbmNvZGVyLmggKi8sCisJCQkJNDFGQ0JCNjIyMUIxRkVGNTAwQTVERjI3IC8q
IHZwOF90ZW1wb3JhbF9sYXllcnMuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gdmlkZW9fY29kZWNz
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc3OTAsNyArNzgzNiw3IEBACiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQk0MTNBMjE4MDFGRTE4RDdBMDAzNzNFOTkgLyogREVQUyAqLywKIAkJ
CQk0MTkyNDE2NTIxMjczODc5MDA2MzRGQ0YgLyogZXhwZXJpbWVudHMgKi8sCi0JCQkJNDFGOUJG
QzgyMDUxREQ4RTAwQUJGMEI5IC8qIGV4cGVyaW1lbnRzICovLAorCQkJCTQxRkNCQjI0MjFCMUY4
NUQwMEE1REYyNyAvKiBuZXR3b3JrICovLAogCQkJCTQxOUM4MzQxMUZFMjQ2MzgwMDQwQzMwRiAv
KiBudW1lcmljcyAqLywKIAkJCQk0MTNBMjFGRDFGRTE4REJCMDAzNzNFOTkgLyogT1dORVJTICov
LAogCQkJCTQxRERCMjY3MjEyNjc5QUUwMDI5NkQ0NyAvKiBzdHJpbmdzICovLApAQCAtNzg4MSw4
ICs3OTI3LDYgQEAKIAkJCQk0MTNBMjI4NzFGRTE4REZEMDAzNzNFOTkgLyogZmlsZXJvdGF0aW5n
c3RyZWFtLmNjICovLAogCQkJCTQxM0EyMThDMUZFMThEODMwMDM3M0U5OSAvKiBmaWxlcm90YXRp
bmdzdHJlYW0uaCAqLywKIAkJCQk0MTNBMjI1QTFGRTE4REU1MDAzNzNFOTkgLyogZmlsZXJvdGF0
aW5nc3RyZWFtX3VuaXR0ZXN0LmNjICovLAotCQkJCTQxM0EyMjYyMUZFMThERTkwMDM3M0U5OSAv
KiBmaWxldXRpbHMuY2MgKi8sCi0JCQkJNDEzQTIyNkExRkUxOERGMDAwMzczRTk5IC8qIGZpbGV1
dGlscy5oICovLAogCQkJCTQxM0EyMjE3MUZFMThEQzYwMDM3M0U5OSAvKiBmaXJld2FsbHNvY2tl
dHNlcnZlci5jYyAqLywKIAkJCQk0MTNBMjI4QzFGRTE4REZFMDAzNzNFOTkgLyogZmlyZXdhbGxz
b2NrZXRzZXJ2ZXIuaCAqLywKIAkJCQk0MTNBMjE2MTFGRTE4RDVCMDAzNzNFOTkgLyogZmxhZ3Mu
Y2MgKi8sCkBAIC03OTA3LDYgKzc5NTEsOCBAQAogCQkJCTQxM0EyMTRFMUZFMThENTAwMDM3M0U5
OSAvKiBpcGFkZHJlc3MuaCAqLywKIAkJCQk0MTNBMjE2QTFGRTE4RDY3MDAzNzNFOTkgLyogaXBh
ZGRyZXNzX3VuaXR0ZXN0LmNjICovLAogCQkJCTQxM0EyMjEyMUZFMThEQzQwMDM3M0U5OSAvKiBr
ZWVwX3JlZl91bnRpbF9kb25lLmggKi8sCisJCQkJNDFGQ0JCNkIyMUIxRkYzOTAwQTVERjI3IC8q
IGtleV9kZXJpdmF0aW9uLmNjICovLAorCQkJCTQxRkNCQjZDMjFCMUZGM0EwMEE1REYyNyAvKiBr
ZXlfZGVyaXZhdGlvbi5oICovLAogCQkJCTQxM0EyMjk5MUZFMThFMDMwMDM3M0U5OSAvKiBsb2Nh
dGlvbi5jYyAqLywKIAkJCQk0MTNBMjI5QTFGRTE4RTA0MDAzNzNFOTkgLyogbG9jYXRpb24uaCAq
LywKIAkJCQk0MTNBMjE3MjFGRTE4RDZEMDAzNzNFOTkgLyogbG9nZ2luZy5jYyAqLywKQEAgLTc5
NDcsMTQgKzc5OTMsMTQgQEAKIAkJCQk0MTNBMjIzODFGRTE4REQ2MDAzNzNFOTkgLyogbmV0d29y
a21vbml0b3IuY2MgKi8sCiAJCQkJNDEzQTIyMjkxRkUxOERDRjAwMzczRTk5IC8qIG5ldHdvcmtt
b25pdG9yLmggKi8sCiAJCQkJNDEzQTIxNjkxRkUxOEQ2NTAwMzczRTk5IC8qIG5ldHdvcmtyb3V0
ZS5oICovLAotCQkJCTQxM0EyMjBDMUZFMThEQzEwMDM3M0U5OSAvKiBub29wLmNjICovLAotCQkJ
CTQxM0EyMjlDMUZFMThFMDQwMDM3M0U5OSAvKiBub29wLm1tICovLAogCQkJCTQxM0EyMjdGMUZF
MThERjkwMDM3M0U5OSAvKiBudWxsc29ja2V0c2VydmVyLmNjICovLAogCQkJCTQxM0EyMjZEMUZF
MThERjEwMDM3M0U5OSAvKiBudWxsc29ja2V0c2VydmVyLmggKi8sCiAJCQkJNDEzQTIyN0MxRkUx
OERGODAwMzczRTk5IC8qIG51bGxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEz
QTIxRTIxRkUxOERBRjAwMzczRTk5IC8qIG9uZXRpbWVldmVudC5oICovLAogCQkJCTQxM0EyMTYy
MUZFMThENUQwMDM3M0U5OSAvKiBvbmV0aW1lZXZlbnRfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEz
QTIyNzUxRkUxOERGNjAwMzczRTk5IC8qIG9wZW5zc2wuaCAqLywKKwkJCQk0MUZDQkI3QjIxQjFG
RkY1MDBBNURGMjcgLyogb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmNjICovLAorCQkJCTQx
RkNCQjdDMjFCMUZGRjUwMEE1REYyNyAvKiBvcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuaCAq
LywKIAkJCQk0MTNBMjE5QTFGRTE4RDhCMDAzNzNFOTkgLyogb3BlbnNzbGFkYXB0ZXIuY2MgKi8s
CiAJCQkJNDEzQTIxREIxRkUxOERBQzAwMzczRTk5IC8qIG9wZW5zc2xhZGFwdGVyLmggKi8sCiAJ
CQkJNDEzQTIyN0UxRkUxOERGOTAwMzczRTk5IC8qIG9wZW5zc2xhZGFwdGVyX3VuaXR0ZXN0LmNj
ICovLApAQCAtNzk3MCwxMiArODAxNiw2IEBACiAJCQkJNDEzQTIyNjMxRkUxOERFQTAwMzczRTk5
IC8qIG9wZW5zc2xzdHJlYW1hZGFwdGVyLmggKi8sCiAJCQkJNDFEREIyNUYyMTI2NzlBMjAwMjk2
RDQ3IC8qIG9wZW5zc2x1dGlsaXR5LmNjICovLAogCQkJCTQxRERCMjVCMjEyNjc5OUYwMDI5NkQ0
NyAvKiBvcGVuc3NsdXRpbGl0eS5oICovLAotCQkJCTQxM0EyMUY2MUZFMThEQjgwMDM3M0U5OSAv
KiBvcHRpb25zZmlsZS5jYyAqLywKLQkJCQk0MTNBMjFGMTFGRTE4REI2MDAzNzNFOTkgLyogb3B0
aW9uc2ZpbGUuaCAqLywKLQkJCQk0MTNBMjFDNzFGRTE4REExMDAzNzNFOTkgLyogb3B0aW9uc2Zp
bGVfdW5pdHRlc3QuY2MgKi8sCi0JCQkJNDEzQTIxRTgxRkUxOERCMjAwMzczRTk5IC8qIHBhdGh1
dGlscy5jYyAqLywKLQkJCQk0MTNBMjIzRDFGRTE4REQ5MDAzNzNFOTkgLyogcGF0aHV0aWxzLmgg
Ki8sCi0JCQkJNDEzQTIxOUQxRkUxOEQ4RDAwMzczRTk5IC8qIHBhdGh1dGlsc191bml0dGVzdC5j
YyAqLywKIAkJCQk0MTNBMjFFOTFGRTE4REIyMDAzNzNFOTkgLyogcGh5c2ljYWxzb2NrZXRzZXJ2
ZXIuY2MgKi8sCiAJCQkJNDEzQTIyOTgxRkUxOEUwMzAwMzczRTk5IC8qIHBoeXNpY2Fsc29ja2V0
c2VydmVyLmggKi8sCiAJCQkJNDEzQTIyN0IxRkUxOERGODAwMzczRTk5IC8qIHBoeXNpY2Fsc29j
a2V0c2VydmVyX3VuaXR0ZXN0LmNjICovLApAQCAtODEwMCw3ICs4MTQwLDYgQEAKIAkJCQk0MTNB
MjFGQzFGRTE4REJCMDAzNzNFOTkgLyogdGhyZWFkX2NoZWNrZXJfaW1wbC5jYyAqLywKIAkJCQk0
MTNBMjE1RTFGRTE4RDU5MDAzNzNFOTkgLyogdGhyZWFkX2NoZWNrZXJfaW1wbC5oICovLAogCQkJ
CTQxM0EyMUI2MUZFMThEOTgwMDM3M0U5OSAvKiB0aHJlYWRfY2hlY2tlcl91bml0dGVzdC5jYyAq
LywKLQkJCQk0MTNBMjI4QTFGRTE4REZFMDAzNzNFOTkgLyogdGhyZWFkX2Rhcndpbi5tbSAqLywK
IAkJCQk0MTNBMjIyNjFGRTE4RENEMDAzNzNFOTkgLyogdGhyZWFkX3VuaXR0ZXN0LmNjICovLAog
CQkJCTQxM0EyMjI4MUZFMThEQ0UwMDM3M0U5OSAvKiB0aW1lc3RhbXBhbGlnbmVyLmNjICovLAog
CQkJCTQxM0EyMjAxMUZFMThEQkQwMDM3M0U5OSAvKiB0aW1lc3RhbXBhbGlnbmVyLmggKi8sCkBA
IC04MTExLDggKzgxNTAsNiBAQAogCQkJCTQxM0EyMUFCMUZFMThEOTMwMDM3M0U5OSAvKiB0cmFj
ZV9ldmVudC5oICovLAogCQkJCTQxM0EyMUY3MUZFMThEQjgwMDM3M0U5OSAvKiB0eXBlX3RyYWl0
cy5oICovLAogCQkJCTQxM0EyMjRDMUZFMThERTAwMDM3M0U5OSAvKiB1bml0dGVzdF9tYWluLmNj
ICovLAotCQkJCTQxM0EyMjMzMUZFMThERDQwMDM3M0U5OSAvKiB1bml4ZmlsZXN5c3RlbS5jYyAq
LywKLQkJCQk0MTNBMjE0ODFGRTE4RDREMDAzNzNFOTkgLyogdW5peGZpbGVzeXN0ZW0uaCAqLywK
IAkJCQk0MTNBMjFEQTFGRTE4REFDMDAzNzNFOTkgLyogdmlydHVhbHNvY2tldF91bml0dGVzdC5j
YyAqLywKIAkJCQk0MTNBMjFCRTFGRTE4RDlDMDAzNzNFOTkgLyogdmlydHVhbHNvY2tldHNlcnZl
ci5jYyAqLywKIAkJCQk0MTNBMjE2MzFGRTE4RDVFMDAzNzNFOTkgLyogdmlydHVhbHNvY2tldHNl
cnZlci5oICovLApAQCAtODIwNSwxMSArODI0MiwxMSBAQAogCQk0MTNBRDE5RjIxMjY1QURGMDAz
RjcyNjMgLyogYWJzbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJNDEwNkQ1NkIyMTZDMkI5MTAwMUUzQzQwIC8qIHN0cmluZ3MgKi8sCiAJCQkJNDEzQUQx
QTAyMTI2NUFGQTAwM0Y3MjYzIC8qIGFsZ29yaXRobSAqLywKIAkJCQk0MTNBRDFBNjIxMjY1QjM1
MDAzRjcyNjMgLyogYmFzZSAqLywKIAkJCQk0MUREQjI0NTIxMjY1QjgyMDAyOTZENDcgLyogY29u
dGFpbmVyICovLAogCQkJCTQxQTA4QkI2MjEyNjhBNkEwMDFENUQ3QiAvKiBtZW1vcnkgKi8sCisJ
CQkJNDEwNkQ1NkIyMTZDMkI5MTAwMUUzQzQwIC8qIHN0cmluZ3MgKi8sCiAJCQkJNDFEREIyNEEy
MTI2NUJBODAwMjk2RDQ3IC8qIHR5cGVzICovLAogCQkJKTsKIAkJCW5hbWUgPSBhYnNsOwpAQCAt
ODIyOCw2ICs4MjY1LDcgQEAKIAkJNDEzQUQxQTYyMTI2NUIzNTAwM0Y3MjYzIC8qIGJhc2UgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxRkNCQjFGMjFC
MUY4MTQwMEE1REYyNyAvKiBpbnRlcm5hbCAqLywKIAkJCQk0MTNBRDFBOTIxMjY1QjU5MDAzRjcy
NjMgLyogY2FzdHMuaCAqLywKIAkJCQk0MTNBRDFBODIxMjY1QjU5MDAzRjcyNjMgLyogZHluYW1p
Y19hbm5vdGF0aW9ucy5jYyAqLywKIAkJCQk0MTNBRDFBQTIxMjY1QjU5MDAzRjcyNjMgLyogbWFj
cm9zLmggKi8sCkBAIC04MjUwLDkgKzgyODgsOSBAQAogCQk0MTNFNjdBNjIxNjk4OTM2MDBFRjM3
RUQgLyogdmlkZW9fZnJhbWVfYnVmZmVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk0MTNFNjdBODIxNjk4OTRDMDBFRjM3RUQgLyogUlRDTmF0aXZlSTQy
MEJ1ZmZlcitQcml2YXRlLmggKi8sCiAJCQkJNDEzRTY3QTkyMTY5ODk0QzAwRUYzN0VEIC8qIFJU
Q05hdGl2ZUk0MjBCdWZmZXIuaCAqLywKIAkJCQk0MTNFNjdBNzIxNjk4OTRCMDBFRjM3RUQgLyog
UlRDTmF0aXZlSTQyMEJ1ZmZlci5tbSAqLywKLQkJCQk0MTNFNjdBODIxNjk4OTRDMDBFRjM3RUQg
LyogUlRDTmF0aXZlSTQyMEJ1ZmZlcitQcml2YXRlLmggKi8sCiAJCQkJNDEzRTY3QUEyMTY5ODk0
QzAwRUYzN0VEIC8qIFJUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVyLmggKi8sCiAJCQkJNDE0NEIz
RDAyMTY5ODk2NjAwNDM2M0FDIC8qIFJUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVyLm1tICovLAog
CQkJKTsKQEAgLTgzNzAsOSArODQwOCw5IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTQ0QjNG
NDIxNkIwODFCMDA0MzYzQUMgLyogUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUuaCAqLywKIAkJCQk0
MTQ0QjNGMzIxNkIwODFBMDA0MzYzQUMgLyogUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0gKi8s
CisJCQkJNDE4ODlENzQyMTZCQjdCNjAwNDYxNEREIC8qIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVy
cytQcml2YXRlLmggKi8sCiAJCQkJNDE0RkI4NjkyMTZCQjc2NzAwMUY1NDkyIC8qIFJUQ1J0cEVu
Y29kaW5nUGFyYW1ldGVycy5oICovLAogCQkJCTQxNEZCODZBMjE2QkI3NjgwMDFGNTQ5MiAvKiBS
VENSdHBFbmNvZGluZ1BhcmFtZXRlcnMubW0gKi8sCi0JCQkJNDE4ODlENzQyMTZCQjdCNjAwNDYx
NEREIC8qIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycytQcml2YXRlLmggKi8sCiAJCQkJNDE0RkI4
NjgyMTZCQjc2NjAwMUY1NDkyIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIrUHJpdmF0ZS5o
ICovLAogCQkJCTQxNEZCODY3MjE2QkI3NjYwMDFGNTQ5MiAvKiBSVENSdHBGcmFnbWVudGF0aW9u
SGVhZGVyK1ByaXZhdGUubW0gKi8sCiAJCQkJNDE0NEIzRTcyMTY5QzVFMzAwNDM2M0FDIC8qIFJU
Q1ZpZGVvQ29kZWNJbmZvK1ByaXZhdGUuaCAqLywKQEAgLTg0NjIsMTAgKzg1MDAsMTAgQEAKIAkJ
CQk0MTYyMjVEMDIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5Lm1tICov
LAogCQkJCTQxNjIyNUNEMjE2OTgxODAwMEE5MUM5QiAvKiB2aWRlb19lbmNvZGVyX2ZhY3Rvcnku
aCAqLywKIAkJCQk0MTYyMjVDQzIxNjk4MTgwMDBBOTFDOUIgLyogdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5Lm1tICovLAotCQkJCTQxNjIyNUNCMjE2OTgxODAwMEE5MUM5QiAvKiB2aWRlb19mcmFtZV9i
dWZmZXIuaCAqLywKLQkJCQk0MTYyMjVDRjIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZnJhbWVf
YnVmZmVyLm1tICovLAogCQkJCTQxNjIyNUNFMjE2OTgxODAwMEE5MUM5QiAvKiB2aWRlb19mcmFt
ZS5oICovLAogCQkJCTQxNjIyNUQxMjE2OTgxODEwMEE5MUM5QiAvKiB2aWRlb19mcmFtZS5tbSAq
LywKKwkJCQk0MTYyMjVDQjIxNjk4MTgwMDBBOTFDOUIgLyogdmlkZW9fZnJhbWVfYnVmZmVyLmgg
Ki8sCisJCQkJNDE2MjI1Q0YyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1lX2J1ZmZlci5t
bSAqLywKIAkJCSk7CiAJCQlwYXRoID0gYXBpOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTg0ODgsOCArODUyNiw4IEBACiAJCTQxNjIyNUVBMjE2OTgxQkEwMEE5MUM5QiAvKiBjb21w
b25lbnRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0
MTNFNjc4NzIxNjk4N0E1MDBFRjM3RUQgLyogdmlkZW9fZnJhbWVfYnVmZmVyICovLAogCQkJCTQx
NjIyNUVCMjE2OTgxQ0UwMEE5MUM5QiAvKiB2aWRlb19jb2RlYyAqLywKKwkJCQk0MTNFNjc4NzIx
Njk4N0E1MDBFRjM3RUQgLyogdmlkZW9fZnJhbWVfYnVmZmVyICovLAogCQkJKTsKIAkJCW5hbWUg
PSBjb21wb25lbnRzOwogCQkJcGF0aCA9IHNkay9vYmpjL2NvbXBvbmVudHM7CkBAIC04NTAyLDkg
Kzg1NDAsOSBAQAogCQkJCTQxNjIyNUY1MjE2OTgxRjQwMEE5MUM5QiAvKiBoZWxwZXJzLmggKi8s
CiAJCQkJNDE3OTUzQUMyMTY5ODIzRDAwMjgyNjZCIC8qIG5hbHVfcmV3cml0ZXIuY2MgKi8sCiAJ
CQkJNDExNTIxRDUyMTY5ODIyMDAwMEFCQUY3IC8qIG5hbHVfcmV3cml0ZXIuaCAqLywKKwkJCQk0
MTc5NTNCMjIxNjk4MjQxMDAyODI2NkIgLyogUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0K1ByaXZh
dGUuaCAqLywKIAkJCQk0MTYyMjVGMTIxNjk4MUYzMDBBOTFDOUIgLyogUlRDQ29kZWNTcGVjaWZp
Y0luZm9IMjY0LmggKi8sCiAJCQkJNDE2MjI1RUQyMTY5ODFGMjAwQTkxQzlCIC8qIFJUQ0NvZGVj
U3BlY2lmaWNJbmZvSDI2NC5tbSAqLywKLQkJCQk0MTc5NTNCMjIxNjk4MjQxMDAyODI2NkIgLyog
UlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0K1ByaXZhdGUuaCAqLywKIAkJCQk0MTc5NTNCMzIxNjk4
MjQyMDAyODI2NkIgLyogUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaCAqLywKIAkJCQk0
MTc5NTNBRDIxNjk4MjNFMDAyODI2NkIgLyogUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3Rvcnku
bSAqLywKIAkJCQk0MTYyMjVGNzIxNjk4MUY0MDBBOTFDOUIgLyogUlRDRGVmYXVsdFZpZGVvRW5j
b2RlckZhY3RvcnkuaCAqLywKQEAgLTg1NDUsMTEgKzg1ODMsMTEgQEAKIAkJNDE3OTUzREQyMTY5
ODNCMjAwMjgyNjZCIC8qIGluY2x1ZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAotCQkJCTQxNzk1M0UwMjE2OTgzQzkwMDI4MjY2QiAvKiBtb2R1bGVfY29tbW9u
X3R5cGVzX3B1YmxpYy5oICovLAorCQkJCTQxNzk1M0RGMjE2OTgzQzkwMDI4MjY2QiAvKiBtb2R1
bGUuaCAqLywKIAkJCQk0MTc5NTNFMTIxNjk4M0NBMDAyODI2NkIgLyogbW9kdWxlX2NvbW1vbl90
eXBlcy5jYyAqLywKIAkJCQk0MTc5NTNFMjIxNjk4M0NBMDAyODI2NkIgLyogbW9kdWxlX2NvbW1v
bl90eXBlcy5oICovLAorCQkJCTQxNzk1M0UwMjE2OTgzQzkwMDI4MjY2QiAvKiBtb2R1bGVfY29t
bW9uX3R5cGVzX3B1YmxpYy5oICovLAogCQkJCTQxNzk1M0RFMjE2OTgzQzkwMDI4MjY2QiAvKiBt
b2R1bGVfZmVjX3R5cGVzLmggKi8sCi0JCQkJNDE3OTUzREYyMTY5ODNDOTAwMjgyNjZCIC8qIG1v
ZHVsZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpbmNsdWRlOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTg1NzIsNyArODYxMCw3IEBACiAJCQkJNDEzRTY3OUMyMTY5ODg5NDAwRUYz
N0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5oICovLAogCQkJCTQxM0U2NzlGMjE2
OTg4OTUwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMubSAqLywKIAkJCQk0
MTNFNjc4MzIxNjk4NzdEMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MuaCAqLywK
LQkJCQk0MTNFNjc4NDIxNjk4NzdEMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3Mu
bW0gKi8sCisJCQkJNDFGQ0JCODcyMUIyMDBEQjAwQTVERjI3IC8qIFJUQ1ZpZGVvRW5jb2RlclNl
dHRpbmdzLm0gKi8sCiAJCQkJNDEzRTY3OEMyMTY5ODdEQjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRnJh
bWUuaCAqLywKIAkJCQk0MTNFNjc4RDIxNjk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9GcmFtZS5t
bSAqLywKIAkJCQk0MTNFNjc4RTIxNjk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9GcmFtZUJ1ZmZl
ci5oICovLApAQCAtODU5NSwxMSArODYzMywxMSBAQAogCQk0MTc5NTNGQzIxNjk4NEY0MDAyODI2
NkIgLyogdmlkZW9fY29kZWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCTQxM0U2NzY0MjE2OTg1NDUwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJWUDgu
bW0gKi8sCiAJCQkJNDE3OTUzRkQyMTY5ODUxRjAwMjgyNjZCIC8qIFJUQ1ZpZGVvQ29kZWNDb25z
dGFudHMuaCAqLywKIAkJCQk0MTc5NTNGRjIxNjk4NTFGMDAyODI2NkIgLyogUlRDVmlkZW9Db2Rl
Y0NvbnN0YW50cy5tbSAqLywKIAkJCQk0MTc5NTQwMjIxNjk4NTIwMDAyODI2NkIgLyogUlRDVmlk
ZW9EZWNvZGVyVlA4Lm1tICovLAogCQkJCTQxNzk1NDAxMjE2OTg1MUYwMDI4MjY2QiAvKiBSVENW
aWRlb0VuY29kZXJWUDguaCAqLywKKwkJCQk0MTNFNjc2NDIxNjk4NTQ1MDBFRjM3RUQgLyogUlRD
VmlkZW9FbmNvZGVyVlA4Lm1tICovLAogCQkJCTQxNzk1M0ZFMjE2OTg1MUYwMDI4MjY2QiAvKiBS
VENXcmFwcGVkTmF0aXZlVmlkZW9EZWNvZGVyLmggKi8sCiAJCQkJNDE3OTU0MDMyMTY5ODUyMDAw
MjgyNjZCIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIubW0gKi8sCiAJCQkJNDE3OTU0
MDQyMTY5ODUyMDAwMjgyNjZCIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIuaCAqLywK
QEAgLTg3NTIsMTIgKzg3OTAsMjAgQEAKIAkJNDE5MjQxNjUyMTI3Mzg3OTAwNjM0RkNGIC8qIGV4
cGVyaW1lbnRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk0MUY5QkZDOTIwNTFEREEyMDBBQkYwQjkgLyogYWxyX2V4cGVyaW1lbnQuY2MgKi8sCisJCQkJ
NDFGOUJGQ0EyMDUxRERBMjAwQUJGMEI5IC8qIGFscl9leHBlcmltZW50LmggKi8sCiAJCQkJNDE5
MjQxNkIyMTI3Mzg5QjAwNjM0RkNGIC8qIGNvbmdlc3Rpb25fY29udHJvbGxlcl9leHBlcmltZW50
LmNjICovLAogCQkJCTQxOTI0MTY3MjEyNzM4OUEwMDYzNEZDRiAvKiBjb25nZXN0aW9uX2NvbnRy
b2xsZXJfZXhwZXJpbWVudC5oICovLAorCQkJCTQxRkNCQjREMjFCMUZFNDUwMEE1REYyNyAvKiBj
cHVfc3BlZWRfZXhwZXJpbWVudC5jYyAqLywKKwkJCQk0MUZDQkI0QjIxQjFGRTQ0MDBBNURGMjcg
LyogY3B1X3NwZWVkX2V4cGVyaW1lbnQuaCAqLywKIAkJCQk0MTkyNDE2ODIxMjczODlBMDA2MzRG
Q0YgLyogZmllbGRfdHJpYWxfcGFyc2VyLmNjICovLAogCQkJCTQxOTI0MTY5MjEyNzM4OUIwMDYz
NEZDRiAvKiBmaWVsZF90cmlhbF9wYXJzZXIuaCAqLywKIAkJCQk0MTkyNDFFNjIxMjc1QTc2MDA2
MzRGQ0YgLyogZmllbGRfdHJpYWxfdW5pdHMuY2MgKi8sCiAJCQkJNDE5MjQxRTUyMTI3NUE3NjAw
NjM0RkNGIC8qIGZpZWxkX3RyaWFsX3VuaXRzLmggKi8sCisJCQkJNDFGQ0JCNEMyMUIxRkU0NDAw
QTVERjI3IC8qIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjICovLAorCQkJCTQxRkNC
QjRFMjFCMUZFNDUwMEE1REYyNyAvKiBqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5oICov
LAorCQkJCTQxRkNCQjUwMjFCMUZFNDUwMEE1REYyNyAvKiBub3JtYWxpemVfc2ltdWxjYXN0X3Np
emVfZXhwZXJpbWVudC5jYyAqLywKKwkJCQk0MUZDQkI0RjIxQjFGRTQ1MDBBNURGMjcgLyogbm9y
bWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuaCAqLywKIAkJCQk0MTkyNDE2QTIxMjcz
ODlCMDA2MzRGQ0YgLyogcXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnQuY2MgKi8sCiAJCQkJNDE5
MjQxNjYyMTI3Mzg5QTAwNjM0RkNGIC8qIHF1YWxpdHlfc2NhbGluZ19leHBlcmltZW50LmggKi8s
CiAJCQkJNDE3OTUzRTgyMTY5ODNGMTAwMjgyNjZCIC8qIHJ0dF9tdWx0X2V4cGVyaW1lbnQuY2Mg
Ki8sCkBAIC04OTM4LDYgKzg5ODQsOCBAQAogCQkJCTQxOUM4MzRDMUZFMjQ2NjQwMDQwQzMwRiAv
KiBoaXN0b2dyYW1fcGVyY2VudGlsZV9jb3VudGVyLmggKi8sCiAJCQkJNDE5QzgzNEQxRkUyNDY2
NDAwNDBDMzBGIC8qIG1hdGh1dGlscy5oICovLAogCQkJCTQxOUM4MzRBMUZFMjQ2NjQwMDQwQzMw
RiAvKiBtb2Rfb3BzLmggKi8sCisJCQkJNDFGQ0JCMTMyMUIxRjdBQTAwQTVERjI3IC8qIG1vdmlu
Z19hdmVyYWdlLmNjICovLAorCQkJCTQxRkNCQjE0MjFCMUY3QUEwMEE1REYyNyAvKiBtb3Zpbmdf
YXZlcmFnZS5oICovLAogCQkJCTQxOUM4MzQ5MUZFMjQ2NjQwMDQwQzMwRiAvKiBtb3ZpbmdfbWF4
X2NvdW50ZXIuaCAqLywKIAkJCQk0MTlDODM0NjFGRTI0NjYzMDA0MEMzMEYgLyogbW92aW5nX21l
ZGlhbl9maWx0ZXIuaCAqLywKIAkJCQk0MTlDODM0MjFGRTI0NjYyMDA0MEMzMEYgLyogcGVyY2Vu
dGlsZV9maWx0ZXIuaCAqLywKQEAgLTkxNTksMTQgKzkyMDcsMTUgQEAKIAkJNDFBMDhCRDkyMTI3
MkYzRTAwMUQ1RDdCIC8qIGFnYzIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTQxMjk5Qjk4MjEyNzM2QjIwMEIzNDE0QiAvKiBybm5fdmFkICovLAogCQkJ
CTQxRDZCNDZFMjEyNzMxQTQwMDhGOTM1MyAvKiBhZGFwdGl2ZV9hZ2MuY2MgKi8sCiAJCQkJNDFE
NkI0NjQyMTI3MzFBMjAwOEY5MzUzIC8qIGFkYXB0aXZlX2FnYy5oICovLAogCQkJCTQxQTA4QkU0
MjEyNzJGODUwMDFENUQ3QiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5jYyAqLywK
IAkJCQk0MUEwOEJEQjIxMjcyRjg0MDAxRDVEN0IgLyogYWRhcHRpdmVfZGlnaXRhbF9nYWluX2Fw
cGxpZXIuaCAqLywKLQkJCQk0MUEwOEJFOTIxMjcyRjg2MDAxRDVEN0IgLyogYWRhcHRpdmVfbW9k
ZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmNjICovLAotCQkJCTQxRDZCNDYyMjEyNzMxQTEwMDhGOTM1
MyAvKiBhZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuaCAqLywKIAkJCQk0MUQ2QjQ1
RjIxMjczMUExMDA4RjkzNTMgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3IuY2MgKi8s
CiAJCQkJNDFBMDhCREMyMTI3MkY4NDAwMUQ1RDdCIC8qIGFkYXB0aXZlX21vZGVfbGV2ZWxfZXN0
aW1hdG9yLmggKi8sCisJCQkJNDFBMDhCRTkyMTI3MkY4NjAwMUQ1RDdCIC8qIGFkYXB0aXZlX21v
ZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5jYyAqLywKKwkJCQk0MUQ2QjQ2MjIxMjczMUExMDA4Rjkz
NTMgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmggKi8sCiAJCQkJNDEzRTY3
OUEyMTY5ODg2MjAwRUYzN0VEIC8qIGFnYzJfY29tbW9uLmNjICovLAogCQkJCTQxRDZCNDZEMjEy
NzMxQTQwMDhGOTM1MyAvKiBhZ2MyX2NvbW1vbi5oICovLAogCQkJCTQxRDZCNDVFMjEyNzMxQTAw
MDhGOTM1MyAvKiBiaXF1YWRfZmlsdGVyLmNjICovLApAQCAtOTE3NywxOSArOTIyNiwxNCBAQAog
CQkJCTQxRDZCNDYwMjEyNzMxQTEwMDhGOTM1MyAvKiBkb3duX3NhbXBsZXIuaCAqLywKIAkJCQk0
MUEwOEJFNTIxMjcyRjg2MDAxRDVEN0IgLyogZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3Iu
Y2MgKi8sCiAJCQkJNDFBMDhCREYyMTI3MkY4NDAwMUQ1RDdCIC8qIGZpeGVkX2RpZ2l0YWxfbGV2
ZWxfZXN0aW1hdG9yLmggKi8sCi0JCQkJNDFENkI0NjUyMTI3MzFBMjAwOEY5MzUzIC8qIGZpeGVk
X2dhaW5fY29udHJvbGxlci5jYyAqLywKLQkJCQk0MUQ2QjQ2NzIxMjczMUEzMDA4RjkzNTMgLyog
Zml4ZWRfZ2Fpbl9jb250cm9sbGVyLmggKi8sCiAJCQkJNDFBMDhCREUyMTI3MkY4NDAwMUQ1RDdC
IC8qIGdhaW5fYXBwbGllci5jYyAqLywKIAkJCQk0MUEwOEJFNzIxMjcyRjg2MDAxRDVEN0IgLyog
Z2Fpbl9hcHBsaWVyLmggKi8sCi0JCQkJNDFBMDhCRTAyMTI3MkY4NTAwMUQ1RDdCIC8qIGdhaW5f
Y3VydmVfYXBwbGllci5jYyAqLywKLQkJCQk0MUQ2QjQ2OTIxMjczMUEzMDA4RjkzNTMgLyogZ2Fp
bl9jdXJ2ZV9hcHBsaWVyLmggKi8sCiAJCQkJNDFBMDhCRTEyMTI3MkY4NTAwMUQ1RDdCIC8qIGlu
dGVycG9sYXRlZF9nYWluX2N1cnZlLmNjICovLAogCQkJCTQxRDZCNDcwMjEyNzMxQTYwMDhGOTM1
MyAvKiBsaW1pdGVyLmNjICovLAogCQkJCTQxQTA4QkVBMjEyNzJGODYwMDFENUQ3QiAvKiBsaW1p
dGVyLmggKi8sCiAJCQkJNDFENkI0NjEyMTI3MzFBMTAwOEY5MzUzIC8qIG5vaXNlX2xldmVsX2Vz
dGltYXRvci5jYyAqLywKIAkJCQk0MUQ2QjQ2QTIxMjczMUEzMDA4RjkzNTMgLyogbm9pc2Vfc3Bl
Y3RydW1fZXN0aW1hdG9yLmNjICovLAogCQkJCTQxQTA4QkUyMjEyNzJGODUwMDFENUQ3QiAvKiBu
b2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuaCAqLywKLQkJCQk0MTI5OUI5ODIxMjczNkIyMDBCMzQx
NEIgLyogcm5uX3ZhZCAqLywKIAkJCQk0MUQ2QjQ2ODIxMjczMUEzMDA4RjkzNTMgLyogc2F0dXJh
dGlvbl9wcm90ZWN0b3IuY2MgKi8sCiAJCQkJNDFENkI0NkIyMTI3MzFBMzAwOEY5MzUzIC8qIHNh
dHVyYXRpb25fcHJvdGVjdG9yLmggKi8sCiAJCQkJNDFENkI0NkYyMTI3MzFBNDAwOEY5MzUzIC8q
IHNpZ25hbF9jbGFzc2lmaWVyLmNjICovLApAQCAtOTYyNywxMCArOTY3MSwxMSBAQAogCQkJCTQx
RTAyQzk5MjEyNzM1MkIwMEMyN0NENiAvKiBhbHJfZGV0ZWN0b3IuaCAqLywKIAkJCQk0MUUwMkM5
QTIxMjczNTJCMDBDMjdDRDYgLyogYml0cmF0ZV9lc3RpbWF0b3IuY2MgKi8sCiAJCQkJNDFFMDJD
OTgyMTI3MzUyQjAwQzI3Q0Q2IC8qIGJpdHJhdGVfZXN0aW1hdG9yLmggKi8sCisJCQkJNDFGQ0JC
M0YyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xs
ZXIuY2MgKi8sCisJCQkJNDFGQ0JCM0UyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2lu
ZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCAqLywKIAkJCQk0MUUwMkM5MTIxMjczNTI5MDBDMjdD
RDYgLyogZGVsYXlfYmFzZWRfYndlLmNjICovLAogCQkJCTQxRTAyQzk3MjEyNzM1MkEwMEMyN0NE
NiAvKiBkZWxheV9iYXNlZF9id2UuaCAqLywKIAkJCQk0MUUwMkNBMzIxMjczNTJEMDBDMjdDRDYg
LyogZGVsYXlfaW5jcmVhc2VfZGV0ZWN0b3JfaW50ZXJmYWNlLmggKi8sCi0JCQkJNDFFMDJDOTUy
MTI3MzUyQTAwQzI3Q0Q2IC8qIGdvb2dfY2NfZmFjdG9yeS5jYyAqLywKIAkJCQk0MUUwMkNBMjIx
MjczNTJDMDBDMjdDRDYgLyogZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuY2MgKi8sCiAJCQkJNDFF
MDJDOTYyMTI3MzUyQTAwQzI3Q0Q2IC8qIGdvb2dfY2NfbmV0d29ya19jb250cm9sLmggKi8sCiAJ
CQkJNDFFMDJDOUQyMTI3MzUyQjAwQzI3Q0Q2IC8qIG1lZGlhbl9zbG9wZV9lc3RpbWF0b3IuY2Mg
Ki8sCkBAIC05NjUwLDYgKzk2OTUsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDFFMDJDQzcy
MTI3MzVCNjAwQzI3Q0Q2IC8qIGJpdHJhdGVfc2V0dGluZ3MuY2MgKi8sCiAJCQkJNDFFMDJDQ0Iy
MTI3MzVCNzAwQzI3Q0Q2IC8qIGJpdHJhdGVfc2V0dGluZ3MuaCAqLywKKwkJCQk0MUZDQkI1RTIx
QjFGRUM0MDBBNURGMjcgLyogZ29vZ19jY19mYWN0b3J5LmNjICovLAorCQkJCTQxRkNCQjVEMjFC
MUZFQzQwMEE1REYyNyAvKiBnb29nX2NjX2ZhY3RvcnkuaCAqLywKIAkJCQk0MUUwMkNDQTIxMjcz
NUI3MDBDMjdDRDYgLyogbmV0d29ya19jb250cm9sLmggKi8sCiAJCQkJNDFFMDJDQzgyMTI3MzVC
NzAwQzI3Q0Q2IC8qIG5ldHdvcmtfdHlwZXMuY2MgKi8sCiAJCQkJNDFFMDJDQzkyMTI3MzVCNzAw
QzI3Q0Q2IC8qIG5ldHdvcmtfdHlwZXMuaCAqLywKQEAgLTk2NjAsOCArOTcwNyw4IEBACiAJCTQx
RTAyQ0Q1MjEyNzM2MjMwMEMyN0NENiAvKiBydHAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCTQxRTAyQ0Q2MjEyNzM2M0MwMEMyN0NENiAvKiBwYWNlcl9j
b250cm9sbGVyLmNjICovLAotCQkJCTQxOTI0MTg5MjEyNzQ5QzgwMDYzNEZDRiAvKiBwYWNlcl9j
b250cm9sbGVyLmggKi8sCisJCQkJNDFGQ0JCMzUyMUIxRjhGQzAwQTVERjI3IC8qIGNvbnRyb2xf
aGFuZGxlci5jYyAqLywKKwkJCQk0MUZDQkIzNDIxQjFGOEZCMDBBNURGMjcgLyogY29udHJvbF9o
YW5kbGVyLmggKi8sCiAJCQkJNDE5MjQxODgyMTI3NDlDNzAwNjM0RkNGIC8qIHNlbmRfc2lkZV9j
b25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgKi8sCiAJCQkJNDFFMDJDRDgyMTI3MzYzRDAwQzI3Q0Q2
IC8qIHNlbmRfdGltZV9oaXN0b3J5LmNjICovLAogCQkJCTQxOTI0MTg3MjEyNzQ5QzcwMDYzNEZD
RiAvKiBzZW5kX3RpbWVfaGlzdG9yeS5oICovLApAQCAtOTg3Nyw2ICs5OTI0LDggQEAKIAkJCQk0
MUYyNjNBQjIxMjY4MEE4MDAyNzRGNTkgLyogYXJjaC5oICovLAogCQkJCTQxRjI2M0E5MjEyNjgw
QTcwMDI3NEY1OSAvKiBhc21fZGVmaW5lcy5oICovLAogCQkJCTQxRjI2M0E4MjEyNjgwQTcwMDI3
NEY1OSAvKiBCVUlMRC5nbiAqLywKKwkJCQk0MUZDQkI3NDIxQjFGRkE0MDBBNURGMjcgLyogY29j
b2FfdGhyZWFkaW5nLmggKi8sCisJCQkJNDFGQ0JCNzMyMUIxRkZBNDAwQTVERjI3IC8qIGNvY29h
X3RocmVhZGluZy5tbSAqLywKIAkJCQk0MUYyNjNBNTIxMjY4MEE3MDAyNzRGNTkgLyogZmFsbHRo
cm91Z2guaCAqLywKIAkJCQk0MUYyNjNBMzIxMjY4MEE2MDAyNzRGNTkgLyogZmlsZV93cmFwcGVy
LmNjICovLAogCQkJCTQxRjI2M0FBMjEyNjgwQTgwMDI3NEY1OSAvKiBmaWxlX3dyYXBwZXIuaCAq
LywKQEAgLTk5MDMsOSArOTk1Miw5IEBACiAJCTQxRjQxMUJEMUVGOERCODIwMDM0M0MyNiAvKiB2
cDggKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNDVG
NjE1MUZFMUVGNUMwMEVCOUNBRiAvKiBpbmNsdWRlICovLAogCQkJCTQxOUM4NDJCMUZFMjRFN0Uw
MDQwQzMwRiAvKiBkZWZhdWx0X3RlbXBvcmFsX2xheWVycy5jYyAqLywKIAkJCQk0MTlDODQzMTFG
RTI0RTgwMDA0MEMzMEYgLyogZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuaCAqLywKLQkJCQk0MTQ1
RjYxNTFGRTFFRjVDMDBFQjlDQUYgLyogaW5jbHVkZSAqLywKIAkJCQk0MTNFNjc3MTIxNjk4NjNC
MDBFRjM3RUQgLyogbGlidnB4X2ludGVyZmFjZS5jYyAqLywKIAkJCQk0MTNFNjc2RjIxNjk4NjNB
MDBFRjM3RUQgLyogbGlidnB4X2ludGVyZmFjZS5oICovLAogCQkJCTQxMjk0MDkwMjEyRTEyOEMw
MEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2RlY29kZXIuY2MgKi8sCkBAIC05OTE0LDkgKzk5NjMsOCBA
QAogCQkJCTQxMjk0MDhGMjEyRTEyOEMwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2VuY29kZXIuaCAq
LywKIAkJCQk0MTlDODQzMDFGRTI0RTdGMDA0MEMzMEYgLyogc2NyZWVuc2hhcmVfbGF5ZXJzLmNj
ICovLAogCQkJCTQxOUM4NDJDMUZFMjRFN0YwMDQwQzMwRiAvKiBzY3JlZW5zaGFyZV9sYXllcnMu
aCAqLywKLQkJCQk0MTNFNjc2RTIxNjk4NjNBMDBFRjM3RUQgLyogdGVtcG9yYWxfbGF5ZXJzX2No
ZWNrZXIuY2MgKi8sCiAJCQkJNDE5Qzg0MzMxRkUyNEU4MDAwNDBDMzBGIC8qIHRlbXBvcmFsX2xh
eWVycy5oICovLAotCQkJCTQxM0U2NzcwMjE2OTg2M0IwMEVGMzdFRCAvKiB2cDhfdGVtcG9yYWxf
bGF5ZXJzLmNjICovLAorCQkJCTQxM0U2NzZFMjE2OTg2M0EwMEVGMzdFRCAvKiB0ZW1wb3JhbF9s
YXllcnNfY2hlY2tlci5jYyAqLywKIAkJCSk7CiAJCQluYW1lID0gdnA4OwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTEwMDM3LDEzICsxMDA4NSw0NCBAQAogCQkJbmFtZSA9IGluY2x1
ZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk0MUY5QkZDODIwNTFERDhF
MDBBQkYwQjkgLyogZXhwZXJpbWVudHMgKi8gPSB7CisJCTQxRkNCQjFGMjFCMUY4MTQwMEE1REYy
NyAvKiBpbnRlcm5hbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJNDFGOUJGQzkyMDUxRERBMjAwQUJGMEI5IC8qIGFscl9leHBlcmltZW50LmNjICovLAot
CQkJCTQxRjlCRkNBMjA1MUREQTIwMEFCRjBCOSAvKiBhbHJfZXhwZXJpbWVudC5oICovLAorCQkJ
CTQxRkNCQjIwMjFCMUY4MkUwMEE1REYyNyAvKiB0aHJvd19kZWxlZ2F0ZS5jYyAqLywKKwkJCQk0
MUZDQkIyMTIxQjFGODJGMDBBNURGMjcgLyogdGhyb3dfZGVsZWdhdGUuaCAqLywKIAkJCSk7Ci0J
CQluYW1lID0gZXhwZXJpbWVudHM7CisJCQluYW1lID0gaW50ZXJuYWw7CisJCQlwYXRoID0gYmFz
ZS9pbnRlcm5hbDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTQxRkNCQjI0
MjFCMUY4NUQwMEE1REYyNyAvKiBuZXR3b3JrICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQk0MUZDQkIyNTIxQjFGODdFMDBBNURGMjcgLyogc2VudF9wYWNr
ZXQuY2MgKi8sCisJCQkJNDFGQ0JCMjYyMUIxRjg3RTAwQTVERjI3IC8qIHNlbnRfcGFja2V0Lmgg
Ki8sCisJCQkpOworCQkJbmFtZSA9IG5ldHdvcms7CisJCQlwYXRoID0gcnRjX2Jhc2UvbmV0d29y
azsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTQxRkNCQjI5MjFCMUY4QTMw
MEE1REYyNyAvKiBjcnlwdG8gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTQxRkNCQjJEMjFCMUY4QjYwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25zLmNjICov
LAorCQkJCTQxRkNCQjJBMjFCMUY4QjYwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25zLmggKi8sCisJ
CQkJNDFGQ0JCMkIyMUIxRjhCNjAwQTVERjI3IC8qIGZyYW1lZGVjcnlwdG9yaW50ZXJmYWNlLmgg
Ki8sCisJCQkJNDFGQ0JCMkMyMUIxRjhCNjAwQTVERjI3IC8qIGZyYW1lZW5jcnlwdG9yaW50ZXJm
YWNlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGNyeXB0bzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCTQxRkNCQjgxMjFCMjAwNUEwMEE1REYyNyAvKiBpbnRlcm5hbCAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDFGQ0JCODIyMUIy
MDA3QjAwQTVERjI3IC8qIG1lbXV0aWwuY2MgKi8sCisJCQkJNDFGQ0JCODMyMUIyMDA3QjAwQTVE
RjI3IC8qIG1lbXV0aWwuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW50ZXJuYWw7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQk0MUZFODY0RTIxNUM1MkU5MDBCNjJDMDcgLyog
bGlzdGZtdHMgKi8gPSB7CkBAIC0xMDg1MywxMiArMTA5MzIsMTIgQEAKIAkJNUM0QjRCNTgxRTQz
MUM0OTAwMjY1MUM4IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTQxNDRCM0VDMjE2OUM2MUMwMDQzNjNBQyAvKiBoZWxwZXJzICovLAogCQkJ
CTQxNzk1M0ZCMjE2OTg0REMwMDI4MjY2QiAvKiBhcGkgKi8sCiAJCQkJNDE3OTUzRjIyMTY5ODQ4
MzAwMjgyNjZCIC8qIGJhc2UgKi8sCiAJCQkJNDE2MjI1RUEyMTY5ODFCQTAwQTkxQzlCIC8qIGNv
bXBvbmVudHMgKi8sCi0JCQkJNDE2MjI1QzcyMTY5ODE0MTAwQTkxQzlCIC8qIG5hdGl2ZSAqLywK
IAkJCQk1QzRCNEI1OTFFNDMxQzU1MDAyNjUxQzggLyogRnJhbWV3b3JrICovLAorCQkJCTQxNDRC
M0VDMjE2OUM2MUMwMDQzNjNBQyAvKiBoZWxwZXJzICovLAorCQkJCTQxNjIyNUM3MjE2OTgxNDEw
MEE5MUM5QiAvKiBuYXRpdmUgKi8sCiAJCQkpOwogCQkJbmFtZSA9IG9iamM7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMTA4OTQsNyArMTA5NzMsNiBAQAogCQkJCTVDNEI0QzEwMUU0
MzFGNzUwMDI2NTFDOCAvKiBiaXRyYXRlX2FkanVzdGVyLmNjICovLAogCQkJCTVDNEI0QzEyMUU0
MzFGNzUwMDI2NTFDOCAvKiBpNDIwX2J1ZmZlcl9wb29sLmNjICovLAogCQkJCTVDNEI0QzEzMUU0
MzFGNzUwMDI2NTFDOCAvKiBpbmNvbWluZ192aWRlb19zdHJlYW0uY2MgKi8sCi0JCQkJNUM0QjRD
MTYxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX2ZyYW1lLmNjICovLAogCQkJCTVDNEI0QzE1MUU0
MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZV9idWZmZXIuY2MgKi8sCiAJCQkJNUM0QjRDMTcx
RTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX3JlbmRlcl9mcmFtZXMuY2MgKi8sCiAJCQkJNUM0QjRD
MTgxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX3JlbmRlcl9mcmFtZXMuaCAqLywKQEAgLTExMDk3
LDE3ICsxMTE3NSwyNSBAQAogCQk1QzYzRjhFMjFFNDE3MzJCMDAyQ0E1MzEgLyogYXBpICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0MUY5QkY3OTIwNTFD
N0ZEMDBBQkYwQjkgLyogYXJyYXlfdmlldy5oICovLAogCQkJCTVDRDI4NTNCMUU2QTYxQkUwMDk0
RkRDOCAvKiBhdWRpb19jb2RlY3MgKi8sCisJCQkJNUNERDhDNDUxRTQzQzU3OTAwNjIxRTkyIC8q
IGNhbGwgKi8sCisJCQkJNDFGQ0JCMjkyMUIxRjhBMzAwQTVERjI3IC8qIGNyeXB0byAqLywKKwkJ
CQk0MTQ1RTRDMDFFRjg5NjI4MDBGQ0Y2RTYgLyogc3RhdHMgKi8sCisJCQkJNDFFMDJDQzYyMTI3
MzU5RjAwQzI3Q0Q2IC8qIHRyYW5zcG9ydCAqLywKKwkJCQk0MTkyNDFENDIxMjc1QTE4MDA2MzRG
Q0YgLyogdW5pdHMgKi8sCisJCQkJNUNEMjg0NjAxRTZBNTdERDAwOTRGREM4IC8qIHZpZGVvICov
LAorCQkJCTQxMjQ1NTU4MUVGODhBRDkwMEYxMTgwOSAvKiB2aWRlb19jb2RlY3MgKi8sCisJCQkJ
NDFGOUJGNzkyMDUxQzdGRDAwQUJGMEI5IC8qIGFycmF5X3ZpZXcuaCAqLywKIAkJCQk0MTVGMUZD
QTIxMjczMEYwMDAwNjRDQkYgLyogYXVkaW9fZnJhbWUuY2MgKi8sCiAJCQkJNDE1RjFGQ0IyMTI3
MzBGMDAwMDY0Q0JGIC8qIGF1ZGlvX2ZyYW1lLmggKi8sCiAJCQkJNDE1RjFGQzkyMTI3MzBGMDAw
MDY0Q0JGIC8qIGF1ZGlvX21peGVyLmggKi8sCiAJCQkJNDFGMjYzNzUyMTI2N0I3NjAwMjc0RjU5
IC8qIGF1ZGlvX29wdGlvbnMuY2MgKi8sCiAJCQkJNDFGMjYzNzgyMTI2N0I3NjAwMjc0RjU5IC8q
IGF1ZGlvX29wdGlvbnMuaCAqLywKIAkJCQk0MUYyNjM3OTIxMjY3Qjc3MDAyNzRGNTkgLyogYml0
cmF0ZV9jb25zdHJhaW50cy5oICovLAotCQkJCTVDREQ4QzQ1MUU0M0M1NzkwMDYyMUU5MiAvKiBj
YWxsICovLAogCQkJCTQxOUM4MzBFMUZFMjQyN0YwMDQwQzMwRiAvKiBjYW5kaWRhdGUuY2MgKi8s
CiAJCQkJNDFGOUJGNzcyMDUxQzdGRDAwQUJGMEI5IC8qIGNhbmRpZGF0ZS5oICovLAorCQkJCTQx
RkNCQjA5MjFCMUY1MzAwMEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5j
YyAqLywKKwkJCQk0MUZDQkIwRDIxQjFGNTM2MDBBNURGMjcgLyogY3JlYXRlX3BlZXJjb25uZWN0
aW9uX2ZhY3RvcnkuaCAqLywKIAkJCQk0MUY5QkY4MjIwNTFDODAwMDBBQkYwQjkgLyogY3J5cHRv
cGFyYW1zLmggKi8sCiAJCQkJNDFGMjYzNzcyMTI2N0I3NjAwMjc0RjU5IC8qIGRhdGFjaGFubmVs
aW50ZXJmYWNlLmNjICovLAogCQkJCTVDNjNGOEU3MUU0MTczN0IwMDJDQTUzMSAvKiBkYXRhY2hh
bm5lbGludGVyZmFjZS5oICovLApAQCAtMTExMTksNiArMTEyMDUsOCBAQAogCQkJCTQxRjI2MzdC
MjEyNjdCNzcwMDI3NEY1OSAvKiBqc2VwaWNlY2FuZGlkYXRlLmNjICovLAogCQkJCTVDNjNGOEYx
MUU0MTczN0IwMDJDQTUzMSAvKiBqc2VwaWNlY2FuZGlkYXRlLmggKi8sCiAJCQkJNUM2M0Y4RjMx
RTQxNzM3QjAwMkNBNTMxIC8qIGpzZXBzZXNzaW9uZGVzY3JpcHRpb24uaCAqLywKKwkJCQk0MUZD
QkIwQzIxQjFGNTMyMDBBNURGMjcgLyogbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5jYyAqLywK
KwkJCQk0MUZDQkIwQTIxQjFGNTMxMDBBNURGMjcgLyogbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFj
ZS5oICovLAogCQkJCTVDNjNGOEY2MUU0MTczN0IwMDJDQTUzMSAvKiBtZWRpYWNvbnN0cmFpbnRz
aW50ZXJmYWNlLmNjICovLAogCQkJCTVDNjNGOEY3MUU0MTczN0IwMDJDQTUzMSAvKiBtZWRpYWNv
bnN0cmFpbnRzaW50ZXJmYWNlLmggKi8sCiAJCQkJNUNEMjg2M0YxRTZBNjgzQTAwOTRGREM4IC8q
IG1lZGlhc3RyZWFtaW50ZXJmYWNlLmNjICovLApAQCAtMTExNDgsMTYgKzExMjM2LDEyIEBACiAJ
CQkJNUM2M0Y5MUIxRTQxNzM3QjAwMkNBNTMxIC8qIHJ0cHNlbmRlcmludGVyZmFjZS5oICovLAog
CQkJCTQxRjI2MzdDMjEyNjdCNzcwMDI3NEY1OSAvKiBydHB0cmFuc2NlaXZlcmludGVyZmFjZS5j
YyAqLywKIAkJCQk0MUY5QkY4MDIwNTFDN0ZGMDBBQkYwQjkgLyogcnRwdHJhbnNjZWl2ZXJpbnRl
cmZhY2UuaCAqLywKKwkJCQk0MUZDQkIwQjIxQjFGNTMyMDBBNURGMjcgLyogc2NvcGVkX3JlZnB0
ci5oICovLAogCQkJCTQxRjlCRjg0MjA1MUM4MDAwMEFCRjBCOSAvKiBzZXRyZW1vdGVkZXNjcmlw
dGlvbm9ic2VydmVyaW50ZXJmYWNlLmggKi8sCi0JCQkJNDE0NUU0QzAxRUY4OTYyODAwRkNGNkU2
IC8qIHN0YXRzICovLAogCQkJCTVDNjNGOTIxMUU0MTczN0IwMDJDQTUzMSAvKiBzdGF0c3R5cGVz
LmNjICovLAogCQkJCTVDNjNGOTIyMUU0MTczN0IwMDJDQTUzMSAvKiBzdGF0c3R5cGVzLmggKi8s
Ci0JCQkJNDFFMDJDQzYyMTI3MzU5RjAwQzI3Q0Q2IC8qIHRyYW5zcG9ydCAqLywKIAkJCQk0MUY5
QkY4MzIwNTFDODAwMDBBQkYwQjkgLyogdHVybmN1c3RvbWl6ZXIuaCAqLywKIAkJCQk1QzYzRjky
NDFFNDE3MzdCMDAyQ0E1MzEgLyogdW1hbWV0cmljcy5oICovLAotCQkJCTQxOTI0MUQ0MjEyNzVB
MTgwMDYzNEZDRiAvKiB1bml0cyAqLywKLQkJCQk1Q0QyODQ2MDFFNkE1N0REMDA5NEZEQzggLyog
dmlkZW8gKi8sCi0JCQkJNDEyNDU1NTgxRUY4OEFEOTAwRjExODA5IC8qIHZpZGVvX2NvZGVjcyAq
LywKIAkJCQk1QzYzRjkyODFFNDE3MzdCMDAyQ0E1MzEgLyogdmlkZW9zb3VyY2Vwcm94eS5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBhcGk7CkBAIC0xMTE5MSw4ICsxMTI3NSwxMiBAQAogCQkJCTQx
OTI0MTRGMjEyNzM3NkUwMDYzNEZDRiAvKiBmYWtlaWNldHJhbnNwb3J0LmggKi8sCiAJCQkJNDE5
MjQxNEUyMTI3Mzc2RTAwNjM0RkNGIC8qIGZha2VwYWNrZXR0cmFuc3BvcnQuaCAqLywKIAkJCQk1
QzYzRjk5NTFFNDE3NEY2MDAyQ0E1MzEgLyogZmFrZXBvcnRhbGxvY2F0b3IuaCAqLywKKwkJCQk0
MUZDQkI0MzIxQjFGREVFMDBBNURGMjcgLyogaWNlY3JlZGVudGlhbHNpdGVyYXRvci5jYyAqLywK
KwkJCQk0MUZDQkI0NTIxQjFGREVGMDBBNURGMjcgLyogaWNlY3JlZGVudGlhbHNpdGVyYXRvci5o
ICovLAogCQkJCTQxOUM4M0Q3MUZFMjQ3RjIwMDQwQzMwRiAvKiBpY2V0cmFuc3BvcnRpbnRlcm5h
bC5jYyAqLywKIAkJCQk0MTkyNDE1MDIxMjczNzZFMDA2MzRGQ0YgLyogaWNldHJhbnNwb3J0aW50
ZXJuYWwuaCAqLywKKwkJCQk0MUZDQkI0NDIxQjFGREVGMDBBNURGMjcgLyogbWRuc19tZXNzYWdl
LmNjICovLAorCQkJCTQxRkNCQjQyMjFCMUZERUUwMEE1REYyNyAvKiBtZG5zX21lc3NhZ2UuaCAq
LywKIAkJCQk1QzYzRjk5NzFFNDE3NEY2MDAyQ0E1MzEgLyogcDJwY29uc3RhbnRzLmNjICovLAog
CQkJCTVDNjNGOTk4MUU0MTc0RjYwMDJDQTUzMSAvKiBwMnBjb25zdGFudHMuaCAqLywKIAkJCQk1
QzYzRjk5QzFFNDE3NEY2MDAyQ0E1MzEgLyogcDJwdHJhbnNwb3J0Y2hhbm5lbC5jYyAqLywKQEAg
LTExMjQyLDggKzExMzMwLDYgQEAKIAkJCQk1QzYzRjlEOTFFNDE3NEY2MDAyQ0E1MzEgLyogdHVy
bnNlcnZlci5jYyAqLywKIAkJCQk1QzYzRjlEQTFFNDE3NEY2MDAyQ0E1MzEgLyogdHVybnNlcnZl
ci5oICovLAogCQkJCTVDNjNGOURCMUU0MTc0RjYwMDJDQTUzMSAvKiB1ZHBwb3J0LmggKi8sCi0J
CQkJNDE5QzgzRDMxRkUyNDdGMDAwNDBDMzBGIC8qIHVkcHRyYW5zcG9ydC5jYyAqLywKLQkJCQk0
MTkyNDE0RDIxMjczNzZFMDA2MzRGQ0YgLyogdWRwdHJhbnNwb3J0LmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGJhc2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTEyNTMsMTMgKzEx
MzM5LDEwIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1Q0QyODRDNDFFNkE2MDU3MDA5NEZEQzgg
LyogYXVkaW90cmFjay5jYyAqLywKIAkJCQk1Q0QyODRDNTFFNkE2MDU3MDA5NEZEQzggLyogYXVk
aW90cmFjay5oICovLAotCQkJCTVDNjNGQTNBMUU0MTc2MUYwMDJDQTUzMSAvKiBidW5kbGVmaWx0
ZXIuY2MgKi8sCi0JCQkJNUM2M0ZBM0IxRTQxNzYxRjAwMkNBNTMxIC8qIGJ1bmRsZWZpbHRlci5o
ICovLAogCQkJCTVDNjNGQTNEMUU0MTc2MUYwMDJDQTUzMSAvKiBjaGFubmVsLmNjICovLAogCQkJ
CTVDNjNGQTNFMUU0MTc2MUYwMDJDQTUzMSAvKiBjaGFubmVsLmggKi8sCiAJCQkJNUM2M0ZBNDAx
RTQxNzYxRjAwMkNBNTMxIC8qIGNoYW5uZWxtYW5hZ2VyLmNjICovLAogCQkJCTVDNjNGQTQxMUU0
MTc2MUYwMDJDQTUzMSAvKiBjaGFubmVsbWFuYWdlci5oICovLAotCQkJCTQxNDVFNEM5MUVGOENC
MzEwMEZDRjZFNiAvKiBjcmVhdGVwZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgKi8sCiAJCQkJNUNE
Mjg0QzYxRTZBNjA1NzAwOTRGREM4IC8qIGRhdGFjaGFubmVsLmNjICovLAogCQkJCTVDRDI4NEM3
MUU2QTYwNTcwMDk0RkRDOCAvKiBkYXRhY2hhbm5lbC5oICovLAogCQkJCTQxOUM4MkQ2MUZFMjBF
NTgwMDQwQzMwRiAvKiBkdGxzc3J0cHRyYW5zcG9ydC5jYyAqLywKQEAgLTExNDUxLDMxICsxMTUz
NCwzNyBAQAogCQk1Q0QyODQ2MDFFNkE1N0REMDA5NEZEQzggLyogdmlkZW8gKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxRkNCQjE3MjFCMUY3Q0MwMEE1
REYyNyAvKiBidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MgKi8sCisJ
CQkJNDFGQ0JCMUEyMUIxRjdDRDAwQTVERjI3IC8qIGJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeS5oICovLAogCQkJCTQxMDJGNkQyMjEyNzM0MTQwMDZBRThENyAvKiBjb2xv
cl9zcGFjZS5jYyAqLywKIAkJCQk0MTAyRjZEODIxMjczNDE2MDA2QUU4RDcgLyogY29sb3Jfc3Bh
Y2UuaCAqLywKIAkJCQk0MUYyNjNDNzIxMjY4MThBMDAyNzRGNTkgLyogZW5jb2RlZF9mcmFtZS5j
YyAqLywKIAkJCQk0MUYyNjNDMjIxMjY4MTg5MDAyNzRGNTkgLyogZW5jb2RlZF9mcmFtZS5oICov
LAorCQkJCTQxRkNCQjE5MjFCMUY3Q0MwMEE1REYyNyAvKiBlbmNvZGVkX2ltYWdlLmNjICovLAor
CQkJCTQxRkNCQjE4MjFCMUY3Q0MwMEE1REYyNyAvKiBlbmNvZGVkX2ltYWdlLmggKi8sCisJCQkJ
NDFGQ0JCNkYyMUIxRkY3NDAwQTVERjI3IC8qIGhkcl9tZXRhZGF0YS5jYyAqLywKKwkJCQk0MUZD
QkI3MDIxQjFGRjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmggKi8sCiAJCQkJNDEwMkY2RDYy
MTI3MzQxNTAwNkFFOEQ3IC8qIGkwMTBfYnVmZmVyLmNjICovLAogCQkJCTQxRjI2M0JGMjEyNjgx
ODkwMDI3NEY1OSAvKiBpMDEwX2J1ZmZlci5oICovLAogCQkJCTVDRDI4NDYxMUU2QTU3RjQwMDk0
RkRDOCAvKiBpNDIwX2J1ZmZlci5jYyAqLywKIAkJCQk1Q0QyODQ2MjFFNkE1N0Y0MDA5NEZEQzgg
LyogaTQyMF9idWZmZXIuaCAqLywKIAkJCQk0MTAyRjZEOTIxMjczNDE2MDA2QUU4RDcgLyogdmlk
ZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmNjICovLAogCQkJCTQxRjI2M0M0MjEyNjgxODkwMDI3NEY1
OSAvKiB2aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uaCAqLywKLQkJCQk0MTAyRjZEQTIxMjczNDE2
MDA2QUU4RDcgLyogdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oICovLAogCQkJCTQx
RjI2M0MxMjEyNjgxODkwMDI3NEY1OSAvKiB2aWRlb19iaXRyYXRlX2FsbG9jYXRvci5oICovLAor
CQkJCTQxMDJGNkRBMjEyNzM0MTYwMDZBRThENyAvKiB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9m
YWN0b3J5LmggKi8sCiAJCQkJNDE5Qzg0MEQxRkUyNDlBQTAwNDBDMzBGIC8qIHZpZGVvX2NvbnRl
bnRfdHlwZS5jYyAqLywKIAkJCQk0MTlDODQwRjFGRTI0OUFCMDA0MEMzMEYgLyogdmlkZW9fY29u
dGVudF90eXBlLmggKi8sCi0JCQkJNDEyNDU1NEExRUY4ODc0MzAwRjExODA5IC8qIHZpZGVvX2Zy
YW1lX2J1ZmZlci5jYyAqLywKLQkJCQk1Q0QyODQ2MzFFNkE1N0Y0MDA5NEZEQzggLyogdmlkZW9f
ZnJhbWVfYnVmZmVyLmggKi8sCiAJCQkJNUNEMjg0NjQxRTZBNTdGNDAwOTRGREM4IC8qIHZpZGVv
X2ZyYW1lLmNjICovLAogCQkJCTVDRDI4NDY1MUU2QTU3RjQwMDk0RkRDOCAvKiB2aWRlb19mcmFt
ZS5oICovLAorCQkJCTQxMjQ1NTRBMUVGODg3NDMwMEYxMTgwOSAvKiB2aWRlb19mcmFtZV9idWZm
ZXIuY2MgKi8sCisJCQkJNUNEMjg0NjMxRTZBNTdGNDAwOTRGREM4IC8qIHZpZGVvX2ZyYW1lX2J1
ZmZlci5oICovLAogCQkJCTVDRDI4NDY2MUU2QTU3RjQwMDk0RkRDOCAvKiB2aWRlb19yb3RhdGlv
bi5oICovLAogCQkJCTQxMDJGNkQzMjEyNzM0MTUwMDZBRThENyAvKiB2aWRlb19zaW5rX2ludGVy
ZmFjZS5oICovLAogCQkJCTQxRjI2M0M2MjEyNjgxOEEwMDI3NEY1OSAvKiB2aWRlb19zb3VyY2Vf
aW50ZXJmYWNlLmNjICovLAogCQkJCTQxRjI2M0JFMjEyNjgxODgwMDI3NEY1OSAvKiB2aWRlb19z
b3VyY2VfaW50ZXJmYWNlLmggKi8sCisJCQkJNDFGMjYzQzUyMTI2ODE4QTAwMjc0RjU5IC8qIHZp
ZGVvX3N0cmVhbV9kZWNvZGVyLmggKi8sCiAJCQkJNDEwMkY2RDEyMTI3MzQxNDAwNkFFOEQ3IC8q
IHZpZGVvX3N0cmVhbV9kZWNvZGVyX2NyZWF0ZS5jYyAqLywKIAkJCQk0MTAyRjZENDIxMjczNDE1
MDA2QUU4RDcgLyogdmlkZW9fc3RyZWFtX2RlY29kZXJfY3JlYXRlLmggKi8sCi0JCQkJNDFGMjYz
QzUyMTI2ODE4QTAwMjc0RjU5IC8qIHZpZGVvX3N0cmVhbV9kZWNvZGVyLmggKi8sCiAJCQkJNDEw
MkY2RDUyMTI3MzQxNTAwNkFFOEQ3IC8qIHZpZGVvX3N0cmVhbV9lbmNvZGVyX2NyZWF0ZS5jYyAq
LywKIAkJCQk0MUYyNjNDMDIxMjY4MTg5MDAyNzRGNTkgLyogdmlkZW9fc3RyZWFtX2VuY29kZXJf
Y3JlYXRlLmggKi8sCiAJCQkJNDFGMjYzQzMyMTI2ODE4OTAwMjc0RjU5IC8qIHZpZGVvX3N0cmVh
bV9lbmNvZGVyX2ludGVyZmFjZS5oICovLApAQCAtMTE3NjIsOCArMTE4NTEsNiBAQAogCQkJCTVD
REQ4MzZDMUU0MzlBMzUwMDYyMUU5MiAvKiBmcmFtZV9kcm9wcGVyLmggKi8sCiAJCQkJNUNERDgz
NkQxRTQzOUEzNTAwNjIxRTkyIC8qIGl2Zl9maWxlX3dyaXRlci5jYyAqLywKIAkJCQk1Q0REODM2
RTFFNDM5QTM1MDA2MjFFOTIgLyogaXZmX2ZpbGVfd3JpdGVyLmggKi8sCi0JCQkJNUNERDgzNkYx
RTQzOUEzNTAwNjIxRTkyIC8qIG1vdmluZ19hdmVyYWdlLmNjICovLAotCQkJCTVDREQ4MzcwMUU0
MzlBMzUwMDYyMUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5oICovLAogCQkJCTVDREQ4MzczMUU0MzlB
MzUwMDYyMUU5MiAvKiBxdWFsaXR5X3NjYWxlci5jYyAqLywKIAkJCQk1Q0REODM3NDFFNDM5QTM1
MDA2MjFFOTIgLyogcXVhbGl0eV9zY2FsZXIuaCAqLywKIAkJCQk0MTkyNDFFQTIxMjc1QUZBMDA2
MzRGQ0YgLyogc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yLmNjICovLApAQCAtMTE5MDcsOCArMTE5
OTQsNiBAQAogCQkJCTVDREQ4NEY5MUU0M0IxRUEwMDYyMUU5MiAvKiBhdWRpb19jb2RpbmdfbW9k
dWxlLmNjICovLAogCQkJCTVDREQ4NEZCMUU0M0IxRUEwMDYyMUU5MiAvKiBjYWxsX3N0YXRpc3Rp
Y3MuY2MgKi8sCiAJCQkJNUNERDg0RkMxRTQzQjFFQTAwNjIxRTkyIC8qIGNhbGxfc3RhdGlzdGlj
cy5oICovLAotCQkJCTVDREQ4NEZFMUU0M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19tYW5hZ2VyLmNj
ICovLAotCQkJCTVDREQ4NEZGMUU0M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19tYW5hZ2VyLmggKi8s
CiAJCQkJNUNERDg1MDExRTQzQjFFQTAwNjIxRTkyIC8qIHJlbnRfYV9jb2RlYy5jYyAqLywKIAkJ
CQk1Q0REODUwMjFFNDNCMUVBMDA2MjFFOTIgLyogcmVudF9hX2NvZGVjLmggKi8sCiAJCQkpOwpA
QCAtMTIwMDgsNiArMTIwOTMsOCBAQAogCQkJCTVDREQ4NTVEMUU0M0I1QzAwMDYyMUU5MiAvKiBj
YWxsX3N0YXRzLmggKi8sCiAJCQkJNUNERDg1NjAxRTQzQjVDMDAwNjIxRTkyIC8qIGVuY29kZXJf
cnRjcF9mZWVkYmFjay5jYyAqLywKIAkJCQk1Q0REODU2MTFFNDNCNUMwMDA2MjFFOTIgLyogZW5j
b2Rlcl9ydGNwX2ZlZWRiYWNrLmggKi8sCisJCQkJNDFGQ0JCNTcyMUIxRkU2RDAwQTVERjI3IC8q
IGZyYW1lX2R1bXBpbmdfZGVjb2Rlci5jYyAqLywKKwkJCQk0MUZDQkI1ODIxQjFGRTZFMDBBNURG
MjcgLyogZnJhbWVfZHVtcGluZ19kZWNvZGVyLmggKi8sCiAJCQkJNUNERDg1NjYxRTQzQjVDMDAw
NjIxRTkyIC8qIG92ZXJ1c2VfZnJhbWVfZGV0ZWN0b3IuY2MgKi8sCiAJCQkJNUNERDg1NjcxRTQz
QjVDMDAwNjIxRTkyIC8qIG92ZXJ1c2VfZnJhbWVfZGV0ZWN0b3IuaCAqLywKIAkJCQk1Q0QyODYy
ODFFNkE2NkM4MDA5NEZEQzggLyogcXVhbGl0eV90aHJlc2hvbGQuY2MgKi8sCkBAIC0xMjM3Niw2
ICsxMjQ2Myw3IEBACiAJCTVDREQ4N0ZBMUU0M0JFMjYwMDYyMUU5MiAvKiBzb3VyY2UgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDREQ4OEVCMUU0M0JG
MjUwMDYyMUU5MiAvKiBydGNwX3BhY2tldCAqLywKIAkJCQk1Q0REODdGQzFFNDNCRTNDMDA2MjFF
OTIgLyogYnl0ZV9pby5oICovLAogCQkJCTQxMDJGNkVCMjEyNzM0NjAwMDZBRThENyAvKiBjb250
cmlidXRpbmdfc291cmNlcy5jYyAqLywKIAkJCQk1Q0REODdGRTFFNDNCRTNDMDA2MjFFOTIgLyog
ZHRtZl9xdWV1ZS5jYyAqLywKQEAgLTEyMzkwLDEwICsxMjQ3OCwxMCBAQAogCQkJCTVDREQ4ODA2
MUU0M0JFM0MwMDYyMUU5MiAvKiBmbGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmggKi8sCiAJ
CQkJNUNERDg4MEExRTQzQkUzQzAwNjIxRTkyIC8qIGZsZXhmZWNfcmVjZWl2ZXIuY2MgKi8sCiAJ
CQkJNUNERDg4MEMxRTQzQkUzQzAwNjIxRTkyIC8qIGZsZXhmZWNfc2VuZGVyLmNjICovLAotCQkJ
CTVDREQ4ODBEMUU0M0JFM0MwMDYyMUU5MiAvKiBmb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50
ZXJuYWwuY2MgKi8sCi0JCQkJNUNERDg4MEUxRTQzQkUzQzAwNjIxRTkyIC8qIGZvcndhcmRfZXJy
b3JfY29ycmVjdGlvbl9pbnRlcm5hbC5oICovLAogCQkJCTVDREQ4ODBGMUU0M0JFM0MwMDYyMUU5
MiAvKiBmb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uY2MgKi8sCiAJCQkJNUNERDg4MTAxRTQzQkUz
QzAwNjIxRTkyIC8qIGZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5oICovLAorCQkJCTVDREQ4ODBE
MUU0M0JFM0MwMDYyMUU5MiAvKiBmb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuY2Mg
Ki8sCisJCQkJNUNERDg4MEUxRTQzQkUzQzAwNjIxRTkyIC8qIGZvcndhcmRfZXJyb3JfY29ycmVj
dGlvbl9pbnRlcm5hbC5oICovLAogCQkJCTVDREQ4ODE1MUU0M0JFM0MwMDYyMUU5MiAvKiBwYWNr
ZXRfbG9zc19zdGF0cy5jYyAqLywKIAkJCQk1Q0REODgxNjFFNDNCRTNDMDA2MjFFOTIgLyogcGFj
a2V0X2xvc3Nfc3RhdHMuaCAqLywKIAkJCQk1Q0REODgxODFFNDNCRTNDMDA2MjFFOTIgLyogcGxh
eW91dF9kZWxheV9vcmFjbGUuY2MgKi8sCkBAIC0xMjQwMywxOSArMTI0OTEsMjAgQEAKIAkJCQk1
Q0REODgxRTFFNDNCRTNDMDA2MjFFOTIgLyogcmVtb3RlX250cF90aW1lX2VzdGltYXRvci5jYyAq
LywKIAkJCQk1Q0QyODVGODFFNkE2NDUyMDA5NEZEQzggLyogcnRjcF9uYWNrX3N0YXRzLmNjICov
LAogCQkJCTVDRDI4NUY5MUU2QTY0NTIwMDk0RkRDOCAvKiBydGNwX25hY2tfc3RhdHMuaCAqLywK
LQkJCQk1Q0REODhFQjFFNDNCRjI1MDA2MjFFOTIgLyogcnRjcF9wYWNrZXQgKi8sCiAJCQkJNUNE
RDg4MjExRTQzQkUzQzAwNjIxRTkyIC8qIHJ0Y3BfcGFja2V0LmNjICovLAogCQkJCTVDREQ4ODIy
MUU0M0JFM0MwMDYyMUU5MiAvKiBydGNwX3BhY2tldC5oICovLAogCQkJCTVDREQ4ODI0MUU0M0JF
M0MwMDYyMUU5MiAvKiBydGNwX3JlY2VpdmVyLmNjICovLAogCQkJCTVDREQ4ODI1MUU0M0JFM0Mw
MDYyMUU5MiAvKiBydGNwX3JlY2VpdmVyLmggKi8sCiAJCQkJNUNERDg4MjcxRTQzQkUzQzAwNjIx
RTkyIC8qIHJ0Y3Bfc2VuZGVyLmNjICovLAogCQkJCTVDREQ4ODI4MUU0M0JFM0MwMDYyMUU5MiAv
KiBydGNwX3NlbmRlci5oICovLAorCQkJCTQxOUM4MkY2MUZFMjBFRkIwMDQwQzMwRiAvKiBydGNw
X3RyYW5zY2VpdmVyLmNjICovLAorCQkJCTQxOUM4MkZBMUZFMjBFRkQwMDQwQzMwRiAvKiBydGNw
X3RyYW5zY2VpdmVyLmggKi8sCiAJCQkJNDE5QzgyRjkxRkUyMEVGRDAwNDBDMzBGIC8qIHJ0Y3Bf
dHJhbnNjZWl2ZXJfY29uZmlnLmNjICovLAogCQkJCTQxOUM4MkY4MUZFMjBFRkMwMDQwQzMwRiAv
KiBydGNwX3RyYW5zY2VpdmVyX2NvbmZpZy5oICovLAogCQkJCTQxOUM4MkY3MUZFMjBFRkMwMDQw
QzMwRiAvKiBydGNwX3RyYW5zY2VpdmVyX2ltcGwuY2MgKi8sCiAJCQkJNDE5QzgyRkMxRkUyMEVG
RTAwNDBDMzBGIC8qIHJ0Y3BfdHJhbnNjZWl2ZXJfaW1wbC5oICovLAotCQkJCTQxOUM4MkY2MUZF
MjBFRkIwMDQwQzMwRiAvKiBydGNwX3RyYW5zY2VpdmVyLmNjICovLAotCQkJCTQxOUM4MkZBMUZF
MjBFRkQwMDQwQzMwRiAvKiBydGNwX3RyYW5zY2VpdmVyLmggKi8sCisJCQkJNUNERDg4M0ExRTQz
QkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXQuY2MgKi8sCisJCQkJNUNERDg4M0IxRTQzQkUzQzAw
NjIxRTkyIC8qIHJ0cF9mb3JtYXQuaCAqLywKIAkJCQk1Q0REODgyRTFFNDNCRTNDMDA2MjFFOTIg
LyogcnRwX2Zvcm1hdF9oMjY0LmNjICovLAogCQkJCTVDREQ4ODJGMUU0M0JFM0MwMDYyMUU5MiAv
KiBydHBfZm9ybWF0X2gyNjQuaCAqLywKIAkJCQk1Q0REODgzMDFFNDNCRTNDMDA2MjFFOTIgLyog
cnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmNjICovLApAQCAtMTI0MjQsMzUgKzEyNTEzLDMzIEBA
CiAJCQkJNUNERDg4MzYxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXRfdnA4LmggKi8sCiAJ
CQkJNUNERDg4MzgxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXRfdnA5LmNjICovLAogCQkJ
CTVDREQ4ODM5MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfZm9ybWF0X3ZwOS5oICovLAotCQkJCTVD
REQ4ODNBMUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfZm9ybWF0LmNjICovLAotCQkJCTVDREQ4ODNC
MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfZm9ybWF0LmggKi8sCi0JCQkJNDE5MjQxQUYyMTI3NTkw
MjAwNjM0RkNGIC8qIHJ0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLmNjICov
LAotCQkJCTQxMDJGNkU4MjEyNzM0NUYwMDZBRThENyAvKiBydHBfZ2VuZXJpY19mcmFtZV9kZXNj
cmlwdG9yX2V4dGVuc2lvbi5oICovLAogCQkJCTQxMDJGNkU1MjEyNzM0NUUwMDZBRThENyAvKiBy
dHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmNjICovLAogCQkJCTQxMDJGNkU2MjEyNzM0NUYw
MDZBRThENyAvKiBydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmggKi8sCisJCQkJNDE5MjQx
QUYyMTI3NTkwMjAwNjM0RkNGIC8qIHJ0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5z
aW9uLmNjICovLAorCQkJCTQxMDJGNkU4MjEyNzM0NUYwMDZBRThENyAvKiBydHBfZ2VuZXJpY19m
cmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5oICovLAogCQkJCTQxNDVFNERCMUVGOENDRUUwMEZD
RjZFNiAvKiBydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuY2MgKi8sCiAJCQkJNDEzRTY3N0IyMTY5
ODZBRDAwRUYzN0VEIC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuY2MgKi8sCiAJCQkJNDEz
RTY3N0MyMTY5ODZBRTAwRUYzN0VEIC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuaCAqLywK
IAkJCQk1Q0REODgzRjFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX2hlYWRlcl9leHRlbnNpb25zLmNj
ICovLAogCQkJCTVDREQ4ODQwMUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfaGVhZGVyX2V4dGVuc2lv
bnMuaCAqLywKIAkJCQk1Q0REODg0MTFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX2hlYWRlcl9wYXJz
ZXIuY2MgKi8sCisJCQkJNUNERDg4NDgxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9wYWNrZXQuY2Mg
Ki8sCisJCQkJNUNERDg4NDkxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9wYWNrZXQuaCAqLywKIAkJ
CQk1Q0REODg0MzFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX3BhY2tldF9oaXN0b3J5LmNjICovLAog
CQkJCTVDREQ4ODQ0MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcGFja2V0X2hpc3RvcnkuaCAqLywK
IAkJCQk0MTlDODJGRTFGRTIwRjAxMDA0MEMzMEYgLyogcnRwX3BhY2tldF9yZWNlaXZlZC5jYyAq
LywKIAkJCQk1Q0REODg0NTFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX3BhY2tldF9yZWNlaXZlZC5o
ICovLAogCQkJCTQxMDJGNkU5MjEyNzM0NUYwMDZBRThENyAvKiBydHBfcGFja2V0X3RvX3NlbmQu
Y2MgKi8sCiAJCQkJNUNERDg4NDYxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9wYWNrZXRfdG9fc2Vu
ZC5oICovLAotCQkJCTVDREQ4ODQ4MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcGFja2V0LmNjICov
LAotCQkJCTVDREQ4ODQ5MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcGFja2V0LmggKi8sCiAJCQkJ
NUNERDg4NTQxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9ydGNwX2NvbmZpZy5oICovLAogCQkJCTVD
REQ4ODU2MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcnRjcF9pbXBsLmNjICovLAogCQkJCTVDREQ4
ODU3MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcnRjcF9pbXBsLmggKi8sCisJCQkJNUNERDg4NUQx
RTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9zZW5kZXIuY2MgKi8sCisJCQkJNUNERDg4NUUxRTQzQkUz
QzAwNjIxRTkyIC8qIHJ0cF9zZW5kZXIuaCAqLywKIAkJCQk1Q0REODg1ODFFNDNCRTNDMDA2MjFF
OTIgLyogcnRwX3NlbmRlcl9hdWRpby5jYyAqLywKIAkJCQk1Q0REODg1OTFFNDNCRTNDMDA2MjFF
OTIgLyogcnRwX3NlbmRlcl9hdWRpby5oICovLAogCQkJCTVDREQ4ODVCMUU0M0JFM0MwMDYyMUU5
MiAvKiBydHBfc2VuZGVyX3ZpZGVvLmNjICovLAogCQkJCTVDREQ4ODVDMUU0M0JFM0MwMDYyMUU5
MiAvKiBydHBfc2VuZGVyX3ZpZGVvLmggKi8sCi0JCQkJNUNERDg4NUQxRTQzQkUzQzAwNjIxRTky
IC8qIHJ0cF9zZW5kZXIuY2MgKi8sCi0JCQkJNUNERDg4NUUxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0
cF9zZW5kZXIuaCAqLywKIAkJCQk1Q0REODg1RjFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX3V0aWxp
dHkuY2MgKi8sCiAJCQkJNUNERDg4NjAxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF91dGlsaXR5Lmgg
Ki8sCiAJCQkJNDEwMkY2RTcyMTI3MzQ1RjAwNkFFOEQ3IC8qIHJ0cF92aWRlb19oZWFkZXIuY2Mg
Ki8sCkBAIC0xMjU4Nyw4ICsxMjY3NCw2IEBACiAJCQkJNUNERDg5RTIxRTQzQkZCMzAwNjIxRTky
IC8qIHJhbmRvbV92ZWN0b3IuaCAqLywKIAkJCQk1Q0REODlFNDFFNDNCRkIzMDA2MjFFOTIgLyog
cmVkX3BheWxvYWRfc3BsaXR0ZXIuY2MgKi8sCiAJCQkJNUNERDg5RTUxRTQzQkZCMzAwNjIxRTky
IC8qIHJlZF9wYXlsb2FkX3NwbGl0dGVyLmggKi8sCi0JCQkJNUNERDg5RTYxRTQzQkZCMzAwNjIx
RTkyIC8qIHJ0Y3AuY2MgKi8sCi0JCQkJNUNERDg5RTcxRTQzQkZCMzAwNjIxRTkyIC8qIHJ0Y3Au
aCAqLywKIAkJCQk1Q0REODlFODFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGljc19jYWxjdWxh
dG9yLmNjICovLAogCQkJCTVDREQ4OUU5MUU0M0JGQjMwMDYyMUU5MiAvKiBzdGF0aXN0aWNzX2Nh
bGN1bGF0b3IuaCAqLywKIAkJCQk1Q0REODlFQjFFNDNCRkIzMDA2MjFFOTIgLyogc3luY19idWZm
ZXIuY2MgKi8sCkBAIC0xMjY0Miw2ICsxMjcyNyw3IEBACiAJCTVDREQ4QUJCMUU0M0MyMjIwMDYy
MUU5MiAvKiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNUNEMjg1NEExRTZBNjIwOTAwOTRGREM4IC8qIHV0aWxpdHkgKi8sCiAJCQkJNDEwMkY2
OUEyMTI3MzI2MTAwNkFFOEQ3IC8qIGF1ZGlvX2xldmVsLmNjICovLAogCQkJCTQxMDJGNjk4MjEy
NzMyNjAwMDZBRThENyAvKiBhdWRpb19sZXZlbC5oICovLAogCQkJCTVDREQ4QUJEMUU0M0MyMzkw
MDYyMUU5MiAvKiBhdWRpb19yZWNlaXZlX3N0cmVhbS5jYyAqLywKQEAgLTEyNjUyLDEyICsxMjcz
OCw4IEBACiAJCQkJNUNERDhBQzQxRTQzQzIzOTAwNjIxRTkyIC8qIGF1ZGlvX3N0YXRlLmggKi8s
CiAJCQkJNDFGOUJGOTkyMDUxQzg0QjAwQUJGMEI5IC8qIGF1ZGlvX3RyYW5zcG9ydF9pbXBsLmNj
ICovLAogCQkJCTQxRjlCRjlBMjA1MUM4NEIwMEFCRjBCOSAvKiBhdWRpb190cmFuc3BvcnRfaW1w
bC5oICovLAotCQkJCTQxM0U2Nzc4MjE2OTg2N0EwMEVGMzdFRCAvKiBjaGFubmVsX3JlY2VpdmVf
cHJveHkuY2MgKi8sCi0JCQkJNDEzRTY3NzcyMTY5ODY3QTAwRUYzN0VEIC8qIGNoYW5uZWxfcmVj
ZWl2ZV9wcm94eS5oICovLAogCQkJCTQxNzk1M0QyMjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVs
X3JlY2VpdmUuY2MgKi8sCiAJCQkJNDE3OTUzRDAyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxf
cmVjZWl2ZS5oICovLAotCQkJCTQxNzk1M0NGMjE2OTgzNEUwMDI4MjY2QiAvKiBjaGFubmVsX3Nl
bmRfcHJveHkuY2MgKi8sCi0JCQkJNDE3OTUzRDEyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxf
c2VuZF9wcm94eS5oICovLAogCQkJCTQxNzk1M0NEMjE2OTgzNEUwMDI4MjY2QiAvKiBjaGFubmVs
X3NlbmQuY2MgKi8sCiAJCQkJNDE3OTUzQ0UyMTY5ODM0RTAwMjgyNjZCIC8qIGNoYW5uZWxfc2Vu
ZC5oICovLAogCQkJCTVDREQ4QUM2MUU0M0MyMzkwMDYyMUU5MiAvKiBjb252ZXJzaW9uLmggKi8s
CkBAIC0xMjY2NSwxMSArMTI3NDcsOCBAQAogCQkJCTQxOUM4M0IyMUZFMjQ3MkUwMDQwQzMwRiAv
KiBudWxsX2F1ZGlvX3BvbGxlci5oICovLAogCQkJCTQxMDJGNjk3MjEyNzMyNjAwMDZBRThENyAv
KiByZW1peF9yZXNhbXBsZS5jYyAqLywKIAkJCQk0MTAyRjY5RDIxMjczMjYxMDA2QUU4RDcgLyog
cmVtaXhfcmVzYW1wbGUuaCAqLywKLQkJCQk0MTlDODMzMzFGRTI0NUU5MDA0MEMzMEYgLyogdGlt
ZV9pbnRlcnZhbC5jYyAqLywKLQkJCQk0MTlDODMzMjFGRTI0NUU5MDA0MEMzMEYgLyogdGltZV9p
bnRlcnZhbC5oICovLAogCQkJCTQxMDJGNjlGMjEyNzMyNjIwMDZBRThENyAvKiB0cmFuc3BvcnRf
ZmVlZGJhY2tfcGFja2V0X2xvc3NfdHJhY2tlci5jYyAqLywKIAkJCQk0MTAyRjY5NjIxMjczMjYw
MDA2QUU4RDcgLyogdHJhbnNwb3J0X2ZlZWRiYWNrX3BhY2tldF9sb3NzX3RyYWNrZXIuaCAqLywK
LQkJCQk1Q0QyODU0QTFFNkE2MjA5MDA5NEZEQzggLyogdXRpbGl0eSAqLywKIAkJCSk7CiAJCQlw
YXRoID0gYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTI4MjcsMTAgKzEy
OTA2LDEwIEBACiAJCTVDREQ4QzEyMUU0M0MzOTIwMDYyMUU5MiAvKiB2cDkgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQxM0U2NzkyMjE2OTg4MTkwMEVG
MzdFRCAvKiBzdmNfcmF0ZV9hbGxvY2F0b3IuY2MgKi8sCi0JCQkJNDEzRTY3OTMyMTY5ODgxOTAw
RUYzN0VEIC8qIHN2Y19yYXRlX2FsbG9jYXRvci5oICovLAogCQkJCTQxM0U2NzgwMjE2OTg3MEYw
MEVGMzdFRCAvKiBzdmNfY29uZmlnLmNjICovLAogCQkJCTQxM0U2NzdGMjE2OTg3MEYwMEVGMzdF
RCAvKiBzdmNfY29uZmlnLmggKi8sCisJCQkJNDEzRTY3OTIyMTY5ODgxOTAwRUYzN0VEIC8qIHN2
Y19yYXRlX2FsbG9jYXRvci5jYyAqLywKKwkJCQk0MTNFNjc5MzIxNjk4ODE5MDBFRjM3RUQgLyog
c3ZjX3JhdGVfYWxsb2NhdG9yLmggKi8sCiAJCQkJNUNERDhDMTMxRTQzQzNCNDAwNjIxRTkyIC8q
IHZwOV9ub29wLmNjICovLAogCQkJKTsKIAkJCW5hbWUgPSB2cDk7CkBAIC0xMzIwNyw4ICsxMzI4
Niw2IEBACiAJCQkJNDE5MjQxQjEyMTI3NTkxQzAwNjM0RkNGIC8qIGJiciAqLywKIAkJCQk0MUUw
MkM4RjIxMjczNEU4MDBDMjdDRDYgLyogZ29vZ19jYyAqLywKIAkJCQk0MUUwMkNENTIxMjczNjIz
MDBDMjdDRDYgLyogcnRwICovLAotCQkJCTQxQTA4QkQ2MjEyNzJGMUMwMDFENUQ3QiAvKiBjb25n
ZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjICovLAotCQkJCTQxQTA4QkQ1MjEy
NzJGMUMwMDFENUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmgg
Ki8sCiAJCQkJNDEzMDkxRkQxRUY4RDA2RDAwNzU3QzU1IC8qIHJlY2VpdmVfc2lkZV9jb25nZXN0
aW9uX2NvbnRyb2xsZXIuY2MgKi8sCiAJCQkJNDEzMDkyMTQxRUY4RDVFRDAwNzU3QzU1IC8qIHNl
bmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MgKi8sCiAJCQkJNUNERDhGQjAxRTQzQ0Qw
NzAwNjIxRTkyIC8qIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmNjICovLApAQCAtMTMzMDUs
OCArMTMzODIsMTEgQEAKIAkJNUNERDkwNTExRTQzRDEwNDAwNjIxRTkyIC8qIGJpdHJhdGVfY29u
dHJvbGxlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NDFGQ0JCNUIyMUIxRkVBMzAwQTVERjI3IC8qIGJpdHJhdGVfY29udHJvbGxlci5jYyAqLywKIAkJ
CQk1Q0REOTA1MjFFNDNEMTEyMDA2MjFFOTIgLyogYml0cmF0ZV9jb250cm9sbGVyX2ltcGwuY2Mg
Ki8sCiAJCQkJNUNERDkwNTMxRTQzRDExMjAwNjIxRTkyIC8qIGJpdHJhdGVfY29udHJvbGxlcl9p
bXBsLmggKi8sCisJCQkJNDFGQ0JCNjgyMUIxRkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFu
ZHdpZHRoX2VzdGltYXRpb24uY2MgKi8sCisJCQkJNDFGQ0JCNjcyMUIxRkYxQjAwQTVERjI3IC8q
IGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uaCAqLywKIAkJCQk1Q0REOTA1QjFFNDNE
MTEyMDA2MjFFOTIgLyogc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjICovLAogCQkJ
CTVDREQ5MDVDMUU0M0QxMTIwMDYyMUU5MiAvKiBzZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRp
b24uaCAqLywKIAkJCSk7CkBAIC0xMzU0Myw3ICsxMzYyMyw2IEBACiAJCQlpc2EgPSBQQlhIZWFk
ZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxl
cyA9ICgKLQkJCQk1QzA4OEMxMTFFNEFBNDQ0MDA0MDM5OTUgLyogYnVuZGxlZmlsdGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzA4OEMxMzFFNEFBNDQ0MDA0MDM5OTUgLyogY2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUMwODhDMTUxRTRBQTQ0NDAwNDAzOTk1IC8qIGNoYW5uZWxtYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzA4OEMxOTFFNEFBNDQ0MDA0MDM5OTUgLyogZXh0
ZXJuYWxobWFjLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNzIzLDcgKzEzODAyLDYgQEAKIAkJCQk0
MTZEM0JERDIxMjczMUMyMDA3NzVGMDkgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3Jf
YWdjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY0MTFDODFFRjk3QkFGMDAzNDNDMjYgLyogYWRt
X2hlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUE5MUU2QTYzNDMwMDk0RkRDOCAv
KiBhZWMzX2NvbW1vbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NEIzRDUyMTY5ODk2RDAwNDM2
M0FDIC8qIFJUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0QyODVBQjFFNkE2MzQzMDA5NEZEQzggLyogYWVjM19mZnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4NkI3MUU0M0I5QzIwMDYyMUU5MiAvKiBhZWNfY29tbW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REODZCRDFFNDNCOUMyMDA2MjFFOTIgLyogYWVjX2NvcmUuaCBpbiBIZWFkZXJzICov
LApAQCAtMTM3NTgsNiArMTM4MzYsNyBAQAogCQkJCTQxNDMzRDAxMUY3OUIzMzQwMDM4N0I0RCAv
KiBhcml0aF9yb3V0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkY4NzIwNTFDODAxMDBB
QkYwQjkgLyogYXJyYXlfdmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzRTQxRkUxOEUw
ODAwMzczRTk5IC8qIGFycmF5c2l6ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNzkyMUIx
RkZDMDAwQTVERjI3IC8qIGFzY2lpLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYyNjNCMTIxMjY4
MEE4MDAyNzRGNTkgLyogYXNtX2RlZmluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGOEQ5
MUU0MTZENTMwMDJDQTUzMSAvKiBhc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNB
MjJBODFGRTE4RTA2MDAzNzNFOTkgLyogYXN5bmNpbnZva2VyLWlubC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMzc3Niw3ICsxMzg1NSw2IEBACiAJCQkJNUNERDg0MTYxRTQzOUIyOTAwNjIxRTkyIC8q
IGF1ZGlvX2RlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NTQ1MUU2QTYxRDIwMDk0
RkRDOCAvKiBhdWRpb19kZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODU0MzFFNkE2
MUQyMDA5NEZEQzggLyogYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0MTc5NTNDMDIxNjk4MjRCMDAyODI2NkIgLyogUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkY5ODIwNTFDODIxMDBBQkYwQjkgLyogYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5X3RlbXBsYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODNFODFGRTI0
ODM1MDA0MEMzMEYgLyogYXVkaW9fZGVjb2Rlcl9nNzExLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTQwQjgzMjFFNEUzMzk2MDA3NDA5RTYgLyogYXVkaW9fZGVjb2Rlcl9nNzIyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEzODIwLDcgKzEzODk4LDYgQEAKIAkJCQk0MTlDODM2OTFGRTI0NkNBMDA0MEMz
MEYgLyogYXVkaW9fZW5jb2Rlcl9pc2FjX2Zsb2F0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
OEMwQzFFNDNDMzQ2MDA2MjFFOTIgLyogYXVkaW9fZW5jb2Rlcl9pc2FjX3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4QzBCMUU0M0MzNDYwMDYyMUU5MiAvKiBhdWRpb19lbmNvZGVyX2lzYWNf
dF9pbXBsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5NTNDOTIxNjk4MjRCMDAyODI2NkIgLyog
UlRDVmlkZW9FbmNvZGVySDI2NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzRjMxRkUyNDg4
RDAwNDBDMzBGIC8qIGF1ZGlvX2VuY29kZXJfTDE2LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
OEM2NDFFNDNDNjA5MDA2MjFFOTIgLyogYXVkaW9fZW5jb2Rlcl9vcHVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTlDODJGMDFGRTIwRUI1MDA0MEMzMEYgLyogYXVkaW9fZW5jb2Rlcl9vcHVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEzODMzLDkgKzEzOTEwLDcgQEAKIAkJCQk0MTVGMUZDRjIxMjcz
MEYwMDAwNjRDQkYgLyogYXVkaW9fZnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NDkz
MUU2QTVGNDEwMDk0RkRDOCAvKiBhdWRpb19mcmFtZV9tYW5pcHVsYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNEMjg1NEUxRTZBNjIxMzAwOTRGREM4IC8qIGF1ZGlvX2ZyYW1lX29wZXJhdGlv
bnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNDRCM0REMjE2OUEwNzAwMDQzNjNBQyAvKiBSVENW
aWRlb0RlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMDJGNkEyMjEyNzMyNjIwMDZBRThE
NyAvKiBhdWRpb19sZXZlbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3QTAyMTY5ODg5NTAw
RUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDhBOTAxRTQzQzAwRjAwNjIxRTkyIC8qIGF1ZGlvX2xvb3AuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxNUYxRkNEMjEyNzMwRjAwMDA2NENCRiAvKiBhdWRpb19taXhlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNEMjg0OTYxRTZBNUY0MTAwOTRGREM4IC8qIGF1ZGlvX21peGVyX2ltcGwu
aCBpbiBIZWFkZXJzICovLApAQCAtMTM4NTQsNyArMTM5MjksNiBAQAogCQkJCTVDREQ4QzRGMUU0
M0M1OEUwMDYyMUU5MiAvKiBhdWRpb19zaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEE5
MjFFNDNDMDBGMDA2MjFFOTIgLyogYXVkaW9fc2luay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
RDhBRDMxRTQzQzIzOTAwNjIxRTkyIC8qIGF1ZGlvX3N0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0MTc5NTNFMzIxNjk4M0NBMDAyODI2NkIgLyogbW9kdWxlX2ZlY190eXBlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNEMjg0QjMxRTZBNUY5RjAwOTRGREM4IC8qIGF1ZGlvX3N0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUY5QkY5QzIwNTFDODRDMDBBQkYwQjkgLyogYXVkaW9fdHJhbnNw
b3J0X2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjlCRkEwMjA1MUM4ODUwMEFCRjBCOSAv
KiBhdWRpb191dGlsLmggaW4gSGVhZGVycyAqLywKQEAgLTEzODc3LDcgKzEzOTUxLDYgQEAKIAkJ
CQk1QzRCNEQwQTFFNDMyMkY2MDAyNjUxQzggLyogYmFzaWNwb3J0YWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTkyNDFDNjIxMjc1OTNGMDA2MzRGQ0YgLyogYmJyX2ZhY3RvcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxOTI0MUMzMjEyNzU5M0YwMDYzNEZDRiAvKiBiYnJfbmV0d29y
a19jb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTYyMjVFNTIxNjk4MTk1MDBBOTFD
OUIgLyogb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
M0EyMzVDMUZFMThFMDcwMDM3M0U5OSAvKiBiaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZE
M0JFMTIxMjczMUMyMDA3NzVGMDkgLyogYmlxdWFkX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQTIzNzcxRkUxOEUwNzAwMzczRTk5IC8qIGJpdGJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMzg4Niw3ICsxMzk1OSw2IEBACiAJCQkJNDFGMjYzODIyMTI2N0I3NzAwMjc0RjU5IC8q
IGJpdHJhdGVfY29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4RjdFMUU0M0NC
RTAwMDYyMUU5MiAvKiBiaXRyYXRlX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ5MDVFMUU0M0QxMTIwMDYyMUU5MiAvKiBiaXRyYXRlX2NvbnRyb2xsZXJfaW1wbC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNDE0NEIzRUEyMTY5QzVFMzAwNDM2M0FDIC8qIFJUQ1ZpZGVvRW5jb2Rl
clNldHRpbmdzK1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTAyQ0FDMjEyNzM1MkQw
MEMyN0NENiAvKiBiaXRyYXRlX2VzdGltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhG
QTExRTQzQ0NCRTAwNjIxRTkyIC8qIGJpdHJhdGVfcHJvYmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUUwMkNEMDIxMjczNUI3MDBDMjdDRDYgLyogYml0cmF0ZV9zZXR0aW5ncy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMzg5NCw3ICsxMzk2Niw2IEBACiAJCQkJNDFCRTcxQTgyMTVDNDYzNzAwQTdC
MTk2IC8qIGJpdHZlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUFEMUU2QTYzNDMwMDk0
RkRDOCAvKiBibG9ja19mcmFtZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4Njg4MUU0M0I5
MzkwMDYyMUU5MiAvKiBibG9ja19tZWFuX2NhbGN1bGF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxNzk1M0MzMjE2OTgyNEIwMDI4MjY2QiAvKiBSVENIMjY0UHJvZmlsZUxldmVsSWQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDRDI4NUIxMUU2QTYzNDMwMDk0RkRDOCAvKiBibG9ja19wcm9jZXNz
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUFGMUU2QTYzNDMwMDk0RkRDOCAvKiBibG9j
a19wcm9jZXNzb3JfbWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzOEUxRkUxOEUw
NzAwMzczRTk5IC8qIGJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzkwMiwxNiArMTM5NzMs
MTMgQEAKIAkJCQk0MTNBMjMyQjFGRTE4RTA3MDAzNzNFOTkgLyogYnVmZmVycXVldWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDRDI4NTQ5MUU2QTYxRDIwMDk0RkRDOCAvKiBidWlsdGluX2F1ZGlv
X2RlY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzMDkxRkMxRUY4Q0ZGODAw
NzU3QzU1IC8qIGJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
LQkJCQk0MTc5NTNFNDIxNjk4M0NBMDAyODI2NkIgLyogbW9kdWxlLmggaW4gSGVhZGVycyAqLywK
LQkJCQk0MTNFNjc3OTIxNjk4NjdBMDBFRjM3RUQgLyogY2hhbm5lbF9yZWNlaXZlX3Byb3h5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkIxRTIxQjFGN0NEMDBBNURGMjcgLyogYnVpbHRpbl92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYy
NjM2MDIxMjY3QURGMDAyNzRGNTkgLyogYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCBp
biBIZWFkZXJzICovLAotCQkJCTQxM0U2NzY5MjE2OTg1NEIwMEVGMzdFRCAvKiBSVENWaWRlb0Vu
Y29kZXJWUDguaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjI2MzYxMjEyNjdBREYwMDI3NEY1OSAv
KiBidWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
RDhCNzUxRTQzQzJCNTAwNjIxRTkyIC8qIGJ3X2V4cGFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNERDg5M0YxRTQzQkYzQTAwNjIxRTkyIC8qIGJ5ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
RDg4NzYxRTQzQkUzQzAwNjIxRTkyIC8qIGJ5dGVfaW8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
M0EyM0E0MUZFMThFMDgwMDM3M0U5OSAvKiBieXRlYnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0MTc5NTNGODIxNjk4NEJFMDAyODI2NkIgLyogUlRDQ29kZWNTcGVjaWZpY0luZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxQkU3MUFFMjE1QzQ2MzcwMEE3QjE5NiAvKiBieXRlY29kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzM0UxRkUxOEUwNzAwMzczRTk5IC8qIGJ5dGVvcmRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg0QjgxRTZBNUY5RjAwOTRGREM4IC8qIGNhbGwuaCBp
biBIZWFkZXJzICovLApAQCAtMTM5MzMsMTYgKzE0MDAxLDE2IEBACiAJCQkJNUNERDhCODMxRTQz
QzJCNTAwNjIxRTkyIC8qIGNiX3VwZGF0ZV9iZXN0X2luZGV4LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1QzRCNEM2NTFFNDMxRjlDMDAyNjUxQzggLyogY2hhbm5lbF9idWZmZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4RjgxMUU0M0NCRTAwMDYyMUU5MiAvKiBjaGFubmVsX2NvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0Q2MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVs
X3JlY2VpdmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0Q0MjE2OTgzNEYwMDI4MjY2QiAv
KiBjaGFubmVsX3NlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4Qjg1MUU0M0MyQjUwMDYy
MUU5MiAvKiBjaGVieXNoZXYuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzRGMUZFMThFMDcw
MDM3M0U5OSAvKiBjaGVja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMDg4NTJBMUU0QTk5RDIw
MDQwMzk5NSAvKiBjaXBoZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0U2NzY2MjE2OTg1NEIw
MEVGMzdFRCAvKiBSVENWaWRlb0NvZGVjQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0REODZBMjFFNDNCOTk0MDA2MjFFOTIgLyogY2lyY3VsYXJfYnVmZmVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MUZDQkI3NjIxQjFGRkE0MDBBNURGMjcgLyogY29jb2FfdGhyZWFkaW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzRCNDhEQzFFNDJDMUUzMDAyNjUxQzggLyogY29kZWMuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTQxNjIyNUU4MjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX3ZpZGVvX2Rl
Y29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3QjAxRTQzQkMwNTAwNjIx
RTkyIC8qIGNvZGVjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQzM0NGMzFGNzlCMzM0MDAzODdC
NEQgLyogY29kZWMuaCBpbiBIZWFkZXJzICovLAotCQkJCTVDREQ4NTE2MUU0M0IxRUEwMDYyMUU5
MiAvKiBjb2RlY19tYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODNDOTFFNDM5QTZG
MDA2MjFFOTIgLyogY29kZWNfdGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMDJGNkUyMjEy
NzM0MTYwMDZBRThENyAvKiBjb2xvcl9zcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhB
MEUxRTQzQkZCMzAwNjIxRTkyIC8qIGNvbWZvcnRfbm9pc2UuaCBpbiBIZWFkZXJzICovLApAQCAt
MTM5NjEsMjcgKzE0MDI5LDMxIEBACiAJCQkJNUNERDhGRUMxRTQzQ0RDQTAwNjIxRTkyIC8qIGNv
bmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0Y4REIxRTQxNkQ1MzAwMkNBNTMxIC8qIGNv
bmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5MjQxNkQyMTI3Mzg5QjAwNjM0RkNGIC8qIGNv
bmdlc3Rpb25fY29udHJvbGxlcl9leHBlcmltZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUEw
OEJENzIxMjcyRjFEMDAxRDVEN0IgLyogY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNDAyMUIxRkRCODAwQTVERjI3IC8qIGNv
bmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4QTk0MUU0M0MwMEYwMDYyMUU5MiAvKiBjb25zdGFudF9wY21fcGFja2V0X3NvdXJjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjQ4NzgxRTQyQzFCQTAwMjY1MUM4IC8qIGNvbnN0YW50
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCOEExRTQzQzJCNTAwNjIxRTkyIC8qIGNvbnN0
YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzNkMxRkUxOEUwNzAwMzczRTk5IC8qIGNv
bnN0cnVjdG9ybWFnaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0FEMUE0MjEyNjVCMTAwMDNG
NzI2MyAvKiBjb250YWluZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjM4MjFCMUY4RkMw
MEE1REYyNyAvKiBjb250cm9sX2hhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4Rjg2
MUU0M0NCRTAwMDYyMUU5MiAvKiBjb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
OEY4NDFFNDNDQkUwMDA2MjFFOTIgLyogY29udHJvbGxlcl9tYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0REOEFENDFFNDNDMjM5MDA2MjFFOTIgLyogY29udmVyc2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDFGOUJGQjQyMDUxQzkzNjAwQUJGMEI5IC8qIGNvbnZlcnRfbGVnYWN5X3Zp
ZGVvX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyM0FDMUZFMThFMDgwMDM3M0U5
OSAvKiBjb3B5b253cml0ZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFCRTcxQkMyMTVD
NDYzNzAwQTdCMTk2IC8qIGNvcmV0eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTg4OUQ3NjIx
NkJDNEVDMDA0NjE0REQgLyogUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MUZDQkI1MTIxQjFGRTQ2MDBBNURGMjcgLyogY3B1X3NwZWVkX2V4cGVyaW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyM0UyMUZFMThFMDgwMDM3M0U5OSAvKiBjcHVfdGlt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3QjIxRTQzQkMwNTAwNjIxRTkyIC8qIGNyYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyQUMxRkUxOEUwNjAwMzczRTk5IC8qIGNyYzMyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEI4QzFFNDNDMkI1MDA2MjFFOTIgLyogY3JlYXRlX2F1
Z21lbnRlZF92ZWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjEyMjFCMUY1MzcwMEE1REYy
NyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDFGQ0JCNjQyMUIxRkVGNjAwQTVERjI3IC8qIGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM2OTFGRTE4RTA3MDAzNzNFOTkgLyogY3JpdGljYWxz
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEExMDFFNDNCRkIzMDA2MjFFOTIgLyog
Y3Jvc3NfY29ycmVsYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMDg4NTJCMUU0QTk5RDIw
MDQwMzk5NSAvKiBjcnlwdG9fa2VybmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzA4ODUyQzFF
NEE5OUQyMDA0MDM5OTUgLyogY3J5cHRvX3R5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZD
QkIyRTIxQjFGOEI3MDBBNURGMjcgLyogY3J5cHRvb3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUM0QjQ4REQxRTQyQzFFMzAwMjY1MUM4IC8qIGNyeXB0b3BhcmFtcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFGOUJGOTAyMDUxQzgwMTAwQUJGMEI5IC8qIGNyeXB0b3BhcmFtcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzQTIzMjkxRkUxOEUwNzAwMzczRTk5IC8qIGNyeXB0c3RyaW5nLmgg
aW4gSGVhZGVycyAqLywKQEAgLTE0MDQ0LDcgKzE0MTE2LDYgQEAKIAkJCQk1Q0REODRCMTFFNDNB
RjEzMDA2MjFFOTIgLyogZWNob19jb250cm9sX21vYmlsZV9pbXBsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0QyODVCQjFFNkE2MzQzMDA5NEZEQzggLyogZWNob19wYXRoX2RlbGF5X2VzdGltYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1QkQxRTZBNjM0MzAwOTRGREM4IC8qIGVjaG9f
cGF0aF92YXJpYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzQkQyMTY5ODI0QjAw
MjgyNjZCIC8qIGhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUMxMUU2QTYzNDMw
MDk0RkRDOCAvKiBlY2hvX3JlbW92ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUJGMUU2
QTYzNDMwMDk0RkRDOCAvKiBlY2hvX3JlbW92ZXJfbWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQTIxM0UxRkUwRjBFRjAwMzczRTk5IC8qIGVrdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NDA1Myw2ICsxNDEyNCw3IEBACiAJCQkJNUNERDhBOTYxRTQzQzAwRjAwNjIxRTkyIC8qIGVuY29k
ZV9uZXRlcV9pbnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgzQ0QxRTQzOUE2RjAwNjIx
RTkyIC8qIGVuY29kZWRfZnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTA4QkFDMjEyNjgx
QzgwMDFENUQ3QiAvKiBlbmNvZGVkX2ZyYW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkIx
QzIxQjFGN0NEMDBBNURGMjcgLyogZW5jb2RlZF9pbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFFMDJDODkyMTI3MzRCOTAwQzI3Q0Q2IC8qIGVuY29kZXJfZGF0YWJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4NUEwMUU0M0I1QzAwMDYyMUU5MiAvKiBlbmNvZGVyX3J0Y3BfZmVlZGJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUNFQUZDMjA2NDY2NjQwMDlENTE0MSAvKiBFbmNv
ZGVyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MDY3LDcgKzE0MTM5LDYgQEAKIAkJ
CQk1QzA4ODUyRTFFNEE5OUQyMDA0MDM5OTUgLyogZXJyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MUJFNzFBQTIxNUM0NjM3MDBBN0IxOTYgLyogZXJyd2Fybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDEzQTIzQTUxRkUxOEUwODAwMzczRTk5IC8qIGV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk0
MTNFNjc4NTIxNjk4NzdEMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDRDI4NjE1MUU2QTY2MTMwMDk0RkRDOCAvKiBldmVudF9sb2dfd3Jp
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM3RTFGRTE4RTA3MDAzNzNFOTkgLyogZXZl
bnRfdHJhY2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODM1MDFGRTI0NjY1MDA0MEMzMEYg
LyogZXhwX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDA3Niw3ICsxNDE0Nyw2IEBACiAJ
CQkJNDFCRTcxQTYyMTVDNDYzNzAwQTdCMTk2IC8qIGV4cHIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4OTRCMUU0M0JGM0EwMDYyMUU5MiAvKiBleHRlbmRlZF9qaXR0ZXJfcmVwb3J0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0REODk0RTFFNDNCRjNBMDA2MjFFOTIgLyogZXh0ZW5kZWRfcmVw
b3J0cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3QTEyMTY5ODg5NTAwRUYzN0VEIC8qIFJU
Q1J0cEZyYWdtZW50YXRpb25IZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QTk4MUU0
M0MwMEYwMDYyMUU5MiAvKiBmYWtlX2RlY29kZV9mcm9tX2ZpbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxMjk5Qjk3MjEyNzM2OTEwMEIzNDE0QiAvKiBmYWtlX25ldHdvcmtfcGlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE5MjQxNTYyMTI3Mzc2RjAwNjM0RkNGIC8qIGZha2VjYW5kaWRhdGVw
YWlyLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MDg0LDcgKzE0MTU0LDYgQEAKIAkJCQk0MTkyNDE1
MzIxMjczNzZGMDA2MzRGQ0YgLyogZmFrZWR0bHN0cmFuc3BvcnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxOTI0MTU5MjEyNzM3NkYwMDYzNEZDRiAvKiBmYWtlaWNldHJhbnNwb3J0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzRCNDhERjFFNDJDMUUzMDAyNjUxQzggLyogZmFrZW1lZGlhZW5naW5l
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNFNjc2QTIxNjk4NTRCMDBFRjM3RUQgLyogUlRDV3Jh
cHBlZE5hdGl2ZVZpZGVvRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyQjcxRkUx
OEUwNzAwMzczRTk5IC8qIGZha2VuZXR3b3JrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDhF
MDFFNDJDMUUzMDAyNjUxQzggLyogZmFrZW5ldHdvcmtpbnRlcmZhY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxOTI0MTU4MjEyNzM3NkYwMDYzNEZDRiAvKiBmYWtlcGFja2V0dHJhbnNwb3J0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTE0MTA0LDcgKzE0MTczLDYgQEAKIAkJCQk0MUUwMkM4RTIxMjcz
NEI5MDBDMjdDRDYgLyogZmVjX3JhdGVfdGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
ODdDMUU0M0JFM0MwMDYyMUU5MiAvKiBmZWNfdGVzdF9oZWxwZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxRjI2Mzg5MjEyNjdGNDAwMDI3NEY1OSAvKiBmZnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxNjIyNUUzMjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX2ZyYW1lX2J1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE0MzNEMjIxRjc5QjMzNDAwMzg3QjREIC8qIGZmdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFGMjYzNkYyMTI2N0IzRTAwMjc0RjU5IC8qIGZmdDRnLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUY5QkZEMzIwNTFEREU1MDBBQkYwQjkgLyogZmZ0X2J1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xNDExOSwxMiArMTQxODcsMTAgQEAKIAkJCQk1Q0REOEM4QzFFNDNDNjYwMDA2
MjFFOTIgLyogZmlsZV91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzQjIyMTI2ODBB
ODAwMjc0RjU5IC8qIGZpbGVfd3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyRTEx
RkUxOEUwNzAwMzczRTk5IC8qIGZpbGVyb3RhdGluZ3N0cmVhbS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDEzQTIzQkQxRkUxOEUwODAwMzczRTk5IC8qIGZpbGV1dGlscy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE0MzNDRUQxRjc5QjMzNDAwMzg3QjREIC8qIGZpbHRlcmJhbmtfaW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxNDMzRDBEMUY3OUIzMzQwMDM4N0I0RCAvKiBmaWx0ZXJiYW5r
X3RhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCQTExRTQzQzJCNTAwNjIxRTkyIC8q
IGZpbHRlcmVkX2NiX3ZlY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMTFBMDA0MUU0NTc0MDAw
MDRGMDk4NyAvKiBmaW5lX2F1ZGlvX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2MjI1
RDYyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0REODk1MTFFNDNCRjNBMDA2MjFFOTIgLyogZmlyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRC
NEM2RTFFNDMxRjlDMDAyNjUxQzggLyogZmlyX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE5QzgzMUExRkUyNDJCMjAwNDBDMzBGIC8qIGZpcl9maWx0ZXJfYy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xNDEzMywxMiArMTQxOTksMTAgQEAKIAkJCQk0MTNBMjNERjFGRTE4RTA4MDAzNzNFOTkg
LyogZmlyZXdhbGxzb2NrZXRzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRERCMjREMjEy
NjVCRDcwMDI5NkQ0NyAvKiBmaXhlZF9hcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1RjFG
QUUyMTI3MkZCQTAwMDY0Q0JGIC8qIGZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmggaW4g
SGVhZGVycyAqLywKLQkJCQk0MTZEM0JFNDIxMjczMUMyMDA3NzVGMDkgLyogZml4ZWRfZ2Fpbl9j
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjNCQzFGRTE4RTA4MDAzNzNFOTkg
LyogZmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4ODdGMUU0M0JFM0MwMDYyMUU5MiAv
KiBmbGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
ODUzNzFFNDNCMzlDMDA2MjFFOTIgLyogZmxleGZlY19yZWNlaXZlX3N0cmVhbS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNEMjg0QkExRTZBNUY5RjAwOTRGREM4IC8qIGZsZXhmZWNfcmVjZWl2ZV9z
dHJlYW1faW1wbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3ODEyMTY5ODcwRjAwRUYzN0VE
IC8qIHN2Y19jb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4M0NCMUZFMjQ3QjQwMDQw
QzMwRiAvKiBmbGV4ZmVjX3JlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODNDRTFG
RTI0N0I0MDA0MEMzMEYgLyogZmxleGZlY19zZW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
M0EyMkEzMUZFMThFMDYwMDM3M0U5OSAvKiBmb3JtYXRfbWFjcm9zLmggaW4gSGVhZGVycyAqLywK
QEAgLTE0MTUyLDggKzE0MjE2LDExIEBACiAJCQkJNUNERDhCQTMxRTQzQzJCNTAwNjIxRTkyIC8q
IGZyYW1lX2NsYXNzaWZ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODQ5QjFFNkE1RjQxMDA5
NEZEQzggLyogZnJhbWVfY29tYmluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4MzdBMUU0
MzlBMzUwMDYyMUU5MiAvKiBmcmFtZV9kcm9wcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZD
QkI1QTIxQjFGRTZFMDBBNURGMjcgLyogZnJhbWVfZHVtcGluZ19kZWNvZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REOEY5MTFFNDNDQkUwMDA2MjFFOTIgLyogZnJhbWVfbGVuZ3RoX2NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4M0Q0MUU0MzlBNkYwMDYyMUU5MiAvKiBm
cmFtZV9vYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjJGMjFCMUY4QjcwMEE1REYy
NyAvKiBmcmFtZWRlY3J5cHRvcmludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JC
MzAyMUIxRjhCNzAwQTVERjI3IC8qIGZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTNBMjJBMjFGRTE4RTA2MDAzNzNFOTkgLyogZnVuY3Rpb25fdmlldy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzOEUyMTI2N0Y0OTAwMjc0RjU5IC8qIGc3MTEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNDBCODI1MUU0RTMzODMwMDc0MDlFNiAvKiBnNzExX2ludGVyZmFj
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDE2NCw4ICsxNDIzMSw2IEBACiAJCQkJNUNERDg0QjMx
RTQzQUYxMzAwNjIxRTkyIC8qIGdhaW5fY29udHJvbF9mb3JfZXhwZXJpbWVudGFsX2FnYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUNERDg0QjUxRTQzQUYxMzAwNjIxRTkyIC8qIGdhaW5fY29udHJv
bF9pbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUEwOEJDRjIxMjcyRUUyMDAxRDVEN0IgLyog
Z2Fpbl9jb250cm9sbGVyMi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RDNCRTUyMTI3MzFDMjAw
Nzc1RjA5IC8qIGdhaW5fY3VydmVfYXBwbGllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE4ODlE
NzUyMTZCQjdCOTAwNDYxNEREIC8qIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycytQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJBNTFFNDNDMkI1MDA2MjFFOTIgLyogZ2Fpbl9kZXF1
YW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODcwMzFFNDNCQTc1MDA2MjFFOTIgLyogZ2Fp
bl9tYXBfaW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkE3MUU0M0MyQjUwMDYy
MUU5MiAvKiBnYWluX3F1YW50LmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTc2LDYgKzE0MjQxLDcg
QEAKIAkJCQk1Q0REOEJBRDFFNDNDMkI1MDA2MjFFOTIgLyogZ2V0X3N5bmNfc2VxLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTNBMjE0MTFGRTBGMEVGMDAzNzNFOTkgLyogZ2V0b3B0X3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDREQ4NzJBMUU0M0JBQkUwMDYyMUU5MiAvKiBnbW0uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxRkNCQjVGMjFCMUZFQzQwMEE1REYyNyAvKiBnb29nX2NjX2ZhY3Rvcnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTAyQ0FBMjEyNzM1MkQwMEMyN0NENiAvKiBnb29nX2Nj
X25ldHdvcmtfY29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzMDExRkUxOEUwNzAw
MzczRTk5IC8qIGd0ZXN0X3Byb2RfdXRpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyRUEx
RkUxOEUwNzAwMzczRTk5IC8qIGd1bml0LmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTg3LDYgKzE0
MjUzLDggQEAKIAkJCQk0MTQ1RTRCRTFFRjg5NEY2MDBGQ0Y2RTYgLyogaDI2NF9wcm9maWxlX2xl
dmVsX2lkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODVFQjFFNkE2MzlGMDA5NEZEQzggLyog
aDI2NF9zcHJvcF9wYXJhbWV0ZXJfc2V0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgzREEx
RTQzOUE2RjAwNjIxRTkyIC8qIGgyNjRfc3BzX3Bwc190cmFja2VyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MUZDQkI3MjIxQjFGRjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MTc5NTNCRDIxNjk4MjRCMDAyODI2NkIgLyogaGVscGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTIyRDgxRkUxOEUwNzAwMzczRTk5IC8qIGhlbHBlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDREQ4M0RDMUU0MzlBNkYwMDYyMUU5MiAvKiBoaXN0b2dyYW0uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxOUM4MzU4MUZFMjQ2NjUwMDQwQzMwRiAvKiBoaXN0b2dyYW1fcGVy
Y2VudGlsZV9jb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTk2LDcgKzE0MjY0LDcgQEAK
IAkJCQk0MUEwOEJBRDIxMjY4MUM4MDAxRDVEN0IgLyogaTAxMF9idWZmZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDRDI4NDY4MUU2QTU3RjQwMDk0RkRDOCAvKiBpNDIwX2J1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDExMDlBQUQxRTVGQTE5MjAwQzA5NTVBIC8qIGk0MjBfYnVmZmVyX3Bv
b2wuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNDRCM0RFMjE2OUEwNzAwMDQzNjNBQyAvKiBSVENW
aWRlb0VuY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjQ5MjFCMUZERUYwMEE1REYy
NyAvKiBpY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUEwOEJD
MzIxMjY5NTc3MDAxRDVEN0IgLyogaWNlbG9nZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTMw
OTFGNzFFRjhDRkJEMDA3NTdDNTUgLyogaWNlc2VydmVycGFyc2luZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE5MjQxNUEyMTI3Mzc2RjAwNjM0RkNGIC8qIGljZXRyYW5zcG9ydGludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKQEAgLTE0MjMxLDYgKzE0Mjk5LDcgQEAKIAkJCQk1Q0REODNFMjFFNDM5
QTZGMDA2MjFFOTIgLyogaml0dGVyX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgz
RTAxRTQzOUE2RjAwNjIxRTkyIC8qIGppdHRlcl9idWZmZXJfY29tbW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0REODNFNDFFNDM5QTZGMDA2MjFFOTIgLyogaml0dGVyX2VzdGltYXRvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNTQyMUIxRkU0NjAwQTVERjI3IC8qIGppdHRlcl91cHBl
cl9ib3VuZF9leHBlcmltZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzYzRjk0MTFFNDE3MzdC
MDAyQ0E1MzEgLyoganNlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0Y5NDMxRTQxNzM3QjAw
MkNBNTMxIC8qIGpzZXBpY2VjYW5kaWRhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGOTQ1
MUU0MTczN0IwMDJDQTUzMSAvKiBqc2Vwc2Vzc2lvbmRlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTE0MjM5LDEyICsxNDMwOCwxMyBAQAogCQkJCTVDNjNGOERFMUU0MTZENTMwMDJDQTUz
MSAvKiBqc29uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM2NTFGRTE4RTA3MDAzNzNFOTkg
Lyoga2VlcF9yZWZfdW50aWxfZG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMwODg1MzAxRTRB
OTlEMjAwNDAzOTk1IC8qIGtleS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNkUyMUIxRkYz
QTAwQTVERjI3IC8qIGtleV9kZXJpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDE5
QjIxMjc1ODY1MDA2MzRGQ0YgLyoga2lzc19mZnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
NDIwMUU0MzlCMjkwMDYyMUU5MiAvKiBsZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNERDg0QjkxRTQzQUYxMzAwNjIxRTkyIC8qIGxldmVsX2VzdGltYXRv
cl9pbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNFNjc3MzIxNjk4NjNCMDBFRjM3RUQgLyog
bGlidnB4X2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyOTQwOTUyMTJFMTI4RDAw
QUQ5NUU3IC8qIGxpYnZweF92cDhfZGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyOTQw
OTMyMTJFMTI4RDAwQUQ5NUU3IC8qIGxpYnZweF92cDhfZW5jb2Rlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNDE3OTUzRjcyMTY5ODRCRTAwMjgyNjZCIC8qIFJUQ0VuY29kZWRJbWFnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE1RjFGQjMyMTI3MkZCQTAwMDY0Q0JGIC8qIGxpbWl0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxQkU3MUFCMjE1QzQ2MzcwMEE3QjE5NiAvKiBsaW5lbWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUJFNzFCOTIxNUM0NjM3MDBBN0IxOTYgLyogbGlzdGZtdC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xNDI1MywxMCArMTQzMjMsMTAgQEAKIAkJCQk1Q0REOEMxMDFFNDND
MzQ2MDA2MjFFOTIgLyogbG9ja2VkX2JhbmR3aWR0aF9pbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjMzMjFGRTE4RTA3MDAzNzNFOTkgLyogbG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQTIzNTIxRkUxOEUwNzAwMzczRTk5IC8qIGxvZ3NpbmtzLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MUZDQkI2OTIxQjFGRjFCMDBBNURGMjcgLyogbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0
aW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5MjQxQzAyMTI3NTkzRjAwNjM0RkNGIC8q
IGxvc3NfcmF0ZV9maWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzA2MUU0M0JBNzUw
MDYyMUU5MiAvKiBsb3VkbmVzc19oaXN0b2dyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4
NTVFMUU2QTYyRUQwMDk0RkRDOCAvKiBsb3dfY3V0X2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDE2MjI1RDUyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE5MjQxNDAyMTI3MzcyNDAwNjM0RkNGIC8qIGxwX3Jlc2lkdWFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODdDNjFFNDNCQzA1MDA2MjFFOTIgLyogbHBjX2Fu
YWx5c2lzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJDMjFFNDNDMkI1MDA2MjFFOTIgLyog
bHBjX2VuY29kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDI3NCwxNSArMTQzNDQsMTcgQEAKIAkJ
CQk1Q0REOEJDRTFFNDNDMkI1MDA2MjFFOTIgLyogbHNwX3RvX2xzZi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDEzQTIzOTcxRkUxOEUwODAwMzczRTk5IC8qIG1hY3V0aWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0QyODVDQzFFNkE2MzQzMDA5NEZEQzggLyogbWFpbl9maWx0ZXJfdXBkYXRlX2dh
aW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjNEMjFCMUZENDAwMEE1REYyNyAvKiBtYXRj
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1RDAxRTZBNjM0MzAwOTRGREM4IC8qIG1hdGNo
ZWRfZmlsdGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTQ0QjNERjIxNjlBMDcwMDA0MzYzQUMg
LyogUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1Q0Ux
RTZBNjM0MzAwOTRGREM4IC8qIG1hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTlDODM1OTFGRTI0NjY1MDA0MEMzMEYgLyogbWF0aHV0aWxzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUY5QkZENjIwNTFEREU1MDBBQkYwQjkgLyogbWF0cml4X2J1ZmZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFCRTcxQjgyMTVDNDYzNzAwQTdCMTk2IC8qIG1kNS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNDYyMUIxRkRFRjAwQTVERjI3IC8qIG1kbnNfbWVz
c2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg2QTUxRTQzQjk5NDAwNjIxRTkyIC8qIG1l
YW5fdmFyaWFuY2VfZXN0aW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODNFNjFFNDM5
QTZGMDA2MjFFOTIgLyogbWVkaWFfb3B0X3V0aWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
M0U4MUU0MzlBNkYwMDYyMUU5MiAvKiBtZWRpYV9vcHRpbWl6YXRpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTQxRkNCQjBGMjFCMUY1MzcwMEE1REYyNyAvKiBtZWRpYV90cmFuc3BvcnRfaW50ZXJm
YWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDhFNTFFNDJDMUUzMDAyNjUxQzggLyogbWVk
aWFjaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTAyRjZCMjIxMjczMzMxMDA2QUU4RDcg
LyogbWVkaWFjb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNEI0OEU3MUU0MkMxRTMwMDI2
NTFDOCAvKiBtZWRpYWNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDI5OCw2ICsxNDM3
MCw3IEBACiAJCQkJNUNEMjg2MzMxRTZBNjdCRjAwOTRGREM4IC8qIG1lZGlhdHlwZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxQTA4QkI4MjEyNjhBN0QwMDFENUQ3QiAvKiBtZW1vcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxM0EyMzA5MUZFMThFMDcwMDM3M0U5OSAvKiBtZW1vcnlfdXNhZ2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjg1MjFCMjAwN0IwMEE1REYyNyAvKiBtZW11dGls
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEEzMDFFNDNCRkIzMDA2MjFFOTIgLyogbWVyZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMkZBMUZFMThFMDcwMDM3M0U5OSAvKiBtZXNzYWdl
ZGlnZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjJCOTFGRTE4RTA3MDAzNzNFOTkgLyog
bWVzc2FnZWhhbmRsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQzMDYsMjEgKzE0Mzc5LDIzIEBA
CiAJCQkJNUMxMUEwMDUxRTQ1NzQwMDAwNEYwOTg3IC8qIG1vY2tfYXVkaW9fZGV2aWNlX2J1ZmZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhGRUQxRTQzQ0RDQTAwNjIxRTkyIC8qIG1vY2tf
YXVkaW9fcHJvY2Vzc2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzNTYxRkUyNDY2NTAw
NDBDMzBGIC8qIG1vZF9vcHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTVDREQ4MzdFMUU0MzlBMzUw
MDYyMUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzRTQy
MTY5ODNDQTAwMjgyNjZCIC8qIG1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzRTcy
MTY5ODNDQTAwMjgyNjZCIC8qIG1vZHVsZV9jb21tb25fdHlwZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxNzk1M0U1MjE2OTgzQ0EwMDI4MjY2QiAvKiBtb2R1bGVfY29tbW9uX3R5cGVzX3B1Ymxp
Yy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzRTMyMTY5ODNDQTAwMjgyNjZCIC8qIG1vZHVs
ZV9mZWNfdHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjE2MjFCMUY3QUEwMEE1REYy
NyAvKiBtb3ZpbmdfYXZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2MTExRTZBNjRD
OTAwOTRGREM4IC8qIG1vdmluZ19tYXguaCBpbiBIZWFkZXJzICovLAotCQkJCTQxODg5RDc4MjE2
QkM0RUMwMDQ2MTRERCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyK1ByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxOUM4MzU1MUZFMjQ2NjUwMDQwQzMwRiAvKiBtb3ZpbmdfbWF4X2Nv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzUyMUZFMjQ2NjUwMDQwQzMwRiAvKiBt
b3ZpbmdfbWVkaWFuX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhDOEYxRTQzQzY2
MDAwNjIxRTkyIC8qIG1vdmluZ19tb21lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJE
MDFFNDNDMkI1MDA2MjFFOTIgLyogbXlfY29yci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg5
NTQxRTQzQkYzQTAwNjIxRTkyIC8qIG5hY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4M0U5
MUU0MzlBNkYwMDYyMUU5MiAvKiBuYWNrX2ZlY190YWJsZXMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxNzk1M0VFMjE2OTg0MjEwMDI4MjY2QiAvKiB2cDlfcHJvZmlsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNERDgzRUIxRTQzOUE2RjAwNjIxRTkyIC8qIG5hY2tfbW9kdWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REOEEzMzFFNDNCRkIzMDA2MjFFOTIgLyogbmFja190cmFja2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTQ1RTRCNzFFRjg5NDNFMDBGQ0Y2RTYgLyogbmFsdV9yZXdyaXRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzQkYyMTY5ODI0QjAwMjgyNjZCIC8qIG5hbHVf
cmV3cml0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMkM0MUZFMThFMDcwMDM3M0U5OSAv
KiBuYXRzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNDRCM0UwMjE2OUEwNzAwMDQzNjNB
QyAvKiBSVENWaWRlb0RlY29kZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjJE
OTFGRTE4RTA3MDAzNzNFOTkgLyogbmF0c29ja2V0ZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQTIyRTcxRkUxOEUwNzAwMzczRTk5IC8qIG5hdHR5cGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REOEJEMjFFNDNDMkI1MDA2MjFFOTIgLyogbmVhcmVzdF9uZWlnaGJvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xNDMzNSw3ICsxNDQxMCw2IEBACiAJCQkJNDFFMDJDQ0YyMTI3MzVCNzAw
QzI3Q0Q2IC8qIG5ldHdvcmtfY29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMDJDQ0Uy
MTI3MzVCNzAwQzI3Q0Q2IC8qIG5ldHdvcmtfdHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
M0EyMzdDMUZFMThFMDcwMDM3M0U5OSAvKiBuZXR3b3JrbW9uaXRvci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNDEzRTY3OTEyMTY5ODdEQjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRnJhbWVCdWZmZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxM0EyMkMyMUZFMThFMDcwMDM3M0U5OSAvKiBuZXR3b3Jrcm91
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzJCMUU0M0JBQkUwMDYyMUU5MiAvKiBub2lz
ZV9nbW1fdGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTVGMUZCNDIxMjcyRkJBMDAwNjRD
QkYgLyogbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MzQz
LDExICsxNDQxNywxMiBAQAogCQkJCTVDREQ4NEVBMUU0M0IwQjYwMDYyMUU5MiAvKiBub2lzZV9z
dXBwcmVzc2lvbl9pbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODVGRDFFNDNCODRFMDA2
MjFFOTIgLyogbm9pc2Vfc3VwcHJlc3Npb25feC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhB
M0UxRTQzQkZCMzAwNjIxRTkyIC8qIG5vcm1hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUz
RUIyMTY5ODNGMTAwMjgyNjZCIC8qIHJ0dF9tdWx0X2V4cGVyaW1lbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQxRkNCQjU1MjFCMUZFNDYwMEE1REYyNyAvKiBub3JtYWxpemVfc2ltdWxjYXN0X3Np
emVfZXhwZXJpbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg2QTgxRTQzQjk5NDAwNjIx
RTkyIC8qIG5vcm1hbGl6ZWRfY292YXJpYW5jZV9lc3RpbWF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDNjNGOTU0MUU0MTczN0IwMDJDQTUzMSAvKiBub3RpZmllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNERDg2MDExRTQzQjg0RTAwNjIxRTkyIC8qIG5zX2NvcmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxRUNFQUMxMjA2NDBGMjgwMDlENTE0MSAvKiBOU1N0cmluZytTdGRTdHJpbmcuaCBp
biBIZWFkZXJzICovLAorCQkJCTQxNDRCM0VGMjE2OUM2M0YwMDQzNjNBQyAvKiBOU1N0cmluZytT
dGRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NjA2MUU0M0I4NEUwMDYyMUU5MiAv
KiBuc3hfY29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg2MDcxRTQzQjg0RTAwNjIxRTky
IC8qIG5zeF9kZWZpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODNCNDFGRTI0NzJFMDA0
MEMzMEYgLyogbnVsbF9hdWRpb19wb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQzNTUsMTQg
KzE0NDMwLDE4IEBACiAJCQkJNUMwODg1MzIxRTRBOTlEMjAwNDAzOTk1IC8qIG51bGxfY2lwaGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjNDMDFGRTE4RTA4MDAzNzNFOTkgLyogbnVsbHNv
Y2tldHNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1MzMxRTZBNjExMTAwOTRGREM4
IC8qIG51bGx3ZWJydGN2aWRlb2VuZ2luZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2MjI1RTMy
MTY5ODE5NTAwQTkxQzlCIC8qIG9iamNfZnJhbWVfYnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTYyMjVFODIxNjk4MTk1MDBBOTFDOUIgLyogb2JqY192aWRlb19kZWNvZGVyX2ZhY3Rvcnku
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxNjIyNUU1MjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2MjI1RTkyMTY5ODE5
NTAwQTkxQzlCIC8qIG9iamNfdmlkZW9fZnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0Ey
MzM2MUZFMThFMDcwMDM3M0U5OSAvKiBvbmV0aW1lZXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4Njk1MUU0M0I5MzkwMDYyMUU5MiAvKiBvb3VyYV9mZnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4NjkyMUU0M0I5MzkwMDYyMUU5MiAvKiBvb3VyYV9mZnRfdGFibGVzX2NvbW1vbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCN0UyMUIxRkZGNjAwQTVERjI3IC8qIG9wZW5zc2xf
a2V5X2Rlcml2YXRpb25faGtkZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEREIyNjYyMTI2NzlB
MzAwMjk2RDQ3IC8qIG9wZW5zc2xjZXJ0aWZpY2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFE
REIyNjMyMTI2NzlBMzAwMjk2RDQ3IC8qIG9wZW5zc2xzZXNzaW9uY2FjaGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxRERCMjYxMjEyNjc5QTMwMDI5NkQ0NyAvKiBvcGVuc3NsdXRpbGl0eS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFEREIyNTEyMTI2NUJFOTAwMjk2RDQ3IC8qIG9wdGlvbmFsLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk0MTNBMjM0NTFGRTE4RTA3MDAzNzNFOTkgLyogb3B0aW9uc2Zp
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QzY2MUU0M0M2MDkwMDYyMUU5MiAvKiBvcHVz
X2luc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QzY4MUU0M0M2MDkwMDYyMUU5MiAvKiBv
cHVzX2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3Q0YxRTQzQkMwNTAwNjIx
RTkyIC8qIG9zX3NwZWNpZmljX2lubGluZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDM3OCw3ICsx
NDQ1Nyw2IEBACiAJCQkJNDFGMjYzOTkyMTI2N0Y1RTAwMjc0RjU5IC8qIHBhX3JpbmdidWZmZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4RkEzMUU0M0NDQkUwMDYyMUU5MiAvKiBwYWNlZF9z
ZW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzJFMUZFMjQ1Q0QwMDQwQzMwRiAvKiBw
YWNlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE5MjQxOEQyMTI3NDlDODAwNjM0RkNGIC8qIHBh
Y2VyX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkQ0MUU0M0MyQjUwMDYy
MUU5MiAvKiBwYWNrX2JpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4M0VGMUU0MzlBNkYw
MDYyMUU5MiAvKiBwYWNrZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QUIwMUU0M0MwMEYw
MDYyMUU5MiAvKiBwYWNrZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTQzODYsNyArMTQ0NjQsNiBA
QAogCQkJCTVDREQ4QTQxMUU0M0JGQjMwMDYyMUU5MiAvKiBwYWNrZXRfYnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0REODNFRDFFNDM5QTZGMDA2MjFFOTIgLyogcGFja2V0X2J1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4OEQxRTQzQkUzQzAwNjIxRTkyIC8qIHBhY2tldF9s
b3NzX3N0YXRzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNFNjc5NTIxNjk4ODE5MDBFRjM3RUQg
Lyogc3ZjX3JhdGVfYWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDFDODIxMjc1
OTNGMDA2MzRGQ0YgLyogcGFja2V0X251bWJlcl9pbmRleGVkX3F1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTAyRjZCOTIxMjczMzgyMDA2QUU4RDcgLyogcGFja2V0X3JlY2VpdmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0REOEZBNTFFNDNDQ0JFMDA2MjFFOTIgLyogcGFja2V0X3JvdXRl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDM5NSw3ICsxNDQ3Miw2IEBACiAJCQkJNUM2M0Y5RjQx
RTQxNzRGNjAwMkNBNTMxIC8qIHBhY2tldHNvY2tldGZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDNjNGOUY1MUU0MTc0RjYwMDJDQTUzMSAvKiBwYWNrZXR0cmFuc3BvcnRpbnRlcmZhY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4M0Q5MUZFMjQ3RjIwMDQwQzMwRiAvKiBwYWNrZXR0
cmFuc3BvcnRpbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzQTIzOTAxRkUxOEUwODAw
MzczRTk5IC8qIHBhdGh1dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjQ4ODQxRTQyQzFC
QTAwMjY1MUM4IC8qIHBheWxvYWRfdHlwZV9tYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ5MDAxMUU0M0NFM0EwMDYyMUU5MiAvKiBwY20xNmIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
RDI4NTAwMUU2QTYwNTcwMDk0RkRDOCAvKiBwZWVyY29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xNDQwNSw3ICsxNDQ4MSw2IEBACiAJCQkJNDEwMkY2OTUyMTI3MzIwNjAwNkFFOEQ3IC8q
IHBlZXJjb25uZWN0aW9uaW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGOTVCMUU0
MTczN0IwMDJDQTUzMSAvKiBwZWVyY29ubmVjdGlvbnByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUY5QkZFMDIwNTFERTE4MDBBQkYwQjkgLyogcGVlcmNvbm5lY3Rpb253cmFwcGVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk0MTc5NTNCQjIxNjk4MjQyMDAyODI2NkIgLyogUlRDRGVmYXVsdFZp
ZGVvRGVjb2RlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzRFMUZFMjQ2NjUw
MDQwQzMwRiAvKiBwZXJjZW50aWxlX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFCRTcx
QzAyMTVDNDYzNzAwQTdCMTk2IC8qIHBoYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjNF
QTFGRTE4RTA4MDAzNzNFOTkgLyogcGh5c2ljYWxzb2NrZXRzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMTQ0MjYsMTAgKzE0NTAxLDggQEAKIAkJCQk0MTNBMjMxRDFGRTE4RTA3MDAzNzNFOTkg
LyogcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODg5MDFF
NDNCRTNDMDA2MjFFOTIgLyogcGxheW91dF9kZWxheV9vcmFjbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4OTU3MUU0M0JGM0EwMDYyMUU5MiAvKiBwbGkuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxM0U2NzZDMjE2OTg1NEIwMEVGMzdFRCAvKiBSVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODczNDFFNDNCQUJFMDA2MjFFOTIgLyogcG9sZV96
ZXJvX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCRDYxRTQzQzJCNTAwNjIxRTky
IC8qIHBvbHlfdG9fbHNmLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5NTNCRjIxNjk4MjRCMDAy
ODI2NkIgLyogbmFsdV9yZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCRDgxRTQz
QzJCNTAwNjIxRTkyIC8qIHBvbHlfdG9fbHNwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzYzRjlG
ODFFNDE3NEY2MDAyQ0E1MzEgLyogcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0Y5RkIx
RTQxNzRGNjAwMkNBNTMxIC8qIHBvcnRhbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ0
NDYsMjAgKzE0NTE5LDE3IEBACiAJCQkJNDEzQTIzMUYxRkUxOEUwNzAwMzczRTk5IC8qIHByb3h5
aW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzQzUxRkUxOEUwODAwMzczRTk5IC8qIHBy
b3h5c2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzYzRjlGRjFFNDE3NEY2MDAyQ0E1MzEg
LyogcHNldWRvdGNwLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTA2RDU2RDIxNkMyQkFBMDAxRTND
NDAgLyogc3RyaW5nX3ZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4OTU5MUU0M0JGM0Ew
MDYyMUU5MiAvKiBwc2ZiLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODc1NjFFNDNCQUY1MDA2
MjFFOTIgLyogcHVzaF9zaW5jX3Jlc2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgz
ODIxRTQzOUEzNTAwNjIxRTkyIC8qIHF1YWxpdHlfc2NhbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTkyNDE2QzIxMjczODlCMDA2MzRGQ0YgLyogcXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjJCMUU2QTY2QzgwMDk0RkRDOCAvKiBxdWFsaXR5
X3RocmVzaG9sZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NEIzRDQyMTY5ODk2RDAwNDM2M0FD
IC8qIFJUQ05hdGl2ZUk0MjBCdWZmZXIrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEz
QTIzRUYxRkUxOEUwODAwMzczRTk5IC8qIHJhY2VfY2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQTIzNEMxRkUxOEUwNzAwMzczRTk5IC8qIHJhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDhBNEIxRTQzQkZCMzAwNjIxRTkyIC8qIHJhbmRvbV92ZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4OTVDMUU0M0JGM0EwMDYyMUU5MiAvKiByYXBpZF9yZXN5bmNfcmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzNjAxRkUxOEUwNzAwMzczRTk5IC8qIHJhdGVf
bGltaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzMEQxRkUxOEUwNzAwMzczRTk5IC8q
IHJhdGVfc3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NEIzRUYyMTY5QzYzRjAw
NDM2M0FDIC8qIE5TU3RyaW5nK1N0ZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIz
MDQxRkUxOEUwNzAwMzczRTk5IC8qIHJhdGV0cmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MUEwOEJDQjIxMjY5NjFGMDAxRDVEN0IgLyogcmF3X2xvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDMDg4NTMzMUU0QTk5RDIwMDQwMzk5NSAvKiByZGIuaCBpbiBIZWFkZXJzICovLApAQCAt
MTQ0ODMsNyArMTQ1NTMsNiBAQAogCQkJCTVDNjNGQTAyMUU0MTc0RjYwMDJDQTUzMSAvKiByZWxh
eXBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGQTA1MUU0MTc0RjYwMDJDQTUzMSAvKiBy
ZWxheXNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg5NjIxRTQzQkYzQTAwNjIxRTky
IC8qIHJlbWIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0U2NzdFMjE2OTg2QUUwMEVGMzdFRCAv
KiBydHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTAyRjZB
NzIxMjczMjYyMDA2QUU4RDcgLyogcmVtaXhfcmVzYW1wbGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4RkRDMUU0M0NENjYwMDYyMUU5MiAvKiByZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3JfYWJz
X3NlbmRfdGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhGREUxRTQzQ0Q2NjAwNjIxRTky
IC8qIHJlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmggaW4gSGVhZGVycyAq
LywKQEAgLTE0NTE2LDcgKzE0NTg1LDYgQEAKIAkJCQk0MUY5QkZBOTIwNTFDOEUyMDBBQkYwQjkg
LyogcnRjX2V2ZW50X2Fscl9zdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzOUQxRkUy
NDZGOTAwNDBDMzBGIC8qIHJ0Y19ldmVudF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxOUM4Mzk4MUZFMjQ2RjkwMDQwQzMwRiAvKiBydGNfZXZlbnRfYXVk
aW9fcGxheW91dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3OEEyMTY5ODdCOTAwRUYzN0VE
IC8qIFJUQ0NWUGl4ZWxCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4M0ExMUZFMjQ2
RjkwMDQwQzMwRiAvKiBydGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTlDODM4RTFGRTI0NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X2F1
ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzOTMxRkUy
NDZGOTAwNDBDMzBGIC8qIHJ0Y19ldmVudF9id2VfdXBkYXRlX2RlbGF5X2Jhc2VkLmggaW4gSGVh
ZGVycyAqLywKQEAgLTE0NTI5LDcgKzE0NTk3LDYgQEAKIAkJCQk0MTlDODQyMzFGRTI0QkE2MDA0
MEMzMEYgLyogcnRjX2V2ZW50X2xvZ19vdXRwdXRfZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE5QzgzOUYxRkUyNDZGOTAwNDBDMzBGIC8qIHJ0Y19ldmVudF9wcm9iZV9jbHVzdGVyX2NyZWF0
ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4M0EwMUZFMjQ2RjkwMDQwQzMwRiAvKiBydGNf
ZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNDRCM0Qy
MjE2OTg5NkQwMDQzNjNBQyAvKiBSVENOYXRpdmVJNDIwQnVmZmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTlDODM5QTFGRTI0NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9z
dWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODM5MDFGRTI0NkY5MDA0MEMzMEYgLyog
cnRjX2V2ZW50X3J0Y3BfcGFja2V0X2luY29taW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlD
ODM5NDFGRTI0NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X3J0Y3BfcGFja2V0X291dGdvaW5nLmgg
aW4gSGVhZGVycyAqLywKQEAgLTE0NTM3LDcgKzE0NjA0LDYgQEAKIAkJCQk0MTlDODNBQjFGRTI0
NzA4MDA0MEMzMEYgLyogcnRjX2V2ZW50X3J0cF9wYWNrZXRfb3V0Z29pbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxOUM4M0FFMUZFMjQ3MDgwMDQwQzMwRiAvKiBydGNfZXZlbnRfdmlkZW9fcmVj
ZWl2ZV9zdHJlYW1fY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODNCMDFGRTI0NzA4
MDA0MEMzMEYgLyogcnRjX2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNDE3OTUzRDQyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE5Qzg0MUUxRkUyNEFFRjAwNDBDMzBGIC8qIHJ0Y19zdHJlYW1f
Y29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ2MjFGRTE5OTFBMDAzNzNFOTkgLyog
UlRDQXVkaW9TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ1ODFGRTE5OTFBMDAz
NzNFOTkgLyogUlRDQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xNDU0NSwyMSArMTQ2MTEsMjggQEAKIAkJCQk0MTNBMjQ1NzFGRTE5OTFBMDAzNzNFOTkgLyog
UlRDQXVkaW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NUIxRkUxOTkxQTAwMzcz
RTk5IC8qIFJUQ0NhbWVyYVByZXZpZXdWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ0
RDFGRTE5OTFBMDAzNzNFOTkgLyogUlRDQ2FtZXJhVmlkZW9DYXB0dXJlci5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNDE3OTUzRjkyMTY5ODRCRTAwMjgyNjZCIC8qIFJUQ0k0MjBCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxM0EyMzIzMUZFMThFMDcwMDM3M0U5OSAvKiBydGNjZXJ0aWZpY2F0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyREIxRkUxOEUwNzAwMzczRTk5IC8qIHJ0Y2Nl
cnRpZmljYXRlZ2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNGODIxNjk4NEJF
MDAyODI2NkIgLyogUlRDQ29kZWNTcGVjaWZpY0luZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
Nzk1M0JBMjE2OTgyNDIwMDI4MjY2QiAvKiBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQrUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzQzAyMTY5ODI0QjAwMjgyNjZCIC8qIFJUQ0Nv
ZGVjU3BlY2lmaWNJbmZvSDI2NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NDQxRkUxOTkx
QTAwMzczRTk5IC8qIFJUQ0NvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQxM0U2
NzhBMjE2OTg3QjkwMEVGMzdFRCAvKiBSVENDVlBpeGVsQnVmZmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNBMjQ1NTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDRGF0YUNoYW5uZWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0EyNDcwMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENEYXRhQ2hhbm5lbENv
bmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNjIyNUQyMjE2OTgxODEwMEE5MUM5
QiAvKiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0JC
MjE2OTgyNDIwMDI4MjY2QiAvKiBSVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDE3OTUzQzIyMTY5ODI0QjAwMjgyNjZCIC8qIFJUQ0RlZmF1bHRWaWRl
b0VuY29kZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ1MjFGRTE5OTFBMDAz
NzNFOTkgLyogUlRDRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NUQxRkUx
OTkxQTAwMzczRTk5IC8qIFJUQ0VBR0xWaWRlb1ZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
NDRCM0Y2MjE2QjA4MUIwMDQzNjNBQyAvKiBSVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDE3OTUzRjcyMTY5ODRCRTAwMjgyNjZCIC8qIFJUQ0VuY29kZWRJbWFn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGNDExQjExRUY4REEwMjAwMzQzQzI2IC8qIHJ0Y2Vy
cm9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5NTNFNTIxNjk4M0NBMDAyODI2NkIgLyogbW9k
dWxlX2NvbW1vbl90eXBlc19wdWJsaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjlCRjg4MjA1
MUM4MDEwMEFCRjBCOSAvKiBydGNldmVudGxvZ291dHB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDEzQTI0NDAxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0ZpZWxkVHJpYWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTNBMjQ1QTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDRmlsZUxvZ2dlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzQTI0NTYxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0ZpbGVWaWRlb0Nh
cHR1cmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNDMzIxNjk4MjRCMDAyODI2NkIgLyog
UlRDSDI2NFByb2ZpbGVMZXZlbElkLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNGOTIxNjk4
NEJFMDAyODI2NkIgLyogUlRDSTQyMEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0
NEUxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0ljZUNhbmRpZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQTI0NUUxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0ljZVNlcnZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDEzQTI0NDgxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0ludGVydmFsUmFuZ2UuaCBp
biBIZWFkZXJzICovLApAQCAtMTQ1NzQsMTIgKzE0NjQ3LDEzIEBACiAJCQkJNDEzQTI0NkExRkUx
OTkxQTAwMzczRTk5IC8qIFJUQ01ldHJpY3NTYW1wbGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjQ2NzFGRTE5OTFBMDAzNzNFOTkgLyogUlRDTVRMTlNWaWRlb1ZpZXcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0EyNDcxMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENNVExWaWRlb1ZpZXcu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxNDRCM0Q0MjE2OTg5NkQwMDQzNjNBQyAvKiBSVENOYXRp
dmVJNDIwQnVmZmVyK1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNDRCM0QyMjE2OTg5
NkQwMDQzNjNBQyAvKiBSVENOYXRpdmVJNDIwQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MTQ0QjNENTIxNjk4OTZEMDA0MzYzQUMgLyogUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxM0EyNDU5MUZFMTk5MUEwMDM3M0U5OSAvKiBSVENOU0dMVmlk
ZW9WaWV3LmggaW4gSGVhZGVycyAqLywKLQkJCQk1Q0REOEE1MDFFNDNCRkIzMDA2MjFFOTIgLyog
cnRjcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgyQjIxRkUyMERDRDAwNDBDMzBGIC8qIHJ0
Y3BfZGVtdXhlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1RkIxRTZBNjQ1MjAwOTRGREM4
IC8qIHJ0Y3BfbmFja19zdGF0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4OTgxRTQzQkUz
QzAwNjIxRTkyIC8qIHJ0Y3BfcGFja2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTQ0QjNFQjIx
NjlDNUUzMDA0MzYzQUMgLyogUlRDVmlkZW9Db2RlY0luZm8rUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE5QzgyQkQxRkUyMERDRDAwNDBDMzBGIC8qIHJ0Y3BfcGFja2V0X3NpbmtfaW50
ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODg5QjFFNDNCRTNDMDA2MjFFOTIgLyog
cnRjcF9yZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4OUUxRTQzQkUzQzAwNjIx
RTkyIC8qIHJ0Y3Bfc2VuZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NTg4LDE1ICsxNDY2Miwx
NyBAQAogCQkJCTQxOUM4MzA1MUZFMjBGMDIwMDQwQzMwRiAvKiBydGNwX3RyYW5zY2VpdmVyX2lt
cGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDNFMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENQ
ZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NjMxRkUxOTkxQTAwMzcz
RTk5IC8qIFJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3
OTUzQzIyMTY5ODI0QjAwMjgyNjZCIC8qIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ2QzFGRTE5OTFBMDAzNzNFOTkgLyogUlRDUnRwQ29k
ZWNQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTg4OUQ3NTIxNkJCN0I5MDA0NjE0
REQgLyogUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzK1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxODg5RDc2MjE2QkM0RUMwMDQ2MTRERCAvKiBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDRDMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENSdHBF
bmNvZGluZ1BhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxODg5RDc4MjE2QkM0RUMw
MDQ2MTRERCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyK1ByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQxM0U2N0ExMjE2OTg4OTUwMEVGMzdFRCAvKiBSVENSdHBGcmFnbWVudGF0aW9u
SGVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ0NTFGRTE5OTFBMDAzNzNFOTkgLyog
UlRDUnRwUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0M0IxRkUxOTkxQTAw
MzczRTk5IC8qIFJUQ1J0cFJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ1QzFG
RTE5OTFBMDAzNzNFOTkgLyogUlRDUnRwU2VuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNB
MjQ0QTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTNBMjQ2NjFGRTE5OTFBMDAzNzNFOTkgLyogUlRDU1NMQWRhcHRlci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzQzYyMTY5ODI0QjAwMjgyNjZCIC8qIFJUQ1ZpZGVvRGVj
b2RlckgyNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDVFNEM4MUVGODk2RDcwMEZDRjZFNiAv
KiBydGNzdGF0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0NUU0QzcxRUY4OTZENzAwRkNGNkU2
IC8qIHJ0Y3N0YXRzX29iamVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NTA4MUU2QTYw
NTcwMDk0RkRDOCAvKiBydGNzdGF0c2NvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDYw
NywxOSArMTQ2ODMsMzcgQEAKIAkJCQk0MTNBMjQzRDFGRTE5OTFBMDAzNzNFOTkgLyogUlRDVmlk
ZW9DYXB0dXJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFQ0VBQjYyMDYzMDEwODAwOUQ1MTQx
IC8qIFJUQ1ZpZGVvQ29kZWMrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NDMx
RkUxOTkxQTAwMzczRTk5IC8qIFJUQ1ZpZGVvQ29kZWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
M0U2NzY2MjE2OTg1NEIwMEVGMzdFRCAvKiBSVENWaWRlb0NvZGVjQ29uc3RhbnRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTNBMjQ1MzFGRTE5OTFBMDAzNzNFOTkgLyogUlRDVmlkZW9Db2RlY0Zh
Y3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDNDMUZFMTk5MUEwMDM3M0U5OSAvKiBS
VENWaWRlb0NvZGVjSDI2NC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE0NEIzRUIyMTY5QzVFMzAw
NDM2M0FDIC8qIFJUQ1ZpZGVvQ29kZWNJbmZvK1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxM0U2Nzk5MjE2OTg4MzkwMEVGMzdFRCAvKiBSVENWaWRlb0NvZGVjSW5mby5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDE0NEIzREQyMTY5QTA3MDAwNDM2M0FDIC8qIFJUQ1ZpZGVvRGVjb2Rlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDE0NEIzRTAyMTY5QTA3MDAwNDM2M0FDIC8qIFJUQ1ZpZGVv
RGVjb2RlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0M1MjE2OTgyNEIwMDI4
MjY2QiAvKiBSVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDE3OTUzQzYyMTY5ODI0QjAwMjgyNjZCIC8qIFJUQ1ZpZGVvRGVjb2RlckgyNjQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0EyNDY1MUZFMTk5MUEwMDM3M0U5OSAvKiBSVENWaWRlb0RlY29kZXJW
UDguaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDYwMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENW
aWRlb0RlY29kZXJWUDkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNDRCM0RFMjE2OUEwNzAwMDQz
NjNBQyAvKiBSVENWaWRlb0VuY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNDRCM0RGMjE2
OUEwNzAwMDQzNjNBQyAvKiBSVENWaWRlb0VuY29kZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MTc5NTNDODIxNjk4MjRCMDAyODI2NkIgLyogUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgy
NjQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0M5MjE2OTgyNEIwMDI4MjY2QiAvKiBSVENW
aWRlb0VuY29kZXJIMjY0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNFNjdBMDIxNjk4ODk1MDBF
RjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTQ0QjNFQTIxNjlDNUUzMDA0MzYzQUMgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEzRTY3ODUyMTY5ODc3RDAwRUYzN0VEIC8qIFJU
Q1ZpZGVvRW5jb2RlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNFNjc2OTIxNjk4
NTRCMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyVlA4LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTNBMjQ2RTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDVmlkZW9FbmNvZGVyVlA4LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTNBMjQ0NjFGRTE5OTFBMDAzNzNFOTkgLyogUlRDVmlkZW9FbmNvZGVyVlA5
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNFNjc3MzIxNjk4NjNCMDBFRjM3RUQgLyogbGlidnB4
X2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NEYxRkUxOTkxQTAwMzczRTk5
IC8qIFJUQ1ZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxM0U2NzhGMjE2OTg3REIw
MEVGMzdFRCAvKiBSVENWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNFNjc5MTIx
Njk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQTI0NDExRkUxOTkxQTAwMzczRTk5IC8qIFJUQ1ZpZGVvRnJhbWVCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxM0EyNDZGMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENWaWRlb1JlbmRl
cmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ2MTFGRTE5OTFBMDAzNzNFOTkgLyogUlRD
VmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDUwMUZFMTk5MUEwMDM3M0U5
OSAvKiBSVENWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQzQTFGRTE5OTFB
MDAzNzNFOTkgLyogUlRDVmlkZW9WaWV3U2hhZGluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEz
RTY3NkEyMTY5ODU0QjAwRUYzN0VEIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTQxM0U2NzZDMjE2OTg1NEIwMEVGMzdFRCAvKiBSVENXcmFwcGVk
TmF0aXZlVmlkZW9FbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODJCODFGRTIwRENE
MDA0MEMzMEYgLyogcnRwX2NvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzQzkxRkUy
NDdCNDAwNDBDMzBGIC8qIHJ0cF9jdm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzA5MjAxMUVG
OEQwQTYwMDc1N0M1NSAvKiBydHBfZGVtdXhlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDYzMCwx
MSArMTQ3MjQsMTEgQEAKIAkJCQk1Q0REODhBQzFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX2Zvcm1h
dF92cDguaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4OEFGMUU0M0JFM0MwMDYyMUU5MiAvKiBy
dHBfZm9ybWF0X3ZwOS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgzRjcxRTQzOUE2RjAwNjIx
RTkyIC8qIHJ0cF9mcmFtZV9yZWZlcmVuY2VfZmluZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
MTc5NTNENjIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9yZWNlaXZlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0REOEFCOTFFNDNDMDBGMDA2MjFFOTIgLyogcnRwX2dlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDFFMDJDN0IyMTI3MzQ3NDAwQzI3Q0Q2IC8qIHJ0cF9nZW5lcmljX2Zy
YW1lX2Rlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTAyQzc5MjEyNzM0NzQwMEMy
N0NENiAvKiBydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE5QzgzQzQxRkUyNDdCNDAwNDBDMzBGIC8qIHJ0cF9oZWFkZXJfZXh0ZW5z
aW9uX21hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEzRTY3N0UyMTY5ODZBRTAwRUYzN0VEIC8q
IHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4OEI2
MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxOUM4M0NDMUZFMjQ3QjQwMDQwQzMwRiAvKiBydHBfaGVhZGVyX3BhcnNlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFGOUJGOEQyMDUxQzgwMTAwQUJGMEI5IC8qIHJ0cF9oZWFkZXJz
LmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjQyLDcgKzE0NzM2LDYgQEAKIAkJCQk1Q0REODhCQTFF
NDNCRTNEMDA2MjFFOTIgLyogcnRwX3BhY2tldF9oaXN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0REODhCQjFFNDNCRTNEMDA2MjFFOTIgLyogcnRwX3BhY2tldF9yZWNlaXZlZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE5QzgyQjYxRkUyMERDRDAwNDBDMzBGIC8qIHJ0cF9wYWNrZXRfc2lu
a19pbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0U2NzhGMjE2OTg3REIwMEVGMzdF
RCAvKiBSVENWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODhCQzFFNDNCRTNE
MDA2MjFFOTIgLyogcnRwX3BhY2tldF90b19zZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQ2
QjQ1QTIxMjczMTU5MDA4RjkzNTMgLyogcnRwX3BheWxvYWRfcGFyYW1zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTlDODNDMzFGRTI0N0I0MDA0MEMzMEYgLyogcnRwX3J0Y3AuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTQ2NzksNiArMTQ3NzIsNyBAQAogCQkJCTQxOUM4MkRCMUZFMjBFNTkwMDQwQzMw
RiAvKiBydHB0cmFuc3BvcnRpbnRlcm5hbGFkYXB0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
NEI0OEYyMUU0MkMxRTMwMDI2NTFDOCAvKiBydHB1dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNERDgzRjkxRTQzOUE2RjAwNjIxRTkyIC8qIHJ0dF9maWx0ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxNzk1M0VCMjE2OTgzRjEwMDI4MjY2QiAvKiBydHRfbXVsdF9leHBlcmltZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTkyNDFDQjIxMjc1OTNGMDA2MzRGQ0YgLyogcnR0X3N0YXRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODJDMjFGRTIwRENEMDA0MEMzMEYgLyogcnR4X3JlY2Vp
dmVfc3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDE2MjIxMjczODVCMDA2MzRGQ0Yg
LyogcndfbG9ja19wb3NpeC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDY5MCw2ICsxNDc4NCw3IEBA
CiAJCQkJNDEzQTIzMjgxRkUxOEUwNzAwMzczRTk5IC8qIHNhbml0aXplci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE2RDNCRUEyMTI3MzFDMjAwNzc1RjA5IC8qIHNhdHVyYXRpb25fcHJvdGVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjMwNTFGRTE4RTA3MDAzNzNFOTkgLyogc2NvcGVk
X3JlZl9wdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjEwMjFCMUY1MzcwMEE1REYyNyAv
KiBzY29wZWRfcmVmcHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkZCNjIwNTFDOTM2MDBB
QkYwQjkgLyogc2NvcGVkdmlkZW9kZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY5QkZC
NzIwNTFDOTM2MDBBQkYwQjkgLyogc2NvcGVkdmlkZW9lbmNvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTlDODQzNjFGRTI0RTgwMDA0MEMzMEYgLyogc2NyZWVuc2hhcmVfbGF5ZXJzLmggaW4g
SGVhZGVycyAqLywKQEAgLTE0NzA0LDYgKzE0Nzk5LDcgQEAKIAkJCQk1Q0REODVCQTFFNDNCNUMw
MDA2MjFFOTIgLyogc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTkyNDE4QjIxMjc0OUM4MDA2MzRGQ0YgLyogc2VuZF90aW1lX2hpc3RvcnkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4OTczMUU0M0JGM0EwMDYyMUU5MiAvKiBzZW5kZXJfcmVwb3J0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MUZDQkIyODIxQjFGODdFMDBBNURGMjcgLyogc2VudF9wYWNrZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxOTI0MUFDMjEyNzU4RDMwMDYzNEZDRiAvKiBzZXF1ZW5j
ZV9idWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMkQ0MUZFMThFMDcwMDM3M0U5OSAv
KiBzZXF1ZW5jZWRfdGFza19jaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjNBRTFG
RTE4RTA4MDAzNzNFOTkgLyogc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl9pbXBsLmggaW4gSGVhZGVy
cyAqLywKQEAgLTE0NzE1LDcgKzE0ODExLDYgQEAKIAkJCQk1Q0QyODVFMDFFNkE2MzQzMDA5NEZE
QzggLyogc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1
RjFGQjUyMTI3MkZCQTAwMDY0Q0JGIC8qIHNpZ25hbF9jbGFzc2lmaWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUY5QkZDNTIwNTFDQUU1MDBBQkYwQjkgLyogc2lnbmFsX3Byb2Nlc3NpbmdfbGli
cmFyeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzRDcyMTY5ODM0RjAwMjgyNjZCIC8qIGNo
YW5uZWxfc2VuZF9wcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzODExRkUxOEUwNzAw
MzczRTk5IC8qIHNpZ25hbHRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzQkMyMTI2
ODExNTAwMjc0RjU5IC8qIHNpZ3Nsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzMzMUZF
MThFMDcwMDM3M0U5OSAvKiBzaWdzbG90cmVwZWF0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ3
NTUsNyArMTQ4NTAsNiBAQAogCQkJCTQxM0EyMTNGMUZFMEYwRUYwMDM3M0U5OSAvKiBzcnRwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjEzRDFGRTBGMEVGMDAzNzNFOTkgLyogc3J0cF9wcml2
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODJFMTFGRTIwRTU5MDA0MEMzMEYgLyogc3J0cHNl
c3Npb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNzk1M0M4MjE2OTgyNEIwMDI4MjY2QiAvKiBS
VENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgyRTIx
RkUyMEU1OTAwNDBDMzBGIC8qIHNydHB0cmFuc3BvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
RTAyQ0JEMjEyNzM1NkEwMEMyN0NENiAvKiBzc2xjZXJ0aWZpY2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDEzQTIzQUYxRkUxOEUwODAwMzczRTk5IC8qIHNzbGZpbmdlcnByaW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTE0NzY2LDcgKzE0ODYwLDYgQEAKIAkJCQk1Q0REODczNzFFNDNCQUJFMDA2
MjFFOTIgLyogc3RhbmRhbG9uZV92YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMDg4NTM1MUU0
QTk5RDIwMDQwMzk5NSAvKiBzdGF0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJFQzFFNDND
MkI1MDA2MjFFOTIgLyogc3RhdGVfY29uc3RydWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTYy
MjVFOTIxNjk4MTk1MDBBOTFDOUIgLyogb2JqY192aWRlb19mcmFtZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNERDhCRUUxRTQzQzJCNTAwNjIxRTkyIC8qIHN0YXRlX3NlYXJjaC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNERDhBNTIxRTQzQkZCMzAwNjIxRTkyIC8qIHN0YXRpc3RpY3NfY2FsY3Vs
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg1QkQxRTQzQjVDMDAwNjIxRTkyIC8qIHN0
YXRzX2NvdW50ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ3NzgsNiArMTQ4NzEsNyBAQAogCQkJ
CTVDNEI0OEY1MUU0MkMxRTMwMDI2NTFDOCAvKiBzdHJlYW1wYXJhbXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxRERCMjZDMjEyNjc5RDIwMDI5NkQ0NyAvKiBzdHJpbmdfYnVpbGRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzQTIzNjQxRkUxOEUwNzAwMzczRTk5IC8qIHN0cmluZ190b19udW1i
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMDZENTZEMjE2QzJCQUEwMDFFM0M0MCAvKiBzdHJp
bmdfdmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyRUIxRkUxOEUwNzAwMzczRTk5IC8q
IHN0cmluZ2VuY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzQjExRkUxOEUwODAwMzcz
RTk5IC8qIHN0cmluZ2l6ZV9tYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMkNFMUZF
MThFMDcwMDM3M0U5OSAvKiBzdHJpbmd1dGlscy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDc5MSwx
MyArMTQ4ODUsMTQgQEAKIAkJCQk1Q0QyODVFMTFFNkE2MzQzMDA5NEZEQzggLyogc3VidHJhY3Rv
cl9vdXRwdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUU1MUU2QTYzNDMwMDk0RkRDOCAv
KiBzdXBwcmVzc2lvbl9maWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUU3MUU2QTYz
NDMwMDk0RkRDOCAvKiBzdXBwcmVzc2lvbl9nYWluLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNF
Njc4MTIxNjk4NzBGMDBFRjM3RUQgLyogc3ZjX2NvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDEzRTY3OTUyMTY5ODgxOTAwRUYzN0VEIC8qIHN2Y19yYXRlX2FsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNERDhCRjAxRTQzQzJCNTAwNjIxRTkyIC8qIHN3YXBfYnl0ZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxM0EyMzQ3MUZFMThFMDcwMDM3M0U5OSAvKiBzd2FwX3F1ZXVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDFBOTIxMjc1OEQzMDA2MzRGQ0YgLyogc3ltbWV0cmlj
X21hdHJpeF9idWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQkU3MUEzMjE1QzQ2MzcwMEE3
QjE5NiAvKiBzeW1yZWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QTU1MUU0M0JGQjMwMDYy
MUU5MiAvKiBzeW5jX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg0QkYxRTZBNUY5
RjAwOTRGREM4IC8qIHN5bmNhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTQ0QjNGNjIxNkIw
ODFCMDA0MzYzQUMgLyogUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4OTc5MUU0M0JGM0EwMDYyMUU5MiAvKiB0YXJnZXRfYml0cmF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTIzMzkxRkUxOEUwNzAwMzczRTk5IC8qIHRhc2tfcXVldWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxM0EyMzdEMUZFMThFMDcwMDM3M0U5OSAvKiB0YXNrX3F1ZXVlX3Bv
c2l4LmggaW4gSGVhZGVycyAqLywKQEAgLTE0ODE2LDkgKzE0OTExLDkgQEAKIAkJCQk0MTNBMjJF
ODFGRTE4RTA3MDAzNzNFOTkgLyogdGhyZWFkX2NoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxM0EyMkI4MUZFMThFMDcwMDM3M0U5OSAvKiB0aHJlYWRfY2hlY2tlcl9pbXBsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0REODRDNDFFNDNBRjEzMDA2MjFFOTIgLyogdGhyZWVfYmFuZF9maWx0
ZXJfYmFuay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCMjMyMUIxRjgyRjAwQTVERjI3IC8q
IHRocm93X2RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEE1ODFFNDNCRkIzMDA2
MjFFOTIgLyogdGlja190aW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5MjQxREQyMTI3NUEz
MDAwNjM0RkNGIC8qIHRpbWVfZGVsdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxOUM4MzM0MUZF
MjQ1RUEwMDQwQzMwRiAvKiB0aW1lX2ludGVydmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
OEE1QjFFNDNCRkIzMDA2MjFFOTIgLyogdGltZV9zdHJldGNoLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0REODhEQjFFNDNCRTNEMDA2MjFFOTIgLyogdGltZV91dGlsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTkyNDFFMDIxMjc1QTMwMDA2MzRGQ0YgLyogdGltZXN0YW1wLmggaW4gSGVhZGVycyAq
LywKQEAgLTE0ODU2LDIwICsxNDk1MSwxNyBAQAogCQkJCTQxM0EyMzRCMUZFMThFMDcwMDM3M0U5
OSAvKiB0eXBlX3RyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg0QzYxRTQzQUYxMzAw
NjIxRTkyIC8qIHR5cGluZ19kZXRlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGQTMx
MUU0MTc0RjYwMDJDQTUzMSAvKiB1ZHBwb3J0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTkyNDE1
NzIxMjczNzZGMDA2MzRGQ0YgLyogdWRwdHJhbnNwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTNBMjQ2QjFGRTE5OTFBMDAzNzNFOTkgLyogVUlEZXZpY2UrUlRDRGV2aWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REODhFMDFFNDNCRTNEMDA2MjFFOTIgLyogdWxwZmVjX2dlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4RTMxRTQzQkUzRDAwNjIxRTkyIC8qIHVscGZlY19o
ZWFkZXJfcmVhZGVyX3dyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzQzYxRkUyNDdC
NDAwNDBDMzBGIC8qIHVscGZlY19yZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4
RTUxRTQzQkUzRDAwNjIxRTkyIC8qIHVscGZlY19yZWNlaXZlcl9pbXBsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzYzRjk3NTFFNDE3MzdCMDAyQ0E1MzEgLyogdW1hbWV0cmljcy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNDEzQTIyQTQxRkUxOEUwNjAwMzczRTk5IC8qIHVuaXhmaWxlc3lzdGVtLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJGMjFFNDNDMkI1MDA2MjFFOTIgLyogdW5wYWNrX2Jp
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjI2M0IwMjEyNjgwQTgwMDI3NEY1OSAvKiB1bnVz
ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMTQwMUZFMEYwRUYwMDM3M0U5OSAvKiB1dF9z
aW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzA5MUU0M0JBNzUwMDYyMUU5MiAvKiB1dGls
aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODdERjFFNDNCQzJFMDA2MjFFOTIgLyogdXRp
bGl0eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzQkEyMTY5ODI0MjAwMjgyNjZCIC8qIFJU
Q0NvZGVjU3BlY2lmaWNJbmZvSDI2NCtQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
ODczQjFFNDNCQUJFMDA2MjFFOTIgLyogdmFkX2F1ZGlvX3Byb2MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4NzM4MUU0M0JBQkUwMDYyMUU5MiAvKiB2YWRfYXVkaW9fcHJvY19pbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3M0UxRTQzQkFCRTAwNjIxRTkyIC8qIHZhZF9jaXJj
dWxhcl9idWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ4ODgsMTkgKzE0OTgwLDIxIEBACiAJ
CQkJNUNERDg0MDIxRTQzOUE2RjAwNjIxRTkyIC8qIHZpZGVvX2NvZGluZ19pbXBsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTlDODQxMzFGRTI0OUFCMDA0MEMzMEYgLyogdmlkZW9fY29udGVudF90
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ1RTQ4RDFFRjg4QjlEMDBGQ0Y2RTYgLyogdmlk
ZW9fZGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2MjI1RDIyMTY5ODE4MTAwQTkxQzlC
IC8qIHZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0NUY2MUUx
RkUxRjM4RDAwRUI5Q0FGIC8qIHZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFGMjYzNjYyMTI2N0FERjAwMjc0RjU5IC8qIHZpZGVvX2RlY29kZXJfc29mdHdhcmVf
ZmFsbGJhY2tfd3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0NUU0OEUxRUY4OEI5RDAw
RkNGNkU2IC8qIHZpZGVvX2VuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjI2MzY4MjEy
NjdBREYwMDI3NEY1OSAvKiB2aWRlb19lbmNvZGVyX2NvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDE2MjI1RDUyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE0NUY2MUYxRkUxRjM4RDAwRUI5Q0FGIC8qIHZpZGVvX2VuY29k
ZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzNkEyMTI2N0FERjAwMjc0RjU5
IC8qIHZpZGVvX2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDE2MjI1RDYyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0QyODQ2QjFFNkE1N0Y0MDA5NEZEQzggLyogdmlkZW9fZnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxMTA5QUFFMUU1RkExOTIwMEMwOTU1QSAvKiB2aWRlb19mcmFt
ZV9idWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NDY5MUU2QTU3RjQwMDk0RkRDOCAv
KiB2aWRlb19mcmFtZV9idWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNjIyNUQzMjE2OTgx
ODEwMEE5MUM5QiAvKiB2aWRlb19mcmFtZV9idWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
MDJGNkNGMjEyNzMzQjcwMDZBRThENyAvKiB2aWRlb19xdWFsaXR5X29ic2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTlDODJDNDFGRTIwRENEMDA0MEMzMEYgLyogdmlkZW9fcmVjZWl2ZV9z
dHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNzk1M0M1MjE2OTgyNEIwMDI4MjY2QiAvKiBS
VENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3OTky
MTY5ODgzOTAwRUYzN0VEIC8qIFJUQ1ZpZGVvQ29kZWNJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0REODVDQjFFNDNCNUMwMDA2MjFFOTIgLyogdmlkZW9fcmVjZWl2ZV9zdHJlYW0uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDNEI0QzIxMUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19yZW5kZXJf
ZnJhbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODQ2QzFFNkE1N0Y0MDA5NEZEQzggLyog
dmlkZW9fcm90YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTQ5MzIsMTMgKzE1MDI2LDE0IEBA
CiAJCQkJNUNEMjg1MTkxRTZBNjA1NzAwOTRGREM4IC8qIHZpZGVvdHJhY2tzb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxM0EyMkJDMUZFMThFMDcwMDM3M0U5OSAvKiB2aXJ0dWFsc29ja2V0
c2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODc0MTFFNDNCQUJFMDA2MjFFOTIgLyog
dm9pY2VfYWN0aXZpdHlfZGV0ZWN0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNzk1M0U3MjE2
OTgzQ0EwMDI4MjY2QiAvKiBtb2R1bGVfY29tbW9uX3R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0REODRDODFFNDNBRjEzMDA2MjFFOTIgLyogdm9pY2VfZGV0ZWN0aW9uX2ltcGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDREQ4NzQyMUU0M0JBQkUwMDYyMUU5MiAvKiB2b2ljZV9nbW1fdGFi
bGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0ZENTM4MTFFNEJBNEY1MDA0ODI5MDggLyogdm9p
Y2VfcHJvY2Vzc2luZ19hdWRpb191bml0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ1RjYxNzFG
RTFFRkNBMDBFQjlDQUYgLyogdnA4LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDFGNDIxMjc1
QzMyMDA2MzRGQ0YgLyogdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0REODM4NjFFNDM5QTM1MDA2MjFFOTIgLyogdnA4X2hlYWRlcl9wYXJzZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTQxRkNCQjY1MjFCMUZFRjYwMEE1REYyNyAvKiB2cDhfdGVtcG9y
YWxfbGF5ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNFRTIxNjk4NDIxMDAyODI2NkIg
LyogdnA5X3Byb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkY0MUU0M0MyQjUwMDYy
MUU5MiAvKiB2cTMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkY2MUU0M0MyQjUwMDYyMUU5
MiAvKiB2cTQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNEI0QzgxMUU0MzFGOUMwMDI2NTFDOCAv
KiB3YXZfZmlsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDk1NSw3ICsxNTA1MCw2IEBACiAJCQkJ
NUM0QjQ4OTMxRTQyQzFCQTAwMjY1MUM4IC8qIHdlYnJ0Y3ZpZGVvY2FwdHVyZXJmYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDg5NDFFNDJDMUJBMDAyNjUxQzggLyogd2VicnRjdmlk
ZW9kZWNvZGVyZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjQ4OTYxRTQyQzFCQTAw
MjY1MUM4IC8qIHdlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxNjIyNUQzMjE2OTgxODEwMEE5MUM5QiAvKiB2aWRlb19mcmFtZV9idWZmZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxNDVFNEQyMUVGOENDMjAwMEZDRjZFNiAvKiB3ZWJydGN2aWRlb2VuZ2lu
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjQ4OUUxRTQyQzFCQTAwMjY1MUM4IC8qIHdlYnJ0
Y3ZvaWNlZW5naW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJGODFFNDNDMkI1MDA2MjFF
OTIgLyogd2luZG93MzJfdzMyLmggaW4gSGVhZGVycyAqLywKQEAgLTE1NjExLDcgKzE1NzA1LDYg
QEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTVDMDg4QzEwMUU0QUE0NDQwMDQwMzk5NSAv
KiBidW5kbGVmaWx0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzA4OEMxMjFFNEFBNDQ0MDA0
MDM5OTUgLyogY2hhbm5lbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDMDg4QzE0MUU0QUE0NDQw
MDQwMzk5NSAvKiBjaGFubmVsbWFuYWdlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDMDg4QzE4
MUU0QUE0NDQwMDQwMzk5NSAvKiBleHRlcm5hbGhtYWMuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2
MTA3LDE1ICsxNjIwMCwxMiBAQAogCQkJCTVDREQ4QjZBMUU0M0MyQjUwMDYyMUU5MiAvKiBhYnNf
cXVhbnRfbG9vcC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg5RjgxRTQzQkZCMzAwNjIxRTky
IC8qIGFjY2VsZXJhdGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUUwMkNBODIxMjczNTJEMDBD
MjdDRDYgLyogYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNDE2MjI1RDgyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2RlY29kZXJfZmFjdG9yeS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NTAzMUU0M0IxRUEwMDYyMUU5MiAvKiBhY21fY29k
ZWNfZGF0YWJhc2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODUwOTFFNDNCMUVBMDA2MjFF
OTIgLyogYWNtX3JlY2VpdmVyLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzRDMyMTY5ODM0
RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NTBC
MUU0M0IxRUEwMDYyMUU5MiAvKiBhY21fcmVzYW1wbGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUM0QjQ4RDcxRTQyQzFFMzAwMjY1MUM4IC8qIGFkYXB0ZWR2aWRlb3RyYWNrc291cmNlLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE2RDNCREIyMTI3MzFDMjAwNzc1RjA5IC8qIGFkYXB0aXZlX2Fn
Yy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNUYxRkE2MjEyNzJGQkEwMDA2NENCRiAvKiBhZGFw
dGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2Nzk0
MjE2OTg4MTkwMEVGMzdFRCAvKiBzdmNfcmF0ZV9hbGxvY2F0b3IuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0QyODVBNDFFNkE2MzQzMDA5NEZEQzggLyogYWRhcHRpdmVfZmlyX2ZpbHRlci5jYyBp
biBTb3VyY2VzICovLAogCQkJCTQxNkQzQkRFMjEyNzMxQzIwMDc3NUYwOSAvKiBhZGFwdGl2ZV9t
b2RlX2xldmVsX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNUYxRkE4MjEyNzJG
QkEwMDA2NENCRiAvKiBhZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuY2MgaW4gU291
cmNlcyAqLywKQEAgLTE2MTMwLDYgKzE2MjIwLDcgQEAKIAkJCQk1Q0REODVFNzFFNDNCODEwMDA2
MjFFOTIgLyogYWVjbV9jb3JlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg1RTQxRTQzQjgx
MDAwNjIxRTkyIC8qIGFlY21fY29yZV9jLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3MDEx
RTQzQkE3NTAwNjIxRTkyIC8qIGFnYy5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxM0U2NzlCMjE2
OTg4NjIwMEVGMzdFRCAvKiBhZ2MyX2NvbW1vbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
NkZGMUU0M0JBNzUwMDYyMUU5MiAvKiBhZ2NfbWFuYWdlcl9kaXJlY3QuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REOEZEMTFFNDNDRDY2MDA2MjFFOTIgLyogYWltZF9yYXRlX2NvbnRyb2wuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MUYyNjM5RTIxMjY4MDAwMDAyNzRGNTkgLyogYWxpZ25lZF9t
YWxsb2MuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2MTQ1LDYgKzE2MjM2LDcgQEAKIAkJCQk0MTQz
M0QyOTFGNzlCMzM0MDAzODdCNEQgLyogYXJpdGhfcm91dGluZXNfaGlzdC5jIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNERDg3QTgxRTQzQkMwNTAwNjIxRTkyIC8qIGFyaXRoX3JvdXRpbmVzX2xvZ2lz
dC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MzNEMEYxRjc5QjMzNDAwMzg3QjREIC8qIGFyaXRo
X3JvdXRpbmVzX2xvZ2lzdC5jIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCN0EyMUIxRkZDMDAw
QTVERjI3IC8qIGFzY2lpLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzOEMxRkUxOEUwNzAw
MzczRTk5IC8qIGFzeW5jaW52b2tlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMTZEMUZF
MThENkEwMDM3M0U5OSAvKiBhc3luY3BhY2tldHNvY2tldC5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxM0EyMzU1MUZFMThFMDcwMDM3M0U5OSAvKiBhc3luY3Jlc29sdmVyaW50ZXJmYWNlLmNjIGlu
IFNvdXJjZXMgKi8sCkBAIC0xNjE3Miw3ICsxNjI2NCw2IEBACiAJCQkJNDE0MEI4MjIxRTRFMzM4
MzAwNzQwOUU2IC8qIGF1ZGlvX2RlY29kZXJfcGNtLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDhGRkMxRTQzQ0UzQTAwNjIxRTkyIC8qIGF1ZGlvX2RlY29kZXJfcGNtMTZiLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMxMTlGRkIxRTQ1NzQwMDAwNEYwOTg3IC8qIGF1ZGlvX2RldmljZV9idWZm
ZXIuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTg4OUQ3NzIxNkJDNEVDMDA0NjE0REQgLyogUlRD
UnRwRW5jb2RpbmdQYXJhbWV0ZXJzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxMUEwMUQxRTQ1
NzU3ODAwNEYwOTg3IC8qIGF1ZGlvX2RldmljZV9kdW1teS5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDMTE5RkZFMUU0NTc0MDAwMDRGMDk4NyAvKiBhdWRpb19kZXZpY2VfZ2VuZXJpYy5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDMTFBMDBCMUU0NTc0NDgwMDRGMDk4NyAvKiBhdWRpb19kZXZpY2Vf
bWFjLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjIyMiw3ICsxNjMxMyw2IEBACiAJCQkJNUM0QjRD
NUYxRTQzMUY5QzAwMjY1MUM4IC8qIGF1ZGlvX3V0aWwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REOEEwNDFFNDNCRkIzMDA2MjFFOTIgLyogYXVkaW9fdmVjdG9yLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNEMjg0RjAxRTZBNjA1NzAwOTRGREM4IC8qIGF1ZGlvdHJhY2suY2MgaW4gU291cmNl
cyAqLywKLQkJCQk0MTc5NTNEODIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9yZWNlaXZlLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCNzIxRTQzQzJCNTAwNjIxRTkyIC8qIGF1Z21lbnRl
ZF9jYl9jb3JyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY0MDFFNDNCOEI1MDA2MjFFOTIg
LyogYXV0b19jb3JyX3RvX3JlZmxfY29lZi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2NDEx
RTQzQjhCNTAwNjIxRTkyIC8qIGF1dG9fY29ycmVsYXRpb24uYyBpbiBTb3VyY2VzICovLApAQCAt
MTYyNDQsNiArMTYzMzQsNyBAQAogCQkJCTVDNEI0QzE5MUU0MzFGNzUwMDI2NTFDOCAvKiBiaXRy
YXRlX2FkanVzdGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg1MkYxRTQzQjM5QzAwNjIx
RTkyIC8qIGJpdHJhdGVfYWxsb2NhdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhGN0Qx
RTQzQ0JFMDAwNjIxRTkyIC8qIGJpdHJhdGVfY29udHJvbGxlci5jYyBpbiBTb3VyY2VzICovLAor
CQkJCTQxRkNCQjVDMjFCMUZFQTMwMEE1REYyNyAvKiBiaXRyYXRlX2NvbnRyb2xsZXIuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REOTA1RDFFNDNEMTEyMDA2MjFFOTIgLyogYml0cmF0ZV9jb250
cm9sbGVyX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUUwMkNBRTIxMjczNTJEMDBDMjdD
RDYgLyogYml0cmF0ZV9lc3RpbWF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEZBMDFF
NDNDQ0JFMDA2MjFFOTIgLyogYml0cmF0ZV9wcm9iZXIuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2
MjU3LDYgKzE2MzQ4LDcgQEAKIAkJCQk0MTNBMjM5QjFGRTE4RTA4MDAzNzNFOTkgLyogYnVmZmVy
cXVldWUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODU0ODFFNkE2MUQyMDA5NEZEQzggLyog
YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTMw
OTFGQjFFRjhDRkY4MDA3NTdDNTUgLyogYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuY2Mg
aW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkIxQjIxQjFGN0NEMDBBNURGMjcgLyogYnVpbHRpbl92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFG
MjYzNUYyMTI2N0FERjAwMjc0RjU5IC8qIGJ1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMDJDQzQyMTI3MzU4ODAwQzI3Q0Q2IC8qIGJ1aWx0aW5f
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCNzQxRTQz
QzJCNTAwNjIxRTkyIC8qIGJ3X2V4cGFuZC5jIGluIFNvdXJjZXMgKi8sCkBAIC0xNjI3OSwxMiAr
MTYzNzEsMTQgQEAKIAkJCQk1Q0REOEI4MjFFNDNDMkI1MDA2MjFFOTIgLyogY2JfdXBkYXRlX2Jl
c3RfaW5kZXguYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0QzY0MUU0MzFGOUMwMDI2NTFDOCAv
KiBjaGFubmVsX2J1ZmZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4RjgwMUU0M0NCRTAw
MDYyMUU5MiAvKiBjaGFubmVsX2NvbnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTc5
NTNEODIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9yZWNlaXZlLmNjIGluIFNvdXJjZXMgKi8s
CisJCQkJNDE3OTUzRDMyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZC5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4Qjg0MUU0M0MyQjUwMDYyMUU5MiAvKiBjaGVieXNoZXYuYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxM0EyMzczMUZFMThFMDcwMDM3M0U5OSAvKiBjaGVja3MuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REODZBMTFFNDNCOTk0MDA2MjFFOTIgLyogY2lyY3VsYXJfYnVm
ZmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDQzYxRTQzMjBBOTAwMjY1MUM4IC8qIGNs
b2NrLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCNzUyMUIxRkZBNDAwQTVERjI3IC8qIGNv
Y29hX3RocmVhZGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0OERCMUU0MkMxRTMwMDI2
NTFDOCAvKiBjb2RlYy5jYyBpbiBTb3VyY2VzICovLAotCQkJCTVDREQ4NTE1MUU0M0IxRUEwMDYy
MUU5MiAvKiBjb2RlY19tYW5hZ2VyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzQzgxRTQz
OUE2RjAwNjIxRTkyIC8qIGNvZGVjX3RpbWVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEwMkY2
REMyMTI3MzQxNjAwNkFFOEQ3IC8qIGNvbG9yX3NwYWNlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDhBMEQxRTQzQkZCMzAwNjIxRTkyIC8qIGNvbWZvcnRfbm9pc2UuY2MgaW4gU291cmNlcyAq
LywKQEAgLTE2Mjk5LDEzICsxNjM5MywxMiBAQAogCQkJCTQxNUYxRkFBMjEyNzJGQkEwMDA2NENC
RiAvKiBjb21wdXRlX2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUNERDhGRUIxRTQzQ0RDQTAwNjIxRTkyIC8qIGNvbmZpZy5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTQxOTI0MTcxMjEyNzM4OUIwMDYzNEZDRiAvKiBjb25nZXN0aW9uX2NvbnRyb2xsZXJfZXhw
ZXJpbWVudC5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxQTA4QkQ4MjEyNzJGMUQwMDFENUQ3QiAv
KiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjIGluIFNvdXJjZXMgKi8s
CisJCQkJNDFGQ0JCNDEyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hi
YWNrX2NvbnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEE5MzFFNDNDMDBGMDA2
MjFFOTIgLyogY29uc3RhbnRfcGNtX3BhY2tldF9zb3VyY2UuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REOEI4OTFFNDNDMkI1MDA2MjFFOTIgLyogY29uc3RhbnRzLmMgaW4gU291cmNlcyAqLywK
IAkJCQk0MTlDODNGQjFGRTI0OTM3MDA0MEMzMEYgLyogY29uc3RhbnRzLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDFFMDJDNzgyMTI3MzQ3NDAwQzI3Q0Q2IC8qIGNvbnRyaWJ1dGluZ19zb3VyY2Vz
LmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzRTY3QTIyMTY5ODg5NTAwRUYzN0VEIC8qIFJUQ1J0
cEZyYWdtZW50YXRpb25IZWFkZXIubSBpbiBTb3VyY2VzICovLAotCQkJCTQxNjIyNUU3MjE2OTgx
OTUwMEE5MUM5QiAvKiBvYmpjX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTQxRkNCQjM5MjFCMUY4RkMwMEE1REYyNyAvKiBjb250cm9sX2hhbmRsZXIuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REOEY4NTFFNDNDQkUwMDA2MjFFOTIgLyogY29udHJvbGxlci5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4RjgzMUU0M0NCRTAwMDYyMUU5MiAvKiBjb250cm9s
bGVyX21hbmFnZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUY5QkZBQzIwNTFDOTE5MDBBQkYw
QjkgLyogY29udmVydF9sZWdhY3lfdmlkZW9fZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovLApAQCAt
MTYzMTMsMTMgKzE2NDA2LDE2IEBACiAJCQkJNDEzQTIzMTUxRkUxOEUwNzAwMzczRTk5IC8qIGNv
cHlvbndyaXRlYnVmZmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDQ0ExRTQzMjBBOTAw
MjY1MUM4IC8qIGNwdV9mZWF0dXJlcy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0Q0NCMUU0
MzIwQTkwMDI2NTFDOCAvKiBjcHVfaW5mby5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjUz
MjFCMUZFNDYwMEE1REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDREQ4N0IxMUU0M0JDMDUwMDYyMUU5MiAvKiBjcmMuYyBpbiBTb3VyY2VzICovLAog
CQkJCTQxM0EyMzQzMUZFMThFMDcwMDM3M0U5OSAvKiBjcmMzMi5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4QjhCMUU0M0MyQjUwMDYyMUU5MiAvKiBjcmVhdGVfYXVnbWVudGVkX3ZlYy5jIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNDE0NUU0Q0ExRUY4Q0IzMjAwRkNGNkU2IC8qIGNyZWF0ZXBlZXJj
b25uZWN0aW9uZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjBFMjFCMUY1Mzcw
MEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5jYyBpbiBTb3VyY2VzICov
LAorCQkJCTQxRkNCQjY2MjFCMUZFRjYwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xh
eWVycy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzg4MUZFMThFMDcwMDM3M0U5OSAvKiBj
cml0aWNhbHNlY3Rpb24uY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY0QjFFNDNCOEI1MDA2
MjFFOTIgLyogY3Jvc3NfY29ycmVsYXRpb24uYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QTBG
MUU0M0JGQjMwMDYyMUU5MiAvKiBjcm9zc19jb3JyZWxhdGlvbi5jYyBpbiBTb3VyY2VzICovLAor
CQkJCTQxRkNCQjMxMjFCMUY4QjcwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25zLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzQTIzMjIxRkUxOEUwNzAwMzczRTk5IC8qIGNyeXB0c3RyaW5nLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE5Qzg0OEUxRkUyNTc0RDAwNDBDMzBGIC8qIGN1c3RvbV9leHRl
bnNpb25zLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5Qzg0OEMxRkUyNTc0RDAwNDBDMzBGIC8q
IGQxX2JvdGguY2MgaW4gU291cmNlcyAqLywKQEAgLTE2MzUzLDcgKzE2NDQ5LDYgQEAKIAkJCQk0
MUUwMkNBNTIxMjczNTJEMDBDMjdDRDYgLyogZGVsYXlfYmFzZWRfYndlLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNERDg2OEQxRTQzQjkzOTAwNjIxRTkyIC8qIGRlbGF5X2VzdGltYXRvci5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDREQ4NjhCMUU0M0I5MzkwMDYyMUU5MiAvKiBkZWxheV9lc3Rp
bWF0b3Jfd3JhcHBlci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0ZBMjE2OTg0QkUwMDI4
MjY2QiAvKiBSVENFbmNvZGVkSW1hZ2UubSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QTFEMUU0
M0JGQjMwMDYyMUU5MiAvKiBkZWxheV9tYW5hZ2VyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDhBMjAxRTQzQkZCMzAwNjIxRTkyIC8qIGRlbGF5X3BlYWtfZGV0ZWN0b3IuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REODZFRTFFNDNCQTZEMDA2MjFFOTIgLyogZGlnaXRhbF9hZ2MuYyBpbiBT
b3VyY2VzICovLApAQCAtMTYzODgsMTAgKzE2NDgzLDEwIEBACiAJCQkJNUNERDg3QjcxRTQzQkMw
NTAwNjIxRTkyIC8qIGVuY29kZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MzNEMTIxRjc5QjMz
NDAwMzg3QjREIC8qIGVuY29kZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3QjUxRTQzQkMw
NTAwNjIxRTkyIC8qIGVuY29kZV9scGNfc3diLmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTc5NTNE
QzIxNjk4MzkxMDAyODI2NkIgLyogZmllbGRfdHJpYWwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REOEE5NTFFNDNDMDBGMDA2MjFFOTIgLyogZW5jb2RlX25ldGVxX2lucHV0LmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDgzQ0MxRTQzOUE2RjAwNjIxRTkyIC8qIGVuY29kZWRfZnJhbWUuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MUEwOEJBQjIxMjY4MUM4MDAxRDVEN0IgLyogZW5jb2RlZF9m
cmFtZS5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjFEMjFCMUY3Q0QwMEE1REYyNyAvKiBl
bmNvZGVkX2ltYWdlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMDJDODgyMTI3MzRCOTAwQzI3
Q0Q2IC8qIGVuY29kZXJfZGF0YWJhc2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODU5RjFF
NDNCNUMwMDA2MjFFOTIgLyogZW5jb2Rlcl9ydGNwX2ZlZWRiYWNrLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNERDg2NTExRTQzQjhCNTAwNjIxRTkyIC8qIGVuZXJneS5jIGluIFNvdXJjZXMgKi8s
CkBAIC0xNjQxNCw3ICsxNjUwOSw2IEBACiAJCQkJNUNERDg5NEExRTQzQkYzQTAwNjIxRTkyIC8q
IGV4dGVuZGVkX2ppdHRlcl9yZXBvcnQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODk0RDFF
NDNCRjNBMDA2MjFFOTIgLyogZXh0ZW5kZWRfcmVwb3J0cy5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4QTk3MUU0M0MwMEYwMDYyMUU5MiAvKiBmYWtlX2RlY29kZV9mcm9tX2ZpbGUuY2MgaW4g
U291cmNlcyAqLywKLQkJCQk0MTNFNjc4MjIxNjk4NzBGMDBFRjM3RUQgLyogc3ZjX2NvbmZpZy5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTQxMjk5Qjk2MjEyNzM2OTEwMEIzNDE0QiAvKiBmYWtlX25l
dHdvcmtfcGlwZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzEwMUZFMThFMDcwMDM3M0U5
OSAvKiBmYWtlY2xvY2suY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjNDQzFGRTE4RTA4MDAz
NzNFOTkgLyogZmFrZXNzbGlkZW50aXR5LmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjQyNSwxMSAr
MTY1MTksMTEgQEAKIAkJCQk0MTkyNDFEMzIxMjc1OUExMDA2MzRGQ0YgLyogZmVjX3ByaXZhdGVf
dGFibGVzX3JhbmRvbS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4ODdCMUU0M0JFM0MwMDYy
MUU5MiAvKiBmZWNfdGVzdF9oZWxwZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUYyNjM4QTIx
MjY3RjQwMDAyNzRGNTkgLyogZmZ0LmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTc5NTNFQTIxNjk4
M0YxMDAyODI2NkIgLyogcnR0X211bHRfZXhwZXJpbWVudC5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxNDMzQ0VBMUY3OUIzMzQwMDM4N0I0RCAvKiBmZnQuYyBpbiBTb3VyY2VzICovLAogCQkJCTQx
RjI2MzZFMjEyNjdCM0UwMDI3NEY1OSAvKiBmZnQ0Zy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFG
OUJGRDcyMDUxRERFNTAwQUJGMEI5IC8qIGZmdF9idWZmZXIuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTkyNDEzRDIxMjczNzI0MDA2MzRGQ0YgLyogZmZ0X3V0aWwuY2MgaW4gU291cmNlcyAqLywK
KwkJCQk0MTc5NTNEQzIxNjk4MzkxMDAyODI2NkIgLyogZmllbGRfdHJpYWwuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MTkyNDE2RTIxMjczODlCMDA2MzRGQ0YgLyogZmllbGRfdHJpYWxfcGFyc2Vy
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxRTgyMTI3NUE3NjAwNjM0RkNGIC8qIGZpZWxk
X3RyaWFsX3VuaXRzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIyRTYxRkUxOEUwNzAwMzcz
RTk5IC8qIGZpbGUuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NDM3LDE0ICsxNjUzMSwxMSBAQAog
CQkJCTVDMTFBMDFGMUU0NTc1NzgwMDRGMDk4NyAvKiBmaWxlX2F1ZGlvX2RldmljZV9mYWN0b3J5
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzRDgxRkUxOEUwODAwMzczRTk5IC8qIGZpbGVf
cG9zaXguY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEM4QjFFNDNDNjYwMDA2MjFFOTIgLyog
ZmlsZV91dGlscy5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNjIyNUQ3MjE2OTgxODEwMEE5MUM5
QiAvKiB2aWRlb19mcmFtZV9idWZmZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MUYyNjNBQzIx
MjY4MEE4MDAyNzRGNTkgLyogZmlsZV93cmFwcGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEz
QTIzREExRkUxOEUwODAwMzczRTk5IC8qIGZpbGVyb3RhdGluZ3N0cmVhbS5jYyBpbiBTb3VyY2Vz
ICovLAotCQkJCTQxM0EyM0I1MUZFMThFMDgwMDM3M0U5OSAvKiBmaWxldXRpbHMuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REODY1NTFFNDNCOEI1MDA2MjFFOTIgLyogZmlsdGVyX2FyLmMgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REODY1NDFFNDNCOEI1MDA2MjFFOTIgLyogZmlsdGVyX2FyX2Zh
c3RfcTEyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODdCQzFFNDNCQzA1MDA2MjFFOTIgLyog
ZmlsdGVyX2Z1bmN0aW9ucy5jIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE0NEIzRTgyMTY5QzVFMzAw
NDM2M0FDIC8qIFJUQ1ZpZGVvQ29kZWNJbmZvK1ByaXZhdGUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REODY1NjFFNDNCOEI1MDA2MjFFOTIgLyogZmlsdGVyX21hX2Zhc3RfcTEyLmMgaW4gU291
cmNlcyAqLywKIAkJCQk0MTQzM0QyNzFGNzlCMzM0MDAzODdCNEQgLyogZmlsdGVyYmFua190YWJs
ZXMuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNDMzRDA2MUY3OUIzMzQwMDM4N0I0RCAvKiBmaWx0
ZXJiYW5rcy5jIGluIFNvdXJjZXMgKi8sCkBAIC0xNjQ1Nyw3ICsxNjU0OCw2IEBACiAJCQkJNDE5
QzgzMUQxRkUyNDJCMjAwNDBDMzBGIC8qIGZpcl9maWx0ZXJfZmFjdG9yeS5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDNEI0QzZBMUU0MzFGOUMwMDI2NTFDOCAvKiBmaXJfZmlsdGVyX3NzZS5jYyBp
biBTb3VyY2VzICovLAogCQkJCTQxNUYxRkFEMjEyNzJGQkEwMDA2NENCRiAvKiBmaXhlZF9kaWdp
dGFsX2xldmVsX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNkQzQkUzMjEyNzMx
QzIwMDc3NUYwOSAvKiBmaXhlZF9nYWluX2NvbnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTNBMjE3RDFGRTE4RDc4MDAzNzNFOTkgLyogZmxhZ3MuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REODg3RTFFNDNCRTNDMDA2MjFFOTIgLyogZmxleGZlY19oZWFkZXJfcmVhZGVyX3dyaXRl
ci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxMDJGNkJDMjEyNzMzODIwMDZBRThENyAvKiBmbGV4
ZmVjX3JlY2VpdmVfc3RyZWFtLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjQ3MSw4ICsxNjU2MSw4
IEBACiAJCQkJNUNERDgzRDExRTQzOUE2RjAwNjIxRTkyIC8qIGZyYW1lX2J1ZmZlcjIuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REOEJBMjFFNDNDMkI1MDA2MjFFOTIgLyogZnJhbWVfY2xhc3Np
ZnkuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NDlBMUU2QTVGNDEwMDk0RkRDOCAvKiBmcmFt
ZV9jb21iaW5lci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0M3MjE2OTgyNEIwMDI4MjY2
QiAvKiBSVENWaWRlb0RlY29kZXJIMjY0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzNzkx
RTQzOUEzNTAwNjIxRTkyIC8qIGZyYW1lX2Ryb3BwZXIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0
MUZDQkI1OTIxQjFGRTZFMDBBNURGMjcgLyogZnJhbWVfZHVtcGluZ19kZWNvZGVyLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNERDhGOTAxRTQzQ0JFMDAwNjIxRTkyIC8qIGZyYW1lX2xlbmd0aF9j
b250cm9sbGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzRDMxRTQzOUE2RjAwNjIxRTky
IC8qIGZyYW1lX29iamVjdC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjI2MzhEMjEyNjdGNDkw
MDI3NEY1OSAvKiBnNzExLmMgaW4gU291cmNlcyAqLywKQEAgLTE2NDg0LDcgKzE2NTc0LDYgQEAK
IAkJCQk1Q0REODRCMjFFNDNBRjEzMDA2MjFFOTIgLyogZ2Fpbl9jb250cm9sX2Zvcl9leHBlcmlt
ZW50YWxfYWdjLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg0QjQxRTQzQUYxMzAwNjIxRTky
IC8qIGdhaW5fY29udHJvbF9pbXBsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFBMDhCRDAyMTI3
MkVFMjAwMUQ1RDdCIC8qIGdhaW5fY29udHJvbGxlcjIuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0
MTVGMUZCMTIxMjcyRkJBMDAwNjRDQkYgLyogZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDhCQTQxRTQzQzJCNTAwNjIxRTkyIC8qIGdhaW5fZGVxdWFudC5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCQTYxRTQzQzJCNTAwNjIxRTkyIC8qIGdhaW5fcXVhbnQu
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4M0Q1MUU0MzlBNkYwMDYyMUU5MiAvKiBnZW5lcmlj
X2RlY29kZXIuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NDk1LDE5ICsxNjU4NCwyMCBAQAogCQkJ
CTVDREQ4NjU4MUU0M0I4QjUwMDYyMUU5MiAvKiBnZXRfc2NhbGluZ19zcXVhcmUuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4QkFDMUU0M0MyQjUwMDYyMUU5MiAvKiBnZXRfc3luY19zZXEuYyBp
biBTb3VyY2VzICovLAogCQkJCTVDREQ4NzI5MUU0M0JBQkUwMDYyMUU5MiAvKiBnbW0uY2MgaW4g
U291cmNlcyAqLywKLQkJCQk0MUUwMkNBOTIxMjczNTJEMDBDMjdDRDYgLyogZ29vZ19jY19mYWN0
b3J5LmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCNjAyMUIxRkVDNDAwQTVERjI3IC8qIGdv
b2dfY2NfZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRTAyQ0I2MjEyNzM1MkQwMEMy
N0NENiAvKiBnb29nX2NjX25ldHdvcmtfY29udHJvbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4NTU4MUU0M0I0MkIwMDYyMUU5MiAvKiBoMjY0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDgzNTQxRTQzMjU3MjAwNjIxRTkyIC8qIGgyNjRfYml0c3RyZWFtX3BhcnNlci5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4MzU2MUU0MzI1NzIwMDYyMUU5MiAvKiBoMjY0X2NvbW1vbi5jYyBp
biBTb3VyY2VzICovLAogCQkJCTQxNDVFNEJGMUVGODk0RjYwMEZDRjZFNiAvKiBoMjY0X3Byb2Zp
bGVfbGV2ZWxfaWQuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTg4OUQ3OTIxNkJDNEVDMDA0NjE0
REQgLyogUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlcitQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNEMjg1RUExRTZBNjM5RjAwOTRGREM4IC8qIGgyNjRfc3Byb3BfcGFyYW1ldGVyX3Nl
dHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODNEOTFFNDM5QTZGMDA2MjFFOTIgLyogaDI2
NF9zcHNfcHBzX3RyYWNrZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQ2OTFGRTI1NUZB
MDA0MEMzMEYgLyogaGFuZHNoYWtlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5Qzg0ODkxRkUy
NTc0RDAwNDBDMzBGIC8qIGhhbmRzaGFrZV9jbGllbnQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0
MTlDODQ4QjFGRTI1NzREMDA0MEMzMEYgLyogaGFuZHNoYWtlX3NlcnZlci5jYyBpbiBTb3VyY2Vz
ICovLAorCQkJCTQxRkNCQjcxMjFCMUZGNzQwMEE1REYyNyAvKiBoZHJfbWV0YWRhdGEuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTNBMjM2RTFGRTE4RTA3MDAzNzNFOTkgLyogaGVscGVycy5jYyBp
biBTb3VyY2VzICovLAorCQkJCTQxNzk1M0JDMjE2OTgyNEIwMDI4MjY2QiAvKiBoZWxwZXJzLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzREIxRTQzOUE2RjAwNjIxRTkyIC8qIGhpc3RvZ3Jh
bS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4MzUxMUZFMjQ2NjUwMDQwQzMwRiAvKiBoaXN0
b2dyYW1fcGVyY2VudGlsZV9jb3VudGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCQUUx
RTQzQzJCNTAwNjIxRTkyIC8qIGhwX2lucHV0LmMgaW4gU291cmNlcyAqLywKQEAgLTE2NTE3LDYg
KzE2NjA3LDcgQEAKIAkJCQk1Q0REOTA1MDFFNDNEMEU5MDA2MjFFOTIgLyogaTQyMC5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDRDI4NDY3MUU2QTU3RjQwMDk0RkRDOCAvKiBpNDIwX2J1ZmZlci5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0QzFCMUU0MzFGNzUwMDI2NTFDOCAvKiBpNDIwX2J1
ZmZlcl9wb29sLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCNDcyMUIxRkRFRjAwQTVERjI3
IC8qIGljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUEwOEJD
NDIxMjY5NTc3MDAxRDVEN0IgLyogaWNlbG9nZ2VyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEz
MDkxRjgxRUY4Q0ZCRDAwNzU3QzU1IC8qIGljZXNlcnZlcnBhcnNpbmcuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk0MTlDODNFMDFGRTI0N0YyMDA0MEMzMEYgLyogaWNldHJhbnNwb3J0aW50ZXJuYWwu
Y2MgaW4gU291cmNlcyAqLywKQEAgLTE2NTM5LDcgKzE2NjMwLDYgQEAKIAkJCQk0MTVGMUZCMjIx
MjcyRkJBMDAwNjRDQkYgLyogaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk0MTlDODI5QTFGRTIwQ0ExMDA0MEMzMEYgLyogaW50ZXJ2YWxfYnVkZ2V0LmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3QzAxRTQzQkMwNTAwNjIxRTkyIC8qIGludGlhbGl6ZS5j
IGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzQ0MyMTY5ODJEQjAwMjgyNjZCIC8qIFJUQ0NvZGVj
U3BlY2lmaWNJbmZvSDI2NC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyM0VEMUZFMThFMDgw
MDM3M0U5OSAvKiBpcGFkZHJlc3MuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODdDMzFFNDNC
QzA1MDA2MjFFOTIgLyogaXNhYy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEyOTlCOTEyMTI3MzY3
QjAwQjM0MTRCIC8qIGlzYWNfdmFkLmMgaW4gU291cmNlcyAqLywKQEAgLTE2NTQ3LDI5ICsxNjYz
NywzMiBAQAogCQkJCTVDREQ4MzdCMUU0MzlBMzUwMDYyMUU5MiAvKiBpdmZfZmlsZV93cml0ZXIu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODNFMTFFNDM5QTZGMDA2MjFFOTIgLyogaml0dGVy
X2J1ZmZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4M0UzMUU0MzlBNkYwMDYyMUU5MiAv
KiBqaXR0ZXJfZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCNTIyMUIxRkU0
NjAwQTVERjI3IC8qIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDFGOUJGODYyMDUxQzgwMTAwQUJGMEI5IC8qIGpzZXAuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0QyODQ3NDFFNkE1RDI4MDA5NEZEQzggLyoganNlcGljZWNhbmRpZGF0ZS5jYyBp
biBTb3VyY2VzICovLAogCQkJCTQxRjI2Mzg0MjEyNjdCNzcwMDI3NEY1OSAvKiBqc2VwaWNlY2Fu
ZGlkYXRlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg0NzIxRTZBNUQwODAwOTRGREM4IC8q
IGpzZXBzZXNzaW9uZGVzY3JpcHRpb24uY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUY5QkZFMzIw
NTFERTE4MDBBQkYwQjkgLyoganNlcHRyYW5zcG9ydC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQx
MDJGNjkwMjEyNzMyMDYwMDZBRThENyAvKiBqc2VwdHJhbnNwb3J0Y29udHJvbGxlci5jYyBpbiBT
b3VyY2VzICovLAorCQkJCTQxRkNCQjZEMjFCMUZGM0EwMEE1REYyNyAvKiBrZXlfZGVyaXZhdGlv
bi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOTI0MTlBMjEyNzU4NjUwMDYzNEZDRiAvKiBraXNz
X2ZmdC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4N0M0MUU0M0JDMDUwMDYyMUU5MiAvKiBs
YXR0aWNlLmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTNFNjc2ODIxNjk4NTRCMDBFRjM3RUQgLyog
UlRDVmlkZW9EZWNvZGVyVlA4Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MzNDRjIxRjc5QjMz
NDAwMzg3QjREIC8qIGxhdHRpY2UuYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNjIyNUQ0MjE2OTgx
ODEwMEE5MUM5QiAvKiB2aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0MTQzM0QxNDFGNzlCMzM0MDAzODdCNEQgLyogbGF0dGljZV9jLmMgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0REODQxRjFFNDM5QjI5MDA2MjFFOTIgLyogbGVnYWN5X2VuY29kZWRfYXVkaW9fZnJh
bWUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRCODFFNDNBRjEzMDA2MjFFOTIgLyogbGV2
ZWxfZXN0aW1hdG9yX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY1QTFFNDNCOEI1
MDA2MjFFOTIgLyogbGV2aW5zb25fZHVyYmluLmMgaW4gU291cmNlcyAqLywKKwkJCQk0MTNFNjc3
NTIxNjk4NjNCMDBFRjM3RUQgLyogbGlidnB4X2ludGVyZmFjZS5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTQxMjk0MDk0MjEyRTEyOEQwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2RlY29kZXIuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTI5NDA5MjIxMkUxMjhEMDBBRDk1RTcgLyogbGlidnB4X3ZwOF9l
bmNvZGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2RDNCRTYyMTI3MzFDMjAwNzc1RjA5IC8q
IGxpbWl0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODRGNjFFNkE2MDU3MDA5NEZEQzgg
LyogbG9jYWxhdWRpb3NvdXJjZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyM0VCMUZFMThF
MDgwMDM3M0U5OSAvKiBsb2NhdGlvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QzBGMUU0
M0MzNDYwMDYyMUU5MiAvKiBsb2NrZWRfYmFuZHdpZHRoX2luZm8uY2MgaW4gU291cmNlcyAqLywK
KwkJCQk0MTQ0QjNEODIxNjk4RDNEMDA0MzYzQUMgLyogbG9nZ2luZy5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTQxM0EyMkMwMUZFMThFMDcwMDM3M0U5OSAvKiBsb2dnaW5nX21hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxM0EyM0JFMUZFMThFMDgwMDM3M0U5OSAvKiBsb2dzaW5rcy5jYyBpbiBT
b3VyY2VzICovLAorCQkJCTQxRkNCQjZBMjFCMUZGMUIwMEE1REYyNyAvKiBsb3NzX2Jhc2VkX2Jh
bmR3aWR0aF9lc3RpbWF0aW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxQzUyMTI3NTkz
RjAwNjM0RkNGIC8qIGxvc3NfcmF0ZV9maWx0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
ODcwNTFFNDNCQTc1MDA2MjFFOTIgLyogbG91ZG5lc3NfaGlzdG9ncmFtLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNEMjg1NUQxRTZBNjJFRDAwOTRGREM4IC8qIGxvd19jdXRfZmlsdGVyLmNjIGlu
IFNvdXJjZXMgKi8sCkBAIC0xNjU3OCw3ICsxNjY3MSw2IEBACiAJCQkJNUNERDhCQzExRTQzQzJC
NTAwNjIxRTkyIC8qIGxwY19lbmNvZGUuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4N0M3MUU0
M0JDMDUwMDYyMUU5MiAvKiBscGNfZ2Fpbl9zd2JfdGFibGVzLmMgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTQzM0NFRTFGNzlCMzM0MDAzODdCNEQgLyogbHBjX21hc2tpbmdfbW9kZWwuYyBpbiBTb3Vy
Y2VzICovLAotCQkJCTQxNDRCM0YwMjE2OUM2M0YwMDQzNjNBQyAvKiBOU1N0cmluZytTdGRTdHJp
bmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODdDOTFFNDNCQzA1MDA2MjFFOTIgLyogbHBj
X3NoYXBlX3N3YjEyX3RhYmxlcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3Q0IxRTQzQkMw
NTAwNjIxRTkyIC8qIGxwY19zaGFwZV9zd2IxNl90YWJsZXMuYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4N0NEMUU0M0JDMDUwMDYyMUU5MiAvKiBscGNfdGFibGVzLmMgaW4gU291cmNlcyAqLywK
QEAgLTE2NTkzLDEzICsxNjY4NSwxNSBAQAogCQkJCTQxM0EyMzJDMUZFMThFMDcwMDM3M0U5OSAv
KiBtYWNpZmFkZHJzX2NvbnZlcnRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzM4MUZF
MThFMDcwMDM3M0U5OSAvKiBtYWN1dGlscy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NUNC
MUU2QTYzNDMwMDk0RkRDOCAvKiBtYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbi5jYyBpbiBTb3VyY2Vz
ICovLAorCQkJCTQxRkNCQjNDMjFCMUZENDAwMEE1REYyNyAvKiBtYXRjaC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDRDI4NUNGMUU2QTYzNDMwMDk0RkRDOCAvKiBtYXRjaGVkX2ZpbHRlci5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDRDI4NUNEMUU2QTYzNDMwMDk0RkRDOCAvKiBtYXRjaGVkX2Zp
bHRlcl9sYWdfYWdncmVnYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjlCRkQ0MjA1MURE
RTUwMEFCRjBCOSAvKiBtYXRyaXhfYnVmZmVyLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JC
NDgyMUIxRkRFRjAwQTVERjI3IC8qIG1kbnNfbWVzc2FnZS5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4NkE0MUU0M0I5OTQwMDYyMUU5MiAvKiBtZWFuX3ZhcmlhbmNlX2VzdGltYXRvci5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDREQ4M0U1MUU0MzlBNkYwMDYyMUU5MiAvKiBtZWRpYV9vcHRf
dXRpbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4M0U3MUU0MzlBNkYwMDYyMUU5MiAvKiBt
ZWRpYV9vcHRpbWl6YXRpb24uY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTYyMjVFNjIxNjk4MTk1
MDBBOTFDOUIgLyogb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0gaW4gU291cmNlcyAqLywK
KwkJCQk0MUZDQkIxMTIxQjFGNTM3MDBBNURGMjcgLyogbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFj
ZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxMDJGNkIzMjEyNzMzMzEwMDZBRThENyAvKiBtZWRp
YWNoYW5uZWwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNDhFNjFFNDJDMUUzMDAyNjUxQzgg
LyogbWVkaWFjb25zdGFudHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzYzRjk0ODFFNDE3MzdC
MDAyQ0E1MzEgLyogbWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5jYyBpbiBTb3VyY2VzICovLApA
QCAtMTY2MDcsMjQgKzE2NzAxLDI1IEBACiAJCQkJNDFFMDJDQjEyMTI3MzUyRDAwQzI3Q0Q2IC8q
IG1lZGlhbl9zbG9wZV9lc3RpbWF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODRGQTFF
NkE2MDU3MDA5NEZEQzggLyogbWVkaWFzdHJlYW0uY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0Qy
ODY0MDFFNkE2ODNBMDA5NEZEQzggLyogbWVkaWFzdHJlYW1pbnRlcmZhY2UuY2MgaW4gU291cmNl
cyAqLywKLQkJCQk0MTQ0QjNEMzIxNjk4OTZEMDA0MzYzQUMgLyogUlRDTmF0aXZlSTQyMEJ1ZmZl
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NEZDMUU2QTYwNTcwMDk0RkRDOCAvKiBtZWRp
YXN0cmVhbW9ic2VydmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg2MzIxRTZBNjdCRjAw
OTRGREM4IC8qIG1lZGlhdHlwZXMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjM4MDFGRTE4
RTA3MDAzNzNFOTkgLyogbWVtb3J5X3VzYWdlLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JC
ODQyMUIyMDA3QjAwQTVERjI3IC8qIG1lbXV0aWwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
OEEyRjFFNDNCRkIzMDA2MjFFOTIgLyogbWVyZ2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNB
MjJGOTFGRTE4RTA3MDAzNzNFOTkgLyogbWVzc2FnZWRpZ2VzdC5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTQxM0EyMzZCMUZFMThFMDcwMDM3M0U5OSAvKiBtZXNzYWdlaGFuZGxlci5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxM0EyMkIxMUZFMThFMDcwMDM3M0U5OSAvKiBtZXNzYWdlcXVldWUuY2Mg
aW4gU291cmNlcyAqLywKKwkJCQk0MTc5NTNEQjIxNjk4MzkxMDAyODI2NkIgLyogbWV0cmljcy5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NjVFMUU0M0I4QjUwMDYyMUU5MiAvKiBtaW5fbWF4
X29wZXJhdGlvbnMuYyBpbiBTb3VyY2VzICovLAotCQkJCTVDREQ4MzdEMUU0MzlBMzUwMDYyMUU5
MiAvKiBtb3ZpbmdfYXZlcmFnZS5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2N0EzMjE2OTg4
OTUwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMubSBpbiBTb3VyY2VzICov
LAorCQkJCTQxNzk1M0U2MjE2OTgzQ0EwMDI4MjY2QiAvKiBtb2R1bGVfY29tbW9uX3R5cGVzLmNj
IGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCMTUyMUIxRjdBQTAwQTVERjI3IC8qIG1vdmluZ19h
dmVyYWdlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg2MTAxRTZBNjRDOTAwOTRGREM4IC8q
IG1vdmluZ19tYXguY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEM4RTFFNDNDNjYwMDA2MjFF
OTIgLyogbW92aW5nX21vbWVudHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEJDRjFFNDND
MkI1MDA2MjFFOTIgLyogbXlfY29yci5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg5NTMxRTQz
QkYzQTAwNjIxRTkyIC8qIG5hY2suY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODNFQTFFNDM5
QTZGMDA2MjFFOTIgLyogbmFja19tb2R1bGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEEz
MjFFNDNCRkIzMDA2MjFFOTIgLyogbmFja190cmFja2VyLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NDE3OTUzQjkyMTY5ODI0MjAwMjgyNjZCIC8qIFJUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0Lm0g
aW4gU291cmNlcyAqLywKKwkJCQk0MTc5NTNCNDIxNjk4MjQyMDAyODI2NkIgLyogbmFsdV9yZXdy
aXRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzAzMUZFMThFMDcwMDM3M0U5OSAvKiBu
YXR0eXBlcy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkQxMUU0M0MyQjUwMDYyMUU5MiAv
KiBuZWFyZXN0X25laWdoYm9yLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEEzQjFFNDNCRkIz
MDA2MjFFOTIgLyogbmV0ZXEuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NjM3LDQ2ICsxNjczMiw0
NCBAQAogCQkJCTQxRTAyQ0NEMjEyNzM1QjcwMEMyN0NENiAvKiBuZXR3b3JrX3R5cGVzLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzOEIxRkUxOEUwNzAwMzczRTk5IC8qIG5ldHdvcmttb25p
dG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2RDNCRTcyMTI3MzFDMjAwNzc1RjA5IC8qIG5v
aXNlX2xldmVsX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2NzkwMjE2OTg3
REIwMEVGMzdFRCAvKiBSVENWaWRlb0ZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2RDNC
RTgyMTI3MzFDMjAwNzc1RjA5IC8qIG5vaXNlX3NwZWN0cnVtX2VzdGltYXRvci5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4NUZFMUU0M0I4NEUwMDYyMUU5MiAvKiBub2lzZV9zdXBwcmVzc2lv
bi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg0RTkxRTQzQjBCNjAwNjIxRTkyIC8qIG5vaXNl
X3N1cHByZXNzaW9uX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODVGQzFFNDNCODRF
MDA2MjFFOTIgLyogbm9pc2Vfc3VwcHJlc3Npb25feC5jIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3
OTUzQjgyMTY5ODI0MjAwMjgyNjZCIC8qIFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0Lm0gaW4g
U291cmNlcyAqLywKLQkJCQk0MTNBMjM1RjFGRTE4RTA3MDAzNzNFOTkgLyogbm9vcC5jYyBpbiBT
b3VyY2VzICovLAotCQkJCTQxM0EyM0VFMUZFMThFMDgwMDM3M0U5OSAvKiBub29wLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNERDhBM0QxRTQzQkZCMzAwNjIxRTkyIC8qIG5vcm1hbC5jYyBpbiBT
b3VyY2VzICovLAorCQkJCTQxRkNCQjU2MjFCMUZFNDYwMEE1REYyNyAvKiBub3JtYWxpemVfc2lt
dWxjYXN0X3NpemVfZXhwZXJpbWVudC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NkE3MUU0
M0I5OTQwMDYyMUU5MiAvKiBub3JtYWxpemVkX2NvdmFyaWFuY2VfZXN0aW1hdG9yLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNERDg2MDAxRTQzQjg0RTAwNjIxRTkyIC8qIG5zX2NvcmUuYyBpbiBT
b3VyY2VzICovLAorCQkJCTQxNDRCM0YwMjE2OUM2M0YwMDQzNjNBQyAvKiBOU1N0cmluZytTdGRT
dHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODYwNTFFNDNCODRFMDA2MjFFOTIgLyog
bnN4X2NvcmUuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NjAyMUU0M0I4NEUwMDYyMUU5MiAv
KiBuc3hfY29yZV9jLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MUY0MTFBRDFFRjhEOTFGMDAzNDND
MjYgLyogbnVsbF9hZWNfZHVtcF9mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5Qzgz
QjMxRkUyNDcyRTAwNDBDMzBGIC8qIG51bGxfYXVkaW9fcG9sbGVyLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEzQTIzRDIxRkUxOEUwODAwMzczRTk5IC8qIG51bGxzb2NrZXRzZXJ2ZXIuY2MgaW4g
U291cmNlcyAqLywKKwkJCQk0MTYyMjVFNDIxNjk4MTk1MDBBOTFDOUIgLyogb2JqY19mcmFtZV9i
dWZmZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTYyMjVFNzIxNjk4MTk1MDBBOTFDOUIgLyog
b2JqY192aWRlb19kZWNvZGVyX2ZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTYyMjVF
NjIxNjk4MTk1MDBBOTFDOUIgLyogb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0gaW4gU291
cmNlcyAqLywKKwkJCQk0MTYyMjVFMjIxNjk4MTk1MDBBOTFDOUIgLyogb2JqY192aWRlb19mcmFt
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4Njk0MUU0M0I5MzkwMDYyMUU5MiAvKiBvb3Vy
YV9mZnQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY5MTFFNDNCOTM5MDA2MjFFOTIgLyog
b291cmFfZmZ0X3NzZTIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI3RDIxQjFGRkY2MDBB
NURGMjcgLyogb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE5Qzg0MjcxRkUyNEJEMTAwNDBDMzBGIC8qIG9wZW5zc2xhZGFwdGVyLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDFEREIyNjQyMTI2NzlBMzAwMjk2RDQ3IC8qIG9wZW5zc2xjZXJ0aWZpY2F0
ZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4NDI2MUZFMjRCQ0YwMDQwQzMwRiAvKiBvcGVu
c3NsZGlnZXN0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5Qzg0MjUxRkUyNEJDODAwNDBDMzBG
IC8qIG9wZW5zc2xpZGVudGl0eS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRERCMjYyMjEyNjc5
QTMwMDI5NkQ0NyAvKiBvcGVuc3Nsc2Vzc2lvbmNhY2hlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE5Qzg0M0YxRkUyNTBCOTAwNDBDMzBGIC8qIG9wZW5zc2xzdHJlYW1hZGFwdGVyLmNjIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDEzRTY3OUIyMTY5ODg2MjAwRUYzN0VEIC8qIGFnYzJfY29tbW9uLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEREIyNjUyMTI2NzlBMzAwMjk2RDQ3IC8qIG9wZW5zc2x1
dGlsaXR5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEREIyNTIyMTI2NUJFOTAwMjk2RDQ3IC8q
IG9wdGlvbmFsLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzQTIzNEExRkUxOEUwNzAwMzczRTk5
IC8qIG9wdGlvbnNmaWxlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhDNjcxRTQzQzYwOTAw
NjIxRTkyIC8qIG9wdXNfaW50ZXJmYWNlLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEZENzFF
NDNDRDY2MDA2MjFFOTIgLyogb3ZlcnVzZV9kZXRlY3Rvci5jYyBpbiBTb3VyY2VzICovLAotCQkJ
CTQxNzk1M0Q1MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmRfcHJveHkuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REOEZEOTFFNDNDRDY2MDA2MjFFOTIgLyogb3ZlcnVzZV9lc3RpbWF0
b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODVBNDFFNDNCNUMwMDA2MjFFOTIgLyogb3Zl
cnVzZV9mcmFtZV9kZXRlY3Rvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNjNGOUVEMUU0MTc0
RjYwMDJDQTUzMSAvKiBwMnBjb25zdGFudHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzYzRjlG
MjFFNDE3NEY2MDAyQ0E1MzEgLyogcDJwdHJhbnNwb3J0Y2hhbm5lbC5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTQxRjI2MzlBMjEyNjdGNUUwMDI3NEY1OSAvKiBwYV9yaW5nYnVmZmVyLmMgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REOEZBMjFFNDNDQ0JFMDA2MjFFOTIgLyogcGFjZWRfc2VuZGVyLmNj
IGluIFNvdXJjZXMgKi8sCi0JCQkJNDEyOTlCOEIyMTI3MzY1MTAwQjM0MTRCIC8qIHBhY2VyX2Nv
bnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEJEMzFFNDNDMkI1MDA2MjFFOTIg
LyogcGFja19iaXRzLmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTQ0QjNEMTIxNjk4OTY3MDA0MzYz
QUMgLyogUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REOEE0MjFFNDNCRkIzMDA2MjFFOTIgLyogcGFja2V0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzRUUxRTQzOUE2RjAwNjIxRTkyIC8qIHBhY2tldC5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4QUFGMUU0M0MwMEYwMDYyMUU5MiAvKiBwYWNrZXQuY2MgaW4gU291cmNlcyAqLywKQEAg
LTE2Njg4LDcgKzE2NzgxLDYgQEAKIAkJCQk0MTI0NTU1NjFFRjg4N0ZCMDBGMTE4MDkgLyogcGFj
a2V0bG9zc2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4M0Y1MUZFMjQ4Q0Ew
MDQwQzMwRiAvKiBwYWNrZXRzb2NrZXRmYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5
QzgzREExRkUyNDdGMjAwNDBDMzBGIC8qIHBhY2tldHRyYW5zcG9ydGludGVybmFsLmNjIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDEzQTIzM0MxRkUxOEUwNzAwMzczRTk5IC8qIHBhdGh1dGlscy5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDNEI0ODgzMUU0MkMxQkEwMDI2NTFDOCAvKiBwYXlsb2FkX3R5
cGVfbWFwcGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDkwMDAxRTQzQ0UzQTAwNjIxRTky
IC8qIHBjbTE2Yi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg0RkYxRTZBNjA1NzAwOTRGREM4
IC8qIHBlZXJjb25uZWN0aW9uLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjcwNyw3ICsxNjc5OSw2
IEBACiAJCQkJNUNERDg3MzAxRTQzQkFCRTAwNjIxRTkyIC8qIHBpdGNoX2ludGVybmFsLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3RDUxRTQzQkMwNjAwNjIxRTkyIC8qIHBpdGNoX2xhZ190
YWJsZXMuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNDMzRDE5MUY3OUIzMzQwMDM4N0I0RCAvKiBw
aXRjaF9sYWdfdGFibGVzLmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTNFNjc2RDIxNjk4NTRCMDBF
RjM3RUQgLyogUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTQxOTI0MTQxMjEyNzM3MjQwMDYzNEZDRiAvKiBwaXRjaF9zZWFyY2guY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MTkyNDE0NDIxMjczNzI4MDA2MzRGQ0YgLyogcGl0Y2hfc2VhcmNoX2ludGVy
bmFsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzNUExRkUxOEUwNzAwMzczRTk5IC8qIHBs
YXRmb3JtX2ZpbGUuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NzQ3LDcgKzE2ODM4LDYgQEAKIAkJ
CQk0MTNBMjM2MjFGRTE4RTA3MDAzNzNFOTkgLyogcmF0ZXRyYWNrZXIuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk0MUEwOEJDQzIxMjY5NjIwMDAxRDVEN0IgLyogcmF3X2xvZ2dpbmcuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REODY2MTFFNDNCOEI1MDA2MjFFOTIgLyogcmVhbF9mZnQuYyBpbiBT
b3VyY2VzICovLAotCQkJCTQxM0U2Nzc1MjE2OTg2M0IwMEVGMzdFRCAvKiBsaWJ2cHhfaW50ZXJm
YWNlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDNzcxRTQzMUY5QzAwMjY1MUM4IC8qIHJl
YWxfZm91cmllci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0QzcyMUU0MzFGOUMwMDI2NTFD
OCAvKiByZWFsX2ZvdXJpZXJfb291cmEuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTMwOTFGRTFF
RjhEMDZEMDA3NTdDNTUgLyogcmVjZWl2ZV9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYyBp
biBTb3VyY2VzICovLApAQCAtMTY3ODMsMTQgKzE2ODczLDEyIEBACiAJCQkJNUNERDg2NjQxRTQz
QjhCNTAwNjIxRTkyIC8qIHJlc2FtcGxlX2J5XzJfaW50ZXJuYWwuYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4NjY4MUU0M0I4QjUwMDYyMUU5MiAvKiByZXNhbXBsZV9mcmFjdGlvbmFsLmMgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REOEFCMTFFNDNDMDBGMDA2MjFFOTIgLyogcmVzYW1wbGVfaW5w
dXRfYXVkaW9fZmlsZS5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2Nzk4MjE2OTg4MzkwMEVG
MzdFRCAvKiBSVENWaWRlb0NvZGVjSW5mby5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3NTgx
RTQzQkFGNTAwNjIxRTkyIC8qIHJlc2FtcGxlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
NEJEMUU0M0FGMTMwMDYyMUU5MiAvKiByZXNpZHVhbF9lY2hvX2RldGVjdG9yLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNEMjg1REQxRTZBNjM0MzAwOTRGREM4IC8qIHJlc2lkdWFsX2VjaG9fZXN0
aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDN0ExRTQzMUY5QzAwMjY1MUM4IC8q
IHJpbmdfYnVmZmVyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRCRjFFNDNBRjEzMDA2MjFF
OTIgLyogcm1zX2xldmVsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxNDYyMTI3MzcyODAw
NjM0RkNGIC8qIHJubi5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0JDMjE2OTgyNEIwMDI4
MjY2QiAvKiBoZWxwZXJzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxOTkyMTI3NTg2NTAw
NjM0RkNGIC8qIHJubl92YWRfd2VpZ2h0cy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRkQ1MzhG
MUU0QkQzQTMwMDQ4MjkwOCAvKiByb3RhdGVfbmVvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
RkQ1MzkwMUU0QkQzQTMwMDQ4MjkwOCAvKiByb3RhdGVfbmVvbjY0LmNjIGluIFNvdXJjZXMgKi8s
CkBAIC0xNjgwNCw3ICsxNjg5Miw2IEBACiAJCQkJNDE5QzgzOUIxRkUyNDZGOTAwNDBDMzBGIC8q
IHJ0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0cmVhbV9jb25maWcuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk0MTlDODM5RTFGRTI0NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X2F1ZGlvX3NlbmRfc3Ry
ZWFtX2NvbmZpZy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4MzhCMUZFMjQ2RjkwMDQwQzMw
RiAvKiBydGNfZXZlbnRfYndlX3VwZGF0ZV9kZWxheV9iYXNlZC5jYyBpbiBTb3VyY2VzICovLAot
CQkJCTQxNzk1M0VGMjE2OTg0MjEwMDI4MjY2QiAvKiB2cDlfcHJvZmlsZS5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxOUM4MzhEMUZFMjQ2RjkwMDQwQzMwRiAvKiBydGNfZXZlbnRfYndlX3VwZGF0
ZV9sb3NzX2Jhc2VkLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFBMDhCQzAyMTI2OTU1MzAwMUQ1
RDdCIC8qIHJ0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXIuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MUEwOEJCRDIxMjY5NTUzMDAxRDVEN0IgLyogcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFp
cl9jb25maWcuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2ODI0LDEwICsxNjkxMSwxNyBAQAogCQkJ
CTQxOUM4NDFEMUZFMjRBRUYwMDQwQzMwRiAvKiBydGNfc3RyZWFtX2NvbmZpZy5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxM0EyMzBGMUZFMThFMDcwMDM3M0U5OSAvKiBydGNjZXJ0aWZpY2F0ZS5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMkJFMUZFMThFMDcwMDM3M0U5OSAvKiBydGNjZXJ0
aWZpY2F0ZWdlbmVyYXRvci5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNzk1M0NDMjE2OTgyREIw
MDI4MjY2QiAvKiBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk0MTNFNjc4QjIxNjk4N0I5MDBFRjM3RUQgLyogUlRDQ1ZQaXhlbEJ1ZmZlci5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxNzk1M0I1MjE2OTgyNDIwMDI4MjY2QiAvKiBSVENEZWZhdWx0VmlkZW9E
ZWNvZGVyRmFjdG9yeS5tIGluIFNvdXJjZXMgKi8sCisJCQkJNDE3OTUzQjcyMTY5ODI0MjAwMjgy
NjZCIC8qIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5Lm0gaW4gU291cmNlcyAqLywKKwkJ
CQk0MTQ0QjNGNTIxNkIwODFCMDA0MzYzQUMgLyogUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0g
aW4gU291cmNlcyAqLywKKwkJCQk0MTc5NTNGQTIxNjk4NEJFMDAyODI2NkIgLyogUlRDRW5jb2Rl
ZEltYWdlLm0gaW4gU291cmNlcyAqLywKIAkJCQk0MUY0MTFCMDFFRjhEQTAxMDAzNDNDMjYgLyog
cnRjZXJyb3IuY2MgaW4gU291cmNlcyAqLywKLQkJCQk1Q0REOEE0RjFFNDNCRkIzMDA2MjFFOTIg
LyogcnRjcC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNDRCM0Q2MjE2OThBMUEwMDQzNjNBQyAv
KiBSVENIMjY0UHJvZmlsZUxldmVsSWQubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTQ0QjNEMzIx
Njk4OTZEMDA0MzYzQUMgLyogUlRDTmF0aXZlSTQyMEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTQxNDRCM0QxMjE2OTg5NjcwMDQzNjNBQyAvKiBSVENOYXRpdmVNdXRhYmxlSTQyMEJ1ZmZl
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4MkI5MUZFMjBEQ0QwMDQwQzMwRiAvKiBydGNw
X2RlbXV4ZXIuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTNFNjc3NjIxNjk4NjYxMDBFRjM3RUQg
LyogUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NUZB
MUU2QTY0NTIwMDk0RkRDOCAvKiBydGNwX25hY2tfc3RhdHMuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REODg5NzFFNDNCRTNDMDA2MjFFOTIgLyogcnRjcF9wYWNrZXQuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REODg5QTFFNDNCRTNDMDA2MjFFOTIgLyogcnRjcF9yZWNlaXZlci5jYyBpbiBT
b3VyY2VzICovLApAQCAtMTY4MzUsMTUgKzE2OTI5LDMxIEBACiAJCQkJNDE5QzgyRkYxRkUyMEYw
MjAwNDBDMzBGIC8qIHJ0Y3BfdHJhbnNjZWl2ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlD
ODMwMjFGRTIwRjAyMDA0MEMzMEYgLyogcnRjcF90cmFuc2NlaXZlcl9jb25maWcuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk0MTlDODMwMDFGRTIwRjAyMDA0MEMzMEYgLyogcnRjcF90cmFuc2NlaXZl
cl9pbXBsLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4ODlENzcyMTZCQzRFQzAwNDYxNEREIC8q
IFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxODg5RDc5
MjE2QkM0RUMwMDQ2MTRERCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyK1ByaXZhdGUubW0g
aW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI4OTIxQjIwMEZEMDBBNURGMjcgLyogUlRDUnRwRnJh
Z21lbnRhdGlvbkhlYWRlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2M0ZBNzgxRTQxN0FFRDAw
MkNBNTMxIC8qIHJ0Y3N0YXRzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2M0ZBNzcxRTQxN0FF
RDAwMkNBNTMxIC8qIHJ0Y3N0YXRzX29iamVjdHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0Qy
ODUwNzFFNkE2MDU3MDA5NEZEQzggLyogcnRjc3RhdHNjb2xsZWN0b3IuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1QzYzRkE3OTFFNDE3QUVEMDAyQ0E1MzEgLyogcnRjc3RhdHNyZXBvcnQuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTAyRjY5MjIxMjczMjA2MDA2QUU4RDcgLyogcnRjc3RhdHN0cmF2
ZXJzYWwuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTNFNjc3NjIxNjk4NjYxMDBFRjM3RUQgLyog
UlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNDRCM0U4MjE2
OUM1RTMwMDQzNjNBQyAvKiBSVENWaWRlb0NvZGVjSW5mbytQcml2YXRlLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDEzRTY3OTgyMTY5ODgzOTAwRUYzN0VEIC8qIFJUQ1ZpZGVvQ29kZWNJbmZvLm0g
aW4gU291cmNlcyAqLywKKwkJCQk0MTc5NTNCODIxNjk4MjQyMDAyODI2NkIgLyogUlRDVmlkZW9E
ZWNvZGVyRmFjdG9yeUgyNjQubSBpbiBTb3VyY2VzICovLAorCQkJCTQxNzk1M0M3MjE2OTgyNEIw
MDI4MjY2QiAvKiBSVENWaWRlb0RlY29kZXJIMjY0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDEz
RTY3NjgyMTY5ODU0QjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRGVjb2RlclZQOC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTQxNzk1M0I5MjE2OTgyNDIwMDI4MjY2QiAvKiBSVENWaWRlb0VuY29kZXJGYWN0
b3J5SDI2NC5tIGluIFNvdXJjZXMgKi8sCisJCQkJNDE3OTUzQ0EyMTY5ODI0QjAwMjgyNjZCIC8q
IFJUQ1ZpZGVvRW5jb2RlckgyNjQubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTNFNjdBMzIxNjk4
ODk1MDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLm0gaW4gU291cmNlcyAq
LywKKwkJCQk0MTQ0QjNGNzIxNkIwOUNCMDA0MzYzQUMgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGlu
Z3MrUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxM0U2NzY1MjE2OTg1NDYwMEVGMzdF
RCAvKiBSVENWaWRlb0VuY29kZXJWUDgubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTNFNjc5MDIx
Njk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9GcmFtZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQx
M0U2NzZCMjE2OTg1NEIwMEVGMzdFRCAvKiBSVENXcmFwcGVkTmF0aXZlVmlkZW9EZWNvZGVyLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNDEzRTY3NkQyMTY5ODU0QjAwRUYzN0VEIC8qIFJUQ1dyYXBw
ZWROYXRpdmVWaWRlb0VuY29kZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MUQ2QjQ1OTIxMjcz
MTU5MDA4RjkzNTMgLyogcnRwX2JpdHJhdGVfY29uZmlndXJhdG9yLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDE5QzgyQjQxRkUyMERDRDAwNDBDMzBGIC8qIHJ0cF9jb25maWcuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MTMwOTIwMjFFRjhEMEE2MDA3NTdDNTUgLyogcnRwX2RlbXV4ZXIuY2MgaW4g
U291cmNlcyAqLywKLQkJCQk0MTc5NTNCNTIxNjk4MjQyMDAyODI2NkIgLyogUlRDRGVmYXVsdFZp
ZGVvRGVjb2RlckZhY3RvcnkubSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OEIwMUU0M0JFM0Mw
MDYyMUU5MiAvKiBydHBfZm9ybWF0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4QTQxRTQz
QkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXRfaDI2NC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4OEE2MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuY2MgaW4g
U291cmNlcyAqLywKQEAgLTE2ODU0LDYgKzE2OTY0LDcgQEAKIAkJCQk0MUUwMkM3QTIxMjczNDc0
MDBDMjdDRDYgLyogcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTQxOTI0MUIwMjEyNzU5MDIwMDYzNEZDRiAvKiBydHBfZ2VuZXJpY19mcmFtZV9kZXNj
cmlwdG9yX2V4dGVuc2lvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNDVFNERDMUVGOENDRUYw
MEZDRjZFNiAvKiBydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuY2MgaW4gU291cmNlcyAqLywKKwkJ
CQk0MTNFNjc3RDIxNjk4NkFFMDBFRjM3RUQgLyogcnRwX2hlYWRlcl9leHRlbnNpb25fc2l6ZS5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OEI1MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfaGVh
ZGVyX2V4dGVuc2lvbnMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODhCNzFFNDNCRTNDMDA2
MjFFOTIgLyogcnRwX2hlYWRlcl9wYXJzZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUY5QkY4
QjIwNTFDODAxMDBBQkYwQjkgLyogcnRwX2hlYWRlcnMuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2
ODY3LDcgKzE2OTc4LDYgQEAKIAkJCQk1Q0REODhDQzFFNDNCRTNEMDA2MjFFOTIgLyogcnRwX3J0
Y3BfaW1wbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OEQzMUU0M0JFM0QwMDYyMUU5MiAv
KiBydHBfc2VuZGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4Q0UxRTQzQkUzRDAwNjIx
RTkyIC8qIHJ0cF9zZW5kZXJfYXVkaW8uY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTc5NTNEQjIx
Njk4MzkxMDAyODI2NkIgLyogbWV0cmljcy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OEQx
MUU0M0JFM0QwMDYyMUU5MiAvKiBydHBfc2VuZGVyX3ZpZGVvLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE5QzgyQkMxRkUyMERDRDAwNDBDMzBGIC8qIHJ0cF9zdHJlYW1fcmVjZWl2ZXJfY29udHJv
bGxlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NUIyMUU0M0I1QzAwMDYyMUU5MiAvKiBy
dHBfc3RyZWFtc19zeW5jaHJvbml6ZXIuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2ODc2LDI2ICsx
Njk4NiwyMiBAQAogCQkJCTVDREQ4OEQ1MUU0M0JFM0QwMDYyMUU5MiAvKiBydHBfdXRpbGl0eS5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTQxRTAyQzdEMjEyNzM0NzQwMEMyN0NENiAvKiBydHBfdmlk
ZW9faGVhZGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFENkI0NUMyMTI3MzE1OTAwOEY5MzUz
IC8qIHJ0cF92aWRlb19zZW5kZXIuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTNFNjc4QjIxNjk4
N0I5MDBFRjM3RUQgLyogUlRDQ1ZQaXhlbEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQx
M0U2Nzc0MjE2OTg2M0IwMEVGMzdFRCAvKiB2cDhfdGVtcG9yYWxfbGF5ZXJzLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzMDkxRjQxRUY4Q0Y5MjAwNzU3QzU1IC8qIHJ0cF92aWRlb19zdHJlYW1f
cmVjZWl2ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNDhFQjFFNDJDMUUzMDAyNjUxQzgg
LyogcnRwZGF0YWVuZ2luZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OTZDMUU0M0JGM0Ew
MDYyMUU5MiAvKiBydHBmYi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4MkM5MUZFMjBFMkMw
MDQwQzMwRiAvKiBydHBtZWRpYXV0aWxzLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE0NEIzRDgy
MTY5OEQzRDAwNDM2M0FDIC8qIGxvZ2dpbmcuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODMx
NTFGRTI0MjgwMDA0MEMzMEYgLyogcnRwcGFyYW1ldGVycy5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxMDJGNjkzMjEyNzMyMDYwMDZBRThENyAvKiBydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYyBp
biBTb3VyY2VzICovLAogCQkJCTVDRDI4NTA5MUU2QTYwNTcwMDk0RkRDOCAvKiBydHByZWNlaXZl
ci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNDRCM0Y1MjE2QjA4MUIwMDQzNjNBQyAvKiBSVENF
bmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQxNjIyNUQ5MjE2OTgx
ODEwMEE5MUM5QiAvKiB2aWRlb19mcmFtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjI2Mzgz
MjEyNjdCNzcwMDI3NEY1OSAvKiBydHByZWNlaXZlcmludGVyZmFjZS5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDRDI4NTBCMUU2QTYwNTcwMDk0RkRDOCAvKiBydHBzZW5kZXIuY2MgaW4gU291cmNl
cyAqLywKKwkJCQk0MTQ0QjNFMjIxNjlCNUJEMDA0MzYzQUMgLyogcnRwc2VuZGVyaW50ZXJmYWNl
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgyRTYxRkUyMEU1OTAwNDBDMzBGIC8qIHJ0cHRy
YW5zY2VpdmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzODUyMTI2N0I3NzAwMjc0RjU5
IC8qIHJ0cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0NUU0
Q0MxRUY4Q0I4QjAwRkNGNkU2IC8qIHJ0cHRyYW5zcG9ydC5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDNEI0OEYxMUU0MkMxRTMwMDI2NTFDOCAvKiBydHB1dGlscy5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4M0Y4MUU0MzlBNkYwMDYyMUU5MiAvKiBydHRfZmlsdGVyLmNjIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNDEzRTY3NzIyMTY5ODYzQjAwRUYzN0VEIC8qIHRlbXBvcmFsX2xheWVyc19jaGVj
a2VyLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE3OTUzRUEyMTY5ODNGMTAwMjgyNjZCIC8qIHJ0
dF9tdWx0X2V4cGVyaW1lbnQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDFDQTIxMjc1OTNG
MDA2MzRGQ0YgLyogcnR0X3N0YXRzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgyQjcxRkUy
MERDRDAwNDBDMzBGIC8qIHJ0eF9yZWNlaXZlX3N0cmVhbS5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxOTI0MTY0MjEyNzM4NUIwMDYzNEZDRiAvKiByd19sb2NrX3Bvc2l4LmNjIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNjkxMiw3ICsxNzAxOCw2IEBACiAJCQkJNDEyMzlCM0YyMTQ3NkRDNDAwMzk2Rjgx
IC8qIHNjcmVlbnNoYXJlX2xheWVycy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NjNDMUU2
QTY4MUMwMDk0RkRDOCAvKiBzY3RwdHJhbnNwb3J0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
Mjg1MEQxRTZBNjA1NzAwOTRGREM4IC8qIHNjdHB1dGlscy5jYyBpbiBTb3VyY2VzICovLAotCQkJ
CTQxM0U2NzY1MjE2OTg1NDYwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJWUDgubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REODk2RjFFNDNCRjNBMDA2MjFFOTIgLyogc2Rlcy5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxRjI2MzYyMjEyNjdBREYwMDI3NEY1OSAvKiBzZHBfdmlkZW9fZm9ybWF0
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgyREMxRkUyMEU1OTAwNDBDMzBGIC8qIHNkcHV0
aWxzLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNjkyMywxMSArMTcwMjgsMTEgQEAKIAkJCQk1Q0RE
ODVCOTFFNDNCNUMwMDA2MjFFOTIgLyogc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEyOTlCOEMyMTI3MzY1MTAwQjM0MTRCIC8qIHNlbmRfdGltZV9oaXN0b3J5
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg5NzIxRTQzQkYzQTAwNjIxRTkyIC8qIHNlbmRl
cl9yZXBvcnQuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkIyNzIxQjFGODdFMDBBNURGMjcg
Lyogc2VudF9wYWNrZXQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjM5RDFGRTE4RTA4MDAz
NzNFOTkgLyogc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl9pbXBsLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUNERDgzRkIxRTQzOUE2RjAwNjIxRTkyIC8qIHNlc3Npb25faW5mby5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxRjlCRkU0MjA1MURFMTgwMEFCRjBCOSAvKiBzZXNzaW9uZGVzY3JpcHRpb24u
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODVERjFFNkE2MzQzMDA5NEZEQzggLyogc2hhZG93
X2ZpbHRlcl91cGRhdGVfZ2Fpbi5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2NzdBMjE2OTg2
N0EwMEVGMzdFRCAvKiBjaGFubmVsX3JlY2VpdmVfcHJveHkuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTZEM0JFQjIxMjczMUMyMDA3NzVGMDkgLyogc2lnbmFsX2NsYXNzaWZpZXIuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk0MTNBMjM1QjFGRTE4RTA3MDAzNzNFOTkgLyogc2lnbmFsdGhyZWFkLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzQkIyMTI2ODExNTAwMjc0RjU5IC8qIHNpZ3Nsb3Qu
Y2MgaW4gU291cmNlcyAqLywKQEAgLTE2OTQ2LDE4ICsxNzA1MSwxNCBAQAogCQkJCTVDNEI0Q0U1
MUU0MzIwQTkwMDI2NTFDOCAvKiBzbGVlcC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkU1
MUU0M0MyQjUwMDYyMUU5MiAvKiBzbW9vdGguYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkUz
MUU0M0MyQjUwMDYyMUU5MiAvKiBzbW9vdGhfb3V0X2RhdGEuYyBpbiBTb3VyY2VzICovLAotCQkJ
CTQxM0U2N0E1MjE2OTg4REMwMEVGMzdFRCAvKiB2aWRlb19zdHJlYW1fZW5jb2Rlcl9vYnNlcnZl
ci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0I0MjE2OTgyNDIwMDI4MjY2QiAvKiBuYWx1
X3Jld3JpdGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg1RjYxRTZBNjNGNjAwOTRGREM4
IC8qIHNtb290aGluZ19maWx0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUREQjI1NjIxMjY3
OTBBMDAyOTZENDcgLyogc29ja2V0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIyRjAxRkUx
OEUwNzAwMzczRTk5IC8qIHNvY2tldGFkYXB0ZXJzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEz
QTIzNjgxRkUxOEUwNzAwMzczRTk5IC8qIHNvY2tldGFkZHJlc3MuY2MgaW4gU291cmNlcyAqLywK
LQkJCQk0MTQ0QjNENjIxNjk4QTFBMDA0MzYzQUMgLyogUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzNEQxRkUxOEUwNzAwMzczRTk5IC8qIHNvY2tldGFk
ZHJlc3NwYWlyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIyRDMxRkUxOEUwNzAwMzczRTk5
IC8qIHNvY2tldHN0cmVhbS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkU3MUU0M0MyQjUw
MDYyMUU5MiAvKiBzb3J0X3NxLmMgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNEM3RDFFNDMxRjlD
MDAyNjUxQzggLyogc3BhcnNlX2Zpcl9maWx0ZXIuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTQ0
QjNFMjIxNjlCNUJEMDA0MzYzQUMgLyogcnRwc2VuZGVyaW50ZXJmYWNlLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDE5MjQxQUQyMTI3NThEMzAwNjM0RkNGIC8qIHNwZWN0cmFsX2ZlYXR1cmVzLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxQTgyMTI3NThEMzAwNjM0RkNGIC8qIHNwZWN0cmFs
X2ZlYXR1cmVzX2ludGVybmFsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MzNEMDIxRjc5QjMz
NDAwMzg3QjREIC8qIHNwZWN0cnVtX2FyX21vZGVsX3RhYmxlcy5jIGluIFNvdXJjZXMgKi8sCkBA
IC0xNjk5Miw3ICsxNzA5Myw2IEBACiAJCQkJNDFFMDJDQkUyMTI3MzU2QTAwQzI3Q0Q2IC8qIHNz
bGNlcnRpZmljYXRlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzRjExRkUxOEUwODAwMzcz
RTk5IC8qIHNzbGZpbmdlcnByaW50LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5Qzg0MTYxRkUy
NEE4RDAwNDBDMzBGIC8qIHNzbGlkZW50aXR5LmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzRTY3
N0QyMTY5ODZBRTAwRUYzN0VEIC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk0MTlDODQxNzFGRTI0QUEzMDA0MEMzMEYgLyogc3Nsc3RyZWFtYWRhcHRl
ci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NzM2MUU0M0JBQkUwMDYyMUU5MiAvKiBzdGFu
ZGFsb25lX3ZhZC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkVCMUU0M0MyQjUwMDYyMUU5
MiAvKiBzdGF0ZV9jb25zdHJ1Y3QuYyBpbiBTb3VyY2VzICovLApAQCAtMTcwMDUsOCArMTcxMDUs
OCBAQAogCQkJCTVDREQ4NUJGMUU0M0I1QzAwMDYyMUU5MiAvKiBzdHJlYW1fc3luY2hyb25pemF0
aW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjQ4RjQxRTQyQzFFMzAwMjY1MUM4IC8qIHN0
cmVhbXBhcmFtcy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRERCMjZFMjEyNjc5RDIwMDI5NkQ0
NyAvKiBzdHJpbmdfYnVpbGRlci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2NzZCMjE2OTg1
NEIwMEVGMzdFRCAvKiBSVENXcmFwcGVkTmF0aXZlVmlkZW9EZWNvZGVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDEzQTIzRDYxRkUxOEUwODAwMzczRTk5IC8qIHN0cmluZ190b19udW1iZXIuY2Mg
aW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI4MDIxQjIwMDEyMDBBNURGMjcgLyogc3RyaW5nX3Zp
ZXcuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjJCNTFGRTE4RTA3MDAzNzNFOTkgLyogc3Ry
aW5nZW5jb2RlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzMTMxRkUxOEUwNzAwMzczRTk5
IC8qIHN0cmluZ3V0aWxzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2M0ZBMEIxRTQxNzRGNjAw
MkNBNTMxIC8qIHN0dW4uY2MgaW4gU291cmNlcyAqLywKQEAgLTE3MDE2LDYgKzE3MTE2LDggQEAK
IAkJCQk1Q0QyODVFMjFFNkE2MzQzMDA5NEZEQzggLyogc3VidHJhY3Rvci5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDRDI4NUU0MUU2QTYzNDMwMDk0RkRDOCAvKiBzdXBwcmVzc2lvbl9maWx0ZXIu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODVFNjFFNkE2MzQzMDA5NEZEQzggLyogc3VwcHJl
c3Npb25fZ2Fpbi5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxM0U2NzgyMjE2OTg3MEYwMEVGMzdF
RCAvKiBzdmNfY29uZmlnLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzRTY3OTQyMTY5ODgxOTAw
RUYzN0VEIC8qIHN2Y19yYXRlX2FsbG9jYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
QkVGMUU0M0MyQjUwMDYyMUU5MiAvKiBzd2FwX2J5dGVzLmMgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REOEE1NDFFNDNCRkIzMDA2MjFFOTIgLyogc3luY19idWZmZXIuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0QyODRCRTFFNkE1RjlGMDA5NEZEQzggLyogc3luY2FibGUuY2MgaW4gU291cmNlcyAq
LywKQEAgLTE3MDI1LDE0ICsxNzEyNywxNCBAQAogCQkJCTQxM0EyM0RFMUZFMThFMDgwMDM3M0U5
OSAvKiB0YXNrX3F1ZXVlX2djZC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzJEMUZFMThF
MDcwMDM3M0U5OSAvKiB0YXNrX3F1ZXVlX3Bvc2l4LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2
M0ZBMTcxRTQxNzRGNjAwMkNBNTMxIC8qIHRjcHBvcnQuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0
MTNFNjc3MjIxNjk4NjNCMDBFRjM3RUQgLyogdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTNBMjJBNTFGRTE4RTA2MDAzNzNFOTkgLyogdGVzdGVjaG9zZXJ2
ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjJFNTFGRTE4RTA3MDAzNzNFOTkgLyogdGhy
ZWFkLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzNTAxRkUxOEUwNzAwMzczRTk5IC8qIHRo
cmVhZF9jaGVja2VyX2ltcGwuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTNBMjNERDFGRTE4RTA4
MDAzNzNFOTkgLyogdGhyZWFkX2Rhcndpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NEMz
MUU0M0FGMTMwMDYyMUU5MiAvKiB0aHJlZV9iYW5kX2ZpbHRlcl9iYW5rLmNjIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDFGQ0JCMjIyMUIxRjgyRjAwQTVERjI3IC8qIHRocm93X2RlbGVnYXRlLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDhBNTcxRTQzQkZCMzAwNjIxRTkyIC8qIHRpY2tfdGltZXIu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDFFMjIxMjc1QTMwMDA2MzRGQ0YgLyogdGltZV9k
ZWx0YS5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxOUM4MzM1MUZFMjQ1RUEwMDQwQzMwRiAvKiB0
aW1lX2ludGVydmFsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhBNUExRTQzQkZCMzAwNjIx
RTkyIC8qIHRpbWVfc3RyZXRjaC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OERBMUU0M0JF
M0QwMDYyMUU5MiAvKiB0aW1lX3V0aWwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDFFMzIx
Mjc1QTMwMDA2MzRGQ0YgLyogdGltZXN0YW1wLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNzA3Miw5
ICsxNzE3NCw3IEBACiAJCQkJNDFGOUJGRUEyMDUxREVFQTAwQUJGMEI5IC8qIHR1cm5wb3J0ZmFj
dG9yeS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNjNGQTJGMUU0MTc0RjYwMDJDQTUzMSAvKiB0
dXJuc2VydmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjQ4RjkxRTQyQzFFMzAwMjY1MUM4
IC8qIHR1cm51dGlscy5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNjIyNUU0MjE2OTgxOTUwMEE5
MUM5QiAvKiBvYmpjX2ZyYW1lX2J1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NEM1
MUU0M0FGMTMwMDYyMUU5MiAvKiB0eXBpbmdfZGV0ZWN0aW9uLmNjIGluIFNvdXJjZXMgKi8sCi0J
CQkJNDE5QzgzREMxRkUyNDdGMjAwNDBDMzBGIC8qIHVkcHRyYW5zcG9ydC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDREQ4OERGMUU0M0JFM0QwMDYyMUU5MiAvKiB1bHBmZWNfZ2VuZXJhdG9yLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4RTIxRTQzQkUzRDAwNjIxRTkyIC8qIHVscGZlY19o
ZWFkZXJfcmVhZGVyX3dyaXRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OEU0MUU0M0JF
M0QwMDYyMUU5MiAvKiB1bHBmZWNfcmVjZWl2ZXJfaW1wbC5jYyBpbiBTb3VyY2VzICovLApAQCAt
MTcwODcsNyArMTcxODcsNiBAQAogCQkJCTVDREQ4NkQ2MUU0M0JBMjgwMDYyMUU5MiAvKiB2YWRf
Y29yZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2RDkxRTQzQkEyODAwNjIxRTkyIC8qIHZh
ZF9maWx0ZXJiYW5rLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODZEQzFFNDNCQTI4MDA2MjFF
OTIgLyogdmFkX2dtbS5jIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzRTYyMTY5ODNDQTAwMjgy
NjZCIC8qIG1vZHVsZV9jb21tb25fdHlwZXMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODZE
RjFFNDNCQTI4MDA2MjFFOTIgLyogdmFkX3NwLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MTZEM0JF
QzIxMjczMUMyMDA3NzVGMDkgLyogdmFkX3dpdGhfbGV2ZWwuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MUY5QkZENTIwNTFEREU1MDBBQkYwQjkgLyogdmVjdG9yX2J1ZmZlci5jYyBpbiBTb3VyY2Vz
ICovLApAQCAtMTcwOTgsMTcgKzE3MTk3LDIwIEBACiAJCQkJNUNEMjg1MzUxRTZBNjE1OTAwOTRG
REM4IC8qIHZpZGVvX2NvZGVjX2luaXRpYWxpemVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFF
MDJDOEQyMTI3MzRCOTAwQzI3Q0Q2IC8qIHZpZGVvX2NvZGluZ19kZWZpbmVzLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDg0MDExRTQzOUE2RjAwNjIxRTkyIC8qIHZpZGVvX2NvZGluZ19pbXBs
LmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE2MjI1RTIyMTY5ODE5NTAwQTkxQzlCIC8qIG9iamNf
dmlkZW9fZnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQxMTFGRTI0OUFCMDA0MEMz
MEYgLyogdmlkZW9fY29udGVudF90eXBlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzNjcy
MTI2N0FERjAwMjc0RjU5IC8qIHZpZGVvX2RlY29kZXIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0
MTc5NTNGMTIxNjk4NDU1MDAyODI2NkIgLyogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmNjIGluIFNv
dXJjZXMgKi8sCisJCQkJNDE2MjI1RDgyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2RlY29kZXJf
ZmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjI2MzY1MjEyNjdBREYwMDI3NEY1OSAv
KiB2aWRlb19kZWNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk0MTQ1RjYyMDFGRTFGMzhEMDBFQjlDQUYgLyogdmlkZW9fZW5jb2Rlci5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxRTAyQ0M1MjEyNzM1ODgwMEMyN0NENiAvKiB2aWRlb19lbmNvZGVy
X2NvbmZpZy5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNjIyNUQ0MjE2OTgxODEwMEE5MUM5QiAv
KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MUYyNjM2OTIx
MjY3QURGMDAyNzRGNTkgLyogdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVy
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg0NkExRTZBNTdGNDAwOTRGREM4IC8qIHZpZGVv
X2ZyYW1lLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNUM0QjRDMUYxRTQzMUY3NTAwMjY1MUM4IC8q
IHZpZGVvX2ZyYW1lLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE2MjI1RDkyMTY5ODE4MTAwQTkx
QzlCIC8qIHZpZGVvX2ZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEyNDU1NEIxRUY4ODc0
MzAwRjExODA5IC8qIHZpZGVvX2ZyYW1lX2J1ZmZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
NEI0QzFFMUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19mcmFtZV9idWZmZXIuY2MgaW4gU291cmNl
cyAqLywKKwkJCQk0MTYyMjVENzIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZnJhbWVfYnVmZmVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEwMkY2QzkyMTI3MzNCNzAwNkFFOEQ3IC8qIHZpZGVv
X3F1YWxpdHlfb2JzZXJ2ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODJCRTFGRTIwRENE
MDA0MEMzMEYgLyogdmlkZW9fcmVjZWl2ZV9zdHJlYW0uY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REODVDQTFFNDNCNUMwMDA2MjFFOTIgLyogdmlkZW9fcmVjZWl2ZV9zdHJlYW0uY2MgaW4gU291
cmNlcyAqLywKQEAgLTE3MTE2LDE1ICsxNzIxOCwxNCBAQAogCQkJCTVDNEI0QzIwMUU0MzFGNzUw
MDI2NTFDOCAvKiB2aWRlb19yZW5kZXJfZnJhbWVzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5
QzgyQjMxRkUyMERDRDAwNDBDMzBGIC8qIHZpZGVvX3NlbmRfc3RyZWFtLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNERDg1Q0QxRTQzQjVDMDAwNjIxRTkyIC8qIHZpZGVvX3NlbmRfc3RyZWFtLmNj
IGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzQ0EyMTY5ODI0QjAwMjgyNjZCIC8qIFJUQ1ZpZGVv
RW5jb2RlckgyNjQubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTAyRjZDQzIxMjczM0I3MDA2QUU4
RDcgLyogdmlkZW9fc2VuZF9zdHJlYW1faW1wbC5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1
M0YxMjE2OTg0NTUwMDI4MjY2QiAvKiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REODQwNDFFNDM5QTZGMDA2MjFFOTIgLyogdmlkZW9fc2VuZGVyLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDFBMDhCQjAyMTI2ODFDODAwMUQ1RDdCIC8qIHZpZGVvX3NvdXJj
ZV9pbnRlcmZhY2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODVDRjFFNDNCNUMwMDA2MjFF
OTIgLyogdmlkZW9fc3RyZWFtX2RlY29kZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTAyRjZE
QjIxMjczNDE2MDA2QUU4RDcgLyogdmlkZW9fc3RyZWFtX2RlY29kZXJfY3JlYXRlLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDEwMkY2Q0IyMTI3MzNCNzAwNkFFOEQ3IC8qIHZpZGVvX3N0cmVhbV9k
ZWNvZGVyX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODMxRjFGRTI0MkU2MDA0MEMz
MEYgLyogdmlkZW9fc3RyZWFtX2VuY29kZXIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTNFNjdB
NTIxNjk4OERDMDBFRjM3RUQgLyogdmlkZW9fc3RyZWFtX2VuY29kZXJfb2JzZXJ2ZXIuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTlDODQxMDFGRTI0OUFCMDA0MEMzMEYgLyogdmlkZW9fdGltaW5n
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjQ4RkMxRTQyQzFFMzAwMjY1MUM4IC8qIHZpZGVv
YWRhcHRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0OEZGMUU0MkMxRTMwMDI2NTFDOCAv
KiB2aWRlb2Jyb2FkY2FzdGVyLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0xNzE0Miw3ICsxNzI0Myw3
IEBACiAJCQkJNDE5MjQxRjUyMTI3NUMzMjAwNjM0RkNGIC8qIHZwOF9lbmNvZGVyX3NpbXVsY2Fz
dF9wcm94eS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4Mzg1MUU0MzlBMzUwMDYyMUU5MiAv
KiB2cDhfaGVhZGVyX3BhcnNlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QzE0MUU0M0Mz
QjQwMDYyMUU5MiAvKiB2cDlfbm9vcC5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0I3MjE2
OTgyNDIwMDI4MjY2QiAvKiBSVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDE3OTUzRUYyMTY5ODQyMTAwMjgyNjZCIC8qIHZwOV9wcm9maWxlLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCRjMxRTQzQzJCNTAwNjIxRTkyIC8qIHZxMy5jIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNERDhCRjUxRTQzQzJCNTAwNjIxRTkyIC8qIHZxNC5jIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUM0QjRDODAxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9maWxlLmNjIGluIFNv
dXJjZXMgKi8sCkBAIC0xNzE2NSw3ICsxNzI2Niw2IEBACiAJCQkJNUM0QjRDODYxRTQzMUY5QzAw
MjY1MUM4IC8qIHdpbmRvd19nZW5lcmF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEM5
ODFFNDNDNjYwMDA2MjFFOTIgLyogd3BkX25vZGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
OEM5QjFFNDNDNjYwMDA2MjFFOTIgLyogd3BkX3RyZWUuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0
MTQ0QjNGNzIxNkIwOUNCMDA0MzYzQUMgLyogUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkY5MUU0M0MyQjUwMDYyMUU5MiAvKiB4Y29y
cl9jb2VmLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MUREQjI1OTIxMjY3OTI4MDAyOTZENDcgLyog
emVyb19tZW1vcnkuY2MgaW4gU291cmNlcyAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcAppbmRleCBlNWRhYjY2OWQ4Mjg3ZWJkMzBlMTRlZDYxNTE3YTk5ZmIx
MmMwNGZlLi5jMjRkYzA3OTlkMTQwNTJiNzAyNWFhYTUxNWZjZTgwN2JmOWJhZDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAgQUxMT1df
VU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KICNpbmNsdWRlIDx3ZWJydGMvYXBpL2FzeW5jcmVzb2x2
ZXJmYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9h
dWRpb19kZWNvZGVyX2ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkv
Y3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3ZWJydGMvYXBpL3Bl
ZXJjb25uZWN0aW9uZmFjdG9yeXByb3h5Lmg+CiAjaW5jbHVkZSA8d2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaD4KICNpbmNsdWRlIDx3ZWJy
dGMvcDJwL2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0b3J5Lmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xp
ZW50LmNwcAppbmRleCA3M2IwMTk2NzU5NGUwYWU0ZDYyY2JmZTVkZjY2YzcxZDdmMDBiYTVlLi5j
NTk5NWJjNTMyNTVmZTJkMzc2ZmM0NWZiZmI5ZWU2MzFlZTczZTcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dENsaWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6
OnNpZ25hbFJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LCBjb24KICAg
ICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHZhbHVlLCBsZW5n
dGgpOwogICAgIG1fcnRjUHJvdmlkZXIuc2VuZEZyb21NYWluVGhyZWFkKFtpZGVudGlmaWVyID0g
bV9pZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGFkZHJlc3MgPSBSVENOZXR3
b3JrOjppc29sYXRlZENvcHkoYWRkcmVzcyksIHBhY2tldFRpbWVdKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikgewogICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsK
LSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJSVENTb2NrZXQ6OlNpZ25hbFJl
YWRQYWNrZXQoZGF0YSwgUlRDTmV0d29yazo6SVBBZGRyZXNzKGFkZHJlc3MuaXBhZGRyKCkpLCBh
ZGRyZXNzLnBvcnQoKSwgcGFja2V0VGltZS50aW1lc3RhbXApLCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJSVENTb2NrZXQ6OlNpZ25hbFJlYWRQYWNr
ZXQoZGF0YSwgUlRDTmV0d29yazo6SVBBZGRyZXNzKGFkZHJlc3MuaXBhZGRyKCkpLCBhZGRyZXNz
LnBvcnQoKSwgcGFja2V0VGltZSksIGlkZW50aWZpZXIpOwogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldENsaWVudC5oCmluZGV4IDM2MGMyZTAxYTRmMTNjNWU4MDhmZWVlZDUyMjY3NzE0MjJlZmQx
NGMuLjhmMjA1Y2UwMjk3MTNkOGJhMjEzZjE0M2JhNzFiYjExNDc1MmRlZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldENsaWVudC5oCkBAIC0zNSw4ICszNSw4IEBAIG5hbWVzcGFjZSBydGMgewogY2xhc3MgQXN5
bmNQYWNrZXRTb2NrZXQ7CiBjbGFzcyBTb2NrZXRBZGRyZXNzOwogc3RydWN0IFBhY2tldE9wdGlv
bnM7Ci1zdHJ1Y3QgUGFja2V0VGltZTsKIHN0cnVjdCBTZW50UGFja2V0OwordHlwZWRlZiBpbnQ2
NF90IFBhY2tldFRpbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCmluZGV4IGNlMGYxM2RhNzU5NGFkNmZhYjg3MTQ3ZTlkZTJkNThiODJlYmRkOTMuLmRkOTc3
OThkYWVhNDBhY2U2MjlhZDhmMGEzYjQxMWU0OTI4ZDNmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlJUQ1NvY2tldE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENNYWNyb3MuaD4KICNpbmNsdWRlIDx3ZWJydGMvcnRj
X2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaD4KKyNpbmNsdWRlIDx3ZWJydGMvcnRjX2Jhc2UvbG9n
Z2luZy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENTb2NrZXQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENTb2NrZXQuaAppbmRleCBkOWRlYWFjNjI1NTAzMTk0YmYyZGVlZjBh
Yjg1OTc4YzcwNmM2ZjU4Li42ZTRiZmUyYjE2NDE5Y2JiYzUxYjgwZDk1Zjc1OWVmZTJlZGQ5MmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDU29ja2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1NvY2tldC5oCkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBydGMgewogY2xhc3Mg
QXN5bmNQYWNrZXRTb2NrZXQ7CiBjbGFzcyBTb2NrZXRBZGRyZXNzOwogc3RydWN0IFBhY2tldE9w
dGlvbnM7Ci1zdHJ1Y3QgUGFja2V0VGltZTsKIHN0cnVjdCBTZW50UGFja2V0OwordHlwZWRlZiBp
bnQ2NF90IFBhY2tldFRpbWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldC5jcHAKaW5kZXggNzA1NDE1NzMzNzNkMjY5MjcxMjAyYjA2MWViOWMxNWM4ZWM3NjU2YS4u
ZTJjNWRmNTU3YzQwMTE1ZGRmNDhmZDQwNzlhZmI5NDlhNmMyNTU2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBMaWJXZWJSVENTb2NrZXQ6OnNpZ25hbEFk
ZHJlc3NSZWFkeShjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MpCiB2b2lkIExpYldl
YlJUQ1NvY2tldDo6c2lnbmFsUmVhZFBhY2tldChjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgcnRjOjpTb2NrZXRBZGRyZXNzJiYgYWRkcmVzcywgaW50NjRfdCB0aW1lc3RhbXAp
CiB7CiAgICAgbV9yZW1vdGVBZGRyZXNzID0gV1RGTW92ZShhZGRyZXNzKTsKLSAgICBTaWduYWxS
ZWFkUGFja2V0KHRoaXMsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIG1fcmVtb3RlQWRk
cmVzcywgcnRjOjpQYWNrZXRUaW1lKHRpbWVzdGFtcCwgMCkpOworICAgIFNpZ25hbFJlYWRQYWNr
ZXQodGhpcywgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgbV9yZW1vdGVBZGRyZXNzLCB0
aW1lc3RhbXApOwogfQogCiB2b2lkIExpYldlYlJUQ1NvY2tldDo6c2lnbmFsU2VudFBhY2tldChp
bnQgcnRjUGFja2V0SUQsIGludDY0X3Qgc2VuZFRpbWVNcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356793</attachid>
            <date>2018-12-07 02:56:07 -0800</date>
            <delta_ts>2018-12-07 08:56:59 -0800</delta_ts>
            <desc>GTK patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10935</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DTWFrZUxpc3RzLnR4dAppbmRleCBmYTIxYjI3
OWM3OS4uNmMwODU2ZTUzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ01ha2VM
aXN0cy50eHQKQEAgLTI0LDYgKzI0LDExIEBAIGVuZGlmICgpCiBzZXQod2VicnRjX1NPVVJDRVMK
ICAgICBTb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvZHluYW1pY19hbm5v
dGF0aW9ucy5jYwogICAgIFNvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9p
bnRlcm5hbC9yYXdfbG9nZ2luZy5jYworICAgIFNvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5jYworICAgIFNvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaS5jYworICAgIFNvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmNjCisgICAgU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmNjCisgICAgU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmNjCiAg
ICAgU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfb3B0aW9uYWxf
YWNjZXNzLmNjCiAgICAgU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9i
YWRfdmFyaWFudF9hY2Nlc3MuY2MKICAgICBTb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3R5cGVzL29wdGlvbmFsLmNjCkBAIC0zNjQsMTIgKzM2OSwxNSBAQCBzZXQod2VicnRjX1NP
VVJDRVMKICAgICBTb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19vcHRpb25zLmNjCiAgICAgU291cmNl
L3dlYnJ0Yy9hcGkvY2FsbC90cmFuc3BvcnQuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS9jYW5k
aWRhdGUuY2MKKyAgICBTb3VyY2Uvd2VicnRjL2FwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFj
dG9yeS5jYworICAgIFNvdXJjZS93ZWJydGMvYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmNjCiAg
ICAgU291cmNlL3dlYnJ0Yy9hcGkvZGF0YWNoYW5uZWxpbnRlcmZhY2UuY2MKICAgICBTb3VyY2Uv
d2VicnRjL2FwaS9qc2VwLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9hcGkvanNlcGljZWNhbmRpZGF0
ZS5jYwogICAgIFNvdXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNpbnRlcmZhY2UuY2MK
ICAgICBTb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5jYwogICAgIFNvdXJj
ZS93ZWJydGMvYXBpL21lZGlhdHlwZXMuY2MKKyAgICBTb3VyY2Uvd2VicnRjL2FwaS9tZWRpYV90
cmFuc3BvcnRfaW50ZXJmYWNlLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rp
b25pbnRlcmZhY2UuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS9wcm94eS5jYwogICAgIFNvdXJj
ZS93ZWJydGMvYXBpL3J0Y2Vycm9yLmNjCkBAIC0zODAsMTMgKzM4OCwxNyBAQCBzZXQod2VicnRj
X1NPVVJDRVMKICAgICBTb3VyY2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVyZmFjZS5j
YwogICAgIFNvdXJjZS93ZWJydGMvYXBpL3N0YXRzdHlwZXMuY2MKICAgICBTb3VyY2Uvd2VicnRj
L2FwaS90cmFuc3BvcnQvYml0cmF0ZV9zZXR0aW5ncy5jYworICAgIFNvdXJjZS93ZWJydGMvYXBp
L3RyYW5zcG9ydC9nb29nX2NjX2ZhY3RvcnkuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS90cmFu
c3BvcnQvbmV0d29ya190eXBlcy5jYwogICAgIFNvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFf
cmF0ZS5jYwogICAgIFNvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfc2l6ZS5jYwogICAgIFNv
dXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGEuY2MKICAgICBTb3VyY2Uvd2VicnRjL2Fw
aS91bml0cy90aW1lc3RhbXAuY2MKKyAgICBTb3VyY2Uvd2VicnRjL2FwaS92aWRlby9idWlsdGlu
X3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MKICAgICBTb3VyY2Uvd2VicnRjL2Fw
aS92aWRlby9jb2xvcl9zcGFjZS5jYworICAgIFNvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2VuY29k
ZWRfaW1hZ2UuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2ZyYW1lLmNj
CisgICAgU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaGRyX21ldGFkYXRhLmNjCiAgICAgU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW8vaTAxMF9idWZmZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS92
aWRlby9pNDIwX2J1ZmZlci5jYwogICAgIFNvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2Jp
dHJhdGVfYWxsb2NhdGlvbi5jYwpAQCAtNDAxLDYgKzQxMyw3IEBAIHNldCh3ZWJydGNfU09VUkNF
UwogICAgIFNvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyX2ZhY3Rv
cnkuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19k
ZWNvZGVyX2ZhY3RvcnkuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVp
bHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuY2MKKyAgICBTb3VyY2Uvd2VicnRjL2FwaS92aWRl
b19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MKICAgICBTb3VyY2Uvd2VicnRj
L2FwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5jYwogICAgIFNvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvX2NvZGVjcy92aWRlb19jb2RlYy5jYwogICAgIFNvdXJjZS93ZWJydGMvYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyLmNjCkBAIC01MTIsNyArNTI1LDYgQEAgc2V0KHdlYnJ0
Y19TT1VSQ0VTCiAgICAgU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaTQyMF9idWZmZXJfcG9v
bC5jYwogICAgIFNvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY29taW5nX3ZpZGVvX3N0cmVh
bS5jYwogICAgIFNvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di93ZWJydGNfbGlieXV2
LmNjCi0gICAgU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWUuY2MKICAgICBT
b3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZV9idWZmZXIuY2MKICAgICBTb3Vy
Y2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJhbWVzLmNjCiAgICAgU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hbHJfc3RhdGUu
Y2MKQEAgLTkxNCw2ICs5MjYsNyBAQCBzZXQod2VicnRjX1NPVVJDRVMKICAgICBTb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvdm9pY2VfYWN0aXZpdHlfZGV0ZWN0b3Iu
Y2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92b2ljZV9kZXRl
Y3Rpb25faW1wbC5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xs
ZXIvYml0cmF0ZV9jb250cm9sbGVyX2ltcGwuY2MKKyAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMv
Yml0cmF0ZV9jb250cm9sbGVyL2xvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uY2MKICAg
ICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRfc2lkZV9iYW5k
d2lkdGhfZXN0aW1hdGlvbi5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvYmJyL2JhbmR3aWR0aF9zYW1wbGVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9iYnIvYmJyX2ZhY3RvcnkuY2MKQEAgLTkyNCw2
ICs5MzcsNyBAQCBzZXQod2VicnRjX1NPVVJDRVMKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1h
dG9yLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2Fscl9kZXRlY3Rvci5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9iaXRyYXRlX2VzdGltYXRvci5jYworICAgIFNvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25nZXN0aW9uX3dp
bmRvd19wdXNoYmFja19jb250cm9sbGVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5jYwogICAgIFNvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25l
dHdvcmtfY29udHJvbC5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9tZWRpYW5fc2xvcGVfZXN0aW1hdG9yLmNjCkBAIC05MzEsNiArOTQ1
LDcgQEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2NvbnRyb2xsZXIuY2MKICAgICBTb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvdHJlbmRsaW5lX2Vz
dGltYXRvci5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvcmVjZWl2ZV9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYworICAgIFNvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5jYwog
ICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3NlbmRf
c2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5jYwogICAgIFNvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3RyYW5zcG9ydF9mZWVk
YmFja19hZGFwdGVyLmNjCkBAIC05NjUsNiArOTgwLDcgQEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAg
ICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9wbGF5b3V0X2RlbGF5X29y
YWNsZS5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVjZWl2
ZV9zdGF0aXN0aWNzX2ltcGwuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3IuY2MKKyAgICBTb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5jYwogICAgIFNvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25fc2l6
ZS5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9uYWNr
X3N0YXRzLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC5jYwpAQCAtMTA5Niw2ICsxMTEyLDcgQEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAgICAg
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3RvcnkuY2MKICAgICBT
b3VyY2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFuc3BvcnQuY2MKICAgICBTb3VyY2Uvd2VicnRj
L3AycC9iYXNlL2R0bHN0cmFuc3BvcnRpbnRlcm5hbC5jYworICAgIFNvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvaWNlY3JlZGVudGlhbHNpdGVyYXRvci5jYwogICAgIFNvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvaWNldHJhbnNwb3J0aW50ZXJuYWwuY2MKICAgICBTb3VyY2Uvd2VicnRjL3AycC9iYXNlL3Ay
cGNvbnN0YW50cy5jYwogICAgIFNvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hh
bm5lbC5jYwpAQCAtMTE4NCwxOSArMTIwMSwyMiBAQCBzZXQod2VicnRjX1NPVVJDRVMKICAgICBT
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50X3RyYWNlci5jYwogICAgIFNvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQuY2MKICAgICBTb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2V4cGVyaW1lbnRzL2Nvbmdlc3Rpb25fY29udHJvbGxlcl9leHBlcmltZW50LmNj
CisgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9jcHVfc3BlZWRfZXhwZXJp
bWVudC5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJp
YWxfcGFyc2VyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVs
ZF90cmlhbF91bml0cy5jYworICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMv
aml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuY2MKKyAgICBTb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmNjCiAg
ICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9xdWFsaXR5X3NjYWxpbmdfZXhw
ZXJpbWVudC5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvcnR0X211
bHRfZXhwZXJpbWVudC5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZS5jYwogICAg
IFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZV9wb3NpeC5jYwotICAgIFNvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZmlsZXV0aWxzLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maXJld2Fs
bHNvY2tldHNlcnZlci5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MKICAg
ICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2hlbHBlcnMuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2h0dHBjb21tb24uY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2lmYWRkcnNf
Y29udmVydGVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9pcGFkZHJlc3MuY2MKKyAg
ICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2tleV9kZXJpdmF0aW9uLmNjCiAgICAgU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9n
c2lua3MuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmcuY2MKQEAgLTEyMTIs
OSArMTIzMiwxMSBAQCBzZXQod2VicnRjX1NPVVJDRVMKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL25ldGhlbHBlcnMuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsuY2MK
ICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmttb25pdG9yLmNjCisgICAgU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0LmNjCiAgICAgU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9udW1lcmljcy9leHBfZmlsdGVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1l
cmljcy9oaXN0b2dyYW1fcGVyY2VudGlsZV9jb3VudGVyLmNjCisgICAgU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbnVtZXJpY3Mvc2FtcGxlX2NvdW50ZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL29wZW5zc2xhZGFwdGVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Ns
Y2VydGlmaWNhdGUuY2MKQEAgLTEyMjMsNiArMTI0NSw3IEBAIHNldCh3ZWJydGNfU09VUkNFUwog
ICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHNlc3Npb25jYWNoZS5jYwogICAgIFNv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHN0cmVhbWFkYXB0ZXIuY2MKICAgICBTb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL29wZW5zc2x1dGlsaXR5LmNjCisgICAgU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9vcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3BoeXNpY2Fsc29ja2V0c2VydmVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9wbGF0Zm9ybV9maWxlLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV90
aHJlYWQuY2MKQEAgLTEyODgsNiArMTMxMSw3IEBAIHNldCh3ZWJydGNfU09VUkNFUwogICAgIFNv
dXJjZS93ZWJydGMvdmlkZW8vY2FsbF9zdGF0cy5jYwogICAgIFNvdXJjZS93ZWJydGMvdmlkZW8v
ZW5jb2Rlcl9ydGNwX2ZlZWRiYWNrLmNjCiAgICAgU291cmNlL3dlYnJ0Yy92aWRlby9vdmVydXNl
X2ZyYW1lX2RldGVjdG9yLmNjCisgICAgU291cmNlL3dlYnJ0Yy92aWRlby9mcmFtZV9kdW1waW5n
X2RlY29kZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL3ZpZGVvL3F1YWxpdHlfdGhyZXNob2xkLmNj
CiAgICAgU291cmNlL3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0YXRpc3RpY3NfcHJveHkuY2MKICAg
ICBTb3VyY2Uvd2VicnRjL3ZpZGVvL3JlcG9ydF9ibG9ja19zdGF0cy5jYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2lu
Zy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2xvZ2dpbmcuY2MKaW5kZXggNDRlYzNmNTBjMTkuLjU4YjMzNDVmOWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5n
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2xvZ2dpbmcuY2MKQEAgLTc1LDcgKzc1LDEyIEBAIENyaXRpY2FsU2VjdGlvbiYgbG9nQ3Jp
dGljYWxTY29wZSgpIHsKIHZvaWQgTG9nU2luazo6T25Mb2dNZXNzYWdlKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnaW5nU2V2ZXJpdHkgc2V2
ZXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YWcpIHsKLSAg
T25Mb2dNZXNzYWdlKHRhZyArICgiOiAiICsgbXNnKSk7CisgIE9uTG9nTWVzc2FnZSh0YWcgKyAo
IjogIiArIG1zZyksIHNldmVyaXR5KTsKK30KKwordm9pZCBMb2dTaW5rOjpPbkxvZ01lc3NhZ2Uo
Y29uc3Qgc3RkOjpzdHJpbmcmIG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dp
bmdTZXZlcml0eSAvKiBzZXZlcml0eSAqLykgeworICBPbkxvZ01lc3NhZ2UobXNnKTsKIH0KIAog
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfbGliZXZlbnQuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVl
X2xpYmV2ZW50LmNjCmluZGV4IDkwNWJiZGFjMGUyLi4yN2I4ODAxYmIwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19x
dWV1ZV9saWJldmVudC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlX2xpYmV2ZW50LmNjCkBAIC0yMiw3ICsyMiwxMyBA
QAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpZiBkZWZp
bmVkKFdFQlJUQ19MSU5VWCkKKyNpbmNsdWRlIDxldmVudDIvZXZlbnQuaD4KKyNpbmNsdWRlIDxl
dmVudDIvZXZlbnRfY29tcGF0Lmg+CisjaW5jbHVkZSA8ZXZlbnQyL2V2ZW50X3N0cnVjdC5oPgor
I2Vsc2UKICNpbmNsdWRlICJiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L2V2ZW50LmgiCisjZW5k
aWYKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0
aWNhbHNlY3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKaW5kZXggYWM2
NDQ1ZmEwMGMuLmJjMTJiNmNkZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJl
YW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCkBAIC0xODYsMTEgKzE4Niw2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKICAgICB9CiAKLSAgICBpbnQz
Ml90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90LCBpbnQ2NF90KSBmaW5hbAotICAgIHsK
LSAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLSAgICB9Ci0KICAgICBpbnQz
Ml90IEVuY29kZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLAogICAgICAgICBjb25z
dCB3ZWJydGM6OkNvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY0luZm8sCiAgICAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHdlYnJ0Yzo6RnJhbWVUeXBlPiogZnJhbWVUeXBlcykgZmluYWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356816</attachid>
            <date>2018-12-07 08:57:14 -0800</date>
            <delta_ts>2018-12-07 14:59:38 -0800</delta_ts>
            <desc>Patch with GTK changes</desc>
            <filename>bug-192316-20181207085700.patch</filename>
            <type>text/plain</type>
            <size>8356181</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA3NzUxNmFkOTY0MzU5ZTMyZTMwMGIxNTBmMzFkZjg4MWFlODUxYTY2Li41NzA1
NWUzZmJlMjNkNGIwZDA0Njk5ZDI5MjIzMGQ5YTA3ZjcxYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMi0wNiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB1cCB0
byAwZDAwN2Q3YzRmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTIzMTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGluZyB0byBsYXRlc3QgbGlid2VicnRjIHdpbGwgYWxsb3dzIGNoZXJyeS1waWNr
aW5nIGltcG9ydGFudCBidWcgZml4ZXMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3
ZWJydGMuaU9TLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAg
ICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcDogcmVmcmVzaGVkLgorICAgICAgICAq
IFNvdXJjZS93ZWJydGM6IHJlZnJlc2hlZC4KKyAgICAgICAgKiBXZWJLaXQvMDAwMS1saWJ3ZWJy
dGMtY2hhbmdlcy5wYXRjaDogUmVtb3ZlZC4KKyAgICAgICAgKiBsaWJ3ZWJydGMueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0xMi0wMSAgVGhpYmF1bHQgU2F1bmllciAgPHRzYXVu
aWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bV2ViUlRDXSBCdWlsZCBvcHVz
IGRlY29kZXIgc3VwcG9ydCBpbiBsaWJ3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MWIxYTdkZTU3ODk1
ZTQ5NDFlOTA5OWRlMjA5Mjk1MTYwNzdjYjcxLi43ZWUyMzllZjBlZWE0YmFhMmE5MGJiNzQ3MTlm
ZTk1MzEzOTg2ODE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTItMDYgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBsaWJ3ZWJy
dGMgdXAgdG8gMGQwMDdkN2M0ZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkyMzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGluY2x1ZGUgYWNjb3JkaW5nIG5ldyBsaWJ3ZWJydGMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwOgorCiAyMDE4LTEyLTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBFbmFibGUgdGhlIHBvc3NpYmlsaXR5IHRvIGRvIHZpZGVvIGNhcHR1cmUgaW4gVUlQ
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDc5MDcxMGQ5NjhlNmRjNjQ4NzdkYTAzMDAyOTg2YWE2MGU1Y2Zm
ZjcuLmE4MzM0MThkZjNmMjM2MDI1ODAzNmIyZjYxMTVmZDk5Mjc1NDQ0YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTgtMTItMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCisgICAgICAgIFVwZGF0ZSBsaWJ3ZWJydGMgdXAgdG8gMGQwMDdkN2M0ZgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzE2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgYmFz
ZSBhY2NvcmRpbmcgbmV3IGxpYndlYnJ0YyBiYWNrZW5kCisgICAgICAgIEluIHBhcnRpY3VsYXIs
IHVzZSBkaXJlY3RseSBpbnQ2NF90IGZvciBwYWNrZXQgdGltZS4KKworICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZzoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
U29ja2V0Q2xpZW50OjpzaWduYWxSZWFkUGFja2V0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJU
Q1NvY2tldDo6c2lnbmFsUmVhZFBhY2tldCk6CisKIDIwMTgtMTItMDUgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhIGRvY3VtZW50IGVudHJ5IGZy
b20gTmV0d29ya01ETlNSZWdpc3Rlcjo6bV9zZXJ2aWNlcyB3aGVuIGRvY3VtZW50IGdvZXMgYXdh
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NNYWtlTGlzdHMudHh0CmluZGV4IDI1NDc4
ODQ3ZmU3NzFhYzlmOTI1MTA3NjgzOGVmNjZlNTM1M2M4ODAuLjZjMDg1NmU1M2NkNjhiOGViYTUy
YTBlYjEwMTk0ZTFjZDFkZTZjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ01h
a2VMaXN0cy50eHQKQEAgLTI0LDYgKzI0LDExIEBAIGVuZGlmICgpCiBzZXQod2VicnRjX1NPVVJD
RVMKICAgICBTb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvZHluYW1pY19h
bm5vdGF0aW9ucy5jYwogICAgIFNvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5jYworICAgIFNvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC90aHJvd19kZWxlZ2F0ZS5jYworICAgIFNvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaS5jYworICAgIFNvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmNjCisgICAg
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmNjCisgICAg
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmNj
CiAgICAgU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9iYWRfb3B0aW9u
YWxfYWNjZXNzLmNjCiAgICAgU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
cy9iYWRfdmFyaWFudF9hY2Nlc3MuY2MKICAgICBTb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzL29wdGlvbmFsLmNjCkBAIC0zNjQsMTIgKzM2OSwxNSBAQCBzZXQod2VicnRj
X1NPVVJDRVMKICAgICBTb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19vcHRpb25zLmNjCiAgICAgU291
cmNlL3dlYnJ0Yy9hcGkvY2FsbC90cmFuc3BvcnQuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS9j
YW5kaWRhdGUuY2MKKyAgICBTb3VyY2Uvd2VicnRjL2FwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25f
ZmFjdG9yeS5jYworICAgIFNvdXJjZS93ZWJydGMvYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmNj
CiAgICAgU291cmNlL3dlYnJ0Yy9hcGkvZGF0YWNoYW5uZWxpbnRlcmZhY2UuY2MKICAgICBTb3Vy
Y2Uvd2VicnRjL2FwaS9qc2VwLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9hcGkvanNlcGljZWNhbmRp
ZGF0ZS5jYwogICAgIFNvdXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNpbnRlcmZhY2Uu
Y2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5jYwogICAgIFNv
dXJjZS93ZWJydGMvYXBpL21lZGlhdHlwZXMuY2MKKyAgICBTb3VyY2Uvd2VicnRjL2FwaS9tZWRp
YV90cmFuc3BvcnRfaW50ZXJmYWNlLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9hcGkvcGVlcmNvbm5l
Y3Rpb25pbnRlcmZhY2UuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS9wcm94eS5jYwogICAgIFNv
dXJjZS93ZWJydGMvYXBpL3J0Y2Vycm9yLmNjCkBAIC0zODAsMTMgKzM4OCwxNyBAQCBzZXQod2Vi
cnRjX1NPVVJDRVMKICAgICBTb3VyY2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVyZmFj
ZS5jYwogICAgIFNvdXJjZS93ZWJydGMvYXBpL3N0YXRzdHlwZXMuY2MKICAgICBTb3VyY2Uvd2Vi
cnRjL2FwaS90cmFuc3BvcnQvYml0cmF0ZV9zZXR0aW5ncy5jYworICAgIFNvdXJjZS93ZWJydGMv
YXBpL3RyYW5zcG9ydC9nb29nX2NjX2ZhY3RvcnkuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS90
cmFuc3BvcnQvbmV0d29ya190eXBlcy5jYwogICAgIFNvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2Rh
dGFfcmF0ZS5jYwogICAgIFNvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfc2l6ZS5jYwogICAg
IFNvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGEuY2MKICAgICBTb3VyY2Uvd2VicnRj
L2FwaS91bml0cy90aW1lc3RhbXAuY2MKKyAgICBTb3VyY2Uvd2VicnRjL2FwaS92aWRlby9idWls
dGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MKICAgICBTb3VyY2Uvd2VicnRj
L2FwaS92aWRlby9jb2xvcl9zcGFjZS5jYworICAgIFNvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2Vu
Y29kZWRfaW1hZ2UuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2ZyYW1l
LmNjCisgICAgU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaGRyX21ldGFkYXRhLmNjCiAgICAgU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaTAxMF9idWZmZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL2Fw
aS92aWRlby9pNDIwX2J1ZmZlci5jYwogICAgIFNvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVv
X2JpdHJhdGVfYWxsb2NhdGlvbi5jYwpAQCAtNDAxLDYgKzQxMyw3IEBAIHNldCh3ZWJydGNfU09V
UkNFUwogICAgIFNvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyX2Zh
Y3RvcnkuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRl
b19kZWNvZGVyX2ZhY3RvcnkuY2MKICAgICBTb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3Mv
YnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuY2MKKyAgICBTb3VyY2Uvd2VicnRjL2FwaS92
aWRlb19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MKICAgICBTb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5jYwogICAgIFNvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19jb2RlYy5jYwogICAgIFNvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyLmNjCkBAIC00MTQsMTIgKzQyNyw5IEBAIHNldCh3
ZWJydGNfU09VUkNFUwogICAgIFNvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc3RhdGUuY2MKICAg
ICBTb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3RyYW5zcG9ydF9pbXBsLmNjCiAgICAgU291cmNl
L3dlYnJ0Yy9hdWRpby9jaGFubmVsX3JlY2VpdmUuY2MKLSAgICBTb3VyY2Uvd2VicnRjL2F1ZGlv
L2NoYW5uZWxfcmVjZWl2ZV9wcm94eS5jYwogICAgIFNvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5l
bF9zZW5kLmNjCi0gICAgU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmRfcHJveHkuY2MK
ICAgICBTb3VyY2Uvd2VicnRjL2F1ZGlvL251bGxfYXVkaW9fcG9sbGVyLmNjCiAgICAgU291cmNl
L3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYwotICAgIFNvdXJjZS93ZWJydGMvYXVkaW8v
dGltZV9pbnRlcnZhbC5jYwogICAgIFNvdXJjZS93ZWJydGMvYXVkaW8vdHJhbnNwb3J0X2ZlZWRi
YWNrX3BhY2tldF9sb3NzX3RyYWNrZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL2F1ZGlvL3V0aWxp
dHkvYXVkaW9fZnJhbWVfb3BlcmF0aW9ucy5jYwogICAgIFNvdXJjZS93ZWJydGMvY2FsbC9hdWRp
b19yZWNlaXZlX3N0cmVhbS5jYwpAQCAtNTE1LDcgKzUyNSw2IEBAIHNldCh3ZWJydGNfU09VUkNF
UwogICAgIFNvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2k0MjBfYnVmZmVyX3Bvb2wuY2MKICAg
ICBTb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNvbWluZ192aWRlb19zdHJlYW0uY2MKICAg
ICBTb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYvd2VicnRjX2xpYnl1di5jYwotICAg
IFNvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lLmNjCiAgICAgU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjCiAgICAgU291cmNlL3dlYnJ0
Yy9jb21tb25fdmlkZW8vdmlkZW9fcmVuZGVyX2ZyYW1lcy5jYwogICAgIFNvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmNjCkBAIC01
ODMsNyArNTkyLDYgQEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuY2MKICAgICBTb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYXVkaW9fY29kaW5nX21vZHVsZS5jYwogICAgIFNv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jYWxsX3N0YXRpc3RpY3MuY2MK
LSAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvY29kZWNfbWFuYWdl
ci5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2Ff
Y29kZWMuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmNjCiAgICAgU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9f
bmV0d29ya19hZGFwdG9yX2ltcGwuY2MKQEAgLTc3NSw3ICs3ODMsNiBAQCBzZXQod2VicnRjX1NP
VVJDRVMKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3ByZWVt
cHRpdmVfZXhwYW5kLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS9yYW5kb21fdmVjdG9yLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9yZWRfcGF5bG9hZF9zcGxpdHRlci5jYwotICAgIFNvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcnRjcC5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmNjCiAgICAgU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zeW5jX2J1ZmZlci5jYwogICAgIFNv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGlja190aW1lci5jYwpAQCAt
ODU3LDkgKzg2NCw3IEBAIHNldCh3ZWJydGNfU09VUkNFUwogICAgIFNvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvY29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2
ZS5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZG93
bl9zYW1wbGVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9maXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5jYwotICAgIFNvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmNjCiAg
ICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxp
ZXIuY2MKLSAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dh
aW5fY3VydmVfYXBwbGllci5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MKICAgICBTb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuY2MKICAgICBTb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL25vaXNlX2xldmVsX2VzdGltYXRvci5j
YwpAQCAtOTIxLDYgKzkyNiw3IEBAIHNldCh3ZWJydGNfU09VUkNFUwogICAgIFNvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92b2ljZV9hY3Rpdml0eV9kZXRlY3Rvci5j
YwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZvaWNlX2RldGVj
dGlvbl9pbXBsLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxl
ci9iaXRyYXRlX2NvbnRyb2xsZXJfaW1wbC5jYworICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9i
aXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5jYwogICAg
IFNvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3
aWR0aF9lc3RpbWF0aW9uLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9iYnIvYmFuZHdpZHRoX3NhbXBsZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Jici9iYnJfZmFjdG9yeS5jYwpAQCAtOTI4LDE5
ICs5MzQsMTggQEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9iYnIvZGF0YV90cmFuc2Zlcl90cmFja2VyLmNjCiAgICAg
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9iYnIvbG9zc19yYXRl
X2ZpbHRlci5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvYmJyL3J0dF9zdGF0cy5jYwotICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYwogICAg
IFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tu
b3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWxyX2RldGVjdG9yLmNjCiAgICAgU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2JpdHJhdGVfZXN0
aW1hdG9yLmNjCisgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MKICAgICBT
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlf
YmFzZWRfYndlLmNjCi0gICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL2dvb2dfY2NfZmFjdG9yeS5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5j
YwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9tZWRpYW5fc2xvcGVfZXN0aW1hdG9yLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1hdG9yLmNjCiAg
ICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3By
b2JlX2NvbnRyb2xsZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvdHJlbmRsaW5lX2VzdGltYXRvci5jYwogICAgIFNvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcmVjZWl2ZV9zaWRlX2Nvbmdlc3Rpb25f
Y29udHJvbGxlci5jYwotICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvcnRwL3BhY2VyX2NvbnRyb2xsZXIuY2MKKyAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9jb250cm9sX2hhbmRsZXIuY2MKICAgICBTb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29uZ2Vz
dGlvbl9jb250cm9sbGVyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9ydHAvc2VuZF90aW1lX2hpc3RvcnkuY2MKICAgICBTb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRl
ci5jYwpAQCAtOTc1LDYgKzk4MCw3IEBAIHNldCh3ZWJydGNfU09VUkNFUwogICAgIFNvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGxheW91dF9kZWxheV9vcmFjbGUuY2MKICAg
ICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGlj
c19pbXBsLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZW1v
dGVfbnRwX3RpbWVfZXN0aW1hdG9yLmNjCisgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuY2MKICAgICBTb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuY2MKICAgICBT
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfbmFja19zdGF0cy5jYwog
ICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQuY2MK
QEAgLTEwNTAsNyArMTA1Niw2IEBAIHNldCh3ZWJydGNfU09VUkNFUwogICAgIFNvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2k0MjAvaTQyMC5jYwogICAgIFNvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xh
eWVycy5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Zw
OC9zY3JlZW5zaGFyZV9sYXllcnMuY2MKLSAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvdnA4X3RlbXBvcmFsX2xheWVycy5jYwogICAgIFNvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIuY2MK
ICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4
X2ludGVyZmFjZS5jYwogICAgIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYwpAQCAtMTA4Nyw3ICsxMDkyLDYgQEAg
c2V0KHdlYnJ0Y19TT1VSQ0VTCiAgICAgU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy91dGlsaXR5L2RlZmF1bHRfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IuY2MKICAgICBTb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvZnJhbWVfZHJvcHBlci5jYwogICAg
IFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9pdmZfZmlsZV93cml0
ZXIuY2MKLSAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvbW92
aW5nX2F2ZXJhZ2UuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0
aWxpdHkvcXVhbGl0eV9zY2FsZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yLmNjCiAgICAgU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF91dGlsaXR5LmNjCkBA
IC0xMTA4LDYgKzExMTIsNyBAQCBzZXQod2VicnRjX1NPVVJDRVMKICAgICBTb3VyY2Uvd2VicnRj
L3AycC9iYXNlL2Jhc2ljcGFja2V0c29ja2V0ZmFjdG9yeS5jYwogICAgIFNvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvZHRsc3RyYW5zcG9ydC5jYwogICAgIFNvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRs
c3RyYW5zcG9ydGludGVybmFsLmNjCisgICAgU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9pY2VjcmVk
ZW50aWFsc2l0ZXJhdG9yLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9pY2V0cmFuc3Bv
cnRpbnRlcm5hbC5jYwogICAgIFNvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwY29uc3RhbnRzLmNj
CiAgICAgU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFubmVsLmNjCkBAIC0x
MTMwLDE1ICsxMTM1LDEyIEBAIHNldCh3ZWJydGNfU09VUkNFUwogICAgIFNvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5LmNjCiAgICAgU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS90dXJucG9ydC5jYwogICAgIFNvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnNl
cnZlci5jYwotICAgIFNvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJhbnNwb3J0LmNjCiAgICAg
U291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5jYwogICAgIFNvdXJj
ZS93ZWJydGMvcDJwL2NsaWVudC90dXJucG9ydGZhY3RvcnkuY2MKICAgICBTb3VyY2Uvd2VicnRj
L3AycC9zdHVucHJvYmVyL3N0dW5wcm9iZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL3BjL2F1ZGlv
dHJhY2suY2MKLSAgICBTb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZpbHRlci5jYwogICAgIFNvdXJj
ZS93ZWJydGMvcGMvY2hhbm5lbC5jYwogICAgIFNvdXJjZS93ZWJydGMvcGMvY2hhbm5lbG1hbmFn
ZXIuY2MKLSAgICBTb3VyY2Uvd2VicnRjL3BjL2NyZWF0ZXBlZXJjb25uZWN0aW9uZmFjdG9yeS5j
YwogICAgIFNvdXJjZS93ZWJydGMvcGMvZGF0YWNoYW5uZWwuY2MKICAgICBTb3VyY2Uvd2VicnRj
L3BjL2R0bHNzcnRwdHJhbnNwb3J0LmNjCiAgICAgU291cmNlL3dlYnJ0Yy9wYy9kdG1mc2VuZGVy
LmNjCkBAIC0xMTk5LDIwICsxMjAxLDIyIEBAIHNldCh3ZWJydGNfU09VUkNFUwogICAgIFNvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnRfdHJhY2VyLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZXhwZXJpbWVudHMvY29uZ2VzdGlvbl9jb250cm9sbGVyX2V4cGVyaW1lbnQuY2MKKyAg
ICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBlcmltZW50
LmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9w
YXJzZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3Ry
aWFsX3VuaXRzLmNjCisgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9qaXR0
ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYworICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
ZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuY2MKICAgICBT
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL3F1YWxpdHlfc2NhbGluZ19leHBlcmlt
ZW50LmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9ydHRfbXVsdF9l
eHBlcmltZW50LmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlLmNjCiAgICAgU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlX3Bvc2l4LmNjCi0gICAgU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9maWxlcm90YXRpbmdzdHJlYW0uY2MKLSAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zp
bGV1dGlscy5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlyZXdhbGxzb2NrZXRzZXJ2
ZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjCiAgICAgU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9oZWxwZXJzLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9odHRw
Y29tbW9uLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9pZmFkZHJzX2NvbnZlcnRlci5j
YwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaXBhZGRyZXNzLmNjCisgICAgU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9rZXlfZGVyaXZhdGlvbi5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbG9jYXRpb24uY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ3NpbmtzLmNjCiAg
ICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmNjCkBAIC0xMjI4LDEwICsxMjMyLDEx
IEBAIHNldCh3ZWJydGNfU09VUkNFUwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVs
cGVycy5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29yay5jYwogICAgIFNvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29ya21vbml0b3IuY2MKLSAgICBTb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL25vb3AuY2MKKyAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsvc2VudF9w
YWNrZXQuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIuY2MK
ICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL2V4cF9maWx0ZXIuY2MKICAgICBT
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL2hpc3RvZ3JhbV9wZXJjZW50aWxlX2NvdW50
ZXIuY2MKKyAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdl
LmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9zYW1wbGVfY291bnRlci5j
YwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuY2MKICAgICBTb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5jYwpAQCAtMTI0MCw4ICsxMjQ1
LDcgQEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVu
c3Nsc2Vzc2lvbmNhY2hlLmNjCiAgICAgU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Nsc3Ry
ZWFtYWRhcHRlci5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHku
Y2MKLSAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wdGlvbnNmaWxlLmNjCi0gICAgU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHMuY2MKKyAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L29wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5jYwogICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Bs
YXRmb3JtX2ZpbGUuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BsYXRmb3JtX3RocmVh
ZC5jYwpAQCAtMTI4NSw3ICsxMjg5LDYgQEAgc2V0KHdlYnJ0Y19TT1VSQ0VTCiAgICAgU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS90aW1lL3RpbWVzdGFtcF9leHRyYXBvbGF0b3IuY2MKICAgICBTb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3RpbWVzdGFtcGFsaWduZXIuY2MKICAgICBTb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3RpbWV1dGlscy5jYwotICAgIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5peGZp
bGVzeXN0ZW0uY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2
ZXIuY2MKICAgICBTb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dlYWtfcHRyLmNjCiAgICAgU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS96ZXJvX21lbW9yeS5jYwpAQCAtMTMwOCw2ICsxMzExLDcgQEAgc2V0
KHdlYnJ0Y19TT1VSQ0VTCiAgICAgU291cmNlL3dlYnJ0Yy92aWRlby9jYWxsX3N0YXRzLmNjCiAg
ICAgU291cmNlL3dlYnJ0Yy92aWRlby9lbmNvZGVyX3J0Y3BfZmVlZGJhY2suY2MKICAgICBTb3Vy
Y2Uvd2VicnRjL3ZpZGVvL292ZXJ1c2VfZnJhbWVfZGV0ZWN0b3IuY2MKKyAgICBTb3VyY2Uvd2Vi
cnRjL3ZpZGVvL2ZyYW1lX2R1bXBpbmdfZGVjb2Rlci5jYwogICAgIFNvdXJjZS93ZWJydGMvdmlk
ZW8vcXVhbGl0eV90aHJlc2hvbGQuY2MKICAgICBTb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVf
c3RhdGlzdGljc19wcm94eS5jYwogICAgIFNvdXJjZS93ZWJydGMvdmlkZW8vcmVwb3J0X2Jsb2Nr
X3N0YXRzLmNjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKaW5kZXggZDk1ZDUxZWEwYzgxN2FkMDZh
Y2U4MGVhMmQwMjZjNDgzYWU3YjJhYi4uNjIyODZlZGM1NTJkYWFkZDI5ZDMxNDM3Mzg1MDcxNzU1
NjRkZWViOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cApAQCAtMjE4LDcgKzIxOCw2IEBAIF9f
Wk5LNndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTlpbml0X3NlbmRfZW5jb2RpbmdzRXYKIF9f
Wk5LNndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTdHZXRGcmFtZUVuY3J5cHRvckV2CiBfX1pO
NndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTdTZXRGcmFtZUVuY3J5cHRvckVOM3J0YzEzc2Nv
cGVkX3JlZnB0cklOU18yM0ZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlRUVFCiBfX1pONndlYnJ0YzMw
UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlMTdDcmVhdGVWaWRlb1NvdXJjZUVOU3QzX18x
MTB1bmlxdWVfcHRySU43Y3JpY2tldDEzVmlkZW9DYXB0dXJlckVOUzFfMTRkZWZhdWx0X2RlbGV0
ZUlTNF9FRUVFCi1fX1pOSzNydGMxNE5ldHdvcmtNYW5hZ2VyMTZHZXRNRG5zUmVzcG9uZGVyRXYK
IF9fWlRWTjZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFjZUUKIF9fWk4zcnRjMjNSVENDZXJ0aWZp
Y2F0ZUdlbmVyYXRvckMxRVBOU182VGhyZWFkRVMyXwogX19aTjNydGM5S2V5UGFyYW1zM1JTQUVp
aQpAQCAtMjMzLDMgKzIzMiw5IEBAIF9fWk42d2VicnRjMjZQZWVyQ29ubmVjdGlvbkRlcGVuZGVu
Y2llc0MxRVBOU18yMlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXJFCiBfX1pONndlYnJ0YzMwUGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlMjBDcmVhdGVQZWVyQ29ubmVjdGlvbkVSS05TXzIzUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2UxNlJUQ0NvbmZpZ3VyYXRpb25FTlN0M19fMTEwdW5pcXVlX3B0
cklON2NyaWNrZXQxM1BvcnRBbGxvY2F0b3JFTlM1XzE0ZGVmYXVsdF9kZWxldGVJUzhfRUVFRU5T
Nl9JTjNydGMzMlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9ySW50ZXJmYWNlRU5TOV9JU0RfRUVFRVBO
U18yMlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXJFCiBfX1pONndlYnJ0YzI5U2V0U2Vzc2lvbkRlc2Ny
aXB0aW9uT2JzZXJ2ZXI5T25GYWlsdXJlRVJLTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzFfMTFj
aGFyX3RyYWl0c0ljRUVOUzFfOWFsbG9jYXRvckljRUVFRQogX19aTjZ3ZWJydGMzMkNyZWF0ZVNl
c3Npb25EZXNjcmlwdGlvbk9ic2VydmVyOU9uRmFpbHVyZUVSS05TdDNfXzExMmJhc2ljX3N0cmlu
Z0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMxXzlhbGxvY2F0b3JJY0VFRUUKK19fWk42d2VicnRj
MTNDcnlwdG9PcHRpb25zQzFFUktTMF8KK19fWk42d2VicnRjMTNDcnlwdG9PcHRpb25zRDFFdgor
X19aTks2d2VicnRjMjBBdWRpb1NvdXJjZUludGVyZmFjZTdvcHRpb25zRXYKK19fWlRWTjZ3ZWJy
dGMyMEF1ZGlvU291cmNlSW50ZXJmYWNlRQorX19aTjZ3ZWJydGMyM1BlZXJDb25uZWN0aW9uSW50
ZXJmYWNlMjFwZWVyX2Nvbm5lY3Rpb25fc3RhdGVFdgorX19aTkszcnRjMTROZXR3b3JrTWFuYWdl
cjE2R2V0TWRuc1Jlc3BvbmRlckV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXgg
MTlkMGZlNmIyMDFkOTZjYmZkMWMxYzFkMDg2NzQwOTc3MTA3YTZmMC4uZTMxMjZiZjA2ZmQ5ODcw
YWE5ZjNmOTljNDc1M2NlMWM4MDEzOGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4
cApAQCAtMjE5LDcgKzIxOSw2IEBAIF9fWk5LNndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTlp
bml0X3NlbmRfZW5jb2RpbmdzRXYKIF9fWk5LNndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTdH
ZXRGcmFtZUVuY3J5cHRvckV2CiBfX1pONndlYnJ0YzE4UnRwU2VuZGVySW50ZXJmYWNlMTdTZXRG
cmFtZUVuY3J5cHRvckVOM3J0YzEzc2NvcGVkX3JlZnB0cklOU18yM0ZyYW1lRW5jcnlwdG9ySW50
ZXJmYWNlRUVFCiBfX1pONndlYnJ0YzMwUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlMTdD
cmVhdGVWaWRlb1NvdXJjZUVOU3QzX18xMTB1bmlxdWVfcHRySU43Y3JpY2tldDEzVmlkZW9DYXB0
dXJlckVOUzFfMTRkZWZhdWx0X2RlbGV0ZUlTNF9FRUVFCi1fX1pOSzNydGMxNE5ldHdvcmtNYW5h
Z2VyMTZHZXRNRG5zUmVzcG9uZGVyRXYKIF9fWlRWTjZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFj
ZUUKIF9fWk4zcnRjMjNSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvckMxRVBOU182VGhyZWFkRVMyXwog
X19aTjNydGM5S2V5UGFyYW1zM1JTQUVpaQpAQCAtMjM0LDMgKzIzMyw5IEBAIF9fWk42d2VicnRj
MjZQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llc0MxRVBOU18yMlBlZXJDb25uZWN0aW9uT2JzZXJ2
ZXJFCiBfX1pONndlYnJ0YzMwUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlMjBDcmVhdGVQ
ZWVyQ29ubmVjdGlvbkVSS05TXzIzUGVlckNvbm5lY3Rpb25JbnRlcmZhY2UxNlJUQ0NvbmZpZ3Vy
YXRpb25FTlN0M19fMTEwdW5pcXVlX3B0cklON2NyaWNrZXQxM1BvcnRBbGxvY2F0b3JFTlM1XzE0
ZGVmYXVsdF9kZWxldGVJUzhfRUVFRU5TNl9JTjNydGMzMlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9y
SW50ZXJmYWNlRU5TOV9JU0RfRUVFRVBOU18yMlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXJFCiBfX1pO
NndlYnJ0YzI5U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI5T25GYWlsdXJlRVJLTlN0M19f
MTEyYmFzaWNfc3RyaW5nSWNOUzFfMTFjaGFyX3RyYWl0c0ljRUVOUzFfOWFsbG9jYXRvckljRUVF
RQogX19aTjZ3ZWJydGMzMkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyOU9uRmFpbHVy
ZUVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMxXzlhbGxv
Y2F0b3JJY0VFRUUKK19fWk42d2VicnRjMTNDcnlwdG9PcHRpb25zQzFFUktTMF8KK19fWk42d2Vi
cnRjMTNDcnlwdG9PcHRpb25zRDFFdgorX19aTks2d2VicnRjMjBBdWRpb1NvdXJjZUludGVyZmFj
ZTdvcHRpb25zRXYKK19fWlRWTjZ3ZWJydGMyMEF1ZGlvU291cmNlSW50ZXJmYWNlRQorX19aTjZ3
ZWJydGMyM1BlZXJDb25uZWN0aW9uSW50ZXJmYWNlMjFwZWVyX2Nvbm5lY3Rpb25fc3RhdGVFdgor
X19aTkszcnRjMTROZXR3b3JrTWFuYWdlcjE2R2V0TWRuc1Jlc3BvbmRlckV2CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1h
Yy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLm1hYy5leHAKaW5kZXggMTlkMGZlNmIyMDFkOTZjYmZkMWMxYzFkMDg2NzQwOTc3MTA3YTZm
MC4uZTMxMjZiZjA2ZmQ5ODcwYWE5ZjNmOTljNDc1M2NlMWM4MDEzOGM4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMu
ZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMubWFjLmV4cApAQCAtMjE5LDcgKzIxOSw2IEBAIF9fWk5LNndlYnJ0YzE4UnRwU2VuZGVy
SW50ZXJmYWNlMTlpbml0X3NlbmRfZW5jb2RpbmdzRXYKIF9fWk5LNndlYnJ0YzE4UnRwU2VuZGVy
SW50ZXJmYWNlMTdHZXRGcmFtZUVuY3J5cHRvckV2CiBfX1pONndlYnJ0YzE4UnRwU2VuZGVySW50
ZXJmYWNlMTdTZXRGcmFtZUVuY3J5cHRvckVOM3J0YzEzc2NvcGVkX3JlZnB0cklOU18yM0ZyYW1l
RW5jcnlwdG9ySW50ZXJmYWNlRUVFCiBfX1pONndlYnJ0YzMwUGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlMTdDcmVhdGVWaWRlb1NvdXJjZUVOU3QzX18xMTB1bmlxdWVfcHRySU43Y3JpY2tl
dDEzVmlkZW9DYXB0dXJlckVOUzFfMTRkZWZhdWx0X2RlbGV0ZUlTNF9FRUVFCi1fX1pOSzNydGMx
NE5ldHdvcmtNYW5hZ2VyMTZHZXRNRG5zUmVzcG9uZGVyRXYKIF9fWlRWTjZ3ZWJydGMxOFJ0cFNl
bmRlckludGVyZmFjZUUKIF9fWk4zcnRjMjNSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvckMxRVBOU182
VGhyZWFkRVMyXwogX19aTjNydGM5S2V5UGFyYW1zM1JTQUVpaQpAQCAtMjM0LDMgKzIzMyw5IEBA
IF9fWk42d2VicnRjMjZQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llc0MxRVBOU18yMlBlZXJDb25u
ZWN0aW9uT2JzZXJ2ZXJFCiBfX1pONndlYnJ0YzMwUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJm
YWNlMjBDcmVhdGVQZWVyQ29ubmVjdGlvbkVSS05TXzIzUGVlckNvbm5lY3Rpb25JbnRlcmZhY2Ux
NlJUQ0NvbmZpZ3VyYXRpb25FTlN0M19fMTEwdW5pcXVlX3B0cklON2NyaWNrZXQxM1BvcnRBbGxv
Y2F0b3JFTlM1XzE0ZGVmYXVsdF9kZWxldGVJUzhfRUVFRU5TNl9JTjNydGMzMlJUQ0NlcnRpZmlj
YXRlR2VuZXJhdG9ySW50ZXJmYWNlRU5TOV9JU0RfRUVFRVBOU18yMlBlZXJDb25uZWN0aW9uT2Jz
ZXJ2ZXJFCiBfX1pONndlYnJ0YzI5U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI5T25GYWls
dXJlRVJLTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzFfMTFjaGFyX3RyYWl0c0ljRUVOUzFfOWFs
bG9jYXRvckljRUVFRQogX19aTjZ3ZWJydGMzMkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2Vy
dmVyOU9uRmFpbHVyZUVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJ
Y0VFTlMxXzlhbGxvY2F0b3JJY0VFRUUKK19fWk42d2VicnRjMTNDcnlwdG9PcHRpb25zQzFFUktT
MF8KK19fWk42d2VicnRjMTNDcnlwdG9PcHRpb25zRDFFdgorX19aTks2d2VicnRjMjBBdWRpb1Nv
dXJjZUludGVyZmFjZTdvcHRpb25zRXYKK19fWlRWTjZ3ZWJydGMyMEF1ZGlvU291cmNlSW50ZXJm
YWNlRQorX19aTjZ3ZWJydGMyM1BlZXJDb25uZWN0aW9uSW50ZXJmYWNlMjFwZWVyX2Nvbm5lY3Rp
b25fc3RhdGVFdgorX19aTkszcnRjMTROZXR3b3JrTWFuYWdlcjE2R2V0TWRuc1Jlc3BvbmRlckV2
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMv
bGlid2VicnRjLnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy54Y2NvbmZpZwppbmRleCAyZGNmMDM5MDc5ZmExOTQyN2QwOWQ4MDg4
MmI4YTdjM2NhMTVkOTg4Li41NzU5OWZjZGZjOTQ0ZTFjZjE2ODZmZTYzNWQxNDg5N2EyZDNiMDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMv
bGlid2VicnRjLnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMueGNjb25maWcKQEAgLTMyLDggKzMyLDggQEAgR0NDX1BSRVBS
T0NFU1NPUl9ERUZJTklUSU9OU1tzZGs9bWFjb3N4Kl0gPSAkKGluaGVyaXRlZCkgV0VCUlRDX1VT
RV9WVEJfSEFSRFdBUkUKIEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlNbc2RrPWlwaG9uZW9z
Kl0gPSAkKGluaGVyaXRlZCkgV0VCUlRDX0lPUzsKIEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElP
TlNbc2RrPWlwaG9uZXNpbXVsYXRvcipdID0gJChpbmhlcml0ZWQpIFdFQlJUQ19JT1M7CiAKLUVY
Q0xVREVEX1NPVVJDRV9GSUxFX05BTUVTW3Nkaz1pcGhvbmVvcypdID0gKl9zc2UuY2MgKl9zc2Uy
LmNjIG1hY3V0aWxzLmNjIG1hY3dpbmRvd3BpY2tlci5jYyBhdWRpb19kZXZpY2VfbWFjLmNjIGF1
ZGlvX21peGVyX21hbmFnZXJfbWFjLmNjOwotRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNbc2Rr
PWlwaG9uZXNpbXVsYXRvcipdID0gbWFjdXRpbHMuY2MgbWFjd2luZG93cGlja2VyLmNjIGF1ZGlv
X2RldmljZV9tYWMuY2MgYXVkaW9fbWl4ZXJfbWFuYWdlcl9tYWMuY2M7CitFWENMVURFRF9TT1VS
Q0VfRklMRV9OQU1FU1tzZGs9aXBob25lb3MqXSA9ICpfc3NlLmNjICpfc3NlMi5jYyBtYWN1dGls
cy5jYyBtYWN3aW5kb3dwaWNrZXIuY2MgYXVkaW9fZGV2aWNlX21hYy5jYyBhdWRpb19taXhlcl9t
YW5hZ2VyX21hYy5jYyBsb2dnaW5nX21hYy5tbTsKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVT
W3Nkaz1pcGhvbmVzaW11bGF0b3IqXSA9IG1hY3V0aWxzLmNjIG1hY3dpbmRvd3BpY2tlci5jYyBh
dWRpb19kZXZpY2VfbWFjLmNjIGF1ZGlvX21peGVyX21hbmFnZXJfbWFjLmNjIGxvZ2dpbmdfbWFj
Lm1tOwogRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNbc2RrPW1hY29zeCpdID0gdm9pY2VfcHJv
Y2Vzc2luZ19hdWRpb191bml0Lm1tOwogCiBPVEhFUl9MREZMQUdTW3Nkaz1tYWNvc3gxMC4xMypd
ID0gJChpbmhlcml0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlL0Fic2VpbEhlbHBlcnMuY21ha2Ug
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvQ01ha2UvQWJzZWlsSGVscGVycy5jbWFrZQppbmRleCBlNGVhZmU0OWU0NzkwNjUxNWU0NDhh
MmRlZjU5Zjc2MjliMmJhMzkzLi4wYzkzNDE3NDc1MTJjZWI2MTczNTQxYzdmNGEyNjY3YTE1YjU3
NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvQ01ha2UvQWJzZWlsSGVscGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2Uv
QWJzZWlsSGVscGVycy5jbWFrZQpAQCAtMTIzLDcgKzEyMyw3IEBAIGVuZGZ1bmN0aW9uKCkKICMK
ICMgYWxsIHRlc3RzIHdpbGwgYmUgcmVnaXN0ZXIgZm9yIGV4ZWN1dGlvbiB3aXRoIGFkZF90ZXN0
KCkKICMKLSMgdGVzdCBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uIGlzIGRpc2FibGUgd2hlbiBC
VUlMRF9URVNUSU5HPU9GRgorIyB0ZXN0IGNvbXBpbGF0aW9uIGFuZCBleGVjdXRpb24gaXMgZGlz
YWJsZSB3aGVuIEFCU0xfUlVOX1RFU1RTPU9GRgogIwogZnVuY3Rpb24oYWJzbF90ZXN0KQogCkBA
IC0xMzUsNyArMTM1LDcgQEAgZnVuY3Rpb24oYWJzbF90ZXN0KQogICApCiAKIAotICBpZihCVUlM
RF9URVNUSU5HKQorICBpZihBQlNMX1JVTl9URVNUUykKIAogICAgIHNldChfTkFNRSAke0FCU0xf
VEVTVF9UQVJHRVR9KQogICAgIHN0cmluZyhUT1VQUEVSICR7X05BTUV9IF9VUFBFUl9OQU1FKQpA
QCAtMTUzLDcgKzE1Myw3IEBAIGZ1bmN0aW9uKGFic2xfdGVzdCkKICAgICBzZXRfcHJvcGVydHko
VEFSR0VUICR7X05BTUV9X2JpbiBQUk9QRVJUWSBGT0xERVIgJHtBQlNMX0lERV9GT0xERVJ9KQog
CiAgICAgYWRkX3Rlc3QoJHtfTkFNRX0gJHtfTkFNRX1fYmluKQotICBlbmRpZihCVUlMRF9URVNU
SU5HKQorICBlbmRpZihBQlNMX1JVTl9URVNUUykKIAogZW5kZnVuY3Rpb24oKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvQ01ha2VMaXN0cy50eHQKaW5kZXggODlhMzM4NmY3ZTI1
OGVmYzk3MzliMzUxNzU2NmM1OTFmMDJhZGU3ZS4uOWE3ZTEwMzFiMjM1MTEwNGUzZWM4MzIxMTRh
OGQ2Yjc1ZDU1MDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9DTWFrZUxp
c3RzLnR4dApAQCAtMzIsNyArMzIsNyBAQCBpZiAoTVNWQykKICAgIyAvd2Q0MjQ0ICBjb252ZXJz
aW9uIGZyb20gJ3R5cGUxJyB0byAndHlwZTInCiAgICMgL3dkNDI2NyAgY29udmVyc2lvbiBmcm9t
ICdzaXplX3QnIHRvICd0eXBlMicKICAgIyAvd2Q0ODAwICBmb3JjZSB2YWx1ZSB0byBib29sICd0
cnVlJyBvciAnZmFsc2UnIChwZXJmb3JtYW5jZSB3YXJuaW5nKQotICBhZGRfY29tcGlsZV9vcHRp
b25zKC9XMyAvV1ggL3dkNDAwNSAvd2Q0MDY4IC93ZDQyNDQgL3dkNDI2NyAvd2Q0ODAwKQorICBh
ZGRfY29tcGlsZV9vcHRpb25zKC9XMyAvd2Q0MDA1IC93ZDQwNjggL3dkNDI0NCAvd2Q0MjY3IC93
ZDQ4MDApCiAgIGFkZF9kZWZpbml0aW9ucygvRE5PTUlOTUFYIC9EV0lOMzJfTEVBTl9BTkRfTUVB
Tj0xIC9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUykK
IGVsc2UoKQogICBzZXQoQUJTTF9TVERfQ1hYX0ZMQUcgIi1zdGQ9YysrMTEiIENBQ0hFIFNUUklO
RyAiYysrIHN0ZCBmbGFnIChkZWZhdWx0OiBjKysxMSkiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09XTkVSUyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9PV05FUlMKaW5kZXggY2VjYTRhOGJhMmNiMTZiZDhkMWQ3ODMzYmVkZjc4ZTZmMDljOTNhMS4u
MzhlYmFmMjI5NWQxYTYxNjA1NjY1MDQwM2FiYjg5YTA5MjgwZGQxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL09X
TkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvT1dORVJTCkBAIC0xLDIgKzEsNCBAQAorZGFuaWxjaGFwQGNocm9taXVtLm9y
Zwora3dpYmVyZ0BjaHJvbWl1bS5vcmcKIG1ib25hZGVpQGNocm9taXVtLm9yZwogcGhvZ2x1bmRA
Y2hyb21pdW0ub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvUkVBRE1FLmNocm9taXVtIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1JFQURNRS5jaHJv
bWl1bQppbmRleCA5MWQ2ZDM4MWE0NzcwNDQ1MGI1OTlhMDA5ZjA0OWM3MDdiMWE5MjMyLi42MDI2
YTJmNGUyMDYxM2VkYjUzZTE2OGJmYjQzOGYyMGZlNGMxZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvUkVBRE1F
LmNocm9taXVtCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9SRUFETUUuY2hyb21pdW0KQEAgLTQsNyArNCw3IEBAIFVSTDogaHR0
cHM6Ly9naXRodWIuY29tL2Fic2VpbC9hYnNlaWwtY3BwCiBMaWNlbnNlOiBBcGFjaGUgMi4wCiBM
aWNlbnNlIEZpbGU6IExJQ0VOU0UKIFZlcnNpb246IDAKLVJldmlzaW9uOiBiZWE4NWI1MjczMzAy
MjI5NGVlZjEwOGEyZTQyZDc3YjYxNmRkY2EyCitSZXZpc2lvbjogZmI0NjIyMjRjMDU4NDg3NzYz
ZjI2M2I3OTk1ZDcwZWZkMDI0MmMxNwogU2VjdXJpdHkgQ3JpdGljYWw6IHllcwogCiBEZXNjcmlw
dGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9XT1JLU1BBQ0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvV09SS1NQQUNFCmluZGV4IGU0YTkxMTk3
OGRjNjgyNTY5NWEyODQxM2JkZmEyMzU1YWNjZGEyN2QuLjcyZWYxMzk4MGMyOTI2MzgzMmNiYjIy
Zjk4Zjc5YWU4NTk4MjFmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9XT1JLU1BBQ0UKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL1dPUktTUEFD
RQpAQCAtNSwxMSArNSwxMSBAQCBsb2FkKCJAYmF6ZWxfdG9vbHMvL3Rvb2xzL2J1aWxkX2RlZnMv
cmVwbzpodHRwLmJ6bCIsICJodHRwX2FyY2hpdmUiKQogaHR0cF9hcmNoaXZlKAogICBuYW1lID0g
ImJhemVsX3Rvb2xjaGFpbnMiLAogICB1cmxzID0gWwotICAgICJodHRwczovL21pcnJvci5iYXpl
bC5idWlsZC9naXRodWIuY29tL2JhemVsYnVpbGQvYmF6ZWwtdG9vbGNoYWlucy9hcmNoaXZlLzI4
N2I2NGUwYTIxMWZiN2MyM2I3NDY5NWY4ZDVmNTIwNWI2MWY0ZWIudGFyLmd6IiwKLSAgICAiaHR0
cHM6Ly9naXRodWIuY29tL2JhemVsYnVpbGQvYmF6ZWwtdG9vbGNoYWlucy9hcmNoaXZlLzI4N2I2
NGUwYTIxMWZiN2MyM2I3NDY5NWY4ZDVmNTIwNWI2MWY0ZWIudGFyLmd6IiwKKyAgICAiaHR0cHM6
Ly9taXJyb3IuYmF6ZWwuYnVpbGQvZ2l0aHViLmNvbS9iYXplbGJ1aWxkL2JhemVsLXRvb2xjaGFp
bnMvYXJjaGl2ZS9iYzA5Yjk5NWMxMzdkZjA0MmJiODBhMzk1YjczZDdjZTZmMjZhZmJlLnRhci5n
eiIsCisgICAgImh0dHBzOi8vZ2l0aHViLmNvbS9iYXplbGJ1aWxkL2JhemVsLXRvb2xjaGFpbnMv
YXJjaGl2ZS9iYzA5Yjk5NWMxMzdkZjA0MmJiODBhMzk1YjczZDdjZTZmMjZhZmJlLnRhci5neiIs
CiAgIF0sCi0gIHN0cmlwX3ByZWZpeCA9ICJiYXplbC10b29sY2hhaW5zLTI4N2I2NGUwYTIxMWZi
N2MyM2I3NDY5NWY4ZDVmNTIwNWI2MWY0ZWIiLAotICBzaGEyNTYgPSAiYWNhOGFjNmFmZDc3NDUw
MjdlZTRhNDMwMzJiNTFhNzI1YTYxYTc1YTMwZjAyY2M1ODY4MWVlODdlNGRjZGY0YiIsCisgIHN0
cmlwX3ByZWZpeCA9ICJiYXplbC10b29sY2hhaW5zLWJjMDliOTk1YzEzN2RmMDQyYmI4MGEzOTVi
NzNkN2NlNmYyNmFmYmUiLAorICBzaGEyNTYgPSAiNDMyOTY2M2ZlNmM1MjM0MjVhZDRkM2M5ODlh
OGFjMDI2YjA0ZTFhY2VkZWNlYjU2YWE0YjE5MGZhN2YzOTczYyIsCiApCiAKICMgR29vZ2xlVGVz
dC9Hb29nbGVNb2NrIGZyYW1ld29yay4gVXNlZCBieSBtb3N0IHVuaXQtdGVzdHMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL0NNYWtlTGlzdHMudHh0CmluZGV4IDY4
OWY2NGUyNThiYWFjOTkyMDFjZmE3ODk0ZGJjYjgwNTQyNDA4ZGYuLjFkMDliMTkzNWQ4NDczNWQ2
ZGM5MDc0MmE2NDViMjg4NTBhZWVjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL0NNYWtlTGlzdHMudHh0CkBAIC0yMCw2ICsyMCw3IEBAIGFkZF9zdWJkaXJl
Y3RvcnkoYmFzZSkKIGFkZF9zdWJkaXJlY3RvcnkoYWxnb3JpdGhtKQogYWRkX3N1YmRpcmVjdG9y
eShjb250YWluZXIpCiBhZGRfc3ViZGlyZWN0b3J5KGRlYnVnZ2luZykKK2FkZF9zdWJkaXJlY3Rv
cnkoaGFzaCkKIGFkZF9zdWJkaXJlY3RvcnkobWVtb3J5KQogYWRkX3N1YmRpcmVjdG9yeShtZXRh
KQogYWRkX3N1YmRpcmVjdG9yeShudW1lcmljKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGht
L2NvbnRhaW5lci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2NvbnRhaW5lci5oCmluZGV4IDZhZjhjMDk3
OTllNTZmMjIzYWQzZWVjYTI0NmQ4M2FiMDcwNjNhMTkuLjUzYWIxNTY4NmM2ZTEwZTYyMTdlZDQ3
YjBiNGQ3YTMzMzc1NjgwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWluZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyLmgKQEAgLTQ5NCw3ICs0OTQsNyBAQCBC
aWRpcmVjdGlvbmFsSXRlcmF0b3IgY19jb3B5X2JhY2t3YXJkKGNvbnN0IEMmIHNyYywKIC8vIENv
bnRhaW5lci1iYXNlZCB2ZXJzaW9uIG9mIHRoZSA8YWxnb3JpdGhtPiBgc3RkOjptb3ZlKClgIGZ1
bmN0aW9uIHRvIG1vdmUKIC8vIGEgY29udGFpbmVyJ3MgZWxlbWVudHMgaW50byBhbiBpdGVyYXRv
ci4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KLU91dHB1
dEl0ZXJhdG9yIGNfbW92ZShDJiBzcmMsIE91dHB1dEl0ZXJhdG9yIGRlc3QpIHsKK091dHB1dEl0
ZXJhdG9yIGNfbW92ZShDJiYgc3JjLCBPdXRwdXRJdGVyYXRvciBkZXN0KSB7CiAgIHJldHVybiBz
dGQ6Om1vdmUoY29udGFpbmVyX2FsZ29yaXRobV9pbnRlcm5hbDo6Y19iZWdpbihzcmMpLAogICAg
ICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9hbGdvcml0aG1faW50ZXJuYWw6OmNfZW5kKHNyYyks
IGRlc3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYWxnb3JpdGhtL2NvbnRhaW5lcl90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYWxnb3JpdGhtL2NvbnRhaW5lcl90ZXN0LmNjCmluZGV4IGRlNjZmMTQ2ODBmMWI4
ZjIyZDJlOTY1ZDQ0MWEwNWVmYzU4YTZjMDMuLjE1MDJiMTdmODYzNmIwZDVlZGVjOWZhNDUzNWM2
ZThiODBkMzUwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2FsZ29yaXRobS9jb250YWluZXJfdGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9hbGdvcml0aG0vY29udGFpbmVyX3Rlc3QuY2MKQEAgLTYzNiw2ICs2MzYs
MjEgQEAgVEVTVChNdXRhdGluZ1Rlc3QsIE1vdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUG9pbnRlZSg1KSkpOwogfQogCitURVNUKE11dGF0aW5nVGVzdCwgTW92ZVdpdGhS
dmFsdWUpIHsKKyAgYXV0byBNYWtlUlZhbHVlU3JjID0gW10geworICAgIHN0ZDo6dmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxpbnQ+PiBzcmM7CisgICAgc3JjLmVtcGxhY2VfYmFjayhhYnNsOjptYWtl
X3VuaXF1ZTxpbnQ+KDEpKTsKKyAgICBzcmMuZW1wbGFjZV9iYWNrKGFic2w6Om1ha2VfdW5pcXVl
PGludD4oMikpOworICAgIHNyYy5lbXBsYWNlX2JhY2soYWJzbDo6bWFrZV91bmlxdWU8aW50Pigz
KSk7CisgICAgcmV0dXJuIHNyYzsKKyAgfTsKKworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8aW50Pj4gZGVzdCA9IE1ha2VSVmFsdWVTcmMoKTsKKyAgYWJzbDo6Y19tb3ZlKE1ha2VSVmFs
dWVTcmMoKSwgc3RkOjpiYWNrX2luc2VydGVyKGRlc3QpKTsKKyAgRVhQRUNUX1RIQVQoZGVzdCwg
RWxlbWVudHNBcmUoUG9pbnRlZSgxKSwgUG9pbnRlZSgyKSwgUG9pbnRlZSgzKSwgUG9pbnRlZSgx
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRlZSgyKSwgUG9pbnRlZSgz
KSkpOworfQorCiBURVNUKE11dGF0aW5nVGVzdCwgU3dhcFJhbmdlcykgewogICBzdGQ6OnZlY3Rv
cjxpbnQ+IG9kZHMgPSB7MiwgNCwgNn07CiAgIHN0ZDo6dmVjdG9yPGludD4gZXZlbnMgPSB7MSwg
MywgNX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9C
VUlMRC5iYXplbAppbmRleCAwNmQwOTJlYmRmYTgzYWJmOTI0YmIzZWUwMzI2OTQyNTliMmU0YjJk
Li5mN2Q4MTAxMzViOGNjYzVmYjA1ZGU0YWI3MjVkNmMxY2Q4ZGYzYTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9iYXNlL0JVSUxELmJhemVsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuYmF6ZWwKQEAgLTE5
LDYgKzE5LDcgQEAgbG9hZCgKICAgICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwKICAgICAiQUJTTF9U
RVNUX0NPUFRTIiwKICAgICAiQUJTTF9FWENFUFRJT05TX0ZMQUciLAorICAgICJBQlNMX0VYQ0VQ
VElPTlNfRkxBR19MSU5LT1BUUyIsCiApCiAKIHBhY2thZ2UoZGVmYXVsdF92aXNpYmlsaXR5ID0g
WyIvL3Zpc2liaWxpdHk6cHVibGljIl0pCkBAIC0yOSw2ICszMCw3IEBAIGNjX2xpYnJhcnkoCiAg
ICAgbmFtZSA9ICJzcGlubG9ja193YWl0IiwKICAgICBzcmNzID0gWwogICAgICAgICAiaW50ZXJu
YWwvc3BpbmxvY2tfYWthcm9zLmluYyIsCisgICAgICAgICJpbnRlcm5hbC9zcGlubG9ja19saW51
eC5pbmMiLAogICAgICAgICAiaW50ZXJuYWwvc3BpbmxvY2tfcG9zaXguaW5jIiwKICAgICAgICAg
ImludGVybmFsL3NwaW5sb2NrX3dhaXQuY2MiLAogICAgICAgICAiaW50ZXJuYWwvc3BpbmxvY2tf
d2luMzIuaW5jIiwKQEAgLTE3OSw2ICsxODEsNyBAQCBjY19saWJyYXJ5KAogICAgIHNyY3MgPSBb
ImludGVybmFsL3Rocm93X2RlbGVnYXRlLmNjIl0sCiAgICAgaGRycyA9IFsiaW50ZXJuYWwvdGhy
b3dfZGVsZWdhdGUuaCJdLAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTICsgQUJTTF9F
WENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5L
T1BUUywKICAgICB2aXNpYmlsaXR5ID0gWwogICAgICAgICAiLy9hYnNsOl9fc3VicGFja2FnZXNf
XyIsCiAgICAgXSwKQEAgLTE5Myw2ICsxOTYsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAidGhy
b3dfZGVsZWdhdGVfdGVzdCIsCiAgICAgc3JjcyA9IFsidGhyb3dfZGVsZWdhdGVfdGVzdC5jYyJd
LAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCisg
ICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKICAgICBkZXBzID0g
WwogICAgICAgICAiOnRocm93X2RlbGVnYXRlIiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2ds
ZXRlc3QvLzpndGVzdF9tYWluIiwKQEAgLTIyNSw2ICsyMjksNyBAQCBjY19saWJyYXJ5KAogICAg
IHNyY3MgPSBbImludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5jYyJdLAogICAgIGhk
cnMgPSBbImludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oIl0sCiAgICAgY29wdHMg
PSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9
IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6
YmFzZSIsCiAgICAgICAgICI6Y29uZmlnIiwKQEAgLTI0MSw2ICsyNDYsNyBAQCBjY190ZXN0KAog
ICAgIG5hbWUgPSAiZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nX3Rlc3QiLAogICAgIHNyY3MgPSBb
ImV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZ190ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhD
RVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6ZXhjZXB0aW9u
X3NhZmV0eV90ZXN0aW5nIiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLApAQCAtMjk5LDYgKzMw
NSw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJtZWRpdW0iLAogICAgIHNyY3MgPSBbInNwaW5s
b2NrX3Rlc3RfY29tbW9uLmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAg
dGFncyA9IFsibm9fdGVzdF93YXNtIl0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpiYXNlIiwK
ICAgICAgICAgIjpjb3JlX2hlYWRlcnMiLApAQCAtMzM3LDYgKzM0NCw5IEBAIGNjX3Rlc3QoCiAg
ICAgbmFtZSA9ICJjb25maWdfdGVzdCIsCiAgICAgc3JjcyA9IFsiY29uZmlnX3Rlc3QuY2MiXSwK
ICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0gWworICAgICAgICAibm9f
dGVzdF93YXNtIiwKKyAgICBdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Y29uZmlnIiwKICAg
ICAgICAgIi8vYWJzbC9zeW5jaHJvbml6YXRpb246dGhyZWFkX3Bvb2wiLApAQCAtMzQ4LDYgKzM1
OCw5IEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJjYWxsX29uY2VfdGVzdCIsCiAgICAgc3JjcyA9
IFsiY2FsbF9vbmNlX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAg
ICB0YWdzID0gWworICAgICAgICAibm9fdGVzdF93YXNtIiwKKyAgICBdLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICI6YmFzZSIsCiAgICAgICAgICI6Y29yZV9oZWFkZXJzIiwKQEAgLTQwMSw2ICs0
MTQsOSBAQCBjY190ZXN0KAogICAgICAgICAiLy9hYnNsOndpbmRvd3MiOiBbXSwKICAgICAgICAg
Ii8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItcHRocmVhZCJdLAogICAgIH0pLAorICAgIHRhZ3Mg
PSBbCisgICAgICAgICJub190ZXN0X3dhc20iLAorICAgIF0sCiAgICAgZGVwcyA9IFsKICAgICAg
ICAgIjpiYXNlIiwKICAgICAgICAgIjpjb3JlX2hlYWRlcnMiLApAQCAtNDIxLDMgKzQzNywyMyBA
QCBjY190ZXN0KAogICAgICAgICAiQGNvbV9naXRodWJfZ29vZ2xlX2JlbmNobWFyay8vOmJlbmNo
bWFya19tYWluIiwKICAgICBdLAogKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiYml0cyIs
CisgICAgaGRycyA9IFsiaW50ZXJuYWwvYml0cy5oIl0sCisgICAgdmlzaWJpbGl0eSA9IFsKKyAg
ICAgICAgIi8vYWJzbDpfX3N1YnBhY2thZ2VzX18iLAorICAgIF0sCisgICAgZGVwcyA9IFsiOmNv
cmVfaGVhZGVycyJdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiYml0c190ZXN0IiwKKyAg
ICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9iaXRzX3Rlc3QuY2MiXSwK
KyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmJp
dHMiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAg
IF0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9CVUlM
RC5nbgppbmRleCBhNzE0NjU2NDYyMjkwYmNkNDBjZDQ5OTljYTFmZWYyMGM4NjM3ZTdkLi42YzU0
MGYzYjJiYjI5Y2E5NmU0NTY5NmExY2IzMzVjY2I0YTBiMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvQlVJTEQuZ24KQEAgLTIzLDYgKzIzLDcgQEAg
c291cmNlX3NldCgic3BpbmxvY2tfd2FpdCIpIHsKICAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQogICBzb3VyY2VzID0g
WwogICAgICJpbnRlcm5hbC9zcGlubG9ja19ha2Fyb3MuaW5jIiwKKyAgICAiaW50ZXJuYWwvc3Bp
bmxvY2tfbGludXguaW5jIiwKICAgICAiaW50ZXJuYWwvc3BpbmxvY2tfcG9zaXguaW5jIiwKICAg
ICAiaW50ZXJuYWwvc3BpbmxvY2tfd2FpdC5jYyIsCiAgICAgImludGVybmFsL3NwaW5sb2NrX3dp
bjMyLmluYyIsCkBAIC03MSw2ICs3Miw3IEBAIHNvdXJjZV9zZXQoImR5bmFtaWNfYW5ub3RhdGlv
bnMiKSB7CiAgIHB1YmxpYyA9IFsKICAgICAiZHluYW1pY19hbm5vdGF0aW9ucy5oIiwKICAgXQor
CiAgICMgQWJzZWlsJ3MgZHluYW1pYyBhbm5vdGF0aW9ucyBhcmUgb25seSB2aXNpYmxlIGluc2lk
ZSBBYnNlaWwgYmVjYXVzZQogICAjIHRoZWlyIHVzYWdlIGlzIGRlcHJlY2F0ZWQgaW4gQ2hyb21p
dW0gKHNlZSBSRUFETUUuY2hyb21pdW0gZm9yIG1vcmUgaW5mbykuCiAgIHZpc2liaWxpdHkgPSBb
XQpAQCAtMjk2LDMgKzI5OCwxOSBAQCBzb3VyY2Vfc2V0KCJlbmRpYW4iKSB7CiAgICAgIjpjb3Jl
X2hlYWRlcnMiLAogICBdCiB9CisKK3NvdXJjZV9zZXQoImJpdHMiKSB7CisgIGNvbmZpZ3MgLT0g
WyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9
IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQor
ICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL2JpdHMuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAg
ICAiOmNvcmVfaGVhZGVycyIsCisgIF0KKyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxpdHkg
Kz0gWyAiLi4vKiIgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2Jhc2UvQ01ha2VMaXN0cy50eHQKaW5kZXggMDFkMmFmMDg1ZjU4ZTE1ZjNlMjYzOWM1
MTZjZjY2ZDQ2ZDEyMWJlZC4uMDRhNmViMzE5NTViNjAyMjAyYWQ1OTdiYTJiMzRlYzA0YmM3ZTU1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L0NNYWtlTGlzdHMudHh0CkBAIC0zMSw2ICszMSw3IEBAIGxpc3QoQVBQRU5EIEJBU0VfUFVCTElD
X0hFQURFUlMKIAogbGlzdChBUFBFTkQgQkFTRV9JTlRFUk5BTF9IRUFERVJTCiAgICJpbnRlcm5h
bC9hdG9taWNfaG9vay5oIgorICAiaW50ZXJuYWwvYml0cy5oIgogICAiaW50ZXJuYWwvY3ljbGVj
bG9jay5oIgogICAiaW50ZXJuYWwvZGlyZWN0X21tYXAuaCIKICAgImludGVybmFsL2VuZGlhbi5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9hdHRyaWJ1dGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2F0dHJp
YnV0ZXMuaAppbmRleCBiMTg4M2I2ZDc1MmNjMTVjZDc2ZTA3OTI0MGQwODU3Y2UxOGU4ZDBhLi5l
ODUwMDIyNDQ0M2JjZTViZjY1YmE1Y2UxZmNkMDBkOGM3MDQ0YzhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9iYXNlL2F0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaApAQCAtMTAw
LDcgKzEwMCw3IEBACiAvLyBBQlNMX1BSSU5URl9BVFRSSUJVVEUKIC8vIEFCU0xfU0NBTkZfQVRU
UklCVVRFCiAvLwotLy8gVGVsbHMgdGhlIGNvbXBpbGVyIHRvIHBlcmZvcm0gYHByaW50ZmAgZm9y
bWF0IHN0ZDo6c3RyaW5nIGNoZWNraW5nIGlmIHRoZQorLy8gVGVsbHMgdGhlIGNvbXBpbGVyIHRv
IHBlcmZvcm0gYHByaW50ZmAgZm9ybWF0IHN0cmluZyBjaGVja2luZyBpZiB0aGUKIC8vIGNvbXBp
bGVyIHN1cHBvcnRzIGl0OyBzZWUgdGhlICdmb3JtYXQnIGF0dHJpYnV0ZSBpbgogLy8gPGh0dHA6
Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy00LjcuMC9nY2MvRnVuY3Rpb24tQXR0cmlidXRl
cy5odG1sPi4KIC8vCkBAIC00OTQsMTQgKzQ5NCwyNyBAQAogI2RlZmluZSBBQlNMX1hSQVlfTE9H
X0FSR1MoTikKICNlbmRpZgogCisvLyBBQlNMX0FUVFJJQlVURV9SRUlOSVRJQUxJWkVTCisvLwor
Ly8gSW5kaWNhdGVzIHRoYXQgYSBtZW1iZXIgZnVuY3Rpb24gcmVpbml0aWFsaXplcyB0aGUgZW50
aXJlIG9iamVjdCB0byBhIGtub3duCisvLyBzdGF0ZSwgaW5kZXBlbmRlbnQgb2YgdGhlIHByZXZp
b3VzIHN0YXRlIG9mIHRoZSBvYmplY3QuCisvLworLy8gVGhlIGNsYW5nLXRpZHkgY2hlY2sgYnVn
cHJvbmUtdXNlLWFmdGVyLW1vdmUgYWxsb3dzIG1lbWJlciBmdW5jdGlvbnMgbWFya2VkCisvLyB3
aXRoIHRoaXMgYXR0cmlidXRlIHRvIGJlIGNhbGxlZCBvbiBvYmplY3RzIHRoYXQgaGF2ZSBiZWVu
IG1vdmVkIGZyb207CisvLyB3aXRob3V0IHRoZSBhdHRyaWJ1dGUsIHRoaXMgd291bGQgcmVzdWx0
IGluIGEgdXNlLWFmdGVyLW1vdmUgd2FybmluZy4KKyNpZiBBQlNMX0hBVkVfQ1BQX0FUVFJJQlVU
RShjbGFuZzo6cmVpbml0aWFsaXplcykKKyNkZWZpbmUgQUJTTF9BVFRSSUJVVEVfUkVJTklUSUFM
SVpFUyBbW2NsYW5nOjpyZWluaXRpYWxpemVzXV0KKyNlbHNlCisjZGVmaW5lIEFCU0xfQVRUUklC
VVRFX1JFSU5JVElBTElaRVMKKyNlbmRpZgorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8g
VmFyaWFibGUgQXR0cmlidXRlcwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gQUJTTF9B
VFRSSUJVVEVfVU5VU0VECiAvLwotLy8gUHJldmVudHMgdGhlIGNvbXBpbGVyIGZyb20gY29tcGxh
aW5pbmcgYWJvdXQgb3Igb3B0aW1pemluZyBhd2F5IHZhcmlhYmxlcwotLy8gdGhhdCBhcHBlYXIg
dW51c2VkLgorLy8gUHJldmVudHMgdGhlIGNvbXBpbGVyIGZyb20gY29tcGxhaW5pbmcgYWJvdXQg
dmFyaWFibGVzIHRoYXQgYXBwZWFyIHVudXNlZC4KICNpZiBBQlNMX0hBVkVfQVRUUklCVVRFKHVu
dXNlZCkgfHwgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fY2xhbmdfXykpCiAjdW5k
ZWYgQUJTTF9BVFRSSUJVVEVfVU5VU0VECiAjZGVmaW5lIEFCU0xfQVRUUklCVVRFX1VOVVNFRCBf
X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uZmln
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2NvbmZpZy5oCmluZGV4IDY4OTBlMzEzYmYyN2FmN2U1ZThhNWMwNTEz
MjUwMTNlMjcyMTVhMGUuLmQ0ZWI3ZDBjYmQ3NmI3MThmNDI4OTc5ZGNlNzU1ZDczNWFmY2IwMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvY29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9jb25maWcu
aApAQCAtMTk5LDcgKzE5OSw3IEBACiAjZGVmaW5lIEFCU0xfSEFWRV9JTlRSSU5TSUNfSU5UMTI4
IDEKICNlbGlmIGRlZmluZWQoX19DVURBQ0NfXykKIC8vIF9fQ1VEQUNDX1ZFUl9fIGlzIGEgZnVs
bCB2ZXJzaW9uIG51bWJlciBiZWZvcmUgQ1VEQSA5LCBhbmQgaXMgZGVmaW5lZCB0byBhCi0vLyBz
dGQ6OnN0cmluZyBleHBsYWluaW5nIHRoYXQgaXQgaGFzIGJlZW4gcmVtb3ZlZCBzdGFydGluZyB3
aXRoIENVREEgOS4gV2UgdXNlCisvLyBzdHJpbmcgZXhwbGFpbmluZyB0aGF0IGl0IGhhcyBiZWVu
IHJlbW92ZWQgc3RhcnRpbmcgd2l0aCBDVURBIDkuIFdlIHVzZQogLy8gbmVzdGVkICNpZnMgYmVj
YXVzZSB0aGVyZSBpcyBubyBzaG9ydC1jaXJjdWl0aW5nIGluIHRoZSBwcmVwcm9jZXNzb3IuCiAv
LyBOT1RFOiBgX19DVURBQ0NfX2AgY291bGQgYmUgdW5kZWZpbmVkIHdoaWxlIGBfX0NVREFDQ19W
RVJfX2AgaXMgZGVmaW5lZC4KICNpZiBfX0NVREFDQ19WRVJfXyA+PSA3MDAwMApAQCAtNDE0LDE0
ICs0MTQsMTMgQEAKIC8vIDxzdHJpbmdfdmlldz4sIDx2YXJpYW50PiBpcyBpbXBsZW1lbnRlZCkg
b3IgaGlnaGVyLiBBbHNvLCBgX19jcGx1c3BsdXNgIGlzCiAvLyBub3QgY29ycmVjdGx5IHNldCBi
eSBNU1ZDLCBzbyB3ZSB1c2UgYF9NU1ZDX0xBTkdgIHRvIGNoZWNrIHRoZSBsYW5ndWFnZQogLy8g
dmVyc2lvbi4KLS8vIFRPRE8oemhhbmd4eSk6IGZpeCB0ZXN0cyBiZWZvcmUgZW5hYmxpbmcgYWxp
YXNpbmcgZm9yIGBzdGQ6OmFueWAsCi0vLyBgc3RkOjpzdHJpbmdfdmlld2AuCisvLyBUT0RPKHpo
YW5neHkpOiBmaXggdGVzdHMgYmVmb3JlIGVuYWJsaW5nIGFsaWFzaW5nIGZvciBgc3RkOjphbnlg
LgogI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE5MTAgJiYgXAogICAgICgo
ZGVmaW5lZChfTVNWQ19MQU5HKSAmJiBfTVNWQ19MQU5HID4gMjAxNDAyKSB8fCBfX2NwbHVzcGx1
cyA+IDIwMTQwMikKIC8vICNkZWZpbmUgQUJTTF9IQVZFX1NURF9BTlkgMQogI2RlZmluZSBBQlNM
X0hBVkVfU1REX09QVElPTkFMIDEKICNkZWZpbmUgQUJTTF9IQVZFX1NURF9WQVJJQU5UIDEKLS8v
ICNkZWZpbmUgQUJTTF9IQVZFX1NURF9TVFJJTkdfVklFVyAxCisjZGVmaW5lIEFCU0xfSEFWRV9T
VERfU1RSSU5HX1ZJRVcgMQogI2VuZGlmCiAKICNlbmRpZiAgLy8gQUJTTF9CQVNFX0NPTkZJR19I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9leGNlcHRpb25fc2FmZXR5X3Rlc3RpbmdfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nX3Rlc3QuY2MKaW5kZXggOTdj
OGQ2ZjgzMTg5NGE4ODBhOTg0YTFkMGUwOTBlMDQ4NzcyODJlZS4uMTA2YmMzNGIwMGY3Y2UyN2E3
YjQzNzUyYWQ3MTA2OTlmYmM0NTVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9leGNlcHRpb25f
c2FmZXR5X3Rlc3RpbmdfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2V4Y2VwdGlvbl9zYWZldHlf
dGVzdGluZ190ZXN0LmNjCkBAIC0zOCw3ICszOCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgog
dm9pZCBFeHBlY3ROb1Rocm93KGNvbnN0IEYmIGYpIHsKICAgdHJ5IHsKICAgICBmKCk7Ci0gIH0g
Y2F0Y2ggKFRlc3RFeGNlcHRpb24gZSkgeworICB9IGNhdGNoIChjb25zdCBUZXN0RXhjZXB0aW9u
JiBlKSB7CiAgICAgQUREX0ZBSUxVUkUoKSA8PCAiVW5leHBlY3RlZCBleGNlcHRpb24gdGhyb3du
IGZyb20gIiA8PCBlLndoYXQoKTsKICAgfQogfQpAQCAtMTc5LDcgKzE3OSw3IEBAIFRFU1QoVGhy
b3dpbmdWYWx1ZVRlc3QsIFRocm93aW5nU3RyZWFtT3BzKSB7CiB9CiAKIC8vIFRlc3RzIHRoZSBv
cGVyYXRvcjw8IG9mIFRocm93aW5nVmFsdWUgYnkgZm9yY2luZyBDb25zdHJ1Y3RvclRyYWNrZXIg
dG8gZW1pdAotLy8gYSBub25mYXRhbCBmYWlsdXJlIHRoYXQgY29udGFpbnMgdGhlIHN0ZDo6c3Ry
aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBUaHJvd2VyCisvLyBhIG5vbmZhdGFsIGZhaWx1cmUg
dGhhdCBjb250YWlucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBUaHJvd2VyCiBU
RVNUKFRocm93aW5nVmFsdWVUZXN0LCBTdHJlYW1PcHNPdXRwdXQpIHsKICAgdXNpbmcgOjp0ZXN0
aW5nOjpUeXBlU3BlYzsKICAgZXhjZXB0aW9uc19pbnRlcm5hbDo6Q29uc3RydWN0b3JUcmFja2Vy
IGN0KGV4Y2VwdGlvbnNfaW50ZXJuYWw6OmNvdW50ZG93bik7CkBAIC01NDgsMjEgKzU0OCwyMSBA
QCBURVNUKEV4Y2VwdGlvblNhZmV0eVRlc3RlclRlc3QsIEluY29tcGxldGVUeXBlc0FyZU5vdFRl
c3RhYmxlKSB7CiAgIC8vIFRlc3QgdGhhdCBwcm92aWRpbmcgb3BlcmF0aW9uIGFuZCBpbnZlcmlh
bnRzIHN0aWxsIGRvZXMgbm90IGFsbG93IGZvciB0aGUKICAgLy8gdGhlIGludm9jYXRpb24gb2Yg
LlRlc3QoKSBhbmQgLlRlc3Qob3ApIGJlY2F1c2UgaXQgbGFja3MgYSBmYWN0b3J5CiAgIGF1dG8g
d2l0aG91dF9mYWMgPQotICAgICAgdGVzdGluZzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3Rlcigp
LldpdGhPcGVyYXRpb24ob3ApLldpdGhJbnZhcmlhbnRzKAorICAgICAgdGVzdGluZzo6TWFrZUV4
Y2VwdGlvblNhZmV0eVRlc3RlcigpLldpdGhPcGVyYXRpb24ob3ApLldpdGhDb250cmFjdHMoCiAg
ICAgICAgICAgaW52LCB0ZXN0aW5nOjpzdHJvbmdfZ3VhcmFudGVlKTsKICAgRVhQRUNUX0ZBTFNF
KEhhc051bGxhcnlUZXN0KHdpdGhvdXRfZmFjKSk7CiAgIEVYUEVDVF9GQUxTRShIYXNVbmFyeVRl
c3Qod2l0aG91dF9mYWMpKTsKIAotICAvLyBUZXN0IHRoYXQgcHJvdmlkaW5nIGludmFyaWFudHMg
YW5kIGZhY3RvcnkgYWxsb3dzIHRoZSBpbnZvY2F0aW9uIG9mCisgIC8vIFRlc3QgdGhhdCBwcm92
aWRpbmcgY29udHJhY3RzIGFuZCBmYWN0b3J5IGFsbG93cyB0aGUgaW52b2NhdGlvbiBvZgogICAv
LyAuVGVzdChvcCkgYnV0IGRvZXMgbm90IGFsbG93IGZvciAuVGVzdCgpIGJlY2F1c2UgaXQgbGFj
a3MgYW4gb3BlcmF0aW9uCiAgIGF1dG8gd2l0aG91dF9vcCA9IHRlc3Rpbmc6Ok1ha2VFeGNlcHRp
b25TYWZldHlUZXN0ZXIoKQotICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRz
KGludiwgdGVzdGluZzo6c3Ryb25nX2d1YXJhbnRlZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IC5XaXRoQ29udHJhY3RzKGludiwgdGVzdGluZzo6c3Ryb25nX2d1YXJhbnRlZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIC5XaXRoRmFjdG9yeShmYWMpOwogICBFWFBFQ1RfRkFMU0UoSGFzTnVs
bGFyeVRlc3Qod2l0aG91dF9vcCkpOwogICBFWFBFQ1RfVFJVRShIYXNVbmFyeVRlc3Qod2l0aG91
dF9vcCkpOwogCiAgIC8vIFRlc3QgdGhhdCBwcm92aWRpbmcgb3BlcmF0aW9uIGFuZCBmYWN0b3J5
IHN0aWxsIGRvZXMgbm90IGFsbG93IGZvciB0aGUKLSAgLy8gdGhlIGludm9jYXRpb24gb2YgLlRl
c3QoKSBhbmQgLlRlc3Qob3ApIGJlY2F1c2UgaXQgbGFja3MgaW52YXJpYW50cworICAvLyB0aGUg
aW52b2NhdGlvbiBvZiAuVGVzdCgpIGFuZCAuVGVzdChvcCkgYmVjYXVzZSBpdCBsYWNrcyBjb250
cmFjdHMKICAgYXV0byB3aXRob3V0X2ludiA9CiAgICAgICB0ZXN0aW5nOjpNYWtlRXhjZXB0aW9u
U2FmZXR5VGVzdGVyKCkuV2l0aE9wZXJhdGlvbihvcCkuV2l0aEZhY3RvcnkoZmFjKTsKICAgRVhQ
RUNUX0ZBTFNFKEhhc051bGxhcnlUZXN0KHdpdGhvdXRfaW52KSk7CkBAIC01NzcsNyArNTc3LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEV4YW1wbGVTdHJ1Y3Q+IEV4YW1wbGVGdW5jdGlvbkZhY3Rvcnko
KSB7CiAKIHZvaWQgRXhhbXBsZUZ1bmN0aW9uT3BlcmF0aW9uKEV4YW1wbGVTdHJ1Y3QqKSB7fQog
Ci10ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgRXhhbXBsZUZ1bmN0aW9uSW52YXJpYW50KEV4YW1w
bGVTdHJ1Y3QqKSB7Cit0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgRXhhbXBsZUZ1bmN0aW9uQ29u
dHJhY3QoRXhhbXBsZVN0cnVjdCopIHsKICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nl
c3MoKTsKIH0KIApAQCAtNTkzLDE2ICs1OTMsMTYgQEAgc3RydWN0IHsKIAogc3RydWN0IHsKICAg
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IG9wZXJhdG9yKCkoRXhhbXBsZVN0cnVjdCogZXhhbXBs
ZV9zdHJ1Y3QpIGNvbnN0IHsKLSAgICByZXR1cm4gRXhhbXBsZUZ1bmN0aW9uSW52YXJpYW50KGV4
YW1wbGVfc3RydWN0KTsKKyAgICByZXR1cm4gRXhhbXBsZUZ1bmN0aW9uQ29udHJhY3QoZXhhbXBs
ZV9zdHJ1Y3QpOwogICB9Ci19IGV4YW1wbGVfc3RydWN0X2ludmFyaWFudDsKK30gZXhhbXBsZV9z
dHJ1Y3RfY29udHJhY3Q7CiAKIGF1dG8gZXhhbXBsZV9sYW1iZGFfZmFjdG9yeSA9IFtdKCkgeyBy
ZXR1cm4gRXhhbXBsZUZ1bmN0aW9uRmFjdG9yeSgpOyB9OwogCiBhdXRvIGV4YW1wbGVfbGFtYmRh
X29wZXJhdGlvbiA9IFtdKEV4YW1wbGVTdHJ1Y3QqKSB7fTsKIAotYXV0byBleGFtcGxlX2xhbWJk
YV9pbnZhcmlhbnQgPSBbXShFeGFtcGxlU3RydWN0KiBleGFtcGxlX3N0cnVjdCkgewotICByZXR1
cm4gRXhhbXBsZUZ1bmN0aW9uSW52YXJpYW50KGV4YW1wbGVfc3RydWN0KTsKK2F1dG8gZXhhbXBs
ZV9sYW1iZGFfY29udHJhY3QgPSBbXShFeGFtcGxlU3RydWN0KiBleGFtcGxlX3N0cnVjdCkgewor
ICByZXR1cm4gRXhhbXBsZUZ1bmN0aW9uQ29udHJhY3QoZXhhbXBsZV9zdHJ1Y3QpOwogfTsKIAog
Ly8gVGVzdGluZyB0aGF0IGZ1bmN0aW9uIHJlZmVyZW5jZXMsIHBvaW50ZXJzLCBzdHJ1Y3RzIHdp
dGggb3BlcmF0b3IoKSBhbmQKQEAgLTYxMiwyOCArNjEyLDI4IEBAIFRFU1QoRXhjZXB0aW9uU2Fm
ZXR5VGVzdGVyVGVzdCwgTWl4ZWRGdW5jdGlvblR5cGVzKSB7CiAgIEVYUEVDVF9UUlVFKHRlc3Rp
bmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgLldpdGhG
YWN0b3J5KEV4YW1wbGVGdW5jdGlvbkZhY3RvcnkpCiAgICAgICAgICAgICAgICAgICAuV2l0aE9w
ZXJhdGlvbihFeGFtcGxlRnVuY3Rpb25PcGVyYXRpb24pCi0gICAgICAgICAgICAgICAgICAuV2l0
aEludmFyaWFudHMoRXhhbXBsZUZ1bmN0aW9uSW52YXJpYW50KQorICAgICAgICAgICAgICAgICAg
LldpdGhDb250cmFjdHMoRXhhbXBsZUZ1bmN0aW9uQ29udHJhY3QpCiAgICAgICAgICAgICAgICAg
ICAuVGVzdCgpKTsKIAogICAvLyBmdW5jdGlvbiBwb2ludGVyCiAgIEVYUEVDVF9UUlVFKHRlc3Rp
bmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgLldpdGhG
YWN0b3J5KCZFeGFtcGxlRnVuY3Rpb25GYWN0b3J5KQogICAgICAgICAgICAgICAgICAgLldpdGhP
cGVyYXRpb24oJkV4YW1wbGVGdW5jdGlvbk9wZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgIC5X
aXRoSW52YXJpYW50cygmRXhhbXBsZUZ1bmN0aW9uSW52YXJpYW50KQorICAgICAgICAgICAgICAg
ICAgLldpdGhDb250cmFjdHMoJkV4YW1wbGVGdW5jdGlvbkNvbnRyYWN0KQogICAgICAgICAgICAg
ICAgICAgLlRlc3QoKSk7CiAKICAgLy8gc3RydWN0CiAgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6Ok1h
a2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgICAgICAgLldpdGhGYWN0b3J5
KGV4YW1wbGVfc3RydWN0X2ZhY3RvcnkpCiAgICAgICAgICAgICAgICAgICAuV2l0aE9wZXJhdGlv
bihleGFtcGxlX3N0cnVjdF9vcGVyYXRpb24pCi0gICAgICAgICAgICAgICAgICAuV2l0aEludmFy
aWFudHMoZXhhbXBsZV9zdHJ1Y3RfaW52YXJpYW50KQorICAgICAgICAgICAgICAgICAgLldpdGhD
b250cmFjdHMoZXhhbXBsZV9zdHJ1Y3RfY29udHJhY3QpCiAgICAgICAgICAgICAgICAgICAuVGVz
dCgpKTsKIAogICAvLyBsYW1iZGEKICAgRVhQRUNUX1RSVUUodGVzdGluZzo6TWFrZUV4Y2VwdGlv
blNhZmV0eVRlc3RlcigpCiAgICAgICAgICAgICAgICAgICAuV2l0aEZhY3RvcnkoZXhhbXBsZV9s
YW1iZGFfZmFjdG9yeSkKICAgICAgICAgICAgICAgICAgIC5XaXRoT3BlcmF0aW9uKGV4YW1wbGVf
bGFtYmRhX29wZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhleGFt
cGxlX2xhbWJkYV9pbnZhcmlhbnQpCisgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhl
eGFtcGxlX2xhbWJkYV9jb250cmFjdCkKICAgICAgICAgICAgICAgICAgIC5UZXN0KCkpOwogfQog
CkBAIC02NTgsOSArNjU4LDkgQEAgc3RydWN0IHsKIH0gaW52b2tlcjsKIAogYXV0byB0ZXN0ZXIg
PQotICAgIHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoT3BlcmF0aW9u
KGludm9rZXIpLldpdGhJbnZhcmlhbnRzKAorICAgIHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZl
dHlUZXN0ZXIoKS5XaXRoT3BlcmF0aW9uKGludm9rZXIpLldpdGhDb250cmFjdHMoCiAgICAgICAg
IENoZWNrTm9uTmVnYXRpdmVJbnZhcmlhbnRzKTsKLWF1dG8gc3Ryb25nX3Rlc3RlciA9IHRlc3Rl
ci5XaXRoSW52YXJpYW50cyh0ZXN0aW5nOjpzdHJvbmdfZ3VhcmFudGVlKTsKK2F1dG8gc3Ryb25n
X3Rlc3RlciA9IHRlc3Rlci5XaXRoQ29udHJhY3RzKHRlc3Rpbmc6OnN0cm9uZ19ndWFyYW50ZWUp
OwogCiBzdHJ1Y3QgRmFpbHNCYXNpY0d1YXJhbnRlZSA6IHB1YmxpYyBOb25OZWdhdGl2ZSB7CiAg
IHZvaWQgb3BlcmF0b3IoKSgpIHsKQEAgLTY5MCw3ICs2OTAsNyBAQCBURVNUKEV4Y2VwdGlvbkNo
ZWNrVGVzdCwgU3Ryb25nR3VhcmFudGVlRmFpbHVyZSkgewogICBFWFBFQ1RfRkFMU0Uoc3Ryb25n
X3Rlc3Rlci5XaXRoSW5pdGlhbFZhbHVlKEZvbGxvd3NCYXNpY0d1YXJhbnRlZXt9KS5UZXN0KCkp
OwogfQogCi1zdHJ1Y3QgQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFJbnZhcmlhbnRzIDogcHVibGlj
IE5vbk5lZ2F0aXZlIHsKK3N0cnVjdCBCYXNpY0d1YXJhbnRlZVdpdGhFeHRyYUNvbnRyYWN0cyA6
IHB1YmxpYyBOb25OZWdhdGl2ZSB7CiAgIC8vIEFmdGVyIG9wZXJhdG9yKCksIGkgaXMgaW5jcmVt
ZW50ZWQuICBJZiBvcGVyYXRvcigpIHRocm93cywgaSBpcyBzZXQgdG8gOTk5OQogICB2b2lkIG9w
ZXJhdG9yKCkoKSB7CiAgICAgaW50IG9sZF9pID0gaTsKQEAgLTcwMSwyMSArNzAxLDIxIEBAIHN0
cnVjdCBCYXNpY0d1YXJhbnRlZVdpdGhFeHRyYUludmFyaWFudHMgOiBwdWJsaWMgTm9uTmVnYXRp
dmUgewogCiAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtFeGNlcHRpb25TZW50aW5lbCA9IDk5OTk7
CiB9OwotY29uc3RleHByIGludCBCYXNpY0d1YXJhbnRlZVdpdGhFeHRyYUludmFyaWFudHM6OmtF
eGNlcHRpb25TZW50aW5lbDsKK2NvbnN0ZXhwciBpbnQgQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFD
b250cmFjdHM6OmtFeGNlcHRpb25TZW50aW5lbDsKIAotVEVTVChFeGNlcHRpb25DaGVja1Rlc3Qs
IEJhc2ljR3VhcmFudGVlV2l0aEV4dHJhSW52YXJpYW50cykgeworVEVTVChFeGNlcHRpb25DaGVj
a1Rlc3QsIEJhc2ljR3VhcmFudGVlV2l0aEV4dHJhQ29udHJhY3RzKSB7CiAgIGF1dG8gdGVzdGVy
X3dpdGhfdmFsID0KLSAgICAgIHRlc3Rlci5XaXRoSW5pdGlhbFZhbHVlKEJhc2ljR3VhcmFudGVl
V2l0aEV4dHJhSW52YXJpYW50c3t9KTsKKyAgICAgIHRlc3Rlci5XaXRoSW5pdGlhbFZhbHVlKEJh
c2ljR3VhcmFudGVlV2l0aEV4dHJhQ29udHJhY3Rze30pOwogICBFWFBFQ1RfVFJVRSh0ZXN0ZXJf
d2l0aF92YWwuVGVzdCgpKTsKICAgRVhQRUNUX1RSVUUoCiAgICAgICB0ZXN0ZXJfd2l0aF92YWwK
LSAgICAgICAgICAuV2l0aEludmFyaWFudHMoW10oQmFzaWNHdWFyYW50ZWVXaXRoRXh0cmFJbnZh
cmlhbnRzKiBvKSB7Ci0gICAgICAgICAgICBpZiAoby0+aSA9PSBCYXNpY0d1YXJhbnRlZVdpdGhF
eHRyYUludmFyaWFudHM6OmtFeGNlcHRpb25TZW50aW5lbCkgeworICAgICAgICAgIC5XaXRoQ29u
dHJhY3RzKFtdKEJhc2ljR3VhcmFudGVlV2l0aEV4dHJhQ29udHJhY3RzKiBvKSB7CisgICAgICAg
ICAgICBpZiAoby0+aSA9PSBCYXNpY0d1YXJhbnRlZVdpdGhFeHRyYUNvbnRyYWN0czo6a0V4Y2Vw
dGlvblNlbnRpbmVsKSB7CiAgICAgICAgICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25T
dWNjZXNzKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdGVzdGluZzo6QXNz
ZXJ0aW9uRmFpbHVyZSgpCiAgICAgICAgICAgICAgICAgICAgPDwgImkgc2hvdWxkIGJlICIKLSAg
ICAgICAgICAgICAgICAgICA8PCBCYXNpY0d1YXJhbnRlZVdpdGhFeHRyYUludmFyaWFudHM6OmtF
eGNlcHRpb25TZW50aW5lbAorICAgICAgICAgICAgICAgICAgIDw8IEJhc2ljR3VhcmFudGVlV2l0
aEV4dHJhQ29udHJhY3RzOjprRXhjZXB0aW9uU2VudGluZWwKICAgICAgICAgICAgICAgICAgICA8
PCAiLCBidXQgaXMgIiA8PCBvLT5pOwogICAgICAgICAgIH0pCiAgICAgICAgICAgLlRlc3QoKSk7
CkBAIC03NDAsNyArNzQwLDcgQEAgc3RydWN0IEhhc1Jlc2V0IDogcHVibGljIE5vbk5lZ2F0aXZl
IHsKICAgdm9pZCByZXNldCgpIHsgaSA9IDA7IH0KIH07CiAKLXRlc3Rpbmc6OkFzc2VydGlvblJl
c3VsdCBDaGVja0hhc1Jlc2V0SW52YXJpYW50cyhIYXNSZXNldCogaCkgewordGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IENoZWNrSGFzUmVzZXRDb250cmFjdHMoSGFzUmVzZXQqIGgpIHsKICAgaC0+
cmVzZXQoKTsKICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdChoLT5pID09IDApOwog
fQpAQCAtNzU5LDE0ICs3NTksMTQgQEAgVEVTVChFeGNlcHRpb25DaGVja1Rlc3QsIE1vZGlmeWlu
Z0NoZWNrZXIpIHsKICAgfTsKIAogICBFWFBFQ1RfRkFMU0UodGVzdGVyLldpdGhJbml0aWFsVmFs
dWUoRm9sbG93c0Jhc2ljR3VhcmFudGVle30pCi0gICAgICAgICAgICAgICAgICAgLldpdGhJbnZh
cmlhbnRzKHNldF90b18xMDAwLCBpc18xMDAwKQorICAgICAgICAgICAgICAgICAgIC5XaXRoQ29u
dHJhY3RzKHNldF90b18xMDAwLCBpc18xMDAwKQogICAgICAgICAgICAgICAgICAgIC5UZXN0KCkp
OwogICBFWFBFQ1RfVFJVRShzdHJvbmdfdGVzdGVyLldpdGhJbml0aWFsVmFsdWUoRm9sbG93c1N0
cm9uZ0d1YXJhbnRlZXt9KQotICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKGluY3Jl
bWVudCkKKyAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKGluY3JlbWVudCkKICAgICAg
ICAgICAgICAgICAgIC5UZXN0KCkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjpNYWtlRXhjZXB0
aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKEhh
c1Jlc2V0e30pCi0gICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tIYXNSZXNl
dEludmFyaWFudHMpCisgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhDaGVja0hhc1Jl
c2V0Q29udHJhY3RzKQogICAgICAgICAgICAgICAgICAgLlRlc3QoaW52b2tlcikpOwogfQogCkBA
IC03OTksNyArNzk5LDcgQEAgVEVTVChFeGNlcHRpb25DaGVja1Rlc3QsIE5vbkVxdWFsaXR5Q29t
cGFyYWJsZSkgewogICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQobmVjLT5pID09
IE5vbkVxdWFsaXR5Q29tcGFyYWJsZSgpLmkpOwogICB9OwogICBhdXRvIHN0cm9uZ19uZWNfdGVz
dGVyID0gdGVzdGVyLldpdGhJbml0aWFsVmFsdWUoTm9uRXF1YWxpdHlDb21wYXJhYmxle30pCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKG5lY19pc19zdHJv
bmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKG5lY19p
c19zdHJvbmcpOwogCiAgIEVYUEVDVF9UUlVFKHN0cm9uZ19uZWNfdGVzdGVyLlRlc3QoKSk7CiAg
IEVYUEVDVF9GQUxTRShzdHJvbmdfbmVjX3Rlc3Rlci5UZXN0KApAQCAtODMzLDE0ICs4MzMsMTQg
QEAgc3RydWN0IHsKICAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IG9wZXJhdG9yKCkoRXhoYXVz
dGl2ZW5lc3NUZXN0ZXI8VD4qKSBjb25zdCB7CiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlv
blN1Y2Nlc3MoKTsKICAgfQotfSBDaGVja0V4aGF1c3RpdmVuZXNzVGVzdGVySW52YXJpYW50czsK
K30gQ2hlY2tFeGhhdXN0aXZlbmVzc1Rlc3RlckNvbnRyYWN0czsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiB1bnNpZ25lZCBjaGFyIEV4aGF1c3RpdmVuZXNzVGVzdGVyPFQ+OjpzdWNjZXNzZXMg
PSAwOwogCiBURVNUKEV4Y2VwdGlvbkNoZWNrVGVzdCwgRXhoYXVzdGl2ZW5lc3MpIHsKICAgYXV0
byBleGhhdXN0X3Rlc3RlciA9IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0V4aGF1c3Rp
dmVuZXNzVGVzdGVySW52YXJpYW50cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0
aENvbnRyYWN0cyhDaGVja0V4aGF1c3RpdmVuZXNzVGVzdGVyQ29udHJhY3RzKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC5XaXRoT3BlcmF0aW9uKGludm9rZXIpOwogCiAgIEVYUEVDVF9U
UlVFKApAQCAtODQ5LDcgKzg0OSw3IEBAIFRFU1QoRXhjZXB0aW9uQ2hlY2tUZXN0LCBFeGhhdXN0
aXZlbmVzcykgewogCiAgIEVYUEVDVF9UUlVFKAogICAgICAgZXhoYXVzdF90ZXN0ZXIuV2l0aElu
aXRpYWxWYWx1ZShFeGhhdXN0aXZlbmVzc1Rlc3RlcjxUaHJvd2luZ1ZhbHVlPD4+e30pCi0gICAg
ICAgICAgLldpdGhJbnZhcmlhbnRzKHRlc3Rpbmc6OnN0cm9uZ19ndWFyYW50ZWUpCisgICAgICAg
ICAgLldpdGhDb250cmFjdHModGVzdGluZzo6c3Ryb25nX2d1YXJhbnRlZSkKICAgICAgICAgICAu
VGVzdCgpKTsKICAgRVhQRUNUX0VRKEV4aGF1c3RpdmVuZXNzVGVzdGVyPFRocm93aW5nVmFsdWU8
Pj46OnN1Y2Nlc3NlcywgMHhGKTsKIH0KQEAgLTkzMSw4ICs5MzEsOCBAQCBURVNUKFRocm93aW5n
VmFsdWVUcmFpdHNUZXN0LCBSZWxhdGlvbmFsT3BlcmF0b3JzKSB7CiB9CiAKIFRFU1QoVGhyb3dp
bmdBbGxvY2F0b3JUcmFpdHNUZXN0LCBBc3NpZ25hYmxpbGl0eSkgewotICBFWFBFQ1RfVFJVRShz
dGQ6OmlzX21vdmVfYXNzaWduYWJsZTxUaHJvd2luZ0FsbG9jYXRvcjxpbnQ+Pjo6dmFsdWUpOwot
ICBFWFBFQ1RfVFJVRShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxUaHJvd2luZ0FsbG9jYXRvcjxp
bnQ+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8VGhy
b3dpbmdBbGxvY2F0b3I8aW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfY29w
eV9hc3NpZ25hYmxlPFRocm93aW5nQWxsb2NhdG9yPGludD4+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9U
UlVFKHN0ZDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8VGhyb3dpbmdBbGxvY2F0b3I8aW50
Pj46OnZhbHVlKTsKICAgRVhQRUNUX1RSVUUoc3RkOjppc19ub3Rocm93X2NvcHlfYXNzaWduYWJs
ZTxUaHJvd2luZ0FsbG9jYXRvcjxpbnQ+Pjo6dmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9iaXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2JpdHMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYzdmYWFlZTNiMjU3ZWRjMzdjZDkwOTBiNzc3N2Q3MDM1ZDNjM2I4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmgKQEAgLTAsMCArMSwxOTMgQEAKKy8v
IENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9CQVNF
X0lOVEVSTkFMX0JJVFNfSF8KKyNkZWZpbmUgQUJTTF9CQVNFX0lOVEVSTkFMX0JJVFNfSF8KKwor
Ly8gVGhpcyBmaWxlIGNvbnRhaW5zIGJpdHdpc2Ugb3BzIHdoaWNoIGFyZSBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzIG9mIHZhcmlvdXMKKy8vIGFic2wgbGlicmFyaWVzLgorCisjaW5jbHVkZSA8Y3N0
ZGludD4KKworLy8gQ2xhbmcgb24gV2luZG93cyBoYXMgX19idWlsdGluX2NsemxsOyBvdGhlcndp
c2Ugd2UgbmVlZCB0byB1c2UgdGhlCisvLyB3aW5kb3dzIGludHJpbnNpYyBmdW5jdGlvbnMuCisj
aWYgZGVmaW5lZChfTVNDX1ZFUikKKyNpbmNsdWRlIDxpbnRyaW4uaD4KKyNpZiBkZWZpbmVkKF9N
X1g2NCkKKyNwcmFnbWEgaW50cmluc2ljKF9CaXRTY2FuUmV2ZXJzZTY0KQorI3ByYWdtYSBpbnRy
aW5zaWMoX0JpdFNjYW5Gb3J3YXJkNjQpCisjZW5kaWYKKyNwcmFnbWEgaW50cmluc2ljKF9CaXRT
Y2FuUmV2ZXJzZSkKKyNwcmFnbWEgaW50cmluc2ljKF9CaXRTY2FuRm9yd2FyZCkKKyNlbmRpZgor
CisjaW5jbHVkZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKKworI2lmIGRlZmluZWQoX01TQ19W
RVIpCisvLyBXZSBjYW4gYWNoaWV2ZSBzb21ldGhpbmcgc2ltaWxhciB0byBhdHRyaWJ1dGUoKGFs
d2F5c19pbmxpbmUpKSB3aXRoIE1TVkMgYnkKKy8vIHVzaW5nIHRoZSBfX2ZvcmNlaW5saW5lIGtl
eXdvcmQsIGhvd2V2ZXIgdGhpcyBpcyBub3QgcGVyZmVjdC4gTVNWQyBpcworLy8gbXVjaCBsZXNz
IGFnZ3Jlc3NpdmUgYWJvdXQgaW5saW5pbmcsIGFuZCBldmVuIHdpdGggdGhlIF9fZm9yY2Vpbmxp
bmUga2V5d29yZC4KKyNkZWZpbmUgQUJTTF9CQVNFX0lOVEVSTkFMX0ZPUkNFSU5MSU5FIF9fZm9y
Y2VpbmxpbmUKKyNlbHNlCisvLyBVc2UgZGVmYXVsdCBhdHRyaWJ1dGUgaW5saW5lLgorI2RlZmlu
ZSBBQlNMX0JBU0VfSU5URVJOQUxfRk9SQ0VJTkxJTkUgaW5saW5lIEFCU0xfQVRUUklCVVRFX0FM
V0FZU19JTkxJTkUKKyNlbmRpZgorCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBiYXNl
X2ludGVybmFsIHsKKworQUJTTF9CQVNFX0lOVEVSTkFMX0ZPUkNFSU5MSU5FIGludCBDb3VudExl
YWRpbmdaZXJvczY0U2xvdyh1aW50NjRfdCBuKSB7CisgIGludCB6ZXJvZXMgPSA2MDsKKyAgaWYg
KG4gPj4gMzIpIHplcm9lcyAtPSAzMiwgbiA+Pj0gMzI7CisgIGlmIChuID4+IDE2KSB6ZXJvZXMg
LT0gMTYsIG4gPj49IDE2OworICBpZiAobiA+PiA4KSB6ZXJvZXMgLT0gOCwgbiA+Pj0gODsKKyAg
aWYgKG4gPj4gNCkgemVyb2VzIC09IDQsIG4gPj49IDQ7CisgIHJldHVybiAiXDRcM1wyXDJcMVwx
XDFcMVwwXDBcMFwwXDBcMFwwIltuXSArIHplcm9lczsKK30KKworQUJTTF9CQVNFX0lOVEVSTkFM
X0ZPUkNFSU5MSU5FIGludCBDb3VudExlYWRpbmdaZXJvczY0KHVpbnQ2NF90IG4pIHsKKyNpZiBk
ZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9NX1g2NCkKKyAgLy8gTVNWQyBkb2VzIG5vdCBo
YXZlIF9fYnVpdGluX2NsemxsLiBVc2UgX0JpdFNjYW5SZXZlcnNlNjQuCisgIHVuc2lnbmVkIGxv
bmcgcmVzdWx0ID0gMDsgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgaWYgKF9CaXRTY2FuUmV2
ZXJzZTY0KCZyZXN1bHQsIG4pKSB7CisgICAgcmV0dXJuIDYzIC0gcmVzdWx0OworICB9CisgIHJl
dHVybiA2NDsKKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpCisgIC8vIE1TVkMgZG9lcyBub3QgaGF2
ZSBfX2J1aXRpbl9jbHpsbC4gQ29tcG9zZSB0d28gY2FsbHMgdG8gX0JpdFNjYW5SZXZlcnNlCisg
IHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgaWYg
KChuID4+IDMyKSAmJiBfQml0U2NhblJldmVyc2UoJnJlc3VsdCwgbiA+PiAzMikpIHsKKyAgICBy
ZXR1cm4gMzEgLSByZXN1bHQ7CisgIH0KKyAgaWYgKF9CaXRTY2FuUmV2ZXJzZSgmcmVzdWx0LCBu
KSkgeworICAgIHJldHVybiA2MyAtIHJlc3VsdDsKKyAgfQorICByZXR1cm4gNjQ7CisjZWxpZiBk
ZWZpbmVkKF9fR05VQ19fKQorICAvLyBVc2UgX19idWlsdGluX2NsemxsLCB3aGljaCB1c2VzIHRo
ZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zOgorICAvLyAgeDg2OiBic3IKKyAgLy8gIEFSTTY0OiBj
bHoKKyAgLy8gIFBQQzogY250bHpkCisgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHVuc2lnbmVkIGxv
bmcgbG9uZykgPT0gc2l6ZW9mKG4pLCAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQorICAgICAgICAg
ICAgICAgICJfX2J1aWx0aW5fY2x6bGwgZG9lcyBub3QgdGFrZSA2NC1iaXQgYXJnIik7CisKKyAg
Ly8gSGFuZGxlIDAgYXMgYSBzcGVjaWFsIGNhc2UgYmVjYXVzZSBfX2J1aWx0aW5fY2x6bGwoMCkg
aXMgdW5kZWZpbmVkLgorICBpZiAobiA9PSAwKSB7CisgICAgcmV0dXJuIDY0OworICB9CisgIHJl
dHVybiBfX2J1aWx0aW5fY2x6bGwobik7CisjZWxzZQorICByZXR1cm4gQ291bnRMZWFkaW5nWmVy
b3M2NFNsb3cobik7CisjZW5kaWYKK30KKworQUJTTF9CQVNFX0lOVEVSTkFMX0ZPUkNFSU5MSU5F
IGludCBDb3VudExlYWRpbmdaZXJvczMyU2xvdyh1aW50NjRfdCBuKSB7CisgIGludCB6ZXJvZXMg
PSAyODsKKyAgaWYgKG4gPj4gMTYpIHplcm9lcyAtPSAxNiwgbiA+Pj0gMTY7CisgIGlmIChuID4+
IDgpIHplcm9lcyAtPSA4LCBuID4+PSA4OworICBpZiAobiA+PiA0KSB6ZXJvZXMgLT0gNCwgbiA+
Pj0gNDsKKyAgcmV0dXJuICJcNFwzXDJcMlwxXDFcMVwxXDBcMFwwXDBcMFwwXDAiW25dICsgemVy
b2VzOworfQorCitBQlNMX0JBU0VfSU5URVJOQUxfRk9SQ0VJTkxJTkUgaW50IENvdW50TGVhZGlu
Z1plcm9zMzIodWludDMyX3QgbikgeworI2lmIGRlZmluZWQoX01TQ19WRVIpCisgIHVuc2lnbmVk
IGxvbmcgcmVzdWx0ID0gMDsgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgaWYgKF9CaXRTY2Fu
UmV2ZXJzZSgmcmVzdWx0LCBuKSkgeworICAgIHJldHVybiAzMSAtIHJlc3VsdDsKKyAgfQorICBy
ZXR1cm4gMzI7CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorICAvLyBVc2UgX19idWlsdGluX2Ns
eiwgd2hpY2ggdXNlcyB0aGUgZm9sbG93aW5nIGluc3RydWN0aW9uczoKKyAgLy8gIHg4NjogYnNy
CisgIC8vICBBUk02NDogY2x6CisgIC8vICBQUEM6IGNudGx6ZAorICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihpbnQpID09IHNpemVvZihuKSwKKyAgICAgICAgICAgICAgICAiX19idWlsdGluX2NseiBk
b2VzIG5vdCB0YWtlIDMyLWJpdCBhcmciKTsKKworICAvLyBIYW5kbGUgMCBhcyBhIHNwZWNpYWwg
Y2FzZSBiZWNhdXNlIF9fYnVpbHRpbl9jbHooMCkgaXMgdW5kZWZpbmVkLgorICBpZiAobiA9PSAw
KSB7CisgICAgcmV0dXJuIDMyOworICB9CisgIHJldHVybiBfX2J1aWx0aW5fY2x6KG4pOworI2Vs
c2UKKyAgcmV0dXJuIENvdW50TGVhZGluZ1plcm9zMzJTbG93KG4pOworI2VuZGlmCit9CisKK0FC
U0xfQkFTRV9JTlRFUk5BTF9GT1JDRUlOTElORSBpbnQgQ291bnRUcmFpbGluZ1plcm9zTm9uWmVy
bzY0U2xvdyh1aW50NjRfdCBuKSB7CisgIGludCBjID0gNjM7CisgIG4gJj0gfm4gKyAxOworICBp
ZiAobiAmIDB4MDAwMDAwMDBGRkZGRkZGRikgYyAtPSAzMjsKKyAgaWYgKG4gJiAweDAwMDBGRkZG
MDAwMEZGRkYpIGMgLT0gMTY7CisgIGlmIChuICYgMHgwMEZGMDBGRjAwRkYwMEZGKSBjIC09IDg7
CisgIGlmIChuICYgMHgwRjBGMEYwRjBGMEYwRjBGKSBjIC09IDQ7CisgIGlmIChuICYgMHgzMzMz
MzMzMzMzMzMzMzMzKSBjIC09IDI7CisgIGlmIChuICYgMHg1NTU1NTU1NTU1NTU1NTU1KSBjIC09
IDE7CisgIHJldHVybiBjOworfQorCitBQlNMX0JBU0VfSU5URVJOQUxfRk9SQ0VJTkxJTkUgaW50
IENvdW50VHJhaWxpbmdaZXJvc05vblplcm82NCh1aW50NjRfdCBuKSB7CisjaWYgZGVmaW5lZChf
TVNDX1ZFUikgJiYgZGVmaW5lZChfTV9YNjQpCisgIHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsg
IC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgX0JpdFNjYW5Gb3J3YXJkNjQoJnJlc3VsdCwgbik7
CisgIHJldHVybiByZXN1bHQ7CisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorICB1bnNpZ25lZCBs
b25nIHJlc3VsdCA9IDA7ICAvLyBOT0xJTlQocnVudGltZS9pbnQpCisgIGlmIChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obikgPT0gMCkgeworICAgIF9CaXRTY2FuRm9yd2FyZCgmcmVzdWx0LCBuID4+
IDMyKTsKKyAgICByZXR1cm4gcmVzdWx0ICsgMzI7CisgIH0KKyAgX0JpdFNjYW5Gb3J3YXJkKCZy
ZXN1bHQsIG4pOworICByZXR1cm4gcmVzdWx0OworI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKKyAg
c3RhdGljX2Fzc2VydChzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSA9PSBzaXplb2YobiksICAv
LyBOT0xJTlQocnVudGltZS9pbnQpCisgICAgICAgICAgICAgICAgIl9fYnVpbHRpbl9jdHpsbCBk
b2VzIG5vdCB0YWtlIDY0LWJpdCBhcmciKTsKKyAgcmV0dXJuIF9fYnVpbHRpbl9jdHpsbChuKTsK
KyNlbHNlCisgIHJldHVybiBDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvNjRTbG93KG4pOworI2Vu
ZGlmCit9CisKK0FCU0xfQkFTRV9JTlRFUk5BTF9GT1JDRUlOTElORSBpbnQgQ291bnRUcmFpbGlu
Z1plcm9zTm9uWmVybzMyU2xvdyh1aW50MzJfdCBuKSB7CisgIGludCBjID0gMzE7CisgIG4gJj0g
fm4gKyAxOworICBpZiAobiAmIDB4MDAwMEZGRkYpIGMgLT0gMTY7CisgIGlmIChuICYgMHgwMEZG
MDBGRikgYyAtPSA4OworICBpZiAobiAmIDB4MEYwRjBGMEYpIGMgLT0gNDsKKyAgaWYgKG4gJiAw
eDMzMzMzMzMzKSBjIC09IDI7CisgIGlmIChuICYgMHg1NTU1NTU1NSkgYyAtPSAxOworICByZXR1
cm4gYzsKK30KKworQUJTTF9CQVNFX0lOVEVSTkFMX0ZPUkNFSU5MSU5FIGludCBDb3VudFRyYWls
aW5nWmVyb3NOb25aZXJvMzIodWludDMyX3QgbikgeworI2lmIGRlZmluZWQoX01TQ19WRVIpCisg
IHVuc2lnbmVkIGxvbmcgcmVzdWx0ID0gMDsgIC8vIE5PTElOVChydW50aW1lL2ludCkKKyAgX0Jp
dFNjYW5Gb3J3YXJkKCZyZXN1bHQsIG4pOworICByZXR1cm4gcmVzdWx0OworI2VsaWYgZGVmaW5l
ZChfX0dOVUNfXykKKyAgc3RhdGljX2Fzc2VydChzaXplb2YoaW50KSA9PSBzaXplb2YobiksCisg
ICAgICAgICAgICAgICAgIl9fYnVpbHRpbl9jdHogZG9lcyBub3QgdGFrZSAzMi1iaXQgYXJnIik7
CisgIHJldHVybiBfX2J1aWx0aW5fY3R6KG4pOworI2Vsc2UKKyAgcmV0dXJuIENvdW50VHJhaWxp
bmdaZXJvc05vblplcm8zMlNsb3cobik7CisjZW5kaWYKK30KKworI3VuZGVmIEFCU0xfQkFTRV9J
TlRFUk5BTF9GT1JDRUlOTElORQorCit9ICAvLyBuYW1lc3BhY2UgYmFzZV9pbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0JBU0VfSU5URVJOQUxfQklUU19I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9iaXRzX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2ludGVybmFsL2JpdHNfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWQ5OTFkNjcyNTg3NGFhOWRi
ODAzYjE1MTE3ODE3YWEzMDg2YjUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC9iaXRzX3Rlc3QuY2MKQEAgLTAsMCArMSw5NyBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhl
IEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmgi
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCitpbnQgQ0xaNjQo
dWludDY0X3QgbikgeworICBpbnQgZmFzdCA9IGFic2w6OmJhc2VfaW50ZXJuYWw6OkNvdW50TGVh
ZGluZ1plcm9zNjQobik7CisgIGludCBzbG93ID0gYWJzbDo6YmFzZV9pbnRlcm5hbDo6Q291bnRM
ZWFkaW5nWmVyb3M2NFNsb3cobik7CisgIEVYUEVDVF9FUShmYXN0LCBzbG93KSA8PCBuOworICBy
ZXR1cm4gZmFzdDsKK30KKworVEVTVChCaXRzVGVzdCwgQ291bnRMZWFkaW5nWmVyb3M2NCkgewor
ICBFWFBFQ1RfRVEoNjQsIENMWjY0KHVpbnQ2NF90e30pKTsKKyAgRVhQRUNUX0VRKDAsIENMWjY0
KH51aW50NjRfdHt9KSk7CisKKyAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IDY0OyBpbmRl
eCsrKSB7CisgICAgdWludDY0X3QgeCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSA8PCBpbmRl
eDsKKyAgICBjb25zdCBhdXRvIGNudCA9IDYzIC0gaW5kZXg7CisgICAgQVNTRVJUX0VRKGNudCwg
Q0xaNjQoeCkpIDw8IGluZGV4OworICAgIEFTU0VSVF9FUShjbnQsIENMWjY0KHggKyB4IC0gMSkp
IDw8IGluZGV4OworICB9Cit9CisKK2ludCBDTFozMih1aW50MzJfdCBuKSB7CisgIGludCBmYXN0
ID0gYWJzbDo6YmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3MzMihuKTsKKyAgaW50IHNs
b3cgPSBhYnNsOjpiYXNlX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczMyU2xvdyhuKTsKKyAg
RVhQRUNUX0VRKGZhc3QsIHNsb3cpIDw8IG47CisgIHJldHVybiBmYXN0OworfQorCitURVNUKEJp
dHNUZXN0LCBDb3VudExlYWRpbmdaZXJvczMyKSB7CisgIEVYUEVDVF9FUSgzMiwgQ0xaMzIodWlu
dDMyX3R7fSkpOworICBFWFBFQ1RfRVEoMCwgQ0xaMzIofnVpbnQzMl90e30pKTsKKworICBmb3Ig
KGludCBpbmRleCA9IDA7IGluZGV4IDwgMzI7IGluZGV4KyspIHsKKyAgICB1aW50MzJfdCB4ID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEpIDw8IGluZGV4OworICAgIGNvbnN0IGF1dG8gY250ID0g
MzEgLSBpbmRleDsKKyAgICBBU1NFUlRfRVEoY250LCBDTFozMih4KSkgPDwgaW5kZXg7CisgICAg
QVNTRVJUX0VRKGNudCwgQ0xaMzIoeCArIHggLSAxKSkgPDwgaW5kZXg7CisgICAgQVNTRVJUX0VR
KENMWjY0KHgpLCBDTFozMih4KSArIDMyKTsKKyAgfQorfQorCitpbnQgQ1RaNjQodWludDY0X3Qg
bikgeworICBpbnQgZmFzdCA9IGFic2w6OmJhc2VfaW50ZXJuYWw6OkNvdW50VHJhaWxpbmdaZXJv
c05vblplcm82NChuKTsKKyAgaW50IHNsb3cgPSBhYnNsOjpiYXNlX2ludGVybmFsOjpDb3VudFRy
YWlsaW5nWmVyb3NOb25aZXJvNjRTbG93KG4pOworICBFWFBFQ1RfRVEoZmFzdCwgc2xvdykgPDwg
bjsKKyAgcmV0dXJuIGZhc3Q7Cit9CisKK1RFU1QoQml0c1Rlc3QsIENvdW50VHJhaWxpbmdaZXJv
c05vblplcm82NCkgeworICBFWFBFQ1RfRVEoMCwgQ1RaNjQofnVpbnQ2NF90e30pKTsKKworICBm
b3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgNjQ7IGluZGV4KyspIHsKKyAgICB1aW50NjRfdCB4
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IGluZGV4OworICAgIGNvbnN0IGF1dG8gY250
ID0gaW5kZXg7CisgICAgQVNTRVJUX0VRKGNudCwgQ1RaNjQoeCkpIDw8IGluZGV4OworICAgIEFT
U0VSVF9FUShjbnQsIENUWjY0KH4oeCAtIDEpKSkgPDwgaW5kZXg7CisgIH0KK30KKworaW50IENU
WjMyKHVpbnQzMl90IG4pIHsKKyAgaW50IGZhc3QgPSBhYnNsOjpiYXNlX2ludGVybmFsOjpDb3Vu
dFRyYWlsaW5nWmVyb3NOb25aZXJvMzIobik7CisgIGludCBzbG93ID0gYWJzbDo6YmFzZV9pbnRl
cm5hbDo6Q291bnRUcmFpbGluZ1plcm9zTm9uWmVybzMyU2xvdyhuKTsKKyAgRVhQRUNUX0VRKGZh
c3QsIHNsb3cpIDw8IG47CisgIHJldHVybiBmYXN0OworfQorCitURVNUKEJpdHNUZXN0LCBDb3Vu
dFRyYWlsaW5nWmVyb3NOb25aZXJvMzIpIHsKKyAgRVhQRUNUX0VRKDAsIENUWjMyKH51aW50MzJf
dHt9KSk7CisKKyAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IDMyOyBpbmRleCsrKSB7Cisg
ICAgdWludDMyX3QgeCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSA8PCBpbmRleDsKKyAgICBj
b25zdCBhdXRvIGNudCA9IGluZGV4OworICAgIEFTU0VSVF9FUShjbnQsIENUWjMyKHgpKSA8PCBp
bmRleDsKKyAgICBBU1NFUlRfRVEoY250LCBDVFozMih+KHggLSAxKSkpIDw8IGluZGV4OworICB9
Cit9CisKKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFs
L2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9leGNlcHRp
b25fc2FmZXR5X3Rlc3RpbmcuaAppbmRleCA4YzJmNTA5M2ZjNGRhODI4YWZhODIzNDJiZTQ0OTk1
ZDE4YTNiYmU3Li41NjY1YTFiNjdkYjJlYzRjYTJhZDgwZmZhMDZmZTZlOWNmYzQ5MWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2V4Y2VwdGlvbl9zYWZldHlfdGVzdGluZy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nLmgKQEAgLTE5
MSwxOSArMTkxLDE5IEBAIGNsYXNzIFRyYWNrZWRPYmplY3QgewogICB+VHJhY2tlZE9iamVjdCgp
IG5vZXhjZXB0IHsgQ29uc3RydWN0b3JUcmFja2VyOjpPYmplY3REZXN0cnVjdGVkKHRoaXMpOyB9
CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9uLCB0
eXBlbmFtZSBJbnZhcmlhbnQ+Ci1hYnNsOjpvcHRpb25hbDx0ZXN0aW5nOjpBc3NlcnRpb25SZXN1
bHQ+IFRlc3RTaW5nbGVJbnZhcmlhbnRBdENvdW50ZG93bkltcGwoCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBlbmFtZSBDb250cmFjdD4KK2Fic2w6
Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4gVGVzdFNpbmdsZUNvbnRyYWN0QXRD
b3VudGRvd25JbXBsKAogICAgIGNvbnN0IEZhY3RvcnkmIGZhY3RvcnksIGNvbnN0IE9wZXJhdGlv
biYgb3BlcmF0aW9uLCBpbnQgY291bnQsCi0gICAgY29uc3QgSW52YXJpYW50JiBpbnZhcmlhbnQp
IHsKKyAgICBjb25zdCBDb250cmFjdCYgY29udHJhY3QpIHsKICAgYXV0byB0X3B0ciA9IGZhY3Rv
cnkoKTsKICAgYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0PiBjdXJyZW50
X3JlczsKICAgU2V0Q291bnRkb3duKGNvdW50KTsKICAgdHJ5IHsKICAgICBvcGVyYXRpb24odF9w
dHIuZ2V0KCkpOwogICB9IGNhdGNoIChjb25zdCBleGNlcHRpb25zX2ludGVybmFsOjpUZXN0RXhj
ZXB0aW9uJiBlKSB7Ci0gICAgY3VycmVudF9yZXMuZW1wbGFjZShpbnZhcmlhbnQodF9wdHIuZ2V0
KCkpKTsKKyAgICBjdXJyZW50X3Jlcy5lbXBsYWNlKGNvbnRyYWN0KHRfcHRyLmdldCgpKSk7CiAg
ICAgaWYgKCFjdXJyZW50X3Jlcy52YWx1ZSgpKSB7Ci0gICAgICAqY3VycmVudF9yZXMgPDwgZS53
aGF0KCkgPDwgIiBmYWlsZWQgaW52YXJpYW50IGNoZWNrIjsKKyAgICAgICpjdXJyZW50X3JlcyA8
PCBlLndoYXQoKSA8PCAiIGZhaWxlZCBjb250cmFjdCBjaGVjayI7CiAgICAgfQogICB9CiAgIFVu
c2V0Q291bnRkb3duKCk7CkBAIC0yMTEsMjIgKzIxMSwyMiBAQCBhYnNsOjpvcHRpb25hbDx0ZXN0
aW5nOjpBc3NlcnRpb25SZXN1bHQ+IFRlc3RTaW5nbGVJbnZhcmlhbnRBdENvdW50ZG93bkltcGwo
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24+Ci1h
YnNsOjpvcHRpb25hbDx0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ+IFRlc3RTaW5nbGVJbnZhcmlh
bnRBdENvdW50ZG93bkltcGwoCithYnNsOjpvcHRpb25hbDx0ZXN0aW5nOjpBc3NlcnRpb25SZXN1
bHQ+IFRlc3RTaW5nbGVDb250cmFjdEF0Q291bnRkb3duSW1wbCgKICAgICBjb25zdCBGYWN0b3J5
JiBmYWN0b3J5LCBjb25zdCBPcGVyYXRpb24mIG9wZXJhdGlvbiwgaW50IGNvdW50LAogICAgIFN0
cm9uZ0d1YXJhbnRlZVRhZ1R5cGUpIHsKICAgdXNpbmcgVFB0ciA9IHR5cGVuYW1lIGRlY2x0eXBl
KGZhY3RvcnkoKSk6OnBvaW50ZXI7CiAgIGF1dG8gdF9pc19zdHJvbmcgPSBbJl0oVFB0ciB0KSB7
IHJldHVybiAqdCA9PSAqZmFjdG9yeSgpOyB9OwotICByZXR1cm4gVGVzdFNpbmdsZUludmFyaWFu
dEF0Q291bnRkb3duSW1wbChmYWN0b3J5LCBvcGVyYXRpb24sIGNvdW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0X2lzX3N0cm9uZyk7CisgIHJldHVybiBU
ZXN0U2luZ2xlQ29udHJhY3RBdENvdW50ZG93bkltcGwoZmFjdG9yeSwgb3BlcmF0aW9uLCBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0X2lzX3N0cm9u
Zyk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24s
IHR5cGVuYW1lIEludmFyaWFudD4KLWludCBUZXN0U2luZ2xlSW52YXJpYW50QXRDb3VudGRvd24o
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwgdHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBlbmFt
ZSBDb250cmFjdD4KK2ludCBUZXN0U2luZ2xlQ29udHJhY3RBdENvdW50ZG93bigKICAgICBjb25z
dCBGYWN0b3J5JiBmYWN0b3J5LCBjb25zdCBPcGVyYXRpb24mIG9wZXJhdGlvbiwgaW50IGNvdW50
LAotICAgIGNvbnN0IEludmFyaWFudCYgaW52YXJpYW50LAorICAgIGNvbnN0IENvbnRyYWN0JiBj
b250cmFjdCwKICAgICBhYnNsOjpvcHRpb25hbDx0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ+KiBy
ZWR1Y2VkX3JlcykgewogICAvLyBJZiByZWR1Y2VkX3JlcyBpcyBlbXB0eSwgaXQgbWVhbnMgdGhl
IGN1cnJlbnQgY2FsbCB0bwotICAvLyBUZXN0U2luZ2xlSW52YXJpYW50QXRDb3VudGRvd24oLi4u
KSBpcyB0aGUgZmlyc3QgdGVzdCBiZWluZyBydW4gc28gd2UgZG8KKyAgLy8gVGVzdFNpbmdsZUNv
bnRyYWN0QXRDb3VudGRvd24oLi4uKSBpcyB0aGUgZmlyc3QgdGVzdCBiZWluZyBydW4gc28gd2Ug
ZG8KICAgLy8gd2FudCB0byBydW4gaXQuIEFsdGVybmF0aXZlbHksIGlmIGl0J3Mgbm90IGVtcHR5
IChtZWFuaW5nIGEgcHJldmlvdXMgdGVzdAogICAvLyBoYXMgcnVuKSB3ZSB3YW50IHRvIGNoZWNr
IGlmIGl0IHBhc3NlZC4gSWYgdGhlIHByZXZpb3VzIHRlc3QgZGlkIHBhc3MsIHdlCiAgIC8vIHdh
bnQgdG8gY29udGluZSBydW5uaW5nIHRlc3RzIHNvIHdlIGRvIHdhbnQgdG8gcnVuIHRoZSBjdXJy
ZW50IG9uZS4gSWYgaXQKQEAgLTIzNCwyMiArMjM0LDIyIEBAIGludCBUZXN0U2luZ2xlSW52YXJp
YW50QXRDb3VudGRvd24oCiAgIC8vIG91dHB1dC4gSWYgdGhhdCdzIHRoZSBjYXNlLCB3ZSBkbyBu
b3QgcnVuIHRoZSBjdXJyZW50IHRlc3QgYW5kIGluc3RlYWQgd2UKICAgLy8gc2ltcGx5IHJldHVy
bi4KICAgaWYgKCFyZWR1Y2VkX3Jlcy0+aGFzX3ZhbHVlKCkgfHwgcmVkdWNlZF9yZXMtPnZhbHVl
KCkpIHsKLSAgICAqcmVkdWNlZF9yZXMgPSBUZXN0U2luZ2xlSW52YXJpYW50QXRDb3VudGRvd25J
bXBsKGZhY3RvcnksIG9wZXJhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhcmlhbnQpOworICAgICpyZWR1Y2VkX3Jl
cyA9CisgICAgICAgIFRlc3RTaW5nbGVDb250cmFjdEF0Q291bnRkb3duSW1wbChmYWN0b3J5LCBv
cGVyYXRpb24sIGNvdW50LCBjb250cmFjdCk7CiAgIH0KICAgcmV0dXJuIDA7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBGYWN0b3J5LCB0eXBlbmFtZSBPcGVyYXRpb24sIHR5cGVuYW1lLi4uIElu
dmFyaWFudHM+Ci1pbmxpbmUgYWJzbDo6b3B0aW9uYWw8dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
PiBUZXN0QWxsSW52YXJpYW50c0F0Q291bnRkb3duKAordGVtcGxhdGUgPHR5cGVuYW1lIEZhY3Rv
cnksIHR5cGVuYW1lIE9wZXJhdGlvbiwgdHlwZW5hbWUuLi4gQ29udHJhY3RzPgoraW5saW5lIGFi
c2w6Om9wdGlvbmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4gVGVzdEFsbENvbnRyYWN0c0F0
Q291bnRkb3duKAogICAgIGNvbnN0IEZhY3RvcnkmIGZhY3RvcnksIGNvbnN0IE9wZXJhdGlvbiYg
b3BlcmF0aW9uLCBpbnQgY291bnQsCi0gICAgY29uc3QgSW52YXJpYW50cyYuLi4gaW52YXJpYW50
cykgeworICAgIGNvbnN0IENvbnRyYWN0cyYuLi4gY29udHJhY3RzKSB7CiAgIGFic2w6Om9wdGlv
bmFsPHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdD4gcmVkdWNlZF9yZXM7CiAKICAgLy8gUnVuIGVh
Y2ggY2hlY2tlciwgc2hvcnQgY2lyY3VpdGluZyBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZQogICBp
bnQgZHVtbXlbXSA9IHsKLSAgICAgIDAsIChUZXN0U2luZ2xlSW52YXJpYW50QXRDb3VudGRvd24o
ZmFjdG9yeSwgb3BlcmF0aW9uLCBjb3VudCwgaW52YXJpYW50cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnJlZHVjZWRfcmVzKSkuLi59OworICAgICAgMCwgKFRl
c3RTaW5nbGVDb250cmFjdEF0Q291bnRkb3duKGZhY3RvcnksIG9wZXJhdGlvbiwgY291bnQsIGNv
bnRyYWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVkdWNl
ZF9yZXMpKS4uLn07CiAgIHN0YXRpY19jYXN0PHZvaWQ+KGR1bW15KTsKICAgcmV0dXJuIHJlZHVj
ZWRfcmVzOwogfQpAQCAtODU4LDcgKzg1OCw3IEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBU
ZXN0Tm90aHJvd09wKGNvbnN0IE9wZXJhdGlvbiYgb3BlcmF0aW9uKSB7CiAgIHRyeSB7CiAgICAg
b3BlcmF0aW9uKCk7CiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLSAg
fSBjYXRjaCAoZXhjZXB0aW9uc19pbnRlcm5hbDo6VGVzdEV4Y2VwdGlvbikgeworICB9IGNhdGNo
IChjb25zdCBleGNlcHRpb25zX2ludGVybmFsOjpUZXN0RXhjZXB0aW9uJikgewogICAgIHJldHVy
biB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKICAgICAgICAgICAgPDwgIlRlc3RFeGNlcHRp
b24gdGhyb3duIGR1cmluZyBjYWxsIHRvIG9wZXJhdGlvbigpIHdoZW4gbm90aHJvdyAiCiAgICAg
ICAgICAgICAgICJndWFyYW50ZWUgd2FzIGV4cGVjdGVkLiI7CkBAIC04ODQsMTUgKzg4NCwxNSBA
QCBjbGFzcyBEZWZhdWx0RmFjdG9yeSB7CiAgIFQgdF87CiB9OwogCi10ZW1wbGF0ZSA8c2l6ZV90
IExhenlJbnZhcmlhbnRzQ291bnQsIHR5cGVuYW1lIExhenlGYWN0b3J5LAordGVtcGxhdGUgPHNp
emVfdCBMYXp5Q29udHJhY3RzQ291bnQsIHR5cGVuYW1lIExhenlGYWN0b3J5LAogICAgICAgICAg
IHR5cGVuYW1lIExhenlPcGVyYXRpb24+CiB1c2luZyBFbmFibGVJZlRlc3RhYmxlID0gdHlwZW5h
bWUgYWJzbDo6ZW5hYmxlX2lmX3Q8Ci0gICAgTGF6eUludmFyaWFudHNDb3VudCAhPSAwICYmCisg
ICAgTGF6eUNvbnRyYWN0c0NvdW50ICE9IDAgJiYKICAgICAhc3RkOjppc19zYW1lPExhenlGYWN0
b3J5LCBVbmluaXRpYWxpemVkVD46OnZhbHVlICYmCiAgICAgIXN0ZDo6aXNfc2FtZTxMYXp5T3Bl
cmF0aW9uLCBVbmluaXRpYWxpemVkVD46OnZhbHVlPjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZh
Y3RvcnkgPSBVbmluaXRpYWxpemVkVCwKLSAgICAgICAgICB0eXBlbmFtZSBPcGVyYXRpb24gPSBV
bmluaXRpYWxpemVkVCwgdHlwZW5hbWUuLi4gSW52YXJpYW50cz4KKyAgICAgICAgICB0eXBlbmFt
ZSBPcGVyYXRpb24gPSBVbmluaXRpYWxpemVkVCwgdHlwZW5hbWUuLi4gQ29udHJhY3RzPgogY2xh
c3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyOwogCiB9ICAvLyBuYW1lc3BhY2UgZXhjZXB0aW9uc19p
bnRlcm5hbApAQCAtOTAzLDcgKzkwMyw3IEBAIG5hbWVzcGFjZSBleGNlcHRpb25zX2ludGVybmFs
IHsKIAogLyoKICAqIEJ1aWxkcyBhIHRlc3RlciBvYmplY3QgdGhhdCB0ZXN0cyBpZiBwZXJmb3Jt
aW5nIGEgb3BlcmF0aW9uIG9uIGEgVCBmb2xsb3dzCi0gKiBleGNlcHRpb24gc2FmZXR5IGd1YXJh
bnRlZXMuIFZlcmlmaWNhdGlvbiBpcyBkb25lIHZpYSBpbnZhcmlhbnQgYXNzZXJ0aW9uCisgKiBl
eGNlcHRpb24gc2FmZXR5IGd1YXJhbnRlZXMuIFZlcmlmaWNhdGlvbiBpcyBkb25lIHZpYSBjb250
cmFjdCBhc3NlcnRpb24KICAqIGNhbGxiYWNrcyBhcHBsaWVkIHRvIFQgaW5zdGFuY2VzIHBvc3Qt
dGhyb3cuCiAgKgogICogVGVtcGxhdGUgcGFyYW1ldGVycyBmb3IgRXhjZXB0aW9uU2FmZXR5VGVz
dGVyOgpAQCAtOTIxLDE4ICs5MjEsMTggQEAgbmFtZXNwYWNlIGV4Y2VwdGlvbnNfaW50ZXJuYWwg
ewogICogICBmcmVzaCBUIGluc3RhbmNlIHNvIGl0J3MgZnJlZSB0byBtb2RpZnkgYW5kIGRlc3Ry
b3kgdGhlIFQgaW5zdGFuY2VzIGFzIGl0CiAgKiAgIHBsZWFzZXMuCiAgKgotICogLSBJbnZhcmlh
bnRzLi4uOiBUaGUgaW52YXJpYW50IGFzc2VydGlvbiBjYWxsYmFjayBvYmplY3RzIChwYXNzZWQg
aW4gdmlhCi0gKiAgIHRlc3Rlci5XaXRoSW52YXJpYW50cyguLi4pKSBtdXN0IGJlIGludm9jYWJs
ZSB3aXRoIHRoZSBzaWduYXR1cmUKKyAqIC0gQ29udHJhY3RzLi4uOiBUaGUgY29udHJhY3QgYXNz
ZXJ0aW9uIGNhbGxiYWNrIG9iamVjdHMgKHBhc3NlZCBpbiB2aWEKKyAqICAgdGVzdGVyLldpdGhD
b250cmFjdHMoLi4uKSkgbXVzdCBiZSBpbnZvY2FibGUgd2l0aCB0aGUgc2lnbmF0dXJlCiAgKiAg
IGB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgb3BlcmF0b3IoKShUKikgY29uc3RgIHdoZXJlIFQg
aXMgdGhlIHR5cGUgYmVpbmcKLSAqICAgdGVzdGVkLiBJbnZhcmlhbnQgYXNzZXJ0aW9uIGNhbGxi
YWNrcyBhcmUgcHJvdmlkZWQgVCBpbnN0YW5jZXMgcG9zdC10aHJvdy4KLSAqICAgVGhleSBtdXN0
IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzIHdoZW4gdGhlIHR5cGUgaW52YXJpYW50
cyBvZiB0aGUKLSAqICAgcHJvdmlkZWQgVCBpbnN0YW5jZSBob2xkLiBJZiB0aGUgdHlwZSBpbnZh
cmlhbnRzIG9mIHRoZSBUIGluc3RhbmNlIGRvIG5vdAorICogICB0ZXN0ZWQuIENvbnRyYWN0IGFz
c2VydGlvbiBjYWxsYmFja3MgYXJlIHByb3ZpZGVkIFQgaW5zdGFuY2VzIHBvc3QtdGhyb3cuCisg
KiAgIFRoZXkgbXVzdCByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcyB3aGVuIHRoZSB0
eXBlIGNvbnRyYWN0cyBvZiB0aGUKKyAqICAgcHJvdmlkZWQgVCBpbnN0YW5jZSBob2xkLiBJZiB0
aGUgdHlwZSBjb250cmFjdHMgb2YgdGhlIFQgaW5zdGFuY2UgZG8gbm90CiAgKiAgIGhvbGQsIHRo
ZXkgbXVzdCByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZS4gRXhlY3V0aW9uIG9yZGVy
IG9mCi0gKiAgIEludmFyaWFudHMuLi4gaXMgdW5zcGVjaWZpZWQuIFRoZXkgd2lsbCBlYWNoIGlu
ZGl2aWR1YWxseSBnZXQgYSBmcmVzaCBUCisgKiAgIENvbnRyYWN0cy4uLiBpcyB1bnNwZWNpZmll
ZC4gVGhleSB3aWxsIGVhY2ggaW5kaXZpZHVhbGx5IGdldCBhIGZyZXNoIFQKICAqICAgaW5zdGFu
Y2Ugc28gdGhleSBhcmUgZnJlZSB0byBtb2RpZnkgYW5kIGRlc3Ryb3kgdGhlIFQgaW5zdGFuY2Vz
IGFzIHRoZXkKICAqICAgcGxlYXNlLgogICovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRmFjdG9yeSwg
dHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBlbmFtZS4uLiBJbnZhcmlhbnRzPgordGVtcGxhdGUgPHR5
cGVuYW1lIEZhY3RvcnksIHR5cGVuYW1lIE9wZXJhdGlvbiwgdHlwZW5hbWUuLi4gQ29udHJhY3Rz
PgogY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKICBwdWJsaWM6CiAgIC8qCkBAIC05NDgs
NyArOTQ4LDcgQEAgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKICAgICogICB0ZXN0ZXIu
V2l0aEZhY3RvcnkoLi4uKS4KICAgICovCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBFeGNl
cHRpb25TYWZldHlUZXN0ZXI8RGVmYXVsdEZhY3Rvcnk8VD4sIE9wZXJhdGlvbiwgSW52YXJpYW50
cy4uLj4KKyAgRXhjZXB0aW9uU2FmZXR5VGVzdGVyPERlZmF1bHRGYWN0b3J5PFQ+LCBPcGVyYXRp
b24sIENvbnRyYWN0cy4uLj4KICAgV2l0aEluaXRpYWxWYWx1ZShjb25zdCBUJiB0KSBjb25zdCB7
CiAgICAgcmV0dXJuIFdpdGhGYWN0b3J5KERlZmF1bHRGYWN0b3J5PFQ+KHQpKTsKICAgfQpAQCAt
OTYxLDkgKzk2MSw5IEBAIGNsYXNzIEV4Y2VwdGlvblNhZmV0eVRlc3RlciB7CiAgICAqIG1ldGhv
ZCB0ZXN0ZXIuV2l0aEluaXRpYWxWYWx1ZSguLi4pLgogICAgKi8KICAgdGVtcGxhdGUgPHR5cGVu
YW1lIE5ld0ZhY3Rvcnk+Ci0gIEV4Y2VwdGlvblNhZmV0eVRlc3RlcjxhYnNsOjpkZWNheV90PE5l
d0ZhY3Rvcnk+LCBPcGVyYXRpb24sIEludmFyaWFudHMuLi4+CisgIEV4Y2VwdGlvblNhZmV0eVRl
c3RlcjxhYnNsOjpkZWNheV90PE5ld0ZhY3Rvcnk+LCBPcGVyYXRpb24sIENvbnRyYWN0cy4uLj4K
ICAgV2l0aEZhY3RvcnkoY29uc3QgTmV3RmFjdG9yeSYgbmV3X2ZhY3RvcnkpIGNvbnN0IHsKLSAg
ICByZXR1cm4ge25ld19mYWN0b3J5LCBvcGVyYXRpb25fLCBpbnZhcmlhbnRzX307CisgICAgcmV0
dXJuIHtuZXdfZmFjdG9yeSwgb3BlcmF0aW9uXywgY29udHJhY3RzX307CiAgIH0KIAogICAvKgpA
QCAtOTcyLDM5ICs5NzIsMzkgQEAgY2xhc3MgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHsKICAgICog
dGVzdGVyLgogICAgKi8KICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5ld09wZXJhdGlvbj4KLSAgRXhj
ZXB0aW9uU2FmZXR5VGVzdGVyPEZhY3RvcnksIGFic2w6OmRlY2F5X3Q8TmV3T3BlcmF0aW9uPiwg
SW52YXJpYW50cy4uLj4KKyAgRXhjZXB0aW9uU2FmZXR5VGVzdGVyPEZhY3RvcnksIGFic2w6OmRl
Y2F5X3Q8TmV3T3BlcmF0aW9uPiwgQ29udHJhY3RzLi4uPgogICBXaXRoT3BlcmF0aW9uKGNvbnN0
IE5ld09wZXJhdGlvbiYgbmV3X29wZXJhdGlvbikgY29uc3QgewotICAgIHJldHVybiB7ZmFjdG9y
eV8sIG5ld19vcGVyYXRpb24sIGludmFyaWFudHNffTsKKyAgICByZXR1cm4ge2ZhY3RvcnlfLCBu
ZXdfb3BlcmF0aW9uLCBjb250cmFjdHNffTsKICAgfQogCiAgIC8qCi0gICAqIFJldHVybnMgYSBu
ZXcgRXhjZXB0aW9uU2FmZXR5VGVzdGVyIHdpdGggdGhlIHByb3ZpZGVkIE1vcmVJbnZhcmlhbnRz
Li4uCi0gICAqIGNvbWJpbmVkIHdpdGggdGhlIEludmFyaWFudHMuLi4gdGhhdCB3ZXJlIGFscmVh
ZHkgaW5jbHVkZWQgaW4gdGhlIGluc3RhbmNlCi0gICAqIG9uIHdoaWNoIHRoZSBtZXRob2Qgd2Fz
IGNhbGxlZC4gSW52YXJpYW50cy4uLiBjYW5ub3QgYmUgcmVtb3ZlZCBvciByZXBsYWNlZAorICAg
KiBSZXR1cm5zIGEgbmV3IEV4Y2VwdGlvblNhZmV0eVRlc3RlciB3aXRoIHRoZSBwcm92aWRlZCBN
b3JlQ29udHJhY3RzLi4uCisgICAqIGNvbWJpbmVkIHdpdGggdGhlIENvbnRyYWN0cy4uLiB0aGF0
IHdlcmUgYWxyZWFkeSBpbmNsdWRlZCBpbiB0aGUgaW5zdGFuY2UKKyAgICogb24gd2hpY2ggdGhl
IG1ldGhvZCB3YXMgY2FsbGVkLiBDb250cmFjdHMuLi4gY2Fubm90IGJlIHJlbW92ZWQgb3IgcmVw
bGFjZWQKICAgICogb25jZSBhZGRlZCB0byBhbiBFeGNlcHRpb25TYWZldHlUZXN0ZXIgaW5zdGFu
Y2UuIEEgZnJlc2ggb2JqZWN0IG11c3QgYmUKLSAgICogY3JlYXRlZCBpbiBvcmRlciB0byBnZXQg
YW4gZW1wdHkgSW52YXJpYW50cy4uLiBsaXN0LgorICAgKiBjcmVhdGVkIGluIG9yZGVyIHRvIGdl
dCBhbiBlbXB0eSBDb250cmFjdHMuLi4gbGlzdC4KICAgICoKLSAgICogSW4gYWRkaXRpb24gdG8g
cGFzc2luZyBpbiBjdXN0b20gaW52YXJpYW50IGFzc2VydGlvbiBjYWxsYmFja3MsIHRoaXMgbWV0
aG9kCisgICAqIEluIGFkZGl0aW9uIHRvIHBhc3NpbmcgaW4gY3VzdG9tIGNvbnRyYWN0IGFzc2Vy
dGlvbiBjYWxsYmFja3MsIHRoaXMgbWV0aG9kCiAgICAqIGFjY2VwdHMgYHRlc3Rpbmc6OnN0cm9u
Z19ndWFyYW50ZWVgIGFzIGFuIGFyZ3VtZW50IHdoaWNoIGNoZWNrcyBUIGluc3RhbmNlcwogICAg
KiBwb3N0LXRocm93IGFnYWluc3QgZnJlc2hseSBjcmVhdGVkIFQgaW5zdGFuY2VzIHZpYSBvcGVy
YXRvcj09IHRvIHZlcmlmeQogICAgKiB0aGF0IGFueSBzdGF0ZSBjaGFuZ2VzIG1hZGUgZHVyaW5n
IHRoZSBleGVjdXRpb24gb2YgdGhlIG9wZXJhdGlvbiB3ZXJlCiAgICAqIHByb3Blcmx5IHJvbGxl
ZCBiYWNrLgogICAgKi8KLSAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIE1vcmVJbnZhcmlhbnRzPgot
ICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8RmFjdG9yeSwgT3BlcmF0aW9uLCBJbnZhcmlhbnRzLi4u
LAotICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6ZGVjYXlfdDxNb3JlSW52YXJpYW50cz4u
Li4+Ci0gIFdpdGhJbnZhcmlhbnRzKGNvbnN0IE1vcmVJbnZhcmlhbnRzJi4uLiBtb3JlX2ludmFy
aWFudHMpIGNvbnN0IHsKLSAgICByZXR1cm4ge2ZhY3RvcnlfLCBvcGVyYXRpb25fLAotICAgICAg
ICAgICAgc3RkOjp0dXBsZV9jYXQoaW52YXJpYW50c18sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnR1cGxlPGFic2w6OmRlY2F5X3Q8TW9yZUludmFyaWFudHM+Li4uPigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2ludmFyaWFudHMuLi4pKX07CisgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBNb3JlQ29udHJhY3RzPgorICBFeGNlcHRpb25TYWZldHlUZXN0ZXI8
RmFjdG9yeSwgT3BlcmF0aW9uLCBDb250cmFjdHMuLi4sCisgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjpkZWNheV90PE1vcmVDb250cmFjdHM+Li4uPgorICBXaXRoQ29udHJhY3RzKGNvbnN0
IE1vcmVDb250cmFjdHMmLi4uIG1vcmVfY29udHJhY3RzKSBjb25zdCB7CisgICAgcmV0dXJuIHsK
KyAgICAgICAgZmFjdG9yeV8sIG9wZXJhdGlvbl8sCisgICAgICAgIHN0ZDo6dHVwbGVfY2F0KGNv
bnRyYWN0c18sIHN0ZDo6dHVwbGU8YWJzbDo6ZGVjYXlfdDxNb3JlQ29udHJhY3RzPi4uLj4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2NvbnRyYWN0cy4uLikp
fTsKICAgfQogCiAgIC8qCiAgICAqIFJldHVybnMgYSB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQg
dGhhdCBpcyB0aGUgcmVkdWNlZCByZXN1bHQgb2YgdGhlCiAgICAqIGV4Y2VwdGlvbiBzYWZldHkg
YWxnb3JpdGhtLiBUaGUgYWxnb3JpdGhtIHNob3J0IGNpcmN1aXRzIGFuZCByZXR1cm5zCi0gICAq
IEFzc2VydGlvbkZhaWx1cmUgYWZ0ZXIgdGhlIGZpcnN0IGludmFyaWFudCBjYWxsYmFjayByZXR1
cm5zIGFuCi0gICAqIEFzc2VydGlvbkZhaWx1cmUuIE90aGVyd2lzZSwgaWYgYWxsIGludmFyaWFu
dCBjYWxsYmFja3MgcmV0dXJuIGFuCisgICAqIEFzc2VydGlvbkZhaWx1cmUgYWZ0ZXIgdGhlIGZp
cnN0IGNvbnRyYWN0IGNhbGxiYWNrIHJldHVybnMgYW4KKyAgICogQXNzZXJ0aW9uRmFpbHVyZS4g
T3RoZXJ3aXNlLCBpZiBhbGwgY29udHJhY3QgY2FsbGJhY2tzIHJldHVybiBhbgogICAgKiBBc3Nl
cnRpb25TdWNjZXNzLCB0aGUgcmVkdWNlZCByZXN1bHQgaXMgQXNzZXJ0aW9uU3VjY2Vzcy4KICAg
ICoKICAgICogVGhlIHBhc3NlZC1pbiB0ZXN0YWJsZSBvcGVyYXRpb24gd2lsbCBub3QgYmUgc2F2
ZWQgaW4gYSBuZXcgdGVzdGVyIGluc3RhbmNlCkBAIC0xMDEzLDMzICsxMDEzLDMzIEBAIGNsYXNz
IEV4Y2VwdGlvblNhZmV0eVRlc3RlciB7CiAgICAqCiAgICAqIFByZWNvbmRpdGlvbnMgZm9yIHRl
c3Rlci5UZXN0KGNvbnN0IE5ld09wZXJhdGlvbiYgbmV3X29wZXJhdGlvbik6CiAgICAqCi0gICAq
IC0gTWF5IG9ubHkgYmUgY2FsbGVkIGFmdGVyIGF0IGxlYXN0IG9uZSBpbnZhcmlhbnQgYXNzZXJ0
aW9uIGNhbGxiYWNrIGFuZCBhCisgICAqIC0gTWF5IG9ubHkgYmUgY2FsbGVkIGFmdGVyIGF0IGxl
YXN0IG9uZSBjb250cmFjdCBhc3NlcnRpb24gY2FsbGJhY2sgYW5kIGEKICAgICogICBmYWN0b3J5
IG9yIGluaXRpYWwgdmFsdWUgaGF2ZSBiZWVuIHByb3ZpZGVkLgogICAgKi8KICAgdGVtcGxhdGUg
PAogICAgICAgdHlwZW5hbWUgTmV3T3BlcmF0aW9uLAotICAgICAgdHlwZW5hbWUgPSBFbmFibGVJ
ZlRlc3RhYmxlPHNpemVvZi4uLihJbnZhcmlhbnRzKSwgRmFjdG9yeSwgTmV3T3BlcmF0aW9uPj4K
KyAgICAgIHR5cGVuYW1lID0gRW5hYmxlSWZUZXN0YWJsZTxzaXplb2YuLi4oQ29udHJhY3RzKSwg
RmFjdG9yeSwgTmV3T3BlcmF0aW9uPj4KICAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFRlc3Qo
Y29uc3QgTmV3T3BlcmF0aW9uJiBuZXdfb3BlcmF0aW9uKSBjb25zdCB7Ci0gICAgcmV0dXJuIFRl
c3RJbXBsKG5ld19vcGVyYXRpb24sIGFic2w6OmluZGV4X3NlcXVlbmNlX2ZvcjxJbnZhcmlhbnRz
Li4uPigpKTsKKyAgICByZXR1cm4gVGVzdEltcGwobmV3X29wZXJhdGlvbiwgYWJzbDo6aW5kZXhf
c2VxdWVuY2VfZm9yPENvbnRyYWN0cy4uLj4oKSk7CiAgIH0KIAogICAvKgogICAgKiBSZXR1cm5z
IGEgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IHRoYXQgaXMgdGhlIHJlZHVjZWQgcmVzdWx0IG9m
IHRoZQogICAgKiBleGNlcHRpb24gc2FmZXR5IGFsZ29yaXRobS4gVGhlIGFsZ29yaXRobSBzaG9y
dCBjaXJjdWl0cyBhbmQgcmV0dXJucwotICAgKiBBc3NlcnRpb25GYWlsdXJlIGFmdGVyIHRoZSBm
aXJzdCBpbnZhcmlhbnQgY2FsbGJhY2sgcmV0dXJucyBhbgotICAgKiBBc3NlcnRpb25GYWlsdXJl
LiBPdGhlcndpc2UsIGlmIGFsbCBpbnZhcmlhbnQgY2FsbGJhY2tzIHJldHVybiBhbgorICAgKiBB
c3NlcnRpb25GYWlsdXJlIGFmdGVyIHRoZSBmaXJzdCBjb250cmFjdCBjYWxsYmFjayByZXR1cm5z
IGFuCisgICAqIEFzc2VydGlvbkZhaWx1cmUuIE90aGVyd2lzZSwgaWYgYWxsIGNvbnRyYWN0IGNh
bGxiYWNrcyByZXR1cm4gYW4KICAgICogQXNzZXJ0aW9uU3VjY2VzcywgdGhlIHJlZHVjZWQgcmVz
dWx0IGlzIEFzc2VydGlvblN1Y2Nlc3MuCiAgICAqCiAgICAqIFByZWNvbmRpdGlvbnMgZm9yIHRl
c3Rlci5UZXN0KCk6CiAgICAqCi0gICAqIC0gTWF5IG9ubHkgYmUgY2FsbGVkIGFmdGVyIGF0IGxl
YXN0IG9uZSBpbnZhcmlhbnQgYXNzZXJ0aW9uIGNhbGxiYWNrLCBhCisgICAqIC0gTWF5IG9ubHkg
YmUgY2FsbGVkIGFmdGVyIGF0IGxlYXN0IG9uZSBjb250cmFjdCBhc3NlcnRpb24gY2FsbGJhY2ss
IGEKICAgICogICBmYWN0b3J5IG9yIGluaXRpYWwgdmFsdWUgYW5kIGEgdGVzdGFibGUgb3BlcmF0
aW9uIGhhdmUgYmVlbiBwcm92aWRlZC4KICAgICovCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXp5
T3BlcmF0aW9uID0gT3BlcmF0aW9uLAotICAgICAgICAgICAgdHlwZW5hbWUgPQotICAgICAgICAg
ICAgICAgIEVuYWJsZUlmVGVzdGFibGU8c2l6ZW9mLi4uKEludmFyaWFudHMpLCBGYWN0b3J5LCBM
YXp5T3BlcmF0aW9uPj4KKyAgdGVtcGxhdGUgPAorICAgICAgdHlwZW5hbWUgTGF6eU9wZXJhdGlv
biA9IE9wZXJhdGlvbiwKKyAgICAgIHR5cGVuYW1lID0gRW5hYmxlSWZUZXN0YWJsZTxzaXplb2Yu
Li4oQ29udHJhY3RzKSwgRmFjdG9yeSwgTGF6eU9wZXJhdGlvbj4+CiAgIHRlc3Rpbmc6OkFzc2Vy
dGlvblJlc3VsdCBUZXN0KCkgY29uc3QgewotICAgIHJldHVybiBUZXN0SW1wbChvcGVyYXRpb25f
LCBhYnNsOjppbmRleF9zZXF1ZW5jZV9mb3I8SW52YXJpYW50cy4uLj4oKSk7CisgICAgcmV0dXJu
IFRlc3RJbXBsKG9wZXJhdGlvbl8sIGFic2w6OmluZGV4X3NlcXVlbmNlX2ZvcjxDb250cmFjdHMu
Li4+KCkpOwogICB9CiAKICBwcml2YXRlOgpAQCAtMTA1MSw4ICsxMDUxLDggQEAgY2xhc3MgRXhj
ZXB0aW9uU2FmZXR5VGVzdGVyIHsKICAgRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkge30KIAogICBF
eGNlcHRpb25TYWZldHlUZXN0ZXIoY29uc3QgRmFjdG9yeSYgZiwgY29uc3QgT3BlcmF0aW9uJiBv
LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp0dXBsZTxJbnZhcmlhbnRzLi4u
PiYgaSkKLSAgICAgIDogZmFjdG9yeV8oZiksIG9wZXJhdGlvbl8obyksIGludmFyaWFudHNfKGkp
IHt9CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnR1cGxlPENvbnRyYWN0cy4u
Lj4mIGkpCisgICAgICA6IGZhY3RvcnlfKGYpLCBvcGVyYXRpb25fKG8pLCBjb250cmFjdHNfKGkp
IHt9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdGVkT3BlcmF0aW9uLCBzaXplX3QuLi4g
SW5kaWNlcz4KICAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFRlc3RJbXBsKGNvbnN0IFNlbGVj
dGVkT3BlcmF0aW9uJiBzZWxlY3RlZF9vcGVyYXRpb24sCkBAIC0xMDY0LDI4ICsxMDY0LDI4IEBA
IGNsYXNzIEV4Y2VwdGlvblNhZmV0eVRlc3RlciB7CiAKICAgICAgIC8vIFJ1biB0aGUgZnVsbCBl
eGNlcHRpb24gc2FmZXR5IHRlc3QgYWxnb3JpdGhtIGZvciB0aGUgY3VycmVudCBjb3VudGRvd24K
ICAgICAgIGF1dG8gcmVkdWNlZF9yZXMgPQotICAgICAgICAgIFRlc3RBbGxJbnZhcmlhbnRzQXRD
b3VudGRvd24oZmFjdG9yeV8sIHNlbGVjdGVkX29wZXJhdGlvbiwgY291bnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmdldDxJbmRpY2VzPihpbnZhcmlhbnRz
XykuLi4pOwotICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gdmFsdWUgaW4gdGhlIG9wdGlvbmFsLCBu
byBpbnZhcmlhbnRzIHdlcmUgcnVuIGJlY2F1c2Ugbm8KKyAgICAgICAgICBUZXN0QWxsQ29udHJh
Y3RzQXRDb3VudGRvd24oZmFjdG9yeV8sIHNlbGVjdGVkX29wZXJhdGlvbiwgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Z2V0PEluZGljZXM+KGNvbnRy
YWN0c18pLi4uKTsKKyAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHZhbHVlIGluIHRoZSBvcHRpb25h
bCwgbm8gY29udHJhY3RzIHdlcmUgcnVuIGJlY2F1c2Ugbm8KICAgICAgIC8vIGV4Y2VwdGlvbiB3
YXMgdGhyb3duLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHRlc3QgaXMgY29tcGxldGUgYW5kIHRoZSBs
b29wCiAgICAgICAvLyBjYW4gZXhpdCBzdWNjZXNzZnVsbHkuCiAgICAgICBpZiAoIXJlZHVjZWRf
cmVzLmhhc192YWx1ZSgpKSB7CiAgICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNj
ZXNzKCk7CiAgICAgICB9Ci0gICAgICAvLyBJZiB0aGUgb3B0aW9uYWwgaXMgbm90IGVtcHR5IGFu
ZCB0aGUgdmFsdWUgaXMgZmFsc3ksIGFuIGludmFyaWFudCBjaGVjaworICAgICAgLy8gSWYgdGhl
IG9wdGlvbmFsIGlzIG5vdCBlbXB0eSBhbmQgdGhlIHZhbHVlIGlzIGZhbHN5LCBhbiBjb250cmFj
dCBjaGVjawogICAgICAgLy8gZmFpbGVkIHNvIHRoZSB0ZXN0IG11c3QgZXhpdCB0byBwcm9wZWdh
dGUgdGhlIGZhaWx1cmUuCiAgICAgICBpZiAoIXJlZHVjZWRfcmVzLnZhbHVlKCkpIHsKICAgICAg
ICAgcmV0dXJuIHJlZHVjZWRfcmVzLnZhbHVlKCk7CiAgICAgICB9CiAgICAgICAvLyBJZiB0aGUg
b3B0aW9uYWwgaXMgbm90IGVtcHR5IGFuZCB0aGUgdmFsdWUgaXMgbm90IGZhbHN5LCBpdCBtZWFu
cwotICAgICAgLy8gZXhjZXB0aW9ucyB3ZXJlIHRocm93biBidXQgdGhlIGludmFyaWFudHMgcGFz
c2VkIHNvIHRoZSB0ZXN0IG11c3QKKyAgICAgIC8vIGV4Y2VwdGlvbnMgd2VyZSB0aHJvd24gYnV0
IHRoZSBjb250cmFjdHMgcGFzc2VkIHNvIHRoZSB0ZXN0IG11c3QKICAgICAgIC8vIGNvbnRpbnVl
IHRvIHJ1bi4KICAgICB9CiAgIH0KIAogICBGYWN0b3J5IGZhY3RvcnlfOwogICBPcGVyYXRpb24g
b3BlcmF0aW9uXzsKLSAgc3RkOjp0dXBsZTxJbnZhcmlhbnRzLi4uPiBpbnZhcmlhbnRzXzsKKyAg
c3RkOjp0dXBsZTxDb250cmFjdHMuLi4+IGNvbnRyYWN0c187CiB9OwogCiB9ICAvLyBuYW1lc3Bh
Y2UgZXhjZXB0aW9uc19pbnRlcm5hbApAQCAtMTA5Niw3ICsxMDk2LDcgQEAgY2xhc3MgRXhjZXB0
aW9uU2FmZXR5VGVzdGVyIHsKICAqIGluc3RhbmNlcyBvZiBFeGNlcHRpb25TYWZldHlUZXN0ZXIu
CiAgKgogICogSW4gb3JkZXIgdG8gdGVzdCBhIFQgZm9yIGV4Y2VwdGlvbiBzYWZldHksIGEgZmFj
dG9yeSBmb3IgdGhhdCBULCBhIHRlc3RhYmxlCi0gKiBvcGVyYXRpb24sIGFuZCBhdCBsZWFzdCBv
bmUgaW52YXJpYW50IGNhbGxiYWNrIHJldHVybmluZyBhbiBhc3NlcnRpb24KKyAqIG9wZXJhdGlv
biwgYW5kIGF0IGxlYXN0IG9uZSBjb250cmFjdCBjYWxsYmFjayByZXR1cm5pbmcgYW4gYXNzZXJ0
aW9uCiAgKiByZXN1bHQgbXVzdCBiZSBhcHBsaWVkIHVzaW5nIHRoZSByZXNwZWN0aXZlIG1ldGhv
ZHMuCiAgKi8KIGlubGluZSBleGNlcHRpb25zX2ludGVybmFsOjpFeGNlcHRpb25TYWZldHlUZXN0
ZXI8PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9sb3dfbGV2ZWxfYWxsb2MuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvYy5jYwppbmRleCAwNjI2Y2Q1NDc4
ZDk3MDA0ZWIxZTljZGUyMTVhOTBlNDg2MmQyOWYxLi4xNTlmOTQ1ZjVlZGQwNzA3OGY4Y2FmY2Vh
OGIzNzMwYTNlOGM3MThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZl
bF9hbGxvYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZlbF9hbGxvYy5jYwpA
QCAtNDAxLDE2ICs0MDEsMjAgQEAgYm9vbCBMb3dMZXZlbEFsbG9jOjpEZWxldGVBcmVuYShBcmVu
YSAqYXJlbmEpIHsKICAgICBBQlNMX1JBV19DSEVDSyhtdW5tYXBfcmVzdWx0ICE9IDAsCiAgICAg
ICAgICAgICAgICAgICAgIkxvd0xldmVsQWxsb2M6OkRlbGV0ZUFyZW5hOiBWaXR1YWxGcmVlIGZh
aWxlZCIpOwogI2Vsc2UKKyNpZm5kZWYgQUJTTF9MT1dfTEVWRUxfQUxMT0NfQVNZTkNfU0lHTkFM
X1NBRkVfTUlTU0lORwogICAgIGlmICgoYXJlbmEtPmZsYWdzICYgTG93TGV2ZWxBbGxvYzo6a0Fz
eW5jU2lnbmFsU2FmZSkgPT0gMCkgewogICAgICAgbXVubWFwX3Jlc3VsdCA9IG11bm1hcChyZWdp
b24sIHNpemUpOwogICAgIH0gZWxzZSB7CiAgICAgICBtdW5tYXBfcmVzdWx0ID0gYmFzZV9pbnRl
cm5hbDo6RGlyZWN0TXVubWFwKHJlZ2lvbiwgc2l6ZSk7CiAgICAgfQorI2Vsc2UKKyAgICBtdW5t
YXBfcmVzdWx0ID0gbXVubWFwKHJlZ2lvbiwgc2l6ZSk7CisjZW5kaWYgIC8vIEFCU0xfTE9XX0xF
VkVMX0FMTE9DX0FTWU5DX1NJR05BTF9TQUZFX01JU1NJTkcKICAgICBpZiAobXVubWFwX3Jlc3Vs
dCAhPSAwKSB7CiAgICAgICBBQlNMX1JBV19MT0coRkFUQUwsICJMb3dMZXZlbEFsbG9jOjpEZWxl
dGVBcmVuYTogbXVubWFwIGZhaWxlZDogJWQiLAogICAgICAgICAgICAgICAgICAgIGVycm5vKTsK
ICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAgLy8gX1dJTjMyCiAgIH0KICAgc2VjdGlvbi5MZWF2ZSgp
OwogICBhcmVuYS0+fkFyZW5hKCk7CkBAIC01NDUsNiArNTQ5LDcgQEAgc3RhdGljIHZvaWQgKkRv
QWxsb2NXaXRoQXJlbmEoc2l6ZV90IHJlcXVlc3QsIExvd0xldmVsQWxsb2M6OkFyZW5hICphcmVu
YSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FTV9SRVNFUlZFIHwgTUVNX0NP
TU1JVCwgUEFHRV9SRUFEV1JJVEUpOwogICAgICAgQUJTTF9SQVdfQ0hFQ0sobmV3X3BhZ2VzICE9
IG51bGxwdHIsICJWaXJ0dWFsQWxsb2MgZmFpbGVkIik7CiAjZWxzZQorI2lmbmRlZiBBQlNMX0xP
V19MRVZFTF9BTExPQ19BU1lOQ19TSUdOQUxfU0FGRV9NSVNTSU5HCiAgICAgICBpZiAoKGFyZW5h
LT5mbGFncyAmIExvd0xldmVsQWxsb2M6OmtBc3luY1NpZ25hbFNhZmUpICE9IDApIHsKICAgICAg
ICAgbmV3X3BhZ2VzID0gYmFzZV9pbnRlcm5hbDo6RGlyZWN0TW1hcChudWxscHRyLCBuZXdfcGFn
ZXNfc2l6ZSwKICAgICAgICAgICAgIFBST1RfV1JJVEV8UFJPVF9SRUFELCBNQVBfQU5PTllNT1VT
fE1BUF9QUklWQVRFLCAtMSwgMCk7CkBAIC01NTIsMTAgKzU1NywxNSBAQCBzdGF0aWMgdm9pZCAq
RG9BbGxvY1dpdGhBcmVuYShzaXplX3QgcmVxdWVzdCwgTG93TGV2ZWxBbGxvYzo6QXJlbmEgKmFy
ZW5hKSB7CiAgICAgICAgIG5ld19wYWdlcyA9IG1tYXAobnVsbHB0ciwgbmV3X3BhZ2VzX3NpemUs
IFBST1RfV1JJVEUgfCBQUk9UX1JFQUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgTUFQX0FO
T05ZTU9VUyB8IE1BUF9QUklWQVRFLCAtMSwgMCk7CiAgICAgICB9CisjZWxzZQorICAgICAgbmV3
X3BhZ2VzID0gbW1hcChudWxscHRyLCBuZXdfcGFnZXNfc2l6ZSwgUFJPVF9XUklURSB8IFBST1Rf
UkVBRCwKKyAgICAgICAgICAgICAgICAgICAgICAgTUFQX0FOT05ZTU9VUyB8IE1BUF9QUklWQVRF
LCAtMSwgMCk7CisjZW5kaWYgIC8vIEFCU0xfTE9XX0xFVkVMX0FMTE9DX0FTWU5DX1NJR05BTF9T
QUZFX01JU1NJTkcKICAgICAgIGlmIChuZXdfcGFnZXMgPT0gTUFQX0ZBSUxFRCkgewogICAgICAg
ICBBQlNMX1JBV19MT0coRkFUQUwsICJtbWFwIGVycm9yOiAlZCIsIGVycm5vKTsKICAgICAgIH0K
LSNlbmRpZgorCisjZW5kaWYgIC8vIF9XSU4zMgogICAgICAgYXJlbmEtPm11LkxvY2soKTsKICAg
ICAgIHMgPSByZWludGVycHJldF9jYXN0PEFsbG9jTGlzdCAqPihuZXdfcGFnZXMpOwogICAgICAg
cy0+aGVhZGVyLnNpemUgPSBuZXdfcGFnZXNfc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2Uv
aW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL2xvd19sZXZl
bF9hbGxvYy5oCmluZGV4IDNjMTU2MDViZWQzNTc4ODk5Mzg5Y2M0ZWEyOTZjZWI1YmE1N2ExNWUu
LmZiYTk0NjZhNzU3NDI3YzAxZWQxMjE0NjRjM2FiMTEyZGUyMGM5YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2Jhc2UvaW50ZXJuYWwvbG93X2xldmVsX2FsbG9jLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRl
cm5hbC9sb3dfbGV2ZWxfYWxsb2MuaApAQCAtMzksMTAgKzM5LDEzIEBACiAjZGVmaW5lIEFCU0xf
TE9XX0xFVkVMX0FMTE9DX01JU1NJTkcgMQogI2VuZGlmCiAKLS8vIFVzaW5nIExvd0xldmVsQWxs
b2Mgd2l0aCBrQXN5bmNTaWduYWxTYWZlIGlzbid0IHN1cHBvcnRlZCBvbiBXaW5kb3dzLgorLy8g
VXNpbmcgTG93TGV2ZWxBbGxvYyB3aXRoIGtBc3luY1NpZ25hbFNhZmUgaXNuJ3Qgc3VwcG9ydGVk
IG9uIFdpbmRvd3Mgb3IKKy8vIGFzbS5qcyAvIFdlYkFzc2VtYmx5LgorLy8gU2VlIGh0dHBzOi8v
a3JpcGtlbi5naXRodWIuaW8vZW1zY3JpcHRlbi1zaXRlL2RvY3MvcG9ydGluZy9wdGhyZWFkcy5o
dG1sCisvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICNpZmRlZiBBQlNMX0xPV19MRVZFTF9BTExP
Q19BU1lOQ19TSUdOQUxfU0FGRV9NSVNTSU5HCiAjZXJyb3IgQUJTTF9MT1dfTEVWRUxfQUxMT0Nf
QVNZTkNfU0lHTkFMX1NBRkVfTUlTU0lORyBjYW5ub3QgYmUgZGlyZWN0bHkgc2V0Ci0jZWxpZiBk
ZWZpbmVkKF9XSU4zMikKKyNlbGlmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fYXNtanNf
XykgfHwgZGVmaW5lZChfX3dhc21fXykKICNkZWZpbmUgQUJTTF9MT1dfTEVWRUxfQUxMT0NfQVNZ
TkNfU0lHTkFMX1NBRkVfTUlTU0lORyAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFz
ZS9pbnRlcm5hbC9yYXdfbG9nZ2luZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9yYXdfbG9nZ2lu
Zy5oCmluZGV4IDY3YWJmZDMwNzk4ZGI4ZmZmNjBiMjg0YWE2YzkyZGZlMjNhNDViZWYuLjc5YTdi
YjliMmY3YTYyYmIxOTY5Y2VlYWMwMTc4MmNlNGU5ZGVjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Jhd19s
b2dnaW5nLmgKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFNhZmVXcml0ZVRvU3RkZXJyKGNvbnN0
IGNoYXIgKnMsIHNpemVfdCBsZW4pOwogCiAvLyBjb21waWxlLXRpbWUgZnVuY3Rpb24gdG8gZ2V0
IHRoZSAiYmFzZSIgZmlsZW5hbWUsIHRoYXQgaXMsIHRoZSBwYXJ0IG9mCiAvLyBhIGZpbGVuYW1l
IGFmdGVyIHRoZSBsYXN0ICIvIiBvciAiXCIgcGF0aCBzZXBhcmF0b3IuICBUaGUgc2VhcmNoIHN0
YXJ0cyBhdAotLy8gdGhlIGVuZCBvZiB0aGUgc3RkOjpzdHJpbmc7IHRoZSBzZWNvbmQgcGFyYW1l
dGVyIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0ZDo6c3RyaW5nLgorLy8gdGhlIGVuZCBvZiB0aGUg
c3RyaW5nOyB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcu
CiBjb25zdGV4cHIgY29uc3QgY2hhciogQmFzZW5hbWUoY29uc3QgY2hhciogZm5hbWUsIGludCBv
ZmZzZXQpIHsKICAgcmV0dXJuIG9mZnNldCA9PSAwIHx8IGZuYW1lW29mZnNldCAtIDFdID09ICcv
JyB8fCBmbmFtZVtvZmZzZXQgLSAxXSA9PSAnXFwnCiAgICAgICAgICAgICAgPyBmbmFtZSArIG9m
ZnNldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19saW51eC5pbmMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX2xpbnV4LmluYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGM4
NjFkYzZjYTIzYzI4ZWQyMDgyMjg5YmEyM2VmMjUzODYwMTAxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja19saW51eC5pbmMKQEAgLTAsMCArMSw3MiBAQAor
Ly8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyBUaGlzIGZpbGUg
aXMgYSBMaW51eC1zcGVjaWZpYyBwYXJ0IG9mIHNwaW5sb2NrX3dhaXQuY2MKKworI2luY2x1ZGUg
PGxpbnV4L2Z1dGV4Lmg+CisjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNpbmNsdWRlIDx1bmlz
dGQuaD4KKworI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDxjZXJybm8+CisjaW5jbHVkZSA8
Y2xpbWl0cz4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGN0aW1lPgorCisjaW5jbHVk
ZSAiYWJzbC9iYXNlL2F0dHJpYnV0ZXMuaCIKKworLy8gVGhlIFNwaW5Mb2NrIGxvY2t3b3JkIGlz
IGBzdGQ6OmF0b21pYzx1aW50MzJfdD5gLiBIZXJlIHdlIGFzc2VydCB0aGF0CisvLyBgc3RkOjph
dG9taWM8dWludDMyX3Q+YCBpcyBiaXR3aXNlIGVxdWl2YWxlbnQgb2YgdGhlIGBpbnRgIGV4cGVj
dGVkCisvLyBieSBTWVNfZnV0ZXguIFdlIGFsc28gYXNzdW1lIHRoYXQgcmVhZHMvd3JpdGVzIGRv
bmUgdG8gdGhlIGxvY2t3b3JkCisvLyBieSBTWVNfZnV0ZXggaGF2ZSByYXRpb25hbCBzZW1hbnRp
Y3Mgd2l0aCByZWdhcmQgdG8gdGhlCisvLyBzdGQ6OmF0b21pYzw+IEFQSS4gQysrIHByb3ZpZGVz
IG5vIGd1YXJhbnRlZXMgb2YgdGhlc2UgYXNzdW1wdGlvbnMsCisvLyBidXQgdGhleSBhcmUgYmVs
aWV2ZWQgdG8gaG9sZCBpbiBwcmFjdGljZS4KK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0ZDo6YXRv
bWljPHVpbnQzMl90PikgPT0gc2l6ZW9mKGludCksCisgICAgICAgICAgICAgICJTcGluTG9jayBs
b2Nrd29yZCBoYXMgdGhlIHdyb25nIHNpemUgZm9yIGEgZnV0ZXgiKTsKKworLy8gU29tZSBBbmRy
b2lkIGhlYWRlcnMgYXJlIG1pc3NpbmcgdGhlc2UgZGVmaW5pdGlvbnMgZXZlbiB0aG91Z2ggdGhl
eQorLy8gc3VwcG9ydCB0aGVzZSBmdXRleCBvcGVyYXRpb25zLgorI2lmZGVmIF9fQklPTklDX18K
KyNpZm5kZWYgU1lTX2Z1dGV4CisjZGVmaW5lIFNZU19mdXRleCBfX05SX2Z1dGV4CisjZW5kaWYK
KyNpZm5kZWYgRlVURVhfUFJJVkFURV9GTEFHCisjZGVmaW5lIEZVVEVYX1BSSVZBVEVfRkxBRyAx
MjgKKyNlbmRpZgorI2VuZGlmCisKK2V4dGVybiAiQyIgeworCitBQlNMX0FUVFJJQlVURV9XRUFL
IHZvaWQgQWJzbEludGVybmFsU3BpbkxvY2tEZWxheSgKKyAgICBzdGQ6OmF0b21pYzx1aW50MzJf
dD4gKncsIHVpbnQzMl90IHZhbHVlLCBpbnQgbG9vcCwKKyAgICBhYnNsOjpiYXNlX2ludGVybmFs
OjpTY2hlZHVsaW5nTW9kZSkgeworICBpZiAobG9vcCAhPSAwKSB7CisgICAgaW50IHNhdmVfZXJy
bm8gPSBlcnJubzsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdG07CisgICAgdG0udHZfc2VjID0gMDsK
KyAgICAvLyBJbmNyZWFzZSB0aGUgZGVsYXk7IHdlIGV4cGVjdCAoYnV0IGRvIG5vdCByZWx5IG9u
KSBleHBsaWNpdCB3YWtldXBzLgorICAgIC8vIFdlIGRvbid0IHJlbHkgb24gZXhwbGljaXQgd2Fr
ZXVwcyBiZWNhdXNlIHdlIGludGVudGlvbmFsbHkgYWxsb3cgZm9yCisgICAgLy8gYSByYWNlIG9u
IHRoZSBrU3BpbkxvY2tTbGVlcGVyIGJpdC4KKyAgICB0bS50dl9uc2VjID0gMTYgKiBhYnNsOjpi
YXNlX2ludGVybmFsOjpTcGluTG9ja1N1Z2dlc3RlZERlbGF5TlMobG9vcCk7CisgICAgc3lzY2Fs
bChTWVNfZnV0ZXgsIHcsIEZVVEVYX1dBSVQgfCBGVVRFWF9QUklWQVRFX0ZMQUcsIHZhbHVlLCAm
dG0pOworICAgIGVycm5vID0gc2F2ZV9lcnJubzsKKyAgfQorfQorCitBQlNMX0FUVFJJQlVURV9X
RUFLIHZvaWQgQWJzbEludGVybmFsU3BpbkxvY2tXYWtlKHN0ZDo6YXRvbWljPHVpbnQzMl90PiAq
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBhbGwpIHsKKyAgc3lzY2FsbChTWVNfZnV0ZXgsIHcsIEZVVEVYX1dBS0UgfCBGVVRFWF9QUklW
QVRFX0ZMQUcsIGFsbCA/IElOVF9NQVggOiAxLCAwKTsKK30KKworfSAgLy8gZXh0ZXJuICJDIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC9zcGlubG9ja193YWl0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
YmFzZS9pbnRlcm5hbC9zcGlubG9ja193YWl0LmNjCmluZGV4IDlmNmU5OTExZTEwOTZiMmYxODdj
YzZhODQzMDU0NGU5ZmMxNjYzMzMuLjBmZGU5YzA0YjczYmFmNTdkMTM0OTk4MjBjYmQ0NDcxZjM1
ZmRkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfd2FpdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX3dhaXQuY2MKQEAgLTEzLDcgKzEzLDcg
QEAKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogCiAvLyBUaGUgT1Mtc3BlY2lm
aWMgaGVhZGVyIGluY2x1ZGVkIGJlbG93IG11c3QgcHJvdmlkZSB0d28gY2FsbHM6Ci0vLyBiYXNl
OjpzdWJ0bGU6OlNwaW5Mb2NrRGVsYXkoKSBhbmQgYmFzZTo6c3VidGxlOjpTcGluTG9ja1dha2Uo
KS4KKy8vIEFic2xJbnRlcm5hbFNwaW5Mb2NrRGVsYXkoKSBhbmQgQWJzbEludGVybmFsU3Bpbkxv
Y2tXYWtlKCkuCiAvLyBTZWUgc3BpbmxvY2tfd2FpdC5oIGZvciB0aGUgc3BlY3MuCiAKICNpbmNs
dWRlIDxhdG9taWM+CkBAIC0yMyw2ICsyMyw4IEBACiAKICNpZiBkZWZpbmVkKF9XSU4zMikKICNp
bmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvc3BpbmxvY2tfd2luMzIuaW5jIgorI2VsaWYgZGVm
aW5lZChfX2xpbnV4X18pCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3NwaW5sb2NrX2xp
bnV4LmluYyIKICNlbGlmIGRlZmluZWQoX19ha2Fyb3NfXykKICNpbmNsdWRlICJhYnNsL2Jhc2Uv
aW50ZXJuYWwvc3BpbmxvY2tfYWthcm9zLmluYyIKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i
YXNlL2ludGVybmFsL3RocmVhZF9pZGVudGl0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhy
ZWFkX2lkZW50aXR5LmNjCmluZGV4IDY3OGU4NTY4ZDc0MjFlNTE0OGU5ZDE5Y2Q1NmU2ODA4NGEw
MDM3MDUuLmNmZjljMWI0ZjRkYzM5NTQyYjJhZWQ5NDRjOGM3ZWQwNjYzZmEyY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jh
c2UvaW50ZXJuYWwvdGhyZWFkX2lkZW50aXR5LmNjCkBAIC02OCw2ICs2OCwxNCBAQCB2b2lkIFNl
dEN1cnJlbnRUaHJlYWRJZGVudGl0eSgKICAgLy8gTk9URTogTm90IGFzeW5jLXNhZmUuICBCdXQg
Y2FuIGJlIG9wZW4tY29kZWQuCiAgIGFic2w6OmNhbGxfb25jZShpbml0X3RocmVhZF9pZGVudGl0
eV9rZXlfb25jZSwgQWxsb2NhdGVUaHJlYWRJZGVudGl0eUtleSwKICAgICAgICAgICAgICAgICAg
IHJlY2xhaW1lcik7CisKKyNpZmRlZiBfX0VNU0NSSVBURU5fXworICAvLyBFbXNjcmlwdGVuIFBU
aHJlYWQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzaWduYWxzLgorICAvLyBTZWUg
aHR0cHM6Ly9rcmlwa2VuLmdpdGh1Yi5pby9lbXNjcmlwdGVuLXNpdGUvZG9jcy9wb3J0aW5nL3B0
aHJlYWRzLmh0bWwKKyAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgIHB0aHJlYWRfc2V0c3Bl
Y2lmaWModGhyZWFkX2lkZW50aXR5X3B0aHJlYWRfa2V5LAorICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlkZW50aXR5KSk7CisjZWxzZQogICAvLyBXZSBtdXN0
IG1hc2sgc2lnbmFscyBhcm91bmQgdGhlIGNhbGwgdG8gc2V0c3BlY2lmaWMgYXMgd2l0aCBjdXJy
ZW50IGdsaWJjLAogICAvLyBhIGNvbmN1cnJlbnQgZ2V0c3BlY2lmaWMgKG5lZWRlZCBmb3IgR2V0
Q3VycmVudFRocmVhZElkZW50aXR5SWZQcmVzZW50KCkpCiAgIC8vIG1heSB6ZXJvIG91ciB2YWx1
ZS4KQEAgLTgxLDYgKzg5LDggQEAgdm9pZCBTZXRDdXJyZW50VGhyZWFkSWRlbnRpdHkoCiAgIHB0
aHJlYWRfc2V0c3BlY2lmaWModGhyZWFkX2lkZW50aXR5X3B0aHJlYWRfa2V5LAogICAgICAgICAg
ICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlkZW50aXR5KSk7CiAgIHB0aHJl
YWRfc2lnbWFzayhTSUdfU0VUTUFTSywgJmN1cnJfc2lnbmFscywgbnVsbHB0cik7CisjZW5kaWYg
IC8vICFfX0VNU0NSSVBURU5fXworCiAjZWxpZiBBQlNMX1RIUkVBRF9JREVOVElUWV9NT0RFID09
IEFCU0xfVEhSRUFEX0lERU5USVRZX01PREVfVVNFX1RMUwogICAvLyBOT1RFOiBOb3QgYXN5bmMt
c2FmZS4gIEJ1dCBjYW4gYmUgb3Blbi1jb2RlZC4KICAgYWJzbDo6Y2FsbF9vbmNlKGluaXRfdGhy
ZWFkX2lkZW50aXR5X2tleV9vbmNlLCBBbGxvY2F0ZVRocmVhZElkZW50aXR5S2V5LApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bmFsaWduZWRfYWNjZXNzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNl
L2ludGVybmFsL3VuYWxpZ25lZF9hY2Nlc3MuaAppbmRleCA1Yzc1MTdhYmQ3MWE2YmY1MjUwNzE5
ZDFkNThjYzdhMDVhOTA2ZTFhLi5mOWRmM2I3ODQ4YzQwYTk3NGZkOTY5N2RlZjhjZjdmZmJmZTAy
OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3VuYWxpZ25lZF9hY2Nlc3MuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3VuYWxpZ25lZF9hY2Nlc3MuaApAQCAtNjUsNiArNjUs
NyBAQCB2b2lkIF9fc2FuaXRpemVyX3VuYWxpZ25lZF9zdG9yZTY0KHZvaWQgKnAsIHVpbnQ2NF90
IHYpOwogfSAgLy8gZXh0ZXJuICJDIgogCiBuYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgYmFz
ZV9pbnRlcm5hbCB7CiAKIGlubGluZSB1aW50MTZfdCBVbmFsaWduZWRMb2FkMTYoY29uc3Qgdm9p
ZCAqcCkgewogICByZXR1cm4gX19zYW5pdGl6ZXJfdW5hbGlnbmVkX2xvYWQxNihwKTsKQEAgLTkw
LDIyICs5MSwyNyBAQCBpbmxpbmUgdm9pZCBVbmFsaWduZWRTdG9yZTY0KHZvaWQgKnAsIHVpbnQ2
NF90IHYpIHsKICAgX19zYW5pdGl6ZXJfdW5hbGlnbmVkX3N0b3JlNjQocCwgdik7CiB9CiAKK30g
IC8vIG5hbWVzcGFjZSBiYXNlX2ludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAogCi0jZGVm
aW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQxNihfcCkgKGFic2w6OlVuYWxpZ25lZExv
YWQxNihfcCkpCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQzMihfcCkgKGFi
c2w6OlVuYWxpZ25lZExvYWQzMihfcCkpCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVE
X0xPQUQ2NChfcCkgKGFic2w6OlVuYWxpZ25lZExvYWQ2NChfcCkpCisjZGVmaW5lIEFCU0xfSU5U
RVJOQUxfVU5BTElHTkVEX0xPQUQxNihfcCkgXAorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5h
bGlnbmVkTG9hZDE2KF9wKSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDMy
KF9wKSBcCisgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRMb2FkMzIoX3ApKQorI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FENjQoX3ApIFwKKyAgKGFic2w6OmJhc2Vf
aW50ZXJuYWw6OlVuYWxpZ25lZExvYWQ2NChfcCkpCiAKICNkZWZpbmUgQUJTTF9JTlRFUk5BTF9V
TkFMSUdORURfU1RPUkUxNihfcCwgX3ZhbCkgXAotICAoYWJzbDo6VW5hbGlnbmVkU3RvcmUxNihf
cCwgX3ZhbCkpCisgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRTdG9yZTE2KF9wLCBf
dmFsKSkKICNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfU1RPUkUzMihfcCwgX3ZhbCkg
XAotICAoYWJzbDo6VW5hbGlnbmVkU3RvcmUzMihfcCwgX3ZhbCkpCisgIChhYnNsOjpiYXNlX2lu
dGVybmFsOjpVbmFsaWduZWRTdG9yZTMyKF9wLCBfdmFsKSkKICNkZWZpbmUgQUJTTF9JTlRFUk5B
TF9VTkFMSUdORURfU1RPUkU2NChfcCwgX3ZhbCkgXAotICAoYWJzbDo6VW5hbGlnbmVkU3RvcmU2
NChfcCwgX3ZhbCkpCisgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRTdG9yZTY0KF9w
LCBfdmFsKSkKIAogI2VsaWYgZGVmaW5lZChVTkRFRklORURfQkVIQVZJT1JfU0FOSVRJWkVSKQog
CiBuYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgYmFzZV9pbnRlcm5hbCB7CiAKIGlubGluZSB1
aW50MTZfdCBVbmFsaWduZWRMb2FkMTYoY29uc3Qgdm9pZCAqcCkgewogICB1aW50MTZfdCB0OwpA
QCAtMTMxLDE4ICsxMzcsMjIgQEAgaW5saW5lIHZvaWQgVW5hbGlnbmVkU3RvcmUzMih2b2lkICpw
LCB1aW50MzJfdCB2KSB7IG1lbWNweShwLCAmdiwgc2l6ZW9mIHYpOyB9CiAKIGlubGluZSB2b2lk
IFVuYWxpZ25lZFN0b3JlNjQodm9pZCAqcCwgdWludDY0X3QgdikgeyBtZW1jcHkocCwgJnYsIHNp
emVvZiB2KTsgfQogCit9ICAvLyBuYW1lc3BhY2UgYmFzZV9pbnRlcm5hbAogfSAgLy8gbmFtZXNw
YWNlIGFic2wKIAotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMTYoX3ApIChh
YnNsOjpVbmFsaWduZWRMb2FkMTYoX3ApKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05F
RF9MT0FEMzIoX3ApIChhYnNsOjpVbmFsaWduZWRMb2FkMzIoX3ApKQotI2RlZmluZSBBQlNMX0lO
VEVSTkFMX1VOQUxJR05FRF9MT0FENjQoX3ApIChhYnNsOjpVbmFsaWduZWRMb2FkNjQoX3ApKQor
I2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMTYoX3ApIFwKKyAgKGFic2w6OmJh
c2VfaW50ZXJuYWw6OlVuYWxpZ25lZExvYWQxNihfcCkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxf
VU5BTElHTkVEX0xPQUQzMihfcCkgXAorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVk
TG9hZDMyKF9wKSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDY0KF9wKSBc
CisgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRMb2FkNjQoX3ApKQogCiAjZGVmaW5l
IEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFMTYoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVu
YWxpZ25lZFN0b3JlMTYoX3AsIF92YWwpKQorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGln
bmVkU3RvcmUxNihfcCwgX3ZhbCkpCiAjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NU
T1JFMzIoX3AsIF92YWwpIFwKLSAgKGFic2w6OlVuYWxpZ25lZFN0b3JlMzIoX3AsIF92YWwpKQor
ICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkU3RvcmUzMihfcCwgX3ZhbCkpCiAjZGVm
aW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX1NUT1JFNjQoX3AsIF92YWwpIFwKLSAgKGFic2w6
OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92YWwpKQorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5h
bGlnbmVkU3RvcmU2NChfcCwgX3ZhbCkpCiAKICNlbGlmIGRlZmluZWQoX194ODZfNjRfXykgfHwg
ZGVmaW5lZChfTV9YNjQpIHx8IGRlZmluZWQoX19pMzg2KSB8fCBcCiAgICAgZGVmaW5lZChfTV9J
WDg2KSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19QUENfXykgfHwgICAgXApAQCAt
MTk5LDcgKzIwOSw3IEBAIGlubGluZSB2b2lkIFVuYWxpZ25lZFN0b3JlNjQodm9pZCAqcCwgdWlu
dDY0X3QgdikgeyBtZW1jcHkocCwgJnYsIHNpemVvZiB2KTsgfQogLy8gc28gd2UgZG8gdGhhdC4K
IAogbmFtZXNwYWNlIGFic2wgewotbmFtZXNwYWNlIGludGVybmFsIHsKK25hbWVzcGFjZSBiYXNl
X2ludGVybmFsIHsKIAogc3RydWN0IFVuYWxpZ25lZDE2U3RydWN0IHsKICAgdWludDE2X3QgdmFs
dWU7CkBAIC0yMTEsMjIgKzIyMSwyNSBAQCBzdHJ1Y3QgVW5hbGlnbmVkMzJTdHJ1Y3QgewogICB1
aW50OF90IGR1bW15OyAgLy8gVG8gbWFrZSB0aGUgc2l6ZSBub24tcG93ZXItb2YtdHdvLgogfSBB
QlNMX0FUVFJJQlVURV9QQUNLRUQ7CiAKLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8g
bmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCiAKLSNkZWZpbmUg
QUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2KF9wKSBcCi0gICgocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCA6OmFic2w6OmludGVybmFsOjpVbmFsaWduZWQxNlN0cnVjdCAqPihfcCkpLT52YWx1
ZSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDMyKF9wKSBcCi0gICgocmVp
bnRlcnByZXRfY2FzdDxjb25zdCA6OmFic2w6OmludGVybmFsOjpVbmFsaWduZWQzMlN0cnVjdCAq
PihfcCkpLT52YWx1ZSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2KF9w
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICgocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCA6OmFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZDE2U3RydWN0ICo+KF9wKSkg
XAorICAgICAgIC0+dmFsdWUpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xPQUQz
MihfcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgOjphYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWQzMlN0cnVjdCAqPihf
cCkpIFwKKyAgICAgICAtPnZhbHVlKQogCi0jZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVE
X1NUT1JFMTYoX3AsIF92YWwpICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgocmVpbnRl
cnByZXRfY2FzdDwgOjphYnNsOjppbnRlcm5hbDo6VW5hbGlnbmVkMTZTdHJ1Y3QgKj4oX3ApKS0+
dmFsdWUgPSBcCi0gICAgICAgKF92YWwpKQotI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05F
RF9TVE9SRTMyKF9wLCBfdmFsKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoKHJlaW50
ZXJwcmV0X2Nhc3Q8IDo6YWJzbDo6aW50ZXJuYWw6OlVuYWxpZ25lZDMyU3RydWN0ICo+KF9wKSkt
PnZhbHVlID0gXAotICAgICAgIChfdmFsKSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdO
RURfU1RPUkUxNihfcCwgX3ZhbCkgICAgICAgICAgICAgICAgICAgICAgXAorICAoKHJlaW50ZXJw
cmV0X2Nhc3Q8IDo6YWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkMTZTdHJ1Y3QgKj4oX3Ap
KSBcCisgICAgICAgLT52YWx1ZSA9IChfdmFsKSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFM
SUdORURfU1RPUkUzMihfcCwgX3ZhbCkgICAgICAgICAgICAgICAgICAgICAgXAorICAoKHJlaW50
ZXJwcmV0X2Nhc3Q8IDo6YWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkMzJTdHJ1Y3QgKj4o
X3ApKSBcCisgICAgICAgLT52YWx1ZSA9IChfdmFsKSkKIAogbmFtZXNwYWNlIGFic2wgeworbmFt
ZXNwYWNlIGJhc2VfaW50ZXJuYWwgewogCiBpbmxpbmUgdWludDY0X3QgVW5hbGlnbmVkTG9hZDY0
KGNvbnN0IHZvaWQgKnApIHsKICAgdWludDY0X3QgdDsKQEAgLTIzNiwxMSArMjQ5LDEzIEBAIGlu
bGluZSB1aW50NjRfdCBVbmFsaWduZWRMb2FkNjQoY29uc3Qgdm9pZCAqcCkgewogCiBpbmxpbmUg
dm9pZCBVbmFsaWduZWRTdG9yZTY0KHZvaWQgKnAsIHVpbnQ2NF90IHYpIHsgbWVtY3B5KHAsICZ2
LCBzaXplb2Ygdik7IH0KIAorfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKIH0gIC8vIG5h
bWVzcGFjZSBhYnNsCiAKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDY0KF9w
KSAoYWJzbDo6VW5hbGlnbmVkTG9hZDY0KF9wKSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFM
SUdORURfTE9BRDY0KF9wKSBcCisgIChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRMb2Fk
NjQoX3ApKQogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTY0KF9wLCBfdmFs
KSBcCi0gIChhYnNsOjpVbmFsaWduZWRTdG9yZTY0KF9wLCBfdmFsKSkKKyAgKGFic2w6OmJhc2Vf
aW50ZXJuYWw6OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92YWwpKQogCiAjZWxzZQogCkBAIC0yNTIs
NiArMjY3LDcgQEAgaW5saW5lIHZvaWQgVW5hbGlnbmVkU3RvcmU2NCh2b2lkICpwLCB1aW50NjRf
dCB2KSB7IG1lbWNweShwLCAmdiwgc2l6ZW9mIHYpOyB9CiAvLyB1bmFsaWduZWQgbG9hZHMgYW5k
IHN0b3Jlcy4KIAogbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwgewog
CiBpbmxpbmUgdWludDE2X3QgVW5hbGlnbmVkTG9hZDE2KGNvbnN0IHZvaWQgKnApIHsKICAgdWlu
dDE2X3QgdDsKQEAgLTI3NywxOCArMjkzLDIyIEBAIGlubGluZSB2b2lkIFVuYWxpZ25lZFN0b3Jl
MzIodm9pZCAqcCwgdWludDMyX3QgdikgeyBtZW1jcHkocCwgJnYsIHNpemVvZiB2KTsgfQogCiBp
bmxpbmUgdm9pZCBVbmFsaWduZWRTdG9yZTY0KHZvaWQgKnAsIHVpbnQ2NF90IHYpIHsgbWVtY3B5
KHAsICZ2LCBzaXplb2Ygdik7IH0KIAorfSAgLy8gbmFtZXNwYWNlIGJhc2VfaW50ZXJuYWwKIH0g
IC8vIG5hbWVzcGFjZSBhYnNsCiAKLSNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9B
RDE2KF9wKSAoYWJzbDo6VW5hbGlnbmVkTG9hZDE2KF9wKSkKLSNkZWZpbmUgQUJTTF9JTlRFUk5B
TF9VTkFMSUdORURfTE9BRDMyKF9wKSAoYWJzbDo6VW5hbGlnbmVkTG9hZDMyKF9wKSkKLSNkZWZp
bmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDY0KF9wKSAoYWJzbDo6VW5hbGlnbmVkTG9h
ZDY0KF9wKSkKKyNkZWZpbmUgQUJTTF9JTlRFUk5BTF9VTkFMSUdORURfTE9BRDE2KF9wKSBcCisg
IChhYnNsOjpiYXNlX2ludGVybmFsOjpVbmFsaWduZWRMb2FkMTYoX3ApKQorI2RlZmluZSBBQlNM
X0lOVEVSTkFMX1VOQUxJR05FRF9MT0FEMzIoX3ApIFwKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6
OlVuYWxpZ25lZExvYWQzMihfcCkpCisjZGVmaW5lIEFCU0xfSU5URVJOQUxfVU5BTElHTkVEX0xP
QUQ2NChfcCkgXAorICAoYWJzbDo6YmFzZV9pbnRlcm5hbDo6VW5hbGlnbmVkTG9hZDY0KF9wKSkK
IAogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTE2KF9wLCBfdmFsKSBcCi0g
IChhYnNsOjpVbmFsaWduZWRTdG9yZTE2KF9wLCBfdmFsKSkKKyAgKGFic2w6OmJhc2VfaW50ZXJu
YWw6OlVuYWxpZ25lZFN0b3JlMTYoX3AsIF92YWwpKQogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VO
QUxJR05FRF9TVE9SRTMyKF9wLCBfdmFsKSBcCi0gIChhYnNsOjpVbmFsaWduZWRTdG9yZTMyKF9w
LCBfdmFsKSkKKyAgKGFic2w6OmJhc2VfaW50ZXJuYWw6OlVuYWxpZ25lZFN0b3JlMzIoX3AsIF92
YWwpKQogI2RlZmluZSBBQlNMX0lOVEVSTkFMX1VOQUxJR05FRF9TVE9SRTY0KF9wLCBfdmFsKSBc
Ci0gIChhYnNsOjpVbmFsaWduZWRTdG9yZTY0KF9wLCBfdmFsKSkKKyAgKGFic2w6OmJhc2VfaW50
ZXJuYWw6OlVuYWxpZ25lZFN0b3JlNjQoX3AsIF92YWwpKQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvYmFzZS9sb2dfc2V2ZXJpdHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvbG9nX3NldmVyaXR5LmgK
aW5kZXggZTI5MzFjMzRkMWRmNTRhN2JiZjdlZDcxZGU4NTg1MDMzNjJjNzMzNy4uNTc3MGQzNjI5
ZTcyNjQ2ODlmNjAyOWNiNmQ2NDI4NTU0NWJmNGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9s
b2dfc2V2ZXJpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2xvZ19zZXZlcml0eS5oCkBAIC0zOSw3ICsz
OSw3IEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PGFic2w6OkxvZ1NldmVyaXR5LCA0PiBMb2dTZXZl
cml0aWVzKCkgewogICAgICAgICAgICBhYnNsOjpMb2dTZXZlcml0eTo6a0Vycm9yLCBhYnNsOjpM
b2dTZXZlcml0eTo6a0ZhdGFsfX07CiB9CiAKLS8vIFJldHVybnMgdGhlIGFsbC1jYXBzIHN0ZDo6
c3RyaW5nIHJlcHJlc2VudGF0aW9uIChlLmcuICJJTkZPIikgb2YgdGhlIHNwZWNpZmllZAorLy8g
UmV0dXJucyB0aGUgYWxsLWNhcHMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIChlLmcuICJJTkZPIikg
b2YgdGhlIHNwZWNpZmllZAogLy8gc2V2ZXJpdHkgbGV2ZWwgaWYgaXQgaXMgb25lIG9mIHRoZSBu
b3JtYWwgbGV2ZWxzIGFuZCAiVU5LTk9XTiIgb3RoZXJ3aXNlLgogY29uc3RleHByIGNvbnN0IGNo
YXIqIExvZ1NldmVyaXR5TmFtZShhYnNsOjpMb2dTZXZlcml0eSBzKSB7CiAgIHJldHVybiBzID09
IGFic2w6OkxvZ1NldmVyaXR5OjprSW5mbwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9yYXdfbG9n
Z2luZ190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9yYXdfbG9nZ2luZ190ZXN0LmNjCmluZGV4IGViYmM1
ZGI5MDY3MjdmNmNiMmMwM2E2M2U5OWE4OTdmNWNlYjVhYTQuLmIyMWNmNjUxNzU4ZTNjMjQ5MjYy
ZTY5YzFjOGJhMTdjMWM5YTdhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvcmF3X2xvZ2dpbmdf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL3Jhd19sb2dnaW5nX3Rlc3QuY2MKQEAgLTQwLDcgKzQw
LDcgQEAgVEVTVChSYXdMb2dnaW5nQ29tcGlsYXRpb25UZXN0LCBQYXNzaW5nQ2hlY2spIHsKIH0K
IAogLy8gTm90IGFsbCBwbGF0Zm9ybXMgc3VwcG9ydCBvdXRwdXQgZnJvbSByYXcgbG9nLCBzbyB3
ZSBkb24ndCB2ZXJpZnkgYW55Ci0vLyBwYXJ0aWN1bGFyIG91dHB1dCBmb3IgUkFXIGNoZWNrIGZh
aWx1cmVzIChleHBlY3RpbmcgdGhlIGVtcHR5IHN0ZDo6c3RyaW5nCisvLyBwYXJ0aWN1bGFyIG91
dHB1dCBmb3IgUkFXIGNoZWNrIGZhaWx1cmVzIChleHBlY3RpbmcgdGhlIGVtcHR5IHN0cmluZwog
Ly8gYWNjb21wbGlzaGVzIHRoaXMpLiAgVGhpcyB0ZXN0IGlzIHByaW1hcmlseSBhIGNvbXBpbGF0
aW9uIHRlc3QsIGJ1dCB3ZQogLy8gYXJlIHZlcmlmeWluZyBwcm9jZXNzIGRlYXRoIHdoZW4gRVhQ
RUNUX0RFQVRIIHdvcmtzIGZvciBhIHBsYXRmb3JtLgogY29uc3QgY2hhciBrRXhwZWN0ZWREZWF0
aE91dHB1dFtdID0gIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvQlVJTEQuYmF6ZWwg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvQlVJTEQuYmF6ZWwKaW5kZXggNmQ1Yzk1OGYzODJiYTYzOTdmMGIw
ZGYxY2Y5OTY2NzhhN2EzYzVhNi4uZjIyMTBlM2MxOTc5ODNmYWI2MDM0ZDgxODE1NDc3OWI3MTcz
MmYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0JVSUxELmJhemVsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9CVUlMRC5iYXplbApAQCAtMTksNiArMTksNyBAQCBsb2FkKAogICAgICJBQlNM
X0RFRkFVTFRfQ09QVFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAogICAgICJBQlNMX0VYQ0VQ
VElPTlNfRkxBRyIsCisgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTIiwKICkKIAog
cGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKQEAg
LTYyLDkgKzYzLDExIEBAIGNjX3Rlc3QoCiAgICAgbmFtZSA9ICJmaXhlZF9hcnJheV90ZXN0IiwK
ICAgICBzcmNzID0gWyJmaXhlZF9hcnJheV90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhD
RVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6Zml4ZWRfYXJy
YXkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3Rlc3RpbmciLAorICAgICAgICAi
Ly9hYnNsL2hhc2g6aGFzaF90ZXN0aW5nIiwKICAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAogICAg
ICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAogICAgIF0sCkBAIC03
Nyw2ICs4MCw3IEBAIGNjX3Rlc3QoCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpmaXhlZF9hcnJh
eSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fdGVzdGluZyIsCisgICAgICAgICIv
L2Fic2wvaGFzaDpoYXNoX3Rlc3RpbmciLAogICAgICAgICAiLy9hYnNsL21lbW9yeSIsCiAgICAg
ICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCiAgICAgXSwKQEAgLTg2
LDYgKzkwLDcgQEAgY2NfdGVzdCgKICAgICBuYW1lID0gImZpeGVkX2FycmF5X2V4Y2VwdGlvbl9z
YWZldHlfdGVzdCIsCiAgICAgc3JjcyA9IFsiZml4ZWRfYXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90
ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNf
RkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAg
IGRlcHMgPSBbCiAgICAgICAgICI6Zml4ZWRfYXJyYXkiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6
ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nIiwKQEAgLTEyMCwxMiArMTI1LDE0IEBAIGNjX3Rlc3Qo
CiAgICAgbmFtZSA9ICJpbmxpbmVkX3ZlY3Rvcl90ZXN0IiwKICAgICBzcmNzID0gWyJpbmxpbmVk
X3ZlY3Rvcl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VY
Q0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktP
UFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6aW5saW5lZF92ZWN0b3IiLAogICAgICAgICAi
OnRlc3RfaW5zdGFuY2VfdHJhY2tlciIsCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCiAgICAgICAg
ICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0
aW9uX3Rlc3RpbmciLAorICAgICAgICAiLy9hYnNsL2hhc2g6aGFzaF90ZXN0aW5nIiwKICAgICAg
ICAgIi8vYWJzbC9tZW1vcnkiLAogICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAogICAgICAgICAi
QGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLApAQCAtMTQyLDYgKzE0OSw3IEBA
IGNjX3Rlc3QoCiAgICAgICAgICIvL2Fic2wvYmFzZSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpj
b3JlX2hlYWRlcnMiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3Rlc3RpbmciLAor
ICAgICAgICAiLy9hYnNsL2hhc2g6aGFzaF90ZXN0aW5nIiwKICAgICAgICAgIi8vYWJzbC9tZW1v
cnkiLAogICAgICAgICAiLy9hYnNsL3N0cmluZ3MiLAogICAgICAgICAiQGNvbV9nb29nbGVfZ29v
Z2xldGVzdC8vOmd0ZXN0X21haW4iLApAQCAtMTgxLDMgKzE4OSw0NTkgQEAgY2NfdGVzdCgKICAg
ICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAgICBdLAogKQor
CitOT1RFU1RfVEFHU19OT05NT0JJTEUgPSBbCisgICAgIm5vX3Rlc3RfZGFyd2luX3g4Nl82NCIs
CisgICAgIm5vX3Rlc3RfbG9vbml4IiwKK10KKworTk9URVNUX1RBR1NfTU9CSUxFID0gWworICAg
ICJub190ZXN0X2FuZHJvaWRfYXJtIiwKKyAgICAibm9fdGVzdF9hbmRyb2lkX2FybTY0IiwKKyAg
ICAibm9fdGVzdF9hbmRyb2lkX3g4NiIsCisgICAgIm5vX3Rlc3RfaW9zX3g4Nl82NCIsCitdCisK
K05PVEVTVF9UQUdTID0gTk9URVNUX1RBR1NfTU9CSUxFICsgTk9URVNUX1RBR1NfTk9OTU9CSUxF
CisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJmbGF0X2hhc2hfbWFwIiwKKyAgICBoZHJzID0g
WyJmbGF0X2hhc2hfbWFwLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAg
ICBkZXBzID0gWworICAgICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICAgICAiOmhhc2hf
ZnVuY3Rpb25fZGVmYXVsdHMiLAorICAgICAgICAiOnJhd19oYXNoX21hcCIsCisgICAgICAgICIv
L2Fic2wvbWVtb3J5IiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZmxhdF9o
YXNoX21hcF90ZXN0IiwKKyAgICBzcmNzID0gWyJmbGF0X2hhc2hfbWFwX3Rlc3QuY2MiXSwKKyAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIFsiLURVTk9SREVSRURfTUFQX0NYWDE3Il0sCisg
ICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwKKyAgICBkZXBzID0gWworICAgICAgICAi
OmZsYXRfaGFzaF9tYXAiLAorICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAg
ICAgICAiOnVub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdCIsCisgICAgICAgICI6dW5vcmRl
cmVkX21hcF9sb29rdXBfdGVzdCIsCisgICAgICAgICI6dW5vcmRlcmVkX21hcF9tb2RpZmllcnNf
dGVzdCIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6YW55IiwKKyAgICAgICAgIkBjb21fZ29vZ2xl
X2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAg
IG5hbWUgPSAiZmxhdF9oYXNoX3NldCIsCisgICAgaGRycyA9IFsiZmxhdF9oYXNoX3NldC5oIl0s
CisgICAgY29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAg
Ijpjb250YWluZXJfbWVtb3J5IiwKKyAgICAgICAgIjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzIiwK
KyAgICAgICAgIjpyYXdfaGFzaF9zZXQiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFk
ZXJzIiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisg
ICAgbmFtZSA9ICJmbGF0X2hhc2hfc2V0X3Rlc3QiLAorICAgIHNyY3MgPSBbImZsYXRfaGFzaF9z
ZXRfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgWyItRFVOT1JERVJF
RF9TRVRfQ1hYMTciXSwKKyAgICB0YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxFLAorICAgIGRl
cHMgPSBbCisgICAgICAgICI6ZmxhdF9oYXNoX3NldCIsCisgICAgICAgICI6aGFzaF9nZW5lcmF0
b3JfdGVzdGluZyIsCisgICAgICAgICI6dW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0IiwK
KyAgICAgICAgIjp1bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVy
ZWRfc2V0X21vZGlmaWVyc190ZXN0IiwKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAorICAgICAg
ICAiLy9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0
ZXN0X21haW4iLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJub2RlX2hh
c2hfbWFwIiwKKyAgICBoZHJzID0gWyJub2RlX2hhc2hfbWFwLmgiXSwKKyAgICBjb3B0cyA9IEFC
U0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmNvbnRhaW5lcl9tZW1v
cnkiLAorICAgICAgICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAorICAgICAgICAiOm5vZGVf
aGFzaF9wb2xpY3kiLAorICAgICAgICAiOnJhd19oYXNoX21hcCIsCisgICAgICAgICIvL2Fic2wv
bWVtb3J5IiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAibm9kZV9oYXNoX21h
cF90ZXN0IiwKKyAgICBzcmNzID0gWyJub2RlX2hhc2hfbWFwX3Rlc3QuY2MiXSwKKyAgICBjb3B0
cyA9IEFCU0xfVEVTVF9DT1BUUyArIFsiLURVTk9SREVSRURfTUFQX0NYWDE3Il0sCisgICAgdGFn
cyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2hf
Z2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICAgICAiOm5vZGVfaGFzaF9tYXAiLAorICAgICAgICAi
OnRyYWNrZWQiLAorICAgICAgICAiOnVub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdCIsCisg
ICAgICAgICI6dW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdCIsCisgICAgICAgICI6dW5vcmRlcmVk
X21hcF9tb2RpZmllcnNfdGVzdCIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86
Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gIm5vZGVf
aGFzaF9zZXQiLAorICAgIGhkcnMgPSBbIm5vZGVfaGFzaF9zZXQuaCJdLAorICAgIGNvcHRzID0g
QUJTTF9ERUZBVUxUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6Y29udGFpbmVyX21l
bW9yeSIsCisgICAgICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCisgICAgICAgICI6bm9k
ZV9oYXNoX3BvbGljeSIsCisgICAgICAgICI6cmF3X2hhc2hfc2V0IiwKKyAgICAgICAgIi8vYWJz
bC9tZW1vcnkiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJub2RlX2hhc2hf
c2V0X3Rlc3QiLAorICAgIHNyY3MgPSBbIm5vZGVfaGFzaF9zZXRfdGVzdC5jYyJdLAorICAgIGNv
cHRzID0gQUJTTF9URVNUX0NPUFRTICsgWyItRFVOT1JERVJFRF9TRVRfQ1hYMTciXSwKKyAgICB0
YWdzID0gTk9URVNUX1RBR1NfTk9OTU9CSUxFLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFz
aF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgICAgICI6bm9kZV9oYXNoX3NldCIsCisgICAgICAg
ICI6dW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRf
c2V0X2xvb2t1cF90ZXN0IiwKKyAgICAgICAgIjp1bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0
IiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBd
LAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAiY29udGFpbmVyX21lbW9yeSIsCisgICAg
aGRycyA9IFsiaW50ZXJuYWwvY29udGFpbmVyX21lbW9yeS5oIl0sCisgICAgY29wdHMgPSBBQlNM
X0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9tZW1vcnkiLAor
ICAgICAgICAiLy9hYnNsL3V0aWxpdHkiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFt
ZSA9ICJjb250YWluZXJfbWVtb3J5X3Rlc3QiLAorICAgIHNyY3MgPSBbImludGVybmFsL2NvbnRh
aW5lcl9tZW1vcnlfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAg
IHRhZ3MgPSBOT1RFU1RfVEFHU19OT05NT0JJTEUsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpj
b250YWluZXJfbWVtb3J5IiwKKyAgICAgICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICAgICAgIkBj
b21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY19saWJy
YXJ5KAorICAgIG5hbWUgPSAiaGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCisgICAgaGRycyA9IFsi
aW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIl0sCisgICAgY29wdHMgPSBBQlNMX0RF
RkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIs
CisgICAgICAgICIvL2Fic2wvaGFzaCIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAg
XSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImhhc2hfZnVuY3Rpb25fZGVmYXVsdHNfdGVz
dCIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0c190ZXN0LmNj
Il0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgdGFncyA9IE5PVEVTVF9UQUdT
LAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCisgICAg
ICAgICIvL2Fic2wvaGFzaCIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJA
Y29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfbGli
cmFyeSgKKyAgICBuYW1lID0gImhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgIHRlc3Rvbmx5
ID0gMSwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmNjIl0s
CisgICAgaGRycyA9IFsiaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIl0sCisgICAg
Y29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpoYXNoX3Bv
bGljeV90ZXN0aW5nIiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAg
ICAgIi8vYWJzbC9zdHJpbmdzIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUg
PSAiaGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBb
ImludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCJdLAorICAgIGNvcHRzID0gQUJTTF9URVNU
X0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICIvL2Fic2wvaGFzaCIsCisgICAgICAgICIv
L2Fic2wvc3RyaW5ncyIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImhhc2hf
cG9saWN5X3Rlc3RpbmdfdGVzdCIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvaGFzaF9wb2xpY3lf
dGVzdGluZ190ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVw
cyA9IFsKKyAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAgICAgIkBjb21fZ29v
Z2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAor
ICAgIG5hbWUgPSAiaGFzaF9wb2xpY3lfdHJhaXRzIiwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9o
YXNoX3BvbGljeV90cmFpdHMuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAor
ICAgIGRlcHMgPSBbIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIl0sCispCisKK2NjX3Rlc3QoCisg
ICAgbmFtZSA9ICJoYXNoX3BvbGljeV90cmFpdHNfdGVzdCIsCisgICAgc3JjcyA9IFsiaW50ZXJu
YWwvaGFzaF9wb2xpY3lfdHJhaXRzX3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2hfcG9saWN5X3RyYWl0cyIsCisgICAg
ICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKwor
Y2NfbGlicmFyeSgKKyAgICBuYW1lID0gImhhc2h0YWJsZV9kZWJ1ZyIsCisgICAgaGRycyA9IFsi
aW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnLmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9D
T1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2h0YWJsZV9kZWJ1Z19ob29rcyIsCisg
ICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImhhc2h0YWJsZV9kZWJ1Z19ob29r
cyIsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnX2hvb2tzLmgiXSwKKyAg
ICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1l
ID0gIm5vZGVfaGFzaF9wb2xpY3kiLAorICAgIGhkcnMgPSBbImludGVybmFsL25vZGVfaGFzaF9w
b2xpY3kuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorKQorCitjY190ZXN0
KAorICAgIG5hbWUgPSAibm9kZV9oYXNoX3BvbGljeV90ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRl
cm5hbC9ub2RlX2hhc2hfcG9saWN5X3Rlc3QuY2MiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9D
T1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2hfcG9saWN5X3RyYWl0cyIsCisgICAg
ICAgICI6bm9kZV9oYXNoX3BvbGljeSIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0
Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gInJh
d19oYXNoX21hcCIsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiXSwKKyAg
ICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmNv
bnRhaW5lcl9tZW1vcnkiLAorICAgICAgICAiOnJhd19oYXNoX3NldCIsCisgICAgXSwKKykKKwor
Y2NfbGlicmFyeSgKKyAgICBuYW1lID0gInJhd19oYXNoX3NldCIsCisgICAgc3JjcyA9IFsiaW50
ZXJuYWwvcmF3X2hhc2hfc2V0LmNjIl0sCisgICAgaGRycyA9IFsiaW50ZXJuYWwvcmF3X2hhc2hf
c2V0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfREVGQVVMVF9DT1BUUywKKyAgICBkZXBzID0gWwor
ICAgICAgICAiOmNvbXByZXNzZWRfdHVwbGUiLAorICAgICAgICAiOmNvbnRhaW5lcl9tZW1vcnki
LAorICAgICAgICAiOmhhc2hfcG9saWN5X3RyYWl0cyIsCisgICAgICAgICI6aGFzaHRhYmxlX2Rl
YnVnX2hvb2tzIiwKKyAgICAgICAgIjpsYXlvdXQiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Yml0
cyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLAorICAgICAgICAiLy9hYnNsL2Jhc2U6
Y29yZV9oZWFkZXJzIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmVuZGlhbiIsCisgICAgICAgICIv
L2Fic2wvbWVtb3J5IiwKKyAgICAgICAgIi8vYWJzbC9tZXRhOnR5cGVfdHJhaXRzIiwKKyAgICAg
ICAgIi8vYWJzbC90eXBlczpvcHRpb25hbCIsCisgICAgICAgICIvL2Fic2wvdXRpbGl0eSIsCisg
ICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInJhd19oYXNoX3NldF90ZXN0IiwKKyAg
ICBzcmNzID0gWyJpbnRlcm5hbC9yYXdfaGFzaF9zZXRfdGVzdC5jYyJdLAorICAgIGNvcHRzID0g
QUJTTF9URVNUX0NPUFRTLAorICAgIGxpbmtzdGF0aWMgPSAxLAorICAgIHRhZ3MgPSBOT1RFU1Rf
VEFHUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICAg
ICAiOmhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiLAorICAgICAgICAiOmhhc2hfcG9saWN5X3Rlc3Rp
bmciLAorICAgICAgICAiOmhhc2h0YWJsZV9kZWJ1ZyIsCisgICAgICAgICI6cmF3X2hhc2hfc2V0
IiwKKyAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVh
ZGVycyIsCisgICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICJAY29tX2dvb2dsZV9n
b29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1l
ID0gInJhd19oYXNoX3NldF9hbGxvY2F0b3JfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisg
ICAgc3JjcyA9IFsiaW50ZXJuYWwvcmF3X2hhc2hfc2V0X2FsbG9jYXRvcl90ZXN0LmNjIl0sCisg
ICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpyYXdf
aGFzaF9zZXQiLAorICAgICAgICAiOnRyYWNrZWQiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6Y29y
ZV9oZWFkZXJzIiwKKyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWlu
IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAibGF5b3V0IiwKKyAgICBo
ZHJzID0gWyJpbnRlcm5hbC9sYXlvdXQuaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NP
UFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAor
ICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL3N0cmlu
Z3MiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOnNwYW4iLAorICAgICAgICAiLy9hYnNsL3V0aWxp
dHkiLAorICAgIF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJsYXlvdXRfdGVzdCIsCisg
ICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiaW50ZXJuYWwvbGF5b3V0X3Rlc3QuY2Mi
XSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0gTk9URVNUX1RBR1Ms
CisgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKKyAgICBkZXBzID0g
WworICAgICAgICAiOmxheW91dCIsCisgICAgICAgICIvL2Fic2wvYmFzZSIsCisgICAgICAgICIv
L2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAiLy9hYnNsL3R5cGVzOnNwYW4iLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCisp
CisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJ0cmFja2VkIiwKKyAgICB0ZXN0b25seSA9IDEs
CisgICAgaGRycyA9IFsiaW50ZXJuYWwvdHJhY2tlZC5oIl0sCisgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMsCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFtZSA9ICJ1bm9yZGVyZWRfbWFwX2Nv
bnN0cnVjdG9yX3Rlc3QiLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5h
bC91bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QuaCJdLAorICAgIGNvcHRzID0gQUJTTF9U
RVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGlu
ZyIsCisgICAgICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgICAgICJAY29tX2dvb2ds
ZV9nb29nbGV0ZXN0Ly86Z3Rlc3QiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAgbmFt
ZSA9ICJ1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0IiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAg
aGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdC5oIl0sCisgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpoYXNoX2dlbmVy
YXRvcl90ZXN0aW5nIiwKKyAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAgICAg
IkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdCIsCisgICAgXSwKKykKKworY2NfbGlicmFy
eSgKKyAgICBuYW1lID0gInVub3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QiLAorICAgIHRlc3Rv
bmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190
ZXN0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0gWworICAg
ICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICAgICAiOmhhc2hfcG9saWN5X3Rl
c3RpbmciLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0IiwKKyAgICBd
LAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAidW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rv
cl90ZXN0IiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRl
cmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0LmgiXSwKKyAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BU
UywKKyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAg
ICAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xl
dGVzdC8vOmd0ZXN0IiwKKyAgICBdLAorKQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAidW5v
cmRlcmVkX3NldF9sb29rdXBfdGVzdCIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIGhkcnMgPSBb
ImludGVybmFsL3Vub3JkZXJlZF9zZXRfbG9va3VwX3Rlc3QuaCJdLAorICAgIGNvcHRzID0gQUJT
TF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAgICAgICI6aGFzaF9nZW5lcmF0b3JfdGVz
dGluZyIsCisgICAgICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgICAgICJAY29tX2dv
b2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3QiLAorICAgIF0sCispCisKK2NjX2xpYnJhcnkoCisgICAg
bmFtZSA9ICJ1bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0IiwKKyAgICB0ZXN0b25seSA9IDEs
CisgICAgaGRycyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oIl0s
CisgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIjpo
YXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwK
KyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdCIsCisgICAgXSwKKykKKwor
Y2NfdGVzdCgKKyAgICBuYW1lID0gInVub3JkZXJlZF9zZXRfdGVzdCIsCisgICAgc3JjcyA9IFsi
aW50ZXJuYWwvdW5vcmRlcmVkX3NldF90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBBQlNMX1RFU1Rf
Q09QVFMsCisgICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwKKyAgICBkZXBzID0gWwor
ICAgICAgICAiOnVub3JkZXJlZF9zZXRfY29uc3RydWN0b3JfdGVzdCIsCisgICAgICAgICI6dW5v
cmRlcmVkX3NldF9sb29rdXBfdGVzdCIsCisgICAgICAgICI6dW5vcmRlcmVkX3NldF9tb2RpZmll
cnNfdGVzdCIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIs
CisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gInVub3JkZXJlZF9tYXBfdGVzdCIs
CisgICAgc3JjcyA9IFsiaW50ZXJuYWwvdW5vcmRlcmVkX21hcF90ZXN0LmNjIl0sCisgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMsCisgICAgdGFncyA9IE5PVEVTVF9UQUdTX05PTk1PQklMRSwK
KyAgICBkZXBzID0gWworICAgICAgICAiOnVub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdCIs
CisgICAgICAgICI6dW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdCIsCisgICAgICAgICI6dW5vcmRl
cmVkX21hcF9tb2RpZmllcnNfdGVzdCIsCisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0
Ly86Z3Rlc3RfbWFpbiIsCisgICAgXSwKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9C
VUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9CVUlMRC5nbgppbmRleCAwMDFhMmEzNmQ0ODQ2ZDU3
ZTg1MWY4MTQzZjhhYWE1Yzk5MTU4MzBhLi5hMmZiZDU0MzMxNmQ0NTZiNWRmMTQ3MzEzM2UzMWQw
NDA5YjcyNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvQlVJTEQuZ24KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL0JVSUxELmduCkBAIC04NCwzICs4NCwzODkgQEAgc291cmNlX3NldCgidGVz
dF9pbnN0YW5jZV90cmFja2VyIikgewogICB2aXNpYmlsaXR5ID0gW10KICAgdmlzaWJpbGl0eSAr
PSBbICIuLi8qIiBdCiB9CisKK3NvdXJjZV9zZXQoImZsYXRfaGFzaF9tYXAiKSB7CisgIGNvbmZp
Z3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25m
aWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwK
KyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNs
X2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiZmxhdF9oYXNoX21hcC5oIiwK
KyAgXQorICBkZXBzID0gWworICAgICI6Y29udGFpbmVyX21lbW9yeSIsCisgICAgIjpoYXNoX2Z1
bmN0aW9uX2RlZmF1bHRzIiwKKyAgICAiOnJhd19oYXNoX21hcCIsCisgICAgIi4uL21lbW9yeSIs
CisgIF0KK30KKworc291cmNlX3NldCgiZmxhdF9oYXNoX3NldCIpIHsKKyAgY29uZmlncyAtPSBb
ICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0g
WworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisg
IHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVk
ZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJmbGF0X2hhc2hfc2V0LmgiLAorICBdCisg
IGRlcHMgPSBbCisgICAgIjpjb250YWluZXJfbWVtb3J5IiwKKyAgICAiOmhhc2hfZnVuY3Rpb25f
ZGVmYXVsdHMiLAorICAgICI6cmF3X2hhc2hfc2V0IiwKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRl
cnMiLAorICAgICIuLi9tZW1vcnkiLAorICBdCit9CisKK3NvdXJjZV9zZXQoIm5vZGVfaGFzaF9t
YXAiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1f
Y29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9f
Y2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1
bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAibm9k
ZV9oYXNoX21hcC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y29udGFpbmVyX21lbW9yeSIs
CisgICAgIjpoYXNoX2Z1bmN0aW9uX2RlZmF1bHRzIiwKKyAgICAiOm5vZGVfaGFzaF9wb2xpY3ki
LAorICAgICI6cmF3X2hhc2hfbWFwIiwKKyAgICAiLi4vbWVtb3J5IiwKKyAgXQorfQorCitzb3Vy
Y2Vfc2V0KCJub2RlX2hhc2hfc2V0IikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmln
L2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQv
Y29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3Mg
PSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBw
dWJsaWMgPSBbCisgICAgIm5vZGVfaGFzaF9zZXQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAi
OmNvbnRhaW5lcl9tZW1vcnkiLAorICAgICI6aGFzaF9mdW5jdGlvbl9kZWZhdWx0cyIsCisgICAg
Ijpub2RlX2hhc2hfcG9saWN5IiwKKyAgICAiOnJhd19oYXNoX3NldCIsCisgICAgIi4uL21lbW9y
eSIsCisgIF0KK30KKworc291cmNlX3NldCgiY29udGFpbmVyX21lbW9yeSIpIHsKKyAgY29uZmln
cyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZp
Z3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwK
KyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAor
ICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xf
aW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC9jb250YWluZXJf
bWVtb3J5LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIi4uL21lbW9yeSIsCisgICAgIi4uL3V0
aWxpdHkiLAorICBdCit9CisKK3NvdXJjZV9zZXQoImhhc2hfZnVuY3Rpb25fZGVmYXVsdHMiKSB7
CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIg
XQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21p
dW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2Zs
YWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwv
aGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi9iYXNl
OmNvbmZpZyIsCisgICAgIi4uL2hhc2giLAorICAgICIuLi9zdHJpbmdzIiwKKyAgXQorfQorCitz
b3VyY2Vfc2V0KCJoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIikgeworICB0ZXN0b25seSA9IHRydWUK
KyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBd
CisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1
bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxh
Z3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW50ZXJuYWwv
aGFzaF9nZW5lcmF0b3JfdGVzdGluZy5jYyIsCisgIF0KKyAgcHVibGljID0gWworICAgICJpbnRl
cm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpo
YXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi4u
L3N0cmluZ3MiLAorICBdCit9CisKK3NvdXJjZV9zZXQoImhhc2hfcG9saWN5X3Rlc3RpbmciKSB7
CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBp
bGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29uZmln
L2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJsaWMg
PSBbCisgICAgImludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIsCisgIF0KKyAgZGVwcyA9
IFsKKyAgICAiLi4vaGFzaCIsCisgICAgIi4uL3N0cmluZ3MiLAorICBdCit9CisKK3NvdXJjZV9z
ZXQoImhhc2hfcG9saWN5X3RyYWl0cyIpIHsKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZp
Zy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxk
L2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdz
ID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAg
cHVibGljID0gWworICAgICJpbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaCIsCisgIF0KKyAg
ZGVwcyA9IFsKKyAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgIF0KK30KKworc291cmNlX3Nl
dCgiaGFzaHRhYmxlX2RlYnVnIikgeworICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2Nv
bXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQvY29u
ZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBb
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBwdWJs
aWMgPSBbCisgICAgImludGVybmFsL2hhc2h0YWJsZV9kZWJ1Zy5oIiwKKyAgXQorICBkZXBzID0g
WworICAgICI6aGFzaHRhYmxlX2RlYnVnX2hvb2tzIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJo
YXNodGFibGVfZGVidWdfaG9va3MiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9j
b25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9
IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1
YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnX2hvb2tzLmgiLAorICBdCit9
CisKK3NvdXJjZV9zZXQoIm5vZGVfaGFzaF9wb2xpY3kiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9i
dWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAg
ICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJs
aWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29u
ZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIiwK
KyAgXQorfQorCitzb3VyY2Vfc2V0KCJyYXdfaGFzaF9tYXAiKSB7CisgIGNvbmZpZ3MgLT0gWyAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsK
KyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBw
dWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVf
Y29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgiLAor
ICBdCisgIGRlcHMgPSBbCisgICAgIjpjb250YWluZXJfbWVtb3J5IiwKKyAgICAiOnJhd19oYXNo
X3NldCIsCisgIF0KK30KKworc291cmNlX3NldCgicmF3X2hhc2hfc2V0IikgeworICBjb25maWdz
IC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmln
cyArPSBbCisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAor
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisg
IF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9p
bmNsdWRlX2NvbmZpZyIgXQorICBzb3VyY2VzID0gWworICAgICJpbnRlcm5hbC9yYXdfaGFzaF9z
ZXQuY2MiLAorICBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvcmF3X2hhc2hfc2V0Lmgi
LAorICBdCisgIGRlcHMgPSBbCisgICAgIjpjb21wcmVzc2VkX3R1cGxlIiwKKyAgICAiOmNvbnRh
aW5lcl9tZW1vcnkiLAorICAgICI6aGFzaF9wb2xpY3lfdHJhaXRzIiwKKyAgICAiOmhhc2h0YWJs
ZV9kZWJ1Z19ob29rcyIsCisgICAgIjpsYXlvdXQiLAorICAgICIuLi9iYXNlOmJpdHMiLAorICAg
ICIuLi9iYXNlOmNvbmZpZyIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4v
YmFzZTplbmRpYW4iLAorICAgICIuLi9tZW1vcnkiLAorICAgICIuLi9tZXRhOnR5cGVfdHJhaXRz
IiwKKyAgICAiLi4vdHlwZXM6b3B0aW9uYWwiLAorICAgICIuLi91dGlsaXR5IiwKKyAgXQorfQor
Citzb3VyY2Vfc2V0KCJsYXlvdXQiKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcv
Y29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9j
b25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9
IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1
YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvbGF5b3V0LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAg
Ii4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgICAg
Ii4uL3N0cmluZ3MiLAorICAgICIuLi90eXBlczpzcGFuIiwKKyAgICAiLi4vdXRpbGl0eSIsCisg
IF0KK30KKworc291cmNlX3NldCgidHJhY2tlZCIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNv
bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBj
b25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29k
ZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2Nj
IiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDph
YnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvdHJhY2tl
ZC5oIiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rl
c3QiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmln
L2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBbCisgICAgIi8vYnVpbGQv
Y29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAgcHVibGljX2NvbmZpZ3Mg
PSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRlX2NvbmZpZyIgXQorICBw
dWJsaWMgPSBbCisgICAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5o
IiwKKyAgXQorICBkZXBzID0gWworICAgICI6aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAg
IjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgXQorfQor
Citzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0IikgeworICB0ZXN0b25seSA9
IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9j
b2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19j
aHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVs
dF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRl
cm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAg
IjpoYXNoX2dlbmVyYXRvcl90ZXN0aW5nIiwKKyAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAor
ICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAorICBdCit9CisKK3NvdXJjZV9zZXQoInVub3JkZXJlZF9t
YXBfbW9kaWZpZXJzX3Rlc3QiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBjb25maWdzIC09IFsg
Ii8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KKyAgY29uZmlncyArPSBb
CisgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAorICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9kZWZhdWx0X2NmbGFnc19jYyIsCisgIF0KKyAg
cHVibGljX2NvbmZpZ3MgPSBbICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHA6YWJzbF9pbmNsdWRl
X2NvbmZpZyIgXQorICBwdWJsaWMgPSBbCisgICAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9k
aWZpZXJzX3Rlc3QuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rl
c3RpbmciLAorICAgICI6aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgIi8vdGVzdGluZy9ndGVz
dCIsCisgIF0KK30KKworc291cmNlX3NldCgidW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0
IikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2Nv
bmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0g
WyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVi
bGljID0gWworICAgICJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCIs
CisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmhhc2hfZ2VuZXJhdG9yX3Rlc3RpbmciLAorICAgICI6
aGFzaF9wb2xpY3lfdGVzdGluZyIsCisgICAgIi8vdGVzdGluZy9ndGVzdCIsCisgIF0KK30KKwor
c291cmNlX3NldCgidW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdCIpIHsKKyAgdGVzdG9ubHkgPSB0
cnVlCisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29k
ZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hy
b21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRf
Y2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJu
YWwvdW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6
aGFzaF9nZW5lcmF0b3JfdGVzdGluZyIsCisgICAgIjpoYXNoX3BvbGljeV90ZXN0aW5nIiwKKyAg
ICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgXQorfQorCitzb3VyY2Vfc2V0KCJ1bm9yZGVyZWRfc2V0
X21vZGlmaWVyc190ZXN0IikgeworICB0ZXN0b25seSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIv
L2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWwor
ICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVmYXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1
YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9j
b25maWciIF0KKyAgcHVibGljID0gWworICAgICJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlm
aWVyc190ZXN0LmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpoYXNoX2dlbmVyYXRvcl90ZXN0
aW5nIiwKKyAgICAiOmhhc2hfcG9saWN5X3Rlc3RpbmciLAorICAgICIvL3Rlc3RpbmcvZ3Rlc3Qi
LAorICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvQ01ha2VMaXN0cy50eHQKaW5kZXggMTIzZTRjNDg0OWFhYmUyZWVkZWEy
MWYwNWVmZDJkMDI2MzgzMGZiOC4uOWU0MDY5MDJiMDU4NWRlZGEzYmEzMDcyYmVlMGZmMjc3NDg0
ZWJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9DTWFrZUxpc3RzLnR4dApAQCAtMTcsMTggKzE3LDQyIEBACiAKIGxpc3Qo
QVBQRU5EIENPTlRBSU5FUl9QVUJMSUNfSEVBREVSUwogICAiZml4ZWRfYXJyYXkuaCIKKyAgImZs
YXRfaGFzaF9tYXAuaCIKKyAgImZsYXRfaGFzaF9zZXQuaCIKICAgImlubGluZWRfdmVjdG9yLmgi
CisgICJub2RlX2hhc2hfbWFwLmgiCisgICJub2RlX2hhc2hfc2V0LmgiCiApCiAKIAogbGlzdChB
UFBFTkQgQ09OVEFJTkVSX0lOVEVSTkFMX0hFQURFUlMKKyAgImludGVybmFsL2NvbXByZXNzZWRf
dHVwbGUuaCIKKyAgImludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIKKyAgImludGVybmFsL2hh
c2hfZnVuY3Rpb25fZGVmYXVsdHMuaCIKKyAgImludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3Rp
bmcuaCIKKyAgImludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIKKyAgImludGVybmFsL2hh
c2hfcG9saWN5X3RyYWl0cy5oIgorICAiaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnLmgiCisgICJp
bnRlcm5hbC9sYXlvdXQuaCIKKyAgImludGVybmFsL25vZGVfaGFzaF9wb2xpY3kuaCIKKyAgImlu
dGVybmFsL3Jhd19oYXNoX21hcC5oIgorICAiaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiCiAgICJp
bnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuaCIKKyAgImludGVybmFsL3RyYWNrZWQuaCIK
KyAgImludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oIgorICAiaW50ZXJu
YWwvdW5vcmRlcmVkX21hcF9sb29rdXBfdGVzdC5oIgorICAiaW50ZXJuYWwvdW5vcmRlcmVkX21h
cF9tb2RpZmllcnNfdGVzdC5oIgorICAiaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rv
cl90ZXN0LmgiCisgICJpbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgiCisgICJp
bnRlcm5hbC91bm9yZGVyZWRfc2V0X21vZGlmaWVyc190ZXN0LmgiCiApCiAKIAotYWJzbF9oZWFk
ZXJfbGlicmFyeSgKK2Fic2xfbGlicmFyeSgKICAgVEFSR0VUCiAgICAgYWJzbF9jb250YWluZXIK
KyAgU09VUkNFUworICAgICJpbnRlcm5hbC9yYXdfaGFzaF9zZXQuY2MiCiAgIEVYUE9SVF9OQU1F
CiAgICAgY29udGFpbmVyCiApCkBAIC0xNDIsMyArMTY2LDExIEBAIGFic2xfdGVzdCgKICkKIAog
CithYnNsX3Rlc3QoCisgIFRBUkdFVAorICAgIHJhd19oYXNoX3NldF90ZXN0CisgIFNPVVJDRVMK
KyAgICAiaW50ZXJuYWwvcmF3X2hhc2hfc2V0X3Rlc3QuY2MiCisgIFBVQkxJQ19MSUJSQVJJRVMK
KyAgICBhYnNsOjpiYXNlIGFic2w6Omhhc2ggYWJzbF90aHJvd19kZWxlZ2F0ZSB0ZXN0X2luc3Rh
bmNlX3RyYWNrZXJfbGliCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJy
YXkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheS5oCmluZGV4IDE4MjI1OGY2MjNlMTNh
ZWE4MGI3NTc4ZTE5MDZkYWQ5NDc4Mzg4YjAuLjZkOWZhNWY3NDVkY2M5NTYzYzdhNzA5MTYwZGIx
ODM3Y2ZmYmMyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheS5oCkBAIC0xMzgsOCArMTM4LDggQEAgY2xh
c3MgRml4ZWRBcnJheSB7CiAgIGV4cGxpY2l0IEZpeGVkQXJyYXkoc2l6ZV90eXBlIG4sIGNvbnN0
IGFsbG9jYXRvcl90eXBlJiBhID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgICAgIDogc3RvcmFnZV8o
biwgYSkgewogICAgIGlmIChEZWZhdWx0Q29uc3RydWN0b3JJc05vblRyaXZpYWwoKSkgewotICAg
ICAgbWVtb3J5X2ludGVybmFsOjpDb25zdHJ1Y3RTdG9yYWdlKHN0b3JhZ2VfLmFsbG9jKCksIHN0
b3JhZ2VfLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RvcmFnZV8uZW5kKCkpOworICAgICAgbWVtb3J5X2ludGVybmFsOjpDb25zdHJ1Y3RSYW5nZShz
dG9yYWdlXy5hbGxvYygpLCBzdG9yYWdlXy5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdG9yYWdlXy5lbmQoKSk7CiAgICAgfQogICB9CiAKQEAgLTE0Nyw4
ICsxNDcsOCBAQCBjbGFzcyBGaXhlZEFycmF5IHsKICAgRml4ZWRBcnJheShzaXplX3R5cGUgbiwg
Y29uc3QgdmFsdWVfdHlwZSYgdmFsLAogICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBl
JiBhID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgICAgIDogc3RvcmFnZV8obiwgYSkgewotICAgIG1l
bW9yeV9pbnRlcm5hbDo6Q29uc3RydWN0U3RvcmFnZShzdG9yYWdlXy5hbGxvYygpLCBzdG9yYWdl
Xy5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdl
Xy5lbmQoKSwgdmFsKTsKKyAgICBtZW1vcnlfaW50ZXJuYWw6OkNvbnN0cnVjdFJhbmdlKHN0b3Jh
Z2VfLmFsbG9jKCksIHN0b3JhZ2VfLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdG9yYWdlXy5lbmQoKSwgdmFsKTsKICAgfQogCiAgIC8vIENyZWF0ZXMgYW4g
YXJyYXkgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc2l6ZSBhbmQgY29udGVudHMgb2YgYGluaXRfbGlz
dGAuCkBAIC0xNjMsMTMgKzE2MywxMiBAQCBjbGFzcyBGaXhlZEFycmF5IHsKICAgRml4ZWRBcnJh
eShJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwKICAgICAgICAgICAgICBjb25zdCBhbGxv
Y2F0b3JfdHlwZSYgYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAgICAgICA6IHN0b3JhZ2VfKHN0ZDo6
ZGlzdGFuY2UoZmlyc3QsIGxhc3QpLCBhKSB7Ci0gICAgbWVtb3J5X2ludGVybmFsOjpDb3B5VG9T
dG9yYWdlRnJvbVJhbmdlKHN0b3JhZ2VfLmFsbG9jKCksIHN0b3JhZ2VfLmJlZ2luKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0KTsKKyAg
ICBtZW1vcnlfaW50ZXJuYWw6OkNvcHlSYW5nZShzdG9yYWdlXy5hbGxvYygpLCBzdG9yYWdlXy5i
ZWdpbigpLCBmaXJzdCwgbGFzdCk7CiAgIH0KIAogICB+Rml4ZWRBcnJheSgpIG5vZXhjZXB0IHsK
ICAgICBmb3IgKGF1dG8qIGN1ciA9IHN0b3JhZ2VfLmJlZ2luKCk7IGN1ciAhPSBzdG9yYWdlXy5l
bmQoKTsgKytjdXIpIHsKLSAgICAgIEFsbG9jYXRvclRyYWl0czo6ZGVzdHJveSgqc3RvcmFnZV8u
YWxsb2MoKSwgY3VyKTsKKyAgICAgIEFsbG9jYXRvclRyYWl0czo6ZGVzdHJveShzdG9yYWdlXy5h
bGxvYygpLCBjdXIpOwogICAgIH0KICAgfQogCkBAIC0zNTksNiArMzU4LDEzIEBAIGNsYXNzIEZp
eGVkQXJyYXkgewogICBmcmllbmQgYm9vbCBvcGVyYXRvcj49KGNvbnN0IEZpeGVkQXJyYXkmIGxo
cywgY29uc3QgRml4ZWRBcnJheSYgcmhzKSB7CiAgICAgcmV0dXJuICEobGhzIDwgcmhzKTsKICAg
fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQgSCBBYnNsSGFzaFZhbHVlKEgg
aCwgY29uc3QgRml4ZWRBcnJheSYgdikgeworICAgIHJldHVybiBIOjpjb21iaW5lKEg6OmNvbWJp
bmVfY29udGlndW91cyhzdGQ6Om1vdmUoaCksIHYuZGF0YSgpLCB2LnNpemUoKSksCisgICAgICAg
ICAgICAgICAgICAgICAgdi5zaXplKCkpOworICB9CisKICBwcml2YXRlOgogICAvLyBTdG9yYWdl
RWxlbWVudAogICAvLwpAQCAtNDQ2LDE1ICs0NTIsMTUgQEAgY2xhc3MgRml4ZWRBcnJheSB7CiAg
ICAgICBpZiAoVXNpbmdJbmxpbmVkU3RvcmFnZShzaXplKCkpKSB7CiAgICAgICAgIElubGluZWRT
dG9yYWdlOjpBbm5vdGF0ZURlc3RydWN0KHNpemUoKSk7CiAgICAgICB9IGVsc2UgewotICAgICAg
ICBBbGxvY2F0b3JUcmFpdHM6OmRlYWxsb2NhdGUoKmFsbG9jKCksIEFzVmFsdWVUeXBlKGJlZ2lu
KCkpLCBzaXplKCkpOworICAgICAgICBBbGxvY2F0b3JUcmFpdHM6OmRlYWxsb2NhdGUoYWxsb2Mo
KSwgQXNWYWx1ZVR5cGUoYmVnaW4oKSksIHNpemUoKSk7CiAgICAgICB9CiAgICAgfQogCiAgICAg
c2l6ZV90eXBlIHNpemUoKSBjb25zdCB7IHJldHVybiBzaXplX2FsbG9jXy50ZW1wbGF0ZSBnZXQ8
MD4oKTsgfQogICAgIFN0b3JhZ2VFbGVtZW50KiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRhdGFf
OyB9CiAgICAgU3RvcmFnZUVsZW1lbnQqIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGJlZ2luKCkgKyBz
aXplKCk7IH0KLSAgICBhbGxvY2F0b3JfdHlwZSogYWxsb2MoKSB7Ci0gICAgICByZXR1cm4gc3Rk
OjphZGRyZXNzb2Yoc2l6ZV9hbGxvY18udGVtcGxhdGUgZ2V0PDE+KCkpOworICAgIGFsbG9jYXRv
cl90eXBlJiBhbGxvYygpIHsKKyAgICAgIHJldHVybiBzaXplX2FsbG9jXy50ZW1wbGF0ZSBnZXQ8
MT4oKTsKICAgICB9CiAKICAgIHByaXZhdGU6CkBAIC00NjgsNyArNDc0LDcgQEAgY2xhc3MgRml4
ZWRBcnJheSB7CiAgICAgICAgIHJldHVybiBJbmxpbmVkU3RvcmFnZTo6ZGF0YSgpOwogICAgICAg
fSBlbHNlIHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3RvcmFnZUVsZW1lbnQq
PigKLSAgICAgICAgICAgIEFsbG9jYXRvclRyYWl0czo6YWxsb2NhdGUoKmFsbG9jKCksIHNpemUo
KSkpOworICAgICAgICAgICAgQWxsb2NhdG9yVHJhaXRzOjphbGxvY2F0ZShhbGxvYygpLCBzaXpl
KCkpKTsKICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhl
ZF9hcnJheV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRf
YXJyYXlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCmluZGV4IGMxMjNjMmExYzBkMmQzODQ4NDA1
NmMzNGY4OTEwMTQ4OWU1YzE0MjQuLmRhNjNkYmZlMzhlNzFkMzRhMzNlODAwZGZlNDJhYTlmM2Vh
MzE3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9maXhlZF9hcnJheV9leGNlcHRpb25f
c2FmZXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZpeGVkX2FycmF5X2V4Y2VwdGlv
bl9zYWZldHlfdGVzdC5jYwpAQCAtOTcsNyArOTcsNyBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1
bHQgUmVhZE1lbW9yeShGaXhlZEFyciogZml4ZWRfYXJyKSB7CiAKIFRFU1QoRml4ZWRBcnJheUV4
Y2VwdGlvblNhZmV0eSwgRmlsbCkgewogICBhdXRvIHRlc3RfZmlsbCA9IHRlc3Rpbmc6Ok1ha2VF
eGNlcHRpb25TYWZldHlUZXN0ZXIoKQotICAgICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFy
aWFudHMoUmVhZE1lbW9yeSkKKyAgICAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMo
UmVhZE1lbW9yeSkKICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhPcGVyYXRpb24oWyZdKEZp
eGVkQXJyKiBmaXhlZF9hcnJfcHRyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byB0
aHJvd2VyID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyb3dlcihrVXBkYXRlZFZh
bHVlLCB0ZXN0aW5nOjpub3Rocm93X2N0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ZpeGVkX2FycmF5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXlfdGVzdC5j
YwppbmRleCBiMDdlYmNiNmQ5Y2E2YjBlNDI2Y2E2M2FjMzRjMDZmODE0MDk4M2NlLi4yMDVmZjQx
ZmUxMTQyYmJlOGUxODdhNDRmMTdhNWE1YTczYjVjNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvZml4ZWRfYXJyYXlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZml4ZWRfYXJy
YXlfdGVzdC5jYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCiAj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvZXhj
ZXB0aW9uX3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgiCiAj
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAKIHVzaW5nIDo6dGVzdGluZzo6RWxlbWVu
dHNBcmVBcnJheTsKQEAgLTg2Nyw0ICs4NjgsNSBAQCBURVNUKEZpeGVkQXJyYXlUZXN0LCBBZGRy
ZXNzU2FuaXRpemVyQW5ub3RhdGlvbnM0KSB7CiAgIEVYUEVDVF9ERUFUSChyYXdbMjFdID0gVGhy
ZWVJbnRzKCksICJjb250YWluZXItb3ZlcmZsb3ciKTsKIH0KICNlbmRpZiAgLy8gQUREUkVTU19T
QU5JVElaRVIKKwogfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
ZmxhdF9oYXNoX21hcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXAuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNTU3MGQxMDA0NDEzMTY2YWJkZGRiNmM1NDZiYjU3Y2FiZDRiZjA0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXAuaApAQCAtMCwwICsxLDUyOCBA
QAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8gRmlsZTogZmxhdF9oYXNoX21hcC5oCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIEFuIGBhYnNsOjpmbGF0X2hhc2hfbWFwPEssIFY+YCBpcyBhbiB1bm9y
ZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIG9mCisvLyB1bmlxdWUga2V5cyBhbmQgYXNzb2Np
YXRlZCB2YWx1ZXMgZGVzaWduZWQgdG8gYmUgYSBtb3JlIGVmZmljaWVudCByZXBsYWNlbWVudAor
Ly8gZm9yIGBzdGQ6OnVub3JkZXJlZF9tYXBgLiBMaWtlIGB1bm9yZGVyZWRfbWFwYCwgc2VhcmNo
LCBpbnNlcnRpb24sIGFuZAorLy8gZGVsZXRpb24gb2YgbWFwIGVsZW1lbnRzIGNhbiBiZSBkb25l
IGFzIGFuIGBPKDEpYCBvcGVyYXRpb24uIEhvd2V2ZXIsCisvLyBgZmxhdF9oYXNoX21hcGAgKGFu
ZCBvdGhlciB1bm9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVycyBrbm93biBhcyB0aGUKKy8v
IGNvbGxlY3Rpb24gb2YgQWJzZWlsICJTd2lzcyB0YWJsZXMiKSBjb250YWluIG90aGVyIG9wdGlt
aXphdGlvbnMgdGhhdCByZXN1bHQKKy8vIGluIGJvdGggbWVtb3J5IGFuZCBjb21wdXRhdGlvbiBh
ZHZhbnRhZ2VzLgorLy8KKy8vIEluIG1vc3QgY2FzZXMsIHlvdXIgZGVmYXVsdCBjaG9pY2UgZm9y
IGEgaGFzaCBtYXAgc2hvdWxkIGJlIGEgbWFwIG9mIHR5cGUKKy8vIGBmbGF0X2hhc2hfbWFwYC4K
KworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9GTEFUX0hBU0hfTUFQX0hfCisjZGVmaW5lIEFCU0xf
Q09OVEFJTkVSX0ZMQVRfSEFTSF9NQVBfSF8KKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVk
ZSA8bmV3PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5LmgiCisjaW5j
bHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0cy5oIiAg
Ly8gSVdZVSBwcmFnbWE6IGV4cG9ydAorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L3Jhd19oYXNoX21hcC5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVy
X2ludGVybmFsIHsKK3RlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBWPgorc3RydWN0IEZsYXRIYXNo
TWFwUG9saWN5OworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6ZmxhdF9oYXNoX21hcAorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vCisvLyBBbiBgYWJzbDo6ZmxhdF9oYXNoX21hcDxLLCBWPmAgaXMgYW4gdW5v
cmRlcmVkIGFzc29jaWF0aXZlIGNvbnRhaW5lciB3aGljaAorLy8gaGFzIGJlZW4gb3B0aW1pemVk
IGZvciBib3RoIHNwZWVkIGFuZCBtZW1vcnkgZm9vdHByaW50IGluIG1vc3QgY29tbW9uIHVzZQor
Ly8gY2FzZXMuIEl0cyBpbnRlcmZhY2UgaXMgc2ltaWxhciB0byB0aGF0IG9mIGBzdGQ6OnVub3Jk
ZXJlZF9tYXA8SywgVj5gIHdpdGgKKy8vIHRoZSBmb2xsb3dpbmcgbm90YWJsZSBkaWZmZXJlbmNl
czoKKy8vCisvLyAqIFJlcXVpcmVzIGtleXMgdGhhdCBhcmUgQ29weUNvbnN0cnVjdGlibGUKKy8v
ICogUmVxdWlyZXMgdmFsdWVzIHRoYXQgYXJlIE1vdmVDb25zdHJ1Y3RpYmxlCisvLyAqIFN1cHBv
cnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCB0aHJvdWdoIGBmaW5kKClgLCBgb3BlcmF0b3JbXSgp
YCBhbmQKKy8vICAgYGluc2VydCgpYCwgcHJvdmlkZWQgdGhhdCB0aGUgbWFwIGlzIHByb3ZpZGVk
IGEgY29tcGF0aWJsZSBoZXRlcm9nZW5lb3VzCisvLyAgIGhhc2hpbmcgZnVuY3Rpb24gYW5kIGVx
dWFsaXR5IG9wZXJhdG9yLgorLy8gKiBJbnZhbGlkYXRlcyBhbnkgcmVmZXJlbmNlcyBhbmQgcG9p
bnRlcnMgdG8gZWxlbWVudHMgd2l0aGluIHRoZSB0YWJsZSBhZnRlcgorLy8gICBgcmVoYXNoKClg
LgorLy8gKiBDb250YWlucyBhIGBjYXBhY2l0eSgpYCBtZW1iZXIgZnVuY3Rpb24gaW5kaWNhdGlu
ZyB0aGUgbnVtYmVyIG9mIGVsZW1lbnQKKy8vICAgc2xvdHMgKG9wZW4sIGRlbGV0ZWQsIGFuZCBl
bXB0eSkgd2l0aGluIHRoZSBoYXNoIG1hcC4KKy8vICogUmV0dXJucyBgdm9pZGAgZnJvbSB0aGUg
YGVyYXNlKGl0ZXJhdG9yKWAgb3ZlcmxvYWQuCisvLworLy8gQnkgZGVmYXVsdCwgYGZsYXRfaGFz
aF9tYXBgIHVzZXMgdGhlIGBhYnNsOjpIYXNoYCBoYXNoaW5nIGZyYW1ld29yay4KKy8vIEFsbCBm
dW5kYW1lbnRhbCBhbmQgQWJzZWlsIHR5cGVzIHRoYXQgc3VwcG9ydCB0aGUgYGFic2w6Okhhc2hg
IGZyYW1ld29yayBoYXZlCisvLyBhIGNvbXBhdGlibGUgZXF1YWxpdHkgb3BlcmF0b3IgZm9yIGNv
bXBhcmluZyBpbnNlcnRpb25zIGludG8gYGZsYXRfaGFzaF9tYXBgLgorLy8gSWYgeW91ciB0eXBl
IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoZSBgYXNibDo6SGFzaGAgZnJhbWV3b3JrLCBzZWUK
Ky8vIGFic2wvaGFzaC9oYXNoLmggZm9yIGluZm9ybWF0aW9uIG9uIGV4dGVuZGluZyBBYnNlaWwg
aGFzaGluZyB0byB1c2VyLWRlZmluZWQKKy8vIHR5cGVzLgorLy8KKy8vIE5PVEU6IEEgYGZsYXRf
aGFzaF9tYXBgIHN0b3JlcyBpdHMgdmFsdWUgdHlwZXMgZGlyZWN0bHkgaW5zaWRlIGl0cworLy8g
aW1wbGVtZW50YXRpb24gYXJyYXkgdG8gYXZvaWQgbWVtb3J5IGluZGlyZWN0aW9uLiBCZWNhdXNl
IGEgYGZsYXRfaGFzaF9tYXBgCisvLyBpcyBkZXNpZ25lZCB0byBtb3ZlIGRhdGEgd2hlbiByZWhh
c2hlZCwgbWFwIHZhbHVlcyB3aWxsIG5vdCByZXRhaW4gcG9pbnRlcgorLy8gc3RhYmlsaXR5LiBJ
ZiB5b3UgcmVxdWlyZSBwb2ludGVyIHN0YWJpbGl0eSwgb3IgeW91ciB2YWx1ZXMgYXJlIGxhcmdl
LAorLy8gY29uc2lkZXIgdXNpbmcgYGFic2w6OmZsYXRfaGFzaF9tYXA8S2V5LCBzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWU+PmAgaW5zdGVhZC4KKy8vIElmIHlvdXIgdHlwZXMgYXJlIG5vdCBtb3ZlYWJs
ZSBvciB5b3UgcmVxdWlyZSBwb2ludGVyIHN0YWJpbGl0eSBmb3Iga2V5cywKKy8vIGNvbnNpZGVy
IGBhYnNsOjpub2RlX2hhc2hfbWFwYC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgLy8gQ3Jl
YXRlIGEgZmxhdCBoYXNoIG1hcCBvZiB0aHJlZSBzdHJpbmdzICh0aGF0IG1hcCB0byBzdHJpbmdz
KQorLy8gICBhYnNsOjpmbGF0X2hhc2hfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gZHVj
a3MgPQorLy8gICAgIHt7ImEiLCAiaHVleSJ9LCB7ImIiLCAiZGV3ZXkifSwgeyJjIiwgImxvdWll
In19OworLy8KKy8vICAvLyBJbnNlcnQgYSBuZXcgZWxlbWVudCBpbnRvIHRoZSBmbGF0IGhhc2gg
bWFwCisvLyAgZHVja3MuaW5zZXJ0KHsiZCIsICJkb25hbGQifSk7CisvLworLy8gIC8vIEZvcmNl
IGEgcmVoYXNoIG9mIHRoZSBmbGF0IGhhc2ggbWFwCisvLyAgZHVja3MucmVoYXNoKDApOworLy8K
Ky8vICAvLyBGaW5kIHRoZSBlbGVtZW50IHdpdGggdGhlIGtleSAiYiIKKy8vICBzdGQ6OnN0cmlu
ZyBzZWFyY2hfa2V5ID0gImIiOworLy8gIGF1dG8gcmVzdWx0ID0gZHVja3MuZmluZChzZWFyY2hf
a2V5KTsKKy8vICBpZiAocmVzdWx0ICE9IGR1Y2tzLmVuZCgpKSB7CisvLyAgICBzdGQ6OmNvdXQg
PDwgIlJlc3VsdDogIiA8PCByZXN1bHQtPnNlY29uZCA8PCBzdGQ6OmVuZGw7CisvLyAgfQordGVt
cGxhdGUgPGNsYXNzIEssIGNsYXNzIFYsCisgICAgICAgICAgY2xhc3MgSGFzaCA9IGFic2w6OmNv
bnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZhdWx0X2hhc2g8Sz4sCisgICAgICAgICAgY2xhc3Mg
RXEgPSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfZGVmYXVsdF9lcTxLPiwKKyAgICAg
ICAgICBjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgSywg
Vj4+PgorY2xhc3MgZmxhdF9oYXNoX21hcCA6IHB1YmxpYyBhYnNsOjpjb250YWluZXJfaW50ZXJu
YWw6OnJhd19oYXNoX21hcDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6Y29udGFp
bmVyX2ludGVybmFsOjpGbGF0SGFzaE1hcFBvbGljeTxLLCBWPiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgSGFzaCwgRXEsIEFsbG9jYXRvcj4geworICB1c2luZyBCYXNlID0gdHlwZW5hbWUg
ZmxhdF9oYXNoX21hcDo6cmF3X2hhc2hfbWFwOworCisgcHVibGljOgorICBmbGF0X2hhc2hfbWFw
KCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpiZWdpbigp
CisgIC8vCisgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUg
YGZsYXRfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpiZWdpbjsKKworICAvLyBmbGF0X2hhc2hf
bWFwOjpjYmVnaW4oKQorICAvLworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhl
IGJlZ2lubmluZyBvZiB0aGUgYGZsYXRfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpjYmVnaW47
CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6Y2VuZCgpCisgIC8vCisgIC8vIFJldHVybnMgYSBjb25z
dCBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBgZmxhdF9oYXNoX21hcGAuCisgIHVzaW5nIEJh
c2U6OmNlbmQ7CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6ZW5kKCkKKyAgLy8KKyAgLy8gUmV0dXJu
cyBhbiBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBgZmxhdF9oYXNoX21hcGAuCisgIHVzaW5n
IEJhc2U6OmVuZDsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpjYXBhY2l0eSgpCisgIC8vCisgIC8v
IFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50IHNsb3RzIChhc3NpZ25lZCwgZGVsZXRlZCwg
YW5kIGVtcHR5KQorICAvLyBhdmFpbGFibGUgd2l0aGluIHRoZSBgZmxhdF9oYXNoX21hcGAuCisg
IC8vCisgIC8vIE5PVEU6IHRoaXMgbWVtYmVyIGZ1bmN0aW9uIGlzIHBhcnRpY3VsYXIgdG8gYGFi
c2w6OmZsYXRfaGFzaF9tYXBgIGFuZCBpcworICAvLyBub3QgcHJvdmlkZWQgaW4gdGhlIGBzdGQ6
OnVub3JkZXJlZF9tYXBgIEFQSS4KKyAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CisKKyAgLy8gZmxh
dF9oYXNoX21hcDo6ZW1wdHkoKQorICAvLworICAvLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRo
ZSBgZmxhdF9oYXNoX21hcGAgaXMgZW1wdHkuCisgIHVzaW5nIEJhc2U6OmVtcHR5OworCisgIC8v
IGZsYXRfaGFzaF9tYXA6Om1heF9zaXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbGFyZ2Vz
dCB0aGVvcmV0aWNhbCBwb3NzaWJsZSBudW1iZXIgb2YgZWxlbWVudHMgd2l0aGluIGEKKyAgLy8g
YGZsYXRfaGFzaF9tYXBgIHVuZGVyIGN1cnJlbnQgbWVtb3J5IGNvbnN0cmFpbnRzLiBUaGlzIHZh
bHVlIGNhbiBiZSB0aG91Z2h0CisgIC8vIG9mIHRoZSBsYXJnZXN0IHZhbHVlIG9mIGBzdGQ6OmRp
c3RhbmNlKGJlZ2luKCksIGVuZCgpKWAgZm9yIGEKKyAgLy8gYGZsYXRfaGFzaF9tYXA8SywgVj5g
LgorICB1c2luZyBCYXNlOjptYXhfc2l6ZTsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpzaXplKCkK
KyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGN1cnJlbnRseSB3aXRo
aW4gdGhlIGBmbGF0X2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6c2l6ZTsKKworICAvLyBmbGF0
X2hhc2hfbWFwOjpjbGVhcigpCisgIC8vCisgIC8vIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20g
dGhlIGBmbGF0X2hhc2hfbWFwYC4gSW52YWxpZGF0ZXMgYW55IHJlZmVyZW5jZXMsCisgIC8vIHBv
aW50ZXJzLCBvciBpdGVyYXRvcnMgcmVmZXJyaW5nIHRvIGNvbnRhaW5lZCBlbGVtZW50cy4KKyAg
Ly8KKyAgLy8gTk9URTogdGhpcyBvcGVyYXRpb24gbWF5IHNocmluayB0aGUgdW5kZXJseWluZyBi
dWZmZXIuIFRvIGF2b2lkIHNocmlua2luZworICAvLyB0aGUgdW5kZXJseWluZyBidWZmZXIgY2Fs
bCBgZXJhc2UoYmVnaW4oKSwgZW5kKCkpYC4KKyAgdXNpbmcgQmFzZTo6Y2xlYXI7CisKKyAgLy8g
ZmxhdF9oYXNoX21hcDo6ZXJhc2UoKQorICAvLworICAvLyBFcmFzZXMgZWxlbWVudHMgd2l0aGlu
IHRoZSBgZmxhdF9oYXNoX21hcGAuIEVyYXNpbmcgZG9lcyBub3QgdHJpZ2dlciBhCisgIC8vIHJl
aGFzaC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIHZvaWQgZXJhc2Uo
Y29uc3RfaXRlcmF0b3IgcG9zKToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnQgYXQg
YHBvc2l0aW9uYCBvZiB0aGUgYGZsYXRfaGFzaF9tYXBgLCByZXR1cm5pbmcKKyAgLy8gICBgdm9p
ZGAuCisgIC8vCisgIC8vICAgTk9URTogdGhpcyByZXR1cm4gYmVoYXZpb3IgaXMgZGlmZmVyZW50
IHRoYW4gdGhhdCBvZiBTVEwgY29udGFpbmVycyBpbgorICAvLyAgIGdlbmVyYWwgYW5kIGBzdGQ6
OnVub3JkZXJlZF9tYXBgIGluIHBhcnRpY3VsYXIuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGVyYXNl
KGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KToKKyAgLy8KKyAgLy8g
ICBFcmFzZXMgdGhlIGVsZW1lbnRzIGluIHRoZSBvcGVuIGludGVydmFsIFtgZmlyc3RgLCBgbGFz
dGApLCByZXR1cm5pbmcgYW4KKyAgLy8gICBpdGVyYXRvciBwb2ludGluZyB0byBgbGFzdGAuCisg
IC8vCisgIC8vIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYga2V5KToKKyAgLy8KKyAg
Ly8gICBFcmFzZXMgdGhlIGVsZW1lbnQgd2l0aCB0aGUgbWF0Y2hpbmcga2V5LCBpZiBpdCBleGlz
dHMuCisgIHVzaW5nIEJhc2U6OmVyYXNlOworCisgIC8vIGZsYXRfaGFzaF9tYXA6Omluc2VydCgp
CisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGlu
dG8gdGhlIGBmbGF0X2hhc2hfbWFwYCwKKyAgLy8gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50
aW5nIHRvIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50LCBwcm92aWRlZCB0aGF0CisgIC8vIGFu
IGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuIElmIHJl
aGFzaGluZyBvY2N1cnMKKyAgLy8gZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMg
YXJlIGludmFsaWRhdGVkLiBPdmVybG9hZHMgYXJlIGxpc3RlZAorICAvLyBiZWxvdy4KKyAgLy8K
KyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9yLGJvb2w+IGluc2VydChjb25zdCBpbml0X3R5cGUmIHZh
bHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUgYGZsYXRfaGFzaF9t
YXBgLiBSZXR1cm5zIGEgcGFpciBjb25zaXN0aW5nIG9mIGFuCisgIC8vICAgaXRlcmF0b3IgdG8g
dGhlIGluc2VydGVkIGVsZW1lbnQgKG9yIHRvIHRoZSBlbGVtZW50IHRoYXQgcHJldmVudGVkIHRo
ZQorICAvLyAgIGluc2VydGlvbikgYW5kIGEgYm9vbCBkZW5vdGluZyB3aGV0aGVyIHRoZSBpbnNl
cnRpb24gdG9vayBwbGFjZS4KKyAgLy8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9yLGJvb2w+IGlu
c2VydChUJiYgdmFsdWUpOgorICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0KGlu
aXRfdHlwZSYmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgbW92ZWFibGUgdmFsdWUg
aW50byB0aGUgYGZsYXRfaGFzaF9tYXBgLiBSZXR1cm5zIGEgcGFpcgorICAvLyAgIGNvbnNpc3Rp
bmcgb2YgYW4gaXRlcmF0b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9yIHRvIHRoZSBlbGVt
ZW50IHRoYXQKKyAgLy8gICBwcmV2ZW50ZWQgdGhlIGluc2VydGlvbikgYW5kIGEgYm9vbCBkZW5v
dGluZyB3aGV0aGVyIHRoZSBpbnNlcnRpb24gdG9vaworICAvLyAgIHBsYWNlLgorICAvLworICAv
LyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgY29uc3QgaW5pdF90eXBlJiB2
YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBUJiYgdmFs
dWUpOgorICAvLyBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgaW5pdF90eXBl
JiYgdmFsdWUpOworICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSwgdXNpbmcgdGhlIHBvc2l0
aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hl
cmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2guIFJldHVybnMgYW4gaXRlcmF0b3IgdG8g
dGhlCisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudCwgb3IgdG8gdGhlIGV4aXN0aW5nIGVsZW1lbnQg
dGhhdCBwcmV2ZW50ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uLgorICAvLworICAvLyB2b2lkIGlu
c2VydChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpOgorICAvLworICAv
LyAgIEluc2VydHMgYSByYW5nZSBvZiB2YWx1ZXMgW2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisg
IC8vICAgTk9URTogQWx0aG91Z2ggdGhlIFNUTCBkb2VzIG5vdCBzcGVjaWZ5IHdoaWNoIGVsZW1l
bnQgbWF5IGJlIGluc2VydGVkIGlmCisgIC8vICAgbXVsdGlwbGUga2V5cyBjb21wYXJlIGVxdWl2
YWxlbnRseSwgZm9yIGBmbGF0X2hhc2hfbWFwYCB3ZSBndWFyYW50ZWUgdGhlCisgIC8vICAgZmly
c3QgbWF0Y2ggaXMgaW5zZXJ0ZWQuCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxpbml0X3R5cGU+IGlsaXN0KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIHRoZSBl
bGVtZW50cyB3aXRoaW4gdGhlIGluaXRpYWxpemVyIGxpc3QgYGlsaXN0YC4KKyAgLy8KKyAgLy8g
ICBOT1RFOiBBbHRob3VnaCB0aGUgU1RMIGRvZXMgbm90IHNwZWNpZnkgd2hpY2ggZWxlbWVudCBt
YXkgYmUgaW5zZXJ0ZWQgaWYKKyAgLy8gICBtdWx0aXBsZSBrZXlzIGNvbXBhcmUgZXF1aXZhbGVu
dGx5IHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCwgZm9yCisgIC8vICAgYGZsYXRfaGFzaF9t
YXBgIHdlIGd1YXJhbnRlZSB0aGUgZmlyc3QgbWF0Y2ggaXMgaW5zZXJ0ZWQuCisgIHVzaW5nIEJh
c2U6Omluc2VydDsKKworICAvLyBmbGF0X2hhc2hfbWFwOjppbnNlcnRfb3JfYXNzaWduKCkKKyAg
Ly8KKyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgaW50byB0
aGUgYGZsYXRfaGFzaF9tYXBgIHByb3ZpZGVkCisgIC8vIHRoYXQgYSB2YWx1ZSB3aXRoIHRoZSBn
aXZlbiBrZXkgZG9lcyBub3QgYWxyZWFkeSBleGlzdCwgb3IgcmVwbGFjZXMgaXQgd2l0aAorICAv
LyB0aGUgZWxlbWVudCB2YWx1ZSBpZiBhIGtleSBmb3IgdGhhdCB2YWx1ZSBhbHJlYWR5IGV4aXN0
cywgcmV0dXJuaW5nIGFuCisgIC8vIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBuZXdseSBpbnNl
cnRlZCBlbGVtZW50LiAgSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUKKyAgLy8gdG8gdGhlIGluc2Vy
dGlvbiwgYWxsIGV4aXN0aW5nIGl0ZXJhdG9ycyBhcmUgaW52YWxpZGF0ZWQuIE92ZXJsb2FkcyBh
cmUKKyAgLy8gbGlzdGVkIGJlbG93LgorICAvLworICAvLyBwYWlyPGl0ZXJhdG9yLCBib29sPiBp
bnNlcnRfb3JfYXNzaWduKGNvbnN0IGluaXRfdHlwZSYgaywgVCYmIG9iaik6CisgIC8vIHBhaXI8
aXRlcmF0b3IsIGJvb2w+IGluc2VydF9vcl9hc3NpZ24oaW5pdF90eXBlJiYgaywgVCYmIG9iaik6
CisgIC8vCisgIC8vICAgSW5zZXJ0cy9Bc3NpZ25zIChvciBtb3ZlcykgdGhlIGVsZW1lbnQgb2Yg
dGhlIHNwZWNpZmllZCBrZXkgaW50byB0aGUKKyAgLy8gICBgZmxhdF9oYXNoX21hcGAuCisgIC8v
CisgIC8vIGl0ZXJhdG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3RfaXRlcmF0b3IgaGludCwKKyAg
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbml0X3R5cGUmIGssIFQmJiBvYmop
OgorICAvLyBpdGVyYXRvciBpbnNlcnRfb3JfYXNzaWduKGNvbnN0X2l0ZXJhdG9yIGhpbnQsIGlu
aXRfdHlwZSYmIGssIFQmJiBvYmopOgorICAvLworICAvLyAgIEluc2VydHMvQXNzaWducyAob3Ig
bW92ZXMpIHRoZSBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQga2V5IGludG8gdGhlCisgIC8vICAg
YGZsYXRfaGFzaF9tYXBgIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmlu
ZGluZyBzdWdnZXN0aW9uCisgIC8vICAgZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24g
c2VhcmNoLgorICB1c2luZyBCYXNlOjppbnNlcnRfb3JfYXNzaWduOworCisgIC8vIGZsYXRfaGFz
aF9tYXA6OmVtcGxhY2UoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNw
ZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4tcGxhY2UKKyAgLy8gd2l0aGluIHRo
ZSBgZmxhdF9oYXNoX21hcGAsIHByb3ZpZGVkIHRoYXQgbm8gZWxlbWVudCB3aXRoIHRoZSBnaXZl
biBrZXkKKyAgLy8gYWxyZWFkeSBleGlzdHMuCisgIC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBi
ZSBjb25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRo
ZQorICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29u
c3RydWN0ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJl
ZmVyIGB0cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90CisgIC8vIGNvcHlhYmxl
IG9yIG1vdmVhYmxlLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUg
aW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6
ZW1wbGFjZTsKKworICAvLyBmbGF0X2hhc2hfbWFwOjplbXBsYWNlX2hpbnQoKQorICAvLworICAv
LyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3Rp
bmcgaXQgaW4tcGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgZmxhdF9oYXNoX21hcGAsIHVzaW5nIHRo
ZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZworICAvLyBzdWdnZXN0aW9uIGZv
ciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaCwgYW5kIG9ubHkgaW5zZXJ0cwor
ICAvLyBwcm92aWRlZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGFscmVhZHkg
ZXhpc3RzLgorICAvLworICAvLyBUaGUgZWxlbWVudCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBp
ZiB0aGVyZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0aGUKKyAgLy8ga2V5IGluIHRoZSBj
b250YWluZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2ls
bCBiZQorICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAg
dW5sZXNzIHlvdXIga2V5IGlzIG5vdAorICAvLyBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8K
KyAgLy8gSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUgdG8gdGhlIGluc2VydGlvbiwgYWxsIGl0ZXJh
dG9ycyBhcmUgaW52YWxpZGF0ZWQuCisgIHVzaW5nIEJhc2U6OmVtcGxhY2VfaGludDsKKworICAv
LyBmbGF0X2hhc2hfbWFwOjp0cnlfZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxl
bWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQor
ICAvLyB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfbWFwYCwgcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50
IHdpdGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4gVW5saWtlIGBlbXBsYWNl
KClgLCBpZiBhbiBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0
cywgd2UgZ3VhcmFudGVlIHRoYXQgbm8gZWxlbWVudCBpcyBjb25zdHJ1Y3RlZC4KKyAgLy8KKyAg
Ly8gSWYgcmVoYXNoaW5nIG9jY3VycyBkdWUgdG8gdGhlIGluc2VydGlvbiwgYWxsIGl0ZXJhdG9y
cyBhcmUgaW52YWxpZGF0ZWQuCisgIC8vIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAv
LworICAvLyAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHRyeV9lbXBsYWNlKGNvbnN0IGtleV90eXBl
JiBrLCBBcmdzJiYuLi4gYXJncyk6CisgIC8vICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gdHJ5X2Vt
cGxhY2Uoa2V5X3R5cGUmJiBrLCBBcmdzJiYuLi4gYXJncyk6CisgIC8vCisgIC8vIEluc2VydHMg
KHZpYSBjb3B5IG9yIG1vdmUpIHRoZSBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQga2V5IGludG8g
dGhlCisgIC8vIGBmbGF0X2hhc2hfbWFwYC4KKyAgLy8KKyAgLy8gICBpdGVyYXRvciB0cnlfZW1w
bGFjZShjb25zdF9pdGVyYXRvciBoaW50LAorICAvLyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGluaXRfdHlwZSYgaywgQXJncyYmLi4uIGFyZ3MpOgorICAvLyAgIGl0ZXJhdG9yIHRyeV9l
bXBsYWNlKGNvbnN0X2l0ZXJhdG9yIGhpbnQsIGluaXRfdHlwZSYmIGssIEFyZ3MmJi4uLiBhcmdz
KToKKyAgLy8KKyAgLy8gSW5zZXJ0cyAodmlhIGNvcHkgb3IgbW92ZSkgdGhlIGVsZW1lbnQgb2Yg
dGhlIHNwZWNpZmllZCBrZXkgaW50byB0aGUKKyAgLy8gYGZsYXRfaGFzaF9tYXBgIHVzaW5nIHRo
ZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZyBzdWdnZXN0aW9uCisgIC8vIGZv
ciB3aGVyZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaC4KKyAgdXNpbmcgQmFzZTo6dHJ5
X2VtcGxhY2U7CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6ZXh0cmFjdCgpCisgIC8vCisgIC8vIEV4
dHJhY3RzIHRoZSBpbmRpY2F0ZWQgZWxlbWVudCwgZXJhc2luZyBpdCBpbiB0aGUgcHJvY2Vzcywg
YW5kIHJldHVybnMgaXQKKyAgLy8gYXMgYSBDKysxNy1jb21wYXRpYmxlIG5vZGUgaGFuZGxlLiBP
dmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3Qo
Y29uc3RfaXRlcmF0b3IgcG9zaXRpb24pOgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBrZXks
dmFsdWUgcGFpciBvZiB0aGUgZWxlbWVudCBhdCB0aGUgaW5kaWNhdGVkIHBvc2l0aW9uIGFuZAor
ICAvLyAgIHJldHVybnMgYSBub2RlIGhhbmRsZSBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4K
KyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3QoY29uc3Qga2V5X3R5cGUmIHgpOgorICAvLwor
ICAvLyAgIEV4dHJhY3RzIHRoZSBrZXksdmFsdWUgcGFpciBvZiB0aGUgZWxlbWVudCB3aXRoIGEg
a2V5IG1hdGNoaW5nIHRoZSBwYXNzZWQKKyAgLy8gICBrZXkgdmFsdWUgYW5kIHJldHVybnMgYSBu
b2RlIGhhbmRsZSBvd25pbmcgdGhhdCBleHRyYWN0ZWQgZGF0YS4gSWYgdGhlCisgIC8vICAgYGZs
YXRfaGFzaF9tYXBgIGRvZXMgbm90IGNvbnRhaW4gYW4gZWxlbWVudCB3aXRoIGEgbWF0Y2hpbmcg
a2V5LCB0aGlzCisgIC8vICAgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eSBub2RlIGhhbmRsZS4K
KyAgdXNpbmcgQmFzZTo6ZXh0cmFjdDsKKworICAvLyBmbGF0X2hhc2hfbWFwOjptZXJnZSgpCisg
IC8vCisgIC8vIEV4dHJhY3RzIGVsZW1lbnRzIGZyb20gYSBnaXZlbiBgc291cmNlYCBmbGF0IGhh
c2ggbWFwIGludG8gdGhpcworICAvLyBgZmxhdF9oYXNoX21hcGAuIElmIHRoZSBkZXN0aW5hdGlv
biBgZmxhdF9oYXNoX21hcGAgYWxyZWFkeSBjb250YWlucyBhbgorICAvLyBlbGVtZW50IHdpdGgg
YW4gZXF1aXZhbGVudCBrZXksIHRoYXQgZWxlbWVudCBpcyBub3QgZXh0cmFjdGVkLgorICB1c2lu
ZyBCYXNlOjptZXJnZTsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpzd2FwKGZsYXRfaGFzaF9tYXAm
IG90aGVyKQorICAvLworICAvLyBFeGNoYW5nZXMgdGhlIGNvbnRlbnRzIG9mIHRoaXMgYGZsYXRf
aGFzaF9tYXBgIHdpdGggdGhvc2Ugb2YgdGhlIGBvdGhlcmAKKyAgLy8gZmxhdCBoYXNoIG1hcCwg
YXZvaWRpbmcgaW52b2NhdGlvbiBvZiBhbnkgbW92ZSwgY29weSwgb3Igc3dhcCBvcGVyYXRpb25z
IG9uCisgIC8vIGluZGl2aWR1YWwgZWxlbWVudHMuCisgIC8vCisgIC8vIEFsbCBpdGVyYXRvcnMg
YW5kIHJlZmVyZW5jZXMgb24gdGhlIGBmbGF0X2hhc2hfbWFwYCByZW1haW4gdmFsaWQsIGV4Y2Vw
dGluZworICAvLyBmb3IgdGhlIHBhc3QtdGhlLWVuZCBpdGVyYXRvciwgd2hpY2ggaXMgaW52YWxp
ZGF0ZWQuCisgIC8vCisgIC8vIGBzd2FwKClgIHJlcXVpcmVzIHRoYXQgdGhlIGZsYXQgaGFzaCBt
YXAncyBoYXNoaW5nIGFuZCBrZXkgZXF1aXZhbGVuY2UKKyAgLy8gZnVuY3Rpb25zIGJlIFN3YXBw
YWJsZSwgYW5kIGFyZSBleGNoYWdlZCB1c2luZyB1bnF1YWxpZmllZCBjYWxscyB0bworICAvLyBu
b24tbWVtYmVyIGBzd2FwKClgLiBJZiB0aGUgbWFwJ3MgYWxsb2NhdG9yIGhhcworICAvLyBgc3Rk
OjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcl90eXBlPjo6cHJvcGFnYXRlX29uX2NvbnRhaW5l
cl9zd2FwOjp2YWx1ZWAKKyAgLy8gc2V0IHRvIGB0cnVlYCwgdGhlIGFsbG9jYXRvcnMgYXJlIGFs
c28gZXhjaGFuZ2VkIHVzaW5nIGFuIHVucXVhbGlmaWVkIGNhbGwKKyAgLy8gdG8gbm9uLW1lbWJl
ciBgc3dhcCgpYDsgb3RoZXJ3aXNlLCB0aGUgYWxsb2NhdG9ycyBhcmUgbm90IHN3YXBwZWQuCisg
IHVzaW5nIEJhc2U6OnN3YXA7CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6cmVoYXNoKGNvdW50KQor
ICAvLworICAvLyBSZWhhc2hlcyB0aGUgYGZsYXRfaGFzaF9tYXBgLCBzZXR0aW5nIHRoZSBudW1i
ZXIgb2Ygc2xvdHMgdG8gYmUgYXQgbGVhc3QKKyAgLy8gdGhlIHBhc3NlZCB2YWx1ZS4gSWYgdGhl
IG5ldyBudW1iZXIgb2Ygc2xvdHMgaW5jcmVhc2VzIHRoZSBsb2FkIGZhY3RvciBtb3JlCisgIC8v
IHRoYW4gdGhlIGN1cnJlbnQgbWF4aW11bSBsb2FkIGZhY3RvcgorICAvLyAoYGNvdW50YCA8IGBz
aXplKClgIC8gYG1heF9sb2FkX2ZhY3RvcigpYCksIHRoZW4gdGhlIG5ldyBudW1iZXIgb2Ygc2xv
dHMKKyAgLy8gd2lsbCBiZSBhdCBsZWFzdCBgc2l6ZSgpYCAvIGBtYXhfbG9hZF9mYWN0b3IoKWAu
CisgIC8vCisgIC8vIFRvIGZvcmNlIGEgcmVoYXNoLCBwYXNzIHJlaGFzaCgwKS4KKyAgLy8KKyAg
Ly8gTk9URTogdW5saWtlIGJlaGF2aW9yIGluIGBzdGQ6OnVub3JkZXJlZF9tYXBgLCByZWZlcmVu
Y2VzIGFyZSBhbHNvCisgIC8vIGludmFsaWRhdGVkIHVwb24gYSBgcmVoYXNoKClgLgorICB1c2lu
ZyBCYXNlOjpyZWhhc2g7CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6cmVzZXJ2ZShjb3VudCkKKyAg
Ly8KKyAgLy8gU2V0cyB0aGUgbnVtYmVyIG9mIHNsb3RzIGluIHRoZSBgZmxhdF9oYXNoX21hcGAg
dG8gdGhlIG51bWJlciBuZWVkZWQgdG8KKyAgLy8gYWNjb21tb2RhdGUgYXQgbGVhc3QgYGNvdW50
YCB0b3RhbCBlbGVtZW50cyB3aXRob3V0IGV4Y2VlZGluZyB0aGUgY3VycmVudAorICAvLyBtYXhp
bXVtIGxvYWQgZmFjdG9yLCBhbmQgbWF5IHJlaGFzaCB0aGUgY29udGFpbmVyIGlmIG5lZWRlZC4K
KyAgdXNpbmcgQmFzZTo6cmVzZXJ2ZTsKKworICAvLyBmbGF0X2hhc2hfbWFwOjphdCgpCisgIC8v
CisgIC8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIG1hcHBlZCB2YWx1ZSBvZiB0aGUgZWxl
bWVudCB3aXRoIGtleSBlcXVpdmFsZW50CisgIC8vIHRvIHRoZSBwYXNzZWQga2V5LgorICB1c2lu
ZyBCYXNlOjphdDsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpjb250YWlucygpCisgIC8vCisgIC8v
IERldGVybWluZXMgd2hldGhlciBhbiBlbGVtZW50IHdpdGggYSBrZXkgY29tcGFyaW5nIGVxdWFs
IHRvIHRoZSBnaXZlbiBga2V5YAorICAvLyBleGlzdHMgd2l0aGluIHRoZSBgZmxhdF9oYXNoX21h
cGAsIHJldHVybmluZyBgdHJ1ZWAgaWYgc28gb3IgYGZhbHNlYAorICAvLyBvdGhlcndpc2UuCisg
IHVzaW5nIEJhc2U6OmNvbnRhaW5zOworCisgIC8vIGZsYXRfaGFzaF9tYXA6OmNvdW50KGNvbnN0
IEtleSYga2V5KSBjb25zdAorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVu
dHMgd2l0aCBhIGtleSBjb21wYXJpbmcgZXF1YWwgdG8gdGhlIGdpdmVuCisgIC8vIGBrZXlgIHdp
dGhpbiB0aGUgYGZsYXRfaGFzaF9tYXBgLiBub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIHJl
dHVybgorICAvLyBlaXRoZXIgYDFgIG9yIGAwYCBzaW5jZSBkdXBsaWNhdGUga2V5cyBhcmUgbm90
IGFsbG93ZWQgd2l0aGluIGEKKyAgLy8gYGZsYXRfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpj
b3VudDsKKworICAvLyBmbGF0X2hhc2hfbWFwOjplcXVhbF9yYW5nZSgpCisgIC8vCisgIC8vIFJl
dHVybnMgYSBjbG9zZWQgcmFuZ2UgW2ZpcnN0LCBsYXN0XSwgZGVmaW5lZCBieSBhIGBzdGQ6OnBh
aXJgIG9mIHR3bworICAvLyBpdGVyYXRvcnMsIGNvbnRhaW5pbmcgYWxsIGVsZW1lbnRzIHdpdGgg
dGhlIHBhc3NlZCBrZXkgaW4gdGhlCisgIC8vIGBmbGF0X2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFz
ZTo6ZXF1YWxfcmFuZ2U7CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6ZmluZCgpCisgIC8vCisgIC8v
IEZpbmRzIGFuIGVsZW1lbnQgd2l0aCB0aGUgcGFzc2VkIGBrZXlgIHdpdGhpbiB0aGUgYGZsYXRf
aGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpmaW5kOworCisgIC8vIGZsYXRfaGFzaF9tYXA6Om9w
ZXJhdG9yW10oKQorICAvLworICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YWx1ZSBt
YXBwZWQgdG8gdGhlIHBhc3NlZCBrZXkgd2l0aGluIHRoZQorICAvLyBgZmxhdF9oYXNoX21hcGAs
IHBlcmZvcm1pbmcgYW4gYGluc2VydCgpYCBpZiB0aGUga2V5IGRvZXMgbm90IGFscmVhZHkKKyAg
Ly8gZXhpc3QuCisgIC8vCisgIC8vIElmIGFuIGluc2VydGlvbiBvY2N1cnMgYW5kIHJlc3VsdHMg
aW4gYSByZWhhc2hpbmcgb2YgdGhlIGNvbnRhaW5lciwgYWxsCisgIC8vIGl0ZXJhdG9ycyBhcmUg
aW52YWxpZGF0ZWQuIE90aGVyd2lzZSBpdGVyYXRvcnMgYXJlIG5vdCBhZmZlY3RlZCBhbmQKKyAg
Ly8gcmVmZXJlbmNlcyBhcmUgbm90IGludmFsaWRhdGVkLiBPdmVybG9hZHMgYXJlIGxpc3RlZCBi
ZWxvdy4KKyAgLy8KKyAgLy8gVCYgb3BlcmF0b3JbXShjb25zdCBLZXkmIGtleSk6CisgIC8vCisg
IC8vICAgSW5zZXJ0cyBhbiBpbml0X3R5cGUgb2JqZWN0IGNvbnN0cnVjdGVkIGluLXBsYWNlIGlm
IHRoZSBlbGVtZW50IHdpdGggdGhlCisgIC8vICAgZ2l2ZW4ga2V5IGRvZXMgbm90IGV4aXN0Lgor
ICAvLworICAvLyBUJiBvcGVyYXRvcltdKEtleSYmIGtleSk6CisgIC8vCisgIC8vICAgSW5zZXJ0
cyBhbiBpbml0X3R5cGUgb2JqZWN0IGNvbnN0cnVjdGVkIGluLXBsYWNlIHByb3ZpZGVkIHRoYXQg
YW4gZWxlbWVudAorICAvLyAgIHdpdGggdGhlIGdpdmVuIGtleSBkb2VzIG5vdCBleGlzdC4KKyAg
dXNpbmcgQmFzZTo6b3BlcmF0b3JbXTsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpidWNrZXRfY291
bnQoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgImJ1Y2tldHMiIHdpdGhpbiB0
aGUgYGZsYXRfaGFzaF9tYXBgLiBOb3RlIHRoYXQKKyAgLy8gYmVjYXVzZSBhIGZsYXQgaGFzaCBt
YXAgY29udGFpbnMgYWxsIGVsZW1lbnRzIHdpdGhpbiBpdHMgaW50ZXJuYWwgc3RvcmFnZSwKKyAg
Ly8gdGhpcyB2YWx1ZSBzaW1wbHkgZXF1YWxzIHRoZSBjdXJyZW50IGNhcGFjaXR5IG9mIHRoZSBg
ZmxhdF9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmJ1Y2tldF9jb3VudDsKKworICAvLyBmbGF0
X2hhc2hfbWFwOjpsb2FkX2ZhY3RvcigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQg
bG9hZCBmYWN0b3Igb2YgdGhlIGBmbGF0X2hhc2hfbWFwYCAodGhlIGF2ZXJhZ2UgbnVtYmVyCisg
IC8vIG9mIHNsb3RzIG9jY3VwaWVkIHdpdGggYSB2YWx1ZSB3aXRoaW4gdGhlIGhhc2ggbWFwKS4K
KyAgdXNpbmcgQmFzZTo6bG9hZF9mYWN0b3I7CisKKyAgLy8gZmxhdF9oYXNoX21hcDo6bWF4X2xv
YWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8gTWFuYWdlcyB0aGUgbWF4aW11bSBsb2FkIGZhY3RvciBv
ZiB0aGUgYGZsYXRfaGFzaF9tYXBgLiBPdmVybG9hZHMgYXJlCisgIC8vIGxpc3RlZCBiZWxvdy4K
KyAgLy8KKyAgLy8gZmxvYXQgZmxhdF9oYXNoX21hcDo6bWF4X2xvYWRfZmFjdG9yKCkKKyAgLy8K
KyAgLy8gICBSZXR1cm5zIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBmYWN0b3Igb2YgdGhlIGBm
bGF0X2hhc2hfbWFwYC4KKyAgLy8KKyAgLy8gdm9pZCBmbGF0X2hhc2hfbWFwOjptYXhfbG9hZF9m
YWN0b3IoZmxvYXQgbWwpCisgIC8vCisgIC8vICAgU2V0cyB0aGUgbWF4aW11bSBsb2FkIGZhY3Rv
ciBvZiB0aGUgYGZsYXRfaGFzaF9tYXBgIHRvIHRoZSBwYXNzZWQgdmFsdWUuCisgIC8vCisgIC8v
ICAgTk9URTogVGhpcyBvdmVybG9hZCBpcyBwcm92aWRlZCBvbmx5IGZvciBBUEkgY29tcGF0aWJp
bGl0eSB3aXRoIHRoZSBTVEw7CisgIC8vICAgYGZsYXRfaGFzaF9tYXBgIHdpbGwgaWdub3JlIGFu
eSBzZXQgbG9hZCBmYWN0b3IgYW5kIG1hbmFnZSBpdHMgcmVoYXNoaW5nCisgIC8vICAgaW50ZXJu
YWxseSBhcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgIHVzaW5nIEJhc2U6Om1heF9sb2Fk
X2ZhY3RvcjsKKworICAvLyBmbGF0X2hhc2hfbWFwOjpnZXRfYWxsb2NhdG9yKCkKKyAgLy8KKyAg
Ly8gUmV0dXJucyB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBm
bGF0X2hhc2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6Z2V0X2FsbG9jYXRvcjsKKworICAvLyBmbGF0
X2hhc2hfbWFwOjpoYXNoX2Z1bmN0aW9uKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgaGFzaGlu
ZyBmdW5jdGlvbiB1c2VkIHRvIGhhc2ggdGhlIGtleXMgd2l0aGluIHRoaXMKKyAgLy8gYGZsYXRf
aGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpoYXNoX2Z1bmN0aW9uOworCisgIC8vIGZsYXRfaGFz
aF9tYXA6OmtleV9lcSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGZ1bmN0aW9uIHVzZWQgZm9y
IGNvbXBhcmluZyBrZXlzIGVxdWFsaXR5LgorICB1c2luZyBCYXNlOjprZXlfZXE7Cit9OworCitu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNz
IFY+CitzdHJ1Y3QgRmxhdEhhc2hNYXBQb2xpY3kgeworICB1c2luZyBzbG90X3R5cGUgPSBjb250
YWluZXJfaW50ZXJuYWw6OnNsb3RfdHlwZTxLLCBWPjsKKyAgdXNpbmcga2V5X3R5cGUgPSBLOwor
ICB1c2luZyBtYXBwZWRfdHlwZSA9IFY7CisgIHVzaW5nIGluaXRfdHlwZSA9IHN0ZDo6cGFpcjwv
Km5vbiBjb25zdCovIGtleV90eXBlLCBtYXBwZWRfdHlwZT47CisKKyAgdGVtcGxhdGUgPGNsYXNz
IEFsbG9jYXRvciwgY2xhc3MuLi4gQXJncz4KKyAgc3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9j
YXRvciogYWxsb2MsIHNsb3RfdHlwZSogc2xvdCwgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICBzbG90
X3R5cGU6OmNvbnN0cnVjdChhbGxvYywgc2xvdCwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBzbG90KSB7CisgICAgc2xvdF90eXBl
OjpkZXN0cm95KGFsbG9jLCBzbG90KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0
b3I+CisgIHN0YXRpYyB2b2lkIHRyYW5zZmVyKEFsbG9jYXRvciogYWxsb2MsIHNsb3RfdHlwZSog
bmV3X3Nsb3QsCisgICAgICAgICAgICAgICAgICAgICAgIHNsb3RfdHlwZSogb2xkX3Nsb3QpIHsK
KyAgICBzbG90X3R5cGU6OnRyYW5zZmVyKGFsbG9jLCBuZXdfc2xvdCwgb2xkX3Nsb3QpOworICB9
CisKKyAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzLi4uIEFyZ3M+CisgIHN0YXRpYyBkZWNsdHlw
ZShhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkRlY29tcG9zZVBhaXIoCisgICAgICBzdGQ6OmRl
Y2x2YWw8Rj4oKSwgc3RkOjpkZWNsdmFsPEFyZ3M+KCkuLi4pKQorICBhcHBseShGJiYgZiwgQXJn
cyYmLi4uIGFyZ3MpIHsKKyAgICByZXR1cm4gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpEZWNv
bXBvc2VQYWlyKHN0ZDo6Zm9yd2FyZDxGPihmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cisg
IH0KKworICBzdGF0aWMgc2l6ZV90IHNwYWNlX3VzZWQoY29uc3Qgc2xvdF90eXBlKikgeyByZXR1
cm4gMDsgfQorCisgIHN0YXRpYyBzdGQ6OnBhaXI8Y29uc3QgSywgVj4mIGVsZW1lbnQoc2xvdF90
eXBlKiBzbG90KSB7IHJldHVybiBzbG90LT52YWx1ZTsgfQorCisgIHN0YXRpYyBWJiB2YWx1ZShz
dGQ6OnBhaXI8Y29uc3QgSywgVj4qIGt2KSB7IHJldHVybiBrdi0+c2Vjb25kOyB9CisgIHN0YXRp
YyBjb25zdCBWJiB2YWx1ZShjb25zdCBzdGQ6OnBhaXI8Y29uc3QgSywgVj4qIGt2KSB7IHJldHVy
biBrdi0+c2Vjb25kOyB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
Cit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9GTEFUX0hB
U0hfTUFQX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX21hcF90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXBfdGVzdC5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
MGE3ODFmZmQ2YzdkOWQxNDkwODZlNDQzMTc0YTdhYTc2YWQyMmFlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXBfdGVzdC5jYwpAQCAtMCwwICsxLDI0MSBA
QAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFi
c2wvY29udGFpbmVyL2ZsYXRfaGFzaF9tYXAuaCIKKworI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0cnVjdG9yX3Rlc3QuaCIKKyNpbmNsdWRl
ICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgiCisj
aW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9tb2RpZmllcnNf
dGVzdC5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvYW55LmgiCisKK25hbWVzcGFjZSBhYnNsIHsK
K25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKK3VzaW5nIDo6YWJz
bDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2ludGVybmFsOjpFbnVtOwordXNpbmcgOjphYnNs
Ojpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfaW50ZXJuYWw6OkVudW1DbGFzczsKK3VzaW5nIDo6
dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6UGFpcjsKK3VzaW5nIDo6dGVzdGluZzo6VW5v
cmRlcmVkRWxlbWVudHNBcmU7CisKK3RlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBWPgordXNpbmcg
TWFwID0KKyAgICBmbGF0X2hhc2hfbWFwPEssIFYsIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRl
ZnVsVGVzdGluZ0VxdWFsLCBBbGxvYzw+PjsKKworc3RhdGljX2Fzc2VydCghc3RkOjppc19zdGFu
ZGFyZF9sYXlvdXQ8Tm9uU3RhbmRhcmRMYXlvdXQ+KCksICIiKTsKKwordXNpbmcgTWFwVHlwZXMg
PQorICAgIDo6dGVzdGluZzo6VHlwZXM8TWFwPGludCwgaW50PiwgTWFwPHN0ZDo6c3RyaW5nLCBp
bnQ+LCBNYXA8RW51bSwgc3RkOjpzdHJpbmc+LAorICAgICAgICAgICAgICAgICAgICAgTWFwPEVu
dW1DbGFzcywgaW50PiwgTWFwPGludCwgTm9uU3RhbmRhcmRMYXlvdXQ+LAorICAgICAgICAgICAg
ICAgICAgICAgTWFwPE5vblN0YW5kYXJkTGF5b3V0LCBpbnQ+PjsKKworSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9DQVNFX1AoRmxhdEhhc2hNYXAsIENvbnN0cnVjdG9yVGVzdCwgTWFwVHlwZXMpOwor
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoRmxhdEhhc2hNYXAsIExvb2t1cFRlc3QsIE1h
cFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKEZsYXRIYXNoTWFwLCBNb2Rp
ZmllcnNUZXN0LCBNYXBUeXBlcyk7CisKK1RFU1QoRmxhdEhhc2hNYXAsIFN0YW5kYXJkTGF5b3V0
KSB7CisgIHN0cnVjdCBJbnQgeworICAgIGV4cGxpY2l0IEludChzaXplX3QgdmFsdWUpIDogdmFs
dWUodmFsdWUpIHt9CisgICAgSW50KCkgOiB2YWx1ZSgwKSB7IEFERF9GQUlMVVJFKCk7IH0KKyAg
ICBJbnQoY29uc3QgSW50JiBvdGhlcikgOiB2YWx1ZShvdGhlci52YWx1ZSkgeyBBRERfRkFJTFVS
RSgpOyB9CisgICAgSW50KEludCYmKSA9IGRlZmF1bHQ7CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEludCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHZhbHVlID09IG90aGVyLnZhbHVlOyB9Cisg
ICAgc2l6ZV90IHZhbHVlOworICB9OworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc3RhbmRhcmRf
bGF5b3V0PEludD4oKSwgIiIpOworCisgIHN0cnVjdCBIYXNoIHsKKyAgICBzaXplX3Qgb3BlcmF0
b3IoKShjb25zdCBJbnQmIG9iaikgY29uc3QgeyByZXR1cm4gb2JqLnZhbHVlOyB9CisgIH07CisK
KyAgLy8gVmVyaWZ5IHRoYXQgbmVpdGhlciB0aGUga2V5IG5vciB0aGUgdmFsdWUgZ2V0IGRlZmF1
bHQtY29uc3RydWN0ZWQgb3IKKyAgLy8gY29weS1jb25zdHJ1Y3RlZC4KKyAgeworICAgIGZsYXRf
aGFzaF9tYXA8SW50LCBJbnQsIEhhc2g+IG07CisgICAgbS50cnlfZW1wbGFjZShJbnQoMSksIElu
dCgyKSk7CisgICAgbS50cnlfZW1wbGFjZShJbnQoMyksIEludCg0KSk7CisgICAgbS5lcmFzZShJ
bnQoMSkpOworICAgIG0ucmVoYXNoKDIgKiBtLmJ1Y2tldF9jb3VudCgpKTsKKyAgfQorICB7Cisg
ICAgZmxhdF9oYXNoX21hcDxJbnQsIEludCwgSGFzaD4gbTsKKyAgICBtLnRyeV9lbXBsYWNlKElu
dCgxKSwgSW50KDIpKTsKKyAgICBtLnRyeV9lbXBsYWNlKEludCgzKSwgSW50KDQpKTsKKyAgICBt
LmVyYXNlKEludCgxKSk7CisgICAgbS5jbGVhcigpOworICB9Cit9CisKKy8vIGdjYyBiZWNvbWVz
IHVuaGFwcHkgaWYgdGhpcyBpcyBpbnNpZGUgdGhlIG1ldGhvZCwgc28gcHVsbCBpdCBvdXQgaGVy
ZS4KK3N0cnVjdCBiYWxhc3Qge307CisKK1RFU1QoRmxhdEhhc2hNYXAsIEl0ZXJhdGVzTXNhbikg
eworICAvLyBCZWNhdXNlIFN3aXNzVGFibGUgcmFuZG9taXplcyBvbiBwb2ludGVyIGFkZHJlc3Nl
cywgd2Uga2VlcCBvbGQgdGFibGVzCisgIC8vIGFyb3VuZCB0byBlbnN1cmUgd2UgZG9uJ3QgcmV1
c2Ugb2xkIG1lbW9yeS4KKyAgc3RkOjp2ZWN0b3I8YWJzbDo6ZmxhdF9oYXNoX21hcDxpbnQsIGJh
bGFzdD4+IGdhcmJhZ2U7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICBh
YnNsOjpmbGF0X2hhc2hfbWFwPGludCwgYmFsYXN0PiB0OworICAgIGZvciAoaW50IGogPSAwOyBq
IDwgMTAwOyArK2opIHsKKyAgICAgIHRbal07CisgICAgICBmb3IgKGNvbnN0IGF1dG8mIHAgOiB0
KSBFWFBFQ1RfVEhBVChwLCBQYWlyKF8sIF8pKTsKKyAgICB9CisgICAgZ2FyYmFnZS5wdXNoX2Jh
Y2soc3RkOjptb3ZlKHQpKTsKKyAgfQorfQorCisvLyBEZW1vbnN0cmF0aW9uIG9mIHRoZSAiTGF6
eSBLZXkiIHBhdHRlcm4uICBUaGlzIHVzZXMgaGV0ZXJvZ2Vub3VzIGluc2VydCB0bworLy8gYXZv
aWQgY3JlYXRpbmcgZXhwZW5zaXZlIGtleSBlbGVtZW50cyB3aGVuIHRoZSBpdGVtIGlzIGFscmVh
ZHkgcHJlc2VudCBpbiB0aGUKKy8vIG1hcC4KK3N0cnVjdCBMYXp5SW50IHsKKyAgZXhwbGljaXQg
TGF6eUludChzaXplX3QgdmFsdWUsIGludCogdHJhY2tlcikKKyAgICAgIDogdmFsdWUodmFsdWUp
LCB0cmFja2VyKHRyYWNrZXIpIHt9CisKKyAgZXhwbGljaXQgb3BlcmF0b3Igc2l6ZV90KCkgY29u
c3QgeworICAgICsrKnRyYWNrZXI7CisgICAgcmV0dXJuIHZhbHVlOworICB9CisKKyAgc2l6ZV90
IHZhbHVlOworICBpbnQqIHRyYWNrZXI7Cit9OworCitzdHJ1Y3QgSGFzaCB7CisgIHVzaW5nIGlz
X3RyYW5zcGFyZW50ID0gdm9pZDsKKyAgaW50KiB0cmFja2VyOworICBzaXplX3Qgb3BlcmF0b3Io
KShzaXplX3Qgb2JqKSBjb25zdCB7CisgICAgKysqdHJhY2tlcjsKKyAgICByZXR1cm4gb2JqOwor
ICB9CisgIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IExhenlJbnQmIG9iaikgY29uc3QgeworICAg
ICsrKnRyYWNrZXI7CisgICAgcmV0dXJuIG9iai52YWx1ZTsKKyAgfQorfTsKKworc3RydWN0IEVx
IHsKKyAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworICBib29sIG9wZXJhdG9yKCkoc2l6
ZV90IGxocywgc2l6ZV90IHJocykgY29uc3QgeworICAgIHJldHVybiBsaHMgPT0gcmhzOworICB9
CisgIGJvb2wgb3BlcmF0b3IoKShzaXplX3QgbGhzLCBjb25zdCBMYXp5SW50JiByaHMpIGNvbnN0
IHsKKyAgICByZXR1cm4gbGhzID09IHJocy52YWx1ZTsKKyAgfQorfTsKKworVEVTVChGbGF0SGFz
aE1hcCwgTGF6eUtleVBhdHRlcm4pIHsKKyAgLy8gaGFzaGVzIGFyZSBvbmx5IGd1YXJhbnRlZWQg
aW4gb3B0IG1vZGUsIHdlIHVzZSBhc3NlcnRpb25zIHRvIHRyYWNrIGludGVybmFsCisgIC8vIHN0
YXRlIHRoYXQgY2FuIGNhdXNlIGV4dHJhIGNhbGxzIHRvIGhhc2guCisgIGludCBjb252ZXJzaW9u
cyA9IDA7CisgIGludCBoYXNoZXMgPSAwOworICBmbGF0X2hhc2hfbWFwPHNpemVfdCwgc2l6ZV90
LCBIYXNoLCBFcT4gbSgwLCBIYXNoeyZoYXNoZXN9KTsKKworICBtW0xhenlJbnQoMSwgJmNvbnZl
cnNpb25zKV0gPSAxOworICBFWFBFQ1RfVEhBVChtLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWly
KDEsIDEpKSk7CisgIEVYUEVDVF9FUShjb252ZXJzaW9ucywgMSk7CisjaWZkZWYgTkRFQlVHCisg
IEVYUEVDVF9FUShoYXNoZXMsIDEpOworI2VuZGlmCisKKyAgbVtMYXp5SW50KDEsICZjb252ZXJz
aW9ucyldID0gMjsKKyAgRVhQRUNUX1RIQVQobSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigx
LCAyKSkpOworICBFWFBFQ1RfRVEoY29udmVyc2lvbnMsIDEpOworI2lmZGVmIE5ERUJVRworICBF
WFBFQ1RfRVEoaGFzaGVzLCAyKTsKKyNlbmRpZgorCisgIG0udHJ5X2VtcGxhY2UoTGF6eUludCgy
LCAmY29udmVyc2lvbnMpLCAzKTsKKyAgRVhQRUNUX1RIQVQobSwgVW5vcmRlcmVkRWxlbWVudHNB
cmUoUGFpcigxLCAyKSwgUGFpcigyLCAzKSkpOworICBFWFBFQ1RfRVEoY29udmVyc2lvbnMsIDIp
OworI2lmZGVmIE5ERUJVRworICBFWFBFQ1RfRVEoaGFzaGVzLCAzKTsKKyNlbmRpZgorCisgIG0u
dHJ5X2VtcGxhY2UoTGF6eUludCgyLCAmY29udmVyc2lvbnMpLCA0KTsKKyAgRVhQRUNUX1RIQVQo
bSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFpcigxLCAyKSwgUGFpcigyLCAzKSkpOworICBFWFBF
Q1RfRVEoY29udmVyc2lvbnMsIDIpOworI2lmZGVmIE5ERUJVRworICBFWFBFQ1RfRVEoaGFzaGVz
LCA0KTsKKyNlbmRpZgorfQorCitURVNUKEZsYXRIYXNoTWFwLCBCaXRmaWVsZEFyZ3VtZW50KSB7
CisgIHVuaW9uIHsKKyAgICBpbnQgbiA6IDE7CisgIH07CisgIG4gPSAwOworICBmbGF0X2hhc2hf
bWFwPGludCwgaW50PiBtOworICBtLmVyYXNlKG4pOworICBtLmNvdW50KG4pOworICBtLnByZWZl
dGNoKG4pOworICBtLmZpbmQobik7CisgIG0uY29udGFpbnMobik7CisgIG0uZXF1YWxfcmFuZ2Uo
bik7CisgIG0uaW5zZXJ0X29yX2Fzc2lnbihuLCBuKTsKKyAgbS5pbnNlcnRfb3JfYXNzaWduKG0u
ZW5kKCksIG4sIG4pOworICBtLnRyeV9lbXBsYWNlKG4pOworICBtLnRyeV9lbXBsYWNlKG0uZW5k
KCksIG4pOworICBtLmF0KG4pOworICBtW25dOworfQorCitURVNUKEZsYXRIYXNoTWFwLCBNZXJn
ZUV4dHJhY3RJbnNlcnQpIHsKKyAgLy8gV2UgY2FuJ3QgdGVzdCBtdXRhYmxlIGtleXMsIG9yIG5v
bi1jb3B5YWJsZSBrZXlzIHdpdGggZmxhdF9oYXNoX21hcC4KKyAgLy8gVGVzdCB0aGF0IHRoZSBu
b2RlcyBoYXZlIHRoZSBwcm9wZXIgQVBJLgorICBhYnNsOjpmbGF0X2hhc2hfbWFwPGludCwgaW50
PiBtID0ge3sxLCA3fSwgezIsIDl9fTsKKyAgYXV0byBub2RlID0gbS5leHRyYWN0KDEpOworICBF
WFBFQ1RfVFJVRShub2RlKTsKKyAgRVhQRUNUX0VRKG5vZGUua2V5KCksIDEpOworICBFWFBFQ1Rf
RVEobm9kZS5tYXBwZWQoKSwgNyk7CisgIEVYUEVDVF9USEFUKG0sIFVub3JkZXJlZEVsZW1lbnRz
QXJlKFBhaXIoMiwgOSkpKTsKKworICBub2RlLm1hcHBlZCgpID0gMTc7CisgIG0uaW5zZXJ0KHN0
ZDo6bW92ZShub2RlKSk7CisgIEVYUEVDVF9USEFUKG0sIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBh
aXIoMSwgMTcpLCBQYWlyKDIsIDkpKSk7Cit9CisjaWYgIWRlZmluZWQoX19BTkRST0lEX18pICYm
ICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19FTVNDUklQVEVOX18pCitURVNUKEZs
YXRIYXNoTWFwLCBBbnkpIHsKKyAgYWJzbDo6ZmxhdF9oYXNoX21hcDxpbnQsIGFic2w6OmFueT4g
bTsKKyAgbS5lbXBsYWNlKDEsIDcpOworICBhdXRvIGl0ID0gbS5maW5kKDEpOworICBBU1NFUlRf
TkUoaXQsIG0uZW5kKCkpOworICBFWFBFQ1RfRVEoNywgYWJzbDo6YW55X2Nhc3Q8aW50PihpdC0+
c2Vjb25kKSk7CisKKyAgbS5lbXBsYWNlKHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjpt
YWtlX3R1cGxlKDIpLCBzdGQ6Om1ha2VfdHVwbGUoOCkpOworICBpdCA9IG0uZmluZCgyKTsKKyAg
QVNTRVJUX05FKGl0LCBtLmVuZCgpKTsKKyAgRVhQRUNUX0VRKDgsIGFic2w6OmFueV9jYXN0PGlu
dD4oaXQtPnNlY29uZCkpOworCisgIG0uZW1wbGFjZShzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3Qs
IHN0ZDo6bWFrZV90dXBsZSgzKSwKKyAgICAgICAgICAgIHN0ZDo6bWFrZV90dXBsZShhYnNsOjph
bnkoOSkpKTsKKyAgaXQgPSBtLmZpbmQoMyk7CisgIEFTU0VSVF9ORShpdCwgbS5lbmQoKSk7Cisg
IEVYUEVDVF9FUSg5LCBhYnNsOjphbnlfY2FzdDxpbnQ+KGl0LT5zZWNvbmQpKTsKKworICBzdHJ1
Y3QgSCB7CisgICAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgYWJzbDo6YW55JikgY29uc3QgeyBy
ZXR1cm4gMDsgfQorICB9OworICBzdHJ1Y3QgRSB7CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0
IGFic2w6OmFueSYsIGNvbnN0IGFic2w6OmFueSYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAg
fTsKKyAgYWJzbDo6ZmxhdF9oYXNoX21hcDxhYnNsOjphbnksIGludCwgSCwgRT4gbTI7CisgIG0y
LmVtcGxhY2UoMSwgNyk7CisgIGF1dG8gaXQyID0gbTIuZmluZCgxKTsKKyAgQVNTRVJUX05FKGl0
MiwgbTIuZW5kKCkpOworICBFWFBFQ1RfRVEoNywgaXQyLT5zZWNvbmQpOworfQorI2VuZGlmICAv
LyBfX0FORFJPSURfXworCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWlu
ZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvZmxhdF9oYXNoX3NldC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9zZXQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45OGFlYWQxYThhZTIwOWUyYTQ1YTk1NjE2N2JlOTVlNzI3MGM1NDRiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ZsYXRfaGFzaF9zZXQuaApAQCAtMCwwICsx
LDQzOSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmlsZTogZmxhdF9oYXNoX3NldC5oCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIEFuIGBhYnNsOjpmbGF0X2hhc2hfc2V0PFQ+YCBpcyBhbiB1
bm9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIGRlc2lnbmVkIHRvCisvLyBiZSBhIG1vcmUg
ZWZmaWNpZW50IHJlcGxhY2VtZW50IGZvciBgc3RkOjp1bm9yZGVyZWRfc2V0YC4gTGlrZQorLy8g
YHVub3JkZXJlZF9zZXRgLCBzZWFyY2gsIGluc2VydGlvbiwgYW5kIGRlbGV0aW9uIG9mIHNldCBl
bGVtZW50cyBjYW4gYmUgZG9uZQorLy8gYXMgYW4gYE8oMSlgIG9wZXJhdGlvbi4gSG93ZXZlciwg
YGZsYXRfaGFzaF9zZXRgIChhbmQgb3RoZXIgdW5vcmRlcmVkCisvLyBhc3NvY2lhdGl2ZSBjb250
YWluZXJzIGtub3duIGFzIHRoZSBjb2xsZWN0aW9uIG9mIEFic2VpbCAiU3dpc3MgdGFibGVzIikK
Ky8vIGNvbnRhaW4gb3RoZXIgb3B0aW1pemF0aW9ucyB0aGF0IHJlc3VsdCBpbiBib3RoIG1lbW9y
eSBhbmQgY29tcHV0YXRpb24KKy8vIGFkdmFudGFnZXMuCisvLworLy8gSW4gbW9zdCBjYXNlcywg
eW91ciBkZWZhdWx0IGNob2ljZSBmb3IgYSBoYXNoIHNldCBzaG91bGQgYmUgYSBzZXQgb2YgdHlw
ZQorLy8gYGZsYXRfaGFzaF9zZXRgLgorI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9GTEFUX0hBU0hf
U0VUX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0ZMQVRfSEFTSF9TRVRfSF8KKworI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJhYnNsL2Jh
c2UvbWFjcm9zLmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvY29udGFpbmVy
X21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rp
b25fZGVmYXVsdHMuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQK
KyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFt
ZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBGbGF0SGFzaFNldFBvbGljeTsKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwK
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGFic2w6OmZsYXRfaGFzaF9zZXQKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQW4gYGFic2w6OmZsYXRfaGFzaF9zZXQ8VD5gIGlz
IGFuIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgd2hpY2ggaGFzCisvLyBiZWVuIG9w
dGltaXplZCBmb3IgYm90aCBzcGVlZCBhbmQgbWVtb3J5IGZvb3RwcmludCBpbiBtb3N0IGNvbW1v
biB1c2UgY2FzZXMuCisvLyBJdHMgaW50ZXJmYWNlIGlzIHNpbWlsYXIgdG8gdGhhdCBvZiBgc3Rk
Ojp1bm9yZGVyZWRfc2V0PFQ+YCB3aXRoIHRoZQorLy8gZm9sbG93aW5nIG5vdGFibGUgZGlmZmVy
ZW5jZXM6CisvLworLy8gKiBSZXF1aXJlcyBrZXlzIHRoYXQgYXJlIENvcHlDb25zdHJ1Y3RpYmxl
CisvLyAqIFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwLCB0aHJvdWdoIGBmaW5kKClgLCBg
b3BlcmF0b3JbXSgpYCBhbmQKKy8vICAgYGluc2VydCgpYCwgcHJvdmlkZWQgdGhhdCB0aGUgc2V0
IGlzIHByb3ZpZGVkIGEgY29tcGF0aWJsZSBoZXRlcm9nZW5lb3VzCisvLyAgIGhhc2hpbmcgZnVu
Y3Rpb24gYW5kIGVxdWFsaXR5IG9wZXJhdG9yLgorLy8gKiBJbnZhbGlkYXRlcyBhbnkgcmVmZXJl
bmNlcyBhbmQgcG9pbnRlcnMgdG8gZWxlbWVudHMgd2l0aGluIHRoZSB0YWJsZSBhZnRlcgorLy8g
ICBgcmVoYXNoKClgLgorLy8gKiBDb250YWlucyBhIGBjYXBhY2l0eSgpYCBtZW1iZXIgZnVuY3Rp
b24gaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIGVsZW1lbnQKKy8vICAgc2xvdHMgKG9wZW4sIGRl
bGV0ZWQsIGFuZCBlbXB0eSkgd2l0aGluIHRoZSBoYXNoIHNldC4KKy8vICogUmV0dXJucyBgdm9p
ZGAgZnJvbSB0aGUgYGVyYXNlKGl0ZXJhdG9yKWAgb3ZlcmxvYWQuCisvLworLy8gQnkgZGVmYXVs
dCwgYGZsYXRfaGFzaF9zZXRgIHVzZXMgdGhlIGBhYnNsOjpIYXNoYCBoYXNoaW5nIGZyYW1ld29y
ay4gQWxsCisvLyBmdW5kYW1lbnRhbCBhbmQgQWJzZWlsIHR5cGVzIHRoYXQgc3VwcG9ydCB0aGUg
YGFic2w6Okhhc2hgIGZyYW1ld29yayBoYXZlIGEKKy8vIGNvbXBhdGlibGUgZXF1YWxpdHkgb3Bl
cmF0b3IgZm9yIGNvbXBhcmluZyBpbnNlcnRpb25zIGludG8gYGZsYXRfaGFzaF9tYXBgLgorLy8g
SWYgeW91ciB0eXBlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoZSBgYXNibDo6SGFzaGAgZnJh
bWV3b3JrLCBzZWUKKy8vIGFic2wvaGFzaC9oYXNoLmggZm9yIGluZm9ybWF0aW9uIG9uIGV4dGVu
ZGluZyBBYnNlaWwgaGFzaGluZyB0byB1c2VyLWRlZmluZWQKKy8vIHR5cGVzLgorLy8KKy8vIE5P
VEU6IEEgYGZsYXRfaGFzaF9zZXRgIHN0b3JlcyBpdHMga2V5cyBkaXJlY3RseSBpbnNpZGUgaXRz
IGltcGxlbWVudGF0aW9uCisvLyBhcnJheSB0byBhdm9pZCBtZW1vcnkgaW5kaXJlY3Rpb24uIEJl
Y2F1c2UgYSBgZmxhdF9oYXNoX3NldGAgaXMgZGVzaWduZWQgdG8KKy8vIG1vdmUgZGF0YSB3aGVu
IHJlaGFzaGVkLCBzZXQga2V5cyB3aWxsIG5vdCByZXRhaW4gcG9pbnRlciBzdGFiaWxpdHkuIElm
IHlvdQorLy8gcmVxdWlyZSBwb2ludGVyIHN0YWJpbGl0eSwgY29uc2lkZXIgdXNpbmcKKy8vIGBh
YnNsOjpmbGF0X2hhc2hfc2V0PHN0ZDo6dW5pcXVlX3B0cjxUPj5gLiBJZiB5b3VyIHR5cGUgaXMg
bm90IG1vdmVhYmxlIGFuZAorLy8geW91IHJlcXVpcmUgcG9pbnRlciBzdGFiaWxpdHksIGNvbnNp
ZGVyIGBhYnNsOjpub2RlX2hhc2hfc2V0YCBpbnN0ZWFkLgorLy8KKy8vIEV4YW1wbGU6CisvLwor
Ly8gICAvLyBDcmVhdGUgYSBmbGF0IGhhc2ggc2V0IG9mIHRocmVlIHN0cmluZ3MKKy8vICAgYWJz
bDo6ZmxhdF9oYXNoX3NldDxzdGQ6OnN0cmluZz4gZHVja3MgPQorLy8gICAgIHsiaHVleSIsICJk
ZXdleSIsICJsb3VpZSJ9OworLy8KKy8vICAvLyBJbnNlcnQgYSBuZXcgZWxlbWVudCBpbnRvIHRo
ZSBmbGF0IGhhc2ggc2V0CisvLyAgZHVja3MuaW5zZXJ0KCJkb25hbGQifTsKKy8vCisvLyAgLy8g
Rm9yY2UgYSByZWhhc2ggb2YgdGhlIGZsYXQgaGFzaCBzZXQKKy8vICBkdWNrcy5yZWhhc2goMCk7
CisvLworLy8gIC8vIFNlZSBpZiAiZGV3ZXkiIGlzIHByZXNlbnQKKy8vICBpZiAoZHVja3MuY29u
dGFpbnMoImRld2V5IikpIHsKKy8vICAgIHN0ZDo6Y291dCA8PCAiV2UgZm91bmQgZGV3ZXkhIiA8
PCBzdGQ6OmVuZGw7CisvLyAgfQordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEhhc2ggPSBhYnNs
Ojpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfZGVmYXVsdF9oYXNoPFQ+LAorICAgICAgICAgIGNs
YXNzIEVxID0gYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2RlZmF1bHRfZXE8VD4sCisg
ICAgICAgICAgY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8VD4+CitjbGFzcyBmbGF0
X2hhc2hfc2V0CisgICAgOiBwdWJsaWMgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpyYXdfaGFz
aF9zZXQ8CisgICAgICAgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpGbGF0SGFzaFNldFBv
bGljeTxUPiwgSGFzaCwgRXEsIEFsbG9jYXRvcj4geworICB1c2luZyBCYXNlID0gdHlwZW5hbWUg
ZmxhdF9oYXNoX3NldDo6cmF3X2hhc2hfc2V0OworCisgcHVibGljOgorICBmbGF0X2hhc2hfc2V0
KCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpiZWdpbigp
CisgIC8vCisgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUg
YGZsYXRfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjpiZWdpbjsKKworICAvLyBmbGF0X2hhc2hf
c2V0OjpjYmVnaW4oKQorICAvLworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhl
IGJlZ2lubmluZyBvZiB0aGUgYGZsYXRfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjpjYmVnaW47
CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6Y2VuZCgpCisgIC8vCisgIC8vIFJldHVybnMgYSBjb25z
dCBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBgZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJh
c2U6OmNlbmQ7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6ZW5kKCkKKyAgLy8KKyAgLy8gUmV0dXJu
cyBhbiBpdGVyYXRvciB0byB0aGUgZW5kIG9mIHRoZSBgZmxhdF9oYXNoX3NldGAuCisgIHVzaW5n
IEJhc2U6OmVuZDsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpjYXBhY2l0eSgpCisgIC8vCisgIC8v
IFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50IHNsb3RzIChhc3NpZ25lZCwgZGVsZXRlZCwg
YW5kIGVtcHR5KQorICAvLyBhdmFpbGFibGUgd2l0aGluIHRoZSBgZmxhdF9oYXNoX3NldGAuCisg
IC8vCisgIC8vIE5PVEU6IHRoaXMgbWVtYmVyIGZ1bmN0aW9uIGlzIHBhcnRpY3VsYXIgdG8gYGFi
c2w6OmZsYXRfaGFzaF9zZXRgIGFuZCBpcworICAvLyBub3QgcHJvdmlkZWQgaW4gdGhlIGBzdGQ6
OnVub3JkZXJlZF9tYXBgIEFQSS4KKyAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CisKKyAgLy8gZmxh
dF9oYXNoX3NldDo6ZW1wdHkoKQorICAvLworICAvLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRo
ZSBgZmxhdF9oYXNoX3NldGAgaXMgZW1wdHkuCisgIHVzaW5nIEJhc2U6OmVtcHR5OworCisgIC8v
IGZsYXRfaGFzaF9zZXQ6Om1heF9zaXplKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgbGFyZ2Vz
dCB0aGVvcmV0aWNhbCBwb3NzaWJsZSBudW1iZXIgb2YgZWxlbWVudHMgd2l0aGluIGEKKyAgLy8g
YGZsYXRfaGFzaF9zZXRgIHVuZGVyIGN1cnJlbnQgbWVtb3J5IGNvbnN0cmFpbnRzLiBUaGlzIHZh
bHVlIGNhbiBiZSB0aG91Z2h0CisgIC8vIG9mIHRoZSBsYXJnZXN0IHZhbHVlIG9mIGBzdGQ6OmRp
c3RhbmNlKGJlZ2luKCksIGVuZCgpKWAgZm9yIGEKKyAgLy8gYGZsYXRfaGFzaF9zZXQ8VD5gLgor
ICB1c2luZyBCYXNlOjptYXhfc2l6ZTsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpzaXplKCkKKyAg
Ly8KKyAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGN1cnJlbnRseSB3aXRoaW4g
dGhlIGBmbGF0X2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6c2l6ZTsKKworICAvLyBmbGF0X2hh
c2hfc2V0OjpjbGVhcigpCisgIC8vCisgIC8vIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhl
IGBmbGF0X2hhc2hfc2V0YC4gSW52YWxpZGF0ZXMgYW55IHJlZmVyZW5jZXMsCisgIC8vIHBvaW50
ZXJzLCBvciBpdGVyYXRvcnMgcmVmZXJyaW5nIHRvIGNvbnRhaW5lZCBlbGVtZW50cy4KKyAgLy8K
KyAgLy8gTk9URTogdGhpcyBvcGVyYXRpb24gbWF5IHNocmluayB0aGUgdW5kZXJseWluZyBidWZm
ZXIuIFRvIGF2b2lkIHNocmlua2luZworICAvLyB0aGUgdW5kZXJseWluZyBidWZmZXIgY2FsbCBg
ZXJhc2UoYmVnaW4oKSwgZW5kKCkpYC4KKyAgdXNpbmcgQmFzZTo6Y2xlYXI7CisKKyAgLy8gZmxh
dF9oYXNoX3NldDo6ZXJhc2UoKQorICAvLworICAvLyBFcmFzZXMgZWxlbWVudHMgd2l0aGluIHRo
ZSBgZmxhdF9oYXNoX3NldGAuIEVyYXNpbmcgZG9lcyBub3QgdHJpZ2dlciBhCisgIC8vIHJlaGFz
aC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIHZvaWQgZXJhc2UoY29u
c3RfaXRlcmF0b3IgcG9zKToKKyAgLy8KKyAgLy8gICBFcmFzZXMgdGhlIGVsZW1lbnQgYXQgYHBv
c2l0aW9uYCBvZiB0aGUgYGZsYXRfaGFzaF9zZXRgLCByZXR1cm5pbmcKKyAgLy8gICBgdm9pZGAu
CisgIC8vCisgIC8vICAgTk9URTogdGhpcyByZXR1cm4gYmVoYXZpb3IgaXMgZGlmZmVyZW50IHRo
YW4gdGhhdCBvZiBTVEwgY29udGFpbmVycyBpbgorICAvLyAgIGdlbmVyYWwgYW5kIGBzdGQ6OnVu
b3JkZXJlZF9tYXBgIGluIHBhcnRpY3VsYXIuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGVyYXNlKGNv
bnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KToKKyAgLy8KKyAgLy8gICBF
cmFzZXMgdGhlIGVsZW1lbnRzIGluIHRoZSBvcGVuIGludGVydmFsIFtgZmlyc3RgLCBgbGFzdGAp
LCByZXR1cm5pbmcgYW4KKyAgLy8gICBpdGVyYXRvciBwb2ludGluZyB0byBgbGFzdGAuCisgIC8v
CisgIC8vIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYga2V5KToKKyAgLy8KKyAgLy8g
ICBFcmFzZXMgdGhlIGVsZW1lbnQgd2l0aCB0aGUgbWF0Y2hpbmcga2V5LCBpZiBpdCBleGlzdHMu
CisgIHVzaW5nIEJhc2U6OmVyYXNlOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6Omluc2VydCgpCisg
IC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGludG8g
dGhlIGBmbGF0X2hhc2hfc2V0YCwKKyAgLy8gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIHBvaW50aW5n
IHRvIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50LCBwcm92aWRlZCB0aGF0CisgIC8vIGFuIGVs
ZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuIElmIHJlaGFz
aGluZyBvY2N1cnMKKyAgLy8gZHVlIHRvIHRoZSBpbnNlcnRpb24sIGFsbCBpdGVyYXRvcnMgYXJl
IGludmFsaWRhdGVkLiBPdmVybG9hZHMgYXJlIGxpc3RlZAorICAvLyBiZWxvdy4KKyAgLy8KKyAg
Ly8gc3RkOjpwYWlyPGl0ZXJhdG9yLGJvb2w+IGluc2VydChjb25zdCBUJiB2YWx1ZSk6CisgIC8v
CisgIC8vICAgSW5zZXJ0cyBhIHZhbHVlIGludG8gdGhlIGBmbGF0X2hhc2hfc2V0YC4gUmV0dXJu
cyBhIHBhaXIgY29uc2lzdGluZyBvZiBhbgorICAvLyAgIGl0ZXJhdG9yIHRvIHRoZSBpbnNlcnRl
ZCBlbGVtZW50IChvciB0byB0aGUgZWxlbWVudCB0aGF0IHByZXZlbnRlZCB0aGUKKyAgLy8gICBp
bnNlcnRpb24pIGFuZCBhIGJvb2wgZGVub3Rpbmcgd2hldGhlciB0aGUgaW5zZXJ0aW9uIHRvb2sg
cGxhY2UuCisgIC8vCisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQoVCYmIHZh
bHVlKToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgbW92ZWFibGUgdmFsdWUgaW50byB0aGUgYGZs
YXRfaGFzaF9zZXRgLiBSZXR1cm5zIGEgcGFpcgorICAvLyAgIGNvbnNpc3Rpbmcgb2YgYW4gaXRl
cmF0b3IgdG8gdGhlIGluc2VydGVkIGVsZW1lbnQgKG9yIHRvIHRoZSBlbGVtZW50IHRoYXQKKyAg
Ly8gICBwcmV2ZW50ZWQgdGhlIGluc2VydGlvbikgYW5kIGEgYm9vbCBkZW5vdGluZyB3aGV0aGVy
IHRoZSBpbnNlcnRpb24gdG9vaworICAvLyAgIHBsYWNlLgorICAvLworICAvLyBpdGVyYXRvciBp
bnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgY29uc3QgVCYgdmFsdWUpOgorICAvLyBpdGVyYXRv
ciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgVCYmIHZhbHVlKToKKyAgLy8KKyAgLy8gICBJ
bnNlcnRzIGEgdmFsdWUsIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmlu
ZGluZyBzdWdnZXN0aW9uCisgIC8vICAgZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24g
c2VhcmNoLiBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZQorICAvLyAgIGluc2VydGVkIGVsZW1l
bnQsIG9yIHRvIHRoZSBleGlzdGluZyBlbGVtZW50IHRoYXQgcHJldmVudGVkIHRoZQorICAvLyAg
IGluc2VydGlvbi4KKyAgLy8KKyAgLy8gdm9pZCBpbnNlcnQoSW5wdXRJdGVyYXRvciBmaXJzdCwg
SW5wdXRJdGVyYXRvciBsYXN0KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGEgcmFuZ2Ugb2YgdmFs
dWVzIFtgZmlyc3RgLCBgbGFzdGApLgorICAvLworICAvLyAgIE5PVEU6IEFsdGhvdWdoIHRoZSBT
VEwgZG9lcyBub3Qgc3BlY2lmeSB3aGljaCBlbGVtZW50IG1heSBiZSBpbnNlcnRlZCBpZgorICAv
LyAgIG11bHRpcGxlIGtleXMgY29tcGFyZSBlcXVpdmFsZW50bHksIGZvciBgZmxhdF9oYXNoX3Nl
dGAgd2UgZ3VhcmFudGVlIHRoZQorICAvLyAgIGZpcnN0IG1hdGNoIGlzIGluc2VydGVkLgorICAv
LworICAvLyB2b2lkIGluc2VydChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaWxpc3QpOgorICAv
LworICAvLyAgIEluc2VydHMgdGhlIGVsZW1lbnRzIHdpdGhpbiB0aGUgaW5pdGlhbGl6ZXIgbGlz
dCBgaWxpc3RgLgorICAvLworICAvLyAgIE5PVEU6IEFsdGhvdWdoIHRoZSBTVEwgZG9lcyBub3Qg
c3BlY2lmeSB3aGljaCBlbGVtZW50IG1heSBiZSBpbnNlcnRlZCBpZgorICAvLyAgIG11bHRpcGxl
IGtleXMgY29tcGFyZSBlcXVpdmFsZW50bHkgd2l0aGluIHRoZSBpbml0aWFsaXplciBsaXN0LCBm
b3IKKyAgLy8gICBgZmxhdF9oYXNoX3NldGAgd2UgZ3VhcmFudGVlIHRoZSBmaXJzdCBtYXRjaCBp
cyBpbnNlcnRlZC4KKyAgdXNpbmcgQmFzZTo6aW5zZXJ0OworCisgIC8vIGZsYXRfaGFzaF9zZXQ6
OmVtcGxhY2UoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmll
ZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4tcGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgZmxh
dF9oYXNoX3NldGAsIHByb3ZpZGVkIHRoYXQgbm8gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkK
KyAgLy8gYWxyZWFkeSBleGlzdHMuCisgIC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25z
dHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQorICAv
LyBrZXkgaW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0
ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJlZmVyIGB0
cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90CisgIC8vIGNvcHlhYmxlIG9yIG1v
dmVhYmxlLgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0
aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFj
ZTsKKworICAvLyBmbGF0X2hhc2hfc2V0OjplbXBsYWNlX2hpbnQoKQorICAvLworICAvLyBJbnNl
cnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQg
aW4tcGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgZmxhdF9oYXNoX3NldGAsIHVzaW5nIHRoZSBwb3Np
dGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZworICAvLyBzdWdnZXN0aW9uIGZvciB3aGVy
ZSB0byBiZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaCwgYW5kIG9ubHkgaW5zZXJ0cworICAvLyBw
cm92aWRlZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGFscmVhZHkgZXhpc3Rz
LgorICAvLworICAvLyBUaGUgZWxlbWVudCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVy
ZSBhbHJlYWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0aGUKKyAgLy8ga2V5IGluIHRoZSBjb250YWlu
ZXIsIGluIHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQor
ICAvLyBkZXN0cm95ZWQgaW1tZWRpYXRlbHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNz
IHlvdXIga2V5IGlzIG5vdAorICAvLyBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8KKyAgLy8g
SWYgcmVoYXNoaW5nIG9jY3VycyBkdWUgdG8gdGhlIGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBh
cmUgaW52YWxpZGF0ZWQuCisgIHVzaW5nIEJhc2U6OmVtcGxhY2VfaGludDsKKworICAvLyBmbGF0
X2hhc2hfc2V0OjpleHRyYWN0KCkKKyAgLy8KKyAgLy8gRXh0cmFjdHMgdGhlIGluZGljYXRlZCBl
bGVtZW50LCBlcmFzaW5nIGl0IGluIHRoZSBwcm9jZXNzLCBhbmQgcmV0dXJucyBpdAorICAvLyBh
cyBhIEMrKzE3LWNvbXBhdGlibGUgbm9kZSBoYW5kbGUuIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJl
bG93LgorICAvLworICAvLyBub2RlX3R5cGUgZXh0cmFjdChjb25zdF9pdGVyYXRvciBwb3NpdGlv
bik6CisgIC8vCisgIC8vICAgRXh0cmFjdHMgdGhlIGVsZW1lbnQgYXQgdGhlIGluZGljYXRlZCBw
b3NpdGlvbiBhbmQgcmV0dXJucyBhIG5vZGUgaGFuZGxlCisgIC8vICAgb3duaW5nIHRoYXQgZXh0
cmFjdGVkIGRhdGEuCisgIC8vCisgIC8vIG5vZGVfdHlwZSBleHRyYWN0KGNvbnN0IGtleV90eXBl
JiB4KToKKyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0aGUgZWxlbWVudCB3aXRoIHRoZSBrZXkgbWF0
Y2hpbmcgdGhlIHBhc3NlZCBrZXkgdmFsdWUgYW5kCisgIC8vICAgcmV0dXJucyBhIG5vZGUgaGFu
ZGxlIG93bmluZyB0aGF0IGV4dHJhY3RlZCBkYXRhLiBJZiB0aGUgYGZsYXRfaGFzaF9zZXRgCisg
IC8vICAgZG9lcyBub3QgY29udGFpbiBhbiBlbGVtZW50IHdpdGggYSBtYXRjaGluZyBrZXksIHRo
aXMgZnVuY3Rpb24gcmV0dXJucyBhbgorICAvLyAgIGVtcHR5IG5vZGUgaGFuZGxlLgorICB1c2lu
ZyBCYXNlOjpleHRyYWN0OworCisgIC8vIGZsYXRfaGFzaF9zZXQ6Om1lcmdlKCkKKyAgLy8KKyAg
Ly8gRXh0cmFjdHMgZWxlbWVudHMgZnJvbSBhIGdpdmVuIGBzb3VyY2VgIGZsYXQgaGFzaCBtYXAg
aW50byB0aGlzCisgIC8vIGBmbGF0X2hhc2hfc2V0YC4gSWYgdGhlIGRlc3RpbmF0aW9uIGBmbGF0
X2hhc2hfc2V0YCBhbHJlYWR5IGNvbnRhaW5zIGFuCisgIC8vIGVsZW1lbnQgd2l0aCBhbiBlcXVp
dmFsZW50IGtleSwgdGhhdCBlbGVtZW50IGlzIG5vdCBleHRyYWN0ZWQuCisgIHVzaW5nIEJhc2U6
Om1lcmdlOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OnN3YXAoZmxhdF9oYXNoX3NldCYgb3RoZXIp
CisgIC8vCisgIC8vIEV4Y2hhbmdlcyB0aGUgY29udGVudHMgb2YgdGhpcyBgZmxhdF9oYXNoX3Nl
dGAgd2l0aCB0aG9zZSBvZiB0aGUgYG90aGVyYAorICAvLyBmbGF0IGhhc2ggbWFwLCBhdm9pZGlu
ZyBpbnZvY2F0aW9uIG9mIGFueSBtb3ZlLCBjb3B5LCBvciBzd2FwIG9wZXJhdGlvbnMgb24KKyAg
Ly8gaW5kaXZpZHVhbCBlbGVtZW50cy4KKyAgLy8KKyAgLy8gQWxsIGl0ZXJhdG9ycyBhbmQgcmVm
ZXJlbmNlcyBvbiB0aGUgYGZsYXRfaGFzaF9zZXRgIHJlbWFpbiB2YWxpZCwgZXhjZXB0aW5nCisg
IC8vIGZvciB0aGUgcGFzdC10aGUtZW5kIGl0ZXJhdG9yLCB3aGljaCBpcyBpbnZhbGlkYXRlZC4K
KyAgLy8KKyAgLy8gYHN3YXAoKWAgcmVxdWlyZXMgdGhhdCB0aGUgZmxhdCBoYXNoIHNldCdzIGhh
c2hpbmcgYW5kIGtleSBlcXVpdmFsZW5jZQorICAvLyBmdW5jdGlvbnMgYmUgU3dhcHBhYmxlLCBh
bmQgYXJlIGV4Y2hhZ2VkIHVzaW5nIHVucXVhbGlmaWVkIGNhbGxzIHRvCisgIC8vIG5vbi1tZW1i
ZXIgYHN3YXAoKWAuIElmIHRoZSBtYXAncyBhbGxvY2F0b3IgaGFzCisgIC8vIGBzdGQ6OmFsbG9j
YXRvcl90cmFpdHM8YWxsb2NhdG9yX3R5cGU+Ojpwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA6
OnZhbHVlYAorICAvLyBzZXQgdG8gYHRydWVgLCB0aGUgYWxsb2NhdG9ycyBhcmUgYWxzbyBleGNo
YW5nZWQgdXNpbmcgYW4gdW5xdWFsaWZpZWQgY2FsbAorICAvLyB0byBub24tbWVtYmVyIGBzd2Fw
KClgOyBvdGhlcndpc2UsIHRoZSBhbGxvY2F0b3JzIGFyZSBub3Qgc3dhcHBlZC4KKyAgdXNpbmcg
QmFzZTo6c3dhcDsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpyZWhhc2goY291bnQpCisgIC8vCisg
IC8vIFJlaGFzaGVzIHRoZSBgZmxhdF9oYXNoX3NldGAsIHNldHRpbmcgdGhlIG51bWJlciBvZiBz
bG90cyB0byBiZSBhdCBsZWFzdAorICAvLyB0aGUgcGFzc2VkIHZhbHVlLiBJZiB0aGUgbmV3IG51
bWJlciBvZiBzbG90cyBpbmNyZWFzZXMgdGhlIGxvYWQgZmFjdG9yIG1vcmUKKyAgLy8gdGhhbiB0
aGUgY3VycmVudCBtYXhpbXVtIGxvYWQgZmFjdG9yCisgIC8vIChgY291bnRgIDwgYHNpemUoKWAg
LyBgbWF4X2xvYWRfZmFjdG9yKClgKSwgdGhlbiB0aGUgbmV3IG51bWJlciBvZiBzbG90cworICAv
LyB3aWxsIGJlIGF0IGxlYXN0IGBzaXplKClgIC8gYG1heF9sb2FkX2ZhY3RvcigpYC4KKyAgLy8K
KyAgLy8gVG8gZm9yY2UgYSByZWhhc2gsIHBhc3MgcmVoYXNoKDApLgorICAvLworICAvLyBOT1RF
OiB1bmxpa2UgYmVoYXZpb3IgaW4gYHN0ZDo6dW5vcmRlcmVkX3NldGAsIHJlZmVyZW5jZXMgYXJl
IGFsc28KKyAgLy8gaW52YWxpZGF0ZWQgdXBvbiBhIGByZWhhc2goKWAuCisgIHVzaW5nIEJhc2U6
OnJlaGFzaDsKKworICAvLyBmbGF0X2hhc2hfc2V0OjpyZXNlcnZlKGNvdW50KQorICAvLworICAv
LyBTZXRzIHRoZSBudW1iZXIgb2Ygc2xvdHMgaW4gdGhlIGBmbGF0X2hhc2hfc2V0YCB0byB0aGUg
bnVtYmVyIG5lZWRlZCB0bworICAvLyBhY2NvbW1vZGF0ZSBhdCBsZWFzdCBgY291bnRgIHRvdGFs
IGVsZW1lbnRzIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBjdXJyZW50CisgIC8vIG1heGltdW0gbG9h
ZCBmYWN0b3IsIGFuZCBtYXkgcmVoYXNoIHRoZSBjb250YWluZXIgaWYgbmVlZGVkLgorICB1c2lu
ZyBCYXNlOjpyZXNlcnZlOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmNvbnRhaW5zKCkKKyAgLy8K
KyAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQgY29tcGFyaW5nIGVxdWFsIHRvIHRo
ZSBnaXZlbiBga2V5YCBleGlzdHMKKyAgLy8gd2l0aGluIHRoZSBgZmxhdF9oYXNoX3NldGAsIHJl
dHVybmluZyBgdHJ1ZWAgaWYgc28gb3IgYGZhbHNlYCBvdGhlcndpc2UuCisgIHVzaW5nIEJhc2U6
OmNvbnRhaW5zOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6OmNvdW50KGNvbnN0IEtleSYga2V5KSBj
b25zdAorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29tcGFyaW5n
IGVxdWFsIHRvIHRoZSBnaXZlbiBga2V5YCB3aXRoaW4KKyAgLy8gdGhlIGBmbGF0X2hhc2hfc2V0
YC4gbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZWl0aGVyIGAxYCBvciBgMGAK
KyAgLy8gc2luY2UgZHVwbGljYXRlIGVsZW1lbnRzIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gYSBg
ZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmNvdW50OworCisgIC8vIGZsYXRfaGFzaF9z
ZXQ6OmVxdWFsX3JhbmdlKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNsb3NlZCByYW5nZSBbZmly
c3QsIGxhc3RdLCBkZWZpbmVkIGJ5IGEgYHN0ZDo6cGFpcmAgb2YgdHdvCisgIC8vIGl0ZXJhdG9y
cywgY29udGFpbmluZyBhbGwgZWxlbWVudHMgd2l0aCB0aGUgcGFzc2VkIGtleSBpbiB0aGUKKyAg
Ly8gYGZsYXRfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjplcXVhbF9yYW5nZTsKKworICAvLyBm
bGF0X2hhc2hfc2V0OjpmaW5kKCkKKyAgLy8KKyAgLy8gRmluZHMgYW4gZWxlbWVudCB3aXRoIHRo
ZSBwYXNzZWQgYGtleWAgd2l0aGluIHRoZSBgZmxhdF9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6
OmZpbmQ7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6YnVja2V0X2NvdW50KCkKKyAgLy8KKyAgLy8g
UmV0dXJucyB0aGUgbnVtYmVyIG9mICJidWNrZXRzIiB3aXRoaW4gdGhlIGBmbGF0X2hhc2hfc2V0
YC4gTm90ZSB0aGF0CisgIC8vIGJlY2F1c2UgYSBmbGF0IGhhc2ggbWFwIGNvbnRhaW5zIGFsbCBl
bGVtZW50cyB3aXRoaW4gaXRzIGludGVybmFsIHN0b3JhZ2UsCisgIC8vIHRoaXMgdmFsdWUgc2lt
cGx5IGVxdWFscyB0aGUgY3VycmVudCBjYXBhY2l0eSBvZiB0aGUgYGZsYXRfaGFzaF9zZXRgLgor
ICB1c2luZyBCYXNlOjpidWNrZXRfY291bnQ7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6bG9hZF9m
YWN0b3IoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IGxvYWQgZmFjdG9yIG9mIHRo
ZSBgZmxhdF9oYXNoX3NldGAgKHRoZSBhdmVyYWdlIG51bWJlcgorICAvLyBvZiBzbG90cyBvY2N1
cGllZCB3aXRoIGEgdmFsdWUgd2l0aGluIHRoZSBoYXNoIG1hcCkuCisgIHVzaW5nIEJhc2U6Omxv
YWRfZmFjdG9yOworCisgIC8vIGZsYXRfaGFzaF9zZXQ6Om1heF9sb2FkX2ZhY3RvcigpCisgIC8v
CisgIC8vIE1hbmFnZXMgdGhlIG1heGltdW0gbG9hZCBmYWN0b3Igb2YgdGhlIGBmbGF0X2hhc2hf
c2V0YC4gT3ZlcmxvYWRzIGFyZQorICAvLyBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIGZsb2F0
IGZsYXRfaGFzaF9zZXQ6Om1heF9sb2FkX2ZhY3RvcigpCisgIC8vCisgIC8vICAgUmV0dXJucyB0
aGUgY3VycmVudCBtYXhpbXVtIGxvYWQgZmFjdG9yIG9mIHRoZSBgZmxhdF9oYXNoX3NldGAuCisg
IC8vCisgIC8vIHZvaWQgZmxhdF9oYXNoX3NldDo6bWF4X2xvYWRfZmFjdG9yKGZsb2F0IG1sKQor
ICAvLworICAvLyAgIFNldHMgdGhlIG1heGltdW0gbG9hZCBmYWN0b3Igb2YgdGhlIGBmbGF0X2hh
c2hfc2V0YCB0byB0aGUgcGFzc2VkIHZhbHVlLgorICAvLworICAvLyAgIE5PVEU6IFRoaXMgb3Zl
cmxvYWQgaXMgcHJvdmlkZWQgb25seSBmb3IgQVBJIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgU1RM
OworICAvLyAgIGBmbGF0X2hhc2hfc2V0YCB3aWxsIGlnbm9yZSBhbnkgc2V0IGxvYWQgZmFjdG9y
IGFuZCBtYW5hZ2UgaXRzIHJlaGFzaGluZworICAvLyAgIGludGVybmFsbHkgYXMgYW4gaW1wbGVt
ZW50YXRpb24gZGV0YWlsLgorICB1c2luZyBCYXNlOjptYXhfbG9hZF9mYWN0b3I7CisKKyAgLy8g
ZmxhdF9oYXNoX3NldDo6Z2V0X2FsbG9jYXRvcigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGFs
bG9jYXRvciBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBgZmxhdF9oYXNoX3NldGAuCisg
IHVzaW5nIEJhc2U6OmdldF9hbGxvY2F0b3I7CisKKyAgLy8gZmxhdF9oYXNoX3NldDo6aGFzaF9m
dW5jdGlvbigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGhhc2hpbmcgZnVuY3Rpb24gdXNlZCB0
byBoYXNoIHRoZSBrZXlzIHdpdGhpbiB0aGlzCisgIC8vIGBmbGF0X2hhc2hfc2V0YC4KKyAgdXNp
bmcgQmFzZTo6aGFzaF9mdW5jdGlvbjsKKworICAvLyBmbGF0X2hhc2hfc2V0OjprZXlfZXEoKQor
ICAvLworICAvLyBSZXR1cm5zIHRoZSBmdW5jdGlvbiB1c2VkIGZvciBjb21wYXJpbmcga2V5cyBl
cXVhbGl0eS4KKyAgdXNpbmcgQmFzZTo6a2V5X2VxOworfTsKKworbmFtZXNwYWNlIGNvbnRhaW5l
cl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IEZsYXRIYXNoU2V0UG9s
aWN5IHsKKyAgdXNpbmcgc2xvdF90eXBlID0gVDsKKyAgdXNpbmcga2V5X3R5cGUgPSBUOworICB1
c2luZyBpbml0X3R5cGUgPSBUOworICB1c2luZyBjb25zdGFudF9pdGVyYXRvcnMgPSBzdGQ6OnRy
dWVfdHlwZTsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yLCBjbGFzcy4uLiBBcmdzPgor
ICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBzbG90
LCBBcmdzJiYuLi4gYXJncykgeworICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9y
Pjo6Y29uc3RydWN0KCphbGxvYywgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisK
KyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgZGVzdHJveShBbGxv
Y2F0b3IqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QpIHsKKyAgICBhYnNsOjphbGxvY2F0b3JfdHJh
aXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koKmFsbG9jLCBzbG90KTsKKyAgfQorCisgIHRlbXBsYXRl
IDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0YXRpYyB2b2lkIHRyYW5zZmVyKEFsbG9jYXRvciogYWxs
b2MsIHNsb3RfdHlwZSogbmV3X3Nsb3QsCisgICAgICAgICAgICAgICAgICAgICAgIHNsb3RfdHlw
ZSogb2xkX3Nsb3QpIHsKKyAgICBjb25zdHJ1Y3QoYWxsb2MsIG5ld19zbG90LCBzdGQ6Om1vdmUo
Km9sZF9zbG90KSk7CisgICAgZGVzdHJveShhbGxvYywgb2xkX3Nsb3QpOworICB9CisKKyAgc3Rh
dGljIFQmIGVsZW1lbnQoc2xvdF90eXBlKiBzbG90KSB7IHJldHVybiAqc2xvdDsgfQorCisgIHRl
bXBsYXRlIDxjbGFzcyBGLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgZGVjbHR5cGUoYWJzbDo6
Y29udGFpbmVyX2ludGVybmFsOjpEZWNvbXBvc2VWYWx1ZSgKKyAgICAgIHN0ZDo6ZGVjbHZhbDxG
PigpLCBzdGQ6OmRlY2x2YWw8QXJncz4oKS4uLikpCisgIGFwcGx5KEYmJiBmLCBBcmdzJiYuLi4g
YXJncykgeworICAgIHJldHVybiBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkRlY29tcG9zZVZh
bHVlKAorICAgICAgICBzdGQ6OmZvcndhcmQ8Rj4oZiksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CisgIH0KKworICBzdGF0aWMgc2l6ZV90IHNwYWNlX3VzZWQoY29uc3QgVCopIHsgcmV0
dXJuIDA7IH0KK307Cit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBu
YW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9GTEFUX0hBU0hfU0VUX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvZmxhdF9oYXNoX3NldF90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ZsYXRfaGFzaF9zZXRfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTJmZDUzMmNi
ZWVjNzUxNThiZTYyMDVlNTYxMTgxY2IxNzRkNGJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ZsYXRfaGFzaF9zZXRfdGVzdC5jYwpAQCAtMCwwICsxLDEyNiBAQAorLy8gQ29w
eXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFp
bmVyL2ZsYXRfaGFzaF9zZXQuaCIKKworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFi
c2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIKKyNpbmNsdWRl
ICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3Qu
aCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1
cF90ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3Nl
dF9tb2RpZmllcnNfdGVzdC5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2lu
Y2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6YWJz
bDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2ludGVybmFsOjpFbnVtOwordXNpbmcgOjphYnNs
Ojpjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfaW50ZXJuYWw6OkVudW1DbGFzczsKK3VzaW5nIDo6
dGVzdGluZzo6UG9pbnRlZTsKK3VzaW5nIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmU7
Cit1c2luZyA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXk7CisKK3RlbXBsYXRl
IDxjbGFzcyBUPgordXNpbmcgU2V0ID0KKyAgICBhYnNsOjpmbGF0X2hhc2hfc2V0PFQsIFN0YXRl
ZnVsVGVzdGluZ0hhc2gsIFN0YXRlZnVsVGVzdGluZ0VxdWFsLCBBbGxvYzxUPj47CisKK3VzaW5n
IFNldFR5cGVzID0KKyAgICA6OnRlc3Rpbmc6OlR5cGVzPFNldDxpbnQ+LCBTZXQ8c3RkOjpzdHJp
bmc+LCBTZXQ8RW51bT4sIFNldDxFbnVtQ2xhc3M+PjsKKworSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoRmxhdEhhc2hTZXQsIENvbnN0cnVjdG9yVGVzdCwgU2V0VHlwZXMpOworSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoRmxhdEhhc2hTZXQsIExvb2t1cFRlc3QsIFNldFR5cGVz
KTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKEZsYXRIYXNoU2V0LCBNb2RpZmllcnNU
ZXN0LCBTZXRUeXBlcyk7CisKK1RFU1QoRmxhdEhhc2hTZXQsIEVtcGxhY2VTdHJpbmcpIHsKKyAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYgPSB7ImEiLCAiYiJ9OworICBhYnNsOjpmbGF0X2hh
c2hfc2V0PGFic2w6OnN0cmluZ192aWV3PiBocyh2LmJlZ2luKCksIHYuZW5kKCkpOworICBFWFBF
Q1RfVEhBVChocywgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2KSk7Cit9CisKK1RFU1QoRmxh
dEhhc2hTZXQsIEJpdGZpZWxkQXJndW1lbnQpIHsKKyAgdW5pb24geworICAgIGludCBuIDogMTsK
KyAgfTsKKyAgbiA9IDA7CisgIGFic2w6OmZsYXRfaGFzaF9zZXQ8aW50PiBzID0ge259OworICBz
Lmluc2VydChuKTsKKyAgcy5pbnNlcnQocy5lbmQoKSwgbik7CisgIHMuaW5zZXJ0KHtufSk7Cisg
IHMuZXJhc2Uobik7CisgIHMuY291bnQobik7CisgIHMucHJlZmV0Y2gobik7CisgIHMuZmluZChu
KTsKKyAgcy5jb250YWlucyhuKTsKKyAgcy5lcXVhbF9yYW5nZShuKTsKK30KKworVEVTVChGbGF0
SGFzaFNldCwgTWVyZ2VFeHRyYWN0SW5zZXJ0KSB7CisgIHN0cnVjdCBIYXNoIHsKKyAgICBzaXpl
X3Qgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8aW50PiYgcCkgY29uc3QgeyByZXR1
cm4gKnA7IH0KKyAgfTsKKyAgc3RydWN0IEVxIHsKKyAgICBib29sIG9wZXJhdG9yKCkoY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPGludD4mIGEsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxpbnQ+JiBiKSBjb25zdCB7CisgICAgICByZXR1cm4gKmEgPT0gKmI7CisgICAg
fQorICB9OworICBhYnNsOjpmbGF0X2hhc2hfc2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBIYXNo
LCBFcT4gc2V0MSwgc2V0MjsKKyAgc2V0MS5pbnNlcnQoYWJzbDo6bWFrZV91bmlxdWU8aW50Pig3
KSk7CisgIHNldDEuaW5zZXJ0KGFic2w6Om1ha2VfdW5pcXVlPGludD4oMTcpKTsKKworICBzZXQy
Lmluc2VydChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDcpKTsKKyAgc2V0Mi5pbnNlcnQoYWJzbDo6
bWFrZV91bmlxdWU8aW50PigxOSkpOworCisgIEVYUEVDVF9USEFUKHNldDEsIFVub3JkZXJlZEVs
ZW1lbnRzQXJlKFBvaW50ZWUoNyksIFBvaW50ZWUoMTcpKSk7CisgIEVYUEVDVF9USEFUKHNldDIs
IFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoNyksIFBvaW50ZWUoMTkpKSk7CisKKyAgc2V0
MS5tZXJnZShzZXQyKTsKKworICBFWFBFQ1RfVEhBVChzZXQxLCBVbm9yZGVyZWRFbGVtZW50c0Fy
ZShQb2ludGVlKDcpLCBQb2ludGVlKDE3KSwgUG9pbnRlZSgxOSkpKTsKKyAgRVhQRUNUX1RIQVQo
c2V0MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSkpOworCisgIGF1dG8gbm9kZSA9
IHNldDEuZXh0cmFjdChhYnNsOjptYWtlX3VuaXF1ZTxpbnQ+KDcpKTsKKyAgRVhQRUNUX1RSVUUo
bm9kZSk7CisgIEVYUEVDVF9USEFUKG5vZGUudmFsdWUoKSwgUG9pbnRlZSg3KSk7CisgIEVYUEVD
VF9USEFUKHNldDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoMTcpLCBQb2ludGVlKDE5
KSkpOworCisgIGF1dG8gaW5zZXJ0X3Jlc3VsdCA9IHNldDIuaW5zZXJ0KHN0ZDo6bW92ZShub2Rl
KSk7CisgIEVYUEVDVF9GQUxTRShub2RlKTsKKyAgRVhQRUNUX0ZBTFNFKGluc2VydF9yZXN1bHQu
aW5zZXJ0ZWQpOworICBFWFBFQ1RfVFJVRShpbnNlcnRfcmVzdWx0Lm5vZGUpOworICBFWFBFQ1Rf
VEhBVChpbnNlcnRfcmVzdWx0Lm5vZGUudmFsdWUoKSwgUG9pbnRlZSg3KSk7CisgIEVYUEVDVF9F
USgqKmluc2VydF9yZXN1bHQucG9zaXRpb24sIDcpOworICBFWFBFQ1RfTkUoaW5zZXJ0X3Jlc3Vs
dC5wb3NpdGlvbi0+Z2V0KCksIGluc2VydF9yZXN1bHQubm9kZS52YWx1ZSgpLmdldCgpKTsKKyAg
RVhQRUNUX1RIQVQoc2V0MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSkpOworCisg
IG5vZGUgPSBzZXQxLmV4dHJhY3QoYWJzbDo6bWFrZV91bmlxdWU8aW50PigxNykpOworICBFWFBF
Q1RfVFJVRShub2RlKTsKKyAgRVhQRUNUX1RIQVQobm9kZS52YWx1ZSgpLCBQb2ludGVlKDE3KSk7
CisgIEVYUEVDVF9USEFUKHNldDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBvaW50ZWUoMTkpKSk7
CisKKyAgbm9kZS52YWx1ZSgpID0gYWJzbDo6bWFrZV91bmlxdWU8aW50PigyMyk7CisKKyAgaW5z
ZXJ0X3Jlc3VsdCA9IHNldDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7CisgIEVYUEVDVF9GQUxT
RShub2RlKTsKKyAgRVhQRUNUX1RSVUUoaW5zZXJ0X3Jlc3VsdC5pbnNlcnRlZCk7CisgIEVYUEVD
VF9GQUxTRShpbnNlcnRfcmVzdWx0Lm5vZGUpOworICBFWFBFQ1RfRVEoKippbnNlcnRfcmVzdWx0
LnBvc2l0aW9uLCAyMyk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJl
KFBvaW50ZWUoNyksIFBvaW50ZWUoMjMpKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8g
bmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2lubGluZWRfdmVjdG9yLmgKaW5kZXggY2EzNmZkMzY5OWI5MDVjMmVkZTliYjEwNzI1YjRkOWI2
Njk4Njg3Ny4uMTI3NTZiYjgyMGNmNmFlOTU2Y2E0NjRhOGFjN2NkNzMyY2JjOWUxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2lubGluZWRfdmVjdG9yLmgKQEAgLTYyMCw2ICs2MjAsMTIgQEAgY2xhc3MgSW5saW5lZFZl
Y3RvciB7CiAgIC8vIFJldHVybnMgdGhlIGFsbG9jYXRvciBvZiB0aGlzIGlubGluZWQgdmVjdG9y
LgogICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gYWxsb2Nh
dG9yKCk7IH0KIAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hW
YWx1ZShIIGgsIGNvbnN0IElubGluZWRWZWN0b3ImIHYpIHsKKyAgICByZXR1cm4gSDo6Y29tYmlu
ZShIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3ZlKGgpLCB2LmRhdGEoKSwgdi5zaXplKCkp
LAorICAgICAgICAgICAgICAgICAgICAgIHYuc2l6ZSgpKTsKKyAgfQorCiAgcHJpdmF0ZToKICAg
c3RhdGljX2Fzc2VydChOID4gMCwgImlubGluZWQgdmVjdG9yIHdpdGggbm9ucG9zaXRpdmUgc2l6
ZSIpOwogCkBAIC02NDgsOCArNjU0LDcgQEAgY2xhc3MgSW5saW5lZFZlY3RvciB7CiAgIC8vIG91
ciBpbnN0YW5jZSBvZiBpdCBmb3IgZnJlZS4KICAgY2xhc3MgQWxsb2NhdG9yQW5kVGFnIDogcHJp
dmF0ZSBhbGxvY2F0b3JfdHlwZSB7CiAgICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQWxsb2NhdG9y
QW5kVGFnKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhLCBUYWcgdCA9IFRhZygpKQotICAgICAgICA6
IGFsbG9jYXRvcl90eXBlKGEpLCB0YWdfKHQpIHt9CisgICAgZXhwbGljaXQgQWxsb2NhdG9yQW5k
VGFnKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhKSA6IGFsbG9jYXRvcl90eXBlKGEpIHt9CiAgICAg
VGFnJiB0YWcoKSB7IHJldHVybiB0YWdfOyB9CiAgICAgY29uc3QgVGFnJiB0YWcoKSBjb25zdCB7
IHJldHVybiB0YWdfOyB9CiAgICAgYWxsb2NhdG9yX3R5cGUmIGFsbG9jYXRvcigpIHsgcmV0dXJu
ICp0aGlzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3JfYmVu
Y2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lubGluZWRfdmVjdG9yX2JlbmNobWFyay5jYwpp
bmRleCAyNGYyMTc0OTI4YTM4YjAxZmVmOTlhZTI3Y2I4OWU0MTk4MjY1YWIzLi5hM2FkMGY4YWU0
ZjFhMTYzYzdmMjMyOTMyZTQ2YTM4ZWU0ZWE2NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWlu
ZXIvaW5saW5lZF92ZWN0b3JfYmVuY2htYXJrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxp
bmVkX3ZlY3Rvcl9iZW5jaG1hcmsuY2MKQEAgLTY2LDcgKzY2LDcgQEAgQkVOQ0hNQVJLKEJNX1N0
ZFZlY3RvckZpbGwpLT5SYW5nZSgwLCAxMDI0KTsKIC8vIFRoZSBwdXJwb3NlIG9mIHRoZSBuZXh0
IHR3byBiZW5jaG1hcmtzIGlzIHRvIHZlcmlmeSB0aGF0CiAvLyBhYnNsOjpJbmxpbmVkVmVjdG9y
IGlzIGVmZmljaWVudCB3aGVuIG1vdmluZyBpcyBtb3JlIGVmZmljZW50IHRoYW4KIC8vIGNvcHlp
bmcuIFRvIGRvIHNvLCB3ZSB1c2Ugc3RyaW5ncyB0aGF0IGFyZSBsYXJnZXIgdGhhbiB0aGUgc2hv
cnQKLS8vIHN0ZDo6c3RyaW5nIG9wdGltaXphdGlvbi4KKy8vIHN0cmluZyBvcHRpbWl6YXRpb24u
CiBib29sIFN0cmluZ1JlcHJlc2VudGVkSW5saW5lKHN0ZDo6c3RyaW5nIHMpIHsKICAgY29uc3Qg
Y2hhciogY2hhcnMgPSBzLmRhdGEoKTsKICAgc3RkOjpzdHJpbmcgczEgPSBzdGQ6Om1vdmUocyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3JfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl90ZXN0LmNjCmluZGV4IDE5NmExYmVkOTc2YzRi
YmQwNjBhMGM4MWEzMDgxOWFjZWQ0NjY5YjIuLjA4ZGNkM2VmNjZmYjZhMzMwMmY4NjJjNTJhZDkx
ZjUzNjI2MGQ0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl90
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvcl90ZXN0LmNjCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgi
CiAjaW5jbHVkZSAiYWJzbC9iYXNlL21hY3Jvcy5oIgogI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5oIgorI2luY2x1ZGUgImFic2wvaGFzaC9o
YXNoX3Rlc3RpbmcuaCIKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRl
ICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgogCkBAIC0xNzg4LDQgKzE3ODksNSBAQCBURVNUKEFs
bG9jYXRvclN1cHBvcnRUZXN0LCBTaXplQWxsb2NDb25zdHJ1Y3RvcikgewogICAgIEVYUEVDVF9U
SEFUKHYsIEFsbE9mKFNpemVJcyhsZW4pLCBFYWNoKDApKSk7CiAgIH0KIH0KKwogfSAgLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2Nv
bnRhaW5lcl9tZW1vcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVt
b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTZjNWQyZGY2NzMxNGU4MjlmYzlmNTkxYjM2ZTY1YWI5ZGYzZTBj
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJf
bWVtb3J5LmgKQEAgLTAsMCArMSw0MDUgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwg
QXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfQ09OVEFJTkVSX01F
TU9SWV9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9DT05UQUlORVJfTUVNT1JZ
X0hfCisKKyNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgorI2luY2x1ZGUgPHNhbml0aXplci9hc2Fu
X2ludGVyZmFjZS5oPgorI2VuZGlmCisKKyNpZmRlZiBNRU1PUllfU0FOSVRJWkVSCisjaW5jbHVk
ZSA8c2FuaXRpemVyL21zYW5faW50ZXJmYWNlLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGNhc3Nl
cnQ+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dHVw
bGU+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1
ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5
LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewor
CisvLyBBbGxvY2F0ZXMgYXQgbGVhc3QgbiBieXRlcyBhbGlnbmVkIHRvIHRoZSBzcGVjaWZpZWQg
YWxpZ25tZW50LgorLy8gQWxpZ25tZW50IG11c3QgYmUgYSBwb3dlciBvZiAyLiBJdCBtdXN0IGJl
IHBvc2l0aXZlLgorLy8KKy8vIE5vdGUgdGhhdCBtYW55IGFsbG9jYXRvcnMgZG9uJ3QgaG9ub3Ig
YWxpZ25tZW50IHJlcXVpcmVtZW50cyBhYm92ZSBjZXJ0YWluCisvLyB0aHJlc2hvbGQgKHVzdWFs
bHkgZWl0aGVyIGFsaWdub2Yoc3RkOjptYXhfYWxpZ25fdCkgb3IgYWxpZ25vZih2b2lkKikpLgor
Ly8gQWxsb2NhdGUoKSBkb2Vzbid0IGFwcGx5IGFsaWdubWVudCBjb3JyZWN0aW9ucy4gSWYgdGhl
IHVuZGVybHlpbmcgYWxsb2NhdG9yCisvLyByZXR1cm5zIGluc3VmZmljaWVudGx5IGFsaWdubWVu
dCBwb2ludGVyLCB0aGF0J3Mgd2hhdCB5b3UgYXJlIGdvaW5nIHRvIGdldC4KK3RlbXBsYXRlIDxz
aXplX3QgQWxpZ25tZW50LCBjbGFzcyBBbGxvYz4KK3ZvaWQqIEFsbG9jYXRlKEFsbG9jKiBhbGxv
Yywgc2l6ZV90IG4pIHsKKyAgc3RhdGljX2Fzc2VydChBbGlnbm1lbnQgPiAwLCAiIik7CisgIGFz
c2VydChuICYmICJuIG11c3QgYmUgcG9zaXRpdmUiKTsKKyAgc3RydWN0IGFsaWduYXMoQWxpZ25t
ZW50KSBNIHt9OworICB1c2luZyBBID0gdHlwZW5hbWUgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxB
bGxvYz46OnRlbXBsYXRlIHJlYmluZF9hbGxvYzxNPjsKKyAgdXNpbmcgQVQgPSB0eXBlbmFtZSBh
YnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6dGVtcGxhdGUgcmViaW5kX3RyYWl0czxNPjsK
KyAgQSBtZW1fYWxsb2MoKmFsbG9jKTsKKyAgdm9pZCogcCA9IEFUOjphbGxvY2F0ZShtZW1fYWxs
b2MsIChuICsgc2l6ZW9mKE0pIC0gMSkgLyBzaXplb2YoTSkpOworICBhc3NlcnQocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHApICUgQWxpZ25tZW50ID09IDAgJiYKKyAgICAgICAgICJhbGxv
Y2F0b3IgZG9lcyBub3QgcmVzcGVjdCBhbGlnbm1lbnQiKTsKKyAgcmV0dXJuIHA7Cit9CisKKy8v
IFRoZSBwb2ludGVyIG11c3QgaGF2ZSBiZWVuIHByZXZpb3VzbHkgb2J0YWluZWQgYnkgY2FsbGlu
ZworLy8gQWxsb2NhdGU8QWxpZ25tZW50PihhbGxvYywgbikuCit0ZW1wbGF0ZSA8c2l6ZV90IEFs
aWdubWVudCwgY2xhc3MgQWxsb2M+Cit2b2lkIERlYWxsb2NhdGUoQWxsb2MqIGFsbG9jLCB2b2lk
KiBwLCBzaXplX3QgbikgeworICBzdGF0aWNfYXNzZXJ0KEFsaWdubWVudCA+IDAsICIiKTsKKyAg
YXNzZXJ0KG4gJiYgIm4gbXVzdCBiZSBwb3NpdGl2ZSIpOworICBzdHJ1Y3QgYWxpZ25hcyhBbGln
bm1lbnQpIE0ge307CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBhYnNsOjphbGxvY2F0b3JfdHJhaXRz
PEFsbG9jPjo6dGVtcGxhdGUgcmViaW5kX2FsbG9jPE0+OworICB1c2luZyBBVCA9IHR5cGVuYW1l
IGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+Ojp0ZW1wbGF0ZSByZWJpbmRfdHJhaXRzPE0+
OworICBBIG1lbV9hbGxvYygqYWxsb2MpOworICBBVDo6ZGVhbGxvY2F0ZShtZW1fYWxsb2MsIHN0
YXRpY19jYXN0PE0qPihwKSwKKyAgICAgICAgICAgICAgICAgKG4gKyBzaXplb2YoTSkgLSAxKSAv
IHNpemVvZihNKSk7Cit9CisKK25hbWVzcGFjZSBtZW1vcnlfaW50ZXJuYWwgeworCisvLyBDb25z
dHJ1Y3RzIFQgaW50byB1bmluaXRpYWxpemVkIHN0b3JhZ2UgcG9pbnRlZCBieSBgcHRyYCB1c2lu
ZyB0aGUgYXJncworLy8gc3BlY2lmaWVkIGluIHRoZSB0dXBsZS4KK3RlbXBsYXRlIDxjbGFzcyBB
bGxvYywgY2xhc3MgVCwgY2xhc3MgVHVwbGUsIHNpemVfdC4uLiBJPgordm9pZCBDb25zdHJ1Y3RG
cm9tVHVwbGVJbXBsKEFsbG9jKiBhbGxvYywgVCogcHRyLCBUdXBsZSYmIHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWJzbDo6aW5kZXhfc2VxdWVuY2U8SS4uLj4pIHsKKyAgYWJzbDo6
YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OmNvbnN0cnVjdCgKKyAgICAgICphbGxvYywgcHRyLCBz
dGQ6OmdldDxJPihzdGQ6OmZvcndhcmQ8VHVwbGU+KHQpKS4uLik7Cit9CisKK3RlbXBsYXRlIDxj
bGFzcyBULCBjbGFzcyBGPgorc3RydWN0IFdpdGhDb25zdHJ1Y3RlZEltcGxGIHsKKyAgdGVtcGxh
dGUgPGNsYXNzLi4uIEFyZ3M+CisgIGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxGPigpKHN0ZDo6ZGVj
bHZhbDxUPigpKSkgb3BlcmF0b3IoKSgKKyAgICAgIEFyZ3MmJi4uLiBhcmdzKSBjb25zdCB7Cisg
ICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihmKShUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpOworICB9CisgIEYmJiBmOworfTsKKwordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFR1cGxl
LCBzaXplX3QuLi4gSXMsIGNsYXNzIEY+CitkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Rj4oKShzdGQ6
OmRlY2x2YWw8VD4oKSkpIFdpdGhDb25zdHJ1Y3RlZEltcGwoCisgICAgVHVwbGUmJiB0LCBhYnNs
OjppbmRleF9zZXF1ZW5jZTxJcy4uLj4sIEYmJiBmKSB7CisgIHJldHVybiBXaXRoQ29uc3RydWN0
ZWRJbXBsRjxULCBGPntzdGQ6OmZvcndhcmQ8Rj4oZil9KAorICAgICAgc3RkOjpnZXQ8SXM+KHN0
ZDo6Zm9yd2FyZDxUdXBsZT4odCkpLi4uKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQsIHNpemVf
dC4uLiBJcz4KK2F1dG8gVHVwbGVSZWZJbXBsKFQmJiB0LCBhYnNsOjppbmRleF9zZXF1ZW5jZTxJ
cy4uLj4pCisgICAgLT4gZGVjbHR5cGUoc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHN0ZDo6Z2V0PElz
PihzdGQ6OmZvcndhcmQ8VD4odCkpLi4uKSkgeworICByZXR1cm4gc3RkOjpmb3J3YXJkX2FzX3R1
cGxlKHN0ZDo6Z2V0PElzPihzdGQ6OmZvcndhcmQ8VD4odCkpLi4uKTsKK30KKworLy8gUmV0dXJu
cyBhIHR1cGxlIG9mIHJlZmVyZW5jZXMgdG8gdGhlIGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB0dXBs
ZS4gVCBtdXN0IGJlIGEKKy8vIHR1cGxlLgordGVtcGxhdGUgPGNsYXNzIFQ+CithdXRvIFR1cGxl
UmVmKFQmJiB0KSAtPiBkZWNsdHlwZSgKKyAgICBUdXBsZVJlZkltcGwoc3RkOjpmb3J3YXJkPFQ+
KHQpLAorICAgICAgICAgICAgICAgICBhYnNsOjptYWtlX2luZGV4X3NlcXVlbmNlPAorICAgICAg
ICAgICAgICAgICAgICAgc3RkOjp0dXBsZV9zaXplPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5
cGU+Ojp2YWx1ZT4oKSkpIHsKKyAgcmV0dXJuIFR1cGxlUmVmSW1wbCgKKyAgICAgIHN0ZDo6Zm9y
d2FyZDxUPih0KSwKKyAgICAgIGFic2w6Om1ha2VfaW5kZXhfc2VxdWVuY2U8CisgICAgICAgICAg
c3RkOjp0dXBsZV9zaXplPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+Ojp2YWx1ZT4oKSk7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBLLCBjbGFzcyBWPgorZGVjbHR5cGUoc3Rk
OjpkZWNsdmFsPEY+KCkoc3RkOjpkZWNsdmFsPGNvbnN0IEsmPigpLCBzdGQ6OnBpZWNld2lzZV9j
b25zdHJ1Y3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8c3RkOjp0
dXBsZTxLPj4oKSwgc3RkOjpkZWNsdmFsPFY+KCkpKQorRGVjb21wb3NlUGFpckltcGwoRiYmIGYs
IHN0ZDo6cGFpcjxzdGQ6OnR1cGxlPEs+LCBWPiBwKSB7CisgIGNvbnN0IGF1dG8mIGtleSA9IHN0
ZDo6Z2V0PDA+KHAuZmlyc3QpOworICByZXR1cm4gc3RkOjpmb3J3YXJkPEY+KGYpKGtleSwgc3Rk
OjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6Om1vdmUocC5maXJzdCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptb3ZlKHAuc2Vjb25kKSk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBtZW1vcnlfaW50ZXJuYWwKKworLy8gQ29uc3RydWN0cyBUIGludG8gdW5pbml0aWFsaXplZCBz
dG9yYWdlIHBvaW50ZWQgYnkgYHB0cmAgdXNpbmcgdGhlIGFyZ3MKKy8vIHNwZWNpZmllZCBpbiB0
aGUgdHVwbGUuCit0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2MsIGNsYXNzIFQsIGNsYXNzIFR1cGxlPgor
dm9pZCBDb25zdHJ1Y3RGcm9tVHVwbGUoQWxsb2MqIGFsbG9jLCBUKiBwdHIsIFR1cGxlJiYgdCkg
eworICBtZW1vcnlfaW50ZXJuYWw6OkNvbnN0cnVjdEZyb21UdXBsZUltcGwoCisgICAgICBhbGxv
YywgcHRyLCBzdGQ6OmZvcndhcmQ8VHVwbGU+KHQpLAorICAgICAgYWJzbDo6bWFrZV9pbmRleF9z
ZXF1ZW5jZTwKKyAgICAgICAgICBzdGQ6OnR1cGxlX3NpemU8dHlwZW5hbWUgc3RkOjpkZWNheTxU
dXBsZT46OnR5cGU+Ojp2YWx1ZT4oKSk7Cit9CisKKy8vIENvbnN0cnVjdHMgVCB1c2luZyB0aGUg
YXJncyBzcGVjaWZpZWQgaW4gdGhlIHR1cGxlIGFuZCBjYWxscyBGIHdpdGggdGhlCisvLyBjb25z
dHJ1Y3RlZCB2YWx1ZS4KK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBUdXBsZSwgY2xhc3MgRj4K
K2RlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxGPigpKHN0ZDo6ZGVjbHZhbDxUPigpKSkgV2l0aENvbnN0
cnVjdGVkKAorICAgIFR1cGxlJiYgdCwgRiYmIGYpIHsKKyAgcmV0dXJuIG1lbW9yeV9pbnRlcm5h
bDo6V2l0aENvbnN0cnVjdGVkSW1wbDxUPigKKyAgICAgIHN0ZDo6Zm9yd2FyZDxUdXBsZT4odCks
CisgICAgICBhYnNsOjptYWtlX2luZGV4X3NlcXVlbmNlPAorICAgICAgICAgIHN0ZDo6dHVwbGVf
c2l6ZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFR1cGxlPjo6dHlwZT46OnZhbHVlPigpLAorICAgICAg
c3RkOjpmb3J3YXJkPEY+KGYpKTsKK30KKworLy8gR2l2ZW4gYXJndW1lbnRzIG9mIGFuIHN0ZDo6
cGFpcidzIGNvbnNydWN0b3IsIFBhaXJBcmdzKCkgcmV0dXJucyBhIHBhaXIgb2YKKy8vIHR1cGxl
cyB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHBhc3NlZCBhcmd1bWVudHMuIFRoZSB0dXBsZXMgY29u
dGFpbgorLy8gY29uc3RydWN0b3IgYXJndW1lbnRzIGZvciB0aGUgZmlyc3QgYW5kIHRoZSBzZWNv
bmQgZWxlbWVudHMgb2YgdGhlIHBhaXIuCisvLworLy8gVGhlIGZvbGxvd2luZyB0d28gc25pcHBl
dHMgYXJlIGVxdWl2YWxlbnQuCisvLworLy8gMS4gc3RkOjpwYWlyPEYsIFM+IHAoYXJncy4uLik7
CisvLworLy8gMi4gYXV0byBhID0gUGFpckFyZ3MoYXJncy4uLik7CisvLyAgICBzdGQ6OnBhaXI8
RiwgUz4gcChzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsCisvLyAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1vdmUocC5maXJzdCksIHN0ZDo6bW92ZShwLnNlY29uZCkpOworaW5saW5lIHN0ZDo6
cGFpcjxzdGQ6OnR1cGxlPD4sIHN0ZDo6dHVwbGU8Pj4gUGFpckFyZ3MoKSB7IHJldHVybiB7fTsg
fQordGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIFM+CitzdGQ6OnBhaXI8c3RkOjp0dXBsZTxGJiY+
LCBzdGQ6OnR1cGxlPFMmJj4+IFBhaXJBcmdzKEYmJiBmLCBTJiYgcykgeworICByZXR1cm4ge3N0
ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2Fy
ZDxGPihmKSksCisgICAgICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2FyZDxT
PihzKSl9OworfQordGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIFM+CitzdGQ6OnBhaXI8c3RkOjp0
dXBsZTxjb25zdCBGJj4sIHN0ZDo6dHVwbGU8Y29uc3QgUyY+PiBQYWlyQXJncygKKyAgICBjb25z
dCBzdGQ6OnBhaXI8RiwgUz4mIHApIHsKKyAgcmV0dXJuIFBhaXJBcmdzKHAuZmlyc3QsIHAuc2Vj
b25kKTsKK30KK3RlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBTPgorc3RkOjpwYWlyPHN0ZDo6dHVw
bGU8RiYmPiwgc3RkOjp0dXBsZTxTJiY+PiBQYWlyQXJncyhzdGQ6OnBhaXI8RiwgUz4mJiBwKSB7
CisgIHJldHVybiBQYWlyQXJncyhzdGQ6OmZvcndhcmQ8Rj4ocC5maXJzdCksIHN0ZDo6Zm9yd2Fy
ZDxTPihwLnNlY29uZCkpOworfQordGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIFM+CithdXRvIFBh
aXJBcmdzKHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdF90LCBGJiYgZiwgUyYmIHMpCisgICAgLT4g
ZGVjbHR5cGUoc3RkOjptYWtlX3BhaXIobWVtb3J5X2ludGVybmFsOjpUdXBsZVJlZihzdGQ6OmZv
cndhcmQ8Rj4oZikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9pbnRl
cm5hbDo6VHVwbGVSZWYoc3RkOjpmb3J3YXJkPFM+KHMpKSkpIHsKKyAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKG1lbW9yeV9pbnRlcm5hbDo6VHVwbGVSZWYoc3RkOjpmb3J3YXJkPEY+KGYpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9pbnRlcm5hbDo6VHVwbGVSZWYoc3RkOjpmb3J3
YXJkPFM+KHMpKSk7Cit9CisKKy8vIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcg
YXBwbHkoKSBpbiBtYXAgcG9saWNpZXMuCit0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MuLi4gQXJn
cz4KK2F1dG8gRGVjb21wb3NlUGFpcihGJiYgZiwgQXJncyYmLi4uIGFyZ3MpCisgICAgLT4gZGVj
bHR5cGUobWVtb3J5X2ludGVybmFsOjpEZWNvbXBvc2VQYWlySW1wbCgKKyAgICAgICAgc3RkOjpm
b3J3YXJkPEY+KGYpLCBQYWlyQXJncyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSkgewor
ICByZXR1cm4gbWVtb3J5X2ludGVybmFsOjpEZWNvbXBvc2VQYWlySW1wbCgKKyAgICAgIHN0ZDo6
Zm9yd2FyZDxGPihmKSwgUGFpckFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Cit9
CisKKy8vIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcgYXBwbHkoKSBpbiBzZXQg
cG9saWNpZXMuCit0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgQXJnPgorZGVjbHR5cGUoc3RkOjpk
ZWNsdmFsPEY+KCkoc3RkOjpkZWNsdmFsPGNvbnN0IEFyZyY+KCksIHN0ZDo6ZGVjbHZhbDxBcmc+
KCkpKQorRGVjb21wb3NlVmFsdWUoRiYmIGYsIEFyZyYmIGFyZykgeworICBjb25zdCBhdXRvJiBr
ZXkgPSBhcmc7CisgIHJldHVybiBzdGQ6OmZvcndhcmQ8Rj4oZikoa2V5LCBzdGQ6OmZvcndhcmQ8
QXJnPihhcmcpKTsKK30KKworLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgYXNhbiBhbmQgbXNhbi4K
K2lubGluZSB2b2lkIFNhbml0aXplclBvaXNvbk1lbW9yeVJlZ2lvbihjb25zdCB2b2lkKiBtLCBz
aXplX3QgcykgeworI2lmZGVmIEFERFJFU1NfU0FOSVRJWkVSCisgIEFTQU5fUE9JU09OX01FTU9S
WV9SRUdJT04obSwgcyk7CisjZW5kaWYKKyNpZmRlZiBNRU1PUllfU0FOSVRJWkVSCisgIF9fbXNh
bl9wb2lzb24obSwgcyk7CisjZW5kaWYKKyAgKHZvaWQpbTsKKyAgKHZvaWQpczsKK30KKworaW5s
aW5lIHZvaWQgU2FuaXRpemVyVW5wb2lzb25NZW1vcnlSZWdpb24oY29uc3Qgdm9pZCogbSwgc2l6
ZV90IHMpIHsKKyNpZmRlZiBBRERSRVNTX1NBTklUSVpFUgorICBBU0FOX1VOUE9JU09OX01FTU9S
WV9SRUdJT04obSwgcyk7CisjZW5kaWYKKyNpZmRlZiBNRU1PUllfU0FOSVRJWkVSCisgIF9fbXNh
bl91bnBvaXNvbihtLCBzKTsKKyNlbmRpZgorICAodm9pZCltOworICAodm9pZClzOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIFNhbml0aXplclBvaXNvbk9iamVjdChj
b25zdCBUKiBvYmplY3QpIHsKKyAgU2FuaXRpemVyUG9pc29uTWVtb3J5UmVnaW9uKG9iamVjdCwg
c2l6ZW9mKFQpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBTYW5p
dGl6ZXJVbnBvaXNvbk9iamVjdChjb25zdCBUKiBvYmplY3QpIHsKKyAgU2FuaXRpemVyVW5wb2lz
b25NZW1vcnlSZWdpb24ob2JqZWN0LCBzaXplb2YoVCkpOworfQorCituYW1lc3BhY2UgbWVtb3J5
X2ludGVybmFsIHsKKworLy8gSWYgUGFpciBpcyBhIHN0YW5kYXJkLWxheW91dCB0eXBlLCBPZmZz
ZXRPZjxQYWlyPjo6a0ZpcnN0IGFuZAorLy8gT2Zmc2V0T2Y8UGFpcj46OmtTZWNvbmQgYXJlIGVx
dWl2YWxlbnQgdG8gb2Zmc2V0b2YoUGFpciwgZmlyc3QpIGFuZAorLy8gb2Zmc2V0b2YoUGFpciwg
c2Vjb25kKSByZXNwZWN0aXZlbHkuIE90aGVyd2lzZSB0aGV5IGFyZSAtMS4KKy8vCisvLyBUaGUg
cHVycG9zZSBvZiBPZmZzZXRPZiBpcyB0byBhdm9pZCBjYWxsaW5nIG9mZnNldG9mKCkgb24gbm9u
LXN0YW5kYXJkLWxheW91dAorLy8gdHlwZSwgd2hpY2ggaXMgbm9uLXBvcnRhYmxlLgordGVtcGxh
dGUgPGNsYXNzIFBhaXIsIGNsYXNzID0gc3RkOjp0cnVlX3R5cGU+CitzdHJ1Y3QgT2Zmc2V0T2Yg
eworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrRmlyc3QgPSAtMTsKKyAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3Qga1NlY29uZCA9IC0xOworfTsKKwordGVtcGxhdGUgPGNsYXNzIFBhaXI+Citz
dHJ1Y3QgT2Zmc2V0T2Y8UGFpciwgdHlwZW5hbWUgc3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8UGFp
cj46OnR5cGU+IHsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga0ZpcnN0ID0gb2Zmc2V0b2Yo
UGFpciwgZmlyc3QpOworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU2Vjb25kID0gb2Zmc2V0
b2YoUGFpciwgc2Vjb25kKTsKK307CisKK3RlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBWPgorc3Ry
dWN0IElzTGF5b3V0Q29tcGF0aWJsZSB7CisgcHJpdmF0ZToKKyAgc3RydWN0IFBhaXIgeworICAg
IEsgZmlyc3Q7CisgICAgViBzZWNvbmQ7CisgIH07CisKKyAgLy8gSXMgUCBsYXlvdXQtY29tcGF0
aWJsZSB3aXRoIFBhaXI/CisgIHRlbXBsYXRlIDxjbGFzcyBQPgorICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgTGF5b3V0Q29tcGF0aWJsZSgpIHsKKyAgICByZXR1cm4gc3RkOjppc19zdGFuZGFyZF9s
YXlvdXQ8UD4oKSAmJiBzaXplb2YoUCkgPT0gc2l6ZW9mKFBhaXIpICYmCisgICAgICAgICAgIGFs
aWdub2YoUCkgPT0gYWxpZ25vZihQYWlyKSAmJgorICAgICAgICAgICBtZW1vcnlfaW50ZXJuYWw6
Ok9mZnNldE9mPFA+OjprRmlyc3QgPT0KKyAgICAgICAgICAgICAgIG1lbW9yeV9pbnRlcm5hbDo6
T2Zmc2V0T2Y8UGFpcj46OmtGaXJzdCAmJgorICAgICAgICAgICBtZW1vcnlfaW50ZXJuYWw6Ok9m
ZnNldE9mPFA+OjprU2Vjb25kID09CisgICAgICAgICAgICAgICBtZW1vcnlfaW50ZXJuYWw6Ok9m
ZnNldE9mPFBhaXI+OjprU2Vjb25kOworICB9CisKKyBwdWJsaWM6CisgIC8vIFdoZXRoZXIgcGFp
cjxjb25zdCBLLCBWPiBhbmQgcGFpcjxLLCBWPiBhcmUgbGF5b3V0LWNvbXBhdGlibGUuIElmIHRo
ZXkgYXJlLAorICAvLyB0aGVuIGl0IGlzIHNhZmUgdG8gc3RvcmUgdGhlbSBpbiBhIHVuaW9uIGFu
ZCByZWFkIGZyb20gZWl0aGVyLgorICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBzdGQ6
OmlzX3N0YW5kYXJkX2xheW91dDxLPigpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6aXNfc3RhbmRhcmRfbGF5b3V0PFBhaXI+KCkgJiYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVtb3J5X2ludGVybmFsOjpPZmZzZXRPZjxQYWlyPjo6a0ZpcnN0ID09
IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0Q29tcGF0aWJsZTxz
dGQ6OnBhaXI8SywgVj4+KCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5
b3V0Q29tcGF0aWJsZTxzdGQ6OnBhaXI8Y29uc3QgSywgVj4+KCk7Cit9OworCit9ICAvLyBuYW1l
c3BhY2UgbWVtb3J5X2ludGVybmFsCisKKy8vIElmIGtNdXRhYmxlS2V5cyBpcyBmYWxzZSwgb25s
eSB0aGUgdmFsdWUgbWVtYmVyIGlzIGFjY2Vzc2VkLgorLy8KKy8vIElmIGtNdXRhYmxlS2V5cyBp
cyB0cnVlLCBrZXkgaXMgYWNjZXNzZWQgdGhyb3VnaCBhbGwgc2xvdHMgd2hpbGUgdmFsdWUgYW5k
CisvLyBtdXRhYmxlX3ZhbHVlIGFyZSBhY2Nlc3NlZCBvbmx5IHZpYSBJTklUSUFMSVpFRCBzbG90
cy4gU2xvdHMgYXJlIGNyZWF0ZWQgYW5kCisvLyBkZXN0cm95ZWQgdmlhIG11dGFibGVfdmFsdWUg
c28gdGhhdCB0aGUga2V5IGNhbiBiZSBtb3ZlZCBsYXRlci4KK3RlbXBsYXRlIDxjbGFzcyBLLCBj
bGFzcyBWPgordW5pb24gc2xvdF90eXBlIHsKKyBwcml2YXRlOgorICBzdGF0aWMgdm9pZCBlbXBs
YWNlKHNsb3RfdHlwZSogc2xvdCkgeworICAgIC8vIFRoZSBjb25zdHJ1Y3Rpb24gb2YgdW5pb24g
ZG9lc24ndCBkbyBhbnl0aGluZyBhdCBydW50aW1lIGJ1dCBpdCBhbGxvd3MgdXMKKyAgICAvLyB0
byBhY2Nlc3MgaXRzIG1lbWJlcnMgd2l0aG91dCB2aW9sYXRpbmcgYWxpYXNpbmcgcnVsZXMuCisg
ICAgbmV3IChzbG90KSBzbG90X3R5cGU7CisgIH0KKyAgLy8gSWYgcGFpcjxjb25zdCBLLCBWPiBh
bmQgcGFpcjxLLCBWPiBhcmUgbGF5b3V0LWNvbXBhdGlibGUsIHdlIGNhbiBhY2NlcHQgb25lCisg
IC8vIG9yIHRoZSBvdGhlciB2aWEgc2xvdF90eXBlLiBXZSBhcmUgYWxzbyBmcmVlIHRvIGFjY2Vz
cyB0aGUga2V5IHZpYQorICAvLyBzbG90X3R5cGU6OmtleSBpbiB0aGlzIGNhc2UuCisgIHVzaW5n
IGtNdXRhYmxlS2V5cyA9CisgICAgICBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9pbnRlcm5hbDo6SXNMYXlvdXRDb21wYXRp
YmxlPEssIFY+Ojp2YWx1ZT47CisKKyBwdWJsaWM6CisgIHNsb3RfdHlwZSgpIHt9CisgIH5zbG90
X3R5cGUoKSA9IGRlbGV0ZTsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHN0ZDo6cGFpcjxjb25zdCBL
LCBWPjsKKyAgdXNpbmcgbXV0YWJsZV92YWx1ZV90eXBlID0gc3RkOjpwYWlyPEssIFY+OworCisg
IHZhbHVlX3R5cGUgdmFsdWU7CisgIG11dGFibGVfdmFsdWVfdHlwZSBtdXRhYmxlX3ZhbHVlOwor
ICBLIGtleTsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yLCBjbGFzcy4uLiBBcmdzPgor
ICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBzbG90
LCBBcmdzJiYuLi4gYXJncykgeworICAgIGVtcGxhY2Uoc2xvdCk7CisgICAgaWYgKGtNdXRhYmxl
S2V5czo6dmFsdWUpIHsKKyAgICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6
Y29uc3RydWN0KCphbGxvYywgJnNsb3QtPm11dGFibGVfdmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pOworICAgIH0gZWxzZSB7CisgICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9j
YXRvcj46OmNvbnN0cnVjdCgqYWxsb2MsICZzbG90LT52YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CisgICAgfQorICB9CisKKyAgLy8gQ29uc3RydWN0IHRoaXMgc2xvdCBieSBtb3Zpbmcg
ZnJvbSBhbm90aGVyIHNsb3QuCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdChBbGxvY2F0b3IqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QsIHNsb3Rf
dHlwZSogb3RoZXIpIHsKKyAgICBlbXBsYWNlKHNsb3QpOworICAgIGlmIChrTXV0YWJsZUtleXM6
OnZhbHVlKSB7CisgICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0
cnVjdCgKKyAgICAgICAgICAqYWxsb2MsICZzbG90LT5tdXRhYmxlX3ZhbHVlLCBzdGQ6Om1vdmUo
b3RoZXItPm11dGFibGVfdmFsdWUpKTsKKyAgICB9IGVsc2UgeworICAgICAgYWJzbDo6YWxsb2Nh
dG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoKmFsbG9jLCAmc2xvdC0+dmFsdWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1v
dmUob3RoZXItPnZhbHVlKSk7CisgICAgfQorICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9j
YXRvcj4KKyAgc3RhdGljIHZvaWQgZGVzdHJveShBbGxvY2F0b3IqIGFsbG9jLCBzbG90X3R5cGUq
IHNsb3QpIHsKKyAgICBpZiAoa011dGFibGVLZXlzOjp2YWx1ZSkgeworICAgICAgYWJzbDo6YWxs
b2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0cm95KCphbGxvYywgJnNsb3QtPm11dGFibGVf
dmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9j
YXRvcj46OmRlc3Ryb3koKmFsbG9jLCAmc2xvdC0+dmFsdWUpOworICAgIH0KKyAgfQorCisgIHRl
bXBsYXRlIDxjbGFzcyBBbGxvY2F0b3I+CisgIHN0YXRpYyB2b2lkIHRyYW5zZmVyKEFsbG9jYXRv
ciogYWxsb2MsIHNsb3RfdHlwZSogbmV3X3Nsb3QsCisgICAgICAgICAgICAgICAgICAgICAgIHNs
b3RfdHlwZSogb2xkX3Nsb3QpIHsKKyAgICBlbXBsYWNlKG5ld19zbG90KTsKKyAgICBpZiAoa011
dGFibGVLZXlzOjp2YWx1ZSkgeworICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0
b3I+Ojpjb25zdHJ1Y3QoCisgICAgICAgICAgKmFsbG9jLCAmbmV3X3Nsb3QtPm11dGFibGVfdmFs
dWUsIHN0ZDo6bW92ZShvbGRfc2xvdC0+bXV0YWJsZV92YWx1ZSkpOworICAgIH0gZWxzZSB7Cisg
ICAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdCgqYWxsb2Ms
ICZuZXdfc2xvdC0+dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1vdmUob2xkX3Nsb3QtPnZhbHVlKSk7CisgICAgfQorICAgIGRl
c3Ryb3koYWxsb2MsIG9sZF9zbG90KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0
b3I+CisgIHN0YXRpYyB2b2lkIHN3YXAoQWxsb2NhdG9yKiBhbGxvYywgc2xvdF90eXBlKiBhLCBz
bG90X3R5cGUqIGIpIHsKKyAgICBpZiAoa011dGFibGVLZXlzOjp2YWx1ZSkgeworICAgICAgdXNp
bmcgc3RkOjpzd2FwOworICAgICAgc3dhcChhLT5tdXRhYmxlX3ZhbHVlLCBiLT5tdXRhYmxlX3Zh
bHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgdmFsdWVfdHlwZSB0bXAgPSBzdGQ6Om1vdmUoYS0+
dmFsdWUpOworICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+OjpkZXN0cm95
KCphbGxvYywgJmEtPnZhbHVlKTsKKyAgICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2Nh
dG9yPjo6Y29uc3RydWN0KCphbGxvYywgJmEtPnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGItPnZhbHVlKSk7CisgICAg
ICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmRlc3Ryb3koKmFsbG9jLCAmYi0+
dmFsdWUpOworICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1
Y3QoKmFsbG9jLCAmYi0+dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUodG1wKSk7CisgICAgfQorICB9CisKKyAgdGVtcGxh
dGUgPGNsYXNzIEFsbG9jYXRvcj4KKyAgc3RhdGljIHZvaWQgbW92ZShBbGxvY2F0b3IqIGFsbG9j
LCBzbG90X3R5cGUqIHNyYywgc2xvdF90eXBlKiBkZXN0KSB7CisgICAgaWYgKGtNdXRhYmxlS2V5
czo6dmFsdWUpIHsKKyAgICAgIGRlc3QtPm11dGFibGVfdmFsdWUgPSBzdGQ6Om1vdmUoc3JjLT5t
dXRhYmxlX3ZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0
czxBbGxvY2F0b3I+OjpkZXN0cm95KCphbGxvYywgJmRlc3QtPnZhbHVlKTsKKyAgICAgIGFic2w6
OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KCphbGxvYywgJmRlc3QtPnZh
bHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptb3ZlKHNyYy0+dmFsdWUpKTsKKyAgICB9CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3Mg
QWxsb2NhdG9yPgorICBzdGF0aWMgdm9pZCBtb3ZlKEFsbG9jYXRvciogYWxsb2MsIHNsb3RfdHlw
ZSogZmlyc3QsIHNsb3RfdHlwZSogbGFzdCwKKyAgICAgICAgICAgICAgICAgICBzbG90X3R5cGUq
IHJlc3VsdCkgeworICAgIGZvciAoc2xvdF90eXBlICpzcmMgPSBmaXJzdCwgKmRlc3QgPSByZXN1
bHQ7IHNyYyAhPSBsYXN0OyArK3NyYywgKytkZXN0KQorICAgICAgbW92ZShhbGxvYywgc3JjLCBk
ZXN0KTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9D
T05UQUlORVJfTUVNT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
Y29udGFpbmVyX21lbW9yeV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRh
aW5lcl9tZW1vcnlfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWM0MDU4Mjk4YzE1NzQwOWZlYzlhYzk5
MDg1MGMwYjE0OTQ5NzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL2NvbnRhaW5lcl9tZW1vcnlfdGVzdC5jYwpAQCAtMCwwICsxLDE4OCBAQAorLy8gQ29weXJp
Z2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIKKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5j
bHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3Ry
aW5nX3ZpZXcuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRl
cm5hbCB7CituYW1lc3BhY2UgeworCit1c2luZyA6OnRlc3Rpbmc6OlBhaXI7CisKK1RFU1QoTWVt
b3J5LCBBbGlnbm1lbnRMYXJnZXJUaGFuQmFzZSkgeworICBzdGQ6OmFsbG9jYXRvcjxpbnQ4X3Q+
IGFsbG9jOworICB2b2lkKiBtZW0gPSBBbGxvY2F0ZTwyPigmYWxsb2MsIDMpOworICBFWFBFQ1Rf
RVEoMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1lbSkgJSAyKTsKKyAgbWVtY3B5KG1l
bSwgImFiYyIsIDMpOworICBEZWFsbG9jYXRlPDI+KCZhbGxvYywgbWVtLCAzKTsKK30KKworVEVT
VChNZW1vcnksIEFsaWdubWVudFNtYWxsZXJUaGFuQmFzZSkgeworICBzdGQ6OmFsbG9jYXRvcjxp
bnQ2NF90PiBhbGxvYzsKKyAgdm9pZCogbWVtID0gQWxsb2NhdGU8Mj4oJmFsbG9jLCAzKTsKKyAg
RVhQRUNUX0VRKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtZW0pICUgMik7CisgIG1l
bWNweShtZW0sICJhYmMiLCAzKTsKKyAgRGVhbGxvY2F0ZTwyPigmYWxsb2MsIG1lbSwgMyk7Cit9
CisKK2NsYXNzIEZpeHR1cmUgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgdXNpbmcgQWxs
b2MgPSBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnN0cmluZz47CisKKyBwdWJsaWM6CisgIEZpeHR1cmUo
KSB7IHB0cl8gPSBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+OjphbGxvY2F0ZSgqYWxsb2Mo
KSwgMSk7IH0KKyAgfkZpeHR1cmUoKSBvdmVycmlkZSB7CisgICAgc3RkOjphbGxvY2F0b3JfdHJh
aXRzPEFsbG9jPjo6ZGVzdHJveSgqYWxsb2MoKSwgcHRyXyk7CisgICAgc3RkOjphbGxvY2F0b3Jf
dHJhaXRzPEFsbG9jPjo6ZGVhbGxvY2F0ZSgqYWxsb2MoKSwgcHRyXywgMSk7CisgIH0KKyAgc3Rk
OjpzdHJpbmcqIHB0cigpIHsgcmV0dXJuIHB0cl87IH0KKyAgQWxsb2MqIGFsbG9jKCkgeyByZXR1
cm4gJmFsbG9jXzsgfQorCisgcHJpdmF0ZToKKyAgQWxsb2MgYWxsb2NfOworICBzdGQ6OnN0cmlu
ZyogcHRyXzsKK307CisKK1RFU1RfRihGaXh0dXJlLCBDb25zdHJ1Y3ROb0FyZ3MpIHsKKyAgQ29u
c3RydWN0RnJvbVR1cGxlKGFsbG9jKCksIHB0cigpLCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoKSk7
CisgIEVYUEVDVF9FUSgqcHRyKCksICIiKTsKK30KKworVEVTVF9GKEZpeHR1cmUsIENvbnN0cnVj
dE9uZUFyZykgeworICBDb25zdHJ1Y3RGcm9tVHVwbGUoYWxsb2MoKSwgcHRyKCksIHN0ZDo6Zm9y
d2FyZF9hc190dXBsZSgiYWJjZGUiKSk7CisgIEVYUEVDVF9FUSgqcHRyKCksICJhYmNkZSIpOwor
fQorCitURVNUX0YoRml4dHVyZSwgQ29uc3RydWN0VHdvQXJnKSB7CisgIENvbnN0cnVjdEZyb21U
dXBsZShhbGxvYygpLCBwdHIoKSwgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKDUsICdhJykpOworICBF
WFBFQ1RfRVEoKnB0cigpLCAiYWFhYWEiKTsKK30KKworVEVTVChQYWlyQXJncywgTm9BcmdzKSB7
CisgIEVYUEVDVF9USEFUKFBhaXJBcmdzKCksCisgICAgICAgICAgICAgIFBhaXIoc3RkOjpmb3J3
YXJkX2FzX3R1cGxlKCksIHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgpKSk7Cit9CisKK1RFU1QoUGFp
ckFyZ3MsIFR3b0FyZ3MpIHsKKyAgRVhQRUNUX0VRKAorICAgICAgc3RkOjptYWtlX3BhaXIoc3Rk
Ojpmb3J3YXJkX2FzX3R1cGxlKDEpLCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoJ0EnKSksCisgICAg
ICBQYWlyQXJncygxLCAnQScpKTsKK30KKworVEVTVChQYWlyQXJncywgUGFpcikgeworICBFWFBF
Q1RfRVEoCisgICAgICBzdGQ6Om1ha2VfcGFpcihzdGQ6OmZvcndhcmRfYXNfdHVwbGUoMSksIHN0
ZDo6Zm9yd2FyZF9hc190dXBsZSgnQScpKSwKKyAgICAgIFBhaXJBcmdzKHN0ZDo6bWFrZV9wYWly
KDEsICdBJykpKTsKK30KKworVEVTVChQYWlyQXJncywgUGllY2V3aXNlKSB7CisgIEVYUEVDVF9F
USgKKyAgICAgIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6Zm9yd2FyZF9hc190dXBsZSgxKSwgc3RkOjpm
b3J3YXJkX2FzX3R1cGxlKCdBJykpLAorICAgICAgUGFpckFyZ3Moc3RkOjpwaWVjZXdpc2VfY29u
c3RydWN0LCBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoMSksCisgICAgICAgICAgICAgICBzdGQ6OmZv
cndhcmRfYXNfdHVwbGUoJ0EnKSkpOworfQorCitURVNUKFdpdGhDb25zdHJ1Y3RlZCwgU2ltcGxl
KSB7CisgIEVYUEVDVF9FUSgxLCBXaXRoQ29uc3RydWN0ZWQ8YWJzbDo6c3RyaW5nX3ZpZXc+KAor
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV90dXBsZShzdGQ6OnN0cmluZygiYSIpKSwKKyAg
ICAgICAgICAgICAgICAgICBbXShhYnNsOjpzdHJpbmdfdmlldyBzdHIpIHsgcmV0dXJuIHN0ci5z
aXplKCk7IH0pKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIEFyZz4KK2RlY2x0eXBl
KERlY29tcG9zZVZhbHVlKHN0ZDo6ZGVjbHZhbDxGPigpLCBzdGQ6OmRlY2x2YWw8QXJnPigpKSkK
K0RlY29tcG9zZVZhbHVlSW1wbChpbnQsIEYmJiBmLCBBcmcmJiBhcmcpIHsKKyAgcmV0dXJuIERl
Y29tcG9zZVZhbHVlKHN0ZDo6Zm9yd2FyZDxGPihmKSwgc3RkOjpmb3J3YXJkPEFyZz4oYXJnKSk7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBBcmc+Citjb25zdCBjaGFyKiBEZWNvbXBv
c2VWYWx1ZUltcGwoY2hhciwgRiYmIGYsIEFyZyYmIGFyZykgeworICByZXR1cm4gIm5vdCBkZWNv
bXBvc2FibGUiOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgQXJnPgorZGVjbHR5cGUo
RGVjb21wb3NlVmFsdWVJbXBsKDAsIHN0ZDo6ZGVjbHZhbDxGPigpLCBzdGQ6OmRlY2x2YWw8QXJn
PigpKSkKK1RyeURlY29tcG9zZVZhbHVlKEYmJiBmLCBBcmcmJiBhcmcpIHsKKyAgcmV0dXJuIERl
Y29tcG9zZVZhbHVlSW1wbCgwLCBzdGQ6OmZvcndhcmQ8Rj4oZiksIHN0ZDo6Zm9yd2FyZDxBcmc+
KGFyZykpOworfQorCitURVNUKERlY29tcG9zZVZhbHVlLCBEZWNvbXBvc2FibGUpIHsKKyAgYXV0
byBmID0gW10oY29uc3QgaW50JiB4LCBpbnQmJiB5KSB7CisgICAgRVhQRUNUX0VRKCZ4LCAmeSk7
CisgICAgRVhQRUNUX0VRKDQyLCB4KTsKKyAgICByZXR1cm4gJ0EnOworICB9OworICBFWFBFQ1Rf
RVEoJ0EnLCBUcnlEZWNvbXBvc2VWYWx1ZShmLCA0MikpOworfQorCitURVNUKERlY29tcG9zZVZh
bHVlLCBOb3REZWNvbXBvc2FibGUpIHsKKyAgYXV0byBmID0gW10odm9pZCopIHsKKyAgICBBRERf
RkFJTFVSRSgpIDw8ICJNdXN0IG5vdCBiZSBjYWxsZWQiOworICAgIHJldHVybiAnQSc7CisgIH07
CisgIEVYUEVDVF9TVFJFUSgibm90IGRlY29tcG9zYWJsZSIsIFRyeURlY29tcG9zZVZhbHVlKGYs
IDQyKSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcy4uLiBBcmdzPgorZGVjbHR5cGUo
RGVjb21wb3NlUGFpcihzdGQ6OmRlY2x2YWw8Rj4oKSwgc3RkOjpkZWNsdmFsPEFyZ3M+KCkuLi4p
KQorRGVjb21wb3NlUGFpckltcGwoaW50LCBGJiYgZiwgQXJncyYmLi4uIGFyZ3MpIHsKKyAgcmV0
dXJuIERlY29tcG9zZVBhaXIoc3RkOjpmb3J3YXJkPEY+KGYpLCBzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MuLi4gQXJncz4KK2NvbnN0
IGNoYXIqIERlY29tcG9zZVBhaXJJbXBsKGNoYXIsIEYmJiBmLCBBcmdzJiYuLi4gYXJncykgewor
ICByZXR1cm4gIm5vdCBkZWNvbXBvc2FibGUiOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xh
c3MuLi4gQXJncz4KK2RlY2x0eXBlKERlY29tcG9zZVBhaXJJbXBsKDAsIHN0ZDo6ZGVjbHZhbDxG
PigpLCBzdGQ6OmRlY2x2YWw8QXJncz4oKS4uLikpCitUcnlEZWNvbXBvc2VQYWlyKEYmJiBmLCBB
cmdzJiYuLi4gYXJncykgeworICByZXR1cm4gRGVjb21wb3NlUGFpckltcGwoMCwgc3RkOjpmb3J3
YXJkPEY+KGYpLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCitURVNUKERlY29t
cG9zZVBhaXIsIERlY29tcG9zYWJsZSkgeworICBhdXRvIGYgPSBbXShjb25zdCBpbnQmIHgsIHN0
ZDo6cGllY2V3aXNlX2NvbnN0cnVjdF90LCBzdGQ6OnR1cGxlPGludCYmPiBrLAorICAgICAgICAg
ICAgICBzdGQ6OnR1cGxlPGRvdWJsZT4mJiB2KSB7CisgICAgRVhQRUNUX0VRKCZ4LCAmc3RkOjpn
ZXQ8MD4oaykpOworICAgIEVYUEVDVF9FUSg0MiwgeCk7CisgICAgRVhQRUNUX0VRKDAuNSwgc3Rk
OjpnZXQ8MD4odikpOworICAgIHJldHVybiAnQSc7CisgIH07CisgIEVYUEVDVF9FUSgnQScsIFRy
eURlY29tcG9zZVBhaXIoZiwgNDIsIDAuNSkpOworICBFWFBFQ1RfRVEoJ0EnLCBUcnlEZWNvbXBv
c2VQYWlyKGYsIHN0ZDo6bWFrZV9wYWlyKDQyLCAwLjUpKSk7CisgIEVYUEVDVF9FUSgnQScsIFRy
eURlY29tcG9zZVBhaXIoZiwgc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV90dXBsZSg0MiksIHN0ZDo6bWFrZV90dXBs
ZSgwLjUpKSk7Cit9CisKK1RFU1QoRGVjb21wb3NlUGFpciwgTm90RGVjb21wb3NhYmxlKSB7Cisg
IGF1dG8gZiA9IFtdKC4uLikgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIk11c3Qgbm90IGJlIGNh
bGxlZCI7CisgICAgcmV0dXJuICdBJzsKKyAgfTsKKyAgRVhQRUNUX1NUUkVRKCJub3QgZGVjb21w
b3NhYmxlIiwKKyAgICAgICAgICAgICAgIFRyeURlY29tcG9zZVBhaXIoZikpOworICBFWFBFQ1Rf
U1RSRVEoIm5vdCBkZWNvbXBvc2FibGUiLAorICAgICAgICAgICAgICAgVHJ5RGVjb21wb3NlUGFp
cihmLCBzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6bWFrZV90dXBsZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfdHVwbGUoMC41KSkpOworfQorCit9
ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFz
aF9mdW5jdGlvbl9kZWZhdWx0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVu
Y3Rpb25fZGVmYXVsdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjBkNzk0ZDk2NjM4ODE4NmRkN2RmZDY5YThh
ZTlhNmFkZjcwOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMuaApAQCAtMCwwICsxLDE0MyBAQAorLy8gQ29weXJpZ2h0
IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyBEZWZpbmUgdGhlIGRlZmF1bHQgSGFz
aCBhbmQgRXEgZnVuY3Rpb25zIGZvciBTd2lzc1RhYmxlIGNvbnRhaW5lcnMuCisvLworLy8gc3Rk
OjpoYXNoPFQ+IGFuZCBzdGQ6OmVxdWFsX3RvPFQ+IGFyZSBub3QgYXBwcm9wcmlhdGUgaGFzaCBh
bmQgZXF1YWwKKy8vIGZ1bmN0aW9ucyBmb3IgU3dpc3NUYWJsZSBjb250YWluZXJzLiBUaGVyZSBh
cmUgdHdvIHJlYXNvbnMgZm9yIHRoaXMuCisvLworLy8gU3dpc3NUYWJsZSBjb250YWluZXJzIGFy
ZSBwb3dlciBvZiAyIHNpemVkIGNvbnRhaW5lcnM6CisvLworLy8gVGhpcyBtZWFucyB0aGV5IHVz
ZSB0aGUgbG93ZXIgYml0cyBvZiB0aGUgaGFzaCB2YWx1ZSB0byBmaW5kIHRoZSBzbG90IGZvcgor
Ly8gZWFjaCBlbnRyeS4gVGhlIHR5cGljYWwgaGFzaCBmdW5jdGlvbiBmb3IgaW50ZWdyYWwgdHlw
ZXMgaXMgdGhlIGlkZW50aXR5LgorLy8gVGhpcyBpcyBhIHZlcnkgd2VhayBoYXNoIGZ1bmN0aW9u
IGZvciBTd2lzc1RhYmxlIGFuZCBhbnkgcG93ZXIgb2YgMiBzaXplZAorLy8gaGFzaHRhYmxlIGlt
cGxlbWVudGF0aW9uIHdoaWNoIHdpbGwgbGVhZCB0byBleGNlc3NpdmUgY29sbGlzaW9ucy4gRm9y
CisvLyBTd2lzc1RhYmxlIHdlIHVzZSBtdXJtdXIzIHN0eWxlIG1peGluZyB0byByZWR1Y2UgY29s
bGlzaW9ucyB0byBhIG1pbmltdW0uCisvLworLy8gU3dpc3NUYWJsZSBjb250YWluZXJzIHN1cHBv
cnQgaGV0ZXJvZ2VuZW91cyBsb29rdXA6CisvLworLy8gSW4gb3JkZXIgdG8gbWFrZSBoZXRlcm9n
ZW5lb3VzIGxvb2t1cCB3b3JrLCBoYXNoIGFuZCBlcXVhbCBmdW5jdGlvbnMgbXVzdCBiZQorLy8g
cG9seW1vcnBoaWMuIEF0IHRoZSBzYW1lIHRpbWUgdGhleSBoYXZlIHRvIHNhdGlzZnkgdGhlIHNh
bWUgcmVxdWlyZW1lbnRzIHRoZQorLy8gQysrIHN0YW5kYXJkIGltcG9zZXMgb24gaGFzaCBmdW5j
dGlvbnMgYW5kIGVxdWFsaXR5IG9wZXJhdG9ycy4gVGhhdCBpczoKKy8vCisvLyAgIGlmIGhhc2hf
ZGVmYXVsdF9lcTxUPihhLCBiKSByZXR1cm5zIHRydWUgZm9yIGFueSBhIGFuZCBiIG9mIHR5cGUg
VCwgdGhlbgorLy8gICBoYXNoX2RlZmF1bHRfaGFzaDxUPihhKSBtdXN0IGVxdWFsIGhhc2hfZGVm
YXVsdF9oYXNoPFQ+KGIpCisvLworLy8gRm9yIFN3aXNzVGFibGUgY29udGFpbmVycyB0aGlzIHJl
cXVpcmVtZW50IGlzIHJlbGF4ZWQgdG8gYWxsb3cgYSBhbmQgYiBvZgorLy8gYW55IGFuZCBwb3Nz
aWJseSBkaWZmZXJlbnQgdHlwZXMuIE5vdGUgdGhhdCBsaWtlIHRoZSBzdGFuZGFyZCB0aGUgaGFz
aCBhbmQKKy8vIGVxdWFsIGZ1bmN0aW9ucyBhcmUgc3RpbGwgYm91bmQgdG8gVC4gVGhpcyBpcyBp
bXBvcnRhbnQgYmVjYXVzZSBzb21lIHR5cGUgVQorLy8gY2FuIGJlIGhhc2hlZCBieS90ZXN0ZWQg
Zm9yIGVxdWFsaXR5IGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiBULiBBIG5vdGFibGUKKy8vIGV4
YW1wbGUgaXMgYGNvbnN0IGNoYXIqYC4gYGNvbnN0IGNoYXIqYCBpcyB0cmVhdGVkIGFzIGEgYy1z
dHlsZSBzdHJpbmcgd2hlbgorLy8gdGhlIGhhc2ggZnVuY3Rpb24gaXMgaGFzaDxzdHJpbmc+IGJ1
dCBhcyBhIHBvaW50ZXIgd2hlbiB0aGUgaGFzaCBmdW5jdGlvbiBpcworLy8gaGFzaDx2b2lkKj4u
CisvLworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIX0ZVTkNUSU9OX0RFRkFV
TFRTX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hfRlVOQ1RJT05fREVG
QVVMVFNfSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5j
bHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4K
KworI2luY2x1ZGUgImFic2wvYmFzZS9jb25maWcuaCIKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFz
aC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorCituYW1lc3BhY2Ug
YWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKworLy8gVGhlIGhhc2ggb2Yg
YW4gb2JqZWN0IG9mIHR5cGUgVCBpcyBjb21wdXRlZCBieSB1c2luZyBhYnNsOjpIYXNoLgordGVt
cGxhdGUgPGNsYXNzIFQsIGNsYXNzIEUgPSB2b2lkPgorc3RydWN0IEhhc2hFcSB7CisgIHVzaW5n
IEhhc2ggPSBhYnNsOjpIYXNoPFQ+OworICB1c2luZyBFcSA9IHN0ZDo6ZXF1YWxfdG88VD47Cit9
OworCitzdHJ1Y3QgU3RyaW5nSGFzaCB7CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsK
KworICBzaXplX3Qgb3BlcmF0b3IoKShhYnNsOjpzdHJpbmdfdmlldyB2KSBjb25zdCB7CisgICAg
cmV0dXJuIGFic2w6Okhhc2g8YWJzbDo6c3RyaW5nX3ZpZXc+e30odik7CisgIH0KK307CisKKy8v
IFN1cHBvcnRzIGhldGVyb2dlbmVvdXMgbG9va3VwIGZvciBzdHJpbmctbGlrZSBlbGVtZW50cy4K
K3N0cnVjdCBTdHJpbmdIYXNoRXEgeworICB1c2luZyBIYXNoID0gU3RyaW5nSGFzaDsKKyAgc3Ry
dWN0IEVxIHsKKyAgICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7CisgICAgYm9vbCBvcGVy
YXRvcigpKGFic2w6OnN0cmluZ192aWV3IGxocywgYWJzbDo6c3RyaW5nX3ZpZXcgcmhzKSBjb25z
dCB7CisgICAgICByZXR1cm4gbGhzID09IHJoczsKKyAgICB9CisgIH07Cit9OwordGVtcGxhdGUg
PD4KK3N0cnVjdCBIYXNoRXE8c3RkOjpzdHJpbmc+IDogU3RyaW5nSGFzaEVxIHt9OwordGVtcGxh
dGUgPD4KK3N0cnVjdCBIYXNoRXE8YWJzbDo6c3RyaW5nX3ZpZXc+IDogU3RyaW5nSGFzaEVxIHt9
OworCisvLyBTdXBwb3J0cyBoZXRlcm9nZW5lb3VzIGxvb2t1cCBmb3IgcG9pbnRlcnMgYW5kIHNt
YXJ0IHBvaW50ZXJzLgordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgSGFzaEVxPFQqPiB7Cisg
IHN0cnVjdCBIYXNoIHsKKyAgICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7CisgICAgdGVt
cGxhdGUgPGNsYXNzIFU+CisgICAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgVSYgcHRyKSBjb25z
dCB7CisgICAgICByZXR1cm4gYWJzbDo6SGFzaDxjb25zdCBUKj57fShIYXNoRXE6OlRvUHRyKHB0
cikpOworICAgIH0KKyAgfTsKKyAgc3RydWN0IEVxIHsKKyAgICB1c2luZyBpc190cmFuc3BhcmVu
dCA9IHZvaWQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+CisgICAgYm9vbCBvcGVy
YXRvcigpKGNvbnN0IEEmIGEsIGNvbnN0IEImIGIpIGNvbnN0IHsKKyAgICAgIHJldHVybiBIYXNo
RXE6OlRvUHRyKGEpID09IEhhc2hFcTo6VG9QdHIoYik7CisgICAgfQorICB9OworCisgcHJpdmF0
ZToKKyAgc3RhdGljIGNvbnN0IFQqIFRvUHRyKGNvbnN0IFQqIHB0cikgeyByZXR1cm4gcHRyOyB9
CisgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcyBEPgorICBzdGF0aWMgY29uc3QgVCogVG9QdHIo
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPFUsIEQ+JiBwdHIpIHsKKyAgICByZXR1cm4gcHRyLmdldCgp
OworICB9CisgIHRlbXBsYXRlIDxjbGFzcyBVPgorICBzdGF0aWMgY29uc3QgVCogVG9QdHIoY29u
c3Qgc3RkOjpzaGFyZWRfcHRyPFU+JiBwdHIpIHsKKyAgICByZXR1cm4gcHRyLmdldCgpOworICB9
Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRD4KK3N0cnVjdCBIYXNoRXE8c3RkOjp1
bmlxdWVfcHRyPFQsIEQ+PiA6IEhhc2hFcTxUKj4ge307Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0
cnVjdCBIYXNoRXE8c3RkOjpzaGFyZWRfcHRyPFQ+PiA6IEhhc2hFcTxUKj4ge307CisKKy8vIFRo
aXMgaGVhZGVyJ3MgdmlzaWJpbGl0eSBpcyByZXN0cmljdGVkLiAgSWYgeW91IG5lZWQgdG8gYWNj
ZXNzIHRoZSBkZWZhdWx0CisvLyBoYXNoZXIgcGxlYXNlIHVzZSB0aGUgY29udGFpbmVyJ3MgOjpo
YXNoZXIgYWxpYXMgaW5zdGVhZC4KKy8vCisvLyBFeGFtcGxlOiB0eXBlbmFtZSBIYXNoID0gdHlw
ZW5hbWUgYWJzbDo6ZmxhdF9oYXNoX21hcDxLLCBWPjo6aGFzaGVyCit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KK3VzaW5nIGhhc2hfZGVmYXVsdF9oYXNoID0gdHlwZW5hbWUgY29udGFpbmVyX2ludGVybmFs
OjpIYXNoRXE8VD46Okhhc2g7CisKKy8vIFRoaXMgaGVhZGVyJ3MgdmlzaWJpbGl0eSBpcyByZXN0
cmljdGVkLiAgSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBkZWZhdWx0CisvLyBrZXkgZXF1YWwg
cGxlYXNlIHVzZSB0aGUgY29udGFpbmVyJ3MgOjprZXlfZXF1YWwgYWxpYXMgaW5zdGVhZC4KKy8v
CisvLyBFeGFtcGxlOiB0eXBlbmFtZSBFcSA9IHR5cGVuYW1lIGFic2w6OmZsYXRfaGFzaF9tYXA8
SywgViwgSGFzaD46OmtleV9lcXVhbAordGVtcGxhdGUgPGNsYXNzIFQ+Cit1c2luZyBoYXNoX2Rl
ZmF1bHRfZXEgPSB0eXBlbmFtZSBjb250YWluZXJfaW50ZXJuYWw6Okhhc2hFcTxUPjo6RXE7CisK
K30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNs
CisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSF9GVU5DVElPTl9ERUZB
VUxUU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZnVuY3Rp
b25fZGVmYXVsdHNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0
aW9uX2RlZmF1bHRzX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY0YmFhZTAyY2RkYjBjNDFlNjEyZTU5
Nzg4ZDgzN2Q1OWY5MTdmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzX3Rlc3QuY2MKQEAgLTAsMCArMSwyOTkgQEAKKy8v
IENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgiCisKKyNpbmNsdWRlIDxm
dW5jdGlvbmFsPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdf
dmlldy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
IHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6dGVzdGluZzo6VHlwZXM7CisKK1RFU1QoRXEsIElu
dDMyKSB7CisgIGhhc2hfZGVmYXVsdF9lcTxpbnQzMl90PiBlcTsKKyAgRVhQRUNUX1RSVUUoZXEo
MSwgMXUpKTsKKyAgRVhQRUNUX1RSVUUoZXEoMSwgY2hhcnsxfSkpOworICBFWFBFQ1RfVFJVRShl
cSgxLCB0cnVlKSk7CisgIEVYUEVDVF9UUlVFKGVxKDEsIGRvdWJsZXsxLjF9KSk7CisgIEVYUEVD
VF9GQUxTRShlcSgxLCBjaGFyezJ9KSk7CisgIEVYUEVDVF9GQUxTRShlcSgxLCAydSkpOworICBF
WFBFQ1RfRkFMU0UoZXEoMSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKDEsIDIuKSk7Cit9
CisKK1RFU1QoSGFzaCwgSW50MzIpIHsKKyAgaGFzaF9kZWZhdWx0X2hhc2g8aW50MzJfdD4gaGFz
aDsKKyAgYXV0byBoID0gaGFzaCgxKTsKKyAgRVhQRUNUX0VRKGgsIGhhc2goMXUpKTsKKyAgRVhQ
RUNUX0VRKGgsIGhhc2goY2hhcnsxfSkpOworICBFWFBFQ1RfRVEoaCwgaGFzaCh0cnVlKSk7Cisg
IEVYUEVDVF9FUShoLCBoYXNoKGRvdWJsZXsxLjF9KSk7CisgIEVYUEVDVF9ORShoLCBoYXNoKDJ1
KSk7CisgIEVYUEVDVF9ORShoLCBoYXNoKGNoYXJ7Mn0pKTsKKyAgRVhQRUNUX05FKGgsIGhhc2go
ZmFsc2UpKTsKKyAgRVhQRUNUX05FKGgsIGhhc2goMi4pKTsKK30KKworZW51bSBjbGFzcyBNeUVu
dW0geyBBLCBCLCBDLCBEIH07CisKK1RFU1QoRXEsIEVudW0pIHsKKyAgaGFzaF9kZWZhdWx0X2Vx
PE15RW51bT4gZXE7CisgIEVYUEVDVF9UUlVFKGVxKE15RW51bTo6QSwgTXlFbnVtOjpBKSk7Cisg
IEVYUEVDVF9GQUxTRShlcShNeUVudW06OkEsIE15RW51bTo6QikpOworfQorCitURVNUKEhhc2gs
IEVudW0pIHsKKyAgaGFzaF9kZWZhdWx0X2hhc2g8TXlFbnVtPiBoYXNoOworCisgIGZvciAoTXlF
bnVtIGUgOiB7TXlFbnVtOjpBLCBNeUVudW06OkIsIE15RW51bTo6Q30pIHsKKyAgICBhdXRvIGgg
PSBoYXNoKGUpOworICAgIEVYUEVDVF9FUShoLCBoYXNoX2RlZmF1bHRfaGFzaDxpbnQ+e30oc3Rh
dGljX2Nhc3Q8aW50PihlKSkpOworICAgIEVYUEVDVF9ORShoLCBoYXNoKE15RW51bTo6RCkpOwor
ICB9Cit9CisKK3VzaW5nIFN0cmluZ1R5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczxzdGQ6OnN0cmlu
ZywgYWJzbDo6c3RyaW5nX3ZpZXc+OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBFcVN0
cmluZyA6IDo6dGVzdGluZzo6VGVzdCB7CisgIGhhc2hfZGVmYXVsdF9lcTxUPiBrZXlfZXE7Cit9
OworCitUWVBFRF9URVNUX0NBU0UoRXFTdHJpbmcsIFN0cmluZ1R5cGVzKTsKKwordGVtcGxhdGUg
PGNsYXNzIFQ+CitzdHJ1Y3QgSGFzaFN0cmluZyA6IDo6dGVzdGluZzo6VGVzdCB7CisgIGhhc2hf
ZGVmYXVsdF9oYXNoPFQ+IGhhc2hlcjsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShIYXNoU3RyaW5n
LCBTdHJpbmdUeXBlcyk7CisKK1RZUEVEX1RFU1QoRXFTdHJpbmcsIFdvcmtzKSB7CisgIGF1dG8g
ZXEgPSB0aGlzLT5rZXlfZXE7CisgIEVYUEVDVF9UUlVFKGVxKCJhIiwgImEiKSk7CisgIEVYUEVD
VF9UUlVFKGVxKCJhIiwgYWJzbDo6c3RyaW5nX3ZpZXcoImEiKSkpOworICBFWFBFQ1RfVFJVRShl
cSgiYSIsIHN0ZDo6c3RyaW5nKCJhIikpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKCJhIiwgImIiKSk7
CisgIEVYUEVDVF9GQUxTRShlcSgiYSIsIGFic2w6OnN0cmluZ192aWV3KCJiIikpKTsKKyAgRVhQ
RUNUX0ZBTFNFKGVxKCJhIiwgc3RkOjpzdHJpbmcoImIiKSkpOworfQorCitUWVBFRF9URVNUKEhh
c2hTdHJpbmcsIFdvcmtzKSB7CisgIGF1dG8gaGFzaCA9IHRoaXMtPmhhc2hlcjsKKyAgYXV0byBo
ID0gaGFzaCgiYSIpOworICBFWFBFQ1RfRVEoaCwgaGFzaChhYnNsOjpzdHJpbmdfdmlldygiYSIp
KSk7CisgIEVYUEVDVF9FUShoLCBoYXNoKHN0ZDo6c3RyaW5nKCJhIikpKTsKKyAgRVhQRUNUX05F
KGgsIGhhc2goYWJzbDo6c3RyaW5nX3ZpZXcoImIiKSkpOworICBFWFBFQ1RfTkUoaCwgaGFzaChz
dGQ6OnN0cmluZygiYiIpKSk7Cit9CisKK3N0cnVjdCBOb0RlbGV0ZXIgeworICB0ZW1wbGF0ZSA8
Y2xhc3MgVD4KKyAgdm9pZCBvcGVyYXRvcigpKGNvbnN0IFQqIHB0cikgY29uc3Qge30KK307CisK
K3VzaW5nIFBvaW50ZXJUeXBlcyA9CisgICAgOjp0ZXN0aW5nOjpUeXBlczxjb25zdCBpbnQqLCBp
bnQqLCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgaW50PiwKKyAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxjb25zdCBpbnQsIE5vRGVsZXRlcj4sCisgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8aW50Piwgc3RkOjp1bmlxdWVfcHRyPGludCwgTm9EZWxldGVyPiwK
KyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2hhcmVkX3B0cjxjb25zdCBpbnQ+LCBzdGQ6OnNo
YXJlZF9wdHI8aW50Pj47CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IEVxUG9pbnRlciA6
IDo6dGVzdGluZzo6VGVzdCB7CisgIGhhc2hfZGVmYXVsdF9lcTxUPiBrZXlfZXE7Cit9OworCitU
WVBFRF9URVNUX0NBU0UoRXFQb2ludGVyLCBQb2ludGVyVHlwZXMpOworCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4KK3N0cnVjdCBIYXNoUG9pbnRlciA6IDo6dGVzdGluZzo6VGVzdCB7CisgIGhhc2hfZGVm
YXVsdF9oYXNoPFQ+IGhhc2hlcjsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShIYXNoUG9pbnRlciwg
UG9pbnRlclR5cGVzKTsKKworVFlQRURfVEVTVChFcVBvaW50ZXIsIFdvcmtzKSB7CisgIGludCBk
dW1teTsKKyAgYXV0byBlcSA9IHRoaXMtPmtleV9lcTsKKyAgYXV0byBzcHRyID0gc3RkOjptYWtl
X3NoYXJlZDxpbnQ+KCk7CisgIHN0ZDo6c2hhcmVkX3B0cjxjb25zdCBpbnQ+IGNzcHRyID0gc3B0
cjsKKyAgaW50KiBwdHIgPSBzcHRyLmdldCgpOworICBjb25zdCBpbnQqIGNwdHIgPSBwdHI7Cisg
IHN0ZDo6dW5pcXVlX3B0cjxpbnQsIE5vRGVsZXRlcj4gdXB0cihwdHIpOworICBzdGQ6OnVuaXF1
ZV9wdHI8Y29uc3QgaW50LCBOb0RlbGV0ZXI+IGN1cHRyKHB0cik7CisKKyAgRVhQRUNUX1RSVUUo
ZXEocHRyLCBjcHRyKSk7CisgIEVYUEVDVF9UUlVFKGVxKHB0ciwgc3B0cikpOworICBFWFBFQ1Rf
VFJVRShlcShwdHIsIHVwdHIpKTsKKyAgRVhQRUNUX1RSVUUoZXEocHRyLCBjc3B0cikpOworICBF
WFBFQ1RfVFJVRShlcShwdHIsIGN1cHRyKSk7CisgIEVYUEVDVF9GQUxTRShlcSgmZHVtbXksIGNw
dHIpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKCZkdW1teSwgc3B0cikpOworICBFWFBFQ1RfRkFMU0Uo
ZXEoJmR1bW15LCB1cHRyKSk7CisgIEVYUEVDVF9GQUxTRShlcSgmZHVtbXksIGNzcHRyKSk7Cisg
IEVYUEVDVF9GQUxTRShlcSgmZHVtbXksIGN1cHRyKSk7Cit9CisKK1RFU1QoSGFzaCwgRGVyaXZl
ZEFuZEJhc2UpIHsKKyAgc3RydWN0IEJhc2Uge307CisgIHN0cnVjdCBEZXJpdmVkIDogQmFzZSB7
fTsKKworICBoYXNoX2RlZmF1bHRfaGFzaDxCYXNlKj4gaGFzaGVyOworCisgIEJhc2UgYmFzZTsK
KyAgRGVyaXZlZCBkZXJpdmVkOworICBFWFBFQ1RfTkUoaGFzaGVyKCZiYXNlKSwgaGFzaGVyKCZk
ZXJpdmVkKSk7CisgIEVYUEVDVF9FUShoYXNoZXIoc3RhdGljX2Nhc3Q8QmFzZSo+KCZkZXJpdmVk
KSksIGhhc2hlcigmZGVyaXZlZCkpOworCisgIGF1dG8gZHAgPSBzdGQ6Om1ha2Vfc2hhcmVkPERl
cml2ZWQ+KCk7CisgIEVYUEVDVF9FUShoYXNoZXIoc3RhdGljX2Nhc3Q8QmFzZSo+KGRwLmdldCgp
KSksIGhhc2hlcihkcCkpOworfQorCitURVNUKEhhc2gsIEZ1bmN0aW9uUG9pbnRlcikgeworICB1
c2luZyBGdW5jID0gaW50ICgqKSgpOworICBoYXNoX2RlZmF1bHRfaGFzaDxGdW5jPiBoYXNoZXI7
CisgIGhhc2hfZGVmYXVsdF9lcTxGdW5jPiBlcTsKKworICBGdW5jIHAxID0gW10geyByZXR1cm4g
MTsgfSwgcDIgPSBbXSB7IHJldHVybiAyOyB9OworICBFWFBFQ1RfRVEoaGFzaGVyKHAxKSwgaGFz
aGVyKHAxKSk7CisgIEVYUEVDVF9UUlVFKGVxKHAxLCBwMSkpOworCisgIEVYUEVDVF9ORShoYXNo
ZXIocDEpLCBoYXNoZXIocDIpKTsKKyAgRVhQRUNUX0ZBTFNFKGVxKHAxLCBwMikpOworfQorCitU
WVBFRF9URVNUKEhhc2hQb2ludGVyLCBXb3JrcykgeworICBpbnQgZHVtbXk7CisgIGF1dG8gaGFz
aCA9IHRoaXMtPmhhc2hlcjsKKyAgYXV0byBzcHRyID0gc3RkOjptYWtlX3NoYXJlZDxpbnQ+KCk7
CisgIHN0ZDo6c2hhcmVkX3B0cjxjb25zdCBpbnQ+IGNzcHRyID0gc3B0cjsKKyAgaW50KiBwdHIg
PSBzcHRyLmdldCgpOworICBjb25zdCBpbnQqIGNwdHIgPSBwdHI7CisgIHN0ZDo6dW5pcXVlX3B0
cjxpbnQsIE5vRGVsZXRlcj4gdXB0cihwdHIpOworICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgaW50
LCBOb0RlbGV0ZXI+IGN1cHRyKHB0cik7CisKKyAgRVhQRUNUX0VRKGhhc2gocHRyKSwgaGFzaChj
cHRyKSk7CisgIEVYUEVDVF9FUShoYXNoKHB0ciksIGhhc2goc3B0cikpOworICBFWFBFQ1RfRVEo
aGFzaChwdHIpLCBoYXNoKHVwdHIpKTsKKyAgRVhQRUNUX0VRKGhhc2gocHRyKSwgaGFzaChjc3B0
cikpOworICBFWFBFQ1RfRVEoaGFzaChwdHIpLCBoYXNoKGN1cHRyKSk7CisgIEVYUEVDVF9ORSho
YXNoKCZkdW1teSksIGhhc2goY3B0cikpOworICBFWFBFQ1RfTkUoaGFzaCgmZHVtbXkpLCBoYXNo
KHNwdHIpKTsKKyAgRVhQRUNUX05FKGhhc2goJmR1bW15KSwgaGFzaCh1cHRyKSk7CisgIEVYUEVD
VF9ORShoYXNoKCZkdW1teSksIGhhc2goY3NwdHIpKTsKKyAgRVhQRUNUX05FKGhhc2goJmR1bW15
KSwgaGFzaChjdXB0cikpOworfQorCisvLyBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiAoc3RyaW5nLCBz
dGQ6OnN0cmluZywgYWJzbDo6c3RyaW5nX3ZpZXcpCisvLyB3aXRoIChzdHJpbmcsIHN0ZDo6c3Ry
aW5nLCBhYnNsOjpzdHJpbmdfdmlldywgY29uc3QgY2hhciopLgordXNpbmcgU3RyaW5nVHlwZXND
YXJ0ZXNpYW5Qcm9kdWN0ID0gVHlwZXM8CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorCisgICAg
c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4sCisgICAgc3RkOjpwYWlyPHN0ZDo6
c3RyaW5nLCBhYnNsOjpzdHJpbmdfdmlldz4sCisgICAgc3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBj
b25zdCBjaGFyKj4sCisKKyAgICBzdGQ6OnBhaXI8YWJzbDo6c3RyaW5nX3ZpZXcsIHN0ZDo6c3Ry
aW5nPiwKKyAgICBzdGQ6OnBhaXI8YWJzbDo6c3RyaW5nX3ZpZXcsIGFic2w6OnN0cmluZ192aWV3
PiwKKyAgICBzdGQ6OnBhaXI8YWJzbDo6c3RyaW5nX3ZpZXcsIGNvbnN0IGNoYXIqPj47CisvLyBj
bGFuZy1mb3JtYXQgb24KKworY29uc3RleHByIGNoYXIga0ZpcnN0U3RyaW5nW10gPSAiYWJjMTIz
IjsKK2NvbnN0ZXhwciBjaGFyIGtTZWNvbmRTdHJpbmdbXSA9ICJpams0NTYiOworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBTdHJpbmdMaWtlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworICB0eXBlbmFtZSBUOjpmaXJzdF90eXBlIGExe2tGaXJzdFN0cmluZ307CisgIHR5
cGVuYW1lIFQ6OnNlY29uZF90eXBlIGIxe2tGaXJzdFN0cmluZ307CisgIHR5cGVuYW1lIFQ6OmZp
cnN0X3R5cGUgYTJ7a1NlY29uZFN0cmluZ307CisgIHR5cGVuYW1lIFQ6OnNlY29uZF90eXBlIGIy
e2tTZWNvbmRTdHJpbmd9OworICBoYXNoX2RlZmF1bHRfZXE8dHlwZW5hbWUgVDo6Zmlyc3RfdHlw
ZT4gZXE7CisgIGhhc2hfZGVmYXVsdF9oYXNoPHR5cGVuYW1lIFQ6OmZpcnN0X3R5cGU+IGhhc2g7
Cit9OworCitUWVBFRF9URVNUX0NBU0VfUChTdHJpbmdMaWtlVGVzdCk7CisKK1RZUEVEX1RFU1Rf
UChTdHJpbmdMaWtlVGVzdCwgRXEpIHsKKyAgRVhQRUNUX1RSVUUodGhpcy0+ZXEodGhpcy0+YTEs
IHRoaXMtPmIxKSk7CisgIEVYUEVDVF9UUlVFKHRoaXMtPmVxKHRoaXMtPmIxLCB0aGlzLT5hMSkp
OworfQorCitUWVBFRF9URVNUX1AoU3RyaW5nTGlrZVRlc3QsIE5vdEVxKSB7CisgIEVYUEVDVF9G
QUxTRSh0aGlzLT5lcSh0aGlzLT5hMSwgdGhpcy0+YjIpKTsKKyAgRVhQRUNUX0ZBTFNFKHRoaXMt
PmVxKHRoaXMtPmIyLCB0aGlzLT5hMSkpOworfQorCitUWVBFRF9URVNUX1AoU3RyaW5nTGlrZVRl
c3QsIEhhc2hFcSkgeworICBFWFBFQ1RfRVEodGhpcy0+aGFzaCh0aGlzLT5hMSksIHRoaXMtPmhh
c2godGhpcy0+YjEpKTsKKyAgRVhQRUNUX0VRKHRoaXMtPmhhc2godGhpcy0+YTIpLCB0aGlzLT5o
YXNoKHRoaXMtPmIyKSk7CisgIC8vIEl0IHdvdWxkIGJlIGEgcG9vciBoYXNoIGZ1bmN0aW9uIHdo
aWNoIGNvbGxpZGVzIG9uIHRoZXNlIHN0cmluZ3MuCisgIEVYUEVDVF9ORSh0aGlzLT5oYXNoKHRo
aXMtPmExKSwgdGhpcy0+aGFzaCh0aGlzLT5iMikpOworfQorCitUWVBFRF9URVNUX0NBU0UoU3Ry
aW5nTGlrZVRlc3QsIFN0cmluZ1R5cGVzQ2FydGVzaWFuUHJvZHVjdCk7CisKK30gIC8vIG5hbWVz
cGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNl
IGFic2wKKworZW51bSBIYXNoIDogc2l6ZV90IHsKKyAga1N0ZCA9IDB4MiwgICAgICAgLy8gc3Rk
OjpoYXNoCisjaWZkZWYgX01TQ19WRVIKKyAga0V4dGVuc2lvbiA9IGtTdGQsICAvLyBJbiBNU1ZD
LCBzdGQ6Omhhc2ggPT0gOjpoYXNoCisjZWxzZSAgICAgICAgICAgICAgICAgLy8gX01TQ19WRVIK
KyAga0V4dGVuc2lvbiA9IDB4NCwgIC8vIDo6aGFzaCAoR0NDIGV4dGVuc2lvbikKKyNlbmRpZiAg
ICAgICAgICAgICAgICAvLyBfTVNDX1ZFUgorfTsKKworLy8gSCBpcyBhIGJpdG1hc2sgb2YgSGFz
aCBlbnVtZXJhdGlvbnMuCisvLyBIYXNoYWJsZTxIPiBpcyBoYXNoYWJsZSB2aWEgYWxsIG1lYW5z
IHNwZWNpZmllZCBpbiBILgordGVtcGxhdGUgPGludCBIPgorc3RydWN0IEhhc2hhYmxlIHsKKyAg
c3RhdGljIGNvbnN0ZXhwciBib29sIEhhc2hhYmxlQnkoSGFzaCBoKSB7IHJldHVybiBoICYgSDsg
fQorfTsKKworbmFtZXNwYWNlIHN0ZCB7Cit0ZW1wbGF0ZSA8aW50IEg+CitzdHJ1Y3QgaGFzaDxI
YXNoYWJsZTxIPj4geworICB0ZW1wbGF0ZSA8Y2xhc3MgRSA9IEhhc2hhYmxlPEg+LAorICAgICAg
ICAgICAgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxFOjpIYXNoYWJsZUJ5KGtTdGQp
Pjo6dHlwZT4KKyAgc2l6ZV90IG9wZXJhdG9yKCkoRSkgY29uc3QgeworICAgIHJldHVybiBrU3Rk
OworICB9Cit9OworfSAgLy8gbmFtZXNwYWNlIHN0ZAorCituYW1lc3BhY2UgYWJzbCB7CituYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3RlbXBsYXRlIDxjbGFz
cyBUPgorc2l6ZV90IEhhc2goY29uc3QgVCYgdikgeworICByZXR1cm4gaGFzaF9kZWZhdWx0X2hh
c2g8VD4oKSh2KTsKK30KKworVEVTVChEZWxlZ2F0ZSwgSGFzaERpc3BhdGNoKSB7CisgIEVYUEVD
VF9FUShIYXNoKGtTdGQpLCBIYXNoKEhhc2hhYmxlPGtTdGQ+KCkpKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3Bh
Y2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfZ2VuZXJh
dG9yX3Rlc3RpbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3Jf
dGVzdGluZy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDZhOWRmMTZmOGEzMzZjMTQzYWZhZWVjMjA2OTE0MjM2
MWI4ODljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hf
Z2VuZXJhdG9yX3Rlc3RpbmcuY2MKQEAgLTAsMCArMSw3MiBAQAorLy8gQ29weXJpZ2h0IDIwMTgg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIKKworI2luY2x1ZGUgPGRlcXVlPgorCituYW1lc3Bh
Y2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSBoYXNo
X2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK2NsYXNzIFJhbmRvbURldmljZVNlZWRTZXEgewor
IHB1YmxpYzoKKyAgdXNpbmcgcmVzdWx0X3R5cGUgPSB0eXBlbmFtZSBzdGQ6OnJhbmRvbV9kZXZp
Y2U6OnJlc3VsdF90eXBlOworCisgIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KKyAgdm9pZCBn
ZW5lcmF0ZShJdGVyYXRvciBzdGFydCwgSXRlcmF0b3IgZW5kKSB7CisgICAgd2hpbGUgKHN0YXJ0
ICE9IGVuZCkgeworICAgICAgKnN0YXJ0ID0gZ2VuXygpOworICAgICAgKytzdGFydDsKKyAgICB9
CisgIH0KKworIHByaXZhdGU6CisgIHN0ZDo6cmFuZG9tX2RldmljZSBnZW5fOworfTsKKworfSAg
Ly8gbmFtZXNwYWNlCisKK3N0ZDo6bXQxOTkzN182NCogR2V0VGhyZWFkTG9jYWxSbmcoKSB7Cisg
IFJhbmRvbURldmljZVNlZWRTZXEgc2VlZF9zZXE7CisgIHRocmVhZF9sb2NhbCBhdXRvKiBybmcg
PSBuZXcgc3RkOjptdDE5OTM3XzY0KHNlZWRfc2VxKTsKKyAgcmV0dXJuIHJuZzsKK30KKworc3Rk
OjpzdHJpbmcgR2VuZXJhdG9yPHN0ZDo6c3RyaW5nPjo6b3BlcmF0b3IoKSgpIGNvbnN0IHsKKyAg
Ly8gTk9MSU5UTkVYVExJTkUocnVudGltZS9pbnQpCisgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJp
YnV0aW9uPHNob3J0PiBjaGFycygweDIwLCAweDdFKTsKKyAgc3RkOjpzdHJpbmcgcmVzOworICBy
ZXMucmVzaXplKDMyKTsKKyAgc3RkOjpnZW5lcmF0ZShyZXMuYmVnaW4oKSwgcmVzLmVuZCgpLAor
ICAgICAgICAgICAgICAgIFsmXSgpIHsgcmV0dXJuIGNoYXJzKCpHZXRUaHJlYWRMb2NhbFJuZygp
KTsgfSk7CisgIHJldHVybiByZXM7Cit9CisKK2Fic2w6OnN0cmluZ192aWV3IEdlbmVyYXRvcjxh
YnNsOjpzdHJpbmdfdmlldz46Om9wZXJhdG9yKCkoKSBjb25zdCB7CisgIHN0YXRpYyBhdXRvKiBh
cmVuYSA9IG5ldyBzdGQ6OmRlcXVlPHN0ZDo6c3RyaW5nPigpOworICAvLyBOT0xJTlRORVhUTElO
RShydW50aW1lL2ludCkKKyAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248c2hvcnQ+IGNo
YXJzKDB4MjAsIDB4N0UpOworICBhcmVuYS0+ZW1wbGFjZV9iYWNrKCk7CisgIGF1dG8mIHJlcyA9
IGFyZW5hLT5iYWNrKCk7CisgIHJlcy5yZXNpemUoMzIpOworICBzdGQ6OmdlbmVyYXRlKHJlcy5i
ZWdpbigpLCByZXMuZW5kKCksCisgICAgICAgICAgICAgICAgWyZdKCkgeyByZXR1cm4gY2hhcnMo
KkdldFRocmVhZExvY2FsUm5nKCkpOyB9KTsKKyAgcmV0dXJuIHJlczsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIGhhc2hfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwK
K30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hh
c2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGQ3NzEwMjZjN2I1MDA1MTM1ZDI4
NjMxNjVhMDA5Y2I0ZGJjYTk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaApAQCAtMCwwICsxLDE1MCBAQAorLy8gQ29w
eXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyBHZW5lcmF0ZXMgcmFuZG9t
IHZhbHVlcyBmb3IgdGVzdGluZy4gU3BlY2lhbGl6ZWQgb25seSBmb3IgdGhlIGZldyB0eXBlcyB3
ZQorLy8gY2FyZSBhYm91dC4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNI
X0dFTkVSQVRPUl9URVNUSU5HX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hB
U0hfR0VORVJBVE9SX1RFU1RJTkdfSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUg
PGFsZ29yaXRobT4KKyNpbmNsdWRlIDxpb3Nmd2Q+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1
ZGUgPHR1cGxlPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisK
KyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nLmgi
CisjaW5jbHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL3N0cmluZ192aWV3LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWlu
ZXJfaW50ZXJuYWwgeworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgeworbmFtZXNwYWNlIGdlbmVy
YXRvcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBDb250YWluZXIsIGNsYXNzID0gdm9p
ZD4KK3N0cnVjdCBJc01hcCA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPGNsYXNz
IE1hcD4KK3N0cnVjdCBJc01hcDxNYXAsIGFic2w6OnZvaWRfdDx0eXBlbmFtZSBNYXA6Om1hcHBl
ZF90eXBlPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKKworfSAgLy8gbmFtZXNwYWNlIGdlbmVyYXRv
cl9pbnRlcm5hbAorCitzdGQ6Om10MTk5MzdfNjQqIEdldFRocmVhZExvY2FsUm5nKCk7CisKK2Vu
dW0gRW51bSB7CisgIGtFbnVtRW1wdHksCisgIGtFbnVtRGVsZXRlZCwKK307CisKK2VudW0gY2xh
c3MgRW51bUNsYXNzIDogdWludDY0X3QgeworICBrRW1wdHksCisgIGtEZWxldGVkLAorfTsKKwor
aW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG8sIGNvbnN0IEVu
dW1DbGFzcyYgZWMpIHsKKyAgcmV0dXJuIG8gPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVjKTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEUgPSB2b2lkPgorc3RydWN0IEdlbmVyYXRv
cjsKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgR2VuZXJhdG9yPFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZT4geworICBUIG9w
ZXJhdG9yKCkoKSBjb25zdCB7CisgICAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248VD4g
ZGlzdDsKKyAgICByZXR1cm4gZGlzdCgqR2V0VGhyZWFkTG9jYWxSbmcoKSk7CisgIH0KK307CisK
K3RlbXBsYXRlIDw+CitzdHJ1Y3QgR2VuZXJhdG9yPEVudW0+IHsKKyAgRW51bSBvcGVyYXRvcigp
KCkgY29uc3QgeworICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPHR5cGVuYW1lIHN0
ZDo6dW5kZXJseWluZ190eXBlPEVudW0+Ojp0eXBlPgorICAgICAgICBkaXN0OworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICBhdXRvIHZhcmlhdGUgPSBkaXN0KCpHZXRUaHJlYWRMb2NhbFJuZygp
KTsKKyAgICAgIGlmICh2YXJpYXRlICE9IGtFbnVtRW1wdHkgJiYgdmFyaWF0ZSAhPSBrRW51bURl
bGV0ZWQpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnVtPih2YXJpYXRlKTsKKyAgICB9
CisgIH0KK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgR2VuZXJhdG9yPEVudW1DbGFzcz4gewor
ICBFbnVtQ2xhc3Mgb3BlcmF0b3IoKSgpIGNvbnN0IHsKKyAgICBzdGQ6OnVuaWZvcm1faW50X2Rp
c3RyaWJ1dGlvbjwKKyAgICAgICAgdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bUNs
YXNzPjo6dHlwZT4KKyAgICAgICAgZGlzdDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgRW51
bUNsYXNzIHZhcmlhdGUgPSBzdGF0aWNfY2FzdDxFbnVtQ2xhc3M+KGRpc3QoKkdldFRocmVhZExv
Y2FsUm5nKCkpKTsKKyAgICAgIGlmICh2YXJpYXRlICE9IEVudW1DbGFzczo6a0VtcHR5ICYmIHZh
cmlhdGUgIT0gRW51bUNsYXNzOjprRGVsZXRlZCkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEVudW1DbGFzcz4odmFyaWF0ZSk7CisgICAgfQorICB9Cit9OworCit0ZW1wbGF0ZSA8Pgorc3Ry
dWN0IEdlbmVyYXRvcjxzdGQ6OnN0cmluZz4geworICBzdGQ6OnN0cmluZyBvcGVyYXRvcigpKCkg
Y29uc3Q7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IEdlbmVyYXRvcjxhYnNsOjpzdHJpbmdf
dmlldz4geworICBhYnNsOjpzdHJpbmdfdmlldyBvcGVyYXRvcigpKCkgY29uc3Q7Cit9OworCit0
ZW1wbGF0ZSA8Pgorc3RydWN0IEdlbmVyYXRvcjxOb25TdGFuZGFyZExheW91dD4geworICBOb25T
dGFuZGFyZExheW91dCBvcGVyYXRvcigpKCkgY29uc3QgeworICAgIHJldHVybiBOb25TdGFuZGFy
ZExheW91dChHZW5lcmF0b3I8c3RkOjpzdHJpbmc+KCkoKSk7CisgIH0KK307CisKK3RlbXBsYXRl
IDxjbGFzcyBLLCBjbGFzcyBWPgorc3RydWN0IEdlbmVyYXRvcjxzdGQ6OnBhaXI8SywgVj4+IHsK
KyAgc3RkOjpwYWlyPEssIFY+IG9wZXJhdG9yKCkoKSBjb25zdCB7CisgICAgcmV0dXJuIHN0ZDo6
cGFpcjxLLCBWPihHZW5lcmF0b3I8dHlwZW5hbWUgc3RkOjpkZWNheTxLPjo6dHlwZT4oKSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8
Vj46OnR5cGU+KCkoKSk7CisgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcy4uLiBUcz4KK3N0cnVj
dCBHZW5lcmF0b3I8c3RkOjp0dXBsZTxUcy4uLj4+IHsKKyAgc3RkOjp0dXBsZTxUcy4uLj4gb3Bl
cmF0b3IoKSgpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RkOjp0dXBsZTxUcy4uLj4oR2VuZXJhdG9y
PHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VHM+Ojp0eXBlPigpKCkuLi4pOworICB9Cit9OworCit0ZW1w
bGF0ZSA8Y2xhc3MgVT4KK3N0cnVjdCBHZW5lcmF0b3I8VSwgYWJzbDo6dm9pZF90PGRlY2x0eXBl
KHN0ZDo6ZGVjbHZhbDxVJj4oKS5rZXkoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxVJj4oKS52YWx1ZSgpKT4+CisgICAgOiBHZW5lcmF0
b3I8c3RkOjpwYWlyPAorICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZGVjYXk8ZGVjbHR5cGUoc3Rk
OjpkZWNsdmFsPFUmPigpLmtleSgpKT46OnR5cGUsCisgICAgICAgICAgdHlwZW5hbWUgc3RkOjpk
ZWNheTxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VSY+KCkudmFsdWUoKSk+Ojp0eXBlPj4ge307CisK
K3RlbXBsYXRlIDxjbGFzcyBDb250YWluZXI+Cit1c2luZyBHZW5lcmF0ZWRUeXBlID0gZGVjbHR5
cGUoCisgICAgc3RkOjpkZWNsdmFsPGNvbnN0IEdlbmVyYXRvcjwKKyAgICAgICAgdHlwZW5hbWUg
c3RkOjpjb25kaXRpb25hbDxnZW5lcmF0b3JfaW50ZXJuYWw6OklzTWFwPENvbnRhaW5lcj46OnZh
bHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENvbnRhaW5l
cjo6dmFsdWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFt
ZSBDb250YWluZXI6OmtleV90eXBlPjo6dHlwZT4mPigpKCkpOworCit9ICAvLyBuYW1lc3BhY2Ug
aGFzaF9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8g
bmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNI
X0dFTkVSQVRPUl9URVNUSU5HX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hf
cG9saWN5X3Rlc3RpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmM3NmVhZDdhNjg0MmU5ZmNiY2YzMjA0MmYx
MmY3ZWFjNmU5Zjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L2hhc2hfcG9saWN5X3Rlc3RpbmcuaApAQCAtMCwwICsxLDE3OCBAQAorLy8gQ29weXJpZ2h0IDIw
MTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLyBVdGlsaXRpZXMgdG8gaGVscCB0ZXN0cyB2
ZXJpZnkgdGhhdCBoYXNoIHRhYmxlcyBwcm9wZXJseSBoYW5kbGUgc3RhdGVmdWwKKy8vIGFsbG9j
YXRvcnMgYW5kIGhhc2ggZnVuY3Rpb25zLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVS
TkFMX0hBU0hfUE9MSUNZX1RFU1RJTkdfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJO
QUxfSEFTSF9QT0xJQ1lfVEVTVElOR19IXworCisjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRl
IDxsaW1pdHM+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPG9zdHJlYW0+CisjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisK
KyNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJp
bmdfdmlldy5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVy
bmFsIHsKK25hbWVzcGFjZSBoYXNoX3Rlc3RpbmdfaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xh
c3MgRGVyaXZlZD4KK3N0cnVjdCBXaXRoSWQgeworICBXaXRoSWQoKSA6IGlkXyhuZXh0X2lkPERl
cml2ZWQ+KCkpIHt9CisgIFdpdGhJZChjb25zdCBXaXRoSWQmIHRoYXQpIDogaWRfKHRoYXQuaWRf
KSB7fQorICBXaXRoSWQoV2l0aElkJiYgdGhhdCkgOiBpZF8odGhhdC5pZF8pIHsgdGhhdC5pZF8g
PSAwOyB9CisgIFdpdGhJZCYgb3BlcmF0b3I9KGNvbnN0IFdpdGhJZCYgdGhhdCkgeworICAgIGlk
XyA9IHRoYXQuaWRfOworICAgIHJldHVybiAqdGhpczsKKyAgfQorICBXaXRoSWQmIG9wZXJhdG9y
PShXaXRoSWQmJiB0aGF0KSB7CisgICAgaWRfID0gdGhhdC5pZF87CisgICAgdGhhdC5pZF8gPSAw
OworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIHNpemVfdCBpZCgpIGNvbnN0IHsgcmV0dXJu
IGlkXzsgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgV2l0aElkJiBhLCBjb25z
dCBXaXRoSWQmIGIpIHsKKyAgICByZXR1cm4gYS5pZF8gPT0gYi5pZF87CisgIH0KKyAgZnJpZW5k
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBXaXRoSWQmIGEsIGNvbnN0IFdpdGhJZCYgYikgeyByZXR1
cm4gIShhID09IGIpOyB9CisKKyBwcm90ZWN0ZWQ6CisgIGV4cGxpY2l0IFdpdGhJZChzaXplX3Qg
aWQpIDogaWRfKGlkKSB7fQorCisgcHJpdmF0ZToKKyAgc2l6ZV90IGlkXzsKKworICB0ZW1wbGF0
ZSA8Y2xhc3MgVD4KKyAgc3RhdGljIHNpemVfdCBuZXh0X2lkKCkgeworICAgIC8vIDAgaXMgcmVz
ZXJ2ZWQgZm9yIG1vdmVkIGZyb20gc3RhdGUuCisgICAgc3RhdGljIHNpemVfdCBnSWQgPSAxOwor
ICAgIHJldHVybiBnSWQrKzsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGhhc2hfdGVzdGlu
Z19pbnRlcm5hbAorCitzdHJ1Y3QgTm9uU3RhbmRhcmRMYXlvdXQgeworICBOb25TdGFuZGFyZExh
eW91dCgpIHt9CisgIGV4cGxpY2l0IE5vblN0YW5kYXJkTGF5b3V0KHN0ZDo6c3RyaW5nIHMpIDog
dmFsdWUoc3RkOjptb3ZlKHMpKSB7fQorICB2aXJ0dWFsIH5Ob25TdGFuZGFyZExheW91dCgpIHt9
CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb25TdGFuZGFyZExheW91dCYgYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOb25TdGFuZGFyZExheW91dCYgYikgewor
ICAgIHJldHVybiBhLnZhbHVlID09IGIudmFsdWU7CisgIH0KKyAgZnJpZW5kIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBOb25TdGFuZGFyZExheW91dCYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBOb25TdGFuZGFyZExheW91dCYgYikgeworICAgIHJldHVybiBhLnZhbHVlICE9IGIu
dmFsdWU7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhh
c2hWYWx1ZShIIGgsIGNvbnN0IE5vblN0YW5kYXJkTGF5b3V0JiB2KSB7CisgICAgcmV0dXJuIEg6
OmNvbWJpbmUoc3RkOjptb3ZlKGgpLCB2LnZhbHVlKTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIHZh
bHVlOworfTsKKworc3RydWN0IFN0YXRlZnVsVGVzdGluZ0hhc2gKKyAgICA6IGFic2w6OmNvbnRh
aW5lcl9pbnRlcm5hbDo6aGFzaF90ZXN0aW5nX2ludGVybmFsOjpXaXRoSWQ8CisgICAgICAgICAg
U3RhdGVmdWxUZXN0aW5nSGFzaD4geworICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgc2l6ZV90IG9w
ZXJhdG9yKCkoY29uc3QgVCYgdCkgY29uc3QgeworICAgIHJldHVybiBhYnNsOjpIYXNoPFQ+e30o
dCk7CisgIH0KK307CisKK3N0cnVjdCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbAorICAgIDogYWJzbDo6
Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX3Rlc3RpbmdfaW50ZXJuYWw6OldpdGhJZDwKKyAgICAg
ICAgICBTdGF0ZWZ1bFRlc3RpbmdFcXVhbD4geworICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3Mg
VT4KKyAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFQmIHQsIGNvbnN0IFUmIHUpIGNvbnN0IHsKKyAg
ICByZXR1cm4gdCA9PSB1OworICB9Cit9OworCisvLyBJdCBpcyBleHBlY3RlZCB0aGF0IEFsbG9j
KCkgPT0gQWxsb2MoKSBmb3IgYWxsIGFsbG9jYXRvcnMgc28gd2UgY2Fubm90IHVzZQorLy8gV2l0
aElkIGJhc2UuIFdlIG5lZWQgdG8gZXhwbGljaXRseSBhc3NpZ24gaWRzLgordGVtcGxhdGUgPGNs
YXNzIFQgPSBpbnQ+CitzdHJ1Y3QgQWxsb2MgOiBzdGQ6OmFsbG9jYXRvcjxUPiB7CisgIHVzaW5n
IHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcCA9IHN0ZDo6dHJ1ZV90eXBlOworCisgIC8vIFVz
aW5nIG9sZCBwYXJhZGlnbSBmb3IgdGhpcyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eS4KKyAgZXhw
bGljaXQgQWxsb2Moc2l6ZV90IGlkID0gMCkgOiBpZF8oaWQpIHt9CisKKyAgQWxsb2MoY29uc3Qg
QWxsb2MmKSA9IGRlZmF1bHQ7CisgIEFsbG9jJiBvcGVyYXRvcj0oY29uc3QgQWxsb2MmKSA9IGRl
ZmF1bHQ7CisKKyAgdGVtcGxhdGUgPGNsYXNzIFU+CisgIEFsbG9jKGNvbnN0IEFsbG9jPFU+JiB0
aGF0KSA6IHN0ZDo6YWxsb2NhdG9yPFQ+KHRoYXQpLCBpZF8odGhhdC5pZCgpKSB7fQorCisgIHRl
bXBsYXRlIDxjbGFzcyBVPgorICBzdHJ1Y3QgcmViaW5kIHsKKyAgICB1c2luZyBvdGhlciA9IEFs
bG9jPFU+OworICB9OworCisgIHNpemVfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIGlkXzsgfQorCisg
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgQWxsb2MmIGEsIGNvbnN0IEFsbG9jJiBiKSB7
CisgICAgcmV0dXJuIGEuaWRfID09IGIuaWRfOworICB9CisgIGZyaWVuZCBib29sIG9wZXJhdG9y
IT0oY29uc3QgQWxsb2MmIGEsIGNvbnN0IEFsbG9jJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0K
KworIHByaXZhdGU6CisgIHNpemVfdCBpZF8gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpOworfTsKKwordGVtcGxhdGUgPGNsYXNzIE1hcD4KK2F1dG8gaXRlbXMoY29uc3QgTWFw
JiBtKSAtPiBzdGQ6OnZlY3RvcjwKKyAgICBzdGQ6OnBhaXI8dHlwZW5hbWUgTWFwOjprZXlfdHlw
ZSwgdHlwZW5hbWUgTWFwOjptYXBwZWRfdHlwZT4+IHsKKyAgdXNpbmcgc3RkOjpnZXQ7CisgIHN0
ZDo6dmVjdG9yPHN0ZDo6cGFpcjx0eXBlbmFtZSBNYXA6OmtleV90eXBlLCB0eXBlbmFtZSBNYXA6
Om1hcHBlZF90eXBlPj4gcmVzOworICByZXMucmVzZXJ2ZShtLnNpemUoKSk7CisgIGZvciAoY29u
c3QgYXV0byYgdiA6IG0pIHJlcy5lbXBsYWNlX2JhY2soZ2V0PDA+KHYpLCBnZXQ8MT4odikpOwor
ICByZXR1cm4gcmVzOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgU2V0PgorYXV0byBrZXlzKGNvbnN0
IFNldCYgcykKKyAgICAtPiBzdGQ6OnZlY3Rvcjx0eXBlbmFtZSBzdGQ6OmRlY2F5PHR5cGVuYW1l
IFNldDo6a2V5X3R5cGU+Ojp0eXBlPiB7CisgIHN0ZDo6dmVjdG9yPHR5cGVuYW1lIHN0ZDo6ZGVj
YXk8dHlwZW5hbWUgU2V0OjprZXlfdHlwZT46OnR5cGU+IHJlczsKKyAgcmVzLnJlc2VydmUocy5z
aXplKCkpOworICBmb3IgKGNvbnN0IGF1dG8mIHYgOiBzKSByZXMuZW1wbGFjZV9iYWNrKHYpOwor
ICByZXR1cm4gcmVzOworfQorCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9
ICAvLyBuYW1lc3BhY2UgYWJzbAorCisvLyBBQlNMX1VOT1JERVJFRF9TVVBQT1JUU19BTExPQ19D
VE9SUyBpcyBmYWxzZSBmb3IgZ2xpYmN4eCB2ZXJzaW9ucworLy8gd2hlcmUgdGhlIHVub3JkZXJl
ZCBjb250YWluZXJzIGFyZSBtaXNzaW5nIGNlcnRhaW4gY29uc3RydWN0b3JzIHRoYXQKKy8vIHRh
a2UgYWxsb2NhdG9yIGFyZ3VtZW50cy4gVGhpcyB0ZXN0IGlzIGRlZmluZWQgYWQtaG9jIGZvciB0
aGUgcGxhdGZvcm1zCisvLyB3ZSBjYXJlIGFib3V0IChub3RhYmx5IENyb3NzdG9vbCAxNykgYmVj
YXVzZSBsaWJzdGRjeHgncyB1c2VsZXNzCisvLyB2ZXJzaW9uaW5nIHNjaGVtZSBwcmVjbHVkZXMg
YSBtb3JlIHByaW5jaXBsZWQgc29sdXRpb24uCisjaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgJiYg
X19HTElCQ1hYX18gPD0gMjAxNDA0MjUKKyNkZWZpbmUgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNf
QUxMT0NfQ1RPUlMgMAorI2Vsc2UKKyNkZWZpbmUgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxM
T0NfQ1RPUlMgMQorI2VuZGlmCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxf
SEFTSF9QT0xJQ1lfVEVTVElOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL2hhc2hfcG9saWN5X3Rlc3RpbmdfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNoX3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzIxNWM0MjM3YWU1NTE2
ODZkZDgyNGQ0MmRhN2NmYjkzYjBjZTkxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nX3Rlc3QuY2MKQEAgLTAsMCArMSw0MyBA
QAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFi
c2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIKKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJf
aW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworVEVTVChfLCBIYXNoKSB7CisgIFN0YXRlZnVsVGVz
dGluZ0hhc2ggaDE7CisgIEVYUEVDVF9FUSgxLCBoMS5pZCgpKTsKKyAgU3RhdGVmdWxUZXN0aW5n
SGFzaCBoMjsKKyAgRVhQRUNUX0VRKDIsIGgyLmlkKCkpOworICBTdGF0ZWZ1bFRlc3RpbmdIYXNo
IGgxYyhoMSk7CisgIEVYUEVDVF9FUSgxLCBoMWMuaWQoKSk7CisgIFN0YXRlZnVsVGVzdGluZ0hh
c2ggaDJtKHN0ZDo6bW92ZShoMikpOworICBFWFBFQ1RfRVEoMiwgaDJtLmlkKCkpOworICBFWFBF
Q1RfRVEoMCwgaDIuaWQoKSk7CisgIFN0YXRlZnVsVGVzdGluZ0hhc2ggaDM7CisgIEVYUEVDVF9F
USgzLCBoMy5pZCgpKTsKKyAgaDMgPSBTdGF0ZWZ1bFRlc3RpbmdIYXNoKCk7CisgIEVYUEVDVF9F
USg0LCBoMy5pZCgpKTsKKyAgaDMgPSBzdGQ6Om1vdmUoaDEpOworICBFWFBFQ1RfRVEoMSwgaDMu
aWQoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9p
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNoX3BvbGljeV90cmFpdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjllNDdlMTc1YzlkZmFlMzUyNGI3
Y2IxNTM5MzEwMjZkZTViZjk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2lu
dGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oCkBAIC0wLDAgKzEsMTg5IEBACisvLyBDb3B5cmln
aHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lO
VEVSTkFMX0hBU0hfUE9MSUNZX1RSQUlUU19IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRF
Uk5BTF9IQVNIX1BPTElDWV9UUkFJVFNfSF8KKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVk
ZSA8bWVtb3J5PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisK
KyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKworbmFtZXNwYWNlIGFic2wgewor
bmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKKy8vIERlZmluZXMgaG93IHNsb3RzIGFy
ZSBpbml0aWFsaXplZC9kZXN0cm95ZWQvbW92ZWQuCit0ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5LCBj
bGFzcyA9IHZvaWQ+CitzdHJ1Y3QgaGFzaF9wb2xpY3lfdHJhaXRzIHsKKyBwcml2YXRlOgorICBz
dHJ1Y3QgUmV0dXJuS2V5IHsKKyAgICAvLyBXZSByZXR1cm4gYEtleWAgaGVyZS4KKyAgICAvLyBX
aGVuIEtleT1UJiwgd2UgZm9yd2FyZCB0aGUgbHZhbHVlIHJlZmVyZW5jZS4KKyAgICAvLyBXaGVu
IEtleT1ULCB3ZSByZXR1cm4gYnkgdmFsdWUgdG8gYXZvaWQgYSBkYW5nbGluZyByZWZlcmVuY2Uu
CisgICAgLy8gZWcsIGZvciBzdHJpbmdfaGFzaF9tYXAuCisgICAgdGVtcGxhdGUgPGNsYXNzIEtl
eSwgY2xhc3MuLi4gQXJncz4KKyAgICBLZXkgb3BlcmF0b3IoKShLZXkmJiBrLCBjb25zdCBBcmdz
Ji4uLikgY29uc3QgeworICAgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxLZXk+KGspOworICAgIH0K
KyAgfTsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgUCA9IFBvbGljeSwgY2xhc3MgPSB2b2lkPgorICBz
dHJ1Y3QgQ29uc3RhbnRJdGVyYXRvcnNJbXBsIDogc3RkOjpmYWxzZV90eXBlIHt9OworCisgIHRl
bXBsYXRlIDxjbGFzcyBQPgorICBzdHJ1Y3QgQ29uc3RhbnRJdGVyYXRvcnNJbXBsPFAsIGFic2w6
OnZvaWRfdDx0eXBlbmFtZSBQOjpjb25zdGFudF9pdGVyYXRvcnM+PgorICAgICAgOiBQOjpjb25z
dGFudF9pdGVyYXRvcnMge307CisKKyBwdWJsaWM6CisgIC8vIFRoZSBhY3R1YWwgb2JqZWN0IHN0
b3JlZCBpbiB0aGUgaGFzaCB0YWJsZS4KKyAgdXNpbmcgc2xvdF90eXBlID0gdHlwZW5hbWUgUG9s
aWN5OjpzbG90X3R5cGU7CisKKyAgLy8gVGhlIHR5cGUgb2YgdGhlIGtleXMgc3RvcmVkIGluIHRo
ZSBoYXNodGFibGUuCisgIHVzaW5nIGtleV90eXBlID0gdHlwZW5hbWUgUG9saWN5OjprZXlfdHlw
ZTsKKworICAvLyBUaGUgYXJndW1lbnQgdHlwZSBmb3IgaW5zZXJ0aW9ucyBpbnRvIHRoZSBoYXNo
dGFibGUuIFRoaXMgaXMgZGlmZmVyZW50CisgIC8vIGZyb20gdmFsdWVfdHlwZSBmb3IgaW5jcmVh
c2VkIHBlcmZvcm1hbmNlLiBTZWUgaW5pdGlhbGl6ZXJfbGlzdCBjb25zdHJ1Y3RvcgorICAvLyBh
bmQgaW5zZXJ0KCkgbWVtYmVyIGZ1bmN0aW9ucyBmb3IgbW9yZSBkZXRhaWxzLgorICB1c2luZyBp
bml0X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3k6OmluaXRfdHlwZTsKKworICB1c2luZyByZWZlcmVu
Y2UgPSBkZWNsdHlwZShQb2xpY3k6OmVsZW1lbnQoc3RkOjpkZWNsdmFsPHNsb3RfdHlwZSo+KCkp
KTsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxyZWZl
cmVuY2U+Ojp0eXBlKjsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X3JlZmVyZW5jZTxyZWZlcmVuY2U+Ojp0eXBlOworCisgIC8vIFBvbGljaWVzIGNhbiBzZXQgdGhp
cyB2YXJpYWJsZSB0byB0ZWxsIHJhd19oYXNoX3NldCB0aGF0IGFsbCBpdGVyYXRvcnMKKyAgLy8g
c2hvdWxkIGJlIGNvbnN0YW50LCBldmVuIGBpdGVyYXRvcmAuIFRoaXMgaXMgdXNlZnVsIGZvciBz
ZXQtbGlrZQorICAvLyBjb250YWluZXJzLgorICAvLyBEZWZhdWx0cyB0byBmYWxzZSBpZiBub3Qg
cHJvdmlkZWQgYnkgdGhlIHBvbGljeS4KKyAgdXNpbmcgY29uc3RhbnRfaXRlcmF0b3JzID0gQ29u
c3RhbnRJdGVyYXRvcnNJbXBsPD47CisKKyAgLy8gUFJFQ09ORElUSU9OOiBgc2xvdGAgaXMgVU5J
TklUSUFMSVpFRAorICAvLyBQT1NUQ09ORElUSU9OOiBgc2xvdGAgaXMgSU5JVElBTElaRUQKKyAg
dGVtcGxhdGUgPGNsYXNzIEFsbG9jLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgdm9pZCBjb25z
dHJ1Y3QoQWxsb2MqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QsIEFyZ3MmJi4uLiBhcmdzKSB7Cisg
ICAgUG9saWN5Ojpjb25zdHJ1Y3QoYWxsb2MsIHNsb3QsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CisgIH0KKworICAvLyBQUkVDT05ESVRJT046IGBzbG90YCBpcyBJTklUSUFMSVpFRAor
ICAvLyBQT1NUQ09ORElUSU9OOiBgc2xvdGAgaXMgVU5JTklUSUFMSVpFRAorICB0ZW1wbGF0ZSA8
Y2xhc3MgQWxsb2M+CisgIHN0YXRpYyB2b2lkIGRlc3Ryb3koQWxsb2MqIGFsbG9jLCBzbG90X3R5
cGUqIHNsb3QpIHsKKyAgICBQb2xpY3k6OmRlc3Ryb3koYWxsb2MsIHNsb3QpOworICB9CisKKyAg
Ly8gVHJhbnNmZXJzIHRoZSBgb2xkX3Nsb3RgIHRvIGBuZXdfc2xvdGAuIEFueSBtZW1vcnkgYWxs
b2NhdGVkIGJ5IHRoZQorICAvLyBhbGxvY2F0b3IgaW5zaWRlIGBvbGRfc2xvdGAgdG8gYG5ld19z
bG90YCBjYW4gYmUgdHJhbnNmZXJlZC4KKyAgLy8KKyAgLy8gT1BUSU9OQUw6IGRlZmF1bHRzIHRv
OgorICAvLworICAvLyAgICAgY2xvbmUobmV3X3Nsb3QsIHN0ZDo6bW92ZSgqb2xkX3Nsb3QpKTsK
KyAgLy8gICAgIGRlc3Ryb3kob2xkX3Nsb3QpOworICAvLworICAvLyBQUkVDT05ESVRJT046IGBu
ZXdfc2xvdGAgaXMgVU5JTklUSUFMSVpFRCBhbmQgYG9sZF9zbG90YCBpcyBJTklUSUFMSVpFRAor
ICAvLyBQT1NUQ09ORElUSU9OOiBgbmV3X3Nsb3RgIGlzIElOSVRJQUxJWkVEIGFuZCBgb2xkX3Ns
b3RgIGlzCisgIC8vICAgICAgICAgICAgICAgIFVOSU5JVElBTElaRUQKKyAgdGVtcGxhdGUgPGNs
YXNzIEFsbG9jPgorICBzdGF0aWMgdm9pZCB0cmFuc2ZlcihBbGxvYyogYWxsb2MsIHNsb3RfdHlw
ZSogbmV3X3Nsb3QsIHNsb3RfdHlwZSogb2xkX3Nsb3QpIHsKKyAgICB0cmFuc2Zlcl9pbXBsKGFs
bG9jLCBuZXdfc2xvdCwgb2xkX3Nsb3QsIDApOworICB9CisKKyAgLy8gUFJFQ09ORElUSU9OOiBg
c2xvdGAgaXMgSU5JVElBTElaRUQKKyAgLy8gUE9TVENPTkRJVElPTjogYHNsb3RgIGlzIElOSVRJ
QUxJWkVECisgIHRlbXBsYXRlIDxjbGFzcyBQID0gUG9saWN5PgorICBzdGF0aWMgYXV0byBlbGVt
ZW50KHNsb3RfdHlwZSogc2xvdCkgLT4gZGVjbHR5cGUoUDo6ZWxlbWVudChzbG90KSkgeworICAg
IHJldHVybiBQOjplbGVtZW50KHNsb3QpOworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgYW1vdW50
IG9mIG1lbW9yeSBvd25lZCBieSBgc2xvdGAsIGV4Y2x1c2l2ZSBvZiBgc2l6ZW9mKCpzbG90KWAu
CisgIC8vCisgIC8vIElmIGBzbG90YCBpcyBudWxscHRyLCByZXR1cm5zIHRoZSBjb25zdGFudCBh
bW91bnQgb2YgbWVtb3J5IG93bmVkIGJ5IGFueQorICAvLyBmdWxsIHNsb3Qgb3IgLTEgaWYgc2xv
dHMgb3duIHZhcmlhYmxlIGFtb3VudHMgb2YgbWVtb3J5LgorICAvLworICAvLyBQUkVDT05ESVRJ
T046IGBzbG90YCBpcyBJTklUSUFMSVpFRCBvciBudWxscHRyCisgIHRlbXBsYXRlIDxjbGFzcyBQ
ID0gUG9saWN5PgorICBzdGF0aWMgc2l6ZV90IHNwYWNlX3VzZWQoY29uc3Qgc2xvdF90eXBlKiBz
bG90KSB7CisgICAgcmV0dXJuIFA6OnNwYWNlX3VzZWQoc2xvdCk7CisgIH0KKworICAvLyBQcm92
aWRlcyBnZW5lcmFsaXplZCBhY2Nlc3MgdG8gdGhlIGtleSBmb3IgZWxlbWVudHMsIGJvdGggZm9y
IGVsZW1lbnRzIGluCisgIC8vIHRoZSB0YWJsZSBhbmQgZm9yIGVsZW1lbnRzIHRoYXQgaGF2ZSBu
b3QgeWV0IGJlZW4gaW5zZXJ0ZWQgKG9yIGV2ZW4KKyAgLy8gY29uc3RydWN0ZWQpLiAgV2Ugd291
bGQgbGlrZSBhbiBBUEkgdGhhdCBhbGxvd3MgdXMgdG8gc2F5OiBga2V5KGFyZ3MuLi4pYAorICAv
LyBidXQgd2UgY2Fubm90IGRvIHRoYXQgZm9yIGFsbCBjYXNlcywgc28gd2UgdXNlIHRoaXMgbW9y
ZSBnZW5lcmFsIEFQSSB0aGF0CisgIC8vIGNhbiBiZSB1c2VkIGZvciBtYW55IHRoaW5ncywgaW5j
bHVkaW5nIHRoZSBmb2xsb3dpbmc6CisgIC8vCisgIC8vICAgLSBHaXZlbiBhbiBlbGVtZW50IGlu
IGEgdGFibGUsIGdldCBpdHMga2V5LgorICAvLyAgIC0gR2l2ZW4gYW4gZWxlbWVudCBpbml0aWFs
aXplciwgZ2V0IGl0cyBrZXkuCisgIC8vICAgLSBHaXZlbiBgZW1wbGFjZSgpYCBhcmd1bWVudHMs
IGdldCB0aGUgZWxlbWVudCBrZXkuCisgIC8vCisgIC8vIEltcGxlbWVudGF0aW9ucyBvZiB0aGlz
IG11c3QgYWRoZXJlIHRvIGEgdmVyeSBzdHJpY3QgdGVjaG5pY2FsCisgIC8vIHNwZWNpZmljYXRp
b24gYXJvdW5kIGFsaWFzaW5nIGFuZCBjb25zdW1pbmcgYXJndW1lbnRzOgorICAvLworICAvLyBM
ZXQgYHZhbHVlX3R5cGVgIGJlIHRoZSByZXN1bHQgdHlwZSBvZiBgZWxlbWVudCgpYCB3aXRob3V0
IHJlZi0gYW5kCisgIC8vIGN2LXF1YWxpZmllcnMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIGZ1
bmN0b3IsIHRoZSByZXN0IGFyZSBjb25zdHJ1Y3RvcgorICAvLyBhcmd1bWVudHMgZm9yIGB2YWx1
ZV90eXBlYC4gUmV0dXJucyBgc3RkOjpmb3J3YXJkPEY+KGYpKGssIHhzLi4uKWAsIHdoZXJlCisg
IC8vIGBrYCBpcyB0aGUgZWxlbWVudCBrZXksIGFuZCBgeHMuLi5gIGFyZSB0aGUgbmV3IGNvbnN0
cnVjdG9yIGFyZ3VtZW50cyBmb3IKKyAgLy8gYHZhbHVlX3R5cGVgLiBJdCdzIGFsbG93ZWQgZm9y
IGBrYCB0byBhbGlhcyBgeHMuLi5gLCBhbmQgZm9yIGJvdGggdG8gYWxpYXMKKyAgLy8gYHRzLi4u
YC4gVGhlIGtleSB3b24ndCBiZSB0b3VjaGVkIG9uY2UgYHhzLi4uYCBhcmUgdXNlZCB0byBjb25z
dHJ1Y3QgYW4KKyAgLy8gZWxlbWVudDsgYHRzLi4uYCB3b24ndCBiZSB0b3VjaGVkIGF0IGFsbCwg
d2hpY2ggYWxsb3dzIGBhcHBseSgpYCB0byBjb25zdW1lCisgIC8vIGFueSBydmFsdWVzIGFtb25n
IHRoZW0uCisgIC8vCisgIC8vIElmIGB2YWx1ZV90eXBlYCBpcyBjb25zdHJ1Y3RpYmxlIGZyb20g
YFRzJiYuLi5gLCBgUG9saWN5OjphcHBseSgpYCBtdXN0IG5vdAorICAvLyB0cmlnZ2VyIGEgaGFy
ZCBjb21waWxlIGVycm9yIHVubGVzcyBpdCBvcmlnaW5hdGVzIGZyb20gYGZgLiBJbiBvdGhlciB3
b3JkcywKKyAgLy8gYFBvbGljeTo6YXBwbHkoKWAgbXVzdCBiZSBTRklOQUUtZnJpZW5kbHkuIElm
IGB2YWx1ZV90eXBlYCBpcyBub3QKKyAgLy8gY29uc3RydWN0aWJsZSBmcm9tIGBUcyYmLi4uYCwg
ZWl0aGVyIFNGSU5BRSBvciBhIGhhcmQgY29tcGlsZSBlcnJvciBpcyBPSy4KKyAgLy8KKyAgLy8g
SWYgYFRzLi4uYCBpcyBgW2N2XSB2YWx1ZV90eXBlWyZdYCBvciBgW2N2XSBpbml0X3R5cGVbJl1g
LAorICAvLyBgUG9saWN5OjphcHBseSgpYCBtdXN0IHdvcmsuIEEgY29tcGlsZSBlcnJvciBpcyBu
b3QgYWxsb3dlZCwgU0ZJTkFFIG9yIG5vdC4KKyAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzLi4u
IFRzLCBjbGFzcyBQID0gUG9saWN5PgorICBzdGF0aWMgYXV0byBhcHBseShGJiYgZiwgVHMmJi4u
LiB0cykKKyAgICAgIC0+IGRlY2x0eXBlKFA6OmFwcGx5KHN0ZDo6Zm9yd2FyZDxGPihmKSwgc3Rk
Ojpmb3J3YXJkPFRzPih0cykuLi4pKSB7CisgICAgcmV0dXJuIFA6OmFwcGx5KHN0ZDo6Zm9yd2Fy
ZDxGPihmKSwgc3RkOjpmb3J3YXJkPFRzPih0cykuLi4pOworICB9CisKKyAgLy8gUmV0dXJucyB0
aGUgImtleSIgcG9ydGlvbiBvZiB0aGUgc2xvdC4KKyAgLy8gVXNlZCBmb3Igbm9kZSBoYW5kbGUg
bWFuaXB1bGF0aW9uLgorICB0ZW1wbGF0ZSA8Y2xhc3MgUCA9IFBvbGljeT4KKyAgc3RhdGljIGF1
dG8ga2V5KHNsb3RfdHlwZSogc2xvdCkKKyAgICAgIC0+IGRlY2x0eXBlKFA6OmFwcGx5KFJldHVy
bktleSgpLCBlbGVtZW50KHNsb3QpKSkgeworICAgIHJldHVybiBQOjphcHBseShSZXR1cm5LZXko
KSwgZWxlbWVudChzbG90KSk7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSAidmFsdWUiIChhcyBv
cHBvc2VkIHRvIHRoZSAia2V5IikgcG9ydGlvbiBvZiB0aGUgZWxlbWVudC4gVXNlZAorICAvLyBi
eSBtYXBzIHRvIGltcGxlbWVudCBgb3BlcmF0b3JbXWAsIGBhdCgpYCBhbmQgYGluc2VydF9vcl9h
c3NpZ24oKWAuCisgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQID0gUG9saWN5PgorICBzdGF0
aWMgYXV0byB2YWx1ZShUKiBlbGVtKSAtPiBkZWNsdHlwZShQOjp2YWx1ZShlbGVtKSkgeworICAg
IHJldHVybiBQOjp2YWx1ZShlbGVtKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gVXNlIGF1dG8g
LT4gZGVjbHR5cGUgYXMgYW4gZW5hYmxlci4KKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jLCBjbGFz
cyBQID0gUG9saWN5PgorICBzdGF0aWMgYXV0byB0cmFuc2Zlcl9pbXBsKEFsbG9jKiBhbGxvYywg
c2xvdF90eXBlKiBuZXdfc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG90X3R5
cGUqIG9sZF9zbG90LCBpbnQpCisgICAgICAtPiBkZWNsdHlwZSgodm9pZClQOjp0cmFuc2Zlcihh
bGxvYywgbmV3X3Nsb3QsIG9sZF9zbG90KSkgeworICAgIFA6OnRyYW5zZmVyKGFsbG9jLCBuZXdf
c2xvdCwgb2xkX3Nsb3QpOworICB9CisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvYz4KKyAgc3RhdGlj
IHZvaWQgdHJhbnNmZXJfaW1wbChBbGxvYyogYWxsb2MsIHNsb3RfdHlwZSogbmV3X3Nsb3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdF90eXBlKiBvbGRfc2xvdCwgY2hhcikgewor
ICAgIGNvbnN0cnVjdChhbGxvYywgbmV3X3Nsb3QsIHN0ZDo6bW92ZShlbGVtZW50KG9sZF9zbG90
KSkpOworICAgIGRlc3Ryb3koYWxsb2MsIG9sZF9zbG90KTsKKyAgfQorfTsKKworfSAgLy8gbmFt
ZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlm
ICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIX1BPTElDWV9UUkFJVFNfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHNfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHNfdGVzdC5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MjNmMTU0OGU3Y2ExMzhlZTVhY2EwOTI0MmFmZDNiYzRmOTcyYjI2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0
c190ZXN0LmNjCkBAIC0wLDAgKzEsMTQyIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xp
Y3lfdHJhaXRzLmgiCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDxuZXc+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50
ZXJuYWwgeworbmFtZXNwYWNlIHsKKwordXNpbmcgOjp0ZXN0aW5nOjpNb2NrRnVuY3Rpb247Cit1
c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJuUmVmOworCit1
c2luZyBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGludD47Cit1c2luZyBTbG90ID0gaW50OworCitz
dHJ1Y3QgUG9saWN5V2l0aG91dE9wdGlvbmFsT3BzIHsKKyAgdXNpbmcgc2xvdF90eXBlID0gU2xv
dDsKKyAgdXNpbmcga2V5X3R5cGUgPSBTbG90OworICB1c2luZyBpbml0X3R5cGUgPSBTbG90Owor
CisgIHN0YXRpYyBzdGQ6OmZ1bmN0aW9uPHZvaWQodm9pZCosIFNsb3QqLCBTbG90KT4gY29uc3Ry
dWN0OworICBzdGF0aWMgc3RkOjpmdW5jdGlvbjx2b2lkKHZvaWQqLCBTbG90Kik+IGRlc3Ryb3k7
CisKKyAgc3RhdGljIHN0ZDo6ZnVuY3Rpb248U2xvdCYoU2xvdCopPiBlbGVtZW50OworICBzdGF0
aWMgaW50IGFwcGx5KGludCB2KSB7IHJldHVybiBhcHBseV9pbXBsKHYpOyB9CisgIHN0YXRpYyBz
dGQ6OmZ1bmN0aW9uPGludChpbnQpPiBhcHBseV9pbXBsOworICBzdGF0aWMgc3RkOjpmdW5jdGlv
bjxTbG90JihTbG90Kik+IHZhbHVlOworfTsKKworc3RkOjpmdW5jdGlvbjx2b2lkKHZvaWQqLCBT
bG90KiwgU2xvdCk+IFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6Y29uc3RydWN0Oworc3RkOjpm
dW5jdGlvbjx2b2lkKHZvaWQqLCBTbG90Kik+IFBvbGljeVdpdGhvdXRPcHRpb25hbE9wczo6ZGVz
dHJveTsKKworc3RkOjpmdW5jdGlvbjxTbG90JihTbG90Kik+IFBvbGljeVdpdGhvdXRPcHRpb25h
bE9wczo6ZWxlbWVudDsKK3N0ZDo6ZnVuY3Rpb248aW50KGludCk+IFBvbGljeVdpdGhvdXRPcHRp
b25hbE9wczo6YXBwbHlfaW1wbDsKK3N0ZDo6ZnVuY3Rpb248U2xvdCYoU2xvdCopPiBQb2xpY3lX
aXRob3V0T3B0aW9uYWxPcHM6OnZhbHVlOworCitzdHJ1Y3QgUG9saWN5V2l0aE9wdGlvbmFsT3Bz
IDogUG9saWN5V2l0aG91dE9wdGlvbmFsT3BzIHsKKyAgc3RhdGljIHN0ZDo6ZnVuY3Rpb248dm9p
ZCh2b2lkKiwgU2xvdCosIFNsb3QqKT4gdHJhbnNmZXI7Cit9OworCitzdGQ6OmZ1bmN0aW9uPHZv
aWQodm9pZCosIFNsb3QqLCBTbG90Kik+IFBvbGljeVdpdGhPcHRpb25hbE9wczo6dHJhbnNmZXI7
CisKK3N0cnVjdCBUZXN0IDogOjp0ZXN0aW5nOjpUZXN0IHsKKyAgVGVzdCgpIHsKKyAgICBQb2xp
Y3lXaXRob3V0T3B0aW9uYWxPcHM6OmNvbnN0cnVjdCA9IFsmXSh2b2lkKiBhMSwgU2xvdCogYTIs
IFNsb3QgYTMpIHsKKyAgICAgIGNvbnN0cnVjdC5DYWxsKGExLCBhMiwgc3RkOjptb3ZlKGEzKSk7
CisgICAgfTsKKyAgICBQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHM6OmRlc3Ryb3kgPSBbJl0odm9p
ZCogYTEsIFNsb3QqIGEyKSB7CisgICAgICBkZXN0cm95LkNhbGwoYTEsIGEyKTsKKyAgICB9Owor
CisgICAgUG9saWN5V2l0aG91dE9wdGlvbmFsT3BzOjplbGVtZW50ID0gWyZdKFNsb3QqIGExKSAt
PiBTbG90JiB7CisgICAgICByZXR1cm4gZWxlbWVudC5DYWxsKGExKTsKKyAgICB9OworICAgIFBv
bGljeVdpdGhvdXRPcHRpb25hbE9wczo6YXBwbHlfaW1wbCA9IFsmXShpbnQgYTEpIC0+IGludCB7
CisgICAgICByZXR1cm4gYXBwbHkuQ2FsbChhMSk7CisgICAgfTsKKyAgICBQb2xpY3lXaXRob3V0
T3B0aW9uYWxPcHM6OnZhbHVlID0gWyZdKFNsb3QqIGExKSAtPiBTbG90JiB7CisgICAgICByZXR1
cm4gdmFsdWUuQ2FsbChhMSk7CisgICAgfTsKKworICAgIFBvbGljeVdpdGhPcHRpb25hbE9wczo6
dHJhbnNmZXIgPSBbJl0odm9pZCogYTEsIFNsb3QqIGEyLCBTbG90KiBhMykgeworICAgICAgcmV0
dXJuIHRyYW5zZmVyLkNhbGwoYTEsIGEyLCBhMyk7CisgICAgfTsKKyAgfQorCisgIHN0ZDo6YWxs
b2NhdG9yPGludD4gYWxsb2M7CisgIGludCBhID0gNTM7CisKKyAgTW9ja0Z1bmN0aW9uPHZvaWQo
dm9pZCosIFNsb3QqLCBTbG90KT4gY29uc3RydWN0OworICBNb2NrRnVuY3Rpb248dm9pZCh2b2lk
KiwgU2xvdCopPiBkZXN0cm95OworCisgIE1vY2tGdW5jdGlvbjxTbG90JihTbG90Kik+IGVsZW1l
bnQ7CisgIE1vY2tGdW5jdGlvbjxpbnQoaW50KT4gYXBwbHk7CisgIE1vY2tGdW5jdGlvbjxTbG90
JihTbG90Kik+IHZhbHVlOworCisgIE1vY2tGdW5jdGlvbjx2b2lkKHZvaWQqLCBTbG90KiwgU2xv
dCopPiB0cmFuc2ZlcjsKK307CisKK1RFU1RfRihUZXN0LCBjb25zdHJ1Y3QpIHsKKyAgRVhQRUNU
X0NBTEwoY29uc3RydWN0LCBDYWxsKCZhbGxvYywgJmEsIDUzKSk7CisgIGhhc2hfcG9saWN5X3Ry
YWl0czxQb2xpY3lXaXRob3V0T3B0aW9uYWxPcHM+Ojpjb25zdHJ1Y3QoJmFsbG9jLCAmYSwgNTMp
OworfQorCitURVNUX0YoVGVzdCwgZGVzdHJveSkgeworICBFWFBFQ1RfQ0FMTChkZXN0cm95LCBD
YWxsKCZhbGxvYywgJmEpKTsKKyAgaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeVdpdGhvdXRPcHRp
b25hbE9wcz46OmRlc3Ryb3koJmFsbG9jLCAmYSk7Cit9CisKK1RFU1RfRihUZXN0LCBlbGVtZW50
KSB7CisgIGludCBiID0gMDsKKyAgRVhQRUNUX0NBTEwoZWxlbWVudCwgQ2FsbCgmYSkpLldpbGxP
bmNlKFJldHVyblJlZihiKSk7CisgIEVYUEVDVF9FUSgmYiwgJmhhc2hfcG9saWN5X3RyYWl0czxQ
b2xpY3lXaXRob3V0T3B0aW9uYWxPcHM+OjplbGVtZW50KCZhKSk7Cit9CisKK1RFU1RfRihUZXN0
LCBhcHBseSkgeworICBFWFBFQ1RfQ0FMTChhcHBseSwgQ2FsbCg0MikpLldpbGxPbmNlKFJldHVy
bigxMzM3KSk7CisgIEVYUEVDVF9FUSgxMzM3LCAoaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeVdp
dGhvdXRPcHRpb25hbE9wcz46OmFwcGx5KDQyKSkpOworfQorCitURVNUX0YoVGVzdCwgdmFsdWUp
IHsKKyAgaW50IGIgPSAwOworICBFWFBFQ1RfQ0FMTCh2YWx1ZSwgQ2FsbCgmYSkpLldpbGxPbmNl
KFJldHVyblJlZihiKSk7CisgIEVYUEVDVF9FUSgmYiwgJmhhc2hfcG9saWN5X3RyYWl0czxQb2xp
Y3lXaXRob3V0T3B0aW9uYWxPcHM+Ojp2YWx1ZSgmYSkpOworfQorCitURVNUX0YoVGVzdCwgd2l0
aG91dF90cmFuc2ZlcikgeworICBpbnQgYiA9IDQyOworICBFWFBFQ1RfQ0FMTChlbGVtZW50LCBD
YWxsKCZiKSkuV2lsbE9uY2UoOjp0ZXN0aW5nOjpSZXR1cm5SZWYoYikpOworICBFWFBFQ1RfQ0FM
TChjb25zdHJ1Y3QsIENhbGwoJmFsbG9jLCAmYSwgYikpOworICBFWFBFQ1RfQ0FMTChkZXN0cm95
LCBDYWxsKCZhbGxvYywgJmIpKTsKKyAgaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeVdpdGhvdXRP
cHRpb25hbE9wcz46OnRyYW5zZmVyKCZhbGxvYywgJmEsICZiKTsKK30KKworVEVTVF9GKFRlc3Qs
IHdpdGhfdHJhbnNmZXIpIHsKKyAgaW50IGIgPSA0MjsKKyAgRVhQRUNUX0NBTEwodHJhbnNmZXIs
IENhbGwoJmFsbG9jLCAmYSwgJmIpKTsKKyAgaGFzaF9wb2xpY3lfdHJhaXRzPFBvbGljeVdpdGhP
cHRpb25hbE9wcz46OnRyYW5zZmVyKCZhbGxvYywgJmEsICZiKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZV9kZWJ1
Zy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2h0YWJsZV9kZWJ1Zy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMzYmQ2NWM5YzRlYzUyZDVmNGE3OTZmNzZiMThkYmNkYTcyOTJiMzQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnLmgKQEAgLTAs
MCArMSwxMDggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8gVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIEFQSXMgdG8gZGVidWcgdGhlIHByb2JpbmcgYmVoYXZp
b3Igb2YgaGFzaCB0YWJsZXMuCisvLworLy8gSW4gZ2VuZXJhbCwgdGhlIHByb2JpbmcgYmVoYXZp
b3IgaXMgYSBibGFjayBib3ggZm9yIHVzZXJzIGFuZCBvbmx5IHRoZQorLy8gc2lkZSBlZmZlY3Rz
IGNhbiBiZSBtZWFzdXJlZCBpbiB0aGUgZm9ybSBvZiBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlcy4K
Ky8vIFRoZXNlIEFQSXMgZ2l2ZSBhIGdsaW1wc2Ugb24gdGhlIGFjdHVhbCBiZWhhdmlvciBvZiB0
aGUgcHJvYmluZyBhbGdvcml0aG1zIGluCisvLyB0aGVzZSBoYXNodGFibGVzIGdpdmVuIGEgc3Bl
Y2lmaWVkIGhhc2ggZnVuY3Rpb24gYW5kIGEgc2V0IG9mIGVsZW1lbnRzLgorLy8KKy8vIFRoZSBw
cm9iZSBjb3VudCBkaXN0cmlidXRpb24gY2FuIGJlIHVzZWQgdG8gYXNzZXNzIHRoZSBxdWFsaXR5
IG9mIHRoZSBoYXNoCisvLyBmdW5jdGlvbiBmb3IgdGhhdCBwYXJ0aWN1bGFyIGhhc2ggdGFibGUu
IE5vdGUgdGhhdCBhIGhhc2ggZnVuY3Rpb24gdGhhdAorLy8gcGVyZm9ybXMgd2VsbCBpbiBvbmUg
aGFzaCB0YWJsZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBuZWNlc3NhcmlseSBwZXJmb3Jtcwor
Ly8gd2VsbCBpbiBhIGRpZmZlcmVudCBvbmUuCisvLworLy8gVGhpcyBsaWJyYXJ5IHN1cHBvcnRz
IHN0ZDo6dW5vcmRlcmVkX3tzZXQsbWFwfSwgZGVuc2VfaGFzaF97c2V0LG1hcH0gYW5kCisvLyBh
YnNsOjp7ZmxhdCxub2RlLHN0cmluZ31faGFzaF97c2V0LG1hcH0uCisKKyNpZm5kZWYgQUJTTF9D
T05UQUlORVJfSU5URVJOQUxfSEFTSFRBQkxFX0RFQlVHX0hfCisjZGVmaW5lIEFCU0xfQ09OVEFJ
TkVSX0lOVEVSTkFMX0hBU0hUQUJMRV9ERUJVR19IXworCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNp
bmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dmVj
dG9yPgorCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVn
X2hvb2tzLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJu
YWwgeworCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcHJvYmVzIHJlcXVpcmVkIHRvIGxvb2t1
cCBga2V5YC4gIFJldHVybnMgMCBmb3IgYQorLy8gc2VhcmNoIHdpdGggbm8gY29sbGlzaW9ucy4g
IEhpZ2hlciB2YWx1ZXMgbWVhbiBtb3JlIGhhc2ggY29sbGlzaW9ucyBvY2N1cnJlZDsKKy8vIGhv
d2V2ZXIsIHRoZSBleGFjdCBtZWFuaW5nIG9mIHRoaXMgbnVtYmVyIHZhcmllcyBhY2NvcmRpbmcg
dG8gdGhlIGNvbnRhaW5lcgorLy8gdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDPgorc2l6ZV90
IEdldEhhc2h0YWJsZURlYnVnTnVtUHJvYmVzKAorICAgIGNvbnN0IEMmIGMsIGNvbnN0IHR5cGVu
YW1lIEM6OmtleV90eXBlJiBrZXkpIHsKKyAgcmV0dXJuIGFic2w6OmNvbnRhaW5lcl9pbnRlcm5h
bDo6aGFzaHRhYmxlX2RlYnVnX2ludGVybmFsOjoKKyAgICAgIEhhc2h0YWJsZURlYnVnQWNjZXNz
PEM+OjpHZXROdW1Qcm9iZXMoYywga2V5KTsKK30KKworLy8gR2V0cyBhIGhpc3RvZ3JhbSBvZiB0
aGUgbnVtYmVyIG9mIHByb2JlcyBmb3IgZWFjaCBlbGVtZW50cyBpbiB0aGUgY29udGFpbmVyLgor
Ly8gVGhlIHN1bSBvZiBhbGwgdGhlIHZhbHVlcyBpbiB0aGUgdmVjdG9yIGlzIGVxdWFsIHRvIGNv
bnRhaW5lci5zaXplKCkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3N0ZDo6dmVjdG9yPHNpemVf
dD4gR2V0SGFzaHRhYmxlRGVidWdOdW1Qcm9iZXNIaXN0b2dyYW0oY29uc3QgQyYgY29udGFpbmVy
KSB7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gdjsKKyAgZm9yIChhdXRvIGl0ID0gY29udGFpbmVy
LmJlZ2luKCk7IGl0ICE9IGNvbnRhaW5lci5lbmQoKTsgKytpdCkgeworICAgIHNpemVfdCBudW1f
cHJvYmVzID0gR2V0SGFzaHRhYmxlRGVidWdOdW1Qcm9iZXMoCisgICAgICAgIGNvbnRhaW5lciwK
KyAgICAgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNodGFibGVfZGVidWdfaW50ZXJu
YWw6OkdldEtleTxDPigqaXQsIDApKTsKKyAgICB2LnJlc2l6ZShzdGQ6Om1heCh2LnNpemUoKSwg
bnVtX3Byb2JlcyArIDEpKTsKKyAgICB2W251bV9wcm9iZXNdKys7CisgIH0KKyAgcmV0dXJuIHY7
Cit9CisKK3N0cnVjdCBIYXNodGFibGVEZWJ1Z1Byb2JlU3VtbWFyeSB7CisgIHNpemVfdCB0b3Rh
bF9lbGVtZW50czsKKyAgc2l6ZV90IHRvdGFsX251bV9wcm9iZXM7CisgIGRvdWJsZSBtZWFuOwor
fTsKKworLy8gR2V0cyBhIHN1bW1hcnkgb2YgdGhlIHByb2JlIGNvdW50IGRpc3RyaWJ1dGlvbiBm
b3IgdGhlIGVsZW1lbnRzIGluIHRoZQorLy8gY29udGFpbmVyLgordGVtcGxhdGUgPHR5cGVuYW1l
IEM+CitIYXNodGFibGVEZWJ1Z1Byb2JlU3VtbWFyeSBHZXRIYXNodGFibGVEZWJ1Z1Byb2JlU3Vt
bWFyeShjb25zdCBDJiBjb250YWluZXIpIHsKKyAgYXV0byBwcm9iZXMgPSBHZXRIYXNodGFibGVE
ZWJ1Z051bVByb2Jlc0hpc3RvZ3JhbShjb250YWluZXIpOworICBIYXNodGFibGVEZWJ1Z1Byb2Jl
U3VtbWFyeSBzdW1tYXJ5ID0ge307CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvYmVzLnNp
emUoKTsgKytpKSB7CisgICAgc3VtbWFyeS50b3RhbF9lbGVtZW50cyArPSBwcm9iZXNbaV07Cisg
ICAgc3VtbWFyeS50b3RhbF9udW1fcHJvYmVzICs9IHByb2Jlc1tpXSAqIGk7CisgIH0KKyAgc3Vt
bWFyeS5tZWFuID0gMS4wICogc3VtbWFyeS50b3RhbF9udW1fcHJvYmVzIC8gc3VtbWFyeS50b3Rh
bF9lbGVtZW50czsKKyAgcmV0dXJuIHN1bW1hcnk7Cit9CisKKy8vIFJldHVybnMgdGhlIG51bWJl
ciBvZiBieXRlcyByZXF1ZXN0ZWQgZnJvbSB0aGUgYWxsb2NhdG9yIGJ5IHRoZSBjb250YWluZXIK
Ky8vIGFuZCBub3QgZnJlZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3NpemVfdCBBbGxvY2F0
ZWRCeXRlU2l6ZShjb25zdCBDJiBjKSB7CisgIHJldHVybiBhYnNsOjpjb250YWluZXJfaW50ZXJu
YWw6Omhhc2h0YWJsZV9kZWJ1Z19pbnRlcm5hbDo6CisgICAgICBIYXNodGFibGVEZWJ1Z0FjY2Vz
czxDPjo6QWxsb2NhdGVkQnl0ZVNpemUoYyk7Cit9CisKKy8vIFJldHVybnMgYSB0aWdodCBsb3dl
ciBib3VuZCBmb3IgQWxsb2NhdGVkQnl0ZVNpemUoYykgd2hlcmUgYGNgIGlzIG9mIHR5cGUgYENg
CisvLyBhbmQgYGMuc2l6ZSgpYCBpcyBlcXVhbCB0byBgbnVtX2VsZW1lbnRzYC4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBDPgorc2l6ZV90IExvd2VyQm91bmRBbGxvY2F0ZWRCeXRlU2l6ZShzaXplX3Qg
bnVtX2VsZW1lbnRzKSB7CisgIHJldHVybiBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6Omhhc2h0
YWJsZV9kZWJ1Z19pbnRlcm5hbDo6CisgICAgICBIYXNodGFibGVEZWJ1Z0FjY2VzczxDPjo6TG93
ZXJCb3VuZEFsbG9jYXRlZEJ5dGVTaXplKG51bV9lbGVtZW50cyk7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAg
Ly8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfSEFTSFRBQkxFX0RFQlVHX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnX2hvb2tzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvaGFzaHRhYmxlX2RlYnVnX2hvb2tzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGYyMTk3MjZiZWUwMWZlOTdhOGYxMGUzMzA2NDk0ODY4MDk0ZTkyYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWdfaG9va3MuaApAQCAt
MCwwICsxLDgxIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8K
Ky8vIFByb3ZpZGVzIHRoZSBpbnRlcm5hbCBBUEkgZm9yIGhhc2h0YWJsZV9kZWJ1Zy5oLgorCisj
aWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0hBU0hUQUJMRV9ERUJVR19IT09LU19IXwor
I2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9IQVNIVEFCTEVfREVCVUdfSE9PS1NfSF8K
KworI2luY2x1ZGUgPGNzdGRkZWY+CisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dmVjdG9yPgorCituYW1lc3BhY2UgYWJzbCB7CituYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSBoYXNodGFibGVfZGVidWdfaW50
ZXJuYWwgeworCisvLyBJZiBpdCBpcyBhIG1hcCwgY2FsbCBnZXQ8MD4oKS4KK3VzaW5nIHN0ZDo6
Z2V0OwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgVDo6bWFwcGVk
X3R5cGU+CithdXRvIEdldEtleShjb25zdCB0eXBlbmFtZSBUOjp2YWx1ZV90eXBlJiBwYWlyLCBp
bnQpIC0+IGRlY2x0eXBlKGdldDwwPihwYWlyKSkgeworICByZXR1cm4gZ2V0PDA+KHBhaXIpOwor
fQorCisvLyBJZiBpdCBpcyBub3QgYSBtYXAsIHJldHVybiB0aGUgdmFsdWUgZGlyZWN0bHkuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IHR5cGVuYW1lIFQ6OmtleV90eXBlJiBHZXRLZXko
Y29uc3QgdHlwZW5hbWUgVDo6a2V5X3R5cGUmIGtleSwgY2hhcikgeworICByZXR1cm4ga2V5Owor
fQorCisvLyBDb250YWluZXJzIHNob3VsZCBzcGVjaWFsaXplIHRoaXMgdG8gcHJvdmlkZSBkZWJ1
ZyBpbmZvcm1hdGlvbiBmb3IgdGhhdAorLy8gY29udGFpbmVyLgordGVtcGxhdGUgPGNsYXNzIENv
bnRhaW5lciwgdHlwZW5hbWUgRW5hYmxlciA9IHZvaWQ+CitzdHJ1Y3QgSGFzaHRhYmxlRGVidWdB
Y2Nlc3MgeworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcHJvYmVzIHJlcXVpcmVkIHRvIGZp
bmQgYGtleWAgaW4gYGNgLiAgVGhlICJudW1iZXIgb2YKKyAgLy8gcHJvYmVzIiBpcyBhIGNvbmNl
cHQgdGhhdCBjYW4gdmFyeSBieSBjb250YWluZXIuICBJbXBsZW1lbnRhdGlvbnMgc2hvdWxkCisg
IC8vIHJldHVybiAwIHdoZW4gYGtleWAgd2FzIGZvdW5kIGluIHRoZSBtaW5pbXVtIG51bWJlciBv
ZiBvcGVyYXRpb25zIGFuZAorICAvLyBzaG91bGQgaW5jcmVtZW50IHRoZSByZXN1bHQgZm9yIGVh
Y2ggbm9uLXRyaXZpYWwgb3BlcmF0aW9uIHJlcXVpcmVkIHRvIGZpbmQKKyAgLy8gYGtleWAuCisg
IC8vCisgIC8vIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHVzZXMgdGhlIGJ1Y2tldCBhcGkg
ZnJvbSB0aGUgc3RhbmRhcmQgYW5kIHRodXMKKyAgLy8gd29ya3MgZm9yIGBzdGQ6OnVub3JkZXJl
ZF8qYCBjb250YWluZXJzLgorICBzdGF0aWMgc2l6ZV90IEdldE51bVByb2Jlcyhjb25zdCBDb250
YWluZXImIGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIENv
bnRhaW5lcjo6a2V5X3R5cGUmIGtleSkgeworICAgIGlmICghYy5idWNrZXRfY291bnQoKSkgcmV0
dXJuIHt9OworICAgIHNpemVfdCBudW1fcHJvYmVzID0gMDsKKyAgICBzaXplX3QgYnVja2V0ID0g
Yy5idWNrZXQoa2V5KTsKKyAgICBmb3IgKGF1dG8gaXQgPSBjLmJlZ2luKGJ1Y2tldCksIGUgPSBj
LmVuZChidWNrZXQpOzsgKytpdCwgKytudW1fcHJvYmVzKSB7CisgICAgICBpZiAoaXQgPT0gZSkg
cmV0dXJuIG51bV9wcm9iZXM7CisgICAgICBpZiAoYy5rZXlfZXEoKShrZXksIEdldEtleTxDb250
YWluZXI+KCppdCwgMCkpKSByZXR1cm4gbnVtX3Byb2JlczsKKyAgICB9CisgIH0KKworICAvLyBS
ZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWVzdGVkIGZyb20gdGhlIGFsbG9jYXRvciBi
eSB0aGUgY29udGFpbmVyCisgIC8vIGFuZCBub3QgZnJlZWQuCisgIC8vCisgIC8vIHN0YXRpYyBz
aXplX3QgQWxsb2NhdGVkQnl0ZVNpemUoY29uc3QgQ29udGFpbmVyJiBjKTsKKworICAvLyBSZXR1
cm5zIGEgdGlnaHQgbG93ZXIgYm91bmQgZm9yIEFsbG9jYXRlZEJ5dGVTaXplKGMpIHdoZXJlIGBj
YCBpcyBvZiB0eXBlCisgIC8vIGBDb250YWluZXJgIGFuZCBgYy5zaXplKClgIGlzIGVxdWFsIHRv
IGBudW1fZWxlbWVudHNgLgorICAvLworICAvLyBzdGF0aWMgc2l6ZV90IExvd2VyQm91bmRBbGxv
Y2F0ZWRCeXRlU2l6ZShzaXplX3QgbnVtX2VsZW1lbnRzKTsKK307CisKK30gIC8vIG5hbWVzcGFj
ZSBoYXNodGFibGVfZGVidWdfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50
ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJf
SU5URVJOQUxfSEFTSFRBQkxFX0RFQlVHX0hPT0tTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvbGF5b3V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbGF5b3V0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjc2YzdkNjdlZTY4ZGNkNTY2ZTE3MDk0ZDQ5NThlMzc0NzU0N2Q5OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXQuaApAQCAt
MCwwICsxLDczMiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1PVElWQVRJT04gQU5EIFRVVE9SSUFMCisv
LworLy8gSWYgeW91IHdhbnQgdG8gcHV0IGluIGEgc2luZ2xlIGhlYXAgYWxsb2NhdGlvbiBOIGRv
dWJsZXMgZm9sbG93ZWQgYnkgTSBpbnRzLAorLy8gaXQncyBlYXN5IGlmIE4gYW5kIE0gYXJlIGtu
b3duIGF0IGNvbXBpbGUgdGltZS4KKy8vCisvLyAgIHN0cnVjdCBTIHsKKy8vICAgICBkb3VibGUg
YVtOXTsKKy8vICAgICBpbnQgYltNXTsKKy8vICAgfTsKKy8vCisvLyAgIFMqIHAgPSBuZXcgUzsK
Ky8vCisvLyBCdXQgd2hhdCBpZiBOIGFuZCBNIGFyZSBrbm93biBvbmx5IGluIHJ1biB0aW1lPyBD
bGFzcyB0ZW1wbGF0ZSBMYXlvdXQgdG8gdGhlCisvLyByZXNjdWUhIEl0J3MgYSBwb3J0YWJsZSBn
ZW5lcmFsaXphdGlvbiBvZiB0aGUgdGVjaG5pcXVlIGtub3duIGFzIHN0cnVjdCBoYWNrLgorLy8K
Ky8vICAgLy8gVGhpcyBvYmplY3Qgd2lsbCB0ZWxsIHVzIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBr
bm93IGFib3V0IHRoZSBtZW1vcnkKKy8vICAgLy8gbGF5b3V0IG9mIGRvdWJsZVtOXSBmb2xsb3dl
ZCBieSBpbnRbTV0uIEl0J3Mgc3RydWN0dXJhbGx5IGlkZW50aWNhbCB0bworLy8gICAvLyBzaXpl
X3RbMl0gdGhhdCBzdG9yZXMgTiBhbmQgTS4gSXQncyB2ZXJ5IGNoZWFwIHRvIGNyZWF0ZS4KKy8v
ICAgY29uc3QgTGF5b3V0PGRvdWJsZSwgaW50PiBsYXlvdXQoTiwgTSk7CisvLworLy8gICAvLyBB
bGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBib3RoIGFycmF5cy4gYEFsbG9jU2l6ZSgpYCB0ZWxs
cyB1cyBob3cgbXVjaAorLy8gICAvLyBtZW1vcnkgaXMgbmVlZGVkLiBXZSBhcmUgZnJlZSB0byB1
c2UgYW55IGFsbG9jYXRpb24gZnVuY3Rpb24gd2Ugd2FudCBhcworLy8gICAvLyBsb25nIGFzIGl0
IHJldHVybnMgYWxpZ25lZCBtZW1vcnkuCisvLyAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBj
aGFyW10+IHAobmV3IHVuc2lnbmVkIGNoYXJbbGF5b3V0LkFsbG9jU2l6ZSgpXSk7CisvLworLy8g
ICAvLyBPYnRhaW4gdGhlIHBvaW50ZXIgdG8gdGhlIGFycmF5IG9mIGRvdWJsZXMuCisvLyAgIC8v
IEVxdWl2YWxlbnQgdG8gYHJlaW50ZXJwcmV0X2Nhc3Q8ZG91YmxlKj4ocC5nZXQoKSlgLgorLy8g
ICAvLworLy8gICAvLyBXZSBjb3VsZCBoYXZlIHdyaXR0ZW4gbGF5b3V0LlBvaW50ZXI8MD4ocCkg
aW5zdGVhZC4gSWYgYWxsIHRoZSB0eXBlcyBhcmUKKy8vICAgLy8gdW5pcXVlIHlvdSBjYW4gdXNl
IGVpdGhlciBmb3JtLCBidXQgaWYgc29tZSB0eXBlcyBhcmUgcmVwZWF0ZWQgeW91IG11c3QKKy8v
ICAgLy8gdXNlIHRoZSBpbmRleCBmb3JtLgorLy8gICBkb3VibGUqIGEgPSBsYXlvdXQuUG9pbnRl
cjxkb3VibGU+KHAuZ2V0KCkpOworLy8KKy8vICAgLy8gT2J0YWluIHRoZSBwb2ludGVyIHRvIHRo
ZSBhcnJheSBvZiBpbnRzLgorLy8gICAvLyBFcXVpdmFsZW50IHRvIGByZWludGVycHJldF9jYXN0
PGludCo+KHAuZ2V0KCkgKyBOICogOClgLgorLy8gICBpbnQqIGIgPSBsYXlvdXQuUG9pbnRlcjxp
bnQ+KHApOworLy8KKy8vIElmIHdlIGFyZSB1bmFibGUgdG8gc3BlY2lmeSBzaXplcyBvZiBhbGwg
ZmllbGRzLCB3ZSBjYW4gcGFzcyBhcyBtYW55IHNpemVzIGFzCisvLyB3ZSBjYW4gdG8gYFBhcnRp
YWwoKWAuIEluIHJldHVybiwgaXQnbGwgYWxsb3cgdXMgdG8gYWNjZXNzIHRoZSBmaWVsZHMgd2hv
c2UKKy8vIGxvY2F0aW9ucyBhbmQgc2l6ZXMgY2FuIGJlIGNvbXB1dGVkIGZyb20gdGhlIHByb3Zp
ZGVkIGluZm9ybWF0aW9uLgorLy8gYFBhcnRpYWwoKWAgY29tZXMgaW4gaGFuZHkgd2hlbiB0aGUg
YXJyYXkgc2l6ZXMgYXJlIGVtYmVkZGVkIGludG8gdGhlCisvLyBhbGxvY2F0aW9uLgorLy8KKy8v
ICAgLy8gc2l6ZV90WzFdIGNvbnRhaW5pbmcgTiwgc2l6ZV90WzFdIGNvbnRhaW5pbmcgTSwgZG91
YmxlW05dLCBpbnRbTV0uCisvLyAgIHVzaW5nIEwgPSBMYXlvdXQ8c2l6ZV90LCBzaXplX3QsIGRv
dWJsZSwgaW50PjsKKy8vCisvLyAgIHVuc2lnbmVkIGNoYXIqIEFsbG9jYXRlKHNpemVfdCBuLCBz
aXplX3QgbSkgeworLy8gICAgIGNvbnN0IEwgbGF5b3V0KDEsIDEsIG4sIG0pOworLy8gICAgIHVu
c2lnbmVkIGNoYXIqIHAgPSBuZXcgdW5zaWduZWQgY2hhcltsYXlvdXQuQWxsb2NTaXplKCldOwor
Ly8gICAgICpsYXlvdXQuUG9pbnRlcjwwPihwKSA9IG47CisvLyAgICAgKmxheW91dC5Qb2ludGVy
PDE+KHApID0gbTsKKy8vICAgICByZXR1cm4gcDsKKy8vICAgfQorLy8KKy8vICAgdm9pZCBVc2Uo
dW5zaWduZWQgY2hhciogcCkgeworLy8gICAgIC8vIEZpcnN0LCBleHRyYWN0IE4gYW5kIE0uCisv
LyAgICAgLy8gU3BlY2lmeSB0aGF0IHRoZSBmaXJzdCBhcnJheSBoYXMgb25seSBvbmUgZWxlbWVu
dC4gVXNpbmcgYHByZWZpeGAgd2UKKy8vICAgICAvLyBjYW4gYWNjZXNzIHRoZSBmaXJzdCB0d28g
YXJyYXlzIGJ1dCBub3QgbW9yZS4KKy8vICAgICBjb25zdGV4cHIgYXV0byBwcmVmaXggPSBMOjpQ
YXJ0aWFsKDEpOworLy8gICAgIHNpemVfdCBuID0gKnByZWZpeC5Qb2ludGVyPDA+KHApOworLy8g
ICAgIHNpemVfdCBtID0gKnByZWZpeC5Qb2ludGVyPDE+KHApOworLy8KKy8vICAgICAvLyBOb3cg
d2UgY2FuIGdldCBwb2ludGVycyB0byB0aGUgcGF5bG9hZC4KKy8vICAgICBjb25zdCBMIGxheW91
dCgxLCAxLCBuLCBtKTsKKy8vICAgICBkb3VibGUqIGEgPSBsYXlvdXQuUG9pbnRlcjxkb3VibGU+
KHApOworLy8gICAgIGludCogYiA9IGxheW91dC5Qb2ludGVyPGludD4ocCk7CisvLyAgIH0KKy8v
CisvLyBUaGUgbGF5b3V0IHdlIHVzZWQgYWJvdmUgY29tYmluZXMgZml4ZWQtc2l6ZSB3aXRoIGR5
bmFtaWNhbGx5LXNpemVkIGZpZWxkcy4KKy8vIFRoaXMgaXMgcXVpdGUgY29tbW9uLiBMYXlvdXQg
aXMgb3B0aW1pemVkIGZvciB0aGlzIHVzZSBjYXNlIGFuZCBnZW5lcmF0ZXMKKy8vIG9wdGltYWwg
Y29kZS4gQWxsIGNvbXB1dGF0aW9ucyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgYXQgY29tcGlsZSB0
aW1lIGFyZQorLy8gaW5kZWVkIHBlcmZvcm1lZCBhdCBjb21waWxlIHRpbWUuCisvLworLy8gRWZm
aWNpZW5jeSB0aXA6IFRoZSBvcmRlciBvZiBmaWVsZHMgbWF0dGVycy4gSW4gYExheW91dDxUMSwg
Li4uLCBUTj5gIHRyeSB0bworLy8gZW5zdXJlIHRoYXQgYGFsaWdub2YoVDEpID49IC4uLiA+PSBh
bGlnbm9mKFROKWAuIFRoaXMgd2F5IHlvdSdsbCBoYXZlIG5vCisvLyBwYWRkaW5nIGluIGJldHdl
ZW4gYXJyYXlzLgorLy8KKy8vIFlvdSBjYW4gbWFudWFsbHkgb3ZlcnJpZGUgdGhlIGFsaWdubWVu
dCBvZiBhbiBhcnJheSBieSB3cmFwcGluZyB0aGUgdHlwZSBpbgorLy8gYEFsaWduZWQ8VCwgTj5g
LiBgTGF5b3V0PC4uLiwgQWxpZ25lZDxULCBOPiwgLi4uPmAgaGFzIGV4YWN0bHkgdGhlIHNhbWUg
QVBJCisvLyBhbmQgYmVoYXZpb3IgYXMgYExheW91dDwuLi4sIFQsIC4uLj5gIGV4Y2VwdCB0aGF0
IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZQorLy8gYXJyYXkgb2YgYFRgIGlzIGFsaWduZWQgdG8g
YE5gICh0aGUgcmVzdCBvZiB0aGUgZWxlbWVudHMgZm9sbG93IHdpdGhvdXQKKy8vIHBhZGRpbmcp
LiBgTmAgY2Fubm90IGJlIGxlc3MgdGhhbiBgYWxpZ25vZihUKWAuCisvLworLy8gYEFsbG9jU2l6
ZSgpYCBhbmQgYFBvaW50ZXIoKWAgYXJlIHRoZSBtb3N0IGJhc2ljIG1ldGhvZHMgZm9yIGRlYWxp
bmcgd2l0aAorLy8gbWVtb3J5IGxheW91dHMuIENoZWNrIG91dCB0aGUgcmVmZXJlbmNlIG9yIGNv
ZGUgYmVsb3cgdG8gZGlzY292ZXIgbW9yZS4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFWEFNUExFCisvLworLy8gICAvLyBJbW11dGFibGUgbW92ZS1vbmx5IHN0cmluZyB3aXRo
IHNpemVvZiBlcXVhbCB0byBzaXplb2Yodm9pZCopLiBUaGUKKy8vICAgLy8gc3RyaW5nIHNpemUg
YW5kIHRoZSBjaGFyYWN0ZXJzIGFyZSBrZXB0IGluIHRoZSBzYW1lIGhlYXAgYWxsb2NhdGlvbi4K
Ky8vICAgY2xhc3MgQ29tcGFjdFN0cmluZyB7CisvLyAgICBwdWJsaWM6CisvLyAgICAgQ29tcGFj
dFN0cmluZyhjb25zdCBjaGFyKiBzID0gIiIpIHsKKy8vICAgICAgIGNvbnN0IHNpemVfdCBzaXpl
ID0gc3RybGVuKHMpOworLy8gICAgICAgLy8gc2l6ZV90WzFdIGZvbGxvd2VkIGJ5IGNoYXJbc2l6
ZSArIDFdLgorLy8gICAgICAgY29uc3QgTCBsYXlvdXQoMSwgc2l6ZSArIDEpOworLy8gICAgICAg
cF8ucmVzZXQobmV3IHVuc2lnbmVkIGNoYXJbbGF5b3V0LkFsbG9jU2l6ZSgpXSk7CisvLyAgICAg
ICAvLyBJZiBydW5uaW5nIHVuZGVyIEFTQU4sIG1hcmsgdGhlIHBhZGRpbmcgYnl0ZXMsIGlmIGFu
eSwgdG8gY2F0Y2gKKy8vICAgICAgIC8vIG1lbW9yeSBlcnJvcnMuCisvLyAgICAgICBsYXlvdXQu
UG9pc29uUGFkZGluZyhwXy5nZXQoKSk7CisvLyAgICAgICAvLyBTdG9yZSB0aGUgc2l6ZSBpbiB0
aGUgYWxsb2NhdGlvbi4KKy8vICAgICAgICpsYXlvdXQuUG9pbnRlcjxzaXplX3Q+KHBfLmdldCgp
KSA9IHNpemU7CisvLyAgICAgICAvLyBTdG9yZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgYWxsb2Nh
dGlvbi4KKy8vICAgICAgIG1lbWNweShsYXlvdXQuUG9pbnRlcjxjaGFyPihwXy5nZXQoKSksIHMs
IHNpemUgKyAxKTsKKy8vICAgICB9CisvLworLy8gICAgIHNpemVfdCBzaXplKCkgY29uc3Qgewor
Ly8gICAgICAgLy8gRXF1aXZhbGVudCB0byByZWludGVycHJldF9jYXN0PHNpemVfdCY+KCpwKS4K
Ky8vICAgICAgIHJldHVybiAqTDo6UGFydGlhbCgpLlBvaW50ZXI8c2l6ZV90PihwXy5nZXQoKSk7
CisvLyAgICAgfQorLy8KKy8vICAgICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsKKy8vICAg
ICAgIC8vIEVxdWl2YWxlbnQgdG8gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocC5nZXQoKSArIHNp
emVvZihzaXplX3QpKS4KKy8vICAgICAgIC8vIFRoZSBhcmd1bWVudCBpbiBQYXJ0aWFsKDEpIHNw
ZWNpZmllcyB0aGF0IHdlIGhhdmUgc2l6ZV90WzFdIGluIGZyb250CisvLyAgICAgICAvLyBvZiB0
aGUgY2hhcmFjdGVycy4KKy8vICAgICAgIHJldHVybiBMOjpQYXJ0aWFsKDEpLlBvaW50ZXI8Y2hh
cj4ocF8uZ2V0KCkpOworLy8gICAgIH0KKy8vCisvLyAgICBwcml2YXRlOgorLy8gICAgIC8vIE91
ciBoZWFwIGFsbG9jYXRpb24gY29udGFpbnMgYSBzaXplX3QgZm9sbG93ZWQgYnkgYW4gYXJyYXkg
b2YgY2hhcnMuCisvLyAgICAgdXNpbmcgTCA9IExheW91dDxzaXplX3QsIGNoYXI+OworLy8gICAg
IHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IHBfOworLy8gICB9OworLy8KKy8vICAg
aW50IG1haW4oKSB7CisvLyAgICAgQ29tcGFjdFN0cmluZyBzID0gImhlbGxvIjsKKy8vICAgICBh
c3NlcnQocy5zaXplKCkgPT0gNSk7CisvLyAgICAgYXNzZXJ0KHN0cmNtcChzLmNfc3RyKCksICJo
ZWxsbyIpID09IDApOworLy8gICB9CisvLworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRE9DVU1FTlRBVElPTgorLy8KKy8vIFRoZSBpbnRlcmZhY2UgZXhwb3J0ZWQgYnkgdGhpcyBm
aWxlIGNvbnNpc3RzIG9mOgorLy8gLSBjbGFzcyBgTGF5b3V0PD5gIGFuZCBpdHMgcHVibGljIG1l
bWJlcnMuCisvLyAtIFRoZSBwdWJsaWMgbWVtYmVycyBvZiBjbGFzcyBgaW50ZXJuYWxfbGF5b3V0
OjpMYXlvdXRJbXBsPD5gLiBUaGF0IGNsYXNzCisvLyAgIGlzbid0IGludGVuZGVkIHRvIGJlIHVz
ZWQgZGlyZWN0bHksIGFuZCBpdHMgbmFtZSBhbmQgdGVtcGxhdGUgcGFyYW1ldGVyCisvLyAgIGxp
c3QgYXJlIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGJ1dCB0aGUgY2xhc3MgaXRz
ZWxmIHByb3ZpZGVzCisvLyAgIG1vc3Qgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBmaWxl
LiBTZWUgY29tbWVudHMgb24gaXRzIG1lbWJlcnMgZm9yCisvLyAgIGRldGFpbGVkIGRvY3VtZW50
YXRpb24uCisvLworLy8gYExheW91dDxUMSwuLi4gVG4+OjpQYXJ0aWFsKGNvdW50MSwuLi4sIGNv
dW50bSlgICh3aGVyZSBgbWAgPD0gYG5gKSByZXR1cm5zIGEKKy8vIGBMYXlvdXRJbXBsPD5gIG9i
amVjdC4gYExheW91dDxUMSwuLi4sIFRuPiBsYXlvdXQoY291bnQxLC4uLiwgY291bnRuKWAKKy8v
IGNyZWF0ZXMgYSBgTGF5b3V0YCBvYmplY3QsIHdoaWNoIGV4cG9zZXMgdGhlIHNhbWUgZnVuY3Rp
b25hbGl0eSBieSBpbmhlcml0aW5nCisvLyBmcm9tIGBMYXlvdXRJbXBsPD5gLgorCisjaWZuZGVm
IEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX0xBWU9VVF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5F
Ul9JTlRFUk5BTF9MQVlPVVRfSF8KKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0
ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPG9zdHJlYW0+CisjaW5jbHVk
ZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR1cGxlPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2lu
Y2x1ZGUgPHR5cGVpbmZvPgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpZmRlZiBBRERSRVNTX1NB
TklUSVpFUgorI2luY2x1ZGUgPHNhbml0aXplci9hc2FuX2ludGVyZmFjZS5oPgorI2VuZGlmCisK
KyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmlu
Z3Mvc3RyX2NhdC5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvc3Bhbi5oIgorI2luY2x1ZGUgImFi
c2wvdXRpbGl0eS91dGlsaXR5LmgiCisKKyNpZiBkZWZpbmVkKF9fR1hYX1JUVEkpCisjZGVmaW5l
IEFCU0xfSU5URVJOQUxfSEFTX0NYQV9ERU1BTkdMRQorI2VuZGlmCisKKyNpZmRlZiBBQlNMX0lO
VEVSTkFMX0hBU19DWEFfREVNQU5HTEUKKyNpbmNsdWRlIDxjeHhhYmkuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKworLy8gQSB0
eXBlIHdyYXBwZXIgdGhhdCBpbnN0cnVjdHMgYExheW91dGAgdG8gdXNlIHRoZSBzcGVjaWZpYyBh
bGlnbm1lbnQgZm9yIHRoZQorLy8gYXJyYXkuIGBMYXlvdXQ8Li4uLCBBbGlnbmVkPFQsIE4+LCAu
Li4+YCBoYXMgZXhhY3RseSB0aGUgc2FtZSBBUEkKKy8vIGFuZCBiZWhhdmlvciBhcyBgTGF5b3V0
PC4uLiwgVCwgLi4uPmAgZXhjZXB0IHRoYXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlCisvLyBh
cnJheSBvZiBgVGAgaXMgYWxpZ25lZCB0byBgTmAgKHRoZSByZXN0IG9mIHRoZSBlbGVtZW50cyBm
b2xsb3cgd2l0aG91dAorLy8gcGFkZGluZykuCisvLworLy8gUmVxdWlyZXM6IGBOID49IGFsaWdu
b2YoVClgIGFuZCBgTmAgaXMgYSBwb3dlciBvZiAyLgordGVtcGxhdGUgPGNsYXNzIFQsIHNpemVf
dCBOPgorc3RydWN0IEFsaWduZWQ7CisKK25hbWVzcGFjZSBpbnRlcm5hbF9sYXlvdXQgeworCit0
ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBOb3RBbGlnbmVkIHt9OworCit0ZW1wbGF0ZSA8Y2xh
c3MgVCwgc2l6ZV90IE4+CitzdHJ1Y3QgTm90QWxpZ25lZDxjb25zdCBBbGlnbmVkPFQsIE4+PiB7
CisgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09IDAsICJBbGlnbmVkPFQsIE4+IGNhbm5vdCBi
ZSBjb25zdC1xdWFsaWZpZWQiKTsKK307CisKK3RlbXBsYXRlIDxzaXplX3Q+Cit1c2luZyBJbnRU
b1NpemUgPSBzaXplX3Q7CisKK3RlbXBsYXRlIDxjbGFzcz4KK3VzaW5nIFR5cGVUb1NpemUgPSBz
aXplX3Q7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IFR5cGUgOiBOb3RBbGlnbmVkPFQ+
IHsKKyAgdXNpbmcgdHlwZSA9IFQ7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+
CitzdHJ1Y3QgVHlwZTxBbGlnbmVkPFQsIE4+PiB7CisgIHVzaW5nIHR5cGUgPSBUOworfTsKKwor
dGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgU2l6ZU9mIDogTm90QWxpZ25lZDxUPiwgc3RkOjpp
bnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIHNpemVvZihUKT4ge307CisKK3RlbXBsYXRlIDxjbGFz
cyBULCBzaXplX3QgTj4KK3N0cnVjdCBTaXplT2Y8QWxpZ25lZDxULCBOPj4gOiBzdGQ6OmludGVn
cmFsX2NvbnN0YW50PHNpemVfdCwgc2l6ZW9mKFQpPiB7fTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+
CitzdHJ1Y3QgQWxpZ25PZiA6IE5vdEFsaWduZWQ8VD4sIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8
c2l6ZV90LCBhbGlnbm9mKFQpPiB7fTsKKwordGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgor
c3RydWN0IEFsaWduT2Y8QWxpZ25lZDxULCBOPj4gOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNp
emVfdCwgTj4geworICBzdGF0aWNfYXNzZXJ0KE4gJSBhbGlnbm9mKFQpID09IDAsCisgICAgICAg
ICAgICAgICAgIkN1c3RvbSBhbGlnbm1lbnQgY2FuJ3QgYmUgbG93ZXIgdGhhbiB0aGUgdHlwZSdz
IGFsaWdubWVudCIpOworfTsKKworLy8gRG9lcyBgVHMuLi5gIGNvbnRhaW4gYFRgPwordGVtcGxh
dGUgPGNsYXNzIFQsIGNsYXNzLi4uIFRzPgordXNpbmcgQ29udGFpbnMgPSBhYnNsOjpkaXNqdW5j
dGlvbjxzdGQ6OmlzX3NhbWU8VCwgVHM+Li4uPjsKKwordGVtcGxhdGUgPGNsYXNzIEZyb20sIGNs
YXNzIFRvPgordXNpbmcgQ29weUNvbnN0ID0KKyAgICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFs
PHN0ZDo6aXNfY29uc3Q8RnJvbT46OnZhbHVlLCBjb25zdCBUbywgVG8+Ojp0eXBlOworCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4KK3VzaW5nIFNsaWNlVHlwZSA9IGFic2w6OlNwYW48VD47CisKKy8vIFRo
aXMgbmFtZXNwYWNlIGNvbnRhaW5zIG5vIHR5cGVzLiBJdCBwcmV2ZW50cyBmdW5jdGlvbnMgZGVm
aW5lZCBpbiBpdCBmcm9tCisvLyBiZWluZyBmb3VuZCBieSBBREwuCituYW1lc3BhY2UgYWRsX2Jh
cnJpZXIgeworCit0ZW1wbGF0ZSA8Y2xhc3MgTmVlZGxlLCBjbGFzcy4uLiBUcz4KK2NvbnN0ZXhw
ciBzaXplX3QgRmluZChOZWVkbGUsIE5lZWRsZSwgVHMuLi4pIHsKKyAgc3RhdGljX2Fzc2VydCgh
Q29udGFpbnM8TmVlZGxlLCBUcy4uLj4oKSwgIkR1cGxpY2F0ZSBlbGVtZW50IHR5cGUiKTsKKyAg
cmV0dXJuIDA7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBOZWVkbGUsIGNsYXNzIFQsIGNsYXNzLi4u
IFRzPgorY29uc3RleHByIHNpemVfdCBGaW5kKE5lZWRsZSwgVCwgVHMuLi4pIHsKKyAgcmV0dXJu
IGFkbF9iYXJyaWVyOjpGaW5kKE5lZWRsZSgpLCBUcygpLi4uKSArIDE7Cit9CisKK2NvbnN0ZXhw
ciBib29sIElzUG93MihzaXplX3QgbikgeyByZXR1cm4gIShuICYgKG4gLSAxKSk7IH0KKworLy8g
UmV0dXJucyBgcSAqIG1gIGZvciB0aGUgc21hbGxlc3QgYHFgIHN1Y2ggdGhhdCBgcSAqIG0gPj0g
bmAuCisvLyBSZXF1aXJlczogYG1gIGlzIGEgcG93ZXIgb2YgdHdvLiBJdCdzIGVuZm9yY2VkIGJ5
IElzTGVnYWxFbGVtZW50VHlwZSBiZWxvdy4KK2NvbnN0ZXhwciBzaXplX3QgQWxpZ24oc2l6ZV90
IG4sIHNpemVfdCBtKSB7IHJldHVybiAobiArIG0gLSAxKSAmIH4obSAtIDEpOyB9CisKK2NvbnN0
ZXhwciBzaXplX3QgTWluKHNpemVfdCBhLCBzaXplX3QgYikgeyByZXR1cm4gYiA8IGEgPyBiIDog
YTsgfQorCitjb25zdGV4cHIgc2l6ZV90IE1heChzaXplX3QgYSkgeyByZXR1cm4gYTsgfQorCit0
ZW1wbGF0ZSA8Y2xhc3MuLi4gVHM+Citjb25zdGV4cHIgc2l6ZV90IE1heChzaXplX3QgYSwgc2l6
ZV90IGIsIFRzLi4uIHJlc3QpIHsKKyAgcmV0dXJuIGFkbF9iYXJyaWVyOjpNYXgoYiA8IGEgPyBh
IDogYiwgcmVzdC4uLik7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RkOjpzdHJpbmcgVHlw
ZU5hbWUoKSB7CisgIHN0ZDo6c3RyaW5nIG91dDsKKyAgaW50IHN0YXR1cyA9IDA7CisgIGNoYXIq
IGRlbWFuZ2xlZCA9IG51bGxwdHI7CisjaWZkZWYgQUJTTF9JTlRFUk5BTF9IQVNfQ1hBX0RFTUFO
R0xFCisgIGRlbWFuZ2xlZCA9IGFiaTo6X19jeGFfZGVtYW5nbGUodHlwZWlkKFQpLm5hbWUoKSwg
bnVsbHB0ciwgbnVsbHB0ciwgJnN0YXR1cyk7CisjZW5kaWYKKyAgaWYgKHN0YXR1cyA9PSAwICYm
IGRlbWFuZ2xlZCAhPSBudWxscHRyKSB7ICAvLyBEZW1hbmdsaW5nIHN1Y2NlZWVkZWQuCisgICAg
YWJzbDo6U3RyQXBwZW5kKCZvdXQsICI8IiwgZGVtYW5nbGVkLCAiPiIpOworICAgIGZyZWUoZGVt
YW5nbGVkKTsKKyAgfSBlbHNlIHsKKyNpZiBkZWZpbmVkKF9fR1hYX1JUVEkpIHx8IGRlZmluZWQo
X0NQUFJUVEkpCisgICAgYWJzbDo6U3RyQXBwZW5kKCZvdXQsICI8IiwgdHlwZWlkKFQpLm5hbWUo
KSwgIj4iKTsKKyNlbmRpZgorICB9CisgIHJldHVybiBvdXQ7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBhZGxfYmFycmllcgorCit0ZW1wbGF0ZSA8Ym9vbCBDPgordXNpbmcgRW5hYmxlSWYgPSB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxDLCBpbnQ+Ojp0eXBlOworCisvLyBDYW4gYFRgIGJlIGEgdGVt
cGxhdGUgYXJndW1lbnQgb2YgYExheW91dGA/Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3VzaW5nIElz
TGVnYWxFbGVtZW50VHlwZSA9IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8CisgICAgYm9vbCwgIXN0
ZDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc192b2xhdGlsZTxUPjo6dmFsdWUg
JiYKKyAgICAgICAgICAgICAgIXN0ZDo6aXNfcmVmZXJlbmNlPHR5cGVuYW1lIFR5cGU8VD46OnR5
cGU+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAhc3RkOjppc192b2xhdGlsZTx0eXBlbmFtZSBU
eXBlPFQ+Ojp0eXBlPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgYWRsX2JhcnJpZXI6OklzUG93
MihBbGlnbk9mPFQ+Ojp2YWx1ZSk+OworCit0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudHMsIGNsYXNz
IFNpemVTZXEsIGNsYXNzIE9mZnNldFNlcT4KK2NsYXNzIExheW91dEltcGw7CisKKy8vIFB1Ymxp
YyBiYXNlIGNsYXNzIG9mIGBMYXlvdXRgIGFuZCB0aGUgcmVzdWx0IHR5cGUgb2YgYExheW91dDo6
UGFydGlhbCgpYC4KKy8vCisvLyBgRWxlbWVudHMuLi5gIGNvbnRhaW5zIGFsbCB0ZW1wbGF0ZSBh
cmd1bWVudHMgb2YgYExheW91dGAgdGhhdCBjcmVhdGVkIHRoaXMKKy8vIGluc3RhbmNlLgorLy8K
Ky8vIGBTaXplU2VxLi4uYCBpcyBgWzAsIE51bVNpemVzKWAgd2hlcmUgYE51bVNpemVzYCBpcyB0
aGUgbnVtYmVyIG9mIGFyZ3VtZW50cworLy8gcGFzc2VkIHRvIGBMYXlvdXQ6OlBhcnRpYWwoKWAg
b3IgYExheW91dDo6TGF5b3V0KClgLgorLy8KKy8vIGBPZmZzZXRTZXEuLi5gIGlzIGBbMCwgTnVt
T2Zmc2V0cylgIHdoZXJlIGBOdW1PZmZzZXRzYCBpcworLy8gYE1pbihzaXplb2YuLi4oRWxlbWVu
dHMpLCBOdW1TaXplcyArIDEpYCAodGhlIG51bWJlciBvZiBhcnJheXMgZm9yIHdoaWNoIHdlCisv
LyBjYW4gY29tcHV0ZSBvZmZzZXRzKS4KK3RlbXBsYXRlIDxjbGFzcy4uLiBFbGVtZW50cywgc2l6
ZV90Li4uIFNpemVTZXEsIHNpemVfdC4uLiBPZmZzZXRTZXE+CitjbGFzcyBMYXlvdXRJbXBsPHN0
ZDo6dHVwbGU8RWxlbWVudHMuLi4+LCBhYnNsOjppbmRleF9zZXF1ZW5jZTxTaXplU2VxLi4uPiwK
KyAgICAgICAgICAgICAgICAgYWJzbDo6aW5kZXhfc2VxdWVuY2U8T2Zmc2V0U2VxLi4uPj4gewor
IHByaXZhdGU6CisgIHN0YXRpY19hc3NlcnQoc2l6ZW9mLi4uKEVsZW1lbnRzKSA+IDAsICJBdCBs
ZWFzdCBvbmUgZmllbGQgaXMgcmVxdWlyZWQiKTsKKyAgc3RhdGljX2Fzc2VydChhYnNsOjpjb25q
dW5jdGlvbjxJc0xlZ2FsRWxlbWVudFR5cGU8RWxlbWVudHM+Li4uPjo6dmFsdWUsCisgICAgICAg
ICAgICAgICAgIkludmFsaWQgZWxlbWVudCB0eXBlIChzZWUgSXNMZWdhbEVsZW1lbnRUeXBlKSIp
OworCisgIGVudW0geworICAgIE51bVR5cGVzID0gc2l6ZW9mLi4uKEVsZW1lbnRzKSwKKyAgICBO
dW1TaXplcyA9IHNpemVvZi4uLihTaXplU2VxKSwKKyAgICBOdW1PZmZzZXRzID0gc2l6ZW9mLi4u
KE9mZnNldFNlcSksCisgIH07CisKKyAgLy8gVGhlc2UgYXJlIGd1YXJhbnRlZWQgYnkgYExheW91
dGAuCisgIHN0YXRpY19hc3NlcnQoTnVtT2Zmc2V0cyA9PSBhZGxfYmFycmllcjo6TWluKE51bVR5
cGVzLCBOdW1TaXplcyArIDEpLAorICAgICAgICAgICAgICAgICJJbnRlcm5hbCBlcnJvciIpOwor
ICBzdGF0aWNfYXNzZXJ0KE51bVR5cGVzID4gMCwgIkludGVybmFsIGVycm9yIik7CisKKyAgLy8g
UmV0dXJucyB0aGUgaW5kZXggb2YgYFRgIGluIGBFbGVtZW50cy4uLmAuIFJlc3VsdHMgaW4gYSBj
b21waWxhdGlvbiBlcnJvcgorICAvLyBpZiBgRWxlbWVudHMuLi5gIGRvZXNuJ3QgY29udGFpbiBl
eGFjdGx5IG9uZSBpbnN0YW5jZSBvZiBgVGAuCisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBFbGVtZW50SW5kZXgoKSB7CisgICAgc3RhdGljX2Fzc2VydChD
b250YWluczxUeXBlPFQ+LCBUeXBlPHR5cGVuYW1lIFR5cGU8RWxlbWVudHM+Ojp0eXBlPi4uLj4o
KSwKKyAgICAgICAgICAgICAgICAgICJUeXBlIG5vdCBmb3VuZCIpOworICAgIHJldHVybiBhZGxf
YmFycmllcjo6RmluZChUeXBlPFQ+KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5
cGU8dHlwZW5hbWUgVHlwZTxFbGVtZW50cz46OnR5cGU+KCkuLi4pOworICB9CisKKyAgdGVtcGxh
dGUgPHNpemVfdCBOPgorICB1c2luZyBFbGVtZW50QWxpZ25tZW50ID0KKyAgICAgIEFsaWduT2Y8
dHlwZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PE4sIHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+Pjo6
dHlwZT47CisKKyBwdWJsaWM6CisgIC8vIEVsZW1lbnQgdHlwZXMgb2YgYWxsIGFycmF5cyBwYWNr
ZWQgaW4gYSB0dXBsZS4KKyAgdXNpbmcgRWxlbWVudFR5cGVzID0gc3RkOjp0dXBsZTx0eXBlbmFt
ZSBUeXBlPEVsZW1lbnRzPjo6dHlwZS4uLj47CisKKyAgLy8gRWxlbWVudCB0eXBlIG9mIHRoZSBO
dGggYXJyYXkuCisgIHRlbXBsYXRlIDxzaXplX3QgTj4KKyAgdXNpbmcgRWxlbWVudFR5cGUgPSB0
eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8TiwgRWxlbWVudFR5cGVzPjo6dHlwZTsKKworICBj
b25zdGV4cHIgZXhwbGljaXQgTGF5b3V0SW1wbChJbnRUb1NpemU8U2l6ZVNlcT4uLi4gc2l6ZXMp
CisgICAgICA6IHNpemVfe3NpemVzLi4ufSB7fQorCisgIC8vIEFsaWdubWVudCBvZiB0aGUgbGF5
b3V0LCBlcXVhbCB0byB0aGUgc3RyaWN0ZXN0IGFsaWdubWVudCBvZiBhbGwgZWxlbWVudHMuCisg
IC8vIEFsbCBwb2ludGVycyBwYXNzZWQgdG8gdGhlIG1ldGhvZHMgb2YgbGF5b3V0IG11c3QgYmUg
YWxpZ25lZCB0byB0aGlzIHZhbHVlLgorICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBBbGlnbm1l
bnQoKSB7CisgICAgcmV0dXJuIGFkbF9iYXJyaWVyOjpNYXgoQWxpZ25PZjxFbGVtZW50cz46OnZh
bHVlLi4uKTsKKyAgfQorCisgIC8vIE9mZnNldCBpbiBieXRlcyBvZiB0aGUgTnRoIGFycmF5Lgor
ICAvLworICAvLyAgIC8vIGludFszXSwgNCBieXRlcyBvZiBwYWRkaW5nLCBkb3VibGVbNF0uCisg
IC8vICAgTGF5b3V0PGludCwgZG91YmxlPiB4KDMsIDQpOworICAvLyAgIGFzc2VydCh4Lk9mZnNl
dDwwPigpID09IDApOyAgIC8vIFRoZSBpbnRzIHN0YXJ0cyBmcm9tIDAuCisgIC8vICAgYXNzZXJ0
KHguT2Zmc2V0PDE+KCkgPT0gMTYpOyAgLy8gVGhlIGRvdWJsZXMgc3RhcnRzIGZyb20gMTYuCisg
IC8vCisgIC8vIFJlcXVpcmVzOiBgTiA8PSBOdW1TaXplcyAmJiBOIDwgc2l6ZW9mLi4uKFRzKWAu
CisgIHRlbXBsYXRlIDxzaXplX3QgTiwgRW5hYmxlSWY8TiA9PSAwPiA9IDA+CisgIGNvbnN0ZXhw
ciBzaXplX3QgT2Zmc2V0KCkgY29uc3QgeworICAgIHJldHVybiAwOworICB9CisKKyAgdGVtcGxh
dGUgPHNpemVfdCBOLCBFbmFibGVJZjxOICE9IDA+ID0gMD4KKyAgY29uc3RleHByIHNpemVfdCBP
ZmZzZXQoKSBjb25zdCB7CisgICAgc3RhdGljX2Fzc2VydChOIDwgTnVtT2Zmc2V0cywgIkluZGV4
IG91dCBvZiBib3VuZHMiKTsKKyAgICByZXR1cm4gYWRsX2JhcnJpZXI6OkFsaWduKAorICAgICAg
ICBPZmZzZXQ8TiAtIDE+KCkgKyBTaXplT2Y8RWxlbWVudFR5cGU8TiAtIDE+PigpICogc2l6ZV9b
TiAtIDFdLAorICAgICAgICBFbGVtZW50QWxpZ25tZW50PE4+KCkpOworICB9CisKKyAgLy8gT2Zm
c2V0IGluIGJ5dGVzIG9mIHRoZSBhcnJheSB3aXRoIHRoZSBzcGVjaWZpZWQgZWxlbWVudCB0eXBl
LiBUaGVyZSBtdXN0CisgIC8vIGJlIGV4YWN0bHkgb25lIHN1Y2ggYXJyYXkgYW5kIGl0cyB6ZXJv
LWJhc2VkIGluZGV4IG11c3QgYmUgYXQgbW9zdAorICAvLyBgTnVtU2l6ZXNgLgorICAvLworICAv
LyAgIC8vIGludFszXSwgNCBieXRlcyBvZiBwYWRkaW5nLCBkb3VibGVbNF0uCisgIC8vICAgTGF5
b3V0PGludCwgZG91YmxlPiB4KDMsIDQpOworICAvLyAgIGFzc2VydCh4Lk9mZnNldDxpbnQ+KCkg
PT0gMCk7ICAgICAgLy8gVGhlIGludHMgc3RhcnRzIGZyb20gMC4KKyAgLy8gICBhc3NlcnQoeC5P
ZmZzZXQ8ZG91YmxlPigpID09IDE2KTsgIC8vIFRoZSBkb3VibGVzIHN0YXJ0cyBmcm9tIDE2Lgor
ICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgY29uc3RleHByIHNpemVfdCBPZmZzZXQoKSBjb25zdCB7
CisgICAgcmV0dXJuIE9mZnNldDxFbGVtZW50SW5kZXg8VD4oKT4oKTsKKyAgfQorCisgIC8vIE9m
ZnNldHMgaW4gYnl0ZXMgb2YgYWxsIGFycmF5cyBmb3Igd2hpY2ggdGhlIG9mZnNldHMgYXJlIGtu
b3duLgorICBjb25zdGV4cHIgc3RkOjphcnJheTxzaXplX3QsIE51bU9mZnNldHM+IE9mZnNldHMo
KSBjb25zdCB7CisgICAgcmV0dXJuIHt7T2Zmc2V0PE9mZnNldFNlcT4oKS4uLn19OworICB9CisK
KyAgLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgTnRoIGFycmF5LiBUaGlzIGlzIHRo
ZSBOdGggYXJndW1lbnQgb2YKKyAgLy8gYExheW91dDo6UGFydGlhbCgpYCBvciBgTGF5b3V0OjpM
YXlvdXQoKWAgKHplcm8tYmFzZWQpLgorICAvLworICAvLyAgIC8vIGludFszXSwgNCBieXRlcyBv
ZiBwYWRkaW5nLCBkb3VibGVbNF0uCisgIC8vICAgTGF5b3V0PGludCwgZG91YmxlPiB4KDMsIDQp
OworICAvLyAgIGFzc2VydCh4LlNpemU8MD4oKSA9PSAzKTsKKyAgLy8gICBhc3NlcnQoeC5TaXpl
PDE+KCkgPT0gNCk7CisgIC8vCisgIC8vIFJlcXVpcmVzOiBgTiA8IE51bVNpemVzYC4KKyAgdGVt
cGxhdGUgPHNpemVfdCBOPgorICBjb25zdGV4cHIgc2l6ZV90IFNpemUoKSBjb25zdCB7CisgICAg
c3RhdGljX2Fzc2VydChOIDwgTnVtU2l6ZXMsICJJbmRleCBvdXQgb2YgYm91bmRzIik7CisgICAg
cmV0dXJuIHNpemVfW05dOworICB9CisKKyAgLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0
aGUgYXJyYXkgd2l0aCB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgdHlwZS4KKyAgLy8gVGhlcmUgbXVz
dCBiZSBleGFjdGx5IG9uZSBzdWNoIGFycmF5IGFuZCBpdHMgemVyby1iYXNlZCBpbmRleCBtdXN0
IGJlCisgIC8vIGF0IG1vc3QgYE51bVNpemVzYC4KKyAgLy8KKyAgLy8gICAvLyBpbnRbM10sIDQg
Ynl0ZXMgb2YgcGFkZGluZywgZG91YmxlWzRdLgorICAvLyAgIExheW91dDxpbnQsIGRvdWJsZT4g
eCgzLCA0KTsKKyAgLy8gICBhc3NlcnQoeC5TaXplPGludD4oKSA9PSAzKTsKKyAgLy8gICBhc3Nl
cnQoeC5TaXplPGRvdWJsZT4oKSA9PSA0KTsKKyAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgIGNvbnN0
ZXhwciBzaXplX3QgU2l6ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gU2l6ZTxFbGVtZW50SW5kZXg8
VD4oKT4oKTsKKyAgfQorCisgICAgLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBvZiBhbGwgYXJy
YXlzIGZvciB3aGljaCB0aGV5IGFyZSBrbm93bi4KKyAgY29uc3RleHByIHN0ZDo6YXJyYXk8c2l6
ZV90LCBOdW1TaXplcz4gU2l6ZXMoKSBjb25zdCB7CisgICAgcmV0dXJuIHt7U2l6ZTxTaXplU2Vx
PigpLi4ufX07CisgIH0KKworICAvLyBQb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIE50
aCBhcnJheS4KKyAgLy8KKyAgLy8gYENoYXJgIG11c3QgYmUgYFtjb25zdF0gW3NpZ25lZHx1bnNp
Z25lZF0gY2hhcmAuCisgIC8vCisgIC8vICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcs
IGRvdWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+IHgoMywgNCk7CisgIC8vICAg
dW5zaWduZWQgY2hhciogcCA9IG5ldyB1bnNpZ25lZCBjaGFyW3guQWxsb2NTaXplKCldOworICAv
LyAgIGludCogaW50cyA9IHguUG9pbnRlcjwwPihwKTsKKyAgLy8gICBkb3VibGUqIGRvdWJsZXMg
PSB4LlBvaW50ZXI8MT4ocCk7CisgIC8vCisgIC8vIFJlcXVpcmVzOiBgTiA8PSBOdW1TaXplcyAm
JiBOIDwgc2l6ZW9mLi4uKFRzKWAuCisgIC8vIFJlcXVpcmVzOiBgcGAgaXMgYWxpZ25lZCB0byBg
QWxpZ25tZW50KClgLgorICB0ZW1wbGF0ZSA8c2l6ZV90IE4sIGNsYXNzIENoYXI+CisgIENvcHlD
b25zdDxDaGFyLCBFbGVtZW50VHlwZTxOPj4qIFBvaW50ZXIoQ2hhciogcCkgY29uc3QgeworICAg
IHVzaW5nIEMgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxDaGFyPjo6dHlwZTsKKyAgICBz
dGF0aWNfYXNzZXJ0KAorICAgICAgICBzdGQ6OmlzX3NhbWU8QywgY2hhcj4oKSB8fCBzdGQ6Omlz
X3NhbWU8QywgdW5zaWduZWQgY2hhcj4oKSB8fAorICAgICAgICAgICAgc3RkOjppc19zYW1lPEMs
IHNpZ25lZCBjaGFyPigpLAorICAgICAgICAiVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBwb2ludGVy
IHRvIFtjb25zdF0gW3NpZ25lZHx1bnNpZ25lZF0gY2hhciIpOworICAgIGNvbnN0ZXhwciBzaXpl
X3QgYWxpZ25tZW50ID0gQWxpZ25tZW50KCk7CisgICAgKHZvaWQpYWxpZ25tZW50OworICAgIGFz
c2VydChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocCkgJSBhbGlnbm1lbnQgPT0gMCk7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q29weUNvbnN0PENoYXIsIEVsZW1lbnRUeXBlPE4+
Pio+KHAgKyBPZmZzZXQ8Tj4oKSk7CisgIH0KKworICAvLyBQb2ludGVyIHRvIHRoZSBiZWdpbm5p
bmcgb2YgdGhlIGFycmF5IHdpdGggdGhlIHNwZWNpZmllZCBlbGVtZW50IHR5cGUuCisgIC8vIFRo
ZXJlIG11c3QgYmUgZXhhY3RseSBvbmUgc3VjaCBhcnJheSBhbmQgaXRzIHplcm8tYmFzZWQgaW5k
ZXggbXVzdCBiZSBhdAorICAvLyBtb3N0IGBOdW1TaXplc2AuCisgIC8vCisgIC8vIGBDaGFyYCBt
dXN0IGJlIGBbY29uc3RdIFtzaWduZWR8dW5zaWduZWRdIGNoYXJgLgorICAvLworICAvLyAgIC8v
IGludFszXSwgNCBieXRlcyBvZiBwYWRkaW5nLCBkb3VibGVbNF0uCisgIC8vICAgTGF5b3V0PGlu
dCwgZG91YmxlPiB4KDMsIDQpOworICAvLyAgIHVuc2lnbmVkIGNoYXIqIHAgPSBuZXcgdW5zaWdu
ZWQgY2hhclt4LkFsbG9jU2l6ZSgpXTsKKyAgLy8gICBpbnQqIGludHMgPSB4LlBvaW50ZXI8aW50
PihwKTsKKyAgLy8gICBkb3VibGUqIGRvdWJsZXMgPSB4LlBvaW50ZXI8ZG91YmxlPihwKTsKKyAg
Ly8KKyAgLy8gUmVxdWlyZXM6IGBwYCBpcyBhbGlnbmVkIHRvIGBBbGlnbm1lbnQoKWAuCisgIHRl
bXBsYXRlIDxjbGFzcyBULCBjbGFzcyBDaGFyPgorICBDb3B5Q29uc3Q8Q2hhciwgVD4qIFBvaW50
ZXIoQ2hhciogcCkgY29uc3QgeworICAgIHJldHVybiBQb2ludGVyPEVsZW1lbnRJbmRleDxUPigp
PihwKTsKKyAgfQorCisgIC8vIFBvaW50ZXJzIHRvIGFsbCBhcnJheXMgZm9yIHdoaWNoIHBvaW50
ZXJzIGFyZSBrbm93bi4KKyAgLy8KKyAgLy8gYENoYXJgIG11c3QgYmUgYFtjb25zdF0gW3NpZ25l
ZHx1bnNpZ25lZF0gY2hhcmAuCisgIC8vCisgIC8vICAgLy8gaW50WzNdLCA0IGJ5dGVzIG9mIHBh
ZGRpbmcsIGRvdWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50LCBkb3VibGU+IHgoMywgNCk7Cisg
IC8vICAgdW5zaWduZWQgY2hhciogcCA9IG5ldyB1bnNpZ25lZCBjaGFyW3guQWxsb2NTaXplKCld
OworICAvLworICAvLyAgIGludCogaW50czsKKyAgLy8gICBkb3VibGUqIGRvdWJsZXM7CisgIC8v
ICAgc3RkOjp0aWUoaW50cywgZG91YmxlcykgPSB4LlBvaW50ZXJzKHApOworICAvLworICAvLyBS
ZXF1aXJlczogYHBgIGlzIGFsaWduZWQgdG8gYEFsaWdubWVudCgpYC4KKyAgLy8KKyAgLy8gTm90
ZTogV2UncmUgbm90IHVzaW5nIEVsZW1lbnRUeXBlIGFsaWFzIGhlcmUgYmVjYXVzZSBpdCBkb2Vz
IG5vdCBjb21waWxlCisgIC8vIHVuZGVyIE1TVkMuCisgIHRlbXBsYXRlIDxjbGFzcyBDaGFyPgor
ICBzdGQ6OnR1cGxlPENvcHlDb25zdDwKKyAgICAgIENoYXIsIHR5cGVuYW1lIHN0ZDo6dHVwbGVf
ZWxlbWVudDxPZmZzZXRTZXEsIEVsZW1lbnRUeXBlcz46OnR5cGU+Ki4uLj4KKyAgUG9pbnRlcnMo
Q2hhciogcCkgY29uc3QgeworICAgIHJldHVybiBzdGQ6OnR1cGxlPENvcHlDb25zdDxDaGFyLCBF
bGVtZW50VHlwZTxPZmZzZXRTZXE+PiouLi4+KAorICAgICAgICBQb2ludGVyPE9mZnNldFNlcT4o
cCkuLi4pOworICB9CisKKyAgLy8gVGhlIE50aCBhcnJheS4KKyAgLy8KKyAgLy8gYENoYXJgIG11
c3QgYmUgYFtjb25zdF0gW3NpZ25lZHx1bnNpZ25lZF0gY2hhcmAuCisgIC8vCisgIC8vICAgLy8g
aW50WzNdLCA0IGJ5dGVzIG9mIHBhZGRpbmcsIGRvdWJsZVs0XS4KKyAgLy8gICBMYXlvdXQ8aW50
LCBkb3VibGU+IHgoMywgNCk7CisgIC8vICAgdW5zaWduZWQgY2hhciogcCA9IG5ldyB1bnNpZ25l
ZCBjaGFyW3guQWxsb2NTaXplKCldOworICAvLyAgIFNwYW48aW50PiBpbnRzID0geC5TbGljZTww
PihwKTsKKyAgLy8gICBTcGFuPGRvdWJsZT4gZG91YmxlcyA9IHguU2xpY2U8MT4ocCk7CisgIC8v
CisgIC8vIFJlcXVpcmVzOiBgTiA8IE51bVNpemVzYC4KKyAgLy8gUmVxdWlyZXM6IGBwYCBpcyBh
bGlnbmVkIHRvIGBBbGlnbm1lbnQoKWAuCisgIHRlbXBsYXRlIDxzaXplX3QgTiwgY2xhc3MgQ2hh
cj4KKyAgU2xpY2VUeXBlPENvcHlDb25zdDxDaGFyLCBFbGVtZW50VHlwZTxOPj4+IFNsaWNlKENo
YXIqIHApIGNvbnN0IHsKKyAgICByZXR1cm4gU2xpY2VUeXBlPENvcHlDb25zdDxDaGFyLCBFbGVt
ZW50VHlwZTxOPj4+KFBvaW50ZXI8Tj4ocCksIFNpemU8Tj4oKSk7CisgIH0KKworICAvLyBUaGUg
YXJyYXkgd2l0aCB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgdHlwZS4gVGhlcmUgbXVzdCBiZSBleGFj
dGx5IG9uZQorICAvLyBzdWNoIGFycmF5IGFuZCBpdHMgemVyby1iYXNlZCBpbmRleCBtdXN0IGJl
IGxlc3MgdGhhbiBgTnVtU2l6ZXNgLgorICAvLworICAvLyBgQ2hhcmAgbXVzdCBiZSBgW2NvbnN0
XSBbc2lnbmVkfHVuc2lnbmVkXSBjaGFyYC4KKyAgLy8KKyAgLy8gICAvLyBpbnRbM10sIDQgYnl0
ZXMgb2YgcGFkZGluZywgZG91YmxlWzRdLgorICAvLyAgIExheW91dDxpbnQsIGRvdWJsZT4geCgz
LCA0KTsKKyAgLy8gICB1bnNpZ25lZCBjaGFyKiBwID0gbmV3IHVuc2lnbmVkIGNoYXJbeC5BbGxv
Y1NpemUoKV07CisgIC8vICAgU3BhbjxpbnQ+IGludHMgPSB4LlNsaWNlPGludD4ocCk7CisgIC8v
ICAgU3Bhbjxkb3VibGU+IGRvdWJsZXMgPSB4LlNsaWNlPGRvdWJsZT4ocCk7CisgIC8vCisgIC8v
IFJlcXVpcmVzOiBgcGAgaXMgYWxpZ25lZCB0byBgQWxpZ25tZW50KClgLgorICB0ZW1wbGF0ZSA8
Y2xhc3MgVCwgY2xhc3MgQ2hhcj4KKyAgU2xpY2VUeXBlPENvcHlDb25zdDxDaGFyLCBUPj4gU2xp
Y2UoQ2hhciogcCkgY29uc3QgeworICAgIHJldHVybiBTbGljZTxFbGVtZW50SW5kZXg8VD4oKT4o
cCk7CisgIH0KKworICAvLyBBbGwgYXJyYXlzIHdpdGgga25vd24gc2l6ZXMuCisgIC8vCisgIC8v
IGBDaGFyYCBtdXN0IGJlIGBbY29uc3RdIFtzaWduZWR8dW5zaWduZWRdIGNoYXJgLgorICAvLwor
ICAvLyAgIC8vIGludFszXSwgNCBieXRlcyBvZiBwYWRkaW5nLCBkb3VibGVbNF0uCisgIC8vICAg
TGF5b3V0PGludCwgZG91YmxlPiB4KDMsIDQpOworICAvLyAgIHVuc2lnbmVkIGNoYXIqIHAgPSBu
ZXcgdW5zaWduZWQgY2hhclt4LkFsbG9jU2l6ZSgpXTsKKyAgLy8KKyAgLy8gICBTcGFuPGludD4g
aW50czsKKyAgLy8gICBTcGFuPGRvdWJsZT4gZG91YmxlczsKKyAgLy8gICBzdGQ6OnRpZShpbnRz
LCBkb3VibGVzKSA9IHguU2xpY2VzKHApOworICAvLworICAvLyBSZXF1aXJlczogYHBgIGlzIGFs
aWduZWQgdG8gYEFsaWdubWVudCgpYC4KKyAgLy8KKyAgLy8gTm90ZTogV2UncmUgbm90IHVzaW5n
IEVsZW1lbnRUeXBlIGFsaWFzIGhlcmUgYmVjYXVzZSBpdCBkb2VzIG5vdCBjb21waWxlCisgIC8v
IHVuZGVyIE1TVkMuCisgIHRlbXBsYXRlIDxjbGFzcyBDaGFyPgorICBzdGQ6OnR1cGxlPFNsaWNl
VHlwZTxDb3B5Q29uc3Q8CisgICAgICBDaGFyLCB0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8
U2l6ZVNlcSwgRWxlbWVudFR5cGVzPjo6dHlwZT4+Li4uPgorICBTbGljZXMoQ2hhciogcCkgY29u
c3QgeworICAgIC8vIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEv
c2hvd19idWcuY2dpP2lkPTYzODc1IChmaXhlZAorICAgIC8vIGluIDYuMSkuCisgICAgKHZvaWQp
cDsKKyAgICByZXR1cm4gc3RkOjp0dXBsZTxTbGljZVR5cGU8Q29weUNvbnN0PENoYXIsIEVsZW1l
bnRUeXBlPFNpemVTZXE+Pj4uLi4+KAorICAgICAgICBTbGljZTxTaXplU2VxPihwKS4uLik7Cisg
IH0KKworICAvLyBUaGUgc2l6ZSBvZiB0aGUgYWxsb2NhdGlvbiB0aGF0IGZpdHMgYWxsIGFycmF5
cy4KKyAgLy8KKyAgLy8gICAvLyBpbnRbM10sIDQgYnl0ZXMgb2YgcGFkZGluZywgZG91YmxlWzRd
LgorICAvLyAgIExheW91dDxpbnQsIGRvdWJsZT4geCgzLCA0KTsKKyAgLy8gICB1bnNpZ25lZCBj
aGFyKiBwID0gbmV3IHVuc2lnbmVkIGNoYXJbeC5BbGxvY1NpemUoKV07ICAvLyA0OCBieXRlcwor
ICAvLworICAvLyBSZXF1aXJlczogYE51bVNpemVzID09IHNpemVvZi4uLihUcylgLgorICBjb25z
dGV4cHIgc2l6ZV90IEFsbG9jU2l6ZSgpIGNvbnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KE51bVR5
cGVzID09IE51bVNpemVzLCAiWW91IG11c3Qgc3BlY2lmeSBzaXplcyBvZiBhbGwgZmllbGRzIik7
CisgICAgcmV0dXJuIE9mZnNldDxOdW1UeXBlcyAtIDE+KCkgKworICAgICAgICAgICBTaXplT2Y8
RWxlbWVudFR5cGU8TnVtVHlwZXMgLSAxPj4oKSAqIHNpemVfW051bVR5cGVzIC0gMV07CisgIH0K
KworICAvLyBJZiBidWlsdCB3aXRoIC0tY29uZmlnPWFzYW4sIHBvaXNvbnMgcGFkZGluZyBieXRl
cyAoaWYgYW55KSBpbiB0aGUKKyAgLy8gYWxsb2NhdGlvbi4gVGhlIHBvaW50ZXIgbXVzdCBwb2lu
dCB0byBhIG1lbW9yeSBibG9jayBhdCBsZWFzdAorICAvLyBgQWxsb2NTaXplKClgIGJ5dGVzIGlu
IGxlbmd0aC4KKyAgLy8KKyAgLy8gYENoYXJgIG11c3QgYmUgYFtjb25zdF0gW3NpZ25lZHx1bnNp
Z25lZF0gY2hhcmAuCisgIC8vCisgIC8vIFJlcXVpcmVzOiBgcGAgaXMgYWxpZ25lZCB0byBgQWxp
Z25tZW50KClgLgorICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhciwgc2l6ZV90IE4gPSBOdW1PZmZzZXRz
IC0gMSwgRW5hYmxlSWY8TiA9PSAwPiA9IDA+CisgIHZvaWQgUG9pc29uUGFkZGluZyhjb25zdCBD
aGFyKiBwKSBjb25zdCB7CisgICAgUG9pbnRlcjwwPihwKTsgIC8vIHZlcmlmeSB0aGUgcmVxdWly
ZW1lbnRzIG9uIGBDaGFyYCBhbmQgYHBgCisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhciwg
c2l6ZV90IE4gPSBOdW1PZmZzZXRzIC0gMSwgRW5hYmxlSWY8TiAhPSAwPiA9IDA+CisgIHZvaWQg
UG9pc29uUGFkZGluZyhjb25zdCBDaGFyKiBwKSBjb25zdCB7CisgICAgc3RhdGljX2Fzc2VydChO
IDwgTnVtT2Zmc2V0cywgIkluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICAodm9pZClwOworI2lm
ZGVmIEFERFJFU1NfU0FOSVRJWkVSCisgICAgUG9pc29uUGFkZGluZzxDaGFyLCBOIC0gMT4ocCk7
CisgICAgLy8gVGhlIGBpZmAgaXMgYW4gb3B0aW1pemF0aW9uLiBJdCBkb2Vzbid0IGFmZmVjdCB0
aGUgb2JzZXJ2YWJsZSBiZWhhdmlvdXIuCisgICAgaWYgKEVsZW1lbnRBbGlnbm1lbnQ8TiAtIDE+
KCkgJSBFbGVtZW50QWxpZ25tZW50PE4+KCkpIHsKKyAgICAgIHNpemVfdCBzdGFydCA9CisgICAg
ICAgICAgT2Zmc2V0PE4gLSAxPigpICsgU2l6ZU9mPEVsZW1lbnRUeXBlPE4gLSAxPj4oKSAqIHNp
emVfW04gLSAxXTsKKyAgICAgIEFTQU5fUE9JU09OX01FTU9SWV9SRUdJT04ocCArIHN0YXJ0LCBP
ZmZzZXQ8Tj4oKSAtIHN0YXJ0KTsKKyAgICB9CisjZW5kaWYKKyAgfQorCisgIC8vIEh1bWFuLXJl
YWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBtZW1vcnkgbGF5b3V0LiBVc2VmdWwgZm9yIGRlYnVn
Z2luZy4KKyAgLy8gU2xvdy4KKyAgLy8KKyAgLy8gICAvLyBjaGFyWzVdLCAzIGJ5dGVzIG9mIHBh
ZGRpbmcsIGludFszXSwgNCBieXRlcyBvZiBwYWRkaW5nLCBmb2xsb3dlZAorICAvLyAgIC8vIGJ5
IGFuIHVua25vd24gbnVtYmVyIG9mIGRvdWJsZXMuCisgIC8vICAgYXV0byB4ID0gTGF5b3V0PGNo
YXIsIGludCwgZG91YmxlPjo6UGFydGlhbCg1LCAzKTsKKyAgLy8gICBhc3NlcnQoeC5EZWJ1Z1N0
cmluZygpID09CisgIC8vICAgICAgICAgICJAMDxjaGFyPigxKVs1XTsgQDg8aW50Pig0KVszXTsg
QDI0PGRvdWJsZT4oOCkiKTsKKyAgLy8KKyAgLy8gRWFjaCBmaWVsZCBpcyBpbiB0aGUgZm9sbG93
aW5nIGZvcm1hdDogQG9mZnNldDx0eXBlPihzaXplb2YpW3NpemVdICg8dHlwZT4KKyAgLy8gbWF5
IGJlIG1pc3NpbmcgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0pLiBGb3IgZXhhbXBs
ZSwKKyAgLy8gQDg8aW50Pig0KVszXSBtZWFucyB0aGF0IGF0IG9mZnNldCA4IHdlIGhhdmUgYW4g
YXJyYXkgb2YgaW50cywgd2hlcmUgZWFjaAorICAvLyBpbnQgaXMgNCBieXRlcywgYW5kIHdlIGhh
dmUgMyBvZiB0aG9zZSBpbnRzLiBUaGUgc2l6ZSBvZiB0aGUgbGFzdCBmaWVsZCBtYXkKKyAgLy8g
YmUgbWlzc2luZyAoYXMgaW4gdGhlIGV4YW1wbGUgYWJvdmUpLiBPbmx5IGZpZWxkcyB3aXRoIGtu
b3duIG9mZnNldHMgYXJlCisgIC8vIGRlc2NyaWJlZC4gVHlwZSBuYW1lcyBtYXkgZGlmZmVyIGFj
cm9zcyBwbGF0Zm9ybXM6IG9uZSBjb21waWxlciBtaWdodAorICAvLyBwcm9kdWNlICJ1bnNpZ25l
ZCoiIHdoZXJlIGFub3RoZXIgcHJvZHVjZXMgInVuc2lnbmVkIGludCAqIi4KKyAgc3RkOjpzdHJp
bmcgRGVidWdTdHJpbmcoKSBjb25zdCB7CisgICAgY29uc3QgYXV0byBvZmZzZXRzID0gT2Zmc2V0
cygpOworICAgIGNvbnN0IHNpemVfdCBzaXplc1tdID0ge1NpemVPZjxFbGVtZW50VHlwZTxPZmZz
ZXRTZXE+PigpLi4ufTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB0eXBlc1tdID0ge2FkbF9iYXJy
aWVyOjpUeXBlTmFtZTxFbGVtZW50VHlwZTxPZmZzZXRTZXE+PigpLi4ufTsKKyAgICBzdGQ6OnN0
cmluZyByZXMgPSBhYnNsOjpTdHJDYXQoIkAwIiwgdHlwZXNbMF0sICIoIiwgc2l6ZXNbMF0sICIp
Iik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gTnVtT2Zmc2V0cyAtIDE7ICsraSkgewor
ICAgICAgYWJzbDo6U3RyQXBwZW5kKCZyZXMsICJbIiwgc2l6ZV9baV0sICJdOyBAIiwgb2Zmc2V0
c1tpICsgMV0sIHR5cGVzW2kgKyAxXSwKKyAgICAgICAgICAgICAgICAgICAgICAiKCIsIHNpemVz
W2kgKyAxXSwgIikiKTsKKyAgICB9CisgICAgLy8gTnVtU2l6ZXMgaXMgYSBjb25zdGFudCB0aGF0
IG1heSBiZSB6ZXJvLiBTb21lIGNvbXBpbGVycyBjYW5ub3Qgc2VlIHRoYXQKKyAgICAvLyBpbnNp
ZGUgdGhlIGlmIHN0YXRlbWVudCAic2l6ZV9bTnVtU2l6ZXMgLSAxXSIgbXVzdCBiZSB2YWxpZC4K
KyAgICBpbnQgbGFzdCA9IHN0YXRpY19jYXN0PGludD4oTnVtU2l6ZXMpIC0gMTsKKyAgICBpZiAo
TnVtVHlwZXMgPT0gTnVtU2l6ZXMgJiYgbGFzdCA+PSAwKSB7CisgICAgICBhYnNsOjpTdHJBcHBl
bmQoJnJlcywgIlsiLCBzaXplX1tsYXN0XSwgIl0iKTsKKyAgICB9CisgICAgcmV0dXJuIHJlczsK
KyAgfQorCisgcHJpdmF0ZToKKyAgLy8gQXJndW1lbnRzIG9mIGBMYXlvdXQ6OlBhcnRpYWwoKWAg
b3IgYExheW91dDo6TGF5b3V0KClgLgorICBzaXplX3Qgc2l6ZV9bTnVtU2l6ZXMgPiAwID8gTnVt
U2l6ZXMgOiAxXTsKK307CisKK3RlbXBsYXRlIDxzaXplX3QgTnVtU2l6ZXMsIGNsYXNzLi4uIFRz
PgordXNpbmcgTGF5b3V0VHlwZSA9IExheW91dEltcGw8CisgICAgc3RkOjp0dXBsZTxUcy4uLj4s
IGFic2w6Om1ha2VfaW5kZXhfc2VxdWVuY2U8TnVtU2l6ZXM+LAorICAgIGFic2w6Om1ha2VfaW5k
ZXhfc2VxdWVuY2U8YWRsX2JhcnJpZXI6Ok1pbihzaXplb2YuLi4oVHMpLCBOdW1TaXplcyArIDEp
Pj47CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbF9sYXlvdXQKKworLy8gRGVzY3JpcHRvciBv
ZiBhcnJheXMgb2YgdmFyaW91cyB0eXBlcyBhbmQgc2l6ZXMgbGFpZCBvdXQgaW4gbWVtb3J5IG9u
ZSBhZnRlcgorLy8gYW5vdGhlci4gU2VlIHRoZSB0b3Agb2YgdGhlIGZpbGUgZm9yIGRvY3VtZW50
YXRpb24uCisvLworLy8gQ2hlY2sgb3V0IHRoZSBwdWJsaWMgQVBJIG9mIGludGVybmFsX2xheW91
dDo6TGF5b3V0SW1wbCBhYm92ZS4gVGhlIHR5cGUgaXMKKy8vIGludGVybmFsIHRvIHRoZSBsaWJy
YXJ5IGJ1dCBpdHMgbWV0aG9kcyBhcmUgcHVibGljLCBhbmQgdGhleSBhcmUgaW5oZXJpdGVkCisv
LyBieSBgTGF5b3V0YC4KK3RlbXBsYXRlIDxjbGFzcy4uLiBUcz4KK2NsYXNzIExheW91dCA6IHB1
YmxpYyBpbnRlcm5hbF9sYXlvdXQ6OkxheW91dFR5cGU8c2l6ZW9mLi4uKFRzKSwgVHMuLi4+IHsK
KyBwdWJsaWM6CisgIHN0YXRpY19hc3NlcnQoc2l6ZW9mLi4uKFRzKSA+IDAsICJBdCBsZWFzdCBv
bmUgZmllbGQgaXMgcmVxdWlyZWQiKTsKKyAgc3RhdGljX2Fzc2VydCgKKyAgICAgIGFic2w6OmNv
bmp1bmN0aW9uPGludGVybmFsX2xheW91dDo6SXNMZWdhbEVsZW1lbnRUeXBlPFRzPi4uLj46OnZh
bHVlLAorICAgICAgIkludmFsaWQgZWxlbWVudCB0eXBlIChzZWUgSXNMZWdhbEVsZW1lbnRUeXBl
KSIpOworCisgIC8vIFRoZSByZXN1bHQgdHlwZSBvZiBgUGFydGlhbCgpYCB3aXRoIGBOdW1TaXpl
c2AgYXJndW1lbnRzLgorICB0ZW1wbGF0ZSA8c2l6ZV90IE51bVNpemVzPgorICB1c2luZyBQYXJ0
aWFsVHlwZSA9IGludGVybmFsX2xheW91dDo6TGF5b3V0VHlwZTxOdW1TaXplcywgVHMuLi4+Owor
CisgIC8vIGBMYXlvdXRgIGtub3dzIHRoZSBlbGVtZW50IHR5cGVzIG9mIHRoZSBhcnJheXMgd2Ug
d2FudCB0byBsYXkgb3V0IGluCisgIC8vIG1lbW9yeSBidXQgbm90IHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgaW4gZWFjaCBhcnJheS4KKyAgLy8gYFBhcnRpYWwoc2l6ZTEsIC4uLiwgc2l6ZU4pYCBh
bGxvd3MgdXMgdG8gc3BlY2lmeSB0aGUgbGF0dGVyLiBUaGUKKyAgLy8gcmVzdWx0aW5nIGltbXV0
YWJsZSBvYmplY3QgY2FuIGJlIHVzZWQgdG8gb2J0YWluIHBvaW50ZXJzIHRvIHRoZQorICAvLyBp
bmRpdmlkdWFsIGFycmF5cy4KKyAgLy8KKyAgLy8gSXQncyBhbGxvd2VkIHRvIHBhc3MgZmV3ZXIg
YXJyYXkgc2l6ZXMgdGhhbiB0aGUgbnVtYmVyIG9mIGFycmF5cy4gRS5nLiwKKyAgLy8gaWYgYWxs
IHlvdSBuZWVkIGlzIHRvIHRoZSBvZmZzZXQgb2YgdGhlIHNlY29uZCBhcnJheSwgeW91IG9ubHkg
bmVlZCB0bworICAvLyBwYXNzIG9uZSBhcmd1bWVudCAtLSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRz
IGluIHRoZSBmaXJzdCBhcnJheXMuCisgIC8vCisgIC8vICAgLy8gaW50WzNdIGZvbGxvd2VkIGJ5
IDQgYnl0ZXMgb2YgcGFkZGluZyBhbmQgYW4gdW5rbm93biBudW1iZXIgb2YKKyAgLy8gICAvLyBk
b3VibGVzLgorICAvLyAgIGF1dG8geCA9IExheW91dDxpbnQsIGRvdWJsZT46OlBhcnRpYWwoMyk7
CisgIC8vICAgLy8gZG91YmxlcyBzdGFydCBhdCBieXRlIDE2LgorICAvLyAgIGFzc2VydCh4Lk9m
ZnNldDwxPigpID09IDE2KTsKKyAgLy8KKyAgLy8gSWYgeW91IGtub3cgdGhlIG51bWJlciBvZiBl
bGVtZW50cyBpbiBhbGwgYXJyYXlzLCB5b3UgY2FuIHN0aWxsIGNhbGwKKyAgLy8gYFBhcnRpYWwo
KWAgYnV0IGl0J3MgbW9yZSBjb252ZW5pZW50IHRvIHVzZSB0aGUgY29uc3RydWN0b3Igb2YgYExh
eW91dGAuCisgIC8vCisgIC8vICAgTGF5b3V0PGludCwgZG91YmxlPiB4KDMsIDUpOworICAvLwor
ICAvLyBOb3RlOiBUaGUgc2l6ZXMgb2YgdGhlIGFycmF5cyBtdXN0IGJlIHNwZWNpZmllZCBpbiBu
dW1iZXIgb2YgZWxlbWVudHMsCisgIC8vIG5vdCBpbiBieXRlcy4KKyAgLy8KKyAgLy8gUmVxdWly
ZXM6IGBzaXplb2YuLi4oU2l6ZXMpIDw9IHNpemVvZi4uLihUcylgLgorICAvLyBSZXF1aXJlczog
YWxsIGFyZ3VtZW50cyBhcmUgY29udmVydGlibGUgdG8gYHNpemVfdGAuCisgIHRlbXBsYXRlIDxj
bGFzcy4uLiBTaXplcz4KKyAgc3RhdGljIGNvbnN0ZXhwciBQYXJ0aWFsVHlwZTxzaXplb2YuLi4o
U2l6ZXMpPiBQYXJ0aWFsKFNpemVzJiYuLi4gc2l6ZXMpIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZi4uLihTaXplcykgPD0gc2l6ZW9mLi4uKFRzKSwgIiIpOworICAgIHJldHVybiBQYXJ0aWFs
VHlwZTxzaXplb2YuLi4oU2l6ZXMpPihhYnNsOjpmb3J3YXJkPFNpemVzPihzaXplcykuLi4pOwor
ICB9CisKKyAgLy8gQ3JlYXRlcyBhIGxheW91dCB3aXRoIHRoZSBzaXplcyBvZiBhbGwgYXJyYXlz
IHNwZWNpZmllZC4gSWYgeW91IGtub3cKKyAgLy8gb25seSB0aGUgc2l6ZXMgb2YgdGhlIGZpcnN0
IE4gYXJyYXlzICh3aGVyZSBOIGNhbiBiZSB6ZXJvKSwgeW91IGNhbiB1c2UKKyAgLy8gYFBhcnRp
YWwoKWAgZGVmaW5lZCBhYm92ZS4gVGhlIGNvbnN0cnVjdG9yIGlzIGVzc2VudGlhbGx5IGVxdWl2
YWxlbnQgdG8KKyAgLy8gY2FsbGluZyBgUGFydGlhbCgpYCBhbmQgcGFzc2luZyBpbiBhbGwgYXJy
YXkgc2l6ZXM7IHRoZSBjb25zdHJ1Y3RvciBpcworICAvLyBwcm92aWRlZCBhcyBhIGNvbnZlbmll
bnQgYWJicmV2aWF0aW9uLgorICAvLworICAvLyBOb3RlOiBUaGUgc2l6ZXMgb2YgdGhlIGFycmF5
cyBtdXN0IGJlIHNwZWNpZmllZCBpbiBudW1iZXIgb2YgZWxlbWVudHMsCisgIC8vIG5vdCBpbiBi
eXRlcy4KKyAgY29uc3RleHByIGV4cGxpY2l0IExheW91dChpbnRlcm5hbF9sYXlvdXQ6OlR5cGVU
b1NpemU8VHM+Li4uIHNpemVzKQorICAgICAgOiBpbnRlcm5hbF9sYXlvdXQ6OkxheW91dFR5cGU8
c2l6ZW9mLi4uKFRzKSwgVHMuLi4+KHNpemVzLi4uKSB7fQorfTsKKworfSAgLy8gbmFtZXNwYWNl
IGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBB
QlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9MQVlPVVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC9sYXlvdXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9s
YXlvdXRfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzUxNTdhM2JkODUyMTk4ODY5NDZmZDA2MjY5MWM1
NzA1M2IyZWRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL2xh
eW91dF90ZXN0LmNjCkBAIC0wLDAgKzEsMTU1MiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFi
c2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2xheW91
dC5oIgorCisvLyBXZSBuZWVkIDo6bWF4X2FsaWduX3QgYmVjYXVzZSBzb21lIGxpYnN0ZGMrKyB2
ZXJzaW9ucyBkb24ndCBwcm92aWRlCisvLyBzdGQ6Om1heF9hbGlnbl90CisjaW5jbHVkZSA8c3Rk
ZGVmLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8
c3N0cmVhbT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJu
YWwvcmF3X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL3NwYW4uaCIKKworbmFtZXNw
YWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CituYW1lc3BhY2Ugewor
Cit1c2luZyA6OmFic2w6OlNwYW47Cit1c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlOworCitz
aXplX3QgRGlzdGFuY2UoY29uc3Qgdm9pZCogZnJvbSwgY29uc3Qgdm9pZCogdG8pIHsKKyAgQUJT
TF9SQVdfQ0hFQ0soZnJvbSA8PSB0bywgIkRpc3RhbmNlIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7
CisgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odG8pIC0gc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGZyb20pOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRXhwZWN0ZWQsIGNsYXNzIEFj
dHVhbD4KK0V4cGVjdGVkIFR5cGUoQWN0dWFsIHZhbCkgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxFeHBlY3RlZCwgQWN0dWFsPigpLCAiIik7CisgIHJldHVybiB2YWw7Cit9CisKK3Vz
aW5nIEludDEyOCA9IGludDY0X3RbMl07CisKKy8vIFByb3BlcnRpZXMgb2YgdHlwZXMgdGhhdCB0
aGlzIHRlc3QgcmVsaWVzIG9uLgorc3RhdGljX2Fzc2VydChzaXplb2YoaW50OF90KSA9PSAxLCAi
Iik7CitzdGF0aWNfYXNzZXJ0KGFsaWdub2YoaW50OF90KSA9PSAxLCAiIik7CitzdGF0aWNfYXNz
ZXJ0KHNpemVvZihpbnQxNl90KSA9PSAyLCAiIik7CitzdGF0aWNfYXNzZXJ0KGFsaWdub2YoaW50
MTZfdCkgPT0gMiwgIiIpOworc3RhdGljX2Fzc2VydChzaXplb2YoaW50MzJfdCkgPT0gNCwgIiIp
Oworc3RhdGljX2Fzc2VydChhbGlnbm9mKGludDMyX3QpID09IDQsICIiKTsKK3N0YXRpY19hc3Nl
cnQoc2l6ZW9mKEludDEyOCkgPT0gMTYsICIiKTsKK3N0YXRpY19hc3NlcnQoYWxpZ25vZihJbnQx
MjgpID09IDgsICIiKTsKKwordGVtcGxhdGUgPGNsYXNzIEV4cGVjdGVkLCBjbGFzcyBBY3R1YWw+
Cit2b2lkIFNhbWVUeXBlKCkgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxFeHBlY3Rl
ZCwgQWN0dWFsPigpLCAiIik7Cit9CisKK1RFU1QoTGF5b3V0LCBFbGVtZW50VHlwZSkgeworICB7
CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBTYW1lVHlwZTxpbnQzMl90LCBM
OjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1lVHlwZTxpbnQzMl90LCBkZWNsdHlwZShMOjpQ
YXJ0aWFsKCkpOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1lVHlwZTxpbnQzMl90LCBkZWNs
dHlwZShMOjpQYXJ0aWFsKDApKTo6RWxlbWVudFR5cGU8MD4+KCk7CisgIH0KKyAgeworICAgIHVz
aW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAgU2FtZVR5cGU8aW50MzJfdCwg
TDo6RWxlbWVudFR5cGU8MD4+KCk7CisgICAgU2FtZVR5cGU8aW50MzJfdCwgTDo6RWxlbWVudFR5
cGU8MT4+KCk7CisgICAgU2FtZVR5cGU8aW50MzJfdCwgZGVjbHR5cGUoTDo6UGFydGlhbCgpKTo6
RWxlbWVudFR5cGU8MD4+KCk7CisgICAgU2FtZVR5cGU8aW50MzJfdCwgZGVjbHR5cGUoTDo6UGFy
dGlhbCgpKTo6RWxlbWVudFR5cGU8MT4+KCk7CisgICAgU2FtZVR5cGU8aW50MzJfdCwgZGVjbHR5
cGUoTDo6UGFydGlhbCgwKSk6OkVsZW1lbnRUeXBlPDA+PigpOworICAgIFNhbWVUeXBlPGludDMy
X3QsIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCkpOjpFbGVtZW50VHlwZTwxPj4oKTsKKyAgfQorICB7
CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgU2Ft
ZVR5cGU8aW50OF90LCBMOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1lVHlwZTxpbnQzMl90
LCBMOjpFbGVtZW50VHlwZTwxPj4oKTsKKyAgICBTYW1lVHlwZTxJbnQxMjgsIEw6OkVsZW1lbnRU
eXBlPDI+PigpOworICAgIFNhbWVUeXBlPGludDhfdCwgZGVjbHR5cGUoTDo6UGFydGlhbCgpKTo6
RWxlbWVudFR5cGU8MD4+KCk7CisgICAgU2FtZVR5cGU8aW50OF90LCBkZWNsdHlwZShMOjpQYXJ0
aWFsKDApKTo6RWxlbWVudFR5cGU8MD4+KCk7CisgICAgU2FtZVR5cGU8aW50MzJfdCwgZGVjbHR5
cGUoTDo6UGFydGlhbCgwKSk6OkVsZW1lbnRUeXBlPDE+PigpOworICAgIFNhbWVUeXBlPGludDhf
dCwgZGVjbHR5cGUoTDo6UGFydGlhbCgwLCAwKSk6OkVsZW1lbnRUeXBlPDA+PigpOworICAgIFNh
bWVUeXBlPGludDMyX3QsIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCwgMCkpOjpFbGVtZW50VHlwZTwx
Pj4oKTsKKyAgICBTYW1lVHlwZTxJbnQxMjgsIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCwgMCkpOjpF
bGVtZW50VHlwZTwyPj4oKTsKKyAgICBTYW1lVHlwZTxpbnQ4X3QsIGRlY2x0eXBlKEw6OlBhcnRp
YWwoMCwgMCwgMCkpOjpFbGVtZW50VHlwZTwwPj4oKTsKKyAgICBTYW1lVHlwZTxpbnQzMl90LCBk
ZWNsdHlwZShMOjpQYXJ0aWFsKDAsIDAsIDApKTo6RWxlbWVudFR5cGU8MT4+KCk7CisgICAgU2Ft
ZVR5cGU8SW50MTI4LCBkZWNsdHlwZShMOjpQYXJ0aWFsKDAsIDAsIDApKTo6RWxlbWVudFR5cGU8
Mj4+KCk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIEVsZW1lbnRUeXBlcykgeworICB7CisgICAg
dXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBTYW1lVHlwZTxzdGQ6OnR1cGxlPGludDMy
X3Q+LCBMOjpFbGVtZW50VHlwZXM+KCk7CisgICAgU2FtZVR5cGU8c3RkOjp0dXBsZTxpbnQzMl90
PiwgZGVjbHR5cGUoTDo6UGFydGlhbCgpKTo6RWxlbWVudFR5cGVzPigpOworICAgIFNhbWVUeXBl
PHN0ZDo6dHVwbGU8aW50MzJfdD4sIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCkpOjpFbGVtZW50VHlw
ZXM+KCk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47
CisgICAgU2FtZVR5cGU8c3RkOjp0dXBsZTxpbnQzMl90LCBpbnQzMl90PiwgTDo6RWxlbWVudFR5
cGVzPigpOworICAgIFNhbWVUeXBlPHN0ZDo6dHVwbGU8aW50MzJfdCwgaW50MzJfdD4sIGRlY2x0
eXBlKEw6OlBhcnRpYWwoKSk6OkVsZW1lbnRUeXBlcz4oKTsKKyAgICBTYW1lVHlwZTxzdGQ6OnR1
cGxlPGludDMyX3QsIGludDMyX3Q+LCBkZWNsdHlwZShMOjpQYXJ0aWFsKDApKTo6RWxlbWVudFR5
cGVzPigpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwg
SW50MTI4PjsKKyAgICBTYW1lVHlwZTxzdGQ6OnR1cGxlPGludDhfdCwgaW50MzJfdCwgSW50MTI4
PiwgTDo6RWxlbWVudFR5cGVzPigpOworICAgIFNhbWVUeXBlPHN0ZDo6dHVwbGU8aW50OF90LCBp
bnQzMl90LCBJbnQxMjg+LAorICAgICAgICAgICAgIGRlY2x0eXBlKEw6OlBhcnRpYWwoKSk6OkVs
ZW1lbnRUeXBlcz4oKTsKKyAgICBTYW1lVHlwZTxzdGQ6OnR1cGxlPGludDhfdCwgaW50MzJfdCwg
SW50MTI4PiwKKyAgICAgICAgICAgICBkZWNsdHlwZShMOjpQYXJ0aWFsKDApKTo6RWxlbWVudFR5
cGVzPigpOworICAgIFNhbWVUeXBlPHN0ZDo6dHVwbGU8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+
LAorICAgICAgICAgICAgIGRlY2x0eXBlKEw6OlBhcnRpYWwoMCwgMCkpOjpFbGVtZW50VHlwZXM+
KCk7CisgICAgU2FtZVR5cGU8c3RkOjp0dXBsZTxpbnQ4X3QsIGludDMyX3QsIEludDEyOD4sCisg
ICAgICAgICAgICAgZGVjbHR5cGUoTDo6UGFydGlhbCgwLCAwLCAwKSk6OkVsZW1lbnRUeXBlcz4o
KTsKKyAgfQorfQorCitURVNUKExheW91dCwgT2Zmc2V0QnlJbmRleCkgeworICB7CisgICAgdXNp
bmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgpLk9m
ZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgzKS5PZmZzZXQ8MD4oKSk7
CisgICAgRVhQRUNUX0VRKDAsIEwoMykuT2Zmc2V0PDA+KCkpOworICB9CisgIHsKKyAgICB1c2lu
ZyBMID0gTGF5b3V0PGludDMyX3QsIGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0
aWFsKCkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDMpLk9mZnNl
dDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMTIsIEw6OlBhcnRpYWwoMykuT2Zmc2V0PDE+KCkpOwor
ICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDMsIDUpLk9mZnNldDwwPigpKTsKKyAgICBFWFBF
Q1RfRVEoMTIsIEw6OlBhcnRpYWwoMywgNSkuT2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSgw
LCBMKDMsIDUpLk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMTIsIEwoMywgNSkuT2Zmc2V0
PDE+KCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwg
SW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgpLk9mZnNldDwwPigpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VR
KDAsIEw6OlBhcnRpYWwoMCkuT2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0
aWFsKDEpLk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoNCwgTDo6UGFydGlhbCgxKS5PZmZz
ZXQ8MT4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoNSkuT2Zmc2V0PDA+KCkpOwor
ICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFsKDUpLk9mZnNldDwxPigpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgTDo6UGFydGlhbCgwLCAwKS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6
OlBhcnRpYWwoMCwgMCkuT2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFs
KDAsIDApLk9mZnNldDwyPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgxLCAwKS5P
ZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNUX0VRKDQsIEw6OlBhcnRpYWwoMSwgMCkuT2Zmc2V0PDE+
KCkpOworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFsKDEsIDApLk9mZnNldDwyPigpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCg1LCAzKS5PZmZzZXQ8MD4oKSk7CisgICAgRVhQRUNU
X0VRKDgsIEw6OlBhcnRpYWwoNSwgMykuT2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9FUSgyNCwg
TDo6UGFydGlhbCg1LCAzKS5PZmZzZXQ8Mj4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRp
YWwoMCwgMCwgMCkuT2Zmc2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAs
IDAsIDApLk9mZnNldDwxPigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwLCAwLCAw
KS5PZmZzZXQ8Mj4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMSwgMCwgMCkuT2Zm
c2V0PDA+KCkpOworICAgIEVYUEVDVF9FUSg0LCBMOjpQYXJ0aWFsKDEsIDAsIDApLk9mZnNldDwx
PigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCgxLCAwLCAwKS5PZmZzZXQ8Mj4oKSk7
CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoNSwgMywgMSkuT2Zmc2V0PDA+KCkpOworICAg
IEVYUEVDVF9FUSgyNCwgTDo6UGFydGlhbCg1LCAzLCAxKS5PZmZzZXQ8Mj4oKSk7CisgICAgRVhQ
RUNUX0VRKDgsIEw6OlBhcnRpYWwoNSwgMywgMSkuT2Zmc2V0PDE+KCkpOworICAgIEVYUEVDVF9F
USgwLCBMKDUsIDMsIDEpLk9mZnNldDwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMjQsIEwoNSwgMywg
MSkuT2Zmc2V0PDI+KCkpOworICAgIEVYUEVDVF9FUSg4LCBMKDUsIDMsIDEpLk9mZnNldDwxPigp
KTsKKyAgfQorfQorCitURVNUKExheW91dCwgT2Zmc2V0QnlUeXBlKSB7CisgIHsKKyAgICB1c2lu
ZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKCkuT2Zm
c2V0PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDMpLk9mZnNldDxp
bnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTCgzKS5PZmZzZXQ8aW50MzJfdD4oKSk7Cisg
IH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+Owor
ICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKCkuT2Zmc2V0PGludDhfdD4oKSk7CisgICAgRVhQ
RUNUX0VRKDAsIEw6OlBhcnRpYWwoMCkuT2Zmc2V0PGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VR
KDAsIEw6OlBhcnRpYWwoMCkuT2Zmc2V0PGludDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBM
OjpQYXJ0aWFsKDEpLk9mZnNldDxpbnQ4X3Q+KCkpOworICAgIEVYUEVDVF9FUSg0LCBMOjpQYXJ0
aWFsKDEpLk9mZnNldDxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCg1
KS5PZmZzZXQ8aW50OF90PigpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCg1KS5PZmZz
ZXQ8aW50MzJfdD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCwgMCkuT2Zmc2V0
PGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCwgMCkuT2Zmc2V0PGlu
dDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDApLk9mZnNldDxJbnQx
Mjg+KCkpOworICAgIEVYUEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDEsIDApLk9mZnNldDxpbnQ4X3Q+
KCkpOworICAgIEVYUEVDVF9FUSg0LCBMOjpQYXJ0aWFsKDEsIDApLk9mZnNldDxpbnQzMl90Pigp
KTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCgxLCAwKS5PZmZzZXQ8SW50MTI4PigpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCg1LCAzKS5PZmZzZXQ8aW50OF90PigpKTsKKyAg
ICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCg1LCAzKS5PZmZzZXQ8aW50MzJfdD4oKSk7CisgICAg
RVhQRUNUX0VRKDI0LCBMOjpQYXJ0aWFsKDUsIDMpLk9mZnNldDxJbnQxMjg+KCkpOworICAgIEVY
UEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDAsIDApLk9mZnNldDxpbnQ4X3Q+KCkpOworICAgIEVY
UEVDVF9FUSgwLCBMOjpQYXJ0aWFsKDAsIDAsIDApLk9mZnNldDxpbnQzMl90PigpKTsKKyAgICBF
WFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwLCAwLCAwKS5PZmZzZXQ8SW50MTI4PigpKTsKKyAgICBF
WFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgxLCAwLCAwKS5PZmZzZXQ8aW50OF90PigpKTsKKyAgICBF
WFBFQ1RfRVEoNCwgTDo6UGFydGlhbCgxLCAwLCAwKS5PZmZzZXQ8aW50MzJfdD4oKSk7CisgICAg
RVhQRUNUX0VRKDgsIEw6OlBhcnRpYWwoMSwgMCwgMCkuT2Zmc2V0PEludDEyOD4oKSk7CisgICAg
RVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoNSwgMywgMSkuT2Zmc2V0PGludDhfdD4oKSk7CisgICAg
RVhQRUNUX0VRKDI0LCBMOjpQYXJ0aWFsKDUsIDMsIDEpLk9mZnNldDxJbnQxMjg+KCkpOworICAg
IEVYUEVDVF9FUSg4LCBMOjpQYXJ0aWFsKDUsIDMsIDEpLk9mZnNldDxpbnQzMl90PigpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgTCg1LCAzLCAxKS5PZmZzZXQ8aW50OF90PigpKTsKKyAgICBFWFBFQ1Rf
RVEoMjQsIEwoNSwgMywgMSkuT2Zmc2V0PEludDEyOD4oKSk7CisgICAgRVhQRUNUX0VRKDgsIEwo
NSwgMywgMSkuT2Zmc2V0PGludDMyX3Q+KCkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBPZmZz
ZXRzKSB7CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9U
SEFUKEw6OlBhcnRpYWwoKS5PZmZzZXRzKCksIEVsZW1lbnRzQXJlKDApKTsKKyAgICBFWFBFQ1Rf
VEhBVChMOjpQYXJ0aWFsKDMpLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCkpOworICAgIEVYUEVD
VF9USEFUKEwoMykuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgwKSk7CisgIH0KKyAgeworICAgIHVz
aW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAgRVhQRUNUX1RIQVQoTDo6UGFy
dGlhbCgpLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCkpOworICAgIEVYUEVDVF9USEFUKEw6OlBh
cnRpYWwoMykuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgwLCAxMikpOworICAgIEVYUEVDVF9USEFU
KEw6OlBhcnRpYWwoMywgNSkuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgwLCAxMikpOworICAgIEVY
UEVDVF9USEFUKEwoMywgNSkuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgwLCAxMikpOworICB9Cisg
IHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBF
WFBFQ1RfVEhBVChMOjpQYXJ0aWFsKCkuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgwKSk7CisgICAg
RVhQRUNUX1RIQVQoTDo6UGFydGlhbCgxKS5PZmZzZXRzKCksIEVsZW1lbnRzQXJlKDAsIDQpKTsK
KyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDUpLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCwg
OCkpOworICAgIEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoMCwgMCkuT2Zmc2V0cygpLCBFbGVtZW50
c0FyZSgwLCAwLCAwKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgxLCAwKS5PZmZzZXRz
KCksIEVsZW1lbnRzQXJlKDAsIDQsIDgpKTsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKDUs
IDMpLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCwgOCwgMjQpKTsKKyAgICBFWFBFQ1RfVEhBVChM
OjpQYXJ0aWFsKDAsIDAsIDApLk9mZnNldHMoKSwgRWxlbWVudHNBcmUoMCwgMCwgMCkpOworICAg
IEVYUEVDVF9USEFUKEw6OlBhcnRpYWwoMSwgMCwgMCkuT2Zmc2V0cygpLCBFbGVtZW50c0FyZSgw
LCA0LCA4KSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCg1LCAzLCAxKS5PZmZzZXRzKCks
IEVsZW1lbnRzQXJlKDAsIDgsIDI0KSk7CisgICAgRVhQRUNUX1RIQVQoTCg1LCAzLCAxKS5PZmZz
ZXRzKCksIEVsZW1lbnRzQXJlKDAsIDgsIDI0KSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIEFs
bG9jU2l6ZSkgeworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBF
Q1RfRVEoMCwgTDo6UGFydGlhbCgwKS5BbGxvY1NpemUoKSk7CisgICAgRVhQRUNUX0VRKDEyLCBM
OjpQYXJ0aWFsKDMpLkFsbG9jU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMTIsIEwoMykuQWxsb2NT
aXplKCkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3QsIGludDMyX3Q+
OworICAgIEVYUEVDVF9FUSgzMiwgTDo6UGFydGlhbCgzLCA1KS5BbGxvY1NpemUoKSk7CisgICAg
RVhQRUNUX0VRKDMyLCBMKDMsIDUpLkFsbG9jU2l6ZSgpKTsKKyAgfQorICB7CisgICAgdXNpbmcg
TCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDAsIEw6
OlBhcnRpYWwoMCwgMCwgMCkuQWxsb2NTaXplKCkpOworICAgIEVYUEVDVF9FUSg4LCBMOjpQYXJ0
aWFsKDEsIDAsIDApLkFsbG9jU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoOCwgTDo6UGFydGlhbCgw
LCAxLCAwKS5BbGxvY1NpemUoKSk7CisgICAgRVhQRUNUX0VRKDE2LCBMOjpQYXJ0aWFsKDAsIDAs
IDEpLkFsbG9jU2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMjQsIEw6OlBhcnRpYWwoMSwgMSwgMSku
QWxsb2NTaXplKCkpOworICAgIEVYUEVDVF9FUSgxMzYsIEw6OlBhcnRpYWwoMywgNSwgNykuQWxs
b2NTaXplKCkpOworICAgIEVYUEVDVF9FUSgxMzYsIEwoMywgNSwgNykuQWxsb2NTaXplKCkpOwor
ICB9Cit9CisKK1RFU1QoTGF5b3V0LCBTaXplQnlJbmRleCkgeworICB7CisgICAgdXNpbmcgTCA9
IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5TaXplPDA+
KCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNpemU8MD4oKSk7CisgICAgRVhQ
RUNUX0VRKDMsIEwoMykuU2l6ZTwwPigpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91
dDxpbnQzMl90LCBpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgwKS5TaXpl
PDA+KCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNpemU8MD4oKSk7CisgICAg
RVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywgNSkuU2l6ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEo
NSwgTDo6UGFydGlhbCgzLCA1KS5TaXplPDE+KCkpOworICAgIEVYUEVDVF9FUSgzLCBMKDMsIDUp
LlNpemU8MD4oKSk7CisgICAgRVhQRUNUX0VRKDUsIEwoMywgNSkuU2l6ZTwxPigpKTsKKyAgfQor
ICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAg
RVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2l6ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoMywg
TDo6UGFydGlhbCgzLCA1KS5TaXplPDA+KCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFs
KDMsIDUpLlNpemU8MT4oKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywgNSwgNyku
U2l6ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTDo6UGFydGlhbCgzLCA1LCA3KS5TaXplPDE+
KCkpOworICAgIEVYUEVDVF9FUSg3LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNpemU8Mj4oKSk7Cisg
ICAgRVhQRUNUX0VRKDMsIEwoMywgNSwgNykuU2l6ZTwwPigpKTsKKyAgICBFWFBFQ1RfRVEoNSwg
TCgzLCA1LCA3KS5TaXplPDE+KCkpOworICAgIEVYUEVDVF9FUSg3LCBMKDMsIDUsIDcpLlNpemU8
Mj4oKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFNpemVCeVR5cGUpIHsKKyAgeworICAgIHVz
aW5nIEwgPSBMYXlvdXQ8aW50MzJfdD47CisgICAgRVhQRUNUX0VRKDAsIEw6OlBhcnRpYWwoMCku
U2l6ZTxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TaXplPGlu
dDMyX3Q+KCkpOworICAgIEVYUEVDVF9FUSgzLCBMKDMpLlNpemU8aW50MzJfdD4oKSk7CisgIH0K
KyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBJbnQxMjg+OworICAg
IEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNpemU8aW50OF90PigpKTsKKyAgICBFWFBFQ1Rf
RVEoMywgTDo6UGFydGlhbCgzLCA1KS5TaXplPGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDUs
IEw6OlBhcnRpYWwoMywgNSkuU2l6ZTxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoMywgTDo6
UGFydGlhbCgzLCA1LCA3KS5TaXplPGludDhfdD4oKSk7CisgICAgRVhQRUNUX0VRKDUsIEw6OlBh
cnRpYWwoMywgNSwgNykuU2l6ZTxpbnQzMl90PigpKTsKKyAgICBFWFBFQ1RfRVEoNywgTDo6UGFy
dGlhbCgzLCA1LCA3KS5TaXplPEludDEyOD4oKSk7CisgICAgRVhQRUNUX0VRKDMsIEwoMywgNSwg
NykuU2l6ZTxpbnQ4X3Q+KCkpOworICAgIEVYUEVDVF9FUSg1LCBMKDMsIDUsIDcpLlNpemU8aW50
MzJfdD4oKSk7CisgICAgRVhQRUNUX0VRKDcsIEwoMywgNSwgNykuU2l6ZTxJbnQxMjg+KCkpOwor
ICB9Cit9CisKK1RFU1QoTGF5b3V0LCBTaXplcykgeworICB7CisgICAgdXNpbmcgTCA9IExheW91
dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKCkuU2l6ZXMoKSwgRWxlbWVu
dHNBcmUoKSk7CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzKS5TaXplcygpLCBFbGVtZW50
c0FyZSgzKSk7CisgICAgRVhQRUNUX1RIQVQoTCgzKS5TaXplcygpLCBFbGVtZW50c0FyZSgzKSk7
CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAg
RVhQRUNUX1RIQVQoTDo6UGFydGlhbCgpLlNpemVzKCksIEVsZW1lbnRzQXJlKCkpOworICAgIEVY
UEVDVF9USEFUKEw6OlBhcnRpYWwoMykuU2l6ZXMoKSwgRWxlbWVudHNBcmUoMykpOworICAgIEVY
UEVDVF9USEFUKEw6OlBhcnRpYWwoMywgNSkuU2l6ZXMoKSwgRWxlbWVudHNBcmUoMywgNSkpOwor
ICAgIEVYUEVDVF9USEFUKEwoMywgNSkuU2l6ZXMoKSwgRWxlbWVudHNBcmUoMywgNSkpOworICB9
CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAg
ICBFWFBFQ1RfVEhBVChMOjpQYXJ0aWFsKCkuU2l6ZXMoKSwgRWxlbWVudHNBcmUoKSk7CisgICAg
RVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzKS5TaXplcygpLCBFbGVtZW50c0FyZSgzKSk7CisgICAg
RVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzLCA1KS5TaXplcygpLCBFbGVtZW50c0FyZSgzLCA1KSk7
CisgICAgRVhQRUNUX1RIQVQoTDo6UGFydGlhbCgzLCA1LCA3KS5TaXplcygpLCBFbGVtZW50c0Fy
ZSgzLCA1LCA3KSk7CisgICAgRVhQRUNUX1RIQVQoTCgzLCA1LCA3KS5TaXplcygpLCBFbGVtZW50
c0FyZSgzLCA1LCA3KSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFBvaW50ZXJCeUluZGV4KSB7
CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgcFsxMDBdID0ge307
CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBE
aXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKCkuUG9pbnRlcjwwPihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4o
TDo6UGFydGlhbCgzKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5j
ZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMKDMpLlBvaW50ZXI8MD4ocCkpKSk7CisgIH0KKyAg
eworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAgRVhQRUNUX0VR
KDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoKS5Qb2ludGVy
PDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMy
X3QqPihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDEyLCBE
aXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8MT4o
cCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMywgNSkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBF
WFBFQ1RfRVEoMTIsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJf
dCo+KEw6OlBhcnRpYWwoMywgNSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
RGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTCgzLCA1KS5Qb2ludGVyPDA+KHApKSkp
OworICAgIEVYUEVDVF9FUSgxMiwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTCgz
LCA1KS5Qb2ludGVyPDE+KHApKSkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGlu
dDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlw
ZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDApLlBv
aW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3Qg
aW50MzJfdCo+KEw6OlBhcnRpYWwoMCkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDEpLlBvaW50ZXI8
MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDQsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJf
dCo+KEw6OlBhcnRpYWwoMSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlz
dGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDUpLlBvaW50ZXI8MD4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6
OlBhcnRpYWwoNSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAg
ICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDAsIDApLlBv
aW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNl
KHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMCwgMCkuUG9pbnRlcjwxPihwKSkp
KTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25z
dCBJbnQxMjgqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNU
X0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6
UGFydGlhbCgxLCAwKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSg0LAorICAgICAg
ICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDEsIDAp
LlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsCisgICAgICAgICAgICAgIERpc3Rh
bmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2ludGVyPDI+KHAp
KSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNv
bnN0IGludDhfdCo+KEw6OlBhcnRpYWwoNSwgMykuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBF
Q1RfRVEoOCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4o
TDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSgyNCwKKyAg
ICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPihMOjpQYXJ0aWFsKDUs
IDMpLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5j
ZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwoMCwgMCwgMCkuUG9pbnRlcjwwPihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3Qg
aW50MzJfdCo+KEw6OlBhcnRpYWwoMCwgMCwgMCkuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oTDo6UGFy
dGlhbCgwLCAwLCAwKS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAg
MCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDEsIDAsIDApLlBv
aW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA0LCBEaXN0YW5jZShwLCBU
eXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDEsIDAsIDApLlBvaW50ZXI8MT4ocCkpKSk7
CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IEludDEy
OCo+KEw6OlBhcnRpYWwoMSwgMCwgMCkuUG9pbnRlcjwyPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEo
CisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCg1
LCAzLCAxKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMjQsCisg
ICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oTDo6UGFydGlhbCg1LCAzLCAx
KS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwgRGlzdGFuY2Uo
cCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCg1LCAzLCAxKS5Qb2ludGVyPDE+KHAp
KSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEwo
NSwgMywgMSkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMjQsIERpc3RhbmNlKHAs
IFR5cGU8Y29uc3QgSW50MTI4Kj4oTCg1LCAzLCAxKS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVY
UEVDVF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMKDUsIDMsIDEpLlBv
aW50ZXI8MT4ocCkpKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFBvaW50ZXJCeVR5cGUpIHsK
KyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgY29uc3QgdW5zaWduZWQgY2hhciBwWzEwMF0gPSB7fTsK
KyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdD47CisgICAgRVhQRUNUX0VRKDAsCisg
ICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwo
KS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAg
ICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8
aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3Qg
aW50MzJfdCo+KEwoMykuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgfQorICB7CisgICAgdXNp
bmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDAs
IERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCgpLlBvaW50ZXI8aW50
OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwg
VHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDApLlBvaW50ZXI8aW50OF90PihwKSkpKTsK
KyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBp
bnQzMl90Kj4oTDo6UGFydGlhbCgwKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVD
VF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6
OlBhcnRpYWwoMSkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSg0LAorICAg
ICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0aWFsKDEp
LlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAg
IERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50OF90Kj4oTDo6UGFydGlhbCg1KS5Qb2ludGVyPGlu
dDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAs
IFR5cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoNSkuUG9pbnRlcjxpbnQzMl90PihwKSkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50
OF90Kj4oTDo6UGFydGlhbCgwLCAwKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNU
X0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDMyX3QqPihMOjpQYXJ0
aWFsKDAsIDApLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAg
ICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IEludDEyOCo+KEw6OlBhcnRpYWwo
MCwgMCkuUG9pbnRlcjxJbnQxMjg+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwg
RGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQ4X3QqPihMOjpQYXJ0aWFsKDEsIDApLlBvaW50ZXI8
aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDQsIERpc3RhbmNlKHAsIFR5
cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoMSwgMCkuUG9pbnRlcjxpbnQzMl90PihwKSkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
Y29uc3QgSW50MTI4Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7Cisg
ICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+
KEw6OlBhcnRpYWwoNSwgMykuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgK
KyAgICAgICAgOCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCg1
LCAzKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMjQs
CisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgSW50MTI4Kj4oTDo6UGFydGlhbCg1LCAz
KS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAg
ICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRpYWwoMCwgMCwgMCku
UG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAg
ICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlhbCgwLCAwLCAwKS5Q
b2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBl
PGNvbnN0IEludDEyOCo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDo6UGFy
dGlhbCgwLCAwLCAwKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKAorICAg
ICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhfdCo+KEw6OlBhcnRp
YWwoMSwgMCwgMCkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAg
ICAgNCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBpbnQzMl90Kj4oTDo6UGFydGlh
bCgxLCAwLCAwKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSg4LCBEaXN0
YW5jZShwLCBUeXBlPGNvbnN0IEludDEyOCo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQ
RUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPGNvbnN0IGludDhf
dCo+KEw6OlBhcnRpYWwoNSwgMywgMSkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVD
VF9FUSgyNCwgRGlzdGFuY2UocCwgVHlwZTxjb25zdCBJbnQxMjgqPigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMOjpQYXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8SW50MTI4Pihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsCisgICAgICAgIERpc3RhbmNlKHAsIFR5
cGU8Y29uc3QgaW50MzJfdCo+KEw6OlBhcnRpYWwoNSwgMywgMSkuUG9pbnRlcjxpbnQzMl90Pihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoMjQsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
Y29uc3QgSW50MTI4Kj4oTCg1LCAzLCAxKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQ
RUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8Y29uc3QgaW50MzJfdCo+KEwoNSwgMywgMSkuUG9p
bnRlcjxpbnQzMl90PihwKSkpKTsKKyAgfQorfQorCitURVNUKExheW91dCwgTXV0YWJsZVBvaW50
ZXJCeUluZGV4KSB7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIHVuc2lnbmVkIGNoYXIgcFsxMDBd
OworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwg
RGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgpLlBvaW50ZXI8MD4ocCkpKSk7
CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwo
MykuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxp
bnQzMl90Kj4oTCgzKS5Qb2ludGVyPDA+KHApKSkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0g
TGF5b3V0PGludDMyX3QsIGludDMyX3Q+OworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBU
eXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgzKS5Qb2ludGVyPDA+
KHApKSkpOworICAgIEVYUEVDVF9FUSgxMiwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6
UGFydGlhbCgzKS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShw
LCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDMsIDUpLlBvaW50ZXI8MD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDEyLCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDMsIDUp
LlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50
MzJfdCo+KEwoMywgNSkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMTIsIERpc3Rh
bmNlKHAsIFR5cGU8aW50MzJfdCo+KEwoMywgNSkuUG9pbnRlcjwxPihwKSkpKTsKKyAgfQorICB7
CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQ
RUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgpLlBvaW50ZXI8
MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6
UGFydGlhbCgwKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShw
LCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDApLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQ
RUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgxKS5Qb2ludGVy
PDA+KHApKSkpOworICAgIEVYUEVDVF9FUSg0LCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihM
OjpQYXJ0aWFsKDEpLlBvaW50ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNl
KHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCg1KS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVY
UEVDVF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDUpLlBvaW50
ZXI8MT4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4o
TDo6UGFydGlhbCgwLCAwKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0
YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8MT4ocCkpKSk7
CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6UGFydGlhbCgw
LCAwKS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBl
PGludDhfdCo+KEw6OlBhcnRpYWwoMSwgMCkuUG9pbnRlcjwwPihwKSkpKTsKKyAgICBFWFBFQ1Rf
RVEoNCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2ludGVy
PDE+KHApKSkpOworICAgIEVYUEVDVF9FUSg4LCBEaXN0YW5jZShwLCBUeXBlPEludDEyOCo+KEw6
OlBhcnRpYWwoMSwgMCkuUG9pbnRlcjwyPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFu
Y2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDUsIDMpLlBvaW50ZXI8MD4ocCkpKSk7Cisg
ICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoNSwg
MykuUG9pbnRlcjwxPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMjQsIERpc3RhbmNlKHAsIFR5cGU8
SW50MTI4Kj4oTDo6UGFydGlhbCg1LCAzKS5Qb2ludGVyPDI+KHApKSkpOworICAgIEVYUEVDVF9F
USgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEw6OlBhcnRpYWwoMCwgMCwgMCkuUG9pbnRl
cjwwPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4o
TDo6UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPDE+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBE
aXN0YW5jZShwLCBUeXBlPEludDEyOCo+KEw6OlBhcnRpYWwoMCwgMCwgMCkuUG9pbnRlcjwyPihw
KSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0
aWFsKDEsIDAsIDApLlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDQsIERpc3RhbmNl
KHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMSwgMCwgMCkuUG9pbnRlcjwxPihwKSkpKTsK
KyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQYXJ0aWFsKDEs
IDAsIDApLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5
cGU8aW50OF90Kj4oTDo6UGFydGlhbCg1LCAzLCAxKS5Qb2ludGVyPDA+KHApKSkpOworICAgIEVY
UEVDVF9FUSgyNCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihMOjpQ
YXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8Mj4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3Rh
bmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoNSwgMywgMSkuUG9pbnRlcjwxPihwKSkp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMKDUsIDMsIDEp
LlBvaW50ZXI8MD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDI0LCBEaXN0YW5jZShwLCBUeXBlPElu
dDEyOCo+KEwoNSwgMywgMSkuUG9pbnRlcjwyPihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlz
dGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTCg1LCAzLCAxKS5Qb2ludGVyPDE+KHApKSkpOworICB9
Cit9CisKK1RFU1QoTGF5b3V0LCBNdXRhYmxlUG9pbnRlckJ5VHlwZSkgeworICBhbGlnbmFzKG1h
eF9hbGlnbl90KSB1bnNpZ25lZCBjaGFyIHBbMTAwXTsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlv
dXQ8aW50MzJfdD47CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+
KEw6OlBhcnRpYWwoKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBE
aXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDMpLlBvaW50ZXI8aW50MzJfdD4o
cCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEwoMyku
UG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxp
bnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5
cGU8aW50OF90Kj4oTDo6UGFydGlhbCgpLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDApLlBvaW50ZXI8
aW50OF90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90
Kj4oTDo6UGFydGlhbCgwKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgw
LCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEw6OlBhcnRpYWwoMSkuUG9pbnRlcjxpbnQ4X3Q+
KHApKSkpOworICAgIEVYUEVDVF9FUSg0LCBEaXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQ
YXJ0aWFsKDEpLlBvaW50ZXI8aW50MzJfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3Rh
bmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCg1KS5Qb2ludGVyPGludDhfdD4ocCkpKSk7
CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwo
NSkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwg
VHlwZTxpbnQ4X3QqPihMOjpQYXJ0aWFsKDAsIDApLlBvaW50ZXI8aW50OF90PihwKSkpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlhbCgwLCAw
KS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLAorICAgICAgICAgICAg
ICBEaXN0YW5jZShwLCBUeXBlPEludDEyOCo+KEw6OlBhcnRpYWwoMCwgMCkuUG9pbnRlcjxJbnQx
Mjg+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPGludDhfdCo+KEw6
OlBhcnRpYWwoMSwgMCkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSg0LCBE
aXN0YW5jZShwLCBUeXBlPGludDMyX3QqPihMOjpQYXJ0aWFsKDEsIDApLlBvaW50ZXI8aW50MzJf
dD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5
cGU8SW50MTI4Kj4oTDo6UGFydGlhbCgxLCAwKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAg
RVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCg1LCAzKS5Q
b2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8
aW50MzJfdCo+KEw6OlBhcnRpYWwoNSwgMykuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBF
WFBFQ1RfRVEoMjQsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6
UGFydGlhbCg1LCAzKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisg
ICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCgwLCAwLCAw
KS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAg
IERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwoMCwgMCwgMCkuUG9pbnRlcjxp
bnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5
cGU8SW50MTI4Kj4oTDo6UGFydGlhbCgwLCAwLCAwKS5Qb2ludGVyPEludDEyOD4ocCkpKSk7Cisg
ICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8aW50OF90Kj4o
TDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVyPGludDhfdD4ocCkpKSk7CisgICAgRVhQRUNUX0VR
KDQsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8aW50MzJfdCo+KEw6OlBhcnRpYWwo
MSwgMCwgMCkuUG9pbnRlcjxpbnQzMl90PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAg
IDgsIERpc3RhbmNlKHAsIFR5cGU8SW50MTI4Kj4oTDo6UGFydGlhbCgxLCAwLCAwKS5Qb2ludGVy
PEludDEyOD4ocCkpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNl
KHAsIFR5cGU8aW50OF90Kj4oTDo6UGFydGlhbCg1LCAzLCAxKS5Qb2ludGVyPGludDhfdD4ocCkp
KSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAyNCwgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgq
PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlBvaW50ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1Rf
RVEoOCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxpbnQzMl90Kj4oTDo6UGFydGlh
bCg1LCAzLCAxKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0
YW5jZShwLCBUeXBlPGludDhfdCo+KEwoNSwgMywgMSkuUG9pbnRlcjxpbnQ4X3Q+KHApKSkpOwor
ICAgIEVYUEVDVF9FUSgyNCwgRGlzdGFuY2UocCwgVHlwZTxJbnQxMjgqPihMKDUsIDMsIDEpLlBv
aW50ZXI8SW50MTI4PihwKSkpKTsKKyAgICBFWFBFQ1RfRVEoOCwgRGlzdGFuY2UocCwgVHlwZTxp
bnQzMl90Kj4oTCg1LCAzLCAxKS5Qb2ludGVyPGludDMyX3Q+KHApKSkpOworICB9Cit9CisKK1RF
U1QoTGF5b3V0LCBQb2ludGVycykgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNp
Z25lZCBjaGFyIHBbMTAwXSA9IHt9OworICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50OF90
LCBJbnQxMjg+OworICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgpOworICAgIEVY
UEVDVF9FUShzdGQ6Om1ha2VfdHVwbGUoeC5Qb2ludGVyPDA+KHApKSwKKyAgICAgICAgICAgICAg
VHlwZTxzdGQ6OnR1cGxlPGNvbnN0IGludDhfdCo+Pih4LlBvaW50ZXJzKHApKSk7CisgIH0KKyAg
eworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRpYWwoMSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6
bWFrZV90dXBsZSh4LlBvaW50ZXI8MD4ocCksIHguUG9pbnRlcjwxPihwKSksCisgICAgICAgICAg
ICAgIChUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50OF90KiwgY29uc3QgaW50OF90Kj4+KHguUG9p
bnRlcnMocCkpKSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRpYWwoMSwg
Mik7CisgICAgRVhQRUNUX0VRKAorICAgICAgICBzdGQ6Om1ha2VfdHVwbGUoeC5Qb2ludGVyPDA+
KHApLCB4LlBvaW50ZXI8MT4ocCksIHguUG9pbnRlcjwyPihwKSksCisgICAgICAgIChUeXBlPHN0
ZDo6dHVwbGU8Y29uc3QgaW50OF90KiwgY29uc3QgaW50OF90KiwgY29uc3QgSW50MTI4Kj4+KAor
ICAgICAgICAgICAgeC5Qb2ludGVycyhwKSkpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4
ID0gTDo6UGFydGlhbCgxLCAyLCAzKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIHN0ZDo6bWFr
ZV90dXBsZSh4LlBvaW50ZXI8MD4ocCksIHguUG9pbnRlcjwxPihwKSwgeC5Qb2ludGVyPDI+KHAp
KSwKKyAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxjb25zdCBpbnQ4X3QqLCBjb25zdCBpbnQ4X3Qq
LCBjb25zdCBJbnQxMjgqPj4oCisgICAgICAgICAgICB4LlBvaW50ZXJzKHApKSkpOworICB9Cisg
IHsKKyAgICBjb25zdCBMIHgoMSwgMiwgMyk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICBzdGQ6
Om1ha2VfdHVwbGUoeC5Qb2ludGVyPDA+KHApLCB4LlBvaW50ZXI8MT4ocCksIHguUG9pbnRlcjwy
PihwKSksCisgICAgICAgIChUeXBlPHN0ZDo6dHVwbGU8Y29uc3QgaW50OF90KiwgY29uc3QgaW50
OF90KiwgY29uc3QgSW50MTI4Kj4+KAorICAgICAgICAgICAgeC5Qb2ludGVycyhwKSkpKTsKKyAg
fQorfQorCitURVNUKExheW91dCwgTXV0YWJsZVBvaW50ZXJzKSB7CisgIGFsaWduYXMobWF4X2Fs
aWduX3QpIHVuc2lnbmVkIGNoYXIgcFsxMDBdOworICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwg
aW50OF90LCBJbnQxMjg+OworICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgpOwor
ICAgIEVYUEVDVF9FUShzdGQ6Om1ha2VfdHVwbGUoeC5Qb2ludGVyPDA+KHApKSwKKyAgICAgICAg
ICAgICAgVHlwZTxzdGQ6OnR1cGxlPGludDhfdCo+Pih4LlBvaW50ZXJzKHApKSk7CisgIH0KKyAg
eworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRpYWwoMSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6
bWFrZV90dXBsZSh4LlBvaW50ZXI8MD4ocCksIHguUG9pbnRlcjwxPihwKSksCisgICAgICAgICAg
ICAgIChUeXBlPHN0ZDo6dHVwbGU8aW50OF90KiwgaW50OF90Kj4+KHguUG9pbnRlcnMocCkpKSk7
CisgIH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRpYWwoMSwgMik7CisgICAgRVhQ
RUNUX0VRKAorICAgICAgICBzdGQ6Om1ha2VfdHVwbGUoeC5Qb2ludGVyPDA+KHApLCB4LlBvaW50
ZXI8MT4ocCksIHguUG9pbnRlcjwyPihwKSksCisgICAgICAgIChUeXBlPHN0ZDo6dHVwbGU8aW50
OF90KiwgaW50OF90KiwgSW50MTI4Kj4+KHguUG9pbnRlcnMocCkpKSk7CisgIH0KKyAgeworICAg
IGNvbnN0IGF1dG8geCA9IEw6OlBhcnRpYWwoMSwgMiwgMyk7CisgICAgRVhQRUNUX0VRKAorICAg
ICAgICBzdGQ6Om1ha2VfdHVwbGUoeC5Qb2ludGVyPDA+KHApLCB4LlBvaW50ZXI8MT4ocCksIHgu
UG9pbnRlcjwyPihwKSksCisgICAgICAgIChUeXBlPHN0ZDo6dHVwbGU8aW50OF90KiwgaW50OF90
KiwgSW50MTI4Kj4+KHguUG9pbnRlcnMocCkpKSk7CisgIH0KKyAgeworICAgIGNvbnN0IEwgeCgx
LCAyLCAzKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIHN0ZDo6bWFrZV90dXBsZSh4LlBvaW50
ZXI8MD4ocCksIHguUG9pbnRlcjwxPihwKSwgeC5Qb2ludGVyPDI+KHApKSwKKyAgICAgICAgKFR5
cGU8c3RkOjp0dXBsZTxpbnQ4X3QqLCBpbnQ4X3QqLCBJbnQxMjgqPj4oeC5Qb2ludGVycyhwKSkp
KTsKKyAgfQorfQorCitURVNUKExheW91dCwgU2xpY2VCeUluZGV4U2l6ZSkgeworICBhbGlnbmFz
KG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIHBbMTAwXSA9IHt9OworICB7CisgICAg
dXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFydGlhbCgw
KS5TbGljZTwwPihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNs
aWNlPDA+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEwoMykuU2xpY2U8MD4ocCkuc2l6
ZSgpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90LCBpbnQzMl90PjsK
KyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTwwPihwKS5zaXplKCkpOworICAg
IEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDE+KHApLnNpemUoKSk7CisgICAg
RVhQRUNUX0VRKDUsIEwoMywgNSkuU2xpY2U8MT4ocCkuc2l6ZSgpKTsKKyAgfQorICB7CisgICAg
dXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VR
KDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywg
TDo6UGFydGlhbCgzLCA1KS5TbGljZTwwPihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1LCBM
OjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDE+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEw6
OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwg
TDo6UGFydGlhbCgzLCA1LCA3KS5TbGljZTwxPihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg3
LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNsaWNlPDI+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KDMsIEwoMywgNSwgNykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTCgz
LCA1LCA3KS5TbGljZTwxPihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg3LCBMKDMsIDUsIDcp
LlNsaWNlPDI+KHApLnNpemUoKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIFNsaWNlQnlUeXBl
U2l6ZSkgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIHBbMTAw
XSA9IHt9OworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1Rf
RVEoMCwgTDo6UGFydGlhbCgwKS5TbGljZTxpbnQzMl90PihwKS5zaXplKCkpOworICAgIEVYUEVD
VF9FUSgzLCBMOjpQYXJ0aWFsKDMpLlNsaWNlPGludDMyX3Q+KHApLnNpemUoKSk7CisgICAgRVhQ
RUNUX0VRKDMsIEwoMykuU2xpY2U8aW50MzJfdD4ocCkuc2l6ZSgpKTsKKyAgfQorICB7CisgICAg
dXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQRUNUX0VR
KDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8aW50OF90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9F
USgzLCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPGludDhfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoNSwgTDo6UGFydGlhbCgzLCA1KS5TbGljZTxpbnQzMl90PihwKS5zaXplKCkpOworICAg
IEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNsaWNlPGludDhfdD4ocCkuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoNSwgTDo6UGFydGlhbCgzLCA1LCA3KS5TbGljZTxpbnQzMl90Pihw
KS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg3LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNsaWNlPElu
dDEyOD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMywgTCgzLCA1LCA3KS5TbGljZTxpbnQ4
X3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDUsIEwoMywgNSwgNykuU2xpY2U8aW50MzJf
dD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNywgTCgzLCA1LCA3KS5TbGljZTxJbnQxMjg+
KHApLnNpemUoKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIE11dGFibGVTbGljZUJ5SW5kZXhT
aXplKSB7CisgIGFsaWduYXMobWF4X2FsaWduX3QpIHVuc2lnbmVkIGNoYXIgcFsxMDBdOworICB7
CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoMCwgTDo6UGFy
dGlhbCgwKS5TbGljZTwwPihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzLCBMOjpQYXJ0aWFs
KDMpLlNsaWNlPDA+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMsIEwoMykuU2xpY2U8MD4o
cCkuc2l6ZSgpKTsKKyAgfQorICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90LCBpbnQz
Ml90PjsKKyAgICBFWFBFQ1RfRVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTwwPihwKS5zaXplKCkp
OworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDE+KHApLnNpemUoKSk7
CisgICAgRVhQRUNUX0VRKDUsIEwoMywgNSkuU2xpY2U8MT4ocCkuc2l6ZSgpKTsKKyAgfQorICB7
CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIEludDEyOD47CisgICAgRVhQ
RUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoMywgTDo6UGFydGlhbCgzLCA1KS5TbGljZTwwPihwKS5zaXplKCkpOworICAgIEVYUEVDVF9F
USg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPDE+KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KDMsIEw6OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoNSwgTDo6UGFydGlhbCgzLCA1LCA3KS5TbGljZTwxPihwKS5zaXplKCkpOworICAgIEVYUEVD
VF9FUSg3LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNsaWNlPDI+KHApLnNpemUoKSk7CisgICAgRVhQ
RUNUX0VRKDMsIEwoMywgNSwgNykuU2xpY2U8MD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
NSwgTCgzLCA1LCA3KS5TbGljZTwxPihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg3LCBMKDMs
IDUsIDcpLlNsaWNlPDI+KHApLnNpemUoKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIE11dGFi
bGVTbGljZUJ5VHlwZVNpemUpIHsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgdW5zaWduZWQgY2hh
ciBwWzEwMF07CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVYUEVD
VF9FUSgwLCBMOjpQYXJ0aWFsKDApLlNsaWNlPGludDMyX3Q+KHApLnNpemUoKSk7CisgICAgRVhQ
RUNUX0VRKDMsIEw6OlBhcnRpYWwoMykuU2xpY2U8aW50MzJfdD4ocCkuc2l6ZSgpKTsKKyAgICBF
WFBFQ1RfRVEoMywgTCgzKS5TbGljZTxpbnQzMl90PihwKS5zaXplKCkpOworICB9CisgIHsKKyAg
ICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBFQ1Rf
RVEoMywgTDo6UGFydGlhbCgzKS5TbGljZTxpbnQ4X3Q+KHApLnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKDMsIEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8aW50OF90PihwKS5zaXplKCkpOworICAgIEVY
UEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUpLlNsaWNlPGludDMyX3Q+KHApLnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKDMsIEw6OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8aW50OF90PihwKS5zaXpl
KCkpOworICAgIEVYUEVDVF9FUSg1LCBMOjpQYXJ0aWFsKDMsIDUsIDcpLlNsaWNlPGludDMyX3Q+
KHApLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDcsIEw6OlBhcnRpYWwoMywgNSwgNykuU2xpY2U8
SW50MTI4PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzLCBMKDMsIDUsIDcpLlNsaWNlPGlu
dDhfdD4ocCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgTCgzLCA1LCA3KS5TbGljZTxpbnQz
Ml90PihwKS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg3LCBMKDMsIDUsIDcpLlNsaWNlPEludDEy
OD4ocCkuc2l6ZSgpKTsKKyAgfQorfQorCitURVNUKExheW91dCwgU2xpY2VCeUluZGV4RGF0YSkg
eworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIHBbMTAwXSA9IHt9
OworICB7CisgICAgdXNpbmcgTCA9IExheW91dDxpbnQzMl90PjsKKyAgICBFWFBFQ1RfRVEoCisg
ICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4o
TDo6UGFydGlhbCgwKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAg
ICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6
OlBhcnRpYWwoMykuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0
YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEwoMykuU2xpY2U8MD4ocCkpLmRhdGEo
KSkpOworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3QsIGludDMyX3Q+Owor
ICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFu
PGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDMpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAg
ICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsCisgICAgICAgICAg
ICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgzLCA1KS5TbGljZTww
PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAxMiwKKyAgICAgICAgRGlz
dGFuY2UocCwKKyAgICAgICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQ
YXJ0aWFsKDMsIDUpLlNsaWNlPDE+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAg
ICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMKDMsIDUp
LlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoMTIsCisgICAgICAgICAgICAg
IERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTCgzLCA1KS5TbGljZTwxPihw
KSkuZGF0YSgpKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBpbnQz
Ml90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFu
Y2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6OlBhcnRpYWwoMCkuU2xpY2U8MD4ocCkp
LmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2Uo
cCwgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6OlBhcnRpYWwoMSkuU2xpY2U8MD4ocCkpLmRh
dGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwg
VHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6OlBhcnRpYWwoNSkuU2xpY2U8MD4ocCkpLmRhdGEo
KSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UoCisgICAgICAgICAgICAg
ICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCgwLCAwKS5TbGljZTwwPihw
KSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5j
ZShwLAorICAgICAgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRp
YWwoMCwgMCkuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAg
MCwgRGlzdGFuY2UoCisgICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4o
TDo6UGFydGlhbCgxLCAwKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAor
ICAgICAgICA0LAorICAgICAgICBEaXN0YW5jZShwLAorICAgICAgICAgICAgICAgICBUeXBlPFNw
YW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMSwgMCkuU2xpY2U8MT4ocCkpLmRhdGEoKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UoCisgICAgICAgICAgICAgICBw
LCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCg1LCAzKS5TbGljZTwwPihwKSku
ZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LAorICAgICAgICBEaXN0YW5jZShw
LAorICAgICAgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwo
NSwgMykuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwK
KyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90
Pj4oTDo6UGFydGlhbCgwLCAwLCAwKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNU
X0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsCisgICAg
ICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xp
Y2U8MT4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAg
RGlzdGFuY2UoCisgICAgICAgICAgICBwLAorICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IElu
dDEyOD4+KEw6OlBhcnRpYWwoMCwgMCwgMCkuU2xpY2U8Mj4ocCkpLmRhdGEoKSkpOworICAgIEVY
UEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLCBU
eXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCgxLCAwLCAwKS5TbGljZTwwPihwKSku
ZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA0LAorICAgICAgICBEaXN0YW5jZSgK
KyAgICAgICAgICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6
OlBhcnRpYWwoMSwgMCwgMCkuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgK
KyAgICAgICAgOCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLAorICAgICAgICAg
ICAgVHlwZTxTcGFuPGNvbnN0IEludDEyOD4+KEw6OlBhcnRpYWwoMSwgMCwgMCkuU2xpY2U8Mj4o
cCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFu
Y2UoCisgICAgICAgICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCg1
LCAzLCAxKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAy
NCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLAorICAgICAgICAgICAgVHlwZTxT
cGFuPGNvbnN0IEludDEyOD4+KEw6OlBhcnRpYWwoNSwgMywgMSkuU2xpY2U8Mj4ocCkpLmRhdGEo
KSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAg
ICAgICAgICBwLAorICAgICAgICAgICAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0
aWFsKDUsIDMsIDEpLlNsaWNlPDE+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAg
ICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMKDUsIDMsIDEpLlNs
aWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDI0LAorICAgICAg
ICBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29uc3QgSW50MTI4Pj4oTCg1LCAzLCAxKS5TbGljZTwy
PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICA4LCBEaXN0YW5jZShwLCBU
eXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEwoNSwgMywgMSkuU2xpY2U8MT4ocCkpLmRhdGEoKSkp
OworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBTbGljZUJ5VHlwZURhdGEpIHsKKyAgYWxpZ25hcyht
YXhfYWxpZ25fdCkgY29uc3QgdW5zaWduZWQgY2hhciBwWzEwMF0gPSB7fTsKKyAgeworICAgIHVz
aW5nIEwgPSBMYXlvdXQ8aW50MzJfdD47CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAg
ICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4o
TDo6UGFydGlhbCgwKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VR
KAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsIFR5cGU8U3Bh
bjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgzKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgp
KSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48Y29u
c3QgaW50MzJfdD4+KEwoMykuU2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOworICB9CisgIHsK
KyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4PjsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKAorICAgICAgICAgICAgICAgcCwgVHlwZTxTcGFu
PGNvbnN0IGludDhfdD4+KEw6OlBhcnRpYWwoMCkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7
CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAs
IFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDEpLlNsaWNlPGludDhfdD4ocCkp
LmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UoCisgICAgICAg
ICAgICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlhbCg1KS5TbGljZTxp
bnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAg
IERpc3RhbmNlKAorICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6OlBh
cnRpYWwoMCwgMCkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAor
ICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsCisgICAgICAgICAg
ICBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEw6OlBhcnRpYWwoMCwgMCkuU2xpY2U8aW50MzJf
dD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlz
dGFuY2UoCisgICAgICAgICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50OF90Pj4oTDo6UGFydGlh
bCgxLCAwKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAg
ICAgIDQsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5
cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgxLCAwKS5TbGljZTxpbnQzMl90Pihw
KSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5j
ZSgKKyAgICAgICAgICAgIHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQYXJ0aWFsKDUs
IDMpLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAg
OCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLAorICAgICAgICAgICAgVHlwZTxT
cGFuPGNvbnN0IGludDMyX3Q+PihMOjpQYXJ0aWFsKDUsIDMpLlNsaWNlPGludDMyX3Q+KHApKS5k
YXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKAor
ICAgICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBpbnQ4X3Q+PihMOjpQ
YXJ0aWFsKDAsIDAsIDApLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9F
USgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IGludDMy
X3Q+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPGludDMyX3Q+KHApKQorICAgICAgICAgICAg
ICAgICAgICAgICAgLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBl
PFNwYW48Y29uc3QgSW50MTI4Pj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
OjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPEludDEyOD4ocCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLAorICAg
ICAgICBEaXN0YW5jZSgKKyAgICAgICAgICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48Y29u
c3QgaW50OF90Pj4oTDo6UGFydGlhbCgxLCAwLCAwKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDQsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCgxLCAwLCAwKS5TbGljZTxpbnQzMl90Pihw
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoOCwg
RGlzdGFuY2UocCwgVHlwZTxTcGFuPGNvbnN0IEludDEyOD4+KAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTDo6UGFydGlhbCgxLCAwLCAwKS5TbGljZTxJbnQxMjg+KHApKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgK
KyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UoCisgICAgICAgICAgICBwLAorICAgICAgICAg
ICAgVHlwZTxTcGFuPGNvbnN0IGludDhfdD4+KEw6OlBhcnRpYWwoNSwgMywgMSkuU2xpY2U8aW50
OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDI0LCBEaXN0YW5jZShwLCBUeXBlPFNw
YW48Y29uc3QgSW50MTI4Pj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDo6
UGFydGlhbCg1LCAzLCAxKS5TbGljZTxJbnQxMjg+KHApKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgsCisgICAg
ICAgIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oTDo6UGFydGlhbCg1LCAz
LCAxKS5TbGljZTxpbnQzMl90PihwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8
U3Bhbjxjb25zdCBpbnQ4X3Q+PihMKDUsIDMsIDEpLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMjQsCisgICAgICAgIERpc3RhbmNlKHAsCisgICAg
ICAgICAgICAgICAgIFR5cGU8U3Bhbjxjb25zdCBJbnQxMjg+PihMKDUsIDMsIDEpLlNsaWNlPElu
dDEyOD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwgRGlzdGFuY2Uo
CisgICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KEwoNSwgMywgMSku
U2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBNdXRh
YmxlU2xpY2VCeUluZGV4RGF0YSkgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSB1bnNpZ25lZCBj
aGFyIHBbMTAwXTsKKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdD47CisgICAgRVhQ
RUNUX0VRKDAsCisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4o
TDo6UGFydGlhbCgwKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDAsCisg
ICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCgz
KS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5
cGU8U3BhbjxpbnQzMl90Pj4oTCgzKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgIH0KKyAgewor
ICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50MzJfdCwgaW50MzJfdD47CisgICAgRVhQRUNUX0VRKDAs
CisgICAgICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlh
bCgzKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBE
aXN0YW5jZShwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoMywgNSkuU2xpY2U8MD4o
cCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMTIsCisgICAgICAgIERpc3Rh
bmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6UGFydGlhbCgzLCA1KS5TbGljZTwxPihwKSku
ZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90
Pj4oTCgzLCA1KS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDEyLCBEaXN0
YW5jZShwLCBUeXBlPFNwYW48aW50MzJfdD4+KEwoMywgNSkuU2xpY2U8MT4ocCkpLmRhdGEoKSkp
OworICB9CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwgaW50MzJfdCwgSW50MTI4
PjsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFu
PGludDhfdD4+KEw6OlBhcnRpYWwoMCkuU2xpY2U8MD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVD
VF9FUSgwLAorICAgICAgICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6
UGFydGlhbCgxKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDAsCisgICAg
ICAgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDUpLlNs
aWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNl
KHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0aWFsKDAsIDApLlNsaWNlPDA+KHApKS5kYXRh
KCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8U3Bhbjxp
bnQzMl90Pj4oTDo6UGFydGlhbCgwLCAwKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQ
RUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFy
dGlhbCgxLCAwKS5TbGljZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAg
ICA0LCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50MzJfdD4+KEw6OlBhcnRpYWwoMSwgMCkuU2xp
Y2U8MT4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2Uo
cCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoNSwgMykuU2xpY2U8MD4ocCkpLmRhdGEo
KSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgOCwgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGlu
dDMyX3Q+PihMOjpQYXJ0aWFsKDUsIDMpLlNsaWNlPDE+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+
PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1Rf
RVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4o
TDo6UGFydGlhbCgwLCAwLCAwKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VR
KAorICAgICAgICAwLCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3BhbjxJbnQx
Mjg+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPDI+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+
PihMOjpQYXJ0aWFsKDEsIDAsIDApLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1Rf
RVEoCisgICAgICAgIDQsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4o
TDo6UGFydGlhbCgxLCAwLCAwKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VR
KAorICAgICAgICA4LCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3BhbjxJbnQx
Mjg+PihMOjpQYXJ0aWFsKDEsIDAsIDApLlNsaWNlPDI+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+
PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPDA+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1Rf
RVEoCisgICAgICAgIDI0LCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAgICBwLCBUeXBlPFNwYW48
SW50MTI4Pj4oTDo6UGFydGlhbCg1LCAzLCAxKS5TbGljZTwyPihwKSkuZGF0YSgpKSk7CisgICAg
RVhQRUNUX0VRKAorICAgICAgICA4LAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50
MzJfdD4+KEw6OlBhcnRpYWwoNSwgMywgMSkuU2xpY2U8MT4ocCkpLmRhdGEoKSkpOworICAgIEVY
UEVDVF9FUSgwLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTCg1LCAzLCAxKS5TbGlj
ZTwwPihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKDI0LAorICAgICAgICAgICAgICBEaXN0
YW5jZShwLCBUeXBlPFNwYW48SW50MTI4Pj4oTCg1LCAzLCAxKS5TbGljZTwyPihwKSkuZGF0YSgp
KSk7CisgICAgRVhQRUNUX0VRKDgsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTCg1
LCAzLCAxKS5TbGljZTwxPihwKSkuZGF0YSgpKSk7CisgIH0KK30KKworVEVTVChMYXlvdXQsIE11
dGFibGVTbGljZUJ5VHlwZURhdGEpIHsKKyAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgdW5zaWduZWQg
Y2hhciBwWzEwMF07CisgIHsKKyAgICB1c2luZyBMID0gTGF5b3V0PGludDMyX3Q+OworICAgIEVY
UEVDVF9FUSgKKyAgICAgICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDMy
X3Q+PihMOjpQYXJ0aWFsKDApLlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90
Pj4oTDo6UGFydGlhbCgzKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNU
X0VRKDAsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTCgzKS5TbGljZTxpbnQzMl90
PihwKSkuZGF0YSgpKSk7CisgIH0KKyAgeworICAgIHVzaW5nIEwgPSBMYXlvdXQ8aW50OF90LCBp
bnQzMl90LCBJbnQxMjg+OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UocCwg
VHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwoMCkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgp
KSk7CisgICAgRVhQRUNUX0VRKAorICAgICAgICAwLCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50
OF90Pj4oTDo6UGFydGlhbCgxKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBF
Q1RfRVEoCisgICAgICAgIDAsIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4X3Q+PihMOjpQYXJ0
aWFsKDUpLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVYUEVDVF9FUSgKKyAgICAg
ICAgMCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPGludDhfdD4+KEw6OlBhcnRpYWwo
MCwgMCkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKAorICAgICAg
ICAwLCBEaXN0YW5jZSgKKyAgICAgICAgICAgICAgIHAsIFR5cGU8U3BhbjxpbnQzMl90Pj4oTDo6
UGFydGlhbCgwLCAwKS5TbGljZTxpbnQzMl90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VR
KAorICAgICAgICAwLAorICAgICAgICBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50OF90Pj4oTDo6
UGFydGlhbCgxLCAwKS5TbGljZTxpbnQ4X3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEo
CisgICAgICAgIDQsIERpc3RhbmNlKAorICAgICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGludDMy
X3Q+PihMOjpQYXJ0aWFsKDEsIDApLlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgICBF
WFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNlKHAsIFR5cGU8U3BhbjxpbnQ4
X3Q+PihMOjpQYXJ0aWFsKDUsIDMpLlNsaWNlPGludDhfdD4ocCkpLmRhdGEoKSkpOworICAgIEVY
UEVDVF9FUSgKKyAgICAgICAgOCwgRGlzdGFuY2UoCisgICAgICAgICAgICAgICBwLCBUeXBlPFNw
YW48aW50MzJfdD4+KEw6OlBhcnRpYWwoNSwgMykuU2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UoCisgICAgICAgICAgICAgICBw
LCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCgwLCAwLCAwKS5TbGljZTxpbnQ4X3Q+KHAp
KS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAsCisgICAgICAgIERpc3RhbmNl
KAorICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDAsIDAsIDAp
LlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDAs
CisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3Bh
bjxJbnQxMjg+PihMOjpQYXJ0aWFsKDAsIDAsIDApLlNsaWNlPEludDEyOD4ocCkpLmRhdGEoKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UoCisgICAgICAgICAgICAgICBw
LCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCgxLCAwLCAwKS5TbGljZTxpbnQ4X3Q+KHAp
KS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDQsCisgICAgICAgIERpc3RhbmNl
KAorICAgICAgICAgICAgcCwgVHlwZTxTcGFuPGludDMyX3Q+PihMOjpQYXJ0aWFsKDEsIDAsIDAp
LlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDgs
CisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwKKyAgICAgICAgICAgIFR5cGU8U3Bh
bjxJbnQxMjg+PihMOjpQYXJ0aWFsKDEsIDAsIDApLlNsaWNlPEludDEyOD4ocCkpLmRhdGEoKSkp
OworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgMCwgRGlzdGFuY2UoCisgICAgICAgICAgICAgICBw
LCBUeXBlPFNwYW48aW50OF90Pj4oTDo6UGFydGlhbCg1LCAzLCAxKS5TbGljZTxpbnQ4X3Q+KHAp
KS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgIDI0LAorICAgICAgICBEaXN0YW5j
ZSgKKyAgICAgICAgICAgIHAsCisgICAgICAgICAgICBUeXBlPFNwYW48SW50MTI4Pj4oTDo6UGFy
dGlhbCg1LCAzLCAxKS5TbGljZTxJbnQxMjg+KHApKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEo
CisgICAgICAgIDgsCisgICAgICAgIERpc3RhbmNlKAorICAgICAgICAgICAgcCwgVHlwZTxTcGFu
PGludDMyX3Q+PihMOjpQYXJ0aWFsKDUsIDMsIDEpLlNsaWNlPGludDMyX3Q+KHApKS5kYXRhKCkp
KTsKKyAgICBFWFBFQ1RfRVEoMCwKKyAgICAgICAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFu
PGludDhfdD4+KEwoNSwgMywgMSkuU2xpY2U8aW50OF90PihwKSkuZGF0YSgpKSk7CisgICAgRVhQ
RUNUX0VRKAorICAgICAgICAyNCwKKyAgICAgICAgRGlzdGFuY2UocCwgVHlwZTxTcGFuPEludDEy
OD4+KEwoNSwgMywgMSkuU2xpY2U8SW50MTI4PihwKSkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VR
KAorICAgICAgICA4LCBEaXN0YW5jZShwLCBUeXBlPFNwYW48aW50MzJfdD4+KEwoNSwgMywgMSku
U2xpY2U8aW50MzJfdD4ocCkpLmRhdGEoKSkpOworICB9Cit9CisKK01BVENIRVJfUChJc1NhbWVT
bGljZSwgc2xpY2UsICIiKSB7CisgIHJldHVybiBhcmcuc2l6ZSgpID09IHNsaWNlLnNpemUoKSAm
JiBhcmcuZGF0YSgpID09IHNsaWNlLmRhdGEoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lLi4u
IE0+CitjbGFzcyBUdXBsZU1hdGNoZXIgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgVHVwbGVNYXRj
aGVyKE0uLi4gbWF0Y2hlcnMpIDogbWF0Y2hlcnNfKHN0ZDo6bW92ZShtYXRjaGVycykuLi4pIHt9
CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBib29sIE1hdGNoQW5kRXhwbGFpbihj
b25zdCBUdXBsZSYgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6TWF0Y2hSZXN1
bHRMaXN0ZW5lciogLyogbGlzdGVuZXIgKi8pIGNvbnN0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6dHVwbGVfc2l6ZTxUdXBsZT46OnZhbHVlID09IHNpemVvZi4uLihNKSwgIiIpOworICAgIHJl
dHVybiBNYXRjaEFuZEV4cGxhaW5JbXBsKAorICAgICAgICBwLCBhYnNsOjptYWtlX2luZGV4X3Nl
cXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxUdXBsZT46OnZhbHVlPnt9KTsKKyAgfQorCisgIC8vIEZv
ciB0aGUgbWF0Y2hlciBjb25jZXB0LiBMZWZ0IGVtcHR5IGFzIHdlIGRvbid0IHJlYWxseSBuZWVk
IHRoZSBkaWFnbm9zdGljcworICAvLyByaWdodCBub3cuCisgIHZvaWQgRGVzY3JpYmVUbyg6OnN0
ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHt9CisgIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3Rk
Ojpvc3RyZWFtKiBvcykgY29uc3Qge30KKworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUdXBsZSwgc2l6ZV90Li4uIElzPgorICBib29sIE1hdGNoQW5kRXhwbGFpbkltcGwoY29uc3Qg
VHVwbGUmIHAsIGFic2w6OmluZGV4X3NlcXVlbmNlPElzLi4uPikgY29uc3QgeworICAgIC8vIFVz
aW5nIHN0ZDo6bWluIGFzIGEgc2ltcGxlIHZhcmlhZGljICJhbmQiLgorICAgIHJldHVybiBzdGQ6
Om1pbigKKyAgICAgICAge3RydWUsIHRlc3Rpbmc6OlNhZmVNYXRjaGVyQ2FzdDwKKyAgICAgICAg
ICAgICAgICAgICBjb25zdCB0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8SXMsIFR1cGxlPjo6
dHlwZSY+KAorICAgICAgICAgICAgICAgICAgIHN0ZDo6Z2V0PElzPihtYXRjaGVyc18pKQorICAg
ICAgICAgICAgICAgICAgIC5NYXRjaGVzKHN0ZDo6Z2V0PElzPihwKSkuLi59KTsKKyAgfQorCisg
IHN0ZDo6dHVwbGU8TS4uLj4gbWF0Y2hlcnNfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4u
IE0+Cit0ZXN0aW5nOjpQb2x5bW9ycGhpY01hdGNoZXI8VHVwbGVNYXRjaGVyPE0uLi4+PiBUdXBs
ZShNLi4uIG1hdGNoZXJzKSB7CisgIHJldHVybiB0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRj
aGVyKAorICAgICAgVHVwbGVNYXRjaGVyPE0uLi4+KHN0ZDo6bW92ZShtYXRjaGVycykuLi4pKTsK
K30KKworVEVTVChMYXlvdXQsIFNsaWNlcykgeworICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25z
dCB1bnNpZ25lZCBjaGFyIHBbMTAwXSA9IHt9OworICB1c2luZyBMID0gTGF5b3V0PGludDhfdCwg
aW50OF90LCBJbnQxMjg+OworICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgpOwor
ICAgIEVYUEVDVF9USEFUKFR5cGU8c3RkOjp0dXBsZTw+Pih4LlNsaWNlcyhwKSksIFR1cGxlKCkp
OworICB9CisgIHsKKyAgICBjb25zdCBhdXRvIHggPSBMOjpQYXJ0aWFsKDEpOworICAgIEVYUEVD
VF9USEFUKFR5cGU8c3RkOjp0dXBsZTxTcGFuPGNvbnN0IGludDhfdD4+Pih4LlNsaWNlcyhwKSks
CisgICAgICAgICAgICAgICAgVHVwbGUoSXNTYW1lU2xpY2UoeC5TbGljZTwwPihwKSkpKTsKKyAg
fQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgxLCAyKTsKKyAgICBFWFBFQ1Rf
VEhBVCgKKyAgICAgICAgKFR5cGU8c3RkOjp0dXBsZTxTcGFuPGNvbnN0IGludDhfdD4sIFNwYW48
Y29uc3QgaW50OF90Pj4+KHguU2xpY2VzKHApKSksCisgICAgICAgIFR1cGxlKElzU2FtZVNsaWNl
KHguU2xpY2U8MD4ocCkpLCBJc1NhbWVTbGljZSh4LlNsaWNlPDE+KHApKSkpOworICB9CisgIHsK
KyAgICBjb25zdCBhdXRvIHggPSBMOjpQYXJ0aWFsKDEsIDIsIDMpOworICAgIEVYUEVDVF9USEFU
KChUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25zdCBpbnQ4X3Q+LCBTcGFuPGNvbnN0IGludDhfdD4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGFuPGNvbnN0IEludDEyOD4+Pih4
LlNsaWNlcyhwKSkpLAorICAgICAgICAgICAgICAgIFR1cGxlKElzU2FtZVNsaWNlKHguU2xpY2U8
MD4ocCkpLCBJc1NhbWVTbGljZSh4LlNsaWNlPDE+KHApKSwKKyAgICAgICAgICAgICAgICAgICAg
ICBJc1NhbWVTbGljZSh4LlNsaWNlPDI+KHApKSkpOworICB9CisgIHsKKyAgICBjb25zdCBMIHgo
MSwgMiwgMyk7CisgICAgRVhQRUNUX1RIQVQoKFR5cGU8c3RkOjp0dXBsZTxTcGFuPGNvbnN0IGlu
dDhfdD4sIFNwYW48Y29uc3QgaW50OF90PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNwYW48Y29uc3QgSW50MTI4Pj4+KHguU2xpY2VzKHApKSksCisgICAgICAgICAgICAgICAg
VHVwbGUoSXNTYW1lU2xpY2UoeC5TbGljZTwwPihwKSksIElzU2FtZVNsaWNlKHguU2xpY2U8MT4o
cCkpLAorICAgICAgICAgICAgICAgICAgICAgIElzU2FtZVNsaWNlKHguU2xpY2U8Mj4ocCkpKSk7
CisgIH0KK30KKworVEVTVChMYXlvdXQsIE11dGFibGVTbGljZXMpIHsKKyAgYWxpZ25hcyhtYXhf
YWxpZ25fdCkgdW5zaWduZWQgY2hhciBwWzEwMF0gPSB7fTsKKyAgdXNpbmcgTCA9IExheW91dDxp
bnQ4X3QsIGludDhfdCwgSW50MTI4PjsKKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRp
YWwoKTsKKyAgICBFWFBFQ1RfVEhBVChUeXBlPHN0ZDo6dHVwbGU8Pj4oeC5TbGljZXMocCkpLCBU
dXBsZSgpKTsKKyAgfQorICB7CisgICAgY29uc3QgYXV0byB4ID0gTDo6UGFydGlhbCgxKTsKKyAg
ICBFWFBFQ1RfVEhBVChUeXBlPHN0ZDo6dHVwbGU8U3BhbjxpbnQ4X3Q+Pj4oeC5TbGljZXMocCkp
LAorICAgICAgICAgICAgICAgIFR1cGxlKElzU2FtZVNsaWNlKHguU2xpY2U8MD4ocCkpKSk7Cisg
IH0KKyAgeworICAgIGNvbnN0IGF1dG8geCA9IEw6OlBhcnRpYWwoMSwgMik7CisgICAgRVhQRUNU
X1RIQVQoKFR5cGU8c3RkOjp0dXBsZTxTcGFuPGludDhfdD4sIFNwYW48aW50OF90Pj4+KHguU2xp
Y2VzKHApKSksCisgICAgICAgICAgICAgICAgVHVwbGUoSXNTYW1lU2xpY2UoeC5TbGljZTwwPihw
KSksIElzU2FtZVNsaWNlKHguU2xpY2U8MT4ocCkpKSk7CisgIH0KKyAgeworICAgIGNvbnN0IGF1
dG8geCA9IEw6OlBhcnRpYWwoMSwgMiwgMyk7CisgICAgRVhQRUNUX1RIQVQoCisgICAgICAgIChU
eXBlPHN0ZDo6dHVwbGU8U3BhbjxpbnQ4X3Q+LCBTcGFuPGludDhfdD4sIFNwYW48SW50MTI4Pj4+
KHguU2xpY2VzKHApKSksCisgICAgICAgIFR1cGxlKElzU2FtZVNsaWNlKHguU2xpY2U8MD4ocCkp
LCBJc1NhbWVTbGljZSh4LlNsaWNlPDE+KHApKSwKKyAgICAgICAgICAgICAgSXNTYW1lU2xpY2Uo
eC5TbGljZTwyPihwKSkpKTsKKyAgfQorICB7CisgICAgY29uc3QgTCB4KDEsIDIsIDMpOworICAg
IEVYUEVDVF9USEFUKAorICAgICAgICAoVHlwZTxzdGQ6OnR1cGxlPFNwYW48aW50OF90PiwgU3Bh
bjxpbnQ4X3Q+LCBTcGFuPEludDEyOD4+Pih4LlNsaWNlcyhwKSkpLAorICAgICAgICBUdXBsZShJ
c1NhbWVTbGljZSh4LlNsaWNlPDA+KHApKSwgSXNTYW1lU2xpY2UoeC5TbGljZTwxPihwKSksCisg
ICAgICAgICAgICAgIElzU2FtZVNsaWNlKHguU2xpY2U8Mj4ocCkpKSk7CisgIH0KK30KKworVEVT
VChMYXlvdXQsIFVuYWxpZ25lZFR5cGVzKSB7CisgIGNvbnN0ZXhwciBMYXlvdXQ8dW5zaWduZWQg
Y2hhciwgdW5zaWduZWQgY2hhciwgdW5zaWduZWQgY2hhcj4geCgxLCAyLCAzKTsKKyAgYWxpZ25h
cyhtYXhfYWxpZ25fdCkgdW5zaWduZWQgY2hhciBwW3guQWxsb2NTaXplKCkgKyAxXTsKKyAgRVhQ
RUNUX1RIQVQoeC5Qb2ludGVycyhwICsgMSksIFR1cGxlKHAgKyAxLCBwICsgMiwgcCArIDQpKTsK
K30KKworVEVTVChMYXlvdXQsIEN1c3RvbUFsaWdubWVudCkgeworICBjb25zdGV4cHIgTGF5b3V0
PHVuc2lnbmVkIGNoYXIsIEFsaWduZWQ8dW5zaWduZWQgY2hhciwgOD4+IHgoMSwgMik7CisgIGFs
aWduYXMobWF4X2FsaWduX3QpIHVuc2lnbmVkIGNoYXIgcFt4LkFsbG9jU2l6ZSgpXTsKKyAgRVhQ
RUNUX0VRKDEwLCB4LkFsbG9jU2l6ZSgpKTsKKyAgRVhQRUNUX1RIQVQoeC5Qb2ludGVycyhwKSwg
VHVwbGUocCArIDAsIHAgKyA4KSk7Cit9CisKK1RFU1QoTGF5b3V0LCBPdmVyQWxpZ25lZCkgewor
ICBjb25zdGV4cHIgc2l6ZV90IE0gPSBhbGlnbm9mKG1heF9hbGlnbl90KTsKKyAgY29uc3RleHBy
IExheW91dDx1bnNpZ25lZCBjaGFyLCBBbGlnbmVkPHVuc2lnbmVkIGNoYXIsIDIgKiBNPj4geCgx
LCAzKTsKKyAgYWxpZ25hcygyICogTSkgdW5zaWduZWQgY2hhciBwW3guQWxsb2NTaXplKCldOwor
ICBFWFBFQ1RfRVEoMiAqIE0gKyAzLCB4LkFsbG9jU2l6ZSgpKTsKKyAgRVhQRUNUX1RIQVQoeC5Q
b2ludGVycyhwKSwgVHVwbGUocCArIDAsIHAgKyAyICogTSkpOworfQorCitURVNUKExheW91dCwg
QWxpZ25tZW50KSB7CisgIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDhfdD46OkFsaWdubWVudCgp
ID09IDEsICIiKTsKKyAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50MzJfdD46OkFsaWdubWVudCgp
ID09IDQsICIiKTsKKyAgc3RhdGljX2Fzc2VydChMYXlvdXQ8aW50NjRfdD46OkFsaWdubWVudCgp
ID09IDgsICIiKTsKKyAgc3RhdGljX2Fzc2VydChMYXlvdXQ8QWxpZ25lZDxpbnQ4X3QsIDY0Pj46
OkFsaWdubWVudCgpID09IDY0LCAiIik7CisgIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDhfdCwg
aW50MzJfdCwgaW50NjRfdD46OkFsaWdubWVudCgpID09IDgsICIiKTsKKyAgc3RhdGljX2Fzc2Vy
dChMYXlvdXQ8aW50OF90LCBpbnQ2NF90LCBpbnQzMl90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIp
OworICBzdGF0aWNfYXNzZXJ0KExheW91dDxpbnQzMl90LCBpbnQ4X3QsIGludDY0X3Q+OjpBbGln
bm1lbnQoKSA9PSA4LCAiIik7CisgIHN0YXRpY19hc3NlcnQoTGF5b3V0PGludDMyX3QsIGludDY0
X3QsIGludDhfdD46OkFsaWdubWVudCgpID09IDgsICIiKTsKKyAgc3RhdGljX2Fzc2VydChMYXlv
dXQ8aW50NjRfdCwgaW50OF90LCBpbnQzMl90Pjo6QWxpZ25tZW50KCkgPT0gOCwgIiIpOworICBz
dGF0aWNfYXNzZXJ0KExheW91dDxpbnQ2NF90LCBpbnQzMl90LCBpbnQ4X3Q+OjpBbGlnbm1lbnQo
KSA9PSA4LCAiIik7Cit9CisKK1RFU1QoTGF5b3V0LCBDb25zdGV4cHJQYXJ0aWFsKSB7CisgIGNv
bnN0ZXhwciBzaXplX3QgTSA9IGFsaWdub2YobWF4X2FsaWduX3QpOworICBjb25zdGV4cHIgTGF5
b3V0PHVuc2lnbmVkIGNoYXIsIEFsaWduZWQ8dW5zaWduZWQgY2hhciwgMiAqIE0+PiB4KDEsIDMp
OworICBzdGF0aWNfYXNzZXJ0KHguUGFydGlhbCgxKS50ZW1wbGF0ZSBPZmZzZXQ8MT4oKSA9PSAy
ICogTSwgIiIpOworfQorLy8gW2Zyb20sIHRvKQorc3RydWN0IFJlZ2lvbiB7CisgIHNpemVfdCBm
cm9tOworICBzaXplX3QgdG87Cit9OworCit2b2lkIEV4cGVjdFJlZ2lvblBvaXNvbmVkKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIHAsIHNpemVfdCBuLCBib29sIHBvaXNvbmVkKSB7CisjaWZkZWYgQURE
UkVTU19TQU5JVElaRVIKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbjsgKytpKSB7CisgICAg
RVhQRUNUX0VRKHBvaXNvbmVkLCBfX2FzYW5fYWRkcmVzc19pc19wb2lzb25lZChwICsgaSkpOwor
ICB9CisjZW5kaWYKK30KKwordGVtcGxhdGUgPHNpemVfdCBOPgordm9pZCBFeHBlY3RQb2lzb25l
ZChjb25zdCB1bnNpZ25lZCBjaGFyICgmYnVmKVtOXSwKKyAgICAgICAgICAgICAgICAgICAgc3Rk
Ojppbml0aWFsaXplcl9saXN0PFJlZ2lvbj4gcmVnKSB7CisgIHNpemVfdCBwcmV2ID0gMDsKKyAg
Zm9yIChjb25zdCBSZWdpb24mIHIgOiByZWcpIHsKKyAgICBFeHBlY3RSZWdpb25Qb2lzb25lZChi
dWYgKyBwcmV2LCByLmZyb20gLSBwcmV2LCBmYWxzZSk7CisgICAgRXhwZWN0UmVnaW9uUG9pc29u
ZWQoYnVmICsgci5mcm9tLCByLnRvIC0gci5mcm9tLCB0cnVlKTsKKyAgICBwcmV2ID0gci50bzsK
KyAgfQorICBFeHBlY3RSZWdpb25Qb2lzb25lZChidWYgKyBwcmV2LCBOIC0gcHJldiwgZmFsc2Up
OworfQorCitURVNUKExheW91dCwgUG9pc29uUGFkZGluZykgeworICB1c2luZyBMID0gTGF5b3V0
PGludDhfdCwgaW50NjRfdCwgaW50MzJfdCwgSW50MTI4PjsKKworICBjb25zdGV4cHIgc2l6ZV90
IG4gPSBMOjpQYXJ0aWFsKDEsIDIsIDMsIDQpLkFsbG9jU2l6ZSgpOworICB7CisgICAgY29uc3Rl
eHByIGF1dG8geCA9IEw6OlBhcnRpYWwoKTsKKyAgICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25z
dCB1bnNpZ25lZCBjaGFyIGNbbl0gPSB7fTsKKyAgICB4LlBvaXNvblBhZGRpbmcoYyk7CisgICAg
RVhQRUNUX0VRKHguU2xpY2VzKGMpLCB4LlNsaWNlcyhjKSk7CisgICAgRXhwZWN0UG9pc29uZWQo
Yywge30pOworICB9CisgIHsKKyAgICBjb25zdGV4cHIgYXV0byB4ID0gTDo6UGFydGlhbCgxKTsK
KyAgICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIGNbbl0gPSB7fTsK
KyAgICB4LlBvaXNvblBhZGRpbmcoYyk7CisgICAgRVhQRUNUX0VRKHguU2xpY2VzKGMpLCB4LlNs
aWNlcyhjKSk7CisgICAgRXhwZWN0UG9pc29uZWQoYywge3sxLCA4fX0pOworICB9CisgIHsKKyAg
ICBjb25zdGV4cHIgYXV0byB4ID0gTDo6UGFydGlhbCgxLCAyKTsKKyAgICBhbGlnbmFzKG1heF9h
bGlnbl90KSBjb25zdCB1bnNpZ25lZCBjaGFyIGNbbl0gPSB7fTsKKyAgICB4LlBvaXNvblBhZGRp
bmcoYyk7CisgICAgRVhQRUNUX0VRKHguU2xpY2VzKGMpLCB4LlNsaWNlcyhjKSk7CisgICAgRXhw
ZWN0UG9pc29uZWQoYywge3sxLCA4fX0pOworICB9CisgIHsKKyAgICBjb25zdGV4cHIgYXV0byB4
ID0gTDo6UGFydGlhbCgxLCAyLCAzKTsKKyAgICBhbGlnbmFzKG1heF9hbGlnbl90KSBjb25zdCB1
bnNpZ25lZCBjaGFyIGNbbl0gPSB7fTsKKyAgICB4LlBvaXNvblBhZGRpbmcoYyk7CisgICAgRVhQ
RUNUX0VRKHguU2xpY2VzKGMpLCB4LlNsaWNlcyhjKSk7CisgICAgRXhwZWN0UG9pc29uZWQoYywg
e3sxLCA4fSwgezM2LCA0MH19KTsKKyAgfQorICB7CisgICAgY29uc3RleHByIGF1dG8geCA9IEw6
OlBhcnRpYWwoMSwgMiwgMywgNCk7CisgICAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgY29uc3QgdW5z
aWduZWQgY2hhciBjW25dID0ge307CisgICAgeC5Qb2lzb25QYWRkaW5nKGMpOworICAgIEVYUEVD
VF9FUSh4LlNsaWNlcyhjKSwgeC5TbGljZXMoYykpOworICAgIEV4cGVjdFBvaXNvbmVkKGMsIHt7
MSwgOH0sIHszNiwgNDB9fSk7CisgIH0KKyAgeworICAgIGNvbnN0ZXhwciBMIHgoMSwgMiwgMywg
NCk7CisgICAgYWxpZ25hcyhtYXhfYWxpZ25fdCkgY29uc3QgdW5zaWduZWQgY2hhciBjW25dID0g
e307CisgICAgeC5Qb2lzb25QYWRkaW5nKGMpOworICAgIEVYUEVDVF9FUSh4LlNsaWNlcyhjKSwg
eC5TbGljZXMoYykpOworICAgIEV4cGVjdFBvaXNvbmVkKGMsIHt7MSwgOH0sIHszNiwgNDB9fSk7
CisgIH0KK30KKworVEVTVChMYXlvdXQsIERlYnVnU3RyaW5nKSB7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGludDY0X3R5cGUgPQorI2lmZGVmIF9NU0NfVkVSCisgICJfX2ludDY0IjsKKyNlbHNlICAg
Ly8gX01TQ19WRVIKKyAgc3RkOjppc19zYW1lPGludDY0X3QsIGxvbmcgbG9uZz46OnZhbHVlID8g
ImxvbmcgbG9uZyIgOiAibG9uZyI7ICAvLyBOT0xJTlQKKyNlbmRpZiAgLy8gX01TQ19WRVIKKyAg
eworICAgIGNvbnN0ZXhwciBhdXRvIHggPSBMYXlvdXQ8aW50OF90LCBpbnQzMl90LCBpbnQ4X3Qs
IEludDEyOD46OlBhcnRpYWwoKTsKKyAgICBFWFBFQ1RfRVEoIkAwPHNpZ25lZCBjaGFyPigxKSIs
IHguRGVidWdTdHJpbmcoKSk7CisgIH0KKyAgeworICAgIGNvbnN0ZXhwciBhdXRvIHggPSBMYXlv
dXQ8aW50OF90LCBpbnQzMl90LCBpbnQ4X3QsIEludDEyOD46OlBhcnRpYWwoMSk7CisgICAgRVhQ
RUNUX0VRKCJAMDxzaWduZWQgY2hhcj4oMSlbMV07IEA0PGludD4oNCkiLCB4LkRlYnVnU3RyaW5n
KCkpOworICB9CisgIHsKKyAgICBjb25zdGV4cHIgYXV0byB4ID0gTGF5b3V0PGludDhfdCwgaW50
MzJfdCwgaW50OF90LCBJbnQxMjg+OjpQYXJ0aWFsKDEsIDIpOworICAgIEVYUEVDVF9FUSgiQDA8
c2lnbmVkIGNoYXI+KDEpWzFdOyBANDxpbnQ+KDQpWzJdOyBAMTI8c2lnbmVkIGNoYXI+KDEpIiwK
KyAgICAgICAgICAgICAgeC5EZWJ1Z1N0cmluZygpKTsKKyAgfQorICB7CisgICAgY29uc3RleHBy
IGF1dG8geCA9IExheW91dDxpbnQ4X3QsIGludDMyX3QsIGludDhfdCwgSW50MTI4Pjo6UGFydGlh
bCgxLCAyLCAzKTsKKyAgICBFWFBFQ1RfRVEoCisgICAgICAgICJAMDxzaWduZWQgY2hhcj4oMSlb
MV07IEA0PGludD4oNClbMl07IEAxMjxzaWduZWQgY2hhcj4oMSlbM107ICIKKyAgICAgICAgIkAx
NjwiICsKKyAgICAgICAgICAgIGludDY0X3R5cGUgKyAiIFsyXT4oMTYpIiwKKyAgICAgICAgeC5E
ZWJ1Z1N0cmluZygpKTsKKyAgfQorICB7CisgICAgY29uc3RleHByIGF1dG8geCA9IExheW91dDxp
bnQ4X3QsIGludDMyX3QsIGludDhfdCwgSW50MTI4Pjo6UGFydGlhbCgxLCAyLCAzLCA0KTsKKyAg
ICBFWFBFQ1RfRVEoCisgICAgICAgICJAMDxzaWduZWQgY2hhcj4oMSlbMV07IEA0PGludD4oNClb
Ml07IEAxMjxzaWduZWQgY2hhcj4oMSlbM107ICIKKyAgICAgICAgIkAxNjwiICsKKyAgICAgICAg
ICAgIGludDY0X3R5cGUgKyAiIFsyXT4oMTYpWzRdIiwKKyAgICAgICAgeC5EZWJ1Z1N0cmluZygp
KTsKKyAgfQorICB7CisgICAgY29uc3RleHByIExheW91dDxpbnQ4X3QsIGludDMyX3QsIGludDhf
dCwgSW50MTI4PiB4KDEsIDIsIDMsIDQpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgIkAwPHNp
Z25lZCBjaGFyPigxKVsxXTsgQDQ8aW50Pig0KVsyXTsgQDEyPHNpZ25lZCBjaGFyPigxKVszXTsg
IgorICAgICAgICAiQDE2PCIgKworICAgICAgICAgICAgaW50NjRfdHlwZSArICIgWzJdPigxNilb
NF0iLAorICAgICAgICB4LkRlYnVnU3RyaW5nKCkpOworICB9Cit9CisKK1RFU1QoTGF5b3V0LCBD
aGFyVHlwZXMpIHsKKyAgY29uc3RleHByIExheW91dDxpbnQzMl90PiB4KDEpOworICBhbGlnbmFz
KG1heF9hbGlnbl90KSBjaGFyIGNbeC5BbGxvY1NpemUoKV0gPSB7fTsKKyAgYWxpZ25hcyhtYXhf
YWxpZ25fdCkgdW5zaWduZWQgY2hhciB1Y1t4LkFsbG9jU2l6ZSgpXSA9IHt9OworICBhbGlnbmFz
KG1heF9hbGlnbl90KSBzaWduZWQgY2hhciBzY1t4LkFsbG9jU2l6ZSgpXSA9IHt9OworICBhbGln
bmFzKG1heF9hbGlnbl90KSBjb25zdCBjaGFyIGNjW3guQWxsb2NTaXplKCldID0ge307CisgIGFs
aWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHVuc2lnbmVkIGNoYXIgY3VjW3guQWxsb2NTaXplKCld
ID0ge307CisgIGFsaWduYXMobWF4X2FsaWduX3QpIGNvbnN0IHNpZ25lZCBjaGFyIGNzY1t4LkFs
bG9jU2l6ZSgpXSA9IHt9OworCisgIFR5cGU8aW50MzJfdCo+KHguUG9pbnRlcjwwPihjKSk7Cisg
IFR5cGU8aW50MzJfdCo+KHguUG9pbnRlcjwwPih1YykpOworICBUeXBlPGludDMyX3QqPih4LlBv
aW50ZXI8MD4oc2MpKTsKKyAgVHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2ludGVyPDA+KGNjKSk7
CisgIFR5cGU8Y29uc3QgaW50MzJfdCo+KHguUG9pbnRlcjwwPihjdWMpKTsKKyAgVHlwZTxjb25z
dCBpbnQzMl90Kj4oeC5Qb2ludGVyPDA+KGNzYykpOworCisgIFR5cGU8aW50MzJfdCo+KHguUG9p
bnRlcjxpbnQzMl90PihjKSk7CisgIFR5cGU8aW50MzJfdCo+KHguUG9pbnRlcjxpbnQzMl90Pih1
YykpOworICBUeXBlPGludDMyX3QqPih4LlBvaW50ZXI8aW50MzJfdD4oc2MpKTsKKyAgVHlwZTxj
b25zdCBpbnQzMl90Kj4oeC5Qb2ludGVyPGludDMyX3Q+KGNjKSk7CisgIFR5cGU8Y29uc3QgaW50
MzJfdCo+KHguUG9pbnRlcjxpbnQzMl90PihjdWMpKTsKKyAgVHlwZTxjb25zdCBpbnQzMl90Kj4o
eC5Qb2ludGVyPGludDMyX3Q+KGNzYykpOworCisgIFR5cGU8c3RkOjp0dXBsZTxpbnQzMl90Kj4+
KHguUG9pbnRlcnMoYykpOworICBUeXBlPHN0ZDo6dHVwbGU8aW50MzJfdCo+Pih4LlBvaW50ZXJz
KHVjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxpbnQzMl90Kj4+KHguUG9pbnRlcnMoc2MpKTsKKyAg
VHlwZTxzdGQ6OnR1cGxlPGNvbnN0IGludDMyX3QqPj4oeC5Qb2ludGVycyhjYykpOworICBUeXBl
PHN0ZDo6dHVwbGU8Y29uc3QgaW50MzJfdCo+Pih4LlBvaW50ZXJzKGN1YykpOworICBUeXBlPHN0
ZDo6dHVwbGU8Y29uc3QgaW50MzJfdCo+Pih4LlBvaW50ZXJzKGNzYykpOworCisgIFR5cGU8U3Bh
bjxpbnQzMl90Pj4oeC5TbGljZTwwPihjKSk7CisgIFR5cGU8U3BhbjxpbnQzMl90Pj4oeC5TbGlj
ZTwwPih1YykpOworICBUeXBlPFNwYW48aW50MzJfdD4+KHguU2xpY2U8MD4oc2MpKTsKKyAgVHlw
ZTxTcGFuPGNvbnN0IGludDMyX3Q+Pih4LlNsaWNlPDA+KGNjKSk7CisgIFR5cGU8U3Bhbjxjb25z
dCBpbnQzMl90Pj4oeC5TbGljZTwwPihjdWMpKTsKKyAgVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+
Pih4LlNsaWNlPDA+KGNzYykpOworCisgIFR5cGU8c3RkOjp0dXBsZTxTcGFuPGludDMyX3Q+Pj4o
eC5TbGljZXMoYykpOworICBUeXBlPHN0ZDo6dHVwbGU8U3BhbjxpbnQzMl90Pj4+KHguU2xpY2Vz
KHVjKSk7CisgIFR5cGU8c3RkOjp0dXBsZTxTcGFuPGludDMyX3Q+Pj4oeC5TbGljZXMoc2MpKTsK
KyAgVHlwZTxzdGQ6OnR1cGxlPFNwYW48Y29uc3QgaW50MzJfdD4+Pih4LlNsaWNlcyhjYykpOwor
ICBUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4+KHguU2xpY2VzKGN1YykpOwor
ICBUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4+KHguU2xpY2VzKGNzYykpOwor
fQorCitURVNUKExheW91dCwgQ29uc3RFbGVtZW50VHlwZSkgeworICBjb25zdGV4cHIgTGF5b3V0
PGNvbnN0IGludDMyX3Q+IHgoMSk7CisgIGFsaWduYXMoaW50MzJfdCkgY2hhciBjW3guQWxsb2NT
aXplKCldID0ge307CisgIGNvbnN0IGNoYXIqIGNjID0gYzsKKyAgY29uc3QgaW50MzJfdCogcCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGNjKTsKKworICBFWFBFQ1RfRVEoYWxp
Z25vZihpbnQzMl90KSwgeC5BbGlnbm1lbnQoKSk7CisKKyAgRVhQRUNUX0VRKDAsIHguT2Zmc2V0
PDA+KCkpOworICBFWFBFQ1RfRVEoMCwgeC5PZmZzZXQ8Y29uc3QgaW50MzJfdD4oKSk7CisKKyAg
RVhQRUNUX1RIQVQoeC5PZmZzZXRzKCksIEVsZW1lbnRzQXJlKDApKTsKKworICBFWFBFQ1RfRVEo
MSwgeC5TaXplPDA+KCkpOworICBFWFBFQ1RfRVEoMSwgeC5TaXplPGNvbnN0IGludDMyX3Q+KCkp
OworCisgIEVYUEVDVF9USEFUKHguU2l6ZXMoKSwgRWxlbWVudHNBcmUoMSkpOworCisgIEVYUEVD
VF9FUShzaXplb2YoaW50MzJfdCksIHguQWxsb2NTaXplKCkpOworCisgIEVYUEVDVF9FUShwLCBU
eXBlPGNvbnN0IGludDMyX3QqPih4LlBvaW50ZXI8MD4oYykpKTsKKyAgRVhQRUNUX0VRKHAsIFR5
cGU8Y29uc3QgaW50MzJfdCo+KHguUG9pbnRlcjwwPihjYykpKTsKKworICBFWFBFQ1RfRVEocCwg
VHlwZTxjb25zdCBpbnQzMl90Kj4oeC5Qb2ludGVyPGNvbnN0IGludDMyX3Q+KGMpKSk7CisgIEVY
UEVDVF9FUShwLCBUeXBlPGNvbnN0IGludDMyX3QqPih4LlBvaW50ZXI8Y29uc3QgaW50MzJfdD4o
Y2MpKSk7CisKKyAgRVhQRUNUX1RIQVQoVHlwZTxzdGQ6OnR1cGxlPGNvbnN0IGludDMyX3QqPj4o
eC5Qb2ludGVycyhjKSksIFR1cGxlKHApKTsKKyAgRVhQRUNUX1RIQVQoVHlwZTxzdGQ6OnR1cGxl
PGNvbnN0IGludDMyX3QqPj4oeC5Qb2ludGVycyhjYykpLCBUdXBsZShwKSk7CisKKyAgRVhQRUNU
X1RIQVQoVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+Pih4LlNsaWNlPDA+KGMpKSwKKyAgICAgICAg
ICAgICAgSXNTYW1lU2xpY2UoU3Bhbjxjb25zdCBpbnQzMl90PihwLCAxKSkpOworICBFWFBFQ1Rf
VEhBVChUeXBlPFNwYW48Y29uc3QgaW50MzJfdD4+KHguU2xpY2U8MD4oY2MpKSwKKyAgICAgICAg
ICAgICAgSXNTYW1lU2xpY2UoU3Bhbjxjb25zdCBpbnQzMl90PihwLCAxKSkpOworCisgIEVYUEVD
VF9USEFUKFR5cGU8U3Bhbjxjb25zdCBpbnQzMl90Pj4oeC5TbGljZTxjb25zdCBpbnQzMl90Pihj
KSksCisgICAgICAgICAgICAgIElzU2FtZVNsaWNlKFNwYW48Y29uc3QgaW50MzJfdD4ocCwgMSkp
KTsKKyAgRVhQRUNUX1RIQVQoVHlwZTxTcGFuPGNvbnN0IGludDMyX3Q+Pih4LlNsaWNlPGNvbnN0
IGludDMyX3Q+KGNjKSksCisgICAgICAgICAgICAgIElzU2FtZVNsaWNlKFNwYW48Y29uc3QgaW50
MzJfdD4ocCwgMSkpKTsKKworICBFWFBFQ1RfVEhBVChUeXBlPHN0ZDo6dHVwbGU8U3Bhbjxjb25z
dCBpbnQzMl90Pj4+KHguU2xpY2VzKGMpKSwKKyAgICAgICAgICAgICAgVHVwbGUoSXNTYW1lU2xp
Y2UoU3Bhbjxjb25zdCBpbnQzMl90PihwLCAxKSkpKTsKKyAgRVhQRUNUX1RIQVQoVHlwZTxzdGQ6
OnR1cGxlPFNwYW48Y29uc3QgaW50MzJfdD4+Pih4LlNsaWNlcyhjYykpLAorICAgICAgICAgICAg
ICBUdXBsZShJc1NhbWVTbGljZShTcGFuPGNvbnN0IGludDMyX3Q+KHAsIDEpKSkpOworfQorCitu
YW1lc3BhY2UgZXhhbXBsZSB7CisKKy8vIEltbXV0YWJsZSBtb3ZlLW9ubHkgc3RyaW5nIHdpdGgg
c2l6ZW9mIGVxdWFsIHRvIHNpemVvZih2b2lkKikuIFRoZSBzdHJpbmcKKy8vIHNpemUgYW5kIHRo
ZSBjaGFyYWN0ZXJzIGFyZSBrZXB0IGluIHRoZSBzYW1lIGhlYXAgYWxsb2NhdGlvbi4KK2NsYXNz
IENvbXBhY3RTdHJpbmcgeworIHB1YmxpYzoKKyAgQ29tcGFjdFN0cmluZyhjb25zdCBjaGFyKiBz
ID0gIiIpIHsgIC8vIE5PTElOVAorICAgIGNvbnN0IHNpemVfdCBzaXplID0gc3RybGVuKHMpOwor
ICAgIC8vIHNpemVfdFsxXSwgZm9sbG93ZWQgYnkgY2hhcltzaXplICsgMV0uCisgICAgLy8gVGhp
cyBzdGF0ZW1lbnQgZG9lc24ndCBhbGxvY2F0ZSBtZW1vcnkuCisgICAgY29uc3QgTCBsYXlvdXQo
MSwgc2l6ZSArIDEpOworICAgIC8vIEFsbG9jU2l6ZSgpIHRlbGxzIHVzIGhvdyBtdWNoIG1lbW9y
eSB3ZSBuZWVkIHRvIGFsbG9jYXRlIGZvciBhbGwgb3VyCisgICAgLy8gZGF0YS4KKyAgICBwXy5y
ZXNldChuZXcgdW5zaWduZWQgY2hhcltsYXlvdXQuQWxsb2NTaXplKCldKTsKKyAgICAvLyBJZiBy
dW5uaW5nIHVuZGVyIEFTQU4sIG1hcmsgdGhlIHBhZGRpbmcgYnl0ZXMsIGlmIGFueSwgdG8gY2F0
Y2ggbWVtb3J5CisgICAgLy8gZXJyb3JzLgorICAgIGxheW91dC5Qb2lzb25QYWRkaW5nKHBfLmdl
dCgpKTsKKyAgICAvLyBTdG9yZSB0aGUgc2l6ZSBpbiB0aGUgYWxsb2NhdGlvbi4KKyAgICAvLyBQ
b2ludGVyPHNpemVfdD4oKSBpcyBhIHN5bm9ueW0gZm9yIFBvaW50ZXI8MD4oKS4KKyAgICAqbGF5
b3V0LlBvaW50ZXI8c2l6ZV90PihwXy5nZXQoKSkgPSBzaXplOworICAgIC8vIFN0b3JlIHRoZSBj
aGFyYWN0ZXJzIGluIHRoZSBhbGxvY2F0aW9uLgorICAgIG1lbWNweShsYXlvdXQuUG9pbnRlcjxj
aGFyPihwXy5nZXQoKSksIHMsIHNpemUgKyAxKTsKKyAgfQorCisgIHNpemVfdCBzaXplKCkgY29u
c3QgeworICAgIC8vIEVxdWl2YWxlbnQgdG8gcmVpbnRlcnByZXRfY2FzdDxzaXplX3QmPigqcCku
CisgICAgcmV0dXJuICpMOjpQYXJ0aWFsKCkuUG9pbnRlcjxzaXplX3Q+KHBfLmdldCgpKTsKKyAg
fQorCisgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgeworICAgIC8vIEVxdWl2YWxlbnQgdG8g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocC5nZXQoKSArIHNpemVvZihzaXplX3QpKS4KKyAgICAv
LyBUaGUgYXJndW1lbnQgaW4gUGFydGlhbCgxKSBzcGVjaWZpZXMgdGhhdCB3ZSBoYXZlIHNpemVf
dFsxXSBpbiBmcm9udCBvZgorICAgIC8vIHRoZQorICAgIC8vIGNoYXJhY3RlcnMuCisgICAgcmV0
dXJuIEw6OlBhcnRpYWwoMSkuUG9pbnRlcjxjaGFyPihwXy5nZXQoKSk7CisgIH0KKworIHByaXZh
dGU6CisgIC8vIE91ciBoZWFwIGFsbG9jYXRpb24gY29udGFpbnMgYSBzaXplX3QgZm9sbG93ZWQg
YnkgYW4gYXJyYXkgb2YgY2hhcnMuCisgIHVzaW5nIEwgPSBMYXlvdXQ8c2l6ZV90LCBjaGFyPjsK
KyAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gcF87Cit9OworCitURVNUKENvbXBh
Y3RTdHJpbmcsIFdvcmtzKSB7CisgIENvbXBhY3RTdHJpbmcgcyA9ICJoZWxsbyI7CisgIEVYUEVD
VF9FUSg1LCBzLnNpemUoKSk7CisgIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBzLmNfc3RyKCkpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UgZXhhbXBsZQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5h
bWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ludGVybmFsL25vZGVfaGFzaF9wb2xpY3kuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjVlNzAw
OWU3ZTdlNGM1YjAzM2E1ZDI1OGNhZDkzNTcyY2ZkYTVlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL25vZGVfaGFzaF9wb2xpY3kuaApAQCAtMCwwICsxLDg4IEBA
CisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIEFkYXB0cyBh
IHBvbGljeSBmb3Igbm9kZXMuCisvLworLy8gVGhlIG5vZGUgcG9saWN5IHNob3VsZCBtb2RlbDoK
Ky8vCisvLyBzdHJ1Y3QgUG9saWN5IHsKKy8vICAgLy8gUmV0dXJucyBhIG5ldyBub2RlIGFsbG9j
YXRlZCBhbmQgY29uc3RydWN0ZWQgdXNpbmcgdGhlIGFsbG9jYXRvciwgdXNpbmcKKy8vICAgLy8g
dGhlIHNwZWNpZmllZCBhcmd1bWVudHMuCisvLyAgIHRlbXBsYXRlIDxjbGFzcyBBbGxvYywgY2xh
c3MuLi4gQXJncz4KKy8vICAgdmFsdWVfdHlwZSogbmV3X2VsZW1lbnQoQWxsb2MqIGFsbG9jLCBB
cmdzJiYuLi4gYXJncykgY29uc3Q7CisvLworLy8gICAvLyBEZXN0cm95cyBhbmQgZGVhbGxvY2F0
ZXMgbm9kZSB1c2luZyB0aGUgYWxsb2NhdG9yLgorLy8gICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2M+
CisvLyAgIHZvaWQgZGVsZXRlX2VsZW1lbnQoQWxsb2MqIGFsbG9jLCB2YWx1ZV90eXBlKiBub2Rl
KSBjb25zdDsKKy8vIH07CisvLworLy8gSXQgbWF5IGFsc28gb3B0aW9uYWxseSBkZWZpbmUgYHZh
bHVlKClgIGFuZCBgYXBwbHkoKWAuIEZvciBkb2N1bWVudGF0aW9uIG9uCisvLyB0aGVzZSwgc2Vl
IGhhc2hfcG9saWN5X3RyYWl0cy5oLgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFM
X05PREVfSEFTSF9QT0xJQ1lfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfTk9E
RV9IQVNIX1BPTElDWV9IXworCisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxjc3RkZGVm
PgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx1
dGlsaXR5PgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
IHsKKwordGVtcGxhdGUgPGNsYXNzIFJlZmVyZW5jZSwgY2xhc3MgUG9saWN5Pgorc3RydWN0IG5v
ZGVfaGFzaF9wb2xpY3kgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbHZhbHVlX3JlZmVyZW5j
ZTxSZWZlcmVuY2U+Ojp2YWx1ZSwgIiIpOworCisgIHVzaW5nIHNsb3RfdHlwZSA9IHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2N2PAorICAgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFJl
ZmVyZW5jZT46OnR5cGU+Ojp0eXBlKjsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2MsIGNsYXNz
Li4uIEFyZ3M+CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvYyogYWxsb2MsIHNsb3RfdHlw
ZSogc2xvdCwgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICAqc2xvdCA9IFBvbGljeTo6bmV3X2VsZW1l
bnQoYWxsb2MsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICB0ZW1wbGF0
ZSA8Y2xhc3MgQWxsb2M+CisgIHN0YXRpYyB2b2lkIGRlc3Ryb3koQWxsb2MqIGFsbG9jLCBzbG90
X3R5cGUqIHNsb3QpIHsKKyAgICBQb2xpY3k6OmRlbGV0ZV9lbGVtZW50KGFsbG9jLCAqc2xvdCk7
CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2M+CisgIHN0YXRpYyB2b2lkIHRyYW5zZmVy
KEFsbG9jKiwgc2xvdF90eXBlKiBuZXdfc2xvdCwgc2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAg
ICpuZXdfc2xvdCA9ICpvbGRfc2xvdDsKKyAgfQorCisgIHN0YXRpYyBzaXplX3Qgc3BhY2VfdXNl
ZChjb25zdCBzbG90X3R5cGUqIHNsb3QpIHsKKyAgICBpZiAoc2xvdCA9PSBudWxscHRyKSByZXR1
cm4gUG9saWN5OjplbGVtZW50X3NwYWNlX3VzZWQobnVsbHB0cik7CisgICAgcmV0dXJuIFBvbGlj
eTo6ZWxlbWVudF9zcGFjZV91c2VkKCpzbG90KTsKKyAgfQorCisgIHN0YXRpYyBSZWZlcmVuY2Ug
ZWxlbWVudChzbG90X3R5cGUqIHNsb3QpIHsgcmV0dXJuICoqc2xvdDsgfQorCisgIHRlbXBsYXRl
IDxjbGFzcyBULCBjbGFzcyBQID0gUG9saWN5PgorICBzdGF0aWMgYXV0byB2YWx1ZShUKiBlbGVt
KSAtPiBkZWNsdHlwZShQOjp2YWx1ZShlbGVtKSkgeworICAgIHJldHVybiBQOjp2YWx1ZShlbGVt
KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcy4uLiBUcywgY2xhc3MgUCA9IFBvbGljeT4KKyAg
c3RhdGljIGF1dG8gYXBwbHkoVHMmJi4uLiB0cykgLT4gZGVjbHR5cGUoUDo6YXBwbHkoc3RkOjpm
b3J3YXJkPFRzPih0cykuLi4pKSB7CisgICAgcmV0dXJuIFA6OmFwcGx5KHN0ZDo6Zm9yd2FyZDxU
cz4odHMpLi4uKTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5h
bAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRF
Uk5BTF9OT0RFX0hBU0hfUE9MSUNZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvbm9kZV9oYXNoX3BvbGljeV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L25vZGVfaGFzaF9wb2xpY3lfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2QyODdlM2M0YTA0ZWJkNjE4
YzMwNWExNWI3NjMwNWY3MmE3NDk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL25vZGVfaGFzaF9wb2xpY3lfdGVzdC5jYwpAQCAtMCwwICsxLDY3IEBACisvLyBD
b3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaW5jbHVkZSAiYWJzbC9jb250
YWluZXIvaW50ZXJuYWwvbm9kZV9oYXNoX3BvbGljeS5oIgorCisjaW5jbHVkZSA8bWVtb3J5Pgor
CisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2lu
Y2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3RyYWl0cy5oIgorCitu
YW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFj
ZSB7CisKK3VzaW5nIDo6dGVzdGluZzo6UG9pbnRlZTsKKworc3RydWN0IFBvbGljeSA6IG5vZGVf
aGFzaF9wb2xpY3k8aW50JiwgUG9saWN5PiB7CisgIHVzaW5nIGtleV90eXBlID0gaW50OworICB1
c2luZyBpbml0X3R5cGUgPSBpbnQ7CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jPgorICBzdGF0
aWMgaW50KiBuZXdfZWxlbWVudChBbGxvYyogYWxsb2MsIGludCB2YWx1ZSkgeworICAgIHJldHVy
biBuZXcgaW50KHZhbHVlKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvYz4KKyAgc3Rh
dGljIHZvaWQgZGVsZXRlX2VsZW1lbnQoQWxsb2MqIGFsbG9jLCBpbnQqIGVsZW0pIHsKKyAgICBk
ZWxldGUgZWxlbTsKKyAgfQorfTsKKwordXNpbmcgTm9kZVBvbGljeSA9IGhhc2hfcG9saWN5X3Ry
YWl0czxQb2xpY3k+OworCitzdHJ1Y3QgTm9kZVRlc3QgOiA6OnRlc3Rpbmc6OlRlc3QgeworICBz
dGQ6OmFsbG9jYXRvcjxpbnQ+IGFsbG9jOworICBpbnQgbiA9IDUzOworICBpbnQqIGEgPSAmbjsK
K307CisKK1RFU1RfRihOb2RlVGVzdCwgQ29uc3RydWN0RGVzdHJveSkgeworICBOb2RlUG9saWN5
Ojpjb25zdHJ1Y3QoJmFsbG9jLCAmYSwgNDIpOworICBFWFBFQ1RfVEhBVChhLCBQb2ludGVlKDQy
KSk7CisgIE5vZGVQb2xpY3k6OmRlc3Ryb3koJmFsbG9jLCAmYSk7Cit9CisKK1RFU1RfRihOb2Rl
VGVzdCwgdHJhbnNmZXIpIHsKKyAgaW50IHMgPSA0MjsKKyAgaW50KiBiID0gJnM7CisgIE5vZGVQ
b2xpY3k6OnRyYW5zZmVyKCZhbGxvYywgJmEsICZiKTsKKyAgRVhQRUNUX0VRKCZzLCBhKTsKK30K
KworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9
ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L3Jhd19oYXNoX21hcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX21hcC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFlZGMwMDcxZTdkZTgyOWRlMmRkYzc5Njc1ODQ2NjMyZjY2MDRjNDYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfbWFwLmgK
QEAgLTAsMCArMSwxODIgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfUkFXX0hBU0hfTUFQX0hfCisjZGVm
aW5lIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1JBV19IQVNIX01BUF9IXworCisjaW5jbHVkZSA8
dHVwbGU+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2lu
Y2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIKKyNpbmNs
dWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIgIC8vIElXWVUgcHJh
Z21hOiBleHBvcnQKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRl
cm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBQb2xpY3ksIGNsYXNzIEhhc2gsIGNsYXNzIEVxLCBj
bGFzcyBBbGxvYz4KK2NsYXNzIHJhd19oYXNoX21hcCA6IHB1YmxpYyByYXdfaGFzaF9zZXQ8UG9s
aWN5LCBIYXNoLCBFcSwgQWxsb2M+IHsKKyAgLy8gUCBpcyBQb2xpY3kuIEl0J3MgcGFzc2VkIGFz
IGEgdGVtcGxhdGUgYXJndW1lbnQgdG8gc3VwcG9ydCBtYXBzIHRoYXQgaGF2ZQorICAvLyBpbmNv
bXBsZXRlIHR5cGVzIGFzIHZhbHVlcywgYXMgaW4gdW5vcmRlcmVkX21hcDxLLCBJbmNvbXBsZXRl
VHlwZT4uCisgIC8vIE1hcHBlZFJlZmVyZW5jZTw+IG1heSBiZSBhIG5vbi1yZWZlcmVuY2UgdHlw
ZS4KKyAgdGVtcGxhdGUgPGNsYXNzIFA+CisgIHVzaW5nIE1hcHBlZFJlZmVyZW5jZSA9IGRlY2x0
eXBlKFA6OnZhbHVlKAorICAgICAgc3RkOjphZGRyZXNzb2Yoc3RkOjpkZWNsdmFsPHR5cGVuYW1l
IHJhd19oYXNoX21hcDo6cmVmZXJlbmNlPigpKSkpOworCisgIC8vIE1hcHBlZENvbnN0UmVmZXJl
bmNlPD4gbWF5IGJlIGEgbm9uLXJlZmVyZW5jZSB0eXBlLgorICB0ZW1wbGF0ZSA8Y2xhc3MgUD4K
KyAgdXNpbmcgTWFwcGVkQ29uc3RSZWZlcmVuY2UgPSBkZWNsdHlwZShQOjp2YWx1ZSgKKyAgICAg
IHN0ZDo6YWRkcmVzc29mKHN0ZDo6ZGVjbHZhbDx0eXBlbmFtZSByYXdfaGFzaF9tYXA6OmNvbnN0
X3JlZmVyZW5jZT4oKSkpKTsKKworIHB1YmxpYzoKKyAgdXNpbmcga2V5X3R5cGUgPSB0eXBlbmFt
ZSBQb2xpY3k6OmtleV90eXBlOworICB1c2luZyBtYXBwZWRfdHlwZSA9IHR5cGVuYW1lIFBvbGlj
eTo6bWFwcGVkX3R5cGU7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBLPgorICB1c2luZyBrZXlfYXJn
ID0gdHlwZW5hbWUgcmF3X2hhc2hfbWFwOjpyYXdfaGFzaF9zZXQ6OnRlbXBsYXRlIGtleV9hcmc8
Sz47CisKKyAgc3RhdGljX2Fzc2VydCghc3RkOjppc19yZWZlcmVuY2U8a2V5X3R5cGU+Ojp2YWx1
ZSwgIiIpOworICAvLyBUT0RPKGFsa2lzKTogcmVtb3ZlIHRoaXMgYXNzZXJ0aW9uIGFuZCB2ZXJp
ZnkgdGhhdCByZWZlcmVuY2UgbWFwcGVkX3R5cGUgaXMKKyAgLy8gc3VwcG9ydGVkLgorICBzdGF0
aWNfYXNzZXJ0KCFzdGQ6OmlzX3JlZmVyZW5jZTxtYXBwZWRfdHlwZT46OnZhbHVlLCAiIik7CisK
KyAgdXNpbmcgaXRlcmF0b3IgPSB0eXBlbmFtZSByYXdfaGFzaF9tYXA6OnJhd19oYXNoX3NldDo6
aXRlcmF0b3I7CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gdHlwZW5hbWUgcmF3X2hhc2hfbWFw
OjpyYXdfaGFzaF9zZXQ6OmNvbnN0X2l0ZXJhdG9yOworCisgIHJhd19oYXNoX21hcCgpIHt9Cisg
IHVzaW5nIHJhd19oYXNoX21hcDo6cmF3X2hhc2hfc2V0OjpyYXdfaGFzaF9zZXQ7CisKKyAgLy8g
VGhlIGxhc3QgdHdvIHRlbXBsYXRlIHBhcmFtZXRlcnMgZW5zdXJlIHRoYXQgYm90aCBhcmd1bWVu
dHMgYXJlIHJ2YWx1ZXMKKyAgLy8gKGx2YWx1ZSBhcmd1bWVudHMgYXJlIGhhbmRsZWQgYnkgdGhl
IG92ZXJsb2FkcyBiZWxvdykuIFRoaXMgaXMgbmVjZXNzYXJ5CisgIC8vIGZvciBzdXBwb3J0aW5n
IGJpdGZpZWxkIGFyZ3VtZW50cy4KKyAgLy8KKyAgLy8gICB1bmlvbiB7IGludCBuIDogMTsgfTsK
KyAgLy8gICBmbGF0X2hhc2hfbWFwPGludCwgaW50PiBtOworICAvLyAgIG0uaW5zZXJ0X29yX2Fz
c2lnbihuLCBuKTsKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MgViA9IG1h
cHBlZF90eXBlLCBLKiA9IG51bGxwdHIsCisgICAgICAgICAgICBWKiA9IG51bGxwdHI+CisgIHN0
ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fzc2lnbihrZXlfYXJnPEs+JiYgaywg
ViYmIHYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X29yX2Fzc2lnbl9pbXBsKHN0ZDo6Zm9yd2FyZDxL
PihrKSwgc3RkOjpmb3J3YXJkPFY+KHYpKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0g
a2V5X3R5cGUsIGNsYXNzIFYgPSBtYXBwZWRfdHlwZSwgSyogPSBudWxscHRyPgorICBzdGQ6OnBh
aXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydF9vcl9hc3NpZ24oa2V5X2FyZzxLPiYmIGssIGNvbnN0
IFYmIHYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X29yX2Fzc2lnbl9pbXBsKHN0ZDo6Zm9yd2FyZDxL
PihrKSwgdik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBW
ID0gbWFwcGVkX3R5cGUsIFYqID0gbnVsbHB0cj4KKyAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29s
PiBpbnNlcnRfb3JfYXNzaWduKGNvbnN0IGtleV9hcmc8Sz4mIGssIFYmJiB2KSB7CisgICAgcmV0
dXJuIGluc2VydF9vcl9hc3NpZ25faW1wbChrLCBzdGQ6OmZvcndhcmQ8Vj4odikpOworICB9CisK
KyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MgViA9IG1hcHBlZF90eXBlPgor
ICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydF9vcl9hc3NpZ24oY29uc3Qga2V5X2Fy
ZzxLPiYgaywgY29uc3QgViYgdikgeworICAgIHJldHVybiBpbnNlcnRfb3JfYXNzaWduX2ltcGwo
aywgdik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBWID0g
bWFwcGVkX3R5cGUsIEsqID0gbnVsbHB0ciwKKyAgICAgICAgICAgIFYqID0gbnVsbHB0cj4KKyAg
aXRlcmF0b3IgaW5zZXJ0X29yX2Fzc2lnbihjb25zdF9pdGVyYXRvciwga2V5X2FyZzxLPiYmIGss
IFYmJiB2KSB7CisgICAgcmV0dXJuIGluc2VydF9vcl9hc3NpZ24oc3RkOjpmb3J3YXJkPEs+KGsp
LCBzdGQ6OmZvcndhcmQ8Vj4odikpLmZpcnN0OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsg
PSBrZXlfdHlwZSwgY2xhc3MgViA9IG1hcHBlZF90eXBlLCBLKiA9IG51bGxwdHI+CisgIGl0ZXJh
dG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3RfaXRlcmF0b3IsIGtleV9hcmc8Sz4mJiBrLCBjb25z
dCBWJiB2KSB7CisgICAgcmV0dXJuIGluc2VydF9vcl9hc3NpZ24oc3RkOjpmb3J3YXJkPEs+KGsp
LCB2KS5maXJzdDsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNz
IFYgPSBtYXBwZWRfdHlwZSwgViogPSBudWxscHRyPgorICBpdGVyYXRvciBpbnNlcnRfb3JfYXNz
aWduKGNvbnN0X2l0ZXJhdG9yLCBjb25zdCBrZXlfYXJnPEs+JiBrLCBWJiYgdikgeworICAgIHJl
dHVybiBpbnNlcnRfb3JfYXNzaWduKGssIHN0ZDo6Zm9yd2FyZDxWPih2KSkuZmlyc3Q7CisgIH0K
KworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBWID0gbWFwcGVkX3R5cGU+
CisgIGl0ZXJhdG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3RfaXRlcmF0b3IsIGNvbnN0IGtleV9h
cmc8Sz4mIGssIGNvbnN0IFYmIHYpIHsKKyAgICByZXR1cm4gaW5zZXJ0X29yX2Fzc2lnbihrLCB2
KS5maXJzdDsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzLi4u
IEFyZ3MsCisgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAg
ICAgICAhc3RkOjppc19jb252ZXJ0aWJsZTxLLCBjb25zdF9pdGVyYXRvcj46OnZhbHVlLCBpbnQ+
Ojp0eXBlID0gMCwKKyAgICAgICAgICAgIEsqID0gbnVsbHB0cj4KKyAgc3RkOjpwYWlyPGl0ZXJh
dG9yLCBib29sPiB0cnlfZW1wbGFjZShrZXlfYXJnPEs+JiYgaywgQXJncyYmLi4uIGFyZ3MpIHsK
KyAgICByZXR1cm4gdHJ5X2VtcGxhY2VfaW1wbChzdGQ6OmZvcndhcmQ8Sz4oayksIHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90
eXBlLCBjbGFzcy4uLiBBcmdzLAorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
CisgICAgICAgICAgICAgICAgIXN0ZDo6aXNfY29udmVydGlibGU8SywgY29uc3RfaXRlcmF0b3I+
Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9IDA+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gdHJ5
X2VtcGxhY2UoY29uc3Qga2V5X2FyZzxLPiYgaywgQXJncyYmLi4uIGFyZ3MpIHsKKyAgICByZXR1
cm4gdHJ5X2VtcGxhY2VfaW1wbChrLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9
CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MuLi4gQXJncywgSyogPSBu
dWxscHRyPgorICBpdGVyYXRvciB0cnlfZW1wbGFjZShjb25zdF9pdGVyYXRvciwga2V5X2FyZzxL
PiYmIGssIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgcmV0dXJuIHRyeV9lbXBsYWNlKHN0ZDo6Zm9y
d2FyZDxLPihrKSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKS5maXJzdDsKKyAgfQorCisg
IHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUsIGNsYXNzLi4uIEFyZ3M+CisgIGl0ZXJhdG9y
IHRyeV9lbXBsYWNlKGNvbnN0X2l0ZXJhdG9yLCBjb25zdCBrZXlfYXJnPEs+JiBrLCBBcmdzJiYu
Li4gYXJncykgeworICAgIHJldHVybiB0cnlfZW1wbGFjZShrLCBzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pLmZpcnN0OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwg
Y2xhc3MgUCA9IFBvbGljeT4KKyAgTWFwcGVkUmVmZXJlbmNlPFA+IGF0KGNvbnN0IGtleV9hcmc8
Sz4mIGtleSkgeworICAgIGF1dG8gaXQgPSB0aGlzLT5maW5kKGtleSk7CisgICAgaWYgKGl0ID09
IHRoaXMtPmVuZCgpKSBzdGQ6OmFib3J0KCk7CisgICAgcmV0dXJuIFBvbGljeTo6dmFsdWUoJipp
dCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlLCBjbGFzcyBQID0gUG9s
aWN5PgorICBNYXBwZWRDb25zdFJlZmVyZW5jZTxQPiBhdChjb25zdCBrZXlfYXJnPEs+JiBrZXkp
IGNvbnN0IHsKKyAgICBhdXRvIGl0ID0gdGhpcy0+ZmluZChrZXkpOworICAgIGlmIChpdCA9PSB0
aGlzLT5lbmQoKSkgc3RkOjphYm9ydCgpOworICAgIHJldHVybiBQb2xpY3k6OnZhbHVlKCYqaXQp
OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZSwgY2xhc3MgUCA9IFBvbGlj
eSwgSyogPSBudWxscHRyPgorICBNYXBwZWRSZWZlcmVuY2U8UD4gb3BlcmF0b3JbXShrZXlfYXJn
PEs+JiYga2V5KSB7CisgICAgcmV0dXJuIFBvbGljeTo6dmFsdWUoJip0cnlfZW1wbGFjZShzdGQ6
OmZvcndhcmQ8Sz4oa2V5KSkuZmlyc3QpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBr
ZXlfdHlwZSwgY2xhc3MgUCA9IFBvbGljeT4KKyAgTWFwcGVkUmVmZXJlbmNlPFA+IG9wZXJhdG9y
W10oY29uc3Qga2V5X2FyZzxLPiYga2V5KSB7CisgICAgcmV0dXJuIFBvbGljeTo6dmFsdWUoJip0
cnlfZW1wbGFjZShrZXkpLmZpcnN0KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgdGVtcGxhdGUgPGNs
YXNzIEssIGNsYXNzIFY+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fz
c2lnbl9pbXBsKEsmJiBrLCBWJiYgdikgeworICAgIGF1dG8gcmVzID0gdGhpcy0+ZmluZF9vcl9w
cmVwYXJlX2luc2VydChrKTsKKyAgICBpZiAocmVzLnNlY29uZCkKKyAgICAgIHRoaXMtPmVtcGxh
Y2VfYXQocmVzLmZpcnN0LCBzdGQ6OmZvcndhcmQ8Sz4oayksIHN0ZDo6Zm9yd2FyZDxWPih2KSk7
CisgICAgZWxzZQorICAgICAgUG9saWN5Ojp2YWx1ZSgmKnRoaXMtPml0ZXJhdG9yX2F0KHJlcy5m
aXJzdCkpID0gc3RkOjpmb3J3YXJkPFY+KHYpOworICAgIHJldHVybiB7dGhpcy0+aXRlcmF0b3Jf
YXQocmVzLmZpcnN0KSwgcmVzLnNlY29uZH07CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9
IGtleV90eXBlLCBjbGFzcy4uLiBBcmdzPgorICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHRy
eV9lbXBsYWNlX2ltcGwoSyYmIGssIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgYXV0byByZXMgPSB0
aGlzLT5maW5kX29yX3ByZXBhcmVfaW5zZXJ0KGspOworICAgIGlmIChyZXMuc2Vjb25kKQorICAg
ICAgdGhpcy0+ZW1wbGFjZV9hdChyZXMuZmlyc3QsIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2Fy
ZDxLPihrKSksCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICByZXR1cm4ge3RoaXMtPml0ZXJhdG9y
X2F0KHJlcy5maXJzdCksIHJlcy5zZWNvbmR9OworICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
Y29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFC
U0xfQ09OVEFJTkVSX0lOVEVSTkFMX1JBV19IQVNIX01BUF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
Y29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9yYXdfaGFzaF9zZXQuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAxNTMxMjlmZDFlNmViZTc1MTMwMDll
YTg0MjNmZGVjNDVlMzYzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9yYXdfaGFzaF9zZXQuY2MKQEAgLTAsMCArMSw0NSBAQAorLy8gQ29weXJpZ2h0IDIwMTgg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L3Jhd19oYXNoX3NldC5oIgorCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKworI2luY2x1ZGUgImFic2wv
YmFzZS9jb25maWcuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9p
bnRlcm5hbCB7CisKK2NvbnN0ZXhwciBzaXplX3QgR3JvdXA6OmtXaWR0aDsKKworLy8gUmV0dXJu
cyAicmFuZG9tIiBzZWVkLgoraW5saW5lIHNpemVfdCBSYW5kb21TZWVkKCkgeworI2lmIEFCU0xf
SEFWRV9USFJFQURfTE9DQUwKKyAgc3RhdGljIHRocmVhZF9sb2NhbCBzaXplX3QgY291bnRlciA9
IDA7CisgIHNpemVfdCB2YWx1ZSA9ICsrY291bnRlcjsKKyNlbHNlICAgLy8gQUJTTF9IQVZFX1RI
UkVBRF9MT0NBTAorICBzdGF0aWMgc3RkOjphdG9taWM8c2l6ZV90PiBjb3VudGVyOworICBzaXpl
X3QgdmFsdWUgPSBjb3VudGVyLmZldGNoX2FkZCgxLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVk
KTsKKyNlbmRpZiAgLy8gQUJTTF9IQVZFX1RIUkVBRF9MT0NBTAorICByZXR1cm4gdmFsdWUgXiBz
dGF0aWNfY2FzdDxzaXplX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmY291bnRlcikp
OworfQorCitib29sIFNob3VsZEluc2VydEJhY2t3YXJkcyhzaXplX3QgaGFzaCwgY3RybF90KiBj
dHJsKSB7CisgIC8vIFRvIGF2b2lkIHByb2JsZW1zIHdpdGggd2VhayBoYXNoZXMgYW5kIHNpbmds
ZSBiaXQgdGVzdHMsIHdlIHVzZSAlIDEzLgorICAvLyBUT0RPKGtmbSxzYmVuemEpOiByZXZpc2l0
IGFmdGVyIHdlIGRvIHVuY29uZGl0aW9uYWwgbWl4aW5nCisgIHJldHVybiAoSDEoaGFzaCwgY3Ry
bCkgXiBSYW5kb21TZWVkKCkpICUgMTMgPiA2OworfQorCit9ICAvLyBuYW1lc3BhY2UgY29udGFp
bmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29u
dGFpbmVyL2ludGVybmFsL3Jhd19oYXNoX3NldC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L3Jhd19oYXNoX3NldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZGE5MGY3OWE0ZmM2M2E5Njc2NTgyNzI3Y2Zl
Y2M3ZWQ4YzJiZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwv
cmF3X2hhc2hfc2V0LmgKQEAgLTAsMCArMSwxOTE1IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIEFuIG9wZW4tYWRkcmVzc2luZworLy8gaGFzaHRhYmxl
IHdpdGggcXVhZHJhdGljIHByb2JpbmcuCisvLworLy8gVGhpcyBpcyBhIGxvdyBsZXZlbCBoYXNo
dGFibGUgb24gdG9wIG9mIHdoaWNoIGRpZmZlcmVudCBpbnRlcmZhY2VzIGNhbiBiZQorLy8gaW1w
bGVtZW50ZWQsIGxpa2UgZmxhdF9oYXNoX3NldCwgbm9kZV9oYXNoX3NldCwgc3RyaW5nX2hhc2hf
c2V0LCBldGMuCisvLworLy8gVGhlIHRhYmxlIGludGVyZmFjZSBpcyBzaW1pbGFyIHRvIHRoYXQg
b2Ygc3RkOjp1bm9yZGVyZWRfc2V0LiBOb3RhYmxlCisvLyBkaWZmZXJlbmNlcyBhcmUgdGhhdCBt
b3N0IG1lbWJlciBmdW5jdGlvbnMgc3VwcG9ydCBoZXRlcm9nZW5lb3VzIGtleXMgd2hlbgorLy8g
Qk9USCB0aGUgaGFzaCBhbmQgZXEgZnVuY3Rpb25zIGFyZSBtYXJrZWQgYXMgdHJhbnNwYXJlbnQu
IFRoZXkgZG8gc28gYnkKKy8vIHByb3ZpZGluZyBhIHR5cGVkZWYgY2FsbGVkIGBpc190cmFuc3Bh
cmVudGAuCisvLworLy8gV2hlbiBoZXRlcm9nZW5lb3VzIGxvb2t1cCBpcyBlbmFibGVkLCBmdW5j
dGlvbnMgdGhhdCB0YWtlIGtleV90eXBlIGFjdCBhcyBpZgorLy8gdGhleSBoYXZlIGFuIG92ZXJs
b2FkIHNldCBsaWtlOgorLy8KKy8vICAgaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlwZSYga2V5
KTsKKy8vICAgdGVtcGxhdGUgPGNsYXNzIEs+CisvLyAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgSyYg
a2V5KTsKKy8vCisvLyAgIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYga2V5KTsKKy8v
ICAgdGVtcGxhdGUgPGNsYXNzIEs+CisvLyAgIHNpemVfdHlwZSBlcmFzZShjb25zdCBLJiBrZXkp
OworLy8KKy8vICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4gZXF1YWxfcmFuZ2UoY29u
c3Qga2V5X3R5cGUmIGtleSk7CisvLyAgIHRlbXBsYXRlIDxjbGFzcyBLPgorLy8gICBzdGQ6OnBh
aXI8aXRlcmF0b3IsIGl0ZXJhdG9yPiBlcXVhbF9yYW5nZShjb25zdCBLJiBrZXkpOworLy8KKy8v
IFdoZW4gaGV0ZXJvZ2VuZW91cyBsb29rdXAgaXMgZGlzYWJsZWQsIG9ubHkgdGhlIGV4cGxpY2l0
IGBrZXlfdHlwZWAgb3ZlcmxvYWRzCisvLyBleGlzdC4KKy8vCisvLyBmaW5kKCkgYWxzbyBzdXBw
b3J0cyBwYXNzaW5nIHRoZSBoYXNoIGV4cGxpY2l0bHk6CisvLworLy8gICBpdGVyYXRvciBmaW5k
KGNvbnN0IGtleV90eXBlJiBrZXksIHNpemVfdCBoYXNoKTsKKy8vICAgdGVtcGxhdGUgPGNsYXNz
IFU+CisvLyAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgVSYga2V5LCBzaXplX3QgaGFzaCk7CisvLwor
Ly8gSW4gYWRkaXRpb24gdGhlIHBvaW50ZXIgdG8gZWxlbWVudCBhbmQgaXRlcmF0b3Igc3RhYmls
aXR5IGd1YXJhbnRlZXMgYXJlCisvLyB3ZWFrZXI6IGFsbCBpdGVyYXRvcnMgYW5kIHBvaW50ZXJz
IGFyZSBpbnZhbGlkYXRlZCBhZnRlciBhIG5ldyBlbGVtZW50IGlzCisvLyBpbnNlcnRlZC4KKy8v
CisvLyBJTVBMRU1FTlRBVElPTiBERVRBSUxTCisvLworLy8gVGhlIHRhYmxlIHN0b3JlcyBlbGVt
ZW50cyBpbmxpbmUgaW4gYSBzbG90IGFycmF5LiBJbiBhZGRpdGlvbiB0byB0aGUgc2xvdAorLy8g
YXJyYXkgdGhlIHRhYmxlIG1haW50YWlucyBzb21lIGNvbnRyb2wgc3RhdGUgcGVyIHNsb3QuIFRo
ZSBleHRyYSBzdGF0ZSBpcyBvbmUKKy8vIGJ5dGUgcGVyIHNsb3QgYW5kIHN0b3JlcyBlbXB0eSBv
ciBkZWxldGVkIG1hcmtzLCBvciBhbHRlcm5hdGl2ZWx5IDcgYml0cyBmcm9tCisvLyB0aGUgaGFz
aCBvZiBhbiBvY2N1cGllZCBzbG90LiBUaGUgdGFibGUgaXMgc3BsaXQgaW50byBsb2dpY2FsIGdy
b3VwcyBvZgorLy8gc2xvdHMsIGxpa2Ugc286CisvLworLy8gICAgICBHcm91cCAxICAgICAgICAg
R3JvdXAgMiAgICAgICAgR3JvdXAgMworLy8gKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tKworLy8gfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfAorLy8gKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tKworLy8KKy8vIE9uIGxvb2t1cCB0aGUgaGFzaCBpcyBzcGxpdCBpbnRvIHR3
byBwYXJ0czoKKy8vIC0gSDI6IDcgYml0cyAodGhvc2Ugc3RvcmVkIGluIHRoZSBjb250cm9sIGJ5
dGVzKQorLy8gLSBIMTogdGhlIHJlc3Qgb2YgdGhlIGJpdHMKKy8vIFRoZSBncm91cHMgYXJlIHBy
b2JlZCB1c2luZyBIMS4gRm9yIGVhY2ggZ3JvdXAgdGhlIHNsb3RzIGFyZSBtYXRjaGVkIHRvIEgy
IGluCisvLyBwYXJhbGxlbC4gQmVjYXVzZSBIMiBpcyA3IGJpdHMgKDEyOCBzdGF0ZXMpIGFuZCB0
aGUgbnVtYmVyIG9mIHNsb3RzIHBlciBncm91cAorLy8gaXMgbG93ICg4IG9yIDE2KSBpbiBhbG1v
c3QgYWxsIGNhc2VzIGEgbWF0Y2ggaW4gSDIgaXMgYWxzbyBhIGxvb2t1cCBoaXQuCisvLworLy8g
T24gaW5zZXJ0LCBvbmNlIHRoZSByaWdodCBncm91cCBpcyBmb3VuZCAoYXMgaW4gbG9va3VwKSwg
aXRzIHNsb3RzIGFyZQorLy8gZmlsbGVkIGluIG9yZGVyLgorLy8KKy8vIE9uIGVyYXNlIGEgc2xv
dCBpcyBjbGVhcmVkLiBJbiBjYXNlIHRoZSBncm91cCBkaWQgbm90IGhhdmUgYW55IGVtcHR5IHNs
b3RzCisvLyBiZWZvcmUgdGhlIGVyYXNlLCB0aGUgZXJhc2VkIHNsb3QgaXMgbWFya2VkIGFzIGRl
bGV0ZWQuCisvLworLy8gR3JvdXBzIHdpdGhvdXQgZW1wdHkgc2xvdHMgKGJ1dCBtYXliZSB3aXRo
IGRlbGV0ZWQgc2xvdHMpIGV4dGVuZCB0aGUgcHJvYmUKKy8vIHNlcXVlbmNlLiBUaGUgcHJvYmlu
ZyBhbGdvcml0aG0gaXMgcXVhZHJhdGljLiBHaXZlbiBOIHRoZSBudW1iZXIgb2YgZ3JvdXBzLAor
Ly8gdGhlIHByb2JpbmcgZnVuY3Rpb24gZm9yIHRoZSBpJ3RoIHByb2JlIGlzOgorLy8KKy8vICAg
UCgwKSA9IEgxICUgTgorLy8KKy8vICAgUChpKSA9IChQKGkgLSAxKSArIGkpICUgTgorLy8KKy8v
IFRoaXMgcHJvYmluZyBmdW5jdGlvbiBndWFyYW50ZWVzIHRoYXQgYWZ0ZXIgTiBwcm9iZXMsIGFs
bCB0aGUgZ3JvdXBzIG9mIHRoZQorLy8gdGFibGUgd2lsbCBiZSBwcm9iZWQgZXhhY3RseSBvbmNl
LgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1JBV19IQVNIX1NFVF9IXworI2Rl
ZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9SQVdfSEFTSF9TRVRfSF8KKworI2lmbmRlZiBT
V0lTU1RBQkxFX0hBVkVfU1NFMgorI2lmZGVmIF9fU1NFMl9fCisjZGVmaW5lIFNXSVNTVEFCTEVf
SEFWRV9TU0UyIDEKKyNlbHNlCisjZGVmaW5lIFNXSVNTVEFCTEVfSEFWRV9TU0UyIDAKKyNlbmRp
ZgorI2VuZGlmCisKKyNpZm5kZWYgU1dJU1NUQUJMRV9IQVZFX1NTU0UzCisjaWZkZWYgX19TU1NF
M19fCisjZGVmaW5lIFNXSVNTVEFCTEVfSEFWRV9TU1NFMyAxCisjZWxzZQorI2RlZmluZSBTV0lT
U1RBQkxFX0hBVkVfU1NTRTMgMAorI2VuZGlmCisjZW5kaWYKKworI2lmIFNXSVNTVEFCTEVfSEFW
RV9TU1NFMyAmJiAhU1dJU1NUQUJMRV9IQVZFX1NTRTIKKyNlcnJvciAiQmFkIGNvbmZpZ3VyYXRp
b24hIgorI2VuZGlmCisKKyNpZiBTV0lTU1RBQkxFX0hBVkVfU1NFMgorI2luY2x1ZGUgPHg4Nmlu
dHJpbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y21hdGg+
CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPGl0ZXJh
dG9yPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dHVw
bGU+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1
ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVy
bmFsL2VuZGlhbi5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9wb3J0LmgiCisjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvY29tcHJlc3NlZF90dXBsZS5oIgorI2luY2x1ZGUgImFic2wv
Y29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9oYXNoX3BvbGljeV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWdfaG9va3MuaCIKKyNpbmNsdWRlICJhYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9sYXlvdXQuaCIKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1v
cnkuaCIKKyNpbmNsdWRlICJhYnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC91dGlsaXR5L3V0aWxpdHkuaCIKKwor
bmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBs
YXRlIDxzaXplX3QgV2lkdGg+CitjbGFzcyBwcm9iZV9zZXEgeworIHB1YmxpYzoKKyAgcHJvYmVf
c2VxKHNpemVfdCBoYXNoLCBzaXplX3QgbWFzaykgeworICAgIGFzc2VydCgoKG1hc2sgKyAxKSAm
IG1hc2spID09IDAgJiYgIm5vdCBhIG1hc2siKTsKKyAgICBtYXNrXyA9IG1hc2s7CisgICAgb2Zm
c2V0XyA9IGhhc2ggJiBtYXNrXzsKKyAgfQorICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gb2Zmc2V0XzsgfQorICBzaXplX3Qgb2Zmc2V0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiAo
b2Zmc2V0XyArIGkpICYgbWFza187IH0KKworICB2b2lkIG5leHQoKSB7CisgICAgaW5kZXhfICs9
IFdpZHRoOworICAgIG9mZnNldF8gKz0gaW5kZXhfOworICAgIG9mZnNldF8gJj0gbWFza187Cisg
IH0KKyAgLy8gMC1iYXNlZCBwcm9iZSBpbmRleC4gVGhlIGktdGggcHJvYmUgaW4gdGhlIHByb2Jl
IHNlcXVlbmNlLgorICBzaXplX3QgaW5kZXgoKSBjb25zdCB7IHJldHVybiBpbmRleF87IH0KKwor
IHByaXZhdGU6CisgIHNpemVfdCBtYXNrXzsKKyAgc2l6ZV90IG9mZnNldF87CisgIHNpemVfdCBp
bmRleF8gPSAwOworfTsKKwordGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lcktleSwgY2xhc3MgSGFz
aCwgY2xhc3MgRXE+CitzdHJ1Y3QgUmVxdWlyZVVzYWJsZUtleSB7CisgIHRlbXBsYXRlIDxjbGFz
cyBQYXNzZWRLZXksIGNsYXNzLi4uIEFyZ3M+CisgIHN0ZDo6cGFpcjwKKyAgICAgIGRlY2x0eXBl
KHN0ZDo6ZGVjbHZhbDxjb25zdCBIYXNoJj4oKShzdGQ6OmRlY2x2YWw8Y29uc3QgUGFzc2VkS2V5
Jj4oKSkpLAorICAgICAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPGNvbnN0IEVxJj4oKShzdGQ6OmRl
Y2x2YWw8Y29uc3QgQ29udGFpbmVyS2V5Jj4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IFBhc3NlZEtleSY+KCkpKT4qCisgIG9w
ZXJhdG9yKCkoY29uc3QgUGFzc2VkS2V5JiwgY29uc3QgQXJncyYuLi4pIGNvbnN0OworfTsKKwor
dGVtcGxhdGUgPGNsYXNzIEUsIGNsYXNzIFBvbGljeSwgY2xhc3MgSGFzaCwgY2xhc3MgRXEsIGNs
YXNzLi4uIFRzPgorc3RydWN0IElzRGVjb21wb3NhYmxlIDogc3RkOjpmYWxzZV90eXBlIHt9Owor
Cit0ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5LCBjbGFzcyBIYXNoLCBjbGFzcyBFcSwgY2xhc3MuLi4g
VHM+CitzdHJ1Y3QgSXNEZWNvbXBvc2FibGU8CisgICAgYWJzbDo6dm9pZF90PGRlY2x0eXBlKAor
ICAgICAgICBQb2xpY3k6OmFwcGx5KFJlcXVpcmVVc2FibGVLZXk8dHlwZW5hbWUgUG9saWN5Ojpr
ZXlfdHlwZSwgSGFzaCwgRXE+KCksCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjpkZWNsdmFs
PFRzPigpLi4uKSk+LAorICAgIFBvbGljeSwgSGFzaCwgRXEsIFRzLi4uPiA6IHN0ZDo6dHJ1ZV90
eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MsIGNsYXNzID0gdm9pZD4KK3N0cnVjdCBJc1RyYW5z
cGFyZW50IDogc3RkOjpmYWxzZV90eXBlIHt9OwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3Qg
SXNUcmFuc3BhcmVudDxULCBhYnNsOjp2b2lkX3Q8dHlwZW5hbWUgVDo6aXNfdHJhbnNwYXJlbnQ+
PgorICAgIDogc3RkOjp0cnVlX3R5cGUge307CisKKy8vIFRPRE8oYWxraXMpOiBTd2l0Y2ggdG8g
c3RkOjppc19ub3Rocm93X3N3YXBwYWJsZSB3aGVuIGdjYy9jbGFuZyBzdXBwb3J0cyBpdC4KK3Rl
bXBsYXRlIDxjbGFzcyBUPgorY29uc3RleHByIGJvb2wgSXNOb1Rocm93U3dhcHBhYmxlKCkgewor
ICB1c2luZyBzdGQ6OnN3YXA7CisgIHJldHVybiBub2V4Y2VwdChzd2FwKHN0ZDo6ZGVjbHZhbDxU
Jj4oKSwgc3RkOjpkZWNsdmFsPFQmPigpKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
aW50IFRyYWlsaW5nWmVyb3MoVCB4KSB7CisgIHJldHVybiBzaXplb2YoVCkgPT0gOCA/IGJhc2Vf
aW50ZXJuYWw6OkNvdW50VHJhaWxpbmdaZXJvc05vblplcm82NCh4KQorICAgICAgICAgICAgICAg
ICAgICAgICAgOiBiYXNlX2ludGVybmFsOjpDb3VudFRyYWlsaW5nWmVyb3NOb25aZXJvMzIoeCk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW50IExlYWRpbmdaZXJvcyhUIHgpIHsKKyAg
cmV0dXJuIHNpemVvZihUKSA9PSA4ID8gYmFzZV9pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2
NCh4KQorICAgICAgICAgICAgICAgICAgICAgICAgOiBiYXNlX2ludGVybmFsOjpDb3VudExlYWRp
bmdaZXJvczMyKHgpOworfQorCisvLyBBbiBhYnN0cmFjdGlvbiBvdmVyIGEgYml0bWFzay4gSXQg
cHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gaXRlcmF0ZSB0aHJvdWdoIHRoZQorLy8gaW5kZXhlcyBv
ZiB0aGUgc2V0IGJpdHMgb2YgYSBiaXRtYXNrLiAgV2hlbiBTaGlmdD0wIChwbGF0Zm9ybXMgd2l0
aCBTU0UpLAorLy8gdGhpcyBpcyBhIHRydWUgYml0bWFzay4gIE9uIG5vbi1TU0UsIHBsYXRmb3Jt
cyB0aGUgYXJpdGhlbWF0aWMgdXNlZCB0bworLy8gZW11bGF0ZSB0aGUgU1NFIGJlaGF2aW9yIHdv
cmtzIGluIGJ5dGVzIChTaGlmdD0zKSBhbmQgbGVhdmVzIGVhY2ggYnl0ZXMgYXMKKy8vIGVpdGhl
ciAweDAwIG9yIDB4ODAuCisvLworLy8gRm9yIGV4YW1wbGU6CisvLyAgIGZvciAoaW50IGkgOiBC
aXRNYXNrPHVpbnQzMl90LCAxNj4oMHg1KSkgLT4geWllbGRzIDAsIDIKKy8vICAgZm9yIChpbnQg
aSA6IEJpdE1hc2s8dWludDY0X3QsIDgsIDM+KDB4MDAwMDAwMDA4MDgwMDAwMCkpIC0+IHlpZWxk
cyAyLCAzCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgaW50IFNpZ25pZmljYW50Qml0cywgaW50IFNoaWZ0
ID0gMD4KK2NsYXNzIEJpdE1hc2sgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8
VD46OnZhbHVlLCAiIik7CisgIHN0YXRpY19hc3NlcnQoU2hpZnQgPT0gMCB8fCBTaGlmdCA9PSAz
LCAiIik7CisKKyBwdWJsaWM6CisgIC8vIFRoZXNlIGFyZSB1c2VmdWwgZm9yIHVuaXQgdGVzdHMg
KGd1bml0KS4KKyAgdXNpbmcgdmFsdWVfdHlwZSA9IGludDsKKyAgdXNpbmcgaXRlcmF0b3IgPSBC
aXRNYXNrOworICB1c2luZyBjb25zdF9pdGVyYXRvciA9IEJpdE1hc2s7CisKKyAgZXhwbGljaXQg
Qml0TWFzayhUIG1hc2spIDogbWFza18obWFzaykge30KKyAgQml0TWFzayYgb3BlcmF0b3IrKygp
IHsKKyAgICBtYXNrXyAmPSAobWFza18gLSAxKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKyAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1hc2tfICE9IDA7IH0KKyAg
aW50IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIExvd2VzdEJpdFNldCgpOyB9CisgIGludCBM
b3dlc3RCaXRTZXQoKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnRhaW5lcl9pbnRlcm5hbDo6VHJh
aWxpbmdaZXJvcyhtYXNrXykgPj4gU2hpZnQ7CisgIH0KKyAgaW50IEhpZ2hlc3RCaXRTZXQoKSBj
b25zdCB7CisgICAgcmV0dXJuIChzaXplb2YoVCkgKiBDSEFSX0JJVCAtIGNvbnRhaW5lcl9pbnRl
cm5hbDo6TGVhZGluZ1plcm9zKG1hc2tfKSAtCisgICAgICAgICAgICAxKSA+PgorICAgICAgICAg
ICBTaGlmdDsKKyAgfQorCisgIEJpdE1hc2sgYmVnaW4oKSBjb25zdCB7IHJldHVybiAqdGhpczsg
fQorICBCaXRNYXNrIGVuZCgpIGNvbnN0IHsgcmV0dXJuIEJpdE1hc2soMCk7IH0KKworICBpbnQg
VHJhaWxpbmdaZXJvcygpIGNvbnN0IHsKKyAgICByZXR1cm4gY29udGFpbmVyX2ludGVybmFsOjpU
cmFpbGluZ1plcm9zKG1hc2tfKSA+PiBTaGlmdDsKKyAgfQorCisgIGludCBMZWFkaW5nWmVyb3Mo
KSBjb25zdCB7CisgICAgY29uc3RleHByIGludCB0b3RhbF9zaWduaWZpY2FudF9iaXRzID0gU2ln
bmlmaWNhbnRCaXRzIDw8IFNoaWZ0OworICAgIGNvbnN0ZXhwciBpbnQgZXh0cmFfYml0cyA9IHNp
emVvZihUKSAqIDggLSB0b3RhbF9zaWduaWZpY2FudF9iaXRzOworICAgIHJldHVybiBjb250YWlu
ZXJfaW50ZXJuYWw6OkxlYWRpbmdaZXJvcyhtYXNrXyA8PCBleHRyYV9iaXRzKSA+PiBTaGlmdDsK
KyAgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaXRNYXNr
JiBhLCBjb25zdCBCaXRNYXNrJiBiKSB7CisgICAgcmV0dXJuIGEubWFza18gPT0gYi5tYXNrXzsK
KyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJpdE1hc2smIGEsIGNvbnN0IEJp
dE1hc2smIGIpIHsKKyAgICByZXR1cm4gYS5tYXNrXyAhPSBiLm1hc2tfOworICB9CisKKyAgVCBt
YXNrXzsKK307CisKK3VzaW5nIGN0cmxfdCA9IHNpZ25lZCBjaGFyOwordXNpbmcgaDJfdCA9IHVp
bnQ4X3Q7CisKKy8vIFRoZSB2YWx1ZXMgaGVyZSBhcmUgc2VsZWN0ZWQgZm9yIG1heGltdW0gcGVy
Zm9ybWFuY2UuIFNlZSB0aGUgc3RhdGljIGFzc2VydHMKKy8vIGJlbG93IGZvciBkZXRhaWxzLgor
ZW51bSBDdHJsIDogY3RybF90IHsKKyAga0VtcHR5ID0gLTEyOCwgICAvLyAwYjEwMDAwMDAwCisg
IGtEZWxldGVkID0gLTIsICAgLy8gMGIxMTExMTExMAorICBrU2VudGluZWwgPSAtMSwgIC8vIDBi
MTExMTExMTEKK307CitzdGF0aWNfYXNzZXJ0KAorICAgIGtFbXB0eSAmIGtEZWxldGVkICYga1Nl
bnRpbmVsICYgMHg4MCwKKyAgICAiU3BlY2lhbCBtYXJrZXJzIG5lZWQgdG8gaGF2ZSB0aGUgTVNC
IHRvIG1ha2UgY2hlY2tpbmcgZm9yIHRoZW0gZWZmaWNpZW50Iik7CitzdGF0aWNfYXNzZXJ0KGtF
bXB0eSA8IGtTZW50aW5lbCAmJiBrRGVsZXRlZCA8IGtTZW50aW5lbCwKKyAgICAgICAgICAgICAg
ImtFbXB0eSBhbmQga0RlbGV0ZWQgbXVzdCBiZSBzbWFsbGVyIHRoYW4ga1NlbnRpbmVsIHRvIG1h
a2UgdGhlICIKKyAgICAgICAgICAgICAgIlNJTUQgdGVzdCBvZiBJc0VtcHR5T3JEZWxldGVkKCkg
ZWZmaWNpZW50Iik7CitzdGF0aWNfYXNzZXJ0KGtTZW50aW5lbCA9PSAtMSwKKyAgICAgICAgICAg
ICAgImtTZW50aW5lbCBtdXN0IGJlIC0xIHRvIGVsaWRlIGxvYWRpbmcgaXQgZnJvbSBtZW1vcnkg
aW50byBTSU1EICIKKyAgICAgICAgICAgICAgInJlZ2lzdGVycyAocGNtcGVxZCB4bW0sIHhtbSki
KTsKK3N0YXRpY19hc3NlcnQoa0VtcHR5ID09IC0xMjgsCisgICAgICAgICAgICAgICJrRW1wdHkg
bXVzdCBiZSAtMTI4IHRvIG1ha2UgdGhlIFNJTUQgY2hlY2sgZm9yIGl0cyAiCisgICAgICAgICAg
ICAgICJleGlzdGVuY2UgZWZmaWNpZW50IChwc2lnbmIgeG1tLCB4bW0pIik7CitzdGF0aWNfYXNz
ZXJ0KH5rRW1wdHkgJiB+a0RlbGV0ZWQgJiBrU2VudGluZWwgJiAweDdGLAorICAgICAgICAgICAg
ICAia0VtcHR5IGFuZCBrRGVsZXRlZCBtdXN0IHNoYXJlIGFuIHVuc2V0IGJpdCB0aGF0IGlzIG5v
dCBzaGFyZWQgIgorICAgICAgICAgICAgICAiYnkga1NlbnRpbmVsIHRvIG1ha2UgdGhlIHNjYWxh
ciB0ZXN0IGZvciBNYXRjaEVtcHR5T3JEZWxldGVkKCkgIgorICAgICAgICAgICAgICAiZWZmaWNp
ZW50Iik7CitzdGF0aWNfYXNzZXJ0KGtEZWxldGVkID09IC0yLAorICAgICAgICAgICAgICAia0Rl
bGV0ZWQgbXVzdCBiZSAtMiB0byBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAiCisgICAgICAg
ICAgICAgICJDb252ZXJ0U3BlY2lhbFRvRW1wdHlBbmRGdWxsVG9EZWxldGVkIGVmZmljaWVudCIp
OworCisvLyBBIHNpbmdsZSBibG9jayBvZiBlbXB0eSBjb250cm9sIGJ5dGVzIGZvciB0YWJsZXMg
d2l0aG91dCBhbnkgc2xvdHMgYWxsb2NhdGVkLgorLy8gVGhpcyBlbmFibGVzIHJlbW92aW5nIGEg
YnJhbmNoIGluIHRoZSBob3QgcGF0aCBvZiBmaW5kKCkuCitpbmxpbmUgY3RybF90KiBFbXB0eUdy
b3VwKCkgeworICBhbGlnbmFzKDE2KSBzdGF0aWMgY29uc3RleHByIGN0cmxfdCBlbXB0eV9ncm91
cFtdID0geworICAgICAga1NlbnRpbmVsLCBrRW1wdHksIGtFbXB0eSwga0VtcHR5LCBrRW1wdHks
IGtFbXB0eSwga0VtcHR5LCBrRW1wdHksCisgICAgICBrRW1wdHksICAgIGtFbXB0eSwga0VtcHR5
LCBrRW1wdHksIGtFbXB0eSwga0VtcHR5LCBrRW1wdHksIGtFbXB0eX07CisgIHJldHVybiBjb25z
dF9jYXN0PGN0cmxfdCo+KGVtcHR5X2dyb3VwKTsKK30KKworLy8gTWl4ZXMgYSByYW5kb21seSBn
ZW5lcmF0ZWQgcGVyLXByb2Nlc3Mgc2VlZCB3aXRoIGBoYXNoYCBhbmQgYGN0cmxgIHRvCisvLyBy
YW5kb21pemUgaW5zZXJ0aW9uIG9yZGVyIHdpdGhpbiBncm91cHMuCitib29sIFNob3VsZEluc2Vy
dEJhY2t3YXJkcyhzaXplX3QgaGFzaCwgY3RybF90KiBjdHJsKTsKKworLy8gUmV0dXJucyBhIGhh
c2ggc2VlZC4KKy8vCisvLyBUaGUgc2VlZCBjb25zaXN0cyBvZiB0aGUgY3RybF8gcG9pbnRlciwg
d2hpY2ggYWRkcyBlbm91Z2ggZW50cm9weSB0byBlbnN1cmUKKy8vIG5vbi1kZXRlcm1pbmlzbSBv
ZiBpdGVyYXRpb24gb3JkZXIgaW4gbW9zdCBjYXNlcy4KK2lubGluZSBzaXplX3QgSGFzaFNlZWQo
Y29uc3QgY3RybF90KiBjdHJsKSB7CisgIC8vIFRoZSBsb3cgYml0cyBvZiB0aGUgcG9pbnRlciBo
YXZlIGxpdHRsZSBvciBubyBlbnRyb3B5IGJlY2F1c2Ugb2YKKyAgLy8gYWxpZ25tZW50LiBXZSBz
aGlmdCB0aGUgcG9pbnRlciB0byB0cnkgdG8gdXNlIGhpZ2hlciBlbnRyb3B5IGJpdHMuIEEKKyAg
Ly8gZ29vZCBudW1iZXIgc2VlbXMgdG8gYmUgMTIgYml0cywgYmVjYXVzZSB0aGF0IGFsaWducyB3
aXRoIHBhZ2Ugc2l6ZS4KKyAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjdHJs
KSA+PiAxMjsKK30KKworaW5saW5lIHNpemVfdCBIMShzaXplX3QgaGFzaCwgY29uc3QgY3RybF90
KiBjdHJsKSB7CisgIHJldHVybiAoaGFzaCA+PiA3KSBeIEhhc2hTZWVkKGN0cmwpOworfQoraW5s
aW5lIGN0cmxfdCBIMihzaXplX3QgaGFzaCkgeyByZXR1cm4gaGFzaCAmIDB4N0Y7IH0KKworaW5s
aW5lIGJvb2wgSXNFbXB0eShjdHJsX3QgYykgeyByZXR1cm4gYyA9PSBrRW1wdHk7IH0KK2lubGlu
ZSBib29sIElzRnVsbChjdHJsX3QgYykgeyByZXR1cm4gYyA+PSAwOyB9CitpbmxpbmUgYm9vbCBJ
c0RlbGV0ZWQoY3RybF90IGMpIHsgcmV0dXJuIGMgPT0ga0RlbGV0ZWQ7IH0KK2lubGluZSBib29s
IElzRW1wdHlPckRlbGV0ZWQoY3RybF90IGMpIHsgcmV0dXJuIGMgPCBrU2VudGluZWw7IH0KKwor
I2lmIFNXSVNTVEFCTEVfSEFWRV9TU0UyCitzdHJ1Y3QgR3JvdXAgeworICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBrV2lkdGggPSAxNjsgIC8vIHRoZSBudW1iZXIgb2Ygc2xvdHMgcGVyIGdyb3Vw
CisKKyAgZXhwbGljaXQgR3JvdXAoY29uc3QgY3RybF90KiBwb3MpIHsKKyAgICBjdHJsID0gX21t
X2xvYWR1X3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgX19tMTI4aSo+KHBvcykpOworICB9
CisKKyAgLy8gUmV0dXJucyBhIGJpdG1hc2sgcmVwcmVzZW50aW5nIHRoZSBwb3NpdGlvbnMgb2Yg
c2xvdHMgdGhhdCBtYXRjaCBoYXNoLgorICBCaXRNYXNrPHVpbnQzMl90LCBrV2lkdGg+IE1hdGNo
KGgyX3QgaGFzaCkgY29uc3QgeworICAgIGF1dG8gbWF0Y2ggPSBfbW1fc2V0MV9lcGk4KGhhc2gp
OworICAgIHJldHVybiBCaXRNYXNrPHVpbnQzMl90LCBrV2lkdGg+KAorICAgICAgICBfbW1fbW92
ZW1hc2tfZXBpOChfbW1fY21wZXFfZXBpOChtYXRjaCwgY3RybCkpKTsKKyAgfQorCisgIC8vIFJl
dHVybnMgYSBiaXRtYXNrIHJlcHJlc2VudGluZyB0aGUgcG9zaXRpb25zIG9mIGVtcHR5IHNsb3Rz
LgorICBCaXRNYXNrPHVpbnQzMl90LCBrV2lkdGg+IE1hdGNoRW1wdHkoKSBjb25zdCB7CisjaWYg
U1dJU1NUQUJMRV9IQVZFX1NTU0UzCisgICAgLy8gVGhpcyBvbmx5IHdvcmtzIGJlY2F1c2Uga0Vt
cHR5IGlzIC0xMjguCisgICAgcmV0dXJuIEJpdE1hc2s8dWludDMyX3QsIGtXaWR0aD4oCisgICAg
ICAgIF9tbV9tb3ZlbWFza19lcGk4KF9tbV9zaWduX2VwaTgoY3RybCwgY3RybCkpKTsKKyNlbHNl
CisgICAgcmV0dXJuIE1hdGNoKGtFbXB0eSk7CisjZW5kaWYKKyAgfQorCisgIC8vIFJldHVybnMg
YSBiaXRtYXNrIHJlcHJlc2VudGluZyB0aGUgcG9zaXRpb25zIG9mIGVtcHR5IG9yIGRlbGV0ZWQg
c2xvdHMuCisgIEJpdE1hc2s8dWludDMyX3QsIGtXaWR0aD4gTWF0Y2hFbXB0eU9yRGVsZXRlZCgp
IGNvbnN0IHsKKyAgICBhdXRvIHNwZWNpYWwgPSBfbW1fc2V0MV9lcGk4KGtTZW50aW5lbCk7Cisg
ICAgcmV0dXJuIEJpdE1hc2s8dWludDMyX3QsIGtXaWR0aD4oCisgICAgICAgIF9tbV9tb3ZlbWFz
a19lcGk4KF9tbV9jbXBndF9lcGk4KHNwZWNpYWwsIGN0cmwpKSk7CisgIH0KKworICAvLyBSZXR1
cm5zIHRoZSBudW1iZXIgb2YgdHJhaWxpbmcgZW1wdHkgb3IgZGVsZXRlZCBlbGVtZW50cyBpbiB0
aGUgZ3JvdXAuCisgIHVpbnQzMl90IENvdW50TGVhZGluZ0VtcHR5T3JEZWxldGVkKCkgY29uc3Qg
eworICAgIGF1dG8gc3BlY2lhbCA9IF9tbV9zZXQxX2VwaTgoa1NlbnRpbmVsKTsKKyAgICByZXR1
cm4gVHJhaWxpbmdaZXJvcyhfbW1fbW92ZW1hc2tfZXBpOChfbW1fY21wZ3RfZXBpOChzcGVjaWFs
LCBjdHJsKSkgKyAxKTsKKyAgfQorCisgIHZvaWQgQ29udmVydFNwZWNpYWxUb0VtcHR5QW5kRnVs
bFRvRGVsZXRlZChjdHJsX3QqIGRzdCkgY29uc3QgeworICAgIGF1dG8gbXNicyA9IF9tbV9zZXQx
X2VwaTgoMHg4MCk7CisgICAgYXV0byB4MTI2ID0gX21tX3NldDFfZXBpOCgxMjYpOworI2lmIFNX
SVNTVEFCTEVfSEFWRV9TU1NFMworICAgIGF1dG8gcmVzID0gX21tX29yX3NpMTI4KF9tbV9zaHVm
ZmxlX2VwaTgoeDEyNiwgY3RybCksIG1zYnMpOworI2Vsc2UKKyAgICBhdXRvIHplcm8gPSBfbW1f
c2V0emVyb19zaTEyOCgpOworICAgIGF1dG8gc3BlY2lhbF9tYXNrID0gX21tX2NtcGd0X2VwaTgo
emVybywgY3RybCk7CisgICAgYXV0byByZXMgPSBfbW1fb3Jfc2kxMjgobXNicywgX21tX2FuZG5v
dF9zaTEyOChzcGVjaWFsX21hc2ssIHgxMjYpKTsKKyNlbmRpZgorICAgIF9tbV9zdG9yZXVfc2kx
MjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpKj4oZHN0KSwgcmVzKTsKKyAgfQorCisgIF9fbTEy
OGkgY3RybDsKK307CisjZWxzZQorc3RydWN0IEdyb3VwIHsKKyAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3Qga1dpZHRoID0gODsKKworICBleHBsaWNpdCBHcm91cChjb25zdCBjdHJsX3QqIHBvcykg
OiBjdHJsKGxpdHRsZV9lbmRpYW46OkxvYWQ2NChwb3MpKSB7fQorCisgIEJpdE1hc2s8dWludDY0
X3QsIGtXaWR0aCwgMz4gTWF0Y2goaDJfdCBoYXNoKSBjb25zdCB7CisgICAgLy8gRm9yIHRoZSB0
ZWNobmlxdWUsIHNlZToKKyAgICAvLyBodHRwOi8vZ3JhcGhpY3Muc3RhbmZvcmQuZWR1L35zZWFu
ZGVyL2JpdGhhY2tzLmh0bWwjI1ZhbHVlSW5Xb3JkCisgICAgLy8gKERldGVybWluZSBpZiBhIHdv
cmQgaGFzIGEgYnl0ZSBlcXVhbCB0byBuKS4KKyAgICAvLworICAgIC8vIENhdmVhdDogdGhlcmUg
YXJlIGZhbHNlIHBvc2l0aXZlcyBidXQ6CisgICAgLy8gLSB0aGV5IG9ubHkgb2NjdXIgaWYgdGhl
cmUgaXMgYSByZWFsIG1hdGNoCisgICAgLy8gLSB0aGV5IG5ldmVyIG9jY3VyIG9uIGtFbXB0eSwg
a0RlbGV0ZWQsIGtTZW50aW5lbAorICAgIC8vIC0gdGhleSB3aWxsIGJlIGhhbmRsZWQgZ3JhY2Vm
dWxseSBieSBzdWJzZXF1ZW50IGNoZWNrcyBpbiBjb2RlCisgICAgLy8KKyAgICAvLyBFeGFtcGxl
OgorICAgIC8vICAgdiA9IDB4MTcxNjE1MTQxMzEyMTExMAorICAgIC8vICAgaGFzaCA9IDB4MTIK
KyAgICAvLyAgIHJldHZhbCA9ICh2IC0gbHNicykgJiB+diAmIG1zYnMgPSAweDAwMDAwMDAwODA4
MDAwMDAKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbXNicyA9IDB4ODA4MDgwODA4MDgwODA4MFVM
TDsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbHNicyA9IDB4MDEwMTAxMDEwMTAxMDEwMVVMTDsK
KyAgICBhdXRvIHggPSBjdHJsIF4gKGxzYnMgKiBoYXNoKTsKKyAgICByZXR1cm4gQml0TWFzazx1
aW50NjRfdCwga1dpZHRoLCAzPigoeCAtIGxzYnMpICYgfnggJiBtc2JzKTsKKyAgfQorCisgIEJp
dE1hc2s8dWludDY0X3QsIGtXaWR0aCwgMz4gTWF0Y2hFbXB0eSgpIGNvbnN0IHsKKyAgICBjb25z
dGV4cHIgdWludDY0X3QgbXNicyA9IDB4ODA4MDgwODA4MDgwODA4MFVMTDsKKyAgICByZXR1cm4g
Qml0TWFzazx1aW50NjRfdCwga1dpZHRoLCAzPigoY3RybCAmICh+Y3RybCA8PCA2KSkgJiBtc2Jz
KTsKKyAgfQorCisgIEJpdE1hc2s8dWludDY0X3QsIGtXaWR0aCwgMz4gTWF0Y2hFbXB0eU9yRGVs
ZXRlZCgpIGNvbnN0IHsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbXNicyA9IDB4ODA4MDgwODA4
MDgwODA4MFVMTDsKKyAgICByZXR1cm4gQml0TWFzazx1aW50NjRfdCwga1dpZHRoLCAzPigoY3Ry
bCAmICh+Y3RybCA8PCA3KSkgJiBtc2JzKTsKKyAgfQorCisgIHVpbnQzMl90IENvdW50TGVhZGlu
Z0VtcHR5T3JEZWxldGVkKCkgY29uc3QgeworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBnYXBzID0g
MHgwMEZFRkVGRUZFRkVGRUZFVUxMOworICAgIHJldHVybiAoVHJhaWxpbmdaZXJvcygoKH5jdHJs
ICYgKGN0cmwgPj4gNykpIHwgZ2FwcykgKyAxKSArIDcpID4+IDM7CisgIH0KKworICB2b2lkIENv
bnZlcnRTcGVjaWFsVG9FbXB0eUFuZEZ1bGxUb0RlbGV0ZWQoY3RybF90KiBkc3QpIGNvbnN0IHsK
KyAgICBjb25zdGV4cHIgdWludDY0X3QgbXNicyA9IDB4ODA4MDgwODA4MDgwODA4MFVMTDsKKyAg
ICBjb25zdGV4cHIgdWludDY0X3QgbHNicyA9IDB4MDEwMTAxMDEwMTAxMDEwMVVMTDsKKyAgICBh
dXRvIHggPSBjdHJsICYgbXNiczsKKyAgICBhdXRvIHJlcyA9ICh+eCArICh4ID4+IDcpKSAmIH5s
c2JzOworICAgIGxpdHRsZV9lbmRpYW46OlN0b3JlNjQoZHN0LCByZXMpOworICB9CisKKyAgdWlu
dDY0X3QgY3RybDsKK307CisjZW5kaWYgIC8vIFNXSVNTVEFCTEVfSEFWRV9TU0UyCisKK3RlbXBs
YXRlIDxjbGFzcyBQb2xpY3ksIGNsYXNzIEhhc2gsIGNsYXNzIEVxLCBjbGFzcyBBbGxvYz4KK2Ns
YXNzIHJhd19oYXNoX3NldDsKKworCitpbmxpbmUgYm9vbCBJc1ZhbGlkQ2FwYWNpdHkoc2l6ZV90
IG4pIHsKKyAgcmV0dXJuICgobiArIDEpICYgbikgPT0gMCAmJiBuID49IEdyb3VwOjprV2lkdGgg
LSAxOworfQorCisvLyBQUkVDT05ESVRJT046CisvLyAgIElzVmFsaWRDYXBhY2l0eShjYXBhY2l0
eSkKKy8vICAgY3RybFtjYXBhY2l0eV0gPT0ga1NlbnRpbmVsCisvLyAgIGN0cmxbaV0gIT0ga1Nl
bnRpbmVsIGZvciBhbGwgaSA8IGNhcGFjaXR5CisvLyBBcHBsaWVzIG1hcHBpbmcgZm9yIGV2ZXJ5
IGJ5dGUgaW4gY3RybDoKKy8vICAgREVMRVRFRCAtPiBFTVBUWQorLy8gICBFTVBUWSAtPiBFTVBU
WQorLy8gICBGVUxMIC0+IERFTEVURUQKK2lubGluZSB2b2lkIENvbnZlcnREZWxldGVkVG9FbXB0
eUFuZEZ1bGxUb0RlbGV0ZWQoCisgICAgY3RybF90KiBjdHJsLCBzaXplX3QgY2FwYWNpdHkpIHsK
KyAgYXNzZXJ0KGN0cmxbY2FwYWNpdHldID09IGtTZW50aW5lbCk7CisgIGFzc2VydChJc1ZhbGlk
Q2FwYWNpdHkoY2FwYWNpdHkpKTsKKyAgZm9yIChjdHJsX3QqIHBvcyA9IGN0cmw7IHBvcyAhPSBj
dHJsICsgY2FwYWNpdHkgKyAxOyBwb3MgKz0gR3JvdXA6OmtXaWR0aCkgeworICAgIEdyb3Vwe3Bv
c30uQ29udmVydFNwZWNpYWxUb0VtcHR5QW5kRnVsbFRvRGVsZXRlZChwb3MpOworICB9CisgIC8v
IENvcHkgdGhlIGNsb25lZCBjdHJsIGJ5dGVzLgorICBzdGQ6Om1lbWNweShjdHJsICsgY2FwYWNp
dHkgKyAxLCBjdHJsLCBHcm91cDo6a1dpZHRoKTsKKyAgY3RybFtjYXBhY2l0eV0gPSBrU2VudGlu
ZWw7Cit9CisKKy8vIFJvdW5kcyB1cCB0aGUgY2FwYWNpdHkgdG8gdGhlIG5leHQgcG93ZXIgb2Yg
MiBtaW51cyAxIGFuZCBlbnN1cmVzIGl0IGlzCisvLyBncmVhdGVyIG9yIGVxdWFsIHRvIEdyb3Vw
OjprV2lkdGggLSAxLgoraW5saW5lIHNpemVfdCBOb3JtYWxpemVDYXBhY2l0eShzaXplX3Qgbikg
eworICBjb25zdGV4cHIgc2l6ZV90IGtNaW5DYXBhY2l0eSA9IEdyb3VwOjprV2lkdGggLSAxOwor
ICByZXR1cm4gbiA8PSBrTWluQ2FwYWNpdHkKKyAgICAgICAgICAgICA/IGtNaW5DYXBhY2l0eQor
ICAgICAgICAgICAgIDogc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSA+PiBMZWFk
aW5nWmVyb3Mobik7Cit9CisKKy8vIFRoZSBub2RlX2hhbmRsZSBjb25jZXB0IGZyb20gQysrMTcu
CisvLyBXZSBzcGVjaWFsaXplIG5vZGVfaGFuZGxlIGZvciBzZXRzIGFuZCBtYXBzLiBub2RlX2hh
bmRsZV9iYXNlIGhvbGRzIHRoZQorLy8gY29tbW9uIEFQSSBvZiBib3RoLgordGVtcGxhdGUgPHR5
cGVuYW1lIFBvbGljeSwgdHlwZW5hbWUgQWxsb2M+CitjbGFzcyBub2RlX2hhbmRsZV9iYXNlIHsK
KyBwcm90ZWN0ZWQ6CisgIHVzaW5nIFBvbGljeVRyYWl0cyA9IGhhc2hfcG9saWN5X3RyYWl0czxQ
b2xpY3k+OworICB1c2luZyBzbG90X3R5cGUgPSB0eXBlbmFtZSBQb2xpY3lUcmFpdHM6OnNsb3Rf
dHlwZTsKKworIHB1YmxpYzoKKyAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSBBbGxvYzsKKworICBj
b25zdGV4cHIgbm9kZV9oYW5kbGVfYmFzZSgpIHt9CisgIG5vZGVfaGFuZGxlX2Jhc2Uobm9kZV9o
YW5kbGVfYmFzZSYmIG90aGVyKSBub2V4Y2VwdCB7CisgICAgKnRoaXMgPSBzdGQ6Om1vdmUob3Ro
ZXIpOworICB9CisgIH5ub2RlX2hhbmRsZV9iYXNlKCkgeyBkZXN0cm95KCk7IH0KKyAgbm9kZV9o
YW5kbGVfYmFzZSYgb3BlcmF0b3I9KG5vZGVfaGFuZGxlX2Jhc2UmJiBvdGhlcikgeworICAgIGRl
c3Ryb3koKTsKKyAgICBpZiAoIW90aGVyLmVtcHR5KCkpIHsKKyAgICAgIGFsbG9jXyA9IG90aGVy
LmFsbG9jXzsKKyAgICAgIFBvbGljeVRyYWl0czo6dHJhbnNmZXIoYWxsb2MoKSwgc2xvdCgpLCBv
dGhlci5zbG90KCkpOworICAgICAgb3RoZXIucmVzZXQoKTsKKyAgICB9CisgICAgcmV0dXJuICp0
aGlzOworICB9CisKKyAgYm9vbCBlbXB0eSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuICFhbGxv
Y187IH0KKyAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJu
ICFlbXB0eSgpOyB9CisgIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJl
dHVybiAqYWxsb2NfOyB9CisKKyBwcm90ZWN0ZWQ6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlw
ZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4KKyAgZnJpZW5kIGNsYXNzIHJhd19oYXNoX3NldDsK
KworICBub2RlX2hhbmRsZV9iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhLCBzbG90X3R5cGUq
IHMpIDogYWxsb2NfKGEpIHsKKyAgICBQb2xpY3lUcmFpdHM6OnRyYW5zZmVyKGFsbG9jKCksIHNs
b3QoKSwgcyk7CisgIH0KKworICB2b2lkIGRlc3Ryb3koKSB7CisgICAgaWYgKCFlbXB0eSgpKSB7
CisgICAgICBQb2xpY3lUcmFpdHM6OmRlc3Ryb3koYWxsb2MoKSwgc2xvdCgpKTsKKyAgICAgIHJl
c2V0KCk7CisgICAgfQorICB9CisKKyAgdm9pZCByZXNldCgpIHsKKyAgICBhc3NlcnQoYWxsb2Nf
Lmhhc192YWx1ZSgpKTsKKyAgICBhbGxvY18gPSBhYnNsOjpudWxsb3B0OworICB9CisKKyAgc2xv
dF90eXBlKiBzbG90KCkgY29uc3QgeworICAgIGFzc2VydCghZW1wdHkoKSk7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8c2xvdF90eXBlKj4oc3RkOjphZGRyZXNzb2Yoc2xvdF9zcGFjZV8p
KTsKKyAgfQorICBhbGxvY2F0b3JfdHlwZSogYWxsb2MoKSB7IHJldHVybiBzdGQ6OmFkZHJlc3Nv
ZigqYWxsb2NfKTsgfQorCisgcHJpdmF0ZToKKyAgYWJzbDo6b3B0aW9uYWw8YWxsb2NhdG9yX3R5
cGU+IGFsbG9jXzsKKyAgbXV0YWJsZSBhYnNsOjphbGlnbmVkX3N0b3JhZ2VfdDxzaXplb2Yoc2xv
dF90eXBlKSwgYWxpZ25vZihzbG90X3R5cGUpPgorICAgICAgc2xvdF9zcGFjZV87Cit9OworCisv
LyBGb3Igc2V0cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBQb2xpY3ksIHR5cGVuYW1lIEFsbG9jLCB0
eXBlbmFtZSA9IHZvaWQ+CitjbGFzcyBub2RlX2hhbmRsZSA6IHB1YmxpYyBub2RlX2hhbmRsZV9i
YXNlPFBvbGljeSwgQWxsb2M+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIG5vZGVfaGFuZGxl
Ojpub2RlX2hhbmRsZV9iYXNlOworCisgcHVibGljOgorICB1c2luZyB2YWx1ZV90eXBlID0gdHlw
ZW5hbWUgQmFzZTo6UG9saWN5VHJhaXRzOjp2YWx1ZV90eXBlOworCisgIGNvbnN0ZXhwciBub2Rl
X2hhbmRsZSgpIHt9CisKKyAgdmFsdWVfdHlwZSYgdmFsdWUoKSBjb25zdCB7CisgICAgcmV0dXJu
IEJhc2U6OlBvbGljeVRyYWl0czo6ZWxlbWVudCh0aGlzLT5zbG90KCkpOworICB9CisKKyBwcml2
YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWU+
CisgIGZyaWVuZCBjbGFzcyByYXdfaGFzaF9zZXQ7CisKKyAgbm9kZV9oYW5kbGUoY29uc3QgQWxs
b2MmIGEsIHR5cGVuYW1lIEJhc2U6OnNsb3RfdHlwZSogcykgOiBCYXNlKGEsIHMpIHt9Cit9Owor
CisvLyBGb3IgbWFwcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBQb2xpY3ksIHR5cGVuYW1lIEFsbG9j
PgorY2xhc3Mgbm9kZV9oYW5kbGU8UG9saWN5LCBBbGxvYywgYWJzbDo6dm9pZF90PHR5cGVuYW1l
IFBvbGljeTo6bWFwcGVkX3R5cGU+PgorICAgIDogcHVibGljIG5vZGVfaGFuZGxlX2Jhc2U8UG9s
aWN5LCBBbGxvYz4geworICB1c2luZyBCYXNlID0gdHlwZW5hbWUgbm9kZV9oYW5kbGU6Om5vZGVf
aGFuZGxlX2Jhc2U7CisKKyBwdWJsaWM6CisgIHVzaW5nIGtleV90eXBlID0gdHlwZW5hbWUgUG9s
aWN5OjprZXlfdHlwZTsKKyAgdXNpbmcgbWFwcGVkX3R5cGUgPSB0eXBlbmFtZSBQb2xpY3k6Om1h
cHBlZF90eXBlOworCisgIGNvbnN0ZXhwciBub2RlX2hhbmRsZSgpIHt9CisKKyAgYXV0byBrZXko
KSBjb25zdCAtPiBkZWNsdHlwZShCYXNlOjpQb2xpY3lUcmFpdHM6OmtleSh0aGlzLT5zbG90KCkp
KSB7CisgICAgcmV0dXJuIEJhc2U6OlBvbGljeVRyYWl0czo6a2V5KHRoaXMtPnNsb3QoKSk7Cisg
IH0KKworICBtYXBwZWRfdHlwZSYgbWFwcGVkKCkgY29uc3QgeworICAgIHJldHVybiBCYXNlOjpQ
b2xpY3lUcmFpdHM6OnZhbHVlKAorICAgICAgICAmQmFzZTo6UG9saWN5VHJhaXRzOjplbGVtZW50
KHRoaXMtPnNsb3QoKSkpOworICB9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUs
IHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWU+CisgIGZyaWVuZCBjbGFzcyByYXdfaGFzaF9z
ZXQ7CisKKyAgbm9kZV9oYW5kbGUoY29uc3QgQWxsb2MmIGEsIHR5cGVuYW1lIEJhc2U6OnNsb3Rf
dHlwZSogcykgOiBCYXNlKGEsIHMpIHt9Cit9OworCisvLyBJbXBsZW1lbnQgdGhlIGluc2VydF9y
ZXR1cm5fdHlwZTw+IGNvbmNlcHQgb2YgQysrMTcuCit0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3Is
IGNsYXNzIE5vZGVUeXBlPgorc3RydWN0IGluc2VydF9yZXR1cm5fdHlwZSB7CisgIEl0ZXJhdG9y
IHBvc2l0aW9uOworICBib29sIGluc2VydGVkOworICBOb2RlVHlwZSBub2RlOworfTsKKworLy8g
SGVscGVyIHRyYWl0IHRvIGFsbG93IG9yIGRpc2FsbG93IGFyYml0cmFyeSBrZXlzIHdoZW4gdGhl
IGhhc2ggYW5kCisvLyBlcSBmdW5jdGlvbnMgYXJlIHRyYW5zcGFyZW50LgorLy8gSXQgaXMgdmVy
eSBpbXBvcnRhbnQgdGhhdCB0aGUgaW5uZXIgdGVtcGxhdGUgaXMgYW4gYWxpYXMgYW5kIHRoYXQg
dGhlIHR5cGUgaXQKKy8vIHByb2R1Y2VzIGlzIG5vdCBhIGRlcGVuZGVudCB0eXBlLiBPdGhlcndp
c2UsIHR5cGUgZGVkdWN0aW9uIHdvdWxkIGZhaWwuCit0ZW1wbGF0ZSA8Ym9vbCBpc190cmFuc3Bh
cmVudD4KK3N0cnVjdCBLZXlBcmcgeworICAvLyBUcmFuc3BhcmVudC4gRm9yd2FyZCBgS2AuCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBrZXlfdHlwZT4KKyAgdXNpbmcgdHlwZSA9
IEs7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IEtleUFyZzxmYWxzZT4geworICAvLyBOb3Qg
dHJhbnNwYXJlbnQuIEFsd2F5cyB1c2UgYGtleV90eXBlYC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IEssIHR5cGVuYW1lIGtleV90eXBlPgorICB1c2luZyB0eXBlID0ga2V5X3R5cGU7Cit9OworCisv
LyBQb2xpY3k6IGEgcG9saWN5IGRlZmluZXMgaG93IHRvIHBlcmZvcm0gZGlmZmVyZW50IG9wZXJh
dGlvbnMgb24KKy8vIHRoZSBzbG90cyBvZiB0aGUgaGFzaHRhYmxlIChzZWUgaGFzaF9wb2xpY3lf
dHJhaXRzLmggZm9yIHRoZSBmdWxsIGludGVyZmFjZQorLy8gb2YgcG9saWN5KS4KKy8vCisvLyBI
YXNoOiBhIChwb3NzaWJseSBwb2x5bW9ycGhpYykgZnVuY3RvciB0aGF0IGhhc2hlcyBrZXlzIG9m
IHRoZSBoYXNodGFibGUuIFRoZQorLy8gZnVuY3RvciBzaG91bGQgYWNjZXB0IGEga2V5IGFuZCBy
ZXR1cm4gc2l6ZV90IGFzIGhhc2guIEZvciBiZXN0IHBlcmZvcm1hbmNlCisvLyBpdCBpcyBpbXBv
cnRhbnQgdGhhdCB0aGUgaGFzaCBmdW5jdGlvbiBwcm92aWRlcyBoaWdoIGVudHJvcHkgYWNyb3Nz
IGFsbCBiaXRzCisvLyBvZiB0aGUgaGFzaC4KKy8vCisvLyBFcTogYSAocG9zc2libHkgcG9seW1v
cnBoaWMpIGZ1bmN0b3IgdGhhdCBjb21wYXJlcyB0d28ga2V5cyBmb3IgZXF1YWxpdHkuIEl0Cisv
LyBzaG91bGQgYWNjZXB0IHR3byAob2YgcG9zc2libHkgZGlmZmVyZW50IHR5cGUpIGtleXMgYW5k
IHJldHVybiBhIGJvb2w6IHRydWUKKy8vIGlmIHRoZXkgYXJlIGVxdWFsLCBmYWxzZSBpZiB0aGV5
IGFyZSBub3QuIElmIHR3byBrZXlzIGNvbXBhcmUgZXF1YWwsIHRoZW4KKy8vIHRoZWlyIGhhc2gg
dmFsdWVzIGFzIGRlZmluZWQgYnkgSGFzaCBNVVNUIGJlIGVxdWFsLgorLy8KKy8vIEFsbG9jYXRv
cjogYW4gQWxsb2NhdG9yIFtodHRwOi8vZGV2ZG9jcy5pby9jcHAvY29uY2VwdC9hbGxvY2F0b3Jd
IHdpdGggd2hpY2gKKy8vIHRoZSBzdG9yYWdlIG9mIHRoZSBoYXNodGFibGUgd2lsbCBiZSBhbGxv
Y2F0ZWQgYW5kIHRoZSBlbGVtZW50cyB3aWxsIGJlCisvLyBjb25zdHJ1Y3RlZCBhbmQgZGVzdHJv
eWVkLgordGVtcGxhdGUgPGNsYXNzIFBvbGljeSwgY2xhc3MgSGFzaCwgY2xhc3MgRXEsIGNsYXNz
IEFsbG9jPgorY2xhc3MgcmF3X2hhc2hfc2V0IHsKKyAgdXNpbmcgUG9saWN5VHJhaXRzID0gaGFz
aF9wb2xpY3lfdHJhaXRzPFBvbGljeT47CisgIHVzaW5nIEtleUFyZ0ltcGwgPSBjb250YWluZXJf
aW50ZXJuYWw6OktleUFyZzxJc1RyYW5zcGFyZW50PEVxPjo6dmFsdWUgJiYKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzVHJhbnNwYXJlbnQ8SGFzaD46
OnZhbHVlPjsKKworIHB1YmxpYzoKKyAgdXNpbmcgaW5pdF90eXBlID0gdHlwZW5hbWUgUG9saWN5
VHJhaXRzOjppbml0X3R5cGU7CisgIHVzaW5nIGtleV90eXBlID0gdHlwZW5hbWUgUG9saWN5VHJh
aXRzOjprZXlfdHlwZTsKKyAgLy8gVE9ETyhzYmVuemEpOiBIaWRlIHNsb3RfdHlwZSBhcyBpdCBp
cyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuIE5lZWRzIHVzZXIKKyAgLy8gY29kZSBmaXhlcyEK
KyAgdXNpbmcgc2xvdF90eXBlID0gdHlwZW5hbWUgUG9saWN5VHJhaXRzOjpzbG90X3R5cGU7Cisg
IHVzaW5nIGFsbG9jYXRvcl90eXBlID0gQWxsb2M7CisgIHVzaW5nIHNpemVfdHlwZSA9IHNpemVf
dDsKKyAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90OworICB1c2luZyBoYXNoZXIg
PSBIYXNoOworICB1c2luZyBrZXlfZXF1YWwgPSBFcTsKKyAgdXNpbmcgcG9saWN5X3R5cGUgPSBQ
b2xpY3k7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBQb2xpY3lUcmFpdHM6OnZhbHVl
X3R5cGU7CisgIHVzaW5nIHJlZmVyZW5jZSA9IHZhbHVlX3R5cGUmOworICB1c2luZyBjb25zdF9y
ZWZlcmVuY2UgPSBjb25zdCB2YWx1ZV90eXBlJjsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1l
IGFic2w6OmFsbG9jYXRvcl90cmFpdHM8CisgICAgICBhbGxvY2F0b3JfdHlwZT46OnRlbXBsYXRl
IHJlYmluZF90cmFpdHM8dmFsdWVfdHlwZT46OnBvaW50ZXI7CisgIHVzaW5nIGNvbnN0X3BvaW50
ZXIgPSB0eXBlbmFtZSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPAorICAgICAgYWxsb2NhdG9yX3R5
cGU+Ojp0ZW1wbGF0ZSByZWJpbmRfdHJhaXRzPHZhbHVlX3R5cGU+Ojpjb25zdF9wb2ludGVyOwor
CisgIC8vIEFsaWFzIHVzZWQgZm9yIGhldGVyb2dlbmVvdXMgbG9va3VwIGZ1bmN0aW9ucy4KKyAg
Ly8gYGtleV9hcmc8Sz5gIGV2YWx1YXRlcyB0byBgS2Agd2hlbiB0aGUgZnVuY3RvcnMgYXJlIHRy
YW5wYXJlbnQgYW5kIHRvCisgIC8vIGBrZXlfdHlwZWAgb3RoZXJ3aXNlLiBJdCBwZXJtaXRzIHRl
bXBsYXRlIGFyZ3VtZW50IGRlZHVjdGlvbiBvbiBgS2AgZm9yIHRoZQorICAvLyB0cmFuc3BhcmVu
dCBjYXNlLgorICB0ZW1wbGF0ZSA8Y2xhc3MgSz4KKyAgdXNpbmcga2V5X2FyZyA9IHR5cGVuYW1l
IEtleUFyZ0ltcGw6OnRlbXBsYXRlIHR5cGU8Sywga2V5X3R5cGU+OworCisgcHJpdmF0ZToKKyAg
Ly8gR2l2ZSBhbiBlYXJseSBlcnJvciB3aGVuIGtleV90eXBlIGlzIG5vdCBoYXNoYWJsZS9lcS4K
KyAgYXV0byBLZXlUeXBlQ2FuQmVIYXNoZWQoY29uc3QgSGFzaCYgaCwgY29uc3Qga2V5X3R5cGUm
IGspIC0+IGRlY2x0eXBlKGgoaykpOworICBhdXRvIEtleVR5cGVDYW5CZUVxKGNvbnN0IEVxJiBl
cSwgY29uc3Qga2V5X3R5cGUmIGspIC0+IGRlY2x0eXBlKGVxKGssIGspKTsKKworICB1c2luZyBM
YXlvdXQgPSBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkxheW91dDxjdHJsX3QsIHNsb3RfdHlw
ZT47CisKKyAgc3RhdGljIExheW91dCBNYWtlTGF5b3V0KHNpemVfdCBjYXBhY2l0eSkgeworICAg
IGFzc2VydChJc1ZhbGlkQ2FwYWNpdHkoY2FwYWNpdHkpKTsKKyAgICByZXR1cm4gTGF5b3V0KGNh
cGFjaXR5ICsgR3JvdXA6OmtXaWR0aCArIDEsIGNhcGFjaXR5KTsKKyAgfQorCisgIHVzaW5nIEFs
bG9jVHJhaXRzID0gYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT47CisgIHVz
aW5nIFNsb3RBbGxvYyA9IHR5cGVuYW1lIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8CisgICAgICBh
bGxvY2F0b3JfdHlwZT46OnRlbXBsYXRlIHJlYmluZF9hbGxvYzxzbG90X3R5cGU+OworICB1c2lu
ZyBTbG90QWxsb2NUcmFpdHMgPSB0eXBlbmFtZSBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPAorICAg
ICAgYWxsb2NhdG9yX3R5cGU+Ojp0ZW1wbGF0ZSByZWJpbmRfdHJhaXRzPHNsb3RfdHlwZT47CisK
KyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8cmVmZXJlbmNlPjo6dmFs
dWUsCisgICAgICAgICAgICAgICAgIlBvbGljeTo6ZWxlbWVudCgpIG11c3QgcmV0dXJuIGEgcmVm
ZXJlbmNlIik7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0cnVjdCBTYW1lQXNFbGVt
ZW50UmVmZXJlbmNlCisgICAgICA6IHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9j
djwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVu
Y2U8cmVmZXJlbmNlPjo6dHlwZT46OnR5cGUsCisgICAgICAgICAgICAgICAgICAgICB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jdjwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGU+Ojp0eXBlPiB7fTsKKworICAvLyBBbiBlbmFibGVy
IGZvciBpbnNlcnQoVCYmKTogVCBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGluaXRfdHlwZSBvciBi
ZSB0aGUKKyAgLy8gc2FtZSBhcyBbY3ZdIHZhbHVlX3R5cGUgW3JlZl0uCisgIC8vIE5vdGU6IHdl
IHNlcGFyYXRlIFNhbWVBc0VsZW1lbnRSZWZlcmVuY2UgaW50byBpdHMgb3duIHR5cGUgdG8gYXZv
aWQgdXNpbmcKKyAgLy8gcmVmZXJlbmNlIHVubGVzcyB3ZSBuZWVkIHRvLiBNU1ZDIGRvZXNuJ3Qg
c2VlbSB0byBsaWtlIGl0IGluIHNvbWUKKyAgLy8gY2FzZXMuCisgIHRlbXBsYXRlIDxjbGFzcyBU
PgorICB1c2luZyBSZXF1aXJlc0luc2VydGFibGUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwK
KyAgICAgIGFic2w6OmRpc2p1bmN0aW9uPHN0ZDo6aXNfY29udmVydGlibGU8VCwgaW5pdF90eXBl
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNhbWVBc0VsZW1lbnRSZWZlcmVuY2U8VD4+Ojp2
YWx1ZSwKKyAgICAgIGludD46OnR5cGU7CisKKyAgLy8gUmVxdWlyZXNOb3RJbml0IGlzIGEgd29y
a2Fyb3VuZCBmb3IgZ2NjIHByaW9yIHRvIDcuMS4KKyAgLy8gU2VlIGh0dHBzOi8vZ29kYm9sdC5v
cmcvZy9ZNHhzVWguCisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICB1c2luZyBSZXF1aXJlc05vdElu
aXQgPQorICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxULCBpbml0
X3R5cGU+Ojp2YWx1ZSwgaW50Pjo6dHlwZTsKKworICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gVHM+Cisg
IHVzaW5nIElzRGVjb21wb3NhYmxlID0gSXNEZWNvbXBvc2FibGU8dm9pZCwgUG9saWN5VHJhaXRz
LCBIYXNoLCBFcSwgVHMuLi4+OworCisgcHVibGljOgorICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZTxwb2ludGVyLCB2YWx1ZV90eXBlKj46OnZhbHVlLAorICAgICAgICAgICAgICAgICJBbGxv
Y2F0b3JzIHdpdGggY3VzdG9tIHBvaW50ZXIgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKTsKKyAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Y29uc3RfcG9pbnRlciwgY29uc3QgdmFsdWVfdHlw
ZSo+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiQWxsb2NhdG9ycyB3aXRoIGN1c3RvbSBwb2lu
dGVyIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkIik7CisKKyAgY2xhc3MgaXRlcmF0b3IgeworICAg
IGZyaWVuZCBjbGFzcyByYXdfaGFzaF9zZXQ7CisKKyAgIHB1YmxpYzoKKyAgICB1c2luZyBpdGVy
YXRvcl9jYXRlZ29yeSA9IHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWc7CisgICAgdXNpbmcgdmFs
dWVfdHlwZSA9IHR5cGVuYW1lIHJhd19oYXNoX3NldDo6dmFsdWVfdHlwZTsKKyAgICB1c2luZyBy
ZWZlcmVuY2UgPQorICAgICAgICBhYnNsOjpjb25kaXRpb25hbF90PFBvbGljeVRyYWl0czo6Y29u
c3RhbnRfaXRlcmF0b3JzOjp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2YWx1ZV90eXBlJiwgdmFsdWVfdHlwZSY+OworICAgIHVzaW5nIHBvaW50ZXIgPSBhYnNsOjpy
ZW1vdmVfcmVmZXJlbmNlX3Q8cmVmZXJlbmNlPio7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBl
ID0gdHlwZW5hbWUgcmF3X2hhc2hfc2V0OjpkaWZmZXJlbmNlX3R5cGU7CisKKyAgICBpdGVyYXRv
cigpIHt9CisKKyAgICAvLyBQUkVDT05ESVRJT046IG5vdCBhbiBlbmQoKSBpdGVyYXRvci4KKyAg
ICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gUG9saWN5VHJhaXRzOjplbGVt
ZW50KHNsb3RfKTsgfQorCisgICAgLy8gUFJFQ09ORElUSU9OOiBub3QgYW4gZW5kKCkgaXRlcmF0
b3IuCisgICAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJm9wZXJhdG9yKigp
OyB9CisKKyAgICAvLyBQUkVDT05ESVRJT046IG5vdCBhbiBlbmQoKSBpdGVyYXRvci4KKyAgICBp
dGVyYXRvciYgb3BlcmF0b3IrKygpIHsKKyAgICAgICsrY3RybF87CisgICAgICArK3Nsb3RfOwor
ICAgICAgc2tpcF9lbXB0eV9vcl9kZWxldGVkKCk7CisgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorICAgIC8vIFBSRUNPTkRJVElPTjogbm90IGFuIGVuZCgpIGl0ZXJhdG9yLgorICAgIGl0ZXJh
dG9yIG9wZXJhdG9yKysoaW50KSB7CisgICAgICBhdXRvIHRtcCA9ICp0aGlzOworICAgICAgKysq
dGhpczsKKyAgICAgIHJldHVybiB0bXA7CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBpdGVyYXRvciYgYSwgY29uc3QgaXRlcmF0b3ImIGIpIHsKKyAgICAgIHJldHVy
biBhLmN0cmxfID09IGIuY3RybF87CisgICAgfQorICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0o
Y29uc3QgaXRlcmF0b3ImIGEsIGNvbnN0IGl0ZXJhdG9yJiBiKSB7CisgICAgICByZXR1cm4gIShh
ID09IGIpOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBpdGVyYXRvcihjdHJsX3QqIGN0cmwp
IDogY3RybF8oY3RybCkge30gIC8vIGZvciBlbmQoKQorICAgIGl0ZXJhdG9yKGN0cmxfdCogY3Ry
bCwgc2xvdF90eXBlKiBzbG90KSA6IGN0cmxfKGN0cmwpLCBzbG90XyhzbG90KSB7fQorCisgICAg
dm9pZCBza2lwX2VtcHR5X29yX2RlbGV0ZWQoKSB7CisgICAgICB3aGlsZSAoSXNFbXB0eU9yRGVs
ZXRlZCgqY3RybF8pKSB7CisgICAgICAgIC8vIGN0cmwgaXMgbm90IG5lY2Vzc2FyaWx5IGFsaWdu
ZWQgdG8gR3JvdXA6OmtXaWR0aC4gSXQgaXMgYWxzbyBsaWtlbHkKKyAgICAgICAgLy8gdG8gcmVh
ZCBwYXN0IHRoZSBzcGFjZSBmb3IgY3RybCBieXRlcyBhbmQgaW50byBzbG90cy4gVGhpcyBpcyBv
aworICAgICAgICAvLyBiZWNhdXNlIGN0cmwgaGFzIHNpemVvZigpID09IDEgYW5kIHNsb3QgaGFz
IHNpemVvZigpID49IDEgc28gdGhlcmUKKyAgICAgICAgLy8gaXMgbm8gd2F5IHRvIHJlYWQgb3V0
c2lkZSB0aGUgY29tYmluZWQgc2xvdCBhcnJheS4KKyAgICAgICAgdWludDMyX3Qgc2hpZnQgPSBH
cm91cHtjdHJsX30uQ291bnRMZWFkaW5nRW1wdHlPckRlbGV0ZWQoKTsKKyAgICAgICAgY3RybF8g
Kz0gc2hpZnQ7CisgICAgICAgIHNsb3RfICs9IHNoaWZ0OworICAgICAgfQorICAgIH0KKworICAg
IGN0cmxfdCogY3RybF8gPSBudWxscHRyOworICAgIHNsb3RfdHlwZSogc2xvdF87CisgIH07CisK
KyAgY2xhc3MgY29uc3RfaXRlcmF0b3IgeworICAgIGZyaWVuZCBjbGFzcyByYXdfaGFzaF9zZXQ7
CisKKyAgIHB1YmxpYzoKKyAgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IHR5cGVuYW1lIGl0
ZXJhdG9yOjppdGVyYXRvcl9jYXRlZ29yeTsKKyAgICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5h
bWUgcmF3X2hhc2hfc2V0Ojp2YWx1ZV90eXBlOworICAgIHVzaW5nIHJlZmVyZW5jZSA9IHR5cGVu
YW1lIHJhd19oYXNoX3NldDo6Y29uc3RfcmVmZXJlbmNlOworICAgIHVzaW5nIHBvaW50ZXIgPSB0
eXBlbmFtZSByYXdfaGFzaF9zZXQ6OmNvbnN0X3BvaW50ZXI7CisgICAgdXNpbmcgZGlmZmVyZW5j
ZV90eXBlID0gdHlwZW5hbWUgcmF3X2hhc2hfc2V0OjpkaWZmZXJlbmNlX3R5cGU7CisKKyAgICBj
b25zdF9pdGVyYXRvcigpIHt9CisgICAgLy8gSW1wbGljaXQgY29uc3RydWN0aW9uIGZyb20gaXRl
cmF0b3IuCisgICAgY29uc3RfaXRlcmF0b3IoaXRlcmF0b3IgaSkgOiBpbm5lcl8oc3RkOjptb3Zl
KGkpKSB7fQorCisgICAgcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICppbm5l
cl87IH0KKyAgICBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBpbm5lcl8ub3Bl
cmF0b3ItPigpOyB9CisKKyAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsKKyAgICAg
ICsraW5uZXJfOworICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICBjb25zdF9pdGVyYXRv
ciBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gaW5uZXJfKys7IH0KKworICAgIGZyaWVuZCBib29s
IG9wZXJhdG9yPT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIGEsIGNvbnN0IGNvbnN0X2l0ZXJhdG9y
JiBiKSB7CisgICAgICByZXR1cm4gYS5pbm5lcl8gPT0gYi5pbm5lcl87CisgICAgfQorICAgIGZy
aWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIGEsIGNvbnN0IGNvbnN0
X2l0ZXJhdG9yJiBiKSB7CisgICAgICByZXR1cm4gIShhID09IGIpOworICAgIH0KKworICAgcHJp
dmF0ZToKKyAgICBjb25zdF9pdGVyYXRvcihjb25zdCBjdHJsX3QqIGN0cmwsIGNvbnN0IHNsb3Rf
dHlwZSogc2xvdCkKKyAgICAgICAgOiBpbm5lcl8oY29uc3RfY2FzdDxjdHJsX3QqPihjdHJsKSwg
Y29uc3RfY2FzdDxzbG90X3R5cGUqPihzbG90KSkge30KKworICAgIGl0ZXJhdG9yIGlubmVyXzsK
KyAgfTsKKworICB1c2luZyBub2RlX3R5cGUgPSBjb250YWluZXJfaW50ZXJuYWw6Om5vZGVfaGFu
ZGxlPFBvbGljeSwgQWxsb2M+OworCisgIHJhd19oYXNoX3NldCgpIG5vZXhjZXB0KAorICAgICAg
c3RkOjppc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0aWJsZTxoYXNoZXI+Ojp2YWx1ZSYmCisg
ICAgICAgICAgc3RkOjppc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0aWJsZTxrZXlfZXF1YWw+
Ojp2YWx1ZSYmCisgICAgICAgICAgICAgIHN0ZDo6aXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVj
dGlibGU8YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSkge30KKworICBleHBsaWNpdCByYXdfaGFzaF9z
ZXQoc2l6ZV90IGJ1Y2tldF9jb3VudCwgY29uc3QgaGFzaGVyJiBoYXNoID0gaGFzaGVyKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwmIGVxID0ga2V5X2VxdWFsKCks
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MgPSBh
bGxvY2F0b3JfdHlwZSgpKQorICAgICAgOiBjdHJsXyhFbXB0eUdyb3VwKCkpLCBzZXR0aW5nc18o
MCwgaGFzaCwgZXEsIGFsbG9jKSB7CisgICAgaWYgKGJ1Y2tldF9jb3VudCkgeworICAgICAgY2Fw
YWNpdHlfID0gTm9ybWFsaXplQ2FwYWNpdHkoYnVja2V0X2NvdW50KTsKKyAgICAgIGdyb3d0aF9s
ZWZ0KCkgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNhcGFjaXR5XyAqIGtNYXhMb2FkRmFjdG9yKTsK
KyAgICAgIGluaXRpYWxpemVfc2xvdHMoKTsKKyAgICB9CisgIH0KKworICByYXdfaGFzaF9zZXQo
c2l6ZV90IGJ1Y2tldF9jb3VudCwgY29uc3QgaGFzaGVyJiBoYXNoLAorICAgICAgICAgICAgICAg
Y29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jKQorICAgICAgOiByYXdfaGFzaF9zZXQoYnVja2V0
X2NvdW50LCBoYXNoLCBrZXlfZXF1YWwoKSwgYWxsb2MpIHt9CisKKyAgcmF3X2hhc2hfc2V0KHNp
emVfdCBidWNrZXRfY291bnQsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYykKKyAgICAgIDog
cmF3X2hhc2hfc2V0KGJ1Y2tldF9jb3VudCwgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBhbGxvYykg
e30KKworICBleHBsaWNpdCByYXdfaGFzaF9zZXQoY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9j
KQorICAgICAgOiByYXdfaGFzaF9zZXQoMCwgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBhbGxvYykg
e30KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyPgorICByYXdfaGFzaF9zZXQoSW5wdXRJ
dGVyIGZpcnN0LCBJbnB1dEl0ZXIgbGFzdCwgc2l6ZV90IGJ1Y2tldF9jb3VudCA9IDAsCisgICAg
ICAgICAgICAgICBjb25zdCBoYXNoZXImIGhhc2ggPSBoYXNoZXIoKSwgY29uc3Qga2V5X2VxdWFs
JiBlcSA9IGtleV9lcXVhbCgpLAorICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUm
IGFsbG9jID0gYWxsb2NhdG9yX3R5cGUoKSkKKyAgICAgIDogcmF3X2hhc2hfc2V0KGJ1Y2tldF9j
b3VudCwgaGFzaCwgZXEsIGFsbG9jKSB7CisgICAgaW5zZXJ0KGZpcnN0LCBsYXN0KTsKKyAgfQor
CisgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXI+CisgIHJhd19oYXNoX3NldChJbnB1dEl0ZXIg
Zmlyc3QsIElucHV0SXRlciBsYXN0LCBzaXplX3QgYnVja2V0X2NvdW50LAorICAgICAgICAgICAg
ICAgY29uc3QgaGFzaGVyJiBoYXNoLCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAg
ICA6IHJhd19oYXNoX3NldChmaXJzdCwgbGFzdCwgYnVja2V0X2NvdW50LCBoYXNoLCBrZXlfZXF1
YWwoKSwgYWxsb2MpIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcj4KKyAgcmF3X2hh
c2hfc2V0KElucHV0SXRlciBmaXJzdCwgSW5wdXRJdGVyIGxhc3QsIHNpemVfdCBidWNrZXRfY291
bnQsCisgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6
IHJhd19oYXNoX3NldChmaXJzdCwgbGFzdCwgYnVja2V0X2NvdW50LCBoYXNoZXIoKSwga2V5X2Vx
dWFsKCksIGFsbG9jKSB7fQorCisgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXI+CisgIHJhd19o
YXNoX3NldChJbnB1dEl0ZXIgZmlyc3QsIElucHV0SXRlciBsYXN0LCBjb25zdCBhbGxvY2F0b3Jf
dHlwZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNoX3NldChmaXJzdCwgbGFzdCwgMCwgaGFzaGVy
KCksIGtleV9lcXVhbCgpLCBhbGxvYykge30KKworICAvLyBJbnN0ZWFkIG9mIGFjY2VwdGluZyBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gYXMgdGhlIGZpcnN0CisgIC8vIGFyZ3Vt
ZW50IGxpa2Ugc3RkOjp1bm9yZGVyZWRfc2V0PHZhbHVlX3R5cGU+IGRvZXMsIHdlIGhhdmUgdHdv
IG92ZXJsb2FkcworICAvLyB0aGF0IGFjY2VwdCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gYW5k
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+LgorICAvLyBUaGlzIGlzIGFkdmFudGFn
ZW91cyBmb3IgcGVyZm9ybWFuY2UuCisgIC8vCisgIC8vICAgLy8gVHVybnMgeyJhYmMiLCAiZGVm
In0gaW50byBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpzdHJpbmc+LCB0aGVuIGNvcGllcwor
ICAvLyAgIC8vIHRoZSBzdHJpbmdzIGludG8gdGhlIHNldC4KKyAgLy8gICBzdGQ6OnVub3JkZXJl
ZF9zZXQ8c3RkOjpzdHJpbmc+IHMgPSB7ImFiYyIsICJkZWYifTsKKyAgLy8KKyAgLy8gICAvLyBU
dXJucyB7ImFiYyIsICJkZWYifSBpbnRvIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFy
Kj4sIHRoZW4KKyAgLy8gICAvLyBjb3BpZXMgdGhlIHN0cmluZ3MgaW50byB0aGUgc2V0LgorICAv
LyAgIGFic2w6OmZsYXRfaGFzaF9zZXQ8c3RkOjpzdHJpbmc+IHMgPSB7ImFiYyIsICJkZWYifTsK
KyAgLy8KKyAgLy8gVGhlIHNhbWUgdHJpY2sgaXMgdXNlZCBpbiBpbnNlcnQoKS4KKyAgLy8KKyAg
Ly8gVGhlIGVuYWJsZXIgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgdGhpcyBjb25zdHJ1Y3RvciBm
cm9tIHRyaWdnZXJpbmcgd2hlcmUKKyAgLy8gdGhlIGNvcHkgY29uc3RydWN0b3IgaXMgbWVhbnQg
dG8gYmUgY2FsbGVkLgorICAvLworICAvLyAgIGFic2w6OmZsYXRfaGFzaF9zZXQ8aW50PiBhLCBi
e2F9OworICAvLworICAvLyBSZXF1aXJlc05vdEluaXQ8VD4gaXMgYSB3b3JrYXJvdW5kIGZvciBn
Y2MgcHJpb3IgdG8gNy4xLgorICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgUmVxdWlyZXNOb3RJbml0PFQ+
ID0gMCwgUmVxdWlyZXNJbnNlcnRhYmxlPFQ+ID0gMD4KKyAgcmF3X2hhc2hfc2V0KHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxUPiBpbml0LCBzaXplX3QgYnVja2V0X2NvdW50ID0gMCwKKyAgICAgICAg
ICAgICAgIGNvbnN0IGhhc2hlciYgaGFzaCA9IGhhc2hlcigpLCBjb25zdCBrZXlfZXF1YWwmIGVx
ID0ga2V5X2VxdWFsKCksCisgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxs
b2MgPSBhbGxvY2F0b3JfdHlwZSgpKQorICAgICAgOiByYXdfaGFzaF9zZXQoaW5pdC5iZWdpbigp
LCBpbml0LmVuZCgpLCBidWNrZXRfY291bnQsIGhhc2gsIGVxLCBhbGxvYykge30KKworICByYXdf
aGFzaF9zZXQoc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaW5pdCwgc2l6ZV90IGJ1
Y2tldF9jb3VudCA9IDAsCisgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImIGhhc2ggPSBoYXNo
ZXIoKSwgY29uc3Qga2V5X2VxdWFsJiBlcSA9IGtleV9lcXVhbCgpLAorICAgICAgICAgICAgICAg
Y29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jID0gYWxsb2NhdG9yX3R5cGUoKSkKKyAgICAgIDog
cmF3X2hhc2hfc2V0KGluaXQuYmVnaW4oKSwgaW5pdC5lbmQoKSwgYnVja2V0X2NvdW50LCBoYXNo
LCBlcSwgYWxsb2MpIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFQsIFJlcXVpcmVzTm90SW5pdDxU
PiA9IDAsIFJlcXVpcmVzSW5zZXJ0YWJsZTxUPiA9IDA+CisgIHJhd19oYXNoX3NldChzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8VD4gaW5pdCwgc2l6ZV90IGJ1Y2tldF9jb3VudCwKKyAgICAgICAgICAg
ICAgIGNvbnN0IGhhc2hlciYgaGFzaCwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jKQorICAg
ICAgOiByYXdfaGFzaF9zZXQoaW5pdCwgYnVja2V0X2NvdW50LCBoYXNoLCBrZXlfZXF1YWwoKSwg
YWxsb2MpIHt9CisKKyAgcmF3X2hhc2hfc2V0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5
cGU+IGluaXQsIHNpemVfdCBidWNrZXRfY291bnQsCisgICAgICAgICAgICAgICBjb25zdCBoYXNo
ZXImIGhhc2gsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hf
c2V0KGluaXQsIGJ1Y2tldF9jb3VudCwgaGFzaCwga2V5X2VxdWFsKCksIGFsbG9jKSB7fQorCisg
IHRlbXBsYXRlIDxjbGFzcyBULCBSZXF1aXJlc05vdEluaXQ8VD4gPSAwLCBSZXF1aXJlc0luc2Vy
dGFibGU8VD4gPSAwPgorICByYXdfaGFzaF9zZXQoc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGlu
aXQsIHNpemVfdCBidWNrZXRfY291bnQsCisgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3Jf
dHlwZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNoX3NldChpbml0LCBidWNrZXRfY291bnQsIGhh
c2hlcigpLCBrZXlfZXF1YWwoKSwgYWxsb2MpIHt9CisKKyAgcmF3X2hhc2hfc2V0KHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGluaXQsIHNpemVfdCBidWNrZXRfY291bnQsCisgICAg
ICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2MpCisgICAgICA6IHJhd19oYXNo
X3NldChpbml0LCBidWNrZXRfY291bnQsIGhhc2hlcigpLCBrZXlfZXF1YWwoKSwgYWxsb2MpIHt9
CisKKyAgdGVtcGxhdGUgPGNsYXNzIFQsIFJlcXVpcmVzTm90SW5pdDxUPiA9IDAsIFJlcXVpcmVz
SW5zZXJ0YWJsZTxUPiA9IDA+CisgIHJhd19oYXNoX3NldChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
VD4gaW5pdCwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIGFsbG9jKQorICAgICAgOiByYXdfaGFzaF9z
ZXQoaW5pdCwgMCwgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBhbGxvYykge30KKworICByYXdfaGFz
aF9zZXQoc3RkOjppbml0aWFsaXplcl9saXN0PGluaXRfdHlwZT4gaW5pdCwKKyAgICAgICAgICAg
ICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBhbGxvYykKKyAgICAgIDogcmF3X2hhc2hfc2V0KGlu
aXQsIDAsIGhhc2hlcigpLCBrZXlfZXF1YWwoKSwgYWxsb2MpIHt9CisKKyAgcmF3X2hhc2hfc2V0
KGNvbnN0IHJhd19oYXNoX3NldCYgdGhhdCkKKyAgICAgIDogcmF3X2hhc2hfc2V0KHRoYXQsIEFs
bG9jVHJhaXRzOjpzZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsb2NfcmVmKCkpKSB7fQorCisgIHJhd19o
YXNoX3NldChjb25zdCByYXdfaGFzaF9zZXQmIHRoYXQsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBh
KQorICAgICAgOiByYXdfaGFzaF9zZXQoMCwgdGhhdC5oYXNoX3JlZigpLCB0aGF0LmVxX3JlZigp
LCBhKSB7CisgICAgcmVzZXJ2ZSh0aGF0LnNpemUoKSk7CisgICAgLy8gQmVjYXVzZSB0aGUgdGFi
bGUgaXMgZ3VhcmFudGVlZCB0byBiZSBlbXB0eSwgd2UgY2FuIGRvIHNvbWV0aGluZyBmYXN0ZXIK
KyAgICAvLyB0aGFuIGEgZnVsbCBgaW5zZXJ0YC4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHYgOiB0
aGF0KSB7CisgICAgICBjb25zdCBzaXplX3QgaGFzaCA9IFBvbGljeVRyYWl0czo6YXBwbHkoSGFz
aEVsZW1lbnR7aGFzaF9yZWYoKX0sIHYpOworICAgICAgY29uc3Qgc2l6ZV90IGkgPSBmaW5kX2Zp
cnN0X25vbl9mdWxsKGhhc2gpOworICAgICAgc2V0X2N0cmwoaSwgSDIoaGFzaCkpOworICAgICAg
ZW1wbGFjZV9hdChpLCB2KTsKKyAgICB9CisgICAgc2l6ZV8gPSB0aGF0LnNpemUoKTsKKyAgICBn
cm93dGhfbGVmdCgpIC09IHRoYXQuc2l6ZSgpOworICB9CisKKyAgcmF3X2hhc2hfc2V0KHJhd19o
YXNoX3NldCYmIHRoYXQpIG5vZXhjZXB0KAorICAgICAgc3RkOjppc19ub3Rocm93X2NvcHlfY29u
c3RydWN0aWJsZTxoYXNoZXI+Ojp2YWx1ZSYmCisgICAgICAgICAgc3RkOjppc19ub3Rocm93X2Nv
cHlfY29uc3RydWN0aWJsZTxrZXlfZXF1YWw+Ojp2YWx1ZSYmCisgICAgICAgICAgICAgIHN0ZDo6
aXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSkKKyAg
ICAgIDogY3RybF8oYWJzbDo6ZXhjaGFuZ2UodGhhdC5jdHJsXywgRW1wdHlHcm91cCgpKSksCisg
ICAgICAgIHNsb3RzXyhhYnNsOjpleGNoYW5nZSh0aGF0LnNsb3RzXywgbnVsbHB0cikpLAorICAg
ICAgICBzaXplXyhhYnNsOjpleGNoYW5nZSh0aGF0LnNpemVfLCAwKSksCisgICAgICAgIGNhcGFj
aXR5XyhhYnNsOjpleGNoYW5nZSh0aGF0LmNhcGFjaXR5XywgMCkpLAorICAgICAgICAvLyBIYXNo
LCBlcXVhbGl0eSBhbmQgYWxsb2NhdG9yIGFyZSBjb3BpZWQgaW5zdGVhZCBvZiBtb3ZlZCBiZWNh
dXNlCisgICAgICAgIC8vIGB0aGF0YCBtdXN0IGJlIGxlZnQgdmFsaWQuIElmIEhhc2ggaXMgc3Rk
OjpmdW5jdGlvbjxLZXk+LCBtb3ZpbmcgaXQKKyAgICAgICAgLy8gd291bGQgY3JlYXRlIGEgbnVs
bHB0ciBmdW5jdG9yIHRoYXQgY2Fubm90IGJlIGNhbGxlZC4KKyAgICAgICAgc2V0dGluZ3NfKHRo
YXQuc2V0dGluZ3NfKSB7CisgICAgLy8gZ3Jvd3RoX2xlZnQgd2FzIGNvcGllZCBhYm92ZSwgcmVz
ZXQgdGhlIG9uZSBmcm9tIGB0aGF0YC4KKyAgICB0aGF0Lmdyb3d0aF9sZWZ0KCkgPSAwOworICB9
CisKKyAgcmF3X2hhc2hfc2V0KHJhd19oYXNoX3NldCYmIHRoYXQsIGNvbnN0IGFsbG9jYXRvcl90
eXBlJiBhKQorICAgICAgOiBjdHJsXyhFbXB0eUdyb3VwKCkpLAorICAgICAgICBzbG90c18obnVs
bHB0ciksCisgICAgICAgIHNpemVfKDApLAorICAgICAgICBjYXBhY2l0eV8oMCksCisgICAgICAg
IHNldHRpbmdzXygwLCB0aGF0Lmhhc2hfcmVmKCksIHRoYXQuZXFfcmVmKCksIGEpIHsKKyAgICBp
ZiAoYSA9PSB0aGF0LmFsbG9jX3JlZigpKSB7CisgICAgICBzdGQ6OnN3YXAoY3RybF8sIHRoYXQu
Y3RybF8pOworICAgICAgc3RkOjpzd2FwKHNsb3RzXywgdGhhdC5zbG90c18pOworICAgICAgc3Rk
Ojpzd2FwKHNpemVfLCB0aGF0LnNpemVfKTsKKyAgICAgIHN0ZDo6c3dhcChjYXBhY2l0eV8sIHRo
YXQuY2FwYWNpdHlfKTsKKyAgICAgIHN0ZDo6c3dhcChncm93dGhfbGVmdCgpLCB0aGF0Lmdyb3d0
aF9sZWZ0KCkpOworICAgIH0gZWxzZSB7CisgICAgICByZXNlcnZlKHRoYXQuc2l6ZSgpKTsKKyAg
ICAgIC8vIE5vdGU6IHRoaXMgd2lsbCBjb3B5IGVsZW1lbnRzIG9mIGRlbnNlX3NldCBhbmQgdW5v
cmRlcmVkX3NldCBpbnN0ZWFkIG9mCisgICAgICAvLyBtb3ZpbmcgdGhlbS4gVGhpcyBjYW4gYmUg
Zml4ZWQgaWYgaXQgZXZlciBiZWNvbWVzIGFuIGlzc3VlLgorICAgICAgZm9yIChhdXRvJiBlbGVt
IDogdGhhdCkgaW5zZXJ0KHN0ZDo6bW92ZShlbGVtKSk7CisgICAgfQorICB9CisKKyAgcmF3X2hh
c2hfc2V0JiBvcGVyYXRvcj0oY29uc3QgcmF3X2hhc2hfc2V0JiB0aGF0KSB7CisgICAgcmF3X2hh
c2hfc2V0IHRtcCh0aGF0LAorICAgICAgICAgICAgICAgICAgICAgQWxsb2NUcmFpdHM6OnByb3Bh
Z2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50Ojp2YWx1ZQorICAgICAgICAgICAgICAg
ICAgICAgICAgID8gdGhhdC5hbGxvY19yZWYoKQorICAgICAgICAgICAgICAgICAgICAgICAgIDog
YWxsb2NfcmVmKCkpOworICAgIHN3YXAodG1wKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKwor
ICByYXdfaGFzaF9zZXQmIG9wZXJhdG9yPShyYXdfaGFzaF9zZXQmJiB0aGF0KSBub2V4Y2VwdCgK
KyAgICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yX3R5cGU+Ojppc19hbHdheXNf
ZXF1YWw6OnZhbHVlJiYKKyAgICAgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxl
PGhhc2hlcj46OnZhbHVlJiYKKyAgICAgICAgICAgICAgc3RkOjppc19ub3Rocm93X21vdmVfYXNz
aWduYWJsZTxrZXlfZXF1YWw+Ojp2YWx1ZSkgeworICAgIC8vIFRPRE8oc2JlbnphKTogV2Ugc2hv
dWxkIG9ubHkgdXNlIHRoZSBvcGVyYXRpb25zIGZyb20gdGhlIG5vZXhjZXB0IGNsYXVzZQorICAg
IC8vIHRvIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBhZGhlcmUgdG8gdGhhdCBjb250cmFjdC4KKyAg
ICByZXR1cm4gbW92ZV9hc3NpZ24oCisgICAgICAgIHN0ZDo6bW92ZSh0aGF0KSwKKyAgICAgICAg
dHlwZW5hbWUgQWxsb2NUcmFpdHM6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25t
ZW50KCkpOworICB9CisKKyAgfnJhd19oYXNoX3NldCgpIHsgZGVzdHJveV9zbG90cygpOyB9CisK
KyAgaXRlcmF0b3IgYmVnaW4oKSB7CisgICAgYXV0byBpdCA9IGl0ZXJhdG9yX2F0KDApOworICAg
IGl0LnNraXBfZW1wdHlfb3JfZGVsZXRlZCgpOworICAgIHJldHVybiBpdDsKKyAgfQorICBpdGVy
YXRvciBlbmQoKSB7IHJldHVybiB7Y3RybF8gKyBjYXBhY2l0eV99OyB9CisKKyAgY29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8cmF3X2hhc2hfc2V0
Kj4odGhpcyktPmJlZ2luKCk7CisgIH0KKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxyYXdfaGFzaF9zZXQqPih0aGlzKS0+ZW5kKCk7IH0KKyAgY29uc3Rf
aXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1cm4gYmVnaW4oKTsgfQorICBjb25zdF9pdGVy
YXRvciBjZW5kKCkgY29uc3QgeyByZXR1cm4gZW5kKCk7IH0KKworICBib29sIGVtcHR5KCkgY29u
c3QgeyByZXR1cm4gIXNpemUoKTsgfQorICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNp
emVfOyB9CisgIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIGNhcGFjaXR5XzsgfQor
ICBzaXplX3QgbWF4X3NpemUoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpOyB9CisKKyAgdm9pZCBjbGVhcigpIHsKKyAgICAvLyBJdGVyYXRpbmcgb3Zl
ciB0aGlzIGNvbnRhaW5lciBpcyBPKGJ1Y2tldF9jb3VudCgpKS4gV2hlbiBidWNrZXRfY291bnQo
KQorICAgIC8vIGlzIG11Y2ggZ3JlYXRlciB0aGFuIHNpemUoKSwgaXRlcmF0aW9uIGJlY29tZXMg
cHJvaGliaXRpdmVseSBleHBlbnNpdmUuCisgICAgLy8gRm9yIGNsZWFyKCkgaXQgaXMgbW9yZSBp
bXBvcnRhbnQgdG8gcmV1c2UgdGhlIGFsbG9jYXRlZCBhcnJheSB3aGVuIHRoZQorICAgIC8vIGNv
bnRhaW5lciBpcyBzbWFsbCBiZWNhdXNlIGFsbG9jYXRpb24gdGFrZXMgY29tcGFyYXRpdmVseSBs
b25nIHRpbWUKKyAgICAvLyBjb21wYXJlZCB0byBkZXN0cnVjdGlvbiBvZiB0aGUgZWxlbWVudHMg
b2YgdGhlIGNvbnRhaW5lci4gU28gd2UgcGljayB0aGUKKyAgICAvLyBsYXJnZXN0IGJ1Y2tldF9j
b3VudCgpIHRocmVzaG9sZCBmb3Igd2hpY2ggaXRlcmF0aW9uIGlzIHN0aWxsIGZhc3QgYW5kCisg
ICAgLy8gcGFzdCB0aGF0IHdlIHNpbXBseSBkZWFsbG9jYXRlIHRoZSBhcnJheS4KKyAgICBpZiAo
Y2FwYWNpdHlfID4gMTI3KSB7CisgICAgICBkZXN0cm95X3Nsb3RzKCk7CisgICAgfSBlbHNlIGlm
IChjYXBhY2l0eV8pIHsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNhcGFjaXR5Xzsg
KytpKSB7CisgICAgICAgIGlmIChJc0Z1bGwoY3RybF9baV0pKSB7CisgICAgICAgICAgUG9saWN5
VHJhaXRzOjpkZXN0cm95KCZhbGxvY19yZWYoKSwgc2xvdHNfICsgaSk7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIHNpemVfID0gMDsKKyAgICAgIHJlc2V0X2N0cmwoKTsKKyAgICAgIGdyb3d0
aF9sZWZ0KCkgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNhcGFjaXR5XyAqIGtNYXhMb2FkRmFjdG9y
KTsKKyAgICB9CisgICAgYXNzZXJ0KGVtcHR5KCkpOworICB9CisKKyAgLy8gVGhpcyBvdmVybG9h
ZCBraWNrcyBpbiB3aGVuIHRoZSBhcmd1bWVudCBpcyBhbiBydmFsdWUgb2YgaW5zZXJ0YWJsZSBh
bmQKKyAgLy8gZGVjb21wb3NhYmxlIHR5cGUgb3RoZXIgdGhhbiBpbml0X3R5cGUuCisgIC8vCisg
IC8vICAgZmxhdF9oYXNoX21hcDxzdGQ6OnN0cmluZywgaW50PiBtOworICAvLyAgIG0uaW5zZXJ0
KHN0ZDo6bWFrZV9wYWlyKCJhYmMiLCA0MikpOworICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgUmVxdWly
ZXNJbnNlcnRhYmxlPFQ+ID0gMCwKKyAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PElzRGVjb21wb3NhYmxlPFQ+Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9IDAsCisgICAgICAgICAgICBU
KiA9IG51bGxwdHI+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0KFQmJiB2YWx1
ZSkgeworICAgIHJldHVybiBlbXBsYWNlKHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpOworICB9CisK
KyAgLy8gVGhpcyBvdmVybG9hZCBraWNrcyBpbiB3aGVuIHRoZSBhcmd1bWVudCBpcyBhIGJpdGZp
ZWxkIG9yIGFuIGx2YWx1ZSBvZgorICAvLyBpbnNlcnRhYmxlIGFuZCBkZWNvbXBvc2FibGUgdHlw
ZS4KKyAgLy8KKyAgLy8gICB1bmlvbiB7IGludCBuIDogMTsgfTsKKyAgLy8gICBmbGF0X2hhc2hf
c2V0PGludD4gczsKKyAgLy8gICBzLmluc2VydChuKTsKKyAgLy8KKyAgLy8gICBmbGF0X2hhc2hf
c2V0PHN0ZDo6c3RyaW5nPiBzOworICAvLyAgIGNvbnN0IGNoYXIqIHAgPSAiaGVsbG8iOworICAv
LyAgIHMuaW5zZXJ0KHApOworICAvLworICAvLyBUT0RPKHJvbWFucCk6IE9uY2Ugd2Ugc3RvcCBz
dXBwb3J0aW5nIGdjYyA1LjEgYW5kIGJlbG93LCByZXBsYWNlCisgIC8vIFJlcXVpcmVzSW5zZXJ0
YWJsZTxUPiB3aXRoIFJlcXVpcmVzSW5zZXJ0YWJsZTxjb25zdCBUJj4uCisgIC8vIFdlIGFyZSBo
aXR0aW5nIHRoaXMgYnVnOiBodHRwczovL2dvZGJvbHQub3JnL2cvMVZodDRmLgorICB0ZW1wbGF0
ZSA8CisgICAgICBjbGFzcyBULCBSZXF1aXJlc0luc2VydGFibGU8VD4gPSAwLAorICAgICAgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8SXNEZWNvbXBvc2FibGU8Y29uc3QgVCY+Ojp2YWx1ZSwgaW50
Pjo6dHlwZSA9IDA+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0KGNvbnN0IFQm
IHZhbHVlKSB7CisgICAgcmV0dXJuIGVtcGxhY2UodmFsdWUpOworICB9CisKKyAgLy8gVGhpcyBv
dmVybG9hZCBraWNrcyBpbiB3aGVuIHRoZSBhcmd1bWVudCBpcyBhbiBydmFsdWUgb2YgaW5pdF90
eXBlLiBJdHMKKyAgLy8gcHVycG9zZSBpcyB0byBoYW5kbGUgYnJhY2UtaW5pdC1saXN0IGFyZ3Vt
ZW50cy4KKyAgLy8KKyAgLy8gICBmbGF0X2hhc2hfc2V0PHN0ZDo6c3RyaW5nLCBpbnQ+IHM7Cisg
IC8vICAgcy5pbnNlcnQoeyJhYmMiLCA0Mn0pOworICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+
IGluc2VydChpbml0X3R5cGUmJiB2YWx1ZSkgeworICAgIHJldHVybiBlbXBsYWNlKHN0ZDo6bW92
ZSh2YWx1ZSkpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFQsIFJlcXVpcmVzSW5zZXJ0YWJs
ZTxUPiA9IDAsCisgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc0RlY29tcG9z
YWJsZTxUPjo6dmFsdWUsIGludD46OnR5cGUgPSAwLAorICAgICAgICAgICAgVCogPSBudWxscHRy
PgorICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IsIFQmJiB2YWx1ZSkgeworICAgIHJl
dHVybiBpbnNlcnQoc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkuZmlyc3Q7CisgIH0KKworICAvLyBU
T0RPKHJvbWFucCk6IE9uY2Ugd2Ugc3RvcCBzdXBwb3J0aW5nIGdjYyA1LjEgYW5kIGJlbG93LCBy
ZXBsYWNlCisgIC8vIFJlcXVpcmVzSW5zZXJ0YWJsZTxUPiB3aXRoIFJlcXVpcmVzSW5zZXJ0YWJs
ZTxjb25zdCBUJj4uCisgIC8vIFdlIGFyZSBoaXR0aW5nIHRoaXMgYnVnOiBodHRwczovL2dvZGJv
bHQub3JnL2cvMVZodDRmLgorICB0ZW1wbGF0ZSA8CisgICAgICBjbGFzcyBULCBSZXF1aXJlc0lu
c2VydGFibGU8VD4gPSAwLAorICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNEZWNvbXBv
c2FibGU8Y29uc3QgVCY+Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9IDA+CisgIGl0ZXJhdG9yIGluc2Vy
dChjb25zdF9pdGVyYXRvciwgY29uc3QgVCYgdmFsdWUpIHsKKyAgICByZXR1cm4gaW5zZXJ0KHZh
bHVlKS5maXJzdDsKKyAgfQorCisgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciwgaW5p
dF90eXBlJiYgdmFsdWUpIHsKKyAgICByZXR1cm4gaW5zZXJ0KHN0ZDo6bW92ZSh2YWx1ZSkpLmZp
cnN0OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+CisgIHZvaWQgaW5zZXJ0KElu
cHV0SXQgZmlyc3QsIElucHV0SXQgbGFzdCkgeworICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyAr
K2ZpcnN0KSBpbnNlcnQoKmZpcnN0KTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBULCBSZXF1
aXJlc05vdEluaXQ8VD4gPSAwLCBSZXF1aXJlc0luc2VydGFibGU8Y29uc3QgVCY+ID0gMD4KKyAg
dm9pZCBpbnNlcnQoc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGlsaXN0KSB7CisgICAgaW5zZXJ0
KGlsaXN0LmJlZ2luKCksIGlsaXN0LmVuZCgpKTsKKyAgfQorCisgIHZvaWQgaW5zZXJ0KHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxpbml0X3R5cGU+IGlsaXN0KSB7CisgICAgaW5zZXJ0KGlsaXN0LmJl
Z2luKCksIGlsaXN0LmVuZCgpKTsKKyAgfQorCisgIGluc2VydF9yZXR1cm5fdHlwZTxpdGVyYXRv
ciwgbm9kZV90eXBlPiBpbnNlcnQobm9kZV90eXBlJiYgbm9kZSkgeworICAgIGlmICghbm9kZSkg
cmV0dXJuIHtlbmQoKSwgZmFsc2UsIG5vZGVfdHlwZSgpfTsKKyAgICBjb25zdCBhdXRvJiBlbGVt
ID0gUG9saWN5VHJhaXRzOjplbGVtZW50KG5vZGUuc2xvdCgpKTsKKyAgICBhdXRvIHJlcyA9IFBv
bGljeVRyYWl0czo6YXBwbHkoCisgICAgICAgIEluc2VydFNsb3Q8ZmFsc2U+eyp0aGlzLCBzdGQ6
Om1vdmUoKm5vZGUuc2xvdCgpKX0sIGVsZW0pOworICAgIGlmIChyZXMuc2Vjb25kKSB7CisgICAg
ICBub2RlLnJlc2V0KCk7CisgICAgICByZXR1cm4ge3Jlcy5maXJzdCwgdHJ1ZSwgbm9kZV90eXBl
KCl9OworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4ge3Jlcy5maXJzdCwgZmFsc2UsIHN0ZDo6
bW92ZShub2RlKX07CisgICAgfQorICB9CisKKyAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJh
dG9yLCBub2RlX3R5cGUmJiBub2RlKSB7CisgICAgcmV0dXJuIGluc2VydChzdGQ6Om1vdmUobm9k
ZSkpLmZpcnN0OworICB9CisKKyAgLy8gVGhpcyBvdmVybG9hZCBraWNrcyBpbiBpZiB3ZSBjYW4g
ZGVkdWNlIHRoZSBrZXkgZnJvbSBhcmdzLiBUaGlzIGVuYWJsZXMgdXMKKyAgLy8gdG8gYXZvaWQg
Y29uc3RydWN0aW5nIHZhbHVlX3R5cGUgaWYgYW4gZW50cnkgd2l0aCB0aGUgc2FtZSBrZXkgYWxy
ZWFkeQorICAvLyBleGlzdHMuCisgIC8vCisgIC8vIEZvciBleGFtcGxlOgorICAvLworICAvLyAg
IGZsYXRfaGFzaF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBtID0ge3siYWJjIiwgImRl
ZiJ9fTsKKyAgLy8gICAvLyBDcmVhdGVzIG5vIHN0ZDo6c3RyaW5nIGNvcGllcyBhbmQgbWFrZXMg
bm8gaGVhcCBhbGxvY2F0aW9ucy4KKyAgLy8gICBtLmVtcGxhY2UoImFiYyIsICJ4eXoiKTsKKyAg
dGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIElzRGVjb21wb3NhYmxlPEFyZ3MuLi4+Ojp2YWx1ZSwg
aW50Pjo6dHlwZSA9IDA+CisgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZShBcmdz
JiYuLi4gYXJncykgeworICAgIHJldHVybiBQb2xpY3lUcmFpdHM6OmFwcGx5KEVtcGxhY2VEZWNv
bXBvc2FibGV7KnRoaXN9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICAvLyBUaGlzIG92ZXJsb2FkIGtpY2tzIGlu
IGlmIHdlIGNhbm5vdCBkZWR1Y2UgdGhlIGtleSBmcm9tIGFyZ3MuIEl0IGNvbnN0cnVjdHMKKyAg
Ly8gdmFsdWVfdHlwZSB1bmNvbmRpdGlvbmFsbHkgYW5kIHRoZW4gZWl0aGVyIG1vdmVzIGl0IGlu
dG8gdGhlIHRhYmxlIG9yCisgIC8vIGRlc3Ryb3lzLgorICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJn
cywgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIUlzRGVjb21wb3NhYmxlPEFyZ3MuLi4+Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9IDA+CisgIHN0
ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZShBcmdzJiYuLi4gYXJncykgeworICAgIHR5
cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZihzbG90X3R5cGUpLCBhbGlnbm9mKHNs
b3RfdHlwZSk+Ojp0eXBlCisgICAgICAgIHJhdzsKKyAgICBzbG90X3R5cGUqIHNsb3QgPSByZWlu
dGVycHJldF9jYXN0PHNsb3RfdHlwZSo+KCZyYXcpOworCisgICAgUG9saWN5VHJhaXRzOjpjb25z
dHJ1Y3QoJmFsbG9jX3JlZigpLCBzbG90LCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwor
ICAgIGNvbnN0IGF1dG8mIGVsZW0gPSBQb2xpY3lUcmFpdHM6OmVsZW1lbnQoc2xvdCk7CisgICAg
cmV0dXJuIFBvbGljeVRyYWl0czo6YXBwbHkoSW5zZXJ0U2xvdDx0cnVlPnsqdGhpcywgc3RkOjpt
b3ZlKCpzbG90KX0sIGVsZW0pOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+Cisg
IGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciwgQXJncyYmLi4uIGFyZ3MpIHsK
KyAgICByZXR1cm4gZW1wbGFjZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pLmZpcnN0Owor
ICB9CisKKyAgLy8gRXh0ZW5zaW9uIEFQSTogc3VwcG9ydCBmb3IgbGF6eSBlbXBsYWNlLgorICAv
LworICAvLyBMb29rcyB1cCBrZXkgaW4gdGhlIHRhYmxlLiBJZiBmb3VuZCwgcmV0dXJucyB0aGUg
aXRlcmF0b3IgdG8gdGhlIGVsZW1lbnQuCisgIC8vIE90aGVyd2lzZSBjYWxscyBmIHdpdGggb25l
IGFyZ3VtZW50IG9mIHR5cGUgcmF3X2hhc2hfc2V0Ojpjb25zdHJ1Y3Rvci4gZgorICAvLyBNVVNU
IGNhbGwgcmF3X2hhc2hfc2V0Ojpjb25zdHJ1Y3RvciB3aXRoIGFyZ3VtZW50cyBhcyBpZiBhCisg
IC8vIHJhd19oYXNoX3NldDo6dmFsdWVfdHlwZSBpcyBjb25zdHJ1Y3RlZCwgb3RoZXJ3aXNlIHRo
ZSBiZWhhdmlvciBpcworICAvLyB1bmRlZmluZWQuCisgIC8vCisgIC8vIEZvciBleGFtcGxlOgor
ICAvLworICAvLyAgIHN0ZDo6dW5vcmRlcmVkX3NldDxBcmVuYVN0cmluZz4gczsKKyAgLy8gICAv
LyBNYWtlcyBBcmVuYVN0ciBldmVuIGlmICJhYmMiIGlzIGluIHRoZSBtYXAuCisgIC8vICAgcy5p
bnNlcnQoQXJlbmFTdHJpbmcoJmFyZW5hLCAiYWJjIikpOworICAvLworICAvLyAgIGZsYXRfaGFz
aF9zZXQ8QXJlbmFTdHI+IHM7CisgIC8vICAgLy8gTWFrZXMgQXJlbmFTdHIgb25seSBpZiAiYWJj
IiBpcyBub3QgaW4gdGhlIG1hcC4KKyAgLy8gICBzLmxhenlfZW1wbGFjZSgiYWJjIiwgWyZdKGNv
bnN0IGNvbnN0cnVjdG9yJiBjdG9yKSB7CisgIC8vICAgICBjdG9yKCZhcmVuYSwgImFiYyIpOwor
ICAvLyAgIH0pOworICAvLworICAvLyBXQVJOSU5HOiBUaGlzIEFQSSBpcyBjdXJyZW50bHkgZXhw
ZXJpbWVudGFsLiBJZiB0aGVyZSBpcyBhIHdheSB0byBpbXBsZW1lbnQKKyAgLy8gdGhlIHNhbWUg
dGhpbmcgd2l0aCB0aGUgcmVzdCBvZiB0aGUgQVBJLCBwcmVmZXIgdGhhdC4KKyAgY2xhc3MgY29u
c3RydWN0b3IgeworICAgIGZyaWVuZCBjbGFzcyByYXdfaGFzaF9zZXQ7CisKKyAgIHB1YmxpYzoK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgICB2b2lkIG9wZXJhdG9yKCkoQXJncyYm
Li4uIGFyZ3MpIGNvbnN0IHsKKyAgICAgIGFzc2VydCgqc2xvdF8pOworICAgICAgUG9saWN5VHJh
aXRzOjpjb25zdHJ1Y3QoYWxsb2NfLCAqc2xvdF8sIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
Lik7CisgICAgICAqc2xvdF8gPSBudWxscHRyOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBj
b25zdHJ1Y3RvcihhbGxvY2F0b3JfdHlwZSogYSwgc2xvdF90eXBlKiogc2xvdCkgOiBhbGxvY18o
YSksIHNsb3RfKHNsb3QpIHt9CisKKyAgICBhbGxvY2F0b3JfdHlwZSogYWxsb2NfOworICAgIHNs
b3RfdHlwZSoqIHNsb3RfOworICB9OworCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGUs
IGNsYXNzIEY+CisgIGl0ZXJhdG9yIGxhenlfZW1wbGFjZShjb25zdCBrZXlfYXJnPEs+JiBrZXks
IEYmJiBmKSB7CisgICAgYXV0byByZXMgPSBmaW5kX29yX3ByZXBhcmVfaW5zZXJ0KGtleSk7Cisg
ICAgaWYgKHJlcy5zZWNvbmQpIHsKKyAgICAgIHNsb3RfdHlwZSogc2xvdCA9IHNsb3RzXyArIHJl
cy5maXJzdDsKKyAgICAgIHN0ZDo6Zm9yd2FyZDxGPihmKShjb25zdHJ1Y3RvcigmYWxsb2NfcmVm
KCksICZzbG90KSk7CisgICAgICBhc3NlcnQoIXNsb3QpOworICAgIH0KKyAgICByZXR1cm4gaXRl
cmF0b3JfYXQocmVzLmZpcnN0KTsKKyAgfQorCisgIC8vIEV4dGVuc2lvbiBBUEk6IHN1cHBvcnQg
Zm9yIGhldGVyb2dlbmVvdXMga2V5cy4KKyAgLy8KKyAgLy8gICBzdGQ6OnVub3JkZXJlZF9zZXQ8
c3RkOjpzdHJpbmc+IHM7CisgIC8vICAgLy8gVHVybnMgImFiYyIgaW50byBzdGQ6OnN0cmluZy4K
KyAgLy8gICBzLmVyYXNlKCJhYmMiKTsKKyAgLy8KKyAgLy8gICBmbGF0X2hhc2hfc2V0PHN0ZDo6
c3RyaW5nPiBzOworICAvLyAgIC8vIFVzZXMgImFiYyIgZGlyZWN0bHkgd2l0aG91dCBjb3B5aW5n
IGl0IGludG8gc3RkOjpzdHJpbmcuCisgIC8vICAgcy5lcmFzZSgiYWJjIik7CisgIHRlbXBsYXRl
IDxjbGFzcyBLID0ga2V5X3R5cGU+CisgIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfYXJnPEs+
JiBrZXkpIHsKKyAgICBhdXRvIGl0ID0gZmluZChrZXkpOworICAgIGlmIChpdCA9PSBlbmQoKSkg
cmV0dXJuIDA7CisgICAgZXJhc2UoaXQpOworICAgIHJldHVybiAxOworICB9CisKKyAgLy8gRXJh
c2VzIHRoZSBlbGVtZW50IHBvaW50ZWQgdG8gYnkgYGl0YC4gIFVubGlrZSBgc3RkOjp1bm9yZGVy
ZWRfc2V0OjplcmFzZWAsCisgIC8vIHRoaXMgbWV0aG9kIHJldHVybnMgdm9pZCB0byByZWR1Y2Ug
YWxnb3JpdGhtaWMgY29tcGxleGl0eSB0byBPKDEpLiAgSW4KKyAgLy8gb3JkZXIgdG8gZXJhc2Ug
d2hpbGUgaXRlcmF0aW5nIGFjcm9zcyBhIG1hcCwgdXNlIHRoZSBmb2xsb3dpbmcgaWRpb20gKHdo
aWNoCisgIC8vIGFsc28gd29ya3MgZm9yIHN0YW5kYXJkIGNvbnRhaW5lcnMpOgorICAvLworICAv
LyBmb3IgKGF1dG8gaXQgPSBtLmJlZ2luKCksIGVuZCA9IG0uZW5kKCk7IGl0ICE9IGVuZDspIHsK
KyAgLy8gICBpZiAoPHByZWQ+KSB7CisgIC8vICAgICBtLmVyYXNlKGl0KyspOworICAvLyAgIH0g
ZWxzZSB7CisgIC8vICAgICArK2l0OworICAvLyAgIH0KKyAgLy8gfQorICB2b2lkIGVyYXNlKGNv
bnN0X2l0ZXJhdG9yIGNpdCkgeyBlcmFzZShjaXQuaW5uZXJfKTsgfQorCisgIC8vIFRoaXMgb3Zl
cmxvYWQgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugb3RoZXJ3aXNlIGVyYXNlPEs+KGNvbnN0IEsmKSB3
b3VsZCBiZQorICAvLyBhIGJldHRlciBtYXRjaCBpZiBub24tY29uc3QgaXRlcmF0b3IgaXMgcGFz
c2VkIGFzIGFuIGFyZ3VtZW50LgorICB2b2lkIGVyYXNlKGl0ZXJhdG9yIGl0KSB7CisgICAgYXNz
ZXJ0KGl0ICE9IGVuZCgpKTsKKyAgICBQb2xpY3lUcmFpdHM6OmRlc3Ryb3koJmFsbG9jX3JlZigp
LCBpdC5zbG90Xyk7CisgICAgZXJhc2VfbWV0YV9vbmx5KGl0KTsKKyAgfQorCisgIGl0ZXJhdG9y
IGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KSB7CisgICAg
d2hpbGUgKGZpcnN0ICE9IGxhc3QpIHsKKyAgICAgIGVyYXNlKGZpcnN0KyspOworICAgIH0KKyAg
ICByZXR1cm4gbGFzdC5pbm5lcl87CisgIH0KKworICAvLyBNb3ZlcyBlbGVtZW50cyBmcm9tIGBz
cmNgIGludG8gYHRoaXNgLgorICAvLyBJZiB0aGUgZWxlbWVudCBhbHJlYWR5IGV4aXN0cyBpbiBg
dGhpc2AsIGl0IGlzIGxlZnQgdW5tb2RpZmllZCBpbiBgc3JjYC4KKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIEgsIHR5cGVuYW1lIEU+CisgIHZvaWQgbWVyZ2UocmF3X2hhc2hfc2V0PFBvbGljeSwgSCwg
RSwgQWxsb2M+JiBzcmMpIHsgIC8vIE5PTElOVAorICAgIGFzc2VydCh0aGlzICE9ICZzcmMpOwor
ICAgIGZvciAoYXV0byBpdCA9IHNyYy5iZWdpbigpLCBlID0gc3JjLmVuZCgpOyBpdCAhPSBlOyAr
K2l0KSB7CisgICAgICBpZiAoUG9saWN5VHJhaXRzOjphcHBseShJbnNlcnRTbG90PGZhbHNlPnsq
dGhpcywgc3RkOjptb3ZlKCppdC5zbG90Xyl9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUG9saWN5VHJhaXRzOjplbGVtZW50KGl0LnNsb3RfKSkKKyAgICAgICAgICAgICAgLnNlY29u
ZCkgeworICAgICAgICBzcmMuZXJhc2VfbWV0YV9vbmx5KGl0KTsKKyAgICAgIH0KKyAgICB9Cisg
IH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgRT4KKyAgdm9pZCBtZXJnZShy
YXdfaGFzaF9zZXQ8UG9saWN5LCBILCBFLCBBbGxvYz4mJiBzcmMpIHsKKyAgICBtZXJnZShzcmMp
OworICB9CisKKyAgbm9kZV90eXBlIGV4dHJhY3QoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24pIHsK
KyAgICBub2RlX3R5cGUgbm9kZShhbGxvY19yZWYoKSwgcG9zaXRpb24uaW5uZXJfLnNsb3RfKTsK
KyAgICBlcmFzZV9tZXRhX29ubHkocG9zaXRpb24pOworICAgIHJldHVybiBub2RlOworICB9CisK
KyAgdGVtcGxhdGUgPAorICAgICAgY2xhc3MgSyA9IGtleV90eXBlLAorICAgICAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxLLCBpdGVyYXRvcj46OnZhbHVlLCBpbnQ+Ojp0
eXBlID0gMD4KKyAgbm9kZV90eXBlIGV4dHJhY3QoY29uc3Qga2V5X2FyZzxLPiYga2V5KSB7Cisg
ICAgYXV0byBpdCA9IGZpbmQoa2V5KTsKKyAgICByZXR1cm4gaXQgPT0gZW5kKCkgPyBub2RlX3R5
cGUoKSA6IGV4dHJhY3QoY29uc3RfaXRlcmF0b3J7aXR9KTsKKyAgfQorCisgIHZvaWQgc3dhcChy
YXdfaGFzaF9zZXQmIHRoYXQpIG5vZXhjZXB0KAorICAgICAgSXNOb1Rocm93U3dhcHBhYmxlPGhh
c2hlcj4oKSAmJiBJc05vVGhyb3dTd2FwcGFibGU8a2V5X2VxdWFsPigpICYmCisgICAgICAoIUFs
bG9jVHJhaXRzOjpwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA6OnZhbHVlIHx8CisgICAgICAg
SXNOb1Rocm93U3dhcHBhYmxlPGFsbG9jYXRvcl90eXBlPigpKSkgeworICAgIHVzaW5nIHN0ZDo6
c3dhcDsKKyAgICBzd2FwKGN0cmxfLCB0aGF0LmN0cmxfKTsKKyAgICBzd2FwKHNsb3RzXywgdGhh
dC5zbG90c18pOworICAgIHN3YXAoc2l6ZV8sIHRoYXQuc2l6ZV8pOworICAgIHN3YXAoY2FwYWNp
dHlfLCB0aGF0LmNhcGFjaXR5Xyk7CisgICAgc3dhcChncm93dGhfbGVmdCgpLCB0aGF0Lmdyb3d0
aF9sZWZ0KCkpOworICAgIHN3YXAoaGFzaF9yZWYoKSwgdGhhdC5oYXNoX3JlZigpKTsKKyAgICBz
d2FwKGVxX3JlZigpLCB0aGF0LmVxX3JlZigpKTsKKyAgICBpZiAoQWxsb2NUcmFpdHM6OnByb3Bh
Z2F0ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWUpIHsKKyAgICAgIHN3YXAoYWxsb2NfcmVmKCks
IHRoYXQuYWxsb2NfcmVmKCkpOworICAgIH0gZWxzZSB7CisgICAgICAvLyBJZiB0aGUgYWxsb2Nh
dG9ycyBkbyBub3QgY29tcGFyZSBlcXVhbCBpdCBpcyBvZmZpY2lhbGx5IHVuZGVmaW5lZAorICAg
ICAgLy8gYmVoYXZpb3IuIFdlIGNob29zZSB0byBkbyBub3RoaW5nLgorICAgIH0KKyAgfQorCisg
IHZvaWQgcmVoYXNoKHNpemVfdCBuKSB7CisgICAgaWYgKG4gPT0gMCAmJiBjYXBhY2l0eV8gPT0g
MCkgcmV0dXJuOworICAgIGlmIChuID09IDAgJiYgc2l6ZV8gPT0gMCkgcmV0dXJuIGRlc3Ryb3lf
c2xvdHMoKTsKKyAgICBhdXRvIG0gPSBOb3JtYWxpemVDYXBhY2l0eShzdGQ6Om1heChuLCBOdW1T
bG90c0Zhc3Qoc2l6ZSgpKSkpOworICAgIC8vIG4gPT0gMCB1bmNvbmRpdGlvbmFsbHkgcmVoYXNo
ZXMgYXMgcGVyIHRoZSBzdGFuZGFyZC4KKyAgICBpZiAobiA9PSAwIHx8IG0gPiBjYXBhY2l0eV8p
IHsKKyAgICAgIHJlc2l6ZShtKTsKKyAgICB9CisgIH0KKworICB2b2lkIHJlc2VydmUoc2l6ZV90
IG4pIHsKKyAgICByZWhhc2goTnVtU2xvdHNGYXN0KG4pKTsKKyAgfQorCisgIC8vIEV4dGVuc2lv
biBBUEk6IHN1cHBvcnQgZm9yIGhldGVyb2dlbmVvdXMga2V5cy4KKyAgLy8KKyAgLy8gICBzdGQ6
OnVub3JkZXJlZF9zZXQ8c3RkOjpzdHJpbmc+IHM7CisgIC8vICAgLy8gVHVybnMgImFiYyIgaW50
byBzdGQ6OnN0cmluZy4KKyAgLy8gICBzLmNvdW50KCJhYmMiKTsKKyAgLy8KKyAgLy8gICBjaF9z
ZXQ8c3RkOjpzdHJpbmc+IHM7CisgIC8vICAgLy8gVXNlcyAiYWJjIiBkaXJlY3RseSB3aXRob3V0
IGNvcHlpbmcgaXQgaW50byBzdGQ6OnN0cmluZy4KKyAgLy8gICBzLmNvdW50KCJhYmMiKTsKKyAg
dGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZT4KKyAgc2l6ZV90IGNvdW50KGNvbnN0IGtleV9h
cmc8Sz4mIGtleSkgY29uc3QgeworICAgIHJldHVybiBmaW5kKGtleSkgPT0gZW5kKCkgPyAwIDog
MTsKKyAgfQorCisgIC8vIElzc3VlcyBDUFUgcHJlZmV0Y2ggaW5zdHJ1Y3Rpb25zIGZvciB0aGUg
bWVtb3J5IG5lZWRlZCB0byBmaW5kIG9yIGluc2VydAorICAvLyBhIGtleS4gIExpa2UgYWxsIGxv
b2t1cCBmdW5jdGlvbnMsIHRoaXMgc3VwcG9ydCBoZXRlcm9nZW5lb3VzIGtleXMuCisgIC8vCisg
IC8vIE5PVEU6IFRoaXMgaXMgYSB2ZXJ5IGxvdyBsZXZlbCBvcGVyYXRpb24gYW5kIHNob3VsZCBu
b3QgYmUgdXNlZCB3aXRob3V0CisgIC8vIHNwZWNpZmljIGJlbmNobWFya3MgaW5kaWNhdGluZyBp
dHMgaW1wb3J0YW5jZS4KKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZT4KKyAgdm9pZCBw
cmVmZXRjaChjb25zdCBrZXlfYXJnPEs+JiBrZXkpIGNvbnN0IHsKKyAgICAodm9pZClrZXk7Cisj
aWYgZGVmaW5lZChfX0dOVUNfXykKKyAgICBhdXRvIHNlcSA9IHByb2JlKGhhc2hfcmVmKCkoa2V5
KSk7CisgICAgX19idWlsdGluX3ByZWZldGNoKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihjdHJs
XyArIHNlcS5vZmZzZXQoKSkpOworICAgIF9fYnVpbHRpbl9wcmVmZXRjaChzdGF0aWNfY2FzdDxj
b25zdCB2b2lkKj4oc2xvdHNfICsgc2VxLm9mZnNldCgpKSk7CisjZW5kaWYgIC8vIF9fR05VQ19f
CisgIH0KKworICAvLyBUaGUgQVBJIG9mIGZpbmQoKSBoYXMgdHdvIGV4dGVuc2lvbnMuCisgIC8v
CisgIC8vIDEuIFRoZSBoYXNoIGNhbiBiZSBwYXNzZWQgYnkgdGhlIHVzZXIuIEl0IG11c3QgYmUg
ZXF1YWwgdG8gdGhlIGhhc2ggb2YgdGhlCisgIC8vIGtleS4KKyAgLy8KKyAgLy8gMi4gVGhlIHR5
cGUgb2YgdGhlIGtleSBhcmd1bWVudCBkb2Vzbid0IGhhdmUgdG8gYmUga2V5X3R5cGUuIFRoaXMg
aXMgc28KKyAgLy8gY2FsbGVkIGhldGVyb2dlbmVvdXMga2V5IHN1cHBvcnQuCisgIHRlbXBsYXRl
IDxjbGFzcyBLID0ga2V5X3R5cGU+CisgIGl0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X2FyZzxLPiYg
a2V5LCBzaXplX3QgaGFzaCkgeworICAgIGF1dG8gc2VxID0gcHJvYmUoaGFzaCk7CisgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgIEdyb3VwIGd7Y3RybF8gKyBzZXEub2Zmc2V0KCl9OworICAgICAg
Zm9yIChpbnQgaSA6IGcuTWF0Y2goSDIoaGFzaCkpKSB7CisgICAgICAgIGlmIChBQlNMX1BSRURJ
Q1RfVFJVRShQb2xpY3lUcmFpdHM6OmFwcGx5KAorICAgICAgICAgICAgICAgIEVxdWFsRWxlbWVu
dDxLPntrZXksIGVxX3JlZigpfSwKKyAgICAgICAgICAgICAgICBQb2xpY3lUcmFpdHM6OmVsZW1l
bnQoc2xvdHNfICsgc2VxLm9mZnNldChpKSkpKSkKKyAgICAgICAgICByZXR1cm4gaXRlcmF0b3Jf
YXQoc2VxLm9mZnNldChpKSk7CisgICAgICB9CisgICAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUo
Zy5NYXRjaEVtcHR5KCkpKSByZXR1cm4gZW5kKCk7CisgICAgICBzZXEubmV4dCgpOworICAgIH0K
KyAgfQorICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90eXBlPgorICBpdGVyYXRvciBmaW5kKGNv
bnN0IGtleV9hcmc8Sz4mIGtleSkgeworICAgIHJldHVybiBmaW5kKGtleSwgaGFzaF9yZWYoKShr
ZXkpKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGU+CisgIGNvbnN0X2l0
ZXJhdG9yIGZpbmQoY29uc3Qga2V5X2FyZzxLPiYga2V5LCBzaXplX3QgaGFzaCkgY29uc3Qgewor
ICAgIHJldHVybiBjb25zdF9jYXN0PHJhd19oYXNoX3NldCo+KHRoaXMpLT5maW5kKGtleSwgaGFz
aCk7CisgIH0KKyAgdGVtcGxhdGUgPGNsYXNzIEsgPSBrZXlfdHlwZT4KKyAgY29uc3RfaXRlcmF0
b3IgZmluZChjb25zdCBrZXlfYXJnPEs+JiBrZXkpIGNvbnN0IHsKKyAgICByZXR1cm4gZmluZChr
ZXksIGhhc2hfcmVmKCkoa2V5KSk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9IGtleV90
eXBlPgorICBib29sIGNvbnRhaW5zKGNvbnN0IGtleV9hcmc8Sz4mIGtleSkgY29uc3QgeworICAg
IHJldHVybiBmaW5kKGtleSkgIT0gZW5kKCk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgSyA9
IGtleV90eXBlPgorICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGl0ZXJhdG9yPiBlcXVhbF9yYW5nZShj
b25zdCBrZXlfYXJnPEs+JiBrZXkpIHsKKyAgICBhdXRvIGl0ID0gZmluZChrZXkpOworICAgIGlm
IChpdCAhPSBlbmQoKSkgcmV0dXJuIHtpdCwgc3RkOjpuZXh0KGl0KX07CisgICAgcmV0dXJuIHtp
dCwgaXR9OworICB9CisgIHRlbXBsYXRlIDxjbGFzcyBLID0ga2V5X3R5cGU+CisgIHN0ZDo6cGFp
cjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+IGVxdWFsX3JhbmdlKAorICAgICAgY29u
c3Qga2V5X2FyZzxLPiYga2V5KSBjb25zdCB7CisgICAgYXV0byBpdCA9IGZpbmQoa2V5KTsKKyAg
ICBpZiAoaXQgIT0gZW5kKCkpIHJldHVybiB7aXQsIHN0ZDo6bmV4dChpdCl9OworICAgIHJldHVy
biB7aXQsIGl0fTsKKyAgfQorCisgIHNpemVfdCBidWNrZXRfY291bnQoKSBjb25zdCB7IHJldHVy
biBjYXBhY2l0eV87IH0KKyAgZmxvYXQgbG9hZF9mYWN0b3IoKSBjb25zdCB7CisgICAgcmV0dXJu
IGNhcGFjaXR5XyA/IHN0YXRpY19jYXN0PGRvdWJsZT4oc2l6ZSgpKSAvIGNhcGFjaXR5XyA6IDAu
MDsKKyAgfQorICBmbG9hdCBtYXhfbG9hZF9mYWN0b3IoKSBjb25zdCB7IHJldHVybiAxLjBmOyB9
CisgIHZvaWQgbWF4X2xvYWRfZmFjdG9yKGZsb2F0KSB7CisgICAgLy8gRG9lcyBub3RoaW5nLgor
ICB9CisKKyAgaGFzaGVyIGhhc2hfZnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBoYXNoX3JlZigp
OyB9CisgIGtleV9lcXVhbCBrZXlfZXEoKSBjb25zdCB7IHJldHVybiBlcV9yZWYoKTsgfQorICBh
bGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gYWxsb2NfcmVmKCk7
IH0KKworICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHJhd19oYXNoX3NldCYgYSwgY29u
c3QgcmF3X2hhc2hfc2V0JiBiKSB7CisgICAgaWYgKGEuc2l6ZSgpICE9IGIuc2l6ZSgpKSByZXR1
cm4gZmFsc2U7CisgICAgY29uc3QgcmF3X2hhc2hfc2V0KiBvdXRlciA9ICZhOworICAgIGNvbnN0
IHJhd19oYXNoX3NldCogaW5uZXIgPSAmYjsKKyAgICBpZiAob3V0ZXItPmNhcGFjaXR5KCkgPiBp
bm5lci0+Y2FwYWNpdHkoKSkgc3RkOjpzd2FwKG91dGVyLCBpbm5lcik7CisgICAgZm9yIChjb25z
dCB2YWx1ZV90eXBlJiBlbGVtIDogKm91dGVyKQorICAgICAgaWYgKCFpbm5lci0+aGFzX2VsZW1l
bnQoZWxlbSkpIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGZyaWVu
ZCBib29sIG9wZXJhdG9yIT0oY29uc3QgcmF3X2hhc2hfc2V0JiBhLCBjb25zdCByYXdfaGFzaF9z
ZXQmIGIpIHsKKyAgICByZXR1cm4gIShhID09IGIpOworICB9CisKKyAgZnJpZW5kIHZvaWQgc3dh
cChyYXdfaGFzaF9zZXQmIGEsCisgICAgICAgICAgICAgICAgICAgcmF3X2hhc2hfc2V0JiBiKSBu
b2V4Y2VwdChub2V4Y2VwdChhLnN3YXAoYikpKSB7CisgICAgYS5zd2FwKGIpOworICB9CisKKyBw
cml2YXRlOgorICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSBFbmFibGVyPgor
ICBmcmllbmQgc3RydWN0IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaHRhYmxlX2RlYnVn
X2ludGVybmFsOjoKKyAgICAgIEhhc2h0YWJsZURlYnVnQWNjZXNzOworCisgIHN0cnVjdCBGaW5k
RWxlbWVudCB7CisgICAgdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzLi4uIEFyZ3M+CisgICAgY29u
c3RfaXRlcmF0b3Igb3BlcmF0b3IoKShjb25zdCBLJiBrZXksIEFyZ3MmJi4uLikgY29uc3Qgewor
ICAgICAgcmV0dXJuIHMuZmluZChrZXkpOworICAgIH0KKyAgICBjb25zdCByYXdfaGFzaF9zZXQm
IHM7CisgIH07CisKKyAgc3RydWN0IEhhc2hFbGVtZW50IHsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
SywgY2xhc3MuLi4gQXJncz4KKyAgICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBLJiBrZXksIEFy
Z3MmJi4uLikgY29uc3QgeworICAgICAgcmV0dXJuIGgoa2V5KTsKKyAgICB9CisgICAgY29uc3Qg
aGFzaGVyJiBoOworICB9OworCisgIHRlbXBsYXRlIDxjbGFzcyBLMT4KKyAgc3RydWN0IEVxdWFs
RWxlbWVudCB7CisgICAgdGVtcGxhdGUgPGNsYXNzIEsyLCBjbGFzcy4uLiBBcmdzPgorICAgIGJv
b2wgb3BlcmF0b3IoKShjb25zdCBLMiYgbGhzLCBBcmdzJiYuLi4pIGNvbnN0IHsKKyAgICAgIHJl
dHVybiBlcShsaHMsIHJocyk7CisgICAgfQorICAgIGNvbnN0IEsxJiByaHM7CisgICAgY29uc3Qg
a2V5X2VxdWFsJiBlcTsKKyAgfTsKKworICBzdHJ1Y3QgRW1wbGFjZURlY29tcG9zYWJsZSB7Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzLi4uIEFyZ3M+CisgICAgc3RkOjpwYWlyPGl0ZXJh
dG9yLCBib29sPiBvcGVyYXRvcigpKGNvbnN0IEsmIGtleSwgQXJncyYmLi4uIGFyZ3MpIGNvbnN0
IHsKKyAgICAgIGF1dG8gcmVzID0gcy5maW5kX29yX3ByZXBhcmVfaW5zZXJ0KGtleSk7CisgICAg
ICBpZiAocmVzLnNlY29uZCkgeworICAgICAgICBzLmVtcGxhY2VfYXQocmVzLmZpcnN0LCBzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgfQorICAgICAgcmV0dXJuIHtzLml0ZXJh
dG9yX2F0KHJlcy5maXJzdCksIHJlcy5zZWNvbmR9OworICAgIH0KKyAgICByYXdfaGFzaF9zZXQm
IHM7CisgIH07CisKKyAgdGVtcGxhdGUgPGJvb2wgZG9fZGVzdHJveT4KKyAgc3RydWN0IEluc2Vy
dFNsb3QgeworICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcy4uLiBBcmdzPgorICAgIHN0ZDo6
cGFpcjxpdGVyYXRvciwgYm9vbD4gb3BlcmF0b3IoKShjb25zdCBLJiBrZXksIEFyZ3MmJi4uLikg
JiYgeworICAgICAgYXV0byByZXMgPSBzLmZpbmRfb3JfcHJlcGFyZV9pbnNlcnQoa2V5KTsKKyAg
ICAgIGlmIChyZXMuc2Vjb25kKSB7CisgICAgICAgIFBvbGljeVRyYWl0czo6dHJhbnNmZXIoJnMu
YWxsb2NfcmVmKCksIHMuc2xvdHNfICsgcmVzLmZpcnN0LCAmc2xvdCk7CisgICAgICB9IGVsc2Ug
aWYgKGRvX2Rlc3Ryb3kpIHsKKyAgICAgICAgUG9saWN5VHJhaXRzOjpkZXN0cm95KCZzLmFsbG9j
X3JlZigpLCAmc2xvdCk7CisgICAgICB9CisgICAgICByZXR1cm4ge3MuaXRlcmF0b3JfYXQocmVz
LmZpcnN0KSwgcmVzLnNlY29uZH07CisgICAgfQorICAgIHJhd19oYXNoX3NldCYgczsKKyAgICAv
LyBDb25zdHJ1Y3RlZCBzbG90LiBFaXRoZXIgbW92ZWQgaW50byBwbGFjZSBvciBkZXN0cm95ZWQu
CisgICAgc2xvdF90eXBlJiYgc2xvdDsKKyAgfTsKKworICAvLyBDb21wdXRlcyBzdGQ6OmNlaWwo
biAvIGtNYXhMb2FkRmFjdG9yKS4gRmFzdGVyIHRoYW4gY2FsbGluZyBzdGQ6OmNlaWwuCisgIHN0
YXRpYyBpbmxpbmUgc2l6ZV90IE51bVNsb3RzRmFzdChzaXplX3QgbikgeworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxzaXplX3Q+KAorICAgICAgICAobiAqIGtNYXhMb2FkRmFjdG9yRGVub21pbmF0
b3IgKyAoa01heExvYWRGYWN0b3JOdW1lcmF0b3IgLSAxKSkgLworICAgICAgICBrTWF4TG9hZEZh
Y3Rvck51bWVyYXRvcik7CisgIH0KKworICAvLyAiZXJhc2VzIiB0aGUgb2JqZWN0IGZyb20gdGhl
IGNvbnRhaW5lciwgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhY3R1YWxseQorICAvLyBkZXN0cm95
IHRoZSBvYmplY3QuIEl0IG9ubHkgdXBkYXRlcyBhbGwgdGhlIG1ldGFkYXRhIG9mIHRoZSBjbGFz
cy4KKyAgLy8gVGhpcyBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIFBvbGljeTo6dHJh
bnNmZXIgdG8gbW92ZSB0aGUgb2JqZWN0IHRvCisgIC8vIGFub3RoZXIgcGxhY2UuCisgIHZvaWQg
ZXJhc2VfbWV0YV9vbmx5KGNvbnN0X2l0ZXJhdG9yIGl0KSB7CisgICAgYXNzZXJ0KElzRnVsbCgq
aXQuaW5uZXJfLmN0cmxfKSAmJiAiZXJhc2luZyBhIGRhbmdsaW5nIGl0ZXJhdG9yIik7CisgICAg
LS1zaXplXzsKKyAgICBjb25zdCBzaXplX3QgaW5kZXggPSBpdC5pbm5lcl8uY3RybF8gLSBjdHJs
XzsKKyAgICBjb25zdCBzaXplX3QgaW5kZXhfYmVmb3JlID0gKGluZGV4IC0gR3JvdXA6OmtXaWR0
aCkgJiBjYXBhY2l0eV87CisgICAgY29uc3QgYXV0byBlbXB0eV9hZnRlciA9IEdyb3VwKGl0Lmlu
bmVyXy5jdHJsXykuTWF0Y2hFbXB0eSgpOworICAgIGNvbnN0IGF1dG8gZW1wdHlfYmVmb3JlID0g
R3JvdXAoY3RybF8gKyBpbmRleF9iZWZvcmUpLk1hdGNoRW1wdHkoKTsKKworICAgIC8vIFdlIGNv
dW50IGhvdyBtYW55IGNvbnNlY3V0aXZlIG5vbiBlbXB0aWVzIHdlIGhhdmUgdG8gdGhlIHJpZ2h0
IGFuZCB0byB0aGUKKyAgICAvLyBsZWZ0IG9mIGBpdGAuIElmIHRoZSBzdW0gaXMgPj0ga1dpZHRo
IHRoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHByb2JlCisgICAgLy8gd2luZG93IHRoYXQgbWln
aHQgaGF2ZSBzZWVuIGEgZnVsbCBncm91cC4KKyAgICBib29sIHdhc19uZXZlcl9mdWxsID0KKyAg
ICAgICAgZW1wdHlfYmVmb3JlICYmIGVtcHR5X2FmdGVyICYmCisgICAgICAgIHN0YXRpY19jYXN0
PHNpemVfdD4oZW1wdHlfYWZ0ZXIuVHJhaWxpbmdaZXJvcygpICsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbXB0eV9iZWZvcmUuTGVhZGluZ1plcm9zKCkpIDwgR3JvdXA6OmtXaWR0aDsK
KworICAgIHNldF9jdHJsKGluZGV4LCB3YXNfbmV2ZXJfZnVsbCA/IGtFbXB0eSA6IGtEZWxldGVk
KTsKKyAgICBncm93dGhfbGVmdCgpICs9IHdhc19uZXZlcl9mdWxsOworICB9CisKKyAgdm9pZCBp
bml0aWFsaXplX3Nsb3RzKCkgeworICAgIGFzc2VydChjYXBhY2l0eV8pOworICAgIGF1dG8gbGF5
b3V0ID0gTWFrZUxheW91dChjYXBhY2l0eV8pOworICAgIGNoYXIqIG1lbSA9IHN0YXRpY19jYXN0
PGNoYXIqPigKKyAgICAgICAgQWxsb2NhdGU8TGF5b3V0OjpBbGlnbm1lbnQoKT4oJmFsbG9jX3Jl
ZigpLCBsYXlvdXQuQWxsb2NTaXplKCkpKTsKKyAgICBjdHJsXyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y3RybF90Kj4obGF5b3V0LnRlbXBsYXRlIFBvaW50ZXI8MD4obWVtKSk7CisgICAgc2xvdHNfID0g
bGF5b3V0LnRlbXBsYXRlIFBvaW50ZXI8MT4obWVtKTsKKyAgICByZXNldF9jdHJsKCk7CisgICAg
Z3Jvd3RoX2xlZnQoKSA9IHN0YXRpY19jYXN0PHNpemVfdD4oY2FwYWNpdHlfICoga01heExvYWRG
YWN0b3IpIC0gc2l6ZV87CisgIH0KKworICB2b2lkIGRlc3Ryb3lfc2xvdHMoKSB7CisgICAgaWYg
KCFjYXBhY2l0eV8pIHJldHVybjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjYXBhY2l0
eV87ICsraSkgeworICAgICAgaWYgKElzRnVsbChjdHJsX1tpXSkpIHsKKyAgICAgICAgUG9saWN5
VHJhaXRzOjpkZXN0cm95KCZhbGxvY19yZWYoKSwgc2xvdHNfICsgaSk7CisgICAgICB9CisgICAg
fQorICAgIGF1dG8gbGF5b3V0ID0gTWFrZUxheW91dChjYXBhY2l0eV8pOworICAgIC8vIFVucG9p
c29uIGJlZm9yZSByZXR1cm5pbmcgdGhlIG1lbW9yeSB0byB0aGUgYWxsb2NhdG9yLgorICAgIFNh
bml0aXplclVucG9pc29uTWVtb3J5UmVnaW9uKHNsb3RzXywgc2l6ZW9mKHNsb3RfdHlwZSkgKiBj
YXBhY2l0eV8pOworICAgIERlYWxsb2NhdGU8TGF5b3V0OjpBbGlnbm1lbnQoKT4oJmFsbG9jX3Jl
ZigpLCBjdHJsXywgbGF5b3V0LkFsbG9jU2l6ZSgpKTsKKyAgICBjdHJsXyA9IEVtcHR5R3JvdXAo
KTsKKyAgICBzbG90c18gPSBudWxscHRyOworICAgIHNpemVfID0gMDsKKyAgICBjYXBhY2l0eV8g
PSAwOworICAgIGdyb3d0aF9sZWZ0KCkgPSAwOworICB9CisKKyAgdm9pZCByZXNpemUoc2l6ZV90
IG5ld19jYXBhY2l0eSkgeworICAgIGFzc2VydChJc1ZhbGlkQ2FwYWNpdHkobmV3X2NhcGFjaXR5
KSk7CisgICAgYXV0byogb2xkX2N0cmwgPSBjdHJsXzsKKyAgICBhdXRvKiBvbGRfc2xvdHMgPSBz
bG90c187CisgICAgY29uc3Qgc2l6ZV90IG9sZF9jYXBhY2l0eSA9IGNhcGFjaXR5XzsKKyAgICBj
YXBhY2l0eV8gPSBuZXdfY2FwYWNpdHk7CisgICAgaW5pdGlhbGl6ZV9zbG90cygpOworCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgIT0gb2xkX2NhcGFjaXR5OyArK2kpIHsKKyAgICAgIGlmIChJ
c0Z1bGwob2xkX2N0cmxbaV0pKSB7CisgICAgICAgIHNpemVfdCBoYXNoID0gUG9saWN5VHJhaXRz
OjphcHBseShIYXNoRWxlbWVudHtoYXNoX3JlZigpfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBvbGljeVRyYWl0czo6ZWxlbWVudChvbGRfc2xvdHMgKyBpKSk7
CisgICAgICAgIHNpemVfdCBuZXdfaSA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAg
ICAgIHNldF9jdHJsKG5ld19pLCBIMihoYXNoKSk7CisgICAgICAgIFBvbGljeVRyYWl0czo6dHJh
bnNmZXIoJmFsbG9jX3JlZigpLCBzbG90c18gKyBuZXdfaSwgb2xkX3Nsb3RzICsgaSk7CisgICAg
ICB9CisgICAgfQorICAgIGlmIChvbGRfY2FwYWNpdHkpIHsKKyAgICAgIFNhbml0aXplclVucG9p
c29uTWVtb3J5UmVnaW9uKG9sZF9zbG90cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVvZihzbG90X3R5cGUpICogb2xkX2NhcGFjaXR5KTsKKyAgICAgIGF1dG8gbGF5
b3V0ID0gTWFrZUxheW91dChvbGRfY2FwYWNpdHkpOworICAgICAgRGVhbGxvY2F0ZTxMYXlvdXQ6
OkFsaWdubWVudCgpPigmYWxsb2NfcmVmKCksIG9sZF9jdHJsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsYXlvdXQuQWxsb2NTaXplKCkpOworICAgIH0KKyAgfQorCisg
IHZvaWQgZHJvcF9kZWxldGVzX3dpdGhvdXRfcmVzaXplKCkgQUJTTF9BVFRSSUJVVEVfTk9JTkxJ
TkUgeworICAgIGFzc2VydChJc1ZhbGlkQ2FwYWNpdHkoY2FwYWNpdHlfKSk7CisgICAgLy8gQWxn
b3JpdGhtOgorICAgIC8vIC0gbWFyayBhbGwgREVMRVRFRCBzbG90cyBhcyBFTVBUWQorICAgIC8v
IC0gbWFyayBhbGwgRlVMTCBzbG90cyBhcyBERUxFVEVECisgICAgLy8gLSBmb3IgZWFjaCBzbG90
IG1hcmtlZCBhcyBERUxFVEVECisgICAgLy8gICAgIGhhc2ggPSBIYXNoKGVsZW1lbnQpCisgICAg
Ly8gICAgIHRhcmdldCA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCkKKyAgICAvLyAgICAgaWYg
dGFyZ2V0IGlzIGluIHRoZSBzYW1lIGdyb3VwCisgICAgLy8gICAgICAgbWFyayBzbG90IGFzIEZV
TEwKKyAgICAvLyAgICAgZWxzZSBpZiB0YXJnZXQgaXMgRU1QVFkKKyAgICAvLyAgICAgICB0cmFu
c2ZlciBlbGVtZW50IHRvIHRhcmdldAorICAgIC8vICAgICAgIG1hcmsgc2xvdCBhcyBFTVBUWQor
ICAgIC8vICAgICAgIG1hcmsgdGFyZ2V0IGFzIEZVTEwKKyAgICAvLyAgICAgZWxzZSBpZiB0YXJn
ZXQgaXMgREVMRVRFRAorICAgIC8vICAgICAgIHN3YXAgY3VycmVudCBlbGVtZW50IHdpdGggdGFy
Z2V0IGVsZW1lbnQKKyAgICAvLyAgICAgICBtYXJrIHRhcmdldCBhcyBGVUxMCisgICAgLy8gICAg
ICAgcmVwZWF0IHByb2NlZHVyZSBmb3IgY3VycmVudCBzbG90IHdpdGggbW92ZWQgZnJvbSBlbGVt
ZW50ICh0YXJnZXQpCisgICAgQ29udmVydERlbGV0ZWRUb0VtcHR5QW5kRnVsbFRvRGVsZXRlZChj
dHJsXywgY2FwYWNpdHlfKTsKKyAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXpl
b2Yoc2xvdF90eXBlKSwgYWxpZ25vZihzbG90X3R5cGUpPjo6dHlwZQorICAgICAgICByYXc7Cisg
ICAgc2xvdF90eXBlKiBzbG90ID0gcmVpbnRlcnByZXRfY2FzdDxzbG90X3R5cGUqPigmcmF3KTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjYXBhY2l0eV87ICsraSkgeworICAgICAgaWYg
KCFJc0RlbGV0ZWQoY3RybF9baV0pKSBjb250aW51ZTsKKyAgICAgIHNpemVfdCBoYXNoID0gUG9s
aWN5VHJhaXRzOjphcHBseShIYXNoRWxlbWVudHtoYXNoX3JlZigpfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xpY3lUcmFpdHM6OmVsZW1lbnQoc2xvdHNfICsg
aSkpOworICAgICAgc2l6ZV90IG5ld19pID0gZmluZF9maXJzdF9ub25fZnVsbChoYXNoKTsKKwor
ICAgICAgLy8gVmVyaWZ5IGlmIHRoZSBvbGQgYW5kIG5ldyBpIGZhbGwgd2l0aGluIHRoZSBzYW1l
IGdyb3VwIHdydCB0aGUgaGFzaC4KKyAgICAgIC8vIElmIHRoZXkgZG8sIHdlIGRvbid0IG5lZWQg
dG8gbW92ZSB0aGUgb2JqZWN0IGFzIGl0IGZhbGxzIGFscmVhZHkgaW4gdGhlCisgICAgICAvLyBi
ZXN0IHByb2JlIHdlIGNhbi4KKyAgICAgIGNvbnN0IGF1dG8gcHJvYmVfaW5kZXggPSBbJl0oc2l6
ZV90IHBvcykgeworICAgICAgICByZXR1cm4gKChwb3MgLSBwcm9iZShoYXNoKS5vZmZzZXQoKSkg
JiBjYXBhY2l0eV8pIC8gR3JvdXA6OmtXaWR0aDsKKyAgICAgIH07CisKKyAgICAgIC8vIEVsZW1l
bnQgZG9lc24ndCBtb3ZlLgorICAgICAgaWYgKEFCU0xfUFJFRElDVF9UUlVFKHByb2JlX2luZGV4
KG5ld19pKSA9PSBwcm9iZV9pbmRleChpKSkpIHsKKyAgICAgICAgc2V0X2N0cmwoaSwgSDIoaGFz
aCkpOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGlmIChJc0VtcHR5KGN0cmxf
W25ld19pXSkpIHsKKyAgICAgICAgLy8gVHJhbnNmZXIgZWxlbWVudCB0byB0aGUgZW1wdHkgc3Bv
dC4KKyAgICAgICAgLy8gc2V0X2N0cmwgcG9pc29ucy91bnBvaXNvbnMgdGhlIHNsb3RzIHNvIHdl
IGhhdmUgdG8gY2FsbCBpdCBhdCB0aGUKKyAgICAgICAgLy8gcmlnaHQgdGltZS4KKyAgICAgICAg
c2V0X2N0cmwobmV3X2ksIEgyKGhhc2gpKTsKKyAgICAgICAgUG9saWN5VHJhaXRzOjp0cmFuc2Zl
cigmYWxsb2NfcmVmKCksIHNsb3RzXyArIG5ld19pLCBzbG90c18gKyBpKTsKKyAgICAgICAgc2V0
X2N0cmwoaSwga0VtcHR5KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGFzc2VydChJc0RlbGV0
ZWQoY3RybF9bbmV3X2ldKSk7CisgICAgICAgIHNldF9jdHJsKG5ld19pLCBIMihoYXNoKSk7Cisg
ICAgICAgIC8vIFVudGlsIHdlIGFyZSBkb25lIHJlaGFzaGluZywgREVMRVRFRCBtYXJrcyBwcmV2
aW91c2x5IEZVTEwgc2xvdHMuCisgICAgICAgIC8vIFN3YXAgaSBhbmQgbmV3X2kgZWxlbWVudHMu
CisgICAgICAgIFBvbGljeVRyYWl0czo6dHJhbnNmZXIoJmFsbG9jX3JlZigpLCBzbG90LCBzbG90
c18gKyBpKTsKKyAgICAgICAgUG9saWN5VHJhaXRzOjp0cmFuc2ZlcigmYWxsb2NfcmVmKCksIHNs
b3RzXyArIGksIHNsb3RzXyArIG5ld19pKTsKKyAgICAgICAgUG9saWN5VHJhaXRzOjp0cmFuc2Zl
cigmYWxsb2NfcmVmKCksIHNsb3RzXyArIG5ld19pLCBzbG90KTsKKyAgICAgICAgLS1pOyAgLy8g
cmVwZWF0CisgICAgICB9CisgICAgfQorICAgIGdyb3d0aF9sZWZ0KCkgPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KGNhcGFjaXR5XyAqIGtNYXhMb2FkRmFjdG9yKSAtIHNpemVfOworICB9CisKKyAgdm9p
ZCByZWhhc2hfYW5kX2dyb3dfaWZfbmVjZXNzYXJ5KCkgeworICAgIGlmIChjYXBhY2l0eV8gPT0g
MCkgeworICAgICAgcmVzaXplKEdyb3VwOjprV2lkdGggLSAxKTsKKyAgICB9IGVsc2UgaWYgKHNp
emUoKSA8PSBrTWF4TG9hZEZhY3RvciAvIDIgKiBjYXBhY2l0eV8pIHsKKyAgICAgIC8vIFNxdWFz
aCBERUxFVEVEIHdpdGhvdXQgZ3Jvd2luZyBpZiB0aGVyZSBpcyBlbm91Z2ggY2FwYWNpdHkuCisg
ICAgICBkcm9wX2RlbGV0ZXNfd2l0aG91dF9yZXNpemUoKTsKKyAgICB9IGVsc2UgeworICAgICAg
Ly8gT3RoZXJ3aXNlIGdyb3cgdGhlIGNvbnRhaW5lci4KKyAgICAgIHJlc2l6ZShjYXBhY2l0eV8g
KiAyICsgMSk7CisgICAgfQorICB9CisKKyAgYm9vbCBoYXNfZWxlbWVudChjb25zdCB2YWx1ZV90
eXBlJiBlbGVtKSBjb25zdCB7CisgICAgc2l6ZV90IGhhc2ggPSBQb2xpY3lUcmFpdHM6OmFwcGx5
KEhhc2hFbGVtZW50e2hhc2hfcmVmKCl9LCBlbGVtKTsKKyAgICBhdXRvIHNlcSA9IHByb2JlKGhh
c2gpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBHcm91cCBne2N0cmxfICsgc2VxLm9mZnNl
dCgpfTsKKyAgICAgIGZvciAoaW50IGkgOiBnLk1hdGNoKEgyKGhhc2gpKSkgeworICAgICAgICBp
ZiAoQUJTTF9QUkVESUNUX1RSVUUoUG9saWN5VHJhaXRzOjplbGVtZW50KHNsb3RzXyArIHNlcS5v
ZmZzZXQoaSkpID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtKSkKKyAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChBQlNMX1BSRURJQ1RfVFJVRShn
Lk1hdGNoRW1wdHkoKSkpIHJldHVybiBmYWxzZTsKKyAgICAgIHNlcS5uZXh0KCk7CisgICAgICBh
c3NlcnQoc2VxLmluZGV4KCkgPCBjYXBhY2l0eV8gJiYgImZ1bGwgdGFibGUhIik7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIC8vIFByb2JlcyB0aGUgcmF3X2hhc2hfc2V0IHdp
dGggdGhlIHByb2JlIHNlcXVlbmNlIGZvciBoYXNoIGFuZCByZXR1cm5zIHRoZQorICAvLyBwb2lu
dGVyIHRvIHRoZSBmaXJzdCBlbXB0eSBvciBkZWxldGVkIHNsb3QuCisgIC8vIE5PVEU6IHRoaXMg
ZnVuY3Rpb24gbXVzdCB3b3JrIHdpdGggdGFibGVzIGhhdmluZyBib3RoIGtFbXB0eSBhbmQga0Rl
bGV0ZQorICAvLyBpbiBvbmUgZ3JvdXAuIFN1Y2ggdGFibGVzIGFwcGVhcnMgZHVyaW5nIGRyb3Bf
ZGVsZXRlc193aXRob3V0X3Jlc2l6ZS4KKyAgLy8KKyAgLy8gVGhpcyBmdW5jdGlvbiBpcyB2ZXJ5
IHVzZWZ1bCB3aGVuIGluc2VydGlvbnMgaGFwcGVuIGFuZDoKKyAgLy8gLSB0aGUgaW5wdXQgaXMg
YWxyZWFkeSBhIHNldAorICAvLyAtIHRoZXJlIGFyZSBlbm91Z2ggc2xvdHMKKyAgLy8gLSB0aGUg
ZWxlbWVudCB3aXRoIHRoZSBoYXNoIGlzIG5vdCBpbiB0aGUgdGFibGUKKyAgc2l6ZV90IGZpbmRf
Zmlyc3Rfbm9uX2Z1bGwoc2l6ZV90IGhhc2gpIHsKKyAgICBhdXRvIHNlcSA9IHByb2JlKGhhc2gp
OworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBHcm91cCBne2N0cmxfICsgc2VxLm9mZnNldCgp
fTsKKyAgICAgIGF1dG8gbWFzayA9IGcuTWF0Y2hFbXB0eU9yRGVsZXRlZCgpOworICAgICAgaWYg
KG1hc2spIHsKKyNpZiAhZGVmaW5lZChOREVCVUcpCisgICAgICAgIC8vIFdlIHdhbnQgdG8gZm9y
Y2Ugc21hbGwgdGFibGVzIHRvIGhhdmUgcmFuZG9tIGVudHJpZXMgdG9vLCBzbworICAgICAgICAv
LyBpbiBkZWJ1ZyBidWlsZCB3ZSB3aWxsIHJhbmRvbWx5IGluc2VydCBpbiBlaXRoZXIgdGhlIGZy
b250IG9yIGJhY2sgb2YKKyAgICAgICAgLy8gdGhlIGdyb3VwLgorICAgICAgICAvLyBUT0RPKGtm
bSxzYmVuemEpOiByZXZpc2l0IGFmdGVyIHdlIGRvIHVuY29uZGl0aW9uYWwgbWl4aW5nCisgICAg
ICAgIGlmIChTaG91bGRJbnNlcnRCYWNrd2FyZHMoaGFzaCwgY3RybF8pKQorICAgICAgICAgIHJl
dHVybiBzZXEub2Zmc2V0KG1hc2suSGlnaGVzdEJpdFNldCgpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgIHJldHVybiBzZXEub2Zmc2V0KG1hc2suTG93ZXN0Qml0U2V0KCkpOworI2Vsc2UKKyAg
ICAgICAgcmV0dXJuIHNlcS5vZmZzZXQobWFzay5Mb3dlc3RCaXRTZXQoKSk7CisjZW5kaWYKKyAg
ICAgIH0KKyAgICAgIGFzc2VydChzZXEuaW5kZXgoKSA8IGNhcGFjaXR5XyAmJiAiZnVsbCB0YWJs
ZSEiKTsKKyAgICAgIHNlcS5uZXh0KCk7CisgICAgfQorICB9CisKKyAgLy8gVE9ETyhhbGtpcyk6
IE9wdGltaXplIHRoaXMgYXNzdW1pbmcgKnRoaXMgYW5kIHRoYXQgZG9uJ3Qgb3ZlcmxhcC4KKyAg
cmF3X2hhc2hfc2V0JiBtb3ZlX2Fzc2lnbihyYXdfaGFzaF9zZXQmJiB0aGF0LCBzdGQ6OnRydWVf
dHlwZSkgeworICAgIHJhd19oYXNoX3NldCB0bXAoc3RkOjptb3ZlKHRoYXQpKTsKKyAgICBzd2Fw
KHRtcCk7CisgICAgcmV0dXJuICp0aGlzOworICB9CisgIHJhd19oYXNoX3NldCYgbW92ZV9hc3Np
Z24ocmF3X2hhc2hfc2V0JiYgdGhhdCwgc3RkOjpmYWxzZV90eXBlKSB7CisgICAgcmF3X2hhc2hf
c2V0IHRtcChzdGQ6Om1vdmUodGhhdCksIGFsbG9jX3JlZigpKTsKKyAgICBzd2FwKHRtcCk7Cisg
ICAgcmV0dXJuICp0aGlzOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIHRlbXBsYXRlIDxjbGFzcyBL
PgorICBzdGQ6OnBhaXI8c2l6ZV90LCBib29sPiBmaW5kX29yX3ByZXBhcmVfaW5zZXJ0KGNvbnN0
IEsmIGtleSkgeworICAgIGF1dG8gaGFzaCA9IGhhc2hfcmVmKCkoa2V5KTsKKyAgICBhdXRvIHNl
cSA9IHByb2JlKGhhc2gpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBHcm91cCBne2N0cmxf
ICsgc2VxLm9mZnNldCgpfTsKKyAgICAgIGZvciAoaW50IGkgOiBnLk1hdGNoKEgyKGhhc2gpKSkg
eworICAgICAgICBpZiAoQUJTTF9QUkVESUNUX1RSVUUoUG9saWN5VHJhaXRzOjphcHBseSgKKyAg
ICAgICAgICAgICAgICBFcXVhbEVsZW1lbnQ8Sz57a2V5LCBlcV9yZWYoKX0sCisgICAgICAgICAg
ICAgICAgUG9saWN5VHJhaXRzOjplbGVtZW50KHNsb3RzXyArIHNlcS5vZmZzZXQoaSkpKSkpCisg
ICAgICAgICAgcmV0dXJuIHtzZXEub2Zmc2V0KGkpLCBmYWxzZX07CisgICAgICB9CisgICAgICBp
ZiAoQUJTTF9QUkVESUNUX1RSVUUoZy5NYXRjaEVtcHR5KCkpKSBicmVhazsKKyAgICAgIHNlcS5u
ZXh0KCk7CisgICAgfQorICAgIHJldHVybiB7cHJlcGFyZV9pbnNlcnQoaGFzaCksIHRydWV9Owor
ICB9CisKKyAgc2l6ZV90IHByZXBhcmVfaW5zZXJ0KHNpemVfdCBoYXNoKSBBQlNMX0FUVFJJQlVU
RV9OT0lOTElORSB7CisgICAgc2l6ZV90IHRhcmdldCA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFz
aCk7CisgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShncm93dGhfbGVmdCgpID09IDAgJiYgIUlz
RGVsZXRlZChjdHJsX1t0YXJnZXRdKSkpIHsKKyAgICAgIHJlaGFzaF9hbmRfZ3Jvd19pZl9uZWNl
c3NhcnkoKTsKKyAgICAgIHRhcmdldCA9IGZpbmRfZmlyc3Rfbm9uX2Z1bGwoaGFzaCk7CisgICAg
fQorICAgICsrc2l6ZV87CisgICAgZ3Jvd3RoX2xlZnQoKSAtPSBJc0VtcHR5KGN0cmxfW3Rhcmdl
dF0pOworICAgIHNldF9jdHJsKHRhcmdldCwgSDIoaGFzaCkpOworICAgIHJldHVybiB0YXJnZXQ7
CisgIH0KKworICAvLyBDb25zdHJ1Y3RzIHRoZSB2YWx1ZSBpbiB0aGUgc3BhY2UgcG9pbnRlZCBi
eSB0aGUgaXRlcmF0b3IuIFRoaXMgb25seSB3b3JrcworICAvLyBhZnRlciBhbiB1bnN1Y2Nlc3Nm
dWwgZmluZF9vcl9wcmVwYXJlX2luc2VydCgpIGFuZCBiZWZvcmUgYW55IG90aGVyCisgIC8vIG1v
ZGlmaWNhdGlvbnMgaGFwcGVuIGluIHRoZSByYXdfaGFzaF9zZXQuCisgIC8vCisgIC8vIFBSRUNP
TkRJVElPTjogaSBpcyBhbiBpbmRleCByZXR1cm5lZCBmcm9tIGZpbmRfb3JfcHJlcGFyZV9pbnNl
cnQoayksIHdoZXJlCisgIC8vIGsgaXMgdGhlIGtleSBkZWNvbXBvc2VkIGZyb20gYGZvcndhcmQ8
QXJncz4oYXJncykuLi5gLCBhbmQgdGhlIGJvb2wKKyAgLy8gcmV0dXJuZWQgYnkgZmluZF9vcl9w
cmVwYXJlX2luc2VydChrKSB3YXMgdHJ1ZS4KKyAgLy8gUE9TVENPTkRJVElPTjogKm0uaXRlcmF0
b3JfYXQoaSkgPT0gdmFsdWVfdHlwZShmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKS4KKyAgdGVtcGxh
dGUgPGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQgZW1wbGFjZV9hdChzaXplX3QgaSwgQXJncyYmLi4u
IGFyZ3MpIHsKKyAgICBQb2xpY3lUcmFpdHM6OmNvbnN0cnVjdCgmYWxsb2NfcmVmKCksIHNsb3Rz
XyArIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKKworICAgIGFzc2VydChQb2xpY3lUcmFpdHM6OmFwcGx5KEZpbmRFbGVtZW50eyp0
aGlzfSwgKml0ZXJhdG9yX2F0KGkpKSA9PQorICAgICAgICAgICAgICAgaXRlcmF0b3JfYXQoaSkg
JiYKKyAgICAgICAgICAgImNvbnN0cnVjdGVkIHZhbHVlIGRvZXMgbm90IG1hdGNoIHRoZSBsb29r
dXAga2V5Iik7CisgIH0KKworICBpdGVyYXRvciBpdGVyYXRvcl9hdChzaXplX3QgaSkgeyByZXR1
cm4ge2N0cmxfICsgaSwgc2xvdHNfICsgaX07IH0KKyAgY29uc3RfaXRlcmF0b3IgaXRlcmF0b3Jf
YXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIHtjdHJsXyArIGksIHNsb3RzXyArIGl9OyB9CisK
KyBwcml2YXRlOgorICBmcmllbmQgc3RydWN0IFJhd0hhc2hTZXRUZXN0T25seUFjY2VzczsKKwor
ICBwcm9iZV9zZXE8R3JvdXA6OmtXaWR0aD4gcHJvYmUoc2l6ZV90IGhhc2gpIGNvbnN0IHsKKyAg
ICByZXR1cm4gcHJvYmVfc2VxPEdyb3VwOjprV2lkdGg+KEgxKGhhc2gsIGN0cmxfKSwgY2FwYWNp
dHlfKTsKKyAgfQorCisgIC8vIFJlc2V0IGFsbCBjdHJsIGJ5dGVzIGJhY2sgdG8ga0VtcHR5LCBl
eGNlcHQgdGhlIHNlbnRpbmVsLgorICB2b2lkIHJlc2V0X2N0cmwoKSB7CisgICAgc3RkOjptZW1z
ZXQoY3RybF8sIGtFbXB0eSwgY2FwYWNpdHlfICsgR3JvdXA6OmtXaWR0aCk7CisgICAgY3RybF9b
Y2FwYWNpdHlfXSA9IGtTZW50aW5lbDsKKyAgICBTYW5pdGl6ZXJQb2lzb25NZW1vcnlSZWdpb24o
c2xvdHNfLCBzaXplb2Yoc2xvdF90eXBlKSAqIGNhcGFjaXR5Xyk7CisgIH0KKworICAvLyBTZXRz
IHRoZSBjb250cm9sIGJ5dGUsIGFuZCBpZiBgaSA8IEdyb3VwOjprV2lkdGhgLCBzZXQgdGhlIGNs
b25lZCBieXRlIGF0CisgIC8vIHRoZSBlbmQgdG9vLgorICB2b2lkIHNldF9jdHJsKHNpemVfdCBp
LCBjdHJsX3QgaCkgeworICAgIGFzc2VydChpIDwgY2FwYWNpdHlfKTsKKworICAgIGlmIChJc0Z1
bGwoaCkpIHsKKyAgICAgIFNhbml0aXplclVucG9pc29uT2JqZWN0KHNsb3RzXyArIGkpOworICAg
IH0gZWxzZSB7CisgICAgICBTYW5pdGl6ZXJQb2lzb25PYmplY3Qoc2xvdHNfICsgaSk7CisgICAg
fQorCisgICAgY3RybF9baV0gPSBoOworICAgIGN0cmxfWygoaSAtIEdyb3VwOjprV2lkdGgpICYg
Y2FwYWNpdHlfKSArIEdyb3VwOjprV2lkdGhdID0gaDsKKyAgfQorCisgIHNpemVfdCYgZ3Jvd3Ro
X2xlZnQoKSB7IHJldHVybiBzZXR0aW5nc18udGVtcGxhdGUgZ2V0PDA+KCk7IH0KKworICBoYXNo
ZXImIGhhc2hfcmVmKCkgeyByZXR1cm4gc2V0dGluZ3NfLnRlbXBsYXRlIGdldDwxPigpOyB9Cisg
IGNvbnN0IGhhc2hlciYgaGFzaF9yZWYoKSBjb25zdCB7IHJldHVybiBzZXR0aW5nc18udGVtcGxh
dGUgZ2V0PDE+KCk7IH0KKyAga2V5X2VxdWFsJiBlcV9yZWYoKSB7IHJldHVybiBzZXR0aW5nc18u
dGVtcGxhdGUgZ2V0PDI+KCk7IH0KKyAgY29uc3Qga2V5X2VxdWFsJiBlcV9yZWYoKSBjb25zdCB7
IHJldHVybiBzZXR0aW5nc18udGVtcGxhdGUgZ2V0PDI+KCk7IH0KKyAgYWxsb2NhdG9yX3R5cGUm
IGFsbG9jX3JlZigpIHsgcmV0dXJuIHNldHRpbmdzXy50ZW1wbGF0ZSBnZXQ8Mz4oKTsgfQorICBj
b25zdCBhbGxvY2F0b3JfdHlwZSYgYWxsb2NfcmVmKCkgY29uc3QgeworICAgIHJldHVybiBzZXR0
aW5nc18udGVtcGxhdGUgZ2V0PDM+KCk7CisgIH0KKworICAvLyBPbiBhdmVyYWdlIGVhY2ggZ3Jv
dXAgaGFzIDIgZW1wdHkgc2xvdCAoZm9yIHRoZSB2ZWN0b3JpemVkIGNhc2UpLgorICBzdGF0aWMg
Y29uc3RleHByIGludDY0X3Qga01heExvYWRGYWN0b3JOdW1lcmF0b3IgPSAxNDsKKyAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQ2NF90IGtNYXhMb2FkRmFjdG9yRGVub21pbmF0b3IgPSAxNjsKKyAgc3Rh
dGljIGNvbnN0ZXhwciBmbG9hdCBrTWF4TG9hZEZhY3RvciA9CisgICAgICAxLjAgKiBrTWF4TG9h
ZEZhY3Rvck51bWVyYXRvciAvIGtNYXhMb2FkRmFjdG9yRGVub21pbmF0b3I7CisKKyAgLy8gVE9E
TyhhbGtpcyk6IEludmVzdGlnYXRlIHJlbW92aW5nIHNvbWUgb2YgdGhlc2UgZmllbGRzOgorICAv
LyAtIGN0cmwvc2xvdHMgY2FuIGJlIGRlcml2ZWQgZnJvbSBlYWNoIG90aGVyCisgIC8vIC0gc2l6
ZSBjYW4gYmUgbW92ZWQgaW50byB0aGUgc2xvdCBhcnJheQorICBjdHJsX3QqIGN0cmxfID0gRW1w
dHlHcm91cCgpOyAgICAvLyBbKGNhcGFjaXR5ICsgMSkgKiBjdHJsX3RdCisgIHNsb3RfdHlwZSog
c2xvdHNfID0gbnVsbHB0cjsgICAgIC8vIFtjYXBhY2l0eSAqIHNsb3RfdHlwZV0KKyAgc2l6ZV90
IHNpemVfID0gMDsgICAgICAgICAgICAgICAgLy8gbnVtYmVyIG9mIGZ1bGwgc2xvdHMKKyAgc2l6
ZV90IGNhcGFjaXR5XyA9IDA7ICAgICAgICAgICAgLy8gdG90YWwgbnVtYmVyIG9mIHNsb3RzCisg
IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6Q29tcHJlc3NlZFR1cGxlPHNpemVfdCAvKiBncm93
dGhfbGVmdCAqLywgaGFzaGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrZXlfZXF1YWwsIGFsbG9jYXRvcl90eXBlPgorICAgICAgc2V0dGluZ3NfezAsIGhh
c2hlcnt9LCBrZXlfZXF1YWx7fSwgYWxsb2NhdG9yX3R5cGV7fX07Cit9OworCituYW1lc3BhY2Ug
aGFzaHRhYmxlX2RlYnVnX2ludGVybmFsIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBTZXQ+CitzdHJ1
Y3QgSGFzaHRhYmxlRGVidWdBY2Nlc3M8U2V0LCBhYnNsOjp2b2lkX3Q8dHlwZW5hbWUgU2V0Ojpy
YXdfaGFzaF9zZXQ+PiB7CisgIHVzaW5nIFRyYWl0cyA9IHR5cGVuYW1lIFNldDo6UG9saWN5VHJh
aXRzOworICB1c2luZyBTbG90ID0gdHlwZW5hbWUgVHJhaXRzOjpzbG90X3R5cGU7CisKKyAgc3Rh
dGljIHNpemVfdCBHZXROdW1Qcm9iZXMoY29uc3QgU2V0JiBzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIFNldDo6a2V5X3R5cGUmIGtleSkgeworICAgIHNp
emVfdCBudW1fcHJvYmVzID0gMDsKKyAgICBzaXplX3QgaGFzaCA9IHNldC5oYXNoX3JlZigpKGtl
eSk7CisgICAgYXV0byBzZXEgPSBzZXQucHJvYmUoaGFzaCk7CisgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgIGNvbnRhaW5lcl9pbnRlcm5hbDo6R3JvdXAgZ3tzZXQuY3RybF8gKyBzZXEub2Zmc2V0
KCl9OworICAgICAgZm9yIChpbnQgaSA6IGcuTWF0Y2goY29udGFpbmVyX2ludGVybmFsOjpIMiho
YXNoKSkpIHsKKyAgICAgICAgaWYgKFRyYWl0czo6YXBwbHkoCisgICAgICAgICAgICAgICAgdHlw
ZW5hbWUgU2V0Ojp0ZW1wbGF0ZSBFcXVhbEVsZW1lbnQ8dHlwZW5hbWUgU2V0OjprZXlfdHlwZT57
CisgICAgICAgICAgICAgICAgICAgIGtleSwgc2V0LmVxX3JlZigpfSwKKyAgICAgICAgICAgICAg
ICBUcmFpdHM6OmVsZW1lbnQoc2V0LnNsb3RzXyArIHNlcS5vZmZzZXQoaSkpKSkKKyAgICAgICAg
ICByZXR1cm4gbnVtX3Byb2JlczsKKyAgICAgICAgKytudW1fcHJvYmVzOworICAgICAgfQorICAg
ICAgaWYgKGcuTWF0Y2hFbXB0eSgpKSByZXR1cm4gbnVtX3Byb2JlczsKKyAgICAgIHNlcS5uZXh0
KCk7CisgICAgICArK251bV9wcm9iZXM7CisgICAgfQorICB9CisKKyAgc3RhdGljIHNpemVfdCBB
bGxvY2F0ZWRCeXRlU2l6ZShjb25zdCBTZXQmIGMpIHsKKyAgICBzaXplX3QgY2FwYWNpdHkgPSBj
LmNhcGFjaXR5XzsKKyAgICBpZiAoY2FwYWNpdHkgPT0gMCkgcmV0dXJuIDA7CisgICAgYXV0byBs
YXlvdXQgPSBTZXQ6Ok1ha2VMYXlvdXQoY2FwYWNpdHkpOworICAgIHNpemVfdCBtID0gbGF5b3V0
LkFsbG9jU2l6ZSgpOworCisgICAgc2l6ZV90IHBlcl9zbG90ID0gVHJhaXRzOjpzcGFjZV91c2Vk
KHN0YXRpY19jYXN0PGNvbnN0IFNsb3QqPihudWxscHRyKSk7CisgICAgaWYgKHBlcl9zbG90ICE9
IH5zaXplX3R7fSkgeworICAgICAgbSArPSBwZXJfc2xvdCAqIGMuc2l6ZSgpOworICAgIH0gZWxz
ZSB7CisgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjYXBhY2l0eTsgKytpKSB7CisgICAg
ICAgIGlmIChjb250YWluZXJfaW50ZXJuYWw6OklzRnVsbChjLmN0cmxfW2ldKSkgeworICAgICAg
ICAgIG0gKz0gVHJhaXRzOjpzcGFjZV91c2VkKGMuc2xvdHNfICsgaSk7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG07CisgIH0KKworICBzdGF0aWMgc2l6ZV90IExvd2Vy
Qm91bmRBbGxvY2F0ZWRCeXRlU2l6ZShzaXplX3Qgc2l6ZSkgeworICAgIHNpemVfdCBjYXBhY2l0
eSA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6Tm9ybWFsaXplQ2FwYWNpdHkoCisgICAgICAgIHN0ZDo6
Y2VpbChzaXplIC8gU2V0OjprTWF4TG9hZEZhY3RvcikpOworICAgIGlmIChjYXBhY2l0eSA9PSAw
KSByZXR1cm4gMDsKKyAgICBhdXRvIGxheW91dCA9IFNldDo6TWFrZUxheW91dChjYXBhY2l0eSk7
CisgICAgc2l6ZV90IG0gPSBsYXlvdXQuQWxsb2NTaXplKCk7CisgICAgc2l6ZV90IHBlcl9zbG90
ID0gVHJhaXRzOjpzcGFjZV91c2VkKHN0YXRpY19jYXN0PGNvbnN0IFNsb3QqPihudWxscHRyKSk7
CisgICAgaWYgKHBlcl9zbG90ICE9IH5zaXplX3R7fSkgeworICAgICAgbSArPSBwZXJfc2xvdCAq
IHNpemU7CisgICAgfQorICAgIHJldHVybiBtOworICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
aGFzaHRhYmxlX2RlYnVnX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVy
bmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lO
VEVSTkFMX1JBV19IQVNIX1NFVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL3Jhd19oYXNoX3NldF9hbGxvY2F0b3JfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC9yYXdfaGFzaF9zZXRfYWxsb2NhdG9yX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkxZmE0NTBm
ZTA4YzIyM2UyMDJiNThmYzM4YTAyYjhiZjc3ODIyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXRfYWxsb2NhdG9yX3Rlc3QuY2MKQEAgLTAs
MCArMSw0MjggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNp
bmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8c2NvcGVkX2FsbG9jYXRvcj4KKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hh
c2hfc2V0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdHJhY2tlZC5oIgor
CituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVz
cGFjZSB7CisKK2VudW0gQWxsb2NTcGVjIHsKKyAga1Byb3BhZ2F0ZU9uQ29weSA9IDEsCisgIGtQ
cm9wYWdhdGVPbk1vdmUgPSAyLAorICBrUHJvcGFnYXRlT25Td2FwID0gNCwKK307CisKK3N0cnVj
dCBBbGxvY1N0YXRlIHsKKyAgc2l6ZV90IG51bV9hbGxvY3MgPSAwOworICBzdGQ6OnNldDx2b2lk
Kj4gb3duZWQ7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVCwKKyAgICAgICAgICBpbnQgU3BlYyA9
IGtQcm9wYWdhdGVPbkNvcHkgfCBrUHJvcGFnYXRlT25Nb3ZlIHwga1Byb3BhZ2F0ZU9uU3dhcD4K
K2NsYXNzIENoZWNrZWRBbGxvYyB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8Y2xhc3MsIGludD4K
KyAgZnJpZW5kIGNsYXNzIENoZWNrZWRBbGxvYzsKKworICB1c2luZyB2YWx1ZV90eXBlID0gVDsK
KworICBDaGVja2VkQWxsb2MoKSB7fQorICBleHBsaWNpdCBDaGVja2VkQWxsb2Moc2l6ZV90IGlk
KSA6IGlkXyhpZCkge30KKyAgQ2hlY2tlZEFsbG9jKGNvbnN0IENoZWNrZWRBbGxvYyYpID0gZGVm
YXVsdDsKKyAgQ2hlY2tlZEFsbG9jJiBvcGVyYXRvcj0oY29uc3QgQ2hlY2tlZEFsbG9jJikgPSBk
ZWZhdWx0OworCisgIHRlbXBsYXRlIDxjbGFzcyBVPgorICBDaGVja2VkQWxsb2MoY29uc3QgQ2hl
Y2tlZEFsbG9jPFUsIFNwZWM+JiB0aGF0KQorICAgICAgOiBpZF8odGhhdC5pZF8pLCBzdGF0ZV8o
dGhhdC5zdGF0ZV8pIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFU+CisgIHN0cnVjdCByZWJpbmQg
eworICAgIHVzaW5nIG90aGVyID0gQ2hlY2tlZEFsbG9jPFUsIFNwZWM+OworICB9OworCisgIHVz
aW5nIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50ID0KKyAgICAgIHN0ZDo6
aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKFNwZWMgJiBrUHJvcGFnYXRlT25Db3B5KSAhPSAwPjsK
KworICB1c2luZyBwcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudCA9CisgICAg
ICBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIChTcGVjICYga1Byb3BhZ2F0ZU9uTW92ZSkg
IT0gMD47CisKKyAgdXNpbmcgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwID0KKyAgICAgIHN0
ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKFNwZWMgJiBrUHJvcGFnYXRlT25Td2FwKSAhPSAw
PjsKKworICBDaGVja2VkQWxsb2Mgc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlv
bigpIGNvbnN0IHsKKyAgICBpZiAoU3BlYyAmIGtQcm9wYWdhdGVPbkNvcHkpIHJldHVybiAqdGhp
czsKKyAgICByZXR1cm4ge307CisgIH0KKworICBUKiBhbGxvY2F0ZShzaXplX3QgbikgeworICAg
IFQqIHB0ciA9IHN0ZDo6YWxsb2NhdG9yPFQ+KCkuYWxsb2NhdGUobik7CisgICAgdHJhY2tfYWxs
b2MocHRyKTsKKyAgICByZXR1cm4gcHRyOworICB9CisgIHZvaWQgZGVhbGxvY2F0ZShUKiBwdHIs
IHNpemVfdCBuKSB7CisgICAgbWVtc2V0KHB0ciwgMCwgbiAqIHNpemVvZihUKSk7ICAvLyBUaGUg
ZnJlZWQgbWVtb3J5IG11c3QgYmUgdW5wb2lzb25lZC4KKyAgICB0cmFja19kZWFsbG9jKHB0cik7
CisgICAgcmV0dXJuIHN0ZDo6YWxsb2NhdG9yPFQ+KCkuZGVhbGxvY2F0ZShwdHIsIG4pOworICB9
CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDaGVja2VkQWxsb2MmIGEsIGNvbnN0
IENoZWNrZWRBbGxvYyYgYikgeworICAgIHJldHVybiBhLmlkXyA9PSBiLmlkXzsKKyAgfQorICBm
cmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENoZWNrZWRBbGxvYyYgYSwgY29uc3QgQ2hlY2tl
ZEFsbG9jJiBiKSB7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKKyAgfQorCisgIHNpemVfdCBudW1f
YWxsb2NzKCkgY29uc3QgeyByZXR1cm4gc3RhdGVfLT5udW1fYWxsb2NzOyB9CisKKyAgdm9pZCBz
d2FwKENoZWNrZWRBbGxvYyYgdGhhdCkgeworICAgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgICBzd2Fw
KGlkXywgdGhhdC5pZF8pOworICAgIHN3YXAoc3RhdGVfLCB0aGF0LnN0YXRlXyk7CisgIH0KKwor
ICBmcmllbmQgdm9pZCBzd2FwKENoZWNrZWRBbGxvYyYgYSwgQ2hlY2tlZEFsbG9jJiBiKSB7IGEu
c3dhcChiKTsgfQorCisgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3Ry
ZWFtJiBvLCBjb25zdCBDaGVja2VkQWxsb2MmIGEpIHsKKyAgICByZXR1cm4gbyA8PCAiYWxsb2Mo
IiA8PCBhLmlkXyA8PCAiKSI7CisgIH0KKworIHByaXZhdGU6CisgIHZvaWQgdHJhY2tfYWxsb2Mo
dm9pZCogcHRyKSB7CisgICAgQWxsb2NTdGF0ZSogc3RhdGUgPSBzdGF0ZV8uZ2V0KCk7CisgICAg
KytzdGF0ZS0+bnVtX2FsbG9jczsKKyAgICBpZiAoIXN0YXRlLT5vd25lZC5pbnNlcnQocHRyKS5z
ZWNvbmQpCisgICAgICBBRERfRkFJTFVSRSgpIDw8ICp0aGlzIDw8ICIgZ290IHByZXZpb3VzbHkg
YWxsb2NhdGVkIG1lbW9yeTogIiA8PCBwdHI7CisgIH0KKyAgdm9pZCB0cmFja19kZWFsbG9jKHZv
aWQqIHB0cikgeworICAgIGlmIChzdGF0ZV8tPm93bmVkLmVyYXNlKHB0cikgIT0gMSkKKyAgICAg
IEFERF9GQUlMVVJFKCkgPDwgKnRoaXMKKyAgICAgICAgICAgICAgICAgICAgPDwgIiBkZWxldGlu
ZyBtZW1vcnkgb3duZWQgYnkgYW5vdGhlciBhbGxvY2F0b3I6ICIgPDwgcHRyOworICB9CisKKyAg
c2l6ZV90IGlkXyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKKyAgc3Rk
OjpzaGFyZWRfcHRyPEFsbG9jU3RhdGU+IHN0YXRlXyA9IHN0ZDo6bWFrZV9zaGFyZWQ8QWxsb2NT
dGF0ZT4oKTsKK307CisKK3N0cnVjdCBJZGVudGl0eSB7CisgIGludDMyX3Qgb3BlcmF0b3IoKShp
bnQzMl90IHYpIGNvbnN0IHsgcmV0dXJuIHY7IH0KK307CisKK3N0cnVjdCBQb2xpY3kgeworICB1
c2luZyBzbG90X3R5cGUgPSBUcmFja2VkPGludDMyX3Q+OworICB1c2luZyBpbml0X3R5cGUgPSBU
cmFja2VkPGludDMyX3Q+OworICB1c2luZyBrZXlfdHlwZSA9IGludDMyX3Q7CisKKyAgdGVtcGxh
dGUgPGNsYXNzIGFsbG9jYXRvcl90eXBlLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgdm9pZCBj
b25zdHJ1Y3QoYWxsb2NhdG9yX3R5cGUqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICBBcmdzJiYuLi4gYXJncykgeworICAgIHN0ZDo6YWxsb2NhdG9yX3Ry
YWl0czxhbGxvY2F0b3JfdHlwZT46OmNvbnN0cnVjdCgKKyAgICAgICAgKmFsbG9jLCBzbG90LCBz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIGFs
bG9jYXRvcl90eXBlPgorICBzdGF0aWMgdm9pZCBkZXN0cm95KGFsbG9jYXRvcl90eXBlKiBhbGxv
Yywgc2xvdF90eXBlKiBzbG90KSB7CisgICAgc3RkOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRv
cl90eXBlPjo6ZGVzdHJveSgqYWxsb2MsIHNsb3QpOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNz
IGFsbG9jYXRvcl90eXBlPgorICBzdGF0aWMgdm9pZCB0cmFuc2ZlcihhbGxvY2F0b3JfdHlwZSog
YWxsb2MsIHNsb3RfdHlwZSogbmV3X3Nsb3QsCisgICAgICAgICAgICAgICAgICAgICAgIHNsb3Rf
dHlwZSogb2xkX3Nsb3QpIHsKKyAgICBjb25zdHJ1Y3QoYWxsb2MsIG5ld19zbG90LCBzdGQ6Om1v
dmUoKm9sZF9zbG90KSk7CisgICAgZGVzdHJveShhbGxvYywgb2xkX3Nsb3QpOworICB9CisKKyAg
dGVtcGxhdGUgPGNsYXNzIEY+CisgIHN0YXRpYyBhdXRvIGFwcGx5KEYmJiBmLCBpbnQzMl90IHYp
IC0+IGRlY2x0eXBlKHN0ZDo6Zm9yd2FyZDxGPihmKSh2LCB2KSkgeworICAgIHJldHVybiBzdGQ6
OmZvcndhcmQ8Rj4oZikodiwgdik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgRj4KKyAgc3Rh
dGljIGF1dG8gYXBwbHkoRiYmIGYsIGNvbnN0IHNsb3RfdHlwZSYgdikKKyAgICAgIC0+IGRlY2x0
eXBlKHN0ZDo6Zm9yd2FyZDxGPihmKSh2LnZhbCgpLCB2KSkgeworICAgIHJldHVybiBzdGQ6OmZv
cndhcmQ8Rj4oZikodi52YWwoKSwgdik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgRj4KKyAg
c3RhdGljIGF1dG8gYXBwbHkoRiYmIGYsIHNsb3RfdHlwZSYmIHYpCisgICAgICAtPiBkZWNsdHlw
ZShzdGQ6OmZvcndhcmQ8Rj4oZikodi52YWwoKSwgc3RkOjptb3ZlKHYpKSkgeworICAgIHJldHVy
biBzdGQ6OmZvcndhcmQ8Rj4oZikodi52YWwoKSwgc3RkOjptb3ZlKHYpKTsKKyAgfQorCisgIHN0
YXRpYyBzbG90X3R5cGUmIGVsZW1lbnQoc2xvdF90eXBlKiBzbG90KSB7IHJldHVybiAqc2xvdDsg
fQorfTsKKwordGVtcGxhdGUgPGludCBTcGVjPgorc3RydWN0IFByb3BhZ2F0ZVRlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgdXNpbmcgQWxsb2MgPSBDaGVja2VkQWxsb2M8VHJhY2tl
ZDxpbnQzMl90PiwgU3BlYz47CisKKyAgdXNpbmcgVGFibGUgPSByYXdfaGFzaF9zZXQ8UG9saWN5
LCBJZGVudGl0eSwgc3RkOjplcXVhbF90bzxpbnQzMl90PiwgQWxsb2M+OworCisgIFByb3BhZ2F0
ZVRlc3QoKSB7CisgICAgRVhQRUNUX0VRKGExLCB0MS5nZXRfYWxsb2NhdG9yKCkpOworICAgIEVY
UEVDVF9ORShhMiwgdDEuZ2V0X2FsbG9jYXRvcigpKTsKKyAgfQorCisgIEFsbG9jIGExID0gQWxs
b2MoMSk7CisgIFRhYmxlIHQxID0gVGFibGUoMCwgYTEpOworICBBbGxvYyBhMiA9IEFsbG9jKDIp
OworfTsKKwordXNpbmcgUHJvcGFnYXRlT25BbGwgPQorICAgIFByb3BhZ2F0ZVRlc3Q8a1Byb3Bh
Z2F0ZU9uQ29weSB8IGtQcm9wYWdhdGVPbk1vdmUgfCBrUHJvcGFnYXRlT25Td2FwPjsKK3VzaW5n
IE5vUHJvcGFnYXRlT25Db3B5ID0gUHJvcGFnYXRlVGVzdDxrUHJvcGFnYXRlT25Nb3ZlIHwga1By
b3BhZ2F0ZU9uU3dhcD47Cit1c2luZyBOb1Byb3BhZ2F0ZU9uTW92ZSA9IFByb3BhZ2F0ZVRlc3Q8
a1Byb3BhZ2F0ZU9uQ29weSB8IGtQcm9wYWdhdGVPblN3YXA+OworCitURVNUX0YoUHJvcGFnYXRl
T25BbGwsIEVtcHR5KSB7IEVYUEVDVF9FUSgwLCBhMS5udW1fYWxsb2NzKCkpOyB9CisKK1RFU1Rf
RihQcm9wYWdhdGVPbkFsbCwgSW5zZXJ0QWxsb2NhdGVzKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNl
cnQoMCkuZmlyc3Q7CisgIEVYUEVDVF9FUSgxLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1Rf
RVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkp
OworfQorCitURVNUX0YoUHJvcGFnYXRlT25BbGwsIEluc2VydERlY29tcG9zZXMpIHsKKyAgYXV0
byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3Mo
KSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQt
Pm51bV9jb3BpZXMoKSk7CisKKyAgRVhQRUNUX0ZBTFNFKHQxLmluc2VydCgwKS5zZWNvbmQpOwor
ICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1f
bW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9G
KFByb3BhZ2F0ZU9uQWxsLCBSZWhhc2hNb3ZlcykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDAp
LmZpcnN0OworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgdDEucmVoYXNoKDIg
KiB0MS5jYXBhY2l0eSgpKTsKKyAgRVhQRUNUX0VRKDIsIGExLm51bV9hbGxvY3MoKSk7CisgIGl0
ID0gdDEuZmluZCgwKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVD
VF9FUSgwLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKFByb3BhZ2F0ZU9uQWxsLCBD
b3B5Q29uc3RydWN0b3IpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFi
bGUgdSh0MSk7CisgIEVYUEVDVF9FUSgyLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEo
MCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkpOwor
fQorCitURVNUX0YoTm9Qcm9wYWdhdGVPbkNvcHksIENvcHlDb25zdHJ1Y3RvcikgeworICBhdXRv
IGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KHQxKTsKKyAgRVhQRUNUX0VRKDEs
IGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgxLCB1LmdldF9hbGxvY2F0b3IoKS5udW1f
YWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VR
KDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoUHJvcGFnYXRlT25BbGwsIENvcHlD
b25zdHJ1Y3RvcldpdGhTYW1lQWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJz
dDsKKyAgVGFibGUgdSh0MSwgYTEpOworICBFWFBFQ1RfRVEoMiwgYTEubnVtX2FsbG9jcygpKTsK
KyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+bnVt
X2NvcGllcygpKTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRlT25Db3B5LCBDb3B5Q29uc3RydWN0
b3JXaXRoU2FtZUFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRh
YmxlIHUodDEsIGExKTsKKyAgRVhQRUNUX0VRKDIsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVD
VF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMSwgaXQtPm51bV9jb3BpZXMo
KSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgQ29weUNvbnN0cnVjdG9yV2l0aERpZmZl
cmVudEFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUo
dDEsIGEyKTsKKyAgRVhQRUNUX0VRKGEyLCB1LmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVDVF9F
USgxLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMSwgYTIubnVtX2FsbG9jcygpKTsK
KyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+bnVt
X2NvcGllcygpKTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRlT25Db3B5LCBDb3B5Q29uc3RydWN0
b3JXaXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsK
KyAgVGFibGUgdSh0MSwgYTIpOworICBFWFBFQ1RfRVEoYTIsIHUuZ2V0X2FsbG9jYXRvcigpKTsK
KyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgxLCBhMi5udW1f
YWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VR
KDEsIGl0LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoUHJvcGFnYXRlT25BbGwsIE1vdmVD
b25zdHJ1Y3RvcikgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1
KHN0ZDo6bW92ZSh0MSkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQ
RUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX2NvcGll
cygpKTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRlT25Nb3ZlLCBNb3ZlQ29uc3RydWN0b3IpIHsK
KyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdShzdGQ6Om1vdmUodDEp
KTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+
bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RF
U1RfRihQcm9wYWdhdGVPbkFsbCwgTW92ZUNvbnN0cnVjdG9yV2l0aFNhbWVBbGxvYykgeworICBh
dXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KHN0ZDo6bW92ZSh0MSksIGEx
KTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+
bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RF
U1RfRihOb1Byb3BhZ2F0ZU9uTW92ZSwgTW92ZUNvbnN0cnVjdG9yV2l0aFNhbWVBbGxvYykgewor
ICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KHN0ZDo6bW92ZSh0MSks
IGExKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBp
dC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisK
K1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgTW92ZUNvbnN0cnVjdG9yV2l0aERpZmZlcmVudEFsbG9j
KSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxlIHUoc3RkOjptb3Zl
KHQxKSwgYTIpOworICBpdCA9IHUuZmluZCgwKTsKKyAgRVhQRUNUX0VRKGEyLCB1LmdldF9hbGxv
Y2F0b3IoKSk7CisgIEVYUEVDVF9FUSgxLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEo
MSwgYTIubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fbW92ZXMoKSk7Cisg
IEVYUEVDVF9FUSgwLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRl
T25Nb3ZlLCBNb3ZlQ29uc3RydWN0b3JXaXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9
IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdShzdGQ6Om1vdmUodDEpLCBhMik7CisgIGl0
ID0gdS5maW5kKDApOworICBFWFBFQ1RfRVEoYTIsIHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQ
RUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgxLCBhMi5udW1fYWxsb2Nz
KCkpOworICBFWFBFQ1RfRVEoMSwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0
LT5udW1fY29waWVzKCkpOworfQorCitURVNUX0YoUHJvcGFnYXRlT25BbGwsIENvcHlBc3NpZ25t
ZW50V2l0aFNhbWVBbGxvYykgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBU
YWJsZSB1KDAsIGExKTsKKyAgdSA9IHQxOworICBFWFBFQ1RfRVEoMiwgYTEubnVtX2FsbG9jcygp
KTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+
bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRlT25Db3B5LCBDb3B5QXNzaWdu
bWVudFdpdGhTYW1lQWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAg
VGFibGUgdSgwLCBhMSk7CisgIHUgPSB0MTsKKyAgRVhQRUNUX0VRKDIsIGExLm51bV9hbGxvY3Mo
KSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMSwgaXQt
Pm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgQ29weUFzc2lnbm1l
bnRXaXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9IHQxLmluc2VydCgwKS5maXJzdDsK
KyAgVGFibGUgdSgwLCBhMik7CisgIHUgPSB0MTsKKyAgRVhQRUNUX0VRKGExLCB1LmdldF9hbGxv
Y2F0b3IoKSk7CisgIEVYUEVDVF9FUSgyLCBhMS5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEo
MCwgYTIubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92ZXMoKSk7Cisg
IEVYUEVDVF9FUSgxLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKE5vUHJvcGFnYXRl
T25Db3B5LCBDb3B5QXNzaWdubWVudFdpdGhEaWZmZXJlbnRBbGxvYykgeworICBhdXRvIGl0ID0g
dDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KDAsIGEyKTsKKyAgdSA9IHQxOworICBFWFBF
Q1RfRVEoYTIsIHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxv
Y3MoKSk7CisgIEVYUEVDVF9FUSgxLCBhMi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwg
aXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT5udW1fY29waWVzKCkpOworfQor
CitURVNUX0YoUHJvcGFnYXRlT25BbGwsIE1vdmVBc3NpZ25tZW50V2l0aFNhbWVBbGxvYykgewor
ICBhdXRvIGl0ID0gdDEuaW5zZXJ0KDApLmZpcnN0OworICBUYWJsZSB1KDAsIGExKTsKKyAgdSA9
IHN0ZDo6bW92ZSh0MSk7CisgIEVYUEVDVF9FUShhMSwgdS5nZXRfYWxsb2NhdG9yKCkpOworICBF
WFBFQ1RfRVEoMSwgYTEubnVtX2FsbG9jcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fbW92
ZXMoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX2NvcGllcygpKTsKK30KKworVEVTVF9GKE5v
UHJvcGFnYXRlT25Nb3ZlLCBNb3ZlQXNzaWdubWVudFdpdGhTYW1lQWxsb2MpIHsKKyAgYXV0byBp
dCA9IHQxLmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdSgwLCBhMSk7CisgIHUgPSBzdGQ6Om1v
dmUodDEpOworICBFWFBFQ1RfRVEoYTEsIHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VR
KDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+bnVtX21vdmVzKCkpOwor
ICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1RfRihQcm9wYWdhdGVP
bkFsbCwgTW92ZUFzc2lnbm1lbnRXaXRoRGlmZmVyZW50QWxsb2MpIHsKKyAgYXV0byBpdCA9IHQx
Lmluc2VydCgwKS5maXJzdDsKKyAgVGFibGUgdSgwLCBhMik7CisgIHUgPSBzdGQ6Om1vdmUodDEp
OworICBFWFBFQ1RfRVEoYTEsIHUuZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKDEsIGEx
Lm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBhMi5udW1fYWxsb2NzKCkpOworICBFWFBF
Q1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT5udW1fY29waWVz
KCkpOworfQorCitURVNUX0YoTm9Qcm9wYWdhdGVPbk1vdmUsIE1vdmVBc3NpZ25tZW50V2l0aERp
ZmZlcmVudEFsbG9jKSB7CisgIGF1dG8gaXQgPSB0MS5pbnNlcnQoMCkuZmlyc3Q7CisgIFRhYmxl
IHUoMCwgYTIpOworICB1ID0gc3RkOjptb3ZlKHQxKTsKKyAgaXQgPSB1LmZpbmQoMCk7CisgIEVY
UEVDVF9FUShhMiwgdS5nZXRfYWxsb2NhdG9yKCkpOworICBFWFBFQ1RfRVEoMSwgYTEubnVtX2Fs
bG9jcygpKTsKKyAgRVhQRUNUX0VRKDEsIGEyLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgx
LCBpdC0+bnVtX21vdmVzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9jb3BpZXMoKSk7Cit9
CisKK1RFU1RfRihQcm9wYWdhdGVPbkFsbCwgU3dhcCkgeworICBhdXRvIGl0ID0gdDEuaW5zZXJ0
KDApLmZpcnN0OworICBUYWJsZSB1KDAsIGEyKTsKKyAgdS5zd2FwKHQxKTsKKyAgRVhQRUNUX0VR
KGExLCB1LmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVDVF9FUShhMiwgdDEuZ2V0X2FsbG9jYXRv
cigpKTsKKyAgRVhQRUNUX0VRKDEsIGExLm51bV9hbGxvY3MoKSk7CisgIEVYUEVDVF9FUSgwLCBh
Mi5udW1fYWxsb2NzKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPm51bV9tb3ZlcygpKTsKKyAgRVhQ
RUNUX0VRKDAsIGl0LT5udW1fY29waWVzKCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8v
IG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0X3Rlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0X3Rlc3QuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2QzM2EzYWNiOTE3ODg4ODg1NWZmOTFkZTk0MTQ2OTM0YzgzNzU1NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXRfdGVzdC5jYwpAQCAtMCww
ICsxLDE5NjEgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9yYXdfaGFzaF9zZXQuaCIKKworI2luY2x1
ZGUgPGFycmF5PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVk
ZSA8ZGVxdWU+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRlIDxyYW5kb20+CisjaW5jbHVkZSA8c3RyaW5nPgorCisj
aW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1
ZGUgImFic2wvYmFzZS9hdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFs
L2N5Y2xlY2xvY2suaCIKKyNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvcmF3X2xvZ2dpbmcu
aCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9jb250YWluZXJfbWVtb3J5Lmgi
CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9mdW5jdGlvbl9kZWZhdWx0
cy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3Rp
bmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNodGFibGVfZGVidWcu
aCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKworbmFtZXNwYWNlIGFi
c2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3N0cnVjdCBSYXdIYXNoU2V0
VGVzdE9ubHlBY2Nlc3MgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KKyAgc3RhdGljIGF1dG8g
R2V0U2xvdHMoY29uc3QgQyYgYykgLT4gZGVjbHR5cGUoYy5zbG90c18pIHsKKyAgICByZXR1cm4g
Yy5zbG90c187CisgIH0KK307CisKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6dGVzdGluZzo6RG91
YmxlTmVhcjsKK3VzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmU7Cit1c2luZyA6OnRlc3Rpbmc6
Ok9wdGlvbmFsOwordXNpbmcgOjp0ZXN0aW5nOjpQYWlyOwordXNpbmcgOjp0ZXN0aW5nOjpVbm9y
ZGVyZWRFbGVtZW50c0FyZTsKKworVEVTVChVdGlsLCBOb3JtYWxpemVDYXBhY2l0eSkgeworICBj
b25zdGV4cHIgc2l6ZV90IGtNaW5DYXBhY2l0eSA9IEdyb3VwOjprV2lkdGggLSAxOworICBFWFBF
Q1RfRVEoa01pbkNhcGFjaXR5LCBOb3JtYWxpemVDYXBhY2l0eSgwKSk7CisgIEVYUEVDVF9FUShr
TWluQ2FwYWNpdHksIE5vcm1hbGl6ZUNhcGFjaXR5KDEpKTsKKyAgRVhQRUNUX0VRKGtNaW5DYXBh
Y2l0eSwgTm9ybWFsaXplQ2FwYWNpdHkoMikpOworICBFWFBFQ1RfRVEoa01pbkNhcGFjaXR5LCBO
b3JtYWxpemVDYXBhY2l0eShrTWluQ2FwYWNpdHkpKTsKKyAgRVhQRUNUX0VRKGtNaW5DYXBhY2l0
eSAqIDIgKyAxLCBOb3JtYWxpemVDYXBhY2l0eShrTWluQ2FwYWNpdHkgKyAxKSk7CisgIEVYUEVD
VF9FUShrTWluQ2FwYWNpdHkgKiAyICsgMSwgTm9ybWFsaXplQ2FwYWNpdHkoa01pbkNhcGFjaXR5
ICsgMikpOworfQorCitURVNUKFV0aWwsIHByb2JlX3NlcSkgeworICBwcm9iZV9zZXE8MTY+IHNl
cSgwLCAxMjcpOworICBhdXRvIGdlbiA9IFsmXSgpIHsKKyAgICBzaXplX3QgcmVzID0gc2VxLm9m
ZnNldCgpOworICAgIHNlcS5uZXh0KCk7CisgICAgcmV0dXJuIHJlczsKKyAgfTsKKyAgc3RkOjp2
ZWN0b3I8c2l6ZV90PiBvZmZzZXRzKDgpOworICBzdGQ6OmdlbmVyYXRlX24ob2Zmc2V0cy5iZWdp
bigpLCA4LCBnZW4pOworICBFWFBFQ1RfVEhBVChvZmZzZXRzLCBFbGVtZW50c0FyZSgwLCAxNiwg
NDgsIDk2LCAzMiwgMTEyLCA4MCwgNjQpKTsKKyAgc2VxID0gcHJvYmVfc2VxPDE2PigxMjgsIDEy
Nyk7CisgIHN0ZDo6Z2VuZXJhdGVfbihvZmZzZXRzLmJlZ2luKCksIDgsIGdlbik7CisgIEVYUEVD
VF9USEFUKG9mZnNldHMsIEVsZW1lbnRzQXJlKDAsIDE2LCA0OCwgOTYsIDMyLCAxMTIsIDgwLCA2
NCkpOworfQorCitURVNUKEJpdE1hc2ssIFNtb2tlKSB7CisgIEVYUEVDVF9GQUxTRSgoQml0TWFz
azx1aW50OF90LCA4PigwKSkpOworICBFWFBFQ1RfVFJVRSgoQml0TWFzazx1aW50OF90LCA4Pig1
KSkpOworCisgIEVYUEVDVF9USEFUKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDApKSwgRWxlbWVudHNB
cmUoKSk7CisgIEVYUEVDVF9USEFUKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDB4MSkpLCBFbGVtZW50
c0FyZSgwKSk7CisgIEVYUEVDVF9USEFUKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDB4MikpLCBFbGVt
ZW50c0FyZSgxKSk7CisgIEVYUEVDVF9USEFUKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDB4MykpLCBF
bGVtZW50c0FyZSgwLCAxKSk7CisgIEVYUEVDVF9USEFUKChCaXRNYXNrPHVpbnQ4X3QsIDg+KDB4
NCkpLCBFbGVtZW50c0FyZSgyKSk7CisgIEVYUEVDVF9USEFUKChCaXRNYXNrPHVpbnQ4X3QsIDg+
KDB4NSkpLCBFbGVtZW50c0FyZSgwLCAyKSk7CisgIEVYUEVDVF9USEFUKChCaXRNYXNrPHVpbnQ4
X3QsIDg+KDB4NTUpKSwgRWxlbWVudHNBcmUoMCwgMiwgNCwgNikpOworICBFWFBFQ1RfVEhBVCgo
Qml0TWFzazx1aW50OF90LCA4PigweEFBKSksIEVsZW1lbnRzQXJlKDEsIDMsIDUsIDcpKTsKK30K
KworVEVTVChCaXRNYXNrLCBXaXRoU2hpZnQpIHsKKyAgLy8gU2VlIHRoZSBub24tU1NFIHZlcnNp
b24gb2YgR3JvdXAgZm9yIGRldGFpbHMgb24gd2hhdCB0aGlzIG1hdGggaXMgZm9yLgorICB1aW50
NjRfdCBjdHJsID0gMHgxNzE2MTUxNDEzMTIxMTEwOworICB1aW50NjRfdCBoYXNoID0gMHgxMjsK
KyAgY29uc3RleHByIHVpbnQ2NF90IG1zYnMgPSAweDgwODA4MDgwODA4MDgwODBVTEw7CisgIGNv
bnN0ZXhwciB1aW50NjRfdCBsc2JzID0gMHgwMTAxMDEwMTAxMDEwMTAxVUxMOworICBhdXRvIHgg
PSBjdHJsIF4gKGxzYnMgKiBoYXNoKTsKKyAgdWludDY0X3QgbWFzayA9ICh4IC0gbHNicykgJiB+
eCAmIG1zYnM7CisgIEVYUEVDVF9FUSgweDAwMDAwMDAwODA4MDAwMDAsIG1hc2spOworCisgIEJp
dE1hc2s8dWludDY0X3QsIDgsIDM+IGIobWFzayk7CisgIEVYUEVDVF9FUSgqYiwgMik7Cit9CisK
K1RFU1QoQml0TWFzaywgTGVhZGluZ1RyYWlsaW5nKSB7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1
aW50MzJfdCwgMTY+KDBiMDAwMTEwMTAwMTAwMDAwMCkuTGVhZGluZ1plcm9zKCkpLCAzKTsKKyAg
RVhQRUNUX0VRKChCaXRNYXNrPHVpbnQzMl90LCAxNj4oMGIwMDAxMTAxMDAxMDAwMDAwKS5UcmFp
bGluZ1plcm9zKCkpLCA2KTsKKworICBFWFBFQ1RfRVEoKEJpdE1hc2s8dWludDMyX3QsIDE2Pigw
YjAwMDAwMDAwMDAwMDAwMDEpLkxlYWRpbmdaZXJvcygpKSwgMTUpOworICBFWFBFQ1RfRVEoKEJp
dE1hc2s8dWludDMyX3QsIDE2PigwYjAwMDAwMDAwMDAwMDAwMDEpLlRyYWlsaW5nWmVyb3MoKSks
IDApOworCisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50MzJfdCwgMTY+KDBiMTAwMDAwMDAwMDAw
MDAwMCkuTGVhZGluZ1plcm9zKCkpLCAwKTsKKyAgRVhQRUNUX0VRKChCaXRNYXNrPHVpbnQzMl90
LCAxNj4oMGIxMDAwMDAwMDAwMDAwMDAwKS5UcmFpbGluZ1plcm9zKCkpLCAxNSk7CisKKyAgRVhQ
RUNUX0VRKChCaXRNYXNrPHVpbnQ2NF90LCA4LCAzPigweDAwMDAwMDgwODA4MDgwMDApLkxlYWRp
bmdaZXJvcygpKSwgMyk7CisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50NjRfdCwgOCwgMz4oMHgw
MDAwMDA4MDgwODA4MDAwKS5UcmFpbGluZ1plcm9zKCkpLCAxKTsKKworICBFWFBFQ1RfRVEoKEJp
dE1hc2s8dWludDY0X3QsIDgsIDM+KDB4MDAwMDAwMDAwMDAwMDA4MCkuTGVhZGluZ1plcm9zKCkp
LCA3KTsKKyAgRVhQRUNUX0VRKChCaXRNYXNrPHVpbnQ2NF90LCA4LCAzPigweDAwMDAwMDAwMDAw
MDAwODApLlRyYWlsaW5nWmVyb3MoKSksIDApOworCisgIEVYUEVDVF9FUSgoQml0TWFzazx1aW50
NjRfdCwgOCwgMz4oMHg4MDAwMDAwMDAwMDAwMDAwKS5MZWFkaW5nWmVyb3MoKSksIDApOworICBF
WFBFQ1RfRVEoKEJpdE1hc2s8dWludDY0X3QsIDgsIDM+KDB4ODAwMDAwMDAwMDAwMDAwMCkuVHJh
aWxpbmdaZXJvcygpKSwgNyk7Cit9CisKK1RFU1QoR3JvdXAsIEVtcHR5R3JvdXApIHsKKyAgZm9y
IChoMl90IGggPSAwOyBoICE9IDEyODsgKytoKSBFWFBFQ1RfRkFMU0UoR3JvdXB7RW1wdHlHcm91
cCgpfS5NYXRjaChoKSk7Cit9CisKKyNpZiBTV0lTU1RBQkxFX0hBVkVfU1NFMgorVEVTVChHcm91
cCwgTWF0Y2gpIHsKKyAgY3RybF90IGdyb3VwW10gPSB7a0VtcHR5LCAxLCBrRGVsZXRlZCwgMywg
a0VtcHR5LCA1LCBrU2VudGluZWwsIDcsCisgICAgICAgICAgICAgICAgICAgIDcsICAgICAgNSwg
MywgICAgICAgIDEsIDEsICAgICAgMSwgMSwgICAgICAgICAxfTsKKyAgRVhQRUNUX1RIQVQoR3Jv
dXB7Z3JvdXB9Lk1hdGNoKDApLCBFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX1RIQVQoR3JvdXB7
Z3JvdXB9Lk1hdGNoKDEpLCBFbGVtZW50c0FyZSgxLCAxMSwgMTIsIDEzLCAxNCwgMTUpKTsKKyAg
RVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDMpLCBFbGVtZW50c0FyZSgzLCAxMCkpOwor
ICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goNSksIEVsZW1lbnRzQXJlKDUsIDkpKTsK
KyAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDcpLCBFbGVtZW50c0FyZSg3LCA4KSk7
Cit9CisKK1RFU1QoR3JvdXAsIE1hdGNoRW1wdHkpIHsKKyAgY3RybF90IGdyb3VwW10gPSB7a0Vt
cHR5LCAxLCBrRGVsZXRlZCwgMywga0VtcHR5LCA1LCBrU2VudGluZWwsIDcsCisgICAgICAgICAg
ICAgICAgICAgIDcsICAgICAgNSwgMywgICAgICAgIDEsIDEsICAgICAgMSwgMSwgICAgICAgICAx
fTsKKyAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoRW1wdHkoKSwgRWxlbWVudHNBcmUo
MCwgNCkpOworfQorCitURVNUKEdyb3VwLCBNYXRjaEVtcHR5T3JEZWxldGVkKSB7CisgIGN0cmxf
dCBncm91cFtdID0ge2tFbXB0eSwgMSwga0RlbGV0ZWQsIDMsIGtFbXB0eSwgNSwga1NlbnRpbmVs
LCA3LAorICAgICAgICAgICAgICAgICAgICA3LCAgICAgIDUsIDMsICAgICAgICAxLCAxLCAgICAg
IDEsIDEsICAgICAgICAgMX07CisgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaEVtcHR5
T3JEZWxldGVkKCksIEVsZW1lbnRzQXJlKDAsIDIsIDQpKTsKK30KKyNlbHNlCitURVNUKEdyb3Vw
LCBNYXRjaCkgeworICBjdHJsX3QgZ3JvdXBbXSA9IHtrRW1wdHksIDEsIDIsIGtEZWxldGVkLCAy
LCAxLCBrU2VudGluZWwsIDF9OworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMCks
IEVsZW1lbnRzQXJlKCkpOworICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2goMSksIEVs
ZW1lbnRzQXJlKDEsIDUsIDcpKTsKKyAgRVhQRUNUX1RIQVQoR3JvdXB7Z3JvdXB9Lk1hdGNoKDIp
LCBFbGVtZW50c0FyZSgyLCA0KSk7Cit9CitURVNUKEdyb3VwLCBNYXRjaEVtcHR5KSB7CisgIGN0
cmxfdCBncm91cFtdID0ge2tFbXB0eSwgMSwgMiwga0RlbGV0ZWQsIDIsIDEsIGtTZW50aW5lbCwg
MX07CisgIEVYUEVDVF9USEFUKEdyb3Vwe2dyb3VwfS5NYXRjaEVtcHR5KCksIEVsZW1lbnRzQXJl
KDApKTsKK30KKworVEVTVChHcm91cCwgTWF0Y2hFbXB0eU9yRGVsZXRlZCkgeworICBjdHJsX3Qg
Z3JvdXBbXSA9IHtrRW1wdHksIDEsIDIsIGtEZWxldGVkLCAyLCAxLCBrU2VudGluZWwsIDF9Owor
ICBFWFBFQ1RfVEhBVChHcm91cHtncm91cH0uTWF0Y2hFbXB0eU9yRGVsZXRlZCgpLCBFbGVtZW50
c0FyZSgwLCAzKSk7Cit9CisjZW5kaWYKKworVEVTVChCYXRjaCwgRHJvcERlbGV0ZXMpIHsKKyAg
Y29uc3RleHByIHNpemVfdCBrQ2FwYWNpdHkgPSA2MzsKKyAgY29uc3RleHByIHNpemVfdCBrR3Jv
dXBXaWR0aCA9IGNvbnRhaW5lcl9pbnRlcm5hbDo6R3JvdXA6OmtXaWR0aDsKKyAgc3RkOjp2ZWN0
b3I8Y3RybF90PiBjdHJsKGtDYXBhY2l0eSArIDEgKyBrR3JvdXBXaWR0aCk7CisgIGN0cmxba0Nh
cGFjaXR5XSA9IGtTZW50aW5lbDsKKyAgc3RkOjp2ZWN0b3I8Y3RybF90PiBwYXR0ZXJuID0ge2tF
bXB0eSwgMiwga0RlbGV0ZWQsIDIsIGtFbXB0eSwgMSwga0RlbGV0ZWR9OworICBmb3IgKHNpemVf
dCBpID0gMDsgaSAhPSBrQ2FwYWNpdHk7ICsraSkgeworICAgIGN0cmxbaV0gPSBwYXR0ZXJuW2kg
JSBwYXR0ZXJuLnNpemUoKV07CisgICAgaWYgKGkgPCBrR3JvdXBXaWR0aCAtIDEpCisgICAgICBj
dHJsW2kgKyBrQ2FwYWNpdHkgKyAxXSA9IHBhdHRlcm5baSAlIHBhdHRlcm4uc2l6ZSgpXTsKKyAg
fQorICBDb252ZXJ0RGVsZXRlZFRvRW1wdHlBbmRGdWxsVG9EZWxldGVkKGN0cmwuZGF0YSgpLCBr
Q2FwYWNpdHkpOworICBBU1NFUlRfRVEoY3RybFtrQ2FwYWNpdHldLCBrU2VudGluZWwpOworICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGtDYXBhY2l0eSArIDEgKyBrR3JvdXBXaWR0aDsgKytpKSB7
CisgICAgY3RybF90IGV4cGVjdGVkID0gcGF0dGVybltpICUgKGtDYXBhY2l0eSArIDEpICUgcGF0
dGVybi5zaXplKCldOworICAgIGlmIChpID09IGtDYXBhY2l0eSkgZXhwZWN0ZWQgPSBrU2VudGlu
ZWw7CisgICAgaWYgKGV4cGVjdGVkID09IGtEZWxldGVkKSBleHBlY3RlZCA9IGtFbXB0eTsKKyAg
ICBpZiAoSXNGdWxsKGV4cGVjdGVkKSkgZXhwZWN0ZWQgPSBrRGVsZXRlZDsKKyAgICBFWFBFQ1Rf
RVEoY3RybFtpXSwgZXhwZWN0ZWQpCisgICAgICAgIDw8IGkgPDwgIiAiIDw8IGludHtwYXR0ZXJu
W2kgJSBwYXR0ZXJuLnNpemUoKV19OworICB9Cit9CisKK1RFU1QoR3JvdXAsIENvdW50TGVhZGlu
Z0VtcHR5T3JEZWxldGVkKSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPGN0cmxfdD4gZW1wdHlfZXhh
bXBsZXMgPSB7a0VtcHR5LCBrRGVsZXRlZH07CisgIGNvbnN0IHN0ZDo6dmVjdG9yPGN0cmxfdD4g
ZnVsbF9leGFtcGxlcyA9IHswLCAxLCAyLCAzLCA1LCA5LCAxMjcsIGtTZW50aW5lbH07CisKKyAg
Zm9yIChjdHJsX3QgZW1wdHkgOiBlbXB0eV9leGFtcGxlcykgeworICAgIHN0ZDo6dmVjdG9yPGN0
cmxfdD4gZShHcm91cDo6a1dpZHRoLCBlbXB0eSk7CisgICAgRVhQRUNUX0VRKEdyb3VwOjprV2lk
dGgsIEdyb3Vwe2UuZGF0YSgpfS5Db3VudExlYWRpbmdFbXB0eU9yRGVsZXRlZCgpKTsKKyAgICBm
b3IgKGN0cmxfdCBmdWxsIDogZnVsbF9leGFtcGxlcykgeworICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgIT0gR3JvdXA6OmtXaWR0aDsgKytpKSB7CisgICAgICAgIHN0ZDo6dmVjdG9yPGN0cmxf
dD4gZihHcm91cDo6a1dpZHRoLCBlbXB0eSk7CisgICAgICAgIGZbaV0gPSBmdWxsOworICAgICAg
ICBFWFBFQ1RfRVEoaSwgR3JvdXB7Zi5kYXRhKCl9LkNvdW50TGVhZGluZ0VtcHR5T3JEZWxldGVk
KCkpOworICAgICAgfQorICAgICAgc3RkOjp2ZWN0b3I8Y3RybF90PiBmKEdyb3VwOjprV2lkdGgs
IGVtcHR5KTsKKyAgICAgIGZbR3JvdXA6OmtXaWR0aCAqIDIgLyAzXSA9IGZ1bGw7CisgICAgICBm
W0dyb3VwOjprV2lkdGggLyAyXSA9IGZ1bGw7CisgICAgICBFWFBFQ1RfRVEoCisgICAgICAgICAg
R3JvdXA6OmtXaWR0aCAvIDIsIEdyb3Vwe2YuZGF0YSgpfS5Db3VudExlYWRpbmdFbXB0eU9yRGVs
ZXRlZCgpKTsKKyAgICB9CisgIH0KK30KKworc3RydWN0IEludFBvbGljeSB7CisgIHVzaW5nIHNs
b3RfdHlwZSA9IGludDY0X3Q7CisgIHVzaW5nIGtleV90eXBlID0gaW50NjRfdDsKKyAgdXNpbmcg
aW5pdF90eXBlID0gaW50NjRfdDsKKworICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3Qodm9pZCosIGlu
dDY0X3QqIHNsb3QsIGludDY0X3QgdikgeyAqc2xvdCA9IHY7IH0KKyAgc3RhdGljIHZvaWQgZGVz
dHJveSh2b2lkKiwgaW50NjRfdCopIHt9CisgIHN0YXRpYyB2b2lkIHRyYW5zZmVyKHZvaWQqLCBp
bnQ2NF90KiBuZXdfc2xvdCwgaW50NjRfdCogb2xkX3Nsb3QpIHsKKyAgICAqbmV3X3Nsb3QgPSAq
b2xkX3Nsb3Q7CisgIH0KKworICBzdGF0aWMgaW50NjRfdCYgZWxlbWVudChzbG90X3R5cGUqIHNs
b3QpIHsgcmV0dXJuICpzbG90OyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEY+CisgIHN0YXRpYyBh
dXRvIGFwcGx5KEYmJiBmLCBpbnQ2NF90IHgpIC0+IGRlY2x0eXBlKHN0ZDo6Zm9yd2FyZDxGPihm
KSh4LCB4KSkgeworICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8Rj4oZikoeCwgeCk7CisgIH0KK307
CisKK2NsYXNzIFN0cmluZ1BvbGljeSB7CisgIHRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBLLCBj
bGFzcyBWLAorICAgICAgICAgICAgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAg
ICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPGNvbnN0IEsmLCBhYnNsOjpzdHJpbmdf
dmlldz46OnZhbHVlPjo6dHlwZT4KKyAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEY+KCkoCisgICAg
ICBzdGQ6OmRlY2x2YWw8Y29uc3QgYWJzbDo6c3RyaW5nX3ZpZXcmPigpLCBzdGQ6OnBpZWNld2lz
ZV9jb25zdHJ1Y3QsCisgICAgICBzdGQ6OmRlY2x2YWw8c3RkOjp0dXBsZTxLPj4oKSwKKyAgICAg
IHN0ZDo6ZGVjbHZhbDxWPigpKSkgc3RhdGljIGFwcGx5X2ltcGwoRiYmIGYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxzdGQ6OnR1cGxlPEs+
LCBWPiBwKSB7CisgICAgY29uc3QgYWJzbDo6c3RyaW5nX3ZpZXcmIGtleSA9IHN0ZDo6Z2V0PDA+
KHAuZmlyc3QpOworICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8Rj4oZikoa2V5LCBzdGQ6OnBpZWNl
d2lzZV9jb25zdHJ1Y3QsIHN0ZDo6bW92ZShwLmZpcnN0KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bW92ZShwLnNlY29uZCkpOworICB9CisKKyBwdWJsaWM6CisgIHN0cnVj
dCBzbG90X3R5cGUgeworICAgIHN0cnVjdCBjdG9yIHt9OworCisgICAgdGVtcGxhdGUgPGNsYXNz
Li4uIFRzPgorICAgIHNsb3RfdHlwZShjdG9yLCBUcyYmLi4uIHRzKSA6IHBhaXIoc3RkOjpmb3J3
YXJkPFRzPih0cykuLi4pIHt9CisKKyAgICBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3Ry
aW5nPiBwYWlyOworICB9OworCisgIHVzaW5nIGtleV90eXBlID0gc3RkOjpzdHJpbmc7CisgIHVz
aW5nIGluaXRfdHlwZSA9IHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+OworCisg
IHRlbXBsYXRlIDxjbGFzcyBhbGxvY2F0b3JfdHlwZSwgY2xhc3MuLi4gQXJncz4KKyAgc3RhdGlj
IHZvaWQgY29uc3RydWN0KGFsbG9jYXRvcl90eXBlKiBhbGxvYywgc2xvdF90eXBlKiBzbG90LCBB
cmdzLi4uIGFyZ3MpIHsKKyAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yX3R5cGU+
Ojpjb25zdHJ1Y3QoCisgICAgICAgICphbGxvYywgc2xvdCwgdHlwZW5hbWUgc2xvdF90eXBlOjpj
dG9yKCksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICB0ZW1wbGF0ZSA8
Y2xhc3MgYWxsb2NhdG9yX3R5cGU+CisgIHN0YXRpYyB2b2lkIGRlc3Ryb3koYWxsb2NhdG9yX3R5
cGUqIGFsbG9jLCBzbG90X3R5cGUqIHNsb3QpIHsKKyAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8
YWxsb2NhdG9yX3R5cGU+OjpkZXN0cm95KCphbGxvYywgc2xvdCk7CisgIH0KKworICB0ZW1wbGF0
ZSA8Y2xhc3MgYWxsb2NhdG9yX3R5cGU+CisgIHN0YXRpYyB2b2lkIHRyYW5zZmVyKGFsbG9jYXRv
cl90eXBlKiBhbGxvYywgc2xvdF90eXBlKiBuZXdfc2xvdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc2xvdF90eXBlKiBvbGRfc2xvdCkgeworICAgIGNvbnN0cnVjdChhbGxvYywgbmV3X3Nsb3Qs
IHN0ZDo6bW92ZShvbGRfc2xvdC0+cGFpcikpOworICAgIGRlc3Ryb3koYWxsb2MsIG9sZF9zbG90
KTsKKyAgfQorCisgIHN0YXRpYyBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiYg
ZWxlbWVudChzbG90X3R5cGUqIHNsb3QpIHsKKyAgICByZXR1cm4gc2xvdC0+cGFpcjsKKyAgfQor
CisgIHRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgYXV0byBhcHBs
eShGJiYgZiwgQXJncyYmLi4uIGFyZ3MpCisgICAgICAtPiBkZWNsdHlwZShhcHBseV9pbXBsKHN0
ZDo6Zm9yd2FyZDxGPihmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpckFyZ3Mo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkpIHsKKyAgICByZXR1cm4gYXBwbHlfaW1wbChz
dGQ6OmZvcndhcmQ8Rj4oZiksCisgICAgICAgICAgICAgICAgICAgICAgUGFpckFyZ3Moc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgIH0KK307CisKK3N0cnVjdCBTdHJpbmdIYXNoIDog
YWJzbDo6SGFzaDxhYnNsOjpzdHJpbmdfdmlldz4geworICB1c2luZyBpc190cmFuc3BhcmVudCA9
IHZvaWQ7Cit9Oworc3RydWN0IFN0cmluZ0VxIDogc3RkOjplcXVhbF90bzxhYnNsOjpzdHJpbmdf
dmlldz4geworICB1c2luZyBpc190cmFuc3BhcmVudCA9IHZvaWQ7Cit9OworCitzdHJ1Y3QgU3Ry
aW5nVGFibGUKKyAgICA6IHJhd19oYXNoX3NldDxTdHJpbmdQb2xpY3ksIFN0cmluZ0hhc2gsIFN0
cmluZ0VxLCBzdGQ6OmFsbG9jYXRvcjxpbnQ+PiB7CisgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBT
dHJpbmdUYWJsZTo6cmF3X2hhc2hfc2V0OworICBTdHJpbmdUYWJsZSgpIHt9CisgIHVzaW5nIEJh
c2U6OkJhc2U7Cit9OworCitzdHJ1Y3QgSW50VGFibGUKKyAgICA6IHJhd19oYXNoX3NldDxJbnRQ
b2xpY3ksIGNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZhdWx0X2hhc2g8aW50NjRfdD4sCisg
ICAgICAgICAgICAgICAgICAgc3RkOjplcXVhbF90bzxpbnQ2NF90Piwgc3RkOjphbGxvY2F0b3I8
aW50NjRfdD4+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIEludFRhYmxlOjpyYXdfaGFzaF9z
ZXQ7CisgIEludFRhYmxlKCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKK307CisKK3N0cnVjdCBC
YWRGYXN0SGFzaCB7CisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICBzaXplX3Qgb3BlcmF0b3IoKShj
b25zdCBUJikgY29uc3QgeworICAgIHJldHVybiAwOworICB9Cit9OworCitzdHJ1Y3QgQmFkVGFi
bGUgOiByYXdfaGFzaF9zZXQ8SW50UG9saWN5LCBCYWRGYXN0SGFzaCwgc3RkOjplcXVhbF90bzxp
bnQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPGludD4+
IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIEJhZFRhYmxlOjpyYXdfaGFzaF9zZXQ7CisgIEJh
ZFRhYmxlKCkge30KKyAgdXNpbmcgQmFzZTo6QmFzZTsKK307CisKK1RFU1QoVGFibGUsIEVtcHR5
RnVuY3Rvck9wdGltaXphdGlvbikgeworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZW1wdHk8c3Rk
OjplcXVhbF90bzxhYnNsOjpzdHJpbmdfdmlldz4+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfZW1wdHk8c3RkOjphbGxvY2F0b3I8aW50Pj46OnZhbHVlLCAiIik7CisKKyAg
c3RydWN0IE1vY2tUYWJsZSB7CisgICAgdm9pZCogY3RybDsKKyAgICB2b2lkKiBzbG90czsKKyAg
ICBzaXplX3Qgc2l6ZTsKKyAgICBzaXplX3QgY2FwYWNpdHk7CisgICAgc2l6ZV90IGdyb3d0aF9s
ZWZ0OworICB9OworICBzdHJ1Y3QgU3RhdGVsZXNzSGFzaCB7CisgICAgc2l6ZV90IG9wZXJhdG9y
KCkoYWJzbDo6c3RyaW5nX3ZpZXcpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgfTsKKyAgc3RydWN0
IFN0YXRlZnVsSGFzaCA6IFN0YXRlbGVzc0hhc2ggeworICAgIHNpemVfdCBkdW1teTsKKyAgfTsK
KworICBFWFBFQ1RfRVEoCisgICAgICBzaXplb2YoTW9ja1RhYmxlKSwKKyAgICAgIHNpemVvZigK
KyAgICAgICAgICByYXdfaGFzaF9zZXQ8U3RyaW5nUG9saWN5LCBTdGF0ZWxlc3NIYXNoLAorICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OmVxdWFsX3RvPGFic2w6OnN0cmluZ192aWV3Piwgc3Rk
OjphbGxvY2F0b3I8aW50Pj4pKTsKKworICBFWFBFQ1RfRVEoCisgICAgICBzaXplb2YoTW9ja1Rh
YmxlKSArIHNpemVvZihTdGF0ZWZ1bEhhc2gpLAorICAgICAgc2l6ZW9mKAorICAgICAgICAgIHJh
d19oYXNoX3NldDxTdHJpbmdQb2xpY3ksIFN0YXRlZnVsSGFzaCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjplcXVhbF90bzxhYnNsOjpzdHJpbmdfdmlldz4sIHN0ZDo6YWxsb2NhdG9yPGlu
dD4+KSk7Cit9CisKK1RFU1QoVGFibGUsIEVtcHR5KSB7CisgIEludFRhYmxlIHQ7CisgIEVYUEVD
VF9FUSgwLCB0LnNpemUoKSk7CisgIEVYUEVDVF9UUlVFKHQuZW1wdHkoKSk7Cit9CisKKyNpZmRl
ZiBfX0dOVUNfXwordGVtcGxhdGUgPGNsYXNzIFQ+CitBQlNMX0FUVFJJQlVURV9BTFdBWVNfSU5M
SU5FIGlubGluZSB2b2lkIERvTm90T3B0aW1pemUoY29uc3QgVCYgdikgeworICBhc20gdm9sYXRp
bGUoIiIgOiA6ICJyLG0iKHYpIDogIm1lbW9yeSIpOworfQorI2VuZGlmCisKK1RFU1QoVGFibGUs
IFByZWZldGNoKSB7CisgIEludFRhYmxlIHQ7CisgIHQuZW1wbGFjZSgxKTsKKyAgLy8gV29ya3Mg
Zm9yIGJvdGggcHJlc2VudCBhbmQgYWJzZW50IGtleXMuCisgIHQucHJlZmV0Y2goMSk7CisgIHQu
cHJlZmV0Y2goMik7CisKKyAgLy8gRG8gbm90IHJ1biBpbiBkZWJ1ZyBtb2RlLCB3aGVuIHByZWZl
dGNoIGlzIG5vdCBpbXBsZW1lbnRlZCwgb3Igd2hlbgorICAvLyBzYW5pdGl6ZXJzIGFyZSBlbmFi
bGVkLgorI2lmIGRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5l
ZChBRERSRVNTX1NBTklUSVpFUikgJiYgXAorICAgICFkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIp
ICYmICFkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpICYmICAgICAgICAgICAgXAorICAgICFkZWZp
bmVkKFVOREVGSU5FRF9CRUhBVklPUl9TQU5JVElaRVIpCisgIGNvbnN0IGF1dG8gbm93ID0gW10g
eyByZXR1cm4gYWJzbDo6YmFzZV9pbnRlcm5hbDo6Q3ljbGVDbG9jazo6Tm93KCk7IH07CisKKyAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgc2l6ZSA9IDEwMDAwMDA7CisgIGZvciAoaW50IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB0Lmluc2VydChpKTsKKworICBpbnQ2NF90IG5vX3ByZWZldGNoID0gMCwg
cHJlZmV0Y2ggPSAwOworICBmb3IgKGludCBpdGVyID0gMDsgaXRlciA8IDEwOyArK2l0ZXIpIHsK
KyAgICBpbnQ2NF90IHRpbWUgPSBub3coKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeworICAgICAgRG9Ob3RPcHRpbWl6ZSh0LmZpbmQoaSkpOworICAgIH0KKyAgICBub19w
cmVmZXRjaCArPSBub3coKSAtIHRpbWU7CisKKyAgICB0aW1lID0gbm93KCk7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgIHQucHJlZmV0Y2goaSArIDIwKTsKKyAg
ICAgIERvTm90T3B0aW1pemUodC5maW5kKGkpKTsKKyAgICB9CisgICAgcHJlZmV0Y2ggKz0gbm93
KCkgLSB0aW1lOworICB9CisKKyAgLy8gbm9fcHJlZmV0Y2ggaXMgYXQgbGVhc3QgMzAlIHNsb3dl
ci4KKyAgRVhQRUNUX0dFKDEuMCAqIG5vX3ByZWZldGNoIC8gcHJlZmV0Y2gsIDEuMyk7CisjZW5k
aWYKK30KKworVEVTVChUYWJsZSwgTG9va3VwRW1wdHkpIHsKKyAgSW50VGFibGUgdDsKKyAgYXV0
byBpdCA9IHQuZmluZCgwKTsKKyAgRVhQRUNUX1RSVUUoaXQgPT0gdC5lbmQoKSk7Cit9CisKK1RF
U1QoVGFibGUsIEluc2VydDEpIHsKKyAgSW50VGFibGUgdDsKKyAgRVhQRUNUX1RSVUUodC5maW5k
KDApID09IHQuZW5kKCkpOworICBhdXRvIHJlcyA9IHQuZW1wbGFjZSgwKTsKKyAgRVhQRUNUX1RS
VUUocmVzLnNlY29uZCk7CisgIEVYUEVDVF9USEFUKCpyZXMuZmlyc3QsIDApOworICBFWFBFQ1Rf
RVEoMSwgdC5zaXplKCkpOworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDApLCAwKTsKK30KKworVEVT
VChUYWJsZSwgSW5zZXJ0MikgeworICBJbnRUYWJsZSB0OworICBFWFBFQ1RfVFJVRSh0LmZpbmQo
MCkgPT0gdC5lbmQoKSk7CisgIGF1dG8gcmVzID0gdC5lbXBsYWNlKDApOworICBFWFBFQ1RfVFJV
RShyZXMuc2Vjb25kKTsKKyAgRVhQRUNUX1RIQVQoKnJlcy5maXJzdCwgMCk7CisgIEVYUEVDVF9F
USgxLCB0LnNpemUoKSk7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgxKSA9PSB0LmVuZCgpKTsKKyAg
cmVzID0gdC5lbXBsYWNlKDEpOworICBFWFBFQ1RfVFJVRShyZXMuc2Vjb25kKTsKKyAgRVhQRUNU
X1RIQVQoKnJlcy5maXJzdCwgMSk7CisgIEVYUEVDVF9FUSgyLCB0LnNpemUoKSk7CisgIEVYUEVD
VF9USEFUKCp0LmZpbmQoMCksIDApOworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDEpLCAxKTsKK30K
KworVEVTVChUYWJsZSwgSW5zZXJ0Q29sbGlzaW9uKSB7CisgIEJhZFRhYmxlIHQ7CisgIEVYUEVD
VF9UUlVFKHQuZmluZCgxKSA9PSB0LmVuZCgpKTsKKyAgYXV0byByZXMgPSB0LmVtcGxhY2UoMSk7
CisgIEVYUEVDVF9UUlVFKHJlcy5zZWNvbmQpOworICBFWFBFQ1RfVEhBVCgqcmVzLmZpcnN0LCAx
KTsKKyAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsKKworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMikg
PT0gdC5lbmQoKSk7CisgIHJlcyA9IHQuZW1wbGFjZSgyKTsKKyAgRVhQRUNUX1RIQVQoKnJlcy5m
aXJzdCwgMik7CisgIEVYUEVDVF9UUlVFKHJlcy5zZWNvbmQpOworICBFWFBFQ1RfRVEoMiwgdC5z
aXplKCkpOworCisgIEVYUEVDVF9USEFUKCp0LmZpbmQoMSksIDEpOworICBFWFBFQ1RfVEhBVCgq
dC5maW5kKDIpLCAyKTsKK30KKworLy8gVGVzdCB0aGF0IHdlIGRvIG5vdCBhZGQgZXhpc3RlbnQg
ZWxlbWVudCBpbiBjYXNlIHdlIG5lZWQgdG8gc2VhcmNoIHRocm91Z2gKKy8vIG1hbnkgZ3JvdXBz
IHdpdGggZGVsZXRlZCBlbGVtZW50cworVEVTVChUYWJsZSwgSW5zZXJ0Q29sbGlzaW9uQW5kRmlu
ZEFmdGVyRGVsZXRlKSB7CisgIEJhZFRhYmxlIHQ7ICAvLyBhbGwgZWxlbWVudHMgZ28gdG8gdGhl
IHNhbWUgZ3JvdXAuCisgIC8vIEhhdmUgYXQgbGVhc3QgMiBncm91cHMgd2l0aCBHcm91cDo6a1dp
ZHRoIGNvbGxpc2lvbnMKKyAgLy8gcGx1cyBzb21lIGV4dHJhIGNvbGxpc2lvbnMgaW4gdGhlIGxh
c3QgZ3JvdXAuCisgIGNvbnN0ZXhwciBzaXplX3Qga051bUluc2VydHMgPSBHcm91cDo6a1dpZHRo
ICogMiArIDU7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bUluc2VydHM7ICsraSkgewor
ICAgIGF1dG8gcmVzID0gdC5lbXBsYWNlKGkpOworICAgIEVYUEVDVF9UUlVFKHJlcy5zZWNvbmQp
OworICAgIEVYUEVDVF9USEFUKCpyZXMuZmlyc3QsIGkpOworICAgIEVYUEVDVF9FUShpICsgMSwg
dC5zaXplKCkpOworICB9CisKKyAgLy8gUmVtb3ZlIGVsZW1lbnRzIG9uZSBieSBvbmUgYW5kIGNo
ZWNrCisgIC8vIHRoYXQgd2Ugc3RpbGwgY2FuIGZpbmQgYWxsIG90aGVyIGVsZW1lbnRzLgorICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGtOdW1JbnNlcnRzOyArK2kpIHsKKyAgICBFWFBFQ1RfRVEo
MSwgdC5lcmFzZShpKSkgPDwgaTsKKyAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCBrTnVt
SW5zZXJ0czsgKytqKSB7CisgICAgICBFWFBFQ1RfVEhBVCgqdC5maW5kKGopLCBqKTsKKyAgICAg
IGF1dG8gcmVzID0gdC5lbXBsYWNlKGopOworICAgICAgRVhQRUNUX0ZBTFNFKHJlcy5zZWNvbmQp
IDw8IGkgPDwgIiAiIDw8IGo7CisgICAgICBFWFBFQ1RfVEhBVCgqcmVzLmZpcnN0LCBqKTsKKyAg
ICAgIEVYUEVDVF9FUShrTnVtSW5zZXJ0cyAtIGkgLSAxLCB0LnNpemUoKSk7CisgICAgfQorICB9
CisgIEVYUEVDVF9UUlVFKHQuZW1wdHkoKSk7Cit9CisKK1RFU1QoVGFibGUsIExhenlFbXBsYWNl
KSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIGJvb2wgY2FsbGVkID0gZmFsc2U7CisgIGF1dG8gaXQg
PSB0LmxhenlfZW1wbGFjZSgiYWJjIiwgWyZdKGNvbnN0IFN0cmluZ1RhYmxlOjpjb25zdHJ1Y3Rv
ciYgZikgeworICAgIGNhbGxlZCA9IHRydWU7CisgICAgZigiYWJjIiwgIkFCQyIpOworICB9KTsK
KyAgRVhQRUNUX1RSVUUoY2FsbGVkKTsKKyAgRVhQRUNUX1RIQVQoKml0LCBQYWlyKCJhYmMiLCAi
QUJDIikpOworICBjYWxsZWQgPSBmYWxzZTsKKyAgaXQgPSB0LmxhenlfZW1wbGFjZSgiYWJjIiwg
WyZdKGNvbnN0IFN0cmluZ1RhYmxlOjpjb25zdHJ1Y3RvciYgZikgeworICAgIGNhbGxlZCA9IHRy
dWU7CisgICAgZigiYWJjIiwgIkRFRiIpOworICB9KTsKKyAgRVhQRUNUX0ZBTFNFKGNhbGxlZCk7
CisgIEVYUEVDVF9USEFUKCppdCwgUGFpcigiYWJjIiwgIkFCQyIpKTsKK30KKworVEVTVChUYWJs
ZSwgQ29udGFpbnNFbXB0eSkgeworICBJbnRUYWJsZSB0OworCisgIEVYUEVDVF9GQUxTRSh0LmNv
bnRhaW5zKDApKTsKK30KKworVEVTVChUYWJsZSwgQ29udGFpbnMxKSB7CisgIEludFRhYmxlIHQ7
CisKKyAgRVhQRUNUX1RSVUUodC5pbnNlcnQoMCkuc2Vjb25kKTsKKyAgRVhQRUNUX1RSVUUodC5j
b250YWlucygwKSk7CisgIEVYUEVDVF9GQUxTRSh0LmNvbnRhaW5zKDEpKTsKKworICBFWFBFQ1Rf
RVEoMSwgdC5lcmFzZSgwKSk7CisgIEVYUEVDVF9GQUxTRSh0LmNvbnRhaW5zKDApKTsKK30KKwor
VEVTVChUYWJsZSwgQ29udGFpbnMyKSB7CisgIEludFRhYmxlIHQ7CisKKyAgRVhQRUNUX1RSVUUo
dC5pbnNlcnQoMCkuc2Vjb25kKTsKKyAgRVhQRUNUX1RSVUUodC5jb250YWlucygwKSk7CisgIEVY
UEVDVF9GQUxTRSh0LmNvbnRhaW5zKDEpKTsKKworICB0LmNsZWFyKCk7CisgIEVYUEVDVF9GQUxT
RSh0LmNvbnRhaW5zKDApKTsKK30KKworaW50IGRlY29tcG9zZV9jb25zdHJ1Y3RlZDsKK3N0cnVj
dCBEZWNvbXBvc2VUeXBlIHsKKyAgRGVjb21wb3NlVHlwZShpbnQgaSkgOiBpKGkpIHsgIC8vIE5P
TElOVAorICAgICsrZGVjb21wb3NlX2NvbnN0cnVjdGVkOworICB9CisKKyAgZXhwbGljaXQgRGVj
b21wb3NlVHlwZShjb25zdCBjaGFyKiBkKSA6IERlY29tcG9zZVR5cGUoKmQpIHt9CisKKyAgaW50
IGk7Cit9OworCitzdHJ1Y3QgRGVjb21wb3NlSGFzaCB7CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50
ID0gdm9pZDsKKyAgc2l6ZV90IG9wZXJhdG9yKCkoRGVjb21wb3NlVHlwZSBhKSBjb25zdCB7IHJl
dHVybiBhLmk7IH0KKyAgc2l6ZV90IG9wZXJhdG9yKCkoaW50IGEpIGNvbnN0IHsgcmV0dXJuIGE7
IH0KKyAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgY2hhciogYSkgY29uc3QgeyByZXR1cm4gKmE7
IH0KK307CisKK3N0cnVjdCBEZWNvbXBvc2VFcSB7CisgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0g
dm9pZDsKKyAgYm9vbCBvcGVyYXRvcigpKERlY29tcG9zZVR5cGUgYSwgRGVjb21wb3NlVHlwZSBi
KSBjb25zdCB7IHJldHVybiBhLmkgPT0gYi5pOyB9CisgIGJvb2wgb3BlcmF0b3IoKShEZWNvbXBv
c2VUeXBlIGEsIGludCBiKSBjb25zdCB7IHJldHVybiBhLmkgPT0gYjsgfQorICBib29sIG9wZXJh
dG9yKCkoRGVjb21wb3NlVHlwZSBhLCBjb25zdCBjaGFyKiBiKSBjb25zdCB7IHJldHVybiBhLmkg
PT0gKmI7IH0KK307CisKK3N0cnVjdCBEZWNvbXBvc2VQb2xpY3kgeworICB1c2luZyBzbG90X3R5
cGUgPSBEZWNvbXBvc2VUeXBlOworICB1c2luZyBrZXlfdHlwZSA9IERlY29tcG9zZVR5cGU7Cisg
IHVzaW5nIGluaXRfdHlwZSA9IERlY29tcG9zZVR5cGU7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdCh2b2lkKiwgRGVjb21wb3NlVHlwZSogc2xvdCwg
VCYmIHYpIHsKKyAgICAqc2xvdCA9IERlY29tcG9zZVR5cGUoc3RkOjpmb3J3YXJkPFQ+KHYpKTsK
KyAgfQorICBzdGF0aWMgdm9pZCBkZXN0cm95KHZvaWQqLCBEZWNvbXBvc2VUeXBlKikge30KKyAg
c3RhdGljIERlY29tcG9zZVR5cGUmIGVsZW1lbnQoc2xvdF90eXBlKiBzbG90KSB7IHJldHVybiAq
c2xvdDsgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBUPgorICBzdGF0aWMgYXV0byBh
cHBseShGJiYgZiwgY29uc3QgVCYgeCkgLT4gZGVjbHR5cGUoc3RkOjpmb3J3YXJkPEY+KGYpKHgs
IHgpKSB7CisgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxGPihmKSh4LCB4KTsKKyAgfQorfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEhhc2gsIHR5cGVuYW1lIEVxPgordm9pZCBUZXN0RGVjb21wb3Nl
KGJvb2wgY29uc3RydWN0X3RocmVlKSB7CisgIERlY29tcG9zZVR5cGUgZWxlbXswfTsKKyAgY29u
c3QgaW50IG9uZSA9IDE7CisgIGNvbnN0IGNoYXIqIHRocmVlX3AgPSAiMyI7CisgIGNvbnN0IGF1
dG8mIHRocmVlID0gdGhyZWVfcDsKKworICByYXdfaGFzaF9zZXQ8RGVjb21wb3NlUG9saWN5LCBI
YXNoLCBFcSwgc3RkOjphbGxvY2F0b3I8aW50Pj4gc2V0MTsKKworICBkZWNvbXBvc2VfY29uc3Ry
dWN0ZWQgPSAwOworICBpbnQgZXhwZWN0ZWRfY29uc3RydWN0ZWQgPSAwOworICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgIHNldDEuaW5z
ZXJ0KGVsZW0pOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9j
b25zdHJ1Y3RlZCk7CisgIHNldDEuaW5zZXJ0KDEpOworICBFWFBFQ1RfRVEoKytleHBlY3RlZF9j
b25zdHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKyAgc2V0MS5lbXBsYWNlKCIzIik7
CisgIEVYUEVDVF9FUSgrK2V4cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBvc2VfY29uc3RydWN0
ZWQpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1
Y3RlZCk7CisKKyAgeyAgLy8gaW5zZXJ0KFQmJikKKyAgICBzZXQxLmluc2VydCgxKTsKKyAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7Cisg
IH0KKworICB7ICAvLyBpbnNlcnQoY29uc3QgVCYpCisgICAgc2V0MS5pbnNlcnQob25lKTsKKyAg
ICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7
CisgIH0KKworICB7ICAvLyBpbnNlcnQoaGludCwgVCYmKQorICAgIHNldDEuaW5zZXJ0KHNldDEu
YmVnaW4oKSwgMSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBv
c2VfY29uc3RydWN0ZWQpOworICB9CisKKyAgeyAgLy8gaW5zZXJ0KGhpbnQsIGNvbnN0IFQmKQor
ICAgIHNldDEuaW5zZXJ0KHNldDEuYmVnaW4oKSwgb25lKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgIH0KKworICB7ICAvLyBl
bXBsYWNlKC4uLikKKyAgICBzZXQxLmVtcGxhY2UoMSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVk
X2NvbnN0cnVjdGVkLCBkZWNvbXBvc2VfY29uc3RydWN0ZWQpOworICAgIHNldDEuZW1wbGFjZSgi
MyIpOworICAgIGV4cGVjdGVkX2NvbnN0cnVjdGVkICs9IGNvbnN0cnVjdF90aHJlZTsKKyAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7Cisg
ICAgc2V0MS5lbXBsYWNlKG9uZSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2NvbnN0cnVjdGVk
LCBkZWNvbXBvc2VfY29uc3RydWN0ZWQpOworICAgIHNldDEuZW1wbGFjZSh0aHJlZSk7CisgICAg
ZXhwZWN0ZWRfY29uc3RydWN0ZWQgKz0gY29uc3RydWN0X3RocmVlOworICAgIEVYUEVDVF9FUShl
eHBlY3RlZF9jb25zdHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKyAgfQorCisgIHsg
IC8vIGVtcGxhY2VfaGludCguLi4pCisgICAgc2V0MS5lbXBsYWNlX2hpbnQoc2V0MS5iZWdpbigp
LCAxKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25z
dHJ1Y3RlZCk7CisgICAgc2V0MS5lbXBsYWNlX2hpbnQoc2V0MS5iZWdpbigpLCAiMyIpOworICAg
IGV4cGVjdGVkX2NvbnN0cnVjdGVkICs9IGNvbnN0cnVjdF90aHJlZTsKKyAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRfY29uc3RydWN0ZWQsIGRlY29tcG9zZV9jb25zdHJ1Y3RlZCk7CisgICAgc2V0MS5l
bXBsYWNlX2hpbnQoc2V0MS5iZWdpbigpLCBvbmUpOworICAgIEVYUEVDVF9FUShleHBlY3RlZF9j
b25zdHJ1Y3RlZCwgZGVjb21wb3NlX2NvbnN0cnVjdGVkKTsKKyAgICBzZXQxLmVtcGxhY2VfaGlu
dChzZXQxLmJlZ2luKCksIHRocmVlKTsKKyAgICBleHBlY3RlZF9jb25zdHJ1Y3RlZCArPSBjb25z
dHJ1Y3RfdGhyZWU7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2NvbnN0cnVjdGVkLCBkZWNvbXBv
c2VfY29uc3RydWN0ZWQpOworICB9Cit9CisKK1RFU1QoVGFibGUsIERlY29tcG9zZSkgeworICBU
ZXN0RGVjb21wb3NlPERlY29tcG9zZUhhc2gsIERlY29tcG9zZUVxPihmYWxzZSk7CisKKyAgc3Ry
dWN0IFRyYW5zcGFyZW50SGFzaEludE92ZXJsb2FkIHsKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShE
ZWNvbXBvc2VUeXBlIGEpIGNvbnN0IHsgcmV0dXJuIGEuaTsgfQorICAgIHNpemVfdCBvcGVyYXRv
cigpKGludCBhKSBjb25zdCB7IHJldHVybiBhOyB9CisgIH07CisgIHN0cnVjdCBUcmFuc3BhcmVu
dEVxSW50T3ZlcmxvYWQgeworICAgIGJvb2wgb3BlcmF0b3IoKShEZWNvbXBvc2VUeXBlIGEsIERl
Y29tcG9zZVR5cGUgYikgY29uc3QgeworICAgICAgcmV0dXJuIGEuaSA9PSBiLmk7CisgICAgfQor
ICAgIGJvb2wgb3BlcmF0b3IoKShEZWNvbXBvc2VUeXBlIGEsIGludCBiKSBjb25zdCB7IHJldHVy
biBhLmkgPT0gYjsgfQorICB9OworICBUZXN0RGVjb21wb3NlPFRyYW5zcGFyZW50SGFzaEludE92
ZXJsb2FkLCBEZWNvbXBvc2VFcT4odHJ1ZSk7CisgIFRlc3REZWNvbXBvc2U8VHJhbnNwYXJlbnRI
YXNoSW50T3ZlcmxvYWQsIFRyYW5zcGFyZW50RXFJbnRPdmVybG9hZD4odHJ1ZSk7CisgIFRlc3RE
ZWNvbXBvc2U8RGVjb21wb3NlSGFzaCwgVHJhbnNwYXJlbnRFcUludE92ZXJsb2FkPih0cnVlKTsK
K30KKworLy8gUmV0dXJucyB0aGUgbGFyZ2VzdCBtIHN1Y2ggdGhhdCBhIHRhYmxlIHdpdGggbSBl
bGVtZW50cyBoYXMgdGhlIHNhbWUgbnVtYmVyCisvLyBvZiBidWNrZXRzIGFzIGEgdGFibGUgd2l0
aCBuIGVsZW1lbnRzLgorc2l6ZV90IE1heERlbnNpdHlTaXplKHNpemVfdCBuKSB7CisgIEludFRh
YmxlIHQ7CisgIHQucmVzZXJ2ZShuKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbjsgKytp
KSB0LmVtcGxhY2UoaSk7CisgIGNvbnN0IHNpemVfdCBjID0gdC5idWNrZXRfY291bnQoKTsKKyAg
d2hpbGUgKGMgPT0gdC5idWNrZXRfY291bnQoKSkgdC5lbXBsYWNlKG4rKyk7CisgIHJldHVybiB0
LnNpemUoKSAtIDE7Cit9CisKK3N0cnVjdCBNb2R1bG8xMDAwSGFzaCB7CisgIHNpemVfdCBvcGVy
YXRvcigpKGludCB4KSBjb25zdCB7IHJldHVybiB4ICUgMTAwMDsgfQorfTsKKworc3RydWN0IE1v
ZHVsbzEwMDBIYXNoVGFibGUKKyAgICA6IHB1YmxpYyByYXdfaGFzaF9zZXQ8SW50UG9saWN5LCBN
b2R1bG8xMDAwSGFzaCwgc3RkOjplcXVhbF90bzxpbnQ+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmFsbG9jYXRvcjxpbnQ+PiB7fTsKKworLy8gVGVzdCB0aGF0IHJlaGFzaCB3aXRo
IG5vIHJlc2l6ZSBoYXBwZW4gaW4gY2FzZSBvZiBtYW55IGRlbGV0ZWQgc2xvdHMuCitURVNUKFRh
YmxlLCBSZWhhc2hXaXRoTm9SZXNpemUpIHsKKyAgTW9kdWxvMTAwMEhhc2hUYWJsZSB0OworICAv
LyBBZGRpbmcgdGhlIHNhbWUgbGVuZ3RoIChhbmQgdGhlIHNhbWUgaGFzaCkgc3RyaW5ncworICAv
LyB0byBoYXZlIGF0IGxlYXN0IGtNaW5GdWxsR3JvdXBzIGdyb3VwcworICAvLyB3aXRoIEdyb3Vw
OjprV2lkdGggY29sbGlzaW9ucy4gVGhlbiBmZWVsIHVwdG8gTWF4RGVuc2l0eVNpemU7CisgIGNv
bnN0IHNpemVfdCBrTWluRnVsbEdyb3VwcyA9IDc7CisgIHN0ZDo6dmVjdG9yPGludD4ga2V5czsK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBNYXhEZW5zaXR5U2l6ZShHcm91cDo6a1dpZHRoICog
a01pbkZ1bGxHcm91cHMpOyArK2kpIHsKKyAgICBpbnQgayA9IGkgKiAxMDAwOworICAgIHQuZW1w
bGFjZShrKTsKKyAgICBrZXlzLnB1c2hfYmFjayhrKTsKKyAgfQorICBjb25zdCBzaXplX3QgY2Fw
YWNpdHkgPSB0LmNhcGFjaXR5KCk7CisKKyAgLy8gUmVtb3ZlIGVsZW1lbnRzIGZyb20gYWxsIGdy
b3VwcyBleGNlcHQgdGhlIGZpcnN0IGFuZCB0aGUgbGFzdCBvbmUuCisgIC8vIEFsbCBlbGVtZW50
cyByZW1vdmVkIGZyb20gZnVsbCBncm91cHMgd2lsbCBiZSBtYXJrZWQgYXMga0RlbGV0ZWQuCisg
IGNvbnN0IHNpemVfdCBlcmFzZV9iZWdpbiA9IEdyb3VwOjprV2lkdGggLyAyOworICBjb25zdCBz
aXplX3QgZXJhc2VfZW5kID0gKHQuc2l6ZSgpIC8gR3JvdXA6OmtXaWR0aCAtIDEpICogR3JvdXA6
OmtXaWR0aDsKKyAgZm9yIChzaXplX3QgaSA9IGVyYXNlX2JlZ2luOyBpIDwgZXJhc2VfZW5kOyAr
K2kpIHsKKyAgICBFWFBFQ1RfRVEoMSwgdC5lcmFzZShrZXlzW2ldKSkgPDwgaTsKKyAgfQorICBr
ZXlzLmVyYXNlKGtleXMuYmVnaW4oKSArIGVyYXNlX2JlZ2luLCBrZXlzLmJlZ2luKCkgKyBlcmFz
ZV9lbmQpOworCisgIGF1dG8gbGFzdF9rZXkgPSBrZXlzLmJhY2soKTsKKyAgc2l6ZV90IGxhc3Rf
a2V5X251bV9wcm9iZXMgPSBHZXRIYXNodGFibGVEZWJ1Z051bVByb2Jlcyh0LCBsYXN0X2tleSk7
CisKKyAgLy8gTWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSB0byBtYWtlIGEgbG90IG9mIHByb2JlcyBm
b3IgbGFzdCBrZXkuCisgIEFTU0VSVF9HVChsYXN0X2tleV9udW1fcHJvYmVzLCBrTWluRnVsbEdy
b3Vwcyk7CisKKyAgaW50IHggPSAxOworICAvLyBJbnNlcnQgYW5kIGVyYXNlIG9uZSBlbGVtZW50
LCBiZWZvcmUgaW5wbGFjZSByZWhhc2ggaGFwcGVuLgorICB3aGlsZSAobGFzdF9rZXlfbnVtX3By
b2JlcyA9PSBHZXRIYXNodGFibGVEZWJ1Z051bVByb2Jlcyh0LCBsYXN0X2tleSkpIHsKKyAgICB0
LmVtcGxhY2UoeCk7CisgICAgQVNTRVJUX0VRKGNhcGFjaXR5LCB0LmNhcGFjaXR5KCkpOworICAg
IC8vIEFsbCBlbGVtZW50cyBzaG91bGQgYmUgdGhlcmUuCisgICAgQVNTRVJUX1RSVUUodC5maW5k
KHgpICE9IHQuZW5kKCkpIDw8IHg7CisgICAgZm9yIChjb25zdCBhdXRvJiBrIDoga2V5cykgewor
ICAgICAgQVNTRVJUX1RSVUUodC5maW5kKGspICE9IHQuZW5kKCkpIDw8IGs7CisgICAgfQorICAg
IHQuZXJhc2UoeCk7CisgICAgKyt4OworICB9Cit9CisKK1RFU1QoVGFibGUsIEluc2VydEVyYXNl
U3RyZXNzVGVzdCkgeworICBJbnRUYWJsZSB0OworICBjb25zdCBzaXplX3Qga01pbkVsZW1lbnRD
b3VudCA9IDI1MDsKKyAgc3RkOjpkZXF1ZTxpbnQ+IGtleXM7CisgIHNpemVfdCBpID0gMDsKKyAg
Zm9yICg7IGkgPCBNYXhEZW5zaXR5U2l6ZShrTWluRWxlbWVudENvdW50KTsgKytpKSB7CisgICAg
dC5lbXBsYWNlKGkpOworICAgIGtleXMucHVzaF9iYWNrKGkpOworICB9CisgIGNvbnN0IHNpemVf
dCBrTnVtSXRlcmF0aW9ucyA9IDEwMDAwMDA7CisgIGZvciAoOyBpIDwga051bUl0ZXJhdGlvbnM7
ICsraSkgeworICAgIEFTU0VSVF9FUSgxLCB0LmVyYXNlKGtleXMuZnJvbnQoKSkpOworICAgIGtl
eXMucG9wX2Zyb250KCk7CisgICAgdC5lbXBsYWNlKGkpOworICAgIGtleXMucHVzaF9iYWNrKGkp
OworICB9Cit9CisKK1RFU1QoVGFibGUsIEluc2VydE92ZXJsb2FkcykgeworICBTdHJpbmdUYWJs
ZSB0OworICAvLyBUaGVzZSBzaG91bGQgYWxsIHRyaWdnZXIgdGhlIGluc2VydChpbml0X3R5cGUp
IG92ZXJsb2FkLgorICB0Lmluc2VydCh7e30sIHt9fSk7CisgIHQuaW5zZXJ0KHsiQUJDIiwge319
KTsKKyAgdC5pbnNlcnQoeyJERUYiLCAiISEhIn0pOworCisgIEVYUEVDVF9USEFUKHQsIFVub3Jk
ZXJlZEVsZW1lbnRzQXJlKFBhaXIoIiIsICIiKSwgUGFpcigiQUJDIiwgIiIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKCJERUYiLCAiISEhIikpKTsKK30KKwor
VEVTVChUYWJsZSwgTGFyZ2VUYWJsZSkgeworICBJbnRUYWJsZSB0OworICBmb3IgKGludDY0X3Qg
aSA9IDA7IGkgIT0gMTAwMDAwOyArK2kpIHQuZW1wbGFjZShpIDw8IDQwKTsKKyAgZm9yIChpbnQ2
NF90IGkgPSAwOyBpICE9IDEwMDAwMDsgKytpKSBBU1NFUlRfRVEoaSA8PCA0MCwgKnQuZmluZChp
IDw8IDQwKSk7Cit9CisKKy8vIFRpbWVvdXQgaWYgY29weSBpcyBxdWFkcmF0aWMgYXMgaXQgd2Fz
IGluIFJ1c3QuCitURVNUKFRhYmxlLCBFbnN1cmVOb25RdWFkcmF0aWNBc0luUnVzdCkgeworICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGtMYXJnZVNpemUgPSAxIDw8IDE1OworCisgIEludFRhYmxlIHQ7
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGtMYXJnZVNpemU7ICsraSkgeworICAgIHQuaW5z
ZXJ0KGkpOworICB9CisKKyAgLy8gSWYgdGhpcyBpcyBxdWFkcmF0aWMsIHRoZSB0ZXN0IHdpbGwg
dGltZW91dC4KKyAgSW50VGFibGUgdDI7CisgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB0KSB0
Mi5pbnNlcnQoZW50cnkpOworfQorCitURVNUKFRhYmxlLCBDbGVhckJ1ZykgeworICBJbnRUYWJs
ZSB0OworICBjb25zdGV4cHIgc2l6ZV90IGNhcGFjaXR5ID0gY29udGFpbmVyX2ludGVybmFsOjpH
cm91cDo6a1dpZHRoIC0gMTsKKyAgY29uc3RleHByIHNpemVfdCBtYXhfc2l6ZSA9IGNhcGFjaXR5
IC8gMjsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhfc2l6ZTsgKytpKSB7CisgICAgdC5p
bnNlcnQoaSk7CisgIH0KKyAgQVNTRVJUX0VRKGNhcGFjaXR5LCB0LmNhcGFjaXR5KCkpOworICBp
bnRwdHJfdCBvcmlnaW5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KCYqdC5maW5kKDIp
KTsKKyAgdC5jbGVhcigpOworICBBU1NFUlRfRVEoY2FwYWNpdHksIHQuY2FwYWNpdHkoKSk7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4X3NpemU7ICsraSkgeworICAgIHQuaW5zZXJ0KGkp
OworICB9CisgIEFTU0VSVF9FUShjYXBhY2l0eSwgdC5jYXBhY2l0eSgpKTsKKyAgaW50cHRyX3Qg
c2Vjb25kID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oJip0LmZpbmQoMikpOworICAvLyBX
ZSBhcmUgY2hlY2tpbmcgdGhhdCBvcmlnaW5hbCBhbmQgc2Vjb25kIGFyZSBjbG9zZSBlbm91Z2gg
dG8gZWFjaCBvdGhlcgorICAvLyB0aGF0IHRoZXkgYXJlIHByb2JhYmx5IHN0aWxsIGluIHRoZSBz
YW1lIGdyb3VwLiAgVGhpcyBpcyBub3Qgc3RyaWN0bHkKKyAgLy8gZ3VhcmFudGVlZC4KKyAgRVhQ
RUNUX0xUKHN0ZDo6YWJzKG9yaWdpbmFsIC0gc2Vjb25kKSwKKyAgICAgICAgICAgIGNhcGFjaXR5
ICogc2l6ZW9mKEludFRhYmxlOjp2YWx1ZV90eXBlKSk7Cit9CisKK1RFU1QoVGFibGUsIEVyYXNl
KSB7CisgIEludFRhYmxlIHQ7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsK
KyAgYXV0byByZXMgPSB0LmVtcGxhY2UoMCk7CisgIEVYUEVDVF9UUlVFKHJlcy5zZWNvbmQpOwor
ICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworICB0LmVyYXNlKHJlcy5maXJzdCk7CisgIEVYUEVD
VF9FUSgwLCB0LnNpemUoKSk7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsK
K30KKworLy8gQ29sbGVjdCBOIGJhZCBrZXlzIGJ5IGZvbGxvd2luZyBhbGdvcml0aG06CisvLyAx
LiBDcmVhdGUgYW4gZW1wdHkgdGFibGUgYW5kIHJlc2VydmUgaXQgdG8gMiAqIE4uCisvLyAyLiBJ
bnNlcnQgTiByYW5kb20gZWxlbWVudHMuCisvLyAzLiBUYWtlIGZpcnN0IEdyb3VwOjprV2lkdGgg
LSAxIHRvIGJhZF9rZXlzIGFycmF5LgorLy8gNC4gQ2xlYXIgdGhlIHRhYmxlIHdpdGhvdXQgcmVz
aXplLgorLy8gNS4gR28gdG8gcG9pbnQgMiB3aGlsZSBOIGtleXMgbm90IGNvbGxlY3RlZAorc3Rk
Ojp2ZWN0b3I8aW50NjRfdD4gQ29sbGVjdEJhZE1lcmdlS2V5cyhzaXplX3QgTikgeworICBzdGF0
aWMgY29uc3RleHByIGludCBrR3JvdXBTaXplID0gR3JvdXA6OmtXaWR0aCAtIDE7CisKKyAgYXV0
byB0b3BrX3JhbmdlID0gW10oc2l6ZV90IGIsIHNpemVfdCBlLCBJbnRUYWJsZSogdCkgLT4gc3Rk
Ojp2ZWN0b3I8aW50NjRfdD4geworICAgIGZvciAoc2l6ZV90IGkgPSBiOyBpICE9IGU7ICsraSkg
eworICAgICAgdC0+ZW1wbGFjZShpKTsKKyAgICB9CisgICAgc3RkOjp2ZWN0b3I8aW50NjRfdD4g
cmVzOworICAgIHJlcy5yZXNlcnZlKGtHcm91cFNpemUpOworICAgIGF1dG8gaXQgPSB0LT5iZWdp
bigpOworICAgIGZvciAoc2l6ZV90IGkgPSBiOyBpICE9IGUgJiYgaSAhPSBiICsga0dyb3VwU2l6
ZTsgKytpLCArK2l0KSB7CisgICAgICByZXMucHVzaF9iYWNrKCppdCk7CisgICAgfQorICAgIHJl
dHVybiByZXM7CisgIH07CisKKyAgc3RkOjp2ZWN0b3I8aW50NjRfdD4gYmFkX2tleXM7CisgIGJh
ZF9rZXlzLnJlc2VydmUoTik7CisgIEludFRhYmxlIHQ7CisgIHQucmVzZXJ2ZShOICogMik7CisK
KyAgZm9yIChzaXplX3QgYiA9IDA7IGJhZF9rZXlzLnNpemUoKSA8IE47IGIgKz0gTikgeworICAg
IGF1dG8ga2V5cyA9IHRvcGtfcmFuZ2UoYiwgYiArIE4sICZ0KTsKKyAgICBiYWRfa2V5cy5pbnNl
cnQoYmFkX2tleXMuZW5kKCksIGtleXMuYmVnaW4oKSwga2V5cy5lbmQoKSk7CisgICAgdC5lcmFz
ZSh0LmJlZ2luKCksIHQuZW5kKCkpOworICAgIEVYUEVDVF9UUlVFKHQuZW1wdHkoKSk7CisgIH0K
KyAgcmV0dXJuIGJhZF9rZXlzOworfQorCitzdHJ1Y3QgUHJvYmVTdGF0cyB7CisgIC8vIE51bWJl
ciBvZiBlbGVtZW50cyB3aXRoIHNwZWNpZmljIHByb2JlIGxlbmd0aCBvdmVyIGFsbCB0ZXN0ZWQg
dGFibGVzLgorICBzdGQ6OnZlY3RvcjxzaXplX3Q+IGFsbF9wcm9iZXNfaGlzdG9ncmFtOworICAv
LyBSYXRpb3MgdG90YWxfcHJvYmVfbGVuZ3RoL3NpemUgZm9yIGV2ZXJ5IHRlc3RlZCB0YWJsZS4K
KyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBzaW5nbGVfdGFibGVfcmF0aW9zOworCisgIGZyaWVuZCBQ
cm9iZVN0YXRzIG9wZXJhdG9yKyhjb25zdCBQcm9iZVN0YXRzJiBhLCBjb25zdCBQcm9iZVN0YXRz
JiBiKSB7CisgICAgUHJvYmVTdGF0cyByZXMgPSBhOworICAgIHJlcy5hbGxfcHJvYmVzX2hpc3Rv
Z3JhbS5yZXNpemUoc3RkOjptYXgocmVzLmFsbF9wcm9iZXNfaGlzdG9ncmFtLnNpemUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuYWxsX3Byb2Jlc19o
aXN0b2dyYW0uc2l6ZSgpKSk7CisgICAgc3RkOjp0cmFuc2Zvcm0oYi5hbGxfcHJvYmVzX2hpc3Rv
Z3JhbS5iZWdpbigpLCBiLmFsbF9wcm9iZXNfaGlzdG9ncmFtLmVuZCgpLAorICAgICAgICAgICAg
ICAgICAgIHJlcy5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5iZWdpbigpLAorICAgICAgICAgICAgICAg
ICAgIHJlcy5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5iZWdpbigpLCBzdGQ6OnBsdXM8c2l6ZV90Pigp
KTsKKyAgICByZXMuc2luZ2xlX3RhYmxlX3JhdGlvcy5pbnNlcnQocmVzLnNpbmdsZV90YWJsZV9y
YXRpb3MuZW5kKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuc2luZ2xl
X3RhYmxlX3JhdGlvcy5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiLnNpbmdsZV90YWJsZV9yYXRpb3MuZW5kKCkpOworICAgIHJldHVybiByZXM7CisgIH0KKwor
ICAvLyBBdmVyYWdlIHJhdGlvIHRvdGFsX3Byb2JlX2xlbmd0aC9zaXplIG92ZXIgdGFibGVzLgor
ICBkb3VibGUgQXZnUmF0aW8oKSBjb25zdCB7CisgICAgcmV0dXJuIHN0ZDo6YWNjdW11bGF0ZShz
aW5nbGVfdGFibGVfcmF0aW9zLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aW5nbGVfdGFibGVfcmF0aW9zLmVuZCgpLCAwLjApIC8KKyAgICAgICAgICAgc2luZ2xlX3RhYmxl
X3JhdGlvcy5zaXplKCk7CisgIH0KKworICAvLyBNYXhpbXVtIHJhdGlvIHRvdGFsX3Byb2JlX2xl
bmd0aC9zaXplIG92ZXIgdGFibGVzLgorICBkb3VibGUgTWF4UmF0aW8oKSBjb25zdCB7CisgICAg
cmV0dXJuICpzdGQ6Om1heF9lbGVtZW50KHNpbmdsZV90YWJsZV9yYXRpb3MuYmVnaW4oKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlX3RhYmxlX3JhdGlvcy5lbmQoKSk7Cisg
IH0KKworICAvLyBQZXJjZW50aWxlIHJhdGlvIHRvdGFsX3Byb2JlX2xlbmd0aC9zaXplIG92ZXIg
dGFibGVzLgorICBkb3VibGUgUGVyY2VudGlsZVJhdGlvKGRvdWJsZSBQZXJjZW50aWxlID0gMC45
NSkgY29uc3QgeworICAgIGF1dG8gciA9IHNpbmdsZV90YWJsZV9yYXRpb3M7CisgICAgYXV0byBt
aWQgPSByLmJlZ2luKCkgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KHIuc2l6ZSgpICogUGVyY2VudGls
ZSk7CisgICAgaWYgKG1pZCAhPSByLmVuZCgpKSB7CisgICAgICBzdGQ6Om50aF9lbGVtZW50KHIu
YmVnaW4oKSwgbWlkLCByLmVuZCgpKTsKKyAgICAgIHJldHVybiAqbWlkOworICAgIH0gZWxzZSB7
CisgICAgICByZXR1cm4gTWF4UmF0aW8oKTsKKyAgICB9CisgIH0KKworICAvLyBNYXhpbXVtIHBy
b2JlIGxlbmd0aCBvdmVyIGFsbCBlbGVtZW50cyBhbmQgYWxsIHRhYmxlcy4KKyAgc2l6ZV90IE1h
eFByb2JlKCkgY29uc3QgeyByZXR1cm4gYWxsX3Byb2Jlc19oaXN0b2dyYW0uc2l6ZSgpOyB9CisK
KyAgLy8gRnJhY3Rpb24gb2YgZWxlbWVudHMgd2l0aCBzcGVjaWZpZWQgcHJvYmUgbGVuZ3RoLgor
ICBzdGQ6OnZlY3Rvcjxkb3VibGU+IFByb2JlTm9ybWFsaXplZEhpc3RvZ3JhbSgpIGNvbnN0IHsK
KyAgICBkb3VibGUgdG90YWxfZWxlbWVudHMgPSBzdGQ6OmFjY3VtdWxhdGUoYWxsX3Byb2Jlc19o
aXN0b2dyYW0uYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWxsX3Byb2Jlc19oaXN0b2dyYW0uZW5kKCksIDB1bGwpOworICAgIHN0ZDo6dmVjdG9y
PGRvdWJsZT4gcmVzOworICAgIGZvciAoc2l6ZV90IHAgOiBhbGxfcHJvYmVzX2hpc3RvZ3JhbSkg
eworICAgICAgcmVzLnB1c2hfYmFjayhwIC8gdG90YWxfZWxlbWVudHMpOworICAgIH0KKyAgICBy
ZXR1cm4gcmVzOworICB9CisKKyAgc2l6ZV90IFBlcmNlbnRpbGVQcm9iZShkb3VibGUgUGVyY2Vu
dGlsZSA9IDAuOTkpIGNvbnN0IHsKKyAgICBzaXplX3QgaWR4ID0gMDsKKyAgICBmb3IgKGRvdWJs
ZSBwIDogUHJvYmVOb3JtYWxpemVkSGlzdG9ncmFtKCkpIHsKKyAgICAgIGlmIChQZXJjZW50aWxl
ID4gcCkgeworICAgICAgICBQZXJjZW50aWxlIC09IHA7CisgICAgICAgICsraWR4OworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGlkeDsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IGlkeDsKKyAgfQorCisgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3Ry
ZWFtJiBvdXQsIGNvbnN0IFByb2JlU3RhdHMmIHMpIHsKKyAgICBvdXQgPDwgIntBdmdSYXRpbzoi
IDw8IHMuQXZnUmF0aW8oKSA8PCAiLCBNYXhSYXRpbzoiIDw8IHMuTWF4UmF0aW8oKQorICAgICAg
ICA8PCAiLCBQZXJjZW50aWxlUmF0aW86IiA8PCBzLlBlcmNlbnRpbGVSYXRpbygpCisgICAgICAg
IDw8ICIsIE1heFByb2JlOiIgPDwgcy5NYXhQcm9iZSgpIDw8ICIsIFByb2Jlcz1bIjsKKyAgICBm
b3IgKGRvdWJsZSBwIDogcy5Qcm9iZU5vcm1hbGl6ZWRIaXN0b2dyYW0oKSkgeworICAgICAgb3V0
IDw8IHAgPDwgIiwiOworICAgIH0KKyAgICBvdXQgPDwgIl19IjsKKworICAgIHJldHVybiBvdXQ7
CisgIH0KK307CisKK3N0cnVjdCBFeHBlY3RlZFN0YXRzIHsKKyAgZG91YmxlIGF2Z19yYXRpbzsK
KyAgZG91YmxlIG1heF9yYXRpbzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91
YmxlPj4gcGVjZW50aWxlX3JhdGlvczsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwg
ZG91YmxlPj4gcGVjZW50aWxlX3Byb2JlczsKKworICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3V0LCBjb25zdCBFeHBlY3RlZFN0YXRzJiBzKSB7CisgICAg
b3V0IDw8ICJ7QXZnUmF0aW86IiA8PCBzLmF2Z19yYXRpbyA8PCAiLCBNYXhSYXRpbzoiIDw8IHMu
bWF4X3JhdGlvCisgICAgICAgIDw8ICIsIFBlcmNlbnRpbGVSYXRpb3M6IFsiOworICAgIGZvciAo
YXV0byBlbCA6IHMucGVjZW50aWxlX3JhdGlvcykgeworICAgICAgb3V0IDw8IGVsLmZpcnN0IDw8
ICI6IiA8PCBlbC5zZWNvbmQgPDwgIiwgIjsKKyAgICB9CisgICAgb3V0IDw8ICJdLCBQZXJjZW50
aWxlUHJvYmVzOiBbIjsKKyAgICBmb3IgKGF1dG8gZWwgOiBzLnBlY2VudGlsZV9wcm9iZXMpIHsK
KyAgICAgIG91dCA8PCBlbC5maXJzdCA8PCAiOiIgPDwgZWwuc2Vjb25kIDw8ICIsICI7CisgICAg
fQorICAgIG91dCA8PCAiXX0iOworCisgICAgcmV0dXJuIG91dDsKKyAgfQorfTsKKwordm9pZCBW
ZXJpZnlTdGF0cyhzaXplX3Qgc2l6ZSwgY29uc3QgRXhwZWN0ZWRTdGF0cyYgZXhwLAorICAgICAg
ICAgICAgICAgICBjb25zdCBQcm9iZVN0YXRzJiBzdGF0cykgeworICBFWFBFQ1RfTFQoc3RhdHMu
QXZnUmF0aW8oKSwgZXhwLmF2Z19yYXRpbykgPDwgc2l6ZSA8PCAiICIgPDwgc3RhdHM7CisgIEVY
UEVDVF9MVChzdGF0cy5NYXhSYXRpbygpLCBleHAubWF4X3JhdGlvKSA8PCBzaXplIDw8ICIgIiA8
PCBzdGF0czsKKyAgZm9yIChhdXRvIHByIDogZXhwLnBlY2VudGlsZV9yYXRpb3MpIHsKKyAgICBF
WFBFQ1RfTEUoc3RhdHMuUGVyY2VudGlsZVJhdGlvKHByLmZpcnN0KSwgcHIuc2Vjb25kKQorICAg
ICAgICA8PCBzaXplIDw8ICIgIiA8PCBwci5maXJzdCA8PCAiICIgPDwgc3RhdHM7CisgIH0KKwor
ICBmb3IgKGF1dG8gcHIgOiBleHAucGVjZW50aWxlX3Byb2JlcykgeworICAgIEVYUEVDVF9MRShz
dGF0cy5QZXJjZW50aWxlUHJvYmUocHIuZmlyc3QpLCBwci5zZWNvbmQpCisgICAgICAgIDw8IHNp
emUgPDwgIiAiIDw8IHByLmZpcnN0IDw8ICIgIiA8PCBzdGF0czsKKyAgfQorfQorCit1c2luZyBQ
cm9iZVN0YXRzUGVyU2l6ZSA9IHN0ZDo6bWFwPHNpemVfdCwgUHJvYmVTdGF0cz47CisKKy8vIENv
bGxlY3QgdG90YWwgUHJvYmVTdGF0cyBvbiBudW1faXRlcnMgaXRlcmF0aW9ucyBvZiB0aGUgZm9s
bG93aW5nIGFsZ29yaXRobToKKy8vIDEuIENyZWF0ZSBuZXcgdGFibGUgYW5kIHJlc2VydmUgaXQg
dG8ga2V5cy5zaXplKCkgKiAyCisvLyAyLiBJbnNlcnQgYWxsIGtleXMgeG9yZWQgd2l0aCBzZWVk
CisvLyAzLiBDb2xsZWN0IFByb2JlU3RhdHMgZnJvbSBmaW5hbCB0YWJsZS4KK1Byb2JlU3RhdHMg
Q29sbGVjdFByb2JlU3RhdHNPbktleXNYb3JlZFdpdGhTZWVkKGNvbnN0IHN0ZDo6dmVjdG9yPGlu
dDY0X3Q+JiBrZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG51bV9pdGVycykgeworICBjb25zdCBzaXplX3QgcmVzZXJ2ZV9zaXplID0g
a2V5cy5zaXplKCkgKiAyOworCisgIFByb2JlU3RhdHMgc3RhdHM7CisKKyAgaW50NjRfdCBzZWVk
ID0gMHg3MWIxYTE5YjkwN2Q2ZTMzOworICB3aGlsZSAobnVtX2l0ZXJzLS0pIHsKKyAgICBzZWVk
ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNlZWQpICogMTcg
KyAxMyk7CisgICAgSW50VGFibGUgdDE7CisgICAgdDEucmVzZXJ2ZShyZXNlcnZlX3NpemUpOwor
ICAgIGZvciAoY29uc3QgYXV0byYga2V5IDoga2V5cykgeworICAgICAgdDEuZW1wbGFjZShrZXkg
XiBzZWVkKTsKKyAgICB9CisKKyAgICBhdXRvIHByb2JlX2hpc3RvZ3JhbSA9IEdldEhhc2h0YWJs
ZURlYnVnTnVtUHJvYmVzSGlzdG9ncmFtKHQxKTsKKyAgICBzdGF0cy5hbGxfcHJvYmVzX2hpc3Rv
Z3JhbS5yZXNpemUoCisgICAgICAgIHN0ZDo6bWF4KHN0YXRzLmFsbF9wcm9iZXNfaGlzdG9ncmFt
LnNpemUoKSwgcHJvYmVfaGlzdG9ncmFtLnNpemUoKSkpOworICAgIHN0ZDo6dHJhbnNmb3JtKHBy
b2JlX2hpc3RvZ3JhbS5iZWdpbigpLCBwcm9iZV9oaXN0b2dyYW0uZW5kKCksCisgICAgICAgICAg
ICAgICAgICAgc3RhdHMuYWxsX3Byb2Jlc19oaXN0b2dyYW0uYmVnaW4oKSwKKyAgICAgICAgICAg
ICAgICAgICBzdGF0cy5hbGxfcHJvYmVzX2hpc3RvZ3JhbS5iZWdpbigpLCBzdGQ6OnBsdXM8c2l6
ZV90PigpKTsKKworICAgIHNpemVfdCB0b3RhbF9wcm9iZV9zZXFfbGVuZ3RoID0gMDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2JlX2hpc3RvZ3JhbS5zaXplKCk7ICsraSkgeworICAg
ICAgdG90YWxfcHJvYmVfc2VxX2xlbmd0aCArPSBpICogcHJvYmVfaGlzdG9ncmFtW2ldOworICAg
IH0KKyAgICBzdGF0cy5zaW5nbGVfdGFibGVfcmF0aW9zLnB1c2hfYmFjayh0b3RhbF9wcm9iZV9z
ZXFfbGVuZ3RoICogMS4wIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrZXlzLnNpemUoKSk7CisgICAgdDEuZXJhc2UodDEuYmVnaW4oKSwgdDEuZW5kKCkpOworICB9
CisgIHJldHVybiBzdGF0czsKK30KKworRXhwZWN0ZWRTdGF0cyBYb3JTZWVkRXhwZWN0ZWRTdGF0
cygpIHsKKyAgY29uc3RleHByIGJvb2wga1JhbmRvbWl6ZXNJbnNlcnRzID0KKyNpZiBOREVCVUcK
KyAgICAgIGZhbHNlOworI2Vsc2UgICAvLyBOREVCVUcKKyAgICAgIHRydWU7CisjZW5kaWYgIC8v
IE5ERUJVRworCisgIC8vIFRoZSBlZmZlY3RpdmUgbG9hZCBmYWN0b3IgaXMgbGFyZ2VyIGluIG5v
bi1vcHQgbW9kZSBiZWNhdXNlIHdlIGluc2VydAorICAvLyBlbGVtZW50cyBvdXQgb2Ygb3JkZXIu
CisgIHN3aXRjaCAoY29udGFpbmVyX2ludGVybmFsOjpHcm91cDo6a1dpZHRoKSB7CisgICAgY2Fz
ZSA4OgorICAgICAgaWYgKGtSYW5kb21pemVzSW5zZXJ0cykgeworICByZXR1cm4gezAuMDUsCisg
ICAgICAgICAgMS4wLAorICAgICAgICAgIHt7MC45NSwgMC41fX0sCisgICAgICAgICAge3swLjk1
LCAwfSwgezAuOTksIDJ9LCB7MC45OTksIDR9LCB7MC45OTk5LCAxMH19fTsKKyAgICAgIH0gZWxz
ZSB7CisgIHJldHVybiB7MC4wNSwKKyAgICAgICAgICAyLjAsCisgICAgICAgICAge3swLjk1LCAw
LjF9fSwKKyAgICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgMn0sIHswLjk5OSwgNH0sIHswLjk5
OTksIDEwfX19OworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSAxNjoKKyAgICAgIGlm
IChrUmFuZG9taXplc0luc2VydHMpIHsKKyAgICAgICAgcmV0dXJuIHswLjEsCisgICAgICAgICAg
ICAgICAgMS4wLAorICAgICAgICAgICAgICAgIHt7MC45NSwgMC4xfX0sCisgICAgICAgICAgICAg
ICAge3swLjk1LCAwfSwgezAuOTksIDF9LCB7MC45OTksIDh9LCB7MC45OTk5LCAxNX19fTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiB7MC4wNSwKKyAgICAgICAgICAgICAgICAxLjAs
CisgICAgICAgICAgICAgICAge3swLjk1LCAwLjA1fX0sCisgICAgICAgICAgICAgICAge3swLjk1
LCAwfSwgezAuOTksIDF9LCB7MC45OTksIDR9LCB7MC45OTk5LCAxMH19fTsKKyAgICAgIH0KKyAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBBQlNMX1JBV19MT0coRkFUQUwsICIlcyIs
ICJVbmtub3duIEdyb3VwIHdpZHRoIik7CisgIH0KKyAgcmV0dXJuIHt9OworfQorVEVTVChUYWJs
ZSwgRElTQUJMRURfRW5zdXJlTm9uUXVhZHJhdGljVG9wTlhvclNlZWRCeVByb2JlU2VxTGVuZ3Ro
KSB7CisgIFByb2JlU3RhdHNQZXJTaXplIHN0YXRzOworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IHNp
emVzID0ge0dyb3VwOjprV2lkdGggPDwgNSwgR3JvdXA6OmtXaWR0aCA8PCAxMH07CisgIGZvciAo
c2l6ZV90IHNpemUgOiBzaXplcykgeworICAgIHN0YXRzW3NpemVdID0KKyAgICAgICAgQ29sbGVj
dFByb2JlU3RhdHNPbktleXNYb3JlZFdpdGhTZWVkKENvbGxlY3RCYWRNZXJnZUtleXMoc2l6ZSks
IDIwMCk7CisgIH0KKyAgYXV0byBleHBlY3RlZCA9IFhvclNlZWRFeHBlY3RlZFN0YXRzKCk7Cisg
IGZvciAoc2l6ZV90IHNpemUgOiBzaXplcykgeworICAgIGF1dG8mIHN0YXQgPSBzdGF0c1tzaXpl
XTsKKyAgICBWZXJpZnlTdGF0cyhzaXplLCBleHBlY3RlZCwgc3RhdCk7CisgIH0KK30KKworLy8g
Q29sbGVjdCB0b3RhbCBQcm9iZVN0YXRzIG9uIG51bV9pdGVycyBpdGVyYXRpb25zIG9mIHRoZSBm
b2xsb3dpbmcgYWxnb3JpdGhtOgorLy8gMS4gQ3JlYXRlIG5ldyB0YWJsZQorLy8gMi4gU2VsZWN0
IDEwJSBvZiBrZXlzIGFuZCBpbnNlcnQgMTAgZWxlbWVudHMga2V5ICogMTcgKyBqICogMTMKKy8v
IDMuIENvbGxlY3QgUHJvYmVTdGF0cyBmcm9tIGZpbmFsIHRhYmxlCitQcm9iZVN0YXRzIENvbGxl
Y3RQcm9iZVN0YXRzT25MaW5lYXJseVRyYW5zZm9ybWVkS2V5cygKKyAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxpbnQ2NF90PiYga2V5cywgc2l6ZV90IG51bV9pdGVycykgeworICBQcm9iZVN0YXRzIHN0
YXRzOworCisgIHN0ZDo6cmFuZG9tX2RldmljZSByZDsKKyAgc3RkOjptdDE5OTM3IHJuZyhyZCgp
KTsKKyAgYXV0byBsaW5lYXJfdHJhbnNmb3JtID0gW10oc2l6ZV90IHgsIHNpemVfdCB5KSB7IHJl
dHVybiB4ICogMTcgKyB5ICogMTM7IH07CisgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9u
PHNpemVfdD4gZGlzdCgwLCBrZXlzLnNpemUoKS0xKTsKKyAgd2hpbGUgKG51bV9pdGVycy0tKSB7
CisgICAgSW50VGFibGUgdDE7CisgICAgc2l6ZV90IG51bV9rZXlzID0ga2V5cy5zaXplKCkgLyAx
MDsKKyAgICBzaXplX3Qgc3RhcnQgPSBkaXN0KHJuZyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgIT0gbnVtX2tleXM7ICsraSkgeworICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogIT0gMTA7
ICsraikgeworICAgICAgICB0MS5lbXBsYWNlKGxpbmVhcl90cmFuc2Zvcm0oa2V5c1soaSArIHN0
YXJ0KSAlIGtleXMuc2l6ZSgpXSwgaikpOworICAgICAgfQorICAgIH0KKworICAgIGF1dG8gcHJv
YmVfaGlzdG9ncmFtID0gR2V0SGFzaHRhYmxlRGVidWdOdW1Qcm9iZXNIaXN0b2dyYW0odDEpOwor
ICAgIHN0YXRzLmFsbF9wcm9iZXNfaGlzdG9ncmFtLnJlc2l6ZSgKKyAgICAgICAgc3RkOjptYXgo
c3RhdHMuYWxsX3Byb2Jlc19oaXN0b2dyYW0uc2l6ZSgpLCBwcm9iZV9oaXN0b2dyYW0uc2l6ZSgp
KSk7CisgICAgc3RkOjp0cmFuc2Zvcm0ocHJvYmVfaGlzdG9ncmFtLmJlZ2luKCksIHByb2JlX2hp
c3RvZ3JhbS5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICBzdGF0cy5hbGxfcHJvYmVzX2hpc3Rv
Z3JhbS5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgIHN0YXRzLmFsbF9wcm9iZXNfaGlzdG9n
cmFtLmJlZ2luKCksIHN0ZDo6cGx1czxzaXplX3Q+KCkpOworCisgICAgc2l6ZV90IHRvdGFsX3By
b2JlX3NlcV9sZW5ndGggPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvYmVfaGlz
dG9ncmFtLnNpemUoKTsgKytpKSB7CisgICAgICB0b3RhbF9wcm9iZV9zZXFfbGVuZ3RoICs9IGkg
KiBwcm9iZV9oaXN0b2dyYW1baV07CisgICAgfQorICAgIHN0YXRzLnNpbmdsZV90YWJsZV9yYXRp
b3MucHVzaF9iYWNrKHRvdGFsX3Byb2JlX3NlcV9sZW5ndGggKiAxLjAgLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQxLnNpemUoKSk7CisgICAgdDEuZXJhc2UodDEu
YmVnaW4oKSwgdDEuZW5kKCkpOworICB9CisgIHJldHVybiBzdGF0czsKK30KKworRXhwZWN0ZWRT
dGF0cyBMaW5lYXJUcmFuc2Zvcm1FeHBlY3RlZFN0YXRzKCkgeworICBjb25zdGV4cHIgYm9vbCBr
UmFuZG9taXplc0luc2VydHMgPQorI2lmIE5ERUJVRworICAgICAgZmFsc2U7CisjZWxzZSAgIC8v
IE5ERUJVRworICAgICAgdHJ1ZTsKKyNlbmRpZiAgLy8gTkRFQlVHCisKKyAgLy8gVGhlIGVmZmVj
dGl2ZSBsb2FkIGZhY3RvciBpcyBsYXJnZXIgaW4gbm9uLW9wdCBtb2RlIGJlY2F1c2Ugd2UgaW5z
ZXJ0CisgIC8vIGVsZW1lbnRzIG91dCBvZiBvcmRlci4KKyAgc3dpdGNoIChjb250YWluZXJfaW50
ZXJuYWw6Okdyb3VwOjprV2lkdGgpIHsKKyAgICBjYXNlIDg6CisgICAgICBpZiAoa1JhbmRvbWl6
ZXNJbnNlcnRzKSB7CisgICAgICAgIHJldHVybiB7MC4xLAorICAgICAgICAgICAgICAgIDAuNSwK
KyAgICAgICAgICAgICAgICB7ezAuOTUsIDAuM319LAorICAgICAgICAgICAgICAgIHt7MC45NSwg
MH0sIHswLjk5LCAxfSwgezAuOTk5LCA4fSwgezAuOTk5OSwgMTV9fX07CisgICAgICB9IGVsc2Ug
eworICAgICAgICByZXR1cm4gezAuMTUsCisgICAgICAgICAgICAgICAgMC41LAorICAgICAgICAg
ICAgICAgIHt7MC45NSwgMC4zfX0sCisgICAgICAgICAgICAgICAge3swLjk1LCAwfSwgezAuOTks
IDN9LCB7MC45OTksIDE1fSwgezAuOTk5OSwgMjV9fX07CisgICAgICB9CisgICAgICBicmVhazsK
KyAgICBjYXNlIDE2OgorICAgICAgaWYgKGtSYW5kb21pemVzSW5zZXJ0cykgeworICAgICAgICBy
ZXR1cm4gezAuMSwKKyAgICAgICAgICAgICAgICAwLjQsCisgICAgICAgICAgICAgICAge3swLjk1
LCAwLjN9fSwKKyAgICAgICAgICAgICAgICB7ezAuOTUsIDB9LCB7MC45OSwgMX0sIHswLjk5OSwg
OH0sIHswLjk5OTksIDE1fX19OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHswLjA1
LAorICAgICAgICAgICAgICAgIDAuMiwKKyAgICAgICAgICAgICAgICB7ezAuOTUsIDAuMX19LAor
ICAgICAgICAgICAgICAgIHt7MC45NSwgMH0sIHswLjk5LCAxfSwgezAuOTk5LCA2fSwgezAuOTk5
OSwgMTB9fX07CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgQUJT
TF9SQVdfTE9HKEZBVEFMLCAiJXMiLCAiVW5rbm93biBHcm91cCB3aWR0aCIpOworICB9CisgIHJl
dHVybiB7fTsKK30KK1RFU1QoVGFibGUsIERJU0FCTEVEX0Vuc3VyZU5vblF1YWRyYXRpY1RvcE5M
aW5lYXJUcmFuc2Zvcm1CeVByb2JlU2VxTGVuZ3RoKSB7CisgIFByb2JlU3RhdHNQZXJTaXplIHN0
YXRzOworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IHNpemVzID0ge0dyb3VwOjprV2lkdGggPDwgNSwg
R3JvdXA6OmtXaWR0aCA8PCAxMH07CisgIGZvciAoc2l6ZV90IHNpemUgOiBzaXplcykgeworICAg
IHN0YXRzW3NpemVdID0gQ29sbGVjdFByb2JlU3RhdHNPbkxpbmVhcmx5VHJhbnNmb3JtZWRLZXlz
KAorICAgICAgICBDb2xsZWN0QmFkTWVyZ2VLZXlzKHNpemUpLCAzMDApOworICB9CisgIGF1dG8g
ZXhwZWN0ZWQgPSBMaW5lYXJUcmFuc2Zvcm1FeHBlY3RlZFN0YXRzKCk7CisgIGZvciAoc2l6ZV90
IHNpemUgOiBzaXplcykgeworICAgIGF1dG8mIHN0YXQgPSBzdGF0c1tzaXplXTsKKyAgICBWZXJp
ZnlTdGF0cyhzaXplLCBleHBlY3RlZCwgc3RhdCk7CisgIH0KK30KKworVEVTVChUYWJsZSwgRXJh
c2VDb2xsaXNpb24pIHsKKyAgQmFkVGFibGUgdDsKKworICAvLyAxIDIgMworICB0LmVtcGxhY2Uo
MSk7CisgIHQuZW1wbGFjZSgyKTsKKyAgdC5lbXBsYWNlKDMpOworICBFWFBFQ1RfVEhBVCgqdC5m
aW5kKDEpLCAxKTsKKyAgRVhQRUNUX1RIQVQoKnQuZmluZCgyKSwgMik7CisgIEVYUEVDVF9USEFU
KCp0LmZpbmQoMyksIDMpOworICBFWFBFQ1RfRVEoMywgdC5zaXplKCkpOworCisgIC8vIDEgREVM
RVRFRCAzCisgIHQuZXJhc2UodC5maW5kKDIpKTsKKyAgRVhQRUNUX1RIQVQoKnQuZmluZCgxKSwg
MSk7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgyKSA9PSB0LmVuZCgpKTsKKyAgRVhQRUNUX1RIQVQo
KnQuZmluZCgzKSwgMyk7CisgIEVYUEVDVF9FUSgyLCB0LnNpemUoKSk7CisKKyAgLy8gREVMRVRF
RCBERUxFVEVEIDMKKyAgdC5lcmFzZSh0LmZpbmQoMSkpOworICBFWFBFQ1RfVFJVRSh0LmZpbmQo
MSkgPT0gdC5lbmQoKSk7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgyKSA9PSB0LmVuZCgpKTsKKyAg
RVhQRUNUX1RIQVQoKnQuZmluZCgzKSwgMyk7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisK
KyAgLy8gREVMRVRFRCBERUxFVEVEIERFTEVURUQKKyAgdC5lcmFzZSh0LmZpbmQoMykpOworICBF
WFBFQ1RfVFJVRSh0LmZpbmQoMSkgPT0gdC5lbmQoKSk7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgy
KSA9PSB0LmVuZCgpKTsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDMpID09IHQuZW5kKCkpOworICBF
WFBFQ1RfRVEoMCwgdC5zaXplKCkpOworfQorCitURVNUKFRhYmxlLCBFcmFzZUluc2VydFByb2Jp
bmcpIHsKKyAgQmFkVGFibGUgdCgxMDApOworCisgIC8vIDEgMiAzIDQKKyAgdC5lbXBsYWNlKDEp
OworICB0LmVtcGxhY2UoMik7CisgIHQuZW1wbGFjZSgzKTsKKyAgdC5lbXBsYWNlKDQpOworCisg
IC8vIDEgREVMRVRFRCAzIERFTEVURUQKKyAgdC5lcmFzZSh0LmZpbmQoMikpOworICB0LmVyYXNl
KHQuZmluZCg0KSk7CisKKyAgLy8gMSAxMCAzIDExIDEyCisgIHQuZW1wbGFjZSgxMCk7CisgIHQu
ZW1wbGFjZSgxMSk7CisgIHQuZW1wbGFjZSgxMik7CisKKyAgRVhQRUNUX0VRKDUsIHQuc2l6ZSgp
KTsKKyAgRVhQRUNUX1RIQVQodCwgVW5vcmRlcmVkRWxlbWVudHNBcmUoMSwgMTAsIDMsIDExLCAx
MikpOworfQorCitURVNUKFRhYmxlLCBDbGVhcikgeworICBJbnRUYWJsZSB0OworICBFWFBFQ1Rf
VFJVRSh0LmZpbmQoMCkgPT0gdC5lbmQoKSk7CisgIHQuY2xlYXIoKTsKKyAgRVhQRUNUX1RSVUUo
dC5maW5kKDApID09IHQuZW5kKCkpOworICBhdXRvIHJlcyA9IHQuZW1wbGFjZSgwKTsKKyAgRVhQ
RUNUX1RSVUUocmVzLnNlY29uZCk7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIHQuY2xl
YXIoKTsKKyAgRVhQRUNUX0VRKDAsIHQuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUodC5maW5kKDAp
ID09IHQuZW5kKCkpOworfQorCitURVNUKFRhYmxlLCBTd2FwKSB7CisgIEludFRhYmxlIHQ7Cisg
IEVYUEVDVF9UUlVFKHQuZmluZCgwKSA9PSB0LmVuZCgpKTsKKyAgYXV0byByZXMgPSB0LmVtcGxh
Y2UoMCk7CisgIEVYUEVDVF9UUlVFKHJlcy5zZWNvbmQpOworICBFWFBFQ1RfRVEoMSwgdC5zaXpl
KCkpOworICBJbnRUYWJsZSB1OworICB0LnN3YXAodSk7CisgIEVYUEVDVF9FUSgwLCB0LnNpemUo
KSk7CisgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7CisgIEVYUEVDVF9UUlVFKHQuZmluZCgwKSA9
PSB0LmVuZCgpKTsKKyAgRVhQRUNUX1RIQVQoKnUuZmluZCgwKSwgMCk7Cit9CisKK1RFU1QoVGFi
bGUsIFJlaGFzaCkgeworICBJbnRUYWJsZSB0OworICBFWFBFQ1RfVFJVRSh0LmZpbmQoMCkgPT0g
dC5lbmQoKSk7CisgIHQuZW1wbGFjZSgwKTsKKyAgdC5lbXBsYWNlKDEpOworICBFWFBFQ1RfRVEo
MiwgdC5zaXplKCkpOworICB0LnJlaGFzaCgxMjgpOworICBFWFBFQ1RfRVEoMiwgdC5zaXplKCkp
OworICBFWFBFQ1RfVEhBVCgqdC5maW5kKDApLCAwKTsKKyAgRVhQRUNUX1RIQVQoKnQuZmluZCgx
KSwgMSk7Cit9CisKK1RFU1QoVGFibGUsIFJlaGFzaERvZXNOb3RSZWhhc2hXaGVuTm90TmVjZXNz
YXJ5KSB7CisgIEludFRhYmxlIHQ7CisgIHQuZW1wbGFjZSgwKTsKKyAgdC5lbXBsYWNlKDEpOwor
ICBhdXRvKiBwID0gJip0LmZpbmQoMCk7CisgIHQucmVoYXNoKDEpOworICBFWFBFQ1RfRVEocCwg
Jip0LmZpbmQoMCkpOworfQorCitURVNUKFRhYmxlLCBSZWhhc2haZXJvRG9lc05vdEFsbG9jYXRl
T25FbXB0eVRhYmxlKSB7CisgIEludFRhYmxlIHQ7CisgIHQucmVoYXNoKDApOworICBFWFBFQ1Rf
RVEoMCwgdC5idWNrZXRfY291bnQoKSk7Cit9CisKK1RFU1QoVGFibGUsIFJlaGFzaFplcm9EZWFs
bG9jYXRlc0VtcHR5VGFibGUpIHsKKyAgSW50VGFibGUgdDsKKyAgdC5lbXBsYWNlKDApOworICB0
LmNsZWFyKCk7CisgIEVYUEVDVF9ORSgwLCB0LmJ1Y2tldF9jb3VudCgpKTsKKyAgdC5yZWhhc2go
MCk7CisgIEVYUEVDVF9FUSgwLCB0LmJ1Y2tldF9jb3VudCgpKTsKK30KKworVEVTVChUYWJsZSwg
UmVoYXNoWmVyb0ZvcmNlc1JlaGFzaCkgeworICBJbnRUYWJsZSB0OworICB0LmVtcGxhY2UoMCk7
CisgIHQuZW1wbGFjZSgxKTsKKyAgYXV0byogcCA9ICYqdC5maW5kKDApOworICB0LnJlaGFzaCgw
KTsKKyAgRVhQRUNUX05FKHAsICYqdC5maW5kKDApKTsKK30KKworVEVTVChUYWJsZSwgQ29uc3Ry
dWN0RnJvbUluaXRMaXN0KSB7CisgIHVzaW5nIFAgPSBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0
ZDo6c3RyaW5nPjsKKyAgc3RydWN0IFEgeworICAgIG9wZXJhdG9yIFAoKSBjb25zdCB7IHJldHVy
biB7fTsgfQorICB9OworICBTdHJpbmdUYWJsZSB0ID0ge1AoKSwgUSgpLCB7fSwge3t9LCB7fX19
OworfQorCitURVNUKFRhYmxlLCBDb3B5Q29uc3RydWN0KSB7CisgIEludFRhYmxlIHQ7CisgIHQu
bWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsKKyAgdC5lbXBsYWNlKDApOworICBFWFBFQ1RfRVEoMSwg
dC5zaXplKCkpOworICB7CisgICAgSW50VGFibGUgdSh0KTsKKyAgICBFWFBFQ1RfRVEoMSwgdS5z
aXplKCkpOworICAgIEVYUEVDVF9FUSh0Lm1heF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9sb2FkX2Zh
Y3RvcigpKTsKKyAgICBFWFBFQ1RfVEhBVCgqdS5maW5kKDApLCAwKTsKKyAgfQorICB7CisgICAg
SW50VGFibGUgdXt0fTsKKyAgICBFWFBFQ1RfRVEoMSwgdS5zaXplKCkpOworICAgIEVYUEVDVF9F
USh0Lm1heF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9sb2FkX2ZhY3RvcigpKTsKKyAgICBFWFBFQ1Rf
VEhBVCgqdS5maW5kKDApLCAwKTsKKyAgfQorICB7CisgICAgSW50VGFibGUgdSA9IHQ7CisgICAg
RVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEodC5tYXhfbG9hZF9mYWN0b3Io
KSwgdS5tYXhfbG9hZF9mYWN0b3IoKSk7CisgICAgRVhQRUNUX1RIQVQoKnUuZmluZCgwKSwgMCk7
CisgIH0KK30KKworVEVTVChUYWJsZSwgQ29weUNvbnN0cnVjdFdpdGhBbGxvYykgeworICBTdHJp
bmdUYWJsZSB0OworICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7CisgIHQuZW1wbGFjZSgiYSIs
ICJiIik7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIFN0cmluZ1RhYmxlIHUodCwgQWxs
b2M8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+KCkpOworICBFWFBFQ1RfRVEo
MSwgdS5zaXplKCkpOworICBFWFBFQ1RfRVEodC5tYXhfbG9hZF9mYWN0b3IoKSwgdS5tYXhfbG9h
ZF9mYWN0b3IoKSk7CisgIEVYUEVDVF9USEFUKCp1LmZpbmQoImEiKSwgUGFpcigiYSIsICJiIikp
OworfQorCitzdHJ1Y3QgRXhwbGljaXRBbGxvY0ludFRhYmxlCisgICAgOiByYXdfaGFzaF9zZXQ8
SW50UG9saWN5LCBjb250YWluZXJfaW50ZXJuYWw6Omhhc2hfZGVmYXVsdF9oYXNoPGludDY0X3Q+
LAorICAgICAgICAgICAgICAgICAgIHN0ZDo6ZXF1YWxfdG88aW50NjRfdD4sIEFsbG9jPGludDY0
X3Q+PiB7CisgIEV4cGxpY2l0QWxsb2NJbnRUYWJsZSgpIHt9Cit9OworCitURVNUKFRhYmxlLCBB
bGxvY1dpdGhFeHBsaWNpdEN0b3IpIHsKKyAgRXhwbGljaXRBbGxvY0ludFRhYmxlIHQ7CisgIEVY
UEVDVF9FUSgwLCB0LnNpemUoKSk7Cit9CisKK1RFU1QoVGFibGUsIE1vdmVDb25zdHJ1Y3QpIHsK
KyAgeworICAgIFN0cmluZ1RhYmxlIHQ7CisgICAgdC5tYXhfbG9hZF9mYWN0b3IoLjMyMWYpOwor
ICAgIGNvbnN0IGZsb2F0IGxmID0gdC5tYXhfbG9hZF9mYWN0b3IoKTsKKyAgICB0LmVtcGxhY2Uo
ImEiLCAiYiIpOworICAgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisKKyAgICBTdHJpbmdUYWJs
ZSB1KHN0ZDo6bW92ZSh0KSk7CisgICAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEobGYsIHUubWF4X2xvYWRfZmFjdG9yKCkpOworICAgIEVYUEVDVF9USEFUKCp1LmZpbmQo
ImEiKSwgUGFpcigiYSIsICJiIikpOworICB9CisgIHsKKyAgICBTdHJpbmdUYWJsZSB0OworICAg
IHQubWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsKKyAgICBjb25zdCBmbG9hdCBsZiA9IHQubWF4X2xv
YWRfZmFjdG9yKCk7CisgICAgdC5lbXBsYWNlKCJhIiwgImIiKTsKKyAgICBFWFBFQ1RfRVEoMSwg
dC5zaXplKCkpOworCisgICAgU3RyaW5nVGFibGUgdXtzdGQ6Om1vdmUodCl9OworICAgIEVYUEVD
VF9FUSgxLCB1LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxmLCB1Lm1heF9sb2FkX2ZhY3Rvcigp
KTsKKyAgICBFWFBFQ1RfVEhBVCgqdS5maW5kKCJhIiksIFBhaXIoImEiLCAiYiIpKTsKKyAgfQor
ICB7CisgICAgU3RyaW5nVGFibGUgdDsKKyAgICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7Cisg
ICAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9sb2FkX2ZhY3RvcigpOworICAgIHQuZW1wbGFjZSgi
YSIsICJiIik7CisgICAgRVhQRUNUX0VRKDEsIHQuc2l6ZSgpKTsKKworICAgIFN0cmluZ1RhYmxl
IHUgPSBzdGQ6Om1vdmUodCk7CisgICAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEobGYsIHUubWF4X2xvYWRfZmFjdG9yKCkpOworICAgIEVYUEVDVF9USEFUKCp1LmZpbmQo
ImEiKSwgUGFpcigiYSIsICJiIikpOworICB9Cit9CisKK1RFU1QoVGFibGUsIE1vdmVDb25zdHJ1
Y3RXaXRoQWxsb2MpIHsKKyAgU3RyaW5nVGFibGUgdDsKKyAgdC5tYXhfbG9hZF9mYWN0b3IoLjMy
MWYpOworICBjb25zdCBmbG9hdCBsZiA9IHQubWF4X2xvYWRfZmFjdG9yKCk7CisgIHQuZW1wbGFj
ZSgiYSIsICJiIik7CisgIEVYUEVDVF9FUSgxLCB0LnNpemUoKSk7CisgIFN0cmluZ1RhYmxlIHUo
c3RkOjptb3ZlKHQpLCBBbGxvYzxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4o
KSk7CisgIEVYUEVDVF9FUSgxLCB1LnNpemUoKSk7CisgIEVYUEVDVF9FUShsZiwgdS5tYXhfbG9h
ZF9mYWN0b3IoKSk7CisgIEVYUEVDVF9USEFUKCp1LmZpbmQoImEiKSwgUGFpcigiYSIsICJiIikp
OworfQorCitURVNUKFRhYmxlLCBDb3B5QXNzaWduKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIHQu
bWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsKKyAgdC5lbXBsYWNlKCJhIiwgImIiKTsKKyAgRVhQRUNU
X0VRKDEsIHQuc2l6ZSgpKTsKKyAgU3RyaW5nVGFibGUgdTsKKyAgdSA9IHQ7CisgIEVYUEVDVF9F
USgxLCB1LnNpemUoKSk7CisgIEVYUEVDVF9FUSh0Lm1heF9sb2FkX2ZhY3RvcigpLCB1Lm1heF9s
b2FkX2ZhY3RvcigpKTsKKyAgRVhQRUNUX1RIQVQoKnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIi
KSk7Cit9CisKK1RFU1QoVGFibGUsIENvcHlTZWxmQXNzaWduKSB7CisgIFN0cmluZ1RhYmxlIHQ7
CisgIHQubWF4X2xvYWRfZmFjdG9yKC4zMjFmKTsKKyAgY29uc3QgZmxvYXQgbGYgPSB0Lm1heF9s
b2FkX2ZhY3RvcigpOworICB0LmVtcGxhY2UoImEiLCAiYiIpOworICBFWFBFQ1RfRVEoMSwgdC5z
aXplKCkpOworICB0ID0gKiZ0OworICBFWFBFQ1RfRVEoMSwgdC5zaXplKCkpOworICBFWFBFQ1Rf
RVEobGYsIHQubWF4X2xvYWRfZmFjdG9yKCkpOworICBFWFBFQ1RfVEhBVCgqdC5maW5kKCJhIiks
IFBhaXIoImEiLCAiYiIpKTsKK30KKworVEVTVChUYWJsZSwgTW92ZUFzc2lnbikgeworICBTdHJp
bmdUYWJsZSB0OworICB0Lm1heF9sb2FkX2ZhY3RvciguMzIxZik7CisgIGNvbnN0IGZsb2F0IGxm
ID0gdC5tYXhfbG9hZF9mYWN0b3IoKTsKKyAgdC5lbXBsYWNlKCJhIiwgImIiKTsKKyAgRVhQRUNU
X0VRKDEsIHQuc2l6ZSgpKTsKKyAgU3RyaW5nVGFibGUgdTsKKyAgdSA9IHN0ZDo6bW92ZSh0KTsK
KyAgRVhQRUNUX0VRKDEsIHUuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKGxmLCB1Lm1heF9sb2FkX2Zh
Y3RvcigpKTsKKyAgRVhQRUNUX1RIQVQoKnUuZmluZCgiYSIpLCBQYWlyKCJhIiwgImIiKSk7Cit9
CisKK1RFU1QoVGFibGUsIEVxdWFsaXR5KSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIHN0ZDo6dmVj
dG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PiB2ID0ge3siYSIsICJiIn0s
IHsiYWEiLCAiYmIifX07CisgIHQuaW5zZXJ0KHN0ZDo6YmVnaW4odiksIHN0ZDo6ZW5kKHYpKTsK
KyAgU3RyaW5nVGFibGUgdSA9IHQ7CisgIEVYUEVDVF9FUSh1LCB0KTsKK30KKworVEVTVChUYWJs
ZSwgRXF1YWxpdHkyKSB7CisgIFN0cmluZ1RhYmxlIHQ7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFp
cjxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+PiB2MSA9IHt7ImEiLCAiYiJ9LCB7ImFhIiwgImJi
In19OworICB0Lmluc2VydChzdGQ6OmJlZ2luKHYxKSwgc3RkOjplbmQodjEpKTsKKyAgU3RyaW5n
VGFibGUgdTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmlu
Zz4+IHYyID0ge3siYSIsICJhIn0sIHsiYWEiLCAiYWEifX07CisgIHUuaW5zZXJ0KHN0ZDo6YmVn
aW4odjIpLCBzdGQ6OmVuZCh2MikpOworICBFWFBFQ1RfTkUodSwgdCk7Cit9CisKK1RFU1QoVGFi
bGUsIEVxdWFsaXR5MykgeworICBTdHJpbmdUYWJsZSB0OworICBzdGQ6OnZlY3RvcjxzdGQ6OnBh
aXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4gdjEgPSB7eyJiIiwgImIifSwgeyJiYiIsICJi
YiJ9fTsKKyAgdC5pbnNlcnQoc3RkOjpiZWdpbih2MSksIHN0ZDo6ZW5kKHYxKSk7CisgIFN0cmlu
Z1RhYmxlIHU7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnN0cmluZywgc3RkOjpzdHJp
bmc+PiB2MiA9IHt7ImEiLCAiYSJ9LCB7ImFhIiwgImFhIn19OworICB1Lmluc2VydChzdGQ6OmJl
Z2luKHYyKSwgc3RkOjplbmQodjIpKTsKKyAgRVhQRUNUX05FKHUsIHQpOworfQorCitURVNUKFRh
YmxlLCBOdW1EZWxldGVkUmVncmVzc2lvbikgeworICBJbnRUYWJsZSB0OworICB0LmVtcGxhY2Uo
MCk7CisgIHQuZXJhc2UodC5maW5kKDApKTsKKyAgLy8gY29uc3RydWN0IG92ZXIgYSBkZWxldGVk
IHNsb3QuCisgIHQuZW1wbGFjZSgwKTsKKyAgdC5jbGVhcigpOworfQorCitURVNUKFRhYmxlLCBG
aW5kRnVsbERlbGV0ZWRSZWdyZXNzaW9uKSB7CisgIEludFRhYmxlIHQ7CisgIGZvciAoaW50IGkg
PSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgdC5lbXBsYWNlKGkpOworICAgIHQuZXJhc2UodC5m
aW5kKGkpKTsKKyAgfQorICBFWFBFQ1RfRVEoMCwgdC5zaXplKCkpOworfQorCitURVNUKFRhYmxl
LCBSZXBsYWNpbmdEZWxldGVkU2xvdERvZXNOb3RSZWhhc2gpIHsKKyAgc2l6ZV90IG47CisgIHsK
KyAgICAvLyBDb21wdXRlIG4gc3VjaCB0aGF0IG4gaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVs
ZW1lbnRzIGJlZm9yZSByZWhhc2guCisgICAgSW50VGFibGUgdDsKKyAgICB0LmVtcGxhY2UoMCk7
CisgICAgc2l6ZV90IGMgPSB0LmJ1Y2tldF9jb3VudCgpOworICAgIGZvciAobiA9IDE7IGMgPT0g
dC5idWNrZXRfY291bnQoKTsgKytuKSB0LmVtcGxhY2Uobik7CisgICAgLS1uOworICB9CisgIElu
dFRhYmxlIHQ7CisgIHQucmVoYXNoKG4pOworICBjb25zdCBzaXplX3QgYyA9IHQuYnVja2V0X2Nv
dW50KCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG47ICsraSkgdC5lbXBsYWNlKGkpOwor
ICBFWFBFQ1RfRVEoYywgdC5idWNrZXRfY291bnQoKSkgPDwgInJlaGFzaGluZyB0aHJlc2hvbGQg
PSAiIDw8IG47CisgIHQuZXJhc2UoMCk7CisgIHQuZW1wbGFjZSgwKTsKKyAgRVhQRUNUX0VRKGMs
IHQuYnVja2V0X2NvdW50KCkpIDw8ICJyZWhhc2hpbmcgdGhyZXNob2xkID0gIiA8PCBuOworfQor
CitURVNUKFRhYmxlLCBOb1Rocm93TW92ZUNvbnN0cnVjdCkgeworICBBU1NFUlRfVFJVRSgKKyAg
ICAgIHN0ZDo6aXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8YWJzbDo6SGFzaDxhYnNsOjpz
dHJpbmdfdmlldz4+Ojp2YWx1ZSk7CisgIEFTU0VSVF9UUlVFKHN0ZDo6aXNfbm90aHJvd19jb3B5
X2NvbnN0cnVjdGlibGU8CisgICAgICAgICAgICAgIHN0ZDo6ZXF1YWxfdG88YWJzbDo6c3RyaW5n
X3ZpZXc+Pjo6dmFsdWUpOworICBBU1NFUlRfVFJVRShzdGQ6OmlzX25vdGhyb3dfY29weV9jb25z
dHJ1Y3RpYmxlPHN0ZDo6YWxsb2NhdG9yPGludD4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKHN0
ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8U3RyaW5nVGFibGU+Ojp2YWx1ZSk7Cit9
CisKK1RFU1QoVGFibGUsIE5vVGhyb3dNb3ZlQXNzaWduKSB7CisgIEFTU0VSVF9UUlVFKAorICAg
ICAgc3RkOjppc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxhYnNsOjpIYXNoPGFic2w6OnN0cmlu
Z192aWV3Pj46OnZhbHVlKTsKKyAgQVNTRVJUX1RSVUUoCisgICAgICBzdGQ6OmlzX25vdGhyb3df
bW92ZV9hc3NpZ25hYmxlPHN0ZDo6ZXF1YWxfdG88YWJzbDo6c3RyaW5nX3ZpZXc+Pjo6dmFsdWUp
OworICBBU1NFUlRfVFJVRShzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPHN0ZDo6YWxs
b2NhdG9yPGludD4+Ojp2YWx1ZSk7CisgIEFTU0VSVF9UUlVFKAorICAgICAgYWJzbDo6YWxsb2Nh
dG9yX3RyYWl0czxzdGQ6OmFsbG9jYXRvcjxpbnQ+Pjo6aXNfYWx3YXlzX2VxdWFsOjp2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8U3RyaW5nVGFi
bGU+Ojp2YWx1ZSk7Cit9CisKK1RFU1QoVGFibGUsIE5vVGhyb3dTd2FwcGFibGUpIHsKKyAgQVNT
RVJUX1RSVUUoCisgICAgICBjb250YWluZXJfaW50ZXJuYWw6OklzTm9UaHJvd1N3YXBwYWJsZTxh
YnNsOjpIYXNoPGFic2w6OnN0cmluZ192aWV3Pj4oKSk7CisgIEFTU0VSVF9UUlVFKGNvbnRhaW5l
cl9pbnRlcm5hbDo6SXNOb1Rocm93U3dhcHBhYmxlPAorICAgICAgICAgICAgICBzdGQ6OmVxdWFs
X3RvPGFic2w6OnN0cmluZ192aWV3Pj4oKSk7CisgIEFTU0VSVF9UUlVFKGNvbnRhaW5lcl9pbnRl
cm5hbDo6SXNOb1Rocm93U3dhcHBhYmxlPHN0ZDo6YWxsb2NhdG9yPGludD4+KCkpOworICBFWFBF
Q1RfVFJVRShjb250YWluZXJfaW50ZXJuYWw6OklzTm9UaHJvd1N3YXBwYWJsZTxTdHJpbmdUYWJs
ZT4oKSk7Cit9CisKK1RFU1QoVGFibGUsIEhldGVyb2dlbmVvdXNMb29rdXApIHsKKyAgc3RydWN0
IEhhc2ggeworICAgIHNpemVfdCBvcGVyYXRvcigpKGludDY0X3QgaSkgY29uc3QgeyByZXR1cm4g
aTsgfQorICAgIHNpemVfdCBvcGVyYXRvcigpKGRvdWJsZSBpKSBjb25zdCB7CisgICAgICBBRERf
RkFJTFVSRSgpOworICAgICAgcmV0dXJuIGk7CisgICAgfQorICB9OworICBzdHJ1Y3QgRXEgewor
ICAgIGJvb2wgb3BlcmF0b3IoKShpbnQ2NF90IGEsIGludDY0X3QgYikgY29uc3QgeyByZXR1cm4g
YSA9PSBiOyB9CisgICAgYm9vbCBvcGVyYXRvcigpKGRvdWJsZSBhLCBpbnQ2NF90IGIpIGNvbnN0
IHsKKyAgICAgIEFERF9GQUlMVVJFKCk7CisgICAgICByZXR1cm4gYSA9PSBiOworICAgIH0KKyAg
ICBib29sIG9wZXJhdG9yKCkoaW50NjRfdCBhLCBkb3VibGUgYikgY29uc3QgeworICAgICAgQURE
X0ZBSUxVUkUoKTsKKyAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorICAgIGJvb2wgb3BlcmF0
b3IoKShkb3VibGUgYSwgZG91YmxlIGIpIGNvbnN0IHsKKyAgICAgIEFERF9GQUlMVVJFKCk7Cisg
ICAgICByZXR1cm4gYSA9PSBiOworICAgIH0KKyAgfTsKKworICBzdHJ1Y3QgVEhhc2ggeworICAg
IHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gdm9pZDsKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShpbnQ2
NF90IGkpIGNvbnN0IHsgcmV0dXJuIGk7IH0KKyAgICBzaXplX3Qgb3BlcmF0b3IoKShkb3VibGUg
aSkgY29uc3QgeyByZXR1cm4gaTsgfQorICB9OworICBzdHJ1Y3QgVEVxIHsKKyAgICB1c2luZyBp
c190cmFuc3BhcmVudCA9IHZvaWQ7CisgICAgYm9vbCBvcGVyYXRvcigpKGludDY0X3QgYSwgaW50
NjRfdCBiKSBjb25zdCB7IHJldHVybiBhID09IGI7IH0KKyAgICBib29sIG9wZXJhdG9yKCkoZG91
YmxlIGEsIGludDY0X3QgYikgY29uc3QgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgYm9vbCBvcGVy
YXRvcigpKGludDY0X3QgYSwgZG91YmxlIGIpIGNvbnN0IHsgcmV0dXJuIGEgPT0gYjsgfQorICAg
IGJvb2wgb3BlcmF0b3IoKShkb3VibGUgYSwgZG91YmxlIGIpIGNvbnN0IHsgcmV0dXJuIGEgPT0g
YjsgfQorICB9OworCisgIHJhd19oYXNoX3NldDxJbnRQb2xpY3ksIEhhc2gsIEVxLCBBbGxvYzxp
bnQ2NF90Pj4gc3swLCAxLCAyfTsKKyAgLy8gSXQgd2lsbCBjb252ZXJ0IHRvIGludDY0X3QgYmVm
b3JlIHRoZSBxdWVyeS4KKyAgRVhQRUNUX0VRKDEsICpzLmZpbmQoZG91YmxlezEuMX0pKTsKKwor
ICByYXdfaGFzaF9zZXQ8SW50UG9saWN5LCBUSGFzaCwgVEVxLCBBbGxvYzxpbnQ2NF90Pj4gdHN7
MCwgMSwgMn07CisgIC8vIEl0IHdpbGwgdHJ5IHRvIHVzZSB0aGUgZG91YmxlLCBhbmQgZmFpbCB0
byBmaW5kIHRoZSBvYmplY3QuCisgIEVYUEVDVF9UUlVFKHRzLmZpbmQoMS4xKSA9PSB0cy5lbmQo
KSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUYWJsZT4KK3VzaW5nIENhbGxGaW5kID0gZGVjbHR5
cGUoc3RkOjpkZWNsdmFsPFRhYmxlJj4oKS5maW5kKDE3KSk7CisKK3RlbXBsYXRlIDxjbGFzcyBU
YWJsZT4KK3VzaW5nIENhbGxFcmFzZSA9IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUYWJsZSY+KCku
ZXJhc2UoMTcpKTsKKwordGVtcGxhdGUgPGNsYXNzIFRhYmxlPgordXNpbmcgQ2FsbEV4dHJhY3Qg
PSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VGFibGUmPigpLmV4dHJhY3QoMTcpKTsKKwordGVtcGxh
dGUgPGNsYXNzIFRhYmxlPgordXNpbmcgQ2FsbFByZWZldGNoID0gZGVjbHR5cGUoc3RkOjpkZWNs
dmFsPFRhYmxlJj4oKS5wcmVmZXRjaCgxNykpOworCit0ZW1wbGF0ZSA8Y2xhc3MgVGFibGU+Cit1
c2luZyBDYWxsQ291bnQgPSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VGFibGUmPigpLmNvdW50KDE3
KSk7CisKK3RlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIEMsIGNsYXNzIFRhYmxl
LCBjbGFzcyA9IHZvaWQ+CitzdHJ1Y3QgVmVyaWZ5UmVzdWx0T2YgOiBzdGQ6OmZhbHNlX3R5cGUg
e307CisKK3RlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIEMsIGNsYXNzIFRhYmxl
Pgorc3RydWN0IFZlcmlmeVJlc3VsdE9mPEMsIFRhYmxlLCBhYnNsOjp2b2lkX3Q8QzxUYWJsZT4+
PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCitURVNUKFRhYmxlLCBIZXRlcm9nZW5lb3VzTG9va3Vw
T3ZlcmxvYWRzKSB7CisgIHVzaW5nIE5vblRyYW5zcGFyZW50VGFibGUgPQorICAgICAgcmF3X2hh
c2hfc2V0PFN0cmluZ1BvbGljeSwgYWJzbDo6SGFzaDxhYnNsOjpzdHJpbmdfdmlldz4sCisgICAg
ICAgICAgICAgICAgICAgc3RkOjplcXVhbF90bzxhYnNsOjpzdHJpbmdfdmlldz4sIHN0ZDo6YWxs
b2NhdG9yPGludD4+OworCisgIEVYUEVDVF9GQUxTRSgoVmVyaWZ5UmVzdWx0T2Y8Q2FsbEZpbmQs
IE5vblRyYW5zcGFyZW50VGFibGU+KCkpKTsKKyAgRVhQRUNUX0ZBTFNFKChWZXJpZnlSZXN1bHRP
ZjxDYWxsRXJhc2UsIE5vblRyYW5zcGFyZW50VGFibGU+KCkpKTsKKyAgRVhQRUNUX0ZBTFNFKChW
ZXJpZnlSZXN1bHRPZjxDYWxsRXh0cmFjdCwgTm9uVHJhbnNwYXJlbnRUYWJsZT4oKSkpOworICBF
WFBFQ1RfRkFMU0UoKFZlcmlmeVJlc3VsdE9mPENhbGxQcmVmZXRjaCwgTm9uVHJhbnNwYXJlbnRU
YWJsZT4oKSkpOworICBFWFBFQ1RfRkFMU0UoKFZlcmlmeVJlc3VsdE9mPENhbGxDb3VudCwgTm9u
VHJhbnNwYXJlbnRUYWJsZT4oKSkpOworCisgIHVzaW5nIFRyYW5zcGFyZW50VGFibGUgPSByYXdf
aGFzaF9zZXQ8CisgICAgICBTdHJpbmdQb2xpY3ksCisgICAgICBhYnNsOjpjb250YWluZXJfaW50
ZXJuYWw6Omhhc2hfZGVmYXVsdF9oYXNoPGFic2w6OnN0cmluZ192aWV3PiwKKyAgICAgIGFic2w6
OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZhdWx0X2VxPGFic2w6OnN0cmluZ192aWV3PiwK
KyAgICAgIHN0ZDo6YWxsb2NhdG9yPGludD4+OworCisgIEVYUEVDVF9UUlVFKChWZXJpZnlSZXN1
bHRPZjxDYWxsRmluZCwgVHJhbnNwYXJlbnRUYWJsZT4oKSkpOworICBFWFBFQ1RfVFJVRSgoVmVy
aWZ5UmVzdWx0T2Y8Q2FsbEVyYXNlLCBUcmFuc3BhcmVudFRhYmxlPigpKSk7CisgIEVYUEVDVF9U
UlVFKChWZXJpZnlSZXN1bHRPZjxDYWxsRXh0cmFjdCwgVHJhbnNwYXJlbnRUYWJsZT4oKSkpOwor
ICBFWFBFQ1RfVFJVRSgoVmVyaWZ5UmVzdWx0T2Y8Q2FsbFByZWZldGNoLCBUcmFuc3BhcmVudFRh
YmxlPigpKSk7CisgIEVYUEVDVF9UUlVFKChWZXJpZnlSZXN1bHRPZjxDYWxsQ291bnQsIFRyYW5z
cGFyZW50VGFibGU+KCkpKTsKK30KKworLy8gVE9ETyhhbGtpcyk6IEV4cGFuZCBpdGVyYXRvciB0
ZXN0cy4KK1RFU1QoSXRlcmF0b3IsIElzRGVmYXVsdENvbnN0cnVjdGlibGUpIHsKKyAgU3RyaW5n
VGFibGU6Oml0ZXJhdG9yIGk7CisgIEVYUEVDVF9UUlVFKGkgPT0gU3RyaW5nVGFibGU6Oml0ZXJh
dG9yKCkpOworfQorCitURVNUKENvbnN0SXRlcmF0b3IsIElzRGVmYXVsdENvbnN0cnVjdGlibGUp
IHsKKyAgU3RyaW5nVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGk7CisgIEVYUEVDVF9UUlVFKGkgPT0g
U3RyaW5nVGFibGU6OmNvbnN0X2l0ZXJhdG9yKCkpOworfQorCitURVNUKEl0ZXJhdG9yLCBDb252
ZXJ0c1RvQ29uc3RJdGVyYXRvcikgeworICBTdHJpbmdUYWJsZTo6aXRlcmF0b3IgaTsKKyAgRVhQ
RUNUX1RSVUUoaSA9PSBTdHJpbmdUYWJsZTo6Y29uc3RfaXRlcmF0b3IoKSk7Cit9CisKK1RFU1Qo
SXRlcmF0b3IsIEl0ZXJhdGVzKSB7CisgIEludFRhYmxlIHQ7CisgIGZvciAoc2l6ZV90IGkgPSAz
OyBpICE9IDY7ICsraSkgRVhQRUNUX1RSVUUodC5lbXBsYWNlKGkpLnNlY29uZCk7CisgIEVYUEVD
VF9USEFUKHQsIFVub3JkZXJlZEVsZW1lbnRzQXJlKDMsIDQsIDUpKTsKK30KKworVEVTVChUYWJs
ZSwgTWVyZ2UpIHsKKyAgU3RyaW5nVGFibGUgdDEsIHQyOworICB0MS5lbXBsYWNlKCIwIiwgIi0w
Iik7CisgIHQxLmVtcGxhY2UoIjEiLCAiLTEiKTsKKyAgdDIuZW1wbGFjZSgiMCIsICJ+MCIpOwor
ICB0Mi5lbXBsYWNlKCIyIiwgIn4yIik7CisKKyAgRVhQRUNUX1RIQVQodDEsIFVub3JkZXJlZEVs
ZW1lbnRzQXJlKFBhaXIoIjAiLCAiLTAiKSwgUGFpcigiMSIsICItMSIpKSk7CisgIEVYUEVDVF9U
SEFUKHQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKCIwIiwgIn4wIiksIFBhaXIoIjIiLCAi
fjIiKSkpOworCisgIHQxLm1lcmdlKHQyKTsKKyAgRVhQRUNUX1RIQVQodDEsIFVub3JkZXJlZEVs
ZW1lbnRzQXJlKFBhaXIoIjAiLCAiLTAiKSwgUGFpcigiMSIsICItMSIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcigiMiIsICJ+MiIpKSk7CisgIEVYUEVDVF9U
SEFUKHQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKCIwIiwgIn4wIikpKTsKK30KKworVEVT
VChOb2RlcywgRW1wdHlOb2RlVHlwZSkgeworICB1c2luZyBub2RlX3R5cGUgPSBTdHJpbmdUYWJs
ZTo6bm9kZV90eXBlOworICBub2RlX3R5cGUgbjsKKyAgRVhQRUNUX0ZBTFNFKG4pOworICBFWFBF
Q1RfVFJVRShuLmVtcHR5KCkpOworCisgIEVYUEVDVF9UUlVFKChzdGQ6OmlzX3NhbWU8bm9kZV90
eXBlOjphbGxvY2F0b3JfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdU
YWJsZTo6YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSkpOworfQorCitURVNUKE5vZGVzLCBFeHRyYWN0
SW5zZXJ0KSB7CisgIGNvbnN0ZXhwciBjaGFyIGswW10gPSAiVmVyeSBsb25nIHN0ZDo6c3RyaW5n
IHplcm8uIjsKKyAgY29uc3RleHByIGNoYXIgazFbXSA9ICJWZXJ5IGxvbmcgc3RkOjpzdHJpbmcg
b25lLiI7CisgIGNvbnN0ZXhwciBjaGFyIGsyW10gPSAiVmVyeSBsb25nIHN0ZDo6c3RyaW5nIHR3
by4iOworICBTdHJpbmdUYWJsZSB0ID0ge3trMCwgIiJ9LCB7azEsICIifSwge2syLCAiIn19Owor
ICBFWFBFQ1RfVEhBVCh0LAorICAgICAgICAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWly
KGswLCAiIiksIFBhaXIoazEsICIiKSwgUGFpcihrMiwgIiIpKSk7CisKKyAgYXV0byBub2RlID0g
dC5leHRyYWN0KGswKTsKKyAgRVhQRUNUX1RIQVQodCwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUGFp
cihrMSwgIiIpLCBQYWlyKGsyLCAiIikpKTsKKyAgRVhQRUNUX1RSVUUobm9kZSk7CisgIEVYUEVD
VF9GQUxTRShub2RlLmVtcHR5KCkpOworCisgIFN0cmluZ1RhYmxlIHQyOworICBhdXRvIHJlcyA9
IHQyLmluc2VydChzdGQ6Om1vdmUobm9kZSkpOworICBFWFBFQ1RfVFJVRShyZXMuaW5zZXJ0ZWQp
OworICBFWFBFQ1RfVEhBVCgqcmVzLnBvc2l0aW9uLCBQYWlyKGswLCAiIikpOworICBFWFBFQ1Rf
RkFMU0UocmVzLm5vZGUpOworICBFWFBFQ1RfVEhBVCh0MiwgVW5vcmRlcmVkRWxlbWVudHNBcmUo
UGFpcihrMCwgIiIpKSk7CisKKyAgLy8gTm90IHRoZXJlLgorICBFWFBFQ1RfVEhBVCh0LCBVbm9y
ZGVyZWRFbGVtZW50c0FyZShQYWlyKGsxLCAiIiksIFBhaXIoazIsICIiKSkpOworICBub2RlID0g
dC5leHRyYWN0KCJOb3QgdGhlcmUhIik7CisgIEVYUEVDVF9USEFUKHQsIFVub3JkZXJlZEVsZW1l
bnRzQXJlKFBhaXIoazEsICIiKSwgUGFpcihrMiwgIiIpKSk7CisgIEVYUEVDVF9GQUxTRShub2Rl
KTsKKworICAvLyBJbnNlcnRpbmcgbm90aGluZy4KKyAgcmVzID0gdDIuaW5zZXJ0KHN0ZDo6bW92
ZShub2RlKSk7CisgIEVYUEVDVF9GQUxTRShyZXMuaW5zZXJ0ZWQpOworICBFWFBFQ1RfRVEocmVz
LnBvc2l0aW9uLCB0Mi5lbmQoKSk7CisgIEVYUEVDVF9GQUxTRShyZXMubm9kZSk7CisgIEVYUEVD
VF9USEFUKHQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQYWlyKGswLCAiIikpKTsKKworICB0LmVt
cGxhY2UoazAsICIxIik7CisgIG5vZGUgPSB0LmV4dHJhY3QoazApOworCisgIC8vIEluc2VydCBk
dXBsaWNhdGUuCisgIHJlcyA9IHQyLmluc2VydChzdGQ6Om1vdmUobm9kZSkpOworICBFWFBFQ1Rf
RkFMU0UocmVzLmluc2VydGVkKTsKKyAgRVhQRUNUX1RIQVQoKnJlcy5wb3NpdGlvbiwgUGFpcihr
MCwgIiIpKTsKKyAgRVhQRUNUX1RSVUUocmVzLm5vZGUpOworICBFWFBFQ1RfRkFMU0Uobm9kZSk7
Cit9CisKK1N0cmluZ1RhYmxlIE1ha2VTaW1wbGVUYWJsZShzaXplX3Qgc2l6ZSkgeworICBTdHJp
bmdUYWJsZSB0OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgdC5lbXBsYWNl
KHN0ZDo6c3RyaW5nKDEsICdBJyArIGkpLCAiIik7CisgIHJldHVybiB0OworfQorCitzdGQ6OnN0
cmluZyBPcmRlck9mSXRlcmF0aW9uKGNvbnN0IFN0cmluZ1RhYmxlJiB0KSB7CisgIHN0ZDo6c3Ry
aW5nIG9yZGVyOworICBmb3IgKGF1dG8mIHAgOiB0KSBvcmRlciArPSBwLmZpcnN0OworICByZXR1
cm4gb3JkZXI7Cit9CisKK1RFU1QoVGFibGUsIEl0ZXJhdGlvbk9yZGVyQ2hhbmdlc0J5SW5zdGFu
Y2UpIHsKKyAgLy8gTmVlZHMgdG8gYmUgbW9yZSB0aGFuIGtXaWR0aCBlbGVtZW50cyB0byBiZSBh
YmxlIHRvIGFmZmVjdCBvcmRlci4KKyAgY29uc3QgU3RyaW5nVGFibGUgcmVmZXJlbmNlID0gTWFr
ZVNpbXBsZVRhYmxlKDIwKTsKKworICAvLyBTaW5jZSBvcmRlciBpcyBub24tZGV0ZXJtaW5pc3Rp
YyB3ZSBjYW4ndCBqdXN0IHRyeSBvbmNlIGFuZCB2ZXJpZnkuCisgIC8vIFdlJ2xsIHRyeSB1bnRp
bCB3ZSBmaW5kIHRoYXQgb3JkZXIgY2hhbmdlZC4gSXQgc2hvdWxkIG5vdCB0YWtlIG1hbnkgdHJp
ZXMKKyAgLy8gZm9yIHRoYXQuCisgIC8vIEltcG9ydGFudDogd2UgaGF2ZSB0byBrZWVwIHRoZSBv
bGQgdGFibGVzIGFyb3VuZC4gT3RoZXJ3aXNlIHRjbWFsbG9jIHdpbGwKKyAgLy8ganVzdCBnaXZl
IHVzIHRoZSBzYW1lIGJsb2NrcyBhbmQgd2Ugd291bGQgYmUgZG9pbmcgdGhlIHNhbWUgb3JkZXIg
YWdhaW4uCisgIHN0ZDo6dmVjdG9yPFN0cmluZ1RhYmxlPiBnYXJiYWdlOworICBmb3IgKGludCBp
ID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICBhdXRvIHRyaWFsID0gTWFrZVNpbXBsZVRhYmxlKDIw
KTsKKyAgICBpZiAoT3JkZXJPZkl0ZXJhdGlvbih0cmlhbCkgIT0gT3JkZXJPZkl0ZXJhdGlvbihy
ZWZlcmVuY2UpKSB7CisgICAgICAvLyBXZSBhcmUgZG9uZS4KKyAgICAgIHJldHVybjsKKyAgICB9
CisgICAgZ2FyYmFnZS5wdXNoX2JhY2soc3RkOjptb3ZlKHRyaWFsKSk7CisgIH0KKyAgRkFJTCgp
OworfQorCitURVNUKFRhYmxlLCBJdGVyYXRpb25PcmRlckNoYW5nZXNPblJlaGFzaCkgeworICAv
LyBTaW5jZSBvcmRlciBpcyBub24tZGV0ZXJtaW5pc3RpYyB3ZSBjYW4ndCBqdXN0IHRyeSBvbmNl
IGFuZCB2ZXJpZnkuCisgIC8vIFdlJ2xsIHRyeSB1bnRpbCB3ZSBmaW5kIHRoYXQgb3JkZXIgY2hh
bmdlZC4gSXQgc2hvdWxkIG5vdCB0YWtlIG1hbnkgdHJpZXMKKyAgLy8gZm9yIHRoYXQuCisgIC8v
IEltcG9ydGFudDogd2UgaGF2ZSB0byBrZWVwIHRoZSBvbGQgdGFibGVzIGFyb3VuZC4gT3RoZXJ3
aXNlIHRjbWFsbG9jIHdpbGwKKyAgLy8ganVzdCBnaXZlIHVzIHRoZSBzYW1lIGJsb2NrcyBhbmQg
d2Ugd291bGQgYmUgZG9pbmcgdGhlIHNhbWUgb3JkZXIgYWdhaW4uCisgIHN0ZDo6dmVjdG9yPFN0
cmluZ1RhYmxlPiBnYXJiYWdlOworICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAg
ICAvLyBOZWVkcyB0byBiZSBtb3JlIHRoYW4ga1dpZHRoIGVsZW1lbnRzIHRvIGJlIGFibGUgdG8g
YWZmZWN0IG9yZGVyLgorICAgIFN0cmluZ1RhYmxlIHQgPSBNYWtlU2ltcGxlVGFibGUoMjApOwor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHJlZmVyZW5jZSA9IE9yZGVyT2ZJdGVyYXRpb24odCk7Cisg
ICAgLy8gRm9yY2UgcmVoYXNoIHRvIHRoZSBzYW1lIHNpemUuCisgICAgdC5yZWhhc2goMCk7Cisg
ICAgc3RkOjpzdHJpbmcgdHJpYWwgPSBPcmRlck9mSXRlcmF0aW9uKHQpOworICAgIGlmICh0cmlh
bCAhPSByZWZlcmVuY2UpIHsKKyAgICAgIC8vIFdlIGFyZSBkb25lLgorICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBnYXJiYWdlLnB1c2hfYmFjayhzdGQ6Om1vdmUodCkpOworICB9CisgIEZBSUwo
KTsKK30KKworVEVTVChUYWJsZSwgSXRlcmF0aW9uT3JkZXJDaGFuZ2VzRm9yU21hbGxUYWJsZXMp
IHsKKyAgLy8gU2luY2Ugb3JkZXIgaXMgbm9uLWRldGVybWluaXN0aWMgd2UgY2FuJ3QganVzdCB0
cnkgb25jZSBhbmQgdmVyaWZ5LgorICAvLyBXZSdsbCB0cnkgdW50aWwgd2UgZmluZCB0aGF0IG9y
ZGVyIGNoYW5nZWQuCisgIC8vIEltcG9ydGFudDogd2UgaGF2ZSB0byBrZWVwIHRoZSBvbGQgdGFi
bGVzIGFyb3VuZC4gT3RoZXJ3aXNlIHRjbWFsbG9jIHdpbGwKKyAgLy8ganVzdCBnaXZlIHVzIHRo
ZSBzYW1lIGJsb2NrcyBhbmQgd2Ugd291bGQgYmUgZG9pbmcgdGhlIHNhbWUgb3JkZXIgYWdhaW4u
CisgIFN0cmluZ1RhYmxlIHJlZmVyZW5jZV90YWJsZSA9IE1ha2VTaW1wbGVUYWJsZSg1KTsKKyAg
Y29uc3Qgc3RkOjpzdHJpbmcgcmVmZXJlbmNlID0gT3JkZXJPZkl0ZXJhdGlvbihyZWZlcmVuY2Vf
dGFibGUpOworICBzdGQ6OnZlY3RvcjxTdHJpbmdUYWJsZT4gZ2FyYmFnZTsKKyAgZm9yIChpbnQg
aSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgU3RyaW5nVGFibGUgdCA9IE1ha2VTaW1wbGVUYWJs
ZSg1KTsKKyAgICBzdGQ6OnN0cmluZyB0cmlhbCA9IE9yZGVyT2ZJdGVyYXRpb24odCk7CisgICAg
aWYgKHRyaWFsICE9IHJlZmVyZW5jZSkgeworICAgICAgLy8gV2UgYXJlIGRvbmUuCisgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGdhcmJhZ2UucHVzaF9iYWNrKHN0ZDo6bW92ZSh0KSk7CisgIH0K
KyAgRkFJTCgpIDw8ICJJdGVyYXRpb24gb3JkZXIgcmVtYWluZWQgdGhlIHNhbWUgYWNyb3NzIG1h
bnkgYXR0ZW1wdHMuIjsKK30KKworLy8gRmlsbCB0aGUgdGFibGUgdG8gMyBkaWZmZXJlbnQgbG9h
ZCBmYWN0b3JzIChtaW4sIG1lZGlhbiwgbWF4KSBhbmQgZXZhbHVhdGUKKy8vIHRoZSBwZXJjZW50
YWdlIG9mIHBlcmZlY3QgaGl0cyB1c2luZyB0aGUgZGVidWcgQVBJLgordGVtcGxhdGUgPGNsYXNz
IFRhYmxlLCBjbGFzcyBBZGRGbj4KK3N0ZDo6dmVjdG9yPGRvdWJsZT4gQ29sbGVjdFBlcmZlY3RS
YXRpb3MoVGFibGUgdCwgQWRkRm4gYWRkKSB7CisgIHVzaW5nIEtleSA9IHR5cGVuYW1lIFRhYmxl
OjprZXlfdHlwZTsKKworICAvLyBGaXJzdCwgZmlsbCBlbm91Z2ggdG8gaGF2ZSBhIGdvb2QgZGlz
dHJpYnV0aW9uLgorICBjb25zdGV4cHIgc2l6ZV90IGtNaW5TaXplID0gMTAwMDA7CisgIHN0ZDo6
dmVjdG9yPEtleT4ga2V5czsKKyAgd2hpbGUgKHQuc2l6ZSgpIDwga01pblNpemUpIGtleXMucHVz
aF9iYWNrKGFkZCh0KSk7CisgIC8vIFRoZW4sIGluc2VydCB1bnRpbCB3ZSByZWFjaCBtaW4gbG9h
ZCBmYWN0b3IuCisgIGRvdWJsZSBsZiA9IHQubG9hZF9mYWN0b3IoKTsKKyAgd2hpbGUgKGxmIDw9
IHQubG9hZF9mYWN0b3IoKSkga2V5cy5wdXNoX2JhY2soYWRkKHQpKTsKKworICAvLyBXZSBhcmUg
bm93IGF0IG1pbiBsb2FkIGZhY3Rvci4gVGFrZSBhIHNuYXBzaG90LgorICBzaXplX3QgcGVyZmVj
dCA9IDA7CisgIGF1dG8gdXBkYXRlX3BlcmZlY3QgPSBbJl0oS2V5IGspIHsKKyAgICBwZXJmZWN0
ICs9IEdldEhhc2h0YWJsZURlYnVnTnVtUHJvYmVzKHQsIGspID09IDA7CisgIH07CisgIGZvciAo
Y29uc3QgYXV0byYgayA6IGtleXMpIHVwZGF0ZV9wZXJmZWN0KGspOworCisgIHN0ZDo6dmVjdG9y
PGRvdWJsZT4gcGVyZmVjdF9yYXRpb3M7CisgIC8vIEtlZXAgZ29pbmcgdW50aWwgd2UgaGl0IG1h
eCBsb2FkIGZhY3Rvci4KKyAgd2hpbGUgKHQubG9hZF9mYWN0b3IoKSA8IC42KSB7CisgICAgcGVy
ZmVjdF9yYXRpb3MucHVzaF9iYWNrKDEuMCAqIHBlcmZlY3QgLyB0LnNpemUoKSk7CisgICAgdXBk
YXRlX3BlcmZlY3QoYWRkKHQpKTsKKyAgfQorICB3aGlsZSAodC5sb2FkX2ZhY3RvcigpID4gLjUp
IHsKKyAgICBwZXJmZWN0X3JhdGlvcy5wdXNoX2JhY2soMS4wICogcGVyZmVjdCAvIHQuc2l6ZSgp
KTsKKyAgICB1cGRhdGVfcGVyZmVjdChhZGQodCkpOworICB9CisgIHJldHVybiBwZXJmZWN0X3Jh
dGlvczsKK30KKworc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gU3RyaW5n
VGFibGVQZWZlY3RSYXRpb3MoKSB7CisgIGNvbnN0ZXhwciBib29sIGtSYW5kb21pemVzSW5zZXJ0
cyA9CisjaWYgTkRFQlVHCisgICAgICBmYWxzZTsKKyNlbHNlICAgLy8gTkRFQlVHCisgICAgICB0
cnVlOworI2VuZGlmICAvLyBOREVCVUcKKworICAvLyBUaGUgZWZmZWN0aXZlIGxvYWQgZmFjdG9y
IGlzIGxhcmdlciBpbiBub24tb3B0IG1vZGUgYmVjYXVzZSB3ZSBpbnNlcnQKKyAgLy8gZWxlbWVu
dHMgb3V0IG9mIG9yZGVyLgorICBzd2l0Y2ggKGNvbnRhaW5lcl9pbnRlcm5hbDo6R3JvdXA6OmtX
aWR0aCkgeworICAgIGNhc2UgODoKKyAgICAgIGlmIChrUmFuZG9taXplc0luc2VydHMpIHsKKyAg
ICAgICAgcmV0dXJuIHt7MC45ODYsIDAuMDJ9LCB7MC45NSwgMC4wMn0sIHswLjg5LCAwLjAyfX07
CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4ge3swLjk5NSwgMC4wMX0sIHswLjk3LCAw
LjAxfSwgezAuODksIDAuMDJ9fTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6
CisgICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7CisgICAgICAgIHJldHVybiB7ezAuOTcz
LCAwLjAxfSwgezAuOTY1LCAwLjAxfSwgezAuOTIsIDAuMDJ9fTsKKyAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIHJldHVybiB7ezAuOTk1LCAwLjAwNX0sIHswLjk5LCAwLjAwNX0sIHswLjk0LCAwLjAx
fX07CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgLy8gSWdub3Jl
IGFueXRoaW5nIGVsc2UuCisgICAgICByZXR1cm4ge307CisgIH0KK30KKworLy8gVGhpcyBpcyBh
bG1vc3QgYSBjaGFuZ2UgZGV0ZWN0b3IsIGJ1dCBpdCBhbGxvd3MgdXMgdG8ga25vdyBob3cgd2Ug
YXJlCisvLyBhZmZlY3RpbmcgdGhlIHByb2JlIGRpc3RyaWJ1dGlvbi4KK1RFU1QoVGFibGUsIEVm
ZmVjdGl2ZUxvYWRGYWN0b3JTdHJpbmdzKSB7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gcGVyZmVj
dF9yYXRpb3MgPQorICAgICAgQ29sbGVjdFBlcmZlY3RSYXRpb3MoU3RyaW5nVGFibGUoKSwgW10o
U3RyaW5nVGFibGUmIHQpIHsKKyAgICAgICAgcmV0dXJuIHQuZW1wbGFjZShzdGQ6OnRvX3N0cmlu
Zyh0LnNpemUoKSksICIiKS5maXJzdC0+Zmlyc3Q7CisgICAgICB9KTsKKworICBhdXRvIHJhdGlv
cyA9IFN0cmluZ1RhYmxlUGVmZWN0UmF0aW9zKCk7CisgIGlmIChyYXRpb3MuZW1wdHkoKSkgcmV0
dXJuOworCisgIEVYUEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zLmZyb250KCksCisgICAgICAgICAg
ICAgIERvdWJsZU5lYXIocmF0aW9zWzBdLmZpcnN0LCByYXRpb3NbMF0uc2Vjb25kKSk7CisgIEVY
UEVDVF9USEFUKHBlcmZlY3RfcmF0aW9zW3BlcmZlY3RfcmF0aW9zLnNpemUoKSAvIDJdLAorICAg
ICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlvc1sxXS5maXJzdCwgcmF0aW9zWzFdLnNlY29uZCkp
OworICBFWFBFQ1RfVEhBVChwZXJmZWN0X3JhdGlvcy5iYWNrKCksCisgICAgICAgICAgICAgIERv
dWJsZU5lYXIocmF0aW9zWzJdLmZpcnN0LCByYXRpb3NbMl0uc2Vjb25kKSk7Cit9CisKK3N0ZDo6
dmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IEludFRhYmxlUGVmZWN0UmF0aW9zKCkg
eworICBjb25zdGV4cHIgYm9vbCBrUmFuZG9taXplc0luc2VydHMgPQorI2lmZGVmIE5ERUJVRwor
ICAgICAgZmFsc2U7CisjZWxzZSAgIC8vIE5ERUJVRworICAgICAgdHJ1ZTsKKyNlbmRpZiAgLy8g
TkRFQlVHCisKKyAgLy8gVGhlIGVmZmVjdGl2ZSBsb2FkIGZhY3RvciBpcyBsYXJnZXIgaW4gbm9u
LW9wdCBtb2RlIGJlY2F1c2Ugd2UgaW5zZXJ0CisgIC8vIGVsZW1lbnRzIG91dCBvZiBvcmRlci4K
KyAgc3dpdGNoIChjb250YWluZXJfaW50ZXJuYWw6Okdyb3VwOjprV2lkdGgpIHsKKyAgICBjYXNl
IDg6CisgICAgICBpZiAoa1JhbmRvbWl6ZXNJbnNlcnRzKSB7CisgICAgICAgIHJldHVybiB7ezAu
OTksIDAuMDJ9LCB7MC45ODUsIDAuMDJ9LCB7MC45NSwgMC4wNX19OworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgcmV0dXJuIHt7MC45OSwgMC4wMX0sIHswLjk5LCAwLjAxfSwgezAuOTUsIDAuMDJ9
fTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAgICBpZiAoa1JhbmRv
bWl6ZXNJbnNlcnRzKSB7CisgICAgICAgIHJldHVybiB7ezAuOTgsIDAuMDJ9LCB7MC45NzgsIDAu
MDJ9LCB7MC45NiwgMC4wMn19OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHt7MC45
OTgsIDAuMDAzfSwgezAuOTk1LCAwLjAxfSwgezAuOTc1LCAwLjAyfX07CisgICAgICB9CisgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgLy8gSWdub3JlIGFueXRoaW5nIGVsc2UuCisg
ICAgICByZXR1cm4ge307CisgIH0KK30KKworLy8gVGhpcyBpcyBhbG1vc3QgYSBjaGFuZ2UgZGV0
ZWN0b3IsIGJ1dCBpdCBhbGxvd3MgdXMgdG8ga25vdyBob3cgd2UgYXJlCisvLyBhZmZlY3Rpbmcg
dGhlIHByb2JlIGRpc3RyaWJ1dGlvbi4KK1RFU1QoVGFibGUsIEVmZmVjdGl2ZUxvYWRGYWN0b3JJ
bnRzKSB7CisgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gcGVyZmVjdF9yYXRpb3MgPSBDb2xsZWN0UGVy
ZmVjdFJhdGlvcygKKyAgICAgIEludFRhYmxlKCksIFtdKEludFRhYmxlJiB0KSB7IHJldHVybiAq
dC5lbXBsYWNlKHQuc2l6ZSgpKS5maXJzdDsgfSk7CisKKyAgYXV0byByYXRpb3MgPSBJbnRUYWJs
ZVBlZmVjdFJhdGlvcygpOworICBpZiAocmF0aW9zLmVtcHR5KCkpIHJldHVybjsKKworICBFWFBF
Q1RfVEhBVChwZXJmZWN0X3JhdGlvcy5mcm9udCgpLAorICAgICAgICAgICAgICBEb3VibGVOZWFy
KHJhdGlvc1swXS5maXJzdCwgcmF0aW9zWzBdLnNlY29uZCkpOworICBFWFBFQ1RfVEhBVChwZXJm
ZWN0X3JhdGlvc1twZXJmZWN0X3JhdGlvcy5zaXplKCkgLyAyXSwKKyAgICAgICAgICAgICAgRG91
YmxlTmVhcihyYXRpb3NbMV0uZmlyc3QsIHJhdGlvc1sxXS5zZWNvbmQpKTsKKyAgRVhQRUNUX1RI
QVQocGVyZmVjdF9yYXRpb3MuYmFjaygpLAorICAgICAgICAgICAgICBEb3VibGVOZWFyKHJhdGlv
c1syXS5maXJzdCwgcmF0aW9zWzJdLnNlY29uZCkpOworfQorCisvLyBDb25maXJtIHRoYXQgd2Ug
YXNzZXJ0IGlmIHdlIHRyeSB0byBlcmFzZSgpIGVuZCgpLgorVEVTVChUYWJsZURlYXRoVGVzdCwg
RXJhc2VPZkVuZEFzc2VydHMpIHsKKyAgLy8gVXNlIGFuIGFzc2VydCB3aXRoIHNpZGUtZWZmZWN0
cyB0byBmaWd1cmUgb3V0IGlmIHRoZXkgYXJlIGFjdHVhbGx5IGVuYWJsZWQuCisgIGJvb2wgYXNz
ZXJ0X2VuYWJsZWQgPSBmYWxzZTsKKyAgYXNzZXJ0KFsmXSgpIHsKKyAgICBhc3NlcnRfZW5hYmxl
ZCA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7CisgIH0oKSk7CisgIGlmICghYXNzZXJ0X2VuYWJs
ZWQpIHJldHVybjsKKworICBJbnRUYWJsZSB0OworICAvLyBFeHRyYSBzaW1wbGUgInJlZ2V4cCIg
YXMgcmVnZXhwIHN1cHBvcnQgaXMgaGlnaGx5IHZhcmllZCBhY3Jvc3MgcGxhdGZvcm1zLgorICBj
b25zdGV4cHIgY2hhciBrRGVhdGhNc2dbXSA9ICJpdCAhPSBlbmQiOworICBFWFBFQ1RfREVBVEhf
SUZfU1VQUE9SVEVEKHQuZXJhc2UodC5lbmQoKSksIGtEZWF0aE1zZyk7Cit9CisKKyNpZmRlZiBB
RERSRVNTX1NBTklUSVpFUgorVEVTVChTYW5pdGl6ZXIsIFBvaXNvbmluZ1VudXNlZCkgeworICBJ
bnRUYWJsZSB0OworICAvLyBJbnNlcnQgc29tZXRoaW5nIHRvIGZvcmNlIGFuIGFsbG9jYXRpb24u
CisgIGludDY0X3QmIHYxID0gKnQuaW5zZXJ0KDApLmZpcnN0OworCisgIC8vIE1ha2Ugc3VyZSB0
aGVyZSBpcyBzb21ldGhpbmcgdG8gdGVzdC4KKyAgQVNTRVJUX0dUKHQuY2FwYWNpdHkoKSwgMSk7
CisKKyAgaW50NjRfdCogc2xvdHMgPSBSYXdIYXNoU2V0VGVzdE9ubHlBY2Nlc3M6OkdldFNsb3Rz
KHQpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQuY2FwYWNpdHkoKTsgKytpKSB7CisgICAg
RVhQRUNUX0VRKHNsb3RzICsgaSAhPSAmdjEsIF9fYXNhbl9hZGRyZXNzX2lzX3BvaXNvbmVkKHNs
b3RzICsgaSkpOworICB9Cit9CisKK1RFU1QoU2FuaXRpemVyLCBQb2lzb25pbmdPbkVyYXNlKSB7
CisgIEludFRhYmxlIHQ7CisgIGludDY0X3QmIHYgPSAqdC5pbnNlcnQoMCkuZmlyc3Q7CisKKyAg
RVhQRUNUX0ZBTFNFKF9fYXNhbl9hZGRyZXNzX2lzX3BvaXNvbmVkKCZ2KSk7CisgIHQuZXJhc2Uo
MCk7CisgIEVYUEVDVF9UUlVFKF9fYXNhbl9hZGRyZXNzX2lzX3BvaXNvbmVkKCZ2KSk7Cit9Cisj
ZW5kaWYgIC8vIEFERFJFU1NfU0FOSVRJWkVSCisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFt
ZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2VyLmNjCmluZGV4IGZl
MDBhY2E4ZmI5OGYxMjBmMjM1MjAyMzY5YjBiNWJlODc2ZDQ3NDcuLmIxOGUwYmI3YTFlYTVmZmZk
Yzk2MThmMWU3OTNiOGZmOTJlZDkwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVy
bmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlci5jYwpAQCAtMjEsNiArMjEsNyBAQCBpbnQgQmFzZUNv
dW50ZWRJbnN0YW5jZTo6bnVtX2xpdmVfaW5zdGFuY2VzXyA9IDA7CiBpbnQgQmFzZUNvdW50ZWRJ
bnN0YW5jZTo6bnVtX21vdmVzXyA9IDA7CiBpbnQgQmFzZUNvdW50ZWRJbnN0YW5jZTo6bnVtX2Nv
cGllc18gPSAwOwogaW50IEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9zd2Fwc18gPSAwOworaW50
IEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9jb21wYXJpc29uc18gPSAwOwogCiB9ICAvLyBuYW1l
c3BhY2UgdGVzdF9pbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXIuaAppbmRleCBjZjhmM2E1MzFl
NjIxMmZjYWExM2Q2NTM1MTcwYWY4NmJmZmE2OThhLi5lYzQ1ZjU3NDAzN2ZjOGUwYjY5MzdiY2Q4
ZmMxZjQyNzU2ZTA4MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVz
dF9pbnN0YW5jZV90cmFja2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3Rf
aW5zdGFuY2VfdHJhY2tlci5oCkBAIC0yMiw4ICsyMiw4IEBAIG5hbWVzcGFjZSBhYnNsIHsKIG5h
bWVzcGFjZSB0ZXN0X2ludGVybmFsIHsKIAogLy8gQSB0eXBlIHRoYXQgY291bnRzIG51bWJlciBv
ZiBvY2N1cmVuY2VzIG9mIHRoZSB0eXBlLCB0aGUgbGl2ZSBvY2N1cnJlbmNlcyBvZgotLy8gdGhl
IHR5cGUsIGFzIHdlbGwgYXMgdGhlIG51bWJlciBvZiBjb3BpZXMsIG1vdmVzLCBhbmQgc3dhcHMg
dGhhdCBoYXZlCi0vLyBvY2N1cnJlZCBvbiB0aGUgdHlwZS4gVGhpcyBpcyB1c2VkIGFzIGEgYmFz
ZSBjbGFzcyBmb3IgdGhlIGNvcHlhYmxlLAorLy8gdGhlIHR5cGUsIGFzIHdlbGwgYXMgdGhlIG51
bWJlciBvZiBjb3BpZXMsIG1vdmVzLCBzd2FwcywgYW5kIGNvbXBhcmlzb25zIHRoYXQKKy8vIGhh
dmUgb2NjdXJyZWQgb24gdGhlIHR5cGUuIFRoaXMgaXMgdXNlZCBhcyBhIGJhc2UgY2xhc3MgZm9y
IHRoZSBjb3B5YWJsZSwKIC8vIGNvcHlhYmxlK21vdmFibGUsIGFuZCBtb3ZhYmxlIHR5cGVzIGJl
bG93IHRoYXQgYXJlIHVzZWQgaW4gYWN0dWFsIHRlc3RzLiBVc2UKIC8vIEluc3RhbmNlVHJhY2tl
ciBpbiB0ZXN0cyB0byB0cmFjayB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcy4KIGNsYXNzIEJhc2VD
b3VudGVkSW5zdGFuY2UgewpAQCAtNjYsNiArNjYsMzYgQEAgY2xhc3MgQmFzZUNvdW50ZWRJbnN0
YW5jZSB7CiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEJhc2VDb3VudGVkSW5zdGFuY2UmIHgpIGNvbnN0IHsKKyAgICArK251bV9jb21wYXJpc29uc187
CisgICAgcmV0dXJuIHZhbHVlXyA9PSB4LnZhbHVlXzsKKyAgfQorCisgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBCYXNlQ291bnRlZEluc3RhbmNlJiB4KSBjb25zdCB7CisgICAgKytudW1fY29tcGFy
aXNvbnNfOworICAgIHJldHVybiB2YWx1ZV8gIT0geC52YWx1ZV87CisgIH0KKworICBib29sIG9w
ZXJhdG9yPChjb25zdCBCYXNlQ291bnRlZEluc3RhbmNlJiB4KSBjb25zdCB7CisgICAgKytudW1f
Y29tcGFyaXNvbnNfOworICAgIHJldHVybiB2YWx1ZV8gPCB4LnZhbHVlXzsKKyAgfQorCisgIGJv
b2wgb3BlcmF0b3I+KGNvbnN0IEJhc2VDb3VudGVkSW5zdGFuY2UmIHgpIGNvbnN0IHsKKyAgICAr
K251bV9jb21wYXJpc29uc187CisgICAgcmV0dXJuIHZhbHVlXyA+IHgudmFsdWVfOworICB9CisK
KyAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IEJhc2VDb3VudGVkSW5zdGFuY2UmIHgpIGNvbnN0IHsK
KyAgICArK251bV9jb21wYXJpc29uc187CisgICAgcmV0dXJuIHZhbHVlXyA8PSB4LnZhbHVlXzsK
KyAgfQorCisgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBCYXNlQ291bnRlZEluc3RhbmNlJiB4KSBj
b25zdCB7CisgICAgKytudW1fY29tcGFyaXNvbnNfOworICAgIHJldHVybiB2YWx1ZV8gPj0geC52
YWx1ZV87CisgIH0KKwogICBpbnQgdmFsdWUoKSBjb25zdCB7CiAgICAgaWYgKCFpc19saXZlXykg
c3RkOjphYm9ydCgpOwogICAgIHJldHVybiB2YWx1ZV87CkBAIC0xMDgsNiArMTM4LDkgQEAgY2xh
c3MgQmFzZUNvdW50ZWRJbnN0YW5jZSB7CiAKICAgLy8gTnVtYmVyIG9mIHRpbWVzIHRoYXQgQmFz
ZUNvdW50ZWRJbnN0YW5jZSBvYmplY3RzIHdlcmUgc3dhcHBlZC4KICAgc3RhdGljIGludCBudW1f
c3dhcHNfOworCisgIC8vIE51bWJlciBvZiB0aW1lcyB0aGF0IEJhc2VDb3VudGVkSW5zdGFuY2Ug
b2JqZWN0cyB3ZXJlIGNvbXBhcmVkLgorICBzdGF0aWMgaW50IG51bV9jb21wYXJpc29uc187CiB9
OwogCiAvLyBIZWxwZXIgdG8gdHJhY2sgdGhlIEJhc2VDb3VudGVkSW5zdGFuY2UgaW5zdGFuY2Ug
Y291bnRlcnMuIEV4cGVjdHMgdGhhdCB0aGUKQEAgLTE1MiwxMyArMTg1LDIxIEBAIGNsYXNzIElu
c3RhbmNlVHJhY2tlciB7CiAgIC8vIGNvbnN0cnVjdGlvbiBvciB0aGUgbGFzdCBjYWxsIHRvIFJl
c2V0Q29waWVzTW92ZXNTd2FwcygpLgogICBpbnQgc3dhcHMoKSBjb25zdCB7IHJldHVybiBCYXNl
Q291bnRlZEluc3RhbmNlOjpudW1fc3dhcHNfIC0gc3RhcnRfc3dhcHNfOyB9CiAKLSAgLy8gUmVz
ZXRzIHRoZSBiYXNlIHZhbHVlcyBmb3IgbW92ZXMsIGNvcGllcyBhbmQgc3dhcHMgdG8gdGhlIGN1
cnJlbnQgdmFsdWVzLAotICAvLyBzbyB0aGF0IHN1YnNlcXVlbnQgR2V0KigpIGNhbGxzIGZvciBt
b3ZlcywgY29waWVzIGFuZCBzd2FwcyB3aWxsIGNvbXBhcmUgdG8KLSAgLy8gdGhlIHNpdHVhdGlv
biBhdCB0aGUgcG9pbnQgb2YgdGhpcyBjYWxsLgorICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg
Y29tcGFyaXNvbnMgb24gQmFzZUNvdW50ZWRJbnN0YW5jZSBvYmplY3RzIHNpbmNlCisgIC8vIGNv
bnN0cnVjdGlvbiBvciB0aGUgbGFzdCBjYWxsIHRvIFJlc2V0Q29waWVzTW92ZXNTd2FwcygpLgor
ICBpbnQgY29tcGFyaXNvbnMoKSBjb25zdCB7CisgICAgcmV0dXJuIEJhc2VDb3VudGVkSW5zdGFu
Y2U6Om51bV9jb21wYXJpc29uc18gLSBzdGFydF9jb21wYXJpc29uc187CisgIH0KKworICAvLyBS
ZXNldHMgdGhlIGJhc2UgdmFsdWVzIGZvciBtb3ZlcywgY29waWVzLCBjb21wYXJpc29ucywgYW5k
IHN3YXBzIHRvIHRoZQorICAvLyBjdXJyZW50IHZhbHVlcywgc28gdGhhdCBzdWJzZXF1ZW50IEdl
dCooKSBjYWxscyBmb3IgbW92ZXMsIGNvcGllcywKKyAgLy8gY29tcGFyaXNvbnMsIGFuZCBzd2Fw
cyB3aWxsIGNvbXBhcmUgdG8gdGhlIHNpdHVhdGlvbiBhdCB0aGUgcG9pbnQgb2YgdGhpcworICAv
LyBjYWxsLgogICB2b2lkIFJlc2V0Q29waWVzTW92ZXNTd2FwcygpIHsKICAgICBzdGFydF9tb3Zl
c18gPSBCYXNlQ291bnRlZEluc3RhbmNlOjpudW1fbW92ZXNfOwogICAgIHN0YXJ0X2NvcGllc18g
PSBCYXNlQ291bnRlZEluc3RhbmNlOjpudW1fY29waWVzXzsKICAgICBzdGFydF9zd2Fwc18gPSBC
YXNlQ291bnRlZEluc3RhbmNlOjpudW1fc3dhcHNfOworICAgIHN0YXJ0X2NvbXBhcmlzb25zXyA9
IEJhc2VDb3VudGVkSW5zdGFuY2U6Om51bV9jb21wYXJpc29uc187CiAgIH0KIAogIHByaXZhdGU6
CkBAIC0xNjcsNiArMjA4LDcgQEAgY2xhc3MgSW5zdGFuY2VUcmFja2VyIHsKICAgaW50IHN0YXJ0
X21vdmVzXzsKICAgaW50IHN0YXJ0X2NvcGllc187CiAgIGludCBzdGFydF9zd2Fwc187CisgIGlu
dCBzdGFydF9jb21wYXJpc29uc187CiB9OwogCiAvLyBDb3B5YWJsZSwgbm90IG1vdmFibGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2Vy
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdGVzdF9pbnN0YW5jZV90cmFja2Vy
X3Rlc3QuY2MKaW5kZXggOWVmYjY3NzFjZjA4NmRiMTZmZWYzOTQ2MGM1OTE5MjFlY2Q1ZjY5MS4u
MGFlNTc2MzZkZjIxMzM4OTc5MjEwMzk1YmIzOTk2YmJkOGM5N2I4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvY29udGFpbmVyL2ludGVybmFsL3Rlc3RfaW5zdGFuY2VfdHJhY2tlcl90ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90ZXN0X2luc3RhbmNlX3RyYWNrZXJfdGVzdC5jYwpA
QCAtMTU3LDQgKzE1NywyNiBAQCBURVNUKFRlc3RJbnN0YW5jZVRyYWNrZXIsIEV4aXN0aW5nSW5z
dGFuY2VzKSB7CiAgIEVYUEVDVF9FUSgxLCB0cmFja2VyLm1vdmVzKCkpOwogfQogCitURVNUKFRl
c3RJbnN0YW5jZVRyYWNrZXIsIENvbXBhcmlzb25zKSB7CisgIEluc3RhbmNlVHJhY2tlciB0cmFj
a2VyOworICBNb3ZhYmxlT25seUluc3RhbmNlIG9uZSgxKSwgdHdvKDIpOworCisgIEVYUEVDVF9F
USgwLCB0cmFja2VyLmNvbXBhcmlzb25zKCkpOworICBFWFBFQ1RfRkFMU0Uob25lID09IHR3byk7
CisgIEVYUEVDVF9FUSgxLCB0cmFja2VyLmNvbXBhcmlzb25zKCkpOworICBFWFBFQ1RfVFJVRShv
bmUgIT0gdHdvKTsKKyAgRVhQRUNUX0VRKDIsIHRyYWNrZXIuY29tcGFyaXNvbnMoKSk7CisgIEVY
UEVDVF9UUlVFKG9uZSA8IHR3byk7CisgIEVYUEVDVF9FUSgzLCB0cmFja2VyLmNvbXBhcmlzb25z
KCkpOworICBFWFBFQ1RfRkFMU0Uob25lID4gdHdvKTsKKyAgRVhQRUNUX0VRKDQsIHRyYWNrZXIu
Y29tcGFyaXNvbnMoKSk7CisgIEVYUEVDVF9UUlVFKG9uZSA8PSB0d28pOworICBFWFBFQ1RfRVEo
NSwgdHJhY2tlci5jb21wYXJpc29ucygpKTsKKyAgRVhQRUNUX0ZBTFNFKG9uZSA+PSB0d28pOwor
ICBFWFBFQ1RfRVEoNiwgdHJhY2tlci5jb21wYXJpc29ucygpKTsKKworICB0cmFja2VyLlJlc2V0
Q29waWVzTW92ZXNTd2FwcygpOworICBFWFBFQ1RfRVEoMCwgdHJhY2tlci5jb21wYXJpc29ucygp
KTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50
ZXJuYWwvdHJhY2tlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3RyYWNrZWQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZDE0YWYwMzEzOGQzZWZkNjYyMzdiNzk3ZjNlZjczYzAwM2M4ODE1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3RyYWNrZWQuaApAQCAtMCwwICsx
LDc4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjaWZuZGVm
IEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1RSQUNLRURfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlO
RVJfSU5URVJOQUxfVFJBQ0tFRF9IXworCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8
bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFj
ZSBjb250YWluZXJfaW50ZXJuYWwgeworCisvLyBBIGNsYXNzIHRoYXQgdHJhY2tzIGl0cyBjb3Bp
ZXMgYW5kIG1vdmVzIHNvIHRoYXQgaXQgY2FuIGJlIHF1ZXJpZWQgaW4gdGVzdHMuCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4KK2NsYXNzIFRyYWNrZWQgeworIHB1YmxpYzoKKyAgVHJhY2tlZCgpIHt9Cisg
IC8vIE5PTElOVE5FWFRMSU5FKHJ1bnRpbWUvZXhwbGljaXQpCisgIFRyYWNrZWQoY29uc3QgVCYg
dmFsKSA6IHZhbF8odmFsKSB7fQorICBUcmFja2VkKGNvbnN0IFRyYWNrZWQmIHRoYXQpCisgICAg
ICA6IHZhbF8odGhhdC52YWxfKSwKKyAgICAgICAgbnVtX21vdmVzXyh0aGF0Lm51bV9tb3Zlc18p
LAorICAgICAgICBudW1fY29waWVzXyh0aGF0Lm51bV9jb3BpZXNfKSB7CisgICAgKysoKm51bV9j
b3BpZXNfKTsKKyAgfQorICBUcmFja2VkKFRyYWNrZWQmJiB0aGF0KQorICAgICAgOiB2YWxfKHN0
ZDo6bW92ZSh0aGF0LnZhbF8pKSwKKyAgICAgICAgbnVtX21vdmVzXyhzdGQ6Om1vdmUodGhhdC5u
dW1fbW92ZXNfKSksCisgICAgICAgIG51bV9jb3BpZXNfKHN0ZDo6bW92ZSh0aGF0Lm51bV9jb3Bp
ZXNfKSkgeworICAgICsrKCpudW1fbW92ZXNfKTsKKyAgfQorICBUcmFja2VkJiBvcGVyYXRvcj0o
Y29uc3QgVHJhY2tlZCYgdGhhdCkgeworICAgIHZhbF8gPSB0aGF0LnZhbF87CisgICAgbnVtX21v
dmVzXyA9IHRoYXQubnVtX21vdmVzXzsKKyAgICBudW1fY29waWVzXyA9IHRoYXQubnVtX2NvcGll
c187CisgICAgKysoKm51bV9jb3BpZXNfKTsKKyAgfQorICBUcmFja2VkJiBvcGVyYXRvcj0oVHJh
Y2tlZCYmIHRoYXQpIHsKKyAgICB2YWxfID0gc3RkOjptb3ZlKHRoYXQudmFsXyk7CisgICAgbnVt
X21vdmVzXyA9IHN0ZDo6bW92ZSh0aGF0Lm51bV9tb3Zlc18pOworICAgIG51bV9jb3BpZXNfID0g
c3RkOjptb3ZlKHRoYXQubnVtX2NvcGllc18pOworICAgICsrKCpudW1fbW92ZXNfKTsKKyAgfQor
CisgIGNvbnN0IFQmIHZhbCgpIGNvbnN0IHsgcmV0dXJuIHZhbF87IH0KKworICBmcmllbmQgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFRyYWNrZWQmIGEsIGNvbnN0IFRyYWNrZWQmIGIpIHsKKyAgICBy
ZXR1cm4gYS52YWxfID09IGIudmFsXzsKKyAgfQorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFRyYWNrZWQmIGEsIGNvbnN0IFRyYWNrZWQmIGIpIHsKKyAgICByZXR1cm4gIShhID09IGIp
OworICB9CisKKyAgc2l6ZV90IG51bV9jb3BpZXMoKSB7IHJldHVybiAqbnVtX2NvcGllc187IH0K
KyAgc2l6ZV90IG51bV9tb3ZlcygpIHsgcmV0dXJuICpudW1fbW92ZXNfOyB9CisKKyBwcml2YXRl
OgorICBUIHZhbF87CisgIHN0ZDo6c2hhcmVkX3B0cjxzaXplX3Q+IG51bV9tb3Zlc18gPSBzdGQ6
Om1ha2Vfc2hhcmVkPHNpemVfdD4oMCk7CisgIHN0ZDo6c2hhcmVkX3B0cjxzaXplX3Q+IG51bV9j
b3BpZXNfID0gc3RkOjptYWtlX3NoYXJlZDxzaXplX3Q+KDApOworfTsKKworfSAgLy8gbmFtZXNw
YWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAv
LyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9UUkFDS0VEX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9j
b250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmZmYjY0NmNiMjY0YTY1ZWZhNGJlY2NkZWYyY2EyOGUxNGU5YTVkNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2NvbnN0
cnVjdG9yX3Rlc3QuaApAQCAtMCwwICsxLDQwNCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFi
c2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVS
RURfTUFQX0NPTlNUUlVDVE9SX1RFU1RfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJfSU5URVJO
QUxfVU5PUkRFUkVEX01BUF9DT05TVFJVQ1RPUl9URVNUX0hfCisKKyNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hh
c2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5h
bC9oYXNoX3BvbGljeV90ZXN0aW5nLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBj
b250YWluZXJfaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xhc3MgVW5vcmRNYXA+CitjbGFzcyBD
b25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitUWVBFRF9URVNU
X0NBU0VfUChDb25zdHJ1Y3RvclRlc3QpOworCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0
LCBOb0FyZ3MpIHsKKyAgVHlwZVBhcmFtIG07CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7Cisg
IEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7Cit9CisK
K1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50KSB7CisgIFR5cGVQYXJh
bSBtKDEyMyk7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKG0sIDo6
dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9j
b3VudCgpLCAxMjMpOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRD
b3VudEhhc2gpIHsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICBI
IGhhc2hlcjsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIpOworICBFWFBFQ1RfRVEobS5oYXNo
X2Z1bmN0aW9uKCksIGhhc2hlcik7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVD
VF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9H
RShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBCdWNrZXRDb3VudEhhc2hFcXVhbCkgeworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsK
KyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIFR5cGVQYXJhbSBtKDEyMywgaGFzaGVyLCBlcXVh
bCk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VR
KG0ua2V5X2VxKCksIGVxdWFsKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNU
X1RIQVQobSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dF
KG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRl
c3QsIEJ1Y2tldENvdW50SGFzaEVxdWFsQWxsb2MpIHsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1
YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBI
IGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBo
YXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFz
aGVyKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIGVxdWFsKTsKKyAgRVhQRUNUX0VRKG0uZ2V0
X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVD
VF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9H
RShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JU
ZXN0LCBCdWNrZXRDb3VudEFsbG9jKSB7CisjaWYgZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE0
KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hYMTcpCisgIHVzaW5nIEEgPSB0eXBlbmFtZSBU
eXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgx
MjMsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVY
UEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKG0sIDo6dGVzdGluZzo6VW5vcmRl
cmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOwor
I2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFz
aEFsbG9jKSB7CisjaWYgZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVO
T1JERVJFRF9NQVBfQ1hYMTcpCisgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hl
cjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEgg
aGFzaGVyOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgYWxsb2Mp
OworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIGhhc2hlcik7CisgIEVYUEVDVF9FUSht
LmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOworICBF
WFBFQ1RfVEhBVChtLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOworICBFWFBF
Q1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKKyNlbmRpZgorfQorCitUWVBFRF9URVNUX1Ao
Q29uc3RydWN0b3JUZXN0LCBCdWNrZXRBbGxvYykgeworI2lmIEFCU0xfVU5PUkRFUkVEX1NVUFBP
UlRTX0FMTE9DX0NUT1JTCisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRv
cl90eXBlOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbShhbGxvYyk7CisgIEVYUEVDVF9F
UShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVFJVRShtLmVtcHR5KCkpOwor
ICBFWFBFQ1RfVEhBVChtLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOworI2Vu
ZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIElucHV0SXRlcmF0b3JCdWNr
ZXRIYXNoRXF1YWxBbGxvYykgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVk
VHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7
CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9
IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVx
dWFsOworICBBIGFsbG9jKDApOworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2Vu
ZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAg
ICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5i
ZWdpbigpLCB2YWx1ZXMuZW5kKCksIDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBFWFBF
Q1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIGhhc2hlcik7CisgIEVYUEVDVF9FUShtLmtleV9lcSgp
LCBlcXVhbCk7CisgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBF
Q1RfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZh
bHVlcykpOworICBFWFBFQ1RfR0UobS5idWNrZXRfY291bnQoKSwgMTIzKTsKK30KKworVFlQRURf
VEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jKSB7CisjaWYg
ZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hY
MTcpCisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47
CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBBIGFs
bG9jKDApOworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6
OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVy
bmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigpLCB2YWx1
ZXMuZW5kKCksIDEyMywgYWxsb2MpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9yKCksIGFs
bG9jKTsKKyAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7
CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRv
ckJ1Y2tldEhhc2hBbGxvYykgeworI2lmIGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNCkgfHwg
ZGVmaW5lZChVTk9SREVSRURfTUFQX0NYWDE3KQorICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6
R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFt
OjpoYXNoZXI7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBl
OworICBIIGhhc2hlcjsKKyAgQSBhbGxvYygwKTsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOwor
ICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAg
ICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0g
bSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpLCAxMjMsIGhhc2hlciwgYWxsb2MpOworICBF
WFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIGhhc2hlcik7CisgIEVYUEVDVF9FUShtLmdldF9h
bGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpV
bm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBFWFBFQ1RfR0UobS5idWNrZXRf
Y291bnQoKSwgMTIzKTsKKyNlbmRpZgorfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0
LCBDb3B5Q29uc3RydWN0b3IpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRl
ZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVy
OworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEg
PSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBl
cXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsLCBh
bGxvYyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IDEwOyArK2kpIG0uaW5zZXJ0KGhhc2hf
aW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkpOworICBUeXBlUGFyYW0gbihtKTsKKyAgRVhQRUNU
X0VRKG0uaGFzaF9mdW5jdGlvbigpLCBuLmhhc2hfZnVuY3Rpb24oKSk7CisgIEVYUEVDVF9FUSht
LmtleV9lcSgpLCBuLmtleV9lcSgpKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBu
LmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVDVF9FUShtLCBuKTsKK30KKworVFlQRURfVEVTVF9Q
KENvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yQWxsb2MpIHsKKyNpZiBBQlNMX1VOT1JE
RVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpo
YXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNp
bmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOwor
ICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgZXF1
YWwsIGFsbG9jKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gMTA7ICsraSkgbS5pbnNlcnQo
aGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKSk7CisgIFR5cGVQYXJhbSBuKG0sIEEoMTEp
KTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBuLmhhc2hfZnVuY3Rpb24oKSk7Cisg
IEVYUEVDVF9FUShtLmtleV9lcSgpLCBuLmtleV9lcSgpKTsKKyAgRVhQRUNUX05FKG0uZ2V0X2Fs
bG9jYXRvcigpLCBuLmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVDVF9FUShtLCBuKTsKKyNlbmRp
ZgorfQorCisvLyBUT0RPKGFsa2lzKTogVGVzdCBub24tcHJvcGFnYXRpbmcgYWxsb2NhdG9ycyBv
biBjb3B5IGNvbnN0cnVjdG9ycy4KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92
ZUNvbnN0cnVjdG9yKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBl
PFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAg
dXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlw
ZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7
CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKDEyMywgaGFzaGVyLCBlcXVhbCwgYWxsb2Mp
OworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSAxMDsgKytpKSBtLmluc2VydChoYXNoX2ludGVy
bmFsOjpHZW5lcmF0b3I8VD4oKSgpKTsKKyAgVHlwZVBhcmFtIHQobSk7CisgIFR5cGVQYXJhbSBu
KHN0ZDo6bW92ZSh0KSk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgbi5oYXNoX2Z1
bmN0aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CisgIEVYUEVD
VF9FUShtLmdldF9hbGxvY2F0b3IoKSwgbi5nZXRfYWxsb2NhdG9yKCkpOworICBFWFBFQ1RfRVEo
bSwgbik7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIE1vdmVDb25zdHJ1Y3Rv
ckFsbG9jKSB7CisjaWYgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMKKyAgdXNp
bmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcg
SCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlw
ZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9j
YXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlw
ZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpICE9IDEwOyArK2kpIG0uaW5zZXJ0KGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkp
OworICBUeXBlUGFyYW0gdChtKTsKKyAgVHlwZVBhcmFtIG4oc3RkOjptb3ZlKHQpLCBBKDEpKTsK
KyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBuLmhhc2hfZnVuY3Rpb24oKSk7CisgIEVY
UEVDVF9FUShtLmtleV9lcSgpLCBuLmtleV9lcSgpKTsKKyAgRVhQRUNUX05FKG0uZ2V0X2FsbG9j
YXRvcigpLCBuLmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVDVF9FUShtLCBuKTsKKyNlbmRpZgor
fQorCisvLyBUT0RPKGFsa2lzKTogVGVzdCBub24tcHJvcGFnYXRpbmcgYWxsb2NhdG9ycyBvbiBt
b3ZlIGNvbnN0cnVjdG9ycy4KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5pdGlh
bGl6ZXJMaXN0QnVja2V0SGFzaEVxdWFsQWxsb2MpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJu
YWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9y
PFQ+IGdlbjsKKyAgc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcyA9IHtnZW4oKSwgZ2Vu
KCksIGdlbigpLCBnZW4oKSwgZ2VuKCl9OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFt
OjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAg
dXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVy
OworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbSh2YWx1ZXMsIDEyMywg
aGFzaGVyLCBlcXVhbCwgYWxsb2MpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIGhh
c2hlcik7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBlcXVhbCk7CisgIEVYUEVDVF9FUShtLmdl
dF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5n
OjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBFWFBFQ1RfR0UobS5idWNr
ZXRfY291bnQoKSwgMTIzKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5p
dGlhbGl6ZXJMaXN0QnVja2V0QWxsb2MpIHsKKyNpZiBkZWZpbmVkKFVOT1JERVJFRF9NQVBfQ1hY
MTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNykKKyAgdXNpbmcgVCA9IGhhc2hfaW50
ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBn
ZW47CisgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1ZXMgPSB7Z2VuKCksIGdlbigpLCBn
ZW4oKSwgZ2VuKCksIGdlbigpfTsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0odmFsdWVz
LCAxMjMsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7Cisg
IEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJy
YXkodmFsdWVzKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlm
Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1Y2tl
dEhhc2hBbGxvYykgeworI2lmIGRlZmluZWQoVU5PUkRFUkVEX01BUF9DWFgxNCkgfHwgZGVmaW5l
ZChVTk9SREVSRURfTUFQX0NYWDE3KQorICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJh
dGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNo
ZXI7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBI
IGhhc2hlcjsKKyAgQSBhbGxvYygwKTsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdl
bjsKKyAgc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcyA9IHtnZW4oKSwgZ2VuKCksIGdl
bigpLCBnZW4oKSwgZ2VuKCl9OworICBUeXBlUGFyYW0gbSh2YWx1ZXMsIDEyMywgaGFzaGVyLCBh
bGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNU
X0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6
OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CisgIEVYUEVDVF9H
RShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25z
dHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnQpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6Okdl
bmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
aGFzaGVyOworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVz
aW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsK
KyAgRSBlcXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+
IGdlbjsKKyAgVHlwZVBhcmFtIG0oe2dlbigpLCBnZW4oKSwgZ2VuKCl9LCAxMjMsIGhhc2hlciwg
ZXF1YWwsIGFsbG9jKTsKKyAgVHlwZVBhcmFtIG47CisgIG4gPSBtOworICBFWFBFQ1RfRVEobS5o
YXNoX2Z1bmN0aW9uKCksIG4uaGFzaF9mdW5jdGlvbigpKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2Vx
KCksIG4ua2V5X2VxKCkpOworICBFWFBFQ1RfRVEobSwgbik7Cit9CisKKy8vIFRPRE8oYWxraXMp
OiBUZXN0IFtub24tXXByb3BhZ2F0aW5nIGFsbG9jYXRvcnMgb24gbW92ZS9jb3B5IGFzc2lnbm1l
bnRzCisvLyAoaXQgZGVwZW5kcyBvbiB0cmFpdHMpLgorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0
b3JUZXN0LCBNb3ZlQXNzaWdubWVudCkgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpo
YXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNp
bmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOwor
ICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4g
Z2VuOworICBUeXBlUGFyYW0gbSh7Z2VuKCksIGdlbigpLCBnZW4oKX0sIDEyMywgaGFzaGVyLCBl
cXVhbCwgYWxsb2MpOworICBUeXBlUGFyYW0gdChtKTsKKyAgVHlwZVBhcmFtIG47CisgIG4gPSBz
dGQ6Om1vdmUodCk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgbi5oYXNoX2Z1bmN0
aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgbi5rZXlfZXEoKSk7CisgIEVYUEVDVF9F
UShtLCBuKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudEZy
b21Jbml0aWFsaXplckxpc3QpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRl
ZFR5cGU8VHlwZVBhcmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAg
c3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcyA9IHtnZW4oKSwgZ2VuKCksIGdlbigpLCBn
ZW4oKSwgZ2VuKCl9OworICBUeXBlUGFyYW0gbTsKKyAgbSA9IHZhbHVlczsKKyAgRVhQRUNUX1RI
QVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMp
KTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudE92ZXJ3cml0
ZXNFeGlzdGluZykgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxU
eXBlUGFyYW0+OworICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBUeXBlUGFy
YW0gbSh7Z2VuKCksIGdlbigpLCBnZW4oKX0pOworICBUeXBlUGFyYW0gbih7Z2VuKCl9KTsKKyAg
biA9IG07CisgIEVYUEVDVF9FUShtLCBuKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9y
VGVzdCwgTW92ZUFzc2lnbm1lbnRPdmVyd3JpdGVzRXhpc3RpbmcpIHsKKyAgdXNpbmcgVCA9IGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6
R2VuZXJhdG9yPFQ+IGdlbjsKKyAgVHlwZVBhcmFtIG0oe2dlbigpLCBnZW4oKSwgZ2VuKCl9KTsK
KyAgVHlwZVBhcmFtIHQobSk7CisgIFR5cGVQYXJhbSBuKHtnZW4oKX0pOworICBuID0gc3RkOjpt
b3ZlKHQpOworICBFWFBFQ1RfRVEobSwgbik7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3Rv
clRlc3QsIEFzc2lnbm1lbnRGcm9tSW5pdGlhbGl6ZXJMaXN0T3ZlcndyaXRlc0V4aXN0aW5nKSB7
CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47Cisg
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPiBnZW47CisgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxUPiB2YWx1ZXMgPSB7Z2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpfTsKKyAgVHlw
ZVBhcmFtIG07CisgIG0gPSB2YWx1ZXM7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6OnRlc3Rp
bmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7Cit9CisKK1RZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnRPblNlbGYpIHsKKyAgdXNpbmcgVCA9IGhhc2hf
aW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdG9yPFQ+IGdlbjsKKyAgc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcyA9IHtnZW4o
KSwgZ2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCl9OworICBUeXBlUGFyYW0gbSh2YWx1ZXMpOwor
ICBtID0gKiZtOyAgLy8gQXZvaWQgLVdzZWxmLWFzc2lnbgorICBFWFBFQ1RfVEhBVChpdGVtcyht
KSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworfQorCisv
LyBXZSBjYW5ub3QgdGVzdCBzZWxmIG1vdmUgYXMgc3RhbmRhcmQgc3RhdGVzIHRoYXQgaXQgbGVh
dmVzIHN0YW5kYXJkCisvLyBjb250YWluZXJzIGluIHVuc3BlY2lmaWVkIHN0YXRlIChhbmQgaW4g
cHJhY3RpY2UgaW4gY2F1c2VzIG1lbW9yeS1sZWFrCisvLyBhY2NvcmRpbmcgdG8gaGVhcC1jaGVj
a2VyISkuCisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKAorICAgIENvbnN0cnVjdG9yVGVz
dCwgTm9BcmdzLCBCdWNrZXRDb3VudCwgQnVja2V0Q291bnRIYXNoLCBCdWNrZXRDb3VudEhhc2hF
cXVhbCwKKyAgICBCdWNrZXRDb3VudEhhc2hFcXVhbEFsbG9jLCBCdWNrZXRDb3VudEFsbG9jLCBC
dWNrZXRDb3VudEhhc2hBbGxvYywKKyAgICBCdWNrZXRBbGxvYywgSW5wdXRJdGVyYXRvckJ1Y2tl
dEhhc2hFcXVhbEFsbG9jLCBJbnB1dEl0ZXJhdG9yQnVja2V0QWxsb2MsCisgICAgSW5wdXRJdGVy
YXRvckJ1Y2tldEhhc2hBbGxvYywgQ29weUNvbnN0cnVjdG9yLCBDb3B5Q29uc3RydWN0b3JBbGxv
YywKKyAgICBNb3ZlQ29uc3RydWN0b3IsIE1vdmVDb25zdHJ1Y3RvckFsbG9jLCBJbml0aWFsaXpl
ckxpc3RCdWNrZXRIYXNoRXF1YWxBbGxvYywKKyAgICBJbml0aWFsaXplckxpc3RCdWNrZXRBbGxv
YywgSW5pdGlhbGl6ZXJMaXN0QnVja2V0SGFzaEFsbG9jLCBBc3NpZ25tZW50LAorICAgIE1vdmVB
c3NpZ25tZW50LCBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdCwKKyAgICBBc3NpZ25tZW50
T3ZlcndyaXRlc0V4aXN0aW5nLCBNb3ZlQXNzaWdubWVudE92ZXJ3cml0ZXNFeGlzdGluZywKKyAg
ICBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdE92ZXJ3cml0ZXNFeGlzdGluZywgQXNzaWdu
bWVudE9uU2VsZik7CisKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSBhYnNsCisjZW5kaWYgIC8vIEFCU0xfQ09OVEFJTkVSX0lOVEVSTkFMX1VOT1JE
RVJFRF9NQVBfQ09OU1RSVUNUT1JfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVy
L2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWYxYjZiNDg5
YjMwMWViOWZhZGQxYmY4NDkxOWNhZDYzN2M5YWI4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX2xvb2t1cF90ZXN0LmgKQEAgLTAsMCAr
MSwxMTQgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5k
ZWYgQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX01BUF9MT09LVVBfVEVTVF9IXwor
I2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfTUFQX0xPT0tVUF9URVNU
X0hfCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGlu
Zy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3Rp
bmcuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7
CisKK3RlbXBsYXRlIDxjbGFzcyBVbm9yZE1hcD4KK2NsYXNzIExvb2t1cFRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHt9OworCitUWVBFRF9URVNUX0NBU0VfUChMb29rdXBUZXN0KTsKKwor
VFlQRURfVEVTVF9QKExvb2t1cFRlc3QsIEF0KSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFs
OjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAg
c3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAg
ICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG0o
dmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIGZvciAoY29uc3QgYXV0byYgcCA6IHZh
bHVlcykgeworICAgIGNvbnN0IGF1dG8mIHZhbCA9IG0uYXQocC5maXJzdCk7CisgICAgRVhQRUNU
X0VRKHAuc2Vjb25kLCB2YWwpIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhwLmZpcnN0KTsK
KyAgfQorfQorCitUWVBFRF9URVNUX1AoTG9va3VwVGVzdCwgT3BlcmF0b3JCcmFja2V0KSB7Cisg
IHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVz
aW5nIFYgPSB0eXBlbmFtZSBUeXBlUGFyYW06Om1hcHBlZF90eXBlOworICBzdGQ6OnZlY3RvcjxU
PiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwg
MTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7Cisg
IFR5cGVQYXJhbSBtOworICBmb3IgKGNvbnN0IGF1dG8mIHAgOiB2YWx1ZXMpIHsKKyAgICBhdXRv
JiB2YWwgPSBtW3AuZmlyc3RdOworICAgIEVYUEVDVF9FUShWKCksIHZhbCkgPDwgOjp0ZXN0aW5n
OjpQcmludFRvU3RyaW5nKHAuZmlyc3QpOworICAgIHZhbCA9IHAuc2Vjb25kOworICB9CisgIGZv
ciAoY29uc3QgYXV0byYgcCA6IHZhbHVlcykKKyAgICBFWFBFQ1RfRVEocC5zZWNvbmQsIG1bcC5m
aXJzdF0pIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhwLmZpcnN0KTsKK30KKworVFlQRURf
VEVTVF9QKExvb2t1cFRlc3QsIENvdW50KSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3Rk
OjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAg
ICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG07Cisg
IGZvciAoY29uc3QgYXV0byYgcCA6IHZhbHVlcykKKyAgICBFWFBFQ1RfRVEoMCwgbS5jb3VudChw
LmZpcnN0KSkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHAuZmlyc3QpOworICBtLmluc2Vy
dCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgZm9yIChjb25zdCBhdXRvJiBwIDog
dmFsdWVzKQorICAgIEVYUEVDVF9FUSgxLCBtLmNvdW50KHAuZmlyc3QpKSA8PCA6OnRlc3Rpbmc6
OlByaW50VG9TdHJpbmcocC5maXJzdCk7Cit9CisKK1RZUEVEX1RFU1RfUChMb29rdXBUZXN0LCBG
aW5kKSB7CisgIHVzaW5nIHN0ZDo6Z2V0OworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6
Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAg
ICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtOworICBm
b3IgKGNvbnN0IGF1dG8mIHAgOiB2YWx1ZXMpCisgICAgRVhQRUNUX1RSVUUobS5lbmQoKSA9PSBt
LmZpbmQocC5maXJzdCkpCisgICAgICAgIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhwLmZp
cnN0KTsKKyAgbS5pbnNlcnQodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIGZvciAo
Y29uc3QgYXV0byYgcCA6IHZhbHVlcykgeworICAgIGF1dG8gaXQgPSBtLmZpbmQocC5maXJzdCk7
CisgICAgRVhQRUNUX1RSVUUobS5lbmQoKSAhPSBpdCkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3Ry
aW5nKHAuZmlyc3QpOworICAgIEVYUEVDVF9FUShwLnNlY29uZCwgZ2V0PDE+KCppdCkpIDw8IDo6
dGVzdGluZzo6UHJpbnRUb1N0cmluZyhwLmZpcnN0KTsKKyAgfQorfQorCitUWVBFRF9URVNUX1Ao
TG9va3VwVGVzdCwgRXF1YWxSYW5nZSkgeworICB1c2luZyBzdGQ6OmdldDsKKyAgdXNpbmcgVCA9
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8
VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyks
IDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOwor
ICBUeXBlUGFyYW0gbTsKKyAgZm9yIChjb25zdCBhdXRvJiBwIDogdmFsdWVzKSB7CisgICAgYXV0
byByID0gbS5lcXVhbF9yYW5nZShwLmZpcnN0KTsKKyAgICBBU1NFUlRfRVEoMCwgc3RkOjpkaXN0
YW5jZShyLmZpcnN0LCByLnNlY29uZCkpOworICB9CisgIG0uaW5zZXJ0KHZhbHVlcy5iZWdpbigp
LCB2YWx1ZXMuZW5kKCkpOworICBmb3IgKGNvbnN0IGF1dG8mIHAgOiB2YWx1ZXMpIHsKKyAgICBh
dXRvIHIgPSBtLmVxdWFsX3JhbmdlKHAuZmlyc3QpOworICAgIEFTU0VSVF9FUSgxLCBzdGQ6OmRp
c3RhbmNlKHIuZmlyc3QsIHIuc2Vjb25kKSk7CisgICAgRVhQRUNUX0VRKHAuc2Vjb25kLCBnZXQ8
MT4oKnIuZmlyc3QpKSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcocC5maXJzdCk7CisgIH0K
K30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoTG9va3VwVGVzdCwgQXQsIE9wZXJhdG9y
QnJhY2tldCwgQ291bnQsIEZpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBFcXVhbFJh
bmdlKTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNw
YWNlIGFic2wKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX01B
UF9MT09LVVBfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vu
b3JkZXJlZF9tYXBfbW9kaWZpZXJzX3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91
bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZjNjMzYWUyNzM1N2Mx
NDVlNmUxZjIwNmJhMmQyY2MyNGM4ODU0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRh
aW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0LmgKQEAgLTAsMCArMSwy
NzIgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYg
QUJTTF9DT05UQUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX01BUF9NT0RJRklFUlNfVEVTVF9IXwor
I2RlZmluZSBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfTUFQX01PRElGSUVSU19U
RVNUX0hfCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVz
dGluZy5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rl
c3RpbmcuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5h
bCB7CisKK3RlbXBsYXRlIDxjbGFzcyBVbm9yZE1hcD4KK2NsYXNzIE1vZGlmaWVyc1Rlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitUWVBFRF9URVNUX0NBU0VfUChNb2RpZmllcnNU
ZXN0KTsKKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIENsZWFyKSB7CisgIHVzaW5nIFQg
PSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9y
PFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMp
LCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsK
KyAgVHlwZVBhcmFtIG0odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIEFTU0VSVF9U
SEFUKGl0ZW1zKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVz
KSk7CisgIG0uY2xlYXIoKTsKKyAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5v
cmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7Cit9CisKK1RZ
UEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBJbnNlcnQpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50
ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5
cGVQYXJhbTo6bWFwcGVkX3R5cGU7CisgIFQgdmFsID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9y
PFQ+KCkoKTsKKyAgVHlwZVBhcmFtIG07CisgIGF1dG8gcCA9IG0uaW5zZXJ0KHZhbCk7CisgIEVY
UEVDVF9UUlVFKHAuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKHZhbCwgKnAuZmlyc3QpOworICBUIHZh
bDIgPSB7dmFsLmZpcnN0LCBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8Vj4oKSgpfTsKKyAgcCA9
IG0uaW5zZXJ0KHZhbDIpOworICBFWFBFQ1RfRkFMU0UocC5zZWNvbmQpOworICBFWFBFQ1RfRVEo
dmFsLCAqcC5maXJzdCk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBJbnNlcnRI
aW50KSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJh
bT47CisgIHVzaW5nIFYgPSB0eXBlbmFtZSBUeXBlUGFyYW06Om1hcHBlZF90eXBlOworICBUIHZh
bCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCk7CisgIFR5cGVQYXJhbSBtOworICBh
dXRvIGl0ID0gbS5pbnNlcnQobS5lbmQoKSwgdmFsKTsKKyAgRVhQRUNUX1RSVUUoaXQgIT0gbS5l
bmQoKSk7CisgIEVYUEVDVF9FUSh2YWwsICppdCk7CisgIFQgdmFsMiA9IHt2YWwuZmlyc3QsIGhh
c2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxWPigpKCl9OworICBpdCA9IG0uaW5zZXJ0KGl0LCB2YWwy
KTsKKyAgRVhQRUNUX1RSVUUoaXQgIT0gbS5lbmQoKSk7CisgIEVYUEVDVF9FUSh2YWwsICppdCk7
Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBJbnNlcnRSYW5nZSkgeworICB1c2lu
ZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBzdGQ6OnZl
Y3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFs
dWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4o
KSk7CisgIFR5cGVQYXJhbSBtOworICBtLmluc2VydCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVu
ZCgpKTsKKyAgQVNTRVJUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheSh2YWx1ZXMpKTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIElu
c2VydE9yQXNzaWduKSB7CisjaWZkZWYgVU5PUkRFUkVEX01BUF9DWFgxNworICB1c2luZyBzdGQ6
OmdldDsKKyAgdXNpbmcgSyA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X3R5cGU7CisgIHVzaW5n
IFYgPSB0eXBlbmFtZSBUeXBlUGFyYW06Om1hcHBlZF90eXBlOworICBLIGsgPSBoYXNoX2ludGVy
bmFsOjpHZW5lcmF0b3I8Sz4oKSgpOworICBWIHZhbCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRv
cjxWPigpKCk7CisgIFR5cGVQYXJhbSBtOworICBhdXRvIHAgPSBtLmluc2VydF9vcl9hc3NpZ24o
aywgdmFsKTsKKyAgRVhQRUNUX1RSVUUocC5zZWNvbmQpOworICBFWFBFQ1RfRVEoaywgZ2V0PDA+
KCpwLmZpcnN0KSk7CisgIEVYUEVDVF9FUSh2YWwsIGdldDwxPigqcC5maXJzdCkpOworICBWIHZh
bDIgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8Vj4oKSgpOworICBwID0gbS5pbnNlcnRfb3Jf
YXNzaWduKGssIHZhbDIpOworICBFWFBFQ1RfRkFMU0UocC5zZWNvbmQpOworICBFWFBFQ1RfRVEo
aywgZ2V0PDA+KCpwLmZpcnN0KSk7CisgIEVYUEVDVF9FUSh2YWwyLCBnZXQ8MT4oKnAuZmlyc3Qp
KTsKKyNlbmRpZgorfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgSW5zZXJ0T3JBc3Np
Z25IaW50KSB7CisjaWZkZWYgVU5PUkRFUkVEX01BUF9DWFgxNworICB1c2luZyBzdGQ6OmdldDsK
KyAgdXNpbmcgSyA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X3R5cGU7CisgIHVzaW5nIFYgPSB0
eXBlbmFtZSBUeXBlUGFyYW06Om1hcHBlZF90eXBlOworICBLIGsgPSBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0b3I8Sz4oKSgpOworICBWIHZhbCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxWPigp
KCk7CisgIFR5cGVQYXJhbSBtOworICBhdXRvIGl0ID0gbS5pbnNlcnRfb3JfYXNzaWduKG0uZW5k
KCksIGssIHZhbCk7CisgIEVYUEVDVF9UUlVFKGl0ICE9IG0uZW5kKCkpOworICBFWFBFQ1RfRVEo
aywgZ2V0PDA+KCppdCkpOworICBFWFBFQ1RfRVEodmFsLCBnZXQ8MT4oKml0KSk7CisgIFYgdmFs
MiA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxWPigpKCk7CisgIGl0ID0gbS5pbnNlcnRfb3Jf
YXNzaWduKGl0LCBrLCB2YWwyKTsKKyAgRVhQRUNUX0VRKGssIGdldDwwPigqaXQpKTsKKyAgRVhQ
RUNUX0VRKHZhbDIsIGdldDwxPigqaXQpKTsKKyNlbmRpZgorfQorCitUWVBFRF9URVNUX1AoTW9k
aWZpZXJzVGVzdCwgRW1wbGFjZSkgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJh
dGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBWID0gdHlwZW5hbWUgVHlwZVBhcmFtOjptYXBw
ZWRfdHlwZTsKKyAgVCB2YWwgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpOworICBU
eXBlUGFyYW0gbTsKKyAgLy8gVE9ETyhhbGtpcyk6IFdlIG5lZWQgYSB3YXkgdG8gcnVuIGVtcGxh
Y2UgaW4gYSBtb3JlIG1lYW5pbmdmdWwgd2F5LiBQZXJoYXBzCisgIC8vIHdpdGggdGVzdCB0cmFp
dHMvcG9saWN5LgorICBhdXRvIHAgPSBtLmVtcGxhY2UodmFsKTsKKyAgRVhQRUNUX1RSVUUocC5z
ZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqcC5maXJzdCk7CisgIFQgdmFsMiA9IHt2YWwuZmly
c3QsIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxWPigpKCl9OworICBwID0gbS5lbXBsYWNlKHZh
bDIpOworICBFWFBFQ1RfRkFMU0UocC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqcC5maXJz
dCk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBFbXBsYWNlSGludCkgeworICB1
c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2lu
ZyBWID0gdHlwZW5hbWUgVHlwZVBhcmFtOjptYXBwZWRfdHlwZTsKKyAgVCB2YWwgPSBoYXNoX2lu
dGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpOworICBUeXBlUGFyYW0gbTsKKyAgLy8gVE9ETyhhbGtp
cyk6IFdlIG5lZWQgYSB3YXkgdG8gcnVuIGVtcGxhY2UgaW4gYSBtb3JlIG1lYW5pbmdmdWwgd2F5
LiBQZXJoYXBzCisgIC8vIHdpdGggdGVzdCB0cmFpdHMvcG9saWN5LgorICBhdXRvIGl0ID0gbS5l
bXBsYWNlX2hpbnQobS5lbmQoKSwgdmFsKTsKKyAgRVhQRUNUX0VRKHZhbCwgKml0KTsKKyAgVCB2
YWwyID0ge3ZhbC5maXJzdCwgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+KCkoKX07CisgIGl0
ID0gbS5lbXBsYWNlX2hpbnQoaXQsIHZhbDIpOworICBFWFBFQ1RfRVEodmFsLCAqaXQpOworfQor
CitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgVHJ5RW1wbGFjZSkgeworI2lmZGVmIFVOT1JE
RVJFRF9NQVBfQ1hYMTcKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8
VHlwZVBhcmFtPjsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6bWFwcGVkX3R5cGU7
CisgIFQgdmFsID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKTsKKyAgVHlwZVBhcmFt
IG07CisgIC8vIFRPRE8oYWxraXMpOiBXZSBuZWVkIGEgd2F5IHRvIHJ1biBlbXBsYWNlIGluIGEg
bW9yZSBtZWFuaW5nZnVsIHdheS4gUGVyaGFwcworICAvLyB3aXRoIHRlc3QgdHJhaXRzL3BvbGlj
eS4KKyAgYXV0byBwID0gbS50cnlfZW1wbGFjZSh2YWwuZmlyc3QsIHZhbC5zZWNvbmQpOworICBF
WFBFQ1RfVFJVRShwLnNlY29uZCk7CisgIEVYUEVDVF9FUSh2YWwsICpwLmZpcnN0KTsKKyAgVCB2
YWwyID0ge3ZhbC5maXJzdCwgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+KCkoKX07CisgIHAg
PSBtLnRyeV9lbXBsYWNlKHZhbDIuZmlyc3QsIHZhbDIuc2Vjb25kKTsKKyAgRVhQRUNUX0ZBTFNF
KHAuc2Vjb25kKTsKKyAgRVhQRUNUX0VRKHZhbCwgKnAuZmlyc3QpOworI2VuZGlmCit9CisKK1RZ
UEVEX1RFU1RfUChNb2RpZmllcnNUZXN0LCBUcnlFbXBsYWNlSGludCkgeworI2lmZGVmIFVOT1JE
RVJFRF9NQVBfQ1hYMTcKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8
VHlwZVBhcmFtPjsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6bWFwcGVkX3R5cGU7
CisgIFQgdmFsID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKTsKKyAgVHlwZVBhcmFt
IG07CisgIC8vIFRPRE8oYWxraXMpOiBXZSBuZWVkIGEgd2F5IHRvIHJ1biBlbXBsYWNlIGluIGEg
bW9yZSBtZWFuaW5nZnVsIHdheS4gUGVyaGFwcworICAvLyB3aXRoIHRlc3QgdHJhaXRzL3BvbGlj
eS4KKyAgYXV0byBpdCA9IG0udHJ5X2VtcGxhY2UobS5lbmQoKSwgdmFsLmZpcnN0LCB2YWwuc2Vj
b25kKTsKKyAgRVhQRUNUX0VRKHZhbCwgKml0KTsKKyAgVCB2YWwyID0ge3ZhbC5maXJzdCwgaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdG9yPFY+KCkoKX07CisgIGl0ID0gbS50cnlfZW1wbGFjZShpdCwg
dmFsMi5maXJzdCwgdmFsMi5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqaXQpOworI2VuZGlm
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBWPgordXNpbmcgSWZOb3RWb2lkID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8IXN0ZDo6aXNfdm9pZDxWPjo6dmFsdWUsIFY+Ojp0eXBlOworCisvLyBJbiBv
cGVubWFwIHdlIGNob3NlIG5vdCB0byByZXR1cm4gdGhlIGl0ZXJhdG9yIGZyb20gZXJhc2UgYmVj
YXVzZSB0aGF0J3MKKy8vIG1vcmUgZXhwZW5zaXZlLiBBcyBzdWNoIHdlIGFkYXB0IGVyYXNlIHRv
IHJldHVybiBhbiBpdGVyYXRvciBoZXJlLgorc3RydWN0IEVyYXNlRmlyc3QgeworICB0ZW1wbGF0
ZSA8Y2xhc3MgTWFwPgorICBhdXRvIG9wZXJhdG9yKCkoTWFwKiBtLCBpbnQpIGNvbnN0CisgICAg
ICAtPiBJZk5vdFZvaWQ8ZGVjbHR5cGUobS0+ZXJhc2UobS0+YmVnaW4oKSkpPiB7CisgICAgcmV0
dXJuIG0tPmVyYXNlKG0tPmJlZ2luKCkpOworICB9CisgIHRlbXBsYXRlIDxjbGFzcyBNYXA+Cisg
IHR5cGVuYW1lIE1hcDo6aXRlcmF0b3Igb3BlcmF0b3IoKShNYXAqIG0sIC4uLikgY29uc3Qgewor
ICAgIGF1dG8gaXQgPSBtLT5iZWdpbigpOworICAgIG0tPmVyYXNlKGl0KyspOworICAgIHJldHVy
biBpdDsKKyAgfQorfTsKKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEVyYXNlKSB7Cisg
IHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVz
aW5nIHN0ZDo6Z2V0OworICBzdGQ6OnZlY3RvcjxUPiB2YWx1ZXM7CisgIHN0ZDo6Z2VuZXJhdGVf
bihzdGQ6OmJhY2tfaW5zZXJ0ZXIodmFsdWVzKSwgMTAsCisgICAgICAgICAgICAgICAgICBoYXNo
X2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcy5iZWdpbigp
LCB2YWx1ZXMuZW5kKCkpOworICBBU1NFUlRfVEhBVChpdGVtcyhtKSwgOjp0ZXN0aW5nOjpVbm9y
ZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBhdXRvJiBmaXJzdCA9ICptLmJlZ2lu
KCk7CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczI7CisgIGZvciAoY29uc3QgYXV0byYgdmFsIDog
dmFsdWVzKQorICAgIGlmIChnZXQ8MD4odmFsKSAhPSBnZXQ8MD4oZmlyc3QpKSB2YWx1ZXMyLnB1
c2hfYmFjayh2YWwpOworICBhdXRvIGl0ID0gRXJhc2VGaXJzdCgpKCZtLCAwKTsKKyAgQVNTRVJU
X1RSVUUoaXQgIT0gbS5lbmQoKSk7CisgIEVYUEVDVF9FUSgxLCBzdGQ6OmNvdW50KHZhbHVlczIu
YmVnaW4oKSwgdmFsdWVzMi5lbmQoKSwgKml0KSk7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0pLCA6
OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzMi5iZWdpbigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlczIuZW5kKCkpKTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEVyYXNl
UmFuZ2UpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBh
cmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpi
YWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAgICAgaGFzaF9pbnRlcm5h
bDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVz
LmVuZCgpKTsKKyAgQVNTRVJUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxl
bWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgYXV0byBpdCA9IG0uZXJhc2UobS5iZWdpbigpLCBt
LmVuZCgpKTsKKyAgRVhQRUNUX1RIQVQoaXRlbXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxl
bWVudHNBcmUoKSk7CisgIEVYUEVDVF9UUlVFKGl0ID09IG0uZW5kKCkpOworfQorCitUWVBFRF9U
RVNUX1AoTW9kaWZpZXJzVGVzdCwgRXJhc2VLZXkpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJu
YWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOwor
ICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAg
ICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0g
bSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgQVNTRVJUX1RIQVQoaXRlbXMobSks
IDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNU
X0VRKDEsIG0uZXJhc2UodmFsdWVzWzBdLmZpcnN0KSk7CisgIEVYUEVDVF9FUSgwLCBzdGQ6OmNv
dW50KG0uYmVnaW4oKSwgbS5lbmQoKSwgdmFsdWVzWzBdKSk7CisgIEVYUEVDVF9USEFUKGl0ZW1z
KG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzLmJlZ2luKCkg
KyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlcy5lbmQoKSkpOworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJzVGVz
dCwgU3dhcCkgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBl
UGFyYW0+OworICBzdGQ6OnZlY3RvcjxUPiB2MTsKKyAgc3RkOjp2ZWN0b3I8VD4gdjI7CisgIHN0
ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodjEpLCA1LCBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0b3I8VD4oKSk7CisgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIodjIp
LCA1LCBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSk7CisgIFR5cGVQYXJhbSBtMSh2MS5i
ZWdpbigpLCB2MS5lbmQoKSk7CisgIFR5cGVQYXJhbSBtMih2Mi5iZWdpbigpLCB2Mi5lbmQoKSk7
CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0xKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0Fy
ZUFycmF5KHYxKSk7CisgIEVYUEVDVF9USEFUKGl0ZW1zKG0yKSwgOjp0ZXN0aW5nOjpVbm9yZGVy
ZWRFbGVtZW50c0FyZUFycmF5KHYyKSk7CisgIG0xLnN3YXAobTIpOworICBFWFBFQ1RfVEhBVChp
dGVtcyhtMSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2MikpOworICBF
WFBFQ1RfVEhBVChpdGVtcyhtMiksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJh
eSh2MSkpOworfQorCisvLyBUT0RPKGFsa2lzKTogV3JpdGUgdGVzdHMgZm9yIGV4dHJhY3QuCisv
LyBUT0RPKGFsa2lzKTogV3JpdGUgdGVzdHMgZm9yIG1lcmdlLgorCitSRUdJU1RFUl9UWVBFRF9U
RVNUX0NBU0VfUChNb2RpZmllcnNUZXN0LCBDbGVhciwgSW5zZXJ0LCBJbnNlcnRIaW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW5zZXJ0UmFuZ2UsIEluc2VydE9yQXNzaWduLCBJbnNl
cnRPckFzc2lnbkhpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXBsYWNlLCBFbXBs
YWNlSGludCwgVHJ5RW1wbGFjZSwgVHJ5RW1wbGFjZUhpbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFcmFzZSwgRXJhc2VSYW5nZSwgRXJhc2VLZXksIFN3YXApOworCit9ICAvLyBuYW1l
c3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAv
LyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfTUFQX01PRElGSUVSU19URVNUX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MGU3OTljZGE4OWMzYzkwNTUzYjM4ZGI3YWIzMmEyYzE0ZWQwMjgwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfdGVzdC5j
YwpAQCAtMCwwICsxLDM4IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorCisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVy
L2ludGVybmFsL3Vub3JkZXJlZF9tYXBfY29uc3RydWN0b3JfdGVzdC5oIgorI2luY2x1ZGUgImFi
c2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbG9va3VwX3Rlc3QuaCIKKyNpbmNs
dWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfbWFwX21vZGlmaWVyc190ZXN0
LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewor
bmFtZXNwYWNlIHsKKwordXNpbmcgTWFwVHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPAorICAgIHN0
ZDo6dW5vcmRlcmVkX21hcDxpbnQsIGludCwgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxU
ZXN0aW5nRXF1YWwsCisgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jPHN0ZDo6cGFpcjxjb25z
dCBpbnQsIGludD4+PiwKKyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6
c3RyaW5nLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLAorICAgICAgICAgICAgICAgICAgICAgICBTdGF0
ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgQWxsb2M8c3RkOjpwYWly
PGNvbnN0IHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+Pj47CisKK0lOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKFVub3JkZXJlZE1hcCwgQ29uc3RydWN0b3JUZXN0LCBNYXBUeXBlcyk7CitJ
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbm9yZGVyZWRNYXAsIExvb2t1cFRlc3QsIE1h
cFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVub3JkZXJlZE1hcCwgTW9k
aWZpZXJzVGVzdCwgTWFwVHlwZXMpOworCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFj
ZSBjb250YWluZXJfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9jb25zdHJ1Y3Rvcl90ZXN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2I1OTM3MDQ2ODVjNDdmYWJhMTMwM2UyYzUzOTdiYzE1NTI0NGUyMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0
X2NvbnN0cnVjdG9yX3Rlc3QuaApAQCAtMCwwICsxLDQwOCBAQAorLy8gQ29weXJpZ2h0IDIwMTgg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9V
Tk9SREVSRURfU0VUX0NPTlNUUlVDVE9SX1RFU1RfSF8KKyNkZWZpbmUgQUJTTF9DT05UQUlORVJf
SU5URVJOQUxfVU5PUkRFUkVEX1NFVF9DT05TVFJVQ1RPUl9URVNUX0hfCisKKyNpbmNsdWRlIDxh
bGdvcml0aG0+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVy
bmFsL2hhc2hfZ2VuZXJhdG9yX3Rlc3RpbmcuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9p
bnRlcm5hbC9oYXNoX3BvbGljeV90ZXN0aW5nLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xhc3MgVW5vcmRNYXA+Citj
bGFzcyBDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitUWVBF
RF9URVNUX0NBU0VfUChDb25zdHJ1Y3RvclRlc3QpOworCitUWVBFRF9URVNUX1AoQ29uc3RydWN0
b3JUZXN0LCBOb0FyZ3MpIHsKKyAgVHlwZVBhcmFtIG07CisgIEVYUEVDVF9UUlVFKG0uZW1wdHko
KSk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNB
cmUoKSk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50KSB7
CisgIFR5cGVQYXJhbSBtKDEyMyk7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVD
VF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVY
UEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworfQorCitUWVBFRF9URVNUX1AoQ29uc3Ry
dWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2gpIHsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQ
YXJhbTo6aGFzaGVyOworICBIIGhhc2hlcjsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIpOwor
ICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIGhhc2hlcik7CisgIEVYUEVDVF9UUlVFKG0u
ZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxl
bWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworfQorCitU
WVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBCdWNrZXRDb3VudEhhc2hFcXVhbCkgeworICB1
c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFt
ZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIFR5cGVQ
YXJhbSBtKDEyMywgaGFzaGVyLCBlcXVhbCk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24o
KSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIGVxdWFsKTsKKyAgRVhQRUNUX1RS
VUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVy
ZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9
CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50SGFzaEVxdWFsQWxs
b2MpIHsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBF
ID0gdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBU
eXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBlcXVhbDsKKyAgQSBh
bGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIEVY
UEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2Vx
KCksIGVxdWFsKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVY
UEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6
VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAx
MjMpOworCisgIGNvbnN0IGF1dG8mIGNtID0gbTsKKyAgRVhQRUNUX0VRKGNtLmhhc2hfZnVuY3Rp
b24oKSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKGNtLmtleV9lcSgpLCBlcXVhbCk7CisgIEVYUEVD
VF9FUShjbS5nZXRfYWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUoY20uZW1wdHko
KSk7CisgIEVYUEVDVF9USEFUKGtleXMoY20pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRz
QXJlKCkpOworICBFWFBFQ1RfR0UoY20uYnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisKK1RZUEVE
X1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldENvdW50QWxsb2MpIHsKKyNpZiBkZWZpbmVk
KFVOT1JERVJFRF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNykKKyAg
dXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEEgYWxsb2Mo
MCk7CisgIFR5cGVQYXJhbSBtKDEyMywgYWxsb2MpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2Nh
dG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RSVUUobS5lbXB0eSgpKTsKKyAgRVhQRUNUX1RIQVQo
a2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZSgpKTsKKyAgRVhQRUNUX0dF
KG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENvbnN0
cnVjdG9yVGVzdCwgQnVja2V0Q291bnRIYXNoQWxsb2MpIHsKKyNpZiBkZWZpbmVkKFVOT1JERVJF
RF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNykKKyAgdXNpbmcgSCA9
IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBh
cmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQ
YXJhbSBtKDEyMywgaGFzaGVyLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24o
KSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVY
UEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6
VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAx
MjMpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEJ1Y2tldEFs
bG9jKSB7CisjaWYgQUJTTF9VTk9SREVSRURfU1VQUE9SVFNfQUxMT0NfQ1RPUlMKKyAgdXNpbmcg
QSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEEgYWxsb2MoMCk7Cisg
IFR5cGVQYXJhbSBtKGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxv
Yyk7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6
dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmUoKSk7CisjZW5kaWYKK30KKworVFlQRURfVEVT
VF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJdGVyYXRvckJ1Y2tldEhhc2hFcXVhbEFsbG9jKSB7
CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47Cisg
IHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVu
YW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFt
OjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7
CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gMTA7
ICsraSkKKyAgICB2YWx1ZXMucHVzaF9iYWNrKGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigp
KCkpOworICBUeXBlUGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpLCAxMjMsIGhh
c2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBoYXNo
ZXIpOworICBFWFBFQ1RfRVEobS5rZXlfZXEoKSwgZXF1YWwpOworICBFWFBFQ1RfRVEobS5nZXRf
YWxsb2NhdG9yKCksIGFsbG9jKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpV
bm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBFWFBFQ1RfR0UobS5idWNrZXRf
Y291bnQoKSwgMTIzKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgSW5wdXRJ
dGVyYXRvckJ1Y2tldEFsbG9jKSB7CisjaWYgZGVmaW5lZChVTk9SREVSRURfU0VUX0NYWDE0KSB8
fCBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTcpCisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFs
OjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFy
YW06OmFsbG9jYXRvcl90eXBlOworICBBIGFsbG9jKDApOworICBzdGQ6OnZlY3RvcjxUPiB2YWx1
ZXM7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IDEwOyArK2kpCisgICAgdmFsdWVzLnB1c2hf
YmFjayhoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpKTsKKyAgVHlwZVBhcmFtIG0odmFs
dWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSwgMTIzLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmdl
dF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6
OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tl
dF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRl
c3QsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoQWxsb2MpIHsKKyNpZiBkZWZpbmVkKFVOT1JERVJF
RF9TRVRfQ1hYMTQpIHx8IGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNykKKyAgdXNpbmcgVCA9
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9IHR5
cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVyOworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFt
OjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7CisgIEEgYWxsb2MoMCk7CisgIHN0ZDo6dmVj
dG9yPFQ+IHZhbHVlczsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gMTA7ICsraSkKKyAgICB2
YWx1ZXMucHVzaF9iYWNrKGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkpOworICBUeXBl
UGFyYW0gbSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpLCAxMjMsIGhhc2hlciwgYWxsb2Mp
OworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIGhhc2hlcik7CisgIEVYUEVDVF9FUSht
LmdldF9hbGxvY2F0b3IoKSwgYWxsb2MpOworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rp
bmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7CisgIEVYUEVDVF9HRShtLmJ1
Y2tldF9jb3VudCgpLCAxMjMpOworI2VuZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3Rv
clRlc3QsIENvcHlDb25zdHJ1Y3RvcikgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpo
YXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNp
bmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOwor
ICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBUeXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgZXF1
YWwsIGFsbG9jKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gMTA7ICsraSkgbS5pbnNlcnQo
aGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkoKSk7CisgIFR5cGVQYXJhbSBuKG0pOworICBF
WFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIG4uaGFzaF9mdW5jdGlvbigpKTsKKyAgRVhQRUNU
X0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkpOworICBFWFBFQ1RfRVEobS5nZXRfYWxsb2NhdG9y
KCksIG4uZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKG0sIG4pOworfQorCitUWVBFRF9U
RVNUX1AoQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3JBbGxvYykgeworI2lmIEFCU0xf
VU5PUkRFUkVEX1NVUFBPUlRTX0FMTE9DX0NUT1JTCisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFs
OjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFy
YW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOwor
ICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNo
ZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKDEyMywgaGFzaGVy
LCBlcXVhbCwgYWxsb2MpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSAxMDsgKytpKSBtLmlu
c2VydChoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4oKSgpKTsKKyAgVHlwZVBhcmFtIG4obSwg
QSgxMSkpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIG4uaGFzaF9mdW5jdGlvbigp
KTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkpOworICBFWFBFQ1RfTkUobS5n
ZXRfYWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKG0sIG4pOwor
I2VuZGlmCit9CisKKy8vIFRPRE8oYWxraXMpOiBUZXN0IG5vbi1wcm9wYWdhdGluZyBhbGxvY2F0
b3JzIG9uIGNvcHkgY29uc3RydWN0b3JzLgorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0
LCBNb3ZlQ29uc3RydWN0b3IpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRl
ZFR5cGU8VHlwZVBhcmFtPjsKKyAgdXNpbmcgSCA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6aGFzaGVy
OworICB1c2luZyBFID0gdHlwZW5hbWUgVHlwZVBhcmFtOjprZXlfZXF1YWw7CisgIHVzaW5nIEEg
PSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBIIGhhc2hlcjsKKyAgRSBl
cXVhbDsKKyAgQSBhbGxvYygwKTsKKyAgVHlwZVBhcmFtIG0oMTIzLCBoYXNoZXIsIGVxdWFsLCBh
bGxvYyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IDEwOyArK2kpIG0uaW5zZXJ0KGhhc2hf
aW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKCkpOworICBUeXBlUGFyYW0gdChtKTsKKyAgVHlwZVBh
cmFtIG4oc3RkOjptb3ZlKHQpKTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBuLmhh
c2hfZnVuY3Rpb24oKSk7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBuLmtleV9lcSgpKTsKKyAg
RVhQRUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBuLmdldF9hbGxvY2F0b3IoKSk7CisgIEVYUEVD
VF9FUShtLCBuKTsKK30KKworVFlQRURfVEVTVF9QKENvbnN0cnVjdG9yVGVzdCwgTW92ZUNvbnN0
cnVjdG9yQWxsb2MpIHsKKyNpZiBBQlNMX1VOT1JERVJFRF9TVVBQT1JUU19BTExPQ19DVE9SUwor
ICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1
c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFt
ZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAgdXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6
YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVyOworICBFIGVxdWFsOworICBBIGFsbG9jKDApOwor
ICBUeXBlUGFyYW0gbSgxMjMsIGhhc2hlciwgZXF1YWwsIGFsbG9jKTsKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgIT0gMTA7ICsraSkgbS5pbnNlcnQoaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+
KCkoKSk7CisgIFR5cGVQYXJhbSB0KG0pOworICBUeXBlUGFyYW0gbihzdGQ6Om1vdmUodCksIEEo
MSkpOworICBFWFBFQ1RfRVEobS5oYXNoX2Z1bmN0aW9uKCksIG4uaGFzaF9mdW5jdGlvbigpKTsK
KyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIG4ua2V5X2VxKCkpOworICBFWFBFQ1RfTkUobS5nZXRf
YWxsb2NhdG9yKCksIG4uZ2V0X2FsbG9jYXRvcigpKTsKKyAgRVhQRUNUX0VRKG0sIG4pOworI2Vu
ZGlmCit9CisKKy8vIFRPRE8oYWxraXMpOiBUZXN0IG5vbi1wcm9wYWdhdGluZyBhbGxvY2F0b3Jz
IG9uIG1vdmUgY29uc3RydWN0b3JzLgorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBJ
bml0aWFsaXplckxpc3RCdWNrZXRIYXNoRXF1YWxBbGxvYykgeworICB1c2luZyBUID0gaGFzaF9p
bnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBoYXNoX2ludGVybmFsOjpHZW5l
cmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gdmFsdWVzID0ge2dlbigp
LCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBl
UGFyYW06Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFs
OworICB1c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBo
YXNoZXI7CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKHZhbHVlcywg
MTIzLCBoYXNoZXIsIGVxdWFsLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24o
KSwgaGFzaGVyKTsKKyAgRVhQRUNUX0VRKG0ua2V5X2VxKCksIGVxdWFsKTsKKyAgRVhQRUNUX0VR
KG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVz
dGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0dFKG0u
YnVja2V0X2NvdW50KCksIDEyMyk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3Qs
IEluaXRpYWxpemVyTGlzdEJ1Y2tldEFsbG9jKSB7CisjaWYgZGVmaW5lZChVTk9SREVSRURfU0VU
X0NYWDE0KSB8fCBkZWZpbmVkKFVOT1JERVJFRF9TRVRfQ1hYMTcpCisgIHVzaW5nIFQgPSBoYXNo
X2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEEgPSB0eXBlbmFt
ZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOworICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8
VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gdmFsdWVzID0ge2dlbigpLCBnZW4o
KSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIEEgYWxsb2MoMCk7CisgIFR5cGVQYXJhbSBtKHZh
bHVlcywgMTIzLCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmdldF9hbGxvY2F0b3IoKSwgYWxsb2Mp
OworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJl
QXJyYXkodmFsdWVzKSk7CisgIEVYUEVDVF9HRShtLmJ1Y2tldF9jb3VudCgpLCAxMjMpOworI2Vu
ZGlmCit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEluaXRpYWxpemVyTGlzdEJ1
Y2tldEhhc2hBbGxvYykgeworI2lmIGRlZmluZWQoVU5PUkRFUkVEX1NFVF9DWFgxNCkgfHwgZGVm
aW5lZChVTk9SREVSRURfU0VUX0NYWDE3KQorICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFtOjpo
YXNoZXI7CisgIHVzaW5nIEEgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmFsbG9jYXRvcl90eXBlOwor
ICBIIGhhc2hlcjsKKyAgQSBhbGxvYygwKTsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+
IGdlbjsKKyAgc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcyA9IHtnZW4oKSwgZ2VuKCks
IGdlbigpLCBnZW4oKSwgZ2VuKCl9OworICBUeXBlUGFyYW0gbSh2YWx1ZXMsIDEyMywgaGFzaGVy
LCBhbGxvYyk7CisgIEVYUEVDVF9FUShtLmhhc2hfZnVuY3Rpb24oKSwgaGFzaGVyKTsKKyAgRVhQ
RUNUX0VRKG0uZ2V0X2FsbG9jYXRvcigpLCBhbGxvYyk7CisgIEVYUEVDVF9USEFUKGtleXMobSks
IDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKKyAgRVhQRUNU
X0dFKG0uYnVja2V0X2NvdW50KCksIDEyMyk7CisjZW5kaWYKK30KKworVFlQRURfVEVTVF9QKENv
bnN0cnVjdG9yVGVzdCwgQXNzaWdubWVudCkgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6
R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICB1c2luZyBIID0gdHlwZW5hbWUgVHlwZVBhcmFt
OjpoYXNoZXI7CisgIHVzaW5nIEUgPSB0eXBlbmFtZSBUeXBlUGFyYW06OmtleV9lcXVhbDsKKyAg
dXNpbmcgQSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6YWxsb2NhdG9yX3R5cGU7CisgIEggaGFzaGVy
OworICBFIGVxdWFsOworICBBIGFsbG9jKDApOworICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8
VD4gZ2VuOworICBUeXBlUGFyYW0gbSh7Z2VuKCksIGdlbigpLCBnZW4oKX0sIDEyMywgaGFzaGVy
LCBlcXVhbCwgYWxsb2MpOworICBUeXBlUGFyYW0gbjsKKyAgbiA9IG07CisgIEVYUEVDVF9FUSht
Lmhhc2hfZnVuY3Rpb24oKSwgbi5oYXNoX2Z1bmN0aW9uKCkpOworICBFWFBFQ1RfRVEobS5rZXlf
ZXEoKSwgbi5rZXlfZXEoKSk7CisgIEVYUEVDVF9FUShtLCBuKTsKK30KKworLy8gVE9ETyhhbGtp
cyk6IFRlc3QgW25vbi1dcHJvcGFnYXRpbmcgYWxsb2NhdG9ycyBvbiBtb3ZlL2NvcHkgYXNzaWdu
bWVudHMKKy8vIChpdCBkZXBlbmRzIG9uIHRyYWl0cykuCisKK1RZUEVEX1RFU1RfUChDb25zdHJ1
Y3RvclRlc3QsIE1vdmVBc3NpZ25tZW50KSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpH
ZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHVzaW5nIEggPSB0eXBlbmFtZSBUeXBlUGFyYW06
Omhhc2hlcjsKKyAgdXNpbmcgRSA9IHR5cGVuYW1lIFR5cGVQYXJhbTo6a2V5X2VxdWFsOworICB1
c2luZyBBID0gdHlwZW5hbWUgVHlwZVBhcmFtOjphbGxvY2F0b3JfdHlwZTsKKyAgSCBoYXNoZXI7
CisgIEUgZXF1YWw7CisgIEEgYWxsb2MoMCk7CisgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxU
PiBnZW47CisgIFR5cGVQYXJhbSBtKHtnZW4oKSwgZ2VuKCksIGdlbigpfSwgMTIzLCBoYXNoZXIs
IGVxdWFsLCBhbGxvYyk7CisgIFR5cGVQYXJhbSB0KG0pOworICBUeXBlUGFyYW0gbjsKKyAgbiA9
IHN0ZDo6bW92ZSh0KTsKKyAgRVhQRUNUX0VRKG0uaGFzaF9mdW5jdGlvbigpLCBuLmhhc2hfZnVu
Y3Rpb24oKSk7CisgIEVYUEVDVF9FUShtLmtleV9lcSgpLCBuLmtleV9lcSgpKTsKKyAgRVhQRUNU
X0VRKG0sIG4pOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0b3JUZXN0LCBBc3NpZ25tZW50
RnJvbUluaXRpYWxpemVyTGlzdCkgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJh
dGVkVHlwZTxUeXBlUGFyYW0+OworICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOwor
ICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gdmFsdWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCks
IGdlbigpLCBnZW4oKX07CisgIFR5cGVQYXJhbSBtOworICBtID0gdmFsdWVzOworICBFWFBFQ1Rf
VEhBVChrZXlzKG0pLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVz
KSk7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnRPdmVyd3Jp
dGVzRXhpc3RpbmcpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8
VHlwZVBhcmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+IGdlbjsKKyAgVHlwZVBh
cmFtIG0oe2dlbigpLCBnZW4oKSwgZ2VuKCl9KTsKKyAgVHlwZVBhcmFtIG4oe2dlbigpfSk7Cisg
IG4gPSBtOworICBFWFBFQ1RfRVEobSwgbik7Cit9CisKK1RZUEVEX1RFU1RfUChDb25zdHJ1Y3Rv
clRlc3QsIE1vdmVBc3NpZ25tZW50T3ZlcndyaXRlc0V4aXN0aW5nKSB7CisgIHVzaW5nIFQgPSBo
YXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIGhhc2hfaW50ZXJuYWw6
OkdlbmVyYXRvcjxUPiBnZW47CisgIFR5cGVQYXJhbSBtKHtnZW4oKSwgZ2VuKCksIGdlbigpfSk7
CisgIFR5cGVQYXJhbSB0KG0pOworICBUeXBlUGFyYW0gbih7Z2VuKCl9KTsKKyAgbiA9IHN0ZDo6
bW92ZSh0KTsKKyAgRVhQRUNUX0VRKG0sIG4pOworfQorCitUWVBFRF9URVNUX1AoQ29uc3RydWN0
b3JUZXN0LCBBc3NpZ25tZW50RnJvbUluaXRpYWxpemVyTGlzdE92ZXJ3cml0ZXNFeGlzdGluZykg
eworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+Owor
ICBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4gZ2VuOworICBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VD4gdmFsdWVzID0ge2dlbigpLCBnZW4oKSwgZ2VuKCksIGdlbigpLCBnZW4oKX07CisgIFR5
cGVQYXJhbSBtOworICBtID0gdmFsdWVzOworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6OnRlc3Rp
bmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodmFsdWVzKSk7Cit9CisKK1RZUEVEX1RFU1Rf
UChDb25zdHJ1Y3RvclRlc3QsIEFzc2lnbm1lbnRPblNlbGYpIHsKKyAgdXNpbmcgVCA9IGhhc2hf
aW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgaGFzaF9pbnRlcm5hbDo6R2Vu
ZXJhdG9yPFQ+IGdlbjsKKyAgc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHZhbHVlcyA9IHtnZW4o
KSwgZ2VuKCksIGdlbigpLCBnZW4oKSwgZ2VuKCl9OworICBUeXBlUGFyYW0gbSh2YWx1ZXMpOwor
ICBtID0gKiZtOyAgLy8gQXZvaWQgLVdzZWxmLWFzc2lnbi4KKyAgRVhQRUNUX1RIQVQoa2V5cyht
KSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworfQorCitS
RUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCgKKyAgICBDb25zdHJ1Y3RvclRlc3QsIE5vQXJncywg
QnVja2V0Q291bnQsIEJ1Y2tldENvdW50SGFzaCwgQnVja2V0Q291bnRIYXNoRXF1YWwsCisgICAg
QnVja2V0Q291bnRIYXNoRXF1YWxBbGxvYywgQnVja2V0Q291bnRBbGxvYywgQnVja2V0Q291bnRI
YXNoQWxsb2MsCisgICAgQnVja2V0QWxsb2MsIElucHV0SXRlcmF0b3JCdWNrZXRIYXNoRXF1YWxB
bGxvYywgSW5wdXRJdGVyYXRvckJ1Y2tldEFsbG9jLAorICAgIElucHV0SXRlcmF0b3JCdWNrZXRI
YXNoQWxsb2MsIENvcHlDb25zdHJ1Y3RvciwgQ29weUNvbnN0cnVjdG9yQWxsb2MsCisgICAgTW92
ZUNvbnN0cnVjdG9yLCBNb3ZlQ29uc3RydWN0b3JBbGxvYywgSW5pdGlhbGl6ZXJMaXN0QnVja2V0
SGFzaEVxdWFsQWxsb2MsCisgICAgSW5pdGlhbGl6ZXJMaXN0QnVja2V0QWxsb2MsIEluaXRpYWxp
emVyTGlzdEJ1Y2tldEhhc2hBbGxvYywgQXNzaWdubWVudCwKKyAgICBNb3ZlQXNzaWdubWVudCwg
QXNzaWdubWVudEZyb21Jbml0aWFsaXplckxpc3QsCisgICAgQXNzaWdubWVudE92ZXJ3cml0ZXNF
eGlzdGluZywgTW92ZUFzc2lnbm1lbnRPdmVyd3JpdGVzRXhpc3RpbmcsCisgICAgQXNzaWdubWVu
dEZyb21Jbml0aWFsaXplckxpc3RPdmVyd3JpdGVzRXhpc3RpbmcsIEFzc2lnbm1lbnRPblNlbGYp
OworCit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2Ug
YWJzbAorI2VuZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0NP
TlNUUlVDVE9SX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91
bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5v
cmRlcmVkX3NldF9sb29rdXBfdGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjYTljNmE1ZGY3YjcyNWMxNzU5
OTNmNDcwNjlkYTRlOTIxNzI5ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
aW50ZXJuYWwvdW5vcmRlcmVkX3NldF9sb29rdXBfdGVzdC5oCkBAIC0wLDAgKzEsODggQEAKKy8v
IENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpZm5kZWYgQUJTTF9DT05U
QUlORVJfSU5URVJOQUxfVU5PUkRFUkVEX1NFVF9MT09LVVBfVEVTVF9IXworI2RlZmluZSBBQlNM
X0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0xPT0tVUF9URVNUX0hfCisKKyNpbmNs
dWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAi
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9nZW5lcmF0b3JfdGVzdGluZy5oIgorI2luY2x1
ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL2hhc2hfcG9saWN5X3Rlc3RpbmcuaCIKKworbmFt
ZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRl
IDxjbGFzcyBVbm9yZFNldD4KK2NsYXNzIExvb2t1cFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHt9OworCitUWVBFRF9URVNUX0NBU0VfUChMb29rdXBUZXN0KTsKKworVFlQRURfVEVTVF9Q
KExvb2t1cFRlc3QsIENvdW50KSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0
ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5l
cmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAg
IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG07CisgIGZvciAo
Y29uc3QgYXV0byYgdiA6IHZhbHVlcykKKyAgICBFWFBFQ1RfRVEoMCwgbS5jb3VudCh2KSkgPDwg
Ojp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHYpOworICBtLmluc2VydCh2YWx1ZXMuYmVnaW4oKSwg
dmFsdWVzLmVuZCgpKTsKKyAgZm9yIChjb25zdCBhdXRvJiB2IDogdmFsdWVzKQorICAgIEVYUEVD
VF9FUSgxLCBtLmNvdW50KHYpKSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodik7Cit9CisK
K1RZUEVEX1RFU1RfUChMb29rdXBUZXN0LCBGaW5kKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVy
bmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsK
KyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAg
ICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFt
IG07CisgIGZvciAoY29uc3QgYXV0byYgdiA6IHZhbHVlcykKKyAgICBFWFBFQ1RfVFJVRShtLmVu
ZCgpID09IG0uZmluZCh2KSkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHYpOworICBtLmlu
c2VydCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgZm9yIChjb25zdCBhdXRvJiB2
IDogdmFsdWVzKSB7CisgICAgdHlwZW5hbWUgVHlwZVBhcmFtOjppdGVyYXRvciBpdCA9IG0uZmlu
ZCh2KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxjb25zdCB0eXBlbmFtZSBUeXBl
UGFyYW06OnZhbHVlX3R5cGUmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2x0
eXBlKCppdCk+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICIiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZTxjb25zdCB0eXBlbmFtZSBUeXBlUGFyYW06OnZhbHVlX3R5cGUqLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2x0eXBlKGl0Lm9wZXJhdG9yLT4oKSk+
Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICIiKTsKKyAgICBFWFBFQ1RfVFJVRShtLmVuZCgp
ICE9IGl0KSA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodik7CisgICAgRVhQRUNUX0VRKHYs
ICppdCkgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHYpOworICB9Cit9CisKK1RZUEVEX1RF
U1RfUChMb29rdXBUZXN0LCBFcXVhbFJhbmdlKSB7CisgIHVzaW5nIFQgPSBoYXNoX2ludGVybmFs
OjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAg
c3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcih2YWx1ZXMpLCAxMCwKKyAgICAgICAg
ICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRvcjxUPigpKTsKKyAgVHlwZVBhcmFtIG07
CisgIGZvciAoY29uc3QgYXV0byYgdiA6IHZhbHVlcykgeworICAgIGF1dG8gciA9IG0uZXF1YWxf
cmFuZ2Uodik7CisgICAgQVNTRVJUX0VRKDAsIHN0ZDo6ZGlzdGFuY2Uoci5maXJzdCwgci5zZWNv
bmQpKTsKKyAgfQorICBtLmluc2VydCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAg
Zm9yIChjb25zdCBhdXRvJiB2IDogdmFsdWVzKSB7CisgICAgYXV0byByID0gbS5lcXVhbF9yYW5n
ZSh2KTsKKyAgICBBU1NFUlRfRVEoMSwgc3RkOjpkaXN0YW5jZShyLmZpcnN0LCByLnNlY29uZCkp
OworICAgIEVYUEVDVF9FUSh2LCAqci5maXJzdCk7CisgIH0KK30KKworUkVHSVNURVJfVFlQRURf
VEVTVF9DQVNFX1AoTG9va3VwVGVzdCwgQ291bnQsIEZpbmQsIEVxdWFsUmFuZ2UpOworCit9ICAv
LyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2Vu
ZGlmICAvLyBBQlNMX0NPTlRBSU5FUl9JTlRFUk5BTF9VTk9SREVSRURfU0VUX0xPT0tVUF9URVNU
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9t
b2RpZmllcnNfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRf
bW9kaWZpZXJzX3Rlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmVhY2YzMzE2OTczZGQ3YmNkY2I5MzgyYTEz
NmMxOGQwYThjNzZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL2ludGVybmFs
L3Vub3JkZXJlZF9zZXRfbW9kaWZpZXJzX3Rlc3QuaApAQCAtMCwwICsxLDE4NyBAQAorLy8gQ29w
eXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0NPTlRBSU5F
Ul9JTlRFUk5BTF9VTk9SREVSRURfU0VUX01PRElGSUVSU19URVNUX0hfCisjZGVmaW5lIEFCU0xf
Q09OVEFJTkVSX0lOVEVSTkFMX1VOT1JERVJFRF9TRVRfTU9ESUZJRVJTX1RFU1RfSF8KKworI2lu
Y2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRl
ICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2dlbmVyYXRvcl90ZXN0aW5nLmgiCisjaW5j
bHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvaGFzaF9wb2xpY3lfdGVzdGluZy5oIgorCitu
YW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKKwordGVtcGxh
dGUgPGNsYXNzIFVub3JkU2V0PgorY2xhc3MgTW9kaWZpZXJzVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3Qge307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKE1vZGlmaWVyc1Rlc3QpOworCitUWVBF
RF9URVNUX1AoTW9kaWZpZXJzVGVzdCwgQ2xlYXIpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJu
YWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOwor
ICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAg
ICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0g
bSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgQVNTRVJUX1RIQVQoa2V5cyhtKSwg
Ojp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBtLmNsZWFy
KCk7CisgIEVYUEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNB
cmUoKSk7CisgIEVYUEVDVF9UUlVFKG0uZW1wdHkoKSk7Cit9CisKK1RZUEVEX1RFU1RfUChNb2Rp
ZmllcnNUZXN0LCBJbnNlcnQpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRl
ZFR5cGU8VHlwZVBhcmFtPjsKKyAgVCB2YWwgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4o
KSgpOworICBUeXBlUGFyYW0gbTsKKyAgYXV0byBwID0gbS5pbnNlcnQodmFsKTsKKyAgRVhQRUNU
X1RSVUUocC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqcC5maXJzdCk7CisgIHAgPSBtLmlu
c2VydCh2YWwpOworICBFWFBFQ1RfRkFMU0UocC5zZWNvbmQpOworfQorCitUWVBFRF9URVNUX1Ao
TW9kaWZpZXJzVGVzdCwgSW5zZXJ0SGludCkgeworICB1c2luZyBUID0gaGFzaF9pbnRlcm5hbDo6
R2VuZXJhdGVkVHlwZTxUeXBlUGFyYW0+OworICBUIHZhbCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVy
YXRvcjxUPigpKCk7CisgIFR5cGVQYXJhbSBtOworICBhdXRvIGl0ID0gbS5pbnNlcnQobS5lbmQo
KSwgdmFsKTsKKyAgRVhQRUNUX1RSVUUoaXQgIT0gbS5lbmQoKSk7CisgIEVYUEVDVF9FUSh2YWws
ICppdCk7CisgIGl0ID0gbS5pbnNlcnQoaXQsIHZhbCk7CisgIEVYUEVDVF9UUlVFKGl0ICE9IG0u
ZW5kKCkpOworICBFWFBFQ1RfRVEodmFsLCAqaXQpOworfQorCitUWVBFRF9URVNUX1AoTW9kaWZp
ZXJzVGVzdCwgSW5zZXJ0UmFuZ2UpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVy
YXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6Omdl
bmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAgICAg
ICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbTsKKyAgbS5p
bnNlcnQodmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisgIEFTU0VSVF9USEFUKGtleXMo
bSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2YWx1ZXMpKTsKK30KKwor
VFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEVtcGxhY2UpIHsKKyAgdXNpbmcgVCA9IGhhc2hf
aW50ZXJuYWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgVCB2YWwgPSBoYXNoX2ludGVy
bmFsOjpHZW5lcmF0b3I8VD4oKSgpOworICBUeXBlUGFyYW0gbTsKKyAgLy8gVE9ETyhhbGtpcyk6
IFdlIG5lZWQgYSB3YXkgdG8gcnVuIGVtcGxhY2UgaW4gYSBtb3JlIG1lYW5pbmdmdWwgd2F5LiBQ
ZXJoYXBzCisgIC8vIHdpdGggdGVzdCB0cmFpdHMvcG9saWN5LgorICBhdXRvIHAgPSBtLmVtcGxh
Y2UodmFsKTsKKyAgRVhQRUNUX1RSVUUocC5zZWNvbmQpOworICBFWFBFQ1RfRVEodmFsLCAqcC5m
aXJzdCk7CisgIHAgPSBtLmVtcGxhY2UodmFsKTsKKyAgRVhQRUNUX0ZBTFNFKHAuc2Vjb25kKTsK
KyAgRVhQRUNUX0VRKHZhbCwgKnAuZmlyc3QpOworfQorCitUWVBFRF9URVNUX1AoTW9kaWZpZXJz
VGVzdCwgRW1wbGFjZUhpbnQpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRl
ZFR5cGU8VHlwZVBhcmFtPjsKKyAgVCB2YWwgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0b3I8VD4o
KSgpOworICBUeXBlUGFyYW0gbTsKKyAgLy8gVE9ETyhhbGtpcyk6IFdlIG5lZWQgYSB3YXkgdG8g
cnVuIGVtcGxhY2UgaW4gYSBtb3JlIG1lYW5pbmdmdWwgd2F5LiBQZXJoYXBzCisgIC8vIHdpdGgg
dGVzdCB0cmFpdHMvcG9saWN5LgorICBhdXRvIGl0ID0gbS5lbXBsYWNlX2hpbnQobS5lbmQoKSwg
dmFsKTsKKyAgRVhQRUNUX0VRKHZhbCwgKml0KTsKKyAgaXQgPSBtLmVtcGxhY2VfaGludChpdCwg
dmFsKTsKKyAgRVhQRUNUX0VRKHZhbCwgKml0KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFY+Cit1
c2luZyBJZk5vdFZvaWQgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc192b2lkPFY+
Ojp2YWx1ZSwgVj46OnR5cGU7CisKKy8vIEluIG9wZW5tYXAgd2UgY2hvc2Ugbm90IHRvIHJldHVy
biB0aGUgaXRlcmF0b3IgZnJvbSBlcmFzZSBiZWNhdXNlIHRoYXQncworLy8gbW9yZSBleHBlbnNp
dmUuIEFzIHN1Y2ggd2UgYWRhcHQgZXJhc2UgdG8gcmV0dXJuIGFuIGl0ZXJhdG9yIGhlcmUuCitz
dHJ1Y3QgRXJhc2VGaXJzdCB7CisgIHRlbXBsYXRlIDxjbGFzcyBNYXA+CisgIGF1dG8gb3BlcmF0
b3IoKShNYXAqIG0sIGludCkgY29uc3QKKyAgICAgIC0+IElmTm90Vm9pZDxkZWNsdHlwZShtLT5l
cmFzZShtLT5iZWdpbigpKSk+IHsKKyAgICByZXR1cm4gbS0+ZXJhc2UobS0+YmVnaW4oKSk7Cisg
IH0KKyAgdGVtcGxhdGUgPGNsYXNzIE1hcD4KKyAgdHlwZW5hbWUgTWFwOjppdGVyYXRvciBvcGVy
YXRvcigpKE1hcCogbSwgLi4uKSBjb25zdCB7CisgICAgYXV0byBpdCA9IG0tPmJlZ2luKCk7Cisg
ICAgbS0+ZXJhc2UoaXQrKyk7CisgICAgcmV0dXJuIGl0OworICB9Cit9OworCitUWVBFRF9URVNU
X1AoTW9kaWZpZXJzVGVzdCwgRXJhc2UpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6Okdl
bmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOworICBzdGQ6
OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAgICAgICAg
ICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0gbSh2YWx1
ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgQVNTRVJUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0
aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBzdGQ6OnZlY3RvcjxU
PiB2YWx1ZXMyOworICBmb3IgKGNvbnN0IGF1dG8mIHZhbCA6IHZhbHVlcykKKyAgICBpZiAodmFs
ICE9ICptLmJlZ2luKCkpIHZhbHVlczIucHVzaF9iYWNrKHZhbCk7CisgIGF1dG8gaXQgPSBFcmFz
ZUZpcnN0KCkoJm0sIDApOworICBBU1NFUlRfVFJVRShpdCAhPSBtLmVuZCgpKTsKKyAgRVhQRUNU
X0VRKDEsIHN0ZDo6Y291bnQodmFsdWVzMi5iZWdpbigpLCB2YWx1ZXMyLmVuZCgpLCAqaXQpKTsK
KyAgRVhQRUNUX1RIQVQoa2V5cyhtKSwgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFy
cmF5KHZhbHVlczIuYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczIuZW5kKCkpKTsKK30KKworVFlQRURfVEVT
VF9QKE1vZGlmaWVyc1Rlc3QsIEVyYXNlUmFuZ2UpIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJu
YWw6OkdlbmVyYXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdmFsdWVzOwor
ICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHZhbHVlcyksIDEwLAorICAgICAg
ICAgICAgICAgICAgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBlUGFyYW0g
bSh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKyAgQVNTRVJUX1RIQVQoa2V5cyhtKSwg
Ojp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHZhbHVlcykpOworICBhdXRvIGl0
ID0gbS5lcmFzZShtLmJlZ2luKCksIG0uZW5kKCkpOworICBFWFBFQ1RfVEhBVChrZXlzKG0pLCA6
OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlKCkpOworICBFWFBFQ1RfVFJVRShpdCA9PSBt
LmVuZCgpKTsKK30KKworVFlQRURfVEVTVF9QKE1vZGlmaWVyc1Rlc3QsIEVyYXNlS2V5KSB7Cisg
IHVzaW5nIFQgPSBoYXNoX2ludGVybmFsOjpHZW5lcmF0ZWRUeXBlPFR5cGVQYXJhbT47CisgIHN0
ZDo6dmVjdG9yPFQ+IHZhbHVlczsKKyAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRl
cih2YWx1ZXMpLCAxMCwKKyAgICAgICAgICAgICAgICAgIGhhc2hfaW50ZXJuYWw6OkdlbmVyYXRv
cjxUPigpKTsKKyAgVHlwZVBhcmFtIG0odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7Cisg
IEFTU0VSVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJh
eSh2YWx1ZXMpKTsKKyAgRVhQRUNUX0VRKDEsIG0uZXJhc2UodmFsdWVzWzBdKSk7CisgIEVYUEVD
VF9FUSgwLCBzdGQ6OmNvdW50KG0uYmVnaW4oKSwgbS5lbmQoKSwgdmFsdWVzWzBdKSk7CisgIEVY
UEVDVF9USEFUKGtleXMobSksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh2
YWx1ZXMuYmVnaW4oKSArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuZW5kKCkpKTsKK30KKworVFlQRURfVEVTVF9Q
KE1vZGlmaWVyc1Rlc3QsIFN3YXApIHsKKyAgdXNpbmcgVCA9IGhhc2hfaW50ZXJuYWw6OkdlbmVy
YXRlZFR5cGU8VHlwZVBhcmFtPjsKKyAgc3RkOjp2ZWN0b3I8VD4gdjE7CisgIHN0ZDo6dmVjdG9y
PFQ+IHYyOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNrX2luc2VydGVyKHYxKSwgNSwgaGFz
aF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiYWNr
X2luc2VydGVyKHYyKSwgNSwgaGFzaF9pbnRlcm5hbDo6R2VuZXJhdG9yPFQ+KCkpOworICBUeXBl
UGFyYW0gbTEodjEuYmVnaW4oKSwgdjEuZW5kKCkpOworICBUeXBlUGFyYW0gbTIodjIuYmVnaW4o
KSwgdjIuZW5kKCkpOworICBFWFBFQ1RfVEhBVChrZXlzKG0xKSwgOjp0ZXN0aW5nOjpVbm9yZGVy
ZWRFbGVtZW50c0FyZUFycmF5KHYxKSk7CisgIEVYUEVDVF9USEFUKGtleXMobTIpLCA6OnRlc3Rp
bmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkodjIpKTsKKyAgbTEuc3dhcChtMik7CisgIEVY
UEVDVF9USEFUKGtleXMobTEpLCA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
djIpKTsKKyAgRVhQRUNUX1RIQVQoa2V5cyhtMiksIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheSh2MSkpOworfQorCisvLyBUT0RPKGFsa2lzKTogV3JpdGUgdGVzdHMgZm9yIGV4
dHJhY3QuCisvLyBUT0RPKGFsa2lzKTogV3JpdGUgdGVzdHMgZm9yIG1lcmdlLgorCitSRUdJU1RF
Ul9UWVBFRF9URVNUX0NBU0VfUChNb2RpZmllcnNUZXN0LCBDbGVhciwgSW5zZXJ0LCBJbnNlcnRI
aW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zZXJ0UmFuZ2UsIEVtcGxhY2UsIEVt
cGxhY2VIaW50LCBFcmFzZSwgRXJhc2VSYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVyYXNlS2V5LCBTd2FwKTsKKworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAor
fSAgLy8gbmFtZXNwYWNlIGFic2wKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfSU5URVJOQUxf
VU5PUkRFUkVEX1NFVF9NT0RJRklFUlNfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL2ludGVybmFsL3Vub3JkZXJlZF9zZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC91bm9yZGVyZWRfc2V0X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI4MWNlNTNkNWUyZTQwNzI4
ZmI2Y2E4ZGQ5MGMwYzk0OThhZWZhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X3Rlc3QuY2MKQEAgLTAsMCArMSwzNyBAQAorLy8gQ29w
eXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgPHVub3JkZXJlZF9z
ZXQ+CisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2Nv
bnN0cnVjdG9yX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC91bm9y
ZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJu
YWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oIgorCituYW1lc3BhY2UgYWJzbCB7Citu
YW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVzcGFjZSB7CisKK3VzaW5nIFNldFR5
cGVzID0KKyAgICA6OnRlc3Rpbmc6OlR5cGVzPHN0ZDo6dW5vcmRlcmVkX3NldDxpbnQsIFN0YXRl
ZnVsVGVzdGluZ0hhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFsbG9jPGludD4+LAorICAgICAgICAgICAgICAgICAgICAg
c3RkOjp1bm9yZGVyZWRfc2V0PHN0ZDo6c3RyaW5nLCBTdGF0ZWZ1bFRlc3RpbmdIYXNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsVGVzdGluZ0VxdWFs
LCBBbGxvYzxzdGQ6OnN0cmluZz4+PjsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
VW5vcmRlcmVkU2V0LCBDb25zdHJ1Y3RvclRlc3QsIFNldFR5cGVzKTsKK0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKFVub3JkZXJlZFNldCwgTG9va3VwVGVzdCwgU2V0VHlwZXMpOworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVW5vcmRlcmVkU2V0LCBNb2RpZmllcnNUZXN0LCBT
ZXRUeXBlcyk7CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9p
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5l
ci9ub2RlX2hhc2hfbWFwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNoX21hcC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYzNjllYzNhZDY0MzFhNDdlNjQzMTY1ODhlNDY3MTQzMTdlNjFkOWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNoX21hcC5oCkBAIC0wLDAgKzEsNTMw
IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBub2RlX2hhc2hfbWFwLmgKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gQW4gYGFic2w6Om5vZGVfaGFzaF9tYXA8SywgVj5gIGlzIGFuIHVu
b3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgb2YKKy8vIHVuaXF1ZSBrZXlzIGFuZCBhc3Nv
Y2lhdGVkIHZhbHVlcyBkZXNpZ25lZCB0byBiZSBhIG1vcmUgZWZmaWNpZW50IHJlcGxhY2VtZW50
CisvLyBmb3IgYHN0ZDo6dW5vcmRlcmVkX21hcGAuIExpa2UgYHVub3JkZXJlZF9tYXBgLCBzZWFy
Y2gsIGluc2VydGlvbiwgYW5kCisvLyBkZWxldGlvbiBvZiBtYXAgZWxlbWVudHMgY2FuIGJlIGRv
bmUgYXMgYW4gYE8oMSlgIG9wZXJhdGlvbi4gSG93ZXZlciwKKy8vIGBub2RlX2hhc2hfbWFwYCAo
YW5kIG90aGVyIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXJzIGtub3duIGFzIHRoZQor
Ly8gY29sbGVjdGlvbiBvZiBBYnNlaWwgIlN3aXNzIHRhYmxlcyIpIGNvbnRhaW4gb3RoZXIgb3B0
aW1pemF0aW9ucyB0aGF0IHJlc3VsdAorLy8gaW4gYm90aCBtZW1vcnkgYW5kIGNvbXB1dGF0aW9u
IGFkdmFudGFnZXMuCisvLworLy8gSW4gbW9zdCBjYXNlcywgeW91ciBkZWZhdWx0IGNob2ljZSBm
b3IgYSBoYXNoIG1hcCBzaG91bGQgYmUgYSBtYXAgb2YgdHlwZQorLy8gYGZsYXRfaGFzaF9tYXBg
LiBIb3dldmVyLCBpZiB5b3UgbmVlZCBwb2ludGVyIHN0YWJpbGl0eSBhbmQgY2Fubm90IHN0b3Jl
CisvLyBhIGBmbGF0X2hhc2hfbWFwYCB3aXRoIGB1bmlxdWVfcHRyYCBlbGVtZW50cywgYSBgbm9k
ZV9oYXNoX21hcGAgbWF5IGJlIGEKKy8vIHZhbGlkIGFsdGVybmF0aXZlLiBBcyB3ZWxsLCBpZiB5
b3UgYXJlIG1pZ3JhdGluZyB5b3VyIGNvZGUgZnJvbSB1c2luZworLy8gYHN0ZDo6dW5vcmRlcmVk
X21hcGAsIGEgYG5vZGVfaGFzaF9tYXBgIHByb3ZpZGVzIGEgbW9yZSBzdHJhaWdodGZvcndhcmQK
Ky8vIG1pZ3JhdGlvbiwgYmVjYXVzZSBpdCBndWFyYW50ZWVzIHBvaW50ZXIgc3RhYmlsaXR5LiBD
b25zaWRlciBtaWdyYXRpbmcgdG8KKy8vIGBub2RlX2hhc2hfbWFwYCBhbmQgcGVyaGFwcyBjb252
ZXJ0aW5nIHRvIGEgbW9yZSBlZmZpY2llbnQgYGZsYXRfaGFzaF9tYXBgCisvLyB1cG9uIGZ1cnRo
ZXIgcmV2aWV3LgorCisjaWZuZGVmIEFCU0xfQ09OVEFJTkVSX05PREVfSEFTSF9NQVBfSF8KKyNk
ZWZpbmUgQUJTTF9DT05UQUlORVJfTk9ERV9IQVNIX01BUF9IXworCisjaW5jbHVkZSA8dHVwbGU+
CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUg
ImFic2wvY29udGFpbmVyL2ludGVybmFsL2NvbnRhaW5lcl9tZW1vcnkuaCIKKyNpbmNsdWRlICJh
YnNsL2NvbnRhaW5lci9pbnRlcm5hbC9oYXNoX2Z1bmN0aW9uX2RlZmF1bHRzLmgiICAvLyBJV1lV
IHByYWdtYTogZXhwb3J0CisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvbm9kZV9o
YXNoX3BvbGljeS5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Jhd19oYXNo
X21hcC5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgorCituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFs
IHsKK3RlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIFZhbHVlPgorY2xhc3MgTm9kZUhhc2hNYXBQ
b2xpY3k7Cit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsCisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLyBhYnNsOjpub2RlX2hhc2hfbWFwCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIEFuIGBhYnNsOjpub2RlX2hhc2hfbWFwPEssIFY+YCBpcyBhbiB1bm9yZGVy
ZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIHdoaWNoCisvLyBoYXMgYmVlbiBvcHRpbWl6ZWQgZm9y
IGJvdGggc3BlZWQgYW5kIG1lbW9yeSBmb290cHJpbnQgaW4gbW9zdCBjb21tb24gdXNlCisvLyBj
YXNlcy4gSXRzIGludGVyZmFjZSBpcyBzaW1pbGFyIHRvIHRoYXQgb2YgYHN0ZDo6dW5vcmRlcmVk
X21hcDxLLCBWPmAgd2l0aAorLy8gdGhlIGZvbGxvd2luZyBub3RhYmxlIGRpZmZlcmVuY2VzOgor
Ly8KKy8vICogU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAsIHRocm91Z2ggYGZpbmQoKWAs
IGBvcGVyYXRvcltdKClgIGFuZAorLy8gICBgaW5zZXJ0KClgLCBwcm92aWRlZCB0aGF0IHRoZSBt
YXAgaXMgcHJvdmlkZWQgYSBjb21wYXRpYmxlIGhldGVyb2dlbmVvdXMKKy8vICAgaGFzaGluZyBm
dW5jdGlvbiBhbmQgZXF1YWxpdHkgb3BlcmF0b3IuCisvLyAqIENvbnRhaW5zIGEgYGNhcGFjaXR5
KClgIG1lbWJlciBmdW5jdGlvbiBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgZWxlbWVudAorLy8g
ICBzbG90cyAob3BlbiwgZGVsZXRlZCwgYW5kIGVtcHR5KSB3aXRoaW4gdGhlIGhhc2ggbWFwLgor
Ly8gKiBSZXR1cm5zIGB2b2lkYCBmcm9tIHRoZSBgZXJhc2UoaXRlcmF0b3IpYCBvdmVybG9hZC4K
Ky8vCisvLyBCeSBkZWZhdWx0LCBgbm9kZV9oYXNoX21hcGAgdXNlcyB0aGUgYGFic2w6Okhhc2hg
IGhhc2hpbmcgZnJhbWV3b3JrLgorLy8gQWxsIGZ1bmRhbWVudGFsIGFuZCBBYnNlaWwgdHlwZXMg
dGhhdCBzdXBwb3J0IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3JrIGhhdmUKKy8vIGEgY29tcGF0
aWJsZSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgY29tcGFyaW5nIGluc2VydGlvbnMgaW50byBgbm9k
ZV9oYXNoX21hcGAuCisvLyBJZiB5b3VyIHR5cGUgaXMgbm90IHlldCBzdXBwb3J0ZWQgYnkgdGhl
IGBhc2JsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQorLy8gYWJzbC9oYXNoL2hhc2guaCBmb3IgaW5m
b3JtYXRpb24gb24gZXh0ZW5kaW5nIEFic2VpbCBoYXNoaW5nIHRvIHVzZXItZGVmaW5lZAorLy8g
dHlwZXMuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIC8vIENyZWF0ZSBhIG5vZGUgaGFzaCBt
YXAgb2YgdGhyZWUgc3RyaW5ncyAodGhhdCBtYXAgdG8gc3RyaW5ncykKKy8vICAgYWJzbDo6bm9k
ZV9oYXNoX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IGR1Y2tzID0KKy8vICAgICB7eyJh
IiwgImh1ZXkifSwgeyJiIiwgImRld2V5In0sIHsiYyIsICJsb3VpZSJ9fTsKKy8vCisvLyAgLy8g
SW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW50byB0aGUgbm9kZSBoYXNoIG1hcAorLy8gIGR1Y2tzLmlu
c2VydCh7ImQiLCAiZG9uYWxkIn19OworLy8KKy8vICAvLyBGb3JjZSBhIHJlaGFzaCBvZiB0aGUg
bm9kZSBoYXNoIG1hcAorLy8gIGR1Y2tzLnJlaGFzaCgwKTsKKy8vCisvLyAgLy8gRmluZCB0aGUg
ZWxlbWVudCB3aXRoIHRoZSBrZXkgImIiCisvLyAgc3RkOjpzdHJpbmcgc2VhcmNoX2tleSA9ICJi
IjsKKy8vICBhdXRvIHJlc3VsdCA9IGR1Y2tzLmZpbmQoc2VhcmNoX2tleSk7CisvLyAgaWYgKHJl
c3VsdCAhPSBkdWNrcy5lbmQoKSkgeworLy8gICAgc3RkOjpjb3V0IDw8ICJSZXN1bHQ6ICIgPDwg
c2VhcmNoX2tleS0+c2Vjb25kIDw8IHN0ZDo6ZW5kbDsKKy8vICB9Cit0ZW1wbGF0ZSA8Y2xhc3Mg
S2V5LCBjbGFzcyBWYWx1ZSwKKyAgICAgICAgICBjbGFzcyBIYXNoID0gYWJzbDo6Y29udGFpbmVy
X2ludGVybmFsOjpoYXNoX2RlZmF1bHRfaGFzaDxLZXk+LAorICAgICAgICAgIGNsYXNzIEVxID0g
YWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2RlZmF1bHRfZXE8S2V5PiwKKyAgICAgICAg
ICBjbGFzcyBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPHN0ZDo6cGFpcjxjb25zdCBLZXksIFZhbHVl
Pj4+CitjbGFzcyBub2RlX2hhc2hfbWFwCisgICAgOiBwdWJsaWMgYWJzbDo6Y29udGFpbmVyX2lu
dGVybmFsOjpyYXdfaGFzaF9tYXA8CisgICAgICAgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFs
OjpOb2RlSGFzaE1hcFBvbGljeTxLZXksIFZhbHVlPiwgSGFzaCwgRXEsCisgICAgICAgICAgQWxs
b2M+IHsKKyAgdXNpbmcgQmFzZSA9IHR5cGVuYW1lIG5vZGVfaGFzaF9tYXA6OnJhd19oYXNoX21h
cDsKKworIHB1YmxpYzoKKyAgbm9kZV9oYXNoX21hcCgpIHt9CisgIHVzaW5nIEJhc2U6OkJhc2U7
CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6YmVnaW4oKQorICAvLworICAvLyBSZXR1cm5zIGFuIGl0
ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBub2RlX2hhc2hfbWFwYC4KKyAgdXNpbmcg
QmFzZTo6YmVnaW47CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6Y2JlZ2luKCkKKyAgLy8KKyAgLy8g
UmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBub2RlX2hh
c2hfbWFwYC4KKyAgdXNpbmcgQmFzZTo6Y2JlZ2luOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmNl
bmQoKQorICAvLworICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0b3IgdG8gdGhlIGVuZCBvZiB0
aGUgYG5vZGVfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpjZW5kOworCisgIC8vIG5vZGVfaGFz
aF9tYXA6OmVuZCgpCisgIC8vCisgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGVuZCBv
ZiB0aGUgYG5vZGVfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjplbmQ7CisKKyAgLy8gbm9kZV9o
YXNoX21hcDo6Y2FwYWNpdHkoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxl
bWVudCBzbG90cyAoYXNzaWduZWQsIGRlbGV0ZWQsIGFuZCBlbXB0eSkKKyAgLy8gYXZhaWxhYmxl
IHdpdGhpbiB0aGUgYG5vZGVfaGFzaF9tYXBgLgorICAvLworICAvLyBOT1RFOiB0aGlzIG1lbWJl
ciBmdW5jdGlvbiBpcyBwYXJ0aWN1bGFyIHRvIGBhYnNsOjpub2RlX2hhc2hfbWFwYCBhbmQgaXMK
KyAgLy8gbm90IHByb3ZpZGVkIGluIHRoZSBgc3RkOjp1bm9yZGVyZWRfbWFwYCBBUEkuCisgIHVz
aW5nIEJhc2U6OmNhcGFjaXR5OworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmVtcHR5KCkKKyAgLy8K
KyAgLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgYG5vZGVfaGFzaF9tYXBgIGlzIGVtcHR5
LgorICB1c2luZyBCYXNlOjplbXB0eTsKKworICAvLyBub2RlX2hhc2hfbWFwOjptYXhfc2l6ZSgp
CisgIC8vCisgIC8vIFJldHVybnMgdGhlIGxhcmdlc3QgdGhlb3JldGljYWwgcG9zc2libGUgbnVt
YmVyIG9mIGVsZW1lbnRzIHdpdGhpbiBhCisgIC8vIGBub2RlX2hhc2hfbWFwYCB1bmRlciBjdXJy
ZW50IG1lbW9yeSBjb25zdHJhaW50cy4gVGhpcyB2YWx1ZSBjYW4gYmUgdGhvdWdodAorICAvLyBv
ZiBhcyB0aGUgbGFyZ2VzdCB2YWx1ZSBvZiBgc3RkOjpkaXN0YW5jZShiZWdpbigpLCBlbmQoKSlg
IGZvciBhCisgIC8vIGBub2RlX2hhc2hfbWFwPEssIFY+YC4KKyAgdXNpbmcgQmFzZTo6bWF4X3Np
emU7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6c2l6ZSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhl
IG51bWJlciBvZiBlbGVtZW50cyBjdXJyZW50bHkgd2l0aGluIHRoZSBgbm9kZV9oYXNoX21hcGAu
CisgIHVzaW5nIEJhc2U6OnNpemU7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6Y2xlYXIoKQorICAv
LworICAvLyBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBgbm9kZV9oYXNoX21hcGAuIElu
dmFsaWRhdGVzIGFueSByZWZlcmVuY2VzLAorICAvLyBwb2ludGVycywgb3IgaXRlcmF0b3JzIHJl
ZmVycmluZyB0byBjb250YWluZWQgZWxlbWVudHMuCisgIC8vCisgIC8vIE5PVEU6IHRoaXMgb3Bl
cmF0aW9uIG1heSBzaHJpbmsgdGhlIHVuZGVybHlpbmcgYnVmZmVyLiBUbyBhdm9pZCBzaHJpbmtp
bmcKKyAgLy8gdGhlIHVuZGVybHlpbmcgYnVmZmVyIGNhbGwgYGVyYXNlKGJlZ2luKCksIGVuZCgp
KWAuCisgIHVzaW5nIEJhc2U6OmNsZWFyOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmVyYXNlKCkK
KyAgLy8KKyAgLy8gRXJhc2VzIGVsZW1lbnRzIHdpdGhpbiB0aGUgYG5vZGVfaGFzaF9tYXBgLiBF
cmFzaW5nIGRvZXMgbm90IHRyaWdnZXIgYQorICAvLyByZWhhc2guIE92ZXJsb2FkcyBhcmUgbGlz
dGVkIGJlbG93LgorICAvLworICAvLyB2b2lkIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIHBvcyk6Cisg
IC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50IGF0IGBwb3NpdGlvbmAgb2YgdGhlIGBub2Rl
X2hhc2hfbWFwYCwgcmV0dXJuaW5nCisgIC8vICAgYHZvaWRgLgorICAvLworICAvLyAgIE5PVEU6
IHRoaXMgcmV0dXJuIGJlaGF2aW9yIGlzIGRpZmZlcmVudCB0aGFuIHRoYXQgb2YgU1RMIGNvbnRh
aW5lcnMgaW4KKyAgLy8gICBnZW5lcmFsIGFuZCBgc3RkOjp1bm9yZGVyZWRfbWFwYCBpbiBwYXJ0
aWN1bGFyLgorICAvLworICAvLyBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwg
Y29uc3RfaXRlcmF0b3IgbGFzdCk6CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50cyBp
biB0aGUgb3BlbiBpbnRlcnZhbCBbYGZpcnN0YCwgYGxhc3RgKSwgcmV0dXJuaW5nIGFuCisgIC8v
ICAgaXRlcmF0b3IgcG9pbnRpbmcgdG8gYGxhc3RgLgorICAvLworICAvLyBzaXplX3R5cGUgZXJh
c2UoY29uc3Qga2V5X3R5cGUmIGtleSk6CisgIC8vCisgIC8vICAgRXJhc2VzIHRoZSBlbGVtZW50
IHdpdGggdGhlIG1hdGNoaW5nIGtleSwgaWYgaXQgZXhpc3RzLgorICB1c2luZyBCYXNlOjplcmFz
ZTsKKworICAvLyBub2RlX2hhc2hfbWFwOjppbnNlcnQoKQorICAvLworICAvLyBJbnNlcnRzIGFu
IGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBpbnRvIHRoZSBgbm9kZV9oYXNoX21hcGAs
CisgIC8vIHJldHVybmluZyBhbiBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgbmV3bHkgaW5zZXJ0
ZWQgZWxlbWVudCwgcHJvdmlkZWQgdGhhdAorICAvLyBhbiBlbGVtZW50IHdpdGggdGhlIGdpdmVu
IGtleSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LiBJZiByZWhhc2hpbmcgb2NjdXJzCisgIC8vIGR1
ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4gT3Zlcmxv
YWRzIGFyZSBsaXN0ZWQKKyAgLy8gYmVsb3cuCisgIC8vCisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRv
cixib29sPiBpbnNlcnQoY29uc3QgaW5pdF90eXBlJiB2YWx1ZSk6CisgIC8vCisgIC8vICAgSW5z
ZXJ0cyBhIHZhbHVlIGludG8gdGhlIGBub2RlX2hhc2hfbWFwYC4gUmV0dXJucyBhIHBhaXIgY29u
c2lzdGluZyBvZiBhbgorICAvLyAgIGl0ZXJhdG9yIHRvIHRoZSBpbnNlcnRlZCBlbGVtZW50IChv
ciB0byB0aGUgZWxlbWVudCB0aGF0IHByZXZlbnRlZCB0aGUKKyAgLy8gICBpbnNlcnRpb24pIGFu
ZCBhIGBib29sYCBkZW5vdGluZyB3aGV0aGVyIHRoZSBpbnNlcnRpb24gdG9vayBwbGFjZS4KKyAg
Ly8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9yLGJvb2w+IGluc2VydChUJiYgdmFsdWUpOgorICAv
LyBzdGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0KGluaXRfdHlwZSYmIHZhbHVlKToKKyAg
Ly8KKyAgLy8gICBJbnNlcnRzIGEgbW92ZWFibGUgdmFsdWUgaW50byB0aGUgYG5vZGVfaGFzaF9t
YXBgLiBSZXR1cm5zIGEgYHN0ZDo6cGFpcmAKKyAgLy8gICBjb25zaXN0aW5nIG9mIGFuIGl0ZXJh
dG9yIHRvIHRoZSBpbnNlcnRlZCBlbGVtZW50IChvciB0byB0aGUgZWxlbWVudCB0aGF0CisgIC8v
ICAgcHJldmVudGVkIHRoZSBpbnNlcnRpb24pIGFuZCBhIGBib29sYCBkZW5vdGluZyB3aGV0aGVy
IHRoZSBpbnNlcnRpb24gdG9vaworICAvLyAgIHBsYWNlLgorICAvLworICAvLyBpdGVyYXRvciBp
bnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgY29uc3QgaW5pdF90eXBlJiB2YWx1ZSk6CisgIC8v
IGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCBUJiYgdmFsdWUpOgorICAvLyBp
dGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgaW5pdF90eXBlJiYgdmFsdWUpOwor
ICAvLworICAvLyAgIEluc2VydHMgYSB2YWx1ZSwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50
YCBhcyBhIG5vbi1iaW5kaW5nIHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hlcmUgdG8gYmVnaW4g
dGhlIGluc2VydGlvbiBzZWFyY2guIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlCisgIC8vICAg
aW5zZXJ0ZWQgZWxlbWVudCwgb3IgdG8gdGhlIGV4aXN0aW5nIGVsZW1lbnQgdGhhdCBwcmV2ZW50
ZWQgdGhlCisgIC8vICAgaW5zZXJ0aW9uLgorICAvLworICAvLyB2b2lkIGluc2VydChJbnB1dEl0
ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEluc2VydHMg
YSByYW5nZSBvZiB2YWx1ZXMgW2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisgIC8vICAgTk9URTog
QWx0aG91Z2ggdGhlIFNUTCBkb2VzIG5vdCBzcGVjaWZ5IHdoaWNoIGVsZW1lbnQgbWF5IGJlIGlu
c2VydGVkIGlmCisgIC8vICAgbXVsdGlwbGUga2V5cyBjb21wYXJlIGVxdWl2YWxlbnRseSwgZm9y
IGBub2RlX2hhc2hfbWFwYCB3ZSBndWFyYW50ZWUgdGhlCisgIC8vICAgZmlyc3QgbWF0Y2ggaXMg
aW5zZXJ0ZWQuCisgIC8vCisgIC8vIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxp
bml0X3R5cGU+IGlsaXN0KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIHRoZSBlbGVtZW50cyB3aXRo
aW4gdGhlIGluaXRpYWxpemVyIGxpc3QgYGlsaXN0YC4KKyAgLy8KKyAgLy8gICBOT1RFOiBBbHRo
b3VnaCB0aGUgU1RMIGRvZXMgbm90IHNwZWNpZnkgd2hpY2ggZWxlbWVudCBtYXkgYmUgaW5zZXJ0
ZWQgaWYKKyAgLy8gICBtdWx0aXBsZSBrZXlzIGNvbXBhcmUgZXF1aXZhbGVudGx5IHdpdGhpbiB0
aGUgaW5pdGlhbGl6ZXIgbGlzdCwgZm9yCisgIC8vICAgYG5vZGVfaGFzaF9tYXBgIHdlIGd1YXJh
bnRlZSB0aGUgZmlyc3QgbWF0Y2ggaXMgaW5zZXJ0ZWQuCisgIHVzaW5nIEJhc2U6Omluc2VydDsK
KworICAvLyBub2RlX2hhc2hfbWFwOjppbnNlcnRfb3JfYXNzaWduKCkKKyAgLy8KKyAgLy8gSW5z
ZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgaW50byB0aGUgYG5vZGVfaGFz
aF9tYXBgIHByb3ZpZGVkCisgIC8vIHRoYXQgYSB2YWx1ZSB3aXRoIHRoZSBnaXZlbiBrZXkgZG9l
cyBub3QgYWxyZWFkeSBleGlzdCwgb3IgcmVwbGFjZXMgaXQgd2l0aAorICAvLyB0aGUgZWxlbWVu
dCB2YWx1ZSBpZiBhIGtleSBmb3IgdGhhdCB2YWx1ZSBhbHJlYWR5IGV4aXN0cywgcmV0dXJuaW5n
IGFuCisgIC8vIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBuZXdseSBpbnNlcnRlZCBlbGVtZW50
LiBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0bworICAvLyB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRl
cmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQKKyAgLy8gYmVsb3cu
CisgIC8vCisgIC8vIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fzc2lnbihj
b25zdCBpbml0X3R5cGUmIGssIFQmJiBvYmopOgorICAvLyBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJv
b2w+IGluc2VydF9vcl9hc3NpZ24oaW5pdF90eXBlJiYgaywgVCYmIG9iaik6CisgIC8vCisgIC8v
ICAgSW5zZXJ0cy9Bc3NpZ25zIChvciBtb3ZlcykgdGhlIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmll
ZCBrZXkgaW50byB0aGUKKyAgLy8gICBgbm9kZV9oYXNoX21hcGAuCisgIC8vCisgIC8vIGl0ZXJh
dG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3RfaXRlcmF0b3IgaGludCwKKyAgLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBpbml0X3R5cGUmIGssIFQmJiBvYmopOgorICAvLyBpdGVy
YXRvciBpbnNlcnRfb3JfYXNzaWduKGNvbnN0X2l0ZXJhdG9yIGhpbnQsIGluaXRfdHlwZSYmIGss
IFQmJiBvYmopOgorICAvLworICAvLyAgIEluc2VydHMvQXNzaWducyAob3IgbW92ZXMpIHRoZSBl
bGVtZW50IG9mIHRoZSBzcGVjaWZpZWQga2V5IGludG8gdGhlCisgIC8vICAgYG5vZGVfaGFzaF9t
YXBgIHVzaW5nIHRoZSBwb3NpdGlvbiBvZiBgaGludGAgYXMgYSBub24tYmluZGluZyBzdWdnZXN0
aW9uCisgIC8vICAgZm9yIHdoZXJlIHRvIGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLgorICB1
c2luZyBCYXNlOjppbnNlcnRfb3JfYXNzaWduOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmVtcGxh
Y2UoKQorICAvLworICAvLyBJbnNlcnRzIGFuIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1
ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4tcGxhY2UKKyAgLy8gd2l0aGluIHRoZSBgbm9kZV9oYXNo
X21hcGAsIHByb3ZpZGVkIHRoYXQgbm8gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkKKyAgLy8g
YWxyZWFkeSBleGlzdHMuCisgIC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25zdHJ1Y3Rl
ZCBldmVuIGlmIHRoZXJlIGFscmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQorICAvLyBrZXkg
aW4gdGhlIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0ZWQgZWxl
bWVudCB3aWxsIGJlCisgIC8vIGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJlZmVyIGB0cnlfZW1w
bGFjZSgpYCB1bmxlc3MgeW91ciBrZXkgaXMgbm90CisgIC8vIGNvcHlhYmxlIG9yIG1vdmVhYmxl
LgorICAvLworICAvLyBJZiByZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBh
bGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZTsKKwor
ICAvLyBub2RlX2hhc2hfbWFwOjplbXBsYWNlX2hpbnQoKQorICAvLworICAvLyBJbnNlcnRzIGFu
IGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBieSBjb25zdHJ1Y3RpbmcgaXQgaW4tcGxh
Y2UKKyAgLy8gd2l0aGluIHRoZSBgbm9kZV9oYXNoX21hcGAsIHVzaW5nIHRoZSBwb3NpdGlvbiBv
ZiBgaGludGAgYXMgYSBub24tYmluZGluZworICAvLyBzdWdnZXN0aW9uIGZvciB3aGVyZSB0byBi
ZWdpbiB0aGUgaW5zZXJ0aW9uIHNlYXJjaCwgYW5kIG9ubHkgaW5zZXJ0cworICAvLyBwcm92aWRl
ZCB0aGF0IG5vIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGFscmVhZHkgZXhpc3RzLgorICAv
LworICAvLyBUaGUgZWxlbWVudCBtYXkgYmUgY29uc3RydWN0ZWQgZXZlbiBpZiB0aGVyZSBhbHJl
YWR5IGlzIGFuIGVsZW1lbnQgd2l0aCB0aGUKKyAgLy8ga2V5IGluIHRoZSBjb250YWluZXIsIGlu
IHdoaWNoIGNhc2UgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIGVsZW1lbnQgd2lsbCBiZQorICAvLyBk
ZXN0cm95ZWQgaW1tZWRpYXRlbHkuIFByZWZlciBgdHJ5X2VtcGxhY2UoKWAgdW5sZXNzIHlvdXIg
a2V5IGlzIG5vdAorICAvLyBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgLy8KKyAgLy8gSWYgcmVo
YXNoaW5nIG9jY3VycyBkdWUgdG8gdGhlIGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52
YWxpZGF0ZWQuCisgIHVzaW5nIEJhc2U6OmVtcGxhY2VfaGludDsKKworICAvLyBub2RlX2hhc2hf
bWFwOjp0cnlfZW1wbGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUg
c3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4g
dGhlIGBub2RlX2hhc2hfbWFwYCwgcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50IHdpdGggdGhlIGdp
dmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cy4gVW5saWtlIGBlbXBsYWNlKClgLCBpZiBhbiBl
bGVtZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAvLyBhbHJlYWR5IGV4aXN0cywgd2UgZ3VhcmFu
dGVlIHRoYXQgbm8gZWxlbWVudCBpcyBjb25zdHJ1Y3RlZC4KKyAgLy8KKyAgLy8gSWYgcmVoYXNo
aW5nIG9jY3VycyBkdWUgdG8gdGhlIGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52YWxp
ZGF0ZWQuCisgIC8vIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAvLyAgIHN0
ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gdHJ5X2VtcGxhY2UoY29uc3Qga2V5X3R5cGUmIGssIEFy
Z3MmJi4uLiBhcmdzKToKKyAgLy8gICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHRyeV9lbXBs
YWNlKGtleV90eXBlJiYgaywgQXJncyYmLi4uIGFyZ3MpOgorICAvLworICAvLyBJbnNlcnRzICh2
aWEgY29weSBvciBtb3ZlKSB0aGUgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIGtleSBpbnRvIHRo
ZQorICAvLyBgbm9kZV9oYXNoX21hcGAuCisgIC8vCisgIC8vICAgaXRlcmF0b3IgdHJ5X2VtcGxh
Y2UoY29uc3RfaXRlcmF0b3IgaGludCwKKyAgLy8gICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbml0X3R5cGUmIGssIEFyZ3MmJi4uLiBhcmdzKToKKyAgLy8gICBpdGVyYXRvciB0cnlfZW1w
bGFjZShjb25zdF9pdGVyYXRvciBoaW50LCBpbml0X3R5cGUmJiBrLCBBcmdzJiYuLi4gYXJncyk6
CisgIC8vCisgIC8vIEluc2VydHMgKHZpYSBjb3B5IG9yIG1vdmUpIHRoZSBlbGVtZW50IG9mIHRo
ZSBzcGVjaWZpZWQga2V5IGludG8gdGhlCisgIC8vIGBub2RlX2hhc2hfbWFwYCB1c2luZyB0aGUg
cG9zaXRpb24gb2YgYGhpbnRgIGFzIGEgbm9uLWJpbmRpbmcgc3VnZ2VzdGlvbgorICAvLyBmb3Ig
d2hlcmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFyY2guCisgIHVzaW5nIEJhc2U6OnRyeV9l
bXBsYWNlOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmV4dHJhY3QoKQorICAvLworICAvLyBFeHRy
YWN0cyB0aGUgaW5kaWNhdGVkIGVsZW1lbnQsIGVyYXNpbmcgaXQgaW4gdGhlIHByb2Nlc3MsIGFu
ZCByZXR1cm5zIGl0CisgIC8vIGFzIGEgQysrMTctY29tcGF0aWJsZSBub2RlIGhhbmRsZS4gT3Zl
cmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIG5vZGVfdHlwZSBleHRyYWN0KGNv
bnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToKKyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0aGUga2V5LHZh
bHVlIHBhaXIgb2YgdGhlIGVsZW1lbnQgYXQgdGhlIGluZGljYXRlZCBwb3NpdGlvbiBhbmQKKyAg
Ly8gICByZXR1cm5zIGEgbm9kZSBoYW5kbGUgb3duaW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEuCisg
IC8vCisgIC8vIG5vZGVfdHlwZSBleHRyYWN0KGNvbnN0IGtleV90eXBlJiB4KToKKyAgLy8KKyAg
Ly8gICBFeHRyYWN0cyB0aGUga2V5LHZhbHVlIHBhaXIgb2YgdGhlIGVsZW1lbnQgd2l0aCBhIGtl
eSBtYXRjaGluZyB0aGUgcGFzc2VkCisgIC8vICAga2V5IHZhbHVlIGFuZCByZXR1cm5zIGEgbm9k
ZSBoYW5kbGUgb3duaW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEuIElmIHRoZQorICAvLyAgIGBub2Rl
X2hhc2hfbWFwYCBkb2VzIG5vdCBjb250YWluIGFuIGVsZW1lbnQgd2l0aCBhIG1hdGNoaW5nIGtl
eSwgdGhpcworICAvLyAgIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgbm9kZSBoYW5kbGUuCisg
IHVzaW5nIEJhc2U6OmV4dHJhY3Q7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6bWVyZ2UoKQorICAv
LworICAvLyBFeHRyYWN0cyBlbGVtZW50cyBmcm9tIGEgZ2l2ZW4gYHNvdXJjZWAgbm9kZSBoYXNo
IG1hcCBpbnRvIHRoaXMKKyAgLy8gYG5vZGVfaGFzaF9tYXBgLiBJZiB0aGUgZGVzdGluYXRpb24g
YG5vZGVfaGFzaF9tYXBgIGFscmVhZHkgY29udGFpbnMgYW4KKyAgLy8gZWxlbWVudCB3aXRoIGFu
IGVxdWl2YWxlbnQga2V5LCB0aGF0IGVsZW1lbnQgaXMgbm90IGV4dHJhY3RlZC4KKyAgdXNpbmcg
QmFzZTo6bWVyZ2U7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6c3dhcChub2RlX2hhc2hfbWFwJiBv
dGhlcikKKyAgLy8KKyAgLy8gRXhjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiB0aGlzIGBub2RlX2hh
c2hfbWFwYCB3aXRoIHRob3NlIG9mIHRoZSBgb3RoZXJgCisgIC8vIG5vZGUgaGFzaCBtYXAsIGF2
b2lkaW5nIGludm9jYXRpb24gb2YgYW55IG1vdmUsIGNvcHksIG9yIHN3YXAgb3BlcmF0aW9ucyBv
bgorICAvLyBpbmRpdmlkdWFsIGVsZW1lbnRzLgorICAvLworICAvLyBBbGwgaXRlcmF0b3JzIGFu
ZCByZWZlcmVuY2VzIG9uIHRoZSBgbm9kZV9oYXNoX21hcGAgcmVtYWluIHZhbGlkLCBleGNlcHRp
bmcKKyAgLy8gZm9yIHRoZSBwYXN0LXRoZS1lbmQgaXRlcmF0b3IsIHdoaWNoIGlzIGludmFsaWRh
dGVkLgorICAvLworICAvLyBgc3dhcCgpYCByZXF1aXJlcyB0aGF0IHRoZSBub2RlIGhhc2ggbWFw
J3MgaGFzaGluZyBhbmQga2V5IGVxdWl2YWxlbmNlCisgIC8vIGZ1bmN0aW9ucyBiZSBTd2FwcGFi
bGUsIGFuZCBhcmUgZXhjaGFnZWQgdXNpbmcgdW5xdWFsaWZpZWQgY2FsbHMgdG8KKyAgLy8gbm9u
LW1lbWJlciBgc3dhcCgpYC4gSWYgdGhlIG1hcCdzIGFsbG9jYXRvciBoYXMKKyAgLy8gYHN0ZDo6
YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT46OnByb3BhZ2F0ZV9vbl9jb250YWluZXJf
c3dhcDo6dmFsdWVgCisgIC8vIHNldCB0byBgdHJ1ZWAsIHRoZSBhbGxvY2F0b3JzIGFyZSBhbHNv
IGV4Y2hhbmdlZCB1c2luZyBhbiB1bnF1YWxpZmllZCBjYWxsCisgIC8vIHRvIG5vbi1tZW1iZXIg
YHN3YXAoKWA7IG90aGVyd2lzZSwgdGhlIGFsbG9jYXRvcnMgYXJlIG5vdCBzd2FwcGVkLgorICB1
c2luZyBCYXNlOjpzd2FwOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OnJlaGFzaChjb3VudCkKKyAg
Ly8KKyAgLy8gUmVoYXNoZXMgdGhlIGBub2RlX2hhc2hfbWFwYCwgc2V0dGluZyB0aGUgbnVtYmVy
IG9mIHNsb3RzIHRvIGJlIGF0IGxlYXN0CisgIC8vIHRoZSBwYXNzZWQgdmFsdWUuIElmIHRoZSBu
ZXcgbnVtYmVyIG9mIHNsb3RzIGluY3JlYXNlcyB0aGUgbG9hZCBmYWN0b3IgbW9yZQorICAvLyB0
aGFuIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBmYWN0b3IKKyAgLy8gKGBjb3VudGAgPCBgc2l6
ZSgpYCAvIGBtYXhfbG9hZF9mYWN0b3IoKWApLCB0aGVuIHRoZSBuZXcgbnVtYmVyIG9mIHNsb3Rz
CisgIC8vIHdpbGwgYmUgYXQgbGVhc3QgYHNpemUoKWAgLyBgbWF4X2xvYWRfZmFjdG9yKClgLgor
ICAvLworICAvLyBUbyBmb3JjZSBhIHJlaGFzaCwgcGFzcyByZWhhc2goMCkuCisgIHVzaW5nIEJh
c2U6OnJlaGFzaDsKKworICAvLyBub2RlX2hhc2hfbWFwOjpyZXNlcnZlKGNvdW50KQorICAvLwor
ICAvLyBTZXRzIHRoZSBudW1iZXIgb2Ygc2xvdHMgaW4gdGhlIGBub2RlX2hhc2hfbWFwYCB0byB0
aGUgbnVtYmVyIG5lZWRlZCB0bworICAvLyBhY2NvbW1vZGF0ZSBhdCBsZWFzdCBgY291bnRgIHRv
dGFsIGVsZW1lbnRzIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBjdXJyZW50CisgIC8vIG1heGltdW0g
bG9hZCBmYWN0b3IsIGFuZCBtYXkgcmVoYXNoIHRoZSBjb250YWluZXIgaWYgbmVlZGVkLgorICB1
c2luZyBCYXNlOjpyZXNlcnZlOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmF0KCkKKyAgLy8KKyAg
Ly8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgbWFwcGVkIHZhbHVlIG9mIHRoZSBlbGVtZW50
IHdpdGgga2V5IGVxdWl2YWxlbnQKKyAgLy8gdG8gdGhlIHBhc3NlZCBrZXkuCisgIHVzaW5nIEJh
c2U6OmF0OworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmNvbnRhaW5zKCkKKyAgLy8KKyAgLy8gRGV0
ZXJtaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCBhIGtleSBjb21wYXJpbmcgZXF1YWwgdG8g
dGhlIGdpdmVuIGBrZXlgCisgIC8vIGV4aXN0cyB3aXRoaW4gdGhlIGBub2RlX2hhc2hfbWFwYCwg
cmV0dXJuaW5nIGB0cnVlYCBpZiBzbyBvciBgZmFsc2VgCisgIC8vIG90aGVyd2lzZS4KKyAgdXNp
bmcgQmFzZTo6Y29udGFpbnM7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6Y291bnQoY29uc3QgS2V5
JiBrZXkpIGNvbnN0CisgIC8vCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB3
aXRoIGEga2V5IGNvbXBhcmluZyBlcXVhbCB0byB0aGUgZ2l2ZW4KKyAgLy8gYGtleWAgd2l0aGlu
IHRoZSBgbm9kZV9oYXNoX21hcGAuIG5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJu
CisgIC8vIGVpdGhlciBgMWAgb3IgYDBgIHNpbmNlIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgYWxs
b3dlZCB3aXRoaW4gYQorICAvLyBgbm9kZV9oYXNoX21hcGAuCisgIHVzaW5nIEJhc2U6OmNvdW50
OworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmVxdWFsX3JhbmdlKCkKKyAgLy8KKyAgLy8gUmV0dXJu
cyBhIGNsb3NlZCByYW5nZSBbZmlyc3QsIGxhc3RdLCBkZWZpbmVkIGJ5IGEgYHN0ZDo6cGFpcmAg
b2YgdHdvCisgIC8vIGl0ZXJhdG9ycywgY29udGFpbmluZyBhbGwgZWxlbWVudHMgd2l0aCB0aGUg
cGFzc2VkIGtleSBpbiB0aGUKKyAgLy8gYG5vZGVfaGFzaF9tYXBgLgorICB1c2luZyBCYXNlOjpl
cXVhbF9yYW5nZTsKKworICAvLyBub2RlX2hhc2hfbWFwOjpmaW5kKCkKKyAgLy8KKyAgLy8gRmlu
ZHMgYW4gZWxlbWVudCB3aXRoIHRoZSBwYXNzZWQgYGtleWAgd2l0aGluIHRoZSBgbm9kZV9oYXNo
X21hcGAuCisgIHVzaW5nIEJhc2U6OmZpbmQ7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6b3BlcmF0
b3JbXSgpCisgIC8vCisgIC8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhbHVlIG1hcHBl
ZCB0byB0aGUgcGFzc2VkIGtleSB3aXRoaW4gdGhlCisgIC8vIGBub2RlX2hhc2hfbWFwYCwgcGVy
Zm9ybWluZyBhbiBgaW5zZXJ0KClgIGlmIHRoZSBrZXkgZG9lcyBub3QgYWxyZWFkeQorICAvLyBl
eGlzdC4gSWYgYW4gaW5zZXJ0aW9uIG9jY3VycyBhbmQgcmVzdWx0cyBpbiBhIHJlaGFzaGluZyBv
ZiB0aGUgY29udGFpbmVyLAorICAvLyBhbGwgaXRlcmF0b3JzIGFyZSBpbnZhbGlkYXRlZC4gT3Ro
ZXJ3aXNlIGl0ZXJhdG9ycyBhcmUgbm90IGFmZmVjdGVkIGFuZAorICAvLyByZWZlcmVuY2VzIGFy
ZSBub3QgaW52YWxpZGF0ZWQuIE92ZXJsb2FkcyBhcmUgbGlzdGVkIGJlbG93LgorICAvLworICAv
LyBUJiBvcGVyYXRvcltdKGNvbnN0IEtleSYga2V5KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGFu
IGluaXRfdHlwZSBvYmplY3QgY29uc3RydWN0ZWQgaW4tcGxhY2UgaWYgdGhlIGVsZW1lbnQgd2l0
aCB0aGUKKyAgLy8gICBnaXZlbiBrZXkgZG9lcyBub3QgZXhpc3QuCisgIC8vCisgIC8vIFQmIG9w
ZXJhdG9yW10oS2V5JiYga2V5KToKKyAgLy8KKyAgLy8gICBJbnNlcnRzIGFuIGluaXRfdHlwZSBv
YmplY3QgY29uc3RydWN0ZWQgaW4tcGxhY2UgcHJvdmlkZWQgdGhhdCBhbiBlbGVtZW50CisgIC8v
ICAgd2l0aCB0aGUgZ2l2ZW4ga2V5IGRvZXMgbm90IGV4aXN0LgorICB1c2luZyBCYXNlOjpvcGVy
YXRvcltdOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmJ1Y2tldF9jb3VudCgpCisgIC8vCisgIC8v
IFJldHVybnMgdGhlIG51bWJlciBvZiAiYnVja2V0cyIgd2l0aGluIHRoZSBgbm9kZV9oYXNoX21h
cGAuCisgIHVzaW5nIEJhc2U6OmJ1Y2tldF9jb3VudDsKKworICAvLyBub2RlX2hhc2hfbWFwOjps
b2FkX2ZhY3RvcigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgbG9hZCBmYWN0b3Ig
b2YgdGhlIGBub2RlX2hhc2hfbWFwYCAodGhlIGF2ZXJhZ2UgbnVtYmVyCisgIC8vIG9mIHNsb3Rz
IG9jY3VwaWVkIHdpdGggYSB2YWx1ZSB3aXRoaW4gdGhlIGhhc2ggbWFwKS4KKyAgdXNpbmcgQmFz
ZTo6bG9hZF9mYWN0b3I7CisKKyAgLy8gbm9kZV9oYXNoX21hcDo6bWF4X2xvYWRfZmFjdG9yKCkK
KyAgLy8KKyAgLy8gTWFuYWdlcyB0aGUgbWF4aW11bSBsb2FkIGZhY3RvciBvZiB0aGUgYG5vZGVf
aGFzaF9tYXBgLiBPdmVybG9hZHMgYXJlCisgIC8vIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8g
ZmxvYXQgbm9kZV9oYXNoX21hcDo6bWF4X2xvYWRfZmFjdG9yKCkKKyAgLy8KKyAgLy8gICBSZXR1
cm5zIHRoZSBjdXJyZW50IG1heGltdW0gbG9hZCBmYWN0b3Igb2YgdGhlIGBub2RlX2hhc2hfbWFw
YC4KKyAgLy8KKyAgLy8gdm9pZCBub2RlX2hhc2hfbWFwOjptYXhfbG9hZF9mYWN0b3IoZmxvYXQg
bWwpCisgIC8vCisgIC8vICAgU2V0cyB0aGUgbWF4aW11bSBsb2FkIGZhY3RvciBvZiB0aGUgYG5v
ZGVfaGFzaF9tYXBgIHRvIHRoZSBwYXNzZWQgdmFsdWUuCisgIC8vCisgIC8vICAgTk9URTogVGhp
cyBvdmVybG9hZCBpcyBwcm92aWRlZCBvbmx5IGZvciBBUEkgY29tcGF0aWJpbGl0eSB3aXRoIHRo
ZSBTVEw7CisgIC8vICAgYG5vZGVfaGFzaF9tYXBgIHdpbGwgaWdub3JlIGFueSBzZXQgbG9hZCBm
YWN0b3IgYW5kIG1hbmFnZSBpdHMgcmVoYXNoaW5nCisgIC8vICAgaW50ZXJuYWxseSBhcyBhbiBp
bXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgIHVzaW5nIEJhc2U6Om1heF9sb2FkX2ZhY3RvcjsKKwor
ICAvLyBub2RlX2hhc2hfbWFwOjpnZXRfYWxsb2NhdG9yKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0
aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBub2RlX2hhc2hfbWFw
YC4KKyAgdXNpbmcgQmFzZTo6Z2V0X2FsbG9jYXRvcjsKKworICAvLyBub2RlX2hhc2hfbWFwOjpo
YXNoX2Z1bmN0aW9uKCkKKyAgLy8KKyAgLy8gUmV0dXJucyB0aGUgaGFzaGluZyBmdW5jdGlvbiB1
c2VkIHRvIGhhc2ggdGhlIGtleXMgd2l0aGluIHRoaXMKKyAgLy8gYG5vZGVfaGFzaF9tYXBgLgor
ICB1c2luZyBCYXNlOjpoYXNoX2Z1bmN0aW9uOworCisgIC8vIG5vZGVfaGFzaF9tYXA6OmtleV9l
cSgpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGZ1bmN0aW9uIHVzZWQgZm9yIGNvbXBhcmluZyBr
ZXlzIGVxdWFsaXR5LgorICB1c2luZyBCYXNlOjprZXlfZXE7CisKKyAgQUJTTF9ERVBSRUNBVEVE
KCJDYWxsIGBoYXNoX2Z1bmN0aW9uKClgIGluc3RlYWQuIikKKyAgdHlwZW5hbWUgQmFzZTo6aGFz
aGVyIGhhc2hfZnVuY3QoKSB7IHJldHVybiB0aGlzLT5oYXNoX2Z1bmN0aW9uKCk7IH0KKworICBB
QlNMX0RFUFJFQ0FURUQoIkNhbGwgYHJlaGFzaCgpYCBpbnN0ZWFkLiIpCisgIHZvaWQgcmVzaXpl
KHR5cGVuYW1lIEJhc2U6OnNpemVfdHlwZSBoaW50KSB7IHRoaXMtPnJlaGFzaChoaW50KTsgfQor
fTsKKworbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbCB7CisKK3RlbXBsYXRlIDxjbGFzcyBL
ZXksIGNsYXNzIFZhbHVlPgorY2xhc3MgTm9kZUhhc2hNYXBQb2xpY3kKKyAgICA6IHB1YmxpYyBh
YnNsOjpjb250YWluZXJfaW50ZXJuYWw6Om5vZGVfaGFzaF9wb2xpY3k8CisgICAgICAgICAgc3Rk
OjpwYWlyPGNvbnN0IEtleSwgVmFsdWU+JiwgTm9kZUhhc2hNYXBQb2xpY3k8S2V5LCBWYWx1ZT4+
IHsKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHN0ZDo6cGFpcjxjb25zdCBLZXksIFZhbHVlPjsKKwor
IHB1YmxpYzoKKyAgdXNpbmcga2V5X3R5cGUgPSBLZXk7CisgIHVzaW5nIG1hcHBlZF90eXBlID0g
VmFsdWU7CisgIHVzaW5nIGluaXRfdHlwZSA9IHN0ZDo6cGFpcjwvKm5vbiBjb25zdCovIGtleV90
eXBlLCBtYXBwZWRfdHlwZT47CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jYXRvciwgY2xhc3Mu
Li4gQXJncz4KKyAgc3RhdGljIHZhbHVlX3R5cGUqIG5ld19lbGVtZW50KEFsbG9jYXRvciogYWxs
b2MsIEFyZ3MmJi4uLiBhcmdzKSB7CisgICAgdXNpbmcgUGFpckFsbG9jID0gdHlwZW5hbWUgYWJz
bDo6YWxsb2NhdG9yX3RyYWl0czwKKyAgICAgICAgQWxsb2NhdG9yPjo6dGVtcGxhdGUgcmViaW5k
X2FsbG9jPHZhbHVlX3R5cGU+OworICAgIFBhaXJBbGxvYyBwYWlyX2FsbG9jKCphbGxvYyk7Cisg
ICAgdmFsdWVfdHlwZSogcmVzID0KKyAgICAgICAgYWJzbDo6YWxsb2NhdG9yX3RyYWl0czxQYWly
QWxsb2M+OjphbGxvY2F0ZShwYWlyX2FsbG9jLCAxKTsKKyAgICBhYnNsOjphbGxvY2F0b3JfdHJh
aXRzPFBhaXJBbGxvYz46OmNvbnN0cnVjdChwYWlyX2FsbG9jLCByZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKKyAgICByZXR1cm4gcmVzOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIEFsbG9j
YXRvcj4KKyAgc3RhdGljIHZvaWQgZGVsZXRlX2VsZW1lbnQoQWxsb2NhdG9yKiBhbGxvYywgdmFs
dWVfdHlwZSogcGFpcikgeworICAgIHVzaW5nIFBhaXJBbGxvYyA9IHR5cGVuYW1lIGFic2w6OmFs
bG9jYXRvcl90cmFpdHM8CisgICAgICAgIEFsbG9jYXRvcj46OnRlbXBsYXRlIHJlYmluZF9hbGxv
Yzx2YWx1ZV90eXBlPjsKKyAgICBQYWlyQWxsb2MgcGFpcl9hbGxvYygqYWxsb2MpOworICAgIGFi
c2w6OmFsbG9jYXRvcl90cmFpdHM8UGFpckFsbG9jPjo6ZGVzdHJveShwYWlyX2FsbG9jLCBwYWly
KTsKKyAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPFBhaXJBbGxvYz46OmRlYWxsb2NhdGUocGFp
cl9hbGxvYywgcGFpciwgMSk7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MuLi4g
QXJncz4KKyAgc3RhdGljIGRlY2x0eXBlKGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6RGVjb21w
b3NlUGFpcigKKyAgICAgIHN0ZDo6ZGVjbHZhbDxGPigpLCBzdGQ6OmRlY2x2YWw8QXJncz4oKS4u
LikpCisgIGFwcGx5KEYmJiBmLCBBcmdzJiYuLi4gYXJncykgeworICAgIHJldHVybiBhYnNsOjpj
b250YWluZXJfaW50ZXJuYWw6OkRlY29tcG9zZVBhaXIoc3RkOjpmb3J3YXJkPEY+KGYpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIHN0YXRpYyBzaXplX3QgZWxlbWVudF9zcGFj
ZV91c2VkKGNvbnN0IHZhbHVlX3R5cGUqKSB7CisgICAgcmV0dXJuIHNpemVvZih2YWx1ZV90eXBl
KTsKKyAgfQorCisgIHN0YXRpYyBWYWx1ZSYgdmFsdWUodmFsdWVfdHlwZSogZWxlbSkgeyByZXR1
cm4gZWxlbS0+c2Vjb25kOyB9CisgIHN0YXRpYyBjb25zdCBWYWx1ZSYgdmFsdWUoY29uc3QgdmFs
dWVfdHlwZSogZWxlbSkgeyByZXR1cm4gZWxlbS0+c2Vjb25kOyB9Cit9OworfSAgLy8gbmFtZXNw
YWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKyNlbmRpZiAgLy8g
QUJTTF9DT05UQUlORVJfTk9ERV9IQVNIX01BUF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFp
bmVyL25vZGVfaGFzaF9tYXBfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfbWFw
X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ3ODk2NDRjMjRlOGM4MTc0MTQ5M2U1NWJmMGI2MWUyZjM1
NjY2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfbWFwX3Rl
c3QuY2MKQEAgLTAsMCArMSwyMTggQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0
aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfbWFwLmgiCisKKyNp
bmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC90cmFja2VkLmgiCisjaW5jbHVkZSAiYWJz
bC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9jb25zdHJ1Y3Rvcl90ZXN0LmgiCisj
aW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX21hcF9sb29rdXBfdGVz
dC5oIgorI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFsL3Vub3JkZXJlZF9tYXBfbW9k
aWZpZXJzX3Rlc3QuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGNvbnRhaW5lcl9p
bnRlcm5hbCB7CituYW1lc3BhY2UgeworCit1c2luZyA6OnRlc3Rpbmc6OkZpZWxkOwordXNpbmcg
Ojp0ZXN0aW5nOjpQYWlyOwordXNpbmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZTsK
KwordXNpbmcgTWFwVHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPAorICAgIGFic2w6Om5vZGVfaGFz
aF9tYXA8aW50LCBpbnQsIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRlZnVsVGVzdGluZ0VxdWFs
LAorICAgICAgICAgICAgICAgICAgICAgICAgQWxsb2M8c3RkOjpwYWlyPGNvbnN0IGludCwgaW50
Pj4+LAorICAgIGFic2w6Om5vZGVfaGFzaF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nLCBT
dGF0ZWZ1bFRlc3RpbmdIYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVmdWxUZXN0
aW5nRXF1YWwsCisgICAgICAgICAgICAgICAgICAgICAgICBBbGxvYzxzdGQ6OnBhaXI8Y29uc3Qg
c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4+PjsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9D
QVNFX1AoTm9kZUhhc2hNYXAsIENvbnN0cnVjdG9yVGVzdCwgTWFwVHlwZXMpOworSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9DQVNFX1AoTm9kZUhhc2hNYXAsIExvb2t1cFRlc3QsIE1hcFR5cGVzKTsK
K0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE5vZGVIYXNoTWFwLCBNb2RpZmllcnNUZXN0
LCBNYXBUeXBlcyk7CisKK3VzaW5nIE0gPSBhYnNsOjpub2RlX2hhc2hfbWFwPHN0ZDo6c3RyaW5n
LCBUcmFja2VkPGludD4+OworCitURVNUKE5vZGVIYXNoTWFwLCBFbXBsYWNlKSB7CisgIE0gbTsK
KyAgVHJhY2tlZDxpbnQ+IHQoNTMpOworICBtLmVtcGxhY2UoImEiLCB0KTsKKyAgQVNTRVJUX0VR
KDAsIHQubnVtX21vdmVzKCkpOworICBBU1NFUlRfRVEoMSwgdC5udW1fY29waWVzKCkpOworCisg
IG0uZW1wbGFjZShzdGQ6OnN0cmluZygiYSIpLCB0KTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21v
dmVzKCkpOworICBBU1NFUlRfRVEoMSwgdC5udW1fY29waWVzKCkpOworCisgIHN0ZDo6c3RyaW5n
IGEoImEiKTsKKyAgbS5lbXBsYWNlKGEsIHQpOworICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMo
KSk7CisgIEFTU0VSVF9FUSgxLCB0Lm51bV9jb3BpZXMoKSk7CisKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgY2EoImEiKTsKKyAgbS5lbXBsYWNlKGEsIHQpOworICBBU1NFUlRfRVEoMCwgdC5udW1fbW92
ZXMoKSk7CisgIEFTU0VSVF9FUSgxLCB0Lm51bV9jb3BpZXMoKSk7CisKKyAgbS5lbXBsYWNlKHN0
ZDo6bWFrZV9wYWlyKCJhIiwgdCkpOworICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7Cisg
IEFTU0VSVF9FUSgyLCB0Lm51bV9jb3BpZXMoKSk7CisKKyAgbS5lbXBsYWNlKHN0ZDo6bWFrZV9w
YWlyKHN0ZDo6c3RyaW5nKCJhIiksIHQpKTsKKyAgQVNTRVJUX0VRKDAsIHQubnVtX21vdmVzKCkp
OworICBBU1NFUlRfRVEoMywgdC5udW1fY29waWVzKCkpOworCisgIHN0ZDo6cGFpcjxzdGQ6OnN0
cmluZywgVHJhY2tlZDxpbnQ+PiBwKCJhIiwgdCk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3Zl
cygpKTsKKyAgQVNTRVJUX0VRKDQsIHQubnVtX2NvcGllcygpKTsKKyAgbS5lbXBsYWNlKHApOwor
ICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSg0LCB0Lm51bV9jb3Bp
ZXMoKSk7CisKKyAgY29uc3Qgc3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBUcmFja2VkPGludD4+IGNw
KCJhIiwgdCk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDUs
IHQubnVtX2NvcGllcygpKTsKKyAgbS5lbXBsYWNlKGNwKTsKKyAgQVNTRVJUX0VRKDAsIHQubnVt
X21vdmVzKCkpOworICBBU1NFUlRfRVEoNSwgdC5udW1fY29waWVzKCkpOworCisgIHN0ZDo6cGFp
cjxjb25zdCBzdGQ6OnN0cmluZywgVHJhY2tlZDxpbnQ+PiBwYygiYSIsIHQpOworICBBU1NFUlRf
RVEoMCwgdC5udW1fbW92ZXMoKSk7CisgIEFTU0VSVF9FUSg2LCB0Lm51bV9jb3BpZXMoKSk7Cisg
IG0uZW1wbGFjZShwYyk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJU
X0VRKDYsIHQubnVtX2NvcGllcygpKTsKKworICBjb25zdCBzdGQ6OnBhaXI8Y29uc3Qgc3RkOjpz
dHJpbmcsIFRyYWNrZWQ8aW50Pj4gY3BjKCJhIiwgdCk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9t
b3ZlcygpKTsKKyAgQVNTRVJUX0VRKDcsIHQubnVtX2NvcGllcygpKTsKKyAgbS5lbXBsYWNlKGNw
Yyk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDcsIHQubnVt
X2NvcGllcygpKTsKKworICBtLmVtcGxhY2Uoc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6
OmZvcndhcmRfYXNfdHVwbGUoImEiKSwKKyAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBs
ZSh0KSk7CisgIEFTU0VSVF9FUSgwLCB0Lm51bV9tb3ZlcygpKTsKKyAgQVNTRVJUX0VRKDcsIHQu
bnVtX2NvcGllcygpKTsKKworICBtLmVtcGxhY2Uoc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBz
dGQ6OmZvcndhcmRfYXNfdHVwbGUoc3RkOjpzdHJpbmcoImEiKSksCisgICAgICAgICAgICBzdGQ6
OmZvcndhcmRfYXNfdHVwbGUodCkpOworICBBU1NFUlRfRVEoMCwgdC5udW1fbW92ZXMoKSk7Cisg
IEFTU0VSVF9FUSg3LCB0Lm51bV9jb3BpZXMoKSk7Cit9CisKK1RFU1QoTm9kZUhhc2hNYXAsIEFz
c2lnblJlY3Vyc2l2ZSkgeworICBzdHJ1Y3QgVHJlZSB7CisgICAgLy8gVmVyaWZ5IHRoYXQgdW5v
cmRlcmVkX21hcDxLLCBJbmNvbXBsZXRlVHlwZT4gY2FuIGJlIGluc3RhbnRpYXRlZC4KKyAgICBh
YnNsOjpub2RlX2hhc2hfbWFwPGludCwgVHJlZT4gY2hpbGRyZW47CisgIH07CisgIFRyZWUgcm9v
dDsKKyAgY29uc3QgVHJlZSYgY2hpbGQgPSByb290LmNoaWxkcmVuLmVtcGxhY2UoKS5maXJzdC0+
c2Vjb25kOworICAvLyBWZXJpZnkgdGhhdCBgbGhzID0gcmhzYCBkb2Vzbid0IHJlYWQgcmhzIGFm
dGVyIGNsZWFyaW5nIGxocy4KKyAgcm9vdCA9IGNoaWxkOworfQorCitURVNUKEZsYXRIYXNoTWFw
LCBNb3ZlT25seUtleSkgeworICBzdHJ1Y3QgS2V5IHsKKyAgICBLZXkoKSA9IGRlZmF1bHQ7Cisg
ICAgS2V5KEtleSYmKSA9IGRlZmF1bHQ7CisgICAgS2V5JiBvcGVyYXRvcj0oS2V5JiYpID0gZGVm
YXVsdDsKKyAgfTsKKyAgc3RydWN0IEVxIHsKKyAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgS2V5
JiwgY29uc3QgS2V5JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICB9OworICBzdHJ1Y3QgSGFz
aCB7CisgICAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgS2V5JikgY29uc3QgeyByZXR1cm4gMDsg
fQorICB9OworICBhYnNsOjpub2RlX2hhc2hfbWFwPEtleSwgaW50LCBIYXNoLCBFcT4gbTsKKyAg
bVtLZXkoKV07Cit9CisKK3N0cnVjdCBOb25Nb3ZhYmxlS2V5IHsKKyAgZXhwbGljaXQgTm9uTW92
YWJsZUtleShpbnQgaSkgOiBpKGkpIHt9CisgIE5vbk1vdmFibGVLZXkoTm9uTW92YWJsZUtleSYm
KSA9IGRlbGV0ZTsKKyAgaW50IGk7Cit9Oworc3RydWN0IE5vbk1vdmFibGVLZXlIYXNoIHsKKyAg
dXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBO
b25Nb3ZhYmxlS2V5JiBrKSBjb25zdCB7IHJldHVybiBrLmk7IH0KKyAgc2l6ZV90IG9wZXJhdG9y
KCkoaW50IGspIGNvbnN0IHsgcmV0dXJuIGs7IH0KK307CitzdHJ1Y3QgTm9uTW92YWJsZUtleUVx
IHsKKyAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSB2b2lkOworICBib29sIG9wZXJhdG9yKCkoY29u
c3QgTm9uTW92YWJsZUtleSYgYSwgY29uc3QgTm9uTW92YWJsZUtleSYgYikgY29uc3QgeworICAg
IHJldHVybiBhLmkgPT0gYi5pOworICB9CisgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBOb25Nb3Zh
YmxlS2V5JiBhLCBpbnQgYikgY29uc3QgeyByZXR1cm4gYS5pID09IGI7IH0KK307CisKK1RFU1Qo
Tm9kZUhhc2hNYXAsIE1lcmdlRXh0cmFjdEluc2VydCkgeworICBhYnNsOjpub2RlX2hhc2hfbWFw
PE5vbk1vdmFibGVLZXksIGludCwgTm9uTW92YWJsZUtleUhhc2gsIE5vbk1vdmFibGVLZXlFcT4K
KyAgICAgIHNldDEsIHNldDI7CisgIHNldDEuZW1wbGFjZShzdGQ6OnBpZWNld2lzZV9jb25zdHJ1
Y3QsIHN0ZDo6bWFrZV90dXBsZSg3KSwKKyAgICAgICAgICAgICAgIHN0ZDo6bWFrZV90dXBsZSgt
NykpOworICBzZXQxLmVtcGxhY2Uoc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCBzdGQ6Om1ha2Vf
dHVwbGUoMTcpLAorICAgICAgICAgICAgICAgc3RkOjptYWtlX3R1cGxlKC0xNykpOworCisgIHNl
dDIuZW1wbGFjZShzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6bWFrZV90dXBsZSg3KSwK
KyAgICAgICAgICAgICAgIHN0ZDo6bWFrZV90dXBsZSgtNzApKTsKKyAgc2V0Mi5lbXBsYWNlKHN0
ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjptYWtlX3R1cGxlKDE5KSwKKyAgICAgICAgICAg
ICAgIHN0ZDo6bWFrZV90dXBsZSgtMTkwKSk7CisKKyAgYXV0byBFbGVtID0gW10oaW50IGtleSwg
aW50IHZhbHVlKSB7CisgICAgcmV0dXJuIFBhaXIoRmllbGQoJk5vbk1vdmFibGVLZXk6OmksIGtl
eSksIHZhbHVlKTsKKyAgfTsKKworICBFWFBFQ1RfVEhBVChzZXQxLCBVbm9yZGVyZWRFbGVtZW50
c0FyZShFbGVtKDcsIC03KSwgRWxlbSgxNywgLTE3KSkpOworICBFWFBFQ1RfVEhBVChzZXQyLCBV
bm9yZGVyZWRFbGVtZW50c0FyZShFbGVtKDcsIC03MCksIEVsZW0oMTksIC0xOTApKSk7CisKKyAg
Ly8gTm9uTW92YWJsZUtleSBpcyBuZWl0aGVyIGNvcHlhYmxlIG5vciBtb3ZhYmxlLiBXZSBzaG91
bGQgc3RpbGwgYmUgYWJsZSB0bworICAvLyBtb3ZlIG5vZGVzIGFyb3VuZC4KKyAgc3RhdGljX2Fz
c2VydCghc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8Tm9uTW92YWJsZUtleT46OnZhbHVlLCAi
Iik7CisgIHNldDEubWVyZ2Uoc2V0Mik7CisKKyAgRVhQRUNUX1RIQVQoc2V0MSwKKyAgICAgICAg
ICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoRWxlbSg3LCAtNyksIEVsZW0oMTcsIC0xNyksIEVs
ZW0oMTksIC0xOTApKSk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJl
KEVsZW0oNywgLTcwKSkpOworCisgIGF1dG8gbm9kZSA9IHNldDEuZXh0cmFjdCg3KTsKKyAgRVhQ
RUNUX1RSVUUobm9kZSk7CisgIEVYUEVDVF9FUShub2RlLmtleSgpLmksIDcpOworICBFWFBFQ1Rf
RVEobm9kZS5tYXBwZWQoKSwgLTcpOworICBFWFBFQ1RfVEhBVChzZXQxLCBVbm9yZGVyZWRFbGVt
ZW50c0FyZShFbGVtKDE3LCAtMTcpLCBFbGVtKDE5LCAtMTkwKSkpOworCisgIGF1dG8gaW5zZXJ0
X3Jlc3VsdCA9IHNldDIuaW5zZXJ0KHN0ZDo6bW92ZShub2RlKSk7CisgIEVYUEVDVF9GQUxTRShu
b2RlKTsKKyAgRVhQRUNUX0ZBTFNFKGluc2VydF9yZXN1bHQuaW5zZXJ0ZWQpOworICBFWFBFQ1Rf
VFJVRShpbnNlcnRfcmVzdWx0Lm5vZGUpOworICBFWFBFQ1RfRVEoaW5zZXJ0X3Jlc3VsdC5ub2Rl
LmtleSgpLmksIDcpOworICBFWFBFQ1RfRVEoaW5zZXJ0X3Jlc3VsdC5ub2RlLm1hcHBlZCgpLCAt
Nyk7CisgIEVYUEVDVF9USEFUKCppbnNlcnRfcmVzdWx0LnBvc2l0aW9uLCBFbGVtKDcsIC03MCkp
OworICBFWFBFQ1RfVEhBVChzZXQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShFbGVtKDcsIC03MCkp
KTsKKworICBub2RlID0gc2V0MS5leHRyYWN0KDE3KTsKKyAgRVhQRUNUX1RSVUUobm9kZSk7Cisg
IEVYUEVDVF9FUShub2RlLmtleSgpLmksIDE3KTsKKyAgRVhQRUNUX0VRKG5vZGUubWFwcGVkKCks
IC0xNyk7CisgIEVYUEVDVF9USEFUKHNldDEsIFVub3JkZXJlZEVsZW1lbnRzQXJlKEVsZW0oMTks
IC0xOTApKSk7CisKKyAgbm9kZS5tYXBwZWQoKSA9IDIzOworCisgIGluc2VydF9yZXN1bHQgPSBz
ZXQyLmluc2VydChzdGQ6Om1vdmUobm9kZSkpOworICBFWFBFQ1RfRkFMU0Uobm9kZSk7CisgIEVY
UEVDVF9UUlVFKGluc2VydF9yZXN1bHQuaW5zZXJ0ZWQpOworICBFWFBFQ1RfRkFMU0UoaW5zZXJ0
X3Jlc3VsdC5ub2RlKTsKKyAgRVhQRUNUX1RIQVQoKmluc2VydF9yZXN1bHQucG9zaXRpb24sIEVs
ZW0oMTcsIDIzKSk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKEVs
ZW0oNywgLTcwKSwgRWxlbSgxNywgMjMpKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8g
bmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIv
bm9kZV9oYXNoX3NldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZDRjZTBjMTYzMWQ3OGNmZWNmY2Q4ZmMyOWEx
YzQ4NGFlOWY2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXIvbm9kZV9oYXNo
X3NldC5oCkBAIC0wLDAgKzEsNDM5IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1
dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBub2RlX2hhc2hf
c2V0LmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQW4gYGFic2w6Om5vZGVfaGFz
aF9zZXQ8VD5gIGlzIGFuIHVub3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgZGVzaWduZWQg
dG8KKy8vIGJlIGEgbW9yZSBlZmZpY2llbnQgcmVwbGFjZW1lbnQgZm9yIGBzdGQ6OnVub3JkZXJl
ZF9zZXRgLiBMaWtlCisvLyBgdW5vcmRlcmVkX3NldGAsIHNlYXJjaCwgaW5zZXJ0aW9uLCBhbmQg
ZGVsZXRpb24gb2YgbWFwIGVsZW1lbnRzIGNhbiBiZSBkb25lCisvLyBhcyBhbiBgTygxKWAgb3Bl
cmF0aW9uLiBIb3dldmVyLCBgbm9kZV9oYXNoX3NldGAgKGFuZCBvdGhlciB1bm9yZGVyZWQKKy8v
IGFzc29jaWF0aXZlIGNvbnRhaW5lcnMga25vd24gYXMgdGhlIGNvbGxlY3Rpb24gb2YgQWJzZWls
ICJTd2lzcyB0YWJsZXMiKQorLy8gY29udGFpbiBvdGhlciBvcHRpbWl6YXRpb25zIHRoYXQgcmVz
dWx0IGluIGJvdGggbWVtb3J5IGFuZCBjb21wdXRhdGlvbgorLy8gYWR2YW50YWdlcy4KKy8vCisv
LyBJbiBtb3N0IGNhc2VzLCB5b3VyIGRlZmF1bHQgY2hvaWNlIGZvciBhIGhhc2ggdGFibGUgc2hv
dWxkIGJlIGEgbWFwIG9mIHR5cGUKKy8vIGBmbGF0X2hhc2hfbWFwYCBvciBhIHNldCBvZiB0eXBl
IGBmbGF0X2hhc2hfc2V0YC4gSG93ZXZlciwgaWYgeW91IG5lZWQKKy8vIHBvaW50ZXIgc3RhYmls
aXR5LCBhIGBub2RlX2hhc2hfc2V0YCBzaG91bGQgYmUgeW91ciBwcmVmZXJyZWQgY2hvaWNlLiBB
cworLy8gd2VsbCwgaWYgeW91IGFyZSBtaWdyYXRpbmcgeW91ciBjb2RlIGZyb20gdXNpbmcgYHN0
ZDo6dW5vcmRlcmVkX3NldGAsIGEKKy8vIGBub2RlX2hhc2hfc2V0YCBzaG91bGQgYmUgYW4gZWFz
eSBtaWdyYXRpb24uIENvbnNpZGVyIG1pZ3JhdGluZyB0bworLy8gYG5vZGVfaGFzaF9zZXRgIGFu
ZCBwZXJoYXBzIGNvbnZlcnRpbmcgdG8gYSBtb3JlIGVmZmljaWVudCBgZmxhdF9oYXNoX3NldGAK
Ky8vIHVwb24gZnVydGhlciByZXZpZXcuCisKKyNpZm5kZWYgQUJTTF9DT05UQUlORVJfTk9ERV9I
QVNIX1NFVF9IXworI2RlZmluZSBBQlNMX0NPTlRBSU5FUl9OT0RFX0hBU0hfU0VUX0hfCisKKyNp
bmNsdWRlIDx0eXBlX3RyYWl0cz4KKworI2luY2x1ZGUgImFic2wvY29udGFpbmVyL2ludGVybmFs
L2hhc2hfZnVuY3Rpb25fZGVmYXVsdHMuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKKyNpbmNs
dWRlICJhYnNsL2NvbnRhaW5lci9pbnRlcm5hbC9ub2RlX2hhc2hfcG9saWN5LmgiCisjaW5jbHVk
ZSAiYWJzbC9jb250YWluZXIvaW50ZXJuYWwvcmF3X2hhc2hfc2V0LmgiICAvLyBJV1lVIHByYWdt
YTogZXhwb3J0CisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisKK25hbWVzcGFjZSBh
YnNsIHsKK25hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwgewordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgTm9kZUhhc2hTZXRQb2xpY3k7Cit9ICAvLyBuYW1lc3BhY2UgY29udGFpbmVy
X2ludGVybmFsCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBhYnNsOjpub2RlX2hhc2hf
c2V0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEFuIGBhYnNsOjpub2RlX2hhc2hf
c2V0PFQ+YCBpcyBhbiB1bm9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIHdoaWNoCisvLyBo
YXMgYmVlbiBvcHRpbWl6ZWQgZm9yIGJvdGggc3BlZWQgYW5kIG1lbW9yeSBmb290cHJpbnQgaW4g
bW9zdCBjb21tb24gdXNlCisvLyBjYXNlcy4gSXRzIGludGVyZmFjZSBpcyBzaW1pbGFyIHRvIHRo
YXQgb2YgYHN0ZDo6dW5vcmRlcmVkX3NldDxUPmAgd2l0aCB0aGUKKy8vIGZvbGxvd2luZyBub3Rh
YmxlIGRpZmZlcmVuY2VzOgorLy8KKy8vICogU3VwcG9ydHMgaGV0ZXJvZ2VuZW91cyBsb29rdXAs
IHRocm91Z2ggYGZpbmQoKWAsIGBvcGVyYXRvcltdKClgIGFuZAorLy8gICBgaW5zZXJ0KClgLCBw
cm92aWRlZCB0aGF0IHRoZSBtYXAgaXMgcHJvdmlkZWQgYSBjb21wYXRpYmxlIGhldGVyb2dlbmVv
dXMKKy8vICAgaGFzaGluZyBmdW5jdGlvbiBhbmQgZXF1YWxpdHkgb3BlcmF0b3IuCisvLyAqIENv
bnRhaW5zIGEgYGNhcGFjaXR5KClgIG1lbWJlciBmdW5jdGlvbiBpbmRpY2F0aW5nIHRoZSBudW1i
ZXIgb2YgZWxlbWVudAorLy8gICBzbG90cyAob3BlbiwgZGVsZXRlZCwgYW5kIGVtcHR5KSB3aXRo
aW4gdGhlIGhhc2ggc2V0LgorLy8gKiBSZXR1cm5zIGB2b2lkYCBmcm9tIHRoZSBgZXJhc2UoaXRl
cmF0b3IpYCBvdmVybG9hZC4KKy8vCisvLyBCeSBkZWZhdWx0LCBgbm9kZV9oYXNoX3NldGAgdXNl
cyB0aGUgYGFic2w6Okhhc2hgIGhhc2hpbmcgZnJhbWV3b3JrLgorLy8gQWxsIGZ1bmRhbWVudGFs
IGFuZCBBYnNlaWwgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZSBgYWJzbDo6SGFzaGAgZnJhbWV3b3Jr
IGhhdmUKKy8vIGEgY29tcGF0aWJsZSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgY29tcGFyaW5nIGlu
c2VydGlvbnMgaW50byBgbm9kZV9oYXNoX3NldGAuCisvLyBJZiB5b3VyIHR5cGUgaXMgbm90IHll
dCBzdXBwb3J0ZWQgYnkgdGhlIGBhc2JsOjpIYXNoYCBmcmFtZXdvcmssIHNlZQorLy8gYWJzbC9o
YXNoL2hhc2guaCBmb3IgaW5mb3JtYXRpb24gb24gZXh0ZW5kaW5nIEFic2VpbCBoYXNoaW5nIHRv
IHVzZXItZGVmaW5lZAorLy8gdHlwZXMuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgIC8vIENy
ZWF0ZSBhIG5vZGUgaGFzaCBzZXQgb2YgdGhyZWUgc3RyaW5ncworLy8gICBhYnNsOjpub2RlX2hh
c2hfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gZHVja3MgPQorLy8gICAgIHsiaHVleSIs
ICJkZXdleSJ9LCAibG91aWUifTsKKy8vCisvLyAgLy8gSW5zZXJ0IGEgbmV3IGVsZW1lbnQgaW50
byB0aGUgbm9kZSBoYXNoIG1hcAorLy8gIGR1Y2tzLmluc2VydCgiZG9uYWxkIn07CisvLworLy8g
IC8vIEZvcmNlIGEgcmVoYXNoIG9mIHRoZSBub2RlIGhhc2ggbWFwCisvLyAgZHVja3MucmVoYXNo
KDApOworLy8KKy8vICAvLyBTZWUgaWYgImRld2V5IiBpcyBwcmVzZW50CisvLyAgaWYgKGR1Y2tz
LmNvbnRhaW5zKCJkZXdleSIpKSB7CisvLyAgICBzdGQ6OmNvdXQgPDwgIldlIGZvdW5kIGRld2V5
ISIgPDwgc3RkOjplbmRsOworLy8gIH0KK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBIYXNoID0g
YWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2RlZmF1bHRfaGFzaDxUPiwKKyAgICAgICAg
ICBjbGFzcyBFcSA9IGFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9kZWZhdWx0X2VxPFQ+
LAorICAgICAgICAgIGNsYXNzIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8VD4+CitjbGFzcyBub2Rl
X2hhc2hfc2V0CisgICAgOiBwdWJsaWMgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpyYXdfaGFz
aF9zZXQ8CisgICAgICAgICAgYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpOb2RlSGFzaFNldFBv
bGljeTxUPiwgSGFzaCwgRXEsIEFsbG9jPiB7CisgIHVzaW5nIEJhc2UgPSB0eXBlbmFtZSBub2Rl
X2hhc2hfc2V0OjpyYXdfaGFzaF9zZXQ7CisKKyBwdWJsaWM6CisgIG5vZGVfaGFzaF9zZXQoKSB7
fQorICB1c2luZyBCYXNlOjpCYXNlOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmJlZ2luKCkKKyAg
Ly8KKyAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBgbm9k
ZV9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmJlZ2luOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6
OmNiZWdpbigpCisgIC8vCisgIC8vIFJldHVybnMgYSBjb25zdCBpdGVyYXRvciB0byB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBgbm9kZV9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmNiZWdpbjsKKwor
ICAvLyBub2RlX2hhc2hfc2V0OjpjZW5kKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNvbnN0IGl0
ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBub2RlX2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFzZTo6
Y2VuZDsKKworICAvLyBub2RlX2hhc2hfc2V0OjplbmQoKQorICAvLworICAvLyBSZXR1cm5zIGFu
IGl0ZXJhdG9yIHRvIHRoZSBlbmQgb2YgdGhlIGBub2RlX2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFz
ZTo6ZW5kOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmNhcGFjaXR5KCkKKyAgLy8KKyAgLy8gUmV0
dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnQgc2xvdHMgKGFzc2lnbmVkLCBkZWxldGVkLCBhbmQg
ZW1wdHkpCisgIC8vIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGBub2RlX2hhc2hfc2V0YC4KKyAgLy8K
KyAgLy8gTk9URTogdGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMgcGFydGljdWxhciB0byBgYWJzbDo6
bm9kZV9oYXNoX3NldGAgYW5kIGlzCisgIC8vIG5vdCBwcm92aWRlZCBpbiB0aGUgYHN0ZDo6dW5v
cmRlcmVkX21hcGAgQVBJLgorICB1c2luZyBCYXNlOjpjYXBhY2l0eTsKKworICAvLyBub2RlX2hh
c2hfc2V0OjplbXB0eSgpCisgIC8vCisgIC8vIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGBu
b2RlX2hhc2hfc2V0YCBpcyBlbXB0eS4KKyAgdXNpbmcgQmFzZTo6ZW1wdHk7CisKKyAgLy8gbm9k
ZV9oYXNoX3NldDo6bWF4X3NpemUoKQorICAvLworICAvLyBSZXR1cm5zIHRoZSBsYXJnZXN0IHRo
ZW9yZXRpY2FsIHBvc3NpYmxlIG51bWJlciBvZiBlbGVtZW50cyB3aXRoaW4gYQorICAvLyBgbm9k
ZV9oYXNoX3NldGAgdW5kZXIgY3VycmVudCBtZW1vcnkgY29uc3RyYWludHMuIFRoaXMgdmFsdWUg
Y2FuIGJlIHRob3VnaHQKKyAgLy8gb2YgdGhlIGxhcmdlc3QgdmFsdWUgb2YgYHN0ZDo6ZGlzdGFu
Y2UoYmVnaW4oKSwgZW5kKCkpYCBmb3IgYQorICAvLyBgbm9kZV9oYXNoX3NldDxUPmAuCisgIHVz
aW5nIEJhc2U6Om1heF9zaXplOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OnNpemUoKQorICAvLwor
ICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY3VycmVudGx5IHdpdGhpbiB0aGUg
YG5vZGVfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjpzaXplOworCisgIC8vIG5vZGVfaGFzaF9z
ZXQ6OmNsZWFyKCkKKyAgLy8KKyAgLy8gUmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSB0aGUgYG5v
ZGVfaGFzaF9zZXRgLiBJbnZhbGlkYXRlcyBhbnkgcmVmZXJlbmNlcywKKyAgLy8gcG9pbnRlcnMs
IG9yIGl0ZXJhdG9ycyByZWZlcnJpbmcgdG8gY29udGFpbmVkIGVsZW1lbnRzLgorICAvLworICAv
LyBOT1RFOiB0aGlzIG9wZXJhdGlvbiBtYXkgc2hyaW5rIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlci4g
VG8gYXZvaWQgc2hyaW5raW5nCisgIC8vIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBjYWxsIGBlcmFz
ZShiZWdpbigpLCBlbmQoKSlgLgorICB1c2luZyBCYXNlOjpjbGVhcjsKKworICAvLyBub2RlX2hh
c2hfc2V0OjplcmFzZSgpCisgIC8vCisgIC8vIEVyYXNlcyBlbGVtZW50cyB3aXRoaW4gdGhlIGBu
b2RlX2hhc2hfc2V0YC4gRXJhc2luZyBkb2VzIG5vdCB0cmlnZ2VyIGEKKyAgLy8gcmVoYXNoLiBP
dmVybG9hZHMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgLy8KKyAgLy8gdm9pZCBlcmFzZShjb25zdF9p
dGVyYXRvciBwb3MpOgorICAvLworICAvLyAgIEVyYXNlcyB0aGUgZWxlbWVudCBhdCBgcG9zaXRp
b25gIG9mIHRoZSBgbm9kZV9oYXNoX3NldGAsIHJldHVybmluZworICAvLyAgIGB2b2lkYC4KKyAg
Ly8KKyAgLy8gICBOT1RFOiB0aGlzIHJldHVybiBiZWhhdmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0
aGF0IG9mIFNUTCBjb250YWluZXJzIGluCisgIC8vICAgZ2VuZXJhbCBhbmQgYHN0ZDo6dW5vcmRl
cmVkX21hcGAgaW4gcGFydGljdWxhci4KKyAgLy8KKyAgLy8gaXRlcmF0b3IgZXJhc2UoY29uc3Rf
aXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEVyYXNl
cyB0aGUgZWxlbWVudHMgaW4gdGhlIG9wZW4gaW50ZXJ2YWwgW2BmaXJzdGAsIGBsYXN0YCksIHJl
dHVybmluZyBhbgorICAvLyAgIGl0ZXJhdG9yIHBvaW50aW5nIHRvIGBsYXN0YC4KKyAgLy8KKyAg
Ly8gc2l6ZV90eXBlIGVyYXNlKGNvbnN0IGtleV90eXBlJiBrZXkpOgorICAvLworICAvLyAgIEVy
YXNlcyB0aGUgZWxlbWVudCB3aXRoIHRoZSBtYXRjaGluZyBrZXksIGlmIGl0IGV4aXN0cy4KKyAg
dXNpbmcgQmFzZTo6ZXJhc2U7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6aW5zZXJ0KCkKKyAgLy8K
KyAgLy8gSW5zZXJ0cyBhbiBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgaW50byB0aGUg
YG5vZGVfaGFzaF9zZXRgLAorICAvLyByZXR1cm5pbmcgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8g
dGhlIG5ld2x5IGluc2VydGVkIGVsZW1lbnQsIHByb3ZpZGVkIHRoYXQKKyAgLy8gYW4gZWxlbWVu
dCB3aXRoIHRoZSBnaXZlbiBrZXkgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4gSWYgcmVoYXNoaW5n
IG9jY3VycworICAvLyBkdWUgdG8gdGhlIGluc2VydGlvbiwgYWxsIGl0ZXJhdG9ycyBhcmUgaW52
YWxpZGF0ZWQuIE92ZXJsb2FkcyBhcmUgbGlzdGVkCisgIC8vIGJlbG93LgorICAvLworICAvLyBz
dGQ6OnBhaXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0KGNvbnN0IFQmIHZhbHVlKToKKyAgLy8KKyAg
Ly8gICBJbnNlcnRzIGEgdmFsdWUgaW50byB0aGUgYG5vZGVfaGFzaF9zZXRgLiBSZXR1cm5zIGEg
cGFpciBjb25zaXN0aW5nIG9mIGFuCisgIC8vICAgaXRlcmF0b3IgdG8gdGhlIGluc2VydGVkIGVs
ZW1lbnQgKG9yIHRvIHRoZSBlbGVtZW50IHRoYXQgcHJldmVudGVkIHRoZQorICAvLyAgIGluc2Vy
dGlvbikgYW5kIGEgYm9vbCBkZW5vdGluZyB3aGV0aGVyIHRoZSBpbnNlcnRpb24gdG9vayBwbGFj
ZS4KKyAgLy8KKyAgLy8gc3RkOjpwYWlyPGl0ZXJhdG9yLGJvb2w+IGluc2VydChUJiYgdmFsdWUp
OgorICAvLworICAvLyAgIEluc2VydHMgYSBtb3ZlYWJsZSB2YWx1ZSBpbnRvIHRoZSBgbm9kZV9o
YXNoX3NldGAuIFJldHVybnMgYSBwYWlyCisgIC8vICAgY29uc2lzdGluZyBvZiBhbiBpdGVyYXRv
ciB0byB0aGUgaW5zZXJ0ZWQgZWxlbWVudCAob3IgdG8gdGhlIGVsZW1lbnQgdGhhdAorICAvLyAg
IHByZXZlbnRlZCB0aGUgaW5zZXJ0aW9uKSBhbmQgYSBib29sIGRlbm90aW5nIHdoZXRoZXIgdGhl
IGluc2VydGlvbiB0b29rCisgIC8vICAgcGxhY2UuCisgIC8vCisgIC8vIGl0ZXJhdG9yIGluc2Vy
dChjb25zdF9pdGVyYXRvciBoaW50LCBjb25zdCBUJiB2YWx1ZSk6CisgIC8vIGl0ZXJhdG9yIGlu
c2VydChjb25zdF9pdGVyYXRvciBoaW50LCBUJiYgdmFsdWUpOgorICAvLworICAvLyAgIEluc2Vy
dHMgYSB2YWx1ZSwgdXNpbmcgdGhlIHBvc2l0aW9uIG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5n
IHN1Z2dlc3Rpb24KKyAgLy8gICBmb3Igd2hlcmUgdG8gYmVnaW4gdGhlIGluc2VydGlvbiBzZWFy
Y2guIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlCisgIC8vICAgaW5zZXJ0ZWQgZWxlbWVudCwg
b3IgdG8gdGhlIGV4aXN0aW5nIGVsZW1lbnQgdGhhdCBwcmV2ZW50ZWQgdGhlCisgIC8vICAgaW5z
ZXJ0aW9uLgorICAvLworICAvLyB2b2lkIGluc2VydChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1
dEl0ZXJhdG9yIGxhc3QpOgorICAvLworICAvLyAgIEluc2VydHMgYSByYW5nZSBvZiB2YWx1ZXMg
W2BmaXJzdGAsIGBsYXN0YCkuCisgIC8vCisgIC8vICAgTk9URTogQWx0aG91Z2ggdGhlIFNUTCBk
b2VzIG5vdCBzcGVjaWZ5IHdoaWNoIGVsZW1lbnQgbWF5IGJlIGluc2VydGVkIGlmCisgIC8vICAg
bXVsdGlwbGUga2V5cyBjb21wYXJlIGVxdWl2YWxlbnRseSwgZm9yIGBub2RlX2hhc2hfc2V0YCB3
ZSBndWFyYW50ZWUgdGhlCisgIC8vICAgZmlyc3QgbWF0Y2ggaXMgaW5zZXJ0ZWQuCisgIC8vCisg
IC8vIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpbGlzdCk6CisgIC8vCisg
IC8vICAgSW5zZXJ0cyB0aGUgZWxlbWVudHMgd2l0aGluIHRoZSBpbml0aWFsaXplciBsaXN0IGBp
bGlzdGAuCisgIC8vCisgIC8vICAgTk9URTogQWx0aG91Z2ggdGhlIFNUTCBkb2VzIG5vdCBzcGVj
aWZ5IHdoaWNoIGVsZW1lbnQgbWF5IGJlIGluc2VydGVkIGlmCisgIC8vICAgbXVsdGlwbGUga2V5
cyBjb21wYXJlIGVxdWl2YWxlbnRseSB3aXRoaW4gdGhlIGluaXRpYWxpemVyIGxpc3QsIGZvcgor
ICAvLyAgIGBub2RlX2hhc2hfc2V0YCB3ZSBndWFyYW50ZWUgdGhlIGZpcnN0IG1hdGNoIGlzIGlu
c2VydGVkLgorICB1c2luZyBCYXNlOjppbnNlcnQ7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6ZW1w
bGFjZSgpCisgIC8vCisgIC8vIEluc2VydHMgYW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZh
bHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1wbGFjZQorICAvLyB3aXRoaW4gdGhlIGBub2RlX2hh
c2hfc2V0YCwgcHJvdmlkZWQgdGhhdCBubyBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGtleQorICAv
LyBhbHJlYWR5IGV4aXN0cy4KKyAgLy8KKyAgLy8gVGhlIGVsZW1lbnQgbWF5IGJlIGNvbnN0cnVj
dGVkIGV2ZW4gaWYgdGhlcmUgYWxyZWFkeSBpcyBhbiBlbGVtZW50IHdpdGggdGhlCisgIC8vIGtl
eSBpbiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBl
bGVtZW50IHdpbGwgYmUKKyAgLy8gZGVzdHJveWVkIGltbWVkaWF0ZWx5LiBQcmVmZXIgYHRyeV9l
bXBsYWNlKClgIHVubGVzcyB5b3VyIGtleSBpcyBub3QKKyAgLy8gY29weWFibGUgb3IgbW92ZWFi
bGUuCisgIC8vCisgIC8vIElmIHJlaGFzaGluZyBvY2N1cnMgZHVlIHRvIHRoZSBpbnNlcnRpb24s
IGFsbCBpdGVyYXRvcnMgYXJlIGludmFsaWRhdGVkLgorICB1c2luZyBCYXNlOjplbXBsYWNlOwor
CisgIC8vIG5vZGVfaGFzaF9zZXQ6OmVtcGxhY2VfaGludCgpCisgIC8vCisgIC8vIEluc2VydHMg
YW4gZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGJ5IGNvbnN0cnVjdGluZyBpdCBpbi1w
bGFjZQorICAvLyB3aXRoaW4gdGhlIGBub2RlX2hhc2hfc2V0YCwgdXNpbmcgdGhlIHBvc2l0aW9u
IG9mIGBoaW50YCBhcyBhIG5vbi1iaW5kaW5nCisgIC8vIHN1Z2dlc3Rpb24gZm9yIHdoZXJlIHRv
IGJlZ2luIHRoZSBpbnNlcnRpb24gc2VhcmNoLCBhbmQgb25seSBpbnNlcnRzCisgIC8vIHByb3Zp
ZGVkIHRoYXQgbm8gZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBrZXkgYWxyZWFkeSBleGlzdHMuCisg
IC8vCisgIC8vIFRoZSBlbGVtZW50IG1heSBiZSBjb25zdHJ1Y3RlZCBldmVuIGlmIHRoZXJlIGFs
cmVhZHkgaXMgYW4gZWxlbWVudCB3aXRoIHRoZQorICAvLyBrZXkgaW4gdGhlIGNvbnRhaW5lciwg
aW4gd2hpY2ggY2FzZSB0aGUgbmV3bHkgY29uc3RydWN0ZWQgZWxlbWVudCB3aWxsIGJlCisgIC8v
IGRlc3Ryb3llZCBpbW1lZGlhdGVseS4gUHJlZmVyIGB0cnlfZW1wbGFjZSgpYCB1bmxlc3MgeW91
ciBrZXkgaXMgbm90CisgIC8vIGNvcHlhYmxlIG9yIG1vdmVhYmxlLgorICAvLworICAvLyBJZiBy
ZWhhc2hpbmcgb2NjdXJzIGR1ZSB0byB0aGUgaW5zZXJ0aW9uLCBhbGwgaXRlcmF0b3JzIGFyZSBp
bnZhbGlkYXRlZC4KKyAgdXNpbmcgQmFzZTo6ZW1wbGFjZV9oaW50OworCisgIC8vIG5vZGVfaGFz
aF9zZXQ6OmV4dHJhY3QoKQorICAvLworICAvLyBFeHRyYWN0cyB0aGUgaW5kaWNhdGVkIGVsZW1l
bnQsIGVyYXNpbmcgaXQgaW4gdGhlIHByb2Nlc3MsIGFuZCByZXR1cm5zIGl0CisgIC8vIGFzIGEg
QysrMTctY29tcGF0aWJsZSBub2RlIGhhbmRsZS4gT3ZlcmxvYWRzIGFyZSBsaXN0ZWQgYmVsb3cu
CisgIC8vCisgIC8vIG5vZGVfdHlwZSBleHRyYWN0KGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKToK
KyAgLy8KKyAgLy8gICBFeHRyYWN0cyB0aGUgZWxlbWVudCBhdCB0aGUgaW5kaWNhdGVkIHBvc2l0
aW9uIGFuZCByZXR1cm5zIGEgbm9kZSBoYW5kbGUKKyAgLy8gICBvd25pbmcgdGhhdCBleHRyYWN0
ZWQgZGF0YS4KKyAgLy8KKyAgLy8gbm9kZV90eXBlIGV4dHJhY3QoY29uc3Qga2V5X3R5cGUmIHgp
OgorICAvLworICAvLyAgIEV4dHJhY3RzIHRoZSBlbGVtZW50IHdpdGggdGhlIGtleSBtYXRjaGlu
ZyB0aGUgcGFzc2VkIGtleSB2YWx1ZSBhbmQKKyAgLy8gICByZXR1cm5zIGEgbm9kZSBoYW5kbGUg
b3duaW5nIHRoYXQgZXh0cmFjdGVkIGRhdGEuIElmIHRoZSBgbm9kZV9oYXNoX3NldGAKKyAgLy8g
ICBkb2VzIG5vdCBjb250YWluIGFuIGVsZW1lbnQgd2l0aCBhIG1hdGNoaW5nIGtleSwgdGhpcyBm
dW5jdGlvbiByZXR1cm5zIGFuCisgIC8vIGVtcHR5IG5vZGUgaGFuZGxlLgorICB1c2luZyBCYXNl
OjpleHRyYWN0OworCisgIC8vIG5vZGVfaGFzaF9zZXQ6Om1lcmdlKCkKKyAgLy8KKyAgLy8gRXh0
cmFjdHMgZWxlbWVudHMgZnJvbSBhIGdpdmVuIGBzb3VyY2VgIGZsYXQgaGFzaCBtYXAgaW50byB0
aGlzCisgIC8vIGBub2RlX2hhc2hfc2V0YC4gSWYgdGhlIGRlc3RpbmF0aW9uIGBub2RlX2hhc2hf
c2V0YCBhbHJlYWR5IGNvbnRhaW5zIGFuCisgIC8vIGVsZW1lbnQgd2l0aCBhbiBlcXVpdmFsZW50
IGtleSwgdGhhdCBlbGVtZW50IGlzIG5vdCBleHRyYWN0ZWQuCisgIHVzaW5nIEJhc2U6Om1lcmdl
OworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OnN3YXAobm9kZV9oYXNoX3NldCYgb3RoZXIpCisgIC8v
CisgIC8vIEV4Y2hhbmdlcyB0aGUgY29udGVudHMgb2YgdGhpcyBgbm9kZV9oYXNoX3NldGAgd2l0
aCB0aG9zZSBvZiB0aGUgYG90aGVyYAorICAvLyBmbGF0IGhhc2ggbWFwLCBhdm9pZGluZyBpbnZv
Y2F0aW9uIG9mIGFueSBtb3ZlLCBjb3B5LCBvciBzd2FwIG9wZXJhdGlvbnMgb24KKyAgLy8gaW5k
aXZpZHVhbCBlbGVtZW50cy4KKyAgLy8KKyAgLy8gQWxsIGl0ZXJhdG9ycyBhbmQgcmVmZXJlbmNl
cyBvbiB0aGUgYG5vZGVfaGFzaF9zZXRgIHJlbWFpbiB2YWxpZCwgZXhjZXB0aW5nCisgIC8vIGZv
ciB0aGUgcGFzdC10aGUtZW5kIGl0ZXJhdG9yLCB3aGljaCBpcyBpbnZhbGlkYXRlZC4KKyAgLy8K
KyAgLy8gYHN3YXAoKWAgcmVxdWlyZXMgdGhhdCB0aGUgZmxhdCBoYXNoIHNldCdzIGhhc2hpbmcg
YW5kIGtleSBlcXVpdmFsZW5jZQorICAvLyBmdW5jdGlvbnMgYmUgU3dhcHBhYmxlLCBhbmQgYXJl
IGV4Y2hhZ2VkIHVzaW5nIHVucXVhbGlmaWVkIGNhbGxzIHRvCisgIC8vIG5vbi1tZW1iZXIgYHN3
YXAoKWAuIElmIHRoZSBtYXAncyBhbGxvY2F0b3IgaGFzCisgIC8vIGBzdGQ6OmFsbG9jYXRvcl90
cmFpdHM8YWxsb2NhdG9yX3R5cGU+Ojpwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA6OnZhbHVl
YAorICAvLyBzZXQgdG8gYHRydWVgLCB0aGUgYWxsb2NhdG9ycyBhcmUgYWxzbyBleGNoYW5nZWQg
dXNpbmcgYW4gdW5xdWFsaWZpZWQgY2FsbAorICAvLyB0byBub24tbWVtYmVyIGBzd2FwKClgOyBv
dGhlcndpc2UsIHRoZSBhbGxvY2F0b3JzIGFyZSBub3Qgc3dhcHBlZC4KKyAgdXNpbmcgQmFzZTo6
c3dhcDsKKworICAvLyBub2RlX2hhc2hfc2V0OjpyZWhhc2goY291bnQpCisgIC8vCisgIC8vIFJl
aGFzaGVzIHRoZSBgbm9kZV9oYXNoX3NldGAsIHNldHRpbmcgdGhlIG51bWJlciBvZiBzbG90cyB0
byBiZSBhdCBsZWFzdAorICAvLyB0aGUgcGFzc2VkIHZhbHVlLiBJZiB0aGUgbmV3IG51bWJlciBv
ZiBzbG90cyBpbmNyZWFzZXMgdGhlIGxvYWQgZmFjdG9yIG1vcmUKKyAgLy8gdGhhbiB0aGUgY3Vy
cmVudCBtYXhpbXVtIGxvYWQgZmFjdG9yCisgIC8vIChgY291bnRgIDwgYHNpemUoKWAgLyBgbWF4
X2xvYWRfZmFjdG9yKClgKSwgdGhlbiB0aGUgbmV3IG51bWJlciBvZiBzbG90cworICAvLyB3aWxs
IGJlIGF0IGxlYXN0IGBzaXplKClgIC8gYG1heF9sb2FkX2ZhY3RvcigpYC4KKyAgLy8KKyAgLy8g
VG8gZm9yY2UgYSByZWhhc2gsIHBhc3MgcmVoYXNoKDApLgorICAvLworICAvLyBOT1RFOiB1bmxp
a2UgYmVoYXZpb3IgaW4gYHN0ZDo6dW5vcmRlcmVkX3NldGAsIHJlZmVyZW5jZXMgYXJlIGFsc28K
KyAgLy8gaW52YWxpZGF0ZWQgdXBvbiBhIGByZWhhc2goKWAuCisgIHVzaW5nIEJhc2U6OnJlaGFz
aDsKKworICAvLyBub2RlX2hhc2hfc2V0OjpyZXNlcnZlKGNvdW50KQorICAvLworICAvLyBTZXRz
IHRoZSBudW1iZXIgb2Ygc2xvdHMgaW4gdGhlIGBub2RlX2hhc2hfc2V0YCB0byB0aGUgbnVtYmVy
IG5lZWRlZCB0bworICAvLyBhY2NvbW1vZGF0ZSBhdCBsZWFzdCBgY291bnRgIHRvdGFsIGVsZW1l
bnRzIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBjdXJyZW50CisgIC8vIG1heGltdW0gbG9hZCBmYWN0
b3IsIGFuZCBtYXkgcmVoYXNoIHRoZSBjb250YWluZXIgaWYgbmVlZGVkLgorICB1c2luZyBCYXNl
OjpyZXNlcnZlOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmNvbnRhaW5zKCkKKyAgLy8KKyAgLy8g
RGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGVsZW1lbnQgY29tcGFyaW5nIGVxdWFsIHRvIHRoZSBnaXZl
biBga2V5YCBleGlzdHMKKyAgLy8gd2l0aGluIHRoZSBgbm9kZV9oYXNoX3NldGAsIHJldHVybmlu
ZyBgdHJ1ZWAgaWYgc28gb3IgYGZhbHNlYCBvdGhlcndpc2UuCisgIHVzaW5nIEJhc2U6OmNvbnRh
aW5zOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmNvdW50KGNvbnN0IEtleSYga2V5KSBjb25zdAor
ICAvLworICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29tcGFyaW5nIGVxdWFs
IHRvIHRoZSBnaXZlbiBga2V5YCB3aXRoaW4KKyAgLy8gdGhlIGBub2RlX2hhc2hfc2V0YC4gbm90
ZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZWl0aGVyIGAxYCBvciBgMGAKKyAgLy8g
c2luY2UgZHVwbGljYXRlIGVsZW1lbnRzIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gYSBgbm9kZV9o
YXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmNvdW50OworCisgIC8vIG5vZGVfaGFzaF9zZXQ6OmVx
dWFsX3JhbmdlKCkKKyAgLy8KKyAgLy8gUmV0dXJucyBhIGNsb3NlZCByYW5nZSBbZmlyc3QsIGxh
c3RdLCBkZWZpbmVkIGJ5IGEgYHN0ZDo6cGFpcmAgb2YgdHdvCisgIC8vIGl0ZXJhdG9ycywgY29u
dGFpbmluZyBhbGwgZWxlbWVudHMgd2l0aCB0aGUgcGFzc2VkIGtleSBpbiB0aGUKKyAgLy8gYG5v
ZGVfaGFzaF9zZXRgLgorICB1c2luZyBCYXNlOjplcXVhbF9yYW5nZTsKKworICAvLyBub2RlX2hh
c2hfc2V0OjpmaW5kKCkKKyAgLy8KKyAgLy8gRmluZHMgYW4gZWxlbWVudCB3aXRoIHRoZSBwYXNz
ZWQgYGtleWAgd2l0aGluIHRoZSBgbm9kZV9oYXNoX3NldGAuCisgIHVzaW5nIEJhc2U6OmZpbmQ7
CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6YnVja2V0X2NvdW50KCkKKyAgLy8KKyAgLy8gUmV0dXJu
cyB0aGUgbnVtYmVyIG9mICJidWNrZXRzIiB3aXRoaW4gdGhlIGBub2RlX2hhc2hfc2V0YC4gTm90
ZSB0aGF0CisgIC8vIGJlY2F1c2UgYSBmbGF0IGhhc2ggbWFwIGNvbnRhaW5zIGFsbCBlbGVtZW50
cyB3aXRoaW4gaXRzIGludGVybmFsIHN0b3JhZ2UsCisgIC8vIHRoaXMgdmFsdWUgc2ltcGx5IGVx
dWFscyB0aGUgY3VycmVudCBjYXBhY2l0eSBvZiB0aGUgYG5vZGVfaGFzaF9zZXRgLgorICB1c2lu
ZyBCYXNlOjpidWNrZXRfY291bnQ7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6bG9hZF9mYWN0b3Io
KQorICAvLworICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IGxvYWQgZmFjdG9yIG9mIHRoZSBgbm9k
ZV9oYXNoX3NldGAgKHRoZSBhdmVyYWdlIG51bWJlcgorICAvLyBvZiBzbG90cyBvY2N1cGllZCB3
aXRoIGEgdmFsdWUgd2l0aGluIHRoZSBoYXNoIG1hcCkuCisgIHVzaW5nIEJhc2U6OmxvYWRfZmFj
dG9yOworCisgIC8vIG5vZGVfaGFzaF9zZXQ6Om1heF9sb2FkX2ZhY3RvcigpCisgIC8vCisgIC8v
IE1hbmFnZXMgdGhlIG1heGltdW0gbG9hZCBmYWN0b3Igb2YgdGhlIGBub2RlX2hhc2hfc2V0YC4g
T3ZlcmxvYWRzIGFyZQorICAvLyBsaXN0ZWQgYmVsb3cuCisgIC8vCisgIC8vIGZsb2F0IG5vZGVf
aGFzaF9zZXQ6Om1heF9sb2FkX2ZhY3RvcigpCisgIC8vCisgIC8vICAgUmV0dXJucyB0aGUgY3Vy
cmVudCBtYXhpbXVtIGxvYWQgZmFjdG9yIG9mIHRoZSBgbm9kZV9oYXNoX3NldGAuCisgIC8vCisg
IC8vIHZvaWQgbm9kZV9oYXNoX3NldDo6bWF4X2xvYWRfZmFjdG9yKGZsb2F0IG1sKQorICAvLwor
ICAvLyAgIFNldHMgdGhlIG1heGltdW0gbG9hZCBmYWN0b3Igb2YgdGhlIGBub2RlX2hhc2hfc2V0
YCB0byB0aGUgcGFzc2VkIHZhbHVlLgorICAvLworICAvLyAgIE5PVEU6IFRoaXMgb3ZlcmxvYWQg
aXMgcHJvdmlkZWQgb25seSBmb3IgQVBJIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgU1RMOworICAv
LyAgIGBub2RlX2hhc2hfc2V0YCB3aWxsIGlnbm9yZSBhbnkgc2V0IGxvYWQgZmFjdG9yIGFuZCBt
YW5hZ2UgaXRzIHJlaGFzaGluZworICAvLyAgIGludGVybmFsbHkgYXMgYW4gaW1wbGVtZW50YXRp
b24gZGV0YWlsLgorICB1c2luZyBCYXNlOjptYXhfbG9hZF9mYWN0b3I7CisKKyAgLy8gbm9kZV9o
YXNoX3NldDo6Z2V0X2FsbG9jYXRvcigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGFsbG9jYXRv
ciBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBgbm9kZV9oYXNoX3NldGAuCisgIHVzaW5n
IEJhc2U6OmdldF9hbGxvY2F0b3I7CisKKyAgLy8gbm9kZV9oYXNoX3NldDo6aGFzaF9mdW5jdGlv
bigpCisgIC8vCisgIC8vIFJldHVybnMgdGhlIGhhc2hpbmcgZnVuY3Rpb24gdXNlZCB0byBoYXNo
IHRoZSBrZXlzIHdpdGhpbiB0aGlzCisgIC8vIGBub2RlX2hhc2hfc2V0YC4KKyAgdXNpbmcgQmFz
ZTo6aGFzaF9mdW5jdGlvbjsKKworICAvLyBub2RlX2hhc2hfc2V0OjprZXlfZXEoKQorICAvLwor
ICAvLyBSZXR1cm5zIHRoZSBmdW5jdGlvbiB1c2VkIGZvciBjb21wYXJpbmcga2V5cyBlcXVhbGl0
eS4KKyAgdXNpbmcgQmFzZTo6a2V5X2VxOworCisgIEFCU0xfREVQUkVDQVRFRCgiQ2FsbCBgaGFz
aF9mdW5jdGlvbigpYCBpbnN0ZWFkLiIpCisgIHR5cGVuYW1lIEJhc2U6Omhhc2hlciBoYXNoX2Z1
bmN0KCkgeyByZXR1cm4gdGhpcy0+aGFzaF9mdW5jdGlvbigpOyB9CisKKyAgQUJTTF9ERVBSRUNB
VEVEKCJDYWxsIGByZWhhc2goKWAgaW5zdGVhZC4iKQorICB2b2lkIHJlc2l6ZSh0eXBlbmFtZSBC
YXNlOjpzaXplX3R5cGUgaGludCkgeyB0aGlzLT5yZWhhc2goaGludCk7IH0KK307CisKK25hbWVz
cGFjZSBjb250YWluZXJfaW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBO
b2RlSGFzaFNldFBvbGljeQorICAgIDogYWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpub2RlX2hh
c2hfcG9saWN5PFQmLCBOb2RlSGFzaFNldFBvbGljeTxUPj4geworICB1c2luZyBrZXlfdHlwZSA9
IFQ7CisgIHVzaW5nIGluaXRfdHlwZSA9IFQ7CisgIHVzaW5nIGNvbnN0YW50X2l0ZXJhdG9ycyA9
IHN0ZDo6dHJ1ZV90eXBlOworCisgIHRlbXBsYXRlIDxjbGFzcyBBbGxvY2F0b3IsIGNsYXNzLi4u
IEFyZ3M+CisgIHN0YXRpYyBUKiBuZXdfZWxlbWVudChBbGxvY2F0b3IqIGFsbG9jLCBBcmdzJiYu
Li4gYXJncykgeworICAgIHVzaW5nIFZhbHVlQWxsb2MgPQorICAgICAgICB0eXBlbmFtZSBhYnNs
OjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OnRlbXBsYXRlIHJlYmluZF9hbGxvYzxUPjsK
KyAgICBWYWx1ZUFsbG9jIHZhbHVlX2FsbG9jKCphbGxvYyk7CisgICAgVCogcmVzID0gYWJzbDo6
YWxsb2NhdG9yX3RyYWl0czxWYWx1ZUFsbG9jPjo6YWxsb2NhdGUodmFsdWVfYWxsb2MsIDEpOwor
ICAgIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8VmFsdWVBbGxvYz46OmNvbnN0cnVjdCh2YWx1ZV9h
bGxvYywgcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIHJldHVybiByZXM7CisgIH0K
KworICB0ZW1wbGF0ZSA8Y2xhc3MgQWxsb2NhdG9yPgorICBzdGF0aWMgdm9pZCBkZWxldGVfZWxl
bWVudChBbGxvY2F0b3IqIGFsbG9jLCBUKiBlbGVtKSB7CisgICAgdXNpbmcgVmFsdWVBbGxvYyA9
CisgICAgICAgIHR5cGVuYW1lIGFic2w6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6dGVt
cGxhdGUgcmViaW5kX2FsbG9jPFQ+OworICAgIFZhbHVlQWxsb2MgdmFsdWVfYWxsb2MoKmFsbG9j
KTsKKyAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPFZhbHVlQWxsb2M+OjpkZXN0cm95KHZhbHVl
X2FsbG9jLCBlbGVtKTsKKyAgICBhYnNsOjphbGxvY2F0b3JfdHJhaXRzPFZhbHVlQWxsb2M+Ojpk
ZWFsbG9jYXRlKHZhbHVlX2FsbG9jLCBlbGVtLCAxKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFz
cyBGLCBjbGFzcy4uLiBBcmdzPgorICBzdGF0aWMgZGVjbHR5cGUoYWJzbDo6Y29udGFpbmVyX2lu
dGVybmFsOjpEZWNvbXBvc2VWYWx1ZSgKKyAgICAgIHN0ZDo6ZGVjbHZhbDxGPigpLCBzdGQ6OmRl
Y2x2YWw8QXJncz4oKS4uLikpCisgIGFwcGx5KEYmJiBmLCBBcmdzJiYuLi4gYXJncykgeworICAg
IHJldHVybiBhYnNsOjpjb250YWluZXJfaW50ZXJuYWw6OkRlY29tcG9zZVZhbHVlKAorICAgICAg
ICBzdGQ6OmZvcndhcmQ8Rj4oZiksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0K
KworICBzdGF0aWMgc2l6ZV90IGVsZW1lbnRfc3BhY2VfdXNlZChjb25zdCBUKikgeyByZXR1cm4g
c2l6ZW9mKFQpOyB9Cit9OworfSAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lcl9pbnRlcm5hbAorfSAg
Ly8gbmFtZXNwYWNlIGFic2wKKyNlbmRpZiAgLy8gQUJTTF9DT05UQUlORVJfTk9ERV9IQVNIX1NF
VF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvY29udGFpbmVyL25vZGVfaGFzaF9zZXRfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U0OThm
MGY3NzliNGQ2ZTc2NGVjYWZjYTYyYjFjYjA4Y2NmZDVhZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2NvbnRhaW5lci9ub2RlX2hhc2hfc2V0X3Rlc3QuY2MKQEAgLTAsMCArMSwxMDMgQEAKKy8v
IENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9ub2RlX2hhc2hfc2V0LmgiCisKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbnRl
cm5hbC91bm9yZGVyZWRfc2V0X2NvbnN0cnVjdG9yX3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2Nv
bnRhaW5lci9pbnRlcm5hbC91bm9yZGVyZWRfc2V0X2xvb2t1cF90ZXN0LmgiCisjaW5jbHVkZSAi
YWJzbC9jb250YWluZXIvaW50ZXJuYWwvdW5vcmRlcmVkX3NldF9tb2RpZmllcnNfdGVzdC5oIgor
CituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgY29udGFpbmVyX2ludGVybmFsIHsKK25hbWVz
cGFjZSB7Cit1c2luZyA6OmFic2w6OmNvbnRhaW5lcl9pbnRlcm5hbDo6aGFzaF9pbnRlcm5hbDo6
RW51bTsKK3VzaW5nIDo6YWJzbDo6Y29udGFpbmVyX2ludGVybmFsOjpoYXNoX2ludGVybmFsOjpF
bnVtQ2xhc3M7Cit1c2luZyA6OnRlc3Rpbmc6OlBvaW50ZWU7Cit1c2luZyA6OnRlc3Rpbmc6OlVu
b3JkZXJlZEVsZW1lbnRzQXJlOworCit1c2luZyBTZXRUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8
CisgICAgbm9kZV9oYXNoX3NldDxpbnQsIFN0YXRlZnVsVGVzdGluZ0hhc2gsIFN0YXRlZnVsVGVz
dGluZ0VxdWFsLCBBbGxvYzxpbnQ+PiwKKyAgICBub2RlX2hhc2hfc2V0PHN0ZDo6c3RyaW5nLCBT
dGF0ZWZ1bFRlc3RpbmdIYXNoLCBTdGF0ZWZ1bFRlc3RpbmdFcXVhbCwKKyAgICAgICAgICAgICAg
ICAgIEFsbG9jPGludD4+LAorICAgIG5vZGVfaGFzaF9zZXQ8RW51bSwgU3RhdGVmdWxUZXN0aW5n
SGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWwsIEFsbG9jPEVudW0+PiwKKyAgICBub2RlX2hhc2hf
c2V0PEVudW1DbGFzcywgU3RhdGVmdWxUZXN0aW5nSGFzaCwgU3RhdGVmdWxUZXN0aW5nRXF1YWws
CisgICAgICAgICAgICAgICAgICBBbGxvYzxFbnVtQ2xhc3M+Pj47CisKK0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKE5vZGVIYXNoU2V0LCBDb25zdHJ1Y3RvclRlc3QsIFNldFR5cGVzKTsK
K0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE5vZGVIYXNoU2V0LCBMb29rdXBUZXN0LCBT
ZXRUeXBlcyk7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChOb2RlSGFzaFNldCwgTW9k
aWZpZXJzVGVzdCwgU2V0VHlwZXMpOworCitURVNUKE5vZGVIYXNoU2V0LCBNb3ZlYWJsZU5vdENv
cHlhYmxlQ29tcGlsZXMpIHsKKyAgbm9kZV9oYXNoX3NldDxzdGQ6OnVuaXF1ZV9wdHI8dm9pZCo+
PiB0OworICBub2RlX2hhc2hfc2V0PHN0ZDo6dW5pcXVlX3B0cjx2b2lkKj4+IHU7CisgIHUgPSBz
dGQ6Om1vdmUodCk7Cit9CisKK1RFU1QoTm9kZUhhc2hTZXQsIE1lcmdlRXh0cmFjdEluc2VydCkg
eworICBzdHJ1Y3QgSGFzaCB7CisgICAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPGludD4mIHApIGNvbnN0IHsgcmV0dXJuICpwOyB9CisgIH07CisgIHN0cnVjdCBFcSB7
CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxpbnQ+JiBhLAorICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8aW50PiYgYikgY29uc3Qgewor
ICAgICAgcmV0dXJuICphID09ICpiOworICAgIH0KKyAgfTsKKyAgYWJzbDo6bm9kZV9oYXNoX3Nl
dDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgSGFzaCwgRXE+IHNldDEsIHNldDI7CisgIHNldDEuaW5z
ZXJ0KGFic2w6Om1ha2VfdW5pcXVlPGludD4oNykpOworICBzZXQxLmluc2VydChhYnNsOjptYWtl
X3VuaXF1ZTxpbnQ+KDE3KSk7CisKKyAgc2V0Mi5pbnNlcnQoYWJzbDo6bWFrZV91bmlxdWU8aW50
Pig3KSk7CisgIHNldDIuaW5zZXJ0KGFic2w6Om1ha2VfdW5pcXVlPGludD4oMTkpKTsKKworICBF
WFBFQ1RfVEhBVChzZXQxLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQb2ludGVlKDcpLCBQb2ludGVl
KDE3KSkpOworICBFWFBFQ1RfVEhBVChzZXQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQb2ludGVl
KDcpLCBQb2ludGVlKDE5KSkpOworCisgIHNldDEubWVyZ2Uoc2V0Mik7CisKKyAgRVhQRUNUX1RI
QVQoc2V0MSwgVW5vcmRlcmVkRWxlbWVudHNBcmUoUG9pbnRlZSg3KSwgUG9pbnRlZSgxNyksIFBv
aW50ZWUoMTkpKSk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVsZW1lbnRzQXJlKFBv
aW50ZWUoNykpKTsKKworICBhdXRvIG5vZGUgPSBzZXQxLmV4dHJhY3QoYWJzbDo6bWFrZV91bmlx
dWU8aW50Pig3KSk7CisgIEVYUEVDVF9UUlVFKG5vZGUpOworICBFWFBFQ1RfVEhBVChub2RlLnZh
bHVlKCksIFBvaW50ZWUoNykpOworICBFWFBFQ1RfVEhBVChzZXQxLCBVbm9yZGVyZWRFbGVtZW50
c0FyZShQb2ludGVlKDE3KSwgUG9pbnRlZSgxOSkpKTsKKworICBhdXRvIGluc2VydF9yZXN1bHQg
PSBzZXQyLmluc2VydChzdGQ6Om1vdmUobm9kZSkpOworICBFWFBFQ1RfRkFMU0Uobm9kZSk7Cisg
IEVYUEVDVF9GQUxTRShpbnNlcnRfcmVzdWx0Lmluc2VydGVkKTsKKyAgRVhQRUNUX1RSVUUoaW5z
ZXJ0X3Jlc3VsdC5ub2RlKTsKKyAgRVhQRUNUX1RIQVQoaW5zZXJ0X3Jlc3VsdC5ub2RlLnZhbHVl
KCksIFBvaW50ZWUoNykpOworICBFWFBFQ1RfRVEoKippbnNlcnRfcmVzdWx0LnBvc2l0aW9uLCA3
KTsKKyAgRVhQRUNUX05FKGluc2VydF9yZXN1bHQucG9zaXRpb24tPmdldCgpLCBpbnNlcnRfcmVz
dWx0Lm5vZGUudmFsdWUoKS5nZXQoKSk7CisgIEVYUEVDVF9USEFUKHNldDIsIFVub3JkZXJlZEVs
ZW1lbnRzQXJlKFBvaW50ZWUoNykpKTsKKworICBub2RlID0gc2V0MS5leHRyYWN0KGFic2w6Om1h
a2VfdW5pcXVlPGludD4oMTcpKTsKKyAgRVhQRUNUX1RSVUUobm9kZSk7CisgIEVYUEVDVF9USEFU
KG5vZGUudmFsdWUoKSwgUG9pbnRlZSgxNykpOworICBFWFBFQ1RfVEhBVChzZXQxLCBVbm9yZGVy
ZWRFbGVtZW50c0FyZShQb2ludGVlKDE5KSkpOworCisgIG5vZGUudmFsdWUoKSA9IGFic2w6Om1h
a2VfdW5pcXVlPGludD4oMjMpOworCisgIGluc2VydF9yZXN1bHQgPSBzZXQyLmluc2VydChzdGQ6
Om1vdmUobm9kZSkpOworICBFWFBFQ1RfRkFMU0Uobm9kZSk7CisgIEVYUEVDVF9UUlVFKGluc2Vy
dF9yZXN1bHQuaW5zZXJ0ZWQpOworICBFWFBFQ1RfRkFMU0UoaW5zZXJ0X3Jlc3VsdC5ub2RlKTsK
KyAgRVhQRUNUX0VRKCoqaW5zZXJ0X3Jlc3VsdC5wb3NpdGlvbiwgMjMpOworICBFWFBFQ1RfVEhB
VChzZXQyLCBVbm9yZGVyZWRFbGVtZW50c0FyZShQb2ludGVlKDcpLCBQb2ludGVlKDIzKSkpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBjb250YWluZXJfaW50ZXJuYWwK
K30gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb3B0cy5iemwgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9jb3B0cy5iemwKaW5kZXggMDE2OGFjNWFiZGRjMzlmZjdjNDc4MWZmNWUzZTJlOWJlMGEyMDU3
ZS4uNWM1MDhmMTdkZjk3NDc2MThjYTUyYzVlNGI5MzNmODE4ZWU5YjljOCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvY29wdHMuYnpsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvcHRzLmJ6bApAQCAtMzUsNyArMzUsNiBAQCBH
Q0NfVEVTVF9GTEFHUyA9IFsKICMgRG9jcyBvbiBncm91cHMgb2YgZmxhZ3MgaXMgcHJlY2VkZWQg
YnkgIyMjLgogCiBMTFZNX0ZMQUdTID0gWwotICAgICMgQWxsIHdhcm5pbmdzIGFyZSB0cmVhdGVk
IGFzIGVycm9ycyBieSBpbXBsaWNpdCAtV2Vycm9yIGZsYWcKICAgICAiLVdhbGwiLAogICAgICIt
V2V4dHJhIiwKICAgICAiLVdldmVyeXRoaW5nIiwKQEAgLTU0LDYgKzUzLDEwIEBAIExMVk1fRkxB
R1MgPSBbCiAgICAgIi1Xbm8tcGFja2VkIiwKICAgICAiLVduby1wYWRkZWQiLAogICAgICMjIwor
ICAgICMgR29vZ2xlIHN0eWxlIGRvZXMgbm90IHVzZSB1bnNpZ25lZCBpbnRlZ2VycywgdGhvdWdo
IFNUTCBjb250YWluZXJzCisgICAgIyBoYXZlIHVuc2lnbmVkIHR5cGVzLgorICAgICItV25vLXNp
Z24tY29tcGFyZSIsCisgICAgIyMjCiAgICAgIi1Xbm8tZmxvYXQtY29udmVyc2lvbiIsCiAgICAg
Ii1Xbm8tZmxvYXQtZXF1YWwiLAogICAgICItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKQEAgLTEw
MSw2ICsxMDQsNyBAQCBMTFZNX1RFU1RfRkxBR1MgPSBbCiAgICAgIi1Xbm8tYzk5LWV4dGVuc2lv
bnMiLAogICAgICItV25vLW1pc3Npbmctbm9yZXR1cm4iLAogICAgICItV25vLW1pc3NpbmctcHJv
dG90eXBlcyIsCisgICAgIi1Xbm8tbWlzc2luZy12YXJpYWJsZS1kZWNsYXJhdGlvbnMiLAogICAg
ICItV25vLW51bGwtY29udmVyc2lvbiIsCiAgICAgIi1Xbm8tc2hhZG93IiwKICAgICAiLVduby1z
aGlmdC1zaWduLW92ZXJmbG93IiwKQEAgLTExMiwxMyArMTE2LDE1IEBAIExMVk1fVEVTVF9GTEFH
UyA9IFsKICAgICAiLVduby11bnVzZWQtdGVtcGxhdGUiLAogICAgICItV25vLXVzZWQtYnV0LW1h
cmtlZC11bnVzZWQiLAogICAgICItV25vLXplcm8tYXMtbnVsbC1wb2ludGVyLWNvbnN0YW50IiwK
KyAgICAjIGd0ZXN0IGRlcGVuZHMgb24gdGhpcyBHTlUgZXh0ZW5zaW9uIGJlaW5nIG9mZmVyZWQu
CisgICAgIi1Xbm8tZ251LXplcm8tdmFyaWFkaWMtbWFjcm8tYXJndW1lbnRzIiwKIF0KIAogTVNW
Q19GTEFHUyA9IFsKICAgICAiL1czIiwKLSAgICAiL1dYIiwKICAgICAiL3dkNDAwNSIsICAjIG1h
Y3JvLXJlZGVmaW5pdGlvbgogICAgICIvd2Q0MDY4IiwgICMgdW5rbm93biBwcmFnbWEKKyAgICAi
L3dkNDE4MCIsICAjIHF1YWxpZmllciBhcHBsaWVkIHRvIGZ1bmN0aW9uIHR5cGUgaGFzIG5vIG1l
YW5pbmc7IGlnbm9yZWQKICAgICAiL3dkNDI0NCIsICAjIGNvbnZlcnNpb24gZnJvbSAndHlwZTEn
IHRvICd0eXBlMicsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQogICAgICIvd2Q0MjY3IiwgICMgY29u
dmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICd0eXBlJywgcG9zc2libGUgbG9zcyBvZiBkYXRhCiAg
ICAgIi93ZDQ4MDAiLCAgIyBmb3JjaW5nIHZhbHVlIHRvIGJvb2wgJ3RydWUnIG9yICdmYWxzZScg
KHBlcmZvcm1hbmNlIHdhcm5pbmcpCkBAIC0xNTIsMyArMTU4LDcgQEAgQUJTTF9FWENFUFRJT05T
X0ZMQUcgPSBzZWxlY3QoewogICAgICIvL2Fic2w6d2luZG93cyI6IFsiL1VfSEFTX0VYQ0VQVElP
TlMiLCAiL0RfSEFTX0VYQ0VQVElPTlM9MSIsICIvRUhzYyJdLAogICAgICIvL2NvbmRpdGlvbnM6
ZGVmYXVsdCI6IFsiLWZleGNlcHRpb25zIl0sCiB9KQorCitBQlNMX0VYQ0VQVElPTlNfRkxBR19M
SU5LT1BUUyA9IHNlbGVjdCh7CisgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogW10sCit9KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL0JV
SUxELmduCmluZGV4IGI1MGIwYTZkZGM4MzIxOTY4ZWIxZmExNzYzMjFiYzhlMWY5NzQyNTQuLmQz
NTgyZDZhNDI2Zjc3NTcxNmViMTE3NjJkNTdhMTk5MWIwNGNiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2RlYnVnZ2luZy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvQlVJTEQuZ24KQEAgLTky
LDEwICs5MiwxMCBAQCBzb3VyY2Vfc2V0KCJmYWlsdXJlX3NpZ25hbF9oYW5kbGVyIikgewogICBd
CiAgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfaW5j
bHVkZV9jb25maWciIF0KICAgc291cmNlcyA9IFsKLSAgICAiZmFpbHVyZV9zaWduYWxfaGFuZGxl
ci5jYyIKKyAgICAiZmFpbHVyZV9zaWduYWxfaGFuZGxlci5jYyIsCiAgIF0KICAgcHVibGljID0g
WwotICAgICJmYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmgiCisgICAgImZhaWx1cmVfc2lnbmFsX2hh
bmRsZXIuaCIsCiAgIF0KICAgZGVwcyA9IFsKICAgICAiOmV4YW1pbmVfc3RhY2siLApAQCAtMTI2
LDYgKzEyNiw3IEBAIHNvdXJjZV9zZXQoImRlYnVnZ2luZ19pbnRlcm5hbCIpIHsKICAgXQogICBk
ZXBzID0gWwogICAgICIuLi9iYXNlIiwKKyAgICAiLi4vYmFzZTpjb3JlX2hlYWRlcnMiLAogICAg
ICIuLi9iYXNlOmR5bmFtaWNfYW5ub3RhdGlvbnMiLAogICBdCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZGVtYW5nbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJu
YWwvZGVtYW5nbGUuY2MKaW5kZXggYzljYTJmM2JkYjE3MGU3N2QyOGRlYzE1Nzk1YmE1ODgyOWZi
ODY4YS4uNDgzNTQ0NTliYzg1Zjg2ZGZhMGQzMTllOTc0MTE4OGIzZTlkNjc0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2RlbWFuZ2xlLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVn
Z2luZy9pbnRlcm5hbC9kZW1hbmdsZS5jYwpAQCAtMzQwLDcgKzM0MCw3IEBAIHN0YXRpYyBib29s
IFplcm9Pck1vcmUoUGFyc2VGdW5jIHBhcnNlX2Z1bmMsIFN0YXRlICpzdGF0ZSkgewogfQogCiAv
LyBBcHBlbmQgInN0ciIgYXQgIm91dF9jdXJfaWR4Ii4gIElmIHRoZXJlIGlzIGFuIG92ZXJmbG93
LCBvdXRfY3VyX2lkeCBpcwotLy8gc2V0IHRvIG91dF9lbmRfaWR4KzEuICBUaGUgb3V0cHV0IHN0
ZDo6c3RyaW5nIGlzIGVuc3VyZWQgdG8KKy8vIHNldCB0byBvdXRfZW5kX2lkeCsxLiAgVGhlIG91
dHB1dCBzdHJpbmcgaXMgZW5zdXJlZCB0bwogLy8gYWx3YXlzIHRlcm1pbmF0ZSB3aXRoICdcMCcg
YXMgbG9uZyBhcyB0aGVyZSBpcyBubyBvdmVyZmxvdy4KIHN0YXRpYyB2b2lkIEFwcGVuZChTdGF0
ZSAqc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0IHN0ciwgY29uc3QgaW50IGxlbmd0aCkgewogICBm
b3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC04NDAsNyArODQwLDcgQEAgc3Rh
dGljIGJvb2wgUGFyc2VOdW1iZXIoU3RhdGUgKnN0YXRlLCBpbnQgKm51bWJlcl9vdXQpIHsKIH0K
IAogLy8gRmxvYXRpbmctcG9pbnQgbGl0ZXJhbHMgYXJlIGVuY29kZWQgdXNpbmcgYSBmaXhlZC1s
ZW5ndGggbG93ZXJjYXNlCi0vLyBoZXhhZGVjaW1hbCBzdGQ6OnN0cmluZy4KKy8vIGhleGFkZWNp
bWFsIHN0cmluZy4KIHN0YXRpYyBib29sIFBhcnNlRmxvYXROdW1iZXIoU3RhdGUgKnN0YXRlKSB7
CiAgIENvbXBsZXhpdHlHdWFyZCBndWFyZChzdGF0ZSk7CiAgIGlmIChndWFyZC5Jc1Rvb0NvbXBs
ZXgoKSkgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N0YWNrdHJh
Y2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5jYwppbmRleCA2MWZlZTYxOTBmNTQ1
ODQyYWRjMzYyYzhmY2ZjZWM1YzBlNzU2NThhLi40NjNmYWQyNjljMTZhZmJhM2UzODNlZWQxMjkw
NmM1NDg4NDlmMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5jYwpAQCAtODAsMTEgKzgwLDEzIEBAIEFC
U0xfQVRUUklCVVRFX0FMV0FZU19JTkxJTkUgaW5saW5lIGludCBVbndpbmQodm9pZCoqIHJlc3Vs
dCwgaW50KiBzaXplcywKIAogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCitBQlNMX0FUVFJJ
QlVURV9OT0lOTElORQogaW50IEdldFN0YWNrRnJhbWVzKHZvaWQqKiByZXN1bHQsIGludCogc2l6
ZXMsIGludCBtYXhfZGVwdGgsIGludCBza2lwX2NvdW50KSB7CiAgIHJldHVybiBVbndpbmQ8dHJ1
ZSwgZmFsc2U+KHJlc3VsdCwgc2l6ZXMsIG1heF9kZXB0aCwgc2tpcF9jb3VudCwgbnVsbHB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiB9CiAKK0FCU0xfQVRUUklC
VVRFX05PSU5MSU5FCiBpbnQgR2V0U3RhY2tGcmFtZXNXaXRoQ29udGV4dCh2b2lkKiogcmVzdWx0
LCBpbnQqIHNpemVzLCBpbnQgbWF4X2RlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNraXBfY291bnQsIGNvbnN0IHZvaWQqIHVjLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50KiBtaW5fZHJvcHBlZF9mcmFtZXMpIHsKQEAgLTkyLDExICs5NCwxMyBAQCBp
bnQgR2V0U3RhY2tGcmFtZXNXaXRoQ29udGV4dCh2b2lkKiogcmVzdWx0LCBpbnQqIHNpemVzLCBp
bnQgbWF4X2RlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9kcm9wcGVkX2Zy
YW1lcyk7CiB9CiAKK0FCU0xfQVRUUklCVVRFX05PSU5MSU5FCiBpbnQgR2V0U3RhY2tUcmFjZSh2
b2lkKiogcmVzdWx0LCBpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkgewogICByZXR1cm4g
VW53aW5kPGZhbHNlLCBmYWxzZT4ocmVzdWx0LCBudWxscHRyLCBtYXhfZGVwdGgsIHNraXBfY291
bnQsIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKIH0K
IAorQUJTTF9BVFRSSUJVVEVfTk9JTkxJTkUKIGludCBHZXRTdGFja1RyYWNlV2l0aENvbnRleHQo
dm9pZCoqIHJlc3VsdCwgaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqIHVjLCBpbnQqIG1pbl9kcm9wcGVkX2ZyYW1l
cykgewogICByZXR1cm4gVW53aW5kPGZhbHNlLCB0cnVlPihyZXN1bHQsIG51bGxwdHIsIG1heF9k
ZXB0aCwgc2tpcF9jb3VudCwgdWMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9s
aXplX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplX3Rlc3QuY2MKaW5kZXggNWYy
YWY0N2VlNDVkNjU0YjQyMmQwZTg2NGZiZjA2MGNiNWM1MTA3NS4uODAyOWZiZTlkMmU2ZmI3MjA4
MTZlZjA0MzVlMDcwOTljYzM4NzI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvZGVidWdnaW5nL3N5bWJv
bGl6ZV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9zeW1ib2xpemVfdGVzdC5jYwpAQCAt
MzIxLDcgKzMyMSw3IEBAIFRFU1QoU3ltYm9saXplLCBTeW1ib2xpemVXaXRoTXVsdGlwbGVNYXBz
KSB7CiAgIH0KIH0KIAotLy8gQXBwZW5kcyBzdGQ6OnN0cmluZygqYXJncy0+YXJnKSB0byBhcmdz
LT5zeW1ib2xfYnVmLgorLy8gQXBwZW5kcyBzdHJpbmcoKmFyZ3MtPmFyZykgdG8gYXJncy0+c3lt
Ym9sX2J1Zi4KIHN0YXRpYyB2b2lkIER1bW15U3ltYm9sRGVjb3JhdG9yKAogICAgIGNvbnN0IGFi
c2w6OmRlYnVnZ2luZ19pbnRlcm5hbDo6U3ltYm9sRGVjb3JhdG9yQXJncyAqYXJncykgewogICBz
dGQ6OnN0cmluZyAqbWVzc2FnZSA9IHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nICo+KGFyZ3MtPmFy
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlM
RC5iYXplbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MGFhNTUwNmMxMWM4N2VkMGI0YTA2NDJiOTUwYmExNjBmOGEy
Zjc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5iYXplbApAQCAtMCwwICsx
LDExNCBAQAorIworIyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisjCisjIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorIworIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
IworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCitsb2FkKAorICAgICIv
L2Fic2w6Y29wdHMuYnpsIiwKKyAgICAiQUJTTF9ERUZBVUxUX0NPUFRTIiwKKyAgICAiQUJTTF9U
RVNUX0NPUFRTIiwKKykKKworcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkgPSBbIi8vdmlzaWJp
bGl0eTpwdWJsaWMiXSkKKworbGljZW5zZXMoWyJub3RpY2UiXSkgICMgQXBhY2hlIDIuMAorCitj
Y19saWJyYXJ5KAorICAgIG5hbWUgPSAiaGFzaCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImlu
dGVybmFsL2hhc2guY2MiLAorICAgICAgICAiaW50ZXJuYWwvaGFzaC5oIiwKKyAgICBdLAorICAg
IGhkcnMgPSBbImhhc2guaCJdLAorICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTLAorICAg
IGRlcHMgPSBbCisgICAgICAgICI6Y2l0eSIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hl
YWRlcnMiLAorICAgICAgICAiLy9hYnNsL2Jhc2U6ZW5kaWFuIiwKKyAgICAgICAgIi8vYWJzbC9j
b250YWluZXI6Zml4ZWRfYXJyYXkiLAorICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMi
LAorICAgICAgICAiLy9hYnNsL251bWVyaWM6aW50MTI4IiwKKyAgICAgICAgIi8vYWJzbC9zdHJp
bmdzIiwKKyAgICAgICAgIi8vYWJzbC90eXBlczpvcHRpb25hbCIsCisgICAgICAgICIvL2Fic2wv
dHlwZXM6dmFyaWFudCIsCisgICAgICAgICIvL2Fic2wvdXRpbGl0eSIsCisgICAgXSwKKykKKwor
Y2NfbGlicmFyeSgKKyAgICBuYW1lID0gImhhc2hfdGVzdGluZyIsCisgICAgdGVzdG9ubHkgPSAx
LAorICAgIGhkcnMgPSBbImhhc2hfdGVzdGluZy5oIl0sCisgICAgZGVwcyA9IFsKKyAgICAgICAg
IjpzcHlfaGFzaF9zdGF0ZSIsCisgICAgICAgICIvL2Fic2wvbWV0YTp0eXBlX3RyYWl0cyIsCisg
ICAgICAgICIvL2Fic2wvc3RyaW5ncyIsCisgICAgICAgICIvL2Fic2wvdHlwZXM6dmFyaWFudCIs
CisgICAgICAgICJAY29tX2dvb2dsZV9nb29nbGV0ZXN0Ly86Z3Rlc3QiLAorICAgIF0sCispCisK
K2NjX3Rlc3QoCisgICAgbmFtZSA9ICJoYXNoX3Rlc3QiLAorICAgIHNyY3MgPSBbImhhc2hfdGVz
dC5jYyJdLAorICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTLAorICAgIGRlcHMgPSBbCisgICAg
ICAgICI6aGFzaCIsCisgICAgICAgICI6aGFzaF90ZXN0aW5nIiwKKyAgICAgICAgIi8vYWJzbC9i
YXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wvY29udGFpbmVyOmZsYXRfaGFzaF9z
ZXQiLAorICAgICAgICAiLy9hYnNsL2hhc2g6c3B5X2hhc2hfc3RhdGUiLAorICAgICAgICAiLy9h
YnNsL21ldGE6dHlwZV90cmFpdHMiLAorICAgICAgICAiLy9hYnNsL251bWVyaWM6aW50MTI4IiwK
KyAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKKyAgICBdLAor
KQorCitjY19saWJyYXJ5KAorICAgIG5hbWUgPSAic3B5X2hhc2hfc3RhdGUiLAorICAgIHRlc3Rv
bmx5ID0gMSwKKyAgICBoZHJzID0gWyJpbnRlcm5hbC9zcHlfaGFzaF9zdGF0ZS5oIl0sCisgICAg
Y29wdHMgPSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmls
aXR5OnByaXZhdGUiXSwKKyAgICBkZXBzID0gWworICAgICAgICAiOmhhc2giLAorICAgICAgICAi
Ly9hYnNsL3N0cmluZ3MiLAorICAgICAgICAiLy9hYnNsL3N0cmluZ3M6c3RyX2Zvcm1hdCIsCisg
ICAgXSwKKykKKworY2NfbGlicmFyeSgKKyAgICBuYW1lID0gImNpdHkiLAorICAgIHNyY3MgPSBb
ImludGVybmFsL2NpdHkuY2MiXSwKKyAgICBoZHJzID0gWworICAgICAgICAiaW50ZXJuYWwvY2l0
eS5oIiwKKyAgICAgICAgImludGVybmFsL2NpdHlfY3JjLmgiLAorICAgIF0sCisgICAgY29wdHMg
PSBBQlNMX0RFRkFVTFRfQ09QVFMsCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vYWJzbC9iYXNl
OmNvbmZpZyIsCisgICAgICAgICIvL2Fic2wvYmFzZTpjb3JlX2hlYWRlcnMiLAorICAgICAgICAi
Ly9hYnNsL2Jhc2U6ZW5kaWFuIiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAi
Y2l0eV90ZXN0IiwKKyAgICBzcmNzID0gWyJpbnRlcm5hbC9jaXR5X3Rlc3QuY2MiXSwKKyAgICBj
b3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBkZXBzID0gWworICAgICAgICAiOmNpdHkiLAor
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAorICAgIF0sCisp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5nbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MGI2YjNhMjJiMzcxMzJiYjZlZjkyYWJjY2ZiYTFmNjY5Y2ZlNDdmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9CVUlMRC5nbgpAQCAtMCwwICsxLDEwNCBAQAorIyBD
b3B5cmlnaHQgMjAxOCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitpbXBvcnQo
Ii8vYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSIpCisKK2lmIChidWlsZF93aXRoX2Nocm9taXVt
KSB7CisgIHZpc2liaWxpdHkgPSBbCisgICAgIi8vdGhpcmRfcGFydHkvd2VicnRjLyoiLAorICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvKiIsCisgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdDpndGVzdCIsCisgIF0KK30gZWxzZSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCit9CisK
K3NvdXJjZV9zZXQoImhhc2giKSB7CisgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29t
cGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1ZGVfY29uZmlnIiBdCisgIHNvdXJj
ZXMgPSBbCisgICAgImludGVybmFsL2hhc2guY2MiLAorICAgICJpbnRlcm5hbC9oYXNoLmgiLAor
ICBdCisgIHB1YmxpYyA9IFsKKyAgICAiaGFzaC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6
Y2l0eSIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKKyAgICAiLi4vYmFzZTplbmRpYW4i
LAorICAgICIuLi9jb250YWluZXI6Zml4ZWRfYXJyYXkiLAorICAgICIuLi9tZXRhOnR5cGVfdHJh
aXRzIiwKKyAgICAiLi4vbnVtZXJpYzppbnQxMjgiLAorICAgICIuLi9zdHJpbmdzIiwKKyAgICAi
Li4vdHlwZXM6b3B0aW9uYWwiLAorICAgICIuLi90eXBlczp2YXJpYW50IiwKKyAgICAiLi4vdXRp
bGl0eSIsCisgIF0KK30KKworc291cmNlX3NldCgiaGFzaF90ZXN0aW5nIikgeworICB0ZXN0b25s
eSA9IHRydWUKKyAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1
bV9jb2RlIiBdCisgIGNvbmZpZ3MgKz0gWworICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpu
b19jaHJvbWl1bV9jb2RlIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwOmFic2xfZGVm
YXVsdF9jZmxhZ3NfY2MiLAorICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwOmFic2xfaW5jbHVkZV9jb25maWciIF0KKyAgcHVibGljID0gWworICAgICJo
YXNoX3Rlc3RpbmcuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOnNweV9oYXNoX3N0YXRlIiwK
KyAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCisgICAgIi4uL3N0cmluZ3MiLAorICAgICIuLi90
eXBlczp2YXJpYW50IiwKKyAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgXQorfQorCitzb3VyY2Vf
c2V0KCJzcHlfaGFzaF9zdGF0ZSIpIHsKKyAgdGVzdG9ubHkgPSB0cnVlCisgIGNvbmZpZ3MgLT0g
WyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25maWdzICs9
IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwKKyAgXQor
ICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2luY2x1
ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvc3B5X2hhc2hfc3RhdGUu
aCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmhhc2giLAorICAgICIuLi9zdHJpbmdzIiwKKyAg
ICAiLi4vc3RyaW5nczpzdHJfZm9ybWF0IiwKKyAgXQorICB2aXNpYmlsaXR5ID0gW10KKyAgdmlz
aWJpbGl0eSArPSBbICIuLi8qIiBdCit9CisKK3NvdXJjZV9zZXQoImNpdHkiKSB7CisgIGNvbmZp
Z3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorICBjb25m
aWdzICs9IFsKKyAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNsX2RlZmF1bHRfY2ZsYWdzX2NjIiwK
KyAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcDphYnNs
X2luY2x1ZGVfY29uZmlnIiBdCisgIHB1YmxpYyA9IFsKKyAgICAiaW50ZXJuYWwvY2l0eS5oIiwK
KyAgICAiaW50ZXJuYWwvY2l0eV9jcmMuaCIsCisgIF0KKyAgc291cmNlcyA9IFsKKyAgICAiaW50
ZXJuYWwvY2l0eS5jYyIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vYmFzZTpjb25maWciLAor
ICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgIi4uL2Jhc2U6ZW5kaWFuIiwKKyAgXQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQ01h
a2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUwODFlMzc3NGY4ZjMyMmE5ZDc1ZGE5NDhlZjI3YTIy
MTNkMjI3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvQ01ha2VMaXN0cy50eHQKQEAg
LTAsMCArMSw4MCBAQAorIworIyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisj
CisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorIworIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCitsaXN0KEFQ
UEVORCBIQVNIX1BVQkxJQ19IRUFERVJTCisgICJoYXNoLmgiCispCisKK2xpc3QoQVBQRU5EIEhB
U0hfSU5URVJOQUxfSEVBREVSUworICAiaW50ZXJuYWwvY2l0eS5oIgorICAiaW50ZXJuYWwvY2l0
eV9jcmMuaCIKKyAgImludGVybmFsL2hhc2guaCIKKykKKworIyBhYnNsX2hhc2ggbGlicmFyeQor
bGlzdChBUFBFTkQgSEFTSF9TUkMKKyAgImludGVybmFsL2NpdHkuY2MiCisgICJpbnRlcm5hbC9o
YXNoLmNjIgorICAke0hBU0hfUFVCTElDX0hFQURFUlN9CisgICR7SEFTSF9JTlRFUk5BTF9IRUFE
RVJTfQorKQorCitzZXQoSEFTSF9QVUJMSUNfTElCUkFSSUVTIGFic2w6Omhhc2ggYWJzbDo6Y29u
dGFpbmVyIGFic2w6OnN0cmluZ3MgYWJzbDo6c3RyX2Zvcm1hdCBhYnNsOjp1dGlsaXR5KQorCith
YnNsX2xpYnJhcnkoCisgIFRBUkdFVAorICAgIGFic2xfaGFzaAorICBTT1VSQ0VTCisgICAgJHtI
QVNIX1NSQ30KKyAgUFVCTElDX0xJQlJBUklFUworICAgICR7SEFTSF9QVUJMSUNfTElCUkFSSUVT
fQorICBFWFBPUlRfTkFNRQorICAgIGhhc2gKKykKKworIworIyMgVEVTVFMKKyMKKworIyB0ZXN0
aW5nIHN1cHBvcnQKK3NldChIQVNIX1RFU1RfSEVBREVSUyBoYXNoX3Rlc3RpbmcuaCBpbnRlcm5h
bC9zcHlfaGFzaF9zdGF0ZS5oKQorc2V0KEhBU0hfVEVTVF9QVUJMSUNfTElCUkFSSUVTIGFic2w6
Omhhc2ggYWJzbDo6Y29udGFpbmVyIGFic2w6Om51bWVyaWMgYWJzbDo6c3RyaW5ncyBhYnNsOjpz
dHJfZm9ybWF0KQorCisjIGhhc2hfdGVzdAorc2V0KEhBU0hfVEVTVF9TUkMgImhhc2hfdGVzdC5j
YyIgJHtIQVNIX1RFU1RfSEVBREVSU30pCisKK2Fic2xfdGVzdCgKKyAgVEFSR0VUCisgICAgaGFz
aF90ZXN0CisgIFNPVVJDRVMKKyAgICAke0hBU0hfVEVTVF9TUkN9CisgIFBVQkxJQ19MSUJSQVJJ
RVMKKyAgICAke0hBU0hfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQorKQorCisjIGhhc2hfdGVzdAor
c2V0KENJVFlfVEVTVF9TUkMgImludGVybmFsL2NpdHlfdGVzdC5jYyIpCisKK2Fic2xfdGVzdCgK
KyAgVEFSR0VUCisgICAgY2l0eV90ZXN0CisgIFNPVVJDRVMKKyAgICAke0NJVFlfVEVTVF9TUkN9
CisgIFBVQkxJQ19MSUJSQVJJRVMKKyAgICAke0hBU0hfVEVTVF9QVUJMSUNfTElCUkFSSUVTfQor
KQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzdiYTRjMmI3YTVjMTk4Zjc0Y2UyNzM5MTBiYWM4ODFjNDU1OWY4OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaC5oCkBAIC0wLDAgKzEsMzEyIEBACisvLyBD
b3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLyBGaWxlOiBoYXNoLmgKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
VGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBBYnNlaWwgYGhhc2hgIGxpYnJhcnkgYW5kIHRo
ZSBBYnNlaWwgaGFzaGluZworLy8gZnJhbWV3b3JrLiBUaGlzIGZyYW1ld29yayBjb25zaXN0cyBv
ZiB0aGUgZm9sbG93aW5nOgorLy8KKy8vICAgKiBUaGUgYGFic2w6Okhhc2hgIGZ1bmN0b3IsIHdo
aWNoIGlzIHVzZWQgdG8gaW52b2tlIHRoZSBoYXNoZXIgd2l0aGluIHRoZQorLy8gICAgIEFic2Vp
bCBoYXNoaW5nIGZyYW1ld29yay4gYGFic2w6Okhhc2g8VD5gIHN1cHBvcnRzIG1vc3QgYmFzaWMg
dHlwZXMgYW5kCisvLyAgICAgYSBudW1iZXIgb2YgQWJzZWlsIHR5cGVzIG91dCBvZiB0aGUgYm94
LgorLy8gICAqIGBBYnNsSGFzaFZhbHVlYCwgYW4gZXh0ZW5zaW9uIHBvaW50IHRoYXQgYWxsb3dz
IHlvdSB0byBleHRlbmQgdHlwZXMgdG8KKy8vICAgICBzdXBwb3J0IEFic2VpbCBoYXNoaW5nIHdp
dGhvdXQgcmVxdWlyaW5nIHlvdSB0byBkZWZpbmUgYSBoYXNoaW5nCisvLyAgICAgYWxnb3JpdGht
LgorLy8gICAqIGBIYXNoU3RhdGVgLCBhIHR5cGUtZXJhc2VkIGNsYXNzIHdoaWNoIGltcGxlbWVu
dCB0aGUgbWFuaXB1bGF0aW9uIG9mIHRoZQorLy8gICAgIGhhc2ggc3RhdGUgKEgpIGl0c2VsZi4g
Y29udGFpbmluZyBtZW1iZXIgZnVuY3Rpb25zIGBjb21iaW5lKClgIGFuZAorLy8gICAgIGBjb21i
aW5lX2NvbnRpZ3VvdXMoKWAsIHdoaWNoIHlvdSBjYW4gdXNlIHRvIGNvbnRyaWJ1dGUgdG8gYW4g
ZXhpc3RpbmcKKy8vICAgICBoYXNoIHN0YXRlIHdoZW4gaGFzaGluZyB5b3VyIHR5cGVzLgorLy8K
Ky8vIFVubGlrZSBgc3RkOjpoYXNoYCBvciBvdGhlciBoYXNoaW5nIGZyYW1ld29ya3MsIHRoZSBB
YnNlaWwgaGFzaGluZyBmcmFtZXdvcmsKKy8vIHByb3ZpZGVzIG1vc3Qgb2YgaXRzIHV0aWxpdHkg
YnkgYWJzdHJhY3RpbmcgYXdheSB0aGUgaGFzaCBhbGdvcml0aG0gKGFuZCBpdHMKKy8vIGltcGxl
bWVudGF0aW9uKSBlbnRpcmVseS4gSW5zdGVhZCwgYSB0eXBlIGludm9rZXMgdGhlIEFic2VpbCBo
YXNoaW5nCisvLyBmcmFtZXdvcmsgYnkgc2ltcGx5IGNvbWJpbmluZyBpdHMgc3RhdGUgd2l0aCB0
aGUgc3RhdGUgb2Yga25vd24sIGhhc2hhYmxlCisvLyB0eXBlcy4gSGFzaGluZyBvZiB0aGF0IGNv
bWJpbmVkIHN0YXRlIGlzIHNlcGFyYXRlbHkgZG9uZSBieSBgYWJzbDo6SGFzaGAuCisvLworLy8g
RXhhbXBsZToKKy8vCisvLyAgIC8vIFN1cHBvc2Ugd2UgaGF2ZSBhIGNsYXNzIGBDaXJjbGVgIGZv
ciB3aGljaCB3ZSB3YW50IHRvIGFkZCBoYXNoaW5nCisvLyAgIGNsYXNzIENpcmNsZSB7CisvLyAg
ICAgcHVibGljOgorLy8gICAgICAgLi4uCisvLyAgICAgcHJpdmF0ZToKKy8vICAgICAgIHN0ZDo6
cGFpcjxpbnQsIGludD4gY2VudGVyXzsKKy8vICAgICAgIGludCByYWRpdXNfOworLy8gICAgIH07
CisvLworLy8gICAvLyBUbyBhZGQgaGFzaGluZyBzdXBwb3J0IHRvIGBDaXJjbGVgLCB3ZSBzaW1w
bHkgbmVlZCB0byBhZGQgYW4gb3JkaW5hcnkKKy8vICAgLy8gZnVuY3Rpb24gYEFic2xIYXNoVmFs
dWUoKWAsIGFuZCByZXR1cm4gdGhlIGNvbWJpbmVkIGhhc2ggc3RhdGUgb2YgdGhlCisvLyAgIC8v
IGV4aXN0aW5nIGhhc2ggc3RhdGUgYW5kIHRoZSBjbGFzcyBzdGF0ZToKKy8vCisvLyAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEg+CisvLyAgICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIGNv
bnN0IENpcmNsZSYgYykgeworLy8gICAgICAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGgp
LCBjLmNlbnRlcl8sIGMucmFkaXVzXyk7CisvLyAgICAgfQorLy8KKy8vIEZvciBtb3JlIGluZm9y
bWF0aW9uLCBzZWUgQWRkaW5nIFR5cGUgU3VwcG9ydCB0byBgYWJzbDo6SGFzaGAgYmVsb3cuCisv
LworI2lmbmRlZiBBQlNMX0hBU0hfSEFTSF9IXworI2RlZmluZSBBQlNMX0hBU0hfSEFTSF9IXwor
CisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL2hhc2guaCIKKworbmFtZXNwYWNlIGFic2wg
eworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYGFic2w6Okhhc2hgCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIGBhYnNsOjpIYXNoPFQ+YCBpcyBhIGNvbnZlbmllbnQgZ2Vu
ZXJhbC1wdXJwb3NlIGhhc2ggZnVuY3RvciBmb3IgYSB0eXBlIGBUYAorLy8gc2F0aXNmeWluZyBh
bnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIChpbiBvcmRlcik6CisvLworLy8gICogVCBp
cyBhbiBhcml0aG1ldGljIG9yIHBvaW50ZXIgdHlwZQorLy8gICogVCBkZWZpbmVzIGFuIG92ZXJs
b2FkIGZvciBgQWJzbEhhc2hWYWx1ZShILCBjb25zdCBUJilgIGZvciBhbiBhcmJpdHJhcnkKKy8v
ICAgIGhhc2ggc3RhdGUgYEhgLgorLy8gIC0gVCBkZWZpbmVzIGEgc3BlY2lhbGl6YXRpb24gb2Yg
YEhBU0hfTkFNRVNQQUNFOjpoYXNoPFQ+YAorLy8gIC0gVCBkZWZpbmVzIGEgc3BlY2lhbGl6YXRp
b24gb2YgYHN0ZDo6aGFzaDxUPmAKKy8vCisvLyBgYWJzbDo6SGFzaGAgaW50cmluc2ljYWxseSBz
dXBwb3J0cyB0aGUgZm9sbG93aW5nIHR5cGVzOgorLy8KKy8vICAgKiBBbGwgaW50ZWdyYWwgdHlw
ZXMgKGluY2x1ZGluZyBib29sKQorLy8gICAqIEFsbCBlbnVtIHR5cGVzCisvLyAgICogQWxsIGZs
b2F0aW5nLXBvaW50IHR5cGVzIChhbHRob3VnaCBoYXNoaW5nIHRoZW0gaXMgZGlzY291cmFnZWQp
CisvLyAgICogQWxsIHBvaW50ZXIgdHlwZXMsIGluY2x1ZGluZyBudWxscHRyX3QKKy8vICAgKiBz
dGQ6OnBhaXI8VDEsIFQyPiwgaWYgVDEgYW5kIFQyIGFyZSBoYXNoYWJsZQorLy8gICAqIHN0ZDo6
dHVwbGU8VHMuLi4+LCBpZiBhbGwgdGhlIFRzLi4uIGFyZSBoYXNoYWJsZQorLy8gICAqIHN0ZDo6
dW5pcXVlX3B0ciBhbmQgc3RkOjpzaGFyZWRfcHRyCisvLyAgICogQWxsIHN0cmluZy1saWtlIHR5
cGVzIGluY2x1ZGluZzoKKy8vICAgICAqIHN0ZDo6c3RyaW5nCisvLyAgICAgKiBzdGQ6OnN0cmlu
Z192aWV3IChhcyB3ZWxsIGFzIGFueSBpbnN0YW5jZSBvZiBzdGQ6OmJhc2ljX3N0cmluZyB0aGF0
CisvLyAgICAgICB1c2VzIGNoYXIgYW5kIHN0ZDo6Y2hhcl90cmFpdHMpCisvLyAgKiBBbGwgdGhl
IHN0YW5kYXJkIHNlcXVlbmNlIGNvbnRhaW5lcnMgKHByb3ZpZGVkIHRoZSBlbGVtZW50cyBhcmUg
aGFzaGFibGUpCisvLyAgKiBBbGwgdGhlIHN0YW5kYXJkIG9yZGVyZWQgYXNzb2NpYXRpdmUgY29u
dGFpbmVycyAocHJvdmlkZWQgdGhlIGVsZW1lbnRzIGFyZQorLy8gICAgaGFzaGFibGUpCisvLyAg
KiBhYnNsIHR5cGVzIHN1Y2ggYXMgdGhlIGZvbGxvd2luZzoKKy8vICAgICogYWJzbDo6c3RyaW5n
X3ZpZXcKKy8vICAgICogYWJzbDo6SW5saW5lZFZlY3RvcgorLy8gICAgKiBhYnNsOjpGaXhlZEFy
cmF5CisvLyAgICAqIGFic2w6OnVuaXQxMjgKKy8vICAgICogYWJzbDo6VGltZSwgYWJzbDo6RHVy
YXRpb24sIGFuZCBhYnNsOjpUaW1lWm9uZQorLy8KKy8vIE5vdGU6IHRoZSBsaXN0IGFib3ZlIGlz
IG5vdCBtZWFudCB0byBiZSBleGhhdXN0aXZlLiBBZGRpdGlvbmFsIHR5cGUgc3VwcG9ydAorLy8g
bWF5IGJlIGFkZGVkLCBpbiB3aGljaCBjYXNlIHRoZSBhYm92ZSBsaXN0IHdpbGwgYmUgdXBkYXRl
ZC4KKy8vCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gYWJzbDo6SGFzaCBJbnZvY2F0aW9u
IEV2YWx1YXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gV2hlbiBpbnZva2Vk
LCBgYWJzbDo6SGFzaDxUPmAgc2VhcmNoZXMgZm9yIHN1cHBsaWVkIGhhc2ggZnVuY3Rpb25zIGlu
IHRoZQorLy8gZm9sbG93aW5nIG9yZGVyOgorLy8KKy8vICAgKiBOYXRpdmVseSBzdXBwb3J0ZWQg
dHlwZXMgb3V0IG9mIHRoZSBib3ggKHNlZSBhYm92ZSkKKy8vICAgKiBUeXBlcyBmb3Igd2hpY2gg
YW4gYEFic2xIYXNoVmFsdWUoKWAgb3ZlcmxvYWQgaXMgcHJvdmlkZWQgKHN1Y2ggYXMKKy8vICAg
ICB1c2VyLWRlZmluZWQgdHlwZXMpLiBTZWUgIkFkZGluZyBUeXBlIFN1cHBvcnQgdG8gYGFic2w6
Okhhc2hgIiBiZWxvdy4KKy8vICAgKiBUeXBlcyB3aGljaCBkZWZpbmUgYSBgSEFTSF9OQU1FU1BB
Q0U6Omhhc2g8VD5gIHNwZWNpYWxpemF0aW9uIChha2EKKy8vICAgICBgX19nbnVfY3h4OjpoYXNo
PFQ+YCBmb3IgZ2NjL0NsYW5nIG9yIGBzdGRleHQ6Omhhc2g8VD5gIGZvciBNU1ZDKQorLy8gICAq
IFR5cGVzIHdoaWNoIGRlZmluZSBhIGBzdGQ6Omhhc2g8VD5gIHNwZWNpYWxpemF0aW9uCisvLwor
Ly8gVGhlIGZhbGxiYWNrIHRvIGxlZ2FjeSBoYXNoIGZ1bmN0aW9ucyBleGlzdHMgbWFpbmx5IGZv
ciBiYWNrd2FyZHMKKy8vIGNvbXBhdGliaWxpdHkuIElmIHlvdSBoYXZlIGEgY2hvaWNlLCBwcmVm
ZXIgZGVmaW5pbmcgYW4gYEFic2xIYXNoVmFsdWVgCisvLyBvdmVybG9hZCBpbnN0ZWFkIG9mIHNw
ZWNpYWxpemluZyBhbnkgbGVnYWN5IGhhc2ggZnVuY3RvcnMuCisvLworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vIFRoZSBIYXNoIFN0YXRlIENvbmNlcHQsIGFuZCB1c2luZyBgSGFzaFN0YXRl
YCBmb3IgVHlwZSBFcmFzdXJlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoZSBg
YWJzbDo6SGFzaGAgZnJhbWV3b3JrIHJlbGllcyBvbiB0aGUgQ29uY2VwdCBvZiBhICJoYXNoIHN0
YXRlLiIgU3VjaCBhCisvLyBoYXNoIHN0YXRlIGlzIHVzZWQgaW4gc2V2ZXJhbCBwbGFjZXM6Cisv
LworLy8gKiBXaXRoaW4gZXhpc3RpbmcgaW1wbGVtZW50YXRpb25zIG9mIGBhYnNsOjpIYXNoPFQ+
YCB0byBzdG9yZSB0aGUgaGFzaGVkCisvLyAgIHN0YXRlIG9mIGFuIG9iamVjdC4gTm90ZSB0aGF0
IGl0IGlzIHVwIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBob3cgaXQgc3RvcmVzCisvLyAgIHN1Y2gg
c3RhdGUuIEEgaGFzaCB0YWJsZSwgZm9yIGV4YW1wbGUsIG1heSBtaXggdGhlIHN0YXRlIHRvIHBy
b2R1Y2UgYW4KKy8vICAgaW50ZWdlciB2YWx1ZTsgYSB0ZXN0aW5nIGZyYW1ld29yayBtYXkgc2lt
cGx5IGhvbGQgYSB2ZWN0b3Igb2YgdGhhdCBzdGF0ZS4KKy8vICogV2l0aGluIGltcGxlbWVudGF0
aW9ucyBvZiBgQWJzbEhhc2hWYWx1ZSgpYCB1c2VkIHRvIGV4dGVuZCB1c2VyLWRlZmluZWQKKy8v
ICAgdHlwZXMuIChTZWUgIkFkZGluZyBUeXBlIFN1cHBvcnQgdG8gYWJzbDo6SGFzaCIgYmVsb3cu
KQorLy8gKiBJbnNpZGUgYSBgSGFzaFN0YXRlYCwgcHJvdmlkaW5nIHR5cGUgZXJhc3VyZSBmb3Ig
dGhlIGNvbmNlcHQgb2YgYSBoYXNoCisvLyAgIHN0YXRlLCB3aGljaCB5b3UgY2FuIHVzZSB0byBl
eHRlbmQgdGhlIGBhYnNsOjpIYXNoYCBmcmFtZXdvcmsgZm9yIHR5cGVzCisvLyAgIHRoYXQgYXJl
IG90aGVyd2lzZSBkaWZmaWN1bHQgdG8gZXh0ZW5kIHVzaW5nIGBBYnNsSGFzaFZhbHVlKClgLiAo
U2VlIHRoZQorLy8gICBgSGFzaFN0YXRlYCBjbGFzcyBiZWxvdy4pCisvLworLy8gVGhlICJoYXNo
IHN0YXRlIiBjb25jZXB0IGNvbnRhaW5zIHR3byBtZW1iZXIgZnVuY3Rpb25zIGZvciBtaXhpbmcg
aGFzaCBzdGF0ZToKKy8vCisvLyAqIGBIOjpjb21iaW5lKClgCisvLworLy8gICBDb21iaW5lcyBh
biBhcmJpdHJhcnkgbnVtYmVyIG9mIHZhbHVlcyBpbnRvIGEgaGFzaCBzdGF0ZSwgcmV0dXJuaW5n
IHRoZQorLy8gICB1cGRhdGVkIHN0YXRlLiBOb3RlIHRoYXQgdGhlIGV4aXN0aW5nIGhhc2ggc3Rh
dGUgaXMgbW92ZS1vbmx5IGFuZCBtdXN0IGJlCisvLyAgIHBhc3NlZCBieSB2YWx1ZS4KKy8vCisv
LyAgIEVhY2ggb2YgdGhlIHZhbHVlIHR5cGVzIFQgbXVzdCBiZSBoYXNoYWJsZSBieSBILgorLy8K
Ky8vICAgTk9URToKKy8vCisvLyAgICAgc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0
ZSksIHZhbHVlMSwgdmFsdWUyLCB2YWx1ZTMpOworLy8KKy8vICAgbXVzdCBiZSBndWFyYW50ZWVk
IHRvIHByb2R1Y2UgdGhlIHNhbWUgaGFzaCBleHBhbnNpb24gYXMKKy8vCisvLyAgICAgc3RhdGUg
PSBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMSk7CisvLyAgICAgc3RhdGUgPSBI
Ojpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMik7CisvLyAgICAgc3RhdGUgPSBIOjpj
b21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksIHZhbHVlMyk7CisvLworLy8gKiBgSDo6Y29tYmluZV9j
b250aWd1b3VzKClgCisvLworLy8gICAgQ29tYmluZXMgYSBjb250aWd1b3VzIGFycmF5IG9mIGBz
aXplYCBlbGVtZW50cyBpbnRvIGEgaGFzaCBzdGF0ZSwKKy8vICAgIHJldHVybmluZyB0aGUgdXBk
YXRlZCBzdGF0ZS4gTm90ZSB0aGF0IHRoZSBleGlzdGluZyBoYXNoIHN0YXRlIGlzCisvLyAgICBt
b3ZlLW9ubHkgYW5kIG11c3QgYmUgcGFzc2VkIGJ5IHZhbHVlLgorLy8KKy8vICAgIE5PVEU6Cisv
LworLy8gICAgICBzdGF0ZSA9IEg6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6Om1vdmUoc3RhdGUp
LCBkYXRhLCBzaXplKTsKKy8vCisvLyAgICBuZWVkIE5PVCBiZSBndWFyYW50ZWVkIHRvIHByb2R1
Y2UgdGhlIHNhbWUgaGFzaCBleHBhbnNpb24gYXMgYSBsb29wCisvLyAgICAoaXQgbWF5IHBlcmZv
cm0gaW50ZXJuYWwgb3B0aW1pemF0aW9ucykuIElmIHlvdSBuZWVkIHRoaXMgZ3VhcmFudGVlLCB1
c2UgYQorLy8gICAgbG9vcCBpbnN0ZWFkLgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LyBBZGRpbmcgVHlwZSBTdXBwb3J0IHRvIGBhYnNsOjpIYXNoYAorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBUbyBhZGQgc3VwcG9ydCBmb3IgeW91ciB1c2VyLWRlZmluZWQgdHlwZSwg
YWRkIGEgcHJvcGVyIGBBYnNsSGFzaFZhbHVlKClgCisvLyBvdmVybG9hZCBhcyBhIGZyZWUgKG5v
bi1tZW1iZXIpIGZ1bmN0aW9uLiBUaGUgb3ZlcmxvYWQgd2lsbCB0YWtlIGFuCisvLyBleGlzdGlu
ZyBoYXNoIHN0YXRlIGFuZCBzaG91bGQgY29tYmluZSB0aGF0IHN0YXRlIHdpdGggc3RhdGUgZnJv
bSB0aGUgdHlwZS4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8vICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEg+CisvLyAgIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBjb25zdCBNeVR5cGUmIHYpIHsKKy8v
ICAgICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoc3RhdGUpLCB2LmZpZWxkMSwgLi4uLCB2
LmZpZWxkTik7CisvLyAgIH0KKy8vCisvLyB3aGVyZSBgKGZpZWxkMSwgLi4uLCBmaWVsZE4pYCBh
cmUgdGhlIG1lbWJlcnMgeW91IHdvdWxkIHVzZSBvbiB5b3VyCisvLyBgb3BlcmF0b3I9PWAgdG8g
ZGVmaW5lIGVxdWFsaXR5LgorLy8KKy8vIE5vdGljZSB0aGF0IGBBYnNsSGFzaFZhbHVlYCBpcyBu
b3QgYSBjbGFzcyBtZW1iZXIsIGJ1dCBhbiBvcmRpbmFyeSBmdW5jdGlvbi4KKy8vIEFuIGBBYnNs
SGFzaFZhbHVlYCBvdmVybG9hZCBmb3IgYSB0eXBlIHNob3VsZCBvbmx5IGJlIGRlY2xhcmVkIGlu
IHRoZSBzYW1lCisvLyBmaWxlIGFuZCBuYW1lc3BhY2UgYXMgc2FpZCB0eXBlLiBUaGUgcHJvcGVy
IGBBYnNsSGFzaFZhbHVlYCBpbXBsZW1lbnRhdGlvbgorLy8gZm9yIGEgZ2l2ZW4gdHlwZSB3aWxs
IGJlIGRpc2NvdmVyZWQgdmlhIEFETC4KKy8vCisvLyBOb3RlOiB1bmxpa2UgYHN0ZDo6aGFzaCcs
IGBhYnNsOjpIYXNoYCBzaG91bGQgbmV2ZXIgYmUgc3BlY2lhbGl6ZWQuIEl0IG11c3QKKy8vIG9u
bHkgYmUgZXh0ZW5kZWQgYnkgYWRkaW5nIGBBYnNsSGFzaFZhbHVlKClgIG92ZXJsb2Fkcy4KKy8v
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5nIEhhc2ggPSBhYnNsOjpoYXNoX2ludGVybmFs
OjpIYXNoPFQ+OworCisvLyBIYXNoU3RhdGUKKy8vCisvLyBBIHR5cGUgZXJhc2VkIHZlcnNpb24g
b2YgdGhlIGhhc2ggc3RhdGUgY29uY2VwdCwgZm9yIHVzZSBpbiB1c2VyLWRlZmluZWQKKy8vIGBB
YnNsSGFzaFZhbHVlYCBpbXBsZW1lbnRhdGlvbnMgdGhhdCBjYW4ndCB1c2UgdGVtcGxhdGVzIChz
dWNoIGFzIFBJbXBsCisvLyBjbGFzc2VzLCB2aXJ0dWFsIGZ1bmN0aW9ucywgZXRjLikuIFRoZSB0
eXBlIGVyYXN1cmUgYWRkcyBvdmVyaGVhZCBzbyBpdAorLy8gc2hvdWxkIGJlIGF2b2lkZWQgdW5s
ZXNzIG5lY2Vzc2FyeS4KKy8vCisvLyBOb3RlOiBUaGlzIHdyYXBwZXIgd2lsbCBvbmx5IGVyYXNl
IGNhbGxzIHRvOgorLy8gICAgIGNvbWJpbmVfY29udGlndW91cyhILCBjb25zdCB1bnNpZ25lZCBj
aGFyKiwgc2l6ZV90KQorLy8KKy8vIEFsbCBvdGhlciBjYWxscyB3aWxsIGJlIGhhbmRsZWQgaW50
ZXJuYWxseSBhbmQgd2lsbCBub3QgaW52b2tlIG92ZXJsb2FkcworLy8gcHJvdmlkZWQgYnkgdGhl
IHdyYXBwZWQgY2xhc3MuCisvLworLy8gVXNlcnMgb2YgdGhpcyBjbGFzcyBzaG91bGQgc3RpbGwg
ZGVmaW5lIGEgdGVtcGxhdGUgYEFic2xIYXNoVmFsdWVgIGZ1bmN0aW9uLAorLy8gYnV0IGNhbiB1
c2UgYGFic2w6Okhhc2hTdGF0ZTo6Q3JlYXRlKCZzdGF0ZSlgIHRvIGVyYXNlIHRoZSB0eXBlIG9m
IHRoZSBoYXNoCisvLyBzdGF0ZSBhbmQgZGlzcGF0Y2ggdG8gdGhlaXIgcHJpdmF0ZSBoYXNoaW5n
IGxvZ2ljLgorLy8KKy8vIFRoaXMgc3RhdGUgY2FuIGJlIHVzZWQgbGlrZSBhbnkgb3RoZXIgaGFz
aCBzdGF0ZS4gSW4gcGFydGljdWxhciwgeW91IGNhbiBjYWxsCisvLyBgSGFzaFN0YXRlOjpjb21i
aW5lKClgIGFuZCBgSGFzaFN0YXRlOjpjb21iaW5lX2NvbnRpZ3VvdXMoKWAgb24gaXQuCisvLwor
Ly8gRXhhbXBsZToKKy8vCisvLyAgIGNsYXNzIEludGVyZmFjZSB7CisvLyAgICBwdWJsaWM6Cisv
LyAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CisvLyAgICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1
ZShIIHN0YXRlLCBjb25zdCBJbnRlcmZhY2UmIHZhbHVlKSB7CisvLyAgICAgICBzdGF0ZSA9IEg6
OmNvbWJpbmUoc3RkOjptb3ZlKHN0YXRlKSwgc3RkOjp0eXBlX2luZGV4KHR5cGVpZCgqdGhpcykp
KTsKKy8vICAgICAgIHZhbHVlLkhhc2hWYWx1ZShhYnNsOjpIYXNoU3RhdGU6OkNyZWF0ZSgmc3Rh
dGUpKTsKKy8vICAgICAgIHJldHVybiBzdGF0ZTsKKy8vICAgICB9CisvLyAgICBwcml2YXRlOgor
Ly8gICAgIHZpcnR1YWwgdm9pZCBIYXNoVmFsdWUoYWJzbDo6SGFzaFN0YXRlIHN0YXRlKSBjb25z
dCA9IDA7CisvLyAgfTsKKy8vCisvLyAgIGNsYXNzIEltcGwgOiBJbnRlcmZhY2UgeworLy8gICAg
cHJpdmF0ZToKKy8vICAgICB2b2lkIEhhc2hWYWx1ZShhYnNsOjpIYXNoU3RhdGUgc3RhdGUpIGNv
bnN0IG92ZXJyaWRlIHsKKy8vICAgICAgIGFic2w6Okhhc2hTdGF0ZTo6Y29tYmluZShzdGQ6Om1v
dmUoc3RhdGUpLCB2MV8sIHYyXyk7CisvLyAgICAgfQorLy8gICAgIGludCB2MV87CisvLyAgICAg
c3RyaW5nIHYyXzsKKy8vICAgfTsKK2NsYXNzIEhhc2hTdGF0ZSA6IHB1YmxpYyBoYXNoX2ludGVy
bmFsOjpIYXNoU3RhdGVCYXNlPEhhc2hTdGF0ZT4geworIHB1YmxpYzoKKyAgLy8gSGFzaFN0YXRl
OjpDcmVhdGUoKQorICAvLworICAvLyBDcmVhdGUgYSBuZXcgYEhhc2hTdGF0ZWAgaW5zdGFuY2Ug
dGhhdCB3cmFwcyBgc3RhdGVgLiBBbGwgY2FsbHMgdG8KKyAgLy8gYGNvbWJpbmUoKWAgYW5kIGBj
b21iaW5lX2NvbnRpZ3VvdXMoKWAgb24gdGhlIG5ldyBpbnN0YW5jZSB3aWxsIGJlCisgIC8vIHJl
ZGlyZWN0ZWQgdG8gdGhlIG9yaWdpbmFsIGBzdGF0ZWAgb2JqZWN0LiBUaGUgYHN0YXRlYCBvYmpl
Y3QgbXVzdCBvdXRsaXZlCisgIC8vIHRoZSBgSGFzaFN0YXRlYCBpbnN0YW5jZS4KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBIYXNoU3RhdGUgQ3JlYXRlKFQqIHN0YXRlKSB7Cisg
ICAgSGFzaFN0YXRlIHM7CisgICAgcy5Jbml0KHN0YXRlKTsKKyAgICByZXR1cm4gczsKKyAgfQor
CisgIEhhc2hTdGF0ZShjb25zdCBIYXNoU3RhdGUmKSA9IGRlbGV0ZTsKKyAgSGFzaFN0YXRlJiBv
cGVyYXRvcj0oY29uc3QgSGFzaFN0YXRlJikgPSBkZWxldGU7CisgIEhhc2hTdGF0ZShIYXNoU3Rh
dGUmJikgPSBkZWZhdWx0OworICBIYXNoU3RhdGUmIG9wZXJhdG9yPShIYXNoU3RhdGUmJikgPSBk
ZWZhdWx0OworCisgIC8vIEhhc2hTdGF0ZTo6Y29tYmluZSgpCisgIC8vCisgIC8vIENvbWJpbmVz
IGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdmFsdWVzIGludG8gYSBoYXNoIHN0YXRlLCByZXR1cm5p
bmcgdGhlCisgIC8vIHVwZGF0ZWQgc3RhdGUuCisgIHVzaW5nIEhhc2hTdGF0ZTo6SGFzaFN0YXRl
QmFzZTo6Y29tYmluZTsKKworICAvLyBIYXNoU3RhdGU6OmNvbWJpbmVfY29udGlndW91cygpCisg
IC8vCisgIC8vIENvbWJpbmVzIGEgY29udGlndW91cyBhcnJheSBvZiBgc2l6ZWAgZWxlbWVudHMg
aW50byBhIGhhc2ggc3RhdGUsIHJldHVybmluZworICAvLyB0aGUgdXBkYXRlZCBzdGF0ZS4KKyAg
c3RhdGljIEhhc2hTdGF0ZSBjb21iaW5lX2NvbnRpZ3VvdXMoSGFzaFN0YXRlIGhhc2hfc3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGZpcnN0LCBzaXplX3Qgc2l6ZSkgeworICAgIGhhc2hfc3RhdGUuY29tYmluZV9jb250aWd1
b3VzXyhoYXNoX3N0YXRlLnN0YXRlXywgZmlyc3QsIHNpemUpOworICAgIHJldHVybiBoYXNoX3N0
YXRlOworICB9CisgIHVzaW5nIEhhc2hTdGF0ZTo6SGFzaFN0YXRlQmFzZTo6Y29tYmluZV9jb250
aWd1b3VzOworCisgcHJpdmF0ZToKKyAgSGFzaFN0YXRlKCkgPSBkZWZhdWx0OworCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgdm9pZCBDb21iaW5lQ29udGlndW91c0ltcGwodm9p
ZCogcCwgY29uc3QgdW5zaWduZWQgY2hhciogZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSkgeworICAgIFQmIHN0YXRlID0gKnN0YXRpY19jYXN0
PFQqPihwKTsKKyAgICBzdGF0ZSA9IFQ6OmNvbWJpbmVfY29udGlndW91cyhzdGQ6Om1vdmUoc3Rh
dGUpLCBmaXJzdCwgc2l6ZSk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgdm9p
ZCBJbml0KFQqIHN0YXRlKSB7CisgICAgc3RhdGVfID0gc3RhdGU7CisgICAgY29tYmluZV9jb250
aWd1b3VzXyA9ICZDb21iaW5lQ29udGlndW91c0ltcGw8VD47CisgIH0KKworICAvLyBEbyBub3Qg
ZXJhc2UgYW4gYWxyZWFkeSBlcmFzZWQgc3RhdGUuCisgIHZvaWQgSW5pdChIYXNoU3RhdGUqIHN0
YXRlKSB7CisgICAgc3RhdGVfID0gc3RhdGUtPnN0YXRlXzsKKyAgICBjb21iaW5lX2NvbnRpZ3Vv
dXNfID0gc3RhdGUtPmNvbWJpbmVfY29udGlndW91c187CisgIH0KKworICB2b2lkKiBzdGF0ZV87
CisgIHZvaWQgKCpjb21iaW5lX2NvbnRpZ3VvdXNfKSh2b2lkKiwgY29uc3QgdW5zaWduZWQgY2hh
ciosIHNpemVfdCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorI2VuZGlmICAvLyBBQlNM
X0hBU0hfSEFTSF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoX3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9oYXNoL2hhc2hfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjZmYjJlN2FjMWNiMDkzMWM1ZTZiOTgz
M2RlZjY0ZWFjZTJhYzc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9oYXNoX3Rlc3Qu
Y2MKQEAgLTAsMCArMSw0MjUgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9y
cy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaC5oIgorCisjaW5jbHVkZSA8YXJyYXk+Cisj
aW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxmb3J3YXJkX2xp
c3Q+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRl
IDxsaW1pdHM+CisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8cmFuZG9tPgorI2luY2x1ZGUgPHNl
dD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dHlwZV90
cmFpdHM+CisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2lu
Y2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9mbGF0X2hhc2hfc2V0LmgiCisj
aW5jbHVkZSAiYWJzbC9oYXNoL2hhc2hfdGVzdGluZy5oIgorI2luY2x1ZGUgImFic2wvaGFzaC9p
bnRlcm5hbC9zcHlfaGFzaF9zdGF0ZS5oIgorI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0
cy5oIgorI2luY2x1ZGUgImFic2wvbnVtZXJpYy9pbnQxMjguaCIKKworbmFtZXNwYWNlIHsKKwor
dXNpbmcgYWJzbDo6SGFzaDsKK3VzaW5nIGFic2w6Omhhc2hfaW50ZXJuYWw6OlNweUhhc2hTdGF0
ZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBIYXNoVmFsdWVJbnRUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgeworfTsKK1RZUEVEX1RFU1RfQ0FTRV9QKEhhc2hWYWx1ZUludFRl
c3QpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1NweUhhc2hTdGF0ZSBTcHlIYXNoKGNvbnN0
IFQmIHZhbHVlKSB7CisgIHJldHVybiBTcHlIYXNoU3RhdGU6OmNvbWJpbmUoU3B5SGFzaFN0YXRl
KCksIHZhbHVlKTsKK30KKworLy8gSGVscGVyIHRyYWl0IHRvIHZlcmlmeSBpZiBUIGlzIGhhc2hh
YmxlLiBXZSB1c2UgYWJzbDo6SGFzaCdzIHBvaXNvbiBzdGF0dXMgdG8KKy8vIGRldGVjdCBpdC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgaXNfaGFzaGFibGUgPSBzdGQ6OmlzX2RlZmF1
bHRfY29uc3RydWN0aWJsZTxhYnNsOjpIYXNoPFQ+PjsKKworVFlQRURfVEVTVF9QKEhhc2hWYWx1
ZUludFRlc3QsIEJhc2ljVXNhZ2UpIHsKKyAgRVhQRUNUX1RSVUUoKGlzX2hhc2hhYmxlPFR5cGVQ
YXJhbT46OnZhbHVlKSk7CisKKyAgVHlwZVBhcmFtIG4gPSA0MjsKKyAgRVhQRUNUX0VRKFNweUhh
c2gobiksIFNweUhhc2goVHlwZVBhcmFtezQyfSkpOworICBFWFBFQ1RfTkUoU3B5SGFzaChuKSwg
U3B5SGFzaChUeXBlUGFyYW17MH0pKTsKKyAgRVhQRUNUX05FKFNweUhhc2goc3RkOjpudW1lcmlj
X2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSksCisgICAgICAgICAgICBTcHlIYXNoKHN0ZDo6bnVt
ZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWluKCkpKTsKK30KKworVFlQRURfVEVTVF9QKEhhc2hW
YWx1ZUludFRlc3QsIEZhc3RQYXRoKSB7CisgIC8vIFRlc3QgdGhlIGZhc3QtcGF0aCB0byBtYWtl
IHN1cmUgdGhlIHZhbHVlcyBhcmUgdGhlIHNhbWUuCisgIFR5cGVQYXJhbSBuID0gNDI7CisgIEVY
UEVDVF9FUShhYnNsOjpIYXNoPFR5cGVQYXJhbT57fShuKSwKKyAgICAgICAgICAgIGFic2w6Okhh
c2g8c3RkOjp0dXBsZTxUeXBlUGFyYW0+Pnt9KHN0ZDo6dHVwbGU8VHlwZVBhcmFtPihuKSkpOwor
fQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChIYXNoVmFsdWVJbnRUZXN0LCBCYXNpY1Vz
YWdlLCBGYXN0UGF0aCk7Cit1c2luZyBJbnRUeXBlcyA9IHRlc3Rpbmc6OlR5cGVzPHVuc2lnbmVk
IGNoYXIsIGNoYXIsIGludCwgaW50MzJfdCwgaW50NjRfdCwgdWludDMyX3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90LCBzaXplX3Q+OworSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9DQVNFX1AoTXksIEhhc2hWYWx1ZUludFRlc3QsIEludFR5cGVzKTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4KK3N0cnVjdCBJc0hhc2hDYWxsYmxlIDog
c3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0hh
c2hDYWxsYmxlPFQsIGFic2w6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8YWJzbDo6SGFz
aDxUPj4oKSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmRlY2x2YWw8Y29uc3Qg
VCY+KCkpKT4+IDogc3RkOjp0cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSA9IHZvaWQ+CitzdHJ1Y3QgSXNBZ2dyZWdhdGVJbml0aWFsaXphYmxlIDogc3RkOjpm
YWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0FnZ3JlZ2F0
ZUluaXRpYWxpemFibGU8VCwgYWJzbDo6dm9pZF90PGRlY2x0eXBlKFR7fSk+PgorICAgIDogc3Rk
Ojp0cnVlX3R5cGUge307CisKK1RFU1QoSXNIYXNoYWJsZVRlc3QsIFZhbGlkSGFzaCkgeworICBF
WFBFQ1RfVFJVRSgoaXNfaGFzaGFibGU8aW50Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoc3Rk
Ojppc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8YWJzbDo6SGFzaDxpbnQ+Pjo6dmFsdWUpOworICBF
WFBFQ1RfVFJVRShzdGQ6OmlzX2NvcHlfY29uc3RydWN0aWJsZTxhYnNsOjpIYXNoPGludD4+Ojp2
YWx1ZSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPGFic2w6Okhh
c2g8aW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxl
PGFic2w6Okhhc2g8aW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfbW92ZV9h
c3NpZ25hYmxlPGFic2w6Okhhc2g8aW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoSXNIYXNo
Q2FsbGJsZTxpbnQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKElzQWdncmVnYXRlSW5pdGlhbGl6
YWJsZTxhYnNsOjpIYXNoPGludD4+Ojp2YWx1ZSk7Cit9CisjaWYgQUJTTF9IQVNIX0lOVEVSTkFM
X0NBTl9QT0lTT05fICYmICFkZWZpbmVkKF9fQVBQTEVfXykKK1RFU1QoSXNIYXNoYWJsZVRlc3Qs
IFBvaXNvbkhhc2gpIHsKKyAgc3RydWN0IFgge307CisgIEVYUEVDVF9GQUxTRSgoaXNfaGFzaGFi
bGU8WD46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRShzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0
aWJsZTxhYnNsOjpIYXNoPFg+Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0Uoc3RkOjppc19jb3B5
X2NvbnN0cnVjdGlibGU8YWJzbDo6SGFzaDxYPj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKHN0
ZDo6aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPGFic2w6Okhhc2g8WD4+Ojp2YWx1ZSk7CisgIEVYUEVD
VF9GQUxTRShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6SGFzaDxYPj46OnZhbHVlKTsK
KyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpIYXNoPFg+Pjo6
dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoSXNIYXNoQ2FsbGJsZTxYPjo6dmFsdWUpOworICBFWFBF
Q1RfRkFMU0UoSXNBZ2dyZWdhdGVJbml0aWFsaXphYmxlPGFic2w6Okhhc2g8WD4+Ojp2YWx1ZSk7
Cit9CisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXworCisvLyBIYXNo
YWJsZSB0eXBlcworLy8KKy8vIFRoZXNlIHR5cGVzIGV4aXN0IHNpbXBseSB0byBleGVyY2lzZSB2
YXJpb3VzIEFic2xIYXNoVmFsdWUgYmVoYXZpb3JzLCBzbworLy8gdGhleSBhcmUgbmFtZWQgYnkg
d2hhdCB0aGVpciBBYnNsSGFzaFZhbHVlIG92ZXJsb2FkIGRvZXMuCitzdHJ1Y3QgTm9PcCB7Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoQ29kZT4KKyAgZnJpZW5kIEhhc2hDb2RlIEFic2xIYXNo
VmFsdWUoSGFzaENvZGUgaCwgTm9PcCBuKSB7CisgICAgcmV0dXJuIHN0ZDo6bW92ZShoKTsKKyAg
fQorfTsKKworc3RydWN0IEVtcHR5Q29tYmluZSB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNo
Q29kZT4KKyAgZnJpZW5kIEhhc2hDb2RlIEFic2xIYXNoVmFsdWUoSGFzaENvZGUgaCwgRW1wdHlD
b21iaW5lIGUpIHsKKyAgICByZXR1cm4gSGFzaENvZGU6OmNvbWJpbmUoc3RkOjptb3ZlKGgpKTsK
KyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEludD4KK3N0cnVjdCBDb21iaW5lSXRlcmF0
aXZlIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hDb2RlPgorICBmcmllbmQgSGFzaENvZGUg
QWJzbEhhc2hWYWx1ZShIYXNoQ29kZSBoLCBDb21iaW5lSXRlcmF0aXZlIGMpIHsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDU7ICsraSkgeworICAgICAgaCA9IEhhc2hDb2RlOjpjb21iaW5lKHN0
ZDo6bW92ZShoKSwgSW50KGkpKTsKKyAgICB9CisgICAgcmV0dXJuIGg7CisgIH0KK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBJbnQ+CitzdHJ1Y3QgQ29tYmluZVZhcmlhZGljIHsKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIEhhc2hDb2RlPgorICBmcmllbmQgSGFzaENvZGUgQWJzbEhhc2hWYWx1ZShI
YXNoQ29kZSBoLCBDb21iaW5lVmFyaWFkaWMgYykgeworICAgIHJldHVybiBIYXNoQ29kZTo6Y29t
YmluZShzdGQ6Om1vdmUoaCksIEludCgwKSwgSW50KDEpLCBJbnQoMiksIEludCgzKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW50KDQpKTsKKyAgfQorfTsKKwordXNpbmcgSW52b2tl
VGFnID0gYWJzbDo6aGFzaF9pbnRlcm5hbDo6SW52b2tlSGFzaFRhZzsKK3RlbXBsYXRlIDxJbnZv
a2VUYWcgVD4KK3VzaW5nIEludm9rZVRhZ0NvbnN0YW50ID0gc3RkOjppbnRlZ3JhbF9jb25zdGFu
dDxJbnZva2VUYWcsIFQ+OworCit0ZW1wbGF0ZSA8SW52b2tlVGFnLi4uIFRhZ3M+CitzdHJ1Y3Qg
TWluVGFnOworCit0ZW1wbGF0ZSA8SW52b2tlVGFnIGEsIEludm9rZVRhZyBiLCBJbnZva2VUYWcu
Li4gVGFncz4KK3N0cnVjdCBNaW5UYWc8YSwgYiwgVGFncy4uLj4gOiBNaW5UYWc8KGEgPCBiID8g
YSA6IGIpLCBUYWdzLi4uPiB7fTsKKwordGVtcGxhdGUgPEludm9rZVRhZyBhPgorc3RydWN0IE1p
blRhZzxhPiA6IEludm9rZVRhZ0NvbnN0YW50PGE+IHt9OworCit0ZW1wbGF0ZSA8SW52b2tlVGFn
Li4uIFRhZ3M+CitzdHJ1Y3QgQ3VzdG9tSGFzaFR5cGUgeworICBzaXplX3QgdmFsdWU7Cit9Owor
Cit0ZW1wbGF0ZSA8SW52b2tlVGFnIGFsbG93ZWQsIEludm9rZVRhZy4uLiB0YWdzPgorc3RydWN0
IEVuYWJsZUlmQ29udGFpbmVkCisgICAgOiBzdGQ6OmVuYWJsZV9pZjxhYnNsOjpkaXNqdW5jdGlv
bjwKKyAgICAgICAgICBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIGFsbG93ZWQgPT0gdGFn
cz4uLi4+Ojp2YWx1ZT4ge307CisKK3RlbXBsYXRlIDwKKyAgICB0eXBlbmFtZSBILCBJbnZva2VU
YWcuLi4gVGFncywKKyAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIEVuYWJsZUlmQ29udGFpbmVkPElu
dm9rZVRhZzo6a0hhc2hWYWx1ZSwgVGFncy4uLj46OnR5cGU+CitIIEFic2xIYXNoVmFsdWUoSCBz
dGF0ZSwgQ3VzdG9tSGFzaFR5cGU8VGFncy4uLj4gdCkgeworICBzdGF0aWNfYXNzZXJ0KE1pblRh
ZzxUYWdzLi4uPjo6dmFsdWUgPT0gSW52b2tlVGFnOjprSGFzaFZhbHVlLCAiIik7CisgIHJldHVy
biBIOjpjb21iaW5lKHN0ZDo6bW92ZShzdGF0ZSksCisgICAgICAgICAgICAgICAgICAgIHQudmFs
dWUgKyBzdGF0aWNfY2FzdDxpbnQ+KEludm9rZVRhZzo6a0hhc2hWYWx1ZSkpOworfQorCit9ICAv
LyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwg
ewordGVtcGxhdGUgPEludm9rZVRhZy4uLiBUYWdzPgorc3RydWN0IGlzX3VuaXF1ZWx5X3JlcHJl
c2VudGVkPAorICAgIEN1c3RvbUhhc2hUeXBlPFRhZ3MuLi4+LAorICAgIHR5cGVuYW1lIEVuYWJs
ZUlmQ29udGFpbmVkPEludm9rZVRhZzo6a1VuaXF1ZWx5UmVwcmVzZW50ZWQsIFRhZ3MuLi4+Ojp0
eXBlPgorICAgIDogc3RkOjp0cnVlX3R5cGUge307Cit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRl
cm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKworI2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQ
T1JUX0xFR0FDWV9IQVNIXworbmFtZXNwYWNlIEFCU0xfSU5URVJOQUxfTEVHQUNZX0hBU0hfTkFN
RVNQQUNFIHsKK3RlbXBsYXRlIDxJbnZva2VUYWcuLi4gVGFncz4KK3N0cnVjdCBoYXNoPEN1c3Rv
bUhhc2hUeXBlPFRhZ3MuLi4+PiB7CisgIHRlbXBsYXRlIDxJbnZva2VUYWcuLi4gVGFnc0luLCB0
eXBlbmFtZSA9IHR5cGVuYW1lIEVuYWJsZUlmQ29udGFpbmVkPAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEludm9rZVRhZzo6a0xlZ2FjeUhhc2gsIFRhZ3NJbi4uLj46OnR5
cGU+CisgIHNpemVfdCBvcGVyYXRvcigpKEN1c3RvbUhhc2hUeXBlPFRhZ3NJbi4uLj4gdCkgY29u
c3QgeworICAgIHN0YXRpY19hc3NlcnQoTWluVGFnPFRhZ3MuLi4+Ojp2YWx1ZSA9PSBJbnZva2VU
YWc6OmtMZWdhY3lIYXNoLCAiIik7CisgICAgcmV0dXJuIHQudmFsdWUgKyBzdGF0aWNfY2FzdDxp
bnQ+KEludm9rZVRhZzo6a0xlZ2FjeUhhc2gpOworICB9Cit9OworfSAgLy8gbmFtZXNwYWNlIEFC
U0xfSU5URVJOQUxfTEVHQUNZX0hBU0hfTkFNRVNQQUNFCisjZW5kaWYgIC8vIEFCU0xfSEFTSF9J
TlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9IQVNIXworCituYW1lc3BhY2Ugc3RkIHsKK3RlbXBsYXRl
IDxJbnZva2VUYWcuLi4gVGFncz4gIC8vIE5PTElOVAorc3RydWN0IGhhc2g8Q3VzdG9tSGFzaFR5
cGU8VGFncy4uLj4+IHsKKyAgdGVtcGxhdGUgPEludm9rZVRhZy4uLiBUYWdzSW4sIHR5cGVuYW1l
ID0gdHlwZW5hbWUgRW5hYmxlSWZDb250YWluZWQ8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW52b2tlVGFnOjprU3RkSGFzaCwgVGFnc0luLi4uPjo6dHlwZT4KKyAgc2l6
ZV90IG9wZXJhdG9yKCkoQ3VzdG9tSGFzaFR5cGU8VGFnc0luLi4uPiB0KSBjb25zdCB7CisgICAg
c3RhdGljX2Fzc2VydChNaW5UYWc8VGFncy4uLj46OnZhbHVlID09IEludm9rZVRhZzo6a1N0ZEhh
c2gsICIiKTsKKyAgICByZXR1cm4gdC52YWx1ZSArIHN0YXRpY19jYXN0PGludD4oSW52b2tlVGFn
OjprU3RkSGFzaCk7CisgIH0KK307Cit9ICAvLyBuYW1lc3BhY2Ugc3RkCisKK25hbWVzcGFjZSB7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgordm9pZCBUZXN0Q3VzdG9tSGFzaFR5cGUoSW52
b2tlVGFnQ29uc3RhbnQ8SW52b2tlVGFnOjprTm9uZT4sIFQuLi4pIHsKKyAgdXNpbmcgdHlwZSA9
IEN1c3RvbUhhc2hUeXBlPFQ6OnZhbHVlLi4uPjsKKyAgU0NPUEVEX1RSQUNFKHRlc3Rpbmc6OlBy
aW50VG9TdHJpbmcoc3RkOjp2ZWN0b3I8SW52b2tlVGFnPntUOjp2YWx1ZS4uLn0pKTsKKyAgRVhQ
RUNUX1RSVUUoaXNfaGFzaGFibGU8dHlwZT4oKSk7CisgIEVYUEVDVF9UUlVFKGlzX2hhc2hhYmxl
PGNvbnN0IHR5cGU+KCkpOworICBFWFBFQ1RfVFJVRShpc19oYXNoYWJsZTxjb25zdCB0eXBlJj4o
KSk7CisKKyAgY29uc3Qgc2l6ZV90IG9mZnNldCA9IHN0YXRpY19jYXN0PGludD4oc3RkOjptaW4o
e1Q6OnZhbHVlLi4ufSkpOworICBFWFBFQ1RfRVEoU3B5SGFzaCh0eXBlezd9KSwgU3B5SGFzaChz
aXplX3R7NyArIG9mZnNldH0pKTsKK30KKwordm9pZCBUZXN0Q3VzdG9tSGFzaFR5cGUoSW52b2tl
VGFnQ29uc3RhbnQ8SW52b2tlVGFnOjprTm9uZT4pIHsKKyNpZiBBQlNMX0hBU0hfSU5URVJOQUxf
Q0FOX1BPSVNPTl8KKyAgLy8gaXNfaGFzaGFibGUgaXMgZmFsc2UgaWYgd2UgZG9uJ3Qgc3VwcG9y
dCBhbnkgb2YgdGhlIGhvb2tzLgorICB1c2luZyB0eXBlID0gQ3VzdG9tSGFzaFR5cGU8PjsKKyAg
RVhQRUNUX0ZBTFNFKGlzX2hhc2hhYmxlPHR5cGU+KCkpOworICBFWFBFQ1RfRkFMU0UoaXNfaGFz
aGFibGU8Y29uc3QgdHlwZT4oKSk7CisgIEVYUEVDVF9GQUxTRShpc19oYXNoYWJsZTxjb25zdCB0
eXBlJj4oKSk7CisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXworfQor
Cit0ZW1wbGF0ZSA8SW52b2tlVGFnIFRhZywgdHlwZW5hbWUuLi4gVD4KK3ZvaWQgVGVzdEN1c3Rv
bUhhc2hUeXBlKEludm9rZVRhZ0NvbnN0YW50PFRhZz4gdGFnLCBULi4uIHQpIHsKKyAgY29uc3Rl
eHByIGF1dG8gbmV4dCA9IHN0YXRpY19jYXN0PEludm9rZVRhZz4oc3RhdGljX2Nhc3Q8aW50PihU
YWcpICsgMSk7CisgIFRlc3RDdXN0b21IYXNoVHlwZShJbnZva2VUYWdDb25zdGFudDxuZXh0Pigp
LCB0YWcsIHQuLi4pOworICBUZXN0Q3VzdG9tSGFzaFR5cGUoSW52b2tlVGFnQ29uc3RhbnQ8bmV4
dD4oKSwgdC4uLik7Cit9CisKK1RFU1QoSGFzaFRlc3QsIEN1c3RvbUhhc2hUeXBlKSB7CisgIFRl
c3RDdXN0b21IYXNoVHlwZShJbnZva2VUYWdDb25zdGFudDxJbnZva2VUYWd7fT4oKSk7Cit9CisK
K1RFU1QoSGFzaFRlc3QsIE5vT3BzQXJlRXF1aXZhbGVudCkgeworICBFWFBFQ1RfRVEoSGFzaDxO
b09wPigpKHt9KSwgSGFzaDxOb09wPigpKHt9KSk7CisgIEVYUEVDVF9FUShIYXNoPE5vT3A+KCko
e30pLCBIYXNoPEVtcHR5Q29tYmluZT4oKSh7fSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2NsYXNzIEhhc2hJbnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKK1RZUEVE
X1RFU1RfQ0FTRV9QKEhhc2hJbnRUZXN0KTsKKworVFlQRURfVEVTVF9QKEhhc2hJbnRUZXN0LCBC
YXNpY1VzYWdlKSB7CisgIEVYUEVDVF9ORShIYXNoPE5vT3A+KCkoe30pLCBIYXNoPFR5cGVQYXJh
bT4oKSgwKSk7CisgIEVYUEVDVF9ORShIYXNoPE5vT3A+KCkoe30pLAorICAgICAgICAgICAgSGFz
aDxUeXBlUGFyYW0+KCkoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptYXgoKSkpOwor
ICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlUGFyYW0+OjptaW4oKSAhPSAwKSB7CisgICAg
RVhQRUNUX05FKEhhc2g8Tm9PcD4oKSh7fSksCisgICAgICAgICAgICAgIEhhc2g8VHlwZVBhcmFt
PigpKHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZVBhcmFtPjo6bWluKCkpKTsKKyAgfQorCisgIEVY
UEVDVF9FUShIYXNoPENvbWJpbmVJdGVyYXRpdmU8VHlwZVBhcmFtPj4oKSh7fSksCisgICAgICAg
ICAgICBIYXNoPENvbWJpbmVWYXJpYWRpYzxUeXBlUGFyYW0+PigpKHt9KSk7Cit9CisKK1JFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEhhc2hJbnRUZXN0LCBCYXNpY1VzYWdlKTsKK3VzaW5nIElu
dFR5cGVzID0gdGVzdGluZzo6VHlwZXM8dW5zaWduZWQgY2hhciwgY2hhciwgaW50LCBpbnQzMl90
LCBpbnQ2NF90LCB1aW50MzJfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDY0X3QsIHNpemVfdD47CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgSGFzaElu
dFRlc3QsIEludFR5cGVzKTsKKworc3RydWN0IFN0cnVjdFdpdGhQYWRkaW5nIHsKKyAgY2hhciBj
OworICBpbnQgaTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhh
c2hWYWx1ZShIIGhhc2hfc3RhdGUsIGNvbnN0IFN0cnVjdFdpdGhQYWRkaW5nJiBzKSB7CisgICAg
cmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBzLmMsIHMuaSk7CisgIH0K
K307CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFN0cnVjdFdpdGhQYWRkaW5nKSA+IHNpemVvZihj
aGFyKSArIHNpemVvZihpbnQpLAorICAgICAgICAgICAgICAiU3RydWN0V2l0aFBhZGRpbmcgZG9l
c24ndCBoYXZlIHBhZGRpbmciKTsKK3N0YXRpY19hc3NlcnQoc3RkOjppc19zdGFuZGFyZF9sYXlv
dXQ8U3RydWN0V2l0aFBhZGRpbmc+Ojp2YWx1ZSwgIiIpOworCisvLyBUaGlzIGNoZWNrIGhhcyB0
byBiZSBkaXNhYmxlZCBiZWNhdXNlIGxpYnN0ZGMrKyBkb2Vzbid0IHN1cHBvcnQgaXQuCisvLyBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2NvbnN0cnVjdGlibGU8U3RydWN0V2l0aFBh
ZGRpbmc+Ojp2YWx1ZSwgIiIpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBBcnJh
eVNsaWNlIHsKKyAgVCogYmVnaW47CisgIFQqIGVuZDsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIGNvbnN0IEFycmF5U2xp
Y2UmIHNsaWNlKSB7CisgICAgZm9yIChhdXRvIHQgPSBzbGljZS5iZWdpbjsgdCAhPSBzbGljZS5l
bmQ7ICsrdCkgeworICAgICAgaGFzaF9zdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hf
c3RhdGUpLCAqdCk7CisgICAgfQorICAgIHJldHVybiBoYXNoX3N0YXRlOworICB9Cit9OworCitU
RVNUKEhhc2hUZXN0LCBIYXNoTm9uVW5pcXVlbHlSZXByZXNlbnRlZFR5cGUpIHsKKyAgLy8gQ3Jl
YXRlIGVxdWFsIFN0cnVjdFdpdGhQYWRkaW5nIG9iamVjdHMgdGhhdCBhcmUga25vd24gdG8gaGF2
ZSBub24tZXF1YWwKKyAgLy8gcGFkZGluZyBieXRlcy4KKyAgc3RhdGljIGNvbnN0IHNpemVfdCBr
TnVtU3RydWN0cyA9IDEwOworICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcjFba051bVN0cnVjdHMgKiBz
aXplb2YoU3RydWN0V2l0aFBhZGRpbmcpXTsKKyAgc3RkOjptZW1zZXQoYnVmZmVyMSwgMCwgc2l6
ZW9mKGJ1ZmZlcjEpKTsKKyAgYXV0byogczEgPSByZWludGVycHJldF9jYXN0PFN0cnVjdFdpdGhQ
YWRkaW5nKj4oYnVmZmVyMSk7CisKKyAgdW5zaWduZWQgY2hhciBidWZmZXIyW2tOdW1TdHJ1Y3Rz
ICogc2l6ZW9mKFN0cnVjdFdpdGhQYWRkaW5nKV07CisgIHN0ZDo6bWVtc2V0KGJ1ZmZlcjIsIDI1
NSwgc2l6ZW9mKGJ1ZmZlcjIpKTsKKyAgYXV0byogczIgPSByZWludGVycHJldF9jYXN0PFN0cnVj
dFdpdGhQYWRkaW5nKj4oYnVmZmVyMik7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga051bVN0cnVj
dHM7ICsraSkgeworICAgIFNDT1BFRF9UUkFDRShpKTsKKyAgICBzMVtpXS5jID0gczJbaV0uYyA9
ICcwJyArIGk7CisgICAgczFbaV0uaSA9IHMyW2ldLmkgPSBpOworICAgIEFTU0VSVF9GQUxTRSht
ZW1jbXAoYnVmZmVyMSArIGkgKiBzaXplb2YoU3RydWN0V2l0aFBhZGRpbmcpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgYnVmZmVyMiArIGkgKiBzaXplb2YoU3RydWN0V2l0aFBhZGRpbmcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFN0cnVjdFdpdGhQYWRkaW5nKSkgPT0gMCkK
KyAgICAgICAgPDwgIkJ1ZyBpbiB0ZXN0IGNvZGU6IG9iamVjdHMgZG8gbm90IGhhdmUgdW5lcXVh
bCIKKyAgICAgICAgPDwgIiBvYmplY3QgcmVwcmVzZW50YXRpb25zIjsKKyAgfQorCisgIEVYUEVD
VF9FUShIYXNoPFN0cnVjdFdpdGhQYWRkaW5nPigpKHMxWzBdKSwgSGFzaDxTdHJ1Y3RXaXRoUGFk
ZGluZz4oKShzMlswXSkpOworICBFWFBFQ1RfRVEoSGFzaDxBcnJheVNsaWNlPFN0cnVjdFdpdGhQ
YWRkaW5nPj4oKSh7czEsIHMxICsga051bVN0cnVjdHN9KSwKKyAgICAgICAgICAgIEhhc2g8QXJy
YXlTbGljZTxTdHJ1Y3RXaXRoUGFkZGluZz4+KCkoe3MyLCBzMiArIGtOdW1TdHJ1Y3RzfSkpOwor
fQorCitURVNUKEhhc2hUZXN0LCBTdGFuZGFyZEhhc2hDb250YWluZXJVc2FnZSkgeworICBzdGQ6
OnVub3JkZXJlZF9tYXA8aW50LCBzdGQ6OnN0cmluZywgSGFzaDxpbnQ+PiBtYXAgPSB7ezAsICJm
b28ifSwgeyA0MiwgImJhciIgfX07CisKKyAgRVhQRUNUX05FKG1hcC5maW5kKDApLCBtYXAuZW5k
KCkpOworICBFWFBFQ1RfRVEobWFwLmZpbmQoMSksIG1hcC5lbmQoKSk7CisgIEVYUEVDVF9ORSht
YXAuZmluZCgwdSksIG1hcC5lbmQoKSk7Cit9CisKK3N0cnVjdCBDb252ZXJ0aWJsZUZyb21Ob09w
IHsKKyAgQ29udmVydGlibGVGcm9tTm9PcChOb09wKSB7fSAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhw
bGljaXQpCisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFs
dWUoSCBoYXNoX3N0YXRlLCBDb252ZXJ0aWJsZUZyb21Ob09wKSB7CisgICAgcmV0dXJuIEg6OmNv
bWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCAxKTsKKyAgfQorfTsKKworVEVTVChIYXNoVGVz
dCwgSGV0ZXJvZ2VuZW91c0NhbGwpIHsKKyAgRVhQRUNUX05FKEhhc2g8Q29udmVydGlibGVGcm9t
Tm9PcD4oKShOb09wKCkpLAorICAgICAgICAgICAgSGFzaDxOb09wPigpKE5vT3AoKSkpOworfQor
CitURVNUKElzVW5pcXVlbHlSZXByZXNlbnRlZFRlc3QsIFNhbml0eVRlc3QpIHsKKyAgdXNpbmcg
YWJzbDo6aGFzaF9pbnRlcm5hbDo6aXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ7CisKKyAgRVhQRUNU
X1RSVUUoaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8dW5zaWduZWQgY2hhcj46OnZhbHVlKTsKKyAg
RVhQRUNUX1RSVUUoaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8aW50Pjo6dmFsdWUpOworICBFWFBF
Q1RfRkFMU0UoaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8Ym9vbD46OnZhbHVlKTsKKyAgRVhQRUNU
X0ZBTFNFKGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkPGludCo+Ojp2YWx1ZSk7Cit9CisKK3N0cnVj
dCBJbnRBbmRTdHJpbmcgeworICBpbnQgaTsKKyAgc3RkOjpzdHJpbmcgczsKKworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIElu
dEFuZFN0cmluZyBpbnRfYW5kX3N0cmluZykgeworICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6
bW92ZShoYXNoX3N0YXRlKSwgaW50X2FuZF9zdHJpbmcucywKKyAgICAgICAgICAgICAgICAgICAg
ICBpbnRfYW5kX3N0cmluZy5pKTsKKyAgfQorfTsKKworVEVTVChIYXNoVGVzdCwgU21hbGxWYWx1
ZU9uNjRCeXRlQm91bmRhcnkpIHsKKyAgSGFzaDxJbnRBbmRTdHJpbmc+KCkoSW50QW5kU3RyaW5n
ezAsIHN0ZDo6c3RyaW5nKDYzLCAnMCcpfSk7Cit9CisKK3N0cnVjdCBUeXBlRXJhc2VkIHsKKyAg
c2l6ZV90IG47CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CisgIGZyaWVuZCBIIEFic2xIYXNo
VmFsdWUoSCBoYXNoX3N0YXRlLCBjb25zdCBUeXBlRXJhc2VkJiB2KSB7CisgICAgdi5IYXNoVmFs
dWUoYWJzbDo6SGFzaFN0YXRlOjpDcmVhdGUoJmhhc2hfc3RhdGUpKTsKKyAgICByZXR1cm4gaGFz
aF9zdGF0ZTsKKyAgfQorCisgIHZvaWQgSGFzaFZhbHVlKGFic2w6Okhhc2hTdGF0ZSBzdGF0ZSkg
Y29uc3QgeworICAgIGFic2w6Okhhc2hTdGF0ZTo6Y29tYmluZShzdGQ6Om1vdmUoc3RhdGUpLCBu
KTsKKyAgfQorfTsKKworVEVTVChIYXNoVGVzdCwgVHlwZUVyYXNlZCkgeworICBFWFBFQ1RfVFJV
RSgoaXNfaGFzaGFibGU8VHlwZUVyYXNlZD46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChpc19o
YXNoYWJsZTxzdGQ6OnBhaXI8VHlwZUVyYXNlZCwgaW50Pj46OnZhbHVlKSk7CisKKyAgRVhQRUNU
X0VRKFNweUhhc2goVHlwZUVyYXNlZHs3fSksIFNweUhhc2goc2l6ZV90ezd9KSk7CisgIEVYUEVD
VF9ORShTcHlIYXNoKFR5cGVFcmFzZWR7N30pLCBTcHlIYXNoKHNpemVfdHsxM30pKTsKKworICBF
WFBFQ1RfRVEoU3B5SGFzaChzdGQ6Om1ha2VfcGFpcihUeXBlRXJhc2Vkezd9LCAxNykpLAorICAg
ICAgICAgICAgU3B5SGFzaChzdGQ6Om1ha2VfcGFpcihzaXplX3R7N30sIDE3KSkpOworfQorCit9
ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9oYXNoL2hhc2hfdGVzdGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlM2NkYTY0NDY3ZGZhYjBlZTE2
NjFjMDc1ZjYzYzA2YmMyMTgwMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2hhc2hf
dGVzdGluZy5oCkBAIC0wLDAgKzEsMzcyIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorCisjaWZuZGVmIEFCU0xfSEFTSF9IQVNIX1RFU1RJTkdfSF8KKyNkZWZpbmUg
QUJTTF9IQVNIX0hBU0hfVEVTVElOR19IXworCisjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4K
KyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx2ZWN0
b3I+CisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFsL3NweV9oYXNoX3N0YXRlLmgiCisjaW5jbHVk
ZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9j
YXQuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL3ZhcmlhbnQuaCIKKworbmFtZXNwYWNlIGFic2wg
eworCisvLyBSdW4gdGhlIGFic2w6Okhhc2ggYWxnb3JpdGhtIG92ZXIgYWxsIHRoZSBlbGVtZW50
cyBwYXNzZWQgaW4gYW5kIHZlcmlmeSB0aGF0CisvLyB0aGVpciBoYXNoIGV4cGFuc2lvbiBpcyBj
b25ncnVlbnQgd2l0aCB0aGVpciBgPT1gIG9wZXJhdG9yLgorLy8KKy8vIEl0IGlzIHVzZWQgaW4g
Y29uanVuY3Rpb24gd2l0aCBFWFBFQ1RfVFJVRS4gRmFpbHVyZXMgd2lsbCBvdXRwdXQgaW5mb3Jt
YXRpb24KKy8vIG9uIHdoYXQgcmVxdWlyZW1lbnQgZmFpbGVkIGFuZCBvbiB3aGljaCBvYmplY3Rz
LgorLy8KKy8vIFVzZXJzIHNob3VsZCBwYXNzIGEgY29sbGVjdGlvbiBvZiB0eXBlcyBhcyBlaXRo
ZXIgYW4gaW5pdGlhbGl6ZXIgbGlzdCBvciBhCisvLyBjb250YWluZXIgb2YgY2FzZXMuCisvLwor
Ly8gICBFWFBFQ1RfVFJVRShhYnNsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVj
dGx5KAorLy8gICAgICAge3YxLCB2MiwgLi4uLCB2Tn0pKTsKKy8vCisvLyAgIHN0ZDo6dmVjdG9y
PE15VHlwZT4gY2FzZXM7CisvLyAgIC8vIEZpbGwgY2FzZXMuLi4KKy8vICAgRVhQRUNUX1RSVUUo
YWJzbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShjYXNlcykpOworLy8K
Ky8vIFVzZXJzIGNhbiBwYXNzIGEgdmFyaWV0eSBvZiB0eXBlcyBmb3IgdGVzdGluZyBoZXRlcm9n
ZW5lb3VzIGxvb2t1cCB3aXRoCisvLyBgc3RkOjptYWtlX3R1cGxlYDoKKy8vCisvLyAgIEVYUEVD
VF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhhc2hDb3JyZWN0bHkoCisvLyAg
ICAgICBzdGQ6Om1ha2VfdHVwbGUodjEsIHYyLCAuLi4sIHZOKSkpOworLy8KKy8vCisvLyBJZGVh
bGx5LCB0aGUgdmFsdWVzIHBhc3NlZCBzaG91bGQgcHJvdmlkZSBlbm91Z2ggY292ZXJhZ2Ugb2Yg
dGhlIGA9PWAKKy8vIG9wZXJhdG9yIGFuZCB0aGUgQWJzbEhhc2hWYWx1ZSBpbXBsZW1lbnRhdGlv
bnMuCisvLyBGb3IgZHluYW1pY2FsbHkgc2l6ZWQgdHlwZXMsIHRoZSBlbXB0eSBzdGF0ZSBzaG91
bGQgdXN1YWxseSBiZSBpbmNsdWRlZCBpbgorLy8gdGhlIHZhbHVlcy4KKy8vCisvLyBUaGUgZnVu
Y3Rpb24gYWNjZXB0cyBhbiBvcHRpb25hbCBjb21wYXJhdG9yIGZ1bmN0aW9uLCBpbiBjYXNlIHRo
YXQgYD09YCBpcworLy8gbm90IGVub3VnaCBmb3IgdGhlIHZhbHVlcyBwcm92aWRlZC4KKy8vCisv
LyBVc2FnZToKKy8vCisvLyAgIEVYUEVDVF9UUlVFKGFic2w6OlZlcmlmeVR5cGVJbXBsZW1lbnRz
QWJzbEhhc2hDb3JyZWN0bHkoCisvLyAgICAgICBzdGQ6Om1ha2VfdHVwbGUodjEsIHYyLCAuLi4s
IHZOKSwgTXlDdXN0b21FcXt9KSk7CisvLworLy8gSXQgY2hlY2tzIHRoZSBmb2xsb3dpbmcgcmVx
dWlyZW1lbnRzOgorLy8gICAxLiBUaGUgZXhwYW5zaW9uIGZvciBhIHZhbHVlIGlzIGRldGVybWlu
aXN0aWMuCisvLyAgIDIuIEZvciBhbnkgdHdvIG9iamVjdHMgYGFgIGFuZCBgYmAgaW4gdGhlIHNl
cXVlbmNlLCBpZiBgYSA9PSBiYCBldmFsdWF0ZXMKKy8vICAgICAgdG8gdHJ1ZSwgdGhlbiB0aGVp
ciBoYXNoIGV4cGFuc2lvbiBtdXN0IGJlIGVxdWFsLgorLy8gICAzLiBJZiBgYSA9PSBiYCBldmFs
dWF0ZXMgdG8gZmFsc2UgdGhlaXIgaGFzaCBleHBhbnNpb24gbXVzdCBiZSB1bmVxdWFsLgorLy8g
ICA0LiBJZiBgYSA9PSBiYCBldmFsdWF0ZXMgdG8gZmFsc2UgbmVpdGhlciBoYXNoIGV4cGFuc2lv
biBjYW4gYmUgYQorLy8gICAgICBzdWZmaXggb2YgdGhlIG90aGVyLgorLy8gICA1LiBBYnNsSGFz
aFZhbHVlIG92ZXJsb2FkcyBzaG91bGQgbm90IGJlIGNhbGxlZCBieSB0aGUgdXNlci4gVGhleSBh
cmUgb25seQorLy8gICAgICBtZWFudCB0byBiZSBjYWxsZWQgYnkgdGhlIGZyYW1ld29yay4gVXNl
cnMgc2hvdWxkIGNhbGwgSDo6Y29tYmluZSgpIGFuZAorLy8gICAgICBIOjpjb21iaW5lX2NvbnRp
Z3VvdXMoKS4KKy8vICAgNi4gTm8gbW92ZWQtZnJvbSBpbnN0YW5jZSBvZiB0aGUgaGFzaCBzdGF0
ZSBpcyB1c2VkIGluIHRoZSBpbXBsZW1lbnRhdGlvbgorLy8gICAgICBvZiBBYnNsSGFzaFZhbHVl
LgorLy8KKy8vIFRoZSB2YWx1ZXMgZG8gbm90IGhhdmUgdG8gaGF2ZSB0aGUgc2FtZSB0eXBlLiBU
aGlzIGNhbiBiZSB1c2VmdWwgZm9yCisvLyBlcXVpdmFsZW50IHR5cGVzIHRoYXQgc3VwcG9ydCBo
ZXRlcm9nZW5lb3VzIGxvb2t1cC4KKy8vCisvLyBBIHBvc3NpYmxlIHJlYXNvbiBmb3IgYnJlYWtp
bmcgKDIpIGlzIGNvbWJpbmluZyBzdGF0ZSBpbiB0aGUgaGFzaCBleHBhbnNpb24KKy8vIHRoYXQg
d2FzIG5vdCB1c2VkIGluIGA9PWAuCisvLyBGb3IgZXhhbXBsZToKKy8vCisvLyBzdHJ1Y3QgQmFk
MiB7CisvLyAgIGludCBhLCBiOworLy8gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKy8vICAgZnJp
ZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBCYWQyIHgpIHsKKy8vICAgICAvLyBVc2VzIGEg
YW5kIGIuCisvLyAgICAgcmV0dXJuIEg6OmNvbWJpbmUoeC5hLCB4LmIpOworLy8gICB9CisvLyAg
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oQmFkMiB4LCBCYWQyIHkpIHsKKy8vICAgICAvLyBPbmx5
IHVzZXMgYS4KKy8vICAgICByZXR1cm4geC5hID09IHkuYTsKKy8vICAgfQorLy8gfTsKKy8vCisv
LyBBcyBmb3IgKDMpLCBicmVha2luZyB0aGlzIHVzdWFsbHkgbWVhbnMgdGhhdCB0aGVyZSBpcyBz
dGF0ZSBiZWluZyBwYXNzZWQgdG8KKy8vIHRoZSBgPT1gIG9wZXJhdG9yIHRoYXQgaXMgbm90IHVz
ZWQgaW4gdGhlIGhhc2ggZXhwYW5zaW9uLgorLy8gRm9yIGV4YW1wbGU6CisvLworLy8gc3RydWN0
IEJhZDMgeworLy8gICBpbnQgYSwgYjsKKy8vICAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CisvLyAg
IGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBzdGF0ZSwgQmFkMyB4KSB7CisvLyAgICAgLy8gT25s
eSB1c2VzIGEuCisvLyAgICAgcmV0dXJuIEg6OmNvbWJpbmUoeC5hKTsKKy8vICAgfQorLy8gICBm
cmllbmQgYm9vbCBvcGVyYXRvcj09KEJhZDMgeCwgQmFkMyB5KSB7CisvLyAgICAgLy8gVXNlcyBh
IGFuZCBiLgorLy8gICAgIHJldHVybiB4LmEgPT0geS5hICYmIHguYiA9PSB5LmI7CisvLyAgIH0K
Ky8vIH07CisvLworLy8gRmluYWxseSwgYSBjb21tb24gd2F5IHRvIGJyZWFrIDQgaXMgYnkgY29t
YmluaW5nIGR5bmFtaWMgcmFuZ2VzIHdpdGhvdXQKKy8vIGNvbWJpbmluZyB0aGUgc2l6ZSBvZiB0
aGUgcmFuZ2UuCisvLyBGb3IgZXhhbXBsZToKKy8vCisvLyBzdHJ1Y3QgQmFkNCB7CisvLyAgIGlu
dCAqcCwgc2l6ZTsKKy8vICAgdGVtcGxhdGUgPHR5cGVuYW1lIEg+CisvLyAgIGZyaWVuZCBIIEFi
c2xIYXNoVmFsdWUoSCBzdGF0ZSwgQmFkNCB4KSB7CisvLyAgICAgcmV0dXJuIEg6OmNvbWJpbmVf
cmFuZ2UoeC5wLCB4LnAgKyB4LnNpemUpOworLy8gICB9CisvLyAgIGZyaWVuZCBib29sIG9wZXJh
dG9yPT0oQmFkNCB4LCBCYWQ0IHkpIHsKKy8vICAgICByZXR1cm4gc3RkOjplcXVhbCh4LnAsIHgu
cCArIHguc2l6ZSwgeS5wLCB5LnAgKyB5LnNpemUpOworLy8gICB9CisvLyB9OworLy8KKy8vIEFu
IGVhc3kgc29sdXRpb24gdG8gdGhpcyBpcyB0byBjb21iaW5lIHRoZSBzaXplIGFmdGVyIGNvbWJp
bmluZyB0aGUgcmFuZ2UsCisvLyBsaWtlIHNvOgorLy8gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4K
Ky8vICAgZnJpZW5kIEggQWJzbEhhc2hWYWx1ZShIIHN0YXRlLCBCYWQ0IHgpIHsKKy8vICAgICBy
ZXR1cm4gSDo6Y29tYmluZShIOjpjb21iaW5lX3JhbmdlKHgucCwgeC5wICsgeC5zaXplKSwgeC5z
aXplKTsKKy8vICAgfQorLy8KK3RlbXBsYXRlIDxpbnQmLi4uIEV4cGxpY2l0QmFycmllciwgdHlw
ZW5hbWUgQ29udGFpbmVyPgorQUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KGNvbnN0IENvbnRh
aW5lciYgdmFsdWVzKTsKKwordGVtcGxhdGUgPGludCYuLi4gRXhwbGljaXRCYXJyaWVyLCB0eXBl
bmFtZSBDb250YWluZXIsIHR5cGVuYW1lIEVxPgorQUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5
KGNvbnN0IENvbnRhaW5lciYgdmFsdWVzLCBFcSBlcXVhbHMpOworCit0ZW1wbGF0ZSA8aW50Ji4u
LiwgdHlwZW5hbWUgVD4KK0FCU0xfTVVTVF9VU0VfUkVTVUxUIHRlc3Rpbmc6OkFzc2VydGlvblJl
c3VsdAorVmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseShzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8VD4gdmFsdWVzKTsKKwordGVtcGxhdGUgPGludCYuLi4sIHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEVxPgorQUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxUPiB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVx
IGVxdWFscyk7CisKK25hbWVzcGFjZSBoYXNoX2ludGVybmFsIHsKKworc3RydWN0IFByaW50Vmlz
aXRvciB7CisgIHNpemVfdCBpbmRleDsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0ZDo6
c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgVCogdmFsdWUpIGNvbnN0IHsKKyAgICByZXR1cm4gYWJz
bDo6U3RyQ2F0KCIjIiwgaW5kZXgsICIoIiwgdGVzdGluZzo6UHJpbnRUb1N0cmluZygqdmFsdWUp
LCAiKSIpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXE+CitzdHJ1Y3QgRXFWaXNp
dG9yIHsKKyAgRXEgZXE7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICBi
b29sIG9wZXJhdG9yKCkoY29uc3QgVCogdCwgY29uc3QgVSogdSkgY29uc3QgeworICAgIHJldHVy
biBlcSgqdCwgKnUpOworICB9Cit9OworCitzdHJ1Y3QgRXhwYW5kVmlzaXRvciB7CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBTcHlIYXNoU3RhdGUgb3BlcmF0b3IoKShjb25zdCBUKiB2YWx1
ZSkgY29uc3QgeworICAgIHJldHVybiBTcHlIYXNoU3RhdGU6OmNvbWJpbmUoU3B5SGFzaFN0YXRl
KCksICp2YWx1ZSk7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5
cGVuYW1lIEVxPgorQUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KGNvbnN0IENvbnRhaW5lciYg
dmFsdWVzLCBFcSBlcXVhbHMpIHsKKyAgdXNpbmcgViA9IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFs
dWVfdHlwZTsKKworICBzdHJ1Y3QgSW5mbyB7CisgICAgY29uc3QgViYgdmFsdWU7CisgICAgc2l6
ZV90IGluZGV4OworICAgIHN0ZDo6c3RyaW5nIFRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gYWJz
bDo6dmlzaXQoUHJpbnRWaXNpdG9ye2luZGV4fSwgdmFsdWUpOyB9CisgICAgU3B5SGFzaFN0YXRl
IGV4cGFuZCgpIGNvbnN0IHsgcmV0dXJuIGFic2w6OnZpc2l0KEV4cGFuZFZpc2l0b3J7fSwgdmFs
dWUpOyB9CisgIH07CisKKyAgdXNpbmcgRXFDbGFzcyA9IHN0ZDo6dmVjdG9yPEluZm8+OworICBz
dGQ6OnZlY3RvcjxFcUNsYXNzPiBjbGFzc2VzOworCisgIC8vIEdhdGhlciB0aGUgdmFsdWVzIGlu
IGVxdWl2YWxlbmNlIGNsYXNzZXMuCisgIHNpemVfdCBpID0gMDsKKyAgZm9yIChjb25zdCBhdXRv
JiB2YWx1ZSA6IHZhbHVlcykgeworICAgIEVxQ2xhc3MqIGMgPSBudWxscHRyOworICAgIGZvciAo
YXV0byYgZXFjbGFzcyA6IGNsYXNzZXMpIHsKKyAgICAgIGlmIChhYnNsOjp2aXNpdChFcVZpc2l0
b3I8RXE+e2VxdWFsc30sIHZhbHVlLCBlcWNsYXNzWzBdLnZhbHVlKSkgeworICAgICAgICBjID0g
JmVxY2xhc3M7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBpZiAoYyA9PSBu
dWxscHRyKSB7CisgICAgICBjbGFzc2VzLmVtcGxhY2VfYmFjaygpOworICAgICAgYyA9ICZjbGFz
c2VzLmJhY2soKTsKKyAgICB9CisgICAgYy0+cHVzaF9iYWNrKHt2YWx1ZSwgaX0pOworICAgICsr
aTsKKworICAgIC8vIFZlcmlmeSBwb3RlbnRpYWwgZXJyb3JzIGNhcHR1cmVkIGJ5IFNweUhhc2hT
dGF0ZS4KKyAgICBpZiAoYXV0byBlcnJvciA9IGMtPmJhY2soKS5leHBhbmQoKS5lcnJvcigpKSB7
CisgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICplcnJvcjsKKyAg
ICB9CisgIH0KKworICBpZiAoY2xhc3Nlcy5zaXplKCkgPCAyKSB7CisgICAgcmV0dXJuIHRlc3Rp
bmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgICAgICA8PCAiQXQgbGVhc3QgdHdvIGVxdWl2
YWxlbmNlIGNsYXNzZXMgYXJlIGV4cGVjdGVkLiI7CisgIH0KKworICAvLyBXZSBhc3N1bWUgdGhh
dCBlcXVhbGl0eSBpcyBjb3JyZWN0bHkgaW1wbGVtZW50ZWQuCisgIC8vIE5vdyB3ZSB2ZXJpZnkg
dGhhdCBBYnNsSGFzaFZhbHVlIGlzIGFsc28gY29ycmVjdGx5IGltcGxlbWVudGVkLgorCisgIGZv
ciAoY29uc3QgYXV0byYgYyA6IGNsYXNzZXMpIHsKKyAgICAvLyBBbGwgZWxlbWVudHMgb2YgdGhl
IGVxdWl2YWxlbmNlIGNsYXNzIG11c3QgaGF2ZSB0aGUgc2FtZSBoYXNoIGV4cGFuc2lvbi4KKyAg
ICBjb25zdCBTcHlIYXNoU3RhdGUgZXhwZWN0ZWQgPSBjWzBdLmV4cGFuZCgpOworICAgIGZvciAo
Y29uc3QgSW5mbyYgdiA6IGMpIHsKKyAgICAgIGlmICh2LmV4cGFuZCgpICE9IHYuZXhwYW5kKCkp
IHsKKyAgICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgICAg
ICAgICAgPDwgIkhhc2ggZXhwYW5zaW9uIGZvciAiIDw8IHYuVG9TdHJpbmcoKQorICAgICAgICAg
ICAgICAgPDwgIiBpcyBub24tZGV0ZXJtaW5pc3RpYy4iOworICAgICAgfQorICAgICAgaWYgKHYu
ZXhwYW5kKCkgIT0gZXhwZWN0ZWQpIHsKKyAgICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlv
bkZhaWx1cmUoKQorICAgICAgICAgICAgICAgPDwgIlZhbHVlcyAiIDw8IGNbMF0uVG9TdHJpbmco
KSA8PCAiIGFuZCAiIDw8IHYuVG9TdHJpbmcoKQorICAgICAgICAgICAgICAgPDwgIiBldmFsdWF0
ZSBhcyBlcXVhbCBidXQgaGF2ZSBhbiB1bmVxdWFsIGhhc2ggZXhwYW5zaW9uLiI7CisgICAgICB9
CisgICAgfQorCisgICAgLy8gRWxlbWVudHMgZnJvbSBvdGhlciBjbGFzc2VzIG11c3QgaGF2ZSBk
aWZmZXJlbnQgaGFzaCBleHBhbnNpb24uCisgICAgZm9yIChjb25zdCBhdXRvJiBjMiA6IGNsYXNz
ZXMpIHsKKyAgICAgIGlmICgmYyA9PSAmYzIpIGNvbnRpbnVlOworICAgICAgY29uc3QgU3B5SGFz
aFN0YXRlIGMyX2hhc2ggPSBjMlswXS5leHBhbmQoKTsKKyAgICAgIHN3aXRjaCAoU3B5SGFzaFN0
YXRlOjpDb21wYXJlKGV4cGVjdGVkLCBjMl9oYXNoKSkgeworICAgICAgICBjYXNlIFNweUhhc2hT
dGF0ZTo6Q29tcGFyZVJlc3VsdDo6a0VxdWFsOgorICAgICAgICAgIHJldHVybiB0ZXN0aW5nOjpB
c3NlcnRpb25GYWlsdXJlKCkKKyAgICAgICAgICAgICAgICAgPDwgIlZhbHVlcyAiIDw8IGNbMF0u
VG9TdHJpbmcoKSA8PCAiIGFuZCAiIDw8IGMyWzBdLlRvU3RyaW5nKCkKKyAgICAgICAgICAgICAg
ICAgPDwgIiBldmFsdWF0ZSBhcyB1bmVxdWFsIGJ1dCBoYXZlIGFuIGVxdWFsIGhhc2ggZXhwYW5z
aW9uLiI7CisgICAgICAgIGNhc2UgU3B5SGFzaFN0YXRlOjpDb21wYXJlUmVzdWx0OjprQlN1ZmZp
eEE6CisgICAgICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAg
ICAgICAgICAgICA8PCAiSGFzaCBleHBhbnNpb24gb2YgIiA8PCBjMlswXS5Ub1N0cmluZygpCisg
ICAgICAgICAgICAgICAgIDw8ICIgaXMgYSBzdWZmaXggb2YgdGhlIGhhc2ggZXhwYW5zaW9uIG9m
ICIgPDwgY1swXS5Ub1N0cmluZygpCisgICAgICAgICAgICAgICAgIDw8ICIuIjsKKyAgICAgICAg
Y2FzZSBTcHlIYXNoU3RhdGU6OkNvbXBhcmVSZXN1bHQ6OmtBU3VmZml4QjoKKyAgICAgICAgICBy
ZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICAgICAgICAgICAgIDw8ICJI
YXNoIGV4cGFuc2lvbiBvZiAiIDw8IGNbMF0uVG9TdHJpbmcoKQorICAgICAgICAgICAgICAgICA8
PCAiIGlzIGEgc3VmZml4IG9mIHRoZSBoYXNoIGV4cGFuc2lvbiBvZiAiIDw8IGMyWzBdLlRvU3Ry
aW5nKCkKKyAgICAgICAgICAgICAgICAgPDwgIi4iOworICAgICAgICBjYXNlIFNweUhhc2hTdGF0
ZTo6Q29tcGFyZVJlc3VsdDo6a1VuZXF1YWw6CisgICAgICAgICAgYnJlYWs7CisgICAgICB9Cisg
ICAgfQorICB9CisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorc3RydWN0IFR5cGVTZXQgeworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVSwgYm9vbCA9IGRpc2p1bmN0aW9uPHN0ZDo6aXNfc2FtZTxULCBVPi4uLj46OnZhbHVl
PgorICBzdHJ1Y3QgSW5zZXJ0IHsKKyAgICB1c2luZyB0eXBlID0gVHlwZVNldDxVLCBULi4uPjsK
KyAgfTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHN0cnVjdCBJbnNlcnQ8VSwgdHJ1ZT4g
eworICAgIHVzaW5nIHR5cGUgPSBUeXBlU2V0OworICB9OworCisgIHRlbXBsYXRlIDx0ZW1wbGF0
ZSA8dHlwZW5hbWUuLi4+IGNsYXNzIEM+CisgIHVzaW5nIGFwcGx5ID0gQzxULi4uPjsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorc3RydWN0IE1ha2VUeXBlU2V0IDogVHlwZVNldDw+
e307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gVHM+CitzdHJ1Y3QgTWFrZVR5
cGVTZXQ8VCwgVHMuLi4+IDogTWFrZVR5cGVTZXQ8VHMuLi4+Ojp0ZW1wbGF0ZSBJbnNlcnQ8VD46
OnR5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgordXNpbmcgVmFyaWFudEZvclR5
cGVzID0gdHlwZW5hbWUgTWFrZVR5cGVTZXQ8CisgICAgY29uc3QgdHlwZW5hbWUgc3RkOjpkZWNh
eTxUPjo6dHlwZSouLi4+Ojp0ZW1wbGF0ZSBhcHBseTxhYnNsOjp2YXJpYW50PjsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KK3N0cnVjdCBDb250YWluZXJBc1ZlY3RvciB7CisgIHVz
aW5nIFYgPSBhYnNsOjp2YXJpYW50PGNvbnN0IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlw
ZSo+OworICB1c2luZyBPdXQgPSBzdGQ6OnZlY3RvcjxWPjsKKworICBzdGF0aWMgT3V0IERvKGNv
bnN0IENvbnRhaW5lciYgdmFsdWVzKSB7CisgICAgT3V0IG91dDsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIHYgOiB2YWx1ZXMpIG91dC5wdXNoX2JhY2soJnYpOworICAgIHJldHVybiBvdXQ7CisgIH0K
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorc3RydWN0IENvbnRhaW5lckFzVmVjdG9y
PHN0ZDo6dHVwbGU8VC4uLj4+IHsKKyAgdXNpbmcgViA9IFZhcmlhbnRGb3JUeXBlczxULi4uPjsK
KyAgdXNpbmcgT3V0ID0gc3RkOjp2ZWN0b3I8Vj47CisKKyAgdGVtcGxhdGUgPHNpemVfdC4uLiBJ
PgorICBzdGF0aWMgT3V0IERvSW1wbChjb25zdCBzdGQ6OnR1cGxlPFQuLi4+JiB0dXBsZSwgYWJz
bDo6aW5kZXhfc2VxdWVuY2U8SS4uLj4pIHsKKyAgICByZXR1cm4gT3V0eyZzdGQ6OmdldDxJPih0
dXBsZSkuLi59OworICB9CisKKyAgc3RhdGljIE91dCBEbyhjb25zdCBzdGQ6OnR1cGxlPFQuLi4+
JiB2YWx1ZXMpIHsKKyAgICByZXR1cm4gRG9JbXBsKHZhbHVlcywgYWJzbDo6aW5kZXhfc2VxdWVu
Y2VfZm9yPFQuLi4+KCkpOworICB9Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IENvbnRhaW5l
ckFzVmVjdG9yPHN0ZDo6dHVwbGU8Pj4geworICBzdGF0aWMgc3RkOjp2ZWN0b3I8VmFyaWFudEZv
clR5cGVzPGludD4+IERvKHN0ZDo6dHVwbGU8PikgeyByZXR1cm4ge307IH0KK307CisKK3N0cnVj
dCBEZWZhdWx0RXF1YWxzIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cisg
IGJvb2wgb3BlcmF0b3IoKShjb25zdCBUJiB0LCBjb25zdCBVJiB1KSBjb25zdCB7CisgICAgcmV0
dXJuIHQgPT0gdTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwKKwor
dGVtcGxhdGUgPGludCYuLi4sIHR5cGVuYW1lIENvbnRhaW5lcj4KK0FCU0xfTVVTVF9VU0VfUkVT
VUxUIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdAorVmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFz
aENvcnJlY3RseShjb25zdCBDb250YWluZXImIHZhbHVlcykgeworICByZXR1cm4gaGFzaF9pbnRl
cm5hbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENvcnJlY3RseSgKKyAgICAgIGhhc2hf
aW50ZXJuYWw6OkNvbnRhaW5lckFzVmVjdG9yPENvbnRhaW5lcj46OkRvKHZhbHVlcyksCisgICAg
ICBoYXNoX2ludGVybmFsOjpEZWZhdWx0RXF1YWxze30pOworfQorCit0ZW1wbGF0ZSA8aW50Ji4u
LiwgdHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBFcT4KK0FCU0xfTVVTVF9VU0VfUkVTVUxU
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdAorVmVyaWZ5VHlwZUltcGxlbWVudHNBYnNsSGFzaENv
cnJlY3RseShjb25zdCBDb250YWluZXImIHZhbHVlcywgRXEgZXF1YWxzKSB7CisgIHJldHVybiBo
YXNoX2ludGVybmFsOjpWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KAorICAg
ICAgaGFzaF9pbnRlcm5hbDo6Q29udGFpbmVyQXNWZWN0b3I8Q29udGFpbmVyPjo6RG8odmFsdWVz
KSwKKyAgICAgIGVxdWFscyk7Cit9CisKK3RlbXBsYXRlIDxpbnQmLi4uLCB0eXBlbmFtZSBUPgor
QUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0CitWZXJpZnlUeXBl
SW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB2YWx1
ZXMpIHsKKyAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6OlZlcmlmeVR5cGVJbXBsZW1lbnRzQWJzbEhh
c2hDb3JyZWN0bHkoCisgICAgICBoYXNoX2ludGVybmFsOjpDb250YWluZXJBc1ZlY3RvcjxzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8VD4+OjpEbyh2YWx1ZXMpLAorICAgICAgaGFzaF9pbnRlcm5hbDo6
RGVmYXVsdEVxdWFsc3t9KTsKK30KKwordGVtcGxhdGUgPGludCYuLi4sIHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEVxPgorQUJTTF9NVVNUX1VTRV9SRVNVTFQgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
CitWZXJpZnlUeXBlSW1wbGVtZW50c0Fic2xIYXNoQ29ycmVjdGx5KHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxUPiB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVx
IGVxdWFscykgeworICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6VmVyaWZ5VHlwZUltcGxlbWVudHNB
YnNsSGFzaENvcnJlY3RseSgKKyAgICAgIGhhc2hfaW50ZXJuYWw6OkNvbnRhaW5lckFzVmVjdG9y
PHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPj46OkRvKHZhbHVlcyksCisgICAgICBlcXVhbHMpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjZW5kaWYgIC8vIEFCU0xfSEFTSF9IQVNIX1RF
U1RJTkdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L2hhc2gvaW50ZXJuYWwvY2l0eS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjcyZGQxYjdkMGM5ZjUzOGQ5MWQ2
MjdkZmYwNjYyZTRlMGM5YjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5h
bC9jaXR5LmNjCkBAIC0wLDAgKzEsNTkwIEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWls
IEF1dGhvcnMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vIFRoaXMgZmlsZSBwcm92aWRlcyBDaXR5SGFzaDY0KCkgYW5kIHJl
bGF0ZWQgZnVuY3Rpb25zLgorLy8KKy8vIEl0J3MgcHJvYmFibHkgcG9zc2libGUgdG8gY3JlYXRl
IGV2ZW4gZmFzdGVyIGhhc2ggZnVuY3Rpb25zIGJ5CisvLyB3cml0aW5nIGEgcHJvZ3JhbSB0aGF0
IHN5c3RlbWF0aWNhbGx5IGV4cGxvcmVzIHNvbWUgb2YgdGhlIHNwYWNlIG9mCisvLyBwb3NzaWJs
ZSBoYXNoIGZ1bmN0aW9ucywgYnkgdXNpbmcgU0lNRCBpbnN0cnVjdGlvbnMsIG9yIGJ5CisvLyBj
b21wcm9taXNpbmcgb24gaGFzaCBxdWFsaXR5LgorCisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVy
bmFsL2NpdHkuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPiAgLy8gZm9yIG1lbWNweSBhbmQgbWVt
c2V0CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisjaW5jbHVkZSAiYWJzbC9iYXNlL2NvbmZpZy5o
IgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9lbmRpYW4uaCIKKyNpbmNsdWRlICJhYnNs
L2Jhc2UvaW50ZXJuYWwvdW5hbGlnbmVkX2FjY2Vzcy5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9v
cHRpbWl6YXRpb24uaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGhhc2hfaW50ZXJu
YWwgeworCisjaWZkZWYgQUJTTF9JU19CSUdfRU5ESUFOCisjZGVmaW5lIHVpbnQzMl9pbl9leHBl
Y3RlZF9vcmRlcih4KSAoYWJzbDo6Z2Jzd2FwXzMyKHgpKQorI2RlZmluZSB1aW50NjRfaW5fZXhw
ZWN0ZWRfb3JkZXIoeCkgKGFic2w6Omdic3dhcF82NCh4KSkKKyNlbHNlCisjZGVmaW5lIHVpbnQz
Ml9pbl9leHBlY3RlZF9vcmRlcih4KSAoeCkKKyNkZWZpbmUgdWludDY0X2luX2V4cGVjdGVkX29y
ZGVyKHgpICh4KQorI2VuZGlmCisKK3N0YXRpYyB1aW50NjRfdCBGZXRjaDY0KGNvbnN0IGNoYXIg
KnApIHsKKyAgcmV0dXJuIHVpbnQ2NF9pbl9leHBlY3RlZF9vcmRlcihBQlNMX0lOVEVSTkFMX1VO
QUxJR05FRF9MT0FENjQocCkpOworfQorCitzdGF0aWMgdWludDMyX3QgRmV0Y2gzMihjb25zdCBj
aGFyICpwKSB7CisgIHJldHVybiB1aW50MzJfaW5fZXhwZWN0ZWRfb3JkZXIoQUJTTF9JTlRFUk5B
TF9VTkFMSUdORURfTE9BRDMyKHApKTsKK30KKworLy8gU29tZSBwcmltZXMgYmV0d2VlbiAyXjYz
IGFuZCAyXjY0IGZvciB2YXJpb3VzIHVzZXMuCitzdGF0aWMgY29uc3QgdWludDY0X3QgazAgPSAw
eGMzYTVjODVjOTdjYjMxMjdVTEw7CitzdGF0aWMgY29uc3QgdWludDY0X3QgazEgPSAweGI0OTJi
NjZmYmU5OGYyNzNVTEw7CitzdGF0aWMgY29uc3QgdWludDY0X3QgazIgPSAweDlhZTE2YTNiMmY5
MDQwNGZVTEw7CisKKy8vIE1hZ2ljIG51bWJlcnMgZm9yIDMyLWJpdCBoYXNoaW5nLiAgQ29waWVk
IGZyb20gTXVybXVyMy4KK3N0YXRpYyBjb25zdCB1aW50MzJfdCBjMSA9IDB4Y2M5ZTJkNTE7Citz
dGF0aWMgY29uc3QgdWludDMyX3QgYzIgPSAweDFiODczNTkzOworCisvLyBBIDMyLWJpdCB0byAz
Mi1iaXQgaW50ZWdlciBoYXNoIGNvcGllZCBmcm9tIE11cm11cjMuCitzdGF0aWMgdWludDMyX3Qg
Zm1peCh1aW50MzJfdCBoKSB7CisgIGggXj0gaCA+PiAxNjsKKyAgaCAqPSAweDg1ZWJjYTZiOwor
ICBoIF49IGggPj4gMTM7CisgIGggKj0gMHhjMmIyYWUzNTsKKyAgaCBePSBoID4+IDE2OworICBy
ZXR1cm4gaDsKK30KKworc3RhdGljIHVpbnQzMl90IFJvdGF0ZTMyKHVpbnQzMl90IHZhbCwgaW50
IHNoaWZ0KSB7CisgIC8vIEF2b2lkIHNoaWZ0aW5nIGJ5IDMyOiBkb2luZyBzbyB5aWVsZHMgYW4g
dW5kZWZpbmVkIHJlc3VsdC4KKyAgcmV0dXJuIHNoaWZ0ID09IDAgPyB2YWwgOiAoKHZhbCA+PiBz
aGlmdCkgfCAodmFsIDw8ICgzMiAtIHNoaWZ0KSkpOworfQorCisjdW5kZWYgUEVSTVVURTMKKyNk
ZWZpbmUgUEVSTVVURTMoYSwgYiwgYykgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisg
ICAgc3RkOjpzd2FwKGEsIGIpOyAgICAgIFwKKyAgICBzdGQ6OnN3YXAoYSwgYyk7ICAgICAgXAor
ICB9IHdoaWxlICgwKQorCitzdGF0aWMgdWludDMyX3QgTXVyKHVpbnQzMl90IGEsIHVpbnQzMl90
IGgpIHsKKyAgLy8gSGVscGVyIGZyb20gTXVybXVyMyBmb3IgY29tYmluaW5nIHR3byAzMi1iaXQg
dmFsdWVzLgorICBhICo9IGMxOworICBhID0gUm90YXRlMzIoYSwgMTcpOworICBhICo9IGMyOwor
ICBoIF49IGE7CisgIGggPSBSb3RhdGUzMihoLCAxOSk7CisgIHJldHVybiBoICogNSArIDB4ZTY1
NDZiNjQ7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBIYXNoMzJMZW4xM3RvMjQoY29uc3QgY2hhciAq
cywgc2l6ZV90IGxlbikgeworICB1aW50MzJfdCBhID0gRmV0Y2gzMihzIC0gNCArIChsZW4gPj4g
MSkpOworICB1aW50MzJfdCBiID0gRmV0Y2gzMihzICsgNCk7CisgIHVpbnQzMl90IGMgPSBGZXRj
aDMyKHMgKyBsZW4gLSA4KTsKKyAgdWludDMyX3QgZCA9IEZldGNoMzIocyArIChsZW4gPj4gMSkp
OworICB1aW50MzJfdCBlID0gRmV0Y2gzMihzKTsKKyAgdWludDMyX3QgZiA9IEZldGNoMzIocyAr
IGxlbiAtIDQpOworICB1aW50MzJfdCBoID0gbGVuOworCisgIHJldHVybiBmbWl4KE11cihmLCBN
dXIoZSwgTXVyKGQsIE11cihjLCBNdXIoYiwgTXVyKGEsIGgpKSkpKSkpOworfQorCitzdGF0aWMg
dWludDMyX3QgSGFzaDMyTGVuMHRvNChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7CisgIHVp
bnQzMl90IGIgPSAwOworICB1aW50MzJfdCBjID0gOTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsZW47IGkrKykgeworICAgIHNpZ25lZCBjaGFyIHYgPSBzW2ldOworICAgIGIgPSBiICogYzEg
KyB2OworICAgIGMgXj0gYjsKKyAgfQorICByZXR1cm4gZm1peChNdXIoYiwgTXVyKGxlbiwgYykp
KTsKK30KKworc3RhdGljIHVpbnQzMl90IEhhc2gzMkxlbjV0bzEyKGNvbnN0IGNoYXIgKnMsIHNp
emVfdCBsZW4pIHsKKyAgdWludDMyX3QgYSA9IGxlbiwgYiA9IGxlbiAqIDUsIGMgPSA5LCBkID0g
YjsKKyAgYSArPSBGZXRjaDMyKHMpOworICBiICs9IEZldGNoMzIocyArIGxlbiAtIDQpOworICBj
ICs9IEZldGNoMzIocyArICgobGVuID4+IDEpICYgNCkpOworICByZXR1cm4gZm1peChNdXIoYywg
TXVyKGIsIE11cihhLCBkKSkpKTsKK30KKwordWludDMyX3QgQ2l0eUhhc2gzMihjb25zdCBjaGFy
ICpzLCBzaXplX3QgbGVuKSB7CisgIGlmIChsZW4gPD0gMjQpIHsKKyAgICByZXR1cm4gbGVuIDw9
IDEyCisgICAgICAgICAgICAgICA/IChsZW4gPD0gNCA/IEhhc2gzMkxlbjB0bzQocywgbGVuKSA6
IEhhc2gzMkxlbjV0bzEyKHMsIGxlbikpCisgICAgICAgICAgICAgICA6IEhhc2gzMkxlbjEzdG8y
NChzLCBsZW4pOworICB9CisKKyAgLy8gbGVuID4gMjQKKyAgdWludDMyX3QgaCA9IGxlbiwgZyA9
IGMxICogbGVuLCBmID0gZzsKKworICB1aW50MzJfdCBhMCA9IFJvdGF0ZTMyKEZldGNoMzIocyAr
IGxlbiAtIDQpICogYzEsIDE3KSAqIGMyOworICB1aW50MzJfdCBhMSA9IFJvdGF0ZTMyKEZldGNo
MzIocyArIGxlbiAtIDgpICogYzEsIDE3KSAqIGMyOworICB1aW50MzJfdCBhMiA9IFJvdGF0ZTMy
KEZldGNoMzIocyArIGxlbiAtIDE2KSAqIGMxLCAxNykgKiBjMjsKKyAgdWludDMyX3QgYTMgPSBS
b3RhdGUzMihGZXRjaDMyKHMgKyBsZW4gLSAxMikgKiBjMSwgMTcpICogYzI7CisgIHVpbnQzMl90
IGE0ID0gUm90YXRlMzIoRmV0Y2gzMihzICsgbGVuIC0gMjApICogYzEsIDE3KSAqIGMyOworICBo
IF49IGEwOworICBoID0gUm90YXRlMzIoaCwgMTkpOworICBoID0gaCAqIDUgKyAweGU2NTQ2YjY0
OworICBoIF49IGEyOworICBoID0gUm90YXRlMzIoaCwgMTkpOworICBoID0gaCAqIDUgKyAweGU2
NTQ2YjY0OworICBnIF49IGExOworICBnID0gUm90YXRlMzIoZywgMTkpOworICBnID0gZyAqIDUg
KyAweGU2NTQ2YjY0OworICBnIF49IGEzOworICBnID0gUm90YXRlMzIoZywgMTkpOworICBnID0g
ZyAqIDUgKyAweGU2NTQ2YjY0OworICBmICs9IGE0OworICBmID0gUm90YXRlMzIoZiwgMTkpOwor
ICBmID0gZiAqIDUgKyAweGU2NTQ2YjY0OworICBzaXplX3QgaXRlcnMgPSAobGVuIC0gMSkgLyAy
MDsKKyAgZG8geworICAgIHVpbnQzMl90IGIwID0gUm90YXRlMzIoRmV0Y2gzMihzKSAqIGMxLCAx
NykgKiBjMjsKKyAgICB1aW50MzJfdCBiMSA9IEZldGNoMzIocyArIDQpOworICAgIHVpbnQzMl90
IGIyID0gUm90YXRlMzIoRmV0Y2gzMihzICsgOCkgKiBjMSwgMTcpICogYzI7CisgICAgdWludDMy
X3QgYjMgPSBSb3RhdGUzMihGZXRjaDMyKHMgKyAxMikgKiBjMSwgMTcpICogYzI7CisgICAgdWlu
dDMyX3QgYjQgPSBGZXRjaDMyKHMgKyAxNik7CisgICAgaCBePSBiMDsKKyAgICBoID0gUm90YXRl
MzIoaCwgMTgpOworICAgIGggPSBoICogNSArIDB4ZTY1NDZiNjQ7CisgICAgZiArPSBiMTsKKyAg
ICBmID0gUm90YXRlMzIoZiwgMTkpOworICAgIGYgPSBmICogYzE7CisgICAgZyArPSBiMjsKKyAg
ICBnID0gUm90YXRlMzIoZywgMTgpOworICAgIGcgPSBnICogNSArIDB4ZTY1NDZiNjQ7CisgICAg
aCBePSBiMyArIGIxOworICAgIGggPSBSb3RhdGUzMihoLCAxOSk7CisgICAgaCA9IGggKiA1ICsg
MHhlNjU0NmI2NDsKKyAgICBnIF49IGI0OworICAgIGcgPSBhYnNsOjpnYnN3YXBfMzIoZykgKiA1
OworICAgIGggKz0gYjQgKiA1OworICAgIGggPSBhYnNsOjpnYnN3YXBfMzIoaCk7CisgICAgZiAr
PSBiMDsKKyAgICBQRVJNVVRFMyhmLCBoLCBnKTsKKyAgICBzICs9IDIwOworICB9IHdoaWxlICgt
LWl0ZXJzICE9IDApOworICBnID0gUm90YXRlMzIoZywgMTEpICogYzE7CisgIGcgPSBSb3RhdGUz
MihnLCAxNykgKiBjMTsKKyAgZiA9IFJvdGF0ZTMyKGYsIDExKSAqIGMxOworICBmID0gUm90YXRl
MzIoZiwgMTcpICogYzE7CisgIGggPSBSb3RhdGUzMihoICsgZywgMTkpOworICBoID0gaCAqIDUg
KyAweGU2NTQ2YjY0OworICBoID0gUm90YXRlMzIoaCwgMTcpICogYzE7CisgIGggPSBSb3RhdGUz
MihoICsgZiwgMTkpOworICBoID0gaCAqIDUgKyAweGU2NTQ2YjY0OworICBoID0gUm90YXRlMzIo
aCwgMTcpICogYzE7CisgIHJldHVybiBoOworfQorCisvLyBCaXR3aXNlIHJpZ2h0IHJvdGF0ZS4g
IE5vcm1hbGx5IHRoaXMgd2lsbCBjb21waWxlIHRvIGEgc2luZ2xlCisvLyBpbnN0cnVjdGlvbiwg
ZXNwZWNpYWxseSBpZiB0aGUgc2hpZnQgaXMgYSBtYW5pZmVzdCBjb25zdGFudC4KK3N0YXRpYyB1
aW50NjRfdCBSb3RhdGUodWludDY0X3QgdmFsLCBpbnQgc2hpZnQpIHsKKyAgLy8gQXZvaWQgc2hp
ZnRpbmcgYnkgNjQ6IGRvaW5nIHNvIHlpZWxkcyBhbiB1bmRlZmluZWQgcmVzdWx0LgorICByZXR1
cm4gc2hpZnQgPT0gMCA/IHZhbCA6ICgodmFsID4+IHNoaWZ0KSB8ICh2YWwgPDwgKDY0IC0gc2hp
ZnQpKSk7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBTaGlmdE1peCh1aW50NjRfdCB2YWwpIHsgcmV0
dXJuIHZhbCBeICh2YWwgPj4gNDcpOyB9CisKK3N0YXRpYyB1aW50NjRfdCBIYXNoTGVuMTYodWlu
dDY0X3QgdSwgdWludDY0X3QgdikgeworICByZXR1cm4gSGFzaDEyOHRvNjQodWludDEyOCh1LCB2
KSk7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBIYXNoTGVuMTYodWludDY0X3QgdSwgdWludDY0X3Qg
diwgdWludDY0X3QgbXVsKSB7CisgIC8vIE11cm11ci1pbnNwaXJlZCBoYXNoaW5nLgorICB1aW50
NjRfdCBhID0gKHUgXiB2KSAqIG11bDsKKyAgYSBePSAoYSA+PiA0Nyk7CisgIHVpbnQ2NF90IGIg
PSAodiBeIGEpICogbXVsOworICBiIF49IChiID4+IDQ3KTsKKyAgYiAqPSBtdWw7CisgIHJldHVy
biBiOworfQorCitzdGF0aWMgdWludDY0X3QgSGFzaExlbjB0bzE2KGNvbnN0IGNoYXIgKnMsIHNp
emVfdCBsZW4pIHsKKyAgaWYgKGxlbiA+PSA4KSB7CisgICAgdWludDY0X3QgbXVsID0gazIgKyBs
ZW4gKiAyOworICAgIHVpbnQ2NF90IGEgPSBGZXRjaDY0KHMpICsgazI7CisgICAgdWludDY0X3Qg
YiA9IEZldGNoNjQocyArIGxlbiAtIDgpOworICAgIHVpbnQ2NF90IGMgPSBSb3RhdGUoYiwgMzcp
ICogbXVsICsgYTsKKyAgICB1aW50NjRfdCBkID0gKFJvdGF0ZShhLCAyNSkgKyBiKSAqIG11bDsK
KyAgICByZXR1cm4gSGFzaExlbjE2KGMsIGQsIG11bCk7CisgIH0KKyAgaWYgKGxlbiA+PSA0KSB7
CisgICAgdWludDY0X3QgbXVsID0gazIgKyBsZW4gKiAyOworICAgIHVpbnQ2NF90IGEgPSBGZXRj
aDMyKHMpOworICAgIHJldHVybiBIYXNoTGVuMTYobGVuICsgKGEgPDwgMyksIEZldGNoMzIocyAr
IGxlbiAtIDQpLCBtdWwpOworICB9CisgIGlmIChsZW4gPiAwKSB7CisgICAgdWludDhfdCBhID0g
c1swXTsKKyAgICB1aW50OF90IGIgPSBzW2xlbiA+PiAxXTsKKyAgICB1aW50OF90IGMgPSBzW2xl
biAtIDFdOworICAgIHVpbnQzMl90IHkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYSkgKyAoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGIpIDw8IDgpOworICAgIHVpbnQzMl90IHogPSBsZW4gKyAoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGMpIDw8IDIpOworICAgIHJldHVybiBTaGlmdE1peCh5ICogazIg
XiB6ICogazApICogazI7CisgIH0KKyAgcmV0dXJuIGsyOworfQorCisvLyBUaGlzIHByb2JhYmx5
IHdvcmtzIHdlbGwgZm9yIDE2LWJ5dGUgc3RyaW5ncyBhcyB3ZWxsLCBidXQgaXQgbWF5IGJlIG92
ZXJraWxsCisvLyBpbiB0aGF0IGNhc2UuCitzdGF0aWMgdWludDY0X3QgSGFzaExlbjE3dG8zMihj
b25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7CisgIHVpbnQ2NF90IG11bCA9IGsyICsgbGVuICog
MjsKKyAgdWludDY0X3QgYSA9IEZldGNoNjQocykgKiBrMTsKKyAgdWludDY0X3QgYiA9IEZldGNo
NjQocyArIDgpOworICB1aW50NjRfdCBjID0gRmV0Y2g2NChzICsgbGVuIC0gOCkgKiBtdWw7Cisg
IHVpbnQ2NF90IGQgPSBGZXRjaDY0KHMgKyBsZW4gLSAxNikgKiBrMjsKKyAgcmV0dXJuIEhhc2hM
ZW4xNihSb3RhdGUoYSArIGIsIDQzKSArIFJvdGF0ZShjLCAzMCkgKyBkLAorICAgICAgICAgICAg
ICAgICAgIGEgKyBSb3RhdGUoYiArIGsyLCAxOCkgKyBjLCBtdWwpOworfQorCisvLyBSZXR1cm4g
YSAxNi1ieXRlIGhhc2ggZm9yIDQ4IGJ5dGVzLiAgUXVpY2sgYW5kIGRpcnR5LgorLy8gQ2FsbGVy
cyBkbyBiZXN0IHRvIHVzZSAicmFuZG9tLWxvb2tpbmciIHZhbHVlcyBmb3IgYSBhbmQgYi4KK3N0
YXRpYyBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBXZWFrSGFzaExlbjMyV2l0aFNlZWRz
KHVpbnQ2NF90IHcsIHVpbnQ2NF90IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHksIHVpbnQ2NF90IHosCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90
IGEsIHVpbnQ2NF90IGIpIHsKKyAgYSArPSB3OworICBiID0gUm90YXRlKGIgKyBhICsgeiwgMjEp
OworICB1aW50NjRfdCBjID0gYTsKKyAgYSArPSB4OworICBhICs9IHk7CisgIGIgKz0gUm90YXRl
KGEsIDQ0KTsKKyAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGEgKyB6LCBiICsgYyk7Cit9CisKKy8v
IFJldHVybiBhIDE2LWJ5dGUgaGFzaCBmb3Igc1swXSAuLi4gc1szMV0sIGEsIGFuZCBiLiAgUXVp
Y2sgYW5kIGRpcnR5Lgorc3RhdGljIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IFdlYWtI
YXNoTGVuMzJXaXRoU2VlZHMoY29uc3QgY2hhciAqcywgdWludDY0X3QgYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgYikg
eworICByZXR1cm4gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhGZXRjaDY0KHMpLCBGZXRjaDY0KHMg
KyA4KSwgRmV0Y2g2NChzICsgMTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
ZXRjaDY0KHMgKyAyNCksIGEsIGIpOworfQorCisvLyBSZXR1cm4gYW4gOC1ieXRlIGhhc2ggZm9y
IDMzIHRvIDY0IGJ5dGVzLgorc3RhdGljIHVpbnQ2NF90IEhhc2hMZW4zM3RvNjQoY29uc3QgY2hh
ciAqcywgc2l6ZV90IGxlbikgeworICB1aW50NjRfdCBtdWwgPSBrMiArIGxlbiAqIDI7CisgIHVp
bnQ2NF90IGEgPSBGZXRjaDY0KHMpICogazI7CisgIHVpbnQ2NF90IGIgPSBGZXRjaDY0KHMgKyA4
KTsKKyAgdWludDY0X3QgYyA9IEZldGNoNjQocyArIGxlbiAtIDI0KTsKKyAgdWludDY0X3QgZCA9
IEZldGNoNjQocyArIGxlbiAtIDMyKTsKKyAgdWludDY0X3QgZSA9IEZldGNoNjQocyArIDE2KSAq
IGsyOworICB1aW50NjRfdCBmID0gRmV0Y2g2NChzICsgMjQpICogOTsKKyAgdWludDY0X3QgZyA9
IEZldGNoNjQocyArIGxlbiAtIDgpOworICB1aW50NjRfdCBoID0gRmV0Y2g2NChzICsgbGVuIC0g
MTYpICogbXVsOworICB1aW50NjRfdCB1ID0gUm90YXRlKGEgKyBnLCA0MykgKyAoUm90YXRlKGIs
IDMwKSArIGMpICogOTsKKyAgdWludDY0X3QgdiA9ICgoYSArIGcpIF4gZCkgKyBmICsgMTsKKyAg
dWludDY0X3QgdyA9IGFic2w6Omdic3dhcF82NCgodSArIHYpICogbXVsKSArIGg7CisgIHVpbnQ2
NF90IHggPSBSb3RhdGUoZSArIGYsIDQyKSArIGM7CisgIHVpbnQ2NF90IHkgPSAoYWJzbDo6Z2Jz
d2FwXzY0KCh2ICsgdykgKiBtdWwpICsgZykgKiBtdWw7CisgIHVpbnQ2NF90IHogPSBlICsgZiAr
IGM7CisgIGEgPSBhYnNsOjpnYnN3YXBfNjQoKHggKyB6KSAqIG11bCArIHkpICsgYjsKKyAgYiA9
IFNoaWZ0TWl4KCh6ICsgYSkgKiBtdWwgKyBkICsgaCkgKiBtdWw7CisgIHJldHVybiBiICsgeDsK
K30KKwordWludDY0X3QgQ2l0eUhhc2g2NChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKSB7Cisg
IGlmIChsZW4gPD0gMzIpIHsKKyAgICBpZiAobGVuIDw9IDE2KSB7CisgICAgICByZXR1cm4gSGFz
aExlbjB0bzE2KHMsIGxlbik7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBIYXNoTGVuMTd0
bzMyKHMsIGxlbik7CisgICAgfQorICB9IGVsc2UgaWYgKGxlbiA8PSA2NCkgeworICAgIHJldHVy
biBIYXNoTGVuMzN0bzY0KHMsIGxlbik7CisgIH0KKworICAvLyBGb3Igc3RyaW5ncyBvdmVyIDY0
IGJ5dGVzIHdlIGhhc2ggdGhlIGVuZCBmaXJzdCwgYW5kIHRoZW4gYXMgd2UKKyAgLy8gbG9vcCB3
ZSBrZWVwIDU2IGJ5dGVzIG9mIHN0YXRlOiB2LCB3LCB4LCB5LCBhbmQgei4KKyAgdWludDY0X3Qg
eCA9IEZldGNoNjQocyArIGxlbiAtIDQwKTsKKyAgdWludDY0X3QgeSA9IEZldGNoNjQocyArIGxl
biAtIDE2KSArIEZldGNoNjQocyArIGxlbiAtIDU2KTsKKyAgdWludDY0X3QgeiA9IEhhc2hMZW4x
NihGZXRjaDY0KHMgKyBsZW4gLSA0OCkgKyBsZW4sIEZldGNoNjQocyArIGxlbiAtIDI0KSk7Cisg
IHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IHYgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRz
KHMgKyBsZW4gLSA2NCwgbGVuLCB6KTsKKyAgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4g
dyA9IFdlYWtIYXNoTGVuMzJXaXRoU2VlZHMocyArIGxlbiAtIDMyLCB5ICsgazEsIHgpOworICB4
ID0geCAqIGsxICsgRmV0Y2g2NChzKTsKKworICAvLyBEZWNyZWFzZSBsZW4gdG8gdGhlIG5lYXJl
c3QgbXVsdGlwbGUgb2YgNjQsIGFuZCBvcGVyYXRlIG9uIDY0LWJ5dGUgY2h1bmtzLgorICBsZW4g
PSAobGVuIC0gMSkgJiB+c3RhdGljX2Nhc3Q8c2l6ZV90Pig2Myk7CisgIGRvIHsKKyAgICB4ID0g
Um90YXRlKHggKyB5ICsgdi5maXJzdCArIEZldGNoNjQocyArIDgpLCAzNykgKiBrMTsKKyAgICB5
ID0gUm90YXRlKHkgKyB2LnNlY29uZCArIEZldGNoNjQocyArIDQ4KSwgNDIpICogazE7CisgICAg
eCBePSB3LnNlY29uZDsKKyAgICB5ICs9IHYuZmlyc3QgKyBGZXRjaDY0KHMgKyA0MCk7CisgICAg
eiA9IFJvdGF0ZSh6ICsgdy5maXJzdCwgMzMpICogazE7CisgICAgdiA9IFdlYWtIYXNoTGVuMzJX
aXRoU2VlZHMocywgdi5zZWNvbmQgKiBrMSwgeCArIHcuZmlyc3QpOworICAgIHcgPSBXZWFrSGFz
aExlbjMyV2l0aFNlZWRzKHMgKyAzMiwgeiArIHcuc2Vjb25kLCB5ICsgRmV0Y2g2NChzICsgMTYp
KTsKKyAgICBzdGQ6OnN3YXAoeiwgeCk7CisgICAgcyArPSA2NDsKKyAgICBsZW4gLT0gNjQ7Cisg
IH0gd2hpbGUgKGxlbiAhPSAwKTsKKyAgcmV0dXJuIEhhc2hMZW4xNihIYXNoTGVuMTYodi5maXJz
dCwgdy5maXJzdCkgKyBTaGlmdE1peCh5KSAqIGsxICsgeiwKKyAgICAgICAgICAgICAgICAgICBI
YXNoTGVuMTYodi5zZWNvbmQsIHcuc2Vjb25kKSArIHgpOworfQorCit1aW50NjRfdCBDaXR5SGFz
aDY0V2l0aFNlZWQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDY0X3Qgc2VlZCkgewor
ICByZXR1cm4gQ2l0eUhhc2g2NFdpdGhTZWVkcyhzLCBsZW4sIGsyLCBzZWVkKTsKK30KKwordWlu
dDY0X3QgQ2l0eUhhc2g2NFdpdGhTZWVkcyhjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50
NjRfdCBzZWVkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNlZWQxKSB7
CisgIHJldHVybiBIYXNoTGVuMTYoQ2l0eUhhc2g2NChzLCBsZW4pIC0gc2VlZDAsIHNlZWQxKTsK
K30KKworLy8gQSBzdWJyb3V0aW5lIGZvciBDaXR5SGFzaDEyOCgpLiAgUmV0dXJucyBhIGRlY2Vu
dCAxMjgtYml0IGhhc2ggZm9yIHN0cmluZ3MKKy8vIG9mIGFueSBsZW5ndGggcmVwcmVzZW50YWJs
ZSBpbiBzaWduZWQgbG9uZy4gIEJhc2VkIG9uIENpdHkgYW5kIE11cm11ci4KK3N0YXRpYyB1aW50
MTI4IENpdHlNdXJtdXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgdWludDEyOCBzZWVkKSB7
CisgIHVpbnQ2NF90IGEgPSBVaW50MTI4TG93NjQoc2VlZCk7CisgIHVpbnQ2NF90IGIgPSBVaW50
MTI4SGlnaDY0KHNlZWQpOworICB1aW50NjRfdCBjID0gMDsKKyAgdWludDY0X3QgZCA9IDA7Cisg
IGludDY0X3QgbCA9IGxlbiAtIDE2OworICBpZiAobCA8PSAwKSB7ICAvLyBsZW4gPD0gMTYKKyAg
ICBhID0gU2hpZnRNaXgoYSAqIGsxKSAqIGsxOworICAgIGMgPSBiICogazEgKyBIYXNoTGVuMHRv
MTYocywgbGVuKTsKKyAgICBkID0gU2hpZnRNaXgoYSArIChsZW4gPj0gOCA/IEZldGNoNjQocykg
OiBjKSk7CisgIH0gZWxzZSB7ICAvLyBsZW4gPiAxNgorICAgIGMgPSBIYXNoTGVuMTYoRmV0Y2g2
NChzICsgbGVuIC0gOCkgKyBrMSwgYSk7CisgICAgZCA9IEhhc2hMZW4xNihiICsgbGVuLCBjICsg
RmV0Y2g2NChzICsgbGVuIC0gMTYpKTsKKyAgICBhICs9IGQ7CisgICAgZG8geworICAgICAgYSBe
PSBTaGlmdE1peChGZXRjaDY0KHMpICogazEpICogazE7CisgICAgICBhICo9IGsxOworICAgICAg
YiBePSBhOworICAgICAgYyBePSBTaGlmdE1peChGZXRjaDY0KHMgKyA4KSAqIGsxKSAqIGsxOwor
ICAgICAgYyAqPSBrMTsKKyAgICAgIGQgXj0gYzsKKyAgICAgIHMgKz0gMTY7CisgICAgICBsIC09
IDE2OworICAgIH0gd2hpbGUgKGwgPiAwKTsKKyAgfQorICBhID0gSGFzaExlbjE2KGEsIGMpOwor
ICBiID0gSGFzaExlbjE2KGQsIGIpOworICByZXR1cm4gdWludDEyOChhIF4gYiwgSGFzaExlbjE2
KGIsIGEpKTsKK30KKwordWludDEyOCBDaXR5SGFzaDEyOFdpdGhTZWVkKGNvbnN0IGNoYXIgKnMs
IHNpemVfdCBsZW4sIHVpbnQxMjggc2VlZCkgeworICBpZiAobGVuIDwgMTI4KSB7CisgICAgcmV0
dXJuIENpdHlNdXJtdXIocywgbGVuLCBzZWVkKTsKKyAgfQorCisgIC8vIFdlIGV4cGVjdCBsZW4g
Pj0gMTI4IHRvIGJlIHRoZSBjb21tb24gY2FzZS4gIEtlZXAgNTYgYnl0ZXMgb2Ygc3RhdGU6Cisg
IC8vIHYsIHcsIHgsIHksIGFuZCB6LgorICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiB2
LCB3OworICB1aW50NjRfdCB4ID0gVWludDEyOExvdzY0KHNlZWQpOworICB1aW50NjRfdCB5ID0g
VWludDEyOEhpZ2g2NChzZWVkKTsKKyAgdWludDY0X3QgeiA9IGxlbiAqIGsxOworICB2LmZpcnN0
ID0gUm90YXRlKHkgXiBrMSwgNDkpICogazEgKyBGZXRjaDY0KHMpOworICB2LnNlY29uZCA9IFJv
dGF0ZSh2LmZpcnN0LCA0MikgKiBrMSArIEZldGNoNjQocyArIDgpOworICB3LmZpcnN0ID0gUm90
YXRlKHkgKyB6LCAzNSkgKiBrMSArIHg7CisgIHcuc2Vjb25kID0gUm90YXRlKHggKyBGZXRjaDY0
KHMgKyA4OCksIDUzKSAqIGsxOworCisgIC8vIFRoaXMgaXMgdGhlIHNhbWUgaW5uZXIgbG9vcCBh
cyBDaXR5SGFzaDY0KCksIG1hbnVhbGx5IHVucm9sbGVkLgorICBkbyB7CisgICAgeCA9IFJvdGF0
ZSh4ICsgeSArIHYuZmlyc3QgKyBGZXRjaDY0KHMgKyA4KSwgMzcpICogazE7CisgICAgeSA9IFJv
dGF0ZSh5ICsgdi5zZWNvbmQgKyBGZXRjaDY0KHMgKyA0OCksIDQyKSAqIGsxOworICAgIHggXj0g
dy5zZWNvbmQ7CisgICAgeSArPSB2LmZpcnN0ICsgRmV0Y2g2NChzICsgNDApOworICAgIHogPSBS
b3RhdGUoeiArIHcuZmlyc3QsIDMzKSAqIGsxOworICAgIHYgPSBXZWFrSGFzaExlbjMyV2l0aFNl
ZWRzKHMsIHYuc2Vjb25kICogazEsIHggKyB3LmZpcnN0KTsKKyAgICB3ID0gV2Vha0hhc2hMZW4z
MldpdGhTZWVkcyhzICsgMzIsIHogKyB3LnNlY29uZCwgeSArIEZldGNoNjQocyArIDE2KSk7Cisg
ICAgc3RkOjpzd2FwKHosIHgpOworICAgIHMgKz0gNjQ7CisgICAgeCA9IFJvdGF0ZSh4ICsgeSAr
IHYuZmlyc3QgKyBGZXRjaDY0KHMgKyA4KSwgMzcpICogazE7CisgICAgeSA9IFJvdGF0ZSh5ICsg
di5zZWNvbmQgKyBGZXRjaDY0KHMgKyA0OCksIDQyKSAqIGsxOworICAgIHggXj0gdy5zZWNvbmQ7
CisgICAgeSArPSB2LmZpcnN0ICsgRmV0Y2g2NChzICsgNDApOworICAgIHogPSBSb3RhdGUoeiAr
IHcuZmlyc3QsIDMzKSAqIGsxOworICAgIHYgPSBXZWFrSGFzaExlbjMyV2l0aFNlZWRzKHMsIHYu
c2Vjb25kICogazEsIHggKyB3LmZpcnN0KTsKKyAgICB3ID0gV2Vha0hhc2hMZW4zMldpdGhTZWVk
cyhzICsgMzIsIHogKyB3LnNlY29uZCwgeSArIEZldGNoNjQocyArIDE2KSk7CisgICAgc3RkOjpz
d2FwKHosIHgpOworICAgIHMgKz0gNjQ7CisgICAgbGVuIC09IDEyODsKKyAgfSB3aGlsZSAoQUJT
TF9QUkVESUNUX1RSVUUobGVuID49IDEyOCkpOworICB4ICs9IFJvdGF0ZSh2LmZpcnN0ICsgeiwg
NDkpICogazA7CisgIHkgPSB5ICogazAgKyBSb3RhdGUody5zZWNvbmQsIDM3KTsKKyAgeiA9IHog
KiBrMCArIFJvdGF0ZSh3LmZpcnN0LCAyNyk7CisgIHcuZmlyc3QgKj0gOTsKKyAgdi5maXJzdCAq
PSBrMDsKKyAgLy8gSWYgMCA8IGxlbiA8IDEyOCwgaGFzaCB1cCB0byA0IGNodW5rcyBvZiAzMiBi
eXRlcyBlYWNoIGZyb20gdGhlIGVuZCBvZiBzLgorICBmb3IgKHNpemVfdCB0YWlsX2RvbmUgPSAw
OyB0YWlsX2RvbmUgPCBsZW47KSB7CisgICAgdGFpbF9kb25lICs9IDMyOworICAgIHkgPSBSb3Rh
dGUoeCArIHksIDQyKSAqIGswICsgdi5zZWNvbmQ7CisgICAgdy5maXJzdCArPSBGZXRjaDY0KHMg
KyBsZW4gLSB0YWlsX2RvbmUgKyAxNik7CisgICAgeCA9IHggKiBrMCArIHcuZmlyc3Q7CisgICAg
eiArPSB3LnNlY29uZCArIEZldGNoNjQocyArIGxlbiAtIHRhaWxfZG9uZSk7CisgICAgdy5zZWNv
bmQgKz0gdi5maXJzdDsKKyAgICB2ID0gV2Vha0hhc2hMZW4zMldpdGhTZWVkcyhzICsgbGVuIC0g
dGFpbF9kb25lLCB2LmZpcnN0ICsgeiwgdi5zZWNvbmQpOworICAgIHYuZmlyc3QgKj0gazA7Cisg
IH0KKyAgLy8gQXQgdGhpcyBwb2ludCBvdXIgNTYgYnl0ZXMgb2Ygc3RhdGUgc2hvdWxkIGNvbnRh
aW4gbW9yZSB0aGFuCisgIC8vIGVub3VnaCBpbmZvcm1hdGlvbiBmb3IgYSBzdHJvbmcgMTI4LWJp
dCBoYXNoLiAgV2UgdXNlIHR3bworICAvLyBkaWZmZXJlbnQgNTYtYnl0ZS10by04LWJ5dGUgaGFz
aGVzIHRvIGdldCBhIDE2LWJ5dGUgZmluYWwgcmVzdWx0LgorICB4ID0gSGFzaExlbjE2KHgsIHYu
Zmlyc3QpOworICB5ID0gSGFzaExlbjE2KHkgKyB6LCB3LmZpcnN0KTsKKyAgcmV0dXJuIHVpbnQx
MjgoSGFzaExlbjE2KHggKyB2LnNlY29uZCwgdy5zZWNvbmQpICsgeSwKKyAgICAgICAgICAgICAg
ICAgSGFzaExlbjE2KHggKyB3LnNlY29uZCwgeSArIHYuc2Vjb25kKSk7Cit9CisKK3VpbnQxMjgg
Q2l0eUhhc2gxMjgoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikgeworICByZXR1cm4gbGVuID49
IDE2CisgICAgICAgICAgICAgPyBDaXR5SGFzaDEyOFdpdGhTZWVkKHMgKyAxNiwgbGVuIC0gMTYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxMjgoRmV0Y2g2NChzKSwg
RmV0Y2g2NChzICsgOCkgKyBrMCkpCisgICAgICAgICAgICAgOiBDaXR5SGFzaDEyOFdpdGhTZWVk
KHMsIGxlbiwgdWludDEyOChrMCwgazEpKTsKK30KK30gIC8vIG5hbWVzcGFjZSBoYXNoX2ludGVy
bmFsCit9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisjaWZkZWYgX19TU0U0XzJfXworI2luY2x1ZGUg
PG5tbWludHJpbi5oPgorI2luY2x1ZGUgImFic2wvaGFzaC9pbnRlcm5hbC9jaXR5X2NyYy5oIgor
CituYW1lc3BhY2UgYWJzbCB7CituYW1lc3BhY2UgaGFzaF9pbnRlcm5hbCB7CisKKy8vIFJlcXVp
cmVzIGxlbiA+PSAyNDAuCitzdGF0aWMgdm9pZCBDaXR5SGFzaENyYzI1NkxvbmcoY29uc3QgY2hh
ciAqcywgc2l6ZV90IGxlbiwgdWludDMyX3Qgc2VlZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50NjRfdCAqcmVzdWx0KSB7CisgIHVpbnQ2NF90IGEgPSBGZXRjaDY0KHMgKyA1
NikgKyBrMDsKKyAgdWludDY0X3QgYiA9IEZldGNoNjQocyArIDk2KSArIGswOworICB1aW50NjRf
dCBjID0gcmVzdWx0WzBdID0gSGFzaExlbjE2KGIsIGxlbik7CisgIHVpbnQ2NF90IGQgPSByZXN1
bHRbMV0gPSBGZXRjaDY0KHMgKyAxMjApICogazAgKyBsZW47CisgIHVpbnQ2NF90IGUgPSBGZXRj
aDY0KHMgKyAxODQpICsgc2VlZDsKKyAgdWludDY0X3QgZiA9IDA7CisgIHVpbnQ2NF90IGcgPSAw
OworICB1aW50NjRfdCBoID0gYyArIGQ7CisgIHVpbnQ2NF90IHggPSBzZWVkOworICB1aW50NjRf
dCB5ID0gMDsKKyAgdWludDY0X3QgeiA9IDA7CisKKyAgLy8gMjQwIGJ5dGVzIG9mIGlucHV0IHBl
ciBpdGVyLgorICBzaXplX3QgaXRlcnMgPSBsZW4gLyAyNDA7CisgIGxlbiAtPSBpdGVycyAqIDI0
MDsKKyAgZG8geworI3VuZGVmIENIVU5LCisjZGVmaW5lIENIVU5LKHIpICAgICAgICAgICAgICAg
XAorICBQRVJNVVRFMyh4LCB6LCB5KTsgICAgICAgICAgIFwKKyAgYiArPSBGZXRjaDY0KHMpOyAg
ICAgICAgICAgICBcCisgIGMgKz0gRmV0Y2g2NChzICsgOCk7ICAgICAgICAgXAorICBkICs9IEZl
dGNoNjQocyArIDE2KTsgICAgICAgIFwKKyAgZSArPSBGZXRjaDY0KHMgKyAyNCk7ICAgICAgICBc
CisgIGYgKz0gRmV0Y2g2NChzICsgMzIpOyAgICAgICAgXAorICBhICs9IGI7ICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgaCArPSBmOyAgICAgICAgICAgICAgICAgICAgICBcCisgIGIgKz0gYzsg
ICAgICAgICAgICAgICAgICAgICAgXAorICBmICs9IGQ7ICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgZyArPSBlOyAgICAgICAgICAgICAgICAgICAgICBcCisgIGUgKz0gejsgICAgICAgICAgICAg
ICAgICAgICAgXAorICBnICs9IHg7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeiA9IF9tbV9j
cmMzMl91NjQoeiwgYiArIGcpOyBcCisgIHkgPSBfbW1fY3JjMzJfdTY0KHksIGUgKyBoKTsgXAor
ICB4ID0gX21tX2NyYzMyX3U2NCh4LCBmICsgYSk7IFwKKyAgZSA9IFJvdGF0ZShlLCByKTsgICAg
ICAgICAgICBcCisgIGMgKz0gZTsgICAgICAgICAgICAgICAgICAgICAgXAorICBzICs9IDQwCisK
KyAgICBDSFVOSygwKTsKKyAgICBQRVJNVVRFMyhhLCBoLCBjKTsKKyAgICBDSFVOSygzMyk7Cisg
ICAgUEVSTVVURTMoYSwgaCwgZik7CisgICAgQ0hVTksoMCk7CisgICAgUEVSTVVURTMoYiwgaCwg
Zik7CisgICAgQ0hVTksoNDIpOworICAgIFBFUk1VVEUzKGIsIGgsIGQpOworICAgIENIVU5LKDAp
OworICAgIFBFUk1VVEUzKGIsIGgsIGUpOworICAgIENIVU5LKDMzKTsKKyAgICBQRVJNVVRFMyhh
LCBoLCBlKTsKKyAgfSB3aGlsZSAoLS1pdGVycyA+IDApOworCisgIHdoaWxlIChsZW4gPj0gNDAp
IHsKKyAgICBDSFVOSygyOSk7CisgICAgZSBePSBSb3RhdGUoYSwgMjApOworICAgIGggKz0gUm90
YXRlKGIsIDMwKTsKKyAgICBnIF49IFJvdGF0ZShjLCA0MCk7CisgICAgZiArPSBSb3RhdGUoZCwg
MzQpOworICAgIFBFUk1VVEUzKGMsIGgsIGcpOworICAgIGxlbiAtPSA0MDsKKyAgfQorICBpZiAo
bGVuID4gMCkgeworICAgIHMgPSBzICsgbGVuIC0gNDA7CisgICAgQ0hVTksoMzMpOworICAgIGUg
Xj0gUm90YXRlKGEsIDQzKTsKKyAgICBoICs9IFJvdGF0ZShiLCA0Mik7CisgICAgZyBePSBSb3Rh
dGUoYywgNDEpOworICAgIGYgKz0gUm90YXRlKGQsIDQwKTsKKyAgfQorICByZXN1bHRbMF0gXj0g
aDsKKyAgcmVzdWx0WzFdIF49IGc7CisgIGcgKz0gaDsKKyAgYSA9IEhhc2hMZW4xNihhLCBnICsg
eik7CisgIHggKz0geSA8PCAzMjsKKyAgYiArPSB4OworICBjID0gSGFzaExlbjE2KGMsIHopICsg
aDsKKyAgZCA9IEhhc2hMZW4xNihkLCBlICsgcmVzdWx0WzBdKTsKKyAgZyArPSBlOworICBoICs9
IEhhc2hMZW4xNih4LCBmKTsKKyAgZSA9IEhhc2hMZW4xNihhLCBkKSArIGc7CisgIHogPSBIYXNo
TGVuMTYoYiwgYykgKyBhOworICB5ID0gSGFzaExlbjE2KGcsIGgpICsgYzsKKyAgcmVzdWx0WzBd
ID0gZSArIHogKyB5ICsgeDsKKyAgYSA9IFNoaWZ0TWl4KChhICsgeSkgKiBrMCkgKiBrMCArIGI7
CisgIHJlc3VsdFsxXSArPSBhICsgcmVzdWx0WzBdOworICBhID0gU2hpZnRNaXgoYSAqIGswKSAq
IGswICsgYzsKKyAgcmVzdWx0WzJdID0gYSArIHJlc3VsdFsxXTsKKyAgYSA9IFNoaWZ0TWl4KChh
ICsgZSkgKiBrMCkgKiBrMDsKKyAgcmVzdWx0WzNdID0gYSArIHJlc3VsdFsyXTsKK30KKworLy8g
UmVxdWlyZXMgbGVuIDwgMjQwLgorc3RhdGljIHZvaWQgQ2l0eUhhc2hDcmMyNTZTaG9ydChjb25z
dCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50NjRfdCAqcmVzdWx0KSB7CisgIGNoYXIgYnVmWzI0
MF07CisgIG1lbWNweShidWYsIHMsIGxlbik7CisgIG1lbXNldChidWYgKyBsZW4sIDAsIDI0MCAt
IGxlbik7CisgIENpdHlIYXNoQ3JjMjU2TG9uZyhidWYsIDI0MCwgfnN0YXRpY19jYXN0PHVpbnQz
Ml90PihsZW4pLCByZXN1bHQpOworfQorCit2b2lkIENpdHlIYXNoQ3JjMjU2KGNvbnN0IGNoYXIg
KnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90ICpyZXN1bHQpIHsKKyAgaWYgKEFCU0xfUFJFRElDVF9U
UlVFKGxlbiA+PSAyNDApKSB7CisgICAgQ2l0eUhhc2hDcmMyNTZMb25nKHMsIGxlbiwgMCwgcmVz
dWx0KTsKKyAgfSBlbHNlIHsKKyAgICBDaXR5SGFzaENyYzI1NlNob3J0KHMsIGxlbiwgcmVzdWx0
KTsKKyAgfQorfQorCit1aW50MTI4IENpdHlIYXNoQ3JjMTI4V2l0aFNlZWQoY29uc3QgY2hhciAq
cywgc2l6ZV90IGxlbiwgdWludDEyOCBzZWVkKSB7CisgIGlmIChsZW4gPD0gOTAwKSB7CisgICAg
cmV0dXJuIENpdHlIYXNoMTI4V2l0aFNlZWQocywgbGVuLCBzZWVkKTsKKyAgfSBlbHNlIHsKKyAg
ICB1aW50NjRfdCByZXN1bHRbNF07CisgICAgQ2l0eUhhc2hDcmMyNTYocywgbGVuLCByZXN1bHQp
OworICAgIHVpbnQ2NF90IHUgPSBVaW50MTI4SGlnaDY0KHNlZWQpICsgcmVzdWx0WzBdOworICAg
IHVpbnQ2NF90IHYgPSBVaW50MTI4TG93NjQoc2VlZCkgKyByZXN1bHRbMV07CisgICAgcmV0dXJu
IHVpbnQxMjgoSGFzaExlbjE2KHUsIHYgKyByZXN1bHRbMl0pLAorICAgICAgICAgICAgICAgICAg
IEhhc2hMZW4xNihSb3RhdGUodiwgMzIpLCB1ICogazAgKyByZXN1bHRbM10pKTsKKyAgfQorfQor
Cit1aW50MTI4IENpdHlIYXNoQ3JjMTI4KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pIHsKKyAg
aWYgKGxlbiA8PSA5MDApIHsKKyAgICByZXR1cm4gQ2l0eUhhc2gxMjgocywgbGVuKTsKKyAgfSBl
bHNlIHsKKyAgICB1aW50NjRfdCByZXN1bHRbNF07CisgICAgQ2l0eUhhc2hDcmMyNTYocywgbGVu
LCByZXN1bHQpOworICAgIHJldHVybiB1aW50MTI4KHJlc3VsdFsyXSwgcmVzdWx0WzNdKTsKKyAg
fQorfQorCit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFi
c2wKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2NpdHkuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2hhc2gvaW50ZXJuYWwvY2l0eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1YjM3Yjg3NWYwYjNmZDg0Njdk
YTk5ZGJlZDQyOTdhYzg5ZjE4MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVy
bmFsL2NpdHkuaApAQCAtMCwwICsxLDEwOCBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2Vp
bCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2l0eWhhc2gvCisv
LworLy8gVGhpcyBmaWxlIHByb3ZpZGVzIGEgZmV3IGZ1bmN0aW9ucyBmb3IgaGFzaGluZyBzdHJp
bmdzLiAgQWxsIG9mIHRoZW0gYXJlCisvLyBoaWdoLXF1YWxpdHkgZnVuY3Rpb25zIGluIHRoZSBz
ZW5zZSB0aGF0IHRoZXkgcGFzcyBzdGFuZGFyZCB0ZXN0cyBzdWNoCisvLyBhcyBBdXN0aW4gQXBw
bGVieSdzIFNNSGFzaGVyLiAgVGhleSBhcmUgYWxzbyBmYXN0LgorLy8KKy8vIEZvciA2NC1iaXQg
eDg2IGNvZGUsIG9uIHNob3J0IHN0cmluZ3MsIHdlIGRvbid0IGtub3cgb2YgYW55dGhpbmcgZmFz
dGVyIHRoYW4KKy8vIENpdHlIYXNoNjQgdGhhdCBpcyBvZiBjb21wYXJhYmxlIHF1YWxpdHkuICBX
ZSBiZWxpZXZlIG91ciBuZWFyZXN0IGNvbXBldGl0b3IKKy8vIGlzIE11cm11cjMuICBGb3IgNjQt
Yml0IHg4NiBjb2RlLCBDaXR5SGFzaDY0IGlzIGFuIGV4Y2VsbGVudCBjaG9pY2UgZm9yIGhhc2gK
Ky8vIHRhYmxlcyBhbmQgbW9zdCBvdGhlciBoYXNoaW5nIChleGNsdWRpbmcgY3J5cHRvZ3JhcGh5
KS4KKy8vCisvLyBGb3IgNjQtYml0IHg4NiBjb2RlLCBvbiBsb25nIHN0cmluZ3MsIHRoZSBwaWN0
dXJlIGlzIG1vcmUgY29tcGxpY2F0ZWQuCisvLyBPbiBtYW55IHJlY2VudCBJbnRlbCBDUFVzLCBz
dWNoIGFzIE5laGFsZW0sIFdlc3RtZXJlLCBTYW5keSBCcmlkZ2UsIGV0Yy4sCisvLyBDaXR5SGFz
aENyYzEyOCBhcHBlYXJzIHRvIGJlIGZhc3RlciB0aGFuIGFsbCBjb21wZXRpdG9ycyBvZiBjb21w
YXJhYmxlCisvLyBxdWFsaXR5LiAgQ2l0eUhhc2gxMjggaXMgYWxzbyBnb29kIGJ1dCBub3QgcXVp
dGUgYXMgZmFzdC4gIFdlIGJlbGlldmUgb3VyCisvLyBuZWFyZXN0IGNvbXBldGl0b3IgaXMgQm9i
IEplbmtpbnMnIFNwb29reS4gIFdlIGRvbid0IGhhdmUgZ3JlYXQgZGF0YSBmb3IKKy8vIG90aGVy
IDY0LWJpdCBDUFVzLCBidXQgZm9yIGxvbmcgc3RyaW5ncyB3ZSBrbm93IHRoYXQgU3Bvb2t5IGlz
IHNsaWdodGx5CisvLyBmYXN0ZXIgdGhhbiBDaXR5SGFzaCBvbiBzb21lIHJlbGF0aXZlbHkgcmVj
ZW50IEFNRCB4ODYtNjQgQ1BVcywgZm9yIGV4YW1wbGUuCisvLyBOb3RlIHRoYXQgQ2l0eUhhc2hD
cmMxMjggaXMgZGVjbGFyZWQgaW4gY2l0eWNyYy5oLgorLy8KKy8vIEZvciAzMi1iaXQgeDg2IGNv
ZGUsIHdlIGRvbid0IGtub3cgb2YgYW55dGhpbmcgZmFzdGVyIHRoYW4gQ2l0eUhhc2gzMiB0aGF0
CisvLyBpcyBvZiBjb21wYXJhYmxlIHF1YWxpdHkuICBXZSBiZWxpZXZlIG91ciBuZWFyZXN0IGNv
bXBldGl0b3IgaXMgTXVybXVyM0EuCisvLyAoT24gNjQtYml0IENQVXMsIGl0IGlzIHR5cGljYWxs
eSBmYXN0ZXIgdG8gdXNlIHRoZSBvdGhlciBDaXR5SGFzaCB2YXJpYW50cy4pCisvLworLy8gRnVu
Y3Rpb25zIGluIHRoZSBDaXR5SGFzaCBmYW1pbHkgYXJlIG5vdCBzdWl0YWJsZSBmb3IgY3J5cHRv
Z3JhcGh5LgorLy8KKy8vIFBsZWFzZSBzZWUgQ2l0eUhhc2gncyBSRUFETUUgZmlsZSBmb3IgbW9y
ZSBkZXRhaWxzIG9uIG91ciBwZXJmb3JtYW5jZQorLy8gbWVhc3VyZW1lbnRzIGFuZCBzbyBvbi4K
Ky8vCisvLyBXQVJOSU5HOiBUaGlzIGNvZGUgaGFzIGJlZW4gb25seSBsaWdodGx5IHRlc3RlZCBv
biBiaWctZW5kaWFuIHBsYXRmb3JtcyEKKy8vIEl0IGlzIGtub3duIHRvIHdvcmsgd2VsbCBvbiBs
aXR0bGUtZW5kaWFuIHBsYXRmb3JtcyB0aGF0IGhhdmUgYSBzbWFsbCBwZW5hbHR5CisvLyBmb3Ig
dW5hbGlnbmVkIHJlYWRzLCBzdWNoIGFzIGN1cnJlbnQgSW50ZWwgYW5kIEFNRCBtb2RlcmF0ZS10
by1oaWdoLWVuZCBDUFVzLgorLy8gSXQgc2hvdWxkIHdvcmsgb24gYWxsIDMyLWJpdCBhbmQgNjQt
Yml0IHBsYXRmb3JtcyB0aGF0IGFsbG93IHVuYWxpZ25lZCByZWFkczsKKy8vIGJ1ZyByZXBvcnRz
IGFyZSB3ZWxjb21lLgorLy8KKy8vIEJ5IHRoZSB3YXksIGZvciBzb21lIGhhc2ggZnVuY3Rpb25z
LCBnaXZlbiBzdHJpbmdzIGEgYW5kIGIsIHRoZSBoYXNoCisvLyBvZiBhK2IgaXMgZWFzaWx5IGRl
cml2ZWQgZnJvbSB0aGUgaGFzaGVzIG9mIGEgYW5kIGIuICBUaGlzIHByb3BlcnR5CisvLyBkb2Vz
bid0IGhvbGQgZm9yIGFueSBoYXNoIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuCisKKyNpZm5kZWYg
QUJTTF9IQVNIX0lOVEVSTkFMX0NJVFlfSF8KKyNkZWZpbmUgQUJTTF9IQVNIX0lOVEVSTkFMX0NJ
VFlfSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gZm9y
IHNpemVfdC4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSBoYXNoX2ludGVybmFsIHsKKwordHlwZWRlZiBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2
NF90PiB1aW50MTI4OworCitpbmxpbmUgdWludDY0X3QgVWludDEyOExvdzY0KGNvbnN0IHVpbnQx
MjggJngpIHsgcmV0dXJuIHguZmlyc3Q7IH0KK2lubGluZSB1aW50NjRfdCBVaW50MTI4SGlnaDY0
KGNvbnN0IHVpbnQxMjggJngpIHsgcmV0dXJuIHguc2Vjb25kOyB9CisKKy8vIEhhc2ggZnVuY3Rp
b24gZm9yIGEgYnl0ZSBhcnJheS4KK3VpbnQ2NF90IENpdHlIYXNoNjQoY29uc3QgY2hhciAqcywg
c2l6ZV90IGxlbik7CisKKy8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4gIEZvciBj
b252ZW5pZW5jZSwgYSA2NC1iaXQgc2VlZCBpcyBhbHNvCisvLyBoYXNoZWQgaW50byB0aGUgcmVz
dWx0LgordWludDY0X3QgQ2l0eUhhc2g2NFdpdGhTZWVkKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBs
ZW4sIHVpbnQ2NF90IHNlZWQpOworCisvLyBIYXNoIGZ1bmN0aW9uIGZvciBhIGJ5dGUgYXJyYXku
ICBGb3IgY29udmVuaWVuY2UsIHR3byBzZWVkcyBhcmUgYWxzbworLy8gaGFzaGVkIGludG8gdGhl
IHJlc3VsdC4KK3VpbnQ2NF90IENpdHlIYXNoNjRXaXRoU2VlZHMoY29uc3QgY2hhciAqcywgc2l6
ZV90IGxlbiwgdWludDY0X3Qgc2VlZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
NjRfdCBzZWVkMSk7CisKKy8vIEhhc2ggZnVuY3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4KK3VpbnQx
MjggQ2l0eUhhc2gxMjgoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbik7CisKKy8vIEhhc2ggZnVu
Y3Rpb24gZm9yIGEgYnl0ZSBhcnJheS4gIEZvciBjb252ZW5pZW5jZSwgYSAxMjgtYml0IHNlZWQg
aXMgYWxzbworLy8gaGFzaGVkIGludG8gdGhlIHJlc3VsdC4KK3VpbnQxMjggQ2l0eUhhc2gxMjhX
aXRoU2VlZChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCB1aW50MTI4IHNlZWQpOworCisvLyBI
YXNoIGZ1bmN0aW9uIGZvciBhIGJ5dGUgYXJyYXkuICBNb3N0IHVzZWZ1bCBpbiAzMi1iaXQgYmlu
YXJpZXMuCit1aW50MzJfdCBDaXR5SGFzaDMyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pOwor
CisvLyBIYXNoIDEyOCBpbnB1dCBiaXRzIGRvd24gdG8gNjQgYml0cyBvZiBvdXRwdXQuCisvLyBU
aGlzIGlzIGludGVuZGVkIHRvIGJlIGEgcmVhc29uYWJseSBnb29kIGhhc2ggZnVuY3Rpb24uCitp
bmxpbmUgdWludDY0X3QgSGFzaDEyOHRvNjQoY29uc3QgdWludDEyOCAmeCkgeworICAvLyBNdXJt
dXItaW5zcGlyZWQgaGFzaGluZy4KKyAgY29uc3QgdWludDY0X3Qga011bCA9IDB4OWRkZmVhMDhl
YjM4MmQ2OVVMTDsKKyAgdWludDY0X3QgYSA9IChVaW50MTI4TG93NjQoeCkgXiBVaW50MTI4SGln
aDY0KHgpKSAqIGtNdWw7CisgIGEgXj0gKGEgPj4gNDcpOworICB1aW50NjRfdCBiID0gKFVpbnQx
MjhIaWdoNjQoeCkgXiBhKSAqIGtNdWw7CisgIGIgXj0gKGIgPj4gNDcpOworICBiICo9IGtNdWw7
CisgIHJldHVybiBiOworfQorCit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAorfSAgLy8g
bmFtZXNwYWNlIGFic2wKKworI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfQ0lUWV9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5X2NyYy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9p
bnRlcm5hbC9jaXR5X2NyYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZTY1NTdkMjEzZjJiNDBhOGM0NzRjNmEw
YzI3OWYwYTZiY2FmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL2Np
dHlfY3JjLmgKQEAgLTAsMCArMSw0MSBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBB
dXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKy8vCisvLyBUaGlzIGZpbGUgZGVjbGFyZXMgdGhlIHN1YnNldCBvZiB0aGUgQ2l0
eUhhc2ggZnVuY3Rpb25zIHRoYXQgcmVxdWlyZQorLy8gX21tX2NyYzMyX3U2NCgpLiAgU2VlIHRo
ZSBDaXR5SGFzaCBSRUFETUUgZm9yIGRldGFpbHMuCisvLworLy8gRnVuY3Rpb25zIGluIHRoZSBD
aXR5SGFzaCBmYW1pbHkgYXJlIG5vdCBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGh5LgorCisjaWZu
ZGVmIEFCU0xfSEFTSF9JTlRFUk5BTF9DSVRZX0NSQ19IXworI2RlZmluZSBBQlNMX0hBU0hfSU5U
RVJOQUxfQ0lUWV9DUkNfSF8KKworI2luY2x1ZGUgImFic2wvaGFzaC9pbnRlcm5hbC9jaXR5Lmgi
CisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBoYXNoX2ludGVybmFsIHsKKworLy8gSGFz
aCBmdW5jdGlvbiBmb3IgYSBieXRlIGFycmF5LgordWludDEyOCBDaXR5SGFzaENyYzEyOChjb25z
dCBjaGFyICpzLCBzaXplX3QgbGVuKTsKKworLy8gSGFzaCBmdW5jdGlvbiBmb3IgYSBieXRlIGFy
cmF5LiAgRm9yIGNvbnZlbmllbmNlLCBhIDEyOC1iaXQgc2VlZCBpcyBhbHNvCisvLyBoYXNoZWQg
aW50byB0aGUgcmVzdWx0LgordWludDEyOCBDaXR5SGFzaENyYzEyOFdpdGhTZWVkKGNvbnN0IGNo
YXIgKnMsIHNpemVfdCBsZW4sIHVpbnQxMjggc2VlZCk7CisKKy8vIEhhc2ggZnVuY3Rpb24gZm9y
IGEgYnl0ZSBhcnJheS4gIFNldHMgcmVzdWx0WzBdIC4uLiByZXN1bHRbM10uCit2b2lkIENpdHlI
YXNoQ3JjMjU2KGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIHVpbnQ2NF90ICpyZXN1bHQpOwor
Cit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFic2wKKwor
I2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfQ0lUWV9DUkNfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL2hhc2gvaW50ZXJuYWwvY2l0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9jaXR5
X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc4ZGE1M2QzNGQwNGQ2MDExZmU4N2IwNmE3ZTI2NjEzYmRi
ZWY5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvY2l0eV90ZXN0LmNj
CkBAIC0wLDAgKzEsMTgxMiBAQAorLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBBdXRob3Jz
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKworI2luY2x1ZGUgImFic2wvaGFzaC9pbnRlcm5hbC9jaXR5LmgiCisKKyNpbmNsdWRlIDxz
dHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RkaW8+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpZmRlZiBfX1NTRTRfMl9fCisjaW5jbHVkZSAiYWJzbC9oYXNo
L2ludGVybmFsL2NpdHlfY3JjLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNw
YWNlIGhhc2hfaW50ZXJuYWwgeworCitzdGF0aWMgY29uc3QgdWludDY0X3QgazAgPSAweGMzYTVj
ODVjOTdjYjMxMjdVTEw7CitzdGF0aWMgY29uc3QgdWludDY0X3Qga1NlZWQwID0gMTIzNDU2NzsK
K3N0YXRpYyBjb25zdCB1aW50NjRfdCBrU2VlZDEgPSBrMDsKK3N0YXRpYyBjb25zdCB1aW50MTI4
IGtTZWVkMTI4KGtTZWVkMCwga1NlZWQxKTsKK3N0YXRpYyBjb25zdCBpbnQga0RhdGFTaXplID0g
MSA8PCAyMDsKK3N0YXRpYyBjb25zdCBpbnQga1Rlc3RTaXplID0gMzAwOworCitzdGF0aWMgY2hh
ciBkYXRhW2tEYXRhU2l6ZV07CisKKy8vIEluaXRpYWxpemUgZGF0YSB0byBwc2V1ZG9yYW5kb20g
dmFsdWVzLgordm9pZCBzZXR1cCgpIHsKKyAgdWludDY0X3QgYSA9IDk7CisgIHVpbnQ2NF90IGIg
PSA3Nzc7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga0RhdGFTaXplOyBpKyspIHsKKyAgICBhICs9
IGI7CisgICAgYiArPSBhOworICAgIGEgPSAoYSBeIChhID4+IDQxKSkgKiBrMDsKKyAgICBiID0g
KGIgXiAoYiA+PiA0MSkpICogazAgKyBpOworICAgIHVpbnQ4X3QgdSA9IGIgPj4gMzc7CisgICAg
bWVtY3B5KGRhdGEgKyBpLCAmdSwgMSk7ICAvLyB1aW50OF90IC0+IGNoYXIKKyAgfQorfQorCisj
ZGVmaW5lIEMoeCkgMHgjI3gjI1VMTAorc3RhdGljIGNvbnN0IHVpbnQ2NF90IHRlc3RkYXRhW2tU
ZXN0U2l6ZV1bMTZdID0geworICAgIHtDKDlhZTE2YTNiMmY5MDQwNGYpLCBDKDc1MTA2ZGI4OTAy
MzdhNGEpLCBDKDNmZWFjNWY2MzYwMzk3NjYpLAorICAgICBDKDNkZjA5ZGZjNjRjMDlhMmIpLCBD
KDNjYjU0MGMzOTJlNTFlMjkpLCBDKDZiNTYzNDNmZWFjMDY2MyksCisgICAgIEMoNWI3YmM1MGZk
OGU4YWQ5MiksIEMoM2RmMDlkZmM2NGMwOWEyYiksIEMoM2NiNTQwYzM5MmU1MWUyOSksCisgICAg
IEMoNmI1NjM0M2ZlYWMwNjYzKSwgQyg1YjdiYzUwZmQ4ZThhZDkyKSwgQyg5NTE2MmYyNGU2YTVm
OTMwKSwKKyAgICAgQyg2ODA4YmRmNGYxZWIwNmUwKSwgQyhiM2IxZjNhNjdiNjI0ZDgyKSwgQyhj
OWE2MmYxMmJkNGNkODBiKSwKKyAgICAgQyhkYzU2ZDE3YSl9LAorICAgIHtDKDU0MTE1MGU4N2Y0
MTVlOTYpLCBDKDFhZWYwZDI0YjMxNDhhMWEpLCBDKGJhY2MzMDBlMWU4MjM0NWEpLAorICAgICBD
KGMzY2RjNDFlMWRmMzM1MTMpLCBDKDJjMTM4ZmYyNTk2ZDQyZjYpLCBDKGY1OGU5MDgyYWVkMzA1
NWYpLAorICAgICBDKDE2MmUxOTJiMjk1NzE2M2QpLCBDKGMzY2RjNDFlMWRmMzM1MTMpLCBDKDJj
MTM4ZmYyNTk2ZDQyZjYpLAorICAgICBDKGY1OGU5MDgyYWVkMzA1NWYpLCBDKDE2MmUxOTJiMjk1
NzE2M2QpLCBDKGZiOTllODVlMGQxNmY5MGMpLAorICAgICBDKDYwODQ2MmMxNWJkZjI3ZTgpLCBD
KGU3ZDJjNWM5NDM1NzJiNjIpLCBDKDFiYWFhOTMyNzY0Mjc5OGMpLAorICAgICBDKDk5OTI5MzM0
KX0sCisgICAge0MoZjM3ODZhNGIyNTgyN2MxKSwgQygzNGVlMWEyYmY3NjdiZDFjKSwgQygyZjE1
Y2EyZWJmYjYzMWYyKSwKKyAgICAgQygzMTQ5YmExZGFjNzcyNzBkKSwgQyg3MGUyZTA3NmUzMDcw
M2MpLCBDKDU5YmNjOTY1OWJjNTI5NiksCisgICAgIEMoOWVjYmM4MTMyYWUyZjFkNyksIEMoMzE0
OWJhMWRhYzc3MjcwZCksIEMoNzBlMmUwNzZlMzA3MDNjKSwKKyAgICAgQyg1OWJjYzk2NTliYzUy
OTYpLCBDKDllY2JjODEzMmFlMmYxZDcpLCBDKGEwMWQzMDc4OWJhZDdjZjIpLAorICAgICBDKGFl
MDNmZTM3MTk4MWEwZTApLCBDKDEyN2UzODgzYjg3ODg5MzQpLCBDKGQwYWMzZDRjMGE2ZmNhMzIp
LAorICAgICBDKDQyNTJlZGI3KX0sCisgICAge0MoZWY5MjNhN2ExYWY3OGVhYiksIEMoNzkxNjNi
MWUxZTlhOWIxOCksIEMoZGYzYjJhY2E2ZTFlNGEzMCksCisgICAgIEMoMjE5M2ZiNzYyMGNiZjIz
YiksIEMoOGI2YThmZjA2Y2RhODMwMiksIEMoMWE0NDQ2OWFmZDNlMDkxZiksCisgICAgIEMoOGIw
NDQ5Mzc2NjEyNTA2KSwgQygyMTkzZmI3NjIwY2JmMjNiKSwgQyg4YjZhOGZmMDZjZGE4MzAyKSwK
KyAgICAgQygxYTQ0NDY5YWZkM2UwOTFmKSwgQyg4YjA0NDkzNzY2MTI1MDYpLCBDKGU5ZDlkNDFj
MzJhZDkxZDEpLAorICAgICBDKGI0NGFiMDlmNThlM2M2MDgpLCBDKDE5ZTkxNzVmOWZjZjc4NCks
IEMoODM5YjNjOTU4MWI0YTQ4MCksIEMoZWJjMzRmM2MpfSwKKyAgICB7QygxMWRmNTkyNTk2ZjQx
ZDg4KSwgQyg4NDNlYzBiY2U5MDQyZjljKSwgQyhjY2UyZWExZTA4YjFlYjMwKSwKKyAgICAgQyg0
ZDA5ZTQyZjA5Y2MzNDk1KSwgQyg2NjYyMzY2MzFiOWYyNTNiKSwgQyhkMjhiMzc2M2NkMDJiNmEz
KSwKKyAgICAgQyg0M2IyNDllNTdjNGQwYzFiKSwgQyg0ZDA5ZTQyZjA5Y2MzNDk1KSwgQyg2NjYy
MzY2MzFiOWYyNTNiKSwKKyAgICAgQyhkMjhiMzc2M2NkMDJiNmEzKSwgQyg0M2IyNDllNTdjNGQw
YzFiKSwgQygzODg3MTAxYzhhZGVhMTAxKSwKKyAgICAgQyg4YTkzNTVkNGVmYzkxZGYwKSwgQygz
ZTYxMDk0NGNjOWZlY2ZkKSwgQyg1YmY5ZWI2MGIwOGFjMGNlKSwKKyAgICAgQygyNmYyYjQ2Myl9
LAorICAgIHtDKDgzMWY0NDhiZGM1NjAwYjMpLCBDKDYyYTI0YmUzMTIwYTY5MTkpLCBDKDFiNDQw
OThhNDFlMDEwZGEpLAorICAgICBDKGRjMDdkZjUzYjk0OWM2YiksIEMoZDJiMTFiMjA4MWFlYjAw
MiksIEMoZDIxMmIwMmMxYjEzZjc3MiksCisgICAgIEMoYzBiZWQyOTdiNGJlMTkxMiksIEMoZGMw
N2RmNTNiOTQ5YzZiKSwgQyhkMmIxMWIyMDgxYWViMDAyKSwKKyAgICAgQyhkMjEyYjAyYzFiMTNm
NzcyKSwgQyhjMGJlZDI5N2I0YmUxOTEyKSwgQyg2ODJkM2QyYWQzMDRlNGFmKSwKKyAgICAgQyg0
MGU5MTEyYTY1NTQzN2ExKSwgQygyNjhiMDlmN2VlMDk4NDNmKSwgQyg2Yjk2OThkNDM4NTljYTQ3
KSwKKyAgICAgQyhiMDQyYzA0Nyl9LAorICAgIHtDKDNlY2E4MDNlNzAzMDQ4OTQpLCBDKGQ4MGRl
NzY3ZTRhOTIwYSksIEMoYTUxY2ZiYjI5MmVmZDUzZCksCisgICAgIEMoZDE4M2RjZGE1ZjczZWRm
YSksIEMoM2E5M2NiZjQwZjMwMTI4YyksIEMoMWE5MjU0NGQwYjQxZGJkYSksCisgICAgIEMoYWVj
MmM0YmVlODE5NzVlMSksIEMoZDE4M2RjZGE1ZjczZWRmYSksIEMoM2E5M2NiZjQwZjMwMTI4Yyks
CisgICAgIEMoMWE5MjU0NGQwYjQxZGJkYSksIEMoYWVjMmM0YmVlODE5NzVlMSksIEMoNWY5MTgx
NGQxMTI2YmE0YiksCisgICAgIEMoZjhhYzU3ZWVlODdmY2YxZiksIEMoYzU1YzY0NGE1ZDAwMjNj
ZCksIEMoYWRiNzYxZTgyNzgyNWZmMiksCisgICAgIEMoZTczYmIwYTgpfSwKKyAgICB7QygxYjVh
MDYzZmI0YzdmOWYxKSwgQygzMThkYmMyNGFmNjZkZWU5KSwgQygxMGVmN2IzMmQ1YzcxOWFmKSwK
KyAgICAgQyhiMTQwYTAyZWY1Yzk3NzEyKSwgQyhiN2QwMGVmMDY1YjUxYjMzKSwgQyg2MzUxMjFk
NTMyODk3ZDk4KSwKKyAgICAgQyg1MzJkYWYyMWIzMTJhNmQ2KSwgQyhiMTQwYTAyZWY1Yzk3NzEy
KSwgQyhiN2QwMGVmMDY1YjUxYjMzKSwKKyAgICAgQyg2MzUxMjFkNTMyODk3ZDk4KSwgQyg1MzJk
YWYyMWIzMTJhNmQ2KSwgQyhjMGIwOWI3NWQ5NDM5MTApLAorICAgICBDKDhjODRkZmI1ZWYyYThl
OTYpLCBDKGU1YzA2MDM0YjAzNTM0MzMpLCBDKDMxNzBmYWYxYzMzYTQ1ZGQpLAorICAgICBDKDkx
ZGZkZDc1KX0sCisgICAge0MoYTBmMTAxNDlhMGU1MzhkNiksIEMoNjlkMDA4YzIwZjg3NDE5Ziks
IEMoNDFiMzYzNzYxODViM2U5ZSksCisgICAgIEMoMjZiNjY4OTk2MGNjZjgxZCksIEMoNTVmMjNi
MjdiYjllZmQ5NCksIEMoM2ExN2Y2MTY2ZGQ3NjVkYiksCisgICAgIEMoYzg5MWE4YTYyOTMxZTc4
MiksIEMoMjZiNjY4OTk2MGNjZjgxZCksIEMoNTVmMjNiMjdiYjllZmQ5NCksCisgICAgIEMoM2Ex
N2Y2MTY2ZGQ3NjVkYiksIEMoYzg5MWE4YTYyOTMxZTc4MiksIEMoMjM4NTJkYzM3ZGRkMjYwNyks
CisgICAgIEMoOGI3ZjFiMWVjODk3ODI5ZSksIEMoZDFkNjk0NTJhNTRlZWQ4YSksIEMoNTY0MzFm
MmJkNzY2ZWMyNCksCisgICAgIEMoYzg3Zjk1ZGUpfSwKKyAgICB7QyhmYjhkOWM3MDY2MGI5MTBi
KSwgQyhhNDViMGNjMzQ3NmJmZjFiKSwgQyhiMjhkMTk5NjE0NGYwMjA3KSwKKyAgICAgQyg5OGVj
MzExMTNlNWUzNWQyKSwgQyg1ZTRhZWI4NTNmMWI5YWE3KSwgQyhiY2Y1YzhmZTQ0NjViN2M4KSwK
KyAgICAgQyhiMWVhM2E4MjQzOTk2ZjE1KSwgQyg5OGVjMzExMTNlNWUzNWQyKSwgQyg1ZTRhZWI4
NTNmMWI5YWE3KSwKKyAgICAgQyhiY2Y1YzhmZTQ0NjViN2M4KSwgQyhiMWVhM2E4MjQzOTk2ZjE1
KSwgQyhjYWJiY2NlZGI2NDA3NTcxKSwKKyAgICAgQyhkMWU0MGE4NGM0NDVlYzNhKSwgQygzMzMw
MmFhOTA4Y2Y0MDM5KSwgQyg5ZjE1Zjc5MjExYjVjZGY4KSwKKyAgICAgQygzZjU1MzhlZil9LAor
ICAgIHtDKDIzNjgyN2JlYWUyODJhNDYpLCBDKGU0Mzk3MDIyMTEzOWM5NDYpLCBDKDRmM2FjNmZh
YTgzN2EzYWEpLAorICAgICBDKDcxZmVjMGY5NzIyNDg5MTUpLCBDKDIxNzBlYzIwNjFmMjQ1NzQp
LCBDKDllYjM0NmI2Y2FhMzZlODIpLAorICAgICBDKDI5MDhmMGZkYmNhNDhlNzMpLCBDKDcxZmVj
MGY5NzIyNDg5MTUpLCBDKDIxNzBlYzIwNjFmMjQ1NzQpLAorICAgICBDKDllYjM0NmI2Y2FhMzZl
ODIpLCBDKDI5MDhmMGZkYmNhNDhlNzMpLCBDKDgxMDFjOTlmMDdjNjRhYmIpLAorICAgICBDKGI5
ZjRiMDJiMWI2YTk2YTcpLCBDKDU4M2EyYjEwY2QyMjJmODgpLCBDKDE5OWRhZTRjZjlkYjI0Yyks
IEMoNzBlYjFhMWYpfSwKKyAgICB7QyhjMzg1ZTQzNTEzNmVjZjdjKSwgQyhkOWQxNzM2OGZmNmM0
YTA4KSwgQygxYjMxZWVkNGU1MjUxYTY3KSwKKyAgICAgQyhkZjAxYTMyMmM0M2E2MjAwKSwgQygy
OThiNjVhMTcxNGI1YTdlKSwgQyg5MzNiODNmMGFlZGYyM2MpLAorICAgICBDKDE1N2JjYjQ0ZDYz
Zjc2NWEpLCBDKGRmMDFhMzIyYzQzYTYyMDApLCBDKDI5OGI2NWExNzE0YjVhN2UpLAorICAgICBD
KDkzM2I4M2YwYWVkZjIzYyksIEMoMTU3YmNiNDRkNjNmNzY1YSksIEMoZDZlOWZjN2EyNzJkOGI1
MSksCisgICAgIEMoM2VlNTA3M2VmMWE5Yjc3NyksIEMoNjMxNDllMzFmYWMwMmM1OSksIEMoMmY3
OTc5ZmY2MzZiYTFkOCksCisgICAgIEMoY2ZkNjNiODMpfSwKKyAgICB7QyhlM2Y2ODI4YjYwMTcw
ODZkKSwgQygyMWI0ZDE5MDA1NTRiM2IwKSwgQyhiZWYzOGJlMTgwOWUyNGYxKSwKKyAgICAgQyhk
OTMyNTE3NTg5ODVlZTZjKSwgQygzMmE5ZTlmODJiYTJhOTMyKSwgQygzODIyYWFjYWE5NWYzMzI5
KSwKKyAgICAgQyhkYjM0OWIyZjkwYTQ5MGQ4KSwgQyhkOTMyNTE3NTg5ODVlZTZjKSwgQygzMmE5
ZTlmODJiYTJhOTMyKSwKKyAgICAgQygzODIyYWFjYWE5NWYzMzI5KSwgQyhkYjM0OWIyZjkwYTQ5
MGQ4KSwgQyg4ZDQ5MTk0YTg5NGExOWNhKSwKKyAgICAgQyg3OWE3OGIwNmU0MjczOGU2KSwgQyg3
ZTBmMWVkYTNkMzkwYzY2KSwgQygxYzI5MWQ3ZTY0MTEwMGE1KSwKKyAgICAgQyg4OTRhNTJlZil9
LAorICAgIHtDKDg1MWZmZjI4NTU2MWRjYTApLCBDKDRkMTI3N2Q3M2NkZjQxNmYpLCBDKDI4Y2Nm
ZmE2MTAxMGViZTIpLAorICAgICBDKDc3YTRjY2FjZDEzMWQ5ZWUpLCBDKGUxZDA4ZWViMmYwZTI5
YWEpLCBDKDcwYjllMzA1MTM4M2ZhNDUpLAorICAgICBDKDU4MmQwMTIwNDI1Y2FiYSksIEMoNzdh
NGNjYWNkMTMxZDllZSksIEMoZTFkMDhlZWIyZjBlMjlhYSksCisgICAgIEMoNzBiOWUzMDUxMzgz
ZmE0NSksIEMoNTgyZDAxMjA0MjVjYWJhKSwgQyhhNzQwZWVmMTg0NmU0NTY0KSwKKyAgICAgQyg1
NzJkZGRiNzRhYzNhZTAwKSwgQyhmZGI1Y2E5NTc5MTYzYmJkKSwgQyhhNjQ5YjliNzk5YzYxNWQy
KSwKKyAgICAgQyg5Y2RlNmE1NCl9LAorICAgIHtDKDYxMTUyYTYzNTk1YTk2ZDkpLCBDKGQxYTNh
OTFlZjNhN2JhNDUpLCBDKDQ0M2I2YmI0YTQ5M2FkMGMpLAorICAgICBDKGExNTQyOTZkMTEzNjJk
MDYpLCBDKGQwZjBiZjFmMWNiMDJmYzEpLCBDKGNjYjg3ZTA5MzA5ZjkwZDEpLAorICAgICBDKGIy
NGE4ZTQ4ODE5MTExMDEpLCBDKGExNTQyOTZkMTEzNjJkMDYpLCBDKGQwZjBiZjFmMWNiMDJmYzEp
LAorICAgICBDKGNjYjg3ZTA5MzA5ZjkwZDEpLCBDKGIyNGE4ZTQ4ODE5MTExMDEpLCBDKDFhNDgx
YjQ1Mjg1NTlmNTgpLAorICAgICBDKGJmODM3YTMxNTA4OTY5OTUpLCBDKDQ5ODllZjZiOTQxYTM3
NTcpLCBDKDJlNzI1YWI3MmQwYjI5NDgpLAorICAgICBDKDZjNDg5OGQ1KX0sCisgICAge0MoNDQ0
NzNlMDNiZTMwNmM4OCksIEMoMzAwOTc3NjFmODcyNDcyYSksIEMoOWZkMWI2NjliZmFkODJkNyks
CisgICAgIEMoM2JhYjE4YjE2NDM5Njc4MyksIEMoNDdlMzg1ZmY5ZDRjMDZmKSwgQygxODA2MjA4
MWJmNTU4ZGYpLAorICAgICBDKDYzNDE2ZWI2OGYxMDRhMzYpLCBDKDNiYWIxOGIxNjQzOTY3ODMp
LCBDKDQ3ZTM4NWZmOWQ0YzA2ZiksCisgICAgIEMoMTgwNjIwODFiZjU1OGRmKSwgQyg2MzQxNmVi
NjhmMTA0YTM2KSwgQyg0YWJkYTE1NjBjNDdhYzgwKSwKKyAgICAgQygxZWEwZTYzZGM2NTg3YWVl
KSwgQygzM2VjNzlkOTJlYmMxZGUpLCBDKDk0ZjlkY2NlZjc3MWUwNDgpLCBDKDEzZTE5NzhlKX0s
CisgICAge0MoM2VhZDVmMjFkMzQ0MDU2KSwgQyhmYjY0MjAzOTNjZmIwNWMzKSwgQyg0MDc5MzIz
OTRjYmJkMzAzKSwKKyAgICAgQyhhYzA1OTYxN2Y1OTA2NjczKSwgQyg5NGQ1MGQzZGNkMzA2OWE3
KSwgQygyYjI2YzNiOTJkZWEwZjApLAorICAgICBDKDk5YjczNzRjYzc4ZmMzZmIpLCBDKGFjMDU5
NjE3ZjU5MDY2NzMpLCBDKDk0ZDUwZDNkY2QzMDY5YTcpLAorICAgICBDKDJiMjZjM2I5MmRlYTBm
MCksIEMoOTliNzM3NGNjNzhmYzNmYiksIEMoMWE4ZTNjNzNjZGQ0MGVlOCksCisgICAgIEMoY2Ji
NWZjYTA2NzQ3ZjQ1YiksIEMoY2VlYzQ0MjM4YjI5MTg0MSksIEMoMjhiZjM1Y2NlOWM5MGEyNSks
IEMoNTFiNGJhOCl9LAorICAgIHtDKDZhYmJmZGUzN2VlMDNiNWIpLCBDKDgzZmViZjE4OGQyY2Mx
MTMpLCBDKGNkYTdiNjJkOTRkNWI4ZWUpLAorICAgICBDKGE0Mzc1NTkwYjhhZTdjODIpLCBDKDE2
OGZkNDJmOWVjYWU0ZmYpLCBDKDIzYmJkZTQzZGUyY2IyMTQpLAorICAgICBDKGE4YzMzMzExMmEy
NDNjOGMpLCBDKGE0Mzc1NTkwYjhhZTdjODIpLCBDKDE2OGZkNDJmOWVjYWU0ZmYpLAorICAgICBD
KDIzYmJkZTQzZGUyY2IyMTQpLCBDKGE4YzMzMzExMmEyNDNjOGMpLCBDKDEwYWMwMTJlOGM1MThi
NDkpLAorICAgICBDKDY0YTQ0NjA1ZDhiMjk0NTgpLCBDKGE2N2U3MDFkMmE2NzkwNzUpLCBDKDNh
M2EyMGY0M2VjOTIzMDMpLAorICAgICBDKGI2YjA2ZTQwKX0sCisgICAge0MoOTQzZTdlZDYzYjNj
MDgwKSwgQygxZWYyMDdlOTQ0NGVmN2Y4KSwgQyhlZjRhOWY5ZjhjNmY5YjRhKSwKKyAgICAgQyg2
YjU0ZmMzOGQ2YTg0MTA4KSwgQygzMmY0MjEyYTQ3YTQ2NjUpLCBDKDZiNWE5YThmNjRlZTFkYTYp
LAorICAgICBDKDlmNzRlODZjNmRhNjk0MjEpLCBDKDZiNTRmYzM4ZDZhODQxMDgpLCBDKDMyZjQy
MTJhNDdhNDY2NSksCisgICAgIEMoNmI1YTlhOGY2NGVlMWRhNiksIEMoOWY3NGU4NmM2ZGE2OTQy
MSksIEMoOTQ2ZGQwY2IzMGMxYTA4ZSksCisgICAgIEMoZmRmMzc2OTU2OTA3ZWFhYSksIEMoYTU5
MDc0YzZlZWMwMzAyOCksIEMoYjFhM2FiY2YyODNmMzRhYyksIEMoMjQwYTJmMil9LAorICAgIHtD
KGQ3MmNlMDUxNzFlZjhhMWEpLCBDKGM2YmQ2YmQ4NjkyMDM4OTQpLCBDKGM3NjBlNjM5NjQ1NWQy
M2EpLAorICAgICBDKGY4NmFmMGI0MGRjY2U3YiksIEMoOGQzYzE1ZDYxMzM5NGQzYyksIEMoNDkx
ZTQwMDQ5MWNkNGVjZSksCisgICAgIEMoN2MxOWQzNTMwZWEzNTQ3ZiksIEMoZjg2YWYwYjQwZGNj
ZTdiKSwgQyg4ZDNjMTVkNjEzMzk0ZDNjKSwKKyAgICAgQyg0OTFlNDAwNDkxY2Q0ZWNlKSwgQyg3
YzE5ZDM1MzBlYTM1NDdmKSwgQygxMzYyOTYzYTFkYzMyYWY5KSwKKyAgICAgQyhmYjliYzExNzYy
ZTEzODVjKSwgQyg5ZTE2NGVmMWY1Mzc2MDgzKSwgQyg2YzE1ODE5YjVlODI4YTdlKSwKKyAgICAg
Qyg1ZGNlZmMzMCl9LAorICAgIHtDKDQxODI4MzJiNTJkNjM3MzUpLCBDKDMzNzA5N2UxMjNlZWE0
MTQpLCBDKGI1YTcyY2EwNDU2ZGY5MTApLAorICAgICBDKDdlYmMwMzQyMzViYzEyMmYpLCBDKGQ5
YTc3ODNkNGVkZDgwNDkpLCBDKDVmOGIwNGExNWFlNDIzNjEpLAorICAgICBDKGZjMTkzMzYzMzM2
NDUzZGQpLCBDKDdlYmMwMzQyMzViYzEyMmYpLCBDKGQ5YTc3ODNkNGVkZDgwNDkpLAorICAgICBD
KDVmOGIwNGExNWFlNDIzNjEpLCBDKGZjMTkzMzYzMzM2NDUzZGQpLCBDKDliNmM1MDIyNGVmOGM0
ZjgpLAorICAgICBDKGJhMjI1Yzc5NDJkMTZjM2YpLCBDKDZmNmQ1NTIyNmE3M2M0MTIpLCBDKGFi
Y2EwNjFmZTA3MjE1MmEpLAorICAgICBDKDdhNDhiMTA1KX0sCisgICAge0MoZDZjZGFlODkyNTg0
YTJjYiksIEMoNThkZTBmYTRlY2ExN2RjZCksIEMoNDNkZjMwYjhmNWYxY2IwMCksCisgICAgIEMo
OWU0ZWE1YTQ5NDFlMDk3ZCksIEMoNTQ3ZTA0OGQ1YTlkYWFiYSksIEMoZWI2ZWNiYjBiODMxZDE4
NSksCisgICAgIEMoZTAxNjhkZjVmYWQwYzY3MCksIEMoOWU0ZWE1YTQ5NDFlMDk3ZCksIEMoNTQ3
ZTA0OGQ1YTlkYWFiYSksCisgICAgIEMoZWI2ZWNiYjBiODMxZDE4NSksIEMoZTAxNjhkZjVmYWQw
YzY3MCksIEMoYWZhOTcwNWY5OGMyYzk2YSksCisgICAgIEMoNzQ5NDM2ZjQ4MTM3YTk2YiksIEMo
NzU5YzA0MWZjMjFkZjQ4NiksIEMoYjIzYmY0MDAxMDdhYTJlYyksCisgICAgIEMoZmQ1NTAwN2Ip
fSwKKyAgICB7Qyg1YzhlOTBiYzI2N2M1ZWU0KSwgQyhlOWFlMDQ0MDc1ZDk5MmQ5KSwgQyhmMjM0
Y2JmZDFmMGExZTU5KSwKKyAgICAgQyhjZTI3NDQ1MjE5NDRmMTRjKSwgQygxMDRmODAzMmY5OWRj
MTUyKSwgQyg0ZTdmNDI1YmZhYzY3Y2E3KSwKKyAgICAgQyg5NDYxYjkxMWExYzZkNTg5KSwgQyhj
ZTI3NDQ1MjE5NDRmMTRjKSwgQygxMDRmODAzMmY5OWRjMTUyKSwKKyAgICAgQyg0ZTdmNDI1YmZh
YzY3Y2E3KSwgQyg5NDYxYjkxMWExYzZkNTg5KSwgQyg1ZTVlY2M3MjZkYjhiNjBkKSwKKyAgICAg
QyhjY2U2OGIwNTg2MDgzYjUxKSwgQyg4YTdmOGU1NGE5Y2JhMGZjKSwgQyg0MmYwMTAxODFkMTZm
MDQ5KSwKKyAgICAgQyg2Yjk1ODk0Yyl9LAorICAgIHtDKGJiZDdmMzBhYzMxMGE2ZjMpLCBDKGIy
M2I1NzBkMjY2NjY4NWYpLCBDKGZiMTNmYjA4Yzk4MTRmZTcpLAorICAgICBDKDRlZTEwNzA0MmU1
MTIzNzQpLCBDKDFlMmM4YzBkMTYwOTdlMTMpLCBDKDIxMGM3NTAwOTk1YWEwZTYpLAorICAgICBD
KDZjMTMxOTA1NTcxMDY0NTcpLCBDKDRlZTEwNzA0MmU1MTIzNzQpLCBDKDFlMmM4YzBkMTYwOTdl
MTMpLAorICAgICBDKDIxMGM3NTAwOTk1YWEwZTYpLCBDKDZjMTMxOTA1NTcxMDY0NTcpLCBDKGE5
OWIzMWM5Njc3N2YzODEpLAorICAgICBDKDgzMTJhZTgzMDFkMzg2YzApLCBDKGVkNTA0MmIyYTRm
YTk2YTMpLCBDKGQ3MWQxYmIyMzkwN2ZlOTcpLAorICAgICBDKDMzNjBlODI3KX0sCisgICAge0Mo
MzZhMDk3YWE0OTUxOWQ5NyksIEMoODIwNDM4MGE3M2M0MDY1KSwgQyg3N2MyMDA0YmRkOWUyNzZh
KSwKKyAgICAgQyg2ZWUxZjgxN2NlMGI3YWVlKSwgQyhlOWRjYjM1MDdmMDU5NmNhKSwgQyg2YmM2
M2M2NjZiNTEwMGUyKSwKKyAgICAgQyhlMGIwNTZmMTgyMTc1MmFmKSwgQyg2ZWUxZjgxN2NlMGI3
YWVlKSwgQyhlOWRjYjM1MDdmMDU5NmNhKSwKKyAgICAgQyg2YmM2M2M2NjZiNTEwMGUyKSwgQyhl
MGIwNTZmMTgyMTc1MmFmKSwgQyg4ZWExMTE0ZTYwMjkyNjc4KSwKKyAgICAgQyg5MDRiODBiNDZi
ZWNjNzcpLCBDKDQ2Y2Q5YmI2ZTlkZmY1MmYpLCBDKDRjOTFlM2I2OTgzNTU1NDApLCBDKDQ1MTc3
ZTBiKX0sCisgICAge0MoZGM3OGNiMDMyYzQ5MjE3KSwgQygxMTI0NjQwODNmODNlMDNhKSwgQyg5
NmFlNTNlMjgxNzBjMGY1KSwKKyAgICAgQyhkMzY3ZmY1NDk1MmE5NTgpLCBDKGNkYWQ5MzA2NTcz
NzExNDcpLCBDKGFhMjRkYzJhOTU3M2Q1ZmUpLAorICAgICBDKGViMTM2ZGFhODlkYTUxMTApLCBD
KGQzNjdmZjU0OTUyYTk1OCksIEMoY2RhZDkzMDY1NzM3MTE0NyksCisgICAgIEMoYWEyNGRjMmE5
NTczZDVmZSksIEMoZWIxMzZkYWE4OWRhNTExMCksIEMoZGU2MjMwMDVmNmQ0NjA1NyksCisgICAg
IEMoYjUwYzBjOTJiOTVlOWI3ZiksIEMoYThhYTU0MDUwYjgxYzk3OCksIEMoNTczZmI1Yzc4OTVh
ZjliNSksCisgICAgIEMoN2M2ZmZmZTQpfSwKKyAgICB7Qyg0NDE1OTNlMGRhOTIyZGZlKSwgQyg5
MzZlZjQ2MDYxNDY5YjMyKSwgQygyMDRhMTkyMTE5N2RkZDg3KSwKKyAgICAgQyg1MGQ4YTcwZTdh
OGQ4ZjU2KSwgQygyNTZkMTUwYWU3NWRhYjc2KSwgQyhlODFmNGM0YTE5ODkwMzZhKSwKKyAgICAg
QyhkMGY4ZGIzNjVmOWQ3ZTAwKSwgQyg1MGQ4YTcwZTdhOGQ4ZjU2KSwgQygyNTZkMTUwYWU3NWRh
Yjc2KSwKKyAgICAgQyhlODFmNGM0YTE5ODkwMzZhKSwgQyhkMGY4ZGIzNjVmOWQ3ZTAwKSwgQyg3
NTNkNjg2Njc3YjE0NTIyKSwKKyAgICAgQyg5Zjc2ZTBjYjZmMmQwYTY2KSwgQyhhYjE0Zjk1OTg4
ZWMwZDM5KSwgQyg5NzYyMWQ5ZGE5Yzk4MTJmKSwKKyAgICAgQyhiYmM3OGRhNCl9LAorICAgIHtD
KDJiYTM4ODNkNzFjYzIxMzMpLCBDKDcyZjJiYmIzMmJlZDFhM2MpLCBDKDI3ZTFiZDk2ZDQ4NDMy
NTEpLAorICAgICBDKGE5MGY3NjFlOGRiMTU0M2EpLCBDKGMzMzllMjNjMDk3MDNjZDgpLCBDKGYw
YzY2MjRjNGIwOThmZDMpLAorICAgICBDKDFiYWUyMDUzZTQxZmE0ZDkpLCBDKGE5MGY3NjFlOGRi
MTU0M2EpLCBDKGMzMzllMjNjMDk3MDNjZDgpLAorICAgICBDKGYwYzY2MjRjNGIwOThmZDMpLCBD
KDFiYWUyMDUzZTQxZmE0ZDkpLCBDKDM1ODllMjczYzIyYmEwNTkpLAorICAgICBDKDYzNzk4MjQ2
ZTU5MTFhMGIpLCBDKDE4ZTcxMGVjMjY4ZmM1ZGMpLCBDKDcxNGExMjJkZTFkMDc0ZjMpLAorICAg
ICBDKGM1YzI1ZDM5KX0sCisgICAge0MoZjJiNmQyYWRmODQyMzYwMCksIEMoNzUxNGUyZjAxNmE0
ODcyMiksIEMoNDMwNDU3NDNhNTAzOTZiYSksCisgICAgIEMoMjNkYWNiODExNjUyYWQ0ZiksIEMo
Yzk4MmRhNDgwZTBkNGM3ZCksIEMoM2E5YzhlZDVhMzk5ZDBhOSksCisgICAgIEMoOTUxYjhkMDg0
NjkxZDRlNCksIEMoMjNkYWNiODExNjUyYWQ0ZiksIEMoYzk4MmRhNDgwZTBkNGM3ZCksCisgICAg
IEMoM2E5YzhlZDVhMzk5ZDBhOSksIEMoOTUxYjhkMDg0NjkxZDRlNCksIEMoZDlmODdiNDk4OGNm
ZjJmNyksCisgICAgIEMoMjE3YTE5MWQ5ODZhYTNiYyksIEMoNmFkMjNjNTZiNDgwMzUwKSwgQyhk
ZDc4NjczOTM4Y2ViMmU3KSwgQyhiNmU1ZDA2ZSl9LAorICAgIHtDKDM4ZmZmZTdmMzY4MGQ2M2Mp
LCBDKGQ1MTMzMjUyNTVhN2E2ZDEpLCBDKDMxZWQ0Nzc5MGY2Y2E2MmYpLAorICAgICBDKGM4MDFm
YWFhMGEyZTMzMWYpLCBDKDQ5MWRiYzU4Mjc5YzdmODgpLCBDKDljMDE3ODg0ODMyMWM5N2EpLAor
ICAgICBDKDlkOTM0ZjgxNGY0ZDZhM2MpLCBDKGM4MDFmYWFhMGEyZTMzMWYpLCBDKDQ5MWRiYzU4
Mjc5YzdmODgpLAorICAgICBDKDljMDE3ODg0ODMyMWM5N2EpLCBDKDlkOTM0ZjgxNGY0ZDZhM2Mp
LCBDKDYwNmEzZTRmYzg3NjMxOTIpLAorICAgICBDKGJjMTVjYjM2YTY3N2VlODQpLCBDKDUyZDU5
MDQxNTdlMWZlNzEpLCBDKDE1ODhkZDhiMTE0NWI3OWIpLAorICAgICBDKDYxNzg1MDRlKX0sCisg
ICAge0MoYjc0NzdiZjBiOWNlMzdjNiksIEMoNjNiMWM1ODBhN2ZkMDJhNCksIEMoZjY0MzNiOWYx
MGE1ZGFjKSwKKyAgICAgQyg2OGRkNzZkYjlkNjRlY2E3KSwgQygzNjI5NzY4MmI2NGI2NyksIEMo
NDJiMTkyZDcxZjQxNGI3YSksCisgICAgIEMoNzk2OTJjZWY0NGZhMDIwNiksIEMoNjhkZDc2ZGI5
ZDY0ZWNhNyksIEMoMzYyOTc2ODJiNjRiNjcpLAorICAgICBDKDQyYjE5MmQ3MWY0MTRiN2EpLCBD
KDc5NjkyY2VmNDRmYTAyMDYpLCBDKGYwOTc5MjUyZjQ3NzZkMDcpLAorICAgICBDKDRiODdjZDRm
MWM5YmJmNTIpLCBDKDUxYjg0YmJjNjMxMmM3MTApLCBDKDE1MDcyMGZiZjg1NDI4YTcpLAorICAg
ICBDKGJkNGMzNjM3KX0sCisgICAge0MoNTViZGIwZTcxZTNlZGViZCksIEMoYzdhYjU2MmJjZjA1
NjhiYyksIEMoNDMxNjYzMzJmOWVlNjg0ZiksCisgICAgIEMoYjJlMjU5NjRjZDQwOTExNyksIEMo
YTAxMDU5OWQ2Mjg3YzQxMiksIEMoZmE1ZDY0NjFlNzY4ZGRhMiksCisgICAgIEMoY2IzY2U3NGU4
ZWM0ZjkwNiksIEMoYjJlMjU5NjRjZDQwOTExNyksIEMoYTAxMDU5OWQ2Mjg3YzQxMiksCisgICAg
IEMoZmE1ZDY0NjFlNzY4ZGRhMiksIEMoY2IzY2U3NGU4ZWM0ZjkwNiksIEMoNjEyMGFiZmQ1NDFh
MjYxMCksCisgICAgIEMoYWE4OGIxNDhjYzk1Nzk0ZCksIEMoMjY4NmNhMzVkZjY1OTBlMyksIEMo
YzZiMDJkMTg2MTZjZTk0ZCksCisgICAgIEMoNmU3YWM0NzQpfSwKKyAgICB7Qyg3ODJmYTFiMDhi
NDc1ZTcpLCBDKGZiNzEzODk1MWM2MWIyM2IpLCBDKDk4MjkxMDVlMjM0ZmIxMWUpLAorICAgICBD
KDlhOGM0MzFmNTAwZWYwNmUpLCBDKGQ4NDg1ODFhNTgwYjZjMTIpLCBDKGZlY2ZlMTFlMTNhMmJk
YjQpLAorICAgICBDKDZjNGZhMDI3M2Q3ZGIwOGMpLCBDKDlhOGM0MzFmNTAwZWYwNmUpLCBDKGQ4
NDg1ODFhNTgwYjZjMTIpLAorICAgICBDKGZlY2ZlMTFlMTNhMmJkYjQpLCBDKDZjNGZhMDI3M2Q3
ZGIwOGMpLCBDKDQ4MmY0M2JmNWFlNTlmY2IpLAorICAgICBDKGY2NTFmYmNhMTA1ZDc5ZTYpLCBD
KGYwOWY3ODY5NWQ4NjU4MTcpLCBDKDdhOTlkMDA5MjA4NWNmNDcpLAorICAgICBDKDFmYjRiNTE4
KX0sCisgICAge0MoYzVkYzE5Yjg3NmQzN2E4MCksIEMoMTVmZmNmZjY2NmNmZDcxMCksIEMoZThj
MzBjNzIwMDMxMDNlMiksCisgICAgIEMoNzg3MDc2NWI0NzBiMmM1ZCksIEMoNzhhOTEwM2ZmOTYw
ZDgyKSwgQyg3YmI1MGZmYzlmYWM3NGIzKSwKKyAgICAgQyg0NzdlNzBhYjJiMzQ3ZGIyKSwgQyg3
ODcwNzY1YjQ3MGIyYzVkKSwgQyg3OGE5MTAzZmY5NjBkODIpLAorICAgICBDKDdiYjUwZmZjOWZh
Yzc0YjMpLCBDKDQ3N2U3MGFiMmIzNDdkYjIpLCBDKGE2MjUyMzhiZGY3YzA3Y2YpLAorICAgICBD
KDExMjhkNTE1MTc0ODA5ZjUpLCBDKGIwZjE2NDdlODJmNDU4NzMpLCBDKDE3NzkyZDFjNGYyMjJj
MzkpLAorICAgICBDKDMxZDEzZDZkKX0sCisgICAge0MoNWUxMTQxNzExZDJkNjcwNiksIEMoYjUz
N2Y2ZGVlOGRlNjkzMyksIEMoM2FmMGExZmJiZTAyN2M1NCksCisgICAgIEMoZWEzNDlkYmMxNmMy
ZTQ0MSksIEMoMzhhNzQ1NWI2YTg3NzU0NyksIEMoNWY5N2I5NzUwZTM2NTQxMSksCisgICAgIEMo
ZThjZGU3ZjkzYWY0OWEzKSwgQyhlYTM0OWRiYzE2YzJlNDQxKSwgQygzOGE3NDU1YjZhODc3NTQ3
KSwKKyAgICAgQyg1Zjk3Yjk3NTBlMzY1NDExKSwgQyhlOGNkZTdmOTNhZjQ5YTMpLCBDKGJhMTAx
OTI1ZWMxZjdlMjYpLAorICAgICBDKGQ1ZTg0Y2FiODE5MmM3MWUpLCBDKGUyNTY0Mjc3MjZmZGQ2
MzMpLCBDKGE0ZjM4ZTJjNjExNjg5MGQpLAorICAgICBDKDI2ZmE3MmUzKX0sCisgICAge0MoNzgy
ZWRmNmRhMDAxMjM0ZiksIEMoZjQ4Y2JkNWM2NmM0OGYzKSwgQyg4MDg3NTRkMWU2NGUyYTMyKSwK
KyAgICAgQyg1ZDlkZGU3NzM1M2IxYTZkKSwgQygxMWY1OGM1NDU4MWZhOGIxKSwgQyhkYTkwZmE3
YzI4YzM3NDc4KSwKKyAgICAgQyg1ZTlhMmVhZmM2NzBhODhhKSwgQyg1ZDlkZGU3NzM1M2IxYTZk
KSwgQygxMWY1OGM1NDU4MWZhOGIxKSwKKyAgICAgQyhkYTkwZmE3YzI4YzM3NDc4KSwgQyg1ZTlh
MmVhZmM2NzBhODhhKSwgQyhlMzVlMWJjMTcyZTAxMWVmKSwKKyAgICAgQyhiZjkyNTVhNDQ1MGFl
N2ZlKSwgQyg1NWY4NTE5NGUyNmJjNTVmKSwgQyg0ZjMyNzg3M2UxNGQwZTU0KSwKKyAgICAgQyg2
YTc0MzNiZil9LAorICAgIHtDKGQyNjI4NTg0MmZmMDRkNDQpLCBDKDhmMzhkNzEzNDFlYWNjYTkp
LCBDKDVjYTQzNmY0ZGI3YTg4M2MpLAorICAgICBDKGJmNDFlNTM3NmI5ZjBlZWMpLCBDKDIyNTJk
MjFlYjdlMWMwZTkpLCBDKGY0YjcwYTk3MTg1NWU3MzIpLAorICAgICBDKDQwYzc2OTVhYTM2NjJh
ZmQpLCBDKGJmNDFlNTM3NmI5ZjBlZWMpLCBDKDIyNTJkMjFlYjdlMWMwZTkpLAorICAgICBDKGY0
YjcwYTk3MTg1NWU3MzIpLCBDKDQwYzc2OTVhYTM2NjJhZmQpLCBDKDc3MGZlMTllMTZhYjczYmIp
LAorICAgICBDKGQ2MDNlYmRhNjM5M2Q3NDkpLCBDKGU1OGM2MjQzOWFhNTBkYmQpLCBDKDk2ZDUx
ZTVhMDJkMmQ3Y2YpLAorICAgICBDKDRlNmRmNzU4KX0sCisgICAge0MoYzZhYjgzMDg2NWE2YmFl
NiksIEMoNmFhOGU4ZGQ0Yjk4ODE1YyksIEMoZWZlMzg0NjcxM2MzNzFlNSksCisgICAgIEMoYTE5
MjRjYmYwYjVmOTIyMiksIEMoN2Y0ODcyMzY5YzJiNDI1OCksIEMoY2Q2ZGEzMDUzMGYzZWE4OSks
CisgICAgIEMoYjdmOGI5YTcwNGU2Y2VhMSksIEMoYTE5MjRjYmYwYjVmOTIyMiksIEMoN2Y0ODcy
MzY5YzJiNDI1OCksCisgICAgIEMoY2Q2ZGEzMDUzMGYzZWE4OSksIEMoYjdmOGI5YTcwNGU2Y2Vh
MSksIEMoZmEwNmZmNDA0MzNmZDUzNSksCisgICAgIEMoZmIxYzM2ZmU4ZjA3MzdmMSksIEMoYmI3
MDUwNTYxMTcxZjgwKSwgQyhiMWJjMjMyMzU5MzVkODk3KSwgQyhkNTdmNjNlYSl9LAorICAgIHtD
KDQ0YjNhMTkyOTIzMjg5MiksIEMoNjFkY2EwZTkxNGZjMjE3KSwgQyhhNjA3Y2MxNDIwOTZiOTY0
KSwKKyAgICAgQyhmN2RiYzg0MzNjODliMjc0KSwgQygyZjVmNzA1ODFjOWI3ZDMyKSwgQygzOWJm
NWU1ZmVjODJkY2NhKSwKKyAgICAgQyg4YWRlNTYzODg5MDFhNjE5KSwgQyhmN2RiYzg0MzNjODli
Mjc0KSwgQygyZjVmNzA1ODFjOWI3ZDMyKSwKKyAgICAgQygzOWJmNWU1ZmVjODJkY2NhKSwgQyg4
YWRlNTYzODg5MDFhNjE5KSwgQyhjMWM2YTcyNWNhYWIzZWE5KSwKKyAgICAgQyhjMWM3OTA2YzJm
ODBiODk4KSwgQyg5YzM4NzFhMDRjYzg4NGU2KSwgQyhkZjAxODEzY2JiZGYyMTdmKSwKKyAgICAg
Qyg1MmVmNzNiMyl9LAorICAgIHtDKDRiNjAzZDc5MzJhOGRlNGYpLCBDKGZhZTY0YzQ2NGI4YThm
NDUpLCBDKDhmYWZhYjc1NjYxZDYwMmEpLAorICAgICBDKDhmZmU4NzBlZjRhZGMwODcpLCBDKDY1
YmVhMmJlNDFmNTViNTQpLCBDKDgyZjM1MDNmNjM2YWVmMSksCisgICAgIEMoNWY3OGEyODIzNzhi
NmJiMCksIEMoOGZmZTg3MGVmNGFkYzA4NyksIEMoNjViZWEyYmU0MWY1NWI1NCksCisgICAgIEMo
ODJmMzUwM2Y2MzZhZWYxKSwgQyg1Zjc4YTI4MjM3OGI2YmIwKSwgQyg3YmYyNDIyYzBiZWNlZGRi
KSwKKyAgICAgQyg5ZDIzOGQ0NzgwMTE0YmQpLCBDKDdhZDE5ODMxMTkwNjU5N2YpLCBDKGVjOGY4
OTJjMDQyMmFjYTMpLCBDKDNjYjM2YzMpfSwKKyAgICB7Qyg0ZWMwYjU0Y2YxNTY2YWZmKSwgQygz
MGQyYzcyNjliMjA2YmY0KSwgQyg3N2MyMmU4MjI5NWUxMDYxKSwKKyAgICAgQygzZGY5YjA0NDM0
NzcxNTQyKSwgQyhmZWRkY2U3ODVjY2I2NjFmKSwgQyhhNjQ0YWZmNzE2OTI4Mjk3KSwKKyAgICAg
QyhkZDQ2YWVlNzM4MjRiNGVkKSwgQygzZGY5YjA0NDM0NzcxNTQyKSwgQyhmZWRkY2U3ODVjY2I2
NjFmKSwKKyAgICAgQyhhNjQ0YWZmNzE2OTI4Mjk3KSwgQyhkZDQ2YWVlNzM4MjRiNGVkKSwgQyhi
ZjhkNzE4NzlkYTI5YjAyKSwKKyAgICAgQyhmYzgyZGNjYmZjODAyMmEwKSwgQygzMWJmY2QwZDlm
NDhkMWQzKSwgQyhjNjRlZTI0ZDBlN2I1ZjhiKSwKKyAgICAgQyg3MmMzOWJlYSl9LAorICAgIHtD
KGVkOGI3YTRiMzQ5NTRmZjcpLCBDKDU2NDMyZGUzMWY0ZWU3NTcpLCBDKDg1YmQzYWJhYTU3MmIx
NTUpLAorICAgICBDKDdkMmMzOGE5MjZkYzFiODgpLCBDKDUyNDViOWViNGNkNjc5MWQpLCBDKGZi
NTNhYjAzYjlhZDA4NTUpLAorICAgICBDKDM2NjQwMjZjOGZjNjY5ZDcpLCBDKDdkMmMzOGE5MjZk
YzFiODgpLCBDKDUyNDViOWViNGNkNjc5MWQpLAorICAgICBDKGZiNTNhYjAzYjlhZDA4NTUpLCBD
KDM2NjQwMjZjOGZjNjY5ZDcpLCBDKDQ1MDI0ZDUwODBiYzE5NiksCisgICAgIEMoYjIzNmViZWMy
Y2MyNzQwKSwgQygyNzIzMWFkMGUzNDQzYmU0KSwgQygxNDU3ODBiNjNmODA5MjUwKSwgQyhhNjVh
YTI1Yyl9LAorICAgIHtDKDVkMjhiNDM2OTQxNzZjMjYpLCBDKDcxNGNjOGJjMTJkMDYwYWUpLCBD
KDM0Mzc3MjYyNzNhODNmZTYpLAorICAgICBDKDg2NGIxYjI4ZWMxNmVhODYpLCBDKDZhNzhhNWE0
MDM5ZWMyYjkpLCBDKDhlOTU5NTMzZTM1YTc2NiksCisgICAgIEMoMzQ3YjdjMjJiNzVhZTY1Ziks
IEMoODY0YjFiMjhlYzE2ZWE4NiksIEMoNmE3OGE1YTQwMzllYzJiOSksCisgICAgIEMoOGU5NTk1
MzNlMzVhNzY2KSwgQygzNDdiN2MyMmI3NWFlNjVmKSwgQyg1MDA1ODkyYmI2MWU2NDdjKSwKKyAg
ICAgQyhmZTY0NjUxOWI0YTE4OTRkKSwgQyhjZDgwMTAyNmY3NGE4YTUzKSwgQyg4NzEzNDYzZTlh
MWFiOWNlKSwKKyAgICAgQyg3NDc0MDUzOSl9LAorICAgIHtDKDZhMWVmMzYzOWUxZDIwMmUpLCBD
KDkxOWJjMWJkMTQ1YWQ5MjgpLCBDKDMwZjNmN2U0OGMyOGE3NzMpLAorICAgICBDKDJlOGM0OWQ3
YzdhYWE1MjcpLCBDKDVlMjMyOGZjODcwMWRiN2MpLCBDKDg5ZWYxYWZjYTgxZjdkZTgpLAorICAg
ICBDKGIxODU3ZGIxMTk4NWQyOTYpLCBDKDJlOGM0OWQ3YzdhYWE1MjcpLCBDKDVlMjMyOGZjODcw
MWRiN2MpLAorICAgICBDKDg5ZWYxYWZjYTgxZjdkZTgpLCBDKGIxODU3ZGIxMTk4NWQyOTYpLCBD
KDE3NzYzZDY5NWY2MTYxMTUpLAorICAgICBDKGI4ZjdiZjFmY2RjODMyMmMpLCBDKGNmMGM2MTkz
OGFiMDdhMjcpLCBDKDExMjJkM2U2ZWRiNGU4NjYpLAorICAgICBDKGMzYWUzYzI2KX0sCisgICAg
e0MoMTU5ZjRkOWUwMzA3YjExMSksIEMoM2UxNzkxNGE1Njc1YTBjKSwgQyhhZjg0OWJkNDI1MDQ3
YjUxKSwKKyAgICAgQygzYjY5ZWRhZGYzNTc0MzJiKSwgQygzYTJlMzExYzEyMWU2YmYyKSwgQygz
ODBmYWQxZTI4OGQ1N2U1KSwKKyAgICAgQyhiZjdjN2U4ZWYwZTNiODNhKSwgQygzYjY5ZWRhZGYz
NTc0MzJiKSwgQygzYTJlMzExYzEyMWU2YmYyKSwKKyAgICAgQygzODBmYWQxZTI4OGQ1N2U1KSwg
QyhiZjdjN2U4ZWYwZTNiODNhKSwgQyg5Mjk2NmQ1ZjQzNTZhZTliKSwKKyAgICAgQygyYTAzZmM2
NmM0ZDZjMDM2KSwgQygyNTE2ZDhiZGRiMGQ1MjU5KSwgQyhiM2ZmZTk3MzdmZjUwOTApLCBDKGYy
OWRiOGEyKX0sCisgICAge0MoY2MwYTg0MDcyNWE3ZTI1YiksIEMoNTdjNjk0NTQzOTZlMTkzYSks
IEMoOTc2ZWFmN2VlZTBiNDU0MCksCisgICAgIEMoY2Q3YTQ2ODUwYjk1ZTkwMSksIEMoYzU3Zjdk
MDYwZGRhMjQ2ZiksIEMoNmI5NDA2ZWFkNjQwNzliZiksCisgICAgIEMoMTFiMjhlMjBhNTczYjdi
ZCksIEMoY2Q3YTQ2ODUwYjk1ZTkwMSksIEMoYzU3ZjdkMDYwZGRhMjQ2ZiksCisgICAgIEMoNmI5
NDA2ZWFkNjQwNzliZiksIEMoMTFiMjhlMjBhNTczYjdiZCksIEMoMmQ2ZGIzNTZlOTM2OWFjZSks
CisgICAgIEMoZGMwYWZlMTBmYmExOTMpLCBDKDVjZGIxMDg4NWRiYmZjZSksIEMoNWM3MDBlMjA1
NzgyZTM1YSksIEMoMWVmNGNiZjQpfSwKKyAgICB7QyhhMmIyN2VlMjJmNjNjM2YxKSwgQyg5ZWJk
ZTBjZTFiMzk3NmIyKSwgQygyZmU2YTkyYTI1N2FmMzA4KSwKKyAgICAgQyg4YzFkZjkyN2E5MzBh
ZjU5KSwgQyhhNDYyZjQ0MjNjOWUzODRlKSwgQygyMzY1NDIyNTViMmFkOGQ5KSwKKyAgICAgQyg1
OTVkMjAxYTJjMTlkNWJjKSwgQyg4YzFkZjkyN2E5MzBhZjU5KSwgQyhhNDYyZjQ0MjNjOWUzODRl
KSwKKyAgICAgQygyMzY1NDIyNTViMmFkOGQ5KSwgQyg1OTVkMjAxYTJjMTlkNWJjKSwgQygyMmM4
N2Q0NjA0YTY3ZjMpLAorICAgICBDKDU4NWEwNmViNGJjNDRjNGYpLCBDKGI0MTc1YTdhYzdlYWJj
ZDgpLCBDKGE0NTdkM2VlYmExNGFiOGMpLAorICAgICBDKGE5YmU2YzQxKX0sCisgICAge0MoZDhm
MmYyMzQ4OTliY2FiMyksIEMoYjEwYjAzNzI5N2MzYTE2OCksIEMoZGViZWEyYzUxMGNlZGE3Ziks
CisgICAgIEMoOTQ5OGZlZmI4OTAyODdjZSksIEMoYWU2OGMyYmU1YjFhNjlhNiksIEMoNjE4OWRm
YmEzNGVkNjU2YyksCisgICAgIEMoOTE2NThmOTU4MzZlNTIwNiksIEMoOTQ5OGZlZmI4OTAyODdj
ZSksIEMoYWU2OGMyYmU1YjFhNjlhNiksCisgICAgIEMoNjE4OWRmYmEzNGVkNjU2YyksIEMoOTE2
NThmOTU4MzZlNTIwNiksIEMoYzBiYjRmZmYzMmFlY2Q0ZCksCisgICAgIEMoOTQxMjVmNTA1YTUw
ZWVmOSksIEMoNmFjNDA2ZTdjZmJjZTViYiksIEMoMzQ0YTRiMWRjZGI3ZjVkOCksIEMoZmEzMTgw
MSl9LAorICAgIHtDKDU4NGYyODU0Mzg2NDg0NGYpLCBDKGQ3Y2VlOWZjMmQ0NmYyMGQpLCBDKGEz
OGRjYTU2NTczODcyMDUpLAorICAgICBDKDdhMGI2ZGJhYjlhMTRlNjkpLCBDKGM2ZDBhOWQ2YjBl
MzFhYzQpLCBDKGE2NzRkODU4MTJjN2NmNiksCisgICAgIEMoNjM1MzhjMDM1MTA0OTk0MCksIEMo
N2EwYjZkYmFiOWExNGU2OSksIEMoYzZkMGE5ZDZiMGUzMWFjNCksCisgICAgIEMoYTY3NGQ4NTgx
MmM3Y2Y2KSwgQyg2MzUzOGMwMzUxMDQ5OTQwKSwgQyg5NzEwZTVmMGJjOTNkMWQpLAorICAgICBD
KGMyYmVhNWJkN2M1NGRkZDQpLCBDKDQ4NzM5YWYyYmVkMGQzMmQpLCBDKGJhMmM0ZTA5ZTIxZmJh
ODUpLAorICAgICBDKDgzMzFjNWQ4KX0sCisgICAge0MoYTk0YmU0NmRkOWFhNDFhZiksIEMoYTU3
ZTViNzcyM2QzZjliZCksIEMoMzRiZjg0NWE1MmZkMmYpLAorICAgICBDKDg0M2I1ODQ2M2M4ZGYw
YWUpLCBDKDc0YjI1ODMyNGU5MTYwNDUpLCBDKGJkZDczNTMyMzBlYjJiMzgpLAorICAgICBDKGZh
ZDMxZmNlZDdhYmFkZTUpLCBDKDg0M2I1ODQ2M2M4ZGYwYWUpLCBDKDc0YjI1ODMyNGU5MTYwNDUp
LAorICAgICBDKGJkZDczNTMyMzBlYjJiMzgpLCBDKGZhZDMxZmNlZDdhYmFkZTUpLCBDKDI0MzZh
ZWFmYjAwNDZmODUpLAorICAgICBDKDY1YmM5YWY5ZTVlMzMxNjEpLCBDKDkyNzMzYjFiM2FlOTA2
MjgpLCBDKGY0ODE0M2VhZjc4YTdhODkpLAorICAgICBDKGU5ODc2ZGI4KX0sCisgICAge0MoOWE4
N2JlYTIyNzQ5MWQyMCksIEMoYTQ2ODY1N2UyYjljNDNlNyksIEMoYWY5YmE2MGRiOGQ4OWVmNyks
CisgICAgIEMoY2M3NmY0MjllYTdhMTJiYiksIEMoNWYzMGVhZjJiYjE0ODcwYSksIEMoNDM0ZTgy
NGNiM2UwY2QxMSksCisgICAgIEMoNDMxYTRkMzgyZTM5ZDE2ZSksIEMoY2M3NmY0MjllYTdhMTJi
YiksIEMoNWYzMGVhZjJiYjE0ODcwYSksCisgICAgIEMoNDM0ZTgyNGNiM2UwY2QxMSksIEMoNDMx
YTRkMzgyZTM5ZDE2ZSksIEMoOWU1MWY5MTNjNDc3M2E4KSwKKyAgICAgQygzMmFiMTkyNTgyM2Qw
YWRkKSwgQyg5OWM2MWI1NGMxZDhmNjlkKSwgQygzOGNmYjgwZjAyYjQzYjFmKSwKKyAgICAgQygy
N2IwNjA0ZSl9LAorICAgIHtDKDI3Njg4YzI0OTU4ZDFhNWMpLCBDKGUzYjRhMWM5NDI5Y2YyNTMp
LCBDKDQ4YTk1ODExZjcwZDY0YmMpLAorICAgICBDKDMyODA2MzIyOWRiMjI4ODQpLCBDKDY3ZTlj
OTVmOGJhOTYwMjgpLCBDKDdjNmJmMDFjNjA0MzYwNzUpLAorICAgICBDKGZhNTUxNjFlN2Q5MDMw
YjIpLCBDKDMyODA2MzIyOWRiMjI4ODQpLCBDKDY3ZTljOTVmOGJhOTYwMjgpLAorICAgICBDKDdj
NmJmMDFjNjA0MzYwNzUpLCBDKGZhNTUxNjFlN2Q5MDMwYjIpLCBDKGRhZGJjMmYwZGFiOTE2ODEp
LAorICAgICBDKGRhMzlkN2E0OTM0Y2ExMSksIEMoMTYyZTg0NWQyNGMxYjQ1YyksIEMoZWI1Yjlk
Y2Q4YzZlZDMxYiksIEMoZGNlYzA3ZjIpfSwKKyAgICB7Qyg1ZDFkMzc3OTBhMTg3M2FkKSwgQyhl
ZDljZDRiY2M1ZmExMDkwKSwgQyhjZTUxY2RlMDVkOGNkOTZhKSwKKyAgICAgQyhmNzJjMjZlNjI0
NDA3ZTY2KSwgQyhhMGViNTQxYmRiYzZkNDA5KSwgQyhjM2Y0MGEyZjQwYjNiMjEzKSwKKyAgICAg
Qyg2YTc4NGRlNjg3OTQ0OTJkKSwgQyhmNzJjMjZlNjI0NDA3ZTY2KSwgQyhhMGViNTQxYmRiYzZk
NDA5KSwKKyAgICAgQyhjM2Y0MGEyZjQwYjNiMjEzKSwgQyg2YTc4NGRlNjg3OTQ0OTJkKSwgQygx
MGEzOGEyM2RiZWY3OTM3KSwKKyAgICAgQyg2YTU1NjBmODUzMjUyMjc4KSwgQyhjMzM4N2JiZjNj
N2I4MmJhKSwgQyhmYmVlN2MxMmViMDcyODA1KSwKKyAgICAgQyhjZmYwYTgyYSl9LAorICAgIHtD
KDFmMDNmZDE4YjcxMWVlYTkpLCBDKDU2NmQ4OWIxOTQ2ZDM4MWEpLCBDKDZlOTZlODNmYzkyNTYz
YWIpLAorICAgICBDKDQwNWY2NmNmOGNhZTFhMzIpLCBDKGQ3MjYxNzQwZDhmMThjZTYpLCBDKGZl
YTNhZjY0YTQxM2QwYjIpLAorICAgICBDKGQ2NGQxODEwZTgzNTIwZmUpLCBDKDQwNWY2NmNmOGNh
ZTFhMzIpLCBDKGQ3MjYxNzQwZDhmMThjZTYpLAorICAgICBDKGZlYTNhZjY0YTQxM2QwYjIpLCBD
KGQ2NGQxODEwZTgzNTIwZmUpLCBDKGUxMzM0YTAwYTU4MGM2ZTgpLAorICAgICBDKDQ1NDA0OWUx
YjUyYzE1ZiksIEMoODg5NWQ4MjNkOTc3ODI0NyksIEMoZWZhN2YyZTg4YjgyNjYxOCksIEMoZmVj
ODM2MjEpfSwKKyAgICB7QyhmMDMxNmYyODZjZjUyN2I2KSwgQyhmODRjMjk1MzhkZTFhYTVhKSwg
Qyg3NjEyZWQzYzkyM2Q0YTcxKSwKKyAgICAgQyhkNGVjY2ViZTkzOTNlZThhKSwgQygyZWI3ODY3
YzIzMThjYzU5KSwgQygxY2U2MjFmZDcwMGZlMzk2KSwKKyAgICAgQyg2ODY0NTBkN2EzNDY4Nzhh
KSwgQyhkNGVjY2ViZTkzOTNlZThhKSwgQygyZWI3ODY3YzIzMThjYzU5KSwKKyAgICAgQygxY2U2
MjFmZDcwMGZlMzk2KSwgQyg2ODY0NTBkN2EzNDY4NzhhKSwgQyg3NWE1ZjM3NTc5ZjhiNGNiKSwK
KyAgICAgQyg1MDBjYzE2ZWI2NTQxZGM3KSwgQyhiN2IwMjMxN2I1MzlkOWE2KSwgQygzNTE5ZGRm
ZjViYzIwYTI5KSwgQyg3NDNkOGRjKX0sCisgICAge0MoMjk3MDA4YmNiM2UzNDAxZCksIEMoNjFh
OGU0MDdmODJiMGM2OSksIEMoYTRhMzViZmYwNTI0ZmEwZSksCisgICAgIEMoN2E2MWQ4ZjU1MmE1
MzQ0MiksIEMoODIxZDFkOGQ4Y2ZhY2YzNSksIEMoN2NjMDYzNjFiODZkMDU1OSksCisgICAgIEMo
MTE5YjYxN2E4YzJiZTE5OSksIEMoN2E2MWQ4ZjU1MmE1MzQ0MiksIEMoODIxZDFkOGQ4Y2ZhY2Yz
NSksCisgICAgIEMoN2NjMDYzNjFiODZkMDU1OSksIEMoMTE5YjYxN2E4YzJiZTE5OSksIEMoMjk5
NjQ4N2RhNjcyMTc1OSksCisgICAgIEMoNjFhOTAxMzc2MDcwYjkxZCksIEMoZDg4ZGVlMTJhZTlj
OWIzYyksIEMoNTY2NTQ5MWJlMWZhNTNhNyksCisgICAgIEMoNjRkNDFkMjYpfSwKKyAgICB7Qyg0
M2M2MjUyNDExZWUzYmUpLCBDKGI0Y2ExYjgwNzc3NzcxNjgpLCBDKDI3NDZkYzNmN2RhMTczN2Yp
LAorICAgICBDKDIyNDdhNGIyMDU4ZDFjNTApLCBDKDFiM2ZhMTg0YjFkN2JjYzApLCBDKGRlYjg1
NjEzOTk1YzA2ZWQpLAorICAgICBDKGNiZTFkOTU3NDg1YTNjY2QpLCBDKDIyNDdhNGIyMDU4ZDFj
NTApLCBDKDFiM2ZhMTg0YjFkN2JjYzApLAorICAgICBDKGRlYjg1NjEzOTk1YzA2ZWQpLCBDKGNi
ZTFkOTU3NDg1YTNjY2QpLCBDKGRmZTI0MWY4ZjMzYzk2YjYpLAorICAgICBDKDY1OTdlYjA1MDE5
YzIxMDkpLCBDKGRhMzQ0YjJhNjNhMjE5Y2YpLCBDKDc5YjhlMzg4NzYxMjM3OGEpLAorICAgICBD
KGFjZDkwYzgxKX0sCisgICAge0MoY2UzOGE5YTU0ZmFkNjU5OSksIEMoNmQ2ZjRhOTBiOWU4NzU1
ZSksIEMoYzNlY2M3OWZmMTA1ZGUzZiksCisgICAgIEMoZThiOWVlOTZlZmEyZDBlKSwgQyg5MDEy
MjkwNWM0YWI1MzU4KSwgQyg4NGY4MGM4MzJkNzE5NzljKSwKKyAgICAgQygyMjkzMTBmM2ZmYmJm
NGM2KSwgQyhlOGI5ZWU5NmVmYTJkMGUpLCBDKDkwMTIyOTA1YzRhYjUzNTgpLAorICAgICBDKDg0
ZjgwYzgzMmQ3MTk3OWMpLCBDKDIyOTMxMGYzZmZiYmY0YzYpLCBDKGNjOWViNDIxMDBjZDYzYTcp
LAorICAgICBDKDdhMjgzZjJmM2RhN2I5ZiksIEMoMzU5YjA2MWQzMTRlN2E3MiksIEMoZDBkOTU5
NzIwMDI4ODYyKSwgQyg3Yzc0NmE0Yil9LAorICAgIHtDKDI3MGE5MzA1ZmVmNzBjZiksIEMoNjAw
MTkzOTk5ZDg4NGYzYSksIEMoZjRkNDllYWUwOWVkOGExKSwKKyAgICAgQygyZTA5MWI4NTY2MGYx
Mjk4KSwgQyhiZmUzN2ZhZTFjZGQ2NGM5KSwgQyg4ZGRkZmJhYjkzMGY2NDk0KSwKKyAgICAgQygy
Y2NmNGIwOGY1ZDQxN2EpLCBDKDJlMDkxYjg1NjYwZjEyOTgpLCBDKGJmZTM3ZmFlMWNkZDY0Yzkp
LAorICAgICBDKDhkZGRmYmFiOTMwZjY0OTQpLCBDKDJjY2Y0YjA4ZjVkNDE3YSksIEMoMzY1YzJl
ZTg1NTgyZmU2KSwKKyAgICAgQyhkZWUwMjdiY2QzNmRiNjJhKSwgQyhiMTUwOTk0ZDNjN2U1ODM4
KSwgQyhmZGZkMWEwZTY5MmU0MzZkKSwKKyAgICAgQyhiMTA0N2U5OSl9LAorICAgIHtDKGU3MWJl
N2MyOGU4NGQxMTkpLCBDKGViNmFjZTU5OTMyNzM2ZTYpLCBDKDcwYzQzOTc4MDdiYTEyYzUpLAor
ICAgICBDKDdhOWQ3Nzc4MWFjNTM1MDkpLCBDKDQ0ODljM2NjZmRhM2IzOWMpLCBDKGZhNzIyZDRm
MjQzYjQ5NjQpLAorICAgICBDKDI1ZjE1ODAwYmZmZGQxMjIpLCBDKDdhOWQ3Nzc4MWFjNTM1MDkp
LCBDKDQ0ODljM2NjZmRhM2IzOWMpLAorICAgICBDKGZhNzIyZDRmMjQzYjQ5NjQpLCBDKDI1ZjE1
ODAwYmZmZGQxMjIpLCBDKGVkODVlNDE1N2ZiZDMyOTcpLAorICAgICBDKGFhYjE5NjcyMjdkNTll
ZmQpLCBDKDIxOTk2MzEyMTJlYjM4MzkpLCBDKDNlNGMxOTM1OWFhZTFjYzIpLAorICAgICBDKGQx
ZmQxMDY4KX0sCisgICAge0MoYjViNThjMjRiNTNhYWExOSksIEMoZDJhNmFiMDc3M2RkODk3Ziks
IEMoZWY3NjJmZTAxZWNiNWI5NyksCisgICAgIEMoOWRlZWZiY2ZhNGNhYjFmMSksIEMoYjU4ZjU5
NDNjZDI0OTJiYSksIEMoYTk2ZGNjNGQxZjQ3ODJhNyksCisgICAgIEMoMTAyYjYyYTgyMzA5ZGRl
NSksIEMoOWRlZWZiY2ZhNGNhYjFmMSksIEMoYjU4ZjU5NDNjZDI0OTJiYSksCisgICAgIEMoYTk2
ZGNjNGQxZjQ3ODJhNyksIEMoMTAyYjYyYTgyMzA5ZGRlNSksIEMoMzVmZTUyNjg0NzYzYjMzOCks
CisgICAgIEMoYWZlMjYxNjY1MWVhYWQxZiksIEMoNDNlMzg3MTViZGZhMDVlNyksIEMoODNjOWJh
ODNiNWVjNGE0MCksCisgICAgIEMoNTY0ODYwNzcpfSwKKyAgICB7Qyg0NGRkNTliZDMwMTk5NWNm
KSwgQygzY2NhYmQ3NjQ5M2FkYTFhKSwgQyg1NDBkYjRjODdkNTVlZjIzKSwKKyAgICAgQyhjZmM2
ZDdhZGRhMzU3OTcpLCBDKDE0YzdkMWYzMjMzMmNmMDMpLCBDKDJkNTUzZmZiZmYzYmU5OWQpLAor
ICAgICBDKGM5MWM0ZWUwY2I1NjMxODIpLCBDKGNmYzZkN2FkZGEzNTc5NyksIEMoMTRjN2QxZjMy
MzMyY2YwMyksCisgICAgIEMoMmQ1NTNmZmJmZjNiZTk5ZCksIEMoYzkxYzRlZTBjYjU2MzE4Miks
IEMoOWFhNWU1MDdmNDkxMzZmMCksCisgICAgIEMoNzYwYzVkZDFhODJjNDg4OCksIEMoYmVlYTdl
OTc0YTFjZmI1YyksIEMoNjQwYjI0Nzc3NGZlNGJmNyksCisgICAgIEMoNjA2OWJlODApfSwKKyAg
ICB7QyhiNGQ0Nzg5ZWI2ZjI2MzBiKSwgQyhiZjY5NzMyNjNjZThlZjBlKSwgQyhkMWM3NWM1MDg0
NGI5ZDMpLAorICAgICBDKGJjZTkwNTkwMGMxZWM2ZWEpLCBDKGMzMGYzMDRmNDA0NTQ4N2QpLCBD
KGE1YzU1MDE2NmIzYTE0MmIpLAorICAgICBDKDJmNDgyYjRlMzUzMjcyODcpLCBDKGJjZTkwNTkw
MGMxZWM2ZWEpLCBDKGMzMGYzMDRmNDA0NTQ4N2QpLAorICAgICBDKGE1YzU1MDE2NmIzYTE0MmIp
LCBDKDJmNDgyYjRlMzUzMjcyODcpLCBDKDE1YjIxZGRkZGYzNTU0MzgpLAorICAgICBDKDQ5NjQ3
MWZhMzAwNmJhYiksIEMoMmE4ZmQ0NThkMDZjMWEzMiksIEMoZGI5MWU4YWU4MTJmMGI4ZCksIEMo
MjA3ODM1OWIpfSwKKyAgICB7QygxMjgwNzgzM2M0NjM3MzdjKSwgQyg1OGU5MjdlYTNiMzc3NmI0
KSwgQyg3MmRkMjBlZjFjMmY4YWQwKSwKKyAgICAgQyg5MTBiNjEwZGU3YTk2N2JmKSwgQyg4MDFi
Yzg2MjEyMGY2YmY1KSwgQyg5NjUzZWZlZWQ1ODk3NjgxKSwKKyAgICAgQyhmNTM2N2ZmODNlOWVi
YmIzKSwgQyg5MTBiNjEwZGU3YTk2N2JmKSwgQyg4MDFiYzg2MjEyMGY2YmY1KSwKKyAgICAgQyg5
NjUzZWZlZWQ1ODk3NjgxKSwgQyhmNTM2N2ZmODNlOWViYmIzKSwgQyhjZjU2ZDQ4OWFmZDFiMGJm
KSwKKyAgICAgQyhjN2M3OTM3MTVjYWUzZGU4KSwgQyg2MzFmOTFkNjRhYmFlNDdjKSwgQyg1ZjFm
NDJmYjE0YTQ0NGEyKSwKKyAgICAgQyg5ZWEyMTAwNCl9LAorICAgIHtDKGU4ODQxOTkyMmI4NzE3
NmYpLCBDKGJjZjMyZjQxYTdkZGJmNmYpLCBDKGQ2ZWJlZmQ4MDg1YzFhMGYpLAorICAgICBDKGQx
ZDQ0ZmU5OTQ1MWVmNzIpLCBDKGVjOTUxYmE4ZTUxZTM1NDUpLCBDKGMwY2E4NmIzNjA3NDZlOTYp
LAorICAgICBDKGFhNjc5Y2MwNjZhODA0MGIpLCBDKGQxZDQ0ZmU5OTQ1MWVmNzIpLCBDKGVjOTUx
YmE4ZTUxZTM1NDUpLAorICAgICBDKGMwY2E4NmIzNjA3NDZlOTYpLCBDKGFhNjc5Y2MwNjZhODA0
MGIpLCBDKDUxMDY1ODYxZWNlNmZmYzEpLAorICAgICBDKDc2Nzc3MzY4YTI5OTdlMTEpLCBDKDg3
ZjI3OGY0NjczMTEwMGMpLCBDKGJiYWE0MTQwYmRiYTQ1MjcpLAorICAgICBDKDljOWNmZTg4KX0s
CisgICAge0MoMTA1MTkxZTBlYzhmN2Y2MCksIEMoNTkxOGRiZmNjYTk3MWU3OSksIEMoNmIyODVj
OGE5NDQ3NjdiOSksCisgICAgIEMoZDNlODZhYzRmNWVjY2ZhNCksIEMoZTUzOTlkZjJiMTA2Y2Ex
KSwgQyg4MTRhYWRmYWNkMjE3ZjFkKSwKKyAgICAgQygyNzU0ZTNkZWYxYzQwNWE5KSwgQyhkM2U4
NmFjNGY1ZWNjZmE0KSwgQyhlNTM5OWRmMmIxMDZjYTEpLAorICAgICBDKDgxNGFhZGZhY2QyMTdm
MWQpLCBDKDI3NTRlM2RlZjFjNDA1YTkpLCBDKDk5MjkwMzIzYjlmMDZlNzQpLAorICAgICBDKGE5
NzgyZTA0M2YyNzE0NjEpLCBDKDEzYzhiM2I4YzI3NWE4NjApLCBDKDYwMzhkNjIwZTU4MWU5ZTcp
LAorICAgICBDKGI3MGE2ZGRkKX0sCisgICAge0MoYTViODhiZjczOTlhOWYwNyksIEMoZmNhM2Rk
ZmQ5NjQ2MWNjNCksIEMoZWJlNzM4ZmRjMDI4MmZjNiksCisgICAgIEMoNjlhZmJjODAwNjA2ZDBm
YiksIEMoNjEwNGI5N2E5ZGIxMmRmNyksIEMoZmNjMDkxOThiYjkwYmY5ZiksCisgICAgIEMoYzVl
MDc3ZTQxYTY1YmE5MSksIEMoNjlhZmJjODAwNjA2ZDBmYiksIEMoNjEwNGI5N2E5ZGIxMmRmNyks
CisgICAgIEMoZmNjMDkxOThiYjkwYmY5ZiksIEMoYzVlMDc3ZTQxYTY1YmE5MSksIEMoZGIyNjE4
MzVlZThhYTA4ZSksCisgICAgIEMoZGIwZWU2NjJlNTc5NmRjOSksIEMoZmMxODgwZWNlYzQ5OWU1
ZiksIEMoNjQ4ODY2ZmJlMTUwMjAzNCksCisgICAgIEMoZGVhMzcyOTgpfSwKKyAgICB7QyhkMDhj
M2Y1NzQ3ZDg0ZjUwKSwgQyg0ZTcwOGIyN2QxYjZmOGFjKSwgQyg3MGY3MGZkNzM0ODg4NjA2KSwK
KyAgICAgQyg5MDlhZTAxOWQ3NjFkMDE5KSwgQygzNjhiZjRhYWIxYjg2ZWY5KSwgQygzMDhiZDYx
NmQ1NDYwMjM5KSwKKyAgICAgQyg0ZmQzMzI2OWY3Njc4M2VhKSwgQyg5MDlhZTAxOWQ3NjFkMDE5
KSwgQygzNjhiZjRhYWIxYjg2ZWY5KSwKKyAgICAgQygzMDhiZDYxNmQ1NDYwMjM5KSwgQyg0ZmQz
MzI2OWY3Njc4M2VhKSwgQyg3ZDUzYjM3YzE5NzEzZWFiKSwKKyAgICAgQyg2YmJhNmVhYmRhNThh
ODk3KSwgQyg5MWFiYjUwZWZjMTE2MDQ3KSwgQyg0ZTkwMmYzNDdlMGUwZTM1KSwKKyAgICAgQyg4
ZjQ4MDgxOSl9LAorICAgIHtDKDJmNzJkMTJhNDAwNDRiNGIpLCBDKDg4OTY4OTM1MmZlYzUzZGUp
LCBDKGYwM2U2YWQ4N2ViMmYzNiksCisgICAgIEMoZWY3OWYyOGQ4NzRiOWUyZCksIEMoYjUxMjA4
OWU4ZTYzYjc2YyksIEMoMjRkYzA2ODMzYmYxOTNhOSksCisgICAgIEMoM2MyMzMwOGJhOGU5OWQ3
ZSksIEMoZWY3OWYyOGQ4NzRiOWUyZCksIEMoYjUxMjA4OWU4ZTYzYjc2YyksCisgICAgIEMoMjRk
YzA2ODMzYmYxOTNhOSksIEMoM2MyMzMwOGJhOGU5OWQ3ZSksIEMoNWNlZmY3Yjg1Y2FjZWZiNyks
CisgICAgIEMoZWYzOTAzMzg4OThjZDczKSwgQyhiMTI5NjdkN2QyMjU0ZjU0KSwgQyhkZTg3NGNi
ZDhhZWY3Yjc1KSwgQygzMGIzYjE2KX0sCisgICAge0MoYWExZjYxZmRjNWMyZTExZSksIEMoYzJj
NTZjZDExMjc3YWIyNyksIEMoYTFlNzMwNjlmZGYxZjk0ZiksCisgICAgIEMoODE4NGJhYjM2YmI3
OWRmMCksIEMoYzgxOTI5Y2U4NjU1Yjk0MCksIEMoMzAxYjExYmY4YTRkOGNlOCksCisgICAgIEMo
NzMxMjZmZDQ1YWI3NWRlOSksIEMoODE4NGJhYjM2YmI3OWRmMCksIEMoYzgxOTI5Y2U4NjU1Yjk0
MCksCisgICAgIEMoMzAxYjExYmY4YTRkOGNlOCksIEMoNzMxMjZmZDQ1YWI3NWRlOSksIEMoNGJk
NmY3NmU0ODg4MjI5YSksCisgICAgIEMoOWFhZTM1NWI1NGE3NTZkNSksIEMoY2EzZGU5NzI2ZjZl
OTlkNSksIEMoODNmODBjYWM1YmMzNjg1MiksCisgICAgIEMoZjMxYmM0ZTgpfSwKKyAgICB7Qyg5
NDg5YjM2ZmUyMjQ2MjQ0KSwgQygzMzU1MzY3MDMzYmU3NGI4KSwgQyg1ZjU3YzIyNzdjYmNlNTE2
KSwKKyAgICAgQyhiYzYxNDE0Zjk4MDJlY2FmKSwgQyg4ZWRkMWU3YTUwNTYyOTI0KSwgQyg0OGY0
YWI3NGEzNWU5NWYyKSwKKyAgICAgQyhjYzFhZmNmZDk5YTE4MGU3KSwgQyhiYzYxNDE0Zjk4MDJl
Y2FmKSwgQyg4ZWRkMWU3YTUwNTYyOTI0KSwKKyAgICAgQyg0OGY0YWI3NGEzNWU5NWYyKSwgQyhj
YzFhZmNmZDk5YTE4MGU3KSwgQyg1MTdkZDVlM2FjZjY2MTEwKSwKKyAgICAgQyg3ZGQzYWQ5ZTg5
NzhiMzBkKSwgQygxZjZkNWRmYzcwZGU4MTJiKSwgQyg5NDdkYWFiYTY0NDFhYWYzKSwKKyAgICAg
Qyg0MTlmOTUzYil9LAorICAgIHtDKDM1OGQ3YzA0NzZhMDQ0Y2QpLCBDKGUwYjdiNDdiY2JkODg1
NGYpLCBDKGZmYjQyZWM2OTY3MDU1MTkpLAorICAgICBDKGQ0NWU0NGMyNjNlOTVjMzgpLCBDKGRm
NjFkYjUzOTIzYWUzYjEpLCBDKGYyYmM5NDhjYzRmYzAyN2MpLAorICAgICBDKDhhODAwMGM2MDY2
NzcyYTMpLCBDKGQ0NWU0NGMyNjNlOTVjMzgpLCBDKGRmNjFkYjUzOTIzYWUzYjEpLAorICAgICBD
KGYyYmM5NDhjYzRmYzAyN2MpLCBDKDhhODAwMGM2MDY2NzcyYTMpLCBDKDlmZDkzYzk0MmQzMWZh
MTcpLAorICAgICBDKGQ3NjUxZWNlYmUwOWNiZDMpLCBDKDY4NjgyY2VmYjZhNmYxNjUpLCBDKDU0
MWViOTlhMmRjZWU0MGUpLAorICAgICBDKDIwZTllNzZkKX0sCisgICAge0MoYjBjNDhkZjE0Mjc1
MjY1YSksIEMoOWRhNDQ0ODk3NTkwNWVmYSksIEMoZDcxNjYxOGU0MTRjZWI2ZCksCisgICAgIEMo
MzBlODg4YWY3MGRmMWU1NiksIEMoNGJlZTU0YmQ0NzI3NGY2OSksIEMoMTc4YjQwNTllMWEwYWZl
NSksCisgICAgIEMoNmUyYzk2YjdmNThlNTE3OCksIEMoMzBlODg4YWY3MGRmMWU1NiksIEMoNGJl
ZTU0YmQ0NzI3NGY2OSksCisgICAgIEMoMTc4YjQwNTllMWEwYWZlNSksIEMoNmUyYzk2YjdmNThl
NTE3OCksIEMoYmI0MjlkM2I5Mjc1ZTliYyksCisgICAgIEMoYzE5ODAxM2YwOWNhZmRjNiksIEMo
ZWMwYTZlZTRmYjVkZTM0OCksIEMoNzQ0ZTFlOGVkMmViMWViMCksCisgICAgIEMoNjQ2ZjBmZjgp
fSwKKyAgICB7QyhkYWE3MGJiMzAwOTU2NTg4KSwgQyg0MTBlYTY4ODNhMjQwYzZkKSwgQyhmNWM4
MjM5ZmI1NjczZWIzKSwKKyAgICAgQyg4YjFkN2JiNDkwM2MxMDVmKSwgQyhjZmIxYzMyMmI3Mzg5
MWQ0KSwgQyg1ZjNiNzkyYjIyZjA3Mjk3KSwKKyAgICAgQyhmZDY0MDYxZjhiZTg2ODExKSwgQyg4
YjFkN2JiNDkwM2MxMDVmKSwgQyhjZmIxYzMyMmI3Mzg5MWQ0KSwKKyAgICAgQyg1ZjNiNzkyYjIy
ZjA3Mjk3KSwgQyhmZDY0MDYxZjhiZTg2ODExKSwgQygxZDJkYjcxMjkyMWNmYzJiKSwKKyAgICAg
QyhjZDFiMmIyZjJjZWUxOGFlKSwgQyg2YjZmODc5MGRjN2ZlYjA5KSwgQyg0NmMxNzllZmEzZjBm
NTE4KSwKKyAgICAgQyhlZWI3ZWNhOCl9LAorICAgIHtDKDRlYzk3YTIwYjZjNGM3YzIpLCBDKDU5
MTNiMWNkNDU0ZjI5ZmQpLCBDKGE5NjI5ZjlkYWYwNmQ2ODUpLAorICAgICBDKDg1MmM5NDk5MTU2
YThmMyksIEMoM2ExODBhNmFiZmI3OTAxNiksIEMoOWZjM2M0NzY0MDM3YzNjOSksCisgICAgIEMo
Mjg5MGM0MmZjMGQ5NzJjZiksIEMoODUyYzk0OTkxNTZhOGYzKSwgQygzYTE4MGE2YWJmYjc5MDE2
KSwKKyAgICAgQyg5ZmMzYzQ3NjQwMzdjM2M5KSwgQygyODkwYzQyZmMwZDk3MmNmKSwgQygxZjky
MjMxZDRlNTM3NjUxKSwKKyAgICAgQyhmYWI4YmIwN2FhNTRiN2I5KSwgQyhlMDVkMmQ3NzFjNDg1
ZWQ0KSwgQyhkNTBiMzRiZjgwOGNhNzMxKSwgQyg4MTEyYmI5KX0sCisgICAge0MoNWMzMzIzNjI4
NDM1YTJlOCksIEMoMWJlYTQ1Y2U5ZTcyYTZlMyksIEMoOTA0ZjBhNzAyN2RkYjUyZSksCisgICAg
IEMoOTM5ZjMxZGUxNGRjZGM3YiksIEMoYTY4ZmRmNDM3OWRmMDY4KSwgQyhmMTY5ZTFmMGI4MzUy
NzlkKSwKKyAgICAgQyg3NDk4ZTQzMmY5NjE5YjI3KSwgQyg5MzlmMzFkZTE0ZGNkYzdiKSwgQyhh
NjhmZGY0Mzc5ZGYwNjgpLAorICAgICBDKGYxNjllMWYwYjgzNTI3OWQpLCBDKDc0OThlNDMyZjk2
MTliMjcpLCBDKDFhYTJhMWYxMTA4OGU3ODUpLAorICAgICBDKGQ2YWQ3MmY0NTcyOWRlNzgpLCBD
KDlhNjM4MTQxNTdjODAyNjcpLCBDKDU1NTM4ZTM1YzY0OGU0MzUpLAorICAgICBDKDg1YTZkNDc3
KX0sCisgICAge0MoYzFlZjI2YmVhMjYwYWJkYiksIEMoNmVlNDIzZjIxMzdmOTI4MCksIEMoZGYy
MTE4Yjk0NmVkMGI0MyksCisgICAgIEMoMTFiODdmYjFiOTAwY2MzOSksIEMoZTMzZTU5YjkwZGQ4
MTViMSksIEMoYWE2Y2I1YzRiYWZhZTc0MSksCisgICAgIEMoNzM5Njk5OTUxY2E4YzcxMyksIEMo
MTFiODdmYjFiOTAwY2MzOSksIEMoZTMzZTU5YjkwZGQ4MTViMSksCisgICAgIEMoYWE2Y2I1YzRi
YWZhZTc0MSksIEMoNzM5Njk5OTUxY2E4YzcxMyksIEMoMmI0Mzg5YTk2NzMxMDA3NyksCisgICAg
IEMoMWQ1MzgyNTY4YTMxYzJjOSksIEMoNTVkMWU3ODdmYmU2ODk5MSksIEMoMjc3YzI1NGJjMzEz
MDFlNyksCisgICAgIEMoNTZmNzZjODQpfSwKKyAgICB7Qyg2YmU3MzgxYjExNWQ2NTNhKSwgQyhl
ZDA0NjE5MDc1OGVhNTExKSwgQyhkZTZhNDVmZmMzZWQxMTU5KSwKKyAgICAgQyhhNjQ3NjBlNDA0
MTQ0N2QwKSwgQyhlM2VhYzQ5ZjNlMGM1MTA5KSwgQyhkZDg2YzRkNGNiNjI1OGUyKSwKKyAgICAg
QyhlZmE5ODU3YWZkMDQ2YzdmKSwgQyhhNjQ3NjBlNDA0MTQ0N2QwKSwgQyhlM2VhYzQ5ZjNlMGM1
MTA5KSwKKyAgICAgQyhkZDg2YzRkNGNiNjI1OGUyKSwgQyhlZmE5ODU3YWZkMDQ2YzdmKSwgQyhm
YWI3OTNkYWU4MjQ2ZjE2KSwKKyAgICAgQyhjOWUzYjEyMWIzMWQwOTRjKSwgQyhhMmEwZjU1ODU4
NDY1MjI2KSwgQyhkYmE2ZjBmZjM5NDM2MzQ0KSwKKyAgICAgQyg5YWY0NWQ1NSl9LAorICAgIHtD
KGFlM2VlY2UxNzExYjIxMDUpLCBDKDE0ZmQzZjQwMjdmODFhNGEpLCBDKGFiYjdlNDUxNzdkMTUx
ZGIpLAorICAgICBDKDUwMWYzZTliMTg4NjFlNDQpLCBDKDQ2NTIwMTE3MDA3NGU3ZDgpLCBDKDk2
ZDVjOTE5NzBmMmNiMTIpLAorICAgICBDKDQwZmQyOGM0MzUwNmM5NWQpLCBDKDUwMWYzZTliMTg4
NjFlNDQpLCBDKDQ2NTIwMTE3MDA3NGU3ZDgpLAorICAgICBDKDk2ZDVjOTE5NzBmMmNiMTIpLCBD
KDQwZmQyOGM0MzUwNmM5NWQpLCBDKGU4NmM0YjA3ODAyYWFmZjMpLAorICAgICBDKGYzMTdkMTQx
MTIzNzJhNzApLCBDKDY0MWIxM2U1ODc3MTE2NTApLCBDKDQ5MTU0MjFhYjEwOTBlYWEpLAorICAg
ICBDKGQxYzMzNzYwKX0sCisgICAge0MoMzc2YzI4NTg4YjhmYjM4OSksIEMoNmIwNDVlODRkODQ5
MWVkMiksIEMoNGU4NTdlZmZiN2Q0ZTdkYyksCisgICAgIEMoMTU0ZGQ3OWZkMmY5ODRiNCksIEMo
ZjExMTcxNzc1NjIyYzFjMyksIEMoMWZiZTMwOTgyZTc4ZTZmMCksCisgICAgIEMoYTQ2MGExNWRj
ZjMyN2U0NCksIEMoMTU0ZGQ3OWZkMmY5ODRiNCksIEMoZjExMTcxNzc1NjIyYzFjMyksCisgICAg
IEMoMWZiZTMwOTgyZTc4ZTZmMCksIEMoYTQ2MGExNWRjZjMyN2U0NCksIEMoZjM1OWUwOTAwY2Mz
ZDU4MiksCisgICAgIEMoN2UxMTA3MDQ0Nzk3NmQwMCksIEMoMzI0ZTZkYWYyNzZlYTRiNSksIEMo
N2FhNmUyZGYwY2M5NGZhMiksCisgICAgIEMoYzU2YmJmNjkpfSwKKyAgICB7Qyg1OGQ5NDM1MDNi
YjY3NDhmKSwgQyg0MTljNmM4ZTg4YWM3MGY2KSwgQyg1ODY3NjBjYmYzZDNkMzY4KSwKKyAgICAg
QyhiN2UxNjQ5NzlkNWNjZmMxKSwgQygxMmNiNDIzMGQyNmJmMjg2KSwgQyhmMWJmOTEwZDQ0YmQ4
NGNiKSwKKyAgICAgQyhiMzJjMjRjNmE0MDI3MiksIEMoYjdlMTY0OTc5ZDVjY2ZjMSksIEMoMTJj
YjQyMzBkMjZiZjI4NiksCisgICAgIEMoZjFiZjkxMGQ0NGJkODRjYiksIEMoYjMyYzI0YzZhNDAy
NzIpLCBDKDExZWQxMmUzNGM0OGMwMzkpLAorICAgICBDKGIwYzI1MzhlNTFkMGE2YWMpLCBDKDQy
NjliYjc3M2UxZDU1M2EpLCBDKGUzNWE5ZGJhYmQzNDg2NyksIEMoYWJlY2ZiOWIpfSwKKyAgICB7
QyhkZmZmNTk4OWY1Y2ZkOWExKSwgQyhiY2VlMmU3ZWEzYTk2ZjgzKSwgQyg2ODFjNzg3NGFkYjI5
MDE3KSwKKyAgICAgQygzZmY2YzhhYzdjMzZiNjNhKSwgQyg0OGJjODgzMWQ4NDllMzI2KSwgQygz
MGIwNzhlNzZiMDIxNGUyKSwKKyAgICAgQyg0Mjk1NGU2YWQ3MjFiOTIwKSwgQygzZmY2YzhhYzdj
MzZiNjNhKSwgQyg0OGJjODgzMWQ4NDllMzI2KSwKKyAgICAgQygzMGIwNzhlNzZiMDIxNGUyKSwg
Qyg0Mjk1NGU2YWQ3MjFiOTIwKSwgQyhmOWFlYjMzZDE2NGI0NDcyKSwKKyAgICAgQyg3YjM1M2Ix
MTA4MzFkYmRjKSwgQygxNmY2NGM4MmY0NGFlMTdiKSwgQyhiNzEyNDRjYzE2NGIzYjJiKSwKKyAg
ICAgQyg4ZGUxMzI1NSl9LAorICAgIHtDKDdmYjE5ZWIxYTQ5NmU4ZjUpLCBDKGQ0OWU1ZGZkYjVj
MDgzM2YpLCBDKGMwZDVkN2IyZjdjNDhkYzcpLAorICAgICBDKDFhNTczMTNhMzJmMjJkZGUpLCBD
KDMwYWY0NmU0OTg1MGJmOGIpLCBDKGFhMGZlOGQxMmY4MDhmODMpLAorICAgICBDKDQ0M2UzMWQ3
MDg3M2JiNmIpLCBDKDFhNTczMTNhMzJmMjJkZGUpLCBDKDMwYWY0NmU0OTg1MGJmOGIpLAorICAg
ICBDKGFhMGZlOGQxMmY4MDhmODMpLCBDKDQ0M2UzMWQ3MDg3M2JiNmIpLCBDKGJiZWI2N2M0OWM5
ZmRjMTMpLAorICAgICBDKDE4ZjFlMmE4OGY1OWY5ZDUpLCBDKGZiMWIwNTAzOGU1ZGVmMTEpLCBD
KGQwNDUwYjVjZTRjMzljNTIpLAorICAgICBDKGE5OGVlMjk5KX0sCisgICAge0MoNWRiYTViMGRh
ZGNjZGJhYSksIEMoNGJhOGRhOGRlZDg3ZmNkYyksIEMoZjY5M2ZkZDI1YmFkZjJmMCksCisgICAg
IEMoZTkwMjllNjM2NDI4NjU4NyksIEMoYWU2OWY0OWVjYjQ2NzI2YyksIEMoMThlMDAyNjc5MjE3
YzQwNSksCisgICAgIEMoYmQ2ZDY2ZTg1MzMyYWU5ZiksIEMoZTkwMjllNjM2NDI4NjU4NyksIEMo
YWU2OWY0OWVjYjQ2NzI2YyksCisgICAgIEMoMThlMDAyNjc5MjE3YzQwNSksIEMoYmQ2ZDY2ZTg1
MzMyYWU5ZiksIEMoNmJmMzMwYjFjMzUzZGQyYSksCisgICAgIEMoNzRlOWYyZTcxZTNhNDE1Miks
IEMoM2Y4NTU2MGI1MGY2YzQxMyksIEMoZDMzYTUyYTQ3ZWFlZDJiNCksCisgICAgIEMoMzAxNWY1
NTYpfSwKKyAgICB7Qyg2ODhiZWY0YjEzNWE2ODI5KSwgQyg4ZDMxZDgyYWJjZDU0ZThlKSwgQyhm
OTVmOGEzMGQ1NTAzNmQ3KSwKKyAgICAgQygzZDhjOTBlMjdhYTJlMTQ3KSwgQygyZWM5MzdjZTBh
YTIzNmI0KSwgQyg4OWI1NjM5OTZkM2EwYjc4KSwKKyAgICAgQygzOWIwMjQxM2IyM2MzZjA4KSwg
QygzZDhjOTBlMjdhYTJlMTQ3KSwgQygyZWM5MzdjZTBhYTIzNmI0KSwKKyAgICAgQyg4OWI1NjM5
OTZkM2EwYjc4KSwgQygzOWIwMjQxM2IyM2MzZjA4KSwgQyg4ZDQ3NWEyZTY0ZmFmMmQyKSwKKyAg
ICAgQyg0ODU2N2Y3ZGNhNDZlY2FmKSwgQygyNTRjZGEwOGQ1Zjg3YTZkKSwgQyhlYzZhZTlmNzI5
YzQ3MDM5KSwKKyAgICAgQyg1YTQzMGUyOSl9LAorICAgIHtDKGQ4MzIzYmUwNTQzM2E0MTIpLCBD
KDhkNDhmYTJiMmI3NjE0MWQpLCBDKDNkMzQ2ZjIzOTc4MzM2YTUpLAorICAgICBDKDRkNTBjNzUz
NzU2MjAzM2YpLCBDKDU3ZGM3NjI1YjYxZGZlODkpLCBDKDk3MjNhOWY0YzA4YWQ5M2EpLAorICAg
ICBDKDUzMDk1OTZmNDhhYjQ1NmIpLCBDKDRkNTBjNzUzNzU2MjAzM2YpLCBDKDU3ZGM3NjI1YjYx
ZGZlODkpLAorICAgICBDKDk3MjNhOWY0YzA4YWQ5M2EpLCBDKDUzMDk1OTZmNDhhYjQ1NmIpLCBD
KDdlNDUzMDg4MDE5ZDIyMGYpLAorICAgICBDKDg3NzYwNjdiYTZhYjk3MTQpLCBDKDY3ZTFkMDZi
ZDE5NWRlMzkpLCBDKDc0YTFhMzJmODk5NGI5MTgpLAorICAgICBDKDI3OTdhZGQwKX0sCisgICAg
e0MoM2I1NDA0Mjc4YTU1YTdmYyksIEMoMjNjYTBiMzI3YzJkMGE4MSksIEMoYTZkNjUzMjk1NzFj
ODkyYyksCisgICAgIEMoNDU1MDQ4MDFlMGU2MDY2YiksIEMoODZlNmM2ZDYxNTJhM2QwNCksIEMo
NGYzZGIxYzUzZWNhMjk1MiksCisgICAgIEMoZDI0ZDY5YjNlOWVmMTBmMyksIEMoNDU1MDQ4MDFl
MGU2MDY2YiksIEMoODZlNmM2ZDYxNTJhM2QwNCksCisgICAgIEMoNGYzZGIxYzUzZWNhMjk1Miks
IEMoZDI0ZDY5YjNlOWVmMTBmMyksIEMoOTNhMGRlMjIxOWU2NmE3MCksCisgICAgIEMoODkzMmM3
MTE1Y2NiMWY4YSksIEMoNWVmNTAzZmRmMjg0MWE4YyksIEMoMzgwNjRkZDllZmE4MGE0MSksCisg
ICAgIEMoMjdkNTUwMTYpfSwKKyAgICB7QygyYTk2YTNmOTZjNWU5YmJjKSwgQyg4Y2FmODU2NmUy
MTJkZGE4KSwgQyg5MDRkZTU1OWNhMTZlNDVlKSwKKyAgICAgQyhmMTNiYzJkOWMyZmUyMjJlKSwg
QyhiZTRjY2VjOWE2Y2RjY2ZkKSwgQygzN2IyY2JkZDk3M2EzYWM5KSwKKyAgICAgQyg3YjMyMjNj
ZDljOTQ5N2JlKSwgQyhmMTNiYzJkOWMyZmUyMjJlKSwgQyhiZTRjY2VjOWE2Y2RjY2ZkKSwKKyAg
ICAgQygzN2IyY2JkZDk3M2EzYWM5KSwgQyg3YjMyMjNjZDljOTQ5N2JlKSwgQyhkNTkwNDQ0MGYz
NzZmODg5KSwKKyAgICAgQyg2MmIxMzE4NzY5OWM0NzNjKSwgQyg0NzUxYjg5MjUxZjI2NzI2KSwg
Qyg5NTAwZDg0ZmEzYTYxYmE4KSwKKyAgICAgQyg4NDk0NWE4Mil9LAorICAgIHtDKDIyYmViZmRj
YzI2ZDE4ZmYpLCBDKDRiNGQ4ZGNiMTA4MDdiYTEpLCBDKDQwMjY1ZWVlMzBjNmI4OTYpLAorICAg
ICBDKDM3NTJiNDIzMDczYjExOWEpLCBDKDM3N2RjNWViN2M2NjJiZGIpLCBDKDJiOWYwN2Y5M2E2
YzI1YjkpLAorICAgICBDKDk2ZjI0ZWRlMmJkYzA3MTgpLCBDKDM3NTJiNDIzMDczYjExOWEpLCBD
KDM3N2RjNWViN2M2NjJiZGIpLAorICAgICBDKDJiOWYwN2Y5M2E2YzI1YjkpLCBDKDk2ZjI0ZWRl
MmJkYzA3MTgpLCBDKGY3Njk5YjEyYzMxNDE3YmQpLAorICAgICBDKDE3YjM2NmY0MDFjNThiMiks
IEMoYmY2MDE4OGQ1ZjQzN2IzNyksIEMoNDg0NDM2ZTU2ZGYxN2YwNCksIEMoM2VmN2UyMjQpfSwK
KyAgICB7Qyg2MjdhMjI0OWVjNmJiY2MyKSwgQyhjMDU3OGI0NjJhNDY3MzVhKSwgQyg0OTc0Yjhl
ZTFjMmQ0ZjFmKSwKKyAgICAgQyhlYmRiYjkxOGViNmQ4MzdmKSwgQyg4ZmI1ZjIxOGRkODQxNDdj
KSwgQyhjNzdkZDFmODgxZGYyYzU0KSwKKyAgICAgQyg2MmVhYzI5OGVjMjI2ZGMzKSwgQyhlYmRi
YjkxOGViNmQ4MzdmKSwgQyg4ZmI1ZjIxOGRkODQxNDdjKSwKKyAgICAgQyhjNzdkZDFmODgxZGYy
YzU0KSwgQyg2MmVhYzI5OGVjMjI2ZGMzKSwgQyg0M2VkZWQ4M2M0YjYwYmQwKSwKKyAgICAgQyg5
YTBhNDAzYjU0ODc1MDNiKSwgQygyNWYzMDVkOTE0N2YwYmRhKSwgQygzYWQ0MTdmNTExYmMxZTY0
KSwKKyAgICAgQygzNWVkOGRjOCl9LAorICAgIHtDKDNhYmFmMTY2N2JhMmYzZTApLCBDKGVlNzg0
NzZiNWVlYWRjMSksIEMoN2U1NmFjMGE2Y2E0ZjNmNCksCisgICAgIEMoZjFiOWI0MTNkZjlkNzll
ZCksIEMoYTc2MjFiNmZkMDJkYjUwMyksIEMoZDkyZjdiYTk5MjhhNGZmZSksCisgICAgIEMoNTNm
NTZiYWJkY2FlOTZhNiksIEMoZjFiOWI0MTNkZjlkNzllZCksIEMoYTc2MjFiNmZkMDJkYjUwMyks
CisgICAgIEMoZDkyZjdiYTk5MjhhNGZmZSksIEMoNTNmNTZiYWJkY2FlOTZhNiksIEMoNTMwMmI4
OWZjNDg3MTNhYiksCisgICAgIEMoZDAzZTNiMDRkYmU3YTJmMiksIEMoZmE3NGVmOGFmNmQzNzZh
NyksIEMoMTAzYzhjZGVhMTA1MGVmMiksCisgICAgIEMoNmE3NWU0M2QpfSwKKyAgICB7QygzOTMx
YWM2OGM1ZjFiMmM5KSwgQyhlZmUzODkyMzYzYWIwZmIwKSwgQyg0MGI3MDcyNjgzMzdjZDM2KSwK
KyAgICAgQyhhNTNhNmI2NGIxYWM4NWM5KSwgQyhkNTBlN2Y4NmVlMWI4MzJiKSwgQyg3YmFiMDhm
ZGQyNmJhMGE0KSwKKyAgICAgQyg3NTg3NzQzYzE4ZmUyNDc1KSwgQyhhNTNhNmI2NGIxYWM4NWM5
KSwgQyhkNTBlN2Y4NmVlMWI4MzJiKSwKKyAgICAgQyg3YmFiMDhmZGQyNmJhMGE0KSwgQyg3NTg3
NzQzYzE4ZmUyNDc1KSwgQyhlM2I1ZDVkNDkwY2Y1NzYxKSwKKyAgICAgQyhkZmMwNTNmN2QwNjVl
ZGQ1KSwgQyg0MmZmZDhkNWZiNzAxMjlmKSwgQyg1OTljYTM4Njc3Y2NjZGMzKSwKKyAgICAgQygy
MzVkOTgwNSl9LAorICAgIHtDKGI5OGZiMDYwNmY0MTY3NTQpLCBDKDQ2YTZlNTU0N2JhOTljMWUp
LCBDKGM5MDlkODIxMTJhOGVkMiksCisgICAgIEMoZGJmYWFlOTY0MmIzMjA1YSksIEMoZjY3NmEx
MzM5NDAyYmNiOSksIEMoZjRmMTJhNWIxYWMxMWYyOSksCisgICAgIEMoN2RiOGJhZDgxMjQ5ZGVl
NCksIEMoZGJmYWFlOTY0MmIzMjA1YSksIEMoZjY3NmExMzM5NDAyYmNiOSksCisgICAgIEMoZjRm
MTJhNWIxYWMxMWYyOSksIEMoN2RiOGJhZDgxMjQ5ZGVlNCksIEMoYjI2ZTQ2ZjJkYTk1OTIyZSks
CisgICAgIEMoMmFhZWRkNWUxMmUzYzYxMSksIEMoYTBlMmQ5MDgyOTY2MDc0KSwgQyhjNjRkYThh
MTY3YWRkNjNkKSwgQyhmN2Q2OTU3Mil9LAorICAgIHtDKDdmNzcyOWEzM2U1OGZjYzQpLCBDKDJl
NGJjMWU3YTAyM2VhZDQpLCBDKGU3MDcwMDhlYTdjYTYyMjIpLAorICAgICBDKDQ3NDE4YTcxODAw
MzM0YTApLCBDKGQxMDM5NWQ4ZmM2NGQ4YTQpLCBDKDgyNTdhMzAwNjJjYjY2ZiksCisgICAgIEMo
Njc4NmY5YjJkYzFmZjE4YSksIEMoNDc0MThhNzE4MDAzMzRhMCksIEMoZDEwMzk1ZDhmYzY0ZDhh
NCksCisgICAgIEMoODI1N2EzMDA2MmNiNjZmKSwgQyg2Nzg2ZjliMmRjMWZmMThhKSwgQyg1NjMz
ZjQzN2JiMmYxODBmKSwKKyAgICAgQyhlNWEzYTQwNTczN2QyMmQ2KSwgQyhjYTBmZjFlZjZmN2Yw
Yjc0KSwgQyhkMGFlNjAwNjg0YjE2ZGY4KSwKKyAgICAgQyhiYWNkMDE5OSl9LAorICAgIHtDKDQy
YTBhYTljZTgyODQ4YjMpLCBDKDU3MjMyNzMwZTZiZWUxNzUpLCBDKGY4OWJiM2YzNzA3ODIwMzEp
LAorICAgICBDKGNhYTMzY2Y5YjRmNjYxOWMpLCBDKGIyYzg2NDhhZDQ5YzIwOWYpLCBDKDllODll
Y2UwNzEyZGIxYzApLAorICAgICBDKDEwMWQ4Mjc0YTcxMWE1NGIpLCBDKGNhYTMzY2Y5YjRmNjYx
OWMpLCBDKGIyYzg2NDhhZDQ5YzIwOWYpLAorICAgICBDKDllODllY2UwNzEyZGIxYzApLCBDKDEw
MWQ4Mjc0YTcxMWE1NGIpLCBDKDUzOGU3OWYxZTcwMTM1Y2QpLAorICAgICBDKGUxZjVhNzZmOTgz
Yzg0NGUpLCBDKDY1M2MwODJmZDY2MDg4ZmMpLCBDKDFiOWM5YjQ2NGI2NTQ5NTgpLAorICAgICBD
KGU0MjhmNTBlKX0sCisgICAge0MoNmIyYzZkMzg0MDhhNDg4OSksIEMoZGUzZWY2ZjY4ZmIyNTg4
NSksIEMoMjA3NTRmNDU2YzIwMzM2MSksCisgICAgIEMoOTQxZjUwMjNjMGM5NDNmOSksIEMoZGZk
ZWI5NTY0ZmQ2NmYyNCksIEMoMjE0MGNlYzcwNmI5ZDQwNiksCisgICAgIEMoN2IyMjQyOWIxMzFl
OWM3MiksIEMoOTQxZjUwMjNjMGM5NDNmOSksIEMoZGZkZWI5NTY0ZmQ2NmYyNCksCisgICAgIEMo
MjE0MGNlYzcwNmI5ZDQwNiksIEMoN2IyMjQyOWIxMzFlOWM3MiksIEMoOTQyMTVjMjJlYjk0MGY0
NSksCisgICAgIEMoZDI4YjllZDQ3NGY3MjQ5YSksIEMoNmYyNWU4OGYyZmJmOWY1NiksIEMoYjY3
MThmOWU2MDViMzhhYyksCisgICAgIEMoODFlYWFhZDMpfSwKKyAgICB7Qyg5MzAzODBhMzc0MWU4
NjJhKSwgQygzNDhkMjg2MzhkYzcxNjU4KSwgQyg4OWRlZGNmZDE2NTRlYTBkKSwKKyAgICAgQyg3
ZTdmNjE2ODQwODAxMDYpLCBDKDgzN2FjZTk3OTQ1ODI5NzYpLCBDKDVhYzhjYTc2YTM1N2ViMWIp
LAorICAgICBDKDMyYjU4MzA4NjI1NjYxZmIpLCBDKDdlN2Y2MTY4NDA4MDEwNiksIEMoODM3YWNl
OTc5NDU4Mjk3NiksCisgICAgIEMoNWFjOGNhNzZhMzU3ZWIxYiksIEMoMzJiNTgzMDg2MjU2NjFm
YiksIEMoYzA5NzA1YzQ1NzIwMjVkOSksCisgICAgIEMoZjkxODdmNmFmMDI5MTMwMyksIEMoMWMw
ZWRkOGVlNGIwMjUzOCksIEMoZTZjYjEwNWRhYTA1NzhhKSwgQyhhZGRiZDNlMyl9LAorICAgIHtD
KDk0ODA4YjVkMmFhMjVmOWEpLCBDKGNlYzcyOTY4MTI4MTk1ZTApLCBDKGQ5ZjRkYTJiZGMxZTEz
MGYpLAorICAgICBDKDI3MmQ4ZGQ3NGYzMDA2Y2MpLCBDKGVjNmMyYWQxZWMwM2Y1NTQpLCBDKDRh
ZDI3NmIyNDlhNWQ1ZGQpLAorICAgICBDKDU0OWEyMmExN2MwY2RlMTIpLCBDKDI3MmQ4ZGQ3NGYz
MDA2Y2MpLCBDKGVjNmMyYWQxZWMwM2Y1NTQpLAorICAgICBDKDRhZDI3NmIyNDlhNWQ1ZGQpLCBD
KDU0OWEyMmExN2MwY2RlMTIpLCBDKDYwMjExOWNiODI0ZDdjZGUpLAorICAgICBDKGY0ZDNjZWYy
NDBlZjM1ZmEpLCBDKGU4ODk4OTVlMDE5MTFiYzcpLCBDKDc4NWE3ZTVhYzIwZTg1MmIpLAorICAg
ICBDKGU2NmRiY2EwKX0sCisgICAge0MoYjMxYWJiMDhhZTZlM2QzOCksIEMoOWViOWE5NWNiZDll
ODIyMyksIEMoODAxOWU3OWI3ZWU5NGVhOSksCisgICAgIEMoN2IyMjcxYTdhMzI0OGUyMiksIEMo
M2I0ZjcwMGU1YTBiYTUyMyksIEMoOGViYzUyMGMyMjcyMDZmZSksCisgICAgIEMoZGEzZjg2MTQ5
MGY1ZDI5MSksIEMoN2IyMjcxYTdhMzI0OGUyMiksIEMoM2I0ZjcwMGU1YTBiYTUyMyksCisgICAg
IEMoOGViYzUyMGMyMjcyMDZmZSksIEMoZGEzZjg2MTQ5MGY1ZDI5MSksIEMoZDA4YTY4OWY5ZjNh
YTYwZSksCisgICAgIEMoNTQ3YzFiOTdhMDY4NjYxZiksIEMoNGIxNWE2N2ZhMjkxNzJmMCksIEMo
ZWFmNDBjMDg1MTkxZDgwZiksCisgICAgIEMoYWZlMTFmZDUpfSwKKyAgICB7QyhkY2NiNTUzNGE4
OTNlYTFhKSwgQyhjZTcxYzM5ODcwOGM2MTMxKSwgQyhmZTIzOTYzMTU0NTdjMTY0KSwKKyAgICAg
QygzZjEyMjlmNGQwZmQ5NmZiKSwgQygzMzEzMGFhNWZhOWQ0M2YyKSwgQyhlNDI2OTNkNWIzNGU2
M2FiKSwKKyAgICAgQygyZjRlZjJiZTY3ZjYyMTA0KSwgQygzZjEyMjlmNGQwZmQ5NmZiKSwgQygz
MzEzMGFhNWZhOWQ0M2YyKSwKKyAgICAgQyhlNDI2OTNkNWIzNGU2M2FiKSwgQygyZjRlZjJiZTY3
ZjYyMTA0KSwgQygzNzJlNTE1MzUxNmUzN2I5KSwKKyAgICAgQyhhZjllYzE0MmFiMTJjYzg2KSwg
Qyg3Nzc5MjBjMDkzNDVlMzU5KSwgQyhlN2M0YTM4M2JlZjhhZGM2KSwKKyAgICAgQyhhNzFhNDA2
Zil9LAorICAgIHtDKDYzNjkxNjM1NjU4MTRkZTYpLCBDKDhmZWI4NmZiMzhkMDhjMmYpLCBDKDQ5
NzY5MzM0ODVjYzlhMjApLAorICAgICBDKDdkM2U4MmQ1YmEyOWE5MGQpLCBDKGQ1OTgzY2M5M2E5
ZDEyNmEpLCBDKDM3ZTlkZmQ5NTBlN2I2OTIpLAorICAgICBDKDgwNjczYmU2YTc4ODhiODcpLCBD
KDdkM2U4MmQ1YmEyOWE5MGQpLCBDKGQ1OTgzY2M5M2E5ZDEyNmEpLAorICAgICBDKDM3ZTlkZmQ5
NTBlN2I2OTIpLCBDKDgwNjczYmU2YTc4ODhiODcpLCBDKDU3ZjczMmRjNjAwODA4YmMpLAorICAg
ICBDKDU5NDc3MTk5ODAyY2M3OGIpLCBDKGY4MjQ4MTBlYjhmMmMyZGUpLCBDKGM0YTM0MzdmMDVi
M2I2MWMpLAorICAgICBDKDlkOTBlYWY1KX0sCisgICAge0MoZWRlZTRmZjI1M2Q5ZjliMyksIEMo
OTZlZjc2ZmIyNzllZjBhZCksIEMoYTRkMjA0ZDE3OWRiMjQ2MCksCisgICAgIEMoMWYzZGNkZmE1
MTM1MTJkNiksIEMoNGRjN2VjMDcyODMxMTdlNCksIEMoNDQzOGJhZTg4YWUyOGJmOSksCisgICAg
IEMoYWE3ZWFlNzJjOTI0NGEwZCksIEMoMWYzZGNkZmE1MTM1MTJkNiksIEMoNGRjN2VjMDcyODMx
MTdlNCksCisgICAgIEMoNDQzOGJhZTg4YWUyOGJmOSksIEMoYWE3ZWFlNzJjOTI0NGEwZCksIEMo
YjlhZWRjOGQzZWNjNzJkZiksCisgICAgIEMoYjc1YThlYjA5MGE3N2Q2MiksIEMoNmIxNTY3N2Y5
Y2Q5MTUwNyksIEMoNTFkODI4MmNiM2E5ZGRiZiksCisgICAgIEMoNjY2NWRiMTApfSwKKyAgICB7
Qyg5NDE5OTNkZjZlNjMzMjE0KSwgQyg5MjliYzFiZWNhNWI3MmM2KSwgQygxNDFmYzUyYjhkNTU1
NzJkKSwKKyAgICAgQyhiM2I3ODJhZDMwOGYyMWVkKSwgQyg0ZjI2NzY0ODUwNDFkZWUwKSwgQyhi
ZmUyNzlhZWQ1Y2I0YmM4KSwKKyAgICAgQygyYTYyNTA4YTQ2N2EyMmZmKSwgQyhiM2I3ODJhZDMw
OGYyMWVkKSwgQyg0ZjI2NzY0ODUwNDFkZWUwKSwKKyAgICAgQyhiZmUyNzlhZWQ1Y2I0YmM4KSwg
QygyYTYyNTA4YTQ2N2EyMmZmKSwgQyhlNzRkMjllYWI3NDIzODVkKSwKKyAgICAgQyg1NmIwNWNk
OTBlY2ZjMjkzKSwgQyhjNjAzNzI4ZWE3M2Y4ODQ0KSwgQyg4NjM4ZmNkMjFiYzY5MmM0KSwKKyAg
ICAgQyg5Yzk3N2NiZil9LAorICAgIHtDKDg1OTgzODI5M2Y2NGNkNGMpLCBDKDQ4NDQwM2IzOWQ0
NGFkNzkpLCBDKGJmNjc0ZTY0ZDY0YjkzMzkpLAorICAgICBDKDQ0ZDY4YWZkYTk1NjhmMDgpLCBD
KDQ3ODU2OGVkNTFjYTFkNjUpLCBDKDY3OWMyMDRhZDNkOWU3NjYpLAorICAgICBDKGIyOGU3ODg4
Nzg0ODhkYzEpLCBDKDQ0ZDY4YWZkYTk1NjhmMDgpLCBDKDQ3ODU2OGVkNTFjYTFkNjUpLAorICAg
ICBDKDY3OWMyMDRhZDNkOWU3NjYpLCBDKGIyOGU3ODg4Nzg0ODhkYzEpLCBDKGQwMDFhODRkM2E4
NGZhZTYpLAorICAgICBDKGQzNzY5NThmZTRjYjkxM2UpLCBDKDE3NDM1Mjc3ZTM2Yzg2ZjApLCBD
KDIzNjU3YjI2M2MzNDdhYTYpLAorICAgICBDKGVlODNkZGQ0KX0sCisgICAge0MoYzE5YjU2NDhl
MGQ5ZjU1NSksIEMoMzI4ZTQ3YjJiNzU2Mjk5MyksIEMoZTc1NmI5MmJhNGJkNmE1MSksCisgICAg
IEMoYzMzMTRlMzYyNzY0ZGRiOCksIEMoNjQ4MWMwODRlZTllYzZiNSksIEMoZWRlMjNmYjlhMjUx
NzcxKSwKKyAgICAgQyhiZDYxN2YyNjQzMzI0NTkwKSwgQyhjMzMxNGUzNjI3NjRkZGI4KSwgQyg2
NDgxYzA4NGVlOWVjNmI1KSwKKyAgICAgQyhlZGUyM2ZiOWEyNTE3NzEpLCBDKGJkNjE3ZjI2NDMz
MjQ1OTApLCBDKGQyZDMwYzliOTVlMDMwZjUpLAorICAgICBDKDhhNTE3MzEyZmZjNTc5NWUpLCBD
KDhiMWYzMjUwMzNiZDUzNWUpLCBDKDNlZTZlODY3ZTAzZjI4OTIpLCBDKDI2NTE5Y2MpfSwKKyAg
ICB7QyhmOTYzYjYzYjkwMDZjMjQ4KSwgQyg5ZTliZjcyN2ZmYWEwMGJjKSwgQyhjNzNiYWNjNzVi
OTE3ZTNhKSwKKyAgICAgQygyYzZhYTcwNjEyOWNjNTRjKSwgQygxN2E3MDZmNTlhNDlmMDg2KSwg
QyhjN2MxZWVjNDU1MjE3MTQ1KSwKKyAgICAgQyg2YWRmZGM2ZTA3NjAyZDQyKSwgQygyYzZhYTcw
NjEyOWNjNTRjKSwgQygxN2E3MDZmNTlhNDlmMDg2KSwKKyAgICAgQyhjN2MxZWVjNDU1MjE3MTQ1
KSwgQyg2YWRmZGM2ZTA3NjAyZDQyKSwgQyhmYjc1ZmNhMzBkODQ4ZGQyKSwKKyAgICAgQyg1MjI4
YzllZDE0NjUzZWQ0KSwgQyg5NTM5NTg5MTAxNTNiMWEyKSwgQyhhNDMwMTAzYTI0ZjQyYTVkKSwK
KyAgICAgQyhhNDg1YTUzZil9LAorICAgIHtDKDZhOGFhMDg1MmE4YzFmM2IpLCBDKGM4ZjFlNWUy
MDZhMjEwMTYpLCBDKDJhYTU1NGFlZDFlYmI1MjQpLAorICAgICBDKGZjM2UzYzMyMmNkNWQ4OWIp
LCBDKGI3ZTM5MTFkYzJiZDRlYmIpLCBDKGZjZDZkYTVlNWZhZTgzM2EpLAorICAgICBDKDUxZWQz
YzQxZjg3ZjkxMTgpLCBDKGZjM2UzYzMyMmNkNWQ4OWIpLCBDKGI3ZTM5MTFkYzJiZDRlYmIpLAor
ICAgICBDKGZjZDZkYTVlNWZhZTgzM2EpLCBDKDUxZWQzYzQxZjg3ZjkxMTgpLCBDKGYzMTc1MGNi
YzE5YzQyMGEpLAorICAgICBDKDE4NmRhYjFhYmFkYTFkODYpLCBDKGNhN2Y4OGNiODk0YjNjZDcp
LCBDKDI4NTllZWIxYzM3Mzc5MGMpLAorICAgICBDKGY2MmJjNDEyKX0sCisgICAge0MoNzQwNDI4
YjRkNDVlNWZiOCksIEMoNGM5NWE0Y2U5MjJjYjBhNSksIEMoZTk5YzNiYTc4ZmVhZTc5NiksCisg
ICAgIEMoOTE0ZjFlYTJmZGNlYmY1YyksIEMoOTU2NjQ1M2MwN2NkMDYwMSksIEMoOTg0MWJmNjZk
MDQ2MmNkKSwKKyAgICAgQyg3OTE0MGMxYzE4NTM2YWViKSwgQyg5MTRmMWVhMmZkY2ViZjVjKSwg
Qyg5NTY2NDUzYzA3Y2QwNjAxKSwKKyAgICAgQyg5ODQxYmY2NmQwNDYyY2QpLCBDKDc5MTQwYzFj
MTg1MzZhZWIpLCBDKGE5NjNiOTMwYjA1ODIwYzIpLAorICAgICBDKDZhN2Q5ZmEwYzhjNDUxNTMp
LCBDKDY0MjE0YzQwZDA3Y2YzOWIpLCBDKDcwNTdkYWYxZDgwNmMwMTQpLAorICAgICBDKDg5NzVh
NDM2KX0sCisgICAge0MoNjU4Yjg4M2IzYTg3MmI4NiksIEMoMmYwZTMwM2YwZjY0ODI3YSksIEMo
OTc1MzM3ZTIzZGM0NWUxKSwKKyAgICAgQyg5OTQ2OGE5MTc5ODYxNjJiKSwgQyg3YjMxNDM0YWFj
NmUwYWYwKSwgQyhmNjkxNWMxNTYyYzdkODJmKSwKKyAgICAgQyhlNDA3MWQ4MmE2ZGQ3MWRiKSwg
Qyg5OTQ2OGE5MTc5ODYxNjJiKSwgQyg3YjMxNDM0YWFjNmUwYWYwKSwKKyAgICAgQyhmNjkxNWMx
NTYyYzdkODJmKSwgQyhlNDA3MWQ4MmE2ZGQ3MWRiKSwgQyg1ZjUzMzFmMDc3YjVkOTk2KSwKKyAg
ICAgQyg3YjMxNGJhMjFiNzQ3YTRmKSwgQyg1YTczY2I5NTIxZGExN2Y1KSwgQygxMmVkNDM1ZmFl
Mjg2ZDg2KSwKKyAgICAgQyg5NGZmN2Y0MSl9LAorICAgIHtDKDZkZjBhOTc3ZGE1ZDI3ZDQpLCBD
KDg5MWRkMGU3Y2IxOTUwOCksIEMoZmQ2NTQzNGEwYjcxZTY4MCksCisgICAgIEMoODc5OWU0NzQw
ZTU3M2M1MCksIEMoOWU3MzliNTJkMGYzNDFlOCksIEMoY2RmZDM0YmE3ZDdiMDNlYiksCisgICAg
IEMoNTA2MTgxMmNlNmM4ODQ5OSksIEMoODc5OWU0NzQwZTU3M2M1MCksIEMoOWU3MzliNTJkMGYz
NDFlOCksCisgICAgIEMoY2RmZDM0YmE3ZDdiMDNlYiksIEMoNTA2MTgxMmNlNmM4ODQ5OSksIEMo
NjEyYjhkOGYyNDExZGM1YyksCisgICAgIEMoODc4YmQ4ODNkMjljNzc4NyksIEMoNDdhODQ2NzI3
MTgyYmIpLCBDKGVjNDk0OTUwOGM4YjNiOWEpLCBDKDc2MGFhMDMxKX0sCisgICAge0MoYTkwMDI3
NTQ2NGFlMDdlZiksIEMoMTFmMmNmZGEzNGJlYjRhMyksIEMoOWFiZjkxZTVhMWMzOGU0KSwKKyAg
ICAgQyg4MDYzZDgwYWIyNmYzZDZkKSwgQyg0MTc3YjRiOWI0ZjAzOTNmKSwgQyg2ZGU0MmJhODY3
MmI5NjQwKSwKKyAgICAgQyhkMGJjY2RiNzJjNTFjMTgpLCBDKDgwNjNkODBhYjI2ZjNkNmQpLCBD
KDQxNzdiNGI5YjRmMDM5M2YpLAorICAgICBDKDZkZTQyYmE4NjcyYjk2NDApLCBDKGQwYmNjZGI3
MmM1MWMxOCksIEMoYWYzZjYxMWI3ZjIyY2YxMiksCisgICAgIEMoMzg2M2M0MTQ5MjY0NTc1NSks
IEMoOTI4YzdhNjE2YThmMTRmOSksIEMoYTgyYzc4ZWIyZWFkYzU4YiksCisgICAgIEMoM2JkYTc2
ZGYpfSwKKyAgICB7Qyg4MTBiYzhhYTBjNDBiY2IwKSwgQyg0NDhhMDE5NTY4ZDAxNDQxKSwgQyhm
NjBlYzUyZjYwZDNhZWFlKSwKKyAgICAgQyg1MmM0NDgzN2FhNmRmYzc3KSwgQygxNWQ4ZDhmY2Nk
ZDZkYzViKSwgQygzNDViNzkzY2NmYTkzMDU1KSwKKyAgICAgQyg5MzIxNjBmZTgwMmNhOTc1KSwg
Qyg1MmM0NDgzN2FhNmRmYzc3KSwgQygxNWQ4ZDhmY2NkZDZkYzViKSwKKyAgICAgQygzNDViNzkz
Y2NmYTkzMDU1KSwgQyg5MzIxNjBmZTgwMmNhOTc1KSwgQyhhNjI0YjBkZDkzZmMxOGNkKSwKKyAg
ICAgQyhkOTU1YjI1NGMyMDM3ZjFlKSwgQyhlNTQwNTMzZDM3MGE2NjRjKSwgQygyYmE0ZWMxMjUx
NGU5ZDcpLCBDKDQ5OGUyZTY1KX0sCisgICAge0MoMjIwMzYzMjdkZWI1OWVkNyksIEMoYWRjMDVj
ZWI5NzAyNmEwMiksIEMoNDhiZmYwNjU0MjYyNjcyYiksCisgICAgIEMoYzc5MWIzMTNhYmEzZjI1
OCksIEMoNDQzYzc3NTdhNDcyN2JlZSksIEMoZTMwZTRiMjM3MjE3MWJkZiksCisgICAgIEMoZjNk
Yjk4NmM0MTU2ZjNjYiksIEMoYzc5MWIzMTNhYmEzZjI1OCksIEMoNDQzYzc3NTdhNDcyN2JlZSks
CisgICAgIEMoZTMwZTRiMjM3MjE3MWJkZiksIEMoZjNkYjk4NmM0MTU2ZjNjYiksIEMoYTkzOWFl
ZmFiOTdjNmUxNSksCisgICAgIEMoZGJlYjhhY2YxZDViMGU2YyksIEMoMWUwZWFiNjY3YTc5NWJi
YSksIEMoODBkZDUzOTkwMmRmNGQ1MCksCisgICAgIEMoZDM4ZGViNDgpfSwKKyAgICB7Qyg3ZDE0
ZGZhOTc3MmIwMGM4KSwgQyg1OTU3MzVlZmM3ZWVhZWQ3KSwgQygyOTg3Mjg1NGY5NGMzNTA3KSwK
KyAgICAgQyhiYzI0MTU3OWQ4MzQ4NDAxKSwgQygxNmRjODMyODA0ZDcyOGYwKSwgQyhlOWNjNzFh
ZTY0ZTNmMDllKSwKKyAgICAgQyhiZWY2MzRiYzk3OGJhYzMxKSwgQyhiYzI0MTU3OWQ4MzQ4NDAx
KSwgQygxNmRjODMyODA0ZDcyOGYwKSwKKyAgICAgQyhlOWNjNzFhZTY0ZTNmMDllKSwgQyhiZWY2
MzRiYzk3OGJhYzMxKSwgQyg3ZjY0YjFmYTJhOTEyOWUpLAorICAgICBDKDcxZDgzMWJkNTMwYWM3
ZjMpLCBDKGM3YWQwYThhNmQ1YmU2ZjEpLCBDKDgyYTdkM2E4MTVjN2FhYWIpLAorICAgICBDKDgy
YjNmYjZiKX0sCisgICAge0MoMmQ3NzdjZGRiOTEyNjc1ZCksIEMoMjc4ZDdiMTA3MjJhMTNmOSks
IEMoZjVjMDJiZmI3Y2MwNzhhZiksCisgICAgIEMoNDI4MzAwMTIzOTg4ODgzNiksIEMoZjQ0Y2Ez
OWE2Zjc5ZGI4OSksIEMoZWQxODYxMjJkNzFiY2M5ZiksCisgICAgIEMoODYyMDAxN2FiNWYzYmEz
YiksIEMoNDI4MzAwMTIzOTg4ODgzNiksIEMoZjQ0Y2EzOWE2Zjc5ZGI4OSksCisgICAgIEMoZWQx
ODYxMjJkNzFiY2M5ZiksIEMoODYyMDAxN2FiNWYzYmEzYiksIEMoZTc4NzQ3MjE4N2YxNzZjKSwK
KyAgICAgQygyNjdlNjRjNDcyOGNmMTgxKSwgQyhmMWJhNGIzMDA3YzE1ZTMwKSwgQyg4ZTNhNzVk
NWIwMmVjZmMwKSwKKyAgICAgQyhlNTAwZTI1Zil9LAorICAgIHtDKGYyZWM5ODgyNGU4YWE2MTMp
LCBDKDVlYjdlM2ZiNTNmZTNiZWQpLCBDKDEyYzIyODYwNDY2ZTFkZDQpLAorICAgICBDKDM3NGRk
NDI4OGUwYjcyZTUpLCBDKGZmODkxNmRiNzA2YzBkZjQpLCBDKGNiMWE5ZTg1ZGU1ZTRiOGQpLAor
ICAgICBDKGQ0ZDEyYWZiNjdhMjc2NTkpLCBDKDM3NGRkNDI4OGUwYjcyZTUpLCBDKGZmODkxNmRi
NzA2YzBkZjQpLAorICAgICBDKGNiMWE5ZTg1ZGU1ZTRiOGQpLCBDKGQ0ZDEyYWZiNjdhMjc2NTkp
LCBDKGZlYjY5MDk1ZDFiYTE3NWEpLAorICAgICBDKGUyMDAzYWFiMjNhNDdmYWQpLCBDKDgxNjNh
M2VjYWI4OTRiNDkpLCBDKDQ2ZDM1NjY3NGNlMDQxZjYpLAorICAgICBDKGJkMmJiMDdjKX0sCisg
ICAge0MoNWU3NjM5ODhlMjFmNDg3ZiksIEMoMjQxODlkZTgwNjVkOGRjNSksIEMoZDE1MTlkMjQw
M2I2MmFhMCksCisgICAgIEMoOTEzNjQ1Njc0MDExOTgxNSksIEMoNGQ4ZmY3NzMzYjI3ZWI4Myks
IEMoZWEzMDQwYmMwYzcxN2VmOCksCisgICAgIEMoNzYxN2FiNDAwZGZhZGJjKSwgQyg5MTM2NDU2
NzQwMTE5ODE1KSwgQyg0ZDhmZjc3MzNiMjdlYjgzKSwKKyAgICAgQyhlYTMwNDBiYzBjNzE3ZWY4
KSwgQyg3NjE3YWI0MDBkZmFkYmMpLCBDKGZiMzM2NzcwYzEwYjE3YTEpLAorICAgICBDKDYxMjNi
NjhiNWIzMWYxNTEpLCBDKDFlMTQ3ZDVmMjk1ZWNjZjIpLCBDKDllY2JiMTMzMzU1NmY5NzcpLAor
ICAgICBDKDNhMmI0MzFkKX0sCisgICAge0MoNDg5NDlkYzMyN2JiOTZhZCksIEMoZTFmZDIxNjM2
YzVjNTBiNCksIEMoM2Y2ZWI3ZjEzYTg3MTJiNCksCisgICAgIEMoMTRjZjdmMDJkYWIwZWVlOCks
IEMoNmQwMTc1MDYwNWU4OTQ0NSksIEMoNGYxY2Y0MDA2ZTYxM2I3OCksCisgICAgIEMoNTdjNDBj
NGRiMzJiZWMzYiksIEMoMTRjZjdmMDJkYWIwZWVlOCksIEMoNmQwMTc1MDYwNWU4OTQ0NSksCisg
ICAgIEMoNGYxY2Y0MDA2ZTYxM2I3OCksIEMoNTdjNDBjNGRiMzJiZWMzYiksIEMoMWZkZTVhMzQ3
ZjRhMzI2ZSksCisgICAgIEMoY2I1YTU0MzA4YWRiMGUzZiksIEMoMTQ5OTRiMmJhNDQ3YTIzYyks
IEMoNzA2N2QwYWJiNDI1N2I2OCksCisgICAgIEMoNzMyMmE4M2QpfSwKKyAgICB7QyhiN2M0MjA5
ZmIyNGE4NWM1KSwgQyhiMzVmZWIzMTljNzljZTEwKSwgQyhmMGQzZGUxOTE4MzNiOTIyKSwKKyAg
ICAgQyg1NzBkNjI3NThkZGY2Mzk3KSwgQyg1ZTAyMDRmYjY4YTdiODAwKSwgQyg0MzgzYTkyMzZm
OGI1YTJiKSwKKyAgICAgQyg3YmMxYTY0NjQxZDgwM2E0KSwgQyg1NzBkNjI3NThkZGY2Mzk3KSwg
Qyg1ZTAyMDRmYjY4YTdiODAwKSwKKyAgICAgQyg0MzgzYTkyMzZmOGI1YTJiKSwgQyg3YmMxYTY0
NjQxZDgwM2E0KSwgQyg1NDM0ZDYxMjg1MDk5ZjdhKSwKKyAgICAgQyhkNDk0NDlhYWNkZDVkZDY3
KSwgQyg5Nzg1NWJhMGU5YTdkNzVkKSwgQyhkYTY3MzI4MDYyZjNhNjJmKSwKKyAgICAgQyhhNjQ1
Y2ExYyl9LAorICAgIHtDKDljOWU1YmUwOTQzZDRiMDUpLCBDKGI3M2RjNjllNDUyMDFjYmIpLCBD
KGFhYjE3MTgwYmZlNTA4M2QpLAorICAgICBDKGM3MzhhNzdhOWE1NWYwZTIpLCBDKDcwNTIyMWFk
ZGVkZDgxZGYpLCBDKGZkOWJkOGQzOTdhYmNmYTMpLAorICAgICBDKDhjY2YwMDA0YWE4NmI3OTUp
LCBDKGM3MzhhNzdhOWE1NWYwZTIpLCBDKDcwNTIyMWFkZGVkZDgxZGYpLAorICAgICBDKGZkOWJk
OGQzOTdhYmNmYTMpLCBDKDhjY2YwMDA0YWE4NmI3OTUpLCBDKDJiYjVkYjIyODAwNjgyMDYpLAor
ICAgICBDKDhjMjJkMjlmMzA3YTAxZCksIEMoMjc0YTIyZGUwMmY0NzNjOCksIEMoYjg3OTE4NzBm
NDI2ODE4MiksIEMoODkwOWE0NWEpfSwKKyAgICB7QygzODk4YmNhNGRmZDY2MzhkKSwgQyhmOTEx
ZmYzNWVmZWYwMTY3KSwgQygyNGJkZjY5ZTUwOTFmYzg4KSwKKyAgICAgQyg5YjgyNTY3YWI2NTYw
Nzk2KSwgQyg4OTFiNjk0NjJiNDFjMjI0KSwgQyg4ZWNjYzdlNGYzYWYzYjUxKSwKKyAgICAgQygz
ODFlNTRjM2M4ZjFjN2QwKSwgQyg5YjgyNTY3YWI2NTYwNzk2KSwgQyg4OTFiNjk0NjJiNDFjMjI0
KSwKKyAgICAgQyg4ZWNjYzdlNGYzYWYzYjUxKSwgQygzODFlNTRjM2M4ZjFjN2QwKSwgQyhjODBm
YmM0ODlhNTU4YTU1KSwKKyAgICAgQygxYmE4OGUwNjJhNjYzYWY3KSwgQyhhZjdiMWVmMWMwMTE2
MzAzKSwgQyhiZDIwZTFhNWE2YjFhMGNkKSwKKyAgICAgQyhiZDMwMDc0Yyl9LAorICAgIHtDKDVi
NWQyNTU3NDAwZTY4ZTcpLCBDKDk4ZDYxMDAzMzU3NGNlZSksIEMoZGZkMDg3NzJjZTM4NWRlYiks
CisgICAgIEMoM2MxM2U4OTQzNjVkYzZjMiksIEMoMjZmYzdiYmNkYTNmMGVmKSwgQyhkYmI3MTEw
NmNkYmZlYTM2KSwKKyAgICAgQyg3ODUyMzlhNzQyYzZkMjZkKSwgQygzYzEzZTg5NDM2NWRjNmMy
KSwgQygyNmZjN2JiY2RhM2YwZWYpLAorICAgICBDKGRiYjcxMTA2Y2RiZmVhMzYpLCBDKDc4NTIz
OWE3NDJjNmQyNmQpLCBDKGY4MTBjNDE1YWUwNWIyZjQpLAorICAgICBDKGJiOWI5ZTczOTg1MjYw
ODgpLCBDKDcwMTI4ZjFiZjgzMGEzMmIpLCBDKGJjYzczZjgyYjY0MTA4OTkpLAorICAgICBDKGMx
N2NmMDAxKX0sCisgICAge0MoYTkyN2VkOGIyYmYwOWJiNiksIEMoNjA2ZTUyZjEwYWU5NGVjYSks
IEMoNzFjMjIwM2ZlYjM1YTllZSksCisgICAgIEMoNmU2NWVjMTRhOGZiNTY1KSwgQygzNGJmZjZm
MmVlNWE3Zjc5KSwgQygyZTMyOWE1YmUyYzAxMWIpLAorICAgICBDKDczMTYxYzkzMzMxYjE0Zjkp
LCBDKDZlNjVlYzE0YThmYjU2NSksIEMoMzRiZmY2ZjJlZTVhN2Y3OSksCisgICAgIEMoMmUzMjlh
NWJlMmMwMTFiKSwgQyg3MzE2MWM5MzMzMWIxNGY5KSwgQygxNWQxM2YyNDA4YWVjZjg4KSwKKyAg
ICAgQyg5ZjViNjFiOGE0YjU1YjMxKSwgQyg4ZmUyNWE0M2IyOTZkYmE2KSwgQyhiZGFkMDNiNzMw
MGYyODRlKSwKKyAgICAgQygyNmZmZDI1YSl9LAorICAgIHtDKDhkMjU3NDY0MTRhZWRmMjgpLCBD
KDM0YjE2MjlkMjhiMzNkM2EpLCBDKDRkNTM5NGFlYTVmODJkN2IpLAorICAgICBDKDM3OWY3NjQ1
OGEzYzg5NTcpLCBDKDc5ZGQwODBmOTg0M2FmNzcpLCBDKGM0NmYwYTc4NDdmNjBjMWQpLAorICAg
ICBDKGFmMTU3OWM1Nzk3NzAzY2MpLCBDKDM3OWY3NjQ1OGEzYzg5NTcpLCBDKDc5ZGQwODBmOTg0
M2FmNzcpLAorICAgICBDKGM0NmYwYTc4NDdmNjBjMWQpLCBDKGFmMTU3OWM1Nzk3NzAzY2MpLCBD
KDhiN2QzMWYzMzg3NTVjMTQpLAorICAgICBDKDJlZmY5NzY3OTUxMmFhYTgpLCBDKGRmMDdkNjhl
MDc1MTc5ZWQpLCBDKGM4ZmE2YzdhNzI5ZTdmMWYpLAorICAgICBDKGYxZDhjZTNjKX0sCisgICAg
e0MoYjViYmRiNzM0NTg3MTJmMiksIEMoMWZmODg3YjNjMmEzNTEzNyksIEMoN2Y3MjMxZjcwMmQw
YWNlOSksCisgICAgIEMoMWU2ZjA5MTBjM2QyNWJkOCksIEMoYWQ5ZTI1MDg2MjEwMjQ2NyksIEMo
MWM4NDJhMDdhYmFiMzBjZCksCisgICAgIEMoY2Q4MTI0MTc2YmFjMDFhYyksIEMoMWU2ZjA5MTBj
M2QyNWJkOCksIEMoYWQ5ZTI1MDg2MjEwMjQ2NyksCisgICAgIEMoMWM4NDJhMDdhYmFiMzBjZCks
IEMoY2Q4MTI0MTc2YmFjMDFhYyksIEMoZWE2ZWJlN2E3OWI2N2VkYyksCisgICAgIEMoNzNmNTk4
YWM5ZGIyNjcxMyksIEMoNGY0ZTcyZDc0NjBiOGZjKSwgQygzNjVkYzRiOWZkZjEzZjIxKSwgQygz
ZWU4ZmIxNyl9LAorICAgIHtDKDNkMzJhMjZlM2FiOWQyNTQpLCBDKGZjNDA3MDU3NGRjMzBkM2Ep
LCBDKGYwMjYyOTU3OWMyYjI3YzkpLAorICAgICBDKGIxY2YwOWIwMTg0YTQ4MzQpLCBDKDVjMDNk
YjQ4ZWI2Y2MxNTkpLCBDKGYxOGM3ZmNmMzRkMWRmNDcpLAorICAgICBDKGRmYjA0MzQxOWVjZjFm
YTkpLCBDKGIxY2YwOWIwMTg0YTQ4MzQpLCBDKDVjMDNkYjQ4ZWI2Y2MxNTkpLAorICAgICBDKGYx
OGM3ZmNmMzRkMWRmNDcpLCBDKGRmYjA0MzQxOWVjZjFmYTkpLCBDKGRjZDc4ZDEzZjljYTY1OGYp
LAorICAgICBDKDQzNTVkNDA4ZmZlOGU0OWYpLCBDKDgxZWVmZWU5MDhiNTkzYjQpLCBDKDU5MGMy
MTNjMjBlOTgxYTMpLAorICAgICBDKGE3N2FjYzJhKX0sCisgICAge0MoOTM3MWQzYzM1ZmE1ZTlh
NSksIEMoNDI5NjdjZjRkMDFmMzApLCBDKDY1MmQxZWVhZTcwNDE0NWMpLAorICAgICBDKGNlYWYx
YTBkMTUyMzRmMTUpLCBDKDE0NTBhNTRlNDViYTliOSksIEMoNjVlOWMxZmQ4ODVhYTkzMiksCisg
ICAgIEMoMzU0ZDRiYzAzNGJhOGNiZSksIEMoY2VhZjFhMGQxNTIzNGYxNSksIEMoMTQ1MGE1NGU0
NWJhOWI5KSwKKyAgICAgQyg2NWU5YzFmZDg4NWFhOTMyKSwgQygzNTRkNGJjMDM0YmE4Y2JlKSwg
Qyg4ZmQ0ZmY0ODRjMDhmYjRiKSwKKyAgICAgQyhiZjQ2NzQ5ODY2ZjY5YmEwKSwgQyhjZjFjMjFl
ZGU4MmM5NDc3KSwgQyg0MjE3NTQ4YzQzZGExMDkpLCBDKGY0NTU2ZGVlKX0sCisgICAge0MoY2Jh
YTNjYjhmNjRmNTRlMCksIEMoNzZjM2I0OGVlNWMwODQxNyksIEMoOWY3ZDI0ZTg3ZTYxY2U5KSwK
KyAgICAgQyg4NWI4ZTUzZjIyZTE5NTA3KSwgQyhiYjU3MTM3NzM5Y2E0ODZiKSwgQyhjNzdmMTMx
Y2NhMzhmNzYxKSwKKyAgICAgQyhjNTZhYzNjZjI3NWJlMTIxKSwgQyg4NWI4ZTUzZjIyZTE5NTA3
KSwgQyhiYjU3MTM3NzM5Y2E0ODZiKSwKKyAgICAgQyhjNzdmMTMxY2NhMzhmNzYxKSwgQyhjNTZh
YzNjZjI3NWJlMTIxKSwgQyg5ZWMxYTZjOTEwOWQyNjg1KSwKKyAgICAgQygzZGFkMDkyMmU3NmFm
ZGIwKSwgQyhmZDU4Y2JmOTUyOTU4MTAzKSwgQyg3YjA0YzkwOGU3ODYzOWExKSwKKyAgICAgQyhk
ZTI4N2E2NCl9LAorICAgIHtDKGIyZTIzZTgxMTZjMmJhOWYpLCBDKDdlNGQ5YzAwNjAxMDExNTEp
LCBDKDMzMTBkYTVlNTAyOGYzNjcpLAorICAgICBDKGFkYzUyZGRkYjc2ZjZlNWUpLCBDKDRhYWQ0
ZTkyNWE5NjJiNjgpLCBDKDIwNGI3OWI3ZjcxNjhlNjQpLAorICAgICBDKGRmMjllZDY2NzFjMzY5
NTIpLCBDKGFkYzUyZGRkYjc2ZjZlNWUpLCBDKDRhYWQ0ZTkyNWE5NjJiNjgpLAorICAgICBDKDIw
NGI3OWI3ZjcxNjhlNjQpLCBDKGRmMjllZDY2NzFjMzY5NTIpLCBDKGUwMjkyN2NhYzM5NmQyMTAp
LAorICAgICBDKDVkNTAwZTcxNzQyYjYzOGEpLCBDKDVjOTk5OGFmN2YyN2IxMjQpLCBDKDNmYmE5
YTI1NzNkYzJmNyksIEMoODc4ZTU1YjkpfSwKKyAgICB7Qyg4YWE3N2Y1MmQ3ODY4ZWI5KSwgQyg0
ZDU1YmQ1ODc1ODRlNmUyKSwgQyhkMmRiMzcwNDFmNDk1ZjUpLAorICAgICBDKGNlMDMwZDE1YjVm
ZTJmNCksIEMoODZiNGE3YTA3ODBjMjQzMSksIEMoZWUwNzBhOWFlNWI1MWRiNyksCisgICAgIEMo
ZWRjMjkzZDk1OTViZTVkOCksIEMoY2UwMzBkMTViNWZlMmY0KSwgQyg4NmI0YTdhMDc4MGMyNDMx
KSwKKyAgICAgQyhlZTA3MGE5YWU1YjUxZGI3KSwgQyhlZGMyOTNkOTU5NWJlNWQ4KSwgQygzZGZj
NWVjMTA4MjYwYTJiKSwKKyAgICAgQyg4YWZlMjhjNzEyM2JmNGUyKSwgQyhkYTgyZWYzODAyM2E3
YTVmKSwgQygzZTFmNzdiMDE3NGI3N2MzKSwgQyg3NjQ4NDg2KX0sCisgICAge0MoODU4ZmVhOTIy
YzdmZTBjMyksIEMoY2ZlODMyNmJmNzMzYmM2ZiksIEMoNGU1ZTIwMThjZjhmN2RmYyksCisgICAg
IEMoNjRmZDFiYzAxMWU1YmFiNyksIEMoNWM5ZTg1ODcyODAxNTU2OCksIEMoOTdhYzQyYzJiMDBi
MjliMSksCisgICAgIEMoN2Y4OWNhZjA4YzEwOWFlZSksIEMoNjRmZDFiYzAxMWU1YmFiNyksIEMo
NWM5ZTg1ODcyODAxNTU2OCksCisgICAgIEMoOTdhYzQyYzJiMDBiMjliMSksIEMoN2Y4OWNhZjA4
YzEwOWFlZSksIEMoOWE4YWYzNGZkMGU5ZGFjZiksCisgICAgIEMoYmJjNTQxNjFhYTE1MDdlMCks
IEMoN2NkYTcyM2NjYmJmZTVlZSksIEMoMmMyODlkODM5ZmI5M2Y1OCksCisgICAgIEMoNTdhYzBm
YjEpfSwKKyAgICB7Qyg0NmVmMjVmZGVjODM5MmIxKSwgQyhlNDhkN2I2ZDQyYTVjZDM1KSwgQyg1
NmE2ZmUxYzE3NTI5OWNhKSwKKyAgICAgQyhmZGZhODM2YjQxZGNlZjYyKSwgQygyZjhkYjgwMzBl
ODQ3ZTFiKSwgQyg1YmEwYTQ5YWM0ZjliMGY4KSwKKyAgICAgQyhkYWU4OTdlZDNlM2ZjZTQ0KSwg
QyhmZGZhODM2YjQxZGNlZjYyKSwgQygyZjhkYjgwMzBlODQ3ZTFiKSwKKyAgICAgQyg1YmEwYTQ5
YWM0ZjliMGY4KSwgQyhkYWU4OTdlZDNlM2ZjZTQ0KSwgQyg5YzQzMmUzMWFlZjYyNmU3KSwKKyAg
ICAgQyg5YTM2ZTFjNmNkNmUzZGQpLCBDKDUwOTVhMTY3YzM0ZDE5ZCksIEMoYTcwMDA1Y2ZhNmJh
YmJlYSksIEMoZDAxOTY3Y2EpfSwKKyAgICB7Qyg4ZDA3OGY3MjZiMmRmNDY0KSwgQyhiNTBlZTcx
Y2RjYWJiMjk5KSwgQyhmNGFmMzAwMTA2ZjljN2JhKSwKKyAgICAgQyg3ZDIyMmNhYWUwMjUxNThh
KSwgQyhjYzAyOGQ1ZmQ0MDI0MWI5KSwgQyhkZDQyNTE1YjYzOWU2Zjk3KSwKKyAgICAgQyhlMDhl
ODY1MzFhNThmODdmKSwgQyg3ZDIyMmNhYWUwMjUxNThhKSwgQyhjYzAyOGQ1ZmQ0MDI0MWI5KSwK
KyAgICAgQyhkZDQyNTE1YjYzOWU2Zjk3KSwgQyhlMDhlODY1MzFhNThmODdmKSwgQyhkOTM2MTJj
ODM1YjM3ZDdiKSwKKyAgICAgQyg5MWRkNjE3MjliMmZhN2Y0KSwgQyhiYTc2NWExYmRkYTA5ZGI3
KSwgQyg1NTI1OGI0NTFiMmIxMjk3KSwKKyAgICAgQyg5NmVjZGY3NCl9LAorICAgIHtDKDM1ZWE4
NmU2OTYwY2E5NTApLCBDKDM0ZmUxZmUyMzRmYzVjNzYpLCBDKGEwMDIwN2EzZGMyYTcyYjcpLAor
ICAgICBDKDgwMzk1ZTQ4NzM5ZTFhNjcpLCBDKDc0YTY3ZDhmN2Y0M2MzZDcpLCBDKGRkMmJkZDFk
NjIyNDZjNmUpLAorICAgICBDKGExZjQ0Mjk4YmE4MGFjZjYpLCBDKDgwMzk1ZTQ4NzM5ZTFhNjcp
LCBDKDc0YTY3ZDhmN2Y0M2MzZDcpLAorICAgICBDKGRkMmJkZDFkNjIyNDZjNmUpLCBDKGExZjQ0
Mjk4YmE4MGFjZjYpLCBDKGFkODZkODZjMTg3YmYzOCksCisgICAgIEMoMjZmZWVhMWYyZWVlMjQw
ZCksIEMoZWQ3ZjFmZDA2NmIyMzg5NyksIEMoYTc2OGNmMWUwZmJiNTAyKSwgQyg3NzlmNTUwNil9
LAorICAgIHtDKDhhZWU5ZWRiYzE1ZGQwMTEpLCBDKDUxZjU4MzlkYzg0NjI2OTUpLCBDKGIyMjEz
ZTE3YzM3ZGNhMmQpLAorICAgICBDKDEzM2IyOTlhOTM5NzQ1YzUpLCBDKDc5NmUyYWFjMDUzZjUy
YjMpLCBDKGU4ZDlmZTE1MjFhNGEyMjIpLAorICAgICBDKDgxOWE4ODYzZTVkMWMyOTApLCBDKDEz
M2IyOTlhOTM5NzQ1YzUpLCBDKDc5NmUyYWFjMDUzZjUyYjMpLAorICAgICBDKGU4ZDlmZTE1MjFh
NGEyMjIpLCBDKDgxOWE4ODYzZTVkMWMyOTApLCBDKGMwNzM3ZjBmZTM0ZDM2YWQpLAorICAgICBD
KGU2ZDZkNGEyNjdhNWNjMzEpLCBDKDk4MzAwYTc5MTE2NzRjMjMpLCBDKGJlZjE4OTY2MWMyNTcw
OTgpLAorICAgICBDKDNjOTRjMmRlKX0sCisgICAge0MoYzNlMTQyYmE5ODQzMmRkYSksIEMoOTEx
ZDA2MGNhYjEyNjE4OCksIEMoYjc1M2ZiZmE4MzY1Yjg0NCksCisgICAgIEMoZmQxYTliYTVlNzFi
MDhhMiksIEMoN2FjMGRjMmVkNzc3ODUzMyksIEMoYjU0MzE2MWZmMTc3MTg4YSksCisgICAgIEMo
NDkyZmMwOGE2MTg2ZjNmNCksIEMoZmQxYTliYTVlNzFiMDhhMiksIEMoN2FjMGRjMmVkNzc3ODUz
MyksCisgICAgIEMoYjU0MzE2MWZmMTc3MTg4YSksIEMoNDkyZmMwOGE2MTg2ZjNmNCksIEMoZmM0
NzQ1ZjUxNmFmZDNiNiksCisgICAgIEMoODhjMzAzNzBhNTMwODBlKSwgQyg2NWExYmIzNGFiYzQ2
NWUyKSwgQyhhYmJkMTQ2NjI5MTFjOGIzKSwgQygzOWY5OGZhZil9LAorICAgIHtDKDEyM2JhNmI5
OWM4Y2Q4ZGIpLCBDKDQ0OGU1ODI2NzJlZTA3YzQpLCBDKGNlYmUzNzkyOTJkYjllNjUpLAorICAg
ICBDKDkzOGY1YmJhYjU0NGQzZDYpLCBDKGQyYTk1ZjlmMmQzNzZkNzMpLCBDKDY4YjJmMTYxNDll
ODFhYTMpLAorICAgICBDKGFkN2UzMmY4MmQ4NmM3OWQpLCBDKDkzOGY1YmJhYjU0NGQzZDYpLCBD
KGQyYTk1ZjlmMmQzNzZkNzMpLAorICAgICBDKDY4YjJmMTYxNDllODFhYTMpLCBDKGFkN2UzMmY4
MmQ4NmM3OWQpLCBDKDQ1NzQwMTVhZTg2MjZjZTIpLAorICAgICBDKDQ1NWFhNjEzNzM4NmE1ODIp
LCBDKDY1OGFkMjU0MmU4ZWMyMCksIEMoZTMxZDdiZTJjYTM1ZDAwKSwgQyg3YWYzMTE5OSl9LAor
ICAgIHtDKGJhODdhY2VmNzlkMTRmNTMpLCBDKGIzZTBmY2FlNjNhMTE1NTgpLCBDKGQ1YWMzMTNh
NTkzYTlmNDUpLAorICAgICBDKGVlYTVmNWE5Zjc0YWY1OTEpLCBDKDU3ODcxMGJjYzM2ZmJlYTIp
LCBDKDdhODM5MzQzMjE4ODkzMWQpLAorICAgICBDKDcwNWNmYzVlYzdjYzE3MiksIEMoZWVhNWY1
YTlmNzRhZjU5MSksIEMoNTc4NzEwYmNjMzZmYmVhMiksCisgICAgIEMoN2E4MzkzNDMyMTg4OTMx
ZCksIEMoNzA1Y2ZjNWVjN2NjMTcyKSwgQyhkYTg1ZWJlNWZjNDI3OTc2KSwKKyAgICAgQyhiZmE1
YzdhNDU0ZGY1NGM4KSwgQyg0NjMyYjcyYTgxYmY2NmQyKSwgQyg1ZGQ3Mjg3N2RiNTM5ZWUyKSwK
KyAgICAgQyhlMzQxYTlkNil9LAorICAgIHtDKGJjZDM5NTdkNTcxN2RjMyksIEMoMmRhNzQ2NzQx
YjAzYTAwNyksIEMoODczODE2ZjRiMWVjZTQ3MiksCisgICAgIEMoMmI4MjZmMWEyYzA4YzI4OSks
IEMoZGE1MGY1Njg2M2I1NWU3NCksIEMoYjE4NzEyZjZiM2VlZDgzYiksCisgICAgIEMoYmRjN2Nj
MDVhYjRjNjg1ZiksIEMoMmI4MjZmMWEyYzA4YzI4OSksIEMoZGE1MGY1Njg2M2I1NWU3NCksCisg
ICAgIEMoYjE4NzEyZjZiM2VlZDgzYiksIEMoYmRjN2NjMDVhYjRjNjg1ZiksIEMoOWU0NWZiODMz
ZDFiMGFmKSwKKyAgICAgQyhkNzIxMzA4MWRiMjlkODJlKSwgQyhkMmE2YjZjNmEwOWVkNTVlKSwg
Qyg5OGE3Njg2Y2JhMzIzY2E5KSwKKyAgICAgQyhjYTI0YWVlYil9LAorICAgIHtDKDYxNDQyZmY1
NTYwOTE2OGUpLCBDKDY0NDdjNWZjNzZlOGM5Y2YpLCBDKDZhODQ2ZGU4M2FlMTU3MjgpLAorICAg
ICBDKGVmZmMyNjYzY2ZmYzc3N2YpLCBDKDkzMjE0ZjhmNDYzYWZiZWQpLCBDKGExNTZlZjA2MDY2
ZjRlNGUpLAorICAgICBDKGE0MDdiNmVkODc2OWQ1MWUpLCBDKGVmZmMyNjYzY2ZmYzc3N2YpLCBD
KDkzMjE0ZjhmNDYzYWZiZWQpLAorICAgICBDKGExNTZlZjA2MDY2ZjRlNGUpLCBDKGE0MDdiNmVk
ODc2OWQ1MWUpLCBDKGJiMmY5ZWQyOTc0NWMwMmEpLAorICAgICBDKDk4MWVlY2Q0MzViMzZhZDkp
LCBDKDQ2MWE1YTA1ZmI5Y2RmZjQpLCBDKGJkNmNiMmE4N2I5ZjkxMGMpLAorICAgICBDKGIyMjUy
YjU3KX0sCisgICAge0MoZGJlNGIxYjJkMTc0NzU3ZiksIEMoNTA2NTEyZGExODcxMjY1NiksIEMo
Njg1N2YzZTBiOGRkOTVmKSwKKyAgICAgQyg1YTRmYzI3MjhhOWJiNjcxKSwgQyhlYmI5NzE1MjJl
YzM4NzU5KSwgQygxYTVhMDkzZTZjZjFmNzJiKSwKKyAgICAgQyg3MjliMDU3ZmU3ODRmNTA0KSwg
Qyg1YTRmYzI3MjhhOWJiNjcxKSwgQyhlYmI5NzE1MjJlYzM4NzU5KSwKKyAgICAgQygxYTVhMDkz
ZTZjZjFmNzJiKSwgQyg3MjliMDU3ZmU3ODRmNTA0KSwgQyg3MWZjYmY0MmE3NjdmOWNmKSwKKyAg
ICAgQygxMTRjZmU3NzJkYTZjZGQpLCBDKDYwY2RmOWNiNjI5ZDlkN2EpLCBDKGUyNzBkMTBhZDA4
OGIyNGUpLCBDKDcyYzgxZGExKX0sCisgICAge0MoNTMxZThlNzdiMzYzMTYxYyksIEMoZWVjZTBi
NDNlMmRhZTAzMCksIEMoODI5NGI4MmM3OGYzNGVkMSksCisgICAgIEMoZTc3N2IxZmQ1ODA1ODJm
MiksIEMoN2I4ODBmNThkYTExMjY5OSksIEMoNTYyYzZiMTg5YTYzMzNmNCksCisgICAgIEMoMTM5
ZDY0Zjg4YTYxMWQ0KSwgQyhlNzc3YjFmZDU4MDU4MmYyKSwgQyg3Yjg4MGY1OGRhMTEyNjk5KSwK
KyAgICAgQyg1NjJjNmIxODlhNjMzM2Y0KSwgQygxMzlkNjRmODhhNjExZDQpLCBDKDUzZDhlZjE3
ZWRhNjRmYTQpLAorICAgICBDKGJmM2VkZWQxNGRjNjBhMDQpLCBDKDJiNWM1NTljZjVlYzA3YzUp
LCBDKDg4OTVmNzMzOWQwM2E0OGEpLAorICAgICBDKDZiOWZjZTk1KX0sCisgICAge0MoZjcxZTlj
OTI2ZDcxMWUyYiksIEMoZDc3YWYyODUzYTRjZWFhMSksIEMoOWFhMGQ2ZDc2YTM2ZmFlNyksCisg
ICAgIEMoZGQxNmNkMGZiYzA4MzkzKSwgQygyOWE0MTRhNWQ4YzU4OTYyKSwgQyg3Mjc5M2Q4ZDEw
MjJiNWIyKSwKKyAgICAgQygyZThlNjljZjdjYmZmZGYwKSwgQyhkZDE2Y2QwZmJjMDgzOTMpLCBD
KDI5YTQxNGE1ZDhjNTg5NjIpLAorICAgICBDKDcyNzkzZDhkMTAyMmI1YjIpLCBDKDJlOGU2OWNm
N2NiZmZkZjApLCBDKDM3MjFjMDQ3M2FhOTljOWEpLAorICAgICBDKDFjZmY0ZWQ5YzMxY2Q5MWMp
LCBDKDQ5OTA3MzUwMzNjYzQ4MmIpLCBDKDdmZGY4YzcwMWM3MmY1NzcpLAorICAgICBDKDE5Mzk5
ODU3KX0sCisgICAge0MoY2IyMGFjMjhmNTJkZjM2OCksIEMoZTY3MDVlZTc4ODA5OTZkZSksIEMo
OWI2NjVjYzNlYzY5NzJmMiksCisgICAgIEMoNDI2MGU4YzI1NGU5OTI0YiksIEMoZjE5N2E2ZWI0
NTkxNTcyZCksIEMoOGU4NjdmZjBmYjdhYjI3YyksCisgICAgIEMoZjk1NTAyZmI1MDNlZmFmMyks
IEMoNDI2MGU4YzI1NGU5OTI0YiksIEMoZjE5N2E2ZWI0NTkxNTcyZCksCisgICAgIEMoOGU4Njdm
ZjBmYjdhYjI3YyksIEMoZjk1NTAyZmI1MDNlZmFmMyksIEMoMzBjNDE4NzZiMDhlM2UyMiksCisg
ICAgIEMoOTU4ZTI0MTllM2NkMjJmNCksIEMoZjBmM2FhMWZlMTE5YTEwNyksIEMoNDgxNjYyMzEw
YTM3OTEwMCksCisgICAgIEMoM2M1N2E5OTQpfSwKKyAgICB7QyhlNGE3OTRiNGFjYjk0YjU1KSwg
Qyg4OTc5NTM1ODA1N2I2NjFiKSwgQyg5YzRjZGNlYzE3NmQ3YTcwKSwKKyAgICAgQyg0ODkwYTgz
ZWU0MzViYzhiKSwgQyhkOGMxYzAwZmNlYjAwOTE0KSwgQyg5ZTcxMTFiYTIzNGY5MDBmKSwKKyAg
ICAgQyhlYjhkYmFiMzY0ZDhiNjA0KSwgQyg0ODkwYTgzZWU0MzViYzhiKSwgQyhkOGMxYzAwZmNl
YjAwOTE0KSwKKyAgICAgQyg5ZTcxMTFiYTIzNGY5MDBmKSwgQyhlYjhkYmFiMzY0ZDhiNjA0KSwg
QyhiMzI2MTQ1Mjk2M2VlYmIpLAorICAgICBDKDZjZjk0YjAyNzkyYzRmOTUpLCBDKGQ4OGZhODE1
ZWYxZThmYyksIEMoMmQ2ODdhZjY2NjA0YzczKSwgQyhjMDUzZTcyOSl9LAorICAgIHtDKGNiOTQy
ZTkxNDQzZTcyMDgpLCBDKGUzMzVkZTgxMjU1NjdjMmEpLCBDKGQ0ZDc0ZDI2OGI4NmRmMWYpLAor
ICAgICBDKDhiYTBmZGQyZmZjOGIyMzkpLCBDKGY0MTNiMzY2YzFmZmUwMmYpLCBDKGMwNWIyNzE3
YzU5YThhMjgpLAorICAgICBDKDk4MTE4OGVhYjRmY2M4ZmIpLCBDKDhiYTBmZGQyZmZjOGIyMzkp
LCBDKGY0MTNiMzY2YzFmZmUwMmYpLAorICAgICBDKGMwNWIyNzE3YzU5YThhMjgpLCBDKDk4MTE4
OGVhYjRmY2M4ZmIpLCBDKGU1NjNmNDlhMWQ5MDcyYmEpLAorICAgICBDKDNjNmEzYWE0YTI2MzY3
ZGMpLCBDKGJhMGRiMTM0NDg2NTNmMzQpLCBDKDMxMDY1ZDc1NjA3NGQ3ZDYpLAorICAgICBDKDUx
Y2JiYmE3KX0sCisgICAge0MoZWNjYTc1NjNjMjAzZjdiYSksIEMoMTc3YWUyNDIzZWYzNGJiMiks
IEMoZjYwYjcyNDM0MDBjNTczMSksCisgICAgIEMoY2YxZWRiZmU3MzMwZTk0ZSksIEMoODgxOTQ1
OTA2YmNiM2NjNiksIEMoNGFjZjAyOTMyNDQ4NTVkYSksCisgICAgIEMoNjVhZTA0MmMxYzJhMjhj
MiksIEMoY2YxZWRiZmU3MzMwZTk0ZSksIEMoODgxOTQ1OTA2YmNiM2NjNiksCisgICAgIEMoNGFj
ZjAyOTMyNDQ4NTVkYSksIEMoNjVhZTA0MmMxYzJhMjhjMiksIEMoYjI1ZmEwYTFjYWIzMzU1OSks
CisgICAgIEMoZDk4ZThkYWEyODEyNDEzMSksIEMoZmNlMTdmNTBiOWMzNTFiMyksIEMoM2Y5OTVj
Y2Y3Mzg2ODY0YiksCisgICAgIEMoMWFjZGU3OWEpfSwKKyAgICB7QygxNjUyY2I5NDAxNzdjOGI1
KSwgQyg4YzRmZTdkODVkMmE2ZDZkKSwgQyhmNjIxNmFkMDk3ZTU0ZTcyKSwKKyAgICAgQyhmNjUy
MWI5MTJiMzY4YWU2KSwgQyhhOWZlNGVmZjgxZDAzZTczKSwgQyhkNmY2MjM2MjlmODBkMWEzKSwK
KyAgICAgQygyYjk2MDRmMzJjYjdkYzM0KSwgQyhmNjUyMWI5MTJiMzY4YWU2KSwgQyhhOWZlNGVm
ZjgxZDAzZTczKSwKKyAgICAgQyhkNmY2MjM2MjlmODBkMWEzKSwgQygyYjk2MDRmMzJjYjdkYzM0
KSwgQygyYTQzZDg0ZGNmNTljN2UyKSwKKyAgICAgQyhkMGExOTdjNzBjNWRhZTBiKSwgQyg2ZTg0
ZDRiYmM3MWQ3NmEwKSwgQyhjN2U5NDYyMDM3OGM2Y2IyKSwKKyAgICAgQygyZDE2MGQxMyl9LAor
ICAgIHtDKDMxZmVkMGZjMDRjMTNjZTgpLCBDKDNkNWQwM2RiZjdmZjI0MGEpLCBDKDcyN2M1Yzli
NTE1ODEyMDMpLAorICAgICBDKDZiNWZmYzFmNTRmZWNiMjkpLCBDKGE4ZThlN2FkNWI5YTIxZDkp
LCBDKGM0ZDVhMzJjZDZhYWMyMmQpLAorICAgICBDKGQ3ZTI3NGFkMjJkNGE3OWEpLCBDKDZiNWZm
YzFmNTRmZWNiMjkpLCBDKGE4ZThlN2FkNWI5YTIxZDkpLAorICAgICBDKGM0ZDVhMzJjZDZhYWMy
MmQpLCBDKGQ3ZTI3NGFkMjJkNGE3OWEpLCBDKDM2ODg0MWVhNTczMWExMTIpLAorICAgICBDKGZl
YWY3YmMyZTczY2E0OGYpLCBDKDYzNmZiMjcyZTllYTFmNiksIEMoNWQ5Y2I3NTgwYzNmNjIwNyks
IEMoNzg3ZjU4MDEpfSwKKyAgICB7QyhlN2I2Njg5NDc1OTBiOWIzKSwgQyhiYWE0MWFkMzI5Mzhk
M2ZhKSwgQyhhYmNiYzhkNGNhNGIzOWU0KSwKKyAgICAgQygzODFlZTFiN2VhNTM0ZjRlKSwgQyhk
YTM3NTk4MjhlM2RlNDI5KSwgQygzZTAxNWQ3NjcyOWY5OTU1KSwKKyAgICAgQyhjYmJlYzUxYTY0
ODVmYmRlKSwgQygzODFlZTFiN2VhNTM0ZjRlKSwgQyhkYTM3NTk4MjhlM2RlNDI5KSwKKyAgICAg
QygzZTAxNWQ3NjcyOWY5OTU1KSwgQyhjYmJlYzUxYTY0ODVmYmRlKSwgQyg5Yjg2NjA1MjgxZjIw
NzI3KSwKKyAgICAgQyhmYzZmY2Y1MDg2NzY5ODJhKSwgQygzYjEzNWY3YTgxM2ExMDQwKSwgQyhk
M2E0NzA2YmVhMWRiOWM5KSwKKyAgICAgQyhjOTYyOTgyOCl9LAorICAgIHtDKDFkZTIxMTk5MjNl
OGVmM2MpLCBDKDZhYjI3YzA5NmNmMmZlMTQpLCBDKDhjMzY1OGVkY2E5NTg4OTEpLAorICAgICBD
KDRjYzhlZDNhZGE1ZjBmMiksIEMoNGE0OTZiNzdjMWYxYzA0ZSksIEMoOTA4NWIwYTg2MjA4NDIw
MSksCisgICAgIEMoYTE4OTRiZGU5ZTNkZWUyMSksIEMoNGNjOGVkM2FkYTVmMGYyKSwgQyg0YTQ5
NmI3N2MxZjFjMDRlKSwKKyAgICAgQyg5MDg1YjBhODYyMDg0MjAxKSwgQyhhMTg5NGJkZTllM2Rl
ZTIxKSwgQygzNjdmYjQ3MmRjNWIyNzdkKSwKKyAgICAgQyg3ZDM5Y2NjYTE2ZmM2NzQ1KSwgQyg3
NjNmOTg4ZDcwZGI5MTA2KSwgQyhhOGI2NmY3ZmVjYjcwZjAyKSwKKyAgICAgQyhiZTEzOTIzMSl9
LAorICAgIHtDKDEyNjlkZjFlNjllMTRmYTcpLCBDKDk5MmY5ZDU4YWM1MDQxYjcpLCBDKGU5N2Zj
ZjY5NWE3Y2JiYjQpLAorICAgICBDKGU1ZDA1NDk4MDJkMTUwMDgpLCBDKDQyNGMxMzRlY2QwZGI4
MzQpLCBDKDZmYzQ0ZmQ5MWJlMTVjNmMpLAorICAgICBDKGExYTVlZjk1ZDUwZTUzN2QpLCBDKGU1
ZDA1NDk4MDJkMTUwMDgpLCBDKDQyNGMxMzRlY2QwZGI4MzQpLAorICAgICBDKDZmYzQ0ZmQ5MWJl
MTVjNmMpLCBDKGExYTVlZjk1ZDUwZTUzN2QpLCBDKGQxZTNkYWY1ZDA1ZjUzMDgpLAorICAgICBD
KDRjN2Y4MTYwMGVhYTEzMjcpLCBDKDEwOWQxYjhkMWY5ZDBkMmIpLCBDKDg3MWU4Njk5ZTBhZWI4
NjIpLAorICAgICBDKDdkZjY5OWVmKX0sCisgICAge0MoODIwODI2ZDdhYmE1NjdmZiksIEMoMWY3
M2QyOGUwMzZhNTJmMyksIEMoNDFjNGM1YTczZjNiMDg5MyksCisgICAgIEMoYWEwZDc0ZDRhOThk
Yjg5YiksIEMoMzZmZDQ4NmQwN2M1NmUxZCksIEMoZDBhZDIzY2JiNjY2MGQ4YSksCisgICAgIEMo
MTI2NGE4NDY2NWIzNWUxOSksIEMoYWEwZDc0ZDRhOThkYjg5YiksIEMoMzZmZDQ4NmQwN2M1NmUx
ZCksCisgICAgIEMoZDBhZDIzY2JiNjY2MGQ4YSksIEMoMTI2NGE4NDY2NWIzNWUxOSksIEMoNzg5
NjgyYmY3ZDc4MWIzMyksCisgICAgIEMoNmJmYTZhYmQyZmI1NzIyZCksIEMoNjc3OWNiMzYyM2Qz
MzkwMCksIEMoNDM1Y2E1MjE0ZTFlZTVmMCksCisgICAgIEMoOGNlNmI5NmQpfSwKKyAgICB7Qyhm
ZmUwNTQ3ZTQ5MjNjZWY5KSwgQygzNTM0ZWQ0OWI5ZGE1YjAyKSwgQyg1NDhhMjczNzAwZmJhMDNk
KSwKKyAgICAgQygyOGFjODRjYTcwOTU4ZjdlKSwgQyhkOGFlNTc1YTY4ZmFhNzMxKSwgQygyYWFh
ZWU5YjlkY2ZmZDRjKSwKKyAgICAgQyg2YzdmYWFiNWMyODVjNmRhKSwgQygyOGFjODRjYTcwOTU4
ZjdlKSwgQyhkOGFlNTc1YTY4ZmFhNzMxKSwKKyAgICAgQygyYWFhZWU5YjlkY2ZmZDRjKSwgQyg2
YzdmYWFiNWMyODVjNmRhKSwgQyg0NWQ5NDIzNWY5OWJhNzhmKSwKKyAgICAgQyhhYjVlYTE2ZjM5
NDk3ZjViKSwgQyhmYjRkNmM4NmZjY2JkY2EzKSwgQyg4MTA0ZTYzMTBhNWZkMmM3KSwKKyAgICAg
Qyg2ZjllZDk5Yyl9LAorICAgIHtDKDcyZGE4ZDFiMTFkOGJjOGIpLCBDKGJhOTRiNTZiOTFiNjgx
YzYpLCBDKDRlOGNjNTFiZDliMGZjOGMpLAorICAgICBDKDQzNTA1ZWQxMzNiZTY3MmEpLCBDKGU4
ZjJmOWQ5NzNjMjc3NGUpLCBDKDY3N2I5YjljN2NhZDZkOTcpLAorICAgICBDKDRlMWY1ZDU2ZWYx
N2I5MDYpLCBDKDQzNTA1ZWQxMzNiZTY3MmEpLCBDKGU4ZjJmOWQ5NzNjMjc3NGUpLAorICAgICBD
KDY3N2I5YjljN2NhZDZkOTcpLCBDKDRlMWY1ZDU2ZWYxN2I5MDYpLCBDKGVlYTNhNjAzOGY5ODM3
NjcpLAorICAgICBDKDg3MTA5ZjA3N2Y4NmRiMDEpLCBDKGVjYzFjYTQxZjc0ZDYxY2MpLCBDKDM0
YTg3ZTg2ZTgzYmVkMTcpLAorICAgICBDKGUwMjQ0Nzk2KX0sCisgICAge0MoZDYyYWI0ZTNmODhm
Yzc5NyksIEMoZWE4NmM3YWViNjI4M2FlNCksIEMoYjViOTNlMDlhN2ZlNDY1KSwKKyAgICAgQyg0
MzQ0YTFhMDEzNGFmZTIpLCBDKGZmNWMxN2YwMmI2MjM0MWQpLCBDKDMyMTRjNmE1ODdjZTQ2NDQp
LAorICAgICBDKGE5MDVlN2VkMDYyOWQwNWMpLCBDKDQzNDRhMWEwMTM0YWZlMiksIEMoZmY1YzE3
ZjAyYjYyMzQxZCksCisgICAgIEMoMzIxNGM2YTU4N2NlNDY0NCksIEMoYTkwNWU3ZWQwNjI5ZDA1
YyksIEMoYjVjNzI2OTBjZDcxNmU4MiksCisgICAgIEMoN2M2MDk3NjQ5ZTZlYmU3YiksIEMoN2Nl
ZWU4YzZlNTZhNGRjZCksIEMoODBjYTg0OWRjNTNlYjllNCksCisgICAgIEMoNGNjZjdlNzUpfSwK
KyAgICB7QyhkMGYwNmMyOGM3YjM2ODIzKSwgQygxMDA4Y2IwODc0ZGU0YmI4KSwgQyhkNmM3ZmY4
MTZjN2E3MzdiKSwKKyAgICAgQyg0ODliNjk3ZmUzMGFhNjVmKSwgQyg0ZGEwZmI2MjFmZGM3ODE3
KSwgQyhkYzQzNTgzYjgyYzU4MTA3KSwKKyAgICAgQyg0YjAyNjFkZWJkZWMzY2Q2KSwgQyg0ODli
Njk3ZmUzMGFhNjVmKSwgQyg0ZGEwZmI2MjFmZGM3ODE3KSwKKyAgICAgQyhkYzQzNTgzYjgyYzU4
MTA3KSwgQyg0YjAyNjFkZWJkZWMzY2Q2KSwgQyhhOTc0OGQ3YjZjMGUwMTZjKSwKKyAgICAgQyg3
ZTg4MjhmN2JhNGIwMzRiKSwgQyhkYTBmYTU0MzQ4YTI1MTJhKSwgQyhlYmY5NzQ1YzA5NjJmOWFk
KSwKKyAgICAgQyg5MTVjZWY4Nil9LAorICAgIHtDKDk5YjcwNDI0NjBkNzJlYzYpLCBDKDJhNTNl
NWUyYjhlNzk1YzIpLCBDKDUzYTc4MTMyZDllMWIzZTMpLAorICAgICBDKGMwNDNlNjdlNmZjNjQx
MTgpLCBDKGZmMGFiZmU5MjZkODQ0ZDMpLCBDKGYyYTlmZTVkYjJlOTEwZmUpLAorICAgICBDKGNl
MzUyY2RjODRhOTY0ZGQpLCBDKGMwNDNlNjdlNmZjNjQxMTgpLCBDKGZmMGFiZmU5MjZkODQ0ZDMp
LAorICAgICBDKGYyYTlmZTVkYjJlOTEwZmUpLCBDKGNlMzUyY2RjODRhOTY0ZGQpLCBDKGI4OWJj
MDI4YWE1ZTYwNjMpLAorICAgICBDKGEzNTRlN2ZkYWMwNDQ1OWMpLCBDKDY4ZDY1NDdlNmU5ODAx
ODkpLCBDKGM5NjhkZGRmZDU3Mzc3M2UpLAorICAgICBDKDVjYjU5NDgyKX0sCisgICAge0MoNGY0
ZGZjZmMwZWMyYmFlNSksIEMoODQxMjMzMTQ4MjY4YTFiOCksIEMoOTI0OGE3NmFiOGJlMGQzKSwK
KyAgICAgQygzMzRjNWEyNWI1OTAzYThjKSwgQyg0Yzk0ZmVmNDQzMTIyMTI4KSwgQyg3NDNlN2Q4
NDU0NjU1YzQwKSwKKyAgICAgQygxYWIxZTZkMTQ1MmFlMmNkKSwgQygzMzRjNWEyNWI1OTAzYThj
KSwgQyg0Yzk0ZmVmNDQzMTIyMTI4KSwKKyAgICAgQyg3NDNlN2Q4NDU0NjU1YzQwKSwgQygxYWIx
ZTZkMTQ1MmFlMmNkKSwgQyhmZWM3NjZkZTRhOGU0NzZjKSwKKyAgICAgQyhjYzA5MjlkYTk1Njdl
NzFiKSwgQyg1ZjllZjViNWYxNTBjMzVhKSwgQyg4NzY1OWNhYmQ2NDk3NjhmKSwKKyAgICAgQyg2
Y2EzZjUzMil9LAorICAgIHtDKGZlODZiZjlkNDQyMmI5YWUpLCBDKGViY2U4OWM5MDY0MWVmOWMp
LCBDKDFjODRlMjI5MmMwYjU2NTkpLAorICAgICBDKDhiZGU2MjVhMTBhOGM1MGQpLCBDKGViODI3
MWRlZDFmNzlhMGIpLCBDKDE0ZGM2ODQ0ZjBkZTdhM2MpLAorICAgICBDKGY4NWIyZjk1NDFlN2U2
ZGEpLCBDKDhiZGU2MjVhMTBhOGM1MGQpLCBDKGViODI3MWRlZDFmNzlhMGIpLAorICAgICBDKDE0
ZGM2ODQ0ZjBkZTdhM2MpLCBDKGY4NWIyZjk1NDFlN2U2ZGEpLCBDKDJmZTIyY2ZkMTY4M2I5NjEp
LAorICAgICBDKGVhMWQ3NWM1YjdhYTAxY2EpLCBDKDllZWY2MGE0NDg3NmJiOTUpLCBDKDk1MGM4
MThlNTA1YzZmN2YpLAorICAgICBDKGUyNGYzODU5KX0sCisgICAge0MoYTkwZDgxMDYwOTMyZGJi
MCksIEMoOGFjZmFhODhjNWZiZTkyYiksIEMoN2M2ZjM0NDdlOTBmN2YzZiksCisgICAgIEMoZGQ1
MmZjMTRjOGRkMzE0MyksIEMoMWJjNzUwODUxNmU0MDYyOCksIEMoMzA1OTczMDI2NmFkZTYyNiks
CisgICAgIEMoZmZhNTI2ODIyZjM5MWMyKSwgQyhkZDUyZmMxNGM4ZGQzMTQzKSwgQygxYmM3NTA4
NTE2ZTQwNjI4KSwKKyAgICAgQygzMDU5NzMwMjY2YWRlNjI2KSwgQyhmZmE1MjY4MjJmMzkxYzIp
LCBDKGUyNTIzMmQ3YWZjOGE0MDYpLAorICAgICBDKGQyYjhhNWEzZjNiNWY2NzApLCBDKDY2MzBm
MzNlZGI3ZGZlMzIpLCBDKGM3MTI1MGJhNjhjNGVhODYpLAorICAgICBDKGFkZjVhOWM3KX0sCisg
ICAge0MoMTc5MzhhMWIwZTdmNTk1MiksIEMoMjJjYWRkMmY1NmY4YTRiZSksIEMoODRiMGQxMTgz
ZDVlZDdjMSksCisgICAgIEMoYzEzMzZiOTJmZWY5MWJmNiksIEMoODAzMzJhMzk0NWYzM2ZhOSks
IEMoYTBmNjhiODZmNzI2ZmY5MiksCisgICAgIEMoYTNkYjUyODJjZjVmNGMwYiksIEMoYzEzMzZi
OTJmZWY5MWJmNiksIEMoODAzMzJhMzk0NWYzM2ZhOSksCisgICAgIEMoYTBmNjhiODZmNzI2ZmY5
MiksIEMoYTNkYjUyODJjZjVmNGMwYiksIEMoODI2NDBiNmZjNDkxNjYwNyksCisgICAgIEMoMmRj
MmEzYWExYTg5NDE3NSksIEMoOGI0Yzg1MmJkZWU3Y2M5KSwgQygxMGI5ZDBhMDhiNTVmZjgzKSwg
QygzMjI2NGI3NSl9LAorICAgIHtDKGRlOWUwY2IwZTE2ZjZlNmQpLCBDKDIzOGU2MjgzYWE0ZjY1
OTQpLCBDKDRmYjljOTE0YzJmMGExM2IpLAorICAgICBDKDQ5N2NiOTEyYjY3MGYzYiksIEMoZDk2
M2EzZjAyZmY0YTViNiksIEMoNGZjY2VmYWUxMWI1MDM5MSksCisgICAgIEMoNDJiYTQ3ZGIzZjc2
NzJmKSwgQyg0OTdjYjkxMmI2NzBmM2IpLCBDKGQ5NjNhM2YwMmZmNGE1YjYpLAorICAgICBDKDRm
Y2NlZmFlMTFiNTAzOTEpLCBDKDQyYmE0N2RiM2Y3NjcyZiksIEMoMWQ2YjY1NWExODg5ZmVlZiks
CisgICAgIEMoNWYzMTlhYmY4ZmFmYTE5ZiksIEMoNzE1YzJlNDlkZWIxNDYyMCksIEMoOGQ5MTUz
MDgyZWNkY2VhNCksCisgICAgIEMoYTY0YjMzNzYpfSwKKyAgICB7Qyg2ZDRiODc2ZDliMTQ2ZDFh
KSwgQyhhYWIyZDY0Y2U4ZjI2NzM5KSwgQyhkMzE1ZjkzNjAwZTgzZmU1KSwKKyAgICAgQygyZmU5
ZmFiZGJlN2ZkZDQpLCBDKDc1NWRiMjQ5YTJkODFhNjkpLCBDKGYyNzkyOWYzNjA0NDZkNzEpLAor
ICAgICBDKDc5YTFiZjk1N2MwYzFiOTIpLCBDKDJmZTlmYWJkYmU3ZmRkNCksIEMoNzU1ZGIyNDlh
MmQ4MWE2OSksCisgICAgIEMoZjI3OTI5ZjM2MDQ0NmQ3MSksIEMoNzlhMWJmOTU3YzBjMWI5Miks
IEMoM2M4YTI4ZDRjOTM2YzljZCksCisgICAgIEMoZGYwZDNkMTNiMmM2YTkwMiksIEMoYzc2NzAy
ZGQ5N2NkMmVkZCksIEMoMWFhMjIwZjdiZTE2NTE3KSwgQyhkMzM4OTBlKX0sCisgICAge0MoZTY5
OGZhM2Y1NGU2ZWEyMiksIEMoYmQyOGUyMGU3NDU1MzU4YyksIEMoOWFjZTE2MWY2ZWE3NmU2Niks
CisgICAgIEMoZDUzZmI3ZTNjOTNhOWU0KSwgQyg3MzdhZTcxYjA1MWJmMTA4KSwgQyg3YWM3MWZl
Yjg0YzJkZjQyKSwKKyAgICAgQygzZDgwNzVjZDI5M2ExNWI0KSwgQyhkNTNmYjdlM2M5M2E5ZTQp
LCBDKDczN2FlNzFiMDUxYmYxMDgpLAorICAgICBDKDdhYzcxZmViODRjMmRmNDIpLCBDKDNkODA3
NWNkMjkzYTE1YjQpLCBDKGJmOGNlZTVlMDk1ZDhhN2MpLAorICAgICBDKGU3MDg2YjNjNzYwODE0
M2EpLCBDKGU1NWIwYzJmYTkzOGQ3MGMpLCBDKGZmZmI1ZjU4ZTY0MzY0OWMpLAorICAgICBDKDky
NmQ0YjYzKX0sCisgICAge0MoN2JjMGRlZWQ0ZmIzNDlmNyksIEMoMTc3MWFmZjI1ZGM3MjJmYSks
IEMoMTlmZjA2NDRkOTY4MTkxNyksCisgICAgIEMoY2Y3ZDdmMjViZDcwY2QyYyksIEMoOTQ2NGVk
OWJhZWI0MWI0ZiksIEMoYjkwNjRmNWMzY2IxMWI3MSksCisgICAgIEMoMjM3ZTM5MjI5YjAxMmIy
MCksIEMoY2Y3ZDdmMjViZDcwY2QyYyksIEMoOTQ2NGVkOWJhZWI0MWI0ZiksCisgICAgIEMoYjkw
NjRmNWMzY2IxMWI3MSksIEMoMjM3ZTM5MjI5YjAxMmIyMCksIEMoZGQ1NGQzZjVkOTgyZGZmZSks
CisgICAgIEMoN2ZjNzU2MmRiZmM4MWRiZiksIEMoNWIwZGQxOTI0ZjcwOTQ1KSwgQyhmMTc2MDUz
N2Q4MjYxMTM1KSwgQyhkNTFiYTUzOSl9LAorICAgIHtDKGRiNGIxNWU4ODUzM2Y2MjIpLCBDKDI1
NmQ2ZDI0MTliNDFjZTkpLCBDKDlkN2M1Mzc4Mzk2NzY1ZDUpLAorICAgICBDKDkwNDBlNWI5MzZi
ODY2MWIpLCBDKDI3NmUwOGZhNTNhYzI3ZmQpLCBDKDhjOTQ0ZDM5YzJiZGQyY2MpLAorICAgICBD
KGUyNTE0Yzk4MDJhNTc0M2MpLCBDKDkwNDBlNWI5MzZiODY2MWIpLCBDKDI3NmUwOGZhNTNhYzI3
ZmQpLAorICAgICBDKDhjOTQ0ZDM5YzJiZGQyY2MpLCBDKGUyNTE0Yzk4MDJhNTc0M2MpLCBDKGU4
MjEwN2IxMWFjOTAzODYpLAorICAgICBDKDdkNmEyMmJjMzUwNTVlNiksIEMoZmQ2ZWE5ZDFjNDM4
ZDhhZSksIEMoYmU2MDE1MTQ5ZTk4MTU1MyksIEMoN2YzNzYzNmQpfSwKKyAgICB7Qyg5MjI4MzQ3
MzVlODZlY2IyKSwgQygzNjMzODI2ODViODgzMjhlKSwgQyhlOWM5Mjk2MGQ3MTQ0NjMwKSwKKyAg
ICAgQyg4NDMxYjFiZmQwYTIzNzljKSwgQyg5MDM4MzkxM2FlYTI4M2Y5KSwgQyhhNjE2MzgzMWVi
NDkyNGQyKSwKKyAgICAgQyg1ZjM5MjFiNGY5MDg0YWVlKSwgQyg4NDMxYjFiZmQwYTIzNzljKSwg
Qyg5MDM4MzkxM2FlYTI4M2Y5KSwKKyAgICAgQyhhNjE2MzgzMWViNDkyNGQyKSwgQyg1ZjM5MjFi
NGY5MDg0YWVlKSwgQyg3YTcwMDYxYTE0NzNlNTc5KSwKKyAgICAgQyg1YjE5ZDgwZGNkMmM2MzMx
KSwgQyg2MTk2Yjk3OTMxZmFhZDI3KSwgQyg4NjliZjY4MjhlMjM3YzNmKSwKKyAgICAgQyhiOTgw
MjZjMCl9LAorICAgIHtDKDMwZjFkNzJjODEyZjFlYjgpLCBDKGI1NjdjZDRhNjljZDg5ODkpLCBD
KDgyMGI2Yzk5MmE1MWYwYmMpLAorICAgICBDKGM1NDY3N2E4MDM2NzEyNWUpLCBDKDMyMDRmYmRi
YTQ2MmU2MDYpLCBDKDg1NjMyNzhhZmM5ZWFlNjkpLAorICAgICBDKDI2MjE0N2RkNGJmN2U1NjYp
LCBDKGM1NDY3N2E4MDM2NzEyNWUpLCBDKDMyMDRmYmRiYTQ2MmU2MDYpLAorICAgICBDKDg1NjMy
NzhhZmM5ZWFlNjkpLCBDKDI2MjE0N2RkNGJmN2U1NjYpLCBDKDIxNzhiNjNlN2VlMmQyMzApLAor
ICAgICBDKGU5YzYxYWQ4MWY1YmZmMjYpLCBDKDlhZjdhODFiM2M1MDFlY2EpLCBDKDQ0MTA0YTM4
NTlmMDIzOGYpLAorICAgICBDKGI4Nzc3NjdlKX0sCisgICAge0MoMTY4ODg0MjY3ZjM4MTdlOSks
IEMoNWIzNzZlMDUwZjYzNzY0NSksIEMoMWMxODMxNGFiZDM0NDk3YSksCisgICAgIEMoOTU5OGY2
YWIwNjgzZmNjMiksIEMoMWM4MDVhYmY3YjgwZTFlZSksIEMoZGVjOWFjNDJlZTBkMGYzMiksCisg
ICAgIEMoOGNkNzJlMzkxMmQyNDY2MyksIEMoOTU5OGY2YWIwNjgzZmNjMiksIEMoMWM4MDVhYmY3
YjgwZTFlZSksCisgICAgIEMoZGVjOWFjNDJlZTBkMGYzMiksIEMoOGNkNzJlMzkxMmQyNDY2Myks
IEMoMWYwMjVkNDA1ZjFjMWQ4NyksCisgICAgIEMoYmY3YjYyMjFlMTY2OGY4ZiksIEMoNTIzMTZm
NjRlNjkyZGJiMCksIEMoN2JmNDNkZjYxZWM1MWIzOSksIEMoYWVmYWU3Nyl9LAorICAgIHtDKDgy
ZTc4NTk2ZWUzZTU2YTcpLCBDKDI1Njk3ZDljODdmMzBkOTgpLCBDKDc2MDBhODM0MjgzNDkyNGQp
LAorICAgICBDKDZiYTM3MmY0YjdhYjI2OGIpLCBDKDhjMzIzN2NmMWZlMjQzZGYpLCBDKDM4MzNm
YzUxMDEyOTAzZGYpLAorICAgICBDKDhlMzEzMTAxMDhjNTY4M2YpLCBDKDZiYTM3MmY0YjdhYjI2
OGIpLCBDKDhjMzIzN2NmMWZlMjQzZGYpLAorICAgICBDKDM4MzNmYzUxMDEyOTAzZGYpLCBDKDhl
MzEzMTAxMDhjNTY4M2YpLCBDKDEyNjU5MzcxNWMyZGU0MjkpLAorICAgICBDKDQ4Y2E4ZjM1YTNm
NTRiOTApLCBDKGI5MzIyYjYzMmY0ZjhiMCksIEMoOTI2YmIxNjliNzMzNzY5MyksIEMoZjY4Njkx
MSl9LAorICAgIHtDKGFhMmQ2Y2YyMmUzY2MyNTIpLCBDKDliNGRlYzRmNWUxNzlmMTYpLCBDKDc2
ZmIwZmJhMWQ5OWE5OWEpLAorICAgICBDKDlhNjJhZjNkYmJhMTQwZGEpLCBDKDI3ODU3ZWEwNDRl
OWRmYzEpLCBDKDMzYWJjZTlkYTIyNzI2NDcpLAorICAgICBDKGIyMmE3OTkzYWFmMzI1NTYpLCBD
KDlhNjJhZjNkYmJhMTQwZGEpLCBDKDI3ODU3ZWEwNDRlOWRmYzEpLAorICAgICBDKDMzYWJjZTlk
YTIyNzI2NDcpLCBDKGIyMmE3OTkzYWFmMzI1NTYpLCBDKGJmOGY4OGY4MDE5YmVkZjApLAorICAg
ICBDKGVkMmQ3ZjAxZmIyNzM5MDUpLCBDKDZiNDVmMTU5MDFiNDgxY2QpLCBDKGY4OGViYjQxM2Jh
NmE4ZDUpLAorICAgICBDKDNkZWFkZjEyKX0sCisgICAge0MoN2JmNWZmZDdmNjkzODVjNyksIEMo
ZmMwNzdiMWQ4YmM4Mjg3OSksIEMoOWMwNGUzNmY5ZWQ4M2EyNCksCisgICAgIEMoODIwNjVjNjJl
NjU4MjE4OCksIEMoOGVmNzg3ZmQzNTZmNWU0MyksIEMoMjkyMmU1M2UzNmUxN2RmYSksCisgICAg
IEMoOTgwNWYyMjNkMzg1MDEwYiksIEMoODIwNjVjNjJlNjU4MjE4OCksIEMoOGVmNzg3ZmQzNTZm
NWU0MyksCisgICAgIEMoMjkyMmU1M2UzNmUxN2RmYSksIEMoOTgwNWYyMjNkMzg1MDEwYiksIEMo
NjkyMTU0ZjM0OTFiNzg3ZCksCisgICAgIEMoZTdlNjQ3MDBlNDE0ZmJmKSwgQyg3NTdkNGQ0YWI2
NTA2OWEwKSwgQyhjZDAyOTQ0NmE4ZTM0OGUyKSwgQyhjY2YwMmE0ZSl9LAorICAgIHtDKGU4OWM4
ZmY5ZjljNmUzNGIpLCBDKGY1NGMwZjY2OWE0OWY2YzQpLCBDKGZjM2U0NmY1ZDg0NmFkZWYpLAor
ICAgICBDKDIyZjJhYTNkZjIyMjFjYyksIEMoZjY2ZmVhOTBmNWQ2MjE3NCksIEMoYjc1ZGVmYWVh
YTFkZDJhNyksCisgICAgIEMoOWI5OTRjZDlhNzIxNGZkNSksIEMoMjJmMmFhM2RmMjIyMWNjKSwg
QyhmNjZmZWE5MGY1ZDYyMTc0KSwKKyAgICAgQyhiNzVkZWZhZWFhMWRkMmE3KSwgQyg5Yjk5NGNk
OWE3MjE0ZmQ1KSwgQyhmYWM2NzVhMzE4MDRiNzczKSwKKyAgICAgQyg5OGJjYjNiODIwYzUwZmM2
KSwgQyhlMTRhZjY0ZDI4Y2YwODg1KSwgQygyNzQ2NmZiZDJiMzYwZWI1KSwKKyAgICAgQygxNzZj
MTcyMil9LAorICAgIHtDKGExOGZiY2RjY2QxMWUxZjQpLCBDKDgyNDgyMTY3NTFkZmQ2NWUpLCBD
KDQwYzA4OWYyMDhkODlkN2MpLAorICAgICBDKDIyOWI3OWFiNjlhZTk3ZCksIEMoYTg3YWFiYzJl
YzI2ZTU4MiksIEMoYmUyYjA1MzcyMWViMjZkMiksCisgICAgIEMoMTBmZWJkN2YwYzNkNmZjYiks
IEMoMjI5Yjc5YWI2OWFlOTdkKSwgQyhhODdhYWJjMmVjMjZlNTgyKSwKKyAgICAgQyhiZTJiMDUz
NzIxZWIyNmQyKSwgQygxMGZlYmQ3ZjBjM2Q2ZmNiKSwgQyg5Y2M1YjliMmY2ZTNiZjdiKSwKKyAg
ICAgQyg2NTVkODQ5NWZlNjI0YTg2KSwgQyg2MzgxYTlmM2QxZjJiZDdlKSwgQyg3OWViYWJiZmMy
NWM4M2UyKSwgQygyNmY4MmFkKX0sCisgICAge0MoMmQ1NGY0MGNjNDA4OGIxNyksIEMoNTlkMTU2
MzNiMGNkMTM5OSksIEMoYThjYzA0YmIxYmZmZDE1YiksCisgICAgIEMoZDMzMmNkYjA3M2Q4ZGM0
NiksIEMoMjcyYzU2NDY2ODY4Y2I0NiksIEMoN2U3ZmNiZTM1Y2E2YzNmMyksCisgICAgIEMoZWU4
ZjUxZTVhNzAzOTlkNCksIEMoZDMzMmNkYjA3M2Q4ZGM0NiksIEMoMjcyYzU2NDY2ODY4Y2I0Niks
CisgICAgIEMoN2U3ZmNiZTM1Y2E2YzNmMyksIEMoZWU4ZjUxZTVhNzAzOTlkNCksIEMoMTY3Mzdh
OWM3NTgxZmU3YiksCisgICAgIEMoZWQwNGJmNTJmNGI3NWRjYiksIEMoOTcwN2ZmYjM2YmQzMGMx
YSksIEMoMTM5MGYyMzZmZGMwZGUzZSksCisgICAgIEMoYjUyNDRmNDIpfSwKKyAgICB7Qyg2OTI3
Njk0NmNiNGU4N2M3KSwgQyg2MmJkYmU2MTgzYmU2ZmE5KSwgQygzYmE5NzczZGFjNDQyYTFhKSwK
KyAgICAgQyg3MDJlMmFmYzdmNWExODI1KSwgQyg4YzQ5YjExZWE4MTUxZmRjKSwgQyhjYWYzZmVm
NjFmNWE4NmZhKSwKKyAgICAgQyhlZjBiMmVlODY0OWQ3MjcyKSwgQyg3MDJlMmFmYzdmNWExODI1
KSwgQyg4YzQ5YjExZWE4MTUxZmRjKSwKKyAgICAgQyhjYWYzZmVmNjFmNWE4NmZhKSwgQyhlZjBi
MmVlODY0OWQ3MjcyKSwgQyg5ZTM0YTRlMDhkOTQ0MWUxKSwKKyAgICAgQyg3YmRjMGNkNjRkNWFm
NTMzKSwgQyhhOTI2YjE0ZDk5ZTNkODY4KSwgQyhmY2E5MjNhMTc3ODhjY2U0KSwKKyAgICAgQyg0
OWE2ODllNSl9LAorICAgIHtDKDY2ODE3NGEzZjQ0M2RmMWQpLCBDKDQwNzI5OTM5MmRhMWNlODYp
LCBDKGMyYTNmN2Q3ZjJjNWJlMjgpLAorICAgICBDKGE1OTBiMjAyYTdhNTgwN2IpLCBDKDk2OGQy
NTkzZjdjY2I1NGUpLCBDKDlkZDhkNjY5ZTNlOTVkZWMpLAorICAgICBDKGVlMGNjNWRkNThiNmU5
M2EpLCBDKGE1OTBiMjAyYTdhNTgwN2IpLCBDKDk2OGQyNTkzZjdjY2I1NGUpLAorICAgICBDKDlk
ZDhkNjY5ZTNlOTVkZWMpLCBDKGVlMGNjNWRkNThiNmU5M2EpLCBDKGFjNjVkNWE5NDY2ZmI0ODMp
LAorICAgICBDKDIyMWJlNTM4YjJjOWQ4MDYpLCBDKDVjYmU5NDQxNzg0ZjlmZDkpLCBDKGQ0Yzdk
NWQ2ZTNjMTIyYjgpLCBDKDU5ZmNkZDMpfSwKKyAgICB7Qyg1ZTI5YmU4NDdiZDUwNDYpLCBDKGI1
NjFjN2YxOWM4ZjgwYzMpLCBDKDVlNWFiZDUwMjFjY2FlYWYpLAorICAgICBDKDc0MzJkNjM4ODhl
MGMzMDYpLCBDKDc0YmJjZWVlZDQ3OWNiNzEpLCBDKDY0NzE1ODY1OTk1NzVmZGYpLAorICAgICBD
KDZhODU5YWQyMzM2NWNiYTIpLCBDKDc0MzJkNjM4ODhlMGMzMDYpLCBDKDc0YmJjZWVlZDQ3OWNi
NzEpLAorICAgICBDKDY0NzE1ODY1OTk1NzVmZGYpLCBDKDZhODU5YWQyMzM2NWNiYTIpLCBDKGY5
Y2VlYzg0YWNkMThkY2MpLAorICAgICBDKDc0YTI0MmZmMTkwNzQzN2MpLCBDKGY3MDg5MDE5NGUx
ZWU5MTMpLCBDKDc3N2RmY2I0YmIwMWYwYmEpLAorICAgICBDKDRmNGIwNGU5KX0sCisgICAge0Mo
Y2QwZDc5ZjIxNjRkYTAxNCksIEMoNGMzODZiYjVjNWQ2Y2EwYyksIEMoOGU3NzFiMDM2NDdjM2I2
MyksCisgICAgIEMoNjlkYjIzODc1Y2IwYjcxNSksIEMoYWRhOGRkOTE1MDRhZTM3ZiksIEMoNDZi
ZjE4ZGJmMDQ1ZWQ2YSksCisgICAgIEMoZTFiNWY2N2IwNjQ1YWI2MyksIEMoNjlkYjIzODc1Y2Iw
YjcxNSksIEMoYWRhOGRkOTE1MDRhZTM3ZiksCisgICAgIEMoNDZiZjE4ZGJmMDQ1ZWQ2YSksIEMo
ZTFiNWY2N2IwNjQ1YWI2MyksIEMoODc3YmU4ZjVkY2RkZmY0KSwKKyAgICAgQyg2ZDQ3MWI1Zjlj
YTJlMmQxKSwgQyg4MDJjODZkNmY0OTViOWJiKSwgQyhhMWY5YjliMjJiM2JlNzA0KSwKKyAgICAg
Qyg4YjAwZjg5MSl9LAorICAgIHtDKGUwZTZmYzBiMTYyOGFmMWQpLCBDKDI5YmU1ZmI0YzI3YTI5
NDkpLCBDKDFjM2Y3ODFhNjA0ZDM2MzApLAorICAgICBDKGM0YWY3ZmFmODgzMDMzYWEpLCBDKDli
ZDI5NmM0ZTk0NTNjYWMpLCBDKGNhNDU0MjZjMWY3ZTMzZjkpLAorICAgICBDKGE2YmJkY2Y3MDc0
ZDQwYzUpLCBDKGM0YWY3ZmFmODgzMDMzYWEpLCBDKDliZDI5NmM0ZTk0NTNjYWMpLAorICAgICBD
KGNhNDU0MjZjMWY3ZTMzZjkpLCBDKGE2YmJkY2Y3MDc0ZDQwYzUpLCBDKGUxM2EwMDVkNzE0Mjcz
M2IpLAorICAgICBDKGMwMmI3OTI1YzVlZWVmYWYpLCBDKGQzOTExOWE2MDQ0MWUyZDUpLCBDKDNj
MjRjNzEwZGY4ZjRkNDMpLAorICAgICBDKDE2ZTExNGYzKX0sCisgICAge0MoMjA1ODkyNzY2NGFk
ZmQ5MyksIEMoNmU4Zjk2OGM3OTYzYmFhNSksIEMoYWYzZGNlZDZmZmY3YzM5NCksCisgICAgIEMo
NDJlMzRjZjNkNTNjNzg3NiksIEMoOWNkZGJiMjY0MjRkYzVlKSwgQyg2NGY2MzQwYTZkOGVkZGFk
KSwKKyAgICAgQygyMTk2ZTQ4OGViMmEzYTRiKSwgQyg0MmUzNGNmM2Q1M2M3ODc2KSwgQyg5Y2Rk
YmIyNjQyNGRjNWUpLAorICAgICBDKDY0ZjYzNDBhNmQ4ZWRkYWQpLCBDKDIxOTZlNDg4ZWIyYTNh
NGIpLCBDKGM5ZTlkYTI1OTExYTE2ZmQpLAorICAgICBDKGUyMWI0NjgzZjNlMTk2YTgpLCBDKGNi
ODBiZjFhNGM2ZmRiYjQpLCBDKDUzNzkyZTliM2MzZTY3ZjgpLAorICAgICBDKGQ2YjZkYWRjKX0s
CisgICAge0MoZGMxMDcyODVmZDhlMWFmNyksIEMoYTg2NDFhMDYwOTMyMWYzZiksIEMoZGIwNmU4
OWZmZGM1NDQ2NiksCisgICAgIEMoYmNjN2E4MWVkNTQzMjQyOSksIEMoYjZkN2JkYzZhZDJlODFm
MSksIEMoOTM2MDVlYzQ3MWFhMzdkYiksCisgICAgIEMoYTJhNzNmOGE4NWE4ZTM5NyksIEMoYmNj
N2E4MWVkNTQzMjQyOSksIEMoYjZkN2JkYzZhZDJlODFmMSksCisgICAgIEMoOTM2MDVlYzQ3MWFh
MzdkYiksIEMoYTJhNzNmOGE4NWE4ZTM5NyksIEMoMTBhMDEyYjhjYTdhYzI0YiksCisgICAgIEMo
YWFjNWZkNjMzNTE1OTVjZiksIEMoNWJiNGM2NDhhMjI2ZGVhMCksIEMoOWQxMWVjYjJiNWMwNWM1
ZiksCisgICAgIEMoODk3ZTIwYWMpfSwKKyAgICB7QyhmYmJhMWFmZTJlMzI4MGYxKSwgQyg3NTVh
NWYzOTJmMDdmY2UpLCBDKDllNDRhOWExNTQwMjgwOWEpLAorICAgICBDKDYyMjZhMzJlMjUwOTk4
NDgpLCBDKGVhODk1NjYxZWNmNTMwMDQpLCBDKDRkN2UwMTU4ZGIyMjI4YjkpLAorICAgICBDKGU1
YTdkODI5MjJmNjk4NDIpLCBDKDYyMjZhMzJlMjUwOTk4NDgpLCBDKGVhODk1NjYxZWNmNTMwMDQp
LAorICAgICBDKDRkN2UwMTU4ZGIyMjI4YjkpLCBDKGU1YTdkODI5MjJmNjk4NDIpLCBDKDJjZWE3
NzEzYjY5ODQwY2EpLAorICAgICBDKDE4ZGU3YjlhZTkzODM3NWIpLCBDKGYxMjdjY2EwOGYzY2M2
NjUpLCBDKGIxYzIyZDcyNzY2NWFkMiksIEMoZjk5NmUwNWQpfSwKKyAgICB7QyhiZmExMDc4NWRk
YzEwMTFiKSwgQyhiNmUxYzRkMmY2NzBmN2RlKSwgQyg1MTdkOTU2MDRlNGZjYzFmKSwKKyAgICAg
QyhjYTY1NTJhMGRmYjgyYzczKSwgQyhiMDI0Y2RmMDllMzRiYTA3KSwgQyg2NmNkOGM1YTk1ZDcz
OTNiKSwKKyAgICAgQyhlMzkzOWFjZjc5MGQ0YTc0KSwgQyhjYTY1NTJhMGRmYjgyYzczKSwgQyhi
MDI0Y2RmMDllMzRiYTA3KSwKKyAgICAgQyg2NmNkOGM1YTk1ZDczOTNiKSwgQyhlMzkzOWFjZjc5
MGQ0YTc0KSwgQyg5NzgyNzU0MWExZWYwNTFlKSwKKyAgICAgQyhhYzJmY2U0N2ViZTY1MDBjKSwg
QyhiM2YwNmQzYmRkZjNiZDZhKSwgQygxZDc0YWZiMjVlMWNlNWZlKSwKKyAgICAgQyhjNDMwNmFm
Nil9LAorICAgIHtDKDUzNGNjMzVmMGVlMWViNGUpLCBDKGI3MDM4MjBmMWYzYjNkY2UpLCBDKDg4
NGFhMTY0Y2YyMjM2MyksCisgICAgIEMoZjE0ZWY3ZjQ3ZDhhNTdhMyksIEMoODBkMWY4NmYyZTA2
MWQ3YyksIEMoNDAxZDZjMmYxNTFiNWE2MiksCisgICAgIEMoZTk4ODQ2MDIyNDEwODk0NCksIEMo
ZjE0ZWY3ZjQ3ZDhhNTdhMyksIEMoODBkMWY4NmYyZTA2MWQ3YyksCisgICAgIEMoNDAxZDZjMmYx
NTFiNWE2MiksIEMoZTk4ODQ2MDIyNDEwODk0NCksIEMoNzgwNGQ0MTM1ZjY4Y2QxOSksCisgICAg
IEMoNTQ4N2I0YjM5ZTY5ZmU4ZSksIEMoOGNjNTk5OTAxNTM1OGEyNyksIEMoOGYzNzI5YjYxYzJk
NTYwMSksCisgICAgIEMoNmRjYWQ0MzMpfSwKKyAgICB7Qyg3Y2E2ZTM5MzM5OTVkYWMpLCBDKGZk
MTE4Yzc3ZGFhODE4OCksIEMoM2FjZWI3YjVlN2RhNjU0NSksCisgICAgIEMoYzgzODk3OTk0NDU0
ODBkYiksIEMoNTM4OWY1ZGY4YWFjZDUwZCksIEMoZDEzNjU4MWYyMmZhYjVmKSwKKyAgICAgQyhj
MmYzMWY4NTk5MWRhNDE3KSwgQyhjODM4OTc5OTQ0NTQ4MGRiKSwgQyg1Mzg5ZjVkZjhhYWNkNTBk
KSwKKyAgICAgQyhkMTM2NTgxZjIyZmFiNWYpLCBDKGMyZjMxZjg1OTkxZGE0MTcpLCBDKGFlZmJm
OWZmODQwMzVhNDMpLAorICAgICBDKDhhY2NiYWY0NGFkYWRkN2MpLCBDKGU1N2YzNjU3MzQ0YjY3
ZjUpLCBDKDIxNDkwZTVlOGFiZGVjNTEpLAorICAgICBDKDNjMDczNzRkKX0sCisgICAge0MoZjBk
NjA0NGY2ZWZkNzU5OCksIEMoZTA0NGQ2YmE0MzY5ODU2ZSksIEMoOTE5NjhlNGY4YzhhMWE0Yyks
CisgICAgIEMoNzBiZDE5Njg5OTZiZmZjMiksIEMoNGM2MTNkZTVkOGFiMzJhYyksIEMoZmUxZjRm
OTcyMDZmNzlkOCksCisgICAgIEMoYWMwNDM0ZjJjNGUyMTNhOSksIEMoNzBiZDE5Njg5OTZiZmZj
MiksIEMoNGM2MTNkZTVkOGFiMzJhYyksCisgICAgIEMoZmUxZjRmOTcyMDZmNzlkOCksIEMoYWMw
NDM0ZjJjNGUyMTNhOSksIEMoNzQ5MGU5ZDgyY2ZlMjJjYSksCisgICAgIEMoNWZiYmY3Zjk4NzQ1
NDIzOCksIEMoYzM5ZTBkYzgzNjhjZTk0OSksIEMoMjIyMDFkMzg5NDY3NmM3MSksCisgICAgIEMo
ZjBmNDYwMmMpfSwKKyAgICB7QygzZDY5ZTUyMDQ5ODc5ZDYxKSwgQyg3NjYxMDYzNmVhOWY3NGZl
KSwgQyhlOWJmNTYwMmY4OTMxMGMwKSwKKyAgICAgQyg4ZWViMTc3YTg2MDUzYzExKSwgQyhlMzkw
MTIyYzM0NWYzNGEyKSwgQygxZTMwZTQ3YWZiYWFmOGQ2KSwKKyAgICAgQyg3Yjg5MmY2OGU1Zjkx
NzMyKSwgQyg4ZWViMTc3YTg2MDUzYzExKSwgQyhlMzkwMTIyYzM0NWYzNGEyKSwKKyAgICAgQygx
ZTMwZTQ3YWZiYWFmOGQ2KSwgQyg3Yjg5MmY2OGU1ZjkxNzMyKSwgQyhiODc5MjI1MjVmYTQ0MTU4
KSwKKyAgICAgQyhmNDQwYTFlZTFhMWE3NjZiKSwgQyhlZThlZmFkMjc5ZDA4YzVjKSwgQyg0MjFm
OTEwYzViNjAyMTZlKSwKKyAgICAgQygzZTFlYTA3MSl9LAorICAgIHtDKDc5ZGEyNDJhMTZhY2Fl
MzEpLCBDKDE4M2M1ZjQzOGUyOWQ0MCksIEMoNmQzNTE3MTBhZTkyZjNkZSksCisgICAgIEMoMjcy
MzNiMjhiNWIxMWU5YiksIEMoYzdkZmU4OTg4YTk0MjcwMCksIEMoNTcwZWQxMWM0YWJhZDk4NCks
CisgICAgIEMoNGI0YzA0NjMyZjQ4MzExYSksIEMoMjcyMzNiMjhiNWIxMWU5YiksIEMoYzdkZmU4
OTg4YTk0MjcwMCksCisgICAgIEMoNTcwZWQxMWM0YWJhZDk4NCksIEMoNGI0YzA0NjMyZjQ4MzEx
YSksIEMoMTJmMzMyMzU0NDJjYmY5KSwKKyAgICAgQyhhMzUzMTVjYTBiNWI4Y2RiKSwgQyhkOGFi
ZGU2MmVhZDU1MDZiKSwgQyhmYzBmY2Y4NDc4YWQ1MjY2KSwKKyAgICAgQyg2NzU4MGYwYyl9LAor
ICAgIHtDKDQ2MWM4MjY1NmE3NGZiNTcpLCBDKGQ4NGI0OTFiMjc1YWEwZjcpLCBDKDhmMjYyY2Iy
OWE2ZWI4YjIpLAorICAgICBDKDQ5ZmEzMDcwYmM3YjA2ZDApLCBDKGYxMmVkNDQ2YmQwYzA1Mzkp
LCBDKDZkNDNhYzVkMWRkNGIyNDApLAorICAgICBDKDc2MDk1MjRmZTkwYmVjOTMpLCBDKDQ5ZmEz
MDcwYmM3YjA2ZDApLCBDKGYxMmVkNDQ2YmQwYzA1MzkpLAorICAgICBDKDZkNDNhYzVkMWRkNGIy
NDApLCBDKDc2MDk1MjRmZTkwYmVjOTMpLCBDKDM5MWMyYjJlMDc2ZWMyNDEpLAorICAgICBDKGY1
ZTYyZGVkYTc4MzlmN2IpLCBDKDNjN2IzMTg2YTEwZDg3MGYpLCBDKDc3ZWY0ZjJjYmE0ZjEwMDUp
LAorICAgICBDKDRlMTA5NDU0KX0sCisgICAge0MoNTNjMWE2NmQwYjEzMDAzKSwgQyg3MzFmMDYw
ZTZmZTc5N2ZjKSwgQyhkYWE1NjgxMTc5MTM3MWUzKSwKKyAgICAgQyg1NzQ2NjA0NmNmNjg5NmVk
KSwgQyg4YWMzN2UwZThiMjViMGM2KSwgQygzZTYwNzRiNTJhZDNjZjE4KSwKKyAgICAgQyhhYTQ5
MWNlN2I0NWRiMjk3KSwgQyg1NzQ2NjA0NmNmNjg5NmVkKSwgQyg4YWMzN2UwZThiMjViMGM2KSwK
KyAgICAgQygzZTYwNzRiNTJhZDNjZjE4KSwgQyhhYTQ5MWNlN2I0NWRiMjk3KSwgQyhmN2E5MjI3
YzVlNWUyMmMzKSwKKyAgICAgQygzZDkyZTA4NDFlMjljZTI4KSwgQygyZDMwZGE1YjI4NTllNTlk
KSwgQyhmZjM3ZmExYzljYmZhZmMyKSwKKyAgICAgQyg4OGE0NzRhNyl9LAorICAgIHtDKGQzYTJl
ZmVjMGYwNDdlOSksIEMoMWNhYmNlNTg4NTNlNThlYSksIEMoN2ExN2IyZWFlMzI1NmJlNCksCisg
ICAgIEMoYzJkY2M5NzU4YzkxMDE3MSksIEMoY2I1Y2RkYWVmZjRkZGI0MCksIEMoNWQ3Y2M1ODY5
YmFlZmVmMSksCisgICAgIEMoOTY0NGM1ODUzYWY5Y2ZlYiksIEMoYzJkY2M5NzU4YzkxMDE3MSks
IEMoY2I1Y2RkYWVmZjRkZGI0MCksCisgICAgIEMoNWQ3Y2M1ODY5YmFlZmVmMSksIEMoOTY0NGM1
ODUzYWY5Y2ZlYiksIEMoMjU1Yzk2ODE4NDY5NGVlMSksCisgICAgIEMoNGU0ZDcyNmVkYTM2MDky
NyksIEMoN2QyN2RkNWI2ZDEwMDM3NyksIEMoOWEzMDBlMjAyMGRkZWEyYyksIEMoNWI1YmVkZCl9
LAorICAgIHtDKDQzYzY0ZDc0ODRmN2Y5YjIpLCBDKDVkYTAwMmI2NGFhZmFlYjcpLCBDKGI1NzZj
MWU0NTgwMGE3MTYpLAorICAgICBDKDNlZTg0ZDNkNWI0Y2EwMGIpLCBDKDVjYmM2ZDcwMTg5NGMz
ZjkpLCBDKGQ5ZTk0NmY1YWUxY2E5NSksCisgICAgIEMoMjRjYTA2ZTY3ZjBiMTgzMyksIEMoM2Vl
ODRkM2Q1YjRjYTAwYiksIEMoNWNiYzZkNzAxODk0YzNmOSksCisgICAgIEMoZDllOTQ2ZjVhZTFj
YTk1KSwgQygyNGNhMDZlNjdmMGIxODMzKSwgQygzNDEzZDQ2YjQxNTI2NTBlKSwKKyAgICAgQyhj
YmRmZGJjMmFiNTE2ZjljKSwgQygyYWFkOGFjYjczOWUwYzZjKSwgQygyYmZjOTUwZDlmOWZhOTc3
KSwKKyAgICAgQygxYWFkZGZhNyl9LAorICAgIHtDKGE3ZGVjNmFkODFjZjdmYTEpLCBDKDE4MGMx
YWI3MDg2ODMwNjMpLCBDKDk1ZTBmZDcwMDhkNjdjZmYpLAorICAgICBDKDZiMTFjNTA3MzY4NzIw
OCksIEMoN2UwYTU3ZGUwZDQ1M2YzKSwgQyhlNDhjMjY3ZDRmNjQ2ODY3KSwKKyAgICAgQygyMTY4
ZTkxMzYzNzVmOWNiKSwgQyg2YjExYzUwNzM2ODcyMDgpLCBDKDdlMGE1N2RlMGQ0NTNmMyksCisg
ICAgIEMoZTQ4YzI2N2Q0ZjY0Njg2NyksIEMoMjE2OGU5MTM2Mzc1ZjljYiksIEMoNjRkYTE5NGFl
ZWVhN2ZkZiksCisgICAgIEMoYTNiOWYwMWZhNTg4NTY3OCksIEMoYzMxNmY4ZWUyZWIyYmQxNyks
IEMoYTdlNGQ4MGY4M2U0NDI3ZiksCisgICAgIEMoNWJlMDdmZDgpfSwKKyAgICB7Qyg1NDA4YTFk
Zjk5ZDRhZmYpLCBDKGI5NTY1ZTU4ODc0MGY2YmQpLCBDKGFiZjI0MTgxM2IwODAwNmUpLAorICAg
ICBDKDdkYTllODFkODlmZGE3YWQpLCBDKDI3NDE1N2NhYmU3MTQ0MGQpLCBDKDJjMjJkOWE0ODBi
MzMxZjcpLAorICAgICBDKGU4MzVjOGFjNzQ2NDcyZDUpLCBDKDdkYTllODFkODlmZGE3YWQpLCBD
KDI3NDE1N2NhYmU3MTQ0MGQpLAorICAgICBDKDJjMjJkOWE0ODBiMzMxZjcpLCBDKGU4MzVjOGFj
NzQ2NDcyZDUpLCBDKDIwMzhjZTgxN2EyMDFhZTQpLAorICAgICBDKDQ2ZjMyODlkZmUxYzVlNDAp
LCBDKDQzNTU3OGE0MmQ0YjdjNTYpLCBDKGY5NmQ5ZjQwOWZjZjU2MSksIEMoY2JjYTg2MDYpfSwK
KyAgICB7QyhhOGIyN2E2YmNhZWVlZDRiKSwgQyhhZWMxZWVkZWQ2YTg3ZTM5KSwgQyg5ZGFmMjQ2
ZDZmZWQ4MzI2KSwKKyAgICAgQyhkNDVhOTM4Yjc5ZjU0ZThmKSwgQygzNjZiMjE5ZDZkMTMzZTQ4
KSwgQyg1YjE0YmUzYzI1YzQ5NDA1KSwKKyAgICAgQyhmZGQ3OTFkNDg4MTFhNTcyKSwgQyhkNDVh
OTM4Yjc5ZjU0ZThmKSwgQygzNjZiMjE5ZDZkMTMzZTQ4KSwKKyAgICAgQyg1YjE0YmUzYzI1YzQ5
NDA1KSwgQyhmZGQ3OTFkNDg4MTFhNTcyKSwgQygzZGU2N2I4ZDllOTVkMzM1KSwKKyAgICAgQyg5
MDNjMDEzMDdjZmJlZWQ1KSwgQyhhZjdkNjVmMzIyNzRmMWQxKSwgQyg0ZGJhMTQxYjVmYzAzYzQy
KSwKKyAgICAgQyhiZGU2NGQwMSl9LAorICAgIHtDKDlhOTUyYTgyNDZmZGMyNjkpLCBDKGQwZGNm
Y2FjNzRlZjI3OGMpLCBDKDI1MGY3MTM5ODM2ZjBmMWYpLAorICAgICBDKGM4M2QzYzVmNGU1ZjAz
MjApLCBDKDY5NGU3YWRlYjJiZjMyZTUpLCBDKDdhZDA5NTM4YTNkYTI3ZjUpLAorICAgICBDKDJi
NWMxOGY5MzRhYTUzMDMpLCBDKGM4M2QzYzVmNGU1ZjAzMjApLCBDKDY5NGU3YWRlYjJiZjMyZTUp
LAorICAgICBDKDdhZDA5NTM4YTNkYTI3ZjUpLCBDKDJiNWMxOGY5MzRhYTUzMDMpLCBDKGM0ZGFk
NzcwM2QzNDMyNmUpLAorICAgICBDKDgyNTU2OWUyYmNkYzZhMjUpLCBDKGI4M2QyNjc3MDljYTkw
MGQpLCBDKDQ0ZWQwNTE1MWY1ZDc0ZTYpLAorICAgICBDKGVlOTBjZjMzKX0sCisgICAge0MoYzkz
MDg0MWQxZDg4Njg0ZiksIEMoNWViNjZlYjE4YjdmOTY3MiksIEMoZTQ1NWQ0MTMwMDhhMjU0Niks
CisgICAgIEMoYmMyNzFiYzBkZjE0ZDY0NyksIEMoYjA3MTEwMGE5ZmYyZWRiYiksIEMoMmIxYTRj
MWNjMzFhMTE5YSksCisgICAgIEMoYjVkN2NhYTFiZDk0NmNlZiksIEMoYmMyNzFiYzBkZjE0ZDY0
NyksIEMoYjA3MTEwMGE5ZmYyZWRiYiksCisgICAgIEMoMmIxYTRjMWNjMzFhMTE5YSksIEMoYjVk
N2NhYTFiZDk0NmNlZiksIEMoZTAyNjIzYWUxMGY0YWFkZCksCisgICAgIEMoZDc5ZjYwMDM4OWNk
MDZmZCksIEMoMWU4ZGE3OTY1MzAzZTYyYiksIEMoODZmNTBlMTBlZWFiMDkyNSksCisgICAgIEMo
NDMwNWMzY2UpfSwKKyAgICB7Qyg5NGRjNjk3MWUzY2YwNzFhKSwgQyg5OTRjNzAwM2I3M2IyYjM0
KSwgQyhlYTE2ZTg1OTc4Njk0ZTUpLAorICAgICBDKDMzNmMxYjU5YTFmYzE5ZjYpLCBDKGMxNzNh
Y2FlY2M0NzEzMDUpLCBDKGRiMTI2N2QyNGYzZjNmMzYpLAorICAgICBDKGU5YTVlZTk4NjI3YTZl
NzgpLCBDKDMzNmMxYjU5YTFmYzE5ZjYpLCBDKGMxNzNhY2FlY2M0NzEzMDUpLAorICAgICBDKGRi
MTI2N2QyNGYzZjNmMzYpLCBDKGU5YTVlZTk4NjI3YTZlNzgpLCBDKDcxOGYzMzQyMDQzMDVhZTUp
LAorICAgICBDKGUzYjUzYzE0OGY5OGQyMmMpLCBDKGExODQwMTJkZjg0ODkyNiksIEMoNmU5NjM4
NjEyN2Q1MTE4MyksIEMoNGIzYTFkNzYpfSwKKyAgICB7Qyg3ZmM5ODAwNmUyNWNhYzkpLCBDKDc3
ZmVlMDQ4NGNkYTg2YTcpLCBDKDM3NmVjM2Q0NDcwNjA0NTYpLAorICAgICBDKDg0MDY0YTZkY2Y5
MTYzNDApLCBDKGZiZjU1YTI2NzkwZTBlYmIpLCBDKDJlN2Y4NDE1MWMzMWE1YzIpLAorICAgICBD
KDlmN2Y2ZDc2Yjk1MGY5YmYpLCBDKDg0MDY0YTZkY2Y5MTYzNDApLCBDKGZiZjU1YTI2NzkwZTBl
YmIpLAorICAgICBDKDJlN2Y4NDE1MWMzMWE1YzIpLCBDKDlmN2Y2ZDc2Yjk1MGY5YmYpLCBDKDEy
NWUwOTRmYmVlMmIxNDYpLAorICAgICBDKDU3MDZhYTcyYjJlZWY3YzIpLCBDKDFjNGEyZGFhOTA1
ZWU2NmUpLCBDKDgzZDQ4MDI5YjU0NTE2OTQpLAorICAgICBDKGE4YmI2ZDgwKX0sCisgICAge0Mo
YmQ3ODFjNDQ1NDEwM2Y2KSwgQyg2MTIxOTczMjJmNDljOTMxKSwgQyhiOWNmMTdmZDdlNTQ2MmQ1
KSwKKyAgICAgQyhlMzhlNTI2Y2QzMzI0MzY0KSwgQyg4NWYyYjYzYTViNWU4NDBhKSwgQyg0ODVk
N2NlZjVhYWFkZDg3KSwKKyAgICAgQyhkMmI4MzdhNDYyZjZkYjZkKSwgQyhlMzhlNTI2Y2QzMzI0
MzY0KSwgQyg4NWYyYjYzYTViNWU4NDBhKSwKKyAgICAgQyg0ODVkN2NlZjVhYWFkZDg3KSwgQyhk
MmI4MzdhNDYyZjZkYjZkKSwgQygzZTQxY2VmMDMxNTIwZDlhKSwKKyAgICAgQyg4MmRmNzM5MDJk
N2Y2N2UpLCBDKDNiYTZmZDU0YzE1MjU3Y2IpLCBDKDIyZjkxZjA3OWJlNDJkNDApLCBDKDFmOWZh
NjA3KX0sCisgICAge0MoZGE2MGU2YjE0NDc5ZjlkZiksIEMoM2JkY2NmNjllY2UxNjc5MiksIEMo
MThlYmY0NWM0ZmVjZmRjOSksCisgICAgIEMoMTY4MThlZTlkMzhjNjY2NCksIEMoNTUxOWZhOWEx
ZTM1YTMyOSksIEMoY2JkMDAwMWU0YjA4ZWQ4KSwKKyAgICAgQyg0MWE5NjVlMzdhMGM3MzFiKSwg
QygxNjgxOGVlOWQzOGM2NjY0KSwgQyg1NTE5ZmE5YTFlMzVhMzI5KSwKKyAgICAgQyhjYmQwMDAx
ZTRiMDhlZDgpLCBDKDQxYTk2NWUzN2EwYzczMWIpLCBDKDY2ZTdiNWRjY2ExY2EyOGYpLAorICAg
ICBDKDk2M2IyZDk5MzYxNDM0N2QpLCBDKDliNmZjNmY0MWQ0MTExMDYpLCBDKGFhYWVjYWNjZjc4
NDhjMGMpLAorICAgICBDKDhkMGU0ZWQyKX0sCisgICAge0MoNGNhNTZhMzQ4YjZjNGQzKSwgQyg2
MDYxODUzN2MzODcyNTE0KSwgQygyZmJiOWYwZTY1ODcxYjA5KSwKKyAgICAgQygzMDI3ODAxNjgz
MGRkZDQzKSwgQyhmMDQ2NjQ2ZDkwMTJlMDc0KSwgQyhjNjJhNTgwNGY2ZTdjOWRhKSwKKyAgICAg
Qyg5OGQ1MWY1ODMwZTJiYzFlKSwgQygzMDI3ODAxNjgzMGRkZDQzKSwgQyhmMDQ2NjQ2ZDkwMTJl
MDc0KSwKKyAgICAgQyhjNjJhNTgwNGY2ZTdjOWRhKSwgQyg5OGQ1MWY1ODMwZTJiYzFlKSwgQyg3
YjJjYmU1ZDM3ZTNmMjllKSwKKyAgICAgQyg3YjhjM2VkNTBiZGE0YWEwKSwgQygzZWE2MGNjMjQ2
MzllMDM4KSwgQyhmNzcwNmRlOWZiMGI1ODAxKSwKKyAgICAgQygxYmYzMTM0Nyl9LAorICAgIHtD
KGViZDIyZDRiNzA5NDY0MDEpLCBDKDY4NjM2MDJiZjcxMzkwMTcpLCBDKGMwYjFhYzRlMTFiMDA2
NjYpLAorICAgICBDKDdkMjc4MmI4MmJkNDk0YjYpLCBDKDk3MTU5YmExYzI2YjMwNGIpLCBDKDQy
YjNiMGZkNDMxYjJhYzIpLAorICAgICBDKGZhYTgxZjgyNjkxYzgzMGMpLCBDKDdkMjc4MmI4MmJk
NDk0YjYpLCBDKDk3MTU5YmExYzI2YjMwNGIpLAorICAgICBDKDQyYjNiMGZkNDMxYjJhYzIpLCBD
KGZhYTgxZjgyNjkxYzgzMGMpLCBDKDdjYzY0NDkyMzRjN2UxODUpLAorICAgICBDKGFlYWE2ZmE2
NDNjYTg2YTUpLCBDKDE0MTJkYjFjMGYyZTAxMzMpLCBDKDRkZjJmZTNlNDA3MjkzNGYpLAorICAg
ICBDKDFhZTNmYzViKX0sCisgICAge0MoM2NjNDY5M2Q2Y2JjYjBjKSwgQyg1MDE2ODllYTFjNzBm
ZmEpLCBDKDEwYTQzNTNlOWM4OWUzNjQpLAorICAgICBDKDU4YzhhYmE3NDc1ZTJkOTUpLCBDKDNl
MmYyOTE2OThjOTQyN2EpLCBDKGU4NzEwZDE5YzlkZTllNDEpLAorICAgICBDKDY1ZGRhMjJlYjA0
Y2Y5NTMpLCBDKDU4YzhhYmE3NDc1ZTJkOTUpLCBDKDNlMmYyOTE2OThjOTQyN2EpLAorICAgICBD
KGU4NzEwZDE5YzlkZTllNDEpLCBDKDY1ZGRhMjJlYjA0Y2Y5NTMpLCBDKGQ3NzI5YzQ4YzI1MGNm
ZmEpLAorICAgICBDKGVmNzYxNjJiMmRkZmJhNGIpLCBDKDUyMzcxZTE3ZjRkNTFmNmQpLCBDKGRk
ZDAwMjExMmZmMGM4MzMpLAorICAgICBDKDQ1OWMzOTMwKX0sCisgICAge0MoMzg5MDhlNDNmN2Jh
NWVmMCksIEMoMWFiMDM1ZDRlNzc4MWU3NiksIEMoNDFkMTMzZThjMGE2OGZmNyksCisgICAgIEMo
ZDEwOTA4OTNhZmFhYjhiYyksIEMoOTZjNGZlNjkyMjc3MjgwNyksIEMoNDUyMjQyNmMyYjQyMDVl
YiksCisgICAgIEMoZWZhZDk5YTEyNjJlN2UwZCksIEMoZDEwOTA4OTNhZmFhYjhiYyksIEMoOTZj
NGZlNjkyMjc3MjgwNyksCisgICAgIEMoNDUyMjQyNmMyYjQyMDVlYiksIEMoZWZhZDk5YTEyNjJl
N2UwZCksIEMoYzc2OTYwMjlhYmRiNDY1ZSksCisgICAgIEMoNGUxOGVhZjAzZDUxNzY1MSksIEMo
ZDAwNmJjZWQ1NGM4NmFjOCksIEMoNDMzMDMyNmQxMDIxODYwYyksCisgICAgIEMoZTAwYzQxODQp
fSwKKyAgICB7QygzNDk4M2NjYzZhYTQwMjA1KSwgQygyMTgwMmNhZDM0ZTcyYmM0KSwgQygxOTQz
ZThmYjNjMTdiYjgpLAorICAgICBDKGZjOTQ3MTY3ZjY5YzBkYTUpLCBDKGFlNzljZmRiOTFiNmY2
YzEpLCBDKDdiMjUxZDA0YzI2Y2JkYTMpLAorICAgICBDKDEyOGEzM2E3OTA2MGQyNWUpLCBDKGZj
OTQ3MTY3ZjY5YzBkYTUpLCBDKGFlNzljZmRiOTFiNmY2YzEpLAorICAgICBDKDdiMjUxZDA0YzI2
Y2JkYTMpLCBDKDEyOGEzM2E3OTA2MGQyNWUpLCBDKDFlY2E4NDJkYmZlMDE4ZGQpLAorICAgICBD
KDUwYTRjZDJlZTBiYTljNjMpLCBDKGMyZjVjOTdkODM5OTY4MmYpLCBDKDNmOTI5ZmM3Y2JlOGVj
YmIpLAorICAgICBDKGZmYzdhNzgxKX0sCisgICAge0MoODYyMTVjNDVkY2FjOTkwNSksIEMoZWE1
NDZhZmU4NTFjYWU0YiksIEMoZDg1YjY0NTdlNDg5ZTM3NCksCisgICAgIEMoYjc2MDljOGU3MDM4
NmQ2NiksIEMoMzZlNmNjYzI3OGQxNjM2ZCksIEMoMmY4NzMzMDdjMDhlNmExYyksCisgICAgIEMo
MTBmMjUyYTc1ODUwNTI4OSksIEMoYjc2MDljOGU3MDM4NmQ2NiksIEMoMzZlNmNjYzI3OGQxNjM2
ZCksCisgICAgIEMoMmY4NzMzMDdjMDhlNmExYyksIEMoMTBmMjUyYTc1ODUwNTI4OSksIEMoYzg5
Nzc2NDZlODFhYjRiNiksCisgICAgIEMoODAxN2I3NDVjZDgwMjEzYiksIEMoOTYwNjg3ZGIzNTli
ZWEwKSwgQyhlZjRhNDcwNjYwNzk5NDg4KSwgQyg2YTEyNTQ4MCl9LAorICAgIHtDKDQyMGZjMjU1
YzM4ZGIxNzUpLCBDKGQ1MDNjZDBmM2MxMjA4ZDEpLCBDKGQ0Njg0ZTc0YzgyNWEwYmMpLAorICAg
ICBDKDRjMTA1Mzc0NDMxNTJmM2QpLCBDKDcyMDQ1MWQzYzg5NWUyNWQpLCBDKGFmZjYwYzRkMTFm
NTEzZmQpLAorICAgICBDKDg4MWU4ZDZkMmQ1ZmI5NTMpLCBDKDRjMTA1Mzc0NDMxNTJmM2QpLCBD
KDcyMDQ1MWQzYzg5NWUyNWQpLAorICAgICBDKGFmZjYwYzRkMTFmNTEzZmQpLCBDKDg4MWU4ZDZk
MmQ1ZmI5NTMpLCBDKDlkZWMwMzRhMDQzZjFmNTUpLAorICAgICBDKGUyN2EwYzIyZTdiZmIzOWQp
LCBDKDIyMjBiOTU5MTI4MzI0KSwgQyg1MzI0MDI3MjE1MmRiZDhiKSwgQyg4OGExNTEyYil9LAor
ICAgIHtDKDFkN2EzMWY1YmM4ZmUyZjkpLCBDKDQ3NjM5OTEwOTJkY2Y4MzYpLCBDKGVkNjk1ZjU1
Yjk3NDE2ZjQpLAorICAgICBDKGYyNjVlZGIwYzFjNDExZDcpLCBDKDMwZTFlOWVjNTI2MmI3ZTYp
LCBDKGMyYzNiYTA2MWNlNzk1N2EpLAorICAgICBDKGQ5NzVmOTNiODlhMTY0MDkpLCBDKGYyNjVl
ZGIwYzFjNDExZDcpLCBDKDMwZTFlOWVjNTI2MmI3ZTYpLAorICAgICBDKGMyYzNiYTA2MWNlNzk1
N2EpLCBDKGQ5NzVmOTNiODlhMTY0MDkpLCBDKGU5ZDcwMzEyM2Y0MzQ1MGEpLAorICAgICBDKDQx
MzgzZmVkZmVkNjdjODIpLCBDKDZlOWY0M2VjYmJiZDYwMDQpLCBDKGM3Y2NkMjNhMjRlNzdiOCks
IEMoNTQ5YmJiZTUpfSwKKyAgICB7Qyg5NDEyOWE4NGMzNzZhMjZlKSwgQyhjMjQ1ZTg1OWRjMjMx
OTMzKSwgQygxYjhmNzRmZWNmOTE3NDUzKSwKKyAgICAgQyhlOTM2OWQyZTkwMDdlNzRiKSwgQyhi
MTM3NTkxNWQxMTM2MDUyKSwgQyg5MjZjMjAyMWZlMWQyMzUxKSwKKyAgICAgQygxZDk0M2FkZGFh
YTJlN2U2KSwgQyhlOTM2OWQyZTkwMDdlNzRiKSwgQyhiMTM3NTkxNWQxMTM2MDUyKSwKKyAgICAg
Qyg5MjZjMjAyMWZlMWQyMzUxKSwgQygxZDk0M2FkZGFhYTJlN2U2KSwgQyhmNWY1MTU4NjljMjQ2
NzM4KSwKKyAgICAgQyg3ZTMwOWNkMGUxYzBmMmEwKSwgQygxNTNjM2MzNmNmNTIzZTNiKSwgQyg0
OTMxYzY2ODcyZWE2NzU4KSwKKyAgICAgQyhjMTMzZDM4Yyl9LAorICAgIHtDKDFkM2E5ODA5ZGFi
MDVjOGQpLCBDKGFkZGRlYjRmNzFjOTNlOCksIEMoZWYzNDJlYjM2NjMxZWRiKSwKKyAgICAgQygz
MDFkN2E2MWM0YjNkYmNhKSwgQyg4NjEzMzZjM2YwNTUyZDYxKSwgQygxMmM2ZGI5NDc0NzEzMDBm
KSwKKyAgICAgQyhhNjc5ZWYwZWQ3NjFkZWI5KSwgQygzMDFkN2E2MWM0YjNkYmNhKSwgQyg4NjEz
MzZjM2YwNTUyZDYxKSwKKyAgICAgQygxMmM2ZGI5NDc0NzEzMDBmKSwgQyhhNjc5ZWYwZWQ3NjFk
ZWI5KSwgQyg1ZjcxM2I3MjBlZmNkMTQ3KSwKKyAgICAgQygzN2FjMzMwYTMzM2FhNmIpLCBDKDMz
MDlkYzllYzE2MTZlZWYpLCBDKDUyMzAxZDdhOTA4MDI2YjUpLCBDKGZjYWNlMzQ4KX0sCisgICAg
e0MoOTBmYTNjY2JkNjA4NDhkYSksIEMoZGZhNmUwNTk1YjU2OWUxMSksIEMoZTU4NWQwNjdhMWY1
MTM1ZCksCisgICAgIEMoNmNlZjg2NmVjMjk1YWJlYSksIEMoYzQ4NmMwZDkyMTRiZWIyZCksIEMo
ZDZlNDkwOTQ0ZDVmZTEwMCksCisgICAgIEMoNTlkZjMxNzVkNzJjOWYzOCksIEMoNmNlZjg2NmVj
Mjk1YWJlYSksIEMoYzQ4NmMwZDkyMTRiZWIyZCksCisgICAgIEMoZDZlNDkwOTQ0ZDVmZTEwMCks
IEMoNTlkZjMxNzVkNzJjOWYzOCksIEMoM2YyM2FlYjRjMDRkMTQ0MyksCisgICAgIEMoOWJmMDUx
NWNkOGQyNDc3MCksIEMoOTU4NTU0ZjYwY2NhYWRlMiksIEMoNTE4Mjg2M2M5MDEzMmZlOCksCisg
ICAgIEMoZWQ3YjZmOWEpfSwKKyAgICB7QygyZGJiNGZjNzFiNTU0NTE0KSwgQyg5NjUwZTA0Yjg2
YmUwZjgyKSwgQyg2MGYyMzA0ZmJhOTI3NGQzKSwKKyAgICAgQyhmY2ZiOTQ0M2U5OTdjYWIpLCBD
KGYxMzMxMGQ5NmRlYzI3NzIpLCBDKDcwOWNhZDIwNDUyNTFhZjIpLAorICAgICBDKGFmZDBkMzBj
YzYzNzZkYWQpLCBDKGZjZmI5NDQzZTk5N2NhYiksIEMoZjEzMzEwZDk2ZGVjMjc3MiksCisgICAg
IEMoNzA5Y2FkMjA0NTI1MWFmMiksIEMoYWZkMGQzMGNjNjM3NmRhZCksIEMoNTlkNGJlZDMwZDU1
MGQwZCksCisgICAgIEMoNTgwMDZkNGUyMmQ4YWFkMSksIEMoZWVlMTJkMjM2MmQxZjEzYiksIEMo
MzVjZjFkN2ZhYWYxZDIyOCksCisgICAgIEMoNmQ5MDdkZGEpfSwKKyAgICB7QyhiOThiZjQyNzRk
MTgzNzRhKSwgQygxYjY2OWZkNGM3ZjlhMTlhKSwgQyhiMWY1OTcyYjg4YmEyYjdhKSwKKyAgICAg
Qyg3MzExOWM5OWU2ZDUwOGJlKSwgQyg1ZDQwMzZhMTg3NzM1Mzg1KSwgQyg4ZmE2NmUxOTJmZDgz
ODMxKSwKKyAgICAgQygyYWJmNjRiNmI1OTJlZDU3KSwgQyg3MzExOWM5OWU2ZDUwOGJlKSwgQyg1
ZDQwMzZhMTg3NzM1Mzg1KSwKKyAgICAgQyg4ZmE2NmUxOTJmZDgzODMxKSwgQygyYWJmNjRiNmI1
OTJlZDU3KSwgQyhkNDUwMWY5NWRkODRiMDhjKSwKKyAgICAgQyhiZjE1NTI0MzljOGJlYTAyKSwg
Qyg0ZjU2ZmU3NTNiYTdlMGJhKSwgQyg0Y2E4ZDM1Y2MwNThjZmNkKSwKKyAgICAgQyg3YTRkNDhk
NSl9LAorICAgIHtDKGQ2NzgxZDBiNWUxOGViNjgpLCBDKGI5OTI5MTNjYWUwOWI1MzMpLCBDKDU4
ZjYwMjFjYWFlZTNhNDApLAorICAgICBDKGFhZmNiNzc0OTdiNWEyMGIpLCBDKDQxMTgxOWU1ZTc5
Yjc3YTMpLCBDKGJkNzc5NTc5YzUxYzc3Y2UpLAorICAgICBDKDU4ZDExZjVkY2Y1ZDA3NWQpLCBD
KGFhZmNiNzc0OTdiNWEyMGIpLCBDKDQxMTgxOWU1ZTc5Yjc3YTMpLAorICAgICBDKGJkNzc5NTc5
YzUxYzc3Y2UpLCBDKDU4ZDExZjVkY2Y1ZDA3NWQpLCBDKDllYWU3NmNkZTFjYjQyMzMpLAorICAg
ICBDKDMyZmUyNWE5YmY2NTc5NzApLCBDKDFjMGM4MDc5NDhlZGIwNmEpLCBDKGI4ZjI5YTNkZmFl
ZTI1NGQpLAorICAgICBDKGU2ODZmM2RiKX0sCisgICAge0MoMjI2NjUxY2YxOGY0ODg0YyksIEMo
NTk1MDUyYTg3NGYwZjUxYyksIEMoYzliNzUxNjJiMjNiYWI0MiksCisgICAgIEMoM2Y0NGY4NzNi
ZTQ4MTJlYyksIEMoNDI3NjYyYzFkYmZhYTdiMiksIEMoYTIwN2ZmOTYzOGZiNjU1OCksCisgICAg
IEMoYTczOGQ5MTllNDVmNTUwZiksIEMoM2Y0NGY4NzNiZTQ4MTJlYyksIEMoNDI3NjYyYzFkYmZh
YTdiMiksCisgICAgIEMoYTIwN2ZmOTYzOGZiNjU1OCksIEMoYTczOGQ5MTllNDVmNTUwZiksIEMo
Y2IxODZlYTA1NzE3ZTdkNiksCisgICAgIEMoMWNhN2Q2OGE1ODcxZmRjMSksIEMoNWQ0YzExOWVh
OGVmMzc1MCksIEMoNzJiNmExMGZhMmZmOTQwNiksIEMoY2NlN2M1NSl9LAorICAgIHtDKGE3MzRm
YjA0N2QzMTYyZDYpLCBDKGU1MjMxNzBkMjQwYmEzYTUpLCBDKDEyNWE2OTcyODA5NzMwZTgpLAor
ICAgICBDKGQzOTZhMjk3Nzk5YzI0YTEpLCBDKDhmZWU5OTJlMzA2OWJhZDUpLCBDKDJlM2EwMWIw
Njk3Y2NmNTcpLAorICAgICBDKGVlOWM3MzkwYmQ5MDFjZmEpLCBDKGQzOTZhMjk3Nzk5YzI0YTEp
LCBDKDhmZWU5OTJlMzA2OWJhZDUpLAorICAgICBDKDJlM2EwMWIwNjk3Y2NmNTcpLCBDKGVlOWM3
MzkwYmQ5MDFjZmEpLCBDKDU2ZjJkOWRhMGFmMjhhZjIpLAorICAgICBDKDNmZGQzN2IyZmU4NDM3
Y2IpLCBDKDNkMTNlZWViNjBkNmFlYzApLCBDKDI0MzJhZTYyZTgwMGE1Y2UpLCBDKGY1OGI5NmIp
fSwKKyAgICB7QyhjNmRmNjM2NGEyNGY3NWEzKSwgQyhjMjk0ZTJjODRjNGY1ZGY4KSwgQyhhODhk
ZjY1YzZhODkzMTNiKSwKKyAgICAgQyg4OTVmZTg0NDMxODNkYTc0KSwgQyhjN2YyZjZmODk1YTY3
MzM0KSwgQyhhMGQ2YjZhNTA2NjkxZDMxKSwKKyAgICAgQygyNGY1MTcxMmI0NTlhOWYwKSwgQyg4
OTVmZTg0NDMxODNkYTc0KSwgQyhjN2YyZjZmODk1YTY3MzM0KSwKKyAgICAgQyhhMGQ2YjZhNTA2
NjkxZDMxKSwgQygyNGY1MTcxMmI0NTlhOWYwKSwgQygxNzNhNjk5NDgxYjllMDg4KSwKKyAgICAg
QygxZGVlOWI3N2JjYmY0NWQzKSwgQygzMmI5OGE2NDZhODY2N2QwKSwgQygzYWRjZDRlZTI4ZjQy
YTBlKSwKKyAgICAgQygxYmJmNmY2MCl9LAorICAgIHtDKGQ4ZDEzNjRjMWZiY2QxMCksIEMoMmQ3
Y2M3ZjU0ODMyZGVhYSksIEMoNGUyMmM4NzZhN2M1NzYyNSksCisgICAgIEMoYTNkNWQxMTM3ZDMw
YzRiZCksIEMoMWU3ZDcwNmE0OWJkZmI5ZSksIEMoYzYzMjgyYjIwYWQ4NmRiMiksCisgICAgIEMo
YWVjOTdmYTA3OTE2YmZkNiksIEMoYTNkNWQxMTM3ZDMwYzRiZCksIEMoMWU3ZDcwNmE0OWJkZmI5
ZSksCisgICAgIEMoYzYzMjgyYjIwYWQ4NmRiMiksIEMoYWVjOTdmYTA3OTE2YmZkNiksIEMoN2M5
YmEzZTUyZDQ0ZjczZSksCisgICAgIEMoYWY2MmZkMjQ1ODExMTg1ZCksIEMoOGE5ZDJkYWNkODcz
NzY1MiksIEMoYmQyY2NlMjc3ZDVmYmVjMCksCisgICAgIEMoY2U1ZTBjYzIpfSwKKyAgICB7Qyhh
YWUwNmY5MTQ2ZGI4ODVmKSwgQygzNTk4NzM2NDQxZTI4MGQ5KSwgQyhmYmEzMzliMTE3MDgzZTU1
KSwKKyAgICAgQyhiMjJiZjA4ZDlmOGFlY2Y3KSwgQyhjMTgyNzMwZGUzMzdiOTIyKSwgQygyYjlh
ZGM4N2EwNDUwYTQ2KSwKKyAgICAgQygxOTJjMjlhOWNmYzAwYWFkKSwgQyhiMjJiZjA4ZDlmOGFl
Y2Y3KSwgQyhjMTgyNzMwZGUzMzdiOTIyKSwKKyAgICAgQygyYjlhZGM4N2EwNDUwYTQ2KSwgQygx
OTJjMjlhOWNmYzAwYWFkKSwgQyg5ZmQ3MzNmMWQ4NGE1OWQ5KSwKKyAgICAgQyhkODZiZDVjOTgz
OWFjZTE1KSwgQyhhZjIwYjU3MzAzMTcyODc2KSwgQyg5ZjYzY2I3MTYxYjUzNjRjKSwKKyAgICAg
Qyg1ODRjZmQ2Zil9LAorICAgIHtDKDg5NTVlZjA3NjMxZTNiY2MpLCBDKDdkNzA5NjVlYTM5MjZm
ODMpLCBDKDM5YWVkNDEzNGY4YjJkYjYpLAorICAgICBDKDg4MmVmYzI1NjE3MTVhOWMpLCBDKGVm
ODEzMmExOGE1NDAyMjEpLCBDKGIyMGEzYzg3YThjMjU3YzEpLAorICAgICBDKGY1NDFiODYyOGZh
ZDZjMjMpLCBDKDg4MmVmYzI1NjE3MTVhOWMpLCBDKGVmODEzMmExOGE1NDAyMjEpLAorICAgICBD
KGIyMGEzYzg3YThjMjU3YzEpLCBDKGY1NDFiODYyOGZhZDZjMjMpLCBDKDk1NTJhZWQ1N2E2ZTA0
NjcpLAorICAgICBDKDRkOWZkZDU2ODY3NjExYTcpLCBDKGMzMzAyNzliZjIzYjllYWIpLCBDKDQ0
ZGJiYWVhMmZjYjhlYmEpLAorICAgICBDKDhmOWJiYzMzKX0sCisgICAge0MoYWQ2MTFjNjA5Y2Zi
ZTQxMiksIEMoZDNjMDBiMThiZjI1Mzg3NyksIEMoOTBiMjE3MmUxZjNkMGJmZCksCisgICAgIEMo
MzcxYTk4YjJjYjA4NDg4MyksIEMoMzNhMjg4NmVlOWYwMDY2MyksIEMoYmU5NTY4ODE4ZWQ2ZTZi
ZCksCisgICAgIEMoZjI0NGEwZmEyNjczNDY5YSksIEMoMzcxYTk4YjJjYjA4NDg4MyksIEMoMzNh
Mjg4NmVlOWYwMDY2MyksCisgICAgIEMoYmU5NTY4ODE4ZWQ2ZTZiZCksIEMoZjI0NGEwZmEyNjcz
NDY5YSksIEMoYjQ0NzA1MGJkM2U1NTllOSksCisgICAgIEMoZDNiNjk1ZGFlN2ExMzM4MyksIEMo
ZGVkMGJiNjViZTQ3MTE4OCksIEMoY2EzYzdhMmI3ODkyMmNhZSksCisgICAgIEMoZDc2NDBkOTUp
fSwKKyAgICB7QyhkNTMzOWFkYzI5NWQ1ZDY5KSwgQyhiNjMzY2MxZGNiOGI1ODZhKSwgQyhlZTg0
MTg0Y2Y1YjFhZWFmKSwKKyAgICAgQyg4OWYzYWFiOTlhZmJkNjM2KSwgQyhmNDIwZTAwNGY4MTQ4
YjlhKSwgQyg2ODE4MDczZmFhNzk3YzdjKSwKKyAgICAgQyhkZDNiNGUyMWNiYmY0MmNhKSwgQyg4
OWYzYWFiOTlhZmJkNjM2KSwgQyhmNDIwZTAwNGY4MTQ4YjlhKSwKKyAgICAgQyg2ODE4MDczZmFh
Nzk3YzdjKSwgQyhkZDNiNGUyMWNiYmY0MmNhKSwgQyg2YTJiN2RiMjYxMTY0ODQ0KSwKKyAgICAg
QyhjYmVhZDYzZDE4OTU4NTJhKSwgQyg5M2QzN2UxZWFlMDVlMmY5KSwgQyg1ZDA2ZGIyNzAzZmJj
M2FlKSwgQygzZDEyYTJiKX0sCisgICAge0MoNDBkMGFlZmY1MjEzNzVhOCksIEMoNzdiYTFhZDdl
Y2ViZDUwNiksIEMoNTQ3YzZmMWE3ZDlkZjQyNyksCisgICAgIEMoMjFjMmJlMDk4MzI3ZjQ5Yiks
IEMoN2UwMzUwNjVhYzdiYmVmNSksIEMoNmQ3MzQ4ZTYzMDIzZmIzNSksCisgICAgIEMoOWQ0Mjdk
YzFiNjdjMzgzMCksIEMoMjFjMmJlMDk4MzI3ZjQ5YiksIEMoN2UwMzUwNjVhYzdiYmVmNSksCisg
ICAgIEMoNmQ3MzQ4ZTYzMDIzZmIzNSksIEMoOWQ0MjdkYzFiNjdjMzgzMCksIEMoNGUzZDAxOGE0
Mzg1ODM0MSksCisgICAgIEMoY2Y5MjRiYjQ0ZDZiNDNjNSksIEMoNDYxOGI2YTI2ZTM0NDZhZSks
IEMoNTRkMzAxM2ZhYzNlZDQ2OSksCisgICAgIEMoYWFlYWZlZDApfSwKKyAgICB7Qyg4YjJkNTRh
ZTFhM2RmNzY5KSwgQygxMWU3YWRhZWUzMjE2Njc5KSwgQygzNDgzNzgxZWZjNTYzZTAzKSwKKyAg
ICAgQyg5ZDA5N2RkMzE1MmFiMTA3KSwgQyg1MWUyMWQyNDEyNmU4NTYzKSwgQyhjYmE1NmNhYzg4
NGExMzU0KSwKKyAgICAgQygzOWFiYjFiNTk1ZjBhOTc3KSwgQyg5ZDA5N2RkMzE1MmFiMTA3KSwg
Qyg1MWUyMWQyNDEyNmU4NTYzKSwKKyAgICAgQyhjYmE1NmNhYzg4NGExMzU0KSwgQygzOWFiYjFi
NTk1ZjBhOTc3KSwgQyg4MWU2ZGQxYzExMDk4NDhmKSwKKyAgICAgQygxNjQ0YjIwOTgyNmQ3YjE1
KSwgQyg2YWM2N2U0ZTRiNDgxMmYwKSwgQyhiM2E5ZjU2MjJjOTM1YmY3KSwKKyAgICAgQyg5NWI5
YjgxNCl9LAorICAgIHtDKDk5YzE3NTgxOWI0ZWFlMjgpLCBDKDkzMmU4ZmY5ZjdhNDAwNDMpLCBD
KGVjNzhkY2FiMDdjYTlmN2MpLAorICAgICBDKGMxYTc4YjgyYmE4MTViNzQpLCBDKDQ1OGNiZGZj
ODJlYjMyMmEpLCBDKDE3ZjRhMTkyMzc2ZWQ4ZDcpLAorICAgICBDKDZmOWU5Mjk2OGJjOGNjZWYp
LCBDKGMxYTc4YjgyYmE4MTViNzQpLCBDKDQ1OGNiZGZjODJlYjMyMmEpLAorICAgICBDKDE3ZjRh
MTkyMzc2ZWQ4ZDcpLCBDKDZmOWU5Mjk2OGJjOGNjZWYpLCBDKDkzZTA5OGMzMzNiMzk5MDUpLAor
ICAgICBDKGQ1OWIxY2FjZTQ0YjdmZGMpLCBDKGY3YTY0ZWQ3OGM2NGM3YzUpLCBDKDdjNmVjYTVk
ZDg3ZWMxY2UpLAorICAgICBDKDQ1ZmJlNjZlKX0sCisgICAge0MoMmE0MTgzMzU3NzliODJmYyks
IEMoYWYwMjk1OTg3ODQ5YTc2YiksIEMoYzEyYmM1ZmYwMjEzZjQ2ZSksCisgICAgIEMoNWFlZWFk
OGQ2Y2IyNWJiOSksIEMoNzM5MzE1Zjc3NDNlYzNmZiksIEMoOWFiNDhkMjcxMTFkMmRjYyksCisg
ICAgIEMoNWI4N2JkMzVhOTc1OTI5YiksIEMoNWFlZWFkOGQ2Y2IyNWJiOSksIEMoNzM5MzE1Zjc3
NDNlYzNmZiksCisgICAgIEMoOWFiNDhkMjcxMTFkMmRjYyksIEMoNWI4N2JkMzVhOTc1OTI5Yiks
IEMoYzNkZDhkNmQ5NWE0NmJiMyksCisgICAgIEMoN2JmOTA5MzIxNWE0ZjQ4MyksIEMoY2I1NTdk
NmVkODQyODViZCksIEMoZGFmNTg0MjJmMjYxZmRiNSksCisgICAgIEMoYjRiYWE3YTgpfSwKKyAg
ICB7QygzYjFmYzZhM2QyNzllNjdkKSwgQyg3MGVhMWU0OWMyMjYzOTYpLCBDKDI1NTA1YWRjZjEw
NDY5N2MpLAorICAgICBDKGJhMWZmYmEyOWYwMzY3YWEpLCBDKGEyMGJlYzFkZDE1YThiNmMpLCBD
KGU5YmY2MWQyZGFiMGY3NzQpLAorICAgICBDKGY0ZjM1YmY1ODcwYTA0OWMpLCBDKGJhMWZmYmEy
OWYwMzY3YWEpLCBDKGEyMGJlYzFkZDE1YThiNmMpLAorICAgICBDKGU5YmY2MWQyZGFiMGY3NzQp
LCBDKGY0ZjM1YmY1ODcwYTA0OWMpLCBDKDI2Nzg3ZWZhNWI5MjM4NSksCisgICAgIEMoM2Q5NTMz
NTkwY2UzMGI1OSksIEMoYTRkYTNlNDA1MzBhMDFkNCksIEMoNjM5NWRlYWVmYjcwMDY3YyksCisg
ICAgIEMoODNlOTYyZmUpfSwKKyAgICB7QyhkOTdlYWNkZjEwZjFjM2M5KSwgQyhiNTRmNDY1NDA0
M2EzNmUwKSwgQyhiMTI4ZjZlYjA5ZDEyMzQpLAorICAgICBDKGQ4YWQ3ZWM4NGE5YzlhYTIpLCBD
KGUyNTZjZmZlZDExZjY5ZTYpLCBDKDJjZjY1ZTQ5NThhZDViZGEpLAorICAgICBDKGNmYmY5YjAz
MjQ1OTg5YTcpLCBDKGQ4YWQ3ZWM4NGE5YzlhYTIpLCBDKGUyNTZjZmZlZDExZjY5ZTYpLAorICAg
ICBDKDJjZjY1ZTQ5NThhZDViZGEpLCBDKGNmYmY5YjAzMjQ1OTg5YTcpLCBDKDlmYTUxZTY2ODZj
ZjQ0NDQpLAorICAgICBDKDk0MjVjMTE3YTM0NjA5ZDUpLCBDKGIyNWY3ZTJjNmYzMGU5NiksIEMo
ZWE1NDc3YzNmMmI1YWZkMSksIEMoYWFjMzUzMWMpfSwKKyAgICB7QygyOTNhNWMxYzRlMjAzY2Q0
KSwgQyg2YjMzMjlmMWMxMzBjZWZlKSwgQyhmMmUzMmY4ZWM3NmFhYzkxKSwKKyAgICAgQygzNjFl
MGE2MmM4MTg3YmZmKSwgQyg2MDg5OTcxYmI4NGQ3MTMzKSwgQyg5M2RmNzc0MTU4OGRkNTBiKSwK
KyAgICAgQyhjMmE5YjZhYmNkMWQ4MGIxKSwgQygzNjFlMGE2MmM4MTg3YmZmKSwgQyg2MDg5OTcx
YmI4NGQ3MTMzKSwKKyAgICAgQyg5M2RmNzc0MTU4OGRkNTBiKSwgQyhjMmE5YjZhYmNkMWQ4MGIx
KSwgQyg0ZDJmODY4NjlkNzliYzU5KSwKKyAgICAgQyg4NWNkMjRkOGFhNTcwZmYpLCBDKGIwZGNm
NmVmMGU5NGJiYjUpLCBDKDIwMzdjNjlhYTdhNzg0MjEpLCBDKDJiMWRiN2NjKX0sCisgICAge0Mo
NDI5MGUwMThmZmFlZGRlNyksIEMoYTE0OTQ4NTQ1NDE4ZWI1ZSksIEMoNzJkODUxYjIwMjI4NDYz
NiksCisgICAgIEMoNGVjMDJmM2QyZjJiMjNmMiksIEMoYWIzNTgwNzA4YWE3YzMzOSksIEMoY2Rj
ZTA2NmZiYWIzZjY1KSwKKyAgICAgQyhkOGVkM2VjZjNjNzY0N2I5KSwgQyg0ZWMwMmYzZDJmMmIy
M2YyKSwgQyhhYjM1ODA3MDhhYTdjMzM5KSwKKyAgICAgQyhjZGNlMDY2ZmJhYjNmNjUpLCBDKGQ4
ZWQzZWNmM2M3NjQ3YjkpLCBDKDZkMjIwNGIzZTMxZjM0NGEpLAorICAgICBDKDYxYTRkODdmODBl
ZTYxZDcpLCBDKDQ0NmM0M2RiZWQ0YjcyOGYpLCBDKDczMTMwYWM5NGY1ODc0N2UpLAorICAgICBD
KGNmMDBjZDMxKX0sCisgICAge0MoZjkxOWE1OWNiZGU4YmYyZiksIEMoYTU2ZDA0MjAzYjJkYzVh
NSksIEMoMzhiMDY3NTNhYzg3MWU0OCksCisgICAgIEMoYzJjOWZjNjM3ZGJkZmNmYSksIEMoMjky
YWI4MzA2ZDE0OWQ3NSksIEMoN2Y0MzZiODc0YjlmZmMwNyksCisgICAgIEMoYTViNTZiMDEyOTIx
OGI4MCksIEMoYzJjOWZjNjM3ZGJkZmNmYSksIEMoMjkyYWI4MzA2ZDE0OWQ3NSksCisgICAgIEMo
N2Y0MzZiODc0YjlmZmMwNyksIEMoYTViNTZiMDEyOTIxOGI4MCksIEMoOTE4OGY3YmRjNDdlYzA1
MCksCisgICAgIEMoY2ZlOTM0NWQwM2ExNWFkZSksIEMoNDBiNTIwZmIyNzUwYzQ5ZSksIEMoYzJl
ODNkMzQzOTY4YWYyZSksCisgICAgIEMoN2QzYzQzYjgpfSwKKyAgICB7QygxZDcwYTNmNTUyMWQ3
ZmE0KSwgQyhmYjk3YjNmZGM1ODkxOTY1KSwgQygyOTlkNDliYmJlMzUzNWFmKSwKKyAgICAgQyhl
MWE4Mjg2YTdkNjc5NDZlKSwgQyg1MmJkOTU2ZjA0N2IyOTgpLCBDKGNiZDc0MzMyZGQ0MjA0YWMp
LAorICAgICBDKDEyYjViZTc3NTI3MjE5NzYpLCBDKGUxYTgyODZhN2Q2Nzk0NmUpLCBDKDUyYmQ5
NTZmMDQ3YjI5OCksCisgICAgIEMoY2JkNzQzMzJkZDQyMDRhYyksIEMoMTJiNWJlNzc1MjcyMTk3
NiksIEMoMjc4NDI2ZTI3ZjYyMDRiNiksCisgICAgIEMoOTMyY2E3YTdjZDYxMDE4MSksIEMoNDE2
NDczMjFmMGE1OTE0ZCksIEMoNDhmNGFhNjFhMGFlODBkYiksCisgICAgIEMoY2JkNWZhYzYpfSwK
KyAgICB7Qyg2YWY5OGQ3YjY1NmQwZDdjKSwgQyhkMmU5OWFlOTZkNmI1YzBjKSwgQyhmNjNiZDE2
MDNlZjgwNjI3KSwKKyAgICAgQyhiZGU1MTAzM2FjMDQxM2Y4KSwgQyhiYzAyNzJmNjkxYWVjNjI5
KSwgQyg2MjA0MzMyNjUxYmViYzQ0KSwKKyAgICAgQygxY2JmMDBkZTAyNmVhOWJkKSwgQyhiZGU1
MTAzM2FjMDQxM2Y4KSwgQyhiYzAyNzJmNjkxYWVjNjI5KSwKKyAgICAgQyg2MjA0MzMyNjUxYmVi
YzQ0KSwgQygxY2JmMDBkZTAyNmVhOWJkKSwgQyhiOWM3ZWQ2YTc1ZjNmZjFlKSwKKyAgICAgQyg3
ZTMxMGI3NmE1ODA4ZTRmKSwgQyhhY2JiZDFhYWQ1NTMxODg1KSwgQyhmYzI0NWYyNDczYWRlYjlj
KSwKKyAgICAgQyg3NmQwZmVjNCl9LAorICAgIHtDKDM5NWI3YThhZGI5NmFiNzUpLCBDKDU4MmRm
NzE2NWIyMGY0YSksIEMoZTUyYmQzMGU5ZmY2NTdmOSksCisgICAgIEMoNmM3MTA2NDk5NmNiZWM4
YiksIEMoMzUyYzUzNWVkZWVmY2I4OSksIEMoYWM3ZjBhYmExNWNkNWVjZCksCisgICAgIEMoM2Fi
YTFjYTgzNTNlNWM2MCksIEMoNmM3MTA2NDk5NmNiZWM4YiksIEMoMzUyYzUzNWVkZWVmY2I4OSks
CisgICAgIEMoYWM3ZjBhYmExNWNkNWVjZCksIEMoM2FiYTFjYTgzNTNlNWM2MCksIEMoNWMzMGEy
ODhhODBjZTY0NiksCisgICAgIEMoYzI5NDA0ODhiNjYxNzY3NCksIEMoOTI1ZjhjYzY2YjM3MDU3
NSksIEMoYWE2NWQxMjgzYjliYjBlZiksCisgICAgIEMoNDA1ZTM0MDIpfSwKKyAgICB7QygzODIy
ZGQ4MmM3ZGYwMTJmKSwgQyhiOTAyOWI0MGJkOWYxMjJiKSwgQyhmZDI1Yjk4ODQ2ODI2NmM0KSwK
KyAgICAgQyg0M2U0N2JkNWJhYjFlMGVmKSwgQyg0YTcxZjM2MzQyMWYyODJmKSwgQyg4ODBiMmYz
MmEyYjRlMjg5KSwKKyAgICAgQygxMjk5ZDRlZGE5ZDNlYWRmKSwgQyg0M2U0N2JkNWJhYjFlMGVm
KSwgQyg0YTcxZjM2MzQyMWYyODJmKSwKKyAgICAgQyg4ODBiMmYzMmEyYjRlMjg5KSwgQygxMjk5
ZDRlZGE5ZDNlYWRmKSwgQyhkNzEzYTQwMjI2ZjU1NjQpLAorICAgICBDKDRkOGQzNGZlZGM3Njk0
MDYpLCBDKGE4NTAwMWIyOWNkOWNhYzMpLCBDKGNhZTkyMzUyYTQxZmQyYjApLAorICAgICBDKGM3
MzJjNDgxKX0sCisgICAge0MoNzlmN2VmZTRhODBiOTUxYSksIEMoZGQzYTNmZGRmYzZjOWM0MSks
IEMoYWI0YzgxMmY5ZTI3YWE0MCksCisgICAgIEMoODMyOTU0ZWM5ZDBkZTMzMyksIEMoOTRjMzkw
YWE5YmNiNmI4YSksIEMoZjNiMzJhZmRjMWYwNGY4MiksCisgICAgIEMoZDIyOWMzYjcyZTRiOWE3
NCksIEMoODMyOTU0ZWM5ZDBkZTMzMyksIEMoOTRjMzkwYWE5YmNiNmI4YSksCisgICAgIEMoZjNi
MzJhZmRjMWYwNGY4MiksIEMoZDIyOWMzYjcyZTRiOWE3NCksIEMoMWQxMTg2MGQ3ZWQ2MjRhNiks
CisgICAgIEMoY2FkZWUyMGIzNDQxYjk4NCksIEMoNzUzMDcwNzliZjMwNmY3YiksIEMoODc5MDJh
YTNiOTc1M2JhNCksCisgICAgIEMoYThkMTIzYzkpfSwKKyAgICB7QyhhZTZlNTlmNWYwNTU5MjFh
KSwgQyhlOWQ5YjdiZjY4ZTgyKSwgQyg1Y2U0ZTRhNWIyNjljYzU5KSwKKyAgICAgQyg0OTYwMTEx
Nzg5NzI3NTY3KSwgQygxNDliOGEzN2M3MTI1YWI2KSwgQyg3OGM3YTEzYWI5NzQ5MzgyKSwKKyAg
ICAgQygxYzYxMTMxMjYwY2ExNTFhKSwgQyg0OTYwMTExNzg5NzI3NTY3KSwgQygxNDliOGEzN2M3
MTI1YWI2KSwKKyAgICAgQyg3OGM3YTEzYWI5NzQ5MzgyKSwgQygxYzYxMTMxMjYwY2ExNTFhKSwg
QygxZTkzMjc2YjM1YzMwOWEwKSwKKyAgICAgQygyNjE4ZjU2MjMwYWNkZTU4KSwgQyhhZjYxMTMw
YTE4ZTRmZWJmKSwgQyg3MTQ1ZGViMThlODliZWZlKSwKKyAgICAgQygxZTgwYWQ3ZCl9LAorICAg
IHtDKDg5NTlkYmJmMDczODdkMzYpLCBDKGI0NjU4YWZjZTQ4ZWEzNWQpLCBDKDhmM2Y4MjQzN2Q4
Y2I4ZDYpLAorICAgICBDKDY1NjZkNzQ5NTQ5ODZiYTUpLCBDKDk5ZDUyMzVjYzgyNTE5YTcpLCBD
KDI1N2EyMzgwNWMyZDgyNSksCisgICAgIEMoYWQ3NWNjYjk2OGU5MzQwMyksIEMoNjU2NmQ3NDk1
NDk4NmJhNSksIEMoOTlkNTIzNWNjODI1MTlhNyksCisgICAgIEMoMjU3YTIzODA1YzJkODI1KSwg
QyhhZDc1Y2NiOTY4ZTkzNDAzKSwgQyhiNDViZDRjZjc4ZTExZjdmKSwKKyAgICAgQyg4MGM1NTM2
YmRjNDg3OTgzKSwgQyhhNGZkNzZlY2JmMDE4YzhhKSwgQygzYjlkYWM3OGE3YTcwZDQzKSwKKyAg
ICAgQyg1MmFlYjg2Myl9LAorICAgIHtDKDQ3Mzk2MTMyMzQyNzhhNDkpLCBDKDk5ZWE1YmNkMzQw
YmY2NjMpLCBDKDI1ODY0MDkxMmU3MTJiMTIpLAorICAgICBDKGM4YTI4Mjc0MDQ5OTE0MDIpLCBD
KDdlZTVlNzg1NTBmMDI2NzUpLCBDKDJlYzUzOTUyZGI1YWM2NjIpLAorICAgICBDKDE1MjY0MDVh
OWRmNjc5NGIpLCBDKGM4YTI4Mjc0MDQ5OTE0MDIpLCBDKDdlZTVlNzg1NTBmMDI2NzUpLAorICAg
ICBDKDJlYzUzOTUyZGI1YWM2NjIpLCBDKDE1MjY0MDVhOWRmNjc5NGIpLCBDKGVkZGM2MjcxMTcw
YzVlMWYpLAorICAgICBDKGY1YTg1Zjk4NjAwMWQ5ZDYpLCBDKDk1NDI3YzY3N2JmNThkNTgpLCBD
KDUzZWQ2NjZkZmE4NWNiMjkpLAorICAgICBDKGVmN2MwYzE4KX0sCisgICAge0MoNDIwZTZjOTI2
YmM1NDg0MSksIEMoOTZkYmJmNmY0ZTdjNzVjZCksIEMoZDhkNDBmYTcwYzNjNjdiYiksCisgICAg
IEMoM2VkYmMxMGU0YmZlZTkxYiksIEMoZjBkNjgxMzA0YzI4ZWY2OCksIEMoNzdlYTYwMjAyOWFh
YWY5YyksCisgICAgIEMoOTBmMDcwYmQyNGM4NDgzYyksIEMoM2VkYmMxMGU0YmZlZTkxYiksIEMo
ZjBkNjgxMzA0YzI4ZWY2OCksCisgICAgIEMoNzdlYTYwMjAyOWFhYWY5YyksIEMoOTBmMDcwYmQy
NGM4NDgzYyksIEMoMjhiYzhlNDFlMDhjZWI4NiksCisgICAgIEMoMWViNTZlNDhhNjU2OTFlZiks
IEMoOWZlYTUzMDFjOTIwMmYwZSksIEMoM2ZjYjY1MDkxYWE5ZjEzNSksCisgICAgIEMoYjZhZDRi
NjgpfSwKKyAgICB7QyhjODYwMWJhYjU2MWJjMWI3KSwgQyg3MmIyNjI3MmEwZmY4NjlhKSwgQyg1
NmZkZmM5ODZkNmJjM2M0KSwKKyAgICAgQyg4MzcwNzczMGNhZDcyNWQ0KSwgQyhjOWNhODhjM2E3
Nzk2NzRhKSwgQyhlMWM2OTZmYmJkOWFhOTMzKSwKKyAgICAgQyg3MjNmM2JhYWIxYzE3YTQ1KSwg
Qyg4MzcwNzczMGNhZDcyNWQ0KSwgQyhjOWNhODhjM2E3Nzk2NzRhKSwKKyAgICAgQyhlMWM2OTZm
YmJkOWFhOTMzKSwgQyg3MjNmM2JhYWIxYzE3YTQ1KSwgQyhmODJhYmM3YTFkODUxNjgyKSwKKyAg
ICAgQygzMDY4MzgzNjgxOGU4NTdkKSwgQyg3OGJmYTNlODlhNWFiMjNmKSwgQyg2OTI4MjM0NDgy
YjMxODE3KSwKKyAgICAgQyhjMWU0NmIxNyl9LAorICAgIHtDKGIyZDI5NDkzMWEwZTIwZWIpLCBD
KDI4NGZmZDlhMDgxNWJjMzgpLCBDKDFmOGExMDNhYWM5YmJlNiksCisgICAgIEMoMWVmOGU5OGUx
ZWE1NzI2OSksIEMoNTk3MTExNjI3MmY0NWE4YiksIEMoMTg3YWQ2OGNlOTVkOGVhYyksCisgICAg
IEMoZTk0ZTkzZWU0ZThlY2FhNiksIEMoMWVmOGU5OGUxZWE1NzI2OSksIEMoNTk3MTExNjI3MmY0
NWE4YiksCisgICAgIEMoMTg3YWQ2OGNlOTVkOGVhYyksIEMoZTk0ZTkzZWU0ZThlY2FhNiksIEMo
YTBmZjJhNTg2MTE4MzhiNSksCisgICAgIEMoYjAxZTAzODQ5YmZiYWU2ZiksIEMoZDA4MWUyMDJl
MjhlYTNhYiksIEMoNTE4MzZiY2VlNzYyYmYxMyksCisgICAgIEMoNTdiOGRmMjUpfSwKKyAgICB7
Qyg3OTY2ZjUzYzM3YjZjNmQ3KSwgQyg4ZTZhYmNmYjNhYTJiODhmKSwgQyg3ZjJlNWUwNzI0ZTVm
MzQ1KSwKKyAgICAgQygzZWViNjBjM2Y1ZjgxNDNkKSwgQyhhMjVhZWMwNWM0MjJhMjRmKSwgQyhi
MDI2YjAzYWQzY2NhNGRiKSwKKyAgICAgQyhlNmUwMzAwMjhjYzAyYTAyKSwgQygzZWViNjBjM2Y1
ZjgxNDNkKSwgQyhhMjVhZWMwNWM0MjJhMjRmKSwKKyAgICAgQyhiMDI2YjAzYWQzY2NhNGRiKSwg
QyhlNmUwMzAwMjhjYzAyYTAyKSwgQygxNmZlNjc5MzM4YjM0YmZjKSwKKyAgICAgQyhjMWJlMzg1
YjVjOGE5ZGU0KSwgQyg2NWFmNWRmNjU2NzUzMGViKSwgQyhlZDNiMzAzZGY0ZGM2MzM1KSwKKyAg
ICAgQyhlOWZhMzZkNil9LAorICAgIHtDKGJlOWJiMGFiZDAzYjczNjgpLCBDKDEzYmNhOTNhMzAz
MWJlNTUpLCBDKGU4NjRmNGY1MmI1NWI0NzIpLAorICAgICBDKDM2YThkMTNhMmNiYjA5MzkpLCBD
KDI1NGFjNzM5MDc0MTMyMzApLCBDKDczNTIwZDE1MjIzMTVhNzApLAorICAgICBDKDhjOWZkYjVj
ZjFlMWE1MDcpLCBDKDM2YThkMTNhMmNiYjA5MzkpLCBDKDI1NGFjNzM5MDc0MTMyMzApLAorICAg
ICBDKDczNTIwZDE1MjIzMTVhNzApLCBDKDhjOWZkYjVjZjFlMWE1MDcpLCBDKGIzNjQwNTcwYjky
Njg4NiksCisgICAgIEMoZmJhMjM0NGVlODdmN2JhYiksIEMoZGU1NzM0MWFiNDQ4ZGYwNSksIEMo
Mzg1NjEyZWUwOTRmYTk3NyksCisgICAgIEMoOGY4ZGFlZmMpfSwKKyAgICB7QyhhMDhkMTI4YzVm
MTY0OWJlKSwgQyhhODE2NmMzZGJiZTE5YWFkKSwgQyhjYjlmOTE0ZjgyOWVjNjJjKSwKKyAgICAg
Qyg1YjJiN2NhODU2ZmFkMWMzKSwgQyg4MDkzMDIyZDY4MmUzNzVkKSwgQyhlYTVkMTYzYmE3ZWEy
MzFmKSwKKyAgICAgQyhkNjE4MWQwMTJjMGRlNjQxKSwgQyg1YjJiN2NhODU2ZmFkMWMzKSwgQyg4
MDkzMDIyZDY4MmUzNzVkKSwKKyAgICAgQyhlYTVkMTYzYmE3ZWEyMzFmKSwgQyhkNjE4MWQwMTJj
MGRlNjQxKSwgQyhlN2Q0MGQwYWI4YjA4MTU5KSwKKyAgICAgQygyZTgyMzIwZjUxYjNhNjdlKSwg
QygyN2MyZTM1NmVhMGI2M2EzKSwgQyg1ODg0MmQwMWEyYjFkMDc3KSwgQyg2ZTFiYjdlKX0sCisg
ICAge0MoN2MzODZmMGZmZTA0NjVhYyksIEMoNTMwNDE5YzlkODQzZGJmMyksIEMoNzQ1MGUzYTRm
NzJiOGQ4YyksCisgICAgIEMoNDhiMjE4ZTNiNzIxODEwZCksIEMoZDM3NTdhYzg2MDliYzdmYyks
IEMoMTExYmEwMmE4OGFlZmM4KSwKKyAgICAgQyhlODYzNDMxMzdkM2JmYzJhKSwgQyg0OGIyMThl
M2I3MjE4MTBkKSwgQyhkMzc1N2FjODYwOWJjN2ZjKSwKKyAgICAgQygxMTFiYTAyYTg4YWVmYzgp
LCBDKGU4NjM0MzEzN2QzYmZjMmEpLCBDKDQ0YWQyNmI1MTY2MWI1MDcpLAorICAgICBDKGRiMTI2
ODY3MDI3NGY1MWUpLCBDKDYyYTVlNzViZWFlODc1ZjMpLCBDKGUyNjZlN2E0NGM1ZjI4YzYpLAor
ICAgICBDKGZkMDA3NmYwKX0sCisgICAge0MoYmIzNjIwOTRlN2VmNGY4KSwgQyhmZjNjMmE0ODk2
NmY5NzI1KSwgQyg1NTE1MjgwM2FjZDRhN2ZlKSwKKyAgICAgQygxNTc0N2Q4YzUwNWZmZDAwKSwg
Qyg0MzhhMTVmMzkxMzEyY2Q2KSwgQyhlNDZjYTYyYzI2ZDgyMWY1KSwKKyAgICAgQyhiZTc4ZDc0
YzlmNzljYjQ0KSwgQygxNTc0N2Q4YzUwNWZmZDAwKSwgQyg0MzhhMTVmMzkxMzEyY2Q2KSwKKyAg
ICAgQyhlNDZjYTYyYzI2ZDgyMWY1KSwgQyhiZTc4ZDc0YzlmNzljYjQ0KSwgQyhhOGFhMTlmM2Fh
NTlmMDlhKSwKKyAgICAgQyhlZmZiM2NkZGFiMmM5MjY3KSwgQyhkNzhlNDFhZDk3Y2IxNmE1KSwg
QyhhY2U2ODIxNTEzNTI3ZDMyKSwKKyAgICAgQyg4OTliMTdiNil9LAorICAgIHtDKGNkODBkZWEy
NDMyMWVlYTQpLCBDKDUyYjRmZGM4MTMwYzJiMTUpLCBDKGYzZWExMDBiMTU0YmZiODIpLAorICAg
ICBDKGQ5Y2NlZjFkNGJlNDY5ODgpLCBDKDVlZGUwYzRlMzgzYTVlNjYpLCBDKGRhNjk2ODM3MTZh
NTRkMWUpLAorICAgICBDKGJmYzNmZGYwMmQyNDJkMjQpLCBDKGQ5Y2NlZjFkNGJlNDY5ODgpLCBD
KDVlZGUwYzRlMzgzYTVlNjYpLAorICAgICBDKGRhNjk2ODM3MTZhNTRkMWUpLCBDKGJmYzNmZGYw
MmQyNDJkMjQpLCBDKDIwZWQzMDI3NDY1MWIzZjUpLAorICAgICBDKDRjNjU5ODI0MTY5ZTg2YzYp
LCBDKDYzNzIyNmRhZTViNTJhMGUpLCBDKDdlMDUwZGJkMWM3MWRjN2YpLAorICAgICBDKGUzZTg0
ZTMxKX0sCisgICAge0MoZDU5OWEwNDEyNTM3MmMzYSksIEMoMzEzMTM2YzU2YTU2ZjM2MyksIEMo
MWU5OTNjMzY3NzYyNTgzMiksCisgICAgIEMoMjg3MGE5OWM3NmE1ODdhNCksIEMoOTlmNzRjYzBi
MTgyZGRhNCksIEMoOGE1ZTg5NWIyZjBjYTdiNiksCisgICAgIEMoM2Q3ODg4MmQ1ZTBiYjFkYyks
IEMoMjg3MGE5OWM3NmE1ODdhNCksIEMoOTlmNzRjYzBiMTgyZGRhNCksCisgICAgIEMoOGE1ZTg5
NWIyZjBjYTdiNiksIEMoM2Q3ODg4MmQ1ZTBiYjFkYyksIEMoZjQ2NjEyMzczMmEzZTI1ZSksCisg
ICAgIEMoYWNhNWU1OTcxNmE0MGU1MCksIEMoMjYxZDJlNzM4M2QwZTY4NiksIEMoY2U5MzYyZDZh
NDJjMTVhNyksCisgICAgIEMoZWVmNzliNmIpfSwKKyAgICB7QyhkYmJmNTQxZTlkZmRhMGEpLCBD
KDE0NzlmY2ViNmRiNGY4NDQpLCBDKDMxYWI1NzZiNTkwNjI1MzQpLAorICAgICBDKGEzMzM1YzQx
NzY4N2NmM2EpLCBDKDkyZmYxMTRhYzQ1Y2RhNzUpLCBDKGMzYjhhNjI3Mzg0ZjEzYjUpLAorICAg
ICBDKGM0ZjI1ZGUzM2RlOGIzZjcpLCBDKGEzMzM1YzQxNzY4N2NmM2EpLCBDKDkyZmYxMTRhYzQ1
Y2RhNzUpLAorICAgICBDKGMzYjhhNjI3Mzg0ZjEzYjUpLCBDKGM0ZjI1ZGUzM2RlOGIzZjcpLCBD
KGVhY2JmNTIwNTc4YzU5NjQpLAorICAgICBDKDRjYjE5YzVhYjI0ZjMyMTUpLCBDKGU3ZDhhNmY2
N2YwYzZlNyksIEMoMzI1YzI0MTNlYjc3MGFkYSksIEMoODY4ZTMzMTUpfSwKKyAgICB7QyhjMmVl
MzI4OGJlNGZlMmJmKSwgQyhjNjVkMmY1ZGRmMzJiOTIpLCBDKGFmNmVjZGYxMjFiYTU0ODUpLAor
ICAgICBDKGM3Y2Q0OGY3YWJmMWZlNTkpLCBDKGNlNjAwNjU2YWNlNmY1M2EpLCBDKDhhOTRhNDM4
MWIxMDhiMzQpLAorICAgICBDKGY5ZDEyNzZjNjRiZjU5ZmIpLCBDKGM3Y2Q0OGY3YWJmMWZlNTkp
LCBDKGNlNjAwNjU2YWNlNmY1M2EpLAorICAgICBDKDhhOTRhNDM4MWIxMDhiMzQpLCBDKGY5ZDEy
NzZjNjRiZjU5ZmIpLCBDKDIxOWNlNzBmZjVhMTEyYTUpLAorICAgICBDKGU2MDI2YzU3NmUyZDI4
ZDcpLCBDKGI4ZTQ2N2YyNTAxNWUzYTYpLCBDKDk1MGNiOTA0ZjM3YWY3MTApLAorICAgICBDKDQ2
MzlhNDI2KX0sCisgICAge0MoZDg2NjAzY2VkMWVkNDczMCksIEMoZjlkZTcxOGFhYWRhNzcwOSks
IEMoZGI4Yjk3NTUxOTRjNjUzNSksCisgICAgIEMoZDgwM2UxZWVhZDQ3NjA0YyksIEMoYWQwMGY3
NjExOTcwYTcxYiksIEMoYmM1MDAzNmIxNmNlNzFmNSksCisgICAgIEMoYWZiYTk2MjEwYTJjYTdk
NiksIEMoZDgwM2UxZWVhZDQ3NjA0YyksIEMoYWQwMGY3NjExOTcwYTcxYiksCisgICAgIEMoYmM1
MDAzNmIxNmNlNzFmNSksIEMoYWZiYTk2MjEwYTJjYTdkNiksIEMoMjhmN2E3YmUxZDY3NjVmMCks
CisgICAgIEMoOTdiZDg4OGI5MzkzOGM2OCksIEMoNmFkNDFkMWI0MDdkZWQ0OSksIEMoYjliZmVj
MDk4ZGM1NDNlNCksCisgICAgIEMoZjMyMTM2NDYpfSwKKyAgICB7Qyg5MTUyNjNjNjcxYjI4ODA5
KSwgQyhhODE1Mzc4ZTdhZDc2MmZkKSwgQyhhYmVjNmRjOWI2NjlmNTU5KSwKKyAgICAgQyhkMTdj
OTI4YzUzNDI0NzdmKSwgQyg3NDUxMzBiNzk1MjU0YWQ1KSwgQyg4YzVkYjkyNmZlODhmOGJhKSwK
KyAgICAgQyg3NDJhOTVjOTUzZTZkOTc0KSwgQyhkMTdjOTI4YzUzNDI0NzdmKSwgQyg3NDUxMzBi
Nzk1MjU0YWQ1KSwKKyAgICAgQyg4YzVkYjkyNmZlODhmOGJhKSwgQyg3NDJhOTVjOTUzZTZkOTc0
KSwgQygyNzlkYjgwNTdiNWQzZTk2KSwKKyAgICAgQyg5ODE2ODQxMTU2NWI0ZWM0KSwgQyg1MGE3
MmM1NGZhMTEyNWZhKSwgQygyNzc2NmE2MzVkYjczNjM4KSwKKyAgICAgQygxN2YxNDhlOSl9LAor
ICAgIHtDKDJiNjdjZGQzOGMzMDdhNWUpLCBDKGNiMWQ0NWJiNWM5ZmUxYyksIEMoODAwYmFmMmEw
MmVjMThhZCksCisgICAgIEMoNjUzMWMxZmUzMmJjYjQxNyksIEMoOGM5NzBkOGRmOGNkYmViNCks
IEMoOTE3YmE1ZmM2N2U3MmI0MCksCisgICAgIEMoNGI2NWU0ZTI2M2UwYTQyNiksIEMoNjUzMWMx
ZmUzMmJjYjQxNyksIEMoOGM5NzBkOGRmOGNkYmViNCksCisgICAgIEMoOTE3YmE1ZmM2N2U3MmI0
MCksIEMoNGI2NWU0ZTI2M2UwYTQyNiksIEMoZTBkZTMzY2U4OGE4YjNhOSksCisgICAgIEMoZjhl
Zjk4YTQzN2UxNmIwOCksIEMoYTUxNjJjMGM3YzVmN2I2MiksIEMoZGJkYWM0MzM2MWIyYjg4MSks
CisgICAgIEMoYmZkOTQ4ODApfSwKKyAgICB7QygyZDEwNzQxOTA3M2I5Y2QwKSwgQyhhOTZkYjA3
NDBjZWY4ZjU0KSwgQyhlYzQxZWU5MWIzZWNkYzFiKSwKKyAgICAgQyhmZmUzMTk2NTRjOGU3ZWJj
KSwgQyg2YTY3YjhmMTNlYWQ1YTcyKSwgQyg2ZGQxMGEzNGY4MGQ1MzJmKSwKKyAgICAgQyg2ZTlj
ZmFlY2U5ZmJjYTQpLCBDKGZmZTMxOTY1NGM4ZTdlYmMpLCBDKDZhNjdiOGYxM2VhZDVhNzIpLAor
ICAgICBDKDZkZDEwYTM0ZjgwZDUzMmYpLCBDKDZlOWNmYWVjZTlmYmNhNCksIEMoYjQ0NjhlYjZh
MzBhYTdlOSksCisgICAgIEMoZTg3OTk1YmVlNDgzMjIyYSksIEMoZDAzNmMyYzkwYzYwOTM5MSks
IEMoODUzMzA2ZTgyZmEzMjI0NyksCisgICAgIEMoYmIxZmE3ZjMpfSwKKyAgICB7QyhmM2U5NDg3
ZWMwZTI2ZGZjKSwgQygxYWIxZjYzMjI0ZTgzN2ZhKSwgQygxMTk5ODNiYjVhODEyNWQ4KSwKKyAg
ICAgQyg4OTUwY2ZjZjRiZGY2MjJjKSwgQyg4ODQ3ZGNhODJlZmVlZjJmKSwgQyg2NDZiNzViMDI2
NzA4MTY5KSwKKyAgICAgQygyMWNhYjRiMTY4N2JkOGIpLCBDKDg5NTBjZmNmNGJkZjYyMmMpLCBD
KDg4NDdkY2E4MmVmZWVmMmYpLAorICAgICBDKDY0NmI3NWIwMjY3MDgxNjkpLCBDKDIxY2FiNGIx
Njg3YmQ4YiksIEMoMjQzYjQ4OWE5ZWFlNjIzMSksCisgICAgIEMoNWYzZTYzNGM0Yjc3OTg3Niks
IEMoZmY4YWJkMTU0OGVhZjY0NiksIEMoYzc5NjJmNWYwMTUxOTE0YiksIEMoODg4MTZiMSl9LAor
ICAgIHtDKDExNjA5ODdjOGZlODZmN2QpLCBDKDg3OWU2ZGIxNDgxZWI5MWIpLCBDKGQ3ZGNiODAy
YmZlNjg4NWQpLAorICAgICBDKDE0NDUzYjVjYzNkODIzOTYpLCBDKDRlZjcwMGMzM2VkMjc4YmMp
LCBDKDE2MzljNzJmZmMwMGQxMmUpLAorICAgICBDKGZiMTQwZWU2MTU1ZjcwMGQpLCBDKDE0NDUz
YjVjYzNkODIzOTYpLCBDKDRlZjcwMGMzM2VkMjc4YmMpLAorICAgICBDKDE2MzljNzJmZmMwMGQx
MmUpLCBDKGZiMTQwZWU2MTU1ZjcwMGQpLCBDKDJlNmI1Yzk2YTY2MjA4NjIpLAorICAgICBDKGEx
ZjEzNjk5OGNiZTE5YyksIEMoNzRlMDU4YTNiNmM1YTcxMiksIEMoOTNkY2Y2YmQzMzkyOGIxNyks
IEMoNWMyZmFlYjMpfSwKKyAgICB7QyhlYWI4MTEyYzU2MGI5NjdiKSwgQyg5N2Y1NTBiNThlODlk
YmFlKSwgQyg4NDZlZDUwNmQzMDQwNTFmKSwKKyAgICAgQygyNzZhYTM3NzQ0YjVhMDI4KSwgQyg4
YzEwODAwZWU5MGVhNTczKSwgQyhlNmU1N2QyYjMzYTFlMGI3KSwKKyAgICAgQyg5MWY4MzU2M2Nk
M2I5ZGRhKSwgQygyNzZhYTM3NzQ0YjVhMDI4KSwgQyg4YzEwODAwZWU5MGVhNTczKSwKKyAgICAg
QyhlNmU1N2QyYjMzYTFlMGI3KSwgQyg5MWY4MzU2M2NkM2I5ZGRhKSwgQyhhZmJiNDczOTU3MDcz
OGExKSwKKyAgICAgQyg0NDBiYTk4ZGE1ZDhmNjkpLCBDKGZkZTRlOWIwZWRhMjAzNTApLCBDKGU2
N2RmYTVhMjEzOGZhMSksIEMoNTFiNWZjNmYpfSwKKyAgICB7QygxYWRkY2YwMzg2ZDM1MzUxKSwg
QyhiNWY0MzY1NjFmOGYxNDg0KSwgQyg4NWQzOGUyMjE4MWM5YmIxKSwKKyAgICAgQyhmZjVjMDNm
MDAzYzFmZWZlKSwgQyhlMTA5ODY3MGFmZTdmZjYpLCBDKGVhNDQ1MDMwY2Y4NmRlMTkpLAorICAg
ICBDKGYxNTVjNjhiNWMyOTY3ZjgpLCBDKGZmNWMwM2YwMDNjMWZlZmUpLCBDKGUxMDk4NjcwYWZl
N2ZmNiksCisgICAgIEMoZWE0NDUwMzBjZjg2ZGUxOSksIEMoZjE1NWM2OGI1YzI5NjdmOCksIEMo
OTVkMzFiMTQ1ZGJiMmU5ZSksCisgICAgIEMoOTE0ZmUxY2EzZGViMzI2NSksIEMoNjA2NjAyMGIx
MzU4Y2NjMSksIEMoYzc0YmI3ZTJkZWUxNTAzNiksCisgICAgIEMoMzNkOTQ3NTIpfSwKKyAgICB7
QyhkNDQ1YmE4NGJmODAzZTA5KSwgQygxMjE2YzI0OTcwMzhmODA0KSwgQygyMjkzMjE2ZWEyMjM3
MjA3KSwKKyAgICAgQyhlMjE2NDQ1MWM2NTFhZGZiKSwgQyhiMjUzNGU2NTQ3N2Y5ODIzKSwgQyg0
ZDcwNjkxYTY5NjcxZTM0KSwKKyAgICAgQygxNWJlNDk2M2RiZGU4MTQzKSwgQyhlMjE2NDQ1MWM2
NTFhZGZiKSwgQyhiMjUzNGU2NTQ3N2Y5ODIzKSwKKyAgICAgQyg0ZDcwNjkxYTY5NjcxZTM0KSwg
QygxNWJlNDk2M2RiZGU4MTQzKSwgQyg3NjJlNzVjNDA2YzVlOWEzKSwKKyAgICAgQyg3Yjc1Nzlm
N2UwMzU2ODQxKSwgQyg0ODA1MzNlYjA2NmRmY2U1KSwgQyg5MGFlMTRlYTZiZmViNGFlKSwKKyAg
ICAgQyhiMGM5Mjk0OCl9LAorICAgIHtDKDM3MjM1YTA5NmE4YmU0MzUpLCBDKGQ5YjczMTMwNDkz
NTg5YzIpLCBDKDNiMTAyNGY1OTM3OGQzYmUpLAorICAgICBDKGFkMTU5ZjU0MmQ4MWYwNGUpLCBD
KDQ5NjI2YTk3YTk0NjA5NiksIEMoZDhkMzk5OGJmMDlmZDMwNCksCisgICAgIEMoZDEyN2E0MTFl
YWU2OTQ1OSksIEMoYWQxNTlmNTQyZDgxZjA0ZSksIEMoNDk2MjZhOTdhOTQ2MDk2KSwKKyAgICAg
QyhkOGQzOTk4YmYwOWZkMzA0KSwgQyhkMTI3YTQxMWVhZTY5NDU5KSwgQyg4ZjMyNTNjNGViNzg1
YTdiKSwKKyAgICAgQyg0MDQ5MDYyZjM3ZTYyMzk3KSwgQyhiOWZhMDRkM2I2NzBlNWMxKSwgQygx
MjExYTc5NjdhYzkzNTBmKSwKKyAgICAgQyhjNzE3MTU5MCl9LAorICAgIHtDKDc2M2FkNmVhMmZl
MWM5OWQpLCBDKGNmN2FmNTM2OGFjMWUyNmIpLCBDKDRkNWU0NTFiM2JiOGQzZDQpLAorICAgICBD
KDM3MTJlYjkxM2QwNGUyZjIpLCBDKDJmOTUwMGQzMTljODRkODkpLCBDKDRhYzZlYjIxYThjZjA2
ZjkpLAorICAgICBDKDdkMTkxN2FmY2RlNDI3NDQpLCBDKDM3MTJlYjkxM2QwNGUyZjIpLCBDKDJm
OTUwMGQzMTljODRkODkpLAorICAgICBDKDRhYzZlYjIxYThjZjA2ZjkpLCBDKDdkMTkxN2FmY2Rl
NDI3NDQpLCBDKDZiNTg2MDRiNWRkMTA5MDMpLAorICAgICBDKGM0Mjg4ZGZiYzFlMzE5ZmMpLCBD
KDIzMGY3NWNhOTY4MTdjNmUpLCBDKDg4OTRjYmEzYjc2Mzc1NmMpLAorICAgICBDKDI0MGE2N2Zi
KX0sCisgICAge0MoZWE2MjdmYzg0Y2QxYjg1NyksIEMoODVlMzcyNDk0NTIwMDcxZiksIEMoNjll
YzYxODAwODQ1NzgwYiksCisgICAgIEMoYTNjMWM1Y2ExYjAzNjcpLCBDKGViNjkzMzk5NzI3MmJi
M2QpLCBDKDc2YTcyY2I2MjY5MmE2NTUpLAorICAgICBDKDE0MGJiNTUzMWVkZjc1NmUpLCBDKGEz
YzFjNWNhMWIwMzY3KSwgQyhlYjY5MzM5OTcyNzJiYjNkKSwKKyAgICAgQyg3NmE3MmNiNjI2OTJh
NjU1KSwgQygxNDBiYjU1MzFlZGY3NTZlKSwgQyg4ZDBkODA2N2QxYzkyNWY0KSwKKyAgICAgQyg3
YjNmYTU2ZDhkNzdhMTBjKSwgQygyYmQwMDI4N2IwOTQ2ZDg4KSwgQyhmMDhjOGU0YmQ2NWI4OTcw
KSwKKyAgICAgQyhlMTg0M2NkNSl9LAorICAgIHtDKDFmMmZmZDc5ZjJjZGMwYzgpLCBDKDcyNmEx
YmMzMWIzMzdhYWEpLCBDKDY3OGI3ZjI3NWVmOTY0MzQpLAorICAgICBDKDVhYTgyYmZhYTk5ZDM5
NzgpLCBDKGMxOGY5NmNhZGU1Y2UxOGQpLCBDKDM4NDA0NDkxZjllMzRjMDMpLAorICAgICBDKDg5
MWZiODkyNmJhMDQxOGMpLCBDKDVhYTgyYmZhYTk5ZDM5NzgpLCBDKGMxOGY5NmNhZGU1Y2UxOGQp
LAorICAgICBDKDM4NDA0NDkxZjllMzRjMDMpLCBDKDg5MWZiODkyNmJhMDQxOGMpLCBDKGU1ZjY5
YTYzOTgxMTRjMTUpLAorICAgICBDKDdiOGRlZDM2MjNiYzZiMWQpLCBDKDJmM2U1YzVkYTVmZjcw
ZTgpLCBDKDFhYjE0MmFkZGVhNmE5ZWMpLAorICAgICBDKGZkYTE0NTJiKX0sCisgICAge0MoMzlh
OWUxNDZlYzRiMzIxMCksIEMoZjYzZjc1ODAyYTc4YjFhYyksIEMoZTJlMjI1MzljOTQ3NDFjMyks
CisgICAgIEMoOGIzMDVkNTMyZTYxMjI2ZSksIEMoY2FlYWU4MGRhMmVhMmUpLCBDKDg4YTYyODlh
NzZhYzY4NGUpLAorICAgICBDKDhjZTViNWY5ZGYxY2JkODUpLCBDKDhiMzA1ZDUzMmU2MTIyNmUp
LCBDKGNhZWFlODBkYTJlYTJlKSwKKyAgICAgQyg4OGE2Mjg5YTc2YWM2ODRlKSwgQyg4Y2U1YjVm
OWRmMWNiZDg1KSwgQyg4YWUxZmM0Nzk4ZTAwZDU3KSwKKyAgICAgQyhlNzE2NGI4ZmIzNjRmYzQ2
KSwgQyg2YTk3OGM5YmQzYTY2OTQzKSwgQyhlZjEwZDVhZTRkZDA4ZGMpLCBDKGEyY2FkMzMwKX0s
CisgICAge0MoNzRjYmEzMDNlMmRkOWQ2ZCksIEMoNjkyNjk5YjgzMjg5ZmFkMSksIEMoZGZiOWFh
Nzg3NDY3ODQ4MCksCisgICAgIEMoNzUxMzkwYThhNWM0MWJkYyksIEMoNmVlNWZiZjg3NjA1ZDM0
KSwgQyg2Y2E3M2Y2MTBmM2E4ZjdjKSwKKyAgICAgQyhlODk4YjNjOTk2NTcwYWQpLCBDKDc1MTM5
MGE4YTVjNDFiZGMpLCBDKDZlZTVmYmY4NzYwNWQzNCksCisgICAgIEMoNmNhNzNmNjEwZjNhOGY3
YyksIEMoZTg5OGIzYzk5NjU3MGFkKSwgQyg5ODE2OGE1ODU4ZmM3MTEwKSwKKyAgICAgQyg2Zjk4
N2ZhMjdhYTBkYWEyKSwgQyhmMjVlM2UxODBkNGIzNmEzKSwgQyhkMGIwMzQ5NWFlYjFiZThhKSwK
KyAgICAgQyg1MzQ2N2UxNil9LAorICAgIHtDKDRjYmMyYjczYTQzMDcxZTApLCBDKDU2YzVkYjRj
NGNhNGUwYjcpLCBDKDFiMjc1YTE2MmY0NmJkM2QpLAorICAgICBDKGI4N2EzMjZlNDEzNjA0YmYp
LCBDKGQ4ZjlhNWZhMjE0YjAzYWIpLCBDKDhhOGJiODI2NTc3MWNmODgpLAorICAgICBDKGE2NTUz
MTkwNTRmNmU3MGYpLCBDKGI4N2EzMjZlNDEzNjA0YmYpLCBDKGQ4ZjlhNWZhMjE0YjAzYWIpLAor
ICAgICBDKDhhOGJiODI2NTc3MWNmODgpLCBDKGE2NTUzMTkwNTRmNmU3MGYpLCBDKGI0OTljYjhl
NjVhOWFmNDQpLAorICAgICBDKGJlZTdmYWZjYzgzMDc0OTEpLCBDKDVkMmU1NWZhOWIyN2NkYTIp
LCBDKDYzYjEyMGY1ZmIyZDZlZTUpLAorICAgICBDKGRhMTRhOGQwKX0sCisgICAge0MoODc1NjM4
Yjk3MTVkMjIyMSksIEMoZDliYTA2MTVjMGM1ODc0MCksIEMoNjE2ZDRiZTJkZmU4MjVhYSksCisg
ICAgIEMoNWRmMjVmMTNlYTdiYzI4NCksIEMoMTY1ZWRmYWFmZDI1OThmYiksIEMoYWY3MjE1YzVj
NzE4YzY5NiksCisgICAgIEMoZTlmMmY5Y2E2NTVlNzY5KSwgQyg1ZGYyNWYxM2VhN2JjMjg0KSwg
QygxNjVlZGZhYWZkMjU5OGZiKSwKKyAgICAgQyhhZjcyMTVjNWM3MThjNjk2KSwgQyhlOWYyZjlj
YTY1NWU3NjkpLCBDKGU0NTljZmNiNTY1ZDNkMmQpLAorICAgICBDKDQxZDAzMjYzMWJlMjQxOGEp
LCBDKGM1MDVkYjA1ZmQ5NDZmNjApLCBDKDU0OTkwMzk0YTcxNGY1ZGUpLAorICAgICBDKDY3MzMz
NTUxKX0sCisgICAge0MoZmI2ODZiMjc4Mjk5NGE4ZCksIEMoZWRlZTYwNjkzNzU2YmI0OCksIEMo
ZTZiYzNjYWUwZGVkMmVmNSksCisgICAgIEMoNThlYjRkMDNiMmMzZGRmNSksIEMoNmQyNTQyOTk1
ZjkxODlmMSksIEMoYzBiZWVjNThhNWY1ZmVhMiksCisgICAgIEMoZWQ2NzQzNmY0MmUyYTc4Yiks
IEMoNThlYjRkMDNiMmMzZGRmNSksIEMoNmQyNTQyOTk1ZjkxODlmMSksCisgICAgIEMoYzBiZWVj
NThhNWY1ZmVhMiksIEMoZWQ2NzQzNmY0MmUyYTc4YiksIEMoZGZlYzc2M2NkYjJiNTE5MyksCisg
ICAgIEMoNzI0YThkNTM0NWJkMmQ2KSwgQyg5NGQ0ZmQxYjgxNDU3YzIzKSwgQygyOGU4N2M1MGNk
ZWRlNDUzKSwgQyhhMGViZDY2ZSl9LAorICAgIHtDKGFiMjFkODFhOTExZTY3MjMpLCBDKDRjMzFi
MDczNTQ4NTJmNTkpLCBDKDgzNWRhMzg0YzkzODQ3NDQpLAorICAgICBDKDdmNzU5ZGRkYzZlODU0
OWEpLCBDKDYxNmRkMGNhMDIyYzg3MzUpLCBDKDk0NzE3YWQ0YmMxNWNlYjMpLAorICAgICBDKGY2
NmM3YmU4MDhhYjM2ZSksIEMoN2Y3NTlkZGRjNmU4NTQ5YSksIEMoNjE2ZGQwY2EwMjJjODczNSks
CisgICAgIEMoOTQ3MTdhZDRiYzE1Y2ViMyksIEMoZjY2YzdiZTgwOGFiMzZlKSwgQyhhZjgyODZi
NTUwYjJmNGI3KSwKKyAgICAgQyg3NDViZDIxN2QyMGE5ZjQwKSwgQyhjNzNiZmI5YzU0MzBmMDE1
KSwgQyg1NWU2NTkyMjY2NmUzZmMyKSwKKyAgICAgQyg0Yjc2OTU5Myl9LAorICAgIHtDKDMzZDAx
M2NjMGNkNDZlY2YpLCBDKDNkZTcyNjQyM2FlYTEyMmMpLCBDKDExNmFmNTExMTdmZTIxYTkpLAor
ICAgICBDKGYyNzFiYTQ3NGVkYzU2MmQpLCBDKGU2NTk2ZTY3ZjlkZDNlYmQpLCBDKGMwYTI4OGVk
ZjgwOGYzODMpLAorICAgICBDKGIzZGVmNzA2ODFjNmJhYmMpLCBDKGYyNzFiYTQ3NGVkYzU2MmQp
LCBDKGU2NTk2ZTY3ZjlkZDNlYmQpLAorICAgICBDKGMwYTI4OGVkZjgwOGYzODMpLCBDKGIzZGVm
NzA2ODFjNmJhYmMpLCBDKDdkYTc4NjRlOTk4OWIwOTUpLAorICAgICBDKGJmMmY4NzE4NjkzY2Q4
YTEpLCBDKDI2NGE5MTQ0MTY2ZGE3NzYpLCBDKDYxYWQ5MDY3Njg3MGJlYjYpLAorICAgICBDKDZh
YTc1NjI0KX0sCisgICAge0MoOGNhOTJjN2NkMzlmYWU1ZCksIEMoMzE3ZTYyMGUxYmYyMGYxKSwg
Qyg0ZjBiMzNiZjIxOTRiOTdmKSwKKyAgICAgQyg0NTc0NGFmY2YxMzFkYmVlKSwgQyg5NzIyMjM5
MmMyNTU5MzUwKSwgQyg0OThhMTliMjgwYzZkNmVkKSwKKyAgICAgQyg4M2FjMmMzNmFjZGI4ZDQ5
KSwgQyg0NTc0NGFmY2YxMzFkYmVlKSwgQyg5NzIyMjM5MmMyNTU5MzUwKSwKKyAgICAgQyg0OThh
MTliMjgwYzZkNmVkKSwgQyg4M2FjMmMzNmFjZGI4ZDQ5KSwgQyg3YTY5NjQ1YzI5NGRhYTYyKSwK
KyAgICAgQyhhYmU5ZDJiZTgyNzViM2QyKSwgQygzOTU0MjAxOWRlMzcxMDg1KSwgQyg3ZjRlZmFj
ODQ4OGNkNmFkKSwKKyAgICAgQyg2MDJhM2Y5Nil9LAorICAgIHtDKGZkZGUzYjAzZjAxOGY0M2Up
LCBDKDM4ZjkzMjk0NmM3ODY2MCksIEMoYzg0MDg0Y2U5NDY4NTFlZSksCisgICAgIEMoYjZkZDA5
YmE3ODUxYzdhZiksIEMoNTcwZGU0ZTFiYjEzYjEzMyksIEMoYzRlNzg0ZWI5NzIxMTY0MiksCisg
ICAgIEMoODI4NWE3ZmNkY2M3YzU4ZCksIEMoYjZkZDA5YmE3ODUxYzdhZiksIEMoNTcwZGU0ZTFi
YjEzYjEzMyksCisgICAgIEMoYzRlNzg0ZWI5NzIxMTY0MiksIEMoODI4NWE3ZmNkY2M3YzU4ZCks
IEMoZDQyMWY0Nzk5MGRhODk5YiksCisgICAgIEMoOGFlZDQwOWM5OTdlYWExMyksIEMoN2EwNDU5
MjljMmUyOWNjZiksIEMoYjM3MzY4MmE2MjAyYzg2YiksCisgICAgIEMoY2QxODNjNGQpfSwKKyAg
ICB7Qyg5Yzg1MDIwNTBlOWM5NDU4KSwgQyhkNmQyYTFhNjk5NjRiZWI5KSwgQygxNjc1NzY2ZjQ4
MDIyOWI1KSwKKyAgICAgQygyMTZlMWQ2Yzg2Y2I1MjRjKSwgQyhkMDFjZjZmZDRmNDA2NWMwKSwg
QyhmZmZhNGVjNWI0ODJlYTBmKSwKKyAgICAgQyhhMGUyMGVlNmE1NDA0YWMxKSwgQygyMTZlMWQ2
Yzg2Y2I1MjRjKSwgQyhkMDFjZjZmZDRmNDA2NWMwKSwKKyAgICAgQyhmZmZhNGVjNWI0ODJlYTBm
KSwgQyhhMGUyMGVlNmE1NDA0YWMxKSwgQyhjMWIwMzdlNGVlYmFmODVlKSwKKyAgICAgQyg2MzRl
M2Q3YzNlYmY4OWViKSwgQyhiY2RhOTcyMzU4YzY3ZDEpLCBDKGZkMTM1MjE4MWU1Yjg1NzgpLCBD
KDk2MGE0ZDA3KX0sCisgICAge0MoMzQ4MTc2Y2EyZmEyZmRkMiksIEMoM2E4OWM1MTRjYzM2MGMy
ZCksIEMoOWY5MGI4YWZiMzE4ZDZkMCksCisgICAgIEMoYmNlZWUwN2MxMWE5YWMzMCksIEMoMmUy
ZDQ3ZGZmOGU3N2ViNyksIEMoMTFhMzk0Y2Q3YjZkNjE0YSksCisgICAgIEMoMWQ3YzQxZDU0ZTE1
Y2I0YSksIEMoYmNlZWUwN2MxMWE5YWMzMCksIEMoMmUyZDQ3ZGZmOGU3N2ViNyksCisgICAgIEMo
MTFhMzk0Y2Q3YjZkNjE0YSksIEMoMWQ3YzQxZDU0ZTE1Y2I0YSksIEMoMTViYWE1YWU3MzEyYjBm
YyksCisgICAgIEMoZjM5OGY1OTZjYzk4NDYzNSksIEMoOGFiOGZkZjg3YTY3ODhlOCksIEMoYjJi
NWMxMjM0YWI0N2UyKSwgQyg5YWU5OThjNCl9LAorICAgIHtDKDRhM2QzZGZiYmFlYTEzMGIpLCBD
KDRlMjIxYzkyMGY2MWVkMDEpLCBDKDU1M2ZkNmNkMTMwNDUzMWYpLAorICAgICBDKGJkMmIzMWI1
NjA4MTQzZmUpLCBDKGFiNzE3YTEwZjI1NTQ4NTMpLCBDKDI5Mzg1N2YwNGQxOTRkMjIpLAorICAg
ICBDKGQ1MWJlOGZhODZmMjU0ZjApLCBDKGJkMmIzMWI1NjA4MTQzZmUpLCBDKGFiNzE3YTEwZjI1
NTQ4NTMpLAorICAgICBDKDI5Mzg1N2YwNGQxOTRkMjIpLCBDKGQ1MWJlOGZhODZmMjU0ZjApLCBD
KDFlZWUzOWUwNzY4NjkwN2UpLAorICAgICBDKDYzOTAzOWZlMGU4ZDMwNTIpLCBDKGQ2ZWMxNDcw
Y2VmOTdmZiksIEMoMzcwYzgyYjg2MDAzNGYwZiksIEMoNzRlMjE3OWQpfSwKKyAgICB7QyhiMzcx
Zjc2OGNkZjRlZGI5KSwgQyhiZGVmMmFjZTZkMmRlMGYwKSwgQyhlMDViNDEwMGY3ZjFiYWVjKSwK
KyAgICAgQyhiOWUwZDQxNWI0ZWJkNTM0KSwgQyhjOTdjMmEyN2VmYWEzM2Q3KSwgQyg1OTFjZGIz
NWY4NGVmOWRhKSwKKyAgICAgQyhhNTdkMDJkMGU4ZTM3NTZjKSwgQyhiOWUwZDQxNWI0ZWJkNTM0
KSwgQyhjOTdjMmEyN2VmYWEzM2Q3KSwKKyAgICAgQyg1OTFjZGIzNWY4NGVmOWRhKSwgQyhhNTdk
MDJkMGU4ZTM3NTZjKSwgQygyM2Y1NWYxMmQ3YzVjODdiKSwKKyAgICAgQyg0YzdjYTBmZTIzMjIx
MTAxKSwgQyhkYmMzMDIwNDgwMzM0NTY0KSwgQyhkOTg1OTkyZjMyYzIzNmIxKSwKKyAgICAgQyhl
ZTliYWUyNSl9LAorICAgIHtDKDdhMWQyZTk2OTM0ZjYxZiksIEMoZWIxNzYwYWU2YWY3ZDk2MSks
IEMoODg3ZWIwZGEwNjMwMDVkZiksCisgICAgIEMoMjIyOGQ2NzI1ZTMxYjhhYiksIEMoOWI5OGY3
ZTRkMDE0MmU3MCksIEMoYjZhOGMyMTE1YjhlMGZlNyksCisgICAgIEMoYjU5MWUyZjVhYjliOTRi
MSksIEMoMjIyOGQ2NzI1ZTMxYjhhYiksIEMoOWI5OGY3ZTRkMDE0MmU3MCksCisgICAgIEMoYjZh
OGMyMTE1YjhlMGZlNyksIEMoYjU5MWUyZjVhYjliOTRiMSksIEMoNmMxZmVhYTgwNjUzMThlMCks
CisgICAgIEMoNGU3ZTJjYTIxYzJlODFmYiksIEMoZTlmZTVkOGNlNzk5M2M0NSksIEMoZWU0MTFm
YTJmMTJjZjhkZiksCisgICAgIEMoYjY2ZWRmMTApfSwKKyAgICB7Qyg4YmU1M2Q0NjZkNDcyOGYy
KSwgQyg4NmE1YWM4ZTBkNDE2NjQwKSwgQyg5ODRhYTQ2NGNkYjVjOGJiKSwKKyAgICAgQyg4NzA0
OWU2OGY1ZDM4ZTU5KSwgQyg3ZDhjZTQ0ZWM2YmQ3NzUxKSwgQyhjYzI4ZDA4YWI0MTQ4MzljKSwK
KyAgICAgQyg2YzhmMGJkMzRmZTg0M2UzKSwgQyg4NzA0OWU2OGY1ZDM4ZTU5KSwgQyg3ZDhjZTQ0
ZWM2YmQ3NzUxKSwKKyAgICAgQyhjYzI4ZDA4YWI0MTQ4MzljKSwgQyg2YzhmMGJkMzRmZTg0M2Uz
KSwgQyhiODQ5NmRjZGMwMWYzZTQ3KSwKKyAgICAgQygyZjAzMTI1YzI4MmFjMjYpLCBDKDgyYTg3
OTdiYTNmNWVmMDcpLCBDKDdjOTc3YTRkMTBiZjUyYjgpLCBDKGQ2MjA5NzM3KX0sCisgICAge0Mo
ODI5Njc3ZWIwM2FiZjA0MiksIEMoNDNjYWQwMDRiNmJjMmMwKSwgQyhmMmYyMjQ3NTY4MDM5NzFh
KSwKKyAgICAgQyg5OGQwZGJmNzk2NDgwMTg3KSwgQyhmYmNiNWYzZTFiZWY1NzQyKSwgQyg1YWYy
YTA0NjNiZjZlOTIxKSwKKyAgICAgQyhhZDk1NTViZjAxMjBiM2EzKSwgQyg5OGQwZGJmNzk2NDgw
MTg3KSwgQyhmYmNiNWYzZTFiZWY1NzQyKSwKKyAgICAgQyg1YWYyYTA0NjNiZjZlOTIxKSwgQyhh
ZDk1NTViZjAxMjBiM2EzKSwgQygyODNlMzliM2RjOTlmNDQ3KSwKKyAgICAgQyhiZWRhYTFhNGEw
MjUwYzI4KSwgQyg5ZDUwNTQ2NjI0ZmY5YTU3KSwgQyg0YWJhZjUyM2QxYzA5MGY2KSwgQyhiOTk0
YTg4KX0sCisgICAge0MoNzU0NDM1YmFlMzQ5NmZjKSwgQyg1NzA3ZmMwMDZmMDk0ZGNmKSwgQyg4
OTUxYzg2YWIxOWQ4ZTQwKSwKKyAgICAgQyg1N2M1MjA4ZThmMDIxYTc3KSwgQyhmNzY1M2ZiYjY5
Y2Q5Mjc2KSwgQyhhNDg0NDEwYWYyMWQ3NWNiKSwKKyAgICAgQyhmMTliNjg0NGIzZDYyN2U4KSwg
Qyg1N2M1MjA4ZThmMDIxYTc3KSwgQyhmNzY1M2ZiYjY5Y2Q5Mjc2KSwKKyAgICAgQyhhNDg0NDEw
YWYyMWQ3NWNiKSwgQyhmMTliNjg0NGIzZDYyN2U4KSwgQyhmMzc0MDBmYzNmZmQ5NTE0KSwKKyAg
ICAgQygzNmFlMGQ4MjE3MzRlZGZkKSwgQyg1ZjM3ODIwYWYxZjFmMzA2KSwgQyhiZTYzN2Q0MGU2
YTVhZDApLCBDKGEwNWQ0M2MwKX0sCisgICAge0MoZmRhOTg3N2VhOGUzODA1ZiksIEMoMzFlODY4
YjZmZmQ1MjFiNyksIEMoYjA4YzkwNjgxZmI2YTBmZCksCisgICAgIEMoNjgxMTBhN2Y4M2Y1ZDNm
ZiksIEMoNmQ3N2UwNDU5MDFiODVhOCksIEMoODRlZjY4MTExMzAzNmQ4YiksCisgICAgIEMoM2I5
ZjhlMzkyOGY1NjE2MCksIEMoNjgxMTBhN2Y4M2Y1ZDNmZiksIEMoNmQ3N2UwNDU5MDFiODVhOCks
CisgICAgIEMoODRlZjY4MTExMzAzNmQ4YiksIEMoM2I5ZjhlMzkyOGY1NjE2MCksIEMoZmM4Yjdm
NTZjMTMwODM1KSwKKyAgICAgQyhhMTFmM2U4MDA2MzhlODQxKSwgQyhkOTU3MjI2N2Y1Y2YyOGMx
KSwgQyg3ODk3YzgxNDk4MDNmMmFhKSwKKyAgICAgQyhjNzlmNzNhOCl9LAorICAgIHtDKDJlMzZm
NTIzY2E4ZjVlYjUpLCBDKDhiMjI5MzJmODliMjc1MTMpLCBDKDMzMWNkNmVjYmZhZGMxYmIpLAor
ICAgICBDKGQxYmZlNGRmMTJiMDRjYmYpLCBDKGY1OGMxNzI0M2ZkNjM4NDIpLCBDKDNhNDUzY2Ri
YTgwYTYwYWYpLAorICAgICBDKDU3MzdiMmNhNzQ3MGVhOTUpLCBDKGQxYmZlNGRmMTJiMDRjYmYp
LCBDKGY1OGMxNzI0M2ZkNjM4NDIpLAorICAgICBDKDNhNDUzY2RiYTgwYTYwYWYpLCBDKDU3Mzdi
MmNhNzQ3MGVhOTUpLCBDKDU0ZDQ0YTNmNDQ3NzAzMGMpLAorICAgICBDKDgxNjhlMDJkNDg2OWFh
N2YpLCBDKDc3ZjM4M2ExNzc3ODU1OWQpLCBDKDk1ZTE3MzdkNzdhMjY4ZmMpLAorICAgICBDKGE0
OTBhZmY1KX0sCisgICAge0MoMjFhMzc4ZWY3NjgyODIwOCksIEMoYTVjMTMwMzdmYTg0MWRhMiks
IEMoNTA2ZDIyYTUzZmJlOTgxMiksCisgICAgIEMoNjFjOWM5NWQ5MTAxN2RhNSksIEMoMTZmN2M4
M2JhNjhmNTI3OSksIEMoOWMwNjE5YjA4MDhkMDVmNyksCisgICAgIEMoODNjMTE3Y2U0ZTZiNzBh
MyksIEMoNjFjOWM5NWQ5MTAxN2RhNSksIEMoMTZmN2M4M2JhNjhmNTI3OSksCisgICAgIEMoOWMw
NjE5YjA4MDhkMDVmNyksIEMoODNjMTE3Y2U0ZTZiNzBhMyksIEMoY2ZiNGM4YWY3ZmQwMTQxMyks
CisgICAgIEMoZmRlZjA0ZTYwMmU3MjI5NiksIEMoZWQ2MTI0ZDMzNzg4OWIxKSwgQyg0OTE5Yzg2
NzA3YjgzMGRhKSwgQyhkZmFkNjViNCl9LAorICAgIHtDKGNjZGQ1NjAwMDU0YjE2Y2EpLCBDKGY3
ODg0NmU4NDIwNGNiN2IpLCBDKDFmOWZhZWM4MmMyNGVhYzkpLAorICAgICBDKDU4NjM0MDA0Yzdi
MmQxOWEpLCBDKDI0YmI1ZjUxZWQzYjkwNzMpLCBDKDQ2NDA5ZGUwMTgwMzNkMDApLAorICAgICBD
KDRhOTgwNWVlZDVhYzgwMmUpLCBDKDU4NjM0MDA0YzdiMmQxOWEpLCBDKDI0YmI1ZjUxZWQzYjkw
NzMpLAorICAgICBDKDQ2NDA5ZGUwMTgwMzNkMDApLCBDKDRhOTgwNWVlZDVhYzgwMmUpLCBDKGUx
OGRlOGRiMzA2YmFmODIpLAorICAgICBDKDQ2YmJmNzVmMWZhMDI1ZmYpLCBDKDVmYWYyZmIwOWJl
MDk0ODcpLCBDKDNmYmM2MmJkNGU1NThmYjMpLCBDKDFkMDdkZmIpfSwKKyAgICB7Qyg3ODU0NDY4
ZjRlMGNhYmQwKSwgQygzYTNmNmI0ZjA5OGQwNjkyKSwgQyhhZTI0MjNlYzc3OTlkMzBkKSwKKyAg
ICAgQygyOWMzNTI5ZWIxNjVlZWJhKSwgQyg0NDNkZTM3MDNiNjU3YzM1KSwgQyg2NmFjYmNlMzFh
ZTFiYzhkKSwKKyAgICAgQygxYWNjOTllZmZlMWQ1NDdlKSwgQygyOWMzNTI5ZWIxNjVlZWJhKSwg
Qyg0NDNkZTM3MDNiNjU3YzM1KSwKKyAgICAgQyg2NmFjYmNlMzFhZTFiYzhkKSwgQygxYWNjOTll
ZmZlMWQ1NDdlKSwgQyhjZjA3ZjhhNTc5MDY1NzNkKSwKKyAgICAgQygzMWJhZmIwYmJiOWE4NmU3
KSwgQyg0MGM2OTQ5MjcwMmE5MzQ2KSwgQyg3ZGY2MWZkYWEwYjg1OGFmKSwKKyAgICAgQyg0MTZk
ZjlhMCl9LAorICAgIHtDKDdmODhkYjUzNDZkOGY5OTcpLCBDKDg4ZWFjOWFhY2M2NTM3OTgpLCBD
KDY4YTRkMDI5NWY4ZWVmYTEpLAorICAgICBDKGFlNTljYTg2ZjRjMzMyM2QpLCBDKDI1OTA2YzA5
OTA2ZDVjNGMpLCBDKDhkZDJhYTBjMGE2NTg0YWUpLAorICAgICBDKDIzMmE3ZDk2YjM4ZjQwZTkp
LCBDKGFlNTljYTg2ZjRjMzMyM2QpLCBDKDI1OTA2YzA5OTA2ZDVjNGMpLAorICAgICBDKDhkZDJh
YTBjMGE2NTg0YWUpLCBDKDIzMmE3ZDk2YjM4ZjQwZTkpLCBDKDg5ODZlZTAwYTJlZDAwNDIpLAor
ICAgICBDKGM0OWFlN2U0MjhjOGE3ZDEpLCBDKGI3ZGQ4MjgwNzEzYWM5YzIpLCBDKGUwMTg3MjBh
ZWQxZWJjMjgpLAorICAgICBDKDFmOGZiOWNjKX0sCisgICAge0MoYmIzZmI1ZmIwMWQ2MGZjZiks
IEMoMWI3Y2MwODQ3YTIxNWViNiksIEMoMTI0NmM5OTQ0Mzc5OTBhMSksCisgICAgIEMoZDRlZGM5
NTRjMDdjZDhmMyksIEMoMjI0ZjQ3ZTdjMDBhMzBhYiksIEMoZDVhZDdhZDdmNDFlZjBjNiksCisg
ICAgIEMoNTllMDg5MjgxZDg2OWZkNyksIEMoZDRlZGM5NTRjMDdjZDhmMyksIEMoMjI0ZjQ3ZTdj
MDBhMzBhYiksCisgICAgIEMoZDVhZDdhZDdmNDFlZjBjNiksIEMoNTllMDg5MjgxZDg2OWZkNyks
IEMoZjI5MzQwZDA3YTE0YjZmMSksCisgICAgIEMoYzg3YzVlZjc2ZDljNGVmMyksIEMoNDYzMTE4
Nzk0MTkzYTlhKSwgQygyOTIyZGNiMDU0MGYwZGJjKSwgQyg3YWJmNDhlMyl9LAorICAgIHtDKDJl
NzgzZTE3NjFhY2Q4NGQpLCBDKDM5MTU4MDQyYmFjOTc1YTApLCBDKDFjZDIxYzVhODA3MTE4OGQp
LAorICAgICBDKGIxYjdlYzQ0ZjkzMDIxNzYpLCBDKDVjYjQ3NjQ1MGRjMGMyOTcpLCBDKGRjNWVm
NjUyNTIxZWY2YTIpLAorICAgICBDKDNjYzc5YTllMzM0ZTFmODQpLCBDKGIxYjdlYzQ0ZjkzMDIx
NzYpLCBDKDVjYjQ3NjQ1MGRjMGMyOTcpLAorICAgICBDKGRjNWVmNjUyNTIxZWY2YTIpLCBDKDNj
Yzc5YTllMzM0ZTFmODQpLCBDKDc2OWUyYTI4M2RiY2M2NTEpLAorICAgICBDKDlmMjRiMTA1Yzg1
MTFkM2YpLCBDKGMzMWMxNTU3NWRlMmYyN2UpLCBDKGVjZmVjZjMyYzNhZTJkNjYpLAorICAgICBD
KGRlYTRlM2RkKX0sCisgICAge0MoMzkyMDU4MjUxY2YyMmFjYyksIEMoOTQ0ZWM0NDc1ZWFkNDYy
MCksIEMoYjMzMGExMGI1Y2I5NDE2NiksCisgICAgIEMoNTRiYzliZWU3Y2JlMTc2NyksIEMoNDg1
ODIwYmRiZTQ0MjQzMSksIEMoNTRkNjEyMGVhMjk3MmU5MCksCisgICAgIEMoZjQzN2EwMzQxZjI5
YjcyYSksIEMoNTRiYzliZWU3Y2JlMTc2NyksIEMoNDg1ODIwYmRiZTQ0MjQzMSksCisgICAgIEMo
NTRkNjEyMGVhMjk3MmU5MCksIEMoZjQzN2EwMzQxZjI5YjcyYSksIEMoOGYzMDg4NWM3ODRkNTcw
NCksCisgICAgIEMoYWE5NTM3NmIxNmM3OTA2YSksIEMoZTgyNjkyOGNmYWY5M2RjMyksIEMoMjBl
OGY1NGQxYzE2ZDdkOCksCisgICAgIEMoYzYwNjRmMjIpfSwKKyAgICB7QyhhZGY1YzFlNWQ2NDE5
OTQ3KSwgQygyYTk3NDdiYzY1OWQyOGFhKSwgQyg5NWM1YjhjYjFmNWQ2MmMpLAorICAgICBDKDgw
OTczZWE1MzJiMGYzMTApLCBDKGE0NzE4MjlhYTljMTdkZDkpLCBDKGMyZmYzNDc5Mzk0ODA0YWIp
LAorICAgICBDKDZiZjQ0Zjg2MDY3NTM2MzYpLCBDKDgwOTczZWE1MzJiMGYzMTApLCBDKGE0NzE4
MjlhYTljMTdkZDkpLAorICAgICBDKGMyZmYzNDc5Mzk0ODA0YWIpLCBDKDZiZjQ0Zjg2MDY3NTM2
MzYpLCBDKDUxODRkMjk3M2U2ZGQ4MjcpLAorICAgICBDKDEyMWI5NjM2OWEzMzJkOWEpLCBDKDVj
MjVkMzQ3NWFiNjllNTApLCBDKDI2ZDI5NjFkNjI4ODQxNjgpLAorICAgICBDKDc0M2JlZDljKX0s
CisgICAge0MoNmJjMWRiMmMyYmVlNWFiYSksIEMoZTYzYjBlZDYzNTMwNzM5OCksIEMoN2IyZWNh
MTExZjMwZGJiYyksCisgICAgIEMoMjMwZDJiM2U0N2YwOTgzMCksIEMoZWM4NjI0YTgyMWMxY2Fm
NCksIEMoZWE2ZWM0MTFjZGJmMWNiMSksCisgICAgIEMoNWYzOGFlODJhZjM2NGUyNyksIEMoMjMw
ZDJiM2U0N2YwOTgzMCksIEMoZWM4NjI0YTgyMWMxY2FmNCksCisgICAgIEMoZWE2ZWM0MTFjZGJm
MWNiMSksIEMoNWYzOGFlODJhZjM2NGUyNyksIEMoYTUxOWVmNTE1ZWE3MTg3YyksCisgICAgIEMo
NmJhZDVlZmE3ZWJhZTA1ZiksIEMoNzQ4YWJhY2IxMWE3NGE2MyksIEMoYTI4ZWVmOTYzZDEzOTZl
YiksCisgICAgIEMoZmNlMjU0ZDUpfSwKKyAgICB7QyhiMDBmODk4MjI5ZWZhNTA4KSwgQyg4M2I3
NTkwYWQ3ZjY5ODVjKSwgQygyNzgwZTcwYTA1OTJlNDFkKSwKKyAgICAgQyg3MTIyNDEzYmRiYzk0
MDM1KSwgQyhlN2Y5MGZhZTMzYmY3NzYzKSwgQyg0YjZiZDBmYjMwYjEyMzg3KSwKKyAgICAgQyg1
NTczNTljMGM0NGY0OGNhKSwgQyg3MTIyNDEzYmRiYzk0MDM1KSwgQyhlN2Y5MGZhZTMzYmY3NzYz
KSwKKyAgICAgQyg0YjZiZDBmYjMwYjEyMzg3KSwgQyg1NTczNTljMGM0NGY0OGNhKSwgQyhkNTY1
NmMzZDZiYzVmMGQpLAorICAgICBDKDk4M2ZmOGU1ZTc4NGRhOTkpLCBDKDYyODQ3OTY3MWI0NDVi
ZiksIEMoZTE3OWExZTI3Y2U2OGY1ZCksIEMoZTQ3ZWM5ZDEpfSwKKyAgICB7QyhiNTZlYjc2OWNl
MGQ5YThjKSwgQyhjZTE5NjExN2JmYmNhZjA0KSwgQyhiMjZjM2MzNzk3ZDY2MTY1KSwKKyAgICAg
Qyg1ZWQxMjMzOGY2MzBhYjc2KSwgQyhmYWIxOWZjYjMxOTExNmQpLCBDKDE2N2Y1ZjQyYjUyMTcy
NGIpLAorICAgICBDKGM0YWE1NmM0MDk1NjhkNzQpLCBDKDVlZDEyMzM4ZjYzMGFiNzYpLCBDKGZh
YjE5ZmNiMzE5MTE2ZCksCisgICAgIEMoMTY3ZjVmNDJiNTIxNzI0YiksIEMoYzRhYTU2YzQwOTU2
OGQ3NCksIEMoNzVmZmY0YjQyZjhlOTc3OCksCisgICAgIEMoOTQyMThmOTQ3MTBjMWVhMyksIEMo
YjdiMDVlZmI3MzhiMDZhNiksIEMoODNmZmYyZGVhYmY5Y2QzKSwgQygzMzRhMTQ1Yyl9LAorICAg
IHtDKDcwYzA2Mzc2NzViOTQxNTApLCBDKDI1OWUxNjY5MzA1YjBhMTUpLCBDKDQ2ZTFkZDlmZDM4
N2E1OGQpLAorICAgICBDKGZjYTRlNWJjOTI5Mjc4OGUpLCBDKGNkNTA5ZGMxZmFjY2U0MWMpLCBD
KGJiYmE1NzVhNTlkODJmZSksCisgICAgIEMoNGUyZTcxYzE1YjQ1ZDRkMyksIEMoZmNhNGU1YmM5
MjkyNzg4ZSksIEMoY2Q1MDlkYzFmYWNjZTQxYyksCisgICAgIEMoYmJiYTU3NWE1OWQ4MmZlKSwg
Qyg0ZTJlNzFjMTViNDVkNGQzKSwgQyg1ZGM1NDU4MmVhZDk5OWMpLAorICAgICBDKDcyNjEyZDE1
NzE5NjNjNmYpLCBDKDMwMzE4YTlkMmQzZDE4MjkpLCBDKDc4NWRkMDBmNGNjOWM5YTApLAorICAg
ICBDKGFkZWMxZTNjKX0sCisgICAge0MoNzRjMGI4YTY4MjFmYWFmZSksIEMoYWJhYzM5ZDc0OTEz
NzBlNyksIEMoZmFmMGIyYTQ4YTRlNmFlZCksCisgICAgIEMoOTY3ZTk3MGRmOTY3M2QyYSksIEMo
ZDQ2NTI0N2NmZmE0MTVjMCksIEMoMzNhMWRmMGNhMTEwNzcyMiksCisgICAgIEMoNDlmYzJhMTBh
ZGNlNGEzMiksIEMoOTY3ZTk3MGRmOTY3M2QyYSksIEMoZDQ2NTI0N2NmZmE0MTVjMCksCisgICAg
IEMoMzNhMWRmMGNhMTEwNzcyMiksIEMoNDlmYzJhMTBhZGNlNGEzMiksIEMoYzU3MDdlMDc5YTI4
NDMwOCksCisgICAgIEMoNTczMDI4MjY2NjM1ZGRhNiksIEMoZjc4NmY1ZWVlNjEyN2ZhMCksIEMo
YjMwZDc5Y2ViZmI1MTI2NiksCisgICAgIEMoZjZhOWZiZjgpfSwKKyAgICB7Qyg1ZmI1ZTQ4YWM3
YjdmYTRmKSwgQyhhOTYxNzBmMDhmNWFjYmM3KSwgQyhiYmY1YzYzZDRmNTJhMWU1KSwKKyAgICAg
Qyg2Y2MwOWU2MDcwMDU2M2U5KSwgQyhkMThmMjMyMjFlOTY0NzkxKSwgQyhmZmMyM2VlZWY3YWYy
NmViKSwKKyAgICAgQyg2OTNhOTU0YTM2MjJhMzE1KSwgQyg4MTUzMDhhMzJhOWIwZGFmKSwgQyhl
ZmIyYWIyN2JmNmZkMGJkKSwKKyAgICAgQyg5ZjFmZmMwOTg2MTExMTE4KSwgQyhmOWEzYWExNzc4
ZWEzOTg1KSwgQyg2OThmZTU0YjJiOTM5MzNiKSwKKyAgICAgQyhkYWNjMmIyODQwNGQwZjEwKSwg
Qyg4MTUzMDhhMzJhOWIwZGFmKSwgQyhlZmIyYWIyN2JmNmZkMGJkKSwKKyAgICAgQyg1Mzk4MjEw
Yyl9LAorfTsKKwordm9pZCBUZXN0VW5jaGFuZ2luZyhjb25zdCB1aW50NjRfdCogZXhwZWN0ZWQs
IGludCBvZmZzZXQsIGludCBsZW4pIHsKKyAgY29uc3QgdWludDEyOCB1ID0gQ2l0eUhhc2gxMjgo
ZGF0YSArIG9mZnNldCwgbGVuKTsKKyAgY29uc3QgdWludDEyOCB2ID0gQ2l0eUhhc2gxMjhXaXRo
U2VlZChkYXRhICsgb2Zmc2V0LCBsZW4sIGtTZWVkMTI4KTsKKyAgRVhQRUNUX0VRKGV4cGVjdGVk
WzBdLCBDaXR5SGFzaDY0KGRhdGEgKyBvZmZzZXQsIGxlbikpOworICBFWFBFQ1RfRVEoZXhwZWN0
ZWRbMTVdLCBDaXR5SGFzaDMyKGRhdGEgKyBvZmZzZXQsIGxlbikpOworICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRbMV0sIENpdHlIYXNoNjRXaXRoU2VlZChkYXRhICsgb2Zmc2V0LCBsZW4sIGtTZWVkMCkp
OworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbMl0sCisgICAgICAgICAgICBDaXR5SGFzaDY0V2l0aFNl
ZWRzKGRhdGEgKyBvZmZzZXQsIGxlbiwga1NlZWQwLCBrU2VlZDEpKTsKKyAgRVhQRUNUX0VRKGV4
cGVjdGVkWzNdLCBVaW50MTI4TG93NjQodSkpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbNF0sIFVp
bnQxMjhIaWdoNjQodSkpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbNV0sIFVpbnQxMjhMb3c2NCh2
KSk7CisgIEVYUEVDVF9FUShleHBlY3RlZFs2XSwgVWludDEyOEhpZ2g2NCh2KSk7CisjaWZkZWYg
X19TU0U0XzJfXworICBjb25zdCB1aW50MTI4IHkgPSBDaXR5SGFzaENyYzEyOChkYXRhICsgb2Zm
c2V0LCBsZW4pOworICBjb25zdCB1aW50MTI4IHogPSBDaXR5SGFzaENyYzEyOFdpdGhTZWVkKGRh
dGEgKyBvZmZzZXQsIGxlbiwga1NlZWQxMjgpOworICB1aW50NjRfdCBjcmMyNTZfcmVzdWx0c1s0
XTsKKyAgQ2l0eUhhc2hDcmMyNTYoZGF0YSArIG9mZnNldCwgbGVuLCBjcmMyNTZfcmVzdWx0cyk7
CisgIEVYUEVDVF9FUShleHBlY3RlZFs3XSwgVWludDEyOExvdzY0KHkpKTsKKyAgRVhQRUNUX0VR
KGV4cGVjdGVkWzhdLCBVaW50MTI4SGlnaDY0KHkpKTsKKyAgRVhQRUNUX0VRKGV4cGVjdGVkWzld
LCBVaW50MTI4TG93NjQoeikpOworICBFWFBFQ1RfRVEoZXhwZWN0ZWRbMTBdLCBVaW50MTI4SGln
aDY0KHopKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRbMTEgKyBpXSwgY3JjMjU2X3Jlc3VsdHNbaV0pOworICB9CisjZW5kaWYKK30KKwor
VEVTVChDaXR5SGFzaFRlc3QsIFVuY2hhbmdpbmcpIHsKKyAgc2V0dXAoKTsKKyAgaW50IGkgPSAw
OworICBmb3IgKDsgaSA8IGtUZXN0U2l6ZSAtIDE7IGkrKykgeworICAgIFRlc3RVbmNoYW5naW5n
KHRlc3RkYXRhW2ldLCBpICogaSwgaSk7CisgIH0KKyAgVGVzdFVuY2hhbmdpbmcodGVzdGRhdGFb
aV0sIDAsIGtEYXRhU2l6ZSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBoYXNoX2ludGVybmFsCit9
ICAvLyBuYW1lc3BhY2UgYWJzbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNo
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9oYXNoLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiZjY0MDk2ZTdl
YWEzYjM0NmVkMmYyYTIyZGYyY2QyYThlNzE1NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9o
YXNoL2ludGVybmFsL2hhc2guY2MKQEAgLTAsMCArMSwyMyBAQAorLy8gQ29weXJpZ2h0IDIwMTgg
VGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKworI2luY2x1ZGUgImFic2wvaGFzaC9pbnRlcm5hbC9oYXNo
LmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVzcGFjZSBoYXNoX2ludGVybmFsIHsKKworQUJT
TF9DT05TVF9JTklUIGNvbnN0IHZvaWQqIGNvbnN0IENpdHlIYXNoU3RhdGU6OmtTZWVkID0gJmtT
ZWVkOworCit9ICAvLyBuYW1lc3BhY2UgaGFzaF9pbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIGFi
c2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9p
bnRlcm5hbC9oYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgyMTdkMmZlNzYwMDAzY2I4M2U4YTMxN2E1OTE4
NWU4MmE3MzBmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvaGFzaC5o
CkBAIC0wLDAgKzEsODg3IEBACisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGaWxlOiBoYXNoLmgKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworI2lmbmRlZiBBQlNMX0hBU0hfSU5URVJOQUxfSEFTSF9IXwor
I2RlZmluZSBBQlNMX0hBU0hfSU5URVJOQUxfSEFTSF9IXworCisjaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdHJpbmc+
CisjaW5jbHVkZSA8ZGVxdWU+CisjaW5jbHVkZSA8Zm9yd2FyZF9saXN0PgorI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CisjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1
ZGUgPGxpc3Q+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxz
ZXQ+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR1cGxlPgorI2luY2x1ZGUgPHR5cGVf
dHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVk
ZSAiYWJzbC9iYXNlL2ludGVybmFsL2VuZGlhbi5oIgorI2luY2x1ZGUgImFic2wvYmFzZS9wb3J0
LmgiCisjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvZml4ZWRfYXJyYXkuaCIKKyNpbmNsdWRlICJh
YnNsL21ldGEvdHlwZV90cmFpdHMuaCIKKyNpbmNsdWRlICJhYnNsL251bWVyaWMvaW50MTI4Lmgi
CisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvdmFyaWFudC5oIgorI2luY2x1
ZGUgImFic2wvdXRpbGl0eS91dGlsaXR5LmgiCisjaW5jbHVkZSAiYWJzbC9oYXNoL2ludGVybmFs
L2NpdHkuaCIKKworbmFtZXNwYWNlIGFic2wgeworbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwgewor
CisvLyBIYXNoU3RhdGVCYXNlCisvLworLy8gQSBoYXNoIHN0YXRlIG9iamVjdCByZXByZXNlbnRz
IGFuIGludGVybWVkaWF0ZSBzdGF0ZSBpbiB0aGUgY29tcHV0YXRpb24KKy8vIG9mIGFuIHVuc3Bl
Y2lmaWVkIGhhc2ggYWxnb3JpdGhtLiBgSGFzaFN0YXRlQmFzZWAgcHJvdmlkZXMgYSBDUlRQIHN0
eWxlCisvLyBiYXNlIGNsYXNzIGZvciBoYXNoIHN0YXRlIGltcGxlbWVudGF0aW9ucy4gRGV2ZWxv
cGVycyBhZGRpbmcgdHlwZSBzdXBwb3J0CisvLyBmb3IgYGFic2w6Okhhc2hgIHNob3VsZCBub3Qg
cmVseSBvbiBhbnkgcGFydHMgb2YgdGhlIHN0YXRlIG9iamVjdCBvdGhlciB0aGFuCisvLyB0aGUg
Zm9sbG93aW5nIG1lbWJlciBmdW5jdGlvbnM6CisvLworLy8gICAqIEhhc2hTdGF0ZUJhc2U6OmNv
bWJpbmUoKQorLy8gICAqIEhhc2hTdGF0ZUJhc2U6OmNvbWJpbmVfY29udGlndW91cygpCisvLwor
Ly8gQSBkZXJpdmVkIGhhc2ggc3RhdGUgY2xhc3Mgb2YgdHlwZSBgSGAgbXVzdCBwcm92aWRlIGEg
c3RhdGljIG1lbWJlciBmdW5jdGlvbgorLy8gd2l0aCBhIHNpZ25hdHVyZSBzaW1pbGFyIHRvIHRo
ZSBmb2xsb3dpbmc6CisvLworLy8gICAgYHN0YXRpYyBIIGNvbWJpbmVfY29udGlndW91cyhIIHN0
YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KWAuCisvLworLy8gYEhhc2hTdGF0ZUJh
c2VgIHdpbGwgcHJvdmlkZSBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9ucyBmb3IgYSBoYXNoIHN0
YXRlCisvLyBvYmplY3QgaW4gdGVybXMgb2YgdGhpcyBtZXRob2QuCisvLworLy8gRXhhbXBsZToK
Ky8vCisvLyAgIC8vIFVzZSBDUlRQIHRvIGRlZmluZSB5b3VyIGRlcml2ZWQgY2xhc3MuCisvLyAg
IHN0cnVjdCBNeUhhc2hTdGF0ZSA6IEhhc2hTdGF0ZUJhc2U8TXlIYXNoU3RhdGU+IHsKKy8vICAg
ICAgIHN0YXRpYyBIIGNvbWJpbmVfY29udGlndW91cyhIIHN0YXRlLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiwgc2l6ZV90KTsKKy8vICAgICAgIHVzaW5nIE15SGFzaFN0YXRlOjpIYXNoU3RhdGVCYXNl
Ojpjb21iaW5lOworLy8gICAgICAgdXNpbmcgTXlIYXNoU3RhdGU6Okhhc2hTdGF0ZUJhc2U6OmNv
bWJpbmVfY29udGlndW91czsKKy8vICAgfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBIPgorY2xhc3Mg
SGFzaFN0YXRlQmFzZSB7CisgcHVibGljOgorICAvLyBIYXNoU3RhdGVCYXNlOjpjb21iaW5lKCkK
KyAgLy8KKyAgLy8gQ29tYmluZXMgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB2YWx1ZXMgaW50byBh
IGhhc2ggc3RhdGUsIHJldHVybmluZyB0aGUKKyAgLy8gdXBkYXRlZCBzdGF0ZS4KKyAgLy8KKyAg
Ly8gRWFjaCBvZiB0aGUgdmFsdWUgdHlwZXMgYFRgIG11c3QgYmUgc2VwYXJhdGVseSBoYXNoYWJs
ZSBieSB0aGUgQWJzZWlsCisgIC8vIGhhc2hpbmcgZnJhbWV3b3JrLgorICAvLworICAvLyBOT1RF
OgorICAvLworICAvLyAgIHN0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1
ZTEsIHZhbHVlMiwgdmFsdWUzKTsKKyAgLy8KKyAgLy8gaXMgZ3VhcmFudGVlZCB0byBwcm9kdWNl
IHRoZSBzYW1lIGhhc2ggZXhwYW5zaW9uIGFzOgorICAvLworICAvLyAgIHN0YXRlID0gSDo6Y29t
YmluZShzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZTEpOworICAvLyAgIHN0YXRlID0gSDo6Y29tYmlu
ZShzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZTIpOworICAvLyAgIHN0YXRlID0gSDo6Y29tYmluZShz
dGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZTMpOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUuLi4gVHM+CisgIHN0YXRpYyBIIGNvbWJpbmUoSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUsIGNv
bnN0IFRzJi4uLiB2YWx1ZXMpOworICBzdGF0aWMgSCBjb21iaW5lKEggc3RhdGUpIHsgcmV0dXJu
IHN0YXRlOyB9CisKKyAgLy8gSGFzaFN0YXRlQmFzZTo6Y29tYmluZV9jb250aWd1b3VzKCkKKyAg
Ly8KKyAgLy8gQ29tYmluZXMgYSBjb250aWd1b3VzIGFycmF5IG9mIGBzaXplYCBlbGVtZW50cyBp
bnRvIGEgaGFzaCBzdGF0ZSwgcmV0dXJuaW5nCisgIC8vIHRoZSB1cGRhdGVkIHN0YXRlLgorICAv
LworICAvLyBOT1RFOgorICAvLworICAvLyAgIHN0YXRlID0gSDo6Y29tYmluZV9jb250aWd1b3Vz
KHN0ZDo6bW92ZShzdGF0ZSksIGRhdGEsIHNpemUpOworICAvLworICAvLyBpcyBOT1QgZ3VhcmFu
dGVlZCB0byBwcm9kdWNlIHRoZSBzYW1lIGhhc2ggZXhwYW5zaW9uIGFzIGEgZm9yLWxvb3AgKGl0
IG1heQorICAvLyBwZXJmb3JtIGludGVybmFsIG9wdGltaXphdGlvbnMpLiAgSWYgeW91IG5lZWQg
dGhpcyBndWFyYW50ZWUsIHVzZSB0aGUKKyAgLy8gZm9yLWxvb3AgaW5zdGVhZC4KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBIIGNvbWJpbmVfY29udGlndW91cyhIIHN0YXRlLCBj
b25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSk7Cit9OworCisvLyBpc191bmlxdWVseV9yZXByZXNl
bnRlZAorLy8KKy8vIGBpc191bmlxdWVseV9yZXByZXNlbnRlZDxUPmAgaXMgYSB0cmFpdCBjbGFz
cyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIGBUYAorLy8gaXMgdW5pcXVlbHkgcmVwcmVzZW50ZWQu
CisvLworLy8gQSB0eXBlIGlzICJ1bmlxdWVseSByZXByZXNlbnRlZCIgaWYgdHdvIGVxdWFsIHZh
bHVlcyBvZiB0aGF0IHR5cGUgYXJlCisvLyBndWFyYW50ZWVkIHRvIGhhdmUgdGhlIHNhbWUgYnl0
ZXMgaW4gdGhlaXIgdW5kZXJseWluZyBzdG9yYWdlLiBJbiBvdGhlcgorLy8gd29yZHMsIGlmIGBh
ID09IGJgLCB0aGVuIGBtZW1jbXAoJmEsICZiLCBzaXplb2YoVCkpYCBpcyBndWFyYW50ZWVkIHRv
IGJlCisvLyB6ZXJvLiBUaGlzIHByb3BlcnR5IGNhbm5vdCBiZSBkZXRlY3RlZCBhdXRvbWF0aWNh
bGx5LCBzbyB0aGlzIHRyYWl0IGlzIGZhbHNlCisvLyBieSBkZWZhdWx0LCBidXQgY2FuIGJlIHNw
ZWNpYWxpemVkIGJ5IHR5cGVzIHRoYXQgd2lzaCB0byBhc3NlcnQgdGhhdCB0aGV5IGFyZQorLy8g
dW5pcXVlbHkgcmVwcmVzZW50ZWQuIFRoaXMgbWFrZXMgdGhlbSBlbGlnaWJsZSBmb3IgY2VydGFp
biBvcHRpbWl6YXRpb25zLgorLy8KKy8vIElmIHlvdSBoYXZlIGFueSBkb3VidCB3aGF0c29ldmVy
LCBkbyBub3Qgc3BlY2lhbGl6ZSB0aGlzIHRlbXBsYXRlLgorLy8gVGhlIGRlZmF1bHQgaXMgY29t
cGxldGVseSBzYWZlLCBhbmQgbWVyZWx5IGRpc2FibGVzIHNvbWUgb3B0aW1pemF0aW9ucworLy8g
dGhhdCB3aWxsIG5vdCBtYXR0ZXIgZm9yIG1vc3QgdHlwZXMuIFNwZWNpYWxpemluZyB0aGlzIHRl
bXBsYXRlLAorLy8gb24gdGhlIG90aGVyIGhhbmQsIGNhbiBiZSB2ZXJ5IGhhemFyZG91cy4KKy8v
CisvLyBUbyBiZSB1bmlxdWVseSByZXByZXNlbnRlZCwgYSB0eXBlIG11c3Qgbm90IGhhdmUgbXVs
dGlwbGUgd2F5cyBvZgorLy8gcmVwcmVzZW50aW5nIHRoZSBzYW1lIHZhbHVlOyBmb3IgZXhhbXBs
ZSwgZmxvYXQgYW5kIGRvdWJsZSBhcmUgbm90CisvLyB1bmlxdWVseSByZXByZXNlbnRlZCwgYmVj
YXVzZSB0aGV5IGhhdmUgZGlzdGluY3QgcmVwcmVzZW50YXRpb25zIGZvcgorLy8gKzAgYW5kIC0w
LiBGdXJ0aGVybW9yZSwgdGhlIHR5cGUncyBieXRlIHJlcHJlc2VudGF0aW9uIG11c3QgY29uc2lz
dAorLy8gc29sZWx5IG9mIHVzZXItY29udHJvbGxlZCBkYXRhLCB3aXRoIG5vIHBhZGRpbmcgYml0
cyBhbmQgbm8gY29tcGlsZXItCisvLyBjb250cm9sbGVkIGRhdGEgc3VjaCBhcyB2cHRycyBvciBz
YW5pdGl6ZXIgbWV0YWRhdGEuIFRoaXMgaXMgdXN1YWxseQorLy8gdmVyeSBkaWZmaWN1bHQgdG8g
Z3VhcmFudGVlLCBiZWNhdXNlIGluIG1vc3QgY2FzZXMgdGhlIGNvbXBpbGVyIGNhbgorLy8gaW5z
ZXJ0IGRhdGEgYW5kIHBhZGRpbmcgYml0cyBhdCBpdHMgb3duIGRpc2NyZXRpb24uCisvLworLy8g
SWYgeW91IHNwZWNpYWxpemUgdGhpcyB0ZW1wbGF0ZSBmb3IgYSB0eXBlIGBUYCwgeW91IG11c3Qg
ZG8gc28gaW4gdGhlIGZpbGUKKy8vIHRoYXQgZGVmaW5lcyB0aGF0IHR5cGUgKG9yIGluIHRoaXMg
ZmlsZSkuIElmIHlvdSBkZWZpbmUgdGhhdCBzcGVjaWFsaXphdGlvbgorLy8gYW55d2hlcmUgZWxz
ZSwgYGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkPFQ+YCBjb3VsZCBoYXZlIGRpZmZlcmVudCBtZWFu
aW5ncworLy8gaW4gZGlmZmVyZW50IHBsYWNlcy4KKy8vCisvLyBUaGUgRW5hYmxlIHBhcmFtZXRl
ciBpcyBtZWFuaW5nbGVzczsgaXQgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSwKKy8vIHRv
IHN1cHBvcnQgY2VydGFpbiBTRklOQUUgdGVjaG5pcXVlcyB3aGVuIGRlZmluaW5nIHNwZWNpYWxp
emF0aW9ucy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgor
c3RydWN0IGlzX3VuaXF1ZWx5X3JlcHJlc2VudGVkIDogc3RkOjpmYWxzZV90eXBlIHt9OworCisv
LyBpc191bmlxdWVseV9yZXByZXNlbnRlZDx1bnNpZ25lZCBjaGFyPgorLy8KKy8vIHVuc2lnbmVk
IGNoYXIgaXMgYSBzeW5vbnltIGZvciAiYnl0ZSIsIHNvIGl0IGlzIGd1YXJhbnRlZWQgdG8gYmUK
Ky8vIHVuaXF1ZWx5IHJlcHJlc2VudGVkLgordGVtcGxhdGUgPD4KK3N0cnVjdCBpc191bmlxdWVs
eV9yZXByZXNlbnRlZDx1bnNpZ25lZCBjaGFyPiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworCisvLyBp
c191bmlxdWVseV9yZXByZXNlbnRlZCBmb3Igbm9uLXN0YW5kYXJkIGludGVncmFsIHR5cGVzCisv
LworLy8gSW50ZWdyYWwgdHlwZXMgb3RoZXIgdGhhbiBib29sIHNob3VsZCBiZSB1bmlxdWVseSBy
ZXByZXNlbnRlZCBvbiBhbnkKKy8vIHBsYXRmb3JtIHRoYXQgdGhpcyB3aWxsIHBsYXVzaWJseSBi
ZSBwb3J0ZWQgdG8uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50ZWdyYWw+CitzdHJ1Y3QgaXNfdW5p
cXVlbHlfcmVwcmVzZW50ZWQ8CisgICAgSW50ZWdyYWwsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfaW50ZWdyYWw8SW50ZWdyYWw+Ojp2YWx1ZT46OnR5cGU+CisgICAgOiBzdGQ6OnRy
dWVfdHlwZSB7fTsKKworLy8gaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8Ym9vbD4KKy8vCisvLwor
dGVtcGxhdGUgPD4KK3N0cnVjdCBpc191bmlxdWVseV9yZXByZXNlbnRlZDxib29sPiA6IHN0ZDo6
ZmFsc2VfdHlwZSB7fTsKKworLy8gaGFzaF9ieXRlcygpCisvLworLy8gQ29udmVuaWVuY2UgZnVu
Y3Rpb24gdGhhdCBjb21iaW5lcyBgaGFzaF9zdGF0ZWAgd2l0aCB0aGUgYnl0ZSByZXByZXNlbnRh
dGlvbgorLy8gb2YgYHZhbHVlYC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgor
SCBoYXNoX2J5dGVzKEggaGFzaF9zdGF0ZSwgY29uc3QgVCYgdmFsdWUpIHsKKyAgY29uc3QgdW5z
aWduZWQgY2hhciogc3RhcnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PigmdmFsdWUpOworICByZXR1cm4gSDo6Y29tYmluZV9jb250aWd1b3VzKHN0ZDo6bW92ZShoYXNo
X3N0YXRlKSwgc3RhcnQsIHNpemVvZih2YWx1ZSkpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8gQWJzbEhhc2hWYWx1ZSBmb3IgQmFzaWMgVHlwZXMKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKy8vIE5vdGU6IERlZmF1bHQgYEFic2xIYXNoVmFsdWVgIGltcGxlbWVudGF0aW9u
cyBsaXZlIGluIGBoYXNoX2ludGVybmFsYC4gVGhpcworLy8gYWxsb3dzIHVzIHRvIGJsb2NrIGxl
eGljYWwgc2NvcGUgbG9va3VwIHdoZW4gZG9pbmcgYW4gdW5xdWFsaWZpZWQgY2FsbCB0bworLy8g
YEFic2xIYXNoVmFsdWVgIGJlbG93LiBVc2VyLWRlZmluZWQgaW1wbGVtZW50YXRpb25zIG9mIGBB
YnNsSGFzaFZhbHVlYCBjYW4KKy8vIG9ubHkgYmUgZm91bmQgdmlhIEFETC4KKworLy8gQWJzbEhh
c2hWYWx1ZSgpIGZvciBoYXNoaW5nIGJvb2wgdmFsdWVzCisvLworLy8gV2UgdXNlIFNGSU5BRSB0
byBlbnN1cmUgdGhhdCB0aGlzIG92ZXJsb2FkIG9ubHkgYWNjZXB0cyBib29sLCBub3QgdHlwZXMg
dGhhdAorLy8gYXJlIGNvbnZlcnRpYmxlIHRvIGJvb2wuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwg
dHlwZW5hbWUgQj4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxCLCBib29s
Pjo6dmFsdWUsIEg+Ojp0eXBlIEFic2xIYXNoVmFsdWUoCisgICAgSCBoYXNoX3N0YXRlLCBCIHZh
bHVlKSB7CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFsdWUgPyAxIDogMCkp
OworfQorCisvLyBBYnNsSGFzaFZhbHVlKCkgZm9yIGhhc2hpbmcgZW51bSB2YWx1ZXMKK3RlbXBs
YXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBFbnVtPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19lbnVtPEVudW0+Ojp2YWx1ZSwgSD46OnR5cGUgQWJzbEhhc2hWYWx1ZSgKKyAgICBI
IGhhc2hfc3RhdGUsIEVudW0gZSkgeworICAvLyBJbiBwcmFjdGljZSwgd2UgY291bGQgYWxtb3N0
IGNlcnRhaW5seSBqdXN0IGludm9rZSBoYXNoX2J5dGVzIGRpcmVjdGx5LAorICAvLyBidXQgaXQn
cyBwb3NzaWJsZSB0aGF0IGEgc2FuaXRpemVyIG1pZ2h0IG9uZSBkYXkgd2FudCB0bworICAvLyBz
dG9yZSBkYXRhIGluIHRoZSB1bnVzZWQgYml0cyBvZiBhbiBlbnVtLiBUbyBhdm9pZCB0aGF0IHJp
c2ssIHdlCisgIC8vIGNvbnZlcnQgdG8gdGhlIHVuZGVybHlpbmcgdHlwZSBiZWZvcmUgaGFzaGlu
Zy4gSG9wZWZ1bGx5IHRoaXMgd2lsbCBnZXQKKyAgLy8gb3B0aW1pemVkIGF3YXk7IGlmIG5vdCwg
d2UgY2FuIHJlb3BlbiBkaXNjdXNzaW9uIHdpdGggYy10b29sY2hhaW4tdGVhbS4KKyAgcmV0dXJu
IEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLAorICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFbnVtPjo6dHlwZT4oZSkp
OworfQorLy8gQWJzbEhhc2hWYWx1ZSgpIGZvciBoYXNoaW5nIGZsb2F0aW5nLXBvaW50IHZhbHVl
cwordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIEZsb2F0PgordHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxGbG9hdD46OnZhbHVlLCBIPjo6dHlwZQor
QWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIEZsb2F0IHZhbHVlKSB7CisgIHJldHVybiBoYXNo
X2ludGVybmFsOjpoYXNoX2J5dGVzKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPT0gMCA/IDAgOiB2YWx1ZSk7Cit9CisKKy8v
IExvbmcgZG91YmxlIGhhcyB0aGUgcHJvcGVydHkgdGhhdCBpdCBtaWdodCBoYXZlIGV4dHJhIHVu
dXNlZCBieXRlcyBpbiBpdC4KKy8vIEZvciBleGFtcGxlLCBpbiB4ODYgc2l6ZW9mKGxvbmcgZG91
YmxlKT09MTYgYnV0IGl0IG9ubHkgcmVhbGx5IHVzZXMgODAtYml0cworLy8gb2YgaXQuIFRoaXMg
bWVhbnMgd2UgY2FuJ3QgdXNlIGhhc2hfYnl0ZXMgb24gYSBsb25nIGRvdWJsZSBhbmQgaGF2ZSB0
bworLy8gY29udmVydCBpdCB0byBzb21ldGhpbmcgZWxzZSBmaXJzdC4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBIPgorSCBBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgbG9uZyBkb3VibGUgdmFsdWUp
IHsKKyAgY29uc3QgaW50IGNhdGVnb3J5ID0gc3RkOjpmcGNsYXNzaWZ5KHZhbHVlKTsKKyAgc3dp
dGNoIChjYXRlZ29yeSkgeworICAgIGNhc2UgRlBfSU5GSU5JVEU6CisgICAgICAvLyBBZGQgdGhl
IHNpZ24gYml0IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiArSW5mIGFuZCAtSW5mCisgICAgICBo
YXNoX3N0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHN0ZDo6c2lnbmJp
dCh2YWx1ZSkpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZQX05BTjoKKyAgICBjYXNlIEZQ
X1pFUk86CisgICAgZGVmYXVsdDoKKyAgICAgIC8vIENhdGVnb3J5IGlzIGVub3VnaCBmb3IgdGhl
c2UuCisgICAgICBicmVhazsKKworICAgIGNhc2UgRlBfTk9STUFMOgorICAgIGNhc2UgRlBfU1VC
Tk9STUFMOgorICAgICAgLy8gV2UgY2FuJ3QgY29udmVydCBgdmFsdWVgIGRpcmVjdGx5IHRvIGRv
dWJsZSBiZWNhdXNlIHRoaXMgd291bGQgaGF2ZQorICAgICAgLy8gdW5kZWZpbmVkIGJlaGF2aW9y
IGlmIHRoZSB2YWx1ZSBpcyBvdXQgb2YgcmFuZ2UuCisgICAgICAvLyBzdGQ6OmZyZXhwIGdpdmVz
IHVzIGEgdmFsdWUgaW4gdGhlIHJhbmdlICgtMSwgLS41XSBvciBbLjUsIDEpIHRoYXQgaXMKKyAg
ICAgIC8vIGd1YXJhbnRlZWQgdG8gYmUgaW4gcmFuZ2UgZm9yIGBkb3VibGVgLiBUaGUgdHJ1bmNh
dGlvbiBpcworICAgICAgLy8gaW1wbGVtZW50YXRpb24gZGVmaW5lZCwgYnV0IHRoYXQgd29ya3Mg
YXMgbG9uZyBhcyBpdCBpcyBkZXRlcm1pbmlzdGljLgorICAgICAgaW50IGV4cDsKKyAgICAgIGF1
dG8gbWFudGlzc2EgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6ZnJleHAodmFsdWUsICZleHAp
KTsKKyAgICAgIGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwg
bWFudGlzc2EsIGV4cCk7CisgIH0KKworICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFz
aF9zdGF0ZSksIGNhdGVnb3J5KTsKK30KKworLy8gQWJzbEhhc2hWYWx1ZSgpIGZvciBoYXNoaW5n
IHBvaW50ZXJzCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVD4KK0ggQWJzbEhhc2hW
YWx1ZShIIGhhc2hfc3RhdGUsIFQqIHB0cikgeworICByZXR1cm4gaGFzaF9pbnRlcm5hbDo6aGFz
aF9ieXRlcyhzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHB0cik7Cit9CisKKy8vIEFic2xIYXNoVmFs
dWUoKSBmb3IgaGFzaGluZyBudWxscHRyX3QKK3RlbXBsYXRlIDx0eXBlbmFtZSBIPgorSCBBYnNs
SGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgc3RkOjpudWxscHRyX3QpIHsKKyAgcmV0dXJuIEg6OmNv
bWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBzdGF0aWNfY2FzdDx2b2lkKj4obnVsbHB0cikp
OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWJzbEhhc2hWYWx1ZSBmb3IgQ29t
cG9zaXRlIFR5cGVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBpc19oYXNoYWJsZSgp
CisvLworLy8gVHJhaXQgY2xhc3Mgd2hpY2ggcmV0dXJucyB0cnVlIGlmIFQgaXMgaGFzaGFibGUg
YnkgdGhlIGFic2w6Okhhc2ggZnJhbWV3b3JrLgorLy8gVXNlZCBmb3IgdGhlIEFic2xIYXNoVmFs
dWUgaW1wbGVtZW50YXRpb25zIGZvciBjb21wb3NpdGUgdHlwZXMgYmVsb3cuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19oYXNoYWJsZTsKKworLy8gQWJzbEhhc2hWYWx1ZSgpIGZv
ciBoYXNoaW5nIHBhaXJzCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8aXNfaGFzaGFibGU8VDE+Ojp2YWx1ZSAm
JiBpc19oYXNoYWJsZTxUMj46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgSD46OnR5
cGUKK0Fic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBjb25zdCBzdGQ6OnBhaXI8VDEsIFQyPiYg
cCkgeworICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHAuZmlyc3Qs
IHAuc2Vjb25kKTsKK30KKworLy8gaGFzaF90dXBsZSgpCisvLworLy8gSGVscGVyIGZ1bmN0aW9u
IGZvciBoYXNoaW5nIGEgdHVwbGUuIFRoZSB0aGlyZCBhcmd1bWVudCBzaG91bGQKKy8vIGJlIGFu
IGluZGV4X3NlcXVlbmNlIHJ1bm5pbmcgZnJvbSAwIHRvIHR1cGxlX3NpemU8VHVwbGU+IC0gMS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUdXBsZSwgc2l6ZV90Li4uIElzPgorSCBo
YXNoX3R1cGxlKEggaGFzaF9zdGF0ZSwgY29uc3QgVHVwbGUmIHQsIGFic2w6OmluZGV4X3NlcXVl
bmNlPElzLi4uPikgeworICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSks
IHN0ZDo6Z2V0PElzPih0KS4uLik7Cit9CisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcg
dHVwbGVzCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUuLi4gVHM+CisjaWYgZGVmaW5l
ZChfTVNDX1ZFUikKKy8vIFRoaXMgU0ZJTkFFIGdldHMgTVNWQyBjb25mdXNlZCB1bmRlciBzb21l
IGNvbmRpdGlvbnMuIExldCdzIGp1c3QgZGlzYWJsZSBpdAorLy8gZm9yIG5vdy4KK0gKKyNlbHNl
ICAvLyBfTVNDX1ZFUgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8YWJzbDo6Y29uanVuY3Rpb248
aXNfaGFzaGFibGU8VHM+Li4uPjo6dmFsdWUsIEg+Ojp0eXBlCisjZW5kaWYgIC8vIF9NU0NfVkVS
CitBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgY29uc3Qgc3RkOjp0dXBsZTxUcy4uLj4mIHQp
IHsKKyAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhhc2hfdHVwbGUoc3RkOjptb3ZlKGhhc2hfc3Rh
dGUpLCB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjptYWtlX2lu
ZGV4X3NlcXVlbmNlPHNpemVvZi4uLihUcyk+KCkpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8gQWJzbEhhc2hWYWx1ZSBmb3IgUG9pbnRlcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgdW5pcXVlX3B0cgordGVtcGxhdGUg
PHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEQ+CitIIEFic2xIYXNoVmFsdWUoSCBo
YXNoX3N0YXRlLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VCwgRD4mIHB0cikgeworICByZXR1cm4g
SDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHB0ci5nZXQoKSk7Cit9CisKKy8vIEFi
c2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgc2hhcmVkX3B0cgordGVtcGxhdGUgPHR5cGVuYW1lIEgs
IHR5cGVuYW1lIFQ+CitIIEFic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBjb25zdCBzdGQ6OnNo
YXJlZF9wdHI8VD4mIHB0cikgeworICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9z
dGF0ZSksIHB0ci5nZXQoKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNs
SGFzaFZhbHVlIGZvciBTdHJpbmctTGlrZSBUeXBlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFzaGluZyBzdHJpbmdzCisvLworLy8gQWxsIHRoZSBz
dHJpbmctbGlrZSB0eXBlcyBzdXBwb3J0ZWQgaGVyZSBwcm92aWRlIHRoZSBzYW1lIGhhc2ggZXhw
YW5zaW9uIGZvcgorLy8gdGhlIHNhbWUgY2hhcmFjdGVyIHNlcXVlbmNlLiBUaGVzZSB0eXBlcyBh
cmU6CisvLworLy8gIC0gYHN0ZDo6c3RyaW5nYCAoYW5kIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIs
IHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIEE+IGZvcgorLy8gICAgICBhbnkgYWxsb2NhdG9yIEEp
CisvLyAgLSBgYWJzbDo6c3RyaW5nX3ZpZXdgIGFuZCBgc3RkOjpzdHJpbmdfdmlld2AKKy8vCisv
LyBGb3Igc2ltcGxpY2l0eSwgd2UgY3VycmVudGx5IHN1cHBvcnQgb25seSBgY2hhcmAgc3RyaW5n
cy4gVGhpcyBzdXBwb3J0IG1heQorLy8gYmUgYnJvYWRlbmVkLCBpZiBuZWNlc3NhcnksIGJ1dCB3
aXRoIHNvbWUgY2F1dGlvbiAtIHRoaXMgb3ZlcmxvYWQgd291bGQKKy8vIG1pc2JlaGF2ZSBpbiBj
YXNlcyB3aGVyZSB0aGUgdHJhaXRzJyBgZXEoKWAgbWVtYmVyIGlzbid0IGVxdWl2YWxlbnQgdG8g
YD09YAorLy8gb24gdGhlIHVuZGVybHlpbmcgY2hhcmFjdGVyIHR5cGUuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSD4KK0ggQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUsIGFic2w6OnN0cmluZ192aWV3
IHN0cikgeworICByZXR1cm4gSDo6Y29tYmluZSgKKyAgICAgIEg6OmNvbWJpbmVfY29udGlndW91
cyhzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHN0ci5kYXRhKCksIHN0ci5zaXplKCkpLAorICAgICAg
c3RyLnNpemUoKSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBYnNsSGFzaFZh
bHVlIGZvciBTZXF1ZW5jZSBDb250YWluZXJzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisv
LyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6YXJyYXkKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBILCB0eXBlbmFtZSBULCBzaXplX3QgTj4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPGlzX2hh
c2hhYmxlPFQ+Ojp2YWx1ZSwgSD46OnR5cGUgQWJzbEhhc2hWYWx1ZSgKKyAgICBIIGhhc2hfc3Rh
dGUsIGNvbnN0IHN0ZDo6YXJyYXk8VCwgTj4mIGFycmF5KSB7CisgIHJldHVybiBIOjpjb21iaW5l
X2NvbnRpZ3VvdXMoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBhcnJheS5kYXRhKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuc2l6ZSgpKTsKK30KKworLy8gQWJzbEhhc2hW
YWx1ZSBmb3IgaGFzaGluZyBzdGQ6OmRlcXVlCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5h
bWUgVCwgdHlwZW5hbWUgQWxsb2NhdG9yPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8aXNfaGFz
aGFibGU8VD46OnZhbHVlLCBIPjo6dHlwZSBBYnNsSGFzaFZhbHVlKAorICAgIEggaGFzaF9zdGF0
ZSwgY29uc3Qgc3RkOjpkZXF1ZTxULCBBbGxvY2F0b3I+JiBkZXF1ZSkgeworICAvLyBUT0RPKGdy
b21lcik6IGludmVzdGlnYXRlIGEgbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gdGFraW5n
CisgIC8vIGFkdmFudGFnZSBvZiB0aGUgY2h1bmsgc3RydWN0dXJlLgorICBmb3IgKGNvbnN0IGF1
dG8mIHQgOiBkZXF1ZSkgeworICAgIGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZSho
YXNoX3N0YXRlKSwgdCk7CisgIH0KKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hf
c3RhdGUpLCBkZXF1ZS5zaXplKCkpOworfQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5n
IHN0ZDo6Zm9yd2FyZF9saXN0Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5hbWUgVCwgdHlw
ZW5hbWUgQWxsb2NhdG9yPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8aXNfaGFzaGFibGU8VD46
OnZhbHVlLCBIPjo6dHlwZSBBYnNsSGFzaFZhbHVlKAorICAgIEggaGFzaF9zdGF0ZSwgY29uc3Qg
c3RkOjpmb3J3YXJkX2xpc3Q8VCwgQWxsb2NhdG9yPiYgbGlzdCkgeworICBzaXplX3Qgc2l6ZSA9
IDA7CisgIGZvciAoY29uc3QgVCYgdCA6IGxpc3QpIHsKKyAgICBoYXNoX3N0YXRlID0gSDo6Y29t
YmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHQpOworICAgICsrc2l6ZTsKKyAgfQorICByZXR1
cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHNpemUpOworfQorCisvLyBBYnNs
SGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6bGlzdAordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEFsbG9jYXRvcj4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPGlz
X2hhc2hhYmxlPFQ+Ojp2YWx1ZSwgSD46OnR5cGUgQWJzbEhhc2hWYWx1ZSgKKyAgICBIIGhhc2hf
c3RhdGUsIGNvbnN0IHN0ZDo6bGlzdDxULCBBbGxvY2F0b3I+JiBsaXN0KSB7CisgIGZvciAoY29u
c3QgYXV0byYgdCA6IGxpc3QpIHsKKyAgICBoYXNoX3N0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1v
dmUoaGFzaF9zdGF0ZSksIHQpOworICB9CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZSho
YXNoX3N0YXRlKSwgbGlzdC5zaXplKCkpOworfQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNo
aW5nIHN0ZDo6dmVjdG9yCisvLworLy8gRG8gbm90IHVzZSB0aGlzIGZvciB2ZWN0b3I8Ym9vbD4u
IEl0IGRvZXMgbm90IGhhdmUgYSAuZGF0YSgpLCBhbmQgYSBmYWxsYmFjaworLy8gZm9yIHN0ZDo6
aGFzaDw+IGlzIG1vc3QgbGlrZWx5IGZhc3Rlci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBl
bmFtZSBULCB0eXBlbmFtZSBBbGxvY2F0b3I+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxpc19o
YXNoYWJsZTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfc2FtZTxULCBib29sPjo6dmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBIPjo6dHlwZQorQWJzbEhhc2hWYWx1ZShIIGhhc2hfc3RhdGUs
IGNvbnN0IHN0ZDo6dmVjdG9yPFQsIEFsbG9jYXRvcj4mIHZlY3RvcikgeworICByZXR1cm4gSDo6
Y29tYmluZShIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB2ZWN0
b3IuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVj
dG9yLnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgIHZlY3Rvci5zaXplKCkpOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWJzbEhhc2hWYWx1ZSBmb3IgT3JkZXJlZCBBc3Nv
Y2lhdGl2ZSBDb250YWluZXJzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBBYnNsSGFz
aFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6bWFwCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSCwgdHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZSBDb21wYXJlLAorICAgICAgICAgIHR5cGVuYW1l
IEFsbG9jYXRvcj4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPGlzX2hhc2hhYmxlPEtleT46OnZh
bHVlICYmIGlzX2hhc2hhYmxlPFQ+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEg+
Ojp0eXBlCitBYnNsSGFzaFZhbHVlKEggaGFzaF9zdGF0ZSwgY29uc3Qgc3RkOjptYXA8S2V5LCBU
LCBDb21wYXJlLCBBbGxvY2F0b3I+JiBtYXApIHsKKyAgZm9yIChjb25zdCBhdXRvJiB0IDogbWFw
KSB7CisgICAgaGFzaF9zdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCB0
KTsKKyAgfQorICByZXR1cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIG1hcC5z
aXplKCkpOworfQorCisvLyBBYnNsSGFzaFZhbHVlIGZvciBoYXNoaW5nIHN0ZDo6bXVsdGltYXAK
K3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1l
IENvbXBhcmUsCisgICAgICAgICAgdHlwZW5hbWUgQWxsb2NhdG9yPgordHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8aXNfaGFzaGFibGU8S2V5Pjo6dmFsdWUgJiYgaXNfaGFzaGFibGU8VD46OnZhbHVl
LAorICAgICAgICAgICAgICAgICAgICAgICAgSD46OnR5cGUKK0Fic2xIYXNoVmFsdWUoSCBoYXNo
X3N0YXRlLAorICAgICAgICAgICAgICBjb25zdCBzdGQ6Om11bHRpbWFwPEtleSwgVCwgQ29tcGFy
ZSwgQWxsb2NhdG9yPiYgbWFwKSB7CisgIGZvciAoY29uc3QgYXV0byYgdCA6IG1hcCkgeworICAg
IGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgdCk7CisgIH0K
KyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUpLCBtYXAuc2l6ZSgpKTsK
K30KKworLy8gQWJzbEhhc2hWYWx1ZSBmb3IgaGFzaGluZyBzdGQ6OnNldAordGVtcGxhdGUgPHR5
cGVuYW1lIEgsIHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgQWxsb2Nh
dG9yPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8aXNfaGFzaGFibGU8S2V5Pjo6dmFsdWUsIEg+
Ojp0eXBlIEFic2xIYXNoVmFsdWUoCisgICAgSCBoYXNoX3N0YXRlLCBjb25zdCBzdGQ6OnNldDxL
ZXksIENvbXBhcmUsIEFsbG9jYXRvcj4mIHNldCkgeworICBmb3IgKGNvbnN0IGF1dG8mIHQgOiBz
ZXQpIHsKKyAgICBoYXNoX3N0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSks
IHQpOworICB9CisgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92ZShoYXNoX3N0YXRlKSwgc2V0
LnNpemUoKSk7Cit9CisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgc3RkOjptdWx0aXNl
dAordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgQ29tcGFyZSwg
dHlwZW5hbWUgQWxsb2NhdG9yPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8aXNfaGFzaGFibGU8
S2V5Pjo6dmFsdWUsIEg+Ojp0eXBlIEFic2xIYXNoVmFsdWUoCisgICAgSCBoYXNoX3N0YXRlLCBj
b25zdCBzdGQ6Om11bHRpc2V0PEtleSwgQ29tcGFyZSwgQWxsb2NhdG9yPiYgc2V0KSB7CisgIGZv
ciAoY29uc3QgYXV0byYgdCA6IHNldCkgeworICAgIGhhc2hfc3RhdGUgPSBIOjpjb21iaW5lKHN0
ZDo6bW92ZShoYXNoX3N0YXRlKSwgdCk7CisgIH0KKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3RkOjpt
b3ZlKGhhc2hfc3RhdGUpLCBzZXQuc2l6ZSgpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vIEFic2xIYXNoVmFsdWUgZm9yIFdyYXBwZXIgVHlwZXMKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKy8vIEFic2xIYXNoVmFsdWUgZm9yIGhhc2hpbmcgYWJzbDo6b3B0aW9uYWwKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
aXNfaGFzaGFibGU8VD46OnZhbHVlLCBIPjo6dHlwZSBBYnNsSGFzaFZhbHVlKAorICAgIEggaGFz
aF9zdGF0ZSwgY29uc3QgYWJzbDo6b3B0aW9uYWw8VD4mIG9wdCkgeworICBpZiAob3B0KSBoYXNo
X3N0YXRlID0gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksICpvcHQpOworICByZXR1
cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIG9wdC5oYXNfdmFsdWUoKSk7Cit9
CisKKy8vIFZhcmlhbnRWaXNpdG9yCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KK3N0cnVjdCBWYXJp
YW50VmlzaXRvciB7CisgIEgmJiBoYXNoX3N0YXRlOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgSCBvcGVyYXRvcigpKGNvbnN0IFQmIHQpIGNvbnN0IHsKKyAgICByZXR1cm4gSDo6Y29tYmlu
ZShzdGQ6Om1vdmUoaGFzaF9zdGF0ZSksIHQpOworICB9Cit9OworCisvLyBBYnNsSGFzaFZhbHVl
IGZvciBoYXNoaW5nIGFic2w6OnZhcmlhbnQKK3RlbXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFt
ZS4uLiBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8Y29uanVuY3Rpb248aXNfaGFzaGFibGU8
VD4uLi4+Ojp2YWx1ZSwgSD46OnR5cGUKK0Fic2xIYXNoVmFsdWUoSCBoYXNoX3N0YXRlLCBjb25z
dCBhYnNsOjp2YXJpYW50PFQuLi4+JiB2KSB7CisgIGlmICghdi52YWx1ZWxlc3NfYnlfZXhjZXB0
aW9uKCkpIHsKKyAgICBoYXNoX3N0YXRlID0gYWJzbDo6dmlzaXQoVmFyaWFudFZpc2l0b3I8SD57
c3RkOjptb3ZlKGhhc2hfc3RhdGUpfSwgdik7CisgIH0KKyAgcmV0dXJuIEg6OmNvbWJpbmUoc3Rk
Ojptb3ZlKGhhc2hfc3RhdGUpLCB2LmluZGV4KCkpOworfQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworLy8gaGFzaF9yYW5nZV9vcl9ieXRlcygpCisvLworLy8gTWl4ZXMgYWxsIHZhbHVlcyBp
biB0aGUgcmFuZ2UgW2RhdGEsIGRhdGErc2l6ZSkgaW50byB0aGUgaGFzaCBzdGF0ZS4KKy8vIFRo
aXMgb3ZlcmxvYWQgYWNjZXB0cyBvbmx5IHVuaXF1ZWx5LXJlcHJlc2VudGVkIHR5cGVzLCBhbmQg
aGFzaGVzIHRoZW0gYnkKKy8vIGhhc2hpbmcgdGhlIGVudGlyZSByYW5nZSBvZiBieXRlcy4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
aXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8VD46OnZhbHVlLCBIPjo6dHlwZQoraGFzaF9yYW5nZV9v
cl9ieXRlcyhIIGhhc2hfc3RhdGUsIGNvbnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGNv
bnN0IGF1dG8qIGJ5dGVzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4o
ZGF0YSk7CisgIHJldHVybiBIOjpjb21iaW5lX2NvbnRpZ3VvdXMoc3RkOjptb3ZlKGhhc2hfc3Rh
dGUpLCBieXRlcywgc2l6ZW9mKFQpICogc2l6ZSk7Cit9CisKKy8vIGhhc2hfcmFuZ2Vfb3JfYnl0
ZXMoKQordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjwhaXNfdW5pcXVlbHlfcmVwcmVzZW50ZWQ8VD46OnZhbHVlLCBIPjo6dHlwZQoraGFz
aF9yYW5nZV9vcl9ieXRlcyhIIGhhc2hfc3RhdGUsIGNvbnN0IFQqIGRhdGEsIHNpemVfdCBzaXpl
KSB7CisgIGZvciAoY29uc3QgYXV0byBlbmQgPSBkYXRhICsgc2l6ZTsgZGF0YSA8IGVuZDsgKytk
YXRhKSB7CisgICAgaGFzaF9zdGF0ZSA9IEg6OmNvbWJpbmUoc3RkOjptb3ZlKGhhc2hfc3RhdGUp
LCAqZGF0YSk7CisgIH0KKyAgcmV0dXJuIGhhc2hfc3RhdGU7Cit9CisKKy8vIEludm9rZUhhc2hU
YWcKKy8vCisvLyBJbnZva2VIYXNoKEgsIGNvbnN0IFQmKSBpbnZva2VzIHRoZSBhcHByb3ByaWF0
ZSBoYXNoIGltcGxlbWVudGF0aW9uIGZvciBhCisvLyBoYXNoZXIgb2YgdHlwZSBgSGAgYW5kIGEg
dmFsdWUgb2YgdHlwZSBgVGAuIElmIGBUYCBpcyBub3QgaGFzaGFibGUsIHRoZXJlCisvLyB3aWxs
IGJlIG5vIG1hdGNoaW5nIG92ZXJsb2FkIG9mIEludm9rZUhhc2goKS4KKy8vIE5vdGU6IFNvbWUg
cGxhdGZvcm1zIChlZyBNU1ZDKSBkbyBub3Qgc3VwcG9ydCB0aGUgZGV0ZWN0IGlkaW9tIG9uCisv
LyBzdGQ6Omhhc2guIEluIHRob3NlIHBsYXRmb3JtcyB0aGUgbGFzdCBmYWxsYmFjayB3aWxsIGJl
IHN0ZDo6aGFzaCBhbmQKKy8vIEludm9rZUhhc2goKSB3aWxsIGFsd2F5cyBoYXZlIGEgdmFsaWQg
b3ZlcmxvYWQgZXZlbiBpZiBzdGQ6Omhhc2g8VD4gaXMgbm90CisvLyB2YWxpZC4KKy8vCisvLyBX
ZSB0cnkgdGhlIGZvbGxvd2luZyBvcHRpb25zIGluIG9yZGVyOgorLy8gICAqIElmIGlzX3VuaXF1
ZWx5X3JlcHJlc2VudGVkLCBoYXNoIGJ5dGVzIGRpcmVjdGx5LgorLy8gICAqIEFETCBBYnNsSGFz
aFZhbHVlKEgsIGNvbnN0IFQmKSBjYWxsLgorLy8gICAqIHN0ZDo6aGFzaDxUPgorCisvLyBJbiBN
U1ZDIHdlIGNhbid0IHByb2JlIHN0ZDo6aGFzaCBvciBzdGRleHQ6Omhhc2ggYmVjYXVzZSBpdCB0
cmlnZ2VycyBhCisvLyBzdGF0aWNfYXNzZXJ0IGluc3RlYWQgb2YgZmFpbGluZyBzdWJzdGl0dXRp
b24uCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgQUJTTF9IQVNIX0lOVEVSTkFMX0NB
Tl9QT0lTT05fIDAKKyNlbHNlICAgLy8gX01TQ19WRVIKKyNkZWZpbmUgQUJTTF9IQVNIX0lOVEVS
TkFMX0NBTl9QT0lTT05fIDEKKyNlbmRpZiAgLy8gX01TQ19WRVIKKworI2lmIGRlZmluZWQoQUJT
TF9JTlRFUk5BTF9MRUdBQ1lfSEFTSF9OQU1FU1BBQ0UpICYmIFwKKyAgICBBQlNMX0hBU0hfSU5U
RVJOQUxfQ0FOX1BPSVNPTl8KKyNkZWZpbmUgQUJTTF9IQVNIX0lOVEVSTkFMX1NVUFBPUlRfTEVH
QUNZX0hBU0hfIDEKKyNlbHNlCisjZGVmaW5lIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xF
R0FDWV9IQVNIXyAwCisjZW5kaWYKKworZW51bSBjbGFzcyBJbnZva2VIYXNoVGFnIHsKKyAga1Vu
aXF1ZWx5UmVwcmVzZW50ZWQsCisgIGtIYXNoVmFsdWUsCisjaWYgQUJTTF9IQVNIX0lOVEVSTkFM
X1NVUFBPUlRfTEVHQUNZX0hBU0hfCisgIGtMZWdhY3lIYXNoLAorI2VuZGlmICAvLyBBQlNMX0hB
U0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8KKyAga1N0ZEhhc2gsCisgIGtOb25lCit9
OworCisvLyBIYXNoU2VsZWN0CisvLworLy8gVHlwZSB0cmFpdCB0byBzZWxlY3QgdGhlIGFwcHJv
cHJpYXRlIGhhc2ggaW1wbGVtZW50YXRpb24gdG8gdXNlLgorLy8gSGFzaFNlbGVjdDxUPjo6dmFs
dWUgaXMgYW4gaW5zdGFuY2Ugb2YgSW52b2tlSGFzaFRhZyB0aGF0IGluZGljYXRlcyB0aGUgYmVz
dAorLy8gYXZhaWxhYmxlIGhhc2hpbmcgbWVjaGFuaXNtLgorLy8gU2VlIGBOb3RlYCBhYm92ZSBh
Ym91dCBNU1ZDLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSGFzaFNlbGVjdCB7Cisg
cHJpdmF0ZToKKyAgc3RydWN0IFN0YXRlIDogSGFzaFN0YXRlQmFzZTxTdGF0ZT4geworICAgIHN0
YXRpYyBTdGF0ZSBjb21iaW5lX2NvbnRpZ3VvdXMoU3RhdGUgaGFzaF9zdGF0ZSwgY29uc3QgdW5z
aWduZWQgY2hhciosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qp
OworICAgIHVzaW5nIFN0YXRlOjpIYXNoU3RhdGVCYXNlOjpjb21iaW5lX2NvbnRpZ3VvdXM7Cisg
IH07CisKKyAgLy8gYFByb2JlPFYsIFRhZz46OnZhbHVlYCBldmFsdWF0ZXMgdG8gYFY8VD46OnZh
bHVlYCBpZiBpdCBpcyBhIHZhbGlkCisgIC8vIGV4cHJlc3Npb24sIGFuZCBgZmFsc2VgIG90aGVy
d2lzZS4KKyAgLy8gYFByb2JlPFYsIFRhZz46OnRhZ2AgYWx3YXlzIGV2YWx1YXRlcyB0byBgVGFn
YC4KKyAgdGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgViwgSW52b2tlSGFzaFRh
ZyBUYWc+CisgIHN0cnVjdCBQcm9iZSB7CisgICBwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBVLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxWPFU+Ojp2YWx1ZSwgaW50Pjo6dHlwZSA9
IDA+CisgICAgc3RhdGljIHN0ZDo6dHJ1ZV90eXBlIFRlc3QoaW50KTsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4KKyAgICBzdGF0aWMgc3RkOjpmYWxzZV90eXBlIFRlc3QoY2hhcik7CisKKyAg
IHB1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIEludm9rZUhhc2hUYWcga1RhZyA9IFRhZzsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBkZWNsdHlwZSgKKyAgICAgICAgVGVz
dDxhYnNsOjpyZW1vdmVfY29uc3RfdDxhYnNsOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+PigwKSk6
OnZhbHVlOworICB9OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICB1c2luZyBQcm9iZVVu
aXF1ZWx5UmVwcmVzZW50ZWQgPSBpc191bmlxdWVseV9yZXByZXNlbnRlZDxVPjsKKworICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVT4KKyAgdXNpbmcgUHJvYmVIYXNoVmFsdWUgPQorICAgICAgc3RkOjpp
c19zYW1lPFN0YXRlLCBkZWNsdHlwZShBYnNsSGFzaFZhbHVlKHN0ZDo6ZGVjbHZhbDxTdGF0ZT4o
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OmRlY2x2YWw8Y29uc3QgVSY+KCkpKT47CisKKyNpZiBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9S
VF9MRUdBQ1lfSEFTSF8KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHVzaW5nIFByb2JlTGVn
YWN5SGFzaCA9CisgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPGRlY2x0eXBlKEFCU0xfSU5URVJO
QUxfTEVHQUNZX0hBU0hfTkFNRVNQQUNFOjpoYXNoPAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVPigpKHN0ZDo6ZGVjbHZhbDxjb25zdCBVJj4oKSkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Q+OworI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5URVJOQUxfU1VQ
UE9SVF9MRUdBQ1lfSEFTSF8KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgdXNpbmcgUHJv
YmVTdGRIYXNoID0KKyNpZiBBQlNMX0hBU0hfSU5URVJOQUxfQ0FOX1BPSVNPTl8KKyAgICAgIHN0
ZDo6aXNfY29udmVydGlibGU8ZGVjbHR5cGUoc3RkOjpoYXNoPFU+KCkoc3RkOjpkZWNsdmFsPGNv
bnN0IFUmPigpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdD47CisjZWxzZSAg
IC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXworICAgICAgc3RkOjp0cnVlX3R5cGU7
CisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9DQU5fUE9JU09OXworCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBVPgorICB1c2luZyBQcm9iZU5vbmUgPSBzdGQ6OnRydWVfdHlwZTsKKworIHB1
YmxpYzoKKyAgLy8gUHJvYmUgZWFjaCBpbXBsZW1lbnRhdGlvbiBpbiBvcmRlci4KKyAgLy8gZGlz
anVuY3Rpb24gcHJvdmlkZXMgc2hvcnQgY2lyY3V0aW5nIHdydCBpbnN0YW50aWF0aW9uLgorICBz
dGF0aWMgY29uc3RleHByIEludm9rZUhhc2hUYWcgdmFsdWUgPSBhYnNsOjpkaXNqdW5jdGlvbjwK
KyAgICAgIFByb2JlPFByb2JlVW5pcXVlbHlSZXByZXNlbnRlZCwgSW52b2tlSGFzaFRhZzo6a1Vu
aXF1ZWx5UmVwcmVzZW50ZWQ+LAorICAgICAgUHJvYmU8UHJvYmVIYXNoVmFsdWUsIEludm9rZUhh
c2hUYWc6OmtIYXNoVmFsdWU+LAorI2lmIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FD
WV9IQVNIXworICAgICAgUHJvYmU8UHJvYmVMZWdhY3lIYXNoLCBJbnZva2VIYXNoVGFnOjprTGVn
YWN5SGFzaD4sCisjZW5kaWYgIC8vIEFCU0xfSEFTSF9JTlRFUk5BTF9TVVBQT1JUX0xFR0FDWV9I
QVNIXworICAgICAgUHJvYmU8UHJvYmVTdGRIYXNoLCBJbnZva2VIYXNoVGFnOjprU3RkSGFzaD4s
CisgICAgICBQcm9iZTxQcm9iZU5vbmUsIEludm9rZUhhc2hUYWc6OmtOb25lPj46OmtUYWc7Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19oYXNoYWJsZSA6IHN0ZDo6aW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgSGFzaFNlbGVjdDxUPjo6dmFsdWUgIT0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludm9rZUhhc2hUYWc6
OmtOb25lPiB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVuYW1lIFQ+CithYnNsOjpl
bmFibGVfaWZfdDxIYXNoU2VsZWN0PFQ+Ojp2YWx1ZSA9PSBJbnZva2VIYXNoVGFnOjprVW5pcXVl
bHlSZXByZXNlbnRlZCwKKyAgICAgICAgICAgICAgICAgIEg+CitJbnZva2VIYXNoKEggc3RhdGUs
IGNvbnN0IFQmIHZhbHVlKSB7CisgIHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNoX2J5dGVzKHN0
ZDo6bW92ZShzdGF0ZSksIHZhbHVlKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVu
YW1lIFQ+CithYnNsOjplbmFibGVfaWZfdDxIYXNoU2VsZWN0PFQ+Ojp2YWx1ZSA9PSBJbnZva2VI
YXNoVGFnOjprSGFzaFZhbHVlLCBIPgorSW52b2tlSGFzaChIIHN0YXRlLCBjb25zdCBUJiB2YWx1
ZSkgeworICByZXR1cm4gQWJzbEhhc2hWYWx1ZShzdGQ6Om1vdmUoc3RhdGUpLCB2YWx1ZSk7Cit9
CisKKyNpZiBBQlNMX0hBU0hfSU5URVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8KK3RlbXBsYXRl
IDx0eXBlbmFtZSBILCB0eXBlbmFtZSBUPgorYWJzbDo6ZW5hYmxlX2lmX3Q8SGFzaFNlbGVjdDxU
Pjo6dmFsdWUgPT0gSW52b2tlSGFzaFRhZzo6a0xlZ2FjeUhhc2gsIEg+CitJbnZva2VIYXNoKEgg
c3RhdGUsIGNvbnN0IFQmIHZhbHVlKSB7CisgIHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNoX2J5
dGVzKAorICAgICAgc3RkOjptb3ZlKHN0YXRlKSwgQUJTTF9JTlRFUk5BTF9MRUdBQ1lfSEFTSF9O
QU1FU1BBQ0U6Omhhc2g8VD57fSh2YWx1ZSkpOworfQorI2VuZGlmICAvLyBBQlNMX0hBU0hfSU5U
RVJOQUxfU1VQUE9SVF9MRUdBQ1lfSEFTSF8KKwordGVtcGxhdGUgPHR5cGVuYW1lIEgsIHR5cGVu
YW1lIFQ+CithYnNsOjplbmFibGVfaWZfdDxIYXNoU2VsZWN0PFQ+Ojp2YWx1ZSA9PSBJbnZva2VI
YXNoVGFnOjprU3RkSGFzaCwgSD4KK0ludm9rZUhhc2goSCBzdGF0ZSwgY29uc3QgVCYgdmFsdWUp
IHsKKyAgcmV0dXJuIGhhc2hfaW50ZXJuYWw6Omhhc2hfYnl0ZXMoc3RkOjptb3ZlKHN0YXRlKSwg
c3RkOjpoYXNoPFQ+e30odmFsdWUpKTsKK30KKworLy8gQ2l0eUhhc2hTdGF0ZQorY2xhc3MgQ2l0
eUhhc2hTdGF0ZSA6IHB1YmxpYyBIYXNoU3RhdGVCYXNlPENpdHlIYXNoU3RhdGU+IHsKKyAgLy8g
YWJzbDo6dWludDEyOCBpcyBub3QgYW4gYWxpYXMgb3IgYSB0aGluIHdyYXBwZXIgYXJvdW5kIHRo
ZSBpbnRyaW5zaWMuCisgIC8vIFdlIHVzZSB0aGUgaW50cmluc2ljIHdoZW4gYXZhaWxhYmxlIHRv
IGltcHJvdmUgcGVyZm9ybWFuY2UuCisjaWZkZWYgQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgK
KyAgdXNpbmcgdWludDEyOCA9IF9fdWludDEyOF90OworI2Vsc2UgICAvLyBBQlNMX0hBVkVfSU5U
UklOU0lDX0lOVDEyOAorICB1c2luZyB1aW50MTI4ID0gYWJzbDo6dWludDEyODsKKyNlbmRpZiAg
Ly8gQUJTTF9IQVZFX0lOVFJJTlNJQ19JTlQxMjgKKworICBzdGF0aWMgY29uc3RleHByIHVpbnQ2
NF90IGtNdWwgPQorICAgICAgc2l6ZW9mKHNpemVfdCkgPT0gNCA/IHVpbnQ2NF90ezB4Y2M5ZTJk
NTF9IDogdWludDY0X3R7MHg5ZGRmZWEwOGViMzgyZDY5fTsKKworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgdXNpbmcgSW50ZWdyYWxGYXN0UGF0aCA9CisgICAgICBjb25qdW5jdGlvbjxzdGQ6
OmlzX2ludGVncmFsPFQ+LCBpc191bmlxdWVseV9yZXByZXNlbnRlZDxUPj47CisKKyBwdWJsaWM6
CisgIC8vIE1vdmUgb25seQorICBDaXR5SGFzaFN0YXRlKENpdHlIYXNoU3RhdGUmJikgPSBkZWZh
dWx0OworICBDaXR5SGFzaFN0YXRlJiBvcGVyYXRvcj0oQ2l0eUhhc2hTdGF0ZSYmKSA9IGRlZmF1
bHQ7CisKKyAgLy8gQ2l0eUhhc2hTdGF0ZTo6Y29tYmluZV9jb250aWd1b3VzKCkKKyAgLy8KKyAg
Ly8gRnVuZGFtZW50YWwgYmFzZSBjYXNlIGZvciBoYXNoIHJlY3Vyc2lvbjogbWl4ZXMgdGhlIGdp
dmVuIHJhbmdlIG9mIGJ5dGVzCisgIC8vIGludG8gdGhlIGhhc2ggc3RhdGUuCisgIHN0YXRpYyBD
aXR5SGFzaFN0YXRlIGNvbWJpbmVfY29udGlndW91cyhDaXR5SGFzaFN0YXRlIGhhc2hfc3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyKiBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzaXplKSB7CisgICAgcmV0dXJuIENpdHlIYXNoU3RhdGUoCisgICAgICAgIENvbWJp
bmVDb250aWd1b3VzSW1wbChoYXNoX3N0YXRlLnN0YXRlXywgZmlyc3QsIHNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmludGVncmFsX2NvbnN0YW50PGludCwgc2l6ZW9m
KHNpemVfdCk+e30pKTsKKyAgfQorICB1c2luZyBDaXR5SGFzaFN0YXRlOjpIYXNoU3RhdGVCYXNl
Ojpjb21iaW5lX2NvbnRpZ3VvdXM7CisKKyAgLy8gQ2l0eUhhc2hTdGF0ZTo6aGFzaCgpCisgIC8v
CisgIC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zIGluIG5vbi1vcHQgbW9kZSwgd2Ugc3BlY2lh
bGl6ZSB0aGlzIGZvcgorICAvLyBpbnRlZ3JhbCB0eXBlcy4KKyAgLy8gT3RoZXJ3aXNlIHdlIHdv
dWxkIGJlIGluc3RhbnRpYXRpbmcgYW5kIGNhbGxpbmcgZG96ZW5zIG9mIGZ1bmN0aW9ucyBmb3IK
KyAgLy8gc29tZXRoaW5nIHRoYXQgaXMganVzdCBvbmUgbXVsdGlwbGljYXRpb24gYW5kIGEgY291
cGxlIHhvcidzLgorICAvLyBUaGUgcmVzdWx0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyBydW5uaW5n
IHRoZSB3aG9sZSBhbGdvcml0aG0sIGJ1dCBmYXN0ZXIuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
LCBhYnNsOjplbmFibGVfaWZfdDxJbnRlZ3JhbEZhc3RQYXRoPFQ+Ojp2YWx1ZSwgaW50PiA9IDA+
CisgIHN0YXRpYyBzaXplX3QgaGFzaChUIHZhbHVlKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHNpemVfdD4oTWl4KFNlZWQoKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKSkpOworICB9
CisKKyAgLy8gT3ZlcmxvYWQgb2YgQ2l0eUhhc2hTdGF0ZTo6aGFzaCgpCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBULCBhYnNsOjplbmFibGVfaWZfdDwhSW50ZWdyYWxGYXN0UGF0aDxUPjo6dmFsdWUs
IGludD4gPSAwPgorICBzdGF0aWMgc2l6ZV90IGhhc2goY29uc3QgVCYgdmFsdWUpIHsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb21iaW5lKENpdHlIYXNoU3RhdGV7fSwgdmFsdWUp
LnN0YXRlXyk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIEludm9rZWQgb25seSBvbmNlIGZvciBh
IGdpdmVuIGFyZ3VtZW50OyB0aGF0IHBsdXMgdGhlIGZhY3QgdGhhdCB0aGlzIGlzCisgIC8vIG1v
dmUtb25seSBlbnN1cmVzIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgbm9uLW1vdmVkLWZyb20gb2Jq
ZWN0LgorICBDaXR5SGFzaFN0YXRlKCkgOiBzdGF0ZV8oU2VlZCgpKSB7fQorCisgIC8vIFdvcmth
cm91bmQgZm9yIE1TVkMgYnVnLgorICAvLyBXZSBtYWtlIHRoZSB0eXBlIGNvcHlhYmxlIHRvIGZp
eCB0aGUgY2FsbGluZyBjb252ZW50aW9uLCBldmVuIHRob3VnaCB3ZQorICAvLyBuZXZlciBhY3R1
YWxseSBjb3B5IGl0LiBLZWVwIGl0IHByaXZhdGUgdG8gbm90IGFmZmVjdCB0aGUgcHVibGljIEFQ
SSBvZiB0aGUKKyAgLy8gdHlwZS4KKyAgQ2l0eUhhc2hTdGF0ZShjb25zdCBDaXR5SGFzaFN0YXRl
JikgPSBkZWZhdWx0OworCisgIGV4cGxpY2l0IENpdHlIYXNoU3RhdGUodWludDY0X3Qgc3RhdGUp
IDogc3RhdGVfKHN0YXRlKSB7fQorCisgIC8vIEltcGxlbWVudGF0aW9uIG9mIHRoZSBiYXNlIGNh
c2UgZm9yIGNvbWJpbmVfY29udGlndW91cyB3aGVyZSB3ZSBhY3R1YWxseQorICAvLyBtaXggdGhl
IGJ5dGVzIGludG8gdGhlIHN0YXRlLgorICAvLyBEaXNwYXRjaCB0byBkaWZmZXJlbnQgaW1wbGVt
ZW50YXRpb25zIG9mIHRoZSBjb21iaW5lX2NvbnRpZ3VvdXMgZGVwZW5kaW5nCisgIC8vIG9uIHRo
ZSB2YWx1ZSBvZiBgc2l6ZW9mKHNpemVfdClgLgorICBzdGF0aWMgdWludDY0X3QgQ29tYmluZUNv
bnRpZ3VvdXNJbXBsKHVpbnQ2NF90IHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGZpcnN0LCBzaXplX3QgbGVuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aW50ZWdyYWxfY29uc3Rh
bnQ8aW50LCA0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNp
emVvZl9zaXplX3QgKi8pOworICBzdGF0aWMgdWludDY0X3QgQ29tYmluZUNvbnRpZ3VvdXNJbXBs
KHVpbnQ2NF90IHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGZpcnN0LCBzaXplX3QgbGVuLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8aW50LCA4Pgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemVvZl9zaXplX3Qq
Lyk7CisKKyAgLy8gUmVhZHMgOSB0byAxNiBieXRlcyBmcm9tIHAuCisgIC8vIFRoZSBmaXJzdCA4
IGJ5dGVzIGFyZSBpbiAuZmlyc3QsIHRoZSByZXN0ICh6ZXJvIHBhZGRlZCkgYnl0ZXMgYXJlIGlu
CisgIC8vIC5zZWNvbmQuCisgIHN0YXRpYyBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBS
ZWFkOVRvMTYoY29uc3QgdW5zaWduZWQgY2hhciogcCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKSB7CisgICAgdWludDY0X3QgaGln
aCA9IGxpdHRsZV9lbmRpYW46OkxvYWQ2NChwICsgbGVuIC0gOCk7CisgICAgcmV0dXJuIHtsaXR0
bGVfZW5kaWFuOjpMb2FkNjQocCksIGhpZ2ggPj4gKDEyOCAtIGxlbiAqIDgpfTsKKyAgfQorCisg
IC8vIFJlYWRzIDQgdG8gOCBieXRlcyBmcm9tIHAuIFplcm8gcGFkcyB0byBmaWxsIHVpbnQ2NF90
LgorICBzdGF0aWMgdWludDY0X3QgUmVhZDRUbzgoY29uc3QgdW5zaWduZWQgY2hhciogcCwgc2l6
ZV90IGxlbikgeworICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxpdHRsZV9lbmRp
YW46OkxvYWQzMihwICsgbGVuIC0gNCkpCisgICAgICAgICAgICA8PCAobGVuIC0gNCkgKiA4KSB8
CisgICAgICAgICAgIGxpdHRsZV9lbmRpYW46OkxvYWQzMihwKTsKKyAgfQorCisgIC8vIFJlYWRz
IDEgdG8gMyBieXRlcyBmcm9tIHAuIFplcm8gcGFkcyB0byBmaWxsIHVpbnQzMl90LgorICBzdGF0
aWMgdWludDMyX3QgUmVhZDFUbzMoY29uc3QgdW5zaWduZWQgY2hhciogcCwgc2l6ZV90IGxlbikg
eworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKHBbMF0pIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwW2xlbiAv
IDJdIDw8IChsZW4gLyAyICogOCkpIHwgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAocFtsZW4gLSAxXSA8PCAoKGxlbiAtIDEpICogOCkpKTsKKyAgfQorCisgIEFCU0xfQVRU
UklCVVRFX0FMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IE1peCh1aW50NjRfdCBzdGF0ZSwg
dWludDY0X3QgdikgeworICAgIHVzaW5nIE11bHRUeXBlID0KKyAgICAgICAgYWJzbDo6Y29uZGl0
aW9uYWxfdDxzaXplb2Yoc2l6ZV90KSA9PSA0LCB1aW50NjRfdCwgdWludDEyOD47CisgICAgLy8g
V2UgZG8gdGhlIGFkZGl0aW9uIGluIDY0LWJpdCBzcGFjZSB0byBtYWtlIHN1cmUgdGhlIDEyOC1i
aXQKKyAgICAvLyBtdWx0aXBsaWNhdGlvbiBpcyBmYXN0LiBJZiB3ZSB3ZXJlIHRvIGRvIGl0IGFz
IE11bHRUeXBlIHRoZSBjb21waWxlciBoYXMKKyAgICAvLyB0byBhc3N1bWUgdGhhdCB0aGUgaGln
aCB3b3JkIGlzIG5vbi16ZXJvIGFuZCBuZWVkcyB0byBwZXJmb3JtIDIKKyAgICAvLyBtdWx0aXBs
aWNhdGlvbnMgaW5zdGVhZCBvZiBvbmUuCisgICAgTXVsdFR5cGUgbSA9IHN0YXRlICsgdjsKKyAg
ICBtICo9IGtNdWw7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtIF4gKG0gPj4g
KHNpemVvZihtKSAqIDggLyAyKSkpOworICB9CisKKyAgLy8gU2VlZCgpCisgIC8vCisgIC8vIEEg
bm9uLWRldGVybWluaXN0aWMgc2VlZC4KKyAgLy8KKyAgLy8gVGhlIGN1cnJlbnQgcHVycG9zZSBv
ZiB0aGlzIHNlZWQgaXMgdG8gZ2VuZXJhdGUgbm9uLWRldGVybWluaXN0aWMgcmVzdWx0cworICAv
LyBhbmQgcHJldmVudCBoYXZpbmcgdXNlcnMgZGVwZW5kIG9uIHRoZSBwYXJ0aWN1bGFyIGhhc2gg
dmFsdWVzLgorICAvLyBJdCBpcyBub3QgbWVhbnQgYXMgYSBzZWN1cml0eSBmZWF0dXJlIHJpZ2h0
IG5vdywgYnV0IGl0IGxlYXZlcyB0aGUgZG9vcgorICAvLyBvcGVuIHRvIHVwZ3JhZGUgaXQgdG8g
YSB0cnVlIHBlci1wcm9jZXNzIHJhbmRvbSBzZWVkLiBBIHRydWUgcmFuZG9tIHNlZWQKKyAgLy8g
Y29zdHMgbW9yZSBhbmQgd2UgZG9uJ3QgbmVlZCB0byBwYXkgZm9yIHRoYXQgcmlnaHQgbm93Lgor
ICAvLworICAvLyBPbiBwbGF0Zm9ybXMgd2l0aCBBU0xSLCB3ZSB0YWtlIGFkdmFudGFnZSBvZiBp
dCB0byBtYWtlIGEgcGVyLXByb2Nlc3MKKyAgLy8gcmFuZG9tIHZhbHVlLgorICAvLyBTZWUgaHR0
cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWRkcmVzc19zcGFjZV9sYXlvdXRfcmFuZG9taXph
dGlvbgorICAvLworICAvLyBPbiBvdGhlciBwbGF0Zm9ybXMgdGhpcyBpcyBzdGlsbCBnb2luZyB0
byBiZSBub24tZGV0ZXJtaW5pc3RpYyBidXQgbW9zdAorICAvLyBwcm9iYWJseSBwZXItYnVpbGQg
YW5kIG5vdCBwZXItcHJvY2Vzcy4KKyAgQUJTTF9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBzdGF0
aWMgdWludDY0X3QgU2VlZCgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihrU2VlZCkpOworICB9CisgIHN0YXRpYyBjb25zdCB2
b2lkKiBjb25zdCBrU2VlZDsKKworICB1aW50NjRfdCBzdGF0ZV87Cit9OworCisvLyBDaXR5SGFz
aFN0YXRlOjpDb21iaW5lQ29udGlndW91c0ltcGwoKQoraW5saW5lIHVpbnQ2NF90IENpdHlIYXNo
U3RhdGU6OkNvbWJpbmVDb250aWd1b3VzSW1wbCgKKyAgICB1aW50NjRfdCBzdGF0ZSwgY29uc3Qg
dW5zaWduZWQgY2hhciogZmlyc3QsIHNpemVfdCBsZW4sCisgICAgc3RkOjppbnRlZ3JhbF9jb25z
dGFudDxpbnQsIDQ+IC8qIHNpemVvZl9zaXplX3QgKi8pIHsKKyAgLy8gRm9yIGxhcmdlIHZhbHVl
cyB3ZSB1c2UgQ2l0eUhhc2gsIGZvciBzbWFsbCBvbmVzIHdlIGp1c3QgdXNlIGEKKyAgLy8gbXVs
dGlwbGljYXRpdmUgaGFzaC4KKyAgdWludDY0X3QgdjsKKyAgaWYgKGxlbiA+IDgpIHsKKyAgICB2
ID0gYWJzbDo6aGFzaF9pbnRlcm5hbDo6Q2l0eUhhc2gzMihyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihmaXJzdCksIGxlbik7CisgIH0gZWxzZSBpZiAobGVuID49IDQpIHsKKyAgICB2ID0g
UmVhZDRUbzgoZmlyc3QsIGxlbik7CisgIH0gZWxzZSBpZiAobGVuID4gMCkgeworICAgIHYgPSBS
ZWFkMVRvMyhmaXJzdCwgbGVuKTsKKyAgfSBlbHNlIHsKKyAgICAvLyBFbXB0eSByYW5nZXMgaGF2
ZSBubyBlZmZlY3QuCisgICAgcmV0dXJuIHN0YXRlOworICB9CisgIHJldHVybiBNaXgoc3RhdGUs
IHYpOworfQorCisvLyBPdmVybG9hZCBvZiBDaXR5SGFzaFN0YXRlOjpDb21iaW5lQ29udGlndW91
c0ltcGwoKQoraW5saW5lIHVpbnQ2NF90IENpdHlIYXNoU3RhdGU6OkNvbWJpbmVDb250aWd1b3Vz
SW1wbCgKKyAgICB1aW50NjRfdCBzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciogZmlyc3QsIHNp
emVfdCBsZW4sCisgICAgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxpbnQsIDg+IC8qIHNpemVvZl9z
aXplX3QgKi8pIHsKKyAgLy8gRm9yIGxhcmdlIHZhbHVlcyB3ZSB1c2UgQ2l0eUhhc2gsIGZvciBz
bWFsbCBvbmVzIHdlIGp1c3QgdXNlIGEKKyAgLy8gbXVsdGlwbGljYXRpdmUgaGFzaC4KKyAgdWlu
dDY0X3QgdjsKKyAgaWYgKGxlbiA+IDE2KSB7CisgICAgdiA9IGFic2w6Omhhc2hfaW50ZXJuYWw6
OkNpdHlIYXNoNjQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZmlyc3QpLCBsZW4pOwor
ICB9IGVsc2UgaWYgKGxlbiA+IDgpIHsKKyAgICBhdXRvIHAgPSBSZWFkOVRvMTYoZmlyc3QsIGxl
bik7CisgICAgc3RhdGUgPSBNaXgoc3RhdGUsIHAuZmlyc3QpOworICAgIHYgPSBwLnNlY29uZDsK
KyAgfSBlbHNlIGlmIChsZW4gPj0gNCkgeworICAgIHYgPSBSZWFkNFRvOChmaXJzdCwgbGVuKTsK
KyAgfSBlbHNlIGlmIChsZW4gPiAwKSB7CisgICAgdiA9IFJlYWQxVG8zKGZpcnN0LCBsZW4pOwor
ICB9IGVsc2UgeworICAgIC8vIEVtcHR5IHJhbmdlcyBoYXZlIG5vIGVmZmVjdC4KKyAgICByZXR1
cm4gc3RhdGU7CisgIH0KKyAgcmV0dXJuIE1peChzdGF0ZSwgdik7Cit9CisKKworc3RydWN0IEFn
Z3JlZ2F0ZUJhcnJpZXIge307CisKKy8vIEhhc2hJbXBsCisKKy8vIEFkZCBhIHByaXZhdGUgYmFz
ZSBjbGFzcyB0byBtYWtlIHN1cmUgdGhpcyB0eXBlIGlzIG5vdCBhbiBhZ2dyZWdhdGUuCisvLyBB
Z2dyZWdhdGVzIGNhbiBiZSBhZ2dyZWdhdGUgaW5pdGlhbGl6ZWQgZXZlbiBpZiB0aGUgZGVmYXVs
dCBjb25zdHJ1Y3RvciBpcworLy8gZGVsZXRlZC4KK3N0cnVjdCBQb2lzb25lZEhhc2ggOiBwcml2
YXRlIEFnZ3JlZ2F0ZUJhcnJpZXIgeworICBQb2lzb25lZEhhc2goKSA9IGRlbGV0ZTsKKyAgUG9p
c29uZWRIYXNoKGNvbnN0IFBvaXNvbmVkSGFzaCYpID0gZGVsZXRlOworICBQb2lzb25lZEhhc2gm
IG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEhhc2gmKSA9IGRlbGV0ZTsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IEhhc2hJbXBsIHsKKyAgc2l6ZV90IG9wZXJhdG9yKCkoY29u
c3QgVCYgdmFsdWUpIGNvbnN0IHsgcmV0dXJuIENpdHlIYXNoU3RhdGU6Omhhc2godmFsdWUpOyB9
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBIYXNoCisgICAgOiBhYnNsOjpj
b25kaXRpb25hbF90PGlzX2hhc2hhYmxlPFQ+Ojp2YWx1ZSwgSGFzaEltcGw8VD4sIFBvaXNvbmVk
SGFzaD4ge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIPgordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lLi4uIFRzPgorSCBIYXNoU3RhdGVCYXNlPEg+Ojpjb21iaW5lKEggc3RhdGUsIGNv
bnN0IFQmIHZhbHVlLCBjb25zdCBUcyYuLi4gdmFsdWVzKSB7CisgIHJldHVybiBIOjpjb21iaW5l
KGhhc2hfaW50ZXJuYWw6Okludm9rZUhhc2goc3RkOjptb3ZlKHN0YXRlKSwgdmFsdWUpLAorICAg
ICAgICAgICAgICAgICAgICB2YWx1ZXMuLi4pOworfQorCisvLyBIYXNoU3RhdGVCYXNlOjpjb21i
aW5lX2NvbnRpZ3VvdXMoKQordGVtcGxhdGUgPHR5cGVuYW1lIEg+Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK0ggSGFzaFN0YXRlQmFzZTxIPjo6Y29tYmluZV9jb250aWd1b3VzKEggc3RhdGUsIGNv
bnN0IFQqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIHJldHVybiBoYXNoX2ludGVybmFsOjpoYXNo
X3JhbmdlX29yX2J5dGVzKHN0ZDo6bW92ZShzdGF0ZSksIGRhdGEsIHNpemUpOworfQorfSAgLy8g
bmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSBhYnNsCisKKyNlbmRpZiAg
Ly8gQUJTTF9IQVNIX0lOVEVSTkFMX0hBU0hfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50
ZXJuYWwvcHJpbnRfaGFzaF9vZi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50ZXJuYWwvcHJpbnRfaGFzaF9v
Zi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNmRmMzFjYzVlODViOTA0NmUwYTU0ZWJjYmU4MzliYzYwNDAyMTc1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvaGFzaC9pbnRlcm5hbC9wcmludF9oYXNoX29mLmNj
CkBAIC0wLDAgKzEsMjMgQEAKKy8vIENvcHlyaWdodCAyMDE4IFRoZSBBYnNlaWwgQXV0aG9ycy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisKKyNpbmNsdWRlIDxjc3RkbGliPgorCisjaW5jbHVkZSAiYWJzbC9oYXNoL2hhc2guaCIKKwor
Ly8gUHJpbnRzIHRoZSBoYXNoIG9mIGFyZ3ZbMV0uCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpIHsKKyAgaWYgKGFyZ2MgPCAyKSByZXR1cm4gMTsKKyAgcHJpbnRmKCIlenVcbiIsIGFi
c2w6Okhhc2g8aW50Pnt9KHN0ZDo6YXRvaShhcmd2WzFdKSkpOyAgLy8gTk9MSU5UCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9oYXNoL2ludGVybmFsL3NweV9oYXNoX3N0YXRlLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9oYXNo
L2ludGVybmFsL3NweV9oYXNoX3N0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNkNzk1YjA5MDAxZTNkYzMw
MzAxMzczOGY2MjQ2YWEyZGUwYWM1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2hhc2gvaW50
ZXJuYWwvc3B5X2hhc2hfc3RhdGUuaApAQCAtMCwwICsxLDIxOCBAQAorLy8gQ29weXJpZ2h0IDIw
MTggVGhlIEFic2VpbCBBdXRob3JzLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworI2lmbmRlZiBBQlNMX0hBU0hfSU5URVJOQUxfU1BZ
X0hBU0hfU1RBVEVfSF8KKyNkZWZpbmUgQUJTTF9IQVNIX0lOVEVSTkFMX1NQWV9IQVNIX1NUQVRF
X0hfCisKKyNpbmNsdWRlIDxvc3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaC5oIgorI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9tYXRjaC5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfZm9ybWF0LmgiCisjaW5j
bHVkZSAiYWJzbC9zdHJpbmdzL3N0cl9qb2luLmgiCisKK25hbWVzcGFjZSBhYnNsIHsKK25hbWVz
cGFjZSBoYXNoX2ludGVybmFsIHsKKworLy8gU3B5SGFzaFN0YXRlIGlzIGFuIGltcGxlbWVudGF0
aW9uIG9mIHRoZSBIYXNoU3RhdGUgQVBJIHRoYXQgc2ltcGx5CisvLyBhY2N1bXVsYXRlcyBhbGwg
aW5wdXQgYnl0ZXMgaW4gYW4gaW50ZXJuYWwgYnVmZmVyLiBUaGlzIG1ha2VzIGl0IHVzZWZ1bAor
Ly8gZm9yIHRlc3RpbmcgQWJzbEhhc2hWYWx1ZSBvdmVybG9hZHMgKHNvIGxvbmcgYXMgdGhleSBh
cmUgdGVtcGxhdGVkIG9uIHRoZQorLy8gSGFzaFN0YXRlIHBhcmFtZXRlciksIHNpbmNlIGl0IGNh
biByZXBvcnQgdGhlIGV4YWN0IGhhc2ggcmVwcmVzZW50YXRpb24KKy8vIHRoYXQgdGhlIEFic2xI
YXNoVmFsdWUgb3ZlcmxvYWQgcHJvZHVjZXMuCisvLworLy8gU2FtcGxlIHVzYWdlOgorLy8gRVhQ
RUNUX0VRKFNweUhhc2hTdGF0ZTo6Y29tYmluZShTcHlIYXNoU3RhdGUoKSwgZm9vKSwKKy8vICAg
ICAgICAgICBTcHlIYXNoU3RhdGU6OmNvbWJpbmUoU3B5SGFzaFN0YXRlKCksIGJhcikpOwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBTcHlIYXNoU3RhdGVJbXBsIDogcHVibGljIEhhc2hT
dGF0ZUJhc2U8U3B5SGFzaFN0YXRlSW1wbDxUPj4geworIHB1YmxpYzoKKyAgU3B5SGFzaFN0YXRl
SW1wbCgpCisgICAgICA6IGVycm9yXyhzdGQ6Om1ha2Vfc2hhcmVkPGFic2w6Om9wdGlvbmFsPHN0
ZDo6c3RyaW5nPj4oKSkgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc192b2lkPFQ+Ojp2YWx1
ZSwgIiIpOworICB9CisKKyAgLy8gTW92ZS1vbmx5CisgIFNweUhhc2hTdGF0ZUltcGwoY29uc3Qg
U3B5SGFzaFN0YXRlSW1wbCYpID0gZGVsZXRlOworICBTcHlIYXNoU3RhdGVJbXBsJiBvcGVyYXRv
cj0oY29uc3QgU3B5SGFzaFN0YXRlSW1wbCYpID0gZGVsZXRlOworCisgIFNweUhhc2hTdGF0ZUlt
cGwoU3B5SGFzaFN0YXRlSW1wbCYmIG90aGVyKSBub2V4Y2VwdCB7CisgICAgKnRoaXMgPSBzdGQ6
Om1vdmUob3RoZXIpOworICB9CisKKyAgU3B5SGFzaFN0YXRlSW1wbCYgb3BlcmF0b3I9KFNweUhh
c2hTdGF0ZUltcGwmJiBvdGhlcikgbm9leGNlcHQgeworICAgIGhhc2hfcmVwcmVzZW50YXRpb25f
ID0gc3RkOjptb3ZlKG90aGVyLmhhc2hfcmVwcmVzZW50YXRpb25fKTsKKyAgICBlcnJvcl8gPSBv
dGhlci5lcnJvcl87CisgICAgbW92ZWRfZnJvbV8gPSBvdGhlci5tb3ZlZF9mcm9tXzsKKyAgICBv
dGhlci5tb3ZlZF9mcm9tXyA9IHRydWU7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIFU+CisgIFNweUhhc2hTdGF0ZUltcGwoU3B5SGFzaFN0YXRlSW1wbDxV
PiYmIG90aGVyKSB7ICAvLyBOT0xJTlQKKyAgICBoYXNoX3JlcHJlc2VudGF0aW9uXyA9IHN0ZDo6
bW92ZShvdGhlci5oYXNoX3JlcHJlc2VudGF0aW9uXyk7CisgICAgZXJyb3JfID0gb3RoZXIuZXJy
b3JfOworICAgIG1vdmVkX2Zyb21fID0gb3RoZXIubW92ZWRfZnJvbV87CisgICAgb3RoZXIubW92
ZWRfZnJvbV8gPSB0cnVlOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgIHN0YXRpYyBTcHlIYXNoU3RhdGVJbXBsIGNvbWJpbmUoU3B5SGFzaFN0YXRl
SW1wbCBzLCBjb25zdCBBJiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEFyZ3MmLi4uIGFyZ3MpIHsKKyAgICAvLyBQYXNzIGFuIGluc3RhbmNlIG9mIFNweUhhc2hT
dGF0ZUltcGw8QT4gd2hlbiB0cnlpbmcgdG8gY29tYmluZSBgQWAuIFRoaXMKKyAgICAvLyBhbGxv
d3MgdXMgdG8gdGVzdCB0aGF0IHRoZSB1c2VyIG9ubHkgdXNlcyB0aGlzIGluc3RhbmNlIGZvciBj
b21iaW5lIGNhbGxzCisgICAgLy8gYW5kIGRvZXMgbm90IGNhbGwgQWJzbEhhc2hWYWx1ZSBkaXJl
Y3RseS4KKyAgICAvLyBTZWUgQWJzbEhhc2hWYWx1ZSBpbXBsZW1lbnRhdGlvbiBhdCB0aGUgYm90
dG9tLgorICAgIHMgPSBTcHlIYXNoU3RhdGVJbXBsPEE+OjpIYXNoU3RhdGVCYXNlOjpjb21iaW5l
KHN0ZDo6bW92ZShzKSwgYSk7CisgICAgcmV0dXJuIFNweUhhc2hTdGF0ZUltcGw6OmNvbWJpbmUo
c3RkOjptb3ZlKHMpLCBhcmdzLi4uKTsKKyAgfQorICBzdGF0aWMgU3B5SGFzaFN0YXRlSW1wbCBj
b21iaW5lKFNweUhhc2hTdGF0ZUltcGwgcykgeworICAgIGlmIChkaXJlY3RfYWJzbF9oYXNoX3Zh
bHVlX2Vycm9yXykgeworICAgICAgKnMuZXJyb3JfID0gIkFic2xIYXNoVmFsdWUgc2hvdWxkIG5v
dCBiZSBpbnZva2VkIGRpcmVjdGx5LiI7CisgICAgfSBlbHNlIGlmIChzLm1vdmVkX2Zyb21fKSB7
CisgICAgICAqcy5lcnJvcl8gPSAiVXNlZCBtb3ZlZC1mcm9tIGluc3RhbmNlIG9mIHRoZSBoYXNo
IHN0YXRlIG9iamVjdC4iOworICAgIH0KKyAgICByZXR1cm4gczsKKyAgfQorCisgIHN0YXRpYyB2
b2lkIFNldERpcmVjdEFic2xIYXNoVmFsdWVFcnJvcigpIHsKKyAgICBkaXJlY3RfYWJzbF9oYXNo
X3ZhbHVlX2Vycm9yXyA9IHRydWU7CisgIH0KKworICAvLyBUd28gU3B5SGFzaFN0YXRlSW1wbCBv
YmplY3RzIGFyZSBlcXVhbCBpZiB0aGV5IGhvbGQgZXF1YWwgaGFzaAorICAvLyByZXByZXNlbnRh
dGlvbnMuCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgU3B5SGFzaFN0YXRlSW1wbCYg
bGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNweUhhc2hTdGF0ZUltcGwmIHJo
cykgeworICAgIHJldHVybiBsaHMuaGFzaF9yZXByZXNlbnRhdGlvbl8gPT0gcmhzLmhhc2hfcmVw
cmVzZW50YXRpb25fOworICB9CisKKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTcHlI
YXNoU3RhdGVJbXBsJiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3B5SGFz
aFN0YXRlSW1wbCYgcmhzKSB7CisgICAgcmV0dXJuICEobGhzID09IHJocyk7CisgIH0KKworICBl
bnVtIGNsYXNzIENvbXBhcmVSZXN1bHQgeworICAgIGtFcXVhbCwKKyAgICBrQVN1ZmZpeEIsCisg
ICAga0JTdWZmaXhBLAorICAgIGtVbmVxdWFsLAorICB9OworCisgIHN0YXRpYyBDb21wYXJlUmVz
dWx0IENvbXBhcmUoY29uc3QgU3B5SGFzaFN0YXRlSW1wbCYgYSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTcHlIYXNoU3RhdGVJbXBsJiBiKSB7CisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgYV9mbGF0ID0gYWJzbDo6U3RySm9pbihhLmhhc2hfcmVwcmVzZW50YXRpb25fLCAi
Iik7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgYl9mbGF0ID0gYWJzbDo6U3RySm9pbihiLmhhc2hf
cmVwcmVzZW50YXRpb25fLCAiIik7CisgICAgaWYgKGFfZmxhdCA9PSBiX2ZsYXQpIHJldHVybiBD
b21wYXJlUmVzdWx0OjprRXF1YWw7CisgICAgaWYgKGFic2w6OkVuZHNXaXRoKGFfZmxhdCwgYl9m
bGF0KSkgcmV0dXJuIENvbXBhcmVSZXN1bHQ6OmtCU3VmZml4QTsKKyAgICBpZiAoYWJzbDo6RW5k
c1dpdGgoYl9mbGF0LCBhX2ZsYXQpKSByZXR1cm4gQ29tcGFyZVJlc3VsdDo6a0FTdWZmaXhCOwor
ICAgIHJldHVybiBDb21wYXJlUmVzdWx0OjprVW5lcXVhbDsKKyAgfQorCisgIC8vIG9wZXJhdG9y
PDwgcHJpbnRzIHRoZSBoYXNoIHJlcHJlc2VudGF0aW9uIGFzIGEgaGV4IGFuZCBBU0NJSSBkdW1w
LCB0bworICAvLyBmYWNpbGl0YXRlIGRlYnVnZ2luZy4KKyAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYg
b3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTcHlIYXNoU3RhdGVJbXBsJiBoYXNoX3N0YXRlKSB7CisgICAgb3V0IDw8
ICJbXG4iOworICAgIGZvciAoYXV0byYgcyA6IGhhc2hfc3RhdGUuaGFzaF9yZXByZXNlbnRhdGlv
bl8pIHsKKyAgICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgICAgZm9yIChjaGFyIGMgOiBzKSB7
CisgICAgICAgIGlmIChvZmZzZXQgJSAxNiA9PSAwKSB7CisgICAgICAgICAgb3V0IDw8IGFic2w6
OlN0cmVhbUZvcm1hdCgiXG4weCUwNHg6ICIsIG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKG9mZnNldCAlIDIgPT0gMCkgeworICAgICAgICAgIG91dCA8PCAiICI7CisgICAgICAgIH0K
KyAgICAgICAgb3V0IDw8IGFic2w6OlN0cmVhbUZvcm1hdCgiJTAyeCIsIGMpOworICAgICAgICAr
K29mZnNldDsKKyAgICAgIH0KKyAgICAgIG91dCA8PCAiXG4iOworICAgIH0KKyAgICByZXR1cm4g
b3V0IDw8ICJdIjsKKyAgfQorCisgIC8vIFRoZSBiYXNlIGNhc2Ugb2YgdGhlIGNvbWJpbmUgcmVj
dXJzaW9uLCB3aGljaCB3cml0ZXMgcmF3IGJ5dGVzIGludG8gdGhlCisgIC8vIGludGVybmFsIGJ1
ZmZlci4KKyAgc3RhdGljIFNweUhhc2hTdGF0ZUltcGwgY29tYmluZV9jb250aWd1b3VzKFNweUhh
c2hTdGF0ZUltcGwgaGFzaF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJlZ2luLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpIHsKKyAgICBoYXNoX3N0
YXRlLmhhc2hfcmVwcmVzZW50YXRpb25fLmVtcGxhY2VfYmFjaygKKyAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oYmVnaW4pLCBzaXplKTsKKyAgICByZXR1cm4gaGFzaF9zdGF0
ZTsKKyAgfQorCisgIHVzaW5nIFNweUhhc2hTdGF0ZUltcGw6Okhhc2hTdGF0ZUJhc2U6OmNvbWJp
bmVfY29udGlndW91czsKKworICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gZXJyb3IoKSBj
b25zdCB7CisgICAgaWYgKG1vdmVkX2Zyb21fKSB7CisgICAgICByZXR1cm4gIlJldHVybmVkIGEg
bW92ZWQtZnJvbSBpbnN0YW5jZSBvZiB0aGUgaGFzaCBzdGF0ZSBvYmplY3QuIjsKKyAgICB9Cisg
ICAgcmV0dXJuICplcnJvcl87CisgIH0KKworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVPgorICBmcmllbmQgY2xhc3MgU3B5SGFzaFN0YXRlSW1wbDsKKworICAvLyBUaGlzIGlzIHRy
dWUgaWYgU3B5SGFzaFN0YXRlSW1wbDxUPiBoYXMgYmVlbiBwYXNzZWQgdG8gYSBjYWxsIG9mCisg
IC8vIEFic2xIYXNoVmFsdWUgd2l0aCB0aGUgd3JvbmcgdHlwZS4gVGhpcyBkZXRlY3RzIHRoYXQg
dGhlIHVzZXIgY2FsbGVkCisgIC8vIEFic2xIYXNoVmFsdWUgZGlyZWN0bHkgKGJlY2F1c2UgdGhl
IGhhc2ggc3RhdGUgdHlwZSBkb2VzIG5vdCBtYXRjaCkuCisgIHN0YXRpYyBib29sIGRpcmVjdF9h
YnNsX2hhc2hfdmFsdWVfZXJyb3JfOworCisKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGhh
c2hfcmVwcmVzZW50YXRpb25fOworICAvLyBUaGlzIGlzIGEgc2hhcmVkX3B0ciBiZWNhdXNlIHdl
IHdhbnQgYWxsIGluc3RhbmNlcyBvZiB0aGUgcGFydGljdWxhcgorICAvLyBTcHlIYXNoU3RhdGUg
cnVuIHRvIHNoYXJlIHRoZSBmaWVsZC4gVGhpcyB3YXkgd2UgY2FuIHNldCB0aGUgZXJyb3IgZm9y
CisgIC8vIHVzZS1hZnRlci1tb3ZlIGFuZCBhbGwgdGhlIGNvcGllcyB3aWxsIHNlZSBpdC4KKyAg
c3RkOjpzaGFyZWRfcHRyPGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPj4gZXJyb3JfOworICBi
b29sIG1vdmVkX2Zyb21fID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jv
b2wgU3B5SGFzaFN0YXRlSW1wbDxUPjo6ZGlyZWN0X2Fic2xfaGFzaF92YWx1ZV9lcnJvcl87CisK
K3RlbXBsYXRlIDxib29sJiBCPgorc3RydWN0IE9kclVzZSB7CisgIGNvbnN0ZXhwciBPZHJVc2Uo
KSB7fQorICBib29sJiBiID0gQjsKK307CisKK3RlbXBsYXRlIDx2b2lkICgqKSgpPgorc3RydWN0
IFJ1bk9uU3RhcnR1cCB7CisgIHN0YXRpYyBib29sIHJ1bjsKKyAgc3RhdGljIGNvbnN0ZXhwciBP
ZHJVc2U8cnVuPiBrT2RyVXNle307Cit9OworCit0ZW1wbGF0ZSA8dm9pZCAoKmYpKCk+Citib29s
IFJ1bk9uU3RhcnR1cDxmPjo6cnVuID0gKGYoKSwgdHJ1ZSk7CisKK3RlbXBsYXRlIDwKKyAgICB0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLAorICAgIC8vIE9ubHkgdHJpZ2dlciBmb3Igd2hlbiAoVCAh
PSBVKSwKKyAgICBhYnNsOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPFQsIFU+Ojp2YWx1ZSwg
aW50PiA9IDAsCisgICAgLy8gVGhpcyBzdGF0ZW1lbnQgd29ya3MgaW4gdHdvIHdheXM6CisgICAg
Ly8gIC0gRmlyc3QsIGl0IGluc3RhbnRpYXRlcyBSdW5PblN0YXJ0dXAgYW5kIGZvcmNlcyB0aGUg
aW5pdGlhbGl6YXRpb24gb2YKKyAgICAvLyAgICBgcnVuYCwgd2hpY2ggc2V0IHRoZSBnbG9iYWwg
dmFyaWFibGUuCisgICAgLy8gIC0gU2Vjb25kLCBpdCB0cmlnZ2VycyBhIFNGSU5BRSBlcnJvciBk
aXNhYmxpbmcgdGhlIG92ZXJsb2FkIHRvIHByZXZlbnQKKyAgICAvLyAgICBjb21waWxlIHRpbWUg
ZXJyb3JzLiBJZiB3ZSBkaWRuJ3QgZGlzYWJsZSB0aGUgb3ZlcmxvYWQgd2Ugd291bGQgZ2V0Cisg
ICAgLy8gICAgYW1iaWd1b3VzIG92ZXJsb2FkIGVycm9ycywgd2hpY2ggd2UgZG9uJ3Qgd2FudC4K
KyAgICBpbnQgPSBSdW5PblN0YXJ0dXA8U3B5SGFzaFN0YXRlSW1wbDxUPjo6U2V0RGlyZWN0QWJz
bEhhc2hWYWx1ZUVycm9yPjo6cnVuPgordm9pZCBBYnNsSGFzaFZhbHVlKFNweUhhc2hTdGF0ZUlt
cGw8VD4sIGNvbnN0IFUmKTsKKwordXNpbmcgU3B5SGFzaFN0YXRlID0gU3B5SGFzaFN0YXRlSW1w
bDx2b2lkPjsKKworfSAgLy8gbmFtZXNwYWNlIGhhc2hfaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFj
ZSBhYnNsCisKKyNlbmRpZiAgLy8gQUJTTF9IQVNIX0lOVEVSTkFMX1NQWV9IQVNIX1NUQVRFX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvQlVJ
TEQuYmF6ZWwKaW5kZXggNDZmNDdiMTJiYjJhZGIyZjY3MmZiMDUwZmI0MGQ3N2VjZjg1YmMyMS4u
ODlhMzEyZWFjNGIxOWJmODhiYTFmMjEwMGNhMDQ1ZDFjYzMyNzg1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWVtb3J5L0JVSUxELmJhemVsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9CVUlMRC5iYXplbApAQCAt
MTksNiArMTksNyBAQCBsb2FkKAogICAgICJBQlNMX0RFRkFVTFRfQ09QVFMiLAogICAgICJBQlNM
X1RFU1RfQ09QVFMiLAogICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBRyIsCisgICAgIkFCU0xfRVhD
RVBUSU9OU19GTEFHX0xJTktPUFRTIiwKICkKIAogcGFja2FnZShkZWZhdWx0X3Zpc2liaWxpdHkg
PSBbIi8vdmlzaWJpbGl0eTpwdWJsaWMiXSkKQEAgLTUzLDYgKzU0LDcgQEAgY2NfdGVzdCgKICAg
ICAgICAgIm1lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MiLAogICAgIF0sCiAgICAgY29w
dHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0
cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAg
ICI6bWVtb3J5IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmV4Y2VwdGlvbl9zYWZldHlfdGVzdGlu
ZyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVt
b3J5LmgKaW5kZXggYzdjYWY4Yjk0ZGM5MWIyODM4ZDEzZWI0ODkwNGQxNzJkMmEzMGY3My4uMWVh
ZWMwZjQwYWVhZDU3ZDY5MmU0Yjg1OGU2NDIxNDA0NTY0NWY4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bWVtb3J5L21lbW9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnkuaApAQCAtMzksMTYgKzM5
LDMwIEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIEZ1bmN0aW9uIFRlbXBsYXRlOiBXcmFwVW5pcXVl
KCkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwotLy8gIEFkb3B0cyBvd25lcnNoaXAgZnJv
bSBhIHJhdyBwb2ludGVyIGFuZCB0cmFuc2ZlcnMgaXQgdG8gdGhlIHJldHVybmVkCi0vLyAgYHN0
ZDo6dW5pcXVlX3B0cmAsIHdob3NlIHR5cGUgaXMgZGVkdWNlZC4gRE8gTk9UIHNwZWNpZnkgdGhl
IHRlbXBsYXRlIHR5cGUgVAotLy8gIHdoZW4gY2FsbGluZyBXcmFwVW5pcXVlLgorLy8gQWRvcHRz
IG93bmVyc2hpcCBmcm9tIGEgcmF3IHBvaW50ZXIgYW5kIHRyYW5zZmVycyBpdCB0byB0aGUgcmV0
dXJuZWQKKy8vIGBzdGQ6OnVuaXF1ZV9wdHJgLCB3aG9zZSB0eXBlIGlzIGRlZHVjZWQuIEJlY2F1
c2Ugb2YgdGhpcyBkZWR1Y3Rpb24sICpkbyBub3QqCisvLyBzcGVjaWZ5IHRoZSB0ZW1wbGF0ZSB0
eXBlIGBUYCB3aGVuIGNhbGxpbmcgYFdyYXBVbmlxdWVgLgogLy8KIC8vIEV4YW1wbGU6CiAvLyAg
IFgqIE5ld1goaW50LCBpbnQpOwogLy8gICBhdXRvIHggPSBXcmFwVW5pcXVlKE5ld1goMSwgMikp
OyAgLy8gJ3gnIGlzIHN0ZDo6dW5pcXVlX3B0cjxYPi4KIC8vCi0vLyBgYWJzbDo6V3JhcFVuaXF1
ZWAgaXMgdXNlZnVsIGZvciBjYXB0dXJpbmcgdGhlIG91dHB1dCBvZiBhIHJhdyBwb2ludGVyCi0v
LyBmYWN0b3J5LiBIb3dldmVyLCBwcmVmZXIgJ2Fic2w6Om1ha2VfdW5pcXVlPFQ+KGFyZ3MuLi4p
IG92ZXIKKy8vIFRoZSBwdXJwb3NlIG9mIFdyYXBVbmlxdWUgaXMgdG8gYXV0b21hdGljYWxseSBk
ZWR1Y2UgdGhlIHBvaW50ZXIgdHlwZS4gSWYgeW91CisvLyB3aXNoIHRvIG1ha2UgdGhlIHR5cGUg
ZXhwbGljaXQsIGZvciByZWFkYWJpbGl0eSByZWFzb25zIG9yIGJlY2F1c2UgeW91IHByZWZlcgor
Ly8gdG8gdXNlIGEgYmFzZS1jbGFzcyBwb2ludGVyIHJhdGhlciB0aGFuIGEgZGVyaXZlZCBvbmUs
IGp1c3QgdXNlCisvLyBgc3RkOjp1bmlxdWVfcHRyYCBkaXJlY3RseS4KKy8vCisvLyBFeGFtcGxl
OgorLy8gICBYKiBGYWN0b3J5KGludCwgaW50KTsKKy8vICAgYXV0byB4ID0gc3RkOjp1bmlxdWVf
cHRyPFg+KEZhY3RvcnkoMSwgMikpOworLy8gICAgICAgICAgICAgICAgICAtIG9yIC0KKy8vICAg
c3RkOjp1bmlxdWVfcHRyPFg+IHgoRmFjdG9yeSgxLCAyKSk7CisvLworLy8gVGhpcyBoYXMgdGhl
IGFkZGVkIGFkdmFudGFnZSBvZiB3b3JraW5nIHdoZXRoZXIgRmFjdG9yeSByZXR1cm5zIGEgcmF3
CisvLyBwb2ludGVyIG9yIGEgYHN0ZDo6dW5pcXVlX3B0cmAuCisvLworLy8gV2hpbGUgYGFic2w6
OldyYXBVbmlxdWVgIGlzIHVzZWZ1bCBmb3IgY2FwdHVyaW5nIHRoZSBvdXRwdXQgb2YgYSByYXcK
Ky8vIHBvaW50ZXIgZmFjdG9yeSwgcHJlZmVyICdhYnNsOjptYWtlX3VuaXF1ZTxUPihhcmdzLi4u
KScgb3ZlcgogLy8gJ2Fic2w6OldyYXBVbmlxdWUobmV3IFQoYXJncy4uLikpJy4KIC8vCiAvLyAg
IGF1dG8geCA9IFdyYXBVbmlxdWUobmV3IFgoMSwgMikpOyAgLy8gd29ya3MsIGJ1dCBub25pZGVh
bC4KQEAgLTY0MSw1NSArNjU1LDU5IEBAIHN0cnVjdCBkZWZhdWx0X2FsbG9jYXRvcl9pc19ub3Ro
cm93IDogc3RkOjpmYWxzZV90eXBlIHt9OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBtZW1vcnlfaW50
ZXJuYWwgewotI2lmZGVmIEFCU0xfSEFWRV9FWENFUFRJT05TCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
QWxsb2NhdG9yLCB0eXBlbmFtZSBTdG9yYWdlRWxlbWVudCwgdHlwZW5hbWUuLi4gQXJncz4KLXZv
aWQgQ29uc3RydWN0U3RvcmFnZShBbGxvY2F0b3IqIGFsbG9jLCBTdG9yYWdlRWxlbWVudCogZmly
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZUVsZW1lbnQqIGxhc3QsIGNvbnN0IEFy
Z3MmLi4uIGFyZ3MpIHsKLSAgZm9yIChTdG9yYWdlRWxlbWVudCogY3VyID0gZmlyc3Q7IGN1ciAh
PSBsYXN0OyArK2N1cikgeworI2lmZGVmIEFCU0xfSEFWRV9FWENFUFRJT05TICAvLyBDb25zdHJ1
Y3RSYW5nZQordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvciwgdHlwZW5hbWUgSXRlcmF0b3Is
IHR5cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIENvbnN0cnVjdFJhbmdlKEFsbG9jYXRvciYgYWxsb2Ms
IEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LAorICAgICAgICAgICAgICAgICAgICBjb25z
dCBBcmdzJi4uLiBhcmdzKSB7CisgIGZvciAoSXRlcmF0b3IgY3VyID0gZmlyc3Q7IGN1ciAhPSBs
YXN0OyArK2N1cikgewogICAgIHRyeSB7Ci0gICAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxs
b2NhdG9yPjo6Y29uc3RydWN0KCphbGxvYywgY3VyLCBhcmdzLi4uKTsKKyAgICAgIHN0ZDo6YWxs
b2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoYWxsb2MsIGN1ciwgYXJncy4uLik7
CiAgICAgfSBjYXRjaCAoLi4uKSB7CiAgICAgICB3aGlsZSAoY3VyICE9IGZpcnN0KSB7CiAgICAg
ICAgIC0tY3VyOwotICAgICAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6ZGVz
dHJveSgqYWxsb2MsIGN1cik7CisgICAgICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0
b3I+OjpkZXN0cm95KGFsbG9jLCBjdXIpOwogICAgICAgfQogICAgICAgdGhyb3c7CiAgICAgfQog
ICB9CiB9Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yLCB0eXBlbmFtZSBTdG9yYWdlRWxl
bWVudCwgdHlwZW5hbWUgSXRlcmF0b3I+Ci12b2lkIENvcHlUb1N0b3JhZ2VGcm9tUmFuZ2UoQWxs
b2NhdG9yKiBhbGxvYywgU3RvcmFnZUVsZW1lbnQqIGRlc3RpbmF0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0KSB7Ci0gIGZvciAo
U3RvcmFnZUVsZW1lbnQqIGN1ciA9IGRlc3RpbmF0aW9uOyBmaXJzdCAhPSBsYXN0OworI2Vsc2Ug
ICAvLyBBQlNMX0hBVkVfRVhDRVBUSU9OUyAgLy8gQ29uc3RydWN0UmFuZ2UKK3RlbXBsYXRlIDx0
eXBlbmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZS4uLiBBcmdzPgor
dm9pZCBDb25zdHJ1Y3RSYW5nZShBbGxvY2F0b3ImIGFsbG9jLCBJdGVyYXRvciBmaXJzdCwgSXRl
cmF0b3IgbGFzdCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgQXJncyYuLi4gYXJncykgewor
ICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkgeworICAgIHN0ZDo6YWxsb2NhdG9yX3Ry
YWl0czxBbGxvY2F0b3I+Ojpjb25zdHJ1Y3QoYWxsb2MsIGZpcnN0LCBhcmdzLi4uKTsKKyAgfQor
fQorI2VuZGlmICAvLyBBQlNMX0hBVkVfRVhDRVBUSU9OUyAgLy8gQ29uc3RydWN0UmFuZ2UKKwor
I2lmZGVmIEFCU0xfSEFWRV9FWENFUFRJT05TICAvLyBDb3B5UmFuZ2UKK3RlbXBsYXRlIDx0eXBl
bmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9y
Pgordm9pZCBDb3B5UmFuZ2UoQWxsb2NhdG9yJiBhbGxvYywgSXRlcmF0b3IgZGVzdGluYXRpb24s
IElucHV0SXRlcmF0b3IgZmlyc3QsCisgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGxhc3Qp
IHsKKyAgZm9yIChJdGVyYXRvciBjdXIgPSBkZXN0aW5hdGlvbjsgZmlyc3QgIT0gbGFzdDsKICAg
ICAgICBzdGF0aWNfY2FzdDx2b2lkPigrK2N1ciksIHN0YXRpY19jYXN0PHZvaWQ+KCsrZmlyc3Qp
KSB7CiAgICAgdHJ5IHsKLSAgICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpj
b25zdHJ1Y3QoKmFsbG9jLCBjdXIsICpmaXJzdCk7CisgICAgICBzdGQ6OmFsbG9jYXRvcl90cmFp
dHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KGFsbG9jLCBjdXIsICpmaXJzdCk7CiAgICAgfSBjYXRj
aCAoLi4uKSB7CiAgICAgICB3aGlsZSAoY3VyICE9IGRlc3RpbmF0aW9uKSB7CiAgICAgICAgIC0t
Y3VyOwotICAgICAgICBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6ZGVzdHJveSgq
YWxsb2MsIGN1cik7CisgICAgICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpk
ZXN0cm95KGFsbG9jLCBjdXIpOwogICAgICAgfQogICAgICAgdGhyb3c7CiAgICAgfQogICB9CiB9
Ci0jZWxzZSAgIC8vIEFCU0xfSEFWRV9FWENFUFRJT05TCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWxs
b2NhdG9yLCB0eXBlbmFtZSBTdG9yYWdlRWxlbWVudCwgdHlwZW5hbWUuLi4gQXJncz4KLXZvaWQg
Q29uc3RydWN0U3RvcmFnZShBbGxvY2F0b3IqIGFsbG9jLCBTdG9yYWdlRWxlbWVudCogZmlyc3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZUVsZW1lbnQqIGxhc3QsIGNvbnN0IEFyZ3Mm
Li4uIGFyZ3MpIHsKLSAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpIHsKLSAgICBzdGQ6
OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6Y29uc3RydWN0KCphbGxvYywgZmlyc3QsIGFy
Z3MuLi4pOwotICB9Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yLCB0eXBlbmFtZSBT
dG9yYWdlRWxlbWVudCwgdHlwZW5hbWUgSXRlcmF0b3I+Ci12b2lkIENvcHlUb1N0b3JhZ2VGcm9t
UmFuZ2UoQWxsb2NhdG9yKiBhbGxvYywgU3RvcmFnZUVsZW1lbnQqIGRlc3RpbmF0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0KSB7
CisjZWxzZSAgIC8vIEFCU0xfSEFWRV9FWENFUFRJT05TICAvLyBDb3B5UmFuZ2UKK3RlbXBsYXRl
IDx0eXBlbmFtZSBBbGxvY2F0b3IsIHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBJbnB1dEl0
ZXJhdG9yPgordm9pZCBDb3B5UmFuZ2UoQWxsb2NhdG9yJiBhbGxvYywgSXRlcmF0b3IgZGVzdGlu
YXRpb24sIElucHV0SXRlcmF0b3IgZmlyc3QsCisgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9y
IGxhc3QpIHsKICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7CiAgICAgICAgc3RhdGljX2Nhc3Q8dm9p
ZD4oKytkZXN0aW5hdGlvbiksIHN0YXRpY19jYXN0PHZvaWQ+KCsrZmlyc3QpKSB7Ci0gICAgc3Rk
OjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmNvbnN0cnVjdCgqYWxsb2MsIGRlc3RpbmF0
aW9uLCAqZmlyc3QpOworICAgIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvY2F0b3I+Ojpjb25z
dHJ1Y3QoYWxsb2MsIGRlc3RpbmF0aW9uLCAqZmlyc3QpOwogICB9CiB9Ci0jZW5kaWYgIC8vIEFC
U0xfSEFWRV9FWENFUFRJT05TCisjZW5kaWYgIC8vIEFCU0xfSEFWRV9FWENFUFRJT05TICAvLyBD
b3B5UmFuZ2UKIH0gIC8vIG5hbWVzcGFjZSBtZW1vcnlfaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFj
ZSBhYnNsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeS9tZW1vcnlfZXhjZXB0aW9uX3NhZmV0
eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MK
aW5kZXggZDFmNmU4NGYxMGY4YTY2OGFjMjVmYjZkOTBjY2M1YTc4MzIwMjIxOS4uMDBkMmIxOTJj
ZmMzMmRmNjI0MzYzY2E4NjNlYzc5ZjkwZjYxODViNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5
L21lbW9yeV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9y
eV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKQEAgLTMyLDcgKzMyLDcgQEAgVEVTVChNYWtlVW5p
cXVlLCBDaGVja0ZvckxlYWtzKSB7CiAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZh
bHVlKFRocm93ZXIoa1ZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgLy8gRW5zdXJlcyBtYWtl
X3VuaXF1ZSBkb2VzIG5vdCBtb2RpZnkgdGhlIGlucHV0LiBUaGUgcmVhbAogICAgICAgICAgICAg
ICAgICAgICAvLyB0ZXN0LCB0aG91Z2gsIGlzIENvbnN0cnVjdG9yVHJhY2tlciBjaGVja2luZyBm
b3IgbGVha3MuCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyh0ZXN0aW5nOjpz
dHJvbmdfZ3VhcmFudGVlKTsKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHModGVz
dGluZzo6c3Ryb25nX2d1YXJhbnRlZSk7CiAKICAgRVhQRUNUX1RSVUUodGVzdGVyLlRlc3QoW10o
VGhyb3dlciogdGhyb3dlcikgewogICAgIHN0YXRpY19jYXN0PHZvaWQ+KGFic2w6Om1ha2VfdW5p
cXVlPFRocm93ZXI+KCp0aHJvd2VyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkvbWVtb3J5X3Rlc3QuY2MKaW5kZXggZGVlOWI0ODZhMzBk
MzBkMjU1NzA1YWMzODE0ZjE5Zjc4MTk5NDA1My4uMmU0NTNlMjJiYTViYTM5Y2ZkNjkwZmM1OTFl
NGFmZTQ4N2NiNzhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5L21lbW9yeV90ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL21lbW9yeS9tZW1vcnlfdGVzdC5jYwpAQCAtMTQ5LDcgKzE0OSw2IEBAIFRFU1Qo
TWFrZV9VbmlxdWVUZXN0LCBOb3RBbWJpZ3VvdXNXaXRoU3RkTWFrZVVuaXF1ZSkgewogfQogCiAj
aWYgMAotLy8gVE9ETyhiaWxseWRvbmFodWUpOiBNYWtlIGEgcHJvcGVyIE5DIHRlc3QuCiAvLyBU
aGVzZSB0ZXN0cyBzaG91bGRuJ3QgY29tcGlsZS4KIFRFU1QoTWFrZVVuaXF1ZVRlc3ROQywgQWNj
ZXB0TW92ZU9ubHlMdmFsdWUpIHsKICAgYXV0byBtID0gTW92ZU9ubHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL21ldGEvdHlwZV90cmFpdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFpdHMuaAppbmRl
eCA0NTdiODkwODQxYTY0ZmI0ZWQzNmNkZTg2MjFkNzgyMjE5MGI3OThkLi4yM2ViZDZlZDA5OTBm
ZDNkOTUxMGQ0ZDkxMDY2ZjA3NGNmZTExMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVf
dHJhaXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWV0YS90eXBlX3RyYWl0cy5oCkBAIC0xMDUsOCArMTA1LDI1
IEBAIHRlbXBsYXRlIDxjbGFzcyBUbywgdGVtcGxhdGUgPGNsYXNzLi4uPiBjbGFzcyBPcCwgY2xh
c3MuLi4gQXJncz4KIHN0cnVjdCBpc19kZXRlY3RlZF9jb252ZXJ0aWJsZQogICAgIDogaXNfZGV0
ZWN0ZWRfY29udmVydGlibGVfaW1wbDx2b2lkLCBUbywgT3AsIEFyZ3MuLi4+Ojp0eXBlIHt9Owog
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5nIElzQ29weUFzc2lnbmFibGVJbXBsID0KKyAg
ICBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VCY+KCkgPSBzdGQ6OmRlY2x2YWw8Y29uc3QgVCY+KCkp
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5nIElzTW92ZUFzc2lnbmFibGVJbXBsID0g
ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQmPigpID0gc3RkOjpkZWNsdmFsPFQmJj4oKSk7CisKIH0g
IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0c19pbnRlcm5hbAogCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3N0cnVjdCBpc19jb3B5X2Fzc2lnbmFibGUgOiB0eXBlX3RyYWl0c19pbnRlcm5hbDo6aXNf
ZGV0ZWN0ZWQ8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfdHJhaXRzX2lu
dGVybmFsOjpJc0NvcHlBc3NpZ25hYmxlSW1wbCwgVD4geworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgaXNfbW92ZV9hc3NpZ25hYmxlIDogdHlwZV90cmFpdHNfaW50ZXJuYWw6
OmlzX2RldGVjdGVkPAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX3RyYWl0
c19pbnRlcm5hbDo6SXNNb3ZlQXNzaWduYWJsZUltcGwsIFQ+IHsKK307CisKIC8vIHZvaWRfdCgp
CiAvLwogLy8gSWdub3JlcyB0aGUgdHlwZSBvZiBhbnkgaXRzIGFyZ3VtZW50cyBhbmQgcmV0dXJu
cyBgdm9pZGAuIEluIGdlbmVyYWwsIHRoaXMKQEAgLTMwOSw3ICszMjYsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIHN0cnVjdCBpc190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlCiAgICAgOiBz
dGQ6OmludGVncmFsX2NvbnN0YW50PAogICAgICAgICAgIGJvb2wsIF9faGFzX3RyaXZpYWxfYXNz
aWduKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSkgJiYKLSAgICAgICAg
ICAgICAgICAgICAgc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8VD46OnZhbHVlPiB7CisgICAgICAg
ICAgICAgICAgICAgIGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxUPjo6dmFsdWU+IHsKICNpZmRl
ZiBBQlNMX0hBVkVfU1REX0lTX1RSSVZJQUxMWV9BU1NJR05BQkxFCiAgcHJpdmF0ZToKICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGNvbXBsaWFudCA9CkBAIC00MDksMTEgKzQyNiwxMSBAQCBzdHJ1
Y3QgSXNIYXNoRW5hYmxlZAogICAgIDogYWJzbDo6Y29uanVuY3Rpb248c3RkOjppc19kZWZhdWx0
X2NvbnN0cnVjdGlibGU8c3RkOjpoYXNoPEtleT4+LAogICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8c3RkOjpoYXNoPEtleT4+LAogICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjppc19kZXN0cnVjdGlibGU8c3RkOjpoYXNoPEtleT4+LAotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8c3RkOjpoYXNoPEtleT4+
LAorICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPHN0ZDo6
aGFzaDxLZXk+PiwKICAgICAgICAgICAgICAgICAgICAgICAgIElzSGFzaGFibGU8S2V5Pj4ge307
CisKIH0gIC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0c19pbnRlcm5hbAogCiB9ICAvLyBuYW1lc3Bh
Y2UgYWJzbAogCi0KICNlbmRpZiAgLy8gQUJTTF9NRVRBX1RZUEVfVFJBSVRTX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJhaXRzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZXRhL3R5cGVfdHJh
aXRzX3Rlc3QuY2MKaW5kZXggODFiNGJkMzIzOTc3ZTVlM2NkMjc2NjBjNTBjY2VkODZhYjIyNTAx
Ny4uZjUxZjVkZWRlZTQzNWQ2ODNiNGIyZjVlYjMwMTJiZDYxYjVlMmFhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvbWV0YS90eXBlX3RyYWl0c190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGEvdHlwZV90cmFp
dHNfdGVzdC5jYwpAQCAtODc3LDQgKzg3Nyw4MCBAQCBURVNUKFR5cGVUcmFpdHNUZXN0LCBUZXN0
UmVzdWx0T2YpIHsKICAgRVhQRUNUX0VRKFR5cGVFbnVtOjpELCBHZXRUeXBlRXh0KFdyYXA8VHlw
ZUQ+KCkpKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIFRlc3RDb3B5QXNzaWdu
KCkgeworICByZXR1cm4gYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSA9PQorICAg
ICAgICAgc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8VD46OnZhbHVlOworfQorCitURVNUKFR5cGVU
cmFpdHNUZXN0LCBJc0NvcHlBc3NpZ25hYmxlKSB7CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNz
aWduPGludD4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPGludCY+KCkpOworICBF
WFBFQ1RfVFJVRShUZXN0Q29weUFzc2lnbjxpbnQmJj4oKSk7CisKKyAgc3RydWN0IFMge307Cisg
IEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPFM+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0Q29w
eUFzc2lnbjxTJj4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWduPFMmJj4oKSk7CisK
KyAgY2xhc3MgQyB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgQyhDKiBjKSA6IGNfKGMpIHt9
CisgICAgfkMoKSB7IGRlbGV0ZSBjXzsgfQorCisgICBwcml2YXRlOgorICAgIEMqIGNfOworICB9
OworICBFWFBFQ1RfVFJVRShUZXN0Q29weUFzc2lnbjxDPigpKTsKKyAgRVhQRUNUX1RSVUUoVGVz
dENvcHlBc3NpZ248QyY+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0Q29weUFzc2lnbjxDJiY+KCkp
OworCisgIC8vIFJlYXNvbiBmb3IgaWZuZGVmOiBhZGRfbHZhbHVlX3JlZmVyZW5jZTxUPiBpbiBs
aWJjKysgYnJlYWtzIGZvciB0aGVzZSBjYXNlcworI2lmbmRlZiBfTElCQ1BQX1ZFUlNJT04KKyAg
RVhQRUNUX1RSVUUoVGVzdENvcHlBc3NpZ248aW50KCk+KCkpOworICBFWFBFQ1RfVFJVRShUZXN0
Q29weUFzc2lnbjxpbnQoaW50KSBjb25zdD4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNz
aWduPGludCguLi4pIHZvbGF0aWxlJj4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RDb3B5QXNzaWdu
PGludChpbnQsIC4uLikgY29uc3Qgdm9sYXRpbGUmJj4oKSk7CisjZW5kaWYgIC8vIF9MSUJDUFBf
VkVSU0lPTgorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgVGVzdE1vdmVBc3NpZ24o
KSB7CisgIHJldHVybiBhYnNsOjppc19tb3ZlX2Fzc2lnbmFibGU8VD46OnZhbHVlID09CisgICAg
ICAgICBzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTxUPjo6dmFsdWU7Cit9CisKK1RFU1QoVHlwZVRy
YWl0c1Rlc3QsIElzTW92ZUFzc2lnbmFibGUpIHsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3Np
Z248aW50PigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248aW50Jj4oKSk7CisgIEVY
UEVDVF9UUlVFKFRlc3RNb3ZlQXNzaWduPGludCYmPigpKTsKKworICBzdHJ1Y3QgUyB7fTsKKyAg
RVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248Uz4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RNb3Zl
QXNzaWduPFMmPigpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdE1vdmVBc3NpZ248UyYmPigpKTsKKwor
ICBjbGFzcyBDIHsKKyAgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBDKEMqIGMpIDogY18oYykge30K
KyAgICB+QygpIHsgZGVsZXRlIGNfOyB9CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQyYpID0g
ZGVsZXRlOworICAgIHZvaWQgb3BlcmF0b3I9KEMmJikgPSBkZWxldGU7CisKKyAgIHByaXZhdGU6
CisgICAgQyogY187CisgIH07CisgIEVYUEVDVF9UUlVFKFRlc3RNb3ZlQXNzaWduPEM+KCkpOwor
ICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFzc2lnbjxDJj4oKSk7CisgIEVYUEVDVF9UUlVFKFRlc3RN
b3ZlQXNzaWduPEMmJj4oKSk7CisKKyAgLy8gUmVhc29uIGZvciBpZm5kZWY6IGFkZF9sdmFsdWVf
cmVmZXJlbmNlPFQ+IGluIGxpYmMrKyBicmVha3MgZm9yIHRoZXNlIGNhc2VzCisjaWZuZGVmIF9M
SUJDUFBfVkVSU0lPTgorICBFWFBFQ1RfVFJVRShUZXN0TW92ZUFzc2lnbjxpbnQoKT4oKSk7Cisg
IEVYUEVDVF9UUlVFKFRlc3RNb3ZlQXNzaWduPGludChpbnQpIGNvbnN0PigpKTsKKyAgRVhQRUNU
X1RSVUUoVGVzdE1vdmVBc3NpZ248aW50KC4uLikgdm9sYXRpbGUmPigpKTsKKyAgRVhQRUNUX1RS
VUUoVGVzdE1vdmVBc3NpZ248aW50KGludCwgLi4uKSBjb25zdCB2b2xhdGlsZSYmPigpKTsKKyNl
bmRpZiAgLy8gX0xJQkNQUF9WRVJTSU9OCit9CisKIH0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbnVtZXJpYy9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvQlVJTEQuYmF6ZWwK
aW5kZXggZjQ5NTcxZWJiM2UxMDQyNDM0MTUxYTIyMzcxMjdhOTlkZjFhZDMwMS4uMzI0Y2U2Njk1
ZTQwMmM4OTczZmM1YjVkZjI1N2FhNWYyNjUyMDNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJp
Yy9CVUlMRC5iYXplbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL0JVSUxELmJhemVsCkBAIC00OSw2ICs0
OSw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICI6aW50MTI4IiwKICAgICAgICAgIi8vYWJzbC9iYXNl
IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCisgICAgICAgICIvL2Fic2wv
aGFzaDpoYXNoX3Rlc3RpbmciLAogICAgICAgICAiLy9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAog
ICAgICAgICAiQGNvbV9nb29nbGVfZ29vZ2xldGVzdC8vOmd0ZXN0X21haW4iLAogICAgIF0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbnVtZXJpYy9pbnQxMjgu
aAppbmRleCAyZDEzMWI4YmRhMWMzNDhkOTE3NDNlN2M0MmQzOGE1Nzk2OGMzMzBiLi43OWI2MmE3
NTg2Njk1ZDViMmY0MzFkMzhhZjUyYTBhYjIyNzRhZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9udW1l
cmljL2ludDEyOC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4LmgKQEAgLTE5Miw2ICsxOTIs
MTIgQEAgY2xhc3MKICAgLy8gUmV0dXJucyB0aGUgaGlnaGVzdCB2YWx1ZSBmb3IgYSAxMjgtYml0
IHVuc2lnbmVkIGludGVnZXIuCiAgIGZyaWVuZCBjb25zdGV4cHIgdWludDEyOCBVaW50MTI4TWF4
KCk7CiAKKyAgLy8gU3VwcG9ydCBmb3IgYWJzbDo6SGFzaC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IEg+CisgIGZyaWVuZCBIIEFic2xIYXNoVmFsdWUoSCBoLCB1aW50MTI4IHYpIHsKKyAgICByZXR1
cm4gSDo6Y29tYmluZShzdGQ6Om1vdmUoaCksIFVpbnQxMjhIaWdoNjQodiksIFVpbnQxMjhMb3c2
NCh2KSk7CisgIH0KKwogIHByaXZhdGU6CiAgIGNvbnN0ZXhwciB1aW50MTI4KHVpbnQ2NF90IGhp
Z2gsIHVpbnQ2NF90IGxvdyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9udW1lcmljL2ludDEyOF90ZXN0LmNjCmluZGV4IDFlYjNlMGVjODk2MWMx
YzZjODg3NTZlZjFmMjAxZjAyMDNhZWUwYTIuLmRmZTM0NzVhY2EwNjI3YjI5ZTYzM2NjMmY4NWNl
ODQ2YjYxYmMzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL251bWVyaWMvaW50MTI4X3Rlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvbnVtZXJpYy9pbnQxMjhfdGVzdC5jYwpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJhYnNsL2Jhc2UvaW50ZXJuYWwvY3ljbGVj
bG9jay5oIgorI2luY2x1ZGUgImFic2wvaGFzaC9oYXNoX3Rlc3RpbmcuaCIKICNpbmNsdWRlICJh
YnNsL21ldGEvdHlwZV90cmFpdHMuaCIKIAogI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0Nf
VkVSID09IDE5MDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuYmF6ZWwgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL0JVSUxELmJhemVsCmluZGV4IDNhNWYxMzMyY2RhMGUxZjcwNDBlZjBkYmRhZTU1
N2IwMTgyMTM4NTQuLjZkN2MyNjE5YTUzMGUwMDBmNzRlYTMxMTVkZmQ3OTdkNzAyMDU0ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9C
VUlMRC5iYXplbApAQCAtMTksNiArMTksNyBAQCBsb2FkKAogICAgICJBQlNMX0RFRkFVTFRfQ09Q
VFMiLAogICAgICJBQlNMX1RFU1RfQ09QVFMiLAogICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBRyIs
CisgICAgIkFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTIiwKICkKIAogcGFja2FnZSgKQEAg
LTY5LDYgKzcwLDcgQEAgY2NfbGlicmFyeSgKICAgICBkZXBzID0gWwogICAgICAgICAiOmludGVy
bmFsIiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKKyAgICAgICAgIi8vYWJzbC9iYXNlOmJpdHMi
LAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmlnIiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNv
cmVfaGVhZGVycyIsCiAgICAgICAgICIvL2Fic2wvYmFzZTplbmRpYW4iLApAQCAtODYsNyArODgs
NiBAQCBjY19saWJyYXJ5KAogICAgICAgICAiaW50ZXJuYWwvdXRmOC5jYyIsCiAgICAgXSwKICAg
ICBoZHJzID0gWwotICAgICAgICAiaW50ZXJuYWwvYml0cy5oIiwKICAgICAgICAgImludGVybmFs
L2NoYXJfbWFwLmgiLAogICAgICAgICAiaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5oIiwKICAgICAg
ICAgImludGVybmFsL3Jlc2l6ZV91bmluaXRpYWxpemVkLmgiLApAQCAtMjEyLDcgKzIxMyw2IEBA
IGNjX3Rlc3QoCiAgICAgdmlzaWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKICAg
ICBkZXBzID0gWwogICAgICAgICAiOmludGVybmFsIiwKLSAgICAgICAgIjpzdHJpbmdzIiwKICAg
ICAgICAgIi8vYWJzbC9iYXNlOmNvcmVfaGVhZGVycyIsCiAgICAgICAgICJAY29tX2dvb2dsZV9n
b29nbGV0ZXN0Ly86Z3Rlc3RfbWFpbiIsCiAgICAgXSwKQEAgLTIzNyw2ICsyMzcsNyBAQCBjY190
ZXN0KAogICAgIHNpemUgPSAic21hbGwiLAogICAgIHNyY3MgPSBbInN0cmluZ192aWV3X3Rlc3Qu
Y2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFH
LAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgdmlz
aWJpbGl0eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKICAgICBkZXBzID0gWwogICAgICAg
ICAiOnN0cmluZ3MiLApAQCAtMzczLDcgKzM3NCw2IEBAIGNjX3Rlc3QoCiAgICAgdmlzaWJpbGl0
eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKICAgICBkZXBzID0gWwogICAgICAgICAiOnN0
cmluZ3MiLAotICAgICAgICAiLy9hYnNsL21lbW9yeSIsCiAgICAgICAgICJAY29tX2dpdGh1Yl9n
b29nbGVfYmVuY2htYXJrLy86YmVuY2htYXJrX21haW4iLAogICAgIF0sCiApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zdHJpbmdzL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9CVUlMRC5nbgppbmRleCA5
YThhMTBkMGU3MTA4ZTc5ZTQyYzljNWIzNjM1NWNmODc5MDE2Yjk1Li4yMGFmODNjMGU1MThiNjUw
ZWIyZTg5OWQzZTdiM2M5ZWZlN2MxMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0JVSUxE
LmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQlVJTEQuZ24KQEAgLTU5LDYgKzU5LDcgQEAgc291cmNl
X3NldCgic3RyaW5ncyIpIHsKICAgZGVwcyA9IFsKICAgICAiOmludGVybmFsIiwKICAgICAiLi4v
YmFzZSIsCisgICAgIi4uL2Jhc2U6Yml0cyIsCiAgICAgIi4uL2Jhc2U6Y29uZmlnIiwKICAgICAi
Li4vYmFzZTpjb3JlX2hlYWRlcnMiLAogICAgICIuLi9iYXNlOmVuZGlhbiIsCkBAIC04MSw3ICs4
Miw2IEBAIHNvdXJjZV9zZXQoImludGVybmFsIikgewogICAgICJpbnRlcm5hbC91dGY4LmNjIiwK
ICAgXQogICBwdWJsaWMgPSBbCi0gICAgImludGVybmFsL2JpdHMuaCIsCiAgICAgImludGVybmFs
L2NoYXJfbWFwLmgiLAogICAgICJpbnRlcm5hbC9vc3RyaW5nc3RyZWFtLmgiLAogICAgICJpbnRl
cm5hbC9yZXNpemVfdW5pbml0aWFsaXplZC5oIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL0NNYWtlTGlzdHMudHh0CmluZGV4IGNkMTIy
MTM0NzI5ZmE2ODZlOTg2MTAyNjlmMThhY2IxOGY4ZDMwMDcuLmYzZTQxNjIzODdmMTVjODMyZDc1
MDYyYWRjYzZiN2VkNWQ1ZGExN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9DTWFrZUxpc3RzLnR4dApAQCAtMzIsNyArMzIsNiBA
QCBsaXN0KEFQUEVORCBTVFJJTkdTX1BVQkxJQ19IRUFERVJTCiAKIAogbGlzdChBUFBFTkQgU1RS
SU5HU19JTlRFUk5BTF9IRUFERVJTCi0gICJpbnRlcm5hbC9iaXRzLmgiCiAgICJpbnRlcm5hbC9j
aGFyX21hcC5oIgogICAiaW50ZXJuYWwvY2hhcmNvbnZfYmlnaW50LmgiCiAgICJpbnRlcm5hbC9j
aGFyY29udl9wYXJzZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9hc2NpaS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9hc2NpaS5oCmluZGV4IDk2YTY0NTQxYzMyMWE3MTBkMjllZmM4ZDkyNjM4NjJm
MWI5OTYwZTcuLjQ4YTlkYTIyZTc2OWE4NTEyOGE2OWNmMmRmYzMzMjk4MGFmZWQ0NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvYXNjaWkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2FzY2lpLmgK
QEAgLTE2NSw3ICsxNjUsNyBAQCBpbmxpbmUgY2hhciBhc2NpaV90b2xvd2VyKHVuc2lnbmVkIGNo
YXIgYykgewogLy8gQ29udmVydHMgdGhlIGNoYXJhY3RlcnMgaW4gYHNgIHRvIGxvd2VyY2FzZSwg
Y2hhbmdpbmcgdGhlIGNvbnRlbnRzIG9mIGBzYC4KIHZvaWQgQXNjaWlTdHJUb0xvd2VyKHN0ZDo6
c3RyaW5nKiBzKTsKIAotLy8gQ3JlYXRlcyBhIGxvd2VyY2FzZSBzdGQ6OnN0cmluZyBmcm9tIGEg
Z2l2ZW4gYWJzbDo6c3RyaW5nX3ZpZXcuCisvLyBDcmVhdGVzIGEgbG93ZXJjYXNlIHN0cmluZyBm
cm9tIGEgZ2l2ZW4gYWJzbDo6c3RyaW5nX3ZpZXcuCiBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxp
bmUgc3RkOjpzdHJpbmcgQXNjaWlTdHJUb0xvd2VyKGFic2w6OnN0cmluZ192aWV3IHMpIHsKICAg
c3RkOjpzdHJpbmcgcmVzdWx0KHMpOwogICBhYnNsOjpBc2NpaVN0clRvTG93ZXIoJnJlc3VsdCk7
CkBAIC0xODMsNyArMTgzLDcgQEAgaW5saW5lIGNoYXIgYXNjaWlfdG91cHBlcih1bnNpZ25lZCBj
aGFyIGMpIHsKIC8vIENvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIGluIGBzYCB0byB1cHBlcmNhc2Us
IGNoYW5naW5nIHRoZSBjb250ZW50cyBvZiBgc2AuCiB2b2lkIEFzY2lpU3RyVG9VcHBlcihzdGQ6
OnN0cmluZyogcyk7CiAKLS8vIENyZWF0ZXMgYW4gdXBwZXJjYXNlIHN0ZDo6c3RyaW5nIGZyb20g
YSBnaXZlbiBhYnNsOjpzdHJpbmdfdmlldy4KKy8vIENyZWF0ZXMgYW4gdXBwZXJjYXNlIHN0cmlu
ZyBmcm9tIGEgZ2l2ZW4gYWJzbDo6c3RyaW5nX3ZpZXcuCiBBQlNMX01VU1RfVVNFX1JFU1VMVCBp
bmxpbmUgc3RkOjpzdHJpbmcgQXNjaWlTdHJUb1VwcGVyKGFic2w6OnN0cmluZ192aWV3IHMpIHsK
ICAgc3RkOjpzdHJpbmcgcmVzdWx0KHMpOwogICBhYnNsOjpBc2NpaVN0clRvVXBwZXIoJnJlc3Vs
dCk7CkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgc3Rk
OjpzdHJpbmcgQXNjaWlTdHJUb1VwcGVyKGFic2w6OnN0cmluZ192aWV3IHMpIHsKIEFCU0xfTVVT
VF9VU0VfUkVTVUxUIGlubGluZSBhYnNsOjpzdHJpbmdfdmlldyBTdHJpcExlYWRpbmdBc2NpaVdo
aXRlc3BhY2UoCiAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgc3RyKSB7CiAgIGF1dG8gaXQgPSBzdGQ6
OmZpbmRfaWZfbm90KHN0ci5iZWdpbigpLCBzdHIuZW5kKCksIGFic2w6OmFzY2lpX2lzc3BhY2Up
OwotICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcoaXQsIHN0ci5lbmQoKSAtIGl0KTsKKyAgcmV0
dXJuIHN0ci5zdWJzdHIoaXQgLSBzdHIuYmVnaW4oKSk7CiB9CiAKLS8vIFN0cmlwcyBpbiBwbGFj
ZSB3aGl0ZXNwYWNlIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcu
CisvLyBTdHJpcHMgaW4gcGxhY2Ugd2hpdGVzcGFjZSBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhl
IGdpdmVuIHN0cmluZy4KIGlubGluZSB2b2lkIFN0cmlwTGVhZGluZ0FzY2lpV2hpdGVzcGFjZShz
dGQ6OnN0cmluZyogc3RyKSB7CiAgIGF1dG8gaXQgPSBzdGQ6OmZpbmRfaWZfbm90KHN0ci0+YmVn
aW4oKSwgc3RyLT5lbmQoKSwgYWJzbDo6YXNjaWlfaXNzcGFjZSk7CiAgIHN0ci0+ZXJhc2Uoc3Ry
LT5iZWdpbigpLCBpdCk7CkBAIC0yMDksMTAgKzIwOSwxMCBAQCBpbmxpbmUgdm9pZCBTdHJpcExl
YWRpbmdBc2NpaVdoaXRlc3BhY2Uoc3RkOjpzdHJpbmcqIHN0cikgewogQUJTTF9NVVNUX1VTRV9S
RVNVTFQgaW5saW5lIGFic2w6OnN0cmluZ192aWV3IFN0cmlwVHJhaWxpbmdBc2NpaVdoaXRlc3Bh
Y2UoCiAgICAgYWJzbDo6c3RyaW5nX3ZpZXcgc3RyKSB7CiAgIGF1dG8gaXQgPSBzdGQ6OmZpbmRf
aWZfbm90KHN0ci5yYmVnaW4oKSwgc3RyLnJlbmQoKSwgYWJzbDo6YXNjaWlfaXNzcGFjZSk7Ci0g
IHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyhzdHIuYmVnaW4oKSwgc3RyLnJlbmQoKSAtIGl0KTsK
KyAgcmV0dXJuIHN0ci5zdWJzdHIoMCwgc3RyLnJlbmQoKSAtIGl0KTsKIH0KIAotLy8gU3RyaXBz
IGluIHBsYWNlIHdoaXRlc3BhY2UgZnJvbSB0aGUgZW5kIG9mIHRoZSBnaXZlbiBzdGQ6OnN0cmlu
ZworLy8gU3RyaXBzIGluIHBsYWNlIHdoaXRlc3BhY2UgZnJvbSB0aGUgZW5kIG9mIHRoZSBnaXZl
biBzdHJpbmcKIGlubGluZSB2b2lkIFN0cmlwVHJhaWxpbmdBc2NpaVdoaXRlc3BhY2Uoc3RkOjpz
dHJpbmcqIHN0cikgewogICBhdXRvIGl0ID0gc3RkOjpmaW5kX2lmX25vdChzdHItPnJiZWdpbigp
LCBzdHItPnJlbmQoKSwgYWJzbDo6YXNjaWlfaXNzcGFjZSk7CiAgIHN0ci0+ZXJhc2Uoc3RyLT5y
ZW5kKCkgLSBpdCk7CkBAIC0yMjUsNyArMjI1LDcgQEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgaW5s
aW5lIGFic2w6OnN0cmluZ192aWV3IFN0cmlwQXNjaWlXaGl0ZXNwYWNlKAogICByZXR1cm4gU3Ry
aXBUcmFpbGluZ0FzY2lpV2hpdGVzcGFjZShTdHJpcExlYWRpbmdBc2NpaVdoaXRlc3BhY2Uoc3Ry
KSk7CiB9CiAKLS8vIFN0cmlwcyBpbiBwbGFjZSB3aGl0ZXNwYWNlIGZyb20gYm90aCBlbmRzIG9m
IHRoZSBnaXZlbiBzdGQ6OnN0cmluZworLy8gU3RyaXBzIGluIHBsYWNlIHdoaXRlc3BhY2UgZnJv
bSBib3RoIGVuZHMgb2YgdGhlIGdpdmVuIHN0cmluZwogaW5saW5lIHZvaWQgU3RyaXBBc2NpaVdo
aXRlc3BhY2Uoc3RkOjpzdHJpbmcqIHN0cikgewogICBTdHJpcFRyYWlsaW5nQXNjaWlXaGl0ZXNw
YWNlKHN0cik7CiAgIFN0cmlwTGVhZGluZ0FzY2lpV2hpdGVzcGFjZShzdHIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnYuY2MK
aW5kZXggMDhjMzk0N2VjY2Q0NzVkZWUzMzMxMGQyNDdiZjg3NDAwMzk5ODBjOC4uYzdiOGM5OGIx
YjQ0NTljNTZlYTg1MWU5MjgxZTM1YTkyNjEzYzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9jaGFyY29udi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmNjCkBAIC0yMCw4ICsy
MCw4IEBACiAjaW5jbHVkZSA8Y3N0cmluZz4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9jYXN0cy5o
IgorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmgiCiAjaW5jbHVkZSAiYWJzbC9u
dW1lcmljL2ludDEyOC5oIgotI2luY2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9iaXRzLmgi
CiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252X2JpZ2ludC5oIgogI2lu
Y2x1ZGUgImFic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZS5oIgogCkBAIC0yNDMs
OSArMjQzLDkgQEAgc3RydWN0IENhbGN1bGF0ZWRGbG9hdCB7CiAvLyBtaW51cyB0aGUgbnVtYmVy
IG9mIGxlYWRpbmcgemVybyBiaXRzLikKIGludCBCaXRXaWR0aCh1aW50MTI4IHZhbHVlKSB7CiAg
IGlmIChVaW50MTI4SGlnaDY0KHZhbHVlKSA9PSAwKSB7Ci0gICAgcmV0dXJuIDY0IC0gc3RyaW5n
c19pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2NChVaW50MTI4TG93NjQodmFsdWUpKTsKKyAg
ICByZXR1cm4gNjQgLSBiYXNlX2ludGVybmFsOjpDb3VudExlYWRpbmdaZXJvczY0KFVpbnQxMjhM
b3c2NCh2YWx1ZSkpOwogICB9Ci0gIHJldHVybiAxMjggLSBzdHJpbmdzX2ludGVybmFsOjpDb3Vu
dExlYWRpbmdaZXJvczY0KFVpbnQxMjhIaWdoNjQodmFsdWUpKTsKKyAgcmV0dXJuIDEyOCAtIGJh
c2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQoVWludDEyOEhpZ2g2NCh2YWx1ZSkpOwog
fQogCiAvLyBDYWxjdWxhdGVzIGhvdyBmYXIgdG8gdGhlIHJpZ2h0IGEgbWFudGlzc2EgbmVlZHMg
dG8gYmUgc2hpZnRlZCB0byBjcmVhdGUgYQpAQCAtNTE4LDcgKzUxOCw3IEBAIENhbGN1bGF0ZWRG
bG9hdCBDYWxjdWxhdGVGcm9tUGFyc2VkSGV4YWRlY2ltYWwoCiAgICAgY29uc3Qgc3RyaW5nc19p
bnRlcm5hbDo6UGFyc2VkRmxvYXQmIHBhcnNlZF9oZXgpIHsKICAgdWludDY0X3QgbWFudGlzc2Eg
PSBwYXJzZWRfaGV4Lm1hbnRpc3NhOwogICBpbnQgZXhwb25lbnQgPSBwYXJzZWRfaGV4LmV4cG9u
ZW50OwotICBpbnQgbWFudGlzc2Ffd2lkdGggPSA2NCAtIHN0cmluZ3NfaW50ZXJuYWw6OkNvdW50
TGVhZGluZ1plcm9zNjQobWFudGlzc2EpOworICBpbnQgbWFudGlzc2Ffd2lkdGggPSA2NCAtIGJh
c2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQobWFudGlzc2EpOwogICBjb25zdCBpbnQg
c2hpZnQgPSBOb3JtYWxpemVkU2hpZnRTaXplPEZsb2F0VHlwZT4obWFudGlzc2Ffd2lkdGgsIGV4
cG9uZW50KTsKICAgYm9vbCByZXN1bHRfZXhhY3Q7CiAgIGV4cG9uZW50ICs9IHNoaWZ0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29u
di5oCmluZGV4IDNlMzEzNjc5Yzk2MThhYTg4ZGM5ZThiNTVlODhlOTZhMGY3ZjY5NmIuLjA3MzUz
ODI5NjIzNTZjZmY3YmZiNWYzZWJkM2EwMzkzZDJkMjgxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvY2hhcmNvbnYuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2NoYXJjb252LmgKQEAgLTIyLDcg
KzIyLDcgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gV29ya2FsaWtlIGNvbXBhdGliaWx0eSB2ZXJz
aW9uIG9mIHN0ZDo6Y2hhcnNfZm9ybWF0IGZyb20gQysrMTcuCiAvLwogLy8gVGhpcyBpcyBhbiBi
aXRmaWVsZCBlbnVtZXJhdG9yIHdoaWNoIGNhbiBiZSBwYXNzZWQgdG8gYWJzbDo6ZnJvbV9jaGFy
cyB0bwotLy8gY29uZmlndXJlIHRoZSBzdGQ6OnN0cmluZy10by1mbG9hdCBjb252ZXJzaW9uLgor
Ly8gY29uZmlndXJlIHRoZSBzdHJpbmctdG8tZmxvYXQgY29udmVyc2lvbi4KIGVudW0gY2xhc3Mg
Y2hhcnNfZm9ybWF0IHsKICAgc2NpZW50aWZpYyA9IDEsCiAgIGZpeGVkID0gMiwKQEAgLTMwLDcg
KzMwLDcgQEAgZW51bSBjbGFzcyBjaGFyc19mb3JtYXQgewogICBnZW5lcmFsID0gZml4ZWQgfCBz
Y2llbnRpZmljLAogfTsKIAotLy8gVGhlIHJldHVybiByZXN1bHQgb2YgYSBzdGQ6OnN0cmluZy10
by1udW1iZXIgY29udmVyc2lvbi4KKy8vIFRoZSByZXR1cm4gcmVzdWx0IG9mIGEgc3RyaW5nLXRv
LW51bWJlciBjb252ZXJzaW9uLgogLy8KIC8vIGBlY2Agd2lsbCBiZSBzZXQgdG8gYGludmFsaWRf
YXJndW1lbnRgIGlmIGEgd2VsbC1mb3JtZWQgbnVtYmVyIHdhcyBub3QgZm91bmQKIC8vIGF0IHRo
ZSBzdGFydCBvZiB0aGUgaW5wdXQgcmFuZ2UsIGByZXN1bHRfb3V0X29mX3JhbmdlYCBpZiBhIHdl
bGwtZm9ybWVkCkBAIC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBmcm9tX2NoYXJzX3Jlc3VsdCB7CiAv
LyBJZiBgZm10YCBpcyBzZXQsIGl0IG11c3QgYmUgb25lIG9mIHRoZSBlbnVtZXJhdG9yIHZhbHVl
cyBvZiB0aGUgY2hhcnNfZm9ybWF0LgogLy8gKFRoaXMgaXMgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0
IGNoYXJzX2Zvcm1hdCBpcyBhIGJpdG1hc2sgdHlwZS4pICBJZiBzZXQgdG8KIC8vIGBzY2llbnRp
ZmljYCwgYSBtYXRjaGluZyBudW1iZXIgbXVzdCBjb250YWluIGFuIGV4cG9uZW50LiAgSWYgc2V0
IHRvIGBmaXhlZGAsCi0vLyB0aGVuIGFuIGV4cG9uZW50IHdpbGwgbmV2ZXIgbWF0Y2guICAoRm9y
IGV4YW1wbGUsIHRoZSBzdGQ6OnN0cmluZyAiMWU1IiB3aWxsIGJlCisvLyB0aGVuIGFuIGV4cG9u
ZW50IHdpbGwgbmV2ZXIgbWF0Y2guICAoRm9yIGV4YW1wbGUsIHRoZSBzdHJpbmcgIjFlNSIgd2ls
bCBiZQogLy8gcGFyc2VkIGFzICIxIi4pICBJZiBzZXQgdG8gYGhleGAsIHRoZW4gYSBoZXhhZGVj
aW1hbCBmbG9hdCBpcyBwYXJzZWQgaW4gdGhlCiAvLyBmb3JtYXQgdGhhdCBzdHJ0b2QoKSBhY2Nl
cHRzLCBleGNlcHQgdGhhdCBhICIweCIgcHJlZml4IGlzIE5PVCBtYXRjaGVkLgogLy8gKEluIHBh
cnRpY3VsYXIsIGluIGBoZXhgIG1vZGUsIHRoZSBpbnB1dCAiMHhmZiIgcmVzdWx0cyBpbiB0aGUg
bGFyZ2VzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9jaGFyY29udl90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9jaGFyY29udl90ZXN0LmNjCmluZGV4IGY4ZDcxY2M2YzQ0OGM3YTNlN2YwY2Fm
OTgwOThmYzdiNGQyZDU2NDIuLjg5NDE4ZmU5NDhmZmVkYzRiNzVhYzJmYTgxMGZkNDQxNjYwNWMz
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvY2hhcmNvbnZfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2NoYXJjb252X3Rlc3QuY2MKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIHsK
IAogI2lmIEFCU0xfQ09NUElMRVJfRE9FU19FWEFDVF9ST1VORElORwogCi0vLyBUZXN0cyB0aGF0
IHRoZSBnaXZlbiBzdGQ6OnN0cmluZyBpcyBhY2NlcHRlZCBieSBhYnNsOjpmcm9tX2NoYXJzLCBh
bmQgdGhhdCBpdAorLy8gVGVzdHMgdGhhdCB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGFjY2VwdGVkIGJ5
IGFic2w6OmZyb21fY2hhcnMsIGFuZCB0aGF0IGl0CiAvLyBjb252ZXJ0cyBleGFjdGx5IGVxdWFs
IHRvIHRoZSBnaXZlbiBudW1iZXIuCiB2b2lkIFRlc3REb3VibGVQYXJzZShhYnNsOjpzdHJpbmdf
dmlldyBzdHIsIGRvdWJsZSBleHBlY3RlZF9udW1iZXIpIHsKICAgU0NPUEVEX1RSQUNFKHN0cik7
CkBAIC0yNTAsNyArMjUwLDcgQEAgVEVTVChGcm9tQ2hhcnMsIE5lYXJSb3VuZGluZ0Nhc2VzRXhw
bGljaXQpIHsKICAgRVhQRUNUX0VRKFRvRmxvYXQoIjQ1OTkyNjYwMTAxMS5lMTUiKSwgbGRleHBm
KDEyNDY2MzM2LCA2NSkpOwogfQogCi0vLyBDb21tb24gdGVzdCBsb2dpYyBmb3IgY29udmVydGlu
ZyBhIHN0ZDo6c3RyaW5nIHdoaWNoIGxpZXMgZXhhY3RseSBoYWxmd2F5IGJldHdlZW4KKy8vIENv
bW1vbiB0ZXN0IGxvZ2ljIGZvciBjb252ZXJ0aW5nIGEgc3RyaW5nIHdoaWNoIGxpZXMgZXhhY3Rs
eSBoYWxmd2F5IGJldHdlZW4KIC8vIHR3byB0YXJnZXQgZmxvYXRzLgogLy8KIC8vIG1hbnRpc3Nh
IGFuZCBleHBvbmVudCByZXByZXNlbnQgdGhlIHByZWNpc2UgdmFsdWUgYmV0d2VlbiB0d28gZmxv
YXRpbmcgcG9pbnQKQEAgLTY1NSw3ICs2NTUsNyBAQCBpbnQgTmV4dFN0ZXAoaW50IHN0ZXApIHsK
IC8vIGlzIGNvcnJlY3QgZm9yIGluLWJvdW5kcyB2YWx1ZXMsIGFuZCB0aGF0IG92ZXJmbG93IGFu
ZCB1bmRlcmZsb3cgYXJlIGRvbmUKIC8vIGNvcnJlY3RseSBmb3Igb3V0LW9mLWJvdW5kcyB2YWx1
ZXMuCiAvLwotLy8gaW5wdXRfZ2VuZXJhdG9yIG1hcHMgZnJvbSBhbiBpbnRlZ2VyIGluZGV4IHRv
IGEgc3RkOjpzdHJpbmcgdG8gdGVzdC4KKy8vIGlucHV0X2dlbmVyYXRvciBtYXBzIGZyb20gYW4g
aW50ZWdlciBpbmRleCB0byBhIHN0cmluZyB0byB0ZXN0LgogLy8gZXhwZWN0ZWRfZ2VuZXJhdG9y
IG1hcHMgZnJvbSBhbiBpbnRlZ2VyIGluZGV4IHRvIGFuIGV4cGVjdGVkIEZsb2F0IHZhbHVlLgog
Ly8gZnJvbV9jaGFycyBjb252ZXJzaW9uIG9mIGlucHV0X2dlbmVyYXRvcihpKSBzaG91bGQgcmVz
dWx0IGluCiAvLyBleHBlY3RlZF9nZW5lcmF0b3IoaSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2VzY2FwaW5nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGluZy5jYwppbmRleCBmYmM5Zjc1
NjMxNWZhN2ZlOWE3YmIwMjVkNDhjM2ZiMjg0YjllOGZiLi44ZDhiMDBiMjAwMWNlODMwN2I0ODc4
ODAwN2NjNTY1NWE3NWY1NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcuY2MKQEAgLTg5LDcgKzg5LDcgQEAgaW5saW5l
IGJvb2wgSXNTdXJyb2dhdGUoY2hhcjMyX3QgYywgYWJzbDo6c3RyaW5nX3ZpZXcgc3JjLCBzdGQ6
OnN0cmluZyogZXJyb3IpIHsKIC8vCiAvLyAgICBVbmVzY2FwZXMgQyBlc2NhcGUgc2VxdWVuY2Vz
IGFuZCBpcyB0aGUgcmV2ZXJzZSBvZiBDRXNjYXBlKCkuCiAvLwotLy8gICAgSWYgJ3NvdXJjZScg
aXMgdmFsaWQsIHN0b3JlcyB0aGUgdW5lc2NhcGVkIHN0ZDo6c3RyaW5nIGFuZCBpdHMgc2l6ZSBp
bgorLy8gICAgSWYgJ3NvdXJjZScgaXMgdmFsaWQsIHN0b3JlcyB0aGUgdW5lc2NhcGVkIHN0cmlu
ZyBhbmQgaXRzIHNpemUgaW4KIC8vICAgICdkZXN0JyBhbmQgJ2Rlc3RfbGVuJyByZXNwZWN0aXZl
bHksIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZQogLy8gICAgcmV0dXJucyBmYWxzZSBhbmQg
b3B0aW9uYWxseSBzdG9yZXMgdGhlIGVycm9yIGRlc2NyaXB0aW9uIGluCiAvLyAgICAnZXJyb3In
LiBTZXQgJ2Vycm9yJyB0byBudWxscHRyIHRvIGRpc2FibGUgZXJyb3IgcmVwb3J0aW5nLgpAQCAt
MTA0LDcgKzEwNCw3IEBAIGJvb2wgQ1VuZXNjYXBlSW50ZXJuYWwoYWJzbDo6c3RyaW5nX3ZpZXcg
c291cmNlLCBib29sIGxlYXZlX251bGxzX2VzY2FwZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIqIGRlc3QsIHB0cmRpZmZfdCogZGVzdF9sZW4sIHN0ZDo6c3RyaW5nKiBlcnJvcikgewog
ICBjaGFyKiBkID0gZGVzdDsKICAgY29uc3QgY2hhciogcCA9IHNvdXJjZS5kYXRhKCk7Ci0gIGNv
bnN0IGNoYXIqIGVuZCA9IHNvdXJjZS5lbmQoKTsKKyAgY29uc3QgY2hhciogZW5kID0gcCArIHNv
dXJjZS5zaXplKCk7CiAgIGNvbnN0IGNoYXIqIGxhc3RfYnl0ZSA9IGVuZCAtIDE7CiAKICAgLy8g
U21hbGwgb3B0aW1pemF0aW9uIGZvciBjYXNlIHdoZXJlIHNvdXJjZSA9IGRlc3QgYW5kIHRoZXJl
J3Mgbm8gZXNjYXBpbmcKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIENVbmVzY2FwZUludGVybmFs
KGFic2w6OnN0cmluZ192aWV3IHNvdXJjZSwgYm9vbCBsZWF2ZV9udWxsc19lc2NhcGVkLAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogLy8gQ1VuZXNjYXBlSW50ZXJuYWwoKQogLy8KLS8vICAgIFNhbWUgYXMg
YWJvdmUgYnV0IHVzZXMgYSBDKysgc3RkOjpzdHJpbmcgZm9yIG91dHB1dC4gJ3NvdXJjZScgYW5k
ICdkZXN0JworLy8gICAgU2FtZSBhcyBhYm92ZSBidXQgdXNlcyBhIEMrKyBzdHJpbmcgZm9yIG91
dHB1dC4gJ3NvdXJjZScgYW5kICdkZXN0JwogLy8gICAgbWF5IGJlIHRoZSBzYW1lLgogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogYm9vbCBDVW5lc2NhcGVJbnRlcm5hbChhYnNsOjpzdHJpbmdfdmlldyBzb3Vy
Y2UsIGJvb2wgbGVhdmVfbnVsbHNfZXNjYXBlZCwKQEAgLTMwNCw3ICszMDQsNyBAQCBib29sIENV
bmVzY2FwZUludGVybmFsKGFic2w6OnN0cmluZ192aWV3IHNvdXJjZSwgYm9vbCBsZWF2ZV9udWxs
c19lc2NhcGVkLAogICBwdHJkaWZmX3QgZGVzdF9zaXplOwogICBpZiAoIUNVbmVzY2FwZUludGVy
bmFsKHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsZWF2ZV9udWxsc19lc2NhcGVk
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KGRlc3QtPmRhdGEo
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJigqZGVzdClbMF0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmRlc3Rfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcikp
IHsKICAgICByZXR1cm4gZmFsc2U7CkBAIC02ODQsNyArNjg0LDcgQEAgYm9vbCBCYXNlNjRVbmVz
Y2FwZUludGVybmFsKGNvbnN0IGNoYXIqIHNyY19wYXJhbSwgc2l6ZV90IHN6c3JjLCBjaGFyKiBk
ZXN0LAogLy8gVGhlIGFycmF5cyBiZWxvdyB3ZXJlIGdlbmVyYXRlZCBieSB0aGUgZm9sbG93aW5n
IGNvZGUKIC8vICNpbmNsdWRlIDxzeXMvdGltZS5oPgogLy8gI2luY2x1ZGUgPHN0ZGxpYi5oPgot
Ly8gI2luY2x1ZGUgPHN0ZDo6c3RyaW5nLmg+CisvLyAjaW5jbHVkZSA8c3RyaW5nLmg+CiAvLyBt
YWluKCkKIC8vIHsKIC8vICAgc3RhdGljIGNvbnN0IGNoYXIgQmFzZTY0W10gPQpAQCAtOTM5LDcg
KzkzOSw4IEBAIGNvbnN0ZXhwciBjaGFyIGtCYXNlNjRDaGFyc1tdID0KIGNvbnN0ZXhwciBjaGFy
IGtXZWJTYWZlQmFzZTY0Q2hhcnNbXSA9CiAgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8iOwogCi12b2lkIEJhc2U2NEVz
Y2FwZUludGVybmFsKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNyYywgc2l6ZV90IHN6c3JjLCBzdGQ6
OnN0cmluZyogZGVzdCwKK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmc+Cit2b2lkIEJhc2U2NEVz
Y2FwZUludGVybmFsKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNyYywgc2l6ZV90IHN6c3JjLCBTdHJp
bmcqIGRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZG9fcGFkZGluZywgY29u
c3QgY2hhciogYmFzZTY0X2NoYXJzKSB7CiAgIGNvbnN0IHNpemVfdCBjYWxjX2VzY2FwZWRfc2l6
ZSA9CiAgICAgICBDYWxjdWxhdGVCYXNlNjRFc2NhcGVkTGVuSW50ZXJuYWwoc3pzcmMsIGRvX3Bh
ZGRpbmcpOwpAQCAtOTUxLDcgKzk1Miw4IEBAIHZvaWQgQmFzZTY0RXNjYXBlSW50ZXJuYWwoY29u
c3QgdW5zaWduZWQgY2hhciogc3JjLCBzaXplX3Qgc3pzcmMsIHN0ZDo6c3RyaW5nKiBkCiAgIGRl
c3QtPmVyYXNlKGVzY2FwZWRfbGVuKTsKIH0KIAotYm9vbCBCYXNlNjRVbmVzY2FwZUludGVybmFs
KGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IHNsZW4sIHN0ZDo6c3RyaW5nKiBkZXN0LAordGVtcGxh
dGUgPHR5cGVuYW1lIFN0cmluZz4KK2Jvb2wgQmFzZTY0VW5lc2NhcGVJbnRlcm5hbChjb25zdCBj
aGFyKiBzcmMsIHNpemVfdCBzbGVuLCBTdHJpbmcqIGRlc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc2lnbmVkIGNoYXIqIHVuYmFzZTY0KSB7CiAgIC8vIERldGVybWluZSB0
aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IHN0ZDo6c3RyaW5nLiAgQmFzZTY0IGVuY29kZXMgZXZlcnkg
MyBieXRlcyBpbnRvCiAgIC8vIDQgY2hhcmFjdGVycy4gIGFueSBsZWZ0b3ZlciBjaGFycyBhcmUg
YWRkZWQgZGlyZWN0bHkgZm9yIGdvb2QgbWVhc3VyZS4KQEAgLTk5OSw3ICsxMDAxLDcgQEAgY29u
c3RleHByIGNoYXIga0hleFZhbHVlWzI1Nl0gPSB7CiAvKiBjbGFuZy1mb3JtYXQgb24gKi8KIAog
Ly8gVGhpcyBpcyBhIHRlbXBsYXRlZCBmdW5jdGlvbiBzbyB0aGF0IFQgY2FuIGJlIGVpdGhlciBh
IGNoYXIqCi0vLyBvciBhIHN0ZDo6c3RyaW5nLiAgVGhpcyB3b3JrcyBiZWNhdXNlIHdlIHVzZSB0
aGUgW10gb3BlcmF0b3IgdG8gYWNjZXNzCisvLyBvciBhIHN0cmluZy4gIFRoaXMgd29ya3MgYmVj
YXVzZSB3ZSB1c2UgdGhlIFtdIG9wZXJhdG9yIHRvIGFjY2VzcwogLy8gaW5kaXZpZHVhbCBjaGFy
YWN0ZXJzIGF0IGEgdGltZS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdm9pZCBIZXhTdHJpbmdU
b0J5dGVzSW50ZXJuYWwoY29uc3QgY2hhciogZnJvbSwgVCB0bywgcHRyZGlmZl90IG51bSkgewpA
QCAtMTAwOSw3ICsxMDExLDcgQEAgdm9pZCBIZXhTdHJpbmdUb0J5dGVzSW50ZXJuYWwoY29uc3Qg
Y2hhciogZnJvbSwgVCB0bywgcHRyZGlmZl90IG51bSkgewogICB9CiB9CiAKLS8vIFRoaXMgaXMg
YSB0ZW1wbGF0ZWQgZnVuY3Rpb24gc28gdGhhdCBUIGNhbiBiZSBlaXRoZXIgYSBjaGFyKiBvciBh
IHN0ZDo6c3RyaW5nLgorLy8gVGhpcyBpcyBhIHRlbXBsYXRlZCBmdW5jdGlvbiBzbyB0aGF0IFQg
Y2FuIGJlIGVpdGhlciBhIGNoYXIqIG9yIGEgc3RyaW5nLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiB2b2lkIEJ5dGVzVG9IZXhTdHJpbmdJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmMs
IFQgZGVzdCwgcHRyZGlmZl90IG51bSkgewogICBhdXRvIGRlc3RfcHRyID0gJmRlc3RbMF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2Fw
aW5nLmgKaW5kZXggN2YxYWI5NmQ4ZmYxNWQ1NjA0MmI0NjU5ZDY2MTQ4MjE0NzA1ZjBhNS4uMjk2
NTk3MzA0ZTZjZTNmNTg2NWRjMDNhOTY3ZjM0MzE4ZTY5YjkxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9lc2NhcGluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmcuaApAQCAtMTcs
NyArMTcsNyBAQAogLy8gRmlsZTogZXNjYXBpbmcuaAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IC8vCi0vLyBUaGlzIGhlYWRlciBmaWxlIGNvbnRhaW5zIHN0ZDo6c3RyaW5nIHV0aWxpdGllcyBp
bnZvbHZlZCBpbiBlc2NhcGluZyBhbmQKKy8vIFRoaXMgaGVhZGVyIGZpbGUgY29udGFpbnMgc3Ry
aW5nIHV0aWxpdGllcyBpbnZvbHZlZCBpbiBlc2NhcGluZyBhbmQKIC8vIHVuZXNjYXBpbmcgc3Ry
aW5ncyBpbiB2YXJpb3VzIHdheXMuCiAvLwogCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBh
YnNsIHsKIAogLy8gQ1VuZXNjYXBlKCkKIC8vCi0vLyBVbmVzY2FwZXMgYSBgc291cmNlYCBzdGQ6
OnN0cmluZyBhbmQgY29waWVzIGl0IGludG8gYGRlc3RgLCByZXdyaXRpbmcgQy1zdHlsZQorLy8g
VW5lc2NhcGVzIGEgYHNvdXJjZWAgc3RyaW5nIGFuZCBjb3BpZXMgaXQgaW50byBgZGVzdGAsIHJl
d3JpdGluZyBDLXN0eWxlCiAvLyBlc2NhcGUgc2VxdWVuY2VzIChodHRwOi8vZW4uY3BwcmVmZXJl
bmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lc2NhcGUpIGludG8KIC8vIHRoZWlyIHByb3BlciBjb2Rl
IHBvaW50IGVxdWl2YWxlbnRzLCByZXR1cm5pbmcgYHRydWVgIGlmIHN1Y2Nlc3NmdWwuCiAvLwpA
QCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gICAgIDB4OTkpLgogLy8KIC8v
Ci0vLyBJZiBhbnkgZXJyb3JzIGFyZSBlbmNvdW50ZXJlZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5z
IGBmYWxzZWAgYW5kIHN0b3JlcyB0aGUKLS8vIGZpcnN0IGVuY291bnRlcmVkIGVycm9yIGluIGBl
cnJvcmAuIFRvIGRpc2FibGUgZXJyb3IgcmVwb3J0aW5nLCBzZXQgYGVycm9yYAotLy8gdG8gYG51
bGxwdHJgIG9yIHVzZSB0aGUgb3ZlcmxvYWQgd2l0aCBubyBlcnJvciByZXBvcnRpbmcgYmVsb3cu
CisvLyBJZiBhbnkgZXJyb3JzIGFyZSBlbmNvdW50ZXJlZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5z
IGBmYWxzZWAsIGxlYXZpbmcgdGhlCisvLyBgZGVzdGAgb3V0cHV0IHBhcmFtZXRlciBpbiBhbiB1
bnNwZWNpZmllZCBzdGF0ZSwgYW5kIHN0b3JlcyB0aGUgZmlyc3QKKy8vIGVuY291bnRlcmVkIGVy
cm9yIGluIGBlcnJvcmAuIFRvIGRpc2FibGUgZXJyb3IgcmVwb3J0aW5nLCBzZXQgYGVycm9yYCB0
bworLy8gYG51bGxwdHJgIG9yIHVzZSB0aGUgb3ZlcmxvYWQgd2l0aCBubyBlcnJvciByZXBvcnRp
bmcgYmVsb3cuCiAvLwogLy8gRXhhbXBsZToKIC8vCkBAIC03OCw3ICs3OSw3IEBAIGlubGluZSBi
b29sIENVbmVzY2FwZShhYnNsOjpzdHJpbmdfdmlldyBzb3VyY2UsIHN0ZDo6c3RyaW5nKiBkZXN0
KSB7CiAKIC8vIENFc2NhcGUoKQogLy8KLS8vIEVzY2FwZXMgYSAnc3JjJyBzdGQ6OnN0cmluZyB1
c2luZyBDLXN0eWxlIGVzY2FwZXMgc2VxdWVuY2VzCisvLyBFc2NhcGVzIGEgJ3NyYycgc3RyaW5n
IHVzaW5nIEMtc3R5bGUgZXNjYXBlcyBzZXF1ZW5jZXMKIC8vIChodHRwOi8vZW4uY3BwcmVmZXJl
bmNlLmNvbS93L2NwcC9sYW5ndWFnZS9lc2NhcGUpLCBlc2NhcGluZyBvdGhlcgogLy8gbm9uLXBy
aW50YWJsZS9ub24td2hpdGVzcGFjZSBieXRlcyBhcyBvY3RhbCBzZXF1ZW5jZXMgKGUuZy4gIlwz
NzciKS4KIC8vCkBAIC05MSw3ICs5Miw3IEBAIHN0ZDo6c3RyaW5nIENFc2NhcGUoYWJzbDo6c3Ry
aW5nX3ZpZXcgc3JjKTsKIAogLy8gQ0hleEVzY2FwZSgpCiAvLwotLy8gRXNjYXBlcyBhICdzcmMn
IHN0ZDo6c3RyaW5nIHVzaW5nIEMtc3R5bGUgZXNjYXBlIHNlcXVlbmNlcywgZXNjYXBpbmcKKy8v
IEVzY2FwZXMgYSAnc3JjJyBzdHJpbmcgdXNpbmcgQy1zdHlsZSBlc2NhcGUgc2VxdWVuY2VzLCBl
c2NhcGluZwogLy8gb3RoZXIgbm9uLXByaW50YWJsZS9ub24td2hpdGVzcGFjZSBieXRlcyBhcyBo
ZXhhZGVjaW1hbCBzZXF1ZW5jZXMgKGUuZy4KIC8vICJceEZGIikuCiAvLwpAQCAtMTA0LDcgKzEw
NSw3IEBAIHN0ZDo6c3RyaW5nIENIZXhFc2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjKTsKIAog
Ly8gVXRmOFNhZmVDRXNjYXBlKCkKIC8vCi0vLyBFc2NhcGVzIGEgJ3NyYycgc3RkOjpzdHJpbmcg
dXNpbmcgQy1zdHlsZSBlc2NhcGUgc2VxdWVuY2VzLCBlc2NhcGluZyBieXRlcyBhcworLy8gRXNj
YXBlcyBhICdzcmMnIHN0cmluZyB1c2luZyBDLXN0eWxlIGVzY2FwZSBzZXF1ZW5jZXMsIGVzY2Fw
aW5nIGJ5dGVzIGFzCiAvLyBvY3RhbCBzZXF1ZW5jZXMsIGFuZCBwYXNzaW5nIHRocm91Z2ggVVRG
LTggY2hhcmFjdGVycyB3aXRob3V0IGNvbnZlcnNpb24uCiAvLyBJLmUuLCB3aGVuIGVuY291bnRl
cmluZyBhbnkgYnl0ZXMgd2l0aCB0aGVpciBoaWdoIGJpdCBzZXQsIHRoaXMgZnVuY3Rpb24KIC8v
IHdpbGwgbm90IGVzY2FwZSB0aG9zZSB2YWx1ZXMsIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIHZh
bGlkIFVURi04LgpAQCAtMTEyLDQ3ICsxMTMsNDcgQEAgc3RkOjpzdHJpbmcgVXRmOFNhZmVDRXNj
YXBlKGFic2w6OnN0cmluZ192aWV3IHNyYyk7CiAKIC8vIFV0ZjhTYWZlQ0hleEVzY2FwZSgpCiAv
LwotLy8gRXNjYXBlcyBhICdzcmMnIHN0ZDo6c3RyaW5nIHVzaW5nIEMtc3R5bGUgZXNjYXBlIHNl
cXVlbmNlcywgZXNjYXBpbmcgYnl0ZXMgYXMKKy8vIEVzY2FwZXMgYSAnc3JjJyBzdHJpbmcgdXNp
bmcgQy1zdHlsZSBlc2NhcGUgc2VxdWVuY2VzLCBlc2NhcGluZyBieXRlcyBhcwogLy8gaGV4YWRl
Y2ltYWwgc2VxdWVuY2VzLCBhbmQgcGFzc2luZyB0aHJvdWdoIFVURi04IGNoYXJhY3RlcnMgd2l0
aG91dAogLy8gY29udmVyc2lvbi4KIHN0ZDo6c3RyaW5nIFV0ZjhTYWZlQ0hleEVzY2FwZShhYnNs
OjpzdHJpbmdfdmlldyBzcmMpOwogCiAvLyBCYXNlNjRVbmVzY2FwZSgpCiAvLwotLy8gQ29udmVy
dHMgYSBgc3JjYCBzdGQ6OnN0cmluZyBlbmNvZGVkIGluIEJhc2U2NCB0byBpdHMgYmluYXJ5IGVx
dWl2YWxlbnQsIHdyaXRpbmcKKy8vIENvbnZlcnRzIGEgYHNyY2Agc3RyaW5nIGVuY29kZWQgaW4g
QmFzZTY0IHRvIGl0cyBiaW5hcnkgZXF1aXZhbGVudCwgd3JpdGluZwogLy8gaXQgdG8gYSBgZGVz
dGAgYnVmZmVyLCByZXR1cm5pbmcgYHRydWVgIG9uIHN1Y2Nlc3MuIElmIGBzcmNgIGNvbnRhaW5z
IGludmFsaWQKIC8vIGNoYXJhY3RlcnMsIGBkZXN0YCBpcyBjbGVhcmVkIGFuZCByZXR1cm5zIGBm
YWxzZWAuCiBib29sIEJhc2U2NFVuZXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYywgc3RkOjpz
dHJpbmcqIGRlc3QpOwogCi0vLyBXZWJTYWZlQmFzZTY0VW5lc2NhcGUoYWJzbDo6c3RyaW5nX3Zp
ZXcsIHN0ZDo6c3RyaW5nKikKKy8vIFdlYlNhZmVCYXNlNjRVbmVzY2FwZSgpCiAvLwotLy8gQ29u
dmVydHMgYSBgc3JjYCBzdGQ6OnN0cmluZyBlbmNvZGVkIGluIEJhc2U2NCB0byBpdHMgYmluYXJ5
IGVxdWl2YWxlbnQsIHdyaXRpbmcKKy8vIENvbnZlcnRzIGEgYHNyY2Agc3RyaW5nIGVuY29kZWQg
aW4gQmFzZTY0IHRvIGl0cyBiaW5hcnkgZXF1aXZhbGVudCwgd3JpdGluZwogLy8gaXQgdG8gYSBg
ZGVzdGAgYnVmZmVyLCBidXQgdXNpbmcgJy0nIGluc3RlYWQgb2YgJysnLCBhbmQgJ18nIGluc3Rl
YWQgb2YgJy8nLgogLy8gSWYgYHNyY2AgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzLCBgZGVz
dGAgaXMgY2xlYXJlZCBhbmQgcmV0dXJucyBgZmFsc2VgLgogYm9vbCBXZWJTYWZlQmFzZTY0VW5l
c2NhcGUoYWJzbDo6c3RyaW5nX3ZpZXcgc3JjLCBzdGQ6OnN0cmluZyogZGVzdCk7CiAKIC8vIEJh
c2U2NEVzY2FwZSgpCiAvLwotLy8gRW5jb2RlcyBhIGBzcmNgIHN0ZDo6c3RyaW5nIGludG8gYSBg
ZGVzdGAgYnVmZmVyIHVzaW5nIGJhc2U2NCBlbmNvZGluZywgd2l0aAorLy8gRW5jb2RlcyBhIGBz
cmNgIHN0cmluZyBpbnRvIGEgYGRlc3RgIGJ1ZmZlciB1c2luZyBiYXNlNjQgZW5jb2RpbmcsIHdp
dGgKIC8vIHBhZGRpbmcgY2hhcmFjdGVycy4gVGhpcyBmdW5jdGlvbiBjb25mb3JtcyB3aXRoIFJG
QyA0NjQ4IHNlY3Rpb24gNCAoYmFzZTY0KS4KIHZvaWQgQmFzZTY0RXNjYXBlKGFic2w6OnN0cmlu
Z192aWV3IHNyYywgc3RkOjpzdHJpbmcqIGRlc3QpOwogCiAvLyBXZWJTYWZlQmFzZTY0RXNjYXBl
KCkKIC8vCi0vLyBFbmNvZGVzIGEgYHNyY2Agc3RkOjpzdHJpbmcgaW50byBhIGBkZXN0YCBidWZm
ZXIgdXNpbmcgJy0nIGluc3RlYWQgb2YgJysnIGFuZAorLy8gRW5jb2RlcyBhIGBzcmNgIHN0cmlu
ZyBpbnRvIGEgYGRlc3RgIGJ1ZmZlciB1c2luZyAnLScgaW5zdGVhZCBvZiAnKycgYW5kCiAvLyAn
XycgaW5zdGVhZCBvZiAnLycsIGFuZCB3aXRob3V0IHBhZGRpbmcuIFRoaXMgZnVuY3Rpb24gY29u
Zm9ybXMgd2l0aCBSRkMgNDY0OAogLy8gc2VjdGlvbiA1IChiYXNlNjR1cmwpLgogdm9pZCBXZWJT
YWZlQmFzZTY0RXNjYXBlKGFic2w6OnN0cmluZ192aWV3IHNyYywgc3RkOjpzdHJpbmcqIGRlc3Qp
OwogCiAvLyBIZXhTdHJpbmdUb0J5dGVzKCkKIC8vCi0vLyBDb252ZXJ0cyBhbiBBU0NJSSBoZXgg
c3RkOjpzdHJpbmcgaW50byBieXRlcywgcmV0dXJuaW5nIGJpbmFyeSBkYXRhIG9mIGxlbmd0aAor
Ly8gQ29udmVydHMgYW4gQVNDSUkgaGV4IHN0cmluZyBpbnRvIGJ5dGVzLCByZXR1cm5pbmcgYmlu
YXJ5IGRhdGEgb2YgbGVuZ3RoCiAvLyBgZnJvbS5zaXplKCkvMmAuCiBzdGQ6OnN0cmluZyBIZXhT
dHJpbmdUb0J5dGVzKGFic2w6OnN0cmluZ192aWV3IGZyb20pOwogCiAvLyBCeXRlc1RvSGV4U3Ry
aW5nKCkKIC8vCi0vLyBDb252ZXJ0cyBiaW5hcnkgZGF0YSBpbnRvIGFuIEFTQ0lJIHRleHQgc3Rk
OjpzdHJpbmcsIHJldHVybmluZyBhIHN0ZDo6c3RyaW5nIG9mIHNpemUKKy8vIENvbnZlcnRzIGJp
bmFyeSBkYXRhIGludG8gYW4gQVNDSUkgdGV4dCBzdHJpbmcsIHJldHVybmluZyBhIHN0cmluZyBv
ZiBzaXplCiAvLyBgMipmcm9tLnNpemUoKWAuCiBzdGQ6OnN0cmluZyBCeXRlc1RvSGV4U3RyaW5n
KGFic2w6OnN0cmluZ192aWV3IGZyb20pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2Vz
Y2FwaW5nX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2VzY2FwaW5nX3Rlc3QuY2MKaW5kZXggM2Y2
NWVjMTA3ZjQ1NTVjOTUwZmY3NzdlODllOTNkMjNlNDMzNzhlNS4uOWRjMjdmM2Y4ZmE3NjhhMmE5
MWNkYWY5NTAzN2Q3NGNmZjAxYWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9lc2NhcGlu
Z190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvZXNjYXBpbmdfdGVzdC5jYwpAQCAtNTQzLDE4
ICs1NDMsMTkgQEAgc3RhdGljIHN0cnVjdCB7CiAgICAgeyJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5eiIsICJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYbz0ifSwKIH07CiAKLVRF
U1QoQmFzZTY0LCBFc2NhcGVBbmRVbmVzY2FwZSkgewordGVtcGxhdGUgPHR5cGVuYW1lIFN0cmlu
Z1R5cGU+Cit2b2lkIFRlc3RFc2NhcGVBbmRVbmVzY2FwZSgpIHsKICAgLy8gQ2hlY2sgdGhlIHNo
b3J0IHN0cmluZ3M7IHRoaXMgdGVzdHMgdGhlIG1hdGggKGFuZCBib3VuZGFyaWVzKQogICBmb3Ig
KGNvbnN0IGF1dG8mIHRjIDogYmFzZTY0X3Rlc3RzKSB7Ci0gICAgc3RkOjpzdHJpbmcgZW5jb2Rl
ZCgidGhpcyBqdW5rIHNob3VsZCBiZSBpZ25vcmVkIik7CisgICAgU3RyaW5nVHlwZSBlbmNvZGVk
KCJ0aGlzIGp1bmsgc2hvdWxkIGJlIGlnbm9yZWQiKTsKICAgICBhYnNsOjpCYXNlNjRFc2NhcGUo
dGMucGxhaW50ZXh0LCAmZW5jb2RlZCk7CiAgICAgRVhQRUNUX0VRKGVuY29kZWQsIHRjLmN5cGhl
cnRleHQpOwogCi0gICAgc3RkOjpzdHJpbmcgZGVjb2RlZCgidGhpcyBqdW5rIHNob3VsZCBiZSBp
Z25vcmVkIik7CisgICAgU3RyaW5nVHlwZSBkZWNvZGVkKCJ0aGlzIGp1bmsgc2hvdWxkIGJlIGln
bm9yZWQiKTsKICAgICBFWFBFQ1RfVFJVRShhYnNsOjpCYXNlNjRVbmVzY2FwZShlbmNvZGVkLCAm
ZGVjb2RlZCkpOwogICAgIEVYUEVDVF9FUShkZWNvZGVkLCB0Yy5wbGFpbnRleHQpOwogCi0gICAg
c3RkOjpzdHJpbmcgd2Vic2FmZSh0Yy5jeXBoZXJ0ZXh0KTsKKyAgICBTdHJpbmdUeXBlIHdlYnNh
ZmUodGMuY3lwaGVydGV4dCk7CiAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCB3ZWJzYWZlLnNpemUo
KTsgKytjKSB7CiAgICAgICBpZiAoJysnID09IHdlYnNhZmVbY10pIHdlYnNhZmVbY10gPSAnLSc7
CiAgICAgICBpZiAoJy8nID09IHdlYnNhZmVbY10pIHdlYnNhZmVbY10gPSAnXyc7CkBAIC01NzYs
NyArNTc3LDcgQEAgVEVTVChCYXNlNjQsIEVzY2FwZUFuZFVuZXNjYXBlKSB7CiAKICAgLy8gTm93
IHRyeSB0aGUgbG9uZyBzdHJpbmdzLCB0aGlzIHRlc3RzIHRoZSBzdHJlYW1pbmcKICAgZm9yIChj
b25zdCBhdXRvJiB0YyA6IGFic2w6OnN0cmluZ3NfaW50ZXJuYWw6OmJhc2U2NF9zdHJpbmdzKCkp
IHsKLSAgICBzdGQ6OnN0cmluZyBidWZmZXI7CisgICAgU3RyaW5nVHlwZSBidWZmZXI7CiAgICAg
YWJzbDo6V2ViU2FmZUJhc2U2NEVzY2FwZSh0Yy5wbGFpbnRleHQsICZidWZmZXIpOwogICAgIEVY
UEVDVF9FUSh0Yy5jeXBoZXJ0ZXh0LCBidWZmZXIpOwogICB9CkBAIC01ODYsNyArNTg3LDcgQEAg
VEVTVChCYXNlNjQsIEVzY2FwZUFuZFVuZXNjYXBlKSB7CiAgICAgYWJzbDo6c3RyaW5nX3ZpZXcg
ZGF0YV9zZXRbXSA9IHsiYWItLyIsIGFic2w6OnN0cmluZ192aWV3KCJcMGJjZCIsIDQpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoImFiYy5c
MCIsIDUpfTsKICAgICBmb3IgKGFic2w6OnN0cmluZ192aWV3IGJhZF9kYXRhIDogZGF0YV9zZXQp
IHsKLSAgICAgIHN0ZDo6c3RyaW5nIGJ1ZjsKKyAgICAgIFN0cmluZ1R5cGUgYnVmOwogICAgICAg
RVhQRUNUX0ZBTFNFKGFic2w6OkJhc2U2NFVuZXNjYXBlKGJhZF9kYXRhLCAmYnVmKSk7CiAgICAg
ICBFWFBFQ1RfRkFMU0UoYWJzbDo6V2ViU2FmZUJhc2U2NFVuZXNjYXBlKGJhZF9kYXRhLCAmYnVm
KSk7CiAgICAgICBFWFBFQ1RfVFJVRShidWYuZW1wdHkoKSk7CkBAIC01OTQsNiArNTk1LDEwIEBA
IFRFU1QoQmFzZTY0LCBFc2NhcGVBbmRVbmVzY2FwZSkgewogICB9CiB9CiAKK1RFU1QoQmFzZTY0
LCBFc2NhcGVBbmRVbmVzY2FwZSkgeworICBUZXN0RXNjYXBlQW5kVW5lc2NhcGU8c3RkOjpzdHJp
bmc+KCk7Cit9CisKIFRFU1QoQmFzZTY0LCBESVNBQkxFRF9IdWdlRGF0YSkgewogICBjb25zdCBz
aXplX3Qga1NpemUgPSBzaXplX3QoMykgKiAxMDAwICogMTAwMCAqIDEwMDA7CiAgIHN0YXRpY19h
c3NlcnQoa1NpemUgJSAzID09IDAsICJrU2l6ZSBtdXN0IGJlIGRpdmlzaWJsZSBieSAzIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2JpdHMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
aW50ZXJuYWwvYml0cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDEwODJjY2Rk
ZmNhNzg0NTdjNzQ2ZmJlMjJlZTU3MDk5MzNiZmFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvYml0cy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTggVGhlIEFic2VpbCBB
dXRob3JzLgotLy8KLS8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOwotLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0vLwotLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKLS8vCi0vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0vLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCi0vLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0vLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KLQotI2lmbmRlZiBBQlNMX1NUUklOR1NfSU5URVJOQUxfQklUU19IXwotI2RlZmlu
ZSBBQlNMX1NUUklOR1NfSU5URVJOQUxfQklUU19IXwotCi0jaW5jbHVkZSA8Y3N0ZGludD4KLQot
I2lmIGRlZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQoX01fWDY0KQotI2luY2x1ZGUgPGludHJp
bi5oPgotI3ByYWdtYSBpbnRyaW5zaWMoX0JpdFNjYW5SZXZlcnNlNjQpCi0jZW5kaWYKLQotbmFt
ZXNwYWNlIGFic2wgewotbmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwgewotCi0vLyBSZXR1cm5z
IHRoZSBudW1iZXIgb2YgbGVhZGluZyAwIGJpdHMgaW4gYSA2NC1iaXQgdmFsdWUuCi1pbmxpbmUg
aW50IENvdW50TGVhZGluZ1plcm9zNjQodWludDY0X3QgbikgewotI2lmIGRlZmluZWQoX19HTlVD
X18pCi0gIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykgPT0gc2l6ZW9m
KG4pLCAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQotICAgICAgICAgICAgICAgICJfX2J1aWx0aW5f
Y2x6bGwgZG9lcyBub3QgdGFrZSA2NGJpdCBhcmciKTsKLSAgcmV0dXJuIG4gPT0gMCA/IDY0IDog
X19idWlsdGluX2NsemxsKG4pOwotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChf
TV9YNjQpCi0gIHVuc2lnbmVkIGxvbmcgcmVzdWx0OyAgLy8gTk9MSU5UKHJ1bnRpbWUvaW50KQot
ICBpZiAoX0JpdFNjYW5SZXZlcnNlNjQoJnJlc3VsdCwgbikpIHsKLSAgICByZXR1cm4gNjMgLSBy
ZXN1bHQ7Ci0gIH0KLSAgcmV0dXJuIDY0OwotI2Vsc2UKLSAgaW50IHplcm9lcyA9IDYwOwotICBp
ZiAobiA+PiAzMikgemVyb2VzIC09IDMyLCBuID4+PSAzMjsKLSAgaWYgKG4gPj4gMTYpIHplcm9l
cyAtPSAxNiwgbiA+Pj0gMTY7Ci0gIGlmIChuID4+IDgpIHplcm9lcyAtPSA4LCBuID4+PSA4Owot
ICBpZiAobiA+PiA0KSB6ZXJvZXMgLT0gNCwgbiA+Pj0gNDsKLSAgcmV0dXJuICJcNFwzXDJcMlwx
XDFcMVwxXDBcMFwwXDBcMFwwXDBcMCJbbl0gKyB6ZXJvZXM7Ci0jZW5kaWYKLX0KLQotfSAgLy8g
bmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSBhYnNsCi0KLSNlbmRp
ZiAgLy8gQUJTTF9TVFJJTkdTX0lOVEVSTkFMX0JJVFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L2NoYXJjb252X3BhcnNlLmNjCmluZGV4IGEwNGNjNjc2NjlhN2Y3NWY5MzZhNzY3YzVmMjIzY2Iz
NTkyZDllYmIuLjdlNGRhYmMyMjYyZWZmNzcyNmI3MmY1NDgwMzE1NGEwNDJhYWE3MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hhcmNvbnZfcGFyc2UuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZS5jYwpAQCAtOTEsNyArOTEsNyBAQCBz
dGF0aWNfYXNzZXJ0KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6ZGlnaXRzMTAgPj0ga0RlY2lt
YWxFeHBvbmVudERpZ2l0c01heCwKIAogLy8gVG8gYXZvaWQgaW5jcmVkaWJseSBsYXJnZSBpbnB1
dHMgY2F1c2luZyBpbnRlZ2VyIG92ZXJmbG93IGZvciBvdXIgZXhwb25lbnQsCiAvLyB3ZSBpbXBv
c2UgYW4gYXJiaXRyYXJ5IGJ1dCB2ZXJ5IGxhcmdlIGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc2ln
bmlmaWNhbnQKLS8vIGRpZ2l0cyB3ZSB3aWxsIGFjY2VwdC4gIFRoZSBpbXBsZW1lbnRhdGlvbiBy
ZWZ1c2VzIHRvIG1hdGNoIGEgc3RkOjpzdHJpbmcgd2l0aAorLy8gZGlnaXRzIHdlIHdpbGwgYWNj
ZXB0LiAgVGhlIGltcGxlbWVudGF0aW9uIHJlZnVzZXMgdG8gbWF0Y2ggYSBzdHJpbmcgd2l0aAog
Ly8gbW9yZSBjb25zZWN1dGl2ZSBzaWduaWZpY2FudCBtYW50aXNzYSBkaWdpdHMgdGhhbiB0aGlz
LgogY29uc3RleHByIGludCBrRGVjaW1hbERpZ2l0TGltaXQgPSA1MDAwMDAwMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZV90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9jaGFyY29udl9wYXJzZV90ZXN0LmNjCmluZGV4IDFmZjg2MDA0
OTczYTgyZmNkNzBlMzAxYzgwOGE5NDM0OWVkM2JiYjEuLmY0OGI5YWVlMWE1ZTg0ZGIzYjFjYzI5
NmFhYjM2M2YyYzMzZGIzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvY2hh
cmNvbnZfcGFyc2VfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL2NoYXJjb252
X3BhcnNlX3Rlc3QuY2MKQEAgLTI5LDE2ICsyOSwxNiBAQCB1c2luZyBhYnNsOjpzdHJpbmdzX2lu
dGVybmFsOjpQYXJzZUZsb2F0OwogCiBuYW1lc3BhY2UgewogCi0vLyBDaGVjayB0aGF0IGEgZ2l2
ZW4gc3RkOjpzdHJpbmcgaW5wdXQgaXMgcGFyc2VkIHRvIHRoZSBleHBlY3RlZCBtYW50aXNzYSBh
bmQKKy8vIENoZWNrIHRoYXQgYSBnaXZlbiBzdHJpbmcgaW5wdXQgaXMgcGFyc2VkIHRvIHRoZSBl
eHBlY3RlZCBtYW50aXNzYSBhbmQKIC8vIGV4cG9uZW50LgogLy8KLS8vIElucHV0IHN0ZDo6c3Ry
aW5nIGBzYCBtdXN0IGNvbnRhaW4gYSAnJCcgY2hhcmFjdGVyLiAgSXQgbWFya3MgdGhlIGVuZCBv
ZiB0aGUKKy8vIElucHV0IHN0cmluZyBgc2AgbXVzdCBjb250YWluIGEgJyQnIGNoYXJhY3Rlci4g
IEl0IG1hcmtzIHRoZSBlbmQgb2YgdGhlCiAvLyBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGJlIGNv
bnN1bWVkIGJ5IHRoZSBtYXRjaC4gIEl0IGlzIHN0cmlwcGVkIGZyb20gdGhlCiAvLyBpbnB1dCB0
byBQYXJzZUZsb2F0LgogLy8KLS8vIElmIGlucHV0IHN0ZDo6c3RyaW5nIGBzYCBjb250YWlucyAn
WycgYW5kICddJyBjaGFyYWN0ZXJzLCB0aGVzZSBtYXJrIHRoZSByZWdpb24KKy8vIElmIGlucHV0
IHN0cmluZyBgc2AgY29udGFpbnMgJ1snIGFuZCAnXScgY2hhcmFjdGVycywgdGhlc2UgbWFyayB0
aGUgcmVnaW9uCiAvLyBvZiBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGJlIG1hcmtlZCBhcyB0aGUg
InN1YnJhbmdlIi4gIEZvciBOYU5zLCB0aGlzIGlzCi0vLyB0aGUgbG9jYXRpb24gb2YgdGhlIGV4
dGVuZGVkIE5hTiBzdGQ6OnN0cmluZy4gIEZvciBudW1iZXJzLCB0aGlzIGlzIHRoZSBsb2NhdGlv
bgorLy8gdGhlIGxvY2F0aW9uIG9mIHRoZSBleHRlbmRlZCBOYU4gc3RyaW5nLiAgRm9yIG51bWJl
cnMsIHRoaXMgaXMgdGhlIGxvY2F0aW9uCiAvLyBvZiB0aGUgZnVsbCwgb3Zlci1sYXJnZSBtYW50
aXNzYS4KIHRlbXBsYXRlIDxpbnQgYmFzZT4KIHZvaWQgRXhwZWN0UGFyc2VkRmxvYXQoc3RkOjpz
dHJpbmcgcywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZvcm1hdF9mbGFncywKQEAgLTkyLDEwICs5Miwx
MCBAQCB2b2lkIEV4cGVjdFBhcnNlZEZsb2F0KHN0ZDo6c3RyaW5nIHMsIGFic2w6OmNoYXJzX2Zv
cm1hdCBmb3JtYXRfZmxhZ3MsCiAgIEVYUEVDVF9FUShjaGFyYWN0ZXJzX21hdGNoZWQsIGV4cGVj
dGVkX2NoYXJhY3RlcnNfbWF0Y2hlZCk7CiB9CiAKLS8vIENoZWNrIHRoYXQgYSBnaXZlbiBzdGQ6
OnN0cmluZyBpbnB1dCBpcyBwYXJzZWQgdG8gdGhlIGV4cGVjdGVkIG1hbnRpc3NhIGFuZAorLy8g
Q2hlY2sgdGhhdCBhIGdpdmVuIHN0cmluZyBpbnB1dCBpcyBwYXJzZWQgdG8gdGhlIGV4cGVjdGVk
IG1hbnRpc3NhIGFuZAogLy8gZXhwb25lbnQuCiAvLwotLy8gSW5wdXQgc3RkOjpzdHJpbmcgYHNg
IG11c3QgY29udGFpbiBhICckJyBjaGFyYWN0ZXIuICBJdCBtYXJrcyB0aGUgZW5kIG9mIHRoZQor
Ly8gSW5wdXQgc3RyaW5nIGBzYCBtdXN0IGNvbnRhaW4gYSAnJCcgY2hhcmFjdGVyLiAgSXQgbWFy
a3MgdGhlIGVuZCBvZiB0aGUKIC8vIGNoYXJhY3RlcnMgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRo
ZSBtYXRjaC4KIHRlbXBsYXRlIDxpbnQgYmFzZT4KIHZvaWQgRXhwZWN0TnVtYmVyKHN0ZDo6c3Ry
aW5nIHMsIGFic2w6OmNoYXJzX2Zvcm1hdCBmb3JtYXRfZmxhZ3MsCkBAIC0xMDYsNyArMTA2LDcg
QEAgdm9pZCBFeHBlY3ROdW1iZXIoc3RkOjpzdHJpbmcgcywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZv
cm1hdF9mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbGl0ZXJhbF9l
eHBvbmVudCk7CiB9CiAKLS8vIENoZWNrIHRoYXQgYSBnaXZlbiBzdGQ6OnN0cmluZyBpbnB1dCBp
cyBwYXJzZWQgdG8gdGhlIGdpdmVuIHNwZWNpYWwgdmFsdWUuCisvLyBDaGVjayB0aGF0IGEgZ2l2
ZW4gc3RyaW5nIGlucHV0IGlzIHBhcnNlZCB0byB0aGUgZ2l2ZW4gc3BlY2lhbCB2YWx1ZS4KIC8v
CiAvLyBUaGlzIHRlc3RzIGFnYWluc3QgYm90aCBudW1iZXIgYmFzZXMsIHNpbmNlIGluZmluaXRp
ZXMgYW5kIE5hTnMgaGF2ZQogLy8gaWRlbnRpY2FsIHJlcHJlc2VudGF0aW9ucyBpbiBib3RoIG1v
ZGVzLgpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgRXhwZWN0U3BlY2lhbChjb25zdCBzdGQ6OnN0
cmluZyYgcywgYWJzbDo6Y2hhcnNfZm9ybWF0IGZvcm1hdF9mbGFncywKICAgRXhwZWN0UGFyc2Vk
RmxvYXQ8MTY+KHMsIGZvcm1hdF9mbGFncywgdHlwZSwgMCwgMCk7CiB9CiAKLS8vIENoZWNrIHRo
YXQgYSBnaXZlbiBpbnB1dCBzdGQ6OnN0cmluZyBpcyBub3QgbWF0Y2hlZCBieSBGbG9hdC4KKy8v
IENoZWNrIHRoYXQgYSBnaXZlbiBpbnB1dCBzdHJpbmcgaXMgbm90IG1hdGNoZWQgYnkgRmxvYXQu
CiB0ZW1wbGF0ZSA8aW50IGJhc2U+CiB2b2lkIEV4cGVjdEZhaWxlZFBhcnNlKGFic2w6OnN0cmlu
Z192aWV3IHMsIGFic2w6OmNoYXJzX2Zvcm1hdCBmb3JtYXRfZmxhZ3MpIHsKICAgUGFyc2VkRmxv
YXQgcGFyc2VkID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmgKaW5kZXggYTZmMWM2OTEzOGUzODcy
ZjEyN2U3MGFlYjI2ZTE1OWE4MjkyNWEwYy4uN2RlMzgzYjE5ZWMzZmMwZjZjOTMzMWE0MWQ5NDE3
M2M1NTFhZWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9tZW11dGlsLmgKQEAgLTE0LDcgKzE0LDcgQEAK
IC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogLy8KIAotLy8gVGhlc2Ugcm91dGlu
ZXMgcHJvdmlkZSBtZW0gdmVyc2lvbnMgb2Ygc3RhbmRhcmQgQyBzdGQ6OnN0cmluZyByb3V0aW5l
cywKKy8vIFRoZXNlIHJvdXRpbmVzIHByb3ZpZGUgbWVtIHZlcnNpb25zIG9mIHN0YW5kYXJkIEMg
c3RyaW5nIHJvdXRpbmVzLAogLy8gc3VjaCBhcyBzdHJwYnJrLiAgVGhleSBmdW5jdGlvbiBleGFj
dGx5IHRoZSBzYW1lIGFzIHRoZSBzdHIgdmVyc2lvbnMsCiAvLyBzbyBpZiB5b3Ugd29uZGVyIHdo
YXQgdGhleSBhcmUsIHJlcGxhY2UgdGhlIHdvcmQgIm1lbSIgYnkKIC8vICJzdHIiIGFuZCBjaGVj
ayBvdXQgdGhlIG1hbiBwYWdlLiAgSSBjb3VsZCByZXR1cm4gdm9pZCosIGFzIHRoZQpAQCAtMjIs
MTQgKzIyLDE0IEBACiAvLyBzaW5jZSB0aGlzIGlzIGJ5IGZhciB0aGUgbW9zdCBjb21tb24gd2F5
IHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLgogLy8KIC8vIFRoZSBkaWZmZXJlbmNlIGJldHdl
ZW4gdGhlIG1lbSBhbmQgc3RyIHZlcnNpb25zIGlzIHRoZSBtZW0gdmVyc2lvbgotLy8gdGFrZXMg
YSBwb2ludGVyIGFuZCBhIGxlbmd0aCwgcmF0aGVyIHRoYW4gYSAnXDAnLXRlcm1pbmF0ZWQgc3Rk
OjpzdHJpbmcuCisvLyB0YWtlcyBhIHBvaW50ZXIgYW5kIGEgbGVuZ3RoLCByYXRoZXIgdGhhbiBh
ICdcMCctdGVybWluYXRlZCBzdHJpbmcuCiAvLyBUaGUgbWVtY2FzZSogcm91dGluZXMgZGVmaW5l
ZCBoZXJlIGFzc3VtZSB0aGUgbG9jYWxlIGlzICJDIgogLy8gKHRoZXkgdXNlIGFic2w6OmFzY2lp
X3RvbG93ZXIgaW5zdGVhZCBvZiB0b2xvd2VyKS4KIC8vCiAvLyBUaGVzZSByb3V0aW5lcyBhcmUg
YmFzZWQgb24gdGhlIEJTRCBsaWJyYXJ5LgogLy8KLS8vIEhlcmUncyBhIGxpc3Qgb2Ygcm91dGlu
ZXMgZnJvbSBzdGQ6OnN0cmluZy5oLCBhbmQgdGhlaXIgbWVtIGFuYWxvZ3Vlcy4KLS8vIEZ1bmN0
aW9ucyBpbiBsb3dlcmNhc2UgYXJlIGRlZmluZWQgaW4gc3RkOjpzdHJpbmcuaDsgdGhvc2UgaW4g
VVBQRVJDQVNFCisvLyBIZXJlJ3MgYSBsaXN0IG9mIHJvdXRpbmVzIGZyb20gc3RyaW5nLmgsIGFu
ZCB0aGVpciBtZW0gYW5hbG9ndWVzLgorLy8gRnVuY3Rpb25zIGluIGxvd2VyY2FzZSBhcmUgZGVm
aW5lZCBpbiBzdHJpbmcuaDsgdGhvc2UgaW4gVVBQRVJDQVNFCiAvLyBhcmUgZGVmaW5lZCBoZXJl
OgogLy8KIC8vIHN0cmxlbiAgICAgICAgICAgICAgICAgIC0tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL2ludGVybmFsL29zdHJpbmdzdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
b3N0cmluZ3N0cmVhbS5oCmluZGV4IDZlMTMyNWI5MTQwZjhhMGMzZWVkYjZmNWExM2UyMWQ4ZDZl
MGFhZjYuLmU4MWE4OWFmZmVhMjViZTI2YmJjZDMxMjBjYzcwOTQ1MDJhMmQ4MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvb3N0cmluZ3N0cmVhbS5oCkBAIC0yNSwxOCArMjUsMTggQEAKIG5hbWVz
cGFjZSBhYnNsIHsKIG5hbWVzcGFjZSBzdHJpbmdzX2ludGVybmFsIHsKIAotLy8gVGhlIHNhbWUg
YXMgc3RkOjpvc3RyaW5nc3RyZWFtIGJ1dCBhcHBlbmRzIHRvIGEgdXNlci1zcGVjaWZpZWQgc3Rk
OjpzdHJpbmcsCisvLyBUaGUgc2FtZSBhcyBzdGQ6Om9zdHJpbmdzdHJlYW0gYnV0IGFwcGVuZHMg
dG8gYSB1c2VyLXNwZWNpZmllZCBzdHJpbmcsCiAvLyBhbmQgaXMgZmFzdGVyLiBJdCBpcyB+NzAl
IGZhc3RlciB0byBjcmVhdGUsIH41MCUgZmFzdGVyIHRvIHdyaXRlIHRvLCBhbmQKLS8vIGNvbXBs
ZXRlbHkgZnJlZSB0byBleHRyYWN0IHRoZSByZXN1bHQgc3RkOjpzdHJpbmcuCisvLyBjb21wbGV0
ZWx5IGZyZWUgdG8gZXh0cmFjdCB0aGUgcmVzdWx0IHN0cmluZy4KIC8vCi0vLyAgIHN0ZDo6c3Ry
aW5nIHM7CisvLyAgIHN0cmluZyBzOwogLy8gICBPU3RyaW5nU3RyZWFtIHN0cm0oJnMpOwogLy8g
ICBzdHJtIDw8IDQyIDw8ICcgJyA8PCAzLjE0OyAgLy8gYXBwZW5kcyB0byBgc2AKIC8vCiAvLyBU
aGUgc3RyZWFtIG9iamVjdCBkb2Vzbid0IGhhdmUgdG8gYmUgbmFtZWQuIFN0YXJ0aW5nIGZyb20g
QysrMTEgb3BlcmF0b3I8PAogLy8gd29ya3Mgd2l0aCBydmFsdWVzIG9mIHN0ZDo6b3N0cmVhbS4K
IC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHM7CisvLyAgIHN0cmluZyBzOwogLy8gICBPU3RyaW5nU3Ry
ZWFtKCZzKSA8PCA0MiA8PCAnICcgPDwgMy4xNDsgIC8vIGFwcGVuZHMgdG8gYHNgCiAvLwogLy8g
T1N0cmluZ1N0cmVhbSBpcyBmYXN0ZXIgdG8gY3JlYXRlIHRoYW4gc3RkOjpvc3RyaW5nc3RyZWFt
IGJ1dCBpdCdzIHN0aWxsCkBAIC00NSwxNCArNDUsMTQgQEAgbmFtZXNwYWNlIHN0cmluZ3NfaW50
ZXJuYWwgewogLy8KIC8vIENyZWF0ZXMgdW5uZWNlc3NhcnkgaW5zdGFuY2VzIG9mIE9TdHJpbmdT
dHJlYW06IHNsb3cuCiAvLwotLy8gICBzdGQ6OnN0cmluZyBzOworLy8gICBzdHJpbmcgczsKIC8v
ICAgT1N0cmluZ1N0cmVhbSgmcykgPDwgNDI7CiAvLyAgIE9TdHJpbmdTdHJlYW0oJnMpIDw8ICcg
JzsKIC8vICAgT1N0cmluZ1N0cmVhbSgmcykgPDwgMy4xNDsKIC8vCiAvLyBDcmVhdGVzIGEgc2lu
Z2xlIGluc3RhbmNlIG9mIE9TdHJpbmdTdHJlYW0gYW5kIHJldXNlcyBpdDogZmFzdC4KIC8vCi0v
LyAgIHN0ZDo6c3RyaW5nIHM7CisvLyAgIHN0cmluZyBzOwogLy8gICBPU3RyaW5nU3RyZWFtIHN0
cm0oJnMpOwogLy8gICBzdHJtIDw8IDQyOwogLy8gICBzdHJtIDw8ICcgJzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvcmVzaXplX3VuaW5pdGlhbGl6ZWQuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvcmVzaXplX3VuaW5pdGlhbGl6ZWQuaAppbmRleCAwMTU3Y2EwMjQ1ZjM1
MGJlY2U2ZGNiZTE5ODdiZGI4MGI0YTU0NTUxLi5hOTRlMDU0N2I1MGYxNTQyMzQzNzRlOGU2MDgw
NDJhNmM3MDMzYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3Jlc2l6ZV91
bmluaXRpYWxpemVkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9yZXNpemVfdW5pbml0
aWFsaXplZC5oCkBAIC00NCw4ICs0NCw4IEBAIHZvaWQgUmVzaXplVW5pbml0KHN0cmluZ190eXBl
KiBzLCBzaXplX3QgbmV3X3NpemUsIHN0ZDo6ZmFsc2VfdHlwZSkgewogICBzLT5yZXNpemUobmV3
X3NpemUpOwogfQogCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHN0ZDo6c3RyaW5nIGltcGxlbWVu
dGF0aW9uIHN1cHBvcnRzIGEgcmVzaXplIHdoZXJlCi0vLyB0aGUgbmV3IGNoYXJhY3RlcnMgYWRk
ZWQgdG8gdGhlIHN0ZDo6c3RyaW5nIGFyZSBsZWZ0IHVudG91Y2hlZC4KKy8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgc3RyaW5nIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGEgcmVzaXplIHdoZXJlCisv
LyB0aGUgbmV3IGNoYXJhY3RlcnMgYWRkZWQgdG8gdGhlIHN0cmluZyBhcmUgbGVmdCB1bnRvdWNo
ZWQuCiAvLwogLy8gKEEgYmV0dGVyIG5hbWUgbWlnaHQgYmUgIlNUTFN0cmluZ1N1cHBvcnRzVW5p
bml0aWFsaXplZFJlc2l6ZSIsIGFsbHVkaW5nIHRvCiAvLyB0aGUgcHJldmlvdXMgZnVuY3Rpb24u
KQpAQCAtNTcsNyArNTcsNyBAQCBpbmxpbmUgY29uc3RleHByIGJvb2wgU1RMU3RyaW5nU3VwcG9y
dHNOb250cmFzaGluZ1Jlc2l6ZShzdHJpbmdfdHlwZSopIHsKIC8vIExpa2Ugc3RyLT5yZXNpemUo
bmV3X3NpemUpLCBleGNlcHQgYW55IG5ldyBjaGFyYWN0ZXJzIGFkZGVkIHRvICIqc3RyIiBhcyBh
CiAvLyByZXN1bHQgb2YgcmVzaXppbmcgbWF5IGJlIGxlZnQgdW5pbml0aWFsaXplZCwgcmF0aGVy
IHRoYW4gYmVpbmcgZmlsbGVkIHdpdGgKIC8vICcwJyBieXRlcy4gVHlwaWNhbGx5IHVzZWQgd2hl
biBjb2RlIGlzIHRoZW4gZ29pbmcgdG8gb3ZlcndyaXRlIHRoZSBiYWNraW5nCi0vLyBzdG9yZSBv
ZiB0aGUgc3RkOjpzdHJpbmcgd2l0aCBrbm93biBkYXRhLiBVc2VzIGEgR29vZ2xlIGV4dGVuc2lv
biB0byBzdGQ6OnN0cmluZy4KKy8vIHN0b3JlIG9mIHRoZSBzdHJpbmcgd2l0aCBrbm93biBkYXRh
LiBVc2VzIGEgR29vZ2xlIGV4dGVuc2lvbiB0byA6OnN0cmluZy4KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBzdHJpbmdfdHlwZSwgdHlwZW5hbWUgPSB2b2lkPgogaW5saW5lIHZvaWQgU1RMU3RyaW5nUmVz
aXplVW5pbml0aWFsaXplZChzdHJpbmdfdHlwZSogcywgc2l6ZV90IG5ld19zaXplKSB7CiAgIFJl
c2l6ZVVuaW5pdChzLCBuZXdfc2l6ZSwgSGFzUmVzaXplVW5pbml0aWFsaXplZDxzdHJpbmdfdHlw
ZT4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYXJn
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5jYwppbmRleCBlYWZi
MDY4ZmUyODY3NDQ2MjcwZjIyOGE2NDQ5ZTBkYjVhNGNjYWI1Li5iNDBiZThmZjM4MjRlOWM2NmI0
ZjdjMWVjYzA4NTZlNDE3OGZkZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L3N0cl9mb3JtYXQvYXJnLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1h
dC9hcmcuY2MKQEAgLTExMiw3ICsxMTIsNyBAQCBjbGFzcyBDb252ZXJ0ZWRJbnRJbmZvIHsKIC8v
IE5vdGU6ICdvJyBjb252ZXJzaW9ucyBkbyBub3QgaGF2ZSBhIGJhc2UgaW5kaWNhdG9yLCBpdCdz
IGp1c3QgdGhhdAogLy8gdGhlICcjJyBmbGFnIGlzIHNwZWNpZmllZCB0byBtb2RpZnkgdGhlIHBy
ZWNpc2lvbiBmb3IgJ28nIGNvbnZlcnNpb25zLgogc3RyaW5nX3ZpZXcgQmFzZUluZGljYXRvcihj
b25zdCBDb252ZXJ0ZWRJbnRJbmZvICZpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDb252ZXJzaW9uU3BlYyAmY29udikgeworICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDb252ZXJzaW9uU3BlYyBjb252KSB7CiAgIGJvb2wgYWx0ID0gY29udi5mbGFncygpLmFs
dDsKICAgaW50IHJhZGl4ID0gY29udi5jb252KCkucmFkaXgoKTsKICAgaWYgKGNvbnYuY29udigp
LmlkKCkgPT0gQ29udmVyc2lvbkNoYXI6OnApCkBAIC0xMjcsNyArMTI3LDcgQEAgc3RyaW5nX3Zp
ZXcgQmFzZUluZGljYXRvcihjb25zdCBDb252ZXJ0ZWRJbnRJbmZvICZpbmZvLAogICByZXR1cm4g
e307CiB9CiAKLXN0cmluZ192aWV3IFNpZ25Db2x1bW4oYm9vbCBuZWcsIGNvbnN0IENvbnZlcnNp
b25TcGVjICZjb252KSB7CitzdHJpbmdfdmlldyBTaWduQ29sdW1uKGJvb2wgbmVnLCBjb25zdCBD
b252ZXJzaW9uU3BlYyBjb252KSB7CiAgIGlmIChjb252LmNvbnYoKS5pc19zaWduZWQoKSkgewog
ICAgIGlmIChuZWcpIHJldHVybiAiLSI7CiAgICAgaWYgKGNvbnYuZmxhZ3MoKS5zaG93X3Bvcykg
cmV0dXJuICIrIjsKQEAgLTEzNiw3ICsxMzYsNyBAQCBzdHJpbmdfdmlldyBTaWduQ29sdW1uKGJv
b2wgbmVnLCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udikgewogICByZXR1cm4ge307CiB9CiAK
LWJvb2wgQ29udmVydENoYXJJbXBsKHVuc2lnbmVkIGNoYXIgdiwgY29uc3QgQ29udmVyc2lvblNw
ZWMgJmNvbnYsCitib29sIENvbnZlcnRDaGFySW1wbCh1bnNpZ25lZCBjaGFyIHYsIGNvbnN0IENv
bnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAq
c2luaykgewogICBzaXplX3QgZmlsbCA9IDA7CiAgIGlmIChjb252LndpZHRoKCkgPj0gMCkgZmls
bCA9IGNvbnYud2lkdGgoKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBib29sIENvbnZlcnRDaGFySW1w
bCh1bnNpZ25lZCBjaGFyIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAogfQogCiBib29s
IENvbnZlcnRJbnRJbXBsSW5uZXIoY29uc3QgQ29udmVydGVkSW50SW5mbyAmaW5mbywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwgRm9ybWF0U2lu
a0ltcGwgKnNpbmspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9u
U3BlYyBjb252LCBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICAvLyBQcmludCBhcyBhIHNlcXVl
bmNlIG9mIFN1YnN0cmluZ3M6CiAgIC8vICAgW2xlZnRfc3BhY2VzXVtzaWduXVtiYXNlX2luZGlj
YXRvcl1bemVyb2VzXVtmb3JtYXR0ZWRdW3JpZ2h0X3NwYWNlc10KICAgc2l6ZV90IGZpbGwgPSAw
OwpAQCAtMjAyLDggKzIwMiw3IEBAIGJvb2wgQ29udmVydEludEltcGxJbm5lcihjb25zdCBDb252
ZXJ0ZWRJbnRJbmZvICZpbmZvLAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWJvb2wgQ29u
dmVydEludEltcGxJbm5lcihUIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAotICAgICAg
ICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7Citib29sIENvbnZlcnRJ
bnRJbXBsSW5uZXIoVCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LCBGb3JtYXRTaW5rSW1w
bCAqc2luaykgewogICBDb252ZXJ0ZWRJbnRJbmZvIGluZm8odiwgY29udi5jb252KCkpOwogICBp
ZiAoY29udi5mbGFncygpLmJhc2ljICYmIGNvbnYuY29udigpLmlkKCkgIT0gQ29udmVyc2lvbkNo
YXI6OnApIHsKICAgICBpZiAoaW5mby5pc19uZWcoKSkgc2luay0+QXBwZW5kKDEsICctJyk7CkBA
IC0yMTgsNyArMjE3LDcgQEAgYm9vbCBDb252ZXJ0SW50SW1wbElubmVyKFQgdiwgY29uc3QgQ29u
dmVyc2lvblNwZWMgJmNvbnYsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotYm9vbCBDb252
ZXJ0SW50QXJnKFQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsIEZvcm1hdFNpbmtJbXBs
ICpzaW5rKSB7Citib29sIENvbnZlcnRJbnRBcmcoVCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBj
b252LCBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICBpZiAoY29udi5jb252KCkuaXNfZmxvYXQo
KSkgewogICAgIHJldHVybiBGb3JtYXRDb252ZXJ0SW1wbChzdGF0aWNfY2FzdDxkb3VibGU+KHYp
LCBjb252LCBzaW5rKS52YWx1ZTsKICAgfQpAQCAtMjM0LDExICsyMzMsMTEgQEAgYm9vbCBDb252
ZXJ0SW50QXJnKFQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsIEZvcm1hdFNpbmtJbXBs
ICpzaW5rKSB7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotYm9vbCBDb252ZXJ0RmxvYXRB
cmcoVCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwgRm9ybWF0U2lua0ltcGwgKnNpbmsp
IHsKK2Jvb2wgQ29udmVydEZsb2F0QXJnKFQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwg
Rm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIGNvbnYuY29udigpLmlzX2Zsb2F0KCkg
JiYgQ29udmVydEZsb2F0SW1wbCh2LCBjb252LCBzaW5rKTsKIH0KIAotaW5saW5lIGJvb2wgQ29u
dmVydFN0cmluZ0FyZyhzdHJpbmdfdmlldyB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwK
K2lubGluZSBib29sIENvbnZlcnRTdHJpbmdBcmcoc3RyaW5nX3ZpZXcgdiwgY29uc3QgQ29udmVy
c2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0lt
cGwgKnNpbmspIHsKICAgaWYgKGNvbnYuY29udigpLmlkKCkgIT0gQ29udmVyc2lvbkNoYXI6OnMp
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjU0LDE5ICsyNTMsMTkgQEAgaW5saW5lIGJvb2wgQ29u
dmVydFN0cmluZ0FyZyhzdHJpbmdfdmlldyB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwK
IAogLy8gPT09PT09PT09PT09PT09PT09PT0gU3RyaW5ncyA9PT09PT09PT09PT09PT09PT09PQog
Q29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChjb25zdCBzdGQ6OnN0cmlu
ZyAmdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29u
dmVyc2lvblNwZWMgJmNvbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVy
dFN0cmluZ0FyZyh2LCBjb252LCBzaW5rKX07CiB9CiAKIENvbnZlcnRSZXN1bHQ8Q29udjo6cz4g
Rm9ybWF0Q29udmVydEltcGwoc3RyaW5nX3ZpZXcgdiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBs
ICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydFN0cmluZ0FyZyh2LCBjb252LCBzaW5rKX07CiB9
CiAKIENvbnZlcnRSZXN1bHQ8Q29udjo6cyB8IENvbnY6OnA+IEZvcm1hdENvbnZlcnRJbXBsKGNv
bnN0IGNoYXIgKnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3Jt
YXRTaW5rSW1wbCAqc2luaykgewogICBpZiAoY29udi5jb252KCkuaWQoKSA9PSBDb252ZXJzaW9u
Q2hhcjo6cCkKICAgICByZXR1cm4ge0Zvcm1hdENvbnZlcnRJbXBsKFZvaWRQdHIodiksIGNvbnYs
IHNpbmspLnZhbHVlfTsKQEAgLTI4Myw3ICsyODIsNyBAQCBDb252ZXJ0UmVzdWx0PENvbnY6OnMg
fCBDb252OjpwPiBGb3JtYXRDb252ZXJ0SW1wbChjb25zdCBjaGFyICp2LAogfQogCiAvLyA9PT09
PT09PT09PT09PT09PT09PSBSYXcgcG9pbnRlcnMgPT09PT09PT09PT09PT09PT09PT0KLUNvbnZl
cnRSZXN1bHQ8Q29udjo6cD4gRm9ybWF0Q29udmVydEltcGwoVm9pZFB0ciB2LCBjb25zdCBDb252
ZXJzaW9uU3BlYyAmY29udiwKK0NvbnZlcnRSZXN1bHQ8Q29udjo6cD4gRm9ybWF0Q29udmVydElt
cGwoVm9pZFB0ciB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICBpZiAo
Y29udi5jb252KCkuaWQoKSAhPSBDb252ZXJzaW9uQ2hhcjo6cCkKICAgICByZXR1cm4ge2ZhbHNl
fTsKQEAgLTI5NSwxMDQgKzI5NCw4MyBAQCBDb252ZXJ0UmVzdWx0PENvbnY6OnA+IEZvcm1hdENv
bnZlcnRJbXBsKFZvaWRQdHIgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCiB9CiAKIC8v
ID09PT09PT09PT09PT09PT09PT09IEZsb2F0cyA9PT09PT09PT09PT09PT09PT09PQotRmxvYXRp
bmdDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGZsb2F0IHYsIGNvbnN0IENvbnZlcnNp
b25TcGVjICZjb252LAorRmxvYXRpbmdDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGZs
b2F0IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252
ZXJ0RmxvYXRBcmcodiwgY29udiwgc2luayl9OwogfQotRmxvYXRpbmdDb252ZXJ0UmVzdWx0IEZv
cm1hdENvbnZlcnRJbXBsKGRvdWJsZSB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKK0Zs
b2F0aW5nQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChkb3VibGUgdiwgY29uc3QgQ29u
dmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICByZXR1cm4ge0NvbnZlcnRGbG9hdEFyZyh2LCBj
b252LCBzaW5rKX07CiB9CiBGbG9hdGluZ0NvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwo
bG9uZyBkb3VibGUgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7
Q29udmVydEZsb2F0QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIAogLy8gPT09PT09PT09PT09PT09
PT09PT0gQ2hhcnMgPT09PT09PT09PT09PT09PT09PT0KLUludGVncmFsQ29udmVydFJlc3VsdCBG
b3JtYXRDb252ZXJ0SW1wbChjaGFyIHYsIGNvbnN0IENvbnZlcnNpb25TcGVjICZjb252LAorSW50
ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGNoYXIgdiwgY29uc3QgQ29udmVy
c2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
b3JtYXRTaW5rSW1wbCAqc2luaykgewogICByZXR1cm4ge0NvbnZlcnRJbnRBcmcodiwgY29udiwg
c2luayl9OwogfQogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHNpZ25l
ZCBjaGFyIHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q29udmVyc2lvblNwZWMgJmNvbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCAqc2luaykgewogICByZXR1cm4ge0NvbnZl
cnRJbnRBcmcodiwgY29udiwgc2luayl9OwogfQogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1h
dENvbnZlcnRJbXBsKHVuc2lnbmVkIGNoYXIgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5r
KSB7CiAgIHJldHVybiB7Q29udmVydEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiAKIC8vID09
PT09PT09PT09PT09PT09PT09IEludHMgPT09PT09PT09PT09PT09PT09PT0KIEludGVncmFsQ29u
dmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChzaG9ydCB2LCAgLy8gTk9MSU5UCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMgJmNv
bnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVy
c2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
b3JtYXRTaW5rSW1wbCAqc2luaykgewogICByZXR1cm4ge0NvbnZlcnRJbnRBcmcodiwgY29udiwg
c2luayl9OwogfQogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2ln
bmVkIHNob3J0IHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAg
IHJldHVybiB7Q29udmVydEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9Ci1JbnRlZ3JhbENvbnZl
cnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoaW50IHYsIGNvbnN0IENvbnZlcnNpb25TcGVjICZj
b252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGludCB2LCBjb25z
dCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydEludEFyZyh2
LCBjb252LCBzaW5rKX07CiB9Ci1JbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydElt
cGwodW5zaWduZWQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMgJmNvbnYsCitJbnRlZ3JhbENvbnZl
cnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwodW5zaWduZWQgdiwgY29uc3QgQ29udmVyc2lvblNw
ZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRT
aW5rSW1wbCAqc2luaykgewogICByZXR1cm4ge0NvbnZlcnRJbnRBcmcodiwgY29udiwgc2luayl9
OwogfQogSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGxvbmcgdiwgIC8v
IE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
bnZlcnNpb25TcGVjICZjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0
SW50QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIEludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRD
b252ZXJ0SW1wbCh1bnNpZ25lZCBsb25nIHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBj
b252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJ
bXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9
CiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwobG9uZyBsb25nIHYsICAv
LyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
b252ZXJzaW9uU3BlYyAmY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVy
dEludEFyZyh2LCBjb252LCBzaW5rKX07CiB9CiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0
Q29udmVydEltcGwodW5zaWduZWQgbG9uZyBsb25nIHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyAmY29udiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9u
U3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1h
dFNpbmtJbXBsICpzaW5rKSB7CiAgIHJldHVybiB7Q29udmVydEludEFyZyh2LCBjb252LCBzaW5r
KX07CiB9CiBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoYWJzbDo6dWlu
dDEyOCB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
bnZlcnNpb25TcGVjICZjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwgKnNpbmspIHsKICAgcmV0dXJuIHtDb252ZXJ0
SW50QXJnKHYsIGNvbnYsIHNpbmspfTsKIH0KIAotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0lt
cGw6OlR5cGVkVlRhYmxlPHN0cl9mb3JtYXRfaW50ZXJuYWw6OlZvaWRQdHI+OwotCi10ZW1wbGF0
ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8Ym9vbD47Ci10ZW1wbGF0ZSBzdHJ1
Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8Y2hhcj47Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9y
bWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c2lnbmVkIGNoYXI+OwotdGVtcGxhdGUgc3RydWN0IEZv
cm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVuc2lnbmVkIGNoYXI+OwotdGVtcGxhdGUgc3RydWN0
IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHNob3J0PjsgICAgICAgICAgIC8vIE5PTElOVAot
dGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVuc2lnbmVkIHNob3J0
PjsgIC8vIE5PTElOVAotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxl
PGludD47Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8dW5zaWdu
ZWQ+OwotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGxvbmc+OyAg
ICAgICAgICAgICAgICAvLyBOT0xJTlQKLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpU
eXBlZFZUYWJsZTx1bnNpZ25lZCBsb25nPjsgICAgICAgLy8gTk9MSU5UCi10ZW1wbGF0ZSBzdHJ1
Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8bG9uZyBsb25nPjsgICAgICAgICAgIC8vIE5P
TElOVAotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVuc2lnbmVk
IGxvbmcgbG9uZz47ICAvLyBOT0xJTlQKLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpU
eXBlZFZUYWJsZTxhYnNsOjp1aW50MTI4PjsKLQotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0lt
cGw6OlR5cGVkVlRhYmxlPGZsb2F0PjsKLXRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpU
eXBlZFZUYWJsZTxkb3VibGU+OwotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVk
VlRhYmxlPGxvbmcgZG91YmxlPjsKLQotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5
cGVkVlRhYmxlPGNvbnN0IGNoYXIgKj47Ci10ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6
VHlwZWRWVGFibGU8c3RkOjpzdHJpbmc+OwotdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6
OlR5cGVkVlRhYmxlPHN0cmluZ192aWV3PjsKK0FCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENI
X09WRVJMT0FEU19FWFBBTkRfKCk7CisKIAogfSAgLy8gbmFtZXNwYWNlIHN0cl9mb3JtYXRfaW50
ZXJuYWwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2Fy
Zy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L2FyZy5oCmluZGV4IGE5NTYy
MTg4ZWE5MTk3M2E2Mjk4MjhlMGRlYzgyYmQ0NzBjOWMwN2EuLjMzNzZkNDhhZmRhMjBmZjIzM2Ex
ZDFiN2Y0MWIzMDA3OGFlMWNjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
c3RyX2Zvcm1hdC9hcmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQv
YXJnLmgKQEAgLTMzLDcgKzMzLDcgQEAgc3RydWN0IEhhc1VzZXJEZWZpbmVkQ29udmVydCA6IHN0
ZDo6ZmFsc2VfdHlwZSB7fTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IEhhc1VzZXJE
ZWZpbmVkQ29udmVydDwKICAgICBULCB2b2lkX3Q8ZGVjbHR5cGUoQWJzbEZvcm1hdENvbnZlcnQo
Ci0gICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCBUJj4oKSwgc3RkOjpkZWNsdmFsPGNvbnN0
IENvbnZlcnNpb25TcGVjJj4oKSwKKyAgICAgICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IFQmPigp
LCBzdGQ6OmRlY2x2YWw8Q29udmVyc2lvblNwZWM+KCksCiAgICAgICAgICAgIHN0ZDo6ZGVjbHZh
bDxGb3JtYXRTaW5rKj4oKSkpPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogY2xhc3MgU3RyZWFtZWRXcmFwcGVyOwpAQCAtNTAsMjUgKzUwLDIzIEBAIHN0cnVj
dCBWb2lkUHRyIHsKICAgICAgIDogdmFsdWUocHRyID8gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHB0cikgOiAwKSB7fQogICB1aW50cHRyX3QgdmFsdWU7CiB9OwotQ29udmVydFJlc3VsdDxD
b252OjpwPiBGb3JtYXRDb252ZXJ0SW1wbChWb2lkUHRyIHYsIGNvbnN0IENvbnZlcnNpb25TcGVj
JiBjb252LAorQ29udmVydFJlc3VsdDxDb252OjpwPiBGb3JtYXRDb252ZXJ0SW1wbChWb2lkUHRy
IHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKIAogLy8gU3RyaW5ncy4KLUNvbnZlcnRS
ZXN1bHQ8Q29udjo6cz4gRm9ybWF0Q29udmVydEltcGwoY29uc3Qgc3RkOjpzdHJpbmcmIHYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25T
cGVjJiBjb252LAorQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChjb25z
dCBzdGQ6OnN0cmluZyYgdiwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwotQ29udmVydFJl
c3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChzdHJpbmdfdmlldyB2LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29u
diwKK0NvbnZlcnRSZXN1bHQ8Q29udjo6cz4gRm9ybWF0Q29udmVydEltcGwoc3RyaW5nX3ZpZXcg
diwgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogQ29udmVydFJlc3VsdDxDb252OjpzIHwg
Q29udjo6cD4gRm9ybWF0Q29udmVydEltcGwoY29uc3QgY2hhciogdiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVj
JiBjb252LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKIHRlbXBsYXRlIDxjbGFz
cyBBYnNsQ29yZCwKICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKICAgICAgICAg
ICAgICAgc3RkOjppc19zYW1lPEFic2xDb3JkLCA6OkNvcmQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVs
bHB0ciwKICAgICAgICAgICBjbGFzcyBBYnNsQ29yZFJlYWRlciA9IDo6Q29yZFJlYWRlcj4KIENv
bnZlcnRSZXN1bHQ8Q29udjo6cz4gRm9ybWF0Q29udmVydEltcGwoY29uc3QgQWJzbENvcmQmIHZh
bHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252
ZXJzaW9uU3BlYyYgY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspIHsKICAgaWYgKGNvbnYuY29udigpLmlkKCkg
IT0gQ29udmVyc2lvbkNoYXI6OnMpIHJldHVybiB7ZmFsc2V9OwogCkBAIC0xMDQsNTEgKzEwMiw0
OCBAQCB1c2luZyBJbnRlZ3JhbENvbnZlcnRSZXN1bHQgPQogdXNpbmcgRmxvYXRpbmdDb252ZXJ0
UmVzdWx0ID0gQ29udmVydFJlc3VsdDxDb252OjpmbG9hdGluZz47CiAKIC8vIEZsb2F0cy4KLUZs
b2F0aW5nQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChmbG9hdCB2LCBjb25zdCBDb252
ZXJzaW9uU3BlYyYgY29udiwKK0Zsb2F0aW5nQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1w
bChmbG9hdCB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKLUZsb2F0aW5nQ29udmVydFJl
c3VsdCBGb3JtYXRDb252ZXJ0SW1wbChkb3VibGUgdiwgY29uc3QgQ29udmVyc2lvblNwZWMmIGNv
bnYsCitGbG9hdGluZ0NvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoZG91YmxlIHYsIENv
bnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwotRmxvYXRpbmdDb252ZXJ0UmVzdWx0IEZvcm1hdENv
bnZlcnRJbXBsKGxvbmcgZG91YmxlIHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitGbG9hdGluZ0NvbnZlcnRSZXN1
bHQgRm9ybWF0Q29udmVydEltcGwobG9uZyBkb3VibGUgdiwgQ29udmVyc2lvblNwZWMgY29udiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCog
c2luayk7CiAKIC8vIENoYXJzLgotSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJ
bXBsKGNoYXIgdiwgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCitJbnRlZ3JhbENvbnZlcnRS
ZXN1bHQgRm9ybWF0Q29udmVydEltcGwoY2hhciB2LCBDb252ZXJzaW9uU3BlYyBjb252LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5r
KTsKLUludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbChzaWduZWQgY2hhciB2
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNp
b25TcGVjJiBjb252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHNp
Z25lZCBjaGFyIHYsIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwotSW50ZWdyYWxDb252ZXJ0
UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2lnbmVkIGNoYXIgdiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKK0lu
dGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25lZCBjaGFyIHYsIENv
bnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogCiAvLyBJbnRzLgogSW50ZWdyYWxDb252ZXJ0UmVz
dWx0IEZvcm1hdENvbnZlcnRJbXBsKHNob3J0IHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBs
KiBzaW5rKTsKIEludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25l
ZCBzaG9ydCB2LCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7Ci1JbnRlZ3JhbENv
bnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoaW50IHYsIGNvbnN0IENvbnZlcnNpb25TcGVj
JiBjb252LAorSW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKGludCB2LCBD
b252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKLUludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRD
b252ZXJ0SW1wbCh1bnNpZ25lZCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKK0ludGVn
cmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25lZCB2LCBDb252ZXJzaW9u
U3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1h
dFNpbmtJbXBsKiBzaW5rKTsKIEludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1w
bChsb25nIHYsICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKIEludGVncmFsQ29u
dmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1bnNpZ25lZCBsb25nIHYsICAvLyBOT0xJTlQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9u
U3BlYyYgY29udiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252
ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZvcm1hdFNpbmtJbXBsKiBzaW5rKTsKIEludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252
ZXJ0SW1wbChsb25nIGxvbmcgdiwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwog
SW50ZWdyYWxDb252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKHVuc2lnbmVkIGxvbmcgbG9u
ZyB2LCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogc2luayk7Ci1JbnRlZ3JhbENvbnZlcnRS
ZXN1bHQgRm9ybWF0Q29udmVydEltcGwodWludDEyOCB2LCBjb25zdCBDb252ZXJzaW9uU3BlYyYg
Y29udiwKK0ludGVncmFsQ29udmVydFJlc3VsdCBGb3JtYXRDb252ZXJ0SW1wbCh1aW50MTI4IHYs
IENvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGVuYWJs
ZV9pZl90PHN0ZDo6aXNfc2FtZTxULCBib29sPjo6dmFsdWUsIGludD4gPSAwPgotSW50ZWdyYWxD
b252ZXJ0UmVzdWx0IEZvcm1hdENvbnZlcnRJbXBsKFQgdiwgY29uc3QgQ29udmVyc2lvblNwZWMm
IGNvbnYsCitJbnRlZ3JhbENvbnZlcnRSZXN1bHQgRm9ybWF0Q29udmVydEltcGwoVCB2LCBDb252
ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZvcm1hdFNpbmtJbXBsKiBzaW5rKSB7CiAgIHJldHVybiBGb3JtYXRDb252ZXJ0SW1wbChzdGF0
aWNfY2FzdDxpbnQ+KHYpLCBjb252LCBzaW5rKTsKIH0KQEAgLTE1OSwxMSArMTU0LDExIEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19lbnVt
PFQ+Ojp2YWx1ZSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICFIYXNVc2VyRGVmaW5l
ZENvbnZlcnQ8VD46OnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdyYWxDb252
ZXJ0UmVzdWx0Pjo6dHlwZQotRm9ybWF0Q29udmVydEltcGwoVCB2LCBjb25zdCBDb252ZXJzaW9u
U3BlYyYgY29udiwgRm9ybWF0U2lua0ltcGwqIHNpbmspOworRm9ybWF0Q29udmVydEltcGwoVCB2
LCBDb252ZXJzaW9uU3BlYyBjb252LCBGb3JtYXRTaW5rSW1wbCogc2luayk7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogQ29udmVydFJlc3VsdDxDb252OjpzPiBGb3JtYXRDb252ZXJ0SW1wbChj
b25zdCBTdHJlYW1lZFdyYXBwZXI8VD4mIHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25TcGVjJiBjb252LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU3BlYyBjb252LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRTaW5rSW1wbCogb3V0KSB7CiAg
IHN0ZDo6b3N0cmluZ3N0cmVhbSBvc3M7CiAgIG9zcyA8PCB2LnZfOwpAQCAtMTc2LDcgKzE3MSw3
IEBAIENvbnZlcnRSZXN1bHQ8Q29udjo6cz4gRm9ybWF0Q29udmVydEltcGwoY29uc3QgU3RyZWFt
ZWRXcmFwcGVyPFQ+JiB2LAogc3RydWN0IEZvcm1hdENvdW50Q2FwdHVyZUhlbHBlciB7CiAgIHRl
bXBsYXRlIDxjbGFzcyBUID0gaW50PgogICBzdGF0aWMgQ29udmVydFJlc3VsdDxDb252OjpuPiBD
b252ZXJ0SGVscGVyKGNvbnN0IEZvcm1hdENvdW50Q2FwdHVyZSYgdiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29u
diwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJz
aW9uU3BlYyBjb252LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZvcm1hdFNpbmtJbXBsKiBzaW5rKSB7CiAgICAgY29uc3QgYWJzbDo6ZW5hYmxlX2lmX3Q8
c2l6ZW9mKFQpICE9IDAsIEZvcm1hdENvdW50Q2FwdHVyZT4mIHYyID0gdjsKIApAQCAtMTg5LDcg
KzE4NCw3IEBAIHN0cnVjdCBGb3JtYXRDb3VudENhcHR1cmVIZWxwZXIgewogCiB0ZW1wbGF0ZSA8
Y2xhc3MgVCA9IGludD4KIENvbnZlcnRSZXN1bHQ8Q29udjo6bj4gRm9ybWF0Q29udmVydEltcGwo
Y29uc3QgRm9ybWF0Q291bnRDYXB0dXJlJiB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uU3BlYyYgY29udiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblNwZWMgY29udiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0U2lua0ltcGwqIHNpbmspIHsK
ICAgcmV0dXJuIEZvcm1hdENvdW50Q2FwdHVyZUhlbHBlcjo6Q29udmVydEhlbHBlcih2LCBjb252
LCBzaW5rKTsKIH0KQEAgLTE5OSwyMCArMTk0LDIwIEBAIENvbnZlcnRSZXN1bHQ8Q29udjo6bj4g
Rm9ybWF0Q29udmVydEltcGwoY29uc3QgRm9ybWF0Q291bnRDYXB0dXJlJiB2LAogc3RydWN0IEZv
cm1hdEFyZ0ltcGxGcmllbmQgewogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnPgogICBzdGF0aWMg
Ym9vbCBUb0ludChBcmcgYXJnLCBpbnQqIG91dCkgewotICAgIGlmICghYXJnLnZ0YmxfLT50b19p
bnQpIHJldHVybiBmYWxzZTsKLSAgICAqb3V0ID0gYXJnLnZ0YmxfLT50b19pbnQoYXJnLmRhdGFf
KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBBIHZhbHVlIGluaXRpYWxpemVkIENvbnZlcnNp
b25TcGVjIGhhcyBhIGBub25lYCBjb252LCB3aGljaCB0ZWxscyB0aGUKKyAgICAvLyBkaXNwYXRj
aGVyIHRvIHJ1biB0aGUgYGludGAgY29udmVyc2lvbi4KKyAgICByZXR1cm4gYXJnLmRpc3BhdGNo
ZXJfKGFyZy5kYXRhXywge30sIG91dCk7CiAgIH0KIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJn
PgotICBzdGF0aWMgYm9vbCBDb252ZXJ0KEFyZyBhcmcsIGNvbnN0IHN0cl9mb3JtYXRfaW50ZXJu
YWw6OkNvbnZlcnNpb25TcGVjJiBjb252LAorICBzdGF0aWMgYm9vbCBDb252ZXJ0KEFyZyBhcmcs
IHN0cl9mb3JtYXRfaW50ZXJuYWw6OkNvbnZlcnNpb25TcGVjIGNvbnYsCiAgICAgICAgICAgICAg
ICAgICAgICAgRm9ybWF0U2lua0ltcGwqIG91dCkgewotICAgIHJldHVybiBhcmcudnRibF8tPmNv
bnZlcnQoYXJnLmRhdGFfLCBjb252LCBvdXQpOworICAgIHJldHVybiBhcmcuZGlzcGF0Y2hlcl8o
YXJnLmRhdGFfLCBjb252LCBvdXQpOwogICB9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFyZz4K
LSAgc3RhdGljIGNvbnN0IHZvaWQqIEdldFZUYWJsZVB0ckZvclRlc3QoQXJnIGFyZykgewotICAg
IHJldHVybiBhcmcudnRibF87CisgIHN0YXRpYyB0eXBlbmFtZSBBcmc6OkRpc3BhdGNoZXIgR2V0
VlRhYmxlUHRyRm9yVGVzdChBcmcgYXJnKSB7CisgICAgcmV0dXJuIGFyZy5kaXNwYXRjaGVyXzsK
ICAgfQogfTsKIApAQCAtMjI5LDExICsyMjQsNyBAQCBjbGFzcyBGb3JtYXRBcmdJbXBsIHsKICAg
ICBjaGFyIGJ1ZltrSW5saW5lZFNwYWNlXTsKICAgfTsKIAotICBzdHJ1Y3QgVlRhYmxlIHsKLSAg
ICBib29sICgqY29udmVydCkoRGF0YSwgY29uc3Qgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6Q29udmVy
c2lvblNwZWMmIGNvbnYsCi0gICAgICAgICAgICAgICAgICAgIEZvcm1hdFNpbmtJbXBsKiBvdXQp
OwotICAgIGludCAoKnRvX2ludCkoRGF0YSk7Ci0gIH07CisgIHVzaW5nIERpc3BhdGNoZXIgPSBi
b29sICgqKShEYXRhLCBDb252ZXJzaW9uU3BlYywgdm9pZCogb3V0KTsKIAogICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgc3RydWN0IHN0b3JlX2J5X3ZhbHVlCkBAIC0yNTMsMTAgKzI0NCw2IEBA
IGNsYXNzIEZvcm1hdEFyZ0ltcGwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQnlQb2ludGVyKSk+IHsKICAgfTsKIAot
ICAvLyBBbiBpbnN0YW5jZSBvZiBhbiBGb3JtYXRBcmdJbXBsOjpWVGFibGUgc3VpdGFibGUgZm9y
ICdUJy4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIHN0cnVjdCBUeXBlZFZUYWJsZTsKLQog
ICAvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiB2dGFibGVzIHdlIHdpbGwgZGVjYXkgdmFsdWVz
IGJlZm9yZSBoYW5kLgogICAvLyBBbnl0aGluZyB3aXRoIGEgdXNlci1kZWZpbmVkIENvbnZlcnQg
d2lsbCBnZXQgaXRzIG93biB2dGFibGUuCiAgIC8vIEZvciBldmVyeXRoaW5nIGVsc2U6CkBAIC0z
MzgsNyArMzI1LDEwIEBAIGNsYXNzIEZvcm1hdEFyZ0ltcGwgewogICB9OwogCiAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotICB2b2lkIEluaXQoY29uc3QgVCYgdmFsdWUpOworICB2b2lkIEluaXQo
Y29uc3QgVCYgdmFsdWUpIHsKKyAgICBkYXRhXyA9IE1hbmFnZXI8VD46OlNldFZhbHVlKHZhbHVl
KTsKKyAgICBkaXNwYXRjaGVyXyA9ICZEaXNwYXRjaDxUPjsKKyAgfQogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBzdGF0aWMgaW50IFRvSW50VmFsKGNvbnN0IFQmIHZhbCkgewpAQCAtMzU1
LDc5ICszNDUsNzUgQEAgY2xhc3MgRm9ybWF0QXJnSW1wbCB7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4odmFsKTsKICAgfQogCi0gIERhdGEgZGF0YV87Ci0gIGNvbnN0IFZUYWJsZSogdnRi
bF87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBGb3JtYXRBcmdJbXBsOjpU
eXBlZFZUYWJsZSB7Ci0gcHJpdmF0ZToKLSAgc3RhdGljIGJvb2wgQ29udmVydEltcGwoRGF0YSBh
cmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cl9mb3JtYXRfaW50ZXJuYWw6
OkNvbnZlcnNpb25TcGVjJiBjb252LAotICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRT
aW5rSW1wbCogb3V0KSB7Ci0gICAgcmV0dXJuIHN0cl9mb3JtYXRfaW50ZXJuYWw6OkZvcm1hdENv
bnZlcnRJbXBsKE1hbmFnZXI8VD46OlZhbHVlKGFyZyksIGNvbnYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCkKLSAgICAgICAgLnZhbHVlOwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIGJvb2wgVG9JbnQoRGF0YSBhcmcsIGlu
dCogb3V0LCBzdGQ6OnRydWVfdHlwZSAvKiBpc19pbnRlZ3JhbCAqLywKKyAgICAgICAgICAgICAg
ICAgICAgc3RkOjpmYWxzZV90eXBlKSB7CisgICAgKm91dCA9IFRvSW50VmFsKE1hbmFnZXI8VD46
OlZhbHVlKGFyZykpOworICAgIHJldHVybiB0cnVlOwogICB9CiAKLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIFUgPSBULCB0eXBlbmFtZSA9IHZvaWQ+Ci0gIHN0cnVjdCBUb0ludEltcGwgewotICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50ICgqdmFsdWUpKERhdGEpID0gbnVsbHB0cjsKLSAgfTsKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBib29sIFRvSW50KERhdGEgYXJnLCBpbnQqIG91
dCwgc3RkOjpmYWxzZV90eXBlLAorICAgICAgICAgICAgICAgICAgICBzdGQ6OnRydWVfdHlwZSAv
KiBpc19lbnVtICovKSB7CisgICAgKm91dCA9IFRvSW50VmFsKHN0YXRpY19jYXN0PHR5cGVuYW1l
IHN0ZDo6dW5kZXJseWluZ190eXBlPFQ+Ojp0eXBlPigKKyAgICAgICAgTWFuYWdlcjxUPjo6VmFs
dWUoYXJnKSkpOworICAgIHJldHVybiB0cnVlOworICB9CiAKLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+Ci0gIHN0cnVjdCBUb0ludEltcGw8VSwKLSAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFU+Ojp2YWx1ZT46OnR5cGU+IHsKLSAgICBz
dGF0aWMgaW50IEludm9rZShEYXRhIGFyZykgeyByZXR1cm4gVG9JbnRWYWwoTWFuYWdlcjxUPjo6
VmFsdWUoYXJnKSk7IH0KLSAgICBzdGF0aWMgY29uc3RleHByIGludCAoKnZhbHVlKShEYXRhKSA9
ICZJbnZva2U7Ci0gIH07CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgYm9vbCBU
b0ludChEYXRhLCBpbnQqLCBzdGQ6OmZhbHNlX3R5cGUsIHN0ZDo6ZmFsc2VfdHlwZSkgeworICAg
IHJldHVybiBmYWxzZTsKKyAgfQogCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICBzdHJ1Y3Qg
VG9JbnRJbXBsPFUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZW51bTxVPjo6dmFs
dWU+Ojp0eXBlPiB7Ci0gICAgc3RhdGljIGludCBJbnZva2UoRGF0YSBhcmcpIHsKLSAgICAgIHJl
dHVybiBUb0ludFZhbChzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxU
Pjo6dHlwZT4oCi0gICAgICAgICAgTWFuYWdlcjxUPjo6VmFsdWUoYXJnKSkpOworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIGJvb2wgRGlzcGF0Y2goRGF0YSBhcmcsIENvbnZlcnNp
b25TcGVjIHNwZWMsIHZvaWQqIG91dCkgeworICAgIC8vIEEgYG5vbmVgIGNvbnYgaW5kaWNhdGVz
IHRoYXQgd2Ugd2FudCB0aGUgYGludGAgY29udmVyc2lvbi4KKyAgICBpZiAoQUJTTF9QUkVESUNU
X0ZBTFNFKHNwZWMuY29udigpLmlkKCkgPT0gQ29udmVyc2lvbkNoYXI6Om5vbmUpKSB7CisgICAg
ICByZXR1cm4gVG9JbnQ8VD4oYXJnLCBzdGF0aWNfY2FzdDxpbnQqPihvdXQpLCBzdGQ6OmlzX2lu
dGVncmFsPFQ+KCksCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19lbnVtPFQ+KCkpOwog
ICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIGludCAoKnZhbHVlKShEYXRhKSA9ICZJbnZva2U7
Ci0gIH07CiAKLSBwdWJsaWM6Ci0gIHN0YXRpYyBjb25zdGV4cHIgVlRhYmxlIHZhbHVleyZDb252
ZXJ0SW1wbCwgVG9JbnRJbXBsPD46OnZhbHVlfTsKLX07CisgICAgcmV0dXJuIHN0cl9mb3JtYXRf
aW50ZXJuYWw6OkZvcm1hdENvbnZlcnRJbXBsKAorICAgICAgICAgICAgICAgTWFuYWdlcjxUPjo6
VmFsdWUoYXJnKSwgc3BlYywgc3RhdGljX2Nhc3Q8Rm9ybWF0U2lua0ltcGwqPihvdXQpKQorICAg
ICAgICAudmFsdWU7CisgIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgRm9y
bWF0QXJnSW1wbDo6VlRhYmxlIEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPFQ+Ojp2YWx1ZTsK
KyAgRGF0YSBkYXRhXzsKKyAgRGlzcGF0Y2hlciBkaXNwYXRjaGVyXzsKK307CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotdm9pZCBGb3JtYXRBcmdJbXBsOjpJbml0KGNvbnN0IFQmIHZhbHVlKSB7
Ci0gIGRhdGFfID0gTWFuYWdlcjxUPjo6U2V0VmFsdWUodmFsdWUpOwotICB2dGJsXyA9ICZUeXBl
ZFZUYWJsZTxUPjo6dmFsdWU7Ci19CisjZGVmaW5lIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BB
VENIX0lOU1RBTlRJQVRFXyhULCBFKSBcCisgIEUgdGVtcGxhdGUgYm9vbCBGb3JtYXRBcmdJbXBs
OjpEaXNwYXRjaDxUPihEYXRhLCBDb252ZXJzaW9uU3BlYywgdm9pZCopCisKKyNkZWZpbmUgQUJT
TF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfT1ZFUkxPQURTX0VYUEFORF8oLi4uKSAgICAgICAg
ICAgICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRF
XyhzdHJfZm9ybWF0X2ludGVybmFsOjpWb2lkUHRyLCAgICAgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGJvb2ws
IF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJ
U1BBVENIX0lOU1RBTlRJQVRFXyhjaGFyLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgXAor
ICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8oc2lnbmVkIGNoYXIs
IF9fVkFfQVJHU19fKTsgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hf
SU5TVEFOVElBVEVfKHVuc2lnbmVkIGNoYXIsIF9fVkFfQVJHU19fKTsgICAgICBcCisgIEFCU0xf
SU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyhzaG9ydCwgX19WQV9BUkdTX18p
OyAvKiBOT0xJTlQgKi8gXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5U
SUFURV8odW5zaWduZWQgc2hvcnQsICAgICAgLyogTk9MSU5UICovIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAg
ICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyhp
bnQsIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1B
VF9ESVNQQVRDSF9JTlNUQU5USUFURV8odW5zaWduZWQgaW50LCBfX1ZBX0FSR1NfXyk7ICAgICAg
IFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGxvbmcsIF9f
VkFfQVJHU19fKTsgLyogTk9MSU5UICovICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BB
VENIX0lOU1RBTlRJQVRFXyh1bnNpZ25lZCBsb25nLCAgICAgIC8qIE5PTElOVCAqLyAgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19WQV9BUkdTX18pOyAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5T
VEFOVElBVEVfKGxvbmcgbG9uZywgLyogTk9MSU5UICovICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1ZBX0FSR1NfXyk7ICAgICAgICAg
ICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFU
RV8odW5zaWduZWQgbG9uZyBsb25nLCAvKiBOT0xJTlQgKi8gIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICAg
ICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENIX0lOU1RBTlRJQVRFXyh1aW50
MTI4LCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgXAorICBBQlNMX0lOVEVSTkFMX0ZPUk1BVF9E
SVNQQVRDSF9JTlNUQU5USUFURV8oZmxvYXQsIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgIFwK
KyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKGRvdWJsZSwgX19W
QV9BUkdTX18pOyAgICAgICAgICAgICBcCisgIEFCU0xfSU5URVJOQUxfRk9STUFUX0RJU1BBVENI
X0lOU1RBTlRJQVRFXyhsb25nIGRvdWJsZSwgX19WQV9BUkdTX18pOyAgICAgICAgXAorICBBQlNM
X0lOVEVSTkFMX0ZPUk1BVF9ESVNQQVRDSF9JTlNUQU5USUFURV8oY29uc3QgY2hhciosIF9fVkFf
QVJHU19fKTsgICAgICAgIFwKKyAgQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFO
VElBVEVfKHN0ZDo6c3RyaW5nLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgIFwKKyAgQUJTTF9J
TlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfSU5TVEFOVElBVEVfKHN0cmluZ192aWV3LCBfX1ZBX0FS
R1NfXykKKworQUJTTF9JTlRFUk5BTF9GT1JNQVRfRElTUEFUQ0hfT1ZFUkxPQURTX0VYUEFORF8o
ZXh0ZXJuKTsKIAotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZU
YWJsZTxzdHJfZm9ybWF0X2ludGVybmFsOjpWb2lkUHRyPjsKLQotZXh0ZXJuIHRlbXBsYXRlIHN0
cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxib29sPjsKLWV4dGVybiB0ZW1wbGF0ZSBz
dHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8Y2hhcj47Ci1leHRlcm4gdGVtcGxhdGUg
c3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHNpZ25lZCBjaGFyPjsKLWV4dGVybiB0
ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8dW5zaWduZWQgY2hhcj47
Ci1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHNob3J0
PjsgICAgICAgICAgIC8vIE5PTElOVAotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJ
bXBsOjpUeXBlZFZUYWJsZTx1bnNpZ25lZCBzaG9ydD47ICAvLyBOT0xJTlQKLWV4dGVybiB0ZW1w
bGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8aW50PjsKLWV4dGVybiB0ZW1w
bGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8dW5zaWduZWQ+OwotZXh0ZXJu
IHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxsb25nPjsgICAgICAg
ICAgIC8vIE5PTElOVAotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBl
ZFZUYWJsZTx1bnNpZ25lZCBsb25nPjsgIC8vIE5PTElOVAotZXh0ZXJuIHRlbXBsYXRlIHN0cnVj
dCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTxsb25nIGxvbmc+OyAgICAgIC8vIE5PTElOVAot
ZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZUYWJsZTwKLSAgICB1
bnNpZ25lZCBsb25nIGxvbmc+OyAgLy8gTk9MSU5UCi1leHRlcm4gdGVtcGxhdGUgc3RydWN0IEZv
cm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPHVpbnQxMjg+OwotCi1leHRlcm4gdGVtcGxhdGUgc3Ry
dWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGZsb2F0PjsKLWV4dGVybiB0ZW1wbGF0ZSBz
dHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8ZG91YmxlPjsKLWV4dGVybiB0ZW1wbGF0
ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8bG9uZyBkb3VibGU+OwotCi1leHRl
cm4gdGVtcGxhdGUgc3RydWN0IEZvcm1hdEFyZ0ltcGw6OlR5cGVkVlRhYmxlPGNvbnN0IGNoYXIq
PjsKLWV4dGVybiB0ZW1wbGF0ZSBzdHJ1Y3QgRm9ybWF0QXJnSW1wbDo6VHlwZWRWVGFibGU8c3Rk
OjpzdHJpbmc+OwotZXh0ZXJuIHRlbXBsYXRlIHN0cnVjdCBGb3JtYXRBcmdJbXBsOjpUeXBlZFZU
YWJsZTxzdHJpbmdfdmlldz47CiB9ICAvLyBuYW1lc3BhY2Ugc3RyX2Zvcm1hdF9pbnRlcm5hbAog
fSAgLy8gbmFtZXNwYWNlIGFic2wKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5h
bC9zdHJfZm9ybWF0L2JpbmQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQv
YmluZC5jYwppbmRleCAzM2U4NjQxNTU4YWI4NmYzZTg5MmFkZGVlY2Q5YTZkZWY4YjQwYTk3Li5j
NGVkZGQxN2RkYmU1NmE3NmM1ZWMxYTUxODQwNzliZjEwNzE2NmJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L2ludGVybmFsL3N0cl9mb3JtYXQvYmluZC5jYwpAQCAtMTAzLDE1ICsxMDMsMTUgQEAgY2xhc3Mg
Q29udmVydGVyQ29uc3VtZXIgewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbnZlcnRlcj4K
LWJvb2wgQ29udmVydEFsbChjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKLSAg
ICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MsCi0gICAg
ICAgICAgICAgICAgY29uc3QgQ29udmVydGVyJiBjb252ZXJ0ZXIpIHsKLSAgY29uc3QgUGFyc2Vk
Rm9ybWF0QmFzZSogcGMgPSBmb3JtYXQucGFyc2VkX2NvbnZlcnNpb24oKTsKLSAgaWYgKHBjKQot
ICAgIHJldHVybiBwYy0+UHJvY2Vzc0Zvcm1hdChDb252ZXJ0ZXJDb25zdW1lcjxDb252ZXJ0ZXI+
KGNvbnZlcnRlciwgYXJncykpOwotCi0gIHJldHVybiBQYXJzZUZvcm1hdFN0cmluZyhmb3JtYXQu
c3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0ZXJDb25zdW1lcjxDb252
ZXJ0ZXI+KGNvbnZlcnRlciwgYXJncykpOworYm9vbCBDb252ZXJ0QWxsKGNvbnN0IFVudHlwZWRG
b3JtYXRTcGVjSW1wbCBmb3JtYXQsCisgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBG
b3JtYXRBcmdJbXBsPiBhcmdzLCBDb252ZXJ0ZXIgY29udmVydGVyKSB7CisgIGlmIChmb3JtYXQu
aGFzX3BhcnNlZF9jb252ZXJzaW9uKCkpIHsKKyAgICByZXR1cm4gZm9ybWF0LnBhcnNlZF9jb252
ZXJzaW9uKCktPlByb2Nlc3NGb3JtYXQoCisgICAgICAgIENvbnZlcnRlckNvbnN1bWVyPENvbnZl
cnRlcj4oY29udmVydGVyLCBhcmdzKSk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIFBhcnNlRm9y
bWF0U3RyaW5nKGZvcm1hdC5zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29u
dmVydGVyQ29uc3VtZXI8Q29udmVydGVyPihjb252ZXJ0ZXIsIGFyZ3MpKTsKKyAgfQogfQogCiBj
bGFzcyBEZWZhdWx0Q29udmVydGVyIHsKQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIEJpbmRXaXRo
UGFjayhjb25zdCBVbmJvdW5kQ29udmVyc2lvbiogcHJvcHMsCiAgIHJldHVybiBBcmdDb250ZXh0
KHBhY2spLkJpbmQocHJvcHMsIGJvdW5kKTsKIH0KIAotc3RkOjpzdHJpbmcgU3VtbWFyaXplKGNv
bnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAorc3RkOjpzdHJpbmcgU3VtbWFyaXpl
KGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgIGFi
c2w6OlNwYW48Y29uc3QgRm9ybWF0QXJnSW1wbD4gYXJncykgewogICB0eXBlZGVmIFN1bW1hcml6
aW5nQ29udmVydGVyIENvbnZlcnRlcjsKICAgc3RkOjpzdHJpbmcgb3V0OwpAQCAtMTY3LDIzICsx
NjcsMTggQEAgc3RkOjpzdHJpbmcgU3VtbWFyaXplKGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1w
bCYgZm9ybWF0LAogICAgIC8vIGZsdXNoLgogICAgIEZvcm1hdFNpbmtJbXBsIHNpbmsoJm91dCk7
CiAgICAgaWYgKCFDb252ZXJ0QWxsKGZvcm1hdCwgYXJncywgQ29udmVydGVyKCZzaW5rKSkpIHsK
LSAgICAgIHNpbmsuRmx1c2goKTsKLSAgICAgIG91dC5jbGVhcigpOworICAgICAgcmV0dXJuICIi
OwogICAgIH0KICAgfQogICByZXR1cm4gb3V0OwogfQogCiBib29sIEZvcm1hdFVudHlwZWQoRm9y
bWF0UmF3U2lua0ltcGwgcmF3X3NpbmssCi0gICAgICAgICAgICAgICAgICAgY29uc3QgVW50eXBl
ZEZvcm1hdFNwZWNJbXBsJiBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgY29uc3QgVW50eXBl
ZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNv
bnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpIHsKICAgRm9ybWF0U2lua0ltcGwgc2luayhyYXdfc2lu
ayk7CiAgIHVzaW5nIENvbnZlcnRlciA9IERlZmF1bHRDb252ZXJ0ZXI7Ci0gIGlmICghQ29udmVy
dEFsbChmb3JtYXQsIGFyZ3MsIENvbnZlcnRlcigmc2luaykpKSB7Ci0gICAgc2luay5GbHVzaCgp
OwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4gdHJ1ZTsKKyAgcmV0dXJuIENvbnZl
cnRBbGwoZm9ybWF0LCBhcmdzLCBDb252ZXJ0ZXIoJnNpbmspKTsKIH0KIAogc3RkOjpvc3RyZWFt
JiBTdHJlYW1hYmxlOjpQcmludChzdGQ6Om9zdHJlYW0mIG9zKSBjb25zdCB7CkBAIC0xOTEsMTQg
KzE4NiwxNiBAQCBzdGQ6Om9zdHJlYW0mIFN0cmVhbWFibGU6OlByaW50KHN0ZDo6b3N0cmVhbSYg
b3MpIGNvbnN0IHsKICAgcmV0dXJuIG9zOwogfQogCi1zdGQ6OnN0cmluZyYgQXBwZW5kUGFjayhz
dGQ6OnN0cmluZyogb3V0LCBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKK3N0
ZDo6c3RyaW5nJiBBcHBlbmRQYWNrKHN0ZDo6c3RyaW5nKiBvdXQsIGNvbnN0IFVudHlwZWRGb3Jt
YXRTcGVjSW1wbCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBG
b3JtYXRBcmdJbXBsPiBhcmdzKSB7CiAgIHNpemVfdCBvcmlnID0gb3V0LT5zaXplKCk7Ci0gIGlm
ICghRm9ybWF0VW50eXBlZChvdXQsIGZvcm1hdCwgYXJncykpIG91dC0+cmVzaXplKG9yaWcpOwor
ICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKCFGb3JtYXRVbnR5cGVkKG91dCwgZm9ybWF0LCBhcmdz
KSkpIHsKKyAgICBvdXQtPmVyYXNlKG9yaWcpOworICB9CiAgIHJldHVybiAqb3V0OwogfQogCi1p
bnQgRnByaW50RihzdGQ6OkZJTEUqIG91dHB1dCwgY29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBs
JiBmb3JtYXQsCitpbnQgRnByaW50RihzdGQ6OkZJTEUqIG91dHB1dCwgY29uc3QgVW50eXBlZEZv
cm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0
QXJnSW1wbD4gYXJncykgewogICBGSUxFUmF3U2luayBzaW5rKG91dHB1dCk7CiAgIGlmICghRm9y
bWF0VW50eXBlZCgmc2luaywgZm9ybWF0LCBhcmdzKSkgewpAQCAtMjE2LDcgKzIxMyw3IEBAIGlu
dCBGcHJpbnRGKHN0ZDo6RklMRSogb3V0cHV0LCBjb25zdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwm
IGZvcm1hdCwKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc2luay5jb3VudCgpKTsKIH0KIAot
aW50IFNucHJpbnRGKGNoYXIqIG91dHB1dCwgc2l6ZV90IHNpemUsIGNvbnN0IFVudHlwZWRGb3Jt
YXRTcGVjSW1wbCYgZm9ybWF0LAoraW50IFNucHJpbnRGKGNoYXIqIG91dHB1dCwgc2l6ZV90IHNp
emUsIGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCiAgICAgICAgICAgICAgYWJz
bDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7CiAgIEJ1ZmZlclJhd1Npbmsgc2lu
ayhvdXRwdXQsIHNpemUgPyBzaXplIC0gMSA6IDApOwogICBpZiAoIUZvcm1hdFVudHlwZWQoJnNp
bmssIGZvcm1hdCwgYXJncykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwv
c3RyX2Zvcm1hdC9iaW5kLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvYmlu
ZC5oCmluZGV4IDQwMDg2MTEyMTFjZmU2MDUzYzUxYWYwNjQ4YTA1MTM1NGJkZjgxYTIuLjFiNTJk
ZjljN2Y1NjU1ZjFkNzhkYWRjNTA4MjVjNGQyM2U0MjYwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9iaW5kLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9zdHJfZm9ybWF0L2JpbmQuaApAQCAtMzMsMTMgKzMzLDIxIEBAIGNsYXNzIFVudHlwZWRG
b3JtYXRTcGVjSW1wbCB7CiAgcHVibGljOgogICBVbnR5cGVkRm9ybWF0U3BlY0ltcGwoKSA9IGRl
bGV0ZTsKIAotICBleHBsaWNpdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwoc3RyaW5nX3ZpZXcgcykg
OiBzdHJfKHMpLCBwY18oKSB7fQorICBleHBsaWNpdCBVbnR5cGVkRm9ybWF0U3BlY0ltcGwoc3Ry
aW5nX3ZpZXcgcykKKyAgICAgIDogZGF0YV8ocy5kYXRhKCkpLCBzaXplXyhzLnNpemUoKSkge30K
ICAgZXhwbGljaXQgVW50eXBlZEZvcm1hdFNwZWNJbXBsKAogICAgICAgY29uc3Qgc3RyX2Zvcm1h
dF9pbnRlcm5hbDo6UGFyc2VkRm9ybWF0QmFzZSogcGMpCi0gICAgICA6IHBjXyhwYykge30KLSAg
c3RyaW5nX3ZpZXcgc3RyKCkgY29uc3QgeyByZXR1cm4gc3RyXzsgfQorICAgICAgOiBkYXRhXyhw
YyksIHNpemVfKH5zaXplX3R7fSkge30KKworICBib29sIGhhc19wYXJzZWRfY29udmVyc2lvbigp
IGNvbnN0IHsgcmV0dXJuIHNpemVfID09IH5zaXplX3R7fTsgfQorCisgIHN0cmluZ192aWV3IHN0
cigpIGNvbnN0IHsKKyAgICBhc3NlcnQoIWhhc19wYXJzZWRfY29udmVyc2lvbigpKTsKKyAgICBy
ZXR1cm4gc3RyaW5nX3ZpZXcoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFfKSwgc2l6ZV8p
OworICB9CiAgIGNvbnN0IHN0cl9mb3JtYXRfaW50ZXJuYWw6OlBhcnNlZEZvcm1hdEJhc2UqIHBh
cnNlZF9jb252ZXJzaW9uKCkgY29uc3QgewotICAgIHJldHVybiBwY187CisgICAgYXNzZXJ0KGhh
c19wYXJzZWRfY29udmVyc2lvbigpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qgc3Ry
X2Zvcm1hdF9pbnRlcm5hbDo6UGFyc2VkRm9ybWF0QmFzZSo+KGRhdGFfKTsKICAgfQogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtNDgsOCArNTYsOCBAQCBjbGFzcyBVbnR5cGVkRm9ybWF0
U3BlY0ltcGwgewogICB9CiAKICBwcml2YXRlOgotICBzdHJpbmdfdmlldyBzdHJfOwotICBjb25z
dCBzdHJfZm9ybWF0X2ludGVybmFsOjpQYXJzZWRGb3JtYXRCYXNlKiBwY187CisgIGNvbnN0IHZv
aWQqIGRhdGFfOworICBzaXplX3Qgc2l6ZV87CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUuLi4+CkBAIC0xNDQsMzEgKzE1MiwzMSBAQCBjbGFzcyBTdHJlYW1hYmxlIHsKIH07
CiAKIC8vIGZvciB0ZXN0aW5nCi1zdGQ6OnN0cmluZyBTdW1tYXJpemUoY29uc3QgVW50eXBlZEZv
cm1hdFNwZWNJbXBsJiBmb3JtYXQsCitzdGQ6OnN0cmluZyBTdW1tYXJpemUoVW50eXBlZEZvcm1h
dFNwZWNJbXBsIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgYWJzbDo6U3Bhbjxjb25zdCBGb3Jt
YXRBcmdJbXBsPiBhcmdzKTsKIGJvb2wgQmluZFdpdGhQYWNrKGNvbnN0IFVuYm91bmRDb252ZXJz
aW9uKiBwcm9wcywKICAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0QXJn
SW1wbD4gcGFjaywgQm91bmRDb252ZXJzaW9uKiBib3VuZCk7CiAKIGJvb2wgRm9ybWF0VW50eXBl
ZChGb3JtYXRSYXdTaW5rSW1wbCByYXdfc2luaywKLSAgICAgICAgICAgICAgICAgICBjb25zdCBV
bnR5cGVkRm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICBVbnR5cGVk
Rm9ybWF0U3BlY0ltcGwgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIGFic2w6OlNwYW48Y29u
c3QgRm9ybWF0QXJnSW1wbD4gYXJncyk7CiAKLXN0ZDo6c3RyaW5nJiBBcHBlbmRQYWNrKHN0ZDo6
c3RyaW5nKiBvdXQsIGNvbnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCYgZm9ybWF0LAorc3RkOjpz
dHJpbmcmIEFwcGVuZFBhY2soc3RkOjpzdHJpbmcqIG91dCwgVW50eXBlZEZvcm1hdFNwZWNJbXBs
IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0lt
cGw+IGFyZ3MpOwogCi1pbmxpbmUgc3RkOjpzdHJpbmcgRm9ybWF0UGFjayhjb25zdCBVbnR5cGVk
Rm9ybWF0U3BlY0ltcGwmIGZvcm1hdCwKK2lubGluZSBzdGQ6OnN0cmluZyBGb3JtYXRQYWNrKGNv
bnN0IFVudHlwZWRGb3JtYXRTcGVjSW1wbCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6U3Bhbjxjb25zdCBGb3JtYXRBcmdJbXBsPiBhcmdzKSB7CiAgIHN0ZDo6c3RyaW5n
IG91dDsKICAgQXBwZW5kUGFjaygmb3V0LCBmb3JtYXQsIGFyZ3MpOwogICByZXR1cm4gb3V0Owog
fQogCi1pbnQgRnByaW50RihzdGQ6OkZJTEUqIG91dHB1dCwgY29uc3QgVW50eXBlZEZvcm1hdFNw
ZWNJbXBsJiBmb3JtYXQsCitpbnQgRnByaW50RihzdGQ6OkZJTEUqIG91dHB1dCwgVW50eXBlZEZv
cm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAgICAgICAgIGFic2w6OlNwYW48Y29uc3QgRm9ybWF0
QXJnSW1wbD4gYXJncyk7Ci1pbnQgU25wcmludEYoY2hhciogb3V0cHV0LCBzaXplX3Qgc2l6ZSwg
Y29uc3QgVW50eXBlZEZvcm1hdFNwZWNJbXBsJiBmb3JtYXQsCitpbnQgU25wcmludEYoY2hhciog
b3V0cHV0LCBzaXplX3Qgc2l6ZSwgVW50eXBlZEZvcm1hdFNwZWNJbXBsIGZvcm1hdCwKICAgICAg
ICAgICAgICBhYnNsOjpTcGFuPGNvbnN0IEZvcm1hdEFyZ0ltcGw+IGFyZ3MpOwogCi0vLyBSZXR1
cm5lZCBieSBTdHJlYW1lZCh2KS4gQ29udmVydHMgdmlhICclcycgdG8gdGhlIHN0ZDo6c3RyaW5n
IGNyZWF0ZWQKKy8vIFJldHVybmVkIGJ5IFN0cmVhbWVkKHYpLiBDb252ZXJ0cyB2aWEgJyVzJyB0
byB0aGUgc3RyaW5nIGNyZWF0ZWQKIC8vIGJ5IHN0ZDo6b3N0cmVhbSA8PCB2LgogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBjbGFzcyBTdHJlYW1lZFdyYXBwZXIgewpAQCAtMTc4LDcgKzE4Niw3IEBA
IGNsYXNzIFN0cmVhbWVkV3JhcHBlciB7CiAgcHJpdmF0ZToKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFM+CiAgIGZyaWVuZCBDb252ZXJ0UmVzdWx0PENvbnY6OnM+IEZvcm1hdENvbnZlcnRJbXBsKGNv
bnN0IFN0cmVhbWVkV3JhcHBlcjxTPiYgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvblNwZWMmIGNvbnYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25TcGVj
IGNvbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZvcm1hdFNpbmtJbXBsKiBvdXQpOwogICBjb25zdCBUJiB2XzsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9mb3JtYXQvZXh0ZW5zaW9uLmgKaW5kZXggODEwMzMwYjlkNzFiZDE4
OGMyNmVhZTIxNWFiZDYxZDQ4ZWQ0YmQ3OC4uMTFiOTk2YWVmZDM3ZDE1N2EzZjA4ZGFhNWEyMmRj
MDFjMGEyZDAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0
L2V4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9leHRl
bnNpb24uaApAQCAtMTgsNiArMTgsNyBAQAogI2RlZmluZSBBQlNMX1NUUklOR1NfSU5URVJOQUxf
U1RSX0ZPUk1BVF9FWFRFTlNJT05fSF8KIAogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUg
PGNzdGRkZWY+CiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxvc3RyZWFtPgogCkBAIC01
Nyw3ICs1OCw3IEBAIGNsYXNzIEZvcm1hdFJhd1NpbmtJbXBsIHsKICAgdm9pZCAoKndyaXRlXyko
dm9pZCosIHN0cmluZ192aWV3KTsKIH07CiAKLS8vIEFuIGFic3RyYWN0aW9uIHRvIHdoaWNoIGNv
bnZlcnNpb25zIHdyaXRlIHRoZWlyIHN0ZDo6c3RyaW5nIGRhdGEuCisvLyBBbiBhYnN0cmFjdGlv
biB0byB3aGljaCBjb252ZXJzaW9ucyB3cml0ZSB0aGVpciBzdHJpbmcgZGF0YS4KIGNsYXNzIEZv
cm1hdFNpbmtJbXBsIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IEZvcm1hdFNpbmtJbXBsKEZvcm1h
dFJhd1NpbmtJbXBsIHJhdykgOiByYXdfKHJhdykge30KQEAgLTMwNyw3ICszMDgsMTIgQEAgY2xh
c3MgQ29udmVyc2lvblNwZWMgewogIHB1YmxpYzoKICAgRmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJl
dHVybiBmbGFnc187IH0KICAgTGVuZ3RoTW9kIGxlbmd0aF9tb2QoKSBjb25zdCB7IHJldHVybiBs
ZW5ndGhfbW9kXzsgfQotICBDb252ZXJzaW9uQ2hhciBjb252KCkgY29uc3QgeyByZXR1cm4gY29u
dl87IH0KKyAgQ29udmVyc2lvbkNoYXIgY29udigpIGNvbnN0IHsKKyAgICAvLyBLZWVwIHRoaXMg
ZmllbGQgZmlyc3QgaW4gdGhlIHN0cnVjdCAuIEl0IGdlbmVyYXRlcyBiZXR0ZXIgY29kZSB3aGVu
CisgICAgLy8gYWNjZXNzaW5nIGl0IHdoZW4gQ29udmVyc2lvblNwZWMgaXMgcGFzc2VkIGJ5IHZh
bHVlIGluIHJlZ2lzdGVycy4KKyAgICBzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKENvbnZlcnNpb25T
cGVjLCBjb252XykgPT0gMCwgIiIpOworICAgIHJldHVybiBjb252XzsKKyAgfQogCiAgIC8vIFJl
dHVybnMgdGhlIHNwZWNpZmllZCB3aWR0aC4gSWYgd2lkdGggaXMgdW5zcGVjZmllZCwgaXQgcmV0
dXJucyBhIG5lZ2F0aXZlCiAgIC8vIHZhbHVlLgpAQCAtMzI0LDkgKzMzMCw5IEBAIGNsYXNzIENv
bnZlcnNpb25TcGVjIHsKICAgdm9pZCBzZXRfbGVmdChib29sIGIpIHsgZmxhZ3NfLmxlZnQgPSBi
OyB9CiAKICBwcml2YXRlOgorICBDb252ZXJzaW9uQ2hhciBjb252XzsKICAgRmxhZ3MgZmxhZ3Nf
OwogICBMZW5ndGhNb2QgbGVuZ3RoX21vZF87Ci0gIENvbnZlcnNpb25DaGFyIGNvbnZfOwogICBp
bnQgd2lkdGhfOwogICBpbnQgcHJlY2lzaW9uXzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL2ludGVybmFsL3N0cl9mb3JtYXQvb3V0cHV0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFs
L3N0cl9mb3JtYXQvb3V0cHV0LmgKaW5kZXggM2IwYWE1ZTcxNTdlY2JkYWY4ZjI0M2U0NGExM2E3
NTE2MzhiNTc1ZC4uMTJlY2Q5OWU2ODBkMWViZDY3OWQzYzg4MmY3ZjI2ZjNlOWZiNmU0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L291dHB1dC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9vdXRwdXQuaApAQCAtNjksMTAgKzY5
LDEwIEBAIGNsYXNzIEZJTEVSYXdTaW5rIHsKIAogLy8gUHJvdmlkZSBSYXdTaW5rIGludGVncmF0
aW9uIHdpdGggY29tbW9uIHR5cGVzIGZyb20gdGhlIFNUTC4KIGlubGluZSB2b2lkIEFic2xGb3Jt
YXRGbHVzaChzdGQ6OnN0cmluZyogb3V0LCBzdHJpbmdfdmlldyBzKSB7Ci0gIG91dC0+YXBwZW5k
KHMuYmVnaW4oKSwgcy5zaXplKCkpOworICBvdXQtPmFwcGVuZChzLmRhdGEoKSwgcy5zaXplKCkp
OwogfQogaW5saW5lIHZvaWQgQWJzbEZvcm1hdEZsdXNoKHN0ZDo6b3N0cmVhbSogb3V0LCBzdHJp
bmdfdmlldyBzKSB7Ci0gIG91dC0+d3JpdGUocy5iZWdpbigpLCBzLnNpemUoKSk7CisgIG91dC0+
d3JpdGUocy5kYXRhKCksIHMuc2l6ZSgpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEFic2xDb3Jk
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50
ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXIuY2MKaW5kZXggMTAxMTRmNDg5YzAxODlmMDU4NjE0OTY4
NTM3OGUxM2E4ZGY5NDY4NC4uNWUzZDBkMDU0N2QxZGJhZDQ3YjNhNTAzYjY4NTA3NjM3NDM3MzMy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9ybWF0L3BhcnNlci5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmNjCkBAIC04
MSwxOSArODEsMjcgQEAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmludDhfdCBrSWRzW10gPSB7CiB0
ZW1wbGF0ZSA8Ym9vbCBpc19wb3NpdGlvbmFsPgogYm9vbCBDb25zdW1lQ29udmVyc2lvbihzdHJp
bmdfdmlldyAqc3JjLCBVbmJvdW5kQ29udmVyc2lvbiAqY29udiwKICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ICpuZXh0X2FyZykgewotICBjb25zdCBjaGFyICpwb3MgPSBzcmMtPmJlZ2luKCk7
Ci0gIGNvbnN0IGNoYXIgKmNvbnN0IGVuZCA9IHNyYy0+ZW5kKCk7CisgIGNvbnN0IGNoYXIgKnBv
cyA9IHNyYy0+ZGF0YSgpOworICBjb25zdCBjaGFyICpjb25zdCBlbmQgPSBwb3MgKyBzcmMtPnNp
emUoKTsKICAgY2hhciBjOwotICAvLyBSZWFkIHRoZSBuZXh0IGNoYXIgaW50byBgY2AgYW5kIHVw
ZGF0ZSBgcG9zYC4gUmVhZHMgJ1wwJyBpZiBhdCBlbmQuCi0gIGNvbnN0IGF1dG8gZ2V0X2NoYXIg
PSBbJl0geyBjID0gcG9zID09IGVuZCA/ICdcMCcgOiAqcG9zKys7IH07CisgIC8vIFJlYWQgdGhl
IG5leHQgY2hhciBpbnRvIGBjYCBhbmQgdXBkYXRlIGBwb3NgLiBSZXR1cm5zIGZhbHNlIGlmIHRo
ZXJlIGFyZQorICAvLyBubyBtb3JlIGNoYXJzIHRvIHJlYWQuCisjZGVmaW5lIEFCU0xfRk9STUFU
X1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKEFCU0xfUFJFRElD
VF9GQUxTRShwb3MgPT0gZW5kKSkgcmV0dXJuIGZhbHNlOyBcCisgICAgYyA9ICpwb3MrKzsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gd2hpbGUgKDApCiAKICAg
Y29uc3QgYXV0byBwYXJzZV9kaWdpdHMgPSBbJl0gewogICAgIGludCBkaWdpdHMgPSBjIC0gJzAn
OwotICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIG92ZXJmbG93IGBkaWdpdHNgIHNvIHdlIGNvbnN1
bWUgYXQgbW9zdCBkaWdpdHMxMC0xCisgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gb3ZlcmZsb3cg
YGRpZ2l0c2Agc28gd2UgY29uc3VtZSBhdCBtb3N0IGRpZ2l0czEwCiAgICAgLy8gZGlnaXRzLiBJ
ZiB0aGVyZSBhcmUgbW9yZSBkaWdpdHMgdGhlIHBhcnNpbmcgd2lsbCBmYWlsIGxhdGVyIG9uIHdo
ZW4gdGhlCiAgICAgLy8gZGlnaXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgY2hhcmFjdGVy
cy4KLSAgICBpbnQgbnVtX2RpZ2l0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6ZGlnaXRz
MTAgLSAyOwotICAgIGZvciAoZ2V0X2NoYXIoKTsgbnVtX2RpZ2l0cyAmJiBzdGQ6OmlzZGlnaXQo
Yyk7IGdldF9jaGFyKCkpIHsKKyAgICBpbnQgbnVtX2RpZ2l0cyA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6ZGlnaXRzMTA7CisgICAgZm9yICg7OykgeworICAgICAgaWYgKEFCU0xfUFJFRElD
VF9GQUxTRShwb3MgPT0gZW5kIHx8ICFudW1fZGlnaXRzKSkgYnJlYWs7CisgICAgICBjID0gKnBv
cysrOworICAgICAgaWYgKCFzdGQ6OmlzZGlnaXQoYykpIGJyZWFrOwogICAgICAgLS1udW1fZGln
aXRzOwogICAgICAgZGlnaXRzID0gMTAgKiBkaWdpdHMgKyBjIC0gJzAnOwogICAgIH0KQEAgLTEw
MSwxNCArMTA5LDE0IEBAIGJvb2wgQ29uc3VtZUNvbnZlcnNpb24oc3RyaW5nX3ZpZXcgKnNyYywg
VW5ib3VuZENvbnZlcnNpb24gKmNvbnYsCiAgIH07CiAKICAgaWYgKGlzX3Bvc2l0aW9uYWwpIHsK
LSAgICBnZXRfY2hhcigpOwotICAgIGlmIChjIDwgJzEnIHx8IGMgPiAnOScpIHJldHVybiBmYWxz
ZTsKKyAgICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKKyAgICBpZiAo
QUJTTF9QUkVESUNUX0ZBTFNFKGMgPCAnMScgfHwgYyA+ICc5JykpIHJldHVybiBmYWxzZTsKICAg
ICBjb252LT5hcmdfcG9zaXRpb24gPSBwYXJzZV9kaWdpdHMoKTsKICAgICBhc3NlcnQoY29udi0+
YXJnX3Bvc2l0aW9uID4gMCk7Ci0gICAgaWYgKGMgIT0gJyQnKSByZXR1cm4gZmFsc2U7CisgICAg
aWYgKEFCU0xfUFJFRElDVF9GQUxTRShjICE9ICckJykpIHJldHVybiBmYWxzZTsKICAgfQogCi0g
IGdldF9jaGFyKCk7CisgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwog
CiAgIC8vIFdlIHNob3VsZCBzdGFydCB3aXRoIHRoZSBiYXNpYyBmbGFnIG9uLgogICBhc3NlcnQo
Y29udi0+ZmxhZ3MuYmFzaWMpOwpAQCAtMTE5LDMyICsxMjcsMzkgQEAgYm9vbCBDb25zdW1lQ29u
dmVyc2lvbihzdHJpbmdfdmlldyAqc3JjLCBVbmJvdW5kQ29udmVyc2lvbiAqY29udiwKICAgaWYg
KGMgPCAnQScpIHsKICAgICBjb252LT5mbGFncy5iYXNpYyA9IGZhbHNlOwogCi0gICAgZm9yICg7
IGMgPD0gJzAnOyBnZXRfY2hhcigpKSB7CisgICAgZm9yICg7IGMgPD0gJzAnOykgeworICAgICAg
Ly8gRklYTUU6IFdlIG1pZ2h0IGJlIGFibGUgdG8gc3BlZWQgdGhpcyB1cCByZXVzaW5nIHRoZSBr
SWRzIGxvb2t1cCB0YWJsZQorICAgICAgLy8gZnJvbSBhYm92ZS4KKyAgICAgIC8vIEl0IG1pZ2h0
IHJlcXVpcmUgY2hhbmdpbmcgRmxhZ3MgdG8gYmUgYSBwbGFpbiBpbnRlZ2VyIHdoZXJlIHdlIGNh
biB8PSBhCisgICAgICAvLyB2YWx1ZS4KICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICBjYXNl
ICctJzoKICAgICAgICAgICBjb252LT5mbGFncy5sZWZ0ID0gdHJ1ZTsKLSAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnKyc6CiAgICAgICAgICAgY29u
di0+ZmxhZ3Muc2hvd19wb3MgPSB0cnVlOwotICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlICcgJzoKICAgICAgICAgICBjb252LT5mbGFncy5zaWduX2Nv
bCA9IHRydWU7Ci0gICAgICAgICAgY29udGludWU7CisgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgJyMnOgogICAgICAgICAgIGNvbnYtPmZsYWdzLmFsdCA9IHRydWU7Ci0gICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJzAnOgogICAgICAgICAg
IGNvbnYtPmZsYWdzLnplcm8gPSB0cnVlOwotICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIGdvdG8gZmxhZ3NfZG9uZTsKICAg
ICAgIH0KLSAgICAgIGJyZWFrOworICAgICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dF
VF9DSEFSKCk7CiAgICAgfQorZmxhZ3NfZG9uZToKIAogICAgIGlmIChjIDw9ICc5JykgewogICAg
ICAgaWYgKGMgPj0gJzAnKSB7CiAgICAgICAgIGludCBtYXliZV93aWR0aCA9IHBhcnNlX2RpZ2l0
cygpOwogICAgICAgICBpZiAoIWlzX3Bvc2l0aW9uYWwgJiYgYyA9PSAnJCcpIHsKLSAgICAgICAg
ICBpZiAoKm5leHRfYXJnICE9IDApIHJldHVybiBmYWxzZTsKKyAgICAgICAgICBpZiAoQUJTTF9Q
UkVESUNUX0ZBTFNFKCpuZXh0X2FyZyAhPSAwKSkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgIC8v
IFBvc2l0aW9uYWwgY29udmVyc2lvbi4KICAgICAgICAgICAqbmV4dF9hcmcgPSAtMTsKICAgICAg
ICAgICBjb252LT5mbGFncyA9IEZsYWdzKCk7CkBAIC0xNTMsMTIgKzE2OCwxMiBAQCBib29sIENv
bnN1bWVDb252ZXJzaW9uKHN0cmluZ192aWV3ICpzcmMsIFVuYm91bmRDb252ZXJzaW9uICpjb252
LAogICAgICAgICB9CiAgICAgICAgIGNvbnYtPndpZHRoLnNldF92YWx1ZShtYXliZV93aWR0aCk7
CiAgICAgICB9IGVsc2UgaWYgKGMgPT0gJyonKSB7Ci0gICAgICAgIGdldF9jaGFyKCk7CisgICAg
ICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwogICAgICAgICBpZiAo
aXNfcG9zaXRpb25hbCkgewotICAgICAgICAgIGlmIChjIDwgJzEnIHx8IGMgPiAnOScpIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKGMgPCAnMScgfHwgYyA+
ICc5JykpIHJldHVybiBmYWxzZTsKICAgICAgICAgICBjb252LT53aWR0aC5zZXRfZnJvbV9hcmco
cGFyc2VfZGlnaXRzKCkpOwotICAgICAgICAgIGlmIChjICE9ICckJykgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgIGdldF9jaGFyKCk7CisgICAgICAgICAgaWYgKEFCU0xfUFJFRElDVF9GQUxTRShj
ICE9ICckJykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5U
RVJOQUxfR0VUX0NIQVIoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICBjb252LT53aWR0
aC5zZXRfZnJvbV9hcmcoKysqbmV4dF9hcmcpOwogICAgICAgICB9CkBAIC0xNjYsMTYgKzE4MSwx
NiBAQCBib29sIENvbnN1bWVDb252ZXJzaW9uKHN0cmluZ192aWV3ICpzcmMsIFVuYm91bmRDb252
ZXJzaW9uICpjb252LAogICAgIH0KIAogICAgIGlmIChjID09ICcuJykgewotICAgICAgZ2V0X2No
YXIoKTsKKyAgICAgIEFCU0xfRk9STUFUX1BBUlNFUl9JTlRFUk5BTF9HRVRfQ0hBUigpOwogICAg
ICAgaWYgKHN0ZDo6aXNkaWdpdChjKSkgewogICAgICAgICBjb252LT5wcmVjaXNpb24uc2V0X3Zh
bHVlKHBhcnNlX2RpZ2l0cygpKTsKICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnKicpIHsKLSAgICAg
ICAgZ2V0X2NoYXIoKTsKKyAgICAgICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9D
SEFSKCk7CiAgICAgICAgIGlmIChpc19wb3NpdGlvbmFsKSB7Ci0gICAgICAgICAgaWYgKGMgPCAn
MScgfHwgYyA+ICc5JykgcmV0dXJuIGZhbHNlOworICAgICAgICAgIGlmIChBQlNMX1BSRURJQ1Rf
RkFMU0UoYyA8ICcxJyB8fCBjID4gJzknKSkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgIGNvbnYt
PnByZWNpc2lvbi5zZXRfZnJvbV9hcmcocGFyc2VfZGlnaXRzKCkpOwogICAgICAgICAgIGlmIChj
ICE9ICckJykgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIGdldF9jaGFyKCk7CisgICAgICAgICAg
QUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVSTkFMX0dFVF9DSEFSKCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgY29udi0+cHJlY2lzaW9uLnNldF9mcm9tX2FyZygrKypuZXh0X2FyZyk7CiAg
ICAgICAgIH0KQEAgLTE4OCwyMyArMjAzLDIzIEBAIGJvb2wgQ29uc3VtZUNvbnZlcnNpb24oc3Ry
aW5nX3ZpZXcgKnNyYywgVW5ib3VuZENvbnZlcnNpb24gKmNvbnYsCiAgIHN0ZDo6aW50OF90IGlk
ID0ga0lkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV07CiAKICAgaWYgKGlkIDwgMCkg
ewotICAgIGlmIChpZCA9PSBub25lKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKEFCU0xfUFJFRElD
VF9GQUxTRShpZCA9PSBub25lKSkgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSXQgaXMgYSBsZW5n
dGggbW9kaWZpZXIuCiAgICAgdXNpbmcgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6TGVuZ3RoTW9kOwog
ICAgIExlbmd0aE1vZCBsZW5ndGhfbW9kID0gTGVuZ3RoTW9kOjpGcm9tSWQoc3RhdGljX2Nhc3Q8
TE0+KH5pZCkpOwotICAgIGdldF9jaGFyKCk7CisgICAgQUJTTF9GT1JNQVRfUEFSU0VSX0lOVEVS
TkFMX0dFVF9DSEFSKCk7CiAgICAgaWYgKGMgPT0gJ2gnICYmIGxlbmd0aF9tb2QuaWQoKSA9PSBM
ZW5ndGhNb2Q6OmgpIHsKICAgICAgIGNvbnYtPmxlbmd0aF9tb2QgPSBMZW5ndGhNb2Q6OkZyb21J
ZChMZW5ndGhNb2Q6OmhoKTsKLSAgICAgIGdldF9jaGFyKCk7CisgICAgICBBQlNMX0ZPUk1BVF9Q
QVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICB9IGVsc2UgaWYgKGMgPT0gJ2wnICYmIGxl
bmd0aF9tb2QuaWQoKSA9PSBMZW5ndGhNb2Q6OmwpIHsKICAgICAgIGNvbnYtPmxlbmd0aF9tb2Qg
PSBMZW5ndGhNb2Q6OkZyb21JZChMZW5ndGhNb2Q6OmxsKTsKLSAgICAgIGdldF9jaGFyKCk7Cisg
ICAgICBBQlNMX0ZPUk1BVF9QQVJTRVJfSU5URVJOQUxfR0VUX0NIQVIoKTsKICAgICB9IGVsc2Ug
ewogICAgICAgY29udi0+bGVuZ3RoX21vZCA9IGxlbmd0aF9tb2Q7CiAgICAgfQogICAgIGlkID0g
a0lkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV07Ci0gICAgaWYgKGlkIDwgMCkgcmV0
dXJuIGZhbHNlOworICAgIGlmIChBQlNMX1BSRURJQ1RfRkFMU0UoaWQgPCAwKSkgcmV0dXJuIGZh
bHNlOwogICB9CiAKICAgYXNzZXJ0KENoZWNrRmFzdFBhdGhTZXR0aW5nKCpjb252KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyLmgKaW5kZXggNWJlYmM5NTU0MGU2
YzI4ZDM5ZDA4NDczMDUzNjY3NDJjZWQ5ZWRmYS4uMTAyMmYwNjI5N2E3NGE1ODRlODJlNDFjYTRi
ODI0ZmJiZjYzMzkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfZm9y
bWF0L3BhcnNlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJz
ZXIuaApAQCAtNzUsMTQgKzc1LDE0IEBAIHN0cnVjdCBVbmJvdW5kQ29udmVyc2lvbiB7CiBib29s
IENvbnN1bWVVbmJvdW5kQ29udmVyc2lvbihzdHJpbmdfdmlldyogc3JjLCBVbmJvdW5kQ29udmVy
c2lvbiogY29udiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbmV4dF9hcmcp
OwogCi0vLyBQYXJzZSB0aGUgZm9ybWF0IHN0ZDo6c3RyaW5nIHByb3ZpZGVkIGluICdzcmMnIGFu
ZCBwYXNzIHRoZSBpZGVudGlmaWVkIGl0ZW1zIGludG8KKy8vIFBhcnNlIHRoZSBmb3JtYXQgc3Ry
aW5nIHByb3ZpZGVkIGluICdzcmMnIGFuZCBwYXNzIHRoZSBpZGVudGlmaWVkIGl0ZW1zIGludG8K
IC8vICdjb25zdW1lcicuCiAvLyBUZXh0IHJ1bnMgd2lsbCBiZSBwYXNzZWQgYnkgY2FsbGluZwog
Ly8gICBDb25zdW1lcjo6QXBwZW5kKHN0cmluZ192aWV3KTsKIC8vIENvbnZlcnNpb25JdGVtcyB3
aWxsIGJlIHBhc3NlZCBieSBjYWxsaW5nCiAvLyAgIENvbnN1bWVyOjpDb252ZXJ0T25lKFVuYm91
bmRDb252ZXJzaW9uLCBzdHJpbmdfdmlldyk7CiAvLyBJbiB0aGUgY2FzZSBvZiBDb252ZXJ0T25l
LCB0aGUgc3RyaW5nX3ZpZXcgdGhhdCBpcyBwYXNzZWQgaXMgdGhlCi0vLyBwb3J0aW9uIG9mIHRo
ZSBmb3JtYXQgc3RkOjpzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0aGUgY29udmVyc2lvbiwgbm90
IGluY2x1ZGluZworLy8gcG9ydGlvbiBvZiB0aGUgZm9ybWF0IHN0cmluZyBjb3JyZXNwb25kaW5n
IHRvIHRoZSBjb252ZXJzaW9uLCBub3QgaW5jbHVkaW5nCiAvLyB0aGUgbGVhZGluZyAlLiBPbiBz
dWNjZXNzLCBpdCByZXR1cm5zIHRydWUuIE9uIGZhaWx1cmUsIGl0IHN0b3BzIGFuZCByZXR1cm5z
CiAvLyBmYWxzZS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDb25zdW1lcj4KQEAgLTkwLDcgKzkwLDcg
QEAgYm9vbCBQYXJzZUZvcm1hdFN0cmluZyhzdHJpbmdfdmlldyBzcmMsIENvbnN1bWVyIGNvbnN1
bWVyKSB7CiAgIGludCBuZXh0X2FyZyA9IDA7CiAgIHdoaWxlICghc3JjLmVtcHR5KCkpIHsKICAg
ICBjb25zdCBjaGFyKiBwZXJjZW50ID0KLSAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KG1lbWNocihzcmMuYmVnaW4oKSwgJyUnLCBzcmMuc2l6ZSgpKSk7CisgICAgICAgIHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihtZW1jaHIoc3JjLmRhdGEoKSwgJyUnLCBzcmMuc2l6ZSgpKSk7CiAg
ICAgaWYgKCFwZXJjZW50KSB7CiAgICAgICAvLyBXZSBmb3VuZCB0aGUgbGFzdCBzdWJzdHJpbmcu
CiAgICAgICByZXR1cm4gY29uc3VtZXIuQXBwZW5kKHNyYyk7CkBAIC05OCw3ICs5OCw3IEBAIGJv
b2wgUGFyc2VGb3JtYXRTdHJpbmcoc3RyaW5nX3ZpZXcgc3JjLCBDb25zdW1lciBjb25zdW1lcikg
ewogICAgIC8vIFdlIGZvdW5kIGEgcGVyY2VudCwgc28gcHVzaCB0aGUgdGV4dCBydW4gdGhlbiBw
cm9jZXNzIHRoZSBwZXJjZW50LgogICAgIHNpemVfdCBwZXJjZW50X2xvYyA9IHBlcmNlbnQgLSBz
cmMuZGF0YSgpOwogICAgIGlmICghY29uc3VtZXIuQXBwZW5kKHN0cmluZ192aWV3KHNyYy5kYXRh
KCksIHBlcmNlbnRfbG9jKSkpIHJldHVybiBmYWxzZTsKLSAgICBpZiAocGVyY2VudCArIDEgPj0g
c3JjLmVuZCgpKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBlcmNlbnQgKyAxID49IHNyYy5kYXRh
KCkgKyBzcmMuc2l6ZSgpKSByZXR1cm4gZmFsc2U7CiAKICAgICBVbmJvdW5kQ29udmVyc2lvbiBj
b252OwogCkBAIC0xNzgsNyArMTc4LDggQEAgY2xhc3MgUGFyc2VkRm9ybWF0QmFzZSB7CiAgICAg
Y29uc3QgY2hhciogY29uc3QgYmFzZSA9IGRhdGFfLmdldCgpOwogICAgIHN0cmluZ192aWV3IHRl
eHQoYmFzZSwgMCk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXNfKSB7Ci0gICAg
ICB0ZXh0ID0gc3RyaW5nX3ZpZXcodGV4dC5lbmQoKSwgKGJhc2UgKyBpdGVtLnRleHRfZW5kKSAt
IHRleHQuZW5kKCkpOworICAgICAgY29uc3QgY2hhciogY29uc3QgZW5kID0gdGV4dC5kYXRhKCkg
KyB0ZXh0LnNpemUoKTsKKyAgICAgIHRleHQgPSBzdHJpbmdfdmlldyhlbmQsIChiYXNlICsgaXRl
bS50ZXh0X2VuZCkgLSBlbmQpOwogICAgICAgaWYgKGl0ZW0uaXNfY29udmVyc2lvbikgewogICAg
ICAgICBpZiAoIWNvbnN1bWVyLkNvbnZlcnRPbmUoaXRlbS5jb252LCB0ZXh0KSkgcmV0dXJuIGZh
bHNlOwogICAgICAgfSBlbHNlIHsKQEAgLTIzNyw3ICsyMzgsNyBAQCBjbGFzcyBQYXJzZWRGb3Jt
YXRCYXNlIHsKIC8vIFRoaXMgY2xhc3MgYWxzbyBzdXBwb3J0cyBydW50aW1lIGZvcm1hdCBjaGVj
a2luZyB3aXRoIHRoZSA6Ok5ldygpIGFuZAogLy8gOjpOZXdBbGxvd0lnbm9yZWQoKSBmYWN0b3J5
IGZ1bmN0aW9ucy4KIC8vIFRoaXMgaXMgdGhlIG9ubHkgQVBJIHRoYXQgYWxsb3dzIHRoZSB1c2Vy
IHRvIHBhc3MgYSBydW50aW1lIHNwZWNpZmllZCBmb3JtYXQKLS8vIHN0ZDo6c3RyaW5nLiBUaGVz
ZSBmYWN0b3J5IGZ1bmN0aW9ucyB3aWxsIHJldHVybiBOVUxMIGlmIHRoZSBmb3JtYXQgZG9lcyBu
b3QgbWF0Y2gKKy8vIHN0cmluZy4gVGhlc2UgZmFjdG9yeSBmdW5jdGlvbnMgd2lsbCByZXR1cm4g
TlVMTCBpZiB0aGUgZm9ybWF0IGRvZXMgbm90IG1hdGNoCiAvLyB0aGUgY29udmVyc2lvbnMgcmVx
dWVzdGVkIGJ5IHRoZSB1c2VyLgogdGVtcGxhdGUgPHN0cl9mb3JtYXRfaW50ZXJuYWw6OkNvbnYu
Li4gQz4KIGNsYXNzIEV4dGVuZGVkUGFyc2VkRm9ybWF0IDogcHVibGljIHN0cl9mb3JtYXRfaW50
ZXJuYWw6OlBhcnNlZEZvcm1hdEJhc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRl
cm5hbC9zdHJfZm9ybWF0L3BhcnNlcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9z
dHJfZm9ybWF0L3BhcnNlcl90ZXN0LmNjCmluZGV4IGU2OTgwMjBiMWFiYTM4NDUyYzdiODg5OWZk
M2VkMjc2OWIwYzNlNTEuLmFlNDAyMDMxOTFiOTdmOWMzYzRmMGM0YmUyODFhMjI5MjFkYjZlNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2Zvcm1hdC9wYXJzZXJfdGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9mb3JtYXQvcGFyc2VyX3Rlc3Qu
Y2MKQEAgLTY2LDEwICs2NiwxMCBAQCBjbGFzcyBDb25zdW1lVW5ib3VuZENvbnZlcnNpb25UZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgIHR5cGVkZWYgVW5ib3VuZENvbnZlcnNpb24g
UHJvcHM7CiAgIHN0cmluZ192aWV3IENvbnN1bWUoc3RyaW5nX3ZpZXcqIHNyYykgewogICAgIGlu
dCBuZXh0ID0gMDsKLSAgICBjb25zdCBjaGFyKiBwcmV2X2JlZ2luID0gc3JjLT5iZWdpbigpOwor
ICAgIGNvbnN0IGNoYXIqIHByZXZfYmVnaW4gPSBzcmMtPmRhdGEoKTsKICAgICBvID0gVW5ib3Vu
ZENvbnZlcnNpb24oKTsgIC8vIHJlZnJlc2gKICAgICBDb25zdW1lVW5ib3VuZENvbnZlcnNpb24o
c3JjLCAmbywgJm5leHQpOwotICAgIHJldHVybiB7cHJldl9iZWdpbiwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihzcmMtPmJlZ2luKCkgLSBwcmV2X2JlZ2luKX07CisgICAgcmV0dXJuIHtwcmV2X2JlZ2lu
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyYy0+ZGF0YSgpIC0gcHJldl9iZWdpbil9OwogICB9CiAK
ICAgYm9vbCBSdW4oY29uc3QgY2hhciAqZm10LCBib29sIGZvcmNlX3Bvc2l0aW9uYWwgPSBmYWxz
ZSkgewpAQCAtODQsOSArODQsOSBAQCBjbGFzcyBDb25zdW1lVW5ib3VuZENvbnZlcnNpb25UZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBURVNUX0YoQ29uc3VtZVVuYm91bmRDb252ZXJz
aW9uVGVzdCwgQ29uc3VtZVNwZWNpZmljYXRpb24pIHsKICAgc3RydWN0IEV4cGVjdGF0aW9uIHsK
ICAgICBpbnQgbGluZTsKLSAgICBjb25zdCBjaGFyICpzcmM7Ci0gICAgY29uc3QgY2hhciAqb3V0
OwotICAgIGNvbnN0IGNoYXIgKnNyY19wb3N0OworICAgIHN0cmluZ192aWV3IHNyYzsKKyAgICBz
dHJpbmdfdmlldyBvdXQ7CisgICAgc3RyaW5nX3ZpZXcgc3JjX3Bvc3Q7CiAgIH07CiAgIGNvbnN0
IEV4cGVjdGF0aW9uIGtFeHBlY3RbXSA9IHsKICAgICB7X19MSU5FX18sICIiLCAgICAgIiIsICAg
ICAiIiAgfSwKQEAgLTIzNiw2ICsyMzYsMTYgQEAgVEVTVF9GKENvbnN1bWVVbmJvdW5kQ29udmVy
c2lvblRlc3QsIFdpZHRoQW5kUHJlY2lzaW9uKSB7CiAgIEVYUEVDVF9FUSg5LCBvLnByZWNpc2lv
bi5nZXRfZnJvbV9hcmcoKSk7CiAKICAgRVhQRUNUX0ZBTFNFKFJ1bigiLiowJGQiKSkgPDwgIm5v
IGFyZyAwIjsKKworICAvLyBMYXJnZSB2YWx1ZXMKKyAgRVhQRUNUX1RSVUUoUnVuKCI5OTk5OTk5
OTkuOTk5OTk5OTk5ZCIpKTsKKyAgRVhQRUNUX0ZBTFNFKG8ud2lkdGguaXNfZnJvbV9hcmcoKSk7
CisgIEVYUEVDVF9FUSg5OTk5OTk5OTksIG8ud2lkdGgudmFsdWUoKSk7CisgIEVYUEVDVF9GQUxT
RShvLnByZWNpc2lvbi5pc19mcm9tX2FyZygpKTsKKyAgRVhQRUNUX0VRKDk5OTk5OTk5OSwgby5w
cmVjaXNpb24udmFsdWUoKSk7CisKKyAgRVhQRUNUX0ZBTFNFKFJ1bigiMTAwMDAwMDAwMC45OTk5
OTk5OTlkIikpOworICBFWFBFQ1RfRkFMU0UoUnVuKCI5OTk5OTk5OTkuMTAwMDAwMDAwMGQiKSk7
CiB9CiAKIFRFU1RfRihDb25zdW1lVW5ib3VuZENvbnZlcnNpb25UZXN0LCBGbGFncykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfam9pbl9pbnRlcm5hbC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9pbnRlcm5hbC9zdHJfam9pbl9pbnRlcm5hbC5oCmluZGV4IGE3MzQ3NThjMjFl
ZTMwOTUxZjc3YTJjNjljOTZlYzc1ZDcxZWU5NmEuLjAwNThmYzhhYTRkNWE4MTIxMGE5OGYyZDFi
YjExYmMwYzY1YTk2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX2pv
aW5faW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9qb2luX2ludGVy
bmFsLmgKQEAgLTE4OSw3ICsxODksNyBAQCBzdHJ1Y3QgRGVmYXVsdEZvcm1hdHRlcjxzdGQ6OnVu
aXF1ZV9wdHI8VmFsdWVUeXBlPj4KIC8vCiAKIC8vIFRoZSBtYWluIGpvaW5pbmcgYWxnb3JpdGht
LiBUaGlzIHNpbXBseSBqb2lucyB0aGUgZWxlbWVudHMgaW4gdGhlIGdpdmVuCi0vLyBpdGVyYXRv
ciByYW5nZSwgZWFjaCBzZXBhcmF0ZWQgYnkgdGhlIGdpdmVuIHNlcGFyYXRvciwgaW50byBhbiBv
dXRwdXQgc3RkOjpzdHJpbmcsCisvLyBpdGVyYXRvciByYW5nZSwgZWFjaCBzZXBhcmF0ZWQgYnkg
dGhlIGdpdmVuIHNlcGFyYXRvciwgaW50byBhbiBvdXRwdXQgc3RyaW5nLAogLy8gYW5kIGZvcm1h
dHMgZWFjaCBlbGVtZW50IHVzaW5nIHRoZSBwcm92aWRlZCBGb3JtYXR0ZXIgb2JqZWN0LgogdGVt
cGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBGb3JtYXR0ZXI+CiBzdGQ6OnN0cmlu
ZyBKb2luQWxnb3JpdGhtKEl0ZXJhdG9yIHN0YXJ0LCBJdGVyYXRvciBlbmQsIGFic2w6OnN0cmlu
Z192aWV3IHMsCkBAIC0yMDUsMjAgKzIwNSwyMCBAQCBzdGQ6OnN0cmluZyBKb2luQWxnb3JpdGht
KEl0ZXJhdG9yIHN0YXJ0LCBJdGVyYXRvciBlbmQsIGFic2w6OnN0cmluZ192aWV3IHMsCiB9CiAK
IC8vIEEgam9pbmluZyBhbGdvcml0aG0gdGhhdCdzIG9wdGltaXplZCBmb3IgYSBmb3J3YXJkIGl0
ZXJhdG9yIHJhbmdlIG9mCi0vLyBzdGQ6OnN0cmluZy1saWtlIG9iamVjdHMgdGhhdCBkbyBub3Qg
bmVlZCBhbnkgYWRkaXRpb25hbCBmb3JtYXR0aW5nLiBUaGlzIGlzIHRvCi0vLyBvcHRpbWl6ZSB0
aGUgY29tbW9uIGNhc2Ugb2Ygam9pbmluZywgc2F5LCBhIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiBvciBhCisvLyBzdHJpbmctbGlrZSBvYmplY3RzIHRoYXQgZG8gbm90IG5lZWQgYW55IGFkZGl0
aW9uYWwgZm9ybWF0dGluZy4gVGhpcyBpcyB0bworLy8gb3B0aW1pemUgdGhlIGNvbW1vbiBjYXNl
IG9mIGpvaW5pbmcsIHNheSwgYSBzdGQ6OnZlY3RvcjxzdHJpbmc+IG9yIGEKIC8vIHN0ZDo6dmVj
dG9yPGFic2w6OnN0cmluZ192aWV3Pi4KIC8vCiAvLyBUaGlzIGlzIGFuIG92ZXJsb2FkIG9mIHRo
ZSBwcmV2aW91cyBKb2luQWxnb3JpdGhtKCkgZnVuY3Rpb24uIEhlcmUgdGhlCiAvLyBGb3JtYXR0
ZXIgYXJndW1lbnQgaXMgb2YgdHlwZSBOb0Zvcm1hdHRlci4gU2luY2UgTm9Gb3JtYXR0ZXIgaXMg
YW4gaW50ZXJuYWwKIC8vIHR5cGUsIHRoaXMgb3ZlcmxvYWQgaXMgb25seSBpbnZva2VkIHdoZW4g
c3RyaW5nczo6Sm9pbigpIGlzIGNhbGxlZCB3aXRoIGEKLS8vIHJhbmdlIG9mIHN0ZDo6c3RyaW5n
LWxpa2Ugb2JqZWN0cyAoZS5nLiwgc3RkOjpzdHJpbmcsIGFic2w6OnN0cmluZ192aWV3KSwgYW5k
IGFuCisvLyByYW5nZSBvZiBzdHJpbmctbGlrZSBvYmplY3RzIChlLmcuLCBzdHJpbmcsIGFic2w6
OnN0cmluZ192aWV3KSwgYW5kIGFuCiAvLyBleHBsaWNpdCBGb3JtYXR0ZXIgYXJndW1lbnQgd2Fz
IE5PVCBzcGVjaWZpZWQuCiAvLwogLy8gVGhlIG9wdGltaXphdGlvbiBpcyB0aGF0IHRoZSBuZWVk
ZWQgc3BhY2Ugd2lsbCBiZSByZXNlcnZlZCBpbiB0aGUgb3V0cHV0Ci0vLyBzdGQ6OnN0cmluZyB0
byBhdm9pZCB0aGUgbmVlZCB0byByZXNpemUgd2hpbGUgYXBwZW5kaW5nLiBUbyBkbyB0aGlzLCB0
aGUgaXRlcmF0b3IKKy8vIHN0cmluZyB0byBhdm9pZCB0aGUgbmVlZCB0byByZXNpemUgd2hpbGUg
YXBwZW5kaW5nLiBUbyBkbyB0aGlzLCB0aGUgaXRlcmF0b3IKIC8vIHJhbmdlIHdpbGwgYmUgdHJh
dmVyc2VkIHR3aWNlOiBvbmNlIHRvIGNhbGN1bGF0ZSB0aGUgdG90YWwgbmVlZGVkIHNpemUsIGFu
ZAotLy8gdGhlbiBhZ2FpbiB0byBjb3B5IHRoZSBlbGVtZW50cyBhbmQgZGVsaW1pdGVycyB0byB0
aGUgb3V0cHV0IHN0ZDo6c3RyaW5nLgorLy8gdGhlbiBhZ2FpbiB0byBjb3B5IHRoZSBlbGVtZW50
cyBhbmQgZGVsaW1pdGVycyB0byB0aGUgb3V0cHV0IHN0cmluZy4KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBJdGVyYXRvciwKICAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfY29udmVydGlibGU8CiAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6aXRlcmF0
b3JfdHJhaXRzPEl0ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL2ludGVybmFsL3N0cl9zcGxpdF9pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9p
bnRlcm5hbC9zdHJfc3BsaXRfaW50ZXJuYWwuaAppbmRleCA5Y2YwODMzZjQ5MDI4YWIwMzljN2M0
MjI1MDRhOTk2ZDk5ZTk0M2RjLi44MWU4ZDU1NTQ0NjgwZDY3MWU1NmViMDI1NDk5NWI0MmJkNTQ4
ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL2ludGVybmFsL3N0cl9zcGxpdF9pbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvaW50ZXJuYWwvc3RyX3NwbGl0X2ludGVybmFsLmgKQEAg
LTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIHN0cmluZ3NfaW50ZXJuYWwgewogCiAvLyBUaGlzIGNs
YXNzIGlzIGltcGxpY2l0bHkgY29uc3RydWN0aWJsZSBmcm9tIGV2ZXJ5dGhpbmcgdGhhdCBhYnNs
OjpzdHJpbmdfdmlldwogLy8gaXMgaW1wbGljaXRseSBjb25zdHJ1Y3RpYmxlIGZyb20uIElmIGl0
J3MgY29uc3RydWN0ZWQgZnJvbSBhIHRlbXBvcmFyeQotLy8gc3RkOjpzdHJpbmcsIHRoZSBkYXRh
IGlzIG1vdmVkIGludG8gYSBkYXRhIG1lbWJlciBzbyBpdHMgbGlmZXRpbWUgbWF0Y2hlcyB0aGF0
IG9mCisvLyBzdHJpbmcsIHRoZSBkYXRhIGlzIG1vdmVkIGludG8gYSBkYXRhIG1lbWJlciBzbyBp
dHMgbGlmZXRpbWUgbWF0Y2hlcyB0aGF0IG9mCiAvLyB0aGUgQ29udmVydGlibGVUb1N0cmluZ1Zp
ZXcgaW5zdGFuY2UuCiBjbGFzcyBDb252ZXJ0aWJsZVRvU3RyaW5nVmlldyB7CiAgcHVibGljOgpA
QCAtMTAyLDcgKzEwMiw3IEBAIENvbnZlcnRpYmxlVG9TdHJpbmdWaWV3KHN0ZDo6c3RyaW5nJiYg
cykgIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0KQogICBhYnNsOjpzdHJpbmdfdmlldyB2YWx1
ZV87CiB9OwogCi0vLyBBbiBpdGVyYXRvciB0aGF0IGVudW1lcmF0ZXMgdGhlIHBhcnRzIG9mIGEg
c3RkOjpzdHJpbmcgZnJvbSBhIFNwbGl0dGVyLiBUaGUgdGV4dAorLy8gQW4gaXRlcmF0b3IgdGhh
dCBlbnVtZXJhdGVzIHRoZSBwYXJ0cyBvZiBhIHN0cmluZyBmcm9tIGEgU3BsaXR0ZXIuIFRoZSB0
ZXh0CiAvLyB0byBiZSBzcGxpdCwgdGhlIERlbGltaXRlciwgYW5kIHRoZSBQcmVkaWNhdGUgYXJl
IGFsbCB0YWtlbiBmcm9tIHRoZSBnaXZlbgogLy8gU3BsaXR0ZXIgb2JqZWN0LiBJdGVyYXRvcnMg
bWF5IG9ubHkgYmUgY29tcGFyZWQgaWYgdGhleSByZWZlciB0byB0aGUgc2FtZQogLy8gU3BsaXR0
ZXIgaW5zdGFuY2UuCkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3MgU3BsaXRJdGVyYXRvciB7CiAg
ICAgICB9CiAgICAgICBjb25zdCBhYnNsOjpzdHJpbmdfdmlldyB0ZXh0ID0gc3BsaXR0ZXJfLT50
ZXh0KCk7CiAgICAgICBjb25zdCBhYnNsOjpzdHJpbmdfdmlldyBkID0gZGVsaW1pdGVyXy5GaW5k
KHRleHQsIHBvc18pOwotICAgICAgaWYgKGQuZGF0YSgpID09IHRleHQuZW5kKCkpIHN0YXRlXyA9
IGtMYXN0U3RhdGU7CisgICAgICBpZiAoZC5kYXRhKCkgPT0gdGV4dC5kYXRhKCkgKyB0ZXh0LnNp
emUoKSkgc3RhdGVfID0ga0xhc3RTdGF0ZTsKICAgICAgIGN1cnJfID0gdGV4dC5zdWJzdHIocG9z
XywgZC5kYXRhKCkgLSAodGV4dC5kYXRhKCkgKyBwb3NfKSk7CiAgICAgICBwb3NfICs9IGN1cnJf
LnNpemUoKSArIGQuc2l6ZSgpOwogICAgIH0gd2hpbGUgKCFwcmVkaWNhdGVfKGN1cnJfKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaC5j
YwppbmRleCAyNWJkN2YwYjgyOGJmZGVjNzJjYTU4N2Q0ODcxYmZmYjY5Mjg2MmUzLi4zZDEwYzU3
Nzg0ZWJlOTI1NDk4NTViY2ZiMDc3Njc5OTk2NmYxNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL21hdGNoLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guY2MKQEAgLTI3LDYgKzI3LDEz
IEBAIGJvb2wgQ2FzZUVxdWFsKGFic2w6OnN0cmluZ192aWV3IHBpZWNlMSwgYWJzbDo6c3RyaW5n
X3ZpZXcgcGllY2UyKSB7CiB9CiB9ICAvLyBuYW1lc3BhY2UKIAorYm9vbCBFcXVhbHNJZ25vcmVD
YXNlKGFic2w6OnN0cmluZ192aWV3IHBpZWNlMSwgYWJzbDo6c3RyaW5nX3ZpZXcgcGllY2UyKSB7
CisgIHJldHVybiAocGllY2UxLnNpemUoKSA9PSBwaWVjZTIuc2l6ZSgpICYmCisgICAgICAgICAg
MCA9PSBhYnNsOjpzdHJpbmdzX2ludGVybmFsOjptZW1jYXNlY21wKHBpZWNlMS5kYXRhKCksIHBp
ZWNlMi5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBpZWNlMS5zaXplKCkpKTsKKyAgLy8gbWVtY2FzZWNtcCB1c2VzIGFic2w6OmFzY2lp
X3RvbG93ZXIoKS4KK30KKwogYm9vbCBTdGFydHNXaXRoSWdub3JlQ2FzZShhYnNsOjpzdHJpbmdf
dmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmlldyBwcmVmaXgpIHsKICAgcmV0dXJuICh0ZXh0LnNp
emUoKSA+PSBwcmVmaXguc2l6ZSgpKSAmJgogICAgICAgICAgQ2FzZUVxdWFsKHRleHQuc3Vic3Ry
KDAsIHByZWZpeC5zaXplKCkpLCBwcmVmaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9t
YXRjaC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRjaC5oCmluZGV4IDEwOGI2MDQ4YjA0OGVjMjY1ZjUx
OGFhM2E2ZWUwNGQxMDE5ZjM0MzYuLjZlOGVkMTBmYzUwZmViNmY3MTk2ZGI0MTljNGEzOGE0MjQw
YjRmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2guaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL21hdGNoLmgKQEAgLTE3LDcgKzE3LDcgQEAKIC8vIEZpbGU6IG1hdGNoLmgKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAvLwotLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHNpbXBsZSB1dGlsaXRp
ZXMgZm9yIHBlcmZvcm1pbmcgc3RkOjpzdHJpbmcgbWF0Y2hpbmcgY2hlY2tzLgorLy8gVGhpcyBm
aWxlIGNvbnRhaW5zIHNpbXBsZSB1dGlsaXRpZXMgZm9yIHBlcmZvcm1pbmcgc3RyaW5nIG1hdGNo
aW5nIGNoZWNrcy4KIC8vIEFsbCBvZiB0aGVzZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFyZSBzcGVj
aWZpZWQgYXMgYGFic2w6OnN0cmluZ192aWV3YCwKIC8vIG1lYW5pbmcgdGhhdCB0aGVzZSBmdW5j
dGlvbnMgY2FuIGFjY2VwdCBgc3RkOjpzdHJpbmdgLCBgYWJzbDo6c3RyaW5nX3ZpZXdgIG9yCiAv
LyBudWwtdGVybWluYXRlZCBDLXN0eWxlIHN0cmluZ3MuCkBAIC00MSwxNCArNDEsMTQgQEAgbmFt
ZXNwYWNlIGFic2wgewogCiAvLyBTdHJDb250YWlucygpCiAvLwotLy8gUmV0dXJucyB3aGV0aGVy
IGEgZ2l2ZW4gc3RkOjpzdHJpbmcgYGhheXN0YWNrYCBjb250YWlucyB0aGUgc3Vic3RyaW5nIGBu
ZWVkbGVgLgorLy8gUmV0dXJucyB3aGV0aGVyIGEgZ2l2ZW4gc3RyaW5nIGBoYXlzdGFja2AgY29u
dGFpbnMgdGhlIHN1YnN0cmluZyBgbmVlZGxlYC4KIGlubGluZSBib29sIFN0ckNvbnRhaW5zKGFi
c2w6OnN0cmluZ192aWV3IGhheXN0YWNrLCBhYnNsOjpzdHJpbmdfdmlldyBuZWVkbGUpIHsKICAg
cmV0dXJuIGhheXN0YWNrLmZpbmQobmVlZGxlLCAwKSAhPSBoYXlzdGFjay5ucG9zOwogfQogCiAv
LyBTdGFydHNXaXRoKCkKIC8vCi0vLyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZlbiBzdGQ6OnN0cmlu
ZyBgdGV4dGAgYmVnaW5zIHdpdGggYHByZWZpeGAuCisvLyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZl
biBzdHJpbmcgYHRleHRgIGJlZ2lucyB3aXRoIGBwcmVmaXhgLgogaW5saW5lIGJvb2wgU3RhcnRz
V2l0aChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmlldyBwcmVmaXgpIHsK
ICAgcmV0dXJuIHByZWZpeC5lbXB0eSgpIHx8CiAgICAgICAgICAodGV4dC5zaXplKCkgPj0gcHJl
Zml4LnNpemUoKSAmJgpAQCAtNTcsNyArNTcsNyBAQCBpbmxpbmUgYm9vbCBTdGFydHNXaXRoKGFi
c2w6OnN0cmluZ192aWV3IHRleHQsIGFic2w6OnN0cmluZ192aWV3IHByZWZpeCkgewogCiAvLyBF
bmRzV2l0aCgpCiAvLwotLy8gUmV0dXJucyB3aGV0aGVyIGEgZ2l2ZW4gc3RkOjpzdHJpbmcgYHRl
eHRgIGVuZHMgd2l0aCBgc3VmZml4YC4KKy8vIFJldHVybnMgd2hldGhlciBhIGdpdmVuIHN0cmlu
ZyBgdGV4dGAgZW5kcyB3aXRoIGBzdWZmaXhgLgogaW5saW5lIGJvb2wgRW5kc1dpdGgoYWJzbDo6
c3RyaW5nX3ZpZXcgdGV4dCwgYWJzbDo6c3RyaW5nX3ZpZXcgc3VmZml4KSB7CiAgIHJldHVybiBz
dWZmaXguZW1wdHkoKSB8fAogICAgICAgICAgKHRleHQuc2l6ZSgpID49IHN1ZmZpeC5zaXplKCkg
JiYKQEAgLTY2LDE2ICs2NiwyMiBAQCBpbmxpbmUgYm9vbCBFbmRzV2l0aChhYnNsOjpzdHJpbmdf
dmlldyB0ZXh0LCBhYnNsOjpzdHJpbmdfdmlldyBzdWZmaXgpIHsKICAgICAgICAgICk7CiB9CiAK
LS8vIFN0YXJ0c1dpdGhJZ25vcmVDYXNlKCkKKy8vIEVxdWFsc0lnbm9yZUNhc2UoKQogLy8KLS8v
IFJldHVybnMgd2hldGhlciBhIGdpdmVuIHN0ZDo6c3RyaW5nIGB0ZXh0YCBzdGFydHMgd2l0aCBg
c3RhcnRzX3dpdGhgLCBpZ25vcmluZworLy8gUmV0dXJucyB3aGV0aGVyIGdpdmVuIEFTQ0lJIHN0
cmluZ3MgYHBpZWNlMWAgYW5kIGBwaWVjZTJgIGFyZSBlcXVhbCwgaWdub3JpbmcKIC8vIGNhc2Ug
aW4gdGhlIGNvbXBhcmlzb24uCitib29sIEVxdWFsc0lnbm9yZUNhc2UoYWJzbDo6c3RyaW5nX3Zp
ZXcgcGllY2UxLCBhYnNsOjpzdHJpbmdfdmlldyBwaWVjZTIpOworCisvLyBTdGFydHNXaXRoSWdu
b3JlQ2FzZSgpCisvLworLy8gUmV0dXJucyB3aGV0aGVyIGEgZ2l2ZW4gQVNDSUkgc3RyaW5nIGB0
ZXh0YCBzdGFydHMgd2l0aCBgc3RhcnRzX3dpdGhgLAorLy8gaWdub3JpbmcgY2FzZSBpbiB0aGUg
Y29tcGFyaXNvbi4KIGJvb2wgU3RhcnRzV2l0aElnbm9yZUNhc2UoYWJzbDo6c3RyaW5nX3ZpZXcg
dGV4dCwgYWJzbDo6c3RyaW5nX3ZpZXcgcHJlZml4KTsKIAogLy8gRW5kc1dpdGhJZ25vcmVDYXNl
KCkKIC8vCi0vLyBSZXR1cm5zIHdoZXRoZXIgYSBnaXZlbiBzdGQ6OnN0cmluZyBgdGV4dGAgZW5k
cyB3aXRoIGBlbmRzX3dpdGhgLCBpZ25vcmluZyBjYXNlCi0vLyBpbiB0aGUgY29tcGFyaXNvbi4K
Ky8vIFJldHVybnMgd2hldGhlciBhIGdpdmVuIEFTQ0lJIHN0cmluZyBgdGV4dGAgZW5kcyB3aXRo
IGBlbmRzX3dpdGhgLCBpZ25vcmluZworLy8gY2FzZSBpbiB0aGUgY29tcGFyaXNvbi4KIGJvb2wg
RW5kc1dpdGhJZ25vcmVDYXNlKGFic2w6OnN0cmluZ192aWV3IHRleHQsIGFic2w6OnN0cmluZ192
aWV3IHN1ZmZpeCk7CiAKIH0gIC8vIG5hbWVzcGFjZSBhYnNsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL21hdGNoX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL21hdGNoX3Rlc3QuY2MKaW5kZXgg
ZDE5NGYwZTY4OWJmNmUwMDE2NTZjNTJlMzU3YjVkNzc4YTY3YjU1ZC4uYzIxZTAwYmY4MDdjOTRm
N2Y3YzVhODhmMjY1ZjIwNjk0Y2RmMTE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9tYXRj
aF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbWF0Y2hfdGVzdC5jYwpAQCAtODAsNiArODAs
MTcgQEAgVEVTVChNYXRjaFRlc3QsIENvbnRhaW5zTnVsbCkgewogICBFWFBFQ1RfRkFMU0UoYWJz
bDo6U3RyQ29udGFpbnMoY3MsIHN2MikpOwogfQogCitURVNUKE1hdGNoVGVzdCwgRXF1YWxzSWdu
b3JlQ2FzZSkgeworICBzdGQ6OnN0cmluZyB0ZXh0ID0gInRoZSI7CisgIGFic2w6OnN0cmluZ192
aWV3IGRhdGEodGV4dCk7CisKKyAgRVhQRUNUX1RSVUUoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShk
YXRhLCAiVGhlIikpOworICBFWFBFQ1RfVFJVRShhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGRhdGEs
ICJUSEUiKSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZGF0YSwgInRo
ZSIpKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZGF0YSwgIlF1aWNr
IikpOworICBFWFBFQ1RfRkFMU0UoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShkYXRhLCAidGhlbiIp
KTsKK30KKwogVEVTVChNYXRjaFRlc3QsIFN0YXJ0c1dpdGhJZ25vcmVDYXNlKSB7CiAgIEVYUEVD
VF9UUlVFKGFic2w6OlN0YXJ0c1dpdGhJZ25vcmVDYXNlKCJmb28iLCAiZm9vIikpOwogICBFWFBF
Q1RfVFJVRShhYnNsOjpTdGFydHNXaXRoSWdub3JlQ2FzZSgiZm9vIiwgIkZvIikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzLmNj
CmluZGV4IGY4NDJlZDg1ZTlmNTk1ZWZiOGRhMWVjMDUwMjc1ZGQzNjhhMjZlOTcuLjkzMDlmOWRh
OWRjYzVjOTA3ZTY4MzVlY2E2ZDA0N2M5MGYyYzZmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3MvbnVtYmVycy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuY2MKQEAgLTEyLDcgKzEy
LDcgQEAKIC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgog
Ci0vLyBUaGlzIGZpbGUgY29udGFpbnMgc3RkOjpzdHJpbmcgcHJvY2Vzc2luZyBmdW5jdGlvbnMg
cmVsYXRlZCB0bworLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHN0cmluZyBwcm9jZXNzaW5nIGZ1bmN0
aW9ucyByZWxhdGVkIHRvCiAvLyBudW1lcmljIHZhbHVlcy4KIAogI2luY2x1ZGUgImFic2wvc3Ry
aW5ncy9udW1iZXJzLmgiCkBAIC0zMCwxMCArMzAsMTAgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFic2wvYmFzZS9pbnRlcm5hbC9iaXRzLmgi
CiAjaW5jbHVkZSAiYWJzbC9iYXNlL2ludGVybmFsL3Jhd19sb2dnaW5nLmgiCiAjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL2FzY2lpLmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2NoYXJjb252Lmgi
Ci0jaW5jbHVkZSAiYWJzbC9zdHJpbmdzL2ludGVybmFsL2JpdHMuaCIKICNpbmNsdWRlICJhYnNs
L3N0cmluZ3MvaW50ZXJuYWwvbWVtdXRpbC5oIgogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJf
Y2F0LmgiCiAKQEAgLTE2MSw4ICsxNjEsOCBAQCBib29sIFNpbXBsZUF0b2IoYWJzbDo6c3RyaW5n
X3ZpZXcgc3RyLCBib29sKiB2YWx1ZSkgewogLy8gdGhlaXIgb3V0cHV0IHRvIHRoZSBiZWdpbm5p
bmcgb2YgdGhlIGJ1ZmZlci4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUKIC8vIGZvciBlbnN1
cmluZyB0aGF0IHRoZSBidWZmZXIgaGFzIGVub3VnaCBzcGFjZSB0byBob2xkIHRoZSBvdXRwdXQu
CiAvLwotLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGVuZCBvZiB0aGUgc3RkOjpzdHJpbmcg
KGkuZS4gdGhlIG51bGwgY2hhcmFjdGVyCi0vLyB0ZXJtaW5hdGluZyB0aGUgc3RkOjpzdHJpbmcp
LgorLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nIChpLmUuIHRo
ZSBudWxsIGNoYXJhY3RlcgorLy8gdGVybWluYXRpbmcgdGhlIHN0cmluZykuCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIG5hbWVzcGFjZSB7CkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIHN0ZDo6cGFp
cjx1aW50NjRfdCwgdWludDY0X3Q+IE11bDMyKHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+
IG51bSwKICAgdWludDY0X3QgYml0czEyOF91cCA9IChiaXRzOTZfMTI3ID4+IDMyKSArIChiaXRz
NjRfMTI3IDwgYml0czY0Xzk1KTsKICAgaWYgKGJpdHMxMjhfdXAgPT0gMCkgcmV0dXJuIHtiaXRz
NjRfMTI3LCBiaXRzMF82M307CiAKLSAgaW50IHNoaWZ0ID0gNjQgLSBzdHJpbmdzX2ludGVybmFs
OjpDb3VudExlYWRpbmdaZXJvczY0KGJpdHMxMjhfdXApOworICBpbnQgc2hpZnQgPSA2NCAtIGJh
c2VfaW50ZXJuYWw6OkNvdW50TGVhZGluZ1plcm9zNjQoYml0czEyOF91cCk7CiAgIHVpbnQ2NF90
IGxvID0gKGJpdHMwXzYzID4+IHNoaWZ0KSArIChiaXRzNjRfMTI3IDw8ICg2NCAtIHNoaWZ0KSk7
CiAgIHVpbnQ2NF90IGhpID0gKGJpdHM2NF8xMjcgPj4gc2hpZnQpICsgKGJpdHMxMjhfdXAgPDwg
KDY0IC0gc2hpZnQpKTsKICAgcmV0dXJuIHtoaSwgbG99OwpAQCAtMzc1LDcgKzM3NSw3IEBAIHN0
YXRpYyBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBQb3dGaXZlKHVpbnQ2NF90IG51bSwg
aW50IGV4cGZpdmUpIHsKICAgICAgIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAq
IDUgKiA1LAogICAgICAgNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUg
KiA1fTsKICAgcmVzdWx0ID0gTXVsMzIocmVzdWx0LCBwb3dlcnNfb2ZfZml2ZVtleHBmaXZlICYg
MTVdKTsKLSAgaW50IHNoaWZ0ID0gc3RyaW5nc19pbnRlcm5hbDo6Q291bnRMZWFkaW5nWmVyb3M2
NChyZXN1bHQuZmlyc3QpOworICBpbnQgc2hpZnQgPSBiYXNlX2ludGVybmFsOjpDb3VudExlYWRp
bmdaZXJvczY0KHJlc3VsdC5maXJzdCk7CiAgIGlmIChzaGlmdCAhPSAwKSB7CiAgICAgcmVzdWx0
LmZpcnN0ID0gKHJlc3VsdC5maXJzdCA8PCBzaGlmdCkgKyAocmVzdWx0LnNlY29uZCA+PiAoNjQg
LSBzaGlmdCkpOwogICAgIHJlc3VsdC5zZWNvbmQgPSAocmVzdWx0LnNlY29uZCA8PCBzaGlmdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVt
YmVycy5oCmluZGV4IGNmM2M1OTcyNjZjZjcxNDc0ZDQwNWRkMGNmZGVhNWNkZWI1OGJhZGMuLmY5
YjJjY2VmOTRkOGJkNTViMWJkODJkZTU4MmU1ODljYmQyMTJmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MvbnVtYmVycy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVycy5oCkBAIC00MSwz
MiArNDEsMzIgQEAgbmFtZXNwYWNlIGFic2wgewogCiAvLyBTaW1wbGVBdG9pKCkKIC8vCi0vLyBD
b252ZXJ0cyB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcgaW50byBhbiBpbnRlZ2VyIHZhbHVlLCByZXR1
cm5pbmcgYHRydWVgIGlmCi0vLyBzdWNjZXNzZnVsLiBUaGUgc3RkOjpzdHJpbmcgbXVzdCByZWZs
ZWN0IGEgYmFzZS0xMCBpbnRlZ2VyIChvcHRpb25hbGx5IGZvbGxvd2VkIG9yCisvLyBDb252ZXJ0
cyB0aGUgZ2l2ZW4gc3RyaW5nIGludG8gYW4gaW50ZWdlciB2YWx1ZSwgcmV0dXJuaW5nIGB0cnVl
YCBpZgorLy8gc3VjY2Vzc2Z1bC4gVGhlIHN0cmluZyBtdXN0IHJlZmxlY3QgYSBiYXNlLTEwIGlu
dGVnZXIgKG9wdGlvbmFsbHkgZm9sbG93ZWQgb3IKIC8vIHByZWNlZGVkIGJ5IEFTQ0lJIHdoaXRl
c3BhY2UpIHdob3NlIHZhbHVlIGZhbGxzIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgdGhlCi0vLyBpbnRl
Z2VyIHR5cGUsCisvLyBpbnRlZ2VyIHR5cGUuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgaW50X3R5cGU+
CiBBQlNMX01VU1RfVVNFX1JFU1VMVCBib29sIFNpbXBsZUF0b2koYWJzbDo6c3RyaW5nX3ZpZXcg
cywgaW50X3R5cGUqIG91dCk7CiAKIC8vIFNpbXBsZUF0b2YoKQogLy8KLS8vIENvbnZlcnRzIHRo
ZSBnaXZlbiBzdGQ6OnN0cmluZyAob3B0aW9uYWxseSBmb2xsb3dlZCBvciBwcmVjZWRlZCBieSBB
U0NJSQorLy8gQ29udmVydHMgdGhlIGdpdmVuIHN0cmluZyAob3B0aW9uYWxseSBmb2xsb3dlZCBv
ciBwcmVjZWRlZCBieSBBU0NJSQogLy8gd2hpdGVzcGFjZSkgaW50byBhIGZsb2F0LCB3aGljaCBt
YXkgYmUgcm91bmRlZCBvbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cuCi0vLyBTZWUgaHR0cDovL2Vu
LmNwcHJlZmVyZW5jZS5jb20vdy9jL3N0ZDo6c3RyaW5nL2J5dGUvc3RydG9mIGZvciBkZXRhaWxz
IGFib3V0IHRoZQorLy8gU2VlIGh0dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvYy9zdHJpbmcv
Ynl0ZS9zdHJ0b2YgZm9yIGRldGFpbHMgYWJvdXQgdGhlCiAvLyBhbGxvd2VkIGZvcm1hdHMgZm9y
IGBzdHJgLgogQUJTTF9NVVNUX1VTRV9SRVNVTFQgYm9vbCBTaW1wbGVBdG9mKGFic2w6OnN0cmlu
Z192aWV3IHN0ciwgZmxvYXQqIHZhbHVlKTsKIAogLy8gU2ltcGxlQXRvZCgpCiAvLwotLy8gQ29u
dmVydHMgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nIChvcHRpb25hbGx5IGZvbGxvd2VkIG9yIHByZWNl
ZGVkIGJ5IEFTQ0lJCisvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gc3RyaW5nIChvcHRpb25hbGx5IGZv
bGxvd2VkIG9yIHByZWNlZGVkIGJ5IEFTQ0lJCiAvLyB3aGl0ZXNwYWNlKSBpbnRvIGEgZG91Ymxl
LCB3aGljaCBtYXkgYmUgcm91bmRlZCBvbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cuCi0vLyBTZWUg
aHR0cDovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jL3N0ZDo6c3RyaW5nL2J5dGUvc3RydG9mIGZv
ciBkZXRhaWxzIGFib3V0IHRoZQorLy8gU2VlIGh0dHA6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cv
Yy9zdHJpbmcvYnl0ZS9zdHJ0b2YgZm9yIGRldGFpbHMgYWJvdXQgdGhlCiAvLyBhbGxvd2VkIGZv
cm1hdHMgZm9yIGBzdHJgLgogQUJTTF9NVVNUX1VTRV9SRVNVTFQgYm9vbCBTaW1wbGVBdG9kKGFi
c2w6OnN0cmluZ192aWV3IHN0ciwgZG91YmxlKiB2YWx1ZSk7CiAKIC8vIFNpbXBsZUF0b2IoKQog
Ly8KLS8vIENvbnZlcnRzIHRoZSBnaXZlbiBzdGQ6OnN0cmluZyBpbnRvIGEgYm9vbGVhbiwgcmV0
dXJuaW5nIGB0cnVlYCBpZiBzdWNjZXNzZnVsLgorLy8gQ29udmVydHMgdGhlIGdpdmVuIHN0cmlu
ZyBpbnRvIGEgYm9vbGVhbiwgcmV0dXJuaW5nIGB0cnVlYCBpZiBzdWNjZXNzZnVsLgogLy8gVGhl
IGZvbGxvd2luZyBjYXNlLWluc2Vuc2l0aXZlIHN0cmluZ3MgYXJlIGludGVycHJldGVkIGFzIGJv
b2xlYW4gYHRydWVgOgogLy8gInRydWUiLCAidCIsICJ5ZXMiLCAieSIsICIxIi4gVGhlIGZvbGxv
d2luZyBjYXNlLWluc2Vuc2l0aXZlIHN0cmluZ3MKIC8vIGFyZSBpbnRlcnByZXRlZCBhcyBib29s
ZWFuIGBmYWxzZWA6ICJmYWxzZSIsICJmIiwgIm5vIiwgIm4iLCAiMCIuCkBAIC0xNjksOSArMTY5
LDkgQEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgYm9vbCBzYWZlX3N0cnRvaV9iYXNlKGFic2w6OnN0
cmluZ192aWV3IHMsIGludF90eXBlKiBvdXQsCiAKIC8vIFNpbXBsZUF0b2koKQogLy8KLS8vIENv
bnZlcnRzIGEgc3RkOjpzdHJpbmcgdG8gYW4gaW50ZWdlciwgdXNpbmcgYHNhZmVfc3RydG8/KClg
IGZ1bmN0aW9ucyBmb3IgYWN0dWFsCisvLyBDb252ZXJ0cyBhIHN0cmluZyB0byBhbiBpbnRlZ2Vy
LCB1c2luZyBgc2FmZV9zdHJ0bz8oKWAgZnVuY3Rpb25zIGZvciBhY3R1YWwKIC8vIHBhcnNpbmcs
IHJldHVybmluZyBgdHJ1ZWAgaWYgc3VjY2Vzc2Z1bC4gVGhlIGBzYWZlX3N0cnRvPygpYCBmdW5j
dGlvbnMgYXBwbHkKLS8vIHN0cmljdCBjaGVja2luZzsgdGhlIHN0ZDo6c3RyaW5nIG11c3QgYmUg
YSBiYXNlLTEwIGludGVnZXIsIG9wdGlvbmFsbHkgZm9sbG93ZWQgb3IKKy8vIHN0cmljdCBjaGVj
a2luZzsgdGhlIHN0cmluZyBtdXN0IGJlIGEgYmFzZS0xMCBpbnRlZ2VyLCBvcHRpb25hbGx5IGZv
bGxvd2VkIG9yCiAvLyBwcmVjZWRlZCBieSBBU0NJSSB3aGl0ZXNwYWNlLCB3aXRoIGEgdmFsdWUg
aW4gdGhlIHJhbmdlIG9mIHRoZSBjb3JyZXNwb25kaW5nCiAvLyBpbnRlZ2VyIHR5cGUuCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgaW50X3R5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251bWJl
cnNfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzX2JlbmNobWFyay5jYwppbmRl
eCA4ZWY2NTBiOWEzZWNjZGQ3OTY2NGRjNzlkMmQ2ZjI2MWE2Njg2YTMyLi4wNTcwYjc1ODYzM2Vl
MDQwNmQxMjE3ZTllNzAwMTJiMjhjMTgwYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL251
bWJlcnNfYmVuY2htYXJrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVyc19iZW5jaG1hcmsu
Y2MKQEAgLTE1OCw3ICsxNTgsNyBAQCBCRU5DSE1BUksoQk1fc2FmZV9zdHJ0b3U2NF9zdHJpbmcp
CiAgICAgLT5BcmdQYWlyKDE2LCAxMCkKICAgICAtPkFyZ1BhaXIoMTYsIDE2KTsKIAotLy8gUmV0
dXJucyBhIHZlY3RvciBvZiBgbnVtX3N0cmluZ3NgIHN0cmluZ3MuIEVhY2ggc3RkOjpzdHJpbmcg
cmVwcmVzZW50cyBhCisvLyBSZXR1cm5zIGEgdmVjdG9yIG9mIGBudW1fc3RyaW5nc2Agc3RyaW5n
cy4gRWFjaCBzdHJpbmcgcmVwcmVzZW50cyBhCiAvLyBmbG9hdGluZyBwb2ludCBudW1iZXIgd2l0
aCBgbnVtX2RpZ2l0c2AgZGlnaXRzIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludCBhbmQKIC8vIGFu
b3RoZXIgYG51bV9kaWdpdHNgIGRpZ2l0cyBhZnRlci4KIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiBNYWtlRmxvYXRTdHJpbmdzKGludCBudW1fc3RyaW5ncywgaW50IG51bV9kaWdpdHMpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MvbnVtYmVyc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9u
dW1iZXJzX3Rlc3QuY2MKaW5kZXggMjdjYzA0NzllMzQxMmM4MzhiNDc4NWRmYWZiODg5NWVmZTA5
NmY2My4uMzZmYzBkNjRmZDUxMzA1MDdiMWU4MTFiMzhkZmU1N2UzMjQ5M2I0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvc3RyaW5ncy9udW1iZXJzX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9udW1i
ZXJzX3Rlc3QuY2MKQEAgLTEyLDcgKzEyLDcgQEAKIC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgogCi0vLyBUaGlzIGZpbGUgdGVzdHMgc3RkOjpzdHJpbmcg
cHJvY2Vzc2luZyBmdW5jdGlvbnMgcmVsYXRlZCB0byBudW1lcmljIHZhbHVlcy4KKy8vIFRoaXMg
ZmlsZSB0ZXN0cyBzdHJpbmcgcHJvY2Vzc2luZyBmdW5jdGlvbnMgcmVsYXRlZCB0byBudW1lcmlj
IHZhbHVlcy4KIAogI2luY2x1ZGUgImFic2wvc3RyaW5ncy9udW1iZXJzLmgiCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5jYwpp
bmRleCAzZmU4Yzk1ZWNhOWVmOTc5NDkxNjkzNjM4OTAwODU4YjA4NzI1ZDBiLi5lZmE0ZmQ3M2Ri
YWM3NzA0ODc0N2VjYzRhN2YxZmNiMGU2N2Q3NzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cl9jYXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfY2F0LmNjCkBAIC03OSw3ICs3OSw3
IEBAIEFscGhhTnVtOjpBbHBoYU51bShEZWMgZGVjKSB7CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBT
dHJDYXQoKQogLy8gICAgVGhpcyBtZXJnZXMgdGhlIGdpdmVuIHN0cmluZ3Mgb3IgaW50ZWdlcnMs
IHdpdGggbm8gZGVsaW1pdGVyLiAgVGhpcwotLy8gICAgaXMgZGVzaWduZWQgdG8gYmUgdGhlIGZh
c3Rlc3QgcG9zc2libGUgd2F5IHRvIGNvbnN0cnVjdCBhIHN0ZDo6c3RyaW5nIG91dAorLy8gICAg
aXMgZGVzaWduZWQgdG8gYmUgdGhlIGZhc3Rlc3QgcG9zc2libGUgd2F5IHRvIGNvbnN0cnVjdCBh
IHN0cmluZyBvdXQKIC8vICAgIG9mIGEgbWl4IG9mIHJhdyBDIHN0cmluZ3MsIFN0cmluZ1BpZWNl
cywgc3RyaW5ncywgYW5kIGludGVnZXIgdmFsdWVzLgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0x
NTQsMTAgKzE1NCwxMCBAQCBzdGQ6OnN0cmluZyBDYXRQaWVjZXMoc3RkOjppbml0aWFsaXplcl9s
aXN0PGFic2w6OnN0cmluZ192aWV3PiBwaWVjZXMpIHsKIH0KIAogLy8gSXQncyBwb3NzaWJsZSB0
byBjYWxsIFN0ckFwcGVuZCB3aXRoIGFuIGFic2w6OnN0cmluZ192aWV3IHRoYXQgaXMgaXRzZWxm
IGEKLS8vIGZyYWdtZW50IG9mIHRoZSBzdGQ6OnN0cmluZyB3ZSdyZSBhcHBlbmRpbmcgdG8uICBI
b3dldmVyIHRoZSByZXN1bHRzIG9mIHRoaXMgYXJlCisvLyBmcmFnbWVudCBvZiB0aGUgc3RyaW5n
IHdlJ3JlIGFwcGVuZGluZyB0by4gIEhvd2V2ZXIgdGhlIHJlc3VsdHMgb2YgdGhpcyBhcmUKIC8v
IHJhbmRvbS4gVGhlcmVmb3JlLCBjaGVjayBmb3IgdGhpcyBpbiBkZWJ1ZyBtb2RlLiAgVXNlIHVu
c2lnbmVkIG1hdGggc28gd2UKIC8vIG9ubHkgaGF2ZSB0byBkbyBvbmUgY29tcGFyaXNvbi4gTm90
ZSwgdGhlcmUncyBhbiBleGNlcHRpb24gY2FzZTogYXBwZW5kaW5nIGFuCi0vLyBlbXB0eSBzdGQ6
OnN0cmluZyBpcyBhbHdheXMgYWxsb3dlZC4KKy8vIGVtcHR5IHN0cmluZyBpcyBhbHdheXMgYWxs
b3dlZC4KICNkZWZpbmUgQVNTRVJUX05PX09WRVJMQVAoZGVzdCwgc3JjKSBcCiAgIGFzc2VydCgo
KHNyYykuc2l6ZSgpID09IDApIHx8ICAgICAgXAogICAgICAgICAgKHVpbnRwdHJfdCgoc3JjKS5k
YXRhKCkgLSAoZGVzdCkuZGF0YSgpKSA+IHVpbnRwdHJfdCgoZGVzdCkuc2l6ZSgpKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9jYXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5o
CmluZGV4IGU1NTAxYTUwMTJlZThkOWNmNzljYmU2YjUwYjA0NzU2ZDE5MWJmOWUuLmRhOWVkOWEy
NjllOTkwYjg3OTIyZmYyZDE5YWE5NzE3ZTVlMGQ3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu
Z3Mvc3RyX2NhdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdC5oCkBAIC0yMyw3ICsyMyw3
IEBACiAvLyBkZXNpZ25lZCB0byBiZSB1c2VkIGFzIGEgcGFyYW1ldGVyIHR5cGUgdGhhdCBlZmZp
Y2llbnRseSBtYW5hZ2VzIGNvbnZlcnNpb24KIC8vIHRvIHN0cmluZ3MgYW5kIGF2b2lkcyBjb3Bp
ZXMgaW4gdGhlIGFib3ZlIG9wZXJhdGlvbnMuCiAvLwotLy8gQW55IHJvdXRpbmUgYWNjZXB0aW5n
IGVpdGhlciBhIHN0ZDo6c3RyaW5nIG9yIGEgbnVtYmVyIG1heSBhY2NlcHQgYEFscGhhTnVtYC4K
Ky8vIEFueSByb3V0aW5lIGFjY2VwdGluZyBlaXRoZXIgYSBzdHJpbmcgb3IgYSBudW1iZXIgbWF5
IGFjY2VwdCBgQWxwaGFOdW1gLgogLy8gVGhlIGJhc2ljIGlkZWEgaXMgdGhhdCBieSBhY2NlcHRp
bmcgYSBgY29uc3QgQWxwaGFOdW0gJmAgYXMgYW4gYXJndW1lbnQKIC8vIHRvIHlvdXIgZnVuY3Rp
b24sIHlvdXIgY2FsbGVycyB3aWxsIGF1dG9tYWdpY2FsbHkgY29udmVydCBib29scywgaW50ZWdl
cnMsCiAvLyBhbmQgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIHRvIHN0cmluZ3MgZm9yIHlvdS4KQEAg
LTY1LDcgKzY1LDcgQEAKIG5hbWVzcGFjZSBhYnNsIHsKIAogbmFtZXNwYWNlIHN0cmluZ3NfaW50
ZXJuYWwgewotLy8gQWxwaGFOdW1CdWZmZXIgYWxsb3dzIGEgd2F5IHRvIHBhc3MgYSBzdGQ6OnN0
cmluZyB0byBTdHJDYXQgd2l0aG91dCBoYXZpbmcgdG8gZG8KKy8vIEFscGhhTnVtQnVmZmVyIGFs
bG93cyBhIHdheSB0byBwYXNzIGEgc3RyaW5nIHRvIFN0ckNhdCB3aXRob3V0IGhhdmluZyB0byBk
bwogLy8gbWVtb3J5IGFsbG9jYXRpb24uICBJdCBpcyBzaW1wbHkgYSBwYWlyIG9mIGEgZml4ZWQt
c2l6ZSBjaGFyYWN0ZXIgYXJyYXksIGFuZAogLy8gYSBzaXplLiAgUGxlYXNlIGRvbid0IHVzZSBv
dXRzaWRlIG9mIGFic2wsIHlldC4KIHRlbXBsYXRlIDxzaXplX3QgbWF4X3NpemU+CkBAIC0xMTks
OCArMTE5LDggQEAgZW51bSBQYWRTcGVjIDogdWludDhfdCB7CiAvLyBIZXgKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLwotLy8gYEhleGAgc3RvcmVzIGEgc2V0IG9mIGhleGFkZWNpbWFsIHN0
ZDo6c3RyaW5nIGNvbnZlcnNpb24gcGFyYW1ldGVycyBmb3IgdXNlCi0vLyB3aXRoaW4gYEFscGhh
TnVtYCBzdGQ6OnN0cmluZyBjb252ZXJzaW9ucy4KKy8vIGBIZXhgIHN0b3JlcyBhIHNldCBvZiBo
ZXhhZGVjaW1hbCBzdHJpbmcgY29udmVyc2lvbiBwYXJhbWV0ZXJzIGZvciB1c2UKKy8vIHdpdGhp
biBgQWxwaGFOdW1gIHN0cmluZyBjb252ZXJzaW9ucy4KIHN0cnVjdCBIZXggewogICB1aW50NjRf
dCB2YWx1ZTsKICAgdWludDhfdCB3aWR0aDsKQEAgLTE2OCw4ICsxNjgsOCBAQCBzdHJ1Y3QgSGV4
IHsKIC8vIERlYwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0vLyBgRGVjYCBzdG9yZXMg
YSBzZXQgb2YgZGVjaW1hbCBzdGQ6OnN0cmluZyBjb252ZXJzaW9uIHBhcmFtZXRlcnMgZm9yIHVz
ZQotLy8gd2l0aGluIGBBbHBoYU51bWAgc3RkOjpzdHJpbmcgY29udmVyc2lvbnMuICBEZWMgaXMg
c2xvd2VyIHRoYW4gdGhlIGRlZmF1bHQKKy8vIGBEZWNgIHN0b3JlcyBhIHNldCBvZiBkZWNpbWFs
IHN0cmluZyBjb252ZXJzaW9uIHBhcmFtZXRlcnMgZm9yIHVzZQorLy8gd2l0aGluIGBBbHBoYU51
bWAgc3RyaW5nIGNvbnZlcnNpb25zLiAgRGVjIGlzIHNsb3dlciB0aGFuIHRoZSBkZWZhdWx0CiAv
LyBpbnRlZ2VyIGNvbnZlcnNpb24sIHNvIHVzZSBpdCBvbmx5IGlmIHlvdSBuZWVkIHBhZGRpbmcu
CiBzdHJ1Y3QgRGVjIHsKICAgdWludDY0X3QgdmFsdWU7CkBAIC0yNzEsNyArMjcxLDcgQEAgY2xh
c3MgQWxwaGFOdW0gewogLy8KIC8vIE1lcmdlcyBnaXZlbiBzdHJpbmdzIG9yIG51bWJlcnMsIHVz
aW5nIG5vIGRlbGltaXRlcihzKS4KIC8vCi0vLyBgU3RyQ2F0KClgIGlzIGRlc2lnbmVkIHRvIGJl
IHRoZSBmYXN0ZXN0IHBvc3NpYmxlIHdheSB0byBjb25zdHJ1Y3QgYSBzdGQ6OnN0cmluZworLy8g
YFN0ckNhdCgpYCBpcyBkZXNpZ25lZCB0byBiZSB0aGUgZmFzdGVzdCBwb3NzaWJsZSB3YXkgdG8g
Y29uc3RydWN0IGEgc3RyaW5nCiAvLyBvdXQgb2YgYSBtaXggb2YgcmF3IEMgc3RyaW5ncywgc3Ry
aW5nX3ZpZXdzLCBzdHJpbmdzLCBib29sIHZhbHVlcywKIC8vIGFuZCBudW1lcmljIHZhbHVlcy4K
IC8vCkBAIC0yNzksNyArMjc5LDcgQEAgY2xhc3MgQWxwaGFOdW0gewogLy8gd29ya3MgcG9vcmx5
IG9uIHN0cmluZ3MgYnVpbHQgdXAgb3V0IG9mIGZyYWdtZW50cy4KIC8vCiAvLyBGb3IgY2xhcml0
eSBhbmQgcGVyZm9ybWFuY2UsIGRvbid0IHVzZSBgU3RyQ2F0KClgIHdoZW4gYXBwZW5kaW5nIHRv
IGEKLS8vIHN0ZDo6c3RyaW5nLiBVc2UgYFN0ckFwcGVuZCgpYCBpbnN0ZWFkLiBJbiBwYXJ0aWN1
bGFyLCBhdm9pZCB1c2luZyBhbnkgb2YgdGhlc2UKKy8vIHN0cmluZy4gVXNlIGBTdHJBcHBlbmQo
KWAgaW5zdGVhZC4gSW4gcGFydGljdWxhciwgYXZvaWQgdXNpbmcgYW55IG9mIHRoZXNlCiAvLyAo
YW50aS0pcGF0dGVybnM6CiAvLwogLy8gICBzdHIuYXBwZW5kKFN0ckNhdCguLi4pKQpAQCAtMzI4
LDI2ICszMjgsMjYgQEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgaW5saW5lIHN0ZDo6c3RyaW5nIFN0
ckNhdChjb25zdCBBbHBoYU51bSYgYSwgY29uc3QgQWxwaGFOdW0KIC8vIFN0ckFwcGVuZCgpCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KLS8vIEFwcGVuZHMgYSBzdGQ6OnN0cmluZyBvciBz
ZXQgb2Ygc3RyaW5ncyB0byBhbiBleGlzdGluZyBzdGQ6OnN0cmluZywgaW4gYSBzaW1pbGFyCisv
LyBBcHBlbmRzIGEgc3RyaW5nIG9yIHNldCBvZiBzdHJpbmdzIHRvIGFuIGV4aXN0aW5nIHN0cmlu
ZywgaW4gYSBzaW1pbGFyCiAvLyBmYXNoaW9uIHRvIGBTdHJDYXQoKWAuCiAvLwogLy8gV0FSTklO
RzogYFN0ckFwcGVuZCgmc3RyLCBhLCBiLCBjLCAuLi4pYCByZXF1aXJlcyB0aGF0IG5vbmUgb2Yg
dGhlCiAvLyBhLCBiLCBjLCBwYXJhbWV0ZXJzIGJlIGEgcmVmZXJlbmNlIGludG8gc3RyLiBGb3Ig
c3BlZWQsIGBTdHJBcHBlbmQoKWAgZG9lcwogLy8gbm90IHRyeSB0byBjaGVjayBlYWNoIG9mIGl0
cyBpbnB1dCBhcmd1bWVudHMgdG8gYmUgc3VyZSB0aGF0IHRoZXkgYXJlIG5vdAotLy8gYSBzdWJz
ZXQgb2YgdGhlIHN0ZDo6c3RyaW5nIGJlaW5nIGFwcGVuZGVkIHRvLiBUaGF0IGlzLCB3aGlsZSB0
aGlzIHdpbGwgd29yazoKKy8vIGEgc3Vic2V0IG9mIHRoZSBzdHJpbmcgYmVpbmcgYXBwZW5kZWQg
dG8uIFRoYXQgaXMsIHdoaWxlIHRoaXMgd2lsbCB3b3JrOgogLy8KLS8vICAgc3RkOjpzdHJpbmcg
cyA9ICJmb28iOworLy8gICBzdHJpbmcgcyA9ICJmb28iOwogLy8gICBzICs9IHM7CiAvLwogLy8g
VGhpcyBvdXRwdXQgaXMgdW5kZWZpbmVkOgogLy8KLS8vICAgc3RkOjpzdHJpbmcgcyA9ICJmb28i
OworLy8gICBzdHJpbmcgcyA9ICJmb28iOwogLy8gICBTdHJBcHBlbmQoJnMsIHMpOwogLy8KIC8v
IFRoaXMgb3V0cHV0IGlzIHVuZGVmaW5lZCBhcyB3ZWxsLCBzaW5jZSBgYWJzbDo6c3RyaW5nX3Zp
ZXdgIGRvZXMgbm90IG93biBpdHMKIC8vIGRhdGE6CiAvLwotLy8gICBzdGQ6OnN0cmluZyBzID0g
ImZvb2JhciI7CisvLyAgIHN0cmluZyBzID0gImZvb2JhciI7CiAvLyAgIGFic2w6OnN0cmluZ192
aWV3IHAgPSBzOwogLy8gICBTdHJBcHBlbmQoJnMsIHApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzL3N0cl9jYXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdF90ZXN0LmNjCmlu
ZGV4IGU5ZDY3NjkwNjM4MjcxOTIwZDI2MjM0ZDk3MzkwNTNjMzBiMjc0ODkuLjU1NWQ4ZGIzZWI4
NTQzOGJlNWY4Y2M3ZjU5ZGQ1NTA3ZDZkNWJhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3RyX2NhdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2NhdF90ZXN0LmNjCkBAIC0y
OCw3ICsyOCw4IEBACiAjZGVmaW5lIEFCU0xfRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwg
cmVnZXgpIFwKICAgRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgIi4qIikKICNlbHNlCi0j
ZGVmaW5lIEFCU0xfRVhQRUNUX0RFQlVHX0RFQVRIIEVYUEVDVF9ERUJVR19ERUFUSAorI2RlZmlu
ZSBBQlNMX0VYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgIEVYUEVDVF9E
RUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQogI2VuZGlmCiAKIG5hbWVzcGFjZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9mb3JtYXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2Zv
cm1hdC5oCmluZGV4IDcwYTgxMWI3NWUyZmY4ODYzYzllMzY4N2M2YzI4MmY5MGMyMzE3ZjkuLjJk
MDc3MjVkZTIxZmNmNzkwNjk1MGYwMmQyMDYxNWI1YWQxMDk4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyX2Zvcm1hdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdC5oCkBA
IC0xOCwyMCArMTgsMjAgQEAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gVGhlIGBz
dHJfZm9ybWF0YCBsaWJyYXJ5IGlzIGEgdHlwZXNhZmUgcmVwbGFjZW1lbnQgZm9yIHRoZSBmYW1p
bHkgb2YKLS8vIGBwcmludGYoKWAgc3RkOjpzdHJpbmcgZm9ybWF0dGluZyByb3V0aW5lcyB3aXRo
aW4gdGhlIGA8Y3N0ZGlvPmAgc3RhbmRhcmQgbGlicmFyeQorLy8gYHByaW50ZigpYCBzdHJpbmcg
Zm9ybWF0dGluZyByb3V0aW5lcyB3aXRoaW4gdGhlIGA8Y3N0ZGlvPmAgc3RhbmRhcmQgbGlicmFy
eQogLy8gaGVhZGVyLiBMaWtlIHRoZSBgcHJpbnRmYCBmYW1pbHksIHRoZSBgc3RyX2Zvcm1hdGAg
dXNlcyBhICJmb3JtYXQgc3RyaW5nIiB0bwogLy8gcGVyZm9ybSBhcmd1bWVudCBzdWJzdGl0dXRp
b25zIGJhc2VkIG9uIHR5cGVzLgogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBzdGQ6OnN0cmlu
ZyBzID0gYWJzbDo6U3RyRm9ybWF0KCIlcyAlcyBZb3UgaGF2ZSAkJWQhIiwgIkhlbGxvIiwgbmFt
ZSwgZG9sbGFycyk7CisvLyAgIHN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KCIlcyAlcyBZb3Ug
aGF2ZSAkJWQhIiwgIkhlbGxvIiwgbmFtZSwgZG9sbGFycyk7CiAvLwogLy8gVGhlIGxpYnJhcnkg
Y29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBiYXNpYyB1dGlsaXRpZXM6CiAvLwogLy8gICAqIGBh
YnNsOjpTdHJGb3JtYXQoKWAsIGEgdHlwZS1zYWZlIHJlcGxhY2VtZW50IGZvciBgc3RkOjpzcHJp
bnRmKClgLCB0bwotLy8gICAgIHdyaXRlIGEgZm9ybWF0IHN0ZDo6c3RyaW5nIHRvIGEgYHN0cmlu
Z2AgdmFsdWUuCi0vLyAgICogYGFic2w6OlN0ckFwcGVuZEZvcm1hdCgpYCB0byBhcHBlbmQgYSBm
b3JtYXQgc3RkOjpzdHJpbmcgdG8gYSBgc3RyaW5nYAotLy8gICAqIGBhYnNsOjpTdHJlYW1Gb3Jt
YXQoKWAgdG8gbW9yZSBlZmZpY2llbnRseSB3cml0ZSBhIGZvcm1hdCBzdGQ6OnN0cmluZyB0byBh
CisvLyAgICAgd3JpdGUgYSBmb3JtYXQgc3RyaW5nIHRvIGEgYHN0cmluZ2AgdmFsdWUuCisvLyAg
ICogYGFic2w6OlN0ckFwcGVuZEZvcm1hdCgpYCB0byBhcHBlbmQgYSBmb3JtYXQgc3RyaW5nIHRv
IGEgYHN0cmluZ2AKKy8vICAgKiBgYWJzbDo6U3RyZWFtRm9ybWF0KClgIHRvIG1vcmUgZWZmaWNp
ZW50bHkgd3JpdGUgYSBmb3JtYXQgc3RyaW5nIHRvIGEKIC8vICAgICBzdHJlYW0sIHN1Y2ggYXNg
c3RkOjpjb3V0YC4KIC8vICAgKiBgYWJzbDo6UHJpbnRGKClgLCBgYWJzbDo6RlByaW50RigpYCBh
bmQgYGFic2w6OlNOUHJpbnRGKClgIGFzCiAvLyAgICAgcmVwbGFjZW1lbnRzIGZvciBgc3RkOjpw
cmludGYoKWAsIGBzdGQ6OmZwcmludGYoKWAgYW5kIGBzdGQ6OnNucHJpbnRmKClgLgpAQCAtMzks
MTUgKzM5LDE1IEBACiAvLyAgICAgTm90ZTogYSB2ZXJzaW9uIG9mIGBzdGQ6OnNwcmludGYoKWAg
aXMgbm90IHN1cHBvcnRlZCBhcyBpdCBpcwogLy8gICAgIGdlbmVyYWxseSB1bnNhZmUgZHVlIHRv
IGJ1ZmZlciBvdmVyZmxvd3MuCiAvLwotLy8gQWRkaXRpb25hbGx5LCB5b3UgY2FuIHByb3ZpZGUg
YSBmb3JtYXQgc3RkOjpzdHJpbmcgKGFuZCBpdHMgYXNzb2NpYXRlZCBhcmd1bWVudHMpCisvLyBB
ZGRpdGlvbmFsbHksIHlvdSBjYW4gcHJvdmlkZSBhIGZvcm1hdCBzdHJpbmcgKGFuZCBpdHMgYXNz
b2NpYXRlZCBhcmd1bWVudHMpCiAvLyB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBhYnN0cmFj
dGlvbnM6CiAvLwotLy8gICAqIEEgYEZvcm1hdFNwZWNgIGNsYXNzIHRlbXBsYXRlIGZ1bGx5IGVu
Y2Fwc3VsYXRlcyBhIGZvcm1hdCBzdGQ6OnN0cmluZyBhbmQgaXRzCisvLyAgICogQSBgRm9ybWF0
U3BlY2AgY2xhc3MgdGVtcGxhdGUgZnVsbHkgZW5jYXBzdWxhdGVzIGEgZm9ybWF0IHN0cmluZyBh
bmQgaXRzCiAvLyAgICAgdHlwZSBhcmd1bWVudHMgYW5kIGlzIHVzdWFsbHkgcHJvdmlkZWQgdG8g
YHN0cl9mb3JtYXRgIGZ1bmN0aW9ucyBhcyBhCiAvLyAgICAgdmFyaWFkaWMgYXJndW1lbnQgb2Yg
dHlwZSBgRm9ybWF0U3BlYzxBcmcuLi4+YC4gVGhlIGBGb3JtYXRTcGVjPEFyZ3MuLi4+YAogLy8g
ICAgIHRlbXBsYXRlIGlzIGV2YWx1YXRlZCBhdCBjb21waWxlLXRpbWUsIHByb3ZpZGluZyB0eXBl
IHNhZmV0eS4KIC8vICAgKiBBIGBQYXJzZWRGb3JtYXRgIGluc3RhbmNlLCB3aGljaCBlbmNhcHN1
bGF0ZXMgYSBzcGVjaWZpYywgcHJlLWNvbXBpbGVkCi0vLyAgICAgZm9ybWF0IHN0ZDo6c3RyaW5n
IGZvciBhIHNwZWNpZmljIHNldCBvZiB0eXBlKHMpLCBhbmQgd2hpY2ggY2FuIGJlIHBhc3NlZAor
Ly8gICAgIGZvcm1hdCBzdHJpbmcgZm9yIGEgc3BlY2lmaWMgc2V0IG9mIHR5cGUocyksIGFuZCB3
aGljaCBjYW4gYmUgcGFzc2VkCiAvLyAgICAgYmV0d2VlbiBBUEkgYm91bmRhcmllcy4gKFRoZSBg
Rm9ybWF0U3BlY2AgdHlwZSBzaG91bGQgbm90IGJlIHVzZWQKIC8vICAgICBkaXJlY3RseS4pCiAv
LwpAQCAtNjAsNyArNjAsNyBAQAogLy8KIC8vICAgKiBBIGBGb3JtYXRVbnR5cGVkKClgIGZ1bmN0
aW9uIHRoYXQgaXMgc2ltaWxhciB0byBgRm9ybWF0KClgIGV4Y2VwdCBpdCBpcwogLy8gICAgIGxv
b3NlbHkgdHlwZWQuIGBGb3JtYXRVbnR5cGVkKClgIGlzIG5vdCBhIHRlbXBsYXRlIGFuZCBkb2Vz
IG5vdCBwZXJmb3JtCi0vLyAgICAgYW55IGNvbXBpbGUtdGltZSBjaGVja2luZyBvZiB0aGUgZm9y
bWF0IHN0ZDo6c3RyaW5nOyBpbnN0ZWFkLCBpdCByZXR1cm5zIGEKKy8vICAgICBhbnkgY29tcGls
ZS10aW1lIGNoZWNraW5nIG9mIHRoZSBmb3JtYXQgc3RyaW5nOyBpbnN0ZWFkLCBpdCByZXR1cm5z
IGEKIC8vICAgICBib29sZWFuIGZyb20gYSBydW50aW1lIGNoZWNrLgogLy8KIC8vIEluIGFkZGl0
aW9uLCB0aGUgYHN0cl9mb3JtYXRgIGxpYnJhcnkgcHJvdmlkZXMgZXh0ZW5zaW9uIHBvaW50cyBm
b3IKQEAgLTg5LDcgKzg5LDcgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gRXhhbXBsZToKIC8vCiAv
LyAgIGFic2w6OlVudHlwZWRGb3JtYXRTcGVjIGZvcm1hdCgiJWQiKTsKLS8vICAgc3RkOjpzdHJp
bmcgb3V0OworLy8gICBzdHJpbmcgb3V0OwogLy8gICBDSEVDSyhhYnNsOjpGb3JtYXRVbnR5cGVk
KCZvdXQsIGZvcm1hdCwge2Fic2w6OkZvcm1hdEFyZygxKX0pKTsKIGNsYXNzIFVudHlwZWRGb3Jt
YXRTcGVjIHsKICBwdWJsaWM6CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RyX2Zvcm1hdF9pbnRlcm5h
bDo6U3RyZWFtZWRXcmFwcGVyPFQ+IEZvcm1hdFN0cmVhbWVkKGNvbnN0IFQmIHYpIHsKIC8vIEV4
YW1wbGU6CiAvLwogLy8gICBpbnQgbiA9IDA7Ci0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpT
dHJGb3JtYXQoIiVzJWQlbiIsICJoZWxsbyIsIDEyMywKKy8vICAgc3RyaW5nIHMgPSBhYnNsOjpT
dHJGb3JtYXQoIiVzJWQlbiIsICJoZWxsbyIsIDEyMywKIC8vICAgICAgICAgICAgICAgICAgIGFi
c2w6OkZvcm1hdENvdW50Q2FwdHVyZSgmbikpOwogLy8gICBFWFBFQ1RfRVEoOCwgbik7CiBjbGFz
cyBGb3JtYXRDb3VudENhcHR1cmUgewpAQCAtMTU1LDEwICsxNTUsMTAgQEAgY2xhc3MgRm9ybWF0
Q291bnRDYXB0dXJlIHsKIAogLy8gRm9ybWF0U3BlYwogLy8KLS8vIFRoZSBgRm9ybWF0U3BlY2Ag
dHlwZSBkZWZpbmVzIHRoZSBtYWtldXAgb2YgYSBmb3JtYXQgc3RkOjpzdHJpbmcgd2l0aGluIHRo
ZQorLy8gVGhlIGBGb3JtYXRTcGVjYCB0eXBlIGRlZmluZXMgdGhlIG1ha2V1cCBvZiBhIGZvcm1h
dCBzdHJpbmcgd2l0aGluIHRoZQogLy8gYHN0cl9mb3JtYXRgIGxpYnJhcnkuIFlvdSBzaG91bGQg
bm90IG5lZWQgdG8gdXNlIG9yIG1hbmlwdWxhdGUgdGhpcyB0eXBlCiAvLyBkaXJlY3RseS4gQSBg
Rm9ybWF0U3BlY2AgaXMgYSB2YXJpYWRpYyBjbGFzcyB0ZW1wbGF0ZSB0aGF0IGlzIGV2YWx1YXRl
ZCBhdAotLy8gY29tcGlsZS10aW1lLCBhY2NvcmRpbmcgdG8gdGhlIGZvcm1hdCBzdGQ6OnN0cmlu
ZyBhbmQgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3NlZAorLy8gY29tcGlsZS10aW1lLCBhY2NvcmRp
bmcgdG8gdGhlIGZvcm1hdCBzdHJpbmcgYW5kIGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWQKIC8v
IHRvIGl0LgogLy8KIC8vIEZvciBhIGBGb3JtYXRTcGVjYCB0byBiZSB2YWxpZCBhdCBjb21waWxl
LXRpbWUsIGl0IG11c3QgYmUgcHJvdmlkZWQgYXMKQEAgLTE2NiwxMiArMTY2LDEyIEBAIGNsYXNz
IEZvcm1hdENvdW50Q2FwdHVyZSB7CiAvLwogLy8gKiBBIGBjb25zdGV4cHJgIGxpdGVyYWwgb3Ig
YGFic2w6OnN0cmluZ192aWV3YCwgd2hpY2ggaXMgaG93IGl0IG1vc3Qgb2Z0ZW4KIC8vICAgdXNl
ZC4KLS8vICogQSBgUGFyc2VkRm9ybWF0YCBpbnN0YW50aWF0aW9uLCB3aGljaCBlbnN1cmVzIHRo
ZSBmb3JtYXQgc3RkOjpzdHJpbmcgaXMKKy8vICogQSBgUGFyc2VkRm9ybWF0YCBpbnN0YW50aWF0
aW9uLCB3aGljaCBlbnN1cmVzIHRoZSBmb3JtYXQgc3RyaW5nIGlzCiAvLyAgIHZhbGlkIGJlZm9y
ZSB1c2UuIChTZWUgYmVsb3cuKQogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICAvLyBQcm92aWRl
ZCBhcyBhIHN0ZDo6c3RyaW5nIGxpdGVyYWwuCisvLyAgIC8vIFByb3ZpZGVkIGFzIGEgc3RyaW5n
IGxpdGVyYWwuCiAvLyAgIGFic2w6OlN0ckZvcm1hdCgiV2VsY29tZSB0byAlcywgTnVtYmVyICVk
ISIsICJUaGUgVmlsbGFnZSIsIDYpOwogLy8KIC8vICAgLy8gUHJvdmlkZWQgYXMgYSBjb25zdGV4
cHIgYWJzbDo6c3RyaW5nX3ZpZXcuCkBAIC0xODMsNyArMTgzLDcgQEAgY2xhc3MgRm9ybWF0Q291
bnRDYXB0dXJlIHsKIC8vICAgYWJzbDo6UGFyc2VkRm9ybWF0PCdzJywgJ2QnPiBmb3JtYXRTdHJp
bmcoIldlbGNvbWUgdG8gJXMsIE51bWJlciAlZCEiKTsKIC8vICAgYWJzbDo6U3RyRm9ybWF0KGZv
cm1hdFN0cmluZywgIlRoZVZpbGxhZ2UiLCA2KTsKIC8vCi0vLyBBIGZvcm1hdCBzdGQ6OnN0cmlu
ZyBnZW5lcmFsbHkgZm9sbG93cyB0aGUgUE9TSVggc3ludGF4IGFzIHVzZWQgd2l0aGluIHRoZSBQ
T1NJWAorLy8gQSBmb3JtYXQgc3RyaW5nIGdlbmVyYWxseSBmb2xsb3dzIHRoZSBQT1NJWCBzeW50
YXggYXMgdXNlZCB3aXRoaW4gdGhlIFBPU0lYCiAvLyBgcHJpbnRmYCBzcGVjaWZpY2F0aW9uLgog
Ly8KIC8vIChTZWUgaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3
OTkvdXRpbGl0aWVzL3ByaW50Zi5odG1sLikKQEAgLTIyMyw3ICsyMjMsNyBAQCBjbGFzcyBGb3Jt
YXRDb3VudENhcHR1cmUgewogLy8gICAgICIlcCIsICppbnQgICAgICAgICAgICAgICAtPiAiMHg3
ZmZkZWI2YWQyYTQiCiAvLwogLy8gICAgIGludCBuID0gMDsKLS8vICAgICBzdGQ6OnN0cmluZyBz
ID0gYWJzbDo6U3RyRm9ybWF0KAorLy8gICAgIHN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KAog
Ly8gICAgICAgICAiJXMlZCVuIiwgImhlbGxvIiwgMTIzLCBhYnNsOjpGb3JtYXRDb3VudENhcHR1
cmUoJm4pKTsKIC8vICAgICBFWFBFQ1RfRVEoOCwgbik7CiAvLwpAQCAtMjM2LDcgKzIzNiw3IEBA
IGNsYXNzIEZvcm1hdENvdW50Q2FwdHVyZSB7CiAvLwogLy8gSG93ZXZlciwgaW4gdGhlIGBzdHJf
Zm9ybWF0YCBsaWJyYXJ5LCBhIGZvcm1hdCBjb252ZXJzaW9uIHNwZWNpZmllcyBhIGJyb2FkZXIK
IC8vIEMrKyBjb25jZXB0dWFsIGNhdGVnb3J5IGluc3RlYWQgb2YgYW4gZXhhY3QgdHlwZS4gRm9y
IGV4YW1wbGUsIGAlc2AgYmluZHMgdG8KLS8vIGFueSBzdGQ6OnN0cmluZy1saWtlIGFyZ3VtZW50
LCBzbyBgc3RkOjpzdHJpbmdgLCBgYWJzbDo6c3RyaW5nX3ZpZXdgLCBhbmQKKy8vIGFueSBzdHJp
bmctbGlrZSBhcmd1bWVudCwgc28gYHN0ZDo6c3RyaW5nYCwgYGFic2w6OnN0cmluZ192aWV3YCwg
YW5kCiAvLyBgY29uc3QgY2hhcipgIGFyZSBhbGwgYWNjZXB0ZWQuIExpa2V3aXNlLCBgJWRgIGFj
Y2VwdHMgYW55IGludGVnZXItbGlrZQogLy8gYXJndW1lbnQsIGV0Yy4KIApAQCAtMjQ4LDcgKzI0
OCw3IEBAIHVzaW5nIEZvcm1hdFNwZWMgPQogLy8KIC8vIEEgYFBhcnNlZEZvcm1hdGAgaXMgYSBj
bGFzcyB0ZW1wbGF0ZSByZXByZXNlbnRpbmcgYSBwcmVwYXJzZWQgYEZvcm1hdFNwZWNgLAogLy8g
d2l0aCB0ZW1wbGF0ZSBhcmd1bWVudHMgc3BlY2lmeWluZyB0aGUgY29udmVyc2lvbiBjaGFyYWN0
ZXJzIHVzZWQgd2l0aGluIHRoZQotLy8gZm9ybWF0IHN0ZDo6c3RyaW5nLiBTdWNoIGNoYXJhY3Rl
cnMgbXVzdCBiZSB2YWxpZCBmb3JtYXQgdHlwZSBzcGVjaWZpZXJzLCBhbmQKKy8vIGZvcm1hdCBz
dHJpbmcuIFN1Y2ggY2hhcmFjdGVycyBtdXN0IGJlIHZhbGlkIGZvcm1hdCB0eXBlIHNwZWNpZmll
cnMsIGFuZAogLy8gdGhlc2UgdHlwZSBzcGVjaWZpZXJzIGFyZSBjaGVja2VkIGF0IGNvbXBpbGUt
dGltZS4KIC8vCiAvLyBJbnN0YW5jZXMgb2YgYFBhcnNlZEZvcm1hdGAgY2FuIGJlIGNyZWF0ZWQs
IGNvcGllZCwgYW5kIHJldXNlZCB0byBzcGVlZCB1cApAQCAtMjc1LDI2ICsyNzUsMjYgQEAgdXNp
bmcgUGFyc2VkRm9ybWF0ID0gc3RyX2Zvcm1hdF9pbnRlcm5hbDo6RXh0ZW5kZWRQYXJzZWRGb3Jt
YXQ8CiAKIC8vIFN0ckZvcm1hdCgpCiAvLwotLy8gUmV0dXJucyBhIGBzdHJpbmdgIGdpdmVuIGEg
YHByaW50ZigpYC1zdHlsZSBmb3JtYXQgc3RkOjpzdHJpbmcgYW5kIHplcm8gb3IgbW9yZQorLy8g
UmV0dXJucyBhIGBzdHJpbmdgIGdpdmVuIGEgYHByaW50ZigpYC1zdHlsZSBmb3JtYXQgc3RyaW5n
IGFuZCB6ZXJvIG9yIG1vcmUKIC8vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBVc2UgaXQgYXMgeW91
IHdvdWxkIGBzcHJpbnRmKClgLiBgU3RyRm9ybWF0KClgIGlzIHRoZQogLy8gcHJpbWFyeSBmb3Jt
YXR0aW5nIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYHN0cl9mb3JtYXRgIGxpYnJhcnksIGFuZCBzaG91
bGQgYmUKIC8vIHVzZWQgaW4gbW9zdCBjYXNlcyB3aGVyZSB5b3UgbmVlZCB0eXBlLXNhZmUgY29u
dmVyc2lvbiBvZiB0eXBlcyBpbnRvCiAvLyBmb3JtYXR0ZWQgc3RyaW5ncy4KIC8vCi0vLyBUaGUg
Zm9ybWF0IHN0ZDo6c3RyaW5nIGdlbmVyYWxseSBjb25zaXN0cyBvZiBvcmRpbmFyeSBjaGFyYWN0
ZXIgZGF0YSBhbG9uZyB3aXRoCisvLyBUaGUgZm9ybWF0IHN0cmluZyBnZW5lcmFsbHkgY29uc2lz
dHMgb2Ygb3JkaW5hcnkgY2hhcmFjdGVyIGRhdGEgYWxvbmcgd2l0aAogLy8gb25lIG9yIG1vcmUg
Zm9ybWF0IGNvbnZlcnNpb24gc3BlY2lmaWVycyAoZGVub3RlZCBieSB0aGUgYCVgIGNoYXJhY3Rl
cikuCi0vLyBPcmRpbmFyeSBjaGFyYWN0ZXIgZGF0YSBpcyByZXR1cm5lZCB1bmNoYW5nZWQgaW50
byB0aGUgcmVzdWx0IHN0ZDo6c3RyaW5nLCB3aGlsZQorLy8gT3JkaW5hcnkgY2hhcmFjdGVyIGRh
dGEgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkIGludG8gdGhlIHJlc3VsdCBzdHJpbmcsIHdoaWxlCiAv
LyBlYWNoIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbiBwZXJmb3JtcyBhIHR5cGUgc3Vic3RpdHV0
aW9uIGZyb20KIC8vIGBTdHJGb3JtYXQoKWAncyBvdGhlciBhcmd1bWVudHMuIFNlZSB0aGUgY29t
bWVudHMgZm9yIGBGb3JtYXRTcGVjYCBmb3IgZnVsbAotLy8gaW5mb3JtYXRpb24gb24gdGhlIG1h
a2V1cCBvZiB0aGlzIGZvcm1hdCBzdGQ6OnN0cmluZy4KKy8vIGluZm9ybWF0aW9uIG9uIHRoZSBt
YWtldXAgb2YgdGhpcyBmb3JtYXQgc3RyaW5nLgogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBz
dGQ6OnN0cmluZyBzID0gYWJzbDo6U3RyRm9ybWF0KAorLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0
ckZvcm1hdCgKIC8vICAgICAgICJXZWxjb21lIHRvICVzLCBOdW1iZXIgJWQhIiwgIlRoZSBWaWxs
YWdlIiwgNik7CiAvLyAgIEVYUEVDVF9FUSgiV2VsY29tZSB0byBUaGUgVmlsbGFnZSwgTnVtYmVy
IDYhIiwgcyk7CiAvLwotLy8gUmV0dXJucyBhbiBlbXB0eSBzdGQ6OnN0cmluZyBpbiBjYXNlIG9m
IGVycm9yLgorLy8gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaW4gY2FzZSBvZiBlcnJvci4KIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgogQUJTTF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpzdHJp
bmcgU3RyRm9ybWF0KGNvbnN0IEZvcm1hdFNwZWM8QXJncy4uLj4mIGZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXJncyYuLi4gYXJncykgewpAQCAt
MzA1LDEzICszMDUsMTMgQEAgQUJTTF9NVVNUX1VTRV9SRVNVTFQgc3RkOjpzdHJpbmcgU3RyRm9y
bWF0KGNvbnN0IEZvcm1hdFNwZWM8QXJncy4uLj4mIGZvcm1hdCwKIAogLy8gU3RyQXBwZW5kRm9y
bWF0KCkKIC8vCi0vLyBBcHBlbmRzIHRvIGEgYGRzdGAgc3RkOjpzdHJpbmcgZ2l2ZW4gYSBmb3Jt
YXQgc3RkOjpzdHJpbmcsIGFuZCB6ZXJvIG9yIG1vcmUgYWRkaXRpb25hbAorLy8gQXBwZW5kcyB0
byBhIGBkc3RgIHN0cmluZyBnaXZlbiBhIGZvcm1hdCBzdHJpbmcsIGFuZCB6ZXJvIG9yIG1vcmUg
YWRkaXRpb25hbAogLy8gYXJndW1lbnRzLCByZXR1cm5pbmcgYCpkc3RgIGFzIGEgY29udmVuaWVu
Y2UgZm9yIGNoYWluaW5nIHB1cnBvc2VzLiBBcHBlbmRzCiAvLyBub3RoaW5nIGluIGNhc2Ugb2Yg
ZXJyb3IgKGJ1dCBwb3NzaWJseSBhbHRlcnMgaXRzIGNhcGFjaXR5KS4KIC8vCiAvLyBFeGFtcGxl
OgogLy8KLS8vICAgc3RkOjpzdHJpbmcgb3JpZygiRm9yIGV4YW1wbGUgUEkgaXMgYXBwcm94aW1h
dGVseSAiKTsKKy8vICAgc3RyaW5nIG9yaWcoIkZvciBleGFtcGxlIFBJIGlzIGFwcHJveGltYXRl
bHkgIik7CiAvLyAgIHN0ZDo6Y291dCA8PCBTdHJBcHBlbmRGb3JtYXQoJm9yaWcsICIlMTIuNmYi
LCAzLjE0KTsKIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgogc3RkOjpzdHJpbmcmIFN0ckFw
cGVuZEZvcm1hdChzdGQ6OnN0cmluZyogZHN0LCBjb25zdCBGb3JtYXRTcGVjPEFyZ3MuLi4+JiBm
b3JtYXQsCkBAIC0zMjMsNyArMzIzLDcgQEAgc3RkOjpzdHJpbmcmIFN0ckFwcGVuZEZvcm1hdChz
dGQ6OnN0cmluZyogZHN0LCBjb25zdCBGb3JtYXRTcGVjPEFyZ3MuLi4+JiBmb3JtYXQKIAogLy8g
U3RyZWFtRm9ybWF0KCkKIC8vCi0vLyBXcml0ZXMgdG8gYW4gb3V0cHV0IHN0cmVhbSBnaXZlbiBh
IGZvcm1hdCBzdGQ6OnN0cmluZyBhbmQgemVybyBvciBtb3JlIGFyZ3VtZW50cywKKy8vIFdyaXRl
cyB0byBhbiBvdXRwdXQgc3RyZWFtIGdpdmVuIGEgZm9ybWF0IHN0cmluZyBhbmQgemVybyBvciBt
b3JlIGFyZ3VtZW50cywKIC8vIGdlbmVyYWxseSBpbiBhIG1hbm5lciB0aGF0IGlzIG1vcmUgZWZm
aWNpZW50IHRoYW4gc3RyZWFtaW5nIHRoZSByZXN1bHQgb2YKIC8vIGBhYnNsOjogU3RyRm9ybWF0
KClgLiBUaGUgcmV0dXJuZWQgb2JqZWN0IG11c3QgYmUgc3RyZWFtZWQgYmVmb3JlIHRoZSBmdWxs
CiAvLyBleHByZXNzaW9uIGVuZHMuCkBAIC0zNDEsNyArMzQxLDcgQEAgQUJTTF9NVVNUX1VTRV9S
RVNVTFQgc3RyX2Zvcm1hdF9pbnRlcm5hbDo6U3RyZWFtYWJsZSBTdHJlYW1Gb3JtYXQoCiAKIC8v
IFByaW50RigpCiAvLwotLy8gV3JpdGVzIHRvIHN0ZG91dCBnaXZlbiBhIGZvcm1hdCBzdGQ6OnN0
cmluZyBhbmQgemVybyBvciBtb3JlIGFyZ3VtZW50cy4gVGhpcworLy8gV3JpdGVzIHRvIHN0ZG91
dCBnaXZlbiBhIGZvcm1hdCBzdHJpbmcgYW5kIHplcm8gb3IgbW9yZSBhcmd1bWVudHMuIFRoaXMK
IC8vIGZ1bmN0aW9uIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIGBzdGQ6OnByaW50Zigp
YCAoYW5kIHR5cGUtc2FmZSk7CiAvLyBwcmVmZXIgYGFic2w6OlByaW50RigpYCBvdmVyIGBzdGQ6
OnByaW50ZigpYC4KIC8vCkBAIC0zNjEsMTQgKzM2MSwxNCBAQCBpbnQgUHJpbnRGKGNvbnN0IEZv
cm1hdFNwZWM8QXJncy4uLj4mIGZvcm1hdCwgY29uc3QgQXJncyYuLi4gYXJncykgewogCiAvLyBG
UHJpbnRGKCkKIC8vCi0vLyBXcml0ZXMgdG8gYSBmaWxlIGdpdmVuIGEgZm9ybWF0IHN0ZDo6c3Ry
aW5nIGFuZCB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLiBUaGlzCisvLyBXcml0ZXMgdG8gYSBmaWxl
IGdpdmVuIGEgZm9ybWF0IHN0cmluZyBhbmQgemVybyBvciBtb3JlIGFyZ3VtZW50cy4gVGhpcwog
Ly8gZnVuY3Rpb24gaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gYHN0ZDo6ZnByaW50Zigp
YCAoYW5kIHR5cGUtc2FmZSk7CiAvLyBwcmVmZXIgYGFic2w6OkZQcmludEYoKWAgb3ZlciBgc3Rk
OjpmcHJpbnRmKClgLgogLy8KIC8vIEV4YW1wbGU6CiAvLwogLy8gICBzdGQ6OnN0cmluZ192aWV3
IHMgPSAiVWxhYW5iYWF0YXIiOwotLy8gICBhYnNsOjpGUHJpbnRGKCJUaGUgY2FwaXRhbCBvZiBN
b25nb2xpYSBpcyAlcyIsIHMpOworLy8gICBhYnNsOjpGUHJpbnRGKHN0ZG91dCwgIlRoZSBjYXBp
dGFsIG9mIE1vbmdvbGlhIGlzICVzIiwgcyk7CiAvLwogLy8gICBPdXRwdXRzOiAiVGhlIGNhcGl0
YWwgb2YgTW9uZ29saWEgaXMgVWxhYW5iYWF0YXIiCiAvLwpAQCAtMzgyLDcgKzM4Miw3IEBAIGlu
dCBGUHJpbnRGKHN0ZDo6RklMRSogb3V0cHV0LCBjb25zdCBGb3JtYXRTcGVjPEFyZ3MuLi4+JiBm
b3JtYXQsCiAKIC8vIFNOUHJpbnRGKCkKIC8vCi0vLyBXcml0ZXMgdG8gYSBzaXplZCBidWZmZXIg
Z2l2ZW4gYSBmb3JtYXQgc3RkOjpzdHJpbmcgYW5kIHplcm8gb3IgbW9yZSBhcmd1bWVudHMuCisv
LyBXcml0ZXMgdG8gYSBzaXplZCBidWZmZXIgZ2l2ZW4gYSBmb3JtYXQgc3RyaW5nIGFuZCB6ZXJv
IG9yIG1vcmUgYXJndW1lbnRzLgogLy8gVGhpcyBmdW5jdGlvbiBpcyBmdW5jdGlvbmFsbHkgZXF1
aXZhbGVudCB0byBgc3RkOjpzbnByaW50ZigpYCAoYW5kCiAvLyB0eXBlLXNhZmUpOyBwcmVmZXIg
YGFic2w6OlNOUHJpbnRGKClgIG92ZXIgYHN0ZDo6c25wcmludGYoKWAuCiAvLwpAQCAtNDMwLDE0
ICs0MzAsMTQgQEAgY2xhc3MgRm9ybWF0UmF3U2luayB7CiAKIC8vIEZvcm1hdCgpCiAvLwotLy8g
V3JpdGVzIGEgZm9ybWF0dGVkIHN0ZDo6c3RyaW5nIHRvIGFuIGFyYml0cmFyeSBzaW5rIG9iamVj
dCAoaW1wbGVtZW50aW5nIHRoZQotLy8gYGFic2w6OkZvcm1hdFJhd1NpbmtgIGludGVyZmFjZSks
IHVzaW5nIGEgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCB6ZXJvIG9yIG1vcmUKKy8vIFdyaXRlcyBh
IGZvcm1hdHRlZCBzdHJpbmcgdG8gYW4gYXJiaXRyYXJ5IHNpbmsgb2JqZWN0IChpbXBsZW1lbnRp
bmcgdGhlCisvLyBgYWJzbDo6Rm9ybWF0UmF3U2lua2AgaW50ZXJmYWNlKSwgdXNpbmcgYSBmb3Jt
YXQgc3RyaW5nIGFuZCB6ZXJvIG9yIG1vcmUKIC8vIGFkZGl0aW9uYWwgYXJndW1lbnRzLgogLy8K
IC8vIEJ5IGRlZmF1bHQsIGBzdHJpbmdgIGFuZCBgc3RkOjpvc3RyZWFtYCBhcmUgc3VwcG9ydGVk
IGFzIGRlc3RpbmF0aW9uIG9iamVjdHMuCiAvLwogLy8gYGFic2w6OkZvcm1hdCgpYCBpcyBhIGdl
bmVyaWMgdmVyc2lvbiBvZiBgYWJzbDo6U3RyRm9ybWF0KCksIGZvciBjdXN0b20KLS8vIHNpbmtz
LiBUaGUgZm9ybWF0IHN0ZDo6c3RyaW5nLCBsaWtlIGZvcm1hdCBzdHJpbmdzIGZvciBgU3RyRm9y
bWF0KClgLCBpcyBjaGVja2VkCisvLyBzaW5rcy4gVGhlIGZvcm1hdCBzdHJpbmcsIGxpa2UgZm9y
bWF0IHN0cmluZ3MgZm9yIGBTdHJGb3JtYXQoKWAsIGlzIGNoZWNrZWQKIC8vIGF0IGNvbXBpbGUt
dGltZS4KIC8vCiAvLyBPbiBmYWlsdXJlLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCBh
bmQgdGhlIHN0YXRlIG9mIHRoZSBzaW5rIGlzCkBAIC00NjMsMTMgKzQ2MywxMyBAQCB1c2luZyBG
b3JtYXRBcmcgPSBzdHJfZm9ybWF0X2ludGVybmFsOjpGb3JtYXRBcmdJbXBsOwogCiAvLyBGb3Jt
YXRVbnR5cGVkKCkKIC8vCi0vLyBXcml0ZXMgYSBmb3JtYXR0ZWQgc3RkOjpzdHJpbmcgdG8gYW4g
YXJiaXRyYXJ5IHNpbmsgb2JqZWN0IChpbXBsZW1lbnRpbmcgdGhlCisvLyBXcml0ZXMgYSBmb3Jt
YXR0ZWQgc3RyaW5nIHRvIGFuIGFyYml0cmFyeSBzaW5rIG9iamVjdCAoaW1wbGVtZW50aW5nIHRo
ZQogLy8gYGFic2w6OkZvcm1hdFJhd1NpbmtgIGludGVyZmFjZSksIHVzaW5nIGFuIGBVbnR5cGVk
Rm9ybWF0U3BlY2AgYW5kIHplcm8gb3IKIC8vIG1vcmUgYWRkaXRpb25hbCBhcmd1bWVudHMuCiAv
LwogLy8gVGhpcyBmdW5jdGlvbiBhY3RzIGFzIHRoZSBtb3N0IGdlbmVyaWMgZm9ybWF0dGluZyBm
dW5jdGlvbiBpbiB0aGUKIC8vIGBzdHJfZm9ybWF0YCBsaWJyYXJ5LiBUaGUgY2FsbGVyIHByb3Zp
ZGVzIGEgcmF3IHNpbmssIGFuIHVuY2hlY2tlZCBmb3JtYXQKLS8vIHN0ZDo6c3RyaW5nLCBhbmQg
KHVzdWFsbHkpIGEgcnVudGltZSBzcGVjaWZpZWQgbGlzdCBvZiBhcmd1bWVudHM7IG5vIGNvbXBp
bGUtdGltZQorLy8gc3RyaW5nLCBhbmQgKHVzdWFsbHkpIGEgcnVudGltZSBzcGVjaWZpZWQgbGlz
dCBvZiBhcmd1bWVudHM7IG5vIGNvbXBpbGUtdGltZQogLy8gY2hlY2tpbmcgb2YgZm9ybWF0dGlu
ZyBpcyBwZXJmb3JtZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24uIEFzIGEgcmVzdWx0LCBhCiAvLyBj
YWxsZXIgc2hvdWxkIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgdG8gdmVyaWZ5IHRoYXQgbm8gZXJy
b3Igb2NjdXJyZWQuCiAvLyBPbiBmYWlsdXJlLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNl
YCBhbmQgdGhlIHN0YXRlIG9mIHRoZSBzaW5rIGlzCkBAIC00ODMsOSArNDgzLDkgQEAgdXNpbmcg
Rm9ybWF0QXJnID0gc3RyX2Zvcm1hdF9pbnRlcm5hbDo6Rm9ybWF0QXJnSW1wbDsKIC8vCiAvLyBF
eGFtcGxlOgogLy8KLS8vICAgc3RkOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gRm9ybWF0RHluYW1p
Yyhjb25zdCBzdGQ6OnN0cmluZyYgaW5fZm9ybWF0LAotLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2ZWN0b3I8c3RkOjpzdHJpbmc+JiBpbl9hcmdzKSB7Ci0v
LyAgICAgc3RkOjpzdHJpbmcgb3V0OworLy8gICBzdGQ6Om9wdGlvbmFsPHN0cmluZz4gRm9ybWF0
RHluYW1pYyhjb25zdCBzdHJpbmcmIGluX2Zvcm1hdCwKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yPHN0cmluZz4mIGluX2FyZ3MpIHsKKy8vICAg
ICBzdHJpbmcgb3V0OwogLy8gICAgIHN0ZDo6dmVjdG9yPGFic2w6OkZvcm1hdEFyZz4gYXJnczsK
IC8vICAgICBmb3IgKGNvbnN0IGF1dG8mIHYgOiBpbl9hcmdzKSB7CiAvLyAgICAgICAvLyBJdCBp
cyBpbXBvcnRhbnQgdGhhdCAndicgaXMgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdHMgaW4gaW5f
YXJncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2Zvcm1hdF90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvc3RyaW5ncy9zdHJfZm9ybWF0X3Rlc3QuY2MKaW5kZXggZmVkNzVmYWZiNWM2NWMxMWI5MmY4
ZWRiY2E1MzhhNGFjZGQxMTc3Yy4uYWExNGUyMTE3MDlhYjczOTM3OTZhMzIwODMwYzc1NTkxNmFj
Yzg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfZm9ybWF0X3Rlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9zdHJfZm9ybWF0X3Rlc3QuY2MKQEAgLTM5MSw3ICszOTEsNyBAQCBURVNU
KFN0ckZvcm1hdCwgQmVoYXZlc0FzRG9jdW1lbnRlZCkgewogI2VuZGlmCiAKICAgLy8gT3RoZXIg
Y29udmVyc2lvbgotICBpbnQ2NF90IHZhbHVlID0gMHg3ZmZkZWI2OworICBpbnQ2NF90IHZhbHVl
ID0gMHg3ZmZkZWI0OwogICBhdXRvIHB0cl92YWx1ZSA9IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
dmFsdWUpOwogICBjb25zdCBpbnQmIHNvbWV0aGluZyA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0
IGludCo+KHB0cl92YWx1ZSk7CiAgIEVYUEVDVF9FUShTdHJGb3JtYXQoIiVwIiwgJnNvbWV0aGlu
ZyksIFN0ckZvcm1hdCgiMHgleCIsIHB0cl92YWx1ZSkpOwpAQCAtNjAxLDMgKzYwMSwzOSBAQCBU
RVNUX0YoUGFyc2VkRm9ybWF0VGVzdCwgUmVncmVzc2lvbk1peFBvc2l0aW9uYWwpIHsKIAogfSAg
Ly8gbmFtZXNwYWNlCiB9ICAvLyBuYW1lc3BhY2UgYWJzbAorCisvLyBTb21lIGNvZGVnZW4gdGh1
bmtzIHRoYXQgd2UgY2FuIHVzZSB0byBlYXNpbHkgZHVtcCB0aGUgZ2VuZXJhdGVkIGFzc2VtYmx5
IGZvcgorLy8gZGlmZmVyZW50IFN0ckZvcm1hdCBjYWxscy4KKworaW5saW5lIHN0ZDo6c3RyaW5n
IENvZGVnZW5BYnNsU3RyRm9ybWF0SW50KGludCBpKSB7CisgIHJldHVybiBhYnNsOjpTdHJGb3Jt
YXQoIiVkIiwgaSk7Cit9CisKK2lubGluZSBzdGQ6OnN0cmluZyBDb2RlZ2VuQWJzbFN0ckZvcm1h
dEludFN0cmluZ0ludDY0KGludCBpLCBjb25zdCBzdGQ6OnN0cmluZyYgcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGk2NCkgeworICBy
ZXR1cm4gYWJzbDo6U3RyRm9ybWF0KCIlZCAlcyAlZCIsIGksIHMsIGk2NCk7Cit9CisKK2lubGlu
ZSB2b2lkIENvZGVnZW5BYnNsU3RyQXBwZW5kRm9ybWF0SW50KHN0ZDo6c3RyaW5nKiBvdXQsIGlu
dCBpKSB7CisgIGFic2w6OlN0ckFwcGVuZEZvcm1hdChvdXQsICIlZCIsIGkpOworfQorCitpbmxp
bmUgdm9pZCBDb2RlZ2VuQWJzbFN0ckFwcGVuZEZvcm1hdEludFN0cmluZ0ludDY0KHN0ZDo6c3Ry
aW5nKiBvdXQsIGludCBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBpNjQpIHsKKyAgYWJzbDo6
U3RyQXBwZW5kRm9ybWF0KG91dCwgIiVkICVzICVkIiwgaSwgcywgaTY0KTsKK30KKworYXV0byBh
YnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29kZWdlbl9mdW5jcyA9IHN0ZDo6bWFrZV90
dXBsZSgKKyAgICBDb2RlZ2VuQWJzbFN0ckZvcm1hdEludCwgQ29kZWdlbkFic2xTdHJGb3JtYXRJ
bnRTdHJpbmdJbnQ2NCwKKyAgICBDb2RlZ2VuQWJzbFN0ckFwcGVuZEZvcm1hdEludCwgQ29kZWdl
bkFic2xTdHJBcHBlbmRGb3JtYXRJbnRTdHJpbmdJbnQ2NCk7CisKK2Jvb2wgYWJzbF9pbnRlcm5h
bF9zdHJfZm9ybWF0X2ZvcmNlX2NvZGVnZW5fYWx3YXlzX2ZhbHNlOworLy8gRm9yY2UgdGhlIGNv
bXBpbGVyIHRvIGdlbmVyYXRlIHRoZSBmdW5jdGlvbnMgYnkgbWFraW5nIGl0IGxvb2sgbGlrZSB3
ZQorLy8gZXNjYXBlIHRoZSBmdW5jdGlvbiBwb2ludGVycy4KKy8vIEl0IGNhbid0IHN0YXRpY2Fs
bHkga25vdyB0aGF0CisvLyBhYnNsX2ludGVybmFsX3N0cl9mb3JtYXRfZm9yY2VfY29kZWdlbl9h
bHdheXNfZmFsc2UgaXMgbm90IGNoYW5nZWQgYnkgc29tZW9uZQorLy8gZWxzZS4KK2Jvb2wgYWJz
bF9pbnRlcm5hbF9zdHJfZm9ybWF0X2ZvcmNlX2NvZGVnZW4gPQorICAgIGFic2xfaW50ZXJuYWxf
c3RyX2Zvcm1hdF9mb3JjZV9jb2RlZ2VuX2Fsd2F5c19mYWxzZSAmJgorICAgIHByaW50ZigiJXAi
LCAmYWJzbF9pbnRlcm5hbF9zdHJfZm9ybWF0X2ZvcmNlX2NvZGVnZW5fZnVuY3MpID09IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9qb2luLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9q
b2luLmgKaW5kZXggYmQ0ZDBlMWQ5MzI0Y2M3MjkyMTQ0NDk5MzViNTczMzdhNjcxNmZiNy4uZjk2
MTFhZDNiNDdkNzJkMGQ5OTJiZDJiZWY5MDc1Yzg2MDhmZDI1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncy9zdHJfam9pbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX2pvaW4uaApAQCAtMTgs
MTAgKzE4LDEwIEBACiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIFRoaXMgaGVhZGVy
IGZpbGUgY29udGFpbnMgZnVuY3Rpb25zIGZvciBqb2luaW5nIGEgcmFuZ2Ugb2YgZWxlbWVudHMg
YW5kCi0vLyByZXR1cm5pbmcgdGhlIHJlc3VsdCBhcyBhIHN0ZDo6c3RyaW5nLiBTdHJKb2luIG9w
ZXJhdGlvbnMgYXJlIHNwZWNpZmllZCBieSBwYXNzaW5nCi0vLyBhIHJhbmdlLCBhIHNlcGFyYXRv
ciBzdGQ6OnN0cmluZyB0byB1c2UgYmV0d2VlbiB0aGUgZWxlbWVudHMgam9pbmVkLCBhbmQgYW4K
Ky8vIHJldHVybmluZyB0aGUgcmVzdWx0IGFzIGEgc3RyaW5nLiBTdHJKb2luIG9wZXJhdGlvbnMg
YXJlIHNwZWNpZmllZCBieSBwYXNzaW5nCisvLyBhIHJhbmdlLCBhIHNlcGFyYXRvciBzdHJpbmcg
dG8gdXNlIGJldHdlZW4gdGhlIGVsZW1lbnRzIGpvaW5lZCwgYW5kIGFuCiAvLyBvcHRpb25hbCBG
b3JtYXR0ZXIgcmVzcG9uc2libGUgZm9yIGNvbnZlcnRpbmcgZWFjaCBhcmd1bWVudCBpbiB0aGUg
cmFuZ2UgdG8gYQotLy8gc3RkOjpzdHJpbmcuIElmIG9taXR0ZWQsIGEgZGVmYXVsdCBgQWxwaGFO
dW1Gb3JtYXR0ZXIoKWAgaXMgY2FsbGVkIG9uIHRoZSBlbGVtZW50cworLy8gc3RyaW5nLiBJZiBv
bWl0dGVkLCBhIGRlZmF1bHQgYEFscGhhTnVtRm9ybWF0dGVyKClgIGlzIGNhbGxlZCBvbiB0aGUg
ZWxlbWVudHMKIC8vIHRvIGJlIGpvaW5lZCwgdXNpbmcgdGhlIHNhbWUgZm9ybWF0dGluZyB0aGF0
IGBhYnNsOjpTdHJDYXQoKWAgdXNlcy4gVGhpcwogLy8gcGFja2FnZSBkZWZpbmVzIGEgbnVtYmVy
IG9mIGRlZmF1bHQgZm9ybWF0dGVycywgYW5kIHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duCiAvLyBp
bXBsZW1lbnRhdGlvbnMuCkBAIC0yOSw3ICsyOSw3IEBACiAvLyBSYW5nZXMgYXJlIHNwZWNpZmll
ZCBieSBwYXNzaW5nIGEgY29udGFpbmVyIHdpdGggYHN0ZDo6YmVnaW4oKWAgYW5kCiAvLyBgc3Rk
OjplbmQoKWAgaXRlcmF0b3JzLCBjb250YWluZXItc3BlY2lmaWMgYGJlZ2luKClgIGFuZCBgZW5k
KClgIGl0ZXJhdG9ycywgYQogLy8gYnJhY2UtaW5pdGlhbGl6ZWQgYHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdGAsIG9yIGEgYHN0ZDo6dHVwbGVgIG9mIGhldGVyb2dlbmVvdXMKLS8vIG9iamVjdHMuIFRo
ZSBzZXBhcmF0b3Igc3RkOjpzdHJpbmcgaXMgc3BlY2lmaWVkIGFzIGFuIGBhYnNsOjpzdHJpbmdf
dmlld2AuCisvLyBvYmplY3RzLiBUaGUgc2VwYXJhdG9yIHN0cmluZyBpcyBzcGVjaWZpZWQgYXMg
YW4gYGFic2w6OnN0cmluZ192aWV3YC4KIC8vCiAvLyBCZWNhdXNlIHRoZSBkZWZhdWx0IGZvcm1h
dHRlciB1c2VzIHRoZSBgYWJzbDo6QWxwaGFOdW1gIGNsYXNzLAogLy8gYGFic2w6OlN0ckpvaW4o
KWAsIGxpa2UgYGFic2w6OlN0ckNhdCgpYCwgd2lsbCB3b3JrIG91dC1vZi10aGUtYm94IG9uCkBA
IC0zNyw4ICszNyw4IEBACiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiB2ID0geyJmb28iLCAiYmFyIiwgImJheiJ9OwotLy8gICBzdGQ6OnN0cmluZyBz
ID0gYWJzbDo6U3RySm9pbih2LCAiLSIpOworLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHYgPSB7
ImZvbyIsICJiYXIiLCAiYmF6In07CisvLyAgIHN0cmluZyBzID0gYWJzbDo6U3RySm9pbih2LCAi
LSIpOwogLy8gICBFWFBFQ1RfRVEoImZvby1iYXItYmF6Iiwgcyk7CiAvLwogLy8gU2VlIGNvbW1l
bnRzIG9uIHRoZSBgYWJzbDo6U3RySm9pbigpYCBmdW5jdGlvbiBmb3IgbW9yZSBleGFtcGxlcy4K
QEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDxzdHJpbmc+
CiAjaW5jbHVkZSA8dHVwbGU+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dXRp
bGl0eT4KIAogI2luY2x1ZGUgImFic2wvYmFzZS9tYWNyb3MuaCIKQEAgLTY1LDE2ICs2NiwxNiBA
QCBuYW1lc3BhY2UgYWJzbCB7CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEEgRm9y
bWF0dGVyIGlzIGEgZnVuY3Rpb24gb2JqZWN0IHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGZvcm1h
dHRpbmcgaXRzCi0vLyBhcmd1bWVudCBhcyBhIHN0ZDo6c3RyaW5nIGFuZCBhcHBlbmRpbmcgaXQg
dG8gYSBnaXZlbiBvdXRwdXQgc3RkOjpzdHJpbmcuIEZvcm1hdHRlcnMKKy8vIGFyZ3VtZW50IGFz
IGEgc3RyaW5nIGFuZCBhcHBlbmRpbmcgaXQgdG8gYSBnaXZlbiBvdXRwdXQgc3RyaW5nLiBGb3Jt
YXR0ZXJzCiAvLyBtYXkgYmUgaW1wbGVtZW50ZWQgYXMgZnVuY3Rpb24gb2JqZWN0cywgbGFtYmRh
cywgb3Igbm9ybWFsIGZ1bmN0aW9ucy4gWW91IG1heQogLy8gcHJvdmlkZSB5b3VyIG93biBGb3Jt
YXR0ZXIgdG8gZW5hYmxlIGBhYnNsOjpTdHJKb2luKClgIHRvIHdvcmsgd2l0aCBhcmJpdHJhcnkK
IC8vIHR5cGVzLgogLy8KIC8vIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhIGN1c3Rv
bSBGb3JtYXR0ZXIgdGhhdCBzaW1wbHkgdXNlcwotLy8gYHN0ZDo6dG9fc3RyaW5nKClgIHRvIGZv
cm1hdCBhbiBpbnRlZ2VyIGFzIGEgc3RkOjpzdHJpbmcuCisvLyBgc3RkOjp0b19zdHJpbmcoKWAg
dG8gZm9ybWF0IGFuIGludGVnZXIgYXMgYSBzdHJpbmcuCiAvLwogLy8gICBzdHJ1Y3QgTXlGb3Jt
YXR0ZXIgewotLy8gICAgIHZvaWQgb3BlcmF0b3IoKShzdGQ6OnN0cmluZyogb3V0LCBpbnQgaSkg
Y29uc3QgeworLy8gICAgIHZvaWQgb3BlcmF0b3IoKShzdHJpbmcqIG91dCwgaW50IGkpIGNvbnN0
IHsKIC8vICAgICAgIG91dC0+YXBwZW5kKHN0ZDo6dG9fc3RyaW5nKGkpKTsKIC8vICAgICB9CiAv
LyAgIH07CkBAIC04Myw3ICs4NCw3IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIGFyZ3VtZW50IHRv
IGBhYnNsOjpTdHJKb2luKClgOgogLy8KIC8vICAgc3RkOjp2ZWN0b3I8aW50PiB2ID0gezEsIDIs
IDMsIDR9OwotLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RySm9pbih2LCAiLSIsIE15Rm9y
bWF0dGVyKCkpOworLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4odiwgIi0iLCBNeUZvcm1h
dHRlcigpKTsKIC8vICAgRVhQRUNUX0VRKCIxLTItMy00Iiwgcyk7CiAvLwogLy8gVGhlIGZvbGxv
d2luZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGFyZSBwcm92aWRlZCB3aXRoaW4gdGhpcyBmaWxlOgpA
QCAtMTU1LDEwICsxNTYsMTAgQEAgRGVyZWZlcmVuY2VGb3JtYXR0ZXIoKSB7CiAvLyBTdHJKb2lu
KCkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwotLy8gSm9pbnMgYSByYW5nZSBvZiBlbGVt
ZW50cyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIGEgc3RkOjpzdHJpbmcuCi0vLyBgYWJzbDo6
U3RySm9pbigpYCB0YWtlcyBhIHJhbmdlLCBhIHNlcGFyYXRvciBzdGQ6OnN0cmluZyB0byB1c2Ug
YmV0d2VlbiB0aGUKKy8vIEpvaW5zIGEgcmFuZ2Ugb2YgZWxlbWVudHMgYW5kIHJldHVybnMgdGhl
IHJlc3VsdCBhcyBhIHN0cmluZy4KKy8vIGBhYnNsOjpTdHJKb2luKClgIHRha2VzIGEgcmFuZ2Us
IGEgc2VwYXJhdG9yIHN0cmluZyB0byB1c2UgYmV0d2VlbiB0aGUKIC8vIGVsZW1lbnRzIGpvaW5l
ZCwgYW5kIGFuIG9wdGlvbmFsIEZvcm1hdHRlciByZXNwb25zaWJsZSBmb3IgY29udmVydGluZyBl
YWNoCi0vLyBhcmd1bWVudCBpbiB0aGUgcmFuZ2UgdG8gYSBzdGQ6OnN0cmluZy4KKy8vIGFyZ3Vt
ZW50IGluIHRoZSByYW5nZSB0byBhIHN0cmluZy4KIC8vCiAvLyBJZiBvbWl0dGVkLCB0aGUgZGVm
YXVsdCBgQWxwaGFOdW1Gb3JtYXR0ZXIoKWAgaXMgY2FsbGVkIG9uIHRoZSBlbGVtZW50cyB0byBi
ZQogLy8gam9pbmVkLgpAQCAtMTY2LDIyICsxNjcsMjIgQEAgRGVyZWZlcmVuY2VGb3JtYXR0ZXIo
KSB7CiAvLyBFeGFtcGxlIDE6CiAvLyAgIC8vIEpvaW5zIGEgY29sbGVjdGlvbiBvZiBzdHJpbmdz
LiBUaGlzIHBhdHRlcm4gYWxzbyB3b3JrcyB3aXRoIGEgY29sbGVjdGlvbgogLy8gICAvLyBvZiBg
YWJzbDo6c3RyaW5nX3ZpZXdgIG9yIGV2ZW4gYGNvbnN0IGNoYXIqYC4KLS8vICAgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IHYgPSB7ImZvbyIsICJiYXIiLCAiYmF6In07Ci0vLyAgIHN0ZDo6c3Ry
aW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CisvLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4g
diA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKKy8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJKb2lu
KHYsICItIik7CiAvLyAgIEVYUEVDVF9FUSgiZm9vLWJhci1iYXoiLCBzKTsKIC8vCiAvLyBFeGFt
cGxlIDI6CiAvLyAgIC8vIEpvaW5zIHRoZSB2YWx1ZXMgaW4gdGhlIGdpdmVuIGBzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8PmAgc3BlY2lmaWVkIHVzaW5nCiAvLyAgIC8vIGJyYWNlIGluaXRpYWxpemF0
aW9uLiBUaGlzIHBhdHRlcm4gYWxzbyB3b3JrcyB3aXRoIGFuIGluaXRpYWxpemVyX2xpc3QKIC8v
ICAgLy8gb2YgaW50cyBvciBgYWJzbDo6c3RyaW5nX3ZpZXdgIC0tIGFueSBgQWxwaGFOdW1gLWNv
bXBhdGlibGUgdHlwZS4KLS8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4oeyJmb28i
LCAiYmFyIiwgImJheiJ9LCAiLSIpOworLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4oeyJm
b28iLCAiYmFyIiwgImJheiJ9LCAiLSIpOwogLy8gICBFWFBFQ1RfRVEoImZvby1iYXItYmF6Iiwg
cyk7CiAvLwogLy8gRXhhbXBsZSAzOgogLy8gICAvLyBKb2lucyBhIGNvbGxlY3Rpb24gb2YgaW50
cy4gVGhpcyBwYXR0ZXJuIGFsc28gd29ya3Mgd2l0aCBmbG9hdHMsCiAvLyAgIC8vIGRvdWJsZXMs
IGludDY0cyAtLSBhbnkgYFN0ckNhdCgpYC1jb21wYXRpYmxlIHR5cGUuCiAvLyAgIHN0ZDo6dmVj
dG9yPGludD4gdiA9IHsxLCAyLCAzLCAtNH07Ci0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpT
dHJKb2luKHYsICItIik7CisvLyAgIHN0cmluZyBzID0gYWJzbDo6U3RySm9pbih2LCAiLSIpOwog
Ly8gICBFWFBFQ1RfRVEoIjEtMi0zLS00Iiwgcyk7CiAvLwogLy8gRXhhbXBsZSA0OgpAQCAtMTky
LDcgKzE5Myw3IEBAIERlcmVmZXJlbmNlRm9ybWF0dGVyKCkgewogLy8gICAvLyBgc3RkOjp2ZWN0
b3I8aW50Kj5gLgogLy8gICBpbnQgeCA9IDEsIHkgPSAyLCB6ID0gMzsKIC8vICAgc3RkOjp2ZWN0
b3I8aW50Kj4gdiA9IHsmeCwgJnksICZ6fTsKLS8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0
ckpvaW4odiwgIi0iKTsKKy8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CiAv
LyAgIEVYUEVDVF9FUSgiMS0yLTMiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDU6CkBAIC0yMDEsNDIg
KzIwMiw0MiBAQCBEZXJlZmVyZW5jZUZvcm1hdHRlcigpIHsKIC8vICAgdi5lbXBsYWNlX2JhY2so
bmV3IGludCgxKSk7CiAvLyAgIHYuZW1wbGFjZV9iYWNrKG5ldyBpbnQoMikpOwogLy8gICB2LmVt
cGxhY2VfYmFjayhuZXcgaW50KDMpKTsKLS8vICAgc3RkOjpzdHJpbmcgcyA9IGFic2w6OlN0ckpv
aW4odiwgIi0iKTsKKy8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJKb2luKHYsICItIik7CiAvLyAg
IEVYUEVDVF9FUSgiMS0yLTMiLCBzKTsKIC8vCiAvLyBFeGFtcGxlIDY6CiAvLyAgIC8vIEpvaW5z
IGEgYHN0ZDo6bWFwYCwgd2l0aCBlYWNoIGtleS12YWx1ZSBwYWlyIHNlcGFyYXRlZCBieSBhbiBl
cXVhbHMKIC8vICAgLy8gc2lnbi4gVGhpcyBwYXR0ZXJuIHdvdWxkIGFsc28gd29yayB3aXRoLCBz
YXksIGEKIC8vICAgLy8gYHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjw+PmAuCi0vLyAgIHN0ZDo6bWFw
PHN0ZDo6c3RyaW5nLCBpbnQ+IG0gPSB7CisvLyAgIHN0ZDo6bWFwPHN0cmluZywgaW50PiBtID0g
ewogLy8gICAgICAgc3RkOjptYWtlX3BhaXIoImEiLCAxKSwKIC8vICAgICAgIHN0ZDo6bWFrZV9w
YWlyKCJiIiwgMiksCiAvLyAgICAgICBzdGQ6Om1ha2VfcGFpcigiYyIsIDMpfTsKLS8vICAgc3Rk
OjpzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4obSwgIiwiLCBhYnNsOjpQYWlyRm9ybWF0dGVyKCI9
IikpOworLy8gICBzdHJpbmcgcyA9IGFic2w6OlN0ckpvaW4obSwgIiwiLCBhYnNsOjpQYWlyRm9y
bWF0dGVyKCI9IikpOwogLy8gICBFWFBFQ1RfRVEoImE9MSxiPTIsYz0zIiwgcyk7CiAvLwogLy8g
RXhhbXBsZSA3OgogLy8gICAvLyBUaGVzZSBleGFtcGxlcyBzaG93IGhvdyBgYWJzbDo6U3RySm9p
bigpYCBoYW5kbGVzIGEgZmV3IGNvbW1vbiBlZGdlCiAvLyAgIC8vIGNhc2VzOgotLy8gICBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gdl9lbXB0eTsKKy8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiB2
X2VtcHR5OwogLy8gICBFWFBFQ1RfRVEoIiIsIGFic2w6OlN0ckpvaW4odl9lbXB0eSwgIi0iKSk7
CiAvLwotLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdl9vbmVfaXRlbSA9IHsiZm9vIn07
CisvLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdl9vbmVfaXRlbSA9IHsiZm9vIn07CiAvLyAgIEVY
UEVDVF9FUSgiZm9vIiwgYWJzbDo6U3RySm9pbih2X29uZV9pdGVtLCAiLSIpKTsKIC8vCi0vLyAg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2X2VtcHR5X3N0cmluZyA9IHsiIn07CisvLyAgIHN0
ZDo6dmVjdG9yPHN0cmluZz4gdl9lbXB0eV9zdHJpbmcgPSB7IiJ9OwogLy8gICBFWFBFQ1RfRVEo
IiIsIGFic2w6OlN0ckpvaW4odl9lbXB0eV9zdHJpbmcsICItIikpOwogLy8KLS8vICAgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+IHZfb25lX2l0ZW1fZW1wdHlfc3RyaW5nID0geyJhIiwgIiJ9Owor
Ly8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHZfb25lX2l0ZW1fZW1wdHlfc3RyaW5nID0geyJhIiwg
IiJ9OwogLy8gICBFWFBFQ1RfRVEoImEtIiwgYWJzbDo6U3RySm9pbih2X29uZV9pdGVtX2VtcHR5
X3N0cmluZywgIi0iKSk7CiAvLwotLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdl90d29f
ZW1wdHlfc3RyaW5nID0geyIiLCAiIn07CisvLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gdl90d29f
ZW1wdHlfc3RyaW5nID0geyIiLCAiIn07CiAvLyAgIEVYUEVDVF9FUSgiLSIsIGFic2w6OlN0ckpv
aW4odl90d29fZW1wdHlfc3RyaW5nLCAiLSIpKTsKIC8vCiAvLyBFeGFtcGxlIDg6CiAvLyAgIC8v
IEpvaW5zIGEgYHN0ZDo6dHVwbGU8VC4uLj5gIG9mIGhldGVyb2dlbmVvdXMgdHlwZXMsIGNvbnZl
cnRpbmcgZWFjaCB0bwotLy8gICAvLyBhIHN0ZDo6c3RyaW5nIHVzaW5nIHRoZSBgYWJzbDo6QWxw
aGFOdW1gIGNsYXNzLgotLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3RySm9pbihzdGQ6Om1h
a2VfdHVwbGUoMTIzLCAiYWJjIiwgMC40NTYpLCAiLSIpOworLy8gICAvLyBhIHN0cmluZyB1c2lu
ZyB0aGUgYGFic2w6OkFscGhhTnVtYCBjbGFzcy4KKy8vICAgc3RyaW5nIHMgPSBhYnNsOjpTdHJK
b2luKHN0ZDo6bWFrZV90dXBsZSgxMjMsICJhYmMiLCAwLjQ1NiksICItIik7CiAvLyAgIEVYUEVD
VF9FUSgiMTIzLWFiYy0wLjQ1NiIsIHMpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3Is
IHR5cGVuYW1lIEZvcm1hdHRlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxh
Y2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxhY2UuaAppbmRleCBmNGQ5YmI5NTQ1ZDY4OTc2
MjE4MGExYTQzMGU2NGI1MDY1YmNmMjdjLi4zYmZlNGM2MWViZDE1MDRkM2M4ZWI4ZTUwYmE4NzBm
YThmYTY4OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9yZXBsYWNlLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZS5oCkBAIC0xNywxOSArMTcsMTkgQEAKIC8vIEZpbGU6
IHN0cl9yZXBsYWNlLmgKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwotLy8gVGhpcyBmaWxl
IGRlZmluZXMgYGFic2w6OlN0clJlcGxhY2VBbGwoKWAsIGEgZ2VuZXJhbC1wdXJwb3NlIHN0ZDo6
c3RyaW5nCisvLyBUaGlzIGZpbGUgZGVmaW5lcyBgYWJzbDo6U3RyUmVwbGFjZUFsbCgpYCwgYSBn
ZW5lcmFsLXB1cnBvc2Ugc3RyaW5nCiAvLyByZXBsYWNlbWVudCBmdW5jdGlvbiBkZXNpZ25lZCBm
b3IgbGFyZ2UsIGFyYml0cmFyeSB0ZXh0IHN1YnN0aXR1dGlvbnMsCiAvLyBlc3BlY2lhbGx5IG9u
IHN0cmluZ3Mgd2hpY2ggeW91IGFyZSByZWNlaXZpbmcgZnJvbSBzb21lIG90aGVyIHN5c3RlbSBm
b3IKIC8vIGZ1cnRoZXIgcHJvY2Vzc2luZyAoZS5nLiBwcm9jZXNzaW5nIHJlZ3VsYXIgZXhwcmVz
c2lvbnMsIGVzY2FwaW5nIEhUTUwKLS8vIGVudGl0aWVzLCBldGMuIGBTdHJSZXBsYWNlQWxsYCBp
cyBkZXNpZ25lZCB0byBiZSBlZmZpY2llbnQgZXZlbiB3aGVuIG9ubHkKKy8vIGVudGl0aWVzLCBl
dGMuKS4gYFN0clJlcGxhY2VBbGxgIGlzIGRlc2lnbmVkIHRvIGJlIGVmZmljaWVudCBldmVuIHdo
ZW4gb25seQogLy8gb25lIHN1YnN0aXR1dGlvbiBpcyBiZWluZyBwZXJmb3JtZWQsIG9yIHdoZW4g
c3Vic3RpdHV0aW9uIGlzIHJhcmUuCiAvLwotLy8gSWYgdGhlIHN0ZDo6c3RyaW5nIGJlaW5nIG1v
ZGlmaWVkIGlzIGtub3duIGF0IGNvbXBpbGUtdGltZSwgYW5kIHRoZSBzdWJzdGl0dXRpb25zCisv
LyBJZiB0aGUgc3RyaW5nIGJlaW5nIG1vZGlmaWVkIGlzIGtub3duIGF0IGNvbXBpbGUtdGltZSwg
YW5kIHRoZSBzdWJzdGl0dXRpb25zCiAvLyB2YXJ5LCBgYWJzbDo6U3Vic3RpdHV0ZSgpYCBtYXkg
YmUgYSBiZXR0ZXIgY2hvaWNlLgogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gc3RkOjpzdHJpbmcg
aHRtbF9lc2NhcGVkID0gYWJzbDo6U3RyUmVwbGFjZUFsbCh1c2VyX2lucHV0LCB7CisvLyBzdHJp
bmcgaHRtbF9lc2NhcGVkID0gYWJzbDo6U3RyUmVwbGFjZUFsbCh1c2VyX2lucHV0LCB7CiAvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IiYiLCAiJmFtcDsifSwK
IC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiPCIsICImbHQ7
In0sCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ij4iLCAi
Jmd0OyJ9LApAQCAtNDksMTYgKzQ5LDE2IEBAIG5hbWVzcGFjZSBhYnNsIHsKIAogLy8gU3RyUmVw
bGFjZUFsbCgpCiAvLwotLy8gUmVwbGFjZXMgY2hhcmFjdGVyIHNlcXVlbmNlcyB3aXRoaW4gYSBn
aXZlbiBzdGQ6OnN0cmluZyB3aXRoIHJlcGxhY2VtZW50cyBwcm92aWRlZAorLy8gUmVwbGFjZXMg
Y2hhcmFjdGVyIHNlcXVlbmNlcyB3aXRoaW4gYSBnaXZlbiBzdHJpbmcgd2l0aCByZXBsYWNlbWVu
dHMgcHJvdmlkZWQKIC8vIHdpdGhpbiBhbiBpbml0aWFsaXplciBsaXN0IG9mIGtleS92YWx1ZSBw
YWlycy4gQ2FuZGlkYXRlIHJlcGxhY2VtZW50cyBhcmUKLS8vIGNvbnNpZGVyZWQgaW4gb3JkZXIg
YXMgdGhleSBvY2N1ciB3aXRoaW4gdGhlIHN0ZDo6c3RyaW5nLCB3aXRoIGVhcmxpZXIgbWF0Y2hl
cworLy8gY29uc2lkZXJlZCBpbiBvcmRlciBhcyB0aGV5IG9jY3VyIHdpdGhpbiB0aGUgc3RyaW5n
LCB3aXRoIGVhcmxpZXIgbWF0Y2hlcwogLy8gdGFraW5nIHByZWNlZGVuY2UsIGFuZCBsb25nZXIg
bWF0Y2hlcyB0YWtpbmcgcHJlY2VkZW5jZSBmb3IgY2FuZGlkYXRlcwotLy8gc3RhcnRpbmcgYXQg
dGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHN0ZDo6c3RyaW5nLiBPbmNlIGEgc3Vic3RpdHV0aW9u
IGlzIG1hZGUsIHRoZQorLy8gc3RhcnRpbmcgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHN0
cmluZy4gT25jZSBhIHN1YnN0aXR1dGlvbiBpcyBtYWRlLCB0aGUKIC8vIHJlcGxhY2VkIHRleHQg
aXMgbm90IGNvbnNpZGVyZWQgZm9yIGFueSBmdXJ0aGVyIHN1YnN0aXR1dGlvbnMuCiAvLwogLy8g
RXhhbXBsZToKIC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdHJSZXBsYWNlQWxsKCIk
d2hvIGJvdWdodCAkY291bnQgI05vdW4uIFRoYW5rcyAkd2hvISIsCisvLyAgIHN0cmluZyBzID0g
YWJzbDo6U3RyUmVwbGFjZUFsbCgiJHdobyBib3VnaHQgJGNvdW50ICNOb3VuLiBUaGFua3MgJHdo
byEiLAogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3siJGNvdW50IiwgYWJz
bDo6U3RyQ2F0KDUpfSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IiR3
aG8iLCAiQm9iIn0sCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyIjTm91
biIsICJBcHBsZXMifX0pOwpAQCAtNzgsMjggKzc4LDI4IEBAIEFCU0xfTVVTVF9VU0VfUkVTVUxU
IHN0ZDo6c3RyaW5nIFN0clJlcGxhY2VBbGwoCiAvLyAgIHJlcGxhY2VtZW50c1siJHdobyJdID0g
IkJvYiI7CiAvLyAgIHJlcGxhY2VtZW50c1siJGNvdW50Il0gPSAiNSI7CiAvLyAgIHJlcGxhY2Vt
ZW50c1siI05vdW4iXSA9ICJBcHBsZXMiOwotLy8gICBzdGQ6OnN0cmluZyBzID0gYWJzbDo6U3Ry
UmVwbGFjZUFsbCgiJHdobyBib3VnaHQgJGNvdW50ICNOb3VuLiBUaGFua3MgJHdobyEiLAorLy8g
ICBzdHJpbmcgcyA9IGFic2w6OlN0clJlcGxhY2VBbGwoIiR3aG8gYm91Z2h0ICRjb3VudCAjTm91
bi4gVGhhbmtzICR3aG8hIiwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cGxhY2VtZW50cyk7CiAvLyAgIEVYUEVDVF9FUSgiQm9iIGJvdWdodCA1IEFwcGxlcy4gVGhhbmtz
IEJvYiEiLCBzKTsKIC8vCiAvLyAgIC8vIEEgc3RkOjp2ZWN0b3Igb2Ygc3RkOjpwYWlyIGVsZW1l
bnRzIGNhbiBiZSBtb3JlIGVmZmljaWVudC4KLS8vICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGNv
bnN0IGFic2w6OnN0cmluZ192aWV3LCBzdGQ6OnN0cmluZz4+IHJlcGxhY2VtZW50czsKKy8vICAg
c3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGNvbnN0IGFic2w6OnN0cmluZ192aWV3LCBzdHJpbmc+PiBy
ZXBsYWNlbWVudHM7CiAvLyAgIHJlcGxhY2VtZW50cy5wdXNoX2JhY2soeyImIiwgIiZhbXA7In0p
OwogLy8gICByZXBsYWNlbWVudHMucHVzaF9iYWNrKHsiPCIsICImbHQ7In0pOwogLy8gICByZXBs
YWNlbWVudHMucHVzaF9iYWNrKHsiPiIsICImZ3Q7In0pOwotLy8gICBzdGQ6OnN0cmluZyBzID0g
YWJzbDo6U3RyUmVwbGFjZUFsbCgiaWYgKHB0ciA8ICZmb28pIiwKKy8vICAgc3RyaW5nIHMgPSBh
YnNsOjpTdHJSZXBsYWNlQWxsKCJpZiAocHRyIDwgJmZvbykiLAogLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzKTsKIC8vICAgRVhQRUNUX0VRKCJpZiAocHRy
ICZsdDsgJmFtcDtmb28pIiwgcyk7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyVG9TdHJNYXBwaW5n
Pgogc3RkOjpzdHJpbmcgU3RyUmVwbGFjZUFsbChhYnNsOjpzdHJpbmdfdmlldyBzLCBjb25zdCBT
dHJUb1N0ck1hcHBpbmcmIHJlcGxhY2VtZW50cyk7CiAKIC8vIE92ZXJsb2FkIG9mIGBTdHJSZXBs
YWNlQWxsKClgIHRvIHJlcGxhY2UgY2hhcmFjdGVyIHNlcXVlbmNlcyB3aXRoaW4gYSBnaXZlbgot
Ly8gb3V0cHV0IHN0ZDo6c3RyaW5nICppbiBwbGFjZSogd2l0aCByZXBsYWNlbWVudHMgcHJvdmlk
ZWQgd2l0aGluIGFuIGluaXRpYWxpemVyCisvLyBvdXRwdXQgc3RyaW5nICppbiBwbGFjZSogd2l0
aCByZXBsYWNlbWVudHMgcHJvdmlkZWQgd2l0aGluIGFuIGluaXRpYWxpemVyCiAvLyBsaXN0IG9m
IGtleS92YWx1ZSBwYWlycywgcmV0dXJuaW5nIHRoZSBudW1iZXIgb2Ygc3Vic3RpdHV0aW9ucyB0
aGF0IG9jY3VycmVkLgogLy8KIC8vIEV4YW1wbGU6CiAvLwotLy8gICBzdGQ6OnN0cmluZyBzID0g
c3RkOjpzdHJpbmcoIiR3aG8gYm91Z2h0ICRjb3VudCAjTm91bi4gVGhhbmtzICR3aG8hIik7Cisv
LyAgIHN0cmluZyBzID0gc3RkOjpzdHJpbmcoIiR3aG8gYm91Z2h0ICRjb3VudCAjTm91bi4gVGhh
bmtzICR3aG8hIik7CiAvLyAgIGludCBjb3VudDsKIC8vICAgY291bnQgPSBhYnNsOjpTdHJSZXBs
YWNlQWxsKHt7IiRjb3VudCIsIGFic2w6OlN0ckNhdCg1KX0sCiAvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7IiR3aG8iLCAiQm9iIn0sCkBAIC0xMTIsMTIgKzExMiwxMiBAQCBpbnQg
U3RyUmVwbGFjZUFsbCgKICAgICBzdGQ6OnN0cmluZyogdGFyZ2V0KTsKIAogLy8gT3ZlcmxvYWQg
b2YgYFN0clJlcGxhY2VBbGwoKWAgdG8gcmVwbGFjZSBwYXR0ZXJucyB3aXRoaW4gYSBnaXZlbiBv
dXRwdXQKLS8vIHN0ZDo6c3RyaW5nICppbiBwbGFjZSogd2l0aCByZXBsYWNlbWVudHMgcHJvdmlk
ZWQgd2l0aGluIGEgY29udGFpbmVyIG9mIGtleS92YWx1ZQorLy8gc3RyaW5nICppbiBwbGFjZSog
d2l0aCByZXBsYWNlbWVudHMgcHJvdmlkZWQgd2l0aGluIGEgY29udGFpbmVyIG9mIGtleS92YWx1
ZQogLy8gcGFpcnMuCiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIHN0ZDo6c3RyaW5nIHMgPSBz
dGQ6OnN0cmluZygiaWYgKHB0ciA8ICZmb28pIik7CisvLyAgIHN0cmluZyBzID0gc3RkOjpzdHJp
bmcoImlmIChwdHIgPCAmZm9vKSIpOwogLy8gICBpbnQgY291bnQgPSBhYnNsOjpTdHJSZXBsYWNl
QWxsKHt7IiYiLCAiJmFtcDsifSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeyI8IiwgIiZsdDsifSwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eyI+IiwgIiZndDsifX0sICZzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3JlcGxh
Y2VfYmVuY2htYXJrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFjZV9iZW5jaG1hcmsuY2MK
aW5kZXggZTYwOGRlOGQxOWU0MWJhNzNjM2Q1NGZmYTM3NjQzYzcyYmU4MDJkYi4uODM4NmYyZTZi
ZjEwZWNlNDZiYTQ3OWFlMjUzZDg3OTY2N2M1ZTFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cy9zdHJfcmVwbGFjZV9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfcmVwbGFj
ZV9iZW5jaG1hcmsuY2MKQEAgLTM4LDE2ICszOCwxNiBAQCBzdHJ1Y3QgUmVwbGFjZW1lbnQgewog
ICAgIHsibGlxdW9yIiwgInNoYWtlcyJ9LCAgICAvLwogfTsKIAotLy8gSGVyZSwgd2Ugc2V0IHVw
IGEgc3RkOjpzdHJpbmcgZm9yIHVzZSBpbiBnbG9iYWwtcmVwbGFjZSBiZW5jaG1hcmtzLgorLy8g
SGVyZSwgd2Ugc2V0IHVwIGEgc3RyaW5nIGZvciB1c2UgaW4gZ2xvYmFsLXJlcGxhY2UgYmVuY2ht
YXJrcy4KIC8vIFdlIHN0YXJ0ZWQgd2l0aCBhIG1pbGxpb24gYmxhbmtzLCBhbmQgdGhlbiBkZXRl
cm1pbmlzdGljYWxseSBpbnNlcnQKLS8vIDEwLDAwMCBjb3BpZXMgZWFjaCBvZiB0d28gcGFuZ3Jh
bXMuICBUaGUgcmVzdWx0IGlzIGEgc3RkOjpzdHJpbmcgdGhhdCBpcworLy8gMTAsMDAwIGNvcGll
cyBlYWNoIG9mIHR3byBwYW5ncmFtcy4gIFRoZSByZXN1bHQgaXMgYSBzdHJpbmcgdGhhdCBpcwog
Ly8gNDAlIGJsYW5rIHNwYWNlIGFuZCA2MCUgdGhlc2Ugd29yZHMuICAndGhlJyBvY2N1cnMgMTgs
MjQ3IHRpbWVzIGFuZAogLy8gYWxsIHRoZSBzdWJzdGl0dXRpb25zIHRvZ2V0aGVyIG9jY3VyIDQ5
LDAwNCB0aW1lcy4KIC8vCi0vLyBXZSB0aGVuIGNyZWF0ZSAiYWZ0ZXJfcmVwbGFjaW5nX3RoZSIg
dG8gYmUgYSBzdGQ6OnN0cmluZyB0aGF0IGlzIGEgcmVzdWx0IG9mCisvLyBXZSB0aGVuIGNyZWF0
ZSAiYWZ0ZXJfcmVwbGFjaW5nX3RoZSIgdG8gYmUgYSBzdHJpbmcgdGhhdCBpcyBhIHJlc3VsdCBv
ZgogLy8gcmVwbGFjaW5nICJ0aGUiIHdpdGggImJveCIgaW4gYmlnX3N0cmluZy4KIC8vCi0vLyBB
bmQgdGhlbiB3ZSBjcmVhdGUgImFmdGVyX3JlcGxhY2luZ19tYW55IiB0byBiZSBhIHN0ZDo6c3Ry
aW5nIHRoYXQgaXMgcmVzdWx0CisvLyBBbmQgdGhlbiB3ZSBjcmVhdGUgImFmdGVyX3JlcGxhY2lu
Z19tYW55IiB0byBiZSBhIHN0cmluZyB0aGF0IGlzIHJlc3VsdAogLy8gb2YgcHJlZmVycmluZyBz
ZXZlcmFsIHN1YnN0aXR1dGlvbnMuCiB2b2lkIFNldFVwU3RyaW5ncygpIHsKICAgaWYgKGJpZ19z
dHJpbmcgPT0gbnVsbHB0cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXQu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5jYwppbmRleCAwMjA3MjEzYzI2YmFmOTEzZDk5
ODE0OTc5NDNkNzg2N2ExY2RlZWVhLi4wYTY4YzUyZDE0ZjE5Yjg4ZDNhZGQyZTM3MjI3YzUxM2M1
OWQxMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zdHJpbmdzL3N0cl9zcGxpdC5jYwpAQCAtNDMsMTAgKzQzLDExIEBAIGFic2w6OnN0cmluZ192
aWV3IEdlbmVyaWNGaW5kKGFic2w6OnN0cmluZ192aWV3IHRleHQsCiAgIGlmIChkZWxpbWl0ZXIu
ZW1wdHkoKSAmJiB0ZXh0Lmxlbmd0aCgpID4gMCkgewogICAgIC8vIFNwZWNpYWwgY2FzZSBmb3Ig
ZW1wdHkgc3RkOjpzdHJpbmcgZGVsaW1pdGVyczogYWx3YXlzIHJldHVybiBhIHplcm8tbGVuZ3Ro
CiAgICAgLy8gYWJzbDo6c3RyaW5nX3ZpZXcgcmVmZXJyaW5nIHRvIHRoZSBpdGVtIGF0IHBvc2l0
aW9uIDEgcGFzdCBwb3MuCi0gICAgcmV0dXJuIGFic2w6OnN0cmluZ192aWV3KHRleHQuYmVnaW4o
KSArIHBvcyArIDEsIDApOworICAgIHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyh0ZXh0LmRhdGEo
KSArIHBvcyArIDEsIDApOwogICB9CiAgIHNpemVfdCBmb3VuZF9wb3MgPSBhYnNsOjpzdHJpbmdf
dmlldzo6bnBvczsKLSAgYWJzbDo6c3RyaW5nX3ZpZXcgZm91bmQodGV4dC5lbmQoKSwgMCk7ICAv
LyBCeSBkZWZhdWx0LCBub3QgZm91bmQKKyAgYWJzbDo6c3RyaW5nX3ZpZXcgZm91bmQodGV4dC5k
YXRhKCkgKyB0ZXh0LnNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7ICAvLyBC
eSBkZWZhdWx0LCBub3QgZm91bmQKICAgZm91bmRfcG9zID0gZmluZF9wb2xpY3kuRmluZCh0ZXh0
LCBkZWxpbWl0ZXIsIHBvcyk7CiAgIGlmIChmb3VuZF9wb3MgIT0gYWJzbDo6c3RyaW5nX3ZpZXc6
Om5wb3MpIHsKICAgICBmb3VuZCA9IGFic2w6OnN0cmluZ192aWV3KHRleHQuZGF0YSgpICsgZm91
bmRfcG9zLApAQCAtODcsNyArODgsNyBAQCBhYnNsOjpzdHJpbmdfdmlldyBCeVN0cmluZzo6Rmlu
ZChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0LCBzaXplX3QgcG9zKSBjb25zdCB7CiAgICAgLy8gYWJz
bDo6c3RyaW5nX3ZpZXcuCiAgICAgc2l6ZV90IGZvdW5kX3BvcyA9IHRleHQuZmluZChkZWxpbWl0
ZXJfWzBdLCBwb3MpOwogICAgIGlmIChmb3VuZF9wb3MgPT0gYWJzbDo6c3RyaW5nX3ZpZXc6Om5w
b3MpCi0gICAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcodGV4dC5lbmQoKSwgMCk7CisgICAg
ICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcodGV4dC5kYXRhKCkgKyB0ZXh0LnNpemUoKSwgMCk7
CiAgICAgcmV0dXJuIHRleHQuc3Vic3RyKGZvdW5kX3BvcywgMSk7CiAgIH0KICAgcmV0dXJuIEdl
bmVyaWNGaW5kKHRleHQsIGRlbGltaXRlcl8sIHBvcywgTGl0ZXJhbFBvbGljeSgpKTsKQEAgLTEw
MCw3ICsxMDEsNyBAQCBhYnNsOjpzdHJpbmdfdmlldyBCeVN0cmluZzo6RmluZChhYnNsOjpzdHJp
bmdfdmlldyB0ZXh0LCBzaXplX3QgcG9zKSBjb25zdCB7CiBhYnNsOjpzdHJpbmdfdmlldyBCeUNo
YXI6OkZpbmQoYWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwgc2l6ZV90IHBvcykgY29uc3QgewogICBz
aXplX3QgZm91bmRfcG9zID0gdGV4dC5maW5kKGNfLCBwb3MpOwogICBpZiAoZm91bmRfcG9zID09
IGFic2w6OnN0cmluZ192aWV3OjpucG9zKQotICAgIHJldHVybiBhYnNsOjpzdHJpbmdfdmlldyh0
ZXh0LmVuZCgpLCAwKTsKKyAgICByZXR1cm4gYWJzbDo6c3RyaW5nX3ZpZXcodGV4dC5kYXRhKCkg
KyB0ZXh0LnNpemUoKSwgMCk7CiAgIHJldHVybiB0ZXh0LnN1YnN0cihmb3VuZF9wb3MsIDEpOwog
fQogCkBAIC0xMjgsOSArMTI5LDkgQEAgYWJzbDo6c3RyaW5nX3ZpZXcgQnlMZW5ndGg6OkZpbmQo
YWJzbDo6c3RyaW5nX3ZpZXcgdGV4dCwKICAgLy8gSWYgdGhlIHN0ZDo6c3RyaW5nIGlzIHNob3J0
ZXIgdGhhbiB0aGUgY2h1bmsgc2l6ZSB3ZSBzYXkgd2UKICAgLy8gImNhbid0IGZpbmQgdGhlIGRl
bGltaXRlciIgc28gdGhpcyB3aWxsIGJlIHRoZSBsYXN0IGNodW5rLgogICBpZiAoc3Vic3RyLmxl
bmd0aCgpIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoXykpCi0gICAgcmV0dXJuIGFic2w6
OnN0cmluZ192aWV3KHRleHQuZW5kKCksIDApOworICAgIHJldHVybiBhYnNsOjpzdHJpbmdfdmll
dyh0ZXh0LmRhdGEoKSArIHRleHQuc2l6ZSgpLCAwKTsKIAotICByZXR1cm4gYWJzbDo6c3RyaW5n
X3ZpZXcoc3Vic3RyLmJlZ2luKCkgKyBsZW5ndGhfLCAwKTsKKyAgcmV0dXJuIGFic2w6OnN0cmlu
Z192aWV3KHN1YnN0ci5kYXRhKCkgKyBsZW5ndGhfLCAwKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
IGFic2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzL3N0cl9zcGxpdC5oCmluZGV4IDlhN2JlMmIwNTM0NDI1ODcyYzI1ZTk4NmFlYmMyMWRiN2U3
ZmI3NTYuLmM3ZWIyODBjNDExMzBhYjg2ZTM0MzM2OWM3ZTVmYzkwY2Q2OWRlMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3Bs
aXQuaApAQCAtMTksMTMgKzE5LDEzIEBACiAvLwogLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGZ1bmN0
aW9ucyBmb3Igc3BsaXR0aW5nIHN0cmluZ3MuIEl0IGRlZmluZXMgdGhlIG1haW4KIC8vIGBTdHJT
cGxpdCgpYCBmdW5jdGlvbiwgc2V2ZXJhbCBkZWxpbWl0ZXJzIGZvciBkZXRlcm1pbmluZyB0aGUg
Ym91bmRhcmllcyBvbgotLy8gd2hpY2ggdG8gc3BsaXQgdGhlIHN0ZDo6c3RyaW5nLCBhbmQgcHJl
ZGljYXRlcyBmb3IgZmlsdGVyaW5nIGRlbGltaXRlZCByZXN1bHRzLgorLy8gd2hpY2ggdG8gc3Bs
aXQgdGhlIHN0cmluZywgYW5kIHByZWRpY2F0ZXMgZm9yIGZpbHRlcmluZyBkZWxpbWl0ZWQgcmVz
dWx0cy4KIC8vIGBTdHJTcGxpdCgpYCBhZGFwdHMgdGhlIHJldHVybmVkIGNvbGxlY3Rpb24gdG8g
dGhlIHR5cGUgc3BlY2lmaWVkIGJ5IHRoZQogLy8gY2FsbGVyLgogLy8KIC8vIEV4YW1wbGU6CiAv
LwotLy8gICAvLyBTcGxpdHMgdGhlIGdpdmVuIHN0ZDo6c3RyaW5nIG9uIGNvbW1hcy4gUmV0dXJu
cyB0aGUgcmVzdWx0cyBpbiBhCisvLyAgIC8vIFNwbGl0cyB0aGUgZ2l2ZW4gc3RyaW5nIG9uIGNv
bW1hcy4gUmV0dXJucyB0aGUgcmVzdWx0cyBpbiBhCiAvLyAgIC8vIHZlY3RvciBvZiBzdHJpbmdz
LgogLy8gICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdiA9IGFic2w6OlN0clNwbGl0KCJhLGIs
YyIsICcsJyk7CiAvLyAgIC8vIENhbiBhbHNvIHVzZSAiLCIKQEAgLTU1LDcgKzU1LDcgQEAgbmFt
ZXNwYWNlIGFic2wgewogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBgU3RyU3BsaXQo
KWAgdXNlcyBkZWxpbWl0ZXJzIHRvIGRlZmluZSB0aGUgYm91bmRhcmllcyBiZXR3ZWVuIGVsZW1l
bnRzIGluIHRoZQotLy8gcHJvdmlkZWQgaW5wdXQuIFNldmVyYWwgYERlbGltaXRlcmAgdHlwZXMg
YXJlIGRlZmluZWQgYmVsb3cuIElmIGEgc3RkOjpzdHJpbmcKKy8vIHByb3ZpZGVkIGlucHV0LiBT
ZXZlcmFsIGBEZWxpbWl0ZXJgIHR5cGVzIGFyZSBkZWZpbmVkIGJlbG93LiBJZiBhIHN0cmluZwog
Ly8gKGBjb25zdCBjaGFyKmAsIGBzdGQ6OnN0cmluZ2AsIG9yIGBhYnNsOjpzdHJpbmdfdmlld2Ap
IGlzIHBhc3NlZCBpbiBwbGFjZSBvZgogLy8gYW4gZXhwbGljaXQgYERlbGltaXRlcmAgb2JqZWN0
LCBgU3RyU3BsaXQoKWAgdHJlYXRzIGl0IHRoZSBzYW1lIHdheSBhcyBpZiBpdAogLy8gd2VyZSBw
YXNzZWQgYSBgQnlTdHJpbmdgIGRlbGltaXRlci4KQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNl
IGFic2wgewogLy8KIC8vIFRoZSBmb2xsb3dpbmcgYERlbGltaXRlcmAgdHlwZXMgYXJlIGF2YWls
YWJsZSBmb3IgdXNlIHdpdGhpbiBgU3RyU3BsaXQoKWA6CiAvLwotLy8gICAtIGBCeVN0cmluZ2Ag
KGRlZmF1bHQgZm9yIHN0ZDo6c3RyaW5nIGFyZ3VtZW50cykKKy8vICAgLSBgQnlTdHJpbmdgIChk
ZWZhdWx0IGZvciBzdHJpbmcgYXJndW1lbnRzKQogLy8gICAtIGBCeUNoYXJgIChkZWZhdWx0IGZv
ciBhIGNoYXIgYXJndW1lbnQpCiAvLyAgIC0gYEJ5QW55Q2hhcmAKIC8vICAgLSBgQnlMZW5ndGhg
CkBAIC03NiwxNSArNzYsMTUgQEAgbmFtZXNwYWNlIGFic2wgewogLy8gYmUgc3BsaXQgYW5kIHRo
ZSBwb3NpdGlvbiB0byBiZWdpbiBzZWFyY2hpbmcgZm9yIHRoZSBuZXh0IGRlbGltaXRlciBpbiB0
aGUKIC8vIGlucHV0IHRleHQuIFRoZSByZXR1cm5lZCBhYnNsOjpzdHJpbmdfdmlldyBzaG91bGQg
cmVmZXIgdG8gdGhlIG5leHQKIC8vIG9jY3VycmVuY2UgKGFmdGVyIHBvcykgb2YgdGhlIHJlcHJl
c2VudGVkIGRlbGltaXRlcjsgdGhpcyByZXR1cm5lZAotLy8gYWJzbDo6c3RyaW5nX3ZpZXcgcmVw
cmVzZW50cyB0aGUgbmV4dCBsb2NhdGlvbiB3aGVyZSB0aGUgaW5wdXQgc3RkOjpzdHJpbmcgc2hv
dWxkCisvLyBhYnNsOjpzdHJpbmdfdmlldyByZXByZXNlbnRzIHRoZSBuZXh0IGxvY2F0aW9uIHdo
ZXJlIHRoZSBpbnB1dCBzdHJpbmcgc2hvdWxkCiAvLyBiZSBicm9rZW4uIFRoZSByZXR1cm5lZCBh
YnNsOjpzdHJpbmdfdmlldyBtYXkgYmUgemVyby1sZW5ndGggaWYgdGhlIERlbGltaXRlcgotLy8g
ZG9lcyBub3QgcmVwcmVzZW50IGEgcGFydCBvZiB0aGUgc3RkOjpzdHJpbmcgKGUuZy4sIGEgZml4
ZWQtbGVuZ3RoIGRlbGltaXRlcikuIElmCisvLyBkb2VzIG5vdCByZXByZXNlbnQgYSBwYXJ0IG9m
IHRoZSBzdHJpbmcgKGUuZy4sIGEgZml4ZWQtbGVuZ3RoIGRlbGltaXRlcikuIElmCiAvLyBubyBk
ZWxpbWl0ZXIgaXMgZm91bmQgaW4gdGhlIGdpdmVuIHRleHQsIGEgemVyby1sZW5ndGggYWJzbDo6
c3RyaW5nX3ZpZXcKIC8vIHJlZmVycmluZyB0byB0ZXh0LmVuZCgpIHNob3VsZCBiZSByZXR1cm5l
ZCAoZS5nLiwKIC8vIGFic2w6OnN0cmluZ192aWV3KHRleHQuZW5kKCksIDApKS4gSXQgaXMgaW1w
b3J0YW50IHRoYXQgdGhlIHJldHVybmVkCiAvLyBhYnNsOjpzdHJpbmdfdmlldyBhbHdheXMgYmUg
d2l0aGluIHRoZSBib3VuZHMgb2YgaW5wdXQgdGV4dCBnaXZlbiBhcyBhbgotLy8gYXJndW1lbnQt
LWl0IG11c3Qgbm90IHJlZmVyIHRvIGEgc3RkOjpzdHJpbmcgdGhhdCBpcyBwaHlzaWNhbGx5IGxv
Y2F0ZWQgb3V0c2lkZSBvZgotLy8gdGhlIGdpdmVuIHN0ZDo6c3RyaW5nLgorLy8gYXJndW1lbnQt
LWl0IG11c3Qgbm90IHJlZmVyIHRvIGEgc3RyaW5nIHRoYXQgaXMgcGh5c2ljYWxseSBsb2NhdGVk
IG91dHNpZGUgb2YKKy8vIHRoZSBnaXZlbiBzdHJpbmcuCiAvLwogLy8gVGhlIGZvbGxvd2luZyBl
eGFtcGxlIGlzIGEgc2ltcGxlIERlbGltaXRlciBvYmplY3QgdGhhdCBpcyBjcmVhdGVkIHdpdGgg
YQogLy8gc2luZ2xlIGNoYXIgYW5kIHdpbGwgbG9vayBmb3IgdGhhdCBjaGFyIGluIHRoZSB0ZXh0
IHBhc3NlZCB0byB0aGUgRmluZCgpCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBuYW1lc3BhY2UgYWJz
bCB7CiAKIC8vIEJ5U3RyaW5nCiAvLwotLy8gQSBzdWItc3RkOjpzdHJpbmcgZGVsaW1pdGVyLiBJ
ZiBgU3RyU3BsaXQoKWAgaXMgcGFzc2VkIGEgc3RkOjpzdHJpbmcgaW4gcGxhY2Ugb2YgYQotLy8g
YERlbGltaXRlcmAgb2JqZWN0LCB0aGUgc3RkOjpzdHJpbmcgd2lsbCBiZSBpbXBsaWNpdGx5IGNv
bnZlcnRlZCBpbnRvIGEKKy8vIEEgc3ViLXN0cmluZyBkZWxpbWl0ZXIuIElmIGBTdHJTcGxpdCgp
YCBpcyBwYXNzZWQgYSBzdHJpbmcgaW4gcGxhY2Ugb2YgYQorLy8gYERlbGltaXRlcmAgb2JqZWN0
LCB0aGUgc3RyaW5nIHdpbGwgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgaW50byBhCiAvLyBgQnlT
dHJpbmdgIGRlbGltaXRlci4KIC8vCiAvLyBFeGFtcGxlOgogLy8KLS8vICAgLy8gQmVjYXVzZSBh
IHN0ZDo6c3RyaW5nIGxpdGVyYWwgaXMgY29udmVydGVkIHRvIGFuIGBhYnNsOjpCeVN0cmluZ2As
CisvLyAgIC8vIEJlY2F1c2UgYSBzdHJpbmcgbGl0ZXJhbCBpcyBjb252ZXJ0ZWQgdG8gYW4gYGFi
c2w6OkJ5U3RyaW5nYCwKIC8vICAgLy8gdGhlIGZvbGxvd2luZyB0d28gc3BsaXRzIGFyZSBlcXVp
dmFsZW50LgogLy8KIC8vICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYxID0gYWJzbDo6U3Ry
U3BsaXQoImEsIGIsIGMiLCAiLCAiKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBjbGFzcyBCeVN0cmlu
ZyB7CiAvLyBCeUNoYXIKIC8vCiAvLyBBIHNpbmdsZSBjaGFyYWN0ZXIgZGVsaW1pdGVyLiBgQnlD
aGFyYCBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBhCi0vLyAxLWNoYXIgc3RkOjpzdHJp
bmcgd2l0aGluIGEgYEJ5U3RyaW5nYCBkZWxpbWl0ZXIsIGJ1dCBzbGlnaHRseSBtb3JlCisvLyAx
LWNoYXIgc3RyaW5nIHdpdGhpbiBhIGBCeVN0cmluZ2AgZGVsaW1pdGVyLCBidXQgc2xpZ2h0bHkg
bW9yZQogLy8gZWZmaWNpZW50LgogLy8KIC8vIEV4YW1wbGU6CkBAIC0xNjQsOSArMTY0LDkgQEAg
Y2xhc3MgQnlDaGFyIHsKIC8vIEJ5QW55Q2hhcgogLy8KIC8vIEEgZGVsaW1pdGVyIHRoYXQgd2ls
bCBtYXRjaCBhbnkgb2YgdGhlIGdpdmVuIGJ5dGUtc2l6ZWQgY2hhcmFjdGVycyB3aXRoaW4KLS8v
IGl0cyBwcm92aWRlZCBzdGQ6OnN0cmluZy4KKy8vIGl0cyBwcm92aWRlZCBzdHJpbmcuCiAvLwot
Ly8gTm90ZTogdGhpcyBkZWxpbWl0ZXIgd29ya3Mgd2l0aCBzaW5nbGUtYnl0ZSBzdGQ6OnN0cmlu
ZyBkYXRhLCBidXQgZG9lcyBub3Qgd29yaworLy8gTm90ZTogdGhpcyBkZWxpbWl0ZXIgd29ya3Mg
d2l0aCBzaW5nbGUtYnl0ZSBzdHJpbmcgZGF0YSwgYnV0IGRvZXMgbm90IHdvcmsKIC8vIHdpdGgg
dmFyaWFibGUtd2lkdGggZW5jb2RpbmdzLCBzdWNoIGFzIFVURi04LgogLy8KIC8vIEV4YW1wbGU6
CkBAIC0xNzUsOCArMTc1LDggQEAgY2xhc3MgQnlDaGFyIHsKIC8vICAgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IHYgPSBhYnNsOjpTdHJTcGxpdCgiYSxiPWMiLCBCeUFueUNoYXIoIiw9IikpOwog
Ly8gICAvLyB2WzBdID09ICJhIiwgdlsxXSA9PSAiYiIsIHZbMl0gPT0gImMiCiAvLwotLy8gSWYg
YEJ5QW55Q2hhcmAgaXMgZ2l2ZW4gdGhlIGVtcHR5IHN0ZDo6c3RyaW5nLCBpdCBiZWhhdmVzIGV4
YWN0bHkgbGlrZQotLy8gYEJ5U3RyaW5nYCBhbmQgbWF0Y2hlcyBlYWNoIGluZGl2aWR1YWwgY2hh
cmFjdGVyIGluIHRoZSBpbnB1dCBzdGQ6OnN0cmluZy4KKy8vIElmIGBCeUFueUNoYXJgIGlzIGdp
dmVuIHRoZSBlbXB0eSBzdHJpbmcsIGl0IGJlaGF2ZXMgZXhhY3RseSBsaWtlCisvLyBgQnlTdHJp
bmdgIGFuZCBtYXRjaGVzIGVhY2ggaW5kaXZpZHVhbCBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0IHN0
cmluZy4KIC8vCiBjbGFzcyBCeUFueUNoYXIgewogIHB1YmxpYzoKQEAgLTE5Miw3ICsxOTIsNyBA
QCBjbGFzcyBCeUFueUNoYXIgewogLy8gQSBkZWxpbWl0ZXIgZm9yIHNwbGl0dGluZyBpbnRvIGVx
dWFsLWxlbmd0aCBzdHJpbmdzLiBUaGUgbGVuZ3RoIGFyZ3VtZW50IHRvCiAvLyB0aGUgY29uc3Ry
dWN0b3IgbXVzdCBiZSBncmVhdGVyIHRoYW4gMC4KIC8vCi0vLyBOb3RlOiB0aGlzIGRlbGltaXRl
ciB3b3JrcyB3aXRoIHNpbmdsZS1ieXRlIHN0ZDo6c3RyaW5nIGRhdGEsIGJ1dCBkb2VzIG5vdCB3
b3JrCisvLyBOb3RlOiB0aGlzIGRlbGltaXRlciB3b3JrcyB3aXRoIHNpbmdsZS1ieXRlIHN0cmlu
ZyBkYXRhLCBidXQgZG9lcyBub3Qgd29yawogLy8gd2l0aCB2YXJpYWJsZS13aWR0aCBlbmNvZGlu
Z3MsIHN1Y2ggYXMgVVRGLTguCiAvLwogLy8gRXhhbXBsZToKQEAgLTIwMiw3ICsyMDIsNyBAQCBj
bGFzcyBCeUFueUNoYXIgewogCiAvLyAgIC8vIHZbMF0gPT0gIjEyMyIsIHZbMV0gPT0gIjQ1NiIs
IHZbMl0gPT0gIjc4OSIKIC8vCi0vLyBOb3RlIHRoYXQgdGhlIHN0ZDo6c3RyaW5nIGRvZXMgbm90
IGhhdmUgdG8gYmUgYSBtdWx0aXBsZSBvZiB0aGUgZml4ZWQgc3BsaXQKKy8vIE5vdGUgdGhhdCB0
aGUgc3RyaW5nIGRvZXMgbm90IGhhdmUgdG8gYmUgYSBtdWx0aXBsZSBvZiB0aGUgZml4ZWQgc3Bs
aXQKIC8vIGxlbmd0aC4gSW4gc3VjaCBhIGNhc2UsIHRoZSBsYXN0IHN1YnN0cmluZyB3aWxsIGJl
IHNob3J0ZXIuCiAvLwogLy8gICB1c2luZyBhYnNsOjpCeUxlbmd0aDsKQEAgLTIyMyw5ICsyMjMs
OSBAQCBuYW1lc3BhY2Ugc3RyaW5nc19pbnRlcm5hbCB7CiAvLyBBIHRyYWl0cy1saWtlIG1ldGFm
dW5jdGlvbiBmb3Igc2VsZWN0aW5nIHRoZSBkZWZhdWx0IERlbGltaXRlciBvYmplY3QgdHlwZQog
Ly8gZm9yIGEgcGFydGljdWxhciBEZWxpbWl0ZXIgdHlwZS4gVGhlIGJhc2UgY2FzZSBzaW1wbHkg
ZXhwb3NlcyB0eXBlIERlbGltaXRlcgogLy8gaXRzZWxmIGFzIHRoZSBkZWxpbWl0ZXIncyBUeXBl
LiBIb3dldmVyLCB0aGVyZSBhcmUgc3BlY2lhbGl6YXRpb25zIGZvcgotLy8gc3RkOjpzdHJpbmct
bGlrZSBvYmplY3RzIHRoYXQgbWFwIHRoZW0gdG8gdGhlIEJ5U3RyaW5nIGRlbGltaXRlciBvYmpl
Y3QuCisvLyBzdHJpbmctbGlrZSBvYmplY3RzIHRoYXQgbWFwIHRoZW0gdG8gdGhlIEJ5U3RyaW5n
IGRlbGltaXRlciBvYmplY3QuCiAvLyBUaGlzIGFsbG93cyBmdW5jdGlvbnMgbGlrZSBhYnNsOjpT
dHJTcGxpdCgpIGFuZCBhYnNsOjpNYXhTcGxpdHMoKSB0byBhY2NlcHQKLS8vIHN0ZDo6c3RyaW5n
LWxpa2Ugb2JqZWN0cyAoZS5nLiwgJywnKSBhcyBkZWxpbWl0ZXIgYXJndW1lbnRzIGJ1dCB0aGV5
IHdpbGwgYmUKKy8vIHN0cmluZy1saWtlIG9iamVjdHMgKGUuZy4sICcsJykgYXMgZGVsaW1pdGVy
IGFyZ3VtZW50cyBidXQgdGhleSB3aWxsIGJlCiAvLyB0cmVhdGVkIGFzIGlmIGEgQnlTdHJpbmcg
ZGVsaW1pdGVyIHdhcyBnaXZlbi4KIHRlbXBsYXRlIDx0eXBlbmFtZSBEZWxpbWl0ZXI+CiBzdHJ1
Y3QgU2VsZWN0RGVsaW1pdGVyIHsKQEAgLTI2MSw3ICsyNjEsOCBAQCBjbGFzcyBNYXhTcGxpdHNJ
bXBsIHsKICAgICAgIDogZGVsaW1pdGVyXyhkZWxpbWl0ZXIpLCBsaW1pdF8obGltaXQpLCBjb3Vu
dF8oMCkge30KICAgYWJzbDo6c3RyaW5nX3ZpZXcgRmluZChhYnNsOjpzdHJpbmdfdmlldyB0ZXh0
LCBzaXplX3QgcG9zKSB7CiAgICAgaWYgKGNvdW50XysrID09IGxpbWl0XykgewotICAgICAgcmV0
dXJuIGFic2w6OnN0cmluZ192aWV3KHRleHQuZW5kKCksIDApOyAgLy8gTm8gbW9yZSBtYXRjaGVz
LgorICAgICAgcmV0dXJuIGFic2w6OnN0cmluZ192aWV3KHRleHQuZGF0YSgpICsgdGV4dC5zaXpl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7ICAvLyBObyBtb3JlIG1hdGNo
ZXMuCiAgICAgfQogICAgIHJldHVybiBkZWxpbWl0ZXJfLkZpbmQodGV4dCwgcG9zKTsKICAgfQpA
QCAtMzMxLDcgKzMzMiw3IEBAIHN0cnVjdCBBbGxvd0VtcHR5IHsKIC8vIFNraXBFbXB0eSgpCiAv
LwogLy8gUmV0dXJucyBgZmFsc2VgIGlmIHRoZSBnaXZlbiBgYWJzbDo6c3RyaW5nX3ZpZXdgIGlz
IGVtcHR5LCBpbmRpY2F0aW5nIHRoYXQKLS8vIGBTdHJTcGxpdCgpYCBzaG91bGQgb21pdCB0aGUg
ZW1wdHkgc3RkOjpzdHJpbmcuCisvLyBgU3RyU3BsaXQoKWAgc2hvdWxkIG9taXQgdGhlIGVtcHR5
IHN0cmluZy4KIC8vCiAvLyBFeGFtcGxlOgogLy8KQEAgLTMzOSw3ICszNDAsNyBAQCBzdHJ1Y3Qg
QWxsb3dFbXB0eSB7CiAvLwogLy8gICAvLyB2WzBdID09ICJhIiwgdlsxXSA9PSAiYiIKIC8vCi0v
LyBOb3RlOiBgU2tpcEVtcHR5KClgIGRvZXMgbm90IGNvbnNpZGVyIGEgc3RkOjpzdHJpbmcgY29u
dGFpbmluZyBvbmx5IHdoaXRlc3BhY2UKKy8vIE5vdGU6IGBTa2lwRW1wdHkoKWAgZG9lcyBub3Qg
Y29uc2lkZXIgYSBzdHJpbmcgY29udGFpbmluZyBvbmx5IHdoaXRlc3BhY2UKIC8vIHRvIGJlIGVt
cHR5LiBUbyBza2lwIHN1Y2ggd2hpdGVzcGFjZSBhcyB3ZWxsLCB1c2UgdGhlIGBTa2lwV2hpdGVz
cGFjZSgpYAogLy8gcHJlZGljYXRlLgogc3RydWN0IFNraXBFbXB0eSB7CkBAIC0zNDksNyArMzUw
LDcgQEAgc3RydWN0IFNraXBFbXB0eSB7CiAvLyBTa2lwV2hpdGVzcGFjZSgpCiAvLwogLy8gUmV0
dXJucyBgZmFsc2VgIGlmIHRoZSBnaXZlbiBgYWJzbDo6c3RyaW5nX3ZpZXdgIGlzIGVtcHR5ICpv
ciogY29udGFpbnMgb25seQotLy8gd2hpdGVzcGFjZSwgaW5kaWNhdGluZyB0aGF0IGBTdHJTcGxp
dCgpYCBzaG91bGQgb21pdCB0aGUgc3RkOjpzdHJpbmcuCisvLyB3aGl0ZXNwYWNlLCBpbmRpY2F0
aW5nIHRoYXQgYFN0clNwbGl0KClgIHNob3VsZCBvbWl0IHRoZSBzdHJpbmcuCiAvLwogLy8gRXhh
bXBsZToKIC8vCkBAIC0zNzMsNyArMzc0LDcgQEAgc3RydWN0IFNraXBXaGl0ZXNwYWNlIHsKIAog
Ly8gU3RyU3BsaXQoKQogLy8KLS8vIFNwbGl0cyBhIGdpdmVuIHN0ZDo6c3RyaW5nIGJhc2VkIG9u
IHRoZSBwcm92aWRlZCBgRGVsaW1pdGVyYCBvYmplY3QsIHJldHVybmluZyB0aGUKKy8vIFNwbGl0
cyBhIGdpdmVuIHN0cmluZyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYERlbGltaXRlcmAgb2JqZWN0
LCByZXR1cm5pbmcgdGhlCiAvLyBlbGVtZW50cyB3aXRoaW4gdGhlIHR5cGUgc3BlY2lmaWVkIGJ5
IHRoZSBjYWxsZXIuIE9wdGlvbmFsbHksIHlvdSBtYXkgcGFzcyBhCiAvLyBgUHJlZGljYXRlYCB0
byBgU3RyU3BsaXQoKWAgaW5kaWNhdGluZyB3aGV0aGVyIHRvIGluY2x1ZGUgb3IgZXhjbHVkZSB0
aGUKIC8vIHJlc3VsdGluZyBlbGVtZW50IHdpdGhpbiB0aGUgZmluYWwgcmVzdWx0IHNldC4gKFNl
ZSB0aGUgb3ZlcnZpZXdzIGZvcgpAQCAtNDEyLDcgKzQxMyw3IEBAIHN0cnVjdCBTa2lwV2hpdGVz
cGFjZSB7CiAvLwogLy8gVGhlIGBTdHJTcGxpdCgpYCBmdW5jdGlvbiBhZGFwdHMgdGhlIHJldHVy
bmVkIGNvbGxlY3Rpb24gdG8gdGhlIGNvbGxlY3Rpb24KIC8vIHNwZWNpZmllZCBieSB0aGUgY2Fs
bGVyIChlLmcuIGBzdGQ6OnZlY3RvcmAgYWJvdmUpLiBUaGUgcmV0dXJuZWQgY29sbGVjdGlvbnMK
LS8vIG1heSBjb250YWluIGBzdHJpbmdgLCBgYWJzbDo6c3RyaW5nX3ZpZXdgIChpbiB3aGljaCBj
YXNlIHRoZSBvcmlnaW5hbCBzdGQ6OnN0cmluZworLy8gbWF5IGNvbnRhaW4gYHN0cmluZ2AsIGBh
YnNsOjpzdHJpbmdfdmlld2AgKGluIHdoaWNoIGNhc2UgdGhlIG9yaWdpbmFsIHN0cmluZwogLy8g
YmVpbmcgc3BsaXQgbXVzdCBlbnN1cmUgdGhhdCBpdCBvdXRsaXZlcyB0aGUgY29sbGVjdGlvbiks
IG9yIGFueSBvYmplY3QgdGhhdAogLy8gY2FuIGJlIGV4cGxpY2l0bHkgY3JlYXRlZCBmcm9tIGFu
IGBhYnNsOjpzdHJpbmdfdmlld2AuIFRoaXMgYmVoYXZpb3Igd29ya3MKIC8vIGZvcjoKQEAgLTQy
NCw3ICs0MjUsNyBAQCBzdHJ1Y3QgU2tpcFdoaXRlc3BhY2UgewogLy8gRXhhbXBsZToKIC8vCiAv
LyAgIC8vIFRoZSByZXN1bHRzIGFyZSByZXR1cm5lZCBhcyBgYWJzbDo6c3RyaW5nX3ZpZXdgIG9i
amVjdHMuIE5vdGUgdGhhdCB3ZQotLy8gICAvLyBoYXZlIHRvIGVuc3VyZSB0aGF0IHRoZSBpbnB1
dCBzdGQ6OnN0cmluZyBvdXRsaXZlcyBhbnkgcmVzdWx0cy4KKy8vICAgLy8gaGF2ZSB0byBlbnN1
cmUgdGhhdCB0aGUgaW5wdXQgc3RyaW5nIG91dGxpdmVzIGFueSByZXN1bHRzLgogLy8gICBzdGQ6
OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4gdiA9IGFic2w6OlN0clNwbGl0KCJhLGIsYyIsICcs
Jyk7CiAvLwogLy8gICAvLyBTdG9yZXMgcmVzdWx0cyBpbiBhIHN0ZDo6c2V0PHN0ZDo6c3RyaW5n
Piwgd2hpY2ggYWxzbyBwZXJmb3JtcwpAQCAtNDQ0LDcgKzQ0NSw3IEBAIHN0cnVjdCBTa2lwV2hp
dGVzcGFjZSB7CiAvLyAgIC8vIGlzIHByb3ZpZGVkIGFzIGEgc2VyaWVzIG9mIGtleS92YWx1ZSBw
YWlycy4gRm9yIGV4YW1wbGUsIHRoZSAwdGggZWxlbWVudAogLy8gICAvLyByZXN1bHRpbmcgZnJv
bSB0aGUgc3BsaXQgd2lsbCBiZSBzdG9yZWQgYXMgYSBrZXkgdG8gdGhlIDFzdCBlbGVtZW50LiBJ
ZgogLy8gICAvLyBhbiBvZGQgbnVtYmVyIG9mIGVsZW1lbnRzIGFyZSByZXNvbHZlZCwgdGhlIGxh
c3QgZWxlbWVudCBpcyBwYWlyZWQgd2l0aAotLy8gICAvLyBhIGRlZmF1bHQtY29uc3RydWN0ZWQg
dmFsdWUgKGUuZy4sIGVtcHR5IHN0ZDo6c3RyaW5nKS4KKy8vICAgLy8gYSBkZWZhdWx0LWNvbnN0
cnVjdGVkIHZhbHVlIChlLmcuLCBlbXB0eSBzdHJpbmcpLgogLy8gICBzdGQ6Om1hcDxzdGQ6OnN0
cmluZywgc3RkOjpzdHJpbmc+IG0gPSBhYnNsOjpTdHJTcGxpdCgiYSxiLGMiLCAnLCcpOwogLy8g
ICAvLyBtWyJhIl0gPT0gImIiLCBtWyJjIl0gPT0gIiIgICAgIC8vIGxhc3QgY29tcG9uZW50IHZh
bHVlIGVxdWFscyAiIgogLy8KQEAgLTQ1MiwxNCArNDUzLDE0IEBAIHN0cnVjdCBTa2lwV2hpdGVz
cGFjZSB7CiAvLyBlbGVtZW50cyBhbmQgaXMgbm90IGEgY29sbGVjdGlvbiB0eXBlLiBXaGVuIHNw
bGl0dGluZyB0byBhIGBzdGQ6OnBhaXJgIHRoZQogLy8gZmlyc3QgdHdvIHNwbGl0IHN0cmluZ3Mg
YmVjb21lIHRoZSBgc3RkOjpwYWlyYCBgLmZpcnN0YCBhbmQgYC5zZWNvbmRgCiAvLyBtZW1iZXJz
LCByZXNwZWN0aXZlbHkuIFRoZSByZW1haW5pbmcgc3BsaXQgc3Vic3RyaW5ncyBhcmUgZGlzY2Fy
ZGVkLiBJZiB0aGVyZQotLy8gYXJlIGxlc3MgdGhhbiB0d28gc3BsaXQgc3Vic3RyaW5ncywgdGhl
IGVtcHR5IHN0ZDo6c3RyaW5nIGlzIHVzZWQgZm9yIHRoZQorLy8gYXJlIGxlc3MgdGhhbiB0d28g
c3BsaXQgc3Vic3RyaW5ncywgdGhlIGVtcHR5IHN0cmluZyBpcyB1c2VkIGZvciB0aGUKIC8vIGNv
cnJlc3BvbmRpbmcKIC8vIGBzdGQ6OnBhaXJgIG1lbWJlci4KIC8vCiAvLyBFeGFtcGxlOgogLy8K
IC8vICAgLy8gU3RvcmVzIGZpcnN0IHR3byBzcGxpdCBzdHJpbmdzIGFzIHRoZSBtZW1iZXJzIGlu
IGEgc3RkOjpwYWlyLgotLy8gICBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBw
ID0gYWJzbDo6U3RyU3BsaXQoImEsYixjIiwgJywnKTsKKy8vICAgc3RkOjpwYWlyPHN0cmluZywg
c3RyaW5nPiBwID0gYWJzbDo6U3RyU3BsaXQoImEsYixjIiwgJywnKTsKIC8vICAgLy8gcC5maXJz
dCA9PSAiYSIsIHAuc2Vjb25kID09ICJiIiAgICAgICAvLyAiYyIgaXMgb21pdHRlZC4KIC8vCiAv
LyBUaGUgYFN0clNwbGl0KClgIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIHRv
IHBlcmZvcm0gbW9yZQpAQCAtNDY3LDkgKzQ2OCw5IEBAIHN0cnVjdCBTa2lwV2hpdGVzcGFjZSB7
CiAvLwogLy8gRXhhbXBsZToKIC8vCi0vLyAgIC8vIFRoZSBpbnB1dCBzdGQ6OnN0cmluZyAiYT1i
PWMsZD1lLGY9LGciIGJlY29tZXMKKy8vICAgLy8gVGhlIGlucHV0IHN0cmluZyAiYT1iPWMsZD1l
LGY9LGciIGJlY29tZXMKIC8vICAgLy8geyAiYSIgPT4gImI9YyIsICJkIiA9PiAiZSIsICJmIiA9
PiAiIiwgImciID0+ICIiIH0KLS8vICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5n
PiBtOworLy8gICBzdGQ6Om1hcDxzdHJpbmcsIHN0cmluZz4gbTsKIC8vICAgZm9yIChhYnNsOjpz
dHJpbmdfdmlldyBzcCA6IGFic2w6OlN0clNwbGl0KCJhPWI9YyxkPWUsZj0sZyIsICcsJykpIHsK
IC8vICAgICBtLmluc2VydChhYnNsOjpTdHJTcGxpdChzcCwgYWJzbDo6TWF4U3BsaXRzKCc9Jywg
MSkpKTsKIC8vICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXRfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3N0cmluZ3Mvc3RyX3NwbGl0X3Rlc3QuY2MKaW5kZXggMjlhNjgwNDdjOTlhZWYz
MWJjN2QzNjczYTMyYjcyMjg1NDJjNzlhMy4uNDEzYWQzMThiZjliMjkzMzdiN2U4ODc4OGE1NTBh
OWRiM2U1MGVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJfc3BsaXRfdGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC9zdHJpbmdzL3N0cl9zcGxpdF90ZXN0LmNjCkBAIC0yNzYsNyArMjc2LDcgQEAg
VEVTVChTcGxpdEl0ZXJhdG9yLCBCYXNpY3MpIHsKICAgRVhQRUNUX0VRKGl0LCBlbmQpOwogfQog
Ci0vLyBTaW1wbGUgUHJlZGljYXRlIHRvIHNraXAgYSBwYXJ0aWN1bGFyIHN0ZDo6c3RyaW5nLgor
Ly8gU2ltcGxlIFByZWRpY2F0ZSB0byBza2lwIGEgcGFydGljdWxhciBzdHJpbmcuCiBjbGFzcyBT
a2lwIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IFNraXAoY29uc3Qgc3RkOjpzdHJpbmcmIHMpIDog
c18ocykge30KQEAgLTc2MywxMiArNzYzLDEyIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBEZWxpbWl0
ZXI+CiBzdGF0aWMgYm9vbCBJc0ZvdW5kQXRTdGFydGluZ1BvcyhhYnNsOjpzdHJpbmdfdmlldyB0
ZXh0LCBEZWxpbWl0ZXIgZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzdGFydGluZ19wb3MsIGludCBleHBlY3RlZF9wb3MpIHsKICAgYWJzbDo6c3RyaW5nX3ZpZXcg
Zm91bmQgPSBkLkZpbmQodGV4dCwgc3RhcnRpbmdfcG9zKTsKLSAgcmV0dXJuIGZvdW5kLmRhdGEo
KSAhPSB0ZXh0LmVuZCgpICYmCisgIHJldHVybiBmb3VuZC5kYXRhKCkgIT0gdGV4dC5kYXRhKCkg
KyB0ZXh0LnNpemUoKSAmJgogICAgICAgICAgZXhwZWN0ZWRfcG9zID09IGZvdW5kLmRhdGEoKSAt
IHRleHQuZGF0YSgpOwogfQogCiAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHRlc3RpbmcgRGVsaW1p
dGVyIG9iamVjdHMuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4KLS8vIERlbGltaXRlciBpcyBm
b3VuZCBpbiB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiBUaGlz
IGZ1bmN0aW9uCisvLyBEZWxpbWl0ZXIgaXMgZm91bmQgaW4gdGhlIGdpdmVuIHN0cmluZyBhdCB0
aGUgZ2l2ZW4gcG9zaXRpb24uIFRoaXMgZnVuY3Rpb24KIC8vIHRlc3RzIHR3byBjYXNlczoKIC8v
ICAgMS4gVGhlIGFjdHVhbCB0ZXh0IGdpdmVuLCBzdGFyaW5nIGF0IHBvc2l0aW9uIDAKIC8vICAg
Mi4gVGhlIHRleHQgZ2l2ZW4gd2l0aCBsZWFkaW5nIHBhZGRpbmcgdGhhdCBzaG91bGQgYmUgaWdu
b3JlZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3Ry
aW5ncy9zdHJpbmdfdmlldy5oCmluZGV4IDFiOGY4YTM3NDc0NWNiNjQ2NmIxY2Q2MjIxOTdmZGMy
ZjZkY2Q5ZDUuLmVjOWY2MmJlMTU3MzNlM2NkZTgyNTZkZjFjZmM1MjBjMjJlMTFmMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0
cmluZ192aWV3LmgKQEAgLTE5LDcgKzE5LDcgQEAKIC8vCiAvLyBUaGlzIGZpbGUgY29udGFpbnMg
dGhlIGRlZmluaXRpb24gb2YgdGhlIGBhYnNsOjpzdHJpbmdfdmlld2AgY2xhc3MuIEEKIC8vIGBz
dHJpbmdfdmlld2AgcG9pbnRzIHRvIGEgY29udGlndW91cyBzcGFuIG9mIGNoYXJhY3RlcnMsIG9m
dGVuIHBhcnQgb3IgYWxsIG9mCi0vLyBhbm90aGVyIGBzdGQ6OnN0cmluZ2AsIGRvdWJsZS1xdW90
ZWQgc3RkOjpzdHJpbmcgbGl0ZXJhbCwgY2hhcmFjdGVyIGFycmF5LCBvciBldmVuCisvLyBhbm90
aGVyIGBzdGQ6OnN0cmluZ2AsIGRvdWJsZS1xdW90ZWQgc3RyaW5nIGxpdGVyYWwsIGNoYXJhY3Rl
ciBhcnJheSwgb3IgZXZlbgogLy8gYW5vdGhlciBgc3RyaW5nX3ZpZXdgLgogLy8KIC8vIFRoaXMg
YGFic2w6OnN0cmluZ192aWV3YCBhYnN0cmFjdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBhIGRyb3At
aW4KQEAgLTU2LDE1ICs1NiwxNSBAQCBuYW1lc3BhY2UgYWJzbCB7CiAKIC8vIGFic2w6OnN0cmlu
Z192aWV3CiAvLwotLy8gQSBgc3RyaW5nX3ZpZXdgIHByb3ZpZGVzIGEgbGlnaHR3ZWlnaHQgdmll
dyBpbnRvIHRoZSBzdGQ6OnN0cmluZyBkYXRhIHByb3ZpZGVkIGJ5Ci0vLyBhIGBzdGQ6OnN0cmlu
Z2AsIGRvdWJsZS1xdW90ZWQgc3RkOjpzdHJpbmcgbGl0ZXJhbCwgY2hhcmFjdGVyIGFycmF5LCBv
ciBldmVuCi0vLyBhbm90aGVyIGBzdHJpbmdfdmlld2AuIEEgYHN0cmluZ192aWV3YCBkb2VzICpu
b3QqIG93biB0aGUgc3RkOjpzdHJpbmcgdG8gd2hpY2ggaXQKKy8vIEEgYHN0cmluZ192aWV3YCBw
cm92aWRlcyBhIGxpZ2h0d2VpZ2h0IHZpZXcgaW50byB0aGUgc3RyaW5nIGRhdGEgcHJvdmlkZWQg
YnkKKy8vIGEgYHN0ZDo6c3RyaW5nYCwgZG91YmxlLXF1b3RlZCBzdHJpbmcgbGl0ZXJhbCwgY2hh
cmFjdGVyIGFycmF5LCBvciBldmVuCisvLyBhbm90aGVyIGBzdHJpbmdfdmlld2AuIEEgYHN0cmlu
Z192aWV3YCBkb2VzICpub3QqIG93biB0aGUgc3RyaW5nIHRvIHdoaWNoIGl0CiAvLyBwb2ludHMs
IGFuZCB0aGF0IGRhdGEgY2Fubm90IGJlIG1vZGlmaWVkIHRocm91Z2ggdGhlIHZpZXcuCiAvLwog
Ly8gWW91IGNhbiB1c2UgYHN0cmluZ192aWV3YCBhcyBhIGZ1bmN0aW9uIG9yIG1ldGhvZCBwYXJh
bWV0ZXIgYW55d2hlcmUgYQotLy8gcGFyYW1ldGVyIGNhbiByZWNlaXZlIGEgZG91YmxlLXF1b3Rl
ZCBzdGQ6OnN0cmluZyBsaXRlcmFsLCBgY29uc3QgY2hhcipgLAorLy8gcGFyYW1ldGVyIGNhbiBy
ZWNlaXZlIGEgZG91YmxlLXF1b3RlZCBzdHJpbmcgbGl0ZXJhbCwgYGNvbnN0IGNoYXIqYCwKIC8v
IGBzdGQ6OnN0cmluZ2AsIG9yIGFub3RoZXIgYGFic2w6OnN0cmluZ192aWV3YCBhcmd1bWVudCB3
aXRoIG5vIG5lZWQgdG8gY29weQotLy8gdGhlIHN0ZDo6c3RyaW5nIGRhdGEuIFN5c3RlbWF0aWMg
dXNlIG9mIGBzdHJpbmdfdmlld2Agd2l0aGluIGZ1bmN0aW9uIGFyZ3VtZW50cworLy8gdGhlIHN0
cmluZyBkYXRhLiBTeXN0ZW1hdGljIHVzZSBvZiBgc3RyaW5nX3ZpZXdgIHdpdGhpbiBmdW5jdGlv
biBhcmd1bWVudHMKIC8vIHJlZHVjZXMgZGF0YSBjb3BpZXMgYW5kIGBzdHJsZW4oKWAgY2FsbHMu
CiAvLwogLy8gQmVjYXVzZSBvZiBpdHMgc21hbGwgc2l6ZSwgcHJlZmVyIHBhc3NpbmcgYHN0cmlu
Z192aWV3YCBieSB2YWx1ZToKQEAgLTk3LDggKzk3LDggQEAgbmFtZXNwYWNlIGFic2wgewogLy8g
YHN0cmluZ192aWV3YCB0aGlzIHdheSwgaXQgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byBlbnN1
cmUgdGhhdCB0aGUgb2JqZWN0CiAvLyBwb2ludGVkIHRvIGJ5IHRoZSBgc3RyaW5nX3ZpZXdgIG91
dGxpdmVzIHRoZSBgc3RyaW5nX3ZpZXdgLgogLy8KLS8vIEEgYHN0cmluZ192aWV3YCBtYXkgcmVw
cmVzZW50IGEgd2hvbGUgc3RkOjpzdHJpbmcgb3IganVzdCBwYXJ0IG9mIGEgc3RkOjpzdHJpbmcu
IEZvcgotLy8gZXhhbXBsZSwgd2hlbiBzcGxpdHRpbmcgYSBzdGQ6OnN0cmluZywgYHN0ZDo6dmVj
dG9yPGFic2w6OnN0cmluZ192aWV3PmAgaXMgYQorLy8gQSBgc3RyaW5nX3ZpZXdgIG1heSByZXBy
ZXNlbnQgYSB3aG9sZSBzdHJpbmcgb3IganVzdCBwYXJ0IG9mIGEgc3RyaW5nLiBGb3IKKy8vIGV4
YW1wbGUsIHdoZW4gc3BsaXR0aW5nIGEgc3RyaW5nLCBgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5n
X3ZpZXc+YCBpcyBhCiAvLyBuYXR1cmFsIGRhdGEgdHlwZSBmb3IgdGhlIG91dHB1dC4KIC8vCiAv
LwpAQCAtMTQxLDcgKzE0MSw3IEBAIG5hbWVzcGFjZSBhYnNsIHsKIC8vIEFsbCBlbXB0eSBgc3Ry
aW5nX3ZpZXdgIG9iamVjdHMgd2hldGhlciBudWxsIG9yIG5vdCwgYXJlIGVxdWFsOgogLy8KIC8v
ICAgYWJzbDo6c3RyaW5nX3ZpZXcoKSA9PSBhYnNsOjpzdHJpbmdfdmlldygiIiwgMCkKLS8vICAg
YWJzbDo6c3RyaW5nX3ZpZXcobnVsbHB0ciwgMCkgPT0gYWJzbDo6IHN0cmluZ192aWV3KCJhYmNk
ZWYiKzYsIDApCisvLyAgIGFic2w6OnN0cmluZ192aWV3KG51bGxwdHIsIDApID09IGFic2w6OnN0
cmluZ192aWV3KCJhYmNkZWYiKzYsIDApCiBjbGFzcyBzdHJpbmdfdmlldyB7CiAgcHVibGljOgog
ICB1c2luZyB0cmFpdHNfdHlwZSA9IHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj47CkBAIC0xNzMsOCAr
MTczLDE5IEBAIGNsYXNzIHN0cmluZ192aWV3IHsKICAgLy8gSW1wbGljaXQgY29uc3RydWN0b3Ig
b2YgYSBgc3RyaW5nX3ZpZXdgIGZyb20gbnVsLXRlcm1pbmF0ZWQgYHN0cmAuIFdoZW4KICAgLy8g
YWNjZXB0aW5nIHBvc3NpYmx5IG51bGwgc3RyaW5ncywgdXNlIGBhYnNsOjpOdWxsU2FmZVN0cmlu
Z1ZpZXcoc3RyKWAKICAgLy8gaW5zdGVhZCAoc2VlIGJlbG93KS4KKyNpZiBBQlNMX0hBVkVfQlVJ
TFRJTihfX2J1aWx0aW5fc3RybGVuKSB8fCBcCisgICAgKGRlZmluZWQoX19HTlVDX18pICYmICFk
ZWZpbmVkKF9fY2xhbmdfXykpCisgIC8vIEdDQyBoYXMgX19idWlsdGluX3N0cmxlbiBhY2NvcmRp
bmcgdG8KKyAgLy8gaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy00LjcuMC9nY2Mv
T3RoZXItQnVpbHRpbnMuaHRtbCwgYnV0CisgIC8vIEFCU0xfSEFWRV9CVUlMVElOIGRvZXNuJ3Qg
ZGV0ZWN0IHRoYXQsIHNvIHdlIHVzZSB0aGUgZXh0cmEgY2hlY2tzIGFib3ZlLgorICAvLyBfX2J1
aWx0aW5fc3RybGVuIGlzIGNvbnN0ZXhwci4KKyAgY29uc3RleHByIHN0cmluZ192aWV3KGNvbnN0
IGNoYXIqIHN0cikgIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0KQorICAgICAgOiBwdHJfKHN0
ciksCisgICAgICAgIGxlbmd0aF8oQ2hlY2tMZW5ndGhJbnRlcm5hbChzdHIgPyBfX2J1aWx0aW5f
c3RybGVuKHN0cikgOiAwKSkge30KKyNlbHNlCiAgIGNvbnN0ZXhwciBzdHJpbmdfdmlldyhjb25z
dCBjaGFyKiBzdHIpICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKLSAgICAgIDogcHRyXyhz
dHIpLCBsZW5ndGhfKENoZWNrTGVuZ3RoSW50ZXJuYWwoU3RyTGVuSW50ZXJuYWwoc3RyKSkpIHt9
CisgICAgICA6IHB0cl8oc3RyKSwgbGVuZ3RoXyhDaGVja0xlbmd0aEludGVybmFsKHN0ciA/IHN0
cmxlbihzdHIpIDogMCkpIHt9CisjZW5kaWYKIAogICAvLyBJbXBsaWNpdCBjb25zdHJ1Y3RvciBv
ZiBhIGBzdHJpbmdfdmlld2AgZnJvbSBhIGBjb25zdCBjaGFyKmAgYW5kIGxlbmd0aC4KICAgY29u
c3RleHByIHN0cmluZ192aWV3KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdHlwZSBsZW4pCkBAIC0z
NDAsNyArMzUxLDcgQEAgY2xhc3Mgc3RyaW5nX3ZpZXcgewogICAvLwogICAvLyBSZXR1cm5zIGEg
InN1YnN0cmluZyIgb2YgdGhlIGBzdHJpbmdfdmlld2AgKGF0IG9mZnNldCBgcG9zYCBhbmQgbGVu
Z3RoCiAgIC8vIGBuYCkgYXMgYW5vdGhlciBzdHJpbmdfdmlldy4gVGhpcyBmdW5jdGlvbiB0aHJv
d3MgYHN0ZDo6b3V0X29mX2JvdW5kc2AgaWYKLSAgLy8gYHBvcyA+IHNpemUnLgorICAvLyBgcG9z
ID4gc2l6ZWAuCiAgIHN0cmluZ192aWV3IHN1YnN0cihzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUg
biA9IG5wb3MpIGNvbnN0IHsKICAgICBpZiAoQUJTTF9QUkVESUNUX0ZBTFNFKHBvcyA+IGxlbmd0
aF8pKQogICAgICAgYmFzZV9pbnRlcm5hbDo6VGhyb3dTdGRPdXRPZlJhbmdlKCJhYnNsOjpzdHJp
bmdfdmlldzo6c3Vic3RyIik7CkBAIC0zNTEsNyArMzYyLDcgQEAgY2xhc3Mgc3RyaW5nX3ZpZXcg
ewogICAvLyBzdHJpbmdfdmlldzo6Y29tcGFyZSgpCiAgIC8vCiAgIC8vIFBlcmZvcm1zIGEgbGV4
aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24gYmV0d2VlbiB0aGUgYHN0cmluZ192aWV3YCBhbmQKLSAg
Ly8gYW5vdGhlciBgYWJzbDo6c3RyaW5nX3ZpZXcpLCByZXR1cm5pbmcgLTEgaWYgYHRoaXNgIGlz
IGxlc3MgdGhhbiwgMCBpZgorICAvLyBhbm90aGVyIGBhYnNsOjpzdHJpbmdfdmlld2AsIHJldHVy
bmluZyAtMSBpZiBgdGhpc2AgaXMgbGVzcyB0aGFuLCAwIGlmCiAgIC8vIGB0aGlzYCBpcyBlcXVh
bCB0bywgYW5kIDEgaWYgYHRoaXNgIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGFzc2VkIHN0ZDo6c3Ry
aW5nCiAgIC8vIHZpZXcuIE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBkYXRhIGVxdWFsaXR5LCBh
IGZ1cnRoZXIgY29tcGFyaXNvbiBpcyBtYWRlCiAgIC8vIG9uIHRoZSByZXNwZWN0aXZlIHNpemVz
IG9mIHRoZSB0d28gYHN0cmluZ192aWV3YHMgdG8gZGV0ZXJtaW5lIHdoaWNoIGlzCkBAIC00ODEs
MjIgKzQ5Miw2IEBAIGNsYXNzIHN0cmluZ192aWV3IHsKICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3R5cGUga01heFNpemUgPQogICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkaWZmZXJlbmNlX3R5
cGU+OjptYXgoKTsKIAotICAvLyBjaGVjayB3aGV0aGVyIF9fYnVpbHRpbl9zdHJsZW4gaXMgcHJv
dmlkZWQgYnkgdGhlIGNvbXBpbGVyLgotICAvLyBHQ0MgZG9lc24ndCBoYXZlIF9faGFzX2J1aWx0
aW4oKQotICAvLyAoaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9
NjY5NzApLAotICAvLyBidXQgaGFzIF9fYnVpbHRpbl9zdHJsZW4gYWNjb3JkaW5nIHRvCi0gIC8v
IGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC43LjAvZ2NjL090aGVyLUJ1aWx0
aW5zLmh0bWwuCi0jaWYgQUJTTF9IQVZFX0JVSUxUSU4oX19idWlsdGluX3N0cmxlbikgfHwgXAot
ICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pKQotICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdHlwZSBTdHJMZW5JbnRlcm5hbChjb25zdCBjaGFyKiBzdHIpIHsKLSAg
ICByZXR1cm4gc3RyID8gX19idWlsdGluX3N0cmxlbihzdHIpIDogMDsKLSAgfQotI2Vsc2UKLSAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgU3RyTGVuSW50ZXJuYWwoY29uc3QgY2hhciogc3Ry
KSB7Ci0gICAgcmV0dXJuIHN0ciA/IHN0cmxlbihzdHIpIDogMDsKLSAgfQotI2VuZGlmCi0KICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgQ2hlY2tMZW5ndGhJbnRlcm5hbChzaXplX3R5cGUg
bGVuKSB7CiAgICAgcmV0dXJuIGxlbjsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9z
dHJpbmdfdmlld190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlld190ZXN0LmNjCmlu
ZGV4IGIxOWQwN2M3ZmQ2MWQ4MjEyMjNiZmMwYmY5N2IyYTJhNjIzNGQzOGMuLmE5NGU4MjI1NGVl
NDUyMWRmYzExYjA1YWE4OWQwZTc0MWNhNWI3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mv
c3RyaW5nX3ZpZXdfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3X3Rlc3Qu
Y2MKQEAgLTM1LDcgKzM1LDggQEAKICNkZWZpbmUgQUJTTF9FWFBFQ1RfREVBVEhfSUZfU1VQUE9S
VEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0
ZW1lbnQsICIuKiIpCiAjZWxzZQotI2RlZmluZSBBQlNMX0VYUEVDVF9ERUFUSF9JRl9TVVBQT1JU
RUQgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRAorI2RlZmluZSBBQlNMX0VYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9S
VEVEKHN0YXRlbWVudCwgcmVnZXgpCiAjZW5kaWYKIAogbmFtZXNwYWNlIHsKQEAgLTI4Myw3ICsy
ODQsNyBAQCBURVNUKFN0cmluZ1ZpZXdUZXN0LCBDb21wYXJpc29uT3BlcmF0b3JzQnlDaGFyYWN0
ZXJQb3NpdGlvbikgewogfQogI3VuZGVmIENPTVBBUkUKIAotLy8gU2FkbHksIG91ciB1c2VycyBv
ZnRlbiBjb25mdXNlIHN0ZDo6c3RyaW5nOjpucG9zIHdpdGggYWJzbDo6c3RyaW5nX3ZpZXc6Om5w
b3M7CisvLyBTYWRseSwgb3VyIHVzZXJzIG9mdGVuIGNvbmZ1c2Ugc3RyaW5nOjpucG9zIHdpdGgg
YWJzbDo6c3RyaW5nX3ZpZXc6Om5wb3M7CiAvLyBTbyBtdWNoIHNvIHRoYXQgd2UgdGVzdCBoZXJl
IHRoYXQgdGhleSBhcmUgdGhlIHNhbWUuICBUaGV5IG5lZWQgdG8KIC8vIGJvdGggYmUgdW5zaWdu
ZWQsIGFuZCBib3RoIGJlIHRoZSBtYXhpbXVtLXZhbHVlZCBpbnRlZ2VyIG9mIHRoZWlyIHR5cGUu
CiAKQEAgLTgxMSwxNSArODEyLDE4IEBAIFRFU1QoU3RyaW5nVmlld1Rlc3QsIEZyb250QmFja1Np
bmdsZUNoYXIpIHsKIH0KIAogLy8gYHN0ZDo6c3RyaW5nX3ZpZXc6OnN0cmluZ192aWV3KGNvbnN0
IGNoYXIqKWAgY2FsbHMKLS8vIGBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+OjpsZW5ndGgoY29uc3Qg
Y2hhciopYCB0byBnZXQgdGhlIHN0ZDo6c3RyaW5nIGxlbmd0aC4gSW4KKy8vIGBzdGQ6OmNoYXJf
dHJhaXRzPGNoYXI+OjpsZW5ndGgoY29uc3QgY2hhciopYCB0byBnZXQgdGhlIHN0cmluZyBsZW5n
dGguIEluCiAvLyBsaWJjKyssIGl0IGRvZXNuJ3QgYWxsb3cgYG51bGxwdHJgIGluIHRoZSBjb25z
dGV4cHIgY29udGV4dCwgd2l0aCB0aGUgZXJyb3IKIC8vICJyZWFkIG9mIGRlcmVmZXJlbmNlZCBu
dWxsIHBvaW50ZXIgaXMgbm90IGFsbG93ZWQgaW4gYSBjb25zdGFudCBleHByZXNzaW9uIi4KIC8v
IEF0IHJ1biB0aW1lLCB0aGUgYmVoYXZpb3Igb2YgYHN0ZDo6Y2hhcl90cmFpdHM6Omxlbmd0aCgp
YCBvbiBgbnVsbHB0cmAgaXMKLS8vIHVuZGVmaW5lZCBieSB0aGUgc3RhbmRhcmQgYW5kIHVzdWFs
bHkgcmVzdWx0cyBpbiBjcmFzaCB3aXRoIGxpYmMrKy4gVGhpcwotLy8gY29uZm9ybXMgdG8gdGhl
IHN0YW5kYXJkLCBidXQgYGFic2w6OnN0cmluZ192aWV3YCBpbXBsZW1lbnRzIGEgZGlmZmVyZW50
CisvLyB1bmRlZmluZWQgYnkgdGhlIHN0YW5kYXJkIGFuZCB1c3VhbGx5IHJlc3VsdHMgaW4gY3Jh
c2ggd2l0aCBsaWJjKysuCisvLyBJbiBNU1ZDLCBjcmVhdGluZyBhIGNvbnN0ZXhwciBzdHJpbmdf
dmlldyBmcm9tIG51bGxwdHIgYWxzbyB0cmlnZ2VycyBhbgorLy8gInVuZXZhbHVhYmxlIHBvaW50
ZXIgdmFsdWUiIGVycm9yLiBUaGlzIGNvbXBpbGVyIGltcGxlbWVudGF0aW9uIGNvbmZvcm1zCisv
LyB0byB0aGUgc3RhbmRhcmQsIGJ1dCBgYWJzbDo6c3RyaW5nX3ZpZXdgIGltcGxlbWVudHMgYSBk
aWZmZXJlbnQKIC8vIGJlaGF2aW9yIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMuIFdlIHdvcmsgYXJv
dW5kIHRlc3RzIHRoYXQgY29uc3RydWN0CiAvLyBgc3RyaW5nX3ZpZXdgIGZyb20gYG51bGxwdHJg
IHdoZW4gdXNpbmcgbGliYysrLgotI2lmICFkZWZpbmVkKEFCU0xfSEFWRV9TVERfU1RSSU5HX1ZJ
RVcpIHx8ICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKKyNpZiAhZGVmaW5lZChBQlNMX0hBVkVf
U1REX1NUUklOR19WSUVXKSB8fCBcCisgICAgKCFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikgJiYg
IWRlZmluZWQoX01TQ19WRVIpKQogI2RlZmluZSBBQlNMX0hBVkVfU1RSSU5HX1ZJRVdfRlJPTV9O
VUxMUFRSIDEKICNlbmRpZiAgLy8gIWRlZmluZWQoQUJTTF9IQVZFX1NURF9TVFJJTkdfVklFVykg
fHwgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
L3N0cmlwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwLmgKaW5kZXggMmY4ZDIxZjdkZWI5ZmNhMDI5
MzhjYTdhOTI0MGEwZTE3NzU2ZjIxMS4uOGQwZDdjNmJmYzEyMzBmMGMzOWExNTEyMThlMWNjOTI3
Yjg4MzZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3Mvc3RyaXAuaApAQCAtMTcsNyArMTcsNyBAQAogLy8gRmlsZTogc3RyaXAuaAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIC8vCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgdmFyaW91cyBmdW5j
dGlvbnMgZm9yIHN0cmlwcGluZyBzdWJzdHJpbmdzIGZyb20gYSBzdGQ6OnN0cmluZy4KKy8vIFRo
aXMgZmlsZSBjb250YWlucyB2YXJpb3VzIGZ1bmN0aW9ucyBmb3Igc3RyaXBwaW5nIHN1YnN0cmlu
Z3MgZnJvbSBhIHN0cmluZy4KICNpZm5kZWYgQUJTTF9TVFJJTkdTX1NUUklQX0hfCiAjZGVmaW5l
IEFCU0xfU1RSSU5HU19TVFJJUF9IXwogCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBhYnNs
IHsKIAogLy8gQ29uc3VtZVByZWZpeCgpCiAvLwotLy8gU3RyaXBzIHRoZSBgZXhwZWN0ZWRgIHBy
ZWZpeCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZ2l2ZW4gc3RkOjpzdHJpbmcsIHJldHVybmluZwor
Ly8gU3RyaXBzIHRoZSBgZXhwZWN0ZWRgIHByZWZpeCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZ2l2
ZW4gc3RyaW5nLCByZXR1cm5pbmcKIC8vIGB0cnVlYCBpZiB0aGUgc3RyaXAgb3BlcmF0aW9uIHN1
Y2NlZWRlZCBvciBmYWxzZSBvdGhlcndpc2UuCiAvLwogLy8gRXhhbXBsZToKQEAgLTQ4LDcgKzQ4
LDcgQEAgaW5saW5lIGJvb2wgQ29uc3VtZVByZWZpeChhYnNsOjpzdHJpbmdfdmlldyogc3RyLCBh
YnNsOjpzdHJpbmdfdmlldyBleHBlY3RlZCkgewogfQogLy8gQ29uc3VtZVN1ZmZpeCgpCiAvLwot
Ly8gU3RyaXBzIHRoZSBgZXhwZWN0ZWRgIHN1ZmZpeCBmcm9tIHRoZSBlbmQgb2YgdGhlIGdpdmVu
IHN0ZDo6c3RyaW5nLCByZXR1cm5pbmcKKy8vIFN0cmlwcyB0aGUgYGV4cGVjdGVkYCBzdWZmaXgg
ZnJvbSB0aGUgZW5kIG9mIHRoZSBnaXZlbiBzdHJpbmcsIHJldHVybmluZwogLy8gYHRydWVgIGlm
IHRoZSBzdHJpcCBvcGVyYXRpb24gc3VjY2VlZGVkIG9yIGZhbHNlIG90aGVyd2lzZS4KIC8vCiAv
LyBFeGFtcGxlOgpAQCAtNjQsOSArNjQsOSBAQCBpbmxpbmUgYm9vbCBDb25zdW1lU3VmZml4KGFi
c2w6OnN0cmluZ192aWV3KiBzdHIsIGFic2w6OnN0cmluZ192aWV3IGV4cGVjdGVkKSB7CiAKIC8v
IFN0cmlwUHJlZml4KCkKIC8vCi0vLyBSZXR1cm5zIGEgdmlldyBpbnRvIHRoZSBpbnB1dCBzdGQ6
OnN0cmluZyAnc3RyJyB3aXRoIHRoZSBnaXZlbiAncHJlZml4JyByZW1vdmVkLAotLy8gYnV0IGxl
YXZpbmcgdGhlIG9yaWdpbmFsIHN0ZDo6c3RyaW5nIGludGFjdC4gSWYgdGhlIHByZWZpeCBkb2Vz
IG5vdCBtYXRjaCBhdCB0aGUKLS8vIHN0YXJ0IG9mIHRoZSBzdGQ6OnN0cmluZywgcmV0dXJucyB0
aGUgb3JpZ2luYWwgc3RkOjpzdHJpbmcgaW5zdGVhZC4KKy8vIFJldHVybnMgYSB2aWV3IGludG8g
dGhlIGlucHV0IHN0cmluZyAnc3RyJyB3aXRoIHRoZSBnaXZlbiAncHJlZml4JyByZW1vdmVkLAor
Ly8gYnV0IGxlYXZpbmcgdGhlIG9yaWdpbmFsIHN0cmluZyBpbnRhY3QuIElmIHRoZSBwcmVmaXgg
ZG9lcyBub3QgbWF0Y2ggYXQgdGhlCisvLyBzdGFydCBvZiB0aGUgc3RyaW5nLCByZXR1cm5zIHRo
ZSBvcmlnaW5hbCBzdHJpbmcgaW5zdGVhZC4KIEFCU0xfTVVTVF9VU0VfUkVTVUxUIGlubGluZSBh
YnNsOjpzdHJpbmdfdmlldyBTdHJpcFByZWZpeCgKICAgICBhYnNsOjpzdHJpbmdfdmlldyBzdHIs
IGFic2w6OnN0cmluZ192aWV3IHByZWZpeCkgewogICBpZiAoYWJzbDo6U3RhcnRzV2l0aChzdHIs
IHByZWZpeCkpIHN0ci5yZW1vdmVfcHJlZml4KHByZWZpeC5zaXplKCkpOwpAQCAtNzUsOSArNzUs
OSBAQCBBQlNMX01VU1RfVVNFX1JFU1VMVCBpbmxpbmUgYWJzbDo6c3RyaW5nX3ZpZXcgU3RyaXBQ
cmVmaXgoCiAKIC8vIFN0cmlwU3VmZml4KCkKIC8vCi0vLyBSZXR1cm5zIGEgdmlldyBpbnRvIHRo
ZSBpbnB1dCBzdGQ6OnN0cmluZyAnc3RyJyB3aXRoIHRoZSBnaXZlbiAnc3VmZml4JyByZW1vdmVk
LAotLy8gYnV0IGxlYXZpbmcgdGhlIG9yaWdpbmFsIHN0ZDo6c3RyaW5nIGludGFjdC4gSWYgdGhl
IHN1ZmZpeCBkb2VzIG5vdCBtYXRjaCBhdCB0aGUKLS8vIGVuZCBvZiB0aGUgc3RkOjpzdHJpbmcs
IHJldHVybnMgdGhlIG9yaWdpbmFsIHN0ZDo6c3RyaW5nIGluc3RlYWQuCisvLyBSZXR1cm5zIGEg
dmlldyBpbnRvIHRoZSBpbnB1dCBzdHJpbmcgJ3N0cicgd2l0aCB0aGUgZ2l2ZW4gJ3N1ZmZpeCcg
cmVtb3ZlZCwKKy8vIGJ1dCBsZWF2aW5nIHRoZSBvcmlnaW5hbCBzdHJpbmcgaW50YWN0LiBJZiB0
aGUgc3VmZml4IGRvZXMgbm90IG1hdGNoIGF0IHRoZQorLy8gZW5kIG9mIHRoZSBzdHJpbmcsIHJl
dHVybnMgdGhlIG9yaWdpbmFsIHN0cmluZyBpbnN0ZWFkLgogQUJTTF9NVVNUX1VTRV9SRVNVTFQg
aW5saW5lIGFic2w6OnN0cmluZ192aWV3IFN0cmlwU3VmZml4KAogICAgIGFic2w6OnN0cmluZ192
aWV3IHN0ciwgYWJzbDo6c3RyaW5nX3ZpZXcgc3VmZml4KSB7CiAgIGlmIChhYnNsOjpFbmRzV2l0
aChzdHIsIHN1ZmZpeCkpIHN0ci5yZW1vdmVfc3VmZml4KHN1ZmZpeC5zaXplKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpcF90
ZXN0LmNjCmluZGV4IDIwNWMxNjBjMTkyOTI2Mzc5NmE1OTMyM2FjNTk1MDllOGFiNjU4OWUuLjQw
YzRjNjA3MTIxMTIwODEwNGM3ZGRiMmZkY2YzNzY1MTk5MjQzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3Mvc3RyaXBfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzL3N0cmlwX3Rlc3QuY2MK
QEAgLTEyLDggKzEyLDggQEAKIC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgogCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgZnVuY3Rpb25zIHRoYXQgcmVtb3Zl
IGEgZGVmaW5lZCBwYXJ0IGZyb20gdGhlIHN0ZDo6c3RyaW5nLAotLy8gaS5lLiwgc3RyaXAgdGhl
IHN0ZDo6c3RyaW5nLgorLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyB0aGF0IHJlbW92
ZSBhIGRlZmluZWQgcGFydCBmcm9tIHRoZSBzdHJpbmcsCisvLyBpLmUuLCBzdHJpcCB0aGUgc3Ry
aW5nLgogCiAjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmlwLmgiCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3Mvc3Vic3RpdHV0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmgKaW5k
ZXggYzRiMjViYTcwOTUyYzE5ZDY0ZWJjODQ5YjdlM2MwOWNhZmJjNTJjZi4uNGRlN2I0ZTc1ZmYy
M2I0MTM0MWZkNjM1Y2YyMjFkYTY2OWJkNTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9z
dWJzdGl0dXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdWJzdGl0dXRlLmgKQEAgLTE3LDQ2ICsx
Nyw0NiBAQAogLy8gRmlsZTogc3Vic3RpdHV0ZS5oCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ly8KLS8vIFRoaXMgcGFja2FnZSBjb250YWlucyBmdW5jdGlvbnMgZm9yIGVmZmljaWVudGx5IHBl
cmZvcm1pbmcgc3RkOjpzdHJpbmcKLS8vIHN1YnN0aXR1dGlvbnMgdXNpbmcgYSBmb3JtYXQgc3Rk
OjpzdHJpbmcgd2l0aCBwb3NpdGlvbmFsIG5vdGF0aW9uOgorLy8gVGhpcyBwYWNrYWdlIGNvbnRh
aW5zIGZ1bmN0aW9ucyBmb3IgZWZmaWNpZW50bHkgcGVyZm9ybWluZyBzdHJpbmcKKy8vIHN1YnN0
aXR1dGlvbnMgdXNpbmcgYSBmb3JtYXQgc3RyaW5nIHdpdGggcG9zaXRpb25hbCBub3RhdGlvbjoK
IC8vIGBTdWJzdGl0dXRlKClgIGFuZCBgU3Vic3RpdHV0ZUFuZEFwcGVuZCgpYC4KIC8vCiAvLyBV
bmxpa2UgcHJpbnRmLXN0eWxlIGZvcm1hdCBzcGVjaWZpZXJzLCBgU3Vic3RpdHV0ZSgpYCBmdW5j
dGlvbnMgZG8gbm90IG5lZWQKIC8vIHRvIHNwZWNpZnkgdGhlIHR5cGUgb2YgdGhlIHN1YnN0aXR1
dGlvbiBhcmd1bWVudHMuIFN1cHBvcnRlZCBhcmd1bWVudHMKLS8vIGZvbGxvd2luZyB0aGUgZm9y
bWF0IHN0ZDo6c3RyaW5nLCBzdWNoIGFzIHN0cmluZ3MsIHN0cmluZ192aWV3cywgaW50cywKKy8v
IGZvbGxvd2luZyB0aGUgZm9ybWF0IHN0cmluZywgc3VjaCBhcyBzdHJpbmdzLCBzdHJpbmdfdmll
d3MsIGludHMsCiAvLyBmbG9hdHMsIGFuZCBib29scywgYXJlIGF1dG9tYXRpY2FsbHkgY29udmVy
dGVkIHRvIHN0cmluZ3MgZHVyaW5nIHRoZQogLy8gc3Vic3RpdHV0aW9uIHByb2Nlc3MuIChTZWUg
YmVsb3cgZm9yIGEgZnVsbCBsaXN0IG9mIHN1cHBvcnRlZCB0eXBlcy4pCiAvLwogLy8gYFN1YnN0
aXR1dGUoKWAgZG9lcyBub3QgYWxsb3cgeW91IHRvIHNwZWNpZnkgKmhvdyogdG8gZm9ybWF0IGEg
dmFsdWUsIGJleW9uZAotLy8gdGhlIGRlZmF1bHQgY29udmVyc2lvbiB0byBzdGQ6OnN0cmluZy4g
Rm9yIGV4YW1wbGUsIHlvdSBjYW5ub3QgZm9ybWF0IGFuIGludGVnZXIKKy8vIHRoZSBkZWZhdWx0
IGNvbnZlcnNpb24gdG8gc3RyaW5nLiBGb3IgZXhhbXBsZSwgeW91IGNhbm5vdCBmb3JtYXQgYW4g
aW50ZWdlcgogLy8gaW4gaGV4LgogLy8KLS8vIFRoZSBmb3JtYXQgc3RkOjpzdHJpbmcgdXNlcyBw
b3NpdGlvbmFsIGlkZW50aWZpZXJzIGluZGljYXRlZCBieSBhIGRvbGxhciBzaWduICgkKQorLy8g
VGhlIGZvcm1hdCBzdHJpbmcgdXNlcyBwb3NpdGlvbmFsIGlkZW50aWZpZXJzIGluZGljYXRlZCBi
eSBhIGRvbGxhciBzaWduICgkKQogLy8gYW5kIHNpbmdsZSBkaWdpdCBwb3NpdGlvbmFsIGlkcyB0
byBpbmRpY2F0ZSB3aGljaCBzdWJzdGl0dXRpb24gYXJndW1lbnRzIHRvCi0vLyB1c2UgYXQgdGhh
dCBsb2NhdGlvbiB3aXRoaW4gdGhlIGZvcm1hdCBzdGQ6OnN0cmluZy4KKy8vIHVzZSBhdCB0aGF0
IGxvY2F0aW9uIHdpdGhpbiB0aGUgZm9ybWF0IHN0cmluZy4KIC8vCiAvLyBFeGFtcGxlIDE6Ci0v
LyAgIHN0ZDo6c3RyaW5nIHMgPSBTdWJzdGl0dXRlKCIkMSBwdXJjaGFzZWQgJDAgJDIuIFRoYW5r
cyAkMSEiLAorLy8gICBzdHJpbmcgcyA9IFN1YnN0aXR1dGUoIiQxIHB1cmNoYXNlZCAkMCAkMi4g
VGhhbmtzICQxISIsCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICA1LCAiQm9iIiwgIkFwcGxl
cyIpOwogLy8gICBFWFBFQ1RfRVEoIkJvYiBwdXJjaGFzZWQgNSBBcHBsZXMuIFRoYW5rcyBCb2Ih
Iiwgcyk7CiAvLwogLy8gRXhhbXBsZSAyOgotLy8gICBzdGQ6OnN0cmluZyBzID0gIkhpLiAiOwor
Ly8gICBzdHJpbmcgcyA9ICJIaS4gIjsKIC8vICAgU3Vic3RpdHV0ZUFuZEFwcGVuZCgmcywgIk15
IG5hbWUgaXMgJDAgYW5kIEkgYW0gJDEgeWVhcnMgb2xkLiIsICJCb2IiLCA1KTsKIC8vICAgRVhQ
RUNUX0VRKCJIaS4gTXkgbmFtZSBpcyBCb2IgYW5kIEkgYW0gNSB5ZWFycyBvbGQuIiwgcyk7CiAv
LwogLy8KIC8vIFN1cHBvcnRlZCB0eXBlczoKLS8vICAgKiBhYnNsOjpzdHJpbmdfdmlldywgc3Rk
OjpzdHJpbmcsIGNvbnN0IGNoYXIqIChudWxsIGlzIGVxdWl2YWxlbnQgdG8gIiIpCisvLyAgICog
YWJzbDo6c3RyaW5nX3ZpZXcsIHN0cmluZywgY29uc3QgY2hhciogKG51bGwgaXMgZXF1aXZhbGVu
dCB0byAiIikKIC8vICAgKiBpbnQzMl90LCBpbnQ2NF90LCB1aW50MzJfdCwgdWludDY0CiAvLyAg
ICogZmxvYXQsIGRvdWJsZQogLy8gICAqIGJvb2wgKFByaW50ZWQgYXMgInRydWUiIG9yICJmYWxz
ZSIpCi0vLyAgICogcG9pbnRlciB0eXBlcyBvdGhlciB0aGFuIGNoYXIqIChQcmludGVkIGFzICIw
eDxsb3dlciBjYXNlIGhleCBzdGQ6OnN0cmluZz4iLAorLy8gICAqIHBvaW50ZXIgdHlwZXMgb3Ro
ZXIgdGhhbiBjaGFyKiAoUHJpbnRlZCBhcyAiMHg8bG93ZXIgY2FzZSBoZXggc3RyaW5nPiIsCiAv
LyAgICAgZXhjZXB0IHRoYXQgbnVsbCBpcyBwcmludGVkIGFzICJOVUxMIikKIC8vCi0vLyBJZiBh
biBpbnZhbGlkIGZvcm1hdCBzdGQ6OnN0cmluZyBpcyBwcm92aWRlZCwgU3Vic3RpdHV0ZSByZXR1
cm5zIGFuIGVtcHR5IHN0ZDo6c3RyaW5nCi0vLyBhbmQgU3Vic3RpdHV0ZUFuZEFwcGVuZCBkb2Vz
IG5vdCBjaGFuZ2UgdGhlIHByb3ZpZGVkIG91dHB1dCBzdGQ6OnN0cmluZy4KLS8vIEEgZm9ybWF0
IHN0ZDo6c3RyaW5nIGlzIGludmFsaWQgaWYgaXQ6CisvLyBJZiBhbiBpbnZhbGlkIGZvcm1hdCBz
dHJpbmcgaXMgcHJvdmlkZWQsIFN1YnN0aXR1dGUgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcKKy8v
IGFuZCBTdWJzdGl0dXRlQW5kQXBwZW5kIGRvZXMgbm90IGNoYW5nZSB0aGUgcHJvdmlkZWQgb3V0
cHV0IHN0cmluZy4KKy8vIEEgZm9ybWF0IHN0cmluZyBpcyBpbnZhbGlkIGlmIGl0OgogLy8gICAq
IGVuZHMgaW4gYW4gdW5lc2NhcGVkICQgY2hhcmFjdGVyLAogLy8gICAgIGUuZy4gIkhlbGxvICQi
LCBvcgogLy8gICAqIGNhbGxzIGZvciBhIHBvc2l0aW9uIGFyZ3VtZW50IHdoaWNoIGlzIG5vdCBw
cm92aWRlZCwKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNwYWNlIHN1YnN0aXR1dGVfaW50ZXJuYWwg
ewogLy8KIC8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgYW4gYXJndW1lbnQgdHlwZSBmb3IgYGFic2w6
OlN1YnN0aXR1dGUoKWAgYW5kCiAvLyBgYWJzbDo6U3Vic3RpdHV0ZUFuZEFwcGVuZCgpYC4gYEFy
Z2AgaGFuZGxlcyBpbXBsaWNpdCBjb252ZXJzaW9uIG9mIHZhcmlvdXMKLS8vIHR5cGVzIHRvIGEg
c3RkOjpzdHJpbmcuIChgQXJnYCBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIGBBbHBoYU51bWAgY2xh
c3MgaW4KKy8vIHR5cGVzIHRvIGEgc3RyaW5nLiAoYEFyZ2AgaXMgdmVyeSBzaW1pbGFyIHRvIHRo
ZSBgQWxwaGFOdW1gIGNsYXNzIGluCiAvLyBgU3RyQ2F0KClgLikKIC8vCiAvLyBUaGlzIGNsYXNz
IGhhcyBpbXBsaWNpdCBjb25zdHJ1Y3RvcnMuCkBAIC0xOTcsOCArMTk3LDggQEAgY29uc3RleHBy
IGludCBQbGFjZWhvbGRlckJpdG1hc2soY29uc3QgY2hhciogZm9ybWF0KSB7CiAKIC8vIFN1YnN0
aXR1dGVBbmRBcHBlbmQoKQogLy8KLS8vIFN1YnN0aXR1dGVzIHZhcmlhYmxlcyBpbnRvIGEgZ2l2
ZW4gZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZCBhcHBlbmRzIHRvIGEgZ2l2ZW4KLS8vIG91dHB1dCBz
dGQ6OnN0cmluZy4gU2VlIGZpbGUgY29tbWVudHMgYWJvdmUgZm9yIHVzYWdlLgorLy8gU3Vic3Rp
dHV0ZXMgdmFyaWFibGVzIGludG8gYSBnaXZlbiBmb3JtYXQgc3RyaW5nIGFuZCBhcHBlbmRzIHRv
IGEgZ2l2ZW4KKy8vIG91dHB1dCBzdHJpbmcuIFNlZSBmaWxlIGNvbW1lbnRzIGFib3ZlIGZvciB1
c2FnZS4KIC8vCiAvLyBUaGUgZGVjbGFyYXRpb25zIG9mIGBTdWJzdGl0dXRlQW5kQXBwZW5kKClg
IGJlbG93IGNvbnNpc3Qgb2Ygb3ZlcmxvYWRzCiAvLyBmb3IgcGFzc2luZyAwIHRvIDEwIGFyZ3Vt
ZW50cywgcmVzcGVjdGl2ZWx5LgpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgU3Vic3RpdHV0ZUFu
ZEFwcGVuZCgKIAogLy8gU3Vic3RpdHV0ZSgpCiAvLwotLy8gU3Vic3RpdHV0ZXMgdmFyaWFibGVz
IGludG8gYSBnaXZlbiBmb3JtYXQgc3RkOjpzdHJpbmcuIFNlZSBmaWxlIGNvbW1lbnRzIGFib3Zl
CisvLyBTdWJzdGl0dXRlcyB2YXJpYWJsZXMgaW50byBhIGdpdmVuIGZvcm1hdCBzdHJpbmcuIFNl
ZSBmaWxlIGNvbW1lbnRzIGFib3ZlCiAvLyBmb3IgdXNhZ2UuCiAvLwogLy8gVGhlIGRlY2xhcmF0
aW9ucyBvZiBgU3Vic3RpdHV0ZSgpYCBiZWxvdyBjb25zaXN0IG9mIG92ZXJsb2FkcyBmb3IgcGFz
c2luZyAwCkBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBTdWJzdGl0dXRlQW5kQXBwZW5kKAogLy8g
RXhhbXBsZToKIC8vICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KIC8vICB2b2lkIFZhck1z
ZyhhYnNsOjpzdHJpbmdfdmlldyBmb3JtYXQsIGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIHsKLS8vICAg
IHN0ZDo6c3RyaW5nIHMgPSBhYnNsOjpTdWJzdGl0dXRlKGZvcm1hdCwgYXJncy4uLik7CisvLyAg
ICBzdHJpbmcgcyA9IGFic2w6OlN1YnN0aXR1dGUoZm9ybWF0LCBhcmdzLi4uKTsKIAogQUJTTF9N
VVNUX1VTRV9SRVNVTFQgaW5saW5lIHN0ZDo6c3RyaW5nIFN1YnN0aXR1dGUoYWJzbDo6c3RyaW5n
X3ZpZXcgZm9ybWF0KSB7CiAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N5bmNocm9uaXphdGlvbi9CVUlMRC5iYXplbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9CVUlM
RC5iYXplbAppbmRleCA4ZDMwMmUwMTIyM2I0NWJkOTJhMjE2NzBhMTFmNTU5MmY5YjE1YzY0Li5m
NTJlOWQ0MTY0NGE4ZDkzMWJmMzlmYWU3ZWM4NDMyN2JlYWY0MWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC9zeW5jaHJvbml6YXRpb24vQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9u
L0JVSUxELmJhemVsCkBAIC04OCw2ICs4OCw5IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFs
bCIsCiAgICAgc3JjcyA9IFsiYmFycmllcl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RF
U1RfQ09QVFMsCisgICAgdGFncyA9IFsKKyAgICAgICAgIm5vX3Rlc3Rfd2FzbSIsCisgICAgXSwK
ICAgICBkZXBzID0gWwogICAgICAgICAiOnN5bmNocm9uaXphdGlvbiIsCiAgICAgICAgICIvL2Fi
c2wvdGltZSIsCkBAIC0xMDAsNiArMTAzLDkgQEAgY2NfdGVzdCgKICAgICBzaXplID0gInNtYWxs
IiwKICAgICBzcmNzID0gWyJibG9ja2luZ19jb3VudGVyX3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9
IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0gWworICAgICAgICAibm9fdGVzdF93YXNtIiwK
KyAgICBdLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3luY2hyb25pemF0aW9uIiwKICAgICAg
ICAgIi8vYWJzbC90aW1lIiwKQEAgLTEzOCw2ICsxNDQsOSBAQCBjY19saWJyYXJ5KAogICAgIG5h
bWUgPSAidGhyZWFkX3Bvb2wiLAogICAgIHRlc3Rvbmx5ID0gMSwKICAgICBoZHJzID0gWyJpbnRl
cm5hbC90aHJlYWRfcG9vbC5oIl0sCisgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICAgIi8vYWJz
bDpfX3N1YnBhY2thZ2VzX18iLAorICAgIF0sCiAgICAgZGVwcyA9IFsKICAgICAgICAgIjpzeW5j
aHJvbml6YXRpb24iLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29yZV9oZWFkZXJzIiwKQEAgLTE0
OSw2ICsxNTgsNyBAQCBjY190ZXN0KAogICAgIHNpemUgPSAibGFyZ2UiLAogICAgIHNyY3MgPSBb
Im11dGV4X3Rlc3QuY2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICBzaGFy
ZF9jb3VudCA9IDI1LAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3luY2hyb25pemF0aW9uIiwK
ICAgICAgICAgIjp0aHJlYWRfcG9vbCIsCkBAIC0yMDUsNiArMjE1LDcgQEAgY2NfdGVzdCgKICAg
ICBuYW1lID0gInBlcl90aHJlYWRfc2VtX3Rlc3QiLAogICAgIHNpemUgPSAibWVkaXVtIiwKICAg
ICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUywKKyAgICB0YWdzID0gWyJub190ZXN0X3dhc20iXSwK
ICAgICBkZXBzID0gWwogICAgICAgICAiOnBlcl90aHJlYWRfc2VtX3Rlc3RfY29tbW9uIiwKICAg
ICAgICAgIjpzeW5jaHJvbml6YXRpb24iLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0
aW9uL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL0JVSUxELmduCmluZGV4IDM2NjRh
YTEzMjc0ZjQwNDBmOTM2OWI5NWY0MGRlZWYyYjU5MGRiOGYuLmU2Zjc2M2EwNjBiYTljZTBhYWVl
OWMxNDE4MTBmZmY2YjRlNzhjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9C
VUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vQlVJTEQuZ24KQEAgLTUwLDggKzUw
LDggQEAgc291cmNlX3NldCgic3luY2hyb25pemF0aW9uIikgewogICAgICJpbnRlcm5hbC9jcmVh
dGVfdGhyZWFkX2lkZW50aXR5LmNjIiwKICAgICAiaW50ZXJuYWwvcGVyX3RocmVhZF9zZW0uY2Mi
LAogICAgICJpbnRlcm5hbC93YWl0ZXIuY2MiLAorICAgICJtdXRleC5jYyIsCiAgICAgIm5vdGlm
aWNhdGlvbi5jYyIsCi0gICAgIm11dGV4LmNjIgogICBdCiAgIHB1YmxpYyA9IFsKICAgICAiYmFy
cmllci5oIiwKQEAgLTkzLDYgKzkzLDggQEAgc291cmNlX3NldCgidGhyZWFkX3Bvb2wiKSB7CiAg
ICAgIjpzeW5jaHJvbml6YXRpb24iLAogICAgICIuLi9iYXNlOmNvcmVfaGVhZGVycyIsCiAgIF0K
KyAgdmlzaWJpbGl0eSA9IFtdCisgIHZpc2liaWxpdHkgKz0gWyAiLi4vKiIgXQogfQogCiBzb3Vy
Y2Vfc2V0KCJwZXJfdGhyZWFkX3NlbV90ZXN0X2NvbW1vbiIpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlcy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9u
aXphdGlvbi9pbnRlcm5hbC9ncmFwaGN5Y2xlcy5jYwppbmRleCBhYjFmM2Y4NGU3NGMxZDdlZGVm
NjM3OWUwMjY4NGIwMGI1M2E3ZTM0Li5kMzg3OGRlMmI2OGYyMTkyOWYwMGI4NjM0YmNiOTc5NGEw
ZTRmMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvZ3JhcGhj
eWNsZXMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL2ludGVybmFsL2dyYXBoY3ljbGVz
LmNjCkBAIC0yMDQsOCArMjA0LDcgQEAgY2xhc3MgTm9kZVNldCB7CiAgIH0KIAogIHByaXZhdGU6
Ci0gIHN0YXRpYyBjb25zdCBpbnQzMl90IGtFbXB0eTsKLSAgc3RhdGljIGNvbnN0IGludDMyX3Qg
a0RlbDsKKyAgZW51bSA6IGludDMyX3QgeyBrRW1wdHkgPSAtMSwga0RlbCA9IC0yIH07CiAgIFZl
YzxpbnQzMl90PiB0YWJsZV87CiAgIHVpbnQzMl90IG9jY3VwaWVkXzsgICAgIC8vIENvdW50IG9m
IG5vbi1lbXB0eSBzbG90cyAoaW5jbHVkZXMgZGVsZXRlZCBzbG90cykKIApAQCAtMjU1LDkgKzI1
NCw2IEBAIGNsYXNzIE5vZGVTZXQgewogICBOb2RlU2V0JiBvcGVyYXRvcj0oY29uc3QgTm9kZVNl
dCYpID0gZGVsZXRlOwogfTsKIAotY29uc3QgaW50MzJfdCBOb2RlU2V0OjprRW1wdHkgPSAtMTsK
LWNvbnN0IGludDMyX3QgTm9kZVNldDo6a0RlbCA9IC0yOwotCiAvLyBXZSBlbmNvZGUgYSBub2Rl
IGluZGV4IGFuZCBhIG5vZGUgdmVyc2lvbiBpbiBHcmFwaElkLiAgVGhlIHZlcnNpb24KIC8vIG51
bWJlciBpcyBpbmNyZW1lbnRlZCB3aGVuIHRoZSBHcmFwaElkIGlzIGZyZWVkIHdoaWNoIGF1dG9t
YXRpY2FsbHkKIC8vIGludmFsaWRhdGVzIGFsbCBjb3BpZXMgb2YgdGhlIEdyYXBoSWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vaW50ZXJuYWwvcGVyX3RocmVhZF9zZW1fdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0
LmNjCmluZGV4IDJiNTJlYTc2YWIwZTk0MjYwMWViNTBmMTYwZmU4NDViOWIwNjg1Y2YuLmMyOWQ4
NDAzZGY0M2ZiYzNkOGQyYzVjN2NjZGFmM2FlZWQyZjJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5
bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N5bmNocm9uaXphdGlvbi9pbnRlcm5hbC9wZXJfdGhyZWFkX3NlbV90ZXN0LmNjCkBAIC0xNTMs
MTIgKzE1MywxNSBAQCBURVNUX0YoUGVyVGhyZWFkU2VtVGVzdCwgV2l0aFRpbWVvdXQpIHsKIAog
VEVTVF9GKFBlclRocmVhZFNlbVRlc3QsIFRpbWVvdXRzKSB7CiAgIGFic2w6OlRpbWUgdGltZW91
dCA9IGFic2w6Ok5vdygpICsgYWJzbDo6TWlsbGlzZWNvbmRzKDUwKTsKKyAgLy8gQWxsb3cgZm9y
IGEgc2xpZ2h0IGVhcmx5IHJldHVybiwgdG8gYWNjb3VudCBmb3IgcXVhbGl0eSBvZiBpbXBsZW1l
bnRhdGlvbgorICAvLyBpc3N1ZXMgb24gdmFyaW91cyBwbGF0Zm9ybXMuCisgIGNvbnN0IGFic2w6
OkR1cmF0aW9uIHNsb3AgPSBhYnNsOjpNaWNyb3NlY29uZHMoMjAwKTsKICAgRVhQRUNUX0ZBTFNF
KFdhaXQodGltZW91dCkpOwotICBFWFBFQ1RfTEUodGltZW91dCwgYWJzbDo6Tm93KCkpOworICBF
WFBFQ1RfTEUodGltZW91dCwgYWJzbDo6Tm93KCkgKyBzbG9wKTsKIAogICBhYnNsOjpUaW1lIG5l
Z2F0aXZlX3RpbWVvdXQgPSBhYnNsOjpVbml4RXBvY2goKSAtIGFic2w6Ok1pbGxpc2Vjb25kcygx
MDApOwogICBFWFBFQ1RfRkFMU0UoV2FpdChuZWdhdGl2ZV90aW1lb3V0KSk7Ci0gIEVYUEVDVF9M
RShuZWdhdGl2ZV90aW1lb3V0LCBhYnNsOjpOb3coKSk7ICAvLyB0cml2aWFsbHkgdHJ1ZSA6KQor
ICBFWFBFQ1RfTEUobmVnYXRpdmVfdGltZW91dCwgYWJzbDo6Tm93KCkgKyBzbG9wKTsgIC8vIHRy
aXZpYWxseSB0cnVlIDopCiAKICAgUG9zdChHZXRPckNyZWF0ZUN1cnJlbnRUaHJlYWRJZGVudGl0
eSgpKTsKICAgLy8gVGhlIHdhaXQgaGVyZSBoYXMgYW4gZXhwaXJlZCB0aW1lb3V0LCBidXQgd2Ug
aGF2ZSBhIHdha2UgdG8gY29uc3VtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlv
bi9tdXRleC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9tdXRleC5jYwppbmRleCA4MGYzNGYw
MzVmYzZiNjc5ZWViMGIxNGQ4OWNmYWVhYTFmODBmMDUxLi45ZDU5YTc5ZDkyZDlmNzkyOGYzZGZl
MmE3MzA0MzRlMTU0YWNlYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0
ZXguY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4LmNjCkBAIC0yOTgsNyArMjk4
LDcgQEAgc3RhdGljIHN0cnVjdCBTeW5jaEV2ZW50IHsgICAgIC8vIHRoaXMgaXMgYSB0cml2aWFs
IGhhc2ggdGFibGUgZm9yIHRoZSBldmVudHMKIC8vIHNldCAiYml0cyIgaW4gdGhlIHdvcmQgdGhl
cmUgKHdhaXRpbmcgdW50aWwgbG9ja2JpdCBpcyBjbGVhciBiZWZvcmUgZG9pbmcKIC8vIHNvKSwg
YW5kIHJldHVybiBhIHJlZmNvdW50ZWQgcmVmZXJlbmNlIHRoYXQgd2lsbCByZW1haW4gdmFsaWQg
dW50aWwKIC8vIFVucmVmU3luY2hFdmVudCgpIGlzIGNhbGxlZC4gIElmIGEgbmV3IFN5bmNoRXZl
bnQgaXMgYWxsb2NhdGVkLAotLy8gdGhlIHN0ZDo6c3RyaW5nIG5hbWUgaXMgY29waWVkIGludG8g
aXQuCisvLyB0aGUgc3RyaW5nIG5hbWUgaXMgY29waWVkIGludG8gaXQuCiAvLyBXaGVuIHVzZWQg
d2l0aCBhIG11dGV4LCB0aGUgY2FsbGVyIHNob3VsZCBhbHNvIGVuc3VyZSB0aGF0IGtNdUV2ZW50
CiAvLyBpcyBzZXQgaW4gdGhlIG11dGV4IHdvcmQsIGFuZCBzaW1pbGFybHkgZm9yIGNvbmRpdGlv
biB2YXJpYWJsZXMgYW5kIGtDVkV2ZW50Lgogc3RhdGljIFN5bmNoRXZlbnQgKkVuc3VyZVN5bmNo
RXZlbnQoc3RkOjphdG9taWM8aW50cHRyX3Q+ICphZGRyLApAQCAtMTgyNyw4ICsxODI3LDggQEAg
Ym9vbCBNdXRleDo6TG9ja1Nsb3dXaXRoRGVhZGxpbmUoTXVIb3cgaG93LCBjb25zdCBDb25kaXRp
b24gKmNvbmQsCiAgICAgICAgICBjb25kID09IG51bGxwdHIgfHwgRXZhbENvbmRpdGlvbkFubm90
YXRlZChjb25kLCB0aGlzLCB0cnVlLCBob3cpOwogfQogCi0vLyBSQVdfQ0hFQ0tfRk1UKCkgdGFr
ZXMgYSBjb25kaXRpb24sIGEgcHJpbnRmLXN0eWxlIGZvcm1hdCBzdGQ6OnN0cmluZywgYW5kCi0v
LyB0aGUgcHJpbnRmLXN0eWxlIGFyZ3VtZW50IGxpc3QuICAgVGhlIGZvcm1hdCBzdGQ6OnN0cmlu
ZyBtdXN0IGJlIGEgbGl0ZXJhbC4KKy8vIFJBV19DSEVDS19GTVQoKSB0YWtlcyBhIGNvbmRpdGlv
biwgYSBwcmludGYtc3R5bGUgZm9ybWF0IHN0cmluZywgYW5kCisvLyB0aGUgcHJpbnRmLXN0eWxl
IGFyZ3VtZW50IGxpc3QuICAgVGhlIGZvcm1hdCBzdHJpbmcgbXVzdCBiZSBhIGxpdGVyYWwuCiAv
LyBBcmd1bWVudHMgYWZ0ZXIgdGhlIGZpcnN0IGFyZSBub3QgZXZhbHVhdGVkIHVubGVzcyB0aGUg
Y29uZGl0aW9uIGlzIHRydWUuCiAjZGVmaW5lIFJBV19DSEVDS19GTVQoY29uZCwgLi4uKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE5NzUsNyAr
MTk3NSw3IEBAIHZvaWQgTXV0ZXg6OkxvY2tTbG93TG9vcChTeW5jaFdhaXRQYXJhbXMgKndhaXRw
LCBpbnQgZmxhZ3MpIHsKIC8vIFVubG9jayB0aGlzIG11dGV4LCB3aGljaCBpcyBoZWxkIGJ5IHRo
ZSBjdXJyZW50IHRocmVhZC4KIC8vIElmIHdhaXRwIGlzIG5vbi16ZXJvLCBpdCBtdXN0IGJlIHRo
ZSB3YWl0IHBhcmFtZXRlcnMgZm9yIHRoZSBjdXJyZW50IHRocmVhZAogLy8gd2hpY2ggaG9sZHMg
dGhlIGxvY2sgYnV0IGlzIG5vdCBydW5uYWJsZSBiZWNhdXNlIGl0cyBjb25kaXRpb24gaXMgZmFs
c2UKLS8vIG9yIGl0IG4gdGhlIHByb2Nlc3Mgb2YgYmxvY2tpbmcgb24gYSBjb25kaXRpb24gdmFy
aWFibGU7IGl0IG11c3QgcmVxdWV1ZQorLy8gb3IgaXQgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmxv
Y2tpbmcgb24gYSBjb25kaXRpb24gdmFyaWFibGU7IGl0IG11c3QgcmVxdWV1ZQogLy8gaXRzZWxm
IG9uIHRoZSBtdXRleC9jb25kdmFyIHRvIHdhaXQgZm9yIGl0cyBjb25kaXRpb24gdG8gYmVjb21l
IHRydWUuCiB2b2lkIE11dGV4OjpVbmxvY2tTbG93KFN5bmNoV2FpdFBhcmFtcyAqd2FpdHApIHsK
ICAgaW50cHRyX3QgdiA9IG11Xy5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9uL211dGV4LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6
YXRpb24vbXV0ZXguaAppbmRleCA4M2MyMTQ4NjdhYzUzYTkxMjJkZDRlOTc1M2ZjOGJmNzJlMTI4
YmU1Li5hMzc4MTkwNTM4ZTJkMjM2ZWFmMzk5MzE1MDA3ZDAwODcyZTIwODY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9zeW5jaHJvbml6YXRpb24vbXV0ZXguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJvbml6YXRp
b24vbXV0ZXguaApAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQgUmVnaXN0ZXJNdXRleFRyYWNlcih2
b2lkICgqZm4pKGNvbnN0IGNoYXIgKm1zZywgY29uc3Qgdm9pZCAqb2JqLAogLy8KIC8vIFRoZSBm
dW5jdGlvbiBwb2ludGVyIHJlZ2lzdGVyZWQgaGVyZSB3aWxsIGJlIGNhbGxlZCBoZXJlIG9uIHZh
cmlvdXMgQ29uZFZhcgogLy8gZXZlbnRzLiAgVGhlIGNhbGxiYWNrIGlzIGdpdmVuIGFuIG9wYXF1
ZSBoYW5kbGUgdG8gdGhlIENvbmRWYXIgb2JqZWN0IGFuZAotLy8gYSBzdGQ6OnN0cmluZyBpZGVu
dGlmeWluZyB0aGUgZXZlbnQuICBUaGlzIGlzIHRocmVhZC1zYWZlLCBidXQgb25seSBhIHNpbmds
ZQorLy8gYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGV2ZW50LiAgVGhpcyBpcyB0aHJlYWQtc2Fm
ZSwgYnV0IG9ubHkgYSBzaW5nbGUKIC8vIHRyYWNlciBjYW4gYmUgcmVnaXN0ZXJlZC4KIC8vCiAv
LyBFdmVudHMgdGhhdCBjYW4gYmUgc2VudCBhcmUgIldhaXQiLCAiVW53YWl0IiwgIlNpZ25hbCB3
YWtldXAiLCBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRp
b25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N5bmNocm9uaXphdGlvbi9ub3RpZmljYXRpb25fdGVzdC5jYwpp
bmRleCA5YjNiNmE1YTllODRlYzFhMzY1NWEyYzhmNDNlYjhmYmM1ODMyZWY2Li5kODcwOGQ1NTFh
MTU3NTc0NmVhMmE4NTQyNjk3MmZkOTgxOTExMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zeW5jaHJv
bml6YXRpb24vbm90aWZpY2F0aW9uX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3luY2hyb25pemF0aW9u
L25vdGlmaWNhdGlvbl90ZXN0LmNjCkBAIC03MSwxMCArNzEsMTMgQEAgc3RhdGljIHZvaWQgQmFz
aWNUZXN0cyhib29sIG5vdGlmeV9iZWZvcmVfd2FpdGluZywgTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pIHsKICAgICAgIG5vdGlmaWNhdGlvbi0+V2FpdEZvck5vdGlmaWNhdGlvbldpdGhUaW1l
b3V0KGFic2w6Ok1pbGxpc2Vjb25kcygwKSkpOwogICBFWFBFQ1RfRkFMU0Uobm90aWZpY2F0aW9u
LT5XYWl0Rm9yTm90aWZpY2F0aW9uV2l0aERlYWRsaW5lKGFic2w6Ok5vdygpKSk7CiAKKyAgY29u
c3QgYWJzbDo6RHVyYXRpb24gZGVsYXkgPSBhYnNsOjpNaWxsaXNlY29uZHMoNTApOworICAvLyBB
bGxvdyBmb3IgYSBzbGlnaHQgZWFybHkgcmV0dXJuLCB0byBhY2NvdW50IGZvciBxdWFsaXR5IG9m
IGltcGxlbWVudGF0aW9uCisgIC8vIGlzc3VlcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4KKyAgY29u
c3QgYWJzbDo6RHVyYXRpb24gc2xvcCA9IGFic2w6Ok1pY3Jvc2Vjb25kcygyMDApOwogICBhYnNs
OjpUaW1lIHN0YXJ0ID0gYWJzbDo6Tm93KCk7Ci0gIEVYUEVDVF9GQUxTRSgKLSAgICAgIG5vdGlm
aWNhdGlvbi0+V2FpdEZvck5vdGlmaWNhdGlvbldpdGhUaW1lb3V0KGFic2w6Ok1pbGxpc2Vjb25k
cyg1MCkpKTsKLSAgRVhQRUNUX0xFKHN0YXJ0ICsgYWJzbDo6TWlsbGlzZWNvbmRzKDUwKSwgYWJz
bDo6Tm93KCkpOworICBFWFBFQ1RfRkFMU0Uobm90aWZpY2F0aW9uLT5XYWl0Rm9yTm90aWZpY2F0
aW9uV2l0aFRpbWVvdXQoZGVsYXkpKTsKKyAgRVhQRUNUX0xFKHN0YXJ0ICsgZGVsYXksIGFic2w6
Ok5vdygpICsgc2xvcCk7CiAKICAgVGhyZWFkU2FmZUNvdW50ZXIgcmVhZHlfY291bnRlcjsKICAg
VGhyZWFkU2FmZUNvdW50ZXIgZG9uZV9jb3VudGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9C
VUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvQlVJTEQuZ24KaW5kZXggOTkyN2FmODM0M2NiMTYwOTllMDIy
Y2QzNzgwZjQ4NmU3YWZhNDExZC4uNTc1OGU5ZGMxZTNjM2RjNDVmMjhhNTI1ZmZlNjAxM2E4MzMx
NDc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL0JV
SUxELmduCkBAIC02Miw4ICs2Miw5IEBAIHNvdXJjZV9zZXQoInRlc3RfdXRpbCIpIHsKICAgICAi
OnRpbWUiLAogICAgICIuLi9iYXNlIiwKICAgICAiLi4vdGltZS9pbnRlcm5hbC9jY3R6OnRpbWVf
em9uZSIsCi0gICAgIi8vdGVzdGluZy9ndGVzdCIsCiAgICAgIi8vdGVzdGluZy9nbW9jayIsCisg
ICAgIi8vdGVzdGluZy9ndGVzdCIsCisgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdC86Z21v
Y2siLAogICBdCiAgIHZpc2liaWxpdHkgPSBbXQogICB2aXNpYmlsaXR5ICs9IFsgIi4uL3RpbWU6
KiIgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9kdXJhdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZHVy
YXRpb24uY2MKaW5kZXggZjQwMjEzN2IwYTY1MGQyYjdlZDYwNTI2MmZkOTU0MDYyYWFiMjlhMC4u
Mjk1MGM3Y2RjNjMyMGI0ZDNmODQzNGIxZTJiMDFhZDU2ZDcyZGI0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9kdXJhdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2R1cmF0aW9uLmNjCkBAIC02NjYs
NyArNjY2LDcgQEAgc3RkOjpjaHJvbm86OmhvdXJzIFRvQ2hyb25vSG91cnMoRHVyYXRpb24gZCkg
ewogfQogCiAvLwotLy8gVG8vRnJvbSBzdGQ6OnN0cmluZyBmb3JtYXR0aW5nLgorLy8gVG8vRnJv
bSBzdHJpbmcgZm9ybWF0dGluZy4KIC8vCiAKIG5hbWVzcGFjZSB7CkBAIC03NDQsNyArNzQ0LDcg
QEAgdm9pZCBBcHBlbmROdW1iZXJVbml0KHN0ZDo6c3RyaW5nKiBvdXQsIGRvdWJsZSBuLCBEaXNw
bGF5VW5pdCB1bml0KSB7CiB9ICAvLyBuYW1lc3BhY2UKIAogLy8gRnJvbSBHbydzIGRvYyBhdCBo
dHRwOi8vZ29sYW5nLm9yZy9wa2cvdGltZS8jRHVyYXRpb24uU3RyaW5nCi0vLyAgIFtGb3JtYXRE
dXJhdGlvbl0gcmV0dXJucyBhIHN0ZDo6c3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZHVyYXRpb24g
aW4gdGhlCisvLyAgIFtGb3JtYXREdXJhdGlvbl0gcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRp
bmcgdGhlIGR1cmF0aW9uIGluIHRoZQogLy8gICBmb3JtICI3MmgzbTAuNXMiLiAgTGVhZGluZyB6
ZXJvIHVuaXRzIGFyZSBvbWl0dGVkLiAgQXMgYSBzcGVjaWFsCiAvLyAgIGNhc2UsIGR1cmF0aW9u
cyBsZXNzIHRoYW4gb25lIHNlY29uZCBmb3JtYXQgdXNlIGEgc21hbGxlciB1bml0CiAvLyAgICht
aWxsaS0sIG1pY3JvLSwgb3IgbmFub3NlY29uZHMpIHRvIGVuc3VyZSB0aGF0IHRoZSBsZWFkaW5n
IGRpZ2l0CkBAIC03ODcsOCArNzg3LDggQEAgc3RkOjpzdHJpbmcgRm9ybWF0RHVyYXRpb24oRHVy
YXRpb24gZCkgewogbmFtZXNwYWNlIHsKIAogLy8gQSBoZWxwZXIgZm9yIFBhcnNlRHVyYXRpb24o
KSB0aGF0IHBhcnNlcyBhIGxlYWRpbmcgbnVtYmVyIGZyb20gdGhlIGdpdmVuCi0vLyBzdGQ6OnN0
cmluZyBhbmQgc3RvcmVzIHRoZSByZXN1bHQgaW4gKmludF9wYXJ0LypmcmFjX3BhcnQvKmZyYWNf
c2NhbGUuICBUaGUKLS8vIGdpdmVuIHN0ZDo6c3RyaW5nIHBvaW50ZXIgaXMgbW9kaWZpZWQgdG8g
cG9pbnQgdG8gdGhlIGZpcnN0IHVuY29uc3VtZWQgY2hhci4KKy8vIHN0cmluZyBhbmQgc3RvcmVz
IHRoZSByZXN1bHQgaW4gKmludF9wYXJ0LypmcmFjX3BhcnQvKmZyYWNfc2NhbGUuICBUaGUKKy8v
IGdpdmVuIHN0cmluZyBwb2ludGVyIGlzIG1vZGlmaWVkIHRvIHBvaW50IHRvIHRoZSBmaXJzdCB1
bmNvbnN1bWVkIGNoYXIuCiBib29sIENvbnN1bWVEdXJhdGlvbk51bWJlcihjb25zdCBjaGFyKiog
ZHBwLCBpbnQ2NF90KiBpbnRfcGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QqIGZyYWNfcGFydCwgaW50NjRfdCogZnJhY19zY2FsZSkgewogICAqaW50X3BhcnQgPSAwOwpA
QCAtODE2LDggKzgxNiw4IEBAIGJvb2wgQ29uc3VtZUR1cmF0aW9uTnVtYmVyKGNvbnN0IGNoYXIq
KiBkcHAsIGludDY0X3QqIGludF9wYXJ0LAogfQogCiAvLyBBIGhlbHBlciBmb3IgUGFyc2VEdXJh
dGlvbigpIHRoYXQgcGFyc2VzIGEgbGVhZGluZyB1bml0IGRlc2lnbmF0b3IgKGUuZy4sCi0vLyBu
cywgdXMsIG1zLCBzLCBtLCBoKSBmcm9tIHRoZSBnaXZlbiBzdGQ6OnN0cmluZyBhbmQgc3RvcmVz
IHRoZSByZXN1bHRpbmcgdW5pdAotLy8gaW4gIip1bml0Ii4gIFRoZSBnaXZlbiBzdGQ6OnN0cmlu
ZyBwb2ludGVyIGlzIG1vZGlmaWVkIHRvIHBvaW50IHRvIHRoZSBmaXJzdAorLy8gbnMsIHVzLCBt
cywgcywgbSwgaCkgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBzdG9yZXMgdGhlIHJlc3VsdGlu
ZyB1bml0CisvLyBpbiAiKnVuaXQiLiAgVGhlIGdpdmVuIHN0cmluZyBwb2ludGVyIGlzIG1vZGlm
aWVkIHRvIHBvaW50IHRvIHRoZSBmaXJzdAogLy8gdW5jb25zdW1lZCBjaGFyLgogYm9vbCBDb25z
dW1lRHVyYXRpb25Vbml0KGNvbnN0IGNoYXIqKiBzdGFydCwgRHVyYXRpb24qIHVuaXQpIHsKICAg
Y29uc3QgY2hhciAqcyA9ICpzdGFydDsKQEAgLTg1MCw3ICs4NTAsNyBAQCBib29sIENvbnN1bWVE
dXJhdGlvblVuaXQoY29uc3QgY2hhcioqIHN0YXJ0LCBEdXJhdGlvbiogdW5pdCkgewogfSAgLy8g
bmFtZXNwYWNlCiAKIC8vIEZyb20gR28ncyBkb2MgYXQgaHR0cDovL2dvbGFuZy5vcmcvcGtnL3Rp
bWUvI1BhcnNlRHVyYXRpb24KLS8vICAgW1BhcnNlRHVyYXRpb25dIHBhcnNlcyBhIGR1cmF0aW9u
IHN0ZDo6c3RyaW5nLiAgQSBkdXJhdGlvbiBzdGQ6OnN0cmluZyBpcworLy8gICBbUGFyc2VEdXJh
dGlvbl0gcGFyc2VzIGEgZHVyYXRpb24gc3RyaW5nLiAgQSBkdXJhdGlvbiBzdHJpbmcgaXMKIC8v
ICAgYSBwb3NzaWJseSBzaWduZWQgc2VxdWVuY2Ugb2YgZGVjaW1hbCBudW1iZXJzLCBlYWNoIHdp
dGggb3B0aW9uYWwKIC8vICAgZnJhY3Rpb24gYW5kIGEgdW5pdCBzdWZmaXgsIHN1Y2ggYXMgIjMw
MG1zIiwgIi0xLjVoIiBvciAiMmg0NW0iLgogLy8gICBWYWxpZCB0aW1lIHVuaXRzIGFyZSAibnMi
LCAidXMiICJtcyIsICJzIiwgIm0iLCAiaCIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2Zvcm1h
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0LmNjCmluZGV4IGU5OGU2MGEzNzJiZmMzYTQ0NzJjOGEx
N2FjN2E1MzgzNzgyYjg4N2EuLmVlNTk3ZTQwN2E5ZGRkMjI2YThmODgwNjU5ZjJkNTA0MjdmOTE5
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9ybWF0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvZm9y
bWF0LmNjCkBAIC04OCw3ICs4OCw3IEBAIGJvb2wgUGFyc2VUaW1lKGNvbnN0IHN0ZDo6c3RyaW5n
JiBmb3JtYXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwgYWJzbDo6VGltZSoKICAgcmV0dXJu
IGFic2w6OlBhcnNlVGltZShmb3JtYXQsIGlucHV0LCBhYnNsOjpVVENUaW1lWm9uZSgpLCB0aW1l
LCBlcnIpOwogfQogCi0vLyBJZiB0aGUgaW5wdXQgc3RkOjpzdHJpbmcgZG9lcyBub3QgY29udGFp
biBhbiBleHBsaWNpdCBVVEMgb2Zmc2V0LCBpbnRlcnByZXQKKy8vIElmIHRoZSBpbnB1dCBzdHJp
bmcgZG9lcyBub3QgY29udGFpbiBhbiBleHBsaWNpdCBVVEMgb2Zmc2V0LCBpbnRlcnByZXQKIC8v
IHRoZSBmaWVsZHMgd2l0aCByZXNwZWN0IHRvIHRoZSBnaXZlbiBUaW1lWm9uZS4KIGJvb2wgUGFy
c2VUaW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb3JtYXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1
dCwgYWJzbDo6VGltZVpvbmUgdHosCiAgICAgICAgICAgICAgICBhYnNsOjpUaW1lKiB0aW1lLCBz
dGQ6OnN0cmluZyogZXJyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHov
aW5jbHVkZS9jY3R6L2NpdmlsX3RpbWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNs
dWRlL2NjdHovY2l2aWxfdGltZS5oCmluZGV4IDg5ODIyMmI0YzdhZjI5ODMwZWEyMDUwN2Q5YzI5
NGYyZDBlZjk2OWMuLjA4NDJmYTRhNDY4OTUyZmJiNzFmZTllOThiODgzZTJmYTQ3ZDk2ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGlt
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGlt
ZS5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBjY3R6IHsKIC8vIGluZmVyaW9yIGZpZWxk
cyB0byB0aGVpciBtaW5pbXVtIHZhbGlkIHZhbHVlIChhcyBkZXNjcmliZWQgYWJvdmUpLiBUaGUK
IC8vIGZvbGxvd2luZyBhcmUgZXhhbXBsZXMgb2YgaG93IGVhY2ggb2YgdGhlIHNpeCB0eXBlcyB3
b3VsZCBhbGlnbiB0aGUgZmllbGRzCiAvLyByZXByZXNlbnRpbmcgTm92ZW1iZXIgMjIsIDIwMTUg
YXQgMTI6MzQ6NTYgaW4gdGhlIGFmdGVybm9vbi4gKE5vdGU6IHRoZQotLy8gc3RkOjpzdHJpbmcg
Zm9ybWF0IHVzZWQgaGVyZSBpcyBub3QgaW1wb3J0YW50OyBpdCdzIGp1c3QgYSBzaG9ydGhhbmQg
d2F5IG9mCisvLyBzdHJpbmcgZm9ybWF0IHVzZWQgaGVyZSBpcyBub3QgaW1wb3J0YW50OyBpdCdz
IGp1c3QgYSBzaG9ydGhhbmQgd2F5IG9mCiAvLyBzaG93aW5nIHRoZSBzaXggWU1ESE1TIGZpZWxk
cy4pCiAvLwogLy8gICBjaXZpbF9zZWNvbmQgIDIwMTUtMTEtMjIgMTI6MzQ6NTYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGltZV9kZXRh
aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovY2l2aWxfdGltZV9k
ZXRhaWwuaAppbmRleCAyMzYyYTRmNGZiYzk1OGZhMzBkY2ZlN2ExNDE4NzY4OGRmNDYyYWRmLi5k
N2Y3MjcxN2VjZTI1NDA4ODc0MGU3Mzc1ODI4NTk2Yzk2M2ZiMDEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L2NpdmlsX3RpbWVfZGV0YWlsLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L2luY2x1ZGUvY2N0ei9jaXZpbF90aW1lX2RldGFp
bC5oCkBAIC0zNTUsMTEgKzM1NSwxMSBAQCBjbGFzcyBjaXZpbF90aW1lIHsKICAgICAgIDogY2l2
aWxfdGltZShjdC5mXykge30KIAogICAvLyBGYWN0b3JpZXMgZm9yIHRoZSBtYXhpbXVtL21pbmlt
dW0gcmVwcmVzZW50YWJsZSBjaXZpbF90aW1lLgotICBzdGF0aWMgY2l2aWxfdGltZSBtYXgoKSB7
CisgIHN0YXRpYyBDT05TVEVYUFJfRiBjaXZpbF90aW1lIG1heCgpIHsKICAgICBjb25zdCBhdXRv
IG1heF95ZWFyID0gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OmludF9sZWFzdDY0X3Q+OjptYXgo
KTsKICAgICByZXR1cm4gY2l2aWxfdGltZShtYXhfeWVhciwgMTIsIDMxLCAyMywgNTksIDU5KTsK
ICAgfQotICBzdGF0aWMgY2l2aWxfdGltZSBtaW4oKSB7CisgIHN0YXRpYyBDT05TVEVYUFJfRiBj
aXZpbF90aW1lIG1pbigpIHsKICAgICBjb25zdCBhdXRvIG1pbl95ZWFyID0gc3RkOjpudW1lcmlj
X2xpbWl0czxzdGQ6OmludF9sZWFzdDY0X3Q+OjptaW4oKTsKICAgICByZXR1cm4gY2l2aWxfdGlt
ZShtaW5feWVhciwgMSwgMSwgMCwgMCwgMCk7CiAgIH0KQEAgLTQxNiw2ICs0MTYsMTIgQEAgY2xh
c3MgY2l2aWxfdGltZSB7CiAgICAgcmV0dXJuIGRpZmZlcmVuY2UoVHt9LCBsaHMuZl8sIHJocy5m
Xyk7CiAgIH0KIAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEggQWJzbEhhc2hW
YWx1ZShIIGgsIGNpdmlsX3RpbWUgYSkgeworICAgIHJldHVybiBIOjpjb21iaW5lKHN0ZDo6bW92
ZShoKSwgYS5mXy55LCBhLmZfLm0sIGEuZl8uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGEuZl8uaGgsIGEuZl8ubW0sIGEuZl8uc3MpOworICB9CisKICBwcml2YXRlOgog
ICAvLyBBbGwgaW5zdGFudGlhdGlvbnMgb2YgdGhpcyB0ZW1wbGF0ZSBhcmUgYWxsb3dlZCB0byBj
YWxsIHRoZSBmb2xsb3dpbmcKICAgLy8gcHJpdmF0ZSBjb25zdHJ1Y3RvciBhbmQgYWNjZXNzIHRo
ZSBwcml2YXRlIGZpZWxkcyBtZW1iZXIuCkBAIC01MDgsMTIgKzUxNCw4IEBAIENPTlNURVhQUl9G
IHdlZWtkYXkgZ2V0X3dlZWtkYXkoY29uc3QgY2l2aWxfZGF5JiBjZCkgbm9leGNlcHQgewogICBD
T05TVEVYUFJfRCBpbnQga193ZWVrZGF5X29mZnNldHNbMSArIDEyXSA9IHsKICAgICAgIC0xLCAw
LCAzLCAyLCA1LCAwLCAzLCA1LCAxLCA0LCA2LCAyLCA0LAogICB9OwotICB5ZWFyX3Qgd2QgPSBj
ZC55ZWFyKCkgLSAoY2QubW9udGgoKSA8IDMpOwotICBpZiAod2QgPj0gMCkgewotICAgIHdkICs9
IHdkIC8gNCAtIHdkIC8gMTAwICsgd2QgLyA0MDA7Ci0gIH0gZWxzZSB7Ci0gICAgd2QgKz0gKHdk
IC0gMykgLyA0IC0gKHdkIC0gOTkpIC8gMTAwICsgKHdkIC0gMzk5KSAvIDQwMDsKLSAgfQorICB5
ZWFyX3Qgd2QgPSAyNDAwICsgKGNkLnllYXIoKSAlIDQwMCkgLSAoY2QubW9udGgoKSA8IDMpOwor
ICB3ZCArPSB3ZCAvIDQgLSB3ZCAvIDEwMCArIHdkIC8gNDAwOwogICB3ZCArPSBrX3dlZWtkYXlf
b2Zmc2V0c1tjZC5tb250aCgpXSArIGNkLmRheSgpOwogICByZXR1cm4ga193ZWVrZGF5X2J5X3N1
bl9vZmZbKHdkICUgNyArIDcpICUgN107CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVy
bmFsL2NjdHovaW5jbHVkZS9jY3R6L3RpbWVfem9uZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9j
Y3R6L2luY2x1ZGUvY2N0ei90aW1lX3pvbmUuaAppbmRleCAwYjk3NjRlYTcyYTljYWEzZTVmMmY3
ZmVlMDQyNzM1N2FlZDI4ODA4Li5mMjhkYWQxNzU1MDY1OWIwN2YwYzIwMDM4YmM0N2YyNWEwMmY2
MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovaW5jbHVkZS9jY3R6L3Rp
bWVfem9uZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9pbmNsdWRlL2NjdHovdGlt
ZV96b25lLmgKQEAgLTIyNCw2ICsyMjQsMTEgQEAgY2xhc3MgdGltZV96b25lIHsKICAgICByZXR1
cm4gIShsaHMgPT0gcmhzKTsKICAgfQogCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmll
bmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgdGltZV96b25lIHR6KSB7CisgICAgcmV0dXJuIEg6OmNv
bWJpbmUoc3RkOjptb3ZlKGgpLCAmdHouZWZmZWN0aXZlX2ltcGwoKSk7CisgIH0KKwogICBjbGFz
cyBJbXBsOwogCiAgcHJpdmF0ZToKQEAgLTI3OSw3ICsyODQsNyBAQCBib29sIHBhcnNlKGNvbnN0
IHN0ZDo6c3RyaW5nJiwgY29uc3Qgc3RkOjpzdHJpbmcmLCBjb25zdCB0aW1lX3pvbmUmLAogfSAg
Ly8gbmFtZXNwYWNlIGRldGFpbAogCiAvLyBGb3JtYXRzIHRoZSBnaXZlbiB0aW1lX3BvaW50IGlu
IHRoZSBnaXZlbiBjY3R6Ojp0aW1lX3pvbmUgYWNjb3JkaW5nIHRvCi0vLyB0aGUgcHJvdmlkZWQg
Zm9ybWF0IHN0ZDo6c3RyaW5nLiBVc2VzIHN0cmZ0aW1lKCktbGlrZSBmb3JtYXR0aW5nIG9wdGlv
bnMsCisvLyB0aGUgcHJvdmlkZWQgZm9ybWF0IHN0cmluZy4gVXNlcyBzdHJmdGltZSgpLWxpa2Ug
Zm9ybWF0dGluZyBvcHRpb25zLAogLy8gd2l0aCB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbnM6CiAv
LwogLy8gICAtICVFeiAgLSBSRkMzMzM5LWNvbXBhdGlibGUgbnVtZXJpYyBVVEMgb2Zmc2V0ICgr
aGg6bW0gb3IgLWhoOm1tKQpAQCAtMjk4LDcgKzMwMyw3IEBAIGJvb2wgcGFyc2UoY29uc3Qgc3Rk
OjpzdHJpbmcmLCBjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0IHRpbWVfem9uZSYsCiAvLyBtb3Jl
IHRoYW4gZm91ciBjaGFyYWN0ZXJzLCBqdXN0IGxpa2UgJVkuCiAvLwogLy8gVGlwOiBGb3JtYXQg
c3RyaW5ncyBzaG91bGQgaW5jbHVkZSB0aGUgVVRDIG9mZnNldCAoZS5nLiwgJXosICVFeiwgb3Ig
JUUqeikKLS8vIHNvIHRoYXQgdGhlIHJlc3VsdGluZyBzdGQ6OnN0cmluZyB1bmlxdWVseSBpZGVu
dGlmaWVzIGFuIGFic29sdXRlIHRpbWUuCisvLyBzbyB0aGF0IHRoZSByZXN1bHRpbmcgc3RyaW5n
IHVuaXF1ZWx5IGlkZW50aWZpZXMgYW4gYWJzb2x1dGUgdGltZS4KIC8vCiAvLyBFeGFtcGxlOgog
Ly8gICBjY3R6Ojp0aW1lX3pvbmUgbGF4OwpAQCAtMzE0LDcgKzMxOSw3IEBAIGlubGluZSBzdGQ6
OnN0cmluZyBmb3JtYXQoY29uc3Qgc3RkOjpzdHJpbmcmIGZtdCwgY29uc3QgdGltZV9wb2ludDxE
PiYgdHAsCiAgIHJldHVybiBkZXRhaWw6OmZvcm1hdChmbXQsIHAuZmlyc3QsIG4sIHR6KTsKIH0K
IAotLy8gUGFyc2VzIGFuIGlucHV0IHN0ZDo6c3RyaW5nIGFjY29yZGluZyB0byB0aGUgcHJvdmlk
ZWQgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZAorLy8gUGFyc2VzIGFuIGlucHV0IHN0cmluZyBhY2Nv
cmRpbmcgdG8gdGhlIHByb3ZpZGVkIGZvcm1hdCBzdHJpbmcgYW5kCiAvLyByZXR1cm5zIHRoZSBj
b3JyZXNwb25kaW5nIHRpbWVfcG9pbnQuIFVzZXMgc3RyZnRpbWUoKS1saWtlIGZvcm1hdHRpbmcK
IC8vIG9wdGlvbnMsIHdpdGggdGhlIHNhbWUgZXh0ZW5zaW9ucyBhcyBjY3R6Ojpmb3JtYXQoKSwg
YnV0IHdpdGggdGhlCiAvLyBleGNlcHRpb25zIHRoYXQgJUUjUyBpcyBpbnRlcnByZXRlZCBhcyAl
RSpTLCBhbmQgJUUjZiBhcyAlRSpmLiAlRXoKQEAgLTMyOCw3ICszMzMsNyBAQCBpbmxpbmUgc3Rk
OjpzdHJpbmcgZm9ybWF0KGNvbnN0IHN0ZDo6c3RyaW5nJiBmbXQsIGNvbnN0IHRpbWVfcG9pbnQ8
RD4mIHRwLAogLy8KIC8vICAgIjE5NzAtMDEtMDEgMDA6MDA6MDAuMCArMDAwMCIKIC8vCi0vLyBG
b3IgZXhhbXBsZSwgcGFyc2luZyBhIHN0ZDo6c3RyaW5nIG9mICIxNTo0NSIgKCVIOiVNKSB3aWxs
IHJldHVybiBhIHRpbWVfcG9pbnQKKy8vIEZvciBleGFtcGxlLCBwYXJzaW5nIGEgc3RyaW5nIG9m
ICIxNTo0NSIgKCVIOiVNKSB3aWxsIHJldHVybiBhIHRpbWVfcG9pbnQKIC8vIHRoYXQgcmVwcmVz
ZW50cyAiMTk3MC0wMS0wMSAxNTo0NTowMC4wICswMDAwIi4KIC8vCiAvLyBOb3RlIHRoYXQgcGFy
c2UoKSByZXR1cm5zIHRpbWUgaW5zdGFudHMsIHNvIGl0IG1ha2VzIG1vc3Qgc2Vuc2UgdG8gcGFy
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2N0el9iZW5jaG1h
cmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL2NjdHpfYmVuY2htYXJrLmNjCmlu
ZGV4IGM5N2RmNzhjMDljODM5NDVlNjhmNTUxMWI3YjkyZTRhZjMxNzcwYzQuLjQ0OThkN2QwYjZi
N2UwYzRhNmZkYjkyMTQ5Yzc4Nzk2ZDNkMDhiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50
ZXJuYWwvY2N0ei9zcmMvY2N0el9iZW5jaG1hcmsuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5h
bC9jY3R6L3NyYy9jY3R6X2JlbmNobWFyay5jYwpAQCAtNzc4LDEzICs3NzgsMTMgQEAgdm9pZCBC
TV9ab25lX1VUQ1RpbWVab25lKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiB9CiBCRU5DSE1B
UksoQk1fWm9uZV9VVENUaW1lWm9uZSk7CiAKLS8vIEluIGVhY2ggIlRvRGF0ZVRpbWUiIGJlbmNo
bWFyayB3ZSBzd2l0Y2ggYmV0d2VlbiB0d28gaW5zdGFudHMKLS8vIHNlcGFyYXRlZCBieSBhdCBs
ZWFzdCBvbmUgdHJhbnNpdGlvbiBpbiBvcmRlciB0byBkZWZlYXQgYW55Ci0vLyBpbnRlcm5hbCBj
YWNoaW5nIG9mIHByZXZpb3VzIHJlc3VsdHMgKGUuZy4sIHNlZSBsb2NhbF90aW1lX2hpbnRfKS4K
Ky8vIEluIGVhY2ggIlRvQ2l2aWwiIGJlbmNobWFyayB3ZSBzd2l0Y2ggYmV0d2VlbiB0d28gaW5z
dGFudHMgc2VwYXJhdGVkCisvLyBieSBhdCBsZWFzdCBvbmUgdHJhbnNpdGlvbiBpbiBvcmRlciB0
byBkZWZlYXQgYW55IGludGVybmFsIGNhY2hpbmcgb2YKKy8vIHByZXZpb3VzIHJlc3VsdHMgKGUu
Zy4sIHNlZSBsb2NhbF90aW1lX2hpbnRfKS4KIC8vCiAvLyBUaGUgIlVUQyIgdmFyaWFudHMgdXNl
IFVUQyBpbnN0ZWFkIG9mIHRoZSBHb29nbGUvbG9jYWwgdGltZSB6b25lLgogCi12b2lkIEJNX1Rp
bWVfVG9EYXRlVGltZV9DQ1RaKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX1Rp
bWVfVG9DaXZpbF9DQ1RaKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGNvbnN0IGNjdHo6
OnRpbWVfem9uZSB0eiA9IFRlc3RUaW1lWm9uZSgpOwogICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IHRwID0KICAgICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZy
b21fdGltZV90KDEzODQ1NjkwMjcpOwpAQCAtNzk2LDkgKzc5Niw5IEBAIHZvaWQgQk1fVGltZV9U
b0RhdGVUaW1lX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgICBiZW5jaG1hcms6
OkRvTm90T3B0aW1pemUoY2N0ejo6Y29udmVydCh0cCwgdHopKTsKICAgfQogfQotQkVOQ0hNQVJL
KEJNX1RpbWVfVG9EYXRlVGltZV9DQ1RaKTsKK0JFTkNITUFSSyhCTV9UaW1lX1RvQ2l2aWxfQ0NU
Wik7CiAKLXZvaWQgQk1fVGltZV9Ub0RhdGVUaW1lX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3Rh
dGUpIHsKK3ZvaWQgQk1fVGltZV9Ub0NpdmlsX0xpYmMoYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUp
IHsKICAgLy8gTm8gdGltZXpvbmUgc3VwcG9ydCwgc28ganVzdCB1c2UgbG9jYWx0aW1lLgogICB0
aW1lX3QgdCA9IDEzODQ1NjkwMjc7CiAgIHRpbWVfdCB0MiA9IDE0MTg5NjI1Nzg7CkBAIC04MTMs
OSArODEzLDkgQEAgdm9pZCBCTV9UaW1lX1RvRGF0ZVRpbWVfTGliYyhiZW5jaG1hcms6OlN0YXRl
JiBzdGF0ZSkgewogI2VuZGlmCiAgIH0KIH0KLUJFTkNITUFSSyhCTV9UaW1lX1RvRGF0ZVRpbWVf
TGliYyk7CitCRU5DSE1BUksoQk1fVGltZV9Ub0NpdmlsX0xpYmMpOwogCi12b2lkIEJNX1RpbWVf
VG9EYXRlVGltZVVUQ19DQ1RaKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX1Rp
bWVfVG9DaXZpbFVUQ19DQ1RaKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGNvbnN0IGNj
dHo6OnRpbWVfem9uZSB0eiA9IGNjdHo6OnV0Y190aW1lX3pvbmUoKTsKICAgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0cCA9CiAgICAgICBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjpmcm9tX3RpbWVfdCgxMzg0NTY5MDI3KTsKQEAgLTgyNCw5ICs4MjQsOSBAQCB2b2lk
IEJNX1RpbWVfVG9EYXRlVGltZVVUQ19DQ1RaKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAg
ICAgYmVuY2htYXJrOjpEb05vdE9wdGltaXplKGNjdHo6OmNvbnZlcnQodHAsIHR6KSk7CiAgIH0K
IH0KLUJFTkNITUFSSyhCTV9UaW1lX1RvRGF0ZVRpbWVVVENfQ0NUWik7CitCRU5DSE1BUksoQk1f
VGltZV9Ub0NpdmlsVVRDX0NDVFopOwogCi12b2lkIEJNX1RpbWVfVG9EYXRlVGltZVVUQ19MaWJj
KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX1RpbWVfVG9DaXZpbFVUQ19MaWJj
KGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIHRpbWVfdCB0ID0gMTM4NDU2OTAyNzsKICAg
c3RydWN0IHRtIHRtOwogICB3aGlsZSAoc3RhdGUuS2VlcFJ1bm5pbmcoKSkgewpAQCAtODM4LDE2
ICs4MzgsMTYgQEAgdm9pZCBCTV9UaW1lX1RvRGF0ZVRpbWVVVENfTGliYyhiZW5jaG1hcms6OlN0
YXRlJiBzdGF0ZSkgewogI2VuZGlmCiAgIH0KIH0KLUJFTkNITUFSSyhCTV9UaW1lX1RvRGF0ZVRp
bWVVVENfTGliYyk7CitCRU5DSE1BUksoQk1fVGltZV9Ub0NpdmlsVVRDX0xpYmMpOwogCi0vLyBJ
biBlYWNoICJGcm9tRGF0ZVRpbWUiIGJlbmNobWFyayB3ZSBzd2l0Y2ggYmV0d2VlbiB0d28gWU1E
aG1zCi0vLyB2YWx1ZXMgc2VwYXJhdGVkIGJ5IGF0IGxlYXN0IG9uZSB0cmFuc2l0aW9uIGluIG9y
ZGVyIHRvIGRlZmVhdCBhbnkKLS8vIGludGVybmFsIGNhY2hpbmcgb2YgcHJldmlvdXMgcmVzdWx0
cyAoZS5nLiwgc2VlIHRpbWVfbG9jYWxfaGludF8pLgorLy8gSW4gZWFjaCAiRnJvbUNpdmlsIiBi
ZW5jaG1hcmsgd2Ugc3dpdGNoIGJldHdlZW4gdHdvIFlNRGhtcyB2YWx1ZXMKKy8vIHNlcGFyYXRl
ZCBieSBhdCBsZWFzdCBvbmUgdHJhbnNpdGlvbiBpbiBvcmRlciB0byBkZWZlYXQgYW55IGludGVy
bmFsCisvLyBjYWNoaW5nIG9mIHByZXZpb3VzIHJlc3VsdHMgKGUuZy4sIHNlZSB0aW1lX2xvY2Fs
X2hpbnRfKS4KIC8vCiAvLyBUaGUgIlVUQyIgdmFyaWFudHMgdXNlIFVUQyBpbnN0ZWFkIG9mIHRo
ZSBHb29nbGUvbG9jYWwgdGltZSB6b25lLgogLy8gVGhlICJEYXkwIiB2YXJpYW50cyByZXF1aXJl
IG5vcm1hbGl6YXRpb24gb2YgdGhlIGRheSBvZiBtb250aC4KIAotdm9pZCBCTV9UaW1lX0Zyb21E
YXRlVGltZV9DQ1RaKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX1RpbWVfRnJv
bUNpdmlsX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgY29uc3QgY2N0ejo6dGlt
ZV96b25lIHR6ID0gVGVzdFRpbWVab25lKCk7CiAgIGludCBpID0gMDsKICAgd2hpbGUgKHN0YXRl
LktlZXBSdW5uaW5nKCkpIHsKQEAgLTg2MCw5ICs4NjAsOSBAQCB2b2lkIEJNX1RpbWVfRnJvbURh
dGVUaW1lX0NDVFooYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgICB9CiAgIH0KIH0KLUJF
TkNITUFSSyhCTV9UaW1lX0Zyb21EYXRlVGltZV9DQ1RaKTsKK0JFTkNITUFSSyhCTV9UaW1lX0Zy
b21DaXZpbF9DQ1RaKTsKIAotdm9pZCBCTV9UaW1lX0Zyb21EYXRlVGltZV9MaWJjKGJlbmNobWFy
azo6U3RhdGUmIHN0YXRlKSB7Cit2b2lkIEJNX1RpbWVfRnJvbUNpdmlsX0xpYmMoYmVuY2htYXJr
OjpTdGF0ZSYgc3RhdGUpIHsKICAgLy8gTm8gdGltZXpvbmUgc3VwcG9ydCwgc28ganVzdCB1c2Ug
bG9jYWx0aW1lLgogICBpbnQgaSA9IDA7CiAgIHdoaWxlIChzdGF0ZS5LZWVwUnVubmluZygpKSB7
CkBAIC04ODYsMjAgKzg4NiwyMCBAQCB2b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lX0xpYmMoYmVu
Y2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUobWt0
aW1lKCZ0bSkpOwogICB9CiB9Ci1CRU5DSE1BUksoQk1fVGltZV9Gcm9tRGF0ZVRpbWVfTGliYyk7
CitCRU5DSE1BUksoQk1fVGltZV9Gcm9tQ2l2aWxfTGliYyk7CiAKLXZvaWQgQk1fVGltZV9Gcm9t
RGF0ZVRpbWVVVENfQ0NUWihiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9pZCBCTV9UaW1l
X0Zyb21DaXZpbFVUQ19DQ1RaKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgIGNvbnN0IGNj
dHo6OnRpbWVfem9uZSB0eiA9IGNjdHo6OnV0Y190aW1lX3pvbmUoKTsKICAgd2hpbGUgKHN0YXRl
LktlZXBSdW5uaW5nKCkpIHsKICAgICBiZW5jaG1hcms6OkRvTm90T3B0aW1pemUoCiAgICAgICAg
IGNjdHo6OmNvbnZlcnQoY2N0ejo6Y2l2aWxfc2Vjb25kKDIwMTQsIDEyLCAxOCwgMjAsIDE2LCAx
OCksIHR6KSk7CiAgIH0KIH0KLUJFTkNITUFSSyhCTV9UaW1lX0Zyb21EYXRlVGltZVVUQ19DQ1Ra
KTsKK0JFTkNITUFSSyhCTV9UaW1lX0Zyb21DaXZpbFVUQ19DQ1RaKTsKIAotLy8gVGhlcmUgaXMg
bm8gQk1fVGltZV9Gcm9tRGF0ZVRpbWVVVENfTGliYy4KKy8vIFRoZXJlIGlzIG5vIEJNX1RpbWVf
RnJvbUNpdmlsVVRDX0xpYmMuCiAKLXZvaWQgQk1fVGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0NDVFoo
YmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKK3ZvaWQgQk1fVGltZV9Gcm9tQ2l2aWxEYXkwX0ND
VFooYmVuY2htYXJrOjpTdGF0ZSYgc3RhdGUpIHsKICAgY29uc3QgY2N0ejo6dGltZV96b25lIHR6
ID0gVGVzdFRpbWVab25lKCk7CiAgIGludCBpID0gMDsKICAgd2hpbGUgKHN0YXRlLktlZXBSdW5u
aW5nKCkpIHsKQEAgLTkxMiw5ICs5MTIsOSBAQCB2b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1lRGF5
MF9DQ1RaKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgICAgfQogICB9CiB9Ci1CRU5DSE1B
UksoQk1fVGltZV9Gcm9tRGF0ZVRpbWVEYXkwX0NDVFopOworQkVOQ0hNQVJLKEJNX1RpbWVfRnJv
bUNpdmlsRGF5MF9DQ1RaKTsKIAotdm9pZCBCTV9UaW1lX0Zyb21EYXRlVGltZURheTBfTGliYyhi
ZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewordm9pZCBCTV9UaW1lX0Zyb21DaXZpbERheTBfTGli
YyhiZW5jaG1hcms6OlN0YXRlJiBzdGF0ZSkgewogICAvLyBObyB0aW1lem9uZSBzdXBwb3J0LCBz
byBqdXN0IHVzZSBsb2NhbHRpbWUuCiAgIGludCBpID0gMDsKICAgd2hpbGUgKHN0YXRlLktlZXBS
dW5uaW5nKCkpIHsKQEAgLTkzOCw3ICs5MzgsNyBAQCB2b2lkIEJNX1RpbWVfRnJvbURhdGVUaW1l
RGF5MF9MaWJjKGJlbmNobWFyazo6U3RhdGUmIHN0YXRlKSB7CiAgICAgYmVuY2htYXJrOjpEb05v
dE9wdGltaXplKG1rdGltZSgmdG0pKTsKICAgfQogfQotQkVOQ0hNQVJLKEJNX1RpbWVfRnJvbURh
dGVUaW1lRGF5MF9MaWJjKTsKK0JFTkNITUFSSyhCTV9UaW1lX0Zyb21DaXZpbERheTBfTGliYyk7
CiAKIGNvbnN0IGNoYXIqIGNvbnN0IGtGb3JtYXRzW10gPSB7CiAgICAgUkZDMTEyM19mdWxsLCAg
ICAgICAgIC8vIDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvY2l2
aWxfdGltZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jaXZpbF90aW1l
X3Rlc3QuY2MKaW5kZXggZjY2NDhjOGYxZjIxZjMyMDdhYmExYjVlNGJiMDY2MDYxYjA2NGI2NS4u
ZmFmZmRlNDcwYWY0ZjQ1YzNiOGE0YmFhMGMwZDJiY2ZhMzE4ODA0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jaXZpbF90aW1lX3Rlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3NyYy9jaXZpbF90aW1lX3Rlc3QuY2MKQEAgLTYyMCw3ICs2MjAs
NyBAQCBURVNUKENpdmlsVGltZSwgUmVsYXRpb25hbCkgewogICBURVNUX1JFTEFUSU9OQUwoY2l2
aWxfc2Vjb25kKDIwMTQsIDEsIDEsIDEsIDEsIDApLAogICAgICAgICAgICAgICAgICAgY2l2aWxf
c2Vjb25kKDIwMTQsIDEsIDEsIDEsIDEsIDEpKTsKIAotICAvLyBUZXN0cyB0aGUgcmVsYXRpb25h
bCBvcGVyYXRvcnMgb2YgdHdvIGRpZmZlcmVudCBDaXZpbFRpbWUgdHlwZXMuCisgIC8vIFRlc3Rz
IHRoZSByZWxhdGlvbmFsIG9wZXJhdG9ycyBvZiB0d28gZGlmZmVyZW50IGNpdmlsLXRpbWUgdHlw
ZXMuCiAgIFRFU1RfUkVMQVRJT05BTChjaXZpbF9kYXkoMjAxNCwgMSwgMSksIGNpdmlsX21pbnV0
ZSgyMDE0LCAxLCAxLCAxLCAxKSk7CiAgIFRFU1RfUkVMQVRJT05BTChjaXZpbF9kYXkoMjAxNCwg
MSwgMSksIGNpdmlsX21vbnRoKDIwMTQsIDIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9p
bnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZml4ZWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovc3JjL3RpbWVfem9uZV9maXhlZC5jYwppbmRleCA1OThiMDhmZGU0MjIzNmNmMTM3ZTBl
ODJkMDlkOWYyYzFmMWIyMmYwLi5kYjlhNDc1YTliNDkwNGNiMmM0ZGE2YjVjZjI4MGNhOGNhNDM3
MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9m
aXhlZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9maXhl
ZC5jYwpAQCAtMTUsOCArMTUsOCBAQAogI2luY2x1ZGUgInRpbWVfem9uZV9maXhlZC5oIgogCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8Y2hyb25v
PgotI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPHN0cmlu
Zz4KIApAQCAtMjksOCArMjksMTUgQEAgbmFtZXNwYWNlIHsKIC8vIFRoZSBwcmVmaXggdXNlZCBm
b3IgdGhlIGludGVybmFsIG5hbWVzIG9mIGZpeGVkLW9mZnNldCB6b25lcy4KIGNvbnN0IGNoYXIg
a0ZpeGVkT2Zmc2V0UHJlZml4W10gPSAiRml4ZWQvVVRDIjsKIAorY29uc3QgY2hhciBrRGlnaXRz
W10gPSAiMDEyMzQ1Njc4OSI7CisKK2NoYXIqIEZvcm1hdDAyZChjaGFyKiBwLCBpbnQgdikgewor
ICAqcCsrID0ga0RpZ2l0c1sodiAvIDEwKSAlIDEwXTsKKyAgKnArKyA9IGtEaWdpdHNbdiAlIDEw
XTsKKyAgcmV0dXJuIHA7Cit9CisKIGludCBQYXJzZTAyZChjb25zdCBjaGFyKiBwKSB7Ci0gIHN0
YXRpYyBjb25zdCBjaGFyIGtEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5IjsKICAgaWYgKGNvbnN0IGNo
YXIqIGFwID0gc3RkOjpzdHJjaHIoa0RpZ2l0cywgKnApKSB7CiAgICAgaW50IHYgPSBzdGF0aWNf
Y2FzdDxpbnQ+KGFwIC0ga0RpZ2l0cyk7CiAgICAgaWYgKGNvbnN0IGNoYXIqIGJwID0gc3RkOjpz
dHJjaHIoa0RpZ2l0cywgKisrcCkpIHsKQEAgLTk1LDkgKzEwMiwxNyBAQCBzdGQ6OnN0cmluZyBG
aXhlZE9mZnNldFRvTmFtZShjb25zdCBzZWNvbmRzJiBvZmZzZXQpIHsKICAgfQogICBpbnQgaG91
cnMgPSBtaW51dGVzIC8gNjA7CiAgIG1pbnV0ZXMgJT0gNjA7Ci0gIGNoYXIgYnVmW3NpemVvZihr
Rml4ZWRPZmZzZXRQcmVmaXgpICsgc2l6ZW9mKCItMjQ6MDA6MDAiKV07Ci0gIHNucHJpbnRmKGJ1
Ziwgc2l6ZW9mKGJ1ZiksICIlcyVjJTAyZDolMDJkOiUwMmQiLAotICAgICAgICAgICBrRml4ZWRP
ZmZzZXRQcmVmaXgsIHNpZ24sIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgY2hhciBidWZb
c2l6ZW9mKGtGaXhlZE9mZnNldFByZWZpeCkgLSAxICsgc2l6ZW9mKCItMjQ6MDA6MDAiKV07Cisg
IHN0ZDo6c3RyY3B5KGJ1Ziwga0ZpeGVkT2Zmc2V0UHJlZml4KTsKKyAgY2hhciogZXAgPSBidWYg
KyBzaXplb2Yoa0ZpeGVkT2Zmc2V0UHJlZml4KSAtIDE7CisgICplcCsrID0gc2lnbjsKKyAgZXAg
PSBGb3JtYXQwMmQoZXAsIGhvdXJzKTsKKyAgKmVwKysgPSAnOic7CisgIGVwID0gRm9ybWF0MDJk
KGVwLCBtaW51dGVzKTsKKyAgKmVwKysgPSAnOic7CisgIGVwID0gRm9ybWF0MDJkKGVwLCBzZWNv
bmRzKTsKKyAgKmVwKysgPSAnXDAnOworICBhc3NlcnQoZXAgPT0gYnVmICsgc2l6ZW9mKGJ1Zikp
OwogICByZXR1cm4gYnVmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2Nj
dHovc3JjL3RpbWVfem9uZV9mb3JtYXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3Jj
L3RpbWVfem9uZV9mb3JtYXQuY2MKaW5kZXggMWIwMjM4NDhlZmExOGU4MTU2MmQ1N2IzOTU1YWMx
MjBkZjg1NTQ3NC4uYTAyYjFlMzQxYWMwY2NlZmQ2MGUwZmE4NTkwMTRlOGQwYWQwNWIwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfZm9ybWF0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdC5jYwpA
QCAtNTMzLDcgKzUzMyw3IEBAIGNvbnN0IGNoYXIqIFBhcnNlU3ViU2Vjb25kcyhjb25zdCBjaGFy
KiBkcCwgZGV0YWlsOjpmZW10b3NlY29uZHMqIHN1YnNlY29uZHMpIHsKICAgcmV0dXJuIGRwOwog
fQogCi0vLyBQYXJzZXMgYSBzdGQ6OnN0cmluZyBpbnRvIGEgc3RkOjp0bSB1c2luZyBzdHJwdGlt
ZSgzKS4KKy8vIFBhcnNlcyBhIHN0cmluZyBpbnRvIGEgc3RkOjp0bSB1c2luZyBzdHJwdGltZSgz
KS4KIGNvbnN0IGNoYXIqIFBhcnNlVE0oY29uc3QgY2hhciogZHAsIGNvbnN0IGNoYXIqIGZtdCwg
c3RkOjp0bSogdG0pIHsKICAgaWYgKGRwICE9IG51bGxwdHIpIHsKICAgICBkcCA9IHN0cnB0aW1l
KGRwLCBmbXQsIHRtKTsKQEAgLTc0Myw3ICs3NDMsNyBAQCBib29sIHBhcnNlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBmb3JtYXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwKICAgICBkYXRhID0gUGFy
c2VUTShkYXRhLCBzcGVjLmNfc3RyKCksICZ0bSk7CiAKICAgICAvLyBJZiB3ZSBzdWNjZXNzZnVs
bHkgcGFyc2VkICVwIHdlIG5lZWQgdG8gcmVtZW1iZXIgd2hldGhlciB0aGUgcmVzdWx0Ci0gICAg
Ly8gd2FzIEFNIG9yIFBNIHNvIHRoYXQgd2UgY2FuIGFkanVzdCB0bV9ob3VyIGJlZm9yZSBDb252
ZXJ0RGF0ZVRpbWUoKS4KKyAgICAvLyB3YXMgQU0gb3IgUE0gc28gdGhhdCB3ZSBjYW4gYWRqdXN0
IHRtX2hvdXIgYmVmb3JlIHRpbWVfem9uZTo6bG9va3VwKCkuCiAgICAgLy8gU28gcmVwYXJzZSB0
aGUgaW5wdXQgd2l0aCBhIGtub3duIEFNIGhvdXIsIGFuZCBjaGVjayBpZiBpdCBpcyBzaGlmdGVk
CiAgICAgLy8gdG8gYSBQTSBob3VyLgogICAgIGlmIChzcGVjID09ICIlcCIgJiYgZGF0YSAhPSBu
dWxscHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVf
em9uZV9mb3JtYXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96
b25lX2Zvcm1hdF90ZXN0LmNjCmluZGV4IGE5MGRkYTc2MDNhOGExMGUzN2IzYjU4ZDk2NjU5Njhi
NTgzOTYyYmUuLjZiOTkyOGVkMzJmNDMxMDI3YzRiOTJhNDljMzJlOWEwOGExOGQ4OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdF90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX2Zvcm1hdF90
ZXN0LmNjCkBAIC02NjksMTMgKzY2OSwxMyBAQCBURVNUKFBhcnNlLCBXaXRoVGltZVpvbmUpIHsK
ICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfem9uZSgpLCAmdHApKTsKICAgRXhwZWN0VGlt
ZSh0cCwgdHosIDIwMTMsIDYsIDI4LCAxOSAtIDggLSA3LCA4LCA5LCAtNyAqIDYwICogNjAsIHRy
dWUsICJQRFQiKTsKIAotICAvLyBDaGVjayBhIHNraXBwZWQgdGltZSAoYSBTcHJpbmcgRFNUIHRy
YW5zaXRpb24pLiAgcGFyc2UoKSByZXR1cm5zCi0gIC8vIHRoZSBwcmVmZXJyZWQtb2Zmc2V0IHJl
c3VsdCwgYXMgZGVmaW5lZCBmb3IgQ29udmVydERhdGVUaW1lKCkuCisgIC8vIENoZWNrIGEgc2tp
cHBlZCB0aW1lIChhIFNwcmluZyBEU1QgdHJhbnNpdGlvbikuIHBhcnNlKCkgdXNlcyB0aGUKKyAg
Ly8gcHJlLXRyYW5zaXRpb24gb2Zmc2V0LgogICBFWFBFQ1RfVFJVRShwYXJzZSgiJVktJW0tJWQg
JUg6JU06JVMiLCAiMjAxMS0wMy0xMyAwMjoxNTowMCIsIHR6LCAmdHApKTsKICAgRXhwZWN0VGlt
ZSh0cCwgdHosIDIwMTEsIDMsIDEzLCAzLCAxNSwgMCwgLTcgKiA2MCAqIDYwLCB0cnVlLCAiUERU
Iik7CiAKLSAgLy8gQ2hlY2sgYSByZXBlYXRlZCB0aW1lIChhIEZhbGwgRFNUIHRyYW5zaXRpb24p
LiAgcGFyc2UoKSByZXR1cm5zCi0gIC8vIHRoZSBwcmVmZXJyZWQtb2Zmc2V0IHJlc3VsdCwgYXMg
ZGVmaW5lZCBmb3IgQ29udmVydERhdGVUaW1lKCkuCisgIC8vIENoZWNrIGEgcmVwZWF0ZWQgdGlt
ZSAoYSBGYWxsIERTVCB0cmFuc2l0aW9uKS4gIHBhcnNlKCkgdXNlcyB0aGUKKyAgLy8gcHJlLXRy
YW5zaXRpb24gb2Zmc2V0LgogICBFWFBFQ1RfVFJVRShwYXJzZSgiJVktJW0tJWQgJUg6JU06JVMi
LCAiMjAxMS0xMS0wNiAwMToxNTowMCIsIHR6LCAmdHApKTsKICAgRXhwZWN0VGltZSh0cCwgdHos
IDIwMTEsIDExLCA2LCAxLCAxNSwgMCwgLTcgKiA2MCAqIDYwLCB0cnVlLCAiUERUIik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfaW5mby5jYwppbmRleCBi
ZjczNjM1ZDRjNmE4YzAzM2I2ZTQ4NzkyNWM0MWEyZWFiODA1MTg0Li4yY2IzNThkMDQ4ZTJkODIx
OTFkZThiY2YyMDI4MjljN2VhMmNiODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL2ludGVybmFs
L2NjdHovc3JjL3RpbWVfem9uZV9pbmZvLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0
ei9zcmMvdGltZV96b25lX2luZm8uY2MKQEAgLTI4Niw3ICsyODYsNyBAQCBib29sIFRpbWVab25l
SW5mbzo6RXF1aXZUcmFuc2l0aW9ucyhzdGQ6OnVpbnRfZmFzdDhfdCB0dDFfaW5kZXgsCiAgIHJl
dHVybiB0cnVlOwogfQogCi0vLyBVc2UgdGhlIFBPU0lYLVRaLWVudmlyb25tZW50LXZhcmlhYmxl
LXN0eWxlIHN0ZDo6c3RyaW5nIHRvIGhhbmRsZSB0aW1lcworLy8gVXNlIHRoZSBQT1NJWC1UWi1l
bnZpcm9ubWVudC12YXJpYWJsZS1zdHlsZSBzdHJpbmcgdG8gaGFuZGxlIHRpbWVzCiAvLyBpbiB5
ZWFycyBhZnRlciB0aGUgbGFzdCB0cmFuc2l0aW9uIHN0b3JlZCBpbiB0aGUgem9uZWluZm8gZGF0
YS4KIHZvaWQgVGltZVpvbmVJbmZvOjpFeHRlbmRUcmFuc2l0aW9ucyhjb25zdCBzdGQ6OnN0cmlu
ZyYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIZWFk
ZXImIGhkcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1l
X3pvbmVfcG9zaXguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3RpbWUvaW50ZXJuYWwvY2N0ei9zcmMvdGltZV96b25lX3Bv
c2l4LmgKaW5kZXggNjYxOWYyN2VkY2Y2Mzg5NWFiZWIyM2YzZGRiNDhlZmY0ZjlmMmFjOC4uOWNj
ZDRhOGI2OGJkNTc2MWY1NmUzMTRiOWQ4YTI1MDE3MWI0OGQ2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dGltZS9pbnRlcm5hbC9jY3R6L3NyYy90aW1lX3pvbmVfcG9zaXguaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1l
L2ludGVybmFsL2NjdHovc3JjL3RpbWVfem9uZV9wb3NpeC5oCkBAIC04OSw3ICs4OSw3IEBAIHN0
cnVjdCBQb3NpeFRyYW5zaXRpb24gewogICB9IHRpbWU7CiB9OwogCi0vLyBUaGUgZW50aXJldHkg
b2YgYSBQT1NJWC1zdGQ6OnN0cmluZyBzcGVjaWZpZWQgdGltZS16b25lIHJ1bGUuIFRoZSBzdGFu
ZGFyZAorLy8gVGhlIGVudGlyZXR5IG9mIGEgUE9TSVgtc3RyaW5nIHNwZWNpZmllZCB0aW1lLXpv
bmUgcnVsZS4gVGhlIHN0YW5kYXJkCiAvLyBhYmJyZXZpYXRpb24gYW5kIG9mZnNldCBhcmUgYWx3
YXlzIGdpdmVuLiBJZiB0aGUgdGltZSB6b25lIGluY2x1ZGVzCiAvLyBkYXlsaWdodCBzYXZpbmcs
IHRoZW4gdGhlIGRheWxpZ2h0IGFiYnJldmF0aW9uIGlzIG5vbi1lbXB0eSBhbmQgdGhlCiAvLyBy
ZW1haW5pbmcgZmllbGRzIGFyZSBhbHNvIHZhbGlkLiBOb3RlIHRoYXQgdGhlIHN0YXJ0L2VuZCB0
cmFuc2l0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdGltZS90aW1lLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3Rp
bWUuaAppbmRleCBjNDFjYjg5YzVlZmYxZDRkYWY4ZWNiMTZjNWIxNTYzOTcwMmY2NDYyLi41MGJm
OTcxZGYwYTI5Y2I0NzUwYWVmNzBjMTFlNzA1NDQ3NjQ2YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90
aW1lL3RpbWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90aW1lL3RpbWUuaApAQCAtMjUsMTEgKzI1LDEyIEBACiAv
LyAgKiBgYWJzbDo6VGltZVpvbmVgIGRlZmluZXMgZ2VvcG9saXRpY2FsIHRpbWUgem9uZSByZWdp
b25zIChhcyBjb2xsZWN0ZWQKIC8vICAgICB3aXRoaW4gdGhlIElBTkEgVGltZSBab25lIGRhdGFi
YXNlIChodHRwczovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzKSkuCiAvLworLy8KIC8vIEV4YW1w
bGU6CiAvLwogLy8gICBhYnNsOjpUaW1lWm9uZSBueWM7CiAvLwotLy8gICAvLyBMb2FkVGltZVpv
bmUgbWF5IGZhaWwgc28gaXQncyBhbHdheXMgYmV0dGVyIHRvIGNoZWNrIGZvciBzdWNjZXNzLgor
Ly8gICAvLyBMb2FkVGltZVpvbmUoKSBtYXkgZmFpbCBzbyBpdCdzIGFsd2F5cyBiZXR0ZXIgdG8g
Y2hlY2sgZm9yIHN1Y2Nlc3MuCiAvLyAgIGlmICghYWJzbDo6TG9hZFRpbWVab25lKCJBbWVyaWNh
L05ld19Zb3JrIiwgJm55YykpIHsKIC8vICAgICAgLy8gaGFuZGxlIGVycm9yIGNhc2UKIC8vICAg
fQpAQCAtMTYyLDYgKzE2MywxMSBAQCBjbGFzcyBEdXJhdGlvbiB7CiAgIER1cmF0aW9uJiBvcGVy
YXRvcio9KGZsb2F0IHIpIHsgcmV0dXJuICp0aGlzICo9IHN0YXRpY19jYXN0PGRvdWJsZT4ocik7
IH0KICAgRHVyYXRpb24mIG9wZXJhdG9yLz0oZmxvYXQgcikgeyByZXR1cm4gKnRoaXMgLz0gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihyKTsgfQogCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmll
bmQgSCBBYnNsSGFzaFZhbHVlKEggaCwgRHVyYXRpb24gZCkgeworICAgIHJldHVybiBIOjpjb21i
aW5lKHN0ZDo6bW92ZShoKSwgZC5yZXBfaGlfLCBkLnJlcF9sb18pOworICB9CisKICBwcml2YXRl
OgogICBmcmllbmQgY29uc3RleHByIGludDY0X3QgdGltZV9pbnRlcm5hbDo6R2V0UmVwSGkoRHVy
YXRpb24gZCk7CiAgIGZyaWVuZCBjb25zdGV4cHIgdWludDMyX3QgdGltZV9pbnRlcm5hbDo6R2V0
UmVwTG8oRHVyYXRpb24gZCk7CkBAIC0zMjEsNiArMzI3LDkgQEAgRHVyYXRpb24gQ2VpbChEdXJh
dGlvbiBkLCBEdXJhdGlvbiB1bml0KTsKIC8vICAgMCA9PSBkIC8gaW5mCiAvLyAgIElOVDY0X01B
WCA9PSBpbmYgLyBkCiAvLworLy8gICBkIDwgaW5mCisvLyAgIC1pbmYgPCBkCisvLwogLy8gICAv
LyBEaXZpc2lvbiBieSB6ZXJvIHJldHVybnMgaW5maW5pdHksIG9yIElOVDY0X01JTi9NQVggd2hl
cmUgYXBwcm9wcmlhdGUuCiAvLyAgIGluZiA9PSBkIC8gMAogLy8gICBJTlQ2NF9NQVggPT0gZCAv
IGFic2w6Olplcm9EdXJhdGlvbigpCkBAIC00ODEsNyArNDkwLDcgQEAgc3RkOjpjaHJvbm86Omhv
dXJzIFRvQ2hyb25vSG91cnMoRHVyYXRpb24gZCk7CiAKIC8vIEZvcm1hdER1cmF0aW9uKCkKIC8v
Ci0vLyBSZXR1cm5zIGEgc3RkOjpzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBkdXJhdGlvbiBpbiB0
aGUgZm9ybSAiNzJoM20wLjVzIi4KKy8vIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRo
ZSBkdXJhdGlvbiBpbiB0aGUgZm9ybSAiNzJoM20wLjVzIi4KIC8vIFJldHVybnMgImluZiIgb3Ig
Ii1pbmYiIGZvciArLy0gYEluZmluaXRlRHVyYXRpb24oKWAuCiBzdGQ6OnN0cmluZyBGb3JtYXRE
dXJhdGlvbihEdXJhdGlvbiBkKTsKIApAQCAtNDkyLDExICs1MDEsMTEgQEAgaW5saW5lIHN0ZDo6
b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBEdXJhdGlvbiBkKSB7CiAKIC8v
IFBhcnNlRHVyYXRpb24oKQogLy8KLS8vIFBhcnNlcyBhIGR1cmF0aW9uIHN0ZDo6c3RyaW5nIGNv
bnNpc3Rpbmcgb2YgYSBwb3NzaWJseSBzaWduZWQgc2VxdWVuY2Ugb2YKKy8vIFBhcnNlcyBhIGR1
cmF0aW9uIHN0cmluZyBjb25zaXN0aW5nIG9mIGEgcG9zc2libHkgc2lnbmVkIHNlcXVlbmNlIG9m
CiAvLyBkZWNpbWFsIG51bWJlcnMsIGVhY2ggd2l0aCBhbiBvcHRpb25hbCBmcmFjdGlvbmFsIHBh
cnQgYW5kIGEgdW5pdAogLy8gc3VmZml4LiAgVGhlIHZhbGlkIHN1ZmZpeGVzIGFyZSAibnMiLCAi
dXMiICJtcyIsICJzIiwgIm0iLCBhbmQgImgiLgogLy8gU2ltcGxlIGV4YW1wbGVzIGluY2x1ZGUg
IjMwMG1zIiwgIi0xLjVoIiwgYW5kICIyaDQ1bSIuICBQYXJzZXMgIjAiIGFzCi0vLyBgWmVyb0R1
cmF0aW9uKClgLiAgUGFyc2VzICJpbmYiIGFuZCAiLWluZiIgYXMgKy8tIGBJbmZpbml0ZUR1cmF0
aW9uKClgLgorLy8gYFplcm9EdXJhdGlvbigpYC4gUGFyc2VzICJpbmYiIGFuZCAiLWluZiIgYXMg
Ky8tIGBJbmZpbml0ZUR1cmF0aW9uKClgLgogYm9vbCBQYXJzZUR1cmF0aW9uKGNvbnN0IHN0ZDo6
c3RyaW5nJiBkdXJfc3RyaW5nLCBEdXJhdGlvbiogZCk7CiAKIC8vIFN1cHBvcnQgZm9yIGZsYWcg
dmFsdWVzIG9mIHR5cGUgRHVyYXRpb24uIER1cmF0aW9uIGZsYWdzIG11c3QgYmUgc3BlY2lmaWVk
CkBAIC02MDcsNiArNjE2LDExIEBAIGNsYXNzIFRpbWUgewogICAvLyBSZXR1cm5zIHRoZSBicmVh
a2Rvd24gb2YgdGhpcyBpbnN0YW50IGluIHRoZSBnaXZlbiBUaW1lWm9uZS4KICAgQnJlYWtkb3du
IEluKFRpbWVab25lIHR6KSBjb25zdDsKIAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJp
ZW5kIEggQWJzbEhhc2hWYWx1ZShIIGgsIFRpbWUgdCkgeworICAgIHJldHVybiBIOjpjb21iaW5l
KHN0ZDo6bW92ZShoKSwgdC5yZXBfKTsKKyAgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNvbnN0
ZXhwciBUaW1lIHRpbWVfaW50ZXJuYWw6OkZyb21Vbml4RHVyYXRpb24oRHVyYXRpb24gZCk7CiAg
IGZyaWVuZCBjb25zdGV4cHIgRHVyYXRpb24gdGltZV9pbnRlcm5hbDo6VG9Vbml4RHVyYXRpb24o
VGltZSB0KTsKQEAgLTY4OSw3ICs3MDMsOSBAQCBjb25zdGV4cHIgVGltZSBJbmZpbml0ZVBhc3Qo
KSB7CiAvLyBFeGFtcGxlczoKIC8vCiAvLyAgIGFic2w6OlRpbWVab25lIGxheDsKLS8vICAgaWYg
KCFhYnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCAmbGF4KSkgeyAuLi4g
fQorLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZs
YXgpKSB7CisvLyAgICAgLy8gaGFuZGxlIGVycm9yIGNhc2UKKy8vICAgfQogLy8KIC8vICAgLy8g
QSB1bmlxdWUgY2l2aWwgdGltZQogLy8gICBhYnNsOjpUaW1lQ29udmVyc2lvbiBqYW4wMSA9CkBA
IC03NTksNyArNzc1LDkgQEAgVGltZUNvbnZlcnNpb24gQ29udmVydERhdGVUaW1lKGludDY0X3Qg
eWVhciwgaW50IG1vbiwgaW50IGRheSwgaW50IGhvdXIsCiAvLyBFeGFtcGxlOgogLy8KIC8vICAg
YWJzbDo6VGltZVpvbmUgc2VhdHRsZTsKLS8vICAgaWYgKCFhYnNsOjpMb2FkVGltZVpvbmUoIkFt
ZXJpY2EvTG9zX0FuZ2VsZXMiLCAmc2VhdHRsZSkpIHsgLi4uIH0KKy8vICAgaWYgKCFhYnNsOjpM
b2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCAmc2VhdHRsZSkpIHsKKy8vICAgICAv
LyBoYW5kbGUgZXJyb3IgY2FzZQorLy8gICB9CiAvLyAgIGFic2w6OlRpbWUgdCA9ICBhYnNsOjpG
cm9tRGF0ZVRpbWUoMjAxNywgOSwgMjYsIDksIDMwLCAwLCBzZWF0dGxlKTsKIFRpbWUgRnJvbURh
dGVUaW1lKGludDY0X3QgeWVhciwgaW50IG1vbiwgaW50IGRheSwgaW50IGhvdXIsIGludCBtaW4s
IGludCBzZWMsCiAgICAgICAgICAgICAgICAgICBUaW1lWm9uZSB0eik7CkBAIC04NzEsOCArODg5
LDEwIEBAIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgVG9DaHJvbm9UaW1l
KFRpbWUpOwogLy8gRm9ybWF0VGltZSgpL1BhcnNlVGltZSgpIGZvcm1hdCBzcGVjaWZpZXJzIGZv
ciBSRkMzMzM5IGRhdGUvdGltZSBzdHJpbmdzLAogLy8gd2l0aCB0cmFpbGluZyB6ZXJvcyB0cmlt
bWVkIG9yIHdpdGggZnJhY3Rpb25hbCBzZWNvbmRzIG9taXR0ZWQgYWx0b2dldGhlci4KIC8vCi0v
LyBOb3RlIHRoYXQgUkZDMzMzOV9zZWNbXSBtYXRjaGVzIGFuIElTTyA4NjAxIGV4dGVuZGVkIGZv
cm1hdCBmb3IgZGF0ZQotLy8gYW5kIHRpbWUgd2l0aCBVVEMgb2Zmc2V0LgorLy8gTm90ZSB0aGF0
IFJGQzMzMzlfc2VjW10gbWF0Y2hlcyBhbiBJU08gODYwMSBleHRlbmRlZCBmb3JtYXQgZm9yIGRh
dGUgYW5kCisvLyB0aW1lIHdpdGggVVRDIG9mZnNldC4gIEFsc28gbm90ZSB0aGUgdXNlIG9mICIl
WSI6IFJGQzMzMzkgbWFuZGF0ZXMgdGhhdAorLy8geWVhcnMgaGF2ZSBleGFjdGx5IGZvdXIgZGln
aXRzLCBidXQgd2UgYWxsb3cgdGhlbSB0byB0YWtlIHRoZWlyIG5hdHVyYWwKKy8vIHdpZHRoLgog
ZXh0ZXJuIGNvbnN0IGNoYXIgUkZDMzMzOV9mdWxsW107ICAvLyAlWS0lbS0lZFQlSDolTTolRSpT
JUV6CiBleHRlcm4gY29uc3QgY2hhciBSRkMzMzM5X3NlY1tdOyAgIC8vICVZLSVtLSVkVCVIOiVN
OiVTJUV6CiAKQEAgLTg4Niw3ICs5MDYsNyBAQCBleHRlcm4gY29uc3QgY2hhciBSRkMxMTIzX25v
X3dkYXlbXTsgIC8vICVkICViICVFNFkgJUg6JU06JVMgJXoKIC8vIEZvcm1hdFRpbWUoKQogLy8K
IC8vIEZvcm1hdHMgdGhlIGdpdmVuIGBhYnNsOjpUaW1lYCBpbiB0aGUgYGFic2w6OlRpbWVab25l
YCBhY2NvcmRpbmcgdG8gdGhlCi0vLyBwcm92aWRlZCBmb3JtYXQgc3RkOjpzdHJpbmcuIFVzZXMg
c3RyZnRpbWUoKS1saWtlIGZvcm1hdHRpbmcgb3B0aW9ucywgd2l0aAorLy8gcHJvdmlkZWQgZm9y
bWF0IHN0cmluZy4gVXNlcyBzdHJmdGltZSgpLWxpa2UgZm9ybWF0dGluZyBvcHRpb25zLCB3aXRo
CiAvLyB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbnM6CiAvLwogLy8gICAtICVFeiAgLSBSRkMzMzM5
LWNvbXBhdGlibGUgbnVtZXJpYyBVVEMgb2Zmc2V0ICgraGg6bW0gb3IgLWhoOm1tKQpAQCAtOTEw
LDE2ICs5MzAsMTggQEAgZXh0ZXJuIGNvbnN0IGNoYXIgUkZDMTEyM19ub193ZGF5W107ICAvLyAl
ZCAlYiAlRTRZICVIOiVNOiVTICV6CiAvLyBFeGFtcGxlOgogLy8KIC8vICAgYWJzbDo6VGltZVpv
bmUgbGF4OwotLy8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxl
cyIsICZsYXgpKSB7IC4uLiB9CisvLyAgIGlmICghYWJzbDo6TG9hZFRpbWVab25lKCJBbWVyaWNh
L0xvc19BbmdlbGVzIiwgJmxheCkpIHsKKy8vICAgICAvLyBoYW5kbGUgZXJyb3IgY2FzZQorLy8g
ICB9CiAvLyAgIGFic2w6OlRpbWUgdCA9IGFic2w6OkZyb21EYXRlVGltZSgyMDEzLCAxLCAyLCAz
LCA0LCA1LCBsYXgpOwogLy8KLS8vICAgc3RkOjpzdHJpbmcgZiA9IGFic2w6OkZvcm1hdFRpbWUo
IiVIOiVNOiVTIiwgdCwgbGF4KTsgIC8vICIwMzowNDowNSIKKy8vICAgc3RyaW5nIGYgPSBhYnNs
OjpGb3JtYXRUaW1lKCIlSDolTTolUyIsIHQsIGxheCk7ICAvLyAiMDM6MDQ6MDUiCiAvLyAgIGYg
PSBhYnNsOjpGb3JtYXRUaW1lKCIlSDolTTolRTNTIiwgdCwgbGF4KTsgIC8vICIwMzowNDowNS4w
MDAiCiAvLwogLy8gTm90ZTogSWYgdGhlIGdpdmVuIGBhYnNsOjpUaW1lYCBpcyBgYWJzbDo6SW5m
aW5pdGVGdXR1cmUoKWAsIHRoZSByZXR1cm5lZAotLy8gc3RkOjpzdHJpbmcgd2lsbCBiZSBleGFj
dGx5ICJpbmZpbml0ZS1mdXR1cmUiLiBJZiB0aGUgZ2l2ZW4gYGFic2w6OlRpbWVgIGlzCi0vLyBg
YWJzbDo6SW5maW5pdGVQYXN0KClgLCB0aGUgcmV0dXJuZWQgc3RkOjpzdHJpbmcgd2lsbCBiZSBl
eGFjdGx5ICJpbmZpbml0ZS1wYXN0Ii4KLS8vIEluIGJvdGggY2FzZXMgdGhlIGdpdmVuIGZvcm1h
dCBzdGQ6OnN0cmluZyBhbmQgYGFic2w6OlRpbWVab25lYCBhcmUgaWdub3JlZC4KKy8vIHN0cmlu
ZyB3aWxsIGJlIGV4YWN0bHkgImluZmluaXRlLWZ1dHVyZSIuIElmIHRoZSBnaXZlbiBgYWJzbDo6
VGltZWAgaXMKKy8vIGBhYnNsOjpJbmZpbml0ZVBhc3QoKWAsIHRoZSByZXR1cm5lZCBzdHJpbmcg
d2lsbCBiZSBleGFjdGx5ICJpbmZpbml0ZS1wYXN0Ii4KKy8vIEluIGJvdGggY2FzZXMgdGhlIGdp
dmVuIGZvcm1hdCBzdHJpbmcgYW5kIGBhYnNsOjpUaW1lWm9uZWAgYXJlIGlnbm9yZWQuCiAvLwog
c3RkOjpzdHJpbmcgRm9ybWF0VGltZShjb25zdCBzdGQ6OnN0cmluZyYgZm9ybWF0LCBUaW1lIHQs
IFRpbWVab25lIHR6KTsKIApAQCAtOTM2LDcgKzk1OCw3IEBAIGlubGluZSBzdGQ6Om9zdHJlYW0m
IG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgVGltZSB0KSB7CiAKIC8vIFBhcnNlVGltZSgp
CiAvLwotLy8gUGFyc2VzIGFuIGlucHV0IHN0ZDo6c3RyaW5nIGFjY29yZGluZyB0byB0aGUgcHJv
dmlkZWQgZm9ybWF0IHN0ZDo6c3RyaW5nIGFuZAorLy8gUGFyc2VzIGFuIGlucHV0IHN0cmluZyBh
Y2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkIGZvcm1hdCBzdHJpbmcgYW5kCiAvLyByZXR1cm5zIHRo
ZSBjb3JyZXNwb25kaW5nIGBhYnNsOjpUaW1lYC4gVXNlcyBzdHJmdGltZSgpLWxpa2UgZm9ybWF0
dGluZwogLy8gb3B0aW9ucywgd2l0aCB0aGUgc2FtZSBleHRlbnNpb25zIGFzIEZvcm1hdFRpbWUo
KSwgYnV0IHdpdGggdGhlCiAvLyBleGNlcHRpb25zIHRoYXQgJUUjUyBpcyBpbnRlcnByZXRlZCBh
cyAlRSpTLCBhbmQgJUUjZiBhcyAlRSpmLiAgJUV6CkBAIC05NTAsNyArOTcyLDcgQEAgaW5saW5l
IHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBUaW1lIHQpIHsKIC8v
CiAvLyAgICIxOTcwLTAxLTAxIDAwOjAwOjAwLjAgKzAwMDAiCiAvLwotLy8gRm9yIGV4YW1wbGUs
IHBhcnNpbmcgYSBzdGQ6OnN0cmluZyBvZiAiMTU6NDUiICglSDolTSkgd2lsbCByZXR1cm4gYW4g
YWJzbDo6VGltZQorLy8gRm9yIGV4YW1wbGUsIHBhcnNpbmcgYSBzdHJpbmcgb2YgIjE1OjQ1IiAo
JUg6JU0pIHdpbGwgcmV0dXJuIGFuIGFic2w6OlRpbWUKIC8vIHRoYXQgcmVwcmVzZW50cyAiMTk3
MC0wMS0wMSAxNTo0NTowMC4wICswMDAwIi4KIC8vCiAvLyBOb3RlIHRoYXQgc2luY2UgUGFyc2VU
aW1lKCkgcmV0dXJucyB0aW1lIGluc3RhbnRzLCBpdCBtYWtlcyB0aGUgbW9zdCBzZW5zZQpAQCAt
OTc3LDE1ICs5OTksMTUgQEAgaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9z
dHJlYW0mIG9zLCBUaW1lIHQpIHsKIC8vIEVycm9ycyBhcmUgaW5kaWNhdGVkIGJ5IHJldHVybmlu
ZyBmYWxzZSBhbmQgYXNzaWduaW5nIGFuIGVycm9yIG1lc3NhZ2UKIC8vIHRvIHRoZSAiZXJyIiBv
dXQgcGFyYW0gaWYgaXQgaXMgbm9uLW51bGwuCiAvLwotLy8gTm90ZTogSWYgdGhlIGlucHV0IHN0
ZDo6c3RyaW5nIGlzIGV4YWN0bHkgImluZmluaXRlLWZ1dHVyZSIsIHRoZSByZXR1cm5lZAorLy8g
Tm90ZTogSWYgdGhlIGlucHV0IHN0cmluZyBpcyBleGFjdGx5ICJpbmZpbml0ZS1mdXR1cmUiLCB0
aGUgcmV0dXJuZWQKIC8vIGBhYnNsOjpUaW1lYCB3aWxsIGJlIGBhYnNsOjpJbmZpbml0ZUZ1dHVy
ZSgpYCBhbmQgYHRydWVgIHdpbGwgYmUgcmV0dXJuZWQuCi0vLyBJZiB0aGUgaW5wdXQgc3RkOjpz
dHJpbmcgaXMgImluZmluaXRlLXBhc3QiLCB0aGUgcmV0dXJuZWQgYGFic2w6OlRpbWVgIHdpbGwg
YmUKKy8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgImluZmluaXRlLXBhc3QiLCB0aGUgcmV0dXJu
ZWQgYGFic2w6OlRpbWVgIHdpbGwgYmUKIC8vIGBhYnNsOjpJbmZpbml0ZVBhc3QoKWAgYW5kIGB0
cnVlYCB3aWxsIGJlIHJldHVybmVkLgogLy8KIGJvb2wgUGFyc2VUaW1lKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBmb3JtYXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCwgVGltZSogdGltZSwKICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnIpOwogCi0vLyBMaWtlIFBhcnNlVGltZSgpIGFib3Zl
LCBidXQgaWYgdGhlIGZvcm1hdCBzdGQ6OnN0cmluZyBkb2VzIG5vdCBjb250YWluIGEgVVRDCisv
LyBMaWtlIFBhcnNlVGltZSgpIGFib3ZlLCBidXQgaWYgdGhlIGZvcm1hdCBzdHJpbmcgZG9lcyBu
b3QgY29udGFpbiBhIFVUQwogLy8gb2Zmc2V0IHNwZWNpZmljYXRpb24gKCV6LyVFei8lRSp6KSB0
aGVuIHRoZSBpbnB1dCBpcyBpbnRlcnByZXRlZCBpbiB0aGUKIC8vIGdpdmVuIFRpbWVab25lLiAg
VGhpcyBtZWFucyB0aGF0IHRoZSBpbnB1dCwgYnkgaXRzZWxmLCBkb2VzIG5vdCBpZGVudGlmeSBh
CiAvLyB1bmlxdWUgaW5zdGFudC4gIEJlaW5nIHRpbWUtem9uZSBkZXBlbmRlbnQsIGl0IGFsc28g
YWRtaXRzIHRoZSBwb3NzaWJpbGl0eQpAQCAtMTAyOCw3ICsxMDUwLDkgQEAgc3RkOjpzdHJpbmcg
VW5wYXJzZUZsYWcoVGltZSB0KTsKIC8vICAgYWJzbDo6VGltZVpvbmUgcHN0ID0gYWJzbDo6Rml4
ZWRUaW1lWm9uZSgtOCAqIDYwICogNjApOwogLy8gICBhYnNsOjpUaW1lWm9uZSBsb2MgPSBhYnNs
OjpMb2NhbFRpbWVab25lKCk7CiAvLyAgIGFic2w6OlRpbWVab25lIGxheDsKLS8vICAgaWYgKCFh
YnNsOjpMb2FkVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCAmbGF4KSkgeyAuLi4gfQor
Ly8gICBpZiAoIWFic2w6OkxvYWRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIsICZsYXgp
KSB7CisvLyAgICAgLy8gaGFuZGxlIGVycm9yIGNhc2UKKy8vICAgfQogLy8KIC8vIFNlZSBhbHNv
OgogLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2NjdHoKQEAgLTEwNDUsNiArMTA2OSwx
MSBAQCBjbGFzcyBUaW1lWm9uZSB7CiAKICAgc3RkOjpzdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIGN6Xy5uYW1lKCk7IH0KIAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSD4KKyAgZnJpZW5kIEgg
QWJzbEhhc2hWYWx1ZShIIGgsIFRpbWVab25lIHR6KSB7CisgICAgcmV0dXJuIEg6OmNvbWJpbmUo
c3RkOjptb3ZlKGgpLCB0ei5jel8pOworICB9CisKICBwcml2YXRlOgogICBmcmllbmQgYm9vbCBv
cGVyYXRvcj09KFRpbWVab25lIGEsIFRpbWVab25lIGIpIHsgcmV0dXJuIGEuY3pfID09IGIuY3pf
OyB9CiAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oVGltZVpvbmUgYSwgVGltZVpvbmUgYikgeyBy
ZXR1cm4gYS5jel8gIT0gYi5jel87IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL0JVSUxELmJh
emVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuYmF6ZWwKaW5kZXggMDk2YzExOWU2MzhjYmQzNTA0MDU1
MGJlZDEwYjE5MmU3YjQ2NzQwMS4uMzJmNjkwYzk0YzFkMzQ3YzE0MzcyODNiODA4OGQyYjE5NWY1
MWNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuYmF6ZWwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXMvQlVJTEQuYmF6ZWwKQEAgLTE5LDYgKzE5LDcgQEAgbG9hZCgKICAgICAiQUJTTF9ERUZBVUxU
X0NPUFRTIiwKICAgICAiQUJTTF9URVNUX0NPUFRTIiwKICAgICAiQUJTTF9FWENFUFRJT05TX0ZM
QUciLAorICAgICJBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUyIsCiApCiAKIHBhY2thZ2Uo
ZGVmYXVsdF92aXNpYmlsaXR5ID0gWyIvL3Zpc2liaWxpdHk6cHVibGljIl0pCkBAIC01NSw2ICs1
Niw3IEBAIGNjX2xpYnJhcnkoCiAgICAgICAgICJiYWRfYW55X2Nhc3QuaCIsCiAgICAgXSwKICAg
ICBjb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHICsgQUJTTF9ERUZBVUxUX0NPUFRTLAorICAg
IGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgdmlzaWJpbGl0
eSA9IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKICAgICBkZXBzID0gWwogICAgICAgICAiLy9h
YnNsL2Jhc2UiLApAQCAtNjksNiArNzEsNyBAQCBjY190ZXN0KAogICAgICAgICAiYW55X3Rlc3Qu
Y2MiLAogICAgIF0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09QVFMgKyBBQlNMX0VYQ0VQVElP
TlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAog
ICAgIGRlcHMgPSBbCiAgICAgICAgICI6YW55IiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAg
LTEwMCw2ICsxMDMsNyBAQCBjY190ZXN0KAogICAgIG5hbWUgPSAiYW55X2V4Y2VwdGlvbl9zYWZl
dHlfdGVzdCIsCiAgICAgc3JjcyA9IFsiYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyJdLAog
ICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcsCisgICAg
bGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKICAgICBkZXBzID0gWwog
ICAgICAgICAiOmFueSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fc2FmZXR5X3Rl
c3RpbmciLApAQCAtMTI0LDYgKzEyOCw3IEBAIGNjX3Rlc3QoCiAgICAgc2l6ZSA9ICJzbWFsbCIs
CiAgICAgc3JjcyA9IFsic3Bhbl90ZXN0LmNjIl0sCiAgICAgY29wdHMgPSBBQlNMX1RFU1RfQ09Q
VFMgKyBBQlNMX0VYQ0VQVElPTlNfRkxBRywKKyAgICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9O
U19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBbCiAgICAgICAgICI6c3BhbiIsCiAgICAgICAg
ICIvL2Fic2wvYmFzZTpjb25maWciLApAQCAtMTMxLDYgKzEzNiw3IEBAIGNjX3Rlc3QoCiAgICAg
ICAgICIvL2Fic2wvYmFzZTpleGNlcHRpb25fdGVzdGluZyIsCiAgICAgICAgICIvL2Fic2wvY29u
dGFpbmVyOmZpeGVkX2FycmF5IiwKICAgICAgICAgIi8vYWJzbC9jb250YWluZXI6aW5saW5lZF92
ZWN0b3IiLAorICAgICAgICAiLy9hYnNsL2hhc2g6aGFzaF90ZXN0aW5nIiwKICAgICAgICAgIi8v
YWJzbC9zdHJpbmdzIiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9t
YWluIiwKICAgICBdLApAQCAtMTQ4LDYgKzE1NCw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICIvL2Fi
c2wvYmFzZTpleGNlcHRpb25fdGVzdGluZyIsCiAgICAgICAgICIvL2Fic2wvY29udGFpbmVyOmZp
eGVkX2FycmF5IiwKICAgICAgICAgIi8vYWJzbC9jb250YWluZXI6aW5saW5lZF92ZWN0b3IiLAor
ICAgICAgICAiLy9hYnNsL2hhc2g6aGFzaF90ZXN0aW5nIiwKICAgICAgICAgIi8vYWJzbC9zdHJp
bmdzIiwKICAgICAgICAgIkBjb21fZ29vZ2xlX2dvb2dsZXRlc3QvLzpndGVzdF9tYWluIiwKICAg
ICBdLApAQCAtMTcyLDYgKzE3OSw3IEBAIGNjX2xpYnJhcnkoCiAgICAgc3JjcyA9IFsiYmFkX29w
dGlvbmFsX2FjY2Vzcy5jYyJdLAogICAgIGhkcnMgPSBbImJhZF9vcHRpb25hbF9hY2Nlc3MuaCJd
LAogICAgIGNvcHRzID0gQUJTTF9ERUZBVUxUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZMQUcs
CisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKICAgICBkZXBz
ID0gWwogICAgICAgICAiLy9hYnNsL2Jhc2UiLAogICAgICAgICAiLy9hYnNsL2Jhc2U6Y29uZmln
IiwKQEAgLTE4Myw2ICsxOTEsNyBAQCBjY19saWJyYXJ5KAogICAgIHNyY3MgPSBbImJhZF92YXJp
YW50X2FjY2Vzcy5jYyJdLAogICAgIGhkcnMgPSBbImJhZF92YXJpYW50X2FjY2Vzcy5oIl0sCiAg
ICAgY29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBRyArIEFCU0xfREVGQVVMVF9DT1BUUywKKyAg
ICBsaW5rb3B0cyA9IEFCU0xfRVhDRVBUSU9OU19GTEFHX0xJTktPUFRTLAogICAgIGRlcHMgPSBb
CiAgICAgICAgICIvL2Fic2wvYmFzZSIsCiAgICAgICAgICIvL2Fic2wvYmFzZTpjb25maWciLApA
QCAtMTk2LDYgKzIwNSw3IEBAIGNjX3Rlc3QoCiAgICAgICAgICJvcHRpb25hbF90ZXN0LmNjIiwK
ICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJTTF9FWENFUFRJT05TX0ZM
QUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19MSU5LT1BUUywKICAgICBk
ZXBzID0gWwogICAgICAgICAiOm9wdGlvbmFsIiwKICAgICAgICAgIi8vYWJzbC9iYXNlIiwKQEAg
LTIxMiw2ICsyMjIsNyBAQCBjY190ZXN0KAogICAgICAgICAib3B0aW9uYWxfZXhjZXB0aW9uX3Nh
ZmV0eV90ZXN0LmNjIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsgQUJT
TF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxBR19M
SU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOm9wdGlvbmFsIiwKICAgICAgICAgIi8v
YWJzbC9iYXNlOmV4Y2VwdGlvbl9zYWZldHlfdGVzdGluZyIsCkBAIC0yMzksNiArMjUwLDcgQEAg
Y2NfdGVzdCgKICAgICBzaXplID0gInNtYWxsIiwKICAgICBzcmNzID0gWyJ2YXJpYW50X3Rlc3Qu
Y2MiXSwKICAgICBjb3B0cyA9IEFCU0xfVEVTVF9DT1BUUyArIEFCU0xfRVhDRVBUSU9OU19GTEFH
LAorICAgIGxpbmtvcHRzID0gQUJTTF9FWENFUFRJT05TX0ZMQUdfTElOS09QVFMsCiAgICAgZGVw
cyA9IFsKICAgICAgICAgIjp2YXJpYW50IiwKICAgICAgICAgIi8vYWJzbC9iYXNlOmNvbmZpZyIs
CkBAIC0yNzEsNiArMjgzLDcgQEAgY2NfdGVzdCgKICAgICAgICAgInZhcmlhbnRfZXhjZXB0aW9u
X3NhZmV0eV90ZXN0LmNjIiwKICAgICBdLAogICAgIGNvcHRzID0gQUJTTF9URVNUX0NPUFRTICsg
QUJTTF9FWENFUFRJT05TX0ZMQUcsCisgICAgbGlua29wdHMgPSBBQlNMX0VYQ0VQVElPTlNfRkxB
R19MSU5LT1BUUywKICAgICBkZXBzID0gWwogICAgICAgICAiOnZhcmlhbnQiLAogICAgICAgICAi
Ly9hYnNsL2Jhc2U6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0aW5nIiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuZ24KaW5kZXggZmQ3ZTg5ZGVlMzRj
M2IzMjkwNWE3ZmE3OGZiZmJmZTJhYmIwMWU1NS4uYmZkYWZiMzE3ZTNiNGJmMWQzZmVjMjUyY2Qw
Y2QxZDE5M2VjMTkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvQlVJTEQuZ24KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXMvQlVJTEQuZ24KQEAgLTEwNCw2ICsxMDQsNyBAQCBzb3VyY2Vfc2V0KCJvcHRpb25h
bCIpIHsKICAgZGVwcyA9IFsKICAgICAiOmJhZF9vcHRpb25hbF9hY2Nlc3MiLAogICAgICIuLi9i
YXNlOmNvbmZpZyIsCisgICAgIi4uL2Jhc2U6Y29yZV9oZWFkZXJzIiwKICAgICAiLi4vbWVtb3J5
IiwKICAgICAiLi4vbWV0YTp0eXBlX3RyYWl0cyIsCiAgICAgIi4uL3V0aWxpdHkiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXMvYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5
cGVzL2FueV9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKaW5kZXggMzY5NTVmNmM1YzM3NmQzMmZi
MTFhNTU4OTViYTRiYTA2ZmU1YTc4ZS4uZjlkZDhjNDgyYzI1NTQzYjkxNDJlNDJiYTE3NWE4YzAx
NDljMzU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvYW55X2V4Y2VwdGlvbl9zYWZldHlfdGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9hbnlfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCkBAIC02
Miw3ICs2Miw3IEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBBbnlJbnZhcmlhbnRzKGFic2w6
OmFueSogYSkgewogICAgIHN0YXRpY19jYXN0PHZvaWQ+KHVudXNlZCk7CiAgICAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUoKQogICAgICAgICAgICA8PCAiQSByZXNldCBgYW55YCBzaG91bGQgbm90
IGJlIGFibGUgdG8gYmUgYW55X2Nhc3QiOwotICB9IGNhdGNoIChhYnNsOjpiYWRfYW55X2Nhc3Qp
IHsKKyAgfSBjYXRjaCAoY29uc3QgYWJzbDo6YmFkX2FueV9jYXN0JikgewogICB9IGNhdGNoICgu
Li4pIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCiAgICAgICAgICAgIDw8ICJVbmV4
cGVjdGVkIGV4Y2VwdGlvbiB0aHJvd24gZnJvbSBhYnNsOjphbnlfY2FzdCI7CkBAIC0xMDcsNyAr
MTA3LDcgQEAgVEVTVChBbnlFeGNlcHRpb25TYWZldHksIEFzc2lnbm1lbnQpIHsKICAgfTsKICAg
YXV0byBhbnlfc3Ryb25nX3Rlc3RlciA9IHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlUZXN0
ZXIoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKG9y
aWdpbmFsKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhB
bnlJbnZhcmlhbnRzLCBhbnlfaXNfc3Ryb25nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAuV2l0aENvbnRyYWN0cyhBbnlJbnZhcmlhbnRzLCBhbnlfaXNfc3Ryb25nKTsKIAogICBU
aHJvd2VyIHZhbCgyKTsKICAgYWJzbDo6YW55IGFueV92YWwodmFsKTsKQEAgLTEyOSw3ICsxMjks
NyBAQCBURVNUKEFueUV4Y2VwdGlvblNhZmV0eSwgQXNzaWdubWVudCkgewogICBhdXRvIHN0cm9u
Z19lbXB0eV9hbnlfdGVzdGVyID0KICAgICAgIHRlc3Rpbmc6Ok1ha2VFeGNlcHRpb25TYWZldHlU
ZXN0ZXIoKQogICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKGFic2w6OmFueXt9KQotICAgICAg
ICAgIC5XaXRoSW52YXJpYW50cyhBbnlJbnZhcmlhbnRzLCBlbXB0eV9hbnlfaXNfc3Ryb25nKTsK
KyAgICAgICAgICAuV2l0aENvbnRyYWN0cyhBbnlJbnZhcmlhbnRzLCBlbXB0eV9hbnlfaXNfc3Ry
b25nKTsKIAogICBFWFBFQ1RfVFJVRShzdHJvbmdfZW1wdHlfYW55X3Rlc3Rlci5UZXN0KGFzc2ln
bl9hbnkpKTsKICAgRVhQRUNUX1RSVUUoc3Ryb25nX2VtcHR5X2FueV90ZXN0ZXIuVGVzdChhc3Np
Z25fdmFsKSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgVEVTVChBbnlFeGNlcHRpb25TYWZldHksIEVt
cGxhY2UpIHsKICAgICAgIGFic2w6OmFueXthYnNsOjppbl9wbGFjZV90eXBlX3Q8VGhyb3dlcj4o
KSwgMSwgdGVzdGluZzo6bm90aHJvd19jdG9yfTsKICAgYXV0byBvbmVfdGVzdGVyID0gdGVzdGlu
Zzo6TWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAu
V2l0aEluaXRpYWxWYWx1ZShpbml0aWFsX3ZhbCkKLSAgICAgICAgICAgICAgICAgICAgICAgIC5X
aXRoSW52YXJpYW50cyhBbnlJbnZhcmlhbnRzLCBBbnlJc0VtcHR5KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC5XaXRoQ29udHJhY3RzKEFueUludmFyaWFudHMsIEFueUlzRW1wdHkpOwogCiAg
IGF1dG8gZW1wX3Rocm93ZXIgPSBbXShhYnNsOjphbnkqIGFwKSB7IGFwLT5lbXBsYWNlPFRocm93
ZXI+KDIpOyB9OwogICBhdXRvIGVtcF90aHJvd2VydmVjID0gW10oYWJzbDo6YW55KiBhcCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvaW50ZXJuYWwvdmFyaWFudC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMv
aW50ZXJuYWwvdmFyaWFudC5oCmluZGV4IDc3MDhlNjdjYjE0ZjQxNmFkZTE2NzE5ZTIzNjlhYWY2
NDhiYjYyODMuLmVmZjRmZWZlZDQwOWQ5MmQ1MDdkYmE4NjY5ZmUxMjMxZWQ0Y2IxNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzL2ludGVybmFsL3ZhcmlhbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9p
bnRlcm5hbC92YXJpYW50LmgKQEAgLTEsNCArMSw0IEBACi0vLyBDb3B5cmlnaHQgMjAxNyBUaGUg
QWJzZWlsIEF1dGhvcnMuCisvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQWJzZWlsIEF1dGhvcnMuCiAv
LwogLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CiAvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCkBAIC0zNyw2ICszNyw4IEBACiAjaW5jbHVkZSAiYWJz
bC90eXBlcy9iYWRfdmFyaWFudF9hY2Nlc3MuaCIKICNpbmNsdWRlICJhYnNsL3V0aWxpdHkvdXRp
bGl0eS5oIgogCisjaWYgIWRlZmluZWQoQUJTTF9IQVZFX1NURF9WQVJJQU5UKQorCiBuYW1lc3Bh
Y2UgYWJzbCB7CiAKIHRlbXBsYXRlIDxjbGFzcy4uLiBUeXBlcz4KQEAgLTkwOCw2ICs5MTAsMTEg
QEAgc3RydWN0IFBlcmZvcm1WaXNpdGF0aW9uIHsKICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90Li4u
IFR1cElzLCBzdGQ6OnNpemVfdC4uLiBJcz4KICAgY29uc3RleHByIFJldHVyblR5cGUgUnVuKHN0
ZDo6ZmFsc2VfdHlwZSAvKmhhc192YWx1ZWxlc3MqLywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4X3NlcXVlbmNlPFR1cElzLi4uPiwgU2l6ZVQ8SXM+Li4uKSBjb25zdCB7CisgICAg
c3RhdGljX2Fzc2VydCgKKyAgICAgICAgc3RkOjppc19zYW1lPFJldHVyblR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICBhYnNsOjpyZXN1bHRfb2ZfdDxPcChWYXJpYW50QWNjZXNzUmVzdWx0PAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXMsIFF1YWxpZmllZFZh
cmlhbnRzPi4uLik+Pjo6dmFsdWUsCisgICAgICAgICJBbGwgdmlzaXRhdGlvbiBvdmVybG9hZHMg
bXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlLiIpOwogICAgIHJldHVybiBhYnNsOjpiYXNl
X2ludGVybmFsOjpJbnZva2UoCiAgICAgICAgIGFic2w6OmZvcndhcmQ8T3A+KG9wKSwKICAgICAg
ICAgVmFyaWFudENvcmVBY2Nlc3M6OkFjY2VzczxJcz4oCkBAIC0xMjI3LDIzICsxMjM0LDIzIEBA
IHVzaW5nIFZhcmlhbnRDb3B5QmFzZSA9IGFic2w6OmNvbmRpdGlvbmFsX3Q8CiAvLyBCYXNlIHRo
YXQgaXMgZGVwZW5kZW50IG9uIHdoZXRoZXIgb3Igbm90IHRoZSBtb3ZlLWFzc2lnbiBjYW4gYmUg
dHJpdmlhbC4KIHRlbXBsYXRlIDxjbGFzcy4uLiBUPgogdXNpbmcgVmFyaWFudE1vdmVBc3NpZ25C
YXNlID0gYWJzbDo6Y29uZGl0aW9uYWxfdDwKLSAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpj
b25qdW5jdGlvbjxzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTxVbmlvbjxULi4uPj4sCisgICAgYWJz
bDo6ZGlzanVuY3Rpb248YWJzbDo6Y29uanVuY3Rpb248YWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxl
PFVuaW9uPFQuLi4+PiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxVbmlvbjxULi4uPj4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19kZXN0cnVjdGlibGU8VW5pb248VC4uLj4+
PiwKICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpuZWdhdGlvbjxhYnNsOjpjb25qdW5jdGlv
bjwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8
VD4uLi4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxl
PFQ+Li4uPj4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6aXNfbW92
ZV9hc3NpZ25hYmxlPFQ+Li4uPj4+Ojp2YWx1ZSwKICAgICBWYXJpYW50Q29weUJhc2U8VC4uLj4s
IFZhcmlhbnRNb3ZlQXNzaWduQmFzZU5vbnRyaXZpYWw8VC4uLj4+OwogCiAvLyBCYXNlIHRoYXQg
aXMgZGVwZW5kZW50IG9uIHdoZXRoZXIgb3Igbm90IHRoZSBjb3B5LWFzc2lnbiBjYW4gYmUgdHJp
dmlhbC4KIHRlbXBsYXRlIDxjbGFzcy4uLiBUPgogdXNpbmcgVmFyaWFudENvcHlBc3NpZ25CYXNl
ID0gYWJzbDo6Y29uZGl0aW9uYWxfdDwKLSAgICBhYnNsOjpkaXNqdW5jdGlvbjxhYnNsOjpjb25q
dW5jdGlvbjxzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxVbmlvbjxULi4uPj4sCisgICAgYWJzbDo6
ZGlzanVuY3Rpb248YWJzbDo6Y29uanVuY3Rpb248YWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPFVu
aW9uPFQuLi4+PiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OmlzX2NvcHlfY29uc3RydWN0aWJsZTxVbmlvbjxULi4uPj4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19kZXN0cnVjdGlibGU8VW5pb248VC4uLj4+PiwK
ICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpuZWdhdGlvbjxhYnNsOjpjb25qdW5jdGlvbjwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8VD4u
Li4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPFQ+
Li4uPj4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6aXNfY29weV9h
c3NpZ25hYmxlPFQ+Li4uPj4+Ojp2YWx1ZSwKICAgICBWYXJpYW50TW92ZUFzc2lnbkJhc2U8VC4u
Lj4sIFZhcmlhbnRDb3B5QXNzaWduQmFzZU5vbnRyaXZpYWw8VC4uLj4+OwogCiB0ZW1wbGF0ZSA8
Y2xhc3MuLi4gVD4KQEAgLTE2MTIsNCArMTYxOSw1IEBAIHN0cnVjdCBWYXJpYW50SGFzaEJhc2U8
VmFyaWFudCwKIH0gIC8vIG5hbWVzcGFjZSB2YXJpYW50X2ludGVybmFsCiB9ICAvLyBuYW1lc3Bh
Y2UgYWJzbAogCisjZW5kaWYgIC8vICFkZWZpbmVkKEFCU0xfSEFWRV9TVERfVkFSSUFOVCkKICNl
bmRpZiAgLy8gQUJTTF9UWVBFU192YXJpYW50X2ludGVybmFsX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlcy9vcHRpb25hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwuaAppbmRleCBjODM3Y2Rk
ZWVmNDg5NDI2NDdlN2Y4MjkyZDAxNjM3NTA5NDZiMmI2Li4xNDIxMDAxODgxNWM0YzY2MTIwN2Zl
NDBmNDUyYjAxMzVjOWEwYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsLmgKQEAgLTU5LDYgKzU5LDcgQEAgdXNpbmcgc3RkOjpu
dWxsb3B0OwogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNp
bmNsdWRlICJhYnNsL2Jhc2UvYXR0cmlidXRlcy5oIgogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgogI2luY2x1ZGUgImFic2wvbWV0YS90eXBlX3RyYWl0cy5oIgogI2luY2x1ZGUgImFi
c2wvdHlwZXMvYmFkX29wdGlvbmFsX2FjY2Vzcy5oIgpAQCAtNDExLDEwICs0MTIsMTAgQEAgY29u
c3RleHByIGNvcHlfdHJhaXRzIGdldF9jdG9yX2NvcHlfdHJhaXRzKCkgewogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBjb3B5X3RyYWl0cyBnZXRfYXNzaWduX2NvcHlfdHJhaXRz
KCkgewotICByZXR1cm4gc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8VD46OnZhbHVlICYmCisgIHJl
dHVybiBhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8VD46OnZhbHVlICYmCiAgICAgICAgICAgICAg
ICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZQogICAgICAgICAgICAgID8g
Y29weV90cmFpdHM6OmNvcHlhYmxlCi0gICAgICAgICAgICAgOiBzdGQ6OmlzX21vdmVfYXNzaWdu
YWJsZTxUPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICA6IGFic2w6OmlzX21vdmVfYXNzaWduYWJs
ZTxUPjo6dmFsdWUgJiYKICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19tb3ZlX2NvbnN0
cnVjdGlibGU8VD46OnZhbHVlCiAgICAgICAgICAgICAgICAgICAgPyBjb3B5X3RyYWl0czo6bW92
YWJsZQogICAgICAgICAgICAgICAgICAgIDogY29weV90cmFpdHM6Om5vbl9tb3ZhYmxlOwpAQCAt
NzAwLDcgKzcwMSw3IEBAIGNsYXNzIG9wdGlvbmFsIDogcHJpdmF0ZSBvcHRpb25hbF9pbnRlcm5h
bDo6b3B0aW9uYWxfZGF0YTxUPiwKICAgLy8gb3B0aW9uYWw6OnJlc2V0KCkKICAgLy8KICAgLy8g
RGVzdHJveXMgdGhlIGlubmVyIGBUYCB2YWx1ZSBvZiBhbiBgYWJzbDo6b3B0aW9uYWxgIGlmIG9u
ZSBpcyBwcmVzZW50LgotICB2b2lkIHJlc2V0KCkgbm9leGNlcHQgeyB0aGlzLT5kZXN0cnVjdCgp
OyB9CisgIEFCU0xfQVRUUklCVVRFX1JFSU5JVElBTElaRVMgdm9pZCByZXNldCgpIG5vZXhjZXB0
IHsgdGhpcy0+ZGVzdHJ1Y3QoKTsgfQogCiAgIC8vIG9wdGlvbmFsOjplbXBsYWNlKCkKICAgLy8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsX2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYwppbmRleCBk
MmVmMDRiOGQxYjA4M2M3NTVjMjMwNjg1NTQ2MGFhOGYwZGU4MWRkLi5kMTE3ZWU1MTg0OTE5ZmU2
YjEyZDEyMzNkZTE2ZTlhZWU4MGU4MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25h
bF9leGNlcHRpb25fc2FmZXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfZXhj
ZXB0aW9uX3NhZmV0eV90ZXN0LmNjCkBAIC0zOCwxMiArMzgsMTIgQEAgY29uc3RleHByIGludCBr
VXBkYXRlZEludGVnZXIgPSAxMDsKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcHRpb25hbFQ+CiBib29s
IFZhbHVlVGhyb3dzQmFkT3B0aW9uYWxBY2Nlc3MoY29uc3QgT3B0aW9uYWxUJiBvcHRpb25hbCkg
dHJ5IHsKICAgcmV0dXJuIChzdGF0aWNfY2FzdDx2b2lkPihvcHRpb25hbC52YWx1ZSgpKSwgZmFs
c2UpOwotfSBjYXRjaCAoYWJzbDo6YmFkX29wdGlvbmFsX2FjY2VzcykgeworfSBjYXRjaCAoY29u
c3QgYWJzbDo6YmFkX29wdGlvbmFsX2FjY2VzcyYpIHsKICAgcmV0dXJuIHRydWU7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBPcHRpb25hbFQ+Ci1Bc3NlcnRpb25SZXN1bHQgQ2hlY2tJbnZhcmlh
bnRzKE9wdGlvbmFsVCogb3B0aW9uYWxfcHRyKSB7CitBc3NlcnRpb25SZXN1bHQgT3B0aW9uYWxJ
bnZhcmlhbnRzKE9wdGlvbmFsVCogb3B0aW9uYWxfcHRyKSB7CiAgIC8vIENoZWNrIHRoZSBjdXJy
ZW50IHN0YXRlIHBvc3QtdGhyb3cgZm9yIHZhbGlkaXR5CiAgIGF1dG8mIG9wdGlvbmFsID0gKm9w
dGlvbmFsX3B0cjsKIApAQCAtMTIzLDggKzEyMyw4IEBAIFRFU1QoT3B0aW9uYWxFeGNlcHRpb25T
YWZldHksIE5vdGhyb3dDb25zdHJ1Y3RvcnMpIHsKIFRFU1QoT3B0aW9uYWxFeGNlcHRpb25TYWZl
dHksIEVtcGxhY2UpIHsKICAgLy8gVGVzdCB0aGUgYmFzaWMgZ3VhcmFudGVlIHBsdXMgdGVzdCB0
aGUgcmVzdWx0IG9mIG9wdGlvbmFsOjpoYXNfdmFsdWUoKQogICAvLyBpcyBmYWxzZSBpbiBhbGwg
Y2FzZXMKLSAgYXV0byBkaXNlbmdhZ2VkX3Rlc3QgPSBNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVy
KCkuV2l0aEludmFyaWFudHMoCi0gICAgICBDaGVja0ludmFyaWFudHM8T3B0aW9uYWw+LCBDaGVj
a0Rpc2VuZ2FnZWQ8T3B0aW9uYWw+KTsKKyAgYXV0byBkaXNlbmdhZ2VkX3Rlc3QgPSBNYWtlRXhj
ZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aENvbnRyYWN0cygKKyAgICAgIE9wdGlvbmFsSW52YXJp
YW50czxPcHRpb25hbD4sIENoZWNrRGlzZW5nYWdlZDxPcHRpb25hbD4pOwogICBhdXRvIGRpc2Vu
Z2FnZWRfdGVzdF9lbXB0eSA9IGRpc2VuZ2FnZWRfdGVzdC5XaXRoSW5pdGlhbFZhbHVlKE9wdGlv
bmFsKCkpOwogICBhdXRvIGRpc2VuZ2FnZWRfdGVzdF9ub25lbXB0eSA9CiAgICAgICBkaXNlbmdh
Z2VkX3Rlc3QuV2l0aEluaXRpYWxWYWx1ZShPcHRpb25hbChrSW5pdGlhbEludGVnZXIpKTsKQEAg
LTE0NywxMSArMTQ3LDExIEBAIFRFU1QoT3B0aW9uYWxFeGNlcHRpb25TYWZldHksIEV2ZXJ5dGhp
bmdUaHJvd3NTd2FwKSB7CiAgIC8vIFRlc3QgdGhlIGJhc2ljIGd1YXJhbnRlZSBwbHVzIHRlc3Qg
dGhlIHJlc3VsdCBvZiBvcHRpb25hbDo6aGFzX3ZhbHVlKCkKICAgLy8gcmVtYWlucyB0aGUgc2Ft
ZQogICBhdXRvIHRlc3QgPQotICAgICAgTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpLldpdGhJ
bnZhcmlhbnRzKENoZWNrSW52YXJpYW50czxPcHRpb25hbD4pOworICAgICAgTWFrZUV4Y2VwdGlv
blNhZmV0eVRlc3RlcigpLldpdGhDb250cmFjdHMoT3B0aW9uYWxJbnZhcmlhbnRzPE9wdGlvbmFs
Pik7CiAgIGF1dG8gZGlzZW5nYWdlZF90ZXN0X2VtcHR5ID0gdGVzdC5XaXRoSW5pdGlhbFZhbHVl
KE9wdGlvbmFsKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW52
YXJpYW50cyhDaGVja0Rpc2VuZ2FnZWQ8T3B0aW9uYWw+KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoQ2hlY2tEaXNlbmdhZ2VkPE9wdGlvbmFsPik7
CiAgIGF1dG8gZW5nYWdlZF90ZXN0X25vbmVtcHR5ID0gdGVzdC5XaXRoSW5pdGlhbFZhbHVlKE9w
dGlvbmFsKGtJbml0aWFsSW50ZWdlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0VuZ2FnZWQ8T3B0aW9uYWw+KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoQ2hlY2tFbmdhZ2VkPE9wdGlv
bmFsPik7CiAKICAgYXV0byBzd2FwX2VtcHR5ID0gW10oT3B0aW9uYWwqIG9wdGlvbmFsX3B0cikg
ewogICAgIGF1dG8gZW1wdHkgPSBPcHRpb25hbCgpOwpAQCAtMTkyLDExICsxOTIsMTEgQEAgVEVT
VChPcHRpb25hbEV4Y2VwdGlvblNhZmV0eSwgQ29weUFzc2lnbikgewogICAvLyBUZXN0IHRoZSBi
YXNpYyBndWFyYW50ZWUgcGx1cyB0ZXN0IHRoZSByZXN1bHQgb2Ygb3B0aW9uYWw6Omhhc192YWx1
ZSgpCiAgIC8vIHJlbWFpbnMgdGhlIHNhbWUKICAgYXV0byB0ZXN0ID0KLSAgICAgIE1ha2VFeGNl
cHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoSW52YXJpYW50cyhDaGVja0ludmFyaWFudHM8T3B0aW9u
YWw+KTsKKyAgICAgIE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKS5XaXRoQ29udHJhY3RzKE9w
dGlvbmFsSW52YXJpYW50czxPcHRpb25hbD4pOwogICBhdXRvIGRpc2VuZ2FnZWRfdGVzdF9lbXB0
eSA9IHRlc3QuV2l0aEluaXRpYWxWYWx1ZShPcHRpb25hbCgpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tEaXNlbmdhZ2VkPE9wdGlvbmFs
Pik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKENo
ZWNrRGlzZW5nYWdlZDxPcHRpb25hbD4pOwogICBhdXRvIGVuZ2FnZWRfdGVzdF9ub25lbXB0eSA9
IHRlc3QuV2l0aEluaXRpYWxWYWx1ZShPcHRpb25hbChrSW5pdGlhbEludGVnZXIpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tFbmdhZ2Vk
PE9wdGlvbmFsPik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29u
dHJhY3RzKENoZWNrRW5nYWdlZDxPcHRpb25hbD4pOwogCiAgIGF1dG8gY29weWFzc2lnbl9ub25l
bXB0eSA9IFtdKE9wdGlvbmFsKiBvcHRpb25hbF9wdHIpIHsKICAgICBhdXRvIG5vbmVtcHR5ID0K
QEAgLTIxOCwxMSArMjE4LDExIEBAIFRFU1QoT3B0aW9uYWxFeGNlcHRpb25TYWZldHksIE1vdmVB
c3NpZ24pIHsKICAgLy8gVGVzdCB0aGUgYmFzaWMgZ3VhcmFudGVlIHBsdXMgdGVzdCB0aGUgcmVz
dWx0IG9mIG9wdGlvbmFsOjpoYXNfdmFsdWUoKQogICAvLyByZW1haW5zIHRoZSBzYW1lCiAgIGF1
dG8gdGVzdCA9Ci0gICAgICBNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkuV2l0aEludmFyaWFu
dHMoQ2hlY2tJbnZhcmlhbnRzPE9wdGlvbmFsPik7CisgICAgICBNYWtlRXhjZXB0aW9uU2FmZXR5
VGVzdGVyKCkuV2l0aENvbnRyYWN0cyhPcHRpb25hbEludmFyaWFudHM8T3B0aW9uYWw+KTsKICAg
YXV0byBkaXNlbmdhZ2VkX3Rlc3RfZW1wdHkgPSB0ZXN0LldpdGhJbml0aWFsVmFsdWUoT3B0aW9u
YWwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRz
KENoZWNrRGlzZW5nYWdlZDxPcHRpb25hbD4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuV2l0aENvbnRyYWN0cyhDaGVja0Rpc2VuZ2FnZWQ8T3B0aW9uYWw+KTsKICAgYXV0
byBlbmdhZ2VkX3Rlc3Rfbm9uZW1wdHkgPSB0ZXN0LldpdGhJbml0aWFsVmFsdWUoT3B0aW9uYWwo
a0luaXRpYWxJbnRlZ2VyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLldp
dGhJbnZhcmlhbnRzKENoZWNrRW5nYWdlZDxPcHRpb25hbD4pOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhDaGVja0VuZ2FnZWQ8T3B0aW9uYWw+KTsK
IAogICBhdXRvIG1vdmVhc3NpZ25fZW1wdHkgPSBbXShPcHRpb25hbCogb3B0aW9uYWxfcHRyKSB7
CiAgICAgYXV0byBlbXB0eSA9IE9wdGlvbmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9v
cHRpb25hbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWxfdGVzdC5jYwppbmRleCAxNzli
ZmQ2NmQyZmVlMGViOTMyMWIwNTU5YjJiOWRjMTg5MTBkYmIzLi5kOTBkYjlmODIxYjUyZDRhOTM1
NTU3NzkyZTIxMmUxNDE5OWU3ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbF90
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsX3Rlc3QuY2MKQEAgLTYwNywxMSArNjA3
LDEyIEBAIFRFU1Qob3B0aW9uYWxUZXN0LCBDb3B5QXNzaWdubWVudCkgewogICBvcHQyX3RvX2Vt
cHR5ID0gZW1wdHk7CiAgIEVYUEVDVF9GQUxTRShvcHQyX3RvX2VtcHR5KTsKIAotICBFWFBFQ1Rf
RkFMU0Uoc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8Y29uc3QgaW50Pj46
OnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUoc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6b3B0
aW9uYWw8Q29weWFibGU+Pjo6dmFsdWUpOwotICBFWFBFQ1RfRkFMU0Uoc3RkOjppc19jb3B5X2Fz
c2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8TW92ZWFibGVUaHJvdz4+Ojp2YWx1ZSk7Ci0gIEVYUEVD
VF9GQUxTRShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJsZU5v
VGhyb3c+Pjo6dmFsdWUpOwotICBFWFBFQ1RfRkFMU0Uoc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8
YWJzbDo6b3B0aW9uYWw8Tm9uTW92YWJsZT4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNs
Ojppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8Y29uc3QgaW50Pj46OnZhbHVlKTsK
KyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPENv
cHlhYmxlPj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJs
ZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJsZVRocm93Pj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNF
KAorICAgICAgYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPE1vdmVhYmxl
Tm9UaHJvdz4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19jb3B5X2Fzc2lnbmFi
bGU8YWJzbDo6b3B0aW9uYWw8Tm9uTW92YWJsZT4+Ojp2YWx1ZSk7CiAKICAgRVhQRUNUX1RSVUUo
YWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZTxpbnQ+Ojp2YWx1ZSk7CiAgIEVYUEVD
VF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGU8dm9sYXRpbGUgaW50Pjo6
dmFsdWUpOwpAQCAtNjI1LDkgKzYyNiw5IEBAIFRFU1Qob3B0aW9uYWxUZXN0LCBDb3B5QXNzaWdu
bWVudCkgewogICB9OwogCiAgIEVYUEVDVF9UUlVFKGFic2w6OmlzX3RyaXZpYWxseV9jb3B5X2Fz
c2lnbmFibGU8VHJpdmlhbD46OnZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNFKHN0ZDo6aXNfY29weV9h
c3NpZ25hYmxlPGNvbnN0IFRyaXZpYWw+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9GQUxTRShzdGQ6Omlz
X2NvcHlfYXNzaWduYWJsZTx2b2xhdGlsZSBUcml2aWFsPjo6dmFsdWUpOwotICBFWFBFQ1RfVFJV
RShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxOb25Ucml2aWFsPjo6dmFsdWUpOworICBFWFBFQ1Rf
RkFMU0UoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPGNvbnN0IFRyaXZpYWw+Ojp2YWx1ZSk7Cisg
IEVYUEVDVF9GQUxTRShhYnNsOjppc19jb3B5X2Fzc2lnbmFibGU8dm9sYXRpbGUgVHJpdmlhbD46
OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfY29weV9hc3NpZ25hYmxlPE5vblRyaXZp
YWw+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9GQUxTRShhYnNsOjppc190cml2aWFsbHlfY29weV9hc3Np
Z25hYmxlPE5vblRyaXZpYWw+Ojp2YWx1ZSk7CiAKICAgLy8gc3RkOjpvcHRpb25hbCBkb2Vzbid0
IHN1cHBvcnQgdm9sYXRpbGUgbm9udHJpdmlhbCB0eXBlcy4KQEAgLTY5NSwxMSArNjk2LDExIEBA
IFRFU1Qob3B0aW9uYWxUZXN0LCBNb3ZlQXNzaWdubWVudCkgewogICAgIEVYUEVDVF9FUSgxLCBs
aXN0ZW5lci52b2xhdGlsZV9tb3ZlX2Fzc2lnbik7CiAgIH0KICNlbmRpZiAgLy8gQUJTTF9IQVZF
X1NURF9PUFRJT05BTAotICBFWFBFQ1RfRkFMU0Uoc3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJz
bDo6b3B0aW9uYWw8Y29uc3QgaW50Pj46OnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUoc3RkOjppc19t
b3ZlX2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8Q29weWFibGU+Pjo6dmFsdWUpOwotICBFWFBF
Q1RfVFJVRShzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJsZVRo
cm93Pj46OnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUoc3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8YWJz
bDo6b3B0aW9uYWw8TW92ZWFibGVOb1Rocm93Pj46OnZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNFKHN0
ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPE5vbk1vdmFibGU+Pjo6dmFsdWUp
OworICBFWFBFQ1RfRkFMU0UoYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFs
PGNvbnN0IGludD4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX21vdmVfYXNzaWdu
YWJsZTxhYnNsOjpvcHRpb25hbDxDb3B5YWJsZT4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFi
c2w6OmlzX21vdmVfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxNb3ZlYWJsZVRocm93Pj46OnZh
bHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPGFic2w6Om9wdGlv
bmFsPE1vdmVhYmxlTm9UaHJvdz4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShhYnNsOjppc19t
b3ZlX2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8Tm9uTW92YWJsZT4+Ojp2YWx1ZSk7CiAKICAg
RVhQRUNUX0ZBTFNFKAogICAgICAgc3RkOjppc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxhYnNs
OjpvcHRpb25hbDxNb3ZlYWJsZVRocm93Pj46OnZhbHVlKTsKQEAgLTE2MTksNyArMTYyMCw3IEBA
IFRFU1Qob3B0aW9uYWxUZXN0LCBBc3NpZ25tZW50Q29uc3RyYWludHMpIHsKICAgRVhQRUNUX1RS
VUUoCiAgICAgICAoc3RkOjppc19hc3NpZ25hYmxlPGFic2w6Om9wdGlvbmFsPEFueUxpa2U+Jiwg
Y29uc3QgQW55TGlrZSY+Ojp2YWx1ZSkpOwogICBFWFBFQ1RfVFJVRShzdGQ6OmlzX21vdmVfYXNz
aWduYWJsZTxhYnNsOjpvcHRpb25hbDxBbnlMaWtlPj46OnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUo
c3RkOjppc19jb3B5X2Fzc2lnbmFibGU8YWJzbDo6b3B0aW9uYWw8QW55TGlrZT4+Ojp2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX2NvcHlfYXNzaWduYWJsZTxhYnNsOjpvcHRpb25hbDxB
bnlMaWtlPj46OnZhbHVlKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlcy9zcGFuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuLmgKaW5kZXggNzZiZTgxOWVjY2EyMTg2
ZTVkZDQ5ZGJhMGIyZmQ0YTZkMjdmZjllOC4uOTExYWYwYzU3YTYxYTY3ODU1NTdhOTFmYmI2OTJk
N2Q5MDE5MTQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvc3Bhbi5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5
cGVzL3NwYW4uaApAQCAtODcsNyArODcsNyBAQCBjb25zdGV4cHIgYXV0byBHZXREYXRhSW1wbChD
JiBjLCBjaGFyKSBub2V4Y2VwdCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNlcykKICAgcmV0
dXJuIGMuZGF0YSgpOwogfQogCi0vLyBCZWZvcmUgQysrMTcsIHN0ZDo6c3RyaW5nOjpkYXRhIHJl
dHVybnMgYSBjb25zdCBjaGFyKiBpbiBhbGwgY2FzZXMuCisvLyBCZWZvcmUgQysrMTcsIHN0cmlu
Zzo6ZGF0YSByZXR1cm5zIGEgY29uc3QgY2hhciogaW4gYWxsIGNhc2VzLgogaW5saW5lIGNoYXIq
IEdldERhdGFJbXBsKHN0ZDo6c3RyaW5nJiBzLCAgLy8gTk9MSU5UKHJ1bnRpbWUvcmVmZXJlbmNl
cykKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQpIG5vZXhjZXB0IHsKICAgcmV0dXJuICZz
WzBdOwpAQCAtMzc5LDY0ICszNzksNzAgQEAgY2xhc3MgU3BhbiB7CiAgIC8vCiAgIC8vIFJldHVy
bnMgYSByZWZlcmVuY2UgdG8gdGhlIGkndGggZWxlbWVudCBvZiB0aGlzIHNwYW4uCiAgIGNvbnN0
ZXhwciByZWZlcmVuY2UgYXQoc2l6ZV90eXBlIGkpIGNvbnN0IHsKLSAgICByZXR1cm4gQUJTTF9Q
UkVESUNUX1RSVUUoaSA8IHNpemUoKSkKLSAgICAgICAgICAgICAgID8gcHRyX1tpXQorICAgIHJl
dHVybiBBQlNMX1BSRURJQ1RfVFJVRShpIDwgc2l6ZSgpKSAgLy8KKyAgICAgICAgICAgICAgID8g
KihkYXRhKCkgKyBpKQogICAgICAgICAgICAgICAgOiAoYmFzZV9pbnRlcm5hbDo6VGhyb3dTdGRP
dXRPZlJhbmdlKAogICAgICAgICAgICAgICAgICAgICAgICJTcGFuOjphdCBmYWlsZWQgYm91bmRz
IGNoZWNrIiksCi0gICAgICAgICAgICAgICAgICBwdHJfW2ldKTsKKyAgICAgICAgICAgICAgICAg
ICooZGF0YSgpICsgaSkpOwogICB9CiAKICAgLy8gU3Bhbjo6ZnJvbnQoKQogICAvLwogICAvLyBS
ZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoaXMgc3Bhbi4KLSAg
cmVmZXJlbmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gQUJTTF9BU1NFUlQoc2l6
ZSgpID4gMCksIHB0cl9bMF07IH0KKyAgY29uc3RleHByIHJlZmVyZW5jZSBmcm9udCgpIGNvbnN0
IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gQUJTTF9BU1NFUlQoc2l6ZSgpID4gMCksICpkYXRhKCk7
CisgIH0KIAogICAvLyBTcGFuOjpiYWNrKCkKICAgLy8KICAgLy8gUmV0dXJucyBhIHJlZmVyZW5j
ZSB0byB0aGUgbGFzdCBlbGVtZW50IG9mIHRoaXMgc3Bhbi4KLSAgcmVmZXJlbmNlIGJhY2soKSBj
b25zdCBub2V4Y2VwdCB7Ci0gICAgcmV0dXJuIEFCU0xfQVNTRVJUKHNpemUoKSA+IDApLCBwdHJf
W3NpemUoKSAtIDFdOworICBjb25zdGV4cHIgcmVmZXJlbmNlIGJhY2soKSBjb25zdCBub2V4Y2Vw
dCB7CisgICAgcmV0dXJuIEFCU0xfQVNTRVJUKHNpemUoKSA+IDApLCAqKGRhdGEoKSArIHNpemUo
KSAtIDEpOwogICB9CiAKICAgLy8gU3Bhbjo6YmVnaW4oKQogICAvLwogICAvLyBSZXR1cm5zIGFu
IGl0ZXJhdG9yIHRvIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoaXMgc3Bhbi4KLSAgY29uc3RleHBy
IGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcHRyXzsgfQorICBjb25z
dGV4cHIgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBkYXRhKCk7IH0K
IAogICAvLyBTcGFuOjpjYmVnaW4oKQogICAvLwogICAvLyBSZXR1cm5zIGEgY29uc3QgaXRlcmF0
b3IgdG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhpcyBzcGFuLgotICBjb25zdGV4cHIgY29uc3Rf
aXRlcmF0b3IgY2JlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcHRyXzsgfQorICBjb25z
dGV4cHIgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gYmVn
aW4oKTsgfQogCiAgIC8vIFNwYW46OmVuZCgpCiAgIC8vCiAgIC8vIFJldHVybnMgYW4gaXRlcmF0
b3IgdG8gdGhlIGxhc3QgZWxlbWVudCBvZiB0aGlzIHNwYW4uCi0gIGl0ZXJhdG9yIGVuZCgpIGNv
bnN0IG5vZXhjZXB0IHsgcmV0dXJuIHB0cl8gKyBsZW5fOyB9CisgIGNvbnN0ZXhwciBpdGVyYXRv
ciBlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBkYXRhKCkgKyBzaXplKCk7IH0KIAogICAv
LyBTcGFuOjpjZW5kKCkKICAgLy8KICAgLy8gUmV0dXJucyBhIGNvbnN0IGl0ZXJhdG9yIHRvIHRo
ZSBsYXN0IGVsZW1lbnQgb2YgdGhpcyBzcGFuLgotICBjb25zdF9pdGVyYXRvciBjZW5kKCkgY29u
c3Qgbm9leGNlcHQgeyByZXR1cm4gZW5kKCk7IH0KKyAgY29uc3RleHByIGNvbnN0X2l0ZXJhdG9y
IGNlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBlbmQoKTsgfQogCiAgIC8vIFNwYW46OnJi
ZWdpbigpCiAgIC8vCiAgIC8vIFJldHVybnMgYSByZXZlcnNlIGl0ZXJhdG9yIHN0YXJ0aW5nIGF0
IHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhpcyBzcGFuLgotICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdp
bigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9Cisg
IGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsKKyAg
ICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7CisgIH0KIAogICAvLyBTcGFuOjpjcmJl
Z2luKCkKICAgLy8KICAgLy8gUmV0dXJucyBhIHJldmVyc2UgY29uc3QgaXRlcmF0b3Igc3RhcnRp
bmcgYXQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGlzIHNwYW4uCi0gIGNvbnN0X3JldmVyc2VfaXRl
cmF0b3IgY3JiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJiZWdpbigpOyB9CisgIGNv
bnN0ZXhwciBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7
IHJldHVybiByYmVnaW4oKTsgfQogCiAgIC8vIFNwYW46OnJlbmQoKQogICAvLwogICAvLyBSZXR1
cm5zIGEgcmV2ZXJzZSBpdGVyYXRvciBzdGFydGluZyBhdCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0
aGlzIHNwYW4uCi0gIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0
dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KKyAgY29uc3RleHByIHJldmVyc2VfaXRl
cmF0b3IgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsKKyAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRv
cihiZWdpbigpKTsKKyAgfQogCiAgIC8vIFNwYW46OmNyZW5kKCkKICAgLy8KICAgLy8gUmV0dXJu
cyBhIHJldmVyc2UgaXRlcmF0b3Igc3RhcnRpbmcgYXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhp
cyBzcGFuLgotICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyZW5kKCkgY29uc3Qgbm9leGNlcHQg
eyByZXR1cm4gcmVuZCgpOyB9CisgIGNvbnN0ZXhwciBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNy
ZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmVuZCgpOyB9CiAKICAgLy8gU3BhbiBtdXRh
dGlvbnMKIApAQCAtNDQ0LDcgKzQ1MCw3IEBAIGNsYXNzIFNwYW4gewogICAvLwogICAvLyBSZW1v
dmVzIHRoZSBmaXJzdCBgbmAgZWxlbWVudHMgZnJvbSB0aGUgc3Bhbi4KICAgdm9pZCByZW1vdmVf
cHJlZml4KHNpemVfdHlwZSBuKSBub2V4Y2VwdCB7Ci0gICAgYXNzZXJ0KGxlbl8gPj0gbik7Cisg
ICAgYXNzZXJ0KHNpemUoKSA+PSBuKTsKICAgICBwdHJfICs9IG47CiAgICAgbGVuXyAtPSBuOwog
ICB9CkBAIC00NTMsNyArNDU5LDcgQEAgY2xhc3MgU3BhbiB7CiAgIC8vCiAgIC8vIFJlbW92ZXMg
dGhlIGxhc3QgYG5gIGVsZW1lbnRzIGZyb20gdGhlIHNwYW4uCiAgIHZvaWQgcmVtb3ZlX3N1ZmZp
eChzaXplX3R5cGUgbikgbm9leGNlcHQgewotICAgIGFzc2VydChsZW5fID49IG4pOworICAgIGFz
c2VydChzaXplKCkgPj0gbik7CiAgICAgbGVuXyAtPSBuOwogICB9CiAKQEAgLTQ3NCwxMSArNDgw
LDE4IEBAIGNsYXNzIFNwYW4gewogICAvLyAgIGFic2w6Ok1ha2VTcGFuKHZlYykuc3Vic3Bhbig0
KTsgICAgIC8vIHt9CiAgIC8vICAgYWJzbDo6TWFrZVNwYW4odmVjKS5zdWJzcGFuKDUpOyAgICAg
Ly8gdGhyb3dzIHN0ZDo6b3V0X29mX3JhbmdlCiAgIGNvbnN0ZXhwciBTcGFuIHN1YnNwYW4oc2l6
ZV90eXBlIHBvcyA9IDAsIHNpemVfdHlwZSBsZW4gPSBucG9zKSBjb25zdCB7Ci0gICAgcmV0dXJu
IChwb3MgPD0gbGVuXykKLSAgICAgICAgICAgICAgID8gU3BhbihwdHJfICsgcG9zLCBzcGFuX2lu
dGVybmFsOjpNaW4obGVuXyAtIHBvcywgbGVuKSkKKyAgICByZXR1cm4gKHBvcyA8PSBzaXplKCkp
CisgICAgICAgICAgICAgICA/IFNwYW4oZGF0YSgpICsgcG9zLCBzcGFuX2ludGVybmFsOjpNaW4o
c2l6ZSgpIC0gcG9zLCBsZW4pKQogICAgICAgICAgICAgICAgOiAoYmFzZV9pbnRlcm5hbDo6VGhy
b3dTdGRPdXRPZlJhbmdlKCJwb3MgPiBzaXplKCkiKSwgU3BhbigpKTsKICAgfQogCisgIC8vIFN1
cHBvcnQgZm9yIGFic2w6Okhhc2guCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBIPgorICBmcmllbmQg
SCBBYnNsSGFzaFZhbHVlKEggaCwgU3BhbiB2KSB7CisgICAgcmV0dXJuIEg6OmNvbWJpbmUoSDo6
Y29tYmluZV9jb250aWd1b3VzKHN0ZDo6bW92ZShoKSwgdi5kYXRhKCksIHYuc2l6ZSgpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICB2LnNpemUoKSk7CisgIH0KKwogIHByaXZhdGU6CiAgIHBvaW50
ZXIgcHRyXzsKICAgc2l6ZV90eXBlIGxlbl87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFu
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9zcGFuX3Rlc3QuY2MKaW5kZXggZmJjZTdlODc0Nzk4NDFj
Zjg5MTM4MDI2OTkzMjM4YzM5OTg2MjE2OC4uYmQ3MzlmZjJhMDcwYTZmY2VjMWE2NGVhMTMzZDFi
ODFmMDBjZmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvc3Bhbl90ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3R5cGVzL3NwYW5fdGVzdC5jYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImFic2wv
YmFzZS9pbnRlcm5hbC9leGNlcHRpb25fdGVzdGluZy5oIgogI2luY2x1ZGUgImFic2wvY29udGFp
bmVyL2ZpeGVkX2FycmF5LmgiCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0
b3IuaCIKKyNpbmNsdWRlICJhYnNsL2hhc2gvaGFzaF90ZXN0aW5nLmgiCiAjaW5jbHVkZSAiYWJz
bC9zdHJpbmdzL3N0cl9jYXQuaCIKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5
cGVzL3ZhcmlhbnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnQuaAppbmRleCAxN2UwNjM0ZGUwMzc0
NjQzMzY3NGU5OWVjMDc3YjZmNzczZThiMmQ5Li4yZjc4NzIyZjhiN2M5NTZkNmQxNzZlOTAyZDRl
MDA5Y2E5Njk0YTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXMvdmFyaWFudC5oCkBAIC00MTQsOSArNDE0LDkgQEAgY29uc3RleHByIGFic2w6OmFk
ZF9wb2ludGVyX3Q8Y29uc3QgVD4gZ2V0X2lmKAogLy8gICB9OwogLy8KIC8vICAgLy8gRGVjbGFy
ZSBvdXIgdmFyaWFudCwgYW5kIGNhbGwgYGFic2w6OnZpc2l0KClgIG9uIGl0LgotLy8gICBzdGQ6
OnZhcmlhbnQ8aW50LCBzdGQ6OnN0cmluZz4gZm9vID0gc3RkOjpzdHJpbmcoImZvbyIpOworLy8g
ICBhYnNsOjp2YXJpYW50PGludCwgc3RkOjpzdHJpbmc+IGZvbyA9IHN0ZDo6c3RyaW5nKCJmb28i
KTsKIC8vICAgR2V0VmFyaWFudCB2aXNpdG9yOwotLy8gICBzdGQ6OnZpc2l0KHZpc2l0b3IsIGZv
byk7ICAvLyBQcmludHMgYFRoZSB2YXJpYW50J3MgdmFsdWUgaXM6IGZvbycKKy8vICAgYWJzbDo6
dmlzaXQodmlzaXRvciwgZm9vKTsgIC8vIFByaW50cyBgVGhlIHZhcmlhbnQncyB2YWx1ZSBpczog
Zm9vJwogdGVtcGxhdGUgPHR5cGVuYW1lIFZpc2l0b3IsIHR5cGVuYW1lLi4uIFZhcmlhbnRzPgog
dmFyaWFudF9pbnRlcm5hbDo6VmlzaXRSZXN1bHQ8VmlzaXRvciwgVmFyaWFudHMuLi4+IHZpc2l0
KFZpc2l0b3ImJiB2aXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFyaWFudHMmJi4uLiB2YXJzKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlcy92YXJpYW50X2V4Y2VwdGlvbl9zYWZldHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3Zh
cmlhbnRfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNjCmluZGV4IDI3YzBiOTZjYTZmMzQwODUwYjAy
NTFiYzZlOTE2ZDM3Y2RmMTE2NDUuLjU4NDM2ZjA3Yjg0Mzc0OGU3YTYzZDExYzgyOWUxNmY1NTUx
YTZkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfZXhjZXB0aW9uX3NhZmV0eV90
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfZXhjZXB0aW9uX3NhZmV0eV90ZXN0LmNj
CkBAIC01MywxMyArNTMsMTMgQEAgdm9pZCBUb1ZhbHVlbGVzc0J5RXhjZXB0aW9uKFRocm93aW5n
VmFyaWFudCYgdikgeyAgLy8gTk9MSU5UCiAgIHRyeSB7CiAgICAgdi5lbXBsYWNlPFRocm93ZXI+
KCk7CiAgICAgdi5lbXBsYWNlPFRocm93ZXI+KEV4Y2VwdGlvbk9uQ29udmVyc2lvbjxUaHJvd2Vy
PigpKTsKLSAgfSBjYXRjaCAoQ29udmVyc2lvbkV4Y2VwdGlvbiYgLyplKi8pIHsKKyAgfSBjYXRj
aCAoY29uc3QgQ29udmVyc2lvbkV4Y2VwdGlvbiYpIHsKICAgICAvLyBUaGlzIHNwYWNlIGludGVu
dGlvbmFsbHkgbGVmdCBibGFuay4KICAgfQogfQogCiAvLyBDaGVjayB0aGF0IHZhcmlhbnQgaXMg
c3RpbGwgaW4gYSB1c2FibGUgc3RhdGUgYWZ0ZXIgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KLXRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBDaGVja0ludmFyaWFudHMoVGhyb3dpbmdWYXJpYW50KiB2
KSB7Cit0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgVmFyaWFudEludmFyaWFudHMoVGhyb3dpbmdW
YXJpYW50KiB2KSB7CiAgIHVzaW5nIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmU7CiAgIHVzaW5n
IHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3M7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHQgQ2hlY2tJbnZhcmlhbnRzKFRocm93aW5nVmFyaWFudCogdikgewog
ICAgIGF1dG8gdW51c2VkID0gYWJzbDo6Z2V0PFRocm93ZXI+KCp2KTsKICAgICBzdGF0aWNfY2Fz
dDx2b2lkPih1bnVzZWQpOwogICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIlZhcmlh
bnQgc2hvdWxkIG5vdCBjb250YWluIFRocm93ZXIiOwotICB9IGNhdGNoIChhYnNsOjpiYWRfdmFy
aWFudF9hY2Nlc3MpIHsKKyAgfSBjYXRjaCAoY29uc3QgYWJzbDo6YmFkX3ZhcmlhbnRfYWNjZXNz
JikgewogICB9IGNhdGNoICguLi4pIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8
ICJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB0aHJvdyBmcm9tIGFic2w6OmdldCI7CiAgIH0KQEAgLTIx
Myw4ICsyMTMsOCBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBDb3B5QXNzaWdu
KSB7CiAgICAgICAgIE1ha2VFeGNlcHRpb25TYWZldHlUZXN0ZXIoKQogICAgICAgICAgICAgLldp
dGhJbml0aWFsVmFsdWUoV2l0aFRocm93ZXIoKSkKICAgICAgICAgICAgIC5XaXRoT3BlcmF0aW9u
KFsmcmhzXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeyAqbGhzID0gcmhzOyB9KTsKLSAgICBFWFBF
Q1RfVFJVRSh0ZXN0ZXIuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzKS5UZXN0KCkpOwot
ICAgIEVYUEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aEludmFyaWFudHMoc3Ryb25nX2d1YXJhbnRlZSku
VGVzdCgpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0ZXIuV2l0aENvbnRyYWN0cyhWYXJpYW50SW52
YXJpYW50cykuVGVzdCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdGVyLldpdGhDb250cmFjdHMo
c3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAgfQogICB7CiAgICAgY29uc3QgVGhyb3dpbmdW
YXJpYW50IHJocyhFeHBlY3RlZFRocm93ZXJWZWMoKSk7CkBAIC0yMjIsOCArMjIyLDggQEAgVEVT
VChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwgQ29weUFzc2lnbikgewogICAgICAgICBNYWtl
RXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFdp
dGhUaHJvd2VyVmVjKCkpCiAgICAgICAgICAgICAuV2l0aE9wZXJhdGlvbihbJnJoc10oVGhyb3dp
bmdWYXJpYW50KiBsaHMpIHsgKmxocyA9IHJoczsgfSk7Ci0gICAgRVhQRUNUX1RSVUUodGVzdGVy
LldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50cykuVGVzdCgpKTsKLSAgICBFWFBFQ1RfRkFM
U0UodGVzdGVyLldpdGhJbnZhcmlhbnRzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAg
RVhQRUNUX1RSVUUodGVzdGVyLldpdGhDb250cmFjdHMoVmFyaWFudEludmFyaWFudHMpLlRlc3Qo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3Rlci5XaXRoQ29udHJhY3RzKHN0cm9uZ19ndWFyYW50
ZWUpLlRlc3QoKSk7CiAgIH0KICAgLy8gbGlic3RkYysrIHN0ZDo6dmFyaWFudCBoYXMgYnVncyBv
biBjb3B5IGFzc2lnbm1lbnQgcmVnYXJkaW5nIGV4Y2VwdGlvbgogICAvLyBzYWZldHkuCkBAIC0y
NTEsMTIgKzI1MSwxMiBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBDb3B5QXNz
aWduKSB7CiAgICAgICAgICAgICAuV2l0aEluaXRpYWxWYWx1ZShXaXRoQ29weU5vVGhyb3coKSkK
ICAgICAgICAgICAgIC5XaXRoT3BlcmF0aW9uKFsmcmhzXShUaHJvd2luZ1ZhcmlhbnQqIGxocykg
eyAqbGhzID0gcmhzOyB9KTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0ZXIKLSAgICAgICAgICAgICAg
ICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVzc19ieV9leGNl
cHRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAg
ICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVzc19i
eV9leGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAg
ICAgICAgICAgICAgICAgICAgLlRlc3QoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRlc3Rlci5XaXRo
SW52YXJpYW50cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOworICAgIEVYUEVDVF9GQUxTRSh0
ZXN0ZXIuV2l0aENvbnRyYWN0cyhzdHJvbmdfZ3VhcmFudGVlKS5UZXN0KCkpOwogICB9CiAjZW5k
aWYgIC8vICEoZGVmaW5lZChBQlNMX0hBVkVfU1REX1ZBUklBTlQpICYmIGRlZmluZWQoX19HTElC
Q1hYX18pKQogICB7CkBAIC0yNjgsNyArMjY4LDcgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2Fm
ZXR5VGVzdCwgQ29weUFzc2lnbikgewogICAgIGNvbnN0IFRocm93aW5nVmFyaWFudCByaHMoTW92
ZU5vdGhyb3d7fSk7CiAgICAgRVhQRUNUX1RSVUUoTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3Rlcigp
CiAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFdpdGhUaHJvd2VyKCkpCi0g
ICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0ludmFyaWFudHMsIHN0cm9u
Z19ndWFyYW50ZWUpCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJ
bnZhcmlhbnRzLCBzdHJvbmdfZ3VhcmFudGVlKQogICAgICAgICAgICAgICAgICAgICAuVGVzdChb
JnJoc10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsgKmxocyA9IHJoczsgfSkpOwogICB9CiB9CkBA
IC0zMDQsMTEgKzMwNCwxMSBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBNb3Zl
QXNzaWduKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqbGhzID0gc3RkOjptb3ZlKGNvcHkp
OwogICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgIEVYUEVDVF9UUlVFKHRlc3RlcgotICAg
ICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoCi0gICAgICAgICAgICAgICAgICAgICAg
ICBDaGVja0ludmFyaWFudHMsCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKAor
ICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFudEludmFyaWFudHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBbJl0oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsgcmV0dXJuIGxocy0+aW5kZXgo
KSA9PSBqOyB9KQogICAgICAgICAgICAgICAgICAgICAuVGVzdCgpKTsKLSAgICBFWFBFQ1RfRkFM
U0UodGVzdGVyLldpdGhJbnZhcmlhbnRzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHRlc3Rlci5XaXRoQ29udHJhY3RzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3Qo
KSk7CiAgIH0KICAgewogICAgIC8vIC0gb3RoZXJ3aXNlIChpbmRleCgpICE9IGopLCBlcXVpdmFs
ZW50IHRvCkBAIC0zMTgsMTAgKzMxOCwxMCBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlU
ZXN0LCBNb3ZlQXNzaWduKSB7CiAgICAgVGhyb3dpbmdWYXJpYW50IHJocyhDb3B5Tm90aHJvd3t9
KTsKICAgICBFWFBFQ1RfVFJVRShNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAg
ICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoV2l0aFRocm93ZXIoKSkKLSAgICAgICAgICAg
ICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50cywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVzc19ieV9l
eGNlcHRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAg
ICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVz
c19ieV9leGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkK
ICAgICAgICAgICAgICAgICAgICAgLlRlc3QoWyZdKFRocm93aW5nVmFyaWFudCogbGhzKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byBjb3B5ID0gcmhzOwogICAgICAgICAgICAgICAgICAg
ICAgICpsaHMgPSBzdGQ6Om1vdmUoY29weSk7CkBAIC0zNDcsMTIgKzM0NywxMiBAQCBURVNUKFZh
cmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBWYWx1ZUFzc2lnbikgewogICAgICAgICAgICAgLldp
dGhJbml0aWFsVmFsdWUoV2l0aFRocm93ZXIoKSkKICAgICAgICAgICAgIC5XaXRoT3BlcmF0aW9u
KFtyaHNdKFRocm93aW5nVmFyaWFudCogbGhzKSB7ICpsaHMgPSByaHM7IH0pOwogICAgIEVYUEVD
VF9UUlVFKGNvcHlfdGVzdGVyCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhD
aGVja0ludmFyaWFudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXShU
aHJvd2luZ1ZhcmlhbnQqIGxocykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gIWxocy0+dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250
cmFjdHMoVmFyaWFudEludmFyaWFudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICFsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRpb24oKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgLlRl
c3QoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGNvcHlfdGVzdGVyLldpdGhJbnZhcmlhbnRzKHN0cm9u
Z19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNvcHlfdGVzdGVyLldpdGhD
b250cmFjdHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAgICAvLyBtb3ZlIGFzc2lnbgog
ICAgIGF1dG8gbW92ZV90ZXN0ZXIgPSBNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFdpdGhUaHJvd2VyKCkpCkBA
IC0zNjEsMTMgKzM2MSwxMyBAQCBURVNUKFZhcmlhbnRFeGNlcHRpb25TYWZldHlUZXN0LCBWYWx1
ZUFzc2lnbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGhzID0gc3RkOjptb3Zl
KGNvcHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgRVhQRUNUX1RSVUUo
bW92ZV90ZXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrSW52
YXJpYW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93aW5n
VmFyaWFudCogbGhzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAhbGhzLT52YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhW
YXJpYW50SW52YXJpYW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10o
VGhyb3dpbmdWYXJpYW50KiBsaHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gIWxocy0+dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAuVGVzdCgpKTsK
IAotICAgIEVYUEVDVF9GQUxTRShtb3ZlX3Rlc3Rlci5XaXRoSW52YXJpYW50cyhzdHJvbmdfZ3Vh
cmFudGVlKS5UZXN0KCkpOworICAgIEVYUEVDVF9GQUxTRShtb3ZlX3Rlc3Rlci5XaXRoQ29udHJh
Y3RzKHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CiAgIH0KICAgLy8gT3RoZXJ3aXNlICgqdGhp
cyBob2xkcyBzb21ldGhpbmcgZWxzZSksIGlmIGlzX25vdGhyb3dfY29uc3RydWN0aWJsZV92PFRq
LAogICAvLyBUPiB8fCAhaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGVfdjxUaj4gaXMgdHJ1
ZSwgZXF1aXZhbGVudCB0bwpAQCAtNDAwLDEyICs0MDAsMTIgQEAgVEVTVChWYXJpYW50RXhjZXB0
aW9uU2FmZXR5VGVzdCwgVmFsdWVBc3NpZ24pIHsKICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZh
bHVlKFdpdGhDb3B5Tm9UaHJvdygpKQogICAgICAgICAgICAgLldpdGhPcGVyYXRpb24oWyZyaHNd
KFRocm93aW5nVmFyaWFudCogbGhzKSB7ICpsaHMgPSByaHM7IH0pOwogICAgIEVYUEVDVF9UUlVF
KGNvcHlfdGVzdGVyCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0lu
dmFyaWFudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXShUaHJvd2lu
Z1ZhcmlhbnQqIGxocykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbGhzLT52YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhW
YXJpYW50SW52YXJpYW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10o
VGhyb3dpbmdWYXJpYW50KiBsaHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbGhzLT52YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgIC5UZXN0KCkpOwot
ICAgIEVYUEVDVF9GQUxTRShjb3B5X3Rlc3Rlci5XaXRoSW52YXJpYW50cyhzdHJvbmdfZ3VhcmFu
dGVlKS5UZXN0KCkpOworICAgIEVYUEVDVF9GQUxTRShjb3B5X3Rlc3Rlci5XaXRoQ29udHJhY3Rz
KHN0cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CiAgICAgLy8gbW92ZQogICAgIGF1dG8gbW92ZV90
ZXN0ZXIgPSBNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFdpdGhDb3B5Tm9UaHJvdygpKQpAQCAtNDEzLDEyICs0
MTMsMTIgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwgVmFsdWVBc3NpZ24pIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxocyA9IEV4cGVjdGVkVGhyb3dlcih0ZXN0
aW5nOjpub3Rocm93X2N0b3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAg
RVhQRUNUX1RSVUUobW92ZV90ZXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlh
bnRzKENoZWNrSW52YXJpYW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtdKFRocm93aW5nVmFyaWFudCogbGhzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRpb24oKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgIC5XaXRo
Q29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsaHMtPnZhbHVlbGVzc19ieV9leGNlcHRpb24oKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAg
LlRlc3QoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG1vdmVfdGVzdGVyLldpdGhJbnZhcmlhbnRzKHN0
cm9uZ19ndWFyYW50ZWUpLlRlc3QoKSk7CisgICAgRVhQRUNUX0ZBTFNFKG1vdmVfdGVzdGVyLldp
dGhDb250cmFjdHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgpKTsKICAgfQogICAvLyBPdGhlcndp
c2UgKGlmIGlzX25vdGhyb3dfY29uc3RydWN0aWJsZV92PFRqLCBUPiA9PSBmYWxzZSAmJgogICAv
LyBpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxUaj4gPT0gdHJ1ZSksCkBAIC00MzIsNyAr
NDMyLDcgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9uU2FmZXR5VGVzdCwgVmFsdWVBc3NpZ24pIHsK
ICAgICBNb3ZlTm90aHJvdyByaHM7CiAgICAgRVhQRUNUX1RSVUUoTWFrZUV4Y2VwdGlvblNhZmV0
eVRlc3RlcigpCiAgICAgICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFdpdGhUaHJv
d2VyKCkpCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0ludmFyaWFu
dHMsIHN0cm9uZ19ndWFyYW50ZWUpCisgICAgICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3Rz
KFZhcmlhbnRJbnZhcmlhbnRzLCBzdHJvbmdfZ3VhcmFudGVlKQogICAgICAgICAgICAgICAgICAg
ICAuVGVzdChbJnJoc10oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsgKmxocyA9IHJoczsgfSkpOwog
ICB9CiAjZW5kaWYgIC8vICEoZGVmaW5lZChBQlNMX0hBVkVfU1REX1ZBUklBTlQpICYmIGRlZmlu
ZWQoX19HTElCQ1hYX18pKQpAQCAtNDUwLDEyICs0NTAsMTIgQEAgVEVTVChWYXJpYW50RXhjZXB0
aW9uU2FmZXR5VGVzdCwgRW1wbGFjZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgdi0+ZW1w
bGFjZTxUaHJvd2VyPihhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICBFWFBF
Q1RfVFJVRSh0ZXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNr
SW52YXJpYW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRocm93
aW5nVmFyaWFudCogdikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdi0+dmFsdWVsZXNzX2J5X2V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoVmFy
aWFudEludmFyaWFudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKFRo
cm93aW5nVmFyaWFudCogdikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB2LT52YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgIC5UZXN0KCkpOwotICAgIEVY
UEVDVF9GQUxTRSh0ZXN0ZXIuV2l0aEludmFyaWFudHMoc3Ryb25nX2d1YXJhbnRlZSkuVGVzdCgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdGVyLldpdGhDb250cmFjdHMoc3Ryb25nX2d1YXJhbnRl
ZSkuVGVzdCgpKTsKICAgfQogfQogCkBAIC00NzIsNyArNDcyLDcgQEAgVEVTVChWYXJpYW50RXhj
ZXB0aW9uU2FmZXR5VGVzdCwgU3dhcCkgewogICAgIFRocm93aW5nVmFyaWFudCByaHMgPSBFeHBl
Y3RlZFRocm93ZXIoKTsKICAgICBFWFBFQ1RfVFJVRShNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVy
KCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoV2l0aFRocm93ZXIoKSkK
LSAgICAgICAgICAgICAgICAgICAgLldpdGhJbnZhcmlhbnRzKENoZWNrSW52YXJpYW50cykKKyAg
ICAgICAgICAgICAgICAgICAgLldpdGhDb250cmFjdHMoVmFyaWFudEludmFyaWFudHMpCiAgICAg
ICAgICAgICAgICAgICAgIC5UZXN0KFsmXShUaHJvd2luZ1ZhcmlhbnQqIGxocykgewogICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gY29weSA9IHJoczsKICAgICAgICAgICAgICAgICAgICAgICBs
aHMtPnN3YXAoY29weSk7CkBAIC00ODYsNyArNDg2LDcgQEAgVEVTVChWYXJpYW50RXhjZXB0aW9u
U2FmZXR5VGVzdCwgU3dhcCkgewogICAgIFRocm93aW5nVmFyaWFudCByaHMgPSBFeHBlY3RlZFRo
cm93ZXIoKTsKICAgICBFWFBFQ1RfVFJVRShNYWtlRXhjZXB0aW9uU2FmZXR5VGVzdGVyKCkKICAg
ICAgICAgICAgICAgICAgICAgLldpdGhJbml0aWFsVmFsdWUoV2l0aENvcHlOb1Rocm93KCkpCi0g
ICAgICAgICAgICAgICAgICAgIC5XaXRoSW52YXJpYW50cyhDaGVja0ludmFyaWFudHMpCisgICAg
ICAgICAgICAgICAgICAgIC5XaXRoQ29udHJhY3RzKFZhcmlhbnRJbnZhcmlhbnRzKQogICAgICAg
ICAgICAgICAgICAgICAuVGVzdChbJl0oVGhyb3dpbmdWYXJpYW50KiBsaHMpIHsKICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvIGNvcHkgPSByaHM7CiAgICAgICAgICAgICAgICAgICAgICAgbGhz
LT5zd2FwKGNvcHkpOwpAQCAtNDk2LDcgKzQ5Niw3IEBAIFRFU1QoVmFyaWFudEV4Y2VwdGlvblNh
ZmV0eVRlc3QsIFN3YXApIHsKICAgICBUaHJvd2luZ1ZhcmlhbnQgcmhzID0gRXhwZWN0ZWRUaHJv
d2VyKCk7CiAgICAgRVhQRUNUX1RSVUUoTWFrZUV4Y2VwdGlvblNhZmV0eVRlc3RlcigpCiAgICAg
ICAgICAgICAgICAgICAgIC5XaXRoSW5pdGlhbFZhbHVlKFdpdGhDb3B5Tm9UaHJvdygpKQotICAg
ICAgICAgICAgICAgICAgICAuV2l0aEludmFyaWFudHMoQ2hlY2tJbnZhcmlhbnRzKQorICAgICAg
ICAgICAgICAgICAgICAuV2l0aENvbnRyYWN0cyhWYXJpYW50SW52YXJpYW50cykKICAgICAgICAg
ICAgICAgICAgICAgLlRlc3QoWyZdKFRocm93aW5nVmFyaWFudCogbGhzKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBjb3B5ID0gcmhzOwogICAgICAgICAgICAgICAgICAgICAgIGNvcHku
c3dhcCgqbGhzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzL3ZhcmlhbnRfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3R5cGVzL3ZhcmlhbnRfdGVzdC5jYwppbmRleCAyNjJiZDk0NDZjMTg0MWE1NzA3MTU3NDVj
MzQzNGVlMWI4ZTE5Zjk1Li5iZmI4YmQ3YTAyMjNmM2NkOTgzNGU0NzY0ZGM1YTczYmMxNjY0ZGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy92YXJpYW50X3Rlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlw
ZXMvdmFyaWFudF90ZXN0LmNjCkBAIC00MDMsNyArNDAzLDcgQEAgc3RydWN0IGlzX3RyaXZpYWxs
eV9tb3ZlX2NvbnN0cnVjdGlibGUKIAogdGVtcGxhdGUgPGNsYXNzIFQ+CiBzdHJ1Y3QgaXNfdHJp
dmlhbGx5X21vdmVfYXNzaWduYWJsZQotICAgIDogc3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8U2lu
Z2xlVW5pb248VD4+Ojp0eXBlIHt9OworICAgIDogYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPFNp
bmdsZVVuaW9uPFQ+Pjo6dHlwZSB7fTsKIAogVEVTVChWYXJpYW50VGVzdCwgTm90aHJvd01vdmVD
b25zdHJ1Y3RpYmxlKSB7CiAgIC8vIFZlcmlmeSB0aGF0IHZhcmlhbnQgaXMgbm90aHJvdyBtb3Zl
IGNvbnN0cnVjdGlibGUgaWZmIGl0cyB0ZW1wbGF0ZQpAQCAtMjQzOSwxNCArMjQzOSwxNCBAQCBU
RVNUKFZhcmlhbnRUZXN0LCBUZXN0TW92ZUNvbnZlcnNpb25WaWFDb252ZXJ0VmFyaWFudFRvKSB7
CiAKIFRFU1QoVmFyaWFudFRlc3QsIFRlc3RDb3B5QW5kTW92ZVR5cGVUcmFpdHMpIHsKICAgRVhQ
RUNUX1RSVUUoc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8dmFyaWFudDxzdGQ6OnN0cmluZz4+
Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9UUlVFKHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPHZhcmlhbnQ8
c3RkOjpzdHJpbmc+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShhYnNsOjppc19jb3B5X2Fzc2ln
bmFibGU8dmFyaWFudDxzdGQ6OnN0cmluZz4+Ojp2YWx1ZSk7CiAgIEVYUEVDVF9UUlVFKHN0ZDo6
aXNfbW92ZV9jb25zdHJ1Y3RpYmxlPHZhcmlhbnQ8c3RkOjpzdHJpbmc+Pjo6dmFsdWUpOwotICBF
WFBFQ1RfVFJVRShzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTx2YXJpYW50PHN0ZDo6c3RyaW5nPj46
OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoYWJzbDo6aXNfbW92ZV9hc3NpZ25hYmxlPHZhcmlhbnQ8
c3RkOjpzdHJpbmc+Pjo6dmFsdWUpOwogICBFWFBFQ1RfVFJVRShzdGQ6OmlzX21vdmVfY29uc3Ry
dWN0aWJsZTx2YXJpYW50PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pj46OnZhbHVlKTsKLSAgRVhQRUNU
X1RSVUUoc3RkOjppc19tb3ZlX2Fzc2lnbmFibGU8dmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8aW50
Pj4+Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKGFic2w6OmlzX21vdmVfYXNzaWduYWJsZTx2YXJp
YW50PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pj46OnZhbHVlKTsKICAgRVhQRUNUX0ZBTFNFKAogICAg
ICAgc3RkOjppc19jb3B5X2NvbnN0cnVjdGlibGU8dmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8aW50
Pj4+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9GQUxTRShzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTx2YXJp
YW50PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pj46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKGFic2w6
OmlzX2NvcHlfYXNzaWduYWJsZTx2YXJpYW50PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pj46OnZhbHVl
KTsKIAogICBFWFBFQ1RfRkFMU0UoCiAgICAgICBhYnNsOjppc190cml2aWFsbHlfY29weV9jb25z
dHJ1Y3RpYmxlPHZhcmlhbnQ8c3RkOjpzdHJpbmc+Pjo6dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdXRpbGl0eS91dGlsaXR5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxpdHkuaAppbmRleCBkNzM2
MDJjNDdkM2I2ZGExNjYzNTdmYmNkYzVkNDE1MTlkNjIzNTYxLi5hZWY0YmFhMDJkY2Q2N2FjZWIy
NTRmMGE5ZTRiZmYwMGRhNGNlNWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxpdHku
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC91dGlsaXR5L3V0aWxpdHkuaApAQCAtMjM1LDEzICsyMzUsMTMgQEAgYXV0
byBhcHBseV9oZWxwZXIoRnVuY3RvciYmIGZ1bmN0b3IsIFR1cGxlJiYgdCwgaW5kZXhfc2VxdWVu
Y2U8SW5kZXhlcy4uLj4pCiAvLyBFeGFtcGxlOgogLy8KIC8vICAgY2xhc3MgRm9ve3ZvaWQgQmFy
KGludCk7fTsKLS8vICAgdm9pZCB1c2VyX2Z1bmN0aW9uKGludCwgc3RkOjpzdHJpbmcpOworLy8g
ICB2b2lkIHVzZXJfZnVuY3Rpb24oaW50LCBzdHJpbmcpOwogLy8gICB2b2lkIHVzZXJfZnVuY3Rp
b24oc3RkOjp1bmlxdWVfcHRyPEZvbz4pOwogLy8KIC8vICAgaW50IG1haW4oKQogLy8gICB7Ci0v
LyAgICAgICBzdGQ6OnR1cGxlPGludCwgc3RkOjpzdHJpbmc+IHR1cGxlMSg0MiwgImJhciIpOwot
Ly8gICAgICAgLy8gSW52b2tlcyB0aGUgdXNlciBmdW5jdGlvbiBvdmVybG9hZCBvbiBpbnQsIHN0
ZDo6c3RyaW5nLgorLy8gICAgICAgc3RkOjp0dXBsZTxpbnQsIHN0cmluZz4gdHVwbGUxKDQyLCAi
YmFyIik7CisvLyAgICAgICAvLyBJbnZva2VzIHRoZSB1c2VyIGZ1bmN0aW9uIG92ZXJsb2FkIG9u
IGludCwgc3RyaW5nLgogLy8gICAgICAgYWJzbDo6YXBwbHkoJnVzZXJfZnVuY3Rpb24sIHR1cGxl
MSk7CiAvLwogLy8gICAgICAgYXV0byBmb28gPSBhYnNsOjptYWtlX3VuaXF1ZTxGb28+KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9BVVRI
T1JTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvQVVUSE9SUwpp
bmRleCA2YjBhZmQ4NjE4MTBmYWJmNWI2ZDUzZjMzNWI4ODU3OWUxMzdkNjQ3Li4xMjE2YjQ4ZDk1
OTA1NTYyY2Q2ZTFmZmU3OTdmMGM2M2VkMjNkOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9BVVRIT1JTCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0FVVEhPUlMKQEAgLTE2LDYgKzE2LDcgQEAgQ29k
eSBCYXJuZXMgPGNvbmNlcHRnZW5lc2lzQGdtYWlsLmNvbT4KIENvbGluIFBsdW1iCiBEYXZpZCBQ
b3J0ZXIgPGRhdmlkQHBvcnRlci5tZT4KIERheCBCb295c2VuIDxkYXhAeW91bm93LmNvbT4KK0Rh
bmFpbCBLaXJvdiA8ZGtpcm92YnJvYWRzb2Z0QGdtYWlsLmNvbT4KIERtaXRyeSBMaXppbiA8c2Rr
ZGltb25AZ21haWwuY29tPgogRXJpYyBSZXNjb3JsYSwgUlRGTSBJbmMuIDxla3JAcnRmbS5jb20+
CiBGcmVkZXJpayBSaWVkZWwsIEZyb2dnIEdtYkggPGZyZWRlcmlrLnJpZWRlbEBmcm9nZy5pbz4K
QEAgLTQ3LDYgKzQ4LDcgQEAgUGVuZyBZdSA8eXVwZW5nMzIzQGdtYWlsLmNvbT4KIFJhZmFlbCBM
b3BleiBEaWV6IDxyYWZhbG9wZXpkaWV6QGdtYWlsLmNvbT4KIFJhbHBoIEdpbGVzIDxnaWxlc0Bn
aG9zdHNjcmlwdC5jb20+CiBSaWt1IFZvaXBpbyA8cmlrdS52b2lwaW9AbGluYXJvLm9yZz4KK1Jv
YmVydCBCYXJlcyA8cm9iZXJ0QGJhcmVzLm1lPgogUm9iZXJ0IE5hZ3kgPHJvYmVydC5uYWd5QGdt
YWlsLmNvbT4KIFJ5YW4gWW9ha3VtIDxyeW9ha3VtQHNrb2JhbHQuY29tPgogU2F0ZW5kZXIgU2Fy
b2hhIDxzc2Fyb2hhQHlhaG9vLmNvbT4KQEAgLTU2LDYgKzU4LDcgQEAgU2lsdml1IENhcmFnZWEg
PHNpbHZpdS5jcHBAZ21haWwuY29tPgogU3RlZmFuIEd1bGEgPHN0ZXdlZ0BnbWFpbC5jb20+CiBT
dGV2ZSBSZWlkIDxzcmVpZEBzZWEtdG8tc2t5Lm5ldD4KIFRhcnVuIENoYXdsYSA8dHJua3VtYXJj
aGF3bGFAZ21haWwuY29tPgorVWxhZHppc2xhdSBTdXNoYSA8bGFuZGJ5QGdtYWlsLmNvbT4KIFZs
YWRpbWlyIEJlbG9ib3JvZG92IDxWbGFkaW1pclRlY2hNYW5AZ21haWwuY29tPgogVmlja2VuIFNp
bW9uaWFuIDx2c2ltb25AZ21haWwuY29tPgogVmljdG9yIENvc3RhbiA8Y29zdGFuQGdtYWlsLmNv
bT4KQEAgLTcwLDYgKzczLDEwIEBAIFNlcmdpbyBHYXJjaWEgTXVyaWxsbyA8c2VyZ2lvLmdhcmNp
YS5tdXJpbGxvQGdtYWlsLmNvbT4KIE1heGltIFBhdmxvdiA8cGF2bGxvdm1heEBnbWFpbC5jb20+
CiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiBQaWFzeSBYdSA8eHo0MjE1
QGdtYWlsLmNvbT4KK1RvbWFzIFBvcGVsYSA8dG9tYXMucG9wZWxhQGdtYWlsLmNvbT4KK0phbiBH
cnVsaWNoIDxncnVsamFAZ21haWwuY29tPgorRWlrZSBSYXRoa2UgPGVyYXRoa2VAcmVkaGF0LmNv
bT4KK01pY2hlbCBQcm9tb25ldCA8bWljaGVsLnByb21vbmV0LjFAZ21haWwuY29tPgogCiAmeWV0
IExMQyA8KkBhbmR5ZXQuY29tPgogQWdvcmEgSU8gPCpAYWdvcmEuaW8+CkBAIC04MCw2ICs4Nyw3
IEBAIEdvb2dsZSBJbmMuIDwqQGdvb2dsZS5jb20+CiBIeXBlckNvbm5lY3QgSW5jLiA8KkBocGNu
dC5jb20+CiBMaWZlIE9uIEFpciBJbmMuIDwqQGxpZmVvbmFpci5jb20+CiBJbnRlbCBDb3Jwb3Jh
dGlvbiA8KkBpbnRlbC5jb20+CitNaWNyb3NvZnQgQ29ycG9yYXRpb24gPCpAbWljcm9zb2Z0LmNv
bT4KIE1JUFMgVGVjaG5vbG9naWVzIDwqQG1pcHMuY29tPgogTW96aWxsYSBGb3VuZGF0aW9uIDwq
QG1vemlsbGEuY29tPgogT3BlcmEgU29mdHdhcmUgQVNBIDwqQG9wZXJhLmNvbT4KQEAgLTk3LDQg
KzEwNSw1IEBAIFdpcmUgU3dpc3MgR21iSCA8KkB3aXJlLmNvbT4KIE1pZ3VlbCBQYXJpcyA8bXBh
cmlzZGlhekBnbWFpbC5jb20+CiBWZXdkIFNvZnR3YXJlIEFTIDwqQHZld2QuY29tPgogSGlnaGZp
dmUsIEluYy4gPCpAaGlnaGZpdmUuY29tPgotQ29TTW8gU29mdHdhcmUgQ29uc3VsdGluZywgUHRl
IEx0ZCA8KkBjb3Ntb3NvZnR3YXJlLmlvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0Nv
U01vIFNvZnR3YXJlIENvbnN1bHRpbmcsIFB0ZSBMdGQgPCpAY29zbW9zb2Z0d2FyZS5pbz4KK1R1
cGxlLCBMTEMgPCpAdHVwbGUuYXBwPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9CVUlMRC5nbgppbmRleCA1YTE0NDZkOTU2MzA2MzIxNDg0N2Y0MTlm
MTBlMTQwYzBmZjMyNjczLi4yNDkwOTRiZGQ2ZWQ4ODEwODEwYmI2YTBmMzc1ZTQ4YTAzZDc1Mzg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9C
VUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9C
VUlMRC5nbgpAQCAtNDAsMTIgKzQwLDE0IEBAIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewog
ICAgIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgZGVwcyArPSBbCiAgICAgICAgICI6
cnRjX3VuaXR0ZXN0cyIsCisgICAgICAgICI6c2xvd190ZXN0cyIsCiAgICAgICAgICI6dmlkZW9f
ZW5naW5lX3Rlc3RzIiwKICAgICAgICAgIjp3ZWJydGNfbm9ucGFyYWxsZWxfdGVzdHMiLAogICAg
ICAgICAiOndlYnJ0Y19wZXJmX3Rlc3RzIiwKICAgICAgICAgImNhbGw6ZmFrZV9uZXR3b3JrX3Vu
aXR0ZXN0cyIsCiAgICAgICAgICJjb21tb25fYXVkaW86Y29tbW9uX2F1ZGlvX3VuaXR0ZXN0cyIs
CiAgICAgICAgICJjb21tb25fdmlkZW86Y29tbW9uX3ZpZGVvX3VuaXR0ZXN0cyIsCisgICAgICAg
ICJleGFtcGxlczpleGFtcGxlc191bml0dGVzdHMiLAogICAgICAgICAibWVkaWE6cnRjX21lZGlh
X3VuaXR0ZXN0cyIsCiAgICAgICAgICJtb2R1bGVzOm1vZHVsZXNfdGVzdHMiLAogICAgICAgICAi
bW9kdWxlczptb2R1bGVzX3VuaXR0ZXN0cyIsCkBAIC01NCwxMCArNTYsOCBAQCBpZiAoIWJ1aWxk
X3dpdGhfY2hyb21pdW0pIHsKICAgICAgICAgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yOmJ3ZV9zaW11bGF0aW9uc190ZXN0cyIsCiAgICAgICAgICJtb2R1bGVzL3J0cF9ydGNwOnRl
c3RfcGFja2V0X21hc2tzX21ldHJpY3MiLAogICAgICAgICAibW9kdWxlcy92aWRlb19jYXB0dXJl
OnZpZGVvX2NhcHR1cmVfaW50ZXJuYWxfaW1wbCIsCi0gICAgICAgICJvcnRjOm9ydGNfdW5pdHRl
c3RzIiwKICAgICAgICAgInBjOnBlZXJjb25uZWN0aW9uX3VuaXR0ZXN0cyIsCiAgICAgICAgICJw
YzpydGNfcGNfdW5pdHRlc3RzIiwKLSAgICAgICAgInJ0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0
aWxzIiwKICAgICAgICAgInN0YXRzOnJ0Y19zdGF0c191bml0dGVzdHMiLAogICAgICAgICAic3lz
dGVtX3dyYXBwZXJzOnN5c3RlbV93cmFwcGVyc191bml0dGVzdHMiLAogICAgICAgICAidGVzdCIs
CkBAIC05OCw2ICs5OCwxMCBAQCBjb25maWcoImNvbW1vbl9pbmhlcml0ZWRfY29uZmlnIikgewog
ICBjZmxhZ3MgPSBbXQogICBsZGZsYWdzID0gW10KIAorICBpZiAocnRjX2VuYWJsZV9zeW1ib2xf
ZXhwb3J0KSB7CisgICAgZGVmaW5lcyA9IFsgIldFQlJUQ19FTkFCTEVfU1lNQk9MX0VYUE9SVCIg
XQorICB9CisKICAgaWYgKGJ1aWxkX3dpdGhfbW96aWxsYSkgewogICAgIGRlZmluZXMgKz0gWyAi
V0VCUlRDX01PWklMTEFfQlVJTEQiIF0KICAgfQpAQCAtMjE4LDggKzIyMiw4IEBAIGNvbmZpZygi
Y29tbW9uX2NvbmZpZyIpIHsKICAgICBkZWZpbmVzICs9IFsgIldFQlJUQ19JTkNMVURFX0lOVEVS
TkFMX0FVRElPX0RFVklDRSIgXQogICB9CiAKLSAgaWYgKCFydGNfbGlidnB4X2J1aWxkX3ZwOSkg
ewotICAgIGRlZmluZXMgKz0gWyAiUlRDX0RJU0FCTEVfVlA5IiBdCisgIGlmIChydGNfbGlidnB4
X2J1aWxkX3ZwOSkgeworICAgIGRlZmluZXMgKz0gWyAiUlRDX0VOQUJMRV9WUDkiIF0KICAgfQog
CiAgIGlmIChydGNfZW5hYmxlX3NjdHApIHsKQEAgLTM3NCwyOSArMzc4LDMzIEBAIGlmICghYnVp
bGRfd2l0aF9jaHJvbWl1bSkgewogCiAgICAgZGVwcyA9IFsKICAgICAgICI6d2VicnRjX2NvbW1v
biIsCisgICAgICAiYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAgICAgImFw
aTp0cmFuc3BvcnRfYXBpIiwKICAgICAgICJhdWRpbyIsCiAgICAgICAiY2FsbCIsCiAgICAgICAi
Y29tbW9uX2F1ZGlvIiwKICAgICAgICJjb21tb25fdmlkZW8iLAorICAgICAgImxvZ2dpbmc6cnRj
X2V2ZW50X2xvZ19hcGkiLAorICAgICAgImxvZ2dpbmc6cnRjX2V2ZW50X2xvZ19pbXBsX2Jhc2Ui
LAogICAgICAgIm1lZGlhIiwKICAgICAgICJtb2R1bGVzIiwKICAgICAgICJtb2R1bGVzL3ZpZGVv
X2NhcHR1cmU6dmlkZW9fY2FwdHVyZV9pbnRlcm5hbF9pbXBsIiwKLSAgICAgICJvcnRjIiwKKyAg
ICAgICJwMnA6cnRjX3AycCIsCisgICAgICAicGM6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uIiwK
KyAgICAgICJwYzpwZWVyY29ubmVjdGlvbiIsCisgICAgICAicGM6cnRjX3BjIiwKKyAgICAgICJw
YzpydGNfcGNfYmFzZSIsCiAgICAgICAicnRjX2Jhc2UiLAogICAgICAgInNkayIsCiAgICAgICAi
dmlkZW8iLAogICAgIF0KIAotICAgICMgQWRkaXRpb25hbCBmYWN0b3J5IGZ1bmN0aW9ucyB0byBi
ZSBleHBvc2VkLgotICAgICMgUmF0aW9uYWw6IFRoZXNlIGZhY3RvcmllcyBhcmUgc21hbGwgZW5v
dWdoICg4OSBLaUIgLyAzMisgTWlCKQotICAgICMgICAgICAgICAgIHRvIGJlIHVuY29uZGl0aW9u
YWx5IGluY2x1ZGVkIGZvciB1c2VyIGNvbnZlbmllbmNlLgotICAgICMgVGhhdCBiZWdpbiBzYWlk
OgotICAgICMgVE9ETyh5dmVzZykgQ29uc2lkZXIgbWFraW5nIGFsbCBub24tY29yZSBBUElzIG9w
dGlvbmFsLCBzbyB0aGF0IHVzZXJzCi0gICAgIyAgICAgICAgICAgICBjYW4gYnVpbGQgYSBjdXN0
b21pemVkIGxpYnJhcnkgdGFpbG9yZWQgdG8gdGhlaXIgbmVlZHMuCisgICAgIyBJbmNsdWRlIGF1
ZGlvIGFuZCB2aWRlbyBjb2RlY3MgYnkgZGVmYXVsdC4KICAgICBkZXBzICs9IFsKICAgICAgICJh
cGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKICAgICAgICJh
cGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAgICJh
cGkvdmlkZW9fY29kZWNzOmJ1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5IiwKKyAgICAgICJh
cGkvdmlkZW9fY29kZWNzOmJ1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5IiwKICAgICBdCiAK
ICAgICBpZiAoYnVpbGRfd2l0aF9tb3ppbGxhKSB7CkBAIC00MzAsOSArNDM4LDkgQEAgcnRjX3Nv
dXJjZV9zZXQoIndlYnJ0Y19jb21tb24iKSB7CiAgIGRlcHMgPSBbCiAgICAgImFwaTphcnJheV92
aWV3IiwKICAgICAiYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbiIsCisgICAgImFw
aS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgInJ0Y19iYXNlOmNoZWNrcyIsCi0gICAgInJ0Y19i
YXNlOmRlcHJlY2F0aW9uIiwKLSAgICAicnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAorICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgXQogCiAgIGlmICghYnVpbGRf
d2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewpAQCAtNDY3LDcgKzQ3NSw2IEBAIGlmIChydGNf
aW5jbHVkZV90ZXN0cykgewogICAgICAgInAycDpydGNfcDJwX3VuaXR0ZXN0cyIsCiAgICAgICAi
cnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWRfdW5pdHRlc3RzIiwKICAgICAgICJydGNfYmFzZTpy
dGNfYmFzZV90ZXN0c19tYWluIiwKLSAgICAgICJydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGls
cyIsCiAgICAgICAicnRjX2Jhc2U6cnRjX2Jhc2VfdW5pdHRlc3RzIiwKICAgICAgICJydGNfYmFz
ZTpydGNfanNvbl91bml0dGVzdHMiLAogICAgICAgInJ0Y19iYXNlOnJ0Y19udW1lcmljc191bml0
dGVzdHMiLApAQCAtNDk5LDYgKzUwNiwxNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAg
ICB9CiAgIH0KIAorICAjIFRoaXMgcnVucyB0ZXN0cyB0aGF0IG11c3QgcnVuIGluIHJlYWwgdGlt
ZSBhbmQgdGhlcmVmb3JlIGNhbiB0YWtlIHNvbWUKKyAgIyB0aW1lIHRvIGV4ZWN1dGUuIFRoZXkg
YXJlIGluIGEgc2VwYXJhdGUgZXhlY3V0YWJsZSB0byBhdm9pZCBtYWtpbmcgdGhlCisgICMgcmVn
dWxhciB1bml0dGVzdCBzdWl0ZSB0b28gc2xvdyB0byBydW4gZnJlcXVlbnRseS4KKyAgcnRjX3Rl
c3QoInNsb3dfdGVzdHMiKSB7CisgICAgdGVzdG9ubHkgPSB0cnVlCisgICAgZGVwcyA9IFsKKyAg
ICAgICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjOmdvb2dfY2Nfc2xvd190
ZXN0cyIsCisgICAgICAidGVzdDp0ZXN0X21haW4iLAorICAgIF0KKyAgfQorCiAgICMgVE9ETyhw
Ym9zKTogUmVuYW1lIHRlc3Qgc3VpdGUsIHRoaXMgaXMgbm8gbG9uZ2VyICJqdXN0IiBmb3Igdmlk
ZW8gdGFyZ2V0cy4KICAgdmlkZW9fZW5naW5lX3Rlc3RzX3Jlc291cmNlcyA9IFsKICAgICAicmVz
b3VyY2VzL2ZvcmVtYW5fY2lmX3Nob3J0Lnl1diIsCkBAIC01MjQsNyArNTQyLDYgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAjIHNob3VsZCBtb3ZlIHRoZW0gdG8gYSBtb3JlIGFw
cHJvcHJpYXRlIHRlc3Qgc3VpdGUuCiAgICAgICAiY2FsbDpjYWxsX3Rlc3RzIiwKICAgICAgICJt
b2R1bGVzL3ZpZGVvX2NhcHR1cmUiLAotICAgICAgInJ0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0
aWxzIiwKICAgICAgICJ0ZXN0OnRlc3RfY29tbW9uIiwKICAgICAgICJ0ZXN0OnRlc3RfbWFpbiIs
CiAgICAgICAidGVzdDp2aWRlb190ZXN0X2NvbW1vbiIsCkBAIC02MTcsNiArNjM0LDcgQEAgaWYg
KHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAgICJzZGsvYW5kcm9pZC90ZXN0cy9zcmMvb3Jn
L3dlYnJ0Yy9HbEdlbmVyaWNEcmF3ZXJUZXN0LmphdmEiLAogICAgICAgICAic2RrL2FuZHJvaWQv
dGVzdHMvc3JjL29yZy93ZWJydGMvSGFyZHdhcmVWaWRlb0VuY29kZXJUZXN0LmphdmEiLAogICAg
ICAgICAic2RrL2FuZHJvaWQvdGVzdHMvc3JjL29yZy93ZWJydGMvU2NhbGluZ1NldHRpbmdzVGVz
dC5qYXZhIiwKKyAgICAgICAgInNkay9hbmRyb2lkL3Rlc3RzL3NyYy9vcmcvd2VicnRjL0NyeXB0
b09wdGlvbnNUZXN0LmphdmEiLAogICAgICAgXQogCiAgICAgICBkZXBzID0gWwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvREVQUyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL0RFUFMKaW5kZXggNjdhYTRhODAz
YzIwOTE5YzI2MzU1Y2EzZjA5ZThjMjViZGUxZDUxZC4uNTU1YzI3ZjEwZTdlMTk5NzMwMDA2ZDRk
Yjk3ZDM2MGQyYzE1ODM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvREVQUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ERVBTCkBAIC03LDE2ICs3LDE2IEBAIHZhcnMgPSB7CiAgICdjaGVja291dF9j
b25maWd1cmF0aW9uJzogJ2RlZmF1bHQnLAogICAnY2hlY2tvdXRfaW5zdHJ1bWVudGVkX2xpYnJh
cmllcyc6ICdjaGVja291dF9saW51eCBhbmQgY2hlY2tvdXRfY29uZmlndXJhdGlvbiA9PSAiZGVm
YXVsdCInLAogICAnd2VicnRjX2dpdCc6ICdodHRwczovL3dlYnJ0Yy5nb29nbGVzb3VyY2UuY29t
JywKLSAgJ2Nocm9taXVtX3JldmlzaW9uJzogJ2NjYjgzZDRhNTUxMjgwMmYxMTkzYTUwNmI1NDMx
ZTg1ZTAxMzgwNDMnLAorICAnY2hyb21pdW1fcmV2aXNpb24nOiAnYjA0ZTUxM2Y4MjVkNmNlMjJl
MTQ3NjAxY2JmYzc1ZWEyM2ViOTA3MycsCiAgICdib3Jpbmdzc2xfZ2l0JzogJ2h0dHBzOi8vYm9y
aW5nc3NsLmdvb2dsZXNvdXJjZS5jb20nLAogICAjIFRocmVlIGxpbmVzIG9mIG5vbi1jaGFuZ2lu
ZyBjb21tZW50cyBzbyB0aGF0CiAgICMgdGhlIGNvbW1pdCBxdWV1ZSBjYW4gaGFuZGxlIENMcyBy
b2xsaW5nIHN3YXJtaW5nX2NsaWVudAogICAjIGFuZCB3aGF0ZXZlciBlbHNlIHdpdGhvdXQgaW50
ZXJmZXJlbmNlIGZyb20gZWFjaCBvdGhlci4KLSAgJ3N3YXJtaW5nX3JldmlzaW9uJzogJzQ4NmM5
YjUzYzRkNTRkZDRiOTViYjZjZTBlMzExNjBlNjAwZGZjMTEnLAorICAnc3dhcm1pbmdfcmV2aXNp
b24nOiAnMTU3YmVjOGEyNWNjNGViZDZhMTYwNTI1MTBkMDhiMDViNjEwMmFhZCcsCiAgICMgVGhy
ZWUgbGluZXMgb2Ygbm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUgY29tbWl0
IHF1ZXVlIGNhbiBoYW5kbGUgQ0xzIHJvbGxpbmcgQm9yaW5nU1NMCiAgICMgYW5kIHdoYXRldmVy
IGVsc2Ugd2l0aG91dCBpbnRlcmZlcmVuY2UgZnJvbSBlYWNoIG90aGVyLgotICAnYm9yaW5nc3Ns
X3JldmlzaW9uJzogJ2NlMDA4MjhjODlkZjNkNGM0MGRlN2Q3MTViMWEwMzJlYjAzYzUyNWMnLAor
ICAnYm9yaW5nc3NsX3JldmlzaW9uJzogJzY5NjVkMjU2MDI3NTRiYzQxOWM1Zjc1N2QwMDhiYTFm
NGRhNDlhZTQnLAogICAjIFRocmVlIGxpbmVzIG9mIG5vbi1jaGFuZ2luZyBjb21tZW50cyBzbyB0
aGF0CiAgICMgdGhlIGNvbW1pdCBxdWV1ZSBjYW4gaGFuZGxlIENMcyByb2xsaW5nIGxzcwogICAj
IGFuZCB3aGF0ZXZlciBlbHNlIHdpdGhvdXQgaW50ZXJmZXJlbmNlIGZyb20gZWFjaCBvdGhlci4K
QEAgLTI0LDI5ICsyNCwyOSBAQCB2YXJzID0gewogICAjIFRocmVlIGxpbmVzIG9mIG5vbi1jaGFu
Z2luZyBjb21tZW50cyBzbyB0aGF0CiAgICMgdGhlIGNvbW1pdCBxdWV1ZSBjYW4gaGFuZGxlIENM
cyByb2xsaW5nIGNhdGFwdWx0CiAgICMgYW5kIHdoYXRldmVyIGVsc2Ugd2l0aG91dCBpbnRlcmZl
cmVuY2UgZnJvbSBlYWNoIG90aGVyLgotICAnY2F0YXB1bHRfcmV2aXNpb24nOiAnNGZjNDI4MWQy
MTUyYTM2NzYyYTBiZjQ3YmE3NmJmOGQ0YTZlZTIzNCcsCisgICdjYXRhcHVsdF9yZXZpc2lvbic6
ICcxNzA3OWE1Y2MxZjI3YTJkYzU3NTU4YTA4OTc2NjZjYWM0YTViYzY0JywKICAgIyBUaHJlZSBs
aW5lcyBvZiBub24tY2hhbmdpbmcgY29tbWVudHMgc28gdGhhdAogICAjIHRoZSBjb21taXQgcXVl
dWUgY2FuIGhhbmRsZSBDTHMgcm9sbGluZyBsaWJGdXp6ZXIKICAgIyBhbmQgd2hhdGV2ZXIgZWxz
ZSB3aXRob3V0IGludGVyZmVyZW5jZSBmcm9tIGVhY2ggb3RoZXIuCi0gICdsaWJmdXp6ZXJfcmV2
aXNpb24nOiAnYTMwNWE1ZWI4NWVkNDJlZGM1Yzk2NWMxNGYzMDhmNTc2Y2IyNDVjYScsCisgICds
aWJmdXp6ZXJfcmV2aXNpb24nOiAnMmE1MzA5ODU4NGM0OGFmNTBhZWMzZmI1MWZlYmU1ZTY1MTQ4
OTc3NCcsCiAgICMgVGhyZWUgbGluZXMgb2Ygbm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQK
ICAgIyB0aGUgY29tbWl0IHF1ZXVlIGNhbiBoYW5kbGUgQ0xzIHJvbGxpbmcgZnJlZXR5cGUKICAg
IyBhbmQgd2hhdGV2ZXIgZWxzZSB3aXRob3V0IGludGVyZmVyZW5jZSBmcm9tIGVhY2ggb3RoZXIu
Ci0gICdmcmVldHlwZV9yZXZpc2lvbic6ICdhYmQ5OTdhYTdjZjJiYzkyMTkxMzY3ODJjNzM2M2Qx
NGQzMjUxOTljJywKKyAgJ2ZyZWV0eXBlX3JldmlzaW9uJzogJ2ZiMGQ2NmQwNGM0ZGQ4ZDdmOTYw
NGFmMWE2MDAxYjI3MzdjYjUwOTgnLAogICAjIFRocmVlIGxpbmVzIG9mIG5vbi1jaGFuZ2luZyBj
b21tZW50cyBzbyB0aGF0CiAgICMgdGhlIGNvbW1pdCBxdWV1ZSBjYW4gaGFuZGxlIENMcyByb2xs
aW5nIEhhcmZCdXp6CiAgICMgYW5kIHdoYXRldmVyIGVsc2Ugd2l0aG91dCBpbnRlcmZlcmVuY2Ug
ZnJvbSBlYWNoIG90aGVyLgotICAnaGFyZmJ1enpfcmV2aXNpb24nOiAnNTRkMzMyZGQ5YjAyNjM4
MjEzNzYxNjFjZGZmYjYwZmZiM2M3ODQ3ZicsCisgICdoYXJmYnV6el9yZXZpc2lvbic6ICc1NzRk
ODg4YzhhNDA5Mjk1YTk1MjM2MWEzOWM4ZTgzYTUyYTBmYzNkJywKIH0KIGRlcHMgPSB7CiAgICMg
VE9ETyhramVsbGFuZGVyKTogTW92ZSB0aGlzIHRvIGJlIEFuZHJvaWQtb25seSBvbmNlIHRoZSBs
aWJldmVudCBkZXBlbmRlbmN5CiAgICMgaW4gYmFzZS90aGlyZF9wYXJ0eS9saWJldmVudCBpcyBz
b2x2ZWQuCiAgICdzcmMvYmFzZSc6Ci0gICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21p
dW0vc3JjL2Jhc2UnICsgJ0AnICsgJzBkYjYxMzc5ZDhmNzY4MDdlNmY3OGEzNWNjZmY5MjI3MjA1
YjYxOTUnLAorICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy9iYXNlJyAr
ICdAJyArICdiOTkwMWY5YmM1YjY1YTExNjlkNWRiNjk2ZWY0NDI4YTY1Y2VjNjIyJywKICAgJ3Ny
Yy9idWlsZCc6Ci0gICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vc3JjL2J1aWxk
JyArICdAJyArICc4YmI5ZmVmODYyYmQ3NTcwYzViNDY1ODYwYzQyNzcwMWM4MWMxNTMxJywKKyAg
ICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9zcmMvYnVpbGQnICsgJ0AnICsgJ2Ji
ZDY3YTM1MGQ3NDUyMDBlNTc5OGNhY2UxMWEyOGVkZmQ5ZmMzYjInLAogICAnc3JjL2J1aWxkdG9v
bHMnOgotICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL2J1aWxkdG9vbHMuZ2l0
JyArICdAJyArICcyZGZmOWM5Yzc0ZTlkNzMyZTZmZTU3Yzg0ZWY3ZmQwNDRjYzQ1ZDk2JywKKyAg
ICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9idWlsZHRvb2xzLmdpdCcgKyAnQCcg
KyAnMDQxNjFlYzhkN2M3ODFlNDQ5OGM2OTkyNTRjNjliYTBkZDk1OWZkZScsCiAgICMgR3JhZGxl
IDQuMy1yYzQuIFVzZWQgZm9yIHRlc3RpbmcgQW5kcm9pZCBTdHVkaW8gcHJvamVjdCBnZW5lcmF0
aW9uIGZvciBXZWJSVEMuCiAgICdzcmMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL3RoaXJkX3BhcnR5
L2dyYWRsZSc6IHsKICAgICAndXJsJzogVmFyKCdjaHJvbWl1bV9naXQnKSArICcvZXh0ZXJuYWwv
Z2l0aHViLmNvbS9ncmFkbGUvZ3JhZGxlLmdpdCcgKyAnQCcgKwpAQCAtNTQsMjEgKzU0LDQ0IEBA
IGRlcHMgPSB7CiAgICAgJ2NvbmRpdGlvbic6ICdjaGVja291dF9hbmRyb2lkJywKICAgfSwKICAg
J3NyYy9pb3MnOiB7Ci0gICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVt
L3NyYy9pb3MnICsgJ0AnICsgJ2Q0ZTAxMDUxNjE1NmMyZWYyY2NkOTc0ZDRhYTBhYmQ5ZWY0OGM2
OTgnLAorICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9zcmMvaW9z
JyArICdAJyArICdlYjllOGUwOWRjNGIyOGU2OTFjZmQ3MDI0MmJhNTBjZWVjYjZhYjIwJywKICAg
ICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2lvcycsCiAgIH0sCiAgICdzcmMvdGVzdGluZyc6Ci0g
ICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vc3JjL3Rlc3RpbmcnICsgJ0AnICsg
JzY3N2UxZWYyNjI3Y2EzMjIyNmY1ZTgwMWViZWMzOTYxMzAzNTg3M2InLAorICAgIFZhcignY2hy
b21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3NyYy90ZXN0aW5nJyArICdAJyArICc1YTc3NmJjYTA1
MGFlZGZiMDI2OWNkZDg0MDhmZjA1NTlhY2RlMmFhJywKICAgJ3NyYy90aGlyZF9wYXJ0eSc6Ci0g
ICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5JyArICdA
JyArICdkY2ZhYzFjNWVkYTczYzhmYmQwNDUxYzhlNDA0NTRiMjg0YzY3MTEwJywKKyAgICBWYXIo
J2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHknICsgJ0AnICsgJzc3
ZjZjMTY3MjBlZmY3NzIxYjBjMGIyNDM4Y2U5MTI2ZjU5ZTFmMGInLAogICAnc3JjL3RoaXJkX3Bh
cnR5L2FuZHJvaWRfbmRrJzogewogICAgICAgJ3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAn
L2FuZHJvaWRfbmRrLmdpdCcgKyAnQCcgKyAnNGUyY2VhNDQxYmZkNDNmMDg2M2QxNGY1N2IxZTE4
NDQyNjBiOTg4NCcsCiAgICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2FuZHJvaWQnLAogICB9
LAogICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJvaWRfdG9vbHMnOiB7Ci0gICAgJ3VybCc6IFZhcign
Y2hyb21pdW1fZ2l0JykgKyAnL2FuZHJvaWRfdG9vbHMuZ2l0JyArICdAJyArICcxMzA0OTllMjUy
ODZmNGQ1NmFjYWZhMjUyZmVlMDlmM2NjNTk1YzQ5JywKKyAgICAndXJsJzogVmFyKCdjaHJvbWl1
bV9naXQnKSArICcvYW5kcm9pZF90b29scy5naXQnICsgJ0AnICsgJzZmZWNhYTU0MmY3M2RkNWFl
ZWQxNzBkOWE0Y2YzNDAxNTliNDI5NzYnLAogICAgICdjb25kaXRpb24nOiAnY2hlY2tvdXRfYW5k
cm9pZCcsCiAgIH0sCisKKyAgJ3NyYy90aGlyZF9wYXJ0eS9hbmRyb2lkX2J1aWxkX3Rvb2xzL2Fh
cHQyJzogeworICAgICAgJ3BhY2thZ2VzJzogWworICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
J3BhY2thZ2UnOiAnY2hyb21pdW0vdGhpcmRfcGFydHkvYW5kcm9pZF9idWlsZF90b29scy9hYXB0
MicsCisgICAgICAgICAgICAgICd2ZXJzaW9uJzogJ3ZlcnNpb246My4zLjAtYmV0YTAxLTUwMTMw
MTEtY3IwJywKKyAgICAgICAgICB9LAorICAgICAgXSwKKyAgICAgICdjb25kaXRpb24nOiAnY2hl
Y2tvdXRfYW5kcm9pZCcsCisgICAgICAnZGVwX3R5cGUnOiAnY2lwZCcsCisgIH0sCisKKyAgJ3Ny
Yy90aGlyZF9wYXJ0eS9hbmRyb2lkX2J1aWxkX3Rvb2xzL2J1bmRsZXRvb2wnOiB7CisgICAgICAn
cGFja2FnZXMnOiBbCisgICAgICAgICAgeworICAgICAgICAgICAgICAncGFja2FnZSc6ICdjaHJv
bWl1bS90aGlyZF9wYXJ0eS9hbmRyb2lkX3Rvb2xzX2J1bmRsZXRvb2wnLAorICAgICAgICAgICAg
ICAndmVyc2lvbic6ICd2ZXJzaW9uOjAuNy4xLWNyMCcsCisgICAgICAgICAgfSwKKyAgICAgIF0s
CisgICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2FuZHJvaWQnLAorICAgICAgJ2RlcF90eXBl
JzogJ2NpcGQnLAorICB9LAorCiAgICdzcmMvdGhpcmRfcGFydHkvYXV0by9zcmMnOiB7CiAgICAg
J3VybCc6IFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2V4dGVybmFsL2dpdGh1Yi5jb20vZ29vZ2xl
L2F1dG8uZ2l0JyArICdAJyArICc4YTgxYTg1OGFlN2I3OGExYWVmNzFhYzM5MDVmYWRlMGJiZDY0
ZTgyJywKICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2FuZHJvaWQnLApAQCAtODQsNyArMTA3
LDcgQEAgZGVwcyA9IHsKICAgJ3NyYy90aGlyZF9wYXJ0eS9jb2xvcmFtYS9zcmMnOgogICAgIFZh
cignY2hyb21pdW1fZ2l0JykgKyAnL2V4dGVybmFsL2NvbG9yYW1hLmdpdCcgKyAnQCcgKyAnNzk5
NjA0YTEwNDFlOWIzYmM1ZDI3ODllY2JkN2U4ZGIyZTE4ZTZiOCcsCiAgICdzcmMvdGhpcmRfcGFy
dHkvZGVwb3RfdG9vbHMnOgotICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3Rv
b2xzL2RlcG90X3Rvb2xzLmdpdCcgKyAnQCcgKyAnNzFlM2JlN2E1MGMyMWZhZWVlOTFlZDk5YThk
NWFkZGZiNzU5NGU3YycsCisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vdG9v
bHMvZGVwb3RfdG9vbHMuZ2l0JyArICdAJyArICc0NGQ0YjI5MDgyZjBkOGJhY2FjZDYyM2Y5MWM0
ZDI5NjM3YjRiOTAxJywKICAgJ3NyYy90aGlyZF9wYXJ0eS9lcnJvcnByb25lL2xpYic6IHsKICAg
ICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS90aGlyZF9wYXJ0eS9l
cnJvcnByb25lLmdpdCcgKyAnQCcgKyAnOTgwZDQ5ZTgzOWFhNDk4NDAxNWVmZWQzNGIwMTM0ZDRi
MmM5YjZkNycsCiAgICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2FuZHJvaWQnLApAQCAtMTAx
LDcgKzEyNCw3IEBAIGRlcHMgPSB7CiAgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvZXh0ZXJu
YWwvZ2l0aHViLmNvbS9oYXJmYnV6ei9oYXJmYnV6ei5naXQnICsgJ0AnICsgVmFyKCdoYXJmYnV6
el9yZXZpc2lvbicpLAogICAjIFdlYlJUQy1vbmx5IGRlcGVuZGVuY3kgKG5vdCBwcmVzZW50IGlu
IENocm9taXVtKS4KICAgJ3NyYy90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxlbCc6Ci0gICAgVmFy
KCdjaHJvbWl1bV9naXQnKSArICcvZXh0ZXJuYWwvZ2l0aHViLmNvbS9nb29nbGUvZ3Rlc3QtcGFy
YWxsZWwnICsgJ0AnICsgJ2ZlN2Y3OTFmMTQ3NjkzOTBkMGIxMjRlZjgyMzFjZGU0ZDU3NWViMTIn
LAorICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2V4dGVybmFsL2dpdGh1Yi5jb20vZ29vZ2xl
L2d0ZXN0LXBhcmFsbGVsJyArICdAJyArICdlNDcyMTg3ZDExMjllNTA4ODkwYWEyMGFjOTE0YWRl
YWMyZTdmN2I2JywKICAgJ3NyYy90aGlyZF9wYXJ0eS9nb29nbGUtdHJ1dGgnOiB7CiAgICAgICAn
cGFja2FnZXMnOiBbCiAgICAgICAgICAgewpAQCAtMTEzLDkgKzEzNiw5IEBAIGRlcHMgPSB7CiAg
ICAgICAnZGVwX3R5cGUnOiAnY2lwZCcsCiAgIH0sCiAgICdzcmMvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9zcmMnOgotICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2V4dGVybmFsL2dpdGh1Yi5j
b20vZ29vZ2xlL2dvb2dsZXRlc3QuZ2l0JyArICdAJyArICcyZTY4OTI2YTlkNDkyOWU5Mjg5Mzcz
Y2Q0OWU0MGRkY2I5YTYyOGY3JywKKyAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9leHRlcm5h
bC9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LmdpdCcgKyAnQCcgKyAnODc5YWMwOTJmZGUw
YTE5ZTFiM2E2MWIyNTQ2YjJhNDIyYjE1MjhiYycsCiAgICdzcmMvdGhpcmRfcGFydHkvaWN1Jzog
ewotICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9kZXBzL2ljdS5n
aXQnICsgJ0AnICsgJ2M1MmEyYTI1MGQ2YzVmNWNiZGQwMTVkZmYzNmFmN2M1ZDBhZTExNTAnLAor
ICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1bS9kZXBzL2ljdS5naXQn
ICsgJ0AnICsgJzQwN2IzOTMwMWU3MTAwNmI2OGJkMzhlNzcwZjM1ZDMyMzk4YTdiMTQnLAogICB9
LAogICAnc3JjL3RoaXJkX3BhcnR5L2pzci0zMDUvc3JjJzogewogICAgICd1cmwnOiBWYXIoJ2No
cm9taXVtX2dpdCcpICsgJy9leHRlcm5hbC9qc3ItMzA1LmdpdCcgKyAnQCcgKyAnNjQyYzUwODIz
NTQ3MWY3MjIwYWY2ZDVkZjJkMzIxMGUzYmZjMDkxOScsCkBAIC0xMzUsOSArMTU4LDkgQEAgZGVw
cyA9IHsKICAgJ3NyYy90aGlyZF9wYXJ0eS9saWJzcnRwJzoKICAgICBWYXIoJ2Nocm9taXVtX2dp
dCcpICsgJy9jaHJvbWl1bS9kZXBzL2xpYnNydHAuZ2l0JyArICdAJyArICc2NTA2MTE3MjBlY2My
M2UwZTZiMzJiMGUzMTAwZjhiNGRmOTE2OTZjJywKICAgJ3NyYy90aGlyZF9wYXJ0eS9saWJ2cHgv
c291cmNlL2xpYnZweCc6Ci0gICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvd2VibS9saWJ2cHgu
Z2l0JyArICdAJyArICAnMmJlYjVjOWY5MWU3MTY2YzJjOWQwMWM5NGJmODQ3Njc4MTUxMjFlNCcs
CisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvd2VibS9saWJ2cHguZ2l0JyArICdAJyArICAn
YWMzZWNjZGMyNGJjY2VjZTVmNzNlZTY3Yjg4MTU0ZjNiZjRhNGU5YScsCiAgICdzcmMvdGhpcmRf
cGFydHkvbGlieXV2JzoKLSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9saWJ5dXYvbGlieXV2
LmdpdCcgKyAnQCcgKyAnOWEwNzIxOWRjOGZiZjJiNzdlMzkwZDE2YmQyNDgwOTQ0NDgzOGE5MScs
CisgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvbGlieXV2L2xpYnl1di5naXQnICsgJ0AnICsg
J2IzNmM4NmZkZmU3NDZkN2JlOTA0YzNhNTY1YjA0N2IyNGQ1ODA4N2UnLAogICAnc3JjL3RoaXJk
X3BhcnR5L2xzcyc6IHsKICAgICAndXJsJzogVmFyKCdjaHJvbWl1bV9naXQnKSArICcvbGludXgt
c3lzY2FsbC1zdXBwb3J0LmdpdCcgKyAnQCcgKyBWYXIoJ2xzc19yZXZpc2lvbicpLAogICAgICdj
b25kaXRpb24nOiAnY2hlY2tvdXRfYW5kcm9pZCBvciBjaGVja291dF9saW51eCcsCkBAIC0xNDYs
MTMgKzE2OSwyMCBAQCBkZXBzID0gewogICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcpICsg
Jy9leHRlcm5hbC9tb2NraXRvL21vY2tpdG8uZ2l0JyArICdAJyArICcwNGEyYTI4OWE0MjIyZjgw
YWQyMDcxN2MyNTE0NDk4MTIxMGQyZWFjJywKICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2Fu
ZHJvaWQnLAogICB9LAorCisgICMgVXNlZCBieSBib3Jpbmdzc2wuCisgICdzcmMvdGhpcmRfcGFy
dHkvbmFzbSc6IHsKKyAgICAgICd1cmwnOiBWYXIoJ2Nocm9taXVtX2dpdCcpICsgJy9jaHJvbWl1
bS9kZXBzL25hc20uZ2l0JyArICdAJyArCisgICAgICAnYTBhNjk1MWUyNTliZDM0N2MxMzM5Njk3
NDAzNDhiYjVlYmI0NjhjNCcKKyAgfSwKKwogICAnc3JjL3RoaXJkX3BhcnR5L29wZW5oMjY0L3Ny
Yyc6CiAgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvZXh0ZXJuYWwvZ2l0aHViLmNvbS9jaXNj
by9vcGVuaDI2NCcgKyAnQCcgKyAnM2I1MWYxNmE0YTQxZGY3MjlmOGQ2NDdmMDNlNDhjNWYyNzI5
MTFmZicsCiAgICdzcmMvdGhpcmRfcGFydHkvcjgnOiB7CiAgICAgICAncGFja2FnZXMnOiBbCiAg
ICAgICAgICAgewogICAgICAgICAgICAgICAncGFja2FnZSc6ICdjaHJvbWl1bS90aGlyZF9wYXJ0
eS9yOCcsCi0gICAgICAgICAgICAgICd2ZXJzaW9uJzogJ3ZlcnNpb246MS4yLjQ4JywKKyAgICAg
ICAgICAgICAgJ3ZlcnNpb24nOiAndmVyc2lvbjoxLjQuNC1jcjAnLAogICAgICAgICAgIH0sCiAg
ICAgICBdLAogICAgICAgJ2NvbmRpdGlvbic6ICdjaGVja291dF9hbmRyb2lkJywKQEAgLTE5NSw3
ICsyMjUsNyBAQCBkZXBzID0gewogICAnc3JjL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL3BhdGNo
ZWQteWFzbSc6CiAgICAgVmFyKCdjaHJvbWl1bV9naXQnKSArICcvY2hyb21pdW0vZGVwcy95YXNt
L3BhdGNoZWQteWFzbS5naXQnICsgJ0AnICsgJzcyMGI3MDUyNGE0NDI0YjE1ZmM1N2U4MjI2MzU2
OGM4YmEwNDk2YWQnLAogICAnc3JjL3Rvb2xzJzoKLSAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsg
Jy9jaHJvbWl1bS9zcmMvdG9vbHMnICsgJ0AnICsgJzczMWY2M2YzMTI2Y2Q2ZjVjZWIyYWFmY2Vh
ZGU4MDg1NzkwMGE0MDknLAorICAgIFZhcignY2hyb21pdW1fZ2l0JykgKyAnL2Nocm9taXVtL3Ny
Yy90b29scycgKyAnQCcgKyAnYjQ3YzYzMTU4NzhlYWJkNzNiZjcxYzFhYTBjYmQ5YjgxNjcxNjc4
OScsCiAgICdzcmMvdG9vbHMvc3dhcm1pbmdfY2xpZW50JzoKICAgICBWYXIoJ2Nocm9taXVtX2dp
dCcpICsgJy9pbmZyYS9sdWNpL2NsaWVudC1weS5naXQnICsgJ0AnICsgIFZhcignc3dhcm1pbmdf
cmV2aXNpb24nKSwKIApAQCAtODk1LDE3ICs5MjUsNiBAQCBkZXBzID0gewogICAgICAgJ2RlcF90
eXBlJzogJ2NpcGQnLAogICB9LAogCi0gICdzcmMvdGhpcmRfcGFydHkvYW5kcm9pZF9kZXBzL2xp
YnMvY29tX2dvb2dsZV9hbmRyb2lkX3BsYXlfY29yZSc6IHsKLSAgICAgICdwYWNrYWdlcyc6IFsK
LSAgICAgICAgICB7Ci0gICAgICAgICAgICAgICdwYWNrYWdlJzogJ2Nocm9taXVtL3RoaXJkX3Bh
cnR5L2FuZHJvaWRfZGVwcy9saWJzL2NvbV9nb29nbGVfYW5kcm9pZF9wbGF5X2NvcmUnLAotICAg
ICAgICAgICAgICAndmVyc2lvbic6ICd2ZXJzaW9uOjEuMy4wLWNyMCcsCi0gICAgICAgICAgfSwK
LSAgICAgIF0sCi0gICAgICAnY29uZGl0aW9uJzogJ2NoZWNrb3V0X2FuZHJvaWQnLAotICAgICAg
J2RlcF90eXBlJzogJ2NpcGQnLAotICB9LAotCiAgICdzcmMvdGhpcmRfcGFydHkvYW5kcm9pZF9k
ZXBzL2xpYnMvY29tX2dvb2dsZV9jb2RlX2ZpbmRidWdzX2pzcjMwNSc6IHsKICAgICAgICdwYWNr
YWdlcyc6IFsKICAgICAgICAgICB7CkBAIC0xMDE2LDYgKzEwMzUsMTcgQEAgZGVwcyA9IHsKICAg
ICAgICdkZXBfdHlwZSc6ICdjaXBkJywKICAgfSwKIAorICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJv
aWRfZGVwcy9saWJzL2NvbV9nb29nbGVfcHJvdG9idWZfcHJvdG9idWZfbGl0ZSc6IHsKKyAgICAg
ICdwYWNrYWdlcyc6IFsKKyAgICAgICAgICB7CisgICAgICAgICAgICAgICdwYWNrYWdlJzogJ2No
cm9taXVtL3RoaXJkX3BhcnR5L2FuZHJvaWRfZGVwcy9saWJzL2NvbV9nb29nbGVfcHJvdG9idWZf
cHJvdG9idWZfbGl0ZScsCisgICAgICAgICAgICAgICd2ZXJzaW9uJzogJ3ZlcnNpb246My4wLjEt
Y3IwJywKKyAgICAgICAgICB9LAorICAgICAgXSwKKyAgICAgICdjb25kaXRpb24nOiAnY2hlY2tv
dXRfYW5kcm9pZCcsCisgICAgICAnZGVwX3R5cGUnOiAnY2lwZCcsCisgIH0sCisKICAgJ3NyYy90
aGlyZF9wYXJ0eS9hbmRyb2lkX2RlcHMvbGlicy9jb21fc3F1YXJldXBfamF2YXBvZXQnOiB7CiAg
ICAgICAncGFja2FnZXMnOiBbCiAgICAgICAgICAgewpAQCAtMTM5Myw4ICsxNDIzLDYgQEAgaG9v
a3MgPSBbCiByZWN1cnNlZGVwcyA9IFsKICAgIyBidWlsZHRvb2xzIHByb3ZpZGVzIGNsYW5nX2Zv
cm1hdCwgbGliYysrLCBhbmQgbGliYysrYWJpLgogICAnc3JjL2J1aWxkdG9vbHMnLAotICAjIGFu
ZHJvaWRfdG9vbHMgbWFuYWdlcyB0aGUgTkRLLgotICAnc3JjL3RoaXJkX3BhcnR5L2FuZHJvaWRf
dG9vbHMnLAogXQogCiAjIERlZmluZSBydWxlcyBmb3Igd2hpY2ggaW5jbHVkZSBwYXRocyBhcmUg
YWxsb3dlZCBpbiBvdXIgc291cmNlLgpAQCAtMTQxNiw5ICsxNDQ0LDEyIEBAIGluY2x1ZGVfcnVs
ZXMgPSBbCiAgICIrdGVzdCIsCiAgICIrcnRjX3Rvb2xzIiwKIAotICAjIEFic2VpbCB3aGl0ZWxp
c3QuIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggYWJzZWlsLWluLXdlYnJ0Yy1tZC4KKyAgIyBBYnNl
aWwgd2hpdGVsaXN0LiBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIGFic2VpbC1pbi13ZWJydGMubWQu
CiAgICIrYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaCIsCiAgICIrYWJzbC9tZW1vcnkv
bWVtb3J5LmgiLAorICAiK2Fic2wvbWV0YS90eXBlX3RyYWl0cy5oIiwKKyAgIithYnNsL3N0cmlu
Z3MvYXNjaWkuaCIsCisgICIrYWJzbC9zdHJpbmdzL21hdGNoLmgiLAogICAiK2Fic2wvc3RyaW5n
cy9zdHJpbmdfdmlldy5oIiwKICAgIithYnNsL3R5cGVzL29wdGlvbmFsLmgiLAogICAiK2Fic2wv
dHlwZXMvdmFyaWFudC5oIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL09XTkVSUwppbmRleCBiZmE3ODAxYmQ4MjdiODI1ZTQzMWZhMzU5YWZkZGVjYzkw
ZjM0MjM0Li4yODliNWEzYzdlYTE4MzkzMThiYjUyZmVlOTYzNTUxNmU4NjE1NjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9PV05FUlMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvT1dORVJTCkBAIC00
LDE5ICs0LDE0IEBAIG1mbG9kbWFuQHdlYnJ0Yy5vcmcKIG5pa2xhcy5lbmJvbUB3ZWJydGMub3Jn
CiBwaG9nbHVuZEB3ZWJydGMub3JnCiBzdGVmYW5Ad2VicnRjLm9yZwotdGluYS5sZWdyYW5kQHdl
YnJ0Yy5vcmcKIHRvbW1pQHdlYnJ0Yy5vcmcKIHBlci1maWxlIC5naXRpZ25vcmU9KgogcGVyLWZp
bGUgLmduPW1ib25hZGVpQHdlYnJ0Yy5vcmcKIHBlci1maWxlICouZ249bWJvbmFkZWlAd2VicnRj
Lm9yZwogcGVyLWZpbGUgKi5nbmk9bWJvbmFkZWlAd2VicnRjLm9yZwotcGVyLWZpbGUgKi5weT1w
aG9nbHVuZEB3ZWJydGMub3JnCiBwZXItZmlsZSBBVVRIT1JTPSoKLXBlci1maWxlIEJVSUxELmdu
PXBob2dsdW5kQHdlYnJ0Yy5vcmcKIHBlci1maWxlIERFUFM9KgogcGVyLWZpbGUgcHlsaW50cmM9
cGhvZ2x1bmRAd2VicnRjLm9yZwotcGVyLWZpbGUgVEhJUkRfUEFSVFlfREVQUz1waG9nbHVuZEB3
ZWJydGMub3JnCi1wZXItZmlsZSBUSElSRF9QQVJUWV9ERVBTPXRpdG92YXJ0ZW1Ad2VicnRjLm9y
ZwogcGVyLWZpbGUgV0FUQ0hMSVNUUz0qCiBwZXItZmlsZSBhYnNlaWwtaW4td2VicnRjLm1kPWRh
bmlsY2hhcEB3ZWJydGMub3JnCiBwZXItZmlsZSBhYnNlaWwtaW4td2VicnRjLm1kPWt3aWJlcmdA
d2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvUFJFU1VCTUlULnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvUFJFU1VCTUlULnB5CmluZGV4IGE3YjVjYzE0YTQ4ZmEwYjgwNzAyNDYyYWE5Yzkx
MDFkOGEwMjc1NzEuLjM0YjVhZGY3Nzc4MzgzOTBhYTU4OGU5ODY1MTNmNTIwYTJlMzA1Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL1BSRVNV
Qk1JVC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9Q
UkVTVUJNSVQucHkKQEAgLTQ4MSw3ICs0ODEsOCBAQCBkZWYgQ2hlY2tOb1N0cmVhbVVzYWdlSXNB
ZGRlZChpbnB1dF9hcGksIG91dHB1dF9hcGksCiAgIGZpbGVfZmlsdGVyID0gbGFtYmRhIHg6IChp
bnB1dF9hcGkuRmlsdGVyU291cmNlRmlsZSh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5kIHNvdXJjZV9maWxlX2ZpbHRlcih4KSkKICAgZm9yIGYgaW4gaW5wdXRfYXBpLkFmZmVjdGVk
U291cmNlRmlsZXMoZmlsZV9maWx0ZXIpOgotICAgIGlmIGYuTG9jYWxQYXRoKCkgPT0gJ1BSRVNV
Qk1JVC5weSc6CisgICAgIyBVc2FnZSBvZiBzdHJpbmdzdHJlYW0gaXMgYWxsb3dlZCB1bmRlciBl
eGFtcGxlcy8uCisgICAgaWYgZi5Mb2NhbFBhdGgoKSA9PSAnUFJFU1VCTUlULnB5JyBvciBmLkxv
Y2FsUGF0aCgpLnN0YXJ0c3dpdGgoJ2V4YW1wbGVzJyk6CiAgICAgICBjb250aW51ZQogICAgIGZv
ciBsaW5lX251bSwgbGluZSBpbiBmLkNoYW5nZWRDb250ZW50cygpOgogICAgICAgaWYgKChpbmNs
dWRlX3JlLnNlYXJjaChsaW5lKSBvciB1c2FnZV9yZS5zZWFyY2gobGluZSkpCkBAIC04NjIsOCAr
ODYzLDg5IEBAIGRlZiBDb21tb25DaGVja3MoaW5wdXRfYXBpLCBvdXRwdXRfYXBpKToKICAgcmVz
dWx0cy5leHRlbmQoQ2hlY2tOb1N0cmVhbVVzYWdlSXNBZGRlZCgKICAgICAgIGlucHV0X2FwaSwg
b3V0cHV0X2FwaSwgbm9uX3RoaXJkX3BhcnR5X3NvdXJjZXMpKQogICByZXN1bHRzLmV4dGVuZChD
aGVja0FkZGVkRGVwc0hhdmVUYXJnZXRBcHByb3ZhbHMoaW5wdXRfYXBpLCBvdXRwdXRfYXBpKSkK
KyAgcmVzdWx0cy5leHRlbmQoQ2hlY2tBcGlEZXBzRmlsZUlzVXBUb0RhdGUoaW5wdXRfYXBpLCBv
dXRwdXRfYXBpKSkKKyAgcmVzdWx0cy5leHRlbmQoQ2hlY2tBYnNsTWVtb3J5SW5jbHVkZSgKKyAg
ICAgIGlucHV0X2FwaSwgb3V0cHV0X2FwaSwgbm9uX3RoaXJkX3BhcnR5X3NvdXJjZXMpKQorICBy
ZXR1cm4gcmVzdWx0cworCisKK2RlZiBDaGVja0FwaURlcHNGaWxlSXNVcFRvRGF0ZShpbnB1dF9h
cGksIG91dHB1dF9hcGkpOgorICAiIiJDaGVjayB0aGF0ICdpbmNsdWRlX3J1bGVzJyBpbiBhcGkv
REVQUyBpcyB1cCB0byBkYXRlLgorCisgIFRoZSBmaWxlIGFwaS9ERVBTIG11c3QgYmUga2VwdCB1
cCB0byBkYXRlIGluIG9yZGVyIHRvIGF2b2lkIHRvIGF2b2lkIHRvCisgIGluY2x1ZGUgaW50ZXJu
YWwgaGVhZGVyIGZyb20gV2ViUlRDJ3MgYXBpLyBoZWFkZXJzLgorCisgIFRoaXMgY2hlY2sgaXMg
Zm9jdXNlZCBvbiBlbnN1cmluZyB0aGF0ICdpbmNsdWRlX3J1bGVzJyBjb250YWlucyBhIGRlbnkK
KyAgcnVsZSBmb3IgZWFjaCByb290IGxldmVsIGRpcmVjdG9yeS4gTW9yZSBmb2N1c2VkIGFsbG93
IHJ1bGVzIGNhbiBiZQorICBhZGRlZCB0byAnc3BlY2lmaWNfaW5jbHVkZV9ydWxlcycuCisgICIi
IgorICByZXN1bHRzID0gW10KKyAgYXBpX2RlcHMgPSBvcy5wYXRoLmpvaW4oaW5wdXRfYXBpLlBy
ZXN1Ym1pdExvY2FsUGF0aCgpLCAnYXBpJywgJ0RFUFMnKQorICB3aXRoIG9wZW4oYXBpX2RlcHMp
IGFzIGY6CisgICAgZGVwc19jb250ZW50ID0gX1BhcnNlRGVwcyhmLnJlYWQoKSkKKworICBpbmNs
dWRlX3J1bGVzID0gZGVwc19jb250ZW50LmdldCgnaW5jbHVkZV9ydWxlcycsIFtdKQorCisgICMg
T25seSBjaGVjayB0b3AgbGV2ZWwgZGlyZWN0b3JpZXMgYWZmZWN0ZWQgYnkgdGhlIGN1cnJlbnQg
Q0wuCisgIGRpcnNfdG9fY2hlY2sgPSBzZXQoKQorICBmb3IgZiBpbiBpbnB1dF9hcGkuQWZmZWN0
ZWRGaWxlcygpOgorICAgIHBhdGhfdG9rZW5zID0gW3QgZm9yIHQgaW4gZi5Mb2NhbFBhdGgoKS5z
cGxpdChvcy5zZXApIGlmIHRdCisgICAgaWYgbGVuKHBhdGhfdG9rZW5zKSA+IDE6CisgICAgICBp
ZiAocGF0aF90b2tlbnNbMF0gIT0gJ2FwaScgYW5kCisgICAgICAgICAgb3MucGF0aC5pc2Rpcihv
cy5wYXRoLmpvaW4oaW5wdXRfYXBpLlByZXN1Ym1pdExvY2FsUGF0aCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfdG9rZW5zWzBdKSkpOgorICAgICAgICBkaXJz
X3RvX2NoZWNrLmFkZChwYXRoX3Rva2Vuc1swXSkKKworICBtaXNzaW5nX2luY2x1ZGVfcnVsZXMg
PSBzZXQoKQorICBmb3IgcCBpbiBkaXJzX3RvX2NoZWNrOgorICAgIHJ1bGUgPSAnLSVzJyAlIHAK
KyAgICBpZiBydWxlIG5vdCBpbiBpbmNsdWRlX3J1bGVzOgorICAgICAgbWlzc2luZ19pbmNsdWRl
X3J1bGVzLmFkZChydWxlKQorCisgIGlmIG1pc3NpbmdfaW5jbHVkZV9ydWxlczoKKyAgICBlcnJv
cl9tc2cgPSBbCisgICAgICAnaW5jbHVkZV9ydWxlcyA9IFtcbicsCisgICAgICAnICAuLi5cbics
CisgICAgXQorCisgICAgZm9yIHIgaW4gc29ydGVkKG1pc3NpbmdfaW5jbHVkZV9ydWxlcyk6Cisg
ICAgICBlcnJvcl9tc2cuYXBwZW5kKCcgICIlcyIsXG4nICUgc3RyKHIpKQorCisgICAgZXJyb3Jf
bXNnLmFwcGVuZCgnICAuLi5cbicpCisgICAgZXJyb3JfbXNnLmFwcGVuZCgnXVxuJykKKworICAg
IHJlc3VsdHMuYXBwZW5kKG91dHB1dF9hcGkuUHJlc3VibWl0RXJyb3IoCisgICAgICAgICdOZXcg
cm9vdCBsZXZlbCBkaXJlY3RvcnkgZGV0ZWN0ZWQhIFdlYlJUQyBhcGkvIGhlYWRlcnMgc2hvdWxk
ICcKKyAgICAgICAgJ25vdCAjaW5jbHVkZSBoZWFkZXJzIGZyb20gXG4nCisgICAgICAgICd0aGUg
bmV3IGRpcmVjdG9yeSwgc28gcGxlYXNlIHVwZGF0ZSAiaW5jbHVkZV9ydWxlcyIgaW4gZmlsZVxu
JworICAgICAgICAnIiVzIi4gRXhhbXBsZTpcbiVzXG4nICUgKGFwaV9kZXBzLCAnJy5qb2luKGVy
cm9yX21zZykpKSkKKwogICByZXR1cm4gcmVzdWx0cwogCitkZWYgQ2hlY2tBYnNsTWVtb3J5SW5j
bHVkZShpbnB1dF9hcGksIG91dHB1dF9hcGksIHNvdXJjZV9maWxlX2ZpbHRlcik6CisgIHBhdHRl
cm4gPSBpbnB1dF9hcGkucmUuY29tcGlsZSgKKyAgICAgIHInXiNpbmNsdWRlXHMqImFic2wvbWVt
b3J5L21lbW9yeS5oIicsIGlucHV0X2FwaS5yZS5NVUxUSUxJTkUpCisgIGZpbGVfZmlsdGVyID0g
bGFtYmRhIGY6IChmLkxvY2FsUGF0aCgpLmVuZHN3aXRoKCgnLmNjJywgJy5oJykpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmQgc291cmNlX2ZpbGVfZmlsdGVyKGYpKQorCisgIGZpbGVz
ID0gW10KKyAgZm9yIGYgaW4gaW5wdXRfYXBpLkFmZmVjdGVkRmlsZXMoCisgICAgICBpbmNsdWRl
X2RlbGV0ZXM9RmFsc2UsIGZpbGVfZmlsdGVyPWZpbGVfZmlsdGVyKToKKyAgICBjb250ZW50cyA9
IGlucHV0X2FwaS5SZWFkRmlsZShmKQorICAgIGlmIHBhdHRlcm4uc2VhcmNoKGNvbnRlbnRzKToK
KyAgICAgIGNvbnRpbnVlCisgICAgZm9yIF8sIGxpbmUgaW4gZi5DaGFuZ2VkQ29udGVudHMoKToK
KyAgICAgIGlmICdhYnNsOjptYWtlX3VuaXF1ZScgaW4gbGluZToKKyAgICAgICAgZmlsZXMuYXBw
ZW5kKGYpCisgICAgICAgIGJyZWFrCisKKyAgaWYgbGVuKGZpbGVzKToKKyAgICByZXR1cm4gW291
dHB1dF9hcGkuUHJlc3VibWl0RXJyb3IoCisgICAgICAgICdQbGVhc2UgaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiIGhlYWRlciBmb3InCisgICAgICAgICcgYWJzbDo6bWFrZV91bmlxdWUu
XG5UaGlzIGhlYWRlciBtYXkgb3IgbWF5IG5vdCBiZSBpbmNsdWRlZCcKKyAgICAgICAgJyB0cmFu
c2l0aXZlbHkgZGVwZW5kcyBvbiB0aGUgQysrIHN0YW5kYXJkIHZlcnNpb24uJywKKyAgICAgICAg
ZmlsZXMpXQorICByZXR1cm4gW10KIAogZGVmIENoZWNrQ2hhbmdlT25VcGxvYWQoaW5wdXRfYXBp
LCBvdXRwdXRfYXBpKToKICAgcmVzdWx0cyA9IFtdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9XQVRDSExJU1RTIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvV0FUQ0hMSVNUUwppbmRleCBkYzhkNDhjNTFmOTVi
YzhjNDNjYmYwYmRiMmU2YmIwZGExOGY2MmU2Li40MjYwYmY5MWJiYzU5OTczMGUwNGNkNTMyNGU0
NzU0MTlkODQxOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9XQVRDSExJU1RTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL1dBVENITElTVFMKQEAgLTc5LDYgKzc5LDkgQEAKICAgICAnYml0cmF0ZV9j
b250cm9sbGVyJzogewogICAgICAgJ2ZpbGVwYXRoJzogJ21vZHVsZXMvYml0cmF0ZV9jb250cm9s
bGVyLy4qJwogICAgIH0sCisgICAgJ2Nvbmdlc3Rpb25fY29udHJvbGxlcic6IHsKKyAgICAgICdm
aWxlcGF0aCc6ICdtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci8uKicKKyAgICB9LAogICAg
ICdyZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3InOiB7CiAgICAgICAnZmlsZXBhdGgnOiAnbW9kdWxl
cy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvLionCiAgICAgfSwKQEAgLTk3LDggKzEwMCw4IEBA
CiAgIH0sCiAKICAgJ1dBVENITElTVFMnOiB7Ci0gICAgJ3RoaXNfZmlsZSc6IFsnJ10sCi0gICAg
J2FsbF93ZWJydGMnOiBbJ3R0ZXJyaWJlcnJ5QG1vemlsbGEuY29tJ10sCisgICAgJ3RoaXNfZmls
ZSc6IFtdLAorICAgICdhbGxfd2VicnRjJzogW10sCiAgICAgJ3Jvb3RfZmlsZXMnOiBbJ25pa2xh
cy5lbmJvbUB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAncGVhaEB3ZWJydGMub3Jn
JywKICAgICAgICAgICAgICAgICAgICAncWlhbmcubHVAaW50ZWwuY29tJywKQEAgLTEwNiwxNiAr
MTA5LDE0IEBACiAgICAgJ2J1aWxkX2ZpbGVzJzogWydtYm9uYWRlaUB3ZWJydGMub3JnJ10sCiAg
ICAgJ2NvbW1vbl9hdWRpbyc6IFsnYWxlc3Npb2JAd2VicnRjLm9yZycsCiAgICAgICAgICAgICAg
ICAgICAgICAnYWx1ZWJzQHdlYnJ0Yy5vcmcnLAotICAgICAgICAgICAgICAgICAgICAgJ2FuZHJl
d0B3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICdhdWRpby10ZWFtQGFnb3JhLmlv
JywKLSAgICAgICAgICAgICAgICAgICAgICdiam9ybnZAd2VicnRjLm9yZycsCiAgICAgICAgICAg
ICAgICAgICAgICAnbWlueXVlQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAgICAgICAgJ3Bl
YWhAd2VicnRjLm9yZyddLAotICAgICdhdWRpbyc6IFsnc29sZW5iZXJnQHdlYnJ0Yy5vcmcnLAot
ICAgICAgICAgICAgICAndGluYS5sZWdyYW5kQHdlYnJ0Yy5vcmcnXSwKKyAgICAnYXVkaW8nOiBb
J3NvbGVuYmVyZ0B3ZWJydGMub3JnJ10sCiAgICAgJ2FwaSc6IFsna3dpYmVyZ0B3ZWJydGMub3Jn
JywKICAgICAgICAgICAgICdzb2xlbmJlcmdAd2VicnRjLm9yZyddLAotICAgICdiYXNlJzogWydr
d2liZXJnQHdlYnJ0Yy5vcmcnXSwKKyAgICAnYmFzZSc6IFsna3dpYmVyZ0B3ZWJydGMub3JnJywK
KyAgICAgICAgICAgICAnYmVud3JpZ2h0QHdlYnJ0Yy5vcmcnXSwKICAgICAnY2FsbCc6IFsnbWZs
b2RtYW5Ad2VicnRjLm9yZycsCiAgICAgICAgICAgICAgJ3NvbGVuYmVyZ0B3ZWJydGMub3JnJywK
ICAgICAgICAgICAgICAnc3RlZmFuQHdlYnJ0Yy5vcmcnXSwKQEAgLTEzNyw4ICsxMzgsNyBAQAog
ICAgICAgICAgICAgICAgICAgICAgJ2hlbnJpay5sdW5kaW5Ad2VicnRjLm9yZycsCiAgICAgICAg
ICAgICAgICAgICAgICAna3dpYmVyZ0B3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAg
ICdtaW55dWVAd2VicnRjLm9yZycsCi0gICAgICAgICAgICAgICAgICAgICAncGVhaEB3ZWJydGMu
b3JnJywKLSAgICAgICAgICAgICAgICAgICAgICd0aW5hLmxlZ3JhbmRAd2VicnRjLm9yZyddLAor
ICAgICAgICAgICAgICAgICAgICAgJ3BlYWhAd2VicnRjLm9yZyddLAogICAgICduZXRlcSc6IFsn
YWxlc3Npb2JAd2VicnRjLm9yZycsCiAgICAgICAgICAgICAgICdhdWRpby10ZWFtQGFnb3JhLmlv
JywKICAgICAgICAgICAgICAgJ2hlbnJpay5sdW5kaW5Ad2VicnRjLm9yZycsCkBAIC0xNDksOSAr
MTQ5LDcgQEAKICAgICAnYXVkaW9fcHJvY2Vzc2luZyc6IFsnYWxlbG9pQHdlYnJ0Yy5vcmcnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICdhbGVzc2lvYkB3ZWJydGMub3JnJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAnYWx1ZWJzQHdlYnJ0Yy5vcmcnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICdhbmRyZXdAd2VicnRjLm9yZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1
ZGlvLXRlYW1AYWdvcmEuaW8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdiam9ybnZAd2Vi
cnRjLm9yZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbnJpay5sdW5kaW5Ad2VicnRj
Lm9yZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2t3aWJlcmdAd2VicnRjLm9yZycsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ21pbnl1ZUB3ZWJydGMub3JnJywKQEAgLTE2NiwxMSAr
MTY0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3poZW5nemhvbmdob3VAYWdvcmEu
aW8nXSwKICAgICAnYml0cmF0ZV9jb250cm9sbGVyJzogWydtZmxvZG1hbkB3ZWJydGMub3JnJywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGVmYW5Ad2VicnRjLm9yZycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc3J0ZUB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd6aHVhbmd6ZXNlbkBhZ29yYS5pbyddLAorICAgICdjb25nZXN0aW9uX2NvbnRy
b2xsZXInOiBbJ3NydGVAd2VicnRjLm9yZyddLAogICAgICdyZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3InOiBbJ21mbG9kbWFuQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3N0ZWZhbkB3ZWJydGMub3JnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd6aHVhbmd6ZXNlbkBhZ29yYS5pbyddLAogICAgICdwYWNpbmcnOiBbJ21mbG9kbWFuQHdl
YnJ0Yy5vcmcnLAorICAgICAgICAgICAgICAgJ3NydGVAd2VicnRjLm9yZycsCiAgICAgICAgICAg
ICAgICAnc3RlZmFuQHdlYnJ0Yy5vcmcnLAogICAgICAgICAgICAgICAgJ3podWFuZ3plc2VuQGFn
b3JhLmlvJ10sCiAgICAgJ3J0cF9ydGNwJzogWydtZmxvZG1hbkB3ZWJydGMub3JnJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fic2VpbC1p
bi13ZWJydGMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
YnNlaWwtaW4td2VicnRjLm1kCmluZGV4IDA0YWU4ZDI4ZGUxMmI3NGNjYmE1Y2Q1MWE2ZTUyMWYz
ODQzMjlkNDcuLjEwNzVhYTliNzk2MjAxNWUyZTk3M2MzNTUwYzVlNjliNTVkYTI1ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fic2VpbC1p
bi13ZWJydGMubWQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYWJzZWlsLWluLXdlYnJ0Yy5tZApAQCAtMTUsNiArMTUsMTAgQEAgYWRkcyB0aGUgZmlyc3Qg
dXNlLgogKiBgYWJzbDo6bWFrZV91bmlxdWVgIGFuZCBgYWJzbDo6V3JhcFVuaXF1ZWAKICogYGFi
c2w6Om9wdGlvbmFsYCBhbmQgcmVsYXRlZCBzdHVmZiBmcm9tIGBhYnNsL3R5cGVzL29wdGlvbmFs
LmhgLgogKiBgYWJzbDo6c3RyaW5nX3ZpZXdgCisqIFRoZSBmdW5jdGlvbnMgaW4gYGFic2wvc3Ry
aW5ncy9hc2NpaS5oYCBhbmQgYGFic2wvc3RyaW5ncy9tYXRjaC5oYAorKiBgYWJzbDo6aXNfdHJp
dmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZWAsCisgIGBhYnNsOjppc190cml2aWFsbHlfY29weV9h
c3NpZ25hYmxlYCwgYW5kCisgIGBhYnNsOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlYCBmcm9t
IGBhYnNsL21ldGEvdHlwZV90cmFpdHMuaGAuCiAqIGBhYnNsOjp2YXJpYW50YCBhbmQgcmVsYXRl
ZCBzdHVmZiBmcm9tIGBhYnNsL3R5cGVzL3ZhcmlhbnQuaGAuCiAKICMjICoqRGlzYWxsb3dlZCoq
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvQlVJTEQuZ24KaW5kZXggNWIyMTMzNGZlOTg1OWU0ZWI0ZDA0YWZmYjM0NjI1M2Y4OWI3Yzdi
ZS4uZmUyN2M3Yjg4ODBiOGYyZWJhMTU1ZjM5ZWY3ZmI0OWEzNjI5YmM4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL0JVSUxELmduCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9CVUlMRC5n
bgpAQCAtNDQsNiArNDQsMzMgQEAgcnRjX3NvdXJjZV9zZXQoImNhbGxmYWN0b3J5X2FwaSIpIHsK
ICAgXQogfQogCitydGNfc3RhdGljX2xpYnJhcnkoImNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0
b3J5IikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICBhbGxvd19wb2lzb24gPSBbICJzb2Z0
d2FyZV92aWRlb19jb2RlY3MiIF0KKyAgc291cmNlcyA9IFsKKyAgICAiY3JlYXRlX3BlZXJjb25u
ZWN0aW9uX2ZhY3RvcnkuY2MiLAorICAgICJjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5o
IiwKKyAgXQorICBkZXBzID0gWworICAgICI6Y2FsbGZhY3RvcnlfYXBpIiwKKyAgICAiOmZlY19j
b250cm9sbGVyX2FwaSIsCisgICAgIjpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKKyAg
ICAiLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCisgICAgIi4uL2xvZ2dpbmc6cnRjX2V2
ZW50X2xvZ19pbXBsX2Jhc2UiLAorICAgICIuLi9tZWRpYTpydGNfYXVkaW9fdmlkZW8iLAorICAg
ICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfYXBpIiwKKyAgICAiLi4vbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCisgICAgIi4uL3BjOnBlZXJjb25uZWN0aW9uIiwK
KyAgICAiLi4vcnRjX2Jhc2U6cHRyX3V0aWwiLAorICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIs
CisgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiYXVkaW86YXVkaW9f
bWl4ZXJfYXBpIiwKKyAgICAiYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAorICAgICJ0
cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKKyAgICAidmlkZW9fY29kZWNzOnZpZGVvX2NvZGVj
c19hcGkiLAorICBdCit9CisKIHJ0Y19zdGF0aWNfbGlicmFyeSgibGliamluZ2xlX3BlZXJjb25u
ZWN0aW9uX2FwaSIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgY2ZsYWdzID0gW10KQEAg
LTUyLDYgKzc5LDggQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJsaWJqaW5nbGVfcGVlcmNvbm5lY3Rp
b25fYXBpIikgewogICAgICJiaXRyYXRlX2NvbnN0cmFpbnRzLmgiLAogICAgICJjYW5kaWRhdGUu
Y2MiLAogICAgICJjYW5kaWRhdGUuaCIsCisgICAgImNyeXB0by9jcnlwdG9vcHRpb25zLmNjIiwK
KyAgICAiY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIsCiAgICAgImNyeXB0by9mcmFtZWRlY3J5cHRv
cmludGVyZmFjZS5oIiwKICAgICAiY3J5cHRvL2ZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmgiLAog
ICAgICJjcnlwdG9wYXJhbXMuaCIsCkBAIC02Myw2ICs5Miw3IEBAIHJ0Y19zdGF0aWNfbGlicmFy
eSgibGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIpIHsKICAgICAianNlcGljZWNhbmRpZGF0
ZS5jYyIsCiAgICAgImpzZXBpY2VjYW5kaWRhdGUuaCIsCiAgICAgImpzZXBzZXNzaW9uZGVzY3Jp
cHRpb24uaCIsCisgICAgIm1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuY2MiLAogICAgICJtZWRp
YV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiLAogICAgICJtZWRpYWNvbnN0cmFpbnRzaW50ZXJmYWNl
LmNjIiwKICAgICAibWVkaWFjb25zdHJhaW50c2ludGVyZmFjZS5oIiwKQEAgLTEwOSw2ICsxMzks
NyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiKSB7
CiAgICAgImF1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKICAgICAidHJhbnNwb3J0OmJp
dHJhdGVfc2V0dGluZ3MiLAogICAgICJ0cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKKyAgICAi
dmlkZW86ZW5jb2RlZF9pbWFnZSIsCiAgICAgInZpZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogCkBAIC0xMjQsNiAr
MTU1LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBp
IikgewogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAorICAgICIuLi9y
dGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgIF0KIAogICBpZiAoaXNfbmFjbCkgewpAQCAt
MTMyLDYgKzE2NCwxMyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImxpYmppbmdsZV9wZWVyY29ubmVj
dGlvbl9hcGkiKSB7CiAgIH0KIH0KIAorcnRjX3NvdXJjZV9zZXQoInNjb3BlZF9yZWZwdHIiKSB7
CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisgICAgInNjb3BlZF9yZWZw
dHIuaCIsCisgIF0KK30KKwogcnRjX3NvdXJjZV9zZXQoInZpZGVvX3F1YWxpdHlfdGVzdF9maXh0
dXJlX2FwaSIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgdGVzdG9ubHkgPSB0cnVlCkBA
IC0xNjQsNiArMjAzLDcgQEAgcnRjX3NvdXJjZV9zZXQoInRlc3RfZGVwZW5kZW5jeV9mYWN0b3J5
IikgewogICBkZXBzID0gWwogICAgICI6dmlkZW9fcXVhbGl0eV90ZXN0X2ZpeHR1cmVfYXBpIiwK
ICAgICAiLi4vcnRjX2Jhc2U6dGhyZWFkX2NoZWNrZXIiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAm
JiBpc19jbGFuZykgewogICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0g
Q2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KQEAgLTIwMywzNCArMjQzLDE1IEBA
IHJ0Y19zb3VyY2Vfc2V0KCJsaWJqaW5nbGVfbG9nZ2luZ19hcGkiKSB7CiBydGNfc291cmNlX3Nl
dCgib3J0Y19hcGkiKSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIHNvdXJjZXMgPSBbCi0g
ICAgIm9ydGMvbWVkaWFkZXNjcmlwdGlvbi5jYyIsCi0gICAgIm9ydGMvbWVkaWFkZXNjcmlwdGlv
bi5oIiwKLSAgICAib3J0Yy9vcnRjZmFjdG9yeWludGVyZmFjZS5oIiwKLSAgICAib3J0Yy9vcnRj
cnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIsCi0gICAgIm9ydGMvb3J0Y3J0cHNlbmRlcmludGVyZmFj
ZS5oIiwKICAgICAib3J0Yy9wYWNrZXR0cmFuc3BvcnRpbnRlcmZhY2UuaCIsCi0gICAgIm9ydGMv
cnRwdHJhbnNwb3J0Y29udHJvbGxlcmludGVyZmFjZS5oIiwKICAgICAib3J0Yy9ydHB0cmFuc3Bv
cnRpbnRlcmZhY2UuaCIsCi0gICAgIm9ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmNjIiwKLSAgICAi
b3J0Yy9zZXNzaW9uZGVzY3JpcHRpb24uaCIsCiAgICAgIm9ydGMvc3J0cHRyYW5zcG9ydGludGVy
ZmFjZS5oIiwKLSAgICAib3J0Yy91ZHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIsCiAgIF0KIAotICAj
IEZvciBtZWRpYXN0cmVhbWludGVyZmFjZS5oLCBldGMuCi0gICMgVE9ETyhkZWFkYmVlZik6IENy
ZWF0ZSBhIHNlcGFyYXRlIHRhcmdldCBmb3IgdGhlIGNvbW1vbiB0aGluZ3MgT1JUQyBhbmQKLSAg
IyBQZWVyQ29ubmVjdGlvbiBjb2RlIHNoYXJlcywgc28gdGhhdCBvcnRjX2FwaSBjYW4gZGVwZW5k
IG9uIHRoYXQgaW5zdGVhZCBvZgotICAjIGxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkuCiAg
IGRlcHMgPSBbCiAgICAgIjpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKLSAgICAiLi46
d2VicnRjX2NvbW1vbiIsCi0gICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCi0gIGlmICghYnVp
bGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewotICAgICMgU3VwcHJlc3Mgd2FybmluZ3Mg
ZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KLSAg
ICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRf
Y29uc3RydWN0cyIgXQotICB9CiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJydGNfc3RhdHNfYXBpIikg
ewpAQCAtMjQ2LDYgKzI2Nyw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfc3RhdHNfYXBpIikgewog
ICBkZXBzID0gWwogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpy
dGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwK
ICAgXQogfQogCkBAIC0yNzAsNiArMjkyLDE3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ0cmFuc3BvcnRf
YXBpIikgewogICBdCiB9CiAKK3J0Y19zb3VyY2Vfc2V0KCJiaXRyYXRlX2FsbG9jYXRpb24iKSB7
CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImNhbGwvYml0cmF0
ZV9hbGxvY2F0aW9uLmgiLAorICBdCisgIGRlcHMgPSBbCisgICAgInVuaXRzOmRhdGFfcmF0ZSIs
CisgICAgInVuaXRzOnRpbWVfZGVsdGEiLAorICBdCit9CisKIHJ0Y19zb3VyY2Vfc2V0KCJzaW11
bGF0ZWRfbmV0d29ya19hcGkiKSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIHNvdXJjZXMg
PSBbCkBAIC0zNDcsNiArMzgwLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICBd
CiAKICAgICAgIGRlcHMgPSBbCisgICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6
YXBpIiwKICAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNz
aW5nIiwKICAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb3Byb2NfZl9p
bXBsIiwKICAgICAgIF0KQEAgLTQ0NiwxMSArNDgwLDMzIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0
cykgewogICAgIF0KICAgfQogCi0gIHJ0Y19zb3VyY2Vfc2V0KCJmYWtlX2ZyYW1lX2NyeXB0byIp
IHsKKyAgcnRjX3NvdXJjZV9zZXQoIm1vY2tfZnJhbWVfZW5jcnlwdG9yIikgeworICAgIHRlc3Rv
bmx5ID0gdHJ1ZQorICAgIHNvdXJjZXMgPSBbCisgICAgICAidGVzdC9tb2NrX2ZyYW1lX2VuY3J5
cHRvci5jYyIsCisgICAgICAidGVzdC9tb2NrX2ZyYW1lX2VuY3J5cHRvci5oIiwKKyAgICBdCisg
ICAgZGVwcyA9IFsKKyAgICAgICI6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCisgICAg
ICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgIF0KKyAgfQorCisgIHJ0Y19zb3VyY2Vfc2V0
KCJtb2NrX2ZyYW1lX2RlY3J5cHRvciIpIHsKKyAgICB0ZXN0b25seSA9IHRydWUKKyAgICBzb3Vy
Y2VzID0gWworICAgICAgInRlc3QvbW9ja19mcmFtZV9kZWNyeXB0b3IuY2MiLAorICAgICAgInRl
c3QvbW9ja19mcmFtZV9kZWNyeXB0b3IuaCIsCisgICAgXQorICAgIGRlcHMgPSBbCisgICAgICAi
OmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAorICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBw
b3J0IiwKKyAgICBdCisgIH0KKworICBydGNfc291cmNlX3NldCgiZmFrZV9mcmFtZV9lbmNyeXB0
b3IiKSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAgICAgc291cmNlcyA9IFsKLSAgICAgICJ0ZXN0
L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmNjIiwKLSAgICAgICJ0ZXN0L2Zha2VfZnJhbWVfZGVjcnlw
dG9yLmgiLAogICAgICAgInRlc3QvZmFrZV9mcmFtZV9lbmNyeXB0b3IuY2MiLAogICAgICAgInRl
c3QvZmFrZV9mcmFtZV9lbmNyeXB0b3IuaCIsCiAgICAgXQpAQCAtNDYzLDYgKzUxOSwyMSBAQCBp
ZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBdCiAgIH0KIAorICBydGNfc291cmNlX3NldCgi
ZmFrZV9mcmFtZV9kZWNyeXB0b3IiKSB7CisgICAgdGVzdG9ubHkgPSB0cnVlCisgICAgc291cmNl
cyA9IFsKKyAgICAgICJ0ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmNjIiwKKyAgICAgICJ0ZXN0
L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmgiLAorICAgIF0KKyAgICBkZXBzID0gWworICAgICAgIjph
cnJheV92aWV3IiwKKyAgICAgICI6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCisgICAg
ICAiLi46d2VicnRjX2NvbW1vbiIsCisgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAg
ICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgXQorICB9CisKICAgcnRjX3Nv
dXJjZV9zZXQoIm1vY2tfcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UiKSB7CiAgICAgdGVzdG9ubHkg
PSB0cnVlCiAgICAgc291cmNlcyA9IFsKQEAgLTUwMCw2ICs1NzEsMTggQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgXQogICB9CiAKKyAgcnRjX3NvdXJjZV9zZXQoIm1vY2tfdmlkZW9f
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIpIHsKKyAgICB0ZXN0b25seSA9IHRydWUKKyAgICBz
b3VyY2VzID0gWworICAgICAgInRlc3QvbW9ja192aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0
b3J5LmgiLAorICAgIF0KKworICAgIGRlcHMgPSBbCisgICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVv
X2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAorICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0
IiwKKyAgICBdCisgIH0KKwogICBydGNfc291cmNlX3NldCgibW9ja192aWRlb19jb2RlY19mYWN0
b3J5IikgewogICAgIHRlc3Rvbmx5ID0gdHJ1ZQogICAgIHNvdXJjZXMgPSBbCkBAIC01MTMsMTUg
KzU5Niw3MiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBdCiAgIH0KIAorICBydGNf
c291cmNlX3NldCgibW9ja192aWRlb19kZWNvZGVyIikgeworICAgIHZpc2liaWxpdHkgPSBbICIq
IiBdCisKKyAgICB0ZXN0b25seSA9IHRydWUKKyAgICBzb3VyY2VzID0gWworICAgICAgInRlc3Qv
bW9ja192aWRlb19kZWNvZGVyLmNjIiwKKyAgICAgICJ0ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5o
IiwKKyAgICBdCisKKyAgICBkZXBzID0gWworICAgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6dmlk
ZW9fY29kZWNzX2FwaSIsCisgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgIF0KKyAg
fQorCisgIHJ0Y19zb3VyY2Vfc2V0KCJtb2NrX3ZpZGVvX2VuY29kZXIiKSB7CisgICAgdmlzaWJp
bGl0eSA9IFsgIioiIF0KKworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAgIHNvdXJjZXMgPSBbCisg
ICAgICAidGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIuY2MiLAorICAgICAgInRlc3QvbW9ja192aWRl
b19lbmNvZGVyLmgiLAorICAgIF0KKworICAgIGRlcHMgPSBbCisgICAgICAiLi4vYXBpL3ZpZGVv
X2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKKyAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIs
CisgICAgXQorICB9CisKKyAgcnRjX3NvdXJjZV9zZXQoImZha2VfbWVkaWFfdHJhbnNwb3J0Iikg
eworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorCisgICAgc291cmNlcyA9IFsKKyAgICAgICJ0ZXN0L2Zh
a2VfbWVkaWFfdHJhbnNwb3J0LmgiLAorICAgIF0KKworICAgIGRlcHMgPSBbCisgICAgICAiOmxp
YmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAorICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIs
CisgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5Om1lbW9yeSIsCisg
ICAgXQorICB9CisKKyAgcnRjX3NvdXJjZV9zZXQoImxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydCIp
IHsKKyAgICB0ZXN0b25seSA9IHRydWUKKworICAgIHNvdXJjZXMgPSBbCisgICAgICAidGVzdC9s
b29wYmFja19tZWRpYV90cmFuc3BvcnQuaCIsCisgICAgXQorCisgICAgZGVwcyA9IFsKKyAgICAg
ICI6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCisgICAgICAiLi4vcnRjX2Jhc2U6Y2hl
Y2tzIiwKKyAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCisgICAgXQorICB9CisKICAgcnRj
X3NvdXJjZV9zZXQoInJ0Y19hcGlfdW5pdHRlc3RzIikgewogICAgIHRlc3Rvbmx5ID0gdHJ1ZQog
CiAgICAgc291cmNlcyA9IFsKICAgICAgICJhcnJheV92aWV3X3VuaXR0ZXN0LmNjIiwKLSAgICAg
ICJvcnRjL21lZGlhZGVzY3JpcHRpb25fdW5pdHRlc3QuY2MiLAotICAgICAgIm9ydGMvc2Vzc2lv
bmRlc2NyaXB0aW9uX3VuaXR0ZXN0LmNjIiwKICAgICAgICJydGNlcnJvcl91bml0dGVzdC5jYyIs
CiAgICAgICAicnRwcGFyYW1ldGVyc191bml0dGVzdC5jYyIsCisgICAgICAidGVzdC9sb29wYmFj
a19tZWRpYV90cmFuc3BvcnRfdW5pdHRlc3QuY2MiLAogICAgIF0KIAogICAgIGlmICghYnVpbGRf
d2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewpAQCAtNTMyLDEwICs2NzIsMTAgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgZGVwcyA9IFsKICAgICAgICI6YXJyYXlfdmlldyIsCiAg
ICAgICAiOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAotICAgICAgIjpvcnRjX2FwaSIs
CisgICAgICAiOmxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6
Y2hlY2tzIiwKKyAgICAgICIuLi9ydGNfYmFzZTpndW5pdF9oZWxwZXJzIiwKICAgICAgICIuLi9y
dGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
dGVzdHNfdXRpbHMiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICJ1bml0
czp1bml0c191bml0dGVzdHMiLAogICAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ERVBTIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL0RFUFMKaW5kZXggODQ3Y2NlMjU5ZjlhZTYzYTAyMGUw
ZDYyYTI0MjAxYmNhNzI0NTdhMi4uMjg2ZDhkMWUxZTZjNzc4YjQwNDU4Zjc3ZDA2NWU4ODIyMTJh
OGEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL0RFUFMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL0RFUFMKQEAgLTEsMTUgKzEsNTUgQEAKKyMgVGhpcyBpcyBzdXBwb3NlZCB0byBiZSBh
IGNvbXBsZXRlIGxpc3Qgb2YgdG9wLWxldmVsIGRpcmVjdG9yaWVzLAorIyBleGNlcHRpbmcgb25s
eSBhcGkvIGl0c2VsZi4KIGluY2x1ZGVfcnVsZXMgPSBbCi0gICIrdGhpcmRfcGFydHkvbGlieXV2
IiwKLSAgIitjb21tb25fdmlkZW8iLAotICAiK21lZGlhIiwKLSAgIitwMnAiLAotICAiK3BjIiwK
LSAgIitsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19mYWN0b3J5X2ludGVyZmFj
ZS5oIiwKLSAgIittb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZSIsCi0gICIrc3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUiLAorICAiLWF1ZGlvIiwKKyAgIi1iYXNlIiwKKyAgIi1idWlsZCIs
CisgICItYnVpbGR0b29scyIsCisgICItYnVpbGRfb3ZlcnJpZGVzIiwKKyAgIi1jYWxsIiwKKyAg
Ii1jb21tb25fYXVkaW8iLAorICAiLWNvbW1vbl92aWRlbyIsCisgICItZGF0YSIsCisgICItZXhh
bXBsZXMiLAorICAiLWlvcyIsCisgICItaW5mcmEiLAorICAiLWxvZ2dpbmciLAorICAiLW1lZGlh
IiwKKyAgIi1tb2R1bGVzIiwKKyAgIi1vdXQiLAorICAiLXAycCIsCisgICItcGMiLAorICAiLXJl
c291cmNlcyIsCisgICItcnRjX2Jhc2UiLAorICAiLXJ0Y190b29scyIsCisgICItc2RrIiwKKyAg
Ii1zdGF0cyIsCisgICItc3R5bGUtZ3VpZGUiLAorICAiLXN5c3RlbV93cmFwcGVycyIsCisgICIt
dGVzdCIsCisgICItdGVzdGluZyIsCisgICItdGhpcmRfcGFydHkiLAorICAiLXRvb2xzIiwKKyAg
Ii10b29sc193ZWJydGMiLAorICAiLXZpZGVvIiwKKyAgIi1leHRlcm5hbC93ZWJydGMvd2VicnRj
IiwgICMgQW5kcm9pZCBwbGF0Zm9ybSBidWlsZC4KKyAgIi1saWJ5dXYiLAorICAiLWNvbW1vbl90
eXBlcy5oIiwKKyAgIi1XZWJSVEMiLAogXQogCiBzcGVjaWZpY19pbmNsdWRlX3J1bGVzID0gewor
ICAjIFNvbWUgaW50ZXJuYWwgaGVhZGVycyBhcmUgYWxsb3dlZCBldmVuIGluIEFQSSBoZWFkZXJz
OgorICAiLipcLmgiOiBbCisgICAgIitydGNfYmFzZS9jaGVja3MuaCIsCisgICAgIitydGNfYmFz
ZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIiwKKyAgICAiK3J0Y19iYXNlL3VuaXRzL3VuaXRfYmFzZS5o
IiwKKyAgXSwKKworICAiYXJyYXlfdmlld1wuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3R5cGVfdHJh
aXRzLmgiLAorICBdLAorCiAgICMgTmVlZGVkIGJlY2F1c2UgQXVkaW9FbmNvZGVyT3B1cyBpcyBp
biB0aGUgd3JvbmcgcGxhY2UgZm9yCiAgICMgYmFja3dhcmRzIGNvbXBhdGliaWx0eSByZWFzb25z
LiBTZWUKICAgIyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Avd2VicnRjL2lzc3Vlcy9kZXRh
aWw/aWQ9Nzg0NwpAQCAtMTcsMTMgKzU3LDI1MiBAQCBzcGVjaWZpY19pbmNsdWRlX3J1bGVzID0g
ewogICAgICIrbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9v
cHVzLmgiLAogICBdLAogCi0gICMgV2UgYWxsb3cgLmNjIGZpbGVzIGluIHdlYnJ0Yy9hcGkvIHRv
ICNpbmNsdWRlIGEgYnVuY2ggb2Ygc3R1ZmYKLSAgIyB0aGF0J3Mgb2ZmLWxpbWl0cyBmb3IgdGhl
IC5oIGZpbGVzLiBUaGF0J3MgYmVjYXVzZSAuaCBmaWxlcyBsZWFrCi0gICMgdGhlaXIgI2luY2x1
ZGVzIHRvIHdob2V2ZXIncyAjaW5jbHVkaW5nIHRoZW0sIGJ1dCAuY2MgZmlsZXMgZG8gbm90Ci0g
ICMgc2luY2Ugbm8gb25lICNpbmNsdWRlcyB0aGVtLgorICAiYXN5bmNyZXNvbHZlcmZhY3Rvcnlc
LmgiOiBbCisgICAgIitydGNfYmFzZS9hc3luY3Jlc29sdmVyaW50ZXJmYWNlLmgiLAorICBdLAor
CisgICJjYW5kaWRhdGVcLmgiOiBbCisgICAgIitydGNfYmFzZS9uZXR3b3JrX2NvbnN0YW50cy5o
IiwKKyAgICAiK3J0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIsCisgIF0sCisKKyAgImNyZWF0ZV9w
ZWVyY29ubmVjdGlvbl9mYWN0b3J5XC5oIjogWworICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9w
dHIuaCIsCisgIF0sCisKKyAgImRhdGFjaGFubmVsaW50ZXJmYWNlXC5oIjogWworICAgICIrcnRj
X2Jhc2UvY29weW9ud3JpdGVidWZmZXIuaCIsCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwK
KyAgXSwKKworICAiZHRtZnNlbmRlcmludGVyZmFjZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3Jl
ZmNvdW50LmgiLAorICBdLAorCisgICJmZWNfY29udHJvbGxlclwuaCI6IFsKKyAgICAiK21vZHVs
ZXMvaW5jbHVkZS9tb2R1bGVfZmVjX3R5cGVzLmgiLAorICBdLAorCisgICJqc2VwXC5oIjogWwor
ICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgIF0sCisKKyAgImpzZXBpY2VjYW5kaWRhdGVc
LmgiOiBbCisgICAgIitydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiLAorICBdLAorCisgICJq
c2Vwc2Vzc2lvbmRlc2NyaXB0aW9uXC5oIjogWworICAgICIrcnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIiwKKyAgXSwKKworICAibWVkaWFzdHJlYW1pbnRlcmZhY2VcLmgiOiBbCisgICAgIitt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nX3N0YXRpc3Rp
Y3MuaCIsCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgICAiK3J0Y19iYXNlL3Njb3Bl
ZF9yZWZfcHRyLmgiLAorICBdLAorCisgICJtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlXC5oIjog
WworICAgICIrcnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIuaCIsICAjIEFzIHVzZWQgYnkgZGF0
YWNoYW5uZWxpbnRlcmZhY2UuaAorICAgICIrcnRjX2Jhc2UvbmV0d29ya3JvdXRlLmgiCisgIF0s
CisKKyAgInBlZXJjb25uZWN0aW9uZmFjdG9yeXByb3h5XC5oIjogWworICAgICIrcnRjX2Jhc2Uv
YmluZC5oIiwKKyAgXSwKKworICAicmVmY291bnRlZGJhc2VcLmgiOiBbCisgICAgIitydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiLAorICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgICAg
IitydGNfYmFzZS9yZWZjb3VudGVyLmgiLAorICBdLAorCisgICJydGNlcnJvclwuaCI6IFsKKyAg
ICAiK3J0Y19iYXNlL2xvZ2dpbmcuaCIsCisgIF0sCisKKyAgInJ0cHJlY2VpdmVyaW50ZXJmYWNl
XC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgICAgIitydGNfYmFzZS9zY29w
ZWRfcmVmX3B0ci5oIiwKKyAgXSwKKworICAicnRwc2VuZGVyaW50ZXJmYWNlXC5oIjogWworICAg
ICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5o
IiwKKyAgXSwKKworICAicnRwdHJhbnNjZWl2ZXJpbnRlcmZhY2VcLmgiOiBbCisgICAgIitydGNf
YmFzZS9yZWZjb3VudC5oIiwKKyAgXSwKKworICAic2V0cmVtb3RlZGVzY3JpcHRpb25vYnNlcnZl
cmludGVyZmFjZVwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAorICBdLAorCisg
ICJzdGF0c3R5cGVzXC5oIjogWworICAgICIrcnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIiwK
KyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAorICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9w
dHIuaCIsCisgICAgIitydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIsCisgICAgIitydGNfYmFzZS90
aHJlYWRfY2hlY2tlci5oIiwKKyAgXSwKKworICAidW1hbWV0cmljc1wuaCI6IFsKKyAgICAiK3J0
Y19iYXNlL3JlZmNvdW50LmgiLAorICBdLAorCisgICJhdWRpb19mcmFtZVwuaCI6IFsKKyAgICAi
K3J0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIsCisgIF0sCisKKyAgImF1ZGlvX21peGVyXC5o
IjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgIF0sCisKKyAgImF1ZGlvX2RlY29k
ZXJcLmgiOiBbCisgICAgIitydGNfYmFzZS9idWZmZXIuaCIsCisgICAgIitydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiLAorICBdLAorCisgICJhdWRpb19kZWNvZGVyX2ZhY3RvcnlcLmgiOiBb
CisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgXSwKKworICAiYXVkaW9fZGVjb2Rlcl9m
YWN0b3J5X3RlbXBsYXRlXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5o
IiwKKyAgICAiK3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiLAorICBdLAorCisgICJhdWRpb19l
bmNvZGVyXC5oIjogWworICAgICIrcnRjX2Jhc2UvYnVmZmVyLmgiLAorICAgICIrcnRjX2Jhc2Uv
ZGVwcmVjYXRpb24uaCIsCisgIF0sCisKKyAgImF1ZGlvX2VuY29kZXJfZmFjdG9yeVwuaCI6IFsK
KyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAorICBdLAorCisgICJhdWRpb19lbmNvZGVyX2Zh
Y3RvcnlfdGVtcGxhdGVcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0Lmgi
LAorICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIsCisgIF0sCisKKyAgImJ1aWx0aW5f
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5XC5oIjogWworICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9w
dHIuaCIsCisgIF0sCisKKyAgImJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5XC5oIjogWwor
ICAgICIrcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIsCisgIF0sCisKKyAgImZyYW1lZGVjcnlw
dG9yaW50ZXJmYWNlXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisgIF0sCisK
KyAgImZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291
bnQuaCIsCisgIF0sCisKKyAgIm9ydGNmYWN0b3J5aW50ZXJmYWNlXC5oIjogWworICAgICIrcnRj
X2Jhc2UvbmV0d29yay5oIiwKKyAgICAiK3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiLAorICAg
ICIrcnRjX2Jhc2UvdGhyZWFkLmgiLAorICBdLAorCisgICJ1ZHB0cmFuc3BvcnRpbnRlcmZhY2Vc
LmgiOiBbCisgICAgIitydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiLAorICBdLAorCisgICJydGNz
dGF0c2NvbGxlY3RvcmNhbGxiYWNrXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIs
CisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwKKworICAicnRjc3RhdHNy
ZXBvcnRcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudC5oIiwKKyAgICAiK3J0Y19iYXNl
L3JlZmNvdW50ZWRvYmplY3QuaCIsCisgICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwK
KyAgXSwKKworICAiYXVkaW9wcm9jX2Zsb2F0XC5oIjogWworICAgICIrbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIiwKKyAgXSwKKworICAiZmFrZV9m
cmFtZV9kZWNyeXB0b3JcLmgiOiBbCisgICAgIitydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0Lmgi
LAorICBdLAorCisgICJmYWtlX2ZyYW1lX2VuY3J5cHRvclwuaCI6IFsKKyAgICAiK3J0Y19iYXNl
L3JlZmNvdW50ZWRvYmplY3QuaCIsCisgIF0sCisKKyAgImZha2Vjb25zdHJhaW50c1wuaCI6IFsK
KyAgICAiK3J0Y19iYXNlL3N0cmluZ2VuY29kZS5oIiwKKyAgXSwKKworICAibW9jay4qXC5oIjog
WworICAgICIrdGVzdC9nbW9jay5oIiwKKyAgXSwKKworICAic2ltdWxhdGVkX25ldHdvcmtcLmgi
OiBbCisgICAgIitydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIsCisgICAgIitydGNfYmFzZS9y
YW5kb20uaCIsCisgICAgIitydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIsCisgIF0sCisK
KyAgInRlc3RfZGVwZW5kZW5jeV9mYWN0b3J5XC5oIjogWworICAgICIrcnRjX2Jhc2UvdGhyZWFk
X2NoZWNrZXIuaCIsCisgIF0sCisKKyAgInZpZGVvY29kZWNfdGVzdF9maXh0dXJlXC5oIjogWwor
ICAgICIrbW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2Uu
aCIKKyAgXSwKKworICAiaTAxMF9idWZmZXJcLmgiOiBbCisgICAgIitydGNfYmFzZS9tZW1vcnkv
YWxpZ25lZF9tYWxsb2MuaCIKKyAgXSwKKworICAiaTQyMF9idWZmZXJcLmgiOiBbCisgICAgIity
dGNfYmFzZS9tZW1vcnkvYWxpZ25lZF9tYWxsb2MuaCIsCisgIF0sCisKKyAgInZpZGVvX2ZyYW1l
X2J1ZmZlclwuaCI6IFsKKyAgICAiK3J0Y19iYXNlL3JlZmNvdW50LmgiLAorICAgICIrcnRjX2Jh
c2Uvc2NvcGVkX3JlZl9wdHIuaCIsCisgIF0sCisKKyAgInZpZGVvX3RpbWluZ1wuaCI6IFsKKyAg
ICAiK3J0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIsCisgIF0sCisKKyAgInZp
ZGVvX2VuY29kZXJfY29uZmlnXC5oIjogWworICAgICIrcnRjX2Jhc2UvcmVmY291bnQuaCIsCisg
ICAgIitydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIiwKKyAgXSwKKworICAjIC5jYyBmaWxlcyBp
biBhcGkvIHNob3VsZCBub3QgYmUgcmVzdHJpY3RlZCBpbiB3aGF0IHRoZXkgY2FuICNpbmNsdWRl
LAorICAjIHNvIHdlIHJlLWFkZCBhbGwgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcmllcyBoZXJlLiAo
VGhhdCdzIGJlY2F1c2UgLmgKKyAgIyBmaWxlcyBsZWFrIHRoZWlyICNpbmNsdWRlcyB0byB3aG9l
dmVyJ3MgI2luY2x1ZGluZyB0aGVtLCBidXQgLmNjIGZpbGVzCisgICMgZG8gbm90IHNpbmNlIG5v
IG9uZSAjaW5jbHVkZXMgdGhlbS4pCiAgICIuKlwuY2MiOiBbCi0gICAgIittb2R1bGVzL2F1ZGlv
X2NvZGluZyIsCi0gICAgIittb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmciLAotICAgICIrbW9kdWxl
cy92aWRlb19jb2RpbmciLAorICAgICIrYXVkaW8iLAorICAgICIrY2FsbCIsCisgICAgIitjb21t
b25fYXVkaW8iLAorICAgICIrY29tbW9uX3ZpZGVvIiwKKyAgICAiK2V4YW1wbGVzIiwKKyAgICAi
K2xvZ2dpbmciLAorICAgICIrbWVkaWEiLAorICAgICIrbW9kdWxlcyIsCisgICAgIitwMnAiLAor
ICAgICIrcGMiLAorICAgICIrcnRjX2Jhc2UiLAorICAgICIrcnRjX3Rvb2xzIiwKKyAgICAiK3Nk
ayIsCisgICAgIitzdGF0cyIsCisgICAgIitzeXN0ZW1fd3JhcHBlcnMiLAorICAgICIrdGVzdCIs
CisgICAgIit0b29scyIsCisgICAgIit0b29sc193ZWJydGMiLAorICAgICIrdmlkZW8iLAorICAg
ICIrdGhpcmRfcGFydHkiLAogICBdLAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9PV05FUlMKaW5kZXggNTkzZGUyMzBkMzc4NzlhMjU5
OGY1ODU5ZGYyZDQzMmFhY2ZiMzJiMi4uMWFlNWM2NDZlMjMxN2FiYWUzNTQ2NGJhODNmYTNmZmUw
YmUxMmEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvT1dORVJTCkBAIC0xMywzICsxMywxMCBAQCBwZXItZmlsZSBwZWVyY29ubmVj
dGlvbio9aGJvc0B3ZWJydGMub3JnCiAKIHBlci1maWxlICouZ249cGhvZ2x1bmRAd2VicnRjLm9y
ZwogcGVyLWZpbGUgKi5nbmk9cGhvZ2x1bmRAd2VicnRjLm9yZworCitwZXItZmlsZSBERVBTPW1i
b25hZGVpQHdlYnJ0Yy5vcmcKK3Blci1maWxlIERFUFM9a3dpYmVyZ0B3ZWJydGMub3JnCisKK3Bl
ci1maWxlIG1lZGlhX3RyYW5zcG9ydCo9c3VraGFub3ZAd2VicnRjLm9yZworcGVyLWZpbGUgbWVk
aWFfdHJhbnNwb3J0Kj1wc2xhQHdlYnJ0Yy5vcmcKK3Blci1maWxlIG1lZGlhX3RyYW5zcG9ydCo9
bWVsbGVtQHdlYnJ0Yy5vcmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9CVUlMRC5nbgppbmRleCAyODZhNWE2ZjFj
NmNmNTIzZjQyMGZlNGZmN2M5MjdiNDM5YmM1MDE1Li5iNjZiZTc2MzQzMWY3MmIzM2YwMDBmNTQx
ZGNjMGMxZGExODM4OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL0JVSUxELmduCkBAIC0zOSw2ICszOSwy
NyBAQCBydGNfc291cmNlX3NldCgiYWVjM19jb25maWciKSB7CiAgICAgImVjaG9fY2FuY2VsbGVy
M19jb25maWcuY2MiLAogICAgICJlY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiLAogICBdCisgIGRl
cHMgPSBbCisgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uLy4uL3J0Y19iYXNl
OnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAor
ICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCisgIF0KK30KKworcnRjX3Nv
dXJjZV9zZXQoImFlYzNfY29uZmlnX2pzb24iKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisg
IHNvdXJjZXMgPSBbCisgICAgImVjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbi5jYyIsCisgICAg
ImVjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbi5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6
YWVjM19jb25maWciLAorICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisg
ICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19qc29uIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVt
OnJ0Y19leHBvcnQiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
OnN0cmluZ3MiLAorICBdCiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJhZWMzX2ZhY3RvcnkiKSB7CkBA
IC01NCw2ICs3NSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhZWMzX2ZhY3RvcnkiKSB7CiAgICAgIjpl
Y2hvX2NvbnRyb2wiLAogICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMyIs
CiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRj
X2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnkiLAogICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hv
X2NhbmNlbGxlcjNfY29uZmlnLmNjCmluZGV4IDNiMDNkMTNjMWNhNTFkOTEzZTllZTg0Mjk4NTlh
NWUzMTUyOWMxMTAuLjNlYjJhOGQyYTAwOWI4ZmUxYTRlZjg3MGU3NmRjZTQ3MDkxODkyNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmNj
CkBAIC05LDcgKzksMzYgQEAKICAqLwogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxl
cjNfY29uZmlnLmgiCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y21hdGg+CisK
KyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmlj
cy9zYWZlX21pbm1heC5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7Citib29s
IExpbWl0KGZsb2F0KiB2YWx1ZSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpIHsKKyAgZmxvYXQgY2xh
bXBlZCA9IHJ0Yzo6U2FmZUNsYW1wKCp2YWx1ZSwgbWluLCBtYXgpOworICBjbGFtcGVkID0gc3Rk
Ojppc2Zpbml0ZShjbGFtcGVkKSA/IGNsYW1wZWQgOiBtaW47CisgIGJvb2wgcmVzID0gKnZhbHVl
ID09IGNsYW1wZWQ7CisgICp2YWx1ZSA9IGNsYW1wZWQ7CisgIHJldHVybiByZXM7Cit9CisKK2Jv
b2wgTGltaXQoc2l6ZV90KiB2YWx1ZSwgc2l6ZV90IG1pbiwgc2l6ZV90IG1heCkgeworICBzaXpl
X3QgY2xhbXBlZCA9IHJ0Yzo6U2FmZUNsYW1wKCp2YWx1ZSwgbWluLCBtYXgpOworICBib29sIHJl
cyA9ICp2YWx1ZSA9PSBjbGFtcGVkOworICAqdmFsdWUgPSBjbGFtcGVkOworICByZXR1cm4gcmVz
OworfQorCitib29sIExpbWl0KGludCogdmFsdWUsIGludCBtaW4sIGludCBtYXgpIHsKKyAgaW50
IGNsYW1wZWQgPSBydGM6OlNhZmVDbGFtcCgqdmFsdWUsIG1pbiwgbWF4KTsKKyAgYm9vbCByZXMg
PSAqdmFsdWUgPT0gY2xhbXBlZDsKKyAgKnZhbHVlID0gY2xhbXBlZDsKKyAgcmV0dXJuIHJlczsK
K30KK30gIC8vIG5hbWVzcGFjZQogCiBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RWNob0NhbmNlbGxl
cjNDb25maWcoKSA9IGRlZmF1bHQ7CiBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6RWNob0NhbmNlbGxl
cjNDb25maWcoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGUpID0KQEAgLTE4LDkgKzQ3LDYg
QEAgRWNob0NhbmNlbGxlcjNDb25maWc6OkRlbGF5OjpEZWxheSgpID0gZGVmYXVsdDsKIEVjaG9D
YW5jZWxsZXIzQ29uZmlnOjpEZWxheTo6RGVsYXkoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWc6
OkRlbGF5JiBlKSA9CiAgICAgZGVmYXVsdDsKIAotRWNob0NhbmNlbGxlcjNDb25maWc6Ok1hc2s6
Ok1hc2soKSA9IGRlZmF1bHQ7Ci1FY2hvQ2FuY2VsbGVyM0NvbmZpZzo6TWFzazo6TWFzayhjb25z
dCBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6TWFzayYgbSkgPSBkZWZhdWx0OwotCiBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZzo6RWNob01vZGVsOjpFY2hvTW9kZWwoKSA9IGRlZmF1bHQ7CiBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZzo6RWNob01vZGVsOjpFY2hvTW9kZWwoCiAgICAgY29uc3QgRWNob0NhbmNlbGxl
cjNDb25maWc6OkVjaG9Nb2RlbCYgZSkgPSBkZWZhdWx0OwpAQCAtNTEsNCArNzcsMTc5IEBAIEVj
aG9DYW5jZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpUdW5pbmc6OlR1bmluZyhNYXNraW5nVGhy
ZXNob2xkcyBtYXNrX2xmLAogRWNob0NhbmNlbGxlcjNDb25maWc6OlN1cHByZXNzb3I6OlR1bmlu
Zzo6VHVuaW5nKAogICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpU
dW5pbmcmIGUpID0gZGVmYXVsdDsKIAorYm9vbCBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6VmFsaWRh
dGUoRWNob0NhbmNlbGxlcjNDb25maWcqIGNvbmZpZykgeworICBSVENfRENIRUNLKGNvbmZpZyk7
CisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKiBjID0gY29uZmlnOworICBib29sIHJlcyA9IHRydWU7
CisKKyAgaWYgKGMtPmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9yICE9IDQgJiYKKyAgICAgIGMt
PmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9yICE9IDgpIHsKKyAgICBjLT5kZWxheS5kb3duX3Nh
bXBsaW5nX2ZhY3RvciA9IDQ7CisgICAgcmVzID0gZmFsc2U7CisgIH0KKyAgaWYgKGMtPmRlbGF5
LmRlbGF5X2hlYWRyb29tX2Jsb2NrcyA8PSAxICYmCisgICAgICBjLT5kZWxheS5oeXN0ZXJlc2lz
X2xpbWl0XzFfYmxvY2tzID09IDEpIHsKKyAgICBjLT5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzFf
YmxvY2tzID0gMDsKKyAgICByZXMgPSBmYWxzZTsKKyAgfQorICByZXMgPSByZXMgJiBMaW1pdCgm
Yy0+ZGVsYXkuZGVmYXVsdF9kZWxheSwgMCwgNTAwMCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZj
LT5kZWxheS5udW1fZmlsdGVycywgMCwgNTAwMCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5k
ZWxheS5hcGlfY2FsbF9qaXR0ZXJfYmxvY2tzLCAxLCA1MDAwKTsKKyAgcmVzID0gcmVzICYgTGlt
aXQoJmMtPmRlbGF5Lm1pbl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tzLCAwLCA1MDAwKTsKKyAgcmVz
ID0gcmVzICYgTGltaXQoJmMtPmRlbGF5LmRlbGF5X2hlYWRyb29tX2Jsb2NrcywgMCwgNTAwMCk7
CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tz
LCAwLCA1MDAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmRlbGF5Lmh5c3RlcmVzaXNfbGlt
aXRfMl9ibG9ja3MsIDAsIDUwMDApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZGVsYXkuc2tl
d19oeXN0ZXJlc2lzX2Jsb2NrcywgMCwgNTAwMCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5k
ZWxheS5maXhlZF9jYXB0dXJlX2RlbGF5X3NhbXBsZXMsIDAsIDUwMDApOworICByZXMgPSByZXMg
JiBMaW1pdCgmYy0+ZGVsYXkuZGVsYXlfZXN0aW1hdGVfc21vb3RoaW5nLCAwLmYsIDEuZik7Cisg
IHJlcyA9IHJlcyAmIExpbWl0KCZjLT5kZWxheS5kZWxheV9jYW5kaWRhdGVfZGV0ZWN0aW9uX3Ro
cmVzaG9sZCwgMC5mLCAxLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZGVsYXkuZGVsYXlf
c2VsZWN0aW9uX3RocmVzaG9sZHMuaW5pdGlhbCwgMSwgMjUwKTsKKyAgcmVzID0gcmVzICYgTGlt
aXQoJmMtPmRlbGF5LmRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzLmNvbnZlcmdlZCwgMSwgMjUw
KTsKKworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2Nrcywg
MSwgNTApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW4ubGVha2FnZV9jb252
ZXJnZWQsIDAuZiwgMTAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5tYWlu
LmxlYWthZ2VfZGl2ZXJnZWQsIDAuZiwgMTAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMt
PmZpbHRlci5tYWluLmVycm9yX2Zsb29yLCAwLmYsIDEwMDAuZik7CisgIHJlcyA9IHJlcyAmIExp
bWl0KCZjLT5maWx0ZXIubWFpbi5lcnJvcl9jZWlsLCAwLmYsIDEwMDAwMDAwMC5mKTsKKyAgcmVz
ID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5tYWluLm5vaXNlX2dhdGUsIDAuZiwgMTAwMDAwMDAw
LmYpOworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIubWFpbl9pbml0aWFsLmxlbmd0
aF9ibG9ja3MsIDEsIDUwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5tYWluX2lu
aXRpYWwubGVha2FnZV9jb252ZXJnZWQsIDAuZiwgMTAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGlt
aXQoJmMtPmZpbHRlci5tYWluX2luaXRpYWwubGVha2FnZV9kaXZlcmdlZCwgMC5mLCAxMDAwLmYp
OworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW5faW5pdGlhbC5lcnJvcl9mbG9v
ciwgMC5mLCAxMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLm1haW5faW5p
dGlhbC5lcnJvcl9jZWlsLCAwLmYsIDEwMDAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQo
JmMtPmZpbHRlci5tYWluX2luaXRpYWwubm9pc2VfZ2F0ZSwgMC5mLCAxMDAwMDAwMDAuZik7CisK
KyAgaWYgKGMtPmZpbHRlci5tYWluLmxlbmd0aF9ibG9ja3MgPCBjLT5maWx0ZXIubWFpbl9pbml0
aWFsLmxlbmd0aF9ibG9ja3MpIHsKKyAgICBjLT5maWx0ZXIubWFpbl9pbml0aWFsLmxlbmd0aF9i
bG9ja3MgPSBjLT5maWx0ZXIubWFpbi5sZW5ndGhfYmxvY2tzOworICAgIHJlcyA9IGZhbHNlOwor
ICB9CisKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmZpbHRlci5zaGFkb3cubGVuZ3RoX2Jsb2Nr
cywgMSwgNTApOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZmlsdGVyLnNoYWRvdy5yYXRlLCAw
LmYsIDEuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIuc2hhZG93Lm5vaXNlX2dh
dGUsIDAuZiwgMTAwMDAwMDAwLmYpOworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIu
c2hhZG93X2luaXRpYWwubGVuZ3RoX2Jsb2NrcywgMSwgNTApOworICByZXMgPSByZXMgJiBMaW1p
dCgmYy0+ZmlsdGVyLnNoYWRvd19pbml0aWFsLnJhdGUsIDAuZiwgMS5mKTsKKyAgcmVzID0gcmVz
ICYgTGltaXQoJmMtPmZpbHRlci5zaGFkb3dfaW5pdGlhbC5ub2lzZV9nYXRlLCAwLmYsIDEwMDAw
MDAwMC5mKTsKKworICBpZiAoYy0+ZmlsdGVyLnNoYWRvdy5sZW5ndGhfYmxvY2tzIDwgYy0+Zmls
dGVyLnNoYWRvd19pbml0aWFsLmxlbmd0aF9ibG9ja3MpIHsKKyAgICBjLT5maWx0ZXIuc2hhZG93
X2luaXRpYWwubGVuZ3RoX2Jsb2NrcyA9IGMtPmZpbHRlci5zaGFkb3cubGVuZ3RoX2Jsb2NrczsK
KyAgICByZXMgPSBmYWxzZTsKKyAgfQorCisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5maWx0ZXIu
Y29uZmlnX2NoYW5nZV9kdXJhdGlvbl9ibG9ja3MsIDAsIDEwMDAwMCk7CisgIHJlcyA9IHJlcyAm
IExpbWl0KCZjLT5maWx0ZXIuaW5pdGlhbF9zdGF0ZV9zZWNvbmRzLCAwLmYsIDEwMC5mKTsKKwor
ICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZXJsZS5taW4sIDEuZiwgMTAwMDAwLmYpOworICByZXMg
PSByZXMgJiBMaW1pdCgmYy0+ZXJsZS5tYXhfbCwgMS5mLCAxMDAwMDAuZik7CisgIHJlcyA9IHJl
cyAmIExpbWl0KCZjLT5lcmxlLm1heF9oLCAxLmYsIDEwMDAwMC5mKTsKKyAgaWYgKGMtPmVybGUu
bWluID4gYy0+ZXJsZS5tYXhfbCB8fCBjLT5lcmxlLm1pbiA+IGMtPmVybGUubWF4X2gpIHsKKyAg
ICBjLT5lcmxlLm1pbiA9IHN0ZDo6bWluKGMtPmVybGUubWF4X2wsIGMtPmVybGUubWF4X2gpOwor
ICAgIHJlcyA9IGZhbHNlOworICB9CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lcmxlLm51bV9z
ZWN0aW9ucywgMSwgYy0+ZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2Nrcyk7CisKKyAgcmVzID0gcmVz
ICYgTGltaXQoJmMtPmVwX3N0cmVuZ3RoLmxmLCAwLmYsIDEwMDAwMDAuZik7CisgIHJlcyA9IHJl
cyAmIExpbWl0KCZjLT5lcF9zdHJlbmd0aC5tZiwgMC5mLCAxMDAwMDAwLmYpOworICByZXMgPSBy
ZXMgJiBMaW1pdCgmYy0+ZXBfc3RyZW5ndGguaGYsIDAuZiwgMTAwMDAwMC5mKTsKKyAgcmVzID0g
cmVzICYgTGltaXQoJmMtPmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVuLCAtMS5mLCAxLmYpOworCisg
IHJlcyA9CisgICAgICByZXMgJiBMaW1pdCgmYy0+ZWNob19hdWRpYmlsaXR5Lmxvd19yZW5kZXJf
bGltaXQsIDAuZiwgMzI3NjguZiAqIDMyNzY4LmYpOworICByZXMgPSByZXMgJgorICAgICAgICBM
aW1pdCgmYy0+ZWNob19hdWRpYmlsaXR5Lm5vcm1hbF9yZW5kZXJfbGltaXQsIDAuZiwgMzI3Njgu
ZiAqIDMyNzY4LmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19hdWRpYmlsaXR5LmZs
b29yX3Bvd2VyLCAwLmYsIDMyNzY4LmYgKiAzMjc2OC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQo
JmMtPmVjaG9fYXVkaWJpbGl0eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9sZiwgMC5mLAorICAgICAg
ICAgICAgICAgICAgICAzMjc2OC5mICogMzI3NjguZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZj
LT5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfbWYsIDAuZiwKKyAgICAgICAg
ICAgICAgICAgICAgMzI3NjguZiAqIDMyNzY4LmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+
ZWNob19hdWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhyZXNob2xkX2hmLCAwLmYsCisgICAgICAgICAg
ICAgICAgICAgIDMyNzY4LmYgKiAzMjc2OC5mKTsKKworICByZXMgPSByZXMgJgorICAgICAgICBM
aW1pdCgmYy0+cmVuZGVyX2xldmVscy5hY3RpdmVfcmVuZGVyX2xpbWl0LCAwLmYsIDMyNzY4LmYg
KiAzMjc2OC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPnJlbmRlcl9sZXZlbHMucG9vcl9l
eGNpdGF0aW9uX3JlbmRlcl9saW1pdCwgMC5mLAorICAgICAgICAgICAgICAgICAgICAzMjc2OC5m
ICogMzI3NjguZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5yZW5kZXJfbGV2ZWxzLnBvb3Jf
ZXhjaXRhdGlvbl9yZW5kZXJfbGltaXRfZHM4LCAwLmYsCisgICAgICAgICAgICAgICAgICAgIDMy
NzY4LmYgKiAzMjc2OC5mKTsKKworICByZXMgPQorICAgICAgcmVzICYgTGltaXQoJmMtPmVjaG9f
cmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmluaXRpYWxfZ2FpbiwgMC5mLCAxLmYpOworICBy
ZXMgPSByZXMgJiBMaW1pdCgmYy0+ZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuZmly
c3Rfbm9uX3plcm9fZ2FpbiwKKyAgICAgICAgICAgICAgICAgICAgMC5mLCAxLmYpOworICByZXMg
PSByZXMgJiBMaW1pdCgmYy0+ZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAubm9uX3pl
cm9fZ2Fpbl9ibG9ja3MsCisgICAgICAgICAgICAgICAgICAgIDAsIDEwMDAwMCk7CisgIHJlcyA9
IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5lY2hvX3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1
cC5mdWxsX2dhaW5fYmxvY2tzLCAwLCAxMDAwMDApOworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZj
LT5lY2hvX21vZGVsLm5vaXNlX2Zsb29yX2hvbGQsIDAsIDEwMDApOworICByZXMgPSByZXMgJiBM
aW1pdCgmYy0+ZWNob19tb2RlbC5taW5fbm9pc2VfZmxvb3JfcG93ZXIsIDAsIDIwMDAwMDAuZik7
CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX21vZGVsLnN0YXRpb25hcnlfZ2F0ZV9zbG9w
ZSwgMCwgMTAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9kZWwubm9p
c2VfZ2F0ZV9wb3dlciwgMCwgMTAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVj
aG9fbW9kZWwubm9pc2VfZ2F0ZV9zbG9wZSwgMCwgMTAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYg
TGltaXQoJmMtPmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZSwgMCwgMTAwKTsKKyAg
cmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemUs
IDAsIDEwMCk7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5lY2hvX21vZGVsLnJlbmRlcl9wcmVf
d2luZG93X3NpemVfaW5pdCwgMCwgMTAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPmVjaG9f
bW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemVfaW5pdCwgMCwgMTAwKTsKKyAgcmVzID0gcmVz
ICYgTGltaXQoJmMtPmVjaG9fbW9kZWwubm9ubGluZWFyX2hvbGQsIDAsIDEwMCk7CisgIHJlcyA9
IHJlcyAmIExpbWl0KCZjLT5lY2hvX21vZGVsLm5vbmxpbmVhcl9yZWxlYXNlLCAwLCAxLmYpOwor
CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLm5lYXJlbmRfYXZlcmFnZV9ibG9j
a3MsIDEsIDUwMDApOworCisgIHJlcyA9IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5zdXBwcmVz
c29yLm5vcm1hbF90dW5pbmcubWFza19sZi5lbnJfdHJhbnNwYXJlbnQsIDAuZiwgMTAwLmYpOwor
ICByZXMgPSByZXMgJgorICAgICAgICBMaW1pdCgmYy0+c3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5n
Lm1hc2tfbGYuZW5yX3N1cHByZXNzLCAwLmYsIDEwMC5mKTsKKyAgcmVzID0gcmVzICYKKyAgICAg
ICAgTGltaXQoJmMtPnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2xmLmVtcl90cmFuc3Bh
cmVudCwgMC5mLCAxMDAuZik7CisgIHJlcyA9IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5zdXBw
cmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5lbnJfdHJhbnNwYXJlbnQsIDAuZiwgMTAwLmYp
OworICByZXMgPSByZXMgJgorICAgICAgICBMaW1pdCgmYy0+c3VwcHJlc3Nvci5ub3JtYWxfdHVu
aW5nLm1hc2tfaGYuZW5yX3N1cHByZXNzLCAwLmYsIDEwMC5mKTsKKyAgcmVzID0gcmVzICYKKyAg
ICAgICAgTGltaXQoJmMtPnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2hmLmVtcl90cmFu
c3BhcmVudCwgMC5mLCAxMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29y
Lm5vcm1hbF90dW5pbmcubWF4X2luY19mYWN0b3IsIDAuZiwgMTAwLmYpOworICByZXMgPSByZXMg
JiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1heF9kZWNfZmFjdG9yX2xmLCAw
LmYsIDEwMC5mKTsKKworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5uZWFyZW5k
X3R1bmluZy5tYXNrX2xmLmVucl90cmFuc3BhcmVudCwgMC5mLAorICAgICAgICAgICAgICAgICAg
ICAxMDAuZik7CisgIHJlcyA9IHJlcyAmCisgICAgICAgIExpbWl0KCZjLT5zdXBwcmVzc29yLm5l
YXJlbmRfdHVuaW5nLm1hc2tfbGYuZW5yX3N1cHByZXNzLCAwLmYsIDEwMC5mKTsKKyAgcmVzID0g
cmVzICYgTGltaXQoJmMtPnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZi5lbXJfdHJh
bnNwYXJlbnQsIDAuZiwKKyAgICAgICAgICAgICAgICAgICAgMTAwLmYpOworICByZXMgPSByZXMg
JiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXNrX2hmLmVucl90cmFuc3Bh
cmVudCwgMC5mLAorICAgICAgICAgICAgICAgICAgICAxMDAuZik7CisgIHJlcyA9IHJlcyAmCisg
ICAgICAgIExpbWl0KCZjLT5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfaGYuZW5yX3N1
cHByZXNzLCAwLmYsIDEwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPnN1cHByZXNzb3Iu
bmVhcmVuZF90dW5pbmcubWFza19oZi5lbXJfdHJhbnNwYXJlbnQsIDAuZiwKKyAgICAgICAgICAg
ICAgICAgICAgMTAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5uZWFy
ZW5kX3R1bmluZy5tYXhfaW5jX2ZhY3RvciwgMC5mLCAxMDAuZik7CisgIHJlcyA9CisgICAgICBy
ZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXhfZGVjX2ZhY3Rvcl9s
ZiwgMC5mLCAxMDAuZik7CisKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPnN1cHByZXNzb3IuZG9t
aW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uZW5yX3RocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAg
ICAgMC5mLCAxMDAwMDAwLmYpOworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5k
b21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5zbnJfdGhyZXNob2xkLAorICAgICAgICAgICAgICAg
ICAgICAwLmYsIDEwMDAwMDAuZik7CisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29y
LmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmhvbGRfZHVyYXRpb24sIDAsCisgICAgICAgICAg
ICAgICAgICAgIDEwMDAwKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPnN1cHByZXNzb3IuZG9t
aW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24udHJpZ2dlcl90aHJlc2hvbGQsCisgICAgICAgICAgICAg
ICAgICAgIDAsIDEwMDAwKTsKKworICByZXMgPSByZXMgJiBMaW1pdCgmYy0+c3VwcHJlc3Nvci5o
aWdoX2JhbmRzX3N1cHByZXNzaW9uLmVucl90aHJlc2hvbGQsIDAuZiwKKyAgICAgICAgICAgICAg
ICAgICAgMTAwMDAwMC5mKTsKKyAgcmVzID0gcmVzICYgTGltaXQoJmMtPnN1cHByZXNzb3IuaGln
aF9iYW5kc19zdXBwcmVzc2lvbi5tYXhfZ2Fpbl9kdXJpbmdfZWNobywKKyAgICAgICAgICAgICAg
ICAgICAgMC5mLCAxLmYpOworCisgIHJlcyA9IHJlcyAmIExpbWl0KCZjLT5zdXBwcmVzc29yLmZs
b29yX2ZpcnN0X2luY3JlYXNlLCAwLmYsIDEwMDAwMDAuZik7CisKKyAgaWYgKGMtPmRlbGF5LmRl
bGF5X2hlYWRyb29tX2Jsb2NrcyA+CisgICAgICBjLT5maWx0ZXIubWFpbl9pbml0aWFsLmxlbmd0
aF9ibG9ja3MgLSAxKSB7CisgICAgYy0+ZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tzID0gYy0+
ZmlsdGVyLm1haW5faW5pdGlhbC5sZW5ndGhfYmxvY2tzIC0gMTsKKyAgICByZXMgPSBmYWxzZTsK
KyAgfQorCisgIHJldHVybiByZXM7Cit9CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8v
ZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaAppbmRleCBlNzM3
NmVkN2JjZDNjNGViOWM4MjZjNDM0NDE3MjA1MWFkNmViZGQ1Li5lYTZlNTFiYWY5YzUzZDEyMzZm
MDc1OTU1NmIyNmUyZDkyMWFjNzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9l
Y2hvX2NhbmNlbGxlcjNfY29uZmlnLmgKQEAgLTEzLDE4ICsxMywzMSBAQAogCiAjaW5jbHVkZSA8
c3RkZGVmLmg+ICAvLyBzaXplX3QKIAorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhw
b3J0LmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBDb25maWd1cmF0aW9uIHN0cnVjdCBm
b3IgRWNob0NhbmNlbGxlcjMKLXN0cnVjdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyB7CitzdHJ1Y3Qg
UlRDX0VYUE9SVCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyB7CisgIC8vIENoZWNrcyBhbmQgdXBkYXRl
cyB0aGUgY29uZmlnIHBhcmFtZXRlcnMgdG8gbGllIHdpdGhpbiAobW9zdGx5KSByZWFzb25hYmxl
CisgIC8vIHJhbmdlcy4gUmV0dXJucyB0cnVlIGlmIGFuZCBvbmx5IG9mIHRoZSBjb25maWcgZGlk
IG5vdCBuZWVkIHRvIGJlIGNoYW5nZWQuCisgIHN0YXRpYyBib29sIFZhbGlkYXRlKEVjaG9DYW5j
ZWxsZXIzQ29uZmlnKiBjb25maWcpOworCiAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKCk7CiAgIEVj
aG9DYW5jZWxsZXIzQ29uZmlnKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBlKTsKKworICBz
dHJ1Y3QgQnVmZmVyaW5nIHsKKyAgICBib29sIHVzZV9uZXdfcmVuZGVyX2J1ZmZlcmluZyA9IHRy
dWU7CisgICAgc2l6ZV90IGV4Y2Vzc19yZW5kZXJfZGV0ZWN0aW9uX2ludGVydmFsX2Jsb2NrcyA9
IDI1MDsKKyAgICBzaXplX3QgbWF4X2FsbG93ZWRfZXhjZXNzX3JlbmRlcl9ibG9ja3MgPSA4Owor
ICB9IGJ1ZmZlcmluZzsKKwogICBzdHJ1Y3QgRGVsYXkgewogICAgIERlbGF5KCk7CiAgICAgRGVs
YXkoY29uc3QgRGVsYXkmIGUpOwogICAgIHNpemVfdCBkZWZhdWx0X2RlbGF5ID0gNTsKICAgICBz
aXplX3QgZG93bl9zYW1wbGluZ19mYWN0b3IgPSA0OwotICAgIHNpemVfdCBudW1fZmlsdGVycyA9
IDY7CisgICAgc2l6ZV90IG51bV9maWx0ZXJzID0gNTsKICAgICBzaXplX3QgYXBpX2NhbGxfaml0
dGVyX2Jsb2NrcyA9IDI2OwogICAgIHNpemVfdCBtaW5fZWNob19wYXRoX2RlbGF5X2Jsb2NrcyA9
IDA7CiAgICAgc2l6ZV90IGRlbGF5X2hlYWRyb29tX2Jsb2NrcyA9IDI7CkBAIC0zNyw3ICs1MCw3
IEBAIHN0cnVjdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyB7CiAgICAgc3RydWN0IERlbGF5U2VsZWN0
aW9uVGhyZXNob2xkcyB7CiAgICAgICBpbnQgaW5pdGlhbDsKICAgICAgIGludCBjb252ZXJnZWQ7
Ci0gICAgfSBkZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcyA9IHsyNSwgMjV9OworICAgIH0gZGVs
YXlfc2VsZWN0aW9uX3RocmVzaG9sZHMgPSB7NSwgMjB9OwogICB9IGRlbGF5OwogCiAgIHN0cnVj
dCBGaWx0ZXIgewpAQCAtNDYsNiArNTksNyBAQCBzdHJ1Y3QgRWNob0NhbmNlbGxlcjNDb25maWcg
ewogICAgICAgZmxvYXQgbGVha2FnZV9jb252ZXJnZWQ7CiAgICAgICBmbG9hdCBsZWFrYWdlX2Rp
dmVyZ2VkOwogICAgICAgZmxvYXQgZXJyb3JfZmxvb3I7CisgICAgICBmbG9hdCBlcnJvcl9jZWls
OwogICAgICAgZmxvYXQgbm9pc2VfZ2F0ZTsKICAgICB9OwogCkBAIC01NSwxMCArNjksMTEgQEAg
c3RydWN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnIHsKICAgICAgIGZsb2F0IG5vaXNlX2dhdGU7CiAg
ICAgfTsKIAotICAgIE1haW5Db25maWd1cmF0aW9uIG1haW4gPSB7MTMsIDAuMDAwMDVmLCAwLjAx
ZiwgMC4xZiwgMjAwNzUzNDQuZn07CisgICAgTWFpbkNvbmZpZ3VyYXRpb24gbWFpbiA9IHsxMywg
MC4wMDAwNWYsIDAuMDVmLCAwLjAwMWYsIDIuZiwgMjAwNzUzNDQuZn07CiAgICAgU2hhZG93Q29u
ZmlndXJhdGlvbiBzaGFkb3cgPSB7MTMsIDAuN2YsIDIwMDc1MzQ0LmZ9OwogCi0gICAgTWFpbkNv
bmZpZ3VyYXRpb24gbWFpbl9pbml0aWFsID0gezEyLCAwLjAwNWYsIDAuNWYsIDAuMDAxZiwgMjAw
NzUzNDQuZn07CisgICAgTWFpbkNvbmZpZ3VyYXRpb24gbWFpbl9pbml0aWFsID0gezEyLCAgICAg
MC4wMDVmLCAwLjVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAw
MWYsIDIuZiwgICAgMjAwNzUzNDQuZn07CiAgICAgU2hhZG93Q29uZmlndXJhdGlvbiBzaGFkb3df
aW5pdGlhbCA9IHsxMiwgMC45ZiwgMjAwNzUzNDQuZn07CiAKICAgICBzaXplX3QgY29uZmlnX2No
YW5nZV9kdXJhdGlvbl9ibG9ja3MgPSAyNTA7CkBAIC03MiwzOCArODcsMTkgQEAgc3RydWN0IEVj
aG9DYW5jZWxsZXIzQ29uZmlnIHsKICAgICBmbG9hdCBtYXhfbCA9IDQuZjsKICAgICBmbG9hdCBt
YXhfaCA9IDEuNWY7CiAgICAgYm9vbCBvbnNldF9kZXRlY3Rpb24gPSB0cnVlOworICAgIHNpemVf
dCBudW1fc2VjdGlvbnMgPSAxOwogICB9IGVybGU7CiAKICAgc3RydWN0IEVwU3RyZW5ndGggewog
ICAgIGZsb2F0IGxmID0gMS5mOwogICAgIGZsb2F0IG1mID0gMS5mOwogICAgIGZsb2F0IGhmID0g
MS5mOwotICAgIGZsb2F0IGRlZmF1bHRfbGVuID0gMC44OGY7CisgICAgZmxvYXQgZGVmYXVsdF9s
ZW4gPSAwLjgzZjsKICAgICBib29sIHJldmVyYl9iYXNlZF9vbl9yZW5kZXIgPSB0cnVlOwogICAg
IGJvb2wgZWNob19jYW5fc2F0dXJhdGUgPSB0cnVlOwogICAgIGJvb2wgYm91bmRlZF9lcmwgPSBm
YWxzZTsKICAgfSBlcF9zdHJlbmd0aDsKIAotICBzdHJ1Y3QgTWFzayB7Ci0gICAgTWFzaygpOwot
ICAgIE1hc2soY29uc3QgTWFzayYgbSk7Ci0gICAgZmxvYXQgbTAgPSAwLjFmOwotICAgIGZsb2F0
IG0xID0gMC4wMWY7Ci0gICAgZmxvYXQgbTIgPSAwLjAwMDFmOwotICAgIGZsb2F0IG0zID0gMC4w
MWY7Ci0gICAgZmxvYXQgbTUgPSAwLjAxZjsKLSAgICBmbG9hdCBtNiA9IDAuMDAwMWY7Ci0gICAg
ZmxvYXQgbTcgPSAwLjAxZjsKLSAgICBmbG9hdCBtOCA9IDAuMDAwMWY7Ci0gICAgZmxvYXQgbTkg
PSAwLjFmOwotCi0gICAgZmxvYXQgZ2Fpbl9jdXJ2ZV9vZmZzZXQgPSAxLjQ1ZjsKLSAgICBmbG9h
dCBnYWluX2N1cnZlX3Nsb3BlID0gNS5mOwotICAgIGZsb2F0IHRlbXBvcmFsX21hc2tpbmdfbGYg
PSAwLjlmOwotICAgIGZsb2F0IHRlbXBvcmFsX21hc2tpbmdfaGYgPSAwLjZmOwotICAgIHNpemVf
dCB0ZW1wb3JhbF9tYXNraW5nX2xmX2JhbmRzID0gMzsKLSAgfSBnYWluX21hc2s7Ci0KICAgc3Ry
dWN0IEVjaG9BdWRpYmlsaXR5IHsKICAgICBmbG9hdCBsb3dfcmVuZGVyX2xpbWl0ID0gNCAqIDY0
LmY7CiAgICAgZmxvYXQgbm9ybWFsX3JlbmRlcl9saW1pdCA9IDY0LmY7CkBAIC0xMTEsNyArMTA3
LDcgQEAgc3RydWN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnIHsKICAgICBmbG9hdCBhdWRpYmlsaXR5
X3RocmVzaG9sZF9sZiA9IDEwOwogICAgIGZsb2F0IGF1ZGliaWxpdHlfdGhyZXNob2xkX21mID0g
MTA7CiAgICAgZmxvYXQgYXVkaWJpbGl0eV90aHJlc2hvbGRfaGYgPSAxMDsKLSAgICBib29sIHVz
ZV9zdGF0aW9uYXJ5X3Byb3BlcnRpZXMgPSB0cnVlOworICAgIGJvb2wgdXNlX3N0YXRpb25hcnlf
cHJvcGVydGllcyA9IGZhbHNlOwogICAgIGJvb2wgdXNlX3N0YXRpb25hcml0eV9wcm9wZXJ0aWVz
X2F0X2luaXQgPSBmYWxzZTsKICAgfSBlY2hvX2F1ZGliaWxpdHk7CiAKQEAgLTE3NiwyMCArMTcy
LDIyIEBAIHN0cnVjdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyB7CiAgICAgICBmbG9hdCBtYXhfZGVj
X2ZhY3Rvcl9sZjsKICAgICB9OwogCi0gICAgVHVuaW5nIG5vcm1hbF90dW5pbmcgPSBUdW5pbmco
TWFza2luZ1RocmVzaG9sZHMoLjJmLCAuM2YsIC4zZiksCisgICAgVHVuaW5nIG5vcm1hbF90dW5p
bmcgPSBUdW5pbmcoTWFza2luZ1RocmVzaG9sZHMoLjNmLCAuNGYsIC4zZiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTWFza2luZ1RocmVzaG9sZHMoLjA3ZiwgLjFmLCAuM2Yp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMGYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4yNWYpOwotICAgIFR1bmluZyBuZWFyZW5kX3R1bmluZyA9
IFR1bmluZyhNYXNraW5nVGhyZXNob2xkcyguMmYsIC4zZiwgLjNmKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWFza2luZ1RocmVzaG9sZHMoLjA3ZiwgLjFmLCAuM2YpLAor
ICAgIFR1bmluZyBuZWFyZW5kX3R1bmluZyA9IFR1bmluZyhNYXNraW5nVGhyZXNob2xkcygxLjA5
ZiwgMS4xZiwgLjNmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFza2lu
Z1RocmVzaG9sZHMoLjFmLCAuM2YsIC4zZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIuMGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjVmKTsK
IAogICAgIHN0cnVjdCBEb21pbmFudE5lYXJlbmREZXRlY3Rpb24gewotICAgICAgZmxvYXQgZW5y
X3RocmVzaG9sZCA9IDEwLmY7Ci0gICAgICBmbG9hdCBzbnJfdGhyZXNob2xkID0gMTAuZjsKLSAg
ICAgIGludCBob2xkX2R1cmF0aW9uID0gMjU7Ci0gICAgICBpbnQgdHJpZ2dlcl90aHJlc2hvbGQg
PSAxNTsKKyAgICAgIGZsb2F0IGVucl90aHJlc2hvbGQgPSA0LmY7CisgICAgICBmbG9hdCBlbnJf
ZXhpdF90aHJlc2hvbGQgPSAuMWY7CisgICAgICBmbG9hdCBzbnJfdGhyZXNob2xkID0gMzAuZjsK
KyAgICAgIGludCBob2xkX2R1cmF0aW9uID0gNTA7CisgICAgICBpbnQgdHJpZ2dlcl90aHJlc2hv
bGQgPSAxMjsKKyAgICAgIGJvb2wgdXNlX2R1cmluZ19pbml0aWFsX3BoYXNlID0gdHJ1ZTsKICAg
ICB9IGRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uOwogCiAgICAgc3RydWN0IEhpZ2hCYW5kc1N1
cHByZXNzaW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb24uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5j
ZWxsZXIzX2NvbmZpZ19qc29uLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxYTgzMWNiNGM5OTYwODJjY2EwODI1
NWRmNWRiODRlZmZiMWVkZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZ19q
c29uLmNjCkBAIC0wLDAgKzEsNTgzIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKyNpbmNsdWRl
ICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZ19qc29uLmgiCisKKyNpbmNsdWRlIDxz
dHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3MvanNvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3Bh
Y2Ugewordm9pZCBSZWFkUGFyYW0oY29uc3QgSnNvbjo6VmFsdWUmIHJvb3QsIHN0ZDo6c3RyaW5n
IHBhcmFtX25hbWUsIGJvb2wqIHBhcmFtKSB7CisgIFJUQ19EQ0hFQ0socGFyYW0pOworICBib29s
IHY7CisgIGlmIChydGM6OkdldEJvb2xGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAm
dikpIHsKKyAgICAqcGFyYW0gPSB2OworICB9Cit9CisKK3ZvaWQgUmVhZFBhcmFtKGNvbnN0IEpz
b246OlZhbHVlJiByb290LCBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLCBzaXplX3QqIHBhcmFtKSB7
CisgIFJUQ19EQ0hFQ0socGFyYW0pOworICBpbnQgdjsKKyAgaWYgKHJ0Yzo6R2V0SW50RnJvbUpz
b25PYmplY3Qocm9vdCwgcGFyYW1fbmFtZSwgJnYpKSB7CisgICAgUlRDX0RDSEVDS19HRSh2LCAw
KTsKKyAgICAqcGFyYW0gPSB2OworICB9Cit9CisKK3ZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246
OlZhbHVlJiByb290LCBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLCBpbnQqIHBhcmFtKSB7CisgIFJU
Q19EQ0hFQ0socGFyYW0pOworICBpbnQgdjsKKyAgaWYgKHJ0Yzo6R2V0SW50RnJvbUpzb25PYmpl
Y3Qocm9vdCwgcGFyYW1fbmFtZSwgJnYpKSB7CisgICAgKnBhcmFtID0gdjsKKyAgfQorfQorCit2
b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpWYWx1ZSYgcm9vdCwgc3RkOjpzdHJpbmcgcGFyYW1f
bmFtZSwgZmxvYXQqIHBhcmFtKSB7CisgIFJUQ19EQ0hFQ0socGFyYW0pOworICBkb3VibGUgdjsK
KyAgaWYgKHJ0Yzo6R2V0RG91YmxlRnJvbUpzb25PYmplY3Qocm9vdCwgcGFyYW1fbmFtZSwgJnYp
KSB7CisgICAgKnBhcmFtID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHYpOworICB9Cit9CisKK3ZvaWQg
UmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVlJiByb290LAorICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmcgcGFyYW1fbmFtZSwKKyAgICAgICAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpG
aWx0ZXI6Ok1haW5Db25maWd1cmF0aW9uKiBwYXJhbSkgeworICBSVENfRENIRUNLKHBhcmFtKTsK
KyAgSnNvbjo6VmFsdWUganNvbl9hcnJheTsKKyAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9i
amVjdChyb290LCBwYXJhbV9uYW1lLCAmanNvbl9hcnJheSkpIHsKKyAgICBzdGQ6OnZlY3Rvcjxk
b3VibGU+IHY7CisgICAgcnRjOjpKc29uQXJyYXlUb0RvdWJsZVZlY3Rvcihqc29uX2FycmF5LCAm
dik7CisgICAgaWYgKHYuc2l6ZSgpICE9IDYpIHsKKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8
ICJJbmNvcnJlY3QgYXJyYXkgc2l6ZSBmb3IgIiA8PCBwYXJhbV9uYW1lOworICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBwYXJhbS0+bGVuZ3RoX2Jsb2NrcyA9IHN0YXRpY19jYXN0PHNpemVfdD4o
dlswXSk7CisgICAgcGFyYW0tPmxlYWthZ2VfY29udmVyZ2VkID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHZbMV0pOworICAgIHBhcmFtLT5sZWFrYWdlX2RpdmVyZ2VkID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHZbMl0pOworICAgIHBhcmFtLT5lcnJvcl9mbG9vciA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzNd
KTsKKyAgICBwYXJhbS0+ZXJyb3JfY2VpbCA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzRdKTsKKyAg
ICBwYXJhbS0+bm9pc2VfZ2F0ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzVdKTsKKyAgfQorfQor
Cit2b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpWYWx1ZSYgcm9vdCwKKyAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUsCisgICAgICAgICAgICAgICBFY2hvQ2FuY2VsbGVyM0Nv
bmZpZzo6RmlsdGVyOjpTaGFkb3dDb25maWd1cmF0aW9uKiBwYXJhbSkgeworICBSVENfRENIRUNL
KHBhcmFtKTsKKyAgSnNvbjo6VmFsdWUganNvbl9hcnJheTsKKyAgaWYgKHJ0Yzo6R2V0VmFsdWVG
cm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmanNvbl9hcnJheSkpIHsKKyAgICBzdGQ6
OnZlY3Rvcjxkb3VibGU+IHY7CisgICAgcnRjOjpKc29uQXJyYXlUb0RvdWJsZVZlY3Rvcihqc29u
X2FycmF5LCAmdik7CisgICAgaWYgKHYuc2l6ZSgpICE9IDMpIHsKKyAgICAgIFJUQ19MT0coTFNf
RVJST1IpIDw8ICJJbmNvcnJlY3QgYXJyYXkgc2l6ZSBmb3IgIiA8PCBwYXJhbV9uYW1lOworICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBwYXJhbS0+bGVuZ3RoX2Jsb2NrcyA9IHN0YXRpY19jYXN0
PHNpemVfdD4odlswXSk7CisgICAgcGFyYW0tPnJhdGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4odlsx
XSk7CisgICAgcGFyYW0tPm5vaXNlX2dhdGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4odlsyXSk7Cisg
IH0KK30KKwordm9pZCBSZWFkUGFyYW0oY29uc3QgSnNvbjo6VmFsdWUmIHJvb3QsCisgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLAorICAgICAgICAgICAgICAgRWNob0NhbmNl
bGxlcjNDb25maWc6OlN1cHByZXNzb3I6Ok1hc2tpbmdUaHJlc2hvbGRzKiBwYXJhbSkgeworICBS
VENfRENIRUNLKHBhcmFtKTsKKyAgSnNvbjo6VmFsdWUganNvbl9hcnJheTsKKyAgaWYgKHJ0Yzo6
R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmanNvbl9hcnJheSkpIHsK
KyAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHY7CisgICAgcnRjOjpKc29uQXJyYXlUb0RvdWJsZVZl
Y3Rvcihqc29uX2FycmF5LCAmdik7CisgICAgaWYgKHYuc2l6ZSgpICE9IDMpIHsKKyAgICAgIFJU
Q19MT0coTFNfRVJST1IpIDw8ICJJbmNvcnJlY3QgYXJyYXkgc2l6ZSBmb3IgIiA8PCBwYXJhbV9u
YW1lOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwYXJhbS0+ZW5yX3RyYW5zcGFyZW50ID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbMF0pOworICAgIHBhcmFtLT5lbnJfc3VwcHJlc3MgPSBzdGF0
aWNfY2FzdDxmbG9hdD4odlsxXSk7CisgICAgcGFyYW0tPmVtcl90cmFuc3BhcmVudCA9IHN0YXRp
Y19jYXN0PGZsb2F0Pih2WzJdKTsKKyAgfQorfQorfSAgLy8gbmFtZXNwYWNlCisKK3ZvaWQgQWVj
M0NvbmZpZ0Zyb21Kc29uU3RyaW5nKGFic2w6OnN0cmluZ192aWV3IGpzb25fc3RyaW5nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWcqIGNvbmZpZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wqIHBhcnNpbmdfc3VjY2Vzc2Z1bCkg
eworICBSVENfRENIRUNLKGNvbmZpZyk7CisgIFJUQ19EQ0hFQ0socGFyc2luZ19zdWNjZXNzZnVs
KTsKKyAgRWNob0NhbmNlbGxlcjNDb25maWcmIGNmZyA9ICpjb25maWc7CisgIGNmZyA9IEVjaG9D
YW5jZWxsZXIzQ29uZmlnKCk7CisgICpwYXJzaW5nX3N1Y2Nlc3NmdWwgPSB0cnVlOworCisgIEpz
b246OlZhbHVlIHJvb3Q7CisgIGJvb2wgc3VjY2VzcyA9IEpzb246OlJlYWRlcigpLnBhcnNlKHN0
ZDo6c3RyaW5nKGpzb25fc3RyaW5nKSwgcm9vdCk7CisgIGlmICghc3VjY2VzcykgeworICAgIFJU
Q19MT0coTFNfRVJST1IpIDw8ICJJbmNvcnJlY3QgSlNPTiBmb3JtYXQ6ICIgPDwganNvbl9zdHJp
bmc7CisgICAgKnBhcnNpbmdfc3VjY2Vzc2Z1bCA9IGZhbHNlOworICAgIHJldHVybjsKKyAgfQor
CisgIEpzb246OlZhbHVlIGFlYzNfcm9vdDsKKyAgc3VjY2VzcyA9IHJ0Yzo6R2V0VmFsdWVGcm9t
SnNvbk9iamVjdChyb290LCAiYWVjMyIsICZhZWMzX3Jvb3QpOworICBpZiAoIXN1Y2Nlc3MpIHsK
KyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiTWlzc2luZyBBRUMzIGNvbmZpZyBmaWVsZDogIiA8
PCBqc29uX3N0cmluZzsKKyAgICAqcGFyc2luZ19zdWNjZXNzZnVsID0gZmFsc2U7CisgICAgcmV0
dXJuOworICB9CisKKyAgSnNvbjo6VmFsdWUgc2VjdGlvbjsKKyAgaWYgKHJ0Yzo6R2V0VmFsdWVG
cm9tSnNvbk9iamVjdChyb290LCAiYnVmZmVyaW5nIiwgJnNlY3Rpb24pKSB7CisgICAgUmVhZFBh
cmFtKHNlY3Rpb24sICJ1c2VfbmV3X3JlbmRlcl9idWZmZXJpbmciLAorICAgICAgICAgICAgICAm
Y2ZnLmJ1ZmZlcmluZy51c2VfbmV3X3JlbmRlcl9idWZmZXJpbmcpOworICAgIFJlYWRQYXJhbShz
ZWN0aW9uLCAiZXhjZXNzX3JlbmRlcl9kZXRlY3Rpb25faW50ZXJ2YWxfYmxvY2tzIiwKKyAgICAg
ICAgICAgICAgJmNmZy5idWZmZXJpbmcuZXhjZXNzX3JlbmRlcl9kZXRlY3Rpb25faW50ZXJ2YWxf
YmxvY2tzKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1heF9hbGxvd2VkX2V4Y2Vzc19yZW5k
ZXJfYmxvY2tzIiwKKyAgICAgICAgICAgICAgJmNmZy5idWZmZXJpbmcubWF4X2FsbG93ZWRfZXhj
ZXNzX3JlbmRlcl9ibG9ja3MpOworICB9CisKKyAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9i
amVjdChhZWMzX3Jvb3QsICJkZWxheSIsICZzZWN0aW9uKSkgeworICAgIFJlYWRQYXJhbShzZWN0
aW9uLCAiZGVmYXVsdF9kZWxheSIsICZjZmcuZGVsYXkuZGVmYXVsdF9kZWxheSk7CisgICAgUmVh
ZFBhcmFtKHNlY3Rpb24sICJkb3duX3NhbXBsaW5nX2ZhY3RvciIsICZjZmcuZGVsYXkuZG93bl9z
YW1wbGluZ19mYWN0b3IpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibnVtX2ZpbHRlcnMiLCAm
Y2ZnLmRlbGF5Lm51bV9maWx0ZXJzKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImFwaV9jYWxs
X2ppdHRlcl9ibG9ja3MiLAorICAgICAgICAgICAgICAmY2ZnLmRlbGF5LmFwaV9jYWxsX2ppdHRl
cl9ibG9ja3MpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWluX2VjaG9fcGF0aF9kZWxheV9i
bG9ja3MiLAorICAgICAgICAgICAgICAmY2ZnLmRlbGF5Lm1pbl9lY2hvX3BhdGhfZGVsYXlfYmxv
Y2tzKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImRlbGF5X2hlYWRyb29tX2Jsb2NrcyIsCisg
ICAgICAgICAgICAgICZjZmcuZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tzKTsKKyAgICBSZWFk
UGFyYW0oc2VjdGlvbiwgImh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MiLAorICAgICAgICAgICAg
ICAmY2ZnLmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MpOworICAgIFJlYWRQYXJhbShz
ZWN0aW9uLCAiaHlzdGVyZXNpc19saW1pdF8yX2Jsb2NrcyIsCisgICAgICAgICAgICAgICZjZmcu
ZGVsYXkuaHlzdGVyZXNpc19saW1pdF8yX2Jsb2Nrcyk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJza2V3X2h5c3RlcmVzaXNfYmxvY2tzIiwKKyAgICAgICAgICAgICAgJmNmZy5kZWxheS5za2V3
X2h5c3RlcmVzaXNfYmxvY2tzKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImZpeGVkX2NhcHR1
cmVfZGVsYXlfc2FtcGxlcyIsCisgICAgICAgICAgICAgICZjZmcuZGVsYXkuZml4ZWRfY2FwdHVy
ZV9kZWxheV9zYW1wbGVzKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImRlbGF5X2VzdGltYXRl
X3Ntb290aGluZyIsCisgICAgICAgICAgICAgICZjZmcuZGVsYXkuZGVsYXlfZXN0aW1hdGVfc21v
b3RoaW5nKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rp
b25fdGhyZXNob2xkIiwKKyAgICAgICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9jYW5kaWRhdGVf
ZGV0ZWN0aW9uX3RocmVzaG9sZCk7CisKKyAgICBKc29uOjpWYWx1ZSBzdWJzZWN0aW9uOworICAg
IGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qoc2VjdGlvbiwgImRlbGF5X3NlbGVjdGlv
bl90aHJlc2hvbGRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJz
ZWN0aW9uKSkgeworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJpbml0aWFsIiwKKyAgICAg
ICAgICAgICAgICAmY2ZnLmRlbGF5LmRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzLmluaXRpYWwp
OworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJjb252ZXJnZWQiLAorICAgICAgICAgICAg
ICAgICZjZmcuZGVsYXkuZGVsYXlfc2VsZWN0aW9uX3RocmVzaG9sZHMuY29udmVyZ2VkKTsKKyAg
ICB9CisgIH0KKworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KGFlYzNfcm9vdCwg
ImZpbHRlciIsICZzZWN0aW9uKSkgeworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWFpbiIsICZj
ZmcuZmlsdGVyLm1haW4pOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAic2hhZG93IiwgJmNmZy5m
aWx0ZXIuc2hhZG93KTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1haW5faW5pdGlhbCIsICZj
ZmcuZmlsdGVyLm1haW5faW5pdGlhbCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJzaGFkb3df
aW5pdGlhbCIsICZjZmcuZmlsdGVyLnNoYWRvd19pbml0aWFsKTsKKyAgICBSZWFkUGFyYW0oc2Vj
dGlvbiwgImNvbmZpZ19jaGFuZ2VfZHVyYXRpb25fYmxvY2tzIiwKKyAgICAgICAgICAgICAgJmNm
Zy5maWx0ZXIuY29uZmlnX2NoYW5nZV9kdXJhdGlvbl9ibG9ja3MpOworICAgIFJlYWRQYXJhbShz
ZWN0aW9uLCAiaW5pdGlhbF9zdGF0ZV9zZWNvbmRzIiwKKyAgICAgICAgICAgICAgJmNmZy5maWx0
ZXIuaW5pdGlhbF9zdGF0ZV9zZWNvbmRzKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImNvbnNl
cnZhdGl2ZV9pbml0aWFsX3BoYXNlIiwKKyAgICAgICAgICAgICAgJmNmZy5maWx0ZXIuY29uc2Vy
dmF0aXZlX2luaXRpYWxfcGhhc2UpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZW5hYmxlX3No
YWRvd19maWx0ZXJfb3V0cHV0X3VzYWdlIiwKKyAgICAgICAgICAgICAgJmNmZy5maWx0ZXIuZW5h
YmxlX3NoYWRvd19maWx0ZXJfb3V0cHV0X3VzYWdlKTsKKyAgfQorCisgIGlmIChydGM6OkdldFZh
bHVlRnJvbUpzb25PYmplY3QoYWVjM19yb290LCAiZXJsZSIsICZzZWN0aW9uKSkgeworICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAibWluIiwgJmNmZy5lcmxlLm1pbik7CisgICAgUmVhZFBhcmFtKHNl
Y3Rpb24sICJtYXhfbCIsICZjZmcuZXJsZS5tYXhfbCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJtYXhfaCIsICZjZmcuZXJsZS5tYXhfaCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJvbnNl
dF9kZXRlY3Rpb24iLCAmY2ZnLmVybGUub25zZXRfZGV0ZWN0aW9uKTsKKyAgICBSZWFkUGFyYW0o
c2VjdGlvbiwgIm51bV9zZWN0aW9ucyIsICZjZmcuZXJsZS5udW1fc2VjdGlvbnMpOworICB9CisK
KyAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChhZWMzX3Jvb3QsICJlcF9zdHJlbmd0
aCIsICZzZWN0aW9uKSkgeworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibGYiLCAmY2ZnLmVwX3N0
cmVuZ3RoLmxmKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1mIiwgJmNmZy5lcF9zdHJlbmd0
aC5tZik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJoZiIsICZjZmcuZXBfc3RyZW5ndGguaGYp
OworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZGVmYXVsdF9sZW4iLCAmY2ZnLmVwX3N0cmVuZ3Ro
LmRlZmF1bHRfbGVuKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInJldmVyYl9iYXNlZF9vbl9y
ZW5kZXIiLAorICAgICAgICAgICAgICAmY2ZnLmVwX3N0cmVuZ3RoLnJldmVyYl9iYXNlZF9vbl9y
ZW5kZXIpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZWNob19jYW5fc2F0dXJhdGUiLCAmY2Zn
LmVwX3N0cmVuZ3RoLmVjaG9fY2FuX3NhdHVyYXRlKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwg
ImJvdW5kZWRfZXJsIiwgJmNmZy5lcF9zdHJlbmd0aC5ib3VuZGVkX2VybCk7CisgIH0KKworICBp
ZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KGFlYzNfcm9vdCwgImVjaG9fYXVkaWJpbGl0
eSIsICZzZWN0aW9uKSkgeworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibG93X3JlbmRlcl9saW1p
dCIsCisgICAgICAgICAgICAgICZjZmcuZWNob19hdWRpYmlsaXR5Lmxvd19yZW5kZXJfbGltaXQp
OworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibm9ybWFsX3JlbmRlcl9saW1pdCIsCisgICAgICAg
ICAgICAgICZjZmcuZWNob19hdWRpYmlsaXR5Lm5vcm1hbF9yZW5kZXJfbGltaXQpOworCisgICAg
UmVhZFBhcmFtKHNlY3Rpb24sICJmbG9vcl9wb3dlciIsICZjZmcuZWNob19hdWRpYmlsaXR5LmZs
b29yX3Bvd2VyKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImF1ZGliaWxpdHlfdGhyZXNob2xk
X2xmIiwKKyAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJl
c2hvbGRfbGYpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiYXVkaWJpbGl0eV90aHJlc2hvbGRf
bWYiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS5hdWRpYmlsaXR5X3RocmVz
aG9sZF9tZik7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJhdWRpYmlsaXR5X3RocmVzaG9sZF9o
ZiIsCisgICAgICAgICAgICAgICZjZmcuZWNob19hdWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhyZXNo
b2xkX2hmKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInVzZV9zdGF0aW9uYXJ5X3Byb3BlcnRp
ZXMiLAorICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyeV9w
cm9wZXJ0aWVzKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInVzZV9zdGF0aW9uYXJpdHlfcHJv
cGVydGllc19hdF9pbml0IiwKKyAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHkudXNl
X3N0YXRpb25hcml0eV9wcm9wZXJ0aWVzX2F0X2luaXQpOworICB9CisKKyAgaWYgKHJ0Yzo6R2V0
VmFsdWVGcm9tSnNvbk9iamVjdChhZWMzX3Jvb3QsICJyZW5kZXJfbGV2ZWxzIiwgJnNlY3Rpb24p
KSB7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJhY3RpdmVfcmVuZGVyX2xpbWl0IiwKKyAgICAg
ICAgICAgICAgJmNmZy5yZW5kZXJfbGV2ZWxzLmFjdGl2ZV9yZW5kZXJfbGltaXQpOworICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAicG9vcl9leGNpdGF0aW9uX3JlbmRlcl9saW1pdCIsCisgICAgICAg
ICAgICAgICZjZmcucmVuZGVyX2xldmVscy5wb29yX2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0KTsK
KyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGltaXRfZHM4
IiwKKyAgICAgICAgICAgICAgJmNmZy5yZW5kZXJfbGV2ZWxzLnBvb3JfZXhjaXRhdGlvbl9yZW5k
ZXJfbGltaXRfZHM4KTsKKyAgfQorCisgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qo
YWVjM19yb290LCAiZWNob19yZW1vdmFsX2NvbnRyb2wiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZzZWN0aW9uKSkgeworICAgIEpzb246OlZhbHVlIHN1YnNlY3Rpb247Cisg
ICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChzZWN0aW9uLCAiZ2Fpbl9yYW1wdXAi
LCAmc3Vic2VjdGlvbikpIHsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiaW5pdGlhbF9n
YWluIiwKKyAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFt
cHVwLmluaXRpYWxfZ2Fpbik7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgImZpcnN0X25v
bl96ZXJvX2dhaW4iLAorICAgICAgICAgICAgICAgICZjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wu
Z2Fpbl9yYW1wdXAuZmlyc3Rfbm9uX3plcm9fZ2Fpbik7CisgICAgICBSZWFkUGFyYW0oc3Vic2Vj
dGlvbiwgIm5vbl96ZXJvX2dhaW5fYmxvY2tzIiwKKyAgICAgICAgICAgICAgICAmY2ZnLmVjaG9f
cmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLm5vbl96ZXJvX2dhaW5fYmxvY2tzKTsKKyAgICAg
IFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiZnVsbF9nYWluX2Jsb2NrcyIsCisgICAgICAgICAgICAg
ICAgJmNmZy5lY2hvX3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5mdWxsX2dhaW5fYmxvY2tz
KTsKKyAgICB9CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJoYXNfY2xvY2tfZHJpZnQiLAorICAg
ICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmhhc19jbG9ja19kcmlmdCk7Cisg
ICAgUmVhZFBhcmFtKHNlY3Rpb24sICJsaW5lYXJfYW5kX3N0YWJsZV9lY2hvX3BhdGgiLAorICAg
ICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmxpbmVhcl9hbmRfc3RhYmxlX2Vj
aG9fcGF0aCk7CisgIH0KKworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KGFlYzNf
cm9vdCwgImVjaG9fbW9kZWwiLCAmc2VjdGlvbikpIHsKKyAgICBKc29uOjpWYWx1ZSBzdWJzZWN0
aW9uOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibm9pc2VfZmxvb3JfaG9sZCIsICZjZmcuZWNo
b19tb2RlbC5ub2lzZV9mbG9vcl9ob2xkKTsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1pbl9u
b2lzZV9mbG9vcl9wb3dlciIsCisgICAgICAgICAgICAgICZjZmcuZWNob19tb2RlbC5taW5fbm9p
c2VfZmxvb3JfcG93ZXIpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAic3RhdGlvbmFyeV9nYXRl
X3Nsb3BlIiwKKyAgICAgICAgICAgICAgJmNmZy5lY2hvX21vZGVsLnN0YXRpb25hcnlfZ2F0ZV9z
bG9wZSk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJub2lzZV9nYXRlX3Bvd2VyIiwgJmNmZy5l
Y2hvX21vZGVsLm5vaXNlX2dhdGVfcG93ZXIpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibm9p
c2VfZ2F0ZV9zbG9wZSIsICZjZmcuZWNob19tb2RlbC5ub2lzZV9nYXRlX3Nsb3BlKTsKKyAgICBS
ZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRlcl9wcmVfd2luZG93X3NpemUiLAorICAgICAgICAgICAg
ICAmY2ZnLmVjaG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZSk7CisgICAgUmVhZFBhcmFt
KHNlY3Rpb24sICJyZW5kZXJfcG9zdF93aW5kb3dfc2l6ZSIsCisgICAgICAgICAgICAgICZjZmcu
ZWNob19tb2RlbC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6ZSk7CisgICAgUmVhZFBhcmFtKHNlY3Rp
b24sICJyZW5kZXJfcHJlX3dpbmRvd19zaXplX2luaXQiLAorICAgICAgICAgICAgICAmY2ZnLmVj
aG9fbW9kZWwucmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0KTsKKyAgICBSZWFkUGFyYW0oc2Vj
dGlvbiwgInJlbmRlcl9wb3N0X3dpbmRvd19zaXplX2luaXQiLAorICAgICAgICAgICAgICAmY2Zn
LmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemVfaW5pdCk7CisgICAgUmVhZFBhcmFt
KHNlY3Rpb24sICJub25saW5lYXJfaG9sZCIsICZjZmcuZWNob19tb2RlbC5ub25saW5lYXJfaG9s
ZCk7CisgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJub25saW5lYXJfcmVsZWFzZSIsICZjZmcuZWNo
b19tb2RlbC5ub25saW5lYXJfcmVsZWFzZSk7CisgIH0KKworICBKc29uOjpWYWx1ZSBzdWJzZWN0
aW9uOworICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KGFlYzNfcm9vdCwgInN1cHBy
ZXNzb3IiLCAmc2VjdGlvbikpIHsKKyAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5lYXJlbmRfYXZl
cmFnZV9ibG9ja3MiLAorICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IubmVhcmVuZF9hdmVy
YWdlX2Jsb2Nrcyk7CisKKyAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rp
b24sICJub3JtYWxfdHVuaW5nIiwgJnN1YnNlY3Rpb24pKSB7CisgICAgICBSZWFkUGFyYW0oc3Vi
c2VjdGlvbiwgIm1hc2tfbGYiLCAmY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2xm
KTsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWFza19oZiIsICZjZmcuc3VwcHJlc3Nv
ci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYpOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJt
YXhfaW5jX2ZhY3RvciIsCisgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLm5vcm1hbF90
dW5pbmcubWF4X2luY19mYWN0b3IpOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJtYXhf
ZGVjX2ZhY3Rvcl9sZiIsCisgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLm5vcm1hbF90
dW5pbmcubWF4X2RlY19mYWN0b3JfbGYpOworICAgIH0KKworICAgIGlmIChydGM6OkdldFZhbHVl
RnJvbUpzb25PYmplY3Qoc2VjdGlvbiwgIm5lYXJlbmRfdHVuaW5nIiwgJnN1YnNlY3Rpb24pKSB7
CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1hc2tfbGYiLCAmY2ZnLnN1cHByZXNzb3Iu
bmVhcmVuZF90dW5pbmcubWFza19sZik7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1h
c2tfaGYiLCAmY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19oZik7CisgICAgICBS
ZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9pbmNfZmFjdG9yIiwKKyAgICAgICAgICAgICAgICAm
Y2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWF4X2luY19mYWN0b3IpOworICAgICAgUmVh
ZFBhcmFtKHN1YnNlY3Rpb24sICJtYXhfZGVjX2ZhY3Rvcl9sZiIsCisgICAgICAgICAgICAgICAg
JmNmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1heF9kZWNfZmFjdG9yX2xmKTsKKyAgICB9
CisKKyAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rpb24sICJkb21pbmFu
dF9uZWFyZW5kX2RldGVjdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmc3Vic2VjdGlvbikpIHsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiZW5yX3RocmVz
aG9sZCIsCisgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmRvbWluYW50X25lYXJlbmRf
ZGV0ZWN0aW9uLmVucl90aHJlc2hvbGQpOworICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJl
bnJfZXhpdF90aHJlc2hvbGQiLAorICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5kb21p
bmFudF9uZWFyZW5kX2RldGVjdGlvbi5lbnJfZXhpdF90aHJlc2hvbGQpOworICAgICAgUmVhZFBh
cmFtKHN1YnNlY3Rpb24sICJzbnJfdGhyZXNob2xkIiwKKyAgICAgICAgICAgICAgICAmY2ZnLnN1
cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uc25yX3RocmVzaG9sZCk7CisgICAg
ICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgImhvbGRfZHVyYXRpb24iLAorICAgICAgICAgICAgICAg
ICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5ob2xkX2R1cmF0aW9u
KTsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAidHJpZ2dlcl90aHJlc2hvbGQiLAorICAg
ICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi50
cmlnZ2VyX3RocmVzaG9sZCk7CisgICAgICBSZWFkUGFyYW0oCisgICAgICAgICAgc3Vic2VjdGlv
biwgInVzZV9kdXJpbmdfaW5pdGlhbF9waGFzZSIsCisgICAgICAgICAgJmNmZy5zdXBwcmVzc29y
LmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLnVzZV9kdXJpbmdfaW5pdGlhbF9waGFzZSk7Cisg
ICAgfQorCisgICAgaWYgKHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChzZWN0aW9uLCAiaGln
aF9iYW5kc19zdXBwcmVzc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmc3Vic2VjdGlvbikpIHsKKyAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiZW5yX3RocmVz
aG9sZCIsCisgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLmhpZ2hfYmFuZHNfc3VwcHJl
c3Npb24uZW5yX3RocmVzaG9sZCk7CisgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9n
YWluX2R1cmluZ19lY2hvIiwKKyAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IuaGlnaF9i
YW5kc19zdXBwcmVzc2lvbi5tYXhfZ2Fpbl9kdXJpbmdfZWNobyk7CisgICAgfQorCisgICAgUmVh
ZFBhcmFtKHNlY3Rpb24sICJmbG9vcl9maXJzdF9pbmNyZWFzZSIsCisgICAgICAgICAgICAgICZj
Zmcuc3VwcHJlc3Nvci5mbG9vcl9maXJzdF9pbmNyZWFzZSk7CisgICAgUmVhZFBhcmFtKHNlY3Rp
b24sICJlbmZvcmNlX3RyYW5zcGFyZW50IiwKKyAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29y
LmVuZm9yY2VfdHJhbnNwYXJlbnQpOworICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZW5mb3JjZV9l
bXB0eV9oaWdoZXJfYmFuZHMiLAorICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IuZW5mb3Jj
ZV9lbXB0eV9oaWdoZXJfYmFuZHMpOworICB9Cit9CisKK0VjaG9DYW5jZWxsZXIzQ29uZmlnIEFl
YzNDb25maWdGcm9tSnNvblN0cmluZyhhYnNsOjpzdHJpbmdfdmlldyBqc29uX3N0cmluZykgewor
ICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjZmc7CisgIGJvb2wgbm90X3VzZWQ7CisgIEFlYzNDb25m
aWdGcm9tSnNvblN0cmluZyhqc29uX3N0cmluZywgJmNmZywgJm5vdF91c2VkKTsKKyAgcmV0dXJu
IGNmZzsKK30KKworc3RkOjpzdHJpbmcgQWVjM0NvbmZpZ1RvSnNvblN0cmluZyhjb25zdCBFY2hv
Q2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKSB7CisgIHJ0Yzo6U3RyaW5nQnVpbGRlciBvc3Q7Cisg
IG9zdCA8PCAieyI7CisgIG9zdCA8PCAiXCJhZWMzXCI6IHsiOworICBvc3QgPDwgIlwiZGVsYXlc
IjogeyI7CisgIG9zdCA8PCAiXCJkZWZhdWx0X2RlbGF5XCI6ICIgPDwgY29uZmlnLmRlbGF5LmRl
ZmF1bHRfZGVsYXkgPDwgIiwiOworICBvc3QgPDwgIlwiZG93bl9zYW1wbGluZ19mYWN0b3JcIjog
IiA8PCBjb25maWcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IKKyAgICAgIDw8ICIsIjsKKyAg
b3N0IDw8ICJcIm51bV9maWx0ZXJzXCI6ICIgPDwgY29uZmlnLmRlbGF5Lm51bV9maWx0ZXJzIDw8
ICIsIjsKKyAgb3N0IDw8ICJcImFwaV9jYWxsX2ppdHRlcl9ibG9ja3NcIjogIiA8PCBjb25maWcu
ZGVsYXkuYXBpX2NhbGxfaml0dGVyX2Jsb2NrcworICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwi
bWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3NcIjogIgorICAgICAgPDwgY29uZmlnLmRlbGF5Lm1p
bl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tzIDw8ICIsIjsKKyAgb3N0IDw8ICJcImRlbGF5X2hlYWRy
b29tX2Jsb2Nrc1wiOiAiIDw8IGNvbmZpZy5kZWxheS5kZWxheV9oZWFkcm9vbV9ibG9ja3MKKyAg
ICAgIDw8ICIsIjsKKyAgb3N0IDw8ICJcImh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3NcIjogIgor
ICAgICAgPDwgY29uZmlnLmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MgPDwgIiwiOwor
ICBvc3QgPDwgIlwiaHlzdGVyZXNpc19saW1pdF8yX2Jsb2Nrc1wiOiAiCisgICAgICA8PCBjb25m
aWcuZGVsYXkuaHlzdGVyZXNpc19saW1pdF8yX2Jsb2NrcyA8PCAiLCI7CisgIG9zdCA8PCAiXCJz
a2V3X2h5c3RlcmVzaXNfYmxvY2tzXCI6ICIgPDwgY29uZmlnLmRlbGF5LnNrZXdfaHlzdGVyZXNp
c19ibG9ja3MKKyAgICAgIDw8ICIsIjsKKyAgb3N0IDw8ICJcImZpeGVkX2NhcHR1cmVfZGVsYXlf
c2FtcGxlc1wiOiAiCisgICAgICA8PCBjb25maWcuZGVsYXkuZml4ZWRfY2FwdHVyZV9kZWxheV9z
YW1wbGVzIDw8ICIsIjsKKyAgb3N0IDw8ICJcImRlbGF5X2VzdGltYXRlX3Ntb290aGluZ1wiOiAi
CisgICAgICA8PCBjb25maWcuZGVsYXkuZGVsYXlfZXN0aW1hdGVfc21vb3RoaW5nIDw8ICIsIjsK
KyAgb3N0IDw8ICJcImRlbGF5X2NhbmRpZGF0ZV9kZXRlY3Rpb25fdGhyZXNob2xkXCI6ICIKKyAg
ICAgIDw8IGNvbmZpZy5kZWxheS5kZWxheV9jYW5kaWRhdGVfZGV0ZWN0aW9uX3RocmVzaG9sZCA8
PCAiLCI7CisKKyAgb3N0IDw8ICJcImRlbGF5X3NlbGVjdGlvbl90aHJlc2hvbGRzXCI6IHsiOwor
ICBvc3QgPDwgIlwiaW5pdGlhbFwiOiAiIDw8IGNvbmZpZy5kZWxheS5kZWxheV9zZWxlY3Rpb25f
dGhyZXNob2xkcy5pbml0aWFsCisgICAgICA8PCAiLCI7CisgIG9zdCA8PCAiXCJjb252ZXJnZWRc
IjogIiA8PCBjb25maWcuZGVsYXkuZGVsYXlfc2VsZWN0aW9uX3RocmVzaG9sZHMuY29udmVyZ2Vk
OworICBvc3QgPDwgIn0iOworCisgIG9zdCA8PCAifSwiOworCisgIG9zdCA8PCAiXCJmaWx0ZXJc
IjogeyI7CisgIG9zdCA8PCAiXCJtYWluXCI6IFsiOworICBvc3QgPDwgY29uZmlnLmZpbHRlci5t
YWluLmxlbmd0aF9ibG9ja3MgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLmZpbHRlci5tYWluLmxl
YWthZ2VfY29udmVyZ2VkIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIubWFpbi5sZWFr
YWdlX2RpdmVyZ2VkIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIubWFpbi5lcnJvcl9m
bG9vciA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLm1haW4uZXJyb3JfY2VpbCA8PCAi
LCI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLm1haW4ubm9pc2VfZ2F0ZTsKKyAgb3N0IDw8ICJd
LCI7CisKKyAgb3N0IDw8ICJcInNoYWRvd1wiOiBbIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIu
c2hhZG93Lmxlbmd0aF9ibG9ja3MgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLmZpbHRlci5zaGFk
b3cucmF0ZSA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLnNoYWRvdy5ub2lzZV9nYXRl
OworICBvc3QgPDwgIl0sIjsKKworICBvc3QgPDwgIlwibWFpbl9pbml0aWFsXCI6IFsiOworICBv
c3QgPDwgY29uZmlnLmZpbHRlci5tYWluX2luaXRpYWwubGVuZ3RoX2Jsb2NrcyA8PCAiLCI7Cisg
IG9zdCA8PCBjb25maWcuZmlsdGVyLm1haW5faW5pdGlhbC5sZWFrYWdlX2NvbnZlcmdlZCA8PCAi
LCI7CisgIG9zdCA8PCBjb25maWcuZmlsdGVyLm1haW5faW5pdGlhbC5sZWFrYWdlX2RpdmVyZ2Vk
IDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIubWFpbl9pbml0aWFsLmVycm9yX2Zsb29y
IDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIubWFpbl9pbml0aWFsLmVycm9yX2NlaWwg
PDwgIiwiOworICBvc3QgPDwgY29uZmlnLmZpbHRlci5tYWluX2luaXRpYWwubm9pc2VfZ2F0ZTsK
KyAgb3N0IDw8ICJdLCI7CisKKyAgb3N0IDw8ICJcInNoYWRvd19pbml0aWFsXCI6IFsiOworICBv
c3QgPDwgY29uZmlnLmZpbHRlci5zaGFkb3dfaW5pdGlhbC5sZW5ndGhfYmxvY2tzIDw8ICIsIjsK
KyAgb3N0IDw8IGNvbmZpZy5maWx0ZXIuc2hhZG93X2luaXRpYWwucmF0ZSA8PCAiLCI7CisgIG9z
dCA8PCBjb25maWcuZmlsdGVyLnNoYWRvd19pbml0aWFsLm5vaXNlX2dhdGU7CisgIG9zdCA8PCAi
XSwiOworCisgIG9zdCA8PCAiXCJjb25maWdfY2hhbmdlX2R1cmF0aW9uX2Jsb2Nrc1wiOiAiCisg
ICAgICA8PCBjb25maWcuZmlsdGVyLmNvbmZpZ19jaGFuZ2VfZHVyYXRpb25fYmxvY2tzIDw8ICIs
IjsKKyAgb3N0IDw8ICJcImluaXRpYWxfc3RhdGVfc2Vjb25kc1wiOiAiIDw8IGNvbmZpZy5maWx0
ZXIuaW5pdGlhbF9zdGF0ZV9zZWNvbmRzCisgICAgICA8PCAiLCI7CisgIG9zdCA8PCAiXCJjb25z
ZXJ2YXRpdmVfaW5pdGlhbF9waGFzZVwiOiAiCisgICAgICA8PCAoY29uZmlnLmZpbHRlci5jb25z
ZXJ2YXRpdmVfaW5pdGlhbF9waGFzZSA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8ICIsIjsKKyAgb3N0
IDw8ICJcImVuYWJsZV9zaGFkb3dfZmlsdGVyX291dHB1dF91c2FnZVwiOiAiCisgICAgICA8PCAo
Y29uZmlnLmZpbHRlci5lbmFibGVfc2hhZG93X2ZpbHRlcl9vdXRwdXRfdXNhZ2UgPyAidHJ1ZSIg
OiAiZmFsc2UiKTsKKworICBvc3QgPDwgIn0sIjsKKworICBvc3QgPDwgIlwiZXJsZVwiOiB7IjsK
KyAgb3N0IDw8ICJcIm1pblwiOiAiIDw8IGNvbmZpZy5lcmxlLm1pbiA8PCAiLCI7CisgIG9zdCA8
PCAiXCJtYXhfbFwiOiAiIDw8IGNvbmZpZy5lcmxlLm1heF9sIDw8ICIsIjsKKyAgb3N0IDw8ICJc
Im1heF9oXCI6ICIgPDwgY29uZmlnLmVybGUubWF4X2ggPDwgIiwiOworICBvc3QgPDwgIlwib25z
ZXRfZGV0ZWN0aW9uXCI6ICIKKyAgICAgIDw8IChjb25maWcuZXJsZS5vbnNldF9kZXRlY3Rpb24g
PyAidHJ1ZSIgOiAiZmFsc2UiKSA8PCAiLCI7CisgIG9zdCA8PCAiXCJudW1fc2VjdGlvbnNcIjog
IiA8PCBjb25maWcuZXJsZS5udW1fc2VjdGlvbnM7CisgIG9zdCA8PCAifSwiOworCisgIG9zdCA8
PCAiXCJlcF9zdHJlbmd0aFwiOiB7IjsKKyAgb3N0IDw8ICJcImxmXCI6ICIgPDwgY29uZmlnLmVw
X3N0cmVuZ3RoLmxmIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm1mXCI6ICIgPDwgY29uZmlnLmVwX3N0
cmVuZ3RoLm1mIDw8ICIsIjsKKyAgb3N0IDw8ICJcImhmXCI6ICIgPDwgY29uZmlnLmVwX3N0cmVu
Z3RoLmhmIDw8ICIsIjsKKyAgb3N0IDw8ICJcImRlZmF1bHRfbGVuXCI6ICIgPDwgY29uZmlnLmVw
X3N0cmVuZ3RoLmRlZmF1bHRfbGVuIDw8ICIsIjsKKyAgb3N0IDw8ICJcInJldmVyYl9iYXNlZF9v
bl9yZW5kZXJcIjogIgorICAgICAgPDwgKGNvbmZpZy5lcF9zdHJlbmd0aC5yZXZlcmJfYmFzZWRf
b25fcmVuZGVyID8gInRydWUiIDogImZhbHNlIikgPDwgIiwiOworICBvc3QgPDwgIlwiZWNob19j
YW5fc2F0dXJhdGVcIjogIgorICAgICAgPDwgKGNvbmZpZy5lcF9zdHJlbmd0aC5lY2hvX2Nhbl9z
YXR1cmF0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8ICIsIjsKKyAgb3N0IDw8ICJcImJvdW5kZWRf
ZXJsXCI6ICIKKyAgICAgIDw8IChjb25maWcuZXBfc3RyZW5ndGguYm91bmRlZF9lcmwgPyAidHJ1
ZSIgOiAiZmFsc2UiKTsKKworICBvc3QgPDwgIn0sIjsKKworICBvc3QgPDwgIlwiZWNob19hdWRp
YmlsaXR5XCI6IHsiOworICBvc3QgPDwgIlwibG93X3JlbmRlcl9saW1pdFwiOiAiIDw8IGNvbmZp
Zy5lY2hvX2F1ZGliaWxpdHkubG93X3JlbmRlcl9saW1pdAorICAgICAgPDwgIiwiOworICBvc3Qg
PDwgIlwibm9ybWFsX3JlbmRlcl9saW1pdFwiOiAiCisgICAgICA8PCBjb25maWcuZWNob19hdWRp
YmlsaXR5Lm5vcm1hbF9yZW5kZXJfbGltaXQgPDwgIiwiOworICBvc3QgPDwgIlwiZmxvb3JfcG93
ZXJcIjogIiA8PCBjb25maWcuZWNob19hdWRpYmlsaXR5LmZsb29yX3Bvd2VyIDw8ICIsIjsKKyAg
b3N0IDw8ICJcImF1ZGliaWxpdHlfdGhyZXNob2xkX2xmXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5l
Y2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfbGYgPDwgIiwiOworICBvc3QgPDwg
IlwiYXVkaWJpbGl0eV90aHJlc2hvbGRfbWZcIjogIgorICAgICAgPDwgY29uZmlnLmVjaG9fYXVk
aWJpbGl0eS5hdWRpYmlsaXR5X3RocmVzaG9sZF9tZiA8PCAiLCI7CisgIG9zdCA8PCAiXCJhdWRp
YmlsaXR5X3RocmVzaG9sZF9oZlwiOiAiCisgICAgICA8PCBjb25maWcuZWNob19hdWRpYmlsaXR5
LmF1ZGliaWxpdHlfdGhyZXNob2xkX2hmIDw8ICIsIjsKKyAgb3N0IDw8ICJcInVzZV9zdGF0aW9u
YXJ5X3Byb3BlcnRpZXNcIjogIgorICAgICAgPDwgKGNvbmZpZy5lY2hvX2F1ZGliaWxpdHkudXNl
X3N0YXRpb25hcnlfcHJvcGVydGllcyA/ICJ0cnVlIiA6ICJmYWxzZSIpCisgICAgICA8PCAiLCI7
CisgIG9zdCA8PCAiXCJ1c2Vfc3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdFwiOiAiCisg
ICAgICA8PCAoY29uZmlnLmVjaG9fYXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyaXR5X3Byb3BlcnRp
ZXNfYXRfaW5pdCA/ICJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiZmFsc2UiKTsKKyAgb3N0IDw8ICJ9
LCI7CisKKyAgb3N0IDw8ICJcInJlbmRlcl9sZXZlbHNcIjogeyI7CisgIG9zdCA8PCAiXCJhY3Rp
dmVfcmVuZGVyX2xpbWl0XCI6ICIgPDwgY29uZmlnLnJlbmRlcl9sZXZlbHMuYWN0aXZlX3JlbmRl
cl9saW1pdAorICAgICAgPDwgIiwiOworICBvc3QgPDwgIlwicG9vcl9leGNpdGF0aW9uX3JlbmRl
cl9saW1pdFwiOiAiCisgICAgICA8PCBjb25maWcucmVuZGVyX2xldmVscy5wb29yX2V4Y2l0YXRp
b25fcmVuZGVyX2xpbWl0IDw8ICIsIjsKKyAgb3N0IDw8ICJcInBvb3JfZXhjaXRhdGlvbl9yZW5k
ZXJfbGltaXRfZHM4XCI6ICIKKyAgICAgIDw8IGNvbmZpZy5yZW5kZXJfbGV2ZWxzLnBvb3JfZXhj
aXRhdGlvbl9yZW5kZXJfbGltaXRfZHM4OworICBvc3QgPDwgIn0sIjsKKworICBvc3QgPDwgIlwi
ZWNob19yZW1vdmFsX2NvbnRyb2xcIjogeyI7CisgIG9zdCA8PCAiXCJnYWluX3JhbXB1cFwiOiB7
IjsKKyAgb3N0IDw8ICJcImluaXRpYWxfZ2FpblwiOiAiCisgICAgICA8PCBjb25maWcuZWNob19y
ZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuaW5pdGlhbF9nYWluIDw8ICIsIjsKKyAgb3N0IDw8
ICJcImZpcnN0X25vbl96ZXJvX2dhaW5cIjogIgorICAgICAgPDwgY29uZmlnLmVjaG9fcmVtb3Zh
bF9jb250cm9sLmdhaW5fcmFtcHVwLmZpcnN0X25vbl96ZXJvX2dhaW4gPDwgIiwiOworICBvc3Qg
PDwgIlwibm9uX3plcm9fZ2Fpbl9ibG9ja3NcIjogIgorICAgICAgPDwgY29uZmlnLmVjaG9fcmVt
b3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLm5vbl96ZXJvX2dhaW5fYmxvY2tzIDw8ICIsIjsKKyAg
b3N0IDw8ICJcImZ1bGxfZ2Fpbl9ibG9ja3NcIjogIgorICAgICAgPDwgY29uZmlnLmVjaG9fcmVt
b3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmZ1bGxfZ2Fpbl9ibG9ja3M7CisgIG9zdCA8PCAifSwi
OworICBvc3QgPDwgIlwiaGFzX2Nsb2NrX2RyaWZ0XCI6ICIKKyAgICAgIDw8IChjb25maWcuZWNo
b19yZW1vdmFsX2NvbnRyb2wuaGFzX2Nsb2NrX2RyaWZ0ID8gInRydWUiIDogImZhbHNlIikKKyAg
ICAgIDw8ICIsIjsKKyAgb3N0IDw8ICJcImxpbmVhcl9hbmRfc3RhYmxlX2VjaG9fcGF0aFwiOiAi
CisgICAgICA8PCAoY29uZmlnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmxpbmVhcl9hbmRfc3RhYmxl
X2VjaG9fcGF0aCA/ICJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiZmFsc2UiKTsKKworICBvc3QgPDwgIn0s
IjsKKworICBvc3QgPDwgIlwiZWNob19tb2RlbFwiOiB7IjsKKyAgb3N0IDw8ICJcIm5vaXNlX2Zs
b29yX2hvbGRcIjogIiA8PCBjb25maWcuZWNob19tb2RlbC5ub2lzZV9mbG9vcl9ob2xkIDw8ICIs
IjsKKyAgb3N0IDw8ICJcIm1pbl9ub2lzZV9mbG9vcl9wb3dlclwiOiAiCisgICAgICA8PCBjb25m
aWcuZWNob19tb2RlbC5taW5fbm9pc2VfZmxvb3JfcG93ZXIgPDwgIiwiOworICBvc3QgPDwgIlwi
c3RhdGlvbmFyeV9nYXRlX3Nsb3BlXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5lY2hvX21vZGVsLnN0
YXRpb25hcnlfZ2F0ZV9zbG9wZSA8PCAiLCI7CisgIG9zdCA8PCAiXCJub2lzZV9nYXRlX3Bvd2Vy
XCI6ICIgPDwgY29uZmlnLmVjaG9fbW9kZWwubm9pc2VfZ2F0ZV9wb3dlciA8PCAiLCI7CisgIG9z
dCA8PCAiXCJub2lzZV9nYXRlX3Nsb3BlXCI6ICIgPDwgY29uZmlnLmVjaG9fbW9kZWwubm9pc2Vf
Z2F0ZV9zbG9wZSA8PCAiLCI7CisgIG9zdCA8PCAiXCJyZW5kZXJfcHJlX3dpbmRvd19zaXplXCI6
ICIKKyAgICAgIDw8IGNvbmZpZy5lY2hvX21vZGVsLnJlbmRlcl9wcmVfd2luZG93X3NpemUgPDwg
IiwiOworICBvc3QgPDwgIlwicmVuZGVyX3Bvc3Rfd2luZG93X3NpemVcIjogIgorICAgICAgPDwg
Y29uZmlnLmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemUgPDwgIiwiOworICBvc3Qg
PDwgIlwicmVuZGVyX3ByZV93aW5kb3dfc2l6ZV9pbml0XCI6ICIKKyAgICAgIDw8IGNvbmZpZy5l
Y2hvX21vZGVsLnJlbmRlcl9wcmVfd2luZG93X3NpemVfaW5pdCA8PCAiLCI7CisgIG9zdCA8PCAi
XCJyZW5kZXJfcG9zdF93aW5kb3dfc2l6ZV9pbml0XCI6ICIKKyAgICAgIDw8IGNvbmZpZy5lY2hv
X21vZGVsLnJlbmRlcl9wb3N0X3dpbmRvd19zaXplX2luaXQgPDwgIiwiOworICBvc3QgPDwgIlwi
bm9ubGluZWFyX2hvbGRcIjogIiA8PCBjb25maWcuZWNob19tb2RlbC5ub25saW5lYXJfaG9sZCA8
PCAiLCI7CisgIG9zdCA8PCAiXCJub25saW5lYXJfcmVsZWFzZVwiOiAiIDw8IGNvbmZpZy5lY2hv
X21vZGVsLm5vbmxpbmVhcl9yZWxlYXNlOworICBvc3QgPDwgIn0sIjsKKworICBvc3QgPDwgIlwi
c3VwcHJlc3NvclwiOiB7IjsKKyAgb3N0IDw8ICJcIm5lYXJlbmRfYXZlcmFnZV9ibG9ja3NcIjog
IgorICAgICAgPDwgY29uZmlnLnN1cHByZXNzb3IubmVhcmVuZF9hdmVyYWdlX2Jsb2NrcyA8PCAi
LCI7CisgIG9zdCA8PCAiXCJub3JtYWxfdHVuaW5nXCI6IHsiOworICBvc3QgPDwgIlwibWFza19s
ZlwiOiBbIjsKKyAgb3N0IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19s
Zi5lbnJfdHJhbnNwYXJlbnQgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3Iubm9y
bWFsX3R1bmluZy5tYXNrX2xmLmVucl9zdXBwcmVzcyA8PCAiLCI7CisgIG9zdCA8PCBjb25maWcu
c3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfbGYuZW1yX3RyYW5zcGFyZW50OworICBvc3Qg
PDwgIl0sIjsKKyAgb3N0IDw8ICJcIm1hc2tfaGZcIjogWyI7CisgIG9zdCA8PCBjb25maWcuc3Vw
cHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYuZW5yX3RyYW5zcGFyZW50IDw8ICIsIjsKKyAg
b3N0IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5lbnJfc3VwcHJl
c3MgPDwgIiwiOworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNr
X2hmLmVtcl90cmFuc3BhcmVudDsKKyAgb3N0IDw8ICJdLCI7CisgIG9zdCA8PCAiXCJtYXhfaW5j
X2ZhY3RvclwiOiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1h
eF9pbmNfZmFjdG9yIDw8ICIsIjsKKyAgb3N0IDw8ICJcIm1heF9kZWNfZmFjdG9yX2xmXCI6ICIK
KyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWF4X2RlY19mYWN0b3Jf
bGY7CisgIG9zdCA8PCAifSwiOworICBvc3QgPDwgIlwibmVhcmVuZF90dW5pbmdcIjogeyI7Cisg
IG9zdCA8PCAiXCJtYXNrX2xmXCI6IFsiOworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3IubmVh
cmVuZF90dW5pbmcubWFza19sZi5lbnJfdHJhbnNwYXJlbnQgPDwgIiwiOworICBvc3QgPDwgY29u
ZmlnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZi5lbnJfc3VwcHJlc3MgPDwgIiwi
OworICBvc3QgPDwgY29uZmlnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZi5lbXJf
dHJhbnNwYXJlbnQ7CisgIG9zdCA8PCAiXSwiOworICBvc3QgPDwgIlwibWFza19oZlwiOiBbIjsK
KyAgb3N0IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfaGYuZW5yX3Ry
YW5zcGFyZW50IDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVu
aW5nLm1hc2tfaGYuZW5yX3N1cHByZXNzIDw8ICIsIjsKKyAgb3N0IDw8IGNvbmZpZy5zdXBwcmVz
c29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfaGYuZW1yX3RyYW5zcGFyZW50OworICBvc3QgPDwgIl0s
IjsKKyAgb3N0IDw8ICJcIm1heF9pbmNfZmFjdG9yXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBw
cmVzc29yLm5lYXJlbmRfdHVuaW5nLm1heF9pbmNfZmFjdG9yIDw8ICIsIjsKKyAgb3N0IDw8ICJc
Im1heF9kZWNfZmFjdG9yX2xmXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29yLm5lYXJl
bmRfdHVuaW5nLm1heF9kZWNfZmFjdG9yX2xmOworICBvc3QgPDwgIn0sIjsKKyAgb3N0IDw8ICJc
ImRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uXCI6IHsiOworICBvc3QgPDwgIlwiZW5yX3RocmVz
aG9sZFwiOiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2Rl
dGVjdGlvbi5lbnJfdGhyZXNob2xkIDw8ICIsIjsKKyAgb3N0IDw8ICJcImVucl9leGl0X3RocmVz
aG9sZFwiOiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2Rl
dGVjdGlvbi5lbnJfZXhpdF90aHJlc2hvbGQgPDwgIiwiOworICBvc3QgPDwgIlwic25yX3RocmVz
aG9sZFwiOiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2Rl
dGVjdGlvbi5zbnJfdGhyZXNob2xkIDw8ICIsIjsKKyAgb3N0IDw8ICJcImhvbGRfZHVyYXRpb25c
IjogIgorICAgICAgPDwgY29uZmlnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rp
b24uaG9sZF9kdXJhdGlvbiA8PCAiLCI7CisgIG9zdCA8PCAiXCJ0cmlnZ2VyX3RocmVzaG9sZFwi
OiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlv
bi50cmlnZ2VyX3RocmVzaG9sZCA8PCAiLCI7CisgIG9zdCA8PCAiXCJ1c2VfZHVyaW5nX2luaXRp
YWxfcGhhc2VcIjogIgorICAgICAgPDwgY29uZmlnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVu
ZF9kZXRlY3Rpb24udXNlX2R1cmluZ19pbml0aWFsX3BoYXNlOworICBvc3QgPDwgIn0sIjsKKyAg
b3N0IDw8ICJcImhpZ2hfYmFuZHNfc3VwcHJlc3Npb25cIjogeyI7CisgIG9zdCA8PCAiXCJlbnJf
dGhyZXNob2xkXCI6ICIKKyAgICAgIDw8IGNvbmZpZy5zdXBwcmVzc29yLmhpZ2hfYmFuZHNfc3Vw
cHJlc3Npb24uZW5yX3RocmVzaG9sZCA8PCAiLCI7CisgIG9zdCA8PCAiXCJtYXhfZ2Fpbl9kdXJp
bmdfZWNob1wiOiAiCisgICAgICA8PCBjb25maWcuc3VwcHJlc3Nvci5oaWdoX2JhbmRzX3N1cHBy
ZXNzaW9uLm1heF9nYWluX2R1cmluZ19lY2hvOworICBvc3QgPDwgIn0sIjsKKyAgb3N0IDw8ICJc
ImZsb29yX2ZpcnN0X2luY3JlYXNlXCI6ICIgPDwgY29uZmlnLnN1cHByZXNzb3IuZmxvb3JfZmly
c3RfaW5jcmVhc2UKKyAgICAgIDw8ICIsIjsKKyAgb3N0IDw8ICJcImVuZm9yY2VfdHJhbnNwYXJl
bnRcIjogIgorICAgICAgPDwgKGNvbmZpZy5zdXBwcmVzc29yLmVuZm9yY2VfdHJhbnNwYXJlbnQg
PyAidHJ1ZSIgOiAiZmFsc2UiKSA8PCAiLCI7CisgIG9zdCA8PCAiXCJlbmZvcmNlX2VtcHR5X2hp
Z2hlcl9iYW5kc1wiOiAiCisgICAgICA8PCAoY29uZmlnLnN1cHByZXNzb3IuZW5mb3JjZV9lbXB0
eV9oaWdoZXJfYmFuZHMgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgb3N0IDw8ICJ9IjsKKyAgb3N0
IDw8ICJ9IjsKKyAgb3N0IDw8ICJ9IjsKKworICByZXR1cm4gb3N0LlJlbGVhc2UoKTsKK30KK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb24u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby9l
Y2hvX2NhbmNlbGxlcjNfY29uZmlnX2pzb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTczNjUwZjg1YzFhNjE3
NTNjYmM1OTFkNGYxNjIxMjg2YTk4MWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19j
b25maWdfanNvbi5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aWZuZGVmIEFQSV9BVURJT19FQ0hPX0NBTkNFTExFUjNfQ09ORklHX0pTT05fSF8KKyNkZWZpbmUg
QVBJX0FVRElPX0VDSE9fQ0FOQ0VMTEVSM19DT05GSUdfSlNPTl9IXworCisjaW5jbHVkZSA8c3Ry
aW5nPgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAi
YXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9z
eXN0ZW0vcnRjX2V4cG9ydC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKy8vIFBhcnNlcyBhIEpT
T04tZW5jb2RlZCBzdHJpbmcgaW50byBhbiBBZWMzIGNvbmZpZy4gRmllbGRzIGNvcnJlc3BvbmRz
IHRvCisvLyBzdWJzdHJ1Y3QgbmFtZXMsIHdpdGggdGhlIGFkZGl0aW9uIHRoYXQgdGhlcmUgbXVz
dCBiZSBhIHRvcC1sZXZlbCBub2RlCisvLyAiYWVjMyIuIFByb2R1Y2VzIGRlZmF1bHQgY29uZmln
IHZhbHVlcyBmb3IgYW55dGhpbmcgdGhhdCBjYW5ub3QgYmUgcGFyc2VkCisvLyBmcm9tIHRoZSBz
dHJpbmcuIElmIGFueSBlcnJvciB3YXMgZm91bmQgaW4gdGhlIHBhcnNpbmcsIHBhcnNpbmdfc3Vj
Y2Vzc2Z1bCBpcworLy8gc2V0IHRvIGZhbHNlLgorUlRDX0VYUE9SVCB2b2lkIEFlYzNDb25maWdG
cm9tSnNvblN0cmluZyhhYnNsOjpzdHJpbmdfdmlldyBqc29uX3N0cmluZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWcqIGNvbmZp
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCogcGFyc2lu
Z19zdWNjZXNzZnVsKTsKKworLy8gVG8gYmUgZGVwcmVjYXRlZC4KKy8vIFBhcnNlcyBhIEpTT04t
ZW5jb2RlZCBzdHJpbmcgaW50byBhbiBBZWMzIGNvbmZpZy4gRmllbGRzIGNvcnJlc3BvbmRzIHRv
CisvLyBzdWJzdHJ1Y3QgbmFtZXMsIHdpdGggdGhlIGFkZGl0aW9uIHRoYXQgdGhlcmUgbXVzdCBi
ZSBhIHRvcC1sZXZlbCBub2RlCisvLyAiYWVjMyIuIFJldHVybnMgZGVmYXVsdCBjb25maWcgdmFs
dWVzIGZvciBhbnl0aGluZyB0aGF0IGNhbm5vdCBiZSBwYXJzZWQgZnJvbQorLy8gdGhlIHN0cmlu
Zy4KK1JUQ19FWFBPUlQgRWNob0NhbmNlbGxlcjNDb25maWcKK0FlYzNDb25maWdGcm9tSnNvblN0
cmluZyhhYnNsOjpzdHJpbmdfdmlldyBqc29uX3N0cmluZyk7CisKKy8vIEVuY29kZXMgYW4gQWVj
MyBjb25maWcgaW4gSlNPTiBmb3JtYXQuIEZpZWxkcyBjb3JyZXNwb25kcyB0byBzdWJzdHJ1Y3Qg
bmFtZXMsCisvLyB3aXRoIHRoZSBhZGRpdGlvbiB0aGF0IHRoZSB0b3AtbGV2ZWwgbm9kZSBpcyBu
YW1lZCAiYWVjMyIuCitzdGQ6OnN0cmluZyBBZWMzQ29uZmlnVG9Kc29uU3RyaW5nKGNvbnN0IEVj
aG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpOworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisK
KyNlbmRpZiAgLy8gQVBJX0FVRElPX0VDSE9fQ0FOQ0VMTEVSM19DT05GSUdfSlNPTl9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvL2VjaG9fY2FuY2VsbGVyM19mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2ZhY3RvcnkuaAppbmRl
eCBmNmRiMTE2ODUwMzdhMWEyYzMyZDg0YTZmNzY1YTI4N2ZjNDc1YjdmLi45MDUyZDk5YmIxZWI4
OTFiZGMzY2ViOWY5ZmZhNmE5MjBhYzMyNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2ZhY3Rv
cnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW8vZWNob19jYW5jZWxsZXIzX2ZhY3RvcnkuaApAQCAtMTUsMTAgKzE1LDExIEBACiAKICNp
bmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgogI2luY2x1ZGUgImFw
aS9hdWRpby9lY2hvX2NvbnRyb2wuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4
cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3MgRWNob0NhbmNlbGxlcjNGYWN0
b3J5IDogcHVibGljIEVjaG9Db250cm9sRmFjdG9yeSB7CitjbGFzcyBSVENfRVhQT1JUIEVjaG9D
YW5jZWxsZXIzRmFjdG9yeSA6IHB1YmxpYyBFY2hvQ29udHJvbEZhY3RvcnkgewogIHB1YmxpYzoK
ICAgLy8gRmFjdG9yeSBwcm9kdWNpbmcgRWNob0NhbmNlbGxlcjMgaW5zdGFuY2VzIHdpdGggdGhl
IGRlZmF1bHQgY29uZmlndXJhdGlvbi4KICAgRWNob0NhbmNlbGxlcjNGYWN0b3J5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW8vdGVzdC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpby90ZXN0L0JVSUxELmduCmluZGV4IDlhNzk3Nzg4ZjY4ZGNlYTcyZGU5MjEy
M2MxYjU1MjRhNTE0NDdiYWQuLjRlMDRhOGE2NGExMDQ4YWYwMzMyNDMxYjQ2YzE1N2ZkYTZkZGRl
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpby90ZXN0L0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby90ZXN0L0JVSUxELmduCkBAIC0xNyw4ICsxNywxMiBA
QCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICB0ZXN0b25seSA9IHRydWUKICAgICBzb3Vy
Y2VzID0gWwogICAgICAgImF1ZGlvX2ZyYW1lX3VuaXR0ZXN0LmNjIiwKKyAgICAgICJlY2hvX2Nh
bmNlbGxlcjNfY29uZmlnX2pzb25fdW5pdHRlc3QuY2MiLAorICAgICAgImVjaG9fY2FuY2VsbGVy
M19jb25maWdfdW5pdHRlc3QuY2MiLAogICAgIF0KICAgICBkZXBzID0gWworICAgICAgIi4uOmFl
YzNfY29uZmlnIiwKKyAgICAgICIuLjphZWMzX2NvbmZpZ19qc29uIiwKICAgICAgICIuLjphdWRp
b19mcmFtZV9hcGkiLAogICAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVk
IiwKICAgICAgICIuLi8uLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vdGVzdC9lY2hv
X2NhbmNlbGxlcjNfY29uZmlnX2pzb25fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vdGVzdC9lY2hvX2NhbmNlbGxlcjNfY29u
ZmlnX2pzb25fdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2MzYTQ0NWM2MGEzNDEyZDAzYTBhMmNl
ZjI5NDdkZTE0ZDE1NmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpby90ZXN0L2VjaG9fY2FuY2VsbGVyM19jb25m
aWdfanNvbl91bml0dGVzdC5jYwpAQCAtMCwwICsxLDQxIEBACisvKgorICogIENvcHlyaWdodCAy
MDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWdfanNvbi5oIgorI2lu
Y2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCisjaW5jbHVkZSAidGVz
dC9ndGVzdC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworVEVTVChFY2hvQ2FuY2VsbGVyM0pz
b25IZWxwZXJzLCBUb1N0cmluZ0FuZFBhcnNlSnNvbikgeworICBFY2hvQ2FuY2VsbGVyM0NvbmZp
ZyBjZmc7CisgIGNmZy5kZWxheS5kb3duX3NhbXBsaW5nX2ZhY3RvciA9IDF1OworICBjZmcuZmls
dGVyLnNoYWRvd19pbml0aWFsLmxlbmd0aF9ibG9ja3MgPSA3dTsKKyAgY2ZnLnN1cHByZXNzb3Iu
bm9ybWFsX3R1bmluZy5tYXNrX2hmLmVucl9zdXBwcmVzcyA9IC41ZjsKKyAgc3RkOjpzdHJpbmcg
anNvbl9zdHJpbmcgPSBBZWMzQ29uZmlnVG9Kc29uU3RyaW5nKGNmZyk7CisgIEVjaG9DYW5jZWxs
ZXIzQ29uZmlnIGNmZ190cmFuc2Zvcm1lZCA9IEFlYzNDb25maWdGcm9tSnNvblN0cmluZyhqc29u
X3N0cmluZyk7CisKKyAgLy8gRXhwZWN0IHVuY2hhbmdlZCB2YWx1ZXMgdG8gcmVtYWluIGRlZmF1
bHQuCisgIEVYUEVDVF9FUShjZmcuZmlsdGVyLm1haW4uZXJyb3JfZmxvb3IsCisgICAgICAgICAg
ICBjZmdfdHJhbnNmb3JtZWQuZmlsdGVyLm1haW4uZXJyb3JfZmxvb3IpOworICBFWFBFQ1RfRVEo
Y2ZnLmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVuLAorICAgICAgICAgICAgY2ZnX3RyYW5zZm9ybWVk
LmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVuKTsKKyAgRVhQRUNUX0VRKGNmZy5zdXBwcmVzc29yLm5v
cm1hbF90dW5pbmcubWFza19sZi5lbnJfc3VwcHJlc3MsCisgICAgICAgICAgICBjZmdfdHJhbnNm
b3JtZWQuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfbGYuZW5yX3N1cHByZXNzKTsKKwor
ICAvLyBFeHBlY3QgY2hhbmdlZCB2YWx1ZXMgdG8gY2FycnkgdGhyb3VnaCB0aGUgdHJhbnNmb3Jt
YXRpb24uCisgIEVYUEVDVF9FUShjZmcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IsCisgICAg
ICAgICAgICBjZmdfdHJhbnNmb3JtZWQuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IpOworICBF
WFBFQ1RfRVEoY2ZnLmZpbHRlci5zaGFkb3dfaW5pdGlhbC5sZW5ndGhfYmxvY2tzLAorICAgICAg
ICAgICAgY2ZnX3RyYW5zZm9ybWVkLmZpbHRlci5zaGFkb3dfaW5pdGlhbC5sZW5ndGhfYmxvY2tz
KTsKKyAgRVhQRUNUX0VRKGNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5lbnJf
c3VwcHJlc3MsCisgICAgICAgICAgICBjZmdfdHJhbnNmb3JtZWQuc3VwcHJlc3Nvci5ub3JtYWxf
dHVuaW5nLm1hc2tfaGYuZW5yX3N1cHByZXNzKTsKK30KK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpby90ZXN0L2VjaG9fY2FuY2VsbGVyM19jb25maWdfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vdGVzdC9lY2hvX2Nh
bmNlbGxlcjNfY29uZmlnX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmZTcyYWM5NThkZjU5YzU1
NGU5MTAyOTc3MDdiNWQ3Y2ExNGMzMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW8vdGVzdC9lY2hvX2NhbmNlbGxl
cjNfY29uZmlnX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxs
ZXIzX2NvbmZpZy5oIgorI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmln
X2pzb24uaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CitURVNUKEVjaG9DYW5jZWxsZXIzQ29uZmlnLCBWYWxpZENvbmZpZ0lzTm90TW9kaWZpZWQpIHsK
KyAgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnOworICBFWFBFQ1RfVFJVRShFY2hvQ2FuY2Vs
bGVyM0NvbmZpZzo6VmFsaWRhdGUoJmNvbmZpZykpOworICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBk
ZWZhdWx0X2NvbmZpZzsKKyAgRVhQRUNUX0VRKEFlYzNDb25maWdUb0pzb25TdHJpbmcoY29uZmln
KSwKKyAgICAgICAgICAgIEFlYzNDb25maWdUb0pzb25TdHJpbmcoZGVmYXVsdF9jb25maWcpKTsK
K30KKworVEVTVChFY2hvQ2FuY2VsbGVyM0NvbmZpZywgSW52YWxpZENvbmZpZ0lzQ29ycmVjdGVk
KSB7CisgIC8vIENoYW5nZSBhIHBhcmFtZXRlciBhbmQgdmFsaWRhdGUuCisgIEVjaG9DYW5jZWxs
ZXIzQ29uZmlnIGNvbmZpZzsKKyAgY29uZmlnLmVjaG9fbW9kZWwubWluX25vaXNlX2Zsb29yX3Bv
d2VyID0gLTE2MDAwMDAuZjsKKyAgRVhQRUNUX0ZBTFNFKEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpW
YWxpZGF0ZSgmY29uZmlnKSk7CisgIEVYUEVDVF9HRShjb25maWcuZWNob19tb2RlbC5taW5fbm9p
c2VfZmxvb3JfcG93ZXIsIDAuZik7CisgIC8vIFZlcmlmeSByZW1haW5pbmcgcGFyYW1ldGVycyBh
cmUgdW5jaGFuZ2VkLgorICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBkZWZhdWx0X2NvbmZpZzsKKyAg
Y29uZmlnLmVjaG9fbW9kZWwubWluX25vaXNlX2Zsb29yX3Bvd2VyID0KKyAgICAgIGRlZmF1bHRf
Y29uZmlnLmVjaG9fbW9kZWwubWluX25vaXNlX2Zsb29yX3Bvd2VyOworICBFWFBFQ1RfRVEoQWVj
M0NvbmZpZ1RvSnNvblN0cmluZyhjb25maWcpLAorICAgICAgICAgICAgQWVjM0NvbmZpZ1RvSnNv
blN0cmluZyhkZWZhdWx0X2NvbmZpZykpOworfQorCitURVNUKEVjaG9DYW5jZWxsZXIzQ29uZmln
LCBWYWxpZGF0ZWRDb25maWdzQXJlVmFsaWQpIHsKKyAgRWNob0NhbmNlbGxlcjNDb25maWcgY29u
ZmlnOworICBjb25maWcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IgPSA5ODM7CisgIEVYUEVD
VF9GQUxTRShFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6VmFsaWRhdGUoJmNvbmZpZykpOworICBFWFBF
Q1RfVFJVRShFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6VmFsaWRhdGUoJmNvbmZpZykpOworfQorfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvQlVJTEQuZ24K
aW5kZXggYTcwNjBhMjI5YWRmMDE3MTgxNDcyNDMzM2E2OTgzNDNlMmNjYWFkNS4uMzFmZTJiZWM1
OGIwM2JlNTNlMTQyODQ5NGEyNzAyYTBlNjI1NDM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9CVUlMRC5nbgor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL0JVSUxELmduCkBAIC0zMCwxMSArMzAsMTMgQEAgcnRjX3NvdXJjZV9zZXQoImF1ZGlv
X2NvZGVjc19hcGkiKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiLi46YXJyYXlfdmlldyIsCisg
ICAgIi4uOmJpdHJhdGVfYWxsb2NhdGlvbiIsCiAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAog
ICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8uLi9ydGNfYmFzZTpkZXByZWNh
dGlvbiIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4v
Li4vcnRjX2Jhc2U6c2FuaXRpemVyIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19l
eHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL0wxNi9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L0JVSUxELmduCmluZGV4IDk3MjQ4MDUw
MDEyNWZhOWRjZTI3MzA3YjQ3NTNkNjIxMTY2MWZlMDQuLjM0ZWMyZTQyMDhlZjM0ODU2YjU4NTRi
YTljMGNkZWY0Yjk5MzcyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L0JVSUxELmduCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2
L0JVSUxELmduCkBAIC0yMSwxMSArMjEsMTIgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19l
bmNvZGVyX0wxNiIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLjphdWRpb19jb2RlY3NfYXBp
IiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uLy4uL21vZHVsZXMv
YXVkaW9fY29kaW5nOnBjbTE2YiIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAorICAgICIuLi8u
Li8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRp
b25hbCIsCiAgIF0KIH0KQEAgLTM5LDEwICs0MCwxMSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1
ZGlvX2RlY29kZXJfTDE2IikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVj
c19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vLi4vbW9k
dWxlcy9hdWRpb19jb2Rpbmc6cGNtMTZiIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jh
c2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIs
CiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2
L2F1ZGlvX2RlY29kZXJfTDE2LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rlcl9MMTYuY2MKaW5kZXgg
YTcxZTMwODcwMDdkZjNmZDc2ZmEyMzJmYzNlMzQ2OGZhMzgyMWU5OS4uYmUwYzZiNTZiMjViNTY5
ZWFlNWU2NWJjNzc4NTk4N2M0YzU4NjIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rl
cl9MMTYuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rlcl9MMTYuY2MKQEAgLTExLDcgKzExLDcg
QEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRpb19kZWNvZGVyX0wxNi5oIgog
CiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVz
LmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0
Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlv
X2RlY29kZXJfcGNtMTZiLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L3BjbTE2Yi9wY20xNmJfY29tbW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2Fm
ZV9jb252ZXJzaW9ucy5oIgpAQCAtMjMsNyArMjMsNyBAQCBhYnNsOjpvcHRpb25hbDxBdWRpb0Rl
Y29kZXJMMTY6OkNvbmZpZz4gQXVkaW9EZWNvZGVyTDE2OjpTZHBUb0NvbmZpZygKICAgQ29uZmln
IGNvbmZpZzsKICAgY29uZmlnLnNhbXBsZV9yYXRlX2h6ID0gZm9ybWF0LmNsb2NrcmF0ZV9oejsK
ICAgY29uZmlnLm51bV9jaGFubmVscyA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PGludD4oZm9ybWF0Lm51
bV9jaGFubmVscyk7Ci0gIHJldHVybiBTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwg
IkwxNiIpID09IDAgJiYgY29uZmlnLklzT2soKQorICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3Jl
Q2FzZShmb3JtYXQubmFtZSwgIkwxNiIpICYmIGNvbmZpZy5Jc09rKCkKICAgICAgICAgICAgICA/
IGFic2w6Om9wdGlvbmFsPENvbmZpZz4oY29uZmlnKQogICAgICAgICAgICAgIDogYWJzbDo6bnVs
bG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2RlY29kZXJfTDE2LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9h
dWRpb19kZWNvZGVyX0wxNi5oCmluZGV4IDE4NGVjMjRlZDkyZjFlMjJkMzBjOWIyZTZiZTdmM2Q3
Zjc3ZTE1YzguLmYwYmUwMzY1OWM1NDhjMWM0NzhiM2FlMGU5NTY0ZTU1OTUzMDMxMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvTDE2L2F1ZGlvX2RlY29kZXJfTDE2LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZGVjb2Rl
cl9MMTYuaApAQCAtMTgsMTQgKzE4LDEzIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19k
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIAogLy8gTDE2IGRlY29kZXIgQVBJIGZvciB1c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIg
dG8KIC8vIENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRo
aXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhv
dXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRGVjb2RlckwxNiB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBB
dWRpb0RlY29kZXJMMTYgewogICBzdHJ1Y3QgQ29uZmlnIHsKICAgICBib29sIElzT2soKSBjb25z
dCB7CiAgICAgICByZXR1cm4gKHNhbXBsZV9yYXRlX2h6ID09IDgwMDAgfHwgc2FtcGxlX3JhdGVf
aHogPT0gMTYwMDAgfHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2VuY29kZXJfTDE2LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9MMTYvYXVkaW9fZW5jb2Rlcl9MMTYuY2MKaW5kZXggYjUxNmY2Mjg2M2RhMjRmY2UzNWVmNTJk
NDZhMGUwNGMyZDVjNzk3Zi4uMWJiNTUyYmM1YzFlNmUzMjU3YjE4NTcyZjk3YjMzNDVmZGFlM2I3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZW5jb2Rlcl9MMTYuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVk
aW9fZW5jb2Rlcl9MMTYuY2MKQEAgLTExLDcgKzExLDcgQEAKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5oIgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkv
bWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5j
bHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2VuY29kZXJfcGNtMTZiLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20xNmJfY29tbW9uLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgpAQCAtMzUs
NyArMzUsNyBAQCBhYnNsOjpvcHRpb25hbDxBdWRpb0VuY29kZXJMMTY6OkNvbmZpZz4gQXVkaW9F
bmNvZGVyTDE2OjpTZHBUb0NvbmZpZygKICAgICAgIGNvbmZpZy5mcmFtZV9zaXplX21zID0gcnRj
OjpTYWZlQ2xhbXAoMTAgKiAoKnB0aW1lIC8gMTApLCAxMCwgNjApOwogICAgIH0KICAgfQotICBy
ZXR1cm4gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJMMTYiKSA9PSAwICYmIGNv
bmZpZy5Jc09rKCkKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUs
ICJMMTYiKSAmJiBjb25maWcuSXNPaygpCiAgICAgICAgICAgICAgPyBhYnNsOjpvcHRpb25hbDxD
b25maWc+KGNvbmZpZykKICAgICAgICAgICAgICA6IGFic2w6Om51bGxvcHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL0wxNi9hdWRpb19lbmNvZGVyX0wxNi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9MMTYvYXVkaW9fZW5jb2Rlcl9MMTYu
aAppbmRleCAzNDBlM2FmNDdmYmFmNzdjYWFlYjg0NDMxMWE3NGI4OTUwNmVkZmNhLi5iNDEwMjg2
ODAyZmU3Njg5YWNjNGY5ODg5Nzc4Yjg4Y2M4ZWU4YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL0wxNi9hdWRp
b19lbmNvZGVyX0wxNi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvTDE2L2F1ZGlvX2VuY29kZXJfTDE2LmgKQEAgLTE4LDE0
ICsxOCwxMyBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9p
ZC5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oIgogI2luY2x1
ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
c3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEwxNiBlbmNv
ZGVyIEFQSSBmb3IgdXNlIGFzIGEgdGVtcGxhdGUgcGFyYW1ldGVyIHRvCiAvLyBDcmVhdGVBdWRp
b0VuY29kZXJGYWN0b3J5PC4uLj4oKS4KLS8vCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGls
bCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLXN0cnVj
dCBBdWRpb0VuY29kZXJMMTYgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9FbmNvZGVyTDE2IHsK
ICAgc3RydWN0IENvbmZpZyB7CiAgICAgYm9vbCBJc09rKCkgY29uc3QgewogICAgICAgcmV0dXJu
IChzYW1wbGVfcmF0ZV9oeiA9PSA4MDAwIHx8IHNhbXBsZV9yYXRlX2h6ID09IDE2MDAwIHx8CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJf
aWQuY2MKaW5kZXggYWM4NDEwN2VkYTEwODI0OWQ5NGQzMWE4NzE3NzYzZTlmMDRhZjE3OC4uNmNi
NTFlZDZiNzJjN2U0ZjQ2NTJkYzcyOGFhMzNhZTNlMzk1MjYxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRp
b19jb2RlY19wYWlyX2lkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9pZC5jYwpAQCAtMTEs
NiArMTEsNyBAQAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fY29kZWNfcGFpcl9p
ZC5oIgogCiAjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L2F1ZGlvX2RlY29kZXIuaAppbmRleCBiMDFhNjZhMDY0YTQ0ZWJmODllNWU4Nzg5MWM5YmQxM2Jk
ZGE5ODk0Li44ODllMmM2MmQwZWQ4OWZhMDQ4NzlmOGI3YTg5NzFlYmIzYTVmZWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2RlY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaApAQCAtMTEsNiAr
MTEsOCBAQAogI2lmbmRlZiBBUElfQVVESU9fQ09ERUNTX0FVRElPX0RFQ09ERVJfSF8KICNkZWZp
bmUgQVBJX0FVRElPX0NPREVDU19BVURJT19ERUNPREVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19k
ZWNvZGVyX2ZhY3RvcnkuaAppbmRleCA5MGY5M2YwY2Q1ZmM5MDhlOTkxODMxOTZmYWQwNmZkZGY3
OGVlNGZiLi41NWUxOTdhMTRhOTI3MDgyMjZkM2RmYWJjMzU3ZjIzYzBhYTc1ZjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5LmgKQEAgLTIzLDcgKzIzLDYgQEAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBBIGZhY3Rv
cnkgdGhhdCBjcmVhdGVzIEF1ZGlvRGVjb2RlcnMuCi0vLyBOT1RFOiBUaGlzIGNsYXNzIGlzIHN0
aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgogY2xh
c3MgQXVkaW9EZWNvZGVyRmFjdG9yeSA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsK
ICBwdWJsaWM6CiAgIHZpcnR1YWwgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlY1NwZWM+IEdldFN1cHBv
cnRlZERlY29kZXJzKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3Rvcnlf
dGVtcGxhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5X3RlbXBsYXRlLmgKaW5kZXggY2Ri
ZThiZGU3YTg0MmU4ZThkNWEyYTg2M2NhOGFlMWU4Y2VjYjI4Ny4uMjJiYjdkZTQ3MjEzNmU4YzRl
ZWFjMmIxZDNlODY0MTQ0NDM2MzExYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3Rv
cnlfdGVtcGxhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oCkBA
IC0xMTIsOCArMTEyLDYgQEAgY2xhc3MgQXVkaW9EZWNvZGVyRmFjdG9yeVQgOiBwdWJsaWMgQXVk
aW9EZWNvZGVyRmFjdG9yeSB7CiAvLyBkZWNvZGVyIHR5cGVzIGluIHRoZSBvcmRlciB0aGV5IHdl
cmUgc3BlY2lmaWVkIGluIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudAogLy8gbGlzdCwgc3RvcHBpbmcg
YXQgdGhlIGZpcnN0IG9uZSB0aGF0IGNsYWltcyB0byBiZSBhYmxlIHRvIGRvIHRoZSBqb2IuCiAv
LwotLy8gTk9URTogVGhpcyBmdW5jdGlvbiBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQg
bWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLS8vCiAvLyBUT0RPKGt3aWJlcmcpOiBQb2ludCBh
dCBDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpIGZvciBhbiBleGFtcGxlIG9mCiAv
LyBob3cgaXQgaXMgdXNlZC4KIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUcz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2Rl
Y3MvYXVkaW9fZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5jYwppbmRleCA1OTVjMTExMzFl
N2M0MTA2NmYzNGVlMjQxZTdmMTlmMzI5MDYyNzRhLi4xZDg4NWY5Y2VjZjg0ZDgwOThmNGU0YzI0
MTI3MWYwN2Q3ZWZlNThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19lbmNvZGVyLmNjCkBAIC05Miw2ICs5MiwxMSBAQCB2b2lkIEF1ZGlvRW5jb2Rlcjo6T25S
ZWNlaXZlZFVwbGlua0JhbmR3aWR0aCgKICAgICBpbnQgdGFyZ2V0X2F1ZGlvX2JpdHJhdGVfYnBz
LAogICAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGJ3ZV9wZXJpb2RfbXMpIHt9CiAKK3ZvaWQg
QXVkaW9FbmNvZGVyOjpPblJlY2VpdmVkVXBsaW5rQWxsb2NhdGlvbihCaXRyYXRlQWxsb2NhdGlv
blVwZGF0ZSB1cGRhdGUpIHsKKyAgT25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aCh1cGRhdGUudGFy
Z2V0X2JpdHJhdGUuYnBzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlLmJ3
ZV9wZXJpb2QubXMoKSk7Cit9CisKIHZvaWQgQXVkaW9FbmNvZGVyOjpPblJlY2VpdmVkUnR0KGlu
dCBydHRfbXMpIHt9CiAKIHZvaWQgQXVkaW9FbmNvZGVyOjpPblJlY2VpdmVkT3ZlcmhlYWQoc2l6
ZV90IG92ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXQpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Vu
Y29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oCmluZGV4IDZhMWY2NTM0YjIxYThhM2ZmYjZkMjA5
ZDk1NTcxYzg5YWUyMDhhMTYuLmM5MDg1MTgwNjNkNGRhN2M5NGFhMGU5MzQ2ZGI3ZWUzYWNiZWYx
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5o
CkBAIC0xMSwxMyArMTEsMTMgQEAKICNpZm5kZWYgQVBJX0FVRElPX0NPREVDU19BVURJT19FTkNP
REVSX0hfCiAjZGVmaW5lIEFQSV9BVURJT19DT0RFQ1NfQVVESU9fRU5DT0RFUl9IXwogCi0jaW5j
bHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAj
aW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2lu
Y2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYXBpL2NhbGwvYml0cmF0ZV9hbGxv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvZGVwcmVjYXRpb24uaCIKIApAQCAtMjIyLDYgKzIyMiwxMCBAQCBjbGFzcyBBdWRpb0VuY29k
ZXIgewogICB2aXJ0dWFsIHZvaWQgT25SZWNlaXZlZFVwbGlua0JhbmR3aWR0aChpbnQgdGFyZ2V0
X2F1ZGlvX2JpdHJhdGVfYnBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBid2VfcGVyaW9kX21zKTsKIAorICAvLyBQcm92
aWRlcyB0YXJnZXQgYXVkaW8gYml0cmF0ZSBhbmQgY29ycmVzcG9uZGluZyBwcm9iaW5nIGludGVy
dmFsIG9mCisgIC8vIHRoZSBiYW5kd2lkdGggZXN0aW1hdG9yIHRvIHRoaXMgZW5jb2RlciB0byBh
bGxvdyBpdCB0byBhZGFwdC4KKyAgdmlydHVhbCB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtBbGxvY2F0
aW9uKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSk7CisKICAgLy8gUHJvdmlkZXMgUlRU
IHRvIHRoaXMgZW5jb2RlciB0byBhbGxvdyBpdCB0byBhZGFwdC4KICAgdmlydHVhbCB2b2lkIE9u
UmVjZWl2ZWRSdHQoaW50IHJ0dF9tcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oCmluZGV4IGZiNGUyM2ZmZTc4YjVi
MjJjNjdlMjI4ODhhMzI3MmM2N2FkM2I5YjkuLmIyOTA5NjdjNzgwM2ZkNzQ3ZDhiNDdiMzQ2NWY0
NDllNzRiZWFlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVj
cy9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaApAQCAtMjMsNyArMjMsNiBAQAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKIC8vIEEgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgQXVkaW9FbmNvZGVycy4KLS8vIE5P
VEU6IFRoaXMgY2xhc3MgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ug
d2l0aG91dCBub3RpY2UuCiBjbGFzcyBBdWRpb0VuY29kZXJGYWN0b3J5IDogcHVibGljIHJ0Yzo6
UmVmQ291bnRJbnRlcmZhY2UgewogIHB1YmxpYzoKICAgLy8gUmV0dXJucyBhIHByaW9yaXRpemVk
IGxpc3Qgb2YgYXVkaW8gY29kZWNzLCB0byB1c2UgZm9yIHNpZ25hbGluZyBldGMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVy
X2ZhY3RvcnlfdGVtcGxhdGUuaAppbmRleCAzNzZiMzllNGM2ZjlmYzhlYWEzYzdlZjM3YWRjZGVl
NjFjNDI4MzgzLi4yMDg4NjE5MDE5NjI2MmJhMjc3N2NlNmNiYmE3OGZlZGU2NjllNzYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL2F1ZGlvX2VuY29kZXJfZmFjdG9yeV90ZW1wbGF0ZS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5X3RlbXBsYXRlLmgKQEAgLTEzMSw4ICsxMzEsNiBAQCBjbGFzcyBBdWRp
b0VuY29kZXJGYWN0b3J5VCA6IHB1YmxpYyBBdWRpb0VuY29kZXJGYWN0b3J5IHsKIC8vIGVuY29k
ZXJzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgc3BlY2lmaWVkIGluIHRoZSB0ZW1wbGF0ZSBhcmd1
bWVudCBsaXN0LAogLy8gc3RvcHBpbmcgYXQgdGhlIGZpcnN0IG9uZSB0aGF0IGNsYWltcyB0byBi
ZSBhYmxlIHRvIGRvIHRoZSBqb2IuCiAvLwotLy8gTk9URTogVGhpcyBmdW5jdGlvbiBpcyBzdGls
bCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLS8vCiAv
LyBUT0RPKGt3aWJlcmcpOiBQb2ludCBhdCBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9y
eSgpIGZvciBhbiBleGFtcGxlIG9mCiAvLyBob3cgaXQgaXMgdXNlZC4KIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBUcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3Jt
YXQuY2MKaW5kZXggODFlZDI5OWRkYjY2YWFmODM2OTY3ZDRmNDQ2ZjczZTkwOGJjNzIxMS4uMTE3
ODhiOTFlODI5MTk4YmYyNzdiYzM0ZGZmZTgwYjlmZjUzOWY2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRp
b19mb3JtYXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuY2MKQEAgLTEwLDcgKzEwLDcgQEAKIAog
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCiAKLSNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wv
c3RyaW5ncy9tYXRjaC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMzIsNyArMzIsNyBA
QCBTZHBBdWRpb0Zvcm1hdDo6U2RwQXVkaW9Gb3JtYXQoYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSwK
ICAgICAgIHBhcmFtZXRlcnMocGFyYW0pIHt9CiAKIGJvb2wgU2RwQXVkaW9Gb3JtYXQ6Ok1hdGNo
ZXMoY29uc3QgU2RwQXVkaW9Gb3JtYXQmIG8pIGNvbnN0IHsKLSAgcmV0dXJuIFNUUl9DQVNFX0NN
UChuYW1lLmNfc3RyKCksIG8ubmFtZS5jX3N0cigpKSA9PSAwICYmCisgIHJldHVybiBhYnNsOjpF
cXVhbHNJZ25vcmVDYXNlKG5hbWUsIG8ubmFtZSkgJiYKICAgICAgICAgIGNsb2NrcmF0ZV9oeiA9
PSBvLmNsb2NrcmF0ZV9oeiAmJiBudW1fY2hhbm5lbHMgPT0gby5udW1fY2hhbm5lbHM7CiB9CiAK
QEAgLTQxLDE5ICs0MSwxMSBAQCBTZHBBdWRpb0Zvcm1hdCYgU2RwQXVkaW9Gb3JtYXQ6Om9wZXJh
dG9yPShjb25zdCBTZHBBdWRpb0Zvcm1hdCYpID0gZGVmYXVsdDsKIFNkcEF1ZGlvRm9ybWF0JiBT
ZHBBdWRpb0Zvcm1hdDo6b3BlcmF0b3I9KFNkcEF1ZGlvRm9ybWF0JiYpID0gZGVmYXVsdDsKIAog
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBhLCBjb25zdCBTZHBBdWRpb0Zv
cm1hdCYgYikgewotICByZXR1cm4gU1RSX0NBU0VfQ01QKGEubmFtZS5jX3N0cigpLCBiLm5hbWUu
Y19zdHIoKSkgPT0gMCAmJgorICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShhLm5hbWUs
IGIubmFtZSkgJiYKICAgICAgICAgIGEuY2xvY2tyYXRlX2h6ID09IGIuY2xvY2tyYXRlX2h6ICYm
IGEubnVtX2NoYW5uZWxzID09IGIubnVtX2NoYW5uZWxzICYmCiAgICAgICAgICBhLnBhcmFtZXRl
cnMgPT0gYi5wYXJhbWV0ZXJzOwogfQogCi12b2lkIHN3YXAoU2RwQXVkaW9Gb3JtYXQmIGEsIFNk
cEF1ZGlvRm9ybWF0JiBiKSB7Ci0gIHVzaW5nIHN0ZDo6c3dhcDsKLSAgc3dhcChhLm5hbWUsIGIu
bmFtZSk7Ci0gIHN3YXAoYS5jbG9ja3JhdGVfaHosIGIuY2xvY2tyYXRlX2h6KTsKLSAgc3dhcChh
Lm51bV9jaGFubmVscywgYi5udW1fY2hhbm5lbHMpOwotICBzd2FwKGEucGFyYW1ldGVycywgYi5w
YXJhbWV0ZXJzKTsKLX0KLQogQXVkaW9Db2RlY0luZm86OkF1ZGlvQ29kZWNJbmZvKGludCBzYW1w
bGVfcmF0ZV9oeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2No
YW5uZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiaXRyYXRlX2JwcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oCmluZGV4IGFh
NWRiYjEzYjY1ZDcyZWQwZjRkNmQ2ZWU2ODZkNDcyMDJmZDQ3OWMuLmI4YjA0MjE3OGJhMWE1ZTI0
Mjc1ZTU1OTU3ZDc2YTUyZDhhNDgwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9hdWRpb19mb3JtYXQuaApAQCAtMTEsMTkgKzExLDE4IEBACiAjaWZuZGVmIEFQSV9BVURJ
T19DT0RFQ1NfQVVESU9fRk9STUFUX0hfCiAjZGVmaW5lIEFQSV9BVURJT19DT0RFQ1NfQVVESU9f
Rk9STUFUX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVk
ZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
c3RyaW5nX3ZpZXcuaCIKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBv
cnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIFNEUCBzcGVjaWZpY2F0aW9uIGZvciBh
IHNpbmdsZSBhdWRpbyBjb2RlYy4KLS8vIE5PVEU6IFRoaXMgY2xhc3MgaXMgc3RpbGwgdW5kZXIg
ZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi1zdHJ1Y3QgU2RwQXVk
aW9Gb3JtYXQgeworc3RydWN0IFJUQ19FWFBPUlQgU2RwQXVkaW9Gb3JtYXQgewogICB1c2luZyBQ
YXJhbWV0ZXJzID0gc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPjsKIAogICBTZHBB
dWRpb0Zvcm1hdChjb25zdCBTZHBBdWRpb0Zvcm1hdCYpOwpAQCAtNTQsOCArNTMsNiBAQCBzdHJ1
Y3QgU2RwQXVkaW9Gb3JtYXQgewogICBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiB9OwogCi12b2lk
IHN3YXAoU2RwQXVkaW9Gb3JtYXQmIGEsIFNkcEF1ZGlvRm9ybWF0JiBiKTsKLQogLy8gSW5mb3Jt
YXRpb24gYWJvdXQgaG93IGFuIGF1ZGlvIGZvcm1hdCBpcyB0cmVhdGVkIGJ5IHRoZSBjb2RlYyBp
bXBsZW1lbnRhdGlvbi4KIC8vIENvbnRhaW5zIGJhc2ljIGluZm9ybWF0aW9uLCBzdWNoIGFzIHNh
bXBsZSByYXRlIGFuZCBudW1iZXIgb2YgY2hhbm5lbHMsIHdoaWNoCiAvLyBpc24ndCB1bmlmb3Jt
bHkgcHJlc2VudGVkIGJ5IFNEUC4gQWxzbyBjb250YWlucyBmbGFncyBpbmRpY2F0aW5nIHN1cHBv
cnQgZm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgKaW5kZXggMzEyNzQwM2UyNDNmYjkwMTg2
MzEwNWE3NmQ5NGRjNjZiOTM3ZGQ2OC4uM2FjY2Q0YTMwMjBkMjQyOTkxODE0OWE0YjZiOWJmM2U2
ODVlYzFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19j
b2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaApAQCAtMTcsNyArMTcsNiBAQAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIENyZWF0ZXMgYSBuZXcgZmFjdG9yeSB0aGF0IGNhbiBj
cmVhdGUgdGhlIGJ1aWx0LWluIHR5cGVzIG9mIGF1ZGlvIGRlY29kZXJzLgotLy8gTk9URTogVGhp
cyBmdW5jdGlvbiBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRo
b3V0IG5vdGljZS4KIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBDcmVh
dGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpOwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2J1aWx0
aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgKaW5kZXggZDM3ZmYyNTdlNmUzMmUzOWNjNzc3ODQ1
ZmU4ZDM5NzJlYjNlMTNjYy4uM2M2N2RkMzBlNjZiMjM1MWVkNDBhY2VhYzE1NGIxYjQyOGZiZDQ1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaApAQCAtMTcsNyArMTcsNiBAQAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKIC8vIENyZWF0ZXMgYSBuZXcgZmFjdG9yeSB0aGF0IGNhbiBjcmVhdGUg
dGhlIGJ1aWx0LWluIHR5cGVzIG9mIGF1ZGlvIGVuY29kZXJzLgotLy8gTk9URTogVGhpcyBmdW5j
dGlvbiBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5v
dGljZS4KIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBDcmVhdGVCdWls
dGluQXVkaW9FbmNvZGVyRmFjdG9yeSgpOwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL2c3MTEvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvQlVJTEQuZ24KaW5kZXggMTY5MTcyYTY2
ODI5YWI3OTNmNTE4MzFhZDRjOWJhODg4NTA3NjY2Yi4uM2I4ZjIzYzFiYzZlNzQzMDc1NWFjNWY3
MmVlOTI4ZmZhNDM0MmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL0JVSUxELmduCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcx
MS9CVUlMRC5nbgpAQCAtMjEsMTEgKzIxLDEyIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9f
ZW5jb2Rlcl9nNzExIikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVjc19h
cGkiLAotICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vLi4vbW9kdWxl
cy9hdWRpb19jb2Rpbmc6ZzcxMSIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgiLAorICAgICIuLi8u
Li8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRp
b25hbCIsCiAgIF0KIH0KQEAgLTM5LDEwICs0MCwxMSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1
ZGlvX2RlY29kZXJfZzcxMSIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLjphdWRpb19jb2Rl
Y3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uLy4uL21v
ZHVsZXMvYXVkaW9fY29kaW5nOmc3MTEiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFz
ZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwK
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzEx
L2F1ZGlvX2RlY29kZXJfZzcxMS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX2c3MTEuY2MKaW5k
ZXggY2IxNjU4NGNkZWU1NDAyZWIyMDViNDNiNDdiOTM5NTMxYTc3YTYwOS4uOTE1OTljNDE2YWRm
OTNjNDU5ODk1YzMwMDNjZGZkZjMyNzg5YjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2Rl
Y29kZXJfZzcxMS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9nNzExLmNjCkBAIC0xNCw3
ICsxNCw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVk
ZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3BjbS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKIApAQCAtMjIsOCArMjIsOCBAQCBu
YW1lc3BhY2Ugd2VicnRjIHsKIAogYWJzbDo6b3B0aW9uYWw8QXVkaW9EZWNvZGVyRzcxMTo6Q29u
ZmlnPiBBdWRpb0RlY29kZXJHNzExOjpTZHBUb0NvbmZpZygKICAgICBjb25zdCBTZHBBdWRpb0Zv
cm1hdCYgZm9ybWF0KSB7Ci0gIGNvbnN0IGJvb2wgaXNfcGNtdSA9IFNUUl9DQVNFX0NNUChmb3Jt
YXQubmFtZS5jX3N0cigpLCAiUENNVSIpID09IDA7Ci0gIGNvbnN0IGJvb2wgaXNfcGNtYSA9IFNU
Ul9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0cigpLCAiUENNQSIpID09IDA7CisgIGNvbnN0IGJv
b2wgaXNfcGNtdSA9IGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJQQ01VIik7
CisgIGNvbnN0IGJvb2wgaXNfcGNtYSA9IGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5h
bWUsICJQQ01BIik7CiAgIGlmIChmb3JtYXQuY2xvY2tyYXRlX2h6ID09IDgwMDAgJiYgZm9ybWF0
Lm51bV9jaGFubmVscyA+PSAxICYmCiAgICAgICAoaXNfcGNtdSB8fCBpc19wY21hKSkgewogICAg
IENvbmZpZyBjb25maWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9nNzExLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9nNzExLmgKaW5kZXggODI3NWE4YzdhMTRiZmY0ZGY0ZDE0
YzRjOGIzODU5MzY3Mzc4OWMyZS4uY2NkMWVlMDQ4MDA1MjczM2I3MTZjNDY4M2VmZDc5MjRkMmI1
MTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL2F1ZGlvX2RlY29kZXJfZzcxMS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcx
MS9hdWRpb19kZWNvZGVyX2c3MTEuaApAQCAtMTgsMTQgKzE4LDEzIEBACiAjaW5jbHVkZSAiYXBp
L2F1ZGlvX2NvZGVjcy9hdWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlv
X2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRp
b19mb3JtYXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gRzcxMSBkZWNvZGVyIEFQSSBmb3IgdXNlIGFzIGEgdGVt
cGxhdGUgcGFyYW1ldGVyIHRvCiAvLyBDcmVhdGVBdWRpb0RlY29kZXJGYWN0b3J5PC4uLj4oKS4K
LS8vCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQg
bWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLXN0cnVjdCBBdWRpb0RlY29kZXJHNzExIHsKK3N0
cnVjdCBSVENfRVhQT1JUIEF1ZGlvRGVjb2Rlckc3MTEgewogICBzdHJ1Y3QgQ29uZmlnIHsKICAg
ICBlbnVtIGNsYXNzIFR5cGUgeyBrUGNtVSwga1BjbUEgfTsKICAgICBib29sIElzT2soKSBjb25z
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9nNzExLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzExL2F1
ZGlvX2VuY29kZXJfZzcxMS5jYwppbmRleCAxZDVlNTQxMjc2YjlhZWRkODZjNjhkMDFmNWM3Yzcw
N2NjMjhmZTNjLi4wY2M4ZGM0ZGRkMjllZjViNTVlZTA3MTkyN2E2OTQzZTYwMzM0ZDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9nNzExLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19l
bmNvZGVyX2c3MTEuY2MKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNp
bmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIg
IC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2VuY29k
ZXJfcGNtLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCkBAIC0yNCw4ICsy
NCw4IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBhYnNsOjpvcHRpb25hbDxBdWRpb0VuY29kZXJH
NzExOjpDb25maWc+IEF1ZGlvRW5jb2Rlckc3MTE6OlNkcFRvQ29uZmlnKAogICAgIGNvbnN0IFNk
cEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgY29uc3QgYm9vbCBpc19wY211ID0gU1RSX0NBU0Vf
Q01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJQQ01VIikgPT0gMDsKLSAgY29uc3QgYm9vbCBpc19w
Y21hID0gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJQQ01BIikgPT0gMDsKKyAg
Y29uc3QgYm9vbCBpc19wY211ID0gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwg
IlBDTVUiKTsKKyAgY29uc3QgYm9vbCBpc19wY21hID0gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShm
b3JtYXQubmFtZSwgIlBDTUEiKTsKICAgaWYgKGZvcm1hdC5jbG9ja3JhdGVfaHogPT0gODAwMCAm
JiBmb3JtYXQubnVtX2NoYW5uZWxzID49IDEgJiYKICAgICAgIChpc19wY211IHx8IGlzX3BjbWEp
KSB7CiAgICAgQ29uZmlnIGNvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcxMS9hdWRpb19lbmNvZGVy
X2c3MTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvZzcxMS9hdWRpb19lbmNvZGVyX2c3MTEuaAppbmRleCA2YjZlYjVmY2UwY2U1
NGZjYmQ2MGM2NGZlYTY3ZDliY2RhMWIxNjg2Li4yM2FlMThiNWUzZjAzMmI4MzljZjdlOTA5ZTA4
NDQ1ZjNiNjhlMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9nNzExLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfZzcxMS5oCkBAIC0xOCwxNCArMTgsMTMgQEAKICNpbmNs
dWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRlICJh
cGkvYXVkaW9fY29kZWNzL2F1ZGlvX2VuY29kZXIuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29k
ZWNzL2F1ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBHNzExIGVuY29kZXIgQVBJIGZvciB1c2Ug
YXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlvRW5jb2RlckZhY3Rvcnk8
Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3Bt
ZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRW5jb2Rlckc3
MTEgeworc3RydWN0IFJUQ19FWFBPUlQgQXVkaW9FbmNvZGVyRzcxMSB7CiAgIHN0cnVjdCBDb25m
aWcgewogICAgIGVudW0gY2xhc3MgVHlwZSB7IGtQY21VLCBrUGNtQSB9OwogICAgIGJvb2wgSXNP
aygpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9CVUlMRC5n
bgppbmRleCA1MGIxMzk2ZDI5MTVlYmZmMmM2ZDExY2UzNWRjYzc4OTFjM2IxYzMwLi5lNDMyMWQy
OTkzMTdhZjhmMDFhZDNlNTYyYTA0MzA5NmVlMWVmMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvQlVJ
TEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9nNzIyL0JVSUxELmduCkBAIC0yOSwxMSArMjksMTIgQEAgcnRjX3N0YXRp
Y19saWJyYXJ5KCJhdWRpb19lbmNvZGVyX2c3MjIiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjphdWRp
b19lbmNvZGVyX2c3MjJfY29uZmlnIiwKICAgICAiLi46YXVkaW9fY29kZWNzX2FwaSIsCi0gICAg
Ii4uLy4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi8uLi9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZzpnNzIyIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAog
ICAgICIuLi8uLi8uLi9ydGNfYmFzZTpzYWZlX21pbm1heCIsCisgICAgIi4uLy4uLy4uL3J0Y19i
YXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIs
CiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAg
XQogfQpAQCAtNDcsMTAgKzQ4LDExIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZGVjb2Rl
cl9nNzIyIikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAot
ICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRp
b19jb2Rpbmc6ZzcyMiIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVk
IiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVj
b2Rlcl9nNzIyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5jYwppbmRleCBmMWUyYWZi
YWI1MGQwZmY3ZDAzODY0NWU4NGNmN2YyNTZiMTk4ZTFhLi4yY2MxNmMzN2Q5NGQ2NTBiNGVlYWJi
MjZjZGM0ZDI5YjgwNDU1ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIy
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIuY2MKQEAgLTE0LDcgKzE0LDcgQEAK
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNp
bmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1
ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKIApAQCAtMjIsNyArMjIsNyBAQCBuYW1lc3BhY2Ug
d2VicnRjIHsKIAogYWJzbDo6b3B0aW9uYWw8QXVkaW9EZWNvZGVyRzcyMjo6Q29uZmlnPiBBdWRp
b0RlY29kZXJHNzIyOjpTZHBUb0NvbmZpZygKICAgICBjb25zdCBTZHBBdWRpb0Zvcm1hdCYgZm9y
bWF0KSB7Ci0gIHJldHVybiBTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgIkc3MjIi
KSA9PSAwICYmCisgIHJldHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAi
RzcyMiIpICYmCiAgICAgICAgICAgICAgICAgIGZvcm1hdC5jbG9ja3JhdGVfaHogPT0gODAwMCAm
JgogICAgICAgICAgICAgICAgICAoZm9ybWF0Lm51bV9jaGFubmVscyA9PSAxIHx8IGZvcm1hdC5u
dW1fY2hhbm5lbHMgPT0gMikKICAgICAgICAgICAgICA/IGFic2w6Om9wdGlvbmFsPENvbmZpZz4o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9f
ZGVjb2Rlcl9nNzIyLmgKaW5kZXggYjdiYjA4OTNmMzMwM2UzYTRmOThhNTdlNjg3YmVlNjIwNTA0
ZWM5ZS4uMmE2NzQ5MjZkYmNjZjFjNzZjMDkwNTk1ZGVlYjEzOTBjM2ExM2Y4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVy
X2c3MjIuaApAQCAtMTgsMTQgKzE4LDEzIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19k
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIAogLy8gRzcyMiBkZWNvZGVyIEFQSSBmb3IgdXNlIGFzIGEgdGVtcGxhdGUgcGFyYW1ldGVy
IHRvCiAvLyBDcmVhdGVBdWRpb0RlY29kZXJGYWN0b3J5PC4uLj4oKS4KLS8vCi0vLyBOT1RFOiBU
aGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRo
b3V0IG5vdGljZS4KLXN0cnVjdCBBdWRpb0RlY29kZXJHNzIyIHsKK3N0cnVjdCBSVENfRVhQT1JU
IEF1ZGlvRGVjb2Rlckc3MjIgewogICBzdHJ1Y3QgQ29uZmlnIHsKICAgICBib29sIElzT2soKSBj
b25zdCB7IHJldHVybiBudW1fY2hhbm5lbHMgPT0gMSB8fCBudW1fY2hhbm5lbHMgPT0gMjsgfQog
ICAgIGludCBudW1fY2hhbm5lbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9n
NzIyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5jYwppbmRleCAwY2Y3MTYzOWJmMzJm
OTM3ZDJmZDQ1MjQ3MGE0MWJlODdmODlhYjRmLi42Mzc0YWU4MDJmYWE4Nzc0OGNjYmE0NmUxNzI3
NTJiYjc2NjhjMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19j
b2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuY2MKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRl
ICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNz
L3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21p
bm1heC5oIgpAQCAtMjQsNyArMjQsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogYWJzbDo6b3B0
aW9uYWw8QXVkaW9FbmNvZGVyRzcyMkNvbmZpZz4gQXVkaW9FbmNvZGVyRzcyMjo6U2RwVG9Db25m
aWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBpZiAoU1RSX0NBU0Vf
Q01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJnNzIyIikgIT0gMCB8fAorICBpZiAoIWFic2w6OkVx
dWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJnNzIyIikgfHwKICAgICAgIGZvcm1hdC5jbG9j
a3JhdGVfaHogIT0gODAwMCkgewogICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwogICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVk
aW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rl
cl9nNzIyLmgKaW5kZXggYjk3ZmUxYjE0Nzg5MGQwODU0Mjc2ZDEzMTEyMDhlOTliMTBjY2Y5YS4u
MzI3YzBhZjA0YWE3Y2UwNDU1ODQxZjk4MWM2NjJhYmY4NjJiNmRiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9n
NzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIu
aApAQCAtMTksMTQgKzE5LDEzIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19l
bmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKICNp
bmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCiAvLyBHNzIyIGVuY29kZXIgQVBJIGZvciB1c2UgYXMgYSB0ZW1wbGF0ZSBwYXJh
bWV0ZXIgdG8KIC8vIENyZWF0ZUF1ZGlvRW5jb2RlckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5P
VEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdl
IHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRW5jb2Rlckc3MjIgeworc3RydWN0IFJUQ19F
WFBPUlQgQXVkaW9FbmNvZGVyRzcyMiB7CiAgIHVzaW5nIENvbmZpZyA9IEF1ZGlvRW5jb2Rlckc3
MjJDb25maWc7CiAgIHN0YXRpYyBhYnNsOjpvcHRpb25hbDxBdWRpb0VuY29kZXJHNzIyQ29uZmln
PiBTZHBUb0NvbmZpZygKICAgICAgIGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBhdWRpb19mb3JtYXQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMl9jb25maWcuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvZzcy
Mi9hdWRpb19lbmNvZGVyX2c3MjJfY29uZmlnLmgKaW5kZXggNzczZTQzMGNlM2MwYzhjMDZhZDJl
NWM1NWEwNDUzOTE0MDM4Mjc0ZC4uMjg3ODk4NTg5ZmNhYWEwMmZiYmQ4OTVhMWNmYmZjOTdkMzg5
MWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMl9jb25maWcuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2c3MjIvYXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZy5oCkBAIC0xMyw3ICsxMyw2IEBACiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRl
ciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIHN0cnVjdCBBdWRp
b0VuY29kZXJHNzIyQ29uZmlnIHsKICAgYm9vbCBJc09rKCkgY29uc3QgewogICAgIHJldHVybiBm
cmFtZV9zaXplX21zID4gMCAmJiBmcmFtZV9zaXplX21zICUgMTAgPT0gMCAmJiBudW1fY2hhbm5l
bHMgPj0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9CVUlMRC5nbgpp
bmRleCBkNGY1MDRmZDRmOTEzN2NiY2ZmYzQyODE4ZThjMDRhYTljMjFkZmM3Li5kNzY2ZmE0YTk3
YTEzOGM2MmFhNDQyMDZlZTE0OTQ0ZDMwZGE0ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvQlVJTEQu
Z24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9pbGJjL0JVSUxELmduCkBAIC0yOSwxMSArMjksMTEgQEAgcnRjX3N0YXRpY19s
aWJyYXJ5KCJhdWRpb19lbmNvZGVyX2lsYmMiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjphdWRpb19l
bmNvZGVyX2lsYmNfY29uZmlnIiwKICAgICAiLi46YXVkaW9fY29kZWNzX2FwaSIsCi0gICAgIi4u
Ly4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGlu
ZzppbGJjIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAg
ICIuLi8uLi8uLi9ydGNfYmFzZTpzYWZlX21pbm1heCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRp
b25hbCIsCiAgIF0KIH0KQEAgLTQ3LDEwICs0NywxMCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1
ZGlvX2RlY29kZXJfaWxiYyIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLjphdWRpb19jb2Rl
Y3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uLy4uL21v
ZHVsZXMvYXVkaW9fY29kaW5nOmlsYmMiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFz
ZV9hcHByb3ZlZCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rl
cl9pbGJjLmNjCmluZGV4IDFmNGM0NzVjNDA2NDI4Yjc3MTYzNGNkZWZjMzU0MWU2OTM3ZGZjNzIu
LjRhMDBmOGRiZjAwNTRjNmEzYTZhMTY5YTFlYTFmYWE2ZWFkMTllYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
aWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxi
Yy5jYwpAQCAtMTQsMTQgKzE0LDE0IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJ
TlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGFic2w6Om9wdGlvbmFsPEF1ZGlvRGVjb2Rlckls
YmM6OkNvbmZpZz4gQXVkaW9EZWNvZGVySWxiYzo6U2RwVG9Db25maWcoCiAgICAgY29uc3QgU2Rw
QXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICByZXR1cm4gU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1l
LmNfc3RyKCksICJJTEJDIikgPT0gMCAmJgorICByZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2Fz
ZShmb3JtYXQubmFtZSwgIklMQkMiKSAmJgogICAgICAgICAgICAgICAgICBmb3JtYXQuY2xvY2ty
YXRlX2h6ID09IDgwMDAgJiYgZm9ybWF0Lm51bV9jaGFubmVscyA9PSAxCiAgICAgICAgICAgICAg
PyBhYnNsOjpvcHRpb25hbDxDb25maWc+KENvbmZpZygpKQogICAgICAgICAgICAgIDogYWJzbDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxi
Yy9hdWRpb19kZWNvZGVyX2lsYmMuaAppbmRleCAyMGY2ZmZkMjg3ZjljOGYwOTc2Yjg1MDg3MmUx
NjRmNmE3ZWQ4MjU1Li45YWI4NDc5NzdkODExMjcxNjk5MDNjMDY1YmFiM2Q5ZjViMzRhZTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9pbGJjLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlv
X2RlY29kZXJfaWxiYy5oCkBAIC0yMyw4ICsyMyw2IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiAv
LyBJTEJDIGRlY29kZXIgQVBJIGZvciB1c2UgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KIC8v
IENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5PVEU6IFRoaXMgc3Ry
dWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90
aWNlLgogc3RydWN0IEF1ZGlvRGVjb2RlcklsYmMgewogICBzdHJ1Y3QgQ29uZmlnIHt9OyAgLy8g
RW1wdHktLS1ubyBjb25maWcgdmFsdWVzIG5lZWRlZCEKICAgc3RhdGljIGFic2w6Om9wdGlvbmFs
PENvbmZpZz4gU2RwVG9Db25maWcoY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGF1ZGlvX2Zvcm1hdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlv
X2VuY29kZXJfaWxiYy5jYwppbmRleCAyYWU3NTQ3NGNjZDhkZWE5ZDUwM2RlN2Y4MGFmNTQxZDBk
ODA1MGUxLi40ZDAyOGM5YWFmNGMwODg0YzM4YjEwMzRlYTA3MzAwZmU3MjEyNWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNv
ZGVyX2lsYmMuY2MKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNs
dWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8v
IE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJf
aWxiYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgpAQCAtNDAsNyArNDAs
NyBAQCBpbnQgR2V0SWxiY0JpdHJhdGUoaW50IHB0aW1lKSB7CiAKIGFic2w6Om9wdGlvbmFsPEF1
ZGlvRW5jb2RlcklsYmNDb25maWc+IEF1ZGlvRW5jb2RlcklsYmM6OlNkcFRvQ29uZmlnKAogICAg
IGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgaWYgKFNUUl9DQVNFX0NNUChmb3Jt
YXQubmFtZS5jX3N0cigpLCAiSUxCQyIpICE9IDAgfHwKKyAgaWYgKCFhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKGZvcm1hdC5uYW1lLmNfc3RyKCksICJJTEJDIikgfHwKICAgICAgIGZvcm1hdC5jbG9j
a3JhdGVfaHogIT0gODAwMCB8fCBmb3JtYXQubnVtX2NoYW5uZWxzICE9IDEpIHsKICAgICByZXR1
cm4gYWJzbDo6bnVsbG9wdDsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJf
aWxiYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1
ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5oCmluZGV4IDBhODZiMTYyZTgxYzYy
OGNjZmJmZGQ5MDdhMDFkZDhhODk1ZTUzM2IuLmU0YWVjYTcwZGU4NDBlMTc0NjIxMzk4NTQxZTk1
NjFiMzQyODUwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmgKQEAgLTI0LDggKzI0LDYgQEAgbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKIC8vIElMQkMgZW5jb2RlciBBUEkgZm9yIHVzZSBhcyBhIHRlbXBsYXRlIHBh
cmFtZXRlciB0bwogLy8gQ3JlYXRlQXVkaW9FbmNvZGVyRmFjdG9yeTwuLi4+KCkuCi0vLwotLy8g
Tk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFu
Z2Ugd2l0aG91dCBub3RpY2UuCiBzdHJ1Y3QgQXVkaW9FbmNvZGVySWxiYyB7CiAgIHVzaW5nIENv
bmZpZyA9IEF1ZGlvRW5jb2RlcklsYmNDb25maWc7CiAgIHN0YXRpYyBhYnNsOjpvcHRpb25hbDxB
dWRpb0VuY29kZXJJbGJjQ29uZmlnPiBTZHBUb0NvbmZpZygKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9h
dWRpb19lbmNvZGVyX2lsYmNfY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjX2Nv
bmZpZy5oCmluZGV4IDIyOTA5YTk1N2JiMjU3YjY4Mzk4M2MxMjljNzU3MTg3YzBlODY2NjQuLjRk
ODJmOTkwMWNkZmUxOTNhNGRhNTQzZDU4MzBlYmFkMjBmOTk0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxi
Yy9hdWRpb19lbmNvZGVyX2lsYmNfY29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJf
aWxiY19jb25maWcuaApAQCAtMTMsNyArMTMsNiBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAot
Ly8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBj
aGFuZ2Ugd2l0aG91dCBub3RpY2UuCiBzdHJ1Y3QgQXVkaW9FbmNvZGVySWxiY0NvbmZpZyB7CiAg
IGJvb2wgSXNPaygpIGNvbnN0IHsKICAgICByZXR1cm4gKGZyYW1lX3NpemVfbXMgPT0gMjAgfHwg
ZnJhbWVfc2l6ZV9tcyA9PSAzMCB8fCBmcmFtZV9zaXplX21zID09IDQwIHx8CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2lzYWMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvQlVJTEQuZ24KaW5kZXggZWQ5ZDk2MjI1NzdjZjZh
YTFjZGM0NmY2OGQwZDgwODE0N2EwMWQ1Yy4uYzdkNmU0MzI3MTUyOTExM2NmMWZkNTZmZDhkY2Q4
MGZjZGFmMGExMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9CVUlM
RC5nbgpAQCAtNzcsMTAgKzc3LDEwIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZW5jb2Rl
cl9pc2FjX2ZpeCIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLjphdWRpb19jb2RlY3NfYXBp
IiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uLy4uL21vZHVsZXMv
YXVkaW9fY29kaW5nOmlzYWNfZml4IiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAor
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CkBAIC05NCwx
MCArOTQsMTAgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19kZWNvZGVyX2lzYWNfZml4Iikg
ewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8u
Li8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6
aXNhY19maXgiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTExMSwxMCArMTExLDExIEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZW5jb2Rlcl9pc2FjX2Zsb2F0IikgewogICBdCiAg
IGRlcHMgPSBbCiAgICAgIi4uOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi8uLjp3ZWJy
dGNfY29tbW9uIiwKICAgICAiLi4vLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aXNhYyIsCiAg
ICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vLi4v
cnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwi
LAogICBdCiB9CkBAIC0xMjgsMTAgKzEyOSwxMSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlv
X2RlY29kZXJfaXNhY19mbG9hdCIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLjphdWRpb19j
b2RlY3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uLy4u
L21vZHVsZXMvYXVkaW9fY29kaW5nOmlzYWMiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0
IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9p
c2FjL2F1ZGlvX2RlY29kZXJfaXNhY19maXguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2Fj
X2ZpeC5jYwppbmRleCA0NDY2NDBmZjcwYzA2YjQ4MDg1MjhiYmU3MjBmM2ViYmM5NjdhM2U3Li41
MWFlNTcyZmE5ODJlNWU0OWJhOTcyZTk3M2UxNzA5ZTU4ZDEwODdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lz
YWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9p
c2FjX2ZpeC5jYwpAQCAtMTEsMTQgKzExLDE0IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVj
cy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19maXguaCIKIAogI2luY2x1ZGUgImFic2wvbWVtb3J5
L21lbW9yeS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2lu
Y2x1ZGUpCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L2luY2x1ZGUvYXVkaW9fZGVjb2Rlcl9pc2Fj
Zml4LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBhYnNsOjpvcHRpb25hbDxBdWRpb0RlY29k
ZXJJc2FjRml4OjpDb25maWc+IEF1ZGlvRGVjb2RlcklzYWNGaXg6OlNkcFRvQ29uZmlnKAogICAg
IGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgcmV0dXJuIFNUUl9DQVNFX0NNUChm
b3JtYXQubmFtZS5jX3N0cigpLCAiSVNBQyIpID09IDAgJiYKKyAgcmV0dXJuIGFic2w6OkVxdWFs
c0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJJU0FDIikgJiYKICAgICAgICAgICAgICAgICAgZm9y
bWF0LmNsb2NrcmF0ZV9oeiA9PSAxNjAwMCAmJiBmb3JtYXQubnVtX2NoYW5uZWxzID09IDEKICAg
ICAgICAgICAgICA/IGFic2w6Om9wdGlvbmFsPENvbmZpZz4oQ29uZmlnKCkpCiAgICAgICAgICAg
ICAgOiBhYnNsOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNh
Y19maXguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZml4LmgKaW5kZXggYTRjZTY4NTgz
ODU4NTJkMWMzYjZhZGVlY2E1NDEzYjZjNGY2YmVjNi4uYjdhNWNlZjZkYzVjZDczNjI5OTQ5ZTEy
ZjA4NjY4ZTk5MmI2MGIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19m
aXguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2ZpeC5oCkBAIC0yMyw4ICsyMyw2
IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBpU0FDIGRlY29kZXIgQVBJIChmaXhlZC1wb2lu
dCBpbXBsZW1lbnRhdGlvbikgZm9yIHVzZSBhcyBhIHRlbXBsYXRlCiAvLyBwYXJhbWV0ZXIgdG8g
Q3JlYXRlQXVkaW9EZWNvZGVyRmFjdG9yeTwuLi4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1
Y3QgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3Rp
Y2UuCiBzdHJ1Y3QgQXVkaW9EZWNvZGVySXNhY0ZpeCB7CiAgIHN0cnVjdCBDb25maWcge307ICAv
LyBFbXB0eS0tLW5vIGNvbmZpZyB2YWx1ZXMgbmVlZGVkIQogICBzdGF0aWMgYWJzbDo6b3B0aW9u
YWw8Q29uZmlnPiBTZHBUb0NvbmZpZyhjb25zdCBTZHBBdWRpb0Zvcm1hdCYgYXVkaW9fZm9ybWF0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZmxvYXQuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lz
YWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Zsb2F0LmNjCmluZGV4IDFjMTkyNmYxYTFlYmZiYzBhZThj
MzY0N2FiNGYyY2FkMTk4Y2RmYTEuLmQ5ZGUzYTA4YjMwMTIxODQ5Zjk5YzY0NGMzMjBlNzA0OWEy
NWUwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZmxvYXQuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19mbG9hdC5jYwpAQCAtMTEsMTQgKzExLDE0IEBA
CiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19mbG9h
dC5oIgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9u
X3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmlu
Z3MvbWF0Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9t
YWluL2luY2x1ZGUvYXVkaW9fZGVjb2Rlcl9pc2FjLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CiBhYnNsOjpvcHRpb25hbDxBdWRpb0RlY29kZXJJc2FjRmxvYXQ6OkNvbmZpZz4KIEF1ZGlvRGVj
b2RlcklzYWNGbG9hdDo6U2RwVG9Db25maWcoY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkg
ewotICBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJJU0FDIikgPT0gMCAm
JgorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIklTQUMiKSAmJgog
ICAgICAgKGZvcm1hdC5jbG9ja3JhdGVfaHogPT0gMTYwMDAgfHwgZm9ybWF0LmNsb2NrcmF0ZV9o
eiA9PSAzMjAwMCkgJiYKICAgICAgIGZvcm1hdC5udW1fY2hhbm5lbHMgPT0gMSkgewogICAgIENv
bmZpZyBjb25maWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Zsb2F0
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9f
Y29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Zsb2F0LmgKaW5kZXggY2MxMzk2MzQxOTZk
ZGY1ZWUzZDJhNDNmNjcyNjgzNGQ2NjM4OGVjOC4uZTc4ZjhiODFlZTAxZmQ2MzRhMDc3MTFhMzZm
YjQ1YTY0YTZkM2RhOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2RlY29kZXJfaXNhY19mbG9h
dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19jb2RlY3MvaXNhYy9hdWRpb19kZWNvZGVyX2lzYWNfZmxvYXQuaApAQCAtMTgsMTQgKzE4
LDEzIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19jb2RlY19wYWlyX2lkLmgi
CiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAi
YXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0
ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gaVNBQyBkZWNvZGVy
IEFQSSAoZmxvYXRpbmctcG9pbnQgaW1wbGVtZW50YXRpb24pIGZvciB1c2UgYXMgYSB0ZW1wbGF0
ZQogLy8gcGFyYW1ldGVyIHRvIENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rvcnk8Li4uPigpLgotLy8K
LS8vIE5PVEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkg
Y2hhbmdlIHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRGVjb2RlcklzYWNGbG9hdCB7Citz
dHJ1Y3QgUlRDX0VYUE9SVCBBdWRpb0RlY29kZXJJc2FjRmxvYXQgewogICBzdHJ1Y3QgQ29uZmln
IHsKICAgICBib29sIElzT2soKSBjb25zdCB7CiAgICAgICByZXR1cm4gc2FtcGxlX3JhdGVfaHog
PT0gMTYwMDAgfHwgc2FtcGxlX3JhdGVfaHogPT0gMzIwMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMv
YXVkaW9fZW5jb2Rlcl9pc2FjX2ZpeC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZml4
LmNjCmluZGV4IGNkODk3NTM5OGI0MTc4YzllOTg1NDk1Y2JjNGFkN2MwNTVkNWM2NmMuLmExMGQx
ZWU2MWFlOGY4OTZjZDJjNGNhZDRiMzY4YWVjNGQwYTg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9h
dWRpb19lbmNvZGVyX2lzYWNfZml4LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNf
Zml4LmNjCkBAIC0xMSw3ICsxMSw3IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9pc2Fj
L2F1ZGlvX2VuY29kZXJfaXNhY19maXguaCIKIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9y
eS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
CisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2lzYWMvZml4L2luY2x1ZGUvYXVkaW9fZW5jb2Rlcl9pc2FjZml4Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nX3RvX251bWJlci5oIgogCkBAIC0xOSw3ICsxOSw3
IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBhYnNsOjpvcHRpb25hbDxBdWRpb0VuY29kZXJJc2Fj
Rml4OjpDb25maWc+IEF1ZGlvRW5jb2RlcklzYWNGaXg6OlNkcFRvQ29uZmlnKAogICAgIGNvbnN0
IFNkcEF1ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgaWYgKFNUUl9DQVNFX0NNUChmb3JtYXQubmFt
ZS5jX3N0cigpLCAiSVNBQyIpID09IDAgJiYKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uo
Zm9ybWF0Lm5hbWUsICJJU0FDIikgJiYKICAgICAgIGZvcm1hdC5jbG9ja3JhdGVfaHogPT0gMTYw
MDAgJiYgZm9ybWF0Lm51bV9jaGFubmVscyA9PSAxKSB7CiAgICAgQ29uZmlnIGNvbmZpZzsKICAg
ICBjb25zdCBhdXRvIHB0aW1lX2l0ZXIgPSBmb3JtYXQucGFyYW1ldGVycy5maW5kKCJwdGltZSIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19maXguaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9h
dWRpb19lbmNvZGVyX2lzYWNfZml4LmgKaW5kZXggNzMxZTQ4ZDBjMjc2NjhhYTc3YzNiMDhhNTZi
MTYxMGVkYjZiYzVhNi4uYzNjMzY3MmI1ODNkMTk1OWNkMGMwMWMyZjQ4ZjIxNjgxZDllMWUzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19maXguaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMv
YXVkaW9fZW5jb2Rlcl9pc2FjX2ZpeC5oCkBAIC0yMyw4ICsyMyw2IEBAIG5hbWVzcGFjZSB3ZWJy
dGMgewogCiAvLyBpU0FDIGVuY29kZXIgQVBJIChmaXhlZC1wb2ludCBpbXBsZW1lbnRhdGlvbikg
Zm9yIHVzZSBhcyBhIHRlbXBsYXRlCiAvLyBwYXJhbWV0ZXIgdG8gQ3JlYXRlQXVkaW9FbmNvZGVy
RmFjdG9yeTwuLi4+KCkuCi0vLwotLy8gTk9URTogVGhpcyBzdHJ1Y3QgaXMgc3RpbGwgdW5kZXIg
ZGV2ZWxvcG1lbnQgYW5kIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCiBzdHJ1Y3QgQXVkaW9F
bmNvZGVySXNhY0ZpeCB7CiAgIHN0cnVjdCBDb25maWcgewogICAgIGJvb2wgSXNPaygpIGNvbnN0
IHsgcmV0dXJuIGZyYW1lX3NpemVfbXMgPT0gMzAgfHwgZnJhbWVfc2l6ZV9tcyA9PSA2MDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19mbG9hdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9h
dWRpb19lbmNvZGVyX2lzYWNfZmxvYXQuY2MKaW5kZXggODNkMWZhZmYyZmMyNGZmMjBiZmY0MmM1
MWRkMjI2MzY0YmEzMDEwMy4uMzc5ODJiMWYxNTg3MmY3MzQ5MDU3OGFhNGEzNWJmMTE0Njg0NzA2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19mbG9hdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2FjX2Zsb2F0LmNjCkBAIC0xMSw3ICsxMSw3IEBACiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19mbG9hdC5oIgog
CiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVz
LmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0
Y2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9tYWluL2lu
Y2x1ZGUvYXVkaW9fZW5jb2Rlcl9pc2FjLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nX3Rv
X251bWJlci5oIgogCkBAIC0xOSw3ICsxOSw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBhYnNs
OjpvcHRpb25hbDxBdWRpb0VuY29kZXJJc2FjRmxvYXQ6OkNvbmZpZz4KIEF1ZGlvRW5jb2Rlcklz
YWNGbG9hdDo6U2RwVG9Db25maWcoY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBp
ZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJJU0FDIikgPT0gMCAmJgorICBp
ZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIklTQUMiKSAmJgogICAgICAg
KGZvcm1hdC5jbG9ja3JhdGVfaHogPT0gMTYwMDAgfHwgZm9ybWF0LmNsb2NrcmF0ZV9oeiA9PSAz
MjAwMCkgJiYKICAgICAgIGZvcm1hdC5udW1fY2hhbm5lbHMgPT0gMSkgewogICAgIENvbmZpZyBj
b25maWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2FjX2Zsb2F0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNz
L2lzYWMvYXVkaW9fZW5jb2Rlcl9pc2FjX2Zsb2F0LmgKaW5kZXggNWRmMmRkM2Q2ZjRiMDY1ZDc0
ZDA2NWZkMmUwNmJkMzVmYTg1YjMyMC4uMGNiOWMxN2Q3MTA1ZWQzODY1YzgyZGFiOTA5YTExMDQx
NmVjMjU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pc2FjL2F1ZGlvX2VuY29kZXJfaXNhY19mbG9hdC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19j
b2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZmxvYXQuaApAQCAtMTgsMTQgKzE4LDEzIEBA
CiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1
ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRj
X2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gaVNBQyBlbmNvZGVyIEFQSSAo
ZmxvYXRpbmctcG9pbnQgaW1wbGVtZW50YXRpb24pIGZvciB1c2UgYXMgYSB0ZW1wbGF0ZQogLy8g
cGFyYW1ldGVyIHRvIENyZWF0ZUF1ZGlvRW5jb2RlckZhY3Rvcnk8Li4uPigpLgotLy8KLS8vIE5P
VEU6IFRoaXMgc3RydWN0IGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IGFuZCBtYXkgY2hhbmdl
IHdpdGhvdXQgbm90aWNlLgotc3RydWN0IEF1ZGlvRW5jb2RlcklzYWNGbG9hdCB7CitzdHJ1Y3Qg
UlRDX0VYUE9SVCBBdWRpb0VuY29kZXJJc2FjRmxvYXQgewogICBzdHJ1Y3QgQ29uZmlnIHsKICAg
ICBib29sIElzT2soKSBjb25zdCB7CiAgICAgICBzd2l0Y2ggKHNhbXBsZV9yYXRlX2h6KSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL29wdXMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvQlVJTEQuZ24KaW5kZXggODAwYWJi
ZTI3OWJmZTNhNjVkMTZiYjYzN2JjZGZmMDUzZjA5MmU3YS4uNTU1MmMyMWZhNTEwNzk2NzZkODk3
MDVhMDk5MmIxM2U5NGZmN2Q4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL0JVSUxELmduCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
b3B1cy9CVUlMRC5nbgpAQCAtMjAsNiArMjAsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImF1ZGlv
X2VuY29kZXJfb3B1c19jb25maWciKSB7CiAgIF0KICAgZGVwcyA9IFsKICAgICAiLi4vLi4vLi4v
cnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0
ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
Om9wdGlvbmFsIiwKICAgXQogICBkZWZpbmVzID0gW10KQEAgLTQ0LDYgKzQ1LDggQEAgcnRjX3Nv
dXJjZV9zZXQoImF1ZGlvX2VuY29kZXJfb3B1cyIpIHsKICAgICAiLi46YXVkaW9fY29kZWNzX2Fw
aSIsCiAgICAgIi4uLy4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOndlYnJ0Y19vcHVzIiwKICAg
ICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi8uLi9y
dGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
czpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTU3LDEwICs2MCwxMSBAQCBydGNfc3RhdGljX2xpYnJh
cnkoImF1ZGlvX2RlY29kZXJfb3B1cyIpIHsKICAgXQogICBkZXBzID0gWwogICAgICIuLjphdWRp
b19jb2RlY3NfYXBpIiwKLSAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4u
Ly4uL21vZHVsZXMvYXVkaW9fY29kaW5nOndlYnJ0Y19vcHVzIiwKICAgICAiLi4vLi4vLi4vcnRj
X2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9zeXN0ZW06
cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIs
CisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRp
b19jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rl
cl9vcHVzLmNjCmluZGV4IDQxMzk3ZjA0ZDIwMjQ4OTNlMjY5MjJjZGUwZWRiNjE1NDJiMjFmOWYu
LjJmMTY2OGI4MjViYzAyMDkwOGQ5ODM5ODFhNTEyYmY3ZjM3NjBkZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mv
b3B1cy9hdWRpb19kZWNvZGVyX29wdXMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1
cy5jYwpAQCAtMTUsNyArMTUsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFi
c2wvbWVtb3J5L21lbW9yeS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5U
KGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMzUsNyArMzUsNyBAQCBhYnNsOjpvcHRpb25hbDxB
dWRpb0RlY29kZXJPcHVzOjpDb25maWc+IEF1ZGlvRGVjb2Rlck9wdXM6OlNkcFRvQ29uZmlnKAog
ICAgIH0KICAgICByZXR1cm4gMTsgIC8vIERlZmF1bHQgdG8gbW9uby4KICAgfSgpOwotICBpZiAo
U1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJvcHVzIikgPT0gMCAmJgorICBpZiAo
YWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgIm9wdXMiKSAmJgogICAgICAgZm9y
bWF0LmNsb2NrcmF0ZV9oeiA9PSA0ODAwMCAmJiBmb3JtYXQubnVtX2NoYW5uZWxzID09IDIgJiYK
ICAgICAgIG51bV9jaGFubmVscykgewogICAgIHJldHVybiBDb25maWd7Km51bV9jaGFubmVsc307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9f
ZGVjb2Rlcl9vcHVzLmgKaW5kZXggZGUyNjAyNmI3ODMzOTc5YjNmZWQ3YWQ5YjU3NDBlM2VhNzIw
NjA3YS4uNmZiYmNiNTk4YTE0ZDc3YWU2ZGJmMjQ2YmIzODdlNGY4YjhiNmQ0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVy
X29wdXMuaApAQCAtMTgsMTQgKzE4LDEzIEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19jb2RlY19wYWlyX2lkLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19k
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIAogLy8gT3B1cyBkZWNvZGVyIEFQSSBmb3IgdXNlIGFzIGEgdGVtcGxhdGUgcGFyYW1ldGVy
IHRvCiAvLyBDcmVhdGVBdWRpb0RlY29kZXJGYWN0b3J5PC4uLj4oKS4KLS8vCi0vLyBOT1RFOiBU
aGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRo
b3V0IG5vdGljZS4KLXN0cnVjdCBBdWRpb0RlY29kZXJPcHVzIHsKK3N0cnVjdCBSVENfRVhQT1JU
IEF1ZGlvRGVjb2Rlck9wdXMgewogICBzdHJ1Y3QgQ29uZmlnIHsKICAgICBpbnQgbnVtX2NoYW5u
ZWxzOwogICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9v
cHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5oCmluZGV4IDIwYWFhZjcyNmY5MzE0OTQ5MDMyMGQwODJl
MDJmYmIwZGYzM2RkYmMuLjAzY2IwZDZiMzhjODMzNDU2OWZiNjY4ODcyYWU0ZDhlNzZhNGQ2NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXMuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL29wdXMvYXVk
aW9fZW5jb2Rlcl9vcHVzLmgKQEAgLTE5LDE0ICsxOSwxMyBAQAogI2luY2x1ZGUgImFwaS9hdWRp
b19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVk
aW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29k
ZXJfb3B1c19jb25maWcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gT3B1cyBlbmNvZGVyIEFQSSBmb3IgdXNlIGFz
IGEgdGVtcGxhdGUgcGFyYW1ldGVyIHRvCiAvLyBDcmVhdGVBdWRpb0VuY29kZXJGYWN0b3J5PC4u
Lj4oKS4KLS8vCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVu
dCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLXN0cnVjdCBBdWRpb0VuY29kZXJPcHVz
IHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvRW5jb2Rlck9wdXMgewogICB1c2luZyBDb25maWcg
PSBBdWRpb0VuY29kZXJPcHVzQ29uZmlnOwogICBzdGF0aWMgYWJzbDo6b3B0aW9uYWw8QXVkaW9F
bmNvZGVyT3B1c0NvbmZpZz4gU2RwVG9Db25maWcoCiAgICAgICBjb25zdCBTZHBBdWRpb0Zvcm1h
dCYgYXVkaW9fZm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXNf
Y29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
YXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzX2NvbmZpZy5oCmluZGV4IGM3MDY3
YmIxYzMyNDE4NmYyYjZkZGM1NjczMWM1ZWJiZTJhZDM1NjcuLjBhM2VlMmM4ZGZiMGQ0MGQ4YTJj
MTIwODBjMDUxM2Y1ZGQ1MDYxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29w
dXNfY29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1c19jb25maWcuaApAQCAt
MTYsMTEgKzE2LDExIEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBl
cy9vcHRpb25hbC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCi0vLyBOT1RFOiBUaGlzIHN0cnVjdCBpcyBzdGlsbCB1bmRl
ciBkZXZlbG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLXN0cnVjdCBBdWRp
b0VuY29kZXJPcHVzQ29uZmlnIHsKK3N0cnVjdCBSVENfRVhQT1JUIEF1ZGlvRW5jb2Rlck9wdXND
b25maWcgewogICBzdGF0aWMgY29uc3RleHByIGludCBrRGVmYXVsdEZyYW1lU2l6ZU1zID0gMjA7
CiAKICAgLy8gT3B1cyBBUEkgYWxsb3dzIGEgbWluIGJpdHJhdGUgb2YgNTAwYnBzLCBidXQgT3B1
cyBkb2N1bWVudGF0aW9uIHN1Z2dlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fb3B0aW9ucy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19vcHRpb25zLmNjCmluZGV4
IGE0YTM3ZDIxOWE0M2M5ZWEyNTc2NWVhNTljYzNhMzcxNmE5NTkzZmEuLmUzMzIxNGJhZDA0ZDZj
ZTliYTRmNDgyZmNjNDUwZDhlY2JiYTRmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19vcHRpb25zLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19vcHRpb25zLmNj
CkBAIC00OSw4ICs0OSw5IEBAIHZvaWQgQXVkaW9PcHRpb25zOjpTZXRBbGwoY29uc3QgQXVkaW9P
cHRpb25zJiBjaGFuZ2UpIHsKICAgICAgICAgICBjaGFuZ2UuYXVkaW9faml0dGVyX2J1ZmZlcl9t
YXhfcGFja2V0cyk7CiAgIFNldEZyb20oJmF1ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVy
YXRlLAogICAgICAgICAgIGNoYW5nZS5hdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0
ZSk7CisgIFNldEZyb20oJmF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zLAorICAgICAg
ICAgIGNoYW5nZS5hdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcyk7CiAgIFNldEZyb20o
JnR5cGluZ19kZXRlY3Rpb24sIGNoYW5nZS50eXBpbmdfZGV0ZWN0aW9uKTsKLSAgU2V0RnJvbSgm
YWVjbV9nZW5lcmF0ZV9jb21mb3J0X25vaXNlLCBjaGFuZ2UuYWVjbV9nZW5lcmF0ZV9jb21mb3J0
X25vaXNlKTsKICAgU2V0RnJvbSgmZXhwZXJpbWVudGFsX2FnYywgY2hhbmdlLmV4cGVyaW1lbnRh
bF9hZ2MpOwogICBTZXRGcm9tKCZleHRlbmRlZF9maWx0ZXJfYWVjLCBjaGFuZ2UuZXh0ZW5kZWRf
ZmlsdGVyX2FlYyk7CiAgIFNldEZyb20oJmRlbGF5X2Fnbm9zdGljX2FlYywgY2hhbmdlLmRlbGF5
X2Fnbm9zdGljX2FlYyk7CkBAIC03Nyw4ICs3OCw5IEBAIGJvb2wgQXVkaW9PcHRpb25zOjpvcGVy
YXRvcj09KGNvbnN0IEF1ZGlvT3B0aW9ucyYgbykgY29uc3QgewogICAgICAgICAgYXVkaW9faml0
dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyA9PSBvLmF1ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tl
dHMgJiYKICAgICAgICAgIGF1ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlID09CiAg
ICAgICAgICAgICAgby5hdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSAmJgorICAg
ICAgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMgPT0KKyAgICAgICAgICAgICBv
LmF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zICYmCiAgICAgICAgICB0eXBpbmdfZGV0
ZWN0aW9uID09IG8udHlwaW5nX2RldGVjdGlvbiAmJgotICAgICAgICAgYWVjbV9nZW5lcmF0ZV9j
b21mb3J0X25vaXNlID09IG8uYWVjbV9nZW5lcmF0ZV9jb21mb3J0X25vaXNlICYmCiAgICAgICAg
ICBleHBlcmltZW50YWxfYWdjID09IG8uZXhwZXJpbWVudGFsX2FnYyAmJgogICAgICAgICAgZXh0
ZW5kZWRfZmlsdGVyX2FlYyA9PSBvLmV4dGVuZGVkX2ZpbHRlcl9hZWMgJiYKICAgICAgICAgIGRl
bGF5X2Fnbm9zdGljX2FlYyA9PSBvLmRlbGF5X2Fnbm9zdGljX2FlYyAmJgpAQCAtMTA5LDggKzEx
MSw5IEBAIHN0ZDo6c3RyaW5nIEF1ZGlvT3B0aW9uczo6VG9TdHJpbmcoKSBjb25zdCB7CiAgICAg
ICAgICAgICAgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyk7CiAgIFRvU3RyaW5n
SWZTZXQoJnJlc3VsdCwgImF1ZGlvX2ppdHRlcl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlIiwKICAg
ICAgICAgICAgICAgICBhdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSk7CisgIFRv
U3RyaW5nSWZTZXQoJnJlc3VsdCwgImF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zIiwK
KyAgICAgICAgICAgICAgICBhdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcyk7CiAgIFRv
U3RyaW5nSWZTZXQoJnJlc3VsdCwgInR5cGluZyIsIHR5cGluZ19kZXRlY3Rpb24pOwotICBUb1N0
cmluZ0lmU2V0KCZyZXN1bHQsICJjb21mb3J0X25vaXNlIiwgYWVjbV9nZW5lcmF0ZV9jb21mb3J0
X25vaXNlKTsKICAgVG9TdHJpbmdJZlNldCgmcmVzdWx0LCAiZXhwZXJpbWVudGFsX2FnYyIsIGV4
cGVyaW1lbnRhbF9hZ2MpOwogICBUb1N0cmluZ0lmU2V0KCZyZXN1bHQsICJleHRlbmRlZF9maWx0
ZXJfYWVjIiwgZXh0ZW5kZWRfZmlsdGVyX2FlYyk7CiAgIFRvU3RyaW5nSWZTZXQoJnJlc3VsdCwg
ImRlbGF5X2Fnbm9zdGljX2FlYyIsIGRlbGF5X2Fnbm9zdGljX2FlYyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fb3B0aW9u
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlv
X29wdGlvbnMuaAppbmRleCBhZWNmZjQxNDI5OGNkMjQ4ZWU0MmMxMDZmMmQ1MzBlNTNlNjMyNTUx
Li5jMmQxZjQ0ODdjMzY4NzRkNTM4OWQ2ZDU0YTliMWVhNDIxOGI1ODQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvYXVkaW9fb3B0aW9u
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9h
dWRpb19vcHRpb25zLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgQVBJX0FVRElPX09QVElP
TlNfSF8KICNkZWZpbmUgQVBJX0FVRElPX09QVElPTlNfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
QEAgLTUzLDkgKzU0LDEwIEBAIHN0cnVjdCBBdWRpb09wdGlvbnMgewogICBhYnNsOjpvcHRpb25h
bDxpbnQ+IGF1ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tldHM7CiAgIC8vIEF1ZGlvIHJlY2Vp
dmVyIGppdHRlciBidWZmZXIgKE5ldEVxKSBmYXN0IGFjY2VsZXJhdGUgbW9kZS4KICAgYWJzbDo6
b3B0aW9uYWw8Ym9vbD4gYXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGU7CisgIC8v
IEF1ZGlvIHJlY2VpdmVyIGppdHRlciBidWZmZXIgKE5ldEVxKSBtaW5pbXVtIHRhcmdldCBkZWxh
eSBpbiBtaWxsaXNlY29uZHMuCisgIGFic2w6Om9wdGlvbmFsPGludD4gYXVkaW9faml0dGVyX2J1
ZmZlcl9taW5fZGVsYXlfbXM7CiAgIC8vIEF1ZGlvIHByb2Nlc3NpbmcgdG8gZGV0ZWN0IHR5cGlu
Zy4KICAgYWJzbDo6b3B0aW9uYWw8Ym9vbD4gdHlwaW5nX2RldGVjdGlvbjsKLSAgYWJzbDo6b3B0
aW9uYWw8Ym9vbD4gYWVjbV9nZW5lcmF0ZV9jb21mb3J0X25vaXNlOwogICBhYnNsOjpvcHRpb25h
bDxib29sPiBleHBlcmltZW50YWxfYWdjOwogICBhYnNsOjpvcHRpb25hbDxib29sPiBleHRlbmRl
ZF9maWx0ZXJfYWVjOwogICBhYnNsOjpvcHRpb25hbDxib29sPiBkZWxheV9hZ25vc3RpY19hZWM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvY2FsbC9iaXRyYXRlX2FsbG9jYXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYWxsL2JpdHJhdGVfYWxsb2NhdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJkN2YyMWJjMWU5NDFjYTQ5YmY4NWQwYzdkMzZmZjM2MzBhMTY1MTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FsbC9i
aXRyYXRlX2FsbG9jYXRpb24uaApAQCAtMCwwICsxLDQxIEBACisvKgorICogIENvcHlyaWdodCAy
MDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
I2lmbmRlZiBBUElfQ0FMTF9CSVRSQVRFX0FMTE9DQVRJT05fSF8KKyNkZWZpbmUgQVBJX0NBTExf
QklUUkFURV9BTExPQ0FUSU9OX0hfCisKKyNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9yYXRlLmgi
CisjaW5jbHVkZSAiYXBpL3VuaXRzL3RpbWVfZGVsdGEuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CisKKy8vIEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHByb3ZpZGVzIGluZm9ybWF0aW9uIHRvIGFs
bG9jYXRlZCBzdHJlYW1zIGFib3V0IHRoZWlyCisvLyBiaXRyYXRlIGFsbG9jYXRpb24uIEl0IG9y
aWdpbmF0ZXMgZnJvbSB0aGUgQml0cmF0ZUFsbG9jYXRlciBjbGFzcyBhbmQgaXMKKy8vIHByb3Bh
Z2F0ZWQgZnJvbSB0aGVyZS4KK3N0cnVjdCBCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB7CisgIC8v
IFRoZSBhbGxvY2F0ZWQgdGFyZ2V0IGJpdHJhdGUuIE1lZGlhIHN0cmVhbXMgc2hvdWxkIHByb2R1
Y2UgdGhpcyBhbW91bnQgb2YKKyAgLy8gZGF0YS4gKE5vdGUgdGhhdCB0aGlzIG1heSBpbmNsdWRl
IHBhY2tldCBvdmVyaGVhZCBkZXBlbmRpbmcgb24KKyAgLy8gY29uZmlndXJhdGlvbi4pCisgIERh
dGFSYXRlIHRhcmdldF9iaXRyYXRlID0gRGF0YVJhdGU6Olplcm8oKTsKKyAgLy8gVGhlIGFsbG9j
YXRlZCBwYXJ0IG9mIHRoZSBlc3RpbWF0ZWQgbGluayBjYXBhY2l0eS4gVGhpcyBpcyBtb3JlIHN0
YWJsZSB0aGFuCisgIC8vIHRoZSB0YXJnZXQgYXMgaXQgaXMgYmFzZWQgb24gdGhlIHVuZGVybHlp
bmcgbGluayBjYXBhY2l0eSBlc3RpbWF0ZS4gVGhpcworICAvLyBzaG91bGQgYmUgdXNlZCB0byBj
aGFuZ2UgZW5jb2RlciBjb25maWd1cmF0aW9uIHdoZW4gdGhlIGNvc3Qgb2YgY2hhbmdlIGlzCisg
IC8vIGhpZ2guCisgIERhdGFSYXRlIGxpbmtfY2FwYWNpdHkgPSBEYXRhUmF0ZTo6WmVybygpOwor
ICAvLyBQcmVkaWN0ZWQgcGFja2V0IGxvc3MgcmF0aW8uCisgIGRvdWJsZSBwYWNrZXRfbG9zc19y
YXRpbyA9IDA7CisgIC8vIFByZWRpY3RlZCByb3VuZCB0cmlwIHRpbWUuCisgIFRpbWVEZWx0YSBy
b3VuZF90cmlwX3RpbWUgPSBUaW1lRGVsdGE6OlBsdXNJbmZpbml0eSgpOworICAvLyB8YndlX3Bl
cmlvZHwgaXMgZGVwcmVjYXRlZCwgdXNlIHRoZSBsaW5rIGNhcGFjaXR5IGFsbG9jYXRpb24gaW5z
dGVhZC4KKyAgVGltZURlbHRhIGJ3ZV9wZXJpb2QgPSBUaW1lRGVsdGE6OlBsdXNJbmZpbml0eSgp
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9DQUxMX0JJ
VFJBVEVfQUxMT0NBVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbGwvdHJhbnNwb3J0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbGwvdHJhbnNwb3J0LmNjCmluZGV4IDBh
OWRkNWJjYzdlMTU4NTFiNDQ4ZmMyNzgxMWViNGI1ZTE3MDdkYmIuLmJjYWRjNzYyZGU0ZDE5MzRm
NDA4M2RhYzE4ZjI1YWI4ZGRhMjM3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYWxsL3RyYW5zcG9ydC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FsbC90cmFuc3BvcnQuY2MK
QEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgogCisj
aW5jbHVkZSA8Y3N0ZGludD4KKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIFBhY2tldE9wdGlvbnM6
OlBhY2tldE9wdGlvbnMoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FsbC90cmFuc3BvcnQuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYWxsL3RyYW5zcG9ydC5oCmlu
ZGV4IDE4ZDIyNzA1Y2Q2ZGY5MTVjMWM2MjM0ZWZhODRjZjNiNTllOTk3OTYuLjMyZTVkZGY4NzRm
YjFjNGNjMTBiNWYxYmZkOTEzZWRlMzExNTE4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYWxsL3RyYW5zcG9ydC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYWxsL3RyYW5zcG9y
dC5oCkBAIC0zMiw2ICszMiw4IEBAIHN0cnVjdCBQYWNrZXRPcHRpb25zIHsKICAgc3RkOjp2ZWN0
b3I8dWludDhfdD4gYXBwbGljYXRpb25fZGF0YTsKICAgLy8gV2hldGhlciB0aGlzIGlzIGEgcmV0
cmFuc21pc3Npb24gb2YgYW4gZWFybGllciBwYWNrZXQuCiAgIGJvb2wgaXNfcmV0cmFuc21pdCA9
IGZhbHNlOworICBib29sIGluY2x1ZGVkX2luX2ZlZWRiYWNrID0gZmFsc2U7CisgIGJvb2wgaW5j
bHVkZWRfaW5fYWxsb2NhdGlvbiA9IGZhbHNlOwogfTsKIAogY2xhc3MgVHJhbnNwb3J0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9j
YW5kaWRhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvY2FuZGlkYXRlLmNjCmluZGV4IGMyYzZjNTMwMTcyY2NlMWI1ZTE5ZTUwY2ZmYTYwMWFiODA3
Mjg1ZjMuLjI3NWIxNzM2NmMyMWNkY2QwZTdkNGU1ZWEzYzc4MDhlZTU0NzNjYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRh
dGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L2NhbmRpZGF0ZS5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAiYXBpL2NhbmRpZGF0
ZS5oIgogCisjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L2lwYWRkcmVzcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIu
aCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbmRpZGF0ZS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NhbmRpZGF0ZS5oCmluZGV4IDZlMDU0N2I1
ZTJmZDg0ZThkZjAxMzg4N2Y1MGFkZmQ0MTcwNDQwZmYuLjRjNjUwZDliZGJkNTJkM2MzNGRlMGYz
NTQwNmQxN2I4MDJjZmFjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jYW5kaWRhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY2FuZGlkYXRlLmgKQEAgLTE4LDE2ICsxOCwxNiBA
QAogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrX2Nv
bnN0YW50cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAK
IC8vIENhbmRpZGF0ZSBmb3IgSUNFIGJhc2VkIGNvbm5lY3Rpb24gZGlzY292ZXJ5LgogLy8gVE9E
TyhwaG9nbHVuZCk6IHJlbW92ZSB0aGluZ3MgaW4gaGVyZSB0aGF0IGFyZSBub3QgbmVlZGVkIGlu
IHRoZSBwdWJsaWMgQVBJLgogCi1jbGFzcyBDYW5kaWRhdGUgeworY2xhc3MgUlRDX0VYUE9SVCBD
YW5kaWRhdGUgewogIHB1YmxpYzoKICAgQ2FuZGlkYXRlKCk7CiAgIC8vIFRPRE8ocHRoYXRjaGVy
KTogTWF0Y2ggdGhlIG9yZGVyaW5nIGFuZCBwYXJhbSBsaXN0IGFzIHBlciBSRkMgNTI0NQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2Ny
ZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFhNmQwODZmNjYwMGQxN2MxNWMwNjlkYTg2MjIwYzI5NTc4ZDcwZjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuY2MKQEAgLTAsMCArMSwxODIgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2Zh
Y3RvcnkuaCIKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5j
bHVkZSAiYXBpL2NhbGwvY2FsbGZhY3RvcnlpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJhcGkvcGVl
cmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVv
X2RlY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVu
dF9sb2dfZmFjdG9yeS5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZl
bnRfbG9nX2ZhY3RvcnlfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0
Y21lZGlhZW5naW5lLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9h
dWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVk
ZS9hdWRpb19wcm9jZXNzaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYmluZC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFk
LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisjaWYgZGVmaW5lZChVU0VfQlVJTFRJTl9TV19D
T0RFQ1MpCitydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNl
PiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1
ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KSB7Cisg
IHJldHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnlXaXRoQXVkaW9NaXhlcigKKyAgICAg
IG51bGxwdHIgLypuZXR3b3JrX3RocmVhZCovLCBudWxscHRyIC8qd29ya2VyX3RocmVhZCovLAor
ICAgICAgbnVsbHB0ciAvKnNpZ25hbGluZ190aHJlYWQqLywgbnVsbHB0ciAvKmRlZmF1bHRfYWRt
Ki8sCisgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwK
KyAgICAgIG51bGxwdHIgLyp2aWRlb19lbmNvZGVyX2ZhY3RvcnkqLywgbnVsbHB0ciAvKnZpZGVv
X2RlY29kZXJfZmFjdG9yeSovLAorICAgICAgbnVsbHB0ciAvKmF1ZGlvX21peGVyKi8pOworfQor
CisvLyBOb3RlOiBhbGwgdGhlIG90aGVyIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSB2YXJp
YW50cyBqdXN0IGVuZCB1cCBjYWxsaW5nCisvLyB0aGlzLCB1bHRpbWF0ZWx5LgorcnRjOjpzY29w
ZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5l
Y3Rpb25GYWN0b3J5KAorICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6
OlRocmVhZCogd29ya2VyX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVh
ZCwKKyAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29k
ZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRl
b19kZWNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1
ZGlvX21peGVyLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlv
X3Byb2Nlc3NpbmcpIHsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVk
aW9fcHJvY2Vzc2luZ191c2UgPSBhdWRpb19wcm9jZXNzaW5nOworICBpZiAoIWF1ZGlvX3Byb2Nl
c3NpbmdfdXNlKSB7CisgICAgYXVkaW9fcHJvY2Vzc2luZ191c2UgPSBBdWRpb1Byb2Nlc3NpbmdC
dWlsZGVyKCkuQ3JlYXRlKCk7CisgIH0KKworICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVk
aWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2VuZ2luZSgKKyAgICAgIGNyaWNrZXQ6OldlYlJ0Y01l
ZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAorICAgICAgICAgIGRlZmF1bHRfYWRtLCBhdWRpb19l
bmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICAgICAgICB2aWRlb19l
bmNvZGVyX2ZhY3RvcnksIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwgYXVkaW9fbWl4ZXIsCisgICAg
ICAgICAgYXVkaW9fcHJvY2Vzc2luZ191c2UpKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEZh
Y3RvcnlJbnRlcmZhY2U+IGNhbGxfZmFjdG9yeSA9IENyZWF0ZUNhbGxGYWN0b3J5KCk7CisKKyAg
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nRmFjdG9yeUludGVyZmFjZT4gZXZlbnRfbG9nX2Zh
Y3RvcnkgPQorICAgICAgQ3JlYXRlUnRjRXZlbnRMb2dGYWN0b3J5KCk7CisKKyAgcmV0dXJuIENy
ZWF0ZU1vZHVsYXJQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCisgICAgICBuZXR3b3JrX3RocmVhZCwg
d29ya2VyX3RocmVhZCwgc2lnbmFsaW5nX3RocmVhZCwgc3RkOjptb3ZlKG1lZGlhX2VuZ2luZSks
CisgICAgICBzdGQ6Om1vdmUoY2FsbF9mYWN0b3J5KSwgc3RkOjptb3ZlKGV2ZW50X2xvZ19mYWN0
b3J5KSk7Cit9CisKK3J0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRl
cmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICBydGM6OlRocmVhZCogbmV0
d29ya190aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCisgICAgcnRjOjpU
aHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCisgICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRf
YWRtLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19l
bmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rv
cnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0VuY29k
ZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlk
ZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhlciwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8
QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxG
ZWNDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4gZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSwKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlPgorICAg
ICAgICBuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeSkgeworICBydGM6OnNjb3BlZF9yZWZwdHI8
QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nX3VzZSA9IGF1ZGlvX3Byb2Nlc3Npbmc7
CisgIGlmICghYXVkaW9fcHJvY2Vzc2luZ191c2UpIHsKKyAgICBhdWRpb19wcm9jZXNzaW5nX3Vz
ZSA9IEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKTsKKyAgfQorCisgIHN0ZDo6dW5p
cXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5naW5lKAorICAg
ICAgY3JpY2tldDo6V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCisgICAgICAgICAg
ZGVmYXVsdF9hZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
LAorICAgICAgICAgIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5
LCBhdWRpb19taXhlciwKKyAgICAgICAgICBhdWRpb19wcm9jZXNzaW5nX3VzZSkpOworCisgIHN0
ZDo6dW5pcXVlX3B0cjxDYWxsRmFjdG9yeUludGVyZmFjZT4gY2FsbF9mYWN0b3J5ID0gQ3JlYXRl
Q2FsbEZhY3RvcnkoKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dGYWN0b3J5SW50
ZXJmYWNlPiBldmVudF9sb2dfZmFjdG9yeSA9CisgICAgICBDcmVhdGVSdGNFdmVudExvZ0ZhY3Rv
cnkoKTsKKworICByZXR1cm4gQ3JlYXRlTW9kdWxhclBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAg
ICAgIG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBzdGQ6
Om1vdmUobWVkaWFfZW5naW5lKSwKKyAgICAgIHN0ZDo6bW92ZShjYWxsX2ZhY3RvcnkpLCBzdGQ6
Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpLAorICAgICAgc3RkOjptb3ZlKGZlY19jb250cm9sbGVy
X2ZhY3RvcnkpLCBzdGQ6Om1vdmUobmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnkpKTsKK30KKyNl
bmRpZgorCitydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNl
PiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCisgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtf
dGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFk
KiBzaWduYWxpbmdfdGhyZWFkLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RldmljZU1v
ZHVsZT4gZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZh
Y3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVl
X3B0cjxWaWRlb0VuY29kZXJGYWN0b3J5PiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvRGVjb2RlckZhY3Rvcnk+IHZpZGVvX2RlY29kZXJfZmFjdG9yeSwK
KyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCisgICAgcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZykgeworICBp
ZiAoIWF1ZGlvX3Byb2Nlc3NpbmcpCisgICAgYXVkaW9fcHJvY2Vzc2luZyA9IEF1ZGlvUHJvY2Vz
c2luZ0J1aWxkZXIoKS5DcmVhdGUoKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVk
aWFFbmdpbmVJbnRlcmZhY2U+IG1lZGlhX2VuZ2luZSA9CisgICAgICBjcmlja2V0OjpXZWJSdGNN
ZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKKyAgICAgICAgICBkZWZhdWx0X2FkbSwgYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICAgICAgc3RkOjpt
b3ZlKHZpZGVvX2VuY29kZXJfZmFjdG9yeSksIHN0ZDo6bW92ZSh2aWRlb19kZWNvZGVyX2ZhY3Rv
cnkpLAorICAgICAgICAgIGF1ZGlvX21peGVyLCBhdWRpb19wcm9jZXNzaW5nKTsKKworICBzdGQ6
OnVuaXF1ZV9wdHI8Q2FsbEZhY3RvcnlJbnRlcmZhY2U+IGNhbGxfZmFjdG9yeSA9IENyZWF0ZUNh
bGxGYWN0b3J5KCk7CisKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nRmFjdG9yeUludGVy
ZmFjZT4gZXZlbnRfbG9nX2ZhY3RvcnkgPQorICAgICAgQ3JlYXRlUnRjRXZlbnRMb2dGYWN0b3J5
KCk7CisgIFBlZXJDb25uZWN0aW9uRmFjdG9yeURlcGVuZGVuY2llcyBkZXBlbmRlbmNpZXM7Cisg
IGRlcGVuZGVuY2llcy5uZXR3b3JrX3RocmVhZCA9IG5ldHdvcmtfdGhyZWFkOworICBkZXBlbmRl
bmNpZXMud29ya2VyX3RocmVhZCA9IHdvcmtlcl90aHJlYWQ7CisgIGRlcGVuZGVuY2llcy5zaWdu
YWxpbmdfdGhyZWFkID0gc2lnbmFsaW5nX3RocmVhZDsKKyAgZGVwZW5kZW5jaWVzLm1lZGlhX2Vu
Z2luZSA9IHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpOworICBkZXBlbmRlbmNpZXMuY2FsbF9mYWN0
b3J5ID0gc3RkOjptb3ZlKGNhbGxfZmFjdG9yeSk7CisgIGRlcGVuZGVuY2llcy5ldmVudF9sb2df
ZmFjdG9yeSA9IHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSk7CisgIHJldHVybiBDcmVhdGVN
b2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KHN0ZDo6bW92ZShkZXBlbmRlbmNpZXMpKTsKK30K
KworI2lmIGRlZmluZWQoVVNFX0JVSUxUSU5fU1dfQ09ERUNTKQorcnRjOjpzY29wZWRfcmVmcHRy
PFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KK0NyZWF0ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeVdpdGhBdWRpb01peGVyKAorICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAg
ICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5n
X3RocmVhZCwKKyAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwK
KyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVv
X2VuY29kZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5
KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4
ZXI+IGF1ZGlvX21peGVyKSB7CisgIHJldHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3Rvcnko
CisgICAgICBuZXR3b3JrX3RocmVhZCwgd29ya2VyX3RocmVhZCwgc2lnbmFsaW5nX3RocmVhZCwg
ZGVmYXVsdF9hZG0sCisgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJf
ZmFjdG9yeSwgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgICAgdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5LCBhdWRpb19taXhlciwgbnVsbHB0cik7Cit9CisKK3J0Yzo6c2NvcGVkX3JlZnB0cjxQZWVy
Q29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgK
KyAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHdvcmtl
cl90aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCisgICAgQXVkaW9E
ZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRtLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0Vu
Y29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBjcmlj
a2V0OjpXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisg
ICAgY3JpY2tldDo6V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5KSB7CisgIHJldHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnlXaXRoQXVkaW9NaXhl
cigKKyAgICAgIG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFk
LCBkZWZhdWx0X2FkbSwKKyAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LCB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICB2aWRlb19kZWNvZGVyX2Zh
Y3RvcnksIG51bGxwdHIpOworfQorI2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9j
cmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmFhNTBjN2JkODA2M2Q1NjIzOTVlMDFmN2YyMzMwMjEyZWZhZjRlMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oCkBAIC0wLDAgKzEsMTc5IEBACisvKgor
ICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9DUkVBVEVfUEVFUkNPTk5FQ1RJT05fRkFDVE9S
WV9IXworI2RlZmluZSBBUElfQ1JFQVRFX1BFRVJDT05ORUNUSU9OX0ZBQ1RPUllfSF8KKworI2lu
Y2x1ZGUgPG1lbW9yeT4KKworI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19taXhlci5oIgorI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJh
cGkvZmVjX2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZh
Y2UuaCIKKyNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfY29udHJvbC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisKK25hbWVzcGFjZSBydGMgeworLy8gVE9E
TyhidWdzLndlYnJ0Yy5vcmcvOTk4Nyk6IE1vdmUgcnRjOjpUaHJlYWQgdG8gYXBpLyBvciBleHBv
c2UgYSBiZXR0ZXIKKy8vIHR5cGUuIEF0IHRoZSBtb21lbnQsIHJ0Yzo6VGhyZWFkIGlzIG5vdCBw
YXJ0IG9mIGFwaS8gc28gaXQgY2Fubm90IGJlCisvLyBpbmNsdWRlZCBpbiBvcmRlciB0byBhdm9p
ZCB0byBsZWFrIGludGVybmFsIHR5cGVzLgorY2xhc3MgVGhyZWFkOworfSAgLy8gbmFtZXNwYWNl
IHJ0YworCituYW1lc3BhY2UgY3JpY2tldCB7CitjbGFzcyBXZWJSdGNWaWRlb0RlY29kZXJGYWN0
b3J5OworY2xhc3MgV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeTsKK30gIC8vIG5hbWVzcGFjZSBj
cmlja2V0CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBBdWRpb0RldmljZU1vZHVsZTsK
K2NsYXNzIEF1ZGlvUHJvY2Vzc2luZzsKKworI2lmIGRlZmluZWQoVVNFX0JVSUxUSU5fU1dfQ09E
RUNTKQorLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25uZWN0aW9uRmFjdG9yeUlu
dGVyZmFjZS4KKy8vCisvLyBUaGlzIG1ldGhvZCByZWxpZXMgb24gdGhlIHRocmVhZCBpdCdzIGNh
bGxlZCBvbiBhcyB0aGUgInNpZ25hbGluZyB0aHJlYWQiCisvLyBmb3IgdGhlIFBlZXJDb25uZWN0
aW9uRmFjdG9yeSBpdCBjcmVhdGVzLgorLy8KKy8vIEFzIHN1Y2gsIGlmIHRoZSBjdXJyZW50IHRo
cmVhZCBpcyBub3QgYWxyZWFkeSBydW5uaW5nIGFuIHJ0Yzo6VGhyZWFkIG1lc3NhZ2UKKy8vIGxv
b3AsIGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoaXMgbWV0aG9kIG11c3QgZXZlbnR1YWxseSBlaXRo
ZXIgY2FsbAorLy8gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKS0+UnVuKCksIG9yIGNhbGwKKy8vIHJ0
Yzo6VGhyZWFkOjpDdXJyZW50KCktPlByb2Nlc3NNZXNzYWdlcygpIHdpdGhpbiB0aGUgYXBwbGlj
YXRpb24ncyBvd24KKy8vIG1lc3NhZ2UgbG9vcC4KK1JUQ19FWFBPUlQgcnRjOjpzY29wZWRfcmVm
cHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KK0NyZWF0ZVBlZXJDb25uZWN0aW9u
RmFjdG9yeSgKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVk
aW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJG
YWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnkpOworCisvLyBDcmVhdGUgYSBuZXcgaW5zdGFu
Y2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlLgorLy8KKy8vIHxuZXR3b3JrX3Ro
cmVhZHwsIHx3b3JrZXJfdGhyZWFkfCBhbmQgfHNpZ25hbGluZ190aHJlYWR8IGFyZQorLy8gdGhl
IG9ubHkgbWFuZGF0b3J5IHBhcmFtZXRlcnMuCisvLworLy8gSWYgbm9uLW51bGwsIGEgcmVmZXJl
bmNlIGlzIGFkZGVkIHRvIHxkZWZhdWx0X2FkbXwsIGFuZCBvd25lcnNoaXAgb2YKKy8vIHx2aWRl
b19lbmNvZGVyX2ZhY3Rvcnl8IGFuZCB8dmlkZW9fZGVjb2Rlcl9mYWN0b3J5fCBpcyB0cmFuc2Zl
cnJlZCB0byB0aGUKKy8vIHJldHVybmVkIGZhY3RvcnkuCisvLyBUT0RPKGRlYWRiZWVmKTogVXNl
IHJ0Yzo6c2NvcGVkX3JlZnB0cjw+IGFuZCBzdGQ6OnVuaXF1ZV9wdHI8PiB0byBtYWtlIHRoaXMK
Ky8vIG93bmVyc2hpcCB0cmFuc2ZlciBhbmQgcmVmIGNvdW50aW5nIG1vcmUgb2J2aW91cy4KK1JU
Q19FWFBPUlQgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFj
ZT4KK0NyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICBydGM6OlRocmVhZCogbmV0d29y
a190aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCisgICAgcnRjOjpUaHJl
YWQqIHNpZ25hbGluZ190aHJlYWQsCisgICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRt
LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNv
ZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+
IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJG
YWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2ViUnRjVmlkZW9E
ZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KTsKKworLy8gQ3JlYXRlIGEgbmV3
IGluc3RhbmNlIG9mIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSB3aXRoIG9wdGlvbmFs
CisvLyBleHRlcm5hbCBhdWRpbyBtaXhlZCBhbmQgYXVkaW8gcHJvY2Vzc2luZyBtb2R1bGVzLgor
Ly8KKy8vIElmIHxhdWRpb19taXhlcnwgaXMgbnVsbCwgYW4gaW50ZXJuYWwgYXVkaW8gbWl4ZXIg
d2lsbCBiZSBjcmVhdGVkIGFuZCB1c2VkLgorLy8gSWYgfGF1ZGlvX3Byb2Nlc3Npbmd8IGlzIG51
bGwsIGFuIGludGVybmFsIGF1ZGlvIHByb2Nlc3NpbmcgbW9kdWxlIHdpbGwgYmUKKy8vIGNyZWF0
ZWQgYW5kIHVzZWQuCitSVENfRVhQT1JUIHJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2U+CitDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCisgICAgcnRj
OjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAorICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFk
LAorICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAorICAgIEF1ZGlvRGV2aWNlTW9k
dWxlKiBkZWZhdWx0X2FkbSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFj
dG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6V2Vi
UnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNr
ZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZyk7CisKKy8vIENy
ZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2Ugd2l0
aCBvcHRpb25hbAorLy8gZXh0ZXJuYWwgYXVkaW8gbWl4ZXIsIGF1ZGlvIHByb2Nlc3NpbmcsIGFu
ZCBmZWMgY29udHJvbGxlciBtb2R1bGVzLgorLy8KKy8vIElmIHxhdWRpb19taXhlcnwgaXMgbnVs
bCwgYW4gaW50ZXJuYWwgYXVkaW8gbWl4ZXIgd2lsbCBiZSBjcmVhdGVkIGFuZCB1c2VkLgorLy8g
SWYgfGF1ZGlvX3Byb2Nlc3Npbmd8IGlzIG51bGwsIGFuIGludGVybmFsIGF1ZGlvIHByb2Nlc3Np
bmcgbW9kdWxlIHdpbGwgYmUKKy8vIGNyZWF0ZWQgYW5kIHVzZWQuCisvLyBJZiB8ZmVjX2NvbnRy
b2xsZXJfZmFjdG9yeXwgaXMgbnVsbCwgYW4gaW50ZXJuYWwgZmVjIGNvbnRyb2xsZXIgbW9kdWxl
IHdpbGwKKy8vIGJlIGNyZWF0ZWQgYW5kIHVzZWQuCisvLyBJZiB8bmV0d29ya19jb250cm9sbGVy
X2ZhY3Rvcnl8IGlzIHByb3ZpZGVkLCBpdCB3aWxsIGJlIHVzZWQgaWYgZW5hYmxlZCB2aWEKKy8v
IGZpZWxkIHRyaWFsLgorUlRDX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rp
b25GYWN0b3J5SW50ZXJmYWNlPgorQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAorICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVh
ZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKKyAgICBBdWRpb0RldmljZU1v
ZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZh
Y3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6Oldl
YlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBjcmlj
a2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAorICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcsCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlPiBmZWNfY29udHJvbGxl
cl9mYWN0b3J5LAorICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckZhY3RvcnlJ
bnRlcmZhY2U+CisgICAgICAgIG5ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5ID0gbnVsbHB0cik7
CisjZW5kaWYgIC8vIGRlZmluZWQoVVNFX0JVSUxUSU5fU1dfQ09ERUNTKQorCisvLyBDcmVhdGUg
YSBuZXcgaW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHdpdGggb3B0
aW9uYWwgdmlkZW8KKy8vIGNvZGVjIGZhY3Rvcmllcy4gVGhlc2UgdmlkZW8gZmFjdG9yaWVzIHJl
cHJlc2VudHMgYWxsIHZpZGVvIGNvZGVjcywgaS5lLiBubworLy8gZXh0cmEgaW50ZXJuYWwgdmlk
ZW8gY29kZWNzIHdpbGwgYmUgYWRkZWQuCisvLyBXaGVuIGJ1aWxkaW5nIFdlYlJUQyB3aXRoIHJ0
Y191c2VfYnVpbHRpbl9zd19jb2RlY3MgPSBmYWxzZSwgdGhpcyBpcyB0aGUKKy8vIG9ubHkgYXZh
aWxhYmxlIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSBvdmVybG9hZC4KK1JUQ19FWFBPUlQg
cnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KK0NyZWF0
ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKKyAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQs
CisgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHNpZ25h
bGluZ190aHJlYWQsCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBk
ZWZhdWx0X2FkbSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4g
YXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29k
ZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvRW5jb2RlckZhY3Rvcnk+IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9yeT4gdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhlciwKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nKTsKKworI2lmIGRlZmlu
ZWQoVVNFX0JVSUxUSU5fU1dfQ09ERUNTKQorLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBl
ZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSB3aXRoIGV4dGVybmFsIGF1ZGlvCisvLyBtaXhl
ci4KKy8vCisvLyBJZiB8YXVkaW9fbWl4ZXJ8IGlzIG51bGwsIGFuIGludGVybmFsIGF1ZGlvIG1p
eGVyIHdpbGwgYmUgY3JlYXRlZCBhbmQgdXNlZC4KK1JUQ19FWFBPUlQgcnRjOjpzY29wZWRfcmVm
cHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KK0NyZWF0ZVBlZXJDb25uZWN0aW9u
RmFjdG9yeVdpdGhBdWRpb01peGVyKAorICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwK
KyAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKKyAgICBydGM6OlRocmVhZCogc2lnbmFs
aW5nX3RocmVhZCwKKyAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCisgICAgcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9y
eSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5LAorICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZp
ZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0
b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
TWl4ZXI+IGF1ZGlvX21peGVyKTsKKworLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJD
b25uZWN0aW9uRmFjdG9yeUludGVyZmFjZS4KKy8vIFNhbWUgdGhyZWFkIGlzIHVzZWQgYXMgd29y
a2VyIGFuZCBuZXR3b3JrIHRocmVhZC4KK1JUQ19FWFBPUlQgaW5saW5lIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+CitDcmVhdGVQZWVyQ29ubmVjdGlv
bkZhY3RvcnkoCisgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl9hbmRfbmV0d29ya190aHJlYWQsCisg
ICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCisgICAgQXVkaW9EZXZpY2VNb2R1bGUq
IGRlZmF1bHRfYWRtLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5
PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVj
b2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBjcmlja2V0OjpXZWJSdGNW
aWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgY3JpY2tldDo6
V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSB7CisgIHJl
dHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCisgICAgICB3b3JrZXJfYW5kX25ldHdv
cmtfdGhyZWFkLCB3b3JrZXJfYW5kX25ldHdvcmtfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLAor
ICAgICAgZGVmYXVsdF9hZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9m
YWN0b3J5LAorICAgICAgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LCB2aWRlb19kZWNvZGVyX2ZhY3Rv
cnkpOworfQorI2VuZGlmICAvLyBkZWZpbmVkKFVTRV9CVUlMVElOX1NXX0NPREVDUykKKworfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9DUkVBVEVfUEVFUkNPTk5FQ1RJ
T05fRkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdmMzRmMTliNTM4NTcyMmRjMmFiYWVmYzliNTJmMWQwNmZmYjQzNTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuY2MKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK0Ny
eXB0b09wdGlvbnM6OkNyeXB0b09wdGlvbnMoKSB7fQorCitDcnlwdG9PcHRpb25zOjpDcnlwdG9P
cHRpb25zKGNvbnN0IENyeXB0b09wdGlvbnMmIG90aGVyKSB7CisgIHNydHAgPSBvdGhlci5zcnRw
OworICBzZnJhbWUgPSBvdGhlci5zZnJhbWU7Cit9CisKK0NyeXB0b09wdGlvbnM6On5DcnlwdG9P
cHRpb25zKCkge30KKworLy8gc3RhdGljCitDcnlwdG9PcHRpb25zIENyeXB0b09wdGlvbnM6Ok5v
R2NtKCkgeworICBDcnlwdG9PcHRpb25zIG9wdGlvbnM7CisgIG9wdGlvbnMuc3J0cC5lbmFibGVf
Z2NtX2NyeXB0b19zdWl0ZXMgPSBmYWxzZTsKKyAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0ZDo6
dmVjdG9yPGludD4gQ3J5cHRvT3B0aW9uczo6R2V0U3VwcG9ydGVkRHRsc1NydHBDcnlwdG9TdWl0
ZXMoKSBjb25zdCB7CisgIHN0ZDo6dmVjdG9yPGludD4gY3J5cHRvX3N1aXRlczsKKyAgaWYgKHNy
dHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzKSB7CisgICAgY3J5cHRvX3N1aXRlcy5wdXNoX2Jh
Y2socnRjOjpTUlRQX0FFQURfQUVTXzI1Nl9HQ00pOworICAgIGNyeXB0b19zdWl0ZXMucHVzaF9i
YWNrKHJ0Yzo6U1JUUF9BRUFEX0FFU18xMjhfR0NNKTsKKyAgfQorICAvLyBOb3RlOiBTUlRQX0FF
UzEyOF9DTV9TSEExXzgwIGlzIHdoYXQgaXMgcmVxdWlyZWQgdG8gYmUgc3VwcG9ydGVkIChieQor
ICAvLyBkcmFmdC1pZXRmLXJ0Y3dlYi1zZWN1cml0eS1hcmNoKSwgYnV0IFNSVFBfQUVTMTI4X0NN
X1NIQTFfMzIgaXMgYWxsb3dlZCBhcworICAvLyB3ZWxsLCBhbmQgc2F2ZXMgYSBmZXcgYnl0ZXMg
cGVyIHBhY2tldCBpZiBpdCBlbmRzIHVwIHNlbGVjdGVkLgorICAvLyBBcyB0aGUgY2lwaGVyIHN1
aXRlIGlzIHBvdGVudGlhbGx5IGluc2VjdXJlLCBpdCB3aWxsIG9ubHkgYmUgdXNlZCBpZgorICAv
LyBlbmFibGVkIGJ5IGJvdGggcGVlcnMuCisgIGlmIChzcnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8z
Ml9jcnlwdG9fY2lwaGVyKSB7CisgICAgY3J5cHRvX3N1aXRlcy5wdXNoX2JhY2socnRjOjpTUlRQ
X0FFUzEyOF9DTV9TSEExXzMyKTsKKyAgfQorICBjcnlwdG9fc3VpdGVzLnB1c2hfYmFjayhydGM6
OlNSVFBfQUVTMTI4X0NNX1NIQTFfODApOworICByZXR1cm4gY3J5cHRvX3N1aXRlczsKK30KKwor
Ym9vbCBDcnlwdG9PcHRpb25zOjpvcGVyYXRvcj09KGNvbnN0IENyeXB0b09wdGlvbnMmIG90aGVy
KSBjb25zdCB7CisgIHN0cnVjdCBkYXRhX2JlaW5nX3Rlc3RlZF9mb3JfZXF1YWxpdHkgeworICAg
IHN0cnVjdCBTcnRwIHsKKyAgICAgIGJvb2wgZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzOworICAg
ICAgYm9vbCBlbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlcjsKKyAgICAgIGJvb2wg
ZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnM7CisgICAgfSBzcnRwOworICAg
IHN0cnVjdCBTRnJhbWUgeworICAgICAgYm9vbCByZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb247Cisg
ICAgfSBzZnJhbWU7CisgIH07CisgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRhdGFfYmVpbmdfdGVz
dGVkX2Zvcl9lcXVhbGl0eSkgPT0gc2l6ZW9mKCp0aGlzKSwKKyAgICAgICAgICAgICAgICAiRGlk
IHlvdSBhZGQgc29tZXRoaW5nIHRvIENyeXB0b09wdGlvbnMgYW5kIGZvcmdldCB0byAiCisgICAg
ICAgICAgICAgICAgInVwZGF0ZSBvcGVyYXRvcj09PyIpOworCisgIHJldHVybiBzcnRwLmVuYWJs
ZV9nY21fY3J5cHRvX3N1aXRlcyA9PSBvdGhlci5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRl
cyAmJgorICAgICAgICAgc3J0cC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9
PQorICAgICAgICAgICAgIG90aGVyLnNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19j
aXBoZXIgJiYKKyAgICAgICAgIHNydHAuZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVu
c2lvbnMgPT0KKyAgICAgICAgICAgICBvdGhlci5zcnRwLmVuYWJsZV9lbmNyeXB0ZWRfcnRwX2hl
YWRlcl9leHRlbnNpb25zICYmCisgICAgICAgICBzZnJhbWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0
aW9uID09CisgICAgICAgICAgICAgb3RoZXIuc2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlv
bjsKK30KKworYm9vbCBDcnlwdG9PcHRpb25zOjpvcGVyYXRvciE9KGNvbnN0IENyeXB0b09wdGlv
bnMmIG90aGVyKSBjb25zdCB7CisgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNzMwYWIyMDg5NTk4MDA3MDI4NTdkOWY0NjljOTRkNjU5YThmYjlkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqICBD
b3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworI2lmbmRlZiBBUElfQ1JZUFRPX0NSWVBUT09QVElPTlNfSF8KKyNkZWZpbmUg
QVBJX0NSWVBUT19DUllQVE9PUFRJT05TX0hfCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVz
cGFjZSB3ZWJydGMgeworCisvLyBDcnlwdG9PcHRpb25zIGRlZmluZXMgYWR2YW5jZWQgY3J5cHRv
Z3JhcGhpYyBzZXR0aW5ncyBmb3IgbmF0aXZlIFdlYlJUQy4KKy8vIFRoZXNlIHNldHRpbmdzIG11
c3QgYmUgcGFzc2VkIGludG8gUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlOjpPcHRpb25z
CisvLyBhbmQgYXJlIG9ubHkgYXBwbGljYWJsZSB0byBuYXRpdmUgdXNlIGNhc2VzIG9mIFdlYlJU
Qy4KK3N0cnVjdCBDcnlwdG9PcHRpb25zIHsKKyAgQ3J5cHRvT3B0aW9ucygpOworICBDcnlwdG9P
cHRpb25zKGNvbnN0IENyeXB0b09wdGlvbnMmIG90aGVyKTsKKyAgfkNyeXB0b09wdGlvbnMoKTsK
KworICAvLyBIZWxwZXIgbWV0aG9kIHRvIHJldHVybiBhbiBpbnN0YW5jZSBvZiB0aGUgQ3J5cHRv
T3B0aW9ucyB3aXRoIEdDTSBjcnlwdG8KKyAgLy8gc3VpdGVzIGRpc2FibGVkLiBUaGlzIG1ldGhv
ZCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGRlcGVuZGluZyBvbiBjdXJyZW50CisgIC8vIGRl
ZmF1bHQgdmFsdWVzIHNldCBieSB0aGUgY29uc3RydWN0b3IuCisgIHN0YXRpYyBDcnlwdG9PcHRp
b25zIE5vR2NtKCk7CisKKyAgLy8gUmV0dXJucyBhIGxpc3Qgb2YgdGhlIHN1cHBvcnRlZCBEVExT
LVNSVFAgQ3J5cHRvIHN1aXRlcyBiYXNlZCBvbiB0aGlzIHNldAorICAvLyBvZiBjcnlwdG8gb3B0
aW9ucy4KKyAgc3RkOjp2ZWN0b3I8aW50PiBHZXRTdXBwb3J0ZWREdGxzU3J0cENyeXB0b1N1aXRl
cygpIGNvbnN0OworCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDcnlwdG9PcHRpb25zJiBvdGhl
cikgY29uc3Q7CisgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDcnlwdG9PcHRpb25zJiBvdGhlcikg
Y29uc3Q7CisKKyAgLy8gU1JUUCBSZWxhdGVkIFBlZXIgQ29ubmVjdGlvbiBvcHRpb25zLgorICBz
dHJ1Y3QgU3J0cCB7CisgICAgLy8gRW5hYmxlIEdDTSBjcnlwdG8gc3VpdGVzIGZyb20gUkZDIDc3
MTQgZm9yIFNSVFAuIEdDTSB3aWxsIG9ubHkgYmUgdXNlZAorICAgIC8vIGlmIGJvdGggc2lkZXMg
ZW5hYmxlIGl0LgorICAgIGJvb2wgZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gZmFsc2U7CisK
KyAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgdGhlIChwb3RlbnRpYWxseSBpbnNlY3VyZSkgY3J5cHRv
IGNpcGhlcgorICAgIC8vIFNSVFBfQUVTMTI4X0NNX1NIQTFfMzIgd2lsbCBiZSBpbmNsdWRlZCBp
biB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2lwaGVycworICAgIC8vIGR1cmluZyBuZWdvdGlhdGlv
bi4gSXQgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYm90aCBwZWVycyBzdXBwb3J0IGl0IGFuZCBubwor
ICAgIC8vIG90aGVyIGNpcGhlcnMgZ2V0IHByZWZlcnJlZC4KKyAgICBib29sIGVuYWJsZV9hZXMx
Mjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gZmFsc2U7CisKKyAgICAvLyBJZiBzZXQgdG8gdHJ1
ZSwgZW5jcnlwdGVkIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyBhcyBkZWZpbmVkIGluIFJGQyA2OTA0
CisgICAgLy8gd2lsbCBiZSBuZWdvdGlhdGVkLiBUaGV5IHdpbGwgb25seSBiZSB1c2VkIGlmIGJv
dGggcGVlcnMgc3VwcG9ydCB0aGVtLgorICAgIGJvb2wgZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVh
ZGVyX2V4dGVuc2lvbnMgPSBmYWxzZTsKKyAgfSBzcnRwOworCisgIC8vIE9wdGlvbnMgdG8gYmUg
dXNlZCB3aGVuIHRoZSBGcmFtZUVuY3J5cHRvciAvIEZyYW1lRGVjcnlwdG9yIEFQSXMgYXJlIHVz
ZWQuCisgIHN0cnVjdCBTRnJhbWUgeworICAgIC8vIElmIHNldCBhbGwgUnRwU2VuZGVycyBtdXN0
IGhhdmUgYW4gRnJhbWVFbmNyeXB0b3IgYXR0YWNoZWQgdG8gdGhlbSBiZWZvcmUKKyAgICAvLyB0
aGV5IGFyZSBhbGxvd2VkIHRvIHNlbmQgcGFja2V0cy4gQWxsIFJ0cFJlY2VpdmVycyBtdXN0IGhh
dmUgYQorICAgIC8vIEZyYW1lRGVjcnlwdG9yIGF0dGFjaGVkIHRvIHRoZW0gYmVmb3JlIHRoZXkg
YXJlIGFibGUgdG8gcmVjZWl2ZSBwYWNrZXRzLgorICAgIGJvb2wgcmVxdWlyZV9mcmFtZV9lbmNy
eXB0aW9uID0gZmFsc2U7CisgIH0gc2ZyYW1lOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YworCisjZW5kaWYgIC8vIEFQSV9DUllQVE9fQ1JZUFRPT1BUSU9OU19IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyeXB0b3BhcmFt
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2NyeXB0
b3BhcmFtcy5oCmluZGV4IDIzNTA1MjgzNThmMjZlMDEyYjMwZmExNjA1NzZjMjEyOTRlMzI1YTMu
LmFiZTkwNTU0NjIyOWM4MzI3ZTJkN2E5YzY4NWY4ZWU0NDY5OGRiMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9jcnlwdG9wYXJhbXMu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvY3J5
cHRvcGFyYW1zLmgKQEAgLTE2LDYgKzE2LDggQEAKIG5hbWVzcGFjZSBjcmlja2V0IHsKIAogLy8g
UGFyYW1ldGVycyBmb3IgU1JUUCBuZWdvdGlhdGlvbiwgYXMgZGVzY3JpYmVkIGluIFJGQyA0NTY4
LgorLy8gVE9ETyhiZW53cmlnaHQpIC0gUmVuYW1lIHRvIFNydHBDcnlwdG9QYXJhbXMgYXMgdGhl
c2Ugb25seSBhcHBseSB0byBTUlRQIGFuZAorLy8gbm90IGdlbmVyaWMgY3J5cHRvIHBhcmFtZXRl
cnMgZm9yIFdlYlJUQy4KIHN0cnVjdCBDcnlwdG9QYXJhbXMgewogICBDcnlwdG9QYXJhbXMoKSA6
IHRhZygwKSB7fQogICBDcnlwdG9QYXJhbXMoaW50IHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvZGF0YWNoYW5uZWxpbnRlcmZhY2Uu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9kYXRhY2hh
bm5lbGludGVyZmFjZS5oCmluZGV4IGEwZDJiM2I1MWE1OTg1OGIxYmE4NGZkZWFlOGI2OTEzM2Qx
OWNjZTkuLjdjYjU1ODIyMzM3ZjgwNDViM2YwOTk4NTQ2MjEzZjFhZTEwMzNkYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9kYXRhY2hh
bm5lbGludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9kYXRhY2hhbm5lbGludGVyZmFjZS5oCkBAIC0xNCw2ICsxNCw4IEBACiAjaWZu
ZGVmIEFQSV9EQVRBQ0hBTk5FTElOVEVSRkFDRV9IXwogI2RlZmluZSBBUElfREFUQUNIQU5ORUxJ
TlRFUkZBQ0VfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgog
I2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2pzZXAu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcC5j
YwppbmRleCA1MmE2MGY5NWUzMmU5MGFkMjE5NmI2NzFkODM3YzJhNTQ3MThlMDhhLi4wMWY1NzIw
NTYzZDkwODM0N2Y1ZGNiNWY0MzgxYjliMjFjNGJiOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcC5jYwpAQCAtMzgsNCAr
MzgsMzIgQEAgdm9pZCBTZXRTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlcjo6T25GYWlsdXJlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBlcnJvcikgewogICBPbkZhaWx1cmUoUlRDRXJyb3IoUlRDRXJyb3JU
eXBlOjpJTlRFUk5BTF9FUlJPUiwgc3RkOjpzdHJpbmcoZXJyb3IpKSk7CiB9CiAKK2NvbnN0IGNo
YXIgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprT2ZmZXJbXSA9ICJvZmZlciI7Citjb25z
dCBjaGFyIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6a1ByQW5zd2VyW10gPSAicHJhbnN3
ZXIiOworY29uc3QgY2hhciBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtBbnN3ZXJbXSA9
ICJhbnN3ZXIiOworCitjb25zdCBjaGFyKiBTZHBUeXBlVG9TdHJpbmcoU2RwVHlwZSB0eXBlKSB7
CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgU2RwVHlwZTo6a09mZmVyOgorICAgICAgcmV0
dXJuIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6a09mZmVyOworICAgIGNhc2UgU2RwVHlw
ZTo6a1ByQW5zd2VyOgorICAgICAgcmV0dXJuIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6
a1ByQW5zd2VyOworICAgIGNhc2UgU2RwVHlwZTo6a0Fuc3dlcjoKKyAgICAgIHJldHVybiBTZXNz
aW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtBbnN3ZXI7CisgIH0KKyAgcmV0dXJuICIiOworfQor
CithYnNsOjpvcHRpb25hbDxTZHBUeXBlPiBTZHBUeXBlRnJvbVN0cmluZyhjb25zdCBzdGQ6OnN0
cmluZyYgdHlwZV9zdHIpIHsKKyAgaWYgKHR5cGVfc3RyID09IFNlc3Npb25EZXNjcmlwdGlvbklu
dGVyZmFjZTo6a09mZmVyKSB7CisgICAgcmV0dXJuIFNkcFR5cGU6OmtPZmZlcjsKKyAgfSBlbHNl
IGlmICh0eXBlX3N0ciA9PSBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtQckFuc3dlcikg
eworICAgIHJldHVybiBTZHBUeXBlOjprUHJBbnN3ZXI7CisgIH0gZWxzZSBpZiAodHlwZV9zdHIg
PT0gU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprQW5zd2VyKSB7CisgICAgcmV0dXJuIFNk
cFR5cGU6OmtBbnN3ZXI7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7Cisg
IH0KK30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2pzZXAuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9qc2VwLmgKaW5kZXggNGQ0YmNjMGJmYjYy
ZWQwMzRiOTc4Njg5YmRkYWM3YzNiNDgyNjI2Ni4uMWM1MDQ1NWQwNGRmOTc2NGRmYmZhNzc3Mjhi
MjA1ZTVkZTc2ODA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL2pzZXAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvanNlcC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3JlZmNvdW50LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBv
cnQuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewogY2xhc3MgQ2FuZGlkYXRlOwpAQCAtNzMsMTMg
Kzc0LDEzIEBAIGNsYXNzIEljZUNhbmRpZGF0ZUludGVyZmFjZSB7CiAvLyBDcmVhdGVzIGEgSWNl
Q2FuZGlkYXRlSW50ZXJmYWNlIGJhc2VkIG9uIFNEUCBzdHJpbmcuCiAvLyBSZXR1cm5zIG51bGwg
aWYgdGhlIHNkcCBzdHJpbmcgY2FuJ3QgYmUgcGFyc2VkLgogLy8gfGVycm9yfCBtYXkgYmUgbnVs
bC4KLUljZUNhbmRpZGF0ZUludGVyZmFjZSogQ3JlYXRlSWNlQ2FuZGlkYXRlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBzZHBfbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNkcF9tbGluZV9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzZHAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTZHBQYXJzZUVycm9yKiBlcnJvcik7CitSVENfRVhQT1JUIElj
ZUNhbmRpZGF0ZUludGVyZmFjZSogQ3JlYXRlSWNlQ2FuZGlkYXRlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBzZHBfbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc2RwX21saW5lX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc2RwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBQYXJzZUVy
cm9yKiBlcnJvcik7CiAKIC8vIENyZWF0ZXMgYW4gSWNlQ2FuZGlkYXRlSW50ZXJmYWNlIGJhc2Vk
IG9uIGEgcGFyc2VkIGNhbmRpZGF0ZSBzdHJ1Y3R1cmUuCi1zdGQ6OnVuaXF1ZV9wdHI8SWNlQ2Fu
ZGlkYXRlSW50ZXJmYWNlPiBDcmVhdGVJY2VDYW5kaWRhdGUoCitSVENfRVhQT1JUIHN0ZDo6dW5p
cXVlX3B0cjxJY2VDYW5kaWRhdGVJbnRlcmZhY2U+IENyZWF0ZUljZUNhbmRpZGF0ZSgKICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgc2RwX21pZCwKICAgICBpbnQgc2RwX21saW5lX2luZGV4LAogICAg
IGNvbnN0IGNyaWNrZXQ6OkNhbmRpZGF0ZSYgY2FuZGlkYXRlKTsKQEAgLTEyMSw3ICsxMjIsNyBA
QCBhYnNsOjpvcHRpb25hbDxTZHBUeXBlPiBTZHBUeXBlRnJvbVN0cmluZyhjb25zdCBzdGQ6OnN0
cmluZyYgdHlwZV9zdHIpOwogLy8gYW5kIGlzIHRoZXJlZm9yZSBub3QgZXhwZWN0ZWQgdG8gYmUg
dGhyZWFkIHNhZmUuCiAvLwogLy8gQW4gaW5zdGFuY2UgY2FuIGJlIGNyZWF0ZWQgYnkgQ3JlYXRl
U2Vzc2lvbkRlc2NyaXB0aW9uLgotY2xhc3MgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlIHsK
K2NsYXNzIFJUQ19FWFBPUlQgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlIHsKICBwdWJsaWM6
CiAgIC8vIFN0cmluZyByZXByZXNlbnRhdGlvbnMgb2YgdGhlIHN1cHBvcnRlZCBTRFAgdHlwZXMu
CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtPZmZlcltdOwpAQCAtMTgxLDIxICsxODIsMjEgQEAgY2xh
c3MgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlIHsKIC8vIHxlcnJvcnwgbWF5IGJlIG51bGwu
CiAvLyBUT0RPKHN0ZXZlYW50b24pOiBUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuIFBsZWFz
ZSB1c2UgdGhlIGZ1bmN0aW9ucyBiZWxvdwogLy8gd2hpY2ggdGFrZSBhbiBTZHBUeXBlIGVudW0g
aW5zdGVhZC4gUmVtb3ZlIHRoaXMgb25jZSBpdCBpcyBubyBsb25nZXIgdXNlZC4KLVNlc3Npb25E
ZXNjcmlwdGlvbkludGVyZmFjZSogQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uKGNvbnN0IHN0ZDo6
c3RyaW5nJiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNkcCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yKTsK
K1JUQ19FWFBPUlQgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlKiBDcmVhdGVTZXNzaW9uRGVz
Y3JpcHRpb24oCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGUsCisgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHNkcCwKKyAgICBTZHBQYXJzZUVycm9yKiBlcnJvcik7CiAKIC8vIENyZWF0ZXMgYSBT
ZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UgYmFzZWQgb24gdGhlIFNEUCBzdHJpbmcgYW5kIHRo
ZSB0eXBlLgogLy8gUmV0dXJucyBudWxsIGlmIHRoZSBTRFAgc3RyaW5nIGNhbm5vdCBiZSBwYXJz
ZWQuCiAvLyBJZiB1c2luZyB0aGUgc2lnbmF0dXJlIHdpdGggfGVycm9yX291dHwsIGRldGFpbHMg
b2YgdGhlIHBhcnNpbmcgZXJyb3IgbWF5IGJlCiAvLyB3cml0dGVuIHRvIHxlcnJvcl9vdXR8IGlm
IGl0IGlzIG5vdCBudWxsLgotc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbkludGVy
ZmFjZT4gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uKAotICAgIFNkcFR5cGUgdHlwZSwKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyYgc2RwKTsKLXN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRp
b25JbnRlcmZhY2U+IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbigKLSAgICBTZHBUeXBlIHR5cGUs
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNkcCwKLSAgICBTZHBQYXJzZUVycm9yKiBlcnJvcl9v
dXQpOworUlRDX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJm
YWNlPgorQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uKFNkcFR5cGUgdHlwZSwgY29uc3Qgc3RkOjpz
dHJpbmcmIHNkcCk7CitSVENfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRp
b25JbnRlcmZhY2U+CitDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb24oU2RwVHlwZSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzZHAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgU2RwUGFyc2VFcnJvciogZXJyb3Jfb3V0KTsKIAogLy8gQ3JlYXRlcyBh
IFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSBiYXNlZCBvbiBhIHBhcnNlZCBTRFAgc3RydWN0
dXJlIGFuZCB0aGUKIC8vIGdpdmVuIHR5cGUsIElEIGFuZCB2ZXJzaW9uLgpAQCAtMjA2LDcgKzIw
Nyw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+IENyZWF0
ZVNlc3Npb25EZXNjcmlwdGlvbigKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6U2Vzc2lv
bkRlc2NyaXB0aW9uPiBkZXNjcmlwdGlvbik7CiAKIC8vIENyZWF0ZU9mZmVyIGFuZCBDcmVhdGVB
bnN3ZXIgY2FsbGJhY2sgaW50ZXJmYWNlLgotY2xhc3MgQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9u
T2JzZXJ2ZXIgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CitjbGFzcyBSVENfRVhQ
T1JUIENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyCisgICAgOiBwdWJsaWMgcnRjOjpS
ZWZDb3VudEludGVyZmFjZSB7CiAgcHVibGljOgogICAvLyBUaGlzIGNhbGxiYWNrIHRyYW5zZmVy
cyB0aGUgb3duZXJzaGlwIG9mIHRoZSB8ZGVzY3wuCiAgIC8vIFRPRE8oZGVhZGJlZWYpOiBNYWtl
IHRoaXMgdGFrZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8PiB0byBhdm9pZCBjb25mdXNpb24KQEAgLTIy
Nyw3ICsyMjksNyBAQCBjbGFzcyBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciA6IHB1
YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKIH07CiAKIC8vIFNldExvY2FsRGVzY3JpcHRp
b24gYW5kIFNldFJlbW90ZURlc2NyaXB0aW9uIGNhbGxiYWNrIGludGVyZmFjZS4KLWNsYXNzIFNl
dFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZh
Y2UgeworY2xhc3MgUlRDX0VYUE9SVCBTZXRTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciA6IHB1
YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgdm9pZCBP
blN1Y2Nlc3MoKSA9IDA7CiAgIC8vIFNlZSBkZXNjcmlwdGlvbiBpbiBDcmVhdGVTZXNzaW9uRGVz
Y3JpcHRpb25PYnNlcnZlciBmb3IgT25GYWlsdXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2pzZXBpY2VjYW5kaWRhdGUuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcGljZWNhbmRp
ZGF0ZS5jYwppbmRleCBiOWJhMmZlYTI5YWFhYWQ2MmMwYmNmODMyYmE4NjgzZmM3MDJlYzA0Li5l
ZDJmNzkyN2YyNzJiMzRkZTM2ZDNkYzAzZjBjNjMwMDQxZWRhYTNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcGljZWNhbmRpZGF0
ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
anNlcGljZWNhbmRpZGF0ZS5jYwpAQCAtMTAsNiArMTAsOSBAQAogCiAjaW5jbHVkZSAiYXBpL2pz
ZXBpY2VjYW5kaWRhdGUuaCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx1dGls
aXR5PgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogc3RkOjpzdHJpbmcgSnNlcEljZUNhbmRpZGF0
ZTo6c2RwX21pZCgpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9qc2VwaWNlY2FuZGlkYXRlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvanNlcGljZWNhbmRpZGF0ZS5oCmluZGV4
IDUwNTIwZmU3Mjc5YjJhNjY5NmMwNWQzYmZjZmVhMDAxZGYwMjc5NTEuLjljYzc0NDNmM2ZiYmRj
Nzg0ZmQ3YjUxYmZkYmE5YzE4NzFiNDM4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9qc2VwaWNlY2FuZGlkYXRlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2pzZXBpY2VjYW5kaWRh
dGUuaApAQCAtMTQsOCArMTQsOCBAQAogI2lmbmRlZiBBUElfSlNFUElDRUNBTkRJREFURV9IXwog
I2RlZmluZSBBUElfSlNFUElDRUNBTkRJREFURV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAj
aW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgog
CiAjaW5jbHVkZSAiYXBpL2NhbmRpZGF0ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2Uu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFf
dHJhbnNwb3J0X2ludGVyZmFjZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjIyM2FhNzg4MDIyZTdhNzlmOGM5
ODcwYjdiYThkYjUxYTgyMDg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuY2MK
QEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKy8vIFRoaXMgaXMgRVhQRVJJ
TUVOVEFMIGludGVyZmFjZSBmb3IgbWVkaWEgdHJhbnNwb3J0LgorLy8KKy8vIFRoZSBnb2FsIGlz
IHRvIHJlZmFjdG9yIFdlYlJUQyBjb2RlIHNvIHRoYXQgYXVkaW8gYW5kIHZpZGVvIGZyYW1lcwor
Ly8gYXJlIHNlbnQgLyByZWNlaXZlZCB0aHJvdWdoIHRoZSBtZWRpYSB0cmFuc3BvcnQgaW50ZXJm
YWNlLiBUaGlzIHdpbGwKKy8vIGVuYWJsZSBkaWZmZXJlbnQgbWVkaWEgdHJhbnNwb3J0IGltcGxl
bWVudGF0aW9ucywgaW5jbHVkaW5nIFFVSUMtYmFzZWQKKy8vIG1lZGlhIHRyYW5zcG9ydC4KKwor
I2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlIDxj
c3RkaW50PgorI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitNZWRp
YVRyYW5zcG9ydFNldHRpbmdzOjpNZWRpYVRyYW5zcG9ydFNldHRpbmdzKCkgPSBkZWZhdWx0Owor
TWVkaWFUcmFuc3BvcnRTZXR0aW5nczo6TWVkaWFUcmFuc3BvcnRTZXR0aW5ncyhjb25zdCBNZWRp
YVRyYW5zcG9ydFNldHRpbmdzJikgPQorICAgIGRlZmF1bHQ7CitNZWRpYVRyYW5zcG9ydFNldHRp
bmdzJiBNZWRpYVRyYW5zcG9ydFNldHRpbmdzOjpvcGVyYXRvcj0oCisgICAgY29uc3QgTWVkaWFU
cmFuc3BvcnRTZXR0aW5ncyYpID0gZGVmYXVsdDsKK01lZGlhVHJhbnNwb3J0U2V0dGluZ3M6On5N
ZWRpYVRyYW5zcG9ydFNldHRpbmdzKCkgPSBkZWZhdWx0OworCitNZWRpYVRyYW5zcG9ydEVuY29k
ZWRBdWRpb0ZyYW1lOjp+TWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSgpIHt9CisKK01l
ZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6Ok1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlv
RnJhbWUoCisgICAgaW50IHNhbXBsaW5nX3JhdGVfaHosCisgICAgaW50IHN0YXJ0aW5nX3NhbXBs
ZV9pbmRleCwKKyAgICBpbnQgc2FtcGxlc19wZXJfY2hhbm5lbCwKKyAgICBpbnQgc2VxdWVuY2Vf
bnVtYmVyLAorICAgIEZyYW1lVHlwZSBmcmFtZV90eXBlLAorICAgIHVpbnQ4X3QgcGF5bG9hZF90
eXBlLAorICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGVuY29kZWRfZGF0YSkKKyAgICA6IHNhbXBs
aW5nX3JhdGVfaHpfKHNhbXBsaW5nX3JhdGVfaHopLAorICAgICAgc3RhcnRpbmdfc2FtcGxlX2lu
ZGV4XyhzdGFydGluZ19zYW1wbGVfaW5kZXgpLAorICAgICAgc2FtcGxlc19wZXJfY2hhbm5lbF8o
c2FtcGxlc19wZXJfY2hhbm5lbCksCisgICAgICBzZXF1ZW5jZV9udW1iZXJfKHNlcXVlbmNlX251
bWJlciksCisgICAgICBmcmFtZV90eXBlXyhmcmFtZV90eXBlKSwKKyAgICAgIHBheWxvYWRfdHlw
ZV8ocGF5bG9hZF90eXBlKSwKKyAgICAgIGVuY29kZWRfZGF0YV8oc3RkOjptb3ZlKGVuY29kZWRf
ZGF0YSkpIHt9CisKK01lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUmIE1lZGlhVHJhbnNw
b3J0RW5jb2RlZEF1ZGlvRnJhbWU6Om9wZXJhdG9yPSgKKyAgICBjb25zdCBNZWRpYVRyYW5zcG9y
dEVuY29kZWRBdWRpb0ZyYW1lJikgPSBkZWZhdWx0OworCitNZWRpYVRyYW5zcG9ydEVuY29kZWRB
dWRpb0ZyYW1lJiBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lOjpvcGVyYXRvcj0oCisg
ICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSYmKSA9IGRlZmF1bHQ7CisKK01lZGlh
VHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6Ok1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJh
bWUoCisgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSYpID0gZGVmYXVs
dDsKKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6TWVkaWFUcmFuc3BvcnRFbmNv
ZGVkQXVkaW9GcmFtZSgKKyAgICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lJiYpID0g
ZGVmYXVsdDsKKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZTo6fk1lZGlhVHJhbnNw
b3J0RW5jb2RlZFZpZGVvRnJhbWUoKSB7fQorCitNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0Zy
YW1lOjpNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lKAorICAgIGludDY0X3QgZnJhbWVf
aWQsCisgICAgc3RkOjp2ZWN0b3I8aW50NjRfdD4gcmVmZXJlbmNlZF9mcmFtZV9pZHMsCisgICAg
VmlkZW9Db2RlY1R5cGUgY29kZWNfdHlwZSwKKyAgICBjb25zdCB3ZWJydGM6OkVuY29kZWRJbWFn
ZSYgZW5jb2RlZF9pbWFnZSkKKyAgICA6IGNvZGVjX3R5cGVfKGNvZGVjX3R5cGUpLAorICAgICAg
ZW5jb2RlZF9pbWFnZV8oZW5jb2RlZF9pbWFnZSksCisgICAgICBmcmFtZV9pZF8oZnJhbWVfaWQp
LAorICAgICAgcmVmZXJlbmNlZF9mcmFtZV9pZHNfKHN0ZDo6bW92ZShyZWZlcmVuY2VkX2ZyYW1l
X2lkcykpIHt9CisKK01lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmIE1lZGlhVHJhbnNw
b3J0RW5jb2RlZFZpZGVvRnJhbWU6Om9wZXJhdG9yPSgKKyAgICBjb25zdCBNZWRpYVRyYW5zcG9y
dEVuY29kZWRWaWRlb0ZyYW1lJikgPSBkZWZhdWx0OworCitNZWRpYVRyYW5zcG9ydEVuY29kZWRW
aWRlb0ZyYW1lJiBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lOjpvcGVyYXRvcj0oCisg
ICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSYmKSA9IGRlZmF1bHQ7CisKK01lZGlh
VHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWU6Ok1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJh
bWUoCisgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSYpID0gZGVmYXVs
dDsKKworTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZTo6TWVkaWFUcmFuc3BvcnRFbmNv
ZGVkVmlkZW9GcmFtZSgKKyAgICBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJiYpID0g
ZGVmYXVsdDsKKworU2VuZERhdGFQYXJhbXM6OlNlbmREYXRhUGFyYW1zKCkgPSBkZWZhdWx0Owor
CitSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydEludGVyZmFjZT4+CitN
ZWRpYVRyYW5zcG9ydEZhY3Rvcnk6OkNyZWF0ZU1lZGlhVHJhbnNwb3J0KAorICAgIHJ0Yzo6UGFj
a2V0VHJhbnNwb3J0SW50ZXJuYWwqIHBhY2tldF90cmFuc3BvcnQsCisgICAgcnRjOjpUaHJlYWQq
IG5ldHdvcmtfdGhyZWFkLAorICAgIGJvb2wgaXNfY2FsbGVyKSB7CisgIE1lZGlhVHJhbnNwb3J0
U2V0dGluZ3Mgc2V0dGluZ3M7CisgIHNldHRpbmdzLmlzX2NhbGxlciA9IGlzX2NhbGxlcjsKKyAg
cmV0dXJuIENyZWF0ZU1lZGlhVHJhbnNwb3J0KHBhY2tldF90cmFuc3BvcnQsIG5ldHdvcmtfdGhy
ZWFkLCBzZXR0aW5ncyk7Cit9CisKK1JUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhVHJh
bnNwb3J0SW50ZXJmYWNlPj4KK01lZGlhVHJhbnNwb3J0RmFjdG9yeTo6Q3JlYXRlTWVkaWFUcmFu
c3BvcnQoCisgICAgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9y
dCwKKyAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgY29uc3QgTWVkaWFUcmFu
c3BvcnRTZXR0aW5ncyYgc2V0dGluZ3MpIHsKKyAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YVRyYW5zcG9ydEludGVyZmFjZT4obnVsbHB0cik7Cit9CisKK2Fic2w6Om9wdGlvbmFsPFRhcmdl
dFRyYW5zZmVyUmF0ZT4KK01lZGlhVHJhbnNwb3J0SW50ZXJmYWNlOjpHZXRMYXRlc3RUYXJnZXRU
cmFuc2ZlclJhdGUoKSB7CisgIHJldHVybiBhYnNsOjpudWxsb3B0OworfQorCit2b2lkIE1lZGlh
VHJhbnNwb3J0SW50ZXJmYWNlOjpTZXROZXR3b3JrQ2hhbmdlQ2FsbGJhY2soCisgICAgTWVkaWFU
cmFuc3BvcnROZXR3b3JrQ2hhbmdlQ2FsbGJhY2sqIGNhbGxiYWNrKSB7fQorCit2b2lkIE1lZGlh
VHJhbnNwb3J0SW50ZXJmYWNlOjpSZW1vdmVUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlcigKKyAg
ICB3ZWJydGM6OlRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKiBvYnNlcnZlcikge30KKwordm9p
ZCBNZWRpYVRyYW5zcG9ydEludGVyZmFjZTo6QWRkVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIo
CisgICAgd2VicnRjOjpUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlciogb2JzZXJ2ZXIpIHt9CisK
K3NpemVfdCBNZWRpYVRyYW5zcG9ydEludGVyZmFjZTo6R2V0QXVkaW9QYWNrZXRPdmVyaGVhZCgp
IGNvbnN0IHsKKyAgcmV0dXJuIDA7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRp
YV90cmFuc3BvcnRfaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oCmluZGV4IDJjODhjZDRj
ZTZhMTUwMmE0NzJlOTU1ZGJjNDM5ZGI1MjFkZDJiZjIuLmIxMGRkNjNhNDY1YzQ1YTk4MmY4NTg5
NTY1ZGVlOThkMjNhYmVhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhX3RyYW5zcG9y
dF9pbnRlcmZhY2UuaApAQCAtMSw1ICsxLDQgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvKiBDb3B5cmln
aHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQogICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQpAQCAtMTgsMTIgKzE3LDE4IEBACiAjaWZuZGVmIEFQSV9N
RURJQV9UUkFOU1BPUlRfSU5URVJGQUNFX0hfCiAjZGVmaW5lIEFQSV9NRURJQV9UUkFOU1BPUlRf
SU5URVJGQUNFX0hfCiAKKyNpbmNsdWRlIDxhcGkvdHJhbnNwb3J0L25ldHdvcmtfY29udHJvbC5o
PgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dXRpbGl0
eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
CisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJhcGkvcnRjZXJyb3IuaCIK
LSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2lu
Y2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY29w
eW9ud3JpdGVidWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3Jrcm91dGUuaCIKIAog
bmFtZXNwYWNlIHJ0YyB7CiBjbGFzcyBQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbDsKQEAgLTMyLDE2
ICszNywzNiBAQCBjbGFzcyBUaHJlYWQ7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCisvLyBBIGNv
bGxlY3Rpb24gb2Ygc2V0dGluZ3MgZm9yIGNyZWF0aW9uIG9mIG1lZGlhIHRyYW5zcG9ydC4KK3N0
cnVjdCBNZWRpYVRyYW5zcG9ydFNldHRpbmdzIGZpbmFsIHsKKyAgTWVkaWFUcmFuc3BvcnRTZXR0
aW5ncygpOworICBNZWRpYVRyYW5zcG9ydFNldHRpbmdzKGNvbnN0IE1lZGlhVHJhbnNwb3J0U2V0
dGluZ3MmKTsKKyAgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyYgb3BlcmF0b3I9KGNvbnN0IE1lZGlh
VHJhbnNwb3J0U2V0dGluZ3MmKTsKKyAgfk1lZGlhVHJhbnNwb3J0U2V0dGluZ3MoKTsKKworICAv
LyBHcm91cCBjYWxscyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQsIGluIDE6MSBjYWxsIG9u
ZSBzaWRlIG11c3Qgc2V0CisgIC8vIGlzX2NhbGxlciA9IHRydWUgYW5kIGFub3RoZXIgaXNfY2Fs
bGVyID0gZmFsc2UuCisgIGJvb2wgaXNfY2FsbGVyOworCisgIC8vIE11c3QgYmUgc2V0IGlmIGEg
cHJlLXNoYXJlZCBrZXkgaXMgdXNlZCBmb3IgdGhlIGNhbGwuCisgIC8vIFRPRE8oYnVncy53ZWJy
dGMub3JnLzk5NDQpOiBUaGlzIHNob3VsZCBiZWNvbWUgemVybyBidWZmZXIgaW4gdGhlIGRpc3Rh
bnQKKyAgLy8gZnV0dXJlLgorICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gcHJlX3NoYXJl
ZF9rZXk7Cit9OworCiAvLyBSZXByZXNlbnRzIGVuY29kZWQgYXVkaW8gZnJhbWUgaW4gYW55IGVu
Y29kaW5nICh0eXBlIG9mIGVuY29kaW5nIGlzIG9wYXF1ZSkuCiAvLyBUbyBhdm9pZCBjb3B5aW5n
IG9mIGVuY29kZWQgZGF0YSB1c2UgbW92ZSBzZW1hbnRpY3Mgd2hlbiBwYXNzaW5nIGJ5IHZhbHVl
LgotY2xhc3MgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSB7CitjbGFzcyBNZWRpYVRy
YW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lIGZpbmFsIHsKICBwdWJsaWM6CiAgIGVudW0gY2xhc3Mg
RnJhbWVUeXBlIHsKICAgICAvLyBOb3JtYWwgYXVkaW8gZnJhbWUgKGVxdWl2YWxlbnQgdG8gd2Vi
cnRjOjprQXVkaW9GcmFtZVNwZWVjaCkuCiAgICAga1NwZWVjaCwKIAogICAgIC8vIERUWCBmcmFt
ZSAoZXF1aXZhbGVudCB0byB3ZWJydGM6OmtBdWRpb0ZyYW1lQ04pLgotICAgIGtEaXNjb3VudGlu
dW91c1RyYW5zbWlzc2lvbiwKKyAgICAvLyBEVFggZnJhbWUgKGVxdWl2YWxlbnQgdG8gd2VicnRj
OjprQXVkaW9GcmFtZUNOKS4KKyAgICBrRGlzY29udGludW91c1RyYW5zbWlzc2lvbiwKKyAgICAv
LyBUT0RPKG5pc3NlKTogTWlzLXNwZWxsZWQgdmVyc2lvbiwgdXBkYXRlIHVzZXJzLCB0aGVuIGRl
bGV0ZS4KKyAgICBrRGlzY291bnRpbnVvdXNUcmFuc21pc3Npb24gPSBrRGlzY29udGludW91c1Ry
YW5zbWlzc2lvbiwKICAgfTsKIAogICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lKApA
QCAtNzUsMTQgKzEwMCwxNSBAQCBjbGFzcyBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1l
IHsKICAgICAgIHVpbnQ4X3QgcGF5bG9hZF90eXBlLAogCiAgICAgICAvLyBWZWN0b3Igd2l0aCBv
cGFxdWUgZW5jb2RlZCBkYXRhLgotICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZW5jb2RlZF9k
YXRhKQotICAgICAgOiBzYW1wbGluZ19yYXRlX2h6XyhzYW1wbGluZ19yYXRlX2h6KSwKLSAgICAg
ICAgc3RhcnRpbmdfc2FtcGxlX2luZGV4XyhzdGFydGluZ19zYW1wbGVfaW5kZXgpLAotICAgICAg
ICBzYW1wbGVzX3Blcl9jaGFubmVsXyhzYW1wbGVzX3Blcl9jaGFubmVsKSwKLSAgICAgICAgc2Vx
dWVuY2VfbnVtYmVyXyhzZXF1ZW5jZV9udW1iZXIpLAotICAgICAgICBmcmFtZV90eXBlXyhmcmFt
ZV90eXBlKSwKLSAgICAgICAgcGF5bG9hZF90eXBlXyhwYXlsb2FkX3R5cGUpLAotICAgICAgICBl
bmNvZGVkX2RhdGFfKHN0ZDo6bW92ZShlbmNvZGVkX2RhdGEpKSB7fQorICAgICAgc3RkOjp2ZWN0
b3I8dWludDhfdD4gZW5jb2RlZF9kYXRhKTsKKworICB+TWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVk
aW9GcmFtZSgpOworICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lKGNvbnN0IE1lZGlh
VHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUmKTsKKyAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVk
aW9GcmFtZSYgb3BlcmF0b3I9KAorICAgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVk
aW9GcmFtZSYgb3RoZXIpOworICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lJiBvcGVy
YXRvcj0oCisgICAgICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lJiYgb3RoZXIpOwor
ICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lKE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1
ZGlvRnJhbWUmJik7CiAKICAgLy8gR2V0dGVycy4KICAgaW50IHNhbXBsaW5nX3JhdGVfaHooKSBj
b25zdCB7IHJldHVybiBzYW1wbGluZ19yYXRlX2h6XzsgfQpAQCAtMTEzLDYgKzEzOSwxNiBAQCBj
bGFzcyBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lIHsKICAgc3RkOjp2ZWN0b3I8dWlu
dDhfdD4gZW5jb2RlZF9kYXRhXzsKIH07CiAKKy8vIENhbGxiYWNrIHRvIG5vdGlmeSBhYm91dCBu
ZXR3b3JrIHJvdXRlIGNoYW5nZXMuCitjbGFzcyBNZWRpYVRyYW5zcG9ydE5ldHdvcmtDaGFuZ2VD
YWxsYmFjayB7CisgcHVibGljOgorICB2aXJ0dWFsIH5NZWRpYVRyYW5zcG9ydE5ldHdvcmtDaGFu
Z2VDYWxsYmFjaygpID0gZGVmYXVsdDsKKworICAvLyBDYWxsZWQgd2hlbiB0aGUgbmV0d29yayBy
b3V0ZSBpcyBjaGFuZ2VkLCB3aXRoIHRoZSBuZXcgbmV0d29yayByb3V0ZS4KKyAgdmlydHVhbCB2
b2lkIE9uTmV0d29ya1JvdXRlQ2hhbmdlZCgKKyAgICAgIGNvbnN0IHJ0Yzo6TmV0d29ya1JvdXRl
JiBuZXdfbmV0d29ya19yb3V0ZSkgPSAwOworfTsKKwogLy8gSW50ZXJmYWNlIGZvciByZWNlaXZp
bmcgZW5jb2RlZCBhdWRpbyBmcmFtZXMgZnJvbSBNZWRpYVRyYW5zcG9ydEludGVyZmFjZQogLy8g
aW1wbGVtZW50YXRpb25zLgogY2xhc3MgTWVkaWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2Ug
ewpAQCAtMTI1LDE2ICsxNjEsMTkgQEAgY2xhc3MgTWVkaWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRl
cmZhY2UgewogfTsKIAogLy8gUmVwcmVzZW50cyBlbmNvZGVkIHZpZGVvIGZyYW1lLCBhbG9uZyB3
aXRoIHRoZSBjb2RlYyBpbmZvcm1hdGlvbi4KLWNsYXNzIE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZp
ZGVvRnJhbWUgeworY2xhc3MgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSBmaW5hbCB7
CiAgcHVibGljOgogICBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lKGludDY0X3QgZnJh
bWVfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50
NjRfdD4gcmVmZXJlbmNlZF9mcmFtZV9pZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmlkZW9Db2RlY1R5cGUgY29kZWNfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB3ZWJydGM6OkVuY29kZWRJbWFnZSYgZW5jb2RlZF9pbWFnZSkKLSAg
ICAgIDogY29kZWNfdHlwZV8oY29kZWNfdHlwZSksCi0gICAgICAgIGVuY29kZWRfaW1hZ2VfKGVu
Y29kZWRfaW1hZ2UpLAotICAgICAgICBmcmFtZV9pZF8oZnJhbWVfaWQpLAotICAgICAgICByZWZl
cmVuY2VkX2ZyYW1lX2lkc18oc3RkOjptb3ZlKHJlZmVyZW5jZWRfZnJhbWVfaWRzKSkge30KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OkVuY29kZWRJbWFn
ZSYgZW5jb2RlZF9pbWFnZSk7CisgIH5NZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lKCk7
CisgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUoY29uc3QgTWVkaWFUcmFuc3BvcnRF
bmNvZGVkVmlkZW9GcmFtZSYpOworICBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJiBv
cGVyYXRvcj0oCisgICAgICBjb25zdCBNZWRpYVRyYW5zcG9ydEVuY29kZWRWaWRlb0ZyYW1lJiBv
dGhlcik7CisgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmIG9wZXJhdG9yPSgKKyAg
ICAgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUmJiBvdGhlcik7CisgIE1lZGlhVHJh
bnNwb3J0RW5jb2RlZFZpZGVvRnJhbWUoTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSYm
KTsKIAogICBWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlKCkgY29uc3QgeyByZXR1cm4gY29kZWNf
dHlwZV87IH0KICAgY29uc3Qgd2VicnRjOjpFbmNvZGVkSW1hZ2UmIGVuY29kZWRfaW1hZ2UoKSBj
b25zdCB7IHJldHVybiBlbmNvZGVkX2ltYWdlXzsgfQpAQCAtMTgzLDYgKzIyMiw4NSBAQCBjbGFz
cyBNZWRpYVRyYW5zcG9ydFZpZGVvU2lua0ludGVyZmFjZSB7CiAgIHZpcnR1YWwgdm9pZCBPbktl
eUZyYW1lUmVxdWVzdGVkKHVpbnQ2NF90IGNoYW5uZWxfaWQpID0gMDsKIH07CiAKKy8vIFN0YXRl
IG9mIHRoZSBtZWRpYSB0cmFuc3BvcnQuICBNZWRpYSB0cmFuc3BvcnQgYmVnaW5zIGluIHRoZSBw
ZW5kaW5nIHN0YXRlLgorLy8gSXQgdHJhbnNpdGlvbnMgdG8gd3JpdGFibGUgd2hlbiBpdCBpcyBy
ZWFkeSB0byBzZW5kIG1lZGlhLiAgSXQgbWF5IHRyYW5zaXRpb24KKy8vIGJhY2sgdG8gcGVuZGlu
ZyBpZiB0aGUgY29ubmVjdGlvbiBpcyBibG9ja2VkLiAgSXQgbWF5IHRyYW5zaXRpb24gdG8gY2xv
c2VkIGF0CisvLyBhbnkgdGltZS4gIENsb3NlZCBpcyB0ZXJtaW5hbDogYSB0cmFuc3BvcnQgd2ls
bCBuZXZlciByZS1vcGVuIG9uY2UgY2xvc2VkLgorZW51bSBjbGFzcyBNZWRpYVRyYW5zcG9ydFN0
YXRlIHsKKyAga1BlbmRpbmcsCisgIGtXcml0YWJsZSwKKyAga0Nsb3NlZCwKK307CisKKy8vIENh
bGxiYWNrIGludm9rZWQgd2hlbmV2ZXIgdGhlIHN0YXRlIG9mIHRoZSBtZWRpYSB0cmFuc3BvcnQg
Y2hhbmdlcy4KK2NsYXNzIE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayB7CisgcHVibGljOgor
ICB2aXJ0dWFsIH5NZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2soKSA9IGRlZmF1bHQ7CisKKyAg
Ly8gSW52b2tlZCB3aGVuZXZlciB0aGUgc3RhdGUgb2YgdGhlIG1lZGlhIHRyYW5zcG9ydCBjaGFu
Z2VzLgorICB2aXJ0dWFsIHZvaWQgT25TdGF0ZUNoYW5nZWQoTWVkaWFUcmFuc3BvcnRTdGF0ZSBz
dGF0ZSkgPSAwOworfTsKKworLy8gU3VwcG9ydGVkIHR5cGVzIG9mIGFwcGxpY2F0aW9uIGRhdGEg
bWVzc2FnZXMuCitlbnVtIGNsYXNzIERhdGFNZXNzYWdlVHlwZSB7CisgIC8vIEFwcGxpY2F0aW9u
IGRhdGEgYnVmZmVyIHdpdGggdGhlIGJpbmFyeSBiaXQgdW5zZXQuCisgIGtUZXh0LAorCisgIC8v
IEFwcGxpY2F0aW9uIGRhdGEgYnVmZmVyIHdpdGggdGhlIGJpbmFyeSBiaXQgc2V0LgorICBrQmlu
YXJ5LAorCisgIC8vIFRyYW5zcG9ydC1hZ25vc3RpYyBjb250cm9sIG1lc3NhZ2VzLCBzdWNoIGFz
IG9wZW4gb3Igb3Blbi1hY2sgbWVzc2FnZXMuCisgIGtDb250cm9sLAorfTsKKworLy8gUGFyYW1l
dGVycyBmb3Igc2VuZGluZyBkYXRhLiAgVGhlIHBhcmFtZXRlcnMgbWF5IGNoYW5nZSBmcm9tIG1l
c3NhZ2UgdG8KKy8vIG1lc3NhZ2UsIGV2ZW4gd2l0aGluIGEgc2luZ2xlIGNoYW5uZWwuICBGb3Ig
ZXhhbXBsZSwgY29udHJvbCBtZXNzYWdlcyBtYXkgYmUKKy8vIHNlbnQgcmVsaWFibHkgYW5kIGlu
LW9yZGVyLCBldmVuIGlmIHRoZSBkYXRhIGNoYW5uZWwgaXMgY29uZmlndXJlZCBmb3IKKy8vIHVu
cmVsaWFibGUgZGVsaXZlcnkuCitzdHJ1Y3QgU2VuZERhdGFQYXJhbXMgeworICBTZW5kRGF0YVBh
cmFtcygpOworCisgIERhdGFNZXNzYWdlVHlwZSB0eXBlID0gRGF0YU1lc3NhZ2VUeXBlOjprVGV4
dDsKKworICAvLyBXaGV0aGVyIHRvIGRlbGl2ZXIgdGhlIG1lc3NhZ2UgaW4gb3JkZXIgd2l0aCBy
ZXNwZWN0IHRvIG90aGVyIG9yZGVyZWQKKyAgLy8gbWVzc2FnZXMgd2l0aCB0aGUgc2FtZSBjaGFu
bmVsX2lkLgorICBib29sIG9yZGVyZWQgPSBmYWxzZTsKKworICAvLyBJZiBzZXQsIHRoZSBtYXhp
bXVtIG51bWJlciBvZiB0aW1lcyB0aGlzIG1lc3NhZ2UgbWF5IGJlCisgIC8vIHJldHJhbnNtaXR0
ZWQgYnkgdGhlIHRyYW5zcG9ydCBiZWZvcmUgaXQgaXMgZHJvcHBlZC4KKyAgLy8gU2V0dGluZyB0
aGlzIHZhbHVlIHRvIHplcm8gZGlzYWJsZXMgcmV0cmFuc21pc3Npb24uCisgIC8vIE11c3QgYmUg
bm9uLW5lZ2F0aXZlLiB8bWF4X3J0eF9jb3VudHwgYW5kIHxtYXhfcnR4X21zfCBtYXkgbm90IGJl
IHNldAorICAvLyBzaW11bHRhbmVvdXNseS4KKyAgYWJzbDo6b3B0aW9uYWw8aW50PiBtYXhfcnR4
X2NvdW50OworCisgIC8vIElmIHNldCwgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25k
cyBmb3Igd2hpY2ggdGhlIHRyYW5zcG9ydAorICAvLyBtYXkgcmV0cmFuc21pdCB0aGlzIG1lc3Nh
Z2UgYmVmb3JlIGl0IGlzIGRyb3BwZWQuCisgIC8vIFNldHRpbmcgdGhpcyB2YWx1ZSB0byB6ZXJv
IGRpc2FibGVzIHJldHJhbnNtaXNzaW9uLgorICAvLyBNdXN0IGJlIG5vbi1uZWdhdGl2ZS4gfG1h
eF9ydHhfY291bnR8IGFuZCB8bWF4X3J0eF9tc3wgbWF5IG5vdCBiZSBzZXQKKyAgLy8gc2ltdWx0
YW5lb3VzbHkuCisgIGFic2w6Om9wdGlvbmFsPGludD4gbWF4X3J0eF9tczsKK307CisKKy8vIFNp
bmsgZm9yIGNhbGxiYWNrcyByZWxhdGVkIHRvIGEgZGF0YSBjaGFubmVsLgorY2xhc3MgRGF0YUNo
YW5uZWxTaW5rIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkRhdGFDaGFubmVsU2luaygpID0gZGVm
YXVsdDsKKworICAvLyBDYWxsYmFjayBpc3N1ZWQgd2hlbiBkYXRhIGlzIHJlY2VpdmVkIGJ5IHRo
ZSB0cmFuc3BvcnQuCisgIHZpcnR1YWwgdm9pZCBPbkRhdGFSZWNlaXZlZChpbnQgY2hhbm5lbF9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFNZXNzYWdlVHlwZSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZl
ciYgYnVmZmVyKSA9IDA7CisKKyAgLy8gQ2FsbGJhY2sgaXNzdWVkIHdoZW4gYSByZW1vdGUgZGF0
YSBjaGFubmVsIGJlZ2lucyB0aGUgY2xvc2luZyBwcm9jZWR1cmUuCisgIC8vIE1lc3NhZ2VzIHNl
bnQgYWZ0ZXIgdGhlIGNsb3NpbmcgcHJvY2VkdXJlIGJlZ2lucyB3aWxsIG5vdCBiZSB0cmFuc21p
dHRlZC4KKyAgdmlydHVhbCB2b2lkIE9uQ2hhbm5lbENsb3NpbmcoaW50IGNoYW5uZWxfaWQpID0g
MDsKKworICAvLyBDYWxsYmFjayBpc3N1ZWQgd2hlbiBhIChyZW1vdGUgb3IgbG9jYWwpIGRhdGEg
Y2hhbm5lbCBjb21wbGV0ZXMgdGhlIGNsb3NpbmcKKyAgLy8gcHJvY2VkdXJlLiAgQ2xvc2luZyBj
aGFubmVscyBiZWNvbWUgY2xvc2VkIGFmdGVyIGFsbCBwZW5kaW5nIGRhdGEgaGFzIGJlZW4KKyAg
Ly8gdHJhbnNtaXR0ZWQuCisgIHZpcnR1YWwgdm9pZCBPbkNoYW5uZWxDbG9zZWQoaW50IGNoYW5u
ZWxfaWQpID0gMDsKK307CisKIC8vIE1lZGlhIHRyYW5zcG9ydCBpbnRlcmZhY2UgZm9yIHNlbmRp
bmcgLyByZWNlaXZpbmcgZW5jb2RlZCBhdWRpby92aWRlbyBmcmFtZXMKIC8vIGFuZCByZWNlaXZp
bmcgYmFuZHdpZHRoIGVzdGltYXRlIHVwZGF0ZSBmcm9tIGNvbmdlc3Rpb24gY29udHJvbC4KIGNs
YXNzIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlIHsKQEAgLTIxNyw4ICszMzUsNjIgQEAgY2xhc3Mg
TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UgewogICAvLyBwYXNzIGEgbnVsbHB0ci4KICAgdmlydHVh
bCB2b2lkIFNldFJlY2VpdmVWaWRlb1NpbmsoTWVkaWFUcmFuc3BvcnRWaWRlb1NpbmtJbnRlcmZh
Y2UqIHNpbmspID0gMDsKIAorICAvLyBBZGRzIGEgdGFyZ2V0IGJpdHJhdGUgb2JzZXJ2ZXIuIEJl
Zm9yZSBtZWRpYSB0cmFuc3BvcnQgaXMgZGVzdHJ1Y3RlZAorICAvLyB0aGUgb2JzZXJ2ZXIgbXVz
dCBiZSB1bnJlZ2lzdGVyZWQgKGJ5IGNhbGxpbmcKKyAgLy8gUmVtb3ZlVGFyZ2V0VHJhbnNmZXJS
YXRlT2JzZXJ2ZXIpLgorICAvLyBBIG5ld2x5IHJlZ2lzdGVyZWQgb2JzZXJ2ZXIgd2lsbCBiZSBj
YWxsZWQgYmFjayB3aXRoIHRoZSBsYXRlc3QgcmVjb3JkZWQKKyAgLy8gdGFyZ2V0IHJhdGUsIGlm
IGF2YWlsYWJsZS4KKyAgdmlydHVhbCB2b2lkIEFkZFRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVy
KAorICAgICAgd2VicnRjOjpUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlciogb2JzZXJ2ZXIpOwor
CisgIC8vIFJlbW92ZXMgYW4gZXhpc3RpbmcgfG9ic2VydmVyfCBmcm9tIG9ic2VydmVycy4gSWYg
b2JzZXJ2ZXIgd2FzIG5ldmVyCisgIC8vIHJlZ2lzdGVyZWQsIGFuIGVycm9yIGlzIGxvZ2dlZCBh
bmQgbWV0aG9kIGRvZXMgbm90aGluZy4KKyAgdmlydHVhbCB2b2lkIFJlbW92ZVRhcmdldFRyYW5z
ZmVyUmF0ZU9ic2VydmVyKAorICAgICAgd2VicnRjOjpUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZl
ciogb2JzZXJ2ZXIpOworCisgIC8vIFJldHVybnMgdGhlIGxhc3Qga25vd24gdGFyZ2V0IHRyYW5z
ZmVyIHJhdGUgYXMgcmVwb3J0ZWQgdG8gdGhlIGFib3ZlCisgIC8vIG9ic2VydmVycy4KKyAgdmly
dHVhbCBhYnNsOjpvcHRpb25hbDxUYXJnZXRUcmFuc2ZlclJhdGU+IEdldExhdGVzdFRhcmdldFRy
YW5zZmVyUmF0ZSgpOworCisgIC8vIEdldHMgdGhlIGF1ZGlvIHBhY2tldCBvdmVyaGVhZCBpbiBi
eXRlcy4gUmV0dXJuZWQgb3ZlcmhlYWQgZG9lcyBub3QgaW5jbHVkZQorICAvLyB0cmFuc3BvcnQg
b3ZlcmhlYWQgKGlwdjQvNiwgdHVybiBjaGFubmVsZGF0YSwgdGNwL3VkcCwgZXRjLikuCisgIC8v
IElmIHRoZSB0cmFuc3BvcnQgaXMgY2FwYWJsZSBvZiBmdXNpbmcgcGFja2V0cyB0b2dldGhlciwg
dGhpcyBvdmVyaGVhZAorICAvLyBtaWdodCBub3QgYmUgYSB2ZXJ5IGFjY3VyYXRlIG51bWJlci4K
KyAgdmlydHVhbCBzaXplX3QgR2V0QXVkaW9QYWNrZXRPdmVyaGVhZCgpIGNvbnN0OworCisgIC8v
IFNldHMgYW4gb2JzZXJ2ZXIgZm9yIG5ldHdvcmsgY2hhbmdlIGV2ZW50cy4gSWYgdGhlIG5ldHdv
cmsgcm91dGUgaXMgYWxyZWFkeQorICAvLyBlc3RhYmxpc2hlZCB3aGVuIHRoZSBjYWxsYmFjayBp
cyBzZXQsIHxjYWxsYmFja3wgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkKKyAgLy8gd2l0aCB0
aGUgY3VycmVudCBuZXR3b3JrIHJvdXRlLgorICAvLyBCZWZvcmUgbWVkaWEgdHJhbnNwb3J0IGlz
IGRlc3Ryb3llZCwgdGhlIGNhbGxiYWNrIG11c3QgYmUgdW5yZWdpc3RlcmVkIGJ5CisgIC8vIHNl
dHRpbmcgaXQgdG8gbnVsbHB0ci4KKyAgdmlydHVhbCB2b2lkIFNldE5ldHdvcmtDaGFuZ2VDYWxs
YmFjaygKKyAgICAgIE1lZGlhVHJhbnNwb3J0TmV0d29ya0NoYW5nZUNhbGxiYWNrKiBjYWxsYmFj
ayk7CisKKyAgLy8gU2V0cyBhIHN0YXRlIG9ic2VydmVyIGNhbGxiYWNrLiBCZWZvcmUgbWVkaWEg
dHJhbnNwb3J0IGlzIGRlc3Ryb3llZCwgdGhlCisgIC8vIGNhbGxiYWNrIG11c3QgYmUgdW5yZWdp
c3RlcmVkIGJ5IHNldHRpbmcgaXQgdG8gbnVsbHB0ci4KKyAgLy8gQSBuZXdseSByZWdpc3RlcmVk
IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUuCisgIC8vIE1l
ZGlhIHRyYW5zcG9ydCBkb2VzIG5vdCBpbnZva2UgdGhpcyBjYWxsYmFjayBjb25jdXJyZW50bHku
CisgIHZpcnR1YWwgdm9pZCBTZXRNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2soCisgICAgICBN
ZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sqIGNhbGxiYWNrKSA9IDA7CisKKyAgLy8gU2VuZHMg
YSBkYXRhIGJ1ZmZlciB0byB0aGUgcmVtb3RlIGVuZHBvaW50IHVzaW5nIHRoZSBnaXZlbiBzZW5k
IHBhcmFtZXRlcnMuCisgIC8vIHxidWZmZXJ8IG1heSBub3QgYmUgbGFyZ2VyIHRoYW4gMjU2IEtp
Qi4gUmV0dXJucyBhbiBlcnJvciBpZiB0aGUgc2VuZAorICAvLyBmYWlscy4KKyAgdmlydHVhbCBS
VENFcnJvciBTZW5kRGF0YShpbnQgY2hhbm5lbF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTZW5kRGF0YVBhcmFtcyYgcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIGJ1ZmZlcikgPSAwOworCisgIC8v
IENsb3NlcyB8Y2hhbm5lbF9pZHwgZ3JhY2VmdWxseS4gIFJldHVybnMgYW4gZXJyb3IgaWYgfGNo
YW5uZWxfaWR8IGlzIG5vdAorICAvLyBvcGVuLiAgRGF0YSBzZW50IGFmdGVyIHRoZSBjbG9zaW5n
IHByb2NlZHVyZSBiZWdpbnMgd2lsbCBub3QgYmUKKyAgLy8gdHJhbnNtaXR0ZWQuIFRoZSBjaGFu
bmVsIGJlY29tZXMgY2xvc2VkIGFmdGVyIHBlbmRpbmcgZGF0YSBpcyB0cmFuc21pdHRlZC4KKyAg
dmlydHVhbCBSVENFcnJvciBDbG9zZUNoYW5uZWwoaW50IGNoYW5uZWxfaWQpID0gMDsKKworICAv
LyBTZXRzIGEgc2luayBmb3IgZGF0YSBtZXNzYWdlcyBhbmQgY2hhbm5lbCBzdGF0ZSBjYWxsYmFj
a3MuIEJlZm9yZSBtZWRpYQorICAvLyB0cmFuc3BvcnQgaXMgZGVzdHJveWVkLCB0aGUgc2luayBt
dXN0IGJlIHVucmVnaXN0ZXJlZCBieSBzZXR0aW5nIGl0IHRvCisgIC8vIG51bGxwdHIuCisgIHZp
cnR1YWwgdm9pZCBTZXREYXRhU2luayhEYXRhQ2hhbm5lbFNpbmsqIHNpbmspID0gMDsKKwogICAv
LyBUT0RPKHN1a2hhbm92KTogUnRjRXZlbnRMb2dzLgotICAvLyBUT0RPKHN1a2hhbm92KTogQmFu
ZHdpZHRoIHVwZGF0ZXMuCiB9OwogCiAvLyBJZiBtZWRpYSB0cmFuc3BvcnQgZmFjdG9yeSBpcyBz
ZXQgaW4gcGVlciBjb25uZWN0aW9uIGZhY3RvcnksIGl0IHdpbGwgYmUKQEAgLTIzNiwxMCArNDA4
LDIxIEBAIGNsYXNzIE1lZGlhVHJhbnNwb3J0RmFjdG9yeSB7CiAgIC8vIC0gRG9lcyBub3QgdGFr
ZSBvd25lcnNoaXAgb2YgcGFja2V0X3RyYW5zcG9ydCBvciBuZXR3b3JrX3RocmVhZC4KICAgLy8g
LSBEb2VzIG5vdCBzdXBwb3J0IGdyb3VwIGNhbGxzLCBpbiAxOjEgY2FsbCBvbmUgc2lkZSBtdXN0
IHNldAogICAvLyAgIGlzX2NhbGxlciA9IHRydWUgYW5kIGFub3RoZXIgaXNfY2FsbGVyID0gZmFs
c2UuCisgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk5MzgpIFRoaXMgY29uc3RydWN0b3Igd2ls
bCBiZSByZW1vdmVkIGFuZCByZXBsYWNlZAorICAvLyB3aXRoIHRoZSBvbmUgYmVsb3cuCisgIHZp
cnR1YWwgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+
PgorICBDcmVhdGVNZWRpYVRyYW5zcG9ydChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiBw
YWNrZXRfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRocmVhZCogbmV0
d29ya190aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfY2FsbGVyKTsKKwor
ICAvLyBDcmVhdGVzIG1lZGlhIHRyYW5zcG9ydC4KKyAgLy8gLSBEb2VzIG5vdCB0YWtlIG93bmVy
c2hpcCBvZiBwYWNrZXRfdHJhbnNwb3J0IG9yIG5ldHdvcmtfdGhyZWFkLgorICAvLyBUT0RPKGJ1
Z3Mud2VicnRjLm9yZy85OTM4KTogcmVtb3ZlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb25jZSBh
bGwgY2hpbGRyZW4KKyAgLy8gb3ZlcnJpZGUgaXQuCiAgIHZpcnR1YWwgUlRDRXJyb3JPcjxzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+PgogICBDcmVhdGVNZWRpYVRyYW5z
cG9ydChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiBwYWNrZXRfdHJhbnNwb3J0LAogICAg
ICAgICAgICAgICAgICAgICAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNfY2FsbGVyKSA9IDA7CisgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IE1lZGlhVHJhbnNwb3J0U2V0dGluZ3MmIHNldHRpbmdzKTsKIH07CiAKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9tZWRpYWNvbnN0cmFpbnRzaW50ZXJmYWNlLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNp
bnRlcmZhY2UuY2MKaW5kZXggNTU2Nzc4NjliZWRkN2MzMjEyNDAwYjg3Y2ZhZTMyNzdhY2MzNGQz
MC4uYjY2YmEwNTAzYWM3ZjU4ZjcxNzBkNjc1OTE4ZGU5YTI0YzZhNjk5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3Ry
YWludHNpbnRlcmZhY2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNpbnRlcmZhY2UuY2MKQEAgLTEwLDcgKzEwLDkg
QEAKIAogI2luY2x1ZGUgImFwaS9tZWRpYWNvbnN0cmFpbnRzaW50ZXJmYWNlLmgiCiAKKyNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0aW9u
aW50ZXJmYWNlLmgiCisjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbmZpZy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhY29uc3Ry
YWludHNpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS9tZWRpYWNvbnN0cmFpbnRzaW50ZXJmYWNlLmgKaW5kZXggYzZhOTE0YWE1NjRmOTgz
MWIxMjhiYTMwODZiYWVmN2E1ODBlMzk3Yy4uYzlhNmUxYjE4ODU4ZGY1OTlhMTNiMmNkMjEwMzU2
NWMwNTk3MGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL21lZGlhY29uc3RyYWludHNpbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFjb25zdHJhaW50c2ludGVy
ZmFjZS5oCkBAIC0yMSwxMCArMjEsMTEgQEAKICNpZm5kZWYgQVBJX01FRElBQ09OU1RSQUlOVFNJ
TlRFUkZBQ0VfSF8KICNkZWZpbmUgQVBJX01FRElBQ09OU1RSQUlOVFNJTlRFUkZBQ0VfSF8KIAor
I2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+
CiAKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlv
X29wdGlvbnMuaCIKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2Uu
Y2MKaW5kZXggNmYwOGEwY2FmMWMxYjEyMzRhYzUxNzc5ZjEzZDVjYWRhOTljNDc0Yy4uOTU1ZTdl
NGM2MDhlZTUwNWZjMGUwYzkwY2RhMzQxNWYxYjBkMWQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9t
ZWRpYXN0cmVhbWludGVyZmFjZS5jYwpAQCAtMTcsMzQgKzE3LDYgQEAgbmFtZXNwYWNlIHdlYnJ0
YyB7CiBjb25zdCBjaGFyIE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U6OmtWaWRlb0tpbmRbXSA9
ICJ2aWRlbyI7CiBjb25zdCBjaGFyIE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U6OmtBdWRpb0tp
bmRbXSA9ICJhdWRpbyI7CiAKLXZvaWQgQXVkaW9Qcm9jZXNzb3JJbnRlcmZhY2U6OkdldFN0YXRz
KEF1ZGlvUHJvY2Vzc29yU3RhdHMqIC8qc3RhdHMqLykgewotICBSVENfTk9UUkVBQ0hFRCgpIDw8
ICJPbGQtc3R5bGUgR2V0U3RhdHMoKSBpcyBjYWxsZWQgYnV0IGl0IGhhcyBubyAiCi0gICAgICAg
ICAgICAgICAgICAgPDwgImltcGxlbWVudGF0aW9uLiI7Ci0gIFJUQ19MT0coTFNfRVJST1IpIDw8
ICJPbGQtc3R5bGUgR2V0U3RhdHMoKSBpcyBjYWxsZWQgYnV0IGl0IGhhcyBubyAiCi0gICAgICAg
ICAgICAgICAgICAgIDw8ICJpbXBsZW1lbnRhdGlvbi4iOwotfQotCi0vLyBUT0RPKGl2b2MpOiBS
ZW1vdmUgdGhpcyB3aGVuIHRoZSBmdW5jdGlvbiBiZWNvbWVzIHB1cmUgdmlydHVhbC4KLUF1ZGlv
UHJvY2Vzc29ySW50ZXJmYWNlOjpBdWRpb1Byb2Nlc3NvclN0YXRpc3RpY3MKLUF1ZGlvUHJvY2Vz
c29ySW50ZXJmYWNlOjpHZXRTdGF0cyhib29sIC8qaGFzX3JlbW90ZV90cmFja3MqLykgewotICBB
dWRpb1Byb2Nlc3NvclN0YXRzIHN0YXRzOwotICBHZXRTdGF0cygmc3RhdHMpOwotICBBdWRpb1By
b2Nlc3NvclN0YXRpc3RpY3MgbmV3X3N0YXRzOwotICBuZXdfc3RhdHMuYXBtX3N0YXRpc3RpY3Mu
ZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbiA9Ci0gICAgICBzdGF0cy5hZWNfZGl2ZXJnZW50X2Zp
bHRlcl9mcmFjdGlvbjsKLSAgbmV3X3N0YXRzLmFwbV9zdGF0aXN0aWNzLmRlbGF5X21lZGlhbl9t
cyA9IHN0YXRzLmVjaG9fZGVsYXlfbWVkaWFuX21zOwotICBuZXdfc3RhdHMuYXBtX3N0YXRpc3Rp
Y3MuZGVsYXlfc3RhbmRhcmRfZGV2aWF0aW9uX21zID0KLSAgICAgIHN0YXRzLmVjaG9fZGVsYXlf
c3RkX21zOwotICBuZXdfc3RhdHMuYXBtX3N0YXRpc3RpY3MuZWNob19yZXR1cm5fbG9zcyA9IHN0
YXRzLmVjaG9fcmV0dXJuX2xvc3M7Ci0gIG5ld19zdGF0cy5hcG1fc3RhdGlzdGljcy5lY2hvX3Jl
dHVybl9sb3NzX2VuaGFuY2VtZW50ID0KLSAgICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xvc3NfZW5o
YW5jZW1lbnQ7Ci0gIG5ld19zdGF0cy5hcG1fc3RhdGlzdGljcy5yZXNpZHVhbF9lY2hvX2xpa2Vs
aWhvb2QgPQotICAgICAgc3RhdHMucmVzaWR1YWxfZWNob19saWtlbGlob29kOwotICBuZXdfc3Rh
dHMuYXBtX3N0YXRpc3RpY3MucmVzaWR1YWxfZWNob19saWtlbGlob29kX3JlY2VudF9tYXggPQot
ICAgICAgc3RhdHMucmVzaWR1YWxfZWNob19saWtlbGlob29kX3JlY2VudF9tYXg7Ci0gIHJldHVy
biBuZXdfc3RhdHM7Ci19Ci0KIFZpZGVvVHJhY2tJbnRlcmZhY2U6OkNvbnRlbnRIaW50IFZpZGVv
VHJhY2tJbnRlcmZhY2U6OmNvbnRlbnRfaGludCgpIGNvbnN0IHsKICAgcmV0dXJuIENvbnRlbnRI
aW50OjprTm9uZTsKIH0KQEAgLTU4LDQgKzMwLDggQEAgQXVkaW9UcmFja0ludGVyZmFjZTo6R2V0
QXVkaW9Qcm9jZXNzb3IoKSB7CiAgIHJldHVybiBudWxscHRyOwogfQogCitjb25zdCBjcmlja2V0
OjpBdWRpb09wdGlvbnMgQXVkaW9Tb3VyY2VJbnRlcmZhY2U6Om9wdGlvbnMoKSBjb25zdCB7Cisg
IHJldHVybiB7fTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50
ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
bWVkaWFzdHJlYW1pbnRlcmZhY2UuaAppbmRleCBiNjYxMzUxZTlmYzk4NWVkNmQxNTYyMWFmZTI3
NGRlOGNlMWM0N2U3Li42ZDk2NzY2MGM1NzNhZGI4YzU5OGEzNTM0ZjY3ZjVmYzhmMjc0YTc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
bWVkaWFzdHJlYW1pbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaApAQCAtMjMsMTggKzIzLDEz
IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgorI2luY2x1ZGUgImFwaS9hdWRpb19vcHRpb25zLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3Zp
ZGVvX2ZyYW1lLmgiCi0vLyBUT0RPKHpoaWh1YW5nKTogUmVtb3ZlIHVucmVsYXRlZCBoZWFkZXJz
IG9uY2UgZG93bnN0cmVhbSBhcHBsaWNhdGlvbnMgc3RvcAotLy8gcmVseWluZyBvbiB0aGVtOyB0
aGV5IHdlcmUgcHJldmlvdXNseSB0cmFuc2l0aXZlbHkgaW5jbHVkZWQgYnkKLS8vIG1lZGlhY2hh
bm5lbC5oLCB3aGljaCBpcyBubyBsb25nZXIgYSBkZXBlbmRlbmN5IG9mIHRoaXMgZmlsZS4KICNp
bmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc2lua19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkv
dmlkZW8vdmlkZW9fc291cmNlX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3JhdGV0cmFja2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3RocmVhZC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIApAQCAtMjEzLDUzICsyMDgsMjggQEAgY2xhc3MgQXVkaW9Tb3VyY2VJbnRl
cmZhY2UgOiBwdWJsaWMgTWVkaWFTb3VyY2VJbnRlcmZhY2UgewogICAvLyBUT0RPKHRvbW1pKTog
TWFrZSBwdXJlIHZpcnR1YWwuCiAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKEF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlKiBzaW5rKSB7fQogICB2aXJ0dWFsIHZvaWQgUmVtb3ZlU2luayhBdWRpb1RyYWNr
U2lua0ludGVyZmFjZSogc2luaykge30KKworICAvLyBSZXR1cm5zIG9wdGlvbnMgZm9yIHRoZSBB
dWRpb1NvdXJjZS4KKyAgLy8gKGZvciBzb21lIG9mIHRoZSBzZXR0aW5ncyB0aGlzIGFwcHJvYWNo
IGlzIGJyb2tlbiwgZS5nLiBzZXR0aW5nCisgIC8vIGF1ZGlvIG5ldHdvcmsgYWRhcHRhdGlvbiBv
biB0aGUgc291cmNlIGlzIHRoZSB3cm9uZyBsYXllciBvZiBhYnN0cmFjdGlvbikuCisgIHZpcnR1
YWwgY29uc3QgY3JpY2tldDo6QXVkaW9PcHRpb25zIG9wdGlvbnMoKSBjb25zdDsKIH07CiAKIC8v
IEludGVyZmFjZSBvZiB0aGUgYXVkaW8gcHJvY2Vzc29yIHVzZWQgYnkgdGhlIGF1ZGlvIHRyYWNr
IHRvIGNvbGxlY3QKIC8vIHN0YXRpc3RpY3MuCiBjbGFzcyBBdWRpb1Byb2Nlc3NvckludGVyZmFj
ZSA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICBwdWJsaWM6Ci0gIC8vIERlcHJl
Y2F0ZWQsIHVzZSBBdWRpb1Byb2Nlc3NvclN0YXRpc3RpY3MgaW5zdGVhZC4KLSAgLy8gVE9ETyhp
dm9jKTogUmVtb3ZlIHRoaXMgd2hlbiBhbGwgaW1wbGVtZW50YXRpb25zIGhhdmUgc3dpdGNoZWQg
dG8gdGhlIG5ldwotICAvLyAgICAgICAgICAgICBHZXRTdGF0cyBmdW5jdGlvbi4gU2VlIGIvNjc5
MjYxMzUuCi0gIHN0cnVjdCBBdWRpb1Byb2Nlc3NvclN0YXRzIHsKLSAgICBBdWRpb1Byb2Nlc3Nv
clN0YXRzKCkKLSAgICAgICAgOiB0eXBpbmdfbm9pc2VfZGV0ZWN0ZWQoZmFsc2UpLAotICAgICAg
ICAgIGVjaG9fcmV0dXJuX2xvc3MoMCksCi0gICAgICAgICAgZWNob19yZXR1cm5fbG9zc19lbmhh
bmNlbWVudCgwKSwKLSAgICAgICAgICBlY2hvX2RlbGF5X21lZGlhbl9tcygwKSwKLSAgICAgICAg
ICBlY2hvX2RlbGF5X3N0ZF9tcygwKSwKLSAgICAgICAgICByZXNpZHVhbF9lY2hvX2xpa2VsaWhv
b2QoMC4wZiksCi0gICAgICAgICAgcmVzaWR1YWxfZWNob19saWtlbGlob29kX3JlY2VudF9tYXgo
MC4wZiksCi0gICAgICAgICAgYWVjX2RpdmVyZ2VudF9maWx0ZXJfZnJhY3Rpb24oMC4wKSB7fQot
ICAgIH5BdWRpb1Byb2Nlc3NvclN0YXRzKCkge30KLQotICAgIGJvb2wgdHlwaW5nX25vaXNlX2Rl
dGVjdGVkOwotICAgIGludCBlY2hvX3JldHVybl9sb3NzOwotICAgIGludCBlY2hvX3JldHVybl9s
b3NzX2VuaGFuY2VtZW50OwotICAgIGludCBlY2hvX2RlbGF5X21lZGlhbl9tczsKLSAgICBpbnQg
ZWNob19kZWxheV9zdGRfbXM7Ci0gICAgZmxvYXQgcmVzaWR1YWxfZWNob19saWtlbGlob29kOwot
ICAgIGZsb2F0IHJlc2lkdWFsX2VjaG9fbGlrZWxpaG9vZF9yZWNlbnRfbWF4OwotICAgIGZsb2F0
IGFlY19kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uOwotICB9OwotICAvLyBUaGlzIHN0cnVjdCBt
YWludGFpbnMgdGhlIG9wdGlvbmFsaXR5IG9mIHRoZSBzdGF0cywgYW5kIHdpbGwgcmVwbGFjZSB0
aGUKLSAgLy8gcmVndWxhciBzdGF0cyBzdHJ1Y3Qgd2hlbiBhbGwgdXNlcnMgaGF2ZSBiZWVuIHVw
ZGF0ZWQuCiAgIHN0cnVjdCBBdWRpb1Byb2Nlc3NvclN0YXRpc3RpY3MgewogICAgIGJvb2wgdHlw
aW5nX25vaXNlX2RldGVjdGVkID0gZmFsc2U7CiAgICAgQXVkaW9Qcm9jZXNzaW5nU3RhdHMgYXBt
X3N0YXRpc3RpY3M7CiAgIH07CiAKLSAgLy8gR2V0IGF1ZGlvIHByb2Nlc3NvciBzdGF0aXN0aWNz
LgotICB2aXJ0dWFsIHZvaWQgR2V0U3RhdHMoQXVkaW9Qcm9jZXNzb3JTdGF0cyogc3RhdHMpOwot
CiAgIC8vIEdldCBhdWRpbyBwcm9jZXNzb3Igc3RhdGlzdGljcy4gVGhlIHxoYXNfcmVtb3RlX3Ry
YWNrc3wgYXJndW1lbnQgc2hvdWxkIGJlCiAgIC8vIHNldCBpZiB0aGVyZSBhcmUgYWN0aXZlIHJl
bW90ZSB0cmFja3MgKHRoaXMgd291bGQgdXN1YWxseSBiZSB0cnVlIGR1cmluZwogICAvLyBhIGNh
bGwpLiBJZiB0aGVyZSBhcmUgbm8gcmVtb3RlIHRyYWNrcyBzb21lIG9mIHRoZSBzdGF0cyB3aWxs
IG5vdCBiZSBzZXQgYnkKICAgLy8gdGhlIEF1ZGlvUHJvY2Vzc29yLCBiZWNhdXNlIHRoZXkgb25s
eSBtYWtlIHNlbnNlIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZQogICAvLyByZW1vdGUgdHJhY2su
Ci0gIC8vIFRPRE8oaXZvYyk6IE1ha2UgcHVyZSB2aXJ0dWFsIHdoZW4gYWxsIGltcGxlbWVudGlv
bnMgYXJlIHVwZGF0ZWQuCi0gIHZpcnR1YWwgQXVkaW9Qcm9jZXNzb3JTdGF0aXN0aWNzIEdldFN0
YXRzKGJvb2wgaGFzX3JlbW90ZV90cmFja3MpOworICB2aXJ0dWFsIEF1ZGlvUHJvY2Vzc29yU3Rh
dGlzdGljcyBHZXRTdGF0cyhib29sIGhhc19yZW1vdGVfdHJhY2tzKSA9IDA7CiAKICBwcm90ZWN0
ZWQ6CiAgIH5BdWRpb1Byb2Nlc3NvckludGVyZmFjZSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9v
cnRjL21lZGlhZGVzY3JpcHRpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkNTE1NWYyMmZlOWEzNTg4NWNkZDUzNzBhZjI4Mjc1Mzg2MWYzMzdkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL21lZGlhZGVzY3JpcHRpb24u
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0j
aW5jbHVkZSAiYXBpL29ydGMvbWVkaWFkZXNjcmlwdGlvbi5oIgotCi1uYW1lc3BhY2Ugd2VicnRj
IHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvb3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDVjZjFkMWE2N2JlMDE4NzcwMmM1ODE5ZDZiZmY2MjE5ZWZhZTAy
N2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvbWVkaWFkZXNjcmlw
dGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
MjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8K
LQotI2lmbmRlZiBBUElfT1JUQ19NRURJQURFU0NSSVBUSU9OX0hfCi0jZGVmaW5lIEFQSV9PUlRD
X01FRElBREVTQ1JJUFRJT05fSF8KLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGls
aXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwu
aCIKLSNpbmNsdWRlICJhcGkvY3J5cHRvcGFyYW1zLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewot
Ci0vLyBBIHN0cnVjdHVyZWQgcmVwcmVzZW50YXRpb24gb2YgYSBtZWRpYSBkZXNjcmlwdGlvbiB3
aXRoaW4gYW4gU0RQIHNlc3Npb24KLS8vIGRlc2NyaXB0aW9uLgotY2xhc3MgTWVkaWFEZXNjcmlw
dGlvbiB7Ci0gcHVibGljOgotICBleHBsaWNpdCBNZWRpYURlc2NyaXB0aW9uKHN0ZDo6c3RyaW5n
IG1pZCkgOiBtaWRfKHN0ZDo6bW92ZShtaWQpKSB7fQotCi0gIH5NZWRpYURlc2NyaXB0aW9uKCkg
e30KLQotICAvLyBUaGUgbWlkKG1lZGlhIHN0cmVhbSBpZGVudGlmaWNhdGlvbikgaXMgdXNlZCBm
b3IgaWRlbnRpZnlpbmcgbWVkaWEgc3RyZWFtcwotICAvLyB3aXRoaW4gYSBzZXNzaW9uIGRlc2Ny
aXB0aW9uLgotICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTg4OCNzZWN0aW9u
LTYKLSAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IG1pZCgpIGNvbnN0IHsgcmV0dXJuIG1p
ZF87IH0KLSAgdm9pZCBzZXRfbWlkKHN0ZDo6c3RyaW5nIG1pZCkgeyBtaWRfLmVtcGxhY2Uoc3Rk
Ojptb3ZlKG1pZCkpOyB9Ci0KLSAgLy8gU2VjdXJpdHkga2V5cyBhbmQgcGFyYW1ldGVycyBmb3Ig
dGhpcyBtZWRpYSBzdHJlYW0uIENhbiBiZSB1c2VkIHRvCi0gIC8vIG5lZ290aWF0ZSBwYXJhbWV0
ZXJzIGZvciBTUlRQLgotICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDU2OCNw
YWdlLTUKLSAgc3RkOjp2ZWN0b3I8Y3JpY2tldDo6Q3J5cHRvUGFyYW1zPiYgc2Rlc19wYXJhbXMo
KSB7IHJldHVybiBzZGVzX3BhcmFtc187IH0KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8Y3JpY2tldDo6
Q3J5cHRvUGFyYW1zPiYgc2Rlc19wYXJhbXMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHNkZXNfcGFy
YW1zXzsKLSAgfQotCi0gcHJpdmF0ZToKLSAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IG1p
ZF87Ci0KLSAgc3RkOjp2ZWN0b3I8Y3JpY2tldDo6Q3J5cHRvUGFyYW1zPiBzZGVzX3BhcmFtc187
Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVBJX09SVENfTUVE
SUFERVNDUklQVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL29ydGMvbWVkaWFkZXNjcmlwdGlvbl91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL21lZGlhZGVz
Y3JpcHRpb25fdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZjk0
M2FmNmY0MDVmYThjYmZjYTIyOWU3YjAyMzM2YjQwYjMzYzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL29ydGMvbWVkaWFkZXNjcmlwdGlvbl91bml0dGVzdC5jYworKysgL2Rl
di9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJh
cGkvb3J0Yy9tZWRpYWRlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC5oIgotCi1u
YW1lc3BhY2Ugd2VicnRjIHsKLQotY2xhc3MgTWVkaWFEZXNjcmlwdGlvblRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7fTsKLQotVEVTVF9GKE1lZGlhRGVzY3JpcHRpb25UZXN0LCBDcmVhdGVN
ZWRpYURlc2NyaXB0aW9uKSB7Ci0gIE1lZGlhRGVzY3JpcHRpb24gbSgiYSIpOwotICBFWFBFQ1Rf
RVEoImEiLCBtLm1pZCgpKTsKLX0KLQotVEVTVF9GKE1lZGlhRGVzY3JpcHRpb25UZXN0LCBBZGRT
ZGVzUGFyYW0pIHsKLSAgTWVkaWFEZXNjcmlwdGlvbiBtKCJhIik7Ci0gIG0uc2Rlc19wYXJhbXMo
KS5wdXNoX2JhY2soY3JpY2tldDo6Q3J5cHRvUGFyYW1zKCkpOwotICBjb25zdCBzdGQ6OnZlY3Rv
cjxjcmlja2V0OjpDcnlwdG9QYXJhbXM+JiBwYXJhbXMgPSBtLnNkZXNfcGFyYW1zKCk7Ci0gIEVY
UEVDVF9FUSgxdSwgcGFyYW1zLnNpemUoKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9vcnRjL29ydGNmYWN0b3J5aW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9vcnRjZmFjdG9yeWludGVyZmFjZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTM3MzUyODMxOGNkN2IyNDY4Mzg5ODc1NzMxNGI0OTZk
N2MzMzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL29ydGNmYWN0
b3J5aW50ZXJmYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMzIgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLQotI2lmbmRlZiBBUElfT1JUQ19PUlRDRkFDVE9SWUlOVEVSRkFDRV9IXwotI2Rl
ZmluZSBBUElfT1JUQ19PUlRDRkFDVE9SWUlOVEVSRkFDRV9IXwotCi0jaW5jbHVkZSA8bWVtb3J5
PgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6bW92
ZS4KLQotI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oIgotI2luY2x1ZGUgImFw
aS9tZWRpYXR5cGVzLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvb3J0Y3J0cHJlY2VpdmVyaW50ZXJm
YWNlLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvb3J0Y3J0cHNlbmRlcmludGVyZmFjZS5oIgotI2lu
Y2x1ZGUgImFwaS9vcnRjL3BhY2tldHRyYW5zcG9ydGludGVyZmFjZS5oIgotI2luY2x1ZGUgImFw
aS9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkv
b3J0Yy9ydHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvb3J0Yy9zcnRwdHJh
bnNwb3J0aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvdWRwdHJhbnNwb3J0aW50ZXJm
YWNlLmgiCi0jaW5jbHVkZSAiYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmgiCi0jaW5jbHVk
ZSAiYXBpL3J0Y2Vycm9yLmgiCi0jaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9uZXR3b3JrLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9w
dHIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7
Ci0KLS8vIFRPRE8oZGVhZGJlZWYpOiBUaGlzIHNob3VsZCBiZSBwYXJ0IG9mIC9hcGkvLCBidXQg
Y3VycmVudGx5IGl0J3Mgbm90IGFuZAotLy8gaW5jbHVkaW5nIGl0cyBoZWFkZXIgdmlvbGF0ZXMg
Y2hlY2tkZXBzIHJ1bGVzLgotY2xhc3MgQXVkaW9EZXZpY2VNb2R1bGU7Ci0KLS8vIFdBUk5JTkc6
IFRoaXMgaXMgZXhwZXJpbWVudGFsL3VuZGVyIGRldmVsb3BtZW50LCBzbyB1c2UgYXQgeW91ciBv
d24gcmlzazsgbm8KLS8vIGd1YXJhbnRlZSBhYm91dCBBUEkgc3RhYmlsaXR5IGlzIGd1YXJhbnRl
ZWQgaGVyZSB5ZXQuCi0vLwotLy8gVGhpcyBjbGFzcyBpcyB0aGUgT1JUQyBhbmFsb2cgb2YgUGVl
ckNvbm5lY3Rpb25GYWN0b3J5LiBJdCBhY3RzIGFzIGEgZmFjdG9yeQotLy8gZm9yIE9SVEMgb2Jq
ZWN0cyB0aGF0IGNhbiBiZSBjb25uZWN0ZWQgdG8gZWFjaCBvdGhlci4KLS8vCi0vLyBTb21lIG9m
IHRoZXNlIG9iamVjdHMgbWF5IG5vdCBiZSByZXByZXNlbnRlZCBieSB0aGUgT1JUQyBzcGVjaWZp
Y2F0aW9uLCBidXQKLS8vIGZvbGxvdyB0aGUgc2FtZSBnZW5lcmFsIHByaW5jaXBsZXMuCi0vLwot
Ly8gSWYgb25lIG9mIHRoZSBmYWN0b3J5IG1ldGhvZHMgdGFrZXMgYW5vdGhlciBvYmplY3QgYXMg
YW4gYXJndW1lbnQsIGl0IE1VU1QKLS8vIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRoZSBzYW1lIE9y
dGNGYWN0b3J5LgotLy8KLS8vIE9uIG9iamVjdCBsaWZldGltZXM6IG9iamVjdHMgc2hvdWxkIGJl
IGRlc3Ryb3llZCBpbiB0aGlzIG9yZGVyOgotLy8gMS4gT2JqZWN0cyBjcmVhdGVkIGJ5IHRoZSBm
YWN0b3J5LgotLy8gMi4gVGhlIGZhY3RvcnkgaXRzZWxmLgotLy8gMy4gT2JqZWN0cyBwYXNzZWQg
aW50byBPcnRjRmFjdG9yeUludGVyZmFjZTo6Q3JlYXRlLgotY2xhc3MgT3J0Y0ZhY3RvcnlJbnRl
cmZhY2UgewotIHB1YmxpYzoKLSAgLy8gfG5ldHdvcmtfdGhyZWFkfCBpcyB0aGUgdGhyZWFkIG9u
IHdoaWNoIHBhY2tldHMgYXJlIHNlbnQgYW5kIHJlY2VpdmVkLgotICAvLyBJZiBudWxsLCBhIG5l
dyBydGM6OlRocmVhZCB3aXRoIGEgZGVmYXVsdCBzb2NrZXQgc2VydmVyIGlzIGNyZWF0ZWQuCi0g
IC8vCi0gIC8vIHxzaWduYWxpbmdfdGhyZWFkfCBpcyB1c2VkIGZvciBjYWxsYmFja3MgdG8gdGhl
IGNvbnN1bWVyIG9mIHRoZSBBUEkuIElmCi0gIC8vIG51bGwsIHRoZSBjdXJyZW50IHRocmVhZCB3
aWxsIGJlIHVzZWQsIHdoaWNoIGFzc3VtZXMgdGhhdCB0aGUgQVBJIGNvbnN1bWVyCi0gIC8vIGlz
IHJ1bm5pbmcgYSBtZXNzYWdlIGxvb3Agb24gdGhpcyB0aHJlYWQgKGVpdGhlciB1c2luZyBhbiBl
eGlzdGluZwotICAvLyBydGM6OlRocmVhZCwgb3IgYnkgY2FsbGluZyBydGM6OlRocmVhZDo6Q3Vy
cmVudCgpLT5Qcm9jZXNzTWVzc2FnZXMpLgotICAvLwotICAvLyB8bmV0d29ya19tYW5hZ2VyfCBp
cyB1c2VkIHRvIGRldGVybWluZSB3aGljaCBuZXR3b3JrIGludGVyZmFjZXMgYXJlCi0gIC8vIGF2
YWlsYWJsZS4gVGhpcyBpcyB1c2VkIGZvciBJQ0UsIGZvciBleGFtcGxlLiBJZiBudWxsLCBhIGRl
ZmF1bHQKLSAgLy8gaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkLiBPbmx5IGFjY2Vzc2VkIG9u
IHxuZXR3b3JrX3RocmVhZHwuCi0gIC8vCi0gIC8vIHxzb2NrZXRfZmFjdG9yeXwgaXMgdXNlZCAo
b24gdGhlIG5ldHdvcmsgdGhyZWFkKSBmb3IgY3JlYXRpbmcgc29ja2V0cy4gSWYKLSAgLy8gaXQn
cyBudWxsLCBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkLCB3aGljaCBhc3N1
bWVzCi0gIC8vIHxuZXR3b3JrX3RocmVhZHwgaXMgYSBub3JtYWwgcnRjOjpUaHJlYWQuCi0gIC8v
Ci0gIC8vIHxhZG18IGlzIG9wdGlvbmFsLCBhbmQgYWxsb3dzIGEgZGlmZmVyZW50IGF1ZGlvIGRl
dmljZSBpbXBsZW1lbnRhdGlvbiB0bwotICAvLyBiZSBpbmplY3RlZDsgb3RoZXJ3aXNlIGEgcGxh
dGZvcm0tc3BlY2lmaWMgbW9kdWxlIHdpbGwgYmUgdXNlZCB0aGF0IHdpbGwKLSAgLy8gdXNlIHRo
ZSBkZWZhdWx0IGF1ZGlvIGlucHV0LgotICAvLwotICAvLyB8YXVkaW9fZW5jb2Rlcl9mYWN0b3J5
fCBhbmQgfGF1ZGlvX2RlY29kZXJfZmFjdG9yeXwgYXJlIHVzZWQgdG8KLSAgLy8gaW5zdGFudGlh
dGUgYXVkaW8gY29kZWNzOyB0aGV5IGRldGVybWluZSB3aGF0IGNvZGVjcyBhcmUgc3VwcG9ydGVk
LgotICAvLwotICAvLyBOb3RlIHRoYXQgdGhlIE9ydGNGYWN0b3J5SW50ZXJmYWNlIGRvZXMgbm90
IHRha2Ugb3duZXJzaGlwIG9mIGFueSBvZiB0aGUKLSAgLy8gb2JqZWN0cyBwYXNzZWQgaW4gYnkg
cmF3IHBvaW50ZXIsIGFuZCBhcyBwcmV2aW91c2x5IHN0YXRlZCwgdGhlc2Ugb2JqZWN0cwotICAv
LyBjYW4ndCBiZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSBmYWN0b3J5IGlzLgotICBzdGF0aWMgUlRD
RXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+PiBDcmVhdGUoCi0g
ICAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgICBydGM6OlRocmVhZCogc2ln
bmFsaW5nX3RocmVhZCwKLSAgICAgIHJ0Yzo6TmV0d29ya01hbmFnZXIqIG5ldHdvcmtfbWFuYWdl
ciwKLSAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnksCi0gICAg
ICBBdWRpb0RldmljZU1vZHVsZSogYWRtLAotICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
RW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnkpOwotCi0g
IC8vIENvbnN0cnVjdG9yIGZvciBjb252ZW5pZW5jZSB3aGljaCB1c2VzIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb25zIHdoZXJlCi0gIC8vIHBvc3NpYmxlICh0aG91Z2ggZG9lcyBzdGlsbCByZXF1aXJl
IHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkIHJ1bnMgYSBtZXNzYWdlCi0gIC8vIGxvb3A7IHNlZSBh
Ym92ZSkuCi0gIHN0YXRpYyBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUlu
dGVyZmFjZT4+IENyZWF0ZSgKLSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJG
YWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8
QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KSB7Ci0gICAgcmV0dXJu
IENyZWF0ZShudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAotICAg
ICAgICAgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3Rv
cnkpOwotICB9Ci0KLSAgdmlydHVhbCB+T3J0Y0ZhY3RvcnlJbnRlcmZhY2UoKSB7fQotCi0gIC8v
IENyZWF0ZXMgYW4gUlRQIHRyYW5zcG9ydCBjb250cm9sbGVyLCB3aGljaCBpcyB1c2VkIGluIGNh
bGxzIHRvCi0gIC8vIENyZWF0ZVJ0cFRyYW5zcG9ydCBtZXRob2RzLiBJZiB5b3VyIGFwcGxpY2F0
aW9uIGhhcyBzb21lIG5vdGlvbiBvZiBhCi0gIC8vICJjYWxsIiwgeW91IHNob3VsZCBjcmVhdGUg
b25lIHRyYW5zcG9ydCBjb250cm9sbGVyIHBlciBjYWxsLgotICAvLwotICAvLyBIb3dldmVyLCBp
ZiB5b3Ugb25seSBhcmUgdXNpbmcgb25lIFJ0cFRyYW5zcG9ydCBvYmplY3QsIHRoaXMgZG9lc24n
dCBuZWVkCi0gIC8vIHRvIGJlIGNhbGxlZCBleHBsaWNpdGx5OyBDcmVhdGVSdHBUcmFuc3BvcnQg
d2lsbCBjcmVhdGUgb25lIGF1dG9tYXRpY2FsbHkKLSAgLy8gaWYgfHJ0cF90cmFuc3BvcnRfY29u
dHJvbGxlcnwgaXMgbnVsbC4gU2VlIGJlbG93LgotICAvLwotICAvLyBUT0RPKGRlYWRiZWVmKTog
QWRkIE1lZGlhQ29uZmlnIGFuZCBSdGNFdmVudExvZyBhcmd1bWVudHM/Ci0gIHZpcnR1YWwgUlRD
RXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4+
Ci0gIENyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIoKSA9IDA7Ci0KLSAgLy8gQ3JlYXRlcyBh
biBSVFAgdHJhbnNwb3J0IHVzaW5nIHRoZSBwcm92aWRlZCBwYWNrZXQgdHJhbnNwb3J0cyBhbmQK
LSAgLy8gdHJhbnNwb3J0IGNvbnRyb2xsZXIuCi0gIC8vCi0gIC8vIHxydHB8IHdpbGwgYmUgdXNl
ZCBmb3Igc2VuZGluZyBSVFAgcGFja2V0cywgYW5kIHxydGNwfCBmb3IgUlRDUCBwYWNrZXRzLgot
ICAvLwotICAvLyB8cnRwfCBjYW4ndCBiZSBudWxsLiB8cnRjcHwgbXVzdCBiZSBub24tbnVsbCBp
ZiBhbmQgb25seSBpZgotICAvLyB8cnRwX3BhcmFtZXRlcnMucnRjcC5tdXh8IGlzIGZhbHNlLCBp
bmRpY2F0aW5nIHRoYXQgUlRDUCBtdXhpbmcgaXNuJ3QgdXNlZC4KLSAgLy8gTm90ZSB0aGF0IGlm
IFJUQ1AgbXV4aW5nIGlzbid0IGVuYWJsZWQgaW5pdGlhbGx5LCBpdCBjYW4gc3RpbGwgZW5hYmxl
ZAotICAvLyBsYXRlciB0aHJvdWdoIFNldFBhcmFtZXRlcnMuCi0gIC8vCi0gIC8vIElmIHx0cmFu
c3BvcnRfY29udHJvbGxlcnwgaXMgbnVsbCwgb25lIHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVh
dGVkLCBhbmQKLSAgLy8gaXRzIGxpZmV0aW1lIG1hbmFnZWQgYnkgdGhlIHJldHVybmVkIFJ0cFRy
YW5zcG9ydC4gVGhpcyBzaG91bGQgb25seSBiZQotICAvLyBkb25lIGlmIGEgc2luZ2xlIFJ0cFRy
YW5zcG9ydCBpcyBiZWluZyB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHJlbW90ZQotICAv
LyBlbmRwb2ludC4KLSAgdmlydHVhbCBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFu
c3BvcnRJbnRlcmZhY2U+PiBDcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBjb25zdCBSdHBUcmFu
c3BvcnRQYXJhbWV0ZXJzJiBydHBfcGFyYW1ldGVycywKLSAgICAgIFBhY2tldFRyYW5zcG9ydElu
dGVyZmFjZSogcnRwLAotICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydGNwLAotICAg
ICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZSogdHJhbnNwb3J0X2NvbnRyb2xsZXIp
ID0gMDsKLQotICAvLyBDcmVhdGVzIGFuIFNydHBUcmFuc3BvcnQgd2hpY2ggaXMgYW4gUlRQIHRy
YW5zcG9ydCB0aGF0IHVzZXMgU1JUUC4KLSAgdmlydHVhbCBSVENFcnJvck9yPHN0ZDo6dW5pcXVl
X3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4KLSAgQ3JlYXRlU3J0cFRyYW5zcG9ydCgKLSAg
ICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHJ0cF9wYXJhbWV0ZXJzLAotICAgICAg
UGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRl
cmZhY2UqIHJ0Y3AsCi0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlKiB0cmFu
c3BvcnRfY29udHJvbGxlcikgPSAwOwotCi0gIC8vIFJldHVybnMgdGhlIGNhcGFiaWxpdGllcyBv
ZiBhbiBSVFAgc2VuZGVyIG9mIHR5cGUgfGtpbmR8LiBUaGVzZQotICAvLyBjYXBhYmlsaXRpZXMg
Y2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgUnRwUGFyYW1ldGVycyB0byB1c2UgdG8gY3Jl
YXRlCi0gIC8vIGFuIFJ0cFNlbmRlci4KLSAgLy8KLSAgLy8gSWYgZm9yIHNvbWUgcmVhc29uIHlv
dSBwYXNzIGluIE1FRElBX1RZUEVfREFUQSwgcmV0dXJucyBhbiBlbXB0eSBzdHJ1Y3R1cmUuCi0g
IHZpcnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldFJ0cFNlbmRlckNhcGFiaWxpdGllcygKLSAgICAg
IGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kKSBjb25zdCA9IDA7Ci0KLSAgLy8gQ3JlYXRlcyBhbiBS
VFAgc2VuZGVyIHdpdGggfHRyYWNrfC4gV2lsbCBub3Qgc3RhcnQgc2VuZGluZyB1bnRpbCBTZW5k
IGlzCi0gIC8vIGNhbGxlZC4gVGhpcyBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlOyBpdCdz
IGVxdWl2YWxlbnQgdG8gY2FsbGluZwotICAvLyBDcmVhdGVSdHBTZW5kZXIgd2l0aCBhIGtpbmQg
KHNlZSBiZWxvdyksIGZvbGxvd2VkIGJ5IFNldFRyYWNrLgotICAvLwotICAvLyB8dHJhY2t8IGFu
ZCB8dHJhbnNwb3J0fCBtdXN0IG5vdCBiZSBudWxsLgotICB2aXJ0dWFsIFJUQ0Vycm9yT3I8c3Rk
Ojp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PiBDcmVhdGVSdHBTZW5kZXIoCi0g
ICAgICBydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4gdHJhY2ss
Ci0gICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgPSAwOwotCi0gIC8vIE92
ZXJsb2FkIG9mIENyZWF0ZVJ0cFNlbmRlciBhbGxvd3MgY3JlYXRpbmcgdGhlIHNlbmRlciB3aXRo
b3V0IGEgdHJhY2suCi0gIC8vCi0gIC8vIHxraW5kfCBtdXN0IGJlIE1FRElBX1RZUEVfQVVESU8g
b3IgTUVESUFfVFlQRV9WSURFTy4KLSAgdmlydHVhbCBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0
cjxPcnRjUnRwU2VuZGVySW50ZXJmYWNlPj4gQ3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tl
dDo6TWVkaWFUeXBlIGtpbmQsCi0gICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9y
dCkgPSAwOwotCi0gIC8vIFJldHVybnMgdGhlIGNhcGFiaWxpdGllcyBvZiBhbiBSVFAgcmVjZWl2
ZXIgb2YgdHlwZSB8a2luZHwuIFRoZXNlCi0gIC8vIGNhcGFiaWxpdGllcyBjYW4gYmUgdXNlZCB0
byBkZXRlcm1pbmUgd2hhdCBSdHBQYXJhbWV0ZXJzIHRvIHVzZSB0byBjcmVhdGUKLSAgLy8gYW4g
UnRwUmVjZWl2ZXIuCi0gIC8vCi0gIC8vIElmIGZvciBzb21lIHJlYXNvbiB5b3UgcGFzcyBpbiBN
RURJQV9UWVBFX0RBVEEsIHJldHVybnMgYW4gZW1wdHkgc3RydWN0dXJlLgotICB2aXJ0dWFsIFJ0
cENhcGFiaWxpdGllcyBHZXRSdHBSZWNlaXZlckNhcGFiaWxpdGllcygKLSAgICAgIGNyaWNrZXQ6
Ok1lZGlhVHlwZSBraW5kKSBjb25zdCA9IDA7Ci0KLSAgLy8gQ3JlYXRlcyBhbiBSVFAgcmVjZWl2
ZXIgb2YgdHlwZSB8a2luZHwuIFdpbGwgbm90IHN0YXJ0IHJlY2VpdmluZyBtZWRpYQotICAvLyB1
bnRpbCBSZWNlaXZlIGlzIGNhbGxlZC4KLSAgLy8KLSAgLy8gfGtpbmR8IG11c3QgYmUgTUVESUFf
VFlQRV9BVURJTyBvciBNRURJQV9UWVBFX1ZJREVPLgotICAvLwotICAvLyB8dHJhbnNwb3J0fCBt
dXN0IG5vdCBiZSBudWxsLgotICB2aXJ0dWFsIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9y
dGNSdHBSZWNlaXZlckludGVyZmFjZT4+Ci0gIENyZWF0ZVJ0cFJlY2VpdmVyKGNyaWNrZXQ6Ok1l
ZGlhVHlwZSBraW5kLAotICAgICAgICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2Uq
IHRyYW5zcG9ydCkgPSAwOwotCi0gIC8vIENyZWF0ZSBhIFVEUCB0cmFuc3BvcnQgd2l0aCBJUCBh
ZGRyZXNzIGZhbWlseSB8ZmFtaWx5fCwgdXNpbmcgYSBwb3J0Ci0gIC8vIHdpdGhpbiB0aGUgc3Bl
Y2lmaWVkIHJhbmdlLgotICAvLwotICAvLyB8ZmFtaWx5fCBtdXN0IGJlIEFGX0lORVQgb3IgQUZf
SU5FVDYuCi0gIC8vCi0gIC8vIHxtaW5fcG9ydHwvfG1heF9wb3J0fCB2YWx1ZXMgb2YgMCBpbmRp
Y2F0ZSBubyByYW5nZSByZXN0cmljdGlvbi4KLSAgLy8KLSAgLy8gUmV0dXJucyBhbiBlcnJvciBp
ZiB0aGUgdHJhbnNwb3J0IHdhc24ndCBzdWNjZXNzZnVsbHkgY3JlYXRlZC4KLSAgdmlydHVhbCBS
VENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxVZHBUcmFuc3BvcnRJbnRlcmZhY2U+PgotICBDcmVh
dGVVZHBUcmFuc3BvcnQoaW50IGZhbWlseSwgdWludDE2X3QgbWluX3BvcnQsIHVpbnQxNl90IG1h
eF9wb3J0KSA9IDA7Ci0KLSAgLy8gTWV0aG9kIGZvciBjb252ZW5pZW5jZSB0aGF0IGhhcyBubyBw
b3J0IHJhbmdlIHJlc3RyaWN0aW9ucy4KLSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8VWRw
VHJhbnNwb3J0SW50ZXJmYWNlPj4gQ3JlYXRlVWRwVHJhbnNwb3J0KAotICAgICAgaW50IGZhbWls
eSkgewotICAgIHJldHVybiBDcmVhdGVVZHBUcmFuc3BvcnQoZmFtaWx5LCAwLCAwKTsKLSAgfQot
Ci0gIC8vIE5PVEU6IFRoZSBtZXRob2RzIGJlbG93IHRvIGNyZWF0ZSB0cmFja3Mvc291cmNlcyBy
ZXR1cm4gc2NvcGVkX3JlZnB0cnMKLSAgLy8gcmF0aGVyIHRoYW4gdW5pcXVlX3B0cnMsIGJlY2F1
c2UgdGhlc2UgaW50ZXJmYWNlcyBhcmUgYWxzbyB1c2VkIHdpdGgKLSAgLy8gUGVlckNvbm5lY3Rp
b24sIHdoZXJlIGV2ZXJ5dGhpbmcgaXMgcmVmLWNvdW50ZWQuCi0KLSAgLy8gQ3JlYXRlcyBhIGF1
ZGlvIHNvdXJjZSByZXByZXNlbnRpbmcgdGhlIGRlZmF1bHQgbWljcm9waG9uZSBpbnB1dC4KLSAg
Ly8gfG9wdGlvbnN8IGRlY2lkZXMgYXVkaW8gcHJvY2Vzc2luZyBzZXR0aW5ncy4KLSAgdmlydHVh
bCBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Tb3VyY2VJbnRlcmZhY2U+IENyZWF0ZUF1ZGlvU291
cmNlKAotICAgICAgY29uc3QgY3JpY2tldDo6QXVkaW9PcHRpb25zJiBvcHRpb25zKSA9IDA7Ci0K
LSAgLy8gVmVyc2lvbiBvZiB0aGUgYWJvdmUgbWV0aG9kIHRoYXQgdXNlcyBkZWZhdWx0IG9wdGlv
bnMuCi0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1NvdXJjZUludGVyZmFjZT4gQ3JlYXRlQXVk
aW9Tb3VyY2UoKSB7Ci0gICAgcmV0dXJuIENyZWF0ZUF1ZGlvU291cmNlKGNyaWNrZXQ6OkF1ZGlv
T3B0aW9ucygpKTsKLSAgfQotCi0gIC8vIENyZWF0ZXMgYSBuZXcgbG9jYWwgdmlkZW8gdHJhY2sg
d3JhcHBpbmcgfHNvdXJjZXwuIFRoZSBzYW1lIHxzb3VyY2V8IGNhbgotICAvLyBiZSB1c2VkIGlu
IHNldmVyYWwgdHJhY2tzLgotICB2aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlb1RyYWNr
SW50ZXJmYWNlPiBDcmVhdGVWaWRlb1RyYWNrKAotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlk
LAotICAgICAgVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZSogc291cmNlKSA9IDA7Ci0KLSAgLy8g
Q3JlYXRlcyBhbiBuZXcgbG9jYWwgYXVkaW8gdHJhY2sgd3JhcHBpbmcgfHNvdXJjZXwuCi0gIHZp
cnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvVHJhY2tJbnRlcmZhY2U+IENyZWF0ZUF1ZGlv
VHJhY2soCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaWQsCi0gICAgICBBdWRpb1NvdXJjZUlu
dGVyZmFjZSogc291cmNlKSA9IDA7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNl
bmRpZiAgLy8gQVBJX09SVENfT1JUQ0ZBQ1RPUllJTlRFUkZBQ0VfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL29ydGNydHBy
ZWNlaXZlcmludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL29ydGMvb3J0Y3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDU5ZmY5Nzc2MjEzNTM3MmE5ZjFiMjUwYzM5YjVkNDc3Y2I4ZTIwYTQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvb3J0Y3J0cHJlY2VpdmVy
aW50ZXJmYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgotICogIENvcHly
aWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
LSAqLwotCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgaW50ZXJmYWNlcyBmb3IgUnRwUmVjZWl2ZXJz
OgotLy8gaHR0cDovL3B1YmxpY2F0aW9ucy5vcnRjLm9yZy8yMDE2LzIwMTYxMjAyLyNydGNydHBy
ZWNlaXZlcioKLS8vCi0vLyBIb3dldmVyLCB1bmRlcm5lYXRoIHRoZSBSdHBSZWNlaXZlciBpcyBh
biBSdHBUcmFuc3BvcnQsIHJhdGhlciB0aGFuIGEKLS8vIER0bHNUcmFuc3BvcnQuIFRoaXMgaXMg
dG8gYWxsb3cgZGlmZmVyZW50IHR5cGVzIG9mIFJUUCB0cmFuc3BvcnRzIChiZXNpZGVzCi0vLyBE
VExTLVNSVFApIHRvIGJlIHVzZWQuCi0KLSNpZm5kZWYgQVBJX09SVENfT1JUQ1JUUFJFQ0VJVkVS
SU5URVJGQUNFX0hfCi0jZGVmaW5lIEFQSV9PUlRDX09SVENSVFBSRUNFSVZFUklOVEVSRkFDRV9I
XwotCi0jaW5jbHVkZSAiYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBp
L21lZGlhdHlwZXMuaCIKLSNpbmNsdWRlICJhcGkvb3J0Yy9ydHB0cmFuc3BvcnRpbnRlcmZhY2Uu
aCIKLSNpbmNsdWRlICJhcGkvcnRjZXJyb3IuaCIKLSNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVy
cy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gTm90ZTogU2luY2UgcmVjZWl2ZXIgY2Fw
YWJpbGl0aWVzIG1heSBkZXBlbmQgb24gaG93IHRoZSBPcnRjRmFjdG9yeSB3YXMKLS8vIGNyZWF0
ZWQsIGluc3RlYWQgb2YgYSBzdGF0aWMgIkdldENhcGFiaWxpdGllcyIgbWV0aG9kIG9uIHRoaXMg
aW50ZXJmYWNlLAotLy8gdGhlcmUgaXMgYSAiR2V0UnRwUmVjZWl2ZXJDYXBhYmlsaXRpZXMiIG1l
dGhvZCBvbiB0aGUgT3J0Y0ZhY3RvcnkuCi1jbGFzcyBPcnRjUnRwUmVjZWl2ZXJJbnRlcmZhY2Ug
ewotIHB1YmxpYzoKLSAgdmlydHVhbCB+T3J0Y1J0cFJlY2VpdmVySW50ZXJmYWNlKCkge30KLQot
ICAvLyBSZXR1cm5zIGEgdHJhY2sgcmVwcmVzZW50aW5nIHRoZSBtZWRpYSByZWNlaXZlZCBieSB0
aGlzIHJlY2VpdmVyLgotICAvLwotICAvLyBDdXJyZW50bHksIHRoaXMgd2lsbCByZXR1cm4gbnVs
bCB1bnRpbCBSZWNlaXZlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseQotICAvLyBjYWxsZWQuIEFsc28s
IGEgbmV3IHRyYWNrIHdpbGwgYmUgY3JlYXRlZCBldmVyeSB0aW1lIHRoZSBwcmltYXJ5IFNTUkMK
LSAgLy8gY2hhbmdlcy4KLSAgLy8KLSAgLy8gSWYgZW5jb2RpbmdzIGFyZSByZW1vdmVkLCBHZXRU
cmFjayB3aWxsIHJldHVybiBudWxsLiBUaG91Z2ggZGVhY3RpdmF0aW5nCi0gIC8vIGFuIGVuY29k
aW5nIChzZXR0aW5nIHxhY3RpdmV8IHRvIGZhbHNlKSB3aWxsIG5vdCBkbyB0aGlzLgotICAvLwot
ICAvLyBJbiB0aGUgZnV0dXJlLCB0aGVzZSBsaW1pdGF0aW9ucyB3aWxsIGJlIGZpeGVkLCBhbmQg
R2V0VHJhY2sgd2lsbCByZXR1cm4KLSAgLy8gdGhlIHNhbWUgdHJhY2sgZm9yIHRoZSBsaWZldGlt
ZSBvZiB0aGUgUnRwUmVjZWl2ZXIuIFNvIGl0J3Mgbm90Ci0gIC8vIHJlY29tbWVuZGVkIHRvIHdy
aXRlIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoaXMgbm9uLXN0YW5kYXJkIGJlaGF2aW9yLgotICB2
aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlPiBHZXRU
cmFjaygpIGNvbnN0ID0gMDsKLQotICAvLyBPbmNlIHN1cHBvcnRlZCwgd2lsbCBzd2l0Y2ggdG8g
cmVjZWl2aW5nIG1lZGlhIG9uIGEgbmV3IHRyYW5zcG9ydC4KLSAgLy8gSG93ZXZlciwgdGhpcyBp
cyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBhbmQgd2lsbCBhbHdheXMgcmV0dXJuIGFuIGVycm9y
LgotICB2aXJ0dWFsIFJUQ0Vycm9yIFNldFRyYW5zcG9ydChSdHBUcmFuc3BvcnRJbnRlcmZhY2Uq
IHRyYW5zcG9ydCkgPSAwOwotICAvLyBSZXR1cm5zIHByZXZpb3VzbHkgc2V0IChvciBjb25zdHJ1
Y3RlZC13aXRoKSB0cmFuc3BvcnQuCi0gIHZpcnR1YWwgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBH
ZXRUcmFuc3BvcnQoKSBjb25zdCA9IDA7Ci0KLSAgLy8gU3RhcnQgcmVjZWl2aW5nIG1lZGlhIHdp
dGggfHBhcmFtZXRlcnN8IChpZiB8cGFyYW1ldGVyc3wgY29udGFpbnMgYW4KLSAgLy8gYWN0aXZl
IGVuY29kaW5nKS4KLSAgLy8KLSAgLy8gVGhlcmUgYXJlIG5vIGxpbWl0YXRpb25zIHRvIGhvdyB0
aGUgcGFyYW1ldGVycyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGUKLSAgLy8gaW5pdGlhbCBjYWxs
IHRvIFJlY2VpdmUsIGFzIGxvbmcgYXMgdGhleSdyZSB2YWxpZCAoZm9yIGV4YW1wbGUsIHRoZXkg
Y2FuJ3QKLSAgLy8gdXNlIHRoZSBzYW1lIHBheWxvYWQgdHlwZSBmb3IgdHdvIGNvZGVjcykuCi0g
IHZpcnR1YWwgUlRDRXJyb3IgUmVjZWl2ZShjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KSA9IDA7Ci0gIC8vIFJldHVybnMgcGFyYW1ldGVycyB0aGF0IHdlcmUgbGFzdCBzdWNjZXNzZnVs
bHkgcGFzc2VkIGludG8gUmVjZWl2ZSwgb3IKLSAgLy8gZW1wdHkgcGFyYW1ldGVycyBpZiB0aGF0
IGhhc24ndCB5ZXQgb2NjdXJyZWQuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCBmb3IgcGFyYW1ldGVy
cyB0aGF0IGFyZSBkZXNjcmliZWQgYXMgaGF2aW5nIGFuICJpbXBsZW1lbnRhdGlvbgotICAvLyBk
ZWZhdWx0IiB2YWx1ZSBjaG9zZW4sIEdldFBhcmFtZXRlcnMoKSB3aWxsIHJldHVybiB0aG9zZSBj
aG9zZW4gZGVmYXVsdHMsCi0gIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBTU1JDcyB3aGljaCBo
YXZlIHNwZWNpYWwgYmVoYXZpb3IuIFNlZQotICAvLyBydHBwYXJhbWV0ZXJzLmggZm9yIG1vcmUg
ZGV0YWlscy4KLSAgdmlydHVhbCBSdHBQYXJhbWV0ZXJzIEdldFBhcmFtZXRlcnMoKSBjb25zdCA9
IDA7Ci0KLSAgLy8gQXVkaW8gb3IgdmlkZW8gcmVjZWl2ZXI/Ci0gIC8vCi0gIC8vIE9uY2UgR2V0
VHJhY2soKSBzdGFydHMgYWx3YXlzIHJldHVybmluZyBhIHRyYWNrLCB0aGlzIG1ldGhvZCB3aWxs
IGJlCi0gIC8vIHJlZHVuZGFudCwgYXMgb25lIGNhbiBjYWxsICJHZXRUcmFjaygpLT5raW5kKCki
LiBIb3dldmVyLCBpdCdzIHN0aWxsIGEKLSAgLy8gbmljZSBjb252ZW5pZW5jZSwgYW5kIGlzIHN5
bW1ldHJpYyB3aXRoIE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U6OkdldEtpbmQuCi0gIHZpcnR1YWwg
Y3JpY2tldDo6TWVkaWFUeXBlIEdldEtpbmQoKSBjb25zdCA9IDA7Ci0KLSAgLy8gVE9ETyhkZWFk
YmVlZik6IEdldENvbnRyaWJ1dGluZ1NvdXJjZXMKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKLQotI2VuZGlmICAvLyBBUElfT1JUQ19PUlRDUlRQUkVDRUlWRVJJTlRFUkZBQ0VfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9v
cnRjL29ydGNydHBzZW5kZXJpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL29ydGNydHBzZW5kZXJpbnRlcmZhY2UuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ0ZGZhYTc5MDdmZmMyOGM3NzE2YzZiZWQwNzI2ZWVi
NGQ4ZmVjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9vcnRjcnRw
c2VuZGVyaW50ZXJmYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KLSAqLwotCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgaW50ZXJmYWNlcyBmb3IgUnRwU2Vu
ZGVyczoKLS8vIGh0dHA6Ly9wdWJsaWNhdGlvbnMub3J0Yy5vcmcvMjAxNi8yMDE2MTIwMi8jcnRj
cnRwc2VuZGVyKgotLy8KLS8vIEhvd2V2ZXIsIHVuZGVybmVhdGggdGhlIFJ0cFNlbmRlciBpcyBh
biBSdHBUcmFuc3BvcnQsIHJhdGhlciB0aGFuIGEKLS8vIER0bHNUcmFuc3BvcnQuIFRoaXMgaXMg
dG8gYWxsb3cgZGlmZmVyZW50IHR5cGVzIG9mIFJUUCB0cmFuc3BvcnRzIChiZXNpZGVzCi0vLyBE
VExTLVNSVFApIHRvIGJlIHVzZWQuCi0KLSNpZm5kZWYgQVBJX09SVENfT1JUQ1JUUFNFTkRFUklO
VEVSRkFDRV9IXwotI2RlZmluZSBBUElfT1JUQ19PUlRDUlRQU0VOREVSSU5URVJGQUNFX0hfCi0K
LSNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvbWVk
aWF0eXBlcy5oIgotI2luY2x1ZGUgImFwaS9vcnRjL3J0cHRyYW5zcG9ydGludGVyZmFjZS5oIgot
I2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgotI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgi
Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBOb3RlOiBTaW5jZSBzZW5kZXIgY2FwYWJpbGl0
aWVzIG1heSBkZXBlbmQgb24gaG93IHRoZSBPcnRjRmFjdG9yeSB3YXMKLS8vIGNyZWF0ZWQsIGlu
c3RlYWQgb2YgYSBzdGF0aWMgIkdldENhcGFiaWxpdGllcyIgbWV0aG9kIG9uIHRoaXMgaW50ZXJm
YWNlLAotLy8gdGhlcmUgaXMgYSAiR2V0UnRwU2VuZGVyQ2FwYWJpbGl0aWVzIiBtZXRob2Qgb24g
dGhlIE9ydGNGYWN0b3J5LgotY2xhc3MgT3J0Y1J0cFNlbmRlckludGVyZmFjZSB7Ci0gcHVibGlj
OgotICB2aXJ0dWFsIH5PcnRjUnRwU2VuZGVySW50ZXJmYWNlKCkge30KLQotICAvLyBTZXRzIHRo
ZSBzb3VyY2Ugb2YgbWVkaWEgdGhhdCB3aWxsIGJlIHNlbnQgYnkgdGhpcyBzZW5kZXIuCi0gIC8v
Ci0gIC8vIElmIFNlbmQgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQsIHdpbGwgaW1tZWRpYXRlbHkg
c3dpdGNoIHRvIHNlbmRpbmcgdGhpcwotICAvLyB0cmFjay4gSWYgfHRyYWNrfCBpcyBudWxsLCB3
aWxsIHN0b3Agc2VuZGluZyBtZWRpYS4KLSAgLy8KLSAgLy8gUmV0dXJucyBJTlZBTElEX1BBUkFN
RVRFUiBlcnJvciBpZiBhbiBhdWRpbyB0cmFjayBpcyBzZXQgb24gYSB2aWRlbwotICAvLyBSdHBT
ZW5kZXIsIG9yIHZpY2UtdmVyc2EuCi0gIHZpcnR1YWwgUlRDRXJyb3IgU2V0VHJhY2soTWVkaWFT
dHJlYW1UcmFja0ludGVyZmFjZSogdHJhY2spID0gMDsKLSAgLy8gUmV0dXJucyBwcmV2aW91c2x5
IHNldCAob3IgY29uc3RydWN0ZWQtd2l0aCkgdHJhY2suCi0gIHZpcnR1YWwgcnRjOjpzY29wZWRf
cmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+IEdldFRyYWNrKCkgY29uc3QgPSAwOwot
Ci0gIC8vIE9uY2Ugc3VwcG9ydGVkLCB3aWxsIHN3aXRjaCB0byBzZW5kaW5nIG1lZGlhIG9uIGEg
bmV3IHRyYW5zcG9ydC4gSG93ZXZlciwKLSAgLy8gdGhpcyBpcyBub3QgY3VycmVudGx5IHN1cHBv
cnRlZCBhbmQgd2lsbCBhbHdheXMgcmV0dXJuIGFuIGVycm9yLgotICB2aXJ0dWFsIFJUQ0Vycm9y
IFNldFRyYW5zcG9ydChSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgPSAwOwotICAv
LyBSZXR1cm5zIHByZXZpb3VzbHkgc2V0IChvciBjb25zdHJ1Y3RlZC13aXRoKSB0cmFuc3BvcnQu
Ci0gIHZpcnR1YWwgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiBHZXRUcmFuc3BvcnQoKSBjb25zdCA9
IDA7Ci0KLSAgLy8gU3RhcnQgc2VuZGluZyBtZWRpYSB3aXRoIHxwYXJhbWV0ZXJzfCAoaWYgfHBh
cmFtZXRlcnN8IGNvbnRhaW5zIGFuIGFjdGl2ZQotICAvLyBlbmNvZGluZykuCi0gIC8vCi0gIC8v
IFRoZXJlIGFyZSBubyBsaW1pdGF0aW9ucyB0byBob3cgdGhlIHBhcmFtZXRlcnMgY2FuIGJlIGNo
YW5nZWQgYWZ0ZXIgdGhlCi0gIC8vIGluaXRpYWwgY2FsbCB0byBTZW5kLCBhcyBsb25nIGFzIHRo
ZXkncmUgdmFsaWQgKGZvciBleGFtcGxlLCB0aGV5IGNhbid0Ci0gIC8vIHVzZSB0aGUgc2FtZSBw
YXlsb2FkIHR5cGUgZm9yIHR3byBjb2RlY3MpLgotICB2aXJ0dWFsIFJUQ0Vycm9yIFNlbmQoY29u
c3QgUnRwUGFyYW1ldGVycyYgcGFyYW1ldGVycykgPSAwOwotICAvLyBSZXR1cm5zIHBhcmFtZXRl
cnMgdGhhdCB3ZXJlIGxhc3Qgc3VjY2Vzc2Z1bGx5IHBhc3NlZCBpbnRvIFNlbmQsIG9yIGVtcHR5
Ci0gIC8vIHBhcmFtZXRlcnMgaWYgdGhhdCBoYXNuJ3QgeWV0IG9jY3VycmVkLgotICAvLwotICAv
LyBOb3RlIHRoYXQgZm9yIHBhcmFtZXRlcnMgdGhhdCBhcmUgZGVzY3JpYmVkIGFzIGhhdmluZyBh
biAiaW1wbGVtZW50YXRpb24KLSAgLy8gZGVmYXVsdCIgdmFsdWUgY2hvc2VuLCBHZXRQYXJhbWV0
ZXJzKCkgd2lsbCByZXR1cm4gdGhvc2UgY2hvc2VuIGRlZmF1bHRzLAotICAvLyB3aXRoIHRoZSBl
eGNlcHRpb24gb2YgU1NSQ3Mgd2hpY2ggaGF2ZSBzcGVjaWFsIGJlaGF2aW9yLiBTZWUKLSAgLy8g
cnRwcGFyYW1ldGVycy5oIGZvciBtb3JlIGRldGFpbHMuCi0gIHZpcnR1YWwgUnRwUGFyYW1ldGVy
cyBHZXRQYXJhbWV0ZXJzKCkgY29uc3QgPSAwOwotCi0gIC8vIEF1ZGlvIG9yIHZpZGVvIHNlbmRl
cj8KLSAgdmlydHVhbCBjcmlja2V0OjpNZWRpYVR5cGUgR2V0S2luZCgpIGNvbnN0ID0gMDsKLQot
ICAvLyBUT0RPKGRlYWRiZWVmKTogU1NSQyBjb25mbGljdCBzaWduYWwuCi19OwotCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVBJX09SVENfT1JUQ1JUUFNFTkRFUklOVEVS
RkFDRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL29ydGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcmludGVyZmFjZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvcnRwdHJhbnNwb3J0
Y29udHJvbGxlcmludGVyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWYz
N2ZhN2EwZDVkMjA4ZGQ3NjllM2Q5YmNjMDM3N2I5OTc1Y2FiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJpbnRlcmZhY2UuaAor
KysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
LSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5k
ZWYgQVBJX09SVENfUlRQVFJBTlNQT1JUQ09OVFJPTExFUklOVEVSRkFDRV9IXwotI2RlZmluZSBB
UElfT1JUQ19SVFBUUkFOU1BPUlRDT05UUk9MTEVSSU5URVJGQUNFX0hfCi0KLSNpbmNsdWRlIDx2
ZWN0b3I+Ci0KLSNpbmNsdWRlICJhcGkvb3J0Yy9ydHB0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLQot
bmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVy
OwotCi0vLyBVc2VkIHRvIGdyb3VwIFJUUCB0cmFuc3BvcnRzIGJldHdlZW4gYSBsb2NhbCBlbmRw
b2ludCBhbmQgdGhlIHNhbWUgcmVtb3RlCi0vLyBlbmRwb2ludCwgZm9yIHRoZSBwdXJwb3NlIG9m
IHNoYXJpbmcgYmFuZHdpZHRoIGVzdGltYXRpb24gYW5kIG90aGVyIHRoaW5ncy4KLS8vCi0vLyBD
b21wYXJpbmcgdGhpcyB0byB0aGUgUGVlckNvbm5lY3Rpb24gbW9kZWwsIG5vbi1idWRsZWQgYXVk
aW8vdmlkZW8gd291bGQgdXNlCi0vLyB0d28gUnRwVHJhbnNwb3J0cyB3aXRoIGEgc2luZ2xlIFJ0
cFRyYW5zcG9ydENvbnRyb2xsZXIsIHdoZXJlYXMgYnVuZGxlZAotLy8gbWVkaWEgd291bGQgdXNl
IGEgc2luZ2xlIFJ0cFRyYW5zcG9ydCwgYW5kIHR3byBQZWVyQ29ubmVjdGlvbnMgd291bGQgdXNl
Ci0vLyBpbmRlcGVuZGVudCBSdHBUcmFuc3BvcnRDb250cm9sbGVycy4KLS8vCi0vLyBSdHBUcmFu
c3BvcnRzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250cm9sbGVyIHdoZW4gdGhleSdyZSBj
cmVhdGVkLCBieQotLy8gcGFzc2luZyB0aGUgY29udHJvbGxlciBpbnRvIE9ydGNGYWN0b3J5J3Mg
cmVsZXZhbnQgIkNyZWF0ZVJ0cFRyYW5zcG9ydCIKLS8vIG1ldGhvZC4gV2hlbiBhIHRyYW5zcG9y
dCBpcyBkZXN0cm95ZWQsIGl0J3MgYXV0b21hdGljYWxseSBkaXNhc3NvY2lhdGVkLgotLy8gR2V0
VHJhbnNwb3J0cyByZXR1cm5zIGFsbCBjdXJyZW50bHkgYXNzb2NpYXRlZCB0cmFuc3BvcnRzLgot
Ly8KLS8vIFRoaXMgaXMgdGhlIFJUUCBlcXVpdmFsZW50IG9mICJJY2VUcmFuc3BvcnRDb250cm9s
bGVyIiBpbiBPUlRDOyBSdHBUcmFuc3BvcnQKLS8vIGlzIHRvIFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXIgYXMgSWNlVHJhbnNwb3J0IGlzIHRvIEljZVRyYW5zcG9ydENvbnRyb2xsZXIuCi1jbGFzcyBS
dHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgflJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UoKSB7fQotCi0gIC8vIFJldHVybnMgYWxsIHRy
YW5zcG9ydHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udHJvbGxlciAoc2VlIGV4cGxhbmF0aW9u
Ci0gIC8vIGFib3ZlKS4gTm8gb3JkZXJpbmcgaXMgZ3VhcmFudGVlZC4KLSAgdmlydHVhbCBzdGQ6
OnZlY3RvcjxSdHBUcmFuc3BvcnRJbnRlcmZhY2UqPiBHZXRUcmFuc3BvcnRzKCkgY29uc3QgPSAw
OwotCi0gcHJvdGVjdGVkOgotICAvLyBPbmx5IGZvciBpbnRlcm5hbCB1c2UuIFJldHVybnMgYSBw
b2ludGVyIHRvIGFuIGludGVybmFsIGludGVyZmFjZSwgZm9yIHVzZQotICAvLyBieSB0aGUgaW1w
bGVtZW50YXRpb24uCi0gIHZpcnR1YWwgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIEdl
dEludGVybmFsKCkgPSAwOwotCi0gIC8vIENsYXNzZXMgdGhhdCBjYW4gdXNlIHRoaXMgaW50ZXJu
YWwgaW50ZXJmYWNlLgotICBmcmllbmQgY2xhc3MgT3J0Y0ZhY3Rvcnk7Ci0gIGZyaWVuZCBjbGFz
cyBSdHBUcmFuc3BvcnRBZGFwdGVyOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0j
ZW5kaWYgIC8vIEFQSV9PUlRDX1JUUFRSQU5TUE9SVENPTlRST0xMRVJJTlRFUkZBQ0VfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9v
cnRjL3J0cHRyYW5zcG9ydGludGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL29ydGMvcnRwdHJhbnNwb3J0aW50ZXJmYWNlLmgKaW5kZXggYjBk
MzBlODU2MGUyN2E1MjhiYTY3YTUzNTRhZmIzMmRhMGEyZGI2NC4uNGI5ZDE2MTU4ZjY1YTA0ODFk
Y2Y3NjUzZjZiNDJmNGRlOWQ4MmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvcnRwdHJhbnNwb3J0aW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL29ydGMvcnRw
dHJhbnNwb3J0aW50ZXJmYWNlLmgKQEAgLTE4LDcgKzE4LDYgQEAKICNpbmNsdWRlICJhcGkvcnRj
ZXJyb3IuaCIKICNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKICNpbmNsdWRlICJhcGkvcnRw
cGFyYW1ldGVycy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxk
L2luY2x1ZGUpCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9zZXNzaW9uZGVzY3JpcHRp
b24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0
Yy9zZXNzaW9uZGVzY3JpcHRpb24uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEw
Nzg4ODRlY2I0NWIyMDc4OTY1MzRhODkwMjhhMTE1NzUzZjllNzcuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL29ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmNjCisrKyAvZGV2L251
bGwKQEAgLTEsMTMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgImFwaS9v
cnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHt9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9z
ZXNzaW9uZGVzY3JpcHRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlYmJhYTI3ZDZmZmMwMDExNDUwMzI2ZTUxYzE3YzhiMTdkZjlmOTUyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbi5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lm
bmRlZiBBUElfT1JUQ19TRVNTSU9OREVTQ1JJUFRJT05fSF8KLSNkZWZpbmUgQVBJX09SVENfU0VT
U0lPTkRFU0NSSVBUSU9OX0hfCi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0
eT4KLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIEEgc3RydWN0dXJlZCByZXByZXNlbnRhdGlv
biBvZiBhbiBTRFAgc2Vzc2lvbiBkZXNjcmlwdGlvbi4KLWNsYXNzIFNlc3Npb25EZXNjcmlwdGlv
biB7Ci0gcHVibGljOgotICBTZXNzaW9uRGVzY3JpcHRpb24oaW50NjRfdCBzZXNzaW9uX2lkLCBz
dGQ6OnN0cmluZyBzZXNzaW9uX3ZlcnNpb24pCi0gICAgICA6IHNlc3Npb25faWRfKHNlc3Npb25f
aWQpLCBzZXNzaW9uX3ZlcnNpb25fKHN0ZDo6bW92ZShzZXNzaW9uX3ZlcnNpb24pKSB7fQotCi0g
IC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0NTY2I3NlY3Rpb24tNS4yCi0gIC8v
IG89PHVzZXJuYW1lPiA8c2Vzcy1pZD4gPHNlc3MtdmVyc2lvbj4gPG5ldHR5cGU+IDxhZGRydHlw
ZT4KLSAgLy8gICA8dW5pY2FzdC1hZGRyZXNzPgotICAvLyBzZXNzaW9uX2lkXyBpcyB0aGUgInNl
c3MtaWQiIGZpZWxkLgotICAvLyBzZXNzaW9uX3ZlcnNpb25fIGlzIHRoZSAic2Vzcy12ZXJzaW9u
IiBmaWVsZC4KLSAgaW50NjRfdCBzZXNzaW9uX2lkKCkgeyByZXR1cm4gc2Vzc2lvbl9pZF87IH0K
LSAgdm9pZCBzZXRfc2Vzc2lvbl9pZChpbnQ2NF90IHNlc3Npb25faWQpIHsgc2Vzc2lvbl9pZF8g
PSBzZXNzaW9uX2lkOyB9Ci0KLSAgY29uc3Qgc3RkOjpzdHJpbmcmIHNlc3Npb25fdmVyc2lvbigp
IGNvbnN0IHsgcmV0dXJuIHNlc3Npb25fdmVyc2lvbl87IH0KLSAgdm9pZCBzZXRfc2Vzc2lvbl92
ZXJzaW9uKHN0ZDo6c3RyaW5nIHNlc3Npb25fdmVyc2lvbikgewotICAgIHNlc3Npb25fdmVyc2lv
bl8gPSBzdGQ6Om1vdmUoc2Vzc2lvbl92ZXJzaW9uKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgaW50
NjRfdCBzZXNzaW9uX2lkXzsKLSAgc3RkOjpzdHJpbmcgc2Vzc2lvbl92ZXJzaW9uXzsKLX07Ci0K
LX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBBUElfT1JUQ19TRVNTSU9OREVT
Q1JJUFRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNjcmlwdGlvbl91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3Nlc3Npb25kZXNj
cmlwdGlvbl91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ2MTFj
NmM2YjJiZjdhMGJlNGY1YzkyMTY2ZjQwOTM0YjA1ZjcwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvb3J0Yy9zZXNzaW9uZGVzY3JpcHRpb25fdW5pdHRlc3QuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAi
YXBpL29ydGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC5oIgot
Ci1uYW1lc3BhY2Ugd2VicnRjIHsKLQotY2xhc3MgU2Vzc2lvbkRlc2NyaXB0aW9uVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHt9OwotCi1URVNUX0YoU2Vzc2lvbkRlc2NyaXB0aW9uVGVzdCwg
Q3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uKSB7Ci0gIFNlc3Npb25EZXNjcmlwdGlvbiBzKC0xLCAi
MCIpOwotICBFWFBFQ1RfRVEoLTEsIHMuc2Vzc2lvbl9pZCgpKTsKLSAgRVhQRUNUX0VRKCIwIiwg
cy5zZXNzaW9uX3ZlcnNpb24oKSk7Ci19Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvb3J0Yy91
ZHB0cmFuc3BvcnRpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9vcnRjL3VkcHRyYW5zcG9ydGludGVyZmFjZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmMjQ2YTI1ZTlkZGQwZjVlY2FmZTAwNjliYzg2M2QwMzA4ZWYyYjgx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9vcnRjL3VkcHRyYW5zcG9ydGlu
dGVyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0g
Ki8KLQotI2lmbmRlZiBBUElfT1JUQ19VRFBUUkFOU1BPUlRJTlRFUkZBQ0VfSF8KLSNkZWZpbmUg
QVBJX09SVENfVURQVFJBTlNQT1JUSU5URVJGQUNFX0hfCi0KLSNpbmNsdWRlICJhcGkvb3J0Yy9w
YWNrZXR0cmFuc3BvcnRpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvcHJveHkuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0v
LyBJbnRlcmZhY2UgZm9yIGEgcmF3IFVEUCB0cmFuc3BvcnQgKG5vdCB1c2luZyBJQ0UpLCBtZWFu
aW5nIGEgY29tYmluYXRpb24gb2YKLS8vIGEgbG9jYWwvcmVtb3RlIElQIGFkZHJlc3MvcG9ydC4K
LS8vCi0vLyBBbiBpbnN0YW5jZSBjYW4gYmUgaW5zdGFudGlhdGVkIHVzaW5nIE9ydGNGYWN0b3J5
LgotLy8KLS8vIEVhY2ggaW5zdGFuY2UgcmVzZXJ2ZXMgYSBVRFAgcG9ydCwgd2hpY2ggd2lsbCBi
ZSBmcmVlZCB3aGVuIHRoZQotLy8gVWRwVHJhbnNwb3J0SW50ZXJmYWNlIGRlc3RydWN0b3IgaXMg
Y2FsbGVkLgotLy8KLS8vIENhbGxpbmcgU2V0UmVtb3RlQWRkcmVzcyBzZXRzIHRoZSBkZXN0aW5h
dGlvbiBvZiBvdXRnb2luZyBwYWNrZXRzOyB3aXRob3V0IGEKLS8vIGRlc3RpbmF0aW9uLCBwYWNr
ZXRzIGNhbid0IGJlIHNlbnQsIGJ1dCB0aGV5IGNhbiBiZSByZWNlaXZlZC4KLWNsYXNzIFVkcFRy
YW5zcG9ydEludGVyZmFjZSA6IHB1YmxpYyB2aXJ0dWFsIFBhY2tldFRyYW5zcG9ydEludGVyZmFj
ZSB7Ci0gcHVibGljOgotICAvLyBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIHNvY2tldCBhbGxvY2F0
ZWQgZm9yIHRoaXMgdHJhbnNwb3J0LgotICB2aXJ0dWFsIHJ0Yzo6U29ja2V0QWRkcmVzcyBHZXRM
b2NhbEFkZHJlc3MoKSBjb25zdCA9IDA7Ci0KLSAgLy8gU2V0cyB0aGUgYWRkcmVzcyB0byB3aGlj
aCBwYWNrZXRzIHdpbGwgYmUgZGVsaXZlcmVkLgotICAvLwotICAvLyBDYWxsaW5nIHdpdGggYSAi
bmlsIiAoZGVmYXVsdC1jb25zdHJ1Y3RlZCkgYWRkcmVzcyBpcyBsZWdhbCwgYW5kIHVuc2V0cwot
ICAvLyBhbnkgcHJldmlvdXNseSBzZXQgZGVzdGluYXRpb24uCi0gIC8vCi0gIC8vIEhvd2V2ZXIs
IGNhbGxpbmcgd2l0aCBhbiBpbmNvbXBsZXRlIGFkZHJlc3MgKHBvcnQgb3IgSVAgbm90IHNldCkg
d2lsbAotICAvLyBmYWlsLgotICB2aXJ0dWFsIGJvb2wgU2V0UmVtb3RlQWRkcmVzcyhjb25zdCBy
dGM6OlNvY2tldEFkZHJlc3MmIGRlc3QpID0gMDsKLSAgLy8gU2ltcGxlIGdldHRlci4gSWYgbmV2
ZXIgc2V0LCByZXR1cm5zIG5pbCBhZGRyZXNzLgotICB2aXJ0dWFsIHJ0Yzo6U29ja2V0QWRkcmVz
cyBHZXRSZW1vdGVBZGRyZXNzKCkgY29uc3QgPSAwOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YwotCi0jZW5kaWYgIC8vIEFQSV9PUlRDX1VEUFRSQU5TUE9SVElOVEVSRkFDRV9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Bl
ZXJjb25uZWN0aW9uaW50ZXJmYWNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmNjCmluZGV4IGI0MTQ4ZDc0
ODBhYWJlNDQzY2I5OWU3NGRmNzQyZTBkNTg0YTE1MDcuLmYyOTUzYjViMGMyOGM2MTFmYjEwZWZi
ZjgzMDZkZTI0NWU2NzNmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25p
bnRlcmZhY2UuY2MKQEAgLTE1OSw2ICsxNTksMTEgQEAgUlRDRXJyb3IgUGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlNldEJpdHJhdGUoCiAgIHJldHVybiBTZXRCaXRyYXRlKGJpdHJhdGUpOwogfQog
CitQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZQorUGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OnBlZXJfY29ubmVjdGlvbl9zdGF0ZSgpIHsKKyAgcmV0dXJuIFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlOjprTmV3OworfQorCiBib29s
IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpTdGFydFJ0Y0V2ZW50TG9nKHJ0Yzo6UGxhdGZvcm1G
aWxlIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgbWF4X3NpemVfYnl0ZXMpIHsKICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3BlZXJjb25uZWN0
aW9uaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaAppbmRleCAxYzMyYjY5NjkyZDAwZTZlZmFi
NzgyYzViZGJhMWNkN2E4MzBlMmM4Li41NDE2MWI4ZGE1OWIwMjI2MDgzYTZhYmY5ODI5NmFlODMz
OWRmNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaApA
QCAtNjksNyArNjksNiBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4K
LSNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9h
c3luY3Jlc29sdmVyZmFjdG9yeS5oIgpAQCAtNzgsMTAgKzc3LDExIEBACiAjaW5jbHVkZSAiYXBp
L2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVk
aW9fb3B0aW9ucy5oIgogI2luY2x1ZGUgImFwaS9jYWxsL2NhbGxmYWN0b3J5aW50ZXJmYWNlLmgi
CisjaW5jbHVkZSAiYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmgiCiAjaW5jbHVkZSAiYXBpL2Rh
dGFjaGFubmVsaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL2R0bWZzZW5kZXJpbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJhcGkvZmVjX2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJhcGkvanNlcC5o
IgorI2luY2x1ZGUgImFwaS9tZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
YXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCiAj
aW5jbHVkZSAiYXBpL3J0Y2V2ZW50bG9nb3V0cHV0LmgiCkBAIC05NCw3ICs5NCw2IEBACiAjaW5j
bHVkZSAiYXBpL3RyYW5zcG9ydC9iaXRyYXRlX3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiYXBpL3Ry
YW5zcG9ydC9uZXR3b3JrX2NvbnRyb2wuaCIKICNpbmNsdWRlICJhcGkvdHVybmN1c3RvbWl6ZXIu
aCIKLSNpbmNsdWRlICJhcGkvdW1hbWV0cmljcy5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ydGNfZXZlbnRfbG9nX2ZhY3RvcnlfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibWVk
aWEvYmFzZS9tZWRpYWNvbmZpZy5oIgogLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvNjM1Myk6IGNy
aWNrZXQ6OlZpZGVvQ2FwdHVyZXIgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkCkBAIC0xMTQsNiAr
MTEzLDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xzdHJlYW1h
ZGFwdGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFt
ZXNwYWNlIHJ0YyB7CiBjbGFzcyBTU0xJZGVudGl0eTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBlbnVt
IGNsYXNzIFNkcFNlbWFudGljcyB7IGtQbGFuQiwga1VuaWZpZWRQbGFuIH07CiAKIGNsYXNzIFBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2Ugewog
IHB1YmxpYzoKLSAgLy8gU2VlIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvI3N0YXRl
LWRlZmluaXRpb25zCisgIC8vIFNlZSBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXBjLyNk
b20tcnRjc2lnbmFsaW5nc3RhdGUKICAgZW51bSBTaWduYWxpbmdTdGF0ZSB7CiAgICAga1N0YWJs
ZSwKICAgICBrSGF2ZUxvY2FsT2ZmZXIsCkBAIC0xNzAsMTIgKzE3MCwyNCBAQCBjbGFzcyBQZWVy
Q29ubmVjdGlvbkludGVyZmFjZSA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICAg
ICBrQ2xvc2VkLAogICB9OwogCisgIC8vIFNlZSBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRj
LXBjLyNkb20tcnRjaWNlZ2F0aGVyaW5nc3RhdGUKICAgZW51bSBJY2VHYXRoZXJpbmdTdGF0ZSB7
CiAgICAga0ljZUdhdGhlcmluZ05ldywKICAgICBrSWNlR2F0aGVyaW5nR2F0aGVyaW5nLAogICAg
IGtJY2VHYXRoZXJpbmdDb21wbGV0ZQogICB9OwogCisgIC8vIFNlZSBodHRwczovL3czYy5naXRo
dWIuaW8vd2VicnRjLXBjLyNkb20tcnRjcGVlcmNvbm5lY3Rpb25zdGF0ZQorICBlbnVtIGNsYXNz
IFBlZXJDb25uZWN0aW9uU3RhdGUgeworICAgIGtOZXcsCisgICAga0Nvbm5lY3RpbmcsCisgICAg
a0Nvbm5lY3RlZCwKKyAgICBrRGlzY29ubmVjdGVkLAorICAgIGtGYWlsZWQsCisgICAga0Nsb3Nl
ZCwKKyAgfTsKKworICAvLyBTZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1wYy8jZG9t
LXJ0Y2ljZWNvbm5lY3Rpb25zdGF0ZQogICBlbnVtIEljZUNvbm5lY3Rpb25TdGF0ZSB7CiAgICAg
a0ljZUNvbm5lY3Rpb25OZXcsCiAgICAga0ljZUNvbm5lY3Rpb25DaGVja2luZywKQEAgLTI4Miw3
ICsyOTQsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVyZmFjZSA6IHB1YmxpYyBydGM6OlJl
ZkNvdW50SW50ZXJmYWNlIHsKICAgLy8gb3JnYW5pemF0aW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlv
biwgd2hpY2ggaXNuJ3Qgc3RhYmxlLiBTbyB3ZQogICAvLyBuZWVkIGdldHRlcnMgYW5kIHNldHRl
cnMgYXQgbGVhc3QgZm9yIGZpZWxkcyB3aGljaCBhcHBsaWNhdGlvbnMKICAgLy8gYXJlIGludGVy
ZXN0ZWQgaW4uCi0gIHN0cnVjdCBSVENDb25maWd1cmF0aW9uIHsKKyAgc3RydWN0IFJUQ19FWFBP
UlQgUlRDQ29uZmlndXJhdGlvbiB7CiAgICAgLy8gVGhpcyBzdHJ1Y3QgaXMgc3ViamVjdCB0byBy
ZW9yZ2FuaXphdGlvbiwgYm90aCBmb3IgbmFtaW5nCiAgICAgLy8gY29uc2lzdGVuY3ksIGFuZCB0
byBncm91cCBzZXR0aW5ncyB0byBtYXRjaCB3aGVyZSB0aGV5IGFyZSB1c2VkCiAgICAgLy8gaW4g
dGhlIGltcGxlbWVudGF0aW9uLiBUbyBkbyB0aGF0LCB3ZSBuZWVkIGdldHRlciBhbmQgc2V0dGVy
CkBAIC0zMjgsNiArMzQwLDIyIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlIDogcHVi
bGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICAgICAgbWVkaWFfY29uZmlnLnZpZGVvLmV4
cGVyaW1lbnRfY3B1X2xvYWRfZXN0aW1hdG9yID0gZW5hYmxlOwogICAgIH0KIAorICAgIGludCBh
dWRpb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcygpIGNvbnN0IHsKKyAgICAgIHJldHVybiBtZWRp
YV9jb25maWcuYXVkaW8ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM7CisgICAgfQorICAgIHZvaWQg
c2V0X2F1ZGlvX3J0Y3BfcmVwb3J0X2ludGVydmFsX21zKGludCBhdWRpb19ydGNwX3JlcG9ydF9p
bnRlcnZhbF9tcykgeworICAgICAgbWVkaWFfY29uZmlnLmF1ZGlvLnJ0Y3BfcmVwb3J0X2ludGVy
dmFsX21zID0KKyAgICAgICAgICBhdWRpb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9tczsKKyAgICB9
CisKKyAgICBpbnQgdmlkZW9fcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMoKSBjb25zdCB7CisgICAg
ICByZXR1cm4gbWVkaWFfY29uZmlnLnZpZGVvLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zOworICAg
IH0KKyAgICB2b2lkIHNldF92aWRlb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyhpbnQgdmlkZW9f
cnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMpIHsKKyAgICAgIG1lZGlhX2NvbmZpZy52aWRlby5ydGNw
X3JlcG9ydF9pbnRlcnZhbF9tcyA9CisgICAgICAgICAgdmlkZW9fcnRjcF9yZXBvcnRfaW50ZXJ2
YWxfbXM7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IGludCBrVW5kZWZpbmVkID0gLTE7CiAg
ICAgLy8gRGVmYXVsdCBtYXhpbXVtIG51bWJlciBvZiBwYWNrZXRzIGluIHRoZSBhdWRpbyBqaXR0
ZXIgYnVmZmVyLgogICAgIHN0YXRpYyBjb25zdCBpbnQga0F1ZGlvSml0dGVyQnVmZmVyTWF4UGFj
a2V0cyA9IDUwOwpAQCAtMzk0LDYgKzQyMiw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICAgIC8vIFVzZSBuZXcgY29t
YmluZWQgYXVkaW8vdmlkZW8gYmFuZHdpZHRoIGVzdGltYXRpb24/CiAgICAgYWJzbDo6b3B0aW9u
YWw8Ym9vbD4gY29tYmluZWRfYXVkaW9fdmlkZW9fYndlOwogCisgICAgLy8gVE9ETyhidWdzLndl
YnJ0Yy5vcmcvOTg5MSkgLSBNb3ZlIHRvIGNyeXB0b19vcHRpb25zCiAgICAgLy8gQ2FuIGJlIHVz
ZWQgdG8gZGlzYWJsZSBEVExTLVNSVFAuIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGRvbmUsIGJ1dCBj
YW4gYmUKICAgICAvLyB1c2VmdWwgZm9yIHRlc3RpbmcgcHVycG9zZXMsIGZvciBleGFtcGxlIGlu
IHNldHRpbmcgdXAgYSBsb29wYmFjayBjYWxsCiAgICAgLy8gd2l0aCBhIHNpbmdsZSBQZWVyQ29u
bmVjdGlvbi4KQEAgLTQyMSw2ICs0NTAsOSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZSA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICAgICAvLyBpZiBpdCBmYWxscyBi
ZWhpbmQuCiAgICAgYm9vbCBhdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSA9IGZh
bHNlOwogCisgICAgLy8gVGhlIG1pbmltdW0gZGVsYXkgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUg
YXVkaW8gaml0dGVyIGJ1ZmZlci4KKyAgICBpbnQgYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVs
YXlfbXMgPSAwOworCiAgICAgLy8gVGltZW91dCBpbiBtaWxsaXNlY29uZHMgYmVmb3JlIGFuIElD
RSBjYW5kaWRhdGUgcGFpciBpcyBjb25zaWRlcmVkIHRvIGJlCiAgICAgLy8gIm5vdCByZWNlaXZp
bmciLCBhZnRlciB3aGljaCBhIGxvd2VyIHByaW9yaXR5IGNhbmRpZGF0ZSBwYWlyIG1heSBiZQog
ICAgIC8vIHNlbGVjdGVkLgpAQCAtNTU2LDYgKzU4OCw3IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICAgIC8vIEZvciBh
bGwgb3RoZXIgdXNlcnMsIHNwZWNpZnkga1VuaWZpZWRQbGFuLgogICAgIFNkcFNlbWFudGljcyBz
ZHBfc2VtYW50aWNzID0gU2RwU2VtYW50aWNzOjprUGxhbkI7CiAKKyAgICAvLyBUT0RPKGJ1Z3Mu
d2VicnRjLm9yZy85ODkxKSAtIE1vdmUgdG8gY3J5cHRvX29wdGlvbnMgb3IgcmVtb3ZlLgogICAg
IC8vIEFjdGl2ZWx5IHJlc2V0IHRoZSBTUlRQIHBhcmFtZXRlcnMgd2hlbmV2ZXIgdGhlIERUTFMg
dHJhbnNwb3J0cwogICAgIC8vIHVuZGVybmVhdGggYXJlIHJlc2V0IGZvciBldmVyeSBvZmZlci9h
bnN3ZXIgbmVnb3RpYXRpb24uCiAgICAgLy8gVGhpcyBpcyBvbmx5IGludGVuZGVkIHRvIGJlIGEg
d29ya2Fyb3VuZCBmb3IgY3JidWcuY29tLzgzNTk1OApAQCAtNTYzLDYgKzU5NiwzNCBAQCBjbGFz
cyBQZWVyQ29ubmVjdGlvbkludGVyZmFjZSA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNl
IHsKICAgICAvLyBjb3JyZWN0bHkuIFRoaXMgZmxhZyB3aWxsIGJlIGRlcHJlY2F0ZWQgc29vbi4g
RG8gbm90IHJlbHkgb24gaXQuCiAgICAgYm9vbCBhY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMgPSBm
YWxzZTsKIAorICAgIC8vIElmIE1lZGlhVHJhbnNwb3J0RmFjdG9yeSBpcyBwcm92aWRlZCBpbiBQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnksIHRoaXMgZmxhZworICAgIC8vIGluZm9ybXMgUGVlckNvbm5l
Y3Rpb24gdGhhdCBpdCBzaG91bGQgdXNlIHRoZSBNZWRpYVRyYW5zcG9ydEludGVyZmFjZS4KKyAg
ICAvLyBJdCdzIGludmFsaWQgdG8gc2V0IGl0IHRvIHx0cnVlfCBpZiB0aGUgTWVkaWFUcmFuc3Bv
cnRGYWN0b3J5IHdhc24ndAorICAgIC8vIHByb3ZpZGVkLgorICAgIGJvb2wgdXNlX21lZGlhX3Ry
YW5zcG9ydCA9IGZhbHNlOworCisgICAgLy8gSWYgTWVkaWFUcmFuc3BvcnRGYWN0b3J5IGlzIHBy
b3ZpZGVkIGluIFBlZXJDb25uZWN0aW9uRmFjdG9yeSwgdGhpcyBmbGFnCisgICAgLy8gaW5mb3Jt
cyBQZWVyQ29ubmVjdGlvbiB0aGF0IGl0IHNob3VsZCB1c2UgdGhlIE1lZGlhVHJhbnNwb3J0SW50
ZXJmYWNlIGZvcgorICAgIC8vIGRhdGEgY2hhbm5lbHMuICBJdCdzIGludmFsaWQgdG8gc2V0IGl0
IHRvIHx0cnVlfCBpZiB0aGUKKyAgICAvLyBNZWRpYVRyYW5zcG9ydEZhY3Rvcnkgd2Fzbid0IHBy
b3ZpZGVkLiAgRGF0YSBjaGFubmVscyBvdmVyIG1lZGlhCisgICAgLy8gdHJhbnNwb3J0IGFyZSBu
b3QgY29tcGF0aWJsZSB3aXRoIFJUUCBvciBTQ1RQIGRhdGEgY2hhbm5lbHMuICBTZXR0aW5nCisg
ICAgLy8gYm90aCB8dXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVsc3wgYW5kCisg
ICAgLy8gfGVuYWJsZV9ydHBfZGF0YV9jaGFubmVsfCBpcyBpbnZhbGlkLgorICAgIGJvb2wgdXNl
X21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9IGZhbHNlOworCisgICAgLy8gRGVm
aW5lcyBhZHZhbmNlZCBvcHRpb25hbCBjcnlwdG9ncmFwaGljIHNldHRpbmdzIHJlbGF0ZWQgdG8g
U1JUUCBhbmQKKyAgICAvLyBmcmFtZSBlbmNyeXB0aW9uIGZvciBuYXRpdmUgV2ViUlRDLiBTZXR0
aW5nIHRoaXMgd2lsbCBvdmVyd3JpdGUgYW55CisgICAgLy8gc2V0dGluZ3Mgc2V0IGluIFBlZXJD
b25uZWN0aW9uRmFjdG9yeSAod2hpY2ggaXMgZGVwcmVjYXRlZCkuCisgICAgYWJzbDo6b3B0aW9u
YWw8Q3J5cHRvT3B0aW9ucz4gY3J5cHRvX29wdGlvbnM7CisKKyAgICAvLyBDb25maWd1cmUgaWYg
d2Ugc2hvdWxkIGluY2x1ZGUgdGhlIFNEUCBhdHRyaWJ1dGUgZXh0bWFwLWFsbG93LW1peGVkIGlu
CisgICAgLy8gb3VyIG9mZmVyLiBBbHRob3VnaCB3ZSBjdXJyZW50bHkgZG8gc3VwcG9ydCB0aGlz
LCBpdCdzIG5vdCBpbmNsdWRlZCBpbgorICAgIC8vIG91ciBvZmZlciBieSBkZWZhdWx0IGR1ZSB0
byBhIHByZXZpb3VzIGJ1ZyB0aGF0IGNhdXNlZCB0aGUgU0RQIHBhcnNlciB0bworICAgIC8vIGFi
b3J0IHBhcnNpbmcgaWYgdGhpcyBhdHRyaWJ1dGUgd2FzIHByZXNlbnQuIFRoaXMgaXMgZml4ZWQg
aW4gQ2hyb21lIDcxLgorICAgIC8vIFRPRE8od2VicnRjOjk5ODUpOiBDaGFuZ2UgZGVmYXVsdCB0
byB0cnVlIG9uY2Ugc3VmZmljaWVudCB0aW1lIGhhcworICAgIC8vIHBhc3NlZC4KKyAgICBib29s
IG9mZmVyX2V4dG1hcF9hbGxvd19taXhlZCA9IGZhbHNlOworCiAgICAgLy8KICAgICAvLyBEb24n
dCBmb3JnZXQgdG8gdXBkYXRlIG9wZXJhdG9yPT0gaWYgYWRkaW5nIHNvbWV0aGluZy4KICAgICAv
LwpAQCAtOTcyLDExICsxMDMzLDEzIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlIDog
cHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICB2aXJ0dWFsIFNpZ25hbGluZ1N0YXRl
IHNpZ25hbGluZ19zdGF0ZSgpID0gMDsKIAogICAvLyBSZXR1cm5zIHRoZSBhZ2dyZWdhdGUgc3Rh
dGUgb2YgYWxsIElDRSAqYW5kKiBEVExTIHRyYW5zcG9ydHMuCi0gIC8vIFRPRE8oZGVhZGJlZWYp
OiBJbXBsZW1lbnQgIlBlZXJDb25uZWN0aW9uU3RhdGUiIGFjY29yZGluZyB0byB0aGUgc3RhbmRh
cmQsCi0gIC8vIHRvIGFnZ3JlZ2F0ZSBJQ0UrRFRMUyBzdGF0ZSwgYW5kIGNoYW5nZSB0aGUgc2Nv
cGUgb2YgSWNlQ29ubmVjdGlvblN0YXRlIHRvCi0gIC8vIGJlIGp1c3QgdGhlIElDRSBsYXllci4g
U2VlOiBjcmJ1Zy5jb20vd2VicnRjLzYxNDUKKyAgLy8gVE9ETyhqb25hc29sc3Nvbik6IFJlcGxh
Y2Ugd2l0aCBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25fc3RhdGUgb25jZSBpdAorICAvLyBp
cyByZWFkeSwgc2VlIGNyYnVnLmNvbS93ZWJydGMvNjE0NQogICB2aXJ0dWFsIEljZUNvbm5lY3Rp
b25TdGF0ZSBpY2VfY29ubmVjdGlvbl9zdGF0ZSgpID0gMDsKIAorICAvLyBSZXR1cm5zIHRoZSBh
Z2dyZWdhdGVkIHN0YXRlIG9mIGFsbCBJQ0UgYW5kIERUTFMgdHJhbnNwb3J0cy4KKyAgdmlydHVh
bCBQZWVyQ29ubmVjdGlvblN0YXRlIHBlZXJfY29ubmVjdGlvbl9zdGF0ZSgpOworCiAgIHZpcnR1
YWwgSWNlR2F0aGVyaW5nU3RhdGUgaWNlX2dhdGhlcmluZ19zdGF0ZSgpID0gMDsKIAogICAvLyBT
dGFydHMgUnRjRXZlbnRMb2cgdXNpbmcgZXhpc3RpbmcgZmlsZS4gVGFrZXMgb3duZXJzaGlwIG9m
IHxmaWxlfCBhbmQKQEAgLTEwNDUsNiArMTEwOCwxMCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbk9i
c2VydmVyIHsKICAgdmlydHVhbCB2b2lkIE9uSWNlQ29ubmVjdGlvbkNoYW5nZSgKICAgICAgIFBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSA9IDA7
CiAKKyAgLy8gQ2FsbGVkIGFueSB0aW1lIHRoZSBQZWVyQ29ubmVjdGlvblN0YXRlIGNoYW5nZXMu
CisgIHZpcnR1YWwgdm9pZCBPbkNvbm5lY3Rpb25DaGFuZ2UoCisgICAgICBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpIHt9CisKICAgLy8gQ2Fs
bGVkIGFueSB0aW1lIHRoZSBJY2VHYXRoZXJpbmdTdGF0ZSBjaGFuZ2VzLgogICB2aXJ0dWFsIHZv
aWQgT25JY2VHYXRoZXJpbmdDaGFuZ2UoCiAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
SWNlR2F0aGVyaW5nU3RhdGUgbmV3X3N0YXRlKSA9IDA7CkBAIC0xMTU2LDYgKzEyMjMsNyBAQCBz
dHJ1Y3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5RGVwZW5kZW5jaWVzIGZpbmFsIHsKICAgc3RkOjp1
bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nRmFjdG9yeUludGVyZmFjZT4gZXZlbnRfbG9nX2ZhY3Rvcnk7
CiAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4gZmVjX2Nv
bnRyb2xsZXJfZmFjdG9yeTsKICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDb250cm9sbGVyRmFj
dG9yeUludGVyZmFjZT4gbmV0d29ya19jb250cm9sbGVyX2ZhY3Rvcnk7CisgIHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5OwogfTsK
IAogLy8gUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIGlzIHRoZSBmYWN0b3J5IGludGVy
ZmFjZSB1c2VkIGZvciBjcmVhdGluZwpAQCAtMTE3NSw3ICsxMjQzLDcgQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2Ug
ewogIHB1YmxpYzoKICAgY2xhc3MgT3B0aW9ucyB7CiAgICBwdWJsaWM6Ci0gICAgT3B0aW9ucygp
IDogY3J5cHRvX29wdGlvbnMocnRjOjpDcnlwdG9PcHRpb25zOjpOb0djbSgpKSB7fQorICAgIE9w
dGlvbnMoKSB7fQogCiAgICAgLy8gSWYgc2V0IHRvIHRydWUsIGNyZWF0ZWQgUGVlckNvbm5lY3Rp
b25zIHdvbid0IGVuZm9yY2UgYW55IFNSVFAKICAgICAvLyByZXF1aXJlbWVudCwgYWxsb3dpbmcg
dW5zZWN1cmVkIG1lZGlhLiBTaG91bGQgb25seSBiZSB1c2VkIGZvcgpAQCAtMTIwNCw3ICsxMjcy
LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIDogcHVibGljIHJ0Yzo6
UmVmQ291bnRJbnRlcmZhY2UgewogICAgIHJ0Yzo6U1NMUHJvdG9jb2xWZXJzaW9uIHNzbF9tYXhf
dmVyc2lvbiA9IHJ0Yzo6U1NMX1BST1RPQ09MX0RUTFNfMTI7CiAKICAgICAvLyBTZXRzIGNyeXB0
byByZWxhdGVkIG9wdGlvbnMsIGUuZy4gZW5hYmxlZCBjaXBoZXIgc3VpdGVzLgotICAgIHJ0Yzo6
Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uczsKKyAgICBDcnlwdG9PcHRpb25zIGNyeXB0b19v
cHRpb25zID0gQ3J5cHRvT3B0aW9uczo6Tm9HY20oKTsKICAgfTsKIAogICAvLyBTZXQgdGhlIG9w
dGlvbnMgdG8gYmUgdXNlZCBmb3Igc3Vic2VxdWVudGx5IGNyZWF0ZWQgUGVlckNvbm5lY3Rpb25z
LgpAQCAtMTMwNywxMzcgKzEzNzUsNiBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRl
cmZhY2UgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CiAgIH5QZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2UoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiB9OwogCi0jaWYgZGVmaW5l
ZChVU0VfQlVJTFRJTl9TV19DT0RFQ1MpCi0vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUGVl
ckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlLgotLy8KLS8vIFRoaXMgbWV0aG9kIHJlbGllcyBv
biB0aGUgdGhyZWFkIGl0J3MgY2FsbGVkIG9uIGFzIHRoZSAic2lnbmFsaW5nIHRocmVhZCIKLS8v
IGZvciB0aGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5IGl0IGNyZWF0ZXMuCi0vLwotLy8gQXMgc3Vj
aCwgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBhbHJlYWR5IHJ1bm5pbmcgYW4gcnRjOjpU
aHJlYWQgbWVzc2FnZQotLy8gbG9vcCwgYW4gYXBwbGljYXRpb24gdXNpbmcgdGhpcyBtZXRob2Qg
bXVzdCBldmVudHVhbGx5IGVpdGhlciBjYWxsCi0vLyBydGM6OlRocmVhZDo6Q3VycmVudCgpLT5S
dW4oKSwgb3IgY2FsbAotLy8gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKS0+UHJvY2Vzc01lc3NhZ2Vz
KCkgd2l0aGluIHRoZSBhcHBsaWNhdGlvbidzIG93bgotLy8gbWVzc2FnZSBsb29wLgotcnRjOjpz
Y29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gQ3JlYXRlUGVlckNv
bm5lY3Rpb25GYWN0b3J5KAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0
b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlv
RGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSk7Ci0KLS8vIENyZWF0ZSBhIG5l
dyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UuCi0vLwotLy8gfG5l
dHdvcmtfdGhyZWFkfCwgfHdvcmtlcl90aHJlYWR8IGFuZCB8c2lnbmFsaW5nX3RocmVhZHwgYXJl
Ci0vLyB0aGUgb25seSBtYW5kYXRvcnkgcGFyYW1ldGVycy4KLS8vCi0vLyBJZiBub24tbnVsbCwg
YSByZWZlcmVuY2UgaXMgYWRkZWQgdG8gfGRlZmF1bHRfYWRtfCwgYW5kIG93bmVyc2hpcCBvZgot
Ly8gfHZpZGVvX2VuY29kZXJfZmFjdG9yeXwgYW5kIHx2aWRlb19kZWNvZGVyX2ZhY3Rvcnl8IGlz
IHRyYW5zZmVycmVkIHRvIHRoZQotLy8gcmV0dXJuZWQgZmFjdG9yeS4KLS8vIFRPRE8oZGVhZGJl
ZWYpOiBVc2UgcnRjOjpzY29wZWRfcmVmcHRyPD4gYW5kIHN0ZDo6dW5pcXVlX3B0cjw+IHRvIG1h
a2UgdGhpcwotLy8gb3duZXJzaGlwIHRyYW5zZmVyIGFuZCByZWYgY291bnRpbmcgbW9yZSBvYnZp
b3VzLgotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4g
Q3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3Ro
cmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCog
c2lnbmFsaW5nX3RocmVhZCwKLSAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCi0g
ICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJf
ZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVk
aW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3Rv
cnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29k
ZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkpOwotCi0vLyBDcmVhdGUgYSBuZXcgaW5z
dGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHdpdGggb3B0aW9uYWwKLS8v
IGV4dGVybmFsIGF1ZGlvIG1peGVkIGFuZCBhdWRpbyBwcm9jZXNzaW5nIG1vZHVsZXMuCi0vLwot
Ly8gSWYgfGF1ZGlvX21peGVyfCBpcyBudWxsLCBhbiBpbnRlcm5hbCBhdWRpbyBtaXhlciB3aWxs
IGJlIGNyZWF0ZWQgYW5kIHVzZWQuCi0vLyBJZiB8YXVkaW9fcHJvY2Vzc2luZ3wgaXMgbnVsbCwg
YW4gaW50ZXJuYWwgYXVkaW8gcHJvY2Vzc2luZyBtb2R1bGUgd2lsbCBiZQotLy8gY3JlYXRlZCBh
bmQgdXNlZC4KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICBydGM6OlRocmVhZCogbmV0d29y
a190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgcnRjOjpUaHJl
YWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRt
LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNv
ZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+
IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJG
YWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRjVmlkZW9E
ZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhlciwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nKTsKLQotLy8gQ3JlYXRlIGEgbmV3IGluc3Rh
bmNlIG9mIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSB3aXRoIG9wdGlvbmFsCi0vLyBl
eHRlcm5hbCBhdWRpbyBtaXhlciwgYXVkaW8gcHJvY2Vzc2luZywgYW5kIGZlYyBjb250cm9sbGVy
IG1vZHVsZXMuCi0vLwotLy8gSWYgfGF1ZGlvX21peGVyfCBpcyBudWxsLCBhbiBpbnRlcm5hbCBh
dWRpbyBtaXhlciB3aWxsIGJlIGNyZWF0ZWQgYW5kIHVzZWQuCi0vLyBJZiB8YXVkaW9fcHJvY2Vz
c2luZ3wgaXMgbnVsbCwgYW4gaW50ZXJuYWwgYXVkaW8gcHJvY2Vzc2luZyBtb2R1bGUgd2lsbCBi
ZQotLy8gY3JlYXRlZCBhbmQgdXNlZC4KLS8vIElmIHxmZWNfY29udHJvbGxlcl9mYWN0b3J5fCBp
cyBudWxsLCBhbiBpbnRlcm5hbCBmZWMgY29udHJvbGxlciBtb2R1bGUgd2lsbAotLy8gYmUgY3Jl
YXRlZCBhbmQgdXNlZC4KLS8vIElmIHxuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeXwgaXMgcHJv
dmlkZWQsIGl0IHdpbGwgYmUgdXNlZCBpZiBlbmFibGVkIHZpYQotLy8gZmllbGQgdHJpYWwuCi1y
dGM6OnNjb3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBDcmVhdGVQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnkoCi0gICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAot
ICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxp
bmdfdGhyZWFkLAotICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwKLSAgICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rv
cnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9N
aXhlcj4gYXVkaW9fbWl4ZXIsCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2lu
Zz4gYXVkaW9fcHJvY2Vzc2luZywKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZh
Y3RvcnlJbnRlcmZhY2U+IGZlY19jb250cm9sbGVyX2ZhY3RvcnksCi0gICAgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZT4KLSAgICAgICAgbmV0d29ya19j
b250cm9sbGVyX2ZhY3RvcnkgPSBudWxscHRyKTsKLSNlbmRpZgotCi0vLyBDcmVhdGUgYSBuZXcg
aW5zdGFuY2Ugb2YgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHdpdGggb3B0aW9uYWwg
dmlkZW8KLS8vIGNvZGVjIGZhY3Rvcmllcy4gVGhlc2UgdmlkZW8gZmFjdG9yaWVzIHJlcHJlc2Vu
dHMgYWxsIHZpZGVvIGNvZGVjcywgaS5lLiBubwotLy8gZXh0cmEgaW50ZXJuYWwgdmlkZW8gY29k
ZWNzIHdpbGwgYmUgYWRkZWQuCi0vLyBXaGVuIGJ1aWxkaW5nIFdlYlJUQyB3aXRoIHJ0Y191c2Vf
YnVpbHRpbl9zd19jb2RlY3MgPSBmYWxzZSwgdGhpcyBpcyB0aGUKLS8vIG9ubHkgYXZhaWxhYmxl
IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSBvdmVybG9hZC4KLXJ0Yzo6c2NvcGVkX3JlZnB0
cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeSgKLSAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQq
IHdvcmtlcl90aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAg
cnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBkZWZhdWx0X2FkbSwKLSAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19k
ZWNvZGVyX2ZhY3RvcnksCi0gICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+
IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVy
RmFjdG9yeT4gdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxB
dWRpb01peGVyPiBhdWRpb19taXhlciwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9j
ZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nKTsKLQotI2lmIGRlZmluZWQoVVNFX0JVSUxUSU5fU1df
Q09ERUNTKQotLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBlZXJDb25uZWN0aW9uRmFjdG9y
eUludGVyZmFjZSB3aXRoIGV4dGVybmFsIGF1ZGlvCi0vLyBtaXhlci4KLS8vCi0vLyBJZiB8YXVk
aW9fbWl4ZXJ8IGlzIG51bGwsIGFuIGludGVybmFsIGF1ZGlvIG1peGVyIHdpbGwgYmUgY3JlYXRl
ZCBhbmQgdXNlZC4KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRl
cmZhY2U+Ci1DcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnlXaXRoQXVkaW9NaXhlcigKLSAgICBy
dGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJl
YWQsCi0gICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgQXVkaW9EZXZpY2VN
b2R1bGUqIGRlZmF1bHRfYWRtLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJG
YWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1
ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpX
ZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgY3Jp
Y2tldDo6V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAot
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhlcik7Ci0KLS8vIENy
ZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UuCi0v
LyBTYW1lIHRocmVhZCBpcyB1c2VkIGFzIHdvcmtlciBhbmQgbmV0d29yayB0aHJlYWQuCi1pbmxp
bmUgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4KLUNy
ZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICBydGM6OlRocmVhZCogd29ya2VyX2FuZF9u
ZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBB
dWRpb0RldmljZU1vZHVsZSogZGVmYXVsdF9hZG0sCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1
ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAg
IGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9y
eSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVy
X2ZhY3RvcnkpIHsKLSAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICAg
IHdvcmtlcl9hbmRfbmV0d29ya190aHJlYWQsIHdvcmtlcl9hbmRfbmV0d29ya190aHJlYWQsIHNp
Z25hbGluZ190aHJlYWQsCi0gICAgICBkZWZhdWx0X2FkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgICB2aWRlb19lbmNvZGVyX2ZhY3RvcnksIHZp
ZGVvX2RlY29kZXJfZmFjdG9yeSk7Ci19Ci0jZW5kaWYKLQogLy8gVGhpcyBpcyBhIGxvd2VyLWxl
dmVsIHZlcnNpb24gb2YgdGhlIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmdW5jdGlvbnMK
IC8vIGFib3ZlLiBJdCdzIGltcGxlbWVudGVkIGluIHRoZSAicGVlcmNvbm5lY3Rpb24iIGJ1aWxk
IHRhcmdldCwgd2hlcmVhcyB0aGUKIC8vIGFib3ZlIG1ldGhvZHMgYXJlIG9ubHkgaW1wbGVtZW50
ZWQgaW4gdGhlIGJyb2FkZXIgImxpYmppbmdsZV9wZWVyY29ubmVjdGlvbiIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wcm94eS5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9wcm94eS5jYwpp
bmRleCBjODZiZGRmYThiMWE5NDZkMDEwYzNlZjkyZTdlZmI0MGRmODg3N2YwLi5lNjY4Mjg1YmEy
OWJhNjFkM2E3Mjc1OTkwZGVhODkwZjc2ZDBlMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcHJveHkuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Byb3h5LmNjCkBAIC0xNCw3ICsx
NCw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIGludGVybmFsIHsKIAogU3luY2hy
b25vdXNNZXRob2RDYWxsOjpTeW5jaHJvbm91c01ldGhvZENhbGwocnRjOjpNZXNzYWdlSGFuZGxl
ciogcHJveHkpCi0gICAgOiBlXygpLCBwcm94eV8ocHJveHkpIHt9CisgICAgOiBwcm94eV8ocHJv
eHkpIHt9CiAKIFN5bmNocm9ub3VzTWV0aG9kQ2FsbDo6flN5bmNocm9ub3VzTWV0aG9kQ2FsbCgp
ID0gZGVmYXVsdDsKIApAQCAtMjMsMTUgKzIzLDE0IEBAIHZvaWQgU3luY2hyb25vdXNNZXRob2RD
YWxsOjpJbnZva2UoY29uc3QgcnRjOjpMb2NhdGlvbiYgcG9zdGVkX2Zyb20sCiAgIGlmICh0LT5J
c0N1cnJlbnQoKSkgewogICAgIHByb3h5Xy0+T25NZXNzYWdlKG51bGxwdHIpOwogICB9IGVsc2Ug
ewotICAgIGVfLnJlc2V0KG5ldyBydGM6OkV2ZW50KGZhbHNlLCBmYWxzZSkpOwogICAgIHQtPlBv
c3QocG9zdGVkX2Zyb20sIHRoaXMsIDApOwotICAgIGVfLT5XYWl0KHJ0Yzo6RXZlbnQ6OmtGb3Jl
dmVyKTsKKyAgICBlXy5XYWl0KHJ0Yzo6RXZlbnQ6OmtGb3JldmVyKTsKICAgfQogfQogCiB2b2lk
IFN5bmNocm9ub3VzTWV0aG9kQ2FsbDo6T25NZXNzYWdlKHJ0Yzo6TWVzc2FnZSopIHsKICAgcHJv
eHlfLT5Pbk1lc3NhZ2UobnVsbHB0cik7Ci0gIGVfLT5TZXQoKTsKKyAgZV8uU2V0KCk7CiB9CiAK
IH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Byb3h5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcHJveHkuaAppbmRleCBjODk2MmVmZWQ3YzhkMmM5
MDNlZWJlNzBlYzBmNTUwOTkyN2YxOTdlLi45OTE2MDUxN2RlZWJkNzljZDMzZDM3MWZlYmUyMWM0
YTc3MTBjYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvcHJveHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvcHJveHkuaApAQCAtMTQzLDcgKzE0Myw3IEBAIGNsYXNzIFN5bmNocm9u
b3VzTWV0aG9kQ2FsbCA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VEYXRhLAogIHByaXZhdGU6CiAgIHZv
aWQgT25NZXNzYWdlKHJ0Yzo6TWVzc2FnZSopIG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0
cjxydGM6OkV2ZW50PiBlXzsKKyAgcnRjOjpFdmVudCBlXzsKICAgcnRjOjpNZXNzYWdlSGFuZGxl
ciogcHJveHlfOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3J0cF9oZWFkZXJzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cF9oZWFkZXJzLmNjCmluZGV4IGRhN2YxZWE5ZmQ0
MDAyZjc3MjM0MjM5MDU4MTE2ZTlkODY3YmZkYmEuLmJmOTczYjZmZTU3NzFkNDIzNjFhZGI4MzY5
YjMwY2Q5YjJiMzcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9ydHBfaGVhZGVycy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwX2hlYWRlcnMuY2MKQEAgLTEwLDE0ICsxMCw2
IEBACiAKICNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKIAotI2luY2x1ZGUgPHN0cmluZy5o
PgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8dHlw
ZV90cmFpdHM+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmd1dGlscy5oIgotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogUlRQSGVhZGVyRXh0
ZW5zaW9uOjpSVFBIZWFkZXJFeHRlbnNpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cF9oZWFkZXJzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwX2hlYWRlcnMuaAppbmRleCA0
MWYzOTg4OGI4MDgxYTZiZmI5MzU5MDdmM2IyY2Q0YTRkNzgzZGJhLi5jNzY2ODk5YjlmZDg4ZjRh
MmMyZWU5MDkwZjdmOGNiNjllOTQ2MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwX2hlYWRlcnMuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwX2hlYWRlcnMuaApAQCAtMTIs
MjAgKzEyLDE3IEBACiAjZGVmaW5lIEFQSV9SVFBfSEVBREVSU19IXwogCiAjaW5jbHVkZSA8c3Rk
ZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS92aWRl
by9jb2xvcl9zcGFjZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19jb250ZW50X3R5cGUu
aCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfbWFya2luZy5oIgogI2luY2x1ZGUg
ImFwaS92aWRlby92aWRlb19yb3RhdGlvbi5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb190
aW1pbmcuaCIKLQogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2lu
Y2x1ZGUpCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
ZGVwcmVjYXRpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTEzMSw2ICsxMjgsOCBA
QCBzdHJ1Y3QgUlRQSGVhZGVyRXh0ZW5zaW9uIHsKICAgLy8gRm9yIGlkZW50aWZ5aW5nIHRoZSBt
ZWRpYSBzZWN0aW9uIHVzZWQgdG8gaW50ZXJwcmV0IHRoaXMgUlRQIHBhY2tldC4gU2VlCiAgIC8v
IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLW1tdXNpYy1zZHAtYnVuZGxl
LW5lZ290aWF0aW9uLTM4CiAgIE1pZCBtaWQ7CisKKyAgYWJzbDo6b3B0aW9uYWw8Q29sb3JTcGFj
ZT4gY29sb3Jfc3BhY2U7CiB9OwogCiBzdHJ1Y3QgUlRQSGVhZGVyIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBwYXJhbWV0ZXJz
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHBh
cmFtZXRlcnMuY2MKaW5kZXggOThjZWQ5YjNlYWQzNWJlZDhmN2M5YjM3ZDRkMjEwYzVhZWE2YmZi
MC4uMDYzZDEwNmEwMGE1OTAxNDkyYWIxN2FhOGEwZmFkMDE1NzFlZmYxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHBhcmFtZXRl
cnMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3J0cHBhcmFtZXRlcnMuY2MKQEAgLTEyLDcgKzEyLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+
CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5j
bHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmlu
Z19idWlsZGVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBwYXJhbWV0ZXJz
LmgKaW5kZXggNjc4YWMwMmM0YjdkYTdkYzVhM2JjYWE1MDExZTM5NDUyZTdlZTE5Ny4uYmFkZGEw
NzQ1OTlhOTNiYjVkYTMyNWJiZWZkZDc4M2IwN2ZmMWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwcGFyYW1l
dGVycy5oCkBAIC0xMSwxMiArMTEsMTQgQEAKICNpZm5kZWYgQVBJX1JUUFBBUkFNRVRFUlNfSF8K
ICNkZWZpbmUgQVBJX1JUUFBBUkFNRVRFUlNfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2lu
Y2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgogI2luY2x1ZGUgPHZlY3Rv
cj4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvbWVk
aWF0eXBlcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCkBAIC00MDQsNiArNDA2LDE0IEBAIHN0cnVjdCBSdHBFbmNvZGlu
Z1BhcmFtZXRlcnMgewogICAvLyBiaXRyYXRlIHByaW9yaXR5LgogICBkb3VibGUgYml0cmF0ZV9w
cmlvcml0eSA9IGtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5OwogCisgIC8vIFRoZSByZWxhdGl2ZSBE
aWZmU2VydiBDb2RlIFBvaW50IHByaW9yaXR5IGZvciB0aGlzIGVuY29kaW5nLCBhbGxvd2luZwor
ICAvLyBwYWNrZXRzIHRvIGJlIG1hcmtlZCByZWxhdGl2ZWx5IGhpZ2hlciBvciBsb3dlciB3aXRo
b3V0IGFmZmVjdGluZworICAvLyBiYW5kd2lkdGggYWxsb2NhdGlvbnMuIFNlZSBodHRwczovL3cz
Yy5naXRodWIuaW8vd2VicnRjLWRzY3AtZXhwLyAuIE5CCisgIC8vIHdlIGZvbGxvdyBjaHJvbWl1
bSdzIHRyYW5zbGF0aW9uIG9mIHRoZSBhbGxvd2VkIHN0cmluZyBlbnVtIHZhbHVlcyBmb3IKKyAg
Ly8gdGhpcyBmaWVsZCB0byAxLjAsIDAuNSwgZXQgY2V0ZXJhLCBzaW1pbGFyIHRvIGJpdHJhdGVf
cHJpb3JpdHkgYWJvdmUuCisgIC8vIFRPRE8oaHR0cDovL2NyYnVnLmNvbS93ZWJydGMvODYzMCk6
IEltcGxlbWVudCB0aGlzIHBlciBlbmNvZGluZyBwYXJhbWV0ZXIuCisgIGRvdWJsZSBuZXR3b3Jr
X3ByaW9yaXR5ID0ga0RlZmF1bHRCaXRyYXRlUHJpb3JpdHk7CisKICAgLy8gSW5kaWNhdGVzIHRo
ZSBwcmVmZXJyZWQgZHVyYXRpb24gb2YgbWVkaWEgcmVwcmVzZW50ZWQgYnkgYSBwYWNrZXQgaW4K
ICAgLy8gbWlsbGlzZWNvbmRzIGZvciB0aGlzIGVuY29kaW5nLiBJZiBzZXQsIHRoaXMgd2lsbCB0
YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUKICAgLy8gcHRpbWUgc2V0IGluIHRoZSBSdHBDb2RlY1Bh
cmFtZXRlcnMuIFRoaXMgY291bGQgaGFwcGVuIGlmIFNEUCBuZWdvdGlhdGlvbgpAQCAtNDcxLDcg
KzQ4MSw4IEBAIHN0cnVjdCBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgewogICBib29sIG9wZXJhdG9y
PT0oY29uc3QgUnRwRW5jb2RpbmdQYXJhbWV0ZXJzJiBvKSBjb25zdCB7CiAgICAgcmV0dXJuIHNz
cmMgPT0gby5zc3JjICYmIGNvZGVjX3BheWxvYWRfdHlwZSA9PSBvLmNvZGVjX3BheWxvYWRfdHlw
ZSAmJgogICAgICAgICAgICBmZWMgPT0gby5mZWMgJiYgcnR4ID09IG8ucnR4ICYmIGR0eCA9PSBv
LmR0eCAmJgotICAgICAgICAgICBiaXRyYXRlX3ByaW9yaXR5ID09IG8uYml0cmF0ZV9wcmlvcml0
eSAmJiBwdGltZSA9PSBvLnB0aW1lICYmCisgICAgICAgICAgIGJpdHJhdGVfcHJpb3JpdHkgPT0g
by5iaXRyYXRlX3ByaW9yaXR5ICYmCisgICAgICAgICAgIG5ldHdvcmtfcHJpb3JpdHkgPT0gby5u
ZXR3b3JrX3ByaW9yaXR5ICYmIHB0aW1lID09IG8ucHRpbWUgJiYKICAgICAgICAgICAgbWF4X2Jp
dHJhdGVfYnBzID09IG8ubWF4X2JpdHJhdGVfYnBzICYmCiAgICAgICAgICAgIG1pbl9iaXRyYXRl
X2JwcyA9PSBvLm1pbl9iaXRyYXRlX2JwcyAmJgogICAgICAgICAgICBtYXhfZnJhbWVyYXRlID09
IG8ubWF4X2ZyYW1lcmF0ZSAmJgpAQCAtNjA3LDcgKzYxOCw3IEBAIHN0cnVjdCBSdGNwUGFyYW1l
dGVycyBmaW5hbCB7CiAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSdGNwUGFyYW1ldGVycyYgbykg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogfTsKIAotc3RydWN0IFJ0cFBhcmFtZXRl
cnMgeworc3RydWN0IFJUQ19FWFBPUlQgUnRwUGFyYW1ldGVycyB7CiAgIFJ0cFBhcmFtZXRlcnMo
KTsKICAgUnRwUGFyYW1ldGVycyhjb25zdCBSdHBQYXJhbWV0ZXJzJik7CiAgIH5SdHBQYXJhbWV0
ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvcnRwc2VuZGVyaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRwc2VuZGVyaW50ZXJmYWNlLmgKaW5kZXggOTU1NGMxYzRk
YTc5NzM1NTQ3Y2FlYmQyODQwMTgxNjk5NzQyMGQ4Yy4uN2M5NGMyMTZlNjRlZmJlYjVjNDYyOGJl
YmU2OTI1YTZmNTAyM2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3J0cHNlbmRlcmludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHBzZW5kZXJpbnRlcmZhY2UuaApA
QCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgImFwaS9wcm94eS5oIgogI2luY2x1ZGUgImFwaS9y
dGNlcnJvci5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvZGVwcmVjYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVy
ZmFjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9y
dHB0cmFuc2NlaXZlcmludGVyZmFjZS5jYwppbmRleCBkODMzMzM5ZmE2NjQ2ODUwZmFhOWJlMjJl
OTk4MDZhYmQ4MWMzZWJlLi5lNjJiMDE0YzY1NjQzMzVmNzA2OTQxMTVkZjk4ODY2MGFhYzQzNTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvcnRwdHJhbnNjZWl2ZXJpbnRlcmZhY2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3J0cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmNjCkBAIC0x
MCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJhcGkvcnRwdHJhbnNjZWl2ZXJpbnRlcmZhY2UuaCIK
IAorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAog
UnRwVHJhbnNjZWl2ZXJJbml0OjpSdHBUcmFuc2NlaXZlckluaXQoKSA9IGRlZmF1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvcnRw
dHJhbnNjZWl2ZXJpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVyZmFjZS5oCmluZGV4IDMwMWEzODA5Zjhi
NGRlZjNlNzZkNTY5NTA4MDY0YjQwM2QyNThhNmIuLmMwMWZkYWZiODMyM2NmOTFiYmI1NTdmZDJi
ZjI3MmE0NWVlNjExNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9ydHB0cmFuc2NlaXZlcmludGVy
ZmFjZS5oCkBAIC0xNiw5ICsxNiwxMiBAQAogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25h
bC5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYXBpL21lZGlhdHlw
ZXMuaCIKKyNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgogI2luY2x1ZGUgImFwaS9ydHBy
ZWNlaXZlcmludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS9ydHBzZW5kZXJpbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3Bl
ZF9yZWZfcHRyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc2NvcGVkX3JlZnB0ci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Njb3BlZF9yZWZw
dHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wOTkzZTAzMmNjNzI0OWFlMDYwYmJmODMyOTIxMzVkMmU3ZmMyOTZi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3Njb3BlZF9yZWZwdHIuaApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxMSBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworLy8gT3JpZ2luYWxseSB0aGVzZSBjbGFzc2VzIGFyZSBmcm9tIENocm9taXVtLgor
Ly8gaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2Nocm9tZS90cnVuay9zcmMvYmFzZS9t
ZW1vcnkvcmVmX2NvdW50ZWQuaD92aWV3PW1hcmt1cAorCisvLworLy8gQSBzbWFydCBwb2ludGVy
IGNsYXNzIGZvciByZWZlcmVuY2UgY291bnRlZCBvYmplY3RzLiAgVXNlIHRoaXMgY2xhc3MgaW5z
dGVhZAorLy8gb2YgY2FsbGluZyBBZGRSZWYgYW5kIFJlbGVhc2UgbWFudWFsbHkgb24gYSByZWZl
cmVuY2UgY291bnRlZCBvYmplY3QgdG8KKy8vIGF2b2lkIGNvbW1vbiBtZW1vcnkgbGVha3MgY2F1
c2VkIGJ5IGZvcmdldHRpbmcgdG8gUmVsZWFzZSBhbiBvYmplY3QKKy8vIHJlZmVyZW5jZS4gIFNh
bXBsZSB1c2FnZToKKy8vCisvLyAgIGNsYXNzIE15Rm9vIDogcHVibGljIFJlZkNvdW50ZWQ8TXlG
b28+IHsKKy8vICAgIC4uLgorLy8gICB9OworLy8KKy8vICAgdm9pZCBzb21lX2Z1bmN0aW9uKCkg
eworLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+IGZvbyA9IG5ldyBNeUZvbygpOworLy8gICAg
IGZvby0+TWV0aG9kKHBhcmFtKTsKKy8vICAgICAvLyB8Zm9vfCBpcyByZWxlYXNlZCB3aGVuIHRo
aXMgZnVuY3Rpb24gcmV0dXJucworLy8gICB9CisvLworLy8gICB2b2lkIHNvbWVfb3RoZXJfZnVu
Y3Rpb24oKSB7CisvLyAgICAgc2NvcGVkX3JlZnB0cjxNeUZvbz4gZm9vID0gbmV3IE15Rm9vKCk7
CisvLyAgICAgLi4uCisvLyAgICAgZm9vID0gbnVsbHB0cjsgIC8vIGV4cGxpY2l0bHkgcmVsZWFz
ZXMgfGZvb3wKKy8vICAgICAuLi4KKy8vICAgICBpZiAoZm9vKQorLy8gICAgICAgZm9vLT5NZXRo
b2QocGFyYW0pOworLy8gICB9CisvLworLy8gVGhlIGFib3ZlIGV4YW1wbGVzIHNob3cgaG93IHNj
b3BlZF9yZWZwdHI8VD4gYWN0cyBsaWtlIGEgcG9pbnRlciB0byBULgorLy8gR2l2ZW4gdHdvIHNj
b3BlZF9yZWZwdHI8VD4gY2xhc3NlcywgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBleGNoYW5nZQor
Ly8gcmVmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28gb2JqZWN0cywgbGlrZSBzbzoKKy8vCisvLyAg
IHsKKy8vICAgICBzY29wZWRfcmVmcHRyPE15Rm9vPiBhID0gbmV3IE15Rm9vKCk7CisvLyAgICAg
c2NvcGVkX3JlZnB0cjxNeUZvbz4gYjsKKy8vCisvLyAgICAgYi5zd2FwKGEpOworLy8gICAgIC8v
IG5vdywgfGJ8IHJlZmVyZW5jZXMgdGhlIE15Rm9vIG9iamVjdCwgYW5kIHxhfCByZWZlcmVuY2Vz
IG51bGwuCisvLyAgIH0KKy8vCisvLyBUbyBtYWtlIGJvdGggfGF8IGFuZCB8YnwgaW4gdGhlIGFi
b3ZlIGV4YW1wbGUgcmVmZXJlbmNlIHRoZSBzYW1lIE15Rm9vCisvLyBvYmplY3QsIHNpbXBseSB1
c2UgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3I6CisvLworLy8gICB7CisvLyAgICAgc2NvcGVkX3Jl
ZnB0cjxNeUZvbz4gYSA9IG5ldyBNeUZvbygpOworLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+
IGI7CisvLworLy8gICAgIGIgPSBhOworLy8gICAgIC8vIG5vdywgfGF8IGFuZCB8YnwgZWFjaCBv
d24gYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgTXlGb28gb2JqZWN0LgorLy8gICB9CisvLworCisj
aWZuZGVmIEFQSV9TQ09QRURfUkVGUFRSX0hfCisjZGVmaW5lIEFQSV9TQ09QRURfUkVGUFRSX0hf
CisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworbmFtZXNwYWNlIHJ0
YyB7CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorY2xhc3Mgc2NvcGVkX3JlZnB0ciB7CisgcHVibGlj
OgorICBzY29wZWRfcmVmcHRyKCkgOiBwdHJfKG51bGxwdHIpIHt9CisKKyAgc2NvcGVkX3JlZnB0
cihUKiBwKSA6IHB0cl8ocCkgeyAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGljaXQpCisgICAgaWYg
KHB0cl8pCisgICAgICBwdHJfLT5BZGRSZWYoKTsKKyAgfQorCisgIHNjb3BlZF9yZWZwdHIoY29u
c3Qgc2NvcGVkX3JlZnB0cjxUPiYgcikgOiBwdHJfKHIucHRyXykgeworICAgIGlmIChwdHJfKQor
ICAgICAgcHRyXy0+QWRkUmVmKCk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAg
c2NvcGVkX3JlZnB0cihjb25zdCBzY29wZWRfcmVmcHRyPFU+JiByKSA6IHB0cl8oci5nZXQoKSkg
eworICAgIGlmIChwdHJfKQorICAgICAgcHRyXy0+QWRkUmVmKCk7CisgIH0KKworICAvLyBNb3Zl
IGNvbnN0cnVjdG9ycy4KKyAgc2NvcGVkX3JlZnB0cihzY29wZWRfcmVmcHRyPFQ+JiYgcikgOiBw
dHJfKHIucmVsZWFzZSgpKSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBzY29wZWRf
cmVmcHRyKHNjb3BlZF9yZWZwdHI8VT4mJiByKSA6IHB0cl8oci5yZWxlYXNlKCkpIHt9CisKKyAg
fnNjb3BlZF9yZWZwdHIoKSB7CisgICAgaWYgKHB0cl8pCisgICAgICBwdHJfLT5SZWxlYXNlKCk7
CisgIH0KKworICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBwdHJfOyB9CisgIG9wZXJhdG9yIFQq
KCkgY29uc3QgeyByZXR1cm4gcHRyXzsgfQorICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gcHRyXzsgfQorCisgIC8vIFJldHVybnMgdGhlIChwb3NzaWJseSBudWxsKSByYXcgcG9pbnRl
ciwgYW5kIG1ha2VzIHRoZSBzY29wZWRfcmVmcHRyIGhvbGQgYQorICAvLyBudWxsIHBvaW50ZXIs
IGFsbCB3aXRob3V0IHRvdWNoaW5nIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHVuZGVybHlp
bmcKKyAgLy8gcG9pbnRlZC10byBvYmplY3QuIFRoZSBvYmplY3QgaXMgc3RpbGwgcmVmZXJlbmNl
IGNvdW50ZWQsIGFuZCB0aGUgY2FsbGVyIG9mCisgIC8vIHJlbGVhc2UoKSBpcyBub3cgdGhlIHBy
b3VkIG93bmVyIG9mIG9uZSByZWZlcmVuY2UsIHNvIGl0IGlzIHJlc3BvbnNpYmxlIGZvcgorICAv
LyBjYWxsaW5nIFJlbGVhc2UoKSBvbmNlIG9uIHRoZSBvYmplY3Qgd2hlbiBubyBsb25nZXIgdXNp
bmcgaXQuCisgIFQqIHJlbGVhc2UoKSB7CisgICAgVCogcmV0VmFsID0gcHRyXzsKKyAgICBwdHJf
ID0gbnVsbHB0cjsKKyAgICByZXR1cm4gcmV0VmFsOworICB9CisKKyAgc2NvcGVkX3JlZnB0cjxU
PiYgb3BlcmF0b3I9KFQqIHApIHsKKyAgICAvLyBBZGRSZWYgZmlyc3Qgc28gdGhhdCBzZWxmIGFz
c2lnbm1lbnQgc2hvdWxkIHdvcmsKKyAgICBpZiAocCkKKyAgICAgIHAtPkFkZFJlZigpOworICAg
IGlmIChwdHJfKQorICAgICAgcHRyXy0+UmVsZWFzZSgpOworICAgIHB0cl8gPSBwOworICAgIHJl
dHVybiAqdGhpczsKKyAgfQorCisgIHNjb3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShjb25zdCBz
Y29wZWRfcmVmcHRyPFQ+JiByKSB7CisgICAgcmV0dXJuICp0aGlzID0gci5wdHJfOworICB9CisK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHNjb3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShj
b25zdCBzY29wZWRfcmVmcHRyPFU+JiByKSB7CisgICAgcmV0dXJuICp0aGlzID0gci5nZXQoKTsK
KyAgfQorCisgIHNjb3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShzY29wZWRfcmVmcHRyPFQ+JiYg
cikgeworICAgIHNjb3BlZF9yZWZwdHI8VD4oc3RkOjptb3ZlKHIpKS5zd2FwKCp0aGlzKTsKKyAg
ICByZXR1cm4gKnRoaXM7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc2NvcGVk
X3JlZnB0cjxUPiYgb3BlcmF0b3I9KHNjb3BlZF9yZWZwdHI8VT4mJiByKSB7CisgICAgc2NvcGVk
X3JlZnB0cjxUPihzdGQ6Om1vdmUocikpLnN3YXAoKnRoaXMpOworICAgIHJldHVybiAqdGhpczsK
KyAgfQorCisgIHZvaWQgc3dhcChUKiogcHApIHsKKyAgICBUKiBwID0gcHRyXzsKKyAgICBwdHJf
ID0gKnBwOworICAgICpwcCA9IHA7CisgIH0KKworICB2b2lkIHN3YXAoc2NvcGVkX3JlZnB0cjxU
PiYgcikgeyBzd2FwKCZyLnB0cl8pOyB9CisKKyBwcm90ZWN0ZWQ6CisgIFQqIHB0cl87Cit9Owor
Cit9ICAvLyBuYW1lc3BhY2UgcnRjCisKKyNlbmRpZiAgLy8gQVBJX1NDT1BFRF9SRUZQVFJfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9zdGF0cy9ydGNzdGF0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzLmgKaW5kZXggMTcwNWY2YWI1OGVlNzlkZGY2OWE1YTU3
NmY2NWY3MmQyZWFhMGY2ZS4uN2ZkMGQ4NGUwYmIxNDU1ODFiNzhjNWIyMDU5ZjdkOTgwYTY1OTcw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3N0YXRzL3J0Y3N0YXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAt
NDcsNyArNDgsNyBAQCBjbGFzcyBSVENTdGF0c01lbWJlckludGVyZmFjZTsKIC8vIGZvciAoY29u
c3QgUlRDU3RhdHNNZW1iZXJJbnRlcmZhY2UqIG1lbWJlciA6IGZvby5NZW1iZXJzKCkpIHsKIC8v
ICAgcHJpbnRmKCIlcyA9ICVzXG4iLCBtZW1iZXItPm5hbWUoKSwgbWVtYmVyLT5WYWx1ZVRvU3Ry
aW5nKCkuY19zdHIoKSk7CiAvLyB9Ci1jbGFzcyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JU
IFJUQ1N0YXRzIHsKICBwdWJsaWM6CiAgIFJUQ1N0YXRzKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwg
aW50NjRfdCB0aW1lc3RhbXBfdXMpCiAgICAgICA6IGlkXyhpZCksIHRpbWVzdGFtcF91c18odGlt
ZXN0YW1wX3VzKSB7fQpAQCAtMjQ3LDcgKzI0OCw3IEBAIGNsYXNzIFJUQ1N0YXRzTWVtYmVySW50
ZXJmYWNlIHsKIC8vICh1bmRlZmluZWQgcmVmZXJlbmNlIHRvIHxrVHlwZXwpLiBUaGUgc3VwcG9y
dGVkIHR5cGVzIGFyZSB0aGUgb25lcyBkZXNjcmliZWQKIC8vIGJ5IHxSVENTdGF0c01lbWJlcklu
dGVyZmFjZTo6VHlwZXwuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFJUQ1N0YXRzTWVt
YmVyIDogcHVibGljIFJUQ1N0YXRzTWVtYmVySW50ZXJmYWNlIHsKK2NsYXNzIFJUQ19FWFBPUlQg
UlRDU3RhdHNNZW1iZXIgOiBwdWJsaWMgUlRDU3RhdHNNZW1iZXJJbnRlcmZhY2UgewogIHB1Ymxp
YzoKICAgc3RhdGljIGNvbnN0IFR5cGUga1R5cGU7CiAKQEAgLTI5NCwxNSArMjk1LDYgQEAgY2xh
c3MgUlRDU3RhdHNNZW1iZXIgOiBwdWJsaWMgUlRDU3RhdHNNZW1iZXJJbnRlcmZhY2UgewogICAg
IGlzX2RlZmluZWRfID0gdHJ1ZTsKICAgICByZXR1cm4gdmFsdWVfOwogICB9Ci0gIFQmIG9wZXJh
dG9yPShjb25zdCBSVENTdGF0c01lbWJlcjxUPiYgb3RoZXIpIHsKLSAgICBSVENfRENIRUNLKG90
aGVyLmlzX2RlZmluZWRfKTsKLSAgICAvLyBTaG91bGRuJ3QgYmUgYXR0ZW1wdGluZyB0byBhc3Np
Z24gYW4gUlRDTm9uU3RhbmRhcmRTdGF0c01lbWJlciB0byBhbgotICAgIC8vIFJUQ1N0YXRzTWVt
YmVyIG9yIHZpY2UgdmVyc2EuCi0gICAgUlRDX0RDSEVDSyhpc19zdGFuZGFyZGl6ZWQoKSA9PSBv
dGhlci5pc19zdGFuZGFyZGl6ZWQoKSk7Ci0gICAgdmFsdWVfID0gb3RoZXIudmFsdWVfOwotICAg
IGlzX2RlZmluZWRfID0gdHJ1ZTsKLSAgICByZXR1cm4gdmFsdWVfOwotICB9CiAKICAgLy8gVmFs
dWUgZ2V0dGVycy4KICAgVCYgb3BlcmF0b3IqKCkgewpAQCAtMzQ3LDYgKzMzOSwxMSBAQCBjbGFz
cyBSVENOb25TdGFuZGFyZFN0YXRzTWVtYmVyIDogcHVibGljIFJUQ1N0YXRzTWVtYmVyPFQ+IHsK
ICAgICAgIDogUlRDU3RhdHNNZW1iZXI8VD4oc3RkOjptb3ZlKG90aGVyKSkge30KIAogICBib29s
IGlzX3N0YW5kYXJkaXplZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAg
VCYgb3BlcmF0b3I9KGNvbnN0IFQmIHZhbHVlKSB7IHJldHVybiBSVENTdGF0c01lbWJlcjxUPjo6
b3BlcmF0b3I9KHZhbHVlKTsgfQorICBUJiBvcGVyYXRvcj0oY29uc3QgVCYmIHZhbHVlKSB7Cisg
ICAgcmV0dXJuIFJUQ1N0YXRzTWVtYmVyPFQ+OjpvcGVyYXRvcj0oc3RkOjptb3ZlKHZhbHVlKSk7
CisgIH0KIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9zdGF0cy9ydGNzdGF0c19vYmpl
Y3RzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc3Rh
dHMvcnRjc3RhdHNfb2JqZWN0cy5oCmluZGV4IGYzNzc4MDliYTNhNzFkYTYyNTA1OTg3YTFiNTY5
Nzc5N2M0ZjU4MDQuLjgzOTIyMzEyMTg5NTMzMzFkYTUzMmVkOGQyOTE0ZmI1NTRlODIxN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9z
dGF0cy9ydGNzdGF0c19vYmplY3RzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3N0YXRzL3J0Y3N0YXRzX29iamVjdHMuaApAQCAtMTYsNiArMTYs
NyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9zdGF0cy9ydGNzdGF0cy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCkBAIC03Myw3ICs3NCw3IEBAIHN0cnVjdCBSVENOZXR3b3JrVHlwZSB7CiB9Owog
CiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNjZXJ0aWZpY2F0ZXN0YXRz
LWRpY3QqCi1jbGFzcyBSVENDZXJ0aWZpY2F0ZVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRz
IHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDQ2VydGlmaWNhdGVTdGF0cyBmaW5hbCA6IHB1YmxpYyBS
VENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgpOwogCkBAIC04OSw3
ICs5MCw3IEBAIGNsYXNzIFJUQ0NlcnRpZmljYXRlU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDU3Rh
dHMgewogfTsKIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jY29kZWMt
ZGljdCoKLWNsYXNzIFJUQ0NvZGVjU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgeworY2xh
c3MgUlRDX0VYUE9SVCBSVENDb2RlY1N0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBw
dWJsaWM6CiAgIFdFQlJUQ19SVENTVEFUU19ERUNMKCk7CiAKQEAgLTExMCw3ICsxMTEsNyBAQCBj
bGFzcyBSVENDb2RlY1N0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKIH07CiAKIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtc3RhdHMvI2Rjc3RhdHMtZGljdCoKLWNsYXNzIFJU
Q0RhdGFDaGFubmVsU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgeworY2xhc3MgUlRDX0VY
UE9SVCBSVENEYXRhQ2hhbm5lbFN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKICBwdWJs
aWM6CiAgIFdFQlJUQ19SVENTVEFUU19ERUNMKCk7CiAKQEAgLTEzMiw3ICsxMzMsNyBAQCBjbGFz
cyBSVENEYXRhQ2hhbm5lbFN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1N0YXRzIHsKIAogLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jY2FuZGlkYXRlcGFpci1kaWN0KgogLy8g
VE9ETyhoYm9zKTogVHJhY2tpbmcgYnVnIGh0dHBzOi8vYnVncy53ZWJydGMub3JnLzcwNjIKLWNs
YXNzIFJUQ0ljZUNhbmRpZGF0ZVBhaXJTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7Citj
bGFzcyBSVENfRVhQT1JUIFJUQ0ljZUNhbmRpZGF0ZVBhaXJTdGF0cyBmaW5hbCA6IHB1YmxpYyBS
VENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgpOwogCkBAIC0xODYs
NyArMTg3LDcgQEAgY2xhc3MgUlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRzIGZpbmFsIDogcHVibGlj
IFJUQ1N0YXRzIHsKIC8vIGNyYnVnLmNvbS82MzI3MjMKIC8vIFRPRE8ocWluZ3NpKTogQWRkIHRo
ZSBzdGF0cyBvZiBTVFVOIGJpbmRpbmcgcmVxdWVzdHMgKGtlZXBhbGl2ZXMpIGFuZCBjb2xsZWN0
CiAvLyB0aGVtIGluIHRoZSBuZXcgUGVlckNvbm5lY3Rpb246OkdldFN0YXRzLgotY2xhc3MgUlRD
SWNlQ2FuZGlkYXRlU3RhdHMgOiBwdWJsaWMgUlRDU3RhdHMgeworY2xhc3MgUlRDX0VYUE9SVCBS
VENJY2VDYW5kaWRhdGVTdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgogICBXRUJS
VENfUlRDU1RBVFNfREVDTCgpOwogCkBAIC0yMjEsNyArMjIyLDcgQEAgY2xhc3MgUlRDSWNlQ2Fu
ZGlkYXRlU3RhdHMgOiBwdWJsaWMgUlRDU3RhdHMgewogLy8gfGtUeXBlfCBuZWVkIHRvIGJlIGRp
ZmZlcmVudCAoIlJUQ1N0YXRzVHlwZSB0eXBlIikgaW4gdGhlIGxvY2FsL3JlbW90ZSBjYXNlLgog
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jcnRjc3RhdHN0eXBlLXN0cioK
IC8vIFRoaXMgZm9yY2VzIHVzIHRvIGhhdmUgdG8gb3ZlcnJpZGUgY29weSgpIGFuZCB0eXBlKCku
Ci1jbGFzcyBSVENMb2NhbEljZUNhbmRpZGF0ZVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ0ljZUNh
bmRpZGF0ZVN0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDTG9jYWxJY2VDYW5kaWRhdGVTdGF0
cyBmaW5hbCA6IHB1YmxpYyBSVENJY2VDYW5kaWRhdGVTdGF0cyB7CiAgcHVibGljOgogICBzdGF0
aWMgY29uc3QgY2hhciBrVHlwZVtdOwogICBSVENMb2NhbEljZUNhbmRpZGF0ZVN0YXRzKGNvbnN0
IHN0ZDo6c3RyaW5nJiBpZCwgaW50NjRfdCB0aW1lc3RhbXBfdXMpOwpAQCAtMjMwLDcgKzIzMSw4
IEBAIGNsYXNzIFJUQ0xvY2FsSWNlQ2FuZGlkYXRlU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDSWNl
Q2FuZGlkYXRlU3RhdHMgewogICBjb25zdCBjaGFyKiB0eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiB9
OwogCi1jbGFzcyBSVENSZW1vdGVJY2VDYW5kaWRhdGVTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENJ
Y2VDYW5kaWRhdGVTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ1JlbW90ZUljZUNhbmRpZGF0
ZVN0YXRzIGZpbmFsCisgICAgOiBwdWJsaWMgUlRDSWNlQ2FuZGlkYXRlU3RhdHMgewogIHB1Ymxp
YzoKICAgc3RhdGljIGNvbnN0IGNoYXIga1R5cGVbXTsKICAgUlRDUmVtb3RlSWNlQ2FuZGlkYXRl
U3RhdHMoY29uc3Qgc3RkOjpzdHJpbmcmIGlkLCBpbnQ2NF90IHRpbWVzdGFtcF91cyk7CkBAIC0y
NDEsNyArMjQzLDcgQEAgY2xhc3MgUlRDUmVtb3RlSWNlQ2FuZGlkYXRlU3RhdHMgZmluYWwgOiBw
dWJsaWMgUlRDSWNlQ2FuZGlkYXRlU3RhdHMgewogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8v
d2VicnRjLXN0YXRzLyNtc3N0YXRzLWRpY3QqCiAvLyBUT0RPKGhib3MpOiBUcmFja2luZyBidWcg
Y3JidWcuY29tLzY2MDgyNwotY2xhc3MgUlRDTWVkaWFTdHJlYW1TdGF0cyBmaW5hbCA6IHB1Ymxp
YyBSVENTdGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ01lZGlhU3RyZWFtU3RhdHMgZmluYWwg
OiBwdWJsaWMgUlRDU3RhdHMgewogIHB1YmxpYzoKICAgV0VCUlRDX1JUQ1NUQVRTX0RFQ0woKTsK
IApAQCAtMjU2LDcgKzI1OCw3IEBAIGNsYXNzIFJUQ01lZGlhU3RyZWFtU3RhdHMgZmluYWwgOiBw
dWJsaWMgUlRDU3RhdHMgewogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRz
LyNtc3RzdGF0cy1kaWN0KgogLy8gVE9ETyhoYm9zKTogVHJhY2tpbmcgYnVnIGNyYnVnLmNvbS82
NTkxMzcKLWNsYXNzIFJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENT
dGF0cyB7CitjbGFzcyBSVENfRVhQT1JUIFJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyBmaW5hbCA6
IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgpOwog
CkBAIC0zMDYsMTAgKzMwOCwxNCBAQCBjbGFzcyBSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHMgZmlu
YWwgOiBwdWJsaWMgUlRDU3RhdHMgewogICBSVENTdGF0c01lbWJlcjxkb3VibGU+IHRvdGFsX3Nh
bXBsZXNfZHVyYXRpb247CiAgIFJUQ1N0YXRzTWVtYmVyPHVpbnQ2NF90PiBjb25jZWFsZWRfc2Ft
cGxlczsKICAgUlRDU3RhdHNNZW1iZXI8dWludDY0X3Q+IGNvbmNlYWxtZW50X2V2ZW50czsKKyAg
Ly8gTm9uLXN0YW5kYXJkIGF1ZGlvLW9ubHkgbWVtYmVyCisgIC8vIFRPRE8oa3VkZGFpKTogQWRk
IGRlc2NyaXB0aW9uIHRvIHN0YW5kYXJkLiBjcmJ1Zy5jb20vd2VicnRjLzEwMDQyCisgIFJUQ05v
blN0YW5kYXJkU3RhdHNNZW1iZXI8dWludDY0X3Q+IGppdHRlcl9idWZmZXJfZmx1c2hlczsKKyAg
UlRDTm9uU3RhbmRhcmRTdGF0c01lbWJlcjx1aW50NjRfdD4gZGVsYXllZF9wYWNrZXRfb3V0YWdl
X3NhbXBsZXM7CiB9OwogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNw
Y3N0YXRzLWRpY3QqCi1jbGFzcyBSVENQZWVyQ29ubmVjdGlvblN0YXRzIGZpbmFsIDogcHVibGlj
IFJUQ1N0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDUGVlckNvbm5lY3Rpb25TdGF0cyBmaW5h
bCA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgp
OwogCkBAIC0zMjQsNyArMzMwLDcgQEAgY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25TdGF0cyBmaW5h
bCA6IHB1YmxpYyBSVENTdGF0cyB7CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMt
c3RhdHMvI3N0cmVhbXN0YXRzLWRpY3QqCiAvLyBUT0RPKGhib3MpOiBUcmFja2luZyBidWcgY3Ji
dWcuY29tLzY1Nzg1NAotY2xhc3MgUlRDUlRQU3RyZWFtU3RhdHMgOiBwdWJsaWMgUlRDU3RhdHMg
eworY2xhc3MgUlRDX0VYUE9SVCBSVENSVFBTdHJlYW1TdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7
CiAgcHVibGljOgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgpOwogCkBAIC0zNjIsNyArMzY4LDcg
QEAgY2xhc3MgUlRDUlRQU3RyZWFtU3RhdHMgOiBwdWJsaWMgUlRDU3RhdHMgewogLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jaW5ib3VuZHJ0cHN0YXRzLWRpY3QqCiAvLyBU
T0RPKGhib3MpOiBTdXBwb3J0IHRoZSByZW1vdGUgY2FzZSB8aXNfcmVtb3RlID0gdHJ1ZXwuCiAv
LyBodHRwczovL2J1Z3Mud2VicnRjLm9yZy83MDY1Ci1jbGFzcyBSVENJbmJvdW5kUlRQU3RyZWFt
U3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDUlRQU3RyZWFtU3RhdHMgeworY2xhc3MgUlRDX0VYUE9S
VCBSVENJbmJvdW5kUlRQU3RyZWFtU3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDUlRQU3RyZWFtU3Rh
dHMgewogIHB1YmxpYzoKICAgV0VCUlRDX1JUQ1NUQVRTX0RFQ0woKTsKIApAQCAtNDA2LDcgKzQx
Miw3IEBAIGNsYXNzIFJUQ0luYm91bmRSVFBTdHJlYW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENS
VFBTdHJlYW1TdGF0cyB7CiAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyNv
dXRib3VuZHJ0cHN0YXRzLWRpY3QqCiAvLyBUT0RPKGhib3MpOiBTdXBwb3J0IHRoZSByZW1vdGUg
Y2FzZSB8aXNfcmVtb3RlID0gdHJ1ZXwuCiAvLyBodHRwczovL2J1Z3Mud2VicnRjLm9yZy83MDY2
Ci1jbGFzcyBSVENPdXRib3VuZFJUUFN0cmVhbVN0YXRzIGZpbmFsIDogcHVibGljIFJUQ1JUUFN0
cmVhbVN0YXRzIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRDT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyBm
aW5hbCA6IHB1YmxpYyBSVENSVFBTdHJlYW1TdGF0cyB7CiAgcHVibGljOgogICBXRUJSVENfUlRD
U1RBVFNfREVDTCgpOwogCkBAIC00MjMsNyArNDI5LDcgQEAgY2xhc3MgUlRDT3V0Ym91bmRSVFBT
dHJlYW1TdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENSVFBTdHJlYW1TdGF0cyB7CiB9OwogCiAvLyBo
dHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXN0YXRzLyN0cmFuc3BvcnRzdGF0cy1kaWN0Kgot
Y2xhc3MgUlRDVHJhbnNwb3J0U3RhdHMgZmluYWwgOiBwdWJsaWMgUlRDU3RhdHMgeworY2xhc3Mg
UlRDX0VYUE9SVCBSVENUcmFuc3BvcnRTdGF0cyBmaW5hbCA6IHB1YmxpYyBSVENTdGF0cyB7CiAg
cHVibGljOgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvc3RhdHMvcnRjc3RhdHNyZXBv
cnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9zdGF0
cy9ydGNzdGF0c3JlcG9ydC5oCmluZGV4IGY3NDEwYjM5Zjc5YWZmYTIzNzYzNjZlYmNmOTNiZTYx
NGFlYzMwMmYuLjhiZjFjYjU3ZDlkNTVhZTUwNDMyYjI1NjM1NWRkMjFmMjg0ZmI0MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9zdGF0
cy9ydGNzdGF0c3JlcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9zdGF0cy9ydGNzdGF0c3JlcG9ydC5oCkBAIC0yMCwxMiArMjAsMTMgQEAK
ICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNv
dW50ZWRvYmplY3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCiAvLyBBIGNvbGxlY3Rpb24gb2Ygc3RhdHMuCiAvLyBUaGlzIGlzIGFjY2Vzc2libGUgYXMg
YSBtYXAgZnJvbSB8UlRDU3RhdHM6OmlkfCB0byB8UlRDU3RhdHN8LgotY2xhc3MgUlRDU3RhdHNS
ZXBvcnQgOiBwdWJsaWMgcnRjOjpSZWZDb3VudEludGVyZmFjZSB7CitjbGFzcyBSVENfRVhQT1JU
IFJUQ1N0YXRzUmVwb3J0IDogcHVibGljIHJ0Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogIHB1Ymxp
YzoKICAgdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjp1bmlxdWVfcHRyPGNvbnN0
IFJUQ1N0YXRzPj4gU3RhdHNNYXA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L0RFUFMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9ERVBTCmluZGV4IDk4YjFhZDM5MWZjYTJi
NjQ0YzYxYTNmNTAzMjhkZDVlZmVkZTJlZGYuLjljMjkzYjMyM2U3MDNmYzZjZDQ5ZDVkOTgzMGNh
YjdmOGY1NGY5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS90ZXN0L0RFUFMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvREVQUwpAQCAtNSw0ICs1LDEwIEBAIHNwZWNpZmljX2lu
Y2x1ZGVfcnVsZXMgPSB7CiAgICIuKiI6IFsKICAgICAiK3ZpZGVvIgogICBdLAorICAibG9vcGJh
Y2tfbWVkaWFfdHJhbnNwb3J0XC5oIjogWworICAgICIrcnRjX2Jhc2UvYXN5bmNpbnZva2VyLmgi
LAorICAgICIrcnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiLAorICAgICIrcnRjX2Jhc2UvdGhy
ZWFkLmgiLAorICAgICIrcnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIsCisgIF0sCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVz
dC9mYWtlX2ZyYW1lX2RlY3J5cHRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmNjCmluZGV4IDQzMjY2
NGEwMzA2M2M4YjU4ZWQyNDM2OTRlM2NkYjAyYjVjYjkzZGEuLmI3NzAxN2ZkYjQzNjg0MDAzZmU1
NTJmM2I4NDQ2YmMwOTM2MWE5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2Vf
ZnJhbWVfZGVjcnlwdG9yLmNjCkBAIC0yNSwxOSArMjUsMjAgQEAgaW50IEZha2VGcmFtZURlY3J5
cHRvcjo6RGVjcnlwdChjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8dWludDhfdD4gZnJhbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfd3JpdHRlbikgewogICBp
ZiAoZmFpbF9kZWNyeXB0aW9uXykgewotICAgIHJldHVybiAxOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KEZha2VEZWNyeXB0U3RhdHVzOjpGT1JDRURfRkFJTFVSRSk7CiAgIH0KIAogICBS
VENfQ0hFQ0tfRVEoZnJhbWUuc2l6ZSgpICsgMSwgZW5jcnlwdGVkX2ZyYW1lLnNpemUoKSk7CiAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWUuc2l6ZSgpOyBpKyspIHsKLSAgICBmcmFtZVtp
XSBePSBmYWtlX2tleV87CisgICAgZnJhbWVbaV0gPSBlbmNyeXB0ZWRfZnJhbWVbaV0gXiBmYWtl
X2tleV87CiAgIH0KIAogICBpZiAoZW5jcnlwdGVkX2ZyYW1lW2ZyYW1lLnNpemUoKV0gIT0gZXhw
ZWN0ZWRfcG9zdGZpeF9ieXRlXykgewotICAgIHJldHVybiAxOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KEZha2VEZWNyeXB0U3RhdHVzOjpJTlZBTElEX1BPU1RGSVgpOwogICB9CiAKLSAg
cmV0dXJuIDA7CisgICpieXRlc193cml0dGVuID0gZnJhbWUuc2l6ZSgpOworICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihGYWtlRGVjcnlwdFN0YXR1czo6T0spOwogfQogCiBzaXplX3QgRmFrZUZy
YW1lRGVjcnlwdG9yOjpHZXRNYXhQbGFpbnRleHRCeXRlU2l6ZSgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVf
ZGVjcnlwdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdGVzdC9mYWtlX2ZyYW1lX2RlY3J5cHRvci5oCmluZGV4IGI5NDVkZWY1OWE4YjBhNWI3NDc0
NWY1MmI3NDIwOGJmMTY1ZGU1YzMuLmJjYjgwODBmZDRjODRjNjZiMzM1MjQyYzA5MzE0OGQyOTgz
YjcwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlwdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9kZWNyeXB0b3Iu
aApAQCAtMjIsMzQgKzIyLDQwIEBAIG5hbWVzcGFjZSB3ZWJydGMgewogLy8gRnJhbWVEZWNyeXB0
b3JJbnRlcmZhY2UuIEl0IGlzIGNvbnN0cnVjdGVkIHdpdGggYSBzaW1wbGUgc2luZ2xlIGRpZ2l0
IGtleSBhbmQKIC8vIGEgZml4ZWQgcG9zdGZpeCBieXRlLiBUaGlzIGlzIGp1c3QgdG8gdmFsaWRh
dGUgdGhhdCB0aGUgY29yZSBjb2RlIHdvcmtzCiAvLyBhcyBleHBlY3RlZC4KLWNsYXNzIEZha2VG
cmFtZURlY3J5cHRvcgorY2xhc3MgRmFrZUZyYW1lRGVjcnlwdG9yIGZpbmFsCiAgICAgOiBwdWJs
aWMgcnRjOjpSZWZDb3VudGVkT2JqZWN0PEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiB7CiAgcHVi
bGljOgogICAvLyBQcm92aWRlIGEga2V5ICgwLDI1NSkgYW5kIHNvbWUgcG9zdGZpeCBieXRlICgw
LDI1NSkgdGhpcyBzaG91bGQgbWF0Y2ggdGhlCiAgIC8vIGJ5dGUgeW91IGV4cGVjdCBmcm9tIHRo
ZSBGYWtlRnJhbWVFbmNyeXB0b3IuCi0gIGV4cGxpY2l0IEZha2VGcmFtZURlY3J5cHRvcih1aW50
OF90IGZha2Vfa2V5ID0gMSwKKyAgZXhwbGljaXQgRmFrZUZyYW1lRGVjcnlwdG9yKHVpbnQ4X3Qg
ZmFrZV9rZXkgPSAweEFBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBl
eHBlY3RlZF9wb3N0Zml4X2J5dGUgPSAyNTUpOwotCi0gIC8vIEZyYW1lRGVjcnlwdG9ySW50ZXJm
YWNlIGltcGxlbWVudGF0aW9uCisgIC8vIEZha2UgZGVjcnlwdGlvbiB0aGF0IGp1c3QgeG9ycyB0
aGUgcGF5bG9hZCB3aXRoIHRoZSAxIGJ5dGUga2V5IGFuZCBjaGVja3MKKyAgLy8gdGhlIHBvc3Rm
aXggYnl0ZS4gVGhpcyB3aWxsIGFsd2F5cyBmYWlsIGlmIGZhaWxfZGVjcnlwdGlvbl8gaXMgc2V0
IHRvIHRydWUuCiAgIGludCBEZWNyeXB0KGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlLAog
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4mIGNzcmNzLAogICAgICAg
ICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBhZGRpdGlvbmFsX2RhdGEsCiAg
ICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IGVuY3J5cHRlZF9mcmFt
ZSwKICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8dWludDhfdD4gZnJhbWUsCiAgICAgICAg
ICAgICAgIHNpemVfdCogYnl0ZXNfd3JpdHRlbikgb3ZlcnJpZGU7Ci0KKyAgLy8gQWx3YXlzIHJl
dHVybnMgMSBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhlIGVuY3J5cHRlZCBmcmFtZS4KICAgc2l6
ZV90IEdldE1heFBsYWludGV4dEJ5dGVTaXplKGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGVuY3J5cHRlZF9mcmFt
ZV9zaXplKSBvdmVycmlkZTsKLQorICAvLyBTZXRzIHRoZSBmYWtlIGtleSB0byB1c2UgZm9yIGVu
Y3J5cHRpb24uCiAgIHZvaWQgU2V0RmFrZUtleSh1aW50OF90IGZha2Vfa2V5KTsKLQorICAvLyBS
ZXR1cm5zIHRoZSBmYWtlIGtleSB1c2VkIGZvciBlbmNyeXB0aW9uLgogICB1aW50OF90IEdldEZh
a2VLZXkoKSBjb25zdDsKLQorICAvLyBTZXQgdGhlIFBvc3RmaXggYnl0ZSB0aGF0IGlzIGV4cGVj
dGVkIGluIHRoZSBlbmNyeXB0ZWQgcGF5bG9hZC4KICAgdm9pZCBTZXRFeHBlY3RlZFBvc3RmaXhC
eXRlKHVpbnQ4X3QgZXhwZWN0ZWRfcG9zdGZpeF9ieXRlKTsKLQorICAvLyBSZXR1cm5zIHRoZSBw
b3N0Zml4IGJ5dGUgdGhhdCB3aWxsIGJlIGNoZWNrZWQgZm9yIGluIHRoZSBlbmNyeXB0ZWQgcGF5
bG9hZC4KICAgdWludDhfdCBHZXRFeHBlY3RlZFBvc3RmaXhCeXRlKCkgY29uc3Q7Ci0KKyAgLy8g
SWYgc2V0IHRvIHRydWUgd2lsbCBmb3JjZSBhbGwgZW5jcnlwdGlvbiB0byBmYWlsLgogICB2b2lk
IFNldEZhaWxEZWNyeXB0aW9uKGJvb2wgZmFpbF9kZWNyeXB0aW9uKTsKKyAgLy8gU2ltcGxlIGVy
cm9yIGNvZGVzIGZvciB0ZXN0cyB0byB2YWxpZGF0ZSBhZ2FpbnN0LgorICBlbnVtIGNsYXNzIEZh
a2VEZWNyeXB0U3RhdHVzIDogaW50IHsKKyAgICBPSyA9IDAsCisgICAgRk9SQ0VEX0ZBSUxVUkUg
PSAxLAorICAgIElOVkFMSURfUE9TVEZJWCA9IDIKKyAgfTsKIAogIHByaXZhdGU6CiAgIHVpbnQ4
X3QgZmFrZV9rZXlfID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZW5jcnlwdG9yLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9l
bmNyeXB0b3IuY2MKaW5kZXggMDEzMDU4Zjk2YWE2ZGZlOWIwNjEzOTM4ZTU3ZGFlZjVkYTM4YzM2
Yy4uZWRmM2NjMjEzNmFkMDBmNzg1ZDc2ZjdhNDkwYjI4NTU0YWQyZDUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9m
cmFtZV9lbmNyeXB0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9lbmNyeXB0b3IuY2MKQEAgLTIyLDE4ICsyMiwx
OCBAQCBpbnQgRmFrZUZyYW1lRW5jcnlwdG9yOjpFbmNyeXB0KGNyaWNrZXQ6Ok1lZGlhVHlwZSBt
ZWRpYV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmll
dzxjb25zdCB1aW50OF90PiBmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnRjOjpBcnJheVZpZXc8dWludDhfdD4gZW5jcnlwdGVkX2ZyYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVzX3dyaXR0ZW4pIHsKLSAgLy8gVXNlZnVsIGlm
IHlvdSB3YW50IHRvIHRlc3QgZmFpbHVyZSBjYXNlcy4KICAgaWYgKGZhaWxfZW5jcnlwdGlvbl8p
IHsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGYWtlRW5jcnlw
dGlvblN0YXR1czo6Rk9SQ0VEX0ZBSUxVUkUpOwogICB9CiAKICAgUlRDX0NIRUNLX0VRKGZyYW1l
LnNpemUoKSArIDEsIGVuY3J5cHRlZF9mcmFtZS5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZyYW1lLnNpemUoKTsgaSsrKSB7Ci0gICAgZW5jcnlwdGVkX2ZyYW1lW2ldIF49IGZh
a2Vfa2V5XzsKKyAgICBlbmNyeXB0ZWRfZnJhbWVbaV0gPSBmcmFtZVtpXSBeIGZha2Vfa2V5XzsK
ICAgfQorCiAgIGVuY3J5cHRlZF9mcmFtZVtmcmFtZS5zaXplKCldID0gcG9zdGZpeF9ieXRlXzsK
ICAgKmJ5dGVzX3dyaXR0ZW4gPSBlbmNyeXB0ZWRfZnJhbWUuc2l6ZSgpOwotICByZXR1cm4gMDsK
KyAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRmFrZUVuY3J5cHRpb25TdGF0dXM6Ok9LKTsKIH0K
IAogc2l6ZV90IEZha2VGcmFtZUVuY3J5cHRvcjo6R2V0TWF4Q2lwaGVydGV4dEJ5dGVTaXplKApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3Rlc3QvZmFrZV9mcmFtZV9lbmNyeXB0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfZnJhbWVfZW5jcnlwdG9yLmgKaW5kZXggNjFh
ZTkzODNmNmE1NDM5MDk5N2JiMTRjM2IwOTY4MjJmZWUwZDRlNC4uMGJlYzk2N2RjMjI5NjQ2ZWFh
ZmRiMWJjNmViY2Y5YjY2NjBhN2FmYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9mcmFtZV9lbmNyeXB0b3IuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9mYWtl
X2ZyYW1lX2VuY3J5cHRvci5oCkBAIC0yNCwyOSArMjQsMzUgQEAgY2xhc3MgRmFrZUZyYW1lRW5j
cnlwdG9yCiAgICAgOiBwdWJsaWMgcnRjOjpSZWZDb3VudGVkT2JqZWN0PEZyYW1lRW5jcnlwdG9y
SW50ZXJmYWNlPiB7CiAgcHVibGljOgogICAvLyBQcm92aWRlIGEga2V5ICgwLDI1NSkgYW5kIHNv
bWUgcG9zdGZpeCBieXRlICgwLDI1NSkuCi0gIGV4cGxpY2l0IEZha2VGcmFtZUVuY3J5cHRvcih1
aW50OF90IGZha2Vfa2V5ID0gMSwgdWludDhfdCBwb3N0Zml4X2J5dGUgPSAyNTUpOwotCi0gIC8v
IEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlIGltcGxlbWVudGF0aW9uCisgIGV4cGxpY2l0IEZha2VG
cmFtZUVuY3J5cHRvcih1aW50OF90IGZha2Vfa2V5ID0gMHhBQSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgcG9zdGZpeF9ieXRlID0gMjU1KTsKKyAgLy8gU2ltcGx5IHhv
cnMgZWFjaCBwYXlsb2FkIHdpdGggdGhlIHByb3ZpZGVkIGZha2Uga2V5IGFuZCBhZGRzIHRoZSBw
b3N0Zml4CisgIC8vIGJpdCB0byB0aGUgZW5kLiBUaGlzIHdpbGwgYWx3YXlzIGZhaWwgaWYgZmFp
bF9lbmNyeXB0aW9uXyBpcyBzZXQgdG8gdHJ1ZS4KICAgaW50IEVuY3J5cHQoY3JpY2tldDo6TWVk
aWFUeXBlIG1lZGlhX3R5cGUsCiAgICAgICAgICAgICAgIHVpbnQzMl90IHNzcmMsCiAgICAgICAg
ICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IGFkZGl0aW9uYWxfZGF0YSwKICAg
ICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gZnJhbWUsCiAgICAgICAg
ICAgICAgIHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4X3Q+IGVuY3J5cHRlZF9mcmFtZSwKICAgICAgICAg
ICAgICAgc2l6ZV90KiBieXRlc193cml0dGVuKSBvdmVycmlkZTsKLQorICAvLyBBbHdheXMgcmV0
dXJucyAxIG1vcmUgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZnJhbWUuCiAgIHNpemVfdCBHZXRNYXhD
aXBoZXJ0ZXh0Qnl0ZVNpemUoY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGZyYW1lX3NpemUpIG92ZXJyaWRlOwot
CisgIC8vIFNldHMgdGhlIGZha2Uga2V5IHRvIHVzZSBkdXJpbmcgZW5jcnlwdGlvbi4KICAgdm9p
ZCBTZXRGYWtlS2V5KHVpbnQ4X3QgZmFrZV9rZXkpOwotCisgIC8vIFJldHVybnMgdGhlIGZha2Ug
a2V5IHVzZWQgZHVyaW5nIGVuY3J5cHRpb24uCiAgIHVpbnQ4X3QgR2V0RmFrZUtleSgpIGNvbnN0
OwotCisgIC8vIFNldCB0aGUgcG9zdGZpeCBieXRlIHRvIHVzZS4KICAgdm9pZCBTZXRQb3N0Zml4
Qnl0ZSh1aW50OF90IGV4cGVjdGVkX3Bvc3RmaXhfYnl0ZSk7Ci0KKyAgLy8gUmV0dXJuIGEgcG9z
dGZpeCBieXRlIGFkZGVkIHRvIGVhY2ggb3V0Z29pbmcgcGF5bG9hZC4KICAgdWludDhfdCBHZXRQ
b3N0Zml4Qnl0ZSgpIGNvbnN0OwotCisgIC8vIEZvcmNlIGFsbCBlbmNyeXB0aW9ucyB0byBmYWls
LgogICB2b2lkIFNldEZhaWxFbmNyeXB0aW9uKGJvb2wgZmFpbF9lbmNyeXB0aW9uKTsKIAorICBl
bnVtIGNsYXNzIEZha2VFbmNyeXB0aW9uU3RhdHVzIDogaW50IHsKKyAgICBPSyA9IDAsCisgICAg
Rk9SQ0VEX0ZBSUxVUkUgPSAxLAorICB9OworCiAgcHJpdmF0ZToKICAgdWludDhfdCBmYWtlX2tl
eV8gPSAwOwogICB1aW50OF90IHBvc3RmaXhfYnl0ZV8gPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvZmFrZV9tZWRpYV90
cmFuc3BvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90ZXN0L2Zha2VfbWVkaWFfdHJhbnNwb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI2ZWM5M2FlMmI3OTIy
YjgyMjNkOTg5MWExZDM1OGQ4YTIyNTUzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2Zha2VfbWVkaWFfdHJhbnNw
b3J0LmgKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJU
QyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJ
X1RFU1RfRkFLRV9NRURJQV9UUkFOU1BPUlRfSF8KKyNkZWZpbmUgQVBJX1RFU1RfRkFLRV9NRURJ
QV9UUkFOU1BPUlRfSF8KKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdHJpbmc+Cisj
aW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5o
IgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gVE9ETyhzdWtoYW5vdik6IEZvciBub3cgZmFr
ZSBtZWRpYSB0cmFuc3BvcnQgZG9lcyBub3RoaW5nIGFuZCBpcyB1c2VkIG9ubHkKKy8vIGluIGpz
ZXBjb250cm9sbGVyIHVuaXR0ZXN0cy4gSW4gdGhlIGZ1dHVyZSB3ZSBzaG91bGQgaW1wbGVtZW50
IGZha2UgbWVkaWEKKy8vIHRyYW5zcG9ydCwgd2hpY2ggZm9yd2FyZHMgZnJhbWVzIHRvIGFub3Ro
ZXIgZmFrZSBtZWRpYSB0cmFuc3BvcnQsIHNvIHdlCisvLyBjb3VsZCB1bml0IHRlc3QgYXVkaW8g
LyB2aWRlbyBpbnRlZ3JhdGlvbi4KK2NsYXNzIEZha2VNZWRpYVRyYW5zcG9ydCA6IHB1YmxpYyBN
ZWRpYVRyYW5zcG9ydEludGVyZmFjZSB7CisgcHVibGljOgorICBleHBsaWNpdCBGYWtlTWVkaWFU
cmFuc3BvcnQoY29uc3QgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyYgc2V0dGluZ3MpCisgICAgICA6
IHNldHRpbmdzXyhzZXR0aW5ncykge30KKyAgfkZha2VNZWRpYVRyYW5zcG9ydCgpID0gZGVmYXVs
dDsKKworICBSVENFcnJvciBTZW5kQXVkaW9GcmFtZSh1aW50NjRfdCBjaGFubmVsX2lkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lIGZy
YW1lKSBvdmVycmlkZSB7CisgICAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOworICB9CisKKyAgUlRD
RXJyb3IgU2VuZFZpZGVvRnJhbWUoCisgICAgICB1aW50NjRfdCBjaGFubmVsX2lkLAorICAgICAg
Y29uc3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVkVmlkZW9GcmFtZSYgZnJhbWUpIG92ZXJyaWRlIHsK
KyAgICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7CisgIH0KKworICBSVENFcnJvciBSZXF1ZXN0S2V5
RnJhbWUodWludDY0X3QgY2hhbm5lbF9pZCkgb3ZlcnJpZGUgeworICAgIHJldHVybiBSVENFcnJv
cjo6T0soKTsKKyAgfTsKKworICB2b2lkIFNldFJlY2VpdmVBdWRpb1NpbmsoTWVkaWFUcmFuc3Bv
cnRBdWRpb1NpbmtJbnRlcmZhY2UqIHNpbmspIG92ZXJyaWRlIHt9CisgIHZvaWQgU2V0UmVjZWl2
ZVZpZGVvU2luayhNZWRpYVRyYW5zcG9ydFZpZGVvU2lua0ludGVyZmFjZSogc2luaykgb3ZlcnJp
ZGUge30KKworICAvLyBSZXR1cm5zIHRydWUgaWYgZmFrZSBtZWRpYSB0cmFuc3BvcnQgd2FzIGNy
ZWF0ZWQgYXMgYSBjYWxsZXIuCisgIGJvb2wgaXNfY2FsbGVyKCkgY29uc3QgeyByZXR1cm4gc2V0
dGluZ3NfLmlzX2NhbGxlcjsgfQorICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gcHJlX3No
YXJlZF9rZXkoKSBjb25zdCB7CisgICAgcmV0dXJuIHNldHRpbmdzXy5wcmVfc2hhcmVkX2tleTsK
KyAgfQorCisgIFJUQ0Vycm9yIFNlbmREYXRhKGludCBjaGFubmVsX2lkLAorICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTZW5kRGF0YVBhcmFtcyYgcGFyYW1zLAorICAgICAgICAgICAgICAgICAg
ICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlIHsKKyAgICBy
ZXR1cm4gUlRDRXJyb3I6Ok9LKCk7CisgIH0KKworICBSVENFcnJvciBDbG9zZUNoYW5uZWwoaW50
IGNoYW5uZWxfaWQpIG92ZXJyaWRlIHsgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOyB9CisKKyAgdm9p
ZCBTZXREYXRhU2luayhEYXRhQ2hhbm5lbFNpbmsqIHNpbmspIG92ZXJyaWRlIHt9CisKKyAgdm9p
ZCBTZXRNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2soCisgICAgICBNZWRpYVRyYW5zcG9ydFN0
YXRlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZSB7CisgICAgc3RhdGVfY2FsbGJhY2tfID0g
Y2FsbGJhY2s7CisgIH0KKworICB2b2lkIFNldFN0YXRlKHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRT
dGF0ZSBzdGF0ZSkgeworICAgIGlmIChzdGF0ZV9jYWxsYmFja18pIHsKKyAgICAgIHN0YXRlX2Nh
bGxiYWNrXy0+T25TdGF0ZUNoYW5nZWQoc3RhdGUpOworICAgIH0KKyAgfQorCisgIHZvaWQgQWRk
VGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIoCisgICAgICB3ZWJydGM6OlRhcmdldFRyYW5zZmVy
UmF0ZU9ic2VydmVyKiBvYnNlcnZlcikgb3ZlcnJpZGUgeworICAgIFJUQ19DSEVDSyhzdGQ6OmZp
bmQodGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IG9ic2VydmVyKSA9PSB0YXJnZXRfcmF0ZV9vYnNlcnZlcnNfLmVuZCgpKTsKKyAgICB0YXJnZXRf
cmF0ZV9vYnNlcnZlcnNfLnB1c2hfYmFjayhvYnNlcnZlcik7CisgIH0KKworICB2b2lkIFJlbW92
ZVRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKAorICAgICAgd2VicnRjOjpUYXJnZXRUcmFuc2Zl
clJhdGVPYnNlcnZlciogb2JzZXJ2ZXIpIG92ZXJyaWRlIHsKKyAgICBhdXRvIGl0ID0gc3RkOjpm
aW5kKHRhcmdldF9yYXRlX29ic2VydmVyc18uYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRhcmdldF9yYXRlX29ic2VydmVyc18uZW5kKCksIG9ic2VydmVyKTsKKyAgICBpZiAoaXQg
IT0gdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5lbmQoKSkgeworICAgICAgdGFyZ2V0X3JhdGVfb2Jz
ZXJ2ZXJzXy5lcmFzZShpdCk7CisgICAgfQorICB9CisKKyAgaW50IHRhcmdldF9yYXRlX29ic2Vy
dmVyc19zaXplKCkgeyByZXR1cm4gdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzXy5zaXplKCk7IH0KKwor
IHByaXZhdGU6CisgIGNvbnN0IE1lZGlhVHJhbnNwb3J0U2V0dGluZ3Mgc2V0dGluZ3NfOworICBN
ZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sqIHN0YXRlX2NhbGxiYWNrXzsKKyAgc3RkOjp2ZWN0
b3I8d2VicnRjOjpUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlcio+IHRhcmdldF9yYXRlX29ic2Vy
dmVyc187Cit9OworCisvLyBGYWtlIG1lZGlhIHRyYW5zcG9ydCBmYWN0b3J5IGNyZWF0ZXMgZmFr
ZSBtZWRpYSB0cmFuc3BvcnQuCitjbGFzcyBGYWtlTWVkaWFUcmFuc3BvcnRGYWN0b3J5IDogcHVi
bGljIE1lZGlhVHJhbnNwb3J0RmFjdG9yeSB7CisgcHVibGljOgorICBGYWtlTWVkaWFUcmFuc3Bv
cnRGYWN0b3J5KCkgPSBkZWZhdWx0OworICB+RmFrZU1lZGlhVHJhbnNwb3J0RmFjdG9yeSgpID0g
ZGVmYXVsdDsKKworICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVRyYW5zcG9ydElu
dGVyZmFjZT4+IENyZWF0ZU1lZGlhVHJhbnNwb3J0KAorICAgICAgcnRjOjpQYWNrZXRUcmFuc3Bv
cnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9ydCwKKyAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3Jr
X3RocmVhZCwKKyAgICAgIGJvb2wgaXNfY2FsbGVyKSBvdmVycmlkZSB7CisgICAgTWVkaWFUcmFu
c3BvcnRTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBzZXR0aW5ncy5pc19jYWxsZXIgPSBpc19jYWxs
ZXI7CisgICAgcmV0dXJuIENyZWF0ZU1lZGlhVHJhbnNwb3J0KHBhY2tldF90cmFuc3BvcnQsIG5l
dHdvcmtfdGhyZWFkLCBzZXR0aW5ncyk7CisgIH0KKworICBSVENFcnJvck9yPHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYVRyYW5zcG9ydEludGVyZmFjZT4+IENyZWF0ZU1lZGlhVHJhbnNwb3J0KAorICAg
ICAgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9ydCwKKyAgICAg
IHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKKyAgICAgIGNvbnN0IE1lZGlhVHJhbnNwb3J0
U2V0dGluZ3MmIHNldHRpbmdzKSBvdmVycmlkZSB7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlh
VHJhbnNwb3J0SW50ZXJmYWNlPiBtZWRpYV90cmFuc3BvcnQgPQorICAgICAgICBhYnNsOjptYWtl
X3VuaXF1ZTxGYWtlTWVkaWFUcmFuc3BvcnQ+KHNldHRpbmdzKTsKKyAgICByZXR1cm4gc3RkOjpt
b3ZlKG1lZGlhX3RyYW5zcG9ydCk7CisgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
KworI2VuZGlmICAvLyBBUElfVEVTVF9GQUtFX01FRElBX1RSQU5TUE9SVF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbG9v
cGJhY2tfbWVkaWFfdHJhbnNwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ODI1NWIxMzVlNzUwOGNhYjAwNDk2NjMwYTUzN2ZkYzM3OWI0NzNjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qv
bG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0LmgKQEAgLTAsMCArMSwyOTEgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpZm5kZWYgQVBJX1RFU1RfTE9PUEJBQ0tfTUVESUFfVFJBTlNQT1JUX0hfCisj
ZGVmaW5lIEFQSV9URVNUX0xPT1BCQUNLX01FRElBX1RSQU5TUE9SVF9IXworCisjaW5jbHVkZSA8
bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNw
b3J0X2ludGVyZmFjZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jaW52b2tlci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
cmVhZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworCisvLyBXcmFwcGVyIHVzZWQgdG8gaGFuZCBvdXQgdW5pcXVlX3B0cnMgdG8g
bG9vcGJhY2sgbWVkaWEgdHJhbnNwb3J0cyB3aXRob3V0CisvLyBvd25lcnNoaXAgY2hhbmdlcy4K
K2NsYXNzIFdyYXBwZXJNZWRpYVRyYW5zcG9ydCA6IHB1YmxpYyBNZWRpYVRyYW5zcG9ydEludGVy
ZmFjZSB7CisgcHVibGljOgorICBleHBsaWNpdCBXcmFwcGVyTWVkaWFUcmFuc3BvcnQoTWVkaWFU
cmFuc3BvcnRJbnRlcmZhY2UqIHdyYXBwZWQpCisgICAgICA6IHdyYXBwZWRfKHdyYXBwZWQpIHt9
CisKKyAgUlRDRXJyb3IgU2VuZEF1ZGlvRnJhbWUodWludDY0X3QgY2hhbm5lbF9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSBmcmFt
ZSkgb3ZlcnJpZGUgeworICAgIHJldHVybiB3cmFwcGVkXy0+U2VuZEF1ZGlvRnJhbWUoY2hhbm5l
bF9pZCwgc3RkOjptb3ZlKGZyYW1lKSk7CisgIH0KKworICBSVENFcnJvciBTZW5kVmlkZW9GcmFt
ZSgKKyAgICAgIHVpbnQ2NF90IGNoYW5uZWxfaWQsCisgICAgICBjb25zdCBNZWRpYVRyYW5zcG9y
dEVuY29kZWRWaWRlb0ZyYW1lJiBmcmFtZSkgb3ZlcnJpZGUgeworICAgIHJldHVybiB3cmFwcGVk
Xy0+U2VuZFZpZGVvRnJhbWUoY2hhbm5lbF9pZCwgZnJhbWUpOworICB9CisKKyAgUlRDRXJyb3Ig
UmVxdWVzdEtleUZyYW1lKHVpbnQ2NF90IGNoYW5uZWxfaWQpIG92ZXJyaWRlIHsKKyAgICByZXR1
cm4gd3JhcHBlZF8tPlJlcXVlc3RLZXlGcmFtZShjaGFubmVsX2lkKTsKKyAgfQorCisgIHZvaWQg
U2V0UmVjZWl2ZUF1ZGlvU2luayhNZWRpYVRyYW5zcG9ydEF1ZGlvU2lua0ludGVyZmFjZSogc2lu
aykgb3ZlcnJpZGUgeworICAgIHdyYXBwZWRfLT5TZXRSZWNlaXZlQXVkaW9TaW5rKHNpbmspOwor
ICB9CisKKyAgdm9pZCBTZXRSZWNlaXZlVmlkZW9TaW5rKE1lZGlhVHJhbnNwb3J0VmlkZW9TaW5r
SW50ZXJmYWNlKiBzaW5rKSBvdmVycmlkZSB7CisgICAgd3JhcHBlZF8tPlNldFJlY2VpdmVWaWRl
b1Npbmsoc2luayk7CisgIH0KKworICB2b2lkIFNldE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFj
aygKKyAgICAgIE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRl
IHsKKyAgICB3cmFwcGVkXy0+U2V0TWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrKGNhbGxiYWNr
KTsKKyAgfQorCisgIFJUQ0Vycm9yIFNlbmREYXRhKGludCBjaGFubmVsX2lkLAorICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTZW5kRGF0YVBhcmFtcyYgcGFyYW1zLAorICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlIHsKKyAg
ICByZXR1cm4gd3JhcHBlZF8tPlNlbmREYXRhKGNoYW5uZWxfaWQsIHBhcmFtcywgYnVmZmVyKTsK
KyAgfQorCisgIFJUQ0Vycm9yIENsb3NlQ2hhbm5lbChpbnQgY2hhbm5lbF9pZCkgb3ZlcnJpZGUg
eworICAgIHJldHVybiB3cmFwcGVkXy0+Q2xvc2VDaGFubmVsKGNoYW5uZWxfaWQpOworICB9CisK
KyAgdm9pZCBTZXREYXRhU2luayhEYXRhQ2hhbm5lbFNpbmsqIHNpbmspIG92ZXJyaWRlIHsKKyAg
ICB3cmFwcGVkXy0+U2V0RGF0YVNpbmsoc2luayk7CisgIH0KKworIHByaXZhdGU6CisgIE1lZGlh
VHJhbnNwb3J0SW50ZXJmYWNlKiB3cmFwcGVkXzsKK307CisKK2NsYXNzIFdyYXBwZXJNZWRpYVRy
YW5zcG9ydEZhY3RvcnkgOiBwdWJsaWMgTWVkaWFUcmFuc3BvcnRGYWN0b3J5IHsKKyBwdWJsaWM6
CisgIGV4cGxpY2l0IFdyYXBwZXJNZWRpYVRyYW5zcG9ydEZhY3RvcnkoTWVkaWFUcmFuc3BvcnRJ
bnRlcmZhY2UqIHdyYXBwZWQpCisgICAgICA6IHdyYXBwZWRfKHdyYXBwZWQpIHt9CisKKyAgUlRD
RXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+PiBDcmVhdGVN
ZWRpYVRyYW5zcG9ydCgKKyAgICAgIHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHBhY2tl
dF90cmFuc3BvcnQsCisgICAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCisgICAgICBj
b25zdCBNZWRpYVRyYW5zcG9ydFNldHRpbmdzJiBzZXR0aW5ncykgb3ZlcnJpZGUgeworICAgIHJl
dHVybiB7YWJzbDo6bWFrZV91bmlxdWU8V3JhcHBlck1lZGlhVHJhbnNwb3J0Pih3cmFwcGVkXyl9
OworICB9CisKKyBwcml2YXRlOgorICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogd3JhcHBlZF87
Cit9OworCisvLyBDb250YWlucyB0d28gTWVkaWFUcmFuc3BvcnRzSW50ZXJmYWNlcyB0aGF0IGFy
ZSBjb25uZWN0ZWQgdG8gZWFjaCBvdGhlci4KKy8vIEN1cnJlbnRseSBzdXBwb3J0cyBhdWRpbyBv
bmx5LgorY2xhc3MgTWVkaWFUcmFuc3BvcnRQYWlyIHsKKyBwdWJsaWM6CisgIHN0cnVjdCBTdGF0
cyB7CisgICAgaW50IHNlbnRfYXVkaW9fZnJhbWVzID0gMDsKKyAgICBpbnQgcmVjZWl2ZWRfYXVk
aW9fZnJhbWVzID0gMDsKKyAgfTsKKworICBleHBsaWNpdCBNZWRpYVRyYW5zcG9ydFBhaXIocnRj
OjpUaHJlYWQqIHRocmVhZCkKKyAgICAgIDogZmlyc3RfKHRocmVhZCwgJnNlY29uZF8pLCBzZWNv
bmRfKHRocmVhZCwgJmZpcnN0Xykge30KKworICAvLyBPd25lcnNoaXAgc3RheXMgd2l0aCBNZWRp
YVRyYW5zcG9ydFBhaXIKKyAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIGZpcnN0KCkgeyByZXR1
cm4gJmZpcnN0XzsgfQorICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogc2Vjb25kKCkgeyByZXR1
cm4gJnNlY29uZF87IH0KKworICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRGYWN0b3J5
PiBmaXJzdF9mYWN0b3J5KCkgeworICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxXcmFwcGVy
TWVkaWFUcmFuc3BvcnRGYWN0b3J5PigmZmlyc3RfKTsKKyAgfQorCisgIHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IHNlY29uZF9mYWN0b3J5KCkgeworICAgIHJldHVybiBh
YnNsOjptYWtlX3VuaXF1ZTxXcmFwcGVyTWVkaWFUcmFuc3BvcnRGYWN0b3J5Pigmc2Vjb25kXyk7
CisgIH0KKworICB2b2lkIFNldFN0YXRlKE1lZGlhVHJhbnNwb3J0U3RhdGUgc3RhdGUpIHsKKyAg
ICBmaXJzdF8uU2V0U3RhdGUoc3RhdGUpOworICAgIHNlY29uZF8uU2V0U3RhdGUoc3RhdGUpOwor
ICB9CisKKyAgdm9pZCBGbHVzaEFzeW5jSW52b2tlcygpIHsKKyAgICBmaXJzdF8uRmx1c2hBc3lu
Y0ludm9rZXMoKTsKKyAgICBzZWNvbmRfLkZsdXNoQXN5bmNJbnZva2VzKCk7CisgIH0KKworICBT
dGF0cyBGaXJzdFN0YXRzKCkgeyByZXR1cm4gZmlyc3RfLkdldFN0YXRzKCk7IH0KKyAgU3RhdHMg
U2Vjb25kU3RhdHMoKSB7IHJldHVybiBzZWNvbmRfLkdldFN0YXRzKCk7IH0KKworIHByaXZhdGU6
CisgIGNsYXNzIExvb3BiYWNrTWVkaWFUcmFuc3BvcnQgOiBwdWJsaWMgTWVkaWFUcmFuc3BvcnRJ
bnRlcmZhY2UgeworICAgcHVibGljOgorICAgIExvb3BiYWNrTWVkaWFUcmFuc3BvcnQocnRjOjpU
aHJlYWQqIHRocmVhZCwgTG9vcGJhY2tNZWRpYVRyYW5zcG9ydCogb3RoZXIpCisgICAgICAgIDog
dGhyZWFkXyh0aHJlYWQpLCBvdGhlcl8ob3RoZXIpIHt9CisKKyAgICB+TG9vcGJhY2tNZWRpYVRy
YW5zcG9ydCgpIHsKKyAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNpbmtfbG9ja18pOworICAg
ICAgUlRDX0NIRUNLKHNpbmtfID09IG51bGxwdHIpOworICAgICAgUlRDX0NIRUNLKGRhdGFfc2lu
a18gPT0gbnVsbHB0cik7CisgICAgfQorCisgICAgUlRDRXJyb3IgU2VuZEF1ZGlvRnJhbWUodWlu
dDY0X3QgY2hhbm5lbF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVRyYW5z
cG9ydEVuY29kZWRBdWRpb0ZyYW1lIGZyYW1lKSBvdmVycmlkZSB7CisgICAgICB7CisgICAgICAg
IHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnN0YXRzX2xvY2tfKTsKKyAgICAgICAgKytzdGF0c18uc2Vu
dF9hdWRpb19mcmFtZXM7CisgICAgICB9CisgICAgICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lk
PihSVENfRlJPTV9IRVJFLCB0aHJlYWRfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW3RoaXMsIGNoYW5uZWxfaWQsIGZyYW1lXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG90aGVyXy0+T25EYXRhKGNoYW5uZWxfaWQsIHN0ZDo6bW92ZShmcmFtZSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICByZXR1cm4gUlRDRXJy
b3I6Ok9LKCk7CisgICAgfTsKKworICAgIFJUQ0Vycm9yIFNlbmRWaWRlb0ZyYW1lKAorICAgICAg
ICB1aW50NjRfdCBjaGFubmVsX2lkLAorICAgICAgICBjb25zdCBNZWRpYVRyYW5zcG9ydEVuY29k
ZWRWaWRlb0ZyYW1lJiBmcmFtZSkgb3ZlcnJpZGUgeworICAgICAgcmV0dXJuIFJUQ0Vycm9yOjpP
SygpOworICAgIH0KKworICAgIFJUQ0Vycm9yIFJlcXVlc3RLZXlGcmFtZSh1aW50NjRfdCBjaGFu
bmVsX2lkKSBvdmVycmlkZSB7CisgICAgICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7CisgICAgfQor
CisgICAgdm9pZCBTZXRSZWNlaXZlQXVkaW9TaW5rKE1lZGlhVHJhbnNwb3J0QXVkaW9TaW5rSW50
ZXJmYWNlKiBzaW5rKSBvdmVycmlkZSB7CisgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZzaW5r
X2xvY2tfKTsKKyAgICAgIGlmIChzaW5rKSB7CisgICAgICAgIFJUQ19DSEVDSyhzaW5rXyA9PSBu
dWxscHRyKTsKKyAgICAgIH0KKyAgICAgIHNpbmtfID0gc2luazsKKyAgICB9CisKKyAgICB2b2lk
IFNldFJlY2VpdmVWaWRlb1NpbmsoTWVkaWFUcmFuc3BvcnRWaWRlb1NpbmtJbnRlcmZhY2UqIHNp
bmspIG92ZXJyaWRlIHt9CisKKyAgICB2b2lkIFNldE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFj
aygKKyAgICAgICAgTWVkaWFUcmFuc3BvcnRTdGF0ZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJp
ZGUgeworICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2lua19sb2NrXyk7CisgICAgICBzdGF0
ZV9jYWxsYmFja18gPSBjYWxsYmFjazsKKyAgICAgIGludm9rZXJfLkFzeW5jSW52b2tlPHZvaWQ+
KFJUQ19GUk9NX0hFUkUsIHRocmVhZF8sIFt0aGlzXSB7CisgICAgICAgIFJUQ19EQ0hFQ0tfUlVO
X09OKHRocmVhZF8pOworICAgICAgICBPblN0YXRlQ2hhbmdlZCgpOworICAgICAgfSk7CisgICAg
fQorCisgICAgUlRDRXJyb3IgU2VuZERhdGEoaW50IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgU2VuZERhdGFQYXJhbXMmIHBhcmFtcywKKyAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlIHsKKyAg
ICAgIGludm9rZXJfLkFzeW5jSW52b2tlPHZvaWQ+KAorICAgICAgICAgIFJUQ19GUk9NX0hFUkUs
IHRocmVhZF8sIFt0aGlzLCBjaGFubmVsX2lkLCBwYXJhbXMsIGJ1ZmZlcl0geworICAgICAgICAg
ICAgb3RoZXJfLT5PbkRhdGEoY2hhbm5lbF9pZCwgcGFyYW1zLnR5cGUsIGJ1ZmZlcik7CisgICAg
ICAgICAgfSk7CisgICAgICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7CisgICAgfQorCisgICAgUlRD
RXJyb3IgQ2xvc2VDaGFubmVsKGludCBjaGFubmVsX2lkKSBvdmVycmlkZSB7CisgICAgICBpbnZv
a2VyXy5Bc3luY0ludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCB0aHJlYWRfLCBbdGhpcywgY2hh
bm5lbF9pZF0geworICAgICAgICBvdGhlcl8tPk9uUmVtb3RlQ2xvc2VDaGFubmVsKGNoYW5uZWxf
aWQpOworICAgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZzaW5rX2xvY2tfKTsKKyAgICAgICAg
aWYgKGRhdGFfc2lua18pIHsKKyAgICAgICAgICBkYXRhX3NpbmtfLT5PbkNoYW5uZWxDbG9zZWQo
Y2hhbm5lbF9pZCk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgICAgcmV0dXJuIFJUQ0Vycm9y
OjpPSygpOworICAgIH0KKworICAgIHZvaWQgU2V0RGF0YVNpbmsoRGF0YUNoYW5uZWxTaW5rKiBz
aW5rKSBvdmVycmlkZSB7CisgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZzaW5rX2xvY2tfKTsK
KyAgICAgIGRhdGFfc2lua18gPSBzaW5rOworICAgIH0KKworICAgIHZvaWQgU2V0U3RhdGUoTWVk
aWFUcmFuc3BvcnRTdGF0ZSBzdGF0ZSkgeworICAgICAgaW52b2tlcl8uQXN5bmNJbnZva2U8dm9p
ZD4oUlRDX0ZST01fSEVSRSwgdGhyZWFkXywgW3RoaXMsIHN0YXRlXSB7CisgICAgICAgIFJUQ19E
Q0hFQ0tfUlVOX09OKHRocmVhZF8pOworICAgICAgICBzdGF0ZV8gPSBzdGF0ZTsKKyAgICAgICAg
T25TdGF0ZUNoYW5nZWQoKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIHZvaWQgRmx1c2hBc3lu
Y0ludm9rZXMoKSB7IGludm9rZXJfLkZsdXNoKHRocmVhZF8pOyB9CisKKyAgICBTdGF0cyBHZXRT
dGF0cygpIHsKKyAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnN0YXRzX2xvY2tfKTsKKyAgICAg
IHJldHVybiBzdGF0c187CisgICAgfQorCisgICBwcml2YXRlOgorICAgIHZvaWQgT25EYXRhKHVp
bnQ2NF90IGNoYW5uZWxfaWQsIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgZnJhbWUp
IHsKKyAgICAgIHsKKyAgICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2lua19sb2NrXyk7Cisg
ICAgICAgIGlmIChzaW5rXykgeworICAgICAgICAgIHNpbmtfLT5PbkRhdGEoY2hhbm5lbF9pZCwg
ZnJhbWUpOworICAgICAgICB9CisgICAgICB9CisgICAgICB7CisgICAgICAgIHJ0Yzo6Q3JpdFNj
b3BlIGxvY2soJnN0YXRzX2xvY2tfKTsKKyAgICAgICAgKytzdGF0c18ucmVjZWl2ZWRfYXVkaW9f
ZnJhbWVzOworICAgICAgfQorICAgIH0KKworICAgIHZvaWQgT25EYXRhKGludCBjaGFubmVsX2lk
LAorICAgICAgICAgICAgICAgIERhdGFNZXNzYWdlVHlwZSB0eXBlLAorICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIGJ1ZmZlcikgeworICAgICAgcnRjOjpDcml0
U2NvcGUgbG9jaygmc2lua19sb2NrXyk7CisgICAgICBpZiAoZGF0YV9zaW5rXykgeworICAgICAg
ICBkYXRhX3NpbmtfLT5PbkRhdGFSZWNlaXZlZChjaGFubmVsX2lkLCB0eXBlLCBidWZmZXIpOwor
ICAgICAgfQorICAgIH0KKworICAgIHZvaWQgT25SZW1vdGVDbG9zZUNoYW5uZWwoaW50IGNoYW5u
ZWxfaWQpIHsKKyAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNpbmtfbG9ja18pOworICAgICAg
aWYgKGRhdGFfc2lua18pIHsKKyAgICAgICAgZGF0YV9zaW5rXy0+T25DaGFubmVsQ2xvc2luZyhj
aGFubmVsX2lkKTsKKyAgICAgICAgZGF0YV9zaW5rXy0+T25DaGFubmVsQ2xvc2VkKGNoYW5uZWxf
aWQpOworICAgICAgfQorICAgIH0KKworICAgIHZvaWQgT25TdGF0ZUNoYW5nZWQoKSBSVENfUlVO
X09OKHRocmVhZF8pIHsKKyAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnNpbmtfbG9ja18pOwor
ICAgICAgaWYgKHN0YXRlX2NhbGxiYWNrXykgeworICAgICAgICBzdGF0ZV9jYWxsYmFja18tPk9u
U3RhdGVDaGFuZ2VkKHN0YXRlXyk7CisgICAgICB9CisgICAgfQorCisgICAgcnRjOjpUaHJlYWQq
IGNvbnN0IHRocmVhZF87CisgICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gc2lua19sb2NrXzsKKyAg
ICBydGM6OkNyaXRpY2FsU2VjdGlvbiBzdGF0c19sb2NrXzsKKworICAgIE1lZGlhVHJhbnNwb3J0
QXVkaW9TaW5rSW50ZXJmYWNlKiBzaW5rXyBSVENfR1VBUkRFRF9CWShzaW5rX2xvY2tfKSA9Cisg
ICAgICAgIG51bGxwdHI7CisgICAgRGF0YUNoYW5uZWxTaW5rKiBkYXRhX3NpbmtfIFJUQ19HVUFS
REVEX0JZKHNpbmtfbG9ja18pID0gbnVsbHB0cjsKKyAgICBNZWRpYVRyYW5zcG9ydFN0YXRlQ2Fs
bGJhY2sqIHN0YXRlX2NhbGxiYWNrXyBSVENfR1VBUkRFRF9CWShzaW5rX2xvY2tfKSA9CisgICAg
ICAgIG51bGxwdHI7CisKKyAgICBNZWRpYVRyYW5zcG9ydFN0YXRlIHN0YXRlXyBSVENfR1VBUkRF
RF9CWSh0aHJlYWRfKSA9CisgICAgICAgIE1lZGlhVHJhbnNwb3J0U3RhdGU6OmtQZW5kaW5nOwor
CisgICAgTG9vcGJhY2tNZWRpYVRyYW5zcG9ydCogY29uc3Qgb3RoZXJfOworCisgICAgU3RhdHMg
c3RhdHNfIFJUQ19HVUFSREVEX0JZKHN0YXRzX2xvY2tfKTsKKworICAgIHJ0Yzo6QXN5bmNJbnZv
a2VyIGludm9rZXJfOworICB9OworCisgIExvb3BiYWNrTWVkaWFUcmFuc3BvcnQgZmlyc3RfOwor
ICBMb29wYmFja01lZGlhVHJhbnNwb3J0IHNlY29uZF87Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1RFU1RfTE9PUEJBQ0tfTUVESUFfVFJBTlNQT1JUX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdGVzdC9sb29wYmFja19tZWRpYV90cmFuc3BvcnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9sb29wYmFja19tZWRpYV90
cmFuc3BvcnRfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE3NDFhMDVjYTc5ODYyZDY4MzQwZTgy
NWQ3Y2NkNTBkZWFmMjdiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydF91
bml0dGVzdC5jYwpAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUg
V2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvdGVzdC9sb29w
YmFja19tZWRpYV90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisKK25hbWVz
cGFjZSB3ZWJydGMgeworCituYW1lc3BhY2UgeworCitjbGFzcyBNb2NrTWVkaWFUcmFuc3BvcnRB
dWRpb1NpbmtJbnRlcmZhY2UKKyAgICA6IHB1YmxpYyBNZWRpYVRyYW5zcG9ydEF1ZGlvU2lua0lu
dGVyZmFjZSB7CisgcHVibGljOgorICBNT0NLX01FVEhPRDIoT25EYXRhLCB2b2lkKHVpbnQ2NF90
LCBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lKSk7Cit9OworCitjbGFzcyBNb2NrRGF0
YUNoYW5uZWxTaW5rIDogcHVibGljIERhdGFDaGFubmVsU2luayB7CisgcHVibGljOgorICBNT0NL
X01FVEhPRDMoT25EYXRhUmVjZWl2ZWQsCisgICAgICAgICAgICAgICB2b2lkKGludCwgRGF0YU1l
c3NhZ2VUeXBlLCBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJikpOworICBNT0NLX01FVEhP
RDEoT25DaGFubmVsQ2xvc2luZywgdm9pZChpbnQpKTsKKyAgTU9DS19NRVRIT0QxKE9uQ2hhbm5l
bENsb3NlZCwgdm9pZChpbnQpKTsKK307CisKK2NsYXNzIE1vY2tTdGF0ZUNhbGxiYWNrIDogcHVi
bGljIE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjayB7CisgcHVibGljOgorICBNT0NLX01FVEhP
RDEoT25TdGF0ZUNoYW5nZWQsIHZvaWQoTWVkaWFUcmFuc3BvcnRTdGF0ZSkpOworfTsKKworLy8g
VGVzdCBvbmx5IHVzZXMgdGhlIHNlcXVlbmNlIG51bWJlci4KK01lZGlhVHJhbnNwb3J0RW5jb2Rl
ZEF1ZGlvRnJhbWUgQ3JlYXRlQXVkaW9GcmFtZShpbnQgc2VxdWVuY2VfbnVtYmVyKSB7CisgIHN0
YXRpYyBjb25zdGV4cHIgaW50IGtTYW1wbGluZ1JhdGVIeiA9IDQ4MDAwOworICBzdGF0aWMgY29u
c3RleHByIGludCBrU3RhcnRpbmdTYW1wbGVJbmRleCA9IDA7CisgIHN0YXRpYyBjb25zdGV4cHIg
aW50IGtTYW1wbGVzUGVyQ2hhbm5lbCA9IDQ4MDsKKyAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90
IGtQYXlsb2FkVHlwZSA9IDE3OworCisgIHJldHVybiBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRp
b0ZyYW1lKAorICAgICAga1NhbXBsaW5nUmF0ZUh6LCBrU3RhcnRpbmdTYW1wbGVJbmRleCwga1Nh
bXBsZXNQZXJDaGFubmVsLAorICAgICAgc2VxdWVuY2VfbnVtYmVyLCBNZWRpYVRyYW5zcG9ydEVu
Y29kZWRBdWRpb0ZyYW1lOjpGcmFtZVR5cGU6OmtTcGVlY2gsCisgICAgICBrUGF5bG9hZFR5cGUs
IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGtTYW1wbGVzUGVyQ2hhbm5lbCkpOworfQorCit9ICAvLyBu
YW1lc3BhY2UKKworVEVTVChMb29wYmFja01lZGlhVHJhbnNwb3J0LCBBdWRpb1dpdGhOb1NpbmtT
aWxlbnRseUlnbm9yZWQpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiB0aHJlYWQg
PSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgIHRocmVhZC0+U3RhcnQoKTsKKyAgTWVkaWFUcmFu
c3BvcnRQYWlyIHRyYW5zcG9ydF9wYWlyKHRocmVhZC5nZXQoKSk7CisgIHRyYW5zcG9ydF9wYWly
LmZpcnN0KCktPlNlbmRBdWRpb0ZyYW1lKDEsIENyZWF0ZUF1ZGlvRnJhbWUoMCkpOworICB0cmFu
c3BvcnRfcGFpci5zZWNvbmQoKS0+U2VuZEF1ZGlvRnJhbWUoMiwgQ3JlYXRlQXVkaW9GcmFtZSgw
KSk7CisgIHRyYW5zcG9ydF9wYWlyLkZsdXNoQXN5bmNJbnZva2VzKCk7Cit9CisKK1RFU1QoTG9v
cGJhY2tNZWRpYVRyYW5zcG9ydCwgQXVkaW9EZWxpdmVyZWRUb1NpbmspIHsKKyAgc3RkOjp1bmlx
dWVfcHRyPHJ0Yzo6VGhyZWFkPiB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgIHRo
cmVhZC0+U3RhcnQoKTsKKyAgTWVkaWFUcmFuc3BvcnRQYWlyIHRyYW5zcG9ydF9wYWlyKHRocmVh
ZC5nZXQoKSk7CisgIHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja01lZGlhVHJhbnNwb3J0QXVkaW9T
aW5rSW50ZXJmYWNlPiBzaW5rOworICBFWFBFQ1RfQ0FMTChzaW5rLAorICAgICAgICAgICAgICBP
bkRhdGEoMSwgdGVzdGluZzo6UHJvcGVydHkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jk1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6OnNlcXVlbmNlX251bWJlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpFcSgxMCkpKSk7CisgIHRyYW5zcG9ydF9w
YWlyLnNlY29uZCgpLT5TZXRSZWNlaXZlQXVkaW9TaW5rKCZzaW5rKTsKKyAgdHJhbnNwb3J0X3Bh
aXIuZmlyc3QoKS0+U2VuZEF1ZGlvRnJhbWUoMSwgQ3JlYXRlQXVkaW9GcmFtZSgxMCkpOworCisg
IHRyYW5zcG9ydF9wYWlyLkZsdXNoQXN5bmNJbnZva2VzKCk7CisgIHRyYW5zcG9ydF9wYWlyLnNl
Y29uZCgpLT5TZXRSZWNlaXZlQXVkaW9TaW5rKG51bGxwdHIpOworfQorCitURVNUKExvb3BiYWNr
TWVkaWFUcmFuc3BvcnQsIERhdGFEZWxpdmVyZWRUb1NpbmspIHsKKyAgc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6VGhyZWFkPiB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgIHRocmVhZC0+
U3RhcnQoKTsKKyAgTWVkaWFUcmFuc3BvcnRQYWlyIHRyYW5zcG9ydF9wYWlyKHRocmVhZC5nZXQo
KSk7CisKKyAgTW9ja0RhdGFDaGFubmVsU2luayBzaW5rOworICB0cmFuc3BvcnRfcGFpci5maXJz
dCgpLT5TZXREYXRhU2luaygmc2luayk7CisKKyAgY29uc3QgaW50IGNoYW5uZWxfaWQgPSAxOwor
ICBFWFBFQ1RfQ0FMTChzaW5rLAorICAgICAgICAgICAgICBPbkRhdGFSZWNlaXZlZCgKKyAgICAg
ICAgICAgICAgICAgIGNoYW5uZWxfaWQsIERhdGFNZXNzYWdlVHlwZTo6a1RleHQsCisgICAgICAg
ICAgICAgICAgICB0ZXN0aW5nOjpQcm9wZXJ0eTxydGM6OkNvcHlPbldyaXRlQnVmZmVyLCBjb25z
dCBjaGFyKj4oCisgICAgICAgICAgICAgICAgICAgICAgJnJ0Yzo6Q29weU9uV3JpdGVCdWZmZXI6
OmNkYXRhLCB0ZXN0aW5nOjpTdHJFcSgiZm9vIikpKSk7CisKKyAgU2VuZERhdGFQYXJhbXMgcGFy
YW1zOworICBwYXJhbXMudHlwZSA9IERhdGFNZXNzYWdlVHlwZTo6a1RleHQ7CisgIHJ0Yzo6Q29w
eU9uV3JpdGVCdWZmZXIgYnVmZmVyKCJmb28iKTsKKyAgdHJhbnNwb3J0X3BhaXIuc2Vjb25kKCkt
PlNlbmREYXRhKGNoYW5uZWxfaWQsIHBhcmFtcywgYnVmZmVyKTsKKworICB0cmFuc3BvcnRfcGFp
ci5GbHVzaEFzeW5jSW52b2tlcygpOworICB0cmFuc3BvcnRfcGFpci5maXJzdCgpLT5TZXREYXRh
U2luayhudWxscHRyKTsKK30KKworVEVTVChMb29wYmFja01lZGlhVHJhbnNwb3J0LCBDbG9zZURl
bGl2ZXJlZFRvU2luaykgeworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHRocmVhZCA9
IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAgdGhyZWFkLT5TdGFydCgpOworICBNZWRpYVRyYW5z
cG9ydFBhaXIgdHJhbnNwb3J0X3BhaXIodGhyZWFkLmdldCgpKTsKKworICBNb2NrRGF0YUNoYW5u
ZWxTaW5rIGZpcnN0X3Npbms7CisgIHRyYW5zcG9ydF9wYWlyLmZpcnN0KCktPlNldERhdGFTaW5r
KCZmaXJzdF9zaW5rKTsKKworICBNb2NrRGF0YUNoYW5uZWxTaW5rIHNlY29uZF9zaW5rOworICB0
cmFuc3BvcnRfcGFpci5zZWNvbmQoKS0+U2V0RGF0YVNpbmsoJnNlY29uZF9zaW5rKTsKKworICBj
b25zdCBpbnQgY2hhbm5lbF9pZCA9IDE7CisgIHsKKyAgICB0ZXN0aW5nOjpJblNlcXVlbmNlIHM7
CisgICAgRVhQRUNUX0NBTEwoc2Vjb25kX3NpbmssIE9uQ2hhbm5lbENsb3NpbmcoY2hhbm5lbF9p
ZCkpOworICAgIEVYUEVDVF9DQUxMKHNlY29uZF9zaW5rLCBPbkNoYW5uZWxDbG9zZWQoY2hhbm5l
bF9pZCkpOworICAgIEVYUEVDVF9DQUxMKGZpcnN0X3NpbmssIE9uQ2hhbm5lbENsb3NlZChjaGFu
bmVsX2lkKSk7CisgIH0KKworICB0cmFuc3BvcnRfcGFpci5maXJzdCgpLT5DbG9zZUNoYW5uZWwo
Y2hhbm5lbF9pZCk7CisKKyAgdHJhbnNwb3J0X3BhaXIuRmx1c2hBc3luY0ludm9rZXMoKTsKKyAg
dHJhbnNwb3J0X3BhaXIuZmlyc3QoKS0+U2V0RGF0YVNpbmsobnVsbHB0cik7CisgIHRyYW5zcG9y
dF9wYWlyLnNlY29uZCgpLT5TZXREYXRhU2luayhudWxscHRyKTsKK30KKworVEVTVChMb29wYmFj
a01lZGlhVHJhbnNwb3J0LCBJbml0aWFsU3RhdGVEZWxpdmVyZWRXaGVuQ2FsbGJhY2tTZXQpIHsK
KyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3Jl
YXRlKCk7CisgIHRocmVhZC0+U3RhcnQoKTsKKyAgTWVkaWFUcmFuc3BvcnRQYWlyIHRyYW5zcG9y
dF9wYWlyKHRocmVhZC5nZXQoKSk7CisKKyAgTW9ja1N0YXRlQ2FsbGJhY2sgc3RhdGVfY2FsbGJh
Y2s7CisKKyAgRVhQRUNUX0NBTEwoc3RhdGVfY2FsbGJhY2ssIE9uU3RhdGVDaGFuZ2VkKE1lZGlh
VHJhbnNwb3J0U3RhdGU6OmtQZW5kaW5nKSk7CisgIHRyYW5zcG9ydF9wYWlyLmZpcnN0KCktPlNl
dE1lZGlhVHJhbnNwb3J0U3RhdGVDYWxsYmFjaygmc3RhdGVfY2FsbGJhY2spOworICB0cmFuc3Bv
cnRfcGFpci5GbHVzaEFzeW5jSW52b2tlcygpOworfQorCitURVNUKExvb3BiYWNrTWVkaWFUcmFu
c3BvcnQsIENoYW5nZWRTdGF0ZURlbGl2ZXJlZFdoZW5DYWxsYmFja1NldCkgeworICBzdGQ6OnVu
aXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAg
dGhyZWFkLT5TdGFydCgpOworICBNZWRpYVRyYW5zcG9ydFBhaXIgdHJhbnNwb3J0X3BhaXIodGhy
ZWFkLmdldCgpKTsKKworICB0cmFuc3BvcnRfcGFpci5TZXRTdGF0ZShNZWRpYVRyYW5zcG9ydFN0
YXRlOjprV3JpdGFibGUpOworICB0cmFuc3BvcnRfcGFpci5GbHVzaEFzeW5jSW52b2tlcygpOwor
CisgIE1vY2tTdGF0ZUNhbGxiYWNrIHN0YXRlX2NhbGxiYWNrOworCisgIEVYUEVDVF9DQUxMKHN0
YXRlX2NhbGxiYWNrLCBPblN0YXRlQ2hhbmdlZChNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFi
bGUpKTsKKyAgdHJhbnNwb3J0X3BhaXIuZmlyc3QoKS0+U2V0TWVkaWFUcmFuc3BvcnRTdGF0ZUNh
bGxiYWNrKCZzdGF0ZV9jYWxsYmFjayk7CisgIHRyYW5zcG9ydF9wYWlyLkZsdXNoQXN5bmNJbnZv
a2VzKCk7Cit9CisKK1RFU1QoTG9vcGJhY2tNZWRpYVRyYW5zcG9ydCwgU3RhdGVDaGFuZ2VEZWxp
dmVyZWRUb0NhbGxiYWNrKSB7CisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gdGhyZWFk
ID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOworICB0aHJlYWQtPlN0YXJ0KCk7CisgIE1lZGlhVHJh
bnNwb3J0UGFpciB0cmFuc3BvcnRfcGFpcih0aHJlYWQuZ2V0KCkpOworCisgIE1vY2tTdGF0ZUNh
bGxiYWNrIHN0YXRlX2NhbGxiYWNrOworCisgIEVYUEVDVF9DQUxMKHN0YXRlX2NhbGxiYWNrLCBP
blN0YXRlQ2hhbmdlZChNZWRpYVRyYW5zcG9ydFN0YXRlOjprUGVuZGluZykpOworICBFWFBFQ1Rf
Q0FMTChzdGF0ZV9jYWxsYmFjaywgT25TdGF0ZUNoYW5nZWQoTWVkaWFUcmFuc3BvcnRTdGF0ZTo6
a1dyaXRhYmxlKSk7CisgIHRyYW5zcG9ydF9wYWlyLmZpcnN0KCktPlNldE1lZGlhVHJhbnNwb3J0
U3RhdGVDYWxsYmFjaygmc3RhdGVfY2FsbGJhY2spOworICB0cmFuc3BvcnRfcGFpci5TZXRTdGF0
ZShNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGUpOworICB0cmFuc3BvcnRfcGFpci5GbHVz
aEFzeW5jSW52b2tlcygpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2Nr
X2ZyYW1lX2RlY3J5cHRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZGVjcnlwdG9yLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0YjU0
Zjk2NmNkOGMwNjE1ODU2NmE0YjUwNTczNTI5NTQ5ZjBhZWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX2Zy
YW1lX2RlY3J5cHRvci5jYwpAQCAtMCwwICsxLDE4IEBACisvKgorICogIENvcHlyaWdodCAyMDE4
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aW5jbHVkZSAiYXBpL3Rlc3QvbW9ja19mcmFtZV9kZWNyeXB0b3IuaCIKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CisKK01vY2tGcmFtZURlY3J5cHRvcjo6TW9ja0ZyYW1lRGVjcnlwdG9yKCkgPSBkZWZh
dWx0OworTW9ja0ZyYW1lRGVjcnlwdG9yOjp+TW9ja0ZyYW1lRGVjcnlwdG9yKCkgPSBkZWZhdWx0
OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX2ZyYW1lX2RlY3J5cHRvci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9j
a19mcmFtZV9kZWNyeXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODAzOTY1NTRmNGUwNWJmNzJjOGY3Y2Nk
ZDY3ODYyOTg0YWQxZGMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja19mcmFtZV9kZWNyeXB0b3IuaApAQCAt
MCwwICsxLDQwIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9URVNUX01PQ0tf
RlJBTUVfREVDUllQVE9SX0hfCisjZGVmaW5lIEFQSV9URVNUX01PQ0tfRlJBTUVfREVDUllQVE9S
X0hfCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZGVj
cnlwdG9yaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAidGVzdC9nbW9jay5oIgorCituYW1lc3BhY2Ug
d2VicnRjIHsKKworY2xhc3MgTW9ja0ZyYW1lRGVjcnlwdG9yIDogcHVibGljIEZyYW1lRGVjcnlw
dG9ySW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIE1vY2tGcmFtZURlY3J5cHRvcigpOworICB+TW9j
a0ZyYW1lRGVjcnlwdG9yKCkgb3ZlcnJpZGU7CisKKyAgTU9DS19NRVRIT0Q2KERlY3J5cHQsCisg
ICAgICAgICAgICAgICBpbnQoY3JpY2tldDo6TWVkaWFUeXBlLAorICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiYsCisgICAgICAgICAgICAgICAgICAgcnRjOjpB
cnJheVZpZXc8Y29uc3QgdWludDhfdD4sCisgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZp
ZXc8Y29uc3QgdWludDhfdD4sCisgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8dWlu
dDhfdD4sCisgICAgICAgICAgICAgICAgICAgc2l6ZV90KikpOworCisgIE1PQ0tfTUVUSE9EMihH
ZXRNYXhQbGFpbnRleHRCeXRlU2l6ZSwKKyAgICAgICAgICAgICAgIHNpemVfdChjcmlja2V0OjpN
ZWRpYVR5cGUsIHNpemVfdCBlbmNyeXB0ZWRfZnJhbWVfc2l6ZSkpOworfTsKKworfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9URVNUX01PQ0tfRlJBTUVfREVDUllQVE9S
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdGVzdC9tb2NrX2ZyYW1lX2VuY3J5cHRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9yLmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA5NzIyNTlmMDU3ZWM3MmI0NzFkZjA3MzEyYTA0YTQ5MThkZWUyNmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdGVzdC9tb2NrX2ZyYW1lX2VuY3J5cHRvci5jYwpAQCAtMCwwICsxLDE5IEBACisvKgorICog
IENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja19mcmFtZV9lbmNyeXB0b3IuaCIK
KyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitNb2NrRnJh
bWVFbmNyeXB0b3I6Ok1vY2tGcmFtZUVuY3J5cHRvcigpID0gZGVmYXVsdDsKK01vY2tGcmFtZUVu
Y3J5cHRvcjo6fk1vY2tGcmFtZUVuY3J5cHRvcigpID0gZGVmYXVsdDsKKworfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3Rlc3QvbW9ja19mcmFtZV9lbmNyeXB0b3IuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzRmYjFmZGU4N2I4MjVhMTdhNzNmZGY0ZTYwNjBkZGE2ZjAxZGJjMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90ZXN0L21vY2tfZnJhbWVfZW5jcnlwdG9yLmgKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVTVF9NT0NLX0ZSQU1FX0VOQ1JZUFRPUl9I
XworI2RlZmluZSBBUElfVEVTVF9NT0NLX0ZSQU1FX0VOQ1JZUFRPUl9IXworCisjaW5jbHVkZSAi
YXBpL2NyeXB0by9mcmFtZWVuY3J5cHRvcmludGVyZmFjZS5oIgorI2luY2x1ZGUgInRlc3QvZ21v
Y2suaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIE1vY2tGcmFtZUVuY3J5cHRvciA6
IHB1YmxpYyBGcmFtZUVuY3J5cHRvckludGVyZmFjZSB7CisgcHVibGljOgorICBNb2NrRnJhbWVF
bmNyeXB0b3IoKTsKKyAgfk1vY2tGcmFtZUVuY3J5cHRvcigpIG92ZXJyaWRlOworCisgIE1PQ0tf
TUVUSE9ENihFbmNyeXB0LAorICAgICAgICAgICAgICAgaW50KGNyaWNrZXQ6Ok1lZGlhVHlwZSwK
KyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCwKKyAgICAgICAgICAgICAgICAgICBydGM6OkFy
cmF5Vmlldzxjb25zdCB1aW50OF90PiwKKyAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmll
dzxjb25zdCB1aW50OF90PiwKKyAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzx1aW50
OF90PiwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QqKSk7CisKKyAgTU9DS19NRVRIT0QyKEdl
dE1heENpcGhlcnRleHRCeXRlU2l6ZSwKKyAgICAgICAgICAgICAgIHNpemVfdChjcmlja2V0OjpN
ZWRpYVR5cGUgbWVkaWFfdHlwZSwgc2l6ZV90IGZyYW1lX3NpemUpKTsKK307CisKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVEVTVF9NT0NLX0ZSQU1FX0VOQ1JZUFRP
Ul9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3Rlc3QvbW9ja192aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVv
X2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2FlMDYxYWI3NWRjZDY2
NzU3MGRiYjdjZjMzM2NmNTUwNmYxZjg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192aWRlb19iaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpZm5kZWYgQVBJX1RFU1RfTU9DS19WSURFT19CSVRSQVRFX0FMTE9DQVRPUl9GQUNU
T1JZX0hfCisjZGVmaW5lIEFQSV9URVNUX01PQ0tfVklERU9fQklUUkFURV9BTExPQ0FUT1JfRkFD
VE9SWV9IXworCisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVv
X2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBNb2NrVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFj
dG9yeQorICAgIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSB7
CisgcHVibGljOgorICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0
b3I+IENyZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRvcigKKyAgICAgIGNvbnN0IFZpZGVvQ29kZWMm
IGNvZGVjKSB7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0
b3I+KAorICAgICAgICBDcmVhdGVWaWRlb0JpdHJhdGVBbGxvY2F0b3JQcm94eShjb2RlYykpOwor
ICB9CisgIH5Nb2NrVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpIHsgRGllKCk7IH0KKyAg
TU9DS19NRVRIT0QxKENyZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRvclByb3h5LAorICAgICAgICAg
ICAgICAgVmlkZW9CaXRyYXRlQWxsb2NhdG9yKihjb25zdCBWaWRlb0NvZGVjJikpOworICBNT0NL
X01FVEhPRDAoRGllLCB2b2lkKCkpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisj
ZW5kaWYgIC8vIEFQSV9URVNUX01PQ0tfVklERU9fQklUUkFURV9BTExPQ0FUT1JfRkFDVE9SWV9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3Rlc3QvbW9ja192aWRlb19kZWNvZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192aWRlb19kZWNvZGVyLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg1ZWQwZTE2NzgyYWE5MDM5YTRkZWE2NjNjOTU2MWZlM2U3MTU4ZDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVz
dC9tb2NrX3ZpZGVvX2RlY29kZXIuY2MKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqICBDb3B5cmln
aHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuaCIKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKK01vY2tEZWNvZGVkSW1hZ2VDYWxsYmFjazo6TW9ja0RlY29kZWRJ
bWFnZUNhbGxiYWNrKCkgPSBkZWZhdWx0OworTW9ja0RlY29kZWRJbWFnZUNhbGxiYWNrOjp+TW9j
a0RlY29kZWRJbWFnZUNhbGxiYWNrKCkgPSBkZWZhdWx0OworTW9ja1ZpZGVvRGVjb2Rlcjo6TW9j
a1ZpZGVvRGVjb2RlcigpID0gZGVmYXVsdDsKK01vY2tWaWRlb0RlY29kZXI6On5Nb2NrVmlkZW9E
ZWNvZGVyKCkgPSBkZWZhdWx0OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2Nr
X3ZpZGVvX2RlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2ZmY1NDYzZmRl
MTQwN2RiZDgyMWRmYTRlMzVlYTQzYzMxYWQwZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2Rl
Y29kZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRl
ZiBBUElfVEVTVF9NT0NLX1ZJREVPX0RFQ09ERVJfSF8KKyNkZWZpbmUgQVBJX1RFU1RfTU9DS19W
SURFT19ERUNPREVSX0hfCisKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29k
ZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitj
bGFzcyBNb2NrRGVjb2RlZEltYWdlQ2FsbGJhY2sgOiBwdWJsaWMgRGVjb2RlZEltYWdlQ2FsbGJh
Y2sgeworIHB1YmxpYzoKKyAgTW9ja0RlY29kZWRJbWFnZUNhbGxiYWNrKCk7CisgIH5Nb2NrRGVj
b2RlZEltYWdlQ2FsbGJhY2soKSBvdmVycmlkZTsKKworICBNT0NLX01FVEhPRDEoRGVjb2RlZCwg
aW50MzJfdChWaWRlb0ZyYW1lJiBkZWNvZGVkSW1hZ2UpKTsgIC8vIE5PTElOVAorICBNT0NLX01F
VEhPRDIoRGVjb2RlZCwKKyAgICAgICAgICAgICAgIGludDMyX3QoVmlkZW9GcmFtZSYgZGVjb2Rl
ZEltYWdlLCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgZGVjb2Rl
X3RpbWVfbXMpKTsKKyAgTU9DS19NRVRIT0QzKERlY29kZWQsCisgICAgICAgICAgICAgICB2b2lk
KFZpZGVvRnJhbWUmIGRlY29kZWRJbWFnZSwgIC8vIE5PTElOVAorICAgICAgICAgICAgICAgICAg
ICBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiBkZWNvZGVfdGltZV9tcywKKyAgICAgICAgICAgICAg
ICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gcXApKTsKKyAgTU9DS19NRVRIT0QxKFJlY2Vp
dmVkRGVjb2RlZFJlZmVyZW5jZUZyYW1lLAorICAgICAgICAgICAgICAgaW50MzJfdChjb25zdCB1
aW50NjRfdCBwaWN0dXJlSWQpKTsKKyAgTU9DS19NRVRIT0QxKFJlY2VpdmVkRGVjb2RlZEZyYW1l
LCBpbnQzMl90KGNvbnN0IHVpbnQ2NF90IHBpY3R1cmVJZCkpOworfTsKKworY2xhc3MgTW9ja1Zp
ZGVvRGVjb2RlciA6IHB1YmxpYyBWaWRlb0RlY29kZXIgeworIHB1YmxpYzoKKyAgTW9ja1ZpZGVv
RGVjb2RlcigpOworICB+TW9ja1ZpZGVvRGVjb2RlcigpIG92ZXJyaWRlOworCisgIE1PQ0tfTUVU
SE9EMihJbml0RGVjb2RlLAorICAgICAgICAgICAgICAgaW50MzJfdChjb25zdCBWaWRlb0NvZGVj
KiBjb2RlY1NldHRpbmdzLCBpbnQzMl90IG51bWJlck9mQ29yZXMpKTsKKyAgTU9DS19NRVRIT0Q0
KERlY29kZSwKKyAgICAgICAgICAgICAgIGludDMyX3QoY29uc3QgRW5jb2RlZEltYWdlJiBpbnB1
dEltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICBib29sIG1pc3NpbmdGcmFtZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY1NwZWNpZmlj
SW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCByZW5kZXJUaW1lTXMpKTsKKyAg
TU9DS19NRVRIT0QxKFJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjaywKKyAgICAgICAgICAg
ICAgIGludDMyX3QoRGVjb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSk7CisgIE1PQ0tfTUVU
SE9EMChSZWxlYXNlLCBpbnQzMl90KCkpOworICBNT0NLX01FVEhPRDAoQ29weSwgVmlkZW9EZWNv
ZGVyKigpKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElf
VEVTVF9NT0NLX1ZJREVPX0RFQ09ERVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L21vY2tf
dmlkZW9fZW5jb2Rlci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMGQ4MmIxYzMzYjFmYzI3ZWJhZWU5NDhhNmI5
YmM4ZTNjZjM5ZWE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192aWRlb19lbmNvZGVyLmNjCkBAIC0wLDAg
KzEsMjAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9j
a192aWRlb19lbmNvZGVyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitNb2NrRW5jb2RlZElt
YWdlQ2FsbGJhY2s6Ok1vY2tFbmNvZGVkSW1hZ2VDYWxsYmFjaygpID0gZGVmYXVsdDsKK01vY2tF
bmNvZGVkSW1hZ2VDYWxsYmFjazo6fk1vY2tFbmNvZGVkSW1hZ2VDYWxsYmFjaygpID0gZGVmYXVs
dDsKK01vY2tWaWRlb0VuY29kZXI6Ok1vY2tWaWRlb0VuY29kZXIoKSA9IGRlZmF1bHQ7CitNb2Nr
VmlkZW9FbmNvZGVyOjp+TW9ja1ZpZGVvRW5jb2RlcigpID0gZGVmYXVsdDsKKworfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3Rlc3QvbW9ja192aWRlb19lbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9tb2NrX3ZpZGVvX2VuY29kZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MmYxN2JhYjg4NDI1NWJlODg5MGY1NjQ4ZTFkOWE3N2Q3OGE5ZmRjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3Rlc3QvbW9ja192aWRlb19lbmNvZGVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX1RFU1RfTU9DS19WSURFT19FTkNPREVSX0hf
CisjZGVmaW5lIEFQSV9URVNUX01PQ0tfVklERU9fRU5DT0RFUl9IXworCisjaW5jbHVkZSA8dmVj
dG9yPgorCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCisjaW5j
bHVkZSAidGVzdC9nbW9jay5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgTW9ja0Vu
Y29kZWRJbWFnZUNhbGxiYWNrIDogcHVibGljIEVuY29kZWRJbWFnZUNhbGxiYWNrIHsKKyBwdWJs
aWM6CisgIE1vY2tFbmNvZGVkSW1hZ2VDYWxsYmFjaygpOworICB+TW9ja0VuY29kZWRJbWFnZUNh
bGxiYWNrKCk7CisgIE1PQ0tfTUVUSE9EMyhPbkVuY29kZWRJbWFnZSwKKyAgICAgICAgICAgICAg
IFJlc3VsdChjb25zdCBFbmNvZGVkSW1hZ2UmIGVuY29kZWRJbWFnZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNTcGVjaWZpY0luZm8sCisgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRh
dGlvbikpOworfTsKKworY2xhc3MgTW9ja1ZpZGVvRW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29k
ZXIgeworIHB1YmxpYzoKKyAgTW9ja1ZpZGVvRW5jb2RlcigpOworICB+TW9ja1ZpZGVvRW5jb2Rl
cigpOworICBNT0NLX0NPTlNUX01FVEhPRDIoVmVyc2lvbiwgaW50MzJfdChpbnQ4X3QqIHZlcnNp
b24sIGludDMyX3QgbGVuZ3RoKSk7CisgIE1PQ0tfTUVUSE9EMyhJbml0RW5jb2RlLAorICAgICAg
ICAgICAgICAgaW50MzJfdChjb25zdCBWaWRlb0NvZGVjKiBjb2RlY1NldHRpbmdzLAorICAgICAg
ICAgICAgICAgICAgICAgICBpbnQzMl90IG51bWJlck9mQ29yZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBtYXhQYXlsb2FkU2l6ZSkpOworICBNT0NLX01FVEhPRDMoRW5jb2RlLAor
ICAgICAgICAgICAgICAgaW50MzJfdChjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dEltYWdlLAorICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNTcGVjaWZp
Y0luZm8sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1lVHlw
ZT4qIGZyYW1lX3R5cGVzKSk7CisgIE1PQ0tfTUVUSE9EMShSZWdpc3RlckVuY29kZUNvbXBsZXRl
Q2FsbGJhY2ssCisgICAgICAgICAgICAgICBpbnQzMl90KEVuY29kZWRJbWFnZUNhbGxiYWNrKiBj
YWxsYmFjaykpOworICBNT0NLX01FVEhPRDAoUmVsZWFzZSwgaW50MzJfdCgpKTsKKyAgTU9DS19N
RVRIT0QwKFJlc2V0LCBpbnQzMl90KCkpOworICBNT0NLX01FVEhPRDIoU2V0UmF0ZXMsIGludDMy
X3QodWludDMyX3QgbmV3Qml0UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRlKSk7CisgIE1PQ0tfTUVU
SE9EMihTZXRSYXRlQWxsb2NhdGlvbiwKKyAgICAgICAgICAgICAgIGludDMyX3QoY29uc3QgVmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbiYgbmV3Qml0UmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgZnJhbWVSYXRlKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRFbmNvZGVySW5m
bywgRW5jb2RlckluZm8odm9pZCkpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisj
ZW5kaWYgIC8vIEFQSV9URVNUX01PQ0tfVklERU9fRU5DT0RFUl9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3Qvc2ltdWxhdGVk
X25ldHdvcmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS90ZXN0L3NpbXVsYXRlZF9uZXR3b3JrLmgKaW5kZXggYWVjMzAwY2FhMmIzZTRmZDhlYjZlYjI5
NTY5YjUyY2Y4MWVjNjU3NC4uYzAzYjRjYTRjYmYyOGI1YWRiMWI5ZDU2MTUzZWY5Y2JhYzE1MjFm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oCkBAIC00Miwx
MSArNDIsMTEgQEAgc3RydWN0IFBhY2tldERlbGl2ZXJ5SW5mbyB7CiAgIHVpbnQ2NF90IHBhY2tl
dF9pZDsKIH07CiAKLS8vIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBpcyBhIGRlZmF1
bHQgbmV0d29yayBiZWhhdmlvciBjb25maWd1cmF0aW9uCi0vLyBmb3IgZGVmYXVsdCBuZXR3b3Jr
IGJlaGF2aW9yIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IFdlYlJUQyBpZiBubyBjdXN0b20KKy8vIEJ1
aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgaXMgYSBidWlsdC1pbiBuZXR3b3JrIGJlaGF2aW9y
IGNvbmZpZ3VyYXRpb24KKy8vIGZvciBidWlsdC1pbiBuZXR3b3JrIGJlaGF2aW9yIHRoYXQgd2ls
bCBiZSB1c2VkIGJ5IFdlYlJUQyBpZiBubyBjdXN0b20KIC8vIE5ldHdvcmtCZWhhdmlvckludGVy
ZmFjZSBpcyBwcm92aWRlZC4KLXN0cnVjdCBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcg
ewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSB7fQorc3RydWN0IEJ1aWx0SW5O
ZXR3b3JrQmVoYXZpb3JDb25maWcgeworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkg
e30KICAgLy8gUXVldWUgbGVuZ3RoIGluIG51bWJlciBvZiBwYWNrZXRzLgogICBzaXplX3QgcXVl
dWVfbGVuZ3RoX3BhY2tldHMgPSAwOwogICAvLyBEZWxheSBpbiBhZGRpdGlvbiB0byBjYXBhY2l0
eSBpbmR1Y2VkIGRlbGF5LgpAQCAtNzUsOSArNzUsNiBAQCBjbGFzcyBOZXR3b3JrQmVoYXZpb3JJ
bnRlcmZhY2UgewogICB2aXJ0dWFsIH5OZXR3b3JrQmVoYXZpb3JJbnRlcmZhY2UoKSA9IGRlZmF1
bHQ7CiB9OwogCi0vLyBEZXByZWNhdGVkLiBETyBOT1QgVVNFLiBVc2UgTmV0d29ya0JlaGF2aW9y
SW50ZXJmYWNlIGluc3RlYWQuCi11c2luZyBOZXR3b3JrU2ltdWxhdGlvbkludGVyZmFjZSA9IE5l
dHdvcmtCZWhhdmlvckludGVyZmFjZTsKLQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCiAjZW5k
aWYgIC8vIEFQSV9URVNUX1NJTVVMQVRFRF9ORVRXT1JLX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC9zaW11bGNhc3RfdGVz
dF9maXh0dXJlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdGVzdC9zaW11bGNhc3RfdGVzdF9maXh0dXJlLmgKaW5kZXggZTdlYWIyNDEzNDhkYTE4MGNh
NWM4M2Q1NjVhMzExOTFjZjg4OTQ3Mi4uNTI3MGQxMzMwNjRhMGQxNDkyOGIzMThlZDBiODI2MGUw
OGY0Mjk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3Rlc3Qvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3NpbXVsY2FzdF90ZXN0X2Zp
eHR1cmUuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBTaW11bGNhc3RUZXN0Rml4dHVyZSB7CiAg
IHZpcnR1YWwgdm9pZCBUZXN0U3BhdGlvVGVtcG9yYWxMYXllcnMzMzNQYXR0ZXJuRW5jb2Rlcigp
ID0gMDsKICAgdmlydHVhbCB2b2lkIFRlc3RTcGF0aW9UZW1wb3JhbExheWVyczMyMVBhdHRlcm5F
bmNvZGVyKCkgPSAwOwogICB2aXJ0dWFsIHZvaWQgVGVzdFN0cmlkZUVuY29kZURlY29kZSgpID0g
MDsKKyAgdmlydHVhbCB2b2lkIFRlc3REZWNvZGVXaWR0aEhlaWdodFNldCgpID0gMDsKIH07CiAK
IH0gIC8vIG5hbWVzcGFjZSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC90ZXN0X2RlcGVuZGVuY3lfZmFjdG9yeS5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3Rlc3Rf
ZGVwZW5kZW5jeV9mYWN0b3J5LmNjCmluZGV4IDNlNTliYzA5NWM4NzQ3NDk3MGI1NGQ4NjE3Mjc3
MGU1NDc5MmRlMDQuLjE3OWM2MjM5NDBmMmJmNGZmMGJiMDkxZGQ3OTM5OWQ5YmM1ZGFkNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90
ZXN0L3Rlc3RfZGVwZW5kZW5jeV9mYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3Rlc3RfZGVwZW5kZW5jeV9mYWN0b3J5LmNj
CkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+
CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvdGVzdC90
ZXN0X2RlcGVuZGVuY3lfZmFjdG9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVj
a2VyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90ZXN0L3ZpZGVvL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW8vQlVJTEQuZ24KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI2
M2E0YWNiM2RhMmY0YTU5ZWE5MmQ3MGZlN2VhMmY4MDQyYjQ0ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3ZpZGVv
L0JVSUxELmduCkBAIC0wLDAgKzEsMjQgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisjIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorIyB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisjIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKKyMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisKK2ltcG9ydCgiLi4vLi4vLi4vd2VicnRjLmdu
aSIpCisKK3J0Y19zb3VyY2Vfc2V0KCJmdW5jdGlvbl92aWRlb19mYWN0b3J5IikgeworICB2aXNp
YmlsaXR5ID0gWyAiKiIgXQorICB0ZXN0b25seSA9IHRydWUKKyAgcHVibGljID0gWworICAgICJm
dW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIsCisgICAgImZ1bmN0aW9uX3ZpZGVvX2Vu
Y29kZXJfZmFjdG9yeS5oIiwKKyAgXQorCisgIGRlcHMgPSBbCisgICAgIi4uLy4uLy4uL3J0Y19i
YXNlOmNoZWNrcyIsCisgICAgIi4uLy4uL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwK
KyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgXQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rl
c3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRl
b19kZWNvZGVyX2ZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2E0MzIzOTk3NmEwMTEzOWVmNzA5ZTI5
NGUwMzhmMTk5MDQ5MmY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZGVjb2Rl
cl9mYWN0b3J5LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNp
Zm5kZWYgQVBJX1RFU1RfVklERU9fRlVOQ1RJT05fVklERU9fREVDT0RFUl9GQUNUT1JZX0hfCisj
ZGVmaW5lIEFQSV9URVNUX1ZJREVPX0ZVTkNUSU9OX1ZJREVPX0RFQ09ERVJfRkFDVE9SWV9IXwor
CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRp
bGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3Nk
cF92aWRlb19mb3JtYXQuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29k
ZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2Ug
d2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworLy8gQSBkZWNvZGVyIGZhY3RvcnkgcHJvZHVj
aW5nIGRlY29kZXJzIGJ5IGNhbGxpbmcgYSBzdXBwbGllZCBjcmVhdGUgZnVuY3Rpb24uCitjbGFz
cyBGdW5jdGlvblZpZGVvRGVjb2RlckZhY3RvcnkgZmluYWwgOiBwdWJsaWMgVmlkZW9EZWNvZGVy
RmFjdG9yeSB7CisgcHVibGljOgorICBleHBsaWNpdCBGdW5jdGlvblZpZGVvRGVjb2RlckZhY3Rv
cnkoCisgICAgICBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+KCk+
IGNyZWF0ZSkKKyAgICAgIDogY3JlYXRlXyhbY3JlYXRlXShjb25zdCBTZHBWaWRlb0Zvcm1hdCYp
IHsgcmV0dXJuIGNyZWF0ZSgpOyB9KSB7fQorICBleHBsaWNpdCBGdW5jdGlvblZpZGVvRGVjb2Rl
ckZhY3RvcnkoCisgICAgICBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29k
ZXI+KGNvbnN0IFNkcFZpZGVvRm9ybWF0Jik+CisgICAgICAgICAgY3JlYXRlKQorICAgICAgOiBj
cmVhdGVfKHN0ZDo6bW92ZShjcmVhdGUpKSB7fQorCisgIC8vIFVudXNlZCBieSB0ZXN0cy4KKyAg
c3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IEdldFN1cHBvcnRlZEZvcm1hdHMoKSBjb25zdCBv
dmVycmlkZSB7CisgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgICByZXR1cm4ge307CisgIH0KKwor
ICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyPiBDcmVhdGVWaWRlb0RlY29kZXIoCisgICAg
ICBjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSBvdmVycmlkZSB7CisgICAgcmV0dXJuIGNy
ZWF0ZV8oZm9ybWF0KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgY29uc3Qgc3RkOjpmdW5jdGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyPihjb25zdCBTZHBWaWRlb0Zvcm1hdCYpPgorICAg
ICAgY3JlYXRlXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1RFU1RfVklERU9fRlVOQ1RJT05fVklERU9fREVDT0RF
Ul9GQUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3Rvcnku
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3Zp
ZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1Zjg0OGNk
MWZkYzg1MzI4YTI0MDJkYjJiYWQ4MWFkMDE3OGNjMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlby9mdW5j
dGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogIENv
cHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVEVTVF9WSURFT19GVU5DVElPTl9WSURFT19FTkNP
REVSX0ZBQ1RPUllfSF8KKyNkZWZpbmUgQVBJX1RFU1RfVklERU9fRlVOQ1RJT05fVklERU9fRU5D
T0RFUl9GQUNUT1JZX0hfCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgorI2luY2x1ZGUgImFwaS92aWRlb19j
b2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCisvLyBBbiBlbmNv
ZGVyIGZhY3RvcnkgcHJvZHVjaW5nIGVuY29kZXJzIGJ5IGNhbGxpbmcgYSBzdXBwbGllZCBjcmVh
dGUKKy8vIGZ1bmN0aW9uLgorY2xhc3MgRnVuY3Rpb25WaWRlb0VuY29kZXJGYWN0b3J5IGZpbmFs
IDogcHVibGljIFZpZGVvRW5jb2RlckZhY3RvcnkgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgRnVu
Y3Rpb25WaWRlb0VuY29kZXJGYWN0b3J5KAorICAgICAgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1
ZV9wdHI8VmlkZW9FbmNvZGVyPigpPiBjcmVhdGUpCisgICAgICA6IGNyZWF0ZV8oW2NyZWF0ZV0o
Y29uc3QgU2RwVmlkZW9Gb3JtYXQmKSB7IHJldHVybiBjcmVhdGUoKTsgfSkge30KKyAgZXhwbGlj
aXQgRnVuY3Rpb25WaWRlb0VuY29kZXJGYWN0b3J5KAorICAgICAgc3RkOjpmdW5jdGlvbjxzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPihjb25zdCBTZHBWaWRlb0Zvcm1hdCYpPgorICAgICAg
ICAgIGNyZWF0ZSkKKyAgICAgIDogY3JlYXRlXyhzdGQ6Om1vdmUoY3JlYXRlKSkge30KKworICAv
LyBVbnVzZWQgYnkgdGVzdHMuCisgIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBHZXRTdXBw
b3J0ZWRGb3JtYXRzKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgIFJUQ19OT1RSRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIHt9OworICB9CisKKyAgQ29kZWNJbmZvIFF1ZXJ5VmlkZW9FbmNvZGVyKAorICAg
ICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQmIC8qIGZvcm1hdCAqLykgY29uc3Qgb3ZlcnJpZGUgewor
ICAgIENvZGVjSW5mbyBjb2RlY19pbmZvOworICAgIGNvZGVjX2luZm8uaXNfaGFyZHdhcmVfYWNj
ZWxlcmF0ZWQgPSBmYWxzZTsKKyAgICBjb2RlY19pbmZvLmhhc19pbnRlcm5hbF9zb3VyY2UgPSBm
YWxzZTsKKyAgICByZXR1cm4gY29kZWNfaW5mbzsKKyAgfQorCisgIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0VuY29kZXI+IENyZWF0ZVZpZGVvRW5jb2RlcigKKyAgICAgIGNvbnN0IFNkcFZpZGVvRm9y
bWF0JiBmb3JtYXQpIG92ZXJyaWRlIHsKKyAgICByZXR1cm4gY3JlYXRlXyhmb3JtYXQpOworICB9
CisKKyBwcml2YXRlOgorICBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b0VuY29kZXI+KGNvbnN0IFNkcFZpZGVvRm9ybWF0Jik+CisgICAgICBjcmVhdGVfOworfTsKKwor
fSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAv
LyBBUElfVEVTVF9WSURFT19GVU5DVElPTl9WSURFT19FTkNPREVSX0ZBQ1RPUllfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0
L3ZpZGVvX3F1YWxpdHlfdGVzdF9maXh0dXJlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlb19xdWFsaXR5X3Rlc3RfZml4dHVyZS5oCmlu
ZGV4IGZmMTQ3MmU5YTU4ZTYxMzU0ZTgwNTE5MjUyOGYzZWY4NzVjZWM5MjMuLjA2OWEyNDM1M2Rl
N2ViY2NkZTM5MmMwNjhhNWQ0ZTA1Y2M2MjdjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90ZXN0L3ZpZGVvX3F1YWxpdHlfdGVzdF9m
aXh0dXJlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3Rlc3QvdmlkZW9fcXVhbGl0eV90ZXN0X2ZpeHR1cmUuaApAQCAtODIsMTUgKzgyLDExIEBA
IGNsYXNzIFZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlSW50ZXJmYWNlIHsKICAgICAgIHN0ZDo6c3Ry
aW5nIGdyYXBoX2RhdGFfb3V0cHV0X2ZpbGVuYW1lOwogICAgICAgc3RkOjpzdHJpbmcgZ3JhcGhf
dGl0bGU7CiAgICAgfSBhbmFseXplcjsKLSAgICAvLyBEZXByZWNhdGVkLiBETyBOT1QgVVNFLiBV
c2UgY29uZmlnIGluc3RlYWQuIFRoaXMgaXMgbm90IHBpcGUgYWN0dWFsbHksCi0gICAgLy8gaXQg
aXMganVzdCBjb25maWd1cmF0aW9uLCB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24KLSAgICAvLyBvZiBzaW11bGF0aW9uIGxheWVyLgotICAgIERlZmF1bHROZXR3
b3JrU2ltdWxhdGlvbkNvbmZpZyBwaXBlOwogICAgIC8vIENvbmZpZyBmb3IgZGVmYXVsdCBzaW11
bGF0aW9uIGltcGxlbWVudGF0aW9uLiBNdXN0IGJlIG51bGxvcHQgaWYKICAgICAvLyBgc2VuZGVy
X25ldHdvcmtgIGFuZCBgcmVjZWl2ZXJfbmV0d29ya2AgaW4gSW5qZWN0aW9uQ29tcG9uZW50cyBh
cmUKICAgICAvLyBub24tbnVsbC4gTWF5IGJlIG51bGxvcHQgZXZlbiBpZiBgc2VuZGVyX25ldHdv
cmtgIGFuZCBgcmVjZWl2ZXJfbmV0d29ya2AKICAgICAvLyBhcmUgbnVsbDsgaW4gdGhhdCBjYXNl
LCBhIGRlZmF1bHQgY29uZmlnIHdpbGwgYmUgdXNlZC4KLSAgICBhYnNsOjpvcHRpb25hbDxEZWZh
dWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc+IGNvbmZpZzsKKyAgICBhYnNsOjpvcHRpb25hbDxC
dWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnPiBjb25maWc7CiAgICAgc3RydWN0IFNTIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFNwYXRpYWwgc2NhbGFiaWxpdHkuCiAgICAgICBzdGQ6
OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtczsgIC8vIElmIGVtcHR5LCBvbmUgc3RyZWFtIGlz
IGFzc3VtZWQuCiAgICAgICBzaXplX3Qgc2VsZWN0ZWRfc3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW9jb2Rl
Y190ZXN0X2ZpeHR1cmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90ZXN0L3ZpZGVvY29kZWNfdGVzdF9maXh0dXJlLmgKaW5kZXggYTBiODA4M2Q3MjM2
YzM3YTA2OGJlYjcwMTJkZTM2ZDY2MzdiYmY1Ni4uOTI1YzYwYzNjOTJjOWY1ZWJkMTQ5ZDUzZjE4
ODMzNTczMWExZTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3Rlc3QvdmlkZW9jb2RlY190ZXN0X2ZpeHR1cmUuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdGVzdC92aWRlb2NvZGVj
X3Rlc3RfZml4dHVyZS5oCkBAIC0xMjMsMTAgKzEyMyw2IEBAIGNsYXNzIFZpZGVvQ29kZWNUZXN0
Rml4dHVyZSB7CiAgICAgICAgICAgd2VicnRjOjpIMjY0UGFja2V0aXphdGlvbk1vZGU6Ok5vbklu
dGVybGVhdmVkOwogICAgIH0gaDI2NF9jb2RlY19zZXR0aW5nczsKIAotICAgIC8vIFNob3VsZCBo
YXJkd2FyZSBhY2NlbGVyYXRlZCBjb2RlY3MgYmUgdXNlZD8KLSAgICBib29sIGh3X2VuY29kZXIg
PSBmYWxzZTsKLSAgICBib29sIGh3X2RlY29kZXIgPSBmYWxzZTsKLQogICAgIC8vIEN1c3RvbSBj
aGVja2VyIHRoYXQgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggZnJhbWUuCiAgICAgY29uc3QgRW5j
b2RlZEZyYW1lQ2hlY2tlciogZW5jb2RlZF9mcmFtZV9jaGVja2VyID0gbnVsbHB0cjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Ry
YW5zcG9ydC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS90cmFuc3BvcnQvQlVJTEQuZ24KaW5kZXggZjQ3MzE3OWRkMTRhZGZhNGZmNjFmMWMy
MjRiMGVmOTdhMmM0YTJjOC4uMzU3ZmYwMDU0YmQwZGI2ZGUyMzRlZTczZWNiOTc4ZmY2ODg2NWJj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3RyYW5zcG9ydC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L0JVSUxELmduCkBAIC0xOSw3ICsxOSwxNSBAQCBy
dGNfc291cmNlX3NldCgiYml0cmF0ZV9zZXR0aW5ncyIpIHsKICAgXQogfQogCitydGNfc291cmNl
X3NldCgiZW51bXMiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisg
ICAgImVudW1zLmgiLAorICBdCit9CisKIHJ0Y19zdGF0aWNfbGlicmFyeSgibmV0d29ya19jb250
cm9sIikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBzb3VyY2VzID0gWwogICAgICJuZXR3
b3JrX2NvbnRyb2wuaCIsCiAgICAgIm5ldHdvcmtfdHlwZXMuY2MiLApAQCAtMzUsNiArNDMsMTkg
QEAgcnRjX3N0YXRpY19saWJyYXJ5KCJuZXR3b3JrX2NvbnRyb2wiKSB7CiAgIF0KIH0KIAorcnRj
X3N0YXRpY19saWJyYXJ5KCJnb29nX2NjIikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICBz
b3VyY2VzID0gWworICAgICJnb29nX2NjX2ZhY3RvcnkuY2MiLAorICAgICJnb29nX2NjX2ZhY3Rv
cnkuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOm5ldHdvcmtfY29udHJvbCIsCisgICAgIi4u
Ly4uL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MiLAorICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICBdCit9CisKIGlmIChydGNfaW5jbHVk
ZV90ZXN0cykgewogICBydGNfc291cmNlX3NldCgibmV0d29ya19jb250cm9sX3Rlc3QiKSB7CiAg
ICAgdGVzdG9ubHkgPSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvT1dORVJTCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU5OTFmNmZjNTZhMDc5ZDU2YTljOTMxMGJhNmY3ODI4ZGIzNGUxMWYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNw
b3J0L09XTkVSUwpAQCAtMCwwICsxLDIgQEAKK3NydGVAd2VicnRjLm9yZwordGVyZWxpdXNAd2Vi
cnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3RyYW5zcG9ydC9lbnVtcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9lbnVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxZDU3NzBj
Yjk2MmFhNzk4N2Y4OTA0ODE5MzFiMDY0ODMwMGRlYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2VudW1z
LmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVFJB
TlNQT1JUX0VOVU1TX0hfCisjZGVmaW5lIEFQSV9UUkFOU1BPUlRfRU5VTVNfSF8KKworbmFtZXNw
YWNlIHdlYnJ0YyB7CisKKy8vIFNlZSBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXBjLyNy
dGNpY2V0cmFuc3BvcnRzdGF0ZQorLy8gTm90ZSB0aGF0IGtGYWlsZWQgaXMgY3VycmVudGx5IG5v
dCBhIHRlcm1pbmFsIHN0YXRlLCBhbmQgYSB0cmFuc3BvcnQgbWlnaHQKKy8vIGluY29ycmVjdGx5
IGJlIG1hcmtlZCBhcyBmYWlsZWQgd2hpbGUgZ2F0aGVyaW5nIGNhbmRpZGF0ZXMsIHNlZQorLy8g
YnVncy53ZWJydGMub3JnLzg4MzMKK2VudW0gY2xhc3MgSWNlVHJhbnNwb3J0U3RhdGUgeworICBr
TmV3LAorICBrQ2hlY2tpbmcsCisgIGtDb25uZWN0ZWQsCisgIGtDb21wbGV0ZWQsCisgIGtGYWls
ZWQsCisgIGtEaXNjb25uZWN0ZWQsCisgIGtDbG9zZWQsCit9OworCit9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1RSQU5TUE9SVF9FTlVNU19IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9n
b29nX2NjX2ZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdHJhbnNwb3J0L2dvb2dfY2NfZmFjdG9yeS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTllMmRj
Zjg0YWJjYjhkM2ZmZGM2OTYzOTE5YmI3ZDI0NzFlMDg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9nb29n
X2NjX2ZhY3RvcnkuY2MKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
KyNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L2dvb2dfY2NfZmFjdG9yeS5oIgorCisjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5oIgorbmFtZXNwYWNlIHdlYnJ0
YyB7CitHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3Rvcnk6Okdvb2dDY05ldHdvcmtDb250cm9s
bGVyRmFjdG9yeSgKKyAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nKQorICAgIDogZXZlbnRfbG9n
XyhldmVudF9sb2cpIHt9CisKK3N0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckludGVy
ZmFjZT4KK0dvb2dDY05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6Q3JlYXRlKE5ldHdvcmtDb250
cm9sbGVyQ29uZmlnIGNvbmZpZykgeworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8R29vZ0Nj
TmV0d29ya0NvbnRyb2xsZXI+KGV2ZW50X2xvZ18sIGNvbmZpZywgZmFsc2UpOworfQorCitUaW1l
RGVsdGEgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpHZXRQcm9jZXNzSW50ZXJ2YWwo
KSBjb25zdCB7CisgIGNvbnN0IGludDY0X3Qga1VwZGF0ZUludGVydmFsTXMgPSAyNTsKKyAgcmV0
dXJuIFRpbWVEZWx0YTo6bXMoa1VwZGF0ZUludGVydmFsTXMpOworfQorCitHb29nQ2NGZWVkYmFj
a05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6R29vZ0NjRmVlZGJhY2tOZXR3b3JrQ29udHJvbGxl
ckZhY3RvcnkoCisgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZykKKyAgICA6IGV2ZW50X2xvZ18o
ZXZlbnRfbG9nKSB7fQorCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRyb2xsZXJJbnRlcmZh
Y2U+CitHb29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6Q3JlYXRlKE5ldHdv
cmtDb250cm9sbGVyQ29uZmlnIGNvbmZpZykgeworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8
R29vZ0NjTmV0d29ya0NvbnRyb2xsZXI+KGV2ZW50X2xvZ18sIGNvbmZpZywgdHJ1ZSk7Cit9CisK
K1RpbWVEZWx0YSBHb29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6R2V0UHJv
Y2Vzc0ludGVydmFsKCkgY29uc3QgeworICBjb25zdCBpbnQ2NF90IGtVcGRhdGVJbnRlcnZhbE1z
ID0gMjU7CisgIHJldHVybiBUaW1lRGVsdGE6Om1zKGtVcGRhdGVJbnRlcnZhbE1zKTsKK30KK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvZ29vZ19jY19mYWN0b3J5LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2dvb2df
Y2NfZmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlM2IzMTcyZDAyZmQ2ZmZhMGIxZjNmZmUzMzhjZTU3
ZTJhNTc0ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L2dvb2dfY2NfZmFjdG9yeS5oCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9UUkFOU1BPUlRfR09P
R19DQ19GQUNUT1JZX0hfCisjZGVmaW5lIEFQSV9UUkFOU1BPUlRfR09PR19DQ19GQUNUT1JZX0hf
CisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9uZXR3b3JrX2Nv
bnRyb2wuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBSdGNFdmVudExvZzsKKworY2xh
c3MgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5CisgICAgOiBwdWJsaWMgTmV0d29ya0Nv
bnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEdvb2dDY05l
dHdvcmtDb250cm9sbGVyRmFjdG9yeShSdGNFdmVudExvZyopOworICBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NvbnRyb2xsZXJJbnRlcmZhY2U+IENyZWF0ZSgKKyAgICAgIE5ldHdvcmtDb250cm9s
bGVyQ29uZmlnIGNvbmZpZykgb3ZlcnJpZGU7CisgIFRpbWVEZWx0YSBHZXRQcm9jZXNzSW50ZXJ2
YWwoKSBjb25zdCBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIFJ0Y0V2ZW50TG9nKiBjb25zdCBl
dmVudF9sb2dfOworfTsKKworLy8gRmFjdG9yeSB0byBjcmVhdGUgcGFja2V0IGZlZWRiYWNrIG9u
bHkgR29vZ0NDLCB0aGlzIGNhbiBiZSB1c2VkIGZvcgorLy8gY29ubmVjdGlvbnMgcHJvdmlkaW5n
IHBhY2tldCByZWNlaXZlIHRpbWUgZmVlZGJhY2sgYnV0IG5vIG90aGVyIHJlcG9ydHMuCitjbGFz
cyBHb29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9sbGVyRmFjdG9yeQorICAgIDogcHVibGljIE5l
dHdvcmtDb250cm9sbGVyRmFjdG9yeUludGVyZmFjZSB7CisgcHVibGljOgorICBleHBsaWNpdCBH
b29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9sbGVyRmFjdG9yeShSdGNFdmVudExvZyopOworICBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRyb2xsZXJJbnRlcmZhY2U+IENyZWF0ZSgKKyAgICAg
IE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGNvbmZpZykgb3ZlcnJpZGU7CisgIFRpbWVEZWx0YSBH
ZXRQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdCBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIFJ0Y0V2
ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOworfTsKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKwor
I2VuZGlmICAvLyBBUElfVFJBTlNQT1JUX0dPT0dfQ0NfRkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3RyYW5zcG9ydC9u
ZXR3b3JrX3R5cGVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmNjCmluZGV4IDQ4YmRjYWIxNjJiYmUyYTA4
ZjJhZjIyZGIwMjVhZjkzYjcxZjhjM2QuLjgwMjE0ZGUxYTIzODEyNDc4NzViYTEzZjFjMWFhYWQ2
ZTMwYjE4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMu
Y2MKQEAgLTM4LDcgKzM4LDcgQEAgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiBUcmFuc3BvcnRQ
YWNrZXRzRmVlZGJhY2s6OlJlY2VpdmVkV2l0aFNlbmRJbmZvKCkKICAgICBjb25zdCB7CiAgIHN0
ZDo6dmVjdG9yPFBhY2tldFJlc3VsdD4gcmVzOwogICBmb3IgKGNvbnN0IFBhY2tldFJlc3VsdCYg
ZmIgOiBwYWNrZXRfZmVlZGJhY2tzKSB7Ci0gICAgaWYgKGZiLnJlY2VpdmVfdGltZS5Jc0Zpbml0
ZSgpICYmIGZiLnNlbnRfcGFja2V0Lmhhc192YWx1ZSgpKSB7CisgICAgaWYgKGZiLnJlY2VpdmVf
dGltZS5Jc0Zpbml0ZSgpKSB7CiAgICAgICByZXMucHVzaF9iYWNrKGZiKTsKICAgICB9CiAgIH0K
QEAgLTQ4LDcgKzQ4LDcgQEAgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiBUcmFuc3BvcnRQYWNr
ZXRzRmVlZGJhY2s6OlJlY2VpdmVkV2l0aFNlbmRJbmZvKCkKIHN0ZDo6dmVjdG9yPFBhY2tldFJl
c3VsdD4gVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrOjpMb3N0V2l0aFNlbmRJbmZvKCkgY29uc3Qg
ewogICBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+IHJlczsKICAgZm9yIChjb25zdCBQYWNrZXRS
ZXN1bHQmIGZiIDogcGFja2V0X2ZlZWRiYWNrcykgewotICAgIGlmIChmYi5yZWNlaXZlX3RpbWUu
SXNQbHVzSW5maW5pdHkoKSAmJiBmYi5zZW50X3BhY2tldC5oYXNfdmFsdWUoKSkgeworICAgIGlm
IChmYi5yZWNlaXZlX3RpbWUuSXNQbHVzSW5maW5pdHkoKSkgewogICAgICAgcmVzLnB1c2hfYmFj
ayhmYik7CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvbmV0d29ya190
eXBlcy5oCmluZGV4IGFkMjBhYmM1M2Q3MTBmODIwZDg4NGFmNjJkY2Y5MTU0NDBiNmI5OGEuLjBm
MWQ3YWI2ODMzNGMzZDQwZWYwOWEyOWJkMzc2ZjcyN2ZjNmZlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvbmV0d29y
a190eXBlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5oCkBAIC04OCwxMiArODgsMTMgQEAgc3RydWN0
IFBhY2VkUGFja2V0SW5mbyB7CiBzdHJ1Y3QgU2VudFBhY2tldCB7CiAgIFRpbWVzdGFtcCBzZW5k
X3RpbWUgPSBUaW1lc3RhbXA6OlBsdXNJbmZpbml0eSgpOwogICBEYXRhU2l6ZSBzaXplID0gRGF0
YVNpemU6Olplcm8oKTsKKyAgRGF0YVNpemUgcHJpb3JfdW5hY2tlZF9kYXRhID0gRGF0YVNpemU6
Olplcm8oKTsKICAgUGFjZWRQYWNrZXRJbmZvIHBhY2luZ19pbmZvOwogICAvLyBUcmFuc3BvcnQg
aW5kZXBlbmRlbnQgc2VxdWVuY2UgbnVtYmVyLCBhbnkgdHJhY2tlZCBwYWNrZXQgc2hvdWxkIGhh
dmUgYQogICAvLyBzZXF1ZW5jZSBudW1iZXIgdGhhdCBpcyB1bmlxdWUgb3ZlciB0aGUgd2hvbGUg
Y2FsbCBhbmQgaW5jcmVhc2luZyBieSAxIGZvcgogICAvLyBlYWNoIHBhY2tldC4KICAgaW50NjRf
dCBzZXF1ZW5jZV9udW1iZXI7Ci0gIC8vIERhdGEgaW4gZmxpZ2h0IHdoZW4gdGhlIHBhY2tldCB3
YXMgc2VudCwgaW5jbHVkaW5nIHRoZSBwYWNrZXQuCisgIC8vIFRyYWNrZWQgZGF0YSBpbiBmbGln
aHQgd2hlbiB0aGUgcGFja2V0IHdhcyBzZW50LCBleGNsdWRpbmcgdW5hY2tlZCBkYXRhLgogICBE
YXRhU2l6ZSBkYXRhX2luX2ZsaWdodCA9IERhdGFTaXplOjpaZXJvKCk7CiB9OwogCkBAIC0xMjUs
NyArMTI2LDcgQEAgc3RydWN0IFBhY2tldFJlc3VsdCB7CiAgIFBhY2tldFJlc3VsdChjb25zdCBQ
YWNrZXRSZXN1bHQmKTsKICAgflBhY2tldFJlc3VsdCgpOwogCi0gIGFic2w6Om9wdGlvbmFsPFNl
bnRQYWNrZXQ+IHNlbnRfcGFja2V0OworICBTZW50UGFja2V0IHNlbnRfcGFja2V0OwogICBUaW1l
c3RhbXAgcmVjZWl2ZV90aW1lID0gVGltZXN0YW1wOjpQbHVzSW5maW5pdHkoKTsKIH07CiAKQEAg
LTEzOSw2ICsxNDAsOSBAQCBzdHJ1Y3QgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrIHsKICAgRGF0
YVNpemUgcHJpb3JfaW5fZmxpZ2h0ID0gRGF0YVNpemU6Olplcm8oKTsKICAgc3RkOjp2ZWN0b3I8
UGFja2V0UmVzdWx0PiBwYWNrZXRfZmVlZGJhY2tzOwogCisgIC8vIEFycml2YWwgdGltZXMgZm9y
IG1lc3NhZ2VzIHdpdGhvdXQgc2VuZCB0aW1lIGluZm9ybWF0aW9uLgorICBzdGQ6OnZlY3RvcjxU
aW1lc3RhbXA+IHNlbmRsZXNzX2Fycml2YWxfdGltZXM7CisKICAgc3RkOjp2ZWN0b3I8UGFja2V0
UmVzdWx0PiBSZWNlaXZlZFdpdGhTZW5kSW5mbygpIGNvbnN0OwogICBzdGQ6OnZlY3RvcjxQYWNr
ZXRSZXN1bHQ+IExvc3RXaXRoU2VuZEluZm8oKSBjb25zdDsKICAgc3RkOjp2ZWN0b3I8UGFja2V0
UmVzdWx0PiBQYWNrZXRzV2l0aEZlZWRiYWNrKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdHJhbnNwb3J0L3Rlc3QvbmV0
d29ya19jb250cm9sX3Rlc3Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvdGVzdC9uZXR3b3JrX2NvbnRyb2xfdGVzdGVyLmNjCmlu
ZGV4IDJlZGFiZDA3MTdlNTk0OWEwYmU3NzQ0YWM2YzA0M2RkOWU5ZWUwMjkuLmM1OTBhZTg4YmM0
MTMwYTc4YzE2ZDVkMDgzMjE2YjdjOTViMmIwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS90cmFuc3BvcnQvdGVzdC9uZXR3b3JrX2Nv
bnRyb2xfdGVzdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2FwaS90cmFuc3BvcnQvdGVzdC9uZXR3b3JrX2NvbnRyb2xfdGVzdGVyLmNjCkBAIC04
Nyw3ICs4Nyw3IEBAIHZvaWQgTmV0d29ya0NvbnRyb2xsZXJUZXN0ZXI6OlJ1blNpbXVsYXRpb24o
VGltZURlbHRhIGR1cmF0aW9uLAogICAgIGlmIChzdGF0ZV8uY29uZ2VzdGlvbl93aW5kb3cgJiYg
c3RhdGVfLmNvbmdlc3Rpb25fd2luZG93LT5Jc0Zpbml0ZSgpKSB7CiAgICAgICBEYXRhU2l6ZSBk
YXRhX2luX2ZsaWdodCA9IERhdGFTaXplOjpaZXJvKCk7CiAgICAgICBmb3IgKFBhY2tldFJlc3Vs
dCYgcGFja2V0IDogb3V0c3RhbmRpbmdfcGFja2V0c18pCi0gICAgICAgIGRhdGFfaW5fZmxpZ2h0
ICs9IHBhY2tldC5zZW50X3BhY2tldC0+c2l6ZTsKKyAgICAgICAgZGF0YV9pbl9mbGlnaHQgKz0g
cGFja2V0LnNlbnRfcGFja2V0LnNpemU7CiAgICAgICBpZiAoZGF0YV9pbl9mbGlnaHQgPiAqc3Rh
dGVfLmNvbmdlc3Rpb25fd2luZG93KQogICAgICAgICBzZW5kX3BhY2tldCA9IGZhbHNlOwogICAg
IH0KQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBOZXR3b3JrQ29udHJvbGxlclRlc3Rlcjo6UnVuU2lt
dWxhdGlvbihUaW1lRGVsdGEgZHVyYXRpb24sCiAgICAgICBzZW50X3BhY2tldC5zZXF1ZW5jZV9u
dW1iZXIgPSBwYWNrZXRfc2VxdWVuY2VfbnVtYmVyXysrOwogICAgICAgc2VudF9wYWNrZXQuZGF0
YV9pbl9mbGlnaHQgPSBzZW50X3BhY2tldC5zaXplOwogICAgICAgZm9yIChQYWNrZXRSZXN1bHQm
IHBhY2tldCA6IG91dHN0YW5kaW5nX3BhY2tldHNfKQotICAgICAgICBzZW50X3BhY2tldC5kYXRh
X2luX2ZsaWdodCArPSBwYWNrZXQuc2VudF9wYWNrZXQtPnNpemU7CisgICAgICAgIHNlbnRfcGFj
a2V0LmRhdGFfaW5fZmxpZ2h0ICs9IHBhY2tldC5zZW50X3BhY2tldC5zaXplOwogICAgICAgVXBk
YXRlKCZzdGF0ZV8sIGNvbnRyb2xsZXJfLT5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQpKTsKIAog
ICAgICAgVGltZURlbHRhIHRpbWVfaW5fZmxpZ2h0ID0gc2VudF9wYWNrZXQuc2l6ZSAvIGFjdHVh
bF9iYW5kd2lkdGg7CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBOZXR3b3JrQ29udHJvbGxlclRl
c3Rlcjo6UnVuU2ltdWxhdGlvbihUaW1lRGVsdGEgZHVyYXRpb24sCiAgICAgICBUcmFuc3BvcnRQ
YWNrZXRzRmVlZGJhY2sgZmVlZGJhY2s7CiAgICAgICBmZWVkYmFjay5wcmlvcl9pbl9mbGlnaHQg
PSBEYXRhU2l6ZTo6WmVybygpOwogICAgICAgZm9yIChQYWNrZXRSZXN1bHQmIHBhY2tldCA6IG91
dHN0YW5kaW5nX3BhY2tldHNfKQotICAgICAgICBmZWVkYmFjay5wcmlvcl9pbl9mbGlnaHQgKz0g
cGFja2V0LnNlbnRfcGFja2V0LT5zaXplOworICAgICAgICBmZWVkYmFjay5wcmlvcl9pbl9mbGln
aHQgKz0gcGFja2V0LnNlbnRfcGFja2V0LnNpemU7CiAgICAgICB3aGlsZSAoIW91dHN0YW5kaW5n
X3BhY2tldHNfLmVtcHR5KCkgJiYKICAgICAgICAgICAgICBjdXJyZW50X3RpbWVfID49IG91dHN0
YW5kaW5nX3BhY2tldHNfLmZyb250KCkucmVjZWl2ZV90aW1lICsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9wYWdhdGlvbl9kZWxheSkgewpAQCAtMTMxLDcgKzEzMSw3IEBA
IHZvaWQgTmV0d29ya0NvbnRyb2xsZXJUZXN0ZXI6OlJ1blNpbXVsYXRpb24oVGltZURlbHRhIGR1
cmF0aW9uLAogICAgICAgICAgIGZlZWRiYWNrLnBhY2tldF9mZWVkYmFja3MuYmFjaygpLnJlY2Vp
dmVfdGltZSArIHByb3BhZ2F0aW9uX2RlbGF5OwogICAgICAgZmVlZGJhY2suZGF0YV9pbl9mbGln
aHQgPSBEYXRhU2l6ZTo6WmVybygpOwogICAgICAgZm9yIChQYWNrZXRSZXN1bHQmIHBhY2tldCA6
IG91dHN0YW5kaW5nX3BhY2tldHNfKQotICAgICAgICBmZWVkYmFjay5kYXRhX2luX2ZsaWdodCAr
PSBwYWNrZXQuc2VudF9wYWNrZXQtPnNpemU7CisgICAgICAgIGZlZWRiYWNrLmRhdGFfaW5fZmxp
Z2h0ICs9IHBhY2tldC5zZW50X3BhY2tldC5zaXplOwogICAgICAgVXBkYXRlKCZzdGF0ZV8sIGNv
bnRyb2xsZXJfLT5PblRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayhmZWVkYmFjaykpOwogICAgIH0K
ICAgICBjdXJyZW50X3RpbWVfICs9IHBhY2tldF9pbnRlcnZhbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9CVUlMRC5nbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9CVUlM
RC5nbgppbmRleCA3ZGJkZGY0ZTYyMmY0ZWQ3ZmJjMWY3M2ZjYzk1MmRlMzQyOGZiZTZiLi43ZTE1
MGYxNzY2NzliMjMzNDM1NzFlMWQxNDhiMmIzMDkyOWJjZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvQlVJTEQuZ24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL0JV
SUxELmduCkBAIC05LDYgKzksNyBAQAogaW1wb3J0KCIuLi8uLi93ZWJydGMuZ25pIikKIAogcnRj
X3NvdXJjZV9zZXQoImRhdGFfcmF0ZSIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgc291
cmNlcyA9IFsKICAgICAiZGF0YV9yYXRlLmNjIiwKICAgICAiZGF0YV9yYXRlLmgiLApAQCAtMTgs
MTEgKzE5LDEzIEBAIHJ0Y19zb3VyY2Vfc2V0KCJkYXRhX3JhdGUiKSB7CiAgICAgIjpkYXRhX3Np
emUiLAogICAgICI6dGltZV9kZWx0YSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCi0g
ICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jh
c2U6c3RyaW5ndXRpbHMiLAorICAgICIuLi8uLi9ydGNfYmFzZS91bml0czp1bml0X2Jhc2UiLAog
ICBdCiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJkYXRhX3NpemUiKSB7CisgIHZpc2liaWxpdHkgPSBb
ICIqIiBdCiAgIHNvdXJjZXMgPSBbCiAgICAgImRhdGFfc2l6ZS5jYyIsCiAgICAgImRhdGFfc2l6
ZS5oIiwKQEAgLTMwLDEwICszMywxMyBAQCBydGNfc291cmNlX3NldCgiZGF0YV9zaXplIikgewog
CiAgIGRlcHMgPSBbCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCi0gICAgIi4uLy4uL3J0
Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6c3RyaW5ndXRp
bHMiLAorICAgICIuLi8uLi9ydGNfYmFzZS91bml0czp1bml0X2Jhc2UiLAogICBdCiB9CisKIHJ0
Y19zb3VyY2Vfc2V0KCJ0aW1lX2RlbHRhIikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBz
b3VyY2VzID0gWwogICAgICJ0aW1lX2RlbHRhLmNjIiwKICAgICAidGltZV9kZWx0YS5oIiwKQEAg
LTQxLDExICs0NywxMyBAQCBydGNfc291cmNlX3NldCgidGltZV9kZWx0YSIpIHsKIAogICBkZXBz
ID0gWwogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAotICAgICIuLi8uLi9ydGNfYmFzZTpy
dGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKKyAg
ICAiLi4vLi4vcnRjX2Jhc2UvdW5pdHM6dW5pdF9iYXNlIiwKICAgXQogfQogCiBydGNfc291cmNl
X3NldCgidGltZXN0YW1wIikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBzb3VyY2VzID0g
WwogICAgICJ0aW1lc3RhbXAuY2MiLAogICAgICJ0aW1lc3RhbXAuaCIsCkBAIC01NCw3ICs2Miw4
IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ0aW1lc3RhbXAiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjp0aW1l
X2RlbHRhIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKLSAgICAiLi4vLi4vcnRjX2Jh
c2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIs
CisgICAgIi4uLy4uL3J0Y19iYXNlL3VuaXRzOnVuaXRfYmFzZSIsCiAgIF0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRz
L2RhdGFfcmF0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS91bml0cy9kYXRhX3JhdGUuY2MKaW5kZXggOTE3MDYyNzcxNTg0OTgwOWZjMGRmY2Q2YzM4
NTVlMDc4Nzc1ZWVhMi4uZDcyZDk1OGMwMjhmOTc2YjJjMTUwZjJkNjdkZjBhM2NiZGMwZjYwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3VuaXRzL2RhdGFfcmF0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRlLmNjCkBAIC0xNCw3ICsxNCw3IEBACiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCi1zdGQ6OnN0cmluZyBUb1N0cmluZyhjb25zdCBEYXRhUmF0ZSYg
dmFsdWUpIHsKK3N0ZDo6c3RyaW5nIFRvU3RyaW5nKERhdGFSYXRlIHZhbHVlKSB7CiAgIGNoYXIg
YnVmWzY0XTsKICAgcnRjOjpTaW1wbGVTdHJpbmdCdWlsZGVyIHNiKGJ1Zik7CiAgIGlmICh2YWx1
ZS5Jc0luZmluaXRlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3JhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3JhdGUuaAppbmRleCA0YmI5
ODhiNjU4ODhiYjkzNGFkZGFhZGZkMDYyOWY2MTk2MjYyZTkyLi43MTE5Mjg0ODc0ZTkyYjdjNTRl
OGQyY2RhNTU1NTg5MmE1YTNiZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRlLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfcmF0ZS5oCkBA
IC0xNSwyMiArMTUsMTcgQEAKICNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gbm8tcHJlc3VibWl0LWNo
ZWNrIFRPRE8od2VicnRjOjg5ODIpCiAjZW5kaWYgICAgICAgICAgICAgIC8vIFVOSVRfVEVTVAog
Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNt
YXRoPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdHJpbmc+Ci0KLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZl
cnNpb25zLmgiCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAKICNpbmNsdWRlICJhcGkvdW5pdHMv
ZGF0YV9zaXplLmgiCiAjaW5jbHVkZSAiYXBpL3VuaXRzL3RpbWVfZGVsdGEuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS91bml0cy91bml0X2Jhc2Uu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgZGF0YV9yYXRlX2ltcGwgewotY29u
c3RleHByIGludDY0X3Qga1BsdXNJbmZpbml0eVZhbCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
NjRfdD46Om1heCgpOwotCiBpbmxpbmUgaW50NjRfdCBNaWNyb2JpdHMoY29uc3QgRGF0YVNpemUm
IHNpemUpIHsKICAgY29uc3RleHByIGludDY0X3Qga01heEJlZm9yZUNvbnZlcnNpb24gPQogICAg
ICAgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkgLyA4MDAwMDAwOwpAQCAtNDMs
MTg0ICszOCw2NCBAQCBpbmxpbmUgaW50NjRfdCBNaWNyb2JpdHMoY29uc3QgRGF0YVNpemUmIHNp
emUpIHsKIC8vIERhdGFSYXRlIGlzIGEgY2xhc3MgdGhhdCByZXByZXNlbnRzIGEgZ2l2ZW4gZGF0
YSByYXRlLiBUaGlzIGNhbiBiZSB1c2VkIHRvCiAvLyByZXByZXNlbnQgYmFuZHdpZHRoLCBlbmNv
ZGluZyBiaXRyYXRlLCBldGMuIFRoZSBpbnRlcm5hbCBzdG9yYWdlIGlzIGJpdHMgcGVyCiAvLyBz
ZWNvbmQgKGJwcykuCi1jbGFzcyBEYXRhUmF0ZSB7CitjbGFzcyBEYXRhUmF0ZSBmaW5hbCA6IHB1
YmxpYyBydGNfdW5pdHNfaW1wbDo6UmVsYXRpdmVVbml0PERhdGFSYXRlPiB7CiAgcHVibGljOgog
ICBEYXRhUmF0ZSgpID0gZGVsZXRlOwotICBzdGF0aWMgY29uc3RleHByIERhdGFSYXRlIFplcm8o
KSB7IHJldHVybiBEYXRhUmF0ZSgwKTsgfQotICBzdGF0aWMgY29uc3RleHByIERhdGFSYXRlIElu
ZmluaXR5KCkgewotICAgIHJldHVybiBEYXRhUmF0ZShkYXRhX3JhdGVfaW1wbDo6a1BsdXNJbmZp
bml0eVZhbCk7Ci0gIH0KKyAgc3RhdGljIGNvbnN0ZXhwciBEYXRhUmF0ZSBJbmZpbml0eSgpIHsg
cmV0dXJuIFBsdXNJbmZpbml0eSgpOyB9CiAgIHRlbXBsYXRlIDxpbnQ2NF90IGJwcz4KICAgc3Rh
dGljIGNvbnN0ZXhwciBEYXRhUmF0ZSBCaXRzUGVyU2VjKCkgewotICAgIHN0YXRpY19hc3NlcnQo
YnBzID49IDAsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJwcyA8IGRhdGFfcmF0ZV9pbXBsOjpr
UGx1c0luZmluaXR5VmFsLCAiIik7Ci0gICAgcmV0dXJuIERhdGFSYXRlKGJwcyk7CisgICAgcmV0
dXJuIEZyb21TdGF0aWNWYWx1ZTxicHM+KCk7CiAgIH0KICAgdGVtcGxhdGUgPGludDY0X3Qga2Jw
cz4KICAgc3RhdGljIGNvbnN0ZXhwciBEYXRhUmF0ZSBLaWxvYml0c1BlclNlYygpIHsKLSAgICBz
dGF0aWNfYXNzZXJ0KGticHMgPj0gMCwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoa2JwcyA8IGRh
dGFfcmF0ZV9pbXBsOjprUGx1c0luZmluaXR5VmFsIC8gMTAwMCwgIiIpOwotICAgIHJldHVybiBE
YXRhUmF0ZShrYnBzICogMTAwMCk7CisgICAgcmV0dXJuIEZyb21TdGF0aWNGcmFjdGlvbjxrYnBz
LCAxMDAwPigpOwogICB9Ci0KLSAgdGVtcGxhdGUgPAotICAgICAgdHlwZW5hbWUgVCwKLSAgICAg
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlw
ZSogPSBudWxscHRyPgotICBzdGF0aWMgRGF0YVJhdGUgYnBzKFQgYml0c19wZXJfc2Vjb25kKSB7
Ci0gICAgUlRDX0RDSEVDS19HRShiaXRzX3Blcl9zZWNvbmQsIDApOwotICAgIFJUQ19EQ0hFQ0tf
TFQoYml0c19wZXJfc2Vjb25kLCBkYXRhX3JhdGVfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCk7Ci0g
ICAgcmV0dXJuIERhdGFSYXRlKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90PihiaXRzX3Blcl9z
ZWNvbmQpKTsKLSAgfQotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBlbmFtZSBULAotICAgICAgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9
IG51bGxwdHI+Ci0gIHN0YXRpYyBEYXRhUmF0ZSBrYnBzKFQga2lsb2JpdHNfcGVyX3NlYykgewot
ICAgIFJUQ19EQ0hFQ0tfR0Uoa2lsb2JpdHNfcGVyX3NlYywgMCk7Ci0gICAgUlRDX0RDSEVDS19M
VChraWxvYml0c19wZXJfc2VjLCBkYXRhX3JhdGVfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCAvIDEw
MDApOwotICAgIHJldHVybiBEYXRhUmF0ZTo6YnBzKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90
PihraWxvYml0c19wZXJfc2VjKSAqIDEwMDApOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5n
X3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAgICAgICAgICAgICBudWxscHRyPgotICBz
dGF0aWMgRGF0YVJhdGUgYnBzKFQgYml0c19wZXJfc2Vjb25kKSB7Ci0gICAgaWYgKGJpdHNfcGVy
X3NlY29uZCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpKSB7Ci0gICAgICBy
ZXR1cm4gSW5maW5pdHkoKTsKLSAgICB9IGVsc2UgewotICAgICAgUlRDX0RDSEVDSyghc3RkOjpp
c25hbihiaXRzX3Blcl9zZWNvbmQpKTsKLSAgICAgIFJUQ19EQ0hFQ0tfR0UoYml0c19wZXJfc2Vj
b25kLCAwKTsKLSAgICAgIFJUQ19EQ0hFQ0tfTFQoYml0c19wZXJfc2Vjb25kLCBkYXRhX3JhdGVf
aW1wbDo6a1BsdXNJbmZpbml0eVZhbCk7Ci0gICAgICByZXR1cm4gRGF0YVJhdGUocnRjOjpkY2hl
Y2tlZF9jYXN0PGludDY0X3Q+KGJpdHNfcGVyX3NlY29uZCkpOwotICAgIH0KKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBjb25zdGV4cHIgRGF0YVJhdGUgYnBzKFQgYml0c19wZXJf
c2Vjb25kKSB7CisgICAgcmV0dXJuIEZyb21WYWx1ZShiaXRzX3Blcl9zZWNvbmQpOwogICB9Ci0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBULAotICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlKiA9Ci0gICAgICAgICAg
ICAgICAgbnVsbHB0cj4KLSAgc3RhdGljIERhdGFSYXRlIGticHMoVCBraWxvYml0c19wZXJfc2Vj
KSB7Ci0gICAgcmV0dXJuIERhdGFSYXRlOjpicHMoa2lsb2JpdHNfcGVyX3NlYyAqIDFlMyk7Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgY29uc3RleHByIERhdGFSYXRlIGticHMo
VCBraWxvYml0c19wZXJfc2VjKSB7CisgICAgcmV0dXJuIEZyb21GcmFjdGlvbjwxMDAwPihraWxv
Yml0c19wZXJfc2VjKTsKICAgfQotCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4K
LSAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+
Ojp0eXBlIGJwcygpIGNvbnN0IHsKLSAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOwotICAgIHJl
dHVybiBydGM6OmRjaGVja2VkX2Nhc3Q8VD4oYml0c19wZXJfc2VjXyk7CisgIGNvbnN0ZXhwciBU
IGJwcygpIGNvbnN0IHsKKyAgICByZXR1cm4gVG9WYWx1ZTxUPigpOwogICB9CiAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIGticHMoKSBjb25zdCB7Ci0gICAgUlRDX0RD
SEVDSyhJc0Zpbml0ZSgpKTsKLSAgICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KFVuc2Fm
ZUtpbG9iaXRzUGVyU2VjKCkpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBUPjo6dHlwZSBjb25zdGV4cHIgYnBzKCkgY29uc3Qg
ewotICAgIHJldHVybiBJc0luZmluaXRlKCkgPyBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZp
bml0eSgpIDogYml0c19wZXJfc2VjXzsKLSAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFQ+Ojp0eXBlIGNvbnN0ZXhwciBrYnBzKCkgY29u
c3QgewotICAgIHJldHVybiBicHM8VD4oKSAqIDFlLTM7CisgIFQga2JwcygpIGNvbnN0IHsKKyAg
ICByZXR1cm4gVG9GcmFjdGlvbjwxMDAwLCBUPigpOwogICB9Ci0KICAgY29uc3RleHByIGludDY0
X3QgYnBzX29yKGludDY0X3QgZmFsbGJhY2tfdmFsdWUpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNG
aW5pdGUoKSA/IGJpdHNfcGVyX3NlY18gOiBmYWxsYmFja192YWx1ZTsKKyAgICByZXR1cm4gVG9W
YWx1ZU9yKGZhbGxiYWNrX3ZhbHVlKTsKICAgfQogICBjb25zdGV4cHIgaW50NjRfdCBrYnBzX29y
KGludDY0X3QgZmFsbGJhY2tfdmFsdWUpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNGaW5pdGUoKSA/
IFVuc2FmZUtpbG9iaXRzUGVyU2VjKCkgOiBmYWxsYmFja192YWx1ZTsKLSAgfQotCi0gIGNvbnN0
ZXhwciBib29sIElzWmVybygpIGNvbnN0IHsgcmV0dXJuIGJpdHNfcGVyX3NlY18gPT0gMDsgfQot
ICBjb25zdGV4cHIgYm9vbCBJc0luZmluaXRlKCkgY29uc3QgewotICAgIHJldHVybiBiaXRzX3Bl
cl9zZWNfID09IGRhdGFfcmF0ZV9pbXBsOjprUGx1c0luZmluaXR5VmFsOwotICB9Ci0gIGNvbnN0
ZXhwciBib29sIElzRmluaXRlKCkgY29uc3QgeyByZXR1cm4gIUlzSW5maW5pdGUoKTsgfQotICBE
YXRhUmF0ZSBDbGFtcGVkKERhdGFSYXRlIG1pbl9yYXRlLCBEYXRhUmF0ZSBtYXhfcmF0ZSkgY29u
c3QgewotICAgIHJldHVybiBzdGQ6Om1heChtaW5fcmF0ZSwgc3RkOjptaW4oKnRoaXMsIG1heF9y
YXRlKSk7Ci0gIH0KLSAgdm9pZCBDbGFtcChEYXRhUmF0ZSBtaW5fcmF0ZSwgRGF0YVJhdGUgbWF4
X3JhdGUpIHsKLSAgICAqdGhpcyA9IENsYW1wZWQobWluX3JhdGUsIG1heF9yYXRlKTsKLSAgfQot
ICBEYXRhUmF0ZSBvcGVyYXRvci0oY29uc3QgRGF0YVJhdGUmIG90aGVyKSBjb25zdCB7Ci0gICAg
cmV0dXJuIERhdGFSYXRlOjpicHMoYnBzKCkgLSBvdGhlci5icHMoKSk7Ci0gIH0KLSAgRGF0YVJh
dGUgb3BlcmF0b3IrKGNvbnN0IERhdGFSYXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBE
YXRhUmF0ZTo6YnBzKGJwcygpICsgb3RoZXIuYnBzKCkpOwotICB9Ci0gIERhdGFSYXRlJiBvcGVy
YXRvci09KGNvbnN0IERhdGFSYXRlJiBvdGhlcikgewotICAgICp0aGlzID0gKnRoaXMgLSBvdGhl
cjsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSAgRGF0YVJhdGUmIG9wZXJhdG9yKz0oY29uc3Qg
RGF0YVJhdGUmIG90aGVyKSB7Ci0gICAgKnRoaXMgPSAqdGhpcyArIG90aGVyOwotICAgIHJldHVy
biAqdGhpczsKLSAgfQotICBjb25zdGV4cHIgZG91YmxlIG9wZXJhdG9yLyhjb25zdCBEYXRhUmF0
ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gYnBzPGRvdWJsZT4oKSAvIG90aGVyLmJwczxk
b3VibGU+KCk7Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEYXRhUmF0
ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gYml0c19wZXJfc2VjXyA9PSBvdGhlci5iaXRz
X3Blcl9zZWNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YVJh
dGUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIGJpdHNfcGVyX3NlY18gIT0gb3RoZXIuYml0
c19wZXJfc2VjXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IERhdGFS
YXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBiaXRzX3Blcl9zZWNfIDw9IG90aGVyLmJp
dHNfcGVyX3NlY187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBEYXRh
UmF0ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gYml0c19wZXJfc2VjXyA+PSBvdGhlci5i
aXRzX3Blcl9zZWNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBEYXRh
UmF0ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gYml0c19wZXJfc2VjXyA+IG90aGVyLmJp
dHNfcGVyX3NlY187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IERhdGFS
YXRlJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBiaXRzX3Blcl9zZWNfIDwgb3RoZXIuYml0
c19wZXJfc2VjXzsKKyAgICByZXR1cm4gVG9GcmFjdGlvbk9yPDEwMDA+KGZhbGxiYWNrX3ZhbHVl
KTsKICAgfQogCiAgcHJpdmF0ZToKICAgLy8gQml0cyBwZXIgc2Vjb25kIHVzZWQgaW50ZXJuYWxs
eSB0byBzaW1wbGlmeSBkZWJ1Z2dpbmcgYnkgbWFraW5nIHRoZSB2YWx1ZQogICAvLyBtb3JlIHJl
Y29nbml6YWJsZS4KLSAgZXhwbGljaXQgY29uc3RleHByIERhdGFSYXRlKGludDY0X3QgYml0c19w
ZXJfc2Vjb25kKQotICAgICAgOiBiaXRzX3Blcl9zZWNfKGJpdHNfcGVyX3NlY29uZCkge30KLSAg
Y29uc3RleHByIGludDY0X3QgVW5zYWZlS2lsb2JpdHNQZXJTZWMoKSBjb25zdCB7Ci0gICAgcmV0
dXJuIChiaXRzX3Blcl9zZWNfICsgNTAwKSAvIDEwMDA7Ci0gIH0KLSAgaW50NjRfdCBiaXRzX3Bl
cl9zZWNfOworICBmcmllbmQgY2xhc3MgcnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlPERhdGFSYXRl
PjsKKyAgdXNpbmcgUmVsYXRpdmVVbml0OjpSZWxhdGl2ZVVuaXQ7CisgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBvbmVfc2lkZWQgPSB0cnVlOwogfTsKIAotaW5saW5lIERhdGFSYXRlIG9wZXJhdG9y
Kihjb25zdCBEYXRhUmF0ZSYgcmF0ZSwgY29uc3QgZG91YmxlJiBzY2FsYXIpIHsKLSAgcmV0dXJu
IERhdGFSYXRlOjpicHMoc3RkOjpyb3VuZChyYXRlLmJwcygpICogc2NhbGFyKSk7Ci19Ci1pbmxp
bmUgRGF0YVJhdGUgb3BlcmF0b3IqKGNvbnN0IGRvdWJsZSYgc2NhbGFyLCBjb25zdCBEYXRhUmF0
ZSYgcmF0ZSkgewotICByZXR1cm4gcmF0ZSAqIHNjYWxhcjsKLX0KLWlubGluZSBEYXRhUmF0ZSBv
cGVyYXRvciooY29uc3QgRGF0YVJhdGUmIHJhdGUsIGNvbnN0IGludDY0X3QmIHNjYWxhcikgewot
ICByZXR1cm4gRGF0YVJhdGU6OmJwcyhyYXRlLmJwcygpICogc2NhbGFyKTsKLX0KLWlubGluZSBE
YXRhUmF0ZSBvcGVyYXRvciooY29uc3QgaW50NjRfdCYgc2NhbGFyLCBjb25zdCBEYXRhUmF0ZSYg
cmF0ZSkgewotICByZXR1cm4gcmF0ZSAqIHNjYWxhcjsKLX0KLWlubGluZSBEYXRhUmF0ZSBvcGVy
YXRvciooY29uc3QgRGF0YVJhdGUmIHJhdGUsIGNvbnN0IGludDMyX3QmIHNjYWxhcikgewotICBy
ZXR1cm4gRGF0YVJhdGU6OmJwcyhyYXRlLmJwcygpICogc2NhbGFyKTsKLX0KLWlubGluZSBEYXRh
UmF0ZSBvcGVyYXRvciooY29uc3QgaW50MzJfdCYgc2NhbGFyLCBjb25zdCBEYXRhUmF0ZSYgcmF0
ZSkgewotICByZXR1cm4gcmF0ZSAqIHNjYWxhcjsKLX0KLQotaW5saW5lIERhdGFSYXRlIG9wZXJh
dG9yLyhjb25zdCBEYXRhU2l6ZSYgc2l6ZSwgY29uc3QgVGltZURlbHRhJiBkdXJhdGlvbikgewor
aW5saW5lIERhdGFSYXRlIG9wZXJhdG9yLyhjb25zdCBEYXRhU2l6ZSBzaXplLCBjb25zdCBUaW1l
RGVsdGEgZHVyYXRpb24pIHsKICAgcmV0dXJuIERhdGFSYXRlOjpicHMoZGF0YV9yYXRlX2ltcGw6
Ok1pY3JvYml0cyhzaXplKSAvIGR1cmF0aW9uLnVzKCkpOwogfQotaW5saW5lIFRpbWVEZWx0YSBv
cGVyYXRvci8oY29uc3QgRGF0YVNpemUmIHNpemUsIGNvbnN0IERhdGFSYXRlJiByYXRlKSB7Citp
bmxpbmUgVGltZURlbHRhIG9wZXJhdG9yLyhjb25zdCBEYXRhU2l6ZSBzaXplLCBjb25zdCBEYXRh
UmF0ZSByYXRlKSB7CiAgIHJldHVybiBUaW1lRGVsdGE6OnVzKGRhdGFfcmF0ZV9pbXBsOjpNaWNy
b2JpdHMoc2l6ZSkgLyByYXRlLmJwcygpKTsKIH0KLWlubGluZSBEYXRhU2l6ZSBvcGVyYXRvcioo
Y29uc3QgRGF0YVJhdGUmIHJhdGUsIGNvbnN0IFRpbWVEZWx0YSYgZHVyYXRpb24pIHsKK2lubGlu
ZSBEYXRhU2l6ZSBvcGVyYXRvciooY29uc3QgRGF0YVJhdGUgcmF0ZSwgY29uc3QgVGltZURlbHRh
IGR1cmF0aW9uKSB7CiAgIGludDY0X3QgbWljcm9iaXRzID0gcmF0ZS5icHMoKSAqIGR1cmF0aW9u
LnVzKCk7CiAgIHJldHVybiBEYXRhU2l6ZTo6Ynl0ZXMoKG1pY3JvYml0cyArIDQwMDAwMDApIC8g
ODAwMDAwMCk7CiB9Ci1pbmxpbmUgRGF0YVNpemUgb3BlcmF0b3IqKGNvbnN0IFRpbWVEZWx0YSYg
ZHVyYXRpb24sIGNvbnN0IERhdGFSYXRlJiByYXRlKSB7CitpbmxpbmUgRGF0YVNpemUgb3BlcmF0
b3IqKGNvbnN0IFRpbWVEZWx0YSBkdXJhdGlvbiwgY29uc3QgRGF0YVJhdGUgcmF0ZSkgewogICBy
ZXR1cm4gcmF0ZSAqIGR1cmF0aW9uOwogfQogCi1zdGQ6OnN0cmluZyBUb1N0cmluZyhjb25zdCBE
YXRhUmF0ZSYgdmFsdWUpOworc3RkOjpzdHJpbmcgVG9TdHJpbmcoRGF0YVJhdGUgdmFsdWUpOwog
CiAjaWZkZWYgVU5JVF9URVNUCiBpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KCAgLy8g
bm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0YV9yYXRlX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3VuaXRzL2RhdGFfcmF0ZV91bml0dGVzdC5jYwppbmRleCA4ZTViNjYwNTk0OGZkODhmZGE1MTUz
M2MxNWVlNTMxZThjOWIzZDliLi45OTYyOThjMWZjZWU4YmZmNjdmMGNmNzhkZDM1MjQxYjE2NzIx
YWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdW5pdHMvZGF0YV9yYXRlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3JhdGVfdW5pdHRlc3QuY2MK
QEAgLTEzMCw2ICsxMzAsOSBAQCBURVNUKERhdGFSYXRlVGVzdCwgTWF0aE9wZXJhdGlvbnMpIHsK
IAogICBFWFBFQ1RfRVEocmF0ZV9hIC8gcmF0ZV9iLCBzdGF0aWNfY2FzdDxkb3VibGU+KGtWYWx1
ZUEpIC8ga1ZhbHVlQik7CiAKKyAgRVhQRUNUX0VRKChyYXRlX2EgLyAxMCkuYnBzKCksIGtWYWx1
ZUEgLyAxMCk7CisgIEVYUEVDVF9ORUFSKChyYXRlX2EgLyAwLjUpLmJwcygpLCBrVmFsdWVBICog
MiwgMSk7CisKICAgRGF0YVJhdGUgbXV0YWJsZV9yYXRlID0gRGF0YVJhdGU6OmJwcyhrVmFsdWVB
KTsKICAgbXV0YWJsZV9yYXRlICs9IHJhdGVfYjsKICAgRVhQRUNUX0VRKG11dGFibGVfcmF0ZS5i
cHMoKSwga1ZhbHVlQSArIGtWYWx1ZUIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfc2l6ZS5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy9kYXRhX3NpemUuY2MK
aW5kZXggNDQ0MGY4OWQwM2MyZmY4NGExYjUwY2ZhYmFlNDNmMWU5NzlhOWQ0ZS4uOGE4Nzc4NmM3
N2EzZTk3ZWFiNDMzYjk0YWI2NWFjY2ExMTc1ODhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfc2l6ZS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvZGF0
YV9zaXplLmNjCkBAIC0xNCw3ICsxNCw3IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1zdGQ6
OnN0cmluZyBUb1N0cmluZyhjb25zdCBEYXRhU2l6ZSYgdmFsdWUpIHsKK3N0ZDo6c3RyaW5nIFRv
U3RyaW5nKERhdGFTaXplIHZhbHVlKSB7CiAgIGNoYXIgYnVmWzY0XTsKICAgcnRjOjpTaW1wbGVT
dHJpbmdCdWlsZGVyIHNiKGJ1Zik7CiAgIGlmICh2YWx1ZS5Jc0luZmluaXRlKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0
cy9kYXRhX3NpemUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS91bml0cy9kYXRhX3NpemUuaAppbmRleCA4OTU4YjI0Njk3MzBjZjIwMGVmYTQ4MjRhODhl
ODRjNmZiNGZmYzY1Li5iNGNiYjY1MmYzYzkwN2MwOTcxOTZlYjVmNzIyZTk2NDNhMTlmMzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dW5pdHMvZGF0YV9zaXplLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3VuaXRzL2RhdGFfc2l6ZS5oCkBAIC0xNSwxNDMgKzE1LDQ0IEBACiAjaW5j
bHVkZSA8b3N0cmVhbT4gIC8vIG5vLXByZXN1Ym1pdC1jaGVjayBUT0RPKHdlYnJ0Yzo4OTgyKQog
I2VuZGlmICAgICAgICAgICAgICAvLyBVTklUX1RFU1QKIAotI2luY2x1ZGUgPHN0ZGludC5oPgot
I2luY2x1ZGUgPGNtYXRoPgotI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdHJpbmc+CiAj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CiAKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNw
YWNlIGRhdGFfc2l6ZV9pbXBsIHsKLWNvbnN0ZXhwciBpbnQ2NF90IGtQbHVzSW5maW5pdHlWYWwg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsKLX0gIC8vIG5hbWVzcGFjZSBk
YXRhX3NpemVfaW1wbAotCiAvLyBEYXRhU2l6ZSBpcyBhIGNsYXNzIHJlcHJlc2V0aW5nIGEgY291
bnQgb2YgYnl0ZXMuCi1jbGFzcyBEYXRhU2l6ZSB7CitjbGFzcyBEYXRhU2l6ZSBmaW5hbCA6IHB1
YmxpYyBydGNfdW5pdHNfaW1wbDo6UmVsYXRpdmVVbml0PERhdGFTaXplPiB7CiAgcHVibGljOgog
ICBEYXRhU2l6ZSgpID0gZGVsZXRlOwotICBzdGF0aWMgY29uc3RleHByIERhdGFTaXplIFplcm8o
KSB7IHJldHVybiBEYXRhU2l6ZSgwKTsgfQotICBzdGF0aWMgY29uc3RleHByIERhdGFTaXplIElu
ZmluaXR5KCkgewotICAgIHJldHVybiBEYXRhU2l6ZShkYXRhX3NpemVfaW1wbDo6a1BsdXNJbmZp
bml0eVZhbCk7Ci0gIH0KKyAgc3RhdGljIGNvbnN0ZXhwciBEYXRhU2l6ZSBJbmZpbml0eSgpIHsg
cmV0dXJuIFBsdXNJbmZpbml0eSgpOyB9CiAgIHRlbXBsYXRlIDxpbnQ2NF90IGJ5dGVzPgogICBz
dGF0aWMgY29uc3RleHByIERhdGFTaXplIEJ5dGVzKCkgewotICAgIHN0YXRpY19hc3NlcnQoYnl0
ZXMgPj0gMCwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoYnl0ZXMgPCBkYXRhX3NpemVfaW1wbDo6
a1BsdXNJbmZpbml0eVZhbCwgIiIpOwotICAgIHJldHVybiBEYXRhU2l6ZShieXRlcyk7CisgICAg
cmV0dXJuIEZyb21TdGF0aWNWYWx1ZTxieXRlcz4oKTsKICAgfQogCiAgIHRlbXBsYXRlIDwKICAg
ICAgIHR5cGVuYW1lIFQsCi0gICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2lu
dGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgc3RhdGljIERhdGFTaXplIGJ5
dGVzKFQgYnl0ZXMpIHsKLSAgICBSVENfRENIRUNLX0dFKGJ5dGVzLCAwKTsKLSAgICBSVENfRENI
RUNLX0xUKGJ5dGVzLCBkYXRhX3NpemVfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCk7Ci0gICAgcmV0
dXJuIERhdGFTaXplKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90PihieXRlcykpOwotICB9Ci0K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAgICAg
ICAgICAgICBudWxscHRyPgorICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19h
cml0aG1ldGljPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KICAgc3RhdGljIERhdGFTaXpl
IGJ5dGVzKFQgYnl0ZXMpIHsKLSAgICBpZiAoYnl0ZXMgPT0gc3RkOjpudW1lcmljX2xpbWl0czxU
Pjo6aW5maW5pdHkoKSkgewotICAgICAgcmV0dXJuIEluZmluaXR5KCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgIFJUQ19EQ0hFQ0soIXN0ZDo6aXNuYW4oYnl0ZXMpKTsKLSAgICAgIFJUQ19EQ0hFQ0tf
R0UoYnl0ZXMsIDApOwotICAgICAgUlRDX0RDSEVDS19MVChieXRlcywgZGF0YV9zaXplX2ltcGw6
OmtQbHVzSW5maW5pdHlWYWwpOwotICAgICAgcmV0dXJuIERhdGFTaXplKHJ0Yzo6ZGNoZWNrZWRf
Y2FzdDxpbnQ2NF90PihieXRlcykpOwotICAgIH0KKyAgICByZXR1cm4gRnJvbVZhbHVlKGJ5dGVz
KTsKICAgfQotCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIGJ5dGVz
KCkgY29uc3QgewotICAgIFJUQ19EQ0hFQ0soSXNGaW5pdGUoKSk7Ci0gICAgcmV0dXJuIHJ0Yzo6
ZGNoZWNrZWRfY2FzdDxUPihieXRlc18pOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci0gIGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3Bv
aW50PFQ+Ojp2YWx1ZSwgVD46OnR5cGUKLSAgYnl0ZXMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIElz
SW5maW5pdGUoKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkgOiBieXRlc187
CisgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUs
IFQ+Ojp0eXBlIGJ5dGVzKCkgY29uc3QgeworICAgIHJldHVybiBUb1ZhbHVlPFQ+KCk7CiAgIH0K
IAogICBjb25zdGV4cHIgaW50NjRfdCBieXRlc19vcihpbnQ2NF90IGZhbGxiYWNrX3ZhbHVlKSBj
b25zdCB7Ci0gICAgcmV0dXJuIElzRmluaXRlKCkgPyBieXRlc18gOiBmYWxsYmFja192YWx1ZTsK
LSAgfQotCi0gIGNvbnN0ZXhwciBib29sIElzWmVybygpIGNvbnN0IHsgcmV0dXJuIGJ5dGVzXyA9
PSAwOyB9Ci0gIGNvbnN0ZXhwciBib29sIElzSW5maW5pdGUoKSBjb25zdCB7Ci0gICAgcmV0dXJu
IGJ5dGVzXyA9PSBkYXRhX3NpemVfaW1wbDo6a1BsdXNJbmZpbml0eVZhbDsKLSAgfQotICBjb25z
dGV4cHIgYm9vbCBJc0Zpbml0ZSgpIGNvbnN0IHsgcmV0dXJuICFJc0luZmluaXRlKCk7IH0KLSAg
RGF0YVNpemUgb3BlcmF0b3ItKGNvbnN0IERhdGFTaXplJiBvdGhlcikgY29uc3QgewotICAgIHJl
dHVybiBEYXRhU2l6ZTo6Ynl0ZXMoYnl0ZXMoKSAtIG90aGVyLmJ5dGVzKCkpOwotICB9Ci0gIERh
dGFTaXplIG9wZXJhdG9yKyhjb25zdCBEYXRhU2l6ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1
cm4gRGF0YVNpemU6OmJ5dGVzKGJ5dGVzKCkgKyBvdGhlci5ieXRlcygpKTsKLSAgfQotICBEYXRh
U2l6ZSYgb3BlcmF0b3ItPShjb25zdCBEYXRhU2l6ZSYgb3RoZXIpIHsKLSAgICAqdGhpcyA9ICp0
aGlzIC0gb3RoZXI7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0gIERhdGFTaXplJiBvcGVyYXRv
cis9KGNvbnN0IERhdGFTaXplJiBvdGhlcikgewotICAgICp0aGlzID0gKnRoaXMgKyBvdGhlcjsK
LSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSAgY29uc3RleHByIGRvdWJsZSBvcGVyYXRvci8oY29u
c3QgRGF0YVNpemUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIGJ5dGVzPGRvdWJsZT4oKSAv
IG90aGVyLmJ5dGVzPGRvdWJsZT4oKTsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IERhdGFTaXplJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBieXRlc18gPT0gb3Ro
ZXIuYnl0ZXNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YVNp
emUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIGJ5dGVzXyAhPSBvdGhlci5ieXRlc187Ci0g
IH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBEYXRhU2l6ZSYgb3RoZXIpIGNv
bnN0IHsKLSAgICByZXR1cm4gYnl0ZXNfIDw9IG90aGVyLmJ5dGVzXzsKLSAgfQotICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IERhdGFTaXplJiBvdGhlcikgY29uc3QgewotICAgIHJl
dHVybiBieXRlc18gPj0gb3RoZXIuYnl0ZXNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPihjb25zdCBEYXRhU2l6ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gYnl0ZXNfID4g
b3RoZXIuYnl0ZXNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBEYXRh
U2l6ZSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gYnl0ZXNfIDwgb3RoZXIuYnl0ZXNfOwor
ICAgIHJldHVybiBUb1ZhbHVlT3IoZmFsbGJhY2tfdmFsdWUpOwogICB9CiAKICBwcml2YXRlOgot
ICBleHBsaWNpdCBjb25zdGV4cHIgRGF0YVNpemUoaW50NjRfdCBieXRlcykgOiBieXRlc18oYnl0
ZXMpIHt9Ci0gIGludDY0X3QgYnl0ZXNfOworICBmcmllbmQgY2xhc3MgcnRjX3VuaXRzX2ltcGw6
OlVuaXRCYXNlPERhdGFTaXplPjsKKyAgdXNpbmcgUmVsYXRpdmVVbml0OjpSZWxhdGl2ZVVuaXQ7
CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBvbmVfc2lkZWQgPSB0cnVlOwogfTsKIAotaW5saW5l
IERhdGFTaXplIG9wZXJhdG9yKihjb25zdCBEYXRhU2l6ZSYgc2l6ZSwgY29uc3QgZG91YmxlJiBz
Y2FsYXIpIHsKLSAgcmV0dXJuIERhdGFTaXplOjpieXRlcyhzdGQ6OnJvdW5kKHNpemUuYnl0ZXMo
KSAqIHNjYWxhcikpOwotfQotaW5saW5lIERhdGFTaXplIG9wZXJhdG9yKihjb25zdCBkb3VibGUm
IHNjYWxhciwgY29uc3QgRGF0YVNpemUmIHNpemUpIHsKLSAgcmV0dXJuIHNpemUgKiBzY2FsYXI7
Ci19Ci1pbmxpbmUgRGF0YVNpemUgb3BlcmF0b3IqKGNvbnN0IERhdGFTaXplJiBzaXplLCBjb25z
dCBpbnQ2NF90JiBzY2FsYXIpIHsKLSAgcmV0dXJuIERhdGFTaXplOjpieXRlcyhzaXplLmJ5dGVz
KCkgKiBzY2FsYXIpOwotfQotaW5saW5lIERhdGFTaXplIG9wZXJhdG9yKihjb25zdCBpbnQ2NF90
JiBzY2FsYXIsIGNvbnN0IERhdGFTaXplJiBzaXplKSB7Ci0gIHJldHVybiBzaXplICogc2NhbGFy
OwotfQotaW5saW5lIERhdGFTaXplIG9wZXJhdG9yKihjb25zdCBEYXRhU2l6ZSYgc2l6ZSwgY29u
c3QgaW50MzJfdCYgc2NhbGFyKSB7Ci0gIHJldHVybiBEYXRhU2l6ZTo6Ynl0ZXMoc2l6ZS5ieXRl
cygpICogc2NhbGFyKTsKLX0KLWlubGluZSBEYXRhU2l6ZSBvcGVyYXRvciooY29uc3QgaW50MzJf
dCYgc2NhbGFyLCBjb25zdCBEYXRhU2l6ZSYgc2l6ZSkgewotICByZXR1cm4gc2l6ZSAqIHNjYWxh
cjsKLX0KLWlubGluZSBEYXRhU2l6ZSBvcGVyYXRvci8oY29uc3QgRGF0YVNpemUmIHNpemUsIGNv
bnN0IGludDY0X3QmIHNjYWxhcikgewotICByZXR1cm4gRGF0YVNpemU6OmJ5dGVzKHNpemUuYnl0
ZXMoKSAvIHNjYWxhcik7Ci19Ci0KLXN0ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IERhdGFTaXpl
JiB2YWx1ZSk7CitzdGQ6OnN0cmluZyBUb1N0cmluZyhEYXRhU2l6ZSB2YWx1ZSk7CiAKICNpZmRl
ZiBVTklUX1RFU1QKIGlubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoICAvLyBuby1wcmVz
dWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lX2RlbHRhLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVs
dGEuY2MKaW5kZXggZDM4Mzg3YTU2NjlhZWU0Yjk1MmFkY2NjYTZkODg0YmZlZTdiYzEzYy4uZjkw
NDUxYjQyOWE3YTBiMWQ5OWQzYmE5NjhjM2Q2NjE1Y2JhZDkxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGEu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Vu
aXRzL3RpbWVfZGVsdGEuY2MKQEAgLTE0LDcgKzE0LDcgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKLXN0ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IFRpbWVEZWx0YSYgdmFsdWUpIHsKK3N0ZDo6
c3RyaW5nIFRvU3RyaW5nKFRpbWVEZWx0YSB2YWx1ZSkgewogICBjaGFyIGJ1Zls2NF07CiAgIHJ0
Yzo6U2ltcGxlU3RyaW5nQnVpbGRlciBzYihidWYpOwogICBpZiAodmFsdWUuSXNQbHVzSW5maW5p
dHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lX2RlbHRhLmgKaW5kZXggZWMzNjQxNzJhYTE4
ZGYzYTg0ZmNjZGNhZmExZmZhYWY5MmNkN2RmZC4uNjQ1ODM2OTg5MzcxMjBmOTRlMmY2MTEzZGQ2
ODUyY2JjOTI0ZGIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3VuaXRzL3RpbWVfZGVsdGEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZV9kZWx0YS5oCkBAIC0xNSwy
MSArMTUsMTMgQEAKICNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gbm8tcHJlc3VibWl0LWNoZWNrIFRP
RE8od2VicnRjOjg5ODIpCiAjZW5kaWYgICAgICAgICAgICAgIC8vIFVOSVRfVEVTVAogCi0jaW5j
bHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KLSNp
bmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbnVt
ZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3VuaXRzL3VuaXRf
YmFzZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLW5hbWVzcGFjZSB0aW1lZGVsdGFfaW1wbCB7
Ci1jb25zdGV4cHIgaW50NjRfdCBrUGx1c0luZmluaXR5VmFsID0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWF4KCk7Ci1jb25zdGV4cHIgaW50NjRfdCBrTWludXNJbmZpbml0eVZhbCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpOwotfSAgLy8gbmFtZXNwYWNlIHRp
bWVkZWx0YV9pbXBsCi0KIC8vIFRpbWVEZWx0YSByZXByZXNlbnRzIHRoZSBkaWZmZXJlbmNlIGJl
dHdlZW4gdHdvIHRpbWVzdGFtcHMuIENvbW1vbmx5IHRoaXMgY2FuCiAvLyBiZSBhIGR1cmF0aW9u
LiBIb3dldmVyIHNpbmNlIHR3byBUaW1lc3RhbXBzIGFyZSBub3QgZ3VhcmFudGVlZCB0byBoYXZl
IHRoZQogLy8gc2FtZSBlcG9jaCAodGhleSBtaWdodCBjb21lIGZyb20gZGlmZmVyZW50IGNvbXB1
dGVycywgbWFraW5nIGV4YWN0CkBAIC0zNywyNDUgKzI5LDY5IEBAIGNvbnN0ZXhwciBpbnQ2NF90
IGtNaW51c0luZmluaXR5VmFsID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCk7
CiAvLyB1bmRlZmluZWQuIFRvIHNpbXBsaWZ5IHVzYWdlLCBpdCBjYW4gYmUgY29uc3RydWN0ZWQg
YW5kIGNvbnZlcnRlZCB0bwogLy8gZGlmZmVyZW50IHVuaXRzLCBzcGVjaWZpY2FsbHkgc2Vjb25k
cyAocyksIG1pbGxpc2Vjb25kcyAobXMpIGFuZAogLy8gbWljcm9zZWNvbmRzICh1cykuCi1jbGFz
cyBUaW1lRGVsdGEgeworY2xhc3MgVGltZURlbHRhIGZpbmFsIDogcHVibGljIHJ0Y191bml0c19p
bXBsOjpSZWxhdGl2ZVVuaXQ8VGltZURlbHRhPiB7CiAgcHVibGljOgogICBUaW1lRGVsdGEoKSA9
IGRlbGV0ZTsKLSAgc3RhdGljIGNvbnN0ZXhwciBUaW1lRGVsdGEgWmVybygpIHsgcmV0dXJuIFRp
bWVEZWx0YSgwKTsgfQotICBzdGF0aWMgY29uc3RleHByIFRpbWVEZWx0YSBQbHVzSW5maW5pdHko
KSB7Ci0gICAgcmV0dXJuIFRpbWVEZWx0YSh0aW1lZGVsdGFfaW1wbDo6a1BsdXNJbmZpbml0eVZh
bCk7Ci0gIH0KLSAgc3RhdGljIGNvbnN0ZXhwciBUaW1lRGVsdGEgTWludXNJbmZpbml0eSgpIHsK
LSAgICByZXR1cm4gVGltZURlbHRhKHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbCk7
Ci0gIH0KICAgdGVtcGxhdGUgPGludDY0X3Qgc2Vjb25kcz4KICAgc3RhdGljIGNvbnN0ZXhwciBU
aW1lRGVsdGEgU2Vjb25kcygpIHsKLSAgICBzdGF0aWNfYXNzZXJ0KHNlY29uZHMgPiB0aW1lZGVs
dGFfaW1wbDo6a01pbnVzSW5maW5pdHlWYWwgLyAxMDAwMDAwLCAiIik7Ci0gICAgc3RhdGljX2Fz
c2VydChzZWNvbmRzIDwgdGltZWRlbHRhX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwgLyAxMDAwMDAw
LCAiIik7Ci0gICAgcmV0dXJuIFRpbWVEZWx0YShzZWNvbmRzICogMTAwMDAwMCk7CisgICAgcmV0
dXJuIEZyb21TdGF0aWNGcmFjdGlvbjxzZWNvbmRzLCAxMDAwMDAwPigpOwogICB9CiAgIHRlbXBs
YXRlIDxpbnQ2NF90IG1zPgogICBzdGF0aWMgY29uc3RleHByIFRpbWVEZWx0YSBNaWxsaXMoKSB7
Ci0gICAgc3RhdGljX2Fzc2VydChtcyA+IHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZh
bCAvIDEwMDAsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KG1zIDwgdGltZWRlbHRhX2ltcGw6OmtQ
bHVzSW5maW5pdHlWYWwgLyAxMDAwLCAiIik7Ci0gICAgcmV0dXJuIFRpbWVEZWx0YShtcyAqIDEw
MDApOworICAgIHJldHVybiBGcm9tU3RhdGljRnJhY3Rpb248bXMsIDEwMDA+KCk7CiAgIH0KICAg
dGVtcGxhdGUgPGludDY0X3QgdXM+CiAgIHN0YXRpYyBjb25zdGV4cHIgVGltZURlbHRhIE1pY3Jv
cygpIHsKLSAgICBzdGF0aWNfYXNzZXJ0KHVzID4gdGltZWRlbHRhX2ltcGw6OmtNaW51c0luZmlu
aXR5VmFsLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydCh1cyA8IHRpbWVkZWx0YV9pbXBsOjprUGx1
c0luZmluaXR5VmFsLCAiIik7Ci0gICAgcmV0dXJuIFRpbWVEZWx0YSh1cyk7Ci0gIH0KLQotICB0
ZW1wbGF0ZSA8Ci0gICAgICB0eXBlbmFtZSBULAotICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gIHN0YXRp
YyBUaW1lRGVsdGEgc2Vjb25kcyhUIHNlY29uZHMpIHsKLSAgICBSVENfRENIRUNLX0dUKHNlY29u
ZHMsIHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbCAvIDEwMDAwMDApOwotICAgIFJU
Q19EQ0hFQ0tfTFQoc2Vjb25kcywgdGltZWRlbHRhX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwgLyAx
MDAwMDAwKTsKLSAgICByZXR1cm4gVGltZURlbHRhKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2NF90
PihzZWNvbmRzKSAqIDEwMDAwMDApOworICAgIHJldHVybiBGcm9tU3RhdGljVmFsdWU8dXM+KCk7
CiAgIH0KLSAgdGVtcGxhdGUgPAotICAgICAgdHlwZW5hbWUgVCwKLSAgICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRy
PgotICBzdGF0aWMgVGltZURlbHRhIG1zKFQgbWlsbGlzZWNvbmRzKSB7Ci0gICAgUlRDX0RDSEVD
S19HVChtaWxsaXNlY29uZHMsIHRpbWVkZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbCAvIDEw
MDApOwotICAgIFJUQ19EQ0hFQ0tfTFQobWlsbGlzZWNvbmRzLCB0aW1lZGVsdGFfaW1wbDo6a1Bs
dXNJbmZpbml0eVZhbCAvIDEwMDApOwotICAgIHJldHVybiBUaW1lRGVsdGEocnRjOjpkY2hlY2tl
ZF9jYXN0PGludDY0X3Q+KG1pbGxpc2Vjb25kcykgKiAxMDAwKTsKLSAgfQotICB0ZW1wbGF0ZSA8
Ci0gICAgICB0eXBlbmFtZSBULAotICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gIHN0YXRpYyBUaW1lRGVs
dGEgdXMoVCBtaWNyb3NlY29uZHMpIHsKLSAgICBSVENfRENIRUNLX0dUKG1pY3Jvc2Vjb25kcywg
dGltZWRlbHRhX2ltcGw6OmtNaW51c0luZmluaXR5VmFsKTsKLSAgICBSVENfRENIRUNLX0xUKG1p
Y3Jvc2Vjb25kcywgdGltZWRlbHRhX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwpOwotICAgIHJldHVy
biBUaW1lRGVsdGEocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KG1pY3Jvc2Vjb25kcykpOwot
ICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAg
ICAgICAgICAgICAgICBudWxscHRyPgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgc3RhdGlj
IFRpbWVEZWx0YSBzZWNvbmRzKFQgc2Vjb25kcykgewotICAgIHJldHVybiBUaW1lRGVsdGE6OnVz
KHNlY29uZHMgKiAxZTYpOworICAgIHJldHVybiBGcm9tRnJhY3Rpb248MTAwMDAwMD4oc2Vjb25k
cyk7CiAgIH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0K
LSAgICAgICAgICAgICAgICBudWxscHRyPgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgc3Rh
dGljIFRpbWVEZWx0YSBtcyhUIG1pbGxpc2Vjb25kcykgewotICAgIHJldHVybiBUaW1lRGVsdGE6
OnVzKG1pbGxpc2Vjb25kcyAqIDFlMyk7CisgICAgcmV0dXJuIEZyb21GcmFjdGlvbjwxMDAwPiht
aWxsaXNlY29uZHMpOwogICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBULAotICAgICAgICAgICAg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+
Ojp0eXBlKiA9Ci0gICAgICAgICAgICAgICAgbnVsbHB0cj4KKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIHN0YXRpYyBUaW1lRGVsdGEgdXMoVCBtaWNyb3NlY29uZHMpIHsKLSAgICBpZiAobWlj
cm9zZWNvbmRzID09IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkpIHsKLSAgICAg
IHJldHVybiBQbHVzSW5maW5pdHkoKTsKLSAgICB9IGVsc2UgaWYgKG1pY3Jvc2Vjb25kcyA9PSAt
c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKSkgewotICAgICAgcmV0dXJuIE1pbnVz
SW5maW5pdHkoKTsKLSAgICB9IGVsc2UgewotICAgICAgUlRDX0RDSEVDSyghc3RkOjppc25hbiht
aWNyb3NlY29uZHMpKTsKLSAgICAgIFJUQ19EQ0hFQ0tfR1QobWljcm9zZWNvbmRzLCB0aW1lZGVs
dGFfaW1wbDo6a01pbnVzSW5maW5pdHlWYWwpOwotICAgICAgUlRDX0RDSEVDS19MVChtaWNyb3Nl
Y29uZHMsIHRpbWVkZWx0YV9pbXBsOjprUGx1c0luZmluaXR5VmFsKTsKLSAgICAgIHJldHVybiBU
aW1lRGVsdGEocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KG1pY3Jvc2Vjb25kcykpOwotICAg
IH0KKyAgICByZXR1cm4gRnJvbVZhbHVlKG1pY3Jvc2Vjb25kcyk7CiAgIH0KLQogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+Ci0gIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlwZSBzZWNvbmRzKCkgY29uc3QgewotICAgIFJU
Q19EQ0hFQ0soSXNGaW5pdGUoKSk7Ci0gICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihV
bnNhZmVTZWNvbmRzKCkpOworICBUIHNlY29uZHMoKSBjb25zdCB7CisgICAgcmV0dXJuIFRvRnJh
Y3Rpb248MTAwMDAwMCwgVD4oKTsKICAgfQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludDY0
X3Q+Ci0gIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVl
LCBUPjo6dHlwZSBtcygpIGNvbnN0IHsKLSAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOwotICAg
IHJldHVybiBydGM6OmRjaGVja2VkX2Nhc3Q8VD4oVW5zYWZlTWlsbGlzKCkpOworICBUIG1zKCkg
Y29uc3QgeworICAgIHJldHVybiBUb0ZyYWN0aW9uPDEwMDAsIFQ+KCk7CiAgIH0KICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQgPSBpbnQ2NF90PgotICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVD46OnR5cGUgdXMoKSBjb25zdCB7Ci0gICAgUlRDX0RD
SEVDSyhJc0Zpbml0ZSgpKTsKLSAgICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KG1pY3Jv
c2Vjb25kc18pOworICBUIHVzKCkgY29uc3QgeworICAgIHJldHVybiBUb1ZhbHVlPFQ+KCk7CiAg
IH0KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBpbnQ2NF90PgotICB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVD46OnR5cGUgbnMoKSBjb25zdCB7
Ci0gICAgUlRDX0RDSEVDS19HRSh1cygpLCBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSAv
IDEwMDApOwotICAgIFJUQ19EQ0hFQ0tfTEUodXMoKSwgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6
bWF4KCkgLyAxMDAwKTsKLSAgICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+KHVzKCkgKiAx
MDAwKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBjb25zdGV4cHIgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0
eXBlCi0gIHNlY29uZHMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHVzPFQ+KCkgKiAxZS02OwotICB9
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCi0gIG1zKCkg
Y29uc3QgewotICAgIHJldHVybiB1czxUPigpICogMWUtMzsKLSAgfQotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLSAgY29uc3RleHByIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxv
YXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZQotICB1cygpIGNvbnN0IHsKLSAgICByZXR1
cm4gSXNQbHVzSW5maW5pdHkoKQotICAgICAgICAgICAgICAgPyBzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjppbmZpbml0eSgpCi0gICAgICAgICAgICAgICA6IElzTWludXNJbmZpbml0eSgpID8gLXN0
ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBtaWNyb3NlY29uZHNfOwotICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19w
b2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCi0gIG5zKCkgY29uc3QgewotICAgIHJldHVybiB1czxU
PigpICogMWUzOworICBUIG5zKCkgY29uc3QgeworICAgIHJldHVybiBUb011bHRpcGxlPDEwMDAs
IFQ+KCk7CiAgIH0KIAogICBjb25zdGV4cHIgaW50NjRfdCBzZWNvbmRzX29yKGludDY0X3QgZmFs
bGJhY2tfdmFsdWUpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNGaW5pdGUoKSA/IFVuc2FmZVNlY29u
ZHMoKSA6IGZhbGxiYWNrX3ZhbHVlOworICAgIHJldHVybiBUb0ZyYWN0aW9uT3I8MTAwMDAwMD4o
ZmFsbGJhY2tfdmFsdWUpOwogICB9CiAgIGNvbnN0ZXhwciBpbnQ2NF90IG1zX29yKGludDY0X3Qg
ZmFsbGJhY2tfdmFsdWUpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNGaW5pdGUoKSA/IFVuc2FmZU1p
bGxpcygpIDogZmFsbGJhY2tfdmFsdWU7CisgICAgcmV0dXJuIFRvRnJhY3Rpb25PcjwxMDAwPihm
YWxsYmFja192YWx1ZSk7CiAgIH0KICAgY29uc3RleHByIGludDY0X3QgdXNfb3IoaW50NjRfdCBm
YWxsYmFja192YWx1ZSkgY29uc3QgewotICAgIHJldHVybiBJc0Zpbml0ZSgpID8gbWljcm9zZWNv
bmRzXyA6IGZhbGxiYWNrX3ZhbHVlOworICAgIHJldHVybiBUb1ZhbHVlT3IoZmFsbGJhY2tfdmFs
dWUpOwogICB9CiAKICAgVGltZURlbHRhIEFicygpIGNvbnN0IHsgcmV0dXJuIFRpbWVEZWx0YTo6
dXMoc3RkOjphYnModXMoKSkpOyB9Ci0gIGNvbnN0ZXhwciBib29sIElzWmVybygpIGNvbnN0IHsg
cmV0dXJuIG1pY3Jvc2Vjb25kc18gPT0gMDsgfQotICBjb25zdGV4cHIgYm9vbCBJc0Zpbml0ZSgp
IGNvbnN0IHsgcmV0dXJuICFJc0luZmluaXRlKCk7IH0KLSAgY29uc3RleHByIGJvb2wgSXNJbmZp
bml0ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyA9PSB0aW1lZGVsdGFfaW1w
bDo6a1BsdXNJbmZpbml0eVZhbCB8fAotICAgICAgICAgICBtaWNyb3NlY29uZHNfID09IHRpbWVk
ZWx0YV9pbXBsOjprTWludXNJbmZpbml0eVZhbDsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBJc1Bs
dXNJbmZpbml0eSgpIGNvbnN0IHsKLSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyA9PSB0aW1lZGVs
dGFfaW1wbDo6a1BsdXNJbmZpbml0eVZhbDsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBJc01pbnVz
SW5maW5pdHkoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jvc2Vjb25kc18gPT0gdGltZWRlbHRh
X2ltcGw6OmtNaW51c0luZmluaXR5VmFsOwotICB9Ci0gIFRpbWVEZWx0YSBvcGVyYXRvcisoY29u
c3QgVGltZURlbHRhJiBvdGhlcikgY29uc3QgewotICAgIGlmIChJc1BsdXNJbmZpbml0eSgpIHx8
IG90aGVyLklzUGx1c0luZmluaXR5KCkpIHsKLSAgICAgIFJUQ19EQ0hFQ0soIUlzTWludXNJbmZp
bml0eSgpKTsKLSAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklzTWludXNJbmZpbml0eSgpKTsKLSAg
ICAgIHJldHVybiBQbHVzSW5maW5pdHkoKTsKLSAgICB9IGVsc2UgaWYgKElzTWludXNJbmZpbml0
eSgpIHx8IG90aGVyLklzTWludXNJbmZpbml0eSgpKSB7Ci0gICAgICBSVENfRENIRUNLKCFJc1Bs
dXNJbmZpbml0eSgpKTsKLSAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklzUGx1c0luZmluaXR5KCkp
OwotICAgICAgcmV0dXJuIE1pbnVzSW5maW5pdHkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIFRpbWVE
ZWx0YTo6dXModXMoKSArIG90aGVyLnVzKCkpOwotICB9Ci0gIFRpbWVEZWx0YSBvcGVyYXRvci0o
Y29uc3QgVGltZURlbHRhJiBvdGhlcikgY29uc3QgewotICAgIGlmIChJc1BsdXNJbmZpbml0eSgp
IHx8IG90aGVyLklzTWludXNJbmZpbml0eSgpKSB7Ci0gICAgICBSVENfRENIRUNLKCFJc01pbnVz
SW5maW5pdHkoKSk7Ci0gICAgICBSVENfRENIRUNLKCFvdGhlci5Jc1BsdXNJbmZpbml0eSgpKTsK
LSAgICAgIHJldHVybiBQbHVzSW5maW5pdHkoKTsKLSAgICB9IGVsc2UgaWYgKElzTWludXNJbmZp
bml0eSgpIHx8IG90aGVyLklzUGx1c0luZmluaXR5KCkpIHsKLSAgICAgIFJUQ19EQ0hFQ0soIUlz
UGx1c0luZmluaXR5KCkpOwotICAgICAgUlRDX0RDSEVDSyghb3RoZXIuSXNNaW51c0luZmluaXR5
KCkpOwotICAgICAgcmV0dXJuIE1pbnVzSW5maW5pdHkoKTsKLSAgICB9Ci0gICAgcmV0dXJuIFRp
bWVEZWx0YTo6dXModXMoKSAtIG90aGVyLnVzKCkpOwotICB9Ci0gIFRpbWVEZWx0YSYgb3BlcmF0
b3ItPShjb25zdCBUaW1lRGVsdGEmIG90aGVyKSB7Ci0gICAgKnRoaXMgPSAqdGhpcyAtIG90aGVy
OwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBUaW1lRGVsdGEmIG9wZXJhdG9yKz0oY29uc3Qg
VGltZURlbHRhJiBvdGhlcikgewotICAgICp0aGlzID0gKnRoaXMgKyBvdGhlcjsKLSAgICByZXR1
cm4gKnRoaXM7Ci0gIH0KLSAgY29uc3RleHByIGRvdWJsZSBvcGVyYXRvci8oY29uc3QgVGltZURl
bHRhJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiB1czxkb3VibGU+KCkgLyBvdGhlci51czxk
b3VibGU+KCk7Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1lRGVs
dGEmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jvc2Vjb25kc18gPT0gb3RoZXIubWlj
cm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRpbWVE
ZWx0YSYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyAhPSBvdGhlci5t
aWNyb3NlY29uZHNfOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgVGlt
ZURlbHRhJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfIDw9IG90aGVy
Lm1pY3Jvc2Vjb25kc187Ci0gIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBU
aW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pY3Jvc2Vjb25kc18gPj0gb3Ro
ZXIubWljcm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qg
VGltZURlbHRhJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfID4gb3Ro
ZXIubWljcm9zZWNvbmRzXzsKLSAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3Qg
VGltZURlbHRhJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfIDwgb3Ro
ZXIubWljcm9zZWNvbmRzXzsKLSAgfQogCiAgcHJpdmF0ZToKLSAgZXhwbGljaXQgY29uc3RleHBy
IFRpbWVEZWx0YShpbnQ2NF90IHVzKSA6IG1pY3Jvc2Vjb25kc18odXMpIHt9Ci0gIGNvbnN0ZXhw
ciBpbnQ2NF90IFVuc2FmZVNlY29uZHMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIChtaWNyb3NlY29u
ZHNfICsgKG1pY3Jvc2Vjb25kc18gPj0gMCA/IDUwMDAwMCA6IC01MDAwMDApKSAvIDEwMDAwMDA7
Ci0gIH0KLSAgY29uc3RleHByIGludDY0X3QgVW5zYWZlTWlsbGlzKCkgY29uc3QgewotICAgIHJl
dHVybiAobWljcm9zZWNvbmRzXyArIChtaWNyb3NlY29uZHNfID49IDAgPyA1MDAgOiAtNTAwKSkg
LyAxMDAwOwotICB9Ci0gIGludDY0X3QgbWljcm9zZWNvbmRzXzsKKyAgZnJpZW5kIGNsYXNzIHJ0
Y191bml0c19pbXBsOjpVbml0QmFzZTxUaW1lRGVsdGE+OworICB1c2luZyBSZWxhdGl2ZVVuaXQ6
OlJlbGF0aXZlVW5pdDsKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIG9uZV9zaWRlZCA9IGZhbHNl
OwogfTsKIAotaW5saW5lIFRpbWVEZWx0YSBvcGVyYXRvciooY29uc3QgVGltZURlbHRhJiBkZWx0
YSwgY29uc3QgZG91YmxlJiBzY2FsYXIpIHsKLSAgcmV0dXJuIFRpbWVEZWx0YTo6dXMoc3RkOjpy
b3VuZChkZWx0YS51cygpICogc2NhbGFyKSk7Ci19Ci1pbmxpbmUgVGltZURlbHRhIG9wZXJhdG9y
Kihjb25zdCBkb3VibGUmIHNjYWxhciwgY29uc3QgVGltZURlbHRhJiBkZWx0YSkgewotICByZXR1
cm4gZGVsdGEgKiBzY2FsYXI7Ci19Ci1pbmxpbmUgVGltZURlbHRhIG9wZXJhdG9yKihjb25zdCBU
aW1lRGVsdGEmIGRlbHRhLCBjb25zdCBpbnQ2NF90JiBzY2FsYXIpIHsKLSAgcmV0dXJuIFRpbWVE
ZWx0YTo6dXMoZGVsdGEudXMoKSAqIHNjYWxhcik7Ci19Ci1pbmxpbmUgVGltZURlbHRhIG9wZXJh
dG9yKihjb25zdCBpbnQ2NF90JiBzY2FsYXIsIGNvbnN0IFRpbWVEZWx0YSYgZGVsdGEpIHsKLSAg
cmV0dXJuIGRlbHRhICogc2NhbGFyOwotfQotaW5saW5lIFRpbWVEZWx0YSBvcGVyYXRvciooY29u
c3QgVGltZURlbHRhJiBkZWx0YSwgY29uc3QgaW50MzJfdCYgc2NhbGFyKSB7Ci0gIHJldHVybiBU
aW1lRGVsdGE6OnVzKGRlbHRhLnVzKCkgKiBzY2FsYXIpOwotfQotaW5saW5lIFRpbWVEZWx0YSBv
cGVyYXRvciooY29uc3QgaW50MzJfdCYgc2NhbGFyLCBjb25zdCBUaW1lRGVsdGEmIGRlbHRhKSB7
Ci0gIHJldHVybiBkZWx0YSAqIHNjYWxhcjsKLX0KLQotaW5saW5lIFRpbWVEZWx0YSBvcGVyYXRv
ci8oY29uc3QgVGltZURlbHRhJiBkZWx0YSwgY29uc3QgaW50NjRfdCYgc2NhbGFyKSB7Ci0gIHJl
dHVybiBUaW1lRGVsdGE6OnVzKGRlbHRhLnVzKCkgLyBzY2FsYXIpOwotfQotc3RkOjpzdHJpbmcg
VG9TdHJpbmcoY29uc3QgVGltZURlbHRhJiB2YWx1ZSk7CitzdGQ6OnN0cmluZyBUb1N0cmluZyhU
aW1lRGVsdGEgdmFsdWUpOwogCiAjaWZkZWYgVU5JVF9URVNUCiBpbmxpbmUgc3RkOjpvc3RyZWFt
JiBvcGVyYXRvcjw8KCAgLy8gbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dW5pdHMvdGltZV9kZWx0YV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lX2RlbHRhX3VuaXR0ZXN0LmNjCmluZGV4IGJm
OGJiY2U2OWJlZmVkNjE2MjI4ZDFiNGNlNDRjMTYzYmM0NDdlM2YuLmE0NmJhODM1Y2IxOGY0ZTVi
YjYyYTlhMzlhODczY2RlZDM3ZGZmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lX2RlbHRhX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90
aW1lX2RlbHRhX3VuaXR0ZXN0LmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJhcGkv
dW5pdHMvdGltZV9kZWx0YS5oIgogCisjaW5jbHVkZSA8bGltaXRzPgorCiAjaW5jbHVkZSAidGVz
dC9ndGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTEwNiw2ICsxMDgsMjcgQEAgVEVT
VChUaW1lRGVsdGFUZXN0LCBDb21wYXJpc29uT3BlcmF0b3JzKSB7CiAgIEVYUEVDVF9MVChUaW1l
RGVsdGE6Ok1pbnVzSW5maW5pdHkoKSwgVGltZURlbHRhOjpaZXJvKCkpOwogfQogCitURVNUKFRp
bWVEZWx0YVRlc3QsIENsYW1waW5nKSB7CisgIGNvbnN0IFRpbWVEZWx0YSB1cHBlciA9IFRpbWVE
ZWx0YTo6bXMoODAwKTsKKyAgY29uc3QgVGltZURlbHRhIGxvd2VyID0gVGltZURlbHRhOjptcygx
MDApOworICBjb25zdCBUaW1lRGVsdGEgdW5kZXIgPSBUaW1lRGVsdGE6Om1zKDEwMCk7CisgIGNv
bnN0IFRpbWVEZWx0YSBpbnNpZGUgPSBUaW1lRGVsdGE6Om1zKDUwMCk7CisgIGNvbnN0IFRpbWVE
ZWx0YSBvdmVyID0gVGltZURlbHRhOjptcygxMDAwKTsKKyAgRVhQRUNUX0VRKHVuZGVyLkNsYW1w
ZWQobG93ZXIsIHVwcGVyKSwgbG93ZXIpOworICBFWFBFQ1RfRVEoaW5zaWRlLkNsYW1wZWQobG93
ZXIsIHVwcGVyKSwgaW5zaWRlKTsKKyAgRVhQRUNUX0VRKG92ZXIuQ2xhbXBlZChsb3dlciwgdXBw
ZXIpLCB1cHBlcik7CisKKyAgVGltZURlbHRhIG11dGFibGVfZGVsdGEgPSBsb3dlcjsKKyAgbXV0
YWJsZV9kZWx0YS5DbGFtcChsb3dlciwgdXBwZXIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9kZWx0
YSwgbG93ZXIpOworICBtdXRhYmxlX2RlbHRhID0gaW5zaWRlOworICBtdXRhYmxlX2RlbHRhLkNs
YW1wKGxvd2VyLCB1cHBlcik7CisgIEVYUEVDVF9FUShtdXRhYmxlX2RlbHRhLCBpbnNpZGUpOwor
ICBtdXRhYmxlX2RlbHRhID0gb3ZlcjsKKyAgbXV0YWJsZV9kZWx0YS5DbGFtcChsb3dlciwgdXBw
ZXIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9kZWx0YSwgdXBwZXIpOworfQorCiBURVNUKFRpbWVE
ZWx0YVRlc3QsIENhbkJlSW5pdGl0aWFsaXplZEZyb21MYXJnZUludCkgewogICBjb25zdCBpbnQg
a01heEludCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CiAgIEVYUEVDVF9FUShU
aW1lRGVsdGE6OnNlY29uZHMoa01heEludCkudXMoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lc3RhbXAuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdW5pdHMvdGltZXN0
YW1wLmNjCmluZGV4IGZlYjE0NDc4OWNhMmI1OWYwMjRkZDliNzM1MDEwYjQ3ZDRmNWQxZDIuLmQz
NDE3Y2ZiMDViMmYyNjczZTQ0Nzc5Zjk5NDFlMzk1NTNkOWIzODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0cy90aW1lc3RhbXAu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Vu
aXRzL3RpbWVzdGFtcC5jYwpAQCAtMTMsNyArMTMsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3N0
cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci1zdGQ6OnN0cmlu
ZyBUb1N0cmluZyhjb25zdCBUaW1lc3RhbXAmIHZhbHVlKSB7CitzdGQ6OnN0cmluZyBUb1N0cmlu
ZyhUaW1lc3RhbXAgdmFsdWUpIHsKICAgY2hhciBidWZbNjRdOwogICBydGM6OlNpbXBsZVN0cmlu
Z0J1aWxkZXIgc2IoYnVmKTsKICAgaWYgKHZhbHVlLklzSW5maW5pdGUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3VuaXRzL3Rp
bWVzdGFtcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3VuaXRzL3RpbWVzdGFtcC5oCmluZGV4IDAyOThmNWRhOTc5MzQyYmRiYzI5OTgwODc2NjIyYjJl
YTA0MGFjZjEuLmE2ZTQ1MGY2ODUwZjU1OTMzMmMzZDU2YTllYTNlZTk0MDJjNTVkNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS91bml0
cy90aW1lc3RhbXAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdW5pdHMvdGltZXN0YW1wLmgKQEAgLTE1LDE4OSArMTUsOTQgQEAKICNpbmNsdWRl
IDxvc3RyZWFtPiAgLy8gbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg5ODIpCiAjZW5k
aWYgICAgICAgICAgICAgIC8vIFVOSVRfVEVTVAogCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4K
IAogI2luY2x1ZGUgImFwaS91bml0cy90aW1lX2RlbHRhLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLW5hbWVzcGFjZSB0aW1lc3RhbXBfaW1wbCB7Ci1jb25z
dGV4cHIgaW50NjRfdCBrUGx1c0luZmluaXR5VmFsID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2
NF90Pjo6bWF4KCk7Ci1jb25zdGV4cHIgaW50NjRfdCBrTWludXNJbmZpbml0eVZhbCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpOwotfSAgLy8gbmFtZXNwYWNlIHRpbWVzdGFt
cF9pbXBsCi0KIC8vIFRpbWVzdGFtcCByZXByZXNlbnRzIHRoZSB0aW1lIHRoYXQgaGFzIHBhc3Nl
ZCBzaW5jZSBzb21lIHVuc3BlY2lmaWVkIGVwb2NoLgogLy8gVGhlIGVwb2NoIGlzIGFzc3VtZWQg
dG8gYmUgYmVmb3JlIGFueSByZXByZXNlbnRlZCB0aW1lc3RhbXBzLCB0aGlzIG1lYW5zIHRoYXQK
IC8vIG5lZ2F0aXZlIHZhbHVlcyBhcmUgbm90IHZhbGlkLiBUaGUgbW9zdCBub3RhYmxlIGZlYXR1
cmUgaXMgdGhhdCB0aGUKIC8vIGRpZmZlcmVuY2Ugb2YgdHdvIFRpbWVzdGFtcHMgcmVzdWx0cyBp
biBhIFRpbWVEZWx0YS4KLWNsYXNzIFRpbWVzdGFtcCB7CitjbGFzcyBUaW1lc3RhbXAgZmluYWwg
OiBwdWJsaWMgcnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlPFRpbWVzdGFtcD4gewogIHB1YmxpYzoK
ICAgVGltZXN0YW1wKCkgPSBkZWxldGU7Ci0gIHN0YXRpYyBjb25zdGV4cHIgVGltZXN0YW1wIFBs
dXNJbmZpbml0eSgpIHsKLSAgICByZXR1cm4gVGltZXN0YW1wKHRpbWVzdGFtcF9pbXBsOjprUGx1
c0luZmluaXR5VmFsKTsKLSAgfQotICBzdGF0aWMgY29uc3RleHByIFRpbWVzdGFtcCBNaW51c0lu
ZmluaXR5KCkgewotICAgIHJldHVybiBUaW1lc3RhbXAodGltZXN0YW1wX2ltcGw6OmtNaW51c0lu
ZmluaXR5VmFsKTsKLSAgfQorCiAgIHRlbXBsYXRlIDxpbnQ2NF90IHNlY29uZHM+CiAgIHN0YXRp
YyBjb25zdGV4cHIgVGltZXN0YW1wIFNlY29uZHMoKSB7Ci0gICAgc3RhdGljX2Fzc2VydChzZWNv
bmRzID49IDAsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNlY29uZHMgPCB0aW1lc3RhbXBfaW1w
bDo6a1BsdXNJbmZpbml0eVZhbCAvIDEwMDAwMDAsICIiKTsKLSAgICByZXR1cm4gVGltZXN0YW1w
KHNlY29uZHMgKiAxMDAwMDAwKTsKKyAgICByZXR1cm4gRnJvbVN0YXRpY0ZyYWN0aW9uPHNlY29u
ZHMsIDEwMDAwMDA+KCk7CiAgIH0KICAgdGVtcGxhdGUgPGludDY0X3QgbXM+CiAgIHN0YXRpYyBj
b25zdGV4cHIgVGltZXN0YW1wIE1pbGxpcygpIHsKLSAgICBzdGF0aWNfYXNzZXJ0KG1zID49IDAs
ICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KG1zIDwgdGltZXN0YW1wX2ltcGw6OmtQbHVzSW5maW5p
dHlWYWwgLyAxMDAwLCAiIik7Ci0gICAgcmV0dXJuIFRpbWVzdGFtcChtcyAqIDEwMDApOworICAg
IHJldHVybiBGcm9tU3RhdGljRnJhY3Rpb248bXMsIDEwMDA+KCk7CiAgIH0KICAgdGVtcGxhdGUg
PGludDY0X3QgdXM+CiAgIHN0YXRpYyBjb25zdGV4cHIgVGltZXN0YW1wIE1pY3JvcygpIHsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHVzID49IDAsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHVzIDwgdGlt
ZXN0YW1wX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwsICIiKTsKLSAgICByZXR1cm4gVGltZXN0YW1w
KHVzKTsKLSAgfQotCi0gIHRlbXBsYXRlIDwKLSAgICAgIHR5cGVuYW1lIFQsCi0gICAgICB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0g
bnVsbHB0cj4KLSAgc3RhdGljIFRpbWVzdGFtcCBzZWNvbmRzKFQgc2Vjb25kcykgewotICAgIFJU
Q19EQ0hFQ0tfR0Uoc2Vjb25kcywgMCk7Ci0gICAgUlRDX0RDSEVDS19MVChzZWNvbmRzLCB0aW1l
c3RhbXBfaW1wbDo6a1BsdXNJbmZpbml0eVZhbCAvIDEwMDAwMDApOwotICAgIHJldHVybiBUaW1l
c3RhbXAocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KHNlY29uZHMpICogMTAwMDAwMCk7Ci0g
IH0KLQotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBlbmFtZSBULAotICAgICAgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+
Ci0gIHN0YXRpYyBUaW1lc3RhbXAgbXMoVCBtaWxsaXNlY29uZHMpIHsKLSAgICBSVENfRENIRUNL
X0dFKG1pbGxpc2Vjb25kcywgMCk7Ci0gICAgUlRDX0RDSEVDS19MVChtaWxsaXNlY29uZHMsIHRp
bWVzdGFtcF9pbXBsOjprUGx1c0luZmluaXR5VmFsIC8gMTAwMCk7Ci0gICAgcmV0dXJuIFRpbWVz
dGFtcChydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRfdD4obWlsbGlzZWNvbmRzKSAqIDEwMDApOwor
ICAgIHJldHVybiBGcm9tU3RhdGljVmFsdWU8dXM+KCk7CiAgIH0KIAotICB0ZW1wbGF0ZSA8Ci0g
ICAgICB0eXBlbmFtZSBULAotICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19p
bnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gIHN0YXRpYyBUaW1lc3RhbXAg
dXMoVCBtaWNyb3NlY29uZHMpIHsKLSAgICBSVENfRENIRUNLX0dFKG1pY3Jvc2Vjb25kcywgMCk7
Ci0gICAgUlRDX0RDSEVDS19MVChtaWNyb3NlY29uZHMsIHRpbWVzdGFtcF9pbXBsOjprUGx1c0lu
ZmluaXR5VmFsKTsKLSAgICByZXR1cm4gVGltZXN0YW1wKHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ2
NF90PihtaWNyb3NlY29uZHMpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBULAotICAg
ICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxU
Pjo6dmFsdWU+Ojp0eXBlKiA9Ci0gICAgICAgICAgICAgICAgbnVsbHB0cj4KKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIHN0YXRpYyBUaW1lc3RhbXAgc2Vjb25kcyhUIHNlY29uZHMpIHsKLSAg
ICByZXR1cm4gVGltZXN0YW1wOjp1cyhzZWNvbmRzICogMWU2KTsKKyAgICByZXR1cm4gRnJvbUZy
YWN0aW9uPDEwMDAwMDA+KHNlY29uZHMpOwogICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
Ci0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3Bv
aW50PFQ+Ojp2YWx1ZT46OnR5cGUqID0KLSAgICAgICAgICAgICAgICBudWxscHRyPgorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgc3RhdGljIFRpbWVzdGFtcCBtcyhUIG1pbGxpc2Vjb25kcykg
ewotICAgIHJldHVybiBUaW1lc3RhbXA6OnVzKG1pbGxpc2Vjb25kcyAqIDFlMyk7CisgICAgcmV0
dXJuIEZyb21GcmFjdGlvbjwxMDAwPihtaWxsaXNlY29uZHMpOwogICB9Ci0gIHRlbXBsYXRlIDx0
eXBlbmFtZSBULAotICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19m
bG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlKiA9Ci0gICAgICAgICAgICAgICAgbnVsbHB0
cj4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIHN0YXRpYyBUaW1lc3RhbXAgdXMoVCBtaWNy
b3NlY29uZHMpIHsKLSAgICBpZiAobWljcm9zZWNvbmRzID09IHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKSkgewotICAgICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOwotICAg
IH0gZWxzZSBpZiAobWljcm9zZWNvbmRzID09IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkpIHsKLSAgICAgIHJldHVybiBNaW51c0luZmluaXR5KCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgIFJUQ19EQ0hFQ0soIXN0ZDo6aXNuYW4obWljcm9zZWNvbmRzKSk7Ci0gICAgICBS
VENfRENIRUNLX0dFKG1pY3Jvc2Vjb25kcywgMCk7Ci0gICAgICBSVENfRENIRUNLX0xUKG1pY3Jv
c2Vjb25kcywgdGltZXN0YW1wX2ltcGw6OmtQbHVzSW5maW5pdHlWYWwpOwotICAgICAgcmV0dXJu
IFRpbWVzdGFtcChydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRfdD4obWljcm9zZWNvbmRzKSk7Ci0g
ICAgfQorICAgIHJldHVybiBGcm9tVmFsdWUobWljcm9zZWNvbmRzKTsKICAgfQotCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUID0gaW50NjRfdD4KLSAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+Ojp0eXBlIHNlY29uZHMoKSBjb25zdCB7Ci0gICAg
UlRDX0RDSEVDSyhJc0Zpbml0ZSgpKTsKLSAgICByZXR1cm4gcnRjOjpkY2hlY2tlZF9jYXN0PFQ+
KFVuc2FmZVNlY29uZHMoKSk7CisgIFQgc2Vjb25kcygpIGNvbnN0IHsKKyAgICByZXR1cm4gVG9G
cmFjdGlvbjwxMDAwMDAwLCBUPigpOwogICB9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gaW50
NjRfdD4KLSAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFs
dWUsIFQ+Ojp0eXBlIG1zKCkgY29uc3QgewotICAgIFJUQ19EQ0hFQ0soSXNGaW5pdGUoKSk7Ci0g
ICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihVbnNhZmVNaWxsaXMoKSk7CisgIFQgbXMo
KSBjb25zdCB7CisgICAgcmV0dXJuIFRvRnJhY3Rpb248MTAwMCwgVD4oKTsKICAgfQogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+Ci0gIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlwZSB1cygpIGNvbnN0IHsKLSAgICBSVENf
RENIRUNLKElzRmluaXRlKCkpOwotICAgIHJldHVybiBydGM6OmRjaGVja2VkX2Nhc3Q8VD4obWlj
cm9zZWNvbmRzXyk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgY29uc3RleHBy
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVl
LCBUPjo6dHlwZQotICBzZWNvbmRzKCkgY29uc3QgewotICAgIHJldHVybiB1czxUPigpICogMWUt
NjsKLSAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgY29uc3RleHByIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZQot
ICBtcygpIGNvbnN0IHsKLSAgICByZXR1cm4gdXM8VD4oKSAqIDFlLTM7Ci0gIH0KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci0gIGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZSwgVD46OnR5cGUKLSAgdXMoKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIElzUGx1c0luZmluaXR5KCkKLSAgICAgICAgICAgICAgID8gc3RkOjpudW1lcmlj
X2xpbWl0czxUPjo6aW5maW5pdHkoKQotICAgICAgICAgICAgICAgOiBJc01pbnVzSW5maW5pdHko
KSA/IC1zdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogbWljcm9zZWNvbmRzXzsKKyAgVCB1cygpIGNvbnN0IHsKKyAg
ICByZXR1cm4gVG9WYWx1ZTxUPigpOwogICB9CiAKICAgY29uc3RleHByIGludDY0X3Qgc2Vjb25k
c19vcihpbnQ2NF90IGZhbGxiYWNrX3ZhbHVlKSBjb25zdCB7Ci0gICAgcmV0dXJuIElzRmluaXRl
KCkgPyBVbnNhZmVTZWNvbmRzKCkgOiBmYWxsYmFja192YWx1ZTsKKyAgICByZXR1cm4gVG9GcmFj
dGlvbk9yPDEwMDAwMDA+KGZhbGxiYWNrX3ZhbHVlKTsKICAgfQogICBjb25zdGV4cHIgaW50NjRf
dCBtc19vcihpbnQ2NF90IGZhbGxiYWNrX3ZhbHVlKSBjb25zdCB7Ci0gICAgcmV0dXJuIElzRmlu
aXRlKCkgPyBVbnNhZmVNaWxsaXMoKSA6IGZhbGxiYWNrX3ZhbHVlOworICAgIHJldHVybiBUb0Zy
YWN0aW9uT3I8MTAwMD4oZmFsbGJhY2tfdmFsdWUpOwogICB9CiAgIGNvbnN0ZXhwciBpbnQ2NF90
IHVzX29yKGludDY0X3QgZmFsbGJhY2tfdmFsdWUpIGNvbnN0IHsKLSAgICByZXR1cm4gSXNGaW5p
dGUoKSA/IG1pY3Jvc2Vjb25kc18gOiBmYWxsYmFja192YWx1ZTsKKyAgICByZXR1cm4gVG9WYWx1
ZU9yKGZhbGxiYWNrX3ZhbHVlKTsKICAgfQogCi0gIGNvbnN0ZXhwciBib29sIElzRmluaXRlKCkg
Y29uc3QgeyByZXR1cm4gIUlzSW5maW5pdGUoKTsgfQotICBjb25zdGV4cHIgYm9vbCBJc0luZmlu
aXRlKCkgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfID09IHRpbWVkZWx0YV9pbXBs
OjprUGx1c0luZmluaXR5VmFsIHx8Ci0gICAgICAgICAgIG1pY3Jvc2Vjb25kc18gPT0gdGltZWRl
bHRhX2ltcGw6OmtNaW51c0luZmluaXR5VmFsOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIElzUGx1
c0luZmluaXR5KCkgY29uc3QgewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfID09IHRpbWVkZWx0
YV9pbXBsOjprUGx1c0luZmluaXR5VmFsOwotICB9Ci0gIGNvbnN0ZXhwciBib29sIElzTWludXNJ
bmZpbml0eSgpIGNvbnN0IHsKLSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyA9PSB0aW1lZGVsdGFf
aW1wbDo6a01pbnVzSW5maW5pdHlWYWw7Ci0gIH0KLSAgVGltZXN0YW1wIG9wZXJhdG9yKyhjb25z
dCBUaW1lRGVsdGEmIG90aGVyKSBjb25zdCB7Ci0gICAgaWYgKElzUGx1c0luZmluaXR5KCkgfHwg
b3RoZXIuSXNQbHVzSW5maW5pdHkoKSkgeworICBUaW1lc3RhbXAgb3BlcmF0b3IrKGNvbnN0IFRp
bWVEZWx0YSBkZWx0YSkgY29uc3QgeworICAgIGlmIChJc1BsdXNJbmZpbml0eSgpIHx8IGRlbHRh
LklzUGx1c0luZmluaXR5KCkpIHsKICAgICAgIFJUQ19EQ0hFQ0soIUlzTWludXNJbmZpbml0eSgp
KTsKLSAgICAgIFJUQ19EQ0hFQ0soIW90aGVyLklzTWludXNJbmZpbml0eSgpKTsKKyAgICAgIFJU
Q19EQ0hFQ0soIWRlbHRhLklzTWludXNJbmZpbml0eSgpKTsKICAgICAgIHJldHVybiBQbHVzSW5m
aW5pdHkoKTsKLSAgICB9IGVsc2UgaWYgKElzTWludXNJbmZpbml0eSgpIHx8IG90aGVyLklzTWlu
dXNJbmZpbml0eSgpKSB7CisgICAgfSBlbHNlIGlmIChJc01pbnVzSW5maW5pdHkoKSB8fCBkZWx0
YS5Jc01pbnVzSW5maW5pdHkoKSkgewogICAgICAgUlRDX0RDSEVDSyghSXNQbHVzSW5maW5pdHko
KSk7Ci0gICAgICBSVENfRENIRUNLKCFvdGhlci5Jc1BsdXNJbmZpbml0eSgpKTsKKyAgICAgIFJU
Q19EQ0hFQ0soIWRlbHRhLklzUGx1c0luZmluaXR5KCkpOwogICAgICAgcmV0dXJuIE1pbnVzSW5m
aW5pdHkoKTsKICAgICB9Ci0gICAgcmV0dXJuIFRpbWVzdGFtcDo6dXModXMoKSArIG90aGVyLnVz
KCkpOworICAgIHJldHVybiBUaW1lc3RhbXA6OnVzKHVzKCkgKyBkZWx0YS51cygpKTsKICAgfQot
ICBUaW1lc3RhbXAgb3BlcmF0b3ItKGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIpIGNvbnN0IHsKLSAg
ICBpZiAoSXNQbHVzSW5maW5pdHkoKSB8fCBvdGhlci5Jc01pbnVzSW5maW5pdHkoKSkgeworICBU
aW1lc3RhbXAgb3BlcmF0b3ItKGNvbnN0IFRpbWVEZWx0YSBkZWx0YSkgY29uc3QgeworICAgIGlm
IChJc1BsdXNJbmZpbml0eSgpIHx8IGRlbHRhLklzTWludXNJbmZpbml0eSgpKSB7CiAgICAgICBS
VENfRENIRUNLKCFJc01pbnVzSW5maW5pdHkoKSk7Ci0gICAgICBSVENfRENIRUNLKCFvdGhlci5J
c1BsdXNJbmZpbml0eSgpKTsKKyAgICAgIFJUQ19EQ0hFQ0soIWRlbHRhLklzUGx1c0luZmluaXR5
KCkpOwogICAgICAgcmV0dXJuIFBsdXNJbmZpbml0eSgpOwotICAgIH0gZWxzZSBpZiAoSXNNaW51
c0luZmluaXR5KCkgfHwgb3RoZXIuSXNQbHVzSW5maW5pdHkoKSkgeworICAgIH0gZWxzZSBpZiAo
SXNNaW51c0luZmluaXR5KCkgfHwgZGVsdGEuSXNQbHVzSW5maW5pdHkoKSkgewogICAgICAgUlRD
X0RDSEVDSyghSXNQbHVzSW5maW5pdHkoKSk7Ci0gICAgICBSVENfRENIRUNLKCFvdGhlci5Jc01p
bnVzSW5maW5pdHkoKSk7CisgICAgICBSVENfRENIRUNLKCFkZWx0YS5Jc01pbnVzSW5maW5pdHko
KSk7CiAgICAgICByZXR1cm4gTWludXNJbmZpbml0eSgpOwogICAgIH0KLSAgICByZXR1cm4gVGlt
ZXN0YW1wOjp1cyh1cygpIC0gb3RoZXIudXMoKSk7CisgICAgcmV0dXJuIFRpbWVzdGFtcDo6dXMo
dXMoKSAtIGRlbHRhLnVzKCkpOwogICB9Ci0gIFRpbWVEZWx0YSBvcGVyYXRvci0oY29uc3QgVGlt
ZXN0YW1wJiBvdGhlcikgY29uc3QgeworICBUaW1lRGVsdGEgb3BlcmF0b3ItKGNvbnN0IFRpbWVz
dGFtcCBvdGhlcikgY29uc3QgewogICAgIGlmIChJc1BsdXNJbmZpbml0eSgpIHx8IG90aGVyLklz
TWludXNJbmZpbml0eSgpKSB7CiAgICAgICBSVENfRENIRUNLKCFJc01pbnVzSW5maW5pdHkoKSk7
CiAgICAgICBSVENfRENIRUNLKCFvdGhlci5Jc1BsdXNJbmZpbml0eSgpKTsKQEAgLTIwOSw0NSAr
MTE0LDIyIEBAIGNsYXNzIFRpbWVzdGFtcCB7CiAgICAgfQogICAgIHJldHVybiBUaW1lRGVsdGE6
OnVzKHVzKCkgLSBvdGhlci51cygpKTsKICAgfQotICBUaW1lc3RhbXAmIG9wZXJhdG9yLT0oY29u
c3QgVGltZURlbHRhJiBvdGhlcikgewotICAgICp0aGlzID0gKnRoaXMgLSBvdGhlcjsKKyAgVGlt
ZXN0YW1wJiBvcGVyYXRvci09KGNvbnN0IFRpbWVEZWx0YSBkZWx0YSkgeworICAgICp0aGlzID0g
KnRoaXMgLSBkZWx0YTsKICAgICByZXR1cm4gKnRoaXM7CiAgIH0KLSAgVGltZXN0YW1wJiBvcGVy
YXRvcis9KGNvbnN0IFRpbWVEZWx0YSYgb3RoZXIpIHsKLSAgICAqdGhpcyA9ICp0aGlzICsgb3Ro
ZXI7CisgIFRpbWVzdGFtcCYgb3BlcmF0b3IrPShjb25zdCBUaW1lRGVsdGEgZGVsdGEpIHsKKyAg
ICAqdGhpcyA9ICp0aGlzICsgZGVsdGE7CiAgICAgcmV0dXJuICp0aGlzOwogICB9Ci0gIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltZXN0YW1wJiBvdGhlcikgY29uc3QgewotICAg
IHJldHVybiBtaWNyb3NlY29uZHNfID09IG90aGVyLm1pY3Jvc2Vjb25kc187Ci0gIH0KLSAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUaW1lc3RhbXAmIG90aGVyKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIG1pY3Jvc2Vjb25kc18gIT0gb3RoZXIubWljcm9zZWNvbmRzXzsKLSAgfQotICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFRpbWVzdGFtcCYgb3RoZXIpIGNvbnN0IHsK
LSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyA8PSBvdGhlci5taWNyb3NlY29uZHNfOwotICB9Ci0g
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVGltZXN0YW1wJiBvdGhlcikgY29uc3Qg
ewotICAgIHJldHVybiBtaWNyb3NlY29uZHNfID49IG90aGVyLm1pY3Jvc2Vjb25kc187Ci0gIH0K
LSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFRpbWVzdGFtcCYgb3RoZXIpIGNvbnN0
IHsKLSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyA+IG90aGVyLm1pY3Jvc2Vjb25kc187Ci0gIH0K
LSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFRpbWVzdGFtcCYgb3RoZXIpIGNvbnN0
IHsKLSAgICByZXR1cm4gbWljcm9zZWNvbmRzXyA8IG90aGVyLm1pY3Jvc2Vjb25kc187Ci0gIH0K
IAogIHByaXZhdGU6Ci0gIGV4cGxpY2l0IGNvbnN0ZXhwciBUaW1lc3RhbXAoaW50NjRfdCB1cykg
OiBtaWNyb3NlY29uZHNfKHVzKSB7fQotICBjb25zdGV4cHIgaW50NjRfdCBVbnNhZmVTZWNvbmRz
KCkgY29uc3QgewotICAgIHJldHVybiAobWljcm9zZWNvbmRzXyArIDUwMDAwMCkgLyAxMDAwMDAw
OwotICB9Ci0gIGNvbnN0ZXhwciBpbnQ2NF90IFVuc2FmZU1pbGxpcygpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gKG1pY3Jvc2Vjb25kc18gKyA1MDApIC8gMTAwMDsKLSAgfQotICBpbnQ2NF90IG1pY3Jv
c2Vjb25kc187CisgIGZyaWVuZCBjbGFzcyBydGNfdW5pdHNfaW1wbDo6VW5pdEJhc2U8VGltZXN0
YW1wPjsKKyAgdXNpbmcgVW5pdEJhc2U6OlVuaXRCYXNlOworICBzdGF0aWMgY29uc3RleHByIGJv
b2wgb25lX3NpZGVkID0gdHJ1ZTsKIH07CiAKLXN0ZDo6c3RyaW5nIFRvU3RyaW5nKGNvbnN0IFRp
bWVzdGFtcCYgdmFsdWUpOworc3RkOjpzdHJpbmcgVG9TdHJpbmcoVGltZXN0YW1wIHZhbHVlKTsK
IAogI2lmZGVmIFVOSVRfVEVTVAogaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCggIC8v
IG5vLXByZXN1Ym1pdC1jaGVjayBUT0RPKHdlYnJ0Yzo4OTgyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL0JVSUxELmduIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL0JVSUxE
LmduCmluZGV4IGQwNDEyNjAyMWRhNWE2YzFhMjkyY2M1YjUyODljNTAyZWFhNWY4MDAuLjVlZDcw
ODk4ZjdiNzA4MWRmMGQyN2IwZmRiMTc5YTJjZThjOTFkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9CVUlMRC5nbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vQlVJ
TEQuZ24KQEAgLTEzLDYgKzEzLDkgQEAgcnRjX3NvdXJjZV9zZXQoInZpZGVvX2ZyYW1lIikgewog
ICBzb3VyY2VzID0gWwogICAgICJjb2xvcl9zcGFjZS5jYyIsCiAgICAgImNvbG9yX3NwYWNlLmgi
LAorICAgICJoZHJfbWV0YWRhdGEuY2MiLAorICAgICJoZHJfbWV0YWRhdGEuaCIsCisgICAgInZp
ZGVvX2NvZGVjX3R5cGUuaCIsCiAgICAgInZpZGVvX2NvbnRlbnRfdHlwZS5jYyIsCiAgICAgInZp
ZGVvX2NvbnRlbnRfdHlwZS5oIiwKICAgICAidmlkZW9fZnJhbWUuY2MiLApAQCAtMzEsNiArMzQs
NyBAQCBydGNfc291cmNlX3NldCgidmlkZW9fZnJhbWUiKSB7CiAgIGRlcHMgPSBbCiAgICAgIi4u
Ly4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTQ2
LDYgKzUwLDcgQEAgcnRjX3NvdXJjZV9zZXQoInZpZGVvX2ZyYW1lX2k0MjAiKSB7CiAgICAgIi4u
Ly4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAg
ICAiLi4vLi4vcnRjX2Jhc2UvbWVtb3J5OmFsaWduZWRfbWFsbG9jIiwKKyAgICAiLi4vLi4vcnRj
X2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2xpYnl1diIsCiAg
IF0KIH0KQEAgLTY2LDYgKzcxLDI0IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ2aWRlb19mcmFtZV9pMDEw
IikgewogICBdCiB9CiAKK3J0Y19zb3VyY2Vfc2V0KCJlbmNvZGVkX2ltYWdlIikgeworICBzb3Vy
Y2VzID0gWworICAgICJlbmNvZGVkX2ltYWdlLmNjIiwKKyAgICAiZW5jb2RlZF9pbWFnZS5oIiwK
KyAgXQorICBkZXBzID0gWworICAgICI6dmlkZW9fZnJhbWUiLAorICAgICIuLi8uLjp3ZWJydGNf
Y29tbW9uIiwKKworICAgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvODMxMSkgQ2xlYW51cCB3aGVu
IGtNYXhTcGF0aWFsTGF5ZXJzIGlzIG1vdmVkIHRvIHByb3BlciBpbmNsdWRlLgorICAgICIuLi8u
Li9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uIiwKKyAgICAiLi4vLi4vcnRjX2Jh
c2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAg
ICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCisgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgXQorfQorCiBydGNfc291cmNlX3Nl
dCgiZW5jb2RlZF9mcmFtZSIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgc291cmNlcyA9
IFsKQEAgLTE1Miw2ICsxNzUsNyBAQCBydGNfc291cmNlX3NldCgidmlkZW9fc3RyZWFtX2VuY29k
ZXIiKSB7CiAgIF0KIAogICBkZXBzID0gWworICAgICI6dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeSIsCiAgICAgIjp2aWRlb19mcmFtZSIsCiAKICAgICAjIEZvciBydHBwYXJhbWV0ZXJz
LmgKQEAgLTE4MiwzICsyMDYsMjIgQEAgcnRjX3NvdXJjZV9zZXQoInZpZGVvX3N0cmVhbV9lbmNv
ZGVyX2NyZWF0ZSIpIHsKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5
IiwKICAgXQogfQorCitydGNfc3RhdGljX2xpYnJhcnkoImJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeSIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgc291cmNlcyA9
IFsKKyAgICAiYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNjIiwKKyAg
ICAiYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiLAorICBdCisKKyAg
ZGVwcyA9IFsKKyAgICAiOnZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbiIsCisgICAgIjp2aWRlb19i
aXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKKyAgICAiLi4vLi4vbWVkaWE6cnRjX21lZGlhX2Jh
c2UiLAorICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RpbmdfdXRpbGl0
eSIsCisgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOndlYnJ0Y192cDlfaGVscGVycyIs
CisgICAgIi4uLy4uL3J0Y19iYXNlOnB0cl91dGlsIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lz
dGVtOmZhbGx0aHJvdWdoIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5IiwKKyAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFj
dG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzBmNmFkMDRjYmUyNTIwZDkzNDJkNDk3OWY5NWE3NDAyYTIyZDY1MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
by9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRp
bl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCisKKyNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZWRpYS9iYXNlL2NvZGVjLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3IuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L2RlZmF1bHRfdmlkZW9fYml0cmF0
ZV9hbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3Np
bXVsY2FzdF9yYXRlX2FsbG9jYXRvci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9mYWxs
dGhyb3VnaC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworbmFtZXNwYWNlIHsKKworY2xhc3Mg
QnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkKKyAgICA6IHB1YmxpYyBWaWRlb0Jp
dHJhdGVBbGxvY2F0b3JGYWN0b3J5IHsKKyBwdWJsaWM6CisgIEJ1aWx0aW5WaWRlb0JpdHJhdGVB
bGxvY2F0b3JGYWN0b3J5KCkgPSBkZWZhdWx0OworICB+QnVpbHRpblZpZGVvQml0cmF0ZUFsbG9j
YXRvckZhY3RvcnkoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvQml0cmF0ZUFsbG9jYXRvcj4gQ3JlYXRlVmlkZW9CaXRyYXRlQWxsb2NhdG9yKAorICAgICAg
Y29uc3QgVmlkZW9Db2RlYyYgY29kZWMpIG92ZXJyaWRlIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiByYXRlX2FsbG9jYXRvcjsKKyAgICBzd2l0Y2ggKGNvZGVj
LmNvZGVjVHlwZSkgeworICAgICAgY2FzZSBrVmlkZW9Db2RlY1ZQODoKKyAgICAgICAgUlRDX0ZB
TExUSFJPVUdIKCk7CisgICAgICBjYXNlIGtWaWRlb0NvZGVjSDI2NDoKKyAgICAgICAgcmF0ZV9h
bGxvY2F0b3IucmVzZXQobmV3IFNpbXVsY2FzdFJhdGVBbGxvY2F0b3IoY29kZWMpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIGtWaWRlb0NvZGVjVlA5OgorICAgICAgICByYXRlX2FsbG9j
YXRvci5yZXNldChuZXcgU3ZjUmF0ZUFsbG9jYXRvcihjb2RlYykpOworICAgICAgICBicmVhazsK
KyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJhdGVfYWxsb2NhdG9yLnJlc2V0KG5ldyBEZWZhdWx0
VmlkZW9CaXRyYXRlQWxsb2NhdG9yKGNvZGVjKSk7CisgICAgfQorICAgIHJldHVybiByYXRlX2Fs
bG9jYXRvcjsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK3N0ZDo6dW5pcXVlX3B0cjxW
aWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFs
bG9jYXRvckZhY3RvcnkoKSB7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxCdWlsdGluVmlk
ZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4oKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2J1aWx0aW5f
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjODgwYTA4NjNl
OGNlNDJjMTQ2MzdkZTdkN2IwYTRiMzk4ZGNkYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vYnVpbHRpbl92aWRl
b19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJX1ZJREVPX0JVSUxUSU5fVklERU9fQklUUkFURV9B
TExPQ0FUT1JfRkFDVE9SWV9IXworI2RlZmluZSBBUElfVklERU9fQlVJTFRJTl9WSURFT19CSVRS
QVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRl
ICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgorCituYW1lc3Bh
Y2Ugd2VicnRjIHsKKworc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rv
cnk+CitDcmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpOworCit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1ZJREVPX0JVSUxUSU5fVklERU9f
QklUUkFURV9BTExPQ0FUT1JfRkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2NvbG9yX3NwYWNlLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL2NvbG9yX3Nw
YWNlLmNjCmluZGV4IGE4YmU1Y2Q4MjgwMjAyZDVmY2Y5M2FjN2M1OTgzYjk2ZGUxMmRjNjQuLmFk
MTM4YWJlODA5M2QwZDZiZWZhZjU2ZDI0NDJmODk5NjUxZTRjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9jb2xvcl9zcGFj
ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dmlkZW8vY29sb3Jfc3BhY2UuY2MKQEAgLTEwLDE4ICsxMCw3MiBAQAogCiAjaW5jbHVkZSAiYXBp
L3ZpZGVvL2NvbG9yX3NwYWNlLmgiCiAKK25hbWVzcGFjZSB7CisvLyBUcnkgdG8gY29udmVydCB8
ZW51bV92YWx1ZXwgaW50byB0aGUgZW51bSBjbGFzcyBULiB8ZW51bV9iaXRtYXNrfCBpcyBjcmVh
dGVkCisvLyBieSB0aGUgZnVuY2l0b24gYmVsb3cuIFJldHVybnMgdHJ1ZSBpZiBjb252ZXJzaW9u
IHdhcyBzdWNjZXNzZnVsLCBmYWxzZQorLy8gb3RoZXJ3aXNlLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Citib29sIFNldEZyb21VaW50OCh1aW50OF90IGVudW1fdmFsdWUsIHVpbnQ2NF90IGVudW1f
Yml0bWFzaywgVCogb3V0KSB7CisgIGlmICgoZW51bV92YWx1ZSA8IDY0KSAmJiAoKGVudW1fYml0
bWFzayA+PiBlbnVtX3ZhbHVlKSAmIDEpKSB7CisgICAgKm91dCA9IHN0YXRpY19jYXN0PFQ+KGVu
dW1fdmFsdWUpOworICAgIHJldHVybiB0cnVlOworICB9CisgIHJldHVybiBmYWxzZTsKK30KKwor
Ly8gVGhpcyBmdW5jdGlvbiBzZXJ2ZXMgYXMgYW4gYXNzZXJ0IGZvciB0aGUgY29uc3RleHByIGZ1
bmN0aW9uIGJlbG93LiBJdCdzIG9uCisvLyBwdXJwb3NlIG5vdCBkZWNsYXJlZCBhcyBjb25zdGV4
cHIgc28gdGhhdCBpdCBjYXVzZXMgYSBidWlsZCBwcm9ibGVtIGlmIGVudW0KKy8vIHZhbHVlcyBv
ZiA2NCBvciBhYm92ZSBhcmUgdXNlZC4gVGhlIGJpdG1hc2sgYW5kIHRoZSBjb2RlIGdlbmVyYXRp
bmcgaXQgd291bGQKKy8vIGhhdmUgdG8gYmUgZXh0ZW5kZWQgaWYgdGhlIHN0YW5kYXJkIGlzIHVw
ZGF0ZWQgdG8gaW5jbHVkZSBlbnVtIHZhbHVlcyA+PSA2NC4KK2ludCBFbnVtTXVzdEJlTGVzc1Ro
YW42NCgpIHsKKyAgcmV0dXJuIC0xOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90
IE4+Citjb25zdGV4cHIgaW50IE1ha2VNYXNrKGNvbnN0IGludCBpbmRleCwgY29uc3QgaW50IGxl
bmd0aCwgVCAoJnZhbHVlcylbTl0pIHsKKyAgcmV0dXJuIGxlbmd0aCA+IDEKKyAgICAgICAgICAg
ICA/IChNYWtlTWFzayhpbmRleCwgMSwgdmFsdWVzKSArCisgICAgICAgICAgICAgICAgTWFrZU1h
c2soaW5kZXggKyAxLCBsZW5ndGggLSAxLCB2YWx1ZXMpKQorICAgICAgICAgICAgIDogKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHZhbHVlc1tpbmRleF0pIDwgNjQKKyAgICAgICAgICAgICAgICAgICAg
PyAodWludDY0X3R7MX0gPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWVzW2luZGV4XSkpCisg
ICAgICAgICAgICAgICAgICAgIDogRW51bU11c3RCZUxlc3NUaGFuNjQoKSk7Cit9CisKKy8vIENy
ZWF0ZSBhIGJpdG1hc2sgd2hlcmUgZWFjaCBiaXQgY29ycmVzcG9uZHMgdG8gb25lIHBvdGVudGlh
bCBlbnVtIHZhbHVlLgorLy8gfHZhbHVlc3wgc2hvdWxkIGJlIGFuIGFycmF5IGxpc3RpbmcgYWxs
IHBvc3NpYmxlIGVudW0gdmFsdWVzLiBUaGUgYml0IGlzIHNldAorLy8gdG8gb25lIGlmIHRoZSBj
b3JyZXNwb25kaW5nIGVudW0gZXhpc3RzLiBPbmx5IHdvcmtzIGZvciBlbnVtcyB3aXRoIHZhbHVl
cworLy8gbGVzcyB0aGFuIDY0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorY29u
c3RleHByIHVpbnQ2NF90IENyZWF0ZUVudW1CaXRtYXNrKFQgKCZ2YWx1ZXMpW05dKSB7CisgIHJl
dHVybiBNYWtlTWFzaygwLCBOLCB2YWx1ZXMpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKwogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKIENvbG9yU3BhY2U6OkNvbG9yU3BhY2UoKSA9IGRlZmF1bHQ7CitD
b2xvclNwYWNlOjpDb2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2UmIG90aGVyKSA9IGRlZmF1bHQ7
CitDb2xvclNwYWNlOjpDb2xvclNwYWNlKENvbG9yU3BhY2UmJiBvdGhlcikgPSBkZWZhdWx0Owor
Q29sb3JTcGFjZSYgQ29sb3JTcGFjZTo6b3BlcmF0b3I9KGNvbnN0IENvbG9yU3BhY2UmIG90aGVy
KSA9IGRlZmF1bHQ7CiAKIENvbG9yU3BhY2U6OkNvbG9yU3BhY2UoUHJpbWFyeUlEIHByaW1hcmll
cywKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmZXJJRCB0cmFuc2ZlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgTWF0cml4SUQgbWF0cml4LAogICAgICAgICAgICAgICAgICAgICAgICBS
YW5nZUlEIHJhbmdlKQorICAgIDogQ29sb3JTcGFjZShwcmltYXJpZXMsIHRyYW5zZmVyLCBtYXRy
aXgsIHJhbmdlLCBudWxscHRyKSB7fQorCitDb2xvclNwYWNlOjpDb2xvclNwYWNlKFByaW1hcnlJ
RCBwcmltYXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZmVySUQgdHJhbnNmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgIE1hdHJpeElEIG1hdHJpeCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgUmFuZ2VJRCByYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGRy
TWV0YWRhdGEqIGhkcl9tZXRhZGF0YSkKICAgICA6IHByaW1hcmllc18ocHJpbWFyaWVzKSwKICAg
ICAgIHRyYW5zZmVyXyh0cmFuc2ZlciksCiAgICAgICBtYXRyaXhfKG1hdHJpeCksCi0gICAgICBy
YW5nZV8ocmFuZ2UpIHt9CisgICAgICByYW5nZV8ocmFuZ2UpLAorICAgICAgaGRyX21ldGFkYXRh
XyhoZHJfbWV0YWRhdGEgPyBhYnNsOjptYWtlX29wdGlvbmFsKCpoZHJfbWV0YWRhdGEpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6Om51bGxvcHQpIHt9CiAKIENvbG9y
U3BhY2U6OlByaW1hcnlJRCBDb2xvclNwYWNlOjpwcmltYXJpZXMoKSBjb25zdCB7CiAgIHJldHVy
biBwcmltYXJpZXNfOwpAQCAtMzksNCArOTMsNjEgQEAgQ29sb3JTcGFjZTo6UmFuZ2VJRCBDb2xv
clNwYWNlOjpyYW5nZSgpIGNvbnN0IHsKICAgcmV0dXJuIHJhbmdlXzsKIH0KIAorY29uc3QgSGRy
TWV0YWRhdGEqIENvbG9yU3BhY2U6Omhkcl9tZXRhZGF0YSgpIGNvbnN0IHsKKyAgcmV0dXJuIGhk
cl9tZXRhZGF0YV8gPyAmKmhkcl9tZXRhZGF0YV8gOiBudWxscHRyOworfQorCitib29sIENvbG9y
U3BhY2U6OnNldF9wcmltYXJpZXNfZnJvbV91aW50OCh1aW50OF90IGVudW1fdmFsdWUpIHsKKyAg
Y29uc3RleHByIFByaW1hcnlJRCBrUHJpbWFyeUlkc1tdID0geworICAgICAgUHJpbWFyeUlEOjpr
SW52YWxpZCwgICAgUHJpbWFyeUlEOjprQlQ3MDksICAgICAgUHJpbWFyeUlEOjprVU5TUEVDSUZJ
RUQsCisgICAgICBQcmltYXJ5SUQ6OmtCVDQ3ME0sICAgICBQcmltYXJ5SUQ6OmtCVDQ3MEJHLCAg
ICBQcmltYXJ5SUQ6OmtTTVBURTE3ME0sCisgICAgICBQcmltYXJ5SUQ6OmtTTVBURTI0ME0sICBQ
cmltYXJ5SUQ6OmtGSUxNLCAgICAgICBQcmltYXJ5SUQ6OmtCVDIwMjAsCisgICAgICBQcmltYXJ5
SUQ6OmtTTVBURVNUNDI4LCBQcmltYXJ5SUQ6OmtTTVBURVNUNDMxLCBQcmltYXJ5SUQ6OmtTTVBU
RVNUNDMyLAorICAgICAgUHJpbWFyeUlEOjprSkVERUNQMjJ9OworICBjb25zdGV4cHIgdWludDY0
X3QgZW51bV9iaXRtYXNrID0gQ3JlYXRlRW51bUJpdG1hc2soa1ByaW1hcnlJZHMpOworCisgIHJl
dHVybiBTZXRGcm9tVWludDgoZW51bV92YWx1ZSwgZW51bV9iaXRtYXNrLCAmcHJpbWFyaWVzXyk7
Cit9CisKK2Jvb2wgQ29sb3JTcGFjZTo6c2V0X3RyYW5zZmVyX2Zyb21fdWludDgodWludDhfdCBl
bnVtX3ZhbHVlKSB7CisgIGNvbnN0ZXhwciBUcmFuc2ZlcklEIGtUcmFuc2Zlcklkc1tdID0gewor
ICAgICAgVHJhbnNmZXJJRDo6a0ludmFsaWQsICAgICAgVHJhbnNmZXJJRDo6a0JUNzA5LAorICAg
ICAgVHJhbnNmZXJJRDo6a1VOU1BFQ0lGSUVELCAgVHJhbnNmZXJJRDo6a0dBTU1BMjIsCisgICAg
ICBUcmFuc2ZlcklEOjprR0FNTUEyOCwgICAgICBUcmFuc2ZlcklEOjprU01QVEUxNzBNLAorICAg
ICAgVHJhbnNmZXJJRDo6a1NNUFRFMjQwTSwgICAgVHJhbnNmZXJJRDo6a0xJTkVBUiwKKyAgICAg
IFRyYW5zZmVySUQ6OmtMT0csICAgICAgICAgIFRyYW5zZmVySUQ6OmtMT0dfU1FSVCwKKyAgICAg
IFRyYW5zZmVySUQ6OmtJRUM2MTk2Nl8yXzQsIFRyYW5zZmVySUQ6OmtCVDEzNjFfRUNHLAorICAg
ICAgVHJhbnNmZXJJRDo6a0lFQzYxOTY2XzJfMSwgVHJhbnNmZXJJRDo6a0JUMjAyMF8xMCwKKyAg
ICAgIFRyYW5zZmVySUQ6OmtCVDIwMjBfMTIsICAgIFRyYW5zZmVySUQ6OmtTTVBURVNUMjA4NCwK
KyAgICAgIFRyYW5zZmVySUQ6OmtTTVBURVNUNDI4LCAgIFRyYW5zZmVySUQ6OmtBUklCX1NURF9C
Njd9OworICBjb25zdGV4cHIgdWludDY0X3QgZW51bV9iaXRtYXNrID0gQ3JlYXRlRW51bUJpdG1h
c2soa1RyYW5zZmVySWRzKTsKKworICByZXR1cm4gU2V0RnJvbVVpbnQ4KGVudW1fdmFsdWUsIGVu
dW1fYml0bWFzaywgJnRyYW5zZmVyXyk7Cit9CisKK2Jvb2wgQ29sb3JTcGFjZTo6c2V0X21hdHJp
eF9mcm9tX3VpbnQ4KHVpbnQ4X3QgZW51bV92YWx1ZSkgeworICBjb25zdGV4cHIgTWF0cml4SUQg
a01hdHJpeElkc1tdID0geworICAgICAgTWF0cml4SUQ6OmtSR0IsICAgICAgIE1hdHJpeElEOjpr
QlQ3MDksICAgICAgICBNYXRyaXhJRDo6a1VOU1BFQ0lGSUVELAorICAgICAgTWF0cml4SUQ6OmtG
Q0MsICAgICAgIE1hdHJpeElEOjprQlQ0NzBCRywgICAgICBNYXRyaXhJRDo6a1NNUFRFMTcwTSwK
KyAgICAgIE1hdHJpeElEOjprU01QVEUyNDBNLCBNYXRyaXhJRDo6a1lDT0NHLCAgICAgICAgTWF0
cml4SUQ6OmtCVDIwMjBfTkNMLAorICAgICAgTWF0cml4SUQ6OmtCVDIwMjBfQ0wsIE1hdHJpeElE
OjprU01QVEUyMDg1LCAgICBNYXRyaXhJRDo6a0NETkNMUywKKyAgICAgIE1hdHJpeElEOjprQ0RD
TFMsICAgICBNYXRyaXhJRDo6a0JUMjEwMF9JQ1RDUCwgTWF0cml4SUQ6OmtJbnZhbGlkfTsKKyAg
Y29uc3RleHByIHVpbnQ2NF90IGVudW1fYml0bWFzayA9IENyZWF0ZUVudW1CaXRtYXNrKGtNYXRy
aXhJZHMpOworCisgIHJldHVybiBTZXRGcm9tVWludDgoZW51bV92YWx1ZSwgZW51bV9iaXRtYXNr
LCAmbWF0cml4Xyk7Cit9CisKK2Jvb2wgQ29sb3JTcGFjZTo6c2V0X3JhbmdlX2Zyb21fdWludDgo
dWludDhfdCBlbnVtX3ZhbHVlKSB7CisgIGNvbnN0ZXhwciBSYW5nZUlEIGtSYW5nZUlkc1tdID0g
e1JhbmdlSUQ6OmtJbnZhbGlkLCBSYW5nZUlEOjprTGltaXRlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmFuZ2VJRDo6a0Z1bGwsIFJhbmdlSUQ6OmtEZXJpdmVkfTsKKyAg
Y29uc3RleHByIHVpbnQ2NF90IGVudW1fYml0bWFzayA9IENyZWF0ZUVudW1CaXRtYXNrKGtSYW5n
ZUlkcyk7CisKKyAgcmV0dXJuIFNldEZyb21VaW50OChlbnVtX3ZhbHVlLCBlbnVtX2JpdG1hc2ss
ICZyYW5nZV8pOworfQorCit2b2lkIENvbG9yU3BhY2U6OnNldF9oZHJfbWV0YWRhdGEoY29uc3Qg
SGRyTWV0YWRhdGEqIGhkcl9tZXRhZGF0YSkgeworICBoZHJfbWV0YWRhdGFfID0KKyAgICAgIGhk
cl9tZXRhZGF0YSA/IGFic2w6Om1ha2Vfb3B0aW9uYWwoKmhkcl9tZXRhZGF0YSkgOiBhYnNsOjpu
dWxsb3B0OworfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vY29sb3Jfc3BhY2Uu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9j
b2xvcl9zcGFjZS5oCmluZGV4IDgxMDI2NDdiNmZmODg0N2EwNDkwMDRjYmI1OTg1OGUwOGI0ZDg0
NzEuLjc5YTE1ZjU5YjM5MzI4N2JiODliOTg2NThhYzY0YjQ0ZTE4NmEwNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9jb2xv
cl9zcGFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS92aWRlby9jb2xvcl9zcGFjZS5oCkBAIC0xMSw5NSArMTEsMTQ1IEBACiAjaWZuZGVmIEFQ
SV9WSURFT19DT0xPUl9TUEFDRV9IXwogI2RlZmluZSBBUElfVklERU9fQ09MT1JfU1BBQ0VfSF8K
IAorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgorI2luY2x1ZGUgImFwaS92aWRlby9oZHJfbWV0YWRhdGEuaCIKKwogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKLS8vIFVzZWQgdG8gcmVwcmVzZW50IGEgY29sb3Igc3BhY2UgZm9yIHRoZSBwdXJwb3Nl
IG9mIGNvbG9yIGNvbnZlcnNpb24uIFRoaXMKLS8vIGNsYXNzIG9ubHkgcmVwcmVzZW50cyBjb2xv
ciBpbmZvcm1hdGlvbiB0aGF0IGNhbiBiZSB0cmFuc2ZlcnJlZCB0aHJvdWdoIHRoZQotLy8gYml0
c3RyZWFtIG9mIFdlYlJUQydzIGludGVybmFsIHN1cHBvcnRlZCBjb2RlY3M6CisvLyBUaGlzIGNs
YXNzIHJlcHJlc2VudHMgY29sb3IgaW5mb3JtYXRpb24gYXMgc3BlY2lmaWVkIGluIFQtUkVDIEgu
MjczLAorLy8gYXZhaWxhYmxlIGZyb20gaHR0cHM6Ly93d3cuaXR1LmludC9yZWMvVC1SRUMtSC4y
NzMuCisvLworLy8gV2ViUlRDJ3Mgc3VwcG9ydGVkIGNvZGVjczoKIC8vIC0gVlA5IHN1cHBvcnRz
IGNvbG9yIHByb2ZpbGVzLCBzZWUgVlA5IEJpdHN0cmVhbSAmIERlY29kaW5nIFByb2Nlc3MKIC8v
IFNwZWNpZmljYXRpb24gVmVyc2lvbiAwLjYgU2VjdGlvbiA3LjIuMiAiQ29sb3IgY29uZmlnIHNl
bWFudGljcyIgYXZhaWxhYmxlCiAvLyBmcm9tIGh0dHBzOi8vd3d3LndlYm1wcm9qZWN0Lm9yZy4K
LS8vIFRPRE8oZW1pcmNhbik6IEV4dHJhY3QgdGhlc2UgdmFsdWVzIGZyb20gZGVjb2RlIGFuZCBh
ZGQgdG8gdGhlIGV4aXN0aW5nIG9uZXMuCiAvLyAtIFZQOCBvbmx5IHN1cHBvcnRzIEJULjYwMSwg
c2VlCiAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjM4NiNzZWN0aW9uLTkuMgot
Ly8gLSBIMjY0IHN1cHBvcnRzIGRpZmZlcmVudCBjb2xvciBwcmltYXJpZXMsIHRyYW5zZmVyIGNo
YXJhY3RlcmlzdGljcywgbWF0cml4Ci0vLyBjb2VmZmljaWVudHMgYW5kIHJhbmdlLiBTZWUgVC1S
RUMtSC4yNjQgRS4yLjEsICJWVUkgcGFyYW1ldGVycyBzZW1hbnRpY3MiLAotLy8gYXZhaWxhYmxl
IGZyb20gaHR0cHM6Ly93d3cuaXR1LmludC9yZWMvVC1SRUMtSC4yNjQuCisvLyAtIEgyNjQgdXNl
cyB0aGUgZXhhY3Qgc2FtZSByZXByZXNlbnRhdGlvbiBhcyBULVJFQyBILjI3My4gU2VlIFQtUkVD
LUguMjY0CisvLyBFLjIuMSwgIlZVSSBwYXJhbWV0ZXJzIHNlbWFudGljcyIsIGF2YWlsYWJsZSBm
cm9tCisvLyBodHRwczovL3d3dy5pdHUuaW50L3JlYy9ULVJFQy1ILjI2NC4KKwogY2xhc3MgQ29s
b3JTcGFjZSB7CiAgcHVibGljOgotICBlbnVtIGNsYXNzIFByaW1hcnlJRCB7Ci0gICAga0ludmFs
aWQsCi0gICAga0JUNzA5LAotICAgIGtCVDQ3ME0sCi0gICAga0JUNDcwQkcsCi0gICAga1NNUFRF
MTcwTSwgIC8vIElkZW50aWNhbCB0byBCVDYwMQotICAgIGtTTVBURTI0ME0sCi0gICAga0ZJTE0s
Ci0gICAga0JUMjAyMCwKLSAgICBrU01QVEVTVDQyOCwKLSAgICBrU01QVEVTVDQzMSwKLSAgICBr
U01QVEVTVDQzMiwKLSAgICBrSkVERUNQMjIsCisgIGVudW0gY2xhc3MgUHJpbWFyeUlEIDogdWlu
dDhfdCB7CisgICAgLy8gVGhlIGluZGljZXMgYXJlIGVxdWFsIHRvIHRoZSB2YWx1ZXMgc3BlY2lm
aWVkIGluIFQtUkVDIEguMjczIFRhYmxlIDIuCisgICAga0ludmFsaWQgPSAwLAorICAgIGtCVDcw
OSA9IDEsCisgICAga1VOU1BFQ0lGSUVEID0gMiwKKyAgICBrQlQ0NzBNID0gNCwKKyAgICBrQlQ0
NzBCRyA9IDUsCisgICAga1NNUFRFMTcwTSA9IDYsICAvLyBJZGVudGljYWwgdG8gQlQ2MDEKKyAg
ICBrU01QVEUyNDBNID0gNywKKyAgICBrRklMTSA9IDgsCisgICAga0JUMjAyMCA9IDksCisgICAg
a1NNUFRFU1Q0MjggPSAxMCwKKyAgICBrU01QVEVTVDQzMSA9IDExLAorICAgIGtTTVBURVNUNDMy
ID0gMTIsCisgICAga0pFREVDUDIyID0gMjIsICAvLyBJZGVudGljYWwgdG8gRUJVMzIxMy1FCisg
ICAgLy8gV2hlbiBhZGRpbmcvcmVtb3ZpbmcgZW50cmllcyBoZXJlLCBwbGVhc2UgbWFrZSBzdXJl
IHRvIGRvIHRoZQorICAgIC8vIGNvcnJlc3BvbmRpbmcgY2hhbmdlIHRvIGtQcmltYXJ5SWRzLgog
ICB9OwogCi0gIGVudW0gY2xhc3MgVHJhbnNmZXJJRCB7Ci0gICAga0ludmFsaWQsCi0gICAga0JU
NzA5LAotICAgIGtHQU1NQTIyLAotICAgIGtHQU1NQTI4LAotICAgIGtTTVBURTE3ME0sCi0gICAg
a1NNUFRFMjQwTSwKLSAgICBrTElORUFSLAotICAgIGtMT0csCi0gICAga0xPR19TUVJULAotICAg
IGtJRUM2MTk2Nl8yXzQsCi0gICAga0JUMTM2MV9FQ0csCi0gICAga0lFQzYxOTY2XzJfMSwKLSAg
ICBrQlQyMDIwXzEwLAotICAgIGtCVDIwMjBfMTIsCi0gICAga1NNUFRFU1QyMDg0LAotICAgIGtT
TVBURVNUNDI4LAotICAgIGtBUklCX1NURF9CNjcsCisgIGVudW0gY2xhc3MgVHJhbnNmZXJJRCA6
IHVpbnQ4X3QgeworICAgIC8vIFRoZSBpbmRpY2VzIGFyZSBlcXVhbCB0byB0aGUgdmFsdWVzIHNw
ZWNpZmllZCBpbiBULVJFQyBILjI3MyBUYWJsZSAzLgorICAgIGtJbnZhbGlkID0gMCwKKyAgICBr
QlQ3MDkgPSAxLAorICAgIGtVTlNQRUNJRklFRCA9IDIsCisgICAga0dBTU1BMjIgPSA0LAorICAg
IGtHQU1NQTI4ID0gNSwKKyAgICBrU01QVEUxNzBNID0gNiwKKyAgICBrU01QVEUyNDBNID0gNywK
KyAgICBrTElORUFSID0gOCwKKyAgICBrTE9HID0gOSwKKyAgICBrTE9HX1NRUlQgPSAxMCwKKyAg
ICBrSUVDNjE5NjZfMl80ID0gMTEsCisgICAga0JUMTM2MV9FQ0cgPSAxMiwKKyAgICBrSUVDNjE5
NjZfMl8xID0gMTMsCisgICAga0JUMjAyMF8xMCA9IDE0LAorICAgIGtCVDIwMjBfMTIgPSAxNSwK
KyAgICBrU01QVEVTVDIwODQgPSAxNiwKKyAgICBrU01QVEVTVDQyOCA9IDE3LAorICAgIGtBUklC
X1NURF9CNjcgPSAxOCwKKyAgICAvLyBXaGVuIGFkZGluZy9yZW1vdmluZyBlbnRyaWVzIGhlcmUs
IHBsZWFzZSBtYWtlIHN1cmUgdG8gZG8gdGhlCisgICAgLy8gY29ycmVzcG9uZGluZyBjaGFuZ2Ug
dG8ga1RyYW5zZmVySWRzLgogICB9OwogCi0gIGVudW0gY2xhc3MgTWF0cml4SUQgewotICAgIGtJ
bnZhbGlkLAotICAgIGtSR0IsCi0gICAga0JUNzA5LAotICAgIGtGQ0MsCi0gICAga0JUNDcwQkcs
Ci0gICAga1NNUFRFMTcwTSwKLSAgICBrU01QVEUyNDBNLAotICAgIGtZQ09DRywKLSAgICBrQlQy
MDIwX05DTCwKLSAgICBrQlQyMDIwX0NMLAotICAgIGtTTVBURTIwODUsCisgIGVudW0gY2xhc3Mg
TWF0cml4SUQgOiB1aW50OF90IHsKKyAgICAvLyBUaGUgaW5kaWNlcyBhcmUgZXF1YWwgdG8gdGhl
IHZhbHVlcyBzcGVjaWZpZWQgaW4gVC1SRUMgSC4yNzMgVGFibGUgNC4KKyAgICBrUkdCID0gMCwK
KyAgICBrQlQ3MDkgPSAxLAorICAgIGtVTlNQRUNJRklFRCA9IDIsCisgICAga0ZDQyA9IDQsCisg
ICAga0JUNDcwQkcgPSA1LAorICAgIGtTTVBURTE3ME0gPSA2LAorICAgIGtTTVBURTI0ME0gPSA3
LAorICAgIGtZQ09DRyA9IDgsCisgICAga0JUMjAyMF9OQ0wgPSA5LAorICAgIGtCVDIwMjBfQ0wg
PSAxMCwKKyAgICBrU01QVEUyMDg1ID0gMTEsCisgICAga0NETkNMUyA9IDEyLAorICAgIGtDRENM
UyA9IDEzLAorICAgIGtCVDIxMDBfSUNUQ1AgPSAxNCwKKyAgICBrSW52YWxpZCA9IDYzLAorICAg
IC8vIFdoZW4gYWRkaW5nL3JlbW92aW5nIGVudHJpZXMgaGVyZSwgcGxlYXNlIG1ha2Ugc3VyZSB0
byBkbyB0aGUKKyAgICAvLyBjb3JyZXNwb25kaW5nIGNoYW5nZSB0byBrTWF0cml4SWRzLgogICB9
OwogCiAgIGVudW0gY2xhc3MgUmFuZ2VJRCB7Ci0gICAga0ludmFsaWQsCisgICAgLy8gVGhlIGlu
ZGljZXMgYXJlIGVxdWFsIHRvIHRoZSB2YWx1ZXMgc3BlY2lmaWVkIGF0CisgICAgLy8gaHR0cHM6
Ly93d3cud2VibXByb2plY3Qub3JnL2RvY3MvY29udGFpbmVyLyNjb2xvdXIgZm9yIHRoZSBlbGVt
ZW50IFJhbmdlLgorICAgIGtJbnZhbGlkID0gMCwKICAgICAvLyBMaW1pdGVkIFJlYy4gNzA5IGNv
bG9yIHJhbmdlIHdpdGggUkdCIHZhbHVlcyByYW5naW5nIGZyb20gMTYgdG8gMjM1LgotICAgIGtM
aW1pdGVkLAorICAgIGtMaW1pdGVkID0gMSwKICAgICAvLyBGdWxsIFJHQiBjb2xvciByYW5nZSB3
aXRoIFJHQiB2YWxlZXMgZnJvbSAwIHRvIDI1NS4KLSAgICBrRnVsbCwKKyAgICBrRnVsbCA9IDIs
CisgICAgLy8gUmFuZ2UgaXMgZGVmaW5lZCBieSBNYXRyaXhDb2VmZmljaWVudHMvVHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3MuCisgICAga0Rlcml2ZWQgPSAzLAorICAgIC8vIFdoZW4gYWRkaW5nL3Jl
bW92aW5nIGVudHJpZXMgaGVyZSwgcGxlYXNlIG1ha2Ugc3VyZSB0byBkbyB0aGUKKyAgICAvLyBj
b3JyZXNwb25kaW5nIGNoYW5nZSB0byBrUmFuZ2VJZHMuCiAgIH07CiAKICAgQ29sb3JTcGFjZSgp
OworICBDb2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2UmIG90aGVyKTsKKyAgQ29sb3JTcGFjZShD
b2xvclNwYWNlJiYgb3RoZXIpOworICBDb2xvclNwYWNlJiBvcGVyYXRvcj0oY29uc3QgQ29sb3JT
cGFjZSYgb3RoZXIpOwogICBDb2xvclNwYWNlKFByaW1hcnlJRCBwcmltYXJpZXMsCiAgICAgICAg
ICAgICAgVHJhbnNmZXJJRCB0cmFuc2ZlciwKICAgICAgICAgICAgICBNYXRyaXhJRCBtYXRyaXgs
CiAgICAgICAgICAgICAgUmFuZ2VJRCBmdWxsX3JhbmdlKTsKKyAgQ29sb3JTcGFjZShQcmltYXJ5
SUQgcHJpbWFyaWVzLAorICAgICAgICAgICAgIFRyYW5zZmVySUQgdHJhbnNmZXIsCisgICAgICAg
ICAgICAgTWF0cml4SUQgbWF0cml4LAorICAgICAgICAgICAgIFJhbmdlSUQgcmFuZ2UsCisgICAg
ICAgICAgICAgY29uc3QgSGRyTWV0YWRhdGEqIGhkcl9tZXRhZGF0YSk7CisgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDb2xvclNwYWNlJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiBwcmltYXJp
ZXNfID09IG90aGVyLnByaW1hcmllcygpICYmIHRyYW5zZmVyXyA9PSBvdGhlci50cmFuc2Zlcigp
ICYmCisgICAgICAgICAgIG1hdHJpeF8gPT0gb3RoZXIubWF0cml4KCkgJiYgcmFuZ2VfID09IG90
aGVyLnJhbmdlKCkgJiYKKyAgICAgICAgICAgKChoZHJfbWV0YWRhdGFfLmhhc192YWx1ZSgpICYm
IG90aGVyLmhkcl9tZXRhZGF0YSgpICYmCisgICAgICAgICAgICAgKmhkcl9tZXRhZGF0YV8gPT0g
Km90aGVyLmhkcl9tZXRhZGF0YSgpKSB8fAorICAgICAgICAgICAgKCFoZHJfbWV0YWRhdGFfLmhh
c192YWx1ZSgpICYmIG90aGVyLmhkcl9tZXRhZGF0YSgpID09IG51bGxwdHIpKTsKKyAgfQogCiAg
IFByaW1hcnlJRCBwcmltYXJpZXMoKSBjb25zdDsKICAgVHJhbnNmZXJJRCB0cmFuc2ZlcigpIGNv
bnN0OwogICBNYXRyaXhJRCBtYXRyaXgoKSBjb25zdDsKICAgUmFuZ2VJRCByYW5nZSgpIGNvbnN0
OworICBjb25zdCBIZHJNZXRhZGF0YSogaGRyX21ldGFkYXRhKCkgY29uc3Q7CisKKyAgYm9vbCBz
ZXRfcHJpbWFyaWVzX2Zyb21fdWludDgodWludDhfdCBlbnVtX3ZhbHVlKTsKKyAgYm9vbCBzZXRf
dHJhbnNmZXJfZnJvbV91aW50OCh1aW50OF90IGVudW1fdmFsdWUpOworICBib29sIHNldF9tYXRy
aXhfZnJvbV91aW50OCh1aW50OF90IGVudW1fdmFsdWUpOworICBib29sIHNldF9yYW5nZV9mcm9t
X3VpbnQ4KHVpbnQ4X3QgZW51bV92YWx1ZSk7CisgIHZvaWQgc2V0X2hkcl9tZXRhZGF0YShjb25z
dCBIZHJNZXRhZGF0YSogaGRyX21ldGFkYXRhKTsKIAogIHByaXZhdGU6CiAgIFByaW1hcnlJRCBw
cmltYXJpZXNfID0gUHJpbWFyeUlEOjprSW52YWxpZDsKICAgVHJhbnNmZXJJRCB0cmFuc2Zlcl8g
PSBUcmFuc2ZlcklEOjprSW52YWxpZDsKICAgTWF0cml4SUQgbWF0cml4XyA9IE1hdHJpeElEOjpr
SW52YWxpZDsKICAgUmFuZ2VJRCByYW5nZV8gPSBSYW5nZUlEOjprSW52YWxpZDsKKyAgYWJzbDo6
b3B0aW9uYWw8SGRyTWV0YWRhdGE+IGhkcl9tZXRhZGF0YV87CiB9OwogCiB9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2ltYWdlLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU3YzZmYWRlZTcwM2M4OWFjY2UyNDk4MTNjMWQyMjI0YWVmMjIzOGMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlk
ZW8vZW5jb2RlZF9pbWFnZS5jYwpAQCAtMCwwICsxLDQyIEBACisvKgorICogIENvcHlyaWdodCAo
YykgMjAxMiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCisKKyNpbmNsdWRlIDxz
dHJpbmcuaD4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEZGbXBlZydzIGRlY29kZXIsIHVz
ZWQgYnkgSDI2NERlY29kZXJJbXBsLCByZXF1aXJlcyB1cCB0byA4IGJ5dGVzIHBhZGRpbmcgZHVl
CisvLyB0byBvcHRpbWl6ZWQgYml0c3RyZWFtIHJlYWRlcnMuIFNlZSBhdmNvZGVjX2RlY29kZV92
aWRlbzIuCitjb25zdCBzaXplX3QgRW5jb2RlZEltYWdlOjprQnVmZmVyUGFkZGluZ0J5dGVzSDI2
NCA9IDg7CisKK3NpemVfdCBFbmNvZGVkSW1hZ2U6OkdldEJ1ZmZlclBhZGRpbmdCeXRlcyhWaWRl
b0NvZGVjVHlwZSBjb2RlY190eXBlKSB7CisgIHN3aXRjaCAoY29kZWNfdHlwZSkgeworICAgIGNh
c2Uga1ZpZGVvQ29kZWNIMjY0OgorICAgICAgcmV0dXJuIGtCdWZmZXJQYWRkaW5nQnl0ZXNIMjY0
OworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gMDsKKyAgfQorfQorCitFbmNvZGVkSW1hZ2U6
OkVuY29kZWRJbWFnZSgpIDogRW5jb2RlZEltYWdlKG51bGxwdHIsIDAsIDApIHt9CisKK0VuY29k
ZWRJbWFnZTo6RW5jb2RlZEltYWdlKGNvbnN0IEVuY29kZWRJbWFnZSYpID0gZGVmYXVsdDsKKwor
RW5jb2RlZEltYWdlOjpFbmNvZGVkSW1hZ2UodWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3Ro
LCBzaXplX3Qgc2l6ZSkKKyAgICA6IF9idWZmZXIoYnVmZmVyKSwgX2xlbmd0aChsZW5ndGgpLCBf
c2l6ZShzaXplKSB7fQorCit2b2lkIEVuY29kZWRJbWFnZTo6U2V0RW5jb2RlVGltZShpbnQ2NF90
IGVuY29kZV9zdGFydF9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgZW5jb2RlX2ZpbmlzaF9tcykgeworICB0aW1pbmdfLmVuY29kZV9zdGFydF9tcyA9IGVuY29k
ZV9zdGFydF9tczsKKyAgdGltaW5nXy5lbmNvZGVfZmluaXNoX21zID0gZW5jb2RlX2ZpbmlzaF9t
czsKK30KK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9lbmNvZGVkX2ltYWdlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vZW5jb2Rl
ZF9pbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3YzcxOWNlM2E1Njc4ZDUxYWMyNGZjNzMyMDM5ZWViZDFi
OTBkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oCkBAIC0wLDAgKzEsMTA5IEBACisv
KgorICogIENvcHlyaWdodCAoYykgMjAxNCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBBUElfVklERU9fRU5DT0RFRF9JTUFHRV9I
XworI2RlZmluZSBBUElfVklERU9fRU5DT0RFRF9JTUFHRV9IXworCisjaW5jbHVkZSA8c3RkaW50
Lmg+CisKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL3Zp
ZGVvL2NvbG9yX3NwYWNlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxs
b2NhdGlvbi5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19jb2RlY190eXBlLmgiCisjaW5j
bHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5oIgorI2luY2x1ZGUgImFwaS92aWRl
by92aWRlb19yb3RhdGlvbi5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb190aW1pbmcuaCIK
KyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNf
ZXhwb3J0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBUT0RPKGJ1Zy53ZWJydGMub3Jn
LzkzNzgpOiBUaGlzIGlzIGEgbGVnYWN5IGFwaSBjbGFzcywgd2hpY2ggaXMgc2xvd2x5IGJlaW5n
CisvLyBjbGVhbmVkIHVwLiBEaXJlY3QgdXNlIG9mIGl0cyBtZW1iZXJzIGlzIHN0cm9uZ2x5IGRp
c2NvdXJhZ2VkLgorY2xhc3MgUlRDX0VYUE9SVCBFbmNvZGVkSW1hZ2UgeworIHB1YmxpYzoKKyAg
c3RhdGljIGNvbnN0IHNpemVfdCBrQnVmZmVyUGFkZGluZ0J5dGVzSDI2NDsKKworICAvLyBTb21l
IGRlY29kZXJzIHJlcXVpcmUgZW5jb2RlZCBpbWFnZSBidWZmZXJzIHRvIGJlIHBhZGRlZCB3aXRo
IGEgc21hbGwKKyAgLy8gbnVtYmVyIG9mIGFkZGl0aW9uYWwgYnl0ZXMgKGR1ZSB0byBvdmVyLXJl
YWRpbmcgYnl0ZSByZWFkZXJzKS4KKyAgc3RhdGljIHNpemVfdCBHZXRCdWZmZXJQYWRkaW5nQnl0
ZXMoVmlkZW9Db2RlY1R5cGUgY29kZWNfdHlwZSk7CisKKyAgRW5jb2RlZEltYWdlKCk7CisgIEVu
Y29kZWRJbWFnZShjb25zdCBFbmNvZGVkSW1hZ2UmKTsKKyAgRW5jb2RlZEltYWdlKHVpbnQ4X3Qq
IGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IHNpemUpOworCisgIC8vIFRPRE8obmlzc2Up
OiBDaGFuZ2Ugc3R5bGUgdG8gdGltZXN0YW1wKCksIHNldF90aW1lc3RhbXAoKSwgZm9yIGNvbnNp
c3RlbmN5CisgIC8vIHdpdGggdGhlIFZpZGVvRnJhbWUgY2xhc3MuCisgIC8vIFNldCBmcmFtZSB0
aW1lc3RhbXAgKDkwa0h6KS4KKyAgdm9pZCBTZXRUaW1lc3RhbXAodWludDMyX3QgdGltZXN0YW1w
KSB7IHRpbWVzdGFtcF9ydHBfID0gdGltZXN0YW1wOyB9CisKKyAgLy8gR2V0IGZyYW1lIHRpbWVz
dGFtcCAoOTBrSHopLgorICB1aW50MzJfdCBUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiB0aW1l
c3RhbXBfcnRwXzsgfQorCisgIHZvaWQgU2V0RW5jb2RlVGltZShpbnQ2NF90IGVuY29kZV9zdGFy
dF9tcywgaW50NjRfdCBlbmNvZGVfZmluaXNoX21zKTsKKworICBhYnNsOjpvcHRpb25hbDxpbnQ+
IFNwYXRpYWxJbmRleCgpIGNvbnN0IHsKKyAgICByZXR1cm4gc3BhdGlhbF9pbmRleF87CisgIH0K
KyAgdm9pZCBTZXRTcGF0aWFsSW5kZXgoYWJzbDo6b3B0aW9uYWw8aW50PiBzcGF0aWFsX2luZGV4
KSB7CisgICAgUlRDX0RDSEVDS19HRShzcGF0aWFsX2luZGV4LnZhbHVlX29yKDApLCAwKTsKKyAg
ICBSVENfRENIRUNLX0xUKHNwYXRpYWxfaW5kZXgudmFsdWVfb3IoMCksIGtNYXhTcGF0aWFsTGF5
ZXJzKTsKKyAgICBzcGF0aWFsX2luZGV4XyA9IHNwYXRpYWxfaW5kZXg7CisgIH0KKworICBjb25z
dCB3ZWJydGM6OkNvbG9yU3BhY2UqIENvbG9yU3BhY2UoKSBjb25zdCB7CisgICAgcmV0dXJuIGNv
bG9yX3NwYWNlXyA/ICYqY29sb3Jfc3BhY2VfIDogbnVsbHB0cjsKKyAgfQorICB2b2lkIFNldENv
bG9yU3BhY2UoY29uc3Qgd2VicnRjOjpDb2xvclNwYWNlKiBjb2xvcl9zcGFjZSkgeworICAgIGNv
bG9yX3NwYWNlXyA9CisgICAgICAgIGNvbG9yX3NwYWNlID8gYWJzbDo6bWFrZV9vcHRpb25hbCgq
Y29sb3Jfc3BhY2UpIDogYWJzbDo6bnVsbG9wdDsKKyAgfQorCisgIHVpbnQzMl90IF9lbmNvZGVk
V2lkdGggPSAwOworICB1aW50MzJfdCBfZW5jb2RlZEhlaWdodCA9IDA7CisgIC8vIE5UUCB0aW1l
IG9mIHRoZSBjYXB0dXJlIHRpbWUgaW4gbG9jYWwgdGltZWJhc2UgaW4gbWlsbGlzZWNvbmRzLgor
ICBpbnQ2NF90IG50cF90aW1lX21zXyA9IDA7CisgIGludDY0X3QgY2FwdHVyZV90aW1lX21zXyA9
IDA7CisgIEZyYW1lVHlwZSBfZnJhbWVUeXBlID0ga1ZpZGVvRnJhbWVEZWx0YTsKKyAgdWludDhf
dCogX2J1ZmZlcjsKKyAgc2l6ZV90IF9sZW5ndGg7CisgIHNpemVfdCBfc2l6ZTsKKyAgVmlkZW9S
b3RhdGlvbiByb3RhdGlvbl8gPSBrVmlkZW9Sb3RhdGlvbl8wOworICBWaWRlb0NvbnRlbnRUeXBl
IGNvbnRlbnRfdHlwZV8gPSBWaWRlb0NvbnRlbnRUeXBlOjpVTlNQRUNJRklFRDsKKyAgYm9vbCBf
Y29tcGxldGVGcmFtZSA9IGZhbHNlOworICBpbnQgcXBfID0gLTE7ICAvLyBRdWFudGl6ZXIgdmFs
dWUuCisKKyAgLy8gV2hlbiBhbiBhcHBsaWNhdGlvbiBpbmRpY2F0ZXMgbm9uLXplcm8gdmFsdWVz
IGhlcmUsIGl0IGlzIHRha2VuIGFzIGFuCisgIC8vIGluZGljYXRpb24gdGhhdCBhbGwgZnV0dXJl
IGZyYW1lcyB3aWxsIGJlIGNvbnN0cmFpbmVkIHdpdGggdGhvc2UgbGltaXRzCisgIC8vIHVudGls
IHRoZSBhcHBsaWNhdGlvbiBpbmRpY2F0ZXMgYSBjaGFuZ2UgYWdhaW4uCisgIFBsYXlvdXREZWxh
eSBwbGF5b3V0X2RlbGF5XyA9IHstMSwgLTF9OworCisgIHN0cnVjdCBUaW1pbmcgeworICAgIHVp
bnQ4X3QgZmxhZ3MgPSBWaWRlb1NlbmRUaW1pbmc6OmtJbnZhbGlkOworICAgIGludDY0X3QgZW5j
b2RlX3N0YXJ0X21zID0gMDsKKyAgICBpbnQ2NF90IGVuY29kZV9maW5pc2hfbXMgPSAwOworICAg
IGludDY0X3QgcGFja2V0aXphdGlvbl9maW5pc2hfbXMgPSAwOworICAgIGludDY0X3QgcGFjZXJf
ZXhpdF9tcyA9IDA7CisgICAgaW50NjRfdCBuZXR3b3JrX3RpbWVzdGFtcF9tcyA9IDA7CisgICAg
aW50NjRfdCBuZXR3b3JrMl90aW1lc3RhbXBfbXMgPSAwOworICAgIGludDY0X3QgcmVjZWl2ZV9z
dGFydF9tcyA9IDA7CisgICAgaW50NjRfdCByZWNlaXZlX2ZpbmlzaF9tcyA9IDA7CisgIH0gdGlt
aW5nXzsKKworIHByaXZhdGU6CisgIHVpbnQzMl90IHRpbWVzdGFtcF9ydHBfID0gMDsKKyAgYWJz
bDo6b3B0aW9uYWw8aW50PiBzcGF0aWFsX2luZGV4XzsKKyAgYWJzbDo6b3B0aW9uYWw8d2VicnRj
OjpDb2xvclNwYWNlPiBjb2xvcl9zcGFjZV87Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CisKKyNlbmRpZiAgLy8gQVBJX1ZJREVPX0VOQ09ERURfSU1BR0VfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9oZHJfbWV0
YWRhdGEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dmlkZW8vaGRyX21ldGFkYXRhLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYTY2OWM5OGEzYzBmMDc5YWY1YzE3
Njk0NWVjMjk4MjhiZDJkZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaGRyX21ldGFkYXRhLmNjCkBAIC0wLDAg
KzEsMjEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2hk
cl9tZXRhZGF0YS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworSGRyTWFzdGVyaW5nTWV0YWRh
dGE6OkNocm9tYXRpY2l0eTo6Q2hyb21hdGljaXR5KCkgPSBkZWZhdWx0OworCitIZHJNYXN0ZXJp
bmdNZXRhZGF0YTo6SGRyTWFzdGVyaW5nTWV0YWRhdGEoKSA9IGRlZmF1bHQ7CisKK0hkck1ldGFk
YXRhOjpIZHJNZXRhZGF0YSgpID0gZGVmYXVsdDsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvL2hkcl9tZXRhZGF0YS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL2hkcl9tZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NmE5MDBjOTk0
ODY0MjE0MzBmMDRkYmVkMmIyODg3MTNjZWUzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaGRyX21ldGFkYXRh
LmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgQVBJ
X1ZJREVPX0hEUl9NRVRBREFUQV9IXworI2RlZmluZSBBUElfVklERU9fSERSX01FVEFEQVRBX0hf
CisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFNNUFRF
IFNUIDIwODYgbWFzdGVyaW5nIG1ldGFkYXRhLAorLy8gc2VlIGh0dHBzOi8vaWVlZXhwbG9yZS5p
ZWVlLm9yZy9kb2N1bWVudC84MzUzODk5Lgorc3RydWN0IEhkck1hc3RlcmluZ01ldGFkYXRhIHsK
KyAgc3RydWN0IENocm9tYXRpY2l0eSB7CisgICAgLy8geHkgY2hyb21hdGljaXR5IGNvb3JkaW5h
dGVzIG11c3QgYmUgY2FsY3VsYXRlZCBhcyBzcGVjaWZpZWQgaW4gSVNPCisgICAgLy8gMTE2NjQt
MzoyMDEyIFNlY3Rpb24gNywgYW5kIG11c3QgYmUgc3BlY2lmaWVkIHdpdGggZm91ciBkZWNpbWFs
IHBsYWNlcy4KKyAgICAvLyBUaGUgeCBjb29yZGluYXRlIG11c3QgYmUgaW4gdGhlIHJhbmdlIFsw
LjAwMDEsIDAuNzQwMF0gYW5kIHRoZSB5CisgICAgLy8gY29vcmRpbmF0ZSBtdXN0IGJlIGluIHRo
ZSByYW5nZSBbMC4wMDAxLCAwLjg0MDBdLgorICAgIGZsb2F0IHggPSAwLjBmOworICAgIGZsb2F0
IHkgPSAwLjBmOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDaHJvbWF0aWNpdHkmIHJocykg
Y29uc3QgeworICAgICAgcmV0dXJuIHggPT0gcmhzLnggJiYgeSA9PSByaHMueTsKKyAgICB9CisK
KyAgICBDaHJvbWF0aWNpdHkoKTsKKyAgfTsKKworICAvLyBUaGUgbm9taW5hbCBwcmltYXJpZXMg
b2YgdGhlIG1hc3RlcmluZyBkaXNwbGF5LgorICBDaHJvbWF0aWNpdHkgcHJpbWFyeV9yOworICBD
aHJvbWF0aWNpdHkgcHJpbWFyeV9nOworICBDaHJvbWF0aWNpdHkgcHJpbWFyeV9iOworCisgIC8v
IFRoZSBub21pbmFsIGNocm9tYXRpY2l0eSBvZiB0aGUgd2hpdGUgcG9pbnQgb2YgdGhlIG1hc3Rl
cmluZyBkaXNwbGF5LgorICBDaHJvbWF0aWNpdHkgd2hpdGVfcG9pbnQ7CisKKyAgLy8gVGhlIG5v
bWluYWwgbWF4aW11bSBkaXNwbGF5IGx1bWluYW5jZSBvZiB0aGUgbWFzdGVyaW5nIGRpc3BsYXku
IFNwZWNpZmllZAorICAvLyBpbiB0aGUgdW5pdCBjYW5kZWxhL20yLiBUaGUgdmFsdWUgbXVzdCBi
ZSBpbiB0aGUgcmFuZ2UgWzUsIDEwMDAwXSB3aXRoIHplcm8KKyAgLy8gZGVjaW1hbCBwbGFjZXMu
CisgIGZsb2F0IGx1bWluYW5jZV9tYXggPSAwLjBmOworCisgIC8vIFRoZSBub21pbmFsIG1pbmlt
dW0gZGlzcGxheSBsdW1pbmFuY2Ugb2YgdGhlIG1hc3RlcmluZyBkaXNwbGF5LiBTcGVjaWZpZWQK
KyAgLy8gaW4gdGhlIHVuaXQgY2FuZGVsYS9tMi4gVGhlIHZhbHVlIG11c3QgYmUgaW4gdGhlIHJh
bmdlIFswLjAwMDEsIDUuMDAwMF0KKyAgLy8gd2l0aCBmb3VyIGRlY2ltYWwgcGxhY2VzLgorICBm
bG9hdCBsdW1pbmFuY2VfbWluID0gMC4wZjsKKworICBIZHJNYXN0ZXJpbmdNZXRhZGF0YSgpOwor
CisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZHJNYXN0ZXJpbmdNZXRhZGF0YSYgcmhzKSBjb25z
dCB7CisgICAgcmV0dXJuICgocHJpbWFyeV9yID09IHJocy5wcmltYXJ5X3IpICYmIChwcmltYXJ5
X2cgPT0gcmhzLnByaW1hcnlfZykgJiYKKyAgICAgICAgICAgIChwcmltYXJ5X2IgPT0gcmhzLnBy
aW1hcnlfYikgJiYgKHdoaXRlX3BvaW50ID09IHJocy53aGl0ZV9wb2ludCkgJiYKKyAgICAgICAg
ICAgIChsdW1pbmFuY2VfbWF4ID09IHJocy5sdW1pbmFuY2VfbWF4KSAmJgorICAgICAgICAgICAg
KGx1bWluYW5jZV9taW4gPT0gcmhzLmx1bWluYW5jZV9taW4pKTsKKyAgfQorfTsKKworLy8gSGln
aCBkeW5hbWljIHJhbmdlIChIRFIpIG1ldGFkYXRhIGNvbW1vbiBmb3IgSERSMTAgYW5kIFdlYk0v
VlA5LWJhc2VkIEhEUgorLy8gZm9ybWF0cy4gVGhpcyBzdHJ1Y3QgcmVwbGljYXRlcyB0aGUgSERS
TWV0YWRhdGEgc3RydWN0IGRlZmluZWQgaW4KKy8vIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2No
cm9taXVtL3NyYy9tZWRpYS9iYXNlL2hkcl9tZXRhZGF0YS5oCitzdHJ1Y3QgSGRyTWV0YWRhdGEg
eworICBIZHJNYXN0ZXJpbmdNZXRhZGF0YSBtYXN0ZXJpbmdfbWV0YWRhdGE7CisgIC8vIE1heCBj
b250ZW50IGxpZ2h0IGxldmVsIChDTEwpLCBpLmUuIG1heGltdW0gYnJpZ2h0bmVzcyBsZXZlbCBw
cmVzZW50IGluIHRoZQorICAvLyBzdHJlYW0sIGluIG5pdHMuIDEgbml0ID0gMSBjYW5kZWxhL20y
LgorICB1aW50MzJfdCBtYXhfY29udGVudF9saWdodF9sZXZlbCA9IDA7CisgIC8vIE1heCBmcmFt
ZS1hdmVyYWdlIGxpZ2h0IGxldmVsIChGQUxMKSwgaS5lLiBtYXhpbXVtIGF2ZXJhZ2UgYnJpZ2h0
bmVzcyBvZgorICAvLyB0aGUgYnJpZ2h0ZXN0IGZyYW1lIGluIHRoZSBzdHJlYW0sIGluIG5pdHMu
CisgIHVpbnQzMl90IG1heF9mcmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVsID0gMDsKKworICBIZHJN
ZXRhZGF0YSgpOworCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZHJNZXRhZGF0YSYgcmhzKSBj
b25zdCB7CisgICAgcmV0dXJuICgKKyAgICAgICAgKG1heF9jb250ZW50X2xpZ2h0X2xldmVsID09
IHJocy5tYXhfY29udGVudF9saWdodF9sZXZlbCkgJiYKKyAgICAgICAgKG1heF9mcmFtZV9hdmVy
YWdlX2xpZ2h0X2xldmVsID09IHJocy5tYXhfZnJhbWVfYXZlcmFnZV9saWdodF9sZXZlbCkgJiYK
KyAgICAgICAgKG1hc3RlcmluZ19tZXRhZGF0YSA9PSByaHMubWFzdGVyaW5nX21ldGFkYXRhKSk7
CisgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBBUElfVklE
RU9fSERSX01FVEFEQVRBX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vaTQyMF9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9pNDIwX2J1ZmZlci5oCmluZGV4
IDI4MmIyNDI2Y2EzNmUxNTkyMjhlZTViM2VlNzE4MzVjOGJmNzcxMTkuLjYzMWUzOTRlNTM0ZjBi
Mjc0NzljMWM2ZjZkZjYxYTA1MWNjNTVmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9pNDIwX2J1ZmZlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby9pNDIwX2J1
ZmZlci5oCkBAIC0xMSwxNiArMTEsMTkgQEAKICNpZm5kZWYgQVBJX1ZJREVPX0k0MjBfQlVGRkVS
X0hfCiAjZGVmaW5lIEFQSV9WSURFT19JNDIwX0JVRkZFUl9IXwogCisjaW5jbHVkZSA8c3RkaW50
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1l
X2J1ZmZlci5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19yb3RhdGlvbi5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL21lbW9yeS9hbGlnbmVkX21hbGxvYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIFBsYWluIEk0MjAgYnVmZmVyIGluIHN0YW5k
YXJkIG1lbW9yeS4KLWNsYXNzIEk0MjBCdWZmZXIgOiBwdWJsaWMgSTQyMEJ1ZmZlckludGVyZmFj
ZSB7CitjbGFzcyBSVENfRVhQT1JUIEk0MjBCdWZmZXIgOiBwdWJsaWMgSTQyMEJ1ZmZlckludGVy
ZmFjZSB7CiAgcHVibGljOgogICBzdGF0aWMgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXI+
IENyZWF0ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICBzdGF0aWMgcnRjOjpzY29wZWRfcmVm
cHRyPEk0MjBCdWZmZXI+IENyZWF0ZShpbnQgd2lkdGgsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdGVzdC9CVUlMRC5nbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby90ZXN0
L0JVSUxELmduCmluZGV4IGNiYTQyNDU4ZDIyMTVkMTNjNWY1MGZlODk0YWM4ZmNhNGM3OGZhZDIu
LmM4MjY5ZWZkYzA3OWJiZTM3ZWRlMjc3YWFhN2YzOWI1MTIwNWM4OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby90ZXN0L0JV
SUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS92aWRlby90ZXN0L0JVSUxELmduCkBAIC0xMSwxMCArMTEsMTIgQEAgaW1wb3J0KCIuLi8uLi8u
Li93ZWJydGMuZ25pIikKIHJ0Y19zb3VyY2Vfc2V0KCJydGNfYXBpX3ZpZGVvX3VuaXR0ZXN0cyIp
IHsKICAgdGVzdG9ubHkgPSB0cnVlCiAgIHNvdXJjZXMgPSBbCisgICAgImNvbG9yX3NwYWNlX3Vu
aXR0ZXN0LmNjIiwKICAgICAidmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uX3VuaXR0ZXN0LmNjIiwK
ICAgXQogICBkZXBzID0gWwogICAgICIuLjp2aWRlb19iaXRyYXRlX2FsbG9jYXRpb24iLAorICAg
ICIuLjp2aWRlb19mcmFtZSIsCiAgICAgIi4uLy4uLy4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAg
XQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvL3Rlc3QvY29sb3Jfc3BhY2VfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdGVzdC9jb2xvcl9zcGFjZV91
bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzFiY2VmODZhNmJjNTJjMWQxNmVkOWIzOWU2NDc2MDdi
YjBiNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvL3Rlc3QvY29sb3Jfc3BhY2VfdW5pdHRlc3QuY2MKQEAgLTAs
MCArMSw1NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4K
KworI2luY2x1ZGUgImFwaS92aWRlby9jb2xvcl9zcGFjZS5oIgorI2luY2x1ZGUgInRlc3QvZ3Rl
c3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitURVNUKENvbG9yU3BhY2UsIFRlc3RTZXR0aW5n
UHJpbWFyaWVzRnJvbVVpbnQ4KSB7CisgIENvbG9yU3BhY2UgY29sb3Jfc3BhY2U7CisgIEVYUEVD
VF9UUlVFKGNvbG9yX3NwYWNlLnNldF9wcmltYXJpZXNfZnJvbV91aW50OCgKKyAgICAgIHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KENvbG9yU3BhY2U6OlByaW1hcnlJRDo6a0JUNDcwQkcpKSk7CisgIEVY
UEVDVF9FUShDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OmtCVDQ3MEJHLCBjb2xvcl9zcGFjZS5wcmlt
YXJpZXMoKSk7CisgIEVYUEVDVF9GQUxTRShjb2xvcl9zcGFjZS5zZXRfcHJpbWFyaWVzX2Zyb21f
dWludDgoMykpOworICBFWFBFQ1RfRkFMU0UoY29sb3Jfc3BhY2Uuc2V0X3ByaW1hcmllc19mcm9t
X3VpbnQ4KDIzKSk7CisgIEVYUEVDVF9GQUxTRShjb2xvcl9zcGFjZS5zZXRfcHJpbWFyaWVzX2Zy
b21fdWludDgoNjQpKTsKK30KKworVEVTVChDb2xvclNwYWNlLCBUZXN0U2V0dGluZ1RyYW5zZmVy
RnJvbVVpbnQ4KSB7CisgIENvbG9yU3BhY2UgY29sb3Jfc3BhY2U7CisgIEVYUEVDVF9UUlVFKGNv
bG9yX3NwYWNlLnNldF90cmFuc2Zlcl9mcm9tX3VpbnQ4KAorICAgICAgc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oQ29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6a0JUMjAyMF8xMCkpKTsKKyAgRVhQRUNUX0VR
KENvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OmtCVDIwMjBfMTAsIGNvbG9yX3NwYWNlLnRyYW5zZmVy
KCkpOworICBFWFBFQ1RfRkFMU0UoY29sb3Jfc3BhY2Uuc2V0X3RyYW5zZmVyX2Zyb21fdWludDgo
MykpOworICBFWFBFQ1RfRkFMU0UoY29sb3Jfc3BhY2Uuc2V0X3RyYW5zZmVyX2Zyb21fdWludDgo
MTkpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbG9yX3NwYWNlLnNldF90cmFuc2Zlcl9mcm9tX3VpbnQ4
KDEyOCkpOworfQorCitURVNUKENvbG9yU3BhY2UsIFRlc3RTZXR0aW5nTWF0cml4RnJvbVVpbnQ4
KSB7CisgIENvbG9yU3BhY2UgY29sb3Jfc3BhY2U7CisgIEVYUEVDVF9UUlVFKGNvbG9yX3NwYWNl
LnNldF9tYXRyaXhfZnJvbV91aW50OCgKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KENvbG9y
U3BhY2U6Ok1hdHJpeElEOjprQ0ROQ0xTKSkpOworICBFWFBFQ1RfRVEoQ29sb3JTcGFjZTo6TWF0
cml4SUQ6OmtDRE5DTFMsIGNvbG9yX3NwYWNlLm1hdHJpeCgpKTsKKyAgRVhQRUNUX0ZBTFNFKGNv
bG9yX3NwYWNlLnNldF9tYXRyaXhfZnJvbV91aW50OCgzKSk7CisgIEVYUEVDVF9GQUxTRShjb2xv
cl9zcGFjZS5zZXRfbWF0cml4X2Zyb21fdWludDgoMTUpKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbG9y
X3NwYWNlLnNldF9tYXRyaXhfZnJvbV91aW50OCgyNTUpKTsKK30KKworVEVTVChDb2xvclNwYWNl
LCBUZXN0U2V0dGluZ1JhbmdlRnJvbVVpbnQ4KSB7CisgIENvbG9yU3BhY2UgY29sb3Jfc3BhY2U7
CisgIEVYUEVDVF9UUlVFKGNvbG9yX3NwYWNlLnNldF9yYW5nZV9mcm9tX3VpbnQ4KAorICAgICAg
c3RhdGljX2Nhc3Q8dWludDhfdD4oQ29sb3JTcGFjZTo6UmFuZ2VJRDo6a0Z1bGwpKSk7CisgIEVY
UEVDVF9FUShDb2xvclNwYWNlOjpSYW5nZUlEOjprRnVsbCwgY29sb3Jfc3BhY2UucmFuZ2UoKSk7
CisgIEVYUEVDVF9GQUxTRShjb2xvcl9zcGFjZS5zZXRfcmFuZ2VfZnJvbV91aW50OCg0KSk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRp
b24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlk
ZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmNjCmluZGV4IDZjNWFkMWVhZTVmYWMxNTBkMTM0
MDY4MmMzMTM2OWYxMzJiZmM0NDkuLjFiMzU2OTA0N2UwZTc4MDljMzRkM2ViMGQ4YmU1MTQxOGUz
OTlmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVf
YWxsb2NhdGlvbi5jYwpAQCAtMTAsMTIgKzEwLDExIEBACiAKICNpbmNsdWRlICJhcGkvdmlkZW8v
dmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgiCiAKLSNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVk
ZSA8Y3N0ZGludD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
dHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRp
b24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
by92aWRlb19iaXRyYXRlX2FsbG9jYXRpb24uaAppbmRleCA5ZTI1MDFkODVhMDlhYWNiOTE5ZTlj
YjhhZmFmNzBkYWU0ZTQ5YzliLi5kMTc3MWI0NGE0MzVjYjgzYTI5ZWE5NGM2MzFkMjg5MDMwN2E5
Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxs
b2NhdGlvbi5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIEFQSV9WSURFT19WSURFT19CSVRS
QVRFX0FMTE9DQVRJT05fSF8KICNkZWZpbmUgQVBJX1ZJREVPX1ZJREVPX0JJVFJBVEVfQUxMT0NB
VElPTl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlk
ZW8vdmlkZW9fY29kZWNfdHlwZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2NvZGVjX3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDc3MjNj
ZjA4OGNkYWIyODMyYmQxYjUxZmMyODgxMGIxMjA5MzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2Nv
ZGVjX3R5cGUuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lm
bmRlZiBBUElfVklERU9fVklERU9fQ09ERUNfVFlQRV9IXworI2RlZmluZSBBUElfVklERU9fVklE
RU9fQ09ERUNfVFlQRV9IXworCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gVmlkZW8gY29kZWMg
dHlwZXMKK2VudW0gVmlkZW9Db2RlY1R5cGUgeworICAvLyBUaGVyZSBhcmUgdmFyaW91cyBtZW1z
ZXQoLi4uLCAwLCAuLi4pIGNhbGxzIGluIHRoZSBjb2RlIHRoYXQgcmVseSBvbgorICAvLyBrVmlk
ZW9Db2RlY0dlbmVyaWMgYmVpbmcgemVyby4KKyAga1ZpZGVvQ29kZWNHZW5lcmljID0gMCwKKyAg
a1ZpZGVvQ29kZWNWUDgsCisgIGtWaWRlb0NvZGVjVlA5LAorICBrVmlkZW9Db2RlY0gyNjQsCisg
IGtWaWRlb0NvZGVjSTQyMCwKKyAga1ZpZGVvQ29kZWNNdWx0aXBsZXgsCit9OworCit9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gQVBJX1ZJREVPX1ZJREVPX0NPREVDX1RZUEVf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS92aWRlby92aWRlb19jb250ZW50X3R5cGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19jb250ZW50X3R5cGUuaAppbmRleCA4
YzY0NjAyODhkODIxY2I2NmVmNzE0MGQ5ODk1ZTNjNTY5ODkzNDI2Li4yZDM4YTYyMzY2YzU3NzU3
NmE4MmJmZDJkMGJkNDg5NGRiYzIzNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fY29udGVudF90eXBlLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3Zp
ZGVvX2NvbnRlbnRfdHlwZS5oCkBAIC0xMyw4ICsxMyw2IEBACiAKICNpbmNsdWRlIDxzdGRpbnQu
aD4KIAotI2luY2x1ZGUgPHN0cmluZz4KLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGVudW0gY2xh
c3MgVmlkZW9Db250ZW50VHlwZSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVv
X2ZyYW1lLmNjCmluZGV4IDU1MjFhZDhhNTg3NDQxMjIzNzQzYzJmOWE4YzkxZDQzNTkwMDUwZDku
LmVhYWUzM2IyYjNmZmQ4NGY1ZjQyZTU1NTNlMDUzYzFkMmFhZmFkN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19m
cmFtZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW8vdmlkZW9fZnJhbWUuY2MKQEAgLTY0LDYgKzY0LDEzIEBAIFZpZGVvRnJhbWU6OkJ1
aWxkZXImIFZpZGVvRnJhbWU6OkJ1aWxkZXI6OnNldF9jb2xvcl9zcGFjZSgKICAgcmV0dXJuICp0
aGlzOwogfQogCitWaWRlb0ZyYW1lOjpCdWlsZGVyJiBWaWRlb0ZyYW1lOjpCdWlsZGVyOjpzZXRf
Y29sb3Jfc3BhY2UoCisgICAgY29uc3QgQ29sb3JTcGFjZSogY29sb3Jfc3BhY2UpIHsKKyAgY29s
b3Jfc3BhY2VfID0KKyAgICAgIGNvbG9yX3NwYWNlID8gYWJzbDo6bWFrZV9vcHRpb25hbCgqY29s
b3Jfc3BhY2UpIDogYWJzbDo6bnVsbG9wdDsKKyAgcmV0dXJuICp0aGlzOworfQorCiBWaWRlb0Zy
YW1lOjpWaWRlb0ZyYW1lKGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlb0ZyYW1lQnVmZmVy
PiYgYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlZpZGVvUm90YXRpb24g
cm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdGltZXN0YW1wX3VzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L3ZpZGVvL3ZpZGVvX2ZyYW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuaAppbmRleCBkY2I1MzNlMjlmMGMwOWYyYmFl
ODc5NzMxM2JhMThkNTJlNzE2ZmZjLi4yYzVkMDgxYmE2MjFkYzc2ZGJhNmNlZjhmY2MxMjk2MjE4
ZTM5OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuaApAQCAtMTUsMTIgKzE1
LDE1IEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBp
L3ZpZGVvL2NvbG9yX3NwYWNlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2hkcl9tZXRhZGF0YS5o
IgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZV9idWZmZXIuaCIKICNpbmNsdWRlICJh
cGkvdmlkZW8vdmlkZW9fcm90YXRpb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVm
X3B0ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCi1jbGFzcyBWaWRlb0ZyYW1lIHsKK2NsYXNzIFJUQ19FWFBPUlQgVmlk
ZW9GcmFtZSB7CiAgcHVibGljOgogICAvLyBQcmVmZXJyZWQgd2F5IG9mIGJ1aWxkaW5nIFZpZGVv
RnJhbWUgb2JqZWN0cy4KICAgY2xhc3MgQnVpbGRlciB7CkBAIC0zNyw2ICs0MCw3IEBAIGNsYXNz
IFZpZGVvRnJhbWUgewogICAgIEJ1aWxkZXImIHNldF9udHBfdGltZV9tcyhpbnQ2NF90IG50cF90
aW1lX21zKTsKICAgICBCdWlsZGVyJiBzZXRfcm90YXRpb24oVmlkZW9Sb3RhdGlvbiByb3RhdGlv
bik7CiAgICAgQnVpbGRlciYgc2V0X2NvbG9yX3NwYWNlKGNvbnN0IENvbG9yU3BhY2UmIGNvbG9y
X3NwYWNlKTsKKyAgICBCdWlsZGVyJiBzZXRfY29sb3Jfc3BhY2UoY29uc3QgQ29sb3JTcGFjZSog
Y29sb3Jfc3BhY2UpOwogCiAgICBwcml2YXRlOgogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlZpZGVvRnJhbWVCdWZmZXI+IHZpZGVvX2ZyYW1lX2J1ZmZlcl87CkBAIC0xMTAsOCArMTE0
LDEwIEBAIGNsYXNzIFZpZGVvRnJhbWUgewogICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gcm90YXRpb25fOyB9CiAgIHZvaWQgc2V0X3JvdGF0aW9uKFZpZGVvUm90YXRp
b24gcm90YXRpb24pIHsgcm90YXRpb25fID0gcm90YXRpb247IH0KIAotICAvLyBTZXQgQ29sb3Ig
c3BhY2Ugd2hlbiBhdmFpbGFibGUuCi0gIGFic2w6Om9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9y
X3NwYWNlKCkgY29uc3QgeyByZXR1cm4gY29sb3Jfc3BhY2VfOyB9CisgIC8vIEdldCBjb2xvciBz
cGFjZSB3aGVuIGF2YWlsYWJsZS4KKyAgY29uc3QgQ29sb3JTcGFjZSogY29sb3Jfc3BhY2UoKSBj
b25zdCB7CisgICAgcmV0dXJuIGNvbG9yX3NwYWNlXyA/ICYqY29sb3Jfc3BhY2VfIDogbnVsbHB0
cjsKKyAgfQogCiAgIC8vIEdldCByZW5kZXIgdGltZSBpbiBtaWxsaXNlY29uZHMuCiAgIC8vIFRP
RE8obmlzc2UpOiBEZXByZWNhdGVkLiBNaWdyYXRlIGFsbCB1c2VycyB0byB0aW1lc3RhbXBfdXMo
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS92aWRlby92aWRlb19zb3VyY2VfaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc291cmNlX2ludGVyZmFjZS5o
CmluZGV4IDRlZTQ3MTk0NTUyOWRmMTMzYzNkNGQxODMzZjgwNjllNzBkOGU4ODcuLjJiZjczNzA0
YmZhZjFhYjEzYzY1N2I3NWU3ZjY1NDQxMTJhNTU0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19zb3VyY2VfaW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvL3ZpZGVvX3NvdXJjZV9pbnRlcmZhY2UuaApAQCAtMTUsMTIgKzE1LDEzIEBACiAK
ICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3Zp
ZGVvX3NpbmtfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBv
cnQuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKIC8vIFZpZGVvU2lua1dhbnRzIGlzIHVzZWQgZm9y
IG5vdGlmeWluZyB0aGUgc291cmNlIG9mIHByb3BlcnRpZXMgYSB2aWRlbyBmcmFtZQogLy8gc2hv
dWxkIGhhdmUgd2hlbiBpdCBpcyBkZWxpdmVyZWQgdG8gYSBjZXJ0YWluIHNpbmsuCi1zdHJ1Y3Qg
VmlkZW9TaW5rV2FudHMgeworc3RydWN0IFJUQ19FWFBPUlQgVmlkZW9TaW5rV2FudHMgewogICBW
aWRlb1NpbmtXYW50cygpOwogICBWaWRlb1NpbmtXYW50cyhjb25zdCBWaWRlb1NpbmtXYW50cyYp
OwogICB+VmlkZW9TaW5rV2FudHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlcl9vYnNl
cnZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Zp
ZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyX29ic2VydmVyLmgKaW5kZXggYjk0MGVmZGYxMTUwMDMx
ZjEwNGUyYTM5NzFkOGU3MzQ2MGViNTdkMy4uOThiNWNmY2IyY2QzMGQ5ZGZlZTA0YjNhMTgzOTkx
ZjkzNjFhNTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyX29ic2VydmVyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVv
X3N0cmVhbV9lbmNvZGVyX29ic2VydmVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgQVBJ
X1ZJREVPX1ZJREVPX1NUUkVBTV9FTkNPREVSX09CU0VSVkVSX0hfCiAjZGVmaW5lIEFQSV9WSURF
T19WSURFT19TVFJFQU1fRU5DT0RFUl9PQlNFUlZFUl9IXwogCisjaW5jbHVkZSA8c3RyaW5nPgog
I2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKQEAg
LTY4LDYgKzY5LDkgQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyT2JzZXJ2ZXIgOiBwdWJsaWMg
Q3B1T3ZlcnVzZU1ldHJpY3NPYnNlcnZlciB7CiAgIHZpcnR1YWwgdm9pZCBPblNlbmRFbmNvZGVk
SW1hZ2UoY29uc3QgRW5jb2RlZEltYWdlJiBlbmNvZGVkX2ltYWdlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19pbmZvKSA9
IDA7CiAKKyAgdmlydHVhbCB2b2lkIE9uRW5jb2RlckltcGxlbWVudGF0aW9uQ2hhbmdlZCgKKyAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbXBsZW1lbnRhdGlvbl9uYW1lKSA9IDA7CisKICAgdmly
dHVhbCB2b2lkIE9uRnJhbWVEcm9wcGVkKERyb3BSZWFzb24gcmVhc29uKSA9IDA7CiAKICAgLy8g
VXNlZCB0byBpbmRpY2F0ZSBjaGFuZ2UgaW4gY29udGVudCB0eXBlLCB3aGljaCBtYXkgcmVxdWly
ZSBhIGNoYW5nZSBpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyX3NldHRpbmdzLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9f
c3RyZWFtX2VuY29kZXJfc2V0dGluZ3MuaAppbmRleCBiNjdmMzNjOTgyZGJiZWNjMDhiMTg3NzRi
NTQ4YmYwZDg5ZmM1ODMxLi4zN2MxZGU3MDE1ZjIxYjNhODVkNjliZjIwYjAzMzBjYmFjY2ZkOWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXJfc2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fc3RyZWFtX2Vu
Y29kZXJfc2V0dGluZ3MuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBBUElfVklERU9fVklE
RU9fU1RSRUFNX0VOQ09ERVJfU0VUVElOR1NfSF8KICNkZWZpbmUgQVBJX1ZJREVPX1ZJREVPX1NU
UkVBTV9FTkNPREVSX1NFVFRJTkdTX0hfCiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMjQsNiArMjUs
OSBAQCBzdHJ1Y3QgVmlkZW9TdHJlYW1FbmNvZGVyU2V0dGluZ3MgewogCiAgIC8vIE93bmVyc2hp
cCBzdGF5cyB3aXRoIFdlYnJ0Y1ZpZGVvRW5naW5lIChkZWxlZ2F0ZWQgZnJvbSBQZWVyQ29ubmVj
dGlvbikuCiAgIFZpZGVvRW5jb2RlckZhY3RvcnkqIGVuY29kZXJfZmFjdG9yeSA9IG51bGxwdHI7
CisKKyAgLy8gT3duZXJzaGlwIHN0YXlzIHdpdGggV2VicnRjVmlkZW9FbmdpbmUgKGRlbGVnYXRl
ZCBmcm9tIFBlZXJDb25uZWN0aW9uKS4KKyAgVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSog
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9IG51bGxwdHI7CiB9OwogCiB9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9CVUlMRC5nbgppbmRleCA1NTY3
NGQwOTAxMGE5OGVkYTlhMjM2YjY2YjhjNDJlZTRkY2YyZGI2Li5kMGIxYjliYThlYTQ4YjMyZmMw
ZDFkNDEwNzg3MDEzNzQwODlkOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL0JVSUxELmduCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvQlVJ
TEQuZ24KQEAgLTI4LDE1ICsyOCwxOCBAQCBydGNfc291cmNlX3NldCgidmlkZW9fY29kZWNzX2Fw
aSIpIHsKICAgICAidmlkZW9fZW5jb2Rlcl9jb25maWcuY2MiLAogICAgICJ2aWRlb19lbmNvZGVy
X2NvbmZpZy5oIiwKICAgICAidmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiLAorICAgICJ2cDhfdGVt
cG9yYWxfbGF5ZXJzLmgiLAogICBdCiAKICAgZGVwcyA9IFsKICAgICAiLi4vLi46d2VicnRjX2Nv
bW1vbiIsCi0gICAgIi4uLy4uL2NvbW1vbl92aWRlbyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNo
ZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4v
Li4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAorICAgICIuLi92aWRlbzplbmNvZGVkX2lt
YWdlIiwKICAgICAiLi4vdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0aW9uIiwKICAgICAiLi4v
dmlkZW86dmlkZW9fZnJhbWUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9z
dHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9u
YWwiLAogICBdCiB9CkBAIC01Niw2ICs1OSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYnVpbHRp
bl92aWRlb19kZWNvZGVyX2ZhY3RvcnkiKSB7CiAgICAgIjp2aWRlb19jb2RlY3NfYXBpIiwKICAg
ICAiLi4vLi4vbWVkaWE6cnRjX2ludGVybmFsX3ZpZGVvX2NvZGVjcyIsCiAgICAgIi4uLy4uL3J0
Y19iYXNlOnB0cl91dGlsIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQi
LAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAogICBdCiB9CkBA
IC03NSw4ICs3OSwyOSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImJ1aWx0aW5fdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5IikgewogICAgICI6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgIi4uLy4uL21lZGlh
OnJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3MiLAogICAgICIuLi8uLi9tZWRpYTpydGNfbWVkaWFf
YmFzZSIsCisgICAgIi4uLy4uL21lZGlhOnJ0Y192cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHki
LAogICAgICIuLi8uLi9ydGNfYmFzZTpwdHJfdXRpbCIsCisgICAgIi4uLy4uL3J0Y19iYXNlL3N5
c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCisgIF0K
K30KKworcnRjX3N0YXRpY19saWJyYXJ5KCJjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycyIpIHsK
KyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgYWxsb3dfcG9pc29uID0gWyAic29mdHdhcmVfdmlk
ZW9fY29kZWNzIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5
ZXJzLmNjIiwKKyAgICAiY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIsCisgIF0KKworICBk
ZXBzID0gWworICAgICI6dmlkZW9fY29kZWNzX2FwaSIsCisgICAgIi4uLy4uOndlYnJ0Y19jb21t
b24iLAorICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZh
Y2UiLAorICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp3ZWJydGNfdnA4X3RlbXBvcmFs
X2xheWVycyIsCisgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpzeXN0ZW1fd3JhcHBlcnMiLAor
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnk6bWVtb3J5IiwKICAgXQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdmlkZW9fY29kZWNzL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvT1dORVJTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNzBiZGRk
MzRkM2I4Mzc1ZmExMWI0YjM2MDQzZjUxODlhYjc1YTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL09X
TkVSUwpAQCAtMCwwICsxLDQgQEAKK21hZ2plZEB3ZWJydGMub3JnCituaXNzZUB3ZWJydGMub3Jn
CitzcHJhbmdAd2VicnRjLm9yZworYnJhbmR0ckB3ZWJydGMub3JnCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2J1
aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9m
YWN0b3J5LmgKaW5kZXggMWY4ZTc1YzlhZTdkNTJhZGE5NWYzM2JhMGVjNTcyNjEyZDFiNjU4Yi4u
ZDUxNjA3N2Q5OTkxYmIxOGFmOGIwMmNkN2U2ZmVlOWUyZDcwMDhkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9i
dWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNv
ZGVyX2ZhY3RvcnkuaApAQCAtMTQsMTEgKzE0LDEzIEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IAogLy8gQ3JlYXRlcyBhIG5ldyBmYWN0b3J5IHRoYXQgY2FuIGNyZWF0ZSB0aGUgYnVpbHQtaW4g
dHlwZXMgb2YgdmlkZW8gZGVjb2RlcnMuCi1zdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFj
dG9yeT4gQ3JlYXRlQnVpbHRpblZpZGVvRGVjb2RlckZhY3RvcnkoKTsKK1JUQ19FWFBPUlQgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvRGVjb2RlckZhY3Rvcnk+CitDcmVhdGVCdWlsdGluVmlkZW9EZWNv
ZGVyRmFjdG9yeSgpOwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3Mv
YnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LmNjCmluZGV4IGNhMzg5Yjk5ZTNiNTYxMmQ5MWNjN2E4NTIwNjBkYzg2ZmUxZGNi
NGMuLjFkMDgyN2NiYzBjNGQ5OTZmNzE0OTkxNDkwODBiYWU1M2E0ZGMwYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2Rl
Y3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVv
X2VuY29kZXJfZmFjdG9yeS5jYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4K
IAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5n
cy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5o
IgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29kZWMuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21l
ZGlhY29uc3RhbnRzLmgiCkBAIC01OSw3ICs2MCw3IEBAIGNsYXNzIEJ1aWx0aW5WaWRlb0VuY29k
ZXJGYWN0b3J5IDogcHVibGljIFZpZGVvRW5jb2RlckZhY3RvcnkgewogICAgIGlmIChJc0Zvcm1h
dFN1cHBvcnRlZChpbnRlcm5hbF9lbmNvZGVyX2ZhY3RvcnlfLT5HZXRTdXBwb3J0ZWRGb3JtYXRz
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCkpIHsKICAgICAgIGludGVybmFs
X2VuY29kZXIgPQotICAgICAgICAgIGNyaWNrZXQ6OkNvZGVjTmFtZXNFcShmb3JtYXQubmFtZS5j
X3N0cigpLCBjcmlja2V0OjprVnA4Q29kZWNOYW1lKQorICAgICAgICAgIGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6OmtWcDhDb2RlY05hbWUpCiAgICAgICAgICAg
ICAgID8gYWJzbDo6bWFrZV91bmlxdWU8VlA4RW5jb2RlclNpbXVsY2FzdFByb3h5PigKICAgICAg
ICAgICAgICAgICAgICAgaW50ZXJuYWxfZW5jb2Rlcl9mYWN0b3J5Xy5nZXQoKSwgZm9ybWF0KQog
ICAgICAgICAgICAgICA6IGludGVybmFsX2VuY29kZXJfZmFjdG9yeV8tPkNyZWF0ZVZpZGVvRW5j
b2Rlcihmb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9y
eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVv
X2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oCmluZGV4IDZhNjYxOGZiMzI3
MjRlNGExMzhiZGE1MWQ1MWJmOTljZjQxYzllNmQuLjJjNDUzNzIwNWM1OTQxOGY1MmMxMDBmMzA1
YmFkNDM2OGM0NjQyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3Rv
cnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkv
dmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgKQEAgLTE0LDEyICsx
NCwxNCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19l
eHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIENyZWF0ZXMgYSBuZXcgZmFjdG9y
eSB0aGF0IGNhbiBjcmVhdGUgdGhlIGJ1aWx0LWluIHR5cGVzIG9mIHZpZGVvIGVuY29kZXJzLgog
Ly8gVGhlIGZhY3RvcnkgaGFzIHNpbXVsY2FzdCBzdXBwb3J0IGZvciBWUDguCi1zdGQ6OnVuaXF1
ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gQ3JlYXRlQnVpbHRpblZpZGVvRW5jb2RlckZhY3Rv
cnkoKTsKK1JUQ19FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+CitD
cmVhdGVCdWlsdGluVmlkZW9FbmNvZGVyRmFjdG9yeSgpOwogCiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2FwaS92aWRlb19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2Ny
ZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkMjkwZjM5ZmRkNDc3ZWJh
MDVkNDQ5OGEwNWFlZjhjYzA0NTgyNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL2NyZWF0ZV92cDhf
dGVtcG9yYWxfbGF5ZXJzLmNjCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChj
KSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVy
cy5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFwaS92aWRl
b19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVycy5oIgorI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCisKK25hbWVzcGFjZSB3ZWJy
dGMgeworCitzdGQ6OnVuaXF1ZV9wdHI8VnA4VGVtcG9yYWxMYXllcnM+IENyZWF0ZVZwOFRlbXBv
cmFsTGF5ZXJzKAorICAgIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZSB0eXBlLAorICAgIGludCBudW1f
dGVtcG9yYWxfbGF5ZXJzKSB7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgVnA4VGVtcG9y
YWxMYXllcnNUeXBlOjprRml4ZWRQYXR0ZXJuOgorICAgICAgcmV0dXJuIGFic2w6Om1ha2VfdW5p
cXVlPERlZmF1bHRUZW1wb3JhbExheWVycz4obnVtX3RlbXBvcmFsX2xheWVycyk7CisgICAgY2Fz
ZSBWcDhUZW1wb3JhbExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1pYzoKKyAgICAgIC8vIENvbmZl
cmVuY2UgbW9kZSB0ZW1wb3JhbCBsYXllcmluZyBmb3Igc2NyZWVuIGNvbnRlbnQgaW4gYmFzZSBz
dHJlYW0uCisgICAgICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8U2NyZWVuc2hhcmVMYXllcnM+
KG51bV90ZW1wb3JhbF9sYXllcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpOworICB9Cit9CisKK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9s
YXllcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92
aWRlb19jb2RlY3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmYx
NGM4ZWRhMzlmMzRjZWE1Y2NkM2YyZGRmZWE5M2E5ZGRlYjM1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVj
cy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCisjaWZuZGVmIEFQSV9WSURFT19DT0RFQ1NfQ1JFQVRFX1ZQOF9URU1Q
T1JBTF9MQVlFUlNfSF8KKyNkZWZpbmUgQVBJX1ZJREVPX0NPREVDU19DUkVBVEVfVlA4X1RFTVBP
UkFMX0xBWUVSU19IXworCisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitz
dGQ6OnVuaXF1ZV9wdHI8VnA4VGVtcG9yYWxMYXllcnM+IENyZWF0ZVZwOFRlbXBvcmFsTGF5ZXJz
KAorICAgIFZwOFRlbXBvcmFsTGF5ZXJzVHlwZSB0eXBlLAorICAgIGludCBudW1fdGVtcG9yYWxf
bGF5ZXJzKTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIEFQSV9WSURF
T19DT0RFQ1NfQ1JFQVRFX1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3Mvc2Rw
X3ZpZGVvX2Zvcm1hdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgKaW5kZXggYzI1Yjg1N2ZkZTdm
NzA1YzI3NDE0MzVjZjM3MGRkOTljM2VlMTdjOC4uZWRiNzgxOTFjNzUzMThmZWM1ZWMzYjZjMGU2
MWJjY2E2YTQ1YmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy9z
ZHBfdmlkZW9fZm9ybWF0LmgKQEAgLTE0LDExICsxNCwxMyBAQAogI2luY2x1ZGUgPG1hcD4KICNp
bmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5o
IgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gU0RQIHNwZWNpZmljYXRpb24gZm9yIGEgc2lu
Z2xlIHZpZGVvIGNvZGVjLgogLy8gTk9URTogVGhpcyBjbGFzcyBpcyBzdGlsbCB1bmRlciBkZXZl
bG9wbWVudCBhbmQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLXN0cnVjdCBTZHBWaWRlb0Zv
cm1hdCB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBTZHBWaWRlb0Zvcm1hdCB7CiAgIHVzaW5nIFBhcmFt
ZXRlcnMgPSBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+OwogCiAgIGV4cGxpY2l0
IFNkcFZpZGVvRm9ybWF0KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3Mv
dGVzdC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2FwaS92aWRlb19jb2RlY3MvdGVzdC9CVUlMRC5nbgppbmRleCBmYTE5MTYyNWExYTRjMDIxYTU0
NDJmZjkyNGZmNWU4ZWFkMDMxODM2Li42ZjlkY2FhMmQ4YTFkZWUxYTViN2I1ODIwMmU1MWY3YzU1
NzA5ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rlc3QvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0L0JVSUxELmdu
CkBAIC0yMSw2ICsyMSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uOmJ1
aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5IiwKICAgICAgICIuLjpydGNfc29mdHdhcmVfZmFs
bGJhY2tfd3JhcHBlcnMiLAogICAgICAgIi4uOnZpZGVvX2NvZGVjc19hcGkiLAorICAgICAgIi4u
Ly4uOm1vY2tfdmlkZW9fZW5jb2RlciIsCiAgICAgICAiLi4vLi4vLi4vbW9kdWxlcy92aWRlb19j
b2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKICAgICAgICIuLi8uLi8uLi9tb2R1bGVzL3Zp
ZGVvX2NvZGluZzp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAgICAgICAiLi4vLi4vLi4vbW9kdWxl
cy92aWRlb19jb2Rpbmc6d2VicnRjX3ZwOCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rlc3QvYnVpbHRpbl92
aWRlb19lbmNvZGVyX2ZhY3RvcnlfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rlc3QvYnVpbHRpbl92aWRlb19l
bmNvZGVyX2ZhY3RvcnlfdW5pdHRlc3QuY2MKaW5kZXggNzM5NTdjOTk5ZjA0ZDM1YjYxMDJlMDA3
ZGUwMzE0MTNhOTYxOTc4Ny4uMzA3NTRkOWJkYmQxYTE4Yjk4ZTNhZTE5ZjdkNmJiYzhiZDMzOWE4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL3ZpZGVvX2NvZGVjcy90ZXN0L2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5X3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS92aWRlb19jb2RlY3MvdGVzdC9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeV91bml0dGVz
dC5jYwpAQCAtMjcsMTEgKzI3LDExIEBAIFRFU1QoQnVpbHRpblZpZGVvRW5jb2RlckZhY3RvcnlU
ZXN0LCBBbm5vdW5jZXNWcDlBY2NvcmRpbmdUb0J1aWxkRmxhZ3MpIHsKICAgICAgIGJyZWFrOwog
ICAgIH0KICAgfQotI2lmIGRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQotICBFWFBFQ1RfRkFMU0Uo
Y2xhaW1zX3ZwOV9zdXBwb3J0KTsKLSNlbHNlCisjaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkK
ICAgRVhQRUNUX1RSVUUoY2xhaW1zX3ZwOV9zdXBwb3J0KTsKLSNlbmRpZiAgLy8gZGVmaW5lZChS
VENfRElTQUJMRV9WUDkpCisjZWxzZQorICBFWFBFQ1RfRkFMU0UoY2xhaW1zX3ZwOV9zdXBwb3J0
KTsKKyNlbmRpZiAgLy8gZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIH0KIAogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0L3ZpZGVvX2VuY29kZXJfc29mdHdhcmVfZmFs
bGJhY2tfd3JhcHBlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdGVzdC92aWRlb19lbmNvZGVyX3NvZnR3YXJl
X2ZhbGxiYWNrX3dyYXBwZXJfdW5pdHRlc3QuY2MKaW5kZXggOThlYmVkMjMwNTExZDgwNzVlZTI1
NmJhODBlZDk3ZjVkMWQwMmQ1Yi4uYjM3NGYzZDFlMTYzOGRhN2YyNDkwNmYwNmZhOTQyNTBmOWRl
ZjliYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvX2NvZGVjcy90ZXN0L3ZpZGVvX2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tf
d3JhcHBlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3Rlc3QvdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9m
YWxsYmFja193cmFwcGVyX3VuaXR0ZXN0LmNjCkBAIC04LDIzICs4LDI2IEBACiAgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAg
Ki8KIAotI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9m
YWxsYmFja193cmFwcGVyLmgiCi0KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBp
L3Rlc3QvbW9ja192aWRlb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVm
ZmVyLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgor
I2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFj
a193cmFwcGVyLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5
ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRl
L3ZwOC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVk
ZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
aW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVv
X2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vycm9yX2NvZGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9mYWtlY2xvY2suaCIKICNp
bmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCisjaW5jbHVkZSAidGVzdC9nbW9jay5oIgogI2lu
Y2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Cit1c2luZyA6OnRlc3Rp
bmc6OlJldHVybjsKKwogbmFtZXNwYWNlIHsKIGNvbnN0IGludCBrV2lkdGggPSAzMjA7CiBjb25z
dCBpbnQga0hlaWdodCA9IDI0MDsKQEAgLTM0LDYgKzM3LDEyIEBAIGNvbnN0IHNpemVfdCBrTWF4
UGF5bG9hZFNpemUgPSA4MDA7CiBjb25zdCBpbnQga0RlZmF1bHRNaW5QaXhlbHNQZXJGcmFtZSA9
IDMyMCAqIDE4MDsKIGNvbnN0IGludCBrTG93VGhyZXNob2xkID0gMTA7CiBjb25zdCBpbnQga0hp
Z2hUaHJlc2hvbGQgPSAyMDsKKworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBHZXRFbmNvZGVy
SW5mbyhib29sIHRydXN0ZWRfcmF0ZV9jb250cm9sbGVyKSB7CisgIFZpZGVvRW5jb2Rlcjo6RW5j
b2RlckluZm8gaW5mbzsKKyAgaW5mby5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIgPSB0cnVz
dGVkX3JhdGVfY29udHJvbGxlcjsKKyAgcmV0dXJuIGluZm87Cit9CiB9ICAvLyBuYW1lc3BhY2UK
IAogY2xhc3MgVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CkBAIC02Miw5ICs3MSw3IEBAIGNsYXNzIFZpZGVvRW5jb2RlclNv
ZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAg
ICAgKytlbmNvZGVfY291bnRfOwogICAgICAgaWYgKGVuY29kZV9jb21wbGV0ZV9jYWxsYmFja18g
JiYKICAgICAgICAgICBlbmNvZGVfcmV0dXJuX2NvZGVfID09IFdFQlJUQ19WSURFT19DT0RFQ19P
SykgewotICAgICAgICBDb2RlY1NwZWNpZmljSW5mbyBpbmZvOwotICAgICAgICBpbmZvLmNvZGVj
X25hbWUgPSBJbXBsZW1lbnRhdGlvbk5hbWUoKTsKLSAgICAgICAgZW5jb2RlX2NvbXBsZXRlX2Nh
bGxiYWNrXy0+T25FbmNvZGVkSW1hZ2UoRW5jb2RlZEltYWdlKCksICZpbmZvLAorICAgICAgICBl
bmNvZGVfY29tcGxldGVfY2FsbGJhY2tfLT5PbkVuY29kZWRJbWFnZShFbmNvZGVkSW1hZ2UoKSwg
bnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CiAgICAgICB9CiAgICAgICByZXR1cm4gZW5jb2RlX3JldHVybl9jb2RlXzsK
QEAgLTgxLDI2ICs4OCwxOSBAQCBjbGFzcyBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3Jh
cHBlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfT0s7CiAgICAgfQogCi0gICAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVy
cyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlIHsKLSAgICAgICsr
c2V0X2NoYW5uZWxfcGFyYW1ldGVyc19jb3VudF87Ci0gICAgICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX09LOwotICAgIH0KLQogICAgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3Qg
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZV9hbGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVyYXRlKSBvdmVycmlkZSB7CiAgICAgICAr
K3NldF9yYXRlc19jb3VudF87CiAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwog
ICAgIH0KIAotICAgIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCBvdmVycmlkZSB7
CisgICAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZSB7CiAgICAg
ICArK3N1cHBvcnRzX25hdGl2ZV9oYW5kbGVfY291bnRfOwotICAgICAgcmV0dXJuIHN1cHBvcnRz
X25hdGl2ZV9oYW5kbGVfOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0aW9u
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJmYWtlLWVuY29kZXIiOyB9Ci0KLSAgICBW
aWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25zdCBv
dmVycmlkZSB7Ci0gICAgICByZXR1cm4gVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3Moa0xv
d1RocmVzaG9sZCwga0hpZ2hUaHJlc2hvbGQpOworICAgICAgRW5jb2RlckluZm8gaW5mbzsKKyAg
ICAgIGluZm8uc2NhbGluZ19zZXR0aW5ncyA9IFNjYWxpbmdTZXR0aW5ncyhrTG93VGhyZXNob2xk
LCBrSGlnaFRocmVzaG9sZCk7CisgICAgICBpbmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBz
dXBwb3J0c19uYXRpdmVfaGFuZGxlXzsKKyAgICAgIGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSA9
ICJmYWtlLWVuY29kZXIiOworICAgICAgcmV0dXJuIGluZm87CiAgICAgfQogCiAgICAgaW50IGlu
aXRfZW5jb2RlX2NvdW50XyA9IDA7CkBAIC0xMDksNyArMTA5LDYgQEAgY2xhc3MgVmlkZW9FbmNv
ZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CiAgICAgaW50IGVuY29kZV9jb3VudF8gPSAwOwogICAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBl
bmNvZGVfY29tcGxldGVfY2FsbGJhY2tfID0gbnVsbHB0cjsKICAgICBpbnQgcmVsZWFzZV9jb3Vu
dF8gPSAwOwotICAgIGludCBzZXRfY2hhbm5lbF9wYXJhbWV0ZXJzX2NvdW50XyA9IDA7CiAgICAg
aW50IHNldF9yYXRlc19jb3VudF8gPSAwOwogICAgIG11dGFibGUgaW50IHN1cHBvcnRzX25hdGl2
ZV9oYW5kbGVfY291bnRfID0gMDsKICAgICBib29sIHN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfID0g
ZmFsc2U7CkBAIC0xMjIsMTEgKzEyMSw5IEBAIGNsYXNzIFZpZGVvRW5jb2RlclNvZnR3YXJlRmFs
bGJhY2tXcmFwcGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBjb25z
dCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKICAgICAgICAgY29uc3Qg
UlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRhdGlvbikgb3ZlcnJpZGUgewogICAgICAg
KytjYWxsYmFja19jb3VudF87Ci0gICAgICBsYXN0X2NvZGVjX25hbWVfID0gY29kZWNfc3BlY2lm
aWNfaW5mby0+Y29kZWNfbmFtZTsKICAgICAgIHJldHVybiBSZXN1bHQoUmVzdWx0OjpPSywgY2Fs
bGJhY2tfY291bnRfKTsKICAgICB9CiAgICAgaW50IGNhbGxiYWNrX2NvdW50XyA9IDA7Ci0gICAg
c3RkOjpzdHJpbmcgbGFzdF9jb2RlY19uYW1lXzsKICAgfTsKIAogICB2b2lkIFV0aWxpemVGYWxs
YmFja0VuY29kZXIoKTsKQEAgLTEzNCw3ICsxMzEsOCBAQCBjbGFzcyBWaWRlb0VuY29kZXJTb2Z0
d2FyZUZhbGxiYWNrV3JhcHBlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgdm9p
ZCBFbmNvZGVGcmFtZSgpOwogICB2b2lkIEVuY29kZUZyYW1lKGludCBleHBlY3RlZF9yZXQpOwog
ICB2b2lkIENoZWNrTGFzdEVuY29kZXJOYW1lKGNvbnN0IGNoYXIqIGV4cGVjdGVkX25hbWUpIHsK
LSAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWRfbmFtZSwgY2FsbGJhY2tfLmxhc3RfY29kZWNfbmFt
ZV8uY19zdHIoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkX25hbWUsCisgICAgICAgICAgICAg
IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRFbmNvZGVySW5mbygpLmltcGxlbWVudGF0aW9uX25hbWUp
OwogICB9CiAKICAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxz
XzsKQEAgLTI3MSwxNSArMjY5LDYgQEAgVEVTVF9GKFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJh
Y2tXcmFwcGVyVGVzdCwKICAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywgZmFsbGJh
Y2tfd3JhcHBlcl8tPlJlbGVhc2UoKSk7CiB9CiAKLVRFU1RfRihWaWRlb0VuY29kZXJTb2Z0d2Fy
ZUZhbGxiYWNrV3JhcHBlclRlc3QsCi0gICAgICAgU2V0Q2hhbm5lbFBhcmFtZXRlcnNGb3J3YXJk
ZWREdXJpbmdGYWxsYmFjaykgewotICBVdGlsaXplRmFsbGJhY2tFbmNvZGVyKCk7Ci0gIEVYUEVD
VF9FUSgwLCBmYWtlX2VuY29kZXJfLT5zZXRfY2hhbm5lbF9wYXJhbWV0ZXJzX2NvdW50Xyk7Ci0g
IGZhbGxiYWNrX3dyYXBwZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycygxLCAxKTsKLSAgRVhQRUNU
X0VRKDEsIGZha2VfZW5jb2Rlcl8tPnNldF9jaGFubmVsX3BhcmFtZXRlcnNfY291bnRfKTsKLSAg
RVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywgZmFsbGJhY2tfd3JhcHBlcl8tPlJlbGVh
c2UoKSk7Ci19Ci0KIFRFU1RfRihWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlclRl
c3QsCiAgICAgICAgU2V0UmF0ZXNGb3J3YXJkZWREdXJpbmdGYWxsYmFjaykgewogICBVdGlsaXpl
RmFsbGJhY2tFbmNvZGVyKCk7CkBAIC0yOTEsMTUgKzI4MCwxOSBAQCBURVNUX0YoVmlkZW9FbmNv
ZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0LAogCiBURVNUX0YoVmlkZW9FbmNvZGVyU29m
dHdhcmVGYWxsYmFja1dyYXBwZXJUZXN0LAogICAgICAgIFN1cHBvcnRzTmF0aXZlSGFuZGxlRm9y
d2FyZGVkV2l0aG91dEZhbGxiYWNrKSB7Ci0gIGZhbGxiYWNrX3dyYXBwZXJfLT5TdXBwb3J0c05h
dGl2ZUhhbmRsZSgpOworICBmYWxsYmFja193cmFwcGVyXy0+R2V0RW5jb2RlckluZm8oKTsKICAg
RVhQRUNUX0VRKDEsIGZha2VfZW5jb2Rlcl8tPnN1cHBvcnRzX25hdGl2ZV9oYW5kbGVfY291bnRf
KTsKIH0KIAogVEVTVF9GKFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyVGVzdCwK
ICAgICAgICBTdXBwb3J0c05hdGl2ZUhhbmRsZU5vdEZvcndhcmRlZER1cmluZ0ZhbGxiYWNrKSB7
CisgIC8vIEZha2UgZW5jb2RlciBzaWduYWxzIHN1cHBvcnQgZm9yIG5hdGl2ZSBoYW5kbGUsIGRl
ZmF1bHQgKGxpYnZweCkgZG9lcyBub3QuCisgIGZha2VfZW5jb2Rlcl8tPnN1cHBvcnRzX25hdGl2
ZV9oYW5kbGVfID0gdHJ1ZTsKKyAgRVhQRUNUX1RSVUUoZmFsbGJhY2tfd3JhcHBlcl8tPkdldEVu
Y29kZXJJbmZvKCkuc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSk7CiAgIFV0aWxpemVGYWxsYmFja0Vu
Y29kZXIoKTsKLSAgZmFsbGJhY2tfd3JhcHBlcl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCk7Ci0g
IEVYUEVDVF9FUSgwLCBmYWtlX2VuY29kZXJfLT5zdXBwb3J0c19uYXRpdmVfaGFuZGxlX2NvdW50
Xyk7CisgIEVYUEVDVF9GQUxTRShmYWxsYmFja193cmFwcGVyXy0+R2V0RW5jb2RlckluZm8oKS5z
dXBwb3J0c19uYXRpdmVfaGFuZGxlKTsKKyAgLy8gQm90aCB0aW1lcywgYm90aCBlbmNvZGVycyBh
cmUgcXVlcmllZC4KKyAgRVhQRUNUX0VRKDIsIGZha2VfZW5jb2Rlcl8tPnN1cHBvcnRzX25hdGl2
ZV9oYW5kbGVfY291bnRfKTsKICAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywgZmFs
bGJhY2tfd3JhcHBlcl8tPlJlbGVhc2UoKSk7CiB9CiAKQEAgLTQ4OSw3ICs0ODIsNyBAQCBURVNU
X0YoRm9yY2VkRmFsbGJhY2tUZXN0RGlzYWJsZWQsIEdldFNjYWxlU2V0dGluZ3MpIHsKICAgRW5j
b2RlRnJhbWVBbmRWZXJpZnlMYXN0TmFtZSgiZmFrZS1lbmNvZGVyIik7CiAKICAgLy8gRGVmYXVs
dCBtaW4gcGl4ZWxzIHBlciBmcmFtZSBzaG91bGQgYmUgdXNlZC4KLSAgY29uc3QgYXV0byBzZXR0
aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKKyAgY29uc3Qg
YXV0byBzZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRFbmNvZGVySW5mbygpLnNjYWxp
bmdfc2V0dGluZ3M7CiAgIEVYUEVDVF9UUlVFKHNldHRpbmdzLnRocmVzaG9sZHMuaGFzX3ZhbHVl
KCkpOwogICBFWFBFQ1RfRVEoa0RlZmF1bHRNaW5QaXhlbHNQZXJGcmFtZSwgc2V0dGluZ3MubWlu
X3BpeGVsc19wZXJfZnJhbWUpOwogfQpAQCAtNTAwLDcgKzQ5Myw3IEBAIFRFU1RfRihGb3JjZWRG
YWxsYmFja1Rlc3RFbmFibGVkLCBHZXRTY2FsZVNldHRpbmdzV2l0aE5vRmFsbGJhY2spIHsKICAg
RW5jb2RlRnJhbWVBbmRWZXJpZnlMYXN0TmFtZSgiZmFrZS1lbmNvZGVyIik7CiAKICAgLy8gQ29u
ZmlndXJlZCBtaW4gcGl4ZWxzIHBlciBmcmFtZSBzaG91bGQgYmUgdXNlZC4KLSAgY29uc3QgYXV0
byBzZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKKyAg
Y29uc3QgYXV0byBzZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRFbmNvZGVySW5mbygp
LnNjYWxpbmdfc2V0dGluZ3M7CiAgIEVYUEVDVF9FUShrTWluUGl4ZWxzUGVyRnJhbWUsIHNldHRp
bmdzLm1pbl9waXhlbHNfcGVyX2ZyYW1lKTsKICAgQVNTRVJUX1RSVUUoc2V0dGluZ3MudGhyZXNo
b2xkcyk7CiAgIEVYUEVDVF9FUShrTG93VGhyZXNob2xkLCBzZXR0aW5ncy50aHJlc2hvbGRzLT5s
b3cpOwpAQCAtNTEzLDcgKzUwNiw3IEBAIFRFU1RfRihGb3JjZWRGYWxsYmFja1Rlc3RFbmFibGVk
LCBHZXRTY2FsZVNldHRpbmdzV2l0aEZhbGxiYWNrKSB7CiAgIEVuY29kZUZyYW1lQW5kVmVyaWZ5
TGFzdE5hbWUoImxpYnZweCIpOwogCiAgIC8vIENvbmZpZ3VyZWQgbWluIHBpeGVscyBwZXIgZnJh
bWUgc2hvdWxkIGJlIHVzZWQuCi0gIGNvbnN0IGF1dG8gc2V0dGluZ3MgPSBmYWxsYmFja193cmFw
cGVyXy0+R2V0U2NhbGluZ1NldHRpbmdzKCk7CisgIGNvbnN0IGF1dG8gc2V0dGluZ3MgPSBmYWxs
YmFja193cmFwcGVyXy0+R2V0RW5jb2RlckluZm8oKS5zY2FsaW5nX3NldHRpbmdzOwogICBFWFBF
Q1RfVFJVRShzZXR0aW5ncy50aHJlc2hvbGRzLmhhc192YWx1ZSgpKTsKICAgRVhQRUNUX0VRKGtN
aW5QaXhlbHNQZXJGcmFtZSwgc2V0dGluZ3MubWluX3BpeGVsc19wZXJfZnJhbWUpOwogfQpAQCAt
NTI1LDggKzUxOCw3NyBAQCBURVNUX0YoRm9yY2VkRmFsbGJhY2tUZXN0RW5hYmxlZCwgU2NhbGlu
Z0Rpc2FibGVkSWZSZXNpemVPZmYpIHsKICAgRW5jb2RlRnJhbWVBbmRWZXJpZnlMYXN0TmFtZSgi
bGlidnB4Iik7CiAKICAgLy8gU2hvdWxkIGJlIGRpc2FibGVkIGZvciBhdXRvbWF0aWMgcmVzaXpl
IG9mZi4KLSAgY29uc3QgYXV0byBzZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJfLT5HZXRTY2Fs
aW5nU2V0dGluZ3MoKTsKKyAgY29uc3QgYXV0byBzZXR0aW5ncyA9IGZhbGxiYWNrX3dyYXBwZXJf
LT5HZXRFbmNvZGVySW5mbygpLnNjYWxpbmdfc2V0dGluZ3M7CiAgIEVYUEVDVF9GQUxTRShzZXR0
aW5ncy50aHJlc2hvbGRzLmhhc192YWx1ZSgpKTsKIH0KIAorVEVTVChTb2Z0d2FyZUZhbGxiYWNr
RW5jb2RlclRlc3QsIEJvdGhSYXRlQ29udHJvbGxlcnNOb3RUcnVzdGVkKSB7CisgIGF1dG8qIHN3
X2VuY29kZXIgPSBuZXcgdGVzdGluZzo6TmljZU1vY2s8TW9ja1ZpZGVvRW5jb2Rlcj4oKTsKKyAg
YXV0byogaHdfZW5jb2RlciA9IG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrVmlkZW9FbmNvZGVy
PigpOworCisgIEVYUEVDVF9DQUxMKCpzd19lbmNvZGVyLCBHZXRFbmNvZGVySW5mbygpKQorICAg
ICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihHZXRFbmNvZGVySW5mbyhmYWxzZSkpKTsKKyAgRVhQ
RUNUX0NBTEwoKmh3X2VuY29kZXIsIEdldEVuY29kZXJJbmZvKCkpCisgICAgICAuV2lsbFJlcGVh
dGVkbHkoUmV0dXJuKEdldEVuY29kZXJJbmZvKGZhbHNlKSkpOworCisgIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb0VuY29kZXI+IHdyYXBwZXIgPQorICAgICAgQ3JlYXRlVmlkZW9FbmNvZGVyU29mdHdh
cmVGYWxsYmFja1dyYXBwZXIoCisgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rl
cj4oc3dfZW5jb2RlciksCisgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4o
aHdfZW5jb2RlcikpOworICBFWFBFQ1RfRkFMU0Uod3JhcHBlci0+R2V0RW5jb2RlckluZm8oKS5o
YXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIpOworfQorCitURVNUKFNvZnR3YXJlRmFsbGJhY2tF
bmNvZGVyVGVzdCwgU3dSYXRlQ29udHJvbGxlclRydXN0ZWQpIHsKKyAgYXV0byogc3dfZW5jb2Rl
ciA9IG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrVmlkZW9FbmNvZGVyPigpOworICBhdXRvKiBo
d19lbmNvZGVyID0gbmV3IHRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tWaWRlb0VuY29kZXI+KCk7Cisg
IEVYUEVDVF9DQUxMKCpzd19lbmNvZGVyLCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldpbGxS
ZXBlYXRlZGx5KFJldHVybihHZXRFbmNvZGVySW5mbyh0cnVlKSkpOworICBFWFBFQ1RfQ0FMTCgq
aHdfZW5jb2RlciwgR2V0RW5jb2RlckluZm8oKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1
cm4oR2V0RW5jb2RlckluZm8oZmFsc2UpKSk7CisKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5j
b2Rlcj4gd3JhcHBlciA9CisgICAgICBDcmVhdGVWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNr
V3JhcHBlcigKKyAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPihzd19lbmNv
ZGVyKSwKKyAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPihod19lbmNvZGVy
KSk7CisgIEVYUEVDVF9GQUxTRSh3cmFwcGVyLT5HZXRFbmNvZGVySW5mbygpLmhhc190cnVzdGVk
X3JhdGVfY29udHJvbGxlcik7Cit9CisKK1RFU1QoU29mdHdhcmVGYWxsYmFja0VuY29kZXJUZXN0
LCBId1JhdGVDb250cm9sbGVyVHJ1c3RlZCkgeworICBhdXRvKiBzd19lbmNvZGVyID0gbmV3IHRl
c3Rpbmc6Ok5pY2VNb2NrPE1vY2tWaWRlb0VuY29kZXI+KCk7CisgIGF1dG8qIGh3X2VuY29kZXIg
PSBuZXcgdGVzdGluZzo6TmljZU1vY2s8TW9ja1ZpZGVvRW5jb2Rlcj4oKTsKKyAgRVhQRUNUX0NB
TEwoKnN3X2VuY29kZXIsIEdldEVuY29kZXJJbmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHko
UmV0dXJuKEdldEVuY29kZXJJbmZvKGZhbHNlKSkpOworICBFWFBFQ1RfQ0FMTCgqaHdfZW5jb2Rl
ciwgR2V0RW5jb2RlckluZm8oKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oR2V0RW5j
b2RlckluZm8odHJ1ZSkpKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiB3cmFw
cGVyID0KKyAgICAgIENyZWF0ZVZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyKAor
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KHN3X2VuY29kZXIpLAorICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+KGh3X2VuY29kZXIpKTsKKyAgRVhQ
RUNUX1RSVUUod3JhcHBlci0+R2V0RW5jb2RlckluZm8oKS5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRy
b2xsZXIpOworCisgIC8vIFRyaWdnZXIgZmFsbGJhY2sgdG8gc29mdHdhcmUuCisgIEVYUEVDVF9D
QUxMKCpod19lbmNvZGVyLCBFbmNvZGUpCisgICAgICAuV2lsbE9uY2UoUmV0dXJuKFdFQlJUQ19W
SURFT19DT0RFQ19GQUxMQkFDS19TT0ZUV0FSRSkpOworICBWaWRlb0ZyYW1lIGZyYW1lID0gVmlk
ZW9GcmFtZTo6QnVpbGRlcigpLmJ1aWxkKCk7CisgIHdyYXBwZXItPkVuY29kZShmcmFtZSwgbnVs
bHB0ciwgbnVsbHB0cik7CisKKyAgRVhQRUNUX0ZBTFNFKHdyYXBwZXItPkdldEVuY29kZXJJbmZv
KCkuaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKTsKK30KKworVEVTVChTb2Z0d2FyZUZhbGxi
YWNrRW5jb2RlclRlc3QsIEJvdGhSYXRlQ29udHJvbGxlcnNUcnVzdGVkKSB7CisgIGF1dG8qIHN3
X2VuY29kZXIgPSBuZXcgdGVzdGluZzo6TmljZU1vY2s8TW9ja1ZpZGVvRW5jb2Rlcj4oKTsKKyAg
YXV0byogaHdfZW5jb2RlciA9IG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrVmlkZW9FbmNvZGVy
PigpOworICBFWFBFQ1RfQ0FMTCgqc3dfZW5jb2RlciwgR2V0RW5jb2RlckluZm8oKSkKKyAgICAg
IC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oR2V0RW5jb2RlckluZm8odHJ1ZSkpKTsKKyAgRVhQRUNU
X0NBTEwoKmh3X2VuY29kZXIsIEdldEVuY29kZXJJbmZvKCkpCisgICAgICAuV2lsbFJlcGVhdGVk
bHkoUmV0dXJuKEdldEVuY29kZXJJbmZvKHRydWUpKSk7CisKKyAgc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvRW5jb2Rlcj4gd3JhcHBlciA9CisgICAgICBDcmVhdGVWaWRlb0VuY29kZXJTb2Z0d2FyZUZh
bGxiYWNrV3JhcHBlcigKKyAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPihz
d19lbmNvZGVyKSwKKyAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPihod19l
bmNvZGVyKSk7CisgIEVYUEVDVF9UUlVFKHdyYXBwZXItPkdldEVuY29kZXJJbmZvKCkuaGFzX3Ry
dXN0ZWRfcmF0ZV9jb250cm9sbGVyKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19jb2RlYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fY29kZWMuY2MKaW5kZXggZDM2NTM1
YjMxMDA4ZDM2ZGVjMzQwY2I1NTUzZjc1ZDlmODk4OWQyZS4uMDgxOWM4MjJhMDZkZTc5OWMxM2Q3
YTVkMmQ4MjA2ZjQ3MGVkMzcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19jb2RlYy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNz
L3ZpZGVvX2NvZGVjLmNjCkBAIC0xMSwxMyArMTEsMTAgQEAKICNpbmNsdWRlICJhcGkvdmlkZW9f
Y29kZWNzL3ZpZGVvX2NvZGVjLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxh
bGdvcml0aG0+Ci0jaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5n
X2J1aWxkZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKQEAgLTExOCwxMCArMTE1LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGtQYXls
b2FkTmFtZUk0MjAgPSAiSTQyMCI7CiBzdGF0aWMgY29uc3QgY2hhcioga1BheWxvYWROYW1lR2Vu
ZXJpYyA9ICJHZW5lcmljIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBrUGF5bG9hZE5hbWVNdWx0aXBs
ZXggPSAiTXVsdGlwbGV4IjsKIAotc3RhdGljIGJvb2wgQ29kZWNOYW1lc0VxKGNvbnN0IGNoYXIq
IG5hbWUxLCBjb25zdCBjaGFyKiBuYW1lMikgewotICByZXR1cm4gX3N0cmljbXAobmFtZTEsIG5h
bWUyKSA9PSAwOwotfQotCiBjb25zdCBjaGFyKiBDb2RlY1R5cGVUb1BheWxvYWRTdHJpbmcoVmlk
ZW9Db2RlY1R5cGUgdHlwZSkgewogICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIGtWaWRlb0Nv
ZGVjVlA4OgpAQCAtMTM5LDE1ICsxMzIsMTUgQEAgY29uc3QgY2hhciogQ29kZWNUeXBlVG9QYXls
b2FkU3RyaW5nKFZpZGVvQ29kZWNUeXBlIHR5cGUpIHsKIH0KIAogVmlkZW9Db2RlY1R5cGUgUGF5
bG9hZFN0cmluZ1RvQ29kZWNUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7Ci0gIGlmIChD
b2RlY05hbWVzRXEobmFtZS5jX3N0cigpLCBrUGF5bG9hZE5hbWVWcDgpKQorICBpZiAoYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShuYW1lLCBrUGF5bG9hZE5hbWVWcDgpKQogICAgIHJldHVybiBrVmlk
ZW9Db2RlY1ZQODsKLSAgaWYgKENvZGVjTmFtZXNFcShuYW1lLmNfc3RyKCksIGtQYXlsb2FkTmFt
ZVZwOSkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUsIGtQYXlsb2FkTmFtZVZw
OSkpCiAgICAgcmV0dXJuIGtWaWRlb0NvZGVjVlA5OwotICBpZiAoQ29kZWNOYW1lc0VxKG5hbWUu
Y19zdHIoKSwga1BheWxvYWROYW1lSDI2NCkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KG5hbWUsIGtQYXlsb2FkTmFtZUgyNjQpKQogICAgIHJldHVybiBrVmlkZW9Db2RlY0gyNjQ7Ci0g
IGlmIChDb2RlY05hbWVzRXEobmFtZS5jX3N0cigpLCBrUGF5bG9hZE5hbWVJNDIwKSkKKyAgaWYg
KGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZSwga1BheWxvYWROYW1lSTQyMCkpCiAgICAgcmV0
dXJuIGtWaWRlb0NvZGVjSTQyMDsKLSAgaWYgKENvZGVjTmFtZXNFcShuYW1lLmNfc3RyKCksIGtQ
YXlsb2FkTmFtZU11bHRpcGxleCkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUs
IGtQYXlsb2FkTmFtZU11bHRpcGxleCkpCiAgICAgcmV0dXJuIGtWaWRlb0NvZGVjTXVsdGlwbGV4
OwogICByZXR1cm4ga1ZpZGVvQ29kZWNHZW5lcmljOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19j
b2RlYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19jb2RlYy5oCmluZGV4IDViNGViYjI1YzA3NDYwNGJiZWVjZTgxM2Jk
ZDRmNmI2NjIxYzc2NjAuLjlmYmE2MGM0ZTg3MjcxMGZjYzg1NzllZjI0MDk0ZmViZGJiNDc1NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS92aWRlb19jb2RlY3MvdmlkZW9fY29kZWMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2NvZGVjLmgKQEAgLTEx
LDkgKzExLDE0IEBACiAjaWZuZGVmIEFQSV9WSURFT19DT0RFQ1NfVklERU9fQ09ERUNfSF8KICNk
ZWZpbmUgQVBJX1ZJREVPX0NPREVDU19WSURFT19DT0RFQ19IXwogCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAi
YXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgorI2luY2x1ZGUgImFwaS92aWRl
by92aWRlb19jb2RlY190eXBlLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJ
TlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtODYsOCArOTEsOCBAQCBzdHJ1Y3QgVmlkZW9D
b2RlY0gyNjQgewogfTsKIAogLy8gVHJhbnNsYXRlcyBmcm9tIG5hbWUgb2YgY29kZWMgdG8gY29k
ZWMgdHlwZSBhbmQgdmljZSB2ZXJzYS4KLWNvbnN0IGNoYXIqIENvZGVjVHlwZVRvUGF5bG9hZFN0
cmluZyhWaWRlb0NvZGVjVHlwZSB0eXBlKTsKLVZpZGVvQ29kZWNUeXBlIFBheWxvYWRTdHJpbmdU
b0NvZGVjVHlwZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7CitSVENfRVhQT1JUIGNvbnN0IGNo
YXIqIENvZGVjVHlwZVRvUGF5bG9hZFN0cmluZyhWaWRlb0NvZGVjVHlwZSB0eXBlKTsKK1JUQ19F
WFBPUlQgVmlkZW9Db2RlY1R5cGUgUGF5bG9hZFN0cmluZ1RvQ29kZWNUeXBlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lKTsKIAogdW5pb24gVmlkZW9Db2RlY1VuaW9uIHsKICAgVmlkZW9Db2RlY1ZQ
OCBWUDg7CkBAIC05OCw3ICsxMDMsNyBAQCB1bmlvbiBWaWRlb0NvZGVjVW5pb24gewogZW51bSBj
bGFzcyBWaWRlb0NvZGVjTW9kZSB7IGtSZWFsdGltZVZpZGVvLCBrU2NyZWVuc2hhcmluZyB9Owog
CiAvLyBDb21tb24gdmlkZW8gY29kZWMgcHJvcGVydGllcwotY2xhc3MgVmlkZW9Db2RlYyB7Citj
bGFzcyBSVENfRVhQT1JUIFZpZGVvQ29kZWMgewogIHB1YmxpYzoKICAgVmlkZW9Db2RlYygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlci5oCmluZGV4
IDc5OTVmY2NiMDU2M2RhNmUxMGUzY2U5NjlhNTlkMmVjZWU2Njc5OTEuLjM2Y2Y4MGZlODRjNzYz
ZGIyNWVmMmFlNzM5OGIyNDA0MjE2MzQ4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRl
b19jb2RlY3MvdmlkZW9fZGVjb2Rlci5oCkBAIC0xNSw5ICsxNSwxMCBAQAogI2luY2x1ZGUgPHN0
cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vZW5jb2RlZF9p
bWFnZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvdmlkZW9fY29kZWMuaCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5j
bHVkZS92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yNSw3ICsyNiw3IEBAIG5hbWVzcGFjZSB3
ZWJydGMgewogc3RydWN0IENvZGVjU3BlY2lmaWNJbmZvOwogY2xhc3MgVmlkZW9Db2RlYzsKIAot
Y2xhc3MgRGVjb2RlZEltYWdlQ2FsbGJhY2sgeworY2xhc3MgUlRDX0VYUE9SVCBEZWNvZGVkSW1h
Z2VDYWxsYmFjayB7CiAgcHVibGljOgogICB2aXJ0dWFsIH5EZWNvZGVkSW1hZ2VDYWxsYmFjaygp
IHt9CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgY2xhc3MgRGVjb2RlZEltYWdlQ2FsbGJhY2sgewogICB2
aXJ0dWFsIGludDMyX3QgUmVjZWl2ZWREZWNvZGVkRnJhbWUoY29uc3QgdWludDY0X3QgcGljdHVy
ZUlkKTsKIH07CiAKLWNsYXNzIFZpZGVvRGVjb2RlciB7CitjbGFzcyBSVENfRVhQT1JUIFZpZGVv
RGVjb2RlciB7CiAgcHVibGljOgogICB2aXJ0dWFsIH5WaWRlb0RlY29kZXIoKSB7fQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlk
ZW9fY29kZWNzL3ZpZGVvX2VuY29kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXIuY2MKaW5kZXggMDA4
NzgwZTM4YzRjMTllMjAwN2RmMzQ0NDQxZDFiN2FiNGYxNWM2NC4uMTM1Njg3Yzk3MGI3YjZkYjg5
MWJkMjZmODg0YzFhOTY4MmViMjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19j
b2RlY3MvdmlkZW9fZW5jb2Rlci5jYwpAQCAtMTAsNiArMTAsMTAgQEAKIAogI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CisK
KyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8v
IFRPRE8obWZsb2RtYW4pOiBBZGQgZGVmYXVsdCBjb21wbGV4aXR5IGZvciBWUDkgYW5kIFZQOS4K
QEAgLTc5LDYgKzgzLDE0IEBAIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjp+U2NhbGlu
Z1NldHRpbmdzKCkge30KIGNvbnN0ZXhwciBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5nczo6
S09mZgogICAgIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjprT2ZmOwogCitWaWRlb0Vu
Y29kZXI6OkVuY29kZXJJbmZvOjpFbmNvZGVySW5mbygpCisgICAgOiBzY2FsaW5nX3NldHRpbmdz
KFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjprT2ZmKSwKKyAgICAgIHN1cHBvcnRzX25h
dGl2ZV9oYW5kbGUoZmFsc2UpLAorICAgICAgaW1wbGVtZW50YXRpb25fbmFtZSgidW5rbm93biIp
LAorICAgICAgaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKGZhbHNlKSB7fQorCitWaWRlb0Vu
Y29kZXI6OkVuY29kZXJJbmZvOjp+RW5jb2RlckluZm8oKSA9IGRlZmF1bHQ7CisKIGludDMyX3Qg
VmlkZW9FbmNvZGVyOjpTZXRSYXRlcyh1aW50MzJfdCBiaXRyYXRlLCB1aW50MzJfdCBmcmFtZXJh
dGUpIHsKICAgUlRDX05PVFJFQUNIRUQoKSA8PCAiU2V0UmF0ZSh1aW50MzJfdCwgdWludDMyX3Qp
IGlzIGRlcHJlY2F0ZWQuIjsKICAgcmV0dXJuIC0xOwpAQCAtMTAxLDQgKzExMywxNCBAQCBib29s
IFZpZGVvRW5jb2Rlcjo6U3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCB7CiBjb25zdCBjaGFy
KiBWaWRlb0VuY29kZXI6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsKICAgcmV0dXJuICJ1
bmtub3duIjsKIH0KKworLy8gVE9ETyh3ZWJydGM6OTcyMik6IFJlbW92ZSBhbmQgbWFrZSBwdXJl
IHZpcnR1YWwgd2hlbiB0aGUgdGhyZWUgbGVnYWN5CisvLyBtZXRob2RzIGNhbGxlZCBoZXJlIGFy
ZSBnb25lLgorVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBWaWRlb0VuY29kZXI6OkdldEVuY29k
ZXJJbmZvKCkgY29uc3QgeworICBFbmNvZGVySW5mbyBpbmZvOworICBpbmZvLnNjYWxpbmdfc2V0
dGluZ3MgPSBHZXRTY2FsaW5nU2V0dGluZ3MoKTsKKyAgaW5mby5zdXBwb3J0c19uYXRpdmVfaGFu
ZGxlID0gU3VwcG9ydHNOYXRpdmVIYW5kbGUoKTsKKyAgaW5mby5pbXBsZW1lbnRhdGlvbl9uYW1l
ID0gSW1wbGVtZW50YXRpb25OYW1lKCk7CisgIHJldHVybiBpbmZvOworfQogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29k
ZXIuaAppbmRleCA2OGQ5YjQ0NTU4MGYzODgyNTNkMjU2OTE1ZjliOGY5Njk2NGExZGJkLi5lN2Rl
YjdkYmI5Y2RiMjY3MGUwNDI0YzJiYTJkOGEyMGQyMTI5MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVv
X2VuY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXIuaApAQCAtMTYsMTEgKzE2LDEyIEBACiAj
aW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2lu
Y2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFt
ZS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fY29kZWMuaCIKLSNpbmNsdWRl
ICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCkBAIC03Myw3ICs3NCw3IEBAIGNsYXNzIEVuY29kZWRJbWFnZUNh
bGxiYWNrIHsKICAgdmlydHVhbCB2b2lkIE9uRHJvcHBlZEZyYW1lKERyb3BSZWFzb24gcmVhc29u
KSB7fQogfTsKIAotY2xhc3MgVmlkZW9FbmNvZGVyIHsKK2NsYXNzIFJUQ19FWFBPUlQgVmlkZW9F
bmNvZGVyIHsKICBwdWJsaWM6CiAgIHN0cnVjdCBRcFRocmVzaG9sZHMgewogICAgIFFwVGhyZXNo
b2xkcyhpbnQgbCwgaW50IGgpIDogbG93KGwpLCBoaWdoKGgpIHt9CkBAIC0xMDIsMTMgKzEwMywx
MyBAQCBjbGFzcyBWaWRlb0VuY29kZXIgewogICAgIFNjYWxpbmdTZXR0aW5ncyhLT2ZmKTsgIC8v
IE5PTElOVChydW50aW1lL2V4cGxpY2l0KQogICAgIH5TY2FsaW5nU2V0dGluZ3MoKTsKIAotICAg
IGNvbnN0IGFic2w6Om9wdGlvbmFsPFFwVGhyZXNob2xkcz4gdGhyZXNob2xkczsKKyAgICBhYnNs
OjpvcHRpb25hbDxRcFRocmVzaG9sZHM+IHRocmVzaG9sZHM7CiAKICAgICAvLyBXZSB3aWxsIG5l
dmVyIGFzayBmb3IgYSByZXNvbHV0aW9uIGxvd2VyIHRoYW4gdGhpcy4KICAgICAvLyBUT0RPKGt0
aGVsZ2Fzb24pOiBMb3dlciB0aGlzIGxpbWl0IHdoZW4gYmV0dGVyIHRlc3RpbmcKICAgICAvLyBv
biBNZWRpYUNvZGVjIGFuZCBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIHBsYWNlLgog
ICAgIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Avd2VicnRjL2lzc3Vlcy9kZXRh
aWw/aWQ9NzIwNgotICAgIGNvbnN0IGludCBtaW5fcGl4ZWxzX3Blcl9mcmFtZSA9IDMyMCAqIDE4
MDsKKyAgICBpbnQgbWluX3BpeGVsc19wZXJfZnJhbWUgPSAzMjAgKiAxODA7CiAKICAgIHByaXZh
dGU6CiAgICAgLy8gUHJpdmF0ZSBjb25zdHJ1Y3RvcjsgdG8gZ2V0IGFuIG9iamVjdCB3aXRob3V0
IHRocmVzaG9sZHMsIHVzZQpAQCAtMTE2LDYgKzExNywzNiBAQCBjbGFzcyBWaWRlb0VuY29kZXIg
ewogICAgIFNjYWxpbmdTZXR0aW5ncygpOwogICB9OwogCisgIC8vIFN0cnVjdCBjb250YWluaW5n
IG1ldGFkYXRhIGFib3V0IHRoZSBlbmNvZGVyIGltcGxlbWVudGluZyB0aGlzIGludGVyZmFjZS4K
KyAgc3RydWN0IEVuY29kZXJJbmZvIHsKKyAgICBFbmNvZGVySW5mbygpOworICAgIH5FbmNvZGVy
SW5mbygpOworCisgICAgLy8gQW55IGVuY29kZXIgaW1wbGVtZW50YXRpb24gd2lzaGluZyB0byB1
c2UgdGhlIFdlYlJUQyBwcm92aWRlZAorICAgIC8vIHF1YWxpdHkgc2NhbGVyIG11c3QgcG9wdWxh
dGUgdGhpcyBmaWVsZC4KKyAgICBTY2FsaW5nU2V0dGluZ3Mgc2NhbGluZ19zZXR0aW5nczsKKwor
ICAgIC8vIElmIHRydWUsIGVuY29kZXIgc3VwcG9ydHMgd29ya2luZyB3aXRoIGEgbmF0aXZlIGhh
bmRsZSAoZS5nLiB0ZXh0dXJlCisgICAgLy8gaGFuZGxlIGZvciBodyBjb2RlY3MpIHJhdGhlciB0
aGFuIHJlcXVpcmluZyBhIHJhdyBJNDIwIGJ1ZmZlci4KKyAgICBib29sIHN1cHBvcnRzX25hdGl2
ZV9oYW5kbGU7CisKKyAgICAvLyBUaGUgbmFtZSBvZiB0aGlzIHBhcnRpY3VsYXIgZW5jb2RlciBp
bXBsZW1lbnRhdGlvbiwgZS5nLiAibGlidnB4Ii4KKyAgICBzdGQ6OnN0cmluZyBpbXBsZW1lbnRh
dGlvbl9uYW1lOworCisgICAgLy8gSWYgdGhpcyBmaWVsZCBpcyB0cnVlLCB0aGUgZW5jb2RlciBy
YXRlIGNvbnRyb2xsZXIgbXVzdCBwZXJmb3JtCisgICAgLy8gd2VsbCBldmVuIGluIGRpZmZpY3Vs
dCBzaXR1YXRpb25zLCBhbmQgcHJvZHVjZSBjbG9zZSB0byB0aGUgc3BlY2lmaWVkCisgICAgLy8g
dGFyZ2V0IGJpdHJhdGUgc2VlbiBvdmVyIGEgcmVhc29uYWJsZSB0aW1lIHdpbmRvdywgZHJvcCBm
cmFtZXMgaWYKKyAgICAvLyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8ga2VlcCB0aGUgcmF0ZSBjb3Jy
ZWN0LCBhbmQgcmVhY3QgcXVpY2tseSB0bworICAgIC8vIGNoYW5naW5nIGJpdHJhdGUgdGFyZ2V0
cy4gSWYgdGhpcyBtZXRob2QgcmV0dXJucyB0cnVlLCB3ZSBkaXNhYmxlIHRoZQorICAgIC8vIGZy
YW1lIGRyb3BwZXIgaW4gdGhlIG1lZGlhIG9wdGltaXphdGlvbiBtb2R1bGUgYW5kIHJlbHkgZW50
aXJlbHkgb24gdGhlCisgICAgLy8gZW5jb2RlciB0byBwcm9kdWNlIG1lZGlhIGF0IGEgYml0cmF0
ZSB0aGF0IGNsb3NlbHkgbWF0Y2hlcyB0aGUgdGFyZ2V0LgorICAgIC8vIEFueSBvdmVyc2hvb3Rp
bmcgbWF5IHJlc3VsdCBpbiBkZWxheSBidWlsZHVwLiBJZiB0aGlzIG1ldGhvZCByZXR1cm5zCisg
ICAgLy8gZmFsc2UgKGRlZmF1bHQgYmVoYXZpb3IpLCB0aGUgbWVkaWEgb3B0IGZyYW1lIGRyb3Bw
ZXIgd2lsbCBkcm9wIGlucHV0CisgICAgLy8gZnJhbWVzIGlmIGl0IHN1c3BlY3QgZW5jb2RlciBt
aXNiZWhhdmlvci4gTWlzYmVoYXZpb3IgaXMgY29tbW9uLAorICAgIC8vIGVzcGVjaWFsbHkgaW4g
aGFyZHdhcmUgY29kZWNzLiBEaXNhYmxlIG1lZGlhIG9wdCBhdCB5b3VyIG93biByaXNrLgorICAg
IGJvb2wgaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyOworICB9OworCiAgIHN0YXRpYyBWaWRl
b0NvZGVjVlA4IEdldERlZmF1bHRWcDhTZXR0aW5ncygpOwogICBzdGF0aWMgVmlkZW9Db2RlY1ZQ
OSBHZXREZWZhdWx0VnA5U2V0dGluZ3MoKTsKICAgc3RhdGljIFZpZGVvQ29kZWNIMjY0IEdldERl
ZmF1bHRIMjY0U2V0dGluZ3MoKTsKQEAgLTE3MSwxNyArMjAyLDYgQEAgY2xhc3MgVmlkZW9FbmNv
ZGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyog
Y29kZWNfc3BlY2lmaWNfaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxGcmFtZVR5cGU+KiBmcmFtZV90eXBlcykgPSAwOwogCi0gIC8vIEluZm9ybSB0aGUg
ZW5jb2RlciBvZiB0aGUgbmV3IHBhY2tldCBsb3NzIHJhdGUgYW5kIHRoZSByb3VuZC10cmlwIHRp
bWUgb2YKLSAgLy8gdGhlIG5ldHdvcmsuCi0gIC8vCi0gIC8vIElucHV0OgotICAvLyAgICAgICAg
ICAtIHBhY2tldF9sb3NzIDogRnJhY3Rpb24gbG9zdAotICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGxvc3MgcmF0ZSBpbiBwZXJjZW50ID0gMTAwICogcGFja2V0TG9zcyAvIDI1NSkKLSAg
Ly8gICAgICAgICAgLSBydHQgICAgICAgICA6IFJvdW5kLXRyaXAgdGltZSBpbiBtaWxsaXNlY29u
ZHMKLSAgLy8gUmV0dXJuIHZhbHVlICAgICAgICAgICA6IFdFQlJUQ19WSURFT19DT0RFQ19PSyBp
ZiBPSwotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgPDAgLSBFcnJvcnM6IFdFQlJUQ19W
SURFT19DT0RFQ19FUlJPUgotICB2aXJ0dWFsIGludDMyX3QgU2V0Q2hhbm5lbFBhcmFtZXRlcnMo
dWludDMyX3QgcGFja2V0X2xvc3MsIGludDY0X3QgcnR0KSA9IDA7Ci0KICAgLy8gSW5mb3JtIHRo
ZSBlbmNvZGVyIGFib3V0IHRoZSBuZXcgdGFyZ2V0IGJpdCByYXRlLgogICAvLwogICAvLyBJbnB1
dDoKQEAgLTE5NiwxMiArMjE2LDE3IEBAIGNsYXNzIFZpZGVvRW5jb2RlciB7CiAgIHZpcnR1YWwg
aW50MzJfdCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBh
bGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
ZnJhbWVyYXRlKTsKIAotICAvLyBBbnkgZW5jb2RlciBpbXBsZW1lbnRhdGlvbiB3aXNoaW5nIHRv
IHVzZSB0aGUgV2ViUlRDIHByb3ZpZGVkCi0gIC8vIHF1YWxpdHkgc2NhbGVyIG11c3QgaW1wbGVt
ZW50IHRoaXMgbWV0aG9kLgorICAvLyBHZXRTY2FsaW5nU2V0dGluZ3MoKSwgU3VwcG9ydHNOYXRp
dmVIYW5kbGUoKSwgSW1wbGVtZW50YXRpb25OYW1lKCkgYXJlCisgIC8vIGRlcHJlY2F0ZWQsIHVz
ZSBHZXRFbmNvZGVySW5mbygpIGluc3RlYWQuCiAgIHZpcnR1YWwgU2NhbGluZ1NldHRpbmdzIEdl
dFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0OwotCiAgIHZpcnR1YWwgYm9vbCBTdXBwb3J0c05hdGl2
ZUhhbmRsZSgpIGNvbnN0OwogICB2aXJ0dWFsIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFt
ZSgpIGNvbnN0OworCisgIC8vIFJldHVybnMgbWV0YS1kYXRhIGFib3V0IHRoZSBlbmNvZGVyLCBz
dWNoIGFzIGltcGxlbWVudGF0aW9uIG5hbWUuCisgIC8vIFRoZSBvdXRwdXQgb2YgdGhpcyBtZXRo
b2QgbWF5IGNoYW5nZSBkdXJpbmcgcnVudGltZS4gRm9yIGluc3RhbmNlIGlmIGEKKyAgLy8gaGFy
ZHdhcmUgZW5jb2RlciBmYWlscywgaXQgbWF5IGZhbGwgYmFjayB0byBkb2luZyBzb2Z0d2FyZSBl
bmNvZGluZyB1c2luZworICAvLyBhbiBpbXBsZW1lbnRhdGlvbiB3aXRoIGRpZmZlcmVudCBjaGFy
YWN0ZXJpc3RpY3MuCisgIHZpcnR1YWwgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25z
dDsKIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAjZW5kaWYgIC8vIEFQSV9WSURFT19DT0RF
Q1NfVklERU9fRU5DT0RFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZpZy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19j
b2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25maWcuY2MKaW5kZXggNzQ5NzdlYWVhM2ZkZDU5ZmM1NzNj
MWIxODMwNDQyMDlkNzFhODllOS4uNjZmZjdjOTRlYjQzYjc1NmEzMzYyM2M1OThkMmIwNjNhNmU2
ZjUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZpZy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVv
X2VuY29kZXJfY29uZmlnLmNjCkBAIC05LDcgKzksNiBAQAogICovCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZpZy5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2NvbmZp
Zy5oCmluZGV4IGUxMGYwODE5MGM2OGEzMzJjMzFjYzJjZGFhZDQ5ZTJjYWViZjhlMzIuLjlkZDhl
NGZhNWQwMmM0NDk1Y2RiZDk4MzVjNjNhMGNiNTYzMGI5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9f
ZW5jb2Rlcl9jb25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmlnLmgKQEAgLTExLDYg
KzExLDcgQEAKICNpZm5kZWYgQVBJX1ZJREVPX0NPREVDU19WSURFT19FTkNPREVSX0NPTkZJR19I
XwogI2RlZmluZSBBUElfVklERU9fQ09ERUNTX1ZJREVPX0VOQ09ERVJfQ09ORklHX0hfCiAKKyNp
bmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
cGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19j
b2RlY3MvdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyLmNjCmluZGV4IDk5
ZjI5NzA3ZTQ0MWMwMjkyNTBiN2VkZDliMDVkOTgzYzFkOTIxOWMuLmZkMDY3ODU0M2FiZWZhYTNk
NzMwODUyMzIzZDlkNDI1MDg3ZjZjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9zb2Z0
d2FyZV9mYWxsYmFja193cmFwcGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9m
YWxsYmFja193cmFwcGVyLmNjCkBAIC04NywxMiArODcsOSBAQCBjbGFzcyBWaWRlb0VuY29kZXJT
b2Z0d2FyZUZhbGxiYWNrV3JhcHBlciBmaW5hbCA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICBp
bnQzMl90IEVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgICAgICAg
Y29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZyYW1lVHlwZT4qIGZyYW1lX3R5cGVzKSBvdmVycmlk
ZTsKLSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywg
aW50NjRfdCBydHQpIG92ZXJyaWRlOwogICBpbnQzMl90IFNldFJhdGVBbGxvY2F0aW9uKGNvbnN0
IFZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGJpdHJhdGVfYWxsb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIG92ZXJyaWRlOwotICBib29sIFN1
cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIFNjYWxpbmdTZXR0aW5ncyBH
ZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25zdCBvdmVycmlkZTsKLSAgY29uc3QgY2hhciogSW1wbGVt
ZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJ
bmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgogICBib29sIEluaXRGYWxsYmFja0Vu
Y29kZXIoKTsKQEAgLTE2Miw3ICsxNTksNyBAQCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNr
V3JhcHBlcjo6VmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXIoCiAgIGlmIChmb3Jj
ZWRfZmFsbGJhY2tfcG9zc2libGVfKSB7CiAgICAgR2V0Rm9yY2VkRmFsbGJhY2tQYXJhbXNGcm9t
RmllbGRUcmlhbEdyb3VwKAogICAgICAgICAmZm9yY2VkX2ZhbGxiYWNrXy5taW5fcGl4ZWxzXywg
JmZvcmNlZF9mYWxsYmFja18ubWF4X3BpeGVsc18sCi0gICAgICAgIGVuY29kZXJfLT5HZXRTY2Fs
aW5nU2V0dGluZ3MoKS5taW5fcGl4ZWxzX3Blcl9mcmFtZSAtCisgICAgICAgIGVuY29kZXJfLT5H
ZXRFbmNvZGVySW5mbygpLnNjYWxpbmdfc2V0dGluZ3MubWluX3BpeGVsc19wZXJfZnJhbWUgLQog
ICAgICAgICAgICAgMSk7ICAvLyBObyBIVyBiZWxvdy4KICAgfQogfQpAQCAtMTg1LDggKzE4Miw2
IEBAIGJvb2wgVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXI6OkluaXRGYWxsYmFj
a0VuY29kZXIoKSB7CiAgICAgZmFsbGJhY2tfZW5jb2Rlcl8tPlJlZ2lzdGVyRW5jb2RlQ29tcGxl
dGVDYWxsYmFjayhjYWxsYmFja18pOwogICBpZiAocmF0ZXNfc2V0XykKICAgICBmYWxsYmFja19l
bmNvZGVyXy0+U2V0UmF0ZUFsbG9jYXRpb24oYml0cmF0ZV9hbGxvY2F0aW9uXywgZnJhbWVyYXRl
Xyk7Ci0gIGlmIChjaGFubmVsX3BhcmFtZXRlcnNfc2V0XykKLSAgICBmYWxsYmFja19lbmNvZGVy
Xy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0X2xvc3NfLCBydHRfKTsKIAogICAvLyBTaW5j
ZSB3ZSdyZSBzd2l0Y2hpbmcgdG8gdGhlIGZhbGxiYWNrIGVuY29kZXIsIFJlbGVhc2UgdGhlIHJl
YWwgZW5jb2Rlci4gSXQKICAgLy8gbWF5IGJlIHJlLWluaXRpYWxpemVkIHZpYSBJbml0RW5jb2Rl
IGxhdGVyLCBhbmQgaXQgd2lsbCBjb250aW51ZSB0byBnZXQKQEAgLTIwNiw3ICsyMDEsNiBAQCBp
bnQzMl90IFZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tXcmFwcGVyOjpJbml0RW5jb2RlKAog
ICBtYXhfcGF5bG9hZF9zaXplXyA9IG1heF9wYXlsb2FkX3NpemU7CiAgIC8vIENsZWFyIHN0b3Jl
ZCByYXRlL2NoYW5uZWwgcGFyYW1ldGVycy4KICAgcmF0ZXNfc2V0XyA9IGZhbHNlOwotICBjaGFu
bmVsX3BhcmFtZXRlcnNfc2V0XyA9IGZhbHNlOwogICBWYWxpZGF0ZVNldHRpbmdzRm9yRm9yY2Vk
RmFsbGJhY2soKTsKIAogICAvLyBUcnkgdG8gcmVpbml0IGZvcmNlZCBzb2Z0d2FyZSBjb2RlYyBp
ZiBpdCBpcyBpbiB1c2UuCkBAIC0yNzAsMTggKzI2NCw2IEBAIGludDMyX3QgVmlkZW9FbmNvZGVy
U29mdHdhcmVGYWxsYmFja1dyYXBwZXI6OkVuY29kZSgKICAgcmV0dXJuIHJldDsKIH0KIAotaW50
MzJfdCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcjo6U2V0Q2hhbm5lbFBhcmFt
ZXRlcnMoCi0gICAgdWludDMyX3QgcGFja2V0X2xvc3MsCi0gICAgaW50NjRfdCBydHQpIHsKLSAg
Y2hhbm5lbF9wYXJhbWV0ZXJzX3NldF8gPSB0cnVlOwotICBwYWNrZXRfbG9zc18gPSBwYWNrZXRf
bG9zczsKLSAgcnR0XyA9IHJ0dDsKLSAgaW50MzJfdCByZXQgPSBlbmNvZGVyXy0+U2V0Q2hhbm5l
bFBhcmFtZXRlcnMocGFja2V0X2xvc3MsIHJ0dCk7Ci0gIGlmICh1c2VfZmFsbGJhY2tfZW5jb2Rl
cl8pCi0gICAgcmV0dXJuIGZhbGxiYWNrX2VuY29kZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycyhw
YWNrZXRfbG9zcywgcnR0KTsKLSAgcmV0dXJuIHJldDsKLX0KLQogaW50MzJfdCBWaWRlb0VuY29k
ZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcjo6U2V0UmF0ZUFsbG9jYXRpb24oCiAgICAgY29uc3Qg
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZV9hbGxvY2F0aW9uLAogICAgIHVpbnQzMl90
IGZyYW1lcmF0ZSkgewpAQCAtMjk0LDI5ICsyNzYsMjkgQEAgaW50MzJfdCBWaWRlb0VuY29kZXJT
b2Z0d2FyZUZhbGxiYWNrV3JhcHBlcjo6U2V0UmF0ZUFsbG9jYXRpb24oCiAgIHJldHVybiByZXQ7
CiB9CiAKLWJvb2wgVmlkZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXI6OlN1cHBvcnRz
TmF0aXZlSGFuZGxlKCkgY29uc3QgewotICByZXR1cm4gdXNlX2ZhbGxiYWNrX2VuY29kZXJfID8g
ZmFsbGJhY2tfZW5jb2Rlcl8tPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6IGVuY29kZXJfLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgpOwotfQor
VmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3Jh
cHBlcjo6R2V0RW5jb2RlckluZm8oKQorICAgIGNvbnN0IHsKKyAgRW5jb2RlckluZm8gZmFsbGJh
Y2tfZW5jb2Rlcl9pbmZvID0gZmFsbGJhY2tfZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCk7Cisg
IEVuY29kZXJJbmZvIGRlZmF1bHRfZW5jb2Rlcl9pbmZvID0gZW5jb2Rlcl8tPkdldEVuY29kZXJJ
bmZvKCk7CisKKyAgRW5jb2RlckluZm8gaW5mbyA9CisgICAgICB1c2VfZmFsbGJhY2tfZW5jb2Rl
cl8gPyBmYWxsYmFja19lbmNvZGVyX2luZm8gOiBkZWZhdWx0X2VuY29kZXJfaW5mbzsKIAotVmlk
ZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MKLVZpZGVvRW5jb2RlclNvZnR3YXJlRmFsbGJhY2tX
cmFwcGVyOjpHZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25zdCB7CiAgIGlmIChmb3JjZWRfZmFsbGJh
Y2tfcG9zc2libGVfKSB7CiAgICAgY29uc3QgYXV0byBzZXR0aW5ncyA9IGZvcmNlZF9mYWxsYmFj
a18uYWN0aXZlXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmYWxsYmFja19lbmNv
ZGVyXy0+R2V0U2NhbGluZ1NldHRpbmdzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogZW5jb2Rlcl8tPkdldFNjYWxpbmdTZXR0aW5ncygpOwotICAgIHJldHVybiBzZXR0aW5ncy50
aHJlc2hvbGRzCi0gICAgICAgICAgICAgICA/IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdz
KHNldHRpbmdzLnRocmVzaG9sZHMtPmxvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0dGluZ3MudGhyZXNob2xkcy0+aGlnaCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VkX2ZhbGxiYWNrXy5taW5f
cGl4ZWxzXykKLSAgICAgICAgICAgICAgIDogVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3M6
OmtPZmY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZhbGxiYWNrX2VuY29kZXJf
aW5mby5zY2FsaW5nX3NldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRl
ZmF1bHRfZW5jb2Rlcl9pbmZvLnNjYWxpbmdfc2V0dGluZ3M7CisgICAgaW5mby5zY2FsaW5nX3Nl
dHRpbmdzID0KKyAgICAgICAgc2V0dGluZ3MudGhyZXNob2xkcworICAgICAgICAgICAgPyBWaWRl
b0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyhzZXR0aW5ncy50aHJlc2hvbGRzLT5sb3csCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLnRocmVzaG9s
ZHMtPmhpZ2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
cmNlZF9mYWxsYmFja18ubWluX3BpeGVsc18pCisgICAgICAgICAgICA6IFZpZGVvRW5jb2Rlcjo6
U2NhbGluZ1NldHRpbmdzOjprT2ZmOworICB9IGVsc2UgeworICAgIGluZm8uc2NhbGluZ19zZXR0
aW5ncyA9IGRlZmF1bHRfZW5jb2Rlcl9pbmZvLnNjYWxpbmdfc2V0dGluZ3M7CiAgIH0KLSAgcmV0
dXJuIGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKLX0KIAotY29uc3QgY2hhciogVmlk
ZW9FbmNvZGVyU29mdHdhcmVGYWxsYmFja1dyYXBwZXI6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNv
bnN0IHsKLSAgcmV0dXJuIHVzZV9mYWxsYmFja19lbmNvZGVyXyA/IGZhbGxiYWNrX2VuY29kZXJf
LT5JbXBsZW1lbnRhdGlvbk5hbWUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
ZW5jb2Rlcl8tPkltcGxlbWVudGF0aW9uTmFtZSgpOworICByZXR1cm4gaW5mbzsKIH0KIAogYm9v
bCBWaWRlb0VuY29kZXJTb2Z0d2FyZUZhbGxiYWNrV3JhcHBlcjo6SXNGb3JjZWRGYWxsYmFja0Fj
dGl2ZSgpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL3ZpZGVvX2NvZGVjcy92
cDhfdGVtcG9yYWxfbGF5ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzAyMjNhNDIwOTY1NDVhYzg1NzI3ZThj
Y2UzMWVlNzg1MDc4MzA0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVy
cy5oCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBB
UElfVklERU9fQ09ERUNTX1ZQOF9URU1QT1JBTF9MQVlFUlNfSF8KKyNkZWZpbmUgQVBJX1ZJREVP
X0NPREVDU19WUDhfVEVNUE9SQUxfTEFZRVJTX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8dmVjdG9yPgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gU29tZSBub3RlcyBvbiB0
aGUgcHJlcmVxdWlzaXRlcyBvZiB0aGUgVGVtcG9yYWxMYXllcnMgaW50ZXJmYWNlLgorLy8gKiBW
cDhUZW1wb3JhbExheWVycyBpcyBub3QgdGhyZWFkIHNhZmUsIHN5bmNocm9uaXphdGlvbiBpcyB0
aGUgY2FsbGVyJ3MKKy8vICAgcmVzcG9uc2liaWxpdHkuCisvLyAqIFRoZSBlbmNvZGVyIGlzIGFz
c3VtZWQgdG8gZW5jb2RlIGFsbCBmcmFtZXMgaW4gb3JkZXIsIGFuZCBjYWxsYmFja3MgdG8KKy8v
ICAgUG9wdWxhdGVDb2RlY1NwZWNpZmljKCkgLyBGcmFtZUVuY29kZWQoKSBtdXN0IGhhcHBlbiBp
biB0aGUgc2FtZSBvcmRlci4KKy8vCisvLyBUaGlzIG1lYW5zIHRoYXQgaW4gdGhlIGNhc2Ugb2Yg
cGlwZWxpbmluZyBlbmNvZGVycywgaXQgaXMgT0sgdG8gaGF2ZSBhIGNoYWluCisvLyBvZiBjYWxs
cyBzdWNoIGFzIHRoaXM6CisvLyAtIFVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcEEpCisvLyAt
IFVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcEIpCisvLyAtIFBvcHVsYXRlQ29kZWNTcGVjaWZp
Yyh0aW1lc3RhbXBBLCAuLi4pCisvLyAtIFVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcEMpCisv
LyAtIE9uRW5jb2RlRG9uZSh0aW1lc3RhbXBBLCAxMjM0LCAuLi4pCisvLyAtIFVwZGF0ZUxheWVy
Q29uZmlnKHRpbWVzdGFtcEMpCisvLyAtIE9uRW5jb2RlRG9uZSh0aW1lc3RhbXBCLCAwLCAuLi4p
CisvLyAtIE9uRW5jb2RlRG9uZSh0aW1lc3RhbXBDLCAxMjM0LCAuLi4pCisvLyBOb3RlIHRoYXQg
VXBkYXRlTGF5ZXJDb25maWcoKSBmb3IgYSBuZXcgZnJhbWUgY2FuIGhhcHBlbiBiZWZvcmUKKy8v
IEZyYW1lRW5jb2RlZCgpIGZvciBhIHByZXZpb3VzIG9uZSwgYnV0IGNhbGxzIHRoZW1zZWx2ZXMg
bXVzdCBiZSBib3RoCisvLyBzeW5jaHJvbml6ZWQgKGUuZy4gcnVuIG9uIGEgdGFzayBxdWV1ZSkg
YW5kIGluIG9yZGVyIChwZXIgdHlwZSkuCisKKy8vIFR3byBkaWZmZXJlbnQgZmxhdm9ycyBvZiB0
ZW1wb3JhbCBsYXllcnMgYXJlIGN1cnJlbnRseSBhdmFpbGFibGU6CisvLyBrRml4ZWRQYXR0ZXJu
IHVzZXMgYSBmaXhlZCByZXBlYXRpbmcgcGF0dGVybiBvZiAxLTQgbGF5ZXJzLgorLy8ga0JpdHJh
dGVEeW5hbWljIGNhbiBhbGxvY2F0ZSBmcmFtZXMgZHluYW1pY2FsbHkgdG8gMSBvciAyIGxheWVy
cywgYmFzZWQgb24KKy8vIHRoZSBiaXRyYXRlIHByb2R1Y2VkLgorZW51bSBjbGFzcyBWcDhUZW1w
b3JhbExheWVyc1R5cGUgeyBrRml4ZWRQYXR0ZXJuLCBrQml0cmF0ZUR5bmFtaWMgfTsKKworc3Ry
dWN0IENvZGVjU3BlY2lmaWNJbmZvVlA4OworCitzdHJ1Y3QgVnA4RW5jb2RlckNvbmZpZyB7Cisg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtNYXhQZXJpb2RpY2l0eSA9IDE2OworICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBrTWF4TGF5ZXJzID0gNTsKKworICAvLyBOdW1iZXIgb2YgYWN0aXZl
IHRlbXBvcmFsIGxheWVycy4gU2V0IHRvIDAgaWYgbm90IHVzZWQuCisgIHVpbnQzMl90IHRzX251
bWJlcl9sYXllcnM7CisgIC8vIEFycmF5cyBvZiBsZW5ndGggfHRzX251bWJlcl9sYXllcnN8LCBp
bmRpY2F0aW5nIChjdW11bGF0aXZlKSB0YXJnZXQgYml0cmF0ZQorICAvLyBhbmQgcmF0ZSBkZWNp
bWF0b3IgKGUuZy4gNCBpZiBldmVyeSA0dGggZnJhbWUgaXMgaW4gdGhlIGdpdmVuIGxheWVyKSBm
b3IKKyAgLy8gZWFjaCBhY3RpdmUgdGVtcG9yYWwgbGF5ZXIsIHN0YXJ0aW5nIHdpdGggdGVtcG9y
YWwgaWQgMC4KKyAgdWludDMyX3QgdHNfdGFyZ2V0X2JpdHJhdGVba01heExheWVyc107CisgIHVp
bnQzMl90IHRzX3JhdGVfZGVjaW1hdG9yW2tNYXhMYXllcnNdOworCisgIC8vIFRoZSBwZXJpb2Rp
Y2l0eSBvZiB0aGUgdGVtcG9yYWwgcGF0dGVybi4gU2V0IHRvIDAgaWYgbm90IHVzZWQuCisgIHVp
bnQzMl90IHRzX3BlcmlvZGljaXR5OworICAvLyBBcnJheSBvZiBsZW5ndGggfHRzX3BlcmlvZGlj
aXR5fCBpbmRpY2F0aW5nIHRoZSBzZXF1ZW5jZSBvZiB0ZW1wb3JhbCBpZCdzCisgIC8vIHRvIGFz
c2lnbiB0byBpbmNvbWluZyBmcmFtZXMuCisgIHVpbnQzMl90IHRzX2xheWVyX2lkW2tNYXhQZXJp
b2RpY2l0eV07CisKKyAgLy8gVGFyZ2V0IGJpdHJhdGUsIGluIGJwcy4KKyAgdWludDMyX3QgcmNf
dGFyZ2V0X2JpdHJhdGU7CisKKyAgLy8gQ2xhbXAgUVAgdG8gbWluL21heC4gVXNlIDAgdG8gZGlz
YWJsZSBjbGFtcGluZy4KKyAgdWludDMyX3QgcmNfbWluX3F1YW50aXplcjsKKyAgdWludDMyX3Qg
cmNfbWF4X3F1YW50aXplcjsKK307CisKKy8vIERlZmluZWQgYml0LW1hc2thYmxlIHJlZmVyZW5j
ZSB0byB0aGUgdGhyZWUgYnVmZmVycyBhdmFpbGFibGUgaW4gVlA4LgorZW51bSBjbGFzcyBWcDhC
dWZmZXJSZWZlcmVuY2UgOiB1aW50OF90IHsKKyAga05vbmUgPSAwLAorICBrTGFzdCA9IDEsCisg
IGtHb2xkZW4gPSAyLAorICBrQWx0cmVmID0gNAorfTsKKworLy8gVGhpcyBpbnRlcmZhY2UgZGVm
aW5lcyBhIHdheSBvZiBnZXR0aW5nIHRoZSBlbmNvZGVyIHNldHRpbmdzIG5lZWRlZCB0bworLy8g
cmVhbGl6ZSBhIHRlbXBvcmFsIGxheWVyIHN0cnVjdHVyZS4KK2NsYXNzIFZwOFRlbXBvcmFsTGF5
ZXJzIHsKKyBwdWJsaWM6CisgIGVudW0gQnVmZmVyRmxhZ3MgOiBpbnQgeworICAgIGtOb25lID0g
MCwKKyAgICBrUmVmZXJlbmNlID0gMSwKKyAgICBrVXBkYXRlID0gMiwKKyAgICBrUmVmZXJlbmNl
QW5kVXBkYXRlID0ga1JlZmVyZW5jZSB8IGtVcGRhdGUsCisgIH07CisgIGVudW0gRnJlZXplRW50
cm9weSB7IGtGcmVlemVFbnRyb3B5IH07CisKKyAgc3RydWN0IEZyYW1lQ29uZmlnIHsKKyAgICBG
cmFtZUNvbmZpZygpOworCisgICAgRnJhbWVDb25maWcoQnVmZmVyRmxhZ3MgbGFzdCwgQnVmZmVy
RmxhZ3MgZ29sZGVuLCBCdWZmZXJGbGFncyBhcmYpOworICAgIEZyYW1lQ29uZmlnKEJ1ZmZlckZs
YWdzIGxhc3QsCisgICAgICAgICAgICAgICAgQnVmZmVyRmxhZ3MgZ29sZGVuLAorICAgICAgICAg
ICAgICAgIEJ1ZmZlckZsYWdzIGFyZiwKKyAgICAgICAgICAgICAgICBGcmVlemVFbnRyb3B5KTsK
KworICAgIGJvb2wgZHJvcF9mcmFtZTsKKyAgICBCdWZmZXJGbGFncyBsYXN0X2J1ZmZlcl9mbGFn
czsKKyAgICBCdWZmZXJGbGFncyBnb2xkZW5fYnVmZmVyX2ZsYWdzOworICAgIEJ1ZmZlckZsYWdz
IGFyZl9idWZmZXJfZmxhZ3M7CisKKyAgICAvLyBUaGUgZW5jb2RlciBsYXllciBJRCBpcyB1c2Vk
IHRvIHV0aWxpemUgdGhlIGNvcnJlY3QgYml0cmF0ZSBhbGxvY2F0b3IKKyAgICAvLyBpbnNpZGUg
dGhlIGVuY29kZXIuIEl0IGRvZXMgbm90IGNvbnRyb2wgcmVmZXJlbmNlcyBub3IgZGV0ZXJtaW5l
IHdoaWNoCisgICAgLy8gImFjdHVhbCIgdGVtcG9yYWwgbGF5ZXIgdGhpcyBpcy4gVGhlIHBhY2tl
dGl6ZXIgdGVtcG9yYWwgaW5kZXggZGV0ZXJtaW5lcworICAgIC8vIHdoaWNoIGxheWVyIHRoZSBl
bmNvZGVkIGZyYW1lIHNob3VsZCBiZSBwYWNrZXRpemVkIGludG8uCisgICAgLy8gTm9ybWFsbHkg
dGhlc2UgYXJlIHRoZSBzYW1lLCBidXQgY3VycmVudCB0ZW1wb3JhbC1sYXllciBzdHJhdGVnaWVz
IGZvcgorICAgIC8vIHNjcmVlbnNoYXJlIHVzZSBvbmUgYml0cmF0ZSBhbGxvY2F0b3IgZm9yIGFs
bCBsYXllcnMsIGJ1dCBhdHRlbXB0IHRvCisgICAgLy8gcGFja2V0aXplIC8gdXRpbGl6ZSByZWZl
cmVuY2VzIHRvIHNwbGl0IGEgc3RyZWFtIGludG8gbXVsdGlwbGUgbGF5ZXJzLAorICAgIC8vIHdp
dGggZGlmZmVyZW50IHF1YW50aXplciBzZXR0aW5ncywgdG8gaGl0IHRhcmdldCBiaXRyYXRlLgor
ICAgIC8vIFRPRE8ocGJvcyk6IFNjcmVlbnNoYXJlIGxheWVycyBhcmUgYmVpbmcgcmVjb25zaWRl
cmVkIGF0IHRoZSB0aW1lIG9mCisgICAgLy8gd3JpdGluZywgd2UgbWlnaHQgYmUgYWJsZSB0byBy
ZW1vdmUgdGhpcyBkaXN0aW5jdGlvbiwgYW5kIGhhdmUgYSB0ZW1wb3JhbAorICAgIC8vIGxheWVy
IGltcGx5IGJvdGggKHRoZSBub3JtYWwgY2FzZSkuCisgICAgaW50IGVuY29kZXJfbGF5ZXJfaWQ7
CisgICAgaW50IHBhY2tldGl6ZXJfdGVtcG9yYWxfaWR4OworCisgICAgYm9vbCBsYXllcl9zeW5j
OworCisgICAgYm9vbCBmcmVlemVfZW50cm9weTsKKworICAgIC8vIEluZGljYXRlcyBpbiB3aGlj
aCBvcmRlciB0aGUgZW5jb2RlciBzaG91bGQgc2VhcmNoIHRoZSByZWZlcmVuY2UgYnVmZmVycwor
ICAgIC8vIHdoZW4gZG9pbmcgbW90aW9uIHByZWRpY3Rpb24uIFNldCB0byBrTm9uZSB0byB1c2Ug
dW5zcGVjaWZpZWQgb3JkZXIuIEFueQorICAgIC8vIGJ1ZmZlciBpbmRpY2F0ZWQgaGVyZSBtdXN0
IG5vdCBoYXZlIHRoZSBjb3JyZXNwb25kaW5nIG5vX3JlZiBiaXQgc2V0LgorICAgIC8vIElmIGFs
bCB0aHJlZSBidWZmZXJzIGNhbiBiZSByZWZlcmVuY2UsIHRoZSBvbmUgbm90IGxpc3RlZCBoZXJl
IHNob3VsZCBiZQorICAgIC8vIHNlYXJjaGVkIGxhc3QuCisgICAgVnA4QnVmZmVyUmVmZXJlbmNl
IGZpcnN0X3JlZmVyZW5jZTsKKyAgICBWcDhCdWZmZXJSZWZlcmVuY2Ugc2Vjb25kX3JlZmVyZW5j
ZTsKKworICAgcHJpdmF0ZToKKyAgICBGcmFtZUNvbmZpZyhCdWZmZXJGbGFncyBsYXN0LAorICAg
ICAgICAgICAgICAgIEJ1ZmZlckZsYWdzIGdvbGRlbiwKKyAgICAgICAgICAgICAgICBCdWZmZXJG
bGFncyBhcmYsCisgICAgICAgICAgICAgICAgYm9vbCBmcmVlemVfZW50cm9weSk7CisgIH07CisK
KyAgdmlydHVhbCB+VnA4VGVtcG9yYWxMYXllcnMoKSA9IGRlZmF1bHQ7CisKKyAgLy8gSWYgdGhp
cyBtZXRob2QgcmV0dXJucyB0cnVlLCB0aGUgZW5jb2RlciBpcyBmcmVlIHRvIGRyb3AgZnJhbWVz
IGZvcgorICAvLyBpbnN0YW5jZSBpbiBhbiBlZmZvcnQgdG8gdXBob2xkIGVuY29kaW5nIGJpdHJh
dGUuCisgIC8vIElmIHRoaXMgcmV0dXJuIGZhbHNlLCB0aGUgZW5jb2RlciBtdXN0IG5vdCBkcm9w
IGFueSBmcmFtZXMgdW5sZXNzOgorICAvLyAgMS4gUmVxdWVzdGVkIHRvIGRvIHNvIHZpYSBGcmFt
ZUNvbmZpZy5kcm9wX2ZyYW1lCisgIC8vICAyLiBUaGUgZnJhbWUgdG8gYmUgZW5jb2RlZCBpcyBy
ZXF1ZXN0ZWQgdG8gYmUgYSBrZXlmcmFtZQorICAvLyAgMy4gVGhlIGVuY29kZWQgZGV0ZWN0ZWQg
YSBsYXJnZSBvdmVyc2hvb3QgYW5kIGRlY2lkZWQgdG8gZHJvcCBhbmQgdGhlbgorICAvLyAgICAg
cmUtZW5jb2RlIHRoZSBpbWFnZSBhdCBhIGxvdyBiaXRyYXRlLiBJbiB0aGlzIGNhc2UgdGhlIGVu
Y29kZXIgc2hvdWxkCisgIC8vICAgICBjYWxsIE9uRW5jb2RlRG9uZSgpIG9uY2Ugd2l0aCBzaXpl
ID0gMCB0byBpbmRpY2F0ZSBkcm9wLCBhbmQgdGhlbiBjYWxsCisgIC8vICAgICBPbkVuY29kZURv
bmUoKSBhZ2FpbiB3aGVuIHRoZSBmcmFtZSBoYXMgYWN0dWFsbHkgYmVlbiBlbmNvZGVkLgorICB2
aXJ0dWFsIGJvb2wgU3VwcG9ydHNFbmNvZGVyRnJhbWVEcm9wcGluZygpIGNvbnN0ID0gMDsKKwor
ICAvLyBOZXcgdGFyZ2V0IGJpdHJhdGUsIHBlciB0ZW1wb3JhbCBsYXllci4KKyAgdmlydHVhbCB2
b2lkIE9uUmF0ZXNVcGRhdGVkKGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiYgYml0cmF0ZXNf
YnBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lcmF0ZV9mcHMpID0g
MDsKKworICAvLyBDYWxsZWQgYnkgdGhlIGVuY29kZXIgYmVmb3JlIGVuY29kaW5nIGEgZnJhbWUu
IHxjZmd8IGNvbnRhaW5zIHRoZSBjdXJyZW50CisgIC8vIGNvbmZpZ3VyYXRpb24uIElmIHRoZSBU
ZW1wb3JhbExheWVycyBpbnN0YW5jZSB3aXNoZXMgYW55IHBhcnQgb2YgdGhhdAorICAvLyB0byBi
ZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZW5jb2RlIHN0ZXAsIHxjZmd8IHNob3VsZCBiZSBjaGFuZ2Vk
IGFuZCB0aGVuCisgIC8vIHJldHVybiB0cnVlLiBJZiBmYWxzZSBpcyByZXR1cm5lZCwgdGhlIGVu
Y29kZXIgd2lsbCBwcm9jZWVkIHdpdGhvdXQKKyAgLy8gdXBkYXRpbmcgdGhlIGNvbmZpZ3VyYXRp
b24uCisgIHZpcnR1YWwgYm9vbCBVcGRhdGVDb25maWd1cmF0aW9uKFZwOEVuY29kZXJDb25maWcq
IGNmZykgPSAwOworCisgIC8vIFJldHVybnMgdGhlIHJlY29tbWVuZGVkIFZQOCBlbmNvZGUgZmxh
Z3MgbmVlZGVkLCBhbmQgbW92ZXMgdGhlIHRlbXBvcmFsCisgIC8vIHBhdHRlcm4gdG8gdGhlIG5l
eHQgZnJhbWUuCisgIC8vIFRoZSB0aW1lc3RhbXAgbWF5IGJlIHVzZWQgYXMgYm90aCBhIHRpbWUg
YW5kIGEgdW5pcXVlIGlkZW50aWZpZXIsIGFuZCBzbworICAvLyB0aGUgY2FsbGVyIG11c3QgbWFr
ZSBzdXJlIG5vIHR3byBmcmFtZXMgdXNlIHRoZSBzYW1lIHRpbWVzdGFtcC4KKyAgLy8gVGhlIHRp
bWVzdGFtcCB1c2VzIGEgOTBrSHogUlRQIGNsb2NrLgorICAvLyBBZnRlciBjYWxsaW5nIHRoaXMg
bWV0aG9kLCBmaXJzdCBjYWxsIHRoZSBhY3R1YWwgZW5jb2RlciB3aXRoIHRoZSBwcm92aWRlZAor
ICAvLyBmcmFtZSBjb25maWd1cmF0aW9uLCBhbmQgdGhlbiBPbkVuY29kZURvbmUoKSBiZWxvdy4K
KyAgdmlydHVhbCBGcmFtZUNvbmZpZyBVcGRhdGVMYXllckNvbmZpZyh1aW50MzJfdCBydHBfdGlt
ZXN0YW1wKSA9IDA7CisKKyAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBlbmNvZGUgc3RlcCBpcyBkb25l
LiB8cnRwX3RpbWVzdGFtcHwgbXVzdCBtYXRjaCB0aGUKKyAgLy8gcGFyYW1ldGVyIHVzZSBpbiB0
aGUgVXBkYXRlTGF5ZXJDb25maWcoKSBjYWxsLgorICAvLyB8aXNfa2V5ZnJhbWV8IG11c3QgYmUg
dHJ1ZSBpZmYgdGhlIGVuY29kZXIgZGVjaWRlZCB0byBlbmNvZGUgdGhpcyBmcmFtZSBhcworICAv
LyBhIGtleWZyYW1lLgorICAvLyBJZiB0aGUgZW5jb2RlciBkZWNpZGVkIHRvIGRyb3AgdGhpcyBm
cmFtZSwgfHNpemVfYnl0ZXN8IG11c3QgYmUgc2V0IHRvIDAsCisgIC8vIG90aGVyd2lzZSBpdCBz
aG91bGQgaW5kaWNhdGUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGVuY29kZWQgZnJhbWUuCisg
IC8vIElmIHxzaXplX2J5dGVzfCA+IDAsIGFuZCB8dnA4X2luZm98IGlzIG5vdCBudWxsLCB0aGUg
VGVtcG9yYWxMYXllcnMKKyAgLy8gaW5zdGFuY2UgbXkgdXBkYXRlIHx2cDhfaW5mb3wgd2l0aCBj
b2RlYyBzcGVjaWZpYyBkYXRhIHN1Y2ggYXMgdGVtcG9yYWwgaWQuCisgIC8vIFNvbWUgZmllbGRz
IG9mIHRoaXMgc3RydWN0IG1heSBoYXZlIGFscmVhZHkgYmVlbiBwb3B1bGF0ZWQgYnkgdGhlIGVu
Y29kZXIsCisgIC8vIGNoZWNrIGJlZm9yZSBvdmVyd3JpdGluZy4KKyAgLy8gSWYgfHNpemVfYnl0
ZXN8ID4gMCwgfHFwfCBzaG91bGQgaW5kaWNhdGUgdGhlIGZyYW1lLWxldmVsIFFQIHRoaXMgZnJh
bWUgd2FzCisgIC8vIGVuY29kZWQgYXQuIElmIHRoZSBlbmNvZGVyIGRvZXMgbm90IHN1cHBvcnQg
ZXh0cmFjdGluZyB0aGlzLCB8cXB8IHNob3VsZCBiZQorICAvLyBzZXQgdG8gMC4KKyAgdmlydHVh
bCB2b2lkIE9uRW5jb2RlRG9uZSh1aW50MzJfdCBydHBfdGltZXN0YW1wLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBzaXplX2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNfa2V5ZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVjU3BlY2lmaWNJbmZvVlA4KiB2
cDhfaW5mbykgPSAwOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8v
IEFQSV9WSURFT19DT0RFQ1NfVlA4X1RFTVBPUkFMX0xBWUVSU19IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9CVUlMRC5nbgpp
bmRleCA5MWNlY2U5M2NiOWFhZTUwYWI1MWFiYTY0NTM5MWRlNTM1ZDE1M2QxLi5jMDQ1YWY2Mzc2
NTFkMzdlODgxYWUzMWE4OWQ3MjM3YmJmZTk2YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9CVUlMRC5nbgorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9CVUlMRC5nbgpAQCAtMjYs
MTkgKzI2LDEzIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW8iKSB7CiAgICAgImF1ZGlvX3Ry
YW5zcG9ydF9pbXBsLmgiLAogICAgICJjaGFubmVsX3JlY2VpdmUuY2MiLAogICAgICJjaGFubmVs
X3JlY2VpdmUuaCIsCi0gICAgImNoYW5uZWxfcmVjZWl2ZV9wcm94eS5jYyIsCi0gICAgImNoYW5u
ZWxfcmVjZWl2ZV9wcm94eS5oIiwKICAgICAiY2hhbm5lbF9zZW5kLmNjIiwKICAgICAiY2hhbm5l
bF9zZW5kLmgiLAotICAgICJjaGFubmVsX3NlbmRfcHJveHkuY2MiLAotICAgICJjaGFubmVsX3Nl
bmRfcHJveHkuaCIsCiAgICAgImNvbnZlcnNpb24uaCIsCiAgICAgIm51bGxfYXVkaW9fcG9sbGVy
LmNjIiwKICAgICAibnVsbF9hdWRpb19wb2xsZXIuaCIsCiAgICAgInJlbWl4X3Jlc2FtcGxlLmNj
IiwKICAgICAicmVtaXhfcmVzYW1wbGUuaCIsCi0gICAgInRpbWVfaW50ZXJ2YWwuY2MiLAotICAg
ICJ0aW1lX2ludGVydmFsLmgiLAogICAgICJ0cmFuc3BvcnRfZmVlZGJhY2tfcGFja2V0X2xvc3Nf
dHJhY2tlci5jYyIsCiAgICAgInRyYW5zcG9ydF9mZWVkYmFja19wYWNrZXRfbG9zc190cmFja2Vy
LmgiLAogICBdCkBAIC00OSw3ICs0Myw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW8iKSB7
CiAgIH0KIAogICBkZXBzID0gWwotICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vYXBp
OmFycmF5X3ZpZXciLAogICAgICIuLi9hcGk6Y2FsbF9hcGkiLAogICAgICIuLi9hcGk6bGliamlu
Z2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCkBAIC02NSwxMiArNTgsMTQgQEAgcnRjX3N0YXRpY19s
aWJyYXJ5KCJhdWRpbyIpIHsKICAgICAiLi4vY29tbW9uX2F1ZGlvOmNvbW1vbl9hdWRpb19jIiwK
ICAgICAiLi4vbG9nZ2luZzpydGNfZXZlbnRfYXVkaW8iLAogICAgICIuLi9sb2dnaW5nOnJ0Y19l
dmVudF9sb2dfYXBpIiwKKyAgICAiLi4vbG9nZ2luZzpydGNfc3RyZWFtX2NvbmZpZyIsCiAgICAg
Ii4uL21vZHVsZXMvYXVkaW9fY29kaW5nIiwKKyAgICAiLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6
YXVkaW9fZW5jb2Rlcl9jbmciLAogICAgICIuLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzphdWRpb19m
b3JtYXRfY29udmVyc2lvbiIsCiAgICAgIi4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmF1ZGlvX25l
dHdvcmtfYWRhcHRvcl9jb25maWciLAotICAgICIuLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpjbmci
LAogICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZSIsCiAgICAgIi4uL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZyIsCisgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAg
ICIuLi9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlcjpiaXRyYXRlX2NvbnRyb2xsZXIiLAogICAg
ICIuLi9tb2R1bGVzL3BhY2luZzpwYWNpbmciLAogICAgICIuLi9tb2R1bGVzL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvcjpyZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IiLApAQCAtMTI4LDIyICsxMjMs
MzQgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAibW9ja192b2VfY2hhbm5lbF9w
cm94eS5oIiwKICAgICAgICJyZW1peF9yZXNhbXBsZV91bml0dGVzdC5jYyIsCiAgICAgICAidGVz
dC9hdWRpb19zdGF0c190ZXN0LmNjIiwKLSAgICAgICJ0aW1lX2ludGVydmFsX3VuaXR0ZXN0LmNj
IiwKKyAgICAgICJ0ZXN0L21lZGlhX3RyYW5zcG9ydF90ZXN0LmNjIiwKICAgICAgICJ0cmFuc3Bv
cnRfZmVlZGJhY2tfcGFja2V0X2xvc3NfdHJhY2tlcl91bml0dGVzdC5jYyIsCiAgICAgXQogICAg
IGRlcHMgPSBbCiAgICAgICAiOmF1ZGlvIiwKICAgICAgICI6YXVkaW9fZW5kX3RvX2VuZF90ZXN0
IiwKKyAgICAgICIuLi9hcGk6bG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0IiwKICAgICAgICIuLi9h
cGk6bW9ja19hdWRpb19taXhlciIsCisgICAgICAiLi4vYXBpOm1vY2tfZnJhbWVfZGVjcnlwdG9y
IiwKKyAgICAgICIuLi9hcGk6bW9ja19mcmFtZV9lbmNyeXB0b3IiLAogICAgICAgIi4uL2FwaS9h
dWRpbzphdWRpb19mcmFtZV9hcGkiLAorICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9f
Y29kZWNzX2FwaSIsCisgICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjcy9vcHVzOmF1ZGlvX2RlY29k
ZXJfb3B1cyIsCisgICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjcy9vcHVzOmF1ZGlvX2VuY29kZXJf
b3B1cyIsCiAgICAgICAiLi4vYXBpL3VuaXRzOnRpbWVfZGVsdGEiLAorICAgICAgIi4uL2NhbGw6
bW9ja19iaXRyYXRlX2FsbG9jYXRvciIsCiAgICAgICAiLi4vY2FsbDptb2NrX2NhbGxfaW50ZXJm
YWNlcyIsCiAgICAgICAiLi4vY2FsbDptb2NrX3J0cF9pbnRlcmZhY2VzIiwKICAgICAgICIuLi9j
YWxsOnJ0cF9pbnRlcmZhY2VzIiwKICAgICAgICIuLi9jYWxsOnJ0cF9yZWNlaXZlciIsCiAgICAg
ICAiLi4vY29tbW9uX2F1ZGlvIiwKICAgICAgICIuLi9sb2dnaW5nOm1vY2tzIiwKKyAgICAgICIu
Li9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2Rl
dmljZTptb2NrX2F1ZGlvX2RldmljZSIsCisgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVz
dHNfdXRpbHMiLAorCisgICAgICAjIEZvciBUZXN0QXVkaW9EZXZpY2VNb2R1bGUKKyAgICAgICIu
Li9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfaW1wbCIsCiAgICAgICAiLi4vbW9k
dWxlcy9hdWRpb19taXhlcjphdWRpb19taXhlcl9pbXBsIiwKICAgICAgICIuLi9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzIiwKICAgICAgICIuLi9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6bW9ja3MiLApAQCAtMTUxLDkgKzE1OCw5IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL21vZHVsZXMvcGFjaW5nOnBhY2luZyIsCiAg
ICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcDptb2NrX3J0cF9ydGNwIiwKICAgICAgICIuLi9tb2R1
bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCisgICAgICAiLi4vbW9kdWxlcy91dGlsaXR5
IiwKICAgICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIs
CiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAogICAgICAgIi4uL3J0Y19iYXNl
OnNhZmVfY29tcGFyZSIsCiAgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOnN5c3RlbV93cmFwcGVy
cyIsCkBAIC0yNjUsNiArMjcyLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAi
Li4vdGVzdDpzaW5nbGVfdGhyZWFkZWRfdGFza19xdWV1ZSIsCiAgICAgICAiLi4vdGVzdDp0ZXN0
X2NvbW1vbiIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4uL3Rlc3Q6dGVz
dF9zdXBwb3J0IiwKICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgICAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJl
YW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9h
dWRpb19yZWNlaXZlX3N0cmVhbS5jYwppbmRleCA1NjNlOGEwMzZhMzAzZmRlNzg3OWNhZWRhNmM1
MjNiOGMyZDA0M2I5Li44ZDRhZmUwOGUzNzY3Y2JlYmI2NGQ2ZGJkZTRhNzJjZDIzNjMyYWQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRp
by9hdWRpb19yZWNlaXZlX3N0cmVhbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbS5jYwpAQCAtMTMsMTQg
KzEzLDE3IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNs
dWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgor
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAiYXBp
L2NhbGwvYXVkaW9fc2luay5oIgorI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSAiYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uaCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19z
dGF0ZS5oIgotI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfcmVjZWl2ZV9wcm94eS5oIgorI2luY2x1
ZGUgImF1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5oIgogI2luY2x1ZGUgImF1ZGlvL2NvbnZlcnNpb24u
aCIKKyNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcuaCIKICNpbmNsdWRlICJjYWxsL3J0cF9zdHJl
YW1fcmVjZWl2ZXJfY29udHJvbGxlcl9pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCkBAIC01Myw2ICs1Niw3
IEBAIHN0ZDo6c3RyaW5nIEF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnOjpUb1N0cmluZygpIGNv
bnN0IHsKICAgc3MgPDwgIntydHA6ICIgPDwgcnRwLlRvU3RyaW5nKCk7CiAgIHNzIDw8ICIsIHJ0
Y3Bfc2VuZF90cmFuc3BvcnQ6ICIKICAgICAgPDwgKHJ0Y3Bfc2VuZF90cmFuc3BvcnQgPyAiKFRy
YW5zcG9ydCkiIDogIm51bGwiKTsKKyAgc3MgPDwgIiwgbWVkaWFfdHJhbnNwb3J0OiAiIDw8ICht
ZWRpYV90cmFuc3BvcnQgPyAiKFRyYW5zcG9ydCkiIDogIm51bGwiKTsKICAgaWYgKCFzeW5jX2dy
b3VwLmVtcHR5KCkpIHsKICAgICBzcyA8PCAiLCBzeW5jX2dyb3VwOiAiIDw8IHN5bmNfZ3JvdXA7
CiAgIH0KQEAgLTYyLDcgKzY2LDcgQEAgc3RkOjpzdHJpbmcgQXVkaW9SZWNlaXZlU3RyZWFtOjpD
b25maWc6OlRvU3RyaW5nKCkgY29uc3QgewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogbmFtZXNw
YWNlIHsKLXN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxSZWNlaXZlUHJveHk+IENyZWF0ZUNo
YW5uZWxBbmRQcm94eSgKK3N0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxSZWNlaXZlSW50ZXJm
YWNlPiBDcmVhdGVDaGFubmVsUmVjZWl2ZSgKICAgICB3ZWJydGM6OkF1ZGlvU3RhdGUqIGF1ZGlv
X3N0YXRlLAogICAgIFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKICAgICBj
b25zdCB3ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnJiBjb25maWcsCkBAIC03MCwx
MyArNzQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFJlY2VpdmVQcm94eT4gQ3Jl
YXRlQ2hhbm5lbEFuZFByb3h5KAogICBSVENfRENIRUNLKGF1ZGlvX3N0YXRlKTsKICAgaW50ZXJu
YWw6OkF1ZGlvU3RhdGUqIGludGVybmFsX2F1ZGlvX3N0YXRlID0KICAgICAgIHN0YXRpY19jYXN0
PGludGVybmFsOjpBdWRpb1N0YXRlKj4oYXVkaW9fc3RhdGUpOwotICByZXR1cm4gYWJzbDo6bWFr
ZV91bmlxdWU8dm9lOjpDaGFubmVsUmVjZWl2ZVByb3h5PigKLSAgICAgIGFic2w6Om1ha2VfdW5p
cXVlPHZvZTo6Q2hhbm5lbFJlY2VpdmU+KAotICAgICAgICAgIG1vZHVsZV9wcm9jZXNzX3RocmVh
ZCwgaW50ZXJuYWxfYXVkaW9fc3RhdGUtPmF1ZGlvX2RldmljZV9tb2R1bGUoKSwKLSAgICAgICAg
ICBjb25maWcucnRjcF9zZW5kX3RyYW5zcG9ydCwgZXZlbnRfbG9nLCBjb25maWcucnRwLnJlbW90
ZV9zc3JjLAotICAgICAgICAgIGNvbmZpZy5qaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzLAotICAg
ICAgICAgIGNvbmZpZy5qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSwgY29uZmlnLmRlY29k
ZXJfZmFjdG9yeSwKLSAgICAgICAgICBjb25maWcuY29kZWNfcGFpcl9pZCwgY29uZmlnLmZyYW1l
X2RlY3J5cHRvcikpOworICByZXR1cm4gdm9lOjpDcmVhdGVDaGFubmVsUmVjZWl2ZSgKKyAgICAg
IG1vZHVsZV9wcm9jZXNzX3RocmVhZCwgaW50ZXJuYWxfYXVkaW9fc3RhdGUtPmF1ZGlvX2Rldmlj
ZV9tb2R1bGUoKSwKKyAgICAgIGNvbmZpZy5tZWRpYV90cmFuc3BvcnQsIGNvbmZpZy5ydGNwX3Nl
bmRfdHJhbnNwb3J0LCBldmVudF9sb2csCisgICAgICBjb25maWcucnRwLnJlbW90ZV9zc3JjLCBj
b25maWcuaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cywKKyAgICAgIGNvbmZpZy5qaXR0ZXJfYnVm
ZmVyX2Zhc3RfYWNjZWxlcmF0ZSwgY29uZmlnLmppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zLAor
ICAgICAgY29uZmlnLmRlY29kZXJfZmFjdG9yeSwgY29uZmlnLmNvZGVjX3BhaXJfaWQsIGNvbmZp
Zy5mcmFtZV9kZWNyeXB0b3IsCisgICAgICBjb25maWcuY3J5cHRvX29wdGlvbnMpOwogfQogfSAg
Ly8gbmFtZXNwYWNlCiAKQEAgLTkyLDEwICs5NiwxMCBAQCBBdWRpb1JlY2VpdmVTdHJlYW06OkF1
ZGlvUmVjZWl2ZVN0cmVhbSgKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXVkaW9fc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnRfbG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUNoYW5uZWxBbmRQ
cm94eShhdWRpb19zdGF0ZS5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2xvZykpIHt9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgQ3JlYXRlQ2hhbm5lbFJlY2VpdmUoYXVkaW9fc3RhdGUuZ2V0KCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX3Byb2Nlc3Nf
dGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVu
dF9sb2cpKSB7fQogCiBBdWRpb1JlY2VpdmVTdHJlYW06OkF1ZGlvUmVjZWl2ZVN0cmVhbSgKICAg
ICBSdHBTdHJlYW1SZWNlaXZlckNvbnRyb2xsZXJJbnRlcmZhY2UqIHJlY2VpdmVyX2NvbnRyb2xs
ZXIsCkBAIC0xMDMsMjUgKzEwNywyNiBAQCBBdWRpb1JlY2VpdmVTdHJlYW06OkF1ZGlvUmVjZWl2
ZVN0cmVhbSgKICAgICBjb25zdCB3ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnJiBj
b25maWcsCiAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4m
IGF1ZGlvX3N0YXRlLAogICAgIHdlYnJ0Yzo6UnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsUmVjZWl2ZVByb3h5PiBjaGFubmVsX3Byb3h5KQot
ICAgIDogYXVkaW9fc3RhdGVfKGF1ZGlvX3N0YXRlKSwgY2hhbm5lbF9wcm94eV8oc3RkOjptb3Zl
KGNoYW5uZWxfcHJveHkpKSB7CisgICAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFJlY2Vp
dmVJbnRlcmZhY2U+IGNoYW5uZWxfcmVjZWl2ZSkKKyAgICA6IGF1ZGlvX3N0YXRlXyhhdWRpb19z
dGF0ZSksIGNoYW5uZWxfcmVjZWl2ZV8oc3RkOjptb3ZlKGNoYW5uZWxfcmVjZWl2ZSkpIHsKICAg
UlRDX0xPRyhMU19JTkZPKSA8PCAiQXVkaW9SZWNlaXZlU3RyZWFtOiAiIDw8IGNvbmZpZy5ydHAu
cmVtb3RlX3NzcmM7Ci0gIFJUQ19EQ0hFQ0socmVjZWl2ZXJfY29udHJvbGxlcik7Ci0gIFJUQ19E
Q0hFQ0socGFja2V0X3JvdXRlcik7CiAgIFJUQ19EQ0hFQ0soY29uZmlnLmRlY29kZXJfZmFjdG9y
eSk7CiAgIFJUQ19EQ0hFQ0soY29uZmlnLnJ0Y3Bfc2VuZF90cmFuc3BvcnQpOwogICBSVENfRENI
RUNLKGF1ZGlvX3N0YXRlXyk7Ci0gIFJUQ19EQ0hFQ0soY2hhbm5lbF9wcm94eV8pOworICBSVENf
RENIRUNLKGNoYW5uZWxfcmVjZWl2ZV8pOwogCiAgIG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVj
a2VyXy5EZXRhY2hGcm9tVGhyZWFkKCk7CiAKLSAgLy8gQ29uZmlndXJlIGJhbmR3aWR0aCBlc3Rp
bWF0aW9uLgotICBjaGFubmVsX3Byb3h5Xy0+UmVnaXN0ZXJSZWNlaXZlckNvbmdlc3Rpb25Db250
cm9sT2JqZWN0cyhwYWNrZXRfcm91dGVyKTsKLQotICAvLyBSZWdpc3RlciB3aXRoIHRyYW5zcG9y
dC4KLSAgcnRwX3N0cmVhbV9yZWNlaXZlcl8gPSByZWNlaXZlcl9jb250cm9sbGVyLT5DcmVhdGVS
ZWNlaXZlcigKLSAgICAgIGNvbmZpZy5ydHAucmVtb3RlX3NzcmMsIGNoYW5uZWxfcHJveHlfLmdl
dCgpKTsKKyAgaWYgKCFjb25maWcubWVkaWFfdHJhbnNwb3J0KSB7CisgICAgUlRDX0RDSEVDSyhy
ZWNlaXZlcl9jb250cm9sbGVyKTsKKyAgICBSVENfRENIRUNLKHBhY2tldF9yb3V0ZXIpOworICAg
IC8vIENvbmZpZ3VyZSBiYW5kd2lkdGggZXN0aW1hdGlvbi4KKyAgICBjaGFubmVsX3JlY2VpdmVf
LT5SZWdpc3RlclJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKHBhY2tldF9yb3V0ZXIp
OwogCisgICAgLy8gUmVnaXN0ZXIgd2l0aCB0cmFuc3BvcnQuCisgICAgcnRwX3N0cmVhbV9yZWNl
aXZlcl8gPSByZWNlaXZlcl9jb250cm9sbGVyLT5DcmVhdGVSZWNlaXZlcigKKyAgICAgICAgY29u
ZmlnLnJ0cC5yZW1vdGVfc3NyYywgY2hhbm5lbF9yZWNlaXZlXy5nZXQoKSk7CisgIH0KICAgQ29u
ZmlndXJlU3RyZWFtKHRoaXMsIGNvbmZpZywgdHJ1ZSk7CiB9CiAKQEAgLTEyOSw4ICsxMzQsMTAg
QEAgQXVkaW9SZWNlaXZlU3RyZWFtOjp+QXVkaW9SZWNlaXZlU3RyZWFtKCkgewogICBSVENfRENI
RUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIFJUQ19MT0coTFNfSU5GTykg
PDwgIn5BdWRpb1JlY2VpdmVTdHJlYW06ICIgPDwgY29uZmlnXy5ydHAucmVtb3RlX3NzcmM7CiAg
IFN0b3AoKTsKLSAgY2hhbm5lbF9wcm94eV8tPkRpc2Fzc29jaWF0ZVNlbmRDaGFubmVsKCk7Ci0g
IGNoYW5uZWxfcHJveHlfLT5SZXNldFJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCk7
CisgIGNoYW5uZWxfcmVjZWl2ZV8tPlNldEFzc29jaWF0ZWRTZW5kQ2hhbm5lbChudWxscHRyKTsK
KyAgaWYgKCFjb25maWdfLm1lZGlhX3RyYW5zcG9ydCkgeworICAgIGNoYW5uZWxfcmVjZWl2ZV8t
PlJlc2V0UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKKyAgfQogfQogCiB2b2lk
IEF1ZGlvUmVjZWl2ZVN0cmVhbTo6UmVjb25maWd1cmUoCkBAIC0xNDQsNyArMTUxLDcgQEAgdm9p
ZCBBdWRpb1JlY2VpdmVTdHJlYW06OlN0YXJ0KCkgewogICBpZiAocGxheWluZ18pIHsKICAgICBy
ZXR1cm47CiAgIH0KLSAgY2hhbm5lbF9wcm94eV8tPlN0YXJ0UGxheW91dCgpOworICBjaGFubmVs
X3JlY2VpdmVfLT5TdGFydFBsYXlvdXQoKTsKICAgcGxheWluZ18gPSB0cnVlOwogICBhdWRpb19z
dGF0ZSgpLT5BZGRSZWNlaXZpbmdTdHJlYW0odGhpcyk7CiB9CkBAIC0xNTQsNyArMTYxLDcgQEAg
dm9pZCBBdWRpb1JlY2VpdmVTdHJlYW06OlN0b3AoKSB7CiAgIGlmICghcGxheWluZ18pIHsKICAg
ICByZXR1cm47CiAgIH0KLSAgY2hhbm5lbF9wcm94eV8tPlN0b3BQbGF5b3V0KCk7CisgIGNoYW5u
ZWxfcmVjZWl2ZV8tPlN0b3BQbGF5b3V0KCk7CiAgIHBsYXlpbmdfID0gZmFsc2U7CiAgIGF1ZGlv
X3N0YXRlKCktPlJlbW92ZVJlY2VpdmluZ1N0cmVhbSh0aGlzKTsKIH0KQEAgLTE2NSwxMSArMTcy
LDExIEBAIHdlYnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFtOjpTdGF0cyBBdWRpb1JlY2VpdmVTdHJl
YW06OkdldFN0YXRzKCkgY29uc3QgewogICBzdGF0cy5yZW1vdGVfc3NyYyA9IGNvbmZpZ18ucnRw
LnJlbW90ZV9zc3JjOwogCiAgIHdlYnJ0Yzo6Q2FsbFJlY2VpdmVTdGF0aXN0aWNzIGNhbGxfc3Rh
dHMgPQotICAgICAgY2hhbm5lbF9wcm94eV8tPkdldFJUQ1BTdGF0aXN0aWNzKCk7CisgICAgICBj
aGFubmVsX3JlY2VpdmVfLT5HZXRSVENQU3RhdGlzdGljcygpOwogICAvLyBUT0RPKHNvbGVuYmVy
Zyk6IERvbid0IHJldHVybiBoZXJlIGlmIHdlIGNhbid0IGdldCB0aGUgY29kZWMgLSByZXR1cm4g
dGhlCiAgIC8vICAgICAgICAgICAgICAgICAgc3RhdHMgd2UgKmNhbiogZ2V0LgogICB3ZWJydGM6
OkNvZGVjSW5zdCBjb2RlY19pbnN0ID0gezB9OwotICBpZiAoIWNoYW5uZWxfcHJveHlfLT5HZXRS
ZWNDb2RlYygmY29kZWNfaW5zdCkpIHsKKyAgaWYgKCFjaGFubmVsX3JlY2VpdmVfLT5HZXRSZWND
b2RlYygmY29kZWNfaW5zdCkpIHsKICAgICByZXR1cm4gc3RhdHM7CiAgIH0KIApAQCAtMTg2LDEz
ICsxOTMsMTMgQEAgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OlN0YXRzIEF1ZGlvUmVjZWl2
ZVN0cmVhbTo6R2V0U3RhdHMoKSBjb25zdCB7CiAgIGlmIChjb2RlY19pbnN0LnBsZnJlcSAvIDEw
MDAgPiAwKSB7CiAgICAgc3RhdHMuaml0dGVyX21zID0gY2FsbF9zdGF0cy5qaXR0ZXJTYW1wbGVz
IC8gKGNvZGVjX2luc3QucGxmcmVxIC8gMTAwMCk7CiAgIH0KLSAgc3RhdHMuZGVsYXlfZXN0aW1h
dGVfbXMgPSBjaGFubmVsX3Byb3h5Xy0+R2V0RGVsYXlFc3RpbWF0ZSgpOwotICBzdGF0cy5hdWRp
b19sZXZlbCA9IGNoYW5uZWxfcHJveHlfLT5HZXRTcGVlY2hPdXRwdXRMZXZlbEZ1bGxSYW5nZSgp
OwotICBzdGF0cy50b3RhbF9vdXRwdXRfZW5lcmd5ID0gY2hhbm5lbF9wcm94eV8tPkdldFRvdGFs
T3V0cHV0RW5lcmd5KCk7Ci0gIHN0YXRzLnRvdGFsX291dHB1dF9kdXJhdGlvbiA9IGNoYW5uZWxf
cHJveHlfLT5HZXRUb3RhbE91dHB1dER1cmF0aW9uKCk7CisgIHN0YXRzLmRlbGF5X2VzdGltYXRl
X21zID0gY2hhbm5lbF9yZWNlaXZlXy0+R2V0RGVsYXlFc3RpbWF0ZSgpOworICBzdGF0cy5hdWRp
b19sZXZlbCA9IGNoYW5uZWxfcmVjZWl2ZV8tPkdldFNwZWVjaE91dHB1dExldmVsRnVsbFJhbmdl
KCk7CisgIHN0YXRzLnRvdGFsX291dHB1dF9lbmVyZ3kgPSBjaGFubmVsX3JlY2VpdmVfLT5HZXRU
b3RhbE91dHB1dEVuZXJneSgpOworICBzdGF0cy50b3RhbF9vdXRwdXRfZHVyYXRpb24gPSBjaGFu
bmVsX3JlY2VpdmVfLT5HZXRUb3RhbE91dHB1dER1cmF0aW9uKCk7CiAKICAgLy8gR2V0IGppdHRl
ciBidWZmZXIgYW5kIHRvdGFsIGRlbGF5IChhbGcgKyBqaXR0ZXIgKyBwbGF5b3V0KSBzdGF0cy4K
LSAgYXV0byBucyA9IGNoYW5uZWxfcHJveHlfLT5HZXROZXR3b3JrU3RhdGlzdGljcygpOworICBh
dXRvIG5zID0gY2hhbm5lbF9yZWNlaXZlXy0+R2V0TmV0d29ya1N0YXRpc3RpY3MoKTsKICAgc3Rh
dHMuaml0dGVyX2J1ZmZlcl9tcyA9IG5zLmN1cnJlbnRCdWZmZXJTaXplOwogICBzdGF0cy5qaXR0
ZXJfYnVmZmVyX3ByZWZlcnJlZF9tcyA9IG5zLnByZWZlcnJlZEJ1ZmZlclNpemU7CiAgIHN0YXRz
LnRvdGFsX3NhbXBsZXNfcmVjZWl2ZWQgPSBucy50b3RhbFNhbXBsZXNSZWNlaXZlZDsKQEAgLTIw
Nyw4ICsyMTQsMTAgQEAgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OlN0YXRzIEF1ZGlvUmVj
ZWl2ZVN0cmVhbTo6R2V0U3RhdHMoKSBjb25zdCB7CiAgIHN0YXRzLnNlY29uZGFyeV9kaXNjYXJk
ZWRfcmF0ZSA9IFExNFRvRmxvYXQobnMuY3VycmVudFNlY29uZGFyeURpc2NhcmRlZFJhdGUpOwog
ICBzdGF0cy5hY2NlbGVyYXRlX3JhdGUgPSBRMTRUb0Zsb2F0KG5zLmN1cnJlbnRBY2NlbGVyYXRl
UmF0ZSk7CiAgIHN0YXRzLnByZWVtcHRpdmVfZXhwYW5kX3JhdGUgPSBRMTRUb0Zsb2F0KG5zLmN1
cnJlbnRQcmVlbXB0aXZlUmF0ZSk7CisgIHN0YXRzLmppdHRlcl9idWZmZXJfZmx1c2hlcyA9IG5z
LnBhY2tldEJ1ZmZlckZsdXNoZXM7CisgIHN0YXRzLmRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1w
bGVzID0gbnMuZGVsYXllZFBhY2tldE91dGFnZVNhbXBsZXM7CiAKLSAgYXV0byBkcyA9IGNoYW5u
ZWxfcHJveHlfLT5HZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKCk7CisgIGF1dG8gZHMgPSBjaGFu
bmVsX3JlY2VpdmVfLT5HZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKCk7CiAgIHN0YXRzLmRlY29k
aW5nX2NhbGxzX3RvX3NpbGVuY2VfZ2VuZXJhdG9yID0gZHMuY2FsbHNfdG9fc2lsZW5jZV9nZW5l
cmF0b3I7CiAgIHN0YXRzLmRlY29kaW5nX2NhbGxzX3RvX25ldGVxID0gZHMuY2FsbHNfdG9fbmV0
ZXE7CiAgIHN0YXRzLmRlY29kaW5nX25vcm1hbCA9IGRzLmRlY29kZWRfbm9ybWFsOwpAQCAtMjIy
LDIzICsyMzEsMjMgQEAgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OlN0YXRzIEF1ZGlvUmVj
ZWl2ZVN0cmVhbTo6R2V0U3RhdHMoKSBjb25zdCB7CiAKIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFt
OjpTZXRTaW5rKEF1ZGlvU2lua0ludGVyZmFjZSogc2luaykgewogICBSVENfRENIRUNLX1JVTl9P
Tigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7Ci0gIGNoYW5uZWxfcHJveHlfLT5TZXRTaW5rKHNp
bmspOworICBjaGFubmVsX3JlY2VpdmVfLT5TZXRTaW5rKHNpbmspOwogfQogCiB2b2lkIEF1ZGlv
UmVjZWl2ZVN0cmVhbTo6U2V0R2FpbihmbG9hdCBnYWluKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09O
KCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKLSAgY2hhbm5lbF9wcm94eV8tPlNldENoYW5uZWxP
dXRwdXRWb2x1bWVTY2FsaW5nKGdhaW4pOworICBjaGFubmVsX3JlY2VpdmVfLT5TZXRDaGFubmVs
T3V0cHV0Vm9sdW1lU2NhbGluZyhnYWluKTsKIH0KIAogc3RkOjp2ZWN0b3I8UnRwU291cmNlPiBB
dWRpb1JlY2VpdmVTdHJlYW06OkdldFNvdXJjZXMoKSBjb25zdCB7CiAgIFJUQ19EQ0hFQ0tfUlVO
X09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKLSAgcmV0dXJuIGNoYW5uZWxfcHJveHlfLT5H
ZXRTb3VyY2VzKCk7CisgIHJldHVybiBjaGFubmVsX3JlY2VpdmVfLT5HZXRTb3VyY2VzKCk7CiB9
CiAKIEF1ZGlvTWl4ZXI6OlNvdXJjZTo6QXVkaW9GcmFtZUluZm8gQXVkaW9SZWNlaXZlU3RyZWFt
OjpHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCiAgICAgaW50IHNhbXBsZV9yYXRlX2h6LAogICAgIEF1
ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKSB7Ci0gIHJldHVybiBjaGFubmVsX3Byb3h5Xy0+R2V0QXVk
aW9GcmFtZVdpdGhJbmZvKHNhbXBsZV9yYXRlX2h6LCBhdWRpb19mcmFtZSk7CisgIHJldHVybiBj
aGFubmVsX3JlY2VpdmVfLT5HZXRBdWRpb0ZyYW1lV2l0aEluZm8oc2FtcGxlX3JhdGVfaHosIGF1
ZGlvX2ZyYW1lKTsKIH0KIAogaW50IEF1ZGlvUmVjZWl2ZVN0cmVhbTo6U3NyYygpIGNvbnN0IHsK
QEAgLTI0Niw3ICsyNTUsNyBAQCBpbnQgQXVkaW9SZWNlaXZlU3RyZWFtOjpTc3JjKCkgY29uc3Qg
ewogfQogCiBpbnQgQXVkaW9SZWNlaXZlU3RyZWFtOjpQcmVmZXJyZWRTYW1wbGVSYXRlKCkgY29u
c3QgewotICByZXR1cm4gY2hhbm5lbF9wcm94eV8tPlByZWZlcnJlZFNhbXBsZVJhdGUoKTsKKyAg
cmV0dXJuIGNoYW5uZWxfcmVjZWl2ZV8tPlByZWZlcnJlZFNhbXBsZVJhdGUoKTsKIH0KIAogaW50
IEF1ZGlvUmVjZWl2ZVN0cmVhbTo6aWQoKSBjb25zdCB7CkBAIC0yNTYsMzIgKzI2NSwyOSBAQCBp
bnQgQXVkaW9SZWNlaXZlU3RyZWFtOjppZCgpIGNvbnN0IHsKIAogYWJzbDo6b3B0aW9uYWw8U3lu
Y2FibGU6OkluZm8+IEF1ZGlvUmVjZWl2ZVN0cmVhbTo6R2V0SW5mbygpIGNvbnN0IHsKICAgUlRD
X0RDSEVDS19SVU5fT04oJm1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXyk7Ci0gIGFic2w6
Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBpbmZvID0gY2hhbm5lbF9wcm94eV8tPkdldFN5bmNJ
bmZvKCk7CisgIGFic2w6Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBpbmZvID0gY2hhbm5lbF9y
ZWNlaXZlXy0+R2V0U3luY0luZm8oKTsKIAogICBpZiAoIWluZm8pCiAgICAgcmV0dXJuIGFic2w6
Om51bGxvcHQ7CiAKLSAgaW5mby0+Y3VycmVudF9kZWxheV9tcyA9IGNoYW5uZWxfcHJveHlfLT5H
ZXREZWxheUVzdGltYXRlKCk7CisgIGluZm8tPmN1cnJlbnRfZGVsYXlfbXMgPSBjaGFubmVsX3Jl
Y2VpdmVfLT5HZXREZWxheUVzdGltYXRlKCk7CiAgIHJldHVybiBpbmZvOwogfQogCiB1aW50MzJf
dCBBdWRpb1JlY2VpdmVTdHJlYW06OkdldFBsYXlvdXRUaW1lc3RhbXAoKSBjb25zdCB7CiAgIC8v
IENhbGxlZCBvbiB2aWRlbyBjYXB0dXJlIHRocmVhZC4KLSAgcmV0dXJuIGNoYW5uZWxfcHJveHlf
LT5HZXRQbGF5b3V0VGltZXN0YW1wKCk7CisgIHJldHVybiBjaGFubmVsX3JlY2VpdmVfLT5HZXRQ
bGF5b3V0VGltZXN0YW1wKCk7CiB9CiAKIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpTZXRNaW5p
bXVtUGxheW91dERlbGF5KGludCBkZWxheV9tcykgewogICBSVENfRENIRUNLX1JVTl9PTigmbW9k
dWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfKTsKLSAgcmV0dXJuIGNoYW5uZWxfcHJveHlfLT5T
ZXRNaW5pbXVtUGxheW91dERlbGF5KGRlbGF5X21zKTsKKyAgcmV0dXJuIGNoYW5uZWxfcmVjZWl2
ZV8tPlNldE1pbmltdW1QbGF5b3V0RGVsYXkoZGVsYXlfbXMpOwogfQogCiB2b2lkIEF1ZGlvUmVj
ZWl2ZVN0cmVhbTo6QXNzb2NpYXRlU2VuZFN0cmVhbShBdWRpb1NlbmRTdHJlYW0qIHNlbmRfc3Ry
ZWFtKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKLSAg
aWYgKHNlbmRfc3RyZWFtKSB7Ci0gICAgY2hhbm5lbF9wcm94eV8tPkFzc29jaWF0ZVNlbmRDaGFu
bmVsKHNlbmRfc3RyZWFtLT5HZXRDaGFubmVsUHJveHkoKSk7Ci0gIH0gZWxzZSB7Ci0gICAgY2hh
bm5lbF9wcm94eV8tPkRpc2Fzc29jaWF0ZVNlbmRDaGFubmVsKCk7Ci0gIH0KKyAgY2hhbm5lbF9y
ZWNlaXZlXy0+U2V0QXNzb2NpYXRlZFNlbmRDaGFubmVsKAorICAgICAgc2VuZF9zdHJlYW0gPyBz
ZW5kX3N0cmVhbS0+R2V0Q2hhbm5lbCgpIDogbnVsbHB0cik7CiAgIGFzc29jaWF0ZWRfc2VuZF9z
dHJlYW1fID0gc2VuZF9zdHJlYW07CiB9CiAKQEAgLTI5NCw3ICszMDAsNyBAQCBib29sIEF1ZGlv
UmVjZWl2ZVN0cmVhbTo6RGVsaXZlclJ0Y3AoY29uc3QgdWludDhfdCogcGFja2V0LCBzaXplX3Qg
bGVuZ3RoKSB7CiAgIC8vIGNhbGxzIG9uIHRoZSB3b3JrZXIgdGhyZWFkLiBXZSBzaG91bGQgbW92
ZSB0b3dhcmRzIGFsd2F5cyB1c2luZyBhIG5ldHdvcmsKICAgLy8gdGhyZWFkLiBUaGVuIHRoaXMg
Y2hlY2sgY2FuIGJlIGVuYWJsZWQuCiAgIC8vIFJUQ19EQ0hFQ0soIXRocmVhZF9jaGVja2VyXy5D
YWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF9wcm94eV8tPlJlY2VpdmVk
UlRDUFBhY2tldChwYWNrZXQsIGxlbmd0aCk7CisgIHJldHVybiBjaGFubmVsX3JlY2VpdmVfLT5S
ZWNlaXZlZFJUQ1BQYWNrZXQocGFja2V0LCBsZW5ndGgpOwogfQogCiB2b2lkIEF1ZGlvUmVjZWl2
ZVN0cmVhbTo6T25SdHBQYWNrZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgewpA
QCAtMzAyLDcgKzMwOCw3IEBAIHZvaWQgQXVkaW9SZWNlaXZlU3RyZWFtOjpPblJ0cFBhY2tldChj
b25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgIC8vIGNhbGxzIG9uIHRoZSB3b3Jr
ZXIgdGhyZWFkLiBXZSBzaG91bGQgbW92ZSB0b3dhcmRzIGFsd2F5cyB1c2luZyBhIG5ldHdvcmsK
ICAgLy8gdGhyZWFkLiBUaGVuIHRoaXMgY2hlY2sgY2FuIGJlIGVuYWJsZWQuCiAgIC8vIFJUQ19E
Q0hFQ0soIXRocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVs
X3Byb3h5Xy0+T25SdHBQYWNrZXQocGFja2V0KTsKKyAgY2hhbm5lbF9yZWNlaXZlXy0+T25SdHBQ
YWNrZXQocGFja2V0KTsKIH0KIAogY29uc3Qgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW06OkNv
bmZpZyYgQXVkaW9SZWNlaXZlU3RyZWFtOjpjb25maWcoKSBjb25zdCB7CkBAIC0zMjgsNyArMzM0
LDcgQEAgdm9pZCBBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZ3VyZVN0cmVhbShBdWRpb1JlY2Vp
dmVTdHJlYW0qIHN0cmVhbSwKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQXVkaW9SZWNlaXZlU3Ry
ZWFtOjpDb25maWd1cmVTdHJlYW06ICIKICAgICAgICAgICAgICAgICAgICA8PCBuZXdfY29uZmln
LlRvU3RyaW5nKCk7CiAgIFJUQ19EQ0hFQ0soc3RyZWFtKTsKLSAgY29uc3QgYXV0byYgY2hhbm5l
bF9wcm94eSA9IHN0cmVhbS0+Y2hhbm5lbF9wcm94eV87CisgIGNvbnN0IGF1dG8mIGNoYW5uZWxf
cmVjZWl2ZSA9IHN0cmVhbS0+Y2hhbm5lbF9yZWNlaXZlXzsKICAgY29uc3QgYXV0byYgb2xkX2Nv
bmZpZyA9IHN0cmVhbS0+Y29uZmlnXzsKIAogICAvLyBDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMg
d2hpY2ggY2Fubm90IGJlIGNoYW5nZWQuCkBAIC0zNDIsNyArMzQ4LDcgQEAgdm9pZCBBdWRpb1Jl
Y2VpdmVTdHJlYW06OkNvbmZpZ3VyZVN0cmVhbShBdWRpb1JlY2VpdmVTdHJlYW0qIHN0cmVhbSwK
ICAgICAgICAgICAgICBvbGRfY29uZmlnLmRlY29kZXJfZmFjdG9yeSA9PSBuZXdfY29uZmlnLmRl
Y29kZXJfZmFjdG9yeSk7CiAKICAgaWYgKGZpcnN0X3RpbWUgfHwgb2xkX2NvbmZpZy5ydHAubG9j
YWxfc3NyYyAhPSBuZXdfY29uZmlnLnJ0cC5sb2NhbF9zc3JjKSB7Ci0gICAgY2hhbm5lbF9wcm94
eS0+U2V0TG9jYWxTU1JDKG5ld19jb25maWcucnRwLmxvY2FsX3NzcmMpOworICAgIGNoYW5uZWxf
cmVjZWl2ZS0+U2V0TG9jYWxTU1JDKG5ld19jb25maWcucnRwLmxvY2FsX3NzcmMpOwogICB9CiAK
ICAgaWYgKCFmaXJzdF90aW1lKSB7CkBAIC0zNTQsMTEgKzM2MCwxMSBAQCB2b2lkIEF1ZGlvUmVj
ZWl2ZVN0cmVhbTo6Q29uZmlndXJlU3RyZWFtKEF1ZGlvUmVjZWl2ZVN0cmVhbSogc3RyZWFtLAog
ICAvLyB1c2luZyB0aGUgYWN0dWFsIHBhY2tldCBzaXplIGZvciB0aGUgY29uZmlndXJlZCBjb2Rl
Yy4KICAgaWYgKGZpcnN0X3RpbWUgfHwgb2xkX2NvbmZpZy5ydHAubmFjay5ydHBfaGlzdG9yeV9t
cyAhPQogICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NvbmZpZy5ydHAubmFjay5ydHBfaGlz
dG9yeV9tcykgewotICAgIGNoYW5uZWxfcHJveHktPlNldE5BQ0tTdGF0dXMobmV3X2NvbmZpZy5y
dHAubmFjay5ydHBfaGlzdG9yeV9tcyAhPSAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3X2NvbmZpZy5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyAvIDIwKTsKKyAgICBjaGFu
bmVsX3JlY2VpdmUtPlNldE5BQ0tTdGF0dXMobmV3X2NvbmZpZy5ydHAubmFjay5ydHBfaGlzdG9y
eV9tcyAhPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfY29uZmln
LnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zIC8gMjApOwogICB9CiAgIGlmIChmaXJzdF90aW1lIHx8
IG9sZF9jb25maWcuZGVjb2Rlcl9tYXAgIT0gbmV3X2NvbmZpZy5kZWNvZGVyX21hcCkgewotICAg
IGNoYW5uZWxfcHJveHktPlNldFJlY2VpdmVDb2RlY3MobmV3X2NvbmZpZy5kZWNvZGVyX21hcCk7
CisgICAgY2hhbm5lbF9yZWNlaXZlLT5TZXRSZWNlaXZlQ29kZWNzKG5ld19jb25maWcuZGVjb2Rl
cl9tYXApOwogICB9CiAKICAgc3RyZWFtLT5jb25maWdfID0gbmV3X2NvbmZpZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlv
X3JlY2VpdmVfc3RyZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbS5oCmluZGV4IGU5ODJiMDRkNTRiOGU3ZjI3
M2YzMzg5NTlkODIwNjc2YThhOTRlYjYuLjg2YmNiMWM2YTJkYjQyNWVmNDZiMjM2ZTg2YjQyNmIw
OWUzZDczMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW0uaApA
QCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgImFwaS9ydHBfaGVhZGVycy5oIgogI2luY2x1ZGUg
ImF1ZGlvL2F1ZGlvX3N0YXRlLmgiCiAjaW5jbHVkZSAiY2FsbC9hdWRpb19yZWNlaXZlX3N0cmVh
bS5oIgotI2luY2x1ZGUgImNhbGwvcnRwX3BhY2tldF9zaW5rX2ludGVyZmFjZS5oIgogI2luY2x1
ZGUgImNhbGwvc3luY2FibGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2lj
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKQEAgLTMyLDcgKzMxLDcg
QEAgY2xhc3MgUnRwU3RyZWFtUmVjZWl2ZXJDb250cm9sbGVySW50ZXJmYWNlOwogY2xhc3MgUnRw
U3RyZWFtUmVjZWl2ZXJJbnRlcmZhY2U7CiAKIG5hbWVzcGFjZSB2b2UgewotY2xhc3MgQ2hhbm5l
bFJlY2VpdmVQcm94eTsKK2NsYXNzIENoYW5uZWxSZWNlaXZlSW50ZXJmYWNlOwogfSAgLy8gbmFt
ZXNwYWNlIHZvZQogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNDgsMTMgKzQ3LDE0IEBAIGNs
YXNzIEF1ZGlvUmVjZWl2ZVN0cmVhbSBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OkF1ZGlvUmVjZWl2
ZVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9SZWNlaXZl
U3RyZWFtOjpDb25maWcmIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+JiBhdWRpb19zdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgIHdlYnJ0Yzo6UnRjRXZlbnRMb2cqIGV2ZW50X2xvZyk7Ci0gIC8vIEZvciB1
bml0IHRlc3RzLCB3aGljaCBuZWVkIHRvIHN1cHBseSBhIG1vY2sgY2hhbm5lbCBwcm94eS4KLSAg
QXVkaW9SZWNlaXZlU3RyZWFtKFJ0cFN0cmVhbVJlY2VpdmVyQ29udHJvbGxlckludGVyZmFjZSog
cmVjZWl2ZXJfY29udHJvbGxlciwKLSAgICAgICAgICAgICAgICAgICAgIFBhY2tldFJvdXRlciog
cGFja2V0X3JvdXRlciwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9S
ZWNlaXZlU3RyZWFtOjpDb25maWcmIGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+JiBhdWRpb19zdGF0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6UnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKLSAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxSZWNlaXZlUHJveHk+
IGNoYW5uZWxfcHJveHkpOworICAvLyBGb3IgdW5pdCB0ZXN0cywgd2hpY2ggbmVlZCB0byBzdXBw
bHkgYSBtb2NrIGNoYW5uZWwgcmVjZWl2ZS4KKyAgQXVkaW9SZWNlaXZlU3RyZWFtKAorICAgICAg
UnRwU3RyZWFtUmVjZWl2ZXJDb250cm9sbGVySW50ZXJmYWNlKiByZWNlaXZlcl9jb250cm9sbGVy
LAorICAgICAgUGFja2V0Um91dGVyKiBwYWNrZXRfcm91dGVyLAorICAgICAgY29uc3Qgd2VicnRj
OjpBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyYgY29uZmlnLAorICAgICAgY29uc3QgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4mIGF1ZGlvX3N0YXRlLAorICAgICAgd2Vi
cnRjOjpSdGNFdmVudExvZyogZXZlbnRfbG9nLAorICAgICAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6
Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2U+IGNoYW5uZWxfcmVjZWl2ZSk7CiAgIH5BdWRpb1JlY2Vp
dmVTdHJlYW0oKSBvdmVycmlkZTsKIAogICAvLyB3ZWJydGM6OkF1ZGlvUmVjZWl2ZVN0cmVhbSBp
bXBsZW1lbnRhdGlvbi4KQEAgLTEwMSw3ICsxMDEsNyBAQCBjbGFzcyBBdWRpb1JlY2VpdmVTdHJl
YW0gZmluYWwgOiBwdWJsaWMgd2VicnRjOjpBdWRpb1JlY2VpdmVTdHJlYW0sCiAgIHJ0Yzo6VGhy
ZWFkQ2hlY2tlciBtb2R1bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl87CiAgIHdlYnJ0Yzo6QXVk
aW9SZWNlaXZlU3RyZWFtOjpDb25maWcgY29uZmlnXzsKICAgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6QXVkaW9TdGF0ZT4gYXVkaW9fc3RhdGVfOwotICBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpD
aGFubmVsUmVjZWl2ZVByb3h5PiBjaGFubmVsX3Byb3h5XzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPHZvZTo6Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2U+IGNoYW5uZWxfcmVjZWl2ZV87CiAgIEF1
ZGlvU2VuZFN0cmVhbSogYXNzb2NpYXRlZF9zZW5kX3N0cmVhbV8gPSBudWxscHRyOwogCiAgIGJv
b2wgcGxheWluZ18gUlRDX0dVQVJERURfQlkod29ya2VyX3RocmVhZF9jaGVja2VyXykgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2F1ZGlvL2F1ZGlvX3JlY2VpdmVfc3RyZWFtX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW1fdW5p
dHRlc3QuY2MKaW5kZXggOTdjNDJjNDM4M2Y4NDM2MzQyYjQ3NzAzNmY2ZGM1N2YwNTk3OTQzMy4u
NzQyMjgxMDg1NjY1MTUyNzI4ZWZjMmQxNzg5YTgzYTcxMzY1NDY5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2
ZV9zdHJlYW1fdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fcmVjZWl2ZV9zdHJlYW1fdW5pdHRlc3QuY2MKQEAgLTEz
LDYgKzEzLDcgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvdGVzdC9tb2Nr
X2F1ZGlvX21peGVyLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja19mcmFtZV9kZWNyeXB0b3Iu
aCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbS5oIgogI2luY2x1ZGUgImF1
ZGlvL2NvbnZlcnNpb24uaCIKICNpbmNsdWRlICJhdWRpby9tb2NrX3ZvZV9jaGFubmVsX3Byb3h5
LmgiCkBAIC04MiwxNiArODMsMTYgQEAgc3RydWN0IENvbmZpZ0hlbHBlciB7CiAgICAgICAgIG5l
dyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8dGVzdGluZzo6TmljZU1vY2s8TW9ja0F1ZGlvRGV2aWNl
TW9kdWxlPj4oKTsKICAgICBhdWRpb19zdGF0ZV8gPSBBdWRpb1N0YXRlOjpDcmVhdGUoY29uZmln
KTsKIAotICAgIGNoYW5uZWxfcHJveHlfID0gbmV3IHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja0No
YW5uZWxSZWNlaXZlUHJveHk+KCk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBT
ZXRMb2NhbFNTUkMoa0xvY2FsU3NyYykpLlRpbWVzKDEpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFu
bmVsX3Byb3h5XywgU2V0TkFDS1N0YXR1cyh0cnVlLCAxNSkpLlRpbWVzKDEpOwotICAgIEVYUEVD
VF9DQUxMKCpjaGFubmVsX3Byb3h5XywKKyAgICBjaGFubmVsX3JlY2VpdmVfID0gbmV3IHRlc3Rp
bmc6OlN0cmljdE1vY2s8TW9ja0NoYW5uZWxSZWNlaXZlPigpOworICAgIEVYUEVDVF9DQUxMKCpj
aGFubmVsX3JlY2VpdmVfLCBTZXRMb2NhbFNTUkMoa0xvY2FsU3NyYykpLlRpbWVzKDEpOworICAg
IEVYUEVDVF9DQUxMKCpjaGFubmVsX3JlY2VpdmVfLCBTZXROQUNLU3RhdHVzKHRydWUsIDE1KSku
VGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sCiAgICAgICAgICAg
ICAgICAgUmVnaXN0ZXJSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygmcGFja2V0X3Jv
dXRlcl8pKQogICAgICAgICAuVGltZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJv
eHlfLCBSZXNldFJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCkpCisgICAgRVhQRUNU
X0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIFJlc2V0UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9i
amVjdHMoKSkKICAgICAgICAgLlRpbWVzKDEpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3By
b3h5XywgRGlzYXNzb2NpYXRlU2VuZENoYW5uZWwoKSkuVGltZXMoMSk7Ci0gICAgRVhQRUNUX0NB
TEwoKmNoYW5uZWxfcHJveHlfLCBTZXRSZWNlaXZlQ29kZWNzKF8pKQorICAgIEVYUEVDVF9DQUxM
KCpjaGFubmVsX3JlY2VpdmVfLCBTZXRBc3NvY2lhdGVkU2VuZENoYW5uZWwobnVsbHB0cikpLlRp
bWVzKDEpOworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3JlY2VpdmVfLCBTZXRSZWNlaXZlQ29k
ZWNzKF8pKQogICAgICAgICAuV2lsbFJlcGVhdGVkbHkoSW52b2tlKFtdKGNvbnN0IHN0ZDo6bWFw
PGludCwgU2RwQXVkaW9Gb3JtYXQ+JiBjb2RlY3MpIHsKICAgICAgICAgICBFWFBFQ1RfVEhBVChj
b2RlY3MsIHRlc3Rpbmc6OklzRW1wdHkoKSk7CiAgICAgICAgIH0pKTsKQEAgLTExMywzMyArMTE0
LDMzIEBAIHN0cnVjdCBDb25maWdIZWxwZXIgewogICAgICAgICBuZXcgaW50ZXJuYWw6OkF1ZGlv
UmVjZWl2ZVN0cmVhbSgKICAgICAgICAgICAgICZydHBfc3RyZWFtX3JlY2VpdmVyX2NvbnRyb2xs
ZXJfLCAmcGFja2V0X3JvdXRlcl8sIHN0cmVhbV9jb25maWdfLAogICAgICAgICAgICAgYXVkaW9f
c3RhdGVfLCAmZXZlbnRfbG9nXywKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNo
YW5uZWxSZWNlaXZlUHJveHk+KGNoYW5uZWxfcHJveHlfKSkpOworICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2U+KGNoYW5uZWxfcmVjZWl2ZV8p
KSk7CiAgIH0KIAogICBBdWRpb1JlY2VpdmVTdHJlYW06OkNvbmZpZyYgY29uZmlnKCkgeyByZXR1
cm4gc3RyZWFtX2NvbmZpZ187IH0KICAgcnRjOjpzY29wZWRfcmVmcHRyPE1vY2tBdWRpb01peGVy
PiBhdWRpb19taXhlcigpIHsgcmV0dXJuIGF1ZGlvX21peGVyXzsgfQotICBNb2NrQ2hhbm5lbFJl
Y2VpdmVQcm94eSogY2hhbm5lbF9wcm94eSgpIHsgcmV0dXJuIGNoYW5uZWxfcHJveHlfOyB9Cisg
IE1vY2tDaGFubmVsUmVjZWl2ZSogY2hhbm5lbF9yZWNlaXZlKCkgeyByZXR1cm4gY2hhbm5lbF9y
ZWNlaXZlXzsgfQogCiAgIHZvaWQgU2V0dXBNb2NrRm9yR2V0U3RhdHMoKSB7CiAgICAgdXNpbmcg
dGVzdGluZzo6RG9BbGw7CiAgICAgdXNpbmcgdGVzdGluZzo6U2V0QXJnUG9pbnRlZTsKIAotICAg
IEFTU0VSVF9UUlVFKGNoYW5uZWxfcHJveHlfKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9w
cm94eV8sIEdldFJUQ1BTdGF0aXN0aWNzKCkpCisgICAgQVNTRVJUX1RSVUUoY2hhbm5lbF9yZWNl
aXZlXyk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIEdldFJUQ1BTdGF0aXN0
aWNzKCkpCiAgICAgICAgIC5XaWxsT25jZShSZXR1cm4oa0NhbGxTdGF0cykpOwotICAgIEVYUEVD
VF9DQUxMKCpjaGFubmVsX3Byb3h5XywgR2V0RGVsYXlFc3RpbWF0ZSgpKQorICAgIEVYUEVDVF9D
QUxMKCpjaGFubmVsX3JlY2VpdmVfLCBHZXREZWxheUVzdGltYXRlKCkpCiAgICAgICAgIC5XaWxs
T25jZShSZXR1cm4oa0ppdHRlckJ1ZmZlckRlbGF5ICsga1BsYXlvdXRCdWZmZXJEZWxheSkpOwot
ICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgR2V0U3BlZWNoT3V0cHV0TGV2ZWxGdWxs
UmFuZ2UoKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9yZWNlaXZlXywgR2V0U3BlZWNoT3V0
cHV0TGV2ZWxGdWxsUmFuZ2UoKSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybihrU3BlZWNoT3V0
cHV0TGV2ZWwpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIEdldFRvdGFsT3V0
cHV0RW5lcmd5KCkpCisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIEdldFRvdGFs
T3V0cHV0RW5lcmd5KCkpCiAgICAgICAgIC5XaWxsT25jZShSZXR1cm4oa1RvdGFsT3V0cHV0RW5l
cmd5KSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBHZXRUb3RhbE91dHB1dER1
cmF0aW9uKCkpCisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIEdldFRvdGFsT3V0
cHV0RHVyYXRpb24oKSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybihrVG90YWxPdXRwdXREdXJh
dGlvbikpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgR2V0TmV0d29ya1N0YXRp
c3RpY3MoKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9yZWNlaXZlXywgR2V0TmV0d29ya1N0
YXRpc3RpY3MoKSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybihrTmV0d29ya1N0YXRzKSk7Ci0g
ICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBHZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNz
KCkpCisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIEdldERlY29kaW5nQ2FsbFN0
YXRpc3RpY3MoKSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybihrQXVkaW9EZWNvZGVTdGF0cykp
OwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgR2V0UmVjQ29kZWMoXykpCisgICAg
RVhQRUNUX0NBTEwoKmNoYW5uZWxfcmVjZWl2ZV8sIEdldFJlY0NvZGVjKF8pKQogICAgICAgICAu
V2lsbE9uY2UoRG9BbGwoU2V0QXJnUG9pbnRlZTwwPihrQ29kZWNJbnN0KSwgUmV0dXJuKHRydWUp
KSk7CiAgIH0KIApAQCAtMTQ5LDcgKzE1MCw3IEBAIHN0cnVjdCBDb25maWdIZWxwZXIgewogICBy
dGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9TdGF0ZT4gYXVkaW9fc3RhdGVfOwogICBydGM6OnNjb3Bl
ZF9yZWZwdHI8TW9ja0F1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyXzsKICAgQXVkaW9SZWNlaXZlU3Ry
ZWFtOjpDb25maWcgc3RyZWFtX2NvbmZpZ187Ci0gIHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja0No
YW5uZWxSZWNlaXZlUHJveHk+KiBjaGFubmVsX3Byb3h5XyA9IG51bGxwdHI7CisgIHRlc3Rpbmc6
OlN0cmljdE1vY2s8TW9ja0NoYW5uZWxSZWNlaXZlPiogY2hhbm5lbF9yZWNlaXZlXyA9IG51bGxw
dHI7CiAgIFJ0cFN0cmVhbVJlY2VpdmVyQ29udHJvbGxlciBydHBfc3RyZWFtX3JlY2VpdmVyX2Nv
bnRyb2xsZXJfOwogICBNb2NrVHJhbnNwb3J0IHJ0Y3Bfc2VuZF90cmFuc3BvcnRfOwogfTsKQEAg
LTIxNiw3ICsyMTcsNyBAQCBURVNUKEF1ZGlvUmVjZWl2ZVN0cmVhbVRlc3QsIENvbmZpZ1RvU3Ry
aW5nKSB7CiAgICAgICAie3J0cDoge3JlbW90ZV9zc3JjOiAxMjM0LCBsb2NhbF9zc3JjOiA1Njc4
LCB0cmFuc3BvcnRfY2M6IG9mZiwgbmFjazogIgogICAgICAgIntydHBfaGlzdG9yeV9tczogMH0s
IGV4dGVuc2lvbnM6IFt7dXJpOiAiCiAgICAgICAidXJuOmlldGY6cGFyYW1zOnJ0cC1oZHJleHQ6
c3NyYy1hdWRpby1sZXZlbCwgaWQ6IDN9XX0sICIKLSAgICAgICJydGNwX3NlbmRfdHJhbnNwb3J0
OiBudWxsfSIsCisgICAgICAicnRjcF9zZW5kX3RyYW5zcG9ydDogbnVsbCwgbWVkaWFfdHJhbnNw
b3J0OiBudWxsfSIsCiAgICAgICBjb25maWcuVG9TdHJpbmcoKSk7CiB9CiAKQEAgLTIzOCw3ICsy
MzksNyBAQCBURVNUKEF1ZGlvUmVjZWl2ZVN0cmVhbVRlc3QsIFJlY2VpdmVSdHBQYWNrZXQpIHsK
ICAgQVNTRVJUX1RSVUUocGFyc2VkX3BhY2tldC5QYXJzZSgmcnRwX3BhY2tldFswXSwgcnRwX3Bh
Y2tldC5zaXplKCkpKTsKICAgcGFyc2VkX3BhY2tldC5zZXRfYXJyaXZhbF90aW1lX21zKChwYWNr
ZXRfdGltZV91cyArIDUwMCkgLyAxMDAwKTsKIAotICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5u
ZWxfcHJveHkoKSwKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3JlY2VpdmUoKSwKICAg
ICAgICAgICAgICAgT25SdHBQYWNrZXQodGVzdGluZzo6UmVmKHBhcnNlZF9wYWNrZXQpKSk7CiAK
ICAgcmVjdl9zdHJlYW0tPk9uUnRwUGFja2V0KHBhcnNlZF9wYWNrZXQpOwpAQCAtMjQ5LDcgKzI1
MCw3IEBAIFRFU1QoQXVkaW9SZWNlaXZlU3RyZWFtVGVzdCwgUmVjZWl2ZVJ0Y3BQYWNrZXQpIHsK
ICAgaGVscGVyLmNvbmZpZygpLnJ0cC50cmFuc3BvcnRfY2MgPSB0cnVlOwogICBhdXRvIHJlY3Zf
c3RyZWFtID0gaGVscGVyLkNyZWF0ZUF1ZGlvUmVjZWl2ZVN0cmVhbSgpOwogICBzdGQ6OnZlY3Rv
cjx1aW50OF90PiBydGNwX3BhY2tldCA9IENyZWF0ZVJ0Y3BTZW5kZXJSZXBvcnQoKTsKLSAgRVhQ
RUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3Byb3h5KCksCisgIEVYUEVDVF9DQUxMKCpoZWxwZXIu
Y2hhbm5lbF9yZWNlaXZlKCksCiAgICAgICAgICAgICAgIFJlY2VpdmVkUlRDUFBhY2tldCgmcnRj
cF9wYWNrZXRbMF0sIHJ0Y3BfcGFja2V0LnNpemUoKSkpCiAgICAgICAuV2lsbE9uY2UoUmV0dXJu
KHRydWUpKTsKICAgRVhQRUNUX1RSVUUocmVjdl9zdHJlYW0tPkRlbGl2ZXJSdGNwKCZydGNwX3Bh
Y2tldFswXSwgcnRjcF9wYWNrZXQuc2l6ZSgpKSk7CkBAIC0zMTEsNyArMzEyLDcgQEAgVEVTVChB
dWRpb1JlY2VpdmVTdHJlYW1UZXN0LCBHZXRTdGF0cykgewogVEVTVChBdWRpb1JlY2VpdmVTdHJl
YW1UZXN0LCBTZXRHYWluKSB7CiAgIENvbmZpZ0hlbHBlciBoZWxwZXI7CiAgIGF1dG8gcmVjdl9z
dHJlYW0gPSBoZWxwZXIuQ3JlYXRlQXVkaW9SZWNlaXZlU3RyZWFtKCk7Ci0gIEVYUEVDVF9DQUxM
KCpoZWxwZXIuY2hhbm5lbF9wcm94eSgpLAorICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxf
cmVjZWl2ZSgpLAogICAgICAgICAgICAgICBTZXRDaGFubmVsT3V0cHV0Vm9sdW1lU2NhbGluZyhG
bG9hdEVxKDAuNzY1ZikpKTsKICAgcmVjdl9zdHJlYW0tPlNldEdhaW4oMC43NjVmKTsKIH0KQEAg
LTMyMiwxMCArMzIzLDEwIEBAIFRFU1QoQXVkaW9SZWNlaXZlU3RyZWFtVGVzdCwgU3RyZWFtc1No
b3VsZEJlQWRkZWRUb01peGVyT25jZU9uU3RhcnQpIHsKICAgYXV0byByZWN2X3N0cmVhbTEgPSBo
ZWxwZXIxLkNyZWF0ZUF1ZGlvUmVjZWl2ZVN0cmVhbSgpOwogICBhdXRvIHJlY3Zfc3RyZWFtMiA9
IGhlbHBlcjIuQ3JlYXRlQXVkaW9SZWNlaXZlU3RyZWFtKCk7CiAKLSAgRVhQRUNUX0NBTEwoKmhl
bHBlcjEuY2hhbm5lbF9wcm94eSgpLCBTdGFydFBsYXlvdXQoKSkuVGltZXMoMSk7Ci0gIEVYUEVD
VF9DQUxMKCpoZWxwZXIyLmNoYW5uZWxfcHJveHkoKSwgU3RhcnRQbGF5b3V0KCkpLlRpbWVzKDEp
OwotICBFWFBFQ1RfQ0FMTCgqaGVscGVyMS5jaGFubmVsX3Byb3h5KCksIFN0b3BQbGF5b3V0KCkp
LlRpbWVzKDEpOwotICBFWFBFQ1RfQ0FMTCgqaGVscGVyMi5jaGFubmVsX3Byb3h5KCksIFN0b3BQ
bGF5b3V0KCkpLlRpbWVzKDEpOworICBFWFBFQ1RfQ0FMTCgqaGVscGVyMS5jaGFubmVsX3JlY2Vp
dmUoKSwgU3RhcnRQbGF5b3V0KCkpLlRpbWVzKDEpOworICBFWFBFQ1RfQ0FMTCgqaGVscGVyMi5j
aGFubmVsX3JlY2VpdmUoKSwgU3RhcnRQbGF5b3V0KCkpLlRpbWVzKDEpOworICBFWFBFQ1RfQ0FM
TCgqaGVscGVyMS5jaGFubmVsX3JlY2VpdmUoKSwgU3RvcFBsYXlvdXQoKSkuVGltZXMoMSk7Cisg
IEVYUEVDVF9DQUxMKCpoZWxwZXIyLmNoYW5uZWxfcmVjZWl2ZSgpLCBTdG9wUGxheW91dCgpKS5U
aW1lcygxKTsKICAgRVhQRUNUX0NBTEwoKmhlbHBlcjEuYXVkaW9fbWl4ZXIoKSwgQWRkU291cmNl
KHJlY3Zfc3RyZWFtMS5nZXQoKSkpCiAgICAgICAuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKICAg
RVhQRUNUX0NBTEwoKmhlbHBlcjEuYXVkaW9fbWl4ZXIoKSwgQWRkU291cmNlKHJlY3Zfc3RyZWFt
Mi5nZXQoKSkpCkBAIC0zNjYsMTIgKzM2NywzMiBAQCBURVNUKEF1ZGlvUmVjZWl2ZVN0cmVhbVRl
c3QsIFJlY29uZmlndXJlV2l0aFVwZGF0ZWRDb25maWcpIHsKICAgICAgICAgICAgICAgICAgICBr
VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJJZCArIDEpKTsKICAgbmV3X2NvbmZpZy5kZWNvZGVyX21h
cC5lbXBsYWNlKDEsIFNkcEF1ZGlvRm9ybWF0KCJmb28iLCA4MDAwLCAxKSk7CiAKLSAgTW9ja0No
YW5uZWxSZWNlaXZlUHJveHkmIGNoYW5uZWxfcHJveHkgPSAqaGVscGVyLmNoYW5uZWxfcHJveHko
KTsKLSAgRVhQRUNUX0NBTEwoY2hhbm5lbF9wcm94eSwgU2V0TG9jYWxTU1JDKGtMb2NhbFNzcmMg
KyAxKSkuVGltZXMoMSk7Ci0gIEVYUEVDVF9DQUxMKGNoYW5uZWxfcHJveHksIFNldE5BQ0tTdGF0
dXModHJ1ZSwgMTUgKyAxKSkuVGltZXMoMSk7Ci0gIEVYUEVDVF9DQUxMKGNoYW5uZWxfcHJveHks
IFNldFJlY2VpdmVDb2RlY3MobmV3X2NvbmZpZy5kZWNvZGVyX21hcCkpOworICBNb2NrQ2hhbm5l
bFJlY2VpdmUmIGNoYW5uZWxfcmVjZWl2ZSA9ICpoZWxwZXIuY2hhbm5lbF9yZWNlaXZlKCk7Cisg
IEVYUEVDVF9DQUxMKGNoYW5uZWxfcmVjZWl2ZSwgU2V0TG9jYWxTU1JDKGtMb2NhbFNzcmMgKyAx
KSkuVGltZXMoMSk7CisgIEVYUEVDVF9DQUxMKGNoYW5uZWxfcmVjZWl2ZSwgU2V0TkFDS1N0YXR1
cyh0cnVlLCAxNSArIDEpKS5UaW1lcygxKTsKKyAgRVhQRUNUX0NBTEwoY2hhbm5lbF9yZWNlaXZl
LCBTZXRSZWNlaXZlQ29kZWNzKG5ld19jb25maWcuZGVjb2Rlcl9tYXApKTsKIAogICByZWN2X3N0
cmVhbS0+UmVjb25maWd1cmUobmV3X2NvbmZpZyk7CiB9CisKK1RFU1QoQXVkaW9SZWNlaXZlU3Ry
ZWFtVGVzdCwgUmVjb25maWd1cmVXaXRoRnJhbWVEZWNyeXB0b3IpIHsKKyAgQ29uZmlnSGVscGVy
IGhlbHBlcjsKKyAgYXV0byByZWN2X3N0cmVhbSA9IGhlbHBlci5DcmVhdGVBdWRpb1JlY2VpdmVT
dHJlYW0oKTsKKworICBhdXRvIG5ld19jb25maWdfMCA9IGhlbHBlci5jb25maWcoKTsKKyAgcnRj
OjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBtb2NrX2ZyYW1lX2RlY3J5
cHRvcl8wKAorICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxNb2NrRnJhbWVEZWNyeXB0
b3I+KCkpOworICBuZXdfY29uZmlnXzAuZnJhbWVfZGVjcnlwdG9yID0gbW9ja19mcmFtZV9kZWNy
eXB0b3JfMDsKKworICByZWN2X3N0cmVhbS0+UmVjb25maWd1cmUobmV3X2NvbmZpZ18wKTsKKwor
ICBhdXRvIG5ld19jb25maWdfMSA9IGhlbHBlci5jb25maWcoKTsKKyAgcnRjOjpzY29wZWRfcmVm
cHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBtb2NrX2ZyYW1lX2RlY3J5cHRvcl8xKAorICAg
ICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxNb2NrRnJhbWVEZWNyeXB0b3I+KCkpOworICBu
ZXdfY29uZmlnXzEuZnJhbWVfZGVjcnlwdG9yID0gbW9ja19mcmFtZV9kZWNyeXB0b3JfMTsKKyAg
bmV3X2NvbmZpZ18xLmNyeXB0b19vcHRpb25zLnNmcmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRp
b24gPSB0cnVlOworICByZWN2X3N0cmVhbS0+UmVjb25maWd1cmUobmV3X2NvbmZpZ18xKTsKK30K
KwogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlv
X3NlbmRfc3RyZWFtLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uY2MKaW5kZXggZTgyMjY0YTgzY2IxY2IyODVlODNl
ODNhZGM0MDk1NWM2MDVlNmNiNS4uNzVlNmVmYjllODAwZmQwOTE4Y2NiYjViZTlmMWFmN2RhODg5
MWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2VuZF9zdHJlYW0uY2MKQEAgLTE1LDEy
ICsxNSwyMiBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgotCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgiCisj
aW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNs
dWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgorI2luY2x1ZGUgImFwaS9jYWxs
L3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVlbmNyeXB0b3JpbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19zdGF0ZS5oIgotI2luY2x1ZGUgImF1ZGlvL2No
YW5uZWxfc2VuZF9wcm94eS5oIgorI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfc2VuZC5oIgogI2lu
Y2x1ZGUgImF1ZGlvL2NvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcuaCIK
ICNpbmNsdWRlICJjYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5o
IgorI2luY2x1ZGUgImNvbW1vbl9hdWRpby92YWQvaW5jbHVkZS92YWQuaCIKKyNpbmNsdWRlICJs
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19zZW5kX3N0cmVhbV9j
b25maWcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5o
IgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9j
bmcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19w
cm9jZXNzaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9mdW5jdGlvbl92aWV3LmgiCkBAIC0z
OCwxMzAgKzQ4LDEzMiBAQCBjb25zdGV4cHIgc2l6ZV90IGtQYWNrZXRMb3NzVHJhY2tlck1heFdp
bmRvd1NpemVNcyA9IDE1MDAwOwogY29uc3RleHByIHNpemVfdCBrUGFja2V0TG9zc1JhdGVNaW5O
dW1BY2tlZFBhY2tldHMgPSA1MDsKIGNvbnN0ZXhwciBzaXplX3Qga1JlY292ZXJhYmxlUGFja2V0
TG9zc1JhdGVNaW5OdW1BY2tlZFBhaXJzID0gNDA7CiAKLXZvaWQgQ2FsbEVuY29kZXIoY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFNlbmRQcm94eT4mIGNoYW5uZWxfcHJveHksCit2
b2lkIENhbGxFbmNvZGVyKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxTZW5kSW50
ZXJmYWNlPiYgY2hhbm5lbF9zZW5kLAogICAgICAgICAgICAgICAgICBydGM6OkZ1bmN0aW9uVmll
dzx2b2lkKEF1ZGlvRW5jb2RlciopPiBsYW1iZGEpIHsKLSAgY2hhbm5lbF9wcm94eS0+TW9kaWZ5
RW5jb2RlcihbJl0oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXJfcHRyKSB7
CisgIGNoYW5uZWxfc2VuZC0+TW9kaWZ5RW5jb2RlcihbJl0oc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
RW5jb2Rlcj4qIGVuY29kZXJfcHRyKSB7CiAgICAgUlRDX0RDSEVDSyhlbmNvZGVyX3B0cik7CiAg
ICAgbGFtYmRhKGVuY29kZXJfcHRyLT5nZXQoKSk7CiAgIH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8dm9lOjpDaGFubmVsU2VuZFByb3h5PiBDcmVhdGVDaGFubmVsQW5kUHJveHkoCi0gICAgcnRj
OjpUYXNrUXVldWUqIHdvcmtlcl9xdWV1ZSwKLSAgICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJv
Y2Vzc190aHJlYWQsCi0gICAgUnRjcFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0cywKLSAgICBSdGNF
dmVudExvZyogZXZlbnRfbG9nLAotICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9l
bmNyeXB0b3IpIHsKLSAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPHZvZTo6Q2hhbm5lbFNlbmRQ
cm94eT4oCi0gICAgICBhYnNsOjptYWtlX3VuaXF1ZTx2b2U6OkNoYW5uZWxTZW5kPih3b3JrZXJf
cXVldWUsIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0Y3BfcnR0X3N0YXRzLCBldmVudF9sb2csCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9lbmNyeXB0b3IpKTsKLX0KLX0gIC8v
IG5hbWVzcGFjZQotCi0vLyBIZWxwZXIgY2xhc3MgdG8gdHJhY2sgdGhlIGFjdGl2ZWx5IHNlbmRp
bmcgbGlmZXRpbWUgb2YgdGhpcyBzdHJlYW0uCi1jbGFzcyBBdWRpb1NlbmRTdHJlYW06OlRpbWVk
VHJhbnNwb3J0IDogcHVibGljIFRyYW5zcG9ydCB7Ci0gcHVibGljOgotICBUaW1lZFRyYW5zcG9y
dChUcmFuc3BvcnQqIHRyYW5zcG9ydCwgVGltZUludGVydmFsKiB0aW1lX2ludGVydmFsKQotICAg
ICAgOiB0cmFuc3BvcnRfKHRyYW5zcG9ydCksIGxpZmV0aW1lXyh0aW1lX2ludGVydmFsKSB7fQot
ICBib29sIFNlbmRSdHAoY29uc3QgdWludDhfdCogcGFja2V0LAotICAgICAgICAgICAgICAgc2l6
ZV90IGxlbmd0aCwKLSAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldE9wdGlvbnMmIG9wdGlvbnMp
IHsKLSAgICBpZiAobGlmZXRpbWVfKSB7Ci0gICAgICBsaWZldGltZV8tPkV4dGVuZCgpOwordm9p
ZCBVcGRhdGVFdmVudExvZ1N0cmVhbUNvbmZpZyhSdGNFdmVudExvZyogZXZlbnRfbG9nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb1NlbmRTdHJlYW06OkNvbmZp
ZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb1Nl
bmRTdHJlYW06OkNvbmZpZyogb2xkX2NvbmZpZykgeworICB1c2luZyBTZW5kQ29kZWNTcGVjID0g
QXVkaW9TZW5kU3RyZWFtOjpDb25maWc6OlNlbmRDb2RlY1NwZWM7CisgIC8vIE9ubHkgdXBkYXRl
IGlmIGFueSBvZiB0aGUgdGhpbmdzIHdlIGxvZyBoYXZlIGNoYW5nZWQuCisgIGF1dG8gcGF5bG9h
ZF90eXBlc19lcXVhbCA9IFtdKGNvbnN0IGFic2w6Om9wdGlvbmFsPFNlbmRDb2RlY1NwZWM+JiBh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxT
ZW5kQ29kZWNTcGVjPiYgYikgeworICAgIGlmIChhLmhhc192YWx1ZSgpICYmIGIuaGFzX3ZhbHVl
KCkpIHsKKyAgICAgIHJldHVybiBhLT5mb3JtYXQubmFtZSA9PSBiLT5mb3JtYXQubmFtZSAmJgor
ICAgICAgICAgICAgIGEtPnBheWxvYWRfdHlwZSA9PSBiLT5wYXlsb2FkX3R5cGU7CiAgICAgfQot
ICAgIHJldHVybiB0cmFuc3BvcnRfLT5TZW5kUnRwKHBhY2tldCwgbGVuZ3RoLCBvcHRpb25zKTsK
KyAgICByZXR1cm4gIWEuaGFzX3ZhbHVlKCkgJiYgIWIuaGFzX3ZhbHVlKCk7CisgIH07CisKKyAg
aWYgKG9sZF9jb25maWcgJiYgY29uZmlnLnJ0cC5zc3JjID09IG9sZF9jb25maWctPnJ0cC5zc3Jj
ICYmCisgICAgICBjb25maWcucnRwLmV4dGVuc2lvbnMgPT0gb2xkX2NvbmZpZy0+cnRwLmV4dGVu
c2lvbnMgJiYKKyAgICAgIHBheWxvYWRfdHlwZXNfZXF1YWwoY29uZmlnLnNlbmRfY29kZWNfc3Bl
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2NvbmZpZy0+c2VuZF9jb2RlY19zcGVj
KSkgeworICAgIHJldHVybjsKICAgfQotICBib29sIFNlbmRSdGNwKGNvbnN0IHVpbnQ4X3QqIHBh
Y2tldCwgc2l6ZV90IGxlbmd0aCkgewotICAgIHJldHVybiB0cmFuc3BvcnRfLT5TZW5kUnRjcChw
YWNrZXQsIGxlbmd0aCk7CisKKyAgYXV0byBydGNsb2dfY29uZmlnID0gYWJzbDo6bWFrZV91bmlx
dWU8cnRjbG9nOjpTdHJlYW1Db25maWc+KCk7CisgIHJ0Y2xvZ19jb25maWctPmxvY2FsX3NzcmMg
PSBjb25maWcucnRwLnNzcmM7CisgIHJ0Y2xvZ19jb25maWctPnJ0cF9leHRlbnNpb25zID0gY29u
ZmlnLnJ0cC5leHRlbnNpb25zOworICBpZiAoY29uZmlnLnNlbmRfY29kZWNfc3BlYykgeworICAg
IHJ0Y2xvZ19jb25maWctPmNvZGVjcy5lbXBsYWNlX2JhY2soY29uZmlnLnNlbmRfY29kZWNfc3Bl
Yy0+Zm9ybWF0Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25maWcuc2VuZF9jb2RlY19zcGVjLT5wYXlsb2FkX3R5cGUsIDApOwogICB9Ci0gIH5UaW1lZFRy
YW5zcG9ydCgpIHt9CisgIGV2ZW50X2xvZy0+TG9nKGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50
QXVkaW9TZW5kU3RyZWFtQ29uZmlnPigKKyAgICAgIHN0ZDo6bW92ZShydGNsb2dfY29uZmlnKSkp
OworfQogCi0gcHJpdmF0ZToKLSAgVHJhbnNwb3J0KiB0cmFuc3BvcnRfOwotICBUaW1lSW50ZXJ2
YWwqIGxpZmV0aW1lXzsKLX07Cit9ICAvLyBuYW1lc3BhY2UKIAogQXVkaW9TZW5kU3RyZWFtOjpB
dWRpb1NlbmRTdHJlYW0oCiAgICAgY29uc3Qgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW06OkNvbmZp
ZyYgY29uZmlnLAogICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3Rh
dGU+JiBhdWRpb19zdGF0ZSwKICAgICBydGM6OlRhc2tRdWV1ZSogd29ya2VyX3F1ZXVlLAogICAg
IFByb2Nlc3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKLSAgICBSdHBUcmFuc3BvcnRD
b250cm9sbGVyU2VuZEludGVyZmFjZSogdHJhbnNwb3J0LAotICAgIEJpdHJhdGVBbGxvY2F0b3Iq
IGJpdHJhdGVfYWxsb2NhdG9yLAorICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJm
YWNlKiBydHBfdHJhbnNwb3J0LAorICAgIEJpdHJhdGVBbGxvY2F0b3JJbnRlcmZhY2UqIGJpdHJh
dGVfYWxsb2NhdG9yLAogICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCiAgICAgUnRjcFJ0dFN0
YXRzKiBydGNwX3J0dF9zdGF0cywKLSAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxSdHBTdGF0ZT4m
IHN1c3BlbmRlZF9ydHBfc3RhdGUsCi0gICAgVGltZUludGVydmFsKiBvdmVyYWxsX2NhbGxfbGlm
ZXRpbWUpCisgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8UnRwU3RhdGU+JiBzdXNwZW5kZWRfcnRw
X3N0YXRlKQogICAgIDogQXVkaW9TZW5kU3RyZWFtKGNvbmZpZywKICAgICAgICAgICAgICAgICAg
ICAgICBhdWRpb19zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJfcXVldWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgIHJ0
cF90cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgYml0cmF0ZV9hbGxvY2F0b3IsCiAg
ICAgICAgICAgICAgICAgICAgICAgZXZlbnRfbG9nLAogICAgICAgICAgICAgICAgICAgICAgIHJ0
Y3BfcnR0X3N0YXRzLAogICAgICAgICAgICAgICAgICAgICAgIHN1c3BlbmRlZF9ydHBfc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgb3ZlcmFsbF9jYWxsX2xpZmV0aW1lLAotICAgICAgICAg
ICAgICAgICAgICAgIENyZWF0ZUNoYW5uZWxBbmRQcm94eSh3b3JrZXJfcXVldWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9wcm9jZXNzX3RocmVh
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjcF9ydHRf
c3RhdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50
X2xvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmln
LmZyYW1lX2VuY3J5cHRvcikpIHt9CisgICAgICAgICAgICAgICAgICAgICAgdm9lOjpDcmVhdGVD
aGFubmVsU2VuZCh3b3JrZXJfcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcubWVkaWFfdHJhbnNwb3J0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNlbmRfdHJhbnNw
b3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjcF9y
dHRfc3RhdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
dmVudF9sb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25maWcuZnJhbWVfZW5jcnlwdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uZmlnLmNyeXB0b19vcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnJ0cC5leHRtYXBfYWxsb3dfbWl4ZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucnRjcF9y
ZXBvcnRfaW50ZXJ2YWxfbXMpKSB7fQogCiBBdWRpb1NlbmRTdHJlYW06OkF1ZGlvU2VuZFN0cmVh
bSgKICAgICBjb25zdCB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcsCiAg
ICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4mIGF1ZGlvX3N0
YXRlLAogICAgIHJ0Yzo6VGFza1F1ZXVlKiB3b3JrZXJfcXVldWUsCi0gICAgUnRwVHJhbnNwb3J0
Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHRyYW5zcG9ydCwKLSAgICBCaXRyYXRlQWxsb2NhdG9y
KiBiaXRyYXRlX2FsbG9jYXRvciwKKyAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVy
ZmFjZSogcnRwX3RyYW5zcG9ydCwKKyAgICBCaXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlKiBiaXRy
YXRlX2FsbG9jYXRvciwKICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgIFJ0Y3BSdHRT
dGF0cyogcnRjcF9ydHRfc3RhdHMsCiAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8UnRwU3RhdGU+
JiBzdXNwZW5kZWRfcnRwX3N0YXRlLAotICAgIFRpbWVJbnRlcnZhbCogb3ZlcmFsbF9jYWxsX2xp
ZmV0aW1lLAotICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxTZW5kUHJveHk+IGNoYW5u
ZWxfcHJveHkpCisgICAgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2U+
IGNoYW5uZWxfc2VuZCkKICAgICA6IHdvcmtlcl9xdWV1ZV8od29ya2VyX3F1ZXVlKSwKLSAgICAg
IGNvbmZpZ18oQ29uZmlnKG51bGxwdHIpKSwKKyAgICAgIGNvbmZpZ18oQ29uZmlnKC8qc2VuZF90
cmFuc3BvcnQ9Ki9udWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3Bv
cnQ9Ki9udWxscHRyKSksCiAgICAgICBhdWRpb19zdGF0ZV8oYXVkaW9fc3RhdGUpLAotICAgICAg
Y2hhbm5lbF9wcm94eV8oc3RkOjptb3ZlKGNoYW5uZWxfcHJveHkpKSwKKyAgICAgIGNoYW5uZWxf
c2VuZF8oc3RkOjptb3ZlKGNoYW5uZWxfc2VuZCkpLAogICAgICAgZXZlbnRfbG9nXyhldmVudF9s
b2cpLAogICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfKGJpdHJhdGVfYWxsb2NhdG9yKSwKLSAgICAg
IHRyYW5zcG9ydF8odHJhbnNwb3J0KSwKKyAgICAgIHJ0cF90cmFuc3BvcnRfKHJ0cF90cmFuc3Bv
cnQpLAogICAgICAgcGFja2V0X2xvc3NfdHJhY2tlcl8oa1BhY2tldExvc3NUcmFja2VyTWF4V2lu
ZG93U2l6ZU1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAga1BhY2tldExvc3NSYXRlTWlu
TnVtQWNrZWRQYWNrZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAga1JlY292ZXJhYmxl
UGFja2V0TG9zc1JhdGVNaW5OdW1BY2tlZFBhaXJzKSwKICAgICAgIHJ0cF9ydGNwX21vZHVsZV8o
bnVsbHB0ciksCi0gICAgICBzdXNwZW5kZWRfcnRwX3N0YXRlXyhzdXNwZW5kZWRfcnRwX3N0YXRl
KSwKLSAgICAgIG92ZXJhbGxfY2FsbF9saWZldGltZV8ob3ZlcmFsbF9jYWxsX2xpZmV0aW1lKSB7
CisgICAgICBzdXNwZW5kZWRfcnRwX3N0YXRlXyhzdXNwZW5kZWRfcnRwX3N0YXRlKSB7CiAgIFJU
Q19MT0coTFNfSU5GTykgPDwgIkF1ZGlvU2VuZFN0cmVhbTogIiA8PCBjb25maWcucnRwLnNzcmM7
CiAgIFJUQ19EQ0hFQ0sod29ya2VyX3F1ZXVlXyk7CiAgIFJUQ19EQ0hFQ0soYXVkaW9fc3RhdGVf
KTsKLSAgUlRDX0RDSEVDSyhjaGFubmVsX3Byb3h5Xyk7CisgIFJUQ19EQ0hFQ0soY2hhbm5lbF9z
ZW5kXyk7CiAgIFJUQ19EQ0hFQ0soYml0cmF0ZV9hbGxvY2F0b3JfKTsKLSAgUlRDX0RDSEVDSyh0
cmFuc3BvcnQpOwotICBSVENfRENIRUNLKG92ZXJhbGxfY2FsbF9saWZldGltZV8pOworICAvLyBU
T0RPKG5pc3NlKTogRXZlbnR1YWxseSwgd2Ugc2hvdWxkIGhhdmUgb25seSBtZWRpYV90cmFuc3Bv
cnQuIEJ1dCBmb3IgdGhlCisgIC8vIHRpbWUgYmVpbmcsIHdlIGNhbiBoYXZlIGVpdGhlci4gV2hl
biBtZWRpYSB0cmFuc3BvcnQgaXMgaW5qZWN0ZWQsIHRoZXJlCisgIC8vIHNob3VsZCBiZSBubyBy
dHBfdHJhbnNwb3J0LCBhbmQgYmVsb3cgY2hlY2sgc2hvdWxkIGJlIHN0cmVuZ3RoZW5lZCB0byBY
T1IKKyAgLy8gKGVpdGhlciBydHBfdHJhbnNwb3J0IG9yIG1lZGlhX3RyYW5zcG9ydCBidXQgbm90
IGJvdGgpLgorICBSVENfRENIRUNLKHJ0cF90cmFuc3BvcnQgfHwgY29uZmlnLm1lZGlhX3RyYW5z
cG9ydCk7CiAKLSAgY2hhbm5lbF9wcm94eV8tPlNldFJUQ1BTdGF0dXModHJ1ZSk7Ci0gIHJ0cF9y
dGNwX21vZHVsZV8gPSBjaGFubmVsX3Byb3h5Xy0+R2V0UnRwUnRjcCgpOworICBydHBfcnRjcF9t
b2R1bGVfID0gY2hhbm5lbF9zZW5kXy0+R2V0UnRwUnRjcCgpOwogICBSVENfRENIRUNLKHJ0cF9y
dGNwX21vZHVsZV8pOwogCiAgIENvbmZpZ3VyZVN0cmVhbSh0aGlzLCBjb25maWcsIHRydWUpOwog
CiAgIHBhY2VyX3RocmVhZF9jaGVja2VyXy5EZXRhY2hGcm9tVGhyZWFkKCk7Ci0gIC8vIFNpZ25h
bCBjb25nZXN0aW9uIGNvbnRyb2xsZXIgdGhpcyBvYmplY3QgaXMgcmVhZHkgZm9yIE9uUGFja2V0
KiBjYWxsYmFja3MuCi0gIHRyYW5zcG9ydF8tPlJlZ2lzdGVyUGFja2V0RmVlZGJhY2tPYnNlcnZl
cih0aGlzKTsKKyAgaWYgKHJ0cF90cmFuc3BvcnRfKSB7CisgICAgLy8gU2lnbmFsIGNvbmdlc3Rp
b24gY29udHJvbGxlciB0aGlzIG9iamVjdCBpcyByZWFkeSBmb3IgT25QYWNrZXQqCisgICAgLy8g
Y2FsbGJhY2tzLgorICAgIHJ0cF90cmFuc3BvcnRfLT5SZWdpc3RlclBhY2tldEZlZWRiYWNrT2Jz
ZXJ2ZXIodGhpcyk7CisgIH0KIH0KIAogQXVkaW9TZW5kU3RyZWFtOjp+QXVkaW9TZW5kU3RyZWFt
KCkgewogICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRo
cmVhZCgpKTsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAifkF1ZGlvU2VuZFN0cmVhbTogIiA8PCBj
b25maWdfLnJ0cC5zc3JjOwogICBSVENfRENIRUNLKCFzZW5kaW5nXyk7Ci0gIHRyYW5zcG9ydF8t
PkRlUmVnaXN0ZXJQYWNrZXRGZWVkYmFja09ic2VydmVyKHRoaXMpOwotICBjaGFubmVsX3Byb3h5
Xy0+UmVnaXN0ZXJUcmFuc3BvcnQobnVsbHB0cik7Ci0gIGNoYW5uZWxfcHJveHlfLT5SZXNldFNl
bmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpOwotICAvLyBMaWZldGltZSBjYW4gb25seSBi
ZSB1cGRhdGVkIGFmdGVyIGRlcmVnaXN0ZXJpbmcKLSAgLy8gfHRpbWVkX3NlbmRfdHJhbnNwb3J0
X2FkYXB0ZXJffCBpbiB0aGUgdW5kZXJseWluZyBjaGFubmVsIG9iamVjdCB0byBhdm9pZAotICAv
LyBkYXRhIHJhY2VzIGluIHxhY3RpdmVfbGlmZXRpbWVffC4KLSAgb3ZlcmFsbF9jYWxsX2xpZmV0
aW1lXy0+RXh0ZW5kKGFjdGl2ZV9saWZldGltZV8pOworICBpZiAocnRwX3RyYW5zcG9ydF8pIHsK
KyAgICBydHBfdHJhbnNwb3J0Xy0+RGVSZWdpc3RlclBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIodGhp
cyk7CisgICAgY2hhbm5lbF9zZW5kXy0+UmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVj
dHMoKTsKKyAgfQogfQogCiBjb25zdCB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnJiBB
dWRpb1NlbmRTdHJlYW06OkdldENvbmZpZygpIGNvbnN0IHsKQEAgLTE5Niw1MSArMjA4LDQyIEBA
IHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpDb25maWd1cmVTdHJlYW0oCiAgICAgYm9vbCBmaXJzdF90
aW1lKSB7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlndXJl
U3RyZWFtOiAiCiAgICAgICAgICAgICAgICAgICAgPDwgbmV3X2NvbmZpZy5Ub1N0cmluZygpOwot
ICBjb25zdCBhdXRvJiBjaGFubmVsX3Byb3h5ID0gc3RyZWFtLT5jaGFubmVsX3Byb3h5XzsKKyAg
VXBkYXRlRXZlbnRMb2dTdHJlYW1Db25maWcoc3RyZWFtLT5ldmVudF9sb2dfLCBuZXdfY29uZmln
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF90aW1lID8gbnVsbHB0ciA6ICZz
dHJlYW0tPmNvbmZpZ18pOworCisgIGNvbnN0IGF1dG8mIGNoYW5uZWxfc2VuZCA9IHN0cmVhbS0+
Y2hhbm5lbF9zZW5kXzsKICAgY29uc3QgYXV0byYgb2xkX2NvbmZpZyA9IHN0cmVhbS0+Y29uZmln
XzsKIAorICAvLyBDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgd2hpY2ggY2Fubm90IGJlIGNoYW5n
ZWQuCisgIFJUQ19EQ0hFQ0soZmlyc3RfdGltZSB8fAorICAgICAgICAgICAgIG9sZF9jb25maWcu
c2VuZF90cmFuc3BvcnQgPT0gbmV3X2NvbmZpZy5zZW5kX3RyYW5zcG9ydCk7CisKICAgaWYgKGZp
cnN0X3RpbWUgfHwgb2xkX2NvbmZpZy5ydHAuc3NyYyAhPSBuZXdfY29uZmlnLnJ0cC5zc3JjKSB7
Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0TG9jYWxTU1JDKG5ld19jb25maWcucnRwLnNzcmMpOwor
ICAgIGNoYW5uZWxfc2VuZC0+U2V0TG9jYWxTU1JDKG5ld19jb25maWcucnRwLnNzcmMpOwogICAg
IGlmIChzdHJlYW0tPnN1c3BlbmRlZF9ydHBfc3RhdGVfKSB7CiAgICAgICBzdHJlYW0tPnJ0cF9y
dGNwX21vZHVsZV8tPlNldFJ0cFN0YXRlKCpzdHJlYW0tPnN1c3BlbmRlZF9ydHBfc3RhdGVfKTsK
ICAgICB9CiAgIH0KICAgaWYgKGZpcnN0X3RpbWUgfHwgb2xkX2NvbmZpZy5ydHAuY19uYW1lICE9
IG5ld19jb25maWcucnRwLmNfbmFtZSkgewotICAgIGNoYW5uZWxfcHJveHktPlNldFJUQ1BfQ05B
TUUobmV3X2NvbmZpZy5ydHAuY19uYW1lKTsKLSAgfQotICAvLyBUT0RPKHNvbGVuYmVyZyk6IENv
bmZpZyBOQUNLIGhpc3Rvcnkgd2luZG93ICh3aGljaCBpcyBhIHBhY2tldCBjb3VudCksCi0gIC8v
IHVzaW5nIHRoZSBhY3R1YWwgcGFja2V0IHNpemUgZm9yIHRoZSBjb25maWd1cmVkIGNvZGVjLgot
ICBpZiAoZmlyc3RfdGltZSB8fCBvbGRfY29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zICE9
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfY29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5
X21zKSB7Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0TkFDS1N0YXR1cyhuZXdfY29uZmlnLnJ0cC5u
YWNrLnJ0cF9oaXN0b3J5X21zICE9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdfY29uZmlnLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zIC8gMjApOwotICB9Ci0KLSAgaWYg
KGZpcnN0X3RpbWUgfHwgbmV3X2NvbmZpZy5zZW5kX3RyYW5zcG9ydCAhPSBvbGRfY29uZmlnLnNl
bmRfdHJhbnNwb3J0KSB7Ci0gICAgaWYgKG9sZF9jb25maWcuc2VuZF90cmFuc3BvcnQpIHsKLSAg
ICAgIGNoYW5uZWxfcHJveHktPlJlZ2lzdGVyVHJhbnNwb3J0KG51bGxwdHIpOwotICAgIH0KLSAg
ICBpZiAobmV3X2NvbmZpZy5zZW5kX3RyYW5zcG9ydCkgewotICAgICAgc3RyZWFtLT50aW1lZF9z
ZW5kX3RyYW5zcG9ydF9hZGFwdGVyXy5yZXNldChuZXcgVGltZWRUcmFuc3BvcnQoCi0gICAgICAg
ICAgbmV3X2NvbmZpZy5zZW5kX3RyYW5zcG9ydCwgJnN0cmVhbS0+YWN0aXZlX2xpZmV0aW1lXykp
OwotICAgIH0gZWxzZSB7Ci0gICAgICBzdHJlYW0tPnRpbWVkX3NlbmRfdHJhbnNwb3J0X2FkYXB0
ZXJfLnJlc2V0KG51bGxwdHIpOwotICAgIH0KLSAgICBjaGFubmVsX3Byb3h5LT5SZWdpc3RlclRy
YW5zcG9ydCgKLSAgICAgICAgc3RyZWFtLT50aW1lZF9zZW5kX3RyYW5zcG9ydF9hZGFwdGVyXy5n
ZXQoKSk7CisgICAgY2hhbm5lbF9zZW5kLT5TZXRSVENQX0NOQU1FKG5ld19jb25maWcucnRwLmNf
bmFtZSk7CiAgIH0KIAogICAvLyBFbmFibGUgdGhlIGZyYW1lIGVuY3J5cHRvciBpZiBhIG5ldyBm
cmFtZSBlbmNyeXB0b3IgaGFzIGJlZW4gcHJvdmlkZWQuCiAgIGlmIChmaXJzdF90aW1lIHx8IG5l
d19jb25maWcuZnJhbWVfZW5jcnlwdG9yICE9IG9sZF9jb25maWcuZnJhbWVfZW5jcnlwdG9yKSB7
Ci0gICAgY2hhbm5lbF9wcm94eS0+U2V0RnJhbWVFbmNyeXB0b3IobmV3X2NvbmZpZy5mcmFtZV9l
bmNyeXB0b3IpOworICAgIGNoYW5uZWxfc2VuZC0+U2V0RnJhbWVFbmNyeXB0b3IobmV3X2NvbmZp
Zy5mcmFtZV9lbmNyeXB0b3IpOworICB9CisKKyAgaWYgKGZpcnN0X3RpbWUgfHwKKyAgICAgIG5l
d19jb25maWcucnRwLmV4dG1hcF9hbGxvd19taXhlZCAhPSBvbGRfY29uZmlnLnJ0cC5leHRtYXBf
YWxsb3dfbWl4ZWQpIHsKKyAgICBjaGFubmVsX3NlbmQtPlNldEV4dG1hcEFsbG93TWl4ZWQobmV3
X2NvbmZpZy5ydHAuZXh0bWFwX2FsbG93X21peGVkKTsKICAgfQogCiAgIGNvbnN0IEV4dGVuc2lv
bklkcyBvbGRfaWRzID0gRmluZEV4dGVuc2lvbklkcyhvbGRfY29uZmlnLnJ0cC5leHRlbnNpb25z
KTsKICAgY29uc3QgRXh0ZW5zaW9uSWRzIG5ld19pZHMgPSBGaW5kRXh0ZW5zaW9uSWRzKG5ld19j
b25maWcucnRwLmV4dGVuc2lvbnMpOwogICAvLyBBdWRpbyBsZXZlbCBpbmRpY2F0aW9uCiAgIGlm
IChmaXJzdF90aW1lIHx8IG5ld19pZHMuYXVkaW9fbGV2ZWwgIT0gb2xkX2lkcy5hdWRpb19sZXZl
bCkgewotICAgIGNoYW5uZWxfcHJveHktPlNldFNlbmRBdWRpb0xldmVsSW5kaWNhdGlvblN0YXR1
cyhuZXdfaWRzLmF1ZGlvX2xldmVsICE9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19pZHMuYXVkaW9fbGV2ZWwpOworICAgIGNoYW5u
ZWxfc2VuZC0+U2V0U2VuZEF1ZGlvTGV2ZWxJbmRpY2F0aW9uU3RhdHVzKG5ld19pZHMuYXVkaW9f
bGV2ZWwgIT0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXdfaWRzLmF1ZGlvX2xldmVsKTsKICAgfQogICBib29sIHRyYW5zcG9ydF9zZXFf
bnVtX2lkX2NoYW5nZWQgPQogICAgICAgbmV3X2lkcy50cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVy
ICE9IG9sZF9pZHMudHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcjsKQEAgLTI0OCw3ICsyNTEsNyBA
QCB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlndXJlU3RyZWFtKAogICAgICAgKHRyYW5zcG9y
dF9zZXFfbnVtX2lkX2NoYW5nZWQgJiYKICAgICAgICAhd2VicnRjOjpmaWVsZF90cmlhbDo6SXNF
bmFibGVkKCJXZWJSVEMtQXVkaW8tRm9yY2VOb1RXQ0MiKSkpIHsKICAgICBpZiAoIWZpcnN0X3Rp
bWUpIHsKLSAgICAgIGNoYW5uZWxfcHJveHktPlJlc2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xP
YmplY3RzKCk7CisgICAgICBjaGFubmVsX3NlbmQtPlJlc2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRy
b2xPYmplY3RzKCk7CiAgICAgfQogCiAgICAgUnRjcEJhbmR3aWR0aE9ic2VydmVyKiBiYW5kd2lk
dGhfb2JzZXJ2ZXIgPSBudWxscHRyOwpAQCAtMjU2LDI0ICsyNTksMjYgQEAgdm9pZCBBdWRpb1Nl
bmRTdHJlYW06OkNvbmZpZ3VyZVN0cmVhbSgKICAgICAgICAgbmV3X2lkcy50cmFuc3BvcnRfc2Vx
dWVuY2VfbnVtYmVyICE9IDAgJiYKICAgICAgICAgIXdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5h
YmxlZCgiV2ViUlRDLUF1ZGlvLUZvcmNlTm9UV0NDIik7CiAgICAgaWYgKGhhc190cmFuc3BvcnRf
c2VxdWVuY2VfbnVtYmVyKSB7Ci0gICAgICBjaGFubmVsX3Byb3h5LT5FbmFibGVTZW5kVHJhbnNw
b3J0U2VxdWVuY2VOdW1iZXIoCisgICAgICBjaGFubmVsX3NlbmQtPkVuYWJsZVNlbmRUcmFuc3Bv
cnRTZXF1ZW5jZU51bWJlcigKICAgICAgICAgICBuZXdfaWRzLnRyYW5zcG9ydF9zZXF1ZW5jZV9u
dW1iZXIpOwogICAgICAgLy8gUHJvYmluZyBpbiBhcHBsaWNhdGlvbiBsaW1pdGVkIHJlZ2lvbiBp
cyBvbmx5IHVzZWQgaW4gY29tYmluYXRpb24gd2l0aAogICAgICAgLy8gc2VuZCBzaWRlIGNvbmdl
c3Rpb24gY29udHJvbCwgd2ljaCBkZXBlbmRzIG9uIGZlZWRiYWNrIHBhY2tldHMgd2hpY2gKICAg
ICAgIC8vIHJlcXVpcmVzIHRyYW5zcG9ydCBzZXF1ZW5jZSBudW1iZXJzIHRvIGJlIGVuYWJsZWQu
Ci0gICAgICBzdHJlYW0tPnRyYW5zcG9ydF8tPkVuYWJsZVBlcmlvZGljQWxyUHJvYmluZyh0cnVl
KTsKLSAgICAgIGJhbmR3aWR0aF9vYnNlcnZlciA9IHN0cmVhbS0+dHJhbnNwb3J0Xy0+R2V0QmFu
ZHdpZHRoT2JzZXJ2ZXIoKTsKKyAgICAgIGlmIChzdHJlYW0tPnJ0cF90cmFuc3BvcnRfKSB7Cisg
ICAgICAgIHN0cmVhbS0+cnRwX3RyYW5zcG9ydF8tPkVuYWJsZVBlcmlvZGljQWxyUHJvYmluZyh0
cnVlKTsKKyAgICAgICAgYmFuZHdpZHRoX29ic2VydmVyID0gc3RyZWFtLT5ydHBfdHJhbnNwb3J0
Xy0+R2V0QmFuZHdpZHRoT2JzZXJ2ZXIoKTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKHN0cmVh
bS0+cnRwX3RyYW5zcG9ydF8pIHsKKyAgICAgIGNoYW5uZWxfc2VuZC0+UmVnaXN0ZXJTZW5kZXJD
b25nZXN0aW9uQ29udHJvbE9iamVjdHMoCisgICAgICAgICAgc3RyZWFtLT5ydHBfdHJhbnNwb3J0
XywgYmFuZHdpZHRoX29ic2VydmVyKTsKICAgICB9Ci0KLSAgICBjaGFubmVsX3Byb3h5LT5SZWdp
c3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cyhzdHJlYW0tPnRyYW5zcG9ydF8sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmFuZHdpZHRoX29ic2VydmVyKTsKICAgfQotCiAgIC8vIE1JRCBSVFAgaGVhZGVyIGV4dGVuc2lv
bi4KICAgaWYgKChmaXJzdF90aW1lIHx8IG5ld19pZHMubWlkICE9IG9sZF9pZHMubWlkIHx8CiAg
ICAgICAgbmV3X2NvbmZpZy5ydHAubWlkICE9IG9sZF9jb25maWcucnRwLm1pZCkgJiYKICAgICAg
IG5ld19pZHMubWlkICE9IDAgJiYgIW5ld19jb25maWcucnRwLm1pZC5lbXB0eSgpKSB7Ci0gICAg
Y2hhbm5lbF9wcm94eS0+U2V0TWlkKG5ld19jb25maWcucnRwLm1pZCwgbmV3X2lkcy5taWQpOwor
ICAgIGNoYW5uZWxfc2VuZC0+U2V0TWlkKG5ld19jb25maWcucnRwLm1pZCwgbmV3X2lkcy5taWQp
OwogICB9CiAKICAgaWYgKCFSZWNvbmZpZ3VyZVNlbmRDb2RlYyhzdHJlYW0sIG5ld19jb25maWcp
KSB7CkBAIC0yOTYsMTYgKzMwMSwyMCBAQCB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6U3RhcnQoKSB7
CiAgICAgICBGaW5kRXh0ZW5zaW9uSWRzKGNvbmZpZ18ucnRwLmV4dGVuc2lvbnMpLnRyYW5zcG9y
dF9zZXF1ZW5jZV9udW1iZXIgIT0gMCAmJgogICAgICAgIXdlYnJ0Yzo6ZmllbGRfdHJpYWw6Oklz
RW5hYmxlZCgiV2ViUlRDLUF1ZGlvLUZvcmNlTm9UV0NDIik7CiAgIGlmIChjb25maWdfLm1pbl9i
aXRyYXRlX2JwcyAhPSAtMSAmJiBjb25maWdfLm1heF9iaXRyYXRlX2JwcyAhPSAtMSAmJgorICAg
ICAgIWNvbmZpZ18uaGFzX2RzY3AgJiYKICAgICAgIChoYXNfdHJhbnNwb3J0X3NlcXVlbmNlX251
bWJlciB8fAogICAgICAgICF3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1B
dWRpby1TZW5kU2lkZUJ3ZSIpIHx8CiAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFi
bGVkKCJXZWJSVEMtQXVkaW8tQUJXRU5vVFdDQyIpKSkgewogICAgIC8vIEF1ZGlvIEJXRSBpcyBl
bmFibGVkLgotICAgIHRyYW5zcG9ydF8tPnBhY2tldF9zZW5kZXIoKS0+U2V0QWNjb3VudEZvckF1
ZGlvUGFja2V0cyh0cnVlKTsKKyAgICBydHBfdHJhbnNwb3J0Xy0+cGFja2V0X3NlbmRlcigpLT5T
ZXRBY2NvdW50Rm9yQXVkaW9QYWNrZXRzKHRydWUpOworICAgIHJ0cF9ydGNwX21vZHVsZV8tPlNl
dEFzUGFydE9mQWxsb2NhdGlvbih0cnVlKTsKICAgICBDb25maWd1cmVCaXRyYXRlT2JzZXJ2ZXIo
Y29uZmlnXy5taW5fYml0cmF0ZV9icHMsIGNvbmZpZ18ubWF4X2JpdHJhdGVfYnBzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfLmJpdHJhdGVfcHJpb3JpdHksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhhc190cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyKTsKKyAg
fSBlbHNlIHsKKyAgICBydHBfcnRjcF9tb2R1bGVfLT5TZXRBc1BhcnRPZkFsbG9jYXRpb24oZmFs
c2UpOwogICB9Ci0gIGNoYW5uZWxfcHJveHlfLT5TdGFydFNlbmQoKTsKKyAgY2hhbm5lbF9zZW5k
Xy0+U3RhcnRTZW5kKCk7CiAgIHNlbmRpbmdfID0gdHJ1ZTsKICAgYXVkaW9fc3RhdGUoKS0+QWRk
U2VuZGluZ1N0cmVhbSh0aGlzLCBlbmNvZGVyX3NhbXBsZV9yYXRlX2h6XywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyX251bV9jaGFubmVsc18pOwpAQCAtMzE4LDE0
ICszMjcsMTQgQEAgdm9pZCBBdWRpb1NlbmRTdHJlYW06OlN0b3AoKSB7CiAgIH0KIAogICBSZW1v
dmVCaXRyYXRlT2JzZXJ2ZXIoKTsKLSAgY2hhbm5lbF9wcm94eV8tPlN0b3BTZW5kKCk7CisgIGNo
YW5uZWxfc2VuZF8tPlN0b3BTZW5kKCk7CiAgIHNlbmRpbmdfID0gZmFsc2U7CiAgIGF1ZGlvX3N0
YXRlKCktPlJlbW92ZVNlbmRpbmdTdHJlYW0odGhpcyk7CiB9CiAKIHZvaWQgQXVkaW9TZW5kU3Ry
ZWFtOjpTZW5kQXVkaW9EYXRhKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19mcmFt
ZSkgewogICBSVENfQ0hFQ0tfUlVOU19TRVJJQUxJWkVEKCZhdWRpb19jYXB0dXJlX3JhY2VfY2hl
Y2tlcl8pOwotICBjaGFubmVsX3Byb3h5Xy0+UHJvY2Vzc0FuZEVuY29kZUF1ZGlvKHN0ZDo6bW92
ZShhdWRpb19mcmFtZSkpOworICBjaGFubmVsX3NlbmRfLT5Qcm9jZXNzQW5kRW5jb2RlQXVkaW8o
c3RkOjptb3ZlKGF1ZGlvX2ZyYW1lKSk7CiB9CiAKIGJvb2wgQXVkaW9TZW5kU3RyZWFtOjpTZW5k
VGVsZXBob25lRXZlbnQoaW50IHBheWxvYWRfdHlwZSwKQEAgLTMzMywxNCArMzQyLDE0IEBAIGJv
b2wgQXVkaW9TZW5kU3RyZWFtOjpTZW5kVGVsZXBob25lRXZlbnQoaW50IHBheWxvYWRfdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV2ZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHVyYXRpb25fbXMpIHsK
ICAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQo
KSk7Ci0gIHJldHVybiBjaGFubmVsX3Byb3h5Xy0+U2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9h
ZFR5cGUocGF5bG9hZF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRfZnJlcXVlbmN5KSAmJgotICAgICAgICAgY2hh
bm5lbF9wcm94eV8tPlNlbmRUZWxlcGhvbmVFdmVudE91dGJhbmQoZXZlbnQsIGR1cmF0aW9uX21z
KTsKKyAgcmV0dXJuIGNoYW5uZWxfc2VuZF8tPlNldFNlbmRUZWxlcGhvbmVFdmVudFBheWxvYWRU
eXBlKHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBheWxvYWRfZnJlcXVlbmN5KSAmJgorICAgICAgICAgY2hhbm5l
bF9zZW5kXy0+U2VuZFRlbGVwaG9uZUV2ZW50T3V0YmFuZChldmVudCwgZHVyYXRpb25fbXMpOwog
fQogCiB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6U2V0TXV0ZWQoYm9vbCBtdXRlZCkgewogICBSVENf
RENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAg
Y2hhbm5lbF9wcm94eV8tPlNldElucHV0TXV0ZShtdXRlZCk7CisgIGNoYW5uZWxfc2VuZF8tPlNl
dElucHV0TXV0ZShtdXRlZCk7CiB9CiAKIHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpTdGF0cyBB
dWRpb1NlbmRTdHJlYW06OkdldFN0YXRzKCkgY29uc3QgewpAQCAtMzUyLDggKzM2MSw5IEBAIHdl
YnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpTdGF0cyBBdWRpb1NlbmRTdHJlYW06OkdldFN0YXRzKAog
ICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgp
KTsKICAgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW06OlN0YXRzIHN0YXRzOwogICBzdGF0cy5sb2Nh
bF9zc3JjID0gY29uZmlnXy5ydHAuc3NyYzsKKyAgc3RhdHMudGFyZ2V0X2JpdHJhdGVfYnBzID0g
Y2hhbm5lbF9zZW5kXy0+R2V0Qml0cmF0ZSgpOwogCi0gIHdlYnJ0Yzo6Q2FsbFNlbmRTdGF0aXN0
aWNzIGNhbGxfc3RhdHMgPSBjaGFubmVsX3Byb3h5Xy0+R2V0UlRDUFN0YXRpc3RpY3MoKTsKKyAg
d2VicnRjOjpDYWxsU2VuZFN0YXRpc3RpY3MgY2FsbF9zdGF0cyA9IGNoYW5uZWxfc2VuZF8tPkdl
dFJUQ1BTdGF0aXN0aWNzKCk7CiAgIHN0YXRzLmJ5dGVzX3NlbnQgPSBjYWxsX3N0YXRzLmJ5dGVz
U2VudDsKICAgc3RhdHMucGFja2V0c19zZW50ID0gY2FsbF9zdGF0cy5wYWNrZXRzU2VudDsKICAg
Ly8gUlRUIGlzbid0IGtub3duIHVudGlsIGEgUlRDUCByZXBvcnQgaXMgcmVjZWl2ZWQuIFVudGls
IHRoZW4sIFZvaWNlRW5naW5lCkBAIC0zNjcsNyArMzc3LDcgQEAgd2VicnRjOjpBdWRpb1NlbmRT
dHJlYW06OlN0YXRzIEF1ZGlvU2VuZFN0cmVhbTo6R2V0U3RhdHMoCiAgICAgc3RhdHMuY29kZWNf
cGF5bG9hZF90eXBlID0gc3BlYy5wYXlsb2FkX3R5cGU7CiAKICAgICAvLyBHZXQgZGF0YSBmcm9t
IHRoZSBsYXN0IHJlbW90ZSBSVENQIHJlcG9ydC4KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGJsb2Nr
IDogY2hhbm5lbF9wcm94eV8tPkdldFJlbW90ZVJUQ1BSZXBvcnRCbG9ja3MoKSkgeworICAgIGZv
ciAoY29uc3QgYXV0byYgYmxvY2sgOiBjaGFubmVsX3NlbmRfLT5HZXRSZW1vdGVSVENQUmVwb3J0
QmxvY2tzKCkpIHsKICAgICAgIC8vIExvb2t1cCByZXBvcnQgZm9yIHNlbmQgc3NyYyBvbmx5Lgog
ICAgICAgaWYgKGJsb2NrLnNvdXJjZV9TU1JDID09IHN0YXRzLmxvY2FsX3NzcmMpIHsKICAgICAg
ICAgc3RhdHMucGFja2V0c19sb3N0ID0gYmxvY2suY3VtdWxhdGl2ZV9udW1fcGFja2V0c19sb3N0
OwpAQCAtMzg5LDcgKzM5OSw3IEBAIHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpTdGF0cyBBdWRp
b1NlbmRTdHJlYW06OkdldFN0YXRzKAogICBzdGF0cy50b3RhbF9pbnB1dF9kdXJhdGlvbiA9IGlu
cHV0X3N0YXRzLnRvdGFsX2R1cmF0aW9uOwogCiAgIHN0YXRzLnR5cGluZ19ub2lzZV9kZXRlY3Rl
ZCA9IGF1ZGlvX3N0YXRlKCktPnR5cGluZ19ub2lzZV9kZXRlY3RlZCgpOwotICBzdGF0cy5hbmFf
c3RhdGlzdGljcyA9IGNoYW5uZWxfcHJveHlfLT5HZXRBTkFTdGF0aXN0aWNzKCk7CisgIHN0YXRz
LmFuYV9zdGF0aXN0aWNzID0gY2hhbm5lbF9zZW5kXy0+R2V0QU5BU3RhdGlzdGljcygpOwogICBS
VENfRENIRUNLKGF1ZGlvX3N0YXRlXy0+YXVkaW9fcHJvY2Vzc2luZygpKTsKICAgc3RhdHMuYXBt
X3N0YXRpc3RpY3MgPQogICAgICAgYXVkaW9fc3RhdGVfLT5hdWRpb19wcm9jZXNzaW5nKCktPkdl
dFN0YXRpc3RpY3MoaGFzX3JlbW90ZV90cmFja3MpOwpAQCAtNDA2LDI3ICs0MTYsMjQgQEAgYm9v
bCBBdWRpb1NlbmRTdHJlYW06OkRlbGl2ZXJSdGNwKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6
ZV90IGxlbmd0aCkgewogICAvLyBjYWxscyBvbiB0aGUgd29ya2VyIHRocmVhZC4gV2Ugc2hvdWxk
IG1vdmUgdG93YXJkcyBhbHdheXMgdXNpbmcgYSBuZXR3b3JrCiAgIC8vIHRocmVhZC4gVGhlbiB0
aGlzIGNoZWNrIGNhbiBiZSBlbmFibGVkLgogICAvLyBSVENfRENIRUNLKCF3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHJldHVybiBjaGFubmVsX3Byb3h5
Xy0+UmVjZWl2ZWRSVENQUGFja2V0KHBhY2tldCwgbGVuZ3RoKTsKKyAgcmV0dXJuIGNoYW5uZWxf
c2VuZF8tPlJlY2VpdmVkUlRDUFBhY2tldChwYWNrZXQsIGxlbmd0aCk7CiB9CiAKLXVpbnQzMl90
IEF1ZGlvU2VuZFN0cmVhbTo6T25CaXRyYXRlVXBkYXRlZCh1aW50MzJfdCBiaXRyYXRlX2JwcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZyYWN0
aW9uX2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCBydHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCBid2VfcGVyaW9kX21zKSB7Cit1aW50MzJfdCBBdWRpb1NlbmRTdHJlYW06Ok9uQml0cmF0
ZVVwZGF0ZWQoQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlKSB7CiAgIC8vIEEgc2VuZCBz
dHJlYW0gbWF5IGJlIGFsbG9jYXRlZCBhIGJpdHJhdGUgb2YgemVybyBpZiB0aGUgYWxsb2NhdG9y
IGRlY2lkZXMKICAgLy8gdG8gZGlzYWJsZSBpdC4gRm9yIG5vdyB3ZSBpZ25vcmUgdGhpcyBkZWNp
c2lvbiBhbmQga2VlcCBzZW5kaW5nIG9uIG1pbgogICAvLyBiaXRyYXRlLgotICBpZiAoYml0cmF0
ZV9icHMgPT0gMCkgewotICAgIGJpdHJhdGVfYnBzID0gY29uZmlnXy5taW5fYml0cmF0ZV9icHM7
CisgIGlmICh1cGRhdGUudGFyZ2V0X2JpdHJhdGUuSXNaZXJvKCkpIHsKKyAgICB1cGRhdGUudGFy
Z2V0X2JpdHJhdGUgPSBEYXRhUmF0ZTo6YnBzKGNvbmZpZ18ubWluX2JpdHJhdGVfYnBzKTsKICAg
fQotICBSVENfRENIRUNLX0dFKGJpdHJhdGVfYnBzLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29u
ZmlnXy5taW5fYml0cmF0ZV9icHMpKTsKKyAgUlRDX0RDSEVDS19HRSh1cGRhdGUudGFyZ2V0X2Jp
dHJhdGUuYnBzPGludD4oKSwgY29uZmlnXy5taW5fYml0cmF0ZV9icHMpOwogICAvLyBUaGUgYml0
cmF0ZSBhbGxvY2F0b3IgbWlnaHQgYWxsb2NhdGUgYW4gaGlnaGVyIHRoYW4gbWF4IGNvbmZpZ3Vy
ZWQgYml0cmF0ZQogICAvLyBpZiB0aGVyZSBpcyByb29tLCB0byBhbGxvdyBmb3IsIGFzIGV4YW1w
bGUsIGV4dHJhIEZFQy4gSWdub3JlIHRoYXQgZm9yIG5vdy4KLSAgY29uc3QgdWludDMyX3QgbWF4
X2JpdHJhdGVfYnBzID0gY29uZmlnXy5tYXhfYml0cmF0ZV9icHM7Ci0gIGlmIChiaXRyYXRlX2Jw
cyA+IG1heF9iaXRyYXRlX2JwcykKLSAgICBiaXRyYXRlX2JwcyA9IG1heF9iaXRyYXRlX2JwczsK
KyAgY29uc3QgRGF0YVJhdGUgbWF4X2JpdHJhdGUgPSBEYXRhUmF0ZTo6YnBzKGNvbmZpZ18ubWF4
X2JpdHJhdGVfYnBzKTsKKyAgaWYgKHVwZGF0ZS50YXJnZXRfYml0cmF0ZSA+IG1heF9iaXRyYXRl
KQorICAgIHVwZGF0ZS50YXJnZXRfYml0cmF0ZSA9IG1heF9iaXRyYXRlOwogCi0gIGNoYW5uZWxf
cHJveHlfLT5TZXRCaXRyYXRlKGJpdHJhdGVfYnBzLCBid2VfcGVyaW9kX21zKTsKKyAgY2hhbm5l
bF9zZW5kXy0+T25CaXRyYXRlQWxsb2NhdGlvbih1cGRhdGUpOwogCiAgIC8vIFRoZSBhbW91bnQg
b2YgYXVkaW8gcHJvdGVjdGlvbiBpcyBub3QgZXhwb3NlZCBieSB0aGUgZW5jb2RlciwgaGVuY2UK
ICAgLy8gYWx3YXlzIHJldHVybmluZyAwLgpAQCAtNDYwLDI1ICs0NjcsMjQgQEAgdm9pZCBBdWRp
b1NlbmRTdHJlYW06Ok9uUGFja2V0RmVlZGJhY2tWZWN0b3IoCiAgIC8vIHRoZSBwcmV2aW91c2x5
IHNlbnQgdmFsdWUgaXMgbm8gbG9uZ2VyIHJlbGV2YW50LiBUaGlzIHdpbGwgYmUgdGFrZW4gY2Fy
ZQogICAvLyBvZiB3aXRoIHNvbWUgcmVmYWN0b3Jpbmcgd2hpY2ggaXMgbm93IGJlaW5nIGRvbmUu
CiAgIGlmIChwbHIpIHsKLSAgICBjaGFubmVsX3Byb3h5Xy0+T25Ud2NjQmFzZWRVcGxpbmtQYWNr
ZXRMb3NzUmF0ZSgqcGxyKTsKKyAgICBjaGFubmVsX3NlbmRfLT5PblR3Y2NCYXNlZFVwbGlua1Bh
Y2tldExvc3NSYXRlKCpwbHIpOwogICB9CiAgIGlmIChycGxyKSB7Ci0gICAgY2hhbm5lbF9wcm94
eV8tPk9uUmVjb3ZlcmFibGVVcGxpbmtQYWNrZXRMb3NzUmF0ZSgqcnBscik7CisgICAgY2hhbm5l
bF9zZW5kXy0+T25SZWNvdmVyYWJsZVVwbGlua1BhY2tldExvc3NSYXRlKCpycGxyKTsKICAgfQog
fQogCiB2b2lkIEF1ZGlvU2VuZFN0cmVhbTo6U2V0VHJhbnNwb3J0T3ZlcmhlYWQoaW50IHRyYW5z
cG9ydF9vdmVyaGVhZF9wZXJfcGFja2V0KSB7CiAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9j
aGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsX3Byb3h5Xy0+U2V0VHJh
bnNwb3J0T3ZlcmhlYWQodHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpOworICBjaGFubmVs
X3NlbmRfLT5TZXRUcmFuc3BvcnRPdmVyaGVhZCh0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tl
dCk7CiB9CiAKIFJ0cFN0YXRlIEF1ZGlvU2VuZFN0cmVhbTo6R2V0UnRwU3RhdGUoKSBjb25zdCB7
CiAgIHJldHVybiBydHBfcnRjcF9tb2R1bGVfLT5HZXRSdHBTdGF0ZSgpOwogfQogCi1jb25zdCB2
b2U6OkNoYW5uZWxTZW5kUHJveHkmIEF1ZGlvU2VuZFN0cmVhbTo6R2V0Q2hhbm5lbFByb3h5KCkg
Y29uc3QgewotICBSVENfRENIRUNLKGNoYW5uZWxfcHJveHlfLmdldCgpKTsKLSAgcmV0dXJuICpj
aGFubmVsX3Byb3h5Xy5nZXQoKTsKK2NvbnN0IHZvZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2UqIEF1
ZGlvU2VuZFN0cmVhbTo6R2V0Q2hhbm5lbCgpIGNvbnN0IHsKKyAgcmV0dXJuIGNoYW5uZWxfc2Vu
ZF8uZ2V0KCk7CiB9CiAKIGludGVybmFsOjpBdWRpb1N0YXRlKiBBdWRpb1NlbmRTdHJlYW06OmF1
ZGlvX3N0YXRlKCkgewpAQCAtNTQ5LDEyICs1NTUsMTIgQEAgYm9vbCBBdWRpb1NlbmRTdHJlYW06
OlNldHVwU2VuZENvZGVjKEF1ZGlvU2VuZFN0cmVhbSogc3RyZWFtLAogCiAgIC8vIFdyYXAgdGhl
IGVuY29kZXIgaW4gYSBhbiBBdWRpb0VuY29kZXJDTkcsIGlmIFZBRCBpcyBlbmFibGVkLgogICBp
ZiAoc3BlYy5jbmdfcGF5bG9hZF90eXBlKSB7Ci0gICAgQXVkaW9FbmNvZGVyQ25nOjpDb25maWcg
Y25nX2NvbmZpZzsKKyAgICBBdWRpb0VuY29kZXJDbmdDb25maWcgY25nX2NvbmZpZzsKICAgICBj
bmdfY29uZmlnLm51bV9jaGFubmVscyA9IGVuY29kZXItPk51bUNoYW5uZWxzKCk7CiAgICAgY25n
X2NvbmZpZy5wYXlsb2FkX3R5cGUgPSAqc3BlYy5jbmdfcGF5bG9hZF90eXBlOwogICAgIGNuZ19j
b25maWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUoZW5jb2Rlcik7CiAgICAgY25nX2NvbmZp
Zy52YWRfbW9kZSA9IFZhZDo6a1ZhZE5vcm1hbDsKLSAgICBlbmNvZGVyLnJlc2V0KG5ldyBBdWRp
b0VuY29kZXJDbmcoc3RkOjptb3ZlKGNuZ19jb25maWcpKSk7CisgICAgZW5jb2RlciA9IENyZWF0
ZUNvbWZvcnROb2lzZUVuY29kZXIoc3RkOjptb3ZlKGNuZ19jb25maWcpKTsKIAogICAgIHN0cmVh
bS0+UmVnaXN0ZXJDbmdQYXlsb2FkVHlwZSgKICAgICAgICAgKnNwZWMuY25nX3BheWxvYWRfdHlw
ZSwKQEAgLTU2Myw4ICs1NjksOCBAQCBib29sIEF1ZGlvU2VuZFN0cmVhbTo6U2V0dXBTZW5kQ29k
ZWMoQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0sCiAKICAgc3RyZWFtLT5TdG9yZUVuY29kZXJQcm9w
ZXJ0aWVzKGVuY29kZXItPlNhbXBsZVJhdGVIeigpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5jb2Rlci0+TnVtQ2hhbm5lbHMoKSk7Ci0gIHN0cmVhbS0+Y2hhbm5lbF9wcm94
eV8tPlNldEVuY29kZXIobmV3X2NvbmZpZy5zZW5kX2NvZGVjX3NwZWMtPnBheWxvYWRfdHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoZW5jb2Rlcikp
OworICBzdHJlYW0tPmNoYW5uZWxfc2VuZF8tPlNldEVuY29kZXIobmV3X2NvbmZpZy5zZW5kX2Nv
ZGVjX3NwZWMtPnBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bW92ZShlbmNvZGVyKSk7CiAgIHJldHVybiB0cnVlOwogfQogCkBAIC02MTAsNyAr
NjE2LDcgQEAgYm9vbCBBdWRpb1NlbmRTdHJlYW06OlJlY29uZmlndXJlU2VuZENvZGVjKEF1ZGlv
U2VuZFN0cmVhbSogc3RyZWFtLAogICBpZiAoIWRvX25vdF91cGRhdGVfdGFyZ2V0X2JpdHJhdGUg
JiYgbmV3X3RhcmdldF9iaXRyYXRlX2JwcyAmJgogICAgICAgbmV3X3RhcmdldF9iaXRyYXRlX2Jw
cyAhPQogICAgICAgICAgIG9sZF9jb25maWcuc2VuZF9jb2RlY19zcGVjLT50YXJnZXRfYml0cmF0
ZV9icHMpIHsKLSAgICBDYWxsRW5jb2RlcihzdHJlYW0tPmNoYW5uZWxfcHJveHlfLCBbJl0oQXVk
aW9FbmNvZGVyKiBlbmNvZGVyKSB7CisgICAgQ2FsbEVuY29kZXIoc3RyZWFtLT5jaGFubmVsX3Nl
bmRfLCBbJl0oQXVkaW9FbmNvZGVyKiBlbmNvZGVyKSB7CiAgICAgICBlbmNvZGVyLT5PblJlY2Vp
dmVkVGFyZ2V0QXVkaW9CaXRyYXRlKCpuZXdfdGFyZ2V0X2JpdHJhdGVfYnBzKTsKICAgICB9KTsK
ICAgfQpAQCAtNjI4LDcgKzYzNCw3IEBAIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpSZWNvbmZpZ3Vy
ZUFOQShBdWRpb1NlbmRTdHJlYW0qIHN0cmVhbSwKICAgICByZXR1cm47CiAgIH0KICAgaWYgKG5l
d19jb25maWcuYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZykgewotICAgIENhbGxFbmNvZGVy
KHN0cmVhbS0+Y2hhbm5lbF9wcm94eV8sIFsmXShBdWRpb0VuY29kZXIqIGVuY29kZXIpIHsKKyAg
ICBDYWxsRW5jb2RlcihzdHJlYW0tPmNoYW5uZWxfc2VuZF8sIFsmXShBdWRpb0VuY29kZXIqIGVu
Y29kZXIpIHsKICAgICAgIGlmIChlbmNvZGVyLT5FbmFibGVBdWRpb05ldHdvcmtBZGFwdG9yKAog
ICAgICAgICAgICAgICAqbmV3X2NvbmZpZy5hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLCBz
dHJlYW0tPmV2ZW50X2xvZ18pKSB7CiAgICAgICAgIFJUQ19ETE9HKExTX0lORk8pIDw8ICJBdWRp
byBuZXR3b3JrIGFkYXB0b3IgZW5hYmxlZCBvbiBTU1JDICIKQEAgLTYzOCw3ICs2NDQsNyBAQCB2
b2lkIEF1ZGlvU2VuZFN0cmVhbTo6UmVjb25maWd1cmVBTkEoQXVkaW9TZW5kU3RyZWFtKiBzdHJl
YW0sCiAgICAgICB9CiAgICAgfSk7CiAgIH0gZWxzZSB7Ci0gICAgQ2FsbEVuY29kZXIoc3RyZWFt
LT5jaGFubmVsX3Byb3h5XywgWyZdKEF1ZGlvRW5jb2RlciogZW5jb2RlcikgeworICAgIENhbGxF
bmNvZGVyKHN0cmVhbS0+Y2hhbm5lbF9zZW5kXywgWyZdKEF1ZGlvRW5jb2RlciogZW5jb2Rlcikg
ewogICAgICAgZW5jb2Rlci0+RGlzYWJsZUF1ZGlvTmV0d29ya0FkYXB0b3IoKTsKICAgICB9KTsK
ICAgICBSVENfRExPRyhMU19JTkZPKSA8PCAiQXVkaW8gbmV0d29yayBhZGFwdG9yIGRpc2FibGVk
IG9uIFNTUkMgIgpAQCAtNjYyLDcgKzY2OCw3IEBAIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpSZWNv
bmZpZ3VyZUNORyhBdWRpb1NlbmRTdHJlYW0qIHN0cmVhbSwKICAgfQogCiAgIC8vIFdyYXAgb3Ig
dW53cmFwIHRoZSBlbmNvZGVyIGluIGFuIEF1ZGlvRW5jb2RlckNORy4KLSAgc3RyZWFtLT5jaGFu
bmVsX3Byb3h5Xy0+TW9kaWZ5RW5jb2RlcigKKyAgc3RyZWFtLT5jaGFubmVsX3NlbmRfLT5Nb2Rp
ZnlFbmNvZGVyKAogICAgICAgWyZdKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBlbmNv
ZGVyX3B0cikgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBvbGRfZW5j
b2RlcihzdGQ6Om1vdmUoKmVuY29kZXJfcHRyKSk7CiAgICAgICAgIGF1dG8gc3ViX2VuY29kZXJz
ID0gb2xkX2VuY29kZXItPlJlY2xhaW1Db250YWluZWRFbmNvZGVycygpOwpAQCAtNjc2LDEyICs2
ODIsMTIgQEAgdm9pZCBBdWRpb1NlbmRTdHJlYW06OlJlY29uZmlndXJlQ05HKEF1ZGlvU2VuZFN0
cmVhbSogc3RyZWFtLAogICAgICAgICAgIG9sZF9lbmNvZGVyID0gc3RkOjptb3ZlKHRtcCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKG5ld19jb25maWcuc2VuZF9jb2RlY19zcGVjLT5jbmdfcGF5
bG9hZF90eXBlKSB7Ci0gICAgICAgICAgQXVkaW9FbmNvZGVyQ25nOjpDb25maWcgY29uZmlnOwor
ICAgICAgICAgIEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyBjb25maWc7CiAgICAgICAgICAgY29uZmln
LnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKG9sZF9lbmNvZGVyKTsKICAgICAgICAgICBjb25m
aWcubnVtX2NoYW5uZWxzID0gY29uZmlnLnNwZWVjaF9lbmNvZGVyLT5OdW1DaGFubmVscygpOwog
ICAgICAgICAgIGNvbmZpZy5wYXlsb2FkX3R5cGUgPSAqbmV3X2NvbmZpZy5zZW5kX2NvZGVjX3Nw
ZWMtPmNuZ19wYXlsb2FkX3R5cGU7CiAgICAgICAgICAgY29uZmlnLnZhZF9tb2RlID0gVmFkOjpr
VmFkTm9ybWFsOwotICAgICAgICAgIGVuY29kZXJfcHRyLT5yZXNldChuZXcgQXVkaW9FbmNvZGVy
Q25nKHN0ZDo6bW92ZShjb25maWcpKSk7CisgICAgICAgICAgKmVuY29kZXJfcHRyID0gQ3JlYXRl
Q29tZm9ydE5vaXNlRW5jb2RlcihzdGQ6Om1vdmUoY29uZmlnKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgKmVuY29kZXJfcHRyID0gc3RkOjptb3ZlKG9sZF9lbmNvZGVyKTsKICAgICAg
ICAgfQpAQCAtNzA4LDEzICs3MTQsMTggQEAgdm9pZCBBdWRpb1NlbmRTdHJlYW06OlJlY29uZmln
dXJlQml0cmF0ZU9ic2VydmVyKAogCiAgIGJvb2wgaGFzX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1i
ZXIgPSBuZXdfdHJhbnNwb3J0X3NlcV9udW1faWQgIT0gMDsKICAgaWYgKG5ld19jb25maWcubWlu
X2JpdHJhdGVfYnBzICE9IC0xICYmIG5ld19jb25maWcubWF4X2JpdHJhdGVfYnBzICE9IC0xICYm
CisgICAgICAhbmV3X2NvbmZpZy5oYXNfZHNjcCAmJgogICAgICAgKGhhc190cmFuc3BvcnRfc2Vx
dWVuY2VfbnVtYmVyIHx8CiAgICAgICAgIXdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgi
V2ViUlRDLUF1ZGlvLVNlbmRTaWRlQndlIikpKSB7CisgICAgc3RyZWFtLT5ydHBfdHJhbnNwb3J0
Xy0+cGFja2V0X3NlbmRlcigpLT5TZXRBY2NvdW50Rm9yQXVkaW9QYWNrZXRzKHRydWUpOwogICAg
IHN0cmVhbS0+Q29uZmlndXJlQml0cmF0ZU9ic2VydmVyKAogICAgICAgICBuZXdfY29uZmlnLm1p
bl9iaXRyYXRlX2JwcywgbmV3X2NvbmZpZy5tYXhfYml0cmF0ZV9icHMsCiAgICAgICAgIG5ld19j
b25maWcuYml0cmF0ZV9wcmlvcml0eSwgaGFzX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIpOwor
ICAgIHN0cmVhbS0+cnRwX3J0Y3BfbW9kdWxlXy0+U2V0QXNQYXJ0T2ZBbGxvY2F0aW9uKHRydWUp
OwogICB9IGVsc2UgeworICAgIHN0cmVhbS0+cnRwX3RyYW5zcG9ydF8tPnBhY2tldF9zZW5kZXIo
KS0+U2V0QWNjb3VudEZvckF1ZGlvUGFja2V0cyhmYWxzZSk7CiAgICAgc3RyZWFtLT5SZW1vdmVC
aXRyYXRlT2JzZXJ2ZXIoKTsKKyAgICBzdHJlYW0tPnJ0cF9ydGNwX21vZHVsZV8tPlNldEFzUGFy
dE9mQWxsb2NhdGlvbihmYWxzZSk7CiAgIH0KIH0KIApAQCAtNzI0LDcgKzczNSw3IEBAIHZvaWQg
QXVkaW9TZW5kU3RyZWFtOjpDb25maWd1cmVCaXRyYXRlT2JzZXJ2ZXIoaW50IG1pbl9iaXRyYXRl
X2JwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBoYXNfcGFja2V0X2ZlZWRiYWNrKSB7CiAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVj
a2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBSVENfRENIRUNLX0dFKG1heF9iaXRyYXRl
X2JwcywgbWluX2JpdHJhdGVfYnBzKTsKLSAgcnRjOjpFdmVudCB0aHJlYWRfc3luY19ldmVudChm
YWxzZSAvKiBtYW51YWxfcmVzZXQgKi8sIGZhbHNlKTsKKyAgcnRjOjpFdmVudCB0aHJlYWRfc3lu
Y19ldmVudDsKICAgd29ya2VyX3F1ZXVlXy0+UG9zdFRhc2soWyZdIHsKICAgICAvLyBXZSBtYXkg
Z2V0IGEgY2FsbGJhY2sgaW1tZWRpYXRlbHkgYXMgdGhlIG9ic2VydmVyIGlzIHJlZ2lzdGVyZWQs
IHNvIG1ha2UKICAgICAvLyBzdXJlIHRoZSBiaXRyYXRlIGxpbWl0cyBpbiBjb25maWdfIGFyZSB1
cC10by1kYXRlLgpAQCAtNzQ0LDcgKzc1NSw3IEBAIHZvaWQgQXVkaW9TZW5kU3RyZWFtOjpDb25m
aWd1cmVCaXRyYXRlT2JzZXJ2ZXIoaW50IG1pbl9iaXRyYXRlX2JwcywKIAogdm9pZCBBdWRpb1Nl
bmRTdHJlYW06OlJlbW92ZUJpdHJhdGVPYnNlcnZlcigpIHsKICAgUlRDX0RDSEVDSyh3b3JrZXJf
dGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHJ0Yzo6RXZlbnQgdGhy
ZWFkX3N5bmNfZXZlbnQoZmFsc2UgLyogbWFudWFsX3Jlc2V0ICovLCBmYWxzZSk7CisgIHJ0Yzo6
RXZlbnQgdGhyZWFkX3N5bmNfZXZlbnQ7CiAgIHdvcmtlcl9xdWV1ZV8tPlBvc3RUYXNrKFt0aGlz
LCAmdGhyZWFkX3N5bmNfZXZlbnRdIHsKICAgICBiaXRyYXRlX2FsbG9jYXRvcl8tPlJlbW92ZU9i
c2VydmVyKHRoaXMpOwogICAgIHRocmVhZF9zeW5jX2V2ZW50LlNldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fc2Vu
ZF9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1
ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtLmgKaW5kZXggMWVhNjc2YjY1ZGI3NDUyMjE4NjFhYTUxZDQz
MDk0OThjNmFhYzkxYS4uYmY5NDkwMWVmMDU3NTBmMzA2OGRlZTkwM2E2ZDBmNWNiZWY2ZGY1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVk
aW8vYXVkaW9fc2VuZF9zdHJlYW0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby9hdWRpb19zZW5kX3N0cmVhbS5oCkBAIC0xNCw3ICsxNCw3IEBA
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImF1ZGlv
L3RpbWVfaW50ZXJ2YWwuaCIKKyNpbmNsdWRlICJhdWRpby9jaGFubmVsX3NlbmQuaCIKICNpbmNs
dWRlICJhdWRpby90cmFuc3BvcnRfZmVlZGJhY2tfcGFja2V0X2xvc3NfdHJhY2tlci5oIgogI2lu
Y2x1ZGUgImNhbGwvYXVkaW9fc2VuZF9zdHJlYW0uaCIKICNpbmNsdWRlICJjYWxsL2F1ZGlvX3N0
YXRlLmgiCkBAIC0zMCwxMCArMzAsNiBAQCBjbGFzcyBSdGNwQmFuZHdpZHRoT2JzZXJ2ZXI7CiBj
bGFzcyBSdGNwUnR0U3RhdHM7CiBjbGFzcyBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVy
ZmFjZTsKIAotbmFtZXNwYWNlIHZvZSB7Ci1jbGFzcyBDaGFubmVsU2VuZFByb3h5OwotfSAgLy8g
bmFtZXNwYWNlIHZvZQotCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogY2xhc3MgQXVkaW9TdGF0ZTsK
IApAQCAtNDUsMjMgKzQxLDIxIEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSBmaW5hbCA6IHB1Ymxp
YyB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbSwKICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvU3RhdGU+JiBhdWRpb19zdGF0ZSwKICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6VGFza1F1ZXVlKiB3b3JrZXJfcXVldWUsCiAgICAgICAgICAgICAgICAg
ICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCi0gICAgICAgICAgICAgICAg
ICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogdHJhbnNwb3J0LAotICAgICAg
ICAgICAgICAgICAgQml0cmF0ZUFsbG9jYXRvciogYml0cmF0ZV9hbGxvY2F0b3IsCisgICAgICAg
ICAgICAgICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogcnRwX3RyYW5z
cG9ydCwKKyAgICAgICAgICAgICAgICAgIEJpdHJhdGVBbGxvY2F0b3JJbnRlcmZhY2UqIGJpdHJh
dGVfYWxsb2NhdG9yLAogICAgICAgICAgICAgICAgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywK
ICAgICAgICAgICAgICAgICAgIFJ0Y3BSdHRTdGF0cyogcnRjcF9ydHRfc3RhdHMsCi0gICAgICAg
ICAgICAgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxSdHBTdGF0ZT4mIHN1c3BlbmRlZF9ydHBf
c3RhdGUsCi0gICAgICAgICAgICAgICAgICBUaW1lSW50ZXJ2YWwqIG92ZXJhbGxfY2FsbF9saWZl
dGltZSk7Ci0gIC8vIEZvciB1bml0IHRlc3RzLCB3aGljaCBuZWVkIHRvIHN1cHBseSBhIG1vY2sg
Y2hhbm5lbCBwcm94eS4KKyAgICAgICAgICAgICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFJ0
cFN0YXRlPiYgc3VzcGVuZGVkX3J0cF9zdGF0ZSk7CisgIC8vIEZvciB1bml0IHRlc3RzLCB3aGlj
aCBuZWVkIHRvIHN1cHBseSBhIG1vY2sgQ2hhbm5lbFNlbmQuCiAgIEF1ZGlvU2VuZFN0cmVhbShj
b25zdCB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnJiBjb25maWcsCiAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiYgYXVk
aW9fc3RhdGUsCiAgICAgICAgICAgICAgICAgICBydGM6OlRhc2tRdWV1ZSogd29ya2VyX3F1ZXVl
LAotICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2Uq
IHRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgIEJpdHJhdGVBbGxvY2F0b3IqIGJpdHJhdGVf
YWxsb2NhdG9yLAorICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJ
bnRlcmZhY2UqIHJ0cF90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICBCaXRyYXRlQWxsb2Nh
dG9ySW50ZXJmYWNlKiBiaXRyYXRlX2FsbG9jYXRvciwKICAgICAgICAgICAgICAgICAgIFJ0Y0V2
ZW50TG9nKiBldmVudF9sb2csCiAgICAgICAgICAgICAgICAgICBSdGNwUnR0U3RhdHMqIHJ0Y3Bf
cnR0X3N0YXRzLAogICAgICAgICAgICAgICAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8UnRwU3Rh
dGU+JiBzdXNwZW5kZWRfcnRwX3N0YXRlLAotICAgICAgICAgICAgICAgICAgVGltZUludGVydmFs
KiBvdmVyYWxsX2NhbGxfbGlmZXRpbWUsCi0gICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8dm9lOjpDaGFubmVsU2VuZFByb3h5PiBjaGFubmVsX3Byb3h5KTsKKyAgICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2U6OkNoYW5uZWxTZW5kSW50ZXJmYWNlPiBjaGFubmVsX3Nl
bmQpOwogICB+QXVkaW9TZW5kU3RyZWFtKCkgb3ZlcnJpZGU7CiAKICAgLy8gd2VicnRjOjpBdWRp
b1NlbmRTdHJlYW0gaW1wbGVtZW50YXRpb24uCkBAIC04MywxMCArNzcsNyBAQCBjbGFzcyBBdWRp
b1NlbmRTdHJlYW0gZmluYWwgOiBwdWJsaWMgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW0sCiAgIGJv
b2wgRGVsaXZlclJ0Y3AoY29uc3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKTsKIAog
ICAvLyBJbXBsZW1lbnRzIEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlci4KLSAgdWludDMyX3QgT25C
aXRyYXRlVXBkYXRlZCh1aW50MzJfdCBiaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90IGZyYWN0aW9uX2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBydHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBid2Vf
cGVyaW9kX21zKSBvdmVycmlkZTsKKyAgdWludDMyX3QgT25CaXRyYXRlVXBkYXRlZChCaXRyYXRl
QWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpIG92ZXJyaWRlOwogCiAgIC8vIEZyb20gUGFja2V0RmVl
ZGJhY2tPYnNlcnZlci4KICAgdm9pZCBPblBhY2tldEFkZGVkKHVpbnQzMl90IHNzcmMsIHVpbnQx
Nl90IHNlcV9udW0pIG92ZXJyaWRlOwpAQCAtOTYsNyArODcsNyBAQCBjbGFzcyBBdWRpb1NlbmRT
dHJlYW0gZmluYWwgOiBwdWJsaWMgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW0sCiAgIHZvaWQgU2V0
VHJhbnNwb3J0T3ZlcmhlYWQoaW50IHRyYW5zcG9ydF9vdmVyaGVhZF9wZXJfcGFja2V0KTsKIAog
ICBSdHBTdGF0ZSBHZXRSdHBTdGF0ZSgpIGNvbnN0OwotICBjb25zdCB2b2U6OkNoYW5uZWxTZW5k
UHJveHkmIEdldENoYW5uZWxQcm94eSgpIGNvbnN0OworICBjb25zdCB2b2U6OkNoYW5uZWxTZW5k
SW50ZXJmYWNlKiBHZXRDaGFubmVsKCkgY29uc3Q7CiAKICBwcml2YXRlOgogICBjbGFzcyBUaW1l
ZFRyYW5zcG9ydDsKQEAgLTEzMywxNSArMTI0LDE1IEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSBm
aW5hbCA6IHB1YmxpYyB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbSwKICAgcnRjOjpUYXNrUXVldWUq
IHdvcmtlcl9xdWV1ZV87CiAgIHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpDb25maWcgY29uZmln
XzsKICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4gYXVkaW9fc3RhdGVf
OwotICBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsU2VuZFByb3h5PiBjaGFubmVsX3Byb3h5
XzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHZvZTo6Q2hhbm5lbFNlbmRJbnRlcmZhY2U+IGNo
YW5uZWxfc2VuZF87CiAgIFJ0Y0V2ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOwogCiAgIGludCBl
bmNvZGVyX3NhbXBsZV9yYXRlX2h6XyA9IDA7CiAgIHNpemVfdCBlbmNvZGVyX251bV9jaGFubmVs
c18gPSAwOwogICBib29sIHNlbmRpbmdfID0gZmFsc2U7CiAKLSAgQml0cmF0ZUFsbG9jYXRvciog
Y29uc3QgYml0cmF0ZV9hbGxvY2F0b3JfOwotICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZElu
dGVyZmFjZSogY29uc3QgdHJhbnNwb3J0XzsKKyAgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSog
Y29uc3QgYml0cmF0ZV9hbGxvY2F0b3JfOworICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZElu
dGVyZmFjZSogY29uc3QgcnRwX3RyYW5zcG9ydF87CiAKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24g
cGFja2V0X2xvc3NfdHJhY2tlcl9jc187CiAgIFRyYW5zcG9ydEZlZWRiYWNrUGFja2V0TG9zc1Ry
YWNrZXIgcGFja2V0X2xvc3NfdHJhY2tlcl8KQEAgLTE1MCwxMCArMTQxLDYgQEAgY2xhc3MgQXVk
aW9TZW5kU3RyZWFtIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtLAogICBS
dHBSdGNwKiBydHBfcnRjcF9tb2R1bGVfOwogICBhYnNsOjpvcHRpb25hbDxSdHBTdGF0ZT4gY29u
c3Qgc3VzcGVuZGVkX3J0cF9zdGF0ZV87CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFRpbWVkVHJhbnNw
b3J0PiB0aW1lZF9zZW5kX3RyYW5zcG9ydF9hZGFwdGVyXzsKLSAgVGltZUludGVydmFsIGFjdGl2
ZV9saWZldGltZV87Ci0gIFRpbWVJbnRlcnZhbCogb3ZlcmFsbF9jYWxsX2xpZmV0aW1lXyA9IG51
bGxwdHI7Ci0KICAgLy8gUkZDIDUyODU6IEVhY2ggZGlzdGluY3QgZXh0ZW5zaW9uIE1VU1QgaGF2
ZSBhIHVuaXF1ZSBJRC4gVGhlIHZhbHVlIDAgaXMKICAgLy8gcmVzZXJ2ZWQgZm9yIHBhZGRpbmcg
YW5kIE1VU1QgTk9UIGJlIHVzZWQgYXMgYSBsb2NhbCBpZGVudGlmaWVyLgogICAvLyBTbyBpdCBz
aG91bGQgYmUgc2FmZSB0byB1c2UgMCBoZXJlIHRvIGluZGljYXRlICJub3QgY29uZmlndXJlZCIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby9hdWRpb19zZW5kX3N0cmVhbV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtX3VuaXR0ZXN0LmNj
CmluZGV4IDBhOTU0Zjg2ZDYyOWM1NTk1ZDIwMTRkNzRjMTM3ODI2OGRlMWU2ZTAuLmU0MDBhZGEw
ZTVhZjQwOWI0MmFjNjhiNGE2NjhiZjFhMzRiNDFkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2F1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtX3VuaXR0ZXN0LmNjCkBAIC0xMyw3ICsxMyw3IEBACiAj
aW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5j
bHVkZSAiYXBpL3VuaXRzL3RpbWVfZGVsdGEuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX2Zy
YW1lX2VuY3J5cHRvci5oIgogI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtLmgiCiAj
aW5jbHVkZSAiYXVkaW8vYXVkaW9fc3RhdGUuaCIKICNpbmNsdWRlICJhdWRpby9jb252ZXJzaW9u
LmgiCkBAIC0yNywxMiArMjcsMTAgQEAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL21vY2tz
L21vY2tfcnRjcF9iYW5kd2lkdGhfb2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL21vY2tzL21vY2tfcnRjcF9ydHRfc3RhdHMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL21vY2tzL21vY2tfcnRwX3J0Y3AuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9mYWtlY2xvY2su
aCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVlLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVz
dC5oIgogI2luY2x1ZGUgInRlc3QvbW9ja19hdWRpb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAidGVz
dC9tb2NrX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgInRlc3QvbW9ja190cmFu
c3BvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CkBAIC00MSw2
ICszOSw3IEBAIG5hbWVzcGFjZSB7CiB1c2luZyB0ZXN0aW5nOjpfOwogdXNpbmcgdGVzdGluZzo6
RXE7CiB1c2luZyB0ZXN0aW5nOjpOZTsKK3VzaW5nIHRlc3Rpbmc6OkZpZWxkOwogdXNpbmcgdGVz
dGluZzo6SW52b2tlOwogdXNpbmcgdGVzdGluZzo6UmV0dXJuOwogdXNpbmcgdGVzdGluZzo6U3Ry
RXE7CkBAIC0xMjgsNyArMTI3LDcgQEAgcnRjOjpzY29wZWRfcmVmcHRyPE1vY2tBdWRpb0VuY29k
ZXJGYWN0b3J5PiBTZXR1cEVuY29kZXJGYWN0b3J5TW9jaygpIHsKIAogc3RydWN0IENvbmZpZ0hl
bHBlciB7CiAgIENvbmZpZ0hlbHBlcihib29sIGF1ZGlvX2J3ZV9lbmFibGVkLCBib29sIGV4cGVj
dF9zZXRfZW5jb2Rlcl9jYWxsKQotICAgICAgOiBzdHJlYW1fY29uZmlnXyhudWxscHRyKSwKKyAg
ICAgIDogc3RyZWFtX2NvbmZpZ18oLypzZW5kX3RyYW5zcG9ydD0qL251bGxwdHIsIC8qbWVkaWFf
dHJhbnNwb3J0PSovbnVsbHB0ciksCiAgICAgICAgIGF1ZGlvX3Byb2Nlc3NpbmdfKG5ldyBydGM6
OlJlZkNvdW50ZWRPYmplY3Q8TW9ja0F1ZGlvUHJvY2Vzc2luZz4oKSksCiAgICAgICAgIGJpdHJh
dGVfYWxsb2NhdG9yXygmbGltaXRfb2JzZXJ2ZXJfKSwKICAgICAgICAgd29ya2VyX3F1ZXVlXygi
Q29uZmlnSGVscGVyX3dvcmtlcl9xdWV1ZSIpLApAQCAtMTQyLDcgKzE0MSw3IEBAIHN0cnVjdCBD
b25maWdIZWxwZXIgewogICAgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE1vY2tBdWRp
b0RldmljZU1vZHVsZT4oKTsKICAgICBhdWRpb19zdGF0ZV8gPSBBdWRpb1N0YXRlOjpDcmVhdGUo
Y29uZmlnKTsKIAotICAgIFNldHVwRGVmYXVsdENoYW5uZWxQcm94eShhdWRpb19id2VfZW5hYmxl
ZCk7CisgICAgU2V0dXBEZWZhdWx0Q2hhbm5lbFNlbmQoYXVkaW9fYndlX2VuYWJsZWQpOwogICAg
IFNldHVwTW9ja0ZvclNldHVwU2VuZENvZGVjKGV4cGVjdF9zZXRfZW5jb2Rlcl9jYWxsKTsKIAog
ICAgIC8vIFVzZSBJU0FDIGFzIGRlZmF1bHQgY29kZWMgc28gYXMgdG8gcHJldmVudCB1bm5lY2Vz
c2FyeSB8Y2hhbm5lbF9wcm94eV98CkBAIC0xNTAsNyArMTQ5LDYgQEAgc3RydWN0IENvbmZpZ0hl
bHBlciB7CiAgICAgc3RyZWFtX2NvbmZpZ18uc2VuZF9jb2RlY19zcGVjID0KICAgICAgICAgQXVk
aW9TZW5kU3RyZWFtOjpDb25maWc6OlNlbmRDb2RlY1NwZWMoa0lzYWNQYXlsb2FkVHlwZSwga0lz
YWNGb3JtYXQpOwogICAgIHN0cmVhbV9jb25maWdfLnJ0cC5zc3JjID0ga1NzcmM7Ci0gICAgc3Ry
ZWFtX2NvbmZpZ18ucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgPSAyMDA7CiAgICAgc3RyZWFtX2Nv
bmZpZ18ucnRwLmNfbmFtZSA9IGtDTmFtZTsKICAgICBzdHJlYW1fY29uZmlnXy5ydHAuZXh0ZW5z
aW9ucy5wdXNoX2JhY2soCiAgICAgICAgIFJ0cEV4dGVuc2lvbihSdHBFeHRlbnNpb246OmtBdWRp
b0xldmVsVXJpLCBrQXVkaW9MZXZlbElkKSk7CkBAIC0xNjcsOCArMTY1LDcgQEAgc3RydWN0IENv
bmZpZ0hlbHBlciB7CiAgICAgICAgIG5ldyBpbnRlcm5hbDo6QXVkaW9TZW5kU3RyZWFtKAogICAg
ICAgICAgICAgc3RyZWFtX2NvbmZpZ18sIGF1ZGlvX3N0YXRlXywgJndvcmtlcl9xdWV1ZV8sICZy
dHBfdHJhbnNwb3J0XywKICAgICAgICAgICAgICZiaXRyYXRlX2FsbG9jYXRvcl8sICZldmVudF9s
b2dfLCAmcnRjcF9ydHRfc3RhdHNfLCBhYnNsOjpudWxsb3B0LAotICAgICAgICAgICAgJmFjdGl2
ZV9saWZldGltZV8sCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9lOjpDaGFubmVsU2Vu
ZFByb3h5PihjaGFubmVsX3Byb3h5XykpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx2
b2U6OkNoYW5uZWxTZW5kSW50ZXJmYWNlPihjaGFubmVsX3NlbmRfKSkpOwogICB9CiAKICAgQXVk
aW9TZW5kU3RyZWFtOjpDb25maWcmIGNvbmZpZygpIHsgcmV0dXJuIHN0cmVhbV9jb25maWdfOyB9
CkBAIC0xNzYsOSArMTczLDggQEAgc3RydWN0IENvbmZpZ0hlbHBlciB7CiAgICAgcmV0dXJuICpz
dGF0aWNfY2FzdDxNb2NrQXVkaW9FbmNvZGVyRmFjdG9yeSo+KAogICAgICAgICBzdHJlYW1fY29u
ZmlnXy5lbmNvZGVyX2ZhY3RvcnkuZ2V0KCkpOwogICB9Ci0gIE1vY2tDaGFubmVsU2VuZFByb3h5
KiBjaGFubmVsX3Byb3h5KCkgeyByZXR1cm4gY2hhbm5lbF9wcm94eV87IH0KKyAgTW9ja0NoYW5u
ZWxTZW5kKiBjaGFubmVsX3NlbmQoKSB7IHJldHVybiBjaGFubmVsX3NlbmRfOyB9CiAgIFJ0cFRy
YW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFuc3BvcnQoKSB7IHJldHVybiAmcnRw
X3RyYW5zcG9ydF87IH0KLSAgVGltZUludGVydmFsKiBhY3RpdmVfbGlmZXRpbWUoKSB7IHJldHVy
biAmYWN0aXZlX2xpZmV0aW1lXzsgfQogCiAgIHN0YXRpYyB2b2lkIEFkZEJ3ZVRvQ29uZmlnKEF1
ZGlvU2VuZFN0cmVhbTo6Q29uZmlnKiBjb25maWcpIHsKICAgICBjb25maWctPnJ0cC5leHRlbnNp
b25zLnB1c2hfYmFjayhSdHBFeHRlbnNpb24oCkBAIC0xODYsNDcgKzE4Miw0MCBAQCBzdHJ1Y3Qg
Q29uZmlnSGVscGVyIHsKICAgICBjb25maWctPnNlbmRfY29kZWNfc3BlYy0+dHJhbnNwb3J0X2Nj
X2VuYWJsZWQgPSB0cnVlOwogICB9CiAKLSAgdm9pZCBTZXR1cERlZmF1bHRDaGFubmVsUHJveHko
Ym9vbCBhdWRpb19id2VfZW5hYmxlZCkgewotICAgIEVYUEVDVF9UUlVFKGNoYW5uZWxfcHJveHlf
ID09IG51bGxwdHIpOwotICAgIGNoYW5uZWxfcHJveHlfID0gbmV3IHRlc3Rpbmc6OlN0cmljdE1v
Y2s8TW9ja0NoYW5uZWxTZW5kUHJveHk+KCk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJv
eHlfLCBHZXRSdHBSdGNwKCkpLldpbGxSZXBlYXRlZGx5KEludm9rZShbdGhpc10oKSB7CisgIHZv
aWQgU2V0dXBEZWZhdWx0Q2hhbm5lbFNlbmQoYm9vbCBhdWRpb19id2VfZW5hYmxlZCkgeworICAg
IEVYUEVDVF9UUlVFKGNoYW5uZWxfc2VuZF8gPT0gbnVsbHB0cik7CisgICAgY2hhbm5lbF9zZW5k
XyA9IG5ldyB0ZXN0aW5nOjpTdHJpY3RNb2NrPE1vY2tDaGFubmVsU2VuZD4oKTsKKyAgICBFWFBF
Q1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgR2V0UnRwUnRjcCgpKS5XaWxsUmVwZWF0ZWRseShJbnZv
a2UoW3RoaXNdKCkgewogICAgICAgcmV0dXJuICZ0aGlzLT5ydHBfcnRjcF87CiAgICAgfSkpOwot
ICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgU2V0UlRDUFN0YXR1cyh0cnVlKSkuVGlt
ZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXRMb2NhbFNTUkMoa1Nz
cmMpKS5UaW1lcygxKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFNldFJUQ1Bf
Q05BTUUoU3RyRXEoa0NOYW1lKSkpLlRpbWVzKDEpOwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVs
X3Byb3h5XywgU2V0TkFDS1N0YXR1cyh0cnVlLCAxMCkpLlRpbWVzKDEpOwotICAgIEVYUEVDVF9D
QUxMKCpjaGFubmVsX3Byb3h5XywgU2V0RnJhbWVFbmNyeXB0b3IobnVsbHB0cikpLlRpbWVzKDEp
OwotICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywKKyAgICBFWFBFQ1RfQ0FMTCgqY2hh
bm5lbF9zZW5kXywgU2V0TG9jYWxTU1JDKGtTc3JjKSkuVGltZXMoMSk7CisgICAgRVhQRUNUX0NB
TEwoKmNoYW5uZWxfc2VuZF8sIFNldFJUQ1BfQ05BTUUoU3RyRXEoa0NOYW1lKSkpLlRpbWVzKDEp
OworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLCBTZXRGcmFtZUVuY3J5cHRvcihfKSku
VGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfc2VuZF8sIFNldEV4dG1hcEFsbG93
TWl4ZWQoZmFsc2UpKS5UaW1lcygxKTsKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywK
ICAgICAgICAgICAgICAgICBTZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25TdGF0dXModHJ1ZSwg
a0F1ZGlvTGV2ZWxJZCkpCiAgICAgICAgIC5UaW1lcygxKTsKICAgICBFWFBFQ1RfQ0FMTChydHBf
dHJhbnNwb3J0XywgR2V0QmFuZHdpZHRoT2JzZXJ2ZXIoKSkKICAgICAgICAgLldpbGxSZXBlYXRl
ZGx5KFJldHVybigmYmFuZHdpZHRoX29ic2VydmVyXykpOwogICAgIGlmIChhdWRpb19id2VfZW5h
YmxlZCkgewotICAgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLAorICAgICAgRVhQRUNU
X0NBTEwoKmNoYW5uZWxfc2VuZF8sCiAgICAgICAgICAgICAgICAgICBFbmFibGVTZW5kVHJhbnNw
b3J0U2VxdWVuY2VOdW1iZXIoa1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVySWQpKQogICAgICAgICAg
IC5UaW1lcygxKTsKLSAgICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywKKyAgICAgIEVY
UEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLAogICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZW5k
ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCiAgICAgICAgICAgICAgICAgICAgICAgJnJ0cF90
cmFuc3BvcnRfLCBFcSgmYmFuZHdpZHRoX29ic2VydmVyXykpKQogICAgICAgICAgIC5UaW1lcygx
KTsKICAgICB9IGVsc2UgewotICAgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfcHJveHlfLCBSZWdp
c3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZydHBfdHJhbnNwb3J0XywgRXEobnVsbHB0cikpKQorICAgICAg
RVhQRUNUX0NBTEwoKmNoYW5uZWxfc2VuZF8sIFJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlvbkNvbnRy
b2xPYmplY3RzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnRwX3Ry
YW5zcG9ydF8sIEVxKG51bGxwdHIpKSkKICAgICAgICAgICAuVGltZXMoMSk7CiAgICAgfQotICAg
IEVYUEVDVF9DQUxMKCpjaGFubmVsX3Byb3h5XywgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJv
bE9iamVjdHMoKSkKLSAgICAgICAgLlRpbWVzKDEpOwotICAgIHsKLSAgICAgIDo6dGVzdGluZzo6
SW5TZXF1ZW5jZSB1bnJlZ2lzdGVyX29uX2Rlc3RydWN0aW9uOwotICAgICAgRVhQRUNUX0NBTEwo
KmNoYW5uZWxfcHJveHlfLCBSZWdpc3RlclRyYW5zcG9ydChfKSkuVGltZXMoMSk7Ci0gICAgICBF
WFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIFJlZ2lzdGVyVHJhbnNwb3J0KG51bGxwdHIpKS5U
aW1lcygxKTsKLSAgICB9CisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfc2VuZF8sIFJlc2V0U2Vu
ZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCkpLlRpbWVzKDEpOwogICB9CiAKICAgdm9pZCBT
ZXR1cE1vY2tGb3JTZXR1cFNlbmRDb2RlYyhib29sIGV4cGVjdF9zZXRfZW5jb2Rlcl9jYWxsKSB7
CiAgICAgaWYgKGV4cGVjdF9zZXRfZW5jb2Rlcl9jYWxsKSB7Ci0gICAgICBFWFBFQ1RfQ0FMTCgq
Y2hhbm5lbF9wcm94eV8sIFNldEVuY29kZXJGb3JNb2NrKF8sIF8pKQorICAgICAgRVhQRUNUX0NB
TEwoKmNoYW5uZWxfc2VuZF8sIFNldEVuY29kZXJGb3JNb2NrKF8sIF8pKQogICAgICAgICAgIC5X
aWxsT25jZShJbnZva2UoCiAgICAgICAgICAgICAgIFt0aGlzXShpbnQgcGF5bG9hZF90eXBlLCBz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2RlcikgewogICAgICAgICAgICAgICAg
IHRoaXMtPmF1ZGlvX2VuY29kZXJfID0gc3RkOjptb3ZlKCplbmNvZGVyKTsKQEAgLTIzNyw3ICsy
MjYsNyBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKIAogICB2b2lkIFNldHVwTW9ja0Zvck1vZGlm
eUVuY29kZXIoKSB7CiAgICAgLy8gTGV0IE1vZGlmeUVuY29kZXIgdG8gaW52b2tlIG1vY2sgYXVk
aW8gZW5jb2Rlci4KLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIE1vZGlmeUVuY29k
ZXIoXykpCisgICAgRVhQRUNUX0NBTEwoKmNoYW5uZWxfc2VuZF8sIE1vZGlmeUVuY29kZXIoXykp
CiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShJbnZva2UoCiAgICAgICAgICAgICBbdGhpc10ocnRj
OjpGdW5jdGlvblZpZXc8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiopPgogICAg
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllcikgewpAQCAtMjQ3LDEzICsyMzYsMTMgQEAgc3Ry
dWN0IENvbmZpZ0hlbHBlciB7CiAgIH0KIAogICB2b2lkIFNldHVwTW9ja0ZvclNlbmRUZWxlcGhv
bmVFdmVudCgpIHsKLSAgICBFWFBFQ1RfVFJVRShjaGFubmVsX3Byb3h5Xyk7Ci0gICAgRVhQRUNU
X0NBTEwoKmNoYW5uZWxfcHJveHlfLCBTZXRTZW5kVGVsZXBob25lRXZlbnRQYXlsb2FkVHlwZSgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVGVsZXBob25lRXZlbnRQYXls
b2FkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVGVsZXBob25l
RXZlbnRQYXlsb2FkRnJlcXVlbmN5KSkKKyAgICBFWFBFQ1RfVFJVRShjaGFubmVsX3NlbmRfKTsK
KyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgU2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5
bG9hZFR5cGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVGVsZXBob25l
RXZlbnRQYXlsb2FkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtU
ZWxlcGhvbmVFdmVudFBheWxvYWRGcmVxdWVuY3kpKQogICAgICAgICAuV2lsbE9uY2UoUmV0dXJu
KHRydWUpKTsKICAgICBFWFBFQ1RfQ0FMTCgKLSAgICAgICAgKmNoYW5uZWxfcHJveHlfLAorICAg
ICAgICAqY2hhbm5lbF9zZW5kXywKICAgICAgICAgU2VuZFRlbGVwaG9uZUV2ZW50T3V0YmFuZChr
VGVsZXBob25lRXZlbnRDb2RlLCBrVGVsZXBob25lRXZlbnREdXJhdGlvbikpCiAgICAgICAgIC5X
aWxsT25jZShSZXR1cm4odHJ1ZSkpOwogICB9CkBAIC0yNzEsMTMgKzI2MCwxNCBAQCBzdHJ1Y3Qg
Q29uZmlnSGVscGVyIHsKICAgICBibG9jay5mcmFjdGlvbl9sb3N0ID0gMDsKICAgICByZXBvcnRf
YmxvY2tzLnB1c2hfYmFjayhibG9jayk7ICAvLyBEdXBsaWNhdGUgU1NSQywgYmFkIGZyYWN0aW9u
X2xvc3QuCiAKLSAgICBFWFBFQ1RfVFJVRShjaGFubmVsX3Byb3h5Xyk7Ci0gICAgRVhQRUNUX0NB
TEwoKmNoYW5uZWxfcHJveHlfLCBHZXRSVENQU3RhdGlzdGljcygpKQorICAgIEVYUEVDVF9UUlVF
KGNoYW5uZWxfc2VuZF8pOworICAgIEVYUEVDVF9DQUxMKCpjaGFubmVsX3NlbmRfLCBHZXRSVENQ
U3RhdGlzdGljcygpKQogICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGtDYWxsU3RhdHMp
KTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIEdldFJlbW90ZVJUQ1BSZXBvcnRC
bG9ja3MoKSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgR2V0UmVtb3RlUlRDUFJl
cG9ydEJsb2NrcygpKQogICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKHJlcG9ydF9ibG9j
a3MpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9wcm94eV8sIEdldEFOQVN0YXRpc3RpY3Mo
KSkKKyAgICBFWFBFQ1RfQ0FMTCgqY2hhbm5lbF9zZW5kXywgR2V0QU5BU3RhdGlzdGljcygpKQog
ICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEFOQVN0YXRzKCkpKTsKKyAgICBFWFBFQ1Rf
Q0FMTCgqY2hhbm5lbF9zZW5kXywgR2V0Qml0cmF0ZSgpKS5XaWxsUmVwZWF0ZWRseShSZXR1cm4o
MCkpOwogCiAgICAgYXVkaW9fcHJvY2Vzc2luZ19zdGF0c18uZWNob19yZXR1cm5fbG9zcyA9IGtF
Y2hvUmV0dXJuTG9zczsKICAgICBhdWRpb19wcm9jZXNzaW5nX3N0YXRzXy5lY2hvX3JldHVybl9s
b3NzX2VuaGFuY2VtZW50ID0KQEAgLTI5NywxMCArMjg3LDkgQEAgc3RydWN0IENvbmZpZ0hlbHBl
ciB7CiAgcHJpdmF0ZToKICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvU3RhdGU+IGF1ZGlvX3N0
YXRlXzsKICAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgc3RyZWFtX2NvbmZpZ187Ci0gIHRlc3Rp
bmc6OlN0cmljdE1vY2s8TW9ja0NoYW5uZWxTZW5kUHJveHk+KiBjaGFubmVsX3Byb3h5XyA9IG51
bGxwdHI7CisgIHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9ja0NoYW5uZWxTZW5kPiogY2hhbm5lbF9z
ZW5kXyA9IG51bGxwdHI7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNb2NrQXVkaW9Qcm9jZXNzaW5n
PiBhdWRpb19wcm9jZXNzaW5nXzsKICAgQXVkaW9Qcm9jZXNzaW5nU3RhdHMgYXVkaW9fcHJvY2Vz
c2luZ19zdGF0c187Ci0gIFRpbWVJbnRlcnZhbCBhY3RpdmVfbGlmZXRpbWVfOwogICB0ZXN0aW5n
OjpTdHJpY3RNb2NrPE1vY2tSdGNwQmFuZHdpZHRoT2JzZXJ2ZXI+IGJhbmR3aWR0aF9vYnNlcnZl
cl87CiAgIHRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tSdGNFdmVudExvZz4gZXZlbnRfbG9nXzsKICAg
dGVzdGluZzo6TmljZU1vY2s8TW9ja1J0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kPiBydHBfdHJh
bnNwb3J0XzsKQEAgLTMxNiw3ICszMDUsOCBAQCBzdHJ1Y3QgQ29uZmlnSGVscGVyIHsKIH0gIC8v
IG5hbWVzcGFjZQogCiBURVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIENvbmZpZ1RvU3RyaW5nKSB7
Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGNvbmZpZyhudWxscHRyKTsKKyAgQXVkaW9TZW5k
U3RyZWFtOjpDb25maWcgY29uZmlnKC8qc2VuZF90cmFuc3BvcnQ9Ki9udWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsK
ICAgY29uZmlnLnJ0cC5zc3JjID0ga1NzcmM7CiAgIGNvbmZpZy5ydHAuY19uYW1lID0ga0NOYW1l
OwogICBjb25maWcubWluX2JpdHJhdGVfYnBzID0gMTIwMDA7CkBAIC0zMjcsMTIgKzMxNywxNSBA
QCBURVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIENvbmZpZ1RvU3RyaW5nKSB7CiAgIGNvbmZpZy5z
ZW5kX2NvZGVjX3NwZWMtPnRyYW5zcG9ydF9jY19lbmFibGVkID0gZmFsc2U7CiAgIGNvbmZpZy5z
ZW5kX2NvZGVjX3NwZWMtPmNuZ19wYXlsb2FkX3R5cGUgPSA0MjsKICAgY29uZmlnLmVuY29kZXJf
ZmFjdG9yeSA9IE1vY2tBdWRpb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVVbnVzZWRGYWN0b3J5KCk7
CisgIGNvbmZpZy5ydHAuZXh0bWFwX2FsbG93X21peGVkID0gdHJ1ZTsKICAgY29uZmlnLnJ0cC5l
eHRlbnNpb25zLnB1c2hfYmFjaygKICAgICAgIFJ0cEV4dGVuc2lvbihSdHBFeHRlbnNpb246OmtB
dWRpb0xldmVsVXJpLCBrQXVkaW9MZXZlbElkKSk7CisgIGNvbmZpZy5ydGNwX3JlcG9ydF9pbnRl
cnZhbF9tcyA9IDI1MDA7CiAgIEVYUEVDVF9FUSgKLSAgICAgICJ7cnRwOiB7c3NyYzogMTIzNCwg
ZXh0ZW5zaW9uczogW3t1cmk6ICIKLSAgICAgICJ1cm46aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDpz
c3JjLWF1ZGlvLWxldmVsLCBpZDogMn1dLCBuYWNrOiAiCi0gICAgICAie3J0cF9oaXN0b3J5X21z
OiAwfSwgY19uYW1lOiBmb29fbmFtZX0sIHNlbmRfdHJhbnNwb3J0OiBudWxsLCAiCisgICAgICAi
e3J0cDoge3NzcmM6IDEyMzQsIGV4dG1hcC1hbGxvdy1taXhlZDogdHJ1ZSwgZXh0ZW5zaW9uczog
W3t1cmk6ICIKKyAgICAgICJ1cm46aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDpzc3JjLWF1ZGlvLWxl
dmVsLCBpZDogMn1dLCAiCisgICAgICAiY19uYW1lOiBmb29fbmFtZX0sIHJ0Y3BfcmVwb3J0X2lu
dGVydmFsX21zOiAyNTAwLCAiCisgICAgICAic2VuZF90cmFuc3BvcnQ6IG51bGwsIG1lZGlhX3Ry
YW5zcG9ydDogbnVsbCwgIgogICAgICAgIm1pbl9iaXRyYXRlX2JwczogMTIwMDAsIG1heF9iaXRy
YXRlX2JwczogMzQwMDAsICIKICAgICAgICJzZW5kX2NvZGVjX3NwZWM6IHtuYWNrX2VuYWJsZWQ6
IHRydWUsIHRyYW5zcG9ydF9jY19lbmFibGVkOiBmYWxzZSwgIgogICAgICAgImNuZ19wYXlsb2Fk
X3R5cGU6IDQyLCBwYXlsb2FkX3R5cGU6IDEwMywgIgpAQCAtMzU4LDcgKzM1MSw3IEBAIFRFU1Qo
QXVkaW9TZW5kU3RyZWFtVGVzdCwgU2VuZFRlbGVwaG9uZUV2ZW50KSB7CiBURVNUKEF1ZGlvU2Vu
ZFN0cmVhbVRlc3QsIFNldE11dGVkKSB7CiAgIENvbmZpZ0hlbHBlciBoZWxwZXIoZmFsc2UsIHRy
dWUpOwogICBhdXRvIHNlbmRfc3RyZWFtID0gaGVscGVyLkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbSgp
OwotICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfcHJveHkoKSwgU2V0SW5wdXRNdXRlKHRy
dWUpKTsKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3NlbmQoKSwgU2V0SW5wdXRNdXRl
KHRydWUpKTsKICAgc2VuZF9zdHJlYW0tPlNldE11dGVkKHRydWUpOwogfQogCkBAIC00NDgsNyAr
NDQxLDcgQEAgVEVTVChBdWRpb1NlbmRTdHJlYW1UZXN0LCBTZW5kQ29kZWNDYW5BcHBseVZhZCkg
ewogICBoZWxwZXIuY29uZmlnKCkuc2VuZF9jb2RlY19zcGVjLT5jbmdfcGF5bG9hZF90eXBlID0g
MTA1OwogICB1c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
RW5jb2Rlcj4gc3RvbGVuX2VuY29kZXI7Ci0gIEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9w
cm94eSgpLCBTZXRFbmNvZGVyRm9yTW9jayhfLCBfKSkKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5j
aGFubmVsX3NlbmQoKSwgU2V0RW5jb2RlckZvck1vY2soXywgXykpCiAgICAgICAuV2lsbE9uY2Uo
CiAgICAgICAgICAgSW52b2tlKFsmc3RvbGVuX2VuY29kZXJdKGludCBwYXlsb2FkX3R5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Vu
Y29kZXI+KiBlbmNvZGVyKSB7CkBAIC00NjgsMTcgKzQ2MSwzMSBAQCBURVNUKEF1ZGlvU2VuZFN0
cmVhbVRlc3QsIFNlbmRDb2RlY0NhbkFwcGx5VmFkKSB7CiBURVNUKEF1ZGlvU2VuZFN0cmVhbVRl
c3QsIERvZXNOb3RQYXNzSGlnaGVyQml0cmF0ZVRoYW5NYXhCaXRyYXRlKSB7CiAgIENvbmZpZ0hl
bHBlciBoZWxwZXIoZmFsc2UsIHRydWUpOwogICBhdXRvIHNlbmRfc3RyZWFtID0gaGVscGVyLkNy
ZWF0ZUF1ZGlvU2VuZFN0cmVhbSgpOwotICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfcHJv
eHkoKSwKLSAgICAgICAgICAgICAgU2V0Qml0cmF0ZShoZWxwZXIuY29uZmlnKCkubWF4X2JpdHJh
dGVfYnBzLCBfKSk7Ci0gIHNlbmRfc3RyZWFtLT5PbkJpdHJhdGVVcGRhdGVkKGhlbHBlci5jb25m
aWcoKS5tYXhfYml0cmF0ZV9icHMgKyA1MDAwLCAwLjAsIDUwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2MDAwKTsKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3NlbmQo
KSwKKyAgICAgICAgICAgICAgT25CaXRyYXRlQWxsb2NhdGlvbigKKyAgICAgICAgICAgICAgICAg
IEZpZWxkKCZCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZTo6dGFyZ2V0X2JpdHJhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICBFcShEYXRhUmF0ZTo6YnBzKGhlbHBlci5jb25maWcoKS5tYXhfYml0
cmF0ZV9icHMpKSkpKTsKKyAgQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlOworICB1cGRh
dGUudGFyZ2V0X2JpdHJhdGUgPSBEYXRhUmF0ZTo6YnBzKGhlbHBlci5jb25maWcoKS5tYXhfYml0
cmF0ZV9icHMgKyA1MDAwKTsKKyAgdXBkYXRlLnBhY2tldF9sb3NzX3JhdGlvID0gMDsKKyAgdXBk
YXRlLnJvdW5kX3RyaXBfdGltZSA9IFRpbWVEZWx0YTo6bXMoNTApOworICB1cGRhdGUuYndlX3Bl
cmlvZCA9IFRpbWVEZWx0YTo6bXMoNjAwMCk7CisgIHNlbmRfc3RyZWFtLT5PbkJpdHJhdGVVcGRh
dGVkKHVwZGF0ZSk7CiB9CiAKIFRFU1QoQXVkaW9TZW5kU3RyZWFtVGVzdCwgUHJvYmluZ0ludGVy
dmFsT25CaXRyYXRlVXBkYXRlZCkgewogICBDb25maWdIZWxwZXIgaGVscGVyKGZhbHNlLCB0cnVl
KTsKICAgYXV0byBzZW5kX3N0cmVhbSA9IGhlbHBlci5DcmVhdGVBdWRpb1NlbmRTdHJlYW0oKTsK
LSAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3Byb3h5KCksIFNldEJpdHJhdGUoXywgNTAw
MCkpOwotICBzZW5kX3N0cmVhbS0+T25CaXRyYXRlVXBkYXRlZCg1MDAwMCwgMC4wLCA1MCwgNTAw
MCk7CisKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3NlbmQoKSwKKyAgICAgICAgICAg
ICAgT25CaXRyYXRlQWxsb2NhdGlvbihGaWVsZCgmQml0cmF0ZUFsbG9jYXRpb25VcGRhdGU6OmJ3
ZV9wZXJpb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXEoVGlt
ZURlbHRhOjptcyg1MDAwKSkpKSk7CisgIEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZTsK
KyAgdXBkYXRlLnRhcmdldF9iaXRyYXRlID0gRGF0YVJhdGU6OmJwcyhoZWxwZXIuY29uZmlnKCku
bWF4X2JpdHJhdGVfYnBzICsgNTAwMCk7CisgIHVwZGF0ZS5wYWNrZXRfbG9zc19yYXRpbyA9IDA7
CisgIHVwZGF0ZS5yb3VuZF90cmlwX3RpbWUgPSBUaW1lRGVsdGE6Om1zKDUwKTsKKyAgdXBkYXRl
LmJ3ZV9wZXJpb2QgPSBUaW1lRGVsdGE6Om1zKDUwMDApOworICBzZW5kX3N0cmVhbS0+T25CaXRy
YXRlVXBkYXRlZCh1cGRhdGUpOwogfQogCiAvLyBUZXN0IHRoYXQgQXVkaW9TZW5kU3RyZWFtIGRv
ZXNuJ3QgcmVjcmVhdGUgdGhlIGVuY29kZXIgdW5uZWNlc3NhcmlseS4KQEAgLTQ4OSw3ICs0OTYs
NyBAQCBURVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIERvbnRSZWNyZWF0ZUVuY29kZXIpIHsKICAg
Ly8gdG8gYmUgY29ycmVjdCwgaXQncyBpbnN0ZWFkIHNldC11cCBtYW51YWxseSBoZXJlLiBPdGhl
cndpc2UgYSBzaW1wbGUgY2hhbmdlCiAgIC8vIHRvIENvbmZpZ0hlbHBlciAoc2F5IHRvIFdpbGxS
ZXBlYXRlZGx5KSB3b3VsZCBzaWxlbnRseSBtYWtlIHRoaXMgdGVzdAogICAvLyB1c2VsZXNzLgot
ICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfcHJveHkoKSwgU2V0RW5jb2RlckZvck1vY2so
XywgXykpCisgIEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9zZW5kKCksIFNldEVuY29kZXJG
b3JNb2NrKF8sIF8pKQogICAgICAgLldpbGxPbmNlKFJldHVybih0cnVlKSk7CiAKICAgaGVscGVy
LmNvbmZpZygpLnNlbmRfY29kZWNfc3BlYyA9CkBAIC01MDQsNDYgKzUxMSw0NCBAQCBURVNUKEF1
ZGlvU2VuZFN0cmVhbVRlc3QsIFJlY29uZmlndXJlVHJhbnNwb3J0Q2NSZXNldHNGaXJzdCkgewog
ICBhdXRvIHNlbmRfc3RyZWFtID0gaGVscGVyLkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbSgpOwogICBh
dXRvIG5ld19jb25maWcgPSBoZWxwZXIuY29uZmlnKCk7CiAgIENvbmZpZ0hlbHBlcjo6QWRkQndl
VG9Db25maWcoJm5ld19jb25maWcpOwotICBFWFBFQ1RfQ0FMTCgqaGVscGVyLmNoYW5uZWxfcHJv
eHkoKSwKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3NlbmQoKSwKICAgICAgICAgICAg
ICAgRW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKGtUcmFuc3BvcnRTZXF1ZW5jZU51
bWJlcklkKSkKICAgICAgIC5UaW1lcygxKTsKICAgewogICAgIDo6dGVzdGluZzo6SW5TZXF1ZW5j
ZSBzZXE7Ci0gICAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3Byb3h5KCksIFJlc2V0U2Vu
ZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCkpCisgICAgRVhQRUNUX0NBTEwoKmhlbHBlci5j
aGFubmVsX3NlbmQoKSwgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSkKICAg
ICAgICAgLlRpbWVzKDEpOwotICAgIEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9wcm94eSgp
LCBSZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBlci50cmFuc3BvcnQoKSwgTmUobnVs
bHB0cikpKQorICAgIEVYUEVDVF9DQUxMKCpoZWxwZXIuY2hhbm5lbF9zZW5kKCksIFJlZ2lzdGVy
U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwZXIudHJhbnNwb3J0KCksIE5lKG51bGxwdHIpKSkKICAg
ICAgICAgLlRpbWVzKDEpOwogICB9CiAgIHNlbmRfc3RyZWFtLT5SZWNvbmZpZ3VyZShuZXdfY29u
ZmlnKTsKIH0KIAotLy8gQ2hlY2tzIHRoYXQgQXVkaW9TZW5kU3RyZWFtIGxvZ3MgdGhlIHRpbWVz
IGF0IHdoaWNoIFJUUCBwYWNrZXRzIGFyZSBzZW50Ci0vLyB0aHJvdWdoIGl0cyBpbnRlcmZhY2Uu
Ci1URVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIFVwZGF0ZUxpZmV0aW1lKSB7CisvLyBWYWxpZGF0
ZXMgdGhhdCByZWNvbmZpZ3VyaW5nIHRoZSBBdWRpb1NlbmRTdHJlYW0gd2l0aCBhIEZyYW1lIGVu
Y3J5cHRvcgorLy8gY29ycmVjdGx5IHJlY29uZmlndXJlcyBvbiB0aGUgb2JqZWN0IHdpdGhvdXQg
Y3Jhc2hpbmcuCitURVNUKEF1ZGlvU2VuZFN0cmVhbVRlc3QsIFJlY29uZmlndXJlV2l0aEZyYW1l
RW5jcnlwdG9yKSB7CiAgIENvbmZpZ0hlbHBlciBoZWxwZXIoZmFsc2UsIHRydWUpOworICBhdXRv
IHNlbmRfc3RyZWFtID0gaGVscGVyLkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbSgpOworICBhdXRvIG5l
d19jb25maWcgPSBoZWxwZXIuY29uZmlnKCk7CiAKLSAgTW9ja1RyYW5zcG9ydCBtb2NrX3RyYW5z
cG9ydDsKLSAgaGVscGVyLmNvbmZpZygpLnNlbmRfdHJhbnNwb3J0ID0gJm1vY2tfdHJhbnNwb3J0
OworICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IG1vY2tfZnJh
bWVfZW5jcnlwdG9yXzAoCisgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE1vY2tGcmFt
ZUVuY3J5cHRvcj4oKSk7CisgIG5ld19jb25maWcuZnJhbWVfZW5jcnlwdG9yID0gbW9ja19mcmFt
ZV9lbmNyeXB0b3JfMDsKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFubmVsX3NlbmQoKSwgU2V0
RnJhbWVFbmNyeXB0b3IoTmUobnVsbHB0cikpKS5UaW1lcygxKTsKKyAgc2VuZF9zdHJlYW0tPlJl
Y29uZmlndXJlKG5ld19jb25maWcpOwogCi0gIFRyYW5zcG9ydCogcmVnaXN0ZXJlZF90cmFuc3Bv
cnQ7Ci0gIE9OX0NBTEwoKmhlbHBlci5jaGFubmVsX3Byb3h5KCksIFJlZ2lzdGVyVHJhbnNwb3J0
KF8pKQotICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKFsmcmVnaXN0ZXJlZF90cmFuc3BvcnRd
KFRyYW5zcG9ydCogdHJhbnNwb3J0KSB7Ci0gICAgICAgIHJlZ2lzdGVyZWRfdHJhbnNwb3J0ID0g
dHJhbnNwb3J0OwotICAgICAgfSkpOworICAvLyBOb3QgdXBkYXRpbmcgdGhlIGZyYW1lIGVuY3J5
cHRvciBzaG91bGRuJ3QgZm9yY2UgaXQgdG8gcmVjb25maWd1cmUuCisgIEVYUEVDVF9DQUxMKCpo
ZWxwZXIuY2hhbm5lbF9zZW5kKCksIFNldEZyYW1lRW5jcnlwdG9yKF8pKS5UaW1lcygwKTsKKyAg
c2VuZF9zdHJlYW0tPlJlY29uZmlndXJlKG5ld19jb25maWcpOwogCi0gIHJ0Yzo6U2NvcGVkRmFr
ZUNsb2NrIGZha2VfY2xvY2s7Ci0gIGNvbnN0ZXhwciBpbnQ2NF90IGtUaW1lQmV0d2VlblNlbmRS
dHBDYWxsc01zID0gMTAwOwotICB7Ci0gICAgYXV0byBzZW5kX3N0cmVhbSA9IGhlbHBlci5DcmVh
dGVBdWRpb1NlbmRTdHJlYW0oKTsKLSAgICBFWFBFQ1RfQ0FMTChtb2NrX3RyYW5zcG9ydCwgU2Vu
ZFJ0cChfLCBfLCBfKSkuVGltZXMoMik7Ci0gICAgY29uc3QgUGFja2V0T3B0aW9ucyBvcHRpb25z
OwotICAgIHJlZ2lzdGVyZWRfdHJhbnNwb3J0LT5TZW5kUnRwKG51bGxwdHIsIDAsIG9wdGlvbnMp
OwotICAgIGZha2VfY2xvY2suQWR2YW5jZVRpbWUoVGltZURlbHRhOjptcyhrVGltZUJldHdlZW5T
ZW5kUnRwQ2FsbHNNcykpOwotICAgIHJlZ2lzdGVyZWRfdHJhbnNwb3J0LT5TZW5kUnRwKG51bGxw
dHIsIDAsIG9wdGlvbnMpOwotICB9Ci0gIEVYUEVDVF9UUlVFKCFoZWxwZXIuYWN0aXZlX2xpZmV0
aW1lKCktPkVtcHR5KCkpOwotICBFWFBFQ1RfRVEoaGVscGVyLmFjdGl2ZV9saWZldGltZSgpLT5M
ZW5ndGgoKSwga1RpbWVCZXR3ZWVuU2VuZFJ0cENhbGxzTXMpOworICAvLyBVcGRhdGluZyBmcmFt
ZSBlbmNyeXB0b3IgdG8gYSBuZXcgb2JqZWN0IHNob3VsZCBmb3JjZSBhIGNhbGwgdG8gdGhlIHBy
b3h5LgorICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IG1vY2tf
ZnJhbWVfZW5jcnlwdG9yXzEoCisgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PE1vY2tG
cmFtZUVuY3J5cHRvcj4oKSk7CisgIG5ld19jb25maWcuZnJhbWVfZW5jcnlwdG9yID0gbW9ja19m
cmFtZV9lbmNyeXB0b3JfMTsKKyAgbmV3X2NvbmZpZy5jcnlwdG9fb3B0aW9ucy5zZnJhbWUucmVx
dWlyZV9mcmFtZV9lbmNyeXB0aW9uID0gdHJ1ZTsKKyAgRVhQRUNUX0NBTEwoKmhlbHBlci5jaGFu
bmVsX3NlbmQoKSwgU2V0RnJhbWVFbmNyeXB0b3IoTmUobnVsbHB0cikpKS5UaW1lcygxKTsKKyAg
c2VuZF9zdHJlYW0tPlJlY29uZmlndXJlKG5ld19jb25maWcpOwogfQogfSAgLy8gbmFtZXNwYWNl
IHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2F1ZGlvX3RyYW5zcG9ydF9pbXBsLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVkaW9f
dHJhbnNwb3J0X2ltcGwuY2MKaW5kZXggOTRlZjZjYjY4YTc3NWQ1N2Q3YjM4ZjNkYjM5OTdhYzU5
OTAyY2EyMC4uNTM5NDU2ZTJmNDlhZTZmNWNjZTBhMmVlZjdhNTJkMzc5YmE3MjhkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vYXVk
aW9fdHJhbnNwb3J0X2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXVkaW8vYXVkaW9fdHJhbnNwb3J0X2ltcGwuY2MKQEAgLTE3LDcgKzE3LDcg
QEAKICNpbmNsdWRlICJhdWRpby9yZW1peF9yZXNhbXBsZS5oIgogI2luY2x1ZGUgImF1ZGlvL3V0
aWxpdHkvYXVkaW9fZnJhbWVfb3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgImNhbGwvYXVkaW9fc2Vu
ZF9zdHJlYW0uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3JlY2Vp
dmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9j
aGFubmVsX3JlY2VpdmUuY2MKaW5kZXggZTlmNzUwMzQ3NGY1ZjU0M2ZjZTRiZDFkNDdjZDU0MDY0
YWFjMTllNi4uNDgzMTQ3ZmE5ZWVkMDBlNGU2MGZiMWI0YmRiMDUzMTU2MGY5MTFkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hh
bm5lbF9yZWNlaXZlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5jYwpAQCAtMTgsMTQgKzE4LDIwIEBACiAjaW5j
bHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVk
ZSAiYXVkaW8vYXVkaW9fbGV2ZWwuaCIKICNpbmNsdWRlICJhdWRpby9jaGFubmVsX3NlbmQuaCIK
ICNpbmNsdWRlICJhdWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19wbGF5b3V0
LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVk
ZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3BhY2luZy9wYWNrZXRfcm91dGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL3JlY2VpdmVfc3RhdGlzdGljcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9ydGNwLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvY29udHJpYnV0aW5nX3NvdXJjZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmgiCiAjaW5jbHVkZSAibW9kdWxlcy91dGlsaXR5
L2luY2x1ZGUvcHJvY2Vzc190aHJlYWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
QEAgLTMzLDYgKzM5LDggQEAKICNpbmNsdWRlICJydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9yYWNlX2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hl
Y2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKQEAgLTUwLDEzICs1OCwyMjggQEAgY29uc3Rl
eHByIGludDY0X3Qga01pblJldHJhbnNtaXNzaW9uV2luZG93TXMgPSAzMDsKIGNvbnN0ZXhwciBp
bnQga1ZvaWNlRW5naW5lTWluTWluUGxheW91dERlbGF5TXMgPSAwOwogY29uc3RleHByIGludCBr
Vm9pY2VFbmdpbmVNYXhNaW5QbGF5b3V0RGVsYXlNcyA9IDEwMDAwOwogCi19ICAvLyBuYW1lc3Bh
Y2UKK3dlYnJ0Yzo6RnJhbWVUeXBlIFdlYnJ0Y0ZyYW1lVHlwZUZvck1lZGlhVHJhbnNwb3J0RnJh
bWVUeXBlKAorICAgIE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWU6OkZyYW1lVHlwZSBm
cmFtZV90eXBlKSB7CisgIHN3aXRjaCAoZnJhbWVfdHlwZSkgeworICAgIGNhc2UgTWVkaWFUcmFu
c3BvcnRFbmNvZGVkQXVkaW9GcmFtZTo6RnJhbWVUeXBlOjprU3BlZWNoOgorICAgICAgcmV0dXJu
IGtBdWRpb0ZyYW1lU3BlZWNoOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1lZGlhVHJhbnNw
b3J0RW5jb2RlZEF1ZGlvRnJhbWU6OkZyYW1lVHlwZTo6CisgICAgICAgIGtEaXNjb3VudGludW91
c1RyYW5zbWlzc2lvbjoKKyAgICAgIHJldHVybiBrQXVkaW9GcmFtZUNOOworICAgICAgYnJlYWs7
CisgIH0KK30KKworV2ViUnRjUlRQSGVhZGVyIENyZWF0ZVdlYnJ0Y1JUUEhlYWRlckZvck1lZGlh
VHJhbnNwb3J0RnJhbWUoCisgICAgY29uc3QgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFt
ZSYgZnJhbWUsCisgICAgdWludDY0X3QgY2hhbm5lbF9pZCkgeworICB3ZWJydGM6OldlYlJ0Y1JU
UEhlYWRlciB3ZWJydGNfaGVhZGVyID0ge307CisgIHdlYnJ0Y19oZWFkZXIuaGVhZGVyLnBheWxv
YWRUeXBlID0gZnJhbWUucGF5bG9hZF90eXBlKCk7CisgIHdlYnJ0Y19oZWFkZXIuaGVhZGVyLnBh
eWxvYWRfdHlwZV9mcmVxdWVuY3kgPSBmcmFtZS5zYW1wbGluZ19yYXRlX2h6KCk7CisgIHdlYnJ0
Y19oZWFkZXIuaGVhZGVyLnRpbWVzdGFtcCA9IGZyYW1lLnN0YXJ0aW5nX3NhbXBsZV9pbmRleCgp
OworICB3ZWJydGNfaGVhZGVyLmhlYWRlci5zZXF1ZW5jZU51bWJlciA9IGZyYW1lLnNlcXVlbmNl
X251bWJlcigpOworCisgIHdlYnJ0Y19oZWFkZXIuZnJhbWVUeXBlID0KKyAgICAgIFdlYnJ0Y0Zy
YW1lVHlwZUZvck1lZGlhVHJhbnNwb3J0RnJhbWVUeXBlKGZyYW1lLmZyYW1lX3R5cGUoKSk7CisK
KyAgd2VicnRjX2hlYWRlci5oZWFkZXIuc3NyYyA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihjaGFu
bmVsX2lkKTsKKworICAvLyBUaGUgcmVzdCBhcmUgaW5pdGlhbGl6ZWQgYnkgdGhlIFJUUEhlYWRl
ciBjb25zdHJ1Y3Rvci4KKyAgcmV0dXJuIHdlYnJ0Y19oZWFkZXI7Cit9CisKK2NsYXNzIENoYW5u
ZWxSZWNlaXZlIDogcHVibGljIENoYW5uZWxSZWNlaXZlSW50ZXJmYWNlLAorICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgTWVkaWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2UgeworIHB1
YmxpYzoKKyAgLy8gVXNlZCBmb3IgcmVjZWl2ZSBzdHJlYW1zLgorICBDaGFubmVsUmVjZWl2ZShQ
cm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJlYWQsCisgICAgICAgICAgICAgICAgIEF1
ZGlvRGV2aWNlTW9kdWxlKiBhdWRpb19kZXZpY2VfbW9kdWxlLAorICAgICAgICAgICAgICAgICBN
ZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAg
ICBUcmFuc3BvcnQqIHJ0Y3Bfc2VuZF90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgIFJ0Y0V2
ZW50TG9nKiBydGNfZXZlbnRfbG9nLAorICAgICAgICAgICAgICAgICB1aW50MzJfdCByZW1vdGVf
c3NyYywKKyAgICAgICAgICAgICAgICAgc2l6ZV90IGppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMs
CisgICAgICAgICAgICAgICAgIGJvb2wgaml0dGVyX2J1ZmZlcl9mYXN0X3BsYXlvdXQsCisgICAg
ICAgICAgICAgICAgIGludCBqaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcywKKyAgICAgICAgICAg
ICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGRlY29kZXJfZmFj
dG9yeSwKKyAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8QXVkaW9Db2RlY1BhaXJJZD4g
Y29kZWNfcGFpcl9pZCwKKyAgICAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1l
RGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IsCisgICAgICAgICAgICAgICAgIGNv
bnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpOworICB+Q2hhbm5lbFJl
Y2VpdmUoKSBvdmVycmlkZTsKKworICB2b2lkIFNldFNpbmsoQXVkaW9TaW5rSW50ZXJmYWNlKiBz
aW5rKSBvdmVycmlkZTsKKworICB2b2lkIFNldFJlY2VpdmVDb2RlY3MoY29uc3Qgc3RkOjptYXA8
aW50LCBTZHBBdWRpb0Zvcm1hdD4mIGNvZGVjcykgb3ZlcnJpZGU7CisKKyAgLy8gQVBJIG1ldGhv
ZHMKKworICB2b2lkIFN0YXJ0UGxheW91dCgpIG92ZXJyaWRlOworICB2b2lkIFN0b3BQbGF5b3V0
KCkgb3ZlcnJpZGU7CisKKyAgLy8gQ29kZWNzCisgIGJvb2wgR2V0UmVjQ29kZWMoQ29kZWNJbnN0
KiBjb2RlYykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgYm9vbCBSZWNlaXZlZFJUQ1BQYWNrZXQoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgb3ZlcnJpZGU7CisKKyAgLy8gUnRwUGFj
a2V0U2lua0ludGVyZmFjZS4KKyAgdm9pZCBPblJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNl
aXZlZCYgcGFja2V0KSBvdmVycmlkZTsKKworICAvLyBNdXRpbmcsIFZvbHVtZSBhbmQgTGV2ZWwu
CisgIHZvaWQgU2V0Q2hhbm5lbE91dHB1dFZvbHVtZVNjYWxpbmcoZmxvYXQgc2NhbGluZykgb3Zl
cnJpZGU7CisgIGludCBHZXRTcGVlY2hPdXRwdXRMZXZlbEZ1bGxSYW5nZSgpIGNvbnN0IG92ZXJy
aWRlOworICAvLyBTZWUgZGVzY3JpcHRpb24gb2YgInRvdGFsQXVkaW9FbmVyZ3kiIGluIHRoZSBX
ZWJSVEMgc3RhdHMgc3BlYzoKKyAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0
cy8jZG9tLXJ0Y21lZGlhc3RyZWFtdHJhY2tzdGF0cy10b3RhbGF1ZGlvZW5lcmd5CisgIGRvdWJs
ZSBHZXRUb3RhbE91dHB1dEVuZXJneSgpIGNvbnN0IG92ZXJyaWRlOworICBkb3VibGUgR2V0VG90
YWxPdXRwdXREdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIFN0YXRzLgorICBOZXR3
b3JrU3RhdGlzdGljcyBHZXROZXR3b3JrU3RhdGlzdGljcygpIGNvbnN0IG92ZXJyaWRlOworICBB
dWRpb0RlY29kaW5nQ2FsbFN0YXRzIEdldERlY29kaW5nQ2FsbFN0YXRpc3RpY3MoKSBjb25zdCBv
dmVycmlkZTsKKworICAvLyBBdWRpbytWaWRlbyBTeW5jLgorICB1aW50MzJfdCBHZXREZWxheUVz
dGltYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgIHZvaWQgU2V0TWluaW11bVBsYXlvdXREZWxheShp
bnQgZGVsYXlNcykgb3ZlcnJpZGU7CisgIHVpbnQzMl90IEdldFBsYXlvdXRUaW1lc3RhbXAoKSBj
b25zdCBvdmVycmlkZTsKKworICAvLyBQcm9kdWNlcyB0aGUgdHJhbnNwb3J0LXJlbGF0ZWQgdGlt
ZXN0YW1wczsgY3VycmVudF9kZWxheV9tcyBpcyBsZWZ0IHVuc2V0LgorICBhYnNsOjpvcHRpb25h
bDxTeW5jYWJsZTo6SW5mbz4gR2V0U3luY0luZm8oKSBjb25zdCBvdmVycmlkZTsKKworICAvLyBS
VFArUlRDUAorICB2b2lkIFNldExvY2FsU1NSQyh1bnNpZ25lZCBpbnQgc3NyYykgb3ZlcnJpZGU7
CisKKyAgdm9pZCBSZWdpc3RlclJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAorICAg
ICAgUGFja2V0Um91dGVyKiBwYWNrZXRfcm91dGVyKSBvdmVycmlkZTsKKyAgdm9pZCBSZXNldFJl
Y2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCkgb3ZlcnJpZGU7CisKKyAgQ2FsbFJlY2Vp
dmVTdGF0aXN0aWNzIEdldFJUQ1BTdGF0aXN0aWNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIHZvaWQg
U2V0TkFDS1N0YXR1cyhib29sIGVuYWJsZSwgaW50IG1heE51bWJlck9mUGFja2V0cykgb3ZlcnJp
ZGU7CisKKyAgQXVkaW9NaXhlcjo6U291cmNlOjpBdWRpb0ZyYW1lSW5mbyBHZXRBdWRpb0ZyYW1l
V2l0aEluZm8oCisgICAgICBpbnQgc2FtcGxlX3JhdGVfaHosCisgICAgICBBdWRpb0ZyYW1lKiBh
dWRpb19mcmFtZSkgb3ZlcnJpZGU7CisKKyAgaW50IFByZWZlcnJlZFNhbXBsZVJhdGUoKSBjb25z
dCBvdmVycmlkZTsKKworICAvLyBBc3NvY2lhdGUgdG8gYSBzZW5kIGNoYW5uZWwuCisgIC8vIFVz
ZWQgZm9yIG9idGFpbmluZyBSVFQgZm9yIGEgcmVjZWl2ZS1vbmx5IGNoYW5uZWwuCisgIHZvaWQg
U2V0QXNzb2NpYXRlZFNlbmRDaGFubmVsKGNvbnN0IENoYW5uZWxTZW5kSW50ZXJmYWNlKiBjaGFu
bmVsKSBvdmVycmlkZTsKKworICBzdGQ6OnZlY3RvcjxSdHBTb3VyY2U+IEdldFNvdXJjZXMoKSBj
b25zdCBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIGJvb2wgUmVjZWl2ZVBhY2tldChjb25zdCB1
aW50OF90KiBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFja2V0X2xlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyKTsKKyAgaW50
IFJlc2VuZFBhY2tldHMoY29uc3QgdWludDE2X3QqIHNlcXVlbmNlX251bWJlcnMsIGludCBsZW5n
dGgpOworICB2b2lkIFVwZGF0ZVBsYXlvdXRUaW1lc3RhbXAoYm9vbCBydGNwKTsKKworICBpbnQg
R2V0UnRwVGltZXN0YW1wUmF0ZUh6KCkgY29uc3Q7CisgIGludDY0X3QgR2V0UlRUKCkgY29uc3Q7
CisKKyAgLy8gTWVkaWFUcmFuc3BvcnRBdWRpb1NpbmtJbnRlcmZhY2Ugb3ZlcnJpZGU7CisgIHZv
aWQgT25EYXRhKHVpbnQ2NF90IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAgIE1lZGlhVHJhbnNw
b3J0RW5jb2RlZEF1ZGlvRnJhbWUgZnJhbWUpIG92ZXJyaWRlOworCisgIGludDMyX3QgT25SZWNl
aXZlZFBheWxvYWREYXRhKGNvbnN0IHVpbnQ4X3QqIHBheWxvYWREYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZFNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciogcnRwSGVhZGVyKTsKKworICBi
b29sIFBsYXlpbmcoKSBjb25zdCB7CisgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmcGxheWluZ19s
b2NrXyk7CisgICAgcmV0dXJuIHBsYXlpbmdfOworICB9CisKKyAgLy8gVGhyZWFkIGNoZWNrZXJz
IGRvY3VtZW50IGFuZCBsb2NrIHVzYWdlIG9mIHNvbWUgbWV0aG9kcyB0byBzcGVjaWZpYyB0aHJl
YWRzCisgIC8vIHdlIGtub3cgYWJvdXQuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgc3BsaXQg
dXAgdm9lOjpDaGFubmVsUmVjZWl2ZSBpbnRvCisgIC8vIHBhcnRzIHdpdGggc2luZ2xlLXRocmVh
ZGVkIHNlbWFudGljcywgYW5kIHRoZXJlYnkgcmVkdWNlIHRoZSBuZWVkIGZvcgorICAvLyBsb2Nr
cy4KKyAgcnRjOjpUaHJlYWRDaGVja2VyIHdvcmtlcl90aHJlYWRfY2hlY2tlcl87CisgIHJ0Yzo6
VGhyZWFkQ2hlY2tlciBtb2R1bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl87CisgIC8vIE1ldGhv
ZHMgYWNjZXNzZWQgZnJvbSBhdWRpbyBhbmQgdmlkZW8gdGhyZWFkcyBhcmUgY2hlY2tlZCBmb3Ig
c2VxdWVudGlhbC0KKyAgLy8gb25seSBhY2Nlc3MuIFdlIGRvbid0IG5lY2Vzc2FyaWx5IG93biBh
bmQgY29udHJvbCB0aGVzZSB0aHJlYWRzLCBzbyB0aHJlYWQKKyAgLy8gY2hlY2tlcnMgY2Fubm90
IGJlIHVzZWQuIEUuZy4gQ2hyb21pdW0gbWF5IHRyYW5zZmVyICJvd25lcnNoaXAiIGZyb20gb25l
CisgIC8vIGF1ZGlvIHRocmVhZCB0byBhbm90aGVyLCBidXQgYWNjZXNzIGlzIHN0aWxsIHNlcXVl
bnRpYWwuCisgIHJ0Yzo6UmFjZUNoZWNrZXIgYXVkaW9fdGhyZWFkX3JhY2VfY2hlY2tlcl87Cisg
IHJ0Yzo6UmFjZUNoZWNrZXIgdmlkZW9fY2FwdHVyZV90aHJlYWRfcmFjZV9jaGVja2VyXzsKKyAg
cnRjOjpDcml0aWNhbFNlY3Rpb24gX2NhbGxiYWNrQ3JpdFNlY3Q7CisgIHJ0Yzo6Q3JpdGljYWxT
ZWN0aW9uIHZvbHVtZV9zZXR0aW5nc19jcml0c2VjdF87CisKKyAgcnRjOjpDcml0aWNhbFNlY3Rp
b24gcGxheWluZ19sb2NrXzsKKyAgYm9vbCBwbGF5aW5nXyBSVENfR1VBUkRFRF9CWSgmcGxheWlu
Z19sb2NrXykgPSBmYWxzZTsKKworICBSdGNFdmVudExvZyogY29uc3QgZXZlbnRfbG9nXzsKKwor
ICAvLyBJbmRleGVkIGJ5IHBheWxvYWQgdHlwZS4KKyAgc3RkOjptYXA8dWludDhfdCwgaW50PiBw
YXlsb2FkX3R5cGVfZnJlcXVlbmNpZXNfOworCisgIHN0ZDo6dW5pcXVlX3B0cjxSZWNlaXZlU3Rh
dGlzdGljcz4gcnRwX3JlY2VpdmVfc3RhdGlzdGljc187CisgIHN0ZDo6dW5pcXVlX3B0cjxSdHBS
dGNwPiBfcnRwUnRjcE1vZHVsZTsKKyAgY29uc3QgdWludDMyX3QgcmVtb3RlX3NzcmNfOworCisg
IC8vIEluZm8gZm9yIEdldFNvdXJjZXMgYW5kIEdldFN5bmNJbmZvIGlzIHVwZGF0ZWQgb24gbmV0
d29yayBvciB3b3JrZXIgdGhyZWFkLAorICAvLyBxdWVyaWVkIG9uIHRoZSB3b3JrZXIgdGhyZWFk
LgorICBydGM6OkNyaXRpY2FsU2VjdGlvbiBydHBfc291cmNlc19sb2NrXzsKKyAgQ29udHJpYnV0
aW5nU291cmNlcyBjb250cmlidXRpbmdfc291cmNlc18gUlRDX0dVQVJERURfQlkoJnJ0cF9zb3Vy
Y2VzX2xvY2tfKTsKKyAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGxhc3RfcmVjZWl2ZWRfcnRw
X3RpbWVzdGFtcF8KKyAgICAgIFJUQ19HVUFSREVEX0JZKCZydHBfc291cmNlc19sb2NrXyk7Cisg
IGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGxhc3RfcmVjZWl2ZWRfcnRwX3N5c3RlbV90aW1lX21z
XworICAgICAgUlRDX0dVQVJERURfQlkoJnJ0cF9zb3VyY2VzX2xvY2tfKTsKKyAgYWJzbDo6b3B0
aW9uYWw8dWludDhfdD4gbGFzdF9yZWNlaXZlZF9ydHBfYXVkaW9fbGV2ZWxfCisgICAgICBSVENf
R1VBUkRFRF9CWSgmcnRwX3NvdXJjZXNfbG9ja18pOworCisgIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b0NvZGluZ01vZHVsZT4gYXVkaW9fY29kaW5nXzsKKyAgQXVkaW9TaW5rSW50ZXJmYWNlKiBhdWRp
b19zaW5rXyA9IG51bGxwdHI7CisgIEF1ZGlvTGV2ZWwgX291dHB1dEF1ZGlvTGV2ZWw7CisKKyAg
UmVtb3RlTnRwVGltZUVzdGltYXRvciBudHBfZXN0aW1hdG9yXyBSVENfR1VBUkRFRF9CWSh0c19z
dGF0c19sb2NrXyk7CisKKyAgLy8gVGltZXN0YW1wIG9mIHRoZSBhdWRpbyBwdWxsZWQgZnJvbSBO
ZXRFcS4KKyAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGppdHRlcl9idWZmZXJfcGxheW91dF90
aW1lc3RhbXBfOworCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHZpZGVvX3N5bmNfbG9ja187Cisg
IHVpbnQzMl90IHBsYXlvdXRfdGltZXN0YW1wX3J0cF8gUlRDX0dVQVJERURfQlkodmlkZW9fc3lu
Y19sb2NrXyk7CisgIHVpbnQzMl90IHBsYXlvdXRfZGVsYXlfbXNfIFJUQ19HVUFSREVEX0JZKHZp
ZGVvX3N5bmNfbG9ja18pOworCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHRzX3N0YXRzX2xvY2tf
OworCisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRpbWVzdGFtcFdyYXBBcm91bmRIYW5kbGVyPiBy
dHBfdHNfd3JhcGFyb3VuZF9oYW5kbGVyXzsKKyAgLy8gVGhlIHJ0cCB0aW1lc3RhbXAgb2YgdGhl
IGZpcnN0IHBsYXllZCBvdXQgYXVkaW8gZnJhbWUuCisgIGludDY0X3QgY2FwdHVyZV9zdGFydF9y
dHBfdGltZV9zdGFtcF87CisgIC8vIFRoZSBjYXB0dXJlIG50cCB0aW1lIChpbiBsb2NhbCB0aW1l
YmFzZSkgb2YgdGhlIGZpcnN0IHBsYXllZCBvdXQgYXVkaW8KKyAgLy8gZnJhbWUuCisgIGludDY0
X3QgY2FwdHVyZV9zdGFydF9udHBfdGltZV9tc18gUlRDX0dVQVJERURfQlkodHNfc3RhdHNfbG9j
a18pOworCisgIC8vIHVzZXMKKyAgUHJvY2Vzc1RocmVhZCogX21vZHVsZVByb2Nlc3NUaHJlYWRQ
dHI7CisgIEF1ZGlvRGV2aWNlTW9kdWxlKiBfYXVkaW9EZXZpY2VNb2R1bGVQdHI7CisgIGZsb2F0
IF9vdXRwdXRHYWluIFJUQ19HVUFSREVEX0JZKHZvbHVtZV9zZXR0aW5nc19jcml0c2VjdF8pOwor
CisgIC8vIEFuIGFzc29jaWF0ZWQgc2VuZCBjaGFubmVsLgorICBydGM6OkNyaXRpY2FsU2VjdGlv
biBhc3NvY19zZW5kX2NoYW5uZWxfbG9ja187CisgIGNvbnN0IENoYW5uZWxTZW5kSW50ZXJmYWNl
KiBhc3NvY2lhdGVkX3NlbmRfY2hhbm5lbF8KKyAgICAgIFJUQ19HVUFSREVEX0JZKGFzc29jX3Nl
bmRfY2hhbm5lbF9sb2NrXyk7CisKKyAgUGFja2V0Um91dGVyKiBwYWNrZXRfcm91dGVyXyA9IG51
bGxwdHI7CisKKyAgcnRjOjpUaHJlYWRDaGVja2VyIGNvbnN0cnVjdGlvbl90aHJlYWRfOworCisg
IE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBjb25zdCBtZWRpYV90cmFuc3BvcnRfOworCisgIC8v
IEUyRUUgQXVkaW8gRnJhbWUgRGVjcnlwdGlvbgorICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVE
ZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRvcl87CisgIHdlYnJ0Yzo6Q3J5cHRvT3B0
aW9ucyBjcnlwdG9fb3B0aW9uc187Cit9OwogCiBpbnQzMl90IENoYW5uZWxSZWNlaXZlOjpPblJl
Y2VpdmVkUGF5bG9hZERhdGEoCiAgICAgY29uc3QgdWludDhfdCogcGF5bG9hZERhdGEsCiAgICAg
c2l6ZV90IHBheWxvYWRTaXplLAogICAgIGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciogcnRwSGVhZGVy
KSB7Ci0gIGlmICghY2hhbm5lbF9zdGF0ZV8uR2V0KCkucGxheWluZykgeworICAvLyBXZSBzaG91
bGQgbm90IGJlIHJlY2VpdmluZyBhbnkgUlRQIHBhY2tldHMgaWYgbWVkaWFfdHJhbnNwb3J0IGlz
IHNldC4KKyAgUlRDX0NIRUNLKCFtZWRpYV90cmFuc3BvcnRfKTsKKworICBpZiAoIVBsYXlpbmco
KSkgewogICAgIC8vIEF2b2lkIGluc2VydGluZyBpbnRvIE5ldEVRIHdoZW4gd2UgYXJlIG5vdCBw
bGF5aW5nLiBDb3VudCB0aGUKICAgICAvLyBwYWNrZXQgYXMgZGlzY2FyZGVkLgogICAgIHJldHVy
biAwOwpAQCAtODIsMTQgKzMwNSwzNSBAQCBpbnQzMl90IENoYW5uZWxSZWNlaXZlOjpPblJlY2Vp
dmVkUGF5bG9hZERhdGEoCiAgIHJldHVybiAwOwogfQogCisvLyBNZWRpYVRyYW5zcG9ydEF1ZGlv
U2lua0ludGVyZmFjZSBvdmVycmlkZS4KK3ZvaWQgQ2hhbm5lbFJlY2VpdmU6Ok9uRGF0YSh1aW50
NjRfdCBjaGFubmVsX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhVHJhbnNw
b3J0RW5jb2RlZEF1ZGlvRnJhbWUgZnJhbWUpIHsKKyAgUlRDX0NIRUNLKG1lZGlhX3RyYW5zcG9y
dF8pOworCisgIGlmICghUGxheWluZygpKSB7CisgICAgLy8gQXZvaWQgaW5zZXJ0aW5nIGludG8g
TmV0RVEgd2hlbiB3ZSBhcmUgbm90IHBsYXlpbmcuIENvdW50IHRoZQorICAgIC8vIHBhY2tldCBh
cyBkaXNjYXJkZWQuCisgICAgcmV0dXJuOworICB9CisKKyAgLy8gU2VuZCBlbmNvZGVkIGF1ZGlv
IGZyYW1lIHRvIERlY29kZXIgLyBOZXRFcS4KKyAgaWYgKGF1ZGlvX2NvZGluZ18tPkluY29taW5n
UGFja2V0KAorICAgICAgICAgIGZyYW1lLmVuY29kZWRfZGF0YSgpLmRhdGEoKSwgZnJhbWUuZW5j
b2RlZF9kYXRhKCkuc2l6ZSgpLAorICAgICAgICAgIENyZWF0ZVdlYnJ0Y1JUUEhlYWRlckZvck1l
ZGlhVHJhbnNwb3J0RnJhbWUoZnJhbWUsIGNoYW5uZWxfaWQpKSAhPQorICAgICAgMCkgeworICAg
IFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiQ2hhbm5lbFJlY2VpdmU6Ok9uRGF0YTogdW5hYmxlIHRv
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInB1c2ggZGF0YSB0byB0aGUgQUNNIjsKKyAg
fQorfQorCiBBdWRpb01peGVyOjpTb3VyY2U6OkF1ZGlvRnJhbWVJbmZvIENoYW5uZWxSZWNlaXZl
OjpHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCiAgICAgaW50IHNhbXBsZV9yYXRlX2h6LAogICAgIEF1
ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKSB7CisgIFJUQ19EQ0hFQ0tfUlVOU19TRVJJQUxJWkVEKCZh
dWRpb190aHJlYWRfcmFjZV9jaGVja2VyXyk7CiAgIGF1ZGlvX2ZyYW1lLT5zYW1wbGVfcmF0ZV9o
el8gPSBzYW1wbGVfcmF0ZV9oejsKIAotICB1bnNpZ25lZCBpbnQgc3NyYzsKLSAgUlRDX0NIRUNL
X0VRKEdldFJlbW90ZVNTUkMoc3NyYyksIDApOwotICBldmVudF9sb2dfLT5Mb2coYWJzbDo6bWFr
ZV91bmlxdWU8UnRjRXZlbnRBdWRpb1BsYXlvdXQ+KHNzcmMpKTsKKyAgZXZlbnRfbG9nXy0+TG9n
KGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVkaW9QbGF5b3V0PihyZW1vdGVfc3NyY18pKTsK
KwogICAvLyBHZXQgMTBtcyByYXcgUENNIGRhdGEgZnJvbSB0aGUgQUNNIChtaXhlciBsaW1pdHMg
b3V0cHV0IGZyZXF1ZW5jeSkKICAgYm9vbCBtdXRlZDsKICAgaWYgKGF1ZGlvX2NvZGluZ18tPlBs
YXlvdXREYXRhMTBNcyhhdWRpb19mcmFtZS0+c2FtcGxlX3JhdGVfaHpfLCBhdWRpb19mcmFtZSwK
QEAgLTE5MSw2ICs0MzUsNyBAQCBBdWRpb01peGVyOjpTb3VyY2U6OkF1ZGlvRnJhbWVJbmZvIENo
YW5uZWxSZWNlaXZlOjpHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCiB9CiAKIGludCBDaGFubmVsUmVj
ZWl2ZTo6UHJlZmVycmVkU2FtcGxlUmF0ZSgpIGNvbnN0IHsKKyAgUlRDX0RDSEVDS19SVU5TX1NF
UklBTElaRUQoJmF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfKTsKICAgLy8gUmV0dXJuIHRoZSBi
aWdnZXIgb2YgcGxheW91dCBhbmQgcmVjZWl2ZSBmcmVxdWVuY3kgaW4gdGhlIEFDTS4KICAgcmV0
dXJuIHN0ZDo6bWF4KGF1ZGlvX2NvZGluZ18tPlJlY2VpdmVGcmVxdWVuY3koKSwKICAgICAgICAg
ICAgICAgICAgIGF1ZGlvX2NvZGluZ18tPlBsYXlvdXRGcmVxdWVuY3koKSk7CkBAIC0xOTksMTQg
KzQ0NCwxNyBAQCBpbnQgQ2hhbm5lbFJlY2VpdmU6OlByZWZlcnJlZFNhbXBsZVJhdGUoKSBjb25z
dCB7CiBDaGFubmVsUmVjZWl2ZTo6Q2hhbm5lbFJlY2VpdmUoCiAgICAgUHJvY2Vzc1RocmVhZCog
bW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAogICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhdWRpb19kZXZp
Y2VfbW9kdWxlLAorICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQs
CiAgICAgVHJhbnNwb3J0KiBydGNwX3NlbmRfdHJhbnNwb3J0LAogICAgIFJ0Y0V2ZW50TG9nKiBy
dGNfZXZlbnRfbG9nLAogICAgIHVpbnQzMl90IHJlbW90ZV9zc3JjLAogICAgIHNpemVfdCBqaXR0
ZXJfYnVmZmVyX21heF9wYWNrZXRzLAogICAgIGJvb2wgaml0dGVyX2J1ZmZlcl9mYXN0X3BsYXlv
dXQsCisgICAgaW50IGppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zLAogICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBkZWNvZGVyX2ZhY3RvcnksCiAgICAgYWJzbDo6
b3B0aW9uYWw8QXVkaW9Db2RlY1BhaXJJZD4gY29kZWNfcGFpcl9pZCwKLSAgICBGcmFtZURlY3J5
cHRvckludGVyZmFjZSogZnJhbWVfZGVjcnlwdG9yKQorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxG
cmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yLAorICAgIGNvbnN0IHdlYnJ0
Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpCiAgICAgOiBldmVudF9sb2dfKHJ0Y19l
dmVudF9sb2cpLAogICAgICAgcnRwX3JlY2VpdmVfc3RhdGlzdGljc18oCiAgICAgICAgICAgUmVj
ZWl2ZVN0YXRpc3RpY3M6OkNyZWF0ZShDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpKSksCkBAIC0y
MjIsNyArNDcwLDEyIEBAIENoYW5uZWxSZWNlaXZlOjpDaGFubmVsUmVjZWl2ZSgKICAgICAgIF9h
dWRpb0RldmljZU1vZHVsZVB0cihhdWRpb19kZXZpY2VfbW9kdWxlKSwKICAgICAgIF9vdXRwdXRH
YWluKDEuMGYpLAogICAgICAgYXNzb2NpYXRlZF9zZW5kX2NoYW5uZWxfKG51bGxwdHIpLAotICAg
ICAgZnJhbWVfZGVjcnlwdG9yXyhmcmFtZV9kZWNyeXB0b3IpIHsKKyAgICAgIG1lZGlhX3RyYW5z
cG9ydF8obWVkaWFfdHJhbnNwb3J0KSwKKyAgICAgIGZyYW1lX2RlY3J5cHRvcl8oZnJhbWVfZGVj
cnlwdG9yKSwKKyAgICAgIGNyeXB0b19vcHRpb25zXyhjcnlwdG9fb3B0aW9ucykgeworICAvLyBU
T0RPKG5pc3NlKTogVXNlIF9tb2R1bGVQcm9jZXNzVGhyZWFkUHRyIGluc3RlYWQ/CisgIG1vZHVs
ZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXy5EZXRhY2hGcm9tVGhyZWFkKCk7CisKICAgUlRDX0RD
SEVDSyhtb2R1bGVfcHJvY2Vzc190aHJlYWQpOwogICBSVENfRENIRUNLKGF1ZGlvX2RldmljZV9t
b2R1bGUpOwogICBBdWRpb0NvZGluZ01vZHVsZTo6Q29uZmlnIGFjbV9jb25maWc7CkBAIC0yMzAs
NiArNDgzLDcgQEAgQ2hhbm5lbFJlY2VpdmU6OkNoYW5uZWxSZWNlaXZlKAogICBhY21fY29uZmln
Lm5ldGVxX2NvbmZpZy5jb2RlY19wYWlyX2lkID0gY29kZWNfcGFpcl9pZDsKICAgYWNtX2NvbmZp
Zy5uZXRlcV9jb25maWcubWF4X3BhY2tldHNfaW5fYnVmZmVyID0gaml0dGVyX2J1ZmZlcl9tYXhf
cGFja2V0czsKICAgYWNtX2NvbmZpZy5uZXRlcV9jb25maWcuZW5hYmxlX2Zhc3RfYWNjZWxlcmF0
ZSA9IGppdHRlcl9idWZmZXJfZmFzdF9wbGF5b3V0OworICBhY21fY29uZmlnLm5ldGVxX2NvbmZp
Zy5taW5fZGVsYXlfbXMgPSBqaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tczsKICAgYWNtX2NvbmZp
Zy5uZXRlcV9jb25maWcuZW5hYmxlX211dGVkX3N0YXRlID0gdHJ1ZTsKICAgYXVkaW9fY29kaW5n
Xy5yZXNldChBdWRpb0NvZGluZ01vZHVsZTo6Q3JlYXRlKGFjbV9jb25maWcpKTsKIApAQCAtMjM4
LDkgKzQ5Miw3IEBAIENoYW5uZWxSZWNlaXZlOjpDaGFubmVsUmVjZWl2ZSgKICAgcnRwX3JlY2Vp
dmVfc3RhdGlzdGljc18tPkVuYWJsZVJldHJhbnNtaXREZXRlY3Rpb24ocmVtb3RlX3NzcmNfLCB0
cnVlKTsKICAgUnRwUnRjcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogICBjb25maWd1
cmF0aW9uLmF1ZGlvID0gdHJ1ZTsKLSAgLy8gVE9ETyhuaXNzZSk6IEFsc28gc2V0IHJlY2VpdmVy
X29ubHkgPSB0cnVlLCBidXQgdGhhdCBzZWVtcyB0byBicmVhayBSVFQKLSAgLy8gZXN0aW1hdGlv
biwgcmVzdWx0aW5nIGluIHRlc3QgZmFpbHVyZXMgZm9yCi0gIC8vIFBlZXJDb25uZWN0aW9uSW50
ZWdyYXRpb25UZXN0LkdldENhcHR1cmVTdGFydE50cFRpbWVXaXRoT2xkU3RhdHNBcGkKKyAgY29u
ZmlndXJhdGlvbi5yZWNlaXZlcl9vbmx5ID0gdHJ1ZTsKICAgY29uZmlndXJhdGlvbi5vdXRnb2lu
Z190cmFuc3BvcnQgPSBydGNwX3NlbmRfdHJhbnNwb3J0OwogICBjb25maWd1cmF0aW9uLnJlY2Vp
dmVfc3RhdGlzdGljcyA9IHJ0cF9yZWNlaXZlX3N0YXRpc3RpY3NfLmdldCgpOwogCkBAIC0yNDks
MjYgKzUwMSw5IEBAIENoYW5uZWxSZWNlaXZlOjpDaGFubmVsUmVjZWl2ZSgKICAgX3J0cFJ0Y3BN
b2R1bGUucmVzZXQoUnRwUnRjcDo6Q3JlYXRlUnRwUnRjcChjb25maWd1cmF0aW9uKSk7CiAgIF9y
dHBSdGNwTW9kdWxlLT5TZXRTZW5kaW5nTWVkaWFTdGF0dXMoZmFsc2UpOwogICBfcnRwUnRjcE1v
ZHVsZS0+U2V0UmVtb3RlU1NSQyhyZW1vdGVfc3NyY18pOwotICBJbml0KCk7Ci19Ci0KLUNoYW5u
ZWxSZWNlaXZlOjp+Q2hhbm5lbFJlY2VpdmUoKSB7Ci0gIFRlcm1pbmF0ZSgpOwotICBSVENfRENI
RUNLKCFjaGFubmVsX3N0YXRlXy5HZXQoKS5wbGF5aW5nKTsKLX0KLQotdm9pZCBDaGFubmVsUmVj
ZWl2ZTo6SW5pdCgpIHsKLSAgY2hhbm5lbF9zdGF0ZV8uUmVzZXQoKTsKIAotICAvLyAtLS0gQWRk
IG1vZHVsZXMgdG8gcHJvY2VzcyB0aHJlYWQgKGZvciBwZXJpb2RpYyBzY2hlZHVsYXRpb24pCiAg
IF9tb2R1bGVQcm9jZXNzVGhyZWFkUHRyLT5SZWdpc3Rlck1vZHVsZShfcnRwUnRjcE1vZHVsZS5n
ZXQoKSwgUlRDX0ZST01fSEVSRSk7CiAKLSAgLy8gLS0tIEFDTSBpbml0aWFsaXphdGlvbgotICBp
bnQgZXJyb3IgPSBhdWRpb19jb2RpbmdfLT5Jbml0aWFsaXplUmVjZWl2ZXIoKTsKLSAgUlRDX0RD
SEVDS19FUSgwLCBlcnJvcik7Ci0KLSAgLy8gLS0tIFJUUC9SVENQIG1vZHVsZSBpbml0aWFsaXph
dGlvbgotCiAgIC8vIEVuc3VyZSB0aGF0IFJUQ1AgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGZvciB0
aGUgY3JlYXRlZCBjaGFubmVsLgogICAvLyBOb3RlIHRoYXQsIHRoZSBtb2R1bGUgd2lsbCBrZWVw
IGdlbmVyYXRpbmcgUlRDUCB1bnRpbCBpdCBpcyBleHBsaWNpdGx5CiAgIC8vIGRpc2FibGVkIGJ5
IHRoZSB1c2VyLgpAQCAtMjc2LDYwICs1MTEsNTQgQEAgdm9pZCBDaGFubmVsUmVjZWl2ZTo6SW5p
dCgpIHsKICAgLy8gYmUgdHJhbnNtaXR0ZWQgc2luY2UgdGhlIFRyYW5zcG9ydCBvYmplY3Qgd2ls
bCB0aGVuIGJlIGludmFsaWQuCiAgIC8vIFJUQ1AgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgogICBf
cnRwUnRjcE1vZHVsZS0+U2V0UlRDUFN0YXR1cyhSdGNwTW9kZTo6a0NvbXBvdW5kKTsKKworICBp
ZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIG1lZGlhX3RyYW5zcG9ydF8tPlNldFJlY2VpdmVB
dWRpb1NpbmsodGhpcyk7CisgIH0KIH0KIAotdm9pZCBDaGFubmVsUmVjZWl2ZTo6VGVybWluYXRl
KCkgeworQ2hhbm5lbFJlY2VpdmU6On5DaGFubmVsUmVjZWl2ZSgpIHsKICAgUlRDX0RDSEVDSyhj
b25zdHJ1Y3Rpb25fdGhyZWFkXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICAvLyBNdXN0IGJl
IGNhbGxlZCBvbiB0aGUgc2FtZSB0aHJlYWQgYXMgSW5pdCgpLgotICBydHBfcmVjZWl2ZV9zdGF0
aXN0aWNzXy0+UmVnaXN0ZXJSdGNwU3RhdGlzdGljc0NhbGxiYWNrKE5VTEwpOworCisgIGlmICht
ZWRpYV90cmFuc3BvcnRfKSB7CisgICAgbWVkaWFfdHJhbnNwb3J0Xy0+U2V0UmVjZWl2ZUF1ZGlv
U2luayhudWxscHRyKTsKKyAgfQogCiAgIFN0b3BQbGF5b3V0KCk7CiAKLSAgLy8gVGhlIG9yZGVy
IHRvIHNhZmVseSBzaHV0ZG93biBtb2R1bGVzIGluIGEgY2hhbm5lbCBpczoKLSAgLy8gMS4gRGUt
cmVnaXN0ZXIgY2FsbGJhY2tzIGluIG1vZHVsZXMKLSAgLy8gMi4gRGUtcmVnaXN0ZXIgbW9kdWxl
cyBpbiBwcm9jZXNzIHRocmVhZAotICAvLyAzLiBEZXN0cm95IG1vZHVsZXMKICAgaW50IGVycm9y
ID0gYXVkaW9fY29kaW5nXy0+UmVnaXN0ZXJUcmFuc3BvcnRDYWxsYmFjayhOVUxMKTsKICAgUlRD
X0RDSEVDS19FUSgwLCBlcnJvcik7CiAKLSAgLy8gRGUtcmVnaXN0ZXIgbW9kdWxlcyBpbiBwcm9j
ZXNzIHRocmVhZAogICBpZiAoX21vZHVsZVByb2Nlc3NUaHJlYWRQdHIpCiAgICAgX21vZHVsZVBy
b2Nlc3NUaHJlYWRQdHItPkRlUmVnaXN0ZXJNb2R1bGUoX3J0cFJ0Y3BNb2R1bGUuZ2V0KCkpOwot
Ci0gIC8vIEVuZCBvZiBtb2R1bGVzIHNodXRkb3duCiB9CiAKIHZvaWQgQ2hhbm5lbFJlY2VpdmU6
OlNldFNpbmsoQXVkaW9TaW5rSW50ZXJmYWNlKiBzaW5rKSB7CisgIFJUQ19EQ0hFQ0sod29ya2Vy
X3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBydGM6OkNyaXRTY29w
ZSBjcygmX2NhbGxiYWNrQ3JpdFNlY3QpOwogICBhdWRpb19zaW5rXyA9IHNpbms7CiB9CiAKLWlu
dDMyX3QgQ2hhbm5lbFJlY2VpdmU6OlN0YXJ0UGxheW91dCgpIHsKLSAgaWYgKGNoYW5uZWxfc3Rh
dGVfLkdldCgpLnBsYXlpbmcpIHsKLSAgICByZXR1cm4gMDsKLSAgfQotCi0gIGNoYW5uZWxfc3Rh
dGVfLlNldFBsYXlpbmcodHJ1ZSk7Ci0KLSAgcmV0dXJuIDA7Cit2b2lkIENoYW5uZWxSZWNlaXZl
OjpTdGFydFBsYXlvdXQoKSB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5D
YWxsZWRPblZhbGlkVGhyZWFkKCkpOworICBydGM6OkNyaXRTY29wZSBsb2NrKCZwbGF5aW5nX2xv
Y2tfKTsKKyAgcGxheWluZ18gPSB0cnVlOwogfQogCi1pbnQzMl90IENoYW5uZWxSZWNlaXZlOjpT
dG9wUGxheW91dCgpIHsKLSAgaWYgKCFjaGFubmVsX3N0YXRlXy5HZXQoKS5wbGF5aW5nKSB7Ci0g
ICAgcmV0dXJuIDA7Ci0gIH0KLQotICBjaGFubmVsX3N0YXRlXy5TZXRQbGF5aW5nKGZhbHNlKTsK
K3ZvaWQgQ2hhbm5lbFJlY2VpdmU6OlN0b3BQbGF5b3V0KCkgeworICBSVENfRENIRUNLKHdvcmtl
cl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKKyAgcnRjOjpDcml0U2Nv
cGUgbG9jaygmcGxheWluZ19sb2NrXyk7CisgIHBsYXlpbmdfID0gZmFsc2U7CiAgIF9vdXRwdXRB
dWRpb0xldmVsLkNsZWFyKCk7Ci0KLSAgcmV0dXJuIDA7CiB9CiAKLWludDMyX3QgQ2hhbm5lbFJl
Y2VpdmU6OkdldFJlY0NvZGVjKENvZGVjSW5zdCYgY29kZWMpIHsKLSAgcmV0dXJuIChhdWRpb19j
b2RpbmdfLT5SZWNlaXZlQ29kZWMoJmNvZGVjKSk7Citib29sIENoYW5uZWxSZWNlaXZlOjpHZXRS
ZWNDb2RlYyhDb2RlY0luc3QqIGNvZGVjKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3Ro
cmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOworICByZXR1cm4gKGF1ZGlvX2Nv
ZGluZ18tPlJlY2VpdmVDb2RlYyhjb2RlYykgPT0gMCk7CiB9CiAKIHN0ZDo6dmVjdG9yPHdlYnJ0
Yzo6UnRwU291cmNlPiBDaGFubmVsUmVjZWl2ZTo6R2V0U291cmNlcygpIGNvbnN0IHsKKyAgUlRD
X0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAg
IGludDY0X3Qgbm93X21zID0gcnRjOjpUaW1lTWlsbGlzKCk7CiAgIHN0ZDo6dmVjdG9yPFJ0cFNv
dXJjZT4gc291cmNlczsKICAgewpAQCAtMzQ3LDYgKzU3Niw3IEBAIHN0ZDo6dmVjdG9yPHdlYnJ0
Yzo6UnRwU291cmNlPiBDaGFubmVsUmVjZWl2ZTo6R2V0U291cmNlcygpIGNvbnN0IHsKIAogdm9p
ZCBDaGFubmVsUmVjZWl2ZTo6U2V0UmVjZWl2ZUNvZGVjcygKICAgICBjb25zdCBzdGQ6Om1hcDxp
bnQsIFNkcEF1ZGlvRm9ybWF0PiYgY29kZWNzKSB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVh
ZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBmb3IgKGNvbnN0IGF1dG8mIGt2
IDogY29kZWNzKSB7CiAgICAgUlRDX0RDSEVDS19HRShrdi5zZWNvbmQuY2xvY2tyYXRlX2h6LCAx
MDAwKTsKICAgICBwYXlsb2FkX3R5cGVfZnJlcXVlbmNpZXNfW2t2LmZpcnN0XSA9IGt2LnNlY29u
ZC5jbG9ja3JhdGVfaHo7CkBAIC0zNTQsNyArNTg0LDcgQEAgdm9pZCBDaGFubmVsUmVjZWl2ZTo6
U2V0UmVjZWl2ZUNvZGVjcygKICAgYXVkaW9fY29kaW5nXy0+U2V0UmVjZWl2ZUNvZGVjcyhjb2Rl
Y3MpOwogfQogCi0vLyBUT0RPKG5pc3NlKTogTW92ZSByZWNlaXZlIGxvZ2ljIHVwIHRvIEF1ZGlv
UmVjZWl2ZVN0cmVhbS4KKy8vIE1heSBiZSBjYWxsZWQgb24gZWl0aGVyIHdvcmtlciB0aHJlYWQg
b3IgbmV0d29yayB0aHJlYWQuCiB2b2lkIENoYW5uZWxSZWNlaXZlOjpPblJ0cFBhY2tldChjb25z
dCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgIGludDY0X3Qgbm93X21zID0gcnRjOjpU
aW1lTWlsbGlzKCk7CiAgIHVpbnQ4X3QgYXVkaW9fbGV2ZWw7CkBAIC0zNjksNyArNTk5LDkgQEAg
dm9pZCBDaGFubmVsUmVjZWl2ZTo6T25SdHBQYWNrZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQm
IHBhY2tldCkgewogICAgIGlmIChoYXNfYXVkaW9fbGV2ZWwpCiAgICAgICBsYXN0X3JlY2VpdmVk
X3J0cF9hdWRpb19sZXZlbF8gPSBhdWRpb19sZXZlbDsKICAgICBzdGQ6OnZlY3Rvcjx1aW50MzJf
dD4gY3NyY3MgPSBwYWNrZXQuQ3NyY3MoKTsKLSAgICBjb250cmlidXRpbmdfc291cmNlc18uVXBk
YXRlKG5vd19tcywgY3NyY3MpOworICAgIGNvbnRyaWJ1dGluZ19zb3VyY2VzXy5VcGRhdGUoCisg
ICAgICAgIG5vd19tcywgY3NyY3MsCisgICAgICAgIGhhc19hdWRpb19sZXZlbCA/IGFic2w6Om9w
dGlvbmFsPHVpbnQ4X3Q+KGF1ZGlvX2xldmVsKSA6IGFic2w6Om51bGxvcHQpOwogICB9CiAKICAg
Ly8gU3RvcmUgcGxheW91dCB0aW1lc3RhbXAgZm9yIHRoZSByZWNlaXZlZCBSVFAgcGFja2V0CkBA
IC00MjksNiArNjYxLDEwIEBAIGJvb2wgQ2hhbm5lbFJlY2VpdmU6OlJlY2VpdmVQYWNrZXQoY29u
c3QgdWludDhfdCogcGFja2V0LAogICAgIC8vIFVwZGF0ZSB0aGUgZmluYWwgcGF5bG9hZC4KICAg
ICBwYXlsb2FkID0gZGVjcnlwdGVkX2F1ZGlvX3BheWxvYWQuZGF0YSgpOwogICAgIHBheWxvYWRf
ZGF0YV9sZW5ndGggPSBkZWNyeXB0ZWRfYXVkaW9fcGF5bG9hZC5zaXplKCk7CisgIH0gZWxzZSBp
ZiAoY3J5cHRvX29wdGlvbnNfLnNmcmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24pIHsKKyAg
ICBSVENfRExPRyhMU19FUlJPUikKKyAgICAgICAgPDwgIkZyYW1lRGVjcnlwdG9yIHJlcXVpcmVk
IGJ1dCBub3Qgc2V0LCBkcm9wcGluZyBwYWNrZXQiOworICAgIHBheWxvYWRfZGF0YV9sZW5ndGgg
PSAwOwogICB9CiAKICAgaWYgKHBheWxvYWRfZGF0YV9sZW5ndGggPT0gMCkgewpAQCAtNDM5LDcg
KzY3NSw5IEBAIGJvb2wgQ2hhbm5lbFJlY2VpdmU6OlJlY2VpdmVQYWNrZXQoY29uc3QgdWludDhf
dCogcGFja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3ZWJydGNfcnRwX2hl
YWRlcik7CiB9CiAKLWludDMyX3QgQ2hhbm5lbFJlY2VpdmU6OlJlY2VpdmVkUlRDUFBhY2tldChj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7CisvLyBNYXkgYmUgY2FsbGVkIG9u
IGVpdGhlciB3b3JrZXIgdGhyZWFkIG9yIG5ldHdvcmsgdGhyZWFkLgorLy8gVE9ETyhuaXNzZSk6
IERyb3AgYWx3YXlzLXRydWUgcmV0dXJuIHZhbHVlLgorYm9vbCBDaGFubmVsUmVjZWl2ZTo6UmVj
ZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsKICAg
Ly8gU3RvcmUgcGxheW91dCB0aW1lc3RhbXAgZm9yIHRoZSByZWNlaXZlZCBSVENQIHBhY2tldAog
ICBVcGRhdGVQbGF5b3V0VGltZXN0YW1wKHRydWUpOwogCkBAIC00NDksNyArNjg3LDcgQEAgaW50
MzJfdCBDaGFubmVsUmVjZWl2ZTo6UmVjZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBsZW5ndGgpIHsKICAgaW50NjRfdCBydHQgPSBHZXRSVFQoKTsKICAgaWYgKHJ0
dCA9PSAwKSB7CiAgICAgLy8gV2FpdGluZyBmb3IgdmFsaWQgUlRULgotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiB0cnVlOwogICB9CiAKICAgaW50NjRfdCBuYWNrX3dpbmRvd19tcyA9IHJ0dDsK
QEAgLTQ2NSw0NiArNzAzLDQ1IEBAIGludDMyX3QgQ2hhbm5lbFJlY2VpdmU6OlJlY2VpdmVkUlRD
UFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7CiAgIGlmICgwICE9
IF9ydHBSdGNwTW9kdWxlLT5SZW1vdGVOVFAoJm50cF9zZWNzLCAmbnRwX2ZyYWMsIE5VTEwsIE5V
TEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJ0cF90aW1lc3RhbXAp
KSB7CiAgICAgLy8gV2FpdGluZyBmb3IgUlRDUC4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
dHJ1ZTsKICAgfQogCiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZ0c19zdGF0c19sb2Nr
Xyk7CiAgICAgbnRwX2VzdGltYXRvcl8uVXBkYXRlUnRjcFRpbWVzdGFtcChydHQsIG50cF9zZWNz
LCBudHBfZnJhYywgcnRwX3RpbWVzdGFtcCk7CiAgIH0KLSAgcmV0dXJuIDA7CisgIHJldHVybiB0
cnVlOwogfQogCiBpbnQgQ2hhbm5lbFJlY2VpdmU6OkdldFNwZWVjaE91dHB1dExldmVsRnVsbFJh
bmdlKCkgY29uc3QgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVk
T25WYWxpZFRocmVhZCgpKTsKICAgcmV0dXJuIF9vdXRwdXRBdWRpb0xldmVsLkxldmVsRnVsbFJh
bmdlKCk7CiB9CiAKIGRvdWJsZSBDaGFubmVsUmVjZWl2ZTo6R2V0VG90YWxPdXRwdXRFbmVyZ3ko
KSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZh
bGlkVGhyZWFkKCkpOwogICByZXR1cm4gX291dHB1dEF1ZGlvTGV2ZWwuVG90YWxFbmVyZ3koKTsK
IH0KIAogZG91YmxlIENoYW5uZWxSZWNlaXZlOjpHZXRUb3RhbE91dHB1dER1cmF0aW9uKCkgY29u
c3QgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRo
cmVhZCgpKTsKICAgcmV0dXJuIF9vdXRwdXRBdWRpb0xldmVsLlRvdGFsRHVyYXRpb24oKTsKIH0K
IAogdm9pZCBDaGFubmVsUmVjZWl2ZTo6U2V0Q2hhbm5lbE91dHB1dFZvbHVtZVNjYWxpbmcoZmxv
YXQgc2NhbGluZykgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVk
T25WYWxpZFRocmVhZCgpKTsKICAgcnRjOjpDcml0U2NvcGUgY3MoJnZvbHVtZV9zZXR0aW5nc19j
cml0c2VjdF8pOwogICBfb3V0cHV0R2FpbiA9IHNjYWxpbmc7CiB9CiAKLWludCBDaGFubmVsUmVj
ZWl2ZTo6U2V0TG9jYWxTU1JDKHVuc2lnbmVkIGludCBzc3JjKSB7Cit2b2lkIENoYW5uZWxSZWNl
aXZlOjpTZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYykgeworICBSVENfRENIRUNLKHdvcmtlcl90
aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgX3J0cFJ0Y3BNb2R1bGUt
PlNldFNTUkMoc3NyYyk7Ci0gIHJldHVybiAwOwotfQotCi0vLyBUT0RPKG5pc3NlKTogUGFzcyBz
c3JjIGluIHJldHVybiB2YWx1ZSBpbnN0ZWFkLgotaW50IENoYW5uZWxSZWNlaXZlOjpHZXRSZW1v
dGVTU1JDKHVuc2lnbmVkIGludCYgc3NyYykgewotICBzc3JjID0gcmVtb3RlX3NzcmNfOwotICBy
ZXR1cm4gMDsKIH0KIAogdm9pZCBDaGFubmVsUmVjZWl2ZTo6UmVnaXN0ZXJSZWNlaXZlckNvbmdl
c3Rpb25Db250cm9sT2JqZWN0cygKICAgICBQYWNrZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXIpIHsK
KyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQo
KSk7CiAgIFJUQ19EQ0hFQ0socGFja2V0X3JvdXRlcik7CiAgIFJUQ19EQ0hFQ0soIXBhY2tldF9y
b3V0ZXJfKTsKICAgY29uc3RleHByIGJvb2wgcmVtYl9jYW5kaWRhdGUgPSBmYWxzZTsKQEAgLTUx
MywxMyArNzUwLDE2IEBAIHZvaWQgQ2hhbm5lbFJlY2VpdmU6OlJlZ2lzdGVyUmVjZWl2ZXJDb25n
ZXN0aW9uQ29udHJvbE9iamVjdHMoCiB9CiAKIHZvaWQgQ2hhbm5lbFJlY2VpdmU6OlJlc2V0UmVj
ZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3Ro
cmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBSVENfRENIRUNLKHBhY2tl
dF9yb3V0ZXJfKTsKICAgcGFja2V0X3JvdXRlcl8tPlJlbW92ZVJlY2VpdmVSdHBNb2R1bGUoX3J0
cFJ0Y3BNb2R1bGUuZ2V0KCkpOwogICBwYWNrZXRfcm91dGVyXyA9IG51bGxwdHI7CiB9CiAKLWlu
dCBDaGFubmVsUmVjZWl2ZTo6R2V0UlRQU3RhdGlzdGljcyhDYWxsUmVjZWl2ZVN0YXRpc3RpY3Mm
IHN0YXRzKSB7CitDYWxsUmVjZWl2ZVN0YXRpc3RpY3MgQ2hhbm5lbFJlY2VpdmU6OkdldFJUQ1BT
dGF0aXN0aWNzKCkgY29uc3QgeworICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8u
Q2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgLy8gLS0tIFJ0Y3BTdGF0aXN0aWNzCisgIENhbGxS
ZWNlaXZlU3RhdGlzdGljcyBzdGF0czsKIAogICAvLyBUaGUgaml0dGVyIHN0YXRpc3RpY3MgaXMg
dXBkYXRlZCBmb3IgZWFjaCByZWNlaXZlZCBSVFAgcGFja2V0IGFuZCBpcwogICAvLyBiYXNlZCBv
biByZWNlaXZlZCBwYWNrZXRzLgpAQCAtNTU2LDE0ICs3OTYsMTUgQEAgaW50IENoYW5uZWxSZWNl
aXZlOjpHZXRSVFBTdGF0aXN0aWNzKENhbGxSZWNlaXZlU3RhdGlzdGljcyYgc3RhdHMpIHsKICAg
ICBydGM6OkNyaXRTY29wZSBsb2NrKCZ0c19zdGF0c19sb2NrXyk7CiAgICAgc3RhdHMuY2FwdHVy
ZV9zdGFydF9udHBfdGltZV9tc18gPSBjYXB0dXJlX3N0YXJ0X250cF90aW1lX21zXzsKICAgfQot
ICByZXR1cm4gMDsKKyAgcmV0dXJuIHN0YXRzOwogfQogCi12b2lkIENoYW5uZWxSZWNlaXZlOjpT
ZXROQUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4TnVtYmVyT2ZQYWNrZXRzKSB7Cit2b2lk
IENoYW5uZWxSZWNlaXZlOjpTZXROQUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4X3BhY2tl
dHMpIHsKKyAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRU
aHJlYWQoKSk7CiAgIC8vIE5vbmUgb2YgdGhlc2UgZnVuY3Rpb25zIGNhbiBmYWlsLgotICBydHBf
cmVjZWl2ZV9zdGF0aXN0aWNzXy0+U2V0TWF4UmVvcmRlcmluZ1RocmVzaG9sZChtYXhOdW1iZXJP
ZlBhY2tldHMpOworICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXy0+U2V0TWF4UmVvcmRlcmluZ1Ro
cmVzaG9sZChtYXhfcGFja2V0cyk7CiAgIGlmIChlbmFibGUpCi0gICAgYXVkaW9fY29kaW5nXy0+
RW5hYmxlTmFjayhtYXhOdW1iZXJPZlBhY2tldHMpOworICAgIGF1ZGlvX2NvZGluZ18tPkVuYWJs
ZU5hY2sobWF4X3BhY2tldHMpOwogICBlbHNlCiAgICAgYXVkaW9fY29kaW5nXy0+RGlzYWJsZU5h
Y2soKTsKIH0KQEAgLTU3NCw1NCArODE1LDYxIEBAIGludCBDaGFubmVsUmVjZWl2ZTo6UmVzZW5k
UGFja2V0cyhjb25zdCB1aW50MTZfdCogc2VxdWVuY2VfbnVtYmVycywKICAgcmV0dXJuIF9ydHBS
dGNwTW9kdWxlLT5TZW5kTkFDSyhzZXF1ZW5jZV9udW1iZXJzLCBsZW5ndGgpOwogfQogCi12b2lk
IENoYW5uZWxSZWNlaXZlOjpTZXRBc3NvY2lhdGVkU2VuZENoYW5uZWwoQ2hhbm5lbFNlbmQqIGNo
YW5uZWwpIHsKK3ZvaWQgQ2hhbm5lbFJlY2VpdmU6OlNldEFzc29jaWF0ZWRTZW5kQ2hhbm5lbCgK
KyAgICBjb25zdCBDaGFubmVsU2VuZEludGVyZmFjZSogY2hhbm5lbCkgeworICBSVENfRENIRUNL
KHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgcnRjOjpD
cml0U2NvcGUgbG9jaygmYXNzb2Nfc2VuZF9jaGFubmVsX2xvY2tfKTsKICAgYXNzb2NpYXRlZF9z
ZW5kX2NoYW5uZWxfID0gY2hhbm5lbDsKIH0KIAotaW50IENoYW5uZWxSZWNlaXZlOjpHZXROZXR3
b3JrU3RhdGlzdGljcyhOZXR3b3JrU3RhdGlzdGljcyYgc3RhdHMpIHsKLSAgcmV0dXJuIGF1ZGlv
X2NvZGluZ18tPkdldE5ldHdvcmtTdGF0aXN0aWNzKCZzdGF0cyk7CitOZXR3b3JrU3RhdGlzdGlj
cyBDaGFubmVsUmVjZWl2ZTo6R2V0TmV0d29ya1N0YXRpc3RpY3MoKSBjb25zdCB7CisgIFJUQ19E
Q0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOworICBO
ZXR3b3JrU3RhdGlzdGljcyBzdGF0czsKKyAgaW50IGVycm9yID0gYXVkaW9fY29kaW5nXy0+R2V0
TmV0d29ya1N0YXRpc3RpY3MoJnN0YXRzKTsKKyAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Cisg
IHJldHVybiBzdGF0czsKIH0KIAotdm9pZCBDaGFubmVsUmVjZWl2ZTo6R2V0RGVjb2RpbmdDYWxs
U3RhdGlzdGljcygKLSAgICBBdWRpb0RlY29kaW5nQ2FsbFN0YXRzKiBzdGF0cykgY29uc3Qgewot
ICBhdWRpb19jb2RpbmdfLT5HZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKHN0YXRzKTsKK0F1ZGlv
RGVjb2RpbmdDYWxsU3RhdHMgQ2hhbm5lbFJlY2VpdmU6OkdldERlY29kaW5nQ2FsbFN0YXRpc3Rp
Y3MoKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRP
blZhbGlkVGhyZWFkKCkpOworICBBdWRpb0RlY29kaW5nQ2FsbFN0YXRzIHN0YXRzOworICBhdWRp
b19jb2RpbmdfLT5HZXREZWNvZGluZ0NhbGxTdGF0aXN0aWNzKCZzdGF0cyk7CisgIHJldHVybiBz
dGF0czsKIH0KIAogdWludDMyX3QgQ2hhbm5lbFJlY2VpdmU6OkdldERlbGF5RXN0aW1hdGUoKSBj
b25zdCB7CisgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlk
VGhyZWFkKCkgfHwKKyAgICAgICAgICAgICBtb2R1bGVfcHJvY2Vzc190aHJlYWRfY2hlY2tlcl8u
Q2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygmdmlkZW9fc3lu
Y19sb2NrXyk7CiAgIHJldHVybiBhdWRpb19jb2RpbmdfLT5GaWx0ZXJlZEN1cnJlbnREZWxheU1z
KCkgKyBwbGF5b3V0X2RlbGF5X21zXzsKIH0KIAotaW50IENoYW5uZWxSZWNlaXZlOjpTZXRNaW5p
bXVtUGxheW91dERlbGF5KGludCBkZWxheU1zKSB7Ci0gIGlmICgoZGVsYXlNcyA8IGtWb2ljZUVu
Z2luZU1pbk1pblBsYXlvdXREZWxheU1zKSB8fAotICAgICAgKGRlbGF5TXMgPiBrVm9pY2VFbmdp
bmVNYXhNaW5QbGF5b3V0RGVsYXlNcykpIHsKK3ZvaWQgQ2hhbm5lbFJlY2VpdmU6OlNldE1pbmlt
dW1QbGF5b3V0RGVsYXkoaW50IGRlbGF5X21zKSB7CisgIFJUQ19EQ0hFQ0sobW9kdWxlX3Byb2Nl
c3NfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CisgIC8vIExpbWl0IHRv
IHJhbmdlIGFjY2VwdGVkIGJ5IGJvdGggVm9FIGFuZCBBQ00sIHNvIHdlJ3JlIGF0IGxlYXN0IGdl
dHRpbmcgYXMKKyAgLy8gY2xvc2UgYXMgcG9zc2libGUsIGluc3RlYWQgb2YgZmFpbGluZy4KKyAg
ZGVsYXlfbXMgPSBydGM6OlNhZmVDbGFtcChkZWxheV9tcywgMCwgMTAwMDApOworICBpZiAoKGRl
bGF5X21zIDwga1ZvaWNlRW5naW5lTWluTWluUGxheW91dERlbGF5TXMpIHx8CisgICAgICAoZGVs
YXlfbXMgPiBrVm9pY2VFbmdpbmVNYXhNaW5QbGF5b3V0RGVsYXlNcykpIHsKICAgICBSVENfRExP
RyhMU19FUlJPUikgPDwgIlNldE1pbmltdW1QbGF5b3V0RGVsYXkoKSBpbnZhbGlkIG1pbiBkZWxh
eSI7Ci0gICAgcmV0dXJuIC0xOworICAgIHJldHVybjsKICAgfQotICBpZiAoYXVkaW9fY29kaW5n
Xy0+U2V0TWluaW11bVBsYXlvdXREZWxheShkZWxheU1zKSAhPSAwKSB7CisgIGlmIChhdWRpb19j
b2RpbmdfLT5TZXRNaW5pbXVtUGxheW91dERlbGF5KGRlbGF5X21zKSAhPSAwKSB7CiAgICAgUlRD
X0RMT0coTFNfRVJST1IpCiAgICAgICAgIDw8ICJTZXRNaW5pbXVtUGxheW91dERlbGF5KCkgZmFp
bGVkIHRvIHNldCBtaW4gcGxheW91dCBkZWxheSI7Ci0gICAgcmV0dXJuIC0xOwogICB9Ci0gIHJl
dHVybiAwOwogfQogCi1pbnQgQ2hhbm5lbFJlY2VpdmU6OkdldFBsYXlvdXRUaW1lc3RhbXAodW5z
aWduZWQgaW50JiB0aW1lc3RhbXApIHsKLSAgdWludDMyX3QgcGxheW91dF90aW1lc3RhbXBfcnRw
ID0gMDsKK3VpbnQzMl90IENoYW5uZWxSZWNlaXZlOjpHZXRQbGF5b3V0VGltZXN0YW1wKCkgY29u
c3QgeworICBSVENfRENIRUNLX1JVTlNfU0VSSUFMSVpFRCgmdmlkZW9fY2FwdHVyZV90aHJlYWRf
cmFjZV9jaGVja2VyXyk7CiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZ2aWRlb19zeW5j
X2xvY2tfKTsKLSAgICBwbGF5b3V0X3RpbWVzdGFtcF9ydHAgPSBwbGF5b3V0X3RpbWVzdGFtcF9y
dHBfOwotICB9Ci0gIGlmIChwbGF5b3V0X3RpbWVzdGFtcF9ydHAgPT0gMCkgewotICAgIFJUQ19E
TE9HKExTX0VSUk9SKSA8PCAiR2V0UGxheW91dFRpbWVzdGFtcCgpIGZhaWxlZCB0byByZXRyaWV2
ZSB0aW1lc3RhbXAiOwotICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gcGxheW91dF90aW1lc3Rh
bXBfcnRwXzsKICAgfQotICB0aW1lc3RhbXAgPSBwbGF5b3V0X3RpbWVzdGFtcF9ydHA7Ci0gIHJl
dHVybiAwOwogfQogCiBhYnNsOjpvcHRpb25hbDxTeW5jYWJsZTo6SW5mbz4gQ2hhbm5lbFJlY2Vp
dmU6OkdldFN5bmNJbmZvKCkgY29uc3QgeworICBSVENfRENIRUNLKG1vZHVsZV9wcm9jZXNzX3Ro
cmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICBTeW5jYWJsZTo6SW5mbyBp
bmZvOwogICBpZiAoX3J0cFJ0Y3BNb2R1bGUtPlJlbW90ZU5UUCgmaW5mby5jYXB0dXJlX3RpbWVf
bnRwX3NlY3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmZvLmNhcHR1cmVf
dGltZV9udHBfZnJhYywgbnVsbHB0ciwgbnVsbHB0ciwKQEAgLTY4Myw2ICs5MzEsMTQgQEAgaW50
IENoYW5uZWxSZWNlaXZlOjpHZXRSdHBUaW1lc3RhbXBSYXRlSHooKSBjb25zdCB7CiB9CiAKIGlu
dDY0X3QgQ2hhbm5lbFJlY2VpdmU6OkdldFJUVCgpIGNvbnN0IHsKKyAgaWYgKG1lZGlhX3RyYW5z
cG9ydF8pIHsKKyAgICBhdXRvIHRhcmdldF9yYXRlID0gbWVkaWFfdHJhbnNwb3J0Xy0+R2V0TGF0
ZXN0VGFyZ2V0VHJhbnNmZXJSYXRlKCk7CisgICAgaWYgKHRhcmdldF9yYXRlLmhhc192YWx1ZSgp
KSB7CisgICAgICByZXR1cm4gdGFyZ2V0X3JhdGUtPm5ldHdvcmtfZXN0aW1hdGUucm91bmRfdHJp
cF90aW1lLm1zKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7CisgIH0KICAgUnRjcE1vZGUgbWV0
aG9kID0gX3J0cFJ0Y3BNb2R1bGUtPlJUQ1AoKTsKICAgaWYgKG1ldGhvZCA9PSBSdGNwTW9kZTo6
a09mZikgewogICAgIHJldHVybiAwOwpAQCAtNzA1LDYgKzk2MSw4IEBAIGludDY0X3QgQ2hhbm5l
bFJlY2VpdmU6OkdldFJUVCgpIGNvbnN0IHsKICAgaW50NjRfdCBhdmdfcnR0ID0gMDsKICAgaW50
NjRfdCBtYXhfcnR0ID0gMDsKICAgaW50NjRfdCBtaW5fcnR0ID0gMDsKKyAgLy8gVE9ETyhuaXNz
ZSk6IFRoaXMgbWV0aG9kIGNvbXB1dGVzIFJUVCBiYXNlZCBvbiBzZW5kZXIgcmVwb3J0cywgZXZl
biB0aG91Z2gKKyAgLy8gYSByZWNlaXZlIHN0cmVhbSBpcyBub3Qgc3VwcG9zZWQgdG8gZG8gdGhh
dC4KICAgaWYgKF9ydHBSdGNwTW9kdWxlLT5SVFQocmVtb3RlX3NzcmNfLCAmcnR0LCAmYXZnX3J0
dCwgJm1pbl9ydHQsICZtYXhfcnR0KSAhPQogICAgICAgMCkgewogICAgIHJldHVybiAwOwpAQCAt
NzEyLDUgKzk3MCwyOSBAQCBpbnQ2NF90IENoYW5uZWxSZWNlaXZlOjpHZXRSVFQoKSBjb25zdCB7
CiAgIHJldHVybiBydHQ7CiB9CiAKK30gIC8vIG5hbWVzcGFjZQorCitzdGQ6OnVuaXF1ZV9wdHI8
Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2U+IENyZWF0ZUNoYW5uZWxSZWNlaXZlKAorICAgIFByb2Nl
c3NUaHJlYWQqIG1vZHVsZV9wcm9jZXNzX3RocmVhZCwKKyAgICBBdWRpb0RldmljZU1vZHVsZSog
YXVkaW9fZGV2aWNlX21vZHVsZSwKKyAgICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFf
dHJhbnNwb3J0LAorICAgIFRyYW5zcG9ydCogcnRjcF9zZW5kX3RyYW5zcG9ydCwKKyAgICBSdGNF
dmVudExvZyogcnRjX2V2ZW50X2xvZywKKyAgICB1aW50MzJfdCByZW1vdGVfc3NyYywKKyAgICBz
aXplX3Qgaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cywKKyAgICBib29sIGppdHRlcl9idWZmZXJf
ZmFzdF9wbGF5b3V0LAorICAgIGludCBqaXR0ZXJfYnVmZmVyX21pbl9kZWxheV9tcywKKyAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gZGVjb2Rlcl9mYWN0b3J5LAor
ICAgIGFic2w6Om9wdGlvbmFsPEF1ZGlvQ29kZWNQYWlySWQ+IGNvZGVjX3BhaXJfaWQsCisgICAg
cnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0
b3IsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykgewor
ICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8Q2hhbm5lbFJlY2VpdmU+KAorICAgICAgbW9kdWxl
X3Byb2Nlc3NfdGhyZWFkLCBhdWRpb19kZXZpY2VfbW9kdWxlLCBtZWRpYV90cmFuc3BvcnQsCisg
ICAgICBydGNwX3NlbmRfdHJhbnNwb3J0LCBydGNfZXZlbnRfbG9nLCByZW1vdGVfc3NyYywKKyAg
ICAgIGppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMsIGppdHRlcl9idWZmZXJfZmFzdF9wbGF5b3V0
LAorICAgICAgaml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMsIGRlY29kZXJfZmFjdG9yeSwgY29k
ZWNfcGFpcl9pZCwKKyAgICAgIGZyYW1lX2RlY3J5cHRvciwgY3J5cHRvX29wdGlvbnMpOworfQor
CiB9ICAvLyBuYW1lc3BhY2Ugdm9lCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVs
X3JlY2VpdmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1
ZGlvL2NoYW5uZWxfcmVjZWl2ZS5oCmluZGV4IDgyZWI0ZGZmMGM0YjU1NzQ5YTNmZTY5NjY1YTEz
N2RkNGYzM2IzOTcuLjkwMjc2MjM0YTEzN2ExNmMyOWFiMTQzOTZkMDgxNzNhNmJiZDE3MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlv
L2NoYW5uZWxfcmVjZWl2ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5oCkBAIC0xNywyMiArMTcsMTggQEAKIAog
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXVkaW8vYXVk
aW9fbWl4ZXIuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXJfZmFj
dG9yeS5oIgogI2luY2x1ZGUgImFwaS9jYWxsL2F1ZGlvX3NpbmsuaCIKICNpbmNsdWRlICJhcGkv
Y2FsbC90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIK
KyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImFw
aS9ydHByZWNlaXZlcmludGVyZmFjZS5oIgotI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX2xldmVsLmgi
CisjaW5jbHVkZSAiY2FsbC9ydHBfcGFja2V0X3NpbmtfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
Y2FsbC9zeW5jYWJsZS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1
aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRp
b19jb2RpbmdfbW9kdWxlLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3Jl
bW90ZV9udHBfdGltZV9lc3RpbWF0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2lu
Y2x1ZGUvcnRwX2hlYWRlcl9wYXJzZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2lu
Y2x1ZGUvcnRwX3J0Y3AuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9jb250
cmlidXRpbmdfc291cmNlcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCiAKIC8vIFRPRE8oc29sZW5i
ZXJnLCBuaXNzZSk6IFRoaXMgZmlsZSBjb250YWlucyBhIGZldyBOT0xJTlQgbWFya3MsIHRvIHNp
bGVuY2UKLS8vIHdhcm5pbmdzIGFib3V0IHVzZSBvZiB1bnNpZ25lZCBzaG9ydCwgYW5kIG5vbi1j
b25zdCByZWZlcmVuY2UgYXJndW1lbnRzLgorLy8gd2FybmluZ3MgYWJvdXQgdXNlIG9mIHVuc2ln
bmVkIHNob3J0LgogLy8gVGhlc2UgbmVlZCBjbGVhbnVwLCBpbiBhIHNlcGFyYXRlIGNsLgogCiBu
YW1lc3BhY2UgcnRjIHsKQEAgLTY2LDIwMSArNjIsODUgQEAgc3RydWN0IENhbGxSZWNlaXZlU3Rh
dGlzdGljcyB7CiAKIG5hbWVzcGFjZSB2b2UgewogCi1jbGFzcyBDaGFubmVsU2VuZDsKK2NsYXNz
IENoYW5uZWxTZW5kSW50ZXJmYWNlOwogCi0vLyBIZWxwZXIgY2xhc3MgdG8gc2ltcGxpZnkgbG9j
a2luZyBzY2hlbWUgZm9yIG1lbWJlcnMgdGhhdCBhcmUgYWNjZXNzZWQgZnJvbQotLy8gbXVsdGlw
bGUgdGhyZWFkcy4KLS8vIEV4YW1wbGU6IGEgbWVtYmVyIGNhbiBiZSBzZXQgb24gdGhyZWFkIFQx
IGFuZCByZWFkIGJ5IGFuIGludGVybmFsIGF1ZGlvCi0vLyB0aHJlYWQgVDIuIEFjY2Vzc2luZyB0
aGUgbWVtYmVyIHZpYSB0aGlzIGNsYXNzIGVuc3VyZXMgdGhhdCB3ZSBhcmUKLS8vIHNhZmUgYW5k
IGFsc28gYXZvaWQgVFNhbiB2MiB3YXJuaW5ncy4KLWNsYXNzIENoYW5uZWxSZWNlaXZlU3RhdGUg
ewotIHB1YmxpYzoKLSAgc3RydWN0IFN0YXRlIHsKLSAgICBib29sIHBsYXlpbmcgPSBmYWxzZTsK
LSAgfTsKLQotICBDaGFubmVsUmVjZWl2ZVN0YXRlKCkge30KLSAgdmlydHVhbCB+Q2hhbm5lbFJl
Y2VpdmVTdGF0ZSgpIHt9Ci0KLSAgdm9pZCBSZXNldCgpIHsKLSAgICBydGM6OkNyaXRTY29wZSBs
b2NrKCZsb2NrXyk7Ci0gICAgc3RhdGVfID0gU3RhdGUoKTsKLSAgfQotCi0gIFN0YXRlIEdldCgp
IGNvbnN0IHsKLSAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZsb2NrXyk7Ci0gICAgcmV0dXJuIHN0
YXRlXzsKLSAgfQotCi0gIHZvaWQgU2V0UGxheWluZyhib29sIGVuYWJsZSkgewotICAgIHJ0Yzo6
Q3JpdFNjb3BlIGxvY2soJmxvY2tfKTsKLSAgICBzdGF0ZV8ucGxheWluZyA9IGVuYWJsZTsKLSAg
fQorLy8gSW50ZXJmYWNlIGNsYXNzIG5lZWRlZCBmb3IgQXVkaW9SZWNlaXZlU3RyZWFtIHRlc3Rz
IHRoYXQgdXNlIGEKKy8vIE1vY2tDaGFubmVsUmVjZWl2ZS4KIAotIHByaXZhdGU6Ci0gIHJ0Yzo6
Q3JpdGljYWxTZWN0aW9uIGxvY2tfOwotICBTdGF0ZSBzdGF0ZV87Ci19OwotCi1jbGFzcyBDaGFu
bmVsUmVjZWl2ZSA6IHB1YmxpYyBSdHBEYXRhIHsKK2NsYXNzIENoYW5uZWxSZWNlaXZlSW50ZXJm
YWNlIDogcHVibGljIFJ0cFBhY2tldFNpbmtJbnRlcmZhY2UgewogIHB1YmxpYzoKLSAgLy8gVXNl
ZCBmb3IgcmVjZWl2ZSBzdHJlYW1zLgotICBDaGFubmVsUmVjZWl2ZShQcm9jZXNzVGhyZWFkKiBt
b2R1bGVfcHJvY2Vzc190aHJlYWQsCi0gICAgICAgICAgICAgICAgIEF1ZGlvRGV2aWNlTW9kdWxl
KiBhdWRpb19kZXZpY2VfbW9kdWxlLAotICAgICAgICAgICAgICAgICBUcmFuc3BvcnQqIHJ0Y3Bf
c2VuZF90cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgIFJ0Y0V2ZW50TG9nKiBydGNfZXZlbnRf
bG9nLAotICAgICAgICAgICAgICAgICB1aW50MzJfdCByZW1vdGVfc3NyYywKLSAgICAgICAgICAg
ICAgICAgc2l6ZV90IGppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMsCi0gICAgICAgICAgICAgICAg
IGJvb2wgaml0dGVyX2J1ZmZlcl9mYXN0X3BsYXlvdXQsCi0gICAgICAgICAgICAgICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBkZWNvZGVyX2ZhY3RvcnksCi0gICAg
ICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPEF1ZGlvQ29kZWNQYWlySWQ+IGNvZGVjX3BhaXJf
aWQsCi0gICAgICAgICAgICAgICAgIEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9kZWNy
eXB0b3IpOwotICB2aXJ0dWFsIH5DaGFubmVsUmVjZWl2ZSgpOworICB2aXJ0dWFsIH5DaGFubmVs
UmVjZWl2ZUludGVyZmFjZSgpID0gZGVmYXVsdDsKIAotICB2b2lkIFNldFNpbmsoQXVkaW9TaW5r
SW50ZXJmYWNlKiBzaW5rKTsKKyAgdmlydHVhbCB2b2lkIFNldFNpbmsoQXVkaW9TaW5rSW50ZXJm
YWNlKiBzaW5rKSA9IDA7CiAKLSAgdm9pZCBTZXRSZWNlaXZlQ29kZWNzKGNvbnN0IHN0ZDo6bWFw
PGludCwgU2RwQXVkaW9Gb3JtYXQ+JiBjb2RlY3MpOworICB2aXJ0dWFsIHZvaWQgU2V0UmVjZWl2
ZUNvZGVjcygKKyAgICAgIGNvbnN0IHN0ZDo6bWFwPGludCwgU2RwQXVkaW9Gb3JtYXQ+JiBjb2Rl
Y3MpID0gMDsKIAotICAvLyBBUEkgbWV0aG9kcworICB2aXJ0dWFsIHZvaWQgU3RhcnRQbGF5b3V0
KCkgPSAwOworICB2aXJ0dWFsIHZvaWQgU3RvcFBsYXlvdXQoKSA9IDA7CiAKLSAgLy8gVm9FQmFz
ZQotICBpbnQzMl90IFN0YXJ0UGxheW91dCgpOwotICBpbnQzMl90IFN0b3BQbGF5b3V0KCk7Cisg
IHZpcnR1YWwgYm9vbCBHZXRSZWNDb2RlYyhDb2RlY0luc3QqIGNvZGVjKSBjb25zdCA9IDA7CiAK
LSAgLy8gQ29kZWNzCi0gIGludDMyX3QgR2V0UmVjQ29kZWMoQ29kZWNJbnN0JiBjb2RlYyk7ICAv
LyBOT0xJTlQKKyAgdmlydHVhbCBib29sIFJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSA9IDA7CiAKLSAgLy8gVE9ETyhuaXNzZSwgc29sZW5iZXJn
KTogRGVsZXRlIHdoZW4gVm9FTmV0d29yayBpcyBkZWxldGVkLgotICBpbnQzMl90IFJlY2VpdmVk
UlRDUFBhY2tldChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKLSAgdm9pZCBP
blJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KTsKLQotICAvLyBNdXRp
bmcsIFZvbHVtZSBhbmQgTGV2ZWwuCi0gIHZvaWQgU2V0Q2hhbm5lbE91dHB1dFZvbHVtZVNjYWxp
bmcoZmxvYXQgc2NhbGluZyk7Ci0gIGludCBHZXRTcGVlY2hPdXRwdXRMZXZlbEZ1bGxSYW5nZSgp
IGNvbnN0OworICB2aXJ0dWFsIHZvaWQgU2V0Q2hhbm5lbE91dHB1dFZvbHVtZVNjYWxpbmcoZmxv
YXQgc2NhbGluZykgPSAwOworICB2aXJ0dWFsIGludCBHZXRTcGVlY2hPdXRwdXRMZXZlbEZ1bGxS
YW5nZSgpIGNvbnN0ID0gMDsKICAgLy8gU2VlIGRlc2NyaXB0aW9uIG9mICJ0b3RhbEF1ZGlvRW5l
cmd5IiBpbiB0aGUgV2ViUlRDIHN0YXRzIHNwZWM6CiAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by93ZWJydGMtc3RhdHMvI2RvbS1ydGNtZWRpYXN0cmVhbXRyYWNrc3RhdHMtdG90YWxhdWRpb2Vu
ZXJneQotICBkb3VibGUgR2V0VG90YWxPdXRwdXRFbmVyZ3koKSBjb25zdDsKLSAgZG91YmxlIEdl
dFRvdGFsT3V0cHV0RHVyYXRpb24oKSBjb25zdDsKKyAgdmlydHVhbCBkb3VibGUgR2V0VG90YWxP
dXRwdXRFbmVyZ3koKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgZG91YmxlIEdldFRvdGFsT3V0cHV0
RHVyYXRpb24oKSBjb25zdCA9IDA7CiAKICAgLy8gU3RhdHMuCi0gIGludCBHZXROZXR3b3JrU3Rh
dGlzdGljcyhOZXR3b3JrU3RhdGlzdGljcyYgc3RhdHMpOyAgLy8gTk9MSU5UCi0gIHZvaWQgR2V0
RGVjb2RpbmdDYWxsU3RhdGlzdGljcyhBdWRpb0RlY29kaW5nQ2FsbFN0YXRzKiBzdGF0cykgY29u
c3Q7CisgIHZpcnR1YWwgTmV0d29ya1N0YXRpc3RpY3MgR2V0TmV0d29ya1N0YXRpc3RpY3MoKSBj
b25zdCA9IDA7CisgIHZpcnR1YWwgQXVkaW9EZWNvZGluZ0NhbGxTdGF0cyBHZXREZWNvZGluZ0Nh
bGxTdGF0aXN0aWNzKCkgY29uc3QgPSAwOwogCiAgIC8vIEF1ZGlvK1ZpZGVvIFN5bmMuCi0gIHVp
bnQzMl90IEdldERlbGF5RXN0aW1hdGUoKSBjb25zdDsKLSAgaW50IFNldE1pbmltdW1QbGF5b3V0
RGVsYXkoaW50IGRlbGF5TXMpOwotICBpbnQgR2V0UGxheW91dFRpbWVzdGFtcCh1bnNpZ25lZCBp
bnQmIHRpbWVzdGFtcCk7ICAvLyBOT0xJTlQKKyAgdmlydHVhbCB1aW50MzJfdCBHZXREZWxheUVz
dGltYXRlKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIHZvaWQgU2V0TWluaW11bVBsYXlvdXREZWxh
eShpbnQgZGVsYXlfbXMpID0gMDsKKyAgdmlydHVhbCB1aW50MzJfdCBHZXRQbGF5b3V0VGltZXN0
YW1wKCkgY29uc3QgPSAwOwogCiAgIC8vIFByb2R1Y2VzIHRoZSB0cmFuc3BvcnQtcmVsYXRlZCB0
aW1lc3RhbXBzOyBjdXJyZW50X2RlbGF5X21zIGlzIGxlZnQgdW5zZXQuCi0gIGFic2w6Om9wdGlv
bmFsPFN5bmNhYmxlOjpJbmZvPiBHZXRTeW5jSW5mbygpIGNvbnN0OworICB2aXJ0dWFsIGFic2w6
Om9wdGlvbmFsPFN5bmNhYmxlOjpJbmZvPiBHZXRTeW5jSW5mbygpIGNvbnN0ID0gMDsKIAogICAv
LyBSVFArUlRDUAotICBpbnQgU2V0TG9jYWxTU1JDKHVuc2lnbmVkIGludCBzc3JjKTsKLQotICB2
b2lkIFJlZ2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoUGFja2V0Um91dGVy
KiBwYWNrZXRfcm91dGVyKTsKLSAgdm9pZCBSZXNldFJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xP
YmplY3RzKCk7CisgIHZpcnR1YWwgdm9pZCBTZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYykgPSAw
OwogCi0gIGludCBHZXRSVFBTdGF0aXN0aWNzKENhbGxSZWNlaXZlU3RhdGlzdGljcyYgc3RhdHMp
OyAgLy8gTk9MSU5UCi0gIHZvaWQgU2V0TkFDS1N0YXR1cyhib29sIGVuYWJsZSwgaW50IG1heE51
bWJlck9mUGFja2V0cyk7CisgIHZpcnR1YWwgdm9pZCBSZWdpc3RlclJlY2VpdmVyQ29uZ2VzdGlv
bkNvbnRyb2xPYmplY3RzKAorICAgICAgUGFja2V0Um91dGVyKiBwYWNrZXRfcm91dGVyKSA9IDA7
CisgIHZpcnR1YWwgdm9pZCBSZXNldFJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCkg
PSAwOwogCi0gIC8vIEZyb20gUnRwRGF0YSBpbiB0aGUgUlRQL1JUQ1AgbW9kdWxlCi0gIGludDMy
X3QgT25SZWNlaXZlZFBheWxvYWREYXRhKGNvbnN0IHVpbnQ4X3QqIHBheWxvYWREYXRhLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZFNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciogcnRwSGVhZGVy
KSBvdmVycmlkZTsKKyAgdmlydHVhbCBDYWxsUmVjZWl2ZVN0YXRpc3RpY3MgR2V0UlRDUFN0YXRp
c3RpY3MoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgdm9pZCBTZXROQUNLU3RhdHVzKGJvb2wgZW5h
YmxlLCBpbnQgbWF4X3BhY2tldHMpID0gMDsKIAotICAvLyBGcm9tIEF1ZGlvTWl4ZXI6OlNvdXJj
ZS4KLSAgQXVkaW9NaXhlcjo6U291cmNlOjpBdWRpb0ZyYW1lSW5mbyBHZXRBdWRpb0ZyYW1lV2l0
aEluZm8oCisgIHZpcnR1YWwgQXVkaW9NaXhlcjo6U291cmNlOjpBdWRpb0ZyYW1lSW5mbyBHZXRB
dWRpb0ZyYW1lV2l0aEluZm8oCiAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHosCi0gICAgICBBdWRp
b0ZyYW1lKiBhdWRpb19mcmFtZSk7CisgICAgICBBdWRpb0ZyYW1lKiBhdWRpb19mcmFtZSkgPSAw
OwogCi0gIGludCBQcmVmZXJyZWRTYW1wbGVSYXRlKCkgY29uc3Q7CisgIHZpcnR1YWwgaW50IFBy
ZWZlcnJlZFNhbXBsZVJhdGUoKSBjb25zdCA9IDA7CiAKICAgLy8gQXNzb2NpYXRlIHRvIGEgc2Vu
ZCBjaGFubmVsLgogICAvLyBVc2VkIGZvciBvYnRhaW5pbmcgUlRUIGZvciBhIHJlY2VpdmUtb25s
eSBjaGFubmVsLgotICB2b2lkIFNldEFzc29jaWF0ZWRTZW5kQ2hhbm5lbChDaGFubmVsU2VuZCog
Y2hhbm5lbCk7Ci0KLSAgc3RkOjp2ZWN0b3I8UnRwU291cmNlPiBHZXRTb3VyY2VzKCkgY29uc3Q7
Ci0KLSBwcml2YXRlOgotICB2b2lkIEluaXQoKTsKLSAgdm9pZCBUZXJtaW5hdGUoKTsKLQotICBp
bnQgR2V0UmVtb3RlU1NSQyh1bnNpZ25lZCBpbnQmIHNzcmMpOyAgLy8gTk9MSU5UCi0KLSAgYm9v
bCBSZWNlaXZlUGFja2V0KGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBwYWNrZXRfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgUlRQ
SGVhZGVyJiBoZWFkZXIpOwotICBpbnQgUmVzZW5kUGFja2V0cyhjb25zdCB1aW50MTZfdCogc2Vx
dWVuY2VfbnVtYmVycywgaW50IGxlbmd0aCk7Ci0gIHZvaWQgVXBkYXRlUGxheW91dFRpbWVzdGFt
cChib29sIHJ0Y3ApOwotCi0gIGludCBHZXRSdHBUaW1lc3RhbXBSYXRlSHooKSBjb25zdDsKLSAg
aW50NjRfdCBHZXRSVFQoKSBjb25zdDsKLQotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBfY2FsbGJh
Y2tDcml0U2VjdDsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gdm9sdW1lX3NldHRpbmdzX2NyaXRz
ZWN0XzsKLQotICBDaGFubmVsUmVjZWl2ZVN0YXRlIGNoYW5uZWxfc3RhdGVfOwotCi0gIFJ0Y0V2
ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOworICB2aXJ0dWFsIHZvaWQgU2V0QXNzb2NpYXRlZFNl
bmRDaGFubmVsKAorICAgICAgY29uc3QgQ2hhbm5lbFNlbmRJbnRlcmZhY2UqIGNoYW5uZWwpID0g
MDsKIAotICAvLyBJbmRleGVkIGJ5IHBheWxvYWQgdHlwZS4KLSAgc3RkOjptYXA8dWludDhfdCwg
aW50PiBwYXlsb2FkX3R5cGVfZnJlcXVlbmNpZXNfOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxSZWNl
aXZlU3RhdGlzdGljcz4gcnRwX3JlY2VpdmVfc3RhdGlzdGljc187Ci0gIHN0ZDo6dW5pcXVlX3B0
cjxSdHBSdGNwPiBfcnRwUnRjcE1vZHVsZTsKLSAgY29uc3QgdWludDMyX3QgcmVtb3RlX3NzcmNf
OwotCi0gIC8vIEluZm8gZm9yIEdldFNvdXJjZXMgYW5kIEdldFN5bmNJbmZvIGlzIHVwZGF0ZWQg
b24gbmV0d29yayBvciB3b3JrZXIgdGhyZWFkLAotICAvLyBxdWVyaWVkIG9uIHRoZSB3b3JrZXIg
dGhyZWFkLgotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBydHBfc291cmNlc19sb2NrXzsKLSAgQ29u
dHJpYnV0aW5nU291cmNlcyBjb250cmlidXRpbmdfc291cmNlc18gUlRDX0dVQVJERURfQlkoJnJ0
cF9zb3VyY2VzX2xvY2tfKTsKLSAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGxhc3RfcmVjZWl2
ZWRfcnRwX3RpbWVzdGFtcF8KLSAgICAgIFJUQ19HVUFSREVEX0JZKCZydHBfc291cmNlc19sb2Nr
Xyk7Ci0gIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGxhc3RfcmVjZWl2ZWRfcnRwX3N5c3RlbV90
aW1lX21zXwotICAgICAgUlRDX0dVQVJERURfQlkoJnJ0cF9zb3VyY2VzX2xvY2tfKTsKLSAgYWJz
bDo6b3B0aW9uYWw8dWludDhfdD4gbGFzdF9yZWNlaXZlZF9ydHBfYXVkaW9fbGV2ZWxfCi0gICAg
ICBSVENfR1VBUkRFRF9CWSgmcnRwX3NvdXJjZXNfbG9ja18pOwotCi0gIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb0NvZGluZ01vZHVsZT4gYXVkaW9fY29kaW5nXzsKLSAgQXVkaW9TaW5rSW50ZXJmYWNl
KiBhdWRpb19zaW5rXyA9IG51bGxwdHI7Ci0gIEF1ZGlvTGV2ZWwgX291dHB1dEF1ZGlvTGV2ZWw7
Ci0KLSAgUmVtb3RlTnRwVGltZUVzdGltYXRvciBudHBfZXN0aW1hdG9yXyBSVENfR1VBUkRFRF9C
WSh0c19zdGF0c19sb2NrXyk7Ci0KLSAgLy8gVGltZXN0YW1wIG9mIHRoZSBhdWRpbyBwdWxsZWQg
ZnJvbSBOZXRFcS4KLSAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGppdHRlcl9idWZmZXJfcGxh
eW91dF90aW1lc3RhbXBfOwotCi0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHZpZGVvX3N5bmNfbG9j
a187Ci0gIHVpbnQzMl90IHBsYXlvdXRfdGltZXN0YW1wX3J0cF8gUlRDX0dVQVJERURfQlkodmlk
ZW9fc3luY19sb2NrXyk7Ci0gIHVpbnQzMl90IHBsYXlvdXRfZGVsYXlfbXNfIFJUQ19HVUFSREVE
X0JZKHZpZGVvX3N5bmNfbG9ja18pOwotCi0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHRzX3N0YXRz
X2xvY2tfOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRpbWVzdGFtcFdyYXBBcm91bmRIYW5k
bGVyPiBydHBfdHNfd3JhcGFyb3VuZF9oYW5kbGVyXzsKLSAgLy8gVGhlIHJ0cCB0aW1lc3RhbXAg
b2YgdGhlIGZpcnN0IHBsYXllZCBvdXQgYXVkaW8gZnJhbWUuCi0gIGludDY0X3QgY2FwdHVyZV9z
dGFydF9ydHBfdGltZV9zdGFtcF87Ci0gIC8vIFRoZSBjYXB0dXJlIG50cCB0aW1lIChpbiBsb2Nh
bCB0aW1lYmFzZSkgb2YgdGhlIGZpcnN0IHBsYXllZCBvdXQgYXVkaW8KLSAgLy8gZnJhbWUuCi0g
IGludDY0X3QgY2FwdHVyZV9zdGFydF9udHBfdGltZV9tc18gUlRDX0dVQVJERURfQlkodHNfc3Rh
dHNfbG9ja18pOwotCi0gIC8vIHVzZXMKLSAgUHJvY2Vzc1RocmVhZCogX21vZHVsZVByb2Nlc3NU
aHJlYWRQdHI7Ci0gIEF1ZGlvRGV2aWNlTW9kdWxlKiBfYXVkaW9EZXZpY2VNb2R1bGVQdHI7Ci0g
IGZsb2F0IF9vdXRwdXRHYWluIFJUQ19HVUFSREVEX0JZKHZvbHVtZV9zZXR0aW5nc19jcml0c2Vj
dF8pOwotCi0gIC8vIEFuIGFzc29jaWF0ZWQgc2VuZCBjaGFubmVsLgotICBydGM6OkNyaXRpY2Fs
U2VjdGlvbiBhc3NvY19zZW5kX2NoYW5uZWxfbG9ja187Ci0gIENoYW5uZWxTZW5kKiBhc3NvY2lh
dGVkX3NlbmRfY2hhbm5lbF8KLSAgICAgIFJUQ19HVUFSREVEX0JZKGFzc29jX3NlbmRfY2hhbm5l
bF9sb2NrXyk7Ci0KLSAgUGFja2V0Um91dGVyKiBwYWNrZXRfcm91dGVyXyA9IG51bGxwdHI7Ci0K
LSAgcnRjOjpUaHJlYWRDaGVja2VyIGNvbnN0cnVjdGlvbl90aHJlYWRfOwotCi0gIC8vIEUyRUUg
QXVkaW8gRnJhbWUgRGVjcnlwdGlvbgotICBGcmFtZURlY3J5cHRvckludGVyZmFjZSogZnJhbWVf
ZGVjcnlwdG9yXyA9IG51bGxwdHI7CisgIHZpcnR1YWwgc3RkOjp2ZWN0b3I8UnRwU291cmNlPiBH
ZXRTb3VyY2VzKCkgY29uc3QgPSAwOwogfTsKIAorc3RkOjp1bmlxdWVfcHRyPENoYW5uZWxSZWNl
aXZlSW50ZXJmYWNlPiBDcmVhdGVDaGFubmVsUmVjZWl2ZSgKKyAgICBQcm9jZXNzVGhyZWFkKiBt
b2R1bGVfcHJvY2Vzc190aHJlYWQsCisgICAgQXVkaW9EZXZpY2VNb2R1bGUqIGF1ZGlvX2Rldmlj
ZV9tb2R1bGUsCisgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCwK
KyAgICBUcmFuc3BvcnQqIHJ0Y3Bfc2VuZF90cmFuc3BvcnQsCisgICAgUnRjRXZlbnRMb2cqIHJ0
Y19ldmVudF9sb2csCisgICAgdWludDMyX3QgcmVtb3RlX3NzcmMsCisgICAgc2l6ZV90IGppdHRl
cl9idWZmZXJfbWF4X3BhY2tldHMsCisgICAgYm9vbCBqaXR0ZXJfYnVmZmVyX2Zhc3RfcGxheW91
dCwKKyAgICBpbnQgaml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMsCisgICAgcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGRlY29kZXJfZmFjdG9yeSwKKyAgICBhYnNsOjpv
cHRpb25hbDxBdWRpb0NvZGVjUGFpcklkPiBjb2RlY19wYWlyX2lkLAorICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yLAorICAgIGNv
bnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpOworCiB9ICAvLyBuYW1l
c3BhY2Ugdm9lCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZV9w
cm94eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlv
L2NoYW5uZWxfcmVjZWl2ZV9wcm94eS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YjFjMWM0NTgzMjZhYzlhZDkyZjJlNTkzODNmMDQxMzdjODljNjI5NS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3JlY2VpdmVfcHJveHkuY2MKKysrIC9kZXYv
bnVsbApAQCAtMSwxOTcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRl
ICJhdWRpby9jaGFubmVsX3JlY2VpdmVfcHJveHkuaCIKLQotI2luY2x1ZGUgPHV0aWxpdHk+Ci0K
LSNpbmNsdWRlICJhcGkvY2FsbC9hdWRpb19zaW5rLmgiCi0jaW5jbHVkZSAiYXVkaW8vY2hhbm5l
bF9zZW5kX3Byb3h5LmgiCi0jaW5jbHVkZSAiY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJf
c2VuZF9pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9t
aW5tYXguaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2Ugdm9lIHsKLUNoYW5uZWxS
ZWNlaXZlUHJveHk6OkNoYW5uZWxSZWNlaXZlUHJveHkoKSB7fQotCi1DaGFubmVsUmVjZWl2ZVBy
b3h5OjpDaGFubmVsUmVjZWl2ZVByb3h5KAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDaGFubmVsUmVj
ZWl2ZT4gY2hhbm5lbCkKLSAgICA6IGNoYW5uZWxfKHN0ZDo6bW92ZShjaGFubmVsKSkgewotICBS
VENfRENIRUNLKGNoYW5uZWxfKTsKLSAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkRl
dGFjaEZyb21UaHJlYWQoKTsKLX0KLQotQ2hhbm5lbFJlY2VpdmVQcm94eTo6fkNoYW5uZWxSZWNl
aXZlUHJveHkoKSB7fQotCi12b2lkIENoYW5uZWxSZWNlaXZlUHJveHk6OlNldExvY2FsU1NSQyh1
aW50MzJfdCBzc3JjKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxs
ZWRPblZhbGlkVGhyZWFkKCkpOwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+U2V0TG9jYWxTU1JD
KHNzcmMpOwotICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKLX0KLQotdm9pZCBDaGFubmVsUmVj
ZWl2ZVByb3h5OjpTZXROQUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4X3BhY2tldHMpIHsK
LSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQo
KSk7Ci0gIGNoYW5uZWxfLT5TZXROQUNLU3RhdHVzKGVuYWJsZSwgbWF4X3BhY2tldHMpOwotfQot
Ci1DYWxsUmVjZWl2ZVN0YXRpc3RpY3MgQ2hhbm5lbFJlY2VpdmVQcm94eTo6R2V0UlRDUFN0YXRp
c3RpY3MoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxs
ZWRPblZhbGlkVGhyZWFkKCkpOwotICBDYWxsUmVjZWl2ZVN0YXRpc3RpY3Mgc3RhdHMgPSB7MH07
Ci0gIGludCBlcnJvciA9IGNoYW5uZWxfLT5HZXRSVFBTdGF0aXN0aWNzKHN0YXRzKTsKLSAgUlRD
X0RDSEVDS19FUSgwLCBlcnJvcik7Ci0gIHJldHVybiBzdGF0czsKLX0KLQotYm9vbCBDaGFubmVs
UmVjZWl2ZVByb3h5OjpSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3QgdWludDhfdCogcGFja2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0
aCkgewotICAvLyBNYXkgYmUgY2FsbGVkIG9uIGVpdGhlciB3b3JrZXIgdGhyZWFkIG9yIG5ldHdv
cmsgdGhyZWFkLgotICByZXR1cm4gY2hhbm5lbF8tPlJlY2VpdmVkUlRDUFBhY2tldChwYWNrZXQs
IGxlbmd0aCkgPT0gMDsKLX0KLQotdm9pZCBDaGFubmVsUmVjZWl2ZVByb3h5OjpSZWdpc3RlclJl
Y2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKAotICAgIFBhY2tldFJvdXRlciogcGFja2V0
X3JvdXRlcikgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25W
YWxpZFRocmVhZCgpKTsKLSAgY2hhbm5lbF8tPlJlZ2lzdGVyUmVjZWl2ZXJDb25nZXN0aW9uQ29u
dHJvbE9iamVjdHMocGFja2V0X3JvdXRlcik7Ci19Ci0KLXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94
eTo6UmVzZXRSZWNlaXZlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpIHsKLSAgUlRDX0RDSEVD
Syh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5u
ZWxfLT5SZXNldFJlY2VpdmVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCk7Ci19Ci0KLU5ldHdv
cmtTdGF0aXN0aWNzIENoYW5uZWxSZWNlaXZlUHJveHk6OkdldE5ldHdvcmtTdGF0aXN0aWNzKCkg
Y29uc3QgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxp
ZFRocmVhZCgpKTsKLSAgTmV0d29ya1N0YXRpc3RpY3Mgc3RhdHMgPSB7MH07Ci0gIGludCBlcnJv
ciA9IGNoYW5uZWxfLT5HZXROZXR3b3JrU3RhdGlzdGljcyhzdGF0cyk7Ci0gIFJUQ19EQ0hFQ0tf
RVEoMCwgZXJyb3IpOwotICByZXR1cm4gc3RhdHM7Ci19Ci0KLUF1ZGlvRGVjb2RpbmdDYWxsU3Rh
dHMgQ2hhbm5lbFJlY2VpdmVQcm94eTo6R2V0RGVjb2RpbmdDYWxsU3RhdGlzdGljcygpIGNvbnN0
IHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJl
YWQoKSk7Ci0gIEF1ZGlvRGVjb2RpbmdDYWxsU3RhdHMgc3RhdHM7Ci0gIGNoYW5uZWxfLT5HZXRE
ZWNvZGluZ0NhbGxTdGF0aXN0aWNzKCZzdGF0cyk7Ci0gIHJldHVybiBzdGF0czsKLX0KLQotaW50
IENoYW5uZWxSZWNlaXZlUHJveHk6OkdldFNwZWVjaE91dHB1dExldmVsRnVsbFJhbmdlKCkgY29u
c3QgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRo
cmVhZCgpKTsKLSAgcmV0dXJuIGNoYW5uZWxfLT5HZXRTcGVlY2hPdXRwdXRMZXZlbEZ1bGxSYW5n
ZSgpOwotfQotCi1kb3VibGUgQ2hhbm5lbFJlY2VpdmVQcm94eTo6R2V0VG90YWxPdXRwdXRFbmVy
Z3koKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRP
blZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5lbF8tPkdldFRvdGFsT3V0cHV0RW5lcmd5
KCk7Ci19Ci0KLWRvdWJsZSBDaGFubmVsUmVjZWl2ZVByb3h5OjpHZXRUb3RhbE91dHB1dER1cmF0
aW9uKCkgY29uc3QgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVk
T25WYWxpZFRocmVhZCgpKTsKLSAgcmV0dXJuIGNoYW5uZWxfLT5HZXRUb3RhbE91dHB1dER1cmF0
aW9uKCk7Ci19Ci0KLXVpbnQzMl90IENoYW5uZWxSZWNlaXZlUHJveHk6OkdldERlbGF5RXN0aW1h
dGUoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRP
blZhbGlkVGhyZWFkKCkgfHwKLSAgICAgICAgICAgICBtb2R1bGVfcHJvY2Vzc190aHJlYWRfY2hl
Y2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgcmV0dXJuIGNoYW5uZWxfLT5HZXREZWxh
eUVzdGltYXRlKCk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6U2V0UmVjZWl2ZUNv
ZGVjcygKLSAgICBjb25zdCBzdGQ6Om1hcDxpbnQsIFNkcEF1ZGlvRm9ybWF0PiYgY29kZWNzKSB7
Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFk
KCkpOwotICBjaGFubmVsXy0+U2V0UmVjZWl2ZUNvZGVjcyhjb2RlY3MpOwotfQotCi12b2lkIENo
YW5uZWxSZWNlaXZlUHJveHk6OlNldFNpbmsoQXVkaW9TaW5rSW50ZXJmYWNlKiBzaW5rKSB7Ci0g
IFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkp
OwotICBjaGFubmVsXy0+U2V0U2luayhzaW5rKTsKLX0KLQotdm9pZCBDaGFubmVsUmVjZWl2ZVBy
b3h5OjpPblJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7Ci0gIC8v
IE1heSBiZSBjYWxsZWQgb24gZWl0aGVyIHdvcmtlciB0aHJlYWQgb3IgbmV0d29yayB0aHJlYWQu
Ci0gIGNoYW5uZWxfLT5PblJ0cFBhY2tldChwYWNrZXQpOwotfQotCi12b2lkIENoYW5uZWxSZWNl
aXZlUHJveHk6OlNldENoYW5uZWxPdXRwdXRWb2x1bWVTY2FsaW5nKGZsb2F0IHNjYWxpbmcpIHsK
LSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQo
KSk7Ci0gIGNoYW5uZWxfLT5TZXRDaGFubmVsT3V0cHV0Vm9sdW1lU2NhbGluZyhzY2FsaW5nKTsK
LX0KLQotQXVkaW9NaXhlcjo6U291cmNlOjpBdWRpb0ZyYW1lSW5mbyBDaGFubmVsUmVjZWl2ZVBy
b3h5OjpHZXRBdWRpb0ZyYW1lV2l0aEluZm8oCi0gICAgaW50IHNhbXBsZV9yYXRlX2h6LAotICAg
IEF1ZGlvRnJhbWUqIGF1ZGlvX2ZyYW1lKSB7Ci0gIFJUQ19EQ0hFQ0tfUlVOU19TRVJJQUxJWkVE
KCZhdWRpb190aHJlYWRfcmFjZV9jaGVja2VyXyk7Ci0gIHJldHVybiBjaGFubmVsXy0+R2V0QXVk
aW9GcmFtZVdpdGhJbmZvKHNhbXBsZV9yYXRlX2h6LCBhdWRpb19mcmFtZSk7Ci19Ci0KLWludCBD
aGFubmVsUmVjZWl2ZVByb3h5OjpQcmVmZXJyZWRTYW1wbGVSYXRlKCkgY29uc3QgewotICBSVENf
RENIRUNLX1JVTlNfU0VSSUFMSVpFRCgmYXVkaW9fdGhyZWFkX3JhY2VfY2hlY2tlcl8pOwotICBy
ZXR1cm4gY2hhbm5lbF8tPlByZWZlcnJlZFNhbXBsZVJhdGUoKTsKLX0KLQotdm9pZCBDaGFubmVs
UmVjZWl2ZVByb3h5OjpBc3NvY2lhdGVTZW5kQ2hhbm5lbCgKLSAgICBjb25zdCBDaGFubmVsU2Vu
ZFByb3h5JiBzZW5kX2NoYW5uZWxfcHJveHkpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFk
X2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRBc3NvY2lh
dGVkU2VuZENoYW5uZWwoc2VuZF9jaGFubmVsX3Byb3h5LkdldENoYW5uZWwoKSk7Ci19Ci0KLXZv
aWQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6RGlzYXNzb2NpYXRlU2VuZENoYW5uZWwoKSB7Ci0gIFJU
Q19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwot
ICBjaGFubmVsXy0+U2V0QXNzb2NpYXRlZFNlbmRDaGFubmVsKG51bGxwdHIpOwotfQotCi1hYnNs
OjpvcHRpb25hbDxTeW5jYWJsZTo6SW5mbz4gQ2hhbm5lbFJlY2VpdmVQcm94eTo6R2V0U3luY0lu
Zm8oKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0sobW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJf
LkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHJldHVybiBjaGFubmVsXy0+R2V0U3luY0luZm8o
KTsKLX0KLQotdWludDMyX3QgQ2hhbm5lbFJlY2VpdmVQcm94eTo6R2V0UGxheW91dFRpbWVzdGFt
cCgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDS19SVU5TX1NFUklBTElaRUQoJnZpZGVvX2NhcHR1cmVf
dGhyZWFkX3JhY2VfY2hlY2tlcl8pOwotICB1bnNpZ25lZCBpbnQgdGltZXN0YW1wID0gMDsKLSAg
aW50IGVycm9yID0gY2hhbm5lbF8tPkdldFBsYXlvdXRUaW1lc3RhbXAodGltZXN0YW1wKTsKLSAg
UlRDX0RDSEVDSyghZXJyb3IgfHwgdGltZXN0YW1wID09IDApOwotICByZXR1cm4gdGltZXN0YW1w
OwotfQotCi12b2lkIENoYW5uZWxSZWNlaXZlUHJveHk6OlNldE1pbmltdW1QbGF5b3V0RGVsYXko
aW50IGRlbGF5X21zKSB7Ci0gIFJUQ19EQ0hFQ0sobW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNr
ZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIC8vIExpbWl0IHRvIHJhbmdlIGFjY2VwdGVk
IGJ5IGJvdGggVm9FIGFuZCBBQ00sIHNvIHdlJ3JlIGF0IGxlYXN0IGdldHRpbmcgYXMKLSAgLy8g
Y2xvc2UgYXMgcG9zc2libGUsIGluc3RlYWQgb2YgZmFpbGluZy4KLSAgZGVsYXlfbXMgPSBydGM6
OlNhZmVDbGFtcChkZWxheV9tcywgMCwgMTAwMDApOwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+
U2V0TWluaW11bVBsYXlvdXREZWxheShkZWxheV9tcyk7Ci0gIGlmICgwICE9IGVycm9yKSB7Ci0g
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRXJyb3Igc2V0dGluZyBtaW5pbXVtIHBsYXlvdXQg
ZGVsYXkuIjsKLSAgfQotfQotCi1ib29sIENoYW5uZWxSZWNlaXZlUHJveHk6OkdldFJlY0NvZGVj
KENvZGVjSW5zdCogY29kZWNfaW5zdCkgY29uc3QgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJl
YWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgcmV0dXJuIGNoYW5uZWxfLT5H
ZXRSZWNDb2RlYygqY29kZWNfaW5zdCkgPT0gMDsKLX0KLQotc3RkOjp2ZWN0b3I8UnRwU291cmNl
PiBDaGFubmVsUmVjZWl2ZVByb3h5OjpHZXRTb3VyY2VzKCkgY29uc3QgewotICBSVENfRENIRUNL
KHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgcmV0dXJu
IGNoYW5uZWxfLT5HZXRTb3VyY2VzKCk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFJlY2VpdmVQcm94eTo6
U3RhcnRQbGF5b3V0KCkgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2Fs
bGVkT25WYWxpZFRocmVhZCgpKTsKLSAgaW50IGVycm9yID0gY2hhbm5lbF8tPlN0YXJ0UGxheW91
dCgpOwotICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKLX0KLQotdm9pZCBDaGFubmVsUmVjZWl2
ZVByb3h5OjpTdG9wUGxheW91dCgpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNr
ZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGludCBlcnJvciA9IGNoYW5uZWxfLT5TdG9w
UGxheW91dCgpOwotICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsKLX0KLX0gIC8vIG5hbWVzcGFj
ZSB2b2UKLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfcmVjZWl2ZV9wcm94eS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5l
bF9yZWNlaXZlX3Byb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlYmFjYzMw
MGRjZmUzYTcyNWU5Yzk0MDkwM2ZkMDhiOWRmYjc1NTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
LSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgQVVESU9fQ0hB
Tk5FTF9SRUNFSVZFX1BST1hZX0hfCi0jZGVmaW5lIEFVRElPX0NIQU5ORUxfUkVDRUlWRV9QUk9Y
WV9IXwotCi0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx2ZWN0
b3I+Ci0KLSNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fbWl4ZXIuaCIKLSNpbmNsdWRlICJhcGkv
cnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhdWRpby9jaGFubmVsX3JlY2VpdmUu
aCIKLSNpbmNsdWRlICJjYWxsL3J0cF9wYWNrZXRfc2lua19pbnRlcmZhY2UuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcmFjZV9j
aGVja2VyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKLQotbmFtZXNw
YWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIEF1ZGlvU2lua0ludGVyZmFjZTsKLWNsYXNzIFBhY2tldFJv
dXRlcjsKLWNsYXNzIFJ0cFBhY2tldFJlY2VpdmVkOwotY2xhc3MgVHJhbnNwb3J0OwotCi1uYW1l
c3BhY2Ugdm9lIHsKLQotY2xhc3MgQ2hhbm5lbFNlbmRQcm94eTsKLQotLy8gVGhpcyBjbGFzcyBw
cm92aWRlcyB0aGUgInZpZXciIG9mIGEgdm9lOjpDaGFubmVsIHRoYXQgd2UgbmVlZCB0byBpbXBs
ZW1lbnQKLS8vIHdlYnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFtLiBJdCBzZXJ2ZXMgdHdvIHB1cnBv
c2VzOgotLy8gIDEuIEFsbG93IG1vY2tpbmcganVzdCB0aGUgaW50ZXJmYWNlcyB1c2VkLCBpbnN0
ZWFkIG9mIHRoZSBlbnRpcmUKLS8vICAgICB2b2U6OkNoYW5uZWwgY2xhc3MuCi0vLyAgMi4gUHJv
dmlkZSBhIHJlZmluZWQgaW50ZXJmYWNlIGZvciB0aGUgc3RyZWFtIGNsYXNzZXMsIGluY2x1ZGlu
ZyBhc3N1bXB0aW9ucwotLy8gICAgIG9uIHJldHVybiB2YWx1ZXMgYW5kIGlucHV0IGFkYXB0YXRp
b24uCi1jbGFzcyBDaGFubmVsUmVjZWl2ZVByb3h5IDogcHVibGljIFJ0cFBhY2tldFNpbmtJbnRl
cmZhY2UgewotIHB1YmxpYzoKLSAgQ2hhbm5lbFJlY2VpdmVQcm94eSgpOwotICBleHBsaWNpdCBD
aGFubmVsUmVjZWl2ZVByb3h5KHN0ZDo6dW5pcXVlX3B0cjxDaGFubmVsUmVjZWl2ZT4gY2hhbm5l
bCk7Ci0gIHZpcnR1YWwgfkNoYW5uZWxSZWNlaXZlUHJveHkoKTsKLQotICAvLyBTaGFyZWQgd2l0
aCBDaGFubmVsU2VuZFByb3h5Ci0gIHZpcnR1YWwgdm9pZCBTZXRMb2NhbFNTUkModWludDMyX3Qg
c3NyYyk7Ci0gIHZpcnR1YWwgdm9pZCBTZXROQUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4
X3BhY2tldHMpOwotICB2aXJ0dWFsIENhbGxSZWNlaXZlU3RhdGlzdGljcyBHZXRSVENQU3RhdGlz
dGljcygpIGNvbnN0OwotICB2aXJ0dWFsIGJvb2wgUmVjZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVp
bnQ4X3QqIHBhY2tldCwgc2l6ZV90IGxlbmd0aCk7Ci0KLSAgdmlydHVhbCB2b2lkIFJlZ2lzdGVy
UmVjZWl2ZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCi0gICAgICBQYWNrZXRSb3V0ZXIqIHBh
Y2tldF9yb3V0ZXIpOwotICB2aXJ0dWFsIHZvaWQgUmVzZXRSZWNlaXZlckNvbmdlc3Rpb25Db250
cm9sT2JqZWN0cygpOwotICB2aXJ0dWFsIE5ldHdvcmtTdGF0aXN0aWNzIEdldE5ldHdvcmtTdGF0
aXN0aWNzKCkgY29uc3Q7Ci0gIHZpcnR1YWwgQXVkaW9EZWNvZGluZ0NhbGxTdGF0cyBHZXREZWNv
ZGluZ0NhbGxTdGF0aXN0aWNzKCkgY29uc3Q7Ci0gIHZpcnR1YWwgaW50IEdldFNwZWVjaE91dHB1
dExldmVsRnVsbFJhbmdlKCkgY29uc3Q7Ci0gIC8vIFNlZSBkZXNjcmlwdGlvbiBvZiAidG90YWxB
dWRpb0VuZXJneSIgaW4gdGhlIFdlYlJUQyBzdGF0cyBzcGVjOgotICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vd2VicnRjLXN0YXRzLyNkb20tcnRjbWVkaWFzdHJlYW10cmFja3N0YXRzLXRvdGFs
YXVkaW9lbmVyZ3kKLSAgdmlydHVhbCBkb3VibGUgR2V0VG90YWxPdXRwdXRFbmVyZ3koKSBjb25z
dDsKLSAgdmlydHVhbCBkb3VibGUgR2V0VG90YWxPdXRwdXREdXJhdGlvbigpIGNvbnN0OwotICB2
aXJ0dWFsIHVpbnQzMl90IEdldERlbGF5RXN0aW1hdGUoKSBjb25zdDsKLSAgdmlydHVhbCB2b2lk
IFNldFJlY2VpdmVDb2RlY3MoY29uc3Qgc3RkOjptYXA8aW50LCBTZHBBdWRpb0Zvcm1hdD4mIGNv
ZGVjcyk7Ci0gIHZpcnR1YWwgdm9pZCBTZXRTaW5rKEF1ZGlvU2lua0ludGVyZmFjZSogc2luayk7
Ci0KLSAgLy8gSW1wbGVtZW50cyBSdHBQYWNrZXRTaW5rSW50ZXJmYWNlCi0gIHZvaWQgT25SdHBQ
YWNrZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgb3ZlcnJpZGU7Ci0KLSAgdmly
dHVhbCB2b2lkIFNldENoYW5uZWxPdXRwdXRWb2x1bWVTY2FsaW5nKGZsb2F0IHNjYWxpbmcpOwot
ICB2aXJ0dWFsIEF1ZGlvTWl4ZXI6OlNvdXJjZTo6QXVkaW9GcmFtZUluZm8gR2V0QXVkaW9GcmFt
ZVdpdGhJbmZvKAotICAgICAgaW50IHNhbXBsZV9yYXRlX2h6LAotICAgICAgQXVkaW9GcmFtZSog
YXVkaW9fZnJhbWUpOwotICB2aXJ0dWFsIGludCBQcmVmZXJyZWRTYW1wbGVSYXRlKCkgY29uc3Q7
Ci0gIHZpcnR1YWwgdm9pZCBBc3NvY2lhdGVTZW5kQ2hhbm5lbChjb25zdCBDaGFubmVsU2VuZFBy
b3h5JiBzZW5kX2NoYW5uZWxfcHJveHkpOwotICB2aXJ0dWFsIHZvaWQgRGlzYXNzb2NpYXRlU2Vu
ZENoYW5uZWwoKTsKLQotICAvLyBQcm9kdWNlcyB0aGUgdHJhbnNwb3J0LXJlbGF0ZWQgdGltZXN0
YW1wczsgY3VycmVudF9kZWxheV9tcyBpcyBsZWZ0IHVuc2V0LgotICBhYnNsOjpvcHRpb25hbDxT
eW5jYWJsZTo6SW5mbz4gR2V0U3luY0luZm8oKSBjb25zdDsKLSAgdmlydHVhbCB1aW50MzJfdCBH
ZXRQbGF5b3V0VGltZXN0YW1wKCkgY29uc3Q7Ci0gIHZpcnR1YWwgdm9pZCBTZXRNaW5pbXVtUGxh
eW91dERlbGF5KGludCBkZWxheV9tcyk7Ci0gIHZpcnR1YWwgYm9vbCBHZXRSZWNDb2RlYyhDb2Rl
Y0luc3QqIGNvZGVjX2luc3QpIGNvbnN0OwotICB2aXJ0dWFsIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6
UnRwU291cmNlPiBHZXRTb3VyY2VzKCkgY29uc3Q7Ci0gIHZpcnR1YWwgdm9pZCBTdGFydFBsYXlv
dXQoKTsKLSAgdmlydHVhbCB2b2lkIFN0b3BQbGF5b3V0KCk7Ci0KLSBwcml2YXRlOgotICAvLyBU
aHJlYWQgY2hlY2tlcnMgZG9jdW1lbnQgYW5kIGxvY2sgdXNhZ2Ugb2Ygc29tZSBtZXRob2RzIG9u
IHZvZTo6Q2hhbm5lbCB0bwotICAvLyBzcGVjaWZpYyB0aHJlYWRzIHdlIGtub3cgYWJvdXQuIFRo
ZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgc3BsaXQgdXAKLSAgLy8gdm9lOjpDaGFubmVsIGludG8g
cGFydHMgd2l0aCBzaW5nbGUtdGhyZWFkZWQgc2VtYW50aWNzLCBhbmQgdGhlcmVieSByZWR1Y2UK
LSAgLy8gdGhlIG5lZWQgZm9yIGxvY2tzLgotICBydGM6OlRocmVhZENoZWNrZXIgd29ya2VyX3Ro
cmVhZF9jaGVja2VyXzsKLSAgcnRjOjpUaHJlYWRDaGVja2VyIG1vZHVsZV9wcm9jZXNzX3RocmVh
ZF9jaGVja2VyXzsKLSAgLy8gTWV0aG9kcyBhY2Nlc3NlZCBmcm9tIGF1ZGlvIGFuZCB2aWRlbyB0
aHJlYWRzIGFyZSBjaGVja2VkIGZvciBzZXF1ZW50aWFsLQotICAvLyBvbmx5IGFjY2Vzcy4gV2Ug
ZG9uJ3QgbmVjZXNzYXJpbHkgb3duIGFuZCBjb250cm9sIHRoZXNlIHRocmVhZHMsIHNvIHRocmVh
ZAotICAvLyBjaGVja2VycyBjYW5ub3QgYmUgdXNlZC4gRS5nLiBDaHJvbWl1bSBtYXkgdHJhbnNm
ZXIgIm93bmVyc2hpcCIgZnJvbSBvbmUKLSAgLy8gYXVkaW8gdGhyZWFkIHRvIGFub3RoZXIsIGJ1
dCBhY2Nlc3MgaXMgc3RpbGwgc2VxdWVudGlhbC4KLSAgcnRjOjpSYWNlQ2hlY2tlciBhdWRpb190
aHJlYWRfcmFjZV9jaGVja2VyXzsKLSAgcnRjOjpSYWNlQ2hlY2tlciB2aWRlb19jYXB0dXJlX3Ro
cmVhZF9yYWNlX2NoZWNrZXJfOwotICBzdGQ6OnVuaXF1ZV9wdHI8Q2hhbm5lbFJlY2VpdmU+IGNo
YW5uZWxfOwotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oQ2hhbm5lbFJlY2VpdmVQ
cm94eSk7Ci19OwotfSAgLy8gbmFtZXNwYWNlIHZvZQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywot
Ci0jZW5kaWYgIC8vIEFVRElPX0NIQU5ORUxfUkVDRUlWRV9QUk9YWV9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9z
ZW5kLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
Y2hhbm5lbF9zZW5kLmNjCmluZGV4IGQzNzQ4YjM5OTA5YTQ5M2UzMmFkMjE5NmRmOTI2NjQ0YWE4
NTJiOTguLmM0NThmZTQ2NWIwNzA4MGQ0ZjEyNjMyYjgxZjgxN2I2MmEzZDE0NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5u
ZWxfc2VuZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hdWRpby9jaGFubmVsX3NlbmQuY2MKQEAgLTE5LDE5ICsxOSwyNSBAQAogCiAjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNs
dWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZW5j
cnlwdG9yaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9v
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2Vu
ZF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF9hdWRpb19wbGF5b3V0LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9n
L3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxl
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Jtc19sZXZlbC5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3V0aWxpdHkvaW5jbHVkZS9wcm9jZXNzX3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2lu
Zy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9yYWNlX2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yYXRl
X2xpbWl0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVlLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKQEAgLTQ3LDcgKzUzLDI1OSBAQCBuYW1lc3BhY2Ug
ewogY29uc3RleHByIGludDY0X3Qga01heFJldHJhbnNtaXNzaW9uV2luZG93TXMgPSAxMDAwOwog
Y29uc3RleHByIGludDY0X3Qga01pblJldHJhbnNtaXNzaW9uV2luZG93TXMgPSAzMDsKIAotfSAg
Ly8gbmFtZXNwYWNlCitNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lOjpGcmFtZVR5cGUK
K01lZGlhVHJhbnNwb3J0RnJhbWVUeXBlRm9yV2VicnRjRnJhbWVUeXBlKHdlYnJ0Yzo6RnJhbWVU
eXBlIGZyYW1lX3R5cGUpIHsKKyAgc3dpdGNoIChmcmFtZV90eXBlKSB7CisgICAgY2FzZSBrQXVk
aW9GcmFtZVNwZWVjaDoKKyAgICAgIHJldHVybiBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0Zy
YW1lOjpGcmFtZVR5cGU6OmtTcGVlY2g7CisgICAgICBicmVhazsKKworICAgIGNhc2Uga0F1ZGlv
RnJhbWVDTjoKKyAgICAgIHJldHVybiBNZWRpYVRyYW5zcG9ydEVuY29kZWRBdWRpb0ZyYW1lOjpG
cmFtZVR5cGU6OgorICAgICAgICAgIGtEaXNjb250aW51b3VzVHJhbnNtaXNzaW9uOworICAgICAg
YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgUlRDX0NIRUNLKGZhbHNlKSA8PCAiVW5leHBl
Y3RlZCBmcmFtZSB0eXBlPSIgPDwgZnJhbWVfdHlwZTsKKyAgICAgIGJyZWFrOworICB9Cit9CisK
K2NsYXNzIFJ0cFBhY2tldFNlbmRlclByb3h5OworY2xhc3MgVHJhbnNwb3J0RmVlZGJhY2tQcm94
eTsKK2NsYXNzIFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyUHJveHk7CitjbGFzcyBWb0VSdGNwT2Jz
ZXJ2ZXI7CisKK2NsYXNzIENoYW5uZWxTZW5kCisgICAgOiBwdWJsaWMgQ2hhbm5lbFNlbmRJbnRl
cmZhY2UsCisgICAgICBwdWJsaWMgVHJhbnNwb3J0LAorICAgICAgcHVibGljIE92ZXJoZWFkT2Jz
ZXJ2ZXIsCisgICAgICBwdWJsaWMgQXVkaW9QYWNrZXRpemF0aW9uQ2FsbGJhY2ssICAvLyByZWNl
aXZlIGVuY29kZWQgcGFja2V0cyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQUNNCisgICAgICBwdWJsaWMgVGFyZ2V0VHJhbnNmZXJSYXRlT2Jz
ZXJ2ZXIgeworIHB1YmxpYzoKKyAgLy8gVE9ETyhuaXNzZSk6IE1ha2UgT25VcGxpbmtQYWNrZXRM
b3NzUmF0ZSBwdWJsaWMsIGFuZCBkZWxldGUgZnJpZW5kCisgIC8vIGRlY2xhcmF0aW9uLgorICBm
cmllbmQgY2xhc3MgVm9FUnRjcE9ic2VydmVyOworCisgIENoYW5uZWxTZW5kKHJ0Yzo6VGFza1F1
ZXVlKiBlbmNvZGVyX3F1ZXVlLAorICAgICAgICAgICAgICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVf
cHJvY2Vzc190aHJlYWQsCisgICAgICAgICAgICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBt
ZWRpYV90cmFuc3BvcnQsCisgICAgICAgICAgICAgIFRyYW5zcG9ydCogcnRwX3RyYW5zcG9ydCwK
KyAgICAgICAgICAgICAgUnRjcFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0cywKKyAgICAgICAgICAg
ICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9sb2csCisgICAgICAgICAgICAgIEZyYW1lRW5jcnlw
dG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IsCisgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0
Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgICAgICAgICAgIGJvb2wgZXh0
bWFwX2FsbG93X21peGVkLAorICAgICAgICAgICAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxf
bXMpOworCisgIH5DaGFubmVsU2VuZCgpIG92ZXJyaWRlOworCisgIC8vIFNlbmQgdXNpbmcgdGhp
cyBlbmNvZGVyLCB3aXRoIHRoaXMgcGF5bG9hZCB0eXBlLgorICBib29sIFNldEVuY29kZXIoaW50
IHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Vu
Y29kZXI+IGVuY29kZXIpIG92ZXJyaWRlOworICB2b2lkIE1vZGlmeUVuY29kZXIocnRjOjpGdW5j
dGlvblZpZXc8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiopPgorICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vZGlmaWVyKSBvdmVycmlkZTsKKworICAvLyBBUEkgbWV0aG9kcwor
ICB2b2lkIFN0YXJ0U2VuZCgpIG92ZXJyaWRlOworICB2b2lkIFN0b3BTZW5kKCkgb3ZlcnJpZGU7
CisKKyAgLy8gQ29kZWNzCisgIHZvaWQgT25CaXRyYXRlQWxsb2NhdGlvbihCaXRyYXRlQWxsb2Nh
dGlvblVwZGF0ZSB1cGRhdGUpIG92ZXJyaWRlOworICBpbnQgR2V0Qml0cmF0ZSgpIGNvbnN0IG92
ZXJyaWRlOworCisgIC8vIE5ldHdvcmsKKyAgYm9vbCBSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgb3ZlcnJpZGU7CisKKyAgLy8gTXV0aW5nLCBW
b2x1bWUgYW5kIExldmVsLgorICB2b2lkIFNldElucHV0TXV0ZShib29sIGVuYWJsZSkgb3ZlcnJp
ZGU7CisKKyAgLy8gU3RhdHMuCisgIEFOQVN0YXRzIEdldEFOQVN0YXRpc3RpY3MoKSBjb25zdCBv
dmVycmlkZTsKKworICAvLyBVc2VkIGJ5IEF1ZGlvU2VuZFN0cmVhbS4KKyAgUnRwUnRjcCogR2V0
UnRwUnRjcCgpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIERUTUYuCisgIGJvb2wgU2VuZFRlbGVw
aG9uZUV2ZW50T3V0YmFuZChpbnQgZXZlbnQsIGludCBkdXJhdGlvbl9tcykgb3ZlcnJpZGU7Cisg
IGJvb2wgU2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBheWxvYWRfdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGF5bG9hZF9mcmVx
dWVuY3kpIG92ZXJyaWRlOworCisgIC8vIFJUUCtSVENQCisgIHZvaWQgU2V0TG9jYWxTU1JDKHVp
bnQzMl90IHNzcmMpIG92ZXJyaWRlOworICB2b2lkIFNldE1pZChjb25zdCBzdGQ6OnN0cmluZyYg
bWlkLCBpbnQgZXh0ZW5zaW9uX2lkKSBvdmVycmlkZTsKKyAgdm9pZCBTZXRFeHRtYXBBbGxvd01p
eGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSBvdmVycmlkZTsKKyAgdm9pZCBTZXRTZW5kQXVk
aW9MZXZlbEluZGljYXRpb25TdGF0dXMoYm9vbCBlbmFibGUsIGludCBpZCkgb3ZlcnJpZGU7Cisg
IHZvaWQgRW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKGludCBpZCkgb3ZlcnJpZGU7
CisKKyAgdm9pZCBSZWdpc3RlclNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKKyAgICAg
IFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0cmFuc3BvcnQsCisgICAgICBS
dGNwQmFuZHdpZHRoT2JzZXJ2ZXIqIGJhbmR3aWR0aF9vYnNlcnZlcikgb3ZlcnJpZGU7CisgIHZv
aWQgUmVzZXRTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSBvdmVycmlkZTsKKyAgdm9p
ZCBTZXRSVENQX0NOQU1FKGFic2w6OnN0cmluZ192aWV3IGNfbmFtZSkgb3ZlcnJpZGU7CisgIHN0
ZDo6dmVjdG9yPFJlcG9ydEJsb2NrPiBHZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tzKCkgY29uc3Qg
b3ZlcnJpZGU7CisgIENhbGxTZW5kU3RhdGlzdGljcyBHZXRSVENQU3RhdGlzdGljcygpIGNvbnN0
IG92ZXJyaWRlOworCisgIC8vIFByb2Nlc3NBbmRFbmNvZGVBdWRpbygpIHBvc3RzIGEgdGFzayBv
biB0aGUgc2hhcmVkIGVuY29kZXIgdGFzayBxdWV1ZSwKKyAgLy8gd2hpY2ggaW4gdHVybiBjYWxs
cyAob24gdGhlIHF1ZXVlKSBQcm9jZXNzQW5kRW5jb2RlQXVkaW9PblRhc2tRdWV1ZSgpIHdoZXJl
CisgIC8vIHRoZSBhY3R1YWwgcHJvY2Vzc2luZyBvZiB0aGUgYXVkaW8gdGFrZXMgcGxhY2UuIFRo
ZSBwcm9jZXNzaW5nIG1haW5seQorICAvLyBjb25zaXN0cyBvZiBlbmNvZGluZyBhbmQgcHJlcGFy
aW5nIHRoZSByZXN1bHQgZm9yIHNlbmRpbmcgYnkgYWRkaW5nIGl0IHRvIGEKKyAgLy8gc2VuZCBx
dWV1ZS4KKyAgLy8gVGhlIG1haW4gcmVhc29uIGZvciB1c2luZyBhIHRhc2sgcXVldWUgaGVyZSBp
cyB0byByZWxlYXNlIHRoZSBuYXRpdmUsCisgIC8vIE9TLXNwZWNpZmljLCBhdWRpbyBjYXB0dXJl
IHRocmVhZCBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aGF0IGl0CisgIC8vIGNhbiBn
byBiYWNrIHRvIHNsZWVwIGFuZCBiZSBwcmVwYXJlZCB0byBkZWxpdmVyIGFuIG5ldyBjYXB0dXJl
ZCBhdWRpbworICAvLyBwYWNrZXQuCisgIHZvaWQgUHJvY2Vzc0FuZEVuY29kZUF1ZGlvKHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19mcmFtZSkgb3ZlcnJpZGU7CisKKyAgdm9pZCBT
ZXRUcmFuc3BvcnRPdmVyaGVhZChzaXplX3QgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQp
IG92ZXJyaWRlOworCisgIC8vIFRoZSBleGlzdGVuY2Ugb2YgdGhpcyBmdW5jdGlvbiBhbG9uZ3Np
ZGUgT25VcGxpbmtQYWNrZXRMb3NzUmF0ZSBpcworICAvLyBhIGNvbXByb21pc2UuIFdlIHdhbnQg
dGhlIGVuY29kZXIgdG8gYmUgYWdub3N0aWMgb2YgdGhlIFBMUiBzb3VyY2UsIGJ1dAorICAvLyB3
ZSBhbHNvIGRvbid0IHdhbnQgaXQgdG8gcmVjZWl2ZSBjb25mbGljdGluZyBpbmZvcm1hdGlvbiBm
cm9tIFRXQ0MgYW5kCisgIC8vIGZyb20gUlRDUC1YUi4KKyAgdm9pZCBPblR3Y2NCYXNlZFVwbGlu
a1BhY2tldExvc3NSYXRlKGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpIG92ZXJyaWRlOworCisgIHZv
aWQgT25SZWNvdmVyYWJsZVVwbGlua1BhY2tldExvc3NSYXRlKAorICAgICAgZmxvYXQgcmVjb3Zl
cmFibGVfcGFja2V0X2xvc3NfcmF0ZSkgb3ZlcnJpZGU7CisKKyAgaW50NjRfdCBHZXRSVFQoKSBj
b25zdCBvdmVycmlkZTsKKworICAvLyBFMkVFIEN1c3RvbSBBdWRpbyBGcmFtZSBFbmNyeXB0aW9u
CisgIHZvaWQgU2V0RnJhbWVFbmNyeXB0b3IoCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8RnJh
bWVFbmNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2VuY3J5cHRvcikgb3ZlcnJpZGU7CisKKyBwcml2
YXRlOgorICBjbGFzcyBQcm9jZXNzQW5kRW5jb2RlQXVkaW9UYXNrOworCisgIC8vIEZyb20gQXVk
aW9QYWNrZXRpemF0aW9uQ2FsbGJhY2sgaW4gdGhlIEFDTQorICBpbnQzMl90IFNlbmREYXRhKEZy
YW1lVHlwZSBmcmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgdWludDhfdCBwYXlsb2FkVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0aW1lU3RhbXAsCisgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCogcGF5bG9hZERhdGEsCisgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHBheWxvYWRTaXplLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFJUUEZyYWdtZW50YXRp
b25IZWFkZXIqIGZyYWdtZW50YXRpb24pIG92ZXJyaWRlOworCisgIC8vIEZyb20gVHJhbnNwb3J0
IChjYWxsZWQgYnkgdGhlIFJUUC9SVENQIG1vZHVsZSkKKyAgYm9vbCBTZW5kUnRwKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsCisgICAgICAgICAgICAgICBzaXplX3QgbGVuLAorICAgICAgICAgICAgICAg
Y29uc3QgUGFja2V0T3B0aW9ucyYgcGFja2V0X29wdGlvbnMpIG92ZXJyaWRlOworICBib29sIFNl
bmRSdGNwKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW4pIG92ZXJyaWRlOworCisgIC8v
IEZyb20gT3ZlcmhlYWRPYnNlcnZlciBpbiB0aGUgUlRQL1JUQ1AgbW9kdWxlCisgIHZvaWQgT25P
dmVyaGVhZENoYW5nZWQoc2l6ZV90IG92ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXQpIG92ZXJyaWRl
OworCisgIHZvaWQgT25VcGxpbmtQYWNrZXRMb3NzUmF0ZShmbG9hdCBwYWNrZXRfbG9zc19yYXRl
KTsKKyAgYm9vbCBJbnB1dE11dGUoKSBjb25zdDsKKworICBpbnQgU2V0U2VuZFJ0cEhlYWRlckV4
dGVuc2lvbihib29sIGVuYWJsZSwgUlRQRXh0ZW5zaW9uVHlwZSB0eXBlLCBpbnQgaWQpOworCisg
IHZvaWQgVXBkYXRlT3ZlcmhlYWRGb3JFbmNvZGVyKCkKKyAgICAgIFJUQ19FWENMVVNJVkVfTE9D
S1NfUkVRVUlSRUQob3ZlcmhlYWRfcGVyX3BhY2tldF9sb2NrXyk7CisKKyAgaW50MzJfdCBTZW5k
UnRwQXVkaW8oRnJhbWVUeXBlIGZyYW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDhfdCBwYXlsb2FkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZVN0
YW1wLAorICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90
PiBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSVFBGcmFnbWVudGF0aW9u
SGVhZGVyKiBmcmFnbWVudGF0aW9uKTsKKworICBpbnQzMl90IFNlbmRNZWRpYVRyYW5zcG9ydEF1
ZGlvKEZyYW1lVHlwZSBmcmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCBwYXlsb2FkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCB0aW1lU3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gcGF5bG9hZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0
aW9uKTsKKworICAvLyBSZXR1cm4gbWVkaWEgdHJhbnNwb3J0IG9yIG51bGxwdHIgaWYgdXNpbmcg
UlRQLgorICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KCkgeyByZXR1
cm4gbWVkaWFfdHJhbnNwb3J0XzsgfQorCisgIC8vIENhbGxlZCBvbiB0aGUgZW5jb2RlciB0YXNr
IHF1ZXVlIHdoZW4gYSBuZXcgaW5wdXQgYXVkaW8gZnJhbWUgaXMgcmVhZHkKKyAgLy8gZm9yIGVu
Y29kaW5nLgorICB2b2lkIFByb2Nlc3NBbmRFbmNvZGVBdWRpb09uVGFza1F1ZXVlKEF1ZGlvRnJh
bWUqIGF1ZGlvX2lucHV0KTsKKworICB2b2lkIE9uUmVjZWl2ZWRSdHQoaW50NjRfdCBydHRfbXMp
OworCisgIHZvaWQgT25UYXJnZXRUcmFuc2ZlclJhdGUoVGFyZ2V0VHJhbnNmZXJSYXRlKSBvdmVy
cmlkZTsKKworICAvLyBUaHJlYWQgY2hlY2tlcnMgZG9jdW1lbnQgYW5kIGxvY2sgdXNhZ2Ugb2Yg
c29tZSBtZXRob2RzIG9uIHZvZTo6Q2hhbm5lbCB0bworICAvLyBzcGVjaWZpYyB0aHJlYWRzIHdl
IGtub3cgYWJvdXQuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgc3BsaXQgdXAKKyAgLy8gdm9l
OjpDaGFubmVsIGludG8gcGFydHMgd2l0aCBzaW5nbGUtdGhyZWFkZWQgc2VtYW50aWNzLCBhbmQg
dGhlcmVieSByZWR1Y2UKKyAgLy8gdGhlIG5lZWQgZm9yIGxvY2tzLgorICBydGM6OlRocmVhZENo
ZWNrZXIgd29ya2VyX3RocmVhZF9jaGVja2VyXzsKKyAgcnRjOjpUaHJlYWRDaGVja2VyIG1vZHVs
ZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXzsKKyAgLy8gTWV0aG9kcyBhY2Nlc3NlZCBmcm9tIGF1
ZGlvIGFuZCB2aWRlbyB0aHJlYWRzIGFyZSBjaGVja2VkIGZvciBzZXF1ZW50aWFsLQorICAvLyBv
bmx5IGFjY2Vzcy4gV2UgZG9uJ3QgbmVjZXNzYXJpbHkgb3duIGFuZCBjb250cm9sIHRoZXNlIHRo
cmVhZHMsIHNvIHRocmVhZAorICAvLyBjaGVja2VycyBjYW5ub3QgYmUgdXNlZC4gRS5nLiBDaHJv
bWl1bSBtYXkgdHJhbnNmZXIgIm93bmVyc2hpcCIgZnJvbSBvbmUKKyAgLy8gYXVkaW8gdGhyZWFk
IHRvIGFub3RoZXIsIGJ1dCBhY2Nlc3MgaXMgc3RpbGwgc2VxdWVudGlhbC4KKyAgcnRjOjpSYWNl
Q2hlY2tlciBhdWRpb190aHJlYWRfcmFjZV9jaGVja2VyXzsKKworICBydGM6OkNyaXRpY2FsU2Vj
dGlvbiBfY2FsbGJhY2tDcml0U2VjdDsKKyAgcnRjOjpDcml0aWNhbFNlY3Rpb24gdm9sdW1lX3Nl
dHRpbmdzX2NyaXRzZWN0XzsKKworICBib29sIHNlbmRpbmdfIFJUQ19HVUFSREVEX0JZKCZ3b3Jr
ZXJfdGhyZWFkX2NoZWNrZXJfKSA9IGZhbHNlOworCisgIFJ0Y0V2ZW50TG9nKiBjb25zdCBldmVu
dF9sb2dfOworCisgIHN0ZDo6dW5pcXVlX3B0cjxSdHBSdGNwPiBfcnRwUnRjcE1vZHVsZTsKKwor
ICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Db2RpbmdNb2R1bGU+IGF1ZGlvX2NvZGluZ187CisgIHVp
bnQzMl90IF90aW1lU3RhbXAgUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9xdWV1ZV8pOworCisgIHVp
bnQxNl90IHNlbmRfc2VxdWVuY2VfbnVtYmVyXzsKKworICAvLyB1c2VzCisgIFByb2Nlc3NUaHJl
YWQqIGNvbnN0IF9tb2R1bGVQcm9jZXNzVGhyZWFkUHRyOworICBUcmFuc3BvcnQqIGNvbnN0IF90
cmFuc3BvcnRQdHI7ICAvLyBXZWJSdGMgc29ja2V0IG9yIGV4dGVybmFsIHRyYW5zcG9ydAorICBS
bXNMZXZlbCBybXNfbGV2ZWxfIFJUQ19HVUFSREVEX0JZKGVuY29kZXJfcXVldWVfKTsKKyAgYm9v
bCBpbnB1dF9tdXRlXyBSVENfR1VBUkRFRF9CWSh2b2x1bWVfc2V0dGluZ3NfY3JpdHNlY3RfKTsK
KyAgYm9vbCBwcmV2aW91c19mcmFtZV9tdXRlZF8gUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9xdWV1
ZV8pOworICAvLyBWb2VSVFBfUlRDUAorICAvLyBUT0RPKGhlbnJpa2EpOiBjYW4gdG9kYXkgYmUg
YWNjZXNzZWQgb24gdGhlIG1haW4gdGhyZWFkIGFuZCBvbiB0aGUKKyAgLy8gdGFzayBxdWV1ZTsg
aGVuY2UgcG90ZW50aWFsIHJhY2UuCisgIGJvb2wgX2luY2x1ZGVBdWRpb0xldmVsSW5kaWNhdGlv
bjsKKyAgc2l6ZV90IHRyYW5zcG9ydF9vdmVyaGVhZF9wZXJfcGFja2V0XworICAgICAgUlRDX0dV
QVJERURfQlkob3ZlcmhlYWRfcGVyX3BhY2tldF9sb2NrXyk7CisgIHNpemVfdCBydHBfb3Zlcmhl
YWRfcGVyX3BhY2tldF8gUlRDX0dVQVJERURfQlkob3ZlcmhlYWRfcGVyX3BhY2tldF9sb2NrXyk7
CisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIG92ZXJoZWFkX3Blcl9wYWNrZXRfbG9ja187CisgIC8v
IFJ0Y3BCYW5kd2lkdGhPYnNlcnZlcgorICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Vm9FUnRjcE9i
c2VydmVyPiBydGNwX29ic2VydmVyXzsKKworICBQYWNrZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXJf
IFJUQ19HVUFSREVEX0JZKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKSA9CisgICAgICBudWxscHRy
OworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RmVlZGJhY2tQcm94eT4gZmVlZGJh
Y2tfb2JzZXJ2ZXJfcHJveHlfOworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0U2Vx
dWVuY2VOdW1iZXJQcm94eT4gc2VxX251bV9hbGxvY2F0b3JfcHJveHlfOworICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8UnRwUGFja2V0U2VuZGVyUHJveHk+IHJ0cF9wYWNrZXRfc2VuZGVyX3Byb3h5
XzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFJhdGVMaW1pdGVyPiByZXRyYW5zbWlzc2lvbl9y
YXRlX2xpbWl0ZXJfOworCisgIHJ0Yzo6VGhyZWFkQ2hlY2tlciBjb25zdHJ1Y3Rpb25fdGhyZWFk
XzsKKworICBjb25zdCBib29sIHVzZV90d2NjX3Bscl9mb3JfYW5hXzsKKworICBydGM6OkNyaXRp
Y2FsU2VjdGlvbiBlbmNvZGVyX3F1ZXVlX2xvY2tfOworICBib29sIGVuY29kZXJfcXVldWVfaXNf
YWN0aXZlXyBSVENfR1VBUkRFRF9CWShlbmNvZGVyX3F1ZXVlX2xvY2tfKSA9IGZhbHNlOworICBy
dGM6OlRhc2tRdWV1ZSogY29uc3QgZW5jb2Rlcl9xdWV1ZV8gPSBudWxscHRyOworCisgIE1lZGlh
VHJhbnNwb3J0SW50ZXJmYWNlKiBjb25zdCBtZWRpYV90cmFuc3BvcnRfOworICBpbnQgbWVkaWFf
dHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl8gUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9xdWV1ZV8p
ID0gMDsKKworICBydGM6OkNyaXRpY2FsU2VjdGlvbiBtZWRpYV90cmFuc3BvcnRfbG9ja187Cisg
IC8vIEN1cnJlbnRseSBzZXQgYnkgU2V0TG9jYWxTU1JDLgorICB1aW50NjRfdCBtZWRpYV90cmFu
c3BvcnRfY2hhbm5lbF9pZF8gUlRDX0dVQVJERURfQlkoJm1lZGlhX3RyYW5zcG9ydF9sb2NrXykg
PQorICAgICAgMDsKKyAgLy8gQ2FjaGUgcGF5bG9hZCB0eXBlIGFuZCBzYW1wbGluZyBmcmVxdWVu
Y3kgZnJvbSBtb3N0IHJlY2VudCBjYWxsIHRvCisgIC8vIFNldEVuY29kZXIuIE5lZWRlZCB0byBz
ZXQgTWVkaWFUcmFuc3BvcnRFbmNvZGVkQXVkaW9GcmFtZSBtZXRhZGF0YSwgYW5kCisgIC8vIGlu
dmFsaWRhdGUgb24gZW5jb2RlciBjaGFuZ2UuCisgIGludCBtZWRpYV90cmFuc3BvcnRfcGF5bG9h
ZF90eXBlXyBSVENfR1VBUkRFRF9CWSgmbWVkaWFfdHJhbnNwb3J0X2xvY2tfKTsKKyAgaW50IG1l
ZGlhX3RyYW5zcG9ydF9zYW1wbGluZ19mcmVxdWVuY3lfCisgICAgICBSVENfR1VBUkRFRF9CWSgm
bWVkaWFfdHJhbnNwb3J0X2xvY2tfKTsKKworICAvLyBFMkVFIEF1ZGlvIEZyYW1lIEVuY3J5cHRp
b24KKyAgcnRjOjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9l
bmNyeXB0b3JfOworICAvLyBFMkVFIEZyYW1lIEVuY3J5cHRpb24gT3B0aW9ucworICBjb25zdCB3
ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnNfOworCisgIHJ0Yzo6Q3JpdGljYWxT
ZWN0aW9uIGJpdHJhdGVfY3JpdF9zZWN0aW9uXzsKKyAgaW50IGNvbmZpZ3VyZWRfYml0cmF0ZV9i
cHNfIFJUQ19HVUFSREVEX0JZKGJpdHJhdGVfY3JpdF9zZWN0aW9uXykgPSAwOworfTsKIAogY29u
c3QgaW50IGtUZWxlcGhvbmVFdmVudEF0dGVudWF0aW9uZEIgPSAxMDsKIApAQCAtMjU0LDYgKzUx
MiwyMyBAQCBpbnQzMl90IENoYW5uZWxTZW5kOjpTZW5kRGF0YShGcmFtZVR5cGUgZnJhbWVUeXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBheWxvYWRTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciog
ZnJhZ21lbnRhdGlvbikgewogICBSVENfRENIRUNLX1JVTl9PTihlbmNvZGVyX3F1ZXVlXyk7Cisg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IHBheWxvYWQocGF5bG9hZERhdGEsIHBheWxv
YWRTaXplKTsKKworICBpZiAobWVkaWFfdHJhbnNwb3J0KCkgIT0gbnVsbHB0cikgeworICAgIHJl
dHVybiBTZW5kTWVkaWFUcmFuc3BvcnRBdWRpbyhmcmFtZVR5cGUsIHBheWxvYWRUeXBlLCB0aW1l
U3RhbXAsIHBheWxvYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdt
ZW50YXRpb24pOworICB9IGVsc2UgeworICAgIHJldHVybiBTZW5kUnRwQXVkaW8oZnJhbWVUeXBl
LCBwYXlsb2FkVHlwZSwgdGltZVN0YW1wLCBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhZ21lbnRhdGlvbik7CisgIH0KK30KKworaW50MzJfdCBDaGFubmVsU2VuZDo6U2VuZFJ0
cEF1ZGlvKEZyYW1lVHlwZSBmcmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCBwYXlsb2FkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCB0aW1lU3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gcGF5bG9hZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBmcmFnbWVu
dGF0aW9uKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKGVuY29kZXJfcXVldWVfKTsKICAgaWYgKF9p
bmNsdWRlQXVkaW9MZXZlbEluZGljYXRpb24pIHsKICAgICAvLyBTdG9yZSBjdXJyZW50IGF1ZGlv
IGxldmVsIGluIHRoZSBSVFAvUlRDUCBtb2R1bGUuCiAgICAgLy8gVGhlIGxldmVsIHdpbGwgYmUg
dXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHZvaWNlLWFjdGl2aXR5IHN0YXRlCkBAIC0yNjgsMTYg
KzU0MywxNSBAQCBpbnQzMl90IENoYW5uZWxTZW5kOjpTZW5kRGF0YShGcmFtZVR5cGUgZnJhbWVU
eXBlLAogICAgIC8vIFRPRE8oYmVud3JpZ2h0QHdlYnJ0Yy5vcmcpIC0gQWxsb2NhdGUgZW5vdWdo
IHRvIGFsd2F5cyBlbmNyeXB0IGlubGluZS4KICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciB0byBo
b2xkIHRoZSBtYXhpbXVtIHBvc3NpYmxlIGVuY3J5cHRlZCBwYXlsb2FkLgogICAgIHNpemVfdCBt
YXhfY2lwaGVydGV4dF9zaXplID0gZnJhbWVfZW5jcnlwdG9yXy0+R2V0TWF4Q2lwaGVydGV4dEJ5
dGVTaXplKAotICAgICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBwYXlsb2FkU2l6ZSk7
CisgICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHBheWxvYWQuc2l6ZSgpKTsKICAg
ICBlbmNyeXB0ZWRfYXVkaW9fcGF5bG9hZC5TZXRTaXplKG1heF9jaXBoZXJ0ZXh0X3NpemUpOwog
CiAgICAgLy8gRW5jcnlwdCB0aGUgYXVkaW8gcGF5bG9hZCBpbnRvIHRoZSBidWZmZXIuCiAgICAg
c2l6ZV90IGJ5dGVzX3dyaXR0ZW4gPSAwOwogICAgIGludCBlbmNyeXB0X3N0YXR1cyA9IGZyYW1l
X2VuY3J5cHRvcl8tPkVuY3J5cHQoCiAgICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8s
IF9ydHBSdGNwTW9kdWxlLT5TU1JDKCksCi0gICAgICAgIC8qYWRkaXRpb25hbF9kYXRhPSovbnVs
bHB0ciwKLSAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4ocGF5bG9hZERhdGEs
IHBheWxvYWRTaXplKSwKLSAgICAgICAgZW5jcnlwdGVkX2F1ZGlvX3BheWxvYWQsICZieXRlc193
cml0dGVuKTsKKyAgICAgICAgLyphZGRpdGlvbmFsX2RhdGE9Ki9udWxscHRyLCBwYXlsb2FkLCBl
bmNyeXB0ZWRfYXVkaW9fcGF5bG9hZCwKKyAgICAgICAgJmJ5dGVzX3dyaXR0ZW4pOwogICAgIGlm
IChlbmNyeXB0X3N0YXR1cyAhPSAwKSB7CiAgICAgICBSVENfRExPRyhMU19FUlJPUikgPDwgIkNo
YW5uZWw6OlNlbmREYXRhKCkgZmFpbGVkIGVuY3J5cHQgYXVkaW8gcGF5bG9hZDogIgogICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IGVuY3J5cHRfc3RhdHVzOwpAQCAtMjg2LDE5ICs1NjAsMjMg
QEAgaW50MzJfdCBDaGFubmVsU2VuZDo6U2VuZERhdGEoRnJhbWVUeXBlIGZyYW1lVHlwZSwKICAg
ICAvLyBSZXNpemUgdGhlIGJ1ZmZlciB0byB0aGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIGFjdHVh
bGx5IHVzZWQuCiAgICAgZW5jcnlwdGVkX2F1ZGlvX3BheWxvYWQuU2V0U2l6ZShieXRlc193cml0
dGVuKTsKICAgICAvLyBSZXdyaXRlIHRoZSBwYXlsb2FkRGF0YSBhbmQgc2l6ZSB0byB0aGUgbmV3
IGVuY3J5cHRlZCBwYXlsb2FkLgotICAgIHBheWxvYWREYXRhID0gZW5jcnlwdGVkX2F1ZGlvX3Bh
eWxvYWQuZGF0YSgpOwotICAgIHBheWxvYWRTaXplID0gZW5jcnlwdGVkX2F1ZGlvX3BheWxvYWQu
c2l6ZSgpOworICAgIHBheWxvYWQgPSBlbmNyeXB0ZWRfYXVkaW9fcGF5bG9hZDsKKyAgfSBlbHNl
IGlmIChjcnlwdG9fb3B0aW9uc18uc2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbikgewor
ICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiQ2hhbm5lbDo6U2VuZERhdGEoKSBmYWlsZWQgc2Vu
ZGluZyBhdWRpbyBwYXlsb2FkOiAiCisgICAgICAgICAgICAgICAgICAgICAgIDw8ICJBIGZyYW1l
IGVuY3J5cHRvciBpcyByZXF1aXJlZCBidXQgb25lIGlzIG5vdCBzZXQuIjsKKyAgICByZXR1cm4g
LTE7CiAgIH0KIAogICAvLyBQdXNoIGRhdGEgZnJvbSBBQ00gdG8gUlRQL1JUQ1AtbW9kdWxlIHRv
IGRlbGl2ZXIgYXVkaW8gZnJhbWUgZm9yCiAgIC8vIHBhY2tldGl6YXRpb24uCiAgIC8vIFRoaXMg
Y2FsbCB3aWxsIHRyaWdnZXIgVHJhbnNwb3J0OjpTZW5kUGFja2V0KCkgZnJvbSB0aGUgUlRQL1JU
Q1AgbW9kdWxlLgotICBpZiAoIV9ydHBSdGNwTW9kdWxlLT5TZW5kT3V0Z29pbmdEYXRhKAotICAg
ICAgICAgIChGcmFtZVR5cGUmKWZyYW1lVHlwZSwgcGF5bG9hZFR5cGUsIHRpbWVTdGFtcCwKLSAg
ICAgICAgICAvLyBMZWF2aW5nIHRoZSB0aW1lIHdoZW4gdGhpcyBmcmFtZSB3YXMKLSAgICAgICAg
ICAvLyByZWNlaXZlZCBmcm9tIHRoZSBjYXB0dXJlIGRldmljZSBhcwotICAgICAgICAgIC8vIHVu
ZGVmaW5lZCBmb3Igdm9pY2UgZm9yIG5vdy4KLSAgICAgICAgICAtMSwgcGF5bG9hZERhdGEsIHBh
eWxvYWRTaXplLCBmcmFnbWVudGF0aW9uLCBudWxscHRyLCBudWxscHRyKSkgeworICBpZiAoIV9y
dHBSdGNwTW9kdWxlLT5TZW5kT3V0Z29pbmdEYXRhKChGcmFtZVR5cGUmKWZyYW1lVHlwZSwgcGF5
bG9hZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZVN0
YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlYXZpbmcg
dGhlIHRpbWUgd2hlbiB0aGlzIGZyYW1lIHdhcworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHJlY2VpdmVkIGZyb20gdGhlIGNhcHR1cmUgZGV2aWNlIGFzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5kZWZpbmVkIGZvciB2b2lj
ZSBmb3Igbm93LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCBw
YXlsb2FkLmRhdGEoKSwgcGF5bG9hZC5zaXplKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhZ21lbnRhdGlvbiwgbnVsbHB0ciwgbnVsbHB0cikpIHsKICAgICBS
VENfRExPRyhMU19FUlJPUikKICAgICAgICAgPDwgIkNoYW5uZWxTZW5kOjpTZW5kRGF0YSgpIGZh
aWxlZCB0byBzZW5kIGRhdGEgdG8gUlRQL1JUQ1AgbW9kdWxlIjsKICAgICByZXR1cm4gLTE7CkBA
IC0zMDcsOSArNTg1LDY4IEBAIGludDMyX3QgQ2hhbm5lbFNlbmQ6OlNlbmREYXRhKEZyYW1lVHlw
ZSBmcmFtZVR5cGUsCiAgIHJldHVybiAwOwogfQogCitpbnQzMl90IENoYW5uZWxTZW5kOjpTZW5k
TWVkaWFUcmFuc3BvcnRBdWRpbygKKyAgICBGcmFtZVR5cGUgZnJhbWVUeXBlLAorICAgIHVpbnQ4
X3QgcGF5bG9hZFR5cGUsCisgICAgdWludDMyX3QgdGltZVN0YW1wLAorICAgIHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IHVpbnQ4X3Q+IHBheWxvYWQsCisgICAgY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhl
YWRlciogZnJhZ21lbnRhdGlvbikgeworICBSVENfRENIRUNLX1JVTl9PTihlbmNvZGVyX3F1ZXVl
Xyk7CisgIC8vIFRPRE8obmlzc2UpOiBVc2UgbnVsbCBfdHJhbnNwb3J0UHRyIGZvciBNZWRpYVRy
YW5zcG9ydC4KKyAgLy8gUlRDX0RDSEVDSyhfdHJhbnNwb3J0UHRyID09IG51bGxwdHIpOworICB1
aW50NjRfdCBjaGFubmVsX2lkOworICBpbnQgc2FtcGxpbmdfcmF0ZV9oejsKKyAgeworICAgIHJ0
Yzo6Q3JpdFNjb3BlIGNzKCZtZWRpYV90cmFuc3BvcnRfbG9ja18pOworICAgIGlmIChtZWRpYV90
cmFuc3BvcnRfcGF5bG9hZF90eXBlXyAhPSBwYXlsb2FkVHlwZSkgeworICAgICAgLy8gUGF5bG9h
ZCB0eXBlIGlzIGJlaW5nIGNoYW5nZWQsIG1lZGlhX3RyYW5zcG9ydF9zYW1wbGluZ19mcmVxdWVu
Y3lfLAorICAgICAgLy8gbm8gbG9uZ2VyIGN1cnJlbnQuCisgICAgICByZXR1cm4gLTE7CisgICAg
fQorICAgIHNhbXBsaW5nX3JhdGVfaHogPSBtZWRpYV90cmFuc3BvcnRfc2FtcGxpbmdfZnJlcXVl
bmN5XzsKKyAgICBjaGFubmVsX2lkID0gbWVkaWFfdHJhbnNwb3J0X2NoYW5uZWxfaWRfOworICB9
CisgIGNvbnN0IE1lZGlhVHJhbnNwb3J0RW5jb2RlZEF1ZGlvRnJhbWUgZnJhbWUoCisgICAgICAv
KnNhbXBsaW5nX3JhdGVfaHo9Ki9zYW1wbGluZ19yYXRlX2h6LAorCisgICAgICAvLyBUT0RPKG5p
c3NlKTogVGltZXN0YW1wIGFuZCBzYW1wbGUgaW5kZXggYXJlIHRoZSBzYW1lIGZvciBhbGwgc3Vw
cG9ydGVkCisgICAgICAvLyBhdWRpbyBjb2RlY3MgZXhjZXB0IEc3MjIuIFJlZmFjdG9yIGF1ZGlv
IGNvZGluZyBtb2R1bGUgdG8gb25seSB1c2UKKyAgICAgIC8vIHNhbXBsZSBpbmRleCwgYW5kIGxl
YXZlIHRyYW5zbGF0aW9uIHRvIFJUUCB0aW1lLCB3aGVuIG5lZWRlZCwgZm9yCisgICAgICAvLyBS
VFAtc3BlY2lmaWMgY29kZS4KKyAgICAgIC8qc3RhcnRpbmdfc2FtcGxlX2luZGV4PSovdGltZVN0
YW1wLAorCisgICAgICAvLyBTYW1wbGUgY291bnQgaXNuJ3QgY29udmVuaWVudGx5IGF2YWlsYWJs
ZSBmcm9tIHRoZSBBdWRpb0NvZGluZ01vZHVsZSwKKyAgICAgIC8vIGFuZCBuZWVkcyBzb21lIHJl
ZmFjdG9yaW5nIHRvIHdpcmUgdXAgaW4gYSBnb29kIHdheS4gRm9yIG5vdywgbGVmdCBhcworICAg
ICAgLy8gemVyby4KKyAgICAgIC8qc2FtcGxlX2NvdW50PSovMCwKKworICAgICAgLypzZXF1ZW5j
ZV9udW1iZXI9Ki9tZWRpYV90cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyXywKKyAgICAgIE1lZGlh
VHJhbnNwb3J0RnJhbWVUeXBlRm9yV2VicnRjRnJhbWVUeXBlKGZyYW1lVHlwZSksIHBheWxvYWRU
eXBlLAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4ocGF5bG9hZC5iZWdpbigpLCBwYXlsb2Fk
LmVuZCgpKSk7CisKKyAgLy8gVE9ETyhuaXNzZSk6IEludHJvZHVjZSBhIE1lZGlhVHJhbnNwb3J0
U2VuZGVyIG9iamVjdCBib3VuZCB0byBhIHNwZWNpZmljCisgIC8vIGNoYW5uZWwgaWQuCisgIFJU
Q0Vycm9yIHJ0Y19lcnJvciA9CisgICAgICBtZWRpYV90cmFuc3BvcnQoKS0+U2VuZEF1ZGlvRnJh
bWUoY2hhbm5lbF9pZCwgc3RkOjptb3ZlKGZyYW1lKSk7CisKKyAgaWYgKCFydGNfZXJyb3Iub2so
KSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gc2VuZCBmcmFtZSwgcnRj
X2Vycm9yPSIKKyAgICAgICAgICAgICAgICAgICAgICA8PCBUb1N0cmluZyhydGNfZXJyb3IudHlw
ZSgpKSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgPDwgcnRjX2Vycm9yLm1lc3NhZ2Uo
KTsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICArK21lZGlhX3RyYW5zcG9ydF9zZXF1ZW5jZV9u
dW1iZXJfOworCisgIHJldHVybiAwOworfQorCiBib29sIENoYW5uZWxTZW5kOjpTZW5kUnRwKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldE9wdGlvbnMmIG9wdGlvbnMp
IHsKKyAgLy8gV2Ugc2hvdWxkIG5vdCBiZSBzZW5kaW5nIFJUUCBwYWNrZXRzIGlmIG1lZGlhIHRy
YW5zcG9ydCBpcyBhdmFpbGFibGUuCisgIFJUQ19DSEVDSyghbWVkaWFfdHJhbnNwb3J0KCkpOwor
CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZfY2FsbGJhY2tDcml0U2VjdCk7CiAKICAgaWYgKF90cmFu
c3BvcnRQdHIgPT0gTlVMTCkgewpAQCAtMzQzLDIzICs2ODAsMjIgQEAgYm9vbCBDaGFubmVsU2Vu
ZDo6U2VuZFJ0Y3AoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbikgewogICByZXR1cm4g
dHJ1ZTsKIH0KIAotaW50IENoYW5uZWxTZW5kOjpQcmVmZXJyZWRTYW1wbGVSYXRlKCkgY29uc3Qg
ewotICAvLyBSZXR1cm4gdGhlIGJpZ2dlciBvZiBwbGF5b3V0IGFuZCByZWNlaXZlIGZyZXF1ZW5j
eSBpbiB0aGUgQUNNLgotICByZXR1cm4gc3RkOjptYXgoYXVkaW9fY29kaW5nXy0+UmVjZWl2ZUZy
ZXF1ZW5jeSgpLAotICAgICAgICAgICAgICAgICAgYXVkaW9fY29kaW5nXy0+UGxheW91dEZyZXF1
ZW5jeSgpKTsKLX0KLQogQ2hhbm5lbFNlbmQ6OkNoYW5uZWxTZW5kKHJ0Yzo6VGFza1F1ZXVlKiBl
bmNvZGVyX3F1ZXVlLAogICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NUaHJlYWQqIG1v
ZHVsZV9wcm9jZXNzX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVRyYW5z
cG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAg
IFRyYW5zcG9ydCogcnRwX3RyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNw
UnR0U3RhdHMqIHJ0Y3BfcnR0X3N0YXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y0V2
ZW50TG9nKiBydGNfZXZlbnRfbG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lRW5j
cnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25z
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcykKICAgICA6
IGV2ZW50X2xvZ18ocnRjX2V2ZW50X2xvZyksCiAgICAgICBfdGltZVN0YW1wKDApLCAgLy8gVGhp
cyBpcyBqdXN0IGFuIG9mZnNldCwgUlRQIG1vZHVsZSB3aWxsIGFkZCBpdCdzIG93bgogICAgICAg
ICAgICAgICAgICAgICAgIC8vIHJhbmRvbSBvZmZzZXQKICAgICAgIHNlbmRfc2VxdWVuY2VfbnVt
YmVyXygwKSwKICAgICAgIF9tb2R1bGVQcm9jZXNzVGhyZWFkUHRyKG1vZHVsZV9wcm9jZXNzX3Ro
cmVhZCksCi0gICAgICBfdHJhbnNwb3J0UHRyKE5VTEwpLAorICAgICAgX3RyYW5zcG9ydFB0cihy
dHBfdHJhbnNwb3J0KSwKICAgICAgIGlucHV0X211dGVfKGZhbHNlKSwKICAgICAgIHByZXZpb3Vz
X2ZyYW1lX211dGVkXyhmYWxzZSksCiAgICAgICBfaW5jbHVkZUF1ZGlvTGV2ZWxJbmRpY2F0aW9u
KGZhbHNlKSwKQEAgLTM3NCw0OSArNzEwLDU2IEBAIENoYW5uZWxTZW5kOjpDaGFubmVsU2VuZChy
dGM6OlRhc2tRdWV1ZSogZW5jb2Rlcl9xdWV1ZSwKICAgICAgIHVzZV90d2NjX3Bscl9mb3JfYW5h
XygKICAgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoIlVzZVR3Y2NQ
bHJGb3JBbmEiKSA9PSAiRW5hYmxlZCIpLAogICAgICAgZW5jb2Rlcl9xdWV1ZV8oZW5jb2Rlcl9x
dWV1ZSksCi0gICAgICBmcmFtZV9lbmNyeXB0b3JfKGZyYW1lX2VuY3J5cHRvcikgeworICAgICAg
bWVkaWFfdHJhbnNwb3J0XyhtZWRpYV90cmFuc3BvcnQpLAorICAgICAgZnJhbWVfZW5jcnlwdG9y
XyhmcmFtZV9lbmNyeXB0b3IpLAorICAgICAgY3J5cHRvX29wdGlvbnNfKGNyeXB0b19vcHRpb25z
KSB7CiAgIFJUQ19EQ0hFQ0sobW9kdWxlX3Byb2Nlc3NfdGhyZWFkKTsKICAgUlRDX0RDSEVDSyhl
bmNvZGVyX3F1ZXVlKTsKKyAgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkRldGFjaEZy
b21UaHJlYWQoKTsKKwogICBhdWRpb19jb2RpbmdfLnJlc2V0KEF1ZGlvQ29kaW5nTW9kdWxlOjpD
cmVhdGUoQXVkaW9Db2RpbmdNb2R1bGU6OkNvbmZpZygpKSk7CiAKICAgUnRwUnRjcDo6Q29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uOworCisgIC8vIFdlIGdyYWR1YWxseSByZW1vdmUgY29kZXBh
dGhzIHRoYXQgZGVwZW5kIG9uIFJUUCB3aGVuIHVzaW5nIG1lZGlhCisgIC8vIHRyYW5zcG9ydC4g
QWxsIG9mIHRoaXMgbG9naWMgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBmdXR1cmUKKyAgLy8gUlRQ
TWVkaWFUcmFuc3BvcnQuIEluIHRoaXMgY2FzZSBpdCBtZWFucyB0aGF0IG92ZXJoZWFkIGFuZCBi
YW5kd2lkdGgKKyAgLy8gb2JzZXJ2ZXJzIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gdXNpbmcg
bWVkaWEgdHJhbnNwb3J0LgorICBpZiAoIW1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBjb25maWd1
cmF0aW9uLm92ZXJoZWFkX29ic2VydmVyID0gdGhpczsKKyAgICBjb25maWd1cmF0aW9uLmJhbmR3
aWR0aF9jYWxsYmFjayA9IHJ0Y3Bfb2JzZXJ2ZXJfLmdldCgpOworICAgIGNvbmZpZ3VyYXRpb24u
dHJhbnNwb3J0X2ZlZWRiYWNrX2NhbGxiYWNrID0gZmVlZGJhY2tfb2JzZXJ2ZXJfcHJveHlfLmdl
dCgpOworICB9CisKICAgY29uZmlndXJhdGlvbi5hdWRpbyA9IHRydWU7CiAgIGNvbmZpZ3VyYXRp
b24ub3V0Z29pbmdfdHJhbnNwb3J0ID0gdGhpczsKLSAgY29uZmlndXJhdGlvbi5vdmVyaGVhZF9v
YnNlcnZlciA9IHRoaXM7Ci0gIGNvbmZpZ3VyYXRpb24uYmFuZHdpZHRoX2NhbGxiYWNrID0gcnRj
cF9vYnNlcnZlcl8uZ2V0KCk7CiAKICAgY29uZmlndXJhdGlvbi5wYWNlZF9zZW5kZXIgPSBydHBf
cGFja2V0X3NlbmRlcl9wcm94eV8uZ2V0KCk7CiAgIGNvbmZpZ3VyYXRpb24udHJhbnNwb3J0X3Nl
cXVlbmNlX251bWJlcl9hbGxvY2F0b3IgPQogICAgICAgc2VxX251bV9hbGxvY2F0b3JfcHJveHlf
LmdldCgpOwotICBjb25maWd1cmF0aW9uLnRyYW5zcG9ydF9mZWVkYmFja19jYWxsYmFjayA9IGZl
ZWRiYWNrX29ic2VydmVyX3Byb3h5Xy5nZXQoKTsKIAogICBjb25maWd1cmF0aW9uLmV2ZW50X2xv
ZyA9IGV2ZW50X2xvZ187CiAgIGNvbmZpZ3VyYXRpb24ucnR0X3N0YXRzID0gcnRjcF9ydHRfc3Rh
dHM7CiAgIGNvbmZpZ3VyYXRpb24ucmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyID0KICAgICAg
IHJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8uZ2V0KCk7CisgIGNvbmZpZ3VyYXRpb24uZXh0
bWFwX2FsbG93X21peGVkID0gZXh0bWFwX2FsbG93X21peGVkOworICBjb25maWd1cmF0aW9uLnJ0
Y3BfcmVwb3J0X2ludGVydmFsX21zID0gcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM7CiAKICAgX3J0
cFJ0Y3BNb2R1bGUucmVzZXQoUnRwUnRjcDo6Q3JlYXRlUnRwUnRjcChjb25maWd1cmF0aW9uKSk7
CiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRTZW5kaW5nTWVkaWFTdGF0dXMoZmFsc2UpOwotICBJbml0
KCk7Ci19CiAKLUNoYW5uZWxTZW5kOjp+Q2hhbm5lbFNlbmQoKSB7Ci0gIFRlcm1pbmF0ZSgpOwot
ICBSVENfRENIRUNLKCFjaGFubmVsX3N0YXRlXy5HZXQoKS5zZW5kaW5nKTsKLX0KLQotdm9pZCBD
aGFubmVsU2VuZDo6SW5pdCgpIHsKLSAgY2hhbm5lbF9zdGF0ZV8uUmVzZXQoKTsKKyAgLy8gV2Ug
d2FudCB0byBpbnZva2UgdGhlICdUYXJnZXRSYXRlT2JzZXJ2ZXInIGFuZCB8T25PdmVyaGVhZENo
YW5nZWR8CisgIC8vIGNhbGxiYWNrcyBhZnRlciB0aGUgYXVkaW9fY29kaW5nXyBpcyBmdWxseSBp
bml0aWFsaXplZC4KKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBSVENfRExPRyhMU19J
TkZPKSA8PCAiU2V0dGluZyBtZWRpYV90cmFuc3BvcnRfIHJhdGUgb2JzZXJ2ZXJzLiI7CisgICAg
bWVkaWFfdHJhbnNwb3J0Xy0+QWRkVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIodGhpcyk7Cisg
ICAgT25PdmVyaGVhZENoYW5nZWQobWVkaWFfdHJhbnNwb3J0Xy0+R2V0QXVkaW9QYWNrZXRPdmVy
aGVhZCgpKTsKKyAgfSBlbHNlIHsKKyAgICBSVENfRExPRyhMU19JTkZPKSA8PCAiTm90IHNldHRp
bmcgbWVkaWFfdHJhbnNwb3J0XyByYXRlIG9ic2VydmVycy4iOworICB9CiAKLSAgLy8gLS0tIEFk
ZCBtb2R1bGVzIHRvIHByb2Nlc3MgdGhyZWFkIChmb3IgcGVyaW9kaWMgc2NoZWR1bGF0aW9uKQog
ICBfbW9kdWxlUHJvY2Vzc1RocmVhZFB0ci0+UmVnaXN0ZXJNb2R1bGUoX3J0cFJ0Y3BNb2R1bGUu
Z2V0KCksIFJUQ19GUk9NX0hFUkUpOwogCi0gIC8vIC0tLSBBQ00gaW5pdGlhbGl6YXRpb24KLSAg
aW50IGVycm9yID0gYXVkaW9fY29kaW5nXy0+SW5pdGlhbGl6ZVJlY2VpdmVyKCk7Ci0gIFJUQ19E
Q0hFQ0tfRVEoMCwgZXJyb3IpOwotCi0gIC8vIC0tLSBSVFAvUlRDUCBtb2R1bGUgaW5pdGlhbGl6
YXRpb24KLQogICAvLyBFbnN1cmUgdGhhdCBSVENQIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3Ig
dGhlIGNyZWF0ZWQgY2hhbm5lbC4KICAgLy8gTm90ZSB0aGF0LCB0aGUgbW9kdWxlIHdpbGwga2Vl
cCBnZW5lcmF0aW5nIFJUQ1AgdW50aWwgaXQgaXMgZXhwbGljaXRseQogICAvLyBkaXNhYmxlZCBi
eSB0aGUgdXNlci4KQEAgLTQyNSwzNiArNzY4LDMwIEBAIHZvaWQgQ2hhbm5lbFNlbmQ6OkluaXQo
KSB7CiAgIC8vIFJUQ1AgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgogICBfcnRwUnRjcE1vZHVsZS0+
U2V0UlRDUFN0YXR1cyhSdGNwTW9kZTo6a0NvbXBvdW5kKTsKIAotICAvLyAtLS0gUmVnaXN0ZXIg
YWxsIHBlcm1hbmVudCBjYWxsYmFja3MKLSAgZXJyb3IgPSBhdWRpb19jb2RpbmdfLT5SZWdpc3Rl
clRyYW5zcG9ydENhbGxiYWNrKHRoaXMpOworICBpbnQgZXJyb3IgPSBhdWRpb19jb2RpbmdfLT5S
ZWdpc3RlclRyYW5zcG9ydENhbGxiYWNrKHRoaXMpOwogICBSVENfRENIRUNLX0VRKDAsIGVycm9y
KTsKIH0KIAotdm9pZCBDaGFubmVsU2VuZDo6VGVybWluYXRlKCkgeworQ2hhbm5lbFNlbmQ6On5D
aGFubmVsU2VuZCgpIHsKICAgUlRDX0RDSEVDSyhjb25zdHJ1Y3Rpb25fdGhyZWFkXy5DYWxsZWRP
blZhbGlkVGhyZWFkKCkpOwotICAvLyBNdXN0IGJlIGNhbGxlZCBvbiB0aGUgc2FtZSB0aHJlYWQg
YXMgSW5pdCgpLgorCisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgbWVkaWFfdHJhbnNw
b3J0Xy0+UmVtb3ZlVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIodGhpcyk7CisgIH0KIAogICBT
dG9wU2VuZCgpOwogCi0gIC8vIFRoZSBvcmRlciB0byBzYWZlbHkgc2h1dGRvd24gbW9kdWxlcyBp
biBhIGNoYW5uZWwgaXM6Ci0gIC8vIDEuIERlLXJlZ2lzdGVyIGNhbGxiYWNrcyBpbiBtb2R1bGVz
Ci0gIC8vIDIuIERlLXJlZ2lzdGVyIG1vZHVsZXMgaW4gcHJvY2VzcyB0aHJlYWQKLSAgLy8gMy4g
RGVzdHJveSBtb2R1bGVzCiAgIGludCBlcnJvciA9IGF1ZGlvX2NvZGluZ18tPlJlZ2lzdGVyVHJh
bnNwb3J0Q2FsbGJhY2soTlVMTCk7CiAgIFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwogCi0gIC8v
IERlLXJlZ2lzdGVyIG1vZHVsZXMgaW4gcHJvY2VzcyB0aHJlYWQKICAgaWYgKF9tb2R1bGVQcm9j
ZXNzVGhyZWFkUHRyKQogICAgIF9tb2R1bGVQcm9jZXNzVGhyZWFkUHRyLT5EZVJlZ2lzdGVyTW9k
dWxlKF9ydHBSdGNwTW9kdWxlLmdldCgpKTsKLQotICAvLyBFbmQgb2YgbW9kdWxlcyBzaHV0ZG93
bgogfQogCi1pbnQzMl90IENoYW5uZWxTZW5kOjpTdGFydFNlbmQoKSB7Ci0gIGlmIChjaGFubmVs
X3N0YXRlXy5HZXQoKS5zZW5kaW5nKSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgY2hhbm5lbF9z
dGF0ZV8uU2V0U2VuZGluZyh0cnVlKTsKK3ZvaWQgQ2hhbm5lbFNlbmQ6OlN0YXJ0U2VuZCgpIHsK
KyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOworICBSVENfRENI
RUNLKCFzZW5kaW5nXyk7CisgIHNlbmRpbmdfID0gdHJ1ZTsKIAogICAvLyBSZXN1bWUgdGhlIHBy
ZXZpb3VzIHNlcXVlbmNlIG51bWJlciB3aGljaCB3YXMgcmVzZXQgYnkgU3RvcFNlbmQoKS4gVGhp
cwogICAvLyBuZWVkcyB0byBiZSBkb25lIGJlZm9yZSB8c2VuZGluZ3wgaXMgc2V0IHRvIHRydWUg
b24gdGhlIFJUUC9SVENQIG1vZHVsZS4KQEAgLTQ2MiwyNiArNzk5LDIxIEBAIGludDMyX3QgQ2hh
bm5lbFNlbmQ6OlN0YXJ0U2VuZCgpIHsKICAgICBfcnRwUnRjcE1vZHVsZS0+U2V0U2VxdWVuY2VO
dW1iZXIoc2VuZF9zZXF1ZW5jZV9udW1iZXJfKTsKICAgfQogICBfcnRwUnRjcE1vZHVsZS0+U2V0
U2VuZGluZ01lZGlhU3RhdHVzKHRydWUpOwotICBpZiAoX3J0cFJ0Y3BNb2R1bGUtPlNldFNlbmRp
bmdTdGF0dXModHJ1ZSkgIT0gMCkgewotICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiU3RhcnRT
ZW5kKCkgUlRQL1JUQ1AgZmFpbGVkIHRvIHN0YXJ0IHNlbmRpbmciOwotICAgIF9ydHBSdGNwTW9k
dWxlLT5TZXRTZW5kaW5nTWVkaWFTdGF0dXMoZmFsc2UpOwotICAgIHJ0Yzo6Q3JpdFNjb3BlIGNz
KCZfY2FsbGJhY2tDcml0U2VjdCk7Ci0gICAgY2hhbm5lbF9zdGF0ZV8uU2V0U2VuZGluZyhmYWxz
ZSk7Ci0gICAgcmV0dXJuIC0xOwotICB9CisgIGludCByZXQgPSBfcnRwUnRjcE1vZHVsZS0+U2V0
U2VuZGluZ1N0YXR1cyh0cnVlKTsKKyAgUlRDX0RDSEVDS19FUSgwLCByZXQpOwogICB7CiAgICAg
Ly8gSXQgaXMgbm93IE9LIHRvIHN0YXJ0IHBvc3RpbmcgdGFza3MgdG8gdGhlIGVuY29kZXIgdGFz
ayBxdWV1ZS4KICAgICBydGM6OkNyaXRTY29wZSBjcygmZW5jb2Rlcl9xdWV1ZV9sb2NrXyk7CiAg
ICAgZW5jb2Rlcl9xdWV1ZV9pc19hY3RpdmVfID0gdHJ1ZTsKICAgfQotICByZXR1cm4gMDsKIH0K
IAogdm9pZCBDaGFubmVsU2VuZDo6U3RvcFNlbmQoKSB7Ci0gIGlmICghY2hhbm5lbF9zdGF0ZV8u
R2V0KCkuc2VuZGluZykgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVj
a2VyXyk7CisgIGlmICghc2VuZGluZ18pIHsKICAgICByZXR1cm47CiAgIH0KLSAgY2hhbm5lbF9z
dGF0ZV8uU2V0U2VuZGluZyhmYWxzZSk7CisgIHNlbmRpbmdfID0gZmFsc2U7CiAKICAgLy8gUG9z
dCBhIHRhc2sgdG8gdGhlIGVuY29kZXIgdGhyZWFkIHdoaWNoIHNldHMgYW4gZXZlbnQgd2hlbiB0
aGUgdGFzayBpcwogICAvLyBleGVjdXRlZC4gV2Uga25vdyB0aGF0IG5vIG1vcmUgZW5jb2Rpbmcg
dGFza3Mgd2lsbCBiZSBhZGRlZCB0byB0aGUgdGFzawpAQCAtNDkxLDcgKzgyMyw3IEBAIHZvaWQg
Q2hhbm5lbFNlbmQ6OlN0b3BTZW5kKCkgewogICAvLyB0byBhY2NjZXNzIGFuZCBpbnZhbGlkIGNo
YW5uZWwgb2JqZWN0LgogICBSVENfRENIRUNLKGVuY29kZXJfcXVldWVfKTsKIAotICBydGM6OkV2
ZW50IGZsdXNoKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZmx1c2g7CiAgIHsKICAgICAv
LyBDbGVhciB8ZW5jb2Rlcl9xdWV1ZV9pc19hY3RpdmVffCB1bmRlciBsb2NrIHRvIHByZXZlbnQg
YW55IG90aGVyIHRhc2tzCiAgICAgLy8gdGhhbiB0aGlzIGZpbmFsICJmbHVzaCB0YXNrIiB0byBi
ZSBwb3N0ZWQgb24gdGhlIHF1ZXVlLgpAQCAtNTE5LDYgKzg1MSw3IEBAIHZvaWQgQ2hhbm5lbFNl
bmQ6OlN0b3BTZW5kKCkgewogCiBib29sIENoYW5uZWxTZW5kOjpTZXRFbmNvZGVyKGludCBwYXls
b2FkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0VuY29kZXI+IGVuY29kZXIpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJl
YWRfY2hlY2tlcl8pOwogICBSVENfRENIRUNLX0dFKHBheWxvYWRfdHlwZSwgMCk7CiAgIFJUQ19E
Q0hFQ0tfTEUocGF5bG9hZF90eXBlLCAxMjcpOwogICAvLyBUT0RPKG9zc3UpOiBNYWtlIENvZGVj
SW5zdHMgdXAsIGZvciBub3c6IG9uZSBmb3IgdGhlIFJUUC9SVENQIG1vZHVsZSBhbmQKQEAgLTU0
OSwyNSArODgyLDQ4IEBAIGJvb2wgQ2hhbm5lbFNlbmQ6OlNldEVuY29kZXIoaW50IHBheWxvYWRf
dHlwZSwKICAgICB9CiAgIH0KIAorICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIHJ0Yzo6
Q3JpdFNjb3BlIGNzKCZtZWRpYV90cmFuc3BvcnRfbG9ja18pOworICAgIG1lZGlhX3RyYW5zcG9y
dF9wYXlsb2FkX3R5cGVfID0gcGF5bG9hZF90eXBlOworICAgIC8vIFRPRE8obmlzc2UpOiBDdXJy
ZW50bHkgYnJva2VuIGZvciBHNzIyLCBzaW5jZSB0aW1lc3RhbXBzIHBhc3NlZCB0aHJvdWdoCisg
ICAgLy8gZW5jb2RlciB1c2UgUlRQIGNsb2NrIHJhdGhlciB0aGFuIHNhbXBsZSBjb3VudCwgYW5k
IHRoZXkgZGlmZmVyIGZvciBHNzIyLgorICAgIG1lZGlhX3RyYW5zcG9ydF9zYW1wbGluZ19mcmVx
dWVuY3lfID0gZW5jb2Rlci0+UnRwVGltZXN0YW1wUmF0ZUh6KCk7CisgIH0KICAgYXVkaW9fY29k
aW5nXy0+U2V0RW5jb2RlcihzdGQ6Om1vdmUoZW5jb2RlcikpOwogICByZXR1cm4gdHJ1ZTsKIH0K
IAogdm9pZCBDaGFubmVsU2VuZDo6TW9kaWZ5RW5jb2RlcigKICAgICBydGM6OkZ1bmN0aW9uVmll
dzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+IG1vZGlmaWVyKSB7CisgIFJU
Q19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgYXVkaW9fY29kaW5n
Xy0+TW9kaWZ5RW5jb2Rlcihtb2RpZmllcik7CiB9CiAKLXZvaWQgQ2hhbm5lbFNlbmQ6OlNldEJp
dFJhdGUoaW50IGJpdHJhdGVfYnBzLCBpbnQ2NF90IHByb2JpbmdfaW50ZXJ2YWxfbXMpIHsKK3Zv
aWQgQ2hhbm5lbFNlbmQ6Ok9uQml0cmF0ZUFsbG9jYXRpb24oQml0cmF0ZUFsbG9jYXRpb25VcGRh
dGUgdXBkYXRlKSB7CisgIC8vIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgb24gdGhlIHdvcmtl
ciB0aHJlYWQsIG1vZHVsZSBwcm9jZXNzIHRocmVhZAorICAvLyBvciBvbiBhIFRhc2tRdWV1ZSB2
aWEgVmlkZW9TZW5kU3RyZWFtSW1wbDo6T25FbmNvZGVyQ29uZmlndXJhdGlvbkNoYW5nZWQuCisg
IC8vIFRPRE8oc29sZW5iZXJnKTogRmlndXJlIG91dCBhIGdvb2Qgd2F5IHRvIGNoZWNrIHRoaXMg
b3IgZW5mb3JjZSBjYWxsaW5nCisgIC8vIHJ1bGVzLgorICAvLyBSVENfRENIRUNLKHdvcmtlcl90
aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpIHx8CisgIC8vICAgICAgICAgICAg
bW9kdWxlX3Byb2Nlc3NfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Cisg
IHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmJpdHJhdGVfY3JpdF9zZWN0aW9uXyk7CisKICAgYXVkaW9f
Y29kaW5nXy0+TW9kaWZ5RW5jb2RlcihbJl0oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4q
IGVuY29kZXIpIHsKICAgICBpZiAoKmVuY29kZXIpIHsKLSAgICAgICgqZW5jb2RlciktPk9uUmVj
ZWl2ZWRVcGxpbmtCYW5kd2lkdGgoYml0cmF0ZV9icHMsIHByb2JpbmdfaW50ZXJ2YWxfbXMpOwor
ICAgICAgKCplbmNvZGVyKS0+T25SZWNlaXZlZFVwbGlua0FsbG9jYXRpb24odXBkYXRlKTsKICAg
ICB9CiAgIH0pOwotICByZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLT5TZXRNYXhSYXRlKGJp
dHJhdGVfYnBzKTsKKyAgcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXy0+U2V0TWF4UmF0ZSh1
cGRhdGUudGFyZ2V0X2JpdHJhdGUuYnBzKCkpOworICBjb25maWd1cmVkX2JpdHJhdGVfYnBzXyA9
IHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5icHMoKTsKK30KKworaW50IENoYW5uZWxTZW5kOjpHZXRC
aXRyYXRlKCkgY29uc3QgeworICBydGM6OkNyaXRTY29wZSBsb2NrKCZiaXRyYXRlX2NyaXRfc2Vj
dGlvbl8pOworICByZXR1cm4gY29uZmlndXJlZF9iaXRyYXRlX2Jwc187CiB9CiAKIHZvaWQgQ2hh
bm5lbFNlbmQ6Ok9uVHdjY0Jhc2VkVXBsaW5rUGFja2V0TG9zc1JhdGUoZmxvYXQgcGFja2V0X2xv
c3NfcmF0ZSkgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7
CiAgIGlmICghdXNlX3R3Y2NfcGxyX2Zvcl9hbmFfKQogICAgIHJldHVybjsKICAgYXVkaW9fY29k
aW5nXy0+TW9kaWZ5RW5jb2RlcihbJl0oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVu
Y29kZXIpIHsKQEAgLTU3OSw2ICs5MzUsNyBAQCB2b2lkIENoYW5uZWxTZW5kOjpPblR3Y2NCYXNl
ZFVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpIHsKIAogdm9pZCBD
aGFubmVsU2VuZDo6T25SZWNvdmVyYWJsZVVwbGlua1BhY2tldExvc3NSYXRlKAogICAgIGZsb2F0
IHJlY292ZXJhYmxlX3BhY2tldF9sb3NzX3JhdGUpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndv
cmtlcl90aHJlYWRfY2hlY2tlcl8pOwogICBhdWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKFsm
XShzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2RlcikgewogICAgIGlmICgqZW5j
b2RlcikgewogICAgICAgKCplbmNvZGVyKS0+T25SZWNlaXZlZFVwbGlua1JlY292ZXJhYmxlUGFj
a2V0TG9zc0ZyYWN0aW9uKApAQCAtNTk3LDQ3ICs5NTQsMjIgQEAgdm9pZCBDaGFubmVsU2VuZDo6
T25VcGxpbmtQYWNrZXRMb3NzUmF0ZShmbG9hdCBwYWNrZXRfbG9zc19yYXRlKSB7CiAgIH0pOwog
fQogCi1ib29sIENoYW5uZWxTZW5kOjpFbmFibGVBdWRpb05ldHdvcmtBZGFwdG9yKGNvbnN0IHN0
ZDo6c3RyaW5nJiBjb25maWdfc3RyaW5nKSB7Ci0gIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICBh
dWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNv
ZGVyPiogZW5jb2RlcikgewotICAgIGlmICgqZW5jb2RlcikgewotICAgICAgc3VjY2VzcyA9Ci0g
ICAgICAgICAgKCplbmNvZGVyKS0+RW5hYmxlQXVkaW9OZXR3b3JrQWRhcHRvcihjb25maWdfc3Ry
aW5nLCBldmVudF9sb2dfKTsKLSAgICB9Ci0gIH0pOwotICByZXR1cm4gc3VjY2VzczsKLX0KLQot
dm9pZCBDaGFubmVsU2VuZDo6RGlzYWJsZUF1ZGlvTmV0d29ya0FkYXB0b3IoKSB7Ci0gIGF1ZGlv
X2NvZGluZ18tPk1vZGlmeUVuY29kZXIoWyZdKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+
KiBlbmNvZGVyKSB7Ci0gICAgaWYgKCplbmNvZGVyKQotICAgICAgKCplbmNvZGVyKS0+RGlzYWJs
ZUF1ZGlvTmV0d29ya0FkYXB0b3IoKTsKLSAgfSk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmQ6OlNl
dFJlY2VpdmVyRnJhbWVMZW5ndGhSYW5nZShpbnQgbWluX2ZyYW1lX2xlbmd0aF9tcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X2ZyYW1lX2xl
bmd0aF9tcykgewotICBhdWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKFsmXShzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9FbmNvZGVyPiogZW5jb2RlcikgewotICAgIGlmICgqZW5jb2RlcikgewotICAg
ICAgKCplbmNvZGVyKS0+U2V0UmVjZWl2ZXJGcmFtZUxlbmd0aFJhbmdlKG1pbl9mcmFtZV9sZW5n
dGhfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4
X2ZyYW1lX2xlbmd0aF9tcyk7Ci0gICAgfQotICB9KTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZDo6
UmVnaXN0ZXJUcmFuc3BvcnQoVHJhbnNwb3J0KiB0cmFuc3BvcnQpIHsKLSAgcnRjOjpDcml0U2Nv
cGUgY3MoJl9jYWxsYmFja0NyaXRTZWN0KTsKLSAgX3RyYW5zcG9ydFB0ciA9IHRyYW5zcG9ydDsK
LX0KKy8vIFRPRE8obmlzc2UpOiBEZWxldGUgYWx3YXlzLXRydWUgcmV0dXJuIHZhbHVlLgorYm9v
bCBDaGFubmVsU2VuZDo6UmVjZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgpIHsKKyAgLy8gTWF5IGJlIGNhbGxlZCBvbiBlaXRoZXIgd29ya2VyIHRocmVh
ZCBvciBuZXR3b3JrIHRocmVhZC4KKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICAvLyBJ
Z25vcmUgUlRDUCBwYWNrZXRzIHdoaWxlIG1lZGlhIHRyYW5zcG9ydCBpcyB1c2VkLgorICAgIC8v
IFRob3NlIHBhY2tldHMgc2hvdWxkIG5vdCBhcnJpdmUsIGJ1dCB3ZSBhcmUgc2VlaW5nIG9jY2Fz
aW9uYWwgcGFja2V0cy4KKyAgICByZXR1cm4gMDsKKyAgfQogCi1pbnQzMl90IENoYW5uZWxTZW5k
OjpSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
ewogICAvLyBEZWxpdmVyIFJUQ1AgcGFja2V0IHRvIFJUUC9SVENQIG1vZHVsZSBmb3IgcGFyc2lu
ZwogICBfcnRwUnRjcE1vZHVsZS0+SW5jb21pbmdSdGNwUGFja2V0KGRhdGEsIGxlbmd0aCk7CiAK
ICAgaW50NjRfdCBydHQgPSBHZXRSVFQoKTsKICAgaWYgKHJ0dCA9PSAwKSB7CiAgICAgLy8gV2Fp
dGluZyBmb3IgdmFsaWQgUlRULgotICAgIHJldHVybiAwOworICAgIHJldHVybiB0cnVlOwogICB9
CiAKICAgaW50NjRfdCBuYWNrX3dpbmRvd19tcyA9IHJ0dDsKQEAgLTY0OCwxNiArOTgwLDEyIEBA
IGludDMyX3QgQ2hhbm5lbFNlbmQ6OlJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKSB7CiAgIH0KICAgcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVy
Xy0+U2V0V2luZG93U2l6ZShuYWNrX3dpbmRvd19tcyk7CiAKLSAgLy8gSW52b2tlIGF1ZGlvIGVu
Y29kZXJzIE9uUmVjZWl2ZWRSdHQoKS4KLSAgYXVkaW9fY29kaW5nXy0+TW9kaWZ5RW5jb2Rlcihb
Jl0oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXIpIHsKLSAgICBpZiAoKmVu
Y29kZXIpCi0gICAgICAoKmVuY29kZXIpLT5PblJlY2VpdmVkUnR0KHJ0dCk7Ci0gIH0pOwotCi0g
IHJldHVybiAwOworICBPblJlY2VpdmVkUnR0KHJ0dCk7CisgIHJldHVybiB0cnVlOwogfQogCiB2
b2lkIENoYW5uZWxTZW5kOjpTZXRJbnB1dE11dGUoYm9vbCBlbmFibGUpIHsKKyAgUlRDX0RDSEVD
S19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwogICBydGM6OkNyaXRTY29wZSBjcygm
dm9sdW1lX3NldHRpbmdzX2NyaXRzZWN0Xyk7CiAgIGlucHV0X211dGVfID0gZW5hYmxlOwogfQpA
QCAtNjY3LDI0ICs5OTUsMjYgQEAgYm9vbCBDaGFubmVsU2VuZDo6SW5wdXRNdXRlKCkgY29uc3Qg
ewogICByZXR1cm4gaW5wdXRfbXV0ZV87CiB9CiAKLWludCBDaGFubmVsU2VuZDo6U2VuZFRlbGVw
aG9uZUV2ZW50T3V0YmFuZChpbnQgZXZlbnQsIGludCBkdXJhdGlvbl9tcykgeworYm9vbCBDaGFu
bmVsU2VuZDo6U2VuZFRlbGVwaG9uZUV2ZW50T3V0YmFuZChpbnQgZXZlbnQsIGludCBkdXJhdGlv
bl9tcykgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2VyXyk7CiAg
IFJUQ19EQ0hFQ0tfTEUoMCwgZXZlbnQpOwogICBSVENfRENIRUNLX0dFKDI1NSwgZXZlbnQpOwog
ICBSVENfRENIRUNLX0xFKDAsIGR1cmF0aW9uX21zKTsKICAgUlRDX0RDSEVDS19HRSg2NTUzNSwg
ZHVyYXRpb25fbXMpOwotICBpZiAoIVNlbmRpbmcoKSkgewotICAgIHJldHVybiAtMTsKKyAgaWYg
KCFzZW5kaW5nXykgeworICAgIHJldHVybiBmYWxzZTsKICAgfQogICBpZiAoX3J0cFJ0Y3BNb2R1
bGUtPlNlbmRUZWxlcGhvbmVFdmVudE91dGJhbmQoCiAgICAgICAgICAgZXZlbnQsIGR1cmF0aW9u
X21zLCBrVGVsZXBob25lRXZlbnRBdHRlbnVhdGlvbmRCKSAhPSAwKSB7CiAgICAgUlRDX0RMT0co
TFNfRVJST1IpIDw8ICJTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKCkgZmFpbGVkIHRvIHNlbmQg
ZXZlbnQiOwotICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gZmFsc2U7CiAgIH0KLSAgcmV0dXJu
IDA7CisgIHJldHVybiB0cnVlOwogfQogCi1pbnQgQ2hhbm5lbFNlbmQ6OlNldFNlbmRUZWxlcGhv
bmVFdmVudFBheWxvYWRUeXBlKGludCBwYXlsb2FkX3R5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXlsb2FkX2ZyZXF1ZW5jeSkgewor
Ym9vbCBDaGFubmVsU2VuZDo6U2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUoaW50IHBh
eWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBwYXlsb2FkX2ZyZXF1ZW5jeSkgeworICBSVENfRENIRUNLX1JVTl9PTigmd29y
a2VyX3RocmVhZF9jaGVja2VyXyk7CiAgIFJUQ19EQ0hFQ0tfTEUoMCwgcGF5bG9hZF90eXBlKTsK
ICAgUlRDX0RDSEVDS19HRSgxMjcsIHBheWxvYWRfdHlwZSk7CiAgIENvZGVjSW5zdCBjb2RlYyA9
IHswfTsKQEAgLTY5NywzNCArMTAyNyw0NCBAQCBpbnQgQ2hhbm5lbFNlbmQ6OlNldFNlbmRUZWxl
cGhvbmVFdmVudFBheWxvYWRUeXBlKGludCBwYXlsb2FkX3R5cGUsCiAgICAgICBSVENfRExPRyhM
U19FUlJPUikKICAgICAgICAgICA8PCAiU2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUo
KSBmYWlsZWQgdG8gcmVnaXN0ZXIgIgogICAgICAgICAgICAgICJzZW5kIHBheWxvYWQgdHlwZSI7
Ci0gICAgICByZXR1cm4gLTE7CisgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICB9Ci0gIHJl
dHVybiAwOworICByZXR1cm4gdHJ1ZTsKIH0KIAotaW50IENoYW5uZWxTZW5kOjpTZXRMb2NhbFNT
UkModW5zaWduZWQgaW50IHNzcmMpIHsKLSAgaWYgKGNoYW5uZWxfc3RhdGVfLkdldCgpLnNlbmRp
bmcpIHsKLSAgICBSVENfRExPRyhMU19FUlJPUikgPDwgIlNldExvY2FsU1NSQygpIGFscmVhZHkg
c2VuZGluZyI7Ci0gICAgcmV0dXJuIC0xOwordm9pZCBDaGFubmVsU2VuZDo6U2V0TG9jYWxTU1JD
KHVpbnQzMl90IHNzcmMpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hl
Y2tlcl8pOworICBSVENfRENIRUNLKCFzZW5kaW5nXyk7CisKKyAgaWYgKG1lZGlhX3RyYW5zcG9y
dF8pIHsKKyAgICBydGM6OkNyaXRTY29wZSBjcygmbWVkaWFfdHJhbnNwb3J0X2xvY2tfKTsKKyAg
ICBtZWRpYV90cmFuc3BvcnRfY2hhbm5lbF9pZF8gPSBzc3JjOwogICB9CiAgIF9ydHBSdGNwTW9k
dWxlLT5TZXRTU1JDKHNzcmMpOwotICByZXR1cm4gMDsKIH0KIAogdm9pZCBDaGFubmVsU2VuZDo6
U2V0TWlkKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsIGludCBleHRlbnNpb25faWQpIHsKKyAgUlRD
X0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwogICBpbnQgcmV0ID0gU2V0
U2VuZFJ0cEhlYWRlckV4dGVuc2lvbih0cnVlLCBrUnRwRXh0ZW5zaW9uTWlkLCBleHRlbnNpb25f
aWQpOwogICBSVENfRENIRUNLX0VRKDAsIHJldCk7CiAgIF9ydHBSdGNwTW9kdWxlLT5TZXRNaWQo
bWlkKTsKIH0KIAotaW50IENoYW5uZWxTZW5kOjpTZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25T
dGF0dXMoYm9vbCBlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGlkKSB7Cit2b2lkIENoYW5uZWxTZW5kOjpTZXRF
eHRtYXBBbGxvd01peGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSB7CisgIFJUQ19EQ0hFQ0tf
UlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKKyAgX3J0cFJ0Y3BNb2R1bGUtPlNldEV4
dG1hcEFsbG93TWl4ZWQoZXh0bWFwX2FsbG93X21peGVkKTsKK30KKwordm9pZCBDaGFubmVsU2Vu
ZDo6U2V0U2VuZEF1ZGlvTGV2ZWxJbmRpY2F0aW9uU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgaWQp
IHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwogICBfaW5j
bHVkZUF1ZGlvTGV2ZWxJbmRpY2F0aW9uID0gZW5hYmxlOwotICByZXR1cm4gU2V0U2VuZFJ0cEhl
YWRlckV4dGVuc2lvbihlbmFibGUsIGtSdHBFeHRlbnNpb25BdWRpb0xldmVsLCBpZCk7CisgIGlu
dCByZXQgPSBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKGVuYWJsZSwga1J0cEV4dGVuc2lvbkF1
ZGlvTGV2ZWwsIGlkKTsKKyAgUlRDX0RDSEVDS19FUSgwLCByZXQpOwogfQogCiB2b2lkIENoYW5u
ZWxTZW5kOjpFbmFibGVTZW5kVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIoaW50IGlkKSB7CisgIFJU
Q19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgaW50IHJldCA9CiAg
ICAgICBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKHRydWUsIGtSdHBFeHRlbnNpb25UcmFuc3Bv
cnRTZXF1ZW5jZU51bWJlciwgaWQpOwogICBSVENfRENIRUNLX0VRKDAsIHJldCk7CkBAIC03MzMs
NiArMTA3Myw3IEBAIHZvaWQgQ2hhbm5lbFNlbmQ6OkVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5j
ZU51bWJlcihpbnQgaWQpIHsKIHZvaWQgQ2hhbm5lbFNlbmQ6OlJlZ2lzdGVyU2VuZGVyQ29uZ2Vz
dGlvbkNvbnRyb2xPYmplY3RzKAogICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJm
YWNlKiB0cmFuc3BvcnQsCiAgICAgUnRjcEJhbmR3aWR0aE9ic2VydmVyKiBiYW5kd2lkdGhfb2Jz
ZXJ2ZXIpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwog
ICBSdHBQYWNrZXRTZW5kZXIqIHJ0cF9wYWNrZXRfc2VuZGVyID0gdHJhbnNwb3J0LT5wYWNrZXRf
c2VuZGVyKCk7CiAgIFRyYW5zcG9ydEZlZWRiYWNrT2JzZXJ2ZXIqIHRyYW5zcG9ydF9mZWVkYmFj
a19vYnNlcnZlciA9CiAgICAgICB0cmFuc3BvcnQtPnRyYW5zcG9ydF9mZWVkYmFja19vYnNlcnZl
cigpOwpAQCAtNzU0LDYgKzEwOTUsNyBAQCB2b2lkIENoYW5uZWxTZW5kOjpSZWdpc3RlclNlbmRl
ckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKIH0KIAogdm9pZCBDaGFubmVsU2VuZDo6UmVzZXRT
ZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ3
b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgUlRDX0RDSEVDSyhwYWNrZXRfcm91dGVyXyk7CiAg
IF9ydHBSdGNwTW9kdWxlLT5TZXRTdG9yZVBhY2tldHNTdGF0dXMoZmFsc2UsIDYwMCk7CiAgIHJ0
Y3Bfb2JzZXJ2ZXJfLT5TZXRCYW5kd2lkdGhPYnNlcnZlcihudWxscHRyKTsKQEAgLTc2NCwzNSAr
MTEwNiwyNSBAQCB2b2lkIENoYW5uZWxTZW5kOjpSZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9s
T2JqZWN0cygpIHsKICAgcnRwX3BhY2tldF9zZW5kZXJfcHJveHlfLT5TZXRQYWNrZXRTZW5kZXIo
bnVsbHB0cik7CiB9CiAKLXZvaWQgQ2hhbm5lbFNlbmQ6OlNldFJUQ1BTdGF0dXMoYm9vbCBlbmFi
bGUpIHsKLSAgX3J0cFJ0Y3BNb2R1bGUtPlNldFJUQ1BTdGF0dXMoZW5hYmxlID8gUnRjcE1vZGU6
OmtDb21wb3VuZCA6IFJ0Y3BNb2RlOjprT2ZmKTsKLX0KLQotaW50IENoYW5uZWxTZW5kOjpTZXRS
VENQX0NOQU1FKGNvbnN0IGNoYXIgY05hbWVbMjU2XSkgewotICBpZiAoX3J0cFJ0Y3BNb2R1bGUt
PlNldENOQU1FKGNOYW1lKSAhPSAwKSB7Ci0gICAgUlRDX0RMT0coTFNfRVJST1IpIDw8ICJTZXRS
VENQX0NOQU1FKCkgZmFpbGVkIHRvIHNldCBSVENQIENOQU1FIjsKLSAgICByZXR1cm4gLTE7Ci0g
IH0KLSAgcmV0dXJuIDA7Cit2b2lkIENoYW5uZWxTZW5kOjpTZXRSVENQX0NOQU1FKGFic2w6OnN0
cmluZ192aWV3IGNfbmFtZSkgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9j
aGVja2VyXyk7CisgIC8vIE5vdGU6IFNldENOQU1FKCkgYWNjZXB0cyBhIGMgc3RyaW5nIG9mIGxl
bmd0aCBhdCBtb3N0IDI1NS4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgY19uYW1lX2xpbWl0ZWQoY19u
YW1lLnN1YnN0cigwLCAyNTUpKTsKKyAgaW50IHJldCA9IF9ydHBSdGNwTW9kdWxlLT5TZXRDTkFN
RShjX25hbWVfbGltaXRlZC5jX3N0cigpKSAhPSAwOworICBSVENfRENIRUNLX0VRKDAsIHJldCkg
PDwgIlNldFJUQ1BfQ05BTUUoKSBmYWlsZWQgdG8gc2V0IFJUQ1AgQ05BTUUiOwogfQogCi1pbnQg
Q2hhbm5lbFNlbmQ6OkdldFJlbW90ZVJUQ1BSZXBvcnRCbG9ja3MoCi0gICAgc3RkOjp2ZWN0b3I8
UmVwb3J0QmxvY2s+KiByZXBvcnRfYmxvY2tzKSB7Ci0gIGlmIChyZXBvcnRfYmxvY2tzID09IE5V
TEwpIHsKLSAgICBSVENfRExPRyhMU19FUlJPUikgPDwgIkdldFJlbW90ZVJUQ1BSZXBvcnRCbG9j
aygpcyBpbnZhbGlkIHJlcG9ydF9ibG9ja3MuIjsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLQorc3Rk
Ojp2ZWN0b3I8UmVwb3J0QmxvY2s+IENoYW5uZWxTZW5kOjpHZXRSZW1vdGVSVENQUmVwb3J0Qmxv
Y2tzKCkgY29uc3QgeworICBSVENfRENIRUNLX1JVTl9PTigmd29ya2VyX3RocmVhZF9jaGVja2Vy
Xyk7CiAgIC8vIEdldCB0aGUgcmVwb3J0IGJsb2NrcyBmcm9tIHRoZSBsYXRlc3QgcmVjZWl2ZWQg
UlRDUCBTZW5kZXIgb3IgUmVjZWl2ZXIKICAgLy8gUmVwb3J0LiBFYWNoIGVsZW1lbnQgaW4gdGhl
IHZlY3RvciBjb250YWlucyB0aGUgc2VuZGVyJ3MgU1NSQyBhbmQgYQogICAvLyByZXBvcnQgYmxv
Y2sgYWNjb3JkaW5nIHRvIFJGQyAzNTUwLgogICBzdGQ6OnZlY3RvcjxSVENQUmVwb3J0QmxvY2s+
IHJ0Y3BfcmVwb3J0X2Jsb2NrczsKLSAgaWYgKF9ydHBSdGNwTW9kdWxlLT5SZW1vdGVSVENQU3Rh
dCgmcnRjcF9yZXBvcnRfYmxvY2tzKSAhPSAwKSB7Ci0gICAgcmV0dXJuIC0xOwotICB9CiAKLSAg
aWYgKHJ0Y3BfcmVwb3J0X2Jsb2Nrcy5lbXB0eSgpKQotICAgIHJldHVybiAwOworICBpbnQgcmV0
ID0gX3J0cFJ0Y3BNb2R1bGUtPlJlbW90ZVJUQ1BTdGF0KCZydGNwX3JlcG9ydF9ibG9ja3MpOwor
ICBSVENfRENIRUNLX0VRKDAsIHJldCk7CisKKyAgc3RkOjp2ZWN0b3I8UmVwb3J0QmxvY2s+IHJl
cG9ydF9ibG9ja3M7CiAKICAgc3RkOjp2ZWN0b3I8UlRDUFJlcG9ydEJsb2NrPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBydGNwX3JlcG9ydF9ibG9ja3MuYmVnaW4oKTsKICAgZm9yICg7IGl0ICE9IHJ0
Y3BfcmVwb3J0X2Jsb2Nrcy5lbmQoKTsgKytpdCkgewpAQCAtODA2LDE5ICsxMTM4LDE2IEBAIGlu
dCBDaGFubmVsU2VuZDo6R2V0UmVtb3RlUlRDUFJlcG9ydEJsb2NrcygKICAgICByZXBvcnRfYmxv
Y2suaW50ZXJhcnJpdmFsX2ppdHRlciA9IGl0LT5qaXR0ZXI7CiAgICAgcmVwb3J0X2Jsb2NrLmxh
c3RfU1JfdGltZXN0YW1wID0gaXQtPmxhc3Rfc2VuZGVyX3JlcG9ydF90aW1lc3RhbXA7CiAgICAg
cmVwb3J0X2Jsb2NrLmRlbGF5X3NpbmNlX2xhc3RfU1IgPSBpdC0+ZGVsYXlfc2luY2VfbGFzdF9z
ZW5kZXJfcmVwb3J0OwotICAgIHJlcG9ydF9ibG9ja3MtPnB1c2hfYmFjayhyZXBvcnRfYmxvY2sp
OworICAgIHJlcG9ydF9ibG9ja3MucHVzaF9iYWNrKHJlcG9ydF9ibG9jayk7CiAgIH0KLSAgcmV0
dXJuIDA7CisgIHJldHVybiByZXBvcnRfYmxvY2tzOwogfQogCi1pbnQgQ2hhbm5lbFNlbmQ6Okdl
dFJUUFN0YXRpc3RpY3MoQ2FsbFNlbmRTdGF0aXN0aWNzJiBzdGF0cykgewotICAvLyAtLS0gUnRj
cFN0YXRpc3RpY3MKLQotICAvLyAtLS0gUlRUCitDYWxsU2VuZFN0YXRpc3RpY3MgQ2hhbm5lbFNl
bmQ6OkdldFJUQ1BTdGF0aXN0aWNzKCkgY29uc3QgeworICBSVENfRENIRUNLX1JVTl9PTigmd29y
a2VyX3RocmVhZF9jaGVja2VyXyk7CisgIENhbGxTZW5kU3RhdGlzdGljcyBzdGF0cyA9IHswfTsK
ICAgc3RhdHMucnR0TXMgPSBHZXRSVFQoKTsKIAotICAvLyAtLS0gRGF0YSBjb3VudGVycwotCiAg
IHNpemVfdCBieXRlc1NlbnQoMCk7CiAgIHVpbnQzMl90IHBhY2tldHNTZW50KDApOwogCkBAIC04
MzEsMjQgKzExNjAsMTIgQEAgaW50IENoYW5uZWxTZW5kOjpHZXRSVFBTdGF0aXN0aWNzKENhbGxT
ZW5kU3RhdGlzdGljcyYgc3RhdHMpIHsKICAgc3RhdHMuYnl0ZXNTZW50ID0gYnl0ZXNTZW50Owog
ICBzdGF0cy5wYWNrZXRzU2VudCA9IHBhY2tldHNTZW50OwogCi0gIHJldHVybiAwOwotfQotCi12
b2lkIENoYW5uZWxTZW5kOjpTZXROQUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4TnVtYmVy
T2ZQYWNrZXRzKSB7Ci0gIC8vIE5vbmUgb2YgdGhlc2UgZnVuY3Rpb25zIGNhbiBmYWlsLgotICBp
ZiAoZW5hYmxlKQotICAgIGF1ZGlvX2NvZGluZ18tPkVuYWJsZU5hY2sobWF4TnVtYmVyT2ZQYWNr
ZXRzKTsKLSAgZWxzZQotICAgIGF1ZGlvX2NvZGluZ18tPkRpc2FibGVOYWNrKCk7Ci19Ci0KLS8v
IENhbGxlZCB3aGVuIHdlIGFyZSBtaXNzaW5nIG9uZSBvciBtb3JlIHBhY2tldHMuCi1pbnQgQ2hh
bm5lbFNlbmQ6OlJlc2VuZFBhY2tldHMoY29uc3QgdWludDE2X3QqIHNlcXVlbmNlX251bWJlcnMs
IGludCBsZW5ndGgpIHsKLSAgcmV0dXJuIF9ydHBSdGNwTW9kdWxlLT5TZW5kTkFDSyhzZXF1ZW5j
ZV9udW1iZXJzLCBsZW5ndGgpOworICByZXR1cm4gc3RhdHM7CiB9CiAKIHZvaWQgQ2hhbm5lbFNl
bmQ6OlByb2Nlc3NBbmRFbmNvZGVBdWRpbygKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GcmFt
ZT4gYXVkaW9fZnJhbWUpIHsKKyAgUlRDX0RDSEVDS19SVU5TX1NFUklBTElaRUQoJmF1ZGlvX3Ro
cmVhZF9yYWNlX2NoZWNrZXJfKTsKICAgLy8gQXZvaWQgcG9zdGluZyBhbnkgbmV3IHRhc2tzIGlm
IHNlbmRpbmcgd2FzIGFscmVhZHkgc3RvcHBlZCBpbiBTdG9wU2VuZCgpLgogICBydGM6OkNyaXRT
Y29wZSBjcygmZW5jb2Rlcl9xdWV1ZV9sb2NrXyk7CiAgIGlmICghZW5jb2Rlcl9xdWV1ZV9pc19h
Y3RpdmVfKSB7CkBAIC05MTQsNiArMTIzMSw3IEBAIHZvaWQgQ2hhbm5lbFNlbmQ6OlVwZGF0ZU92
ZXJoZWFkRm9yRW5jb2RlcigpIHsKIH0KIAogdm9pZCBDaGFubmVsU2VuZDo6U2V0VHJhbnNwb3J0
T3ZlcmhlYWQoc2l6ZV90IHRyYW5zcG9ydF9vdmVyaGVhZF9wZXJfcGFja2V0KSB7CisgIFJUQ19E
Q0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgcnRjOjpDcml0U2NvcGUg
Y3MoJm92ZXJoZWFkX3Blcl9wYWNrZXRfbG9ja18pOwogICB0cmFuc3BvcnRfb3ZlcmhlYWRfcGVy
X3BhY2tldF8gPSB0cmFuc3BvcnRfb3ZlcmhlYWRfcGVyX3BhY2tldDsKICAgVXBkYXRlT3Zlcmhl
YWRGb3JFbmNvZGVyKCk7CkBAIC05MjcsMzYgKzEyNDUsNDIgQEAgdm9pZCBDaGFubmVsU2VuZDo6
T25PdmVyaGVhZENoYW5nZWQoc2l6ZV90IG92ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXQpIHsKIH0K
IAogQU5BU3RhdHMgQ2hhbm5lbFNlbmQ6OkdldEFOQVN0YXRpc3RpY3MoKSBjb25zdCB7CisgIFJU
Q19EQ0hFQ0tfUlVOX09OKCZ3b3JrZXJfdGhyZWFkX2NoZWNrZXJfKTsKICAgcmV0dXJuIGF1ZGlv
X2NvZGluZ18tPkdldEFOQVN0YXRzKCk7CiB9CiAKIFJ0cFJ0Y3AqIENoYW5uZWxTZW5kOjpHZXRS
dHBSdGNwKCkgY29uc3QgeworICBSVENfRENIRUNLKG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVj
a2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwogICByZXR1cm4gX3J0cFJ0Y3BNb2R1bGUuZ2V0
KCk7CiB9CiAKIGludCBDaGFubmVsU2VuZDo6U2V0U2VuZFJ0cEhlYWRlckV4dGVuc2lvbihib29s
IGVuYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVFBF
eHRlbnNpb25UeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBpZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpZCkgewogICBpbnQgZXJyb3IgPSAwOwogICBfcnRwUnRjcE1vZHVs
ZS0+RGVyZWdpc3RlclNlbmRSdHBIZWFkZXJFeHRlbnNpb24odHlwZSk7CiAgIGlmIChlbmFibGUp
IHsKLSAgICBlcnJvciA9IF9ydHBSdGNwTW9kdWxlLT5SZWdpc3RlclNlbmRSdHBIZWFkZXJFeHRl
bnNpb24odHlwZSwgaWQpOworICAgIC8vIFRPRE8obmlzc2UpOiBSdHBSdGNwOjpSZWdpc3RlclNl
bmRSdHBIZWFkZXJFeHRlbnNpb24gdG8gdGFrZSBhbiBpbnQKKyAgICAvLyBhcmd1bWVudC4gQ3Vy
cmVudGx5IGl0IHdhbnRzIGFuIHVpbnQ4X3QuCisgICAgZXJyb3IgPSBfcnRwUnRjcE1vZHVsZS0+
UmVnaXN0ZXJTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKAorICAgICAgICB0eXBlLCBydGM6OmRjaGVj
a2VkX2Nhc3Q8dWludDhfdD4oaWQpKTsKICAgfQogICByZXR1cm4gZXJyb3I7CiB9CiAKLWludCBD
aGFubmVsU2VuZDo6R2V0UnRwVGltZXN0YW1wUmF0ZUh6KCkgY29uc3QgewotICBjb25zdCBhdXRv
IGZvcm1hdCA9IGF1ZGlvX2NvZGluZ18tPlJlY2VpdmVGb3JtYXQoKTsKLSAgLy8gRGVmYXVsdCB0
byB0aGUgcGxheW91dCBmcmVxdWVuY3kgaWYgd2UndmUgbm90IGdvdHRlbiBhbnkgcGFja2V0cyB5
ZXQuCi0gIC8vIFRPRE8ob3NzdSk6IFplcm8gY2xvY2tyYXRlIGNhbiBvbmx5IGhhcHBlbiBpZiB3
ZSd2ZSBhZGRlZCBhbiBleHRlcm5hbAotICAvLyBkZWNvZGVyIGZvciBhIGZvcm1hdCB3ZSBkb24n
dCBzdXBwb3J0IGludGVybmFsbHkuIFJlbW92ZSBvbmNlIHRoYXQgd2F5IG9mCi0gIC8vIGFkZGlu
ZyBkZWNvZGVycyBpcyBnb25lIQotICByZXR1cm4gKGZvcm1hdCAmJiBmb3JtYXQtPmNsb2NrcmF0
ZV9oeiAhPSAwKQotICAgICAgICAgICAgID8gZm9ybWF0LT5jbG9ja3JhdGVfaHoKLSAgICAgICAg
ICAgICA6IGF1ZGlvX2NvZGluZ18tPlBsYXlvdXRGcmVxdWVuY3koKTsKLX0KLQogaW50NjRfdCBD
aGFubmVsU2VuZDo6R2V0UlRUKCkgY29uc3QgeworICBpZiAobWVkaWFfdHJhbnNwb3J0Xykgewor
ICAgIC8vIEdldFJUVCBpcyBnZW5lcmFsbHkgdXNlZCBpbiB0aGUgUlRDUCBjb2RlcGF0aCwgd2hl
cmUgbWVkaWEgdHJhbnNwb3J0IGlzCisgICAgLy8gbm90IHByZXNlbnQgYW5kIHNvIGl0IHNob3Vs
ZG4ndCBiZSBuZWVkZWQuIEJ1dCBpdCdzIGFsc28gaW52b2tlZCBpbgorICAgIC8vICdHZXRTdGF0
cycgbWV0aG9kLCBhbmQgZm9yIG5vdyByZXR1cm5pbmcgbWVkaWEgdHJhbnNwb3J0IFJUVCBoZXJl
IGdpdmVzCisgICAgLy8gdXMgImZyZWUiIHJ0dCBzdGF0cyBmb3IgbWVkaWEgdHJhbnNwb3J0Lgor
ICAgIGF1dG8gdGFyZ2V0X3JhdGUgPSBtZWRpYV90cmFuc3BvcnRfLT5HZXRMYXRlc3RUYXJnZXRU
cmFuc2ZlclJhdGUoKTsKKyAgICBpZiAodGFyZ2V0X3JhdGUuaGFzX3ZhbHVlKCkpIHsKKyAgICAg
IHJldHVybiB0YXJnZXRfcmF0ZS52YWx1ZSgpLm5ldHdvcmtfZXN0aW1hdGUucm91bmRfdHJpcF90
aW1lLm1zKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7CisgIH0KICAgUnRjcE1vZGUgbWV0aG9k
ID0gX3J0cFJ0Y3BNb2R1bGUtPlJUQ1AoKTsKICAgaWYgKG1ldGhvZCA9PSBSdGNwTW9kZTo6a09m
ZikgewogICAgIHJldHVybiAwOwpAQCAtOTgxLDE2ICsxMzA1LDUyIEBAIGludDY0X3QgQ2hhbm5l
bFNlbmQ6OkdldFJUVCgpIGNvbnN0IHsKICAgcmV0dXJuIHJ0dDsKIH0KIAotdm9pZCBDaGFubmVs
U2VuZDo6U2V0RnJhbWVFbmNyeXB0b3IoRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2Vu
Y3J5cHRvcikgewordm9pZCBDaGFubmVsU2VuZDo6U2V0RnJhbWVFbmNyeXB0b3IoCisgICAgcnRj
OjpzY29wZWRfcmVmcHRyPEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9lbmNyeXB0b3Ip
IHsKKyAgUlRDX0RDSEVDS19SVU5fT04oJndvcmtlcl90aHJlYWRfY2hlY2tlcl8pOwogICBydGM6
OkNyaXRTY29wZSBjcygmZW5jb2Rlcl9xdWV1ZV9sb2NrXyk7CiAgIGlmIChlbmNvZGVyX3F1ZXVl
X2lzX2FjdGl2ZV8pIHsKICAgICBlbmNvZGVyX3F1ZXVlXy0+UG9zdFRhc2soW3RoaXMsIGZyYW1l
X2VuY3J5cHRvcl0oKSB7Ci0gICAgICB0aGlzLT5mcmFtZV9lbmNyeXB0b3JfID0gZnJhbWVfZW5j
cnlwdG9yOworICAgICAgdGhpcy0+ZnJhbWVfZW5jcnlwdG9yXyA9IHN0ZDo6bW92ZShmcmFtZV9l
bmNyeXB0b3IpOwogICAgIH0pOwogICB9IGVsc2UgewotICAgIGZyYW1lX2VuY3J5cHRvcl8gPSBm
cmFtZV9lbmNyeXB0b3I7CisgICAgZnJhbWVfZW5jcnlwdG9yXyA9IHN0ZDo6bW92ZShmcmFtZV9l
bmNyeXB0b3IpOwogICB9CiB9CiAKK3ZvaWQgQ2hhbm5lbFNlbmQ6Ok9uVGFyZ2V0VHJhbnNmZXJS
YXRlKFRhcmdldFRyYW5zZmVyUmF0ZSByYXRlKSB7CisgIFJUQ19EQ0hFQ0sobWVkaWFfdHJhbnNw
b3J0Xyk7CisgIE9uUmVjZWl2ZWRSdHQocmF0ZS5uZXR3b3JrX2VzdGltYXRlLnJvdW5kX3RyaXBf
dGltZS5tcygpKTsKK30KKwordm9pZCBDaGFubmVsU2VuZDo6T25SZWNlaXZlZFJ0dChpbnQ2NF90
IHJ0dF9tcykgeworICAvLyBJbnZva2UgYXVkaW8gZW5jb2RlcnMgT25SZWNlaXZlZFJ0dCgpLgor
ICBhdWRpb19jb2RpbmdfLT5Nb2RpZnlFbmNvZGVyKAorICAgICAgW3J0dF9tc10oc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvRW5jb2Rlcj4qIGVuY29kZXIpIHsKKyAgICAgICAgaWYgKCplbmNvZGVyKSB7
CisgICAgICAgICAgKCplbmNvZGVyKS0+T25SZWNlaXZlZFJ0dChydHRfbXMpOworICAgICAgICB9
CisgICAgICB9KTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK3N0ZDo6dW5pcXVlX3B0cjxDaGFu
bmVsU2VuZEludGVyZmFjZT4gQ3JlYXRlQ2hhbm5lbFNlbmQoCisgICAgcnRjOjpUYXNrUXVldWUq
IGVuY29kZXJfcXVldWUsCisgICAgUHJvY2Vzc1RocmVhZCogbW9kdWxlX3Byb2Nlc3NfdGhyZWFk
LAorICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQsCisgICAgVHJh
bnNwb3J0KiBydHBfdHJhbnNwb3J0LAorICAgIFJ0Y3BSdHRTdGF0cyogcnRjcF9ydHRfc3RhdHMs
CisgICAgUnRjRXZlbnRMb2cqIHJ0Y19ldmVudF9sb2csCisgICAgRnJhbWVFbmNyeXB0b3JJbnRl
cmZhY2UqIGZyYW1lX2VuY3J5cHRvciwKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMm
IGNyeXB0b19vcHRpb25zLAorICAgIGJvb2wgZXh0bWFwX2FsbG93X21peGVkLAorICAgIGludCBy
dGNwX3JlcG9ydF9pbnRlcnZhbF9tcykgeworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8Q2hh
bm5lbFNlbmQ+KAorICAgICAgZW5jb2Rlcl9xdWV1ZSwgbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLCBt
ZWRpYV90cmFuc3BvcnQsIHJ0cF90cmFuc3BvcnQsCisgICAgICBydGNwX3J0dF9zdGF0cywgcnRj
X2V2ZW50X2xvZywgZnJhbWVfZW5jcnlwdG9yLCBjcnlwdG9fb3B0aW9ucywKKyAgICAgIGV4dG1h
cF9hbGxvd19taXhlZCwgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMpOworfQorCiB9ICAvLyBuYW1l
c3BhY2Ugdm9lCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmQuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2Vu
ZC5oCmluZGV4IGVmOTJmOGU4NGViNjBmMDhmYmIyNzIwOWZhNzk2YTU2MjhlM2Q4MmEuLjA4M2U5
YTYwMjkzMDY3YmY2MGZlMmFiODY3NTY1OGViYzY0OGIxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5uZWxfc2VuZC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL2NoYW5u
ZWxfc2VuZC5oCkBAIC0xMSw0MiArMTEsMjYgQEAKICNpZm5kZWYgQVVESU9fQ0hBTk5FTF9TRU5E
X0hfCiAjZGVmaW5lIEFVRElPX0NIQU5ORUxfU0VORF9IXwogCi0jaW5jbHVkZSA8bWFwPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAj
aW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2Nv
ZGVjcy9hdWRpb19lbmNvZGVyLmgiCi0jaW5jbHVkZSAiYXBpL2NhbGwvdHJhbnNwb3J0LmgiCi0j
aW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKLSNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGluZ19tb2R1bGUuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvcm1zX2xldmVsLmgiCisjaW5jbHVk
ZSAiYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5z
cG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRw
X3J0Y3AuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9mdW5jdGlvbl92aWV3LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1
ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCi0KLS8vIFRPRE8oc29s
ZW5iZXJnLCBuaXNzZSk6IFRoaXMgZmlsZSBjb250YWlucyBhIGZldyBOT0xJTlQgbWFya3MsIHRv
IHNpbGVuY2UKLS8vIHdhcm5pbmdzIGFib3V0IHVzZSBvZiB1bnNpZ25lZCBzaG9ydCwgYW5kIG5v
bi1jb25zdCByZWZlcmVuY2UgYXJndW1lbnRzLgotLy8gVGhlc2UgbmVlZCBjbGVhbnVwLCBpbiBh
IHNlcGFyYXRlIGNsLgotCi1uYW1lc3BhY2UgcnRjIHsKLWNsYXNzIFRpbWVzdGFtcFdyYXBBcm91
bmRIYW5kbGVyOwotfQogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgRnJhbWVFbmNyeXB0
b3JJbnRlcmZhY2U7Ci1jbGFzcyBQYWNrZXRSb3V0ZXI7CiBjbGFzcyBQcm9jZXNzVGhyZWFkOwot
Y2xhc3MgUmF0ZUxpbWl0ZXI7CiBjbGFzcyBSdGNFdmVudExvZzsKIGNsYXNzIFJ0cFJ0Y3A7CiBj
bGFzcyBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZTsKIAotc3RydWN0IFNlbmRl
ckluZm87Ci0KIHN0cnVjdCBDYWxsU2VuZFN0YXRpc3RpY3MgewogICBpbnQ2NF90IHJ0dE1zOwog
ICBzaXplX3QgYnl0ZXNTZW50OwpAQCAtNjcsMjM5ICs1MSw3NyBAQCBzdHJ1Y3QgUmVwb3J0Qmxv
Y2sgewogCiBuYW1lc3BhY2Ugdm9lIHsKIAotY2xhc3MgUnRwUGFja2V0U2VuZGVyUHJveHk7Ci1j
bGFzcyBUcmFuc3BvcnRGZWVkYmFja1Byb3h5OwotY2xhc3MgVHJhbnNwb3J0U2VxdWVuY2VOdW1i
ZXJQcm94eTsKLWNsYXNzIFZvRVJ0Y3BPYnNlcnZlcjsKLQotLy8gSGVscGVyIGNsYXNzIHRvIHNp
bXBsaWZ5IGxvY2tpbmcgc2NoZW1lIGZvciBtZW1iZXJzIHRoYXQgYXJlIGFjY2Vzc2VkIGZyb20K
LS8vIG11bHRpcGxlIHRocmVhZHMuCi0vLyBFeGFtcGxlOiBhIG1lbWJlciBjYW4gYmUgc2V0IG9u
IHRocmVhZCBUMSBhbmQgcmVhZCBieSBhbiBpbnRlcm5hbCBhdWRpbwotLy8gdGhyZWFkIFQyLiBB
Y2Nlc3NpbmcgdGhlIG1lbWJlciB2aWEgdGhpcyBjbGFzcyBlbnN1cmVzIHRoYXQgd2UgYXJlCi0v
LyBzYWZlIGFuZCBhbHNvIGF2b2lkIFRTYW4gdjIgd2FybmluZ3MuCi1jbGFzcyBDaGFubmVsU2Vu
ZFN0YXRlIHsKLSBwdWJsaWM6Ci0gIHN0cnVjdCBTdGF0ZSB7Ci0gICAgYm9vbCBzZW5kaW5nID0g
ZmFsc2U7Ci0gIH07Ci0KLSAgQ2hhbm5lbFNlbmRTdGF0ZSgpIHt9Ci0gIHZpcnR1YWwgfkNoYW5u
ZWxTZW5kU3RhdGUoKSB7fQotCi0gIHZvaWQgUmVzZXQoKSB7Ci0gICAgcnRjOjpDcml0U2NvcGUg
bG9jaygmbG9ja18pOwotICAgIHN0YXRlXyA9IFN0YXRlKCk7Ci0gIH0KLQotICBTdGF0ZSBHZXQo
KSBjb25zdCB7Ci0gICAgcnRjOjpDcml0U2NvcGUgbG9jaygmbG9ja18pOwotICAgIHJldHVybiBz
dGF0ZV87Ci0gIH0KLQotICB2b2lkIFNldFNlbmRpbmcoYm9vbCBlbmFibGUpIHsKLSAgICBydGM6
OkNyaXRTY29wZSBsb2NrKCZsb2NrXyk7Ci0gICAgc3RhdGVfLnNlbmRpbmcgPSBlbmFibGU7Ci0g
IH0KLQotIHByaXZhdGU6Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGxvY2tfOwotICBTdGF0ZSBz
dGF0ZV87Ci19OwotCi1jbGFzcyBDaGFubmVsU2VuZAotICAgIDogcHVibGljIFRyYW5zcG9ydCwK
LSAgICAgIHB1YmxpYyBBdWRpb1BhY2tldGl6YXRpb25DYWxsYmFjaywgIC8vIHJlY2VpdmUgZW5j
b2RlZCBwYWNrZXRzIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBBQ00KLSAgICAgIHB1YmxpYyBPdmVyaGVhZE9ic2VydmVyIHsKK2NsYXNzIENo
YW5uZWxTZW5kSW50ZXJmYWNlIHsKICBwdWJsaWM6Ci0gIC8vIFRPRE8obmlzc2UpOiBNYWtlIE9u
VXBsaW5rUGFja2V0TG9zc1JhdGUgcHVibGljLCBhbmQgZGVsZXRlIGZyaWVuZAotICAvLyBkZWNs
YXJhdGlvbi4KLSAgZnJpZW5kIGNsYXNzIFZvRVJ0Y3BPYnNlcnZlcjsKLQotICBDaGFubmVsU2Vu
ZChydGM6OlRhc2tRdWV1ZSogZW5jb2Rlcl9xdWV1ZSwKLSAgICAgICAgICAgICAgUHJvY2Vzc1Ro
cmVhZCogbW9kdWxlX3Byb2Nlc3NfdGhyZWFkLAotICAgICAgICAgICAgICBSdGNwUnR0U3RhdHMq
IHJ0Y3BfcnR0X3N0YXRzLAotICAgICAgICAgICAgICBSdGNFdmVudExvZyogcnRjX2V2ZW50X2xv
ZywKLSAgICAgICAgICAgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRv
cik7Ci0KLSAgdmlydHVhbCB+Q2hhbm5lbFNlbmQoKTsKKyAgdmlydHVhbCB+Q2hhbm5lbFNlbmRJ
bnRlcmZhY2UoKSA9IGRlZmF1bHQ7CiAKLSAgLy8gU2VuZCB1c2luZyB0aGlzIGVuY29kZXIsIHdp
dGggdGhpcyBwYXlsb2FkIHR5cGUuCi0gIGJvb2wgU2V0RW5jb2RlcihpbnQgcGF5bG9hZF90eXBl
LCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmNvZGVyKTsKLSAgdm9pZCBNb2RpZnlF
bmNvZGVyKAotICAgICAgcnRjOjpGdW5jdGlvblZpZXc8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9FbmNvZGVyPiopPiBtb2RpZmllcik7CisgIHZpcnR1YWwgYm9vbCBSZWNlaXZlZFJUQ1BQYWNr
ZXQoY29uc3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKSA9IDA7CiAKLSAgLy8gQVBJ
IG1ldGhvZHMKKyAgdmlydHVhbCBDYWxsU2VuZFN0YXRpc3RpY3MgR2V0UlRDUFN0YXRpc3RpY3Mo
KSBjb25zdCA9IDA7CiAKLSAgLy8gVm9FQmFzZQotICBpbnQzMl90IFN0YXJ0U2VuZCgpOwotICB2
b2lkIFN0b3BTZW5kKCk7CisgIHZpcnR1YWwgYm9vbCBTZXRFbmNvZGVyKGludCBwYXlsb2FkX3R5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29k
ZXI+IGVuY29kZXIpID0gMDsKKyAgdmlydHVhbCB2b2lkIE1vZGlmeUVuY29kZXIoCisgICAgICBy
dGM6OkZ1bmN0aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+IG1v
ZGlmaWVyKSA9IDA7CiAKLSAgLy8gQ29kZWNzCi0gIHZvaWQgU2V0Qml0UmF0ZShpbnQgYml0cmF0
ZV9icHMsIGludDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcyk7Ci0gIGJvb2wgRW5hYmxlQXVkaW9O
ZXR3b3JrQWRhcHRvcihjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnX3N0cmluZyk7Ci0gIHZvaWQg
RGlzYWJsZUF1ZGlvTmV0d29ya0FkYXB0b3IoKTsKLQotICAvLyBUT0RPKG5pc3NlKTogTW9kaWZp
ZXMgZGVjb2RlciwgYnV0IG5vdCB1c2VkPwotICB2b2lkIFNldFJlY2VpdmVyRnJhbWVMZW5ndGhS
YW5nZShpbnQgbWluX2ZyYW1lX2xlbmd0aF9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IG1heF9mcmFtZV9sZW5ndGhfbXMpOwotCi0gIC8vIE5ldHdvcmsKLSAgdm9p
ZCBSZWdpc3RlclRyYW5zcG9ydChUcmFuc3BvcnQqIHRyYW5zcG9ydCk7Ci0gIC8vIFRPRE8obmlz
c2UsIHNvbGVuYmVyZyk6IERlbGV0ZSB3aGVuIFZvRU5ldHdvcmsgaXMgZGVsZXRlZC4KLSAgaW50
MzJfdCBSZWNlaXZlZFJUQ1BQYWNrZXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCk7Ci0KLSAgLy8gTXV0aW5nLCBWb2x1bWUgYW5kIExldmVsLgotICB2b2lkIFNldElucHV0TXV0
ZShib29sIGVuYWJsZSk7Ci0KLSAgLy8gU3RhdHMuCi0gIEFOQVN0YXRzIEdldEFOQVN0YXRpc3Rp
Y3MoKSBjb25zdDsKLQotICAvLyBVc2VkIGJ5IEF1ZGlvU2VuZFN0cmVhbS4KLSAgUnRwUnRjcCog
R2V0UnRwUnRjcCgpIGNvbnN0OwotCi0gIC8vIERUTUYuCi0gIGludCBTZW5kVGVsZXBob25lRXZl
bnRPdXRiYW5kKGludCBldmVudCwgaW50IGR1cmF0aW9uX21zKTsKLSAgaW50IFNldFNlbmRUZWxl
cGhvbmVFdmVudFBheWxvYWRUeXBlKGludCBwYXlsb2FkX3R5cGUsIGludCBwYXlsb2FkX2ZyZXF1
ZW5jeSk7Ci0KLSAgLy8gUlRQK1JUQ1AKLSAgaW50IFNldExvY2FsU1NSQyh1bnNpZ25lZCBpbnQg
c3NyYyk7Ci0KLSAgdm9pZCBTZXRNaWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwgaW50IGV4dGVu
c2lvbl9pZCk7Ci0gIGludCBTZXRTZW5kQXVkaW9MZXZlbEluZGljYXRpb25TdGF0dXMoYm9vbCBl
bmFibGUsIHVuc2lnbmVkIGNoYXIgaWQpOwotICB2b2lkIEVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1
ZW5jZU51bWJlcihpbnQgaWQpOwotCi0gIHZvaWQgUmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29u
dHJvbE9iamVjdHMoCisgIHZpcnR1YWwgdm9pZCBTZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYykg
PSAwOworICB2aXJ0dWFsIHZvaWQgU2V0TWlkKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsIGludCBl
eHRlbnNpb25faWQpID0gMDsKKyAgdmlydHVhbCB2b2lkIFNldFJUQ1BfQ05BTUUoYWJzbDo6c3Ry
aW5nX3ZpZXcgY19uYW1lKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBTZXRFeHRtYXBBbGxvd01peGVk
KGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBTZXRTZW5kQXVk
aW9MZXZlbEluZGljYXRpb25TdGF0dXMoYm9vbCBlbmFibGUsIGludCBpZCkgPSAwOworICB2aXJ0
dWFsIHZvaWQgRW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKGludCBpZCkgPSAwOwor
ICB2aXJ0dWFsIHZvaWQgUmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCiAg
ICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogdHJhbnNwb3J0LAotICAg
ICAgUnRjcEJhbmR3aWR0aE9ic2VydmVyKiBiYW5kd2lkdGhfb2JzZXJ2ZXIpOwotICB2b2lkIFJl
c2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCk7Ci0gIHZvaWQgU2V0UlRDUFN0YXR1
cyhib29sIGVuYWJsZSk7Ci0gIGludCBTZXRSVENQX0NOQU1FKGNvbnN0IGNoYXIgY05hbWVbMjU2
XSk7Ci0gIGludCBHZXRSZW1vdGVSVENQUmVwb3J0QmxvY2tzKHN0ZDo6dmVjdG9yPFJlcG9ydEJs
b2NrPiogcmVwb3J0X2Jsb2Nrcyk7Ci0gIGludCBHZXRSVFBTdGF0aXN0aWNzKENhbGxTZW5kU3Rh
dGlzdGljcyYgc3RhdHMpOyAgLy8gTk9MSU5UCi0gIHZvaWQgU2V0TkFDS1N0YXR1cyhib29sIGVu
YWJsZSwgaW50IG1heE51bWJlck9mUGFja2V0cyk7Ci0KLSAgLy8gRnJvbSBBdWRpb1BhY2tldGl6
YXRpb25DYWxsYmFjayBpbiB0aGUgQUNNCi0gIGludDMyX3QgU2VuZERhdGEoRnJhbWVUeXBlIGZy
YW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICB1aW50OF90IHBheWxvYWRUeXBlLAotICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IHRpbWVTdGFtcCwKLSAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90KiBwYXlsb2FkRGF0YSwKLSAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9h
ZFNpemUsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciog
ZnJhZ21lbnRhdGlvbikgb3ZlcnJpZGU7Ci0KLSAgLy8gRnJvbSBUcmFuc3BvcnQgKGNhbGxlZCBi
eSB0aGUgUlRQL1JUQ1AgbW9kdWxlKQotICBib29sIFNlbmRSdHAoY29uc3QgdWludDhfdCogZGF0
YSwKLSAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICBjb25zdCBQYWNr
ZXRPcHRpb25zJiBwYWNrZXRfb3B0aW9ucykgb3ZlcnJpZGU7Ci0gIGJvb2wgU2VuZFJ0Y3AoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbikgb3ZlcnJpZGU7Ci0KLSAgaW50IFByZWZlcnJl
ZFNhbXBsZVJhdGUoKSBjb25zdDsKLQotICBib29sIFNlbmRpbmcoKSBjb25zdCB7IHJldHVybiBj
aGFubmVsX3N0YXRlXy5HZXQoKS5zZW5kaW5nOyB9Ci0gIFJ0cFJ0Y3AqIFJ0cFJ0Y3BNb2R1bGVQ
dHIoKSBjb25zdCB7IHJldHVybiBfcnRwUnRjcE1vZHVsZS5nZXQoKTsgfQotCi0gIC8vIFByb2Nl
c3NBbmRFbmNvZGVBdWRpbygpIHBvc3RzIGEgdGFzayBvbiB0aGUgc2hhcmVkIGVuY29kZXIgdGFz
ayBxdWV1ZSwKLSAgLy8gd2hpY2ggaW4gdHVybiBjYWxscyAob24gdGhlIHF1ZXVlKSBQcm9jZXNz
QW5kRW5jb2RlQXVkaW9PblRhc2tRdWV1ZSgpIHdoZXJlCi0gIC8vIHRoZSBhY3R1YWwgcHJvY2Vz
c2luZyBvZiB0aGUgYXVkaW8gdGFrZXMgcGxhY2UuIFRoZSBwcm9jZXNzaW5nIG1haW5seQotICAv
LyBjb25zaXN0cyBvZiBlbmNvZGluZyBhbmQgcHJlcGFyaW5nIHRoZSByZXN1bHQgZm9yIHNlbmRp
bmcgYnkgYWRkaW5nIGl0IHRvIGEKLSAgLy8gc2VuZCBxdWV1ZS4KLSAgLy8gVGhlIG1haW4gcmVh
c29uIGZvciB1c2luZyBhIHRhc2sgcXVldWUgaGVyZSBpcyB0byByZWxlYXNlIHRoZSBuYXRpdmUs
Ci0gIC8vIE9TLXNwZWNpZmljLCBhdWRpbyBjYXB0dXJlIHRocmVhZCBhcyBzb29uIGFzIHBvc3Np
YmxlIHRvIGVuc3VyZSB0aGF0IGl0Ci0gIC8vIGNhbiBnbyBiYWNrIHRvIHNsZWVwIGFuZCBiZSBw
cmVwYXJlZCB0byBkZWxpdmVyIGFuIG5ldyBjYXB0dXJlZCBhdWRpbwotICAvLyBwYWNrZXQuCi0g
IHZvaWQgUHJvY2Vzc0FuZEVuY29kZUF1ZGlvKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBh
dWRpb19mcmFtZSk7Ci0KLSAgdm9pZCBTZXRUcmFuc3BvcnRPdmVyaGVhZChzaXplX3QgdHJhbnNw
b3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpOwotCi0gIC8vIEZyb20gT3ZlcmhlYWRPYnNlcnZlciBp
biB0aGUgUlRQL1JUQ1AgbW9kdWxlCi0gIHZvaWQgT25PdmVyaGVhZENoYW5nZWQoc2l6ZV90IG92
ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXQpIG92ZXJyaWRlOwotCi0gIC8vIFRoZSBleGlzdGVuY2Ug
b2YgdGhpcyBmdW5jdGlvbiBhbG9uZ3NpZGUgT25VcGxpbmtQYWNrZXRMb3NzUmF0ZSBpcwotICAv
LyBhIGNvbXByb21pc2UuIFdlIHdhbnQgdGhlIGVuY29kZXIgdG8gYmUgYWdub3N0aWMgb2YgdGhl
IFBMUiBzb3VyY2UsIGJ1dAotICAvLyB3ZSBhbHNvIGRvbid0IHdhbnQgaXQgdG8gcmVjZWl2ZSBj
b25mbGljdGluZyBpbmZvcm1hdGlvbiBmcm9tIFRXQ0MgYW5kCi0gIC8vIGZyb20gUlRDUC1YUi4K
LSAgdm9pZCBPblR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0IHBhY2tldF9sb3Nz
X3JhdGUpOwotCi0gIHZvaWQgT25SZWNvdmVyYWJsZVVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0
IHJlY292ZXJhYmxlX3BhY2tldF9sb3NzX3JhdGUpOwotCi0gIGludDY0X3QgR2V0UlRUKCkgY29u
c3Q7Ci0KLSAgLy8gRTJFRSBDdXN0b20gQXVkaW8gRnJhbWUgRW5jcnlwdGlvbgotICB2b2lkIFNl
dEZyYW1lRW5jcnlwdG9yKEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3Ip
OwotCi0gcHJpdmF0ZToKLSAgY2xhc3MgUHJvY2Vzc0FuZEVuY29kZUF1ZGlvVGFzazsKLQotICB2
b2lkIEluaXQoKTsKLSAgdm9pZCBUZXJtaW5hdGUoKTsKLQotICB2b2lkIE9uVXBsaW5rUGFja2V0
TG9zc1JhdGUoZmxvYXQgcGFja2V0X2xvc3NfcmF0ZSk7Ci0gIGJvb2wgSW5wdXRNdXRlKCkgY29u
c3Q7Ci0KLSAgaW50IFJlc2VuZFBhY2tldHMoY29uc3QgdWludDE2X3QqIHNlcXVlbmNlX251bWJl
cnMsIGludCBsZW5ndGgpOwotCi0gIGludCBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9uKGJvb2wg
ZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVFBFeHRlbnNpb25UeXBl
IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaWQp
OwotCi0gIHZvaWQgVXBkYXRlT3ZlcmhlYWRGb3JFbmNvZGVyKCkKLSAgICAgIFJUQ19FWENMVVNJ
VkVfTE9DS1NfUkVRVUlSRUQob3ZlcmhlYWRfcGVyX3BhY2tldF9sb2NrXyk7Ci0KLSAgaW50IEdl
dFJ0cFRpbWVzdGFtcFJhdGVIeigpIGNvbnN0OwotCi0gIC8vIENhbGxlZCBvbiB0aGUgZW5jb2Rl
ciB0YXNrIHF1ZXVlIHdoZW4gYSBuZXcgaW5wdXQgYXVkaW8gZnJhbWUgaXMgcmVhZHkKLSAgLy8g
Zm9yIGVuY29kaW5nLgotICB2b2lkIFByb2Nlc3NBbmRFbmNvZGVBdWRpb09uVGFza1F1ZXVlKEF1
ZGlvRnJhbWUqIGF1ZGlvX2lucHV0KTsKLQotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBfY2FsbGJh
Y2tDcml0U2VjdDsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gdm9sdW1lX3NldHRpbmdzX2NyaXRz
ZWN0XzsKLQotICBDaGFubmVsU2VuZFN0YXRlIGNoYW5uZWxfc3RhdGVfOwotCi0gIFJ0Y0V2ZW50
TG9nKiBjb25zdCBldmVudF9sb2dfOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBSdGNwPiBfcnRw
UnRjcE1vZHVsZTsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Db2RpbmdNb2R1bGU+IGF1ZGlv
X2NvZGluZ187Ci0gIHVpbnQzMl90IF90aW1lU3RhbXAgUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9x
dWV1ZV8pOwotCi0gIHVpbnQxNl90IHNlbmRfc2VxdWVuY2VfbnVtYmVyXzsKLQotICAvLyB1c2Vz
Ci0gIFByb2Nlc3NUaHJlYWQqIF9tb2R1bGVQcm9jZXNzVGhyZWFkUHRyOwotICBUcmFuc3BvcnQq
IF90cmFuc3BvcnRQdHI7ICAvLyBXZWJSdGMgc29ja2V0IG9yIGV4dGVybmFsIHRyYW5zcG9ydAot
ICBSbXNMZXZlbCBybXNfbGV2ZWxfIFJUQ19HVUFSREVEX0JZKGVuY29kZXJfcXVldWVfKTsKLSAg
Ym9vbCBpbnB1dF9tdXRlXyBSVENfR1VBUkRFRF9CWSh2b2x1bWVfc2V0dGluZ3NfY3JpdHNlY3Rf
KTsKLSAgYm9vbCBwcmV2aW91c19mcmFtZV9tdXRlZF8gUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9x
dWV1ZV8pOwotICAvLyBWb2VSVFBfUlRDUAotICAvLyBUT0RPKGhlbnJpa2EpOiBjYW4gdG9kYXkg
YmUgYWNjZXNzZWQgb24gdGhlIG1haW4gdGhyZWFkIGFuZCBvbiB0aGUKLSAgLy8gdGFzayBxdWV1
ZTsgaGVuY2UgcG90ZW50aWFsIHJhY2UuCi0gIGJvb2wgX2luY2x1ZGVBdWRpb0xldmVsSW5kaWNh
dGlvbjsKLSAgc2l6ZV90IHRyYW5zcG9ydF9vdmVyaGVhZF9wZXJfcGFja2V0XwotICAgICAgUlRD
X0dVQVJERURfQlkob3ZlcmhlYWRfcGVyX3BhY2tldF9sb2NrXyk7Ci0gIHNpemVfdCBydHBfb3Zl
cmhlYWRfcGVyX3BhY2tldF8gUlRDX0dVQVJERURfQlkob3ZlcmhlYWRfcGVyX3BhY2tldF9sb2Nr
Xyk7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIG92ZXJoZWFkX3Blcl9wYWNrZXRfbG9ja187Ci0g
IC8vIFJ0Y3BCYW5kd2lkdGhPYnNlcnZlcgotICBzdGQ6OnVuaXF1ZV9wdHI8Vm9FUnRjcE9ic2Vy
dmVyPiBydGNwX29ic2VydmVyXzsKLQotICBQYWNrZXRSb3V0ZXIqIHBhY2tldF9yb3V0ZXJfID0g
bnVsbHB0cjsKLSAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydEZlZWRiYWNrUHJveHk+IGZlZWRi
YWNrX29ic2VydmVyX3Byb3h5XzsKLSAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydFNlcXVlbmNl
TnVtYmVyUHJveHk+IHNlcV9udW1fYWxsb2NhdG9yX3Byb3h5XzsKLSAgc3RkOjp1bmlxdWVfcHRy
PFJ0cFBhY2tldFNlbmRlclByb3h5PiBydHBfcGFja2V0X3NlbmRlcl9wcm94eV87Ci0gIHN0ZDo6
dW5pcXVlX3B0cjxSYXRlTGltaXRlcj4gcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXzsKLQot
ICBydGM6OlRocmVhZENoZWNrZXIgY29uc3RydWN0aW9uX3RocmVhZF87Ci0KLSAgY29uc3QgYm9v
bCB1c2VfdHdjY19wbHJfZm9yX2FuYV87Ci0KLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gZW5jb2Rl
cl9xdWV1ZV9sb2NrXzsKLSAgYm9vbCBlbmNvZGVyX3F1ZXVlX2lzX2FjdGl2ZV8gUlRDX0dVQVJE
RURfQlkoZW5jb2Rlcl9xdWV1ZV9sb2NrXykgPSBmYWxzZTsKLSAgcnRjOjpUYXNrUXVldWUqIGVu
Y29kZXJfcXVldWVfID0gbnVsbHB0cjsKLQotICAvLyBFMkVFIEF1ZGlvIEZyYW1lIEVuY3J5cHRp
b24KLSAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvcl8gPSBudWxscHRy
OworICAgICAgUnRjcEJhbmR3aWR0aE9ic2VydmVyKiBiYW5kd2lkdGhfb2JzZXJ2ZXIpID0gMDsK
KyAgdmlydHVhbCB2b2lkIFJlc2V0U2VuZGVyQ29uZ2VzdGlvbkNvbnRyb2xPYmplY3RzKCkgPSAw
OworICB2aXJ0dWFsIHN0ZDo6dmVjdG9yPFJlcG9ydEJsb2NrPiBHZXRSZW1vdGVSVENQUmVwb3J0
QmxvY2tzKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIEFOQVN0YXRzIEdldEFOQVN0YXRpc3RpY3Mo
KSBjb25zdCA9IDA7CisgIHZpcnR1YWwgYm9vbCBTZXRTZW5kVGVsZXBob25lRXZlbnRQYXlsb2Fk
VHlwZShpbnQgcGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHBheWxvYWRfZnJlcXVlbmN5KSA9IDA7CisgIHZpcnR1YWwgYm9v
bCBTZW5kVGVsZXBob25lRXZlbnRPdXRiYW5kKGludCBldmVudCwgaW50IGR1cmF0aW9uX21zKSA9
IDA7CisgIHZpcnR1YWwgdm9pZCBPbkJpdHJhdGVBbGxvY2F0aW9uKEJpdHJhdGVBbGxvY2F0aW9u
VXBkYXRlIHVwZGF0ZSkgPSAwOworICB2aXJ0dWFsIGludCBHZXRCaXRyYXRlKCkgY29uc3QgPSAw
OworICB2aXJ0dWFsIHZvaWQgU2V0SW5wdXRNdXRlKGJvb2wgbXV0ZWQpID0gMDsKKworICB2aXJ0
dWFsIHZvaWQgUHJvY2Vzc0FuZEVuY29kZUF1ZGlvKAorICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvRnJhbWU+IGF1ZGlvX2ZyYW1lKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBTZXRUcmFuc3BvcnRP
dmVyaGVhZChzaXplX3QgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpID0gMDsKKyAgdmly
dHVhbCBSdHBSdGNwKiBHZXRSdHBSdGNwKCkgY29uc3QgPSAwOworCisgIHZpcnR1YWwgdm9pZCBP
blR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpID0g
MDsKKyAgdmlydHVhbCB2b2lkIE9uUmVjb3ZlcmFibGVVcGxpbmtQYWNrZXRMb3NzUmF0ZSgKKyAg
ICAgIGZsb2F0IHJlY292ZXJhYmxlX3BhY2tldF9sb3NzX3JhdGUpID0gMDsKKyAgLy8gSW4gUlRQ
IHdlIGN1cnJlbnRseSByZWx5IG9uIFJUQ1AgcGFja2V0cyAofFJlY2VpdmVkUlRDUFBhY2tldHwp
IHRvIGluZm9ybQorICAvLyBhYm91dCBSVFQuCisgIC8vIEluIG1lZGlhIHRyYW5zcG9ydCB3ZSBy
ZWx5IG9uIHRoZSBUYXJnZXRUcmFuc2ZlclJhdGVPYnNlcnZlciBpbnN0ZWFkLgorICAvLyBJbiBv
dGhlciB3b3JkcywgaWYgeW91IGFyZSB1c2luZyBSVFAsIHlvdSBzaG91bGQgZXhwZWN0CisgIC8v
IHxSZWNlaXZlZFJUQ1BQYWNrZXR8IHRvIGJlIGNhbGxlZCwgaWYgeW91IGFyZSB1c2luZyBtZWRp
YSB0cmFuc3BvcnQsCisgIC8vIHxPblRhcmdldFRyYW5zZmVyUmF0ZXwgd2lsbCBiZSBjYWxsZWQu
CisgIC8vCisgIC8vIEluIGZ1dHVyZSwgUlRQIG1lZGlhIHdpbGwgbW92ZSB0byB0aGUgbWVkaWEg
dHJhbnNwb3J0IGltcGxlbWVudGF0aW9uIGFuZAorICAvLyB0aGVzZSBjb25kaXRpb25zIHdpbGwg
YmUgcmVtb3ZlZC4KKyAgLy8gUmV0dXJucyB0aGUgUlRUIGluIG1pbGxpc2Vjb25kcy4KKyAgdmly
dHVhbCBpbnQ2NF90IEdldFJUVCgpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCB2b2lkIFN0YXJ0U2Vu
ZCgpID0gMDsKKyAgdmlydHVhbCB2b2lkIFN0b3BTZW5kKCkgPSAwOworCisgIC8vIEUyRUUgQ3Vz
dG9tIEF1ZGlvIEZyYW1lIEVuY3J5cHRpb24gKE9wdGlvbmFsKQorICB2aXJ0dWFsIHZvaWQgU2V0
RnJhbWVFbmNyeXB0b3IoCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJ
bnRlcmZhY2U+IGZyYW1lX2VuY3J5cHRvcikgPSAwOwogfTsKIAorc3RkOjp1bmlxdWVfcHRyPENo
YW5uZWxTZW5kSW50ZXJmYWNlPiBDcmVhdGVDaGFubmVsU2VuZCgKKyAgICBydGM6OlRhc2tRdWV1
ZSogZW5jb2Rlcl9xdWV1ZSwKKyAgICBQcm9jZXNzVGhyZWFkKiBtb2R1bGVfcHJvY2Vzc190aHJl
YWQsCisgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCwKKyAgICBU
cmFuc3BvcnQqIHJ0cF90cmFuc3BvcnQsCisgICAgUnRjcFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0
cywKKyAgICBSdGNFdmVudExvZyogcnRjX2V2ZW50X2xvZywKKyAgICBGcmFtZUVuY3J5cHRvcklu
dGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9u
cyYgY3J5cHRvX29wdGlvbnMsCisgICAgYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQsCisgICAgaW50
IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zKTsKKwogfSAgLy8gbmFtZXNwYWNlIHZvZQogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmRfcHJveHkuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVsX3NlbmRfcHJveHku
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOTFiZGM2NzFiZWViODkzNTBhNmE4
M2FhYzI5NGYxMjYwMzk4ODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
Y2hhbm5lbF9zZW5kX3Byb3h5LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMjA3ICswLDAgQEAKLS8q
Ci0gKiAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAot
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAiYXVkaW8vY2hhbm5lbF9zZW5kX3Byb3h5
LmgiCi0KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi0jaW5jbHVkZSAiYXBpL2NhbGwvYXVkaW9fc2lu
ay5oIgotI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmRfaW50ZXJm
YWNlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
bG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCi0K
LW5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIHZvZSB7Ci1DaGFubmVsU2VuZFByb3h5OjpD
aGFubmVsU2VuZFByb3h5KCkge30KLQotQ2hhbm5lbFNlbmRQcm94eTo6Q2hhbm5lbFNlbmRQcm94
eShzdGQ6OnVuaXF1ZV9wdHI8Q2hhbm5lbFNlbmQ+IGNoYW5uZWwpCi0gICAgOiBjaGFubmVsXyhz
dGQ6Om1vdmUoY2hhbm5lbCkpIHsKLSAgUlRDX0RDSEVDSyhjaGFubmVsXyk7Ci0gIG1vZHVsZV9w
cm9jZXNzX3RocmVhZF9jaGVja2VyXy5EZXRhY2hGcm9tVGhyZWFkKCk7Ci19Ci0KLUNoYW5uZWxT
ZW5kUHJveHk6On5DaGFubmVsU2VuZFByb3h5KCkge30KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5
OjpTZXRMb2NhbFNTUkModWludDMyX3Qgc3NyYykgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJl
YWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgaW50IGVycm9yID0gY2hhbm5l
bF8tPlNldExvY2FsU1NSQyhzc3JjKTsKLSAgUlRDX0RDSEVDS19FUSgwLCBlcnJvcik7Ci19Ci0K
LXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0TkFDS1N0YXR1cyhib29sIGVuYWJsZSwgaW50IG1h
eF9wYWNrZXRzKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRP
blZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+U2V0TkFDS1N0YXR1cyhlbmFibGUsIG1heF9w
YWNrZXRzKTsKLX0KLQotQ2FsbFNlbmRTdGF0aXN0aWNzIENoYW5uZWxTZW5kUHJveHk6OkdldFJU
Q1BTdGF0aXN0aWNzKCkgY29uc3QgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tl
cl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgQ2FsbFNlbmRTdGF0aXN0aWNzIHN0YXRzID0g
ezB9OwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+R2V0UlRQU3RhdGlzdGljcyhzdGF0cyk7Ci0g
IFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwotICByZXR1cm4gc3RhdHM7Ci19Ci0KLXZvaWQgQ2hh
bm5lbFNlbmRQcm94eTo6UmVnaXN0ZXJUcmFuc3BvcnQoVHJhbnNwb3J0KiB0cmFuc3BvcnQpIHsK
LSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQo
KSk7Ci0gIGNoYW5uZWxfLT5SZWdpc3RlclRyYW5zcG9ydCh0cmFuc3BvcnQpOwotfQotCi1ib29s
IENoYW5uZWxTZW5kUHJveHk6OlJlY2VpdmVkUlRDUFBhY2tldChjb25zdCB1aW50OF90KiBwYWNr
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVu
Z3RoKSB7Ci0gIC8vIE1heSBiZSBjYWxsZWQgb24gZWl0aGVyIHdvcmtlciB0aHJlYWQgb3IgbmV0
d29yayB0aHJlYWQuCi0gIHJldHVybiBjaGFubmVsXy0+UmVjZWl2ZWRSVENQUGFja2V0KHBhY2tl
dCwgbGVuZ3RoKSA9PSAwOwotfQotCi1ib29sIENoYW5uZWxTZW5kUHJveHk6OlNldEVuY29kZXIo
aW50IHBheWxvYWRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmNvZGVyKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2Vy
X3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5l
bF8tPlNldEVuY29kZXIocGF5bG9hZF90eXBlLCBzdGQ6Om1vdmUoZW5jb2RlcikpOwotfQotCi12
b2lkIENoYW5uZWxTZW5kUHJveHk6Ok1vZGlmeUVuY29kZXIoCi0gICAgcnRjOjpGdW5jdGlvblZp
ZXc8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiopPiBtb2RpZmllcikgewotICBS
VENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsK
LSAgY2hhbm5lbF8tPk1vZGlmeUVuY29kZXIobW9kaWZpZXIpOwotfQotCi12b2lkIENoYW5uZWxT
ZW5kUHJveHk6OlNldFJUQ1BTdGF0dXMoYm9vbCBlbmFibGUpIHsKLSAgUlRDX0RDSEVDSyh3b3Jr
ZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5T
ZXRSVENQU3RhdHVzKGVuYWJsZSk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0TWlk
KGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsIGludCBleHRlbnNpb25faWQpIHsKLSAgUlRDX0RDSEVD
Syh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNoYW5u
ZWxfLT5TZXRNaWQobWlkLCBleHRlbnNpb25faWQpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJv
eHk6OlNldFJUQ1BfQ05BTUUoY29uc3Qgc3RkOjpzdHJpbmcmIGNfbmFtZSkgewotICBSVENfRENI
RUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgLy8g
Tm90ZTogVm9FUlRQX1JUQ1A6OlNldFJUQ1BfQ05BTUUoKSBhY2NlcHRzIGEgY2hhclsyNTZdIGFy
cmF5LgotICBzdGQ6OnN0cmluZyBjX25hbWVfbGltaXRlZCA9IGNfbmFtZS5zdWJzdHIoMCwgMjU1
KTsKLSAgaW50IGVycm9yID0gY2hhbm5lbF8tPlNldFJUQ1BfQ05BTUUoY19uYW1lX2xpbWl0ZWQu
Y19zdHIoKSk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwotfQotCi12b2lkIENoYW5uZWxT
ZW5kUHJveHk6OlNldFNlbmRBdWRpb0xldmVsSW5kaWNhdGlvblN0YXR1cyhib29sIGVuYWJsZSwg
aW50IGlkKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZh
bGlkVGhyZWFkKCkpOwotICBpbnQgZXJyb3IgPSBjaGFubmVsXy0+U2V0U2VuZEF1ZGlvTGV2ZWxJ
bmRpY2F0aW9uU3RhdHVzKGVuYWJsZSwgaWQpOwotICBSVENfRENIRUNLX0VRKDAsIGVycm9yKTsK
LX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpFbmFibGVTZW5kVHJhbnNwb3J0U2VxdWVuY2VO
dW1iZXIoaW50IGlkKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxs
ZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+RW5hYmxlU2VuZFRyYW5zcG9ydFNlcXVl
bmNlTnVtYmVyKGlkKTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpSZWdpc3RlclNlbmRl
ckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygKLSAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyU2Vu
ZEludGVyZmFjZSogdHJhbnNwb3J0LAotICAgIFJ0Y3BCYW5kd2lkdGhPYnNlcnZlciogYmFuZHdp
ZHRoX29ic2VydmVyKSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxs
ZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+UmVnaXN0ZXJTZW5kZXJDb25nZXN0aW9u
Q29udHJvbE9iamVjdHModHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoX29ic2VydmVyKTsKLX0KLQotdm9pZCBDaGFu
bmVsU2VuZFByb3h5OjpSZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpIHsKLSAg
UlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7
Ci0gIGNoYW5uZWxfLT5SZXNldFNlbmRlckNvbmdlc3Rpb25Db250cm9sT2JqZWN0cygpOwotfQot
Ci1zdGQ6OnZlY3RvcjxSZXBvcnRCbG9jaz4gQ2hhbm5lbFNlbmRQcm94eTo6R2V0UmVtb3RlUlRD
UFJlcG9ydEJsb2NrcygpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNr
ZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UmVwb3J0
QmxvY2s+IGJsb2NrczsKLSAgaW50IGVycm9yID0gY2hhbm5lbF8tPkdldFJlbW90ZVJUQ1BSZXBv
cnRCbG9ja3MoJmJsb2Nrcyk7Ci0gIFJUQ19EQ0hFQ0tfRVEoMCwgZXJyb3IpOwotICByZXR1cm4g
YmxvY2tzOwotfQotCi1BTkFTdGF0cyBDaGFubmVsU2VuZFByb3h5OjpHZXRBTkFTdGF0aXN0aWNz
KCkgY29uc3QgewotICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25W
YWxpZFRocmVhZCgpKTsKLSAgcmV0dXJuIGNoYW5uZWxfLT5HZXRBTkFTdGF0aXN0aWNzKCk7Ci19
Ci0KLWJvb2wgQ2hhbm5lbFNlbmRQcm94eTo6U2V0U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5
cGUoaW50IHBheWxvYWRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHBheWxvYWRfZnJlcXVlbmN5KSB7Ci0gIFJUQ19EQ0hF
Q0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1
cm4gY2hhbm5lbF8tPlNldFNlbmRUZWxlcGhvbmVFdmVudFBheWxvYWRUeXBlKHBheWxvYWRfdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXlsb2FkX2ZyZXF1ZW5jeSkgPT0gMDsKLX0KLQotYm9vbCBDaGFubmVsU2VuZFByb3h5OjpTZW5k
VGVsZXBob25lRXZlbnRPdXRiYW5kKGludCBldmVudCwgaW50IGR1cmF0aW9uX21zKSB7Ci0gIFJU
Q19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwot
ICByZXR1cm4gY2hhbm5lbF8tPlNlbmRUZWxlcGhvbmVFdmVudE91dGJhbmQoZXZlbnQsIGR1cmF0
aW9uX21zKSA9PSAwOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OlNldEJpdHJhdGUoaW50
IGJpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qg
cHJvYmluZ19pbnRlcnZhbF9tcykgewotICAvLyBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG9u
IHRoZSB3b3JrZXIgdGhyZWFkLCBtb2R1bGUgcHJvY2VzcyB0aHJlYWQKLSAgLy8gb3Igb24gYSBU
YXNrUXVldWUgdmlhIFZpZGVvU2VuZFN0cmVhbUltcGw6Ok9uRW5jb2RlckNvbmZpZ3VyYXRpb25D
aGFuZ2VkLgotICAvLyBUT0RPKHNvbGVuYmVyZyk6IEZpZ3VyZSBvdXQgYSBnb29kIHdheSB0byBj
aGVjayB0aGlzIG9yIGVuZm9yY2UgY2FsbGluZwotICAvLyBydWxlcy4KLSAgLy8gUlRDX0RDSEVD
Syh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSB8fAotICAvLyAg
ICAgICAgICAgIG1vZHVsZV9wcm9jZXNzX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhy
ZWFkKCkpOwotICBjaGFubmVsXy0+U2V0Qml0UmF0ZShiaXRyYXRlX2JwcywgcHJvYmluZ19pbnRl
cnZhbF9tcyk7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6U2V0SW5wdXRNdXRlKGJvb2wg
bXV0ZWQpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFs
aWRUaHJlYWQoKSk7Ci0gIGNoYW5uZWxfLT5TZXRJbnB1dE11dGUobXV0ZWQpOwotfQotCi12b2lk
IENoYW5uZWxTZW5kUHJveHk6OlByb2Nlc3NBbmRFbmNvZGVBdWRpbygKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9GcmFtZT4gYXVkaW9fZnJhbWUpIHsKLSAgUlRDX0RDSEVDS19SVU5TX1NFUklB
TElaRUQoJmF1ZGlvX3RocmVhZF9yYWNlX2NoZWNrZXJfKTsKLSAgcmV0dXJuIGNoYW5uZWxfLT5Q
cm9jZXNzQW5kRW5jb2RlQXVkaW8oc3RkOjptb3ZlKGF1ZGlvX2ZyYW1lKSk7Ci19Ci0KLXZvaWQg
Q2hhbm5lbFNlbmRQcm94eTo6U2V0VHJhbnNwb3J0T3ZlcmhlYWQoaW50IHRyYW5zcG9ydF9vdmVy
aGVhZF9wZXJfcGFja2V0KSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5D
YWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVsXy0+U2V0VHJhbnNwb3J0T3ZlcmhlYWQo
dHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpOwotfQotCi1SdHBSdGNwKiBDaGFubmVsU2Vu
ZFByb3h5OjpHZXRSdHBSdGNwKCkgY29uc3QgewotICBSVENfRENIRUNLKG1vZHVsZV9wcm9jZXNz
X3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gY2hhbm5l
bF8tPkdldFJ0cFJ0Y3AoKTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpPblR3Y2NCYXNl
ZFVwbGlua1BhY2tldExvc3NSYXRlKGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpIHsKLSAgUlRDX0RD
SEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gIGNo
YW5uZWxfLT5PblR3Y2NCYXNlZFVwbGlua1BhY2tldExvc3NSYXRlKHBhY2tldF9sb3NzX3JhdGUp
OwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6Ok9uUmVjb3ZlcmFibGVVcGxpbmtQYWNrZXRM
b3NzUmF0ZSgKLSAgICBmbG9hdCByZWNvdmVyYWJsZV9wYWNrZXRfbG9zc19yYXRlKSB7Ci0gIFJU
Q19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwot
ICBjaGFubmVsXy0+T25SZWNvdmVyYWJsZVVwbGlua1BhY2tldExvc3NSYXRlKHJlY292ZXJhYmxl
X3BhY2tldF9sb3NzX3JhdGUpOwotfQotCi12b2lkIENoYW5uZWxTZW5kUHJveHk6OlN0YXJ0U2Vu
ZCgpIHsKLSAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRU
aHJlYWQoKSk7Ci0gIGludCBlcnJvciA9IGNoYW5uZWxfLT5TdGFydFNlbmQoKTsKLSAgUlRDX0RD
SEVDS19FUSgwLCBlcnJvcik7Ci19Ci0KLXZvaWQgQ2hhbm5lbFNlbmRQcm94eTo6U3RvcFNlbmQo
KSB7Ci0gIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhy
ZWFkKCkpOwotICBjaGFubmVsXy0+U3RvcFNlbmQoKTsKLX0KLQotQ2hhbm5lbFNlbmQqIENoYW5u
ZWxTZW5kUHJveHk6OkdldENoYW5uZWwoKSBjb25zdCB7Ci0gIHJldHVybiBjaGFubmVsXy5nZXQo
KTsKLX0KLQotdm9pZCBDaGFubmVsU2VuZFByb3h5OjpTZXRGcmFtZUVuY3J5cHRvcigKLSAgICBG
cmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yKSB7Ci0gIFJUQ19EQ0hFQ0so
d29ya2VyX3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICBjaGFubmVs
Xy0+U2V0RnJhbWVFbmNyeXB0b3IoZnJhbWVfZW5jcnlwdG9yKTsKLX0KLQotfSAgLy8gbmFtZXNw
YWNlIHZvZQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vY2hhbm5lbF9zZW5kX3Byb3h5Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9jaGFubmVs
X3NlbmRfcHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI4YjRhMDJjZTVl
ZWNkOGQ2OWM4ODZlNTIwODFlZmVkZWI5YWI1Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hdWRpby9jaGFubmVsX3NlbmRfcHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMSAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNSBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBBVURJT19DSEFOTkVMX1NF
TkRfUFJPWFlfSF8KLSNkZWZpbmUgQVVESU9fQ0hBTk5FTF9TRU5EX1BST1hZX0hfCi0KLSNpbmNs
dWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlci5oIgotI2luY2x1ZGUgImF1ZGlv
L2NoYW5uZWxfc2VuZC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9yYWNlX2NoZWNrZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90
aHJlYWRfY2hlY2tlci5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotY2xhc3MgRnJhbWVFbmNy
eXB0b3JJbnRlcmZhY2U7Ci1jbGFzcyBSdGNwQmFuZHdpZHRoT2JzZXJ2ZXI7Ci1jbGFzcyBSdHBS
dGNwOwotY2xhc3MgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2U7Ci1jbGFzcyBU
cmFuc3BvcnQ7Ci0KLW5hbWVzcGFjZSB2b2UgewotCi0vLyBUaGlzIGNsYXNzIHByb3ZpZGVzIHRo
ZSAidmlldyIgb2YgYSB2b2U6OkNoYW5uZWwgdGhhdCB3ZSBuZWVkIHRvIGltcGxlbWVudAotLy8g
d2VicnRjOjpBdWRpb1NlbmRTdHJlYW0uIEl0IHNlcnZlcyB0d28gcHVycG9zZXM6Ci0vLyAgMS4g
QWxsb3cgbW9ja2luZyBqdXN0IHRoZSBpbnRlcmZhY2VzIHVzZWQsIGluc3RlYWQgb2YgdGhlIGVu
dGlyZQotLy8gICAgIHZvZTo6Q2hhbm5lbCBjbGFzcy4KLS8vICAyLiBQcm92aWRlIGEgcmVmaW5l
ZCBpbnRlcmZhY2UgZm9yIHRoZSBzdHJlYW0gY2xhc3NlcywgaW5jbHVkaW5nIGFzc3VtcHRpb25z
Ci0vLyAgICAgb24gcmV0dXJuIHZhbHVlcyBhbmQgaW5wdXQgYWRhcHRhdGlvbi4KLWNsYXNzIENo
YW5uZWxTZW5kUHJveHkgewotIHB1YmxpYzoKLSAgQ2hhbm5lbFNlbmRQcm94eSgpOwotICBleHBs
aWNpdCBDaGFubmVsU2VuZFByb3h5KHN0ZDo6dW5pcXVlX3B0cjxDaGFubmVsU2VuZD4gY2hhbm5l
bCk7Ci0gIHZpcnR1YWwgfkNoYW5uZWxTZW5kUHJveHkoKTsKLQotICAvLyBTaGFyZWQgd2l0aCBD
aGFubmVsUmVjZWl2ZVByb3h5Ci0gIHZpcnR1YWwgdm9pZCBTZXRMb2NhbFNTUkModWludDMyX3Qg
c3NyYyk7Ci0gIHZpcnR1YWwgdm9pZCBTZXROQUNLU3RhdHVzKGJvb2wgZW5hYmxlLCBpbnQgbWF4
X3BhY2tldHMpOwotICB2aXJ0dWFsIENhbGxTZW5kU3RhdGlzdGljcyBHZXRSVENQU3RhdGlzdGlj
cygpIGNvbnN0OwotICB2aXJ0dWFsIHZvaWQgUmVnaXN0ZXJUcmFuc3BvcnQoVHJhbnNwb3J0KiB0
cmFuc3BvcnQpOwotICB2aXJ0dWFsIGJvb2wgUmVjZWl2ZWRSVENQUGFja2V0KGNvbnN0IHVpbnQ4
X3QqIHBhY2tldCwgc2l6ZV90IGxlbmd0aCk7Ci0KLSAgdmlydHVhbCBib29sIFNldEVuY29kZXIo
aW50IHBheWxvYWRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2Rlcik7Ci0gIHZpcnR1YWwgdm9pZCBNb2RpZnlFbmNvZGVy
KAotICAgICAgcnRjOjpGdW5jdGlvblZpZXc8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNv
ZGVyPiopPiBtb2RpZmllcik7Ci0KLSAgdmlydHVhbCB2b2lkIFNldFJUQ1BTdGF0dXMoYm9vbCBl
bmFibGUpOwotICB2aXJ0dWFsIHZvaWQgU2V0TWlkKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsIGlu
dCBleHRlbnNpb25faWQpOwotICB2aXJ0dWFsIHZvaWQgU2V0UlRDUF9DTkFNRShjb25zdCBzdGQ6
OnN0cmluZyYgY19uYW1lKTsKLSAgdmlydHVhbCB2b2lkIFNldFNlbmRBdWRpb0xldmVsSW5kaWNh
dGlvblN0YXR1cyhib29sIGVuYWJsZSwgaW50IGlkKTsKLSAgdmlydHVhbCB2b2lkIEVuYWJsZVNl
bmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihpbnQgaWQpOwotICB2aXJ0dWFsIHZvaWQgUmVnaXN0
ZXJTZW5kZXJDb25nZXN0aW9uQ29udHJvbE9iamVjdHMoCi0gICAgICBSdHBUcmFuc3BvcnRDb250
cm9sbGVyU2VuZEludGVyZmFjZSogdHJhbnNwb3J0LAotICAgICAgUnRjcEJhbmR3aWR0aE9ic2Vy
dmVyKiBiYW5kd2lkdGhfb2JzZXJ2ZXIpOwotICB2aXJ0dWFsIHZvaWQgUmVzZXRTZW5kZXJDb25n
ZXN0aW9uQ29udHJvbE9iamVjdHMoKTsKLSAgdmlydHVhbCBzdGQ6OnZlY3RvcjxSZXBvcnRCbG9j
az4gR2V0UmVtb3RlUlRDUFJlcG9ydEJsb2NrcygpIGNvbnN0OwotICB2aXJ0dWFsIEFOQVN0YXRz
IEdldEFOQVN0YXRpc3RpY3MoKSBjb25zdDsKLSAgdmlydHVhbCBib29sIFNldFNlbmRUZWxlcGhv
bmVFdmVudFBheWxvYWRUeXBlKGludCBwYXlsb2FkX3R5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGF5bG9hZF9mcmVxdWVuY3kpOwotICB2
aXJ0dWFsIGJvb2wgU2VuZFRlbGVwaG9uZUV2ZW50T3V0YmFuZChpbnQgZXZlbnQsIGludCBkdXJh
dGlvbl9tcyk7Ci0gIHZpcnR1YWwgdm9pZCBTZXRCaXRyYXRlKGludCBiaXRyYXRlX2JwcywgaW50
NjRfdCBwcm9iaW5nX2ludGVydmFsX21zKTsKLSAgdmlydHVhbCB2b2lkIFNldElucHV0TXV0ZShi
b29sIG11dGVkKTsKLQotICB2aXJ0dWFsIHZvaWQgUHJvY2Vzc0FuZEVuY29kZUF1ZGlvKHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0ZyYW1lPiBhdWRpb19mcmFtZSk7Ci0gIHZpcnR1YWwgdm9pZCBTZXRU
cmFuc3BvcnRPdmVyaGVhZChpbnQgdHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpOwotICB2
aXJ0dWFsIFJ0cFJ0Y3AqIEdldFJ0cFJ0Y3AoKSBjb25zdDsKLQotICB2aXJ0dWFsIHZvaWQgT25U
d2NjQmFzZWRVcGxpbmtQYWNrZXRMb3NzUmF0ZShmbG9hdCBwYWNrZXRfbG9zc19yYXRlKTsKLSAg
dmlydHVhbCB2b2lkIE9uUmVjb3ZlcmFibGVVcGxpbmtQYWNrZXRMb3NzUmF0ZSgKLSAgICAgIGZs
b2F0IHJlY292ZXJhYmxlX3BhY2tldF9sb3NzX3JhdGUpOwotICB2aXJ0dWFsIHZvaWQgU3RhcnRT
ZW5kKCk7Ci0gIHZpcnR1YWwgdm9pZCBTdG9wU2VuZCgpOwotCi0gIC8vIE5lZWRlZCBieSBDaGFu
bmVsUmVjZWl2ZVByb3h5OjpBc3NvY2lhdGVTZW5kQ2hhbm5lbC4KLSAgdmlydHVhbCBDaGFubmVs
U2VuZCogR2V0Q2hhbm5lbCgpIGNvbnN0OwotCi0gIC8vIEUyRUUgQ3VzdG9tIEF1ZGlvIEZyYW1l
IEVuY3J5cHRpb24gKE9wdGlvbmFsKQotICB2aXJ0dWFsIHZvaWQgU2V0RnJhbWVFbmNyeXB0b3Io
RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvcik7Ci0KLSBwcml2YXRlOgot
ICAvLyBUaHJlYWQgY2hlY2tlcnMgZG9jdW1lbnQgYW5kIGxvY2sgdXNhZ2Ugb2Ygc29tZSBtZXRo
b2RzIG9uIHZvZTo6Q2hhbm5lbCB0bwotICAvLyBzcGVjaWZpYyB0aHJlYWRzIHdlIGtub3cgYWJv
dXQuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgc3BsaXQgdXAKLSAgLy8gdm9lOjpDaGFubmVs
IGludG8gcGFydHMgd2l0aCBzaW5nbGUtdGhyZWFkZWQgc2VtYW50aWNzLCBhbmQgdGhlcmVieSBy
ZWR1Y2UKLSAgLy8gdGhlIG5lZWQgZm9yIGxvY2tzLgotICBydGM6OlRocmVhZENoZWNrZXIgd29y
a2VyX3RocmVhZF9jaGVja2VyXzsKLSAgcnRjOjpUaHJlYWRDaGVja2VyIG1vZHVsZV9wcm9jZXNz
X3RocmVhZF9jaGVja2VyXzsKLSAgLy8gTWV0aG9kcyBhY2Nlc3NlZCBmcm9tIGF1ZGlvIGFuZCB2
aWRlbyB0aHJlYWRzIGFyZSBjaGVja2VkIGZvciBzZXF1ZW50aWFsLQotICAvLyBvbmx5IGFjY2Vz
cy4gV2UgZG9uJ3QgbmVjZXNzYXJpbHkgb3duIGFuZCBjb250cm9sIHRoZXNlIHRocmVhZHMsIHNv
IHRocmVhZAotICAvLyBjaGVja2VycyBjYW5ub3QgYmUgdXNlZC4gRS5nLiBDaHJvbWl1bSBtYXkg
dHJhbnNmZXIgIm93bmVyc2hpcCIgZnJvbSBvbmUKLSAgLy8gYXVkaW8gdGhyZWFkIHRvIGFub3Ro
ZXIsIGJ1dCBhY2Nlc3MgaXMgc3RpbGwgc2VxdWVudGlhbC4KLSAgcnRjOjpSYWNlQ2hlY2tlciBh
dWRpb190aHJlYWRfcmFjZV9jaGVja2VyXzsKLSAgcnRjOjpSYWNlQ2hlY2tlciB2aWRlb19jYXB0
dXJlX3RocmVhZF9yYWNlX2NoZWNrZXJfOwotICBzdGQ6OnVuaXF1ZV9wdHI8Q2hhbm5lbFNlbmQ+
IGNoYW5uZWxfOwotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oQ2hhbm5lbFNlbmRQ
cm94eSk7Ci19OwotfSAgLy8gbmFtZXNwYWNlIHZvZQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywot
Ci0jZW5kaWYgIC8vIEFVRElPX0NIQU5ORUxfU0VORF9QUk9YWV9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbW9ja192b2VfY2hh
bm5lbF9wcm94eS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXVkaW8vbW9ja192b2VfY2hhbm5lbF9wcm94eS5oCmluZGV4IDkxMDg1OGZlMTMwY2FjOGQ5NGY4
NGNiMGM1OWI4YjFhZmY1ZTJmNjguLmVlZTI1YzVhMmQ1MzJjYjI0NWQ5OWNmNGRkNDg3M2U5NzQz
OTI0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2F1ZGlvL21vY2tfdm9lX2NoYW5uZWxfcHJveHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9tb2NrX3ZvZV9jaGFubmVsX3Byb3h5LmgK
QEAgLTE2LDE1ICsxNiwxNiBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+
CiAKLSNpbmNsdWRlICJhdWRpby9jaGFubmVsX3JlY2VpdmVfcHJveHkuaCIKLSNpbmNsdWRlICJh
dWRpby9jaGFubmVsX3NlbmRfcHJveHkuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX2ZyYW1l
X2VuY3J5cHRvci5oIgorI2luY2x1ZGUgImF1ZGlvL2NoYW5uZWxfcmVjZWl2ZS5oIgorI2luY2x1
ZGUgImF1ZGlvL2NoYW5uZWxfc2VuZC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIKICNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewogCi1jbGFzcyBNb2NrQ2hhbm5lbFJl
Y2VpdmVQcm94eSA6IHB1YmxpYyB2b2U6OkNoYW5uZWxSZWNlaXZlUHJveHkgeworY2xhc3MgTW9j
a0NoYW5uZWxSZWNlaXZlIDogcHVibGljIHZvZTo6Q2hhbm5lbFJlY2VpdmVJbnRlcmZhY2Ugewog
IHB1YmxpYzoKICAgTU9DS19NRVRIT0QxKFNldExvY2FsU1NSQywgdm9pZCh1aW50MzJfdCBzc3Jj
KSk7CiAgIE1PQ0tfTUVUSE9EMihTZXROQUNLU3RhdHVzLCB2b2lkKGJvb2wgZW5hYmxlLCBpbnQg
bWF4X3BhY2tldHMpKTsKQEAgLTQ2LDEwICs0NywxMCBAQCBjbGFzcyBNb2NrQ2hhbm5lbFJlY2Vp
dmVQcm94eSA6IHB1YmxpYyB2b2U6OkNoYW5uZWxSZWNlaXZlUHJveHkgewogICAgICAgICAgICAg
ICAgQXVkaW9NaXhlcjo6U291cmNlOjpBdWRpb0ZyYW1lSW5mbyhpbnQgc2FtcGxlX3JhdGVfaHos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlv
RnJhbWUqIGF1ZGlvX2ZyYW1lKSk7CiAgIE1PQ0tfQ09OU1RfTUVUSE9EMChQcmVmZXJyZWRTYW1w
bGVSYXRlLCBpbnQoKSk7Ci0gIE1PQ0tfTUVUSE9EMShBc3NvY2lhdGVTZW5kQ2hhbm5lbCwKLSAg
ICAgICAgICAgICAgIHZvaWQoY29uc3Qgdm9lOjpDaGFubmVsU2VuZFByb3h5JiBzZW5kX2NoYW5u
ZWxfcHJveHkpKTsKLSAgTU9DS19NRVRIT0QwKERpc2Fzc29jaWF0ZVNlbmRDaGFubmVsLCB2b2lk
KCkpOworICBNT0NLX01FVEhPRDEoU2V0QXNzb2NpYXRlZFNlbmRDaGFubmVsLAorICAgICAgICAg
ICAgICAgdm9pZChjb25zdCB2b2U6OkNoYW5uZWxTZW5kSW50ZXJmYWNlKiBzZW5kX2NoYW5uZWwp
KTsKICAgTU9DS19DT05TVF9NRVRIT0QwKEdldFBsYXlvdXRUaW1lc3RhbXAsIHVpbnQzMl90KCkp
OworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0U3luY0luZm8sIGFic2w6Om9wdGlvbmFsPFN5bmNh
YmxlOjpJbmZvPigpKTsKICAgTU9DS19NRVRIT0QxKFNldE1pbmltdW1QbGF5b3V0RGVsYXksIHZv
aWQoaW50IGRlbGF5X21zKSk7CiAgIE1PQ0tfQ09OU1RfTUVUSE9EMShHZXRSZWNDb2RlYywgYm9v
bChDb2RlY0luc3QqIGNvZGVjX2luc3QpKTsKICAgTU9DS19NRVRIT0QxKFNldFJlY2VpdmVDb2Rl
Y3MsCkBAIC01OSw3ICs2MCw3IEBAIGNsYXNzIE1vY2tDaGFubmVsUmVjZWl2ZVByb3h5IDogcHVi
bGljIHZvZTo6Q2hhbm5lbFJlY2VpdmVQcm94eSB7CiAgIE1PQ0tfTUVUSE9EMChTdG9wUGxheW91
dCwgdm9pZCgpKTsKIH07CiAKLWNsYXNzIE1vY2tDaGFubmVsU2VuZFByb3h5IDogcHVibGljIHZv
ZTo6Q2hhbm5lbFNlbmRQcm94eSB7CitjbGFzcyBNb2NrQ2hhbm5lbFNlbmQgOiBwdWJsaWMgdm9l
OjpDaGFubmVsU2VuZEludGVyZmFjZSB7CiAgcHVibGljOgogICAvLyBHTW9jayBkb2Vzbid0IGxp
a2UgbW92ZS1vbmx5IHR5cGVzLCBsaWtlIHN0ZDo6dW5pcXVlX3B0ci4KICAgdmlydHVhbCBib29s
IFNldEVuY29kZXIoaW50IHBheWxvYWRfdHlwZSwKQEAgLTcxLDEwICs3MiwxMCBAQCBjbGFzcyBN
b2NrQ2hhbm5lbFNlbmRQcm94eSA6IHB1YmxpYyB2b2U6OkNoYW5uZWxTZW5kUHJveHkgewogICBN
T0NLX01FVEhPRDEoCiAgICAgICBNb2RpZnlFbmNvZGVyLAogICAgICAgdm9pZChydGM6OkZ1bmN0
aW9uVmlldzx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+Kik+IG1vZGlmaWVyKSk7
Ci0gIE1PQ0tfTUVUSE9EMShTZXRSVENQU3RhdHVzLCB2b2lkKGJvb2wgZW5hYmxlKSk7CisgIE1P
Q0tfTUVUSE9EMihTZXRNaWQsIHZvaWQoY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwgaW50IGV4dGVu
c2lvbl9pZCkpOwogICBNT0NLX01FVEhPRDEoU2V0TG9jYWxTU1JDLCB2b2lkKHVpbnQzMl90IHNz
cmMpKTsKLSAgTU9DS19NRVRIT0QxKFNldFJUQ1BfQ05BTUUsIHZvaWQoY29uc3Qgc3RkOjpzdHJp
bmcmIGNfbmFtZSkpOwotICBNT0NLX01FVEhPRDIoU2V0TkFDS1N0YXR1cywgdm9pZChib29sIGVu
YWJsZSwgaW50IG1heF9wYWNrZXRzKSk7CisgIE1PQ0tfTUVUSE9EMShTZXRSVENQX0NOQU1FLCB2
b2lkKGFic2w6OnN0cmluZ192aWV3IGNfbmFtZSkpOworICBNT0NLX01FVEhPRDEoU2V0RXh0bWFw
QWxsb3dNaXhlZCwgdm9pZChib29sIGV4dG1hcF9hbGxvd19taXhlZCkpOwogICBNT0NLX01FVEhP
RDIoU2V0U2VuZEF1ZGlvTGV2ZWxJbmRpY2F0aW9uU3RhdHVzLCB2b2lkKGJvb2wgZW5hYmxlLCBp
bnQgaWQpKTsKICAgTU9DS19NRVRIT0QxKEVuYWJsZVNlbmRUcmFuc3BvcnRTZXF1ZW5jZU51bWJl
ciwgdm9pZChpbnQgaWQpKTsKICAgTU9DS19NRVRIT0QyKFJlZ2lzdGVyU2VuZGVyQ29uZ2VzdGlv
bkNvbnRyb2xPYmplY3RzLApAQCAtODcsOSArODgsOCBAQCBjbGFzcyBNb2NrQ2hhbm5lbFNlbmRQ
cm94eSA6IHB1YmxpYyB2b2U6OkNoYW5uZWxTZW5kUHJveHkgewogICBNT0NLX01FVEhPRDIoU2V0
U2VuZFRlbGVwaG9uZUV2ZW50UGF5bG9hZFR5cGUsCiAgICAgICAgICAgICAgICBib29sKGludCBw
YXlsb2FkX3R5cGUsIGludCBwYXlsb2FkX2ZyZXF1ZW5jeSkpOwogICBNT0NLX01FVEhPRDIoU2Vu
ZFRlbGVwaG9uZUV2ZW50T3V0YmFuZCwgYm9vbChpbnQgZXZlbnQsIGludCBkdXJhdGlvbl9tcykp
OwotICBNT0NLX01FVEhPRDIoU2V0Qml0cmF0ZSwgdm9pZChpbnQgYml0cmF0ZV9icHMsIGludDY0
X3QgcHJvYmluZ19pbnRlcnZhbF9tcykpOworICBNT0NLX01FVEhPRDEoT25CaXRyYXRlQWxsb2Nh
dGlvbiwgdm9pZChCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpKTsKICAgTU9DS19NRVRI
T0QxKFNldElucHV0TXV0ZSwgdm9pZChib29sIG11dGVkKSk7Ci0gIE1PQ0tfTUVUSE9EMShSZWdp
c3RlclRyYW5zcG9ydCwgdm9pZChUcmFuc3BvcnQqIHRyYW5zcG9ydCkpOwogICBNT0NLX01FVEhP
RDIoUmVjZWl2ZWRSVENQUGFja2V0LCBib29sKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90
IGxlbmd0aCkpOwogICAvLyBHTW9jayBkb2Vzbid0IGxpa2UgbW92ZS1vbmx5IHR5cGVzLCBsaWtl
IHN0ZDo6dW5pcXVlX3B0ci4KICAgdmlydHVhbCB2b2lkIFByb2Nlc3NBbmRFbmNvZGVBdWRpbyhz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9GcmFtZT4gYXVkaW9fZnJhbWUpIHsKQEAgLTk3LDE1ICs5Nywx
OSBAQCBjbGFzcyBNb2NrQ2hhbm5lbFNlbmRQcm94eSA6IHB1YmxpYyB2b2U6OkNoYW5uZWxTZW5k
UHJveHkgewogICB9CiAgIE1PQ0tfTUVUSE9EMShQcm9jZXNzQW5kRW5jb2RlQXVkaW9Gb3JNb2Nr
LAogICAgICAgICAgICAgICAgdm9pZChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GcmFtZT4qIGF1ZGlv
X2ZyYW1lKSk7Ci0gIE1PQ0tfTUVUSE9EMShTZXRUcmFuc3BvcnRPdmVyaGVhZCwgdm9pZChpbnQg
dHJhbnNwb3J0X292ZXJoZWFkX3Blcl9wYWNrZXQpKTsKKyAgTU9DS19NRVRIT0QxKFNldFRyYW5z
cG9ydE92ZXJoZWFkLAorICAgICAgICAgICAgICAgdm9pZChzaXplX3QgdHJhbnNwb3J0X292ZXJo
ZWFkX3Blcl9wYWNrZXQpKTsKICAgTU9DS19DT05TVF9NRVRIT0QwKEdldFJ0cFJ0Y3AsIFJ0cFJ0
Y3AqKCkpOworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0Qml0cmF0ZSwgaW50KCkpOwogICBNT0NL
X01FVEhPRDEoT25Ud2NjQmFzZWRVcGxpbmtQYWNrZXRMb3NzUmF0ZSwgdm9pZChmbG9hdCBwYWNr
ZXRfbG9zc19yYXRlKSk7CiAgIE1PQ0tfTUVUSE9EMShPblJlY292ZXJhYmxlVXBsaW5rUGFja2V0
TG9zc1JhdGUsCiAgICAgICAgICAgICAgICB2b2lkKGZsb2F0IHJlY292ZXJhYmxlX3BhY2tldF9s
b3NzX3JhdGUpKTsKKyAgTU9DS19DT05TVF9NRVRIT0QwKEdldFJUVCwgaW50NjRfdCgpKTsKICAg
TU9DS19NRVRIT0QwKFN0YXJ0U2VuZCwgdm9pZCgpKTsKICAgTU9DS19NRVRIT0QwKFN0b3BTZW5k
LCB2b2lkKCkpOwotICBNT0NLX01FVEhPRDEoU2V0RnJhbWVFbmNyeXB0b3IsCi0gICAgICAgICAg
ICAgICB2b2lkKEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IpKTsKKyAg
TU9DS19NRVRIT0QxKAorICAgICAgU2V0RnJhbWVFbmNyeXB0b3IsCisgICAgICB2b2lkKHJ0Yzo6
c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yKSk7
CiB9OwogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL251
bGxfYXVkaW9fcG9sbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIuY2MKaW5kZXggYzIyYjNkODc5MTE1ODExY2U2
ZDBkMWQyNzRkYjFiZmQzNzE4YzI3ZC4uZDJiMTE5OWVkNmRkMjdkNThkM2Q3ZTQ4NjcyOGU0OWYz
YzMxOGM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIuY2MKQEAgLTks
OCArOSwxMyBAQAogICovCiAKICNpbmNsdWRlICJhdWRpby9udWxsX2F1ZGlvX3BvbGxlci5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9jYXRpb24u
aCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1l
dXRpbHMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
bnVsbF9hdWRpb19wb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2F1ZGlvL251bGxfYXVkaW9fcG9sbGVyLmgKaW5kZXggYWZiNmVkYmFmMTYxMzJmNzg3
MDg4YWNjNmYzNjZiZDFjYjYyNDcwOC4uZjkxZWI3ZDZjMDc4MjQ0OGNjOWE3YTY5NDNiNTU0MmJm
M2I3YzExZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXVkaW8vbnVsbF9hdWRpb19wb2xsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9udWxsX2F1ZGlvX3BvbGxlci5oCkBAIC0xMSw4
ICsxMSwxMSBAQAogI2lmbmRlZiBBVURJT19OVUxMX0FVRElPX1BPTExFUl9IXwogI2RlZmluZSBB
VURJT19OVUxMX0FVRElPX1BPTExFUl9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZV9kZWZpbmVzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWhhbmRsZXIuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9tZXNzYWdlcXVldWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4X3Jlc2FtcGxlLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MKaW5k
ZXggOTcyMjJlOTQ3YTRlNjJmMzQ1YzczMDRkN2I2OTJhZjljMGRhNWI2NC4uYjExNThkYTIxM2Y5
NjZiNDQzNDBkNjIyMGZjOWUwNGY2NjJhN2ViYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVz
YW1wbGUuY2MKQEAgLTEzLDEwICsxMyw3IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2Zy
YW1lLmgiCiAjaW5jbHVkZSAiYXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9pbmNsdWRlL3B1c2hfcmVzYW1wbGVy
LmgiCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2ln
bmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8g
Tk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFj
ZSB2b2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19id2VfaW50ZWdyYXRpb25fdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fYndlX2lu
dGVncmF0aW9uX3Rlc3QuY2MKaW5kZXggOGVjMmE3Y2Y0YTU3NGUxNTNjYWExNDNlZTY0N2Y0MTMz
ZmM5ZWU5Mi4uOWZhOTViMTdiOGU0NmQ5NGVlYmQ2NDFjMzdjMDIyNjFjY2Y4MGQ0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVz
dC9hdWRpb19id2VfaW50ZWdyYXRpb25fdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2J3ZV9pbnRlZ3JhdGlvbl90
ZXN0LmNjCkBAIC0xMjMsOCArMTIzLDggQEAgY2xhc3MgTm9CYW5kd2lkdGhEcm9wQWZ0ZXJEdHgg
OiBwdWJsaWMgQXVkaW9Cd2VUZXN0IHsKICAgICByZXR1cm4gdGVzdDo6UmVzb3VyY2VQYXRoKCJ2
b2ljZV9lbmdpbmUvYXVkaW9fZHR4MTYiLCAid2F2Iik7CiAgIH0KIAotICBEZWZhdWx0TmV0d29y
a1NpbXVsYXRpb25Db25maWcgR2V0TmV0d29ya1BpcGVDb25maWcoKSBvdmVycmlkZSB7Ci0gICAg
RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIHBpcGVfY29uZmlnOworICBCdWlsdEluTmV0
d29ya0JlaGF2aW9yQ29uZmlnIEdldE5ldHdvcmtQaXBlQ29uZmlnKCkgb3ZlcnJpZGUgeworICAg
IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgcGlwZV9jb25maWc7CiAgICAgcGlwZV9jb25m
aWcubGlua19jYXBhY2l0eV9rYnBzID0gNTA7CiAgICAgcGlwZV9jb25maWcucXVldWVfbGVuZ3Ro
X3BhY2tldHMgPSAxNTAwOwogICAgIHBpcGVfY29uZmlnLnF1ZXVlX2RlbGF5X21zID0gMzAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVk
aW8vdGVzdC9hdWRpb19id2VfaW50ZWdyYXRpb25fdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19id2VfaW50ZWdyYXRpb25f
dGVzdC5oCmluZGV4IGM3MGFkMWM5MWI5M2Y3NzFiNTgwZjQ2MGFmZjYzMWUyYTZjZDZiMWEuLjRk
ZTJjYWIzMTYxM2JlYzM1OTY4MTExYTEwZGM1NWUzYjk5NWE3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fYndl
X2ludGVncmF0aW9uX3Rlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2J3ZV9pbnRlZ3JhdGlvbl90ZXN0LmgKQEAgLTI3
LDcgKzI3LDcgQEAgY2xhc3MgQXVkaW9Cd2VUZXN0IDogcHVibGljIHRlc3Q6OkVuZFRvRW5kVGVz
dCB7CiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIEF1ZGlvSW5wdXRGaWxlKCkg
PSAwOwogCi0gIHZpcnR1YWwgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIEdldE5ldHdv
cmtQaXBlQ29uZmlnKCkgPSAwOworICB2aXJ0dWFsIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25m
aWcgR2V0TmV0d29ya1BpcGVDb25maWcoKSA9IDA7CiAKICAgc2l6ZV90IEdldE51bVZpZGVvU3Ry
ZWFtcygpIGNvbnN0IG92ZXJyaWRlOwogICBzaXplX3QgR2V0TnVtQXVkaW9TdHJlYW1zKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2VuZF90b19lbmRfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fZW5kX3Rv
X2VuZF90ZXN0LmNjCmluZGV4IDAyYWJlNzM0YmJmZTFmMmVjNjg4YjQwMmNhMTIyZTJlNWQ0OGQ1
OTYuLjVlMTg3YWQ4Zjg5ODA5MTI5MzVhZDZhMGJmYTkwY2MwOWIzMzJlNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVk
aW9fZW5kX3RvX2VuZF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fZW5kX3RvX2VuZF90ZXN0LmNjCkBAIC0yOCw4
ICsyOCw4IEBAIGNvbnN0ZXhwciBpbnQga1NhbXBsZVJhdGUgPSA0ODAwMDsKIEF1ZGlvRW5kVG9F
bmRUZXN0OjpBdWRpb0VuZFRvRW5kVGVzdCgpCiAgICAgOiBFbmRUb0VuZFRlc3QoQ2FsbFRlc3Q6
OmtEZWZhdWx0VGltZW91dE1zKSB7fQogCi1EZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcg
QXVkaW9FbmRUb0VuZFRlc3Q6OkdldE5ldHdvcmtQaXBlQ29uZmlnKCkgY29uc3QgewotICByZXR1
cm4gRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCk7CitCdWlsdEluTmV0d29ya0JlaGF2
aW9yQ29uZmlnIEF1ZGlvRW5kVG9FbmRUZXN0OjpHZXROZXR3b3JrUGlwZUNvbmZpZygpIGNvbnN0
IHsKKyAgcmV0dXJuIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKTsKIH0KIAogc2l6ZV90
IEF1ZGlvRW5kVG9FbmRUZXN0OjpHZXROdW1WaWRlb1N0cmVhbXMoKSBjb25zdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0
L2F1ZGlvX2VuZF90b19lbmRfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvYXVkaW8vdGVzdC9hdWRpb19lbmRfdG9fZW5kX3Rlc3QuaAppbmRleCA5ZGRh
ODM0ZDIyYjRlZDZlNWVlMmEwZjJmNDg3MjNjZjRjMDBjMDAyLi5iYTFlMGM3ZDZlZjhlZWM3NzBm
M2JjZGQ4MTNiZmIyMjc0NWE0ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX2VuZF90b19lbmRfdGVzdC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3Qv
YXVkaW9fZW5kX3RvX2VuZF90ZXN0LmgKQEAgLTI5LDcgKzI5LDcgQEAgY2xhc3MgQXVkaW9FbmRU
b0VuZFRlc3QgOiBwdWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKICAgY29uc3QgQXVkaW9TZW5k
U3RyZWFtKiBzZW5kX3N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIHNlbmRfc3RyZWFtXzsgfQogICBj
b25zdCBBdWRpb1JlY2VpdmVTdHJlYW0qIHJlY2VpdmVfc3RyZWFtKCkgY29uc3QgeyByZXR1cm4g
cmVjZWl2ZV9zdHJlYW1fOyB9CiAKLSAgdmlydHVhbCBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWcgR2V0TmV0d29ya1BpcGVDb25maWcoKSBjb25zdDsKKyAgdmlydHVhbCBCdWlsdEluTmV0
d29ya0JlaGF2aW9yQ29uZmlnIEdldE5ldHdvcmtQaXBlQ29uZmlnKCkgY29uc3Q7CiAKICAgc2l6
ZV90IEdldE51bVZpZGVvU3RyZWFtcygpIGNvbnN0IG92ZXJyaWRlOwogICBzaXplX3QgR2V0TnVt
QXVkaW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L2F1ZGlvX3N0YXRzX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0
L2F1ZGlvX3N0YXRzX3Rlc3QuY2MKaW5kZXggMDE5Njc5ZTA3ODJmODZiMGI3NmE0YjkwMzFlZWJj
NzkzYTNlMjM0OS4uNTU2YTE2ZGZhNmQ1MDU2MzNmOTk3MmQwOTY1MmJjYzE3ZjAxOWJhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8v
dGVzdC9hdWRpb19zdGF0c190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvYXVkaW9fc3RhdHNfdGVzdC5jYwpAQCAtMzIsOCAr
MzIsOCBAQCBjbGFzcyBOb0xvc3NUZXN0IDogcHVibGljIEF1ZGlvRW5kVG9FbmRUZXN0IHsKIAog
ICBOb0xvc3NUZXN0KCkgPSBkZWZhdWx0OwogCi0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNv
bmZpZyBHZXROZXR3b3JrUGlwZUNvbmZpZygpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICBEZWZhdWx0
TmV0d29ya1NpbXVsYXRpb25Db25maWcgcGlwZV9jb25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVo
YXZpb3JDb25maWcgR2V0TmV0d29ya1BpcGVDb25maWcoKSBjb25zdCBvdmVycmlkZSB7CisgICAg
QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBwaXBlX2NvbmZpZzsKICAgICBwaXBlX2NvbmZp
Zy5xdWV1ZV9kZWxheV9tcyA9IGtSdHRNcyAvIDI7CiAgICAgcmV0dXJuIHBpcGVfY29uZmlnOwog
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9hdWRpby90ZXN0L2xvd19iYW5kd2lkdGhfYXVkaW9fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvbG93X2JhbmR3aWR0aF9hdWRp
b190ZXN0LmNjCmluZGV4IDE2YTNiOTFlODc3Y2RkODhkNmY5M2Y4ZWQ2ZjIyYjliYzkyYWI0Mzcu
Ljg1N2Y5ODNkNTc3NzVhMWE0N2IxMGY4MDk4MGQ2OGE5ZThkZTI1ZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvbG93X2Jh
bmR3aWR0aF9hdWRpb190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvbG93X2JhbmR3aWR0aF9hdWRpb190ZXN0LmNjCkBAIC0x
NCwxNCArMTQsMTUgQEAKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9zbGVlcC5o
IgogI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKLURFRklORV9pbnQo
c2FtcGxlX3JhdGVfaHosCi0gICAgICAgICAgIDE2MDAwLAotICAgICAgICAgICAiU2FtcGxlIHJh
dGUgKEh6KSBvZiB0aGUgcHJvZHVjZWQgYXVkaW8gZmlsZXMuIik7CitXRUJSVENfREVGSU5FX2lu
dChzYW1wbGVfcmF0ZV9oeiwKKyAgICAgICAgICAgICAgICAgIDE2MDAwLAorICAgICAgICAgICAg
ICAgICAgIlNhbXBsZSByYXRlIChIeikgb2YgdGhlIHByb2R1Y2VkIGF1ZGlvIGZpbGVzLiIpOwog
Ci1ERUZJTkVfYm9vbChxdWljaywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIkRv
bid0IGRvIHRoZSBmdWxsIGF1ZGlvIHJlY29yZGluZy4gIgotICAgICAgICAgICAgIlVzZWQgdG8g
cXVpY2tseSBjaGVjayB0aGF0IHRoZSB0ZXN0IHJ1bnMgd2l0aG91dCBjcmFzaGluZy4iKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbCgKKyAgICBxdWljaywKKyAgICBmYWxzZSwKKyAgICAiRG9uJ3QgZG8g
dGhlIGZ1bGwgYXVkaW8gcmVjb3JkaW5nLiAiCisgICAgIlVzZWQgdG8gcXVpY2tseSBjaGVjayB0
aGF0IHRoZSB0ZXN0IHJ1bnMgd2l0aG91dCBjcmFzaGluZy4iKTsKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiBuYW1lc3BhY2UgdGVzdCB7CkBAIC04OSw4ICs5MCw4IEBAIGNsYXNzIE1vYmlsZTJHTmV0
d29ya1Rlc3QgOiBwdWJsaWMgQXVkaW9RdWFsaXR5VGVzdCB7CiAgICAgICAgICB7eyJtYXhhdmVy
YWdlYml0cmF0ZSIsICI2MDAwIn0sIHsicHRpbWUiLCAiNjAifSwgeyJzdGVyZW8iLCAiMSJ9fX0p
OwogICB9CiAKLSAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIEdldE5ldHdvcmtQaXBl
Q29uZmlnKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNv
bmZpZyBwaXBlX2NvbmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBHZXROZXR3
b3JrUGlwZUNvbmZpZygpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICBCdWlsdEluTmV0d29ya0JlaGF2
aW9yQ29uZmlnIHBpcGVfY29uZmlnOwogICAgIHBpcGVfY29uZmlnLmxpbmtfY2FwYWNpdHlfa2Jw
cyA9IDEyOwogICAgIHBpcGVfY29uZmlnLnF1ZXVlX2xlbmd0aF9wYWNrZXRzID0gMTUwMDsKICAg
ICBwaXBlX2NvbmZpZy5xdWV1ZV9kZWxheV9tcyA9IDQwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3Rlc3QvbWVkaWFfdHJhbnNw
b3J0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby90ZXN0L21lZGlhX3RyYW5zcG9ydF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0YWY0YTA4ODE5
MTM4YmY2OTY5MjYxMzNmMDRlMWVkZWUzYTYwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90ZXN0L21lZGlhX3RyYW5z
cG9ydF90ZXN0LmNjCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKwor
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5X3RlbXBsYXRl
LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnlfdGVt
cGxhdGUuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9v
cHVzLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1
cy5oIgorI2luY2x1ZGUgImFwaS90ZXN0L2xvb3BiYWNrX21lZGlhX3RyYW5zcG9ydC5oIgorI2lu
Y2x1ZGUgImFwaS90ZXN0L21vY2tfYXVkaW9fbWl4ZXIuaCIKKyNpbmNsdWRlICJhdWRpby9hdWRp
b19yZWNlaXZlX3N0cmVhbS5oIgorI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3NlbmRfc3RyZWFtLmgi
CisjaW5jbHVkZSAiY2FsbC90ZXN0L21vY2tfYml0cmF0ZV9hbGxvY2F0b3IuaCIKKyNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvdGVzdF9hdWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVyX2ltcGwuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9tb2NrX2F1ZGlvX3Byb2Nlc3NpbmcuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL3V0aWxpdHkvaW5jbHVkZS9wcm9jZXNzX3RocmVhZC5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIK
KyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAidGVzdC9tb2NrX3RyYW5zcG9ydC5o
IgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworbmFtZXNwYWNlIHsK
K2NvbnN0ZXhwciBpbnQga1BheWxvYWRUeXBlT3B1cyA9IDE3OworY29uc3RleHByIGludCBrU2Ft
cGxpbmdGcmVxdWVuY3kgPSA0ODAwMDsKK2NvbnN0ZXhwciBpbnQga051bUNoYW5uZWxzID0gMjsK
K2NvbnN0ZXhwciBpbnQga1dhbnRlZFNhbXBsZXMgPSAzMDAwOworY29uc3RleHByIGludCBrVGVz
dFRpbWVvdXRNcyA9IDIgKiBydGM6OmtOdW1NaWxsaXNlY3NQZXJTZWM7CisKK2NsYXNzIFRlc3RS
ZW5kZXJlciA6IHB1YmxpYyBUZXN0QXVkaW9EZXZpY2VNb2R1bGU6OlJlbmRlcmVyIHsKKyBwdWJs
aWM6CisgIFRlc3RSZW5kZXJlcihpbnQgc2FtcGxpbmdfZnJlcXVlbmN5LCBpbnQgbnVtX2NoYW5u
ZWxzLCBzaXplX3Qgd2FudGVkX3NhbXBsZXMpCisgICAgICA6IHNhbXBsaW5nX2ZyZXF1ZW5jeV8o
c2FtcGxpbmdfZnJlcXVlbmN5KSwKKyAgICAgICAgbnVtX2NoYW5uZWxzXyhudW1fY2hhbm5lbHMp
LAorICAgICAgICB3YW50ZWRfc2FtcGxlc18od2FudGVkX3NhbXBsZXMpIHt9CisgIH5UZXN0UmVu
ZGVyZXIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgaW50IFNhbXBsaW5nRnJlcXVlbmN5KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2FtcGxpbmdfZnJlcXVlbmN5XzsgfQorICBpbnQgTnVt
Q2hhbm5lbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudW1fY2hhbm5lbHNfOyB9CisKKyAg
Ym9vbCBSZW5kZXIocnRjOjpBcnJheVZpZXc8Y29uc3QgaW50MTZfdD4gZGF0YSkgb3ZlcnJpZGUg
eworICAgIGlmIChkYXRhLnNpemUoKSA+PSB3YW50ZWRfc2FtcGxlc18pIHsKKyAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgd2FudGVkX3NhbXBsZXNfIC09IGRhdGEuc2l6ZSgpOworICAg
IHJldHVybiB0cnVlOworICB9CisKKyBwcml2YXRlOgorICBjb25zdCBpbnQgc2FtcGxpbmdfZnJl
cXVlbmN5XzsKKyAgY29uc3QgaW50IG51bV9jaGFubmVsc187CisgIHNpemVfdCB3YW50ZWRfc2Ft
cGxlc187Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworVEVTVChBdWRpb1dpdGhNZWRpYVRyYW5z
cG9ydCwgRGVsaXZlcnNBdWRpbykgeworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHRy
YW5zcG9ydF90aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7CisgIHRyYW5zcG9ydF90aHJl
YWQtPlN0YXJ0KCk7CisgIE1lZGlhVHJhbnNwb3J0UGFpciB0cmFuc3BvcnRfcGFpcih0cmFuc3Bv
cnRfdGhyZWFkLmdldCgpKTsKKyAgTW9ja1RyYW5zcG9ydCBydGNwX3NlbmRfdHJhbnNwb3J0Owor
ICBNb2NrVHJhbnNwb3J0IHNlbmRfdHJhbnNwb3J0OworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnRMb2c+IG51bGxfZXZlbnRfbG9nID0gUnRjRXZlbnRMb2c6OkNyZWF0ZU51bGwoKTsKKyAgTW9j
a0JpdHJhdGVBbGxvY2F0b3IgYml0cmF0ZV9hbGxvY2F0b3I7CisKKyAgcnRjOjpzY29wZWRfcmVm
cHRyPFRlc3RBdWRpb0RldmljZU1vZHVsZT4gYXVkaW9fZGV2aWNlID0KKyAgICAgIFRlc3RBdWRp
b0RldmljZU1vZHVsZTo6Q3JlYXRlVGVzdEF1ZGlvRGV2aWNlTW9kdWxlKAorICAgICAgICAgIFRl
c3RBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRlUHVsc2VkTm9pc2VDYXB0dXJlcigKKyAgICAgICAg
ICAgICAgLyogbWF4X2FtcGxpdHVkZT0gKi8gMTAwMDAsIGtTYW1wbGluZ0ZyZXF1ZW5jeSwga051
bUNoYW5uZWxzKSwKKyAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxUZXN0UmVuZGVyZXI+KGtT
YW1wbGluZ0ZyZXF1ZW5jeSwga051bUNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga1dhbnRlZFNhbXBsZXMpKTsKKworICBBdWRpb1N0YXRlOjpDb25m
aWcgYXVkaW9fY29uZmlnOworICBhdWRpb19jb25maWcuYXVkaW9fbWl4ZXIgPSBBdWRpb01peGVy
SW1wbDo6Q3JlYXRlKCk7CisgIC8vIFRPRE8obmlzc2UpOiBJcyBhIG1vY2sgQXVkaW9Qcm9jZXNz
aW5nIGVub3VnaD8KKyAgYXVkaW9fY29uZmlnLmF1ZGlvX3Byb2Nlc3NpbmcgPQorICAgICAgbmV3
IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxNb2NrQXVkaW9Qcm9jZXNzaW5nPigpOworICBhdWRpb19j
b25maWcuYXVkaW9fZGV2aWNlX21vZHVsZSA9IGF1ZGlvX2RldmljZTsKKyAgcnRjOjpzY29wZWRf
cmVmcHRyPEF1ZGlvU3RhdGU+IGF1ZGlvX3N0YXRlID0gQXVkaW9TdGF0ZTo6Q3JlYXRlKGF1ZGlv
X2NvbmZpZyk7CisKKyAgLy8gVE9ETyhuaXNzZSk6IFVzZSBzb21lIGxvc3NsZXNzIGNvZGVjPwor
ICBjb25zdCBTZHBBdWRpb0Zvcm1hdCBhdWRpb19mb3JtYXQoIm9wdXMiLCBrU2FtcGxpbmdGcmVx
dWVuY3ksIGtOdW1DaGFubmVscyk7CisKKyAgLy8gU2V0dXAgcmVjZWl2ZSBzdHJlYW07CisgIHdl
YnJ0Yzo6QXVkaW9SZWNlaXZlU3RyZWFtOjpDb25maWcgcmVjZWl2ZV9jb25maWc7CisgIC8vIFRP
RE8obmlzc2UpOiBVcGRhdGUgQXVkaW9SZWNlaXZlU3RyZWFtIHRvIG5vdCByZXF1aXJlIHJ0Y3Bf
c2VuZF90cmFuc3BvcnQKKyAgLy8gd2hlbiBhIE1lZGlhVHJhbnNwb3J0IGlzIHByb3ZpZGVkLgor
ICByZWNlaXZlX2NvbmZpZy5ydGNwX3NlbmRfdHJhbnNwb3J0ID0gJnJ0Y3Bfc2VuZF90cmFuc3Bv
cnQ7CisgIHJlY2VpdmVfY29uZmlnLm1lZGlhX3RyYW5zcG9ydCA9IHRyYW5zcG9ydF9wYWlyLmZp
cnN0KCk7CisgIHJlY2VpdmVfY29uZmlnLmRlY29kZXJfbWFwLmVtcGxhY2Uoa1BheWxvYWRUeXBl
T3B1cywgYXVkaW9fZm9ybWF0KTsKKyAgcmVjZWl2ZV9jb25maWcuZGVjb2Rlcl9mYWN0b3J5ID0K
KyAgICAgIENyZWF0ZUF1ZGlvRGVjb2RlckZhY3Rvcnk8QXVkaW9EZWNvZGVyT3B1cz4oKTsKKwor
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1RocmVhZD4gcmVjZWl2ZV9wcm9jZXNzX3RocmVhZCA9
CisgICAgICBQcm9jZXNzVGhyZWFkOjpDcmVhdGUoImF1ZGlvIHJlY3YgdGhyZWFkIik7CisKKyAg
d2VicnRjOjppbnRlcm5hbDo6QXVkaW9SZWNlaXZlU3RyZWFtIHJlY2VpdmVfc3RyZWFtKAorICAg
ICAgLypydHBfc3RyZWFtX3JlY2VpdmVyX2NvbnRyb2xsZXI9Ki9udWxscHRyLAorICAgICAgLypw
YWNrZXRfcm91dGVyPSovbnVsbHB0ciwgcmVjZWl2ZV9wcm9jZXNzX3RocmVhZC5nZXQoKSwgcmVj
ZWl2ZV9jb25maWcsCisgICAgICBhdWRpb19zdGF0ZSwgbnVsbF9ldmVudF9sb2cuZ2V0KCkpOwor
CisgIC8vIFRPRE8obmlzc2UpOiBVcGRhdGUgQXVkaW9TZW5kU3RyZWFtIHRvIG5vdCByZXF1aXJl
IHNlbmRfdHJhbnNwb3J0IHdoZW4gYQorICAvLyBNZWRpYVRyYW5zcG9ydCBpcyBwcm92aWRlZC4K
KyAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgc2VuZF9jb25maWcoJnNlbmRfdHJhbnNwb3J0LCB0
cmFuc3BvcnRfcGFpci5zZWNvbmQoKSk7CisgIHNlbmRfY29uZmlnLnNlbmRfY29kZWNfc3BlYyA9
CisgICAgICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6U2VuZENvZGVjU3BlYyhrUGF5bG9hZFR5
cGVPcHVzLCBhdWRpb19mb3JtYXQpOworICBzZW5kX2NvbmZpZy5lbmNvZGVyX2ZhY3RvcnkgPSBD
cmVhdGVBdWRpb0VuY29kZXJGYWN0b3J5PEF1ZGlvRW5jb2Rlck9wdXM+KCk7CisgIHJ0Yzo6VGFz
a1F1ZXVlIHNlbmRfdHEoImF1ZGlvIHNlbmQgcXVldWUiKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFBy
b2Nlc3NUaHJlYWQ+IHNlbmRfcHJvY2Vzc190aHJlYWQgPQorICAgICAgUHJvY2Vzc1RocmVhZDo6
Q3JlYXRlKCJhdWRpbyBzZW5kIHRocmVhZCIpOworICB3ZWJydGM6OmludGVybmFsOjpBdWRpb1Nl
bmRTdHJlYW0gc2VuZF9zdHJlYW0oCisgICAgICBzZW5kX2NvbmZpZywgYXVkaW9fc3RhdGUsICZz
ZW5kX3RxLCBzZW5kX3Byb2Nlc3NfdGhyZWFkLmdldCgpLAorICAgICAgLyp0cmFuc3BvcnQ9Ki9u
dWxscHRyLCAmYml0cmF0ZV9hbGxvY2F0b3IsIG51bGxfZXZlbnRfbG9nLmdldCgpLAorICAgICAg
LypydGNwX3J0dF9zdGF0cz0qL251bGxwdHIsIGFic2w6Om9wdGlvbmFsPFJ0cFN0YXRlPigpKTsK
KworICBhdWRpb19kZXZpY2UtPkluaXQoKTsgIC8vIFN0YXJ0cyB0aHJlYWQuCisgIGF1ZGlvX2Rl
dmljZS0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKGF1ZGlvX3N0YXRlLT5hdWRpb190cmFuc3BvcnQo
KSk7CisKKyAgcmVjZWl2ZV9zdHJlYW0uU3RhcnQoKTsKKyAgc2VuZF9zdHJlYW0uU3RhcnQoKTsK
KyAgYXVkaW9fZGV2aWNlLT5TdGFydFBsYXlvdXQoKTsKKyAgYXVkaW9fZGV2aWNlLT5TdGFydFJl
Y29yZGluZygpOworCisgIEVYUEVDVF9UUlVFKGF1ZGlvX2RldmljZS0+V2FpdEZvclBsYXlvdXRF
bmQoa1Rlc3RUaW1lb3V0TXMpKTsKKworICBhdWRpb19kZXZpY2UtPlN0b3BSZWNvcmRpbmcoKTsK
KyAgYXVkaW9fZGV2aWNlLT5TdG9wUGxheW91dCgpOworICByZWNlaXZlX3N0cmVhbS5TdG9wKCk7
CisgIHNlbmRfc3RyZWFtLlN0b3AoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3RpbWVfaW50ZXJ2YWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90aW1lX2ludGVydmFsLmNjCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzEwMzQwOGEzYTI0NjdlNWEwYTAyZjg4ZTM5MGQ3NDgx
M2M2YzFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3RpbWVfaW50ZXJ2
YWwuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAo
YykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0g
Ki8KLQotI2luY2x1ZGUgImF1ZGlvL3RpbWVfaW50ZXJ2YWwuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKLQotbmFtZXNwYWNl
IHdlYnJ0YyB7Ci0KLVRpbWVJbnRlcnZhbDo6VGltZUludGVydmFsKCkgPSBkZWZhdWx0OwotVGlt
ZUludGVydmFsOjp+VGltZUludGVydmFsKCkgPSBkZWZhdWx0OwotCi12b2lkIFRpbWVJbnRlcnZh
bDo6RXh0ZW5kKCkgewotICBFeHRlbmQocnRjOjpUaW1lTWlsbGlzKCkpOwotfQotCi12b2lkIFRp
bWVJbnRlcnZhbDo6RXh0ZW5kKGludDY0X3QgdGltZSkgewotICBpZiAoIWludGVydmFsXykgewot
ICAgIGludGVydmFsXy5lbXBsYWNlKHRpbWUsIHRpbWUpOwotICB9IGVsc2UgewotICAgIGlmICh0
aW1lIDwgaW50ZXJ2YWxfLT5maXJzdCkgewotICAgICAgaW50ZXJ2YWxfLT5maXJzdCA9IHRpbWU7
Ci0gICAgfQotICAgIGlmICh0aW1lID4gaW50ZXJ2YWxfLT5sYXN0KSB7Ci0gICAgICBpbnRlcnZh
bF8tPmxhc3QgPSB0aW1lOwotICAgIH0KLSAgfQotfQotCi12b2lkIFRpbWVJbnRlcnZhbDo6RXh0
ZW5kKGNvbnN0IFRpbWVJbnRlcnZhbCYgb3RoZXJfaW50ZXJ2YWwpIHsKLSAgaWYgKCFvdGhlcl9p
bnRlcnZhbC5FbXB0eSgpKSB7Ci0gICAgRXh0ZW5kKG90aGVyX2ludGVydmFsLmludGVydmFsXy0+
Zmlyc3QpOwotICAgIEV4dGVuZChvdGhlcl9pbnRlcnZhbC5pbnRlcnZhbF8tPmxhc3QpOwotICB9
Ci19Ci0KLWJvb2wgVGltZUludGVydmFsOjpFbXB0eSgpIGNvbnN0IHsKLSAgcmV0dXJuICFpbnRl
cnZhbF87Ci19Ci0KLWludDY0X3QgVGltZUludGVydmFsOjpMZW5ndGgoKSBjb25zdCB7Ci0gIFJU
Q19EQ0hFQ0soaW50ZXJ2YWxfKTsKLSAgcmV0dXJuIGludGVydmFsXy0+bGFzdCAtIGludGVydmFs
Xy0+Zmlyc3Q7Ci19Ci0KLVRpbWVJbnRlcnZhbDo6SW50ZXJ2YWw6OkludGVydmFsKGludDY0X3Qg
Zmlyc3QsIGludDY0X3QgbGFzdCkKLSAgICA6IGZpcnN0KGZpcnN0KSwgbGFzdChsYXN0KSB7fQot
Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90aW1lX2ludGVydmFsLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby90aW1lX2ludGVydmFsLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZmUyOWQ5ZDU2OWExMDU2ZDU5MTMxZDU4NzZl
MmM5MGI5NmQ0OTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGltZV9p
bnRlcnZhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgotICovCi0KLSNpZm5kZWYgQVVESU9fVElNRV9JTlRFUlZBTF9IXwotI2RlZmluZSBBVURJT19U
SU1FX0lOVEVSVkFMX0hfCi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFRoaXMgY2xhc3Mg
bG9ncyB0aGUgZmlyc3QgYW5kIGxhc3QgdGltZSBpdHMgRXh0ZW5kKCkgZnVuY3Rpb24gaXMgY2Fs
bGVkLgotLy8KLS8vIFRoaXMgY2xhc3MgaXMgbm90IHRocmVhZC1zYWZlOyBFeHRlbmQoKSBjYWxs
cyBzaG91bGQgb25seSBiZSBtYWRlIGJ5IGEKLS8vIHNpbmdsZSB0aHJlYWQgYXQgYSB0aW1lLCBz
dWNoIGFzIHdpdGhpbiBhIGxvY2sgb3IgZGVzdHJ1Y3Rvci4KLS8vCi0vLyBFeGFtcGxlIHVzYWdl
OgotLy8gICAvLyBsZXQgeCA8IHkgPCB6IDwgdSA8IHYKLS8vICAgcnRjOjpUaW1lSW50ZXJ2YWwg
aW50ZXJ2YWw7Ci0vLyAgIC4uLiAgLy8gICBpbnRlcnZhbC5FeHRlbmQoKTsgLy8gYXQgdGltZSB4
Ci0vLyAgIC4uLgotLy8gICBpbnRlcnZhbC5FeHRlbmQoKTsgLy8gYXQgdGltZSB5Ci0vLyAgIC4u
LgotLy8gICBpbnRlcnZhbC5FeHRlbmQoKTsgLy8gYXQgdGltZSB1Ci0vLyAgIC4uLgotLy8gICBp
bnRlcnZhbC5FeHRlbmQoeik7IC8vIGF0IHRpbWUgdgotLy8gICAuLi4KLS8vICAgaWYgKCFpbnRl
cnZhbC5FbXB0eSgpKSB7Ci0vLyAgICAgaW50NjRfdCBhY3RpdmVfdGltZSA9IGludGVydmFsLkxl
bmd0aCgpOyAvLyByZXR1cm5zICh1IC0geCkKLS8vICAgfQotY2xhc3MgVGltZUludGVydmFsIHsK
LSBwdWJsaWM6Ci0gIFRpbWVJbnRlcnZhbCgpOwotICB+VGltZUludGVydmFsKCk7Ci0gIC8vIEV4
dGVuZCB0aGUgaW50ZXJ2YWwgd2l0aCB0aGUgY3VycmVudCB0aW1lLgotICB2b2lkIEV4dGVuZCgp
OwotICAvLyBFeHRlbmQgdGhlIGludGVydmFsIHdpdGggYSBnaXZlbiB0aW1lLgotICB2b2lkIEV4
dGVuZChpbnQ2NF90IHRpbWUpOwotICAvLyBUYWtlIHRoZSBjb252ZXggaHVsbCB3aXRoIGFub3Ro
ZXIgaW50ZXJ2YWwuCi0gIHZvaWQgRXh0ZW5kKGNvbnN0IFRpbWVJbnRlcnZhbCYgb3RoZXJfaW50
ZXJ2YWwpOwotICAvLyBUcnVlIGlmZiBFeHRlbmQgaGFzIG5ldmVyIGJlZW4gY2FsbGVkLgotICBi
b29sIEVtcHR5KCkgY29uc3Q7Ci0gIC8vIFJldHVybnMgdGhlIHRpbWUgYmV0d2VlbiB0aGUgZmly
c3QgYW5kIHRoZSBsYXN0IHRpY2ssIGluIG1pbGxpc2Vjb25kcy4KLSAgaW50NjRfdCBMZW5ndGgo
KSBjb25zdDsKLQotIHByaXZhdGU6Ci0gIHN0cnVjdCBJbnRlcnZhbCB7Ci0gICAgSW50ZXJ2YWwo
aW50NjRfdCBmaXJzdCwgaW50NjRfdCBsYXN0KTsKLQotICAgIGludDY0X3QgZmlyc3QsIGxhc3Q7
Ci0gIH07Ci0gIGFic2w6Om9wdGlvbmFsPEludGVydmFsPiBpbnRlcnZhbF87Ci19OwotCi19ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gQVVESU9fVElNRV9JTlRFUlZBTF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVk
aW8vdGltZV9pbnRlcnZhbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3RpbWVfaW50ZXJ2YWxfdW5pdHRlc3QuY2MKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZmY2ZTM2M2RhMjE2MWRiZGVlNjgwNzE5ODcyZmIyOTY1
MjZlOTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdGltZV9pbnRlcnZh
bF91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgotICovCi0KLSNpbmNsdWRlICJhdWRpby90aW1lX2ludGVydmFsLmgiCi0jaW5jbHVkZSAiYXBp
L3VuaXRzL3RpbWVfZGVsdGEuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9mYWtlY2xvY2suaCIKLSNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1URVNUKFRpbWVJ
bnRlcnZhbFRlc3QsIFRpbWVJbk1zKSB7Ci0gIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGZha2VfY2xv
Y2s7Ci0gIFRpbWVJbnRlcnZhbCBpbnRlcnZhbDsKLSAgaW50ZXJ2YWwuRXh0ZW5kKCk7Ci0gIGZh
a2VfY2xvY2suQWR2YW5jZVRpbWUoVGltZURlbHRhOjptcygxMDApKTsKLSAgaW50ZXJ2YWwuRXh0
ZW5kKCk7Ci0gIEVYUEVDVF9FUShpbnRlcnZhbC5MZW5ndGgoKSwgMTAwKTsKLX0KLQotVEVTVChU
aW1lSW50ZXJ2YWxUZXN0LCBFbXB0eSkgewotICBUaW1lSW50ZXJ2YWwgaW50ZXJ2YWw7Ci0gIEVY
UEVDVF9UUlVFKGludGVydmFsLkVtcHR5KCkpOwotICBpbnRlcnZhbC5FeHRlbmQoKTsKLSAgRVhQ
RUNUX0ZBTFNFKGludGVydmFsLkVtcHR5KCkpOwotICBpbnRlcnZhbC5FeHRlbmQoMjAwKTsKLSAg
RVhQRUNUX0ZBTFNFKGludGVydmFsLkVtcHR5KCkpOwotfQotCi1URVNUKFRpbWVJbnRlcnZhbFRl
c3QsIE1vbm90b25lSW5jcmVhc2luZykgewotICBjb25zdCBzaXplX3QgcG9pbnRfY291bnQgPSA3
OwotICBjb25zdCBpbnQ2NF90IGludGVydmFsX3BvaW50c1tdID0gezMsIDIsIDUsIDAsIDQsIDEs
IDZ9OwotICBjb25zdCBpbnQ2NF90IGludGVydmFsX2RpZmZlcmVuY2VzW10gPSB7MCwgMSwgMywg
NSwgNSwgNSwgNn07Ci0gIFRpbWVJbnRlcnZhbCBpbnRlcnZhbDsKLSAgRVhQRUNUX1RSVUUoaW50
ZXJ2YWwuRW1wdHkoKSk7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9pbnRfY291bnQ7ICsr
aSkgewotICAgIGludGVydmFsLkV4dGVuZChpbnRlcnZhbF9wb2ludHNbaV0pOwotICAgIEVYUEVD
VF9FUShpbnRlcnZhbF9kaWZmZXJlbmNlc1tpXSwgaW50ZXJ2YWwuTGVuZ3RoKCkpOwotICB9Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3RyYW5zcG9ydF9mZWVkYmFja19wYWNrZXRf
bG9zc190cmFja2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvYXVkaW8vdHJhbnNwb3J0X2ZlZWRiYWNrX3BhY2tldF9sb3NzX3RyYWNrZXIuY2MKaW5kZXgg
YzdhY2Q3NjZjNDQ4NTkyNWI0ZGE3YTljMDI4MTM3ZDM1ZGVmOWZjYS4uZjQxNDM5YjQ5NGZjZDM4
YjNhM2ExNjc1YjYzMzg2ZmFmYWE0ZGU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdHJhbnNwb3J0X2ZlZWRiYWNrX3BhY2tldF9s
b3NzX3RyYWNrZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvYXVkaW8vdHJhbnNwb3J0X2ZlZWRiYWNrX3BhY2tldF9sb3NzX3RyYWNrZXIuY2MKQEAg
LTEwLDExICsxMCwxMSBAQAogCiAjaW5jbHVkZSAiYXVkaW8vdHJhbnNwb3J0X2ZlZWRiYWNrX3Bh
Y2tldF9sb3NzX3RyYWNrZXIuaCIKIAorI2luY2x1ZGUgPGl0ZXJhdG9yPgogI2luY2x1ZGUgPGxp
bWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRfZmVlZGJhY2suaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9tb2Rfb3BzLmgiCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlv
L3V0aWxpdHkvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9hdWRpby91dGlsaXR5L0JVSUxELmduCmluZGV4IDc2YzA5YTUxYTM4MGUxYzg0NjU1YWZh
MDk2ZTg0ZTEwMTRmN2M3ZWIuLjExYTY1YmRkNDYzOGFkNWJmYmVmNTZiZjllOTM0MWYyZWNmZjNi
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2F1ZGlvL3V0aWxpdHkvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9CVUlMRC5nbgpAQCAtMjEsNyArMjEsNiBAQCBy
dGNfc3RhdGljX2xpYnJhcnkoImF1ZGlvX2ZyYW1lX29wZXJhdGlvbnMiKSB7CiAgIF0KIAogICBk
ZXBzID0gWwotICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBpL2F1ZGlv
OmF1ZGlvX2ZyYW1lX2FwaSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4u
Ly4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3V0aWxpdHkvYXVkaW9fZnJhbWVf
b3BlcmF0aW9ucy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2F1ZGlvL3V0aWxpdHkvYXVkaW9fZnJhbWVfb3BlcmF0aW9ucy5jYwppbmRleCBmYjFmM2IwNzcx
MWI3OWRkNGJjMDU5YmMxOTIxZGYyOGZlYTI2YmVkLi4xYTgyMzJiMDJiM2FlNGJlZDliMmRjZjIx
ZThjMTM2MWViMWNkODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9hdWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0
eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmNjCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRl
IDxzdHJpbmcuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KIAog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNz
L3NhZmVfY29udmVyc2lvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3V0aWxpdHkvYXVkaW9fZnJhbWVfb3BlcmF0aW9ucy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0
eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmgKaW5kZXggNTk5MzUyMzU2ZjYyZjM5MzQ2ZGY4OWUw
Mjk3YzZjMjExNTJhNjcxOS4uYzE0NDViNjkxMDk4ZTM5OTM0YWZmZGFmOWE4MzlkMTQyZWFhZDUy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9vcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vdXRpbGl0eS9hdWRpb19mcmFtZV9v
cGVyYXRpb25zLmgKQEAgLTEyLDYgKzEyLDcgQEAKICNkZWZpbmUgQVVESU9fVVRJTElUWV9BVURJ
T19GUkFNRV9PUEVSQVRJT05TX0hfCiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxz
dGRpbnQuaD4KIAogI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19mcmFtZS5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9idWlsZF9vdmVy
cmlkZXMvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YnVpbGRfb3ZlcnJpZGVzL09XTkVSUwppbmRleCA1MjRlMjY3NmZmNTJiZmVmMzg5MzAwMzZhYmZl
Zjg1YjI2MDcyYmY0Li41NDY1ZWQ4ZTZhODY5ZTFlNzQyNDc0MDI0ZGY5OTdiNDBhYzUyNWJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9idWls
ZF9vdmVycmlkZXMvT1dORVJTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2J1aWxkX292ZXJyaWRlcy9PV05FUlMKQEAgLTEgKzEsMiBAQAorbWJvbmFkZWlA
d2VicnRjLm9yZwogcGhvZ2x1bmRAd2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2J1aWxkX292ZXJyaWRl
cy9idWlsZC5nbmkKaW5kZXggODFjYjNlNzNhZTIzMjlmOTJkZTIxOTc4NTUyYTg3NzhhYjgyZjIx
NC4uNjY5MDQ0ZGI4MWNiMjE4NWJlMzc0YjBiMTAwMjcwOTNjNTY4M2MzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYnVpbGRfb3ZlcnJpZGVz
L2J1aWxkLmduaQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9idWlsZF9vdmVycmlkZXMvYnVpbGQuZ25pCkBAIC0xMiw4ICsxMiw4IEBAIGVuYWJsZV9qYXZh
X3RlbXBsYXRlcyA9IHRydWUKICMgU29tZSBub24tQ2hyb21pdW0gYnVpbGRzIGRvbid0IHVzZSBD
aHJvbWl1bSdzIHRoaXJkX3BhcnR5L2JpbnV0aWxzLgogbGludXhfdXNlX2J1bmRsZWRfYmludXRp
bHNfb3ZlcnJpZGUgPSB0cnVlCiAKLSMgVmFyaWFibGUgdGhhdCBjYW4gYmUgdXNlZCB0byBzdXBw
b3J0IG11bHRpcGxlIGJ1aWxkIHNjZW5hcmlvcywgbGlrZSBoYXZpbmcKLSMgQ2hyb21pdW0gc3Bl
Y2lmaWMgdGFyZ2V0cyBpbiBhIGNsaWVudCBwcm9qZWN0J3MgR04gZmlsZSBldGMuCisjIERvbid0
IHNldCB0aGlzIHZhcmlhYmxlIHRvIHRydWUgd2hlbiBidWlsZGluZyBzdGFkYWxvbmUgV2ViUlRD
LCBpdCBpcworIyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGJvdGggV2ViUlRDIHN0YW5kYWxvbmUg
YW5kIENocm9taXVtIGJ1aWxkcy4KIGJ1aWxkX3dpdGhfY2hyb21pdW0gPSBmYWxzZQogCiAjIFVz
ZSBvdXIgb3duIHN1cHByZXNzaW9ucyBmaWxlcy4KQEAgLTQyLDcgKzQyLDcgQEAgaWYgKGhvc3Rf
b3MgPT0gIm1hYyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFsgdGFyZ2V0X29zIF0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiKQogICBhc3NlcnQoX3Jlc3VsdCAhPSAyLAot
ICAgICAgICAgIkRvIG5vdCBhbGxvdyBidWlsZGluZyB0YXJnZXRzIHdpdGggdGhlIGRlZmF1bHQi
ICsKKyAgICAgICAgICJEbyBub3QgYWxsb3cgYnVpbGRpbmcgdGFyZ2V0cyB3aXRoIHRoZSBkZWZh
dWx0ICIgKwogICAgICAgICAgICAgICJoZXJtZXRpYyB0b29sY2hhaW4gaWYgdGhlIG1pbmltdW0g
T1MgdmVyc2lvbiBpcyBub3QgbWV0LiIpCiAgIHVzZV9zeXN0ZW1feGNvZGUgPSBfcmVzdWx0ID09
IDAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL0JVSUxELmduCmluZGV4IDYxMWQ5ZThhZGIxM2M3YjUyOTEwOGZjN2NmZDMxNGIw
ODYxNmIwZGQuLmY2YmE0ZWM4NDkwODI5ZjQ0YWYzOGUyNTQ1OGQwYjY5ODg5ZWIwMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvQlVJ
TEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2Fs
bC9CVUlMRC5nbgpAQCAtMzgsMTEgKzM4LDE0IEBAIHJ0Y19zb3VyY2Vfc2V0KCJjYWxsX2ludGVy
ZmFjZXMiKSB7CiAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCiAg
ICAgIi4uL2FwaS90cmFuc3BvcnQ6bmV0d29ya19jb250cm9sIiwKICAgICAiLi4vbW9kdWxlcy9h
dWRpb19kZXZpY2U6YXVkaW9fZGV2aWNlIiwKKyAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nOmFwaSIsCiAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNz
aW5nIiwKICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3Npbmdf
c3RhdGlzdGljcyIsCiAgICAgIi4uL3J0Y19iYXNlOmF1ZGlvX2Zvcm1hdF90b19zdHJpbmciLAor
ICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAg
ICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vcnRjX2Jhc2UvbmV0
d29yazpzZW50X3BhY2tldCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5
cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtMTYxLDYgKzE2NCw5IEBAIHJ0Y19zb3VyY2Vfc2V0
KCJiaXRyYXRlX2FsbG9jYXRvciIpIHsKICAgICAiYml0cmF0ZV9hbGxvY2F0b3IuaCIsCiAgIF0K
ICAgZGVwcyA9IFsKKyAgICAiLi4vYXBpOmJpdHJhdGVfYWxsb2NhdGlvbiIsCisgICAgIi4uL2Fw
aS91bml0czpkYXRhX3JhdGUiLAorICAgICIuLi9hcGkvdW5pdHM6dGltZV9kZWx0YSIsCiAgICAg
Ii4uL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyIiwKICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tz
IiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLApAQCAtMTkzLDcgKzE5OSw2
IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY2FsbCIpIHsKICAgICAiOnJ0cF9zZW5kZXIiLAogICAg
ICI6c2ltdWxhdGVkX25ldHdvcmsiLAogICAgICI6dmlkZW9fc3RyZWFtX2FwaSIsCi0gICAgIi4u
OndlYnJ0Y19jb21tb24iLAogICAgICIuLi9hcGk6Y2FsbGZhY3RvcnlfYXBpIiwKICAgICAiLi4v
YXBpOnNpbXVsYXRlZF9uZXR3b3JrX2FwaSIsCiAgICAgIi4uL2FwaTp0cmFuc3BvcnRfYXBpIiwK
QEAgLTIxNyw2ICsyMjIsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImNhbGwiKSB7CiAgICAgIi4u
L3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKICAgICAiLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgi
LAogICAgICIuLi9ydGNfYmFzZTpzZXF1ZW5jZWRfdGFza19jaGVja2VyIiwKKyAgICAiLi4vcnRj
X2Jhc2UvZXhwZXJpbWVudHM6ZmllbGRfdHJpYWxfcGFyc2VyIiwKICAgICAiLi4vcnRjX2Jhc2Uv
c3luY2hyb25pemF0aW9uOnJ3X2xvY2tfd3JhcHBlciIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVy
cyIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCkBAIC0yMzYsNyArMjQy
LDYgQEAgcnRjX3NvdXJjZV9zZXQoInZpZGVvX3N0cmVhbV9hcGkiKSB7CiAgIF0KICAgZGVwcyA9
IFsKICAgICAiOnJ0cF9pbnRlcmZhY2VzIiwKLSAgICAiLi4vOndlYnJ0Y19jb21tb24iLAogICAg
ICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgIi4uL2FwaTp0cmFu
c3BvcnRfYXBpIiwKICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKQEAgLTI1Nyw2ICsy
NjIsOSBAQCBydGNfc291cmNlX3NldCgic2ltdWxhdGVkX25ldHdvcmsiKSB7CiAgIF0KICAgZGVw
cyA9IFsKICAgICAiLi4vYXBpOnNpbXVsYXRlZF9uZXR3b3JrX2FwaSIsCisgICAgIi4uL2FwaS91
bml0czpkYXRhX3JhdGUiLAorICAgICIuLi9hcGkvdW5pdHM6ZGF0YV9zaXplIiwKKyAgICAiLi4v
YXBpL3VuaXRzOnRpbWVfZGVsdGEiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3Zl
ZCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKQEAgLTI4MywxMCAr
MjkxLDEwIEBAIHJ0Y19zb3VyY2Vfc2V0KCJmYWtlX25ldHdvcmsiKSB7CiAgICAgIjpjYWxsX2lu
dGVyZmFjZXMiLAogICAgICI6c2ltdWxhdGVkX25ldHdvcmsiLAogICAgICI6c2ltdWxhdGVkX3Bh
Y2tldF9yZWNlaXZlciIsCi0gICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi9hcGk6c2lt
dWxhdGVkX25ldHdvcmtfYXBpIiwKICAgICAiLi4vYXBpOnRyYW5zcG9ydF9hcGkiLAogICAgICIu
Li9tb2R1bGVzOm1vZHVsZV9hcGkiLAorICAgICIuLi9tb2R1bGVzL3V0aWxpdHkiLAogICAgICIu
Li9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uL3J0Y19iYXNlOnNlcXVlbmNl
ZF90YXNrX2NoZWNrZXIiLAogICAgICIuLi9zeXN0ZW1fd3JhcHBlcnMiLApAQCAtMzIyLDggKzMz
MCw5IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpydHBfcmVjZWl2ZXIiLAog
ICAgICAgIjpydHBfc2VuZGVyIiwKICAgICAgICI6c2ltdWxhdGVkX25ldHdvcmsiLAotICAgICAg
Ii4uOndlYnJ0Y19jb21tb24iLAogICAgICAgIi4uL2FwaTphcnJheV92aWV3IiwKKyAgICAgICIu
Li9hcGk6ZmFrZV9tZWRpYV90cmFuc3BvcnQiLAorICAgICAgIi4uL2FwaTpmYWtlX21lZGlhX3Ry
YW5zcG9ydCIsCiAgICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAog
ICAgICAgIi4uL2FwaTptb2NrX2F1ZGlvX21peGVyIiwKICAgICAgICIuLi9hcGkvYXVkaW9fY29k
ZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKQEAgLTM1OSw2ICszNjgsNyBAQCBp
ZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIvL3Rlc3RpbmcvZ21vY2siLAogICAgICAg
Ii8vdGVzdGluZy9ndGVzdCIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRp
b25hbCIsCiAgICAgXQogICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykg
ewogICAgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVn
aW4gKGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgpAQCAtMzc4LDEyICszODgsMTMgQEAgaWYgKHJ0Y19p
bmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOmNhbGxfaW50ZXJmYWNlcyIsCiAgICAgICAiOnNpbXVs
YXRlZF9uZXR3b3JrIiwKICAgICAgICI6dmlkZW9fc3RyZWFtX2FwaSIsCi0gICAgICAiLi46d2Vi
cnRjX2NvbW1vbiIsCiAgICAgICAiLi4vYXBpOnNpbXVsYXRlZF9uZXR3b3JrX2FwaSIsCiAgICAg
ICAiLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeSIsCisg
ICAgICAiLi4vYXBpL3ZpZGVvOmJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9y
eSIsCiAgICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbiIsCiAgICAg
ICAiLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAgICIuLi9sb2dn
aW5nOnJ0Y19ldmVudF9sb2dfYXBpIiwKKyAgICAgICIuLi9sb2dnaW5nOnJ0Y19ldmVudF9sb2df
aW1wbF9vdXRwdXQiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fY29kaW5nIiwKICAgICAgICIu
Li9tb2R1bGVzL2F1ZGlvX2RldmljZSIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6
YXVkaW9fZGV2aWNlX2ltcGwiLApAQCAtNDI2LDYgKzQzNyw3IEBAIGlmIChydGNfaW5jbHVkZV90
ZXN0cykgewogICAgICAgIi4uL21vZHVsZXMvcGFjaW5nIiwKICAgICAgICIuLi9ydGNfYmFzZTpy
YXRlX2xpbWl0ZXIiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKKyAgICAgICIuLi9y
dGNfYmFzZS9uZXR3b3JrOnNlbnRfcGFja2V0IiwKICAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9y
dCIsCiAgICAgXQogICB9CkBAIC00MzcsNyArNDQ5LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3Rz
KSB7CiAgICAgXQogICAgIGRlcHMgPSBbCiAgICAgICAiOmJpdHJhdGVfYWxsb2NhdG9yIiwKLSAg
ICAgICIvL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKyAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIs
CiAgICAgXQogICB9CiAgIHJ0Y19zb3VyY2Vfc2V0KCJtb2NrX2NhbGxfaW50ZXJmYWNlcyIpIHsK
QEAgLTQ0OCwxMSArNDYwLDE0IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIF0KICAg
ICBkZXBzID0gWwogICAgICAgIjpjYWxsX2ludGVyZmFjZXMiLAotICAgICAgIi8vdGVzdDp0ZXN0
X3N1cHBvcnQiLAorICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICBdCiAgIH0KIAog
ICBydGNfdGVzdCgiZmFrZV9uZXR3b3JrX3VuaXR0ZXN0cyIpIHsKKyAgICBzb3VyY2VzID0gWwor
ICAgICAgInRlc3QvZmFrZV9uZXR3b3JrX3BpcGVfdW5pdHRlc3QuY2MiLAorICAgIF0KICAgICBk
ZXBzID0gWwogICAgICAgIjpjYWxsX2ludGVyZmFjZXMiLAogICAgICAgIjpmYWtlX25ldHdvcmsi
LApAQCAtNDYyLDEwICs0NzcsOCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIu
Li9zeXN0ZW1fd3JhcHBlcnMiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9jb21tb24iLAogICAgICAg
Ii4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAg
ICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICBdCi0gICAgc291cmNlcyA9IFsKLSAgICAgICJ0ZXN0
L2Zha2VfbmV0d29ya19waXBlX3VuaXR0ZXN0LmNjIiwKLSAgICBdCiAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYXVkaW9f
cmVjZWl2ZV9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvYXVkaW9fcmVjZWl2ZV9zdHJlYW0uaAppbmRleCA5Yzg5MGIxY2RhMzc1ODUzMTQx
Zjg0YmI2ZGQxNGE3OTlhYWJiMWY2Li4zNmNjMDU5Mzk2NzRiZWYxYjEyNWI1MWE0ZDMxMWVmYmUy
ODQ0M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL2F1ZGlvX3JlY2VpdmVfc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRpb19yZWNlaXZlX3N0cmVhbS5oCkBAIC0x
OSwxMCArMTksMTEgQEAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJh
cGkvY2FsbC90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMu
aCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUg
ImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfY29uZmlnLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVz
LmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRf
cmVmX3B0ci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTYyLDYgKzYzLDcgQEAgY2xhc3Mg
QXVkaW9SZWNlaXZlU3RyZWFtIHsKICAgICBmbG9hdCBzZWNvbmRhcnlfZGlzY2FyZGVkX3JhdGUg
PSAwLjBmOwogICAgIGZsb2F0IGFjY2VsZXJhdGVfcmF0ZSA9IDAuMGY7CiAgICAgZmxvYXQgcHJl
ZW1wdGl2ZV9leHBhbmRfcmF0ZSA9IDAuMGY7CisgICAgdWludDY0X3QgZGVsYXllZF9wYWNrZXRf
b3V0YWdlX3NhbXBsZXMgPSAwOwogICAgIGludDMyX3QgZGVjb2RpbmdfY2FsbHNfdG9fc2lsZW5j
ZV9nZW5lcmF0b3IgPSAwOwogICAgIGludDMyX3QgZGVjb2RpbmdfY2FsbHNfdG9fbmV0ZXEgPSAw
OwogICAgIGludDMyX3QgZGVjb2Rpbmdfbm9ybWFsID0gMDsKQEAgLTcwLDYgKzcyLDcgQEAgY2xh
c3MgQXVkaW9SZWNlaXZlU3RyZWFtIHsKICAgICBpbnQzMl90IGRlY29kaW5nX3BsY19jbmcgPSAw
OwogICAgIGludDMyX3QgZGVjb2RpbmdfbXV0ZWRfb3V0cHV0ID0gMDsKICAgICBpbnQ2NF90IGNh
cHR1cmVfc3RhcnRfbnRwX3RpbWVfbXMgPSAwOworICAgIHVpbnQ2NF90IGppdHRlcl9idWZmZXJf
Zmx1c2hlcyA9IDA7CiAgIH07CiAKICAgc3RydWN0IENvbmZpZyB7CkBAIC0xMDYsOSArMTA5LDEy
IEBAIGNsYXNzIEF1ZGlvUmVjZWl2ZVN0cmVhbSB7CiAKICAgICBUcmFuc3BvcnQqIHJ0Y3Bfc2Vu
ZF90cmFuc3BvcnQgPSBudWxscHRyOwogCisgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1l
ZGlhX3RyYW5zcG9ydCA9IG51bGxwdHI7CisKICAgICAvLyBOZXRFcSBzZXR0aW5ncy4KICAgICBz
aXplX3Qgaml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyA9IDUwOwogICAgIGJvb2wgaml0dGVyX2J1
ZmZlcl9mYXN0X2FjY2VsZXJhdGUgPSBmYWxzZTsKKyAgICBpbnQgaml0dGVyX2J1ZmZlcl9taW5f
ZGVsYXlfbXMgPSAwOwogCiAgICAgLy8gSWRlbnRpZmllciBmb3IgYW4gQS9WIHN5bmNocm9uaXph
dGlvbiBncm91cC4gRW1wdHkgc3RyaW5nIHRvIGRpc2FibGUuCiAgICAgLy8gVE9ETyhwYm9zKTog
U3luY2hyb25pemUgc3RyZWFtcyBpbiBhIHN5bmMgZ3JvdXAsIG5vdCBqdXN0IG9uZSB2aWRlbwpA
QCAtMTIyLDYgKzEyOCw5IEBAIGNsYXNzIEF1ZGlvUmVjZWl2ZVN0cmVhbSB7CiAKICAgICBhYnNs
OjpvcHRpb25hbDxBdWRpb0NvZGVjUGFpcklkPiBjb2RlY19wYWlyX2lkOwogCisgICAgLy8gUGVy
IFBlZXJDb25uZWN0aW9uIGNyeXB0byBvcHRpb25zLgorICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9u
cyBjcnlwdG9fb3B0aW9uczsKKwogICAgIC8vIEFuIG9wdGlvbmFsIGN1c3RvbSBmcmFtZSBkZWNy
eXB0b3IgdGhhdCBhbGxvd3MgdGhlIGVudGlyZSBmcmFtZSB0byBiZQogICAgIC8vIGRlY3J5cHRl
ZCBpbiB3aGF0ZXZlciB3YXkgdGhlIGNhbGxlciBjaG9zZXMuIFRoaXMgaXMgbm90IHJlcXVpcmVk
IGJ5CiAgICAgLy8gZGVmYXVsdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYXVkaW9fc2VuZF9zdHJlYW0uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2F1ZGlvX3NlbmRfc3RyZWFtLmNj
CmluZGV4IGUyY2YyMGNmODQ0ODBlNmY0N2VjN2QzMzQ3MDIwNWMzMGI0NTY1MmMuLjMwM2I0OWNi
ZmIzMTk2NjcyMTg3ODVkODI0MDY3Yjc3YWE4ZTk1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYXVkaW9fc2VuZF9zdHJlYW0uY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRp
b19zZW5kX3N0cmVhbS5jYwpAQCAtOSw2ICs5LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY2FsbC9h
dWRpb19zZW5kX3N0cmVhbS5oIgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNpbmNsdWRlICJy
dGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL2F1ZGlv
X2Zvcm1hdF90b19zdHJpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19i
dWlsZGVyLmgiCkBAIC0xOCw4ICsyMSwxMiBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIEF1ZGlvU2Vu
ZFN0cmVhbTo6U3RhdHM6OlN0YXRzKCkgPSBkZWZhdWx0OwogQXVkaW9TZW5kU3RyZWFtOjpTdGF0
czo6flN0YXRzKCkgPSBkZWZhdWx0OwogCitBdWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6Q29uZmln
KFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpCisgICAgOiBzZW5k
X3RyYW5zcG9ydChzZW5kX3RyYW5zcG9ydCksIG1lZGlhX3RyYW5zcG9ydChtZWRpYV90cmFuc3Bv
cnQpIHt9CisKIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjpDb25maWcoVHJhbnNwb3J0KiBzZW5k
X3RyYW5zcG9ydCkKLSAgICA6IHNlbmRfdHJhbnNwb3J0KHNlbmRfdHJhbnNwb3J0KSB7fQorICAg
IDogQ29uZmlnKHNlbmRfdHJhbnNwb3J0LCBudWxscHRyKSB7fQogCiBBdWRpb1NlbmRTdHJlYW06
OkNvbmZpZzo6fkNvbmZpZygpID0gZGVmYXVsdDsKIApAQCAtMjcsNyArMzQsOSBAQCBzdGQ6OnN0
cmluZyBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6VG9TdHJpbmcoKSBjb25zdCB7CiAgIGNoYXIg
YnVmWzEwMjRdOwogICBydGM6OlNpbXBsZVN0cmluZ0J1aWxkZXIgc3MoYnVmKTsKICAgc3MgPDwg
IntydHA6ICIgPDwgcnRwLlRvU3RyaW5nKCk7CisgIHNzIDw8ICIsIHJ0Y3BfcmVwb3J0X2ludGVy
dmFsX21zOiAiIDw8IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zOwogICBzcyA8PCAiLCBzZW5kX3Ry
YW5zcG9ydDogIiA8PCAoc2VuZF90cmFuc3BvcnQgPyAiKFRyYW5zcG9ydCkiIDogIm51bGwiKTsK
KyAgc3MgPDwgIiwgbWVkaWFfdHJhbnNwb3J0OiAiIDw8IChtZWRpYV90cmFuc3BvcnQgPyAiKFRy
YW5zcG9ydCkiIDogIm51bGwiKTsKICAgc3MgPDwgIiwgbWluX2JpdHJhdGVfYnBzOiAiIDw8IG1p
bl9iaXRyYXRlX2JwczsKICAgc3MgPDwgIiwgbWF4X2JpdHJhdGVfYnBzOiAiIDw8IG1heF9iaXRy
YXRlX2JwczsKICAgc3MgPDwgIiwgc2VuZF9jb2RlY19zcGVjOiAiCkBAIC00NCw2ICs1Myw3IEBA
IHN0ZDo6c3RyaW5nIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjpSdHA6OlRvU3RyaW5nKCkgY29u
c3QgewogICBjaGFyIGJ1ZlsxMDI0XTsKICAgcnRjOjpTaW1wbGVTdHJpbmdCdWlsZGVyIHNzKGJ1
Zik7CiAgIHNzIDw8ICJ7c3NyYzogIiA8PCBzc3JjOworICBzcyA8PCAiLCBleHRtYXAtYWxsb3ct
bWl4ZWQ6ICIgPDwgKGV4dG1hcF9hbGxvd19taXhlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICBz
cyA8PCAiLCBleHRlbnNpb25zOiBbIjsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHRlbnNp
b25zLnNpemUoKTsgKytpKSB7CiAgICAgc3MgPDwgZXh0ZW5zaW9uc1tpXS5Ub1N0cmluZygpOwpA
QCAtNTIsNyArNjIsNiBAQCBzdGQ6OnN0cmluZyBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZzo6UnRw
OjpUb1N0cmluZygpIGNvbnN0IHsKICAgICB9CiAgIH0KICAgc3MgPDwgJ10nOwotICBzcyA8PCAi
LCBuYWNrOiAiIDw8IG5hY2suVG9TdHJpbmcoKTsKICAgc3MgPDwgIiwgY19uYW1lOiAiIDw8IGNf
bmFtZTsKICAgc3MgPDwgJ30nOwogICByZXR1cm4gc3Muc3RyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2F1ZGlvX3NlbmRfc3Ry
ZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2F1
ZGlvX3NlbmRfc3RyZWFtLmgKaW5kZXggNjFlMjUzMTIyMjllOTAwMTVhZTQ3NmZhZWMyOGZmZTNh
MzYxZWQwYS4uYzk5NmRhYjgzZDcwMDA1NTA1MjI5ZTI0NGFmNDkzZTdlOGQyZjgyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9hdWRp
b19zZW5kX3N0cmVhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvYXVkaW9fc2VuZF9zdHJlYW0uaApAQCAtMjEsNyArMjEsOSBAQAogI2luY2x1
ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAi
YXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19mb3JtYXQuaCIKICNpbmNsdWRlICJhcGkvY2FsbC90cmFu
c3BvcnQuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKICNpbmNsdWRl
ICJhcGkvY3J5cHRvL2ZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiYXBpL21l
ZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgImNhbGwvcnRwX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcy5oIgpAQCAtNTcs
MTAgKzU5LDEzIEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSB7CiAKICAgICBBTkFTdGF0cyBhbmFf
c3RhdGlzdGljczsKICAgICBBdWRpb1Byb2Nlc3NpbmdTdGF0cyBhcG1fc3RhdGlzdGljczsKKwor
ICAgIGludDY0X3QgdGFyZ2V0X2JpdHJhdGVfYnBzID0gMDsKICAgfTsKIAogICBzdHJ1Y3QgQ29u
ZmlnIHsKICAgICBDb25maWcoKSA9IGRlbGV0ZTsKKyAgICBDb25maWcoVHJhbnNwb3J0KiBzZW5k
X3RyYW5zcG9ydCwgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCk7CiAg
ICAgZXhwbGljaXQgQ29uZmlnKFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQpOwogICAgIH5Db25m
aWcoKTsKICAgICBzdGQ6OnN0cmluZyBUb1N0cmluZygpIGNvbnN0OwpAQCAtNzgsMjAgKzgzLDI1
IEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSB7CiAgICAgICAvLyBpbmNsdWRlZCBpbiB0aGUgbGlz
dCBvZiBleHRlbnNpb25zLgogICAgICAgc3RkOjpzdHJpbmcgbWlkOwogCisgICAgICAvLyBDb3Jy
ZXNwb25kcyB0byB0aGUgU0RQIGF0dHJpYnV0ZSBleHRtYXAtYWxsb3ctbWl4ZWQuCisgICAgICBi
b29sIGV4dG1hcF9hbGxvd19taXhlZCA9IGZhbHNlOworCiAgICAgICAvLyBSVFAgaGVhZGVyIGV4
dGVuc2lvbnMgdXNlZCBmb3IgdGhlIHNlbnQgc3RyZWFtLgogICAgICAgc3RkOjp2ZWN0b3I8UnRw
RXh0ZW5zaW9uPiBleHRlbnNpb25zOwogCi0gICAgICAvLyBTZWUgTmFja0NvbmZpZyBmb3IgZGVz
Y3JpcHRpb24uCi0gICAgICBOYWNrQ29uZmlnIG5hY2s7Ci0KICAgICAgIC8vIFJUQ1AgQ05BTUUs
IHNlZSBSRkMgMzU1MC4KICAgICAgIHN0ZDo6c3RyaW5nIGNfbmFtZTsKICAgICB9IHJ0cDsKIAor
ICAgIC8vIFRpbWUgaW50ZXJ2YWwgYmV0d2VlbiBSVENQIHJlcG9ydCBmb3IgYXVkaW8KKyAgICBp
bnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPSA1MDAwOworCiAgICAgLy8gVHJhbnNwb3J0IGZv
ciBvdXRnb2luZyBwYWNrZXRzLiBUaGUgdHJhbnNwb3J0IGlzIGV4cGVjdGVkIHRvIGV4aXN0IGZv
cgogICAgIC8vIHRoZSBlbnRpcmUgbGlmZSBvZiB0aGUgQXVkaW9TZW5kU3RyZWFtIGFuZCBpcyBv
d25lZCBieSB0aGUgQVBJIGNsaWVudC4KICAgICBUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0ID0g
bnVsbHB0cjsKIAorICAgIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQg
PSBudWxscHRyOworCiAgICAgLy8gQml0cmF0ZSBsaW1pdHMgdXNlZCBmb3IgdmFyaWFibGUgYXVk
aW8gYml0cmF0ZSBzdHJlYW1zLiBTZXQgYm90aCB0byAtMSB0bwogICAgIC8vIGRpc2FibGUgYXVk
aW8gYml0cmF0ZSBhZGFwdGF0aW9uLgogICAgIC8vIE5vdGU6IFRoaXMgaXMgc3RpbGwgYW4gZXhw
ZXJpbWVudGFsIGZlYXR1cmUgYW5kIG5vdCByZWFkeSBmb3IgcmVhbCB1c2FnZS4KQEAgLTk5LDYg
KzEwOSw3IEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSB7CiAgICAgaW50IG1heF9iaXRyYXRlX2Jw
cyA9IC0xOwogCiAgICAgZG91YmxlIGJpdHJhdGVfcHJpb3JpdHkgPSAxLjA7CisgICAgYm9vbCBo
YXNfZHNjcCA9IGZhbHNlOwogCiAgICAgLy8gRGVmaW5lcyB3aGV0aGVyIHRvIHR1cm4gb24gYXVk
aW8gbmV0d29yayBhZGFwdG9yLCBhbmQgZGVmaW5lcyBpdHMgY29uZmlnCiAgICAgLy8gc3RyaW5n
LgpAQCAtMTMwLDYgKzE0MSw5IEBAIGNsYXNzIEF1ZGlvU2VuZFN0cmVhbSB7CiAgICAgLy8gVHJh
Y2sgSUQgYXMgc3BlY2lmaWVkIGR1cmluZyB0cmFjayBjcmVhdGlvbi4KICAgICBzdGQ6OnN0cmlu
ZyB0cmFja19pZDsKIAorICAgIC8vIFBlciBQZWVyQ29ubmVjdGlvbiBjcnlwdG8gb3B0aW9ucy4K
KyAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnM7CisKICAgICAvLyBBbiBv
cHRpb25hbCBjdXN0b20gZnJhbWUgZW5jcnlwdG9yIHRoYXQgYWxsb3dzIHRoZSBlbnRpcmUgZnJh
bWUgdG8gYmUKICAgICAvLyBlbmNyeXB0b3IgaW4gd2hhdGV2ZXIgd2F5IHRoZSBjYWxsZXIgY2hv
c2VzLiBUaGlzIGlzIG5vdCByZXF1aXJlZCBieQogICAgIC8vIGRlZmF1bHQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVf
YWxsb2NhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC9iaXRyYXRlX2FsbG9jYXRvci5jYwppbmRleCBhY2IxOWFlNmZiMmJmZjBiY2RhMDI1ZjM4
ZTk1NjcwZmNhZjBlMjhhLi42NjA5ODFjMzBlMzk5ZWRlYjA2OWExNTE2NDBjNmQzNTc4OGVkYmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL2JpdHJhdGVfYWxsb2NhdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvYml0cmF0ZV9hbGxvY2F0b3IuY2MKQEAgLTE2LDYgKzE2LDgg
QEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgImFw
aS91bml0cy9kYXRhX3JhdGUuaCIKKyNpbmNsdWRlICJhcGkvdW5pdHMvdGltZV9kZWx0YS5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2luY2x1ZGUvYml0cmF0ZV9jb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvbG9nZ2luZy5oIgpAQCAtNTAsMTAgKzUyLDEyIEBAIGRvdWJsZSBNZWRpYVJhdGlvKHVpbnQz
Ml90IGFsbG9jYXRlZF9iaXRyYXRlLCB1aW50MzJfdCBwcm90ZWN0aW9uX2JpdHJhdGUpIHsKIAog
Qml0cmF0ZUFsbG9jYXRvcjo6Qml0cmF0ZUFsbG9jYXRvcihMaW1pdE9ic2VydmVyKiBsaW1pdF9v
YnNlcnZlcikKICAgICA6IGxpbWl0X29ic2VydmVyXyhsaW1pdF9vYnNlcnZlciksCi0gICAgICBs
YXN0X2JpdHJhdGVfYnBzXygwKSwKKyAgICAgIGxhc3RfdGFyZ2V0X2Jwc18oMCksCisgICAgICBs
YXN0X2xpbmtfY2FwYWNpdHlfYnBzXygwKSwKICAgICAgIGxhc3Rfbm9uX3plcm9fYml0cmF0ZV9i
cHNfKGtEZWZhdWx0Qml0cmF0ZUJwcyksCiAgICAgICBsYXN0X2ZyYWN0aW9uX2xvc3NfKDApLAog
ICAgICAgbGFzdF9ydHRfKDApLAorICAgICAgbGFzdF9id2VfcGVyaW9kX21zXygxMDAwKSwKICAg
ICAgIG51bV9wYXVzZV9ldmVudHNfKDApLAogICAgICAgY2xvY2tfKENsb2NrOjpHZXRSZWFsVGlt
ZUNsb2NrKCkpLAogICAgICAgbGFzdF9id2VfbG9nX3RpbWVfKDApLApAQCAtODgsMTEgKzkyLDEz
IEBAIHVpbnQ4X3QgQml0cmF0ZUFsbG9jYXRvcjo6R2V0VHJhbnNtaXNzaW9uTWF4Qml0cmF0ZU11
bHRpcGxpZXIoKSB7CiB9CiAKIHZvaWQgQml0cmF0ZUFsbG9jYXRvcjo6T25OZXR3b3JrQ2hhbmdl
ZCh1aW50MzJfdCB0YXJnZXRfYml0cmF0ZV9icHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgbGlua19jYXBhY2l0eV9icHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmcmFjdGlvbl9sb3NzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgYndlX3BlcmlvZF9tcykgewog
ICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0g
IGxhc3RfYml0cmF0ZV9icHNfID0gdGFyZ2V0X2JpdHJhdGVfYnBzOworICBsYXN0X3RhcmdldF9i
cHNfID0gdGFyZ2V0X2JpdHJhdGVfYnBzOworICBsYXN0X2xpbmtfY2FwYWNpdHlfYnBzXyA9IGxp
bmtfY2FwYWNpdHlfYnBzOwogICBsYXN0X25vbl96ZXJvX2JpdHJhdGVfYnBzXyA9CiAgICAgICB0
YXJnZXRfYml0cmF0ZV9icHMgPiAwID8gdGFyZ2V0X2JpdHJhdGVfYnBzIDogbGFzdF9ub25femVy
b19iaXRyYXRlX2Jwc187CiAgIGxhc3RfZnJhY3Rpb25fbG9zc18gPSBmcmFjdGlvbl9sb3NzOwpA
QCAtMTA3LDExICsxMTMsMTggQEAgdm9pZCBCaXRyYXRlQWxsb2NhdG9yOjpPbk5ldHdvcmtDaGFu
Z2VkKHVpbnQzMl90IHRhcmdldF9iaXRyYXRlX2JwcywKICAgfQogCiAgIE9ic2VydmVyQWxsb2Nh
dGlvbiBhbGxvY2F0aW9uID0gQWxsb2NhdGVCaXRyYXRlcyh0YXJnZXRfYml0cmF0ZV9icHMpOwor
ICBPYnNlcnZlckFsbG9jYXRpb24gYmFuZHdpZHRoX2FsbG9jYXRpb24gPSBBbGxvY2F0ZUJpdHJh
dGVzKGxpbmtfY2FwYWNpdHlfYnBzKTsKIAogICBmb3IgKGF1dG8mIGNvbmZpZyA6IGJpdHJhdGVf
b2JzZXJ2ZXJfY29uZmlnc18pIHsKICAgICB1aW50MzJfdCBhbGxvY2F0ZWRfYml0cmF0ZSA9IGFs
bG9jYXRpb25bY29uZmlnLm9ic2VydmVyXTsKLSAgICB1aW50MzJfdCBwcm90ZWN0aW9uX2JpdHJh
dGUgPSBjb25maWcub2JzZXJ2ZXItPk9uQml0cmF0ZVVwZGF0ZWQoCi0gICAgICAgIGFsbG9jYXRl
ZF9iaXRyYXRlLCBsYXN0X2ZyYWN0aW9uX2xvc3NfLCBsYXN0X3J0dF8sIGxhc3RfYndlX3Blcmlv
ZF9tc18pOworICAgIHVpbnQzMl90IGFsbG9jYXRlZF9iYW5kd2lkdGggPSBiYW5kd2lkdGhfYWxs
b2NhdGlvbltjb25maWcub2JzZXJ2ZXJdOworICAgIEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVw
ZGF0ZTsKKyAgICB1cGRhdGUudGFyZ2V0X2JpdHJhdGUgPSBEYXRhUmF0ZTo6YnBzKGFsbG9jYXRl
ZF9iaXRyYXRlKTsKKyAgICB1cGRhdGUubGlua19jYXBhY2l0eSA9IERhdGFSYXRlOjpicHMoYWxs
b2NhdGVkX2JhbmR3aWR0aCk7CisgICAgdXBkYXRlLnBhY2tldF9sb3NzX3JhdGlvID0gbGFzdF9m
cmFjdGlvbl9sb3NzXyAvIDI1Ni4wOworICAgIHVwZGF0ZS5yb3VuZF90cmlwX3RpbWUgPSBUaW1l
RGVsdGE6Om1zKGxhc3RfcnR0Xyk7CisgICAgdXBkYXRlLmJ3ZV9wZXJpb2QgPSBUaW1lRGVsdGE6
Om1zKGxhc3RfYndlX3BlcmlvZF9tc18pOworICAgIHVpbnQzMl90IHByb3RlY3Rpb25fYml0cmF0
ZSA9IGNvbmZpZy5vYnNlcnZlci0+T25CaXRyYXRlVXBkYXRlZCh1cGRhdGUpOwogCiAgICAgaWYg
KGFsbG9jYXRlZF9iaXRyYXRlID09IDAgJiYgY29uZmlnLmFsbG9jYXRlZF9iaXRyYXRlX2JwcyA+
IDApIHsKICAgICAgIGlmICh0YXJnZXRfYml0cmF0ZV9icHMgPiAwKQpAQCAtMTYzLDE1ICsxNzYs
MjIgQEAgdm9pZCBCaXRyYXRlQWxsb2NhdG9yOjpBZGRPYnNlcnZlcihCaXRyYXRlQWxsb2NhdG9y
T2JzZXJ2ZXIqIG9ic2VydmVyLAogICAgICAgICBjb25maWcuYml0cmF0ZV9wcmlvcml0eSwgY29u
ZmlnLmhhc19wYWNrZXRfZmVlZGJhY2spKTsKICAgfQogCi0gIE9ic2VydmVyQWxsb2NhdGlvbiBh
bGxvY2F0aW9uOwotICBpZiAobGFzdF9iaXRyYXRlX2Jwc18gPiAwKSB7CisgIGlmIChsYXN0X3Rh
cmdldF9icHNfID4gMCkgewogICAgIC8vIENhbGN1bGF0ZSBhIG5ldyBhbGxvY2F0aW9uIGFuZCB1
cGRhdGUgYWxsIG9ic2VydmVycy4KLSAgICBhbGxvY2F0aW9uID0gQWxsb2NhdGVCaXRyYXRlcyhs
YXN0X2JpdHJhdGVfYnBzXyk7CisKKyAgICBPYnNlcnZlckFsbG9jYXRpb24gYWxsb2NhdGlvbiA9
IEFsbG9jYXRlQml0cmF0ZXMobGFzdF90YXJnZXRfYnBzXyk7CisgICAgT2JzZXJ2ZXJBbGxvY2F0
aW9uIGJhbmR3aWR0aF9hbGxvY2F0aW9uID0KKyAgICAgICAgQWxsb2NhdGVCaXRyYXRlcyhsYXN0
X2xpbmtfY2FwYWNpdHlfYnBzXyk7CiAgICAgZm9yIChhdXRvJiBjb25maWcgOiBiaXRyYXRlX29i
c2VydmVyX2NvbmZpZ3NfKSB7CiAgICAgICB1aW50MzJfdCBhbGxvY2F0ZWRfYml0cmF0ZSA9IGFs
bG9jYXRpb25bY29uZmlnLm9ic2VydmVyXTsKLSAgICAgIHVpbnQzMl90IHByb3RlY3Rpb25fYml0
cmF0ZSA9IGNvbmZpZy5vYnNlcnZlci0+T25CaXRyYXRlVXBkYXRlZCgKLSAgICAgICAgICBhbGxv
Y2F0ZWRfYml0cmF0ZSwgbGFzdF9mcmFjdGlvbl9sb3NzXywgbGFzdF9ydHRfLAotICAgICAgICAg
IGxhc3RfYndlX3BlcmlvZF9tc18pOworICAgICAgdWludDMyX3QgYmFuZHdpZHRoID0gYmFuZHdp
ZHRoX2FsbG9jYXRpb25bY29uZmlnLm9ic2VydmVyXTsKKyAgICAgIEJpdHJhdGVBbGxvY2F0aW9u
VXBkYXRlIHVwZGF0ZTsKKyAgICAgIHVwZGF0ZS50YXJnZXRfYml0cmF0ZSA9IERhdGFSYXRlOjpi
cHMoYWxsb2NhdGVkX2JpdHJhdGUpOworICAgICAgdXBkYXRlLmxpbmtfY2FwYWNpdHkgPSBEYXRh
UmF0ZTo6YnBzKGJhbmR3aWR0aCk7CisgICAgICB1cGRhdGUucGFja2V0X2xvc3NfcmF0aW8gPSBs
YXN0X2ZyYWN0aW9uX2xvc3NfIC8gMjU2LjA7CisgICAgICB1cGRhdGUucm91bmRfdHJpcF90aW1l
ID0gVGltZURlbHRhOjptcyhsYXN0X3J0dF8pOworICAgICAgdXBkYXRlLmJ3ZV9wZXJpb2QgPSBU
aW1lRGVsdGE6Om1zKGxhc3RfYndlX3BlcmlvZF9tc18pOworICAgICAgdWludDMyX3QgcHJvdGVj
dGlvbl9iaXRyYXRlID0gY29uZmlnLm9ic2VydmVyLT5PbkJpdHJhdGVVcGRhdGVkKHVwZGF0ZSk7
CiAgICAgICBjb25maWcuYWxsb2NhdGVkX2JpdHJhdGVfYnBzID0gYWxsb2NhdGVkX2JpdHJhdGU7
CiAgICAgICBpZiAoYWxsb2NhdGVkX2JpdHJhdGUgPiAwKQogICAgICAgICBjb25maWcubWVkaWFf
cmF0aW8gPSBNZWRpYVJhdGlvKGFsbG9jYXRlZF9iaXRyYXRlLCBwcm90ZWN0aW9uX2JpdHJhdGUp
OwpAQCAtMTgwLDkgKzIwMCwxNCBAQCB2b2lkIEJpdHJhdGVBbGxvY2F0b3I6OkFkZE9ic2VydmVy
KEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2JzZXJ2ZXIsCiAgICAgLy8gQ3VycmVudGx5LCBh
biBlbmNvZGVyIGlzIG5vdCBhbGxvd2VkIHRvIHByb2R1Y2UgZnJhbWVzLgogICAgIC8vIEJ1dCB3
ZSBzdGlsbCBoYXZlIHRvIHJldHVybiB0aGUgaW5pdGlhbCBjb25maWcgYml0cmF0ZSArIGxldCB0
aGUKICAgICAvLyBvYnNlcnZlciBrbm93IHRoYXQgaXQgY2FuIG5vdCBwcm9kdWNlIGZyYW1lcy4K
LSAgICBhbGxvY2F0aW9uID0gQWxsb2NhdGVCaXRyYXRlcyhsYXN0X25vbl96ZXJvX2JpdHJhdGVf
YnBzXyk7Ci0gICAgb2JzZXJ2ZXItPk9uQml0cmF0ZVVwZGF0ZWQoMCwgbGFzdF9mcmFjdGlvbl9s
b3NzXywgbGFzdF9ydHRfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfYndl
X3BlcmlvZF9tc18pOworCisgICAgQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBkYXRlOworICAg
IHVwZGF0ZS50YXJnZXRfYml0cmF0ZSA9IERhdGFSYXRlOjpaZXJvKCk7CisgICAgdXBkYXRlLmxp
bmtfY2FwYWNpdHkgPSBEYXRhUmF0ZTo6WmVybygpOworICAgIHVwZGF0ZS5wYWNrZXRfbG9zc19y
YXRpbyA9IGxhc3RfZnJhY3Rpb25fbG9zc18gLyAyNTYuMDsKKyAgICB1cGRhdGUucm91bmRfdHJp
cF90aW1lID0gVGltZURlbHRhOjptcyhsYXN0X3J0dF8pOworICAgIHVwZGF0ZS5id2VfcGVyaW9k
ID0gVGltZURlbHRhOjptcyhsYXN0X2J3ZV9wZXJpb2RfbXNfKTsKKyAgICBvYnNlcnZlci0+T25C
aXRyYXRlVXBkYXRlZCh1cGRhdGUpOwogICB9CiAgIFVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsK
IH0KQEAgLTI0OCw3ICsyNzMsOCBAQCB2b2lkIEJpdHJhdGVBbGxvY2F0b3I6OlJlbW92ZU9ic2Vy
dmVyKEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2JzZXJ2ZXIpIHsKICAgVXBkYXRlQWxsb2Nh
dGlvbkxpbWl0cygpOwogfQogCi1pbnQgQml0cmF0ZUFsbG9jYXRvcjo6R2V0U3RhcnRCaXRyYXRl
KEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2JzZXJ2ZXIpIHsKK2ludCBCaXRyYXRlQWxsb2Nh
dG9yOjpHZXRTdGFydEJpdHJhdGUoCisgICAgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNl
cnZlcikgY29uc3QgewogICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNlcXVlbmNl
ZF9jaGVja2VyXyk7CiAgIGNvbnN0IGF1dG8mIGl0ID0gRmluZE9ic2VydmVyQ29uZmlnKG9ic2Vy
dmVyKTsKICAgaWYgKGl0ID09IGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18uZW5kKCkpIHsKQEAg
LTI3Miw2ICsyOTgsMTcgQEAgdm9pZCBCaXRyYXRlQWxsb2NhdG9yOjpTZXRCaXRyYXRlQWxsb2Nh
dGlvblN0cmF0ZWd5KAogICBiaXRyYXRlX2FsbG9jYXRpb25fc3RyYXRlZ3lfID0gc3RkOjptb3Zl
KGJpdHJhdGVfYWxsb2NhdGlvbl9zdHJhdGVneSk7CiB9CiAKK0JpdHJhdGVBbGxvY2F0b3I6Ok9i
c2VydmVyQ29uZmlnczo6Y29uc3RfaXRlcmF0b3IKK0JpdHJhdGVBbGxvY2F0b3I6OkZpbmRPYnNl
cnZlckNvbmZpZygKKyAgICBjb25zdCBCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqIG9ic2VydmVy
KSBjb25zdCB7CisgIGZvciAoYXV0byBpdCA9IGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18uYmVn
aW4oKTsKKyAgICAgICBpdCAhPSBiaXRyYXRlX29ic2VydmVyX2NvbmZpZ3NfLmVuZCgpOyArK2l0
KSB7CisgICAgaWYgKGl0LT5vYnNlcnZlciA9PSBvYnNlcnZlcikKKyAgICAgIHJldHVybiBpdDsK
KyAgfQorICByZXR1cm4gYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5lbmQoKTsKK30KKwogQml0
cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJDb25maWdzOjppdGVyYXRvcgogQml0cmF0ZUFsbG9jYXRv
cjo6RmluZE9ic2VydmVyQ29uZmlnKGNvbnN0IEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2Jz
ZXJ2ZXIpIHsKICAgZm9yIChhdXRvIGl0ID0gYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5iZWdp
bigpOwpAQCAtMjgzLDE5ICszMjAsMTkgQEAgQml0cmF0ZUFsbG9jYXRvcjo6RmluZE9ic2VydmVy
Q29uZmlnKGNvbnN0IEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciogb2JzZXJ2ZXIpIHsKIH0KIAog
Qml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJBbGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6OkFs
bG9jYXRlQml0cmF0ZXMoCi0gICAgdWludDMyX3QgYml0cmF0ZSkgeworICAgIHVpbnQzMl90IGJp
dHJhdGUpIGNvbnN0IHsKICAgaWYgKGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18uZW1wdHkoKSkK
ICAgICByZXR1cm4gT2JzZXJ2ZXJBbGxvY2F0aW9uKCk7CiAKICAgaWYgKGJpdHJhdGVfYWxsb2Nh
dGlvbl9zdHJhdGVneV8gIT0gbnVsbHB0cikgewotICAgIHN0ZDo6dmVjdG9yPGNvbnN0IHJ0Yzo6
Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWcqPgotICAgICAgICB0cmFja19j
b25maWdzKGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18uc2l6ZSgpKTsKLSAgICBpbnQgaSA9IDA7
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjIDogYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXykgewot
ICAgICAgdHJhY2tfY29uZmlnc1tpKytdID0gJmM7Ci0gICAgfQorICAgIC8vIE5vdGU6IFRoaXMg
aW50ZW50aW9uYWxseSBjYXVzZXMgc2xpY2luZywgd2Ugb25seSBjb3B5IHRoZSBmaWVsZHMgaW4K
KyAgICAvLyBPYnNlcnZlckNvbmZpZyB0aGF0IGFyZSBpbmhlcml0ZWQgZnJvbSBUcmFja0NvbmZp
Zy4KKyAgICBzdGQ6OnZlY3RvcjxydGM6OkJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRyYWNr
Q29uZmlnPiB0cmFja19jb25maWdzKAorICAgICAgICBiaXRyYXRlX29ic2VydmVyX2NvbmZpZ3Nf
LmJlZ2luKCksIGJpdHJhdGVfb2JzZXJ2ZXJfY29uZmlnc18uZW5kKCkpOworCiAgICAgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+IHRyYWNrX2FsbG9jYXRpb25zID0KLSAgICAgICAgYml0cmF0ZV9hbGxv
Y2F0aW9uX3N0cmF0ZWd5Xy0+QWxsb2NhdGVCaXRyYXRlcyhiaXRyYXRlLCB0cmFja19jb25maWdz
KTsKKyAgICAgICAgYml0cmF0ZV9hbGxvY2F0aW9uX3N0cmF0ZWd5Xy0+QWxsb2NhdGVCaXRyYXRl
cygKKyAgICAgICAgICAgIGJpdHJhdGUsIHN0ZDo6bW92ZSh0cmFja19jb25maWdzKSk7CiAgICAg
Ly8gVGhlIHN0cmF0ZWd5IHNob3VsZCByZXR1cm4gYWxsb2NhdGlvbiBmb3IgYWxsIHRyYWNrcy4K
ICAgICBSVENfQ0hFQ0sodHJhY2tfYWxsb2NhdGlvbnMuc2l6ZSgpID09IGJpdHJhdGVfb2JzZXJ2
ZXJfY29uZmlnc18uc2l6ZSgpKTsKICAgICBPYnNlcnZlckFsbG9jYXRpb24gYWxsb2NhdGlvbjsK
QEAgLTMzMSw3ICszNjgsOCBAQCBCaXRyYXRlQWxsb2NhdG9yOjpPYnNlcnZlckFsbG9jYXRpb24g
Qml0cmF0ZUFsbG9jYXRvcjo6QWxsb2NhdGVCaXRyYXRlcygKICAgcmV0dXJuIE1heFJhdGVBbGxv
Y2F0aW9uKGJpdHJhdGUsIHN1bV9tYXhfYml0cmF0ZXMpOwogfQogCi1CaXRyYXRlQWxsb2NhdG9y
OjpPYnNlcnZlckFsbG9jYXRpb24gQml0cmF0ZUFsbG9jYXRvcjo6WmVyb1JhdGVBbGxvY2F0aW9u
KCkgeworQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJBbGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0
b3I6Olplcm9SYXRlQWxsb2NhdGlvbigpCisgICAgY29uc3QgewogICBPYnNlcnZlckFsbG9jYXRp
b24gYWxsb2NhdGlvbjsKICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlcl9jb25maWcgOiBiaXRy
YXRlX29ic2VydmVyX2NvbmZpZ3NfKQogICAgIGFsbG9jYXRpb25bb2JzZXJ2ZXJfY29uZmlnLm9i
c2VydmVyXSA9IDA7CkBAIC0zMzksNyArMzc3LDcgQEAgQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2
ZXJBbGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6Olplcm9SYXRlQWxsb2NhdGlvbigpIHsKIH0K
IAogQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJBbGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6
Okxvd1JhdGVBbGxvY2F0aW9uKAotICAgIHVpbnQzMl90IGJpdHJhdGUpIHsKKyAgICB1aW50MzJf
dCBiaXRyYXRlKSBjb25zdCB7CiAgIE9ic2VydmVyQWxsb2NhdGlvbiBhbGxvY2F0aW9uOwogICAv
LyBTdGFydCBieSBhbGxvY2F0aW5nIGJpdHJhdGUgdG8gb2JzZXJ2ZXJzIGVuZm9yY2luZyBhIG1p
biBiaXRyYXRlLCBoZW5jZQogICAvLyByZW1haW5pbmdfYml0cmF0ZSBtaWdodCB0dXJuIG5lZ2F0
aXZlLgpAQCAtNDAwLDcgKzQzOCw3IEBAIEJpdHJhdGVBbGxvY2F0b3I6Ok9ic2VydmVyQWxsb2Nh
dGlvbiBCaXRyYXRlQWxsb2NhdG9yOjpMb3dSYXRlQWxsb2NhdGlvbigKIC8vIG1pbl9iaXRyYXRl
X2JwcyB2YWx1ZXMsIHVudGlsIG9uZSBvZiB0aGUgb2JzZXJ2ZXJzIGhpdHMgaXRzIG1heF9iaXRy
YXRlX2Jwcy4KIEJpdHJhdGVBbGxvY2F0b3I6Ok9ic2VydmVyQWxsb2NhdGlvbiBCaXRyYXRlQWxs
b2NhdG9yOjpOb3JtYWxSYXRlQWxsb2NhdGlvbigKICAgICB1aW50MzJfdCBiaXRyYXRlLAotICAg
IHVpbnQzMl90IHN1bV9taW5fYml0cmF0ZXMpIHsKKyAgICB1aW50MzJfdCBzdW1fbWluX2JpdHJh
dGVzKSBjb25zdCB7CiAgIE9ic2VydmVyQWxsb2NhdGlvbiBhbGxvY2F0aW9uOwogICBPYnNlcnZl
ckFsbG9jYXRpb24gb2JzZXJ2ZXJzX2NhcGFjaXRpZXM7CiAgIGZvciAoY29uc3QgYXV0byYgb2Jz
ZXJ2ZXJfY29uZmlnIDogYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXykgewpAQCAtNDIwLDcgKzQ1
OCw3IEBAIEJpdHJhdGVBbGxvY2F0b3I6Ok9ic2VydmVyQWxsb2NhdGlvbiBCaXRyYXRlQWxsb2Nh
dG9yOjpOb3JtYWxSYXRlQWxsb2NhdGlvbigKIAogQml0cmF0ZUFsbG9jYXRvcjo6T2JzZXJ2ZXJB
bGxvY2F0aW9uIEJpdHJhdGVBbGxvY2F0b3I6Ok1heFJhdGVBbGxvY2F0aW9uKAogICAgIHVpbnQz
Ml90IGJpdHJhdGUsCi0gICAgdWludDMyX3Qgc3VtX21heF9iaXRyYXRlcykgeworICAgIHVpbnQz
Ml90IHN1bV9tYXhfYml0cmF0ZXMpIGNvbnN0IHsKICAgT2JzZXJ2ZXJBbGxvY2F0aW9uIGFsbG9j
YXRpb247CiAKICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlcl9jb25maWcgOiBiaXRyYXRlX29i
c2VydmVyX2NvbmZpZ3NfKSB7CkBAIC00NTcsMTAgKzQ5NSwxMSBAQCB1aW50MzJfdCBCaXRyYXRl
QWxsb2NhdG9yOjpPYnNlcnZlckNvbmZpZzo6TWluQml0cmF0ZVdpdGhIeXN0ZXJlc2lzKCkgY29u
c3QgewogICByZXR1cm4gbWluX2JpdHJhdGU7CiB9CiAKLXZvaWQgQml0cmF0ZUFsbG9jYXRvcjo6
RGlzdHJpYnV0ZUJpdHJhdGVFdmVubHkodWludDMyX3QgYml0cmF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbmNsdWRlX3plcm9fYWxsb2Nh
dGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBtYXhfbXVsdGlwbGllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgT2JzZXJ2ZXJBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKSB7Cit2b2lkIEJpdHJhdGVB
bGxvY2F0b3I6OkRpc3RyaWJ1dGVCaXRyYXRlRXZlbmx5KAorICAgIHVpbnQzMl90IGJpdHJhdGUs
CisgICAgYm9vbCBpbmNsdWRlX3plcm9fYWxsb2NhdGlvbnMsCisgICAgaW50IG1heF9tdWx0aXBs
aWVyLAorICAgIE9ic2VydmVyQWxsb2NhdGlvbiogYWxsb2NhdGlvbikgY29uc3QgewogICBSVENf
RENIRUNLX0VRKGFsbG9jYXRpb24tPnNpemUoKSwgYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5z
aXplKCkpOwogCiAgIE9ic2VydmVyU29ydGluZ01hcCBsaXN0X21heF9iaXRyYXRlczsKQEAgLTQ5
MSw4ICs1MzAsOSBAQCB2b2lkIEJpdHJhdGVBbGxvY2F0b3I6OkRpc3RyaWJ1dGVCaXRyYXRlRXZl
bmx5KHVpbnQzMl90IGJpdHJhdGUsCiAgIH0KIH0KIAotYm9vbCBCaXRyYXRlQWxsb2NhdG9yOjpF
bm91Z2hCaXRyYXRlRm9yQWxsT2JzZXJ2ZXJzKHVpbnQzMl90IGJpdHJhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3VtX21p
bl9iaXRyYXRlcykgeworYm9vbCBCaXRyYXRlQWxsb2NhdG9yOjpFbm91Z2hCaXRyYXRlRm9yQWxs
T2JzZXJ2ZXJzKAorICAgIHVpbnQzMl90IGJpdHJhdGUsCisgICAgdWludDMyX3Qgc3VtX21pbl9i
aXRyYXRlcykgY29uc3QgewogICBpZiAoYml0cmF0ZSA8IHN1bV9taW5fYml0cmF0ZXMpCiAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC01MTEsNyArNTUxLDcgQEAgYm9vbCBCaXRyYXRlQWxsb2NhdG9y
OjpFbm91Z2hCaXRyYXRlRm9yQWxsT2JzZXJ2ZXJzKHVpbnQzMl90IGJpdHJhdGUsCiB2b2lkIEJp
dHJhdGVBbGxvY2F0b3I6OkRpc3RyaWJ1dGVCaXRyYXRlUmVsYXRpdmVseSgKICAgICB1aW50MzJf
dCByZW1haW5pbmdfYml0cmF0ZSwKICAgICBjb25zdCBPYnNlcnZlckFsbG9jYXRpb24mIG9ic2Vy
dmVyc19jYXBhY2l0aWVzLAotICAgIE9ic2VydmVyQWxsb2NhdGlvbiogYWxsb2NhdGlvbikgewor
ICAgIE9ic2VydmVyQWxsb2NhdGlvbiogYWxsb2NhdGlvbikgY29uc3QgewogICBSVENfRENIRUNL
X0VRKGFsbG9jYXRpb24tPnNpemUoKSwgYml0cmF0ZV9vYnNlcnZlcl9jb25maWdzXy5zaXplKCkp
OwogICBSVENfRENIRUNLX0VRKG9ic2VydmVyc19jYXBhY2l0aWVzLnNpemUoKSwgYml0cmF0ZV9v
YnNlcnZlcl9jb25maWdzXy5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfYWxsb2NhdG9yLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfYWxsb2Nh
dG9yLmgKaW5kZXggNDdkZjdlMDE1MTJlYWEzMjdkNzAxNjAyMmViMTg1ZmUyNTE0ODU4Mi4uMDU5
Zjc3Yjk2NzE3OWFiMDIzNTRlMDAxMDI2Y2Q1ZTQzMTQ5ZDY2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2FsbG9jYXRv
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
Yml0cmF0ZV9hbGxvY2F0b3IuaApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgPHV0aWxpdHk+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL2NhbGwvYml0cmF0ZV9hbGxvY2F0
aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2NoZWNrZXIuaCIKIApAQCAtMzQsMTAg
KzM1LDcgQEAgY2xhc3MgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyIHsKICBwdWJsaWM6CiAgIC8v
IFJldHVybnMgdGhlIGFtb3VudCBvZiBwcm90ZWN0aW9uIHVzZWQgYnkgdGhlIEJpdHJhdGVBbGxv
Y2F0b3JPYnNlcnZlcgogICAvLyBpbXBsZW1lbnRhdGlvbiwgYXMgYml0cmF0ZSBpbiBicHMuCi0g
IHZpcnR1YWwgdWludDMyX3QgT25CaXRyYXRlVXBkYXRlZCh1aW50MzJfdCBiaXRyYXRlX2JwcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9z
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBid2VfcGVyaW9kX21zKSA9
IDA7CisgIHZpcnR1YWwgdWludDMyX3QgT25CaXRyYXRlVXBkYXRlZChCaXRyYXRlQWxsb2NhdGlv
blVwZGF0ZSB1cGRhdGUpID0gMDsKIAogIHByb3RlY3RlZDoKICAgdmlydHVhbCB+Qml0cmF0ZUFs
bG9jYXRvck9ic2VydmVyKCkge30KQEAgLTczLDcgKzcxLDcgQEAgY2xhc3MgQml0cmF0ZUFsbG9j
YXRvckludGVyZmFjZSB7CiAgIHZpcnR1YWwgdm9pZCBBZGRPYnNlcnZlcihCaXRyYXRlQWxsb2Nh
dG9yT2JzZXJ2ZXIqIG9ic2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFT
dHJlYW1BbGxvY2F0aW9uQ29uZmlnIGNvbmZpZykgPSAwOwogICB2aXJ0dWFsIHZvaWQgUmVtb3Zl
T2JzZXJ2ZXIoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikgPSAwOwotICB2aXJ0
dWFsIGludCBHZXRTdGFydEJpdHJhdGUoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZl
cikgPSAwOworICB2aXJ0dWFsIGludCBHZXRTdGFydEJpdHJhdGUoQml0cmF0ZUFsbG9jYXRvck9i
c2VydmVyKiBvYnNlcnZlcikgY29uc3QgPSAwOwogCiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIH5C
aXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlKCkgPSBkZWZhdWx0OwpAQCAtMTA0LDYgKzEwMiw3IEBA
IGNsYXNzIEJpdHJhdGVBbGxvY2F0b3IgOiBwdWJsaWMgQml0cmF0ZUFsbG9jYXRvckludGVyZmFj
ZSB7CiAKICAgLy8gQWxsb2NhdGUgdGFyZ2V0X2JpdHJhdGUgYWNyb3NzIHRoZSByZWdpc3RlcmVk
IEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlcnMuCiAgIHZvaWQgT25OZXR3b3JrQ2hhbmdlZCh1aW50
MzJfdCB0YXJnZXRfYml0cmF0ZV9icHMsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBsaW5rX2NhcGFjaXR5X2JwcywKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJh
Y3Rpb25fbG9zcywKICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBid2VfcGVyaW9kX21zKTsKQEAgLTEyMCw3ICsxMTks
NyBAQCBjbGFzcyBCaXRyYXRlQWxsb2NhdG9yIDogcHVibGljIEJpdHJhdGVBbGxvY2F0b3JJbnRl
cmZhY2UgewogCiAgIC8vIFJldHVybnMgaW5pdGlhbCBiaXRyYXRlIGFsbG9jYXRlZCBmb3IgfG9i
c2VydmVyfC4gSWYgfG9ic2VydmVyfCBpcyBub3QgaW4KICAgLy8gdGhlIGxpc3Qgb2YgYWRkZWQg
b2JzZXJ2ZXJzLCBhIGJlc3QgZ3Vlc3MgaXMgcmV0dXJuZWQuCi0gIGludCBHZXRTdGFydEJpdHJh
dGUoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikgb3ZlcnJpZGU7CisgIGludCBH
ZXRTdGFydEJpdHJhdGUoQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgLy8gU2V0cyBleHRlcm5hbCBhbGxvY2F0aW9uIHN0cmF0ZWd5LiBJZiBz
dHJhdGVneSBpcyBub3Qgc2V0IGRlZmF1bHQgV2ViUlRDCiAgIC8vIGFsbG9jYXRpb24gbWVjaGFu
aXNtIHdpbGwgYmUgdXNlZC4gVGhlIHN0cmF0ZWd5IG1heSBiZSBjaGFuZ2VkIGR1cmluZyBjYWxs
LgpAQCAtMTcxLDMxICsxNzAsMzQgQEAgY2xhc3MgQml0cmF0ZUFsbG9jYXRvciA6IHB1YmxpYyBC
aXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlIHsKICAgdm9pZCBVcGRhdGVBbGxvY2F0aW9uTGltaXRz
KCkgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKIAogICB0eXBlZGVmIHN0ZDo6dmVj
dG9yPE9ic2VydmVyQ29uZmlnPiBPYnNlcnZlckNvbmZpZ3M7CisgIE9ic2VydmVyQ29uZmlnczo6
Y29uc3RfaXRlcmF0b3IgRmluZE9ic2VydmVyQ29uZmlnKAorICAgICAgY29uc3QgQml0cmF0ZUFs
bG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikgY29uc3QKKyAgICAgIFJUQ19SVU5fT04oJnNlcXVl
bmNlZF9jaGVja2VyXyk7CiAgIE9ic2VydmVyQ29uZmlnczo6aXRlcmF0b3IgRmluZE9ic2VydmVy
Q29uZmlnKAogICAgICAgY29uc3QgQml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKiBvYnNlcnZlcikg
UlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKIAogICB0eXBlZGVmIHN0ZDo6bXVsdGlt
YXA8dWludDMyX3QsIGNvbnN0IE9ic2VydmVyQ29uZmlnKj4gT2JzZXJ2ZXJTb3J0aW5nTWFwOwog
ICB0eXBlZGVmIHN0ZDo6bWFwPEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlciosIGludD4gT2JzZXJ2
ZXJBbGxvY2F0aW9uOwogCi0gIE9ic2VydmVyQWxsb2NhdGlvbiBBbGxvY2F0ZUJpdHJhdGVzKHVp
bnQzMl90IGJpdHJhdGUpCisgIE9ic2VydmVyQWxsb2NhdGlvbiBBbGxvY2F0ZUJpdHJhdGVzKHVp
bnQzMl90IGJpdHJhdGUpIGNvbnN0CiAgICAgICBSVENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tl
cl8pOwogCiAgIC8vIEFsbG9jYXRlcyB6ZXJvIGJpdHJhdGUgdG8gYWxsIG9ic2VydmVycy4KLSAg
T2JzZXJ2ZXJBbGxvY2F0aW9uIFplcm9SYXRlQWxsb2NhdGlvbigpIFJUQ19SVU5fT04oJnNlcXVl
bmNlZF9jaGVja2VyXyk7CisgIE9ic2VydmVyQWxsb2NhdGlvbiBaZXJvUmF0ZUFsbG9jYXRpb24o
KSBjb25zdCBSVENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwogICAvLyBBbGxvY2F0ZXMg
Yml0cmF0ZSB0byBvYnNlcnZlcnMgd2hlbiB0aGVyZSBpc24ndCBlbm91Z2ggdG8gYWxsb2NhdGUg
dGhlCiAgIC8vIG1pbmltdW0gdG8gYWxsIG9ic2VydmVycy4KLSAgT2JzZXJ2ZXJBbGxvY2F0aW9u
IExvd1JhdGVBbGxvY2F0aW9uKHVpbnQzMl90IGJpdHJhdGUpCisgIE9ic2VydmVyQWxsb2NhdGlv
biBMb3dSYXRlQWxsb2NhdGlvbih1aW50MzJfdCBiaXRyYXRlKSBjb25zdAogICAgICAgUlRDX1JV
Tl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKICAgLy8gQWxsb2NhdGVzIGJpdHJhdGUgdG8gYWxs
IG9ic2VydmVycyB3aGVuIHRoZSBhdmFpbGFibGUgYmFuZHdpZHRoIGlzIGVub3VnaAogICAvLyB0
byBhbGxvY2F0ZSB0aGUgbWluaW11bSB0byBhbGwgb2JzZXJ2ZXJzIGJ1dCBub3QgZW5vdWdoIHRv
IGFsbG9jYXRlIHRoZQogICAvLyBtYXggYml0cmF0ZSBvZiBlYWNoIG9ic2VydmVyLgogICBPYnNl
cnZlckFsbG9jYXRpb24gTm9ybWFsUmF0ZUFsbG9jYXRpb24odWludDMyX3QgYml0cmF0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN1bV9taW5f
Yml0cmF0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBzdW1fbWluX2JpdHJhdGVzKSBjb25zdAogICAgICAgUlRDX1JVTl9PTigmc2VxdWVuY2Vk
X2NoZWNrZXJfKTsKICAgLy8gQWxsb2NhdGVzIGJpdHJhdGUgdG8gb2JzZXJ2ZXJzIHdoZW4gdGhl
cmUgaXMgZW5vdWdoIGF2YWlsYWJsZSBiYW5kd2lkdGgKICAgLy8gZm9yIGFsbCBvYnNlcnZlcnMg
dG8gYmUgYWxsb2NhdGVkIHRoZWlyIG1heCBiaXRyYXRlLgogICBPYnNlcnZlckFsbG9jYXRpb24g
TWF4UmF0ZUFsbG9jYXRpb24odWludDMyX3QgYml0cmF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN1bV9tYXhfYml0cmF0ZXMpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzdW1fbWF4X2JpdHJhdGVzKSBj
b25zdAogICAgICAgUlRDX1JVTl9PTigmc2VxdWVuY2VkX2NoZWNrZXJfKTsKIAogICAvLyBTcGxp
dHMgfGJpdHJhdGV8IGV2ZW5seSB0byBvYnNlcnZlcnMgYWxyZWFkeSBpbiB8YWxsb2NhdGlvbnwu
CkBAIC0yMDUsOSArMjA3LDEwIEBAIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3IgOiBwdWJsaWMgQml0
cmF0ZUFsbG9jYXRvckludGVyZmFjZSB7CiAgIHZvaWQgRGlzdHJpYnV0ZUJpdHJhdGVFdmVubHko
dWludDMyX3QgYml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlu
Y2x1ZGVfemVyb19hbGxvY2F0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbWF4X211bHRpcGxpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JzZXJ2
ZXJBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE9ic2VydmVyQWxsb2NhdGlvbiogYWxsb2NhdGlvbikgY29uc3QKICAgICAgIFJUQ19SVU5fT04o
JnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0gIGJvb2wgRW5vdWdoQml0cmF0ZUZvckFsbE9ic2VydmVy
cyh1aW50MzJfdCBiaXRyYXRlLCB1aW50MzJfdCBzdW1fbWluX2JpdHJhdGVzKQorICBib29sIEVu
b3VnaEJpdHJhdGVGb3JBbGxPYnNlcnZlcnModWludDMyX3QgYml0cmF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN1bV9taW5fYml0cmF0ZXMpIGNvbnN0
CiAgICAgICBSVENfUlVOX09OKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwogCiAgIC8vIEZyb20gdGhl
IGF2YWlsYWJsZSB8Yml0cmF0ZXwsIGVhY2ggb2JzZXJ2ZXIgd2lsbCBiZSBhbGxvY2F0ZWQgYQpA
QCAtMjE5LDcgKzIyMiw3IEBAIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3IgOiBwdWJsaWMgQml0cmF0
ZUFsbG9jYXRvckludGVyZmFjZSB7CiAgIHZvaWQgRGlzdHJpYnV0ZUJpdHJhdGVSZWxhdGl2ZWx5
KAogICAgICAgdWludDMyX3QgYml0cmF0ZSwKICAgICAgIGNvbnN0IE9ic2VydmVyQWxsb2NhdGlv
biYgb2JzZXJ2ZXJzX2NhcGFjaXRpZXMsCi0gICAgICBPYnNlcnZlckFsbG9jYXRpb24qIGFsbG9j
YXRpb24pIFJUQ19SVU5fT04oJnNlcXVlbmNlZF9jaGVja2VyXyk7CisgICAgICBPYnNlcnZlckFs
bG9jYXRpb24qIGFsbG9jYXRpb24pIGNvbnN0IFJUQ19SVU5fT04oJnNlcXVlbmNlZF9jaGVja2Vy
Xyk7CiAKICAgLy8gQWxsb3cgcGFja2V0cyB0byBiZSB0cmFuc21pdHRlZCBpbiB1cCB0byAyIHRp
bWVzIG1heCB2aWRlbyBiaXRyYXRlIGlmIHRoZQogICAvLyBiYW5kd2lkdGggZXN0aW1hdGUgYWxs
b3dzIGl0LgpAQCAtMjMyLDcgKzIzNSw4IEBAIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3IgOiBwdWJs
aWMgQml0cmF0ZUFsbG9jYXRvckludGVyZmFjZSB7CiAgIExpbWl0T2JzZXJ2ZXIqIGNvbnN0IGxp
bWl0X29ic2VydmVyXyBSVENfR1VBUkRFRF9CWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKICAgLy8g
U3RvcmVkIGluIGEgbGlzdCB0byBrZWVwIHRyYWNrIG9mIHRoZSBpbnNlcnRpb24gb3JkZXIuCiAg
IE9ic2VydmVyQ29uZmlncyBiaXRyYXRlX29ic2VydmVyX2NvbmZpZ3NfIFJUQ19HVUFSREVEX0JZ
KCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICB1aW50MzJfdCBsYXN0X2JpdHJhdGVfYnBzXyBSVENf
R1VBUkRFRF9CWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKKyAgdWludDMyX3QgbGFzdF90YXJnZXRf
YnBzXyBSVENfR1VBUkRFRF9CWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKKyAgdWludDMyX3QgbGFz
dF9saW5rX2NhcGFjaXR5X2Jwc18gUlRDX0dVQVJERURfQlkoJnNlcXVlbmNlZF9jaGVja2VyXyk7
CiAgIHVpbnQzMl90IGxhc3Rfbm9uX3plcm9fYml0cmF0ZV9icHNfIFJUQ19HVUFSREVEX0JZKCZz
ZXF1ZW5jZWRfY2hlY2tlcl8pOwogICB1aW50OF90IGxhc3RfZnJhY3Rpb25fbG9zc18gUlRDX0dV
QVJERURfQlkoJnNlcXVlbmNlZF9jaGVja2VyXyk7CiAgIGludDY0X3QgbGFzdF9ydHRfIFJUQ19H
VUFSREVEX0JZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2FsbG9jYXRvcl91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
Yml0cmF0ZV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKaW5kZXggMjk2MWZkNDA5Y2U5ODkyMzQ4N2Ey
YzNkYzY0YjkzZGE5NjQ3MjRhZC4uMDc3MWY3OThlZGNkOGIxOWQzNzk3NTliYzhlNDRiMDhlMjNj
MzZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY2FsbC9iaXRyYXRlX2FsbG9jYXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfYWxsb2NhdG9yX3VuaXR0
ZXN0LmNjCkBAIC01OSwxNSArNTksMTMgQEAgY2xhc3MgVGVzdEJpdHJhdGVPYnNlcnZlciA6IHB1
YmxpYyBCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIgewogICAgIHByb3RlY3Rpb25fcmF0aW9fID0g
cHJvdGVjdGlvbl9yYXRpbzsKICAgfQogCi0gIHVpbnQzMl90IE9uQml0cmF0ZVVwZGF0ZWQodWlu
dDMyX3QgYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBm
cmFjdGlvbl9sb3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcykg
b3ZlcnJpZGUgewotICAgIGxhc3RfYml0cmF0ZV9icHNfID0gYml0cmF0ZV9icHM7Ci0gICAgbGFz
dF9mcmFjdGlvbl9sb3NzXyA9IGZyYWN0aW9uX2xvc3M7Ci0gICAgbGFzdF9ydHRfbXNfID0gcnR0
OwotICAgIGxhc3RfcHJvYmluZ19pbnRlcnZhbF9tc18gPSBwcm9iaW5nX2ludGVydmFsX21zOwot
ICAgIHJldHVybiBiaXRyYXRlX2JwcyAqIHByb3RlY3Rpb25fcmF0aW9fOworICB1aW50MzJfdCBP
bkJpdHJhdGVVcGRhdGVkKEJpdHJhdGVBbGxvY2F0aW9uVXBkYXRlIHVwZGF0ZSkgb3ZlcnJpZGUg
eworICAgIGxhc3RfYml0cmF0ZV9icHNfID0gdXBkYXRlLnRhcmdldF9iaXRyYXRlLmJwcygpOwor
ICAgIGxhc3RfZnJhY3Rpb25fbG9zc18gPQorICAgICAgICBydGM6OmRjaGVja2VkX2Nhc3Q8dWlu
dDhfdD4odXBkYXRlLnBhY2tldF9sb3NzX3JhdGlvICogMjU2KTsKKyAgICBsYXN0X3J0dF9tc18g
PSB1cGRhdGUucm91bmRfdHJpcF90aW1lLm1zKCk7CisgICAgbGFzdF9wcm9iaW5nX2ludGVydmFs
X21zXyA9IHVwZGF0ZS5id2VfcGVyaW9kLm1zKCk7CisgICAgcmV0dXJuIHVwZGF0ZS50YXJnZXRf
Yml0cmF0ZS5icHMoKSAqIHByb3RlY3Rpb25fcmF0aW9fOwogICB9CiAgIHVpbnQzMl90IGxhc3Rf
Yml0cmF0ZV9icHNfOwogICB1aW50OF90IGxhc3RfZnJhY3Rpb25fbG9zc187CkBAIC03Niw2ICs3
NCwxOCBAQCBjbGFzcyBUZXN0Qml0cmF0ZU9ic2VydmVyIDogcHVibGljIEJpdHJhdGVBbGxvY2F0
b3JPYnNlcnZlciB7CiAgIGRvdWJsZSBwcm90ZWN0aW9uX3JhdGlvXzsKIH07CiAKK2NsYXNzIEJp
dHJhdGVBbGxvY2F0b3JGb3JUZXN0IDogcHVibGljIEJpdHJhdGVBbGxvY2F0b3IgeworIHB1Ymxp
YzoKKyAgdXNpbmcgQml0cmF0ZUFsbG9jYXRvcjo6Qml0cmF0ZUFsbG9jYXRvcjsKKyAgdm9pZCBP
bk5ldHdvcmtDaGFuZ2VkKHVpbnQzMl90IHRhcmdldF9iaXRyYXRlX2JwcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgcnR0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBid2VfcGVy
aW9kX21zKSB7CisgICAgQml0cmF0ZUFsbG9jYXRvcjo6T25OZXR3b3JrQ2hhbmdlZCh0YXJnZXRf
Yml0cmF0ZV9icHMsIHRhcmdldF9iaXRyYXRlX2JwcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyYWN0aW9uX2xvc3MsIHJ0dCwgYndlX3BlcmlvZF9tcyk7CisgIH0K
K307CisKIG5hbWVzcGFjZSB7CiBjb25zdGV4cHIgaW50NjRfdCBrRGVmYXVsdFByb2JpbmdJbnRl
cnZhbE1zID0gMzAwMDsKIGNvbnN0IGRvdWJsZSBrRGVmYXVsdEJpdHJhdGVQcmlvcml0eSA9IDEu
MDsKQEAgLTgzLDcgKzkzLDggQEAgY29uc3QgZG91YmxlIGtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5
ID0gMS4wOwogCiBjbGFzcyBCaXRyYXRlQWxsb2NhdG9yVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgewogIHByb3RlY3RlZDoKLSAgQml0cmF0ZUFsbG9jYXRvclRlc3QoKSA6IGFsbG9jYXRv
cl8obmV3IEJpdHJhdGVBbGxvY2F0b3IoJmxpbWl0X29ic2VydmVyXykpIHsKKyAgQml0cmF0ZUFs
bG9jYXRvclRlc3QoKQorICAgICAgOiBhbGxvY2F0b3JfKG5ldyBCaXRyYXRlQWxsb2NhdG9yRm9y
VGVzdCgmbGltaXRfb2JzZXJ2ZXJfKSkgewogICAgIGFsbG9jYXRvcl8tPk9uTmV0d29ya0NoYW5n
ZWQoMzAwMDAwdSwgMCwgMCwga0RlZmF1bHRQcm9iaW5nSW50ZXJ2YWxNcyk7CiAgIH0KICAgfkJp
dHJhdGVBbGxvY2F0b3JUZXN0KCkge30KQEAgLTEwMCw3ICsxMTEsNyBAQCBjbGFzcyBCaXRyYXRl
QWxsb2NhdG9yVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICB9CiAKICAgTmljZU1v
Y2s8TW9ja0xpbWl0T2JzZXJ2ZXI+IGxpbWl0X29ic2VydmVyXzsKLSAgc3RkOjp1bmlxdWVfcHRy
PEJpdHJhdGVBbGxvY2F0b3I+IGFsbG9jYXRvcl87CisgIHN0ZDo6dW5pcXVlX3B0cjxCaXRyYXRl
QWxsb2NhdG9yRm9yVGVzdD4gYWxsb2NhdG9yXzsKIH07CiAKIFRFU1RfRihCaXRyYXRlQWxsb2Nh
dG9yVGVzdCwgVXBkYXRpbmdCaXRyYXRlT2JzZXJ2ZXIpIHsKQEAgLTIxNiw3ICsyMjcsNyBAQCBU
RVNUX0YoQml0cmF0ZUFsbG9jYXRvclRlc3QsIFJlbW92ZU9ic2VydmVyVHJpZ2dlcnNMaW1pdE9i
c2VydmVyKSB7CiBjbGFzcyBCaXRyYXRlQWxsb2NhdG9yVGVzdE5vRW5mb3JjZU1pbiA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDoKICAgQml0cmF0ZUFsbG9jYXRvclRlc3RO
b0VuZm9yY2VNaW4oKQotICAgICAgOiBhbGxvY2F0b3JfKG5ldyBCaXRyYXRlQWxsb2NhdG9yKCZs
aW1pdF9vYnNlcnZlcl8pKSB7CisgICAgICA6IGFsbG9jYXRvcl8obmV3IEJpdHJhdGVBbGxvY2F0
b3JGb3JUZXN0KCZsaW1pdF9vYnNlcnZlcl8pKSB7CiAgICAgYWxsb2NhdG9yXy0+T25OZXR3b3Jr
Q2hhbmdlZCgzMDAwMDB1LCAwLCAwLCBrRGVmYXVsdFByb2JpbmdJbnRlcnZhbE1zKTsKICAgfQog
ICB+Qml0cmF0ZUFsbG9jYXRvclRlc3ROb0VuZm9yY2VNaW4oKSB7fQpAQCAtMjMyLDcgKzI0Myw3
IEBAIGNsYXNzIEJpdHJhdGVBbGxvY2F0b3JUZXN0Tm9FbmZvcmNlTWluIDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiAgICAgICAgICAgICAgICAgICAgZW5mb3JjZV9taW5fYml0cmF0ZSwgdHJh
Y2tfaWQsIGJpdHJhdGVfcHJpb3JpdHksIGZhbHNlfSk7CiAgIH0KICAgTmljZU1vY2s8TW9ja0xp
bWl0T2JzZXJ2ZXI+IGxpbWl0X29ic2VydmVyXzsKLSAgc3RkOjp1bmlxdWVfcHRyPEJpdHJhdGVB
bGxvY2F0b3I+IGFsbG9jYXRvcl87CisgIHN0ZDo6dW5pcXVlX3B0cjxCaXRyYXRlQWxsb2NhdG9y
Rm9yVGVzdD4gYWxsb2NhdG9yXzsKIH07CiAKIC8vIFRoZSBmb2xsb3dpbmcgdGhyZWUgdGVzdHMg
dmVyaWZ5IGVuZm9yY2luZyBhIG1pbmltdW0gYml0cmF0ZSB3b3JrcyBhcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9iaXRyYXRlX2Vz
dGltYXRvcl90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvYml0cmF0ZV9lc3RpbWF0b3JfdGVzdHMuY2MKaW5kZXggNzY2ZTM4Yzk3ODhjYzQw
OWVkNDc5ODk4Y2ExYjczMWMzM2M0NzczNC4uMDg2MjgyN2QzYTI0YTM5NmQzMGRjNzc0MjQ3YzVh
NmMyMWJiZTIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9iaXRyYXRlX2VzdGltYXRvcl90ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2JpdHJhdGVfZXN0aW1hdG9yX3Rl
c3RzLmNjCkBAIC00Niw4ICs0Niw2IEBAIGNsYXNzIExvZ09ic2VydmVyIHsKICBwcml2YXRlOgog
ICBjbGFzcyBDYWxsYmFjayA6IHB1YmxpYyBydGM6OkxvZ1NpbmsgewogICAgcHVibGljOgotICAg
IENhbGxiYWNrKCkgOiBkb25lXyhmYWxzZSwgZmFsc2UpIHt9Ci0KICAgICB2b2lkIE9uTG9nTWVz
c2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGUgewogICAgICAgcnRjOjpD
cml0U2NvcGUgbG9jaygmY3JpdF9zZWN0Xyk7CiAgICAgICAvLyBJZ25vcmUgbG9nIGxpbmVzIHRo
YXQgYXJlIGR1ZSB0byBtaXNzaW5nIEFTVCBleHRlbnNpb25zLCB0aGVzZSBhcmUKQEAgLTExMSwx
NCArMTA5LDE0IEBAIGNsYXNzIEJpdHJhdGVFc3RpbWF0b3JUZXN0IDogcHVibGljIHRlc3Q6OkNh
bGxUZXN0IHsKICAgICAgICAgICAmdGFza19xdWV1ZV8sCiAgICAgICAgICAgYWJzbDo6bWFrZV91
bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKICAgICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1l
Q2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRp
b25Db25maWcoKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSksCiAgICAgICAgICAgc2VuZGVyX2Nh
bGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXykpOwogICAgICAgc2VuZF90cmFuc3BvcnRfLT5T
ZXRSZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CiAgICAgICByZWNlaXZlX3Ry
YW5zcG9ydF8ucmVzZXQobmV3IHRlc3Q6OkRpcmVjdFRyYW5zcG9ydCgKICAgICAgICAgICAmdGFz
a19xdWV1ZV8sCiAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigK
ICAgICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlx
dWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlv
ckNvbmZpZygpKSksCiAgICAgICAgICAgcmVjZWl2ZXJfY2FsbF8uZ2V0KCksIHBheWxvYWRfdHlw
ZV9tYXBfKSk7CiAgICAgICByZWNlaXZlX3RyYW5zcG9ydF8tPlNldFJlY2VpdmVyKHNlbmRlcl9j
YWxsXy0+UmVjZWl2ZXIoKSk7CiAKQEAgLTEyNiw2ICsxMjQsOCBAQCBjbGFzcyBCaXRyYXRlRXN0
aW1hdG9yVGVzdCA6IHB1YmxpYyB0ZXN0OjpDYWxsVGVzdCB7CiAgICAgICB2aWRlb19zZW5kX2Nv
bmZpZy5ydHAuc3NyY3MucHVzaF9iYWNrKGtWaWRlb1NlbmRTc3Jjc1swXSk7CiAgICAgICB2aWRl
b19zZW5kX2NvbmZpZy5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9CiAgICAgICAg
ICAgJmZha2VfZW5jb2Rlcl9mYWN0b3J5XzsKKyAgICAgIHZpZGVvX3NlbmRfY29uZmlnLmVuY29k
ZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICAgICAgYml0cmF0
ZV9hbGxvY2F0b3JfZmFjdG9yeV8uZ2V0KCk7CiAgICAgICB2aWRlb19zZW5kX2NvbmZpZy5ydHAu
cGF5bG9hZF9uYW1lID0gIkZBS0UiOwogICAgICAgdmlkZW9fc2VuZF9jb25maWcucnRwLnBheWxv
YWRfdHlwZSA9IGtGYWtlVmlkZW9TZW5kUGF5bG9hZFR5cGU7CiAgICAgICBTZXRWaWRlb1NlbmRD
b25maWcodmlkZW9fc2VuZF9jb25maWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsLmNjCmluZGV4IDYzNTg3NGIyZDYyNGE2
NTJjOTYzYWYwYzljODg3MDFlY2Y0Y2NhYTMuLjk1ZjY0ZTkyNDk5MDU4ZDI1ZjIyOTVlNTk5NjM2
YzliYTllZjdhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NhbGwvY2FsbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL2NhbGwuY2MKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJh
dWRpby9hdWRpb19yZWNlaXZlX3N0cmVhbS5oIgogI2luY2x1ZGUgImF1ZGlvL2F1ZGlvX3NlbmRf
c3RyZWFtLmgiCiAjaW5jbHVkZSAiYXVkaW8vYXVkaW9fc3RhdGUuaCIKLSNpbmNsdWRlICJhdWRp
by90aW1lX2ludGVydmFsLmgiCiAjaW5jbHVkZSAiY2FsbC9iaXRyYXRlX2FsbG9jYXRvci5oIgog
I2luY2x1ZGUgImNhbGwvY2FsbC5oIgogI2luY2x1ZGUgImNhbGwvZmxleGZlY19yZWNlaXZlX3N0
cmVhbV9pbXBsLmgiCkBAIC0zMCw3ICsyOSw2IEBACiAjaW5jbHVkZSAiY2FsbC9ydHBfc3RyZWFt
X3JlY2VpdmVyX2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYWxsL3J0cF90cmFuc3BvcnRfY29u
dHJvbGxlcl9zZW5kLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfYXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmgiCi0jaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJlYW1fY29uZmln
LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRj
cF9wYWNrZXRfaW5jb21pbmcuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmln
LmgiCkBAIC01Niw2ICs1NCw3IEBACiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3luY2hyb25pemF0aW9u
L3J3X2xvY2tfd3JhcHBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKICNp
bmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgogI2luY2x1
ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dy
YXBwZXJzL2luY2x1ZGUvY3B1X2luZm8uaCIKQEAgLTE0NiwxOCArMTQ1LDYgQEAgc3RkOjp1bmlx
dWVfcHRyPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBDcmVhdGVSdGNMb2dTdHJlYW1Db25maWcoCiAg
IHJldHVybiBydGNsb2dfY29uZmlnOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8cnRjbG9nOjpTdHJl
YW1Db25maWc+IENyZWF0ZVJ0Y0xvZ1N0cmVhbUNvbmZpZygKLSAgICBjb25zdCBBdWRpb1NlbmRT
dHJlYW06OkNvbmZpZyYgY29uZmlnKSB7Ci0gIGF1dG8gcnRjbG9nX2NvbmZpZyA9IGFic2w6Om1h
a2VfdW5pcXVlPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPigpOwotICBydGNsb2dfY29uZmlnLT5sb2Nh
bF9zc3JjID0gY29uZmlnLnJ0cC5zc3JjOwotICBydGNsb2dfY29uZmlnLT5ydHBfZXh0ZW5zaW9u
cyA9IGNvbmZpZy5ydHAuZXh0ZW5zaW9uczsKLSAgaWYgKGNvbmZpZy5zZW5kX2NvZGVjX3NwZWMp
IHsKLSAgICBydGNsb2dfY29uZmlnLT5jb2RlY3MuZW1wbGFjZV9iYWNrKGNvbmZpZy5zZW5kX2Nv
ZGVjX3NwZWMtPmZvcm1hdC5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uZmlnLnNlbmRfY29kZWNfc3BlYy0+cGF5bG9hZF90eXBlLCAwKTsKLSAgfQotICBy
ZXR1cm4gcnRjbG9nX2NvbmZpZzsKLX0KLQogfSAgLy8gbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CkBAIC0yMzYsNiArMjIzLDE1IEBAIGNsYXNzIENhbGwgZmluYWwgOiBwdWJsaWMg
d2VicnRjOjpDYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
YWxsb2NhdGVkX3dpdGhvdXRfZmVlZGJhY2tfYnBzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBoYXNfcGFja2V0X2ZlZWRiYWNrKSBvdmVycmlkZTsKIAorICAvLyBUaGlz
IG1ldGhvZCBpcyBpbnZva2VkIHdoZW4gdGhlIG1lZGlhIHRyYW5zcG9ydCBpcyBjcmVhdGVkIGFu
ZCB3aGVuIHRoZQorICAvLyBtZWRpYSB0cmFuc3BvcnQgaXMgYmVpbmcgZGVzdHJ1Y3RlZC4KKyAg
Ly8gV2Ugb25seSBhbGxvdyBvbmUgbWVkaWEgdHJhbnNwb3J0IHBlciBjb25uZWN0aW9uLgorICAv
LworICAvLyBJdCBzaG91bGQgYmUgY2FsbGVkIHdpdGggbm9uLW51bGwgYXJndW1lbnQgYXQgbW9z
dCBvbmNlLCBhbmQgaWYgaXQgd2FzCisgIC8vIGNhbGxlZCB3aXRoIG5vbi1udWxsIGFyZ3VtZW50
LCBpdCBoYXMgdG8gYmUgY2FsbGVkIHdpdGggYSBudWxsIGFyZ3VtZW50CisgIC8vIGF0IGxlYXN0
IG9uY2UgYWZ0ZXIgdGhhdC4KKyAgdm9pZCBNZWRpYVRyYW5zcG9ydENoYW5nZShNZWRpYVRyYW5z
cG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KSBvdmVycmlkZTsKKwogIHByaXZhdGU6CiAg
IERlbGl2ZXJ5U3RhdHVzIERlbGl2ZXJSdGNwKE1lZGlhVHlwZSBtZWRpYV90eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwYWNrZXQsCkBAIC0yNTYsNiAr
MjUyLDEwIEBAIGNsYXNzIENhbGwgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpDYWxsLAogICB2b2lk
IFVwZGF0ZUhpc3RvZ3JhbXMoKTsKICAgdm9pZCBVcGRhdGVBZ2dyZWdhdGVOZXR3b3JrU3RhdGUo
KTsKIAorICAvLyAgSWYgfG1lZGlhX3RyYW5zcG9ydHwgaXMgbm90IG51bGwsIGl0IHJlZ2lzdGVy
cyB0aGUgcmF0ZSBvYnNlcnZlciBmb3IgdGhlCisgIC8vICBtZWRpYSB0cmFuc3BvcnQuCisgIHZv
aWQgUmVnaXN0ZXJSYXRlT2JzZXJ2ZXIoKSBSVENfTE9DS1NfRVhDTFVERUQodGFyZ2V0X29ic2Vy
dmVyX2NyaXRfKTsKKwogICBDbG9jayogY29uc3QgY2xvY2tfOwogCiAgIGNvbnN0IGludCBudW1f
Y3B1X2NvcmVzXzsKQEAgLTM0Niw3ICszNDYsNiBAQCBjbGFzcyBDYWxsIGZpbmFsIDogcHVibGlj
IHdlYnJ0Yzo6Q2FsbCwKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9yZWNlaXZlZF9y
dHBfYXVkaW9fbXNfOwogICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBmaXJzdF9yZWNlaXZlZF9y
dHBfdmlkZW9fbXNfOwogICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBsYXN0X3JlY2VpdmVkX3J0
cF92aWRlb19tc187Ci0gIFRpbWVJbnRlcnZhbCBzZW50X3J0cF9hdWRpb190aW1lcl9tc187CiAK
ICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gbGFzdF9iYW5kd2lkdGhfYnBzX2NyaXRfOwogICB1aW50
MzJfdCBsYXN0X2JhbmR3aWR0aF9icHNfIFJUQ19HVUFSREVEX0JZKCZsYXN0X2JhbmR3aWR0aF9i
cHNfY3JpdF8pOwpAQCAtMzc0LDYgKzM3MywxNSBAQCBjbGFzcyBDYWxsIGZpbmFsIDogcHVibGlj
IHdlYnJ0Yzo6Q2FsbCwKICAgLy8gRGVjbGFyZWQgbGFzdCBzaW5jZSBpdCB3aWxsIGlzc3VlIGNh
bGxiYWNrcyBmcm9tIGEgdGFzayBxdWV1ZS4gRGVjbGFyaW5nIGl0CiAgIC8vIGxhc3QgZW5zdXJl
cyB0aGF0IGl0IGlzIGRlc3Ryb3llZCBmaXJzdCBhbmQgYW55IHJ1bm5pbmcgdGFza3MgYXJlIGZp
bmlzaGVkLgogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRl
cmZhY2U+IHRyYW5zcG9ydF9zZW5kXzsKKworICAvLyBUaGlzIGlzIGEgcHJlY2F1dGlvbiwgc2lu
Y2UgfE1lZGlhVHJhbnNwb3J0Q2hhbmdlfCBpcyBub3QgZ3VhcmFudGVlZCB0byBiZQorICAvLyBp
bnZva2VkIG9uIGEgcGFydGljdWxhciB0aHJlYWQuCisgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHRh
cmdldF9vYnNlcnZlcl9jcml0XzsKKyAgYm9vbCBpc190YXJnZXRfcmF0ZV9vYnNlcnZlcl9yZWdp
c3RlcmVkXworICAgICAgUlRDX0dVQVJERURfQlkoJnRhcmdldF9vYnNlcnZlcl9jcml0XykgPSBm
YWxzZTsKKyAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydF8KKyAgICAg
IFJUQ19HVUFSREVEX0JZKCZ0YXJnZXRfb2JzZXJ2ZXJfY3JpdF8pID0gbnVsbHB0cjsKKwogICBS
VENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKENhbGwpOwogfTsKIH0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbApAQCAtNDQ0LDcgKzQ1Miw2IEBAIENhbGw6OkNhbGwoY29uc3QgQ2FsbDo6Q29uZmln
JiBjb25maWcsCiAgICAgICB2aWRlb19zZW5kX2RlbGF5X3N0YXRzXyhuZXcgU2VuZERlbGF5U3Rh
dHMoY2xvY2tfKSksCiAgICAgICBzdGFydF9tc18oY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMo
KSkgewogICBSVENfRENIRUNLKGNvbmZpZy5ldmVudF9sb2cgIT0gbnVsbHB0cik7Ci0gIHRyYW5z
cG9ydF9zZW5kLT5SZWdpc3RlclRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKHRoaXMpOwogICB0
cmFuc3BvcnRfc2VuZF8gPSBzdGQ6Om1vdmUodHJhbnNwb3J0X3NlbmQpOwogICB0cmFuc3BvcnRf
c2VuZF9wdHJfID0gdHJhbnNwb3J0X3NlbmRfLmdldCgpOwogCkBAIC00ODYsNiArNDkzLDQzIEBA
IENhbGw6On5DYWxsKCkgewogICBVcGRhdGVIaXN0b2dyYW1zKCk7CiB9CiAKK3ZvaWQgQ2FsbDo6
UmVnaXN0ZXJSYXRlT2JzZXJ2ZXIoKSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnRhcmdldF9v
YnNlcnZlcl9jcml0Xyk7CisKKyAgaWYgKGlzX3RhcmdldF9yYXRlX29ic2VydmVyX3JlZ2lzdGVy
ZWRfKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgaXNfdGFyZ2V0X3JhdGVfb2JzZXJ2ZXJfcmVn
aXN0ZXJlZF8gPSB0cnVlOworCisgIGlmIChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgbWVkaWFf
dHJhbnNwb3J0Xy0+QWRkVGFyZ2V0VHJhbnNmZXJSYXRlT2JzZXJ2ZXIodGhpcyk7CisgIH0gZWxz
ZSB7CisgICAgdHJhbnNwb3J0X3NlbmRfcHRyXy0+UmVnaXN0ZXJUYXJnZXRUcmFuc2ZlclJhdGVP
YnNlcnZlcih0aGlzKTsKKyAgfQorfQorCit2b2lkIENhbGw6Ok1lZGlhVHJhbnNwb3J0Q2hhbmdl
KE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpIHsKKyAgcnRjOjpDcml0
U2NvcGUgbG9jaygmdGFyZ2V0X29ic2VydmVyX2NyaXRfKTsKKworICBpZiAoaXNfdGFyZ2V0X3Jh
dGVfb2JzZXJ2ZXJfcmVnaXN0ZXJlZF8pIHsKKyAgICAvLyBPbmx5IHVzZWQgdG8gdW5yZWdpc3Rl
ciByYXRlIG9ic2VydmVyIGZyb20gbWVkaWEgdHJhbnNwb3J0LiBSZWdpc3RyYXRpb24KKyAgICAv
LyBoYXBwZW5zIHdoZW4gdGhlIHN0cmVhbSBpcyBjcmVhdGVkLgorICAgIGlmICghbWVkaWFfdHJh
bnNwb3J0ICYmIG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICAgIG1lZGlhX3RyYW5zcG9ydF8tPlJl
bW92ZVRhcmdldFRyYW5zZmVyUmF0ZU9ic2VydmVyKHRoaXMpOworICAgICAgbWVkaWFfdHJhbnNw
b3J0XyA9IG51bGxwdHI7CisgICAgICBpc190YXJnZXRfcmF0ZV9vYnNlcnZlcl9yZWdpc3RlcmVk
XyA9IGZhbHNlOworICAgIH0KKyAgfSBlbHNlIGlmIChtZWRpYV90cmFuc3BvcnQpIHsKKyAgICBS
VENfRENIRUNLKG1lZGlhX3RyYW5zcG9ydF8gPT0gbnVsbHB0ciB8fAorICAgICAgICAgICAgICAg
bWVkaWFfdHJhbnNwb3J0XyA9PSBtZWRpYV90cmFuc3BvcnQpCisgICAgICAgIDw8ICJtZWRpYV90
cmFuc3BvcnRfPSIgPDwgKG1lZGlhX3RyYW5zcG9ydF8gIT0gbnVsbHB0cikKKyAgICAgICAgPDwg
IiwgKG1lZGlhX3RyYW5zcG9ydF89PW1lZGlhX3RyYW5zcG9ydCk9IgorICAgICAgICA8PCAobWVk
aWFfdHJhbnNwb3J0XyA9PSBtZWRpYV90cmFuc3BvcnQpOworICAgIG1lZGlhX3RyYW5zcG9ydF8g
PSBtZWRpYV90cmFuc3BvcnQ7CisgIH0KK30KKwogdm9pZCBDYWxsOjpVcGRhdGVIaXN0b2dyYW1z
KCkgewogICBSVENfSElTVE9HUkFNX0NPVU5UU18xMDAwMDAoCiAgICAgICAiV2ViUlRDLkNhbGwu
TGlmZXRpbWVJblNlY29uZHMiLApAQCAtNDk1LDExICs1MzksNiBAQCB2b2lkIENhbGw6OlVwZGF0
ZUhpc3RvZ3JhbXMoKSB7CiB2b2lkIENhbGw6OlVwZGF0ZVNlbmRIaXN0b2dyYW1zKGludDY0X3Qg
Zmlyc3Rfc2VudF9wYWNrZXRfbXMpIHsKICAgaWYgKGZpcnN0X3NlbnRfcGFja2V0X21zID09IC0x
KQogICAgIHJldHVybjsKLSAgaWYgKCFzZW50X3J0cF9hdWRpb190aW1lcl9tc18uRW1wdHkoKSkg
ewotICAgIFJUQ19ISVNUT0dSQU1fQ09VTlRTXzEwMDAwMCgKLSAgICAgICAgIldlYlJUQy5DYWxs
LlRpbWVTZW5kaW5nQXVkaW9SdHBQYWNrZXRzSW5TZWNvbmRzIiwKLSAgICAgICAgc2VudF9ydHBf
YXVkaW9fdGltZXJfbXNfLkxlbmd0aCgpIC8gMTAwMCk7Ci0gIH0KICAgaW50NjRfdCBlbGFwc2Vk
X3NlYyA9CiAgICAgICAoY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSAtIGZpcnN0X3NlbnRf
cGFja2V0X21zKSAvIDEwMDA7CiAgIGlmIChlbGFwc2VkX3NlYyA8IG1ldHJpY3M6OmtNaW5SdW5U
aW1lSW5TZWNvbmRzKQpAQCAtNTc4LDkgKzYxNywxNiBAQCB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVh
bSogQ2FsbDo6Q3JlYXRlQXVkaW9TZW5kU3RyZWFtKAogICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9T
ZW5kU3RyZWFtOjpDb25maWcmIGNvbmZpZykgewogICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJD
YWxsOjpDcmVhdGVBdWRpb1NlbmRTdHJlYW0iKTsKICAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVO
VElBTExZKCZjb25maWd1cmF0aW9uX3NlcXVlbmNlX2NoZWNrZXJfKTsKLSAgZXZlbnRfbG9nXy0+
TG9nKGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnPigKLSAg
ICAgIENyZWF0ZVJ0Y0xvZ1N0cmVhbUNvbmZpZyhjb25maWcpKSk7CiAKKyAgeworICAgIHJ0Yzo6
Q3JpdFNjb3BlIGxvY2soJnRhcmdldF9vYnNlcnZlcl9jcml0Xyk7CisgICAgUlRDX0RDSEVDSyht
ZWRpYV90cmFuc3BvcnRfID09IGNvbmZpZy5tZWRpYV90cmFuc3BvcnQpOworICB9CisKKyAgUmVn
aXN0ZXJSYXRlT2JzZXJ2ZXIoKTsKKworICAvLyBTdHJlYW0gY29uZmlnIGlzIGxvZ2dlZCBpbiBB
dWRpb1NlbmRTdHJlYW06OkNvbmZpZ3VyZVN0cmVhbSwgYXMgaXQgbWF5CisgIC8vIGNoYW5nZSBk
dXJpbmcgdGhlIHN0cmVhbSdzIGxpZmV0aW1lLgogICBhYnNsOjpvcHRpb25hbDxSdHBTdGF0ZT4g
c3VzcGVuZGVkX3J0cF9zdGF0ZTsKICAgewogICAgIGNvbnN0IGF1dG8mIGl0ZXIgPSBzdXNwZW5k
ZWRfYXVkaW9fc2VuZF9zc3Jjc18uZmluZChjb25maWcucnRwLnNzcmMpOwpAQCAtNTk2LDcgKzY0
Miw3IEBAIHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtKiBDYWxsOjpDcmVhdGVBdWRpb1NlbmRTdHJl
YW0oCiAgICAgICBjb25maWcsIGNvbmZpZ18uYXVkaW9fc3RhdGUsIHRyYW5zcG9ydF9zZW5kX3B0
cl8tPkdldFdvcmtlclF1ZXVlKCksCiAgICAgICBtb2R1bGVfcHJvY2Vzc190aHJlYWRfLmdldCgp
LCB0cmFuc3BvcnRfc2VuZF9wdHJfLAogICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfLmdldCgpLCBl
dmVudF9sb2dfLCBjYWxsX3N0YXRzXy5nZXQoKSwKLSAgICAgIHN1c3BlbmRlZF9ydHBfc3RhdGUs
ICZzZW50X3J0cF9hdWRpb190aW1lcl9tc18pOworICAgICAgc3VzcGVuZGVkX3J0cF9zdGF0ZSk7
CiAgIHsKICAgICBXcml0ZUxvY2tTY29wZWQgd3JpdGVfbG9jaygqc2VuZF9jcml0Xyk7CiAgICAg
UlRDX0RDSEVDSyhhdWRpb19zZW5kX3NzcmNzXy5maW5kKGNvbmZpZy5ydHAuc3NyYykgPT0KQEAg
LTcwOCw2ICs3NTQsOCBAQCB3ZWJydGM6OlZpZGVvU2VuZFN0cmVhbSogQ2FsbDo6Q3JlYXRlVmlk
ZW9TZW5kU3RyZWFtKAogICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJDYWxsOjpDcmVhdGVWaWRl
b1NlbmRTdHJlYW0iKTsKICAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZjb25maWd1
cmF0aW9uX3NlcXVlbmNlX2NoZWNrZXJfKTsKIAorICBSZWdpc3RlclJhdGVPYnNlcnZlcigpOwor
CiAgIHZpZGVvX3NlbmRfZGVsYXlfc3RhdHNfLT5BZGRTc3Jjcyhjb25maWcpOwogICBmb3IgKHNp
emVfdCBzc3JjX2luZGV4ID0gMDsgc3NyY19pbmRleCA8IGNvbmZpZy5ydHAuc3NyY3Muc2l6ZSgp
OwogICAgICAgICsrc3NyY19pbmRleCkgewpAQCAtMTA0NCw2ICsxMDkyLDE4IEBAIHZvaWQgQ2Fs
bDo6T25TZW50UGFja2V0KGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgc2VudF9wYWNrZXQpIHsKIH0K
IAogdm9pZCBDYWxsOjpPblRhcmdldFRyYW5zZmVyUmF0ZShUYXJnZXRUcmFuc2ZlclJhdGUgbXNn
KSB7CisgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk3MTkpCisgIC8vIENhbGw6Ok9uVGFyZ2V0
VHJhbnNmZXJSYXRlIHJlcXVpcmVzIHRoYXQgb24gdGFyZ2V0IHRyYW5zZmVyIHJhdGUgaXMgaW52
b2tlZAorICAvLyBmcm9tIHRoZSB3b3JrZXIgcXVldWUgKGJlY2F1c2UgYml0cmF0ZV9hbGxvY2F0
b3JfIHJlcXVpcmVzIGl0KS4gTWVkaWEKKyAgLy8gdHJhbnNwb3J0IGRvZXMgbm90IGd1YXJhbnRl
ZSB0aGUgY2FsbGJhY2sgb24gdGhlIHdvcmtlciBxdWV1ZS4KKyAgLy8gV2hlbiB0aGUgdGhyZWFk
aW5nIG1vZGVsIGZvciBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSBpcyB1cGRhdGUsIHJlY29uc2lk
ZXIKKyAgLy8gY2hhbmdpbmcgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgaWYgKCF0cmFuc3BvcnRf
c2VuZF9wdHJfLT5HZXRXb3JrZXJRdWV1ZSgpLT5Jc0N1cnJlbnQoKSkgeworICAgIHRyYW5zcG9y
dF9zZW5kX3B0cl8tPkdldFdvcmtlclF1ZXVlKCktPlBvc3RUYXNrKAorICAgICAgICBbdGhpcywg
bXNnXSB7IHRoaXMtPk9uVGFyZ2V0VHJhbnNmZXJSYXRlKG1zZyk7IH0pOworICAgIHJldHVybjsK
KyAgfQorCiAgIHVpbnQzMl90IHRhcmdldF9iaXRyYXRlX2JwcyA9IG1zZy50YXJnZXRfcmF0ZS5i
cHMoKTsKICAgaW50IGxvc3NfcmF0aW9fMjU1ID0gbXNnLm5ldHdvcmtfZXN0aW1hdGUubG9zc19y
YXRlX3JhdGlvICogMjU1OwogICB1aW50OF90IGZyYWN0aW9uX2xvc3MgPQpAQCAtMTA1Nyw4ICsx
MTE3LDkgQEAgdm9pZCBDYWxsOjpPblRhcmdldFRyYW5zZmVyUmF0ZShUYXJnZXRUcmFuc2ZlclJh
dGUgbXNnKSB7CiAgIH0KICAgLy8gRm9yIGNvbnRyb2xsaW5nIHRoZSByYXRlIG9mIGZlZWRiYWNr
IG1lc3NhZ2VzLgogICByZWNlaXZlX3NpZGVfY2NfLk9uQml0cmF0ZUNoYW5nZWQodGFyZ2V0X2Jp
dHJhdGVfYnBzKTsKLSAgYml0cmF0ZV9hbGxvY2F0b3JfLT5Pbk5ldHdvcmtDaGFuZ2VkKHRhcmdl
dF9iaXRyYXRlX2JwcywgZnJhY3Rpb25fbG9zcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ0dF9tcywgcHJvYmluZ19pbnRlcnZhbF9tcyk7CisgIGJpdHJhdGVfYWxs
b2NhdG9yXy0+T25OZXR3b3JrQ2hhbmdlZCh0YXJnZXRfYml0cmF0ZV9icHMsIGJhbmR3aWR0aF9i
cHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbl9sb3Nz
LCBydHRfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9iaW5n
X2ludGVydmFsX21zKTsKIAogICAvLyBJZ25vcmUgdXBkYXRlcyBpZiBiaXRyYXRlIGlzIHplcm8g
KHRoZSBhZ2dyZWdhdGUgbmV0d29yayBzdGF0ZSBpcyBkb3duKS4KICAgaWYgKHRhcmdldF9iaXRy
YXRlX2JwcyA9PSAwKSB7CkBAIC0xMjE1LDggKzEyNzYsMTAgQEAgUGFja2V0UmVjZWl2ZXI6OkRl
bGl2ZXJ5U3RhdHVzIENhbGw6OkRlbGl2ZXJSdHAoTWVkaWFUeXBlIG1lZGlhX3R5cGUsCiAKICAg
aWYgKHBhY2tldF90aW1lX3VzICE9IC0xKSB7CiAgICAgaWYgKHJlY2VpdmVfdGltZV9jYWxjdWxh
dG9yXykgeworICAgICAgLy8gUmVwYWlyIHBhY2tldF90aW1lX3VzIGZvciBjbG9jayByZXNldHMg
YnkgY29tcGFyaW5nIGEgbmV3IHJlYWQgb2YKKyAgICAgIC8vIHRoZSBzYW1lIGNsb2NrIChUaW1l
VVRDTWljcm9zKSB0byBhIG1vbm90b25pYyBjbG9jayByZWFkaW5nLgogICAgICAgcGFja2V0X3Rp
bWVfdXMgPSByZWNlaXZlX3RpbWVfY2FsY3VsYXRvcl8tPlJlY29uY2lsZVJlY2VpdmVUaW1lcygK
LSAgICAgICAgICBwYWNrZXRfdGltZV91cywgY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSk7
CisgICAgICAgICAgcGFja2V0X3RpbWVfdXMsIHJ0Yzo6VGltZVVUQ01pY3JvcygpLCBjbG9ja18t
PlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKICAgICB9CiAgICAgcGFyc2VkX3BhY2tldC5zZXRfYXJy
aXZhbF90aW1lX21zKChwYWNrZXRfdGltZV91cyArIDUwMCkgLyAxMDAwKTsKICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvY2FsbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2Fs
bC9jYWxsLmgKaW5kZXggNDE2NzI5NmQ3NTZjNTQ3ZjQzNGVmZDZjNTUzYWU2OTcxNjA5YjNlNC4u
YzBlMzFjMDkwMmIzYzk2ZGNkMDEwN2M3YTgzZThjNWM4ZjZjODE0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsLmgKQEAg
LTI0LDExICsyNCwxMCBAQAogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVy
X3NlbmRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC92aWRlb19yZWNlaXZlX3N0cmVhbS5o
IgogI2luY2x1ZGUgImNhbGwvdmlkZW9fc2VuZF9zdHJlYW0uaCIKLSNpbmNsdWRlICJjb21tb25f
dHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgInJ0Y19iYXNlL2Jp
dHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb3B5b253cml0
ZWJ1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdvcmsvc2VudF9wYWNrZXQuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9uZXR3b3Jrcm91dGUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zb2Nr
ZXQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTU4LDYgKzU3LDExIEBAIGNsYXNzIENh
bGwgewogCiAgIHZpcnR1YWwgQXVkaW9TZW5kU3RyZWFtKiBDcmVhdGVBdWRpb1NlbmRTdHJlYW0o
CiAgICAgICBjb25zdCBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyYgY29uZmlnKSA9IDA7CisKKyAg
Ly8gR2V0cyBjYWxsZWQgd2hlbiBtZWRpYSB0cmFuc3BvcnQgaXMgY3JlYXRlZCBvciByZW1vdmVk
LgorICB2aXJ0dWFsIHZvaWQgTWVkaWFUcmFuc3BvcnRDaGFuZ2UoCisgICAgICBNZWRpYVRyYW5z
cG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZSkgPSAwOworCiAgIHZpcnR1
YWwgdm9pZCBEZXN0cm95QXVkaW9TZW5kU3RyZWFtKEF1ZGlvU2VuZFN0cmVhbSogc2VuZF9zdHJl
YW0pID0gMDsKIAogICB2aXJ0dWFsIEF1ZGlvUmVjZWl2ZVN0cmVhbSogQ3JlYXRlQXVkaW9SZWNl
aXZlU3RyZWFtKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9jYWxsX2NvbmZpZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbF9jb25maWcuY2MKaW5kZXggZDM0MjVhYTU3OTk3YTk2
ZWYyOTcwMmIwOGUxMzBlYzRhMmI5NWE4Yy4uYjE0OWM4ODllYWUwMjhiOWRkMzk4M2M2ZTAzNDkx
NTE2ZjI1ZDY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9jYWxsX2NvbmZpZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxfY29uZmlnLmNjCkBAIC0xMCw2ICsxMCw4IEBA
CiAKICNpbmNsdWRlICJjYWxsL2NhbGxfY29uZmlnLmgiCiAKKyNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIENhbGxDb25maWc6OkNhbGxDb25maWco
UnRjRXZlbnRMb2cqIGV2ZW50X2xvZykgOiBldmVudF9sb2coZXZlbnRfbG9nKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxf
cGVyZl90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvY2FsbF9wZXJmX3Rlc3RzLmNjCmluZGV4IDhmY2Q1NjZmODFhODI0MWRlMGFkMmZhNmIx
YTVmNjRlMjA5NzFhZmIuLjcyYWE3OGM1Zjc3NzBlYWMxMzM0MTYzOTE3ZTJmYzcwY2M5YzBiZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvY2FsbF9wZXJmX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NhbGwvY2FsbF9wZXJmX3Rlc3RzLmNjCkBAIC0xNiw2ICsxNiw3IEBACiAj
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVj
cy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS90ZXN0L3Np
bXVsYXRlZF9uZXR3b3JrLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRy
YXRlX2FsbG9jYXRpb24uaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29k
ZXJfY29uZmlnLmgiCiAjaW5jbHVkZSAiY2FsbC9jYWxsLmgiCkBAIC02NCw3ICs2NSw3IEBAIGNs
YXNzIENhbGxQZXJmVGVzdCA6IHB1YmxpYyB0ZXN0OjpDYWxsVGVzdCB7CiAKICAgdm9pZCBUZXN0
TWluVHJhbnNtaXRCaXRyYXRlKGJvb2wgcGFkX3RvX21pbl9iaXRyYXRlKTsKIAotICB2b2lkIFRl
c3RDYXB0dXJlTnRwVGltZShjb25zdCBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcmIG5l
dF9jb25maWcsCisgIHZvaWQgVGVzdENhcHR1cmVOdHBUaW1lKGNvbnN0IEJ1aWx0SW5OZXR3b3Jr
QmVoYXZpb3JDb25maWcmIG5ldF9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCB0aHJlc2hvbGRfbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydF90aW1l
X21zLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcnVuX3RpbWVfbXMpOwpAQCAtMTUy
LDcgKzE1Myw3IEBAIHZvaWQgQ2FsbFBlcmZUZXN0OjpUZXN0QXVkaW9WaWRlb1N5bmMoRmVjTW9k
ZSBmZWMsCiAgIGNvbnN0IHVpbnQzMl90IGtBdWRpb1NlbmRTc3JjID0gMTIzNDsKICAgY29uc3Qg
dWludDMyX3Qga0F1ZGlvUmVjdlNzcmMgPSA1Njc4OwogCi0gIERlZmF1bHROZXR3b3JrU2ltdWxh
dGlvbkNvbmZpZyBhdWRpb19uZXRfY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29u
ZmlnIGF1ZGlvX25ldF9jb25maWc7CiAgIGF1ZGlvX25ldF9jb25maWcucXVldWVfZGVsYXlfbXMg
PSA1MDA7CiAgIGF1ZGlvX25ldF9jb25maWcubG9zc19wZXJjZW50ID0gNTsKIApAQCAtMjE3LDcg
KzIxOCw3IEBAIHZvaWQgQ2FsbFBlcmZUZXN0OjpUZXN0QXVkaW9WaWRlb1N5bmMoRmVjTW9kZSBm
ZWMsCiAgICAgICAgIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1NlbmRlciwgdmlkZW9fcHRfbWFw
LAogICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAogICAgICAgICAg
ICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVk
TmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVm
YXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSkpOwog
ICAgIHZpZGVvX3NlbmRfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihyZWNlaXZlcl9jYWxsXy0+UmVj
ZWl2ZXIoKSk7CiAKICAgICByZWNlaXZlX3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRl
c3Q6OlBhY2tldFRyYW5zcG9ydD4oCkBAIC0yMjUsMTMgKzIyNiwxNCBAQCB2b2lkIENhbGxQZXJm
VGVzdDo6VGVzdEF1ZGlvVmlkZW9TeW5jKEZlY01vZGUgZmVjLAogICAgICAgICB0ZXN0OjpQYWNr
ZXRUcmFuc3BvcnQ6OmtSZWNlaXZlciwgcGF5bG9hZF90eXBlX21hcF8sCiAgICAgICAgIGFic2w6
Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCiAgICAgICAgICAgICBDbG9jazo6R2V0UmVh
bFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVs
YXRpb25Db25maWcoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSk7CiAgICAgcmVjZWl2ZV90cmFu
c3BvcnQtPlNldFJlY2VpdmVyKHNlbmRlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CiAKICAgICBDcmVh
dGVTZW5kQ29uZmlnKDEsIDAsIDAsIHZpZGVvX3NlbmRfdHJhbnNwb3J0LmdldCgpKTsKICAgICBD
cmVhdGVNYXRjaGluZ1JlY2VpdmVDb25maWdzKHJlY2VpdmVfdHJhbnNwb3J0LmdldCgpKTsKIAot
ICAgIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGF1ZGlvX3NlbmRfY29uZmlnKGF1ZGlvX3NlbmRf
dHJhbnNwb3J0LmdldCgpKTsKKyAgICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBhdWRpb19zZW5k
X2NvbmZpZyhhdWRpb19zZW5kX3RyYW5zcG9ydC5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwog
ICAgIGF1ZGlvX3NlbmRfY29uZmlnLnJ0cC5zc3JjID0ga0F1ZGlvU2VuZFNzcmM7CiAgICAgYXVk
aW9fc2VuZF9jb25maWcuc2VuZF9jb2RlY19zcGVjID0gQXVkaW9TZW5kU3RyZWFtOjpDb25maWc6
OlNlbmRDb2RlY1NwZWMoCiAgICAgICAgIGtBdWRpb1NlbmRQYXlsb2FkVHlwZSwgeyJJU0FDIiwg
MTYwMDAsIDF9KTsKQEAgLTMzNywxNCArMzM5LDE0IEBAIFRFU1RfRihDYWxsUGVyZlRlc3QsIFBs
YXlzT3V0QXVkaW9BbmRWaWRlb0luU3luY1dpdGhWaWRlb0Zhc3RlclRoYW5BdWRpb0RyaWZ0KSB7
CiB9CiAKIHZvaWQgQ2FsbFBlcmZUZXN0OjpUZXN0Q2FwdHVyZU50cFRpbWUoCi0gICAgY29uc3Qg
RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnJiBuZXRfY29uZmlnLAorICAgIGNvbnN0IEJ1
aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcmIG5ldF9jb25maWcsCiAgICAgaW50IHRocmVzaG9s
ZF9tcywKICAgICBpbnQgc3RhcnRfdGltZV9tcywKICAgICBpbnQgcnVuX3RpbWVfbXMpIHsKICAg
Y2xhc3MgQ2FwdHVyZU50cFRpbWVPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJ
bnRlcmZhY2U8VmlkZW9GcmFtZT4gewogICAgcHVibGljOgotICAgIENhcHR1cmVOdHBUaW1lT2Jz
ZXJ2ZXIoY29uc3QgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnJiBuZXRfY29uZmlnLAor
ICAgIENhcHR1cmVOdHBUaW1lT2JzZXJ2ZXIoY29uc3QgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNv
bmZpZyYgbmV0X2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aHJlc2hv
bGRfbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRfdGltZV9tcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBydW5fdGltZV9tcykKQEAgLTQ2MSw3ICs0NjMs
NyBAQCB2b2lkIENhbGxQZXJmVGVzdDo6VGVzdENhcHR1cmVOdHBUaW1lKAogICAgIH0KIAogICAg
IHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfOwotICAgIGNvbnN0IERlZmF1bHROZXR3b3JrU2lt
dWxhdGlvbkNvbmZpZyBuZXRfY29uZmlnXzsKKyAgICBjb25zdCBCdWlsdEluTmV0d29ya0JlaGF2
aW9yQ29uZmlnIG5ldF9jb25maWdfOwogICAgIENsb2NrKiBjb25zdCBjbG9ja187CiAgICAgaW50
IHRocmVzaG9sZF9tc187CiAgICAgaW50IHN0YXJ0X3RpbWVfbXNfOwpAQCAtNDc4LDEwICs0ODAs
MTAgQEAgdm9pZCBDYWxsUGVyZlRlc3Q6OlRlc3RDYXB0dXJlTnRwVGltZSgKICAgUnVuQmFzZVRl
c3QoJnRlc3QpOwogfQogCi0vLyBGbGFreSB0ZXN0cywgZGlzYWJsZWQgb24gTWFjIGR1ZSB0byB3
ZWJydGM6ODI5MS4KLSNpZiAhKGRlZmluZWQoV0VCUlRDX01BQykpCisvLyBGbGFreSB0ZXN0cywg
ZGlzYWJsZWQgb24gTWFjIGFuZCBXaW5kb3dzIGR1ZSB0byB3ZWJydGM6ODI5MS4KKyNpZiAhKGRl
ZmluZWQoV0VCUlRDX01BQykgfHwgZGVmaW5lZChXRUJSVENfV0lOKSkKIFRFU1RfRihDYWxsUGVy
ZlRlc3QsIENhcHR1cmVOdHBUaW1lV2l0aE5ldHdvcmtEZWxheSkgewotICBEZWZhdWx0TmV0d29y
a1NpbXVsYXRpb25Db25maWcgbmV0X2NvbmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNv
bmZpZyBuZXRfY29uZmlnOwogICBuZXRfY29uZmlnLnF1ZXVlX2RlbGF5X21zID0gMTAwOwogICAv
LyBUT0RPKHd1KTogbG93ZXIgdGhlIHRocmVzaG9sZCBhcyB0aGUgY2FsY3VsYXRpb24vZXN0aW1h
dGF0aW9uIGJlY29tZXMgbW9yZQogICAvLyBhY2N1cmF0ZS4KQEAgLTQ5Miw3ICs0OTQsNyBAQCBU
RVNUX0YoQ2FsbFBlcmZUZXN0LCBDYXB0dXJlTnRwVGltZVdpdGhOZXR3b3JrRGVsYXkpIHsKIH0K
IAogVEVTVF9GKENhbGxQZXJmVGVzdCwgQ2FwdHVyZU50cFRpbWVXaXRoTmV0d29ya0ppdHRlcikg
ewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgbmV0X2NvbmZpZzsKKyAgQnVpbHRJ
bk5ldHdvcmtCZWhhdmlvckNvbmZpZyBuZXRfY29uZmlnOwogICBuZXRfY29uZmlnLnF1ZXVlX2Rl
bGF5X21zID0gMTAwOwogICBuZXRfY29uZmlnLmRlbGF5X3N0YW5kYXJkX2RldmlhdGlvbl9tcyA9
IDEwOwogICAvLyBUT0RPKHd1KTogbG93ZXIgdGhlIHRocmVzaG9sZCBhcyB0aGUgY2FsY3VsYXRp
b24vZXN0aW1hdGF0aW9uIGJlY29tZXMgbW9yZQpAQCAtNzI0LDEyICs3MjYsMTMgQEAgVEVTVF9G
KENhbGxQZXJmVGVzdCwgTUFZQkVfS2VlcHNIaWdoQml0cmF0ZVdoZW5SZWNvbmZpZ3VyaW5nU2Vu
ZGVyKSB7CiAgICAgQml0cmF0ZU9ic2VydmVyKCkKICAgICAgICAgOiBFbmRUb0VuZFRlc3Qoa0Rl
ZmF1bHRUaW1lb3V0TXMpLAogICAgICAgICAgIEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGlt
ZUNsb2NrKCkpLAotICAgICAgICAgIHRpbWVfdG9fcmVjb25maWd1cmVfKGZhbHNlLCBmYWxzZSks
CiAgICAgICAgICAgZW5jb2Rlcl9pbml0c18oMCksCiAgICAgICAgICAgbGFzdF9zZXRfYml0cmF0
ZV9rYnBzXygwKSwKICAgICAgICAgICBzZW5kX3N0cmVhbV8obnVsbHB0ciksCiAgICAgICAgICAg
ZnJhbWVfZ2VuZXJhdG9yXyhudWxscHRyKSwKLSAgICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfKHRo
aXMpIHt9CisgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyh0aGlzKSwKKyAgICAgICAgICBiaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5XygKKyAgICAgICAgICAgICAgQ3JlYXRlQnVpbHRpblZpZGVv
Qml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSkge30KIAogICAgIGludDMyX3QgSW5pdEVuY29kZShj
b25zdCBWaWRlb0NvZGVjKiBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
bnVtYmVyX29mX2NvcmVzLApAQCAtNzY3LDggKzc3MCw5IEBAIFRFU1RfRihDYWxsUGVyZlRlc3Qs
IE1BWUJFX0tlZXBzSGlnaEJpdHJhdGVXaGVuUmVjb25maWd1cmluZ1NlbmRlcikgewogICAgICAg
cmV0dXJuIEZha2VFbmNvZGVyOjpTZXRSYXRlQWxsb2NhdGlvbihyYXRlX2FsbG9jYXRpb24sIGZy
YW1lcmF0ZSk7CiAgICAgfQogCi0gICAgdm9pZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6
OkNvbmZpZyogY29uZmlnKSBvdmVycmlkZSB7Ci0gICAgICBjb25maWctPmJpdHJhdGVfY29uZmln
LnN0YXJ0X2JpdHJhdGVfYnBzID0ga0luaXRpYWxCaXRyYXRlS2JwcyAqIDEwMDA7CisgICAgdm9p
ZCBNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKAorICAgICAgICBCaXRyYXRlQ29uc3RyYWludHMq
IGJpdHJhdGVfY29uZmlnKSBvdmVycmlkZSB7CisgICAgICBiaXRyYXRlX2NvbmZpZy0+c3RhcnRf
Yml0cmF0ZV9icHMgPSBrSW5pdGlhbEJpdHJhdGVLYnBzICogMTAwMDsKICAgICB9CiAKICAgICB2
b2lkIE1vZGlmeVZpZGVvQ29uZmlncygKQEAgLTc3Niw2ICs3ODAsOCBAQCBURVNUX0YoQ2FsbFBl
cmZUZXN0LCBNQVlCRV9LZWVwc0hpZ2hCaXRyYXRlV2hlblJlY29uZmlndXJpbmdTZW5kZXIpIHsK
ICAgICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9SZWNlaXZlU3RyZWFtOjpDb25maWc+KiByZWNlaXZl
X2NvbmZpZ3MsCiAgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZyogZW5jb2Rlcl9jb25maWcpIG92
ZXJyaWRlIHsKICAgICAgIHNlbmRfY29uZmlnLT5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJfZmFj
dG9yeSA9ICZlbmNvZGVyX2ZhY3RvcnlfOworICAgICAgc2VuZF9jb25maWctPmVuY29kZXJfc2V0
dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICAgICAgYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeV8uZ2V0KCk7CiAgICAgICBlbmNvZGVyX2NvbmZpZy0+bWF4X2JpdHJhdGVf
YnBzID0gMiAqIGtSZWNvbmZpZ3VyZVRocmVzaG9sZEticHMgKiAxMDAwOwogICAgICAgZW5jb2Rl
cl9jb25maWctPnZpZGVvX3N0cmVhbV9mYWN0b3J5ID0KICAgICAgICAgICBuZXcgcnRjOjpSZWZD
b3VudGVkT2JqZWN0PFZpZGVvU3RyZWFtRmFjdG9yeT4oKTsKQEAgLTgxMSw2ICs4MTcsNyBAQCBU
RVNUX0YoQ2FsbFBlcmZUZXN0LCBNQVlCRV9LZWVwc0hpZ2hCaXRyYXRlV2hlblJlY29uZmlndXJp
bmdTZW5kZXIpIHsKICAgICBWaWRlb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtXzsKICAgICB0ZXN0
OjpGcmFtZUdlbmVyYXRvckNhcHR1cmVyKiBmcmFtZV9nZW5lcmF0b3JfOwogICAgIHRlc3Q6OlZp
ZGVvRW5jb2RlclByb3h5RmFjdG9yeSBlbmNvZGVyX2ZhY3RvcnlfOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PiBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0
b3J5XzsKICAgICBWaWRlb0VuY29kZXJDb25maWcgZW5jb2Rlcl9jb25maWdfOwogICB9IHRlc3Q7
CiAKQEAgLTg2NSw4ICs4NzIsOCBAQCB2b2lkIENhbGxQZXJmVGVzdDo6VGVzdE1pbkF1ZGlvVmlk
ZW9CaXRyYXRlKAogICAgICAgICAgIG1heF9id2VfKG1heF9id2UpIHt9CiAKICAgIHByb3RlY3Rl
ZDoKLSAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgR2V0RmFrZU5ldHdvcmtQaXBl
Q29uZmlnKCkgewotICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIHBpcGVfY29u
ZmlnOworICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgR2V0RmFrZU5ldHdvcmtQaXBl
Q29uZmlnKCkgeworICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBwaXBlX2NvbmZp
ZzsKICAgICAgIHBpcGVfY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IHRlc3RfYml0cmF0ZV9m
cm9tXzsKICAgICAgIHJldHVybiBwaXBlX2NvbmZpZzsKICAgICB9CkBAIC05MDMsNyArOTEwLDcg
QEAgdm9pZCBDYWxsUGVyZlRlc3Q6OlRlc3RNaW5BdWRpb1ZpZGVvQml0cmF0ZSgKICAgICAgICAg
ICAgICAgID8gdGVzdF9iaXRyYXRlIDw9IHRlc3RfYml0cmF0ZV90b18KICAgICAgICAgICAgICAg
IDogdGVzdF9iaXRyYXRlID49IHRlc3RfYml0cmF0ZV90b187CiAgICAgICAgICAgIHRlc3RfYml0
cmF0ZSArPSB0ZXN0X2JpdHJhdGVfc3RlcF8pIHsKLSAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11
bGF0aW9uQ29uZmlnIHBpcGVfY29uZmlnOworICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9y
Q29uZmlnIHBpcGVfY29uZmlnOwogICAgICAgICBwaXBlX2NvbmZpZy5saW5rX2NhcGFjaXR5X2ti
cHMgPSB0ZXN0X2JpdHJhdGU7CiAgICAgICAgIHNlbmRfc2ltdWxhdGVkX25ldHdvcmtfLT5TZXRD
b25maWcocGlwZV9jb25maWcpOwogICAgICAgICByZWNlaXZlX3NpbXVsYXRlZF9uZXR3b3JrXy0+
U2V0Q29uZmlnKHBpcGVfY29uZmlnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbF91bml0dGVzdC5jYwppbmRl
eCA4YWUwNDAwOGY5Y2EzYmE4NGMyOTczZmYyY2FkYjEzMDFiYjE4YjY0Li43NzBmMjU1MzEzY2Mx
ZDQ3Yjg5ODljNDNjMzEwMDg2MDVlMjBlMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsX3VuaXR0ZXN0
LmNjCkBAIC0xNSw2ICsxNSw3IEBACiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvZmFrZV9tZWRpYV90cmFuc3BvcnQuaCIKICNpbmNsdWRl
ICJhcGkvdGVzdC9tb2NrX2F1ZGlvX21peGVyLmgiCiAjaW5jbHVkZSAiYXVkaW8vYXVkaW9fcmVj
ZWl2ZV9zdHJlYW0uaCIKICNpbmNsdWRlICJhdWRpby9hdWRpb19zZW5kX3N0cmVhbS5oIgpAQCAt
NjIsNyArNjMsOCBAQCBURVNUKENhbGxUZXN0LCBDb25zdHJ1Y3REZXN0cnVjdCkgewogCiBURVNU
KENhbGxUZXN0LCBDcmVhdGVEZXN0cm95X0F1ZGlvU2VuZFN0cmVhbSkgewogICBDYWxsSGVscGVy
IGNhbGw7Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGNvbmZpZyhudWxscHRyKTsKKyAgQXVk
aW9TZW5kU3RyZWFtOjpDb25maWcgY29uZmlnKC8qc2VuZF90cmFuc3BvcnQ9Ki9udWxscHRyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxs
cHRyKTsKICAgY29uZmlnLnJ0cC5zc3JjID0gNDI7CiAgIEF1ZGlvU2VuZFN0cmVhbSogc3RyZWFt
ID0gY2FsbC0+Q3JlYXRlQXVkaW9TZW5kU3RyZWFtKGNvbmZpZyk7CiAgIEVYUEVDVF9ORShzdHJl
YW0sIG51bGxwdHIpOwpAQCAtODQsNyArODYsOCBAQCBURVNUKENhbGxUZXN0LCBDcmVhdGVEZXN0
cm95X0F1ZGlvUmVjZWl2ZVN0cmVhbSkgewogCiBURVNUKENhbGxUZXN0LCBDcmVhdGVEZXN0cm95
X0F1ZGlvU2VuZFN0cmVhbXMpIHsKICAgQ2FsbEhlbHBlciBjYWxsOwotICBBdWRpb1NlbmRTdHJl
YW06OkNvbmZpZyBjb25maWcobnVsbHB0cik7CisgIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGNv
bmZpZygvKnNlbmRfdHJhbnNwb3J0PSovbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgIHN0ZDo6bGlzdDxBdWRp
b1NlbmRTdHJlYW0qPiBzdHJlYW1zOwogICBmb3IgKGludCBpID0gMDsgaSA8IDI7ICsraSkgewog
ICAgIGZvciAodWludDMyX3Qgc3NyYyA9IDA7IHNzcmMgPCAxMjM0NTY3OyBzc3JjICs9IDM0NTY3
KSB7CkBAIC0xNDIsNyArMTQ1LDggQEAgVEVTVChDYWxsVGVzdCwgQ3JlYXRlRGVzdHJveV9Bc3Nv
Y2lhdGVBdWRpb1NlbmRSZWNlaXZlU3RyZWFtc19SZWN2Rmlyc3QpIHsKICAgQXVkaW9SZWNlaXZl
U3RyZWFtKiByZWN2X3N0cmVhbSA9IGNhbGwtPkNyZWF0ZUF1ZGlvUmVjZWl2ZVN0cmVhbShyZWN2
X2NvbmZpZyk7CiAgIEVYUEVDVF9ORShyZWN2X3N0cmVhbSwgbnVsbHB0cik7CiAKLSAgQXVkaW9T
ZW5kU3RyZWFtOjpDb25maWcgc2VuZF9jb25maWcobnVsbHB0cik7CisgIEF1ZGlvU2VuZFN0cmVh
bTo6Q29uZmlnIHNlbmRfY29uZmlnKC8qc2VuZF90cmFuc3BvcnQ9Ki9udWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxw
dHIpOwogICBzZW5kX2NvbmZpZy5ydHAuc3NyYyA9IDc3NzsKICAgQXVkaW9TZW5kU3RyZWFtKiBz
ZW5kX3N0cmVhbSA9IGNhbGwtPkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbShzZW5kX2NvbmZpZyk7CiAg
IEVYUEVDVF9ORShzZW5kX3N0cmVhbSwgbnVsbHB0cik7CkBAIC0xNjAsNyArMTY0LDggQEAgVEVT
VChDYWxsVGVzdCwgQ3JlYXRlRGVzdHJveV9Bc3NvY2lhdGVBdWRpb1NlbmRSZWNlaXZlU3RyZWFt
c19SZWN2Rmlyc3QpIHsKIAogVEVTVChDYWxsVGVzdCwgQ3JlYXRlRGVzdHJveV9Bc3NvY2lhdGVB
dWRpb1NlbmRSZWNlaXZlU3RyZWFtc19TZW5kRmlyc3QpIHsKICAgQ2FsbEhlbHBlciBjYWxsOwot
ICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBzZW5kX2NvbmZpZyhudWxscHRyKTsKKyAgQXVkaW9T
ZW5kU3RyZWFtOjpDb25maWcgc2VuZF9jb25maWcoLypzZW5kX3RyYW5zcG9ydD0qL251bGxwdHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0
PSovbnVsbHB0cik7CiAgIHNlbmRfY29uZmlnLnJ0cC5zc3JjID0gNzc3OwogICBBdWRpb1NlbmRT
dHJlYW0qIHNlbmRfc3RyZWFtID0gY2FsbC0+Q3JlYXRlQXVkaW9TZW5kU3RyZWFtKHNlbmRfY29u
ZmlnKTsKICAgRVhQRUNUX05FKHNlbmRfc3RyZWFtLCBudWxscHRyKTsKQEAgLTI2Myw3ICsyNjgs
OCBAQCBURVNUKENhbGxUZXN0LCBSZWNyZWF0aW5nQXVkaW9TdHJlYW1XaXRoU2FtZVNzcmNSZXVz
ZXNSdHBTdGF0ZSkgewogICBDYWxsSGVscGVyIGNhbGw7CiAKICAgYXV0byBjcmVhdGVfc3RyZWFt
X2FuZF9nZXRfcnRwX3N0YXRlID0gWyZdKHVpbnQzMl90IHNzcmMpIHsKLSAgICBBdWRpb1NlbmRT
dHJlYW06OkNvbmZpZyBjb25maWcobnVsbHB0cik7CisgICAgQXVkaW9TZW5kU3RyZWFtOjpDb25m
aWcgY29uZmlnKC8qc2VuZF90cmFuc3BvcnQ9Ki9udWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogICAgIGNvbmZp
Zy5ydHAuc3NyYyA9IHNzcmM7CiAgICAgQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0gPSBjYWxsLT5D
cmVhdGVBdWRpb1NlbmRTdHJlYW0oY29uZmlnKTsKICAgICBjb25zdCBSdHBTdGF0ZSBydHBfc3Rh
dGUgPQpAQCAtMjg0LDQgKzI5MCwyNyBAQCBURVNUKENhbGxUZXN0LCBSZWNyZWF0aW5nQXVkaW9T
dHJlYW1XaXRoU2FtZVNzcmNSZXVzZXNSdHBTdGF0ZSkgewogICBFWFBFQ1RfRVEocnRwX3N0YXRl
MS5tZWRpYV9oYXNfYmVlbl9zZW50LCBydHBfc3RhdGUyLm1lZGlhX2hhc19iZWVuX3NlbnQpOwog
fQogCitURVNUKENhbGxUZXN0LCBSZWdpc3Rlck1lZGlhVHJhbnNwb3J0Qml0cmF0ZUNhbGxiYWNr
c0luQ3JlYXRlU3RyZWFtKSB7CisgIENhbGxIZWxwZXIgY2FsbDsKKyAgTWVkaWFUcmFuc3BvcnRT
ZXR0aW5ncyBzZXR0aW5nczsKKyAgd2VicnRjOjpGYWtlTWVkaWFUcmFuc3BvcnQgZmFrZV9tZWRp
YV90cmFuc3BvcnQoc2V0dGluZ3MpOworCisgIEVYUEVDVF9FUSgwLCBmYWtlX21lZGlhX3RyYW5z
cG9ydC50YXJnZXRfcmF0ZV9vYnNlcnZlcnNfc2l6ZSgpKTsKKyAgQXVkaW9TZW5kU3RyZWFtOjpD
b25maWcgY29uZmlnKC8qc2VuZF90cmFuc3BvcnQ9Ki9udWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnQ9Ki8mZmFrZV9tZWRpYV90cmFuc3Bv
cnQpOworCisgIGNhbGwtPk1lZGlhVHJhbnNwb3J0Q2hhbmdlKCZmYWtlX21lZGlhX3RyYW5zcG9y
dCk7CisgIEF1ZGlvU2VuZFN0cmVhbSogc3RyZWFtID0gY2FsbC0+Q3JlYXRlQXVkaW9TZW5kU3Ry
ZWFtKGNvbmZpZyk7CisKKyAgLy8gV2UgZ2V0IDIgc3Vic2NyaWJlcnM6IG9uZSBzdWJzY3JpYmVy
IGZyb20gY2FsbC5jYywgYW5kIG9uZSBmcm9tCisgIC8vIENoYW5uZWxTZW5kLgorICBFWFBFQ1Rf
RVEoMiwgZmFrZV9tZWRpYV90cmFuc3BvcnQudGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzX3NpemUoKSk7
CisKKyAgY2FsbC0+RGVzdHJveUF1ZGlvU2VuZFN0cmVhbShzdHJlYW0pOworICBFWFBFQ1RfRVEo
MSwgZmFrZV9tZWRpYV90cmFuc3BvcnQudGFyZ2V0X3JhdGVfb2JzZXJ2ZXJzX3NpemUoKSk7CisK
KyAgY2FsbC0+TWVkaWFUcmFuc3BvcnRDaGFuZ2UobnVsbHB0cik7CisgIEVYUEVDVF9FUSgwLCBm
YWtlX21lZGlhX3RyYW5zcG9ydC50YXJnZXRfcmF0ZV9vYnNlcnZlcnNfc2l6ZSgpKTsKK30KKwog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvY2FsbGZhY3RvcnkuY2MKaW5kZXggZmE3
ZDBmYWM2Njk2Mzc2Y2RjYzM5Y2U5ZWFmZDc5MWFhNGY1ZWYxNi4uYWIwNTdiZTAyOGJiNWZjNGZl
YTdjYjM2ODBmYzQxYTIzZTM1ODQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9jYWxsZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2NhbGxmYWN0b3J5LmNjCkBAIC0z
MCw3ICszMCw3IEBAIGJvb2wgUGFyc2VDb25maWdQYXJhbShzdGQ6OnN0cmluZyBleHBfbmFtZSwg
aW50KiBmaWVsZCkgewogICByZXR1cm4gKHNzY2FuZihncm91cC5jX3N0cigpLCAiJWQiLCBmaWVs
ZCkgPT0gMSk7CiB9CiAKLWFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6RGVmYXVsdE5ldHdvcmtTaW11
bGF0aW9uQ29uZmlnPiBQYXJzZURlZ3JhZGF0aW9uQ29uZmlnKAorYWJzbDo6b3B0aW9uYWw8d2Vi
cnRjOjpCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnPiBQYXJzZURlZ3JhZGF0aW9uQ29uZmln
KAogICAgIGJvb2wgc2VuZCkgewogICBzdGQ6OnN0cmluZyBleHBfcHJlZml4ID0gIldlYlJUQ0Zh
a2VOZXR3b3JrIjsKICAgaWYgKHNlbmQpIHsKQEAgLTM5LDcgKzM5LDcgQEAgYWJzbDo6b3B0aW9u
YWw8d2VicnRjOjpEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc+IFBhcnNlRGVncmFkYXRp
b25Db25maWcoCiAgICAgZXhwX3ByZWZpeCArPSAiUmVjZWl2ZSI7CiAgIH0KIAotICB3ZWJydGM6
OkRlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgIHdlYnJ0Yzo6QnVpbHRJ
bk5ldHdvcmtCZWhhdmlvckNvbmZpZyBjb25maWc7CiAgIGJvb2wgY29uZmlndXJlZCA9IGZhbHNl
OwogICBjb25maWd1cmVkIHw9CiAgICAgICBQYXJzZUNvbmZpZ1BhcmFtKGV4cF9wcmVmaXggKyAi
RGVsYXlNcyIsICZjb25maWcucXVldWVfZGVsYXlfbXMpOwpAQCAtNjMsMTUgKzYzLDE1IEBAIGFi
c2w6Om9wdGlvbmFsPHdlYnJ0Yzo6RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnPiBQYXJz
ZURlZ3JhZGF0aW9uQ29uZmlnKAogICBjb25maWd1cmVkIHw9IFBhcnNlQ29uZmlnUGFyYW0oZXhw
X3ByZWZpeCArICJBdmdCdXJzdExvc3NMZW5ndGgiLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmNvbmZpZy5hdmdfYnVyc3RfbG9zc19sZW5ndGgpOwogICByZXR1cm4gY29uZmln
dXJlZAotICAgICAgICAgICAgID8gYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpEZWZhdWx0TmV0d29y
a1NpbXVsYXRpb25Db25maWc+KGNvbmZpZykKKyAgICAgICAgICAgICA/IGFic2w6Om9wdGlvbmFs
PHdlYnJ0Yzo6QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZz4oY29uZmlnKQogICAgICAgICAg
ICAgIDogYWJzbDo6bnVsbG9wdDsKIH0KIH0gIC8vIG5hbWVzcGFjZQogCiBDYWxsKiBDYWxsRmFj
dG9yeTo6Q3JlYXRlQ2FsbChjb25zdCBDYWxsOjpDb25maWcmIGNvbmZpZykgewotICBhYnNsOjpv
cHRpb25hbDx3ZWJydGM6OkRlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZz4KLSAgICAgIHNl
bmRfZGVncmFkYXRpb25fY29uZmlnID0gUGFyc2VEZWdyYWRhdGlvbkNvbmZpZyh0cnVlKTsKLSAg
YWJzbDo6b3B0aW9uYWw8d2VicnRjOjpEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc+Cisg
IGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZz4gc2Vu
ZF9kZWdyYWRhdGlvbl9jb25maWcgPQorICAgICAgUGFyc2VEZWdyYWRhdGlvbkNvbmZpZyh0cnVl
KTsKKyAgYWJzbDo6b3B0aW9uYWw8d2VicnRjOjpCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmln
PgogICAgICAgcmVjZWl2ZV9kZWdyYWRhdGlvbl9jb25maWcgPSBQYXJzZURlZ3JhZGF0aW9uQ29u
ZmlnKGZhbHNlKTsKIAogICBpZiAoc2VuZF9kZWdyYWRhdGlvbl9jb25maWcgfHwgcmVjZWl2ZV9k
ZWdyYWRhdGlvbl9jb25maWcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZGVncmFkZWRfY2FsbC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZGVncmFkZWRfY2FsbC5jYwppbmRleCA4
MTgxMzEwZTc4Y2NiY2I3NzUyZTI5ZmEzMmU0MzFmMDFkNTQwMDUwLi5hN2VmNDFkNDkwNTc5ZDI3
NTgxZjZlNzU1NmMyOWEzYTYzMjdjYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2RlZ3JhZGVkX2NhbGwuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9kZWdyYWRlZF9jYWxsLmNj
CkBAIC0xNyw4ICsxNyw4IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIERlZ3JhZGVkQ2FsbDo6RGVn
cmFkZWRDYWxsKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsPiBjYWxsLAotICAgIGFic2w6Om9w
dGlvbmFsPERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZz4gc2VuZF9jb25maWcsCi0gICAg
YWJzbDo6b3B0aW9uYWw8RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnPiByZWNlaXZlX2Nv
bmZpZykKKyAgICBhYnNsOjpvcHRpb25hbDxCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnPiBz
ZW5kX2NvbmZpZywKKyAgICBhYnNsOjpvcHRpb25hbDxCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29u
ZmlnPiByZWNlaXZlX2NvbmZpZykKICAgICA6IGNsb2NrXyhDbG9jazo6R2V0UmVhbFRpbWVDbG9j
aygpKSwKICAgICAgIGNhbGxfKHN0ZDo6bW92ZShjYWxsKSksCiAgICAgICBzZW5kX2NvbmZpZ18o
c2VuZF9jb25maWcpLApAQCAtMTgzLDYgKzE4Myw4IEBAIGJvb2wgRGVncmFkZWRDYWxsOjpTZW5k
UnRwKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwKICAgICBydGM6OlNlbnRQYWNrZXQgc2VudF9wYWNr
ZXQ7CiAgICAgc2VudF9wYWNrZXQucGFja2V0X2lkID0gb3B0aW9ucy5wYWNrZXRfaWQ7CiAgICAg
c2VudF9wYWNrZXQuc2VuZF90aW1lX21zID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKTsK
KyAgICBzZW50X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2ZlZWRiYWNrID0gb3B0aW9ucy5pbmNs
dWRlZF9pbl9mZWVkYmFjazsKKyAgICBzZW50X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2FsbG9j
YXRpb24gPSBvcHRpb25zLmluY2x1ZGVkX2luX2FsbG9jYXRpb247CiAgICAgc2VudF9wYWNrZXQu
aW5mby5wYWNrZXRfc2l6ZV9ieXRlcyA9IGxlbmd0aDsKICAgICBzZW50X3BhY2tldC5pbmZvLnBh
Y2tldF90eXBlID0gcnRjOjpQYWNrZXRUeXBlOjprRGF0YTsKICAgICBjYWxsXy0+T25TZW50UGFj
a2V0KHNlbnRfcGFja2V0KTsKQEAgLTIxMyw0ICsyMTUsMTAgQEAgUGFja2V0UmVjZWl2ZXI6OkRl
bGl2ZXJ5U3RhdHVzIERlZ3JhZGVkQ2FsbDo6RGVsaXZlclBhY2tldCgKICAgcmV0dXJuIHN0YXR1
czsKIH0KIAordm9pZCBEZWdyYWRlZENhbGw6Ok1lZGlhVHJhbnNwb3J0Q2hhbmdlKAorICAgIE1l
ZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpIHsKKyAgLy8gVE9ETyhidWdz
LndlYnJ0Yy5vcmcvOTcxOSkgV2Ugc2hvdWxkIGFkZCBzdXBwb3J0IGZvciBtZWRpYSB0cmFuc3Bv
cnQgaGVyZQorICAvLyBhdCBzb21lIHBvaW50LgorfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL2RlZ3JhZGVkX2NhbGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvZGVncmFkZWRfY2FsbC5oCmluZGV4IDNjMGI4MGRmODZhZDM1YWU5ZDIyZmEy
Mzk0MTdhZjNiZjlkNjk5NzYuLmQ3OGIxZDEwMjZjZmU4YjFlMTY1OGRiOThjNDc0Mjk5MzZlMjM4
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvZGVncmFkZWRfY2FsbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NhbGwvZGVncmFkZWRfY2FsbC5oCkBAIC0yOCw4ICsyOCw4IEBAIGNsYXNz
IERlZ3JhZGVkQ2FsbCA6IHB1YmxpYyBDYWxsLCBwcml2YXRlIFRyYW5zcG9ydCwgcHJpdmF0ZSBQ
YWNrZXRSZWNlaXZlciB7CiAgcHVibGljOgogICBleHBsaWNpdCBEZWdyYWRlZENhbGwoCiAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbD4gY2FsbCwKLSAgICAgIGFic2w6Om9wdGlvbmFsPERlZmF1
bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZz4gc2VuZF9jb25maWcsCi0gICAgICBhYnNsOjpvcHRp
b25hbDxEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc+IHJlY2VpdmVfY29uZmlnKTsKKyAg
ICAgIGFic2w6Om9wdGlvbmFsPEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWc+IHNlbmRfY29u
ZmlnLAorICAgICAgYWJzbDo6b3B0aW9uYWw8QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZz4g
cmVjZWl2ZV9jb25maWcpOwogICB+RGVncmFkZWRDYWxsKCkgb3ZlcnJpZGU7CiAKICAgLy8gSW1w
bGVtZW50cyBDYWxsLgpAQCAtOTEsMTMgKzkxLDE0IEBAIGNsYXNzIERlZ3JhZGVkQ2FsbCA6IHB1
YmxpYyBDYWxsLCBwcml2YXRlIFRyYW5zcG9ydCwgcHJpdmF0ZSBQYWNrZXRSZWNlaXZlciB7CiAg
IENsb2NrKiBjb25zdCBjbG9ja187CiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDYWxsPiBjYWxs
XzsKIAotICBjb25zdCBhYnNsOjpvcHRpb25hbDxEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25m
aWc+IHNlbmRfY29uZmlnXzsKKyAgdm9pZCBNZWRpYVRyYW5zcG9ydENoYW5nZShNZWRpYVRyYW5z
cG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KSBvdmVycmlkZTsKKyAgY29uc3QgYWJzbDo6
b3B0aW9uYWw8QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZz4gc2VuZF9jb25maWdfOwogICBj
b25zdCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1RocmVhZD4gc2VuZF9wcm9jZXNzX3RocmVhZF87
CiAgIFNpbXVsYXRlZE5ldHdvcmsqIHNlbmRfc2ltdWxhdGVkX25ldHdvcmtfOwogICBzdGQ6OnVu
aXF1ZV9wdHI8RmFrZU5ldHdvcmtQaXBlPiBzZW5kX3BpcGVfOwogICBzaXplX3QgbnVtX3NlbmRf
c3RyZWFtc187CiAKLSAgY29uc3QgYWJzbDo6b3B0aW9uYWw8RGVmYXVsdE5ldHdvcmtTaW11bGF0
aW9uQ29uZmlnPiByZWNlaXZlX2NvbmZpZ187CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPEJ1aWx0
SW5OZXR3b3JrQmVoYXZpb3JDb25maWc+IHJlY2VpdmVfY29uZmlnXzsKICAgU2ltdWxhdGVkTmV0
d29yayogcmVjZWl2ZV9zaW11bGF0ZWRfbmV0d29ya187CiAgIHN0ZDo6dW5pcXVlX3B0cjxGYWtl
TmV0d29ya1BpcGU+IHJlY2VpdmVfcGlwZV87CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZmFrZV9uZXR3
b3JrX3BpcGUuY2MKaW5kZXggZTcwMmMxYjZmNWM3ZWY4YjczODVjYWNkZGQwYzk0ODFkMjRhMDcx
Ny4uM2JkMmU4ZjQ4YjE2YTIyYzYxNDNmNWI2NzZlZDhlZjkyYjliOGQ0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mYWtlX25ldHdv
cmtfcGlwZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL2Zha2VfbmV0d29ya19waXBlLmNjCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAi
Y2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oIgogI2luY2x1
ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3V0aWxpdHkv
aW5jbHVkZS9wcm9jZXNzX3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
ICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCkBAIC05MCw3ICs5
MSw2IEBAIEZha2VOZXR3b3JrUGlwZTo6RmFrZU5ldHdvcmtQaXBlKAogICAgICAgZHJvcHBlZF9w
YWNrZXRzXygwKSwKICAgICAgIHNlbnRfcGFja2V0c18oMCksCiAgICAgICB0b3RhbF9wYWNrZXRf
ZGVsYXlfdXNfKDApLAotICAgICAgbmV4dF9wcm9jZXNzX3RpbWVfdXNfKGNsb2NrXy0+VGltZUlu
TWljcm9zZWNvbmRzKCkpLAogICAgICAgbGFzdF9sb2dfdGltZV91c18oY2xvY2tfLT5UaW1lSW5N
aWNyb3NlY29uZHMoKSkge30KIAogRmFrZU5ldHdvcmtQaXBlOjpGYWtlTmV0d29ya1BpcGUoCkBA
IC0xMDUsNyArMTA1LDYgQEAgRmFrZU5ldHdvcmtQaXBlOjpGYWtlTmV0d29ya1BpcGUoCiAgICAg
ICBkcm9wcGVkX3BhY2tldHNfKDApLAogICAgICAgc2VudF9wYWNrZXRzXygwKSwKICAgICAgIHRv
dGFsX3BhY2tldF9kZWxheV91c18oMCksCi0gICAgICBuZXh0X3Byb2Nlc3NfdGltZV91c18oY2xv
Y2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKSksCiAgICAgICBsYXN0X2xvZ190aW1lX3VzXyhjbG9j
a18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSB7fQogCiBGYWtlTmV0d29ya1BpcGU6On5GYWtlTmV0
d29ya1BpcGUoKSA9IGRlZmF1bHQ7CkBAIC0xNTQsOCArMTUzLDggQEAgYm9vbCBGYWtlTmV0d29y
a1BpcGU6OkVucXVldWVQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3J0Y3AsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVR5cGUgbWVkaWFfdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IHBhY2tl
dF90aW1lX3VzKSB7Ci0gIGludDY0X3QgdGltZV9ub3dfdXMgPSBjbG9ja18tPlRpbWVJbk1pY3Jv
c2Vjb25kcygpOwogICBydGM6OkNyaXRTY29wZSBjcml0KCZwcm9jZXNzX2xvY2tfKTsKKyAgaW50
NjRfdCB0aW1lX25vd191cyA9IGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCk7CiAgIHNpemVf
dCBwYWNrZXRfc2l6ZSA9IHBhY2tldC5zaXplKCk7CiAgIE5ldHdvcmtQYWNrZXQgbmV0X3BhY2tl
dChzdGQ6Om1vdmUocGFja2V0KSwgdGltZV9ub3dfdXMsIHRpbWVfbm93X3VzLCBvcHRpb25zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfcnRjcCwgbWVkaWFfdHlwZSwgcGFja2V0X3Rp
bWVfdXMpOwpAQCAtMTY5LDYgKzE2OCwxMiBAQCBib29sIEZha2VOZXR3b3JrUGlwZTo6RW5xdWV1
ZVBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwKICAgICBwYWNrZXRzX2luX2Zs
aWdodF8ucG9wX2JhY2soKTsKICAgICArK2Ryb3BwZWRfcGFja2V0c187CiAgIH0KKyAgaWYgKG5l
dHdvcmtfYmVoYXZpb3JfLT5OZXh0RGVsaXZlcnlUaW1lVXMoKSkgeworICAgIHJ0Yzo6Q3JpdFNj
b3BlIGNyaXQoJnByb2Nlc3NfdGhyZWFkX2xvY2tfKTsKKyAgICBpZiAocHJvY2Vzc190aHJlYWRf
KQorICAgICAgcHJvY2Vzc190aHJlYWRfLT5XYWtlVXAobnVsbHB0cik7CisgIH0KKwogICByZXR1
cm4gc2VudDsKIH0KIApAQCAtMjAxLDEwICsyMDYsMTEgQEAgc2l6ZV90IEZha2VOZXR3b3JrUGlw
ZTo6U2VudFBhY2tldHMoKSB7CiB9CiAKIHZvaWQgRmFrZU5ldHdvcmtQaXBlOjpQcm9jZXNzKCkg
ewotICBpbnQ2NF90IHRpbWVfbm93X3VzID0gY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsK
KyAgaW50NjRfdCB0aW1lX25vd191czsKICAgc3RkOjpxdWV1ZTxOZXR3b3JrUGFja2V0PiBwYWNr
ZXRzX3RvX2RlbGl2ZXI7CiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBjcml0KCZwcm9jZXNzX2xv
Y2tfKTsKKyAgICB0aW1lX25vd191cyA9IGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCk7CiAg
ICAgaWYgKHRpbWVfbm93X3VzIC0gbGFzdF9sb2dfdGltZV91c18gPiBrTG9nSW50ZXJ2YWxNcyAq
IDEwMDApIHsKICAgICAgIGludDY0X3QgcXVldWVpbmdfZGVsYXlfdXMgPSAwOwogICAgICAgaWYg
KCFwYWNrZXRzX2luX2ZsaWdodF8uZW1wdHkoKSkKQEAgLTI1MCw5ICsyNTYsMTEgQEAgdm9pZCBG
YWtlTmV0d29ya1BpcGU6OlByb2Nlc3MoKSB7CiAgICAgICAgIC8vIGFycml2ZWQsIGR1ZSB0byBO
ZXR3b3JrUHJvY2VzcyBiZWluZyBjYWxsZWQgdG9vIGxhdGUuIEZvciBzdGF0cywgdXNlCiAgICAg
ICAgIC8vIHRoZSB0aW1lIGl0IHNob3VsZCBoYXZlIGJlZW4gb24gdGhlIGxpbmsuCiAgICAgICAg
IHRvdGFsX3BhY2tldF9kZWxheV91c18gKz0gYWRkZWRfZGVsYXlfdXM7CisgICAgICAgICsrc2Vu
dF9wYWNrZXRzXzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICsrZHJvcHBlZF9wYWNrZXRzXzsK
ICAgICAgIH0KICAgICB9Ci0gICAgc2VudF9wYWNrZXRzXyArPSBwYWNrZXRzX3RvX2RlbGl2ZXIu
c2l6ZSgpOwogICB9CiAKICAgcnRjOjpDcml0U2NvcGUgY3JpdCgmY29uZmlnX2xvY2tfKTsKQEAg
LTI2MSwxMCArMjY5LDYgQEAgdm9pZCBGYWtlTmV0d29ya1BpcGU6OlByb2Nlc3MoKSB7CiAgICAg
cGFja2V0c190b19kZWxpdmVyLnBvcCgpOwogICAgIERlbGl2ZXJOZXR3b3JrUGFja2V0KCZwYWNr
ZXQpOwogICB9Ci0gIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGRlbGl2ZXJ5X3VzID0gbmV0d29y
a19iZWhhdmlvcl8tPk5leHREZWxpdmVyeVRpbWVVcygpOwotICBuZXh0X3Byb2Nlc3NfdGltZV91
c18gPSBkZWxpdmVyeV91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAqZGVsaXZl
cnlfdXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGltZV9ub3dfdXMgKyBrRGVm
YXVsdFByb2Nlc3NJbnRlcnZhbE1zICogMTAwMDsKIH0KIAogdm9pZCBGYWtlTmV0d29ya1BpcGU6
OkRlbGl2ZXJOZXR3b3JrUGFja2V0KE5ldHdvcmtQYWNrZXQqIHBhY2tldCkgewpAQCAtMjkxLDgg
KzI5NSwxNyBAQCB2b2lkIEZha2VOZXR3b3JrUGlwZTo6RGVsaXZlck5ldHdvcmtQYWNrZXQoTmV0
d29ya1BhY2tldCogcGFja2V0KSB7CiAKIGludDY0X3QgRmFrZU5ldHdvcmtQaXBlOjpUaW1lVW50
aWxOZXh0UHJvY2VzcygpIHsKICAgcnRjOjpDcml0U2NvcGUgY3JpdCgmcHJvY2Vzc19sb2NrXyk7
Ci0gIGludDY0X3QgZGVsYXlfdXMgPSBuZXh0X3Byb2Nlc3NfdGltZV91c18gLSBjbG9ja18tPlRp
bWVJbk1pY3Jvc2Vjb25kcygpOwotICByZXR1cm4gc3RkOjptYXg8aW50NjRfdD4oKGRlbGF5X3Vz
ICsgNTAwKSAvIDEwMDAsIDApOworICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBkZWxpdmVyeV91
cyA9IG5ldHdvcmtfYmVoYXZpb3JfLT5OZXh0RGVsaXZlcnlUaW1lVXMoKTsKKyAgaWYgKGRlbGl2
ZXJ5X3VzKSB7CisgICAgaW50NjRfdCBkZWxheV91cyA9ICpkZWxpdmVyeV91cyAtIGNsb2NrXy0+
VGltZUluTWljcm9zZWNvbmRzKCk7CisgICAgcmV0dXJuIHN0ZDo6bWF4PGludDY0X3Q+KChkZWxh
eV91cyArIDUwMCkgLyAxMDAwLCAwKTsKKyAgfQorICByZXR1cm4ga0RlZmF1bHRQcm9jZXNzSW50
ZXJ2YWxNczsKK30KKwordm9pZCBGYWtlTmV0d29ya1BpcGU6OlByb2Nlc3NUaHJlYWRBdHRhY2hl
ZChQcm9jZXNzVGhyZWFkKiBwcm9jZXNzX3RocmVhZCkgeworICBydGM6OkNyaXRTY29wZSBjcygm
cHJvY2Vzc190aHJlYWRfbG9ja18pOworICBwcm9jZXNzX3RocmVhZF8gPSBwcm9jZXNzX3RocmVh
ZDsKIH0KIAogYm9vbCBGYWtlTmV0d29ya1BpcGU6Okhhc1RyYW5zcG9ydCgpIGNvbnN0IHsKQEAg
LTMxNiwzMSArMzI5LDggQEAgdm9pZCBGYWtlTmV0d29ya1BpcGU6OlJlc2V0U3RhdHMoKSB7CiAg
IHRvdGFsX3BhY2tldF9kZWxheV91c18gPSAwOwogfQogCi12b2lkIEZha2VOZXR3b3JrUGlwZTo6
QWRkVG9QYWNrZXREcm9wQ291bnQoKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJnByb2Nlc3Nf
bG9ja18pOwotICArK2Ryb3BwZWRfcGFja2V0c187Ci19Ci0KLXZvaWQgRmFrZU5ldHdvcmtQaXBl
OjpBZGRUb1BhY2tldFNlbnRDb3VudChpbnQgY291bnQpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3Jp
dCgmcHJvY2Vzc19sb2NrXyk7Ci0gIHNlbnRfcGFja2V0c18gKz0gY291bnQ7Ci19Ci0KLXZvaWQg
RmFrZU5ldHdvcmtQaXBlOjpBZGRUb1RvdGFsRGVsYXkoaW50IGRlbGF5X3VzKSB7Ci0gIHJ0Yzo6
Q3JpdFNjb3BlIGNyaXQoJnByb2Nlc3NfbG9ja18pOwotICB0b3RhbF9wYWNrZXRfZGVsYXlfdXNf
ICs9IGRlbGF5X3VzOwotfQotCiBpbnQ2NF90IEZha2VOZXR3b3JrUGlwZTo6R2V0VGltZUluTWlj
cm9zZWNvbmRzKCkgY29uc3QgewogICByZXR1cm4gY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMo
KTsKIH0KIAotYm9vbCBGYWtlTmV0d29ya1BpcGU6OlNob3VsZFByb2Nlc3MoaW50NjRfdCB0aW1l
X25vd191cykgY29uc3QgewotICByZXR1cm4gdGltZV9ub3dfdXMgPj0gbmV4dF9wcm9jZXNzX3Rp
bWVfdXNfOwotfQotCi12b2lkIEZha2VOZXR3b3JrUGlwZTo6U2V0VGltZVRvTmV4dFByb2Nlc3Mo
aW50NjRfdCBza2lwX3VzKSB7Ci0gIG5leHRfcHJvY2Vzc190aW1lX3VzXyArPSBza2lwX3VzOwot
fQotCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2Zha2VfbmV0d29ya19waXBlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2Zha2VfbmV0d29ya19w
aXBlLmgKaW5kZXggZjg1ZTgyZWZjNWVlNDZlZGM0MGE5ZDEwZTVkYzlhMjY0MmYwZjk2Ni4uYjFi
NGNlZTE0ZDBlNjFkMTAxOTI3Yzk0ZTliN2I0ZTU4MThmYjcxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mYWtlX25ldHdvcmtfcGlw
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
ZmFrZV9uZXR3b3JrX3BpcGUuaApAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgImFwaS90ZXN0
L3NpbXVsYXRlZF9uZXR3b3JrLmgiCiAjaW5jbHVkZSAiY2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAi
Y2FsbC9zaW11bGF0ZWRfcGFja2V0X3JlY2VpdmVyLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVz
LmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1
Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCkBAIC0xNDAsNiArMTM5LDcgQEAg
Y2xhc3MgRmFrZU5ldHdvcmtQaXBlIDogcHVibGljIHdlYnJ0Yzo6U2ltdWxhdGVkUGFja2V0UmVj
ZWl2ZXJJbnRlcmZhY2UsCiAgIC8vIHBhY2tldHMgcmVhZHkgdG8gYmUgZGVsaXZlcmVkLgogICB2
b2lkIFByb2Nlc3MoKSBvdmVycmlkZTsKICAgaW50NjRfdCBUaW1lVW50aWxOZXh0UHJvY2Vzcygp
IG92ZXJyaWRlOworICB2b2lkIFByb2Nlc3NUaHJlYWRBdHRhY2hlZChQcm9jZXNzVGhyZWFkKiBw
cm9jZXNzX3RocmVhZCkgb3ZlcnJpZGU7CiAKICAgLy8gR2V0IHN0YXRpc3RpY3MuCiAgIGZsb2F0
IFBlcmNlbnRhZ2VMb3NzKCk7CkBAIC0xNTAsOSArMTUwLDYgQEAgY2xhc3MgRmFrZU5ldHdvcmtQ
aXBlIDogcHVibGljIHdlYnJ0Yzo6U2ltdWxhdGVkUGFja2V0UmVjZWl2ZXJJbnRlcmZhY2UsCiAK
ICBwcm90ZWN0ZWQ6CiAgIHZvaWQgRGVsaXZlclBhY2tldFdpdGhMb2NrKE5ldHdvcmtQYWNrZXQq
IHBhY2tldCk7Ci0gIHZvaWQgQWRkVG9QYWNrZXREcm9wQ291bnQoKTsKLSAgdm9pZCBBZGRUb1Bh
Y2tldFNlbnRDb3VudChpbnQgY291bnQpOwotICB2b2lkIEFkZFRvVG90YWxEZWxheShpbnQgZGVs
YXlfdXMpOwogICBpbnQ2NF90IEdldFRpbWVJbk1pY3Jvc2Vjb25kcygpIGNvbnN0OwogICBib29s
IFNob3VsZFByb2Nlc3MoaW50NjRfdCB0aW1lX25vd191cykgY29uc3Q7CiAgIHZvaWQgU2V0VGlt
ZVRvTmV4dFByb2Nlc3MoaW50NjRfdCBza2lwX3VzKTsKQEAgLTE5Nyw2ICsxOTQsOSBAQCBjbGFz
cyBGYWtlTmV0d29ya1BpcGUgOiBwdWJsaWMgd2VicnRjOjpTaW11bGF0ZWRQYWNrZXRSZWNlaXZl
ckludGVyZmFjZSwKICAgLy8gcHJvY2Vzc2VzLCBzdWNoIGFzIHRoZSBwYWNrZXQgcXVldWVzLgog
ICBydGM6OkNyaXRpY2FsU2VjdGlvbiBwcm9jZXNzX2xvY2tfOwogCisgIHJ0Yzo6Q3JpdGljYWxT
ZWN0aW9uIHByb2Nlc3NfdGhyZWFkX2xvY2tfOworICBQcm9jZXNzVGhyZWFkKiBwcm9jZXNzX3Ro
cmVhZF8gUlRDX0dVQVJERURfQlkocHJvY2Vzc190aHJlYWRfbG9ja18pID0gbnVsbHB0cjsKKwog
ICAvLyBQYWNrZXRzICBhcmUgYWRkZWQgYXQgdGhlIGJhY2sgb2YgdGhlIGRlcXVlLCB0aGlzIG1h
a2VzIHRoZSBkZXF1ZSBvcmRlcmVkCiAgIC8vIGJ5IGluY3JlYXNpbmcgc2VuZCB0aW1lLiBUaGUg
Y29tbW9uIGNhc2Ugd2hlbiByZW1vdmluZyBwYWNrZXRzIGZyb20gdGhlCiAgIC8vIGRlcXVlIGlz
IHJlbW92aW5nIGVhcmx5IHBhY2tldHMsIHdoaWNoIHdpbGwgYmUgY2xvc2UgdG8gdGhlIGZyb250
IG9mIHRoZQpAQCAtMjEwLDkgKzIxMCw2IEBAIGNsYXNzIEZha2VOZXR3b3JrUGlwZSA6IHB1Ymxp
YyB3ZWJydGM6OlNpbXVsYXRlZFBhY2tldFJlY2VpdmVySW50ZXJmYWNlLAogICBzaXplX3QgZHJv
cHBlZF9wYWNrZXRzXyBSVENfR1VBUkRFRF9CWShwcm9jZXNzX2xvY2tfKTsKICAgc2l6ZV90IHNl
bnRfcGFja2V0c18gUlRDX0dVQVJERURfQlkocHJvY2Vzc19sb2NrXyk7CiAgIGludDY0X3QgdG90
YWxfcGFja2V0X2RlbGF5X3VzXyBSVENfR1VBUkRFRF9CWShwcm9jZXNzX2xvY2tfKTsKLQotICBp
bnQ2NF90IG5leHRfcHJvY2Vzc190aW1lX3VzXzsKLQogICBpbnQ2NF90IGxhc3RfbG9nX3RpbWVf
dXNfOwogCiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oRmFrZU5ldHdvcmtQaXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvZmxleGZlY19yZWNlaXZlX3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZmxleGZlY19yZWNlaXZlX3N0cmVhbS5jYwppbmRleCBhYjEz
ODM2OGJhMGVhOTk4MTY2YzZhOWY5MjIyNmU2ZDg0ZDI5OGRhLi5hYjZkZGUzN2I0NmQ3NjljZGQ5
Y2I2ZTMxZDFjY2EzNTVmZjg1ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL2ZsZXhmZWNfcmVjZWl2ZV9zdHJlYW0uY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mbGV4ZmVjX3Jl
Y2VpdmVfc3RyZWFtLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJjYWxsL2ZsZXhm
ZWNfcmVjZWl2ZV9zdHJlYW0uaCIKIAorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIAogRmxleGZlY1JlY2VpdmVTdHJlYW06OkNvbmZpZzo6Q29uZmln
KFRyYW5zcG9ydCogcnRjcF9zZW5kX3RyYW5zcG9ydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvZmxleGZlY19yZWNlaXZlX3N0cmVh
bS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9mbGV4
ZmVjX3JlY2VpdmVfc3RyZWFtLmgKaW5kZXggY2NjMzAxNDMwZTg0NGEzODhiZGNhODE3OWYyMmI0
ODAwODFjZDdkMy4uOTQ5YWQ3NDJhYTAzZjY2ZDcyMWFiNTBiODc1ZTFiY2JhZjViM2EyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9m
bGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9mbGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmgKQEAgLTEyLDcgKzEy
LDYgQEAKICNkZWZpbmUgQ0FMTF9GTEVYRkVDX1JFQ0VJVkVfU1RSRUFNX0hfCiAKICNpbmNsdWRl
IDxzdGRpbnQuaD4KLQogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAg
LTIwLDcgKzE5LDYgQEAKICNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKICNpbmNsdWRlICJh
cGkvcnRwcGFyYW1ldGVycy5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3BhY2tldF9zaW5rX2ludGVy
ZmFjZS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1
ZGUpCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3BhY2tldF9yZWNlaXZlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9wYWNrZXRfcmVjZWl2ZXIu
aAppbmRleCBmMDVlNDA5ZDc5ZDEzNmM5OGMwODJkNTA5Y2Y5MDZkMzdkNzU2YTA2Li4wMmEwMTU1
MGRlZjY1MjM0YTg5NDE3NjY4ZDc4NGM1NTVjYzZiMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3BhY2tldF9yZWNlaXZlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcGFja2V0
X3JlY2VpdmVyLmgKQEAgLTE2LDcgKzE2LDYgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNs
dWRlICJhcGkvbWVkaWF0eXBlcy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9M
SU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JhbXB1cF90ZXN0cy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmFtcHVwX3Rlc3RzLmNjCmluZGV4
IDhlYjQ1MWFjMDRmNzNhN2I4NWFlYmM4MmVmZmU0MGI3YjE1Njk5OWIuLjk3MzU0MjFmMzBlYzUx
Y2IwZWJjNWY2MWU1NmZjZWQwNTI1ZGU2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmFtcHVwX3Rlc3RzLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmFtcHVwX3Rlc3RzLmNj
CkBAIC0xMSw3ICsxMSw5IEBACiAjaW5jbHVkZSAiY2FsbC9yYW1wdXBfdGVzdHMuaCIKIAogI2lu
Y2x1ZGUgImNhbGwvZmFrZV9uZXR3b3JrX3BpcGUuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19l
dmVudF9sb2cvb3V0cHV0L3J0Y19ldmVudF9sb2dfb3V0cHV0X2ZpbGUuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKQEAgLTM4LDYgKzQwLDEwIEBA
IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBHZW5lcmF0ZVNzcmNzKHNpemVfdCBudW1fc3RyZWFtcywg
dWludDMyX3Qgc3NyY19vZmZzZXQpIHsKIH0KIH0gIC8vIG5hbWVzcGFjZQogCitXRUJSVENfREVG
SU5FX3N0cmluZyhyYW1wX2R1bXBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAg
ICAgICAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBkdW1wZWQgcmVjZWl2ZWQgUlRQIHN0cmVh
bS4iKTsKKwogUmFtcFVwVGVzdGVyOjpSYW1wVXBUZXN0ZXIoc2l6ZV90IG51bV92aWRlb19zdHJl
YW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9hdWRpb19zdHJlYW1z
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9mbGV4ZmVjX3N0cmVhbXMs
CkBAIC00OCw3ICs1NCw2IEBAIFJhbXBVcFRlc3Rlcjo6UmFtcFVwVGVzdGVyKHNpemVfdCBudW1f
dmlkZW9fc3RyZWFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXBvcnRfcGVyZl9zdGF0cykKICAgICA6IEVu
ZFRvRW5kVGVzdCh0ZXN0OjpDYWxsVGVzdDo6a0xvbmdUaW1lb3V0TXMpLAotICAgICAgc3RvcF9l
dmVudF8oZmFsc2UsIGZhbHNlKSwKICAgICAgIGNsb2NrXyhDbG9jazo6R2V0UmVhbFRpbWVDbG9j
aygpKSwKICAgICAgIG51bV92aWRlb19zdHJlYW1zXyhudW1fdmlkZW9fc3RyZWFtcyksCiAgICAg
ICBudW1fYXVkaW9fc3RyZWFtc18obnVtX2F1ZGlvX3N0cmVhbXMpLApAQCAtNzksMTEgKzg0LDEy
IEBAIFJhbXBVcFRlc3Rlcjo6UmFtcFVwVGVzdGVyKHNpemVfdCBudW1fdmlkZW9fc3RyZWFtcywK
IAogUmFtcFVwVGVzdGVyOjp+UmFtcFVwVGVzdGVyKCkge30KIAotdm9pZCBSYW1wVXBUZXN0ZXI6
Ok1vZGlmeVNlbmRlckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpIHsKK3ZvaWQgUmFt
cFVwVGVzdGVyOjpNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKAorICAgIEJpdHJhdGVDb25zdHJh
aW50cyogYml0cmF0ZV9jb25maWcpIHsKICAgaWYgKHN0YXJ0X2JpdHJhdGVfYnBzXyAhPSAwKSB7
Ci0gICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5zdGFydF9iaXRyYXRlX2JwcyA9IHN0YXJ0X2Jp
dHJhdGVfYnBzXzsKKyAgICBiaXRyYXRlX2NvbmZpZy0+c3RhcnRfYml0cmF0ZV9icHMgPSBzdGFy
dF9iaXRyYXRlX2Jwc187CiAgIH0KLSAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5taW5fYml0cmF0
ZV9icHMgPSAxMDAwMDsKKyAgYml0cmF0ZV9jb25maWctPm1pbl9iaXRyYXRlX2JwcyA9IDEwMDAw
OwogfQogCiB2b2lkIFJhbXBVcFRlc3Rlcjo6T25WaWRlb1N0cmVhbXNDcmVhdGVkKApAQCAtNDQ4
LDggKzQ1NCw5IEBAIHZvaWQgUmFtcFVwRG93blVwVGVzdGVyOjpQb2xsU3RhdHMoKSB7CiAgIH0g
d2hpbGUgKCFzdG9wX2V2ZW50Xy5XYWl0KGtQb2xsSW50ZXJ2YWxNcykpOwogfQogCi12b2lkIFJh
bXBVcERvd25VcFRlc3Rlcjo6TW9kaWZ5UmVjZWl2ZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyog
Y29uZmlnKSB7Ci0gIGNvbmZpZy0+Yml0cmF0ZV9jb25maWcubWluX2JpdHJhdGVfYnBzID0gMTAw
MDA7Cit2b2lkIFJhbXBVcERvd25VcFRlc3Rlcjo6TW9kaWZ5UmVjZWl2ZXJCaXRyYXRlQ29uZmln
KAorICAgIEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIHsKKyAgYml0cmF0ZV9j
b25maWctPm1pbl9iaXRyYXRlX2JwcyA9IDEwMDAwOwogfQogCiBzdGQ6OnN0cmluZyBSYW1wVXBE
b3duVXBUZXN0ZXI6OkdldE1vZGlmaWVyU3RyaW5nKCkgY29uc3QgewpAQCAtNTY2LDcgKzU3Mywy
MyBAQCB2b2lkIFJhbXBVcERvd25VcFRlc3Rlcjo6RXZvbHZlVGVzdFN0YXRlKGludCBiaXRyYXRl
X2JwcywgYm9vbCBzdXNwZW5kZWQpIHsKIAogY2xhc3MgUmFtcFVwVGVzdCA6IHB1YmxpYyB0ZXN0
OjpDYWxsVGVzdCB7CiAgcHVibGljOgotICBSYW1wVXBUZXN0KCkge30KKyAgUmFtcFVwVGVzdCgp
IHsKKyAgICBzdGQ6OnN0cmluZyBkdW1wX25hbWUoRkxBR19yYW1wX2R1bXBfbmFtZSk7CisgICAg
aWYgKCFkdW1wX25hbWUuZW1wdHkoKSkgeworICAgICAgc2VuZF9ldmVudF9sb2dfID0gUnRjRXZl
bnRMb2c6OkNyZWF0ZShSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpMZWdhY3kpOworICAgICAg
cmVjdl9ldmVudF9sb2dfID0gUnRjRXZlbnRMb2c6OkNyZWF0ZShSdGNFdmVudExvZzo6RW5jb2Rp
bmdUeXBlOjpMZWdhY3kpOworICAgICAgYm9vbCBldmVudF9sb2dfc3RhcnRlZCA9CisgICAgICAg
ICAgc2VuZF9ldmVudF9sb2dfLT5TdGFydExvZ2dpbmcoCisgICAgICAgICAgICAgIGFic2w6Om1h
a2VfdW5pcXVlPFJ0Y0V2ZW50TG9nT3V0cHV0RmlsZT4oCisgICAgICAgICAgICAgICAgICBkdW1w
X25hbWUgKyAiLnNlbmQucnRjLmRhdCIsIFJ0Y0V2ZW50TG9nOjprVW5saW1pdGVkT3V0cHV0KSwK
KyAgICAgICAgICAgICAgUnRjRXZlbnRMb2c6OmtJbW1lZGlhdGVPdXRwdXQpICYmCisgICAgICAg
ICAgcmVjdl9ldmVudF9sb2dfLT5TdGFydExvZ2dpbmcoCisgICAgICAgICAgICAgIGFic2w6Om1h
a2VfdW5pcXVlPFJ0Y0V2ZW50TG9nT3V0cHV0RmlsZT4oCisgICAgICAgICAgICAgICAgICBkdW1w
X25hbWUgKyAiLnJlY3YucnRjLmRhdCIsIFJ0Y0V2ZW50TG9nOjprVW5saW1pdGVkT3V0cHV0KSwK
KyAgICAgICAgICAgICAgUnRjRXZlbnRMb2c6OmtJbW1lZGlhdGVPdXRwdXQpOworICAgICAgUlRD
X0RDSEVDSyhldmVudF9sb2dfc3RhcnRlZCk7CisgICAgfQorICB9CiB9OwogCiBzdGF0aWMgY29u
c3QgdWludDMyX3Qga1N0YXJ0Qml0cmF0ZUJwcyA9IDYwMDAwOwpAQCAtNjY3LDEzICs2OTAsNyBA
QCBURVNUX0YoUmFtcFVwVGVzdCwgVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJTaW11bGNhc3RSZWRS
dHgpIHsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCi0vLyBUT0RPKGJ1Z3Mud2VicnRjLm9y
Zy84ODc4KQotI2lmIGRlZmluZWQoV0VCUlRDX01BQykKLSNkZWZpbmUgTUFZQkVfQXVkaW9UcmFu
c3BvcnRTZXF1ZW5jZU51bWJlciBESVNBQkxFRF9BdWRpb1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVy
Ci0jZWxzZQotI2RlZmluZSBNQVlCRV9BdWRpb1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyIEF1ZGlv
VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIKLSNlbmRpZgotVEVTVF9GKFJhbXBVcFRlc3QsIE1BWUJF
X0F1ZGlvVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKK1RFU1RfRihSYW1wVXBUZXN0LCBBdWRp
b1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKSB7CiAgIFJhbXBVcFRlc3RlciB0ZXN0KDAsIDEsIDAs
IDMwMDAwMCwgMTAwMDAsCiAgICAgICAgICAgICAgICAgICAgIFJ0cEV4dGVuc2lvbjo6a1RyYW5z
cG9ydFNlcXVlbmNlTnVtYmVyVXJpLCBmYWxzZSwgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAg
IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvcmFtcHVwX3Rlc3RzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3JhbXB1cF90ZXN0cy5oCmluZGV4IDZjYzY1Y2UyYTIyNDM0ODhl
YzkxYTVkZTNjMzM3YWUzMTVmOTA5OTcuLmI3ZDRhZjVmNWE4ODk4ZmFmYTBiNmIzYTEzNDU3MDZj
YjgyYzk3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvcmFtcHVwX3Rlc3RzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yYW1wdXBfdGVzdHMuaApAQCAtNjcsNyArNjcsNyBAQCBj
bGFzcyBSYW1wVXBUZXN0ZXIgOiBwdWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKIAogICBydGM6
OkV2ZW50IHN0b3BfZXZlbnRfOwogICBDbG9jayogY29uc3QgY2xvY2tfOwotICBEZWZhdWx0TmV0
d29ya1NpbXVsYXRpb25Db25maWcgZm9yd2FyZF90cmFuc3BvcnRfY29uZmlnXzsKKyAgQnVpbHRJ
bk5ldHdvcmtCZWhhdmlvckNvbmZpZyBmb3J3YXJkX3RyYW5zcG9ydF9jb25maWdfOwogICBjb25z
dCBzaXplX3QgbnVtX3ZpZGVvX3N0cmVhbXNfOwogICBjb25zdCBzaXplX3QgbnVtX2F1ZGlvX3N0
cmVhbXNfOwogICBjb25zdCBzaXplX3QgbnVtX2ZsZXhmZWNfc3RyZWFtc187CkBAIC04Myw3ICs4
Myw3IEBAIGNsYXNzIFJhbXBVcFRlc3RlciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3Qgewog
ICB0eXBlZGVmIHN0ZDo6bWFwPHVpbnQzMl90LCB1aW50MzJfdD4gU3NyY01hcDsKICAgY2xhc3Mg
VmlkZW9TdHJlYW1GYWN0b3J5OwogCi0gIHZvaWQgTW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxs
OjpDb25maWcqIGNvbmZpZykgb3ZlcnJpZGU7CisgIHZvaWQgTW9kaWZ5U2VuZGVyQml0cmF0ZUNv
bmZpZyhCaXRyYXRlQ29uc3RyYWludHMqIGJpdHJhdGVfY29uZmlnKSBvdmVycmlkZTsKICAgdm9p
ZCBPblZpZGVvU3RyZWFtc0NyZWF0ZWQoCiAgICAgICBWaWRlb1NlbmRTdHJlYW0qIHNlbmRfc3Ry
ZWFtLAogICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9SZWNlaXZlU3RyZWFtKj4mIHJlY2Vp
dmVfc3RyZWFtcykgb3ZlcnJpZGU7CkBAIC0xNDIsNyArMTQyLDcgQEAgY2xhc3MgUmFtcFVwRG93
blVwVGVzdGVyIDogcHVibGljIFJhbXBVcFRlc3RlciB7CiAgICAga1RyYW5zaXRpb25Ub05leHRT
dGF0ZSwKICAgfTsKIAotICB2b2lkIE1vZGlmeVJlY2VpdmVyQ2FsbENvbmZpZyhDYWxsOjpDb25m
aWcqIGNvbmZpZyk7CisgIHZvaWQgTW9kaWZ5UmVjZWl2ZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVD
b25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIG92ZXJyaWRlOwogCiAgIHN0ZDo6c3RyaW5nIEdl
dE1vZGlmaWVyU3RyaW5nKCkgY29uc3Q7CiAgIGludCBHZXRFeHBlY3RlZEhpZ2hCaXRyYXRlKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3JlY2VpdmVfdGltZV9jYWxjdWxhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5jYwpp
bmRleCAxNmM2YTQzY2MzZmZjMDU0OTI5MTZhMTk0NjA0YWY1ZGM3ZmMxZmYyLi5iNzA1NjczMmU4
YjY1YTg4MjJjOTFhYzVmZDU2ZDUxYzk0MTZkMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVfdGltZV9jYWxjdWxhdG9y
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
cmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuY2MKQEAgLTksNTkgKzksMTEyIEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuaCIKKworI2luY2x1ZGUgPHN0cmlu
Zz4KKwogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Z2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgogI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKLXVzaW5nIDo6d2VicnRjOjpmaWVsZF90cmlhbDo6Rmlu
ZEZ1bGxOYW1lOwogdXNpbmcgOjp3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQ7CiAKLWNv
bnN0IGNoYXIga0J3ZVJlY2VpdmVUaW1lQ29ycmVjdGlvbltdID0gIldlYlJUQy1Cd2VSZWNlaXZl
VGltZUNvcnJlY3Rpb24iOworY29uc3QgY2hhciBrQndlUmVjZWl2ZVRpbWVDb3JyZWN0aW9uW10g
PSAiV2ViUlRDLUJ3ZS1SZWNlaXZlVGltZUZpeCI7CiB9ICAvLyBuYW1lc3BhY2UKIAotUmVjZWl2
ZVRpbWVDYWxjdWxhdG9yOjpSZWNlaXZlVGltZUNhbGN1bGF0b3IoaW50NjRfdCBtaW5fZGVsdGFf
bXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IG1heF9kZWx0YV9kaWZmX21zKQotICAgIDogbWluX2RlbHRhX3VzXyhtaW5fZGVsdGFfbXMgKiAx
MDAwKSwKLSAgICAgIG1heF9kZWx0YV9kaWZmX3VzXyhtYXhfZGVsdGFfZGlmZl9tcyAqIDEwMDAp
IHt9CitSZWNlaXZlVGltZUNhbGN1bGF0b3JDb25maWc6OlJlY2VpdmVUaW1lQ2FsY3VsYXRvckNv
bmZpZygpCisgICAgOiBtYXhfcGFja2V0X3RpbWVfcmVwYWlyKCJtYXhyZXAiLCBUaW1lRGVsdGE6
Om1zKDIwMDApKSwKKyAgICAgIHN0YWxsX3RocmVzaG9sZCgic3RhbGwiLCBUaW1lRGVsdGE6Om1z
KDUpKSwKKyAgICAgIHRvbGVyYW5jZSgidG9sIiwgVGltZURlbHRhOjptcygxKSksCisgICAgICBt
YXhfc3RhbGwoIm1heHN0YWxsIiwgVGltZURlbHRhOjpzZWNvbmRzKDUpKSB7CisgIHN0ZDo6c3Ry
aW5nIHRyaWFsX3N0cmluZyA9CisgICAgICBmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKGtCd2VS
ZWNlaXZlVGltZUNvcnJlY3Rpb24pOworICBQYXJzZUZpZWxkVHJpYWwoCisgICAgICB7Jm1heF9w
YWNrZXRfdGltZV9yZXBhaXIsICZzdGFsbF90aHJlc2hvbGQsICZ0b2xlcmFuY2UsICZtYXhfc3Rh
bGx9LAorICAgICAgdHJpYWxfc3RyaW5nKTsKK30KK1JlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZp
Zzo6UmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnKAorICAgIGNvbnN0IFJlY2VpdmVUaW1lQ2Fs
Y3VsYXRvckNvbmZpZyYpID0gZGVmYXVsdDsKK1JlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZzo6
flJlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZygpID0gZGVmYXVsdDsKKworUmVjZWl2ZVRpbWVD
YWxjdWxhdG9yOjpSZWNlaXZlVGltZUNhbGN1bGF0b3IoKQorICAgIDogY29uZmlnXyhSZWNlaXZl
VGltZUNhbGN1bGF0b3JDb25maWcoKSkge30KIAogc3RkOjp1bmlxdWVfcHRyPFJlY2VpdmVUaW1l
Q2FsY3VsYXRvcj4KIFJlY2VpdmVUaW1lQ2FsY3VsYXRvcjo6Q3JlYXRlRnJvbUZpZWxkVHJpYWwo
KSB7CiAgIGlmICghSXNFbmFibGVkKGtCd2VSZWNlaXZlVGltZUNvcnJlY3Rpb24pKQogICAgIHJl
dHVybiBudWxscHRyOwotICBpbnQgbWluLCBtYXg7Ci0gIGlmIChzc2NhbmYoRmluZEZ1bGxOYW1l
KGtCd2VSZWNlaXZlVGltZUNvcnJlY3Rpb24pLmNfc3RyKCksICJFbmFibGVkLCVkLCVkIiwKLSAg
ICAgICAgICAgICAmbWluLCAmbWF4KSAhPSAyKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8
PCAiSW52YWxpZCBudW1iZXIgb2YgcGFyYW1ldGVycyBwcm92aWRlZC4iOwotICAgIHJldHVybiBu
dWxscHRyOwotICB9Ci0gIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxSZWNlaXZlVGltZUNhbGN1
bGF0b3I+KG1pbiwgbWF4KTsKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFJlY2VpdmVUaW1l
Q2FsY3VsYXRvcj4oKTsKIH0KIAotaW50NjRfdCBSZWNlaXZlVGltZUNhbGN1bGF0b3I6OlJlY29u
Y2lsZVJlY2VpdmVUaW1lcyhpbnQ2NF90IHBhY2tldF90aW1lX3VzXywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBzYWZlX3RpbWVf
dXNfKSB7Ci0gIGlmICghcmVjZWl2ZV90aW1lX29mZnNldF91c18pIHsKLSAgICByZWNlaXZlX3Rp
bWVfb2Zmc2V0X3VzXyA9IHNhZmVfdGltZV91c18gLSBwYWNrZXRfdGltZV91c187Ci0gIH0gZWxz
ZSB7Ci0gICAgaW50NjRfdCBzYWZlX2RlbHRhX3VzID0gc2FmZV90aW1lX3VzXyAtIGxhc3Rfc2Fm
ZV90aW1lX3VzXzsKLSAgICBpbnQ2NF90IHBhY2tldF9kZWx0YV91c18gPSBwYWNrZXRfdGltZV91
c18gLSBsYXN0X3BhY2tldF90aW1lX3VzXzsKLSAgICBpbnQ2NF90IGRlbHRhX2RpZmYgPSBwYWNr
ZXRfZGVsdGFfdXNfIC0gc2FmZV9kZWx0YV91czsKLSAgICAvLyBQYWNrZXQgdGltZSBzaG91bGQg
bm90IGRlY3JlYXNlIHNpZ25pZmljYW50bHksIGEgbGFyZ2UgZGVjcmVhc2UgaW5kaWNhdGVzCi0g
ICAgLy8gYSByZXNldCBvZiB0aGUgcGFja2V0IHRpbWUgY2xvY2sgYW5kIHdlIHNob3VsZCByZXNl
dCB0aGUgb2ZmZXN0Ci0gICAgLy8gcGFyYW1ldGVyLiBUaGUgc2FmZSByZWZlcmVuY2UgdGltZSBj
YW4gaW5jcmVhc2UgaW4gbGFyZ2UganVtcHMgaWYgdGhlCi0gICAgLy8gdGhyZWFkIG1lYXN1cmlu
ZyBpdCBpcyBiYWNrZ3JvdW5kZWQgZm9yIGxvbmdlciBwZXJpb2RzLiBCdXQgaWYgdGhlIHBhY2tl
dAotICAgIC8vIHRpbWUgaW5jcmVhc2VzIHNpZ25pZmljYW50bHkgbW9yZSB0aGFuIHRoZSBzYWZl
IHRpbWUsIGl0IGluZGljYXRlcyBhCi0gICAgLy8gY2xvY2sgcmVzZXQgYW5kIHdlIHNob3VsZCBy
ZXNldCB0aGUgb2Zmc2V0LgotCi0gICAgaWYgKHBhY2tldF9kZWx0YV91c18gPCBtaW5fZGVsdGFf
dXNfIHx8IGRlbHRhX2RpZmYgPiBtYXhfZGVsdGFfZGlmZl91c18pIHsKLSAgICAgIFJUQ19MT0co
TFNfV0FSTklORykgPDwgIlJlY2VpdmVkIGEgY2xvY2sganVtcCBvZiAiIDw8IGRlbHRhX2RpZmYK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiByZXNldHRpbmcgb2Zmc2V0IjsKLSAgICAg
IHJlY2VpdmVfdGltZV9vZmZzZXRfdXNfID0gc2FmZV90aW1lX3VzXyAtIHBhY2tldF90aW1lX3Vz
XzsKK2ludDY0X3QgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yOjpSZWNvbmNpbGVSZWNlaXZlVGltZXMo
aW50NjRfdCBwYWNrZXRfdGltZV91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBzeXN0ZW1fdGltZV91cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBzYWZlX3Rp
bWVfdXMpIHsKKyAgaW50NjRfdCBzdGFsbF90aW1lX3VzID0gc3lzdGVtX3RpbWVfdXMgLSBwYWNr
ZXRfdGltZV91czsKKyAgaWYgKHRvdGFsX3N5c3RlbV90aW1lX3Bhc3NlZF91c18gPCBjb25maWdf
LnN0YWxsX3RocmVzaG9sZC0+dXMoKSkgeworICAgIHN0YWxsX3RpbWVfdXMgPSBydGM6OlNhZmVN
aW4oc3RhbGxfdGltZV91cywgY29uZmlnXy5tYXhfc3RhbGwtPnVzKCkpOworICB9CisgIGludDY0
X3QgY29ycmVjdGVkX3RpbWVfdXMgPSBzYWZlX3RpbWVfdXMgLSBzdGFsbF90aW1lX3VzOworCisg
IGlmIChsYXN0X3BhY2tldF90aW1lX3VzXyA9PSAtMSAmJiBzdGFsbF90aW1lX3VzIDwgMCkgewor
ICAgIHN0YXRpY19jbG9ja19vZmZzZXRfdXNfID0gc3RhbGxfdGltZV91czsKKyAgICBjb3JyZWN0
ZWRfdGltZV91cyArPSBzdGF0aWNfY2xvY2tfb2Zmc2V0X3VzXzsKKyAgfSBlbHNlIGlmIChsYXN0
X3BhY2tldF90aW1lX3VzXyA+IDApIHsKKyAgICAvLyBBbGwgcmVwYWlycyBkZXBlbmQgb24gdmFy
aWFibGVzIGJlaW5nIGludGlhbGl6ZWQKKyAgICBpbnQ2NF90IHBhY2tldF90aW1lX2RlbHRhX3Vz
ID0gcGFja2V0X3RpbWVfdXMgLSBsYXN0X3BhY2tldF90aW1lX3VzXzsKKyAgICBpbnQ2NF90IHN5
c3RlbV90aW1lX2RlbHRhX3VzID0gc3lzdGVtX3RpbWVfdXMgLSBsYXN0X3N5c3RlbV90aW1lX3Vz
XzsKKyAgICBpbnQ2NF90IHNhZmVfdGltZV9kZWx0YV91cyA9IHNhZmVfdGltZV91cyAtIGxhc3Rf
c2FmZV90aW1lX3VzXzsKKworICAgIC8vIFJlcGFpciBiYWNrd2FyZHMgY2xvY2sgcmVzZXRzIGR1
cmluZyBpbml0aWFsIHN0YWxsLiBJbiB0aGlzIGNhc2UsIHRoZQorICAgIC8vIHJlc2V0IGlzIG9i
c2VydmVkIG9ubHkgaW4gcGFja2V0IHRpbWUgYnV0IG5ldmVyIGluIHN5c3RlbSB0aW1lLgorICAg
IGlmIChzeXN0ZW1fdGltZV9kZWx0YV91cyA8IDApCisgICAgICB0b3RhbF9zeXN0ZW1fdGltZV9w
YXNzZWRfdXNfICs9IGNvbmZpZ18uc3RhbGxfdGhyZXNob2xkLT51cygpOworICAgIGVsc2UKKyAg
ICAgIHRvdGFsX3N5c3RlbV90aW1lX3Bhc3NlZF91c18gKz0gc3lzdGVtX3RpbWVfZGVsdGFfdXM7
CisgICAgaWYgKHBhY2tldF90aW1lX2RlbHRhX3VzIDwgMCAmJgorICAgICAgICB0b3RhbF9zeXN0
ZW1fdGltZV9wYXNzZWRfdXNfIDwgY29uZmlnXy5zdGFsbF90aHJlc2hvbGQtPnVzKCkpIHsKKyAg
ICAgIHN0YXRpY19jbG9ja19vZmZzZXRfdXNfIC09IHBhY2tldF90aW1lX2RlbHRhX3VzOworICAg
IH0KKyAgICBjb3JyZWN0ZWRfdGltZV91cyArPSBzdGF0aWNfY2xvY2tfb2Zmc2V0X3VzXzsKKwor
ICAgIC8vIERldGVjdCByZXNldHMgaW5iZXR3ZWVuIGNsb2NrIHJlYWRpbmdzIGluIHNvY2tldCBh
bmQgYXBwLgorICAgIGJvb2wgZm9yd2FyZF9jbG9ja19yZXNldCA9CisgICAgICAgIGNvcnJlY3Rl
ZF90aW1lX3VzICsgY29uZmlnXy50b2xlcmFuY2UtPnVzKCkgPCBsYXN0X2NvcnJlY3RlZF90aW1l
X3VzXzsKKyAgICBib29sIG9idmlvdXNfYmFja3dhcmRfY2xvY2tfcmVzZXQgPSBzeXN0ZW1fdGlt
ZV91cyA8IHBhY2tldF90aW1lX3VzOworCisgICAgLy8gSGFyZGVyIGNhc2Ugd2l0aCBiYWNrd2Fy
ZCBjbG9jayByZXNldCBkdXJpbmcgc3RhbGwsIHRoZSByZXNldCBiZWluZworICAgIC8vIHNtYWxs
ZXIgdGhhbiB0aGUgc3RhbGwuIENvbXBlbnNhdGUgdGhyb3VnaG91dCB0aGUgc3RhbGwuCisgICAg
Ym9vbCBzbWFsbF9iYWNrd2FyZF9jbG9ja19yZXNldCA9CisgICAgICAgICFvYnZpb3VzX2JhY2t3
YXJkX2Nsb2NrX3Jlc2V0ICYmCisgICAgICAgIHNhZmVfdGltZV9kZWx0YV91cyA+IHN5c3RlbV90
aW1lX2RlbHRhX3VzICsgY29uZmlnXy50b2xlcmFuY2UtPnVzKCk7CisgICAgYm9vbCBzdGFsbF9z
dGFydCA9CisgICAgICAgIHBhY2tldF90aW1lX2RlbHRhX3VzID49IDAgJiYKKyAgICAgICAgc3lz
dGVtX3RpbWVfZGVsdGFfdXMgPiBwYWNrZXRfdGltZV9kZWx0YV91cyArIGNvbmZpZ18udG9sZXJh
bmNlLT51cygpOworICAgIGJvb2wgc3RhbGxfaXNfb3ZlciA9IHNhZmVfdGltZV9kZWx0YV91cyA+
IGNvbmZpZ18uc3RhbGxfdGhyZXNob2xkLT51cygpOworICAgIGJvb2wgcGFja2V0X3RpbWVfY2F1
Z2h0X3VwID0KKyAgICAgICAgcGFja2V0X3RpbWVfZGVsdGFfdXMgPCAwICYmIHN5c3RlbV90aW1l
X2RlbHRhX3VzID49IDA7CisgICAgaWYgKHN0YWxsX3N0YXJ0ICYmIHNtYWxsX2JhY2t3YXJkX2Ns
b2NrX3Jlc2V0KQorICAgICAgc21hbGxfcmVzZXRfZHVyaW5nX3N0YWxsXyA9IHRydWU7CisgICAg
ZWxzZSBpZiAoc3RhbGxfaXNfb3ZlciB8fCBwYWNrZXRfdGltZV9jYXVnaHRfdXApCisgICAgICBz
bWFsbF9yZXNldF9kdXJpbmdfc3RhbGxfID0gZmFsc2U7CisKKyAgICAvLyBJZiByZXNldHMgYXJl
IGRldGVjdGVkLCBhZHZhbmNlIHRpbWUgYnkgKGNhcHBlZCkgcGFja2V0IHRpbWUgaW5jcmVhc2Uu
CisgICAgaWYgKGZvcndhcmRfY2xvY2tfcmVzZXQgfHwgb2J2aW91c19iYWNrd2FyZF9jbG9ja19y
ZXNldCB8fAorICAgICAgICBzbWFsbF9yZXNldF9kdXJpbmdfc3RhbGxfKSB7CisgICAgICBjb3Jy
ZWN0ZWRfdGltZV91cyA9IGxhc3RfY29ycmVjdGVkX3RpbWVfdXNfICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnRjOjpTYWZlQ2xhbXAocGFja2V0X3RpbWVfZGVsdGFfdXMsIDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18ubWF4X3BhY2tldF90
aW1lX3JlcGFpci0+dXMoKSk7CiAgICAgfQogICB9Ci0gIGxhc3RfcGFja2V0X3RpbWVfdXNfID0g
cGFja2V0X3RpbWVfdXNfOwotICBsYXN0X3NhZmVfdGltZV91c18gPSBzYWZlX3RpbWVfdXNfOwot
ICByZXR1cm4gcGFja2V0X3RpbWVfdXNfICsgKnJlY2VpdmVfdGltZV9vZmZzZXRfdXNfOworCisg
IGxhc3RfY29ycmVjdGVkX3RpbWVfdXNfID0gY29ycmVjdGVkX3RpbWVfdXM7CisgIGxhc3RfcGFj
a2V0X3RpbWVfdXNfID0gcGFja2V0X3RpbWVfdXM7CisgIGxhc3Rfc3lzdGVtX3RpbWVfdXNfID0g
c3lzdGVtX3RpbWVfdXM7CisgIGxhc3Rfc2FmZV90aW1lX3VzXyA9IHNhZmVfdGltZV91czsKKyAg
cmV0dXJuIGNvcnJlY3RlZF90aW1lX3VzOwogfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L3JlY2VpdmVfdGltZV9jYWxjdWxhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVfdGltZV9jYWxjdWxhdG9yLmgKaW5kZXggYTgyMTdj
ZDEwMTI1OWY4YjM4MWFkYjA4MjI3OWQ4Mzc1ZGMyMWYxNC4uMjY5ZDRlZjkxMDA5MDg0ZDIwZGMw
NGYwMDEwMjQyNjA4MGM0MjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1l
X2NhbGN1bGF0b3IuaApAQCAtMTAsMTMgKzEwLDI0IEBACiAjaWZuZGVmIENBTExfUkVDRUlWRV9U
SU1FX0NBTENVTEFUT1JfSF8KICNkZWZpbmUgQ0FMTF9SRUNFSVZFX1RJTUVfQ0FMQ1VMQVRPUl9I
XwogCi0jaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCi0jaW5jbHVkZSAi
YWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2Zp
ZWxkX3RyaWFsX3VuaXRzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitzdHJ1Y3QgUmVjZWl2
ZVRpbWVDYWxjdWxhdG9yQ29uZmlnIHsKKyAgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnKCk7
CisgIFJlY2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZyhjb25zdCBSZWNlaXZlVGltZUNhbGN1bGF0
b3JDb25maWcmKTsKKyAgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnJiBvcGVyYXRvcj0oY29u
c3QgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnJikgPQorICAgICAgZGVmYXVsdDsKKyAgflJl
Y2VpdmVUaW1lQ2FsY3VsYXRvckNvbmZpZygpOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVE
ZWx0YT4gbWF4X3BhY2tldF90aW1lX3JlcGFpcjsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1l
RGVsdGE+IHN0YWxsX3RocmVzaG9sZDsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+
IHRvbGVyYW5jZTsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IG1heF9zdGFsbDsK
K307CisKIC8vIFRoZSByZWNlaXZlIHRpbWUgY2FsY3VsYXRvciBzZXJ2ZXMgdGhlIHB1cnBvc2Ug
b2YgY29tYmluaW5nIHBhY2tldCB0aW1lCiAvLyBzdGFtcHMgd2l0aCBhIHNhZmVseSBpbmNyZW1l
bnRhbCBjbG9jay4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHBhY2tldCB0aW1lCiAvLyBzdGFtcHMg
YXJlIGJhc2VkIG9uIGxvd2VyIGxheWVyIHRpbWVzdGFtcHMgdGhhdCBoYXZlIG1vcmUgYWNjdXJh
dGUgdGltZQpAQCAtMjgsMjAgKzM5LDIwIEBAIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgUmVj
ZWl2ZVRpbWVDYWxjdWxhdG9yIHsKICBwdWJsaWM6CiAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UmVjZWl2ZVRpbWVDYWxjdWxhdG9yPiBDcmVhdGVGcm9tRmllbGRUcmlhbCgpOwotICAvLyBUaGUg
bWluIGRlbHRhIGlzIHVzZWQgdG8gY29ycmVjdCBmb3IganVtcHMgYmFja3dhcmRzIGluIHRpbWUs
IHRvIGFsbG93IHNvbWUKLSAgLy8gcGFja2V0IHJlb3JkZXJpbmcgYSBzbWFsbCBuZWdhdGl2ZSB2
YWx1ZSBpcyBhcHByb3ByaWF0ZSB0byB1c2UuIFRoZSBtYXgKLSAgLy8gZGVsdGEgZGlmZmVyZW5j
ZSBpcyB1c2VkIGFzIG1hcmdpbiB3aGVuIGRldGVjdGluZyB3aGVuIHBhY2tldCB0aW1lCi0gIC8v
IGluY3JlYXNlcyBtb3JlIHRoYW4gdGhlIHNhZmUgY2xvY2suIFRoaXMgc2hvdWxkIGJlIGxhcmdl
ciB0aGFuIHRoZSBsYXJnZXN0Ci0gIC8vIGV4cGVjdGVkIHN5c210ZW0gaW5kdWNlZCBkZWxheSBp
biB0aGUgc2FmZSBjbG9jayB0aW1lc3RhbXAuCi0gIFJlY2VpdmVUaW1lQ2FsY3VsYXRvcihpbnQ2
NF90IG1pbl9kZWx0YV9tcywgaW50NjRfdCBtYXhfZGVsdGFfZGlmZl9tcyk7Ci0gIGludDY0X3Qg
UmVjb25jaWxlUmVjZWl2ZVRpbWVzKGludDY0X3QgcGFja2V0X3RpbWVfdXNfLCBpbnQ2NF90IHNh
ZmVfdGltZV91c18pOworICBSZWNlaXZlVGltZUNhbGN1bGF0b3IoKTsKKyAgaW50NjRfdCBSZWNv
bmNpbGVSZWNlaXZlVGltZXMoaW50NjRfdCBwYWNrZXRfdGltZV91c18sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDY0X3Qgc3lzdGVtX3RpbWVfdXNfLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNhZmVfdGltZV91c18pOwogCiAgcHJpdmF0ZToK
LSAgY29uc3QgaW50NjRfdCBtaW5fZGVsdGFfdXNfOwotICBjb25zdCBpbnQ2NF90IG1heF9kZWx0
YV9kaWZmX3VzXzsKLSAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gcmVjZWl2ZV90aW1lX29mZnNl
dF91c187Ci0gIGludDY0X3QgbGFzdF9wYWNrZXRfdGltZV91c18gPSAwOwotICBpbnQ2NF90IGxh
c3Rfc2FmZV90aW1lX3VzXyA9IDA7CisgIGludDY0X3QgbGFzdF9jb3JyZWN0ZWRfdGltZV91c18g
PSAtMTsKKyAgaW50NjRfdCBsYXN0X3BhY2tldF90aW1lX3VzXyA9IC0xOworICBpbnQ2NF90IGxh
c3Rfc3lzdGVtX3RpbWVfdXNfID0gLTE7CisgIGludDY0X3QgbGFzdF9zYWZlX3RpbWVfdXNfID0g
LTE7CisgIGludDY0X3QgdG90YWxfc3lzdGVtX3RpbWVfcGFzc2VkX3VzXyA9IDA7CisgIGludDY0
X3Qgc3RhdGljX2Nsb2NrX29mZnNldF91c18gPSAwOworICBpbnQ2NF90IHNtYWxsX3Jlc2V0X2R1
cmluZ19zdGFsbF8gPSBmYWxzZTsKKyAgUmVjZWl2ZVRpbWVDYWxjdWxhdG9yQ29uZmlnIGNvbmZp
Z187CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogI2VuZGlmICAvLyBDQUxMX1JFQ0VJVkVf
VElNRV9DQUxDVUxBVE9SX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jYWxsL3JlY2VpdmVfdGltZV9jYWxjdWxhdG9yX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9yZWNlaXZl
X3RpbWVfY2FsY3VsYXRvcl91bml0dGVzdC5jYwppbmRleCA5MmQ1YTI3OWVhZTExMjQyYjc4NmI3
N2MxNWZlNDI1ZWRmYTI5YmEyLi4zOGVmNTRlY2U3OTQxMTJjYzlkYWQ4MTVjMjRiNDk1MTNjNzBk
M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL3JlY2VpdmVfdGltZV9jYWxjdWxhdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcmVjZWl2ZV90aW1lX2NhbGN1
bGF0b3JfdW5pdHRlc3QuY2MKQEAgLTEwLDY1ICsxMCwyMzcgQEAKIAogI2luY2x1ZGUgImNhbGwv
cmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuaCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNs
dWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDx0dXBsZT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNp
bmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlv
bmFsLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcmFuZG9tLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
dGltZXV0aWxzLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIG5hbWVzcGFjZSB0ZXN0IHsKIG5hbWVzcGFjZSB7CiAKLWludDY0X3QgUmVjb25jaWxlTXMo
UmVjZWl2ZVRpbWVDYWxjdWxhdG9yKiBjYWxjLAotICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IHBhY2tldF90aW1lX21zLAotICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNhZmVfdGltZV9t
cykgewotICByZXR1cm4gY2FsYy0+UmVjb25jaWxlUmVjZWl2ZVRpbWVzKHBhY2tldF90aW1lX21z
ICogMTAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlX3RpbWVf
bXMgKiAxMDAwKSAvCi0gICAgICAgICAxMDAwOwotfQotfSAgLy8gbmFtZXNwYWNlCitjbGFzcyBF
bXVsYXRlZENsb2NrIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEVtdWxhdGVkQ2xvY2soaW50IHNl
ZWQsIGZsb2F0IGRyaWZ0ID0gMC4wZikKKyAgICAgIDogcmFuZG9tXyhzZWVkKSwgY2xvY2tfdXNf
KHJhbmRvbV8uUmFuZDx1aW50MzJfdD4oKSksIGRyaWZ0XyhkcmlmdCkge30KKyAgdmlydHVhbCB+
RW11bGF0ZWRDbG9jaygpID0gZGVmYXVsdDsKKyAgaW50NjRfdCBHZXRDbG9ja1VzKCkgY29uc3Qg
eyByZXR1cm4gY2xvY2tfdXNfOyB9CiAKLVRFU1QoUmVjZWl2ZVRpbWVDYWxjdWxhdG9yVGVzdCwg
VXNlc1NtYWxsZXJJbmNyZW1lbnRzKSB7Ci0gIGludDY0X3Qga01pbkRlbHRhTXMgPSAtMjA7Ci0g
IGludDY0X3Qga01heERlbHRhRGlmZk1zID0gMTAwOwotICBSZWNlaXZlVGltZUNhbGN1bGF0b3Ig
Y2FsYyhrTWluRGVsdGFNcywga01heERlbHRhRGlmZk1zKTsKLSAgLy8gSW5pdGlhbGl6ZSBvZmZz
ZXQuCi0gIFJlY29uY2lsZU1zKCZjYWxjLCAxMDAwMCwgMjAwMDApOwotCi0gIEVYUEVDVF9FUShS
ZWNvbmNpbGVNcygmY2FsYywgMTAwMTAsIDIwMTAwKSwgMjAwMTApOwotICBFWFBFQ1RfRVEoUmVj
b25jaWxlTXMoJmNhbGMsIDEwMDIwLCAyMDEwMCksIDIwMDIwKTsKLSAgRVhQRUNUX0VRKFJlY29u
Y2lsZU1zKCZjYWxjLCAxMDAzMCwgMjAxMDApLCAyMDAzMCk7Ci0KLSAgRVhQRUNUX0VRKFJlY29u
Y2lsZU1zKCZjYWxjLCAxMDExMCwgMjAyMDApLCAyMDExMCk7Ci0gIEVYUEVDVF9FUShSZWNvbmNp
bGVNcygmY2FsYywgMTAxMjAsIDIwMjAwKSwgMjAxMjApOwotICBFWFBFQ1RfRVEoUmVjb25jaWxl
TXMoJmNhbGMsIDEwMTMwLCAyMDIwMCksIDIwMTMwKTsKLQotICAvLyBTbWFsbCBqdW1wcyBiYWNr
d2FyZHMgYXJlIGxldCB0cm91Z2gsIHRoZXkgbWlnaHQgYmUgZHVlIHRvIHJlb3JkZXJpbmcuCi0g
IEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAxMjAsIDIwMjAwKSwgMjAxMjApOwotICAv
LyBUaGUgc2FmZSBjbG9jayBtaWdodCBiZSBzbWFsbGVyIHRoYW4gdGhlIHBhY2tldCBjbG9jay4K
LSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDIxMCwgMjAyMDApLCAyMDIxMCk7Ci0g
IEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAyNDAsIDIwMjAwKSwgMjAyNDApOwotfQor
IHByb3RlY3RlZDoKKyAgaW50NjRfdCBVcGRhdGVDbG9jayhpbnQ2NF90IHRpbWVfdXMpIHsKKyAg
ICBpZiAoIWxhc3RfcXVlcnlfdXNfKQorICAgICAgbGFzdF9xdWVyeV91c18gPSB0aW1lX3VzOwor
ICAgIGludDY0X3Qgc2tpcF91cyA9IHRpbWVfdXMgLSAqbGFzdF9xdWVyeV91c187CisgICAgYWNj
dW11bGF0ZWRfZHJpZnRfdXNfICs9IHNraXBfdXMgKiBkcmlmdF87CisgICAgaW50NjRfdCBkcmlm
dF9jb3JyZWN0aW9uX3VzID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oYWNjdW11bGF0ZWRfZHJpZnRf
dXNfKTsKKyAgICBhY2N1bXVsYXRlZF9kcmlmdF91c18gLT0gZHJpZnRfY29ycmVjdGlvbl91czsK
KyAgICBjbG9ja191c18gKz0gc2tpcF91cyArIGRyaWZ0X2NvcnJlY3Rpb25fdXM7CisgICAgbGFz
dF9xdWVyeV91c18gPSB0aW1lX3VzOworICAgIHJldHVybiBza2lwX3VzOworICB9CisgIFJhbmRv
bSByYW5kb21fOwogCi1URVNUKFJlY2VpdmVUaW1lQ2FsY3VsYXRvclRlc3QsIENvcnJlY3RzSnVt
cHMpIHsKLSAgaW50NjRfdCBrTWluRGVsdGFNcyA9IC0yMDsKLSAgaW50NjRfdCBrTWF4RGVsdGFE
aWZmTXMgPSAxMDA7Ci0gIFJlY2VpdmVUaW1lQ2FsY3VsYXRvciBjYWxjKGtNaW5EZWx0YU1zLCBr
TWF4RGVsdGFEaWZmTXMpOwotICAvLyBJbml0aWFsaXplIG9mZnNldC4KLSAgUmVjb25jaWxlTXMo
JmNhbGMsIDEwMDAwLCAyMDAwMCk7Ci0KLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAx
MDAxMCwgMjAxMDApLCAyMDAxMCk7Ci0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAw
MjAsIDIwMTAwKSwgMjAwMjApOwotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMDMw
LCAyMDEwMCksIDIwMDMwKTsKLQotICAvLyBKdW1wIGZvcndhcmQgaW4gdGltZS4KLSAgRVhQRUNU
X0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDI0MCwgMjAyMDApLCAyMDIwMCk7Ci0gIEVYUEVDVF9F
UShSZWNvbmNpbGVNcygmY2FsYywgMTAyNTAsIDIwMjAwKSwgMjAyMTApOwotICBFWFBFQ1RfRVEo
UmVjb25jaWxlTXMoJmNhbGMsIDEwMjYwLCAyMDIwMCksIDIwMjIwKTsKLQotICAvLyBKdW1wIGJh
Y2t3YXJkIGluIHRpbWUuCi0gIEVYUEVDVF9FUShSZWNvbmNpbGVNcygmY2FsYywgMTAyMzAsIDIw
MzAwKSwgMjAzMDApOwotICBFWFBFQ1RfRVEoUmVjb25jaWxlTXMoJmNhbGMsIDEwMjQwLCAyMDMw
MCksIDIwMzEwKTsKLSAgRVhQRUNUX0VRKFJlY29uY2lsZU1zKCZjYWxjLCAxMDI1MCwgMjAzMDAp
LCAyMDMyMCk7Ci19CisgcHJpdmF0ZToKKyAgaW50NjRfdCBjbG9ja191c187CisgIGFic2w6Om9w
dGlvbmFsPGludDY0X3Q+IGxhc3RfcXVlcnlfdXNfOworICBmbG9hdCBkcmlmdF87CisgIGZsb2F0
IGFjY3VtdWxhdGVkX2RyaWZ0X3VzXyA9IDA7Cit9OwogCi19ICAvLyBuYW1lc3BhY2UgdGVzdAor
Y2xhc3MgRW11bGF0ZWRNb25vdG9uZW91c0Nsb2NrIDogcHVibGljIEVtdWxhdGVkQ2xvY2sgewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgRW11bGF0ZWRNb25vdG9uZW91c0Nsb2NrKGludCBzZWVkKSA6
IEVtdWxhdGVkQ2xvY2soc2VlZCkge30KKyAgfkVtdWxhdGVkTW9ub3RvbmVvdXNDbG9jaygpID0g
ZGVmYXVsdDsKKworICBpbnQ2NF90IFF1ZXJ5KGludDY0X3QgdGltZV91cykgeworICAgIGludDY0
X3Qgc2tpcF91cyA9IFVwZGF0ZUNsb2NrKHRpbWVfdXMpOworCisgICAgLy8gSW4gYSBzdGFsbAor
ICAgIGlmIChzdGFsbF9yZWNvdmVyeV90aW1lX3VzXyA+IDApIHsKKyAgICAgIGlmIChHZXRDbG9j
a1VzKCkgPiBzdGFsbF9yZWNvdmVyeV90aW1lX3VzXykgeworICAgICAgICBzdGFsbF9yZWNvdmVy
eV90aW1lX3VzXyA9IDA7CisgICAgICAgIHJldHVybiBHZXRDbG9ja1VzKCk7CisgICAgICB9IGVs
c2UgeworICAgICAgICByZXR1cm4gc3RhbGxfcmVjb3ZlcnlfdGltZV91c187CisgICAgICB9Cisg
ICAgfQorCisgICAgLy8gQ2hlY2sgaWYgd2UgZW50ZXIgYSBzdGFsbAorICAgIGZvciAoaW50IGsg
PSAwOyBrIDwgc2tpcF91czsgKytrKSB7CisgICAgICBpZiAocmFuZG9tXy5SYW5kPGRvdWJsZT4o
KSA8IGtDaGFuY2VPZlN0YWxsUGVyVXMpIHsKKyAgICAgICAgaW50NjRfdCBzdGFsbF9kdXJhdGlv
bl91cyA9CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ2NF90PihyYW5kb21fLlJhbmQ8Zmxv
YXQ+KCkgKiBrTWF4U3RhbGxEdXJhdGlvblVzKTsKKyAgICAgICAgc3RhbGxfcmVjb3ZlcnlfdGlt
ZV91c18gPSBHZXRDbG9ja1VzKCkgKyBzdGFsbF9kdXJhdGlvbl91czsKKyAgICAgICAgcmV0dXJu
IHN0YWxsX3JlY292ZXJ5X3RpbWVfdXNfOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gR2V0
Q2xvY2tVcygpOworICB9CisKKyAgdm9pZCBGb3JjZVN0YWxsVXMoKSB7CisgICAgaW50NjRfdCBz
dGFsbF9kdXJhdGlvbl91cyA9CisgICAgICAgIHN0YXRpY19jYXN0PGludDY0X3Q+KHJhbmRvbV8u
UmFuZDxmbG9hdD4oKSAqIGtNYXhTdGFsbER1cmF0aW9uVXMpOworICAgIHN0YWxsX3JlY292ZXJ5
X3RpbWVfdXNfID0gR2V0Q2xvY2tVcygpICsgc3RhbGxfZHVyYXRpb25fdXM7CisgIH0KKworICBi
b29sIFN0YWxsZWQoKSBjb25zdCB7IHJldHVybiBzdGFsbF9yZWNvdmVyeV90aW1lX3VzXyA+IDA7
IH0KKworICBpbnQ2NF90IEdldFJlbWFpbmluZ1N0YWxsKGludDY0X3QgdGltZV91cykgY29uc3Qg
eworICAgIHJldHVybiBzdGFsbF9yZWNvdmVyeV90aW1lX3VzXyA+IDAgPyBzdGFsbF9yZWNvdmVy
eV90aW1lX3VzXyAtIEdldENsb2NrVXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAwOworICB9CisKKyAgY29uc3QgaW50NjRfdCBrTWF4U3RhbGxEdXJhdGlvblVz
ID0gcnRjOjprTnVtTWljcm9zZWNzUGVyU2VjOworCisgcHJpdmF0ZToKKyAgY29uc3QgZmxvYXQg
a0NoYW5jZU9mU3RhbGxQZXJVcyA9IDVlLTZmOworICBpbnQ2NF90IHN0YWxsX3JlY292ZXJ5X3Rp
bWVfdXNfID0gMDsKK307CiAKK2NsYXNzIEVtdWxhdGVkTm9uTW9ub3RvbmVvdXNDbG9jayA6IHB1
YmxpYyBFbXVsYXRlZENsb2NrIHsKKyBwdWJsaWM6CisgIEVtdWxhdGVkTm9uTW9ub3RvbmVvdXND
bG9jayhpbnQgc2VlZCwgaW50NjRfdCBkdXJhdGlvbl91cywgZmxvYXQgZHJpZnQgPSAwKQorICAg
ICAgOiBFbXVsYXRlZENsb2NrKHNlZWQsIGRyaWZ0KSB7CisgICAgUHJlZ2VuZXJhdGUoZHVyYXRp
b25fdXMpOworICB9CisgIH5FbXVsYXRlZE5vbk1vbm90b25lb3VzQ2xvY2soKSA9IGRlZmF1bHQ7
CisKKyAgdm9pZCBQcmVnZW5lcmF0ZShpbnQ2NF90IGR1cmF0aW9uX3VzKSB7CisgICAgaW50NjRf
dCB0aW1lX3NpbmNlX3Jlc2V0X3VzID0ga01pblRpbWVCZXR3ZWVuUmVzZXRzVXM7CisgICAgaW50
NjRfdCBjbG9ja19vZmZzZXRfdXMgPSAwOworICAgIGZvciAoaW50NjRfdCB0aW1lX3VzID0gMDsg
dGltZV91cyA8IGR1cmF0aW9uX3VzOyB0aW1lX3VzICs9IGtSZXNvbHV0aW9uVXMpIHsKKyAgICAg
IGludDY0X3Qgc2tpcF91cyA9IFVwZGF0ZUNsb2NrKHRpbWVfdXMpOworICAgICAgdGltZV9zaW5j
ZV9yZXNldF91cyArPSBza2lwX3VzOworICAgICAgaW50NjRfdCByZXNldF91cyA9IDA7CisgICAg
ICBpZiAodGltZV9zaW5jZV9yZXNldF91cyA+PSBrTWluVGltZUJldHdlZW5SZXNldHNVcykgewor
ICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IHNraXBfdXM7ICsraykgeworICAgICAgICAgIGlm
IChyYW5kb21fLlJhbmQ8ZG91YmxlPigpIDwga0NoYW5jZU9mUmVzZXRQZXJVcykgeworICAgICAg
ICAgICAgcmVzZXRfdXMgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PigyICogcmFuZG9tXy5SYW5kPGZs
b2F0PigpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01h
eEFic1Jlc2V0VXMpIC0KKyAgICAgICAgICAgICAgICAgICAgICAga01heEFic1Jlc2V0VXM7Cisg
ICAgICAgICAgICBjbG9ja19vZmZzZXRfdXMgKz0gcmVzZXRfdXM7CisgICAgICAgICAgICB0aW1l
X3NpbmNlX3Jlc2V0X3VzID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgcHJlZ2VuZXJhdGVkX2Nsb2NrXy5lbXBsYWNlX2JhY2so
R2V0Q2xvY2tVcygpICsgY2xvY2tfb2Zmc2V0X3VzKTsKKyAgICAgIHJlc2V0c191c18uZW1wbGFj
ZV9iYWNrKHJlc2V0X3VzKTsKKyAgICB9CisgIH0KKworICBpbnQ2NF90IFF1ZXJ5KGludDY0X3Qg
dGltZV91cykgeworICAgIHNpemVfdCBpeFN0YXJ0ID0KKyAgICAgICAgKGxhc3RfcmVzZXRfcXVl
cnlfdGltZV91c18gKyAoa1Jlc29sdXRpb25VcyA+PiAxKSkgLyBrUmVzb2x1dGlvblVzICsgMTsK
KyAgICBzaXplX3QgaXhFbmQgPSAodGltZV91cyArIChrUmVzb2x1dGlvblVzID4+IDEpKSAvIGtS
ZXNvbHV0aW9uVXM7CisgICAgaWYgKGl4RW5kID49IHByZWdlbmVyYXRlZF9jbG9ja18uc2l6ZSgp
KQorICAgICAgcmV0dXJuIC0xOworICAgIGxhc3RfcmVzZXRfc2l6ZV91c18gPSAwOworICAgIGZv
ciAoc2l6ZV90IGl4ID0gaXhTdGFydDsgaXggPD0gaXhFbmQ7ICsraXgpIHsKKyAgICAgIGlmIChy
ZXNldHNfdXNfW2l4XSAhPSAwKSB7CisgICAgICAgIGxhc3RfcmVzZXRfc2l6ZV91c18gPSByZXNl
dHNfdXNfW2l4XTsKKyAgICAgIH0KKyAgICB9CisgICAgbGFzdF9yZXNldF9xdWVyeV90aW1lX3Vz
XyA9IHRpbWVfdXM7CisgICAgcmV0dXJuIHByZWdlbmVyYXRlZF9jbG9ja19baXhFbmRdOworICB9
CisKKyAgYm9vbCBXYXNSZXNldCgpIGNvbnN0IHsgcmV0dXJuIGxhc3RfcmVzZXRfc2l6ZV91c18g
IT0gMDsgfQorICBib29sIFdhc05lZ2F0aXZlUmVzZXQoKSBjb25zdCB7IHJldHVybiBsYXN0X3Jl
c2V0X3NpemVfdXNfIDwgMDsgfQorICBpbnQ2NF90IEdldExhc3RSZXNldFVzKCkgY29uc3QgeyBy
ZXR1cm4gbGFzdF9yZXNldF9zaXplX3VzXzsgfQorCisgcHJpdmF0ZToKKyAgY29uc3QgZmxvYXQg
a0NoYW5jZU9mUmVzZXRQZXJVcyA9IDFlLTZmOworICBjb25zdCBpbnQ2NF90IGtNYXhBYnNSZXNl
dFVzID0gcnRjOjprTnVtTWljcm9zZWNzUGVyU2VjOworICBjb25zdCBpbnQ2NF90IGtNaW5UaW1l
QmV0d2VlblJlc2V0c1VzID0gMyAqIHJ0Yzo6a051bU1pY3Jvc2Vjc1BlclNlYzsKKyAgY29uc3Qg
aW50NjRfdCBrUmVzb2x1dGlvblVzID0gcnRjOjprTnVtTWljcm9zZWNzUGVyTWlsbGlzZWM7Cisg
IGludDY0X3QgbGFzdF9yZXNldF9xdWVyeV90aW1lX3VzXyA9IDA7CisgIGludDY0X3QgbGFzdF9y
ZXNldF9zaXplX3VzXyA9IDA7CisgIHN0ZDo6dmVjdG9yPGludDY0X3Q+IHByZWdlbmVyYXRlZF9j
bG9ja187CisgIHN0ZDo6dmVjdG9yPGludDY0X3Q+IHJlc2V0c191c187Cit9OworCitURVNUKENs
b2NrUmVwYWlyLCBOb0Nsb2NrRHJpZnQpIHsKKyAgY29uc3QgaW50IGtTZWVkcyA9IDEwOworICBj
b25zdCBpbnQga0ZpcnN0U2VlZCA9IDE7CisgIGNvbnN0IGludDY0X3Qga1J1bnRpbWVVcyA9IDEw
ICogcnRjOjprTnVtTWljcm9zZWNzUGVyU2VjOworICBjb25zdCBmbG9hdCBrRHJpZnQgPSAwLjBm
OworICBjb25zdCBpbnQ2NF90IGtNYXhQYWNrZXRJbnRlcmFycml2YWxVcyA9IDUwICogcnRjOjpr
TnVtTWljcm9zZWNzUGVyTWlsbGlzZWM7CisgIGZvciAoaW50IHNlZWQgPSBrRmlyc3RTZWVkOyBz
ZWVkIDwga1NlZWRzICsga0ZpcnN0U2VlZDsgKytzZWVkKSB7CisgICAgRW11bGF0ZWRNb25vdG9u
ZW91c0Nsb2NrIG1vbm90b25lX2Nsb2NrKHNlZWQpOworICAgIEVtdWxhdGVkTm9uTW9ub3RvbmVv
dXNDbG9jayBub25fbW9ub3RvbmVfY2xvY2soCisgICAgICAgIHNlZWQgKyAxLCBrUnVudGltZVVz
ICsgcnRjOjprTnVtTWljcm9zZWNzUGVyU2VjLCBrRHJpZnQpOworICAgIFJlY2VpdmVUaW1lQ2Fs
Y3VsYXRvciByZWNlcHRpb25fdGltZV90cmFja2VyOworICAgIGludDY0X3QgY29ycmVjdGVkX2Ns
b2NrXzAgPSAwOworICAgIGludDY0X3QgcmVzZXRfZHVyaW5nX3N0YWxsX3RvbF91cyA9IDA7Cisg
ICAgYm9vbCBpbml0aWFsX2Nsb2NrX3N0YWxsID0gdHJ1ZTsKKyAgICBpbnQ2NF90IGFjY3VtdWxh
dGVkX3VwcGVyX2JvdW5kX3RvbGVyYW5jZV91cyA9IDA7CisgICAgaW50NjRfdCBhY2N1bXVsYXRl
ZF9sb3dlcl9ib3VuZF90b2xlcmFuY2VfdXMgPSAwOworICAgIFJhbmRvbSByYW5kb20oMSk7Cisg
ICAgbW9ub3RvbmVfY2xvY2suRm9yY2VTdGFsbFVzKCk7CisgICAgaW50NjRfdCBsYXN0X3RpbWVf
dXMgPSAwOworICAgIGJvb2wgYWRkX3RvbGVyYW5jZV9vbl9uZXh0X3BhY2tldCA9IGZhbHNlOwor
ICAgIGludDY0X3QgbW9ub3RvbmVfbm9pc2VfdXMgPSAxMDAwOworCisgICAgZm9yIChpbnQ2NF90
IHRpbWVfdXMgPSAwOyB0aW1lX3VzIDwga1J1bnRpbWVVczsKKyAgICAgICAgIHRpbWVfdXMgKz0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4ocmFuZG9tLlJhbmQ8ZmxvYXQ+KCkgKgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTWF4UGFja2V0SW50ZXJhcnJpdmFsVXMpKSB7
CisgICAgICBpbnQ2NF90IHNvY2tldF90aW1lX3VzID0gbm9uX21vbm90b25lX2Nsb2NrLlF1ZXJ5
KHRpbWVfdXMpOworICAgICAgaW50NjRfdCBtb25vdG9uZV91cyA9IG1vbm90b25lX2Nsb2NrLlF1
ZXJ5KHRpbWVfdXMpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICogcmFuZG9tLlJh
bmQ8ZmxvYXQ+KCkgKiBtb25vdG9uZV9ub2lzZV91cyAtCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW9ub3RvbmVfbm9pc2VfdXM7CisgICAgICBpbnQ2NF90IHN5c3RlbV90aW1lX3VzID0g
bm9uX21vbm90b25lX2Nsb2NrLlF1ZXJ5KAorICAgICAgICAgIHRpbWVfdXMgKyBtb25vdG9uZV9j
bG9jay5HZXRSZW1haW5pbmdTdGFsbCh0aW1lX3VzKSk7CisKKyAgICAgIGludDY0X3QgY29ycmVj
dGVkX2Nsb2NrX3VzID0gcmVjZXB0aW9uX3RpbWVfdHJhY2tlci5SZWNvbmNpbGVSZWNlaXZlVGlt
ZXMoCisgICAgICAgICAgc29ja2V0X3RpbWVfdXMsIHN5c3RlbV90aW1lX3VzLCBtb25vdG9uZV91
cyk7CisgICAgICBpZiAodGltZV91cyA9PSAwKQorICAgICAgICBjb3JyZWN0ZWRfY2xvY2tfMCA9
IGNvcnJlY3RlZF9jbG9ja191czsKKworICAgICAgaWYgKGFkZF90b2xlcmFuY2Vfb25fbmV4dF9w
YWNrZXQpCisgICAgICAgIGFjY3VtdWxhdGVkX2xvd2VyX2JvdW5kX3RvbGVyYW5jZV91cyAtPSAo
dGltZV91cyAtIGxhc3RfdGltZV91cyk7CisKKyAgICAgIC8vIFBlcmZlY3QgcmVwYWlyIGNhbm5v
dCBiZSBhY2hpdmV2ZWQgaWYgbm9uLW1vbm90b25lIGNsb2NrIHJlc2V0cyBkdXJpbmcKKyAgICAg
IC8vIGEgbW9ub3RvbmUgY2xvY2sgc3RhbGwuCisgICAgICBhZGRfdG9sZXJhbmNlX29uX25leHRf
cGFja2V0ID0gZmFsc2U7CisgICAgICBpZiAobW9ub3RvbmVfY2xvY2suU3RhbGxlZCgpICYmIG5v
bl9tb25vdG9uZV9jbG9jay5XYXNSZXNldCgpKSB7CisgICAgICAgIHJlc2V0X2R1cmluZ19zdGFs
bF90b2xfdXMgPQorICAgICAgICAgICAgc3RkOjptYXgocmVzZXRfZHVyaW5nX3N0YWxsX3RvbF91
cywgdGltZV91cyAtIGxhc3RfdGltZV91cyk7CisgICAgICAgIGlmIChub25fbW9ub3RvbmVfY2xv
Y2suV2FzTmVnYXRpdmVSZXNldCgpKSB7CisgICAgICAgICAgYWRkX3RvbGVyYW5jZV9vbl9uZXh0
X3BhY2tldCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluaXRpYWxfY2xvY2tfc3Rh
bGwgJiYgIW5vbl9tb25vdG9uZV9jbG9jay5XYXNOZWdhdGl2ZVJlc2V0KCkpIHsKKyAgICAgICAg
ICAvLyBQb3NpdGl2ZSByZXNldHMgZHVyaW5nIGFuIGluaXRpYWwgY2xvY2sgc3RhbGwgY2Fubm90
IGJlIHJlcGFpcmVkCisgICAgICAgICAgLy8gYW5kIGVycm9yIHdpbGwgcHJvcGFnYXRlIHRocm91
Z2ggcmVzdCBvZiB0cmFjZS4KKyAgICAgICAgICBhY2N1bXVsYXRlZF91cHBlcl9ib3VuZF90b2xl
cmFuY2VfdXMgKz0KKyAgICAgICAgICAgICAgc3RkOjphYnMobm9uX21vbm90b25lX2Nsb2NrLkdl
dExhc3RSZXNldFVzKCkpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICByZXNl
dF9kdXJpbmdfc3RhbGxfdG9sX3VzID0gMDsKKyAgICAgICAgaW5pdGlhbF9jbG9ja19zdGFsbCA9
IGZhbHNlOworICAgICAgfQorICAgICAgaW50NjRfdCBlcnIgPSBjb3JyZWN0ZWRfY2xvY2tfdXMg
LSBjb3JyZWN0ZWRfY2xvY2tfMCAtIHRpbWVfdXM7CisKKyAgICAgIC8vIFJlc2V0cyBkdXJpbmcg
c3RhbGxzIG1heSBsZWFkIHRvIHNtYWxsIGVycm9ycyB0ZW1wb3JhcmlseS4KKyAgICAgIGludDY0
X3QgbG93ZXJfdG9sX3VzID0gYWNjdW11bGF0ZWRfbG93ZXJfYm91bmRfdG9sZXJhbmNlX3VzIC0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfZHVyaW5nX3N0YWxsX3RvbF91cyAt
IG1vbm90b25lX25vaXNlX3VzIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqIHJ0
Yzo6a051bU1pY3Jvc2Vjc1Blck1pbGxpc2VjOworICAgICAgRVhQRUNUX0dFKGVyciwgbG93ZXJf
dG9sX3VzKTsKKyAgICAgIGludDY0X3QgdXBwZXJfdG9sX3VzID0gYWNjdW11bGF0ZWRfdXBwZXJf
Ym91bmRfdG9sZXJhbmNlX3VzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ub3Rv
bmVfbm9pc2VfdXMgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICogcnRjOjprTnVt
TWljcm9zZWNzUGVyTWlsbGlzZWM7CisgICAgICBFWFBFQ1RfTEUoZXJyLCB1cHBlcl90b2xfdXMp
OworCisgICAgICBsYXN0X3RpbWVfdXMgPSB0aW1lX3VzOworICAgIH0KKyAgfQorfQorfSAgLy8g
bmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2Fs
bC9ydGNwX2RlbXV4ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3J0Y3BfZGVtdXhlci5jYwppbmRleCBkNDQxYzA1YjNkYjg1YmMzYTZlOTliODRk
NDk4NzE3YzRlN2U4Njg2Li5hMDZkMmE0NjA0YzQwMzgwN2MwYTI4YTZkZjY4MjU4MzIxNDM4YmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL3J0Y3BfZGVtdXhlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jYWxsL3J0Y3BfZGVtdXhlci5jYwpAQCAtMTMsNyArMTMsNiBAQAogI2luY2x1
ZGUgImFwaS9ydHBfaGVhZGVycy5oIgogI2luY2x1ZGUgImNhbGwvcnRjcF9wYWNrZXRfc2lua19p
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJjYWxsL3J0cF9ydGNwX2RlbXV4ZXJfaGVscGVyLmgiCi0j
aW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0Y3BfZGVt
dXhlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvcnRjcF9kZW11eGVyX3VuaXR0ZXN0LmNjCmluZGV4IDgwODM2NGFjYzVlODQzNDY3
NGJjMWIyOWY0MDVjZTdmNzJhY2U3NmEuLjZjZWI3YWI1ZDlkNjllOTM3ZjE0NjhhMDhkMjA1MGIx
N2I4MDEwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NhbGwvcnRjcF9kZW11eGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRjcF9kZW11eGVyX3VuaXR0ZXN0LmNj
CkBAIC0xNiw3ICsxNiw2IEBACiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5j
bHVkZSAiYXBpL3J0cF9oZWFkZXJzLmgiCiAjaW5jbHVkZSAiY2FsbC9ydGNwX3BhY2tldF9zaW5r
X2ludGVyZmFjZS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxk
L2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
YnllLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jYWxsL3J0cF9jb25maWcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9jb25maWcuY2MKaW5kZXggMTQ0NWMyNTUyZTQ5Mjk0
OGU2MjY5OThkN2UwYmM4ZmFiZjc5MTRiMC4uY2NlNzhhZDY0YzdkOTExMzBmZjIyZTliNDA1NDNj
MzJkOTQ2Mzc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY2FsbC9ydHBfY29uZmlnLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2NvbmZpZy5jYwpAQCAtMTAsNiArMTAsOSBAQAog
CiAjaW5jbHVkZSAiY2FsbC9ydHBfY29uZmlnLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgorCisj
aW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0
cmluZ19idWlsZGVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNjAsNiArNjMsNyBAQCBz
dGQ6OnN0cmluZyBSdHBDb25maWc6OlRvU3RyaW5nKCkgY29uc3QgewogICAgICA8PCAocnRjcF9t
b2RlID09IFJ0Y3BNb2RlOjprQ29tcG91bmQgPyAiUnRjcE1vZGU6OmtDb21wb3VuZCIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIlJ0Y3BNb2RlOjprUmVkdWNl
ZFNpemUiKTsKICAgc3MgPDwgIiwgbWF4X3BhY2tldF9zaXplOiAiIDw8IG1heF9wYWNrZXRfc2l6
ZTsKKyAgc3MgPDwgIiwgZXh0bWFwLWFsbG93LW1peGVkOiAiIDw8IChleHRtYXBfYWxsb3dfbWl4
ZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKICAgc3MgPDwgIiwgZXh0ZW5zaW9uczogWyI7CiAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7ICsraSkgewogICAgIHNzIDw8
IGV4dGVuc2lvbnNbaV0uVG9TdHJpbmcoKTsKQEAgLTEwOCwxOCArMTEyLDQgQEAgc3RkOjpzdHJp
bmcgUnRwQ29uZmlnOjpSdHg6OlRvU3RyaW5nKCkgY29uc3QgewogICBzcyA8PCAnfSc7CiAgIHJl
dHVybiBzcy5zdHIoKTsKIH0KLQotUnRjcENvbmZpZzo6UnRjcENvbmZpZygpID0gZGVmYXVsdDsK
LVJ0Y3BDb25maWc6OlJ0Y3BDb25maWcoY29uc3QgUnRjcENvbmZpZyYpID0gZGVmYXVsdDsKLVJ0
Y3BDb25maWc6On5SdGNwQ29uZmlnKCkgPSBkZWZhdWx0OwotCi1zdGQ6OnN0cmluZyBSdGNwQ29u
ZmlnOjpUb1N0cmluZygpIGNvbnN0IHsKLSAgY2hhciBidWZbMTAyNF07Ci0gIHJ0Yzo6U2ltcGxl
U3RyaW5nQnVpbGRlciBzcyhidWYpOwotICBzcyA8PCAie3ZpZGVvX3JlcG9ydF9pbnRlcnZhbF9t
czogIiA8PCB2aWRlb19yZXBvcnRfaW50ZXJ2YWxfbXM7Ci0gIHNzIDw8ICIsIGF1ZGlvX3JlcG9y
dF9pbnRlcnZhbF9tczogIiA8PCBhdWRpb19yZXBvcnRfaW50ZXJ2YWxfbXM7Ci0gIHNzIDw8ICd9
JzsKLSAgcmV0dXJuIHNzLnN0cigpOwotfQotCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0
cF9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvcnRwX2NvbmZpZy5oCmluZGV4IDhmOGQwM2EzYTgyNDJhNmIxOWY1YzVmNjViZDFjMmI2Mzg2
YjZhMDUuLjk3YWU5NTE3NjVjMmJkMjNlNDUyYTFmZDE0MGUxMTVhMzU4NjliZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2Nv
bmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvcnRwX2NvbmZpZy5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIENBTExfUlRQX0NPTkZJ
R19IXwogI2RlZmluZSBDQUxMX1JUUF9DT05GSUdfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgor
I2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+
CiAKQEAgLTc0LDYgKzc2LDkgQEAgc3RydWN0IFJ0cENvbmZpZyB7CiAgIC8vIE1heCBSVFAgcGFj
a2V0IHNpemUgZGVsaXZlcmVkIHRvIHNlbmQgdHJhbnNwb3J0IGZyb20gVmlkZW9FbmdpbmUuCiAg
IHNpemVfdCBtYXhfcGFja2V0X3NpemUgPSBrRGVmYXVsdE1heFBhY2tldFNpemU7CiAKKyAgLy8g
Q29ycmVzcG9uZHMgdG8gdGhlIFNEUCBhdHRyaWJ1dGUgZXh0bWFwLWFsbG93LW1peGVkLgorICBi
b29sIGV4dG1hcF9hbGxvd19taXhlZCA9IGZhbHNlOworCiAgIC8vIFJUUCBoZWFkZXIgZXh0ZW5z
aW9ucyB0byB1c2UgZm9yIHRoaXMgc2VuZCBzdHJlYW0uCiAgIHN0ZDo6dmVjdG9yPFJ0cEV4dGVu
c2lvbj4gZXh0ZW5zaW9uczsKIApAQCAtMTI5LDE3ICsxMzQsNSBAQCBzdHJ1Y3QgUnRwQ29uZmln
IHsKICAgLy8gUlRDUCBDTkFNRSwgc2VlIFJGQyAzNTUwLgogICBzdGQ6OnN0cmluZyBjX25hbWU7
CiB9OwotCi1zdHJ1Y3QgUnRjcENvbmZpZyB7Ci0gIFJ0Y3BDb25maWcoKTsKLSAgUnRjcENvbmZp
Zyhjb25zdCBSdGNwQ29uZmlnJik7Ci0gIH5SdGNwQ29uZmlnKCk7Ci0gIHN0ZDo6c3RyaW5nIFRv
U3RyaW5nKCkgY29uc3Q7Ci0KLSAgLy8gVGltZSBpbnRlcnZhbCBiZXR3ZWVuIFJUQ1AgcmVwb3J0
IGZvciB2aWRlbwotICBpbnQ2NF90IHZpZGVvX3JlcG9ydF9pbnRlcnZhbF9tcyA9IDEwMDA7Ci0g
IC8vIFRpbWUgaW50ZXJ2YWwgYmV0d2VlbiBSVENQIHJlcG9ydCBmb3IgYXVkaW8KLSAgaW50NjRf
dCBhdWRpb19yZXBvcnRfaW50ZXJ2YWxfbXMgPSA1MDAwOwotfTsKIH0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKICNlbmRpZiAgLy8gQ0FMTF9SVFBfQ09ORklHX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9kZW11eGVyX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9y
dHBfZGVtdXhlcl91bml0dGVzdC5jYwppbmRleCBiNWVkZTNjZDAzYTBjZTVmN2RmZGE4MTVhYzg5
MTAwMjcxYjZkNTM2Li4zYjgyMDBlNzgxOTg4OWE1MTYzYzljY2RkMDhhN2NmYTc2MTI3ZmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxs
L3J0cF9kZW11eGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX2RlbXV4ZXJfdW5pdHRlc3QuY2MKQEAgLTE3LDcgKzE3
LDYgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJjYWxsL3Nz
cmNfYmluZGluZ19vYnNlcnZlci5oIgogI2luY2x1ZGUgImNhbGwvdGVzdC9tb2NrX3J0cF9wYWNr
ZXRfc2lua19pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElO
VChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBf
aGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3BhcmFtcy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3BheWxvYWRf
cGFyYW1zLmNjCmluZGV4IGZmYmRhMWEyZGJlM2EzMjg2NjkxODRlNjJhZjYyYzk3YmRhZWI4MzYu
LjJhMzJlZWY3ODMzMmU4MDMzZWRiZThmZGRlYjExYjg4MDhiMzRkYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3BheWxvYWRf
cGFyYW1zLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvcnRwX3BheWxvYWRfcGFyYW1zLmNjCkBAIC0xNDQsNiArMTQ0LDggQEAgUlRQVmlkZW9I
ZWFkZXIgUnRwUGF5bG9hZFBhcmFtczo6R2V0UnRwVmlkZW9IZWFkZXIoCiAgIHJ0cF92aWRlb19o
ZWFkZXIucm90YXRpb24gPSBpbWFnZS5yb3RhdGlvbl87CiAgIHJ0cF92aWRlb19oZWFkZXIuY29u
dGVudF90eXBlID0gaW1hZ2UuY29udGVudF90eXBlXzsKICAgcnRwX3ZpZGVvX2hlYWRlci5wbGF5
b3V0X2RlbGF5ID0gaW1hZ2UucGxheW91dF9kZWxheV87CisgIHJ0cF92aWRlb19oZWFkZXIud2lk
dGggPSBpbWFnZS5fZW5jb2RlZFdpZHRoOworICBydHBfdmlkZW9faGVhZGVyLmhlaWdodCA9IGlt
YWdlLl9lbmNvZGVkSGVpZ2h0OwogCiAgIFNldFZpZGVvVGltaW5nKGltYWdlLCAmcnRwX3ZpZGVv
X2hlYWRlci52aWRlb190aW1pbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3BhcmFtcy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfcGF5bG9hZF9wYXJh
bXMuaAppbmRleCBmNjgyOWNhY2U1YzYyOWU1NWEyZWM5Y2Q1YTQ3MWNkNDlhNTVkZTg5Li5iOTFi
ZmU0YjJjNWRiMDBlMDJmMzljMTliOTJhNzA1NjQ2YWEwZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3BhcmFt
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwv
cnRwX3BheWxvYWRfcGFyYW1zLmgKQEAgLTE2LDcgKzE2LDYgQEAKIAogI2luY2x1ZGUgImFwaS92
aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgImNhbGwvcnRwX2NvbmZpZy5o
IgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3Jp
cHRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFk
ZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXNfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3BhcmFtc191bml0
dGVzdC5jYwppbmRleCBhM2NiMzc5ZDE4YTY1NTU0ODY4MjIyOTEzN2UzZThmZGJmNTUxYjUwLi45
YTUxOWJhMGE3ZjczMGZjNThiODBlNjliZjRhMTNlZmJiMTFkNzNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3Bh
cmFtc191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jYWxsL3J0cF9wYXlsb2FkX3BhcmFtc191bml0dGVzdC5jYwpAQCAtMzA5LDkgKzMw
OSwxMyBAQCBjbGFzcyBSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNoYXJlZF9m
cmFtZV9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVUeXBlIGZyYW1lX3R5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgIExheWVyU3luYyBsYXllcl9zeW5jLAotICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnNldDxpbnQ2NF90PiYgZXhwZWN0ZWRfZGVwcykgeworICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnNldDxpbnQ2NF90PiYgZXhwZWN0ZWRfZGVw
cywKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3Qgd2lkdGggPSAwLAorICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MTZfdCBoZWlnaHQgPSAwKSB7CiAgICAgRW5jb2RlZEltYWdlIGVu
Y29kZWRfaW1hZ2U7CiAgICAgZW5jb2RlZF9pbWFnZS5fZnJhbWVUeXBlID0gZnJhbWVfdHlwZTsK
KyAgICBlbmNvZGVkX2ltYWdlLl9lbmNvZGVkV2lkdGggPSB3aWR0aDsKKyAgICBlbmNvZGVkX2lt
YWdlLl9lbmNvZGVkSGVpZ2h0ID0gaGVpZ2h0OwogCiAgICAgQ29kZWNTcGVjaWZpY0luZm8gY29k
ZWNfaW5mb3t9OwogICAgIGNvZGVjX2luZm8uY29kZWNUeXBlID0ga1ZpZGVvQ29kZWNWUDg7CkBA
IC0zMzAsNiArMzM0LDkgQEAgY2xhc3MgUnRwUGF5bG9hZFBhcmFtc1ZwOFRvR2VuZXJpY1Rlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICBzdGQ6OnNldDxpbnQ2NF90PiBhY3R1YWxf
ZGVwcyhoZWFkZXIuZ2VuZXJpYy0+ZGVwZW5kZW5jaWVzLmJlZ2luKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLmdlbmVyaWMtPmRlcGVuZGVuY2llcy5lbmQoKSk7
CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2RlcHMsIGFjdHVhbF9kZXBzKTsKKworICAgIEVYUEVD
VF9FUShoZWFkZXIud2lkdGgsIHdpZHRoKTsKKyAgICBFWFBFQ1RfRVEoaGVhZGVyLmhlaWdodCwg
aGVpZ2h0KTsKICAgfQogCiAgcHJvdGVjdGVkOgpAQCAtMzM5LDEzICszNDYsMTMgQEAgY2xhc3Mg
UnRwUGF5bG9hZFBhcmFtc1ZwOFRvR2VuZXJpY1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKIH07CiAKIFRFU1RfRihSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5lcmljVGVzdCwgS2V5ZnJh
bWUpIHsKLSAgQ29udmVydEFuZENoZWNrKDAsIDAsIGtWaWRlb0ZyYW1lS2V5LCBrTm9TeW5jLCB7
fSk7CisgIENvbnZlcnRBbmRDaGVjaygwLCAwLCBrVmlkZW9GcmFtZUtleSwga05vU3luYywge30s
IDQ4MCwgMzYwKTsKICAgQ29udmVydEFuZENoZWNrKDAsIDEsIGtWaWRlb0ZyYW1lRGVsdGEsIGtO
b1N5bmMsIHswfSk7Ci0gIENvbnZlcnRBbmRDaGVjaygwLCAyLCBrVmlkZW9GcmFtZUtleSwga05v
U3luYywge30pOworICBDb252ZXJ0QW5kQ2hlY2soMCwgMiwga1ZpZGVvRnJhbWVLZXksIGtOb1N5
bmMsIHt9LCA0ODAsIDM2MCk7CiB9CiAKIFRFU1RfRihSdHBQYXlsb2FkUGFyYW1zVnA4VG9HZW5l
cmljVGVzdCwgVG9vSGlnaFRlbXBvcmFsSW5kZXgpIHsKLSAgQ29udmVydEFuZENoZWNrKDAsIDAs
IGtWaWRlb0ZyYW1lS2V5LCBrTm9TeW5jLCB7fSk7CisgIENvbnZlcnRBbmRDaGVjaygwLCAwLCBr
VmlkZW9GcmFtZUtleSwga05vU3luYywge30sIDQ4MCwgMzYwKTsKIAogICBFbmNvZGVkSW1hZ2Ug
ZW5jb2RlZF9pbWFnZTsKICAgZW5jb2RlZF9pbWFnZS5fZnJhbWVUeXBlID0ga1ZpZGVvRnJhbWVE
ZWx0YTsKQEAgLTM2Miw3ICszNjksNyBAQCBURVNUX0YoUnRwUGF5bG9hZFBhcmFtc1ZwOFRvR2Vu
ZXJpY1Rlc3QsIFRvb0hpZ2hUZW1wb3JhbEluZGV4KSB7CiAKIFRFU1RfRihSdHBQYXlsb2FkUGFy
YW1zVnA4VG9HZW5lcmljVGVzdCwgTGF5ZXJTeW5jKSB7CiAgIC8vIDAyMTIwMjEyIHBhdHRlcm4K
LSAgQ29udmVydEFuZENoZWNrKDAsIDAsIGtWaWRlb0ZyYW1lS2V5LCBrTm9TeW5jLCB7fSk7Cisg
IENvbnZlcnRBbmRDaGVjaygwLCAwLCBrVmlkZW9GcmFtZUtleSwga05vU3luYywge30sIDQ4MCwg
MzYwKTsKICAgQ29udmVydEFuZENoZWNrKDIsIDEsIGtWaWRlb0ZyYW1lRGVsdGEsIGtOb1N5bmMs
IHswfSk7CiAgIENvbnZlcnRBbmRDaGVjaygxLCAyLCBrVmlkZW9GcmFtZURlbHRhLCBrTm9TeW5j
LCB7MH0pOwogICBDb252ZXJ0QW5kQ2hlY2soMiwgMywga1ZpZGVvRnJhbWVEZWx0YSwga05vU3lu
YywgezAsIDEsIDJ9KTsKQEAgLTM3NSw3ICszODIsNyBAQCBURVNUX0YoUnRwUGF5bG9hZFBhcmFt
c1ZwOFRvR2VuZXJpY1Rlc3QsIExheWVyU3luYykgewogCiBURVNUX0YoUnRwUGF5bG9hZFBhcmFt
c1ZwOFRvR2VuZXJpY1Rlc3QsIEZyYW1lSWRHYXBzKSB7CiAgIC8vIDAxMDEgcGF0dGVybgotICBD
b252ZXJ0QW5kQ2hlY2soMCwgMCwga1ZpZGVvRnJhbWVLZXksIGtOb1N5bmMsIHt9KTsKKyAgQ29u
dmVydEFuZENoZWNrKDAsIDAsIGtWaWRlb0ZyYW1lS2V5LCBrTm9TeW5jLCB7fSwgNDgwLCAzNjAp
OwogICBDb252ZXJ0QW5kQ2hlY2soMSwgMSwga1ZpZGVvRnJhbWVEZWx0YSwga05vU3luYywgezB9
KTsKIAogICBDb252ZXJ0QW5kQ2hlY2soMCwgNSwga1ZpZGVvRnJhbWVEZWx0YSwga05vU3luYywg
ezB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxl
cl9zZW5kLmNjCmluZGV4IDU0YWVmMjFmZDllYWZjOTEzM2MzNjNlNTU2ZWJmMjMyYzZlZDRmMzcu
LjUyNjVjOTVhZmI4MTA0MTI4ZDM0MGY3MjY5ZDk1MTlkNmQ3NzcyN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9y
dF9jb250cm9sbGVyX3NlbmQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5jYwpAQCAtMjYs
MTEgKzI2LDYgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWF4T3ZlcmhlYWRCeXRlcyA9IDUwMDsK
IGNvbnN0IGNoYXIga1Rhc2tRdWV1ZUV4cGVyaW1lbnRbXSA9ICJXZWJSVEMtVGFza1F1ZXVlQ29u
Z2VzdGlvbkNvbnRyb2wiOwogdXNpbmcgVGFza1F1ZXVlQ29udHJvbGxlciA9IHdlYnJ0Yzo6d2Vi
cnRjX2NjOjpTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOwogCi1ib29sIFRhc2tRdWV1ZUV4
cGVyaW1lbnRFbmFibGVkKCkgewotICBzdGQ6OnN0cmluZyB0cmlhbCA9IHdlYnJ0Yzo6ZmllbGRf
dHJpYWw6OkZpbmRGdWxsTmFtZShrVGFza1F1ZXVlRXhwZXJpbWVudCk7Ci0gIHJldHVybiB0cmlh
bC5maW5kKCJFbmFibGUiKSA9PSAwOwotfQotCiBzdGQ6OnVuaXF1ZV9wdHI8U2VuZFNpZGVDb25n
ZXN0aW9uQ29udHJvbGxlckludGVyZmFjZT4gQ3JlYXRlQ29udHJvbGxlcigKICAgICBDbG9jayog
Y2xvY2ssCiAgICAgcnRjOjpUYXNrUXVldWUqIHRhc2tfcXVldWUsCkBAIC03MCw5ICs2NSw5IEBA
IFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kOjpSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZCgK
ICAgICAgIHJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8oY2xvY2ssIGtSZXRyYW5zbWl0V2lu
ZG93U2l6ZU1zKSwKICAgICAgIHRhc2tfcXVldWVfKCJydHBfc2VuZF9jb250cm9sbGVyIikgewog
ICAvLyBDcmVhdGVkIGFmdGVyIHRhc2tfcXVldWUgdG8gYmUgYWJsZSB0byBwb3N0IHRvIHRoZSB0
YXNrIHF1ZXVlIGludGVybmFsbHkuCi0gIHNlbmRfc2lkZV9jY18gPQotICAgICAgQ3JlYXRlQ29u
dHJvbGxlcihjbG9jaywgJnRhc2tfcXVldWVfLCBldmVudF9sb2csICZwYWNlcl8sIGJpdHJhdGVf
Y29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICBUYXNrUXVldWVFeHBlcmltZW50RW5hYmxl
ZCgpLCBjb250cm9sbGVyX2ZhY3RvcnkpOworICBzZW5kX3NpZGVfY2NfID0gQ3JlYXRlQ29udHJv
bGxlcigKKyAgICAgIGNsb2NrLCAmdGFza19xdWV1ZV8sIGV2ZW50X2xvZywgJnBhY2VyXywgYml0
cmF0ZV9jb25maWcsCisgICAgICAhZmllbGRfdHJpYWw6OklzRGlzYWJsZWQoa1Rhc2tRdWV1ZUV4
cGVyaW1lbnQpLCBjb250cm9sbGVyX2ZhY3RvcnkpOwogCiAgIHByb2Nlc3NfdGhyZWFkXy0+UmVn
aXN0ZXJNb2R1bGUoJnBhY2VyXywgUlRDX0ZST01fSEVSRSk7CiAgIHByb2Nlc3NfdGhyZWFkXy0+
UmVnaXN0ZXJNb2R1bGUoc2VuZF9zaWRlX2NjXy5nZXQoKSwgUlRDX0ZST01fSEVSRSk7CkBAIC05
MCwxOCArODUsMjAgQEAgUnRwVmlkZW9TZW5kZXJJbnRlcmZhY2UqIFJ0cFRyYW5zcG9ydENvbnRy
b2xsZXJTZW5kOjpDcmVhdGVSdHBWaWRlb1NlbmRlcigKICAgICBzdGQ6Om1hcDx1aW50MzJfdCwg
UnRwU3RhdGU+IHN1c3BlbmRlZF9zc3JjcywKICAgICBjb25zdCBzdGQ6Om1hcDx1aW50MzJfdCwg
UnRwUGF5bG9hZFN0YXRlPiYgc3RhdGVzLAogICAgIGNvbnN0IFJ0cENvbmZpZyYgcnRwX2NvbmZp
ZywKLSAgICBjb25zdCBSdGNwQ29uZmlnJiBydGNwX2NvbmZpZywKKyAgICBpbnQgcnRjcF9yZXBv
cnRfaW50ZXJ2YWxfbXMsCiAgICAgVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwKICAgICBjb25z
dCBSdHBTZW5kZXJPYnNlcnZlcnMmIG9ic2VydmVycywKICAgICBSdGNFdmVudExvZyogZXZlbnRf
bG9nLAotICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNfY29udHJvbGxlcikg
eworICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNfY29udHJvbGxlciwKKyAg
ICBjb25zdCBSdHBTZW5kZXJGcmFtZUVuY3J5cHRpb25Db25maWcmIGZyYW1lX2VuY3J5cHRpb25f
Y29uZmlnKSB7CiAgIHZpZGVvX3J0cF9zZW5kZXJzXy5wdXNoX2JhY2soYWJzbDo6bWFrZV91bmlx
dWU8UnRwVmlkZW9TZW5kZXI+KAotICAgICAgc3NyY3MsIHN1c3BlbmRlZF9zc3Jjcywgc3RhdGVz
LCBydHBfY29uZmlnLCBydGNwX2NvbmZpZywgc2VuZF90cmFuc3BvcnQsCi0gICAgICBvYnNlcnZl
cnMsCisgICAgICBzc3Jjcywgc3VzcGVuZGVkX3NzcmNzLCBzdGF0ZXMsIHJ0cF9jb25maWcsIHJ0
Y3BfcmVwb3J0X2ludGVydmFsX21zLAorICAgICAgc2VuZF90cmFuc3BvcnQsIG9ic2VydmVycywK
ICAgICAgIC8vIFRPRE8oaG9sbWVyKTogUmVtb3ZlIHRoaXMgY2lyY3VsYXIgZGVwZW5kZW5jeSBi
eSBpbmplY3RpbmcKICAgICAgIC8vIHRoZSBwYXJ0cyBvZiBSdHBUcmFuc3BvcnRDb250cm9sbGVy
U2VuZEludGVyZmFjZSB0aGF0IGFyZSByZWFsbHkgdXNlZC4KLSAgICAgIHRoaXMsIGV2ZW50X2xv
ZywgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sCi0gICAgICBzdGQ6Om1vdmUoZmVjX2Nv
bnRyb2xsZXIpKSk7CisgICAgICB0aGlzLCBldmVudF9sb2csICZyZXRyYW5zbWlzc2lvbl9yYXRl
X2xpbWl0ZXJfLCBzdGQ6Om1vdmUoZmVjX2NvbnRyb2xsZXIpLAorICAgICAgZnJhbWVfZW5jcnlw
dGlvbl9jb25maWcuZnJhbWVfZW5jcnlwdG9yLAorICAgICAgZnJhbWVfZW5jcnlwdGlvbl9jb25m
aWcuY3J5cHRvX29wdGlvbnMpKTsKICAgcmV0dXJuIHZpZGVvX3J0cF9zZW5kZXJzXy5iYWNrKCku
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9jb250
cm9sbGVyX3NlbmQuaAppbmRleCA2YWFmMjlkNmJjMzdiODMzMjNjNzhhYTNlNDUzMDEyNjFmMDIz
NDE2Li5mMWM0NmNjMDc4NTVkZGVmN2U0MTJjNjY4MGQxOWM1YjY4YzI5ZGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF90cmFu
c3BvcnRfY29udHJvbGxlcl9zZW5kLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5oCkBAIC0y
MCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiY2FsbC9ydHBfYml0cmF0ZV9jb25maWd1cmF0b3IuaCIK
ICNpbmNsdWRlICJjYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kX2ludGVyZmFjZS5o
IgogI2luY2x1ZGUgImNhbGwvcnRwX3ZpZGVvX3NlbmRlci5oIgotI2luY2x1ZGUgImNvbW1vbl90
eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvaW5jbHVkZS9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVy
X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3V0aWxpdHkvaW5jbHVkZS9wcm9jZXNzX3RocmVhZC5oIgpAQCAt
MjksNyArMjgsOSBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CisKIGNsYXNzIENsb2NrOworY2xhc3MgRnJhbWVFbmNyeXB0b3JJbnRlcmZh
Y2U7CiBjbGFzcyBSdGNFdmVudExvZzsKIAogLy8gVE9ETyhuaXNzZSk6IFdoZW4gd2UgZ2V0IHRo
ZSB1bmRlcmx5aW5nIHRyYW5zcG9ydHMgaGVyZSwgd2Ugc2hvdWxkCkBAIC01MiwxMSArNTMsMTIg
QEAgY2xhc3MgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQgZmluYWwKICAgICAgIGNvbnN0IHN0
ZDo6bWFwPHVpbnQzMl90LCBSdHBQYXlsb2FkU3RhdGU+JgogICAgICAgICAgIHN0YXRlcywgIC8v
IG1vdmUgc3RhdGVzIGludG8gUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQKICAgICAgIGNvbnN0
IFJ0cENvbmZpZyYgcnRwX2NvbmZpZywKLSAgICAgIGNvbnN0IFJ0Y3BDb25maWcmIHJ0Y3BfY29u
ZmlnLAorICAgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zLAogICAgICAgVHJhbnNwb3J0
KiBzZW5kX3RyYW5zcG9ydCwKICAgICAgIGNvbnN0IFJ0cFNlbmRlck9ic2VydmVycyYgb2JzZXJ2
ZXJzLAogICAgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKLSAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxGZWNDb250cm9sbGVyPiBmZWNfY29udHJvbGxlcikgb3ZlcnJpZGU7CisgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RmVjQ29udHJvbGxlcj4gZmVjX2NvbnRyb2xsZXIsCisgICAgICBjb25zdCBSdHBT
ZW5kZXJGcmFtZUVuY3J5cHRpb25Db25maWcmIGZyYW1lX2VuY3J5cHRpb25fY29uZmlnKSBvdmVy
cmlkZTsKICAgdm9pZCBEZXN0cm95UnRwVmlkZW9TZW5kZXIoCiAgICAgICBSdHBWaWRlb1NlbmRl
ckludGVyZmFjZSogcnRwX3ZpZGVvX3NlbmRlcikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9y
dF9jb250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5kX2ludGVy
ZmFjZS5oCmluZGV4IDVjNTFjNTRmZTEzY2YxMDJmY2M1YWZkZDAyYzFhNWZkZmRiNjk3YjcuLjk4
Njg1ODVjZGY4MTEzOTI4YTFhZDYzZGQ2NWVlY2M5NzFjYzJmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3RyYW5zcG9ydF9j
b250cm9sbGVyX3NlbmRfaW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZF9pbnRl
cmZhY2UuaApAQCAtMjAsMTAgKzIwLDEyIEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlv
bmFsLmgiCiAjaW5jbHVkZSAiYXBpL2JpdHJhdGVfY29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJh
cGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKICNpbmNsdWRlICJhcGkvZmVjX2NvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L2JpdHJhdGVfc2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJjYWxsL3J0cF9jb25maWcuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRj
X2V2ZW50X2xvZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydGNwX3N0
YXRpc3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3Bf
ZGVmaW5lcy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKQEAgLTM1LDYgKzM3LDcgQEAgbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKIGNsYXNzIENhbGxTdGF0czsKIGNsYXNzIENhbGxTdGF0c09ic2VydmVyOwor
Y2xhc3MgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U7CiBjbGFzcyBUYXJnZXRUcmFuc2ZlclJhdGVP
YnNlcnZlcjsKIGNsYXNzIFRyYW5zcG9ydDsKIGNsYXNzIE1vZHVsZTsKQEAgLTYyLDYgKzY1LDEx
IEBAIHN0cnVjdCBSdHBTZW5kZXJPYnNlcnZlcnMgewogICBTZW5kUGFja2V0T2JzZXJ2ZXIqIHNl
bmRfcGFja2V0X29ic2VydmVyOwogfTsKIAorc3RydWN0IFJ0cFNlbmRlckZyYW1lRW5jcnlwdGlv
bkNvbmZpZyB7CisgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IgPSBu
dWxscHRyOworICBDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zOworfTsKKwogLy8gQW4gUnRw
VHJhbnNwb3J0Q29udHJvbGxlciBzaG91bGQgb3duIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGUg
UlRQCiAvLyB0cmFuc3BvcnQgdG8vZnJvbSBhIHJlbW90ZSBlbmRwb2ludC4gV2Ugc2hvdWxkIGhh
dmUgc2VwYXJhdGUKIC8vIGludGVyZmFjZXMgZm9yIHNlbmQgYW5kIHJlY2VpdmUgc2lkZSwgZXZl
biBpZiB0aGV5IGFyZSBpbXBsZW1lbnRlZApAQCAtOTcsMTEgKzEwNSwxMiBAQCBjbGFzcyBSdHBU
cmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSB7CiAgICAgICAvLyBUT0RPKGhvbG1lcik6
IE1vdmUgc3RhdGVzIGludG8gUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQuCiAgICAgICBjb25z
dCBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwUGF5bG9hZFN0YXRlPiYgc3RhdGVzLAogICAgICAgY29u
c3QgUnRwQ29uZmlnJiBydHBfY29uZmlnLAotICAgICAgY29uc3QgUnRjcENvbmZpZyYgcnRjcF9j
b25maWcsCisgICAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMsCiAgICAgICBUcmFuc3Bv
cnQqIHNlbmRfdHJhbnNwb3J0LAogICAgICAgY29uc3QgUnRwU2VuZGVyT2JzZXJ2ZXJzJiBvYnNl
cnZlcnMsCiAgICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAotICAgICAgc3RkOjp1bmlxdWVf
cHRyPEZlY0NvbnRyb2xsZXI+IGZlY19jb250cm9sbGVyKSA9IDA7CisgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RmVjQ29udHJvbGxlcj4gZmVjX2NvbnRyb2xsZXIsCisgICAgICBjb25zdCBSdHBTZW5k
ZXJGcmFtZUVuY3J5cHRpb25Db25maWcmIGZyYW1lX2VuY3J5cHRpb25fY29uZmlnKSA9IDA7CiAg
IHZpcnR1YWwgdm9pZCBEZXN0cm95UnRwVmlkZW9TZW5kZXIoCiAgICAgICBSdHBWaWRlb1NlbmRl
ckludGVyZmFjZSogcnRwX3ZpZGVvX3NlbmRlcikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF92aWRlb19zZW5kZXIu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF92
aWRlb19zZW5kZXIuY2MKaW5kZXggMTBkN2U3ZGFlZGE2ZDMyMTc1NmNhZjk5Mjg0NWVkYThkN2Nj
YTUyMi4uYmExYjk5MmU5NTAyNWFjYTU4YmM2Y2MyY2ZhMTE5MGNlYjgzODFkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlk
ZW9fc2VuZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvcnRwX3ZpZGVvX3NlbmRlci5jYwpAQCAtNDAsOCArNDAsOCBAQCBzdGF0aWMgY29u
c3Qgc2l6ZV90IGtQYXRoTVRVID0gMTUwMDsKIAogc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFJ0cFJ0Y3A+PiBDcmVhdGVSdHBSdGNwTW9kdWxlcygKICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1
aW50MzJfdD4mIHNzcmNzLAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiYgcHJvdGVj
dGVkX21lZGlhX3NzcmNzLAotICAgIGNvbnN0IFJ0Y3BDb25maWcmIHJ0Y3BfY29uZmlnLAorICAg
IGNvbnN0IFJ0cENvbmZpZyYgcnRwX2NvbmZpZywKKyAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2
YWxfbXMsCiAgICAgVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwKICAgICBSdGNwSW50cmFGcmFt
ZU9ic2VydmVyKiBpbnRyYV9mcmFtZV9jYWxsYmFjaywKICAgICBSdGNwQmFuZHdpZHRoT2JzZXJ2
ZXIqIGJhbmR3aWR0aF9jYWxsYmFjaywKQEAgLTU2LDggKzU2LDExIEBAIHN0ZDo6dmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxSdHBSdGNwPj4gQ3JlYXRlUnRwUnRjcE1vZHVsZXMoCiAgICAgUnRjRXZl
bnRMb2cqIGV2ZW50X2xvZywKICAgICBSYXRlTGltaXRlciogcmV0cmFuc21pc3Npb25fcmF0ZV9s
aW1pdGVyLAogICAgIE92ZXJoZWFkT2JzZXJ2ZXIqIG92ZXJoZWFkX29ic2VydmVyLAotICAgIFJ0
cEtlZXBBbGl2ZUNvbmZpZyBrZWVwYWxpdmVfY29uZmlnKSB7CisgICAgUnRwS2VlcEFsaXZlQ29u
ZmlnIGtlZXBhbGl2ZV9jb25maWcsCisgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZhY2UqIGZyYW1l
X2VuY3J5cHRvciwKKyAgICBjb25zdCBDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykgewog
ICBSVENfRENIRUNLX0dUKHNzcmNzLnNpemUoKSwgMCk7CisKICAgUnRwUnRjcDo6Q29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uOwogICBjb25maWd1cmF0aW9uLmF1ZGlvID0gZmFsc2U7CiAgIGNv
bmZpZ3VyYXRpb24ucmVjZWl2ZXJfb25seSA9IGZhbHNlOwpAQCAtNzksMTIgKzgyLDE1IEBAIHN0
ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBSdGNwPj4gQ3JlYXRlUnRwUnRjcE1vZHVsZXMo
CiAgIGNvbmZpZ3VyYXRpb24ucmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyID0gcmV0cmFuc21p
c3Npb25fcmF0ZV9saW1pdGVyOwogICBjb25maWd1cmF0aW9uLm92ZXJoZWFkX29ic2VydmVyID0g
b3ZlcmhlYWRfb2JzZXJ2ZXI7CiAgIGNvbmZpZ3VyYXRpb24ua2VlcGFsaXZlX2NvbmZpZyA9IGtl
ZXBhbGl2ZV9jb25maWc7Ci0gIGNvbmZpZ3VyYXRpb24ucnRjcF9pbnRlcnZhbF9jb25maWcudmlk
ZW9faW50ZXJ2YWxfbXMgPQotICAgICAgcnRjcF9jb25maWcudmlkZW9fcmVwb3J0X2ludGVydmFs
X21zOwotICBjb25maWd1cmF0aW9uLnJ0Y3BfaW50ZXJ2YWxfY29uZmlnLmF1ZGlvX2ludGVydmFs
X21zID0KLSAgICAgIHJ0Y3BfY29uZmlnLmF1ZGlvX3JlcG9ydF9pbnRlcnZhbF9tczsKKyAgY29u
ZmlndXJhdGlvbi5mcmFtZV9lbmNyeXB0b3IgPSBmcmFtZV9lbmNyeXB0b3I7CisgIGNvbmZpZ3Vy
YXRpb24ucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uID0KKyAgICAgIGNyeXB0b19vcHRpb25zLnNm
cmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb247CisgIGNvbmZpZ3VyYXRpb24uZXh0bWFwX2Fs
bG93X21peGVkID0gcnRwX2NvbmZpZy5leHRtYXBfYWxsb3dfbWl4ZWQ7CisgIGNvbmZpZ3VyYXRp
b24ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPSBydGNwX3JlcG9ydF9pbnRlcnZhbF9tczsKKwog
ICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwUnRjcD4+IG1vZHVsZXM7Ci0gIGNvbnN0
IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiYgZmxleGZlY19wcm90ZWN0ZWRfc3NyY3MgPSBwcm90ZWN0
ZWRfbWVkaWFfc3NyY3M7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiYgZmxleGZlY19w
cm90ZWN0ZWRfc3NyY3MgPQorICAgICAgcnRwX2NvbmZpZy5mbGV4ZmVjLnByb3RlY3RlZF9tZWRp
YV9zc3JjczsKICAgZm9yICh1aW50MzJfdCBzc3JjIDogc3NyY3MpIHsKICAgICBib29sIGVuYWJs
ZV9mbGV4ZmVjID0gZmxleGZlY19zZW5kZXIgIT0gbnVsbHB0ciAmJgogICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmZpbmQoZmxleGZlY19wcm90ZWN0ZWRfc3NyY3MuYmVnaW4oKSwKQEAg
LTE3NywxMyArMTgzLDE1IEBAIFJ0cFZpZGVvU2VuZGVyOjpSdHBWaWRlb1NlbmRlcigKICAgICBz
dGQ6Om1hcDx1aW50MzJfdCwgUnRwU3RhdGU+IHN1c3BlbmRlZF9zc3JjcywKICAgICBjb25zdCBz
dGQ6Om1hcDx1aW50MzJfdCwgUnRwUGF5bG9hZFN0YXRlPiYgc3RhdGVzLAogICAgIGNvbnN0IFJ0
cENvbmZpZyYgcnRwX2NvbmZpZywKLSAgICBjb25zdCBSdGNwQ29uZmlnJiBydGNwX2NvbmZpZywK
KyAgICBpbnQgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMsCiAgICAgVHJhbnNwb3J0KiBzZW5kX3Ry
YW5zcG9ydCwKICAgICBjb25zdCBSdHBTZW5kZXJPYnNlcnZlcnMmIG9ic2VydmVycywKICAgICBS
dHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZEludGVyZmFjZSogdHJhbnNwb3J0LAogICAgIFJ0Y0V2
ZW50TG9nKiBldmVudF9sb2csCiAgICAgUmF0ZUxpbWl0ZXIqIHJldHJhbnNtaXNzaW9uX2xpbWl0
ZXIsCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+IGZlY19jb250cm9sbGVyKQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNfY29udHJvbGxlciwKKyAgICBG
cmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAgIGNvbnN0IENyeXB0
b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKQogICAgIDogc2VuZF9zaWRlX2J3ZV93aXRoX292ZXJo
ZWFkXygKICAgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1T
ZW5kU2lkZUJ3ZS1XaXRoT3ZlcmhlYWQiKSksCiAgICAgICBhY3RpdmVfKGZhbHNlKSwKQEAgLTE5
MSwyNSArMTk5LDI2IEBAIFJ0cFZpZGVvU2VuZGVyOjpSdHBWaWRlb1NlbmRlcigKICAgICAgIHN1
c3BlbmRlZF9zc3Jjc18oc3RkOjptb3ZlKHN1c3BlbmRlZF9zc3JjcykpLAogICAgICAgZmxleGZl
Y19zZW5kZXJfKE1heWJlQ3JlYXRlRmxleGZlY1NlbmRlcihydHBfY29uZmlnLCBzdXNwZW5kZWRf
c3NyY3NfKSksCiAgICAgICBmZWNfY29udHJvbGxlcl8oc3RkOjptb3ZlKGZlY19jb250cm9sbGVy
KSksCi0gICAgICBydHBfbW9kdWxlc18oCi0gICAgICAgICAgQ3JlYXRlUnRwUnRjcE1vZHVsZXMo
c3NyY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX2NvbmZpZy5mbGV4ZmVj
LnByb3RlY3RlZF9tZWRpYV9zc3JjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dGNwX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX3RyYW5zcG9y
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMuaW50cmFfZnJhbWVf
Y2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5HZXRC
YW5kd2lkdGhPYnNlcnZlcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
cG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMucnRjcF9ydHRf
c3RhdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleGZlY19zZW5kZXJfLmdl
dCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5iaXRyYXRlX29i
c2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5mcmFtZV9j
b3VudF9vYnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMu
cnRjcF90eXBlX29ic2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2Vy
dmVycy5zZW5kX2RlbGF5X29ic2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9ic2VydmVycy5zZW5kX3BhY2tldF9vYnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBldmVudF9sb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cmFu
c21pc3Npb25fbGltaXRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydC0+a2VlcGFsaXZlX2NvbmZp
ZygpKSksCisgICAgICBydHBfbW9kdWxlc18oQ3JlYXRlUnRwUnRjcE1vZHVsZXMoc3NyY3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX2NvbmZpZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGNwX3JlcG9ydF9pbnRlcnZhbF9t
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX3RyYW5zcG9y
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMuaW50
cmFfZnJhbWVfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNwb3J0LT5HZXRCYW5kd2lkdGhPYnNlcnZlcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvYnNlcnZlcnMucnRjcF9ydHRfc3RhdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleGZlY19zZW5kZXJfLmdldCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5iaXRyYXRlX29ic2Vy
dmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5m
cmFtZV9jb3VudF9vYnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvYnNlcnZlcnMucnRjcF90eXBlX29ic2VydmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5zZW5kX2RlbGF5X29ic2VydmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVycy5zZW5kX3BhY2tldF9v
YnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9s
b2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cmFuc21pc3Np
b25fbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydC0+a2Vl
cGFsaXZlX2NvbmZpZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZyYW1lX2VuY3J5cHRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcnlwdG9fb3B0aW9ucykpLAogICAgICAgcnRwX2NvbmZpZ18ocnRwX2NvbmZpZyksCiAgICAg
ICB0cmFuc3BvcnRfKHRyYW5zcG9ydCksCiAgICAgICB0cmFuc3BvcnRfb3ZlcmhlYWRfYnl0ZXNf
cGVyX3BhY2tldF8oMCksCkBAIC0yNDYsOSArMjU1LDYgQEAgUnRwVmlkZW9TZW5kZXI6OlJ0cFZp
ZGVvU2VuZGVyKAogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJ0cF9jb25maWdfLmV4dGVuc2lv
bnMuc2l6ZSgpOyArK2kpIHsKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXh0ZW5zaW9uID0gcnRw
X2NvbmZpZ18uZXh0ZW5zaW9uc1tpXS51cmk7CiAgICAgaW50IGlkID0gcnRwX2NvbmZpZ18uZXh0
ZW5zaW9uc1tpXS5pZDsKLSAgICAvLyBPbmUtYnl0ZS1leHRlbnNpb24gbG9jYWwgaWRlbnRpZmll
cnMgYXJlIGluIHRoZSByYW5nZSAxLTE0IGluY2x1c2l2ZS4KLSAgICBSVENfRENIRUNLX0dFKGlk
LCAxKTsKLSAgICBSVENfRENIRUNLX0xFKGlkLCAxNCk7CiAgICAgUlRDX0RDSEVDSyhSdHBFeHRl
bnNpb246OklzU3VwcG9ydGVkRm9yVmlkZW8oZXh0ZW5zaW9uKSk7CiAgICAgZm9yIChhdXRvJiBy
dHBfcnRjcCA6IHJ0cF9tb2R1bGVzXykgewogICAgICAgUlRDX0NIRUNLKHJ0cF9ydGNwLT5SZWdp
c3RlclJ0cEhlYWRlckV4dGVuc2lvbihleHRlbnNpb24sIGlkKSk7CkBAIC01OTIsMTIgKzU5OCwx
NCBAQCB2b2lkIFJ0cFZpZGVvU2VuZGVyOjpPbkJpdHJhdGVVcGRhdGVkKHVpbnQzMl90IGJpdHJh
dGVfYnBzLAogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7CiAgIHVpbnQzMl90IHBheWxv
YWRfYml0cmF0ZV9icHMgPSBiaXRyYXRlX2JwczsKICAgaWYgKHNlbmRfc2lkZV9id2Vfd2l0aF9v
dmVyaGVhZF8pIHsKLSAgICBwYXlsb2FkX2JpdHJhdGVfYnBzIC09IENhbGN1bGF0ZU92ZXJoZWFk
UmF0ZUJwcygKKyAgICB1aW50MzJfdCBvdmVyaGVhZF9icHMgPSBDYWxjdWxhdGVPdmVyaGVhZFJh
dGVCcHMoCiAgICAgICAgIENhbGN1bGF0ZVBhY2tldFJhdGUoCiAgICAgICAgICAgICBiaXRyYXRl
X2JwcywKICAgICAgICAgICAgIHJ0cF9jb25maWdfLm1heF9wYWNrZXRfc2l6ZSArIHRyYW5zcG9y
dF9vdmVyaGVhZF9ieXRlc19wZXJfcGFja2V0XyksCiAgICAgICAgIG92ZXJoZWFkX2J5dGVzX3Bl
cl9wYWNrZXRfICsgdHJhbnNwb3J0X292ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXRfLAogICAgICAg
ICBiaXRyYXRlX2Jwcyk7CisgICAgUlRDX0RDSEVDS19MRShvdmVyaGVhZF9icHMsIGJpdHJhdGVf
YnBzKTsKKyAgICBwYXlsb2FkX2JpdHJhdGVfYnBzID0gYml0cmF0ZV9icHMgLSBvdmVyaGVhZF9i
cHM7CiAgIH0KIAogICAvLyBHZXQgdGhlIGVuY29kZXIgdGFyZ2V0IHJhdGUuIEl0IGlzIHRoZSBl
c3RpbWF0ZWQgbmV0d29yayByYXRlIC0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3ZpZGVvX3NlbmRlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlkZW9fc2VuZGVyLmgK
aW5kZXggZGIzMjliZTAwYjA0NDcwZmIzOTE3ZjQyMGRmNDg1YzNkNWI4YjI5MC4uYWRhYzQ2YmNk
ODEzMDg0NjU0YjM2Y2Y3NDIxMTdjZjUyZjFhN2NmYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlkZW9fc2VuZGVyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9ydHBfdmlk
ZW9fc2VuZGVyLmgKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJjYWxsL3J0cF9wYXlsb2Fk
X3BhcmFtcy5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmRf
aW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfdmlkZW9fc2VuZGVyX2ludGVyZmFjZS5o
IgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAj
aW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZlY19zZW5kZXIuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdmlkZW9faGVhZGVyLmgiCkBAIC0zNiw2ICszNSw3
IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFj
ZTsKIGNsYXNzIFJUUEZyYWdtZW50YXRpb25IZWFkZXI7CiBjbGFzcyBSdHBSdGNwOwogY2xhc3Mg
UnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2U7CkBAIC01MywxMyArNTMsMTUgQEAg
Y2xhc3MgUnRwVmlkZW9TZW5kZXIgOiBwdWJsaWMgUnRwVmlkZW9TZW5kZXJJbnRlcmZhY2UsCiAg
ICAgICBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwU3RhdGU+IHN1c3BlbmRlZF9zc3JjcywKICAgICAg
IGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBQYXlsb2FkU3RhdGU+JiBzdGF0ZXMsCiAgICAg
ICBjb25zdCBSdHBDb25maWcmIHJ0cF9jb25maWcsCi0gICAgICBjb25zdCBSdGNwQ29uZmlnJiBy
dGNwX2NvbmZpZywKKyAgICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcywKICAgICAgIFRy
YW5zcG9ydCogc2VuZF90cmFuc3BvcnQsCiAgICAgICBjb25zdCBSdHBTZW5kZXJPYnNlcnZlcnMm
IG9ic2VydmVycywKICAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kSW50ZXJmYWNlKiB0
cmFuc3BvcnQsCiAgICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAogICAgICAgUmF0ZUxpbWl0
ZXIqIHJldHJhbnNtaXNzaW9uX2xpbWl0ZXIsICAvLyBtb3ZlIGluc2lkZSBSdHBUcmFuc3BvcnQK
LSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNfY29udHJvbGxlcik7Cisg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlcj4gZmVjX2NvbnRyb2xsZXIsCisgICAg
ICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlwdG9yLAorICAgICAgY29uc3Qg
Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpOyAgLy8gbW92ZSBpbnNpZGUgUnRwVHJhbnNw
b3J0CiAgIH5SdHBWaWRlb1NlbmRlcigpIG92ZXJyaWRlOwogCiAgIC8vIFJlZ2lzdGVyUHJvY2Vz
c1RocmVhZCByZWdpc3RlciB8bW9kdWxlX3Byb2Nlc3NfdGhyZWFkfCB3aXRoIHRob3NlIG9iamVj
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvcnRwX3ZpZGVvX3NlbmRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvcnRwX3ZpZGVvX3NlbmRlcl91bml0dGVzdC5jYwpp
bmRleCBlOTFiZmM0YWViMTRmMjY4ZTMwOWVhZmMwNDA1MjY5ZDI5M2NjMjkzLi44YWI4OWQ2MTA0
YzQ2NWFiZmZjOTg2N2M0YjhkMzRjY2NmYWFiYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3J0cF92aWRlb19zZW5kZXJfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2Fs
bC9ydHBfdmlkZW9fc2VuZGVyX3VuaXR0ZXN0LmNjCkBAIC0xMDIsMTIgKzEwMiwxMyBAQCBjbGFz
cyBSdHBWaWRlb1NlbmRlclRlc3RGaXh0dXJlIHsKICAgICBzdGQ6Om1hcDx1aW50MzJfdCwgUnRw
U3RhdGU+IHN1c3BlbmRlZF9zc3JjczsKICAgICByb3V0ZXJfID0gYWJzbDo6bWFrZV91bmlxdWU8
UnRwVmlkZW9TZW5kZXI+KAogICAgICAgICBjb25maWdfLnJ0cC5zc3Jjcywgc3VzcGVuZGVkX3Nz
cmNzLCBzdXNwZW5kZWRfcGF5bG9hZF9zdGF0ZXMsCi0gICAgICAgIGNvbmZpZ18ucnRwLCBjb25m
aWdfLnJ0Y3AsICZ0cmFuc3BvcnRfLAorICAgICAgICBjb25maWdfLnJ0cCwgY29uZmlnXy5ydGNw
X3JlcG9ydF9pbnRlcnZhbF9tcywgJnRyYW5zcG9ydF8sCiAgICAgICAgIENyZWF0ZU9ic2VydmVy
cygmY2FsbF9zdGF0c18sICZlbmNvZGVyX2ZlZWRiYWNrXywgJnN0YXRzX3Byb3h5XywKICAgICAg
ICAgICAgICAgICAgICAgICAgICZzdGF0c19wcm94eV8sICZzdGF0c19wcm94eV8sICZzdGF0c19w
cm94eV8sCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHNfcHJveHlfLCAmc3RhdHNfcHJv
eHlfLCAmc2VuZF9kZWxheV9zdGF0c18pLAogICAgICAgICAmdHJhbnNwb3J0X2NvbnRyb2xsZXJf
LCAmZXZlbnRfbG9nXywgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sCi0gICAgICAgIGFi
c2w6Om1ha2VfdW5pcXVlPEZlY0NvbnRyb2xsZXJEZWZhdWx0PigmY2xvY2tfKSk7CisgICAgICAg
IGFic2w6Om1ha2VfdW5pcXVlPEZlY0NvbnRyb2xsZXJEZWZhdWx0PigmY2xvY2tfKSwgbnVsbHB0
ciwKKyAgICAgICAgQ3J5cHRvT3B0aW9uc3t9KTsKICAgfQogCiAgIFJ0cFZpZGVvU2VuZGVyKiBy
b3V0ZXIoKSB7IHJldHVybiByb3V0ZXJfLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9zaW11bGF0
ZWRfbmV0d29yay5jYwppbmRleCBlZTU4ZGNlNzE4MjQ4YWExMDZiYzNhODE3YTM0YTkyMWM4OTI5
ZmE2Li43N2JlMTQ4MjFjMmFlZjFlYjc3ZjVmZmE2NmYxN2ZiZTQ2NDBiMmNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3NpbXVsYXRl
ZF9uZXR3b3JrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvc2ltdWxhdGVkX25ldHdvcmsuY2MKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNs
dWRlICJhcGkvdW5pdHMvZGF0YV9yYXRlLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0y
Niw2ICsyNyw5IEBAIFNpbXVsYXRlZE5ldHdvcms6On5TaW11bGF0ZWROZXR3b3JrKCkgPSBkZWZh
dWx0OwogCiB2b2lkIFNpbXVsYXRlZE5ldHdvcms6OlNldENvbmZpZyhjb25zdCBTaW11bGF0ZWRO
ZXR3b3JrOjpDb25maWcmIGNvbmZpZykgewogICBydGM6OkNyaXRTY29wZSBjcml0KCZjb25maWdf
bG9ja18pOworICBpZiAoY29uZmlnXy5saW5rX2NhcGFjaXR5X2ticHMgIT0gY29uZmlnLmxpbmtf
Y2FwYWNpdHlfa2JwcykgeworICAgIHJlc2V0X2NhcGFjaXR5X2RlbGF5X2Vycm9yXyA9IHRydWU7
CisgIH0KICAgY29uZmlnXyA9IGNvbmZpZzsgIC8vIFNoYWxsb3cgY29weSBvZiB0aGUgc3RydWN0
LgogICBkb3VibGUgcHJvYl9sb3NzID0gY29uZmlnLmxvc3NfcGVyY2VudCAvIDEwMC4wOwogICBp
ZiAoY29uZmlnXy5hdmdfYnVyc3RfbG9zc19sZW5ndGggPT0gLTEpIHsKQEAgLTY0LDQyICs2OCw0
NSBAQCBib29sIFNpbXVsYXRlZE5ldHdvcms6OkVucXVldWVQYWNrZXQoUGFja2V0SW5GbGlnaHRJ
bmZvIHBhY2tldCkgewogICAgIC8vIFRvbyBtYW55IHBhY2tldCBvbiB0aGUgbGluaywgZHJvcCB0
aGlzIG9uZS4KICAgICByZXR1cm4gZmFsc2U7CiAgIH0KLQotICAvLyBEZWxheSBpbnRyb2R1Y2Vk
IGJ5IHRoZSBsaW5rIGNhcGFjaXR5LgotICBpbnQ2NF90IGNhcGFjaXR5X2RlbGF5X21zID0gMDsK
LSAgaWYgKGNvbmZpZy5saW5rX2NhcGFjaXR5X2ticHMgPiAwKSB7Ci0gICAgLy8gVXNpbmcgYnl0
ZXMgcGVyIG1pbGxpc2Vjb25kIHRvIGF2b2lkIGxvc2luZyBwcmVjaXNpb24uCi0gICAgY29uc3Qg
aW50NjRfdCBieXRlc19wZXJfbWlsbGlzZWNvbmQgPSBjb25maWcubGlua19jYXBhY2l0eV9rYnBz
IC8gODsKLSAgICAvLyBUbyByb3VuZCB0byB0aGUgY2xvc2VzdCBtaWxsaXNlY29uZCB3ZSBhZGQg
aGFsZiBhIG1pbGxpc2Vjb25kcyB3b3J0aCBvZgotICAgIC8vIGJ5dGVzIHRvIHRoZSBkZWxheSBj
YWxjdWxhdGlvbi4KLSAgICBjYXBhY2l0eV9kZWxheV9tcyA9IChwYWNrZXQuc2l6ZSArIGNhcGFj
aXR5X2RlbGF5X2Vycm9yX2J5dGVzXyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNf
cGVyX21pbGxpc2Vjb25kIC8gMikgLwotICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfcGVy
X21pbGxpc2Vjb25kOwotICAgIGNhcGFjaXR5X2RlbGF5X2Vycm9yX2J5dGVzXyArPQotICAgICAg
ICBwYWNrZXQuc2l6ZSAtIGNhcGFjaXR5X2RlbGF5X21zICogYnl0ZXNfcGVyX21pbGxpc2Vjb25k
OwotICB9CiAgIGludDY0X3QgbmV0d29ya19zdGFydF90aW1lX3VzID0gcGFja2V0LnNlbmRfdGlt
ZV91czsKLQogICB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3JpdCgmY29uZmlnX2xvY2tfKTsKKyAg
ICBpZiAocmVzZXRfY2FwYWNpdHlfZGVsYXlfZXJyb3JfKSB7CisgICAgICBjYXBhY2l0eV9kZWxh
eV9lcnJvcl9ieXRlc18gPSAwOworICAgICAgcmVzZXRfY2FwYWNpdHlfZGVsYXlfZXJyb3JfID0g
ZmFsc2U7CisgICAgfQogICAgIGlmIChwYXVzZV90cmFuc21pc3Npb25fdW50aWxfdXNfKSB7CiAg
ICAgICBuZXR3b3JrX3N0YXJ0X3RpbWVfdXMgPQogICAgICAgICAgIHN0ZDo6bWF4KG5ldHdvcmtf
c3RhcnRfdGltZV91cywgKnBhdXNlX3RyYW5zbWlzc2lvbl91bnRpbF91c18pOwogICAgICAgcGF1
c2VfdHJhbnNtaXNzaW9uX3VudGlsX3VzXy5yZXNldCgpOwogICAgIH0KICAgfQorCisgIC8vIERl
bGF5IGludHJvZHVjZWQgYnkgdGhlIGxpbmsgY2FwYWNpdHkuCisgIFRpbWVEZWx0YSBjYXBhY2l0
eV9kZWxheSA9IFRpbWVEZWx0YTo6WmVybygpOworICBpZiAoY29uZmlnLmxpbmtfY2FwYWNpdHlf
a2JwcyA+IDApIHsKKyAgICBjb25zdCBEYXRhUmF0ZSBsaW5rX2NhcGFjaXR5ID0gRGF0YVJhdGU6
OmticHMoY29uZmlnLmxpbmtfY2FwYWNpdHlfa2Jwcyk7CisgICAgaW50NjRfdCBjb21wZW5zYXRl
ZF9zaXplID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocGFja2V0LnNpemUpICsgY2Fw
YWNpdHlfZGVsYXlfZXJyb3JfYnl0ZXNfOworICAgIGNhcGFjaXR5X2RlbGF5ID0gRGF0YVNpemU6
OmJ5dGVzKGNvbXBlbnNhdGVkX3NpemUpIC8gbGlua19jYXBhY2l0eTsKKworICAgIGNhcGFjaXR5
X2RlbGF5X2Vycm9yX2J5dGVzXyArPQorICAgICAgICBwYWNrZXQuc2l6ZSAtIChjYXBhY2l0eV9k
ZWxheSAqIGxpbmtfY2FwYWNpdHkpLmJ5dGVzKCk7CisgIH0KKwogICAvLyBDaGVjayBpZiB0aGVy
ZSBhbHJlYWR5IGFyZSBwYWNrZXRzIG9uIHRoZSBsaW5rIGFuZCBjaGFuZ2UgbmV0d29yayBzdGFy
dAogICAvLyB0aW1lIGZvcndhcmQgaWYgdGhlcmUgaXMuCiAgIGlmICghY2FwYWNpdHlfbGlua18u
ZW1wdHkoKSAmJgogICAgICAgbmV0d29ya19zdGFydF90aW1lX3VzIDwgY2FwYWNpdHlfbGlua18u
YmFjaygpLmFycml2YWxfdGltZV91cykKICAgICBuZXR3b3JrX3N0YXJ0X3RpbWVfdXMgPSBjYXBh
Y2l0eV9saW5rXy5iYWNrKCkuYXJyaXZhbF90aW1lX3VzOwogCi0gIGludDY0X3QgYXJyaXZhbF90
aW1lX3VzID0gbmV0d29ya19zdGFydF90aW1lX3VzICsgY2FwYWNpdHlfZGVsYXlfbXMgKiAxMDAw
OworICBpbnQ2NF90IGFycml2YWxfdGltZV91cyA9IG5ldHdvcmtfc3RhcnRfdGltZV91cyArIGNh
cGFjaXR5X2RlbGF5LnVzKCk7CiAgIGNhcGFjaXR5X2xpbmtfLnB1c2goe3BhY2tldCwgYXJyaXZh
bF90aW1lX3VzfSk7CiAgIHJldHVybiB0cnVlOwogfQogCiBhYnNsOjpvcHRpb25hbDxpbnQ2NF90
PiBTaW11bGF0ZWROZXR3b3JrOjpOZXh0RGVsaXZlcnlUaW1lVXMoKSBjb25zdCB7CisgIHJ0Yzo6
Q3JpdFNjb3BlIGNyaXQoJnByb2Nlc3NfbG9ja18pOwogICBpZiAoIWRlbGF5X2xpbmtfLmVtcHR5
KCkpCiAgICAgcmV0dXJuIGRlbGF5X2xpbmtfLmJlZ2luKCktPmFycml2YWxfdGltZV91czsKICAg
cmV0dXJuIGFic2w6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgK
aW5kZXggMGY4NDUzMjgzYTg4ZGQ5OWRlZWRmN2M4ZGRlYWNjMjZkMjkyZDhlYS4uZTk3ODAyNzA5
MmM3NzkzZGQzY2U0MzBkOWJiNzNlZjM3NzVkMmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC9zaW11bGF0ZWRfbmV0d29yay5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvc2ltdWxh
dGVkX25ldHdvcmsuaApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIC8vIGNh
cGFjaXR5IGludHJvZHVjZWQgZGVsYXkuCiBjbGFzcyBTaW11bGF0ZWROZXR3b3JrIDogcHVibGlj
IE5ldHdvcmtCZWhhdmlvckludGVyZmFjZSB7CiAgcHVibGljOgotICB1c2luZyBDb25maWcgPSBE
ZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWc7CisgIHVzaW5nIENvbmZpZyA9IEJ1aWx0SW5O
ZXR3b3JrQmVoYXZpb3JDb25maWc7CiAgIGV4cGxpY2l0IFNpbXVsYXRlZE5ldHdvcmsoQ29uZmln
IGNvbmZpZywgdWludDY0X3QgcmFuZG9tX3NlZWQgPSAxKTsKICAgflNpbXVsYXRlZE5ldHdvcmso
KSBvdmVycmlkZTsKIApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBTaW11bGF0ZWROZXR3b3JrIDog
cHVibGljIE5ldHdvcmtCZWhhdmlvckludGVyZmFjZSB7CiAgICAgaW50NjRfdCBhcnJpdmFsX3Rp
bWVfdXM7CiAgIH07CiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNvbmZpZ19sb2NrXzsKKyAgYm9v
bCByZXNldF9jYXBhY2l0eV9kZWxheV9lcnJvcl8gUlRDX0dVQVJERURfQlkoY29uZmlnX2xvY2tf
KSA9IGZhbHNlOwogCiAgIC8vIHxwcm9jZXNzX2xvY2t8IGd1YXJkcyB0aGUgZGF0YSBzdHJ1Y3R1
cmVzIGludm9sdmVkIGluIGRlbGF5IGFuZCBsb3NzCiAgIC8vIHByb2Nlc3Nlcywgc3VjaCBhcyB0
aGUgcGFja2V0IHF1ZXVlcy4KQEAgLTU2LDcgKzU3LDcgQEAgY2xhc3MgU2ltdWxhdGVkTmV0d29y
ayA6IHB1YmxpYyBOZXR3b3JrQmVoYXZpb3JJbnRlcmZhY2UgewogICBzdGQ6OnF1ZXVlPFBhY2tl
dEluZm8+IGNhcGFjaXR5X2xpbmtfIFJUQ19HVUFSREVEX0JZKHByb2Nlc3NfbG9ja18pOwogICBS
YW5kb20gcmFuZG9tXzsKIAotICBzdGQ6OmRlcXVlPFBhY2tldEluZm8+IGRlbGF5X2xpbmtfOwor
ICBzdGQ6OmRlcXVlPFBhY2tldEluZm8+IGRlbGF5X2xpbmtfIFJUQ19HVUFSREVEX0JZKHByb2Nl
c3NfbG9ja18pOwogCiAgIC8vIExpbmsgY29uZmlndXJhdGlvbi4KICAgQ29uZmlnIGNvbmZpZ18g
UlRDX0dVQVJERURfQlkoY29uZmlnX2xvY2tfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdGVzdC9mYWtlX25ldHdvcmtfcGlwZV91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nh
bGwvdGVzdC9mYWtlX25ldHdvcmtfcGlwZV91bml0dGVzdC5jYwppbmRleCAwOWU1ODUyNDFhNDA3
Njc3YWYzN2U5YTdjMjY2ZmRhZWIxNjI0MDc0Li5kZTVhZWM3MTM1MmNjYzdhZTA0ODgxY2E2MWJh
ZTNiNzhjMmE2ZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jYWxsL3Rlc3QvZmFrZV9uZXR3b3JrX3BpcGVfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0L2Zha2Vf
bmV0d29ya19waXBlX3VuaXR0ZXN0LmNjCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIEZha2VOZXR3
b3JrUGlwZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIAogLy8gVGVzdCB0aGUgY2Fw
YWNpdHkgbGluayBhbmQgdmVyaWZ5IHdlIGdldCBhcyBtYW55IHBhY2tldHMgYXMgd2UgZXhwZWN0
LgogVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIENhcGFjaXR5VGVzdCkgewotICBEZWZhdWx0
TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9y
Q29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnF1ZXVlX2xlbmd0aF9wYWNrZXRzID0gMjA7CiAgIGNv
bmZpZy5saW5rX2NhcGFjaXR5X2ticHMgPSA4MDsKICAgTW9ja1JlY2VpdmVyIHJlY2VpdmVyOwpA
QCAtMTEzLDcgKzExMyw3IEBAIFRFU1RfRihGYWtlTmV0d29ya1BpcGVUZXN0LCBDYXBhY2l0eVRl
c3QpIHsKIAogLy8gVGVzdCB0aGUgZXh0cmEgbmV0d29yayBkZWxheS4KIFRFU1RfRihGYWtlTmV0
d29ya1BpcGVUZXN0LCBFeHRyYURlbGF5VGVzdCkgewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRp
b25Db25maWcgY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsK
ICAgY29uZmlnLnF1ZXVlX2xlbmd0aF9wYWNrZXRzID0gMjA7CiAgIGNvbmZpZy5xdWV1ZV9kZWxh
eV9tcyA9IDEwMDsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IDgwOwpAQCAtMTQ5LDcg
KzE0OSw3IEBAIFRFU1RfRihGYWtlTmV0d29ya1BpcGVUZXN0LCBFeHRyYURlbGF5VGVzdCkgewog
Ly8gVGVzdCB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgYW5kIHBhY2tldHMgYXJlIGRyb3BwZWQgd2hl
biBzZW5kaW5nIHRvbyBtYW55CiAvLyBwYWNrZXRzIHRvbyBxdWlja2x5LgogVEVTVF9GKEZha2VO
ZXR3b3JrUGlwZVRlc3QsIFF1ZXVlTGVuZ3RoVGVzdCkgewotICBEZWZhdWx0TmV0d29ya1NpbXVs
YXRpb25Db25maWcgY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZp
ZzsKICAgY29uZmlnLnF1ZXVlX2xlbmd0aF9wYWNrZXRzID0gMjsKICAgY29uZmlnLmxpbmtfY2Fw
YWNpdHlfa2JwcyA9IDgwOwogICBNb2NrUmVjZWl2ZXIgcmVjZWl2ZXI7CkBAIC0xNzMsNyArMTcz
LDcgQEAgVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIFF1ZXVlTGVuZ3RoVGVzdCkgewogCiAv
LyBUZXN0IHdlIGdldCBzdGF0aXN0aWNzIGFzIGV4cGVjdGVkLgogVEVTVF9GKEZha2VOZXR3b3Jr
UGlwZVRlc3QsIFN0YXRpc3RpY3NUZXN0KSB7Ci0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNv
bmZpZyBjb25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICBj
b25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMgPSAyOwogICBjb25maWcucXVldWVfZGVsYXlfbXMg
PSAyMDsKICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IDgwOwpAQCAtMjA1LDcgKzIwNSw3
IEBAIFRFU1RfRihGYWtlTmV0d29ya1BpcGVUZXN0LCBTdGF0aXN0aWNzVGVzdCkgewogLy8gQ2hh
bmdlIHRoZSBsaW5rIGNhcGFjaXR5IGhhbGYtd2F5IHRocm91Z2ggdGhlIHRlc3QgYW5kIHZlcmlm
eSB0aGF0IHRoZQogLy8gZGVsaXZlcnkgdGltZXMgY2hhbmdlIGFjY29yZGluZ2x5LgogVEVTVF9G
KEZha2VOZXR3b3JrUGlwZVRlc3QsIENoYW5naW5nQ2FwYWNpdHlXaXRoRW1wdHlQaXBlVGVzdCkg
ewotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICBCdWlsdEluTmV0
d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnF1ZXVlX2xlbmd0aF9wYWNrZXRz
ID0gMjA7CiAgIGNvbmZpZy5saW5rX2NhcGFjaXR5X2ticHMgPSA4MDsKICAgTW9ja1JlY2VpdmVy
IHJlY2VpdmVyOwpAQCAtMjY2LDcgKzI2Niw3IEBAIFRFU1RfRihGYWtlTmV0d29ya1BpcGVUZXN0
LCBDaGFuZ2luZ0NhcGFjaXR5V2l0aEVtcHR5UGlwZVRlc3QpIHsKIC8vIENoYW5nZSB0aGUgbGlu
ayBjYXBhY2l0eSBoYWxmLXdheSB0aHJvdWdoIHRoZSB0ZXN0IGFuZCB2ZXJpZnkgdGhhdCB0aGUK
IC8vIGRlbGl2ZXJ5IHRpbWVzIGNoYW5nZSBhY2NvcmRpbmdseS4KIFRFU1RfRihGYWtlTmV0d29y
a1BpcGVUZXN0LCBDaGFuZ2luZ0NhcGFjaXR5V2l0aFBhY2tldHNJblBpcGVUZXN0KSB7Ci0gIERl
ZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgIEJ1aWx0SW5OZXR3b3JrQmVo
YXZpb3JDb25maWcgY29uZmlnOwogICBjb25maWcucXVldWVfbGVuZ3RoX3BhY2tldHMgPSAyMDsK
ICAgY29uZmlnLmxpbmtfY2FwYWNpdHlfa2JwcyA9IDgwOwogICBNb2NrUmVjZWl2ZXIgcmVjZWl2
ZXI7CkBAIC0zMjEsNyArMzIxLDcgQEAgVEVTVF9GKEZha2VOZXR3b3JrUGlwZVRlc3QsIENoYW5n
aW5nQ2FwYWNpdHlXaXRoUGFja2V0c0luUGlwZVRlc3QpIHsKIAogLy8gQXQgZmlyc3QgZGlzYWxs
b3cgcmVvcmRlcmluZyBhbmQgdGhlbiBhbGxvdyByZW9yZGVyaW5nLgogVEVTVF9GKEZha2VOZXR3
b3JrUGlwZVRlc3QsIERpc2FsbG93UmVvcmRlcmluZ1RoZW5BbGxvd1Jlb3JkZXJpbmcpIHsKLSAg
RGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtC
ZWhhdmlvckNvbmZpZyBjb25maWc7CiAgIGNvbmZpZy5xdWV1ZV9sZW5ndGhfcGFja2V0cyA9IDEw
MDA7CiAgIGNvbmZpZy5saW5rX2NhcGFjaXR5X2ticHMgPSA4MDA7CiAgIGNvbmZpZy5xdWV1ZV9k
ZWxheV9tcyA9IDEwMDsKQEAgLTM3NCw3ICszNzQsNyBAQCBURVNUX0YoRmFrZU5ldHdvcmtQaXBl
VGVzdCwgQnVyc3RMb3NzKSB7CiAgIGNvbnN0IGludCBrTnVtUGFja2V0cyA9IDEwMDAwOwogICBj
b25zdCBpbnQga1BhY2tldFNpemUgPSAxMDsKIAotICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWcgY29uZmlnOworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAg
Y29uZmlnLnF1ZXVlX2xlbmd0aF9wYWNrZXRzID0ga051bVBhY2tldHM7CiAgIGNvbmZpZy5sb3Nz
X3BlcmNlbnQgPSBrTG9zc1BlcmNlbnQ7CiAgIGNvbmZpZy5hdmdfYnVyc3RfbG9zc19sZW5ndGgg
PSBrQXZnQnVyc3RMZW5ndGg7CkBAIC00MDksNyArNDA5LDcgQEAgVEVTVF9GKEZha2VOZXR3b3Jr
UGlwZVRlc3QsIEJ1cnN0TG9zcykgewogfQogCiBURVNUX0YoRmFrZU5ldHdvcmtQaXBlVGVzdCwg
U2V0UmVjZWl2ZXIpIHsKLSAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsK
KyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBjb25maWc7CiAgIGNvbmZpZy5saW5rX2Nh
cGFjaXR5X2ticHMgPSA4MDA7CiAgIE1vY2tSZWNlaXZlciByZWNlaXZlcjsKICAgYXV0byBzaW11
bGF0ZWRfbmV0d29yayA9IGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KGNvbmZp
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jYWxsL3Rlc3QvbW9ja19iaXRyYXRlX2FsbG9jYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0L21vY2tfYml0cmF0ZV9hbGxvY2F0b3Iu
aAppbmRleCA3MTRjMDI1NDFmMTcyYWQ1ZDVjZDY5NGE4MDkyY2ExNDNiOTU0NGM4Li5mMDBlZDc5
YzU5ZmI3ODI4OWY4ZDkwNGQ4OWFmZTg2NWI1OWI5ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3Rlc3QvbW9ja19iaXRyYXRlX2Fs
bG9jYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NhbGwvdGVzdC9tb2NrX2JpdHJhdGVfYWxsb2NhdG9yLmgKQEAgLTIxLDcgKzIxLDcgQEAgY2xh
c3MgTW9ja0JpdHJhdGVBbGxvY2F0b3IgOiBwdWJsaWMgQml0cmF0ZUFsbG9jYXRvckludGVyZmFj
ZSB7CiAgIE1PQ0tfTUVUSE9EMihBZGRPYnNlcnZlciwKICAgICAgICAgICAgICAgIHZvaWQoQml0
cmF0ZUFsbG9jYXRvck9ic2VydmVyKiwgTWVkaWFTdHJlYW1BbGxvY2F0aW9uQ29uZmlnKSk7CiAg
IE1PQ0tfTUVUSE9EMShSZW1vdmVPYnNlcnZlciwgdm9pZChCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2
ZXIqKSk7Ci0gIE1PQ0tfTUVUSE9EMShHZXRTdGFydEJpdHJhdGUsIGludChCaXRyYXRlQWxsb2Nh
dG9yT2JzZXJ2ZXIqKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9EMShHZXRTdGFydEJpdHJhdGUsIGlu
dChCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqKSk7CiB9OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwogI2VuZGlmICAvLyBDQUxMX1RFU1RfTU9DS19CSVRSQVRFX0FMTE9DQVRPUl9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0
L21vY2tfcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdGVzdC9tb2NrX3J0cF90cmFuc3BvcnRfY29u
dHJvbGxlcl9zZW5kLmgKaW5kZXggMzc1ODdiMmI3NmI5YmUxOWRmYTY4YmM0YWU3M2E0NThlY2Ji
NGUxOS4uNGQzNGQwNmUwNTY3Yjk5ZWY0MGEwOTM1N2ZkZWM0NjU0MTM0YWYyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC90ZXN0L21v
Y2tfcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3Rlc3QvbW9ja19ydHBfdHJhbnNwb3J0X2Nv
bnRyb2xsZXJfc2VuZC5oCkBAIC0xNywxMiArMTcsMTQgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAK
ICNpbmNsdWRlICJhcGkvYml0cmF0ZV9jb25zdHJhaW50cy5oIgorI2luY2x1ZGUgImFwaS9jcnlw
dG8vY3J5cHRvb3B0aW9ucy5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVlbmNyeXB0b3Jp
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJjYWxsL3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl9zZW5k
X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2lu
Y2x1ZGUvbmV0d29ya19jaGFuZ2VkX29ic2VydmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9wYWNp
bmcvcGFja2V0X3JvdXRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL25ldHdvcmsvc2VudF9wYWNr
ZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3Jrcm91dGUuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9yYXRlX2xpbWl0ZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIKICNpbmNs
dWRlICJ0ZXN0L2dtb2NrLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMzAsMTcgKzMyLDE4
IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgTW9ja1J0cFRyYW5zcG9ydENvbnRyb2xsZXJT
ZW5kCiAgICAgOiBwdWJsaWMgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2Ugewog
IHB1YmxpYzoKLSAgTU9DS19NRVRIT0Q5KAorICBNT0NLX01FVEhPRDEwKAogICAgICAgQ3JlYXRl
UnRwVmlkZW9TZW5kZXIsCiAgICAgICBSdHBWaWRlb1NlbmRlckludGVyZmFjZSooY29uc3Qgc3Rk
Ojp2ZWN0b3I8dWludDMyX3Q+JiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1hcDx1aW50MzJfdCwgUnRwU3RhdGU+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBSdHBQYXlsb2FkU3RhdGU+JiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSdHBDb25maWcmLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJ0Y3BDb25maWcmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUcmFuc3BvcnQqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJ0cFNlbmRlck9ic2VydmVycyYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UnRjRXZlbnRMb2cqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxGZWNDb250cm9sbGVyPikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSdHBTZW5kZXJGcmFtZUVuY3J5cHRpb25Db25maWcmKSk7CiAgIE1PQ0tfTUVU
SE9EMShEZXN0cm95UnRwVmlkZW9TZW5kZXIsIHZvaWQoUnRwVmlkZW9TZW5kZXJJbnRlcmZhY2Uq
KSk7CiAgIE1PQ0tfTUVUSE9EMChHZXRXb3JrZXJRdWV1ZSwgcnRjOjpUYXNrUXVldWUqKCkpOwog
ICBNT0NLX01FVEhPRDAocGFja2V0X3JvdXRlciwgUGFja2V0Um91dGVyKigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9f
cmVjZWl2ZV9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvdmlkZW9fcmVjZWl2ZV9zdHJlYW0uaAppbmRleCA0OWVmZTRmY2VhYTVlZTQ2NDcx
OTJiMDhhN2YzZTA1Y2VhY2EyMmE5Li4yY2Q1ZjE2MzFhMDliMTVhMDE5NTMxNWI3ZWI4OGMzZjE2
ZmM3MTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jYWxsL3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92aWRlb19yZWNlaXZlX3N0cmVhbS5oCkBAIC0x
Nyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2NhbGwvdHJh
bnNwb3J0LmgiCisjaW5jbHVkZSAiYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmgiCiAjaW5jbHVk
ZSAiYXBpL3J0cF9oZWFkZXJzLmgiCiAjaW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJhcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaCIKQEAgLTI1LDEyICsyNiwxMiBAQAog
I2luY2x1ZGUgImFwaS92aWRlby92aWRlb190aW1pbmcuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9f
Y29kZWNzL3NkcF92aWRlb19mb3JtYXQuaCIKICNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcuaCIK
LSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQotI2lu
Y2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL2ZyYW1lX2NhbGxiYWNrLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCitjbGFzcyBGcmFtZURlY3J5cHRvckludGVyZmFjZTsKIGNsYXNzIFJ0cFBhY2tl
dFNpbmtJbnRlcmZhY2U7CiBjbGFzcyBWaWRlb0RlY29kZXJGYWN0b3J5OwogCkBAIC0yMTUsNiAr
MjE2LDE0IEBAIGNsYXNzIFZpZGVvUmVjZWl2ZVN0cmVhbSB7CiAgICAgLy8gVE9ETyhuaXNzZSk6
IFVzZWQgd2l0aCBWaWRlb0RlY29kZXJGYWN0b3J5OjpMZWdhY3lDcmVhdGVWaWRlb0RlY29kZXIu
CiAgICAgLy8gRGVsZXRlIHdoZW4gdGhhdCBtZXRob2QgaXMgcmV0aXJlZC4KICAgICBzdGQ6OnN0
cmluZyBzdHJlYW1faWQ7CisKKyAgICAvLyBBbiBvcHRpb25hbCBjdXN0b20gZnJhbWUgZGVjcnlw
dG9yIHRoYXQgYWxsb3dzIHRoZSBlbnRpcmUgZnJhbWUgdG8gYmUKKyAgICAvLyBkZWNyeXB0ZWQg
aW4gd2hhdGV2ZXIgd2F5IHRoZSBjYWxsZXIgY2hvc2VzLiBUaGlzIGlzIG5vdCByZXF1aXJlZCBi
eQorICAgIC8vIGRlZmF1bHQuCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RnJhbWVE
ZWNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRvcjsKKworICAgIC8vIFBlciBQZWVyQ29u
bmVjdGlvbiBjcnlwdG9ncmFwaHkgb3B0aW9ucy4KKyAgICBDcnlwdG9PcHRpb25zIGNyeXB0b19v
cHRpb25zOwogICB9OwogCiAgIC8vIFN0YXJ0cyBzdHJlYW0gYWN0aXZpdHkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3Nl
bmRfc3RyZWFtLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y2FsbC92aWRlb19zZW5kX3N0cmVhbS5jYwppbmRleCA2YjkzZmUyODIzOGE0YjhlMzVkYTIzMGZk
YWU0NTVjNjhkYzUxM2UxLi5jOGJhMzA4ZmE1NDIzNmEyYmYwNTczM2E0MTQ2YjExOWM0ZDczNzFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
YWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2NhbGwvdmlkZW9fc2VuZF9zdHJlYW0uY2MKQEAgLTksNiArOSwxMCBA
QAogICovCiAKICNpbmNsdWRlICJjYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmgiCisKKyNpbmNsdWRl
IDx1dGlsaXR5PgorCisjaW5jbHVkZSAiYXBpL2NyeXB0by9mcmFtZWVuY3J5cHRvcmludGVyZmFj
ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CkBAIC03NSwxMSArNzksOSBAQCBzdGQ6OnN0cmluZyBWaWRlb1NlbmRT
dHJlYW06OkNvbmZpZzo6VG9TdHJpbmcoKSBjb25zdCB7CiAgIHNzIDw8ICJ7ZW5jb2Rlcl9zZXR0
aW5nczogeyBleHBlcmltZW50X2NwdV9sb2FkX2VzdGltYXRvcjogIgogICAgICA8PCAoZW5jb2Rl
cl9zZXR0aW5ncy5leHBlcmltZW50X2NwdV9sb2FkX2VzdGltYXRvciA/ICJvbiIgOiAib2ZmIikg
PDwgIn19IjsKICAgc3MgPDwgIiwgcnRwOiAiIDw8IHJ0cC5Ub1N0cmluZygpOwotICBzcyA8PCAi
LCBydGNwOiAiIDw8IHJ0Y3AuVG9TdHJpbmcoKTsKKyAgc3MgPDwgIiwgcnRjcF9yZXBvcnRfaW50
ZXJ2YWxfbXM6ICIgPDwgcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM7CiAgIHNzIDw8ICIsIHByZV9l
bmNvZGVfY2FsbGJhY2s6ICIKICAgICAgPDwgKHByZV9lbmNvZGVfY2FsbGJhY2sgPyAiKFZpZGVv
U2lua0ludGVyZmFjZSkiIDogIm51bGxwdHIiKTsKLSAgc3MgPDwgIiwgcG9zdF9lbmNvZGVfY2Fs
bGJhY2s6ICIKLSAgICAgPDwgKHBvc3RfZW5jb2RlX2NhbGxiYWNrID8gIihFbmNvZGVkRnJhbWVP
YnNlcnZlcikiIDogIm51bGxwdHIiKTsKICAgc3MgPDwgIiwgcmVuZGVyX2RlbGF5X21zOiAiIDw8
IHJlbmRlcl9kZWxheV9tczsKICAgc3MgPDwgIiwgdGFyZ2V0X2RlbGF5X21zOiAiIDw8IHRhcmdl
dF9kZWxheV9tczsKICAgc3MgPDwgIiwgc3VzcGVuZF9iZWxvd19taW5fYml0cmF0ZTogIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY2FsbC92
aWRlb19zZW5kX3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY2FsbC92aWRlb19zZW5kX3N0cmVhbS5oCmluZGV4IDNmZjYyNGQyMzBiZDk5ODExY2M0
MGVmMWQ4MzUwYjc3MjBhYjE5MmEuLjRkM2Q5YzBjNTc0Y2I3Zjc2YzZlOWY5Yjk1MTQwMjg0ZWY2
ZWJlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NhbGwvdmlkZW9fc2VuZF9zdHJlYW0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jYWxsL3ZpZGVvX3NlbmRfc3RyZWFtLmgKQEAgLTExLDI0ICsx
MSwyOSBAQAogI2lmbmRlZiBDQUxMX1ZJREVPX1NFTkRfU1RSRUFNX0hfCiAjZGVmaW5lIENBTExf
VklERU9fU0VORF9TVFJFQU1fSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1h
cD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2Nh
bGwvdHJhbnNwb3J0LmgiCisjaW5jbHVkZSAiYXBpL2NyeXB0by9jcnlwdG9vcHRpb25zLmgiCisj
aW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9f
Y29udGVudF90eXBlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCiAjaW5j
bHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3NpbmtfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvL3ZpZGVvX3NvdXJjZV9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9f
c3RyZWFtX2VuY29kZXJfc2V0dGluZ3MuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3Zp
ZGVvX2VuY29kZXJfY29uZmlnLmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19l
bmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJjYWxsL3J0cF9jb25maWcuaCIKLSNpbmNsdWRl
ICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgImNv
bW1vbl92aWRlby9pbmNsdWRlL2ZyYW1lX2NhbGxiYWNrLmgiCisjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CitjbGFzcyBGcmFtZUVuY3J5cHRvckludGVyZmFjZTsKKwogY2xhc3MgVmlkZW9TZW5kU3RyZWFt
IHsKICBwdWJsaWM6CiAgIHN0cnVjdCBTdHJlYW1TdGF0cyB7CkBAIC0xMDgsNyArMTEzLDggQEAg
Y2xhc3MgVmlkZW9TZW5kU3RyZWFtIHsKIAogICAgIFJ0cENvbmZpZyBydHA7CiAKLSAgICBSdGNw
Q29uZmlnIHJ0Y3A7CisgICAgLy8gVGltZSBpbnRlcnZhbCBiZXR3ZWVuIFJUQ1AgcmVwb3J0IGZv
ciB2aWRlbworICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IDEwMDA7CiAKICAgICAv
LyBUcmFuc3BvcnQgZm9yIG91dGdvaW5nIHBhY2tldHMuCiAgICAgVHJhbnNwb3J0KiBzZW5kX3Ry
YW5zcG9ydCA9IG51bGxwdHI7CkBAIC0xMTcsMTIgKzEyMyw2IEBAIGNsYXNzIFZpZGVvU2VuZFN0
cmVhbSB7CiAgICAgLy8gZWZmZWN0cywgc25hcHNob3RzIGV0Yy4gJ251bGxwdHInIGRpc2FibGVz
IHRoZSBjYWxsYmFjay4KICAgICBydGM6OlZpZGVvU2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiog
cHJlX2VuY29kZV9jYWxsYmFjayA9IG51bGxwdHI7CiAKLSAgICAvLyBDYWxsZWQgZm9yIGVhY2gg
ZW5jb2RlZCBmcmFtZSwgZS5nLiB1c2VkIGZvciBmaWxlIHN0b3JhZ2UuICdudWxscHRyJwotICAg
IC8vIGRpc2FibGVzIHRoZSBjYWxsYmFjay4gQWxzbyBtZWFzdXJlcyB0aW1pbmcgYW5kIHBhc3Nl
cyB0aGUgdGltZQotICAgIC8vIHNwZW50IG9uIGVuY29kaW5nLiBUaGlzIHRpbWluZyB3aWxsIG5v
dCBmaXJlIGlmIGVuY29kaW5nIHRha2VzIGxvbmdlcgotICAgIC8vIHRoYW4gdGhlIG1lYXN1cmlu
ZyB3aW5kb3csIHNpbmNlIHRoZSBzYW1wbGUgZGF0YSB3aWxsIGhhdmUgYmVlbiBkcm9wcGVkLgot
ICAgIEVuY29kZWRGcmFtZU9ic2VydmVyKiBwb3N0X2VuY29kZV9jYWxsYmFjayA9IG51bGxwdHI7
Ci0KICAgICAvLyBFeHBlY3RlZCBkZWxheSBuZWVkZWQgYnkgdGhlIHJlbmRlcmVyLCBpLmUuIHRo
ZSBmcmFtZSB3aWxsIGJlIGRlbGl2ZXJlZAogICAgIC8vIHRoaXMgbWFueSBtaWxsaXNlY29uZHMs
IGlmIHBvc3NpYmxlLCBlYXJsaWVyIHRoYW4gZXhwZWN0ZWQgcmVuZGVyIHRpbWUuCiAgICAgLy8g
T25seSB2YWxpZCBpZiB8bG9jYWxfcmVuZGVyZXJ8IGlzIHNldC4KQEAgLTE0Myw2ICsxNDMsMTQg
QEAgY2xhc3MgVmlkZW9TZW5kU3RyZWFtIHsKICAgICAvLyBUcmFjayBJRCBhcyBzcGVjaWZpZWQg
ZHVyaW5nIHRyYWNrIGNyZWF0aW9uLgogICAgIHN0ZDo6c3RyaW5nIHRyYWNrX2lkOwogCisgICAg
Ly8gQW4gb3B0aW9uYWwgY3VzdG9tIGZyYW1lIGVuY3J5cHRvciB0aGF0IGFsbG93cyB0aGUgZW50
aXJlIGZyYW1lIHRvIGJlCisgICAgLy8gZW5jcnlwdGVkIGluIHdoYXRldmVyIHdheSB0aGUgY2Fs
bGVyIGNob29zZXMuIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5CisgICAgLy8gZGVmYXVsdC4KKyAg
ICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJh
bWVfZW5jcnlwdG9yOworCisgICAgLy8gUGVyIFBlZXJDb25uZWN0aW9uIGNyeXB0b2dyYXBoeSBv
cHRpb25zLgorICAgIENyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnM7CisKICAgIHByaXZhdGU6
CiAgICAgLy8gQWNjZXNzIHRvIHRoZSBjb3B5IGNvbnN0cnVjdG9yIGlzIHByaXZhdGUgdG8gZm9y
Y2UgdXNlIG9mIHRoZSBDb3B5KCkKICAgICAvLyBtZXRob2QgZm9yIHRob3NlIGV4Y2VwdGlvbmFs
IGNhc2VzIHdoZXJlIHdlIGRvIHVzZSBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvZGVyZXZpZXcuc2V0dGluZ3MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb2RlcmV2aWV3LnNldHRpbmdzCmluZGV4
IGQ4Y2Y2MTI1ZjRlM2E1MjJiZTU4ZGQ4NWNiYzc4OGJhODJjNmFjNWMuLjE3MjRlZGRjMDcyZGVm
ZTFmNDFmZjBmZmRlMTE2YzMwNDQ2Mzg3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvZGVyZXZpZXcuc2V0dGluZ3MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29kZXJldmlldy5zZXR0aW5ncwpA
QCAtMSw1ICsxLDQgQEAKICMgVGhpcyBmaWxlIGlzIHVzZWQgYnkgZ2l0LWNsIHRvIGdldCByZXBv
c2l0b3J5IHNwZWNpZmljIGluZm9ybWF0aW9uLgotQ0NfTElTVDogd2VicnRjLXJldmlld3NAd2Vi
cnRjLm9yZwogQ09ERV9SRVZJRVdfU0VSVkVSOiBjb2RlcmV2aWV3LndlYnJ0Yy5vcmcKIEdFUlJJ
VF9IT1NUOiBUcnVlCiBQUk9KRUNUOiB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9CVUlMRC5nbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9CVUlMRC5n
bgppbmRleCBhYmNmZTlhZDE2ODNmYmJiNTg3MDdhN2RiNjUyYjM5ZDNlOWMyZTBiLi43NGIwYzYw
MjlmZGU2ODc3ZDlkYjMwZWRlYjkxNWZhNDMxZjdhODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vQlVJTEQuZ24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlv
L0JVSUxELmduCkBAIC00NywxMCArNDcsMTAgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb21tb25f
YXVkaW8iKSB7CiAgIGRlcHMgPSBbCiAgICAgIjpjb21tb25fYXVkaW9fYyIsCiAgICAgIjpzaW5j
X3Jlc2FtcGxlciIsCi0gICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi9ydGNfYmFzZTpj
aGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpndGVzdF9wcm9kIiwKICAgICAiLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi9ydGNfYmFzZTpzYW5pdGl6ZXIiLAogICAgICIu
Li9ydGNfYmFzZS9tZW1vcnk6YWxpZ25lZF9hcnJheSIsCiAgICAgIi4uL3J0Y19iYXNlL21lbW9y
eTphbGlnbmVkX21hbGxvYyIsCiAgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTphcmNoIiwKQEAgLTE4
MSw3ICsxODEsNiBAQCBydGNfc291cmNlX3NldCgiY29tbW9uX2F1ZGlvX2MiKSB7CiAgIGRlcHMg
PSBbCiAgICAgIjpjb21tb25fYXVkaW9fY19hcm1fYXNtIiwKICAgICAiOmNvbW1vbl9hdWRpb19j
YyIsCi0gICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAog
ICAgICIuLi9ydGNfYmFzZTpjb21waWxlX2Fzc2VydF9jIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRj
X2Jhc2VfYXBwcm92ZWQiLApAQCAtMjAxLDcgKzIwMCw2IEBAIHJ0Y19zb3VyY2Vfc2V0KCJjb21t
b25fYXVkaW9fY2MiKSB7CiAgIF0KIAogICBkZXBzID0gWwotICAgICIuLjp3ZWJydGNfY29tbW9u
IiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi9zeXN0ZW1f
d3JhcHBlcnMiLAogICBdCkBAIC0yMTIsNyArMjEwLDYgQEAgcnRjX3NvdXJjZV9zZXQoInNpbmNf
cmVzYW1wbGVyIikgewogICAgICJyZXNhbXBsZXIvc2luY19yZXNhbXBsZXIuaCIsCiAgIF0KICAg
ZGVwcyA9IFsKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uL3J0Y19iYXNlOmd0ZXN0
X3Byb2QiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uL3J0
Y19iYXNlL21lbW9yeTphbGlnbmVkX21hbGxvYyIsCkBAIC0zODEsNyArMzc4LDYgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOmZpcl9maWx0ZXIiLAogICAgICAgIjpmaXJfZmls
dGVyX2ZhY3RvcnkiLAogICAgICAgIjpzaW5jX3Jlc2FtcGxlciIsCi0gICAgICAiLi46d2VicnRj
X2NvbW1vbiIsCiAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAgICIuLi9ydGNfYmFz
ZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNf
dXRpbHMiLApAQCAtMzg5LDYgKzM4NSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAg
ICAgIi4uL3N5c3RlbV93cmFwcGVyczpjcHVfZmVhdHVyZXNfYXBpIiwKICAgICAgICIuLi90ZXN0
OmZpbGV1dGlscyIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4uL3Rlc3Q6
dGVzdF9zdXBwb3J0IiwKICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgIF0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1
ZGlvL2F1ZGlvX2NvbnZlcnRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX2F1ZGlvL2F1ZGlvX2NvbnZlcnRlci5oCmluZGV4IDc2OWQ3MjRlMmZi
NjllMGI0MzI5MzNlNzcwY2FmMjljYjUwYzBmZjIuLjI0YTVlNzJjZWU5MDQwODkwYTk3ZTI2YmIw
ZTAyM2JjMWY0Mzg2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9hdWRpb19jb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vYXVkaW9fY29u
dmVydGVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgQ09NTU9OX0FVRElPX0FVRElPX0NP
TlZFUlRFUl9IXwogI2RlZmluZSBDT01NT05fQVVESU9fQVVESU9fQ09OVkVSVEVSX0hfCiAKKyNp
bmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJydGNfYmFz
ZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vY2hhbm5lbF9idWZmZXIuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vY2hhbm5l
bF9idWZmZXIuY2MKaW5kZXggMzhkMjMxZTA5ZDA2NDcxZjk5YmQyOGZmMjY2OGYwMTRkZmE4ZTI0
Mi4uYjliOGMyNWUzNzUwNmVkMzg5OWY4NGYwYTlmOWRjZTdjOWYwMWIxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2No
YW5uZWxfYnVmZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl9hdWRpby9jaGFubmVsX2J1ZmZlci5jYwpAQCAtMTAsNiArMTAsOSBAQAog
CiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2NoYW5uZWxfYnVmZmVyLmgiCiAKKyNpbmNsdWRlIDxj
c3RkaW50PgorCisjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9h
dWRpby9maXJfZmlsdGVyX2MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9jLmNjCmluZGV4IDM0MTg0MzQ2NzJhY2Uz
ZTIxYWIyYWYwZTRjNDhmNzczZDhmYWRkZjEuLmI2ZWMyN2FkMjZiZGE2ZmNiOWIwYzkyNDhlOGIz
N2FmM2MyNGVjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVyX2MuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2Zpcl9maWx0ZXJfYy5j
YwpAQCAtMTEsMTEgKzExLDggQEAKICNpbmNsdWRlICJjb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9j
LmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KLQogI2luY2x1ZGUgPG1lbW9yeT4KIAotI2luY2x1
ZGUgImNvbW1vbl9hdWRpby9maXJfZmlsdGVyX25lb24uaCIKLSNpbmNsdWRlICJjb21tb25fYXVk
aW8vZmlyX2ZpbHRlcl9zc2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9mYWN0b3J5LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2Zpcl9maWx0
ZXJfZmFjdG9yeS5jYwppbmRleCAzMjQzYjI3ZWY5YWQyZGY2MjRjNWFjN2VkN2RkZmM5Yjc3YjY1
MTJhLi4xOTUyOGUzMTJlYzU0Y2M2MTc1YzM1OGVjM2FjNzljZjI0ZGU4N2JmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8v
ZmlyX2ZpbHRlcl9mYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9maXJfZmlsdGVyX2ZhY3RvcnkuY2MKQEAgLTEzLDEy
ICsxMywxMiBAQAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9maXJfZmlsdGVyX2MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5o
IgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9mZWF0dXJlc193cmFwcGVy
LmgiCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19IQVNfTkVPTikKICNpbmNsdWRlICJjb21tb25fYXVk
aW8vZmlyX2ZpbHRlcl9uZW9uLmgiCiAjZWxpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX1g4Nl9GQU1J
TFkpCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2Zpcl9maWx0ZXJfc3NlLmgiCisjaW5jbHVkZSAi
c3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2ZlYXR1cmVzX3dyYXBwZXIuaCIgIC8vIGtTU0Uy
LCBXZWJSdGNfRy4uLgogI2VuZGlmCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2Zp
cl9maWx0ZXJfc3NlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9zc2UuaAppbmRleCA3NzA3ZjkzM2Q5ZWU2YjdiMTMw
NWM1Njk0YzdiZGRhNjUzMGUwMWNhLi5iNzY4YTM3YWExNTQ0YjA4YTZjZWEzZWMxMzc3OGZjMjMz
NDZkNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9zc2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vZmlyX2ZpbHRlcl9zc2UuaApA
QCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBDT01NT05fQVVESU9fRklSX0ZJTFRFUl9TU0VfSF8K
ICNkZWZpbmUgQ09NTU9OX0FVRElPX0ZJUl9GSUxURVJfU1NFX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJjb21tb25fYXVkaW8vZmlyX2Zp
bHRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRp
bC5oCmluZGV4IGRlMjQyYTQ5YmU4YjY2MzQ4NGE4YjllYjRlNWZhZWNiMDM4MjdhZjQuLmJjYTU3
MTgwNDRjOTBlODYxOTFhMjIxOGVlYmNjYTUyMmVmYzE2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9pbmNsdWRlL2F1
ZGlvX3V0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191dGlsLmgKQEAgLTExLDYgKzExLDcgQEAKICNp
Zm5kZWYgQ09NTU9OX0FVRElPX0lOQ0xVREVfQVVESU9fVVRJTF9IXwogI2RlZmluZSBDT01NT05f
QVVESU9fSU5DTFVERV9BVURJT19VVElMX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Y3N0cmluZz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl9hdWRpby9yZWFsX2ZvdXJpZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZWFsX2ZvdXJpZXIuaAppbmRleCBhM2U0ZGQxNmE4MmMy
MTM0OWVmYTYwODI4ZDk3YWE5YzU3ODJmODE1Li40ZDBkOGJmMzhlZTkwYjYyYTY4MWJkM2M5NDA1
ODAyZDhmNzRmZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVhbF9mb3VyaWVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3JlYWxfZm91cmllci5o
CkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIENPTU1PTl9BVURJT19SRUFMX0ZPVVJJRVJfSF8K
ICNkZWZpbmUgQ09NTU9OX0FVRElPX1JFQUxfRk9VUklFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CiAjaW5jbHVkZSA8Y29tcGxleD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9y
ZWFsX2ZvdXJpZXJfb291cmEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl9hdWRpby9yZWFsX2ZvdXJpZXJfb291cmEuaAppbmRleCBiYjhlZWY5NmRm
ZjZlZjEwM2QzOTQ5MWZiZDA5ZDZkYjFlYTFkMDcyLi5iMzZjODRmMTBiNmIyMzgyMTJlNjM3YWI1
MDViM2Q1ODRlMjMwYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVhbF9mb3VyaWVyX29vdXJhLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3JlYWxf
Zm91cmllcl9vb3VyYS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIENPTU1PTl9BVURJT19S
RUFMX0ZPVVJJRVJfT09VUkFfSF8KICNkZWZpbmUgQ09NTU9OX0FVRElPX1JFQUxfRk9VUklFUl9P
T1VSQV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8Y29tcGxleD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvcHVzaF9yZXNhbXBsZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVz
YW1wbGVyL3B1c2hfcmVzYW1wbGVyLmNjCmluZGV4IDMxOGQ5N2I3MmMyOGFkNTBmM2IwMzM3YWFm
M2IzZmQ4NTVhNTQyYzguLjliODk4NjdlNWEwZGM5MzAzMzUyNzZlZTA5ODNjMmE3Mzk2MTM1Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl9hdWRpby9yZXNhbXBsZXIvcHVzaF9yZXNhbXBsZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNo
X3Jlc2FtcGxlci5jYwpAQCAtMTAsMTIgKzEwLDEyIEBACiAKICNpbmNsdWRlICJjb21tb25fYXVk
aW8vcmVzYW1wbGVyL2luY2x1ZGUvcHVzaF9yZXNhbXBsZXIuaCIKIAorI2luY2x1ZGUgPHN0ZGlu
dC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW5s
aW5lZF92ZWN0b3IuaCIKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRl
ICJjb21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191dGlsLmgiCi0jaW5jbHVkZSAiY29tbW9uX2F1
ZGlvL3Jlc2FtcGxlci9pbmNsdWRlL3Jlc2FtcGxlci5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRp
by9yZXNhbXBsZXIvcHVzaF9zaW5jX3Jlc2FtcGxlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3B1c2hfc2luY19yZXNhbXBsZXIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNh
bXBsZXIvcHVzaF9zaW5jX3Jlc2FtcGxlci5oCmluZGV4IDFmZmU3M2Y3OWJhMjgwNmRhYTkzMjY4
YTFmODU5N2RjMTE2MmE0YjkuLmRiOWNkYzFmZDRiMzNlOGE1NjJiY2IzMjI2MjEwYmU3YWQ0Mjhm
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvcHVzaF9zaW5jX3Jlc2FtcGxlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBs
ZXIvcHVzaF9zaW5jX3Jlc2FtcGxlci5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIENPTU1P
Tl9BVURJT19SRVNBTVBMRVJfUFVTSF9TSU5DX1JFU0FNUExFUl9IXwogI2RlZmluZSBDT01NT05f
QVVESU9fUkVTQU1QTEVSX1BVU0hfU0lOQ19SRVNBTVBMRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUg
ImNvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNhbXBsZXIuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNh
bXBsZXIvcmVzYW1wbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9yZXNhbXBsZXIuY2MKaW5kZXggYWEzYTRiYWMy
YWEyYmMyMzQ0N2NlMjhmNTc2NjJjZDk2YjNlZDcyNS4uZTRkMmFhMmI2MTU1OWVkNDUwOTk3MGY2
ZTU1NDlhMjdjZmYwMDU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9yZXNhbXBsZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jl
c2FtcGxlci9yZXNhbXBsZXIuY2MKQEAgLTEyLDYgKzEyLDcgQEAKICAqIEEgd3JhcHBlciBmb3Ig
cmVzYW1wbGluZyBhIG51bWVyb3VzIGFtb3VudCBvZiBzYW1wbGluZyBjb21iaW5hdGlvbnMuCiAg
Ki8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUg
PHN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2Ft
cGxlci9zaW5jX3Jlc2FtcGxlci5jYwppbmRleCA1YWEyMDYxYWI3NWVjNGRiMTIyZTA5OTY3NTY2
ZDEwN2RhZjZiYzQxLi40NjAxNTE0MDMwMzExMmQzZTJjN2JkNWQ5MTdkOTY3ZDkxNmEyNDAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21t
b25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19y
ZXNhbXBsZXIuY2MKQEAgLTg4LDEzICs4OCwxMyBAQAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9y
ZXNhbXBsZXIvc2luY19yZXNhbXBsZXIuaCIKIAogI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KLQogI2luY2x1ZGUgPGxpbWl0cz4KIAog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9h
cmNoLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2ZlYXR1cmVzX3dy
YXBwZXIuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jcHVfZmVhdHVyZXNf
d3JhcHBlci5oIiAgLy8ga1NTRTIsIFdlYlJ0Y19HLi4uCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVz
YW1wbGVyLmgKaW5kZXggOGE4MzNjZTg4Yzk5YTMyZjgwYmRmZmQ4MjU2MTg2MmI1NDIzYTU2OS4u
MGJlNDMxOGUzMzkyMjA3MDQ1N2RlMDU5NWI4Nzk1NzhkZGRkYjcyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2Ft
cGxlci9zaW5jX3Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNhbXBsZXIuaApAQCAt
MTQsNiArMTQsNyBAQAogI2lmbmRlZiBDT01NT05fQVVESU9fUkVTQU1QTEVSX1NJTkNfUkVTQU1Q
TEVSX0hfCiAjZGVmaW5lIENPTU1PTl9BVURJT19SRVNBTVBMRVJfU0lOQ19SRVNBTVBMRVJfSF8K
IAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby9yZXNhbXBsZXIvc2luY19yZXNh
bXBsZXJfc3NlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlcl9zc2UuY2MKaW5kZXggMzkwNmE3
OTc1MjhhNDI1ZDAzNjIxZWExNzA2MTRmZGQwZTFiYjkyNy4uZjZhMjRkMGEwZTBkMzQxNzQ3MzJl
NjhhOTFmODMyMDQ2MDVmYWIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlcl9z
c2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX2F1ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlcl9zc2UuY2MKQEAgLTExLDEwICsxMSwx
MiBAQAogLy8gTW9kaWZpZWQgZnJvbSB0aGUgQ2hyb21pdW0gb3JpZ2luYWw6CiAvLyBzcmMvbWVk
aWEvYmFzZS9zaW1kL3NpbmNfcmVzYW1wbGVyX3NzZS5jYwogCi0jaW5jbHVkZSAiY29tbW9uX2F1
ZGlvL3Jlc2FtcGxlci9zaW5jX3Jlc2FtcGxlci5oIgotCisjaW5jbHVkZSA8c3RkZGVmLmg+Cisj
aW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8eG1taW50cmluLmg+CiAKKyNpbmNsdWRlICJj
b21tb25fYXVkaW8vcmVzYW1wbGVyL3NpbmNfcmVzYW1wbGVyLmgiCisKIG5hbWVzcGFjZSB3ZWJy
dGMgewogCiBmbG9hdCBTaW5jUmVzYW1wbGVyOjpDb252b2x2ZV9TU0UoY29uc3QgZmxvYXQqIGlu
cHV0X3B0ciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl9hdWRpby9zbW9vdGhpbmdfZmlsdGVyLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Ntb290aGluZ19maWx0ZXIu
Y2MKaW5kZXggZDQyNmJkYTI1MDEzNDNjYzcyMWE1YjJjMGY1MmZiNjZjMDM1MjkwZS4uMGQ1YWFh
NDg1NDE1OTA0ZWIzY2NkYjAyM2ZhMmIzN2I4MWZkODc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Ntb290aGluZ19m
aWx0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX2F1ZGlvL3Ntb290aGluZ19maWx0ZXIuY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2lu
Y2x1ZGUgPGNtYXRoPgogCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Nt
b290aGluZ19maWx0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl9hdWRpby9zbW9vdGhpbmdfZmlsdGVyLmgKaW5kZXggY2ZmNzQ2OTUzYWE4MGFk
OTBjZGQ1ZDI5ZTNkOTE1MTcxYjM1YmYyMy4uYzQ2N2Q4NTQyNjk1NmY4ODhjZjAyNWNiY2RhNTli
OGU0MGUwZDAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvY29tbW9uX2F1ZGlvL3Ntb290aGluZ19maWx0ZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vc21vb3RoaW5nX2Zp
bHRlci5oCkBAIC0xMSw5ICsxMSwxMCBAQAogI2lmbmRlZiBDT01NT05fQVVESU9fU01PT1RISU5H
X0ZJTFRFUl9IXwogI2RlZmluZSBDT01NT05fQVVESU9fU01PT1RISU5HX0ZJTFRFUl9IXwogCisj
aW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInN5c3RlbV93
cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVk
aW8vdmFkL3ZhZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl9hdWRpby92YWQvdmFkLmNjCmluZGV4IDFjYjMzMmE2MWQ4ODdmZDI0ZGIxNWFlYTVi
OGMxZWE3ZTg5MTVhMTIuLjk4N2VkNTI2YzAwYTk3OTNjYTk3ZmNhMzBiMzI0OGJlNjZiMDYxNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl9hdWRpby92YWQvdmFkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby92YWQvdmFkLmNjCkBAIC0xMiw2ICsxMiw3IEBACiAK
ICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNpbmNsdWRlICJjb21tb25fYXVkaW8vdmFkL2luY2x1ZGUv
d2VicnRjX3ZhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5jYwppbmRleCAwMjA5ZjUy
ZDJjNzM1OTJlYWE2M2RhMjVmMmJkOTFkM2U5N2JlZTg1Li45MGE4OTI4MWU1Y2Q0OGRjMmUzMmMy
MDU1M2MwMGYxZDFmODc4NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNj
CkBAIC0xMCwzNSArMTAsNDUgQEAKIAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby93YXZfZmlsZS5o
IgogCisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
Y3N0ZGlvPgotI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAogI2lu
Y2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKICNpbmNsdWRlICJjb21t
b25fYXVkaW8vd2F2X2hlYWRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9z
YWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgewogCiAvLyBXZSB3cml0ZSAxNi1iaXQgUENN
IFdBViBmaWxlcy4KLXN0YXRpYyBjb25zdCBXYXZGb3JtYXQga1dhdkZvcm1hdCA9IGtXYXZGb3Jt
YXRQY207Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IGtCeXRlc1BlclNhbXBsZSA9IDI7Citjb25zdGV4
cHIgV2F2Rm9ybWF0IGtXYXZGb3JtYXQgPSBrV2F2Rm9ybWF0UGNtOworc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8V2F2Rm9ybWF0Pjo6dmFsdWUsICIiKTsKK2Nv
bnN0ZXhwciBzaXplX3Qga0J5dGVzUGVyU2FtcGxlID0gMjsKIAogLy8gRG9lc24ndCB0YWtlIG93
bmVyc2hpcCBvZiB0aGUgZmlsZSBoYW5kbGUgYW5kIHdvbid0IGNsb3NlIGl0LgogY2xhc3MgUmVh
ZGFibGVXYXZGaWxlIDogcHVibGljIFJlYWRhYmxlV2F2IHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0
IFJlYWRhYmxlV2F2RmlsZShGSUxFKiBmaWxlKSA6IGZpbGVfKGZpbGUpIHt9CisgIFJlYWRhYmxl
V2F2RmlsZShjb25zdCBSZWFkYWJsZVdhdkZpbGUmKSA9IGRlbGV0ZTsKKyAgUmVhZGFibGVXYXZG
aWxlJiBvcGVyYXRvcj0oY29uc3QgUmVhZGFibGVXYXZGaWxlJikgPSBkZWxldGU7CiAgIHNpemVf
dCBSZWFkKHZvaWQqIGJ1Ziwgc2l6ZV90IG51bV9ieXRlcykgb3ZlcnJpZGUgewogICAgIHJldHVy
biBmcmVhZChidWYsIDEsIG51bV9ieXRlcywgZmlsZV8pOwogICB9CisgIGJvb2wgRW9mKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmVvZihmaWxlXykgIT0gMDsgfQorICBib29sIFNlZWtGb3J3
YXJkKHVpbnQzMl90IG51bV9ieXRlcykgb3ZlcnJpZGUgeworICAgIHJldHVybiBmc2VlayhmaWxl
XywgbnVtX2J5dGVzLCBTRUVLX0NVUikgPT0gMDsKKyAgfQogCiAgcHJpdmF0ZToKICAgRklMRSog
ZmlsZV87CiB9OwogCit9ICAvLyBuYW1lc3BhY2UKKwogV2F2UmVhZGVyOjpXYXZSZWFkZXIoY29u
c3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKQogICAgIDogV2F2UmVhZGVyKHJ0Yzo6T3BlblBsYXRm
b3JtRmlsZVJlYWRPbmx5KGZpbGVuYW1lKSkge30KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFkZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8v
d2F2X2hlYWRlci5jYwppbmRleCA4ZmM1ZmVmNTA4NTIzMDY2ODM3OWRlYzBmMjk0NzY0MzA1NTJj
NjczLi5lNDliNzQ4OWIyZWZhM2VhZWQ2YWJhZTZkNmE3MjQzMTAwZGNlZjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8v
d2F2X2hlYWRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5jYwpAQCAtMTQsMTMgKzE0LDEzIEBACiAKICNp
bmNsdWRlICJjb21tb25fYXVkaW8vd2F2X2hlYWRlci5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmlu
Zz4KIAotI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2Uvc2FuaXRpemVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVt
L2FyY2guaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zMiw2ICszMiwxMSBAQCBzdHJ1Y3Qg
Q2h1bmtIZWFkZXIgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENodW5rSGVhZGVyKSA9PSA4
LCAiQ2h1bmtIZWFkZXIgc2l6ZSIpOwogCitzdHJ1Y3QgUmlmZkhlYWRlciB7CisgIENodW5rSGVh
ZGVyIGhlYWRlcjsKKyAgdWludDMyX3QgRm9ybWF0OworfTsKKwogLy8gV2UgY2FuJ3QgbmVzdCB0
aGlzIGRlZmluaXRpb24gaW4gV2F2SGVhZGVyLCBiZWNhdXNlIFZTMjAxMyBnaXZlcyBhbiBlcnJv
cgogLy8gb24gc2l6ZW9mKFdhdkhlYWRlcjo6Zm10KTogImVycm9yIEMyMDcwOiAndW5rbm93bic6
IGlsbGVnYWwgc2l6ZW9mIG9wZXJhbmQiLgogc3RydWN0IEZtdFN1YmNodW5rIHsKQEAgLTQ2LDEx
ICs1MSwxMiBAQCBzdHJ1Y3QgRm10U3ViY2h1bmsgewogc3RhdGljX2Fzc2VydChzaXplb2YoRm10
U3ViY2h1bmspID09IDI0LCAiRm10U3ViY2h1bmsgc2l6ZSIpOwogY29uc3QgdWludDMyX3Qga0Zt
dFN1YmNodW5rU2l6ZSA9IHNpemVvZihGbXRTdWJjaHVuaykgLSBzaXplb2YoQ2h1bmtIZWFkZXIp
OwogCisvLyBTaW1wbGUgd2F2IGhlYWRlci4gSXQgZG9lcyBub3QgaW5jbHVkZSBjaHVua3MgdGhh
dCBhcmUgbm90IGVzc2VudGlhbCB0byByZWFkCisvLyBhdWRpbyBzYW1wbGVzLgogc3RydWN0IFdh
dkhlYWRlciB7Ci0gIHN0cnVjdCB7Ci0gICAgQ2h1bmtIZWFkZXIgaGVhZGVyOwotICAgIHVpbnQz
Ml90IEZvcm1hdDsKLSAgfSByaWZmOworICBXYXZIZWFkZXIoY29uc3QgV2F2SGVhZGVyJikgPSBk
ZWZhdWx0OworICBXYXZIZWFkZXImIG9wZXJhdG9yPShjb25zdCBXYXZIZWFkZXImKSA9IGRlZmF1
bHQ7CisgIFJpZmZIZWFkZXIgcmlmZjsKICAgRm10U3ViY2h1bmsgZm10OwogICBzdHJ1Y3Qgewog
ICAgIENodW5rSGVhZGVyIGhlYWRlcjsKQEAgLTU4LDYgKzY0LDg3IEBAIHN0cnVjdCBXYXZIZWFk
ZXIgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdhdkhlYWRlcikgPT0ga1dhdkhlYWRlclNp
emUsICJubyBwYWRkaW5nIGluIGhlYWRlciIpOwogCisjaWZkZWYgV0VCUlRDX0FSQ0hfTElUVExF
X0VORElBTgorc3RhdGljIGlubGluZSB2b2lkIFdyaXRlTEUxNih1aW50MTZfdCogZiwgdWludDE2
X3QgeCkgeworICAqZiA9IHg7Cit9CitzdGF0aWMgaW5saW5lIHZvaWQgV3JpdGVMRTMyKHVpbnQz
Ml90KiBmLCB1aW50MzJfdCB4KSB7CisgICpmID0geDsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBX
cml0ZUZvdXJDQyh1aW50MzJfdCogZiwgY2hhciBhLCBjaGFyIGIsIGNoYXIgYywgY2hhciBkKSB7
CisgICpmID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGIpIDw8IDggfAorICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihjKSA8PCAxNiB8IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihkKSA8PCAyNDsKK30KKworc3RhdGljIGlubGluZSB1aW50MTZfdCBS
ZWFkTEUxNih1aW50MTZfdCB4KSB7CisgIHJldHVybiB4OworfQorc3RhdGljIGlubGluZSB1aW50
MzJfdCBSZWFkTEUzMih1aW50MzJfdCB4KSB7CisgIHJldHVybiB4OworfQorc3RhdGljIGlubGlu
ZSBzdGQ6OnN0cmluZyBSZWFkRm91ckNDKHVpbnQzMl90IHgpIHsKKyAgcmV0dXJuIHN0ZDo6c3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSwgNCk7Cit9CisjZWxzZQorI2Vycm9yICJX
cml0ZSBiZS10by1sZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyIKKyNlbmRpZgorCitzdGF0aWMgaW5s
aW5lIHVpbnQzMl90IFJpZmZDaHVua1NpemUoc2l6ZV90IGJ5dGVzX2luX3BheWxvYWQpIHsKKyAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90PihieXRlc19pbl9wYXlsb2FkICsga1dhdkhlYWRl
clNpemUgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihDaHVua0hlYWRl
cikpOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQzMl90IEJ5dGVSYXRlKHNpemVfdCBudW1fY2hh
bm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ5dGVzX3Blcl9zYW1wbGUp
IHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90PihudW1fY2hhbm5lbHMgKiBzYW1wbGVf
cmF0ZSAqIGJ5dGVzX3Blcl9zYW1wbGUpOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQxNl90IEJs
b2NrQWxpZ24oc2l6ZV90IG51bV9jaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgYnl0ZXNfcGVyX3NhbXBsZSkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8
dWludDE2X3Q+KG51bV9jaGFubmVscyAqIGJ5dGVzX3Blcl9zYW1wbGUpOworfQorCisvLyBGaW5k
cyBhIGNodW5rIGhhdmluZyB0aGUgc291Z2h0IElELiBJZiBmb3VuZCwgdGhlbiB8cmVhZGFibGV8
IHBvaW50cyB0byB0aGUKKy8vIGZpcnN0IGJ5dGUgb2YgdGhlIHNvdWdodCBjaHVuayBkYXRhLiBJ
ZiBub3QgZm91bmQsIHRoZSBlbmQgb2YgdGhlIGZpbGUgaXMKKy8vIHJlYWNoZWQuCit2b2lkIEZp
bmRXYXZlQ2h1bmsoQ2h1bmtIZWFkZXIqIGNodW5rX2hlYWRlciwKKyAgICAgICAgICAgICAgICAg
ICBSZWFkYWJsZVdhdiogcmVhZGFibGUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcgc291Z2h0X2NodW5rX2lkKSB7CisgIFJUQ19EQ0hFQ0tfRVEoc291Z2h0X2NodW5rX2lk
LnNpemUoKSwgNCk7CisgIHdoaWxlICghcmVhZGFibGUtPkVvZigpKSB7CisgICAgaWYgKHJlYWRh
YmxlLT5SZWFkKGNodW5rX2hlYWRlciwgc2l6ZW9mKCpjaHVua19oZWFkZXIpKSAhPQorICAgICAg
ICBzaXplb2YoKmNodW5rX2hlYWRlcikpCisgICAgICByZXR1cm47ICAvLyBFT0YuCisgICAgaWYg
KFJlYWRGb3VyQ0MoY2h1bmtfaGVhZGVyLT5JRCkgPT0gc291Z2h0X2NodW5rX2lkKQorICAgICAg
cmV0dXJuOyAgLy8gU291Z2h0IGNodW5rIGZvdW5kLgorICAgIC8vIElnbm9yZSBjdXJyZW50IGNo
dW5rIGJ5IHNraXBwaW5nIGl0cyBwYXlsb2FkLgorICAgIGlmICghcmVhZGFibGUtPlNlZWtGb3J3
YXJkKGNodW5rX2hlYWRlci0+U2l6ZSkpCisgICAgICByZXR1cm47ICAvLyBFT0Ygb3IgZXJyb3Iu
CisgIH0KKyAgcmV0dXJuOyAgLy8gRU9GLgorfQorCitib29sIFJlYWRGbXRDaHVua0RhdGEoRm10
U3ViY2h1bmsqIGZtdF9zdWJjaHVuaywgUmVhZGFibGVXYXYqIHJlYWRhYmxlKSB7CisgIC8vIFJl
YWRzICJmbXQgIiBjaHVuayBwYXlsb2FkLgorICBpZiAocmVhZGFibGUtPlJlYWQoJihmbXRfc3Vi
Y2h1bmstPkF1ZGlvRm9ybWF0KSwga0ZtdFN1YmNodW5rU2l6ZSkgIT0KKyAgICAgIGtGbXRTdWJj
aHVua1NpemUpCisgICAgcmV0dXJuIGZhbHNlOworICBjb25zdCB1aW50MzJfdCBmbXRfc2l6ZSA9
IFJlYWRMRTMyKGZtdF9zdWJjaHVuay0+aGVhZGVyLlNpemUpOworICBpZiAoZm10X3NpemUgIT0g
a0ZtdFN1YmNodW5rU2l6ZSkgeworICAgIC8vIFRoZXJlIGlzIGFuIG9wdGlvbmFsIHR3by1ieXRl
IGV4dGVuc2lvbiBmaWVsZCBwZXJtaXR0ZWQgdG8gYmUgcHJlc2VudAorICAgIC8vIHdpdGggUENN
LCBidXQgd2hpY2ggbXVzdCBiZSB6ZXJvLgorICAgIGludDE2X3QgZXh0X3NpemU7CisgICAgaWYg
KGtGbXRTdWJjaHVua1NpemUgKyBzaXplb2YoZXh0X3NpemUpICE9IGZtdF9zaXplKQorICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChyZWFkYWJsZS0+UmVhZCgmZXh0X3NpemUsIHNpemVvZihl
eHRfc2l6ZSkpICE9IHNpemVvZihleHRfc2l6ZSkpCisgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKGV4dF9zaXplICE9IDApCisgICAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRy
dWU7Cit9CisKIH0gIC8vIG5hbWVzcGFjZQogCiBib29sIENoZWNrV2F2UGFyYW1ldGVycyhzaXpl
X3QgbnVtX2NoYW5uZWxzLApAQCAtMTEyLDQ3ICsxOTksNiBAQCBib29sIENoZWNrV2F2UGFyYW1l
dGVycyhzaXplX3QgbnVtX2NoYW5uZWxzLAogICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmZGVmIFdF
QlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KLXN0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUxFMTYodWlu
dDE2X3QqIGYsIHVpbnQxNl90IHgpIHsKLSAgKmYgPSB4OwotfQotc3RhdGljIGlubGluZSB2b2lk
IFdyaXRlTEUzMih1aW50MzJfdCogZiwgdWludDMyX3QgeCkgewotICAqZiA9IHg7Ci19Ci1zdGF0
aWMgaW5saW5lIHZvaWQgV3JpdGVGb3VyQ0ModWludDMyX3QqIGYsIGNoYXIgYSwgY2hhciBiLCBj
aGFyIGMsIGNoYXIgZCkgewotICAqZiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihhKSB8IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihiKSA8PCA4IHwKLSAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
YykgPDwgMTYgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZCkgPDwgMjQ7Ci19Ci0KLXN0YXRpYyBp
bmxpbmUgdWludDE2X3QgUmVhZExFMTYodWludDE2X3QgeCkgewotICByZXR1cm4geDsKLX0KLXN0
YXRpYyBpbmxpbmUgdWludDMyX3QgUmVhZExFMzIodWludDMyX3QgeCkgewotICByZXR1cm4geDsK
LX0KLXN0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcgUmVhZEZvdXJDQyh1aW50MzJfdCB4KSB7Ci0g
IHJldHVybiBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0PGNoYXIqPigmeCksIDQpOwotfQot
I2Vsc2UKLSNlcnJvciAiV3JpdGUgYmUtdG8tbGUgY29udmVyc2lvbiBmdW5jdGlvbnMiCi0jZW5k
aWYKLQotc3RhdGljIGlubGluZSB1aW50MzJfdCBSaWZmQ2h1bmtTaXplKHNpemVfdCBieXRlc19p
bl9wYXlsb2FkKSB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYnl0ZXNfaW5fcGF5
bG9hZCArIGtXYXZIZWFkZXJTaXplIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplb2YoQ2h1bmtIZWFkZXIpKTsKLX0KLQotc3RhdGljIGlubGluZSB1aW50MzJfdCBCeXRlUmF0
ZShzaXplX3QgbnVtX2NoYW5uZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2FtcGxlX3JhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBi
eXRlc19wZXJfc2FtcGxlKSB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obnVtX2No
YW5uZWxzICogc2FtcGxlX3JhdGUgKiBieXRlc19wZXJfc2FtcGxlKTsKLX0KLQotc3RhdGljIGlu
bGluZSB1aW50MTZfdCBCbG9ja0FsaWduKHNpemVfdCBudW1fY2hhbm5lbHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ5dGVzX3Blcl9zYW1wbGUpIHsKLSAgcmV0
dXJuIHN0YXRpY19jYXN0PHVpbnQxNl90PihudW1fY2hhbm5lbHMgKiBieXRlc19wZXJfc2FtcGxl
KTsKLX0KLQogdm9pZCBXcml0ZVdhdkhlYWRlcih1aW50OF90KiBidWYsCiAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBudW1fY2hhbm5lbHMsCiAgICAgICAgICAgICAgICAgICAgIGludCBzYW1w
bGVfcmF0ZSwKQEAgLTE2Miw3ICsyMDgsNyBAQCB2b2lkIFdyaXRlV2F2SGVhZGVyKHVpbnQ4X3Qq
IGJ1ZiwKICAgUlRDX0NIRUNLKENoZWNrV2F2UGFyYW1ldGVycyhudW1fY2hhbm5lbHMsIHNhbXBs
ZV9yYXRlLCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfcGVy
X3NhbXBsZSwgbnVtX3NhbXBsZXMpKTsKIAotICBXYXZIZWFkZXIgaGVhZGVyOworICBhdXRvIGhl
YWRlciA9IHJ0Yzo6TXNhblVuaW5pdGlhbGl6ZWQ8V2F2SGVhZGVyPih7fSk7CiAgIGNvbnN0IHNp
emVfdCBieXRlc19pbl9wYXlsb2FkID0gYnl0ZXNfcGVyX3NhbXBsZSAqIG51bV9zYW1wbGVzOwog
CiAgIFdyaXRlRm91ckNDKCZoZWFkZXIucmlmZi5oZWFkZXIuSUQsICdSJywgJ0knLCAnRicsICdG
Jyk7CkBAIC0xOTQsMjUgKzI0MCwzOCBAQCBib29sIFJlYWRXYXZIZWFkZXIoUmVhZGFibGVXYXYq
IHJlYWRhYmxlLAogICAgICAgICAgICAgICAgICAgIFdhdkZvcm1hdCogZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfcGVyX3NhbXBsZSwKICAgICAgICAgICAgICAgICAg
ICBzaXplX3QqIG51bV9zYW1wbGVzKSB7Ci0gIFdhdkhlYWRlciBoZWFkZXI7Ci0gIGlmIChyZWFk
YWJsZS0+UmVhZCgmaGVhZGVyLCBrV2F2SGVhZGVyU2l6ZSAtIHNpemVvZihoZWFkZXIuZGF0YSkp
ICE9Ci0gICAgICBrV2F2SGVhZGVyU2l6ZSAtIHNpemVvZihoZWFkZXIuZGF0YSkpCisgIGF1dG8g
aGVhZGVyID0gcnRjOjpNc2FuVW5pbml0aWFsaXplZDxXYXZIZWFkZXI+KHt9KTsKKworICAvLyBS
ZWFkIFJJRkYgY2h1bmsuCisgIGlmIChyZWFkYWJsZS0+UmVhZCgmaGVhZGVyLnJpZmYsIHNpemVv
ZihoZWFkZXIucmlmZikpICE9IHNpemVvZihoZWFkZXIucmlmZikpCisgICAgcmV0dXJuIGZhbHNl
OworICBpZiAoUmVhZEZvdXJDQyhoZWFkZXIucmlmZi5oZWFkZXIuSUQpICE9ICJSSUZGIikKKyAg
ICByZXR1cm4gZmFsc2U7CisgIGlmIChSZWFkRm91ckNDKGhlYWRlci5yaWZmLkZvcm1hdCkgIT0g
IldBVkUiKQogICAgIHJldHVybiBmYWxzZTsKIAotICBjb25zdCB1aW50MzJfdCBmbXRfc2l6ZSA9
IFJlYWRMRTMyKGhlYWRlci5mbXQuaGVhZGVyLlNpemUpOwotICBpZiAoZm10X3NpemUgIT0ga0Zt
dFN1YmNodW5rU2l6ZSkgewotICAgIC8vIFRoZXJlIGlzIGFuIG9wdGlvbmFsIHR3by1ieXRlIGV4
dGVuc2lvbiBmaWVsZCBwZXJtaXR0ZWQgdG8gYmUgcHJlc2VudAotICAgIC8vIHdpdGggUENNLCBi
dXQgd2hpY2ggbXVzdCBiZSB6ZXJvLgotICAgIGludDE2X3QgZXh0X3NpemU7Ci0gICAgaWYgKGtG
bXRTdWJjaHVua1NpemUgKyBzaXplb2YoZXh0X3NpemUpICE9IGZtdF9zaXplKQotICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChyZWFkYWJsZS0+UmVhZCgmZXh0X3NpemUsIHNpemVvZihleHRf
c2l6ZSkpICE9IHNpemVvZihleHRfc2l6ZSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KGV4dF9zaXplICE9IDApCi0gICAgICByZXR1cm4gZmFsc2U7CisgIC8vIEZpbmQgImZtdCAiIGFu
ZCAiZGF0YSIgY2h1bmtzLiBXaGlsZSB0aGUgb2ZmaWNpYWwgV2F2ZSBmaWxlIHNwZWNpZmljYXRp
b24KKyAgLy8gZG9lcyBub3QgcHV0IHJlcXVpcmVtZW50cyBvbiB0aGUgY2h1bmtzIG9yZGVyLCBp
dCBpcyB1bmNvbW1vbiB0byBmaW5kIHRoZQorICAvLyAiZGF0YSIgY2h1bmsgYmVmb3JlIHRoZSAi
Zm10ICIgb25lLiBUaGUgY29kZSBiZWxvdyBmYWlscyBpZiB0aGlzIGlzIG5vdCB0aGUKKyAgLy8g
Y2FzZS4KKyAgRmluZFdhdmVDaHVuaygmaGVhZGVyLmZtdC5oZWFkZXIsIHJlYWRhYmxlLCAiZm10
ICIpOworICBpZiAoUmVhZEZvdXJDQyhoZWFkZXIuZm10LmhlYWRlci5JRCkgIT0gImZtdCAiKSB7
CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbm5vdCBmaW5kICdmbXQgJyBjaHVuay4iOwor
ICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAoIVJlYWRGbXRDaHVua0RhdGEoJmhlYWRlci5m
bXQsIHJlYWRhYmxlKSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW5ub3QgcmVhZCAn
Zm10ICcgY2h1bmsuIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKHJlYWRhYmxlLT5F
b2YoKSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICInZm10ICcgY2h1bmsgcGxhY2VkIGFm
dGVyICdkYXRhJyBjaHVuay4iOworICAgIHJldHVybiBmYWxzZTsKICAgfQotICBpZiAocmVhZGFi
bGUtPlJlYWQoJmhlYWRlci5kYXRhLCBzaXplb2YoaGVhZGVyLmRhdGEpKSAhPSBzaXplb2YoaGVh
ZGVyLmRhdGEpKQorICBGaW5kV2F2ZUNodW5rKCZoZWFkZXIuZGF0YS5oZWFkZXIsIHJlYWRhYmxl
LCAiZGF0YSIpOworICBpZiAoUmVhZEZvdXJDQyhoZWFkZXIuZGF0YS5oZWFkZXIuSUQpICE9ICJk
YXRhIikgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW5ub3QgZmluZCAnZGF0YScgY2h1
bmsuIjsKICAgICByZXR1cm4gZmFsc2U7CisgIH0KIAogICAvLyBQYXJzZSBuZWVkZWQgZmllbGRz
LgogICAqZm9ybWF0ID0gc3RhdGljX2Nhc3Q8V2F2Rm9ybWF0PihSZWFkTEUxNihoZWFkZXIuZm10
LkF1ZGlvRm9ybWF0KSk7CkBAIC0yMjQsMTYgKzI4Myw2IEBAIGJvb2wgUmVhZFdhdkhlYWRlcihS
ZWFkYWJsZVdhdiogcmVhZGFibGUsCiAgICAgcmV0dXJuIGZhbHNlOwogICAqbnVtX3NhbXBsZXMg
PSBieXRlc19pbl9wYXlsb2FkIC8gKmJ5dGVzX3Blcl9zYW1wbGU7CiAKLSAgLy8gU2FuaXR5IGNo
ZWNrIHJlbWFpbmluZyBmaWVsZHMuCi0gIGlmIChSZWFkRm91ckNDKGhlYWRlci5yaWZmLmhlYWRl
ci5JRCkgIT0gIlJJRkYiKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKFJlYWRGb3VyQ0MoaGVh
ZGVyLnJpZmYuRm9ybWF0KSAhPSAiV0FWRSIpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoUmVh
ZEZvdXJDQyhoZWFkZXIuZm10LmhlYWRlci5JRCkgIT0gImZtdCAiKQotICAgIHJldHVybiBmYWxz
ZTsKLSAgaWYgKFJlYWRGb3VyQ0MoaGVhZGVyLmRhdGEuaGVhZGVyLklEKSAhPSAiZGF0YSIpCi0g
ICAgcmV0dXJuIGZhbHNlOwotCiAgIGlmIChSZWFkTEUzMihoZWFkZXIucmlmZi5oZWFkZXIuU2l6
ZSkgPCBSaWZmQ2h1bmtTaXplKGJ5dGVzX2luX3BheWxvYWQpKQogICAgIHJldHVybiBmYWxzZTsK
ICAgaWYgKFJlYWRMRTMyKGhlYWRlci5mbXQuQnl0ZVJhdGUpICE9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hl
YWRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X2F1ZGlvL3dhdl9oZWFkZXIuaAppbmRleCA4NzJkM2FiY2U1Y2E0Y2RjOTQwY2E5MTQ0MDQ0MWU3
MjM3YmNiZTBiLi5hNTE5YmE1NTZmNTRmMDM2NTQ5NGJlYjYzN2Q4ZDZiN2JhMjQ5NjcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25f
YXVkaW8vd2F2X2hlYWRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmgKQEAgLTIxLDggKzIxLDExIEBAIHN0
YXRpYyBjb25zdCBzaXplX3Qga1dhdkhlYWRlclNpemUgPSA0NDsKIGNsYXNzIFJlYWRhYmxlV2F2
IHsKICBwdWJsaWM6CiAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkLgotICBz
aXplX3QgdmlydHVhbCBSZWFkKHZvaWQqIGJ1Ziwgc2l6ZV90IG51bV9ieXRlcykgPSAwOwotICB2
aXJ0dWFsIH5SZWFkYWJsZVdhdigpIHt9CisgIHZpcnR1YWwgc2l6ZV90IFJlYWQodm9pZCogYnVm
LCBzaXplX3QgbnVtX2J5dGVzKSA9IDA7CisgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZW5kLW9m
LWZpbGUgaGFzIGJlZW4gcmVhY2hlZC4KKyAgdmlydHVhbCBib29sIEVvZigpIGNvbnN0ID0gMDsK
KyAgdmlydHVhbCBib29sIFNlZWtGb3J3YXJkKHVpbnQzMl90IG51bV9ieXRlcykgPSAwOworICB2
aXJ0dWFsIH5SZWFkYWJsZVdhdigpID0gZGVmYXVsdDsKIH07CiAKIGVudW0gV2F2Rm9ybWF0IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl9hdWRpby93YXZfaGVhZGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFkZXJfdW5pdHRlc3QuY2MK
aW5kZXggYjcxNjliNTNjOGYxYjFhMWMxYzRmZDI0YmNkZTg2MGI0MTA4MTdlZS4uMmUyZWRhNWE2
ZjJkMDhmMjNjZmJhNWRjZDQ5ZjljM2ZjNWE3YTBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFkZXJfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX2F1ZGlvL3dhdl9oZWFkZXJfdW5pdHRlc3QuY2MKQEAgLTE5LDEyICsxOSw2IEBAIG5h
bWVzcGFjZSB3ZWJydGMgewogLy8gRG9lc24ndCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgYnVmZmVy
LgogY2xhc3MgUmVhZGFibGVXYXZCdWZmZXIgOiBwdWJsaWMgUmVhZGFibGVXYXYgewogIHB1Ymxp
YzoKLSAgUmVhZGFibGVXYXZCdWZmZXIoY29uc3QgdWludDhfdCogYnVmLCBzaXplX3Qgc2l6ZSkK
LSAgICAgIDogYnVmXyhidWYpLAotICAgICAgICBzaXplXyhzaXplKSwKLSAgICAgICAgcG9zXygw
KSwKLSAgICAgICAgYnVmX2V4aGF1c3RlZF8oZmFsc2UpLAotICAgICAgICBjaGVja19yZWFkX3Np
emVfKHRydWUpIHt9CiAgIFJlYWRhYmxlV2F2QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1Ziwgc2l6
ZV90IHNpemUsIGJvb2wgY2hlY2tfcmVhZF9zaXplKQogICAgICAgOiBidWZfKGJ1ZiksCiAgICAg
ICAgIHNpemVfKHNpemUpLApAQCAtNTcsNiArNTEsMjcgQEAgY2xhc3MgUmVhZGFibGVXYXZCdWZm
ZXIgOiBwdWJsaWMgUmVhZGFibGVXYXYgewogICAgIHJldHVybiBudW1fYnl0ZXM7CiAgIH0KIAor
ICBib29sIEVvZigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHBvc18gPT0gc2l6ZV87IH0KKwor
ICBib29sIFNlZWtGb3J3YXJkKHVpbnQzMl90IG51bV9ieXRlcykgb3ZlcnJpZGUgeworICAgIC8v
IFZlcmlmeSB3ZSBkb24ndCB0cnkgdG8gcmVhZCBvdXRzaWRlIG9mIGEgcHJvcGVybHkgc2l6ZWQg
aGVhZGVyLgorICAgIGlmIChzaXplXyA+PSBrV2F2SGVhZGVyU2l6ZSkKKyAgICAgIEVYUEVDVF9H
RShzaXplXywgcG9zXyArIG51bV9ieXRlcyk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1Zl9leGhhdXN0
ZWRfKTsKKworICAgIGNvbnN0IHNpemVfdCBieXRlc19yZW1haW5pbmcgPSBzaXplXyAtIHBvc187
CisgICAgaWYgKG51bV9ieXRlcyA+IGJ5dGVzX3JlbWFpbmluZykgeworICAgICAgLy8gRXJyb3I6
IGNhbm5vdCBzZWVrIGJleW9uZCBFT0YuCisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IGlmIChudW1fYnl0ZXMgPT0gYnl0ZXNfcmVtYWluaW5nKSB7CisgICAgICAvLyBUaGVyZSBzaG91
bGQgbm90IGJlIGFub3RoZXIgcmVhZCBhdHRlbXB0IGFmdGVyIHRoaXMgcG9pbnQuCisgICAgICBi
dWZfZXhoYXVzdGVkXyA9IHRydWU7CisgICAgfQorICAgIHBvc18gKz0gbnVtX2J5dGVzOworICAg
IHJldHVybiB0cnVlOworICB9CisKICBwcml2YXRlOgogICBjb25zdCB1aW50OF90KiBidWZfOwog
ICBjb25zdCBzaXplX3Qgc2l6ZV87CkBAIC0xMDMsNyArMTE4LDcgQEAgVEVTVChXYXZIZWFkZXJU
ZXN0LCBSZWFkV2F2SGVhZGVyV2l0aEVycm9ycykgewogICAvLyBpbnZhbGlkIGZpZWxkIGlzIGlu
ZGljYXRlZCBpbiB0aGUgYXJyYXkgbmFtZSwgYW5kIGluIHRoZSBjb21tZW50cyB3aXRoCiAgIC8v
ICpCQUQqLgogICB7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qga0JhZFJpZmZJRFtdID0gewor
ICAgIGNvbnN0ZXhwciB1aW50OF90IGtCYWRSaWZmSURbXSA9IHsKICAgICAgICAgLy8gY2xhbmct
Zm9ybWF0IG9mZgogICAgICAgICAvLyBjbGFuZyBmb3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBp
bmxpbmUgY29tbWVudHMuCiAgICAgICAnUicsICdpJywgJ2YnLCAnZicsICAvLyAqQkFEKgpAQCAt
MTIxLDEyICsxMzYsMTMgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkV2F2SGVhZGVyV2l0aEVy
cm9ycykgewogICAgICAgMHg5OSwgMHhkMCwgMHg1YiwgMHgwNywgIC8vIHNpemUgb2YgcGF5bG9h
ZDogMTIzNDU3Njg5CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogICAgIH07Ci0gICAgUmVh
ZGFibGVXYXZCdWZmZXIgcihrQmFkUmlmZklELCBzaXplb2Yoa0JhZFJpZmZJRCkpOworICAgIFJl
YWRhYmxlV2F2QnVmZmVyIHIoa0JhZFJpZmZJRCwgc2l6ZW9mKGtCYWRSaWZmSUQpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgLypjaGVja19yZWFkX3NpemU9Ki9mYWxzZSk7CiAgICAgRVhQRUNU
X0ZBTFNFKFJlYWRXYXZIZWFkZXIoJnIsICZudW1fY2hhbm5lbHMsICZzYW1wbGVfcmF0ZSwgJmZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNfcGVyX3NhbXBsZSwg
Jm51bV9zYW1wbGVzKSk7CiAgIH0KICAgewotICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGtCYWRC
aXRzUGVyU2FtcGxlW10gPSB7CisgICAgY29uc3RleHByIHVpbnQ4X3Qga0JhZEJpdHNQZXJTYW1w
bGVbXSA9IHsKICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgICAgICAvLyBjbGFuZyBm
b3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxpbmUgY29tbWVudHMuCiAgICAgICAnUicsICdJ
JywgJ0YnLCAnRicsCkBAIC0xNDQsMTIgKzE2MCwxMyBAQCBURVNUKFdhdkhlYWRlclRlc3QsIFJl
YWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7CiAgICAgICAweDk5LCAweGQwLCAweDViLCAweDA3LCAg
Ly8gc2l6ZSBvZiBwYXlsb2FkOiAxMjM0NTc2ODkKICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9u
CiAgICAgfTsKLSAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtCYWRCaXRzUGVyU2FtcGxlLCBzaXpl
b2Yoa0JhZEJpdHNQZXJTYW1wbGUpKTsKKyAgICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtCYWRCaXRz
UGVyU2FtcGxlLCBzaXplb2Yoa0JhZEJpdHNQZXJTYW1wbGUpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgLypjaGVja19yZWFkX3NpemU9Ki90cnVlKTsKICAgICBFWFBFQ1RfRkFMU0UoUmVhZFdh
dkhlYWRlcigmciwgJm51bV9jaGFubmVscywgJnNhbXBsZV9yYXRlLCAmZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc19wZXJfc2FtcGxlLCAmbnVtX3NhbXBsZXMp
KTsKICAgfQogICB7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qga0JhZEJ5dGVSYXRlW10gPSB7
CisgICAgY29uc3RleHByIHVpbnQ4X3Qga0JhZEJ5dGVSYXRlW10gPSB7CiAgICAgICAgIC8vIGNs
YW5nLWZvcm1hdCBvZmYKICAgICAgICAgLy8gY2xhbmcgZm9ybWF0dGluZyBkb2Vzbid0IHJlc3Bl
Y3QgaW5saW5lIGNvbW1lbnRzLgogICAgICAgJ1InLCAnSScsICdGJywgJ0YnLApAQCAtMTY3LDEy
ICsxODQsMTMgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBSZWFkV2F2SGVhZGVyV2l0aEVycm9ycykg
ewogICAgICAgMHg5OSwgMHhkMCwgMHg1YiwgMHgwNywgIC8vIHNpemUgb2YgcGF5bG9hZDogMTIz
NDU3Njg5CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogICAgIH07Ci0gICAgUmVhZGFibGVX
YXZCdWZmZXIgcihrQmFkQnl0ZVJhdGUsIHNpemVvZihrQmFkQnl0ZVJhdGUpKTsKKyAgICBSZWFk
YWJsZVdhdkJ1ZmZlciByKGtCYWRCeXRlUmF0ZSwgc2l6ZW9mKGtCYWRCeXRlUmF0ZSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAvKmNoZWNrX3JlYWRfc2l6ZT0qL3RydWUpOwogICAgIEVYUEVD
VF9GQUxTRShSZWFkV2F2SGVhZGVyKCZyLCAmbnVtX2NoYW5uZWxzLCAmc2FtcGxlX3JhdGUsICZm
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVzX3Blcl9zYW1wbGUs
ICZudW1fc2FtcGxlcykpOwogICB9CiAgIHsKLSAgICBzdGF0aWMgY29uc3QgdWludDhfdCBrQmFk
Rm10SGVhZGVyU2l6ZVtdID0geworICAgIGNvbnN0ZXhwciB1aW50OF90IGtCYWRGbXRIZWFkZXJT
aXplW10gPSB7CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKICAgICAgICAgLy8gY2xhbmcg
Zm9ybWF0dGluZyBkb2Vzbid0IHJlc3BlY3QgaW5saW5lIGNvbW1lbnRzLgogICAgICAgJ1InLCAn
SScsICdGJywgJ0YnLApAQCAtMTkxLDEyICsyMDksMTMgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBS
ZWFkV2F2SGVhZGVyV2l0aEVycm9ycykgewogICAgICAgMHg5OSwgMHhkMCwgMHg1YiwgMHgwNywg
IC8vIHNpemUgb2YgcGF5bG9hZDogMTIzNDU3Njg5CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBv
bgogICAgIH07Ci0gICAgUmVhZGFibGVXYXZCdWZmZXIgcihrQmFkRm10SGVhZGVyU2l6ZSwgc2l6
ZW9mKGtCYWRGbXRIZWFkZXJTaXplKSwgZmFsc2UpOworICAgIFJlYWRhYmxlV2F2QnVmZmVyIHIo
a0JhZEZtdEhlYWRlclNpemUsIHNpemVvZihrQmFkRm10SGVhZGVyU2l6ZSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAvKmNoZWNrX3JlYWRfc2l6ZT0qL2ZhbHNlKTsKICAgICBFWFBFQ1RfRkFM
U0UoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFubmVscywgJnNhbXBsZV9yYXRlLCAmZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc19wZXJfc2FtcGxlLCAmbnVt
X3NhbXBsZXMpKTsKICAgfQogICB7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qga05vblplcm9F
eHRlbnNpb25GaWVsZFtdID0geworICAgIGNvbnN0ZXhwciB1aW50OF90IGtOb25aZXJvRXh0ZW5z
aW9uRmllbGRbXSA9IHsKICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgICAgICAvLyBj
bGFuZyBmb3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxpbmUgY29tbWVudHMuCiAgICAgICAn
UicsICdJJywgJ0YnLCAnRicsCkBAIC0yMTYsMTIgKzIzNSwxMiBAQCBURVNUKFdhdkhlYWRlclRl
c3QsIFJlYWRXYXZIZWFkZXJXaXRoRXJyb3JzKSB7CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBv
bgogICAgIH07CiAgICAgUmVhZGFibGVXYXZCdWZmZXIgcihrTm9uWmVyb0V4dGVuc2lvbkZpZWxk
LCBzaXplb2Yoa05vblplcm9FeHRlbnNpb25GaWVsZCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvKmNoZWNrX3JlYWRfc2l6ZT0qL2Zh
bHNlKTsKICAgICBFWFBFQ1RfRkFMU0UoUmVhZFdhdkhlYWRlcigmciwgJm51bV9jaGFubmVscywg
JnNhbXBsZV9yYXRlLCAmZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZi
eXRlc19wZXJfc2FtcGxlLCAmbnVtX3NhbXBsZXMpKTsKICAgfQogICB7Ci0gICAgc3RhdGljIGNv
bnN0IHVpbnQ4X3Qga01pc3NpbmdEYXRhQ2h1bmtbXSA9IHsKKyAgICBjb25zdGV4cHIgdWludDhf
dCBrTWlzc2luZ0RhdGFDaHVua1tdID0gewogICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAg
ICAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGluZSBjb21tZW50
cy4KICAgICAgICdSJywgJ0knLCAnRicsICdGJywKQEAgLTIzNywxMiArMjU2LDEzIEBAIFRFU1Qo
V2F2SGVhZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhFcnJvcnMpIHsKICAgICAgIDgsIDAsICAv
LyBiaXRzIHBlciBzYW1wbGU6IDEgKiA4CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogICAg
IH07Ci0gICAgUmVhZGFibGVXYXZCdWZmZXIgcihrTWlzc2luZ0RhdGFDaHVuaywgc2l6ZW9mKGtN
aXNzaW5nRGF0YUNodW5rKSk7CisgICAgUmVhZGFibGVXYXZCdWZmZXIgcihrTWlzc2luZ0RhdGFD
aHVuaywgc2l6ZW9mKGtNaXNzaW5nRGF0YUNodW5rKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8qY2hlY2tfcmVhZF9zaXplPSovdHJ1ZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFJlYWRXYXZIZWFk
ZXIoJnIsICZudW1fY2hhbm5lbHMsICZzYW1wbGVfcmF0ZSwgJmZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmYnl0ZXNfcGVyX3NhbXBsZSwgJm51bV9zYW1wbGVzKSk7CiAg
IH0KICAgewotICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGtNaXNzaW5nRm10QW5kRGF0YUNodW5r
c1tdID0geworICAgIGNvbnN0ZXhwciB1aW50OF90IGtNaXNzaW5nRm10QW5kRGF0YUNodW5rc1td
ID0gewogICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgICAgIC8vIGNsYW5nIGZvcm1h
dHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGluZSBjb21tZW50cy4KICAgICAgICdSJywgJ0knLCAn
RicsICdGJywKQEAgLTI1MSw3ICsyNzEsOCBAQCBURVNUKFdhdkhlYWRlclRlc3QsIFJlYWRXYXZI
ZWFkZXJXaXRoRXJyb3JzKSB7CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogICAgIH07CiAg
ICAgUmVhZGFibGVXYXZCdWZmZXIgcihrTWlzc2luZ0ZtdEFuZERhdGFDaHVua3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzaXplb2Yoa01pc3NpbmdGbXRBbmREYXRhQ2h1bmtzKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa01pc3NpbmdGbXRBbmREYXRhQ2h1bmtzKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qY2hlY2tfcmVhZF9zaXplPSovdHJ1ZSk7CiAgICAgRVhQ
RUNUX0ZBTFNFKFJlYWRXYXZIZWFkZXIoJnIsICZudW1fY2hhbm5lbHMsICZzYW1wbGVfcmF0ZSwg
JmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNfcGVyX3NhbXBs
ZSwgJm51bV9zYW1wbGVzKSk7CiAgIH0KQEAgLTI1OSwxMSArMjgwLDExIEBAIFRFU1QoV2F2SGVh
ZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhFcnJvcnMpIHsKIAogLy8gVHJ5IHdyaXRpbmcgYW5k
IHJlYWRpbmcgYSB2YWxpZCBXQVYgaGVhZGVyIGFuZCBtYWtlIHN1cmUgaXQgbG9va3MgT0suCiBU
RVNUKFdhdkhlYWRlclRlc3QsIFdyaXRlQW5kUmVhZFdhdkhlYWRlcikgewotICBzdGF0aWMgY29u
c3QgaW50IGtTaXplID0gNCArIGtXYXZIZWFkZXJTaXplICsgNDsKKyAgY29uc3RleHByIGludCBr
U2l6ZSA9IDQgKyBrV2F2SGVhZGVyU2l6ZSArIDQ7CiAgIHVpbnQ4X3QgYnVmW2tTaXplXTsKICAg
bWVtc2V0KGJ1ZiwgMHhhNCwgc2l6ZW9mKGJ1ZikpOwogICBXcml0ZVdhdkhlYWRlcihidWYgKyA0
LCAxNywgMTIzNDUsIGtXYXZGb3JtYXRBTGF3LCAxLCAxMjM0NTc2ODkpOwotICBzdGF0aWMgY29u
c3QgdWludDhfdCBrRXhwZWN0ZWRCdWZbXSA9IHsKKyAgY29uc3RleHByIHVpbnQ4X3Qga0V4cGVj
dGVkQnVmW10gPSB7CiAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgICAvLyBjbGFuZyBm
b3JtYXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxpbmUgY29tbWVudHMuCiAgICAgMHhhNCwgMHhh
NCwgMHhhNCwgMHhhNCwgIC8vIHVudG91Y2hlZCBieXRlcyBiZWZvcmUgaGVhZGVyCkBAIC0yOTEs
NyArMzEyLDggQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBXcml0ZUFuZFJlYWRXYXZIZWFkZXIpIHsK
ICAgV2F2Rm9ybWF0IGZvcm1hdCA9IGtXYXZGb3JtYXRQY207CiAgIHNpemVfdCBieXRlc19wZXJf
c2FtcGxlID0gMDsKICAgc2l6ZV90IG51bV9zYW1wbGVzID0gMDsKLSAgUmVhZGFibGVXYXZCdWZm
ZXIgcihidWYgKyA0LCBzaXplb2YoYnVmKSAtIDgpOworICBSZWFkYWJsZVdhdkJ1ZmZlciByKGJ1
ZiArIDQsIHNpemVvZihidWYpIC0gOCwKKyAgICAgICAgICAgICAgICAgICAgICAvKmNoZWNrX3Jl
YWRfc2l6ZT0qL3RydWUpOwogICBFWFBFQ1RfVFJVRShSZWFkV2F2SGVhZGVyKCZyLCAmbnVtX2No
YW5uZWxzLCAmc2FtcGxlX3JhdGUsICZmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmJ5dGVzX3Blcl9zYW1wbGUsICZudW1fc2FtcGxlcykpOwogICBFWFBFQ1RfRVEoMTd1LCBu
dW1fY2hhbm5lbHMpOwpAQCAtMzAzLDI0ICszMjUsNjcgQEAgVEVTVChXYXZIZWFkZXJUZXN0LCBX
cml0ZUFuZFJlYWRXYXZIZWFkZXIpIHsKIAogLy8gVHJ5IHJlYWRpbmcgYW4gYXR5cGljYWwgYnV0
IHZhbGlkIFdBViBoZWFkZXIgYW5kIG1ha2Ugc3VyZSBpdCdzIHBhcnNlZCBPSy4KIFRFU1QoV2F2
SGVhZGVyVGVzdCwgUmVhZEF0eXBpY2FsV2F2SGVhZGVyKSB7Ci0gIHN0YXRpYyBjb25zdCB1aW50
OF90IGtCdWZbXSA9IHsKKyAgY29uc3RleHByIHVpbnQ4X3Qga0J1ZltdID0gewogICAgICAgLy8g
Y2xhbmctZm9ybWF0IG9mZgogICAgICAgLy8gY2xhbmcgZm9ybWF0dGluZyBkb2Vzbid0IHJlc3Bl
Y3QgaW5saW5lIGNvbW1lbnRzLgogICAgICdSJywgJ0knLCAnRicsICdGJywKLSAgICAweDNkLCAw
eGQxLCAweDViLCAweDA3LCAgLy8gc2l6ZSBvZiB3aG9sZSBmaWxlIC0gOCArIGFuIGV4dHJhIDEy
OCBieXRlcyBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAibWV0YWRhdGEiOiAx
MjM0NTc2ODkgKyA0NCAtIDggKyAxMjguIChhdHlwaWNhbCkKKyAgICAweGJmLCAweGQwLCAweDVi
LCAweDA3LCAgLy8gU2l6ZSBvZiB3aG9sZSBmaWxlIC0gOCArIGV4dHJhIDIgYnl0ZXMgb2YgemVy
bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleHRlbnNpb246IDEyMzQ1NzY4OSAr
IDQ0IC0gOCArIDIgKGF0eXBpY2FsKS4KICAgICAnVycsICdBJywgJ1YnLCAnRScsCiAgICAgJ2Yn
LCAnbScsICd0JywgJyAnLAotICAgIDE4LCAwLCAwLCAwLCAgLy8gc2l6ZSBvZiBmbXQgYmxvY2sg
KHdpdGggYW4gYXR5cGljYWwgZXh0ZW5zaW9uIHNpemUgZmllbGQpCi0gICAgNiwgMCwgIC8vIGZv
cm1hdDogQS1sYXcgKDYpCi0gICAgMTcsIDAsICAvLyBjaGFubmVsczogMTcKLSAgICAweDM5LCAw
eDMwLCAwLCAwLCAgLy8gc2FtcGxlIHJhdGU6IDEyMzQ1Ci0gICAgMHhjOSwgMHgzMywgMHgwMywg
MCwgIC8vIGJ5dGUgcmF0ZTogMSAqIDE3ICogMTIzNDUKLSAgICAxNywgMCwgIC8vIGJsb2NrIGFs
aWduOiBOdW1DaGFubmVscyAqIEJ5dGVzUGVyU2FtcGxlCi0gICAgOCwgMCwgIC8vIGJpdHMgcGVy
IHNhbXBsZTogMSAqIDgKLSAgICAwLCAwLCAgLy8gemVybyBleHRlbnNpb24gc2l6ZSBmaWVsZCAo
YXR5cGljYWwpCisgICAgMTgsIDAsIDAsIDAsICAgICAgICAgICAgIC8vIFNpemUgb2YgZm10IGJs
b2NrICh3aXRoIGFuIGF0eXBpY2FsIGV4dGVuc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBzaXplIGZpZWxkKS4KKyAgICA2LCAwLCAgICAgICAgICAgICAgICAgICAgLy8gRm9y
bWF0OiBBLWxhdyAoNikuCisgICAgMTcsIDAsICAgICAgICAgICAgICAgICAgIC8vIENoYW5uZWxz
OiAxNy4KKyAgICAweDM5LCAweDMwLCAwLCAwLCAgICAgICAgLy8gU2FtcGxlIHJhdGU6IDEyMzQ1
LgorICAgIDB4YzksIDB4MzMsIDB4MDMsIDAsICAgICAvLyBCeXRlIHJhdGU6IDEgKiAxNyAqIDEy
MzQ1LgorICAgIDE3LCAwLCAgICAgICAgICAgICAgICAgICAvLyBCbG9jayBhbGlnbjogTnVtQ2hh
bm5lbHMgKiBCeXRlc1BlclNhbXBsZS4KKyAgICA4LCAwLCAgICAgICAgICAgICAgICAgICAgLy8g
Qml0cyBwZXIgc2FtcGxlOiAxICogOC4KKyAgICAwLCAwLCAgICAgICAgICAgICAgICAgICAgLy8g
WmVybyBleHRlbnNpb24gc2l6ZSBmaWVsZCAoYXR5cGljYWwpLgogICAgICdkJywgJ2EnLCAndCcs
ICdhJywKLSAgICAweDk5LCAweGQwLCAweDViLCAweDA3LCAgLy8gc2l6ZSBvZiBwYXlsb2FkOiAx
MjM0NTc2ODkKKyAgICAweDk5LCAweGQwLCAweDViLCAweDA3LCAgLy8gU2l6ZSBvZiBwYXlsb2Fk
OiAxMjM0NTc2ODkuCisgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KKyAgfTsKKworICBzaXplX3Qg
bnVtX2NoYW5uZWxzID0gMDsKKyAgaW50IHNhbXBsZV9yYXRlID0gMDsKKyAgV2F2Rm9ybWF0IGZv
cm1hdCA9IGtXYXZGb3JtYXRQY207CisgIHNpemVfdCBieXRlc19wZXJfc2FtcGxlID0gMDsKKyAg
c2l6ZV90IG51bV9zYW1wbGVzID0gMDsKKyAgUmVhZGFibGVXYXZCdWZmZXIgcihrQnVmLCBzaXpl
b2Yoa0J1ZiksIC8qY2hlY2tfcmVhZF9zaXplPSovdHJ1ZSk7CisgIEVYUEVDVF9UUlVFKFJlYWRX
YXZIZWFkZXIoJnIsICZudW1fY2hhbm5lbHMsICZzYW1wbGVfcmF0ZSwgJmZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNfcGVyX3NhbXBsZSwgJm51bV9zYW1wbGVzKSk7
CisgIEVYUEVDVF9FUSgxN3UsIG51bV9jaGFubmVscyk7CisgIEVYUEVDVF9FUSgxMjM0NSwgc2Ft
cGxlX3JhdGUpOworICBFWFBFQ1RfRVEoa1dhdkZvcm1hdEFMYXcsIGZvcm1hdCk7CisgIEVYUEVD
VF9FUSgxdSwgYnl0ZXNfcGVyX3NhbXBsZSk7CisgIEVYUEVDVF9FUSgxMjM0NTc2ODl1LCBudW1f
c2FtcGxlcyk7Cit9CisKKy8vIFRyeSByZWFkaW5nIGEgdmFsaWQgV0FWIGhlYWRlciB3aGljaCBj
b250YWlucyBhbiBvcHRpb25hbCBjaHVuayBhbmQgbWFrZSBzdXJlCisvLyBpdCdzIHBhcnNlZCBP
Sy4KK1RFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZFdhdkhlYWRlcldpdGhPcHRpb25hbENodW5rKSB7
CisgIGNvbnN0ZXhwciB1aW50OF90IGtCdWZbXSA9IHsKKyAgICAgIC8vIGNsYW5nLWZvcm1hdCBv
ZmYKKyAgICAgIC8vIGNsYW5nIGZvcm1hdHRpbmcgZG9lc24ndCByZXNwZWN0IGlubGluZSBjb21t
ZW50cy4KKyAgICAnUicsICdJJywgJ0YnLCAnRicsCisgICAgMHhjZCwgMHhkMCwgMHg1YiwgMHgw
NywgIC8vIFNpemUgb2Ygd2hvbGUgZmlsZSAtIDggKyBhbiBleHRyYSAxNiBieXRlcyBvZgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAibWV0YWRhdGEiICg4IGJ5dGVzIGhlYWRlciwg
MTYgYnl0ZXMgcGF5bG9hZCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEyMzQ1
NzY4OSArIDQ0IC0gOCArIDE2LgorICAgICdXJywgJ0EnLCAnVicsICdFJywKKyAgICAnZicsICdt
JywgJ3QnLCAnICcsCisgICAgMTYsIDAsIDAsIDAsICAgICAgICAgICAgIC8vIFNpemUgb2YgZm10
IGJsb2NrLgorICAgIDYsIDAsICAgICAgICAgICAgICAgICAgICAvLyBGb3JtYXQ6IEEtbGF3ICg2
KS4KKyAgICAxNywgMCwgICAgICAgICAgICAgICAgICAgLy8gQ2hhbm5lbHM6IDE3LgorICAgIDB4
MzksIDB4MzAsIDAsIDAsICAgICAgICAvLyBTYW1wbGUgcmF0ZTogMTIzNDUuCisgICAgMHhjOSwg
MHgzMywgMHgwMywgMCwgICAgIC8vIEJ5dGUgcmF0ZTogMSAqIDE3ICogMTIzNDUuCisgICAgMTcs
IDAsICAgICAgICAgICAgICAgICAgIC8vIEJsb2NrIGFsaWduOiBOdW1DaGFubmVscyAqIEJ5dGVz
UGVyU2FtcGxlLgorICAgIDgsIDAsICAgICAgICAgICAgICAgICAgICAvLyBCaXRzIHBlciBzYW1w
bGU6IDEgKiA4LgorICAgICdMJywgJ0knLCAnUycsICdUJywgICAgICAvLyBNZXRhZGF0YSBjaHVu
ayBJRC4KKyAgICAxNiwgMCwgMCwgMCwgICAgICAgICAgICAgLy8gTWV0YWRhdGEgY2h1bmsgcGF5
bG9hZCBzaXplLgorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsICAvLyBNZXRhZGF0YSAoMTYgYnl0ZXMpLgorICAgICdkJywgJ2EnLCAndCcsICdhJywK
KyAgICAweDk5LCAweGQwLCAweDViLCAweDA3LCAgLy8gU2l6ZSBvZiBwYXlsb2FkOiAxMjM0NTc2
ODkuCiAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KICAgfTsKIApAQCAtMzI5LDcgKzM5NCw3IEBA
IFRFU1QoV2F2SGVhZGVyVGVzdCwgUmVhZEF0eXBpY2FsV2F2SGVhZGVyKSB7CiAgIFdhdkZvcm1h
dCBmb3JtYXQgPSBrV2F2Rm9ybWF0UGNtOwogICBzaXplX3QgYnl0ZXNfcGVyX3NhbXBsZSA9IDA7
CiAgIHNpemVfdCBudW1fc2FtcGxlcyA9IDA7Ci0gIFJlYWRhYmxlV2F2QnVmZmVyIHIoa0J1Ziwg
c2l6ZW9mKGtCdWYpKTsKKyAgUmVhZGFibGVXYXZCdWZmZXIgcihrQnVmLCBzaXplb2Yoa0J1Ziks
IC8qY2hlY2tfcmVhZF9zaXplPSovdHJ1ZSk7CiAgIEVYUEVDVF9UUlVFKFJlYWRXYXZIZWFkZXIo
JnIsICZudW1fY2hhbm5lbHMsICZzYW1wbGVfcmF0ZSwgJmZvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmYnl0ZXNfcGVyX3NhbXBsZSwgJm51bV9zYW1wbGVzKSk7CiAgIEVYUEVD
VF9FUSgxN3UsIG51bV9jaGFubmVscyk7CkBAIC0zMzksNCArNDA0LDM3IEBAIFRFU1QoV2F2SGVh
ZGVyVGVzdCwgUmVhZEF0eXBpY2FsV2F2SGVhZGVyKSB7CiAgIEVYUEVDVF9FUSgxMjM0NTc2ODl1
LCBudW1fc2FtcGxlcyk7CiB9CiAKKy8vIFRyeSByZWFkaW5nIGFuIGludmFsaWQgV0FWIGhlYWRl
ciB3aGljaCBoYXMgdGhlIHRoZSBkYXRhIGNodW5rIGJlZm9yZSB0aGUKKy8vIGZvcm1hdCBvbmUg
YW5kIG1ha2Ugc3VyZSBpdCdzIG5vdCBwYXJzZWQuCitURVNUKFdhdkhlYWRlclRlc3QsIFJlYWRX
YXZIZWFkZXJXaXRoRGF0YUJlZm9yZUZvcm1hdCkgeworICBjb25zdGV4cHIgdWludDhfdCBrQnVm
W10gPSB7CisgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgICAvLyBjbGFuZyBmb3JtYXR0
aW5nIGRvZXNuJ3QgcmVzcGVjdCBpbmxpbmUgY29tbWVudHMuCisgICAgJ1InLCAnSScsICdGJywg
J0YnLAorICAgIDUyLCAgMCwgICAwLCAgIDAsICAgIC8vIFNpemUgb2Ygd2hvbGUgZmlsZSAtIDg6
IDE2ICsgNDQgLSA4LgorICAgICdXJywgJ0EnLCAnVicsICdFJywKKyAgICAnZCcsICdhJywgJ3Qn
LCAnYScsCisgICAgMTYsIDAsIDAsIDAsICAgICAgICAgLy8gRGF0YSBjaHVuayBwYXlsb2FkIHNp
emUuCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
IC8vIERhdGEgMTYgYnl0ZXMuCisgICAgJ2YnLCAnbScsICd0JywgJyAnLAorICAgIDE2LCAgMCwg
ICAwLCAgIDAsICAgIC8vIFNpemUgb2YgZm10IGJsb2NrLgorICAgIDYsICAgMCwgICAgICAgICAg
ICAgIC8vIEZvcm1hdDogQS1sYXcgKDYpLgorICAgIDEsICAgMCwgICAgICAgICAgICAgIC8vIENo
YW5uZWxzOiAxLgorICAgIDYwLCAgMCwgICAwLCAgIDAsICAgIC8vIFNhbXBsZSByYXRlOiA2MC4K
KyAgICA2MCwgIDAsICAgMCwgICAwLCAgICAvLyBCeXRlIHJhdGU6IDEgKiAxICogNjAuCisgICAg
MSwgICAwLCAgICAgICAgICAgICAgLy8gQmxvY2sgYWxpZ246IE51bUNoYW5uZWxzICogQnl0ZXNQ
ZXJTYW1wbGUuCisgICAgOCwgICAwLCAgICAgICAgICAgICAgLy8gQml0cyBwZXIgc2FtcGxlOiAx
ICogOC4KKyAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorICB9OworCisgIHNpemVfdCBudW1fY2hh
bm5lbHMgPSAwOworICBpbnQgc2FtcGxlX3JhdGUgPSAwOworICBXYXZGb3JtYXQgZm9ybWF0ID0g
a1dhdkZvcm1hdFBjbTsKKyAgc2l6ZV90IGJ5dGVzX3Blcl9zYW1wbGUgPSAwOworICBzaXplX3Qg
bnVtX3NhbXBsZXMgPSAwOworICBSZWFkYWJsZVdhdkJ1ZmZlciByKGtCdWYsIHNpemVvZihrQnVm
KSwgLypjaGVja19yZWFkX3NpemU9Ki9mYWxzZSk7CisgIEVYUEVDVF9GQUxTRShSZWFkV2F2SGVh
ZGVyKCZyLCAmbnVtX2NoYW5uZWxzLCAmc2FtcGxlX3JhdGUsICZmb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZieXRlc19wZXJfc2FtcGxlLCAmbnVtX3NhbXBsZXMpKTsKK30K
KwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3R5cGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdHlwZXMuaAppbmRleCA5OWM0MDY0YTNj
ZjY2MGQxMzI2YWQ1OTBlNGY2OGZhMzQ0NDNlZDBhLi44NDhiODk5YTBkZDFmNDg5YzUyNmQwYjI1
NDUxYTU1MDRjMmIyYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9jb21tb25fdHlwZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdHlwZXMuaApAQCAtMTEsMTYgKzExLDE1IEBACiAj
aWZuZGVmIENPTU1PTl9UWVBFU19IXwogI2RlZmluZSBDT01NT05fVFlQRVNfSF8KIAotI2luY2x1
ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHN0cmluZz4KLSNp
bmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8c3RkZGVmLmg+ICAvLyBGb3Igc2l6ZV90CisjaW5j
bHVkZSA8Y3N0ZGludD4KIAotI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL21hdGNoLmgiCiAvLyBUT0RPKHNwcmFuZyk6IFJlbW92ZSB0aGlzIGluY2x1
ZGUgd2hlbiBhbGwgdXNhZ2UgaW5jbHVkZXMgaXQgZGlyZWN0bHkuCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgorLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcv
NzY2MCk6IERlbGV0ZSBpbmNsdWRlIG9uY2UgZG93bnN0cmVhbSBjb2RlIGlzIHVwZGF0ZWQuCisj
aW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvZGVjX3R5cGUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgogCiAjaWYgZGVm
aW5lZChfTVNDX1ZFUikKIC8vIERpc2FibGUgIm5ldyBiZWhhdmlvcjogZWxlbWVudHMgb2YgYXJy
YXkgd2lsbCBiZSBkZWZhdWx0IGluaXRpYWxpemVkIgpAQCAtMzAsMTYgKzI5LDYgQEAKIAogI2Rl
ZmluZSBSVFBfUEFZTE9BRF9OQU1FX1NJWkUgMzJ1CiAKLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4p
IHx8IGRlZmluZWQoV0lOMzIpCi0vLyBDb21wYXJlcyB0d28gc3RyaW5ncyB3aXRob3V0IHJlZ2Fy
ZCB0byBjYXNlLgotI2RlZmluZSBTVFJfQ0FTRV9DTVAoczEsIHMyKSA6Ol9zdHJpY21wKHMxLCBz
MikKLS8vIENvbXBhcmVzIGNoYXJhY3RlcnMgb2YgdHdvIHN0cmluZ3Mgd2l0aG91dCByZWdhcmQg
dG8gY2FzZS4KLSNkZWZpbmUgU1RSX05DQVNFX0NNUChzMSwgczIsIG4pIDo6X3N0cm5pY21wKHMx
LCBzMiwgbikKLSNlbHNlCi0jZGVmaW5lIFNUUl9DQVNFX0NNUChzMSwgczIpIDo6c3RyY2FzZWNt
cChzMSwgczIpCi0jZGVmaW5lIFNUUl9OQ0FTRV9DTVAoczEsIHMyLCBuKSA6OnN0cm5jYXNlY21w
KHMxLCBzMiwgbikKLSNlbmRpZgotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogZW51bSBGcmFtZVR5
cGUgewpAQCAtNTAsMjkgKzM5LDYgQEAgZW51bSBGcmFtZVR5cGUgewogICBrVmlkZW9GcmFtZURl
bHRhID0gNCwKIH07CiAKLS8vIFN0YXRpc3RpY3MgZm9yIGFuIFJUQ1AgY2hhbm5lbAotc3RydWN0
IFJ0Y3BTdGF0aXN0aWNzIHsKLSAgUnRjcFN0YXRpc3RpY3MoKQotICAgICAgOiBmcmFjdGlvbl9s
b3N0KDApLAotICAgICAgICBwYWNrZXRzX2xvc3QoMCksCi0gICAgICAgIGV4dGVuZGVkX2hpZ2hl
c3Rfc2VxdWVuY2VfbnVtYmVyKDApLAotICAgICAgICBqaXR0ZXIoMCkge30KLQotICB1aW50OF90
IGZyYWN0aW9uX2xvc3Q7Ci0gIGludDMyX3QgcGFja2V0c19sb3N0OyAgLy8gRGVmaW5lZCBhcyBh
IDI0IGJpdCBzaWduZWQgaW50ZWdlciBpbiBSVENQCi0gIHVpbnQzMl90IGV4dGVuZGVkX2hpZ2hl
c3Rfc2VxdWVuY2VfbnVtYmVyOwotICB1aW50MzJfdCBqaXR0ZXI7Ci19OwotCi1jbGFzcyBSdGNw
U3RhdGlzdGljc0NhbGxiYWNrIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgflJ0Y3BTdGF0aXN0aWNz
Q2FsbGJhY2soKSB7fQotCi0gIHZpcnR1YWwgdm9pZCBTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBS
dGNwU3RhdGlzdGljcyYgc3RhdGlzdGljcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IHNzcmMpID0gMDsKLSAgdmlydHVhbCB2b2lkIENOYW1lQ2hhbmdlZChjb25z
dCBjaGFyKiBjbmFtZSwgdWludDMyX3Qgc3NyYykgPSAwOwotfTsKLQogLy8gU3RhdGlzdGljcyBm
b3IgUlRDUCBwYWNrZXQgdHlwZXMuCiBzdHJ1Y3QgUnRjcFBhY2tldFR5cGVDb3VudGVyIHsKICAg
UnRjcFBhY2tldFR5cGVDb3VudGVyKCkKQEAgLTIwNyw3ICsxNzMsNyBAQCBzdHJ1Y3QgQ29kZWNJ
bnN0IHsKIAogICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZWNJbnN0JiBvdGhlcikgY29uc3Qg
ewogICAgIHJldHVybiBwbHR5cGUgPT0gb3RoZXIucGx0eXBlICYmCi0gICAgICAgICAgIChTVFJf
Q0FTRV9DTVAocGxuYW1lLCBvdGhlci5wbG5hbWUpID09IDApICYmCisgICAgICAgICAgIGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCBvdGhlci5wbG5hbWUpICYmCiAgICAgICAgICAgIHBs
ZnJlcSA9PSBvdGhlci5wbGZyZXEgJiYgcGFjc2l6ZSA9PSBvdGhlci5wYWNzaXplICYmCiAgICAg
ICAgICAgIGNoYW5uZWxzID09IG90aGVyLmNoYW5uZWxzICYmIHJhdGUgPT0gb3RoZXIucmF0ZTsK
ICAgfQpAQCAtMjE4LDgwICsxODQsNiBAQCBzdHJ1Y3QgQ29kZWNJbnN0IHsKIC8vIFJUUAogZW51
bSB7IGtSdHBDc3JjU2l6ZSA9IDE1IH07ICAvLyBSRkMgMzU1MCBwYWdlIDEzCiAKLS8vIE5FVEVR
IHN0YXRpc3RpY3MuCi1zdHJ1Y3QgTmV0d29ya1N0YXRpc3RpY3MgewotICAvLyBjdXJyZW50IGpp
dHRlciBidWZmZXIgc2l6ZSBpbiBtcwotICB1aW50MTZfdCBjdXJyZW50QnVmZmVyU2l6ZTsKLSAg
Ly8gcHJlZmVycmVkIChvcHRpbWFsKSBidWZmZXIgc2l6ZSBpbiBtcwotICB1aW50MTZfdCBwcmVm
ZXJyZWRCdWZmZXJTaXplOwotICAvLyBhZGRpbmcgZXh0cmEgZGVsYXkgZHVlIHRvICJwZWFreSBq
aXR0ZXIiCi0gIGJvb2wgaml0dGVyUGVha3NGb3VuZDsKLSAgLy8gU3RhdHMgYmVsb3cgY29ycmVz
cG9uZCB0byBzaW1pbGFybHktbmFtZWQgZmllbGRzIGluIHRoZSBXZWJSVEMgc3RhdHMgc3BlYy4K
LSAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jZG9tLXJ0Y21lZGlhc3Ry
ZWFtdHJhY2tzdGF0cwotICB1aW50NjRfdCB0b3RhbFNhbXBsZXNSZWNlaXZlZDsKLSAgdWludDY0
X3QgY29uY2VhbGVkU2FtcGxlczsKLSAgdWludDY0X3QgY29uY2VhbG1lbnRFdmVudHM7Ci0gIHVp
bnQ2NF90IGppdHRlckJ1ZmZlckRlbGF5TXM7Ci0gIC8vIFN0YXRzIGJlbG93IERPIE5PVCBjb3Jy
ZXNwb25kIGRpcmVjdGx5IHRvIGFueXRoaW5nIGluIHRoZSBXZWJSVEMgc3RhdHMKLSAgLy8gTG9z
cyByYXRlIChuZXR3b3JrICsgbGF0ZSk7IGZyYWN0aW9uIGJldHdlZW4gMCBhbmQgMSwgc2NhbGVk
IHRvIFExNC4KLSAgdWludDE2X3QgY3VycmVudFBhY2tldExvc3NSYXRlOwotICAvLyBMYXRlIGxv
c3MgcmF0ZTsgZnJhY3Rpb24gYmV0d2VlbiAwIGFuZCAxLCBzY2FsZWQgdG8gUTE0LgotICB1bmlv
biB7Ci0gICAgUlRDX0RFUFJFQ0FURUQgdWludDE2X3QgY3VycmVudERpc2NhcmRSYXRlOwotICB9
OwotICAvLyBmcmFjdGlvbiAob2Ygb3JpZ2luYWwgc3RyZWFtKSBvZiBzeW50aGVzaXplZCBhdWRp
byBpbnNlcnRlZCB0aHJvdWdoCi0gIC8vIGV4cGFuc2lvbiAoaW4gUTE0KQotICB1aW50MTZfdCBj
dXJyZW50RXhwYW5kUmF0ZTsKLSAgLy8gZnJhY3Rpb24gKG9mIG9yaWdpbmFsIHN0cmVhbSkgb2Yg
c3ludGhlc2l6ZWQgc3BlZWNoIGluc2VydGVkIHRocm91Z2gKLSAgLy8gZXhwYW5zaW9uIChpbiBR
MTQpCi0gIHVpbnQxNl90IGN1cnJlbnRTcGVlY2hFeHBhbmRSYXRlOwotICAvLyBmcmFjdGlvbiBv
ZiBzeW50aGVzaXplZCBzcGVlY2ggaW5zZXJ0ZWQgdGhyb3VnaCBwcmUtZW1wdGl2ZSBleHBhbnNp
b24KLSAgLy8gKGluIFExNCkKLSAgdWludDE2X3QgY3VycmVudFByZWVtcHRpdmVSYXRlOwotICAv
LyBmcmFjdGlvbiBvZiBkYXRhIHJlbW92ZWQgdGhyb3VnaCBhY2NlbGVyYXRpb24gKGluIFExNCkK
LSAgdWludDE2X3QgY3VycmVudEFjY2VsZXJhdGVSYXRlOwotICAvLyBmcmFjdGlvbiBvZiBkYXRh
IGNvbWluZyBmcm9tIHNlY29uZGFyeSBkZWNvZGluZyAoaW4gUTE0KQotICB1aW50MTZfdCBjdXJy
ZW50U2Vjb25kYXJ5RGVjb2RlZFJhdGU7Ci0gIC8vIEZyYWN0aW9uIG9mIHNlY29uZGFyeSBkYXRh
LCBpbmNsdWRpbmcgRkVDIGFuZCBSRUQsIHRoYXQgaXMgZGlzY2FyZGVkIChpbgotICAvLyBRMTQp
LiBEaXNjYXJkaW5nIG9mIHNlY29uZGFyeSBkYXRhIGNhbiBiZSBjYXVzZWQgYnkgdGhlIHJlY2Vw
dGlvbiBvZiB0aGUKLSAgLy8gcHJpbWFyeSBkYXRhLCBvYnNvbGV0aW5nIHRoZSBzZWNvbmRhcnkg
ZGF0YS4gSXQgY2FuIGFsc28gYmUgY2F1c2VkIGJ5IGVhcmx5Ci0gIC8vIG9yIGxhdGUgYXJyaXZh
bCBvZiBzZWNvbmRhcnkgZGF0YS4KLSAgdWludDE2X3QgY3VycmVudFNlY29uZGFyeURpc2NhcmRl
ZFJhdGU7Ci0gIC8vIGNsb2NrLWRyaWZ0IGluIHBhcnRzLXBlci1taWxsaW9uIChuZWdhdGl2ZSBv
ciBwb3NpdGl2ZSkKLSAgaW50MzJfdCBjbG9ja0RyaWZ0UFBNOwotICAvLyBhdmVyYWdlIHBhY2tl
dCB3YWl0aW5nIHRpbWUgaW4gdGhlIGppdHRlciBidWZmZXIgKG1zKQotICBpbnQgbWVhbldhaXRp
bmdUaW1lTXM7Ci0gIC8vIG1lZGlhbiBwYWNrZXQgd2FpdGluZyB0aW1lIGluIHRoZSBqaXR0ZXIg
YnVmZmVyIChtcykKLSAgaW50IG1lZGlhbldhaXRpbmdUaW1lTXM7Ci0gIC8vIG1pbiBwYWNrZXQg
d2FpdGluZyB0aW1lIGluIHRoZSBqaXR0ZXIgYnVmZmVyIChtcykKLSAgaW50IG1pbldhaXRpbmdU
aW1lTXM7Ci0gIC8vIG1heCBwYWNrZXQgd2FpdGluZyB0aW1lIGluIHRoZSBqaXR0ZXIgYnVmZmVy
IChtcykKLSAgaW50IG1heFdhaXRpbmdUaW1lTXM7Ci0gIC8vIGFkZGVkIHNhbXBsZXMgaW4gb2Zm
IG1vZGUgZHVlIHRvIHBhY2tldCBsb3NzCi0gIHNpemVfdCBhZGRlZFNhbXBsZXM7Ci19OwotCi0v
LyBTdGF0aXN0aWNzIGZvciBjYWxscyB0byBBdWRpb0NvZGluZ01vZHVsZTo6UGxheW91dERhdGEx
ME1zKCkuCi1zdHJ1Y3QgQXVkaW9EZWNvZGluZ0NhbGxTdGF0cyB7Ci0gIEF1ZGlvRGVjb2RpbmdD
YWxsU3RhdHMoKQotICAgICAgOiBjYWxsc190b19zaWxlbmNlX2dlbmVyYXRvcigwKSwKLSAgICAg
ICAgY2FsbHNfdG9fbmV0ZXEoMCksCi0gICAgICAgIGRlY29kZWRfbm9ybWFsKDApLAotICAgICAg
ICBkZWNvZGVkX3BsYygwKSwKLSAgICAgICAgZGVjb2RlZF9jbmcoMCksCi0gICAgICAgIGRlY29k
ZWRfcGxjX2NuZygwKSwKLSAgICAgICAgZGVjb2RlZF9tdXRlZF9vdXRwdXQoMCkge30KLQotICBp
bnQgY2FsbHNfdG9fc2lsZW5jZV9nZW5lcmF0b3I7ICAvLyBOdW1iZXIgb2YgY2FsbHMgd2hlcmUg
c2lsZW5jZSBnZW5lcmF0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGFuZCBOZXRFcSB3YXMgZGlzZW5nYWdlZCBmcm9tIGRlY29kaW5nLgotICBpbnQgY2FsbHNfdG9f
bmV0ZXE7ICAgICAgICAgICAgICAvLyBOdW1iZXIgb2YgY2FsbHMgdG8gTmV0RXEuCi0gIGludCBk
ZWNvZGVkX25vcm1hbDsgIC8vIE51bWJlciBvZiBjYWxscyB3aGVyZSBhdWRpbyBSVFAgcGFja2V0
IGRlY29kZWQuCi0gIGludCBkZWNvZGVkX3BsYzsgICAgIC8vIE51bWJlciBvZiBjYWxscyByZXN1
bHRlZCBpbiBQTEMuCi0gIGludCBkZWNvZGVkX2NuZzsgIC8vIE51bWJlciBvZiBjYWxscyB3aGVy
ZSBjb21mb3J0IG5vaXNlIGdlbmVyYXRlZCBkdWUgdG8gRFRYLgotICBpbnQgZGVjb2RlZF9wbGNf
Y25nOyAgICAgICAvLyBOdW1iZXIgb2YgY2FsbHMgcmVzdWx0ZWQgd2hlcmUgUExDIGZhZGVkIHRv
IENORy4KLSAgaW50IGRlY29kZWRfbXV0ZWRfb3V0cHV0OyAgLy8gTnVtYmVyIG9mIGNhbGxzIHJl
dHVybmluZyBhIG11dGVkIHN0YXRlIG91dHB1dC4KLX07Ci0KIC8vID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gVmlk
ZW8gc3BlY2lmaWMgdHlwZXMKIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMzMwLDE4ICsyMjIsNiBAQCBlbnVt
IFByb2ZpbGUgewogCiB9ICAvLyBuYW1lc3BhY2UgSDI2NAogCi0vLyBWaWRlbyBjb2RlYyB0eXBl
cwotZW51bSBWaWRlb0NvZGVjVHlwZSB7Ci0gIC8vIFRoZXJlIGFyZSB2YXJpb3VzIG1lbXNldCgu
Li4sIDAsIC4uLikgY2FsbHMgaW4gdGhlIGNvZGUgdGhhdCByZWx5IG9uCi0gIC8vIGtWaWRlb0Nv
ZGVjR2VuZXJpYyBiZWluZyB6ZXJvLgotICBrVmlkZW9Db2RlY0dlbmVyaWMgPSAwLAotICBrVmlk
ZW9Db2RlY1ZQOCwKLSAga1ZpZGVvQ29kZWNWUDksCi0gIGtWaWRlb0NvZGVjSDI2NCwKLSAga1Zp
ZGVvQ29kZWNJNDIwLAotICBrVmlkZW9Db2RlY011bHRpcGxleCwKLX07Ci0KIHN0cnVjdCBTcGF0
aWFsTGF5ZXIgewogICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3BhdGlhbExheWVyJiBvdGhlcikg
Y29uc3Q7CiAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTcGF0aWFsTGF5ZXImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQpAQCAtMzYxLDkgKzI0MSw2IEBAIHN0cnVj
dCBTcGF0aWFsTGF5ZXIgewogLy8gc2V0dGluZ3Mgc3VjaCBhcyByZXNvbHV0aW9uLgogdHlwZWRl
ZiBTcGF0aWFsTGF5ZXIgU2ltdWxjYXN0U3RyZWFtOwogCi0vLyBUT0RPKHNwcmFuZyk6IFJlbW92
ZSB0aGlzIHdoZW4gZG93bnN0cmVhbSBwcm9qZWN0cyBoYXZlIGJlZW4gdXBkYXRlZC4KLXVzaW5n
IEJpdHJhdGVBbGxvY2F0aW9uID0gVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsKLQogLy8gQmFuZHdp
ZHRoIG92ZXItdXNlIGRldGVjdG9yIG9wdGlvbnMuICBUaGVzZSBhcmUgdXNlZCB0byBkcml2ZQog
Ly8gZXhwZXJpbWVudGF0aW9uIHdpdGggYmFuZHdpZHRoIGVzdGltYXRpb24gcGFyYW1ldGVycy4K
IC8vIFNlZSBtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2RldGVjdG9y
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl92aWRlby9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl92aWRlby9CVUlMRC5nbgppbmRleCA0Mzc4MGMxMTNkNTA3ZmI0YjY2
ODJmOWZlZjgzYmU1MzBiYWY3NTk3Li4xMjViY2ZjNTU4MzM3ZTBlMjNjNzFlODkyOWY2M2QwODhm
OWQ0Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL0JVSUxELmduCkBAIC0yNiw3ICsyNiw2IEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiY29tbW9uX3ZpZGVvIikgewogICAgICJoMjY0L3Nwc192dWlf
cmV3cml0ZXIuaCIsCiAgICAgImk0MjBfYnVmZmVyX3Bvb2wuY2MiLAogICAgICJpbmNsdWRlL2Jp
dHJhdGVfYWRqdXN0ZXIuaCIsCi0gICAgImluY2x1ZGUvZnJhbWVfY2FsbGJhY2suaCIsCiAgICAg
ImluY2x1ZGUvaTQyMF9idWZmZXJfcG9vbC5oIiwKICAgICAiaW5jbHVkZS9pbmNvbWluZ192aWRl
b19zdHJlYW0uaCIsCiAgICAgImluY2x1ZGUvdmlkZW9fZnJhbWUuaCIsCkBAIC0zNCw3ICszMyw2
IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY29tbW9uX3ZpZGVvIikgewogICAgICJpbmNvbWluZ192
aWRlb19zdHJlYW0uY2MiLAogICAgICJsaWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgiLAog
ICAgICJsaWJ5dXYvd2VicnRjX2xpYnl1di5jYyIsCi0gICAgInZpZGVvX2ZyYW1lLmNjIiwKICAg
ICAidmlkZW9fZnJhbWVfYnVmZmVyLmNjIiwKICAgICAidmlkZW9fcmVuZGVyX2ZyYW1lcy5jYyIs
CiAgICAgInZpZGVvX3JlbmRlcl9mcmFtZXMuaCIsCkBAIC00Miw2ICs0MCw3IEBAIHJ0Y19zdGF0
aWNfbGlicmFyeSgiY29tbW9uX3ZpZGVvIikgewogCiAgIGRlcHMgPSBbCiAgICAgIi4uOndlYnJ0
Y19jb21tb24iLAorICAgICIuLi9hcGkvdmlkZW86ZW5jb2RlZF9pbWFnZSIsCiAgICAgIi4uL2Fw
aS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRpb24iLAogICAgICIuLi9hcGkvdmlkZW86dmlk
ZW9fYml0cmF0ZV9hbGxvY2F0b3IiLAogICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLApA
QCAtOTYsNiArOTUsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiLi4vdGVzdDpmaWxldXRpbHMiLAog
ICAgICAgIi4uL3Rlc3Q6dGVzdF9tYWluIiwKKyAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIs
CiAgICAgICAiLi4vdGVzdDp2aWRlb190ZXN0X2NvbW1vbiIsCiAgICAgICAiLy90ZXN0aW5nL2d0
ZXN0IiwKICAgICAgICIvL3RoaXJkX3BhcnR5L2xpYnl1diIsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vYml0cmF0ZV9h
ZGp1c3Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl92aWRlby9iaXRyYXRlX2FkanVzdGVyLmNjCmluZGV4IDE2M2M0YjE5ODE0NzRiMzkyYmI4
NzA3MjA2ZjdhZDU3ODVmOTY5ZWEuLmFjMjFmMmJkMjAzODdhNjczMTcyN2I0ODAxMGViYzIwNWFl
MTJkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl92aWRlby9iaXRyYXRlX2FkanVzdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9iaXRyYXRlX2FkanVzdGVy
LmNjCkBAIC0xMyw3ICsxMyw2IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNt
YXRoPgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
bG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8v
aDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIu
Y2MKaW5kZXggMmU2M2I5ZDRhMTZlZjVlNjFhM2NmY2IxZjVlYjA0MTExYzljOTQ1OS4uZjNkMmY4
YTZiZjgwNGRlMzE0MzNjZDJkN2NiNTRhYTAwYThiNTNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9i
aXRzdHJlYW1fcGFyc2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L2gyNjRfYml0c3RyZWFtX3BhcnNlci5jYwpAQCAt
OSwxMyArOSwxMiBAQAogICovCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9iaXRz
dHJlYW1fcGFyc2VyLmgiCiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RkbGliLmg+
CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJydGNf
YmFzZS9iaXRidWZmZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLQogI2luY2x1
ZGUgImNvbW1vbl92aWRlby9oMjY0L2gyNjRfY29tbW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
Yml0YnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9iaXRzdHJlYW1fcGFyc2VyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0
cmVhbV9wYXJzZXIuaAppbmRleCBiM2ZhYzdiYjIxNTcyNmVmZjgyZmYzM2FhMWUyMzc0YWNlZWUz
MjMyLi45NjJjOWMxNmFkMmY0NmZiYWQ3ZTQ3ZDNjMjY0ZjU4NjZhMjFiYTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8v
aDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJz
ZXIuaApAQCAtMTcsMTAgKzE3LDYgQEAKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9wcHNf
cGFyc2VyLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3BhcnNlci5oIgogCi1u
YW1lc3BhY2UgcnRjIHsKLWNsYXNzIEJpdEJ1ZmZlcldyaXRlcjsKLX0KLQogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKIC8vIFN0YXRlZnVsIEgyNjQgYml0c3RyZWFtIHBhcnNlciAoZHVlIHRvIFNQUy9Q
UFMpLiBVc2VkIHRvIHBhcnNlIG91dCBRUCB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L2gyNjRfY29t
bW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uY2MKaW5kZXggNjBlZDk0ZDQwMzExNjc1ODY1ZWY4NDRj
Zjg4NDY1Njg2ZWViMGY1MS4uNWU1OGJhNjJlOTEzMDg1MzRmZGZiYmVhZjk0MjdiN2RmMDY5NmNh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uY2MK
QEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0L2gyNjRfY29t
bW9uLmgiCiAKKyNpbmNsdWRlIDxjc3RkaW50PgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVz
cGFjZSBIMjY0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L2gyNjRfY29t
bW9uLmgKaW5kZXggYTU4YTlmNTVhNTljZGRhNDYwNzkyMjJmN2EyYmE1NjgyZWM1MjM0MS4uMDI3
ODMzYjdjZDdjMjZmZThkMGY4OGM5MTBmMWRiODg5NGRkNjQ0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvaDI2
NF9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fdmlkZW8vaDI2NC9oMjY0X2NvbW1vbi5oCkBAIC0xMSw3ICsxMSw4IEBACiAjaWZu
ZGVmIENPTU1PTl9WSURFT19IMjY0X0gyNjRfQ09NTU9OX0hfCiAjZGVmaW5lIENPTU1PTl9WSURF
T19IMjY0X0gyNjRfQ09NTU9OX0hfCiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3Rk
ZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvYnVmZmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9wcHNfcGFyc2VyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQv
cHBzX3BhcnNlci5jYwppbmRleCA1YmMyOWYzNTkyNTdkMWNkZjE0ZGVhYzNiNTljZWFkYTU0NDY5
OGNkLi40NjRmNjA4MWUzMWUwYzViNjUzYjQ2N2VmOTdiMzFiOGUwOGY2ZjAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8v
aDI2NC9wcHNfcGFyc2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Bwc19wYXJzZXIuY2MKQEAgLTEwLDEyICsxMCwx
MiBAQAogCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvcHBzX3BhcnNlci5oIgogCi0jaW5j
bHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAj
aW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKICNpbmNsdWRlICJydGNf
YmFzZS9iaXRidWZmZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKICNkZWZpbmUgUkVUVVJOX0VNUFRZX09OX0ZBSUwoeCkg
XAogICBpZiAoISh4KSkgeyAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNf
cGFyc2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX3ZpZGVvL2gyNjQvc3BzX3BhcnNlci5jYwppbmRleCBiNjc5OWEzYmU0MDg0MDQ2MWFmZGEy
MGExNDBiYzJlZjliNjRlNzY0Li5jNmY2ZDQ3NDY2YjE1Y2JmMTNjZGY5ZjhjZmY5YmM1ODBkMDZm
ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfcGFyc2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Nwc19wYXJzZXIuY2MK
QEAgLTEwLDEyICsxMCwxMSBAQAogCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3Bh
cnNlci5oIgogCi0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9iaXRidWZmZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dn
aW5nLmgiCiAKIG5hbWVzcGFjZSB7CiB0eXBlZGVmIGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6U3Bz
UGFyc2VyOjpTcHNTdGF0ZT4gT3B0aW9uYWxTcHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jl
d3JpdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29t
bW9uX3ZpZGVvL2gyNjQvc3BzX3Z1aV9yZXdyaXRlci5jYwppbmRleCA3NDliNjJlNmQyMWQzMTNh
ZjA0MDc0MzZjMGRjYjA5ZDcwNTJkOWUwLi4zZWFiMTFmMTg4Y2ViYjBmZjhjODNiMTU5M2Q4YmMz
NWI1MjJkODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2NC9zcHNfdnVpX3Jld3JpdGVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Nw
c192dWlfcmV3cml0ZXIuY2MKQEAgLTExLDE4ICsxMSwxNyBAQAogCiAjaW5jbHVkZSAiY29tbW9u
X3ZpZGVvL2gyNjQvc3BzX3Z1aV9yZXdyaXRlci5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgot
I2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RkaW50
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImNvbW1vbl92aWRlby9oMjY0L2gyNjRf
Y29tbW9uLmgiCisjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3BhcnNlci5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2JpdGJ1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1l
cmljcy9zYWZlX21pbm1heC5oIgogCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9j
b21tb24uaCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9zcHNfcGFyc2VyLmgiCi0KIG5h
bWVzcGFjZSB3ZWJydGMgewogCiAvLyBUaGUgbWF4aW11bSBleHBlY3RlZCBncm93dGggZnJvbSBh
ZGRpbmcgYSBWVUkgdG8gdGhlIFNQUy4gSXQncyBhY3R1YWxseQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2gyNjQvc3Bz
X3Z1aV9yZXdyaXRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvY29tbW9uX3ZpZGVvL2gyNjQvc3BzX3Z1aV9yZXdyaXRlci5oCmluZGV4IDIzMzA1MWQyZDYx
ZGZiNmY4NTc5OWMzMGJhZGNkNjliODZkOWQwNjguLjIwZDFkZDBjZGJmZWY2ODgwMDdiOWMyMzYy
ODQ2ZmNhZTg3MTRkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9oMjY0L3Nwc192dWlfcmV3cml0ZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaDI2
NC9zcHNfdnVpX3Jld3JpdGVyLmgKQEAgLTEyLDE0ICsxMiwxMyBAQAogI2lmbmRlZiBDT01NT05f
VklERU9fSDI2NF9TUFNfVlVJX1JFV1JJVEVSX0hfCiAjZGVmaW5lIENPTU1PTl9WSURFT19IMjY0
X1NQU19WVUlfUkVXUklURVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0
ZGludC5oPgorCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImNv
bW1vbl92aWRlby9oMjY0L3Nwc19wYXJzZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIu
aCIKIAotbmFtZXNwYWNlIHJ0YyB7Ci1jbGFzcyBCaXRCdWZmZXI7Ci19Ci0KIG5hbWVzcGFjZSB3
ZWJydGMgewogCiAvLyBBIGNsYXNzIHRoYXQgY2FuIHBhcnNlIGFuIFNQUyBibG9jayBvZiBhIE5B
TCB1bml0IGFuZCBpZiBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pNDIwX2J1ZmZlcl9wb29sLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2k0
MjBfYnVmZmVyX3Bvb2wuY2MKaW5kZXggYzQwM2VlYjRmY2JhMTRhNDk5ZjJiMDkxMDQwY2QzMTU4
ODE3ZGRiNS4uMmU2Y2RjODNiNTFiNmJmYjRmODg5Zjg0ODUxODg5YWUxZmNiMDhlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3Zp
ZGVvL2k0MjBfYnVmZmVyX3Bvb2wuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2k0MjBfYnVmZmVyX3Bvb2wuY2MKQEAgLTEwLDYg
KzEwLDggQEAKIAogI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL2k0MjBfYnVmZmVyX3Bv
b2wuaCIKIAorI2luY2x1ZGUgPGxpbWl0cz4KKwogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2JpdHJhdGVfYWRqdXN0
ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92
aWRlby9pbmNsdWRlL2JpdHJhdGVfYWRqdXN0ZXIuaAppbmRleCBlZTMxMmU0ZjlhNDUyZTc1OWJl
MzlkZDVhNTY5ZGYxYzVjOWRmZDU3Li5iYzJjNmJiODQ5MzZkMzliOTI5NTdmMGE0ODJjYzY5OTZl
ZDExZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9iaXRyYXRlX2FkanVzdGVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUv
Yml0cmF0ZV9hZGp1c3Rlci5oCkBAIC0xMSwxMCArMTEsMTMgQEAKICNpZm5kZWYgQ09NTU9OX1ZJ
REVPX0lOQ0xVREVfQklUUkFURV9BREpVU1RFUl9IXwogI2RlZmluZSBDT01NT05fVklERU9fSU5D
TFVERV9CSVRSQVRFX0FESlVTVEVSX0hfCiAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1
ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogCisjaW5jbHVkZSAiYWJzbC90eXBl
cy9vcHRpb25hbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3JhdGVfc3RhdGlzdGljcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
cmVhZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2lu
Y2x1ZGUvZnJhbWVfY2FsbGJhY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2ZyYW1lX2NhbGxiYWNrLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzODgzYzFkOGQyZjY4OGEzNjczYjBhZTM2MmU3ZWY4YmFj
YjM5NDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1
ZGUvZnJhbWVfY2FsbGJhY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIENPTU1PTl9WSURFT19JTkNMVURFX0ZSQU1FX0NB
TExCQUNLX0hfCi0jZGVmaW5lIENPTU1PTl9WSURFT19JTkNMVURFX0ZSQU1FX0NBTExCQUNLX0hf
Ci0KLSNpbmNsdWRlIDxzdGRkZWYuaD4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotI2luY2x1ZGUg
ImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0KLW5hbWVzcGFjZSB3
ZWJydGMgewotCi1jbGFzcyBWaWRlb0ZyYW1lOwotCi1zdHJ1Y3QgRW5jb2RlZEZyYW1lIHsKLSBw
dWJsaWM6Ci0gIEVuY29kZWRGcmFtZSgpCi0gICAgICA6IGRhdGFfKG51bGxwdHIpLAotICAgICAg
ICBsZW5ndGhfKDApLAotICAgICAgICBmcmFtZV90eXBlXyhrRW1wdHlGcmFtZSksCi0gICAgICAg
IHN0cmVhbV9pZF8oMCksCi0gICAgICAgIHRpbWVzdGFtcF8oMCkge30KLSAgRW5jb2RlZEZyYW1l
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsCi0gICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAotICAg
ICAgICAgICAgICAgRnJhbWVUeXBlIGZyYW1lX3R5cGUsCi0gICAgICAgICAgICAgICBzaXplX3Qg
c3RyZWFtX2lkLAotICAgICAgICAgICAgICAgdWludDMyX3QgdGltZXN0YW1wKQotICAgICAgOiBk
YXRhXyhkYXRhKSwKLSAgICAgICAgbGVuZ3RoXyhsZW5ndGgpLAotICAgICAgICBmcmFtZV90eXBl
XyhmcmFtZV90eXBlKSwKLSAgICAgICAgc3RyZWFtX2lkXyhzdHJlYW1faWQpLAotICAgICAgICB0
aW1lc3RhbXBfKHRpbWVzdGFtcCkge30KLQotICBjb25zdCB1aW50OF90KiBkYXRhXzsKLSAgY29u
c3Qgc2l6ZV90IGxlbmd0aF87Ci0gIGNvbnN0IEZyYW1lVHlwZSBmcmFtZV90eXBlXzsKLSAgY29u
c3Qgc2l6ZV90IHN0cmVhbV9pZF87Ci0gIGNvbnN0IHVpbnQzMl90IHRpbWVzdGFtcF87Ci19Owot
Ci1jbGFzcyBFbmNvZGVkRnJhbWVPYnNlcnZlciB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQg
RW5jb2RlZEZyYW1lQ2FsbGJhY2soY29uc3QgRW5jb2RlZEZyYW1lJiBlbmNvZGVkX2ZyYW1lKSA9
IDA7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkVuY29kZWRGcmFtZU9ic2VydmVyKCkge30K
LX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBDT01NT05fVklERU9f
SU5DTFVERV9GUkFNRV9DQUxMQkFDS19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvaTQyMF9idWZmZXJf
cG9vbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9u
X3ZpZGVvL2luY2x1ZGUvaTQyMF9idWZmZXJfcG9vbC5oCmluZGV4IDc5ZjdlZWMyM2FmMDhmZDBl
YTY1Njg3NDA2NjY1OWZkMDAyODZkODcuLjJkY2VlMTk1ZmFkMWU3M2IyOGIyY2IwZWM0MWU3ODRm
NjM3NDI1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2k0MjBfYnVmZmVyX3Bvb2wuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVk
ZS9pNDIwX2J1ZmZlcl9wb29sLmgKQEAgLTExLDEyICsxMSwxMyBAQAogI2lmbmRlZiBDT01NT05f
VklERU9fSU5DTFVERV9JNDIwX0JVRkZFUl9QT09MX0hfCiAjZGVmaW5lIENPTU1PTl9WSURFT19J
TkNMVURFX0k0MjBfQlVGRkVSX1BPT0xfSF8KIAotI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRl
IDxzdGRkZWYuaD4KICNpbmNsdWRlIDxsaXN0PgogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBf
YnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9y
ZWZfcHRyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS9pbmNv
bWluZ192aWRlb19zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2luY29taW5nX3ZpZGVvX3N0cmVhbS5oCmluZGV4
IDgwNjMwNjFkMzEzMjcyMjgwMjJkOWU5YjU0NGQ1YjQ0NzdkM2EwMGYuLmZlOGQxMGUyMTZhMGRm
YmQwOGE2OGE4YmU5ZDBhNmVmMTk3NTlmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2luY29taW5nX3Zp
ZGVvX3N0cmVhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL2luY29taW5nX3ZpZGVvX3N0cmVhbS5oCkBAIC0xMSwx
MCArMTEsMTQgQEAKICNpZm5kZWYgQ09NTU9OX1ZJREVPX0lOQ0xVREVfSU5DT01JTkdfVklERU9f
U1RSRUFNX0hfCiAjZGVmaW5lIENPTU1PTl9WSURFT19JTkNMVURFX0lOQ09NSU5HX1ZJREVPX1NU
UkVBTV9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlk
ZW9fZnJhbWUuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc2lua19pbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJjb21tb25fdmlkZW8vdmlkZW9fcmVuZGVyX2ZyYW1lcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3JhY2VfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2Zy
YW1lLmgKaW5kZXggNTY1ODcwZTRkYzM2NDcxODI0YTg2YmYyY2U0NGUwYzE2NjY3NjdiNi4uYmEy
ODBmMmE4Y2RjYmY4NmM4ZGJiMDUyOGFlODJhOTczZjI1ZjA3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY2x1ZGUv
dmlkZW9fZnJhbWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oCkBAIC0xMSw5MSArMTEsNyBA
QAogI2lmbmRlZiBDT01NT05fVklERU9fSU5DTFVERV9WSURFT19GUkFNRV9IXwogI2RlZmluZSBD
T01NT05fVklERU9fSU5DTFVERV9WSURFT19GUkFNRV9IXwogCi0vLyBUT0RPKG5pc3NlKTogVGhp
cyBoZWFkZXIgZmlsZSBzaG91bGQgZXZlbnR1YWxseSBiZSBkZWxldGVkLiBUaGUKLS8vIEVuY29k
ZWRJbWFnZSBjbGFzcyBzdGF5cyBpbiB0aGlzIGZpbGUgdW50aWwgd2UgaGF2ZSBmaWd1cmVkIG91
dCBob3cKLS8vIHRvIHJlZmFjdG9yIGFuZCBjbGVhbiB1cCByZWxhdGVkIGludGVyZmFjZXMsIGF0
IHdoaWNoIHBvaW50IGl0Ci0vLyBzaG91bGQgYmUgbW92ZWQgdG8gc29tZXdoZXJlIHVuZGVyIGFw
aS8uCi0KLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCi0jaW5jbHVkZSAiYXBpL3Zp
ZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5oIgotI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19yb3Rh
dGlvbi5oIgotI2luY2x1ZGUgImFwaS92aWRlby92aWRlb190aW1pbmcuaCIKLSNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQotCi1uYW1lc3BhY2Ugd2Vi
cnRjIHsKLQotLy8gVE9ETyhwYm9zKTogUmVuYW1lIEVuY29kZWRGcmFtZSBhbmQgcmVmb3JtYXQg
dGhpcyBjbGFzcycgbWVtYmVycy4KLWNsYXNzIEVuY29kZWRJbWFnZSB7Ci0gcHVibGljOgotICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGtCdWZmZXJQYWRkaW5nQnl0ZXNIMjY0OwotCi0gIC8vIFNvbWUg
ZGVjb2RlcnMgcmVxdWlyZSBlbmNvZGVkIGltYWdlIGJ1ZmZlcnMgdG8gYmUgcGFkZGVkIHdpdGgg
YSBzbWFsbAotICAvLyBudW1iZXIgb2YgYWRkaXRpb25hbCBieXRlcyAoZHVlIHRvIG92ZXItcmVh
ZGluZyBieXRlIHJlYWRlcnMpLgotICBzdGF0aWMgc2l6ZV90IEdldEJ1ZmZlclBhZGRpbmdCeXRl
cyhWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlKTsKLQotICBFbmNvZGVkSW1hZ2UoKTsKLSAgRW5j
b2RlZEltYWdlKGNvbnN0IEVuY29kZWRJbWFnZSYpOwotICBFbmNvZGVkSW1hZ2UodWludDhfdCog
YnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBzaXplX3Qgc2l6ZSk7Ci0KLSAgLy8gVE9ETyhuaXNzZSk6
IENoYW5nZSBzdHlsZSB0byB0aW1lc3RhbXAoKSwgc2V0X3RpbWVzdGFtcCgpLCBmb3IgY29uc2lz
dGVuY3kKLSAgLy8gd2l0aCB0aGUgVmlkZW9GcmFtZSBjbGFzcy4KLSAgLy8gU2V0IGZyYW1lIHRp
bWVzdGFtcCAoOTBrSHopLgotICB2b2lkIFNldFRpbWVzdGFtcCh1aW50MzJfdCB0aW1lc3RhbXAp
IHsgdGltZXN0YW1wX3J0cF8gPSB0aW1lc3RhbXA7IH0KLQotICAvLyBHZXQgZnJhbWUgdGltZXN0
YW1wICg5MGtIeikuCi0gIHVpbnQzMl90IFRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIHRpbWVz
dGFtcF9ydHBfOyB9Ci0KLSAgdm9pZCBTZXRFbmNvZGVUaW1lKGludDY0X3QgZW5jb2RlX3N0YXJ0
X21zLCBpbnQ2NF90IGVuY29kZV9maW5pc2hfbXMpOwotCi0gIGFic2w6Om9wdGlvbmFsPGludD4g
U3BhdGlhbEluZGV4KCkgY29uc3QgewotICAgIGlmIChzcGF0aWFsX2luZGV4XyA8IDApCi0gICAg
ICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKLSAgICByZXR1cm4gc3BhdGlhbF9pbmRleF87Ci0gIH0K
LSAgdm9pZCBTZXRTcGF0aWFsSW5kZXgoYWJzbDo6b3B0aW9uYWw8aW50PiBzcGF0aWFsX2luZGV4
KSB7Ci0gICAgUlRDX0RDSEVDS19HRShzcGF0aWFsX2luZGV4LnZhbHVlX29yKDApLCAwKTsKLSAg
ICBSVENfRENIRUNLX0xUKHNwYXRpYWxfaW5kZXgudmFsdWVfb3IoMCksIGtNYXhTcGF0aWFsTGF5
ZXJzKTsKLSAgICBzcGF0aWFsX2luZGV4XyA9IHNwYXRpYWxfaW5kZXgudmFsdWVfb3IoLTEpOwot
ICB9Ci0KLSAgdWludDMyX3QgX2VuY29kZWRXaWR0aCA9IDA7Ci0gIHVpbnQzMl90IF9lbmNvZGVk
SGVpZ2h0ID0gMDsKLSAgLy8gTlRQIHRpbWUgb2YgdGhlIGNhcHR1cmUgdGltZSBpbiBsb2NhbCB0
aW1lYmFzZSBpbiBtaWxsaXNlY29uZHMuCi0gIGludDY0X3QgbnRwX3RpbWVfbXNfID0gMDsKLSAg
aW50NjRfdCBjYXB0dXJlX3RpbWVfbXNfID0gMDsKLSAgRnJhbWVUeXBlIF9mcmFtZVR5cGUgPSBr
VmlkZW9GcmFtZURlbHRhOwotICB1aW50OF90KiBfYnVmZmVyOwotICBzaXplX3QgX2xlbmd0aDsK
LSAgc2l6ZV90IF9zaXplOwotICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uXyA9IGtWaWRlb1JvdGF0
aW9uXzA7Ci0gIFZpZGVvQ29udGVudFR5cGUgY29udGVudF90eXBlXyA9IFZpZGVvQ29udGVudFR5
cGU6OlVOU1BFQ0lGSUVEOwotICBib29sIF9jb21wbGV0ZUZyYW1lID0gZmFsc2U7Ci0gIGludCBx
cF8gPSAtMTsgIC8vIFF1YW50aXplciB2YWx1ZS4KLQotICAvLyBXaGVuIGFuIGFwcGxpY2F0aW9u
IGluZGljYXRlcyBub24temVybyB2YWx1ZXMgaGVyZSwgaXQgaXMgdGFrZW4gYXMgYW4KLSAgLy8g
aW5kaWNhdGlvbiB0aGF0IGFsbCBmdXR1cmUgZnJhbWVzIHdpbGwgYmUgY29uc3RyYWluZWQgd2l0
aCB0aG9zZSBsaW1pdHMKLSAgLy8gdW50aWwgdGhlIGFwcGxpY2F0aW9uIGluZGljYXRlcyBhIGNo
YW5nZSBhZ2Fpbi4KLSAgUGxheW91dERlbGF5IHBsYXlvdXRfZGVsYXlfID0gey0xLCAtMX07Ci0K
LSAgc3RydWN0IFRpbWluZyB7Ci0gICAgdWludDhfdCBmbGFncyA9IFZpZGVvU2VuZFRpbWluZzo6
a0ludmFsaWQ7Ci0gICAgaW50NjRfdCBlbmNvZGVfc3RhcnRfbXMgPSAwOwotICAgIGludDY0X3Qg
ZW5jb2RlX2ZpbmlzaF9tcyA9IDA7Ci0gICAgaW50NjRfdCBwYWNrZXRpemF0aW9uX2ZpbmlzaF9t
cyA9IDA7Ci0gICAgaW50NjRfdCBwYWNlcl9leGl0X21zID0gMDsKLSAgICBpbnQ2NF90IG5ldHdv
cmtfdGltZXN0YW1wX21zID0gMDsKLSAgICBpbnQ2NF90IG5ldHdvcmsyX3RpbWVzdGFtcF9tcyA9
IDA7Ci0gICAgaW50NjRfdCByZWNlaXZlX3N0YXJ0X21zID0gMDsKLSAgICBpbnQ2NF90IHJlY2Vp
dmVfZmluaXNoX21zID0gMDsKLSAgfSB0aW1pbmdfOwotCi0gcHJpdmF0ZToKLSAgdWludDMyX3Qg
dGltZXN0YW1wX3J0cF8gPSAwOwotICAvLyAtMSBtZWFucyBub3Qgc2V0LiBVc2UgYSBwbGFpbiBp
bnQgcmF0aGVyIHRoYW4gb3B0aW9uYWwsIHRvIGtlZXAgdGhpcyBjbGFzcwotICAvLyBjb3B5YWJs
ZSB3aXRoIG1lbWNweS4KLSAgaW50IHNwYXRpYWxfaW5kZXhfID0gLTE7Ci19OwotCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCisvLyBUT0RPKG5pc3NlKTogRGVsZXRlIHRoaXMgZmlsZSwgYWZ0ZXIg
ZG93bnN0cmVhbSBjb2RlIGlzIHVwZGF0ZWQuCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRf
aW1hZ2UuaCIKIAogI2VuZGlmICAvLyBDT01NT05fVklERU9fSU5DTFVERV9WSURFT19GUkFNRV9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
Y29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWVfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19m
cmFtZV9idWZmZXIuaAppbmRleCAxMWJiODEyNTMxNmFhYzkxMmQxZmY4NTlhYWFkZDczMGE4MjFj
ZjhhLi5mODEzODUxYjlhOWVhNzFhZDU3N2U0OTBmZmQ2NmMxZTcxNzg2OGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8v
aW5jbHVkZS92aWRlb19mcmFtZV9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZV9idWZm
ZXIuaApAQCAtMTEsNTEgKzExLDE1IEBACiAjaWZuZGVmIENPTU1PTl9WSURFT19JTkNMVURFX1ZJ
REVPX0ZSQU1FX0JVRkZFUl9IXwogI2RlZmluZSBDT01NT05fVklERU9fSU5DTFVERV9WSURFT19G
UkFNRV9CVUZGRVJfSF8KIAotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRpbnQuaD4K
IAogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZV9idWZmZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jYWxsYmFjay5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3Qu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIAotLy8gRGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBXcmFwSTQyMEJ1ZmZlciguLi4pIGlu
c3RlYWQuCi1jbGFzcyBXcmFwcGVkSTQyMEJ1ZmZlciA6IHB1YmxpYyBJNDIwQnVmZmVySW50ZXJm
YWNlIHsKLSBwdWJsaWM6Ci0gIFdyYXBwZWRJNDIwQnVmZmVyKGludCB3aWR0aCwKLSAgICAgICAg
ICAgICAgICAgICAgaW50IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCogeV9wbGFuZSwKLSAgICAgICAgICAgICAgICAgICAgaW50IHlfc3RyaWRlLAotICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90KiB1X3BsYW5lLAotICAgICAgICAgICAgICAgICAgICBp
bnQgdV9zdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHZfcGxhbmUs
Ci0gICAgICAgICAgICAgICAgICAgIGludCB2X3N0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpDYWxsYmFjazA8dm9pZD4mIG5vX2xvbmdlcl91c2VkKTsKLSAgaW50IHdpZHRo
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGludCBoZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKLQotICBj
b25zdCB1aW50OF90KiBEYXRhWSgpIGNvbnN0IG92ZXJyaWRlOwotICBjb25zdCB1aW50OF90KiBE
YXRhVSgpIGNvbnN0IG92ZXJyaWRlOwotICBjb25zdCB1aW50OF90KiBEYXRhVigpIGNvbnN0IG92
ZXJyaWRlOwotICBpbnQgU3RyaWRlWSgpIGNvbnN0IG92ZXJyaWRlOwotICBpbnQgU3RyaWRlVSgp
IGNvbnN0IG92ZXJyaWRlOwotICBpbnQgU3RyaWRlVigpIGNvbnN0IG92ZXJyaWRlOwotCi0gcHJp
dmF0ZToKLSAgZnJpZW5kIGNsYXNzIHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxXcmFwcGVkSTQyMEJ1
ZmZlcj47Ci0gIH5XcmFwcGVkSTQyMEJ1ZmZlcigpIG92ZXJyaWRlOwotCi0gIGNvbnN0IGludCB3
aWR0aF87Ci0gIGNvbnN0IGludCBoZWlnaHRfOwotICBjb25zdCB1aW50OF90KiBjb25zdCB5X3Bs
YW5lXzsKLSAgY29uc3QgdWludDhfdCogY29uc3QgdV9wbGFuZV87Ci0gIGNvbnN0IHVpbnQ4X3Qq
IGNvbnN0IHZfcGxhbmVfOwotICBjb25zdCBpbnQgeV9zdHJpZGVfOwotICBjb25zdCBpbnQgdV9z
dHJpZGVfOwotICBjb25zdCBpbnQgdl9zdHJpZGVfOwotICBydGM6OkNhbGxiYWNrMDx2b2lkPiBu
b19sb25nZXJfdXNlZF9jYl87Ci19OwotCiBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlcklu
dGVyZmFjZT4gV3JhcEk0MjBCdWZmZXIoCiAgICAgaW50IHdpZHRoLAogICAgIGludCBoZWlnaHQs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fdmlkZW8vaW5jb21pbmdfdmlkZW9fc3RyZWFtLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2luY29taW5nX3ZpZGVvX3N0cmVh
bS5jYwppbmRleCBlZmNhNTE0NTU2Njk4ZjZmODNiZDExMzdlNzgwNjM0NDJjMDk0OTM5Li5jOGIx
MmU3NDdmZjZjOGM5NzlhMmQwNTk5YjM2MDhlMTJmNjc5ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vaW5jb21pbmdf
dmlkZW9fc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl92aWRlby9pbmNvbWluZ192aWRlb19zdHJlYW0uY2MKQEAgLTExLDkgKzEx
LDExIEBACiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvaW5jb21pbmdfdmlkZW9fc3Ry
ZWFtLmgiCiAKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1
ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vdmlkZW9f
cmVuZGVyX2ZyYW1lcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50Lmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19s
aWJ5dXYuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgKaW5kZXggNGNiZmVjMjAxODdl
MjIwNDAyNzI3MGQ4MDI4OTFmZDFjN2YzOWVlMC4uZDMyNDgzNDBkODc1ZmVhODE3NTE4MzU3MmJi
YjIzZTliNmRlYjdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlk
ZW8vbGlieXV2L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oCkBAIC0xNSwxMSArMTUsMTQgQEAKICNp
Zm5kZWYgQ09NTU9OX1ZJREVPX0xJQllVVl9JTkNMVURFX1dFQlJUQ19MSUJZVVZfSF8KICNkZWZp
bmUgQ09NTU9OX1ZJREVPX0xJQllVVl9JTkNMVURFX1dFQlJUQ19MSUJZVVZfSF8KIAorI2luY2x1
ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVz
LmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkgIC8vIFZpZGVvVHlwZXMuCisjaW5jbHVkZSAi
YXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oIgorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3Jl
Zl9wdHIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby9saWJ5dXYvd2VicnRj
X2xpYnl1di5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl92aWRlby9saWJ5dXYvd2VicnRjX2xpYnl1di5jYwppbmRleCA2YmRmYWJkNWU5Yzc2Zjll
YzcyODk4YWIyMGU2YjBmOTAyMTc1ZjZiLi42ZTNmYjNlZDM1YTRhNDAzYWE1MjM1ZTk3ODFlOTVi
MTAyMzQxMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9jb21tb25fdmlkZW8vbGlieXV2L3dlYnJ0Y19saWJ5dXYuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL2xpYnl1di93
ZWJydGNfbGlieXV2LmNjCkBAIC0xMjQsMjkgKzEyNCw2IEBAIGludCBFeHRyYWN0QnVmZmVyKGNv
bnN0IFZpZGVvRnJhbWUmIGlucHV0X2ZyYW1lLCBzaXplX3Qgc2l6ZSwgdWludDhfdCogYnVmZmVy
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcik7CiB9CiAKLWludCBDb252ZXJ0TlYx
MlRvUkdCNTY1KGNvbnN0IHVpbnQ4X3QqIHNyY19mcmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QqIGRzdF9mcmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBoZWlnaHQpIHsKLSAgaW50IGFic19oZWln
aHQgPSAoaGVpZ2h0IDwgMCkgPyAtaGVpZ2h0IDogaGVpZ2h0OwotICBjb25zdCB1aW50OF90KiB5
cGxhbmUgPSBzcmNfZnJhbWU7Ci0gIGNvbnN0IHVpbnQ4X3QqIHV2SW50ZXJsYWNlZCA9IHNyY19m
cmFtZSArICh3aWR0aCAqIGFic19oZWlnaHQpOwotCi0gIHJldHVybiBsaWJ5dXY6Ok5WMTJUb1JH
QjU2NSh5cGxhbmUsIHdpZHRoLCB1dkludGVybGFjZWQsICh3aWR0aCArIDEpID4+IDEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RfZnJhbWUsIHdpZHRoLCB3aWR0aCwgaGVpZ2h0
KTsKLX0KLQotaW50IENvbnZlcnRSR0IyNFRvQVJHQihjb25zdCB1aW50OF90KiBzcmNfZnJhbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGRzdF9mcmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHN0X3N0cmlkZSkgewotICBpZiAoZHN0X3N0
cmlkZSA9PSAwKQotICAgIGRzdF9zdHJpZGUgPSB3aWR0aDsKLSAgcmV0dXJuIGxpYnl1djo6UkdC
MjRUb0FSR0Ioc3JjX2ZyYW1lLCB3aWR0aCwgZHN0X2ZyYW1lLCBkc3Rfc3RyaWRlLCB3aWR0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KTsKLX0KLQogaW50IENvbnZlcnRW
aWRlb1R5cGUoVmlkZW9UeXBlIHZpZGVvX3R5cGUpIHsKICAgc3dpdGNoICh2aWRlb190eXBlKSB7
CiAgICAgY2FzZSBWaWRlb1R5cGU6OmtVbmtub3duOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVv
L3ZpZGVvX2ZyYW1lLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDYxODE0Njcx
MTE4M2NmYWEzN2VlMjU3ZGQyMzIwYWNiZjdmYTU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZS5jYworKysgL2Rldi9udWxsCkBAIC0xLDQ3
ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVv
L2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVk
ZSA8YWxnb3JpdGhtPiAgLy8gc3dhcAotCi0jaW5jbHVkZSAicnRjX2Jhc2UvYmluZC5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gRkZt
cGVnJ3MgZGVjb2RlciwgdXNlZCBieSBIMjY0RGVjb2RlckltcGwsIHJlcXVpcmVzIHVwIHRvIDgg
Ynl0ZXMgcGFkZGluZyBkdWUKLS8vIHRvIG9wdGltaXplZCBiaXRzdHJlYW0gcmVhZGVycy4gU2Vl
IGF2Y29kZWNfZGVjb2RlX3ZpZGVvMi4KLWNvbnN0IHNpemVfdCBFbmNvZGVkSW1hZ2U6OmtCdWZm
ZXJQYWRkaW5nQnl0ZXNIMjY0ID0gODsKLQotc2l6ZV90IEVuY29kZWRJbWFnZTo6R2V0QnVmZmVy
UGFkZGluZ0J5dGVzKFZpZGVvQ29kZWNUeXBlIGNvZGVjX3R5cGUpIHsKLSAgc3dpdGNoIChjb2Rl
Y190eXBlKSB7Ci0gICAgY2FzZSBrVmlkZW9Db2RlY0gyNjQ6Ci0gICAgICByZXR1cm4ga0J1ZmZl
clBhZGRpbmdCeXRlc0gyNjQ7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiAwOwotICB9Ci19
Ci0KLUVuY29kZWRJbWFnZTo6RW5jb2RlZEltYWdlKCkgOiBFbmNvZGVkSW1hZ2UobnVsbHB0ciwg
MCwgMCkge30KLQotRW5jb2RlZEltYWdlOjpFbmNvZGVkSW1hZ2UoY29uc3QgRW5jb2RlZEltYWdl
JikgPSBkZWZhdWx0OwotCi1FbmNvZGVkSW1hZ2U6OkVuY29kZWRJbWFnZSh1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBsZW5ndGgsIHNpemVfdCBzaXplKQotICAgIDogX2J1ZmZlcihidWZmZXIpLCBf
bGVuZ3RoKGxlbmd0aCksIF9zaXplKHNpemUpIHt9Ci0KLXZvaWQgRW5jb2RlZEltYWdlOjpTZXRF
bmNvZGVUaW1lKGludDY0X3QgZW5jb2RlX3N0YXJ0X21zLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBlbmNvZGVfZmluaXNoX21zKSB7Ci0gIHRpbWluZ18uZW5jb2Rl
X3N0YXJ0X21zID0gZW5jb2RlX3N0YXJ0X21zOwotICB0aW1pbmdfLmVuY29kZV9maW5pc2hfbXMg
PSBlbmNvZGVfZmluaXNoX21zOwotfQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVv
L3ZpZGVvX2ZyYW1lX2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZV9idWZmZXIuY2MKaW5kZXggYmUwYjQ5
MjdiYmVmYjRjYzBkNzNmMTM0MjM4MmI4NWMwZDk5Yjc4Ny4uNWY4OWI0YWNiOTZkOTQ3ZGEyNDZj
NGNlNDJmOTEzZmM1NTg5NzBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8v
dmlkZW9fZnJhbWVfYnVmZmVyLmNjCkBAIC0yMDMsNTcgKzIwMyw2IEBAIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBJMDEwQnVmZmVyQmFzZTo6VG9JNDIwKCkgewogCiB9
ICAvLyBuYW1lc3BhY2UKIAotV3JhcHBlZEk0MjBCdWZmZXI6OldyYXBwZWRJNDIwQnVmZmVyKGlu
dCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHlf
cGxhbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHlfc3RyaWRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHVf
cGxhbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVfc3RyaWRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHZf
cGxhbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZfc3RyaWRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q2FsbGJh
Y2swPHZvaWQ+JiBub19sb25nZXJfdXNlZCkKLSAgICA6IHdpZHRoXyh3aWR0aCksCi0gICAgICBo
ZWlnaHRfKGhlaWdodCksCi0gICAgICB5X3BsYW5lXyh5X3BsYW5lKSwKLSAgICAgIHVfcGxhbmVf
KHVfcGxhbmUpLAotICAgICAgdl9wbGFuZV8odl9wbGFuZSksCi0gICAgICB5X3N0cmlkZV8oeV9z
dHJpZGUpLAotICAgICAgdV9zdHJpZGVfKHVfc3RyaWRlKSwKLSAgICAgIHZfc3RyaWRlXyh2X3N0
cmlkZSksCi0gICAgICBub19sb25nZXJfdXNlZF9jYl8obm9fbG9uZ2VyX3VzZWQpIHt9Ci0KLVdy
YXBwZWRJNDIwQnVmZmVyOjp+V3JhcHBlZEk0MjBCdWZmZXIoKSB7Ci0gIG5vX2xvbmdlcl91c2Vk
X2NiXygpOwotfQotCi1pbnQgV3JhcHBlZEk0MjBCdWZmZXI6OndpZHRoKCkgY29uc3QgewotICBy
ZXR1cm4gd2lkdGhfOwotfQotCi1pbnQgV3JhcHBlZEk0MjBCdWZmZXI6OmhlaWdodCgpIGNvbnN0
IHsKLSAgcmV0dXJuIGhlaWdodF87Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFdyYXBwZWRJNDIwQnVm
ZmVyOjpEYXRhWSgpIGNvbnN0IHsKLSAgcmV0dXJuIHlfcGxhbmVfOwotfQotY29uc3QgdWludDhf
dCogV3JhcHBlZEk0MjBCdWZmZXI6OkRhdGFVKCkgY29uc3QgewotICByZXR1cm4gdV9wbGFuZV87
Ci19Ci1jb25zdCB1aW50OF90KiBXcmFwcGVkSTQyMEJ1ZmZlcjo6RGF0YVYoKSBjb25zdCB7Ci0g
IHJldHVybiB2X3BsYW5lXzsKLX0KLQotaW50IFdyYXBwZWRJNDIwQnVmZmVyOjpTdHJpZGVZKCkg
Y29uc3QgewotICByZXR1cm4geV9zdHJpZGVfOwotfQotaW50IFdyYXBwZWRJNDIwQnVmZmVyOjpT
dHJpZGVVKCkgY29uc3QgewotICByZXR1cm4gdV9zdHJpZGVfOwotfQotaW50IFdyYXBwZWRJNDIw
QnVmZmVyOjpTdHJpZGVWKCkgY29uc3QgewotICByZXR1cm4gdl9zdHJpZGVfOwotfQotCiBydGM6
OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gV3JhcEk0MjBCdWZmZXIoCiAgICAg
aW50IHdpZHRoLAogICAgIGludCBoZWlnaHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fcmVuZGVyX2ZyYW1l
cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92
aWRlby92aWRlb19yZW5kZXJfZnJhbWVzLmNjCmluZGV4IDVhMGIwYjAwNzEyZDViNDQwMDhiMzYz
ZjIzZWI0OThmYTQ4Nzk0OWYuLjgxNTI2MjVmNWIyZWY0ZDVjZjY0NGU4MTFmNzM5MzgwZTNjN2Uy
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJhbWVzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJh
bWVzLmNjCkBAIC0xMCw4ICsxMCwxMCBAQAogCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL3ZpZGVv
X3JlbmRlcl9mcmFtZXMuaCIKIAorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHV0
aWxpdHk+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAi
c3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX3JlbmRl
cl9mcmFtZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl92aWRlby92aWRlb19yZW5kZXJfZnJhbWVzLmgKaW5kZXggMjIyNjU3N2RjM2VmMWVhNWQ1
ZDIxMTk0OTUxNGNjOTU3ZjdmZjBmYy4uMmM0YmRkOTE3N2RjZDAyNWY2NTA4ZTJkZDkxMWM0NGFl
NTA1N2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX3JlbmRlcl9mcmFtZXMuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fcmVuZGVy
X2ZyYW1lcy5oCkBAIC0xMSw4ICsxMSw4IEBACiAjaWZuZGVmIENPTU1PTl9WSURFT19WSURFT19S
RU5ERVJfRlJBTUVTX0hfCiAjZGVmaW5lIENPTU1PTl9WSURFT19WSURFT19SRU5ERVJfRlJBTUVT
X0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KLQogI2luY2x1
ZGUgPGxpc3Q+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9kYXRhL3ZvaWNlX2Vu
Z2luZS9zdGVyZW9fcnRwX2ZpbGVzL3J0cHBsYXkuZXhlIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvZGF0YS92b2ljZV9lbmdpbmUvc3RlcmVvX3J0cF9maWxlcy9y
dHBwbGF5LmV4ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjkzOGM4ZmIyMjBmNzM0MDZlMjMyOTU4MTdlNzFjNWZk
ZTU4ZDRmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA4NzA0MAp6Y21lRmFkd2YqWSlpLXxUbVEw
ZEsmT2owZjVGdHdON0YwQU0lNzlEPSEjejAza1UpXjJeJUFHP1FWUW9GM1cxM3kKenNobiZfZDgr
cEVSSTMhKitDRl8rK2pfeXY2QX1ePXoqWjRfWSVFPzdzcUZFZk0hX1YmJGhfYVImelZXRUtLPWRQ
CnpmOElhZCZ4PW14b1ZDfHBkK29LP1VWSDdlRkheQjFEQV5AUmEhUnQ0TkohRVNKa3ZrRkd9ZTZo
U0FVVzVDOWprLQp6O258RzhwMVpAZ19eOzx+LU1UZFYtTCp4bCpMPzRgSFElfGo9dVVPNVFncVg7
TVFoWiVpcXlNcXhwaHNedmhVdGkKemRQUjAtQHc5KE1fV3p+KnBPWmleQVc0Z0RaZlZYM08qNTBG
OStHayNTdkQ3NVpJVG91P1o3ezhAJmcjT0wlYnUmCnppOHVPfXtGZDRzbDlYbmBAUHZRSlNZJitA
NGczPmRUT0hFdl5iJkRNMT9sKkg2NCtLejFXeF5YI3YkP1MpWjBIbAp6dFZhSFNoVz52LUU+Jihf
dUx2eUVoWnM3QWtIdlF+YkNEJDdjPEMrUVFOQlh9bDdrbnhTSjRaO2h5QytRUXYwUksKejljdS1N
WHgoVmw8KklNTlRWb0w8Sm4kfitlRHkhITF1eTtYRnVWeHgrYHlteVBrOD1JWnlrbVFuRkBOZHpY
Zm0yCnorQkcqNWdILU81N1QlbjEhQEtwND8tMyY1TEgxRyh6VVRmRVVKJWcjX3dXQSMyXmlrYG8y
SGtTbCszXkd4PHktSwp6R2UocTIrYitZT2p6amtDclRESURraHM8X05vKmYpeEo7NShhQX4zPkB0
ZzY4Z2JRSVlZUXckV0dKMl40KjdqLTAKeihqZGhxejl+dHU4bDt4Q0tZMT1kbyFjbSheVHdCQDs0
YG07IXZDMmlOdTRofjE/Z3EmUTdXe1ZSR19wcmJIXkQjCnpffT56VmdoO0R3YVB6U3M4c3Moam83
SnZuPylhSnpvKERvT24zemhyX14xME4kJElSXjt8KGRZV0I3MEp6TVlWPwp6TDIyIzM/VEF5fWR5
JSkoRHNhdChSPnEkS0Z7QG59NkdWWihgSEJpT0BZaE93OGl9MiRFTUM0NzZzKTk1TilwbiMKejx1
KjJJdmMjUENiI0FSQCQ1X0F9M19wQHpDV1pUb3p+WiV3QnVWUz9HfSFvQFBST2UraUV+Z289eXg4
eDxiZUA+Cno+SFIoTGNocSVDJnd1eGhLZSt5RCs3RkNia18wLVQ4ZG0zU0lrPlRvYiNAJWV1R2Ut
ZjRNMHhINV9ZXm4+aTlVRAp6OXEyZm1FeCsmc2Y7UjExaU5DP0JkYWJSN2ttTkA/dj00Mn04Q15f
WmVpSFIqWD5aSTVKNGI8YEtzREg/Py0zYSMKelkxUUBNWGU7cnBiK3duYW0rbFlNRVlreldebEh2
Myt8al9HVVU4QGFCO3c8ITdIKEYzc0VYZVI1ITdsa0FFMEphCnooQFdjOThMPEFeJW19Xjk1QUs3
WXdaPW58ezZJSUpTbHl3SGtGdUd6b0VWV2BjJG5DJGwzIXJOYnRNWk5HSFdLNwp6Uj89VVoxcFct
eU9CZHMtM1N8ZlJuYGZ3fnVFRjtUaV5HfTN5YzVpOFU0YH05JVZ3U3hPZyNpKUc8QX56PmUqY1QK
ekI9VFp7e0x+NVheMXs5PHchflM8a0shZlJLaTN2ZihzeGA4clZRN1BCNzZsfGprfThQck5xYEhI
dG9hQm1FcF4lCnpqMzx7Ozgzb31nZFUrVHh3V1NBekBhd2chQl8qcmVCX1gkVitQbT57Y0RtemVI
dFQ2PnJ8SlkqeyhQeih7fmNeSwp6V1l5OXhnbVZsNzJtM01BLTxRN3lCM2lTVHoxSHp6SGZzX2Y3
ZkVxbEw0RDh0cUlJUnh7aVdAQ0peXkVZcml7bF4Kem1ENlQhQj5eeyVYSmB+eDUkTGYlVHozYEln
Q01XeDY5VVZvelpYNDMpQ0dJPitEPW1ebilsbHpzV3EqR3IpaF5BCnorTXIhLT0+Un5SKi1Ue1Jt
U14kOFlNZlI0I3A5QnMyWTVZT1ZzSEE4cSo9Ki0yVDwhPTh7NE5ILW5eeXlDfGx5TAp6PFVhJX43
K3drKU1GVSt5ZSl9cV92P3A1S3JDMFpzPyRJbVdaSUJZYHk5dT9JNH5gWnxFJHdwaT87Jjs7Ym40
WnwKelNPcSE/RkRZfUU/JC1uRDJMdFZgKWtvajt7UCFiWj1Eb1VvPyo7YnB2WSFMRGBrMkc2Mm0w
diFhPWU/VUA3fXF1CnpIKyR0TUtQNFpXP1I+dzM9Wm14eE5oTkgpOUY8OV5aemFAeXRtMDUqaHl7
K1pwdTM3eUBKZHVlSkc0MXlpbVdQSAp6KE8xZHVoen17KmElJUdAcykqc3FGJDNJKyUxeGdQQ0da
Rk4kYUJDX1UjK2g4KSt7UytrMlpFYGRsRnklZSZFZkwKemxrQ209MlJkU1EpXnElcVlfSW1BPE0+
bEl0Wk1NXjQtMWhJLTNiZyhKPlB3aVZAUEg5UXt4UEw7U2pBVEsmWWJWCno8KSE7cyM3dHpuSXUx
RmEmV1FRSEwkdEZWSU1IQ1VndH5vezVVUjB8ejFCdVZwO0V9S2kpUVpfPXI/SW9uST5WQAp6QTw3
eH07KHdzcTlxNXZwOGMrQ1YlaEpab3JhUSQkQkc5S2I5K1E7TzVIcVhqKD0lRGMzNE5pSGdqdm4/
cHUwZnwKemgyMTBsa2BRN0VvSCh0XlRpU2xac19XVDVWOW9IYVNYbShLJHs9aD92QHk8OWNlb1l1
dD5JX2piJkBzZE1JVHZGCnohfllDLXE4MHtuVmpJNFYxPT1pV1ZAY0RqMnEtajgpRVduK1AzSlQ8
NG5GdzxvNzkraEZmaUNWR2ZxdUVgbl5KLQp6RXlmc0RGPDhtY2dXKF43d3JPK3MzaXtxP148ZFNx
QEI7dmNffWNrYEtmayZTNEEjTzc2TjhhaWcxLX1gP2NrNiMKenh8ITxmNGtUPVBWNloxfTB4QmYm
VE9qNWg3eG45UTgxcTtiZlpGTiQlQEBlYzQ5U2A/T0skIzVKbWt5R3VaVntuCnpyQnBLPE4tKnw7
Y24hPFZlLSNnSXglbU97O0U8YzR0O21hcVUqUkc0SnBRbyEpbm13WjYjaEZ6KDN7O20pLVE0WQp6
Jm9GfEskJXM4TjRDQjtLaGNMenkxe24pTzRZIzQxTmgme3xMelEpSkMleiUjPHdeTCQ+cjZxdjFY
Z1F9R0x9dCsKelJgTytKV3NOSShUeDFIVStRI3xZQz8mfFpRREcyPWs+QkdZYHp7aFEqcitPPWRs
R3JWJiFFdG5XcWVkRm1GSG8tCnplITFtNjVjQURja1g/VDg3b1ppYlBPeGx4dHFOWlZjOWA/UUFV
Xnx6MXdPezQ1ayN3SjVWV1pNaTdqcEJXU31Mfgp6RFB9SWgyVHImSEM3RiU7WCpwJX52WWJsKHBx
MjVIbXMxJWZieFFiZXp+ejVPeTlmbyM0U3pgUU9PXmwhZ3xyYmEKejN3ZkJHZEcmbE10M2ZoMyVP
LUpFQD5pKmkxI0BHPVUhK1JDVGFAWXNma3Z9MThkX21DRH1ZX3Z8MSFOYk5EY018CnpKTzQyaUpn
RUN4NXs8Y0craGBQaHB1I009b08wSDB5Qk40WnpNUm1gKUhgfkRkQDNJNnctY0RPVTJnc1gjTWE7
aQp6VFVQX2JfNEFSK3NzfkhrIUJ4SEVafW1NY2c0P0MtR3dAWiMyUl4wVClBMWF3SU1MdiZZO2ND
allCTldXci0za3AKem9FdnIlODtkUEFVVWBZd0BlMWxKd344TUYwZkNpSVNtIz88S2VEaHlxaChk
ezx8Tml3IWpkZWspcjdUO3Ehe0U4CnpVYHp0KmVlbkZHTCtWOGhIbmU/Skx1UH0ta3BKRmZ7X2Br
KmAoamZoUXotdmp0PCROVXZDOXY8MWw/KG53bW16Ugp6JG43elEoSDw4S1h5a1NeK2A9bkkwS0sl
b0E7QXw3S3hnSl5YU15HfjxlI1VacmB8UF57TExaamJNR0FWP1dWNTkKeiRWaUApMmlCKmlBczd1
ajdVYml1d09Vd3BZcjdNJTZKUiU3MkNsK2E7IXBIWiUyTEp1ZVZJVXRNKE1TWlBlVXV6CnoyQlIo
WDdLfk91Uj5pKm5NQ2dla3NRZXlPWThxP311c1gtOF8mIXJmKGZMSDt6YWJHO3cySDRoTXVYVX5k
YV94KAp6OFpZKGVVMFMxOFFzNTFwJjt4T2lkKUZRK0VGMXRrVjdjUDRPMT5WcDE0PldxaHYkPDNQ
WWJ1d0V4IU84JDEzOEwKekpkVil7PDF3WHVBa3NXNzJiSG5mMkIpT3Y1JFNSI0ROejtRNFpNMjIr
K055bDhmeE1ENE4xdD47MTJQVERlaiU2Cno/WiRRV3EkTipOSzg/SFVicThBbnJ8TzR6N2V2ZUxM
QyEzcTVQPHdiWmRHJjw5RTg4bDdBISpxUz5hb1d0LW1acAp6dD5oT1I8Wl9+SSRtRlY/YGtwa3Ep
Tm1PJiYzdG4pPClDNVZwejE9KTclUklTUVohXyU7JHQyflJ5TWVkWE5yUjYKeis2UXtiNnYzWl4j
dzNnQDghanNrYXNOPHVDMEVFYThfQFMqSlpvOUNjWiokPXU/WFctdHYobV5mfnA4VVNoV1chCnol
PGFxRW1fdlY2bmZhWiorME1yRjlhS2hMWEs4eX5YUS15XzhQdEtEXkVDY0t1LTd6Z2FFcmxHWm4h
QnJjVS1XQgp6fE10Jjk5aHg/SDEkPDx+JkMhfTB0RDtORkQpfmNaNSp2cWxee2wkeV4wIWd7b2tU
NH5hfStCdEBDQ2VUOHEzdjMKejgqWC01V2NXbURiVzc/T2wkcGJfZStQVSRPRnhJYztkcDtTWUlQ
aGB1aGVEfE5LKGYpNiFBT3FzSyZpWEVacVMmCnpBbW9LbHcjZFYjNSprYX1QRzRHTW99P15va2ZQ
LUVqcXtxYXVXJlApWkxYNzV5VipqZ1pIYz5TbFVkS3EjOVV8Nwp6VUUoPGp4KitAKiRgNGwtcHl5
bkxLbTZCITUrWDJpTlM8RTMjITBTVGpoal8/emA+Rnt2JGdAUktEUil4RE5JJG4KekZrMD5tM0xk
X1AjeHghMFdhVz9PKUFhRnRHdkx2PTk/QFhReGVFQ2RDUENIQlM1ZH1VPTQ1MHFjdFZ7PikjdTQo
Cnpvbik9VVN0O2ZkKn50PT14b2s4bFNXKz5sPWRnNjxjYkNBS3A2aTRlJXhJZUhxIXZ1JUc7STxP
OCVLdn1QODBxaQp6KSQ/d3U9Z3ZRaGRhYGNnTW1CKnRebUxYX14zLSFwaytYNylZLSphZTBsb1NQ
VGUqe2t5dGFAI3NXNiN8YSVhPSsKekxYYT93aXdZYFBkMHNGWUxLRTw+c3JwYG1CfD4/JXY1VFNG
bWIwPXxuQE9yNyQmYT5jaGlwKEYoU0tNKTl4MVF0CnojKzw+blpFMnQhVz9VS0h5NCpYeCZhM0E1
Zip2KWFXcStnV1RrVFhiYnNIbUI7NHBRMiU9b21LZVcqITc5YmVrTQp6ZUkrdVlmJTAjaGl8Oypw
X0FUQDktTSphPUkkdkIpaU5uYXRFYT5yIyprc3A3MnpwPGJ5aXwoTD8xYztVR0V3Nz8KemdZe0Ay
OSY4fSpBY3o7TCpTP25oPmZLdFNNXmZEXjtFQkNUNFZBfiskZlMham5vMiRjQWpfdHo9JFUjeGVm
eT5vCnozIUJuKEAhZFYhRTl2KmIybGVRKS1URTMyeXpyM0kkWWh6bSpBPSY0K3ZXNSopX2xvd2VZ
QDEjdntVfUlIfGRKegp6T2dNfWNxU3olY1cpcytBJkZPbng5YzUoVCQqdHFmJiQxVHlJQGFfaHZK
OTZXYFFPdFQ8QzJtQTJjYVVhK2wrSygKei0lZ0JGQHJsR0xrM29rfUswMFdITV8mbHBReWJBRm4l
YWNiPHUleCN7dylXQ1hxcWE7MXlnOSlPWlFhck93Mk0hCnozYzAkTWdgOWQyN1JhKUxuQzZIMDEh
KCtRR3wqX2w9P0k5dCteSVlHZTMmNUMyfUM1aCF+P2I3KX4lM3RReF54eAp6b25gfVY1Nj5AYFZt
NHFlWW9pdjNaWT1oYDIhKVozfE1HQHFaUGM+U1NCbXFISk9yZD4yQ3g5ciVwPyR7SSpXVmUKejZn
JGI7VyluaERKaT0yRT9kSnxnOX0mbl4oRmNrUEsmY1hgMXdtTllOQiNqR2AmIy1ORlg5ej1vTyU4
UXUqflExCnpHQ1QqdkMjY3RtSyotZVRxU3VnSnpyQ2VqU3pkYjNTUFQtTFYyR2F3UkgqS1o9K2Ff
MExRV3lYbGc2Mnkwbmw3Kwp6eTwxWD5MVHRYWEc3KXNjS3A0NTlhNWcramxrUiloMilnQ0kzN2Vm
UXtoTlFNJV9MZENqcnRNfFJvZFJ2UnAzQm0KejJ4aG0oTUc0Pj4zUWFPWmQhZVBHZEh6PDxxWTY/
Z2dVc3tqOXJWRFFrRkxnZFZqc3FMYkY1K2tGUGE7O3RXWUhCCno5YFYmJGsrO1JuakEjajlsc2c8
aCZreSZkQUk9XlBYNEg1fC1FaXx9RyNRamY8RisrOSU5OG5WYX0oSCFWU0U1agp6RldyY1M2VDFB
Rzt0eyYrcU5aSCk4T3hfey0hOGVPNl5QSmxTKSopdlZHSEYqMnJRSFczYiZ4NCYhI3w0UFphMUkK
enk8IyEtaWgwT01tPGJtXyY3NUlxIWBWNFdLUFZAQ0JqLXJVblQ/ITtuUSMjbElVeiU+PngzMW1R
ZHwrQUZ2OVItCnpqSnJibz04d3FQaUVEIWlefk1saWZIJFp+eVcoTHI5K3ReNCY1OWZJd1Y1bD9r
YGpDYmBzTiFtKDhaJEZDISFVRAp6UmgxIyRRSGEtSUQxME4qd2g9OyoqOD5DNThUMUVfQE1xMig3
S0k9ZmE8KUcrXj8/UUQoejI0TlRrd1MqKjczMnUKemhXe2NIRURVWlY1Rih0bEhJQn5VR1hDT05O
IW11cEVUNSgrQ0RpQzBod1c3Py1AP05TNUZIMXFfPTctWSojcmlUCnpMKEZQUXZNRm0jJEF8VzFq
KDAtKjRxelp7OCZQOFdPN2JidUNKMWUoTT1edjZuSD9kRVM/QWVGaDs1VnZpJVdBWgp6OHBpNWdH
TD0qeHQmZF9BbjU5c08rYXZmQngja2l+UUMtYj12P2xeeXFaRTE+eHc8Mz9sTCQ1OzkwNDdFe3ZS
TVoKek5JU3pzbXlDNHQhTTJTRVE5fFR1JXdJfVNSQWVSKnc1akRSJkY3LUJseCR6UmtgZHk2TEp6
N25XUn50clEhPSh3CnppZVhRcnYoZGg0Y2pISlZHYmY4JmVUbipNV0llM0tYeXFTRnJvcSR+YTRV
NWZVN1ppVnY9eGxCeH5GSFZxbmhfOQp6ZDlDd3AoLSsjKk9zKENuP1hveFRRSUR1b0xHMnI1VU10
RVJYLWVOVzNTKSg9M3o0SSo+U14jeF53Q1dBUmsrbkwKenE4LTdSK3Itc0psUVhYJjdBWG9SJmZG
JHZZT3peRTNfT0gjcWQqYlRQTUFKa3RPNms2NHJMKik9aSRnYndvNFJwCnplTzx4QFdUUEY8aHk5
YGYydVdecyFKO0lxRlNpVzlmKH5XTilFV3pjYStyV3FOel5jXmZmRT5DdE5TUHtjRmVITgp6WkIx
KSNTRFo2dXMkYTN7SlJMSlR6fmVAa3owVUZ9TCZASUNzdiFUTnNZJWZEYEgxKjJYI1RUZig0eT9e
NWBseXMKem5VNl5YMnZRZ0B6XiNDVlE5PmFiSDN3Wm8xbGkoeDF2az1yMCkzPVdUNDJ6ZDIqZD9C
KDB4ZDI/MzB1UVRIXl54CnpFIVNxUU1gS0NLSThsPkklcFN1SjE3TW9pZCNAeXxfTH1UZkBlKlJo
PHwxQXB6KihSaV5GU2gwdmZOeVNrfDtoQAp6OVojZjN0XzQ2eEktLTVySngpcFMlKztyb21kQjB+
SjY0ZlA7RDlhRjsqb284bSNGN1pUK2tOOGdkX2FOUlBtPXYKek1lKVdZRHsoWWl7QlRAdUd0dTVw
cH1pJjBAPm4pOFI+QG5pRUAqTFNAKSlLanNYbklOPiRJczJMV2RmbStBTDRnCnpNZXJxJlpZKWkq
UkVYQXshe1VPRXRnJVRrdFRwKmE3RW5BP2ZhciRQdXx6U1FncHEmPCVwJCljVlRrc3M7JEk7UQp6
WVZvNXI3RCFPcmlVTWpvOC0+P3FCVjRTPV50OH5VIT41UzdFWDBUZVB3V3t5bDJSJGZMc35YUV5r
VFdxaV4tcTIKemtfU1lIbHxzJlVDYVhZRiZDYFRYJDZGanpxaDZrPiVgZE09TzRWZGdENzJ1TVJU
LXtLcD19YXFjfERASnpZbm1lCnpTdDMwKUNSTWxBJXE8bTE2OVBlUTNtaz4jPEVgUjw1Jj1yTFMj
O3pZTnJtTT05biZJPk4yamFQbDNiMjhHb1pRRwp6cSlQT2RqTEJea05BPktEWGtKczZ6a3o3Y3BR
cDwkS05DOyg+Rk9qUTE9dWxJQ3NIZGtBO3B0TGJDTUBaaWVSayUKelhRWE9qIXFsPjFUdlF3dEl7
IWU1aXl2R3IjM1EjPUFKeX1UM2tXKUwmMiUtYko4KlFtayZDfnhqTz9AMkNzYHNACnozNUs0Y3B5
WHA5RVFKNHtBO0tlc3BIUnQ5QSRXIXsldUlnflR9S01CY1dVSDZ5YVFqfSRTN2tTN0BadXdXeG5J
PAp6R0ZmLSZ7KCYjeEltZVB1PHtWJlgtM0M2VlRZSnJCSUo4Y0NpMm56aUg4VDVPbnZNc2BGV20j
blh7NTwqYHlHNHoKenQ9e0pTPkl2MlhxRWpEJWJsOSVzVHp1ek5kWmxVaig/byppa0ElP2k1cn5k
T2ZUZFBYaHNTbWY3UmZ3I1Z8Xl5XCno3OFNub0N2M0V5Z1VFOV9yaERaK2shOCg2WWpTUCtTWW57
X2YtPHl8VD5TcStiJVhxN1FBb1poXnZlNiN3Sml6ZAp6Q1A9Znx7ViZJaFMmYEU9I21VbCk0UXYj
PCpOSUcqa2lWPjR6PFNfcmk+IXFoWURRV15qZCQya0wlOU9UdTNwUjEKenp7end9MVM+aEhSdk1u
SnAoaiolNl55PClVdmBSeStMbGw3QGQkWmYhaHhBd3IodEpsVmh9ZmRAWH59YVpKVmU9Cno7U1Fz
UzljUzAwN3pYVmgjREcjdUE8RUNgcEB3dCUoJT5CKDREb21BZDdmYDNpRlp2MGQ4WThebzRRdEc7
OUQ5ZAp6N29MMG1GOHR4SztUPFY7OUpyTCFrPlpiRXt8ZWN5U1lydGdzaWkxbFI8MEtEenJJNjBf
ZVpIKjlVPlBrS0s0K3EKenJtbjNaUHZyQHtKV0Q2dkxSTyYqSko3cyU1OygpM3dYVjBjbkl9TTYj
TTloeiVUdklNMkhwenQ3YnZkRHNeNX0jCnpSYGp3Q0pedkA5SCgwJT4/eUhJPlMxYDZlMXxXYUFt
bng9PzRHKlNSOUd8TEtGfGkyODR7X1pqK1Q/TGIrZEZWYwp6c3tYJkUobDhgZV92eC1ETDZ3WkM+
blN8d2BBXmVwXiQ5M3V7X2hCb1A1ZWQhSmppX31OI090Pm19Q3g3aGhUOF4Kej5MWkQlZ3EpWnZh
dDhvQlFYJllDJU98UlErLTZCfnhUc1JQVj5sYFR2PzVVT3VYRnojeCVxUk9AYUYqanVzKzlCCnps
N3puMio+cHcoaVpUKzhyclNsSkFzTGEyQXhlKmIpSkFadVJrIT5IKWw8V05nd1lFc2ltdlVjITQh
JEY1ZGoreQp6PmxCcyV4VDVieTIrT285O3s2RDlHclhAQHVDK1V+TC1CIUxOMCtiYj9yVmNwezFW
Sk1UI19GPT9NNztjJEc3fEwKejMpbytwVnpsK2N3fGgteSkzRz8+Q2s+S3VqUXhjak5fXmopX2BX
bDd4cHZIJUtvRyRnU2gyamVzX1l2P0R8cyhNCnpLcWs/QndhYjBgPyFLNzQpcFNmeUpoVWNWPnZE
cUo9aj4zM2pueGFaYnw+Y1IzKUpKK3VTZ1FAcitGPHEkLWROUAp6LWlWZiQpYm07WHZ6NzMrUHVV
ZmhjRkx4RGRSIXNfNnBoVH12bVprJkxEfUNPeV45dE8/NFM3ZTIzdUd2Zj5GZ2gKel42fEdaSilq
T3g/cChTKVZGeDtabTxAX0tHJnt3NTVpY2hPbXI9bXtkJSRMV2RUQzMpWD1PI3tCJVojNjxvbnJh
CnpXdlljT3ZWezA3O0RmZno0elFrKnp3ejspamJpZWZJKkRTX1hZe3dGVXd2KDsmQGMlYy1raz4t
PVBNM09MYDdPPgp6U2M7SVdnWiVoXnBQY3xaNlRTdE48OTh2IT1qd3YpQ3xUaDwzRyZ1OXc2ISgy
MWRFTG4zQnRyVzZJTDtlIWs/bmIKendjKkRKeDl1JWRqTis7IWhDdWpOZlE5JlQwUDFQc28jTiRi
ZFB4dWVVQSs4Xig1dDw9VUFxPk8wbkFDclRrJmNiCnojZlE5TlZGcWE/WlJ1VmotJjxIbCU5bmNn
NDE0IXJebUE3d143ODxMOWtjOFVlK0J2cDBiPWNta1BFTnpXM2BSUQp6SlRSU30yPkhtaF5pK1ZT
cilKUVQ4JkF9UlExOShkSmQ1JlI7Qz9SIzZwVVlxe0dvQ0l8SXJZOWgoRXdMbmVjRG4KejNuSmF4
PEJDSE5SMVU/Oz12aCtJNjhYZU5DI0FwU0w2Unx3P1EqbWBUeil7Y183bDNfc3IlZyZnVVgpXyRp
fkNsCno9Jk4tOUZjY1VqZ2hjMU5sa3NufjgzTGBsTzhjNzxxJF9LTWQ0ZiVzZGktdUdUbn5FbXRF
bkxuRjUxdHN1TGVEUgp6M3poO1RlZHx7SVclJmVZKntgX3Vgez48cFpKejxhYzdqSEtAKDNVX29U
MXgwZFRFSmVDTlYwaDdxaDl2bjRAM28KemM0IX5SNXF7bEgzOU5ldmxAfiVmVERPeitUdFpZZD9r
Vll4MjVvdy1ifnhUTUMpV3VwMTcjI0NZaHx8MnZFUHZ8CnpXVSVYbWs7ZHxhTH5ObGBVKnl6N1pt
YnBQd1FoWmRHbTQ3bUxFKzhPKTNqe31VZT52cjRvaUlxaWUjfTROMmtedgp6X3dBS2B1bnB3PENB
LX1HRmRqPCRhclE7WW0mfVdAd05FXzBGVl9odjV6YStaMVFhWG85WnVjajYpIXo9eW47UkUKeik7
XjU7dklVUnA1UXR7Oy1INnVGLSU2KUliVT5oQC1iK1VlTGNTSShSVENfNUJqVGkmQShELVBsZ1Jw
PDVyZjdCCno2dkhaSlV6VWB6eDN5MjRIbUBpUGpefFJoNklMekFLWjhxR1liJio0dCo5JXV1KXZE
IUVGI0lNP3h5WXBFTmohcAp6UkJ2dE9RVUUxMmxZZm5JY1JSZiMrYkxKKmtFN2w3MVhOPVpBdl5s
bUlpa2Y2JUZQfWQrOC17LXpMSCR1bSRMUmIKeiNLRSRjQmZDVFBXZlBnVFBCeG1GcVpyUi0lMGg/
aWNzckZTQlFjdjI3WXd7UEBsNkx9cmZYZHdYdn0yIWczTUBOCnp6Q3xZOGFCVU0qTThiVD5YaChN
ez9KTyFDNGhJfj14MCQxNHBRRHBeb3VhO3Q4UmdxMHhpKm90Q2QzYF5hP3Q8Ygp6MlI9eV5hSilv
JTU5QS00JFA9NGZSNSRAeVIjT0xrQk1rSnEybkpINyttVlVwQEhiUURwSFdYfUlWaVdCMDh1eSYK
eihkdX5nMmI5STxEa0s0PFo9KXxHJT4/byU7ZFI1LTI8QDNqYE0rN3VwfUs0bjY4T1RBLXFkWjxg
PSZxX25oay0kCno9RjY2WT8yTmdqRlBnKH56KmlsWVRPd2RoK3UkeTB5Y1pKNUUlXzNMY3sxQ0At
YlBoX0MtX2tFWkJ3WmZXSV9iPQp6N34rQnVpeUBmJTBrITRkO01TRDkle1FDS20kQVE8eWxvMVJF
cGpLeTVrWmdaYX5PcmRZJDJ6XlM4YEBxaTJ2Rm8KejB0LUtuRzw1Y21mTm54fTc4TG5xclZ6NGBw
V2x5WExMNmg4RExBMys1QEljSilvSjFlIUY2PDIrQUNxa0ZFUGZ6CnpTbFAqKD8xR3ZqT2JfO2JM
ZyZfRG87Tzl2bnFeLX1sXlV4VjleWSYwJGx3MUApUF97LTlyb0lnX1dwPmZuOUlJJgp6OU1gKHp6
SFc1YEo1X1FMUlg4Rl9ie3AzdzdQJVF9UyZHUGoyTTs5JlU7KmFmQG9vTWg3WDI/V01GJCtuZmJS
cl4KeiFQRzIlKmktVHZuVmw/cD52NDRZPH47MFBfWi1Da0grdGluMmB7VlVqZihgJng9IyRmaElk
Rno0Rz5lKExXdyRLCnprYndxSVY4SitTSytgR0clUWM4ISNyYX44c19QN3JUYzdsfHUqKFJAYWBS
VUowZm84eUpNMm0rYFhANGY3Pjkragp6V2tMYWpid3V6Y2dEaG1XRnFMUTlDZH1qOUhxKytwISZ1
VTl3PCNDMU9wQWlzQy1NKV55QEQzJVV9OU1uPzMtIUQKenc4YiFpIXxrOFUtVytiREdifGZqPHp5
P0lgZkBCcnhFY1BJeVk8PTVYZUc9dlkjIX1taWZiRilQUD0tK3ppTWdVCnpvOW9ocHs1QEt8cGc9
Y2w5a3lINXB7cFhnK3RsZW1YS2ViMk9jeiN6KmE1RWgzekx3bzE+I1E0eiNKPkMqQ0hNagp6N1lp
dCstKGIzR2IpREVtMEFYaFlgRU97VHstJihTRk5TQURgbjhpeCFXcXhuXnEwayRvRUJaPiZfMFNN
alZSNVMKekhvJiZqYHAmVjJnNFl+LUZ3YFVtWkh4QFFVQ1F9dm1zV0h9Tkx7PGQ+LT44N2NtWSsl
a1AleGhFWEk2Tj9wO2wlCno9SE9lc2ZwdXVAP2k0QXNUKVclbmNQZkwoanpRVlVie1I5YVE0PD9l
bmMzN0dZPXJPYz5uYFpBTDAkPGdHYUMrQwp6WWM5Q15xP3hYZEBWTitJYj91LTZYM2AoSWBCbXlH
R0A0LTtKZFBhP1lwMCZZdDJ4SDQkKU01ZHBBXmJzbysyamYKemZjQllGckBAVDk/alk1USo0cCYz
KE9SY29tfSFsWnZtQVJJVm9jT0pQQjBgdUoxfUo4Wi1fPXNpPzxCYVBCI2JuCnpaKWszVElsNzhy
N0JWQSFHIWVtdEcwcXFodD9eZyEmKEwjZHAofj8/bSU/bjxWcypAMWxIOTZ3OXFNcnc3bEdCSwp6
ZD9sN34qXz5qSik+VllIX2hyP1VaMGdrejJDVjJKXzU8TW5JZzFsWi0wVXVRYm1pfG9FdVVfQGdn
TXdnSGR5akAKejYmcUVIMHFEKD1abWoxYlZCRXZFb1BleCpfKXFhd3A+QFZ2SzVhYX10fUtUM0po
ITViOURKZChGbTRzKGpBXl4jCnpMbmNsOzNBSzlCUjRjOCtLfXwzZ3k1KU9+UnhzVk1lfj90Q1hk
bTBpPnQ8SkxOOD8oTClBNTF0SFRuTUNOR2VVVgp6XnlgZ3JXZFkmRGVadUtsbGczdU5idjIlbjwh
WXhzUmFrLTVQUFgyeVoqbjdAdCN8NjFvRmJRWSVNQHJNWSVaMXsKemJVVylUPkNndGZZci0wTHZS
KUoxMFZmPzZuSHJTcyFlJEI0IW9tVnI4anMxekBYbnRuUnlTUiZJKnRga1EoeGNeCnpwezFaY050
Y0swME07bjs1VEImZ09FQzsyPDMjOXFTaHBEN3diYGFQPiFpd2FyKkJZQVhXZzs7Tkg3UUI4dT9E
Rwp6eSUySig8VjZeb1ghZCRnOE16RXpLIUV5ZTdpUDZUcHt8THJPMzBgYjhCODB5d25TdHlGY19H
YkApM1V0QjQyaGcKei07R3YyKHlDPk0lUSg3QTR2PH1iPmBSUFhGZjg1cnM8YFFDM09qRERQbXtO
YVgzcS1vYjE2SDxOZCs/XkRCXnVvCnprWn5JZTRLd298NnFrdSFOfjNaR3A1SGNvNURXKHQySiVI
aWFmRztRXyZtWW1BaShFQ3F7Mn05ekYwJVV2dU1BWAp6JkAjUmUobS1WcW81T2ZwJVgoLX5ne2lk
V08tWHg0THgkKl9oeyRjLU5ePWJRS3NVdzQjMHV8Nklqc1J0e0w5fn4KelkwLUkhOCkmdTlJNFJP
Oz5XOSR8ZHVjRjVWe2c3MGRvdmF2d2hMOVhufjdzI198QnwzU0duWnRzRklWMlpqPSpaCnp3PF9D
OWBMeGQqK1VKaHJ6bDw5PmFlN2FZZmdhcWolSG53JF9gczl8Z3w7M1Yqb0FnWUQwVElFZFVXeVZj
KWRRKQp6JmVBKFJhVlhfX3g8MWRqUD9ANjdiTDthdzN6WkE+ZDB1XjktYT0pKEtDZUtaU0daOGcq
WElAS15OSlRMOSh+QDAKemBuPGB9JX5LWXR5TEZwaGg3ck15OFhfXy16T307K0MyTEZpbloxZ3VV
WXwxPj4hKn5PbDEpOHkxMnZCeXVtMkEtCnoxdV8lJGVHI2xCdTRzcU1xSVZ9U0pyP2lnY0hSMzJ6
OX1mbWlXKHdzaGBnTT1CPCQ5KSg+cztQJT9GakApKWg4OQp6UFF2NHUpKWpVPFBRWVZNPmswPVIk
RHJwbUE1XmglK1pYfGhwQjxmVEd1K1lIY0ViXiE/VnZGY2NGZyYtTCVqc2UKejMkSk4hKDxlNmtZ
ZFJka0tnQSY1VGxvaXF2S0tiQHRDSSRIVmMjLSNAZmhhLXdjajY0Qz9vcClVbmRrI3p5Q31eCnpO
dU9VRkgoczFTZT9EN1c/M2BjSFZhWHRicldtUiNMPW5BIzhXalEya0ZzMHNUTzMkeW5sLXh8ZmZn
aVRrTWMqQwp6Uy1eezFYV089dittS3c7SUBgWGIrPldQRnQrTzRkJno1cFRsYnZgXlRjRXkpTzww
aTVeK31vNkVUZiZnNm1GPlMKekU/RHBXLVMxVSpiRyFOI3Nfej10dUk7dTdNWH1sZGl7YFljUiFj
WkhVZkY3RTlXe05RST1RdlgpPj5vMyh8TjZCCnpfU1BDWm8oZnZhOUlaN0RKbXFNZ0pLLXV9PldN
cyFKdUx8bGEyUjlkYihQSiVQQ1pfX3IqKEh9ZCtWLX0tMy15dwp6bHdFM2NGWFI3NEJNUiVBVGY9
WXJvU3JDTG1RQDQ0QC01KlNCVSl3fDEhYHdmNXtqOEQ8MTBrQVVTRk1lOVJrKGYKejtJYk9OLU9P
TiY1OD5yVVJfPHpWJHBPZHZ2X3BYKHc/TiR7TDVtKUc3YDhzYCM9NGc+MUlyVFg2aUI3Q2I7Ul5o
Cno+TG02aV82eW5sdm0/X2JNVyFXLU91NE48Wmt0fjZmJHxCVkkkNEx8RX5BQiNIIUskdkc+SURH
K0w+RzJoLXclNgp6VE5tMkkoXngjJiNnaTlMcVFNQms7V3lyYno5QW9pMStkKUMqQCVEQnAjYC0r
NzNXODUpYlBLZlY/YTEhV2ROZ1EKeng5Xj5HQmtJfGRkaXt6cnRqcj5sQDE0NnAyWmowYD1XPHhg
Zkxwe0VMK218PWExKmc+IT55TmxkZGkoXj1sR0BpCnpvXnA3M18mWDl8aSpoWDNPVlRhM1o5fEJ7
YW0jSHdCNFhFZi1nNFZeIzhFRTNjeUBYRGB0YXFmRD1+RT8jJlFVQAp6SSsjJU41fj8/JGRKQD5p
XiNMTjFUMzI0KHN2RTlIc0YzPWlJZDRXWV8wUGtpLVJRNm5fQ05keUdLVVl+NTVFZVkKejA0eXNR
P0R2Y0c4STxsaDJrQm8/YFkwPkMrVEIwZjwzIz56RFNhbFRrSCNPfiYmPlE0KmhnN0Eob3UpYDI4
UXo2CnpgcGV5SmIpfmYpVDwjWGZCXisxfS1qQX4+QVJ2KzlVJmFAfV9zOEc+NGZCZDJIQihGe1Zs
PWJxcFgrZmQ7fVU4ZAp6YiVYa3BMZmx3QjEqVzsmWV5Za04kOU5jYU10KSgxSChCaGVlXnVaaDNo
YnBkUiM5TCE/R3NLQ3lEKFdBd3BtYlYKenVSQHY2RGxNSCNkbmA0WDZKbVdnUkl9cW82NDM+fkY3
MFF8PWtfNzgyb0FeTEdueV5PNG1Lc1QhNFlJcSFpekZsCnpDeClybStAPj1XNjVJR0R0QTYodUop
Y19JVDs+dWFJaGBJVi1HZ3EwRXY8VT4zQjNaeDJlM0FpMHNDdzwmdm1GbAp6Xz5VeGhqbF9SOXd6
SHU1TTc9WXg2eTg1dUctOG1qSnxWMUUyJiohUWclIXt1UiNEaHJDYUB8QVl2T29uWVFpY1IKemhC
YUdnUlUhWDEhYz9aZk11KTJqZUwxMERpYSRKI1JjUkQwNnQ5cVBOK0hzTzt6ODY9QEhBNDtAJGVm
YCQpbSY5Cno2UCtpQiZkbyZVUyg2U3JzbjlVV2VqVCNZYSheNT9qSHk7MGhSeHR8R2V6YEJ3ZDl0
NU5LUmBrTWtFKGcraXl7Pwp6VmBOfGg3ZHFCRHY5Z2FXUFF9SHAoaXswUUZ2UTteX1FkZ2BTXmVg
b1BQekdNUCluI2hwJm09OU1HM1ZxcCUkM2sKejNkKFNrUD07Y2Ztb0A8bnY0fXRzd3F7bHpHaXI+
clZ2bnJIcitVPmVvVkZoZXJtISRRZ0JGfDdTQHV5P3BRV24pCnptYTRqRWl4MyR0V30rUFBpXkBW
TmFwND1HNmxIP2dRO19YYlBvTV9YJDE8dTE0RyskZD12Wl5DSUhwJCZMS1MxNQp6NWxgNCtyO1pl
eDVnP0BIPW1laEYra2d7JCp0Jm9vKW5gKiYyJHhvenp+Kkp4U1h4Ym1uaDhnKUYlUi1WUCNRZXUK
enlURF5WQCVSUHRJTFlMWmpraEEqLV5KRkE4WFB4QDNyJDF9SjEoe3pwYChPMlRGJWxBeEhFQ2xk
OW0kd1Q3UzlJCnp1MXVDK0RFQiZgXnZaYiVEcGRpV1YpR2tRe1RPNFBsfHdkTVREUWxEVDIzOFVy
MEZrO2NrYytKZV97TnUqRVhiSwp6NHxjPE87ZigtPHpmWmxjQHFRc29sIz1FVThea0NkI3ZfYSRC
Sj0zNTMjfVl4bDtNOEx1LU1FMT97IyFJamd0UEkKemw3Mik8bXp6bng8SmYrSDZlJmpHcWs4Tnl0
b1BNOHY2KG9fbW1+SkZ0UCF4UjhmWDhtaHlaKj9lcWxxSjxGdmAmCno9PHMrVmAkcj1DT0N0TXNr
VTxaVFVzI3BxYyl3b1RnZ1Q1NFBhdkcjZyEybUZKYTZIJnJPUiEoPEAwPnwxbDxoUwp6aWVyTTYp
WXZHUjRPezMke2YwUWpXXlNDKSt1KVI2NVJDKyhQSkUtayE+ZmR3aiFJQ3pyZCM5bTwtOzZtRUAp
bSQKemlAYjQhaXZnUD81X1RhcDV7UWZFZnFmSHVgbnd6b14qezwpSEB6ViFSSFBgLSFvPz1SNn0j
VGUqMTJPVVNgK2pwCnp7O2p7O3NhKGh3ZDM7TWUzWEMpcXg3P0Y4KkNYbihjekJMLTxpSmNJREVi
cmBlI0BMK0Z3Z0BGZmp5Nz9mdylaPgp6LUNxdnRLWX50YjxwS0xESVE9bGtMKD9jNHBKYHBzaSlv
YkQrd0cjVWBiSmFacUY1eHNAP01hOE1WRiM2TG5OMFcKemQ4REokT3R1QzI3c0NCV0M3PF9fWkd1
PGA3Iy1lM0p6QD5zIWRLJUQmdXRPU24zYGtIaX54I29HeGxAZnA8dUN9CnpQNT5yQl5iaUl9X3or
c3h5RX5vKzBEOCU3bjYkcXskaTk1YXJpYGlZMl5AMXYzR3FoSHdEIU9eezBnZ197WkwwJQp6ZiQ8
PzVCQjdOd3VAOGJEPXo8dVlxO1QyU0pFI2JzaXdkSlA3NWU1PWtVO2FEQEpieEIhbT9lP09TRE5L
NH1aNzYKelRZJnxAbmU8biVPJUhUVkltUDF4JFUhe1Q7WTB8KFcyaExHRkxGK3whX0dgNHU1bWNT
JF5CMFhkR081eyohNCRICnp0MHd6V3dSckJBc0twZWpNUVc1dyk/KHtjbzs2ZyFIYk1WdEw3eXJD
YFl3THgyfDw0dzBUVE4tTS1RPilhcGNSMAp6LWZiPXwhYkZVfkN0S2BQelg7V0BXcCMwfXFkdnJj
KXROeyV3RjNxampITVpFbXhzQFcpfHRVciVmfDRDeiNAbGgKemAjek1gPDU7a0UmMyRtblVjcmtN
aXhiKncmNk8tKTNWSHt4N3QxY2JrNTdHP0JPKys4ZiZfRVNlRXJudElaOFVkCnowTTA+UUpIVG5U
MERsdyhIfkdIQ0I/b0dySHVGaEhuXnF2NyFaKXZpYV5iKyU1byNOeTAzJiE2ZUM8UiZ5JGNVUwp6
SVBWU0cldFBObXAhWHEhMT1gSFRSWWMpKG1RTjNlWVlmOHA8QXx6Py1Tdlc+SE5AOEVJcVBLMXJ5
Q3FOV09kS2EKek56OGVBLTVgUH5MV0lCSEErKmc1UzZnI3k0OHpfWXptciReQXhJVXE5NShMYEBf
UUAqPGhoTWxoQ2lrWS1YWDlhCno3ZVVAZE10VVpHPjNLTUc+KCpeP0VLUVJZdXdzPGQmY2s1JHoq
XkFxdGk9bHNpUlp2fGJQSCEjakFpS2RDZVlWYAp6ZkcoV28/WD5TZ0pERV5VVVBIVEZHS31MKSFV
bDlCX007Y0Q5YmhaX2h7WTB6cHl+fWNPVkBjRil1fEIpUCk+fUQKenV8JSViJko+M1JONih7OGR1
aSpmbzFlfnc3aGMhZEFNbl9me1FnZHg7X1kkbXhWajdyXiRfQ2oxZEBqRE1LNWpsCnpvd0lycDRr
fjlncjE2IT1OYGMqZT1pfT1ETCRlNSNmfGN+THl2THRlTGZoaXcmdGJgMDlhRmpvTDBgfH4zZWI5
LQp6QV8pUUA7KFVXeXpCUl94eGg/dmM0WDFiPGxaSU5PbztnTG57d3ttY3JpU3t2aWk4RFRoO0Rg
WCk8ZVdBVD5VPTMKemN7SGRMWFlCeDlaLUVDYmEzTXx7ZyFvTSspUGxLdlhYS3lMeGUwU1A2ODBB
enp+YUlzPllsMzEtS1kjNWooJnRQCnpmY2FHVzFeTFMxTmw1d1VgbFJ2NnFDUGQ0TUE4Oy1ZQChn
N1dFJiV+T3tpY2VgalRYZipod1JXayVfM1pPYHcpRQp6Nl5wN1RWREhoZTZ6NTl1QCpnTnJSRzQx
X1R4THgqc2EmbSMrPWMhP0hyaXBFfDlyJXh5JS1uVUJgRWByWGRwWUgKenJaLWkxQnRKNCRjJHor
eChsSCpNcX5falNzNyVIVjUzcihLVlNRaDJlVUNGUCNad3dtQ1JoLT1RRGB6Zik/XysmCnpDeilA
PHZ5PTQzYVA0JjkzeChOfmJFQnYoTEwyYDBNNFlUSWxiKCghPWBUa0pZMFMlXykrMj5WaihScSFs
Sj9Tcgp6czM8d1VMUCRDRGx7e2x5UGF1dmc1I3dDKiFFWTNwNUFCOHdYJnR+RTZJMGUkQTg8dDgp
ZilGSUJqYF5xe1RXU3YKejVEZ15IZChhcnU2QnJhRmQre0o3ank8cjAjNHlHeGlzekROKiV6aEZ2
enwjMnl1OyMqK2R1R2tPazFFOyVXeEtOCno1Yz9KNCpqJE8tZGdvelUlS0U0KVVCKnxAYjhwaX1i
aXpfUWVVfn4/MnE2OUNBWlFxX20jSFk2PHVHfFE9Q0whJgp6Y3BEbSlIc3B5R0RUMmcwWkQjOSR6
b3VJfjMwamp2cWM3dUFGPHtiRXRKa21RVjR5bElxcnhAKGk5ZXgwaWR1K2EKeilORmZOT05LLXAq
cHI0WkJaN1kpenpadHIzXnJ0a18tbHEzRUAtMkA+UkBWfGIoZUpkUEdkJWY8Nn5JZ0xwWEFlCnpn
OzViLWZKa0t+SG0ocTxMQnk8OSomTDA3Iy1DQWB1JWJmR3UodXkmUURvZWdGUlZmfmRoSn18RSNe
UUM1Q2JhSAp6UFRKUiEralNoMzJWVEdQUTU4MTh1aFFPaW9UKHNkdjtjeFo/flV5ezNrOTdXKjxL
K1M8fFhkWkxeUTkzJW0tUyoKeipYV2hDQ249QEVUazswQk4yNytwOGM/c3xVIXojRTFqNHc5Vn1n
d2NFOGlWejcrYl50YGlaRExzdGJ2YSM3P2xMCnpPdTcrPSllVi1zNTJVS2QjX0BANHdHYztpSV9F
cE8jZy1LUXBDJiFhU1g+XmU7WGdKVkpqYkF+RjF7OE0oLVp4KAp6WkFFSDZPfWJTWGE/TnR8NXI2
bTVNSG5LU25gKWI7dTBiPzZpNDA/RyEwbUlUTTN4S1ZVbU4+TylaYVRCOD04ZDMKei1XVHNsayt+
SHdTdjg/X1BsJHozNSEhSUpCO3w+SHdPRlFyTzRnWT8kMW47P1koT2x3blRwPlNlVmpOak16Xk5U
Cnpvc3A/I1Z9e2wzJFMmYDhXUkBGX0VzcFomcW07fkVFN3t3MEc2NW91OEJtWk9vSHxfZGBjUDd8
Z148djZCPD9SIQp6MWpIU1U2MEdETVUjQnZQeGBJcEZvNF5zTT5jTnN+RUl1SWFJbSg3RGNfdUNT
ekk3eS16K2cjJGc3RFZWNGV+JnYKeklKIys1aW08Qj9RKXotdEJAdyskcnxTKVAmTGJVNDR3bFdh
LXpkYVNmV08qI1Q0dz80KjFCb3N7KlZ5MW08QTNCCnptcXd9UShXT2FjPkQoVzZUNWx5TDxXPGJz
TElZSGdTM1d+fnNAKGlJcTFBT2xtNF5JKVZZX2xZczMyO1p3RH5Ycwp6JHApa3tze1ZCdTY7Pkch
e3AmSiVobXtlIzR0K25sJmt1KHw1TDNtKCkmbjhueWRHQH07RDE3KHVDfjdFPTg/d30Kelh4QCt+
eCtxVTlaKTQoYVNGbU12LUV7MVh4JntWIWxiYG1QamFrTjVReDAqO0NjUiE7R300TExESGl6aV4t
XnAmCnopSGgoaDtrQnRRTzJHPVBINT85Jlc5VDhTPkRQfmo+eERkUHY8KFF9b0tLQz5ofXJVT1B5
O2UhRjc1UyV2MistWgp6SWFIJEQ3USM5SG0rNEc0Pm9ZQHY2YihYPDVLRCpNPClhZXlZPWdIUjhg
SCpPakR2ZkIzMz54VzlwdU54Zmg7bj4KelZoJGhRdE9HQEEyN2R4ZGZTRnI7aW0jUSMoWj0oQGZt
PTxGaFZwIzU+SWhpI01lYjtNcDNpfHBhIyo7Xk1VRUBrCnpUOTBGYGQrdFNSLThCJVY/ZypNcCl8
aTE/VSFVVWJGVkQ1Qm5Jc0pfKWl9OGpEZVJ1R3YyfmNTeD05WGxHcSQpJgp6aTMkaTFGQXBCM1pk
VlI8LWdMViE7OTJYVWxUMHw4O3RAZmdjeDZLLT9Ja1N4YyRoN002JlduYW9veWk/eGg5IzgKelZh
QXE9SnNsLWozdCF9Unord21EN2ghTkRWfW9zY0k0d0RDWEN9JXNSJTEpVmBWOGhzSU9PTkFIZ0d6
cDdob0tVCnopKUVPLUc8SzB1IUZzbCYlX1RNeW5UbFdWYHB7QnpNZE0wJUFURShlRGR6KE4rX3Zv
QlJBfCE3QkFWOV8mRV9HUgp6YHt0PGBLR2g4JHpUZmI2cnkrRFQoaEhCUUE4WGNfQjlrKj5gUCU1
bSl1b0Babkx7MFVuaDtMb0NEYTZjfElgOSsKem9mM2pVM3VLOEY1Yz1wMVApQzE1PnEpZmlRUU8o
OFZyNGV6Sjh2ZiFDKXFEZUpDZT8lP1hTUlNuMHtEZzRhfWwyCnpnUlFvKjhFZSN4KCoxMnY5NHgl
Z3hMZUpBJCVjXzEmT2ApfEhWZy1uRkBEQigyI2gpNFN6c0VER143KWU1K3lydwp6T15JNEdMJX5z
PG83OTNDQzkxdkVyWDQ9aFgxV3BhMm54e2wrR2ktKCg2dnxjZ1gkSCklZmZSNjM5dEsmaUoqYXsK
ejUjaHorSFZmZ1YqKFE7Zm1iSV9ISkVBeSUpWjsyZHw2UHklM3JgSmFZTyRfe2pYaWVPeS1Kdjw8
YWlJYEs8QWZ9Cnope1NTTlFQRj91XzQxTVI9Izw1ZzRXcCNTJDxRJm4zbX5mXjU0SD1QPiVkbjZZ
ZkpnND1KdilNKEc1a0U5PSY0YAp6YnB+c3NFPmhDIW4tLTBmPnxxKSFzWSNVZDdscmliOzN8Mzlx
ZWZBOHJEeX16UFg5X1BvKjtxTTBudSRjbFh8ZDIKejgxWF99SFVmKkBhbzc+ZnQ3X1VzRnlGMjx3
OXsyPEZObXhNcFlPd3xDZn1MQU14ejhSKGQxKiRCWkd+aEVvOVpyCnppfWh7dT1wXkM3IU5naE9B
Kn1IM200MW5EQz9LfXo3ek4+bzchJm5hNF9xUUw1NlZAVDg7YTJVeGdvZz92JFM4awp6M0UlQShs
aXRWQyZXVmNuSlEwY2YwUClXVTBFbDdRa0RnN0A/fEh1TkhSWklBWHNfZS1tT1VISyE0WnMxakNt
I2QKelY5XlhZI0FgP2x6QHhhKlFWalVHO15LUlVRNkJfIWFXPTNVeUo9WHJ0PDw8aW45K1BPclhn
Myt1dzNKN21ZRjgwCno2THU0c0ZzdiQwVSo5XlMybzBiUG1laElqQ2A5WkdTNnEjSmRhTFN1U3tT
WStyczI4X2hXakYlIS1aRTBkak9zYQp6WH5+UHVEVDY5cihLQX0tXyEzNkNXI3VmeGYzfT8/U0Eq
YE41WjNOcGh5aTxgbj13M0BoRUJRNipOcUtAZ0pBM28Kej9VV2B9PEN9M2s2aVRyOUY1Mk1zNEc1
YHtnSil8VEVFJUE5Kzgxa1hGYn1QO0diTnxzTUdqZ2ZjKU97V3Ukc087CnprP1lAKTMrPDR3akJ5
TjZUcXMxYDJBaGVrNSh4ajFYVyluWTVqQj11WmlkPkIoSm5HPjRzaXBNNSFfR3tfaFVKaAp6TGhn
ZkdNa0U0Kk9BTn4qbVoyNmMpNSEhKllsV3t8Si03d3VDSV4+Ymx9REpxT2F7e2o+RU0paWg7Sz1m
UXJ7QkgKejIpazQ/V2Emc301eDRWVHFAXmFCen17enBKb3lpRy1YSlgqPEs4Yio7M1pJODlJeHE1
PyNuMExPPUA/ek5ieVZJCnpYS3NQPXRgZj9hWFdCMGMzXztnJFN8MDx5JEZhLUxjNEhJNkYxREJJ
alI7QHxXfT43KkVWdUMtQllqfjZNPUVWKQp6QFBPTUIycUU8dUJVe0pMaitgRDJgJUdqcGB4KXR1
NzQhLTVDKFB8UDxgX1J5SjdaSTJCREBLPFV4QW92TzlzaWAKenhadz0+OClFWT1tUVVyakA9LXlh
e2VAXzQlVEczVWckJm92SSY4SVNrV0FiVVg9a2dMdHQtb2tlQioqKV9RdEpECnpWUTB3RUhGMkxD
IWt5ZThTelkydTZHKC1ALV5kSGB6ZF5YUWp5QFdye3o4dT5lWiYwKTlEU3lWZ09RPE9iPTVqTQp6
Tzsleyo9Y1dyVFZnflUxRmhyWUU0NDR8LUJpdXRQNm9aSnFvQlowYk5tNVNwMVU2QT1iYitrO3hv
T3oyO213SkkKejRkZiQlVXx5OFUjYiZRZVpIQWI7Tko2c015cFN4JWR2LWFOT1N1KiFsIWNPJUE+
d259c0ktPUwrVDRiejVXUWdZCnpKJkpiRSRGP0xtentqQ19Ca0BoQGNUK1NrQktHX2slaz95eCZj
P0I1aiE3PUA7fHMoJFVIVjVIRUY1R2JgQDd3Vwp6QmVKSW1CYVZ2aU5QbCtgejVCUTElKkVzWU0/
IyZ6LW48X3QmVnBmYm11dlhiP31eNGskay1nPFZTS2MlWDlhSVQKemUkRnFeSEc1NXx1MShXTHFe
UVVCRVVmJk5AQXpybVlpVGpBOVcySGk8PnNkLXhJZD9PSSNZXmcmO2tfb2F5Q2xPCnpFMmZSKnA1
bXhTJDRiOSV4N15aJTFpRSNBIys9ZkZKNEZvJml5TFJPaiskSEEtb0w5emFiP3J9cn5TTG82fCR1
dwp6ZFAwT0RUYTM4P0xfayg5JEJ1YHItTVdrJlNpWnZJamF7cztJQkV1IT10eThXUitRU0VSPlk/
ZGgyeSstV3NSc1cKemZBM3ZVVTJTN0F1RkFRIXBgU21xOVQ4TyRNWjtKOERTQ2RFbz1APGYoRE0j
Rm1tWHsqOSZ0WVVRKW5YRUJTVnx7CnolPTl2WlBEVkg3NVAhK245SzBnZlZ4JT5scFpGaz1ENXFA
PXJ8cH0ld1hWZ20hOSVnN21pQ1E+R2NRSzxIPHt0Sgp6P2R6e0FOQUs3PWhheCs+akp5RXwrPHpl
eUB4dlkkQzg0N3h3bz9SOEN9RHsye3NsRlA4SUBxMikpazFgczVAZn0Kej9jfjJmdklUc0FmRzhP
RSo8MWw+b0FhKSp3NzRLdlFEKU1qaTMoZXw5LUhOQSRzPkU0cmU2RWlfc281QSFZPnlkCnpme1c5
WjZCdyhZYUpafD96UHR5IUU9MGZBKkpBaj83emhfUmxNS29TKmpIPGEkJUxBVmIqUGNgT0B9dzFz
bl8tdgp6KSQ1Xj1NeTdEIWxhNHFVUFN7JEVONFRfYUhhNFhOSVZeSzNjNUFKI3JKP1JYR35NdW1g
ODN8PENMRkV5KCozUmIKemV6NmZrViFKRyh4aVAxSDBLVGhET0BsU0hzYWVUI2tXN0EwMXBCbHgp
MHJJTjw0OENkRk8jSDA/dUJGb1heN2IwCnpZNzwwVEcxV3lyTzlhb3U2NSpeN2xfc3w+OGRiXm5k
P3hBLW02JlZfI0VvRH0/Ui1VeU1xVUcoRVdTfjd2bDItTwp6SnhQPjZlI29DYF50OUh3eDcze3gt
WW5+ZUJGdUFkRHl4WkJwUSZQVUNJOSp6UUooRT93ezJTZ0poKGpQVT5Md1AKejQ1emN6Ky0zYUZT
VVJCa2gpdn1QekZ7S08rOE8lfkprK3khTmpDeUZpKFYoKGh9YUopcTNPRGpsMTx3VGZ2blV2CnpW
Oz01WiNfekRtaC11KyF3IypaKUlEPTV4R0l0R0t5VHxWX2Q1RzJ8WXxEfnRqN19uRHtGOF8wJEJ2
bFJQVUIpeAp6MUcoKXckbX5eOVdAMTclJnp6OCUzPmgkVXRyWXIjODxaUy1GLX5Ie2JHPntZMWw1
b1ViQ3x3a14jdzVlQFJ6V1EKemV5YH10WmReMTxDeSkhVEJYYGRlUik3JVY5fTcwSWxPWmBTaT9K
Tl4+SndAOEVEZGZuQ2ROSGpUZGxgK2JMOH51CnomPDRgd1VVfl9OQGQpYXk/NldBQ1Y9RjBYS0pg
Ump6VVpMMkUmRGdoRVNuJiNGdUlYZ2JHPnx8Z3NpJFVpRlctSQp6aTQqbGZlZ1NxdSF4dDVBO1Yq
JX1eTV5xfkpibDwoXyR4flBOX2I2ZnAmcTdCPzZHYGVjVThDLTJIMTNwPnFRdlIKekkkUFktYnFG
ZUlVRihZUTB2c2lUTV9jODJJSXhXaTctKllmRURmZD1ocTVRQmFfaWBNeFpOe3lZTGVWU3V7PTBS
Cnp2PjdUPD9TX01PMnpSPXxTKGxzdDMmR182enxufFdMKzZ9dm11NihnQWxTMzFiQihjLTFDc3du
NG57ZFRCZFJSNwp6YnE/Vnhge2xPUjIpaTstamN2Wn1NOCNsP0ppRjwyTjBuVDs/RW49R058WTQ0
NWZyZk4+JFUhLWU/ei10JUw5M0kKemt5KTZRVXlnQGlPbHw+Mzs4U2lNalUxQFheeTtJXk0yWktR
JElQK0s9eHZZJk50NjI5TUJEKlhGZHE5RGxFT3NeCnpBUDlsQTYrci1jcG8/bVhCPy0pbkJxTjg7
ZzV3NU14JFFveEY+WFVXUlVxSTBlVkZZO0B1TDtyXi1DYF9uNGlxbQp6PUp5YH5pe2JPKW8jc2JK
SSg/cVA9a1Y9Kj1eKVp9O2AzTDBlaEFwJkpJdjJoY2xvOU4hMjhlZWM/ZnU7QGpWSGoKelFoYz02
WkxLbXxaKGkmPlV7cmhFLWtPZHwmeD9oYG8zbkteVDV3KTBBbH0+LTx9YFo0VEBRXkpxUkhDI1ZX
VlE4CnomKFIpck15TmAzbnF3YT4zTl9VdENnenFPZV8rdSk0WEozYTdnPTthI2FtPzdScUJZeVg0
e28mbWlGO1U/UkJALQp6Vj5oTm9XfGEhKTYkSmZDZCktT1UzNldXczMrUG5ASnF+VU9uaH18R3dk
Jk05eyRpZTBCRT8kfm1sc2l2Tm4mOWMKeihre2RVcUMlMl5VPUQ3fkdjWjNIe0hZJTMpdk1uJT1I
UkE3JSFlc0wrMUdTOXVeQzR5dkFxUDctWFR3JFV4aElQCnpId0J3SD0jQzVkMFh1PXtzYWVKb2Jp
UW4oakszPjNYVztMMG52WGpOeTN3NE5XNHdiWChMbEV3JnNiUnE2eVU8Qwp6MHZyTmk2fUB4fD5i
dXozWnA8RiZyc1dVP3FVO3FJKWRnJUotNH1KeUtzVHVpIXEzQUs+WDlPITE8YEZOXik5KmoKekUp
KWUlRUxNOzJYeTYxRUdsTndQP2duZ35MPlFCbmdKXkNNTXA8WHE9RHxlKENFMnxnZEF+dU5OYWhZ
Qmk1cHlUCnpvaTlXcyMxc3d1Qns/U3ZhJjR8NFpWS3I9Y21TcjVLRVlHNmZJWFBFKShsaz54MmdS
RmFhRUJJYCtNVEMteXEhKgp6TkpkWWZpLWMmTFlZOEc5VVNWfllGO1d7R3A9UHMrRjcyZGtUPkMm
VGRlXnR4MykqNyFaVDc8Q01WK0tJYzN9KFUKejVIb3MzeU1Zclckd3R6ditzVXpRPl9iP0xgWktD
Kjx5PVpSUld1K0YrUDkxYD1HMVJuS04lZjR8QUVWfjQ/dTVtCnpxOUx8Q1BKZ1NTUVRqcVAraSlN
a1JVe3J2cSZJbjRiLU5iOG89UjVIUjxDQ280ajhSKHZ5I2dCKmRCYnx4Nn5tZwp6UVBCc1RaUF9u
QmdpQVVURm9ATDNGdExeZU9wMUYyZ34rSXkqKGtBfGM5K0VGMFIreVdwUnBOdXtHV3g1LVhlc1oK
ejRxO2IhO25laUZKcD1GUDY8d0FQJktvOF5xMTJGPEJ8aDlvUWlpKV4rSiZ1MVReZDd8I0R1QFNy
VCZPXncjWmBCCnpuMj5FaSRoTj9rWSlUZFZ2YnszZVZuPTB6e0QhR1hMRlRrUk4rN0V4TXZ6bmpT
aDNwdGxjV0dAUGErdzVSZitHMAp6QkU8Q3tyR2MhOVorc0ppIU8xa3RjWDtjQmQ2Q25ydSQzamlO
I0YzZ3JTNTFtanooVU5SfSRAUj9aZm14KzRkanEKejd7blJhM0dQUStMX180TiF9aT9NbSNBO0Zy
Y1Z6WC1MeU0wdDRgQGVmKzRPV2BTeUhnMCFMZU1eR0VPSWNhNUtYCnpue3ReTlhjfmN2Y0N1TiFq
bktEPU9fP290ZHg+fV4mT1NeQmF8YUh+Wk93d2VpVG1WN2NXSC1oekd8KSVCbSVvRgp6YEN7Knlz
a007Ukp4QH4kWjUobS1DPCRIRThoMS1kb3xPWUxURkw+MTUjOFpYTFVHMEhWem0qbXcxbGEwQktS
ZnoKekleMXdFWV5fRz9kTj03YnNDbEljVCNBZ3JGbks5NVpaZCslITk2WGUoJH15cWZOJm1tQW1Z
fmcrQHtrSkJzQyZuCnoqdUR6UkpLVT5ZdjZgSHlEM0dfQGgwMUZRbnxoOHxTPUxVTVZBaFFHJGlX
fFQ8JFgmYVZMWXVSPn1yRXBYNFh6bQp6UU9tN2NqMWFxVjtTYGl3ZFJEUTU+fVZvO2RPWjxhdTRj
QjtARGFOS2lVZEU9KWtlbWc5TDY+PSZXdUZwTHc/fDYKenpfY15QQDxaPkAxRVN6OVEtRkBySGZD
JDV1aTE8PjFxX1R3akVsOT8teXo3b2ZQe1g3OHpZUFk/UjEmXnpeXklTCno9QHMlcnY8Pz90MWZA
TFVROyowR0s3PzI3ZGMrMGl4YnF3TFd5NWA5LTlOMWcwKVMxQ3tNUiQrNGdlTjdAPjdTaQp6STJS
TFV4Rk9pK05mJE5eVlZNWFFJZzdedFZmaE40alJTR00+Ty1vLTdrQyQhRHYyVFUxUHdIaSNzb0lt
QjVYbT0Kek0mPUd3QW5fN0RuQHk2MkU0QzhJRnpJJk1LSV5SdnJMMnZ9aUUpKD1ea1FWQ0A9MzRN
Pn5lJWxfUng5PUR1bkhxCnpNT1hwRnJHPGUpIzFuQVZTPTBldXhtZmZSZW1QYjx2MmNhYFk7TFU1
c00peTZjZUFeUip4MDtJPSs9MUAwI2RUZwp6alR7WV9Hb3VHRCEoeShkRCNRfjw9KyRlNUJ0PX08
KzhaYkt2QyNGPDElRE1lWX54dURsLVlFQCZHfSlwIXJlYEcKemtQSFFmRTVscFlBaGBBJjJ1NEpQ
TyswfncjWSEoNmRzPCloUjBkN0ZZbSNeJkYlemNTQnVCSHx7KkRoRlFPXlIkCnpZZztuNFQ/Tntw
VzIzUEhWLWx7U1Uxajk0LVFEJkM1ZDA+X0xLeyU1Yj4xVTE9aiU2QFlsfkNfKW8maHxfPEM0Uwp6
VTM3VmZiLSRRanhYaFlJJVcoPXxLQyhxPW1BNlJFMEhENjwjJD9XRHNHeHRnaHsjaTBRPTE/bjUw
b0goNzIjZTsKej8pcHhYY2ckX0U9UkN5UUsoPHpfOXg4MmtxQnRJek9JaloqPT1USFgwKzZpWUtQ
SSYzQjNPS15HY0Upc3B0I1RuCnpOY3V2JHR+S2FSI3dYQVl3RVZBfk4re1JSUmc0PTtpTTxhSihm
TjVrSCZrbDV5SWYhSFViSERNTDZfKnhjZHBHJgp6TkhfPyUwTXtIQ2NIUGFTRW5ifEErP3g7K1hS
fCRte0g9ZVpKd3BgN2FgQloyOGQhNSluJWojRk0lc3A7Z2ZMO34KejdLR0xeYUolUUNtM0pmSmgq
LW4mRHorI0g5UyR1TzNsYlJPJVdvdTAzV0hsN093RWx6I3smfDxqUjxBQDV7ZHxjCnorPTNaY0lg
akhNRTd5NUlxQlk+Jjs+PTJ2Mk5VSGhrcXZ5K3lvaVlhP0pjMS16eEglUUpgVCY7c20jWG8kZ1V9
PAp6Zi1BQ1grN0ByZVhVK3hsVGxPQDVYcjRSNHswZHtTZDQwVTwpbSF7PGdZPWRlO19ucHZoMX5R
PHVjUWE4P25KTX4KemdWPFFeaVV0YTN4bHdQSzE1b1N1eGlvNVp6KDdTI1BnMzJqPExUPmEjSipa
UGB5Km47cVpIN1FsM2F7fUM9UmA1Cno0Qyh9PGZ0PUE2MCU3aShXYGN9QVZqPlI4KWk/dEpMaytv
aTJMYGFDMHoyfktyRihXM3BeQzZsJFFVX1lCdEtBdwp6R0hGNnxZUDA7JVI2TWlTQXt+Ymk/MDZI
aXQ9MXBISF99ZHl5P2NNNkk2OFRxVSlxN3NQdz5nTytiPXpoPy0wSmYKemlfYzU9XngqUyVlMnhN
QjxNbj1OSDlxJj9iMDBuKi17WTVSSH42S0M/IzB2eHBZaXpvNnJYPUlgbFVIb2BBVUJGCnpCa3U/
SmQ8cl48N2U0ZTkrQ3pLODdQfTVMcXhWT3x5RkU2YGRUKyppcTthNGBab1VNTkVwLURpMWkyRjAo
R1BhTwp6eU8mfUdeenVmTGBJMDVfWWAofGJzVmxkTFkwVnBedTkrTHMxQkpOc3hEWj52JGN3TW9O
NTRGPFBpbitEYEYtVDcKeiM8ZSU+dzhYbSlWaWRMQF85N1k4TDhzaDhfY2tFRzQ7amF2dlZjKHo7
MH5HfVYzM01FMnh6MnBBODJwSl4/ZFAhCnptYDx1JDVJbV5HPS13eCsrQng8aEFQU0lVRkc5Sm8+
eXktPEFuRnheISYzKWlHYiF+QXVVV016YylAT0diT1EwTgp6OXNOOVpqdFBSck5QI2l8aWQ9aEBJ
dzcoTkdxKjhYeDgyT3NibzZzPE5pWnBXakhrJThyRGBFP3UyNHEtMlpifnAKek88KSNiQkReWFBF
KkNfdU4pa2FTQU9pOXgmTmhLX3djUFIoSmpfSyhEKTs+V15hT1UoSUJibDxnQlhYaUBqJkJyCnpH
ISl4WHtTb1BFPV5nYDkyJEF8bitkdk9oT2V4UjtnX3lHIXZMTiloN2MoKTswJUtjfFpKPnVURDtG
YWpiMlF4agp6Q0RQdSk5aXhHX2xDI0N6QHI9JTNQOTBaKUF+O3FxUDM1UlptVV9NVmJ0UE5nOEYp
Uko9Xz5oISEwVn04N3BBWlUKentlNDcjVWxLSjcmcT5UXiVLflRgMjItdV5VMk9XLThoZGRXcWdj
eiYhbGo2cTcjaWNYSD1NMTNrQW0ydXZLIXRwCnp1ZTUmOTxNMV9OJFJiPyVmaVlrYV8qSn5VMmdW
QnlKLWwrZk4yWHQqeClLIyNNanJIRCF1ZF5qK1o3eHtTXzE9SAp6REJTTz4/dmZ1fE5TUH1KT0Rl
anMkMU9Ha1p4OzhfPXpLNklZUVFsSSNJMEJedlBmTy0/dkB9REI8PCt3PSVhKiEKelU7bH55Mnkl
eVhreX57QDRKPClWNlFuOCVPfXUpezdjZyg0RWNIRHQzeUI3TiFYc3BsTDgyJG5QRVJvIV9SaC1J
CnpTX1ZfSk1QJXoxQCotP2xyRE8qRVRaXjcoKXh6WjhEbkBKTWw2b1FCKFBrSmNWfWV4LWo9I31G
MXxIMjNmcT1PVAp6LSQ+VDFAcmF+Y05oMDJlVUc7O3ctVi1jdWhHNUNsIVN6dHtBeTZFRWdSeUMq
XkI0OEJfRn18TnAlVlhOOXY5YEEKek8qc3cjNFR0O0cmdGlNPFdHUWE/NHgjUVlhZ2lHUFRRRzlp
N0xBZ01SRTAydXNVKShFPV5fIV5EI1dKNCFZWTFMCnpPZ09Pe3FVbDRAZWwlNUtrb084OHtLVWU2
OS1ec1NNJFlARGktZWx8Xmlgb0k/Tjl9fUF7Tyh+Y0tHd1lLPkg/YQp6SmMqWjd3X18rVSk5Mzw1
czdAaThBMip+YlMpQFBKeXRRSGd6N0N3Zk9+fjNPUkFhNzFhLWF0K1VAVlREe3ZNVkoKemZ3Q0RQ
OGdaU2RRNVlkI0l8NSZPcjFwa2l5RUFVcj8oRFBRO31SbmU7dGpUbmNHS1JmI1RHWnY4IT58Nm1p
aWhACnpNV0F8RWZgez8qUmtVd0RHU0s2dmxGcWU7dzF6NEMzS0ooYT80NCk2M3IyNTUwVClwPGAh
MXF8VUZzVk9Wa1c0Ngp6NWlZQnUrTGZyNlRSOHp2MWI4ZFhPJmsoUz9JO3g7Q3ZKPkx2Tk1KRW08
YkBOQSFkTCpEOXtgeiVXNj1meldzX2AKentWZThGZGQyVUlhdSM/KzMlcjZMZkVUfFheeEkwbEAm
ZjkpWHFqaVUjJUg4V20oc0R5WFFQan09QSZ+KDFIYmlFCnpKa3V6KjdXbFZ9b3QrM2dUWlkkLVUk
RFVNdzd+QiRzJWAhZ2RKXiFeMGEoU2VQKHJQLVR+ZS1QZnAqbCZERUtHLQp6aSEzJXA5Nn5KMnBi
fUElWChlUTh3XkNfY0ZIWTJ0I0dXOUtJa3VUeVNQWDkqcUprZylzUEkoMHYzcjRKKn5POE4KelJY
cjBmM19AMTE4PDdJeHZaJW4hajBOIy1GJXskd249eHVrYTF3IUl0ckFXRkFGKzdoUXorQGIkUV9i
dUYmKUcxCnpzeCpfUkhFe15sOzczISRldnR3PXVHc1g0USVHSihmeEM3VztgRnJnR31rOX4yQ2d8
STdSclkzTStrZiV7eD4xdwp6ciRZKVgjR2B9PUthVGNGaCFZTXQpK2xCTUd8fU1ZOWkob2EqYUkr
VmFAJWgwV08oeTVXdTExaVYpSHEyXkI8dCUKelNgMHR4YjJ9TiEqdHY0XkEhdVQoUW9QK0ZIOyko
VDQmfW53d0V9ZGZAPzk7S0NPMWNjd1pLSHlWbEcreSFkN2U/CnpQJEM7X3g1K0slOzM8Nk5XbzZQ
Yjl1fiNCJVZRYTRZRk56K1BaS0Zpa30wMn5rbmp1dm57TDhsPyphcjtjTEk1cQp6Tkh7bCV5by0/
TTJ3MWotT3FCcmdTfEhDODJgQWJgND1heTdPMn5AXj8ycmtJLURlYHQybDkweXAobHdQQ2dpMDgK
el9HYiZaK0Mpfj13RFE7ak4/czxDQUYtMEBYRClGaTBgNHtUYFhpQHFRM2pTTUlaS3JCT08ociZE
Nj9ZKWx3cE8pCnphST0reFktQFNBUFFiM1NVfCZGI3hXRmBnbFltfWhLQFNTM0JZZGxYUFBDd30w
eTxQKyNhUlc7aXYxZD87anFaPwp6PHhVfDFhVWlUYmU3a19YWl4wc2h2Xn42OUt6RXhePDQmIzk1
bmR9bSZzbUBxTHEqKn5NUCk4UU5jYzBtR1NUcGQKeio5bEIhVk5OTHoteTtDYFQ3VV5lWklifXFX
YFNAUUMtemB0KyRMPS0/SnNZMkdgR3R3NFJEUHheRHQrQChCVy18CnpOKWVaJk50YnVDTjEzUjds
QjM4QWx8MThlP1VTSF95QSNlZUVAMU8lP3VHP1dlKndjVEkySjVtdnZJQVMwQW1qOwp6ZiZFQE8q
XiU1fEZocH5qezdANVdGRV91MWhSfTk+cUA1WmctPUIjWUY0aSZmQEFGSTNHezFCJEsxPVlhIVJP
NnAKeklRUkpjMURgJjhQVTdRaUBncSNgbXNUT1k5LXE3TFMlPVJpZTEzcT5nWlRVaXBQJUZORHx+
KkImLTNgUztuUilKCno+LWNEPT00P2p5ZERUVy0/QUFfWSRAZSMtZHdgM2RmczZObkBpOUsxO25S
PUw4R089RWF0PVBEQEhyUXMkQG9tZQp6WEVyfENzWVJQRm16eWN9dG5HU1BKTFF0XnpzalQqMUdW
TUF4RVlfakBWTih7V18ldlBNPzFBLV5Fa0BfZTZtPD4KenJYeD1hPD5wODU2Jm9OQHBJaiQ1S1pi
ezxQb0JsRGNPQF9PQXpzLTBCNCM1WTd2Y1VNNWBLey17MzJFK2diejRgCnpGV31oWEwrRTgja2B3
cm9FJSsxKmV4KEohK0pldXA7Qz40fSRBWnRkO0VPR0koMUlfdTtMOSFlTigrOVkxOzUzRAp6aGJ7
T1c3SlJoQFMxa0I/MyU9MldNPE5tKE4xYGcrKks5dGI3RU4yc01ecnBROHxFd29hPmRRO09eKnlB
e0EzOD4KenVfMSZmaFkrM2BMVT8pejtkZXNfJmtQfHZKQXwtZjI7cjM+ZyFVd1l5dEF4T0BGbmtE
SUcqOGBINmVDK0MrZE5sCnpSblFWaEp9O1NFSmR9KHBwcHdaS24leEhkUTB3Wlc7UkdqRnV8RXF4
Uj5YcE5eLWE2KE5YTEFrdWIkMksqNlM1dAp6MCQ3MGU2TGBtbCUhKz16PDQyT1BeKExQPkZgIU9C
UHRgTjVGeVFCJTBAeGxNSTc0QFJoUWlIUWJfaDFtPHZXJTkKeigrSVJgKEFVPzlJflJAZEg2ZEp7
JWQmfDtfPG1xajBnRDFQSi1gd2h4Mi0rKFZKOWdnb3Y7d1Buen5vQnNuSEVnCnpOJlg/N1Z6T2NA
VmUleWY/clY1fSEoemMzaVVqY2E2Y0ZgQmFZWGJOIShuMFM2OVVYcVU+YXs1JXBYPS1talZKNwp6
Q2QocGxaJUJhIUY1Q3sjVTY9dz1ldDJ0dShJe2R2TUtIU2hDQ0pZazRodklfMVVNQE5DWW5NOW41
fSkyMjd6VnsKem1qZENFM3syZTI2Y0grfiRPTHxjQV9ObHohPzkhe2ByJEJga2J3IV9uKl5JT0Zv
RGt7Zm05YUJ6eXdveGMmS2goCno2UjBQRlIyRlc2cHQ5OEFGI01EaiFNLXlMQ1MraU83YmR8fUtF
Z3tGRXQqYll7dzJ9PShZajd5P0l+UGBQMn1ydwp6N3B5R3IrJUxjMnRuU0EmWHJreTdVfUlefUs1
O0t+MGlzYkVnNFdPczR6Vio0blZWczF1eSF3a3dffWgtdmNze0wKem9wZjc8dnFCSytHKTd9OTNj
fDJlNFlvPzAoclZmeXMoZlo1SFUlZmc5bV5sWGVRajhtWnZ1bmo/cClzZThATysqCnoqU3ZjZF9v
PHZpQkokdyQ0SVJzYnV5I0M0TCpQe0UwPXttZ29Yc3U5ZDU5Z2oxRzYxUjQ5dT45K1o2WCN2OWIk
Owp6e0hHdj5Kb3MlNyFxP1lkU1l6X2U3OFh9NzxDaGhod0UwYWByamRtK2Y7YHRPI1QqcDw3WT5V
KlloQXF9cG9jU1IKekRoXm5rQ35lMHpVVioteUx8TVVRUVBDRiM8QlY+elBvR0kjcyNERGBPZnll
Rk1wRENNaH5uQmAzNl54QXNyZH4jCnp7RjZwSDhnfVN1V1gzTUBySEJwVEh2aWVoQWQtWE14KzU/
ZmpjTXFAVnI9SGshMClLd1IhZmtnK2Ihd24wajxhPwp6PWdAVz1URV9ydDZAUWZTXnJSQzVGKkBU
V0AxJCt7Kzk0O1JRbVF4SDMkc0NKRTV1Tz9IK3g8Qyg1cyNGQklPOUIKemZSZil6TDc9bHBKNV97
fiZuWDRsaXE1eEVLK1FIRUBCeGNmanRTUjN3ajsoNXhjdiRmemhDUyohSTIjc0B4Kl9PCnpVbjlV
Pj8qOEp+b3AzN25yajR8ZnFPVCNIJmduS31WVHkkX2IlMlJxPGVHKWFRIVNmQEVzWDhAVHpCajtS
M3d9UQp6dk5pbFNYbCU0ODFjZEY/WjZtMHQpMiEjMF8rOGFZWXh2VVZQM1o9WChiVCZKUXBXfVdT
bjhBYmx8PUo1UykoQmIKemV3T3ZpWn5JfV4qIWpRQD1aakx4Jm5qaXkqYDw4Oy0wKUtSJjxfN1Fy
TCtTLUpWQks1LVY0ZFBSSDgxRSZNc3hrCnpTKjVpOEAwRFdJZyliNkMrP3koNTVzSjklPj4/JSZE
Py04TFlYODRRI2t5WkExdTFjfXt1UlMrKTwxdlAmSDdfVwp6bkohNFApYmgrUFEpKzQ0NjdlbG9h
WDcoTnU4eG12dS1+OC07UD8wX3lAc154JHFkb2FXQW14P3JpdTFQX3VxPioKekcmPlhxOVMxPko9
KUZ2T3tIcjBsQV51WihLe3Z7I3RmUWUoYGEpLWpZWHJzNmsmWVYqQGhjX3dxV2lSfikwbks/Cnox
MmNHODgwUXM+X3wxUntxNk5oRF9Zby07b29XNk1iJiEzWStKSnJedTk5Ql5lM25qelJCbUFhMmwt
Nm9zZlY/Iwp6Nis3X09MY0BpWXMqfVRaRCFfaEwwcDRUKk4xc1pHMSZiY2JLfFFtUT1sREBQY3BN
b0deYWY0UGYlU3N4OUo9TUIKemgoOEJvMnlfSF9kaHg1IT0hTSp1Mll6SCRSJjN4V0lTMnY/TlBI
NE8kKCZmej4jZl9pQX1QcSVmP0I4YmQ7d15RCnp5UV91RyEmbjBvUlFuUXs0KnxnQzlkbFVsTGFl
dXB0bTQtWXgyQk9yeU9kcE1TeU4lSU0mZUVha3UzWmhWWGBjVwp6NGlpajhTTW1Qc0FWS1JZVEd3
TVFRaml3bzBGTHtxeEstOU5sVzFjNFVFcyZzOXpoMGlQIzhafXdyYm0zYypCTXQKentBTDFkYmdn
a09KQWh4a3RqRG4kaktfUG1KeV5ib0h+NTJMOCl6YzdSbUp+eUghUTliWEwmMGRYYzBUZXk4I2Z0
CnooRGBkM0tuZVZEQHF7MUd0bD9HOUNjOSN+U2RZZDlmYE1helBkRExvQkVmeyklQ1ZINHBgRV4z
ZSg7X0lSdj5Xdgp6eDhWbGRvJUtnNktrbVNSQSRsJEtJKVorPzBxcVp3THhybClGMzIqMENVTiYt
VntzPEc5Yzstal53TEhxeF41TV8KemIpaDskYWY/WDtAays4fnlDNW5Bc35ScDlmeFNERFgtOGxP
dkhveGJBIUthd3JiZnErdUoxTVkjVj4tfEFxJU1GCnppSF5nV147cmlARjsoKW1iITJ4MyNaUjYt
SGorZFVjI0w5d15uKjxRVl8oSz9kTThCdkl9VStYQ3dAYSsrbCVtUQp6QU5JTmdQTXxfS2w3QHE2
X3Ywell0bld4djNvM2Y2MiR6aSM5QTBZVilIbDZHP2UmXnl1UmFwZ0ZQXmIlRFFjO24Kek19eHQ7
JC15OFdqNzlfUjJLZzF8Zj1mdER3O1Ere2h5dlN7ZTAmT3FQK3dCTCR6TXN1ZENhfUI8dXNJe09L
O2krCnp5XzB2b1FNekNJKDVhb28tS0U4OXB5NWhoTHZYITM1MmZjfElLQ2NicU0yQG9Cdn5qQWk7
QyMkLUB9Um9gbSsyNwp6e0Z0M0dCMExwXzU1SWtxbyY/R31kJGRERStGKzQ3S2lveVYmUzg9KXZQ
aW0za2AoWUBwKDJ5eVZfQ2BFZkBHTj4KeiojbGM/bUxvYGRhaXUzJUVafjJCUW18TkgoYzF4VTVH
P0xTUTRDQUFnMmtzWDJPWS1aMHp2UVl2Kn1eVG97Y0xxCnpaWilZRGY/NV9UKyNza0tqVng0WGxL
UktscT9RVSZsZ31vRm4+ZyZLdHNTRT4mb31BZTZxdWtsKX0oZ3tlJS1QUAp6aG84aVheSVo1UWFO
PzJ6eWdgdEIyUFYqRCoqZFg3WkFiR2RZNzFxPCUlXn4qRDQwWjVAbSlfcTBCbGhuRTZXUz0Kej1m
cTFXazFaXiQ8V0d5MkA7cHBPdE43MVNYeiZSaU9yYyNeJCh2R1dsZEhJckxZb3Jnd14/WGF5cEVu
fE1MZHN7Cnpxdl89NEFFSV9NYEBuX1ZkX054UD1VYzhadnRyaGNOIU1nRVlZfChCUXc8WnVPTC1B
fjJENkhmT3JkJFBtWGJvdAp6dEtAP31yPHhFTnMlNDBtTVc4bDAkbG4oKUF5QXVBJD1eKCZVMEtE
dVFmT0Q+SCZzJC1HYjtJU1Epc3dBX3dmfGsKem9GTHp0TFlyVTd3R2BVb0Qhd2otNzdYKDVycUdy
bVVZJFopVWQ2OVZweykkXioodE9lRUJWd0UrQVVUNSFXM0U8Cnp6bmAyIXk4fmxiM1Q8XjJ4MjRk
T0FWMlhxJCQpQ1F6TEZtbUZDPnRTUnM4U2IxcDtZYEspSGlfWnhYWSQ4U2o8Kwp6cjZscyFFcUpm
dXpmSXZrQW5eWWVkKyExdFJkd3g7cExydzwkLW9SU0JtbntybX1ucGIwenI4TWFLYlBsN3leP18K
emtgWDBoTkc0M2lrYzQ/ZVB5KFI/bWRSbVM+WjckcVRQZk9XVGw9Zkd3RituejJvaWkyITczVUEj
NzlxPHM2ajlaCno1U2ptWD9RX20jY3hiaXYtX1AmZi0qdTk7JndpfV5leXpSdCtIM3pKZzE/Mn5I
JUlVdlZFQWBPQEU+Q010X2MzYQp6NEZBPiR7LVheNDxfUHt7NDFZIWh7fFNhYUVgdDlnIXlne09l
flJKOU1ldl95X34jIyVZSmJaUGhKVDhnRFprRyUKentQJm17Q0RYaXs7bENvYFRaUEBFIStgX2Il
b3FvfXdwbUIwZG57bFMmMn0tRUJzYEVOezdlaTJKZn49cyY3eXk+CnpzRz9DZSUyK3ZRbD1UdT9r
eClmQ1lXN0xJOERvTU1fZHsqVzNYdnVBWDFkJTdFMGIpY2tNTDVnLV5YMVBXZzMpVwp6ITstQ18h
R1dAbzNsbUZVMlV+YnlQSCRnflZYeGBARUY3JlBPUVEyR0MoezFTazF8eihDczt5V2BFOEptNjd1
U0EKemdSR2EzSCsmbXB3Uz5JbythVGs4OER6Snc3KFR8amh4VClFNnxeWmsmUyVObVReanI9bTV7
VTtOazEzLTN6Wl90CnpvI2s2MGdqSXx6QjQ3NypETGt2Tkg0Oyk+Xk4+dnMjODRuNmJNdWY1aGpi
ZXNLP3Z7JilrO0BvZzxuYk1GUEpkcgp6c00oZVl5XiQoUnU0NSEqQklwZFowV2VVY2U1K3hOMW0/
O3NWXytfVWx8O0tPI31OfDlhekBpKGpPbWV5b1BpPSQKeko2YGsqJD8+IWQ/anRsWW1pTSZ9YzAt
bCVKNHZZJmk4T2xLY3ljWSlMUihSXiE2Mm8tUF9WT25ZOXZKQTJyVjNVCnooYUMpSktgYEhuSTR4
dXVlMkAmUHk7ZGh0SWMlRXdjbSlEYEJyMzJ0RikmeDA5OS1aTXBMOTFqRTBJbDJ7KERrNQp6LSkq
SVdsTXdoRzhHa1Z1Ulh6U3ptMGlnQUlkY2whbEw4YCNaaUdgR0ZCTlZpNnN3cFRqRTdgZXRVM1V4
O05adXkKejNtPnU3ekJYank/QDdUYzxxV3F9UH0yOFM2Pj1vam5zRTkqYG49aE40PDhhcUI2QTgk
N0k4eihFOUdxfG4xNnRXCnpJbigob1dSbE5NREhQSH4zbj82aUdnUUxhQ2daM0AzJnVZczZHe0BE
Z2xvfV84Z1JiUiNhKFRZVUQjZk9xVTtSagp6VmohN35MQFctZGFJMSE+Z3Q7aE1CcUtTdUc9aDU8
YTR8U1l2aEZVd19zUlBWa2hYajdYOSRHRWQkVH5vQFBSPDQKem1mfktsYyZsNU9FQ3ZHcHcxdWIk
KDBKSDcjbHYhTWwwVE1VeTRjeDVDUSh1eShrO3EzQV87a1hxdXdgP14kO2lSCnpJQHlJLXRrJSVv
bjgpQCVwP2J0Oyg+eUV7QWw/ey14MDxEKntlQyN9WilmZV5xP31gI01aST4tbSUpK19hOSUodgp6
ZERXZSlyXkpeRWQxQk5kQ215aj5HLUwheno2ZDNRMk1ROH5nV0F8bzRFUFJCSWF6SEcxRClObl82
eDhHRyVIQ3MKekdHMTVZZGBHSFVpOX5FdytGMjR5ck09N2dOWjFgZVchVlpyQGFfa3NqamtZOyZ4
MV9GSm1eYEdsNUhkYj4kRWFECnpfPTVVfDlEMmR8YzRHSypDN15BaEQ8ST83YzAldylrdEArSUJ1
NmFybE03dTJ5QVU2LUZkTUN8cD8yWj9SfW44TQp6TVhuXmYmPnBlS1BiK2ptQFFAXnYxYzkyelRW
Mj5NWW4zcnZEd18qSk1UVzMyXzFBV35SNigxdiRUaSQ5UEBlPD8Kejk7fW8+a2p9MFZjSHZYek9U
O3FBVDN5TEA7a301SkdIQW1kQXpHZG93dXFHPFNMbmlGKndheTF4S0hSUndoUDJXCnpCbk5MQlNt
WXxQM3FPam8lR1ZkVkFvMV4+Q0BiP3x0SUxqYVIjQHA/dzhiKmR7REtEJDc3Rmp2KG1yNiQxT2F8
WQp6ODx6UTN7cmglYlRKJCM4TlcwTHxEO0ZDQ3ZBOU9yZytFMHNrUTFqMFcwNzY+V3lDSURUajt2
UkUoOVlNWDdIcE0KekFeU2FJS14yeH03dyhLJDtGKSpWU2plN15TV3hNWWdJd1c9ZylPdGxtMk1a
Tk1KKTJDNnVRUlNoM2d8MD00bjx9CnpoRndVQVNsREozeGhCfCFuMjFIYnNuOWppRX1VaElLR2Js
YGJGSHBTajZEJHhUVjljQ2wzaDN5dkIrT2c9JGRSNwp6X0N6ZXFSO3ckXkU8Nj5udW9WfSVycX41
Wk1pQnpkem9wUTExTGBQKFZQMFomLURucFlCTm56aGlkPDgxbW9RP0gKelVzPnB5VyoyVVlTZVR0
dypMMXNaYkh1X3tRezxYcTdwNnhuXjZMdi0qPilpPFZxeH1MVHtHPU1WI0xDPnM+bjQ5Cno8M3Ek
RWVAJnJsd3E1dVZ2enlwJns3bzFTdGdmNXYhVXF3JWAtJG8tYSsmUEg+ayZKaUQ5PUp5NCZIfjMq
IWVkegp6empOJXU7fU5fMnc9bG5FJFIzWl9Aa0U2ZHk1PUpQNWojSmxMfHFvVVAjdittcFF6Q3lT
RlQrc2lQLVV2R1FhY2UKekxRY2ZhJiF8I1k5e1BYOD90WT83aShLPlYhbXgtUHwwTUghR3dNSEw9
Y24xcj5kTG5acl9hZXthNmVKME1YbSpRCno7ciltbVBuMnEqc3tyIUJCNmZhOHQtMlE0Z30rNFg/
JSZQKUU8enViP1B2KFY7NHw3VG9NS2t1czkrdnRiJmF0TAp6Pz9oUSlRUzc/YkY2QGd+RFQ0Vzkz
U0YybXwxKUJ4NDRQQXt1Mmw0YENAYjRfTVh1fVkwdn1+WFc3cVh8VlU9dSEKei1oQmA0aDdnWjE/
bnxBMHBKZih1YnFhLT1wSWB0Vzd2WWUmVkFsWSNXSChtOW07enB2NUhhdXdXYCtuQztrUDI5Cno3
S3BnTjBfcXJOVkc8Jml5VFdqVzJwNkdBTUFUbnhhRk9PLUNTI3MkWncyUkpDPmFSWl5vK1hGVVZG
c3Uodj1FfQp6V21DfE9BeVNYSUN9T2IpcVlBZEJyYmFDMFZOQHdCNnxSI2xUcT1MNyFSe0pWRCUz
RzZ7azhQTyN3RWlYPDg1WUIKejRqc3RZTn11YlFmRVVNIWlnUlZzJkRMP2g2aVhfQnBGPDBkV09f
eT5wNFVMbTZ1c3R4N25idDAwanlrMWBoWW93CnpwRj5PYjB4Wko4Ukw8dW0ybERrOzswQ1pwJngy
cXBFSSg0UG1UMW1YWnB1JDwpXkQ8blpPK3FmJHsqS2s5a3xKcwp6LWtoaTNsc35ATkkoVTtVcWQ4
QnJEU3R3PERRPVRfQkp1TX1kXjtwcD12WVckMklEajJDKmUkaVRUSEpQXyYkUjsKejlGYSNtPnJm
JEJXKk54fSFobSs4NCQje2BNQ04pOGJPTHNnUFFjKioyT0dlMzBUKmx4VnZvP0p6ITZtO28xU3JB
CnpaeHM/TUtAJWAzVjVwPC01Tjc2OCFsV0dvM1VoQm9SRzZUOUt6KmFFPSNoMFY5c3tCU0hKbUVI
K15tdUF1ekpUcwp6MkhjdHY+Xj1nY3NhO0J8dDNSKV8zT29ZQjl0JHh8bTk7UWRWRz9XeDshUStU
NUV9TjVEPSRGPFU0c0w3TiMySmoKelRiTDVpaFBjSTdsNHV5ZnNnalNAZEFSNHlOfndKLUs0UCUh
a1BvNklBZCZDbz1KPXxCJFFkMUsxVFhsSXR7O2R6Cno9czdzX1MoOGRRZWJSeGZ0UygkaTh4bjwl
QHdhNng/UnZ0RCNsQW5zdkp0dmJ5ZyltVntPK1FwdlAlJD5Val9MXgp6SEAjbzwlYjNNUEYkbkNZ
d3M7cXdtOEs3fUkjSClsRElRVV56RUs8SThsLW02VCV6NWlYS2Z2NVMlLW9Vc1p8MVQKelRwWT9h
Mik9JX4wRyZwdkc/ZHxlRUp9SlV2ektHSHteMVMocVJkWXdQbHlRPCU0Jm47R1JXTT1GKUZQR05i
VnQ+CnpXJHdBT152Mj0mMit0QEtwTFNHTEstVjtMNnRNWjBfUCt6bTRDKVpCP3ZwVVRNN35QJjte
dW1oLTQhbEhfQ2Jkfgp6UCE5VmVDP1EtPyZ1amtgdSFQZmhmVWZNaFRmRHk/bD5GQHY+N3R2RiFl
cWl6VTM8Wj89IzQ+Sl5MPmJTa0g4TkoKeiN5N215Q2lXQnZsKldUJVNjNkcxaDs/RURUaHErWWpI
dHJJKj1GSFo0MyhpJio0IUJQS19xISFBfXkzVyhYJEZeCnojMWJQP1J5STAtaEsjQzAydigkTHUj
YDdMclc4RnFhVGV6Wkx6ciRyZGRyKFZ0NXlEa29DJHFkNT5HPz54YytATwp6VnpyZ2hOb3lOWGAl
eHZtMXw+fmF4KCh1Y2VLY3labVRJUTVve0M3VCk9eCtFR1hWI1NmR3FZcXlxQlIoZzRQZCMKend+
VTlFPkxDLSg8andzdTM9fnxqPFNnI3R1dkBrKXQ3dX1sN2VefT12MztPVSsrd0VqKUMoT01WUlM7
eDImZX5VCnppVzNUI00lQitqKmkpKWpBPjNmV2RBZXomI0Y0bUl6STJabGFpUGd3Z0NKMnNRajRT
MEV0ZEhFOzJaVHRqfGJgLQp6RDdvdWxLQDV4IzFkfGxCb1hfXzRIViRwcFk+TENKZVJfWSRWYWxD
amhVSjxOV3M8VkIzQVQlKFk3XkswRnVpck0KejNaMDYzI2JTZUY1KEFMNU9ZXy1gakxfPGhkSUQw
IXgqJTA/TTBWcillUVFBUXZtSk1Bc2BOc1NKZ187ZntaSDg1CnpaU0ZUUylqUUNQMGhxKXFZMSot
RSFQJGQ8QnxOX01nJkhoa3N2ZHVBPXsoJkZpVD1Jc2BfSjNLbk1KPHQzcGA7Vwp6Wm0kcFU4T3t3
dWp5VyFnc2gyQj4yfTV5TSFXblJrIXtIPFl6ZD84JVBCKU93fExDWEgjQUVOaXpsSjI7VmgwPDYK
eihAKDhaRCpwNWI2QmgkJGVpRUV3Zld5QnhhYW4qKmVyTXZJMktAMjJ4UmA+azNVRDB5MD5DY2RF
ZF9pQXlrPnZ7CnpGYVU1NWE3cUFlYUJCdExURUo9T2hhPiMhMERPVkx6ZDh3SHRaUztrQUU4d1Ra
bT0jO3FpaWtNeEs4ciMlYDZmOwp6dmklZ1lrOWYhd1pqfktJTTBwcm5CK1FaUlJpWHp6MmNtNFNe
RSp6cTUyMGlyZFlpdmxAODJgNlAjNyVSQTB+VH0Kej0+X2crTHlAeCV3TG5kUjlnJlNpJjB2WXR7
enU5MDkwKHRhKD4rWjBQSj08SkhyMVBXcjE7MTJYeTFeSzVNVXdvCnorV0RScmQ9eUhuaTFYTXw3
QkoxWWd+SCQ3VmBNfm84TilVM2NuSjNAQTxtTFFvRXBKbU9XJlYmPER7TmwoJHBkXwp6fEhVfHdh
Vmh2OU9VaG81S3gpYjNNSDt5YTRFKU9FK3o2V2dWeHtnck8xZiZWbD13YUhhWSNKT1hAOEE7cCMx
Q2cKemVMa1dCez1KMHV4RDs+PiplOSttaUgjRTBJdz4lZE1vdUB+M1VgZWE5KTRTQD9sTkd3KHVC
Pmp4al4hUGYmOXV+CnpDckg3amlBZHJGRyF0SU4/bmZucE0xUFRXTlV9XiQtdyo1Vik3WjZQcjRx
P0tjRShERGtOYi0/YikzZEVSKU1Iegp6WUk4LXhFMFBvT01OLU0tQihWX3Z5Sk5wJjlQNmNrRnNt
YVY0VUBAaHUpM31oOXtvRz0mTmkwI2c1RStWQUNUSVgKempxdil+QUZZQExwTkp8cSEoWCM/biFZ
YGFQfDx8djc8TntvMGtHeH0kelc3dlVEU3gjPjtZMUFIVndwK2hiNHtoCnp6SiV+akFBKU8kSz0m
bzY5cSluZEpqa19SMUs2Z0dVIWs0MUZHbXRzPz1rWX47RCh1V154V0d7WWMmWGxZKFFnWQp6Vmdj
dGhDcE1qYEBiK3N1SFBwSy0pQ2YtZEMqTU16KElGVlNOJEBYZzVSfnxgKmRfY1ghSHdqPTkjfnVJ
VCFxa1oKejJtWEhRQyVCN2h6JjBuanFNfUh+MH1pcXVWMmRfPVhlNnFNeGNUIWE0cnwyT0NweG4t
e3crZW1DWW08PUZrYkIpCnokaCExVG5OPXNtZUVQS01YQ1EmUjdvbFAkSDI2VypGOyZNREtGdklf
JmBAPlJXbSpzOWExYVlHZjwtbSQyWUhCUgp6ekcpOXFuJXZwYDJ5UCtJUDBARiFyMEBzbThNRSVu
NnNfdDJ1VEVpX0h5MUQ3dEttdjhFI1AyKE5zMGxfa3xvOHoKej85Oz5fQC1CJlFeV0dBRlhtd29v
ZCktSTtANmtRSl8/S2FOeDRYXiVGNlp4N0BhO1FJQ31zR30+VSM2VW59XjxmCnpgXnxUPHpqRFhs
ck9yTyVqIThjPTt3I2gxZjg1c0hmfGtLfmAkP2dJPFMwWG8tRG1JPSg7MTVRdlJFZX4pXnNXNAp6
WncmWn5mVWR8dThHPjRUTUYjcHc4VGVNST1sQXBQZH5GV3lMbChaY04qMXlaQDVGREQxcXdacTRI
akN7SXBkbF4KelAzS0gmWn4rSjZIdS1+eFB2V0N7ZURDMkNFZktmYUo/RjNDX3FPblJlfTFeOU1m
Wm47aHRLITlOJmZhYDlYYyM5Cnp3Xko/Yy1FMXpFPXJvZFp4Yz5hfTlwUHxlZHxTbz98N3FnZGlJ
byUycDwtZlF0S0JqQSN2SENLdCh7bW92RSV7RAp6cWw5dWpqUW4yNkhpU2dPP2p1YVAwXn1ZJXB9
PjdkS0RsNUd4PCNQdUVPYnB3KkhaPVUyNTc0U1d4WlpxVGdHZTkKengyLXNQP0Ild2B2cz5UbnAl
ZEV7Rz5SdF88YXAjI01fQjUybytQYG1RQ15zQiQ1bX4rdTQ+Q3NLQ1RFTT95OXppCnp0SjtwYm4o
ZEE+dlEzTW0zYEcoVCE7eDd9cUxATXxYeFhLRFdiWDFgUX1geWJZUHQjWkdVIU5SM3c/Vmk4YFE4
YAp6NSUoRjB3fXZoUkwlNCloQzsmR2xGJjJIXk00fVopKVd0dzNJYCpnbWE2KER3PF80MCNeaUsw
QSl1RXVfS0dtRTQKenkkNXNvXkd5KGEwUX43fFBodXM0JDVYcUhLKHJSVVNTaU5DVnJEWXJNMDN6
X0AlX2UmWjcwRSFkUXNqXzRMVythCnp6VDFjOzJ0LXpCS2FBT35va3w/MS1FVkclUkljN0AtO0Nj
JmU5LVQlPXc8bGYpUmAhZ2FIQCVeYkQ1ZTQpd3V3UQp6QFAhZkNYbVE+fWBjRmp0KTEtZS0pRV83
UDglKkUhcCktNjk3LXcjdipufGM7ZEUyS0UqVFhAX1N4VjI9WDNKTWkKejF6JXxxXllPO0JuPURe
WjU8bkolUUNvYWtEKEUwYHlVV3pDJHJwUChqViFTWFFxVj5GQXo8R0kpQW5wcitsbnJoCnpZUGBq
UCFIX1JiKE53TCFUUWwzX2pjcHJ1ZUE/QylKYFZUWSo7QV50aDlzUH13MEEkdytQKEdvaVQ5NmVt
RFpMMQp6ZWF8eU9ubldmKiFpOD0jP0pEfWk1SktUNjRNfXt+KDR4bVBJOzNuSSswPSpeeGYxdXNY
NT48Vm1TezFXOT5OQEAKenB8PVhPIUxzTjFSd2hAMW9QPEFNRjU5R3Z2TX4kcVV+fnNJYVEpe3ct
eXVKRWNVfSlBPH5PVG0jeD4lV2RuVXcxCnpoY3JzdTU5QCsxU25fPUtkJWx5OV5eRWwrPlJpZXpU
Y2RxTVg9Wk9PJDVyaUlZcFF6QWJyVTIyQDRSVFBkaFlkWAp6RVV0O2BvaitmTmhudCRKMColbD5F
Sz9PMmxHcGlrWjdhMHptd21NTGVhbEJ8MkNtOX0jV00pPGwpKE9saTtZPEoKendRb1NhVmU0Yms4
SEFuSyFianp5a3ZLViFnRz48fjZEPmdfPkppKyNXZ1QxSndSRjUrKjEwdipqfEpia21Fb35ACnpi
UU4mbHd7IyttUDtuS25zZnZINERuM3NNUHk9RnArUD9JSnJjfmlNPTJXbl87ZlhUS1NAQmhyRl9h
cEE8OVNSdwp6Mjw2PXFBc3MlVXhJU05VJCpeKzRMd2RNd01zbVZRPFVtLXRyVHxzQkVebEwzcXFl
RWhmTCg/Q3N0an1ZdjAlWWIKekNKTUtFKTFWd3QhKE0wemclYW1DRTlBT1JuVy0rNFAhfHg/VXZk
O0JhKzFCaE4ldztLPmNVbHleOz9gczdHUW9DCnorZDN8cCZeU09oNn5KKVQ2WHo8fEorUjBCZmRY
MWMkcFhFRlJwVlpDPC1KekghYTReJDBINEM1eSNpWUd2TG9kKgp6Ki0/Sj9NREhwbSVKbClGdVNw
fmNYY2Fub1dAcD1ZcyE/andYcSowTllNJjBBMylsfnxDUUpLYHslSjd+Jl9gM2EKemQ9WkpJaz5M
JkArfmsxT1NRVzZRezFiZDZafkZ1MipueSFCTDhWOSQ0b09NZjI/Q25xYk1aN3xKaHJ2RVB2Z21G
CnpKe0YlP2VsTDVqbWY9eW02JWt7KktmdDNJKVBaOTheWTh7XkUxQlNIWnsmU2p4azcwfTExRi1q
dVlsQlF4LWllSAp6WkBSR0RIej9HOVFGZ1oqNC1BTCZQM3l2JC1xWCRjOEYtZFl1fUJeelM9Iypq
NGo+ciMmTHJRPiskS3ZHSShGSngKemFFTlF1RDlJISV6TmZqcyhEY0ZhTyRGVWU9Vz4wNmBOcDJe
O35UP2tOMjU4bTF9eGY4NV5PZXgqR2NTJWFrI2ZACnpAdX15OXY1fCVReihMI3wkTnA5IUV+ajhK
XykxNVVmZFAjMVclfjZPTiN2RHA4cngjJXg4cUB5NyVuPCohJCVAbAp6YDc+N2BSVCtgVy1jbnpH
QG5XPzktLSFOeXxFPko1THRWM1kpenN7ZjsjX1khKU9vcyV8QX0xdEZNZyVsYH4rIWUKemtkdDwp
IUx6QiY/JHJIdzNxd2ZMe3JIRV9aMHVUPnhMPWlOWlo3SENHe2xVfV81TmhhTWZkTjxEPFAxcUch
V0pjCnplZj5vRGQ4VEdQVWVON09IVEdtVFk4I1ckLXFaaWFwSHA/KVU3MHB2e3RyYjBfJkR3KWhM
UlYwaHRaSmc4dj9OPQp6ZFRUU3RhNnY7Zkl0aEJqSGl7MWsmJXw+WFRzeGhTQVNUPnRMe3Z+VzlQ
JjxWRjZpMTZaLXk+VHcpMXRkJl87YCkKemZvPk9ldjVeWClnKWpoTT8yY2A9UD03e0RPKCVeX3VV
SUpJdDJOIW5zRE1JPEUjMThTcUpaVl9udHROKkkpa3ZCCnpnJnNEakhZT2Z2emRELT5zPFd7ezZa
VmVnX3BfI3FCfm1gKmwxUWRhTGwoZ3p1cGJOeSQxZlF4c0chazZ1JW9rRQp6JWJ1c0Z6Uzl+KmI4
aGpvKnU7cFRkR3t6TmFqNzN1K219VkNxeEhJNShSIT09O2QhKSY3aGRpJmd5UWBuQj94cUMKenwz
aChRX2hQMl5HdShyJiVDPXBFbG1MdGBRU2EtNT9ebzt0O31IdDNLUHw/KmZBJVc5MEsoTDhzcF5C
e0FveV4zCnokeypibyM+aWJeKmQ8Kjc1P21YKkY2aiNvTkEtbzV1SXZrPXJNfmMjKnBfJFUxQm9k
ZW83aEN0UEZ5RWFxbjhrTwp6P1BHfCQtb09YYVIkMyYpY2pWUiQoZjZ0aHh+QHRJJEBQdz41OEMp
NClgWmM8VW5iMn0rUEsmVyg4ajN+cHA5UlAKemE1N21xVkJXMD8zXyp4IT5qUHc0WVZUKkx5KzBn
RTZrUWlXZFRqKUM5PS0wMSFVdzdTZno8UnpVRTFeKVpWO1AoCnpTY1MlSzRCPC1kMnFZRCktQHdg
e2Y8cDY7aUVqUnNHY2lUMlhvMmo3ZHFqXnxDQHoqak5zb1FxUypTVXJJLWJlXwp6I3pCfDRgI3Ut
cng/WU5sST4qbD1vbnNKbF51YGd0YWE5MVhPKFFFTWhBUklfQmN1WGJxfTtDN2J7fl9BbiUpfncK
enJCaC0zdjtLbHRpfDt8LVJvfXlVT2xuX2BzbHBETnp2WkgyZmpBPClyY0xmT217LTIwJnBke25h
PzM5Mkdmek9MCnp8NylicmZTd34rWF8oPkIrPUdvcnYybm1QKGYmYVg3RFhJTUd9JitJUXRZPlVp
U0pwIThJVyVzRlFDdk40MjIxPAp6Z0RqSWskcThIO3szdVpIOGhUeENpIV43bjs5NU9aNWQ/T0R4
eUl6diFVTWQ4K2pwVkdsNXt9YFNGMEUjUXU9UiYKek52QGlYVElodnpVbzRfaUsmbEBJfDUxTlpZ
JTJNM1ElTl5OX3pYIytQJVE9JEkqM3I0OG9MeX1xXjhDJUErWFlhCnowaz82UjVWcnJxTGZ3WHNw
K1UtVlRpKCk9ZVotZiU5KX4yem11fS05NXlyLUB3UUJ4dEk+eH5YT1h4OTNPdyg9dAp6OFNFaTdQ
NTB2O2t0VVJoPURUaEBaK1VIRlRVOCoqOF5AU2krOE1kPk1wekRQTGx0RVIwJml9fCRBN1deSXo4
V3kKejJfe3Z3MXAya2xoaD9efU5CM2hCRzw7JFphIV5ZNEByeXVeQUZ4PmtWLU1AVVNnNkU5PGBJ
ZUM4QWZPamRqZGg1Cnoya2B0bjZKYDNHZ0htKHhxSFk2Q1BFeCErNmBxRjNmfWw0QyQlP2MxWmYm
KFo0Xzc9MGsrZj5iQ0ZTRjllNGdfVAp6I1d2NHszYGx7WGY8M0RVOVUrTnpoZT1HX1hjN35iJSlj
V3BxVGNoajlPTiZvenJkRW1lQDBhK0xWdXY1aFI4S34Kek1MQXMxKFp1JUd5TmBGM0w2Jj50QVN5
biZeNGxMcjAtNzRuYTkjXmtnPk17UkBMSlVsNDRyfFRTaWE9N0QpOUo7CnpBMF8pSiQrPE8wYjgl
ZT1lMjApVDJPKUQ5VklmM0NLKmUjUFRUeVVwVzNhcnpzUWZsfGdVfitIX1pGJnBnaDZNfQp6eXhK
TyVacEN6UjFMekk5YTA9KT9mXipTTT01IUVGalJWX085Qm9eMUBZcCMqNFN7SDhDTT8yX1plPGNn
YG9yZWsKejZKJihnQi18KWNmRncySWRJMlFHO212bT4yVWo+eDFhajJxOzIkOWluKVY/bVY5R0I8
PDBOcncyR1M7MVUlNW8qCnpBb1F6QytDOX10RF9XIyk/PEV5Tyk9JjhfPG9iVGtrfjREME5ldEhY
d0REMiElMkl6NHVpPHt3VVdQYG9eOVZVQQp6TkUlO2BuaEpgfiE1dipKTlRefDU5LUQ0YzJgb3Yj
LV5LLSFiRUxaPFJeNnI+bmUjJjNNdl4tdiNvcU5idV4mZkEKei1gVmpzdkcwWVdKbn4zJUJpPGIl
QkEmNVFLQjR4ZWhIcHJNPWtOXiVzOHooOzVjYTZVUy00K1YxKnpIKWFyZ2VICnp0cyZEQjhrfk58
Mkx8R2JLd3UkQ0pSZ31gczBwUipwbHI5THk8Z1V8bHw0cHx5JWpKLWgjXyE3aVd0SlhxcWQ0cQp6
YEx4RStgckN3JnR1PTwkO0c2Z1NgXkxEVzdiNyRRdEpiVEhhKF9XUCMobEFVWHBgOD1jJFhGWnpo
IWBYKjBUNCUKejxwNmdSZE1idkU/KzNXPUhvIz48cCMwWWlhNXM9Uns8ZztkbkZDemh2fkwqVElD
QWBWNHNmSHNDVSFRIThOTWQ9CnpPOW5XaXQ/JmwmdztiUUB7cSRSbVo8T249OXBDMVBBdy1SRFBo
d097Ki1QV3dRXyQ3eWtCbzB2Qmt9cSRORjYyUAp6YUtPYHNOKipzZ3Vzc3MyUHM2Z1Qxbj93N01y
Y1Y3Ul5COUg1Xz9vZGtQKXFNKHUmKmFHYDU8K1JSRG5tXyFiRW4Kelhsb0dKUDUwJjJWSm96RVk9
SV8oY2tPWVozWGdCbzB8OD8mUDI8ZCstdURoKl5TMnt2azAqTjZrTD1CP3A9b0N5CnpvfGloP0ha
dWg/S3FkQyFuVUdVKXVMayRsTDRlWG1XZ09PZ05xI307KSVwY0IkVTVqcUFhalo0VF94P0loZWwo
RAp6ZXFYX34yYHVOM1VjbnwhJW53WDwxO2tXOTQqNkxvPGwrXyRlXn1oamdHfHRfKStYYHdZT3Fa
TjZ1PChfZk5XTiEKemFgUDVmJkJCfFhRJjFgISt0I1ZOK3N5dDhYPWBKaXF1bWFoRTBkQG87bDta
cyFIYHM3KnNtVld1fDEjbWZmKGZCCnpHWHtePlF6NW9yMWVFfUAwJXFFVlgjV2dtLUxyVnAxUDB2
bWpaeTNsaHBQfGozJjJHSXA/bDRSe1p4bFVyWjRgTAp6cHlBRCtwKWhGcDJ9QipoRjNmU056NUli
YT1rJk92MGAhNm9GWVlqUUtzRlJNUlI7Mm45cUZYZ1o2PmpHe192MnMKekYpdEZtJlVkSCNJPE5A
SzxCeCRyUX1mNVYrYSE3fTx+YnRrWXtLYkoqY2Z0UkU4TVhlZDRqZ3tQZzd5NCZWKWNUCnpGKjdA
Pk5UPXN8Y0chajh2SWsob3tuKSQ1UHlFdThpbG9kI3dDaFN9eXxIJFk/IX1VZTVOKzZJSVQ4dFBR
RH1OXwp6NXcxISFVQiFSSEM9aXAybXstSDRVUmwpaEN9UyVAVHxpSmk4WXJxTXpuel9QcVchNGUw
YmREcmtCPyVQQk9mfmsKeiEqSClzX2V8I2NQZiRwbHplXzxjWDU5I3txMmJLcWVRMEhQLXw9QWw3
cW5maCUzdEpGaENWXlk1fDlDa2U7dFVeCnpxeCtTYVZhdzZ8WDJtNDJ7JHUmRmomJHNZTXckUSFM
WXkhSEdyaCEre0AldjZ3RiVUSDNYYkEjbkA/O01LdXs7NAp6O2RWcF9BfnMoOVV1bn5HdSp+WGYo
Pkghb280eU9sTX10UFFYNitlayZzKSlJKD1UaClCb2kjVVJtYTJwP2BfcTIKei0/M0dYX348KmY+
UWZMdWpIJmQqKV88ezh8TCFYT3pmRyZJaSpENkViUGZJO1lTZjNheD5WcEdwbXZSWTAkUDc2Cnp6
b3U8WnB0Zy1DdEk7VypMOGxQZ0hibFp6YFMpYmZaYm5FK1A1ZH5UX3oxYSkofFFJeGxoXyFzOTkz
NGVudzY3Qwp6TkQ5V2V0Rj8yK1RxKEJuSF93Q04/R1ZRcmUzSVBZRWdyZVNxcHtxQVA3JjRRWH1f
QT9kJT4xOSl+dEJ7Rz00ZlQKekl6eio7Y004KVZyIWtZKGYzZXJza0ZqM3piZ3UhcXApMmVeZ0Rk
OCpBPHByYlU0KCFkSXxFPU1aRXIhcGhJc0hUCnpjc2QyUSQ0enIpO2hzOVQ8fUFKTV9iY2wxeGJk
UjlfZCkxXzF6Jl9sclA0NEUrKEltJHhjOHp8bzk1dSYlVlAxfgp6JU8xUmQkP208WjI1MEJudGlr
V1A0flJ7MThVI3hvKlBMQntAaTcjPyZ5PTxNKEtJQU80eWg/bGZza0hxOXh4VmAKeio/WlEwNCk8
fUZ4R1AyWGJqZHclIXZqXyUwU3VTaE5raTl5cSUpOWhXWDZXMnV4JTxgOShAYDBObCNpKSpAM3R5
CnopMnpRaERQaGtqcnQpWFJhampIMXt8d01qSXM+fXlyTXhMYjtuT1MrZVNEXnY0T3Vvczg5Rytz
RzxsTkY4IW1VdAp6ZEE4M0RAZlBTb0Q5fHlgK285YEZWbzY8b2sheUFecDJ2Mk5ZKzl3akZgZyZ8
YT0hSDBfO0xlZCo/YmU0ey1+S2IKel5FYllIUzlnVGhuZjc4RV4lJShTe1NSYms1dSZHSCFDbl9G
N2FEaWVib2JKWkljOWdkbFowSGdnXzhEc3NBMUlACnplKzF9c3Z1ZnlKcSFsa31tU31hKU9vbnZT
e21sbilqdnpEa2o+YiNFeHI/eE1OVlNVKXgpOCFBUVY1O0UzeFBCQQp6QEY1REpHeTlCSnBNNkZZ
PnBxa2ZVVDdkXzc/U1B0IV5JZUttfmJpLW17PUVKM1BvfWNNSGZkWm00dlVxMkAqRWIKemBHY1lC
JHFtV1hKeVdsVUtiSE5mNHxKQ2E/fTVRcUdAel9Ed0U2eXVeQmlefDcyJTVTZH09VXpMR1V7JHV1
d0FPCnpmeihzIzhueCo/aT9FfEgld0IyfVBRblZLRzZaMmxtUV5vYi0tezBZSHMrUUgmI0hAYUBA
USp4cX4tTEoySFl+dgp6ZFQ1K29De08xQFhrPGM9a3o3WDZGb2h5bnpuZEl6MiZSWDswRjBSIWRx
bWdhPXYwZFo2MndGODEla3RoZ3tlMnQKekNfZ3U0QVJlU0RQU0Y/WG8/VmJLeFI3aU5ROHZTdyYy
WCNwMGdDJmZMUFQ0OEJmOTBqbHBTT01EOzJfJV5XQ1VMCnp2WVVgVGRPczBiPXlzIXd0d1E0enY7
a3J0bys+bVUoTz9zXl50dzA8M1R4fC1ZQVh1bF9lYyRIdGIpQEJjVGt1bQp6OXRyJl5FTiNMSmNv
dkhXQHR7RE0mfURRdlZ6JHxgcjRYQWw+SjtJeEstd2NmWTd7K1FpXztzPCRaQHh9QE5YNDQKel5A
bUtIYTI9ZlNSdG0hTiZySEdERFJhbGM2WmtaTmhIJHx7Tn5KayNIP2ojfkFtfVEoalZ+aG97I25u
SGpjKChnCnptX2Q5PHVZelJ+ezhSNyhvPmllSTN5RUo2ZTJ+bVYhWXxvMnZXRHtPeVQmeWB3azg0
N3MxSWhYMnxoeCZ4SkA5Owp6I0NMIW1TTzJXR1FVbiFgQnJeNnxKbjhvbWc1ezVoTWRlYURfYVB4
UjtSbmN4U1d1O2NzYTdoejZ7MDBoKzxAMjAKekBOUmB3Q3xnUnRjYVckRmQmaWNCaGY8Q2ZaPTst
fE12fXhsaHJLJHczPW1ncDY9KGBWTFp1T25se3U+TDJufVJuCnotKGdqSGZYdHh0UT5iT1otbk0+
VTRZSn5WNFojWVpQTnRNUS0oQE4zZldhd3tIaGQ1ZllWalo9U2BOSCVxNU17TAp6JF4rMDgzbzZQ
aG43UkNkIXJqazFEOTx9UWxwLVJjJjJwaEpxRnpKIzFXfUkoZ2JRSkBMViojXmBoNjQ8ZGwkZlkK
em1KKUZ0T1FBfm0wanc5ZHhEdGVOdXhUejlqdzYrNXYrfGdYQXNINyNsbGAqeyheMWRmKnppISYy
dFVFJGV0ME43CnpVKE49M3ZMa3haSHlwXj9AS0FhZUlYdSh8bUVMVS0/eEsqezVJfXVfJTdAeSZA
R3pvNkZRK2FTV3Y+dTZNQS11bwp6NTBlVGpNWFEhQSUmWld+V2khSEtXMzkkNjZyekNYYEU+RHgq
Sj1GNypPMnVQcDN9dWBTaSM4e0BiQ14wMktnYVAKekdiaGdpPnZvSVVrNHFLRGNAPkppQUt0cGd4
bWVfZXRlOCM9dEpzd3NgVzl0R3ZIYmA+bHZ1Y2xkXzNZfjlDR0B2CnpXezE0ZWBGOUZAMjhPMGxG
ZmBRfDB0M2NGemRjaDcoQl97ZEFnUD5wNFZeYDdlOyllbm9scFdwY1I9TF85MGdqVAp6YUVOOF5O
TVBoe1NVTlluWlF7MChGWUhlYnJRbEpKJGNCTHg+fmQ1b25yTF9jZyVaK1o1UHcrPUU1S35Ga0Bm
YlkKelExSlg2KVdGYWFQO1lBcXZsUk1na3NVLWlaPTtCOyFsflArU1EjUkNHfDdPXzFgditpTW9f
eyY0R1Qwb2g3I3xhCno7JThxeUthYEFuUEFaRz1zdmROTyFYTXh0RGNlcGEpSjQyPThqPiF3Xzk5
ZWpLVkQweihDbVcyV0VHYU5jeGpZfgp6Y1A9QldaRz9yKGBUV0ptI2VEdXU8V2hkJGIkbCVVazhQ
c31fQFMmNmxlZElwTlB8ST0/Rm5FRlBLUH5aeStJJHwKeiRrUFQ/czVuZD87eD5PczhDTFB9VkN5
aD95SnEoSGV1MmdeVn5wPmJ1cXhzKCM7ZTllRD4pPjxWUXxFVTIwcUJ+CnpHa3lyPHA7VXxjX3tG
WEcyNGM3R1ZfNm1AIVp8bG5oN01rVTN3elFMOygjYiNSV2xiSUZSbzdmOTV1LWcjN2khcgp6eGlp
UTNRVzBBbSNCQlh1dFkzeU5DZylVTkkhQ2JOa0hmPn5IfkNeLXE7YUhBRX1zO0dvWCNpdDFkdU1f
U1I1dHsKenAtQjxQZERidiU/V20mPVctQTw1TzY5YEdIJS1VdzRvVn5qTExITUEmcXhTcSNrV24m
bz55bFRjN20yNUYmSVAxCnpEJCspWHokKEViQlRkdG5gMURQeTY9VSQwU0tOTlo3KGJeQiZHKm1S
Z2FRR1ApI3R1TWJZRFg1V0JKVkhmZ21nMQp6bUZjcDljO288PUZaa2hgOz1eMjYkd1N4TlUpMS19
Z1dwYHdEISlwfTwzTHRYMSkpSVJGUUU0S2NKTWVWTXxHI2MKejRKWW4+MnhEO1YzSnZqNyQkYj5M
NH51ZClkVTMzYzAydE9rc1A/QiZEXn41cyQqV2EoPW9ZYUI5RlNULTh8dVhRCno2dCNkaWEwN0My
YD5RYWMxK1dOSkJ5MDVZNnJteWY4OH43P0QxITRDLSpgI193Rk8hcnB0ZzkpcW08SDVxP0QhLQp6
bm8tV0BJSiglPTZWKXY0ejB+dDEqPzVSZ1YyX3ZpVzNkPkVaWFl4WlVaczZoYE8hZGhSNDZMQ0dv
OyUlN0dyZEQKejZXT3YmRUM2YUY1ODk8UkxSTkFjaygmcllUN3M4bXtpfkhAYUZoflApdjZmN2A4
am9IZiFzYFAxWTtRQ09keTtrCnp6VXZ2ejV7OG8mOGIqJCptM2FNPm5uZX1ncFZveigoeXdJQUIt
JV9mbDhzI342dXZBKWRVeT0zR31lK04xbV84PQp6cDl3Z25UPG9NMyR1QEV6VmtTTUUmN3pgTmMl
QSVGYG5NZnFsfWtkYmM5UHZUbnRXKHB1P29LPnZwNUQ1UWVYZiUKemtzcGpnQzU4VDNXYU5BdnxF
dnpDODc0ZTc0c1I4Y2ZzSzlLMz8kXzdaVkthNVoycFdTaG1hO1hQbSF3PFI3WSZXCnp0cXdUUiVr
alFZdXUpK2IjPnJWPkRRYVc0LXJoekk/RUZ5ajNZTGZzNj5RIU84N2E4ZUNeJWVeOVlWbiU1WEN9
Pgp6V21uVWo9c09qPlVGfWlfTSFwM1V2clFPbFZgS001QX1DcD9QMUpnJTxmbDxzNmVJWXtjXzk9
UkRDN0p1c2RNTTQKempAeUpDbTJ3SyhMekNuPDM5bCFGdy1KNnB0fCtOa1VLUXZVUVpNd2tfVG5B
ck5GdDYhbUU9O0s/SmVkRkJGOS1eCnpDPyk7WUc3TFp7T3lRM3BYT0wjQ2IwbjNRdU0zemglPEp9
I2ZKUVZkbWVGaEFoVypwKklQc2x2RnZxUHEhPiglNQp6b0RRLS0+dCltbG1+clhtTG5sWlY/NXpl
MGRVJFJZN0BUJm15R2dmIWN0MSNuO0JKeVV8MkcmaVI1PHQ1Wko/dzEKekpsJSNiQG85JkVVQGlr
Wnl0e1E5b2BjcGV0bl5OOVotKmBoZyFAaFk5Pn0oKTVnP3FoQHVsfW8rIT9eK1Z8YlZjCnpVOytG
YlB6UUw5aCZIZXpgMC0pUE1ORXs1WWBjTU1pUUhAZDFyKnRLQmlWdnY9Tk1PfVlgZE9wWCZ3bHps
JnhzZAp6YFFtKUN4KmJ1aGdOQ187dFQySkg8RE5zVnhYPkohM31qLVNyQClqREY8bDF9Z24+d0lO
aVpjdk9tVkUmR2N1aUAKekA8PWh0b1N2JHUrWCpXe29KcCk+UmdtI15LQGwpOGNmNyFVS31EemVP
NVpmMDlQM0BAUDFqKCY4JGItZnhHZjZ7CnozXikrSzN8YDBIQjN9Q2wpbmoyOEMqd0dvKkxKQCVk
WCtJVzFWV2VUTj9ebmhFX2pxZm54MHR3Zi1lYGJHbERzMAp6JDUxNUtEbk1jaUMoODZGK3BFVE1p
U1RTcXYjYmM4Xk5ubmNJWjxIZDdOQ2FrUTF0bFlTU2JETmRoa2Bta2gzVnsKel87SVhTRm05Tjlk
aHU5YjIqTnt5IXBPcF9TPFotQVB8UmI1eyQ8T2pRaH4oQUdwfHlDNmlQbilKcW9XR0VqaVZ7Cnp6
WjBWQi1CVT9re2JXKjxwPy1xdEVZP0xTRXx1XnFHPmIjU0cwJSNAVj9YYD0kQi1AO1M1ejg0aHxF
VzF2OVJeWAp6YDBLPkFFaU0mb0F6PHlETk19Wk40VFYla2pNbmxLeDt3KGlNbzE0IVQ4QnQ0aEdn
eD00dWJFalpvXzZjKHZnMTsKej1KT3lKclZCYms7MWR2OFoqYyNSVXhsWmBjeUtVK29RcmBfRF9s
dlRHa3g1ZSNRSTxhZT59VWEqRTVtZEtmfG9SCnpRenRnMXphPHRuPyQxSWFfX0FKcSVsWWdKY01Y
Ymk0YUhfKFghc2x0RzVJWVdWND18OUlrQUdDYno0K0VtWD9pUAp6QndEVXc4YytTUm9AUH5kOHh9
clBOa31USFBHNXZ8Y15wdkRpZU5tODBZUEFvTmJTPUleIU8ydHA1OFBVMkc1VVMKejAjYTYyYUgl
PnBtYEJuZmA5bCVMe2w5JTA4amBaN3R+dGQ5OTlEaXJON0FsUXR7JD4+eDZ8VFIkYjF2UWx8cTJ2
CnpMSX1SUUBEPlk9JnJQIW1wUmMwb0V9ZEg+ZGBZXzI3KWxoU0ZLfmtheD9uKzFVX2RWPXRZSmtz
RU5ufVdyVH0zaAp6PjQ/emhiMkZgY0RNYUl5cEFrYntYZSM3JFhUb2s4VncrTVoxZXZ7RjckKWF2
MkF8a0VfaClMVlNRMnk4VSY8UmoKejNgcDVDTlpJNFc+X0oyJTRnOSs3ZzB0JkIjX2p8d3c3LWsx
QH4mTEghbj5Sd04kSjM8OTMxRkk/PlB7PVVwOGZyCnpAeH1hVWo1IXFaQ25JeWY0eD90cUtAZ3cp
ZVclRyRaSS1Sb0BiZX03b0VHTEgqSCMtX3NlRWBYd0JiP3xGUSVYcQp6cj5STWc9Ny1YVmpVQHhF
TigjNXBJej5jKmwhdzAoaWReQWYtWU9QJEI4MEJGRGRRRjFlelpCMGlDcWlnRUI1YzMKeithaXBa
ZlhabGs2dmhAbyRNZ0BBOSYyJGMkfFMzO2IjNipCdCVgJkFUN19SQkI+eChPZ2VTXjVSRTtZY19H
KVZvCnpId0I3PlFLJHl0KWVLeSZUI30qPUpWZkVGLX1lKyRPZ19ScEBRRkRIWkchYytIKDtkVUxe
a2g+SGNNeztLZn47Qgp6MGdMWm9CYWklKmBsaHJgaFRYb0ZvaWg8al92c2dzKE1sdiFBUis0ejde
UUpiS0g/bEcxc2A+dk5wJE1qTF9ZYjAKeko0c1ckYCFBVGR1b3clSjhaaD9lOGdqQSEjPHc3eCEo
RilzKXlgPlNGeXlLSGR5QEViKn5pQHB7R1Ame0deQiQhCnpiK0d+dSgmUVNfa0I4bzd6MXJsVCly
OEEtb09kZH0oNz9DJl93MGZnMjhQXnk4cnhQIzEkbT8tNzcwaDhMKj00Pgp6I2tKLWRzbEI3RVZE
IWl9QDxebFBETnVAeU0jJnJIT1QwRC1fZHNzNGY0M1VaPEszUUt4UmZTUVFobkY+RlUpTEUKejwl
YmdTXiRsKUM8M3padnhtcnhSOTJXNm87SVVMNigobnVRPXx7cjNkaH0xLTNyKTlWV0FGT05VOGUl
S1luZCN8CnpzSiVwNXJETDA3Z1Y7Z2peKnFAUVNjOG4+O2xXcWRHOHFzcU1mI2dYIWplbnpTWTZA
NUNSWC03RXcpQy1mPDRXRAp6RzIweTx3Qn5tMFJuZGJeY3J0NU9DRV5kTWJOcVlOe0JWcVQ0UFM8
YXMtXl8qZkdzd2U4flJKZ2lkPXwyYjt0UDYKeiNXaiQpMD1DalNyKjY9fSFYd1NBajgoNWstIUtU
NnBwVFFxRmsxU0JgYXdeemgoVVEzYEgrIWpScVEjWFIyPmVnCno9an1QNk5eamtCTFlkd2dSUjhl
QmVrZHh7S19tdHZHcysmTitueFIlMSRhJk5GXkBET1AwQnZUSHNaKFBNdkdFKwp6S1JyaGY4Vk5o
ZWNgel8oUXBlajw4aW5xczxjeXcpVm50Z1A8dUJtbjF1Yk5rYE5PJHVAVE89cHFGbD1eJXNXdEQK
ejtEY3VeOHxfUEJObiU9OTVocFlfKGoqSiFXe30qSG18R0hkUHZteH4+U1F8REZlZnhjYENfbENo
dzFuaGF5VDZICnpRezlLZ2NobEp0PU5rbU4hLXJGdDxoNyZ5cE4ld3xMajgwdj0rblAyb0JTOEZZ
eD87XlRMMTJ8eGJDaldLSGQxYgp6fE1UNDdKbiQ5WkN9Xzg4UG1lTmFYSF47dE5+S1llN3UycjlA
Z2QkNVA1O31UNTBwPyZzKU8xZXRNPjIoTmg8WHQKenRTV0ZqWXlYfVR7Y3VZUTcodWx1WGdDeTlI
e3RuRlFxe1kwalpVPiF3TVMpMVI+ZT9MTHpuYjc4cEZRcDxTc1ZSCnpaVSgoVDJrYGY/cF9xRW9p
MWpPYV4jZF9PNCtidUZZai1nTipnNDEyRVFAIT16P0lPODw+VWRIOGNgcEB0MC1AYgp6UG5mTXIq
NiVDRShDNkhZeFA7d3dJIXNxdHltZ1NOUHBmdUZwTGJYMlVja0dwSEZSemJtbEU5ejNsKVZ6blBr
S2IKendPcClkN2ZReWQmQUY8WDhRI0cmKTRjPDYldj5iVW5JM3I/MSNjP0lYY0xYVGQqQlVYUl92
MG9yZFRrSnFLaTd1CnpyeDV1SDBuNDtxS3gwYkMwNlFZR0lvKlNGMXR1X25ZX1YyUSV9cHVoNGBU
RVI7X2p7Q3pROW57RiRkNzQteHEjTgp6RENoWHIkTX5VfSRoP0tqPVY1TWRNTDtlIXM2eXNZQiVI
X0VpMERHKiYhczlZNm5afW5ocXFCRXVudn4wX00yNFQKensjYnFoeG5OeFV7REkpQHN5IWN8bldM
dUlLbFoqVD5nX0RHbUFWJnBMKyZRUnBpQ0RCJDRATzBVWkpIZS1rbyg5Cno7NispO3AlXjIlJmVw
dkVgRD8tdSR2RHhhRCZZckVkSkJjU1YyQWooayU+fiE4YmhKZXBjY34xISklSyFySnRfZgp6X2F3
fTB3YlAhMzBmXiY3OG08JH4xSHdDZW91JEh0V1VOeXVhZE9BMTNZY1QlaExvYXZIYTJEPCowVlVo
Q3teTSgKelZfX2BMRV5ASlRFejBPWiF2Y3daQz18MWM7O2puVUdfRWpedzFnQiNlbCpPX2RAP0ta
VjNEd1g/Kmo7fk5FbT45CnpJZU9rNkl9aSY4UnpkY1ZlQXdyX1Y7MGUpIW8/OXBZTzlnRD9GJXI4
YERjLWVOXmd4SiZDRWVMVG5xbXAteVN8ZQp6QkxfKHJ3aDR9VHRWbiR+aCVacyFIQmVZfFR7enM7
cSg8NWwtV1pfKGhyaHkxU290P0dEPEtubHpLSz5WcHRKRVcKemcoTWB3S0ttaUVfdndVcV42KTVt
eENqKVJwcmNxc1dPPXxNITk+e2pmYEJeWlFweSZheHBxKkl3RXEtfT9wWnNICnpuN1VfZ1M5aTQt
eX01Kn0yc2RFJmBTOSZCeC0+a3hfeSlZU0wzcF5CZj9ASmpJcEUpM2olZm1sY1kycV8wMitveAp6
NmBJZ3g9QG9zWWJoVmhnQmZEQV56U3U2eVJ8PzxZdTJ2PH1EJj5XZ3hNZUw0eUZgemM4RX0+YzQ8
SmxeJCZ8PU0KelhBSVVuJmN7KDEmVXpAcV5CKy1Dd09+U3JUUihEcGlRSndmdz9gJG5SPXV+PHw2
I3Y7P3xeKm91emM/cm9VRDcoCnpMS0UjTThuI2lZV3lKeHFsOG8mJXdEWFlLJkZfYVB2YCllYkhT
Qmx8VldNWk9hODlPWis5O1lzNndQIW9ub3pNRQp6aGFuJEZFcj1zSUdAMW5vZEspcSo/RyMpbHxC
ZXskXn5Aej8rO3gmZEolcSZIUE5BTnJQejRKMEwkRDx2VjtKPlYKejFIZl90P3w8T0pQZUBeRWor
K0RORD9NVnYwTXs0WWhCS000cTJ2N0l7SEZ0amswSFFCWUJqVlpPNkdXOWxERDZACnpDe3x7KmJ5
QFVFWnx3UzRufj18S3RQTXw3YG1STlYzSjJJT2ImcC14akEzPUw2fVFPQEVeSF9aNTVrQmBVRVRa
MQp6M3NVK3pyRjc3MnFfbF9TVXJlZTBsWVJAbTB+VUd7N0o4RnVnKlE1c1coKWY/VmQ2PkFnbDA8
bVAhQGp9IzBZRmQKeipuP3J0QT4rO0AxT354RGlCNVYqKzw4MyhKcW42JjRCUyZ1Z0BGRX43aStx
Z0BOeC1uMF52Tyk7emQ9IWFIQGImCnpwO1EpeW1PNiYwZ044K35qa2VpVWZJd0khVCNIJU54ckQ7
Q1FNazhAO2ZrZnstP3d8bTR2YWA+bjhJcjgta0BefQp6OF48N2x0bEtKdSl6SCVzd0MtNzN0bS1o
a2xDWHN+Rm9aa2N6IXcrO25gaz5pQz9ab3lOPzszWmM/OE9pPSReZXQKekV4dTA0WEpMX1AqMyFY
RWNXV2xPVEhlQj0ofEJrMFc/VFMxNjNtNHRsOzYta2QlJHVLNUI9aWswPDcpXzFHaXU7CnpkNXx3
aSMoVVhodGs9VT42fVVUekZGMSZgPnw1WUBBST1idDFhMzl9ZndxRWhNWWlBfEN8NWtGenswdENK
UkRrMAp6JDtseFRfUT9eTEY+dnp+aE1OK3dQNklCVF5XKyRyNlctOzxFMUMhUW49Rkw3ZjZpUCpE
SDshT3tDa1FEZ3xteFQKempZJG5sO2Y/MnF2TmtxRD44cjh7Uld2YzxfYGhJRWNxT1F4RGRCbnVP
UGRtUT56TkliNDt2Z1ohQTRDc2xNcWtTCnpzPTJmflVJT35BMnladGNEVE9CTmA/Yj5uaVdONnso
KT5iPClmSkU5JDxOcj5KKkNVP21jb2x5MDFUV2ooUF9afAp6Pjh6cHB0ZjJiKihGdkExZW4xYHVZ
Z30+eGxWWFI0MztVQUwpRn41fGdafHdwPGgzWWRhJEA5dU5IMl83QkFXR18KelVfYF5pd1RIa14z
UEhIbmhgUVdGbTVkaU5BKXliKyE1Z19xWUBwLS1VVipeK3tFaFJVNC17PEpZWGF2Xjw/YCs5Cnpj
JD9UcV99QmI8KVAqSWJfOUMwTElLMHk2Oz0oST8heitfZkY1IzdpQEpmQW5yOGN9JDZKRHRmUFpI
S0thJW4rPwp6Nz03S3AyaSleTWpPXzNvYVA7eW9AJTN1cSslLXRkTHI0cDRgbzspVj0qPjt7cHp2
YVg8fDFyZG1gen40cnoxekkKekY2czsoWlA9MyVfODd3K2pUTmw7IVl+I35XYHlxYj98VFlvaEZB
cFBqcFYxVzwkfSRWcjsmVD9tam54KjNnQ2ctCnpgRCoya2R0a0FQNmsxYHREZzJgaFglTWZtYH1a
QikoSUl2aGJYI0Z3NSVtc0skeGZgP29OSzVgSlg5cVlqPEc1Ywp6WVhiOFJ1N3NnMVNQSSF9RjRz
ZDY+ZndHSUthbTtySz19bDNRfDBtaSRgKG5NQjRxPncla19qVl5LaGolMTtZTEwKejg+cF49SHE3
flg7fHMmfVg7dihJKnBRfFZGc0o/SXhtP3BkN1MyMHxfc3FudVVaVjNOcklEdkpgWURaZUZeeWZo
CnpZTmRDMFNGVHArSEdweSRadyl1M200LWJnVlcxZT1lelMjKG9YZGZodT9OYX0wKnorX3pEfVdS
Nm1xIShYfnh7MAp6PW99bDE7Mik+cEAxeCoqLWUqTjFPYXFjd2ZrRm1waFhsNWUyaX1aRSlteW9v
elkjU3tzaGRqUHw0ODFTQj0wKiMKekA3Yk8tNDR+Nzw/RzE4IWhUSSt6LUg3cHwwNWlRK2tOWU9q
UnErUE1KdWNNUzFhYEtNU0x+QSlOOUY9dSphc29yCnp1MnxzX29ha1dtPDshfmIjPFJTeTZWMSRt
djhJPFYoKClAZnstbCpJU3c/RGBHRTg/aSYxdTtkRW1BVEQlUUVMXwp6TzNCfFRCfTFmPyp2NG08
WHlBTTtJVTg8KmF9UFA2Sjw4JUApc1d+K0NDQUMrSTBCMEJqXzY0RGQybm1TSmQ7RmsKemwoM0dk
PjYpV3kocndIbTE2KGAxYTxGYDNjZl5ERk1kRlMoWTZVTSs4fjhYP0t+ZjshZ287ITF2cihXPVdQ
ME5tCnpTeU1fPiY9WSNFdkNGSmdjIXkpY3IjanU1UGd7cyppQ1JKI3ZfQjZHMnBOVEwhd2F4XkIy
JX5GOFR1TiUqTDloYgp6XnZLVC1EOU5gYGxCWkxXUV5YYG9BJXNqJT11dlNHNXtgIyhtSnRwbzsh
cHJeezMkcztOUkRAdDxBLWZ4O2JZNGwKei0xSSRZWDlpJkApO3BMP0xFVD1EYCY4aEhDZmwmRE4w
PTxHMSF5MCRwZU1WYSg8e0ZLV35hQlVDXzc4UVR9PTVuCnppJlBeKjxtMT1TQGl1an4mNEFRREx5
XkJva3Z+azRTQmE2Y05LZWAxTlFjU013UDV4YFYyRG8yQU5tOX5kUWspWgp6KXp9ektiUk1NTy1s
Z0Y3USplbj1VTkc7fD80JHwxRiN6Pll2SjUhZWg/S0hFdj19cjh2O1ZfPDdERmZ4QnxPWkkKejRN
a2lRRzZfRn1aM0o1ek8zJUtCTzFfNjg+ISEjflAtTVMqazluMHRzdGBrQmxKWmhlZ0RVVCslWD1e
aWFLUSFnCnpxXkZWS2t+WW1BVjhlQWArTzRIWTc/TF81I1l+ZTx5VEItRyU9TD5Vc1psTXxHMDAt
MzUobEwpPSQ8djtyc2BfQwp6dTxBZGhhM31qdXNkUFdNZkl8MSRAVUFDcWhQMXk8aWFfPGl7UEpe
Xj5nYHNIUmFMRHlnQjY/JnYlXmpyVEF5UiUKelllQ08qPFI8KzU3VFA4KnlBMTx3UmpYKypMaWkx
RWdiVHlNVlRAV3RHPDFnYWR9JGlHbkoqXiRfRHJ1OTB9d2RZCnpgQUhaJntzQVY8ZSZEbXQmUDJp
TzB0TW42WmJIRmJxPUgtZEUtTkBiMG11UEphe1U5P09jc31oT09xRmU9Q0s2IQp6QCZARWgmOHNt
PV9oMUg1O1k4Z2tKbFVVM2xQSUsrYW1RJGMxe3lpaCotbHxzUXJKMEFnclFReyQzWTxWaHMtRDQK
eiMjYiohY0R1MkBrcH0hOSFWKFFVdmc5R1R1cFpIbFNGITArQippZXlXNDB+Pitsd1lONHg7I0p5
JDcqXypQLWgrCnpYZlo1biFWUE5TM3dFdXtmYUgpe29XSTNERUhaQ0smSng2WDNOJnYpYH55e2ht
Un03OVRXJEowSExHemdmM3BAMwp6KjheZXdHJE8zb0lwSl4raChoOG5qTHN6KGQoXlNzZE54fUx1
WWJpLWp1eDxmST9lZ01oNVIraFlhVjErOyZpMXEKelQoMXBocCVCQXY4aCRhVzMmbkVrZD9eejEm
ZjZIYHY2RGIyJDlpI0k2QjV3anBAcHJ1WTxyanVkUnBESHg5YWdBCnotLWI8T0pjQ0NOcj1selJf
YmJ1bHJVcHRucHU7XiN8Mlo3YVdka0ZlNT9wbztrS1NHfGFpYEFYaUNUUWBtZHM+Rgp6MSl5Smxp
VzJST1gmKjtIWU5yTVlLSnhFWnYlN2o5M0F8Vlhjbylqd0N+JiRCdkIwPytmcnQwcFNuZlhePSNG
UWwKek1xeEcjNGcyJiZaZVZxKCFmUVp6WS1pc2Y8Ul92RyNyWH09UTNuYXhXRz9CSXJhWVJqdzFL
PWQqND4xRmJ2I05mCnp1cmYyP0pIZ3tRcmM1ekIhSCR6O0cjOUtSdzhEYTN1PndjfTN8KFRqOykr
WCQlOWp9U29lbGR3Vm1aTn1CTTRTRAp6c1RxVjw2TSlhdyZ0TEhhNz5QUHY+Nl5wKyV3IWQmN0ly
S3xsOChUelNTQ1Z5Ql9neX1CdGsxdWhhZl5yVGBAU3MKenMkJihKIzMmLXhWX0R5WWJnVk07ek8l
dzdwWDB2dFl2YFltbEZARFdEO1lfRzlVPWgtPX17VkdRMlRLfnl0MDt1CnpPO35OOUZvez1CLUNt
NC1mQjklfF9CcFpAYyhmMjI0WnRiQGt5dFpXRW1rODtvWWk2OG19N3dWamtfQm1ncF50PAp6az5l
MG1pbGFtPDNpTWRWRkdBPFkxfWNea0h6JVJPO2V0ITQkbiV0YD9HS15XY2lidVdYQz90PjJsZU1J
KVNvU1gKenJfdl9VZkY2YjxLe3U+e012dDlHY2JLcGBCJSt7XkJuKUJ1UjUwVCowNDctX1d7NzAw
Z2BFR09ATHJfd3pJPTs/Cno9ZjVZN3JqTD4yN0BxXmomJmN0Sj1xUXFpcSM3X187PSE1Wj8wbG5W
MVM1JmskVlU8Ujd6ez1EanAoQnI5Nj16cwp6Mjd+N1YzbzljTCE3MT1MYzIyVGdfaVIzQkt+R3ZL
RWtjRVpvZyFoVyFDWCYtPH5XP0dQKDthYEZjQzhwWTNVR0EKejclYlU/MDhORGJXaSZuUSk2Z01X
NXxLZlRub3RIdENkaFRjM2YheVlJZXRqajk4aXV9WU5Va21XRT1KI2R8Q3tqCno3e0MhfWEjan5N
WXFRRz9vPngoWloyYUBANklmX2l2dVYzYnRrQ3tVeG0tYFZUdWl5I2VPTjNzbEozRE97OGw0WQp6
Tk43Tn1xK3BtPVhDSiNPODhOWmQ0U0ZFYXtLN0tVbEAwOXs2YiMlR291NSpXVFBlcyo2eXlwcU5k
NmR0MGw3Rj4Kek1lPD1mS31nWUVYPlUxWjQjd3d5M3JKeEZEa15DSmRfUENOZUAodDhpb1YoV0l1
UUAwOyl2b3BtViN0RkhqYStTCnptdnM4fllLejFITDNve3wjbmA/UnEqZU02em9rPGZgVzJkfD8l
NW5ZZ3lVZEQxQ2Q1anVfbl82MFk4ZEtpdTVMbQp6dzJkTyZPT2Z0NiM3Y29oWThOQTJDYEFmM1Iz
OE5xNzNuUXZxPzhAcWhNTiR4b0lWPUhGO2E5JmlPWkF7bW48YyYKek44NFR4RHhhbHFeI29PO0hx
aDk/UGkxWS1MRnFYfj17WlUxODdIUGtsQnYqQDg+N1k9SntTMkJLeTZZZ1FFbmRjCnpHSGVkS29G
Kl5iSUIyRWJXRCZZK2pvQypVYGxUTmNNUGwzNERodnJBPTlxa2pFKXhxMmE/bEZ8bDU1JjFDPmxX
aQp6cEB4JWY7aStJdldsaE50IWlZPEREMDdAKDYkd3dWc1ZOeWtqWCYzOUgrRmJfRTArI3N4dEM0
bEcoWmNwN0BtPlUKemJlYkgqV3lLPHs1c2V7QHpnNSVUaSF6R3RAd2lmbjYjKDVtPXJZSHNrPEhn
QW8za21LTWtzPF8lQkM1QCV+JnpLCnpQVlA8UVpYeCYxZ0pMbiooQl52aStjZis9TXFIZ3FiaVBl
IVRMfHJrZyFaekMjPjhOMkFUTUE9WnZZcTdFbnA0cAp6P3ZeUnctaUREKClKbWZCSUMqfU5KcFlW
NVo8Z1kpXm1LbmQpfXFnRClPIS0wQ2tVc0ZhUHx8OVFeRzBmKGZ4NlYKej5JO2c8aXokYVQzMjE/
OzJVU3VrSihyT2pOPShtXm92P0MlTGtecFdsMGtfM0VqPHYyP0tfNHRUSExwJSQ7OXlVCnoqTDBj
SClEbmlePzhEaGhRSjx1IUttRDZuMVpKKU9nd0B8OzE/alJzbDteKCgoPGtYPnZyTmIxYG5+Rkh7
eWx5Swp6TXprYDB4fkNgb3dxRX18NUZNV0FvS0U0VG5HdjF9aXR2YVctcX1GRXpFfCkzYCN6RWcr
YTQwfCN0NTViKmVNfSMKejtCejFlNFNoeUNtWFZ9Z0ljbFRWaGJnUGVxI2xJaXVBPDs/cntFYDJA
VXh9aChNYVFmTzNSb3ZnYl5TTjJWbz5qCno3KGBAJWc2XyY7NzJpbG1oWTR2NUEkN2tZd1NOKGIm
b1F6elY5SlY3Y3hUWFRyYT01ayV3QSRkRURXQiltXjJxKgp6eWhtYURJWGE5dkRlZD14UEBeV1da
WS1QbyY+b0V4NVg5PTlQfmsrdzdaMzZndFFidD5ELUlfc2ZLQ0pAQ2AxaUwKejtgVHdiLVpSSk95
PD5TNV4qaU0zOWcxKSVNS30kTEZoYDFUMj1DU2VkfWtyPUd6Kl4+O1NXPiVTKV5DNStyWDBuCnpj
VWw8K3J+czZhKHp9e0RZbU1HfHY7bUZSMXVpbmVYUE40eklEU05OUjhidHFVU3xhWkpUK3pCcHQz
PU5VTUJ8bQp6ZD1MJHdPZ2wtPUw/PXQ5M1JeKEhHa01oKk4hNnV2dHFofT9BWU1obD0rbnQje0gx
cz5oUSN0fndTOXhwN3wxRGQKenpDZHc0Tk84S3ZJQ1h6cVlzX3ghXn44XkQxU15aU3tVa2EmeFl9
QFUpdVptLVB2O0l1aztSfWdnU3x7WmlZUjQ1Cnpfa094JWZpZiVUPSpuUypSeiFoK05QKWpaZmUj
UF4yYTYzWl88fmdKLVZkPWM3PlBHUkMwP30tRG1ScSU2N20qbgp6Znd4b1M/ZHtqWjIwfFZ2MkRU
UktBV3soZDdyWktkNkA8WFI9cyVlVVZIKkRQQ0xjO2N6I2J4IWZmNjZiMCFFM0MKej8lcSRrdUMl
MVkoQFI3U0VAIT0ham1geEVRTjZlJnQ9c3JLa1BzN2NpQU4/WjlhWiNseGZkNmdKOU4rOXR5ZVg2
Cnp1d20md05+NTBBSH5AKztTeE9fYG4+TnhHRXtOSWVnS3BeJXFgJTBqI2pIRWZ0a3ZGT1lAKSZO
alMoMmpBMz1LRgp6I1NqYFVJP3piZGl6O01wcEU1IT5TeE9TRlAzeWFJajAhS2RRMXdsI2pKVkpO
Y18rTSpIfSZ2NkQyNERsSmY2fjQKemBPbTktY2wkcmReSXl6RWFqZmBBRURsNkhFbUhpbk9qciVf
V0NVejUtNEJRQ3kkOyVoXm5EfSphckcyKVFmTHwoCnpaWDU/Zjd4V0FgcWdGd2Q7MFJVe0h6JEZ+
eCZ2RmRnbUpycy1rJUtKVn1YdWlQeilpamBkaUxzVl9FI2UtSSFoMgp6cjdVQDtqKFhiI0AjUEU8
SmxLaC1UMGJNND5LZz4yaTVBZCRLRitfVmh1PyN5TUhXM1NqV1pGJjQwKz0tUzs5Y00Keihxandv
cyhhUWZKYHhCU3A2a3NkITtgNlZuVlFHYzF4JlJ2d1YwezVGbSh4Mj9fZz5yUT1McSRWUU17N3kt
WiFqCnopSE9fUFYoSkVfWmVyP1lyZnk7QzE1QUMwc1NoKnRRS21rfClGK3R3QnZZU2E+ZUVjISFQ
TXVPeHxeeHtuMGtQegp6dVFCeD9Re1E2aDV2Q3F4Pkl0VFAjOGlRKTlaYzxIPlJHMXRGdHdNZCt6
K1VmKUopWWRSbSlVOFF3PlpfVnJudXwKempaQWVpd1Q3d25PIVlFIzY7c3pSd1RZPTRuN1dDbm8w
KzxXc1NoeXFBKk1kZSlKTEpkX0Y2Yn4yUXhqLSlaTlN1Cno5cXt8I3xFZHokdmNRRD1yWXdSUXF3
enBocnp8NzJHWUI+QT5gcWQoZHIzfEVFMiRtKHAoPnQjZ1ZaTXZMc2NGNAp6SjU9U3xIcXZYcz0q
bFVrZUYpVyVDT3txOSgrLXQ7XmMxTntTeF47Y0VUb0BGRj4/REBqQXRuPm1HeTA/JH43I1UKeiV+
MGo+ZUA+bWRybzZWJlhpaVR6VypFKE5ee2RfMCViaX4xcjBMVkE4fFQ7N3lRQDc4U2k5QCUrfnda
dHg+Xkx3CnphZUIhMmtsPGxfQmZtcndIfUBHNlJ9WX15JTxGUEV4fCY1NzV+alJrO3gtPkthbW53
UnhUb0dUYW5CcGMteFJwPwp6MHljdz5fPnYjbk0zSFMkPTJ5LXp5MW4pRkhSWT0oUkUlI2hQTVVD
fGFkS3duPGNYUW5Dci0qVlBSZzd5ZENDbEUKeiVEcCNDblBqeEFzeUMqe2Umc0xMSXFjV18rdFle
JW1La3NRWmVSVl47T2xSPz52VW1qJjtJViZAPmg7ZXstKWpYCnpBTk9QentBMEhLNzRaQCFmQmtO
ZkB4SlI8NCk2YzM/e3wmPWQ7SVQ5O0QySFhsejdVUUo3eVNESjt2S0k4cEB5KQp6bFR2VDJjaF4t
XypFcTtmV3Q0VHhqTFJJJHQ4MHprPkpga3pWUlRAcWx1YUlFTzxoSEs0TXMrOW5YJUkwQG1BTmUK
ekEjeCh3KyYwbmN0dHBHKz9zOFhxOW8lU1I+WkEhLVJmc2slSExFZmtGeEtkdW0zbXsxazFIeSs4
bGpsMm9VdEJPCnpLQkxGdXU5JWZOdCE5LW13WmlMfWx7Jm8hYzgtO15RZzg1YWFhP042RHNGLWxu
aXp1UWpaa1pSO3tpckB7akFpPAp6bUJ3WVdRWSgjPnZyPzwjSTUhN3ZZOShoYUNjOFNmNXJlc2R3
QUNKQ2IhfGc9Tz80JW5PSWJGPEZ7NWZte2Z1SkkKemowUHY/VWRFKypXPyY5ciZQSGRRJEJUJFBh
VTlEdjhNKTtTRk1YRy10fVMyVE5FXiNWYTJANTk0dEVecXNqSWx0Cno7cEo/TG1LSXFgWT9ocTRi
Qm5sVCl3UHZlTU98JkpxciVKMHc9T0x4U3hgTFJvTVM2cVQzb3o8PEV8WW80ZkxvWAp6WnFrSElF
KjBDdi1nMzhoaExKXlh0TWo9bCMwcEdIdHNFUTJSazt6RmFhbXBFWUwza2xEfHxJbkwyaFpIbV4x
LUAKelkmTSZTYENgJSg8RD9zQSslUj48NFU+KHw8KHx1P2lyVl4mKzJuVkV3XyZOejxFU3ZzI01I
dW1vTyM5KV5BZlpYCnpTNE9TbEU/O0dSJUBRUWpUVVNAKFM8KTlGTSomcFZkTDM+USp9b2khX3JJ
RDclMGl2YmlAZn1jKjxqXlpUaiNCPQp6bEJlNnRPN1I5YD00M1lJVz9mUT5He0pmdEhLXkZNdWBg
VHpUYUx4O3VCKXY+Wj54O3M3UzxWXkFUKCttWmV0WjEKelU9Xzg7SU03Qmt3XkpqVVR3VlZTUmhE
KCpqTGEqbGpKJGEhaF47U3JFSzxOZzZSVU5SWlQ+OV83QjRqfkRrYCM9CnppQEEmcCl9cmdgaUk2
ZWdrP09nZytKRV9xVyExfWxidzBGZ1lWV2RaTWgzWjgpO1Q9MipMI2lTSDhwajI4T3YqcAp6PD9p
TGE2Xj5mKHJPMnJqLXZ0QHJ4KmFRaClvdXIzemRUNF50PW15aXg0Z0ZjWlU9ZypsdklgJkcwTG1E
di1uWSgKemwhNUErOHByYlQ4cmczfjJGOCZ+UWhUK3lqUz9EMWIlPmZ7VUN2aWVePVBqMSlsP2VN
OUU9fDdoZWx0JChPejleCnpMKVhUVEw4ej5naTxPTTZYWiM5JTQpPCFTITtOfWdRQz9mJiRmWHpe
d0gyIT1JQkV4PUZmKSsoSSU3cWhrR2N5Mgp6eTQoKzlDNnttVEE9ZGFaKDY2PFhEXl9xJGNWKUdF
PjlQcUdHbUghQiR9MU9DRkxSZj5SfnR2cUdPayFyU3lPYCUKekxQUnVIbTFDVCo8WVk1c19EQykh
K2lLNHxocXU3N0I0eT1EY2xEKFgkYiY8MnNjKlF7c21NWENxYXh5M0V3QEU1CnopSkFeJENZIWpV
ZlVeSnRRUipCNFRCO3ImUXJIKEs3KUNQcHtpclJeUDBvb3hwTnB0Rml0P1VgJTJ7M1NuOVdzSgp6
cVNNemUjOSsqPVQxOGU5RChkU3dafmRmOGpndjFtUFApM00keWMrVVooRUFAaUEmNkIlZ1F8dExN
U05yKyZNTm4KenlhKXpuZlFHQUwkUFZWM2EqdDwleDR0NWByV3xBT2J3K2RVKCEzbm8obTZSY2kh
RDBIdkB+Qz5yK1JyVUk+Z2VZCnpScG9CdXhVbWkxQD98dit0SmdqRHd2MCgtIyN5dEJuYkFIWENF
fjVDRko0Xl9KWmNEOyNfTyYjTSQjOD94QHNjNQp6JWVgT2dRRmdrak42Zy1tTUBwMSYmNj5VI0JU
aVRLeE84Yz8kQStxZFpeISgoWCVYYnsjejxQbVVYanM9UXpVPHYKejFyeTJUSHdGYGxFVj5aQ2Qk
RV5TUj1UNEBGcWdCanYobn1CYyNSY1EtOXwhajtHMCVrWFFWYkhTenw7K1hSU2h+Cnp1Tj0jYjlg
bW54OTF8Vik8c0FqKTEjQzViNiRlO1JLZipHWitqTEQxT3RjbUotfW09MGxEMmZ8UW9JfnE9fig3
bAp6bz55MFFYQyQkTTNyckZIPHIrRFVIRWl1STxgRHlaI2h1MVE0SCZJNCE7UipncjZ4OXBVK3p+
bF9vdVZ4dE5ofCUKelBiMWFrS1BCd0gjPj9mWC08IVdMZiR2TTtgeDV2c2xtRztFYW9pbWtpNmtL
N3xKYXtOKyZ8QHBEMyQ3JVNkQih3Cno3Jj5JZ0t4SXNWYUA1JUlZNGxeQ24zJUROaTM2ajV5N0FY
NCRMcSFjVmFTTU5yN31qUk9pVVgkV1NvUkA/WkI5cgp6I0F7UUJ6KUpwJkExQ1MpVnZOY20kP0Rq
Rmw3a1o4PnluYVVoczRPM0x4NENiVnRAdU56PUNaYmlzKmM4UVohbWIKelBlSE9AVSttMGk5NT0p
JHglfSYmRXlWPl5aYkN7NSt4d2xIbWN1T29SMDdybGZgRHkrS0xjNi1NKnliKXtsP35TCnpCTEwk
N3ZqTz00SkQ+YCU4U3BVUmNZeDtydUt8dCRJc3hpJkliMCRqOCZDdSYyZG9DJTN3Ump0ZCUmfVJt
akdgQQp6UDYydVdoSUJ+RDJGd04mMGAzSEMySypaRTZrcz50Wi05ZTxOb2MmWmdtIzB0bUE2KV5l
Njx5OWBDOTgrdkNRRzcKeld3cG13O2JkREB3NlRMbDVaMiN5PyR3O04tME5oXkhiengoI2RVUT90
ajFQalVGZkp+PXBHSmh2PSFBSjUzUG5QCno5a3RiMTcwdG4zM2hqT3dyUW9yc0wwRE16SSU+O31V
VSN8MjM4YU5zM3AjNCtlOU44MjcwZi03ST8tcmNoVUwobQp6R05+N0Zia3NJZlY/VGdhJms7TWVN
Qz56YFM1eSNqU1cjRSRoQGUhS2QmXm42QitAYUc8d3szR2IlbGU9QHA+SUEKej5iK1BUYzxacFBV
UXlRb3FTRUleaW9IPiNMMjM0WXg8KkVzRk8oWns9OHlfUEU/cyRiJippdzY4KjhkVHdQS0lRCnpp
MlZXMXZJX2VfVnJxPkpzdVJ4YXVKZD5AI05kRWlkKkBZKTgxWW0ldEZlSF88YEwhMTtYJWdBPnRW
dnQzTzM9NAp6XkN2RHNlbkl9JChVUlJFb3c4N0xLRE5kWXN7QDttKnBjRkxzY0ktbUhBdHowbHwr
NGNnfk0zbXNQWTxGRXdhcWIKem0kbT5yNCMlQXdtWnl+JmIrdDdodWdTTSh3RmwrWm1zVSEtaG53
VEJ5QSNjI3pQakdRNjtRKjhsdGh1a2dCYFZ+CnpOTGQ9bllpUWVUd2I4SyhnQGxITHFOdjcjNDVl
Rk1OdE1xbmxDIzJeQVBnKDJRQlR4JSNQJXVgMk1QbkxlN0JGKQp6VSEta2dTRzVLJV4qLS1KWS1I
Z2g2fWp3TERzKGg9eGxKSUlZLTcrIVoyP0RCP3JQLU1TNmtrSSNYaFlSeGpDIyEKek4qPCpoa1Y9
JHw8WllTSHZ6b1EqQH5BZDVBSXBefUJSNXk+VFAjbzE9dkgkandSaEltLUJsfGthRTF8RXY+PHQ8
CnpwTXJqfXEzX0dBUkFnMiYlYjNWN2c0MGhFcEJPKE5OdllILTZMaGQwcjBsTyQ4a0VZeF9AaUh9
Q08kclhLJTchSgp6UCZxXzVSSEBXVT8jdk5ha0dHYE5gZjYmJWEkRmkkJWxXdCh7SzNGKzI/PmdY
IzAzMTVUIUtvUyZfNUQwKnxGYz8KejFsPSY1V19VdEV6bDA+UjcoJlZiUXBCRz1QTiZtcDt0fj5L
NkFiWUs2QX1nYFgjM29eWUByUXwlbTMxbDNpMG85CnptI2RsY3VvZCE2ZTtjP2Z8MVFOfXVqdTxA
UnEhcDg9biNJTz09KVBEelRLYmYtJDxxV3p4cyFeSHhjdEdBUlJDcwp6a083emdtPFklT09hZT4+
dGRvOGRxUkswRUloVUhBSWlFfCNlfGx5Q214fS1OT2RGU3F8TWJpfUUqMWF2SUwjbXYKemx5V1hM
aGY3XlNDTVk8dW44VCY2Q0tIcyFFTGVxNzFeVEk8cmhpPCNjRUNXTGUkZTB7aE1AX0dOeUNQWk5G
RilyCno4c3EzTypRVFVpY1lXSH1hcH5oVENRUXRuRyZ5VV40TDQ0bUhobzYrJXZyTjxHTDxpQHNC
fX48Y1VIVVp0WFdaOAp6U0hJSGpAJWtGPlREQUpfK21AOHd6VndjLWNmViYlPEp4c2k+d248aXU8
X20+WlZFSz5ufWF8NEBzXis1Y21EJHEKentgNi1Me3JuZU9BQWFQUXpqfTFydWVVJDtfOzNFPmlR
b1MyX2ZQKWV8TlFaKHxOUFVScFo/MTsmK2djez4kJkl1Cnpgb2ZGNV92fiVpX3RPNT4xMjRidz5U
OXBSQHdiQy05eTxLaS1ge0BjJGgrXmc5ZXd9VUBlPzFNe1AzZlhLbHo4eQp6ZWsjPVE+MVVzSnA4
biNAKilPfWdkKE5HfCgyR2FkeCZMYlpiTE49bVQ1eyoqJkEmTitMQllhQioxe3JORilzMWsKenZp
TWRwfDZsTF4teTs5Wm12aXs8K251UGJ0OTMqKng5X2FRYVMqcV95dEg3XkxROFFAKFBHanNFR2Up
USY0KE5eCnpeVX50XjFzM3w2N2NFJGpRIUh3VzdoNWZ5cWpxVkRqazdFKUE+Rig9KDlPZmkpemFK
fEYxSDlvcyQ9T34zcGR3Tgp6IW0mYEkxRDhYTGlzWHZHRE1BKVlSMF5XLXFsMShFRjZBYjB2dUxo
VFVTKXNncXBUZTZXNTdRRTAtem1tM0o/TigKejNpdHdXMkpqYEkzKHlVcVU3bUNKVUkyVXJoQEZ6
ZD0+UWBFTSFAQzJZaGdESUZjfmx0VTshKXVsbU0waD9mX0gqCnpvUFppWUotYGNDMSF3e1UwNnp2
aTI+M2JSbXdAZW4tdk9RbUpQJnZZQENNKXo7QkNOcmZNYkFAZktMRlkwR3xRQQp6MENXTSkxTFU3
Vio1TGN0V1VMbmVeeXxkO0JIYGd9XlFWemRscTNCenhVYGY4JSY9dDI7M2pmMkZpXzElRXRvO1cK
eil7MlIjbEBuPUgke0JBPW9yN2E5ZD1fJiMxKVF+akUyeWlqRU1MdFBgeTN3bis4dmQocU9SRUti
MkY9NGNRdmAjCnolRHB9fShfbzdmV19Ub0Q8YndrKTJRPFJyWWAkOVY9Skh3fSZPVyRZJDEqcTU2
cUxJd29MbWtsJktnajZ0R1N6Zgp6PW1hPFdZRjJZT3pVQTFQPCFsWlJVfkUwSDIjV2BDVUN8Jn4l
eW0/VjhpWXpBQV48bDlCP207fFAlc24qMmo4SGcKejhhUX1EUSNQWThybDZkcjE3LW5vMDJhV19m
UTVofUtxPXJoeiNSWXdmRThtI04mfWFZMGNiJEVIbCZRQEc4JDYyCnpoNzNTVDJLMzxXJHcpQ2Fh
THtDTSZ9MU1VYmp3dG5uQlJna0ZwaG0taG9BSmVKOUxqS087Rzd+QWpaVkw5Q3V6TAp6PX1acjZD
N3JjSkMrU2tvNGk8R3lLWWJgYylFUz9EVlZJfj56eGVXcUE1QWcrQC1PeDJQeUZHZk4yKlBLfElP
ZFIKel5SSFI4X3BzXjI9SnV3Uz1rMj14aUpUdURKTkwraShBd1Y+bnA9TXxASGhZRyhQMUJNJnJR
XyYqNUIpRWNzWn0mCno8RloqVm0xWG40eXprYm5LUWxIZml8KkskPmZeKjtRK1ZBJmU9PjBkazRi
Pkt0TXloSFhCZT9mM29lNyY8O01DdAp6KmhvdGY1Mkh3bGx0KiokUkZ2MCNKNTBwKDZ2OEtYVVY/
dkRKZDtXQ0JHPEd8JXdWVlZNZzZQYGh0fm48X3hVPloKemZrTGtuP1QrQnxeK25sVlhQQVo0Kigy
Z35fREUqUXk7RWAqQk98cCoqMj9eODhTQHdCYV9PWEdFWC1OUnJJVjd1CnomRjI8IXhqOz5pPXJV
a34qMj9UO29mSDwqOT9eeFJIMH08c2l8RThPUTUqYXhjKXZObT9ReW93cENQVHoqYUZ5Qwp6NF45
PU12PzhXTU9QfH0zWjdpNSR3aSg1UkFzeHc5KkgoTTAhTT1nUlZ2ZnRmXjN1JlYyZ0VaQHRWWUkq
aSN+a08KekkyPWF3aj9CcHpqNmBKJCZmdVkmNW02P2pXQGMzYURlNTtNaj5BOTQtUldAR0klPXtl
UHJ6OSFoZmA4M21he3FICnpTcT9gQnM1c2lzcVchbT1Xd210YlRTTSNKPD9pd29TZGR9cUNvO3kh
ITdoMnIjS358dVVtKVNvR0xKMjVpQlhgVQp6WlV3ZTJEI2k1NnQ1UmJGK3ZOQmJtfnh6I2c7fGUl
a2c3fDx6QjFtYzs7YUhjPTRScl8jQlVLNnJVKnNhXnVROCoKenNtRm1NXjVxU2clJGJWRyh6b1lm
XlAmc21vS3Jlfj9tSmR6cl5tRHZBTyVGWmpAbH5gY1Q+YT16cjlOSHVeSz5FCnoxTDZWVD50eyNJ
Z1lZIX5OVzNiZk9oQmBsb2JsVlRNZWIpMEteb2hgZkpYdDMwaUZPbjMzditkR35oWUZVY2Y3Vwp6
dypjPTBKXzM5U0kxVHNgYTFRVmxLbWxuUEZAWE1uMGYwZShwQDNuNGskX2FkMWklISk0OFV4RjhJ
VDg5MVh2NngKejJlPCRwS20qe0s8WkRMWmsxM1MkWVhJMipKUHlVSjB7amZ7N3I8TTlHa2AoSlNT
RGEwVTxIOFkkWndjR3JSa01FCnotKGc8PHVHOGJjWE9iNEYzZ3A+fVZHTFIyT3Q/QHg3Zj8pdmJK
XzNWUFNhJkplTWI0TEBGQTNVXm0lQj83eXNQUAp6WW5TOzZfSXx3fGl0K0pwYUZeM3pvRiU0MWdF
THdWZEpTNmw8ITdMMndEQ3l7M0UoQmpUJEtzbHQrQz48STFiQDIKemJJWTZ6SDtIUzJGLWN0UktK
N0MxeVBXMFRue1lEQ3pJNCNjZHxsbCh0QDRzfFdQWkRfKHBGVH1fOWd5WGRhOWBLCnp4QGoxZTZH
U21ibj11KkBLWXtHYjR2aWhGRG5SYUcoe307KD9xcnUkSDQkQjw4fmhSKHZzWURHaWkmN3xqbW9M
ZAp6eHpiWntyOEJuaFVAMz50aG13YnhEbnxeI1M/UnFoTnspTHVhaCtkVThHUnYwQn5vMGw2cFMw
ejstWDd5Wkd+OWIKejUhV2tJYUptMDBGK19kfmlvWStgSXA5bz9GfngqdSUrOHk4TVBXeVohaUVX
JExoI0AjYCYtNHpreXVWNzlvKXgzCnp5VEVGZFFJXiQjYGV3Vm9qI1ZfNWdMNFU2cEckcVVjWSNS
fntGSX18ezFjMndMJWFmU3NZUn5rSmR4fH0+Y0wkRgp6RWZRdSF4dHEje217cT14UmNDSlRxOVFw
blMze3FCUyN3TWk4JW9BKEdfOHZIcGszeUFEfnoqZThOYmRpO3txRT8Kek9mKiUqQmxKeUNVQipO
ZG9pZ2VhWDMpd3JESU9OMjk4aVFBWGp6UyVSY2JLQSg4VClwS1hiPjc5b0BZbzxHKWExCnptbyhG
eXFOMUZ8YXVUQTdDZGNndHlIdlRRTXZWMWFNXm92JkItMExXQntMZ20mTjZ+cWJBQE8/OFRUMmBS
RWVMOAp6bHxpTGZFSGdySHhHWDQ/azlrM2smNlhDRyUxYTlIWUNKPyRVSypoO1ZjZTE7cTdmb3Zj
QlIpVlM3ekdXVnNtTE8Kel81MEdDMSMzaEBrKTtAaE5FSEVGXzd6PSltOyRhRzZ8T3t1Un1eVkle
Pl45I3dgdUU8ZTFBPnNXMnhJPzhuX345CnoteFBSTW1Ldl9gX15sZXFILSM9JkNzcCF5JD85Yl84
ITZZWFlvd1BYNmNzMU95RFQhbmoya3p7WSttSzApNk1VSAp6LTxRRHUhekZOc25SXlR7NWZYSXVe
fFR4SXtxS0tNMzBSeDNSKmAtT2V4VHhKdTIqcXNfe3pWKEwrPURVNW9QeFEKel5nRSk9R0E/flBW
MUZLPEB2RkU1enkhY2RLcld5TlB6a3NqdW8+X2VVPkQjMzswUW5mb0NvTVBzSklrQkNTVlNyCno3
KkdYaDBCaSNNMGBONTg0WnVmJEY5NkRvRGxRMy0wPn1pSTA5SnEjdW5PPWF6IVFMZGZWVGxCMGlP
WTQ/fWIwVwp6SUtUfFIwPkNZUldxXjlYVEVIJj16WFIrNTh+X3t4e0JPJV45cmclNDBQSV5kVmI3
KiUzWk9wI2ApKkN4b017PmUKeiEyVjZzVTt3c0pvM01BJmxuQjVjUFpPMlpmN1NtZmw9KCR+X0o/
QkdVdkFFfjZmTHdZen4wfjcxcSpRRlcwNSZ1CnooJko4N2spKn1ENWpBeGxocSV+NG4jfHgyQGo4
ZkNneDJrSUwzUSsqRVg0QysjPktkNXRhZmJKJCY+Q0NUVUolRwp6ZU1QWHp6fGE1Si1qIzx9UUVk
NH1AKnJSZ1ZVd1U/bF9meGNURHNRV2ZGelA9cTU7Rl4wRk9ZelcrMEl5RVY5VSYKemhYQCkzMSlk
bW81RFhaMmkwbVQhPF5VUnlPK2ZAN0ZvPlc1MHdUPW1ufXFTYmFzSHFBLXJWb0l4IXUqPiltNlZi
Cno9WFh3M3BWTldXdi1aKFJ1O0ZoLUMmZHIjNUImXm1tI3pwVno9RWI8d3x9JVcrJFZYVUFDd1pH
VDZSczAtdkVDeAp6R1RUNFJLa3ZWPCMrOC1fbndic2piQTVCTikzVkNYX0RjaWFlYzstSmwmdEsp
QjVoZStmdkgrRHErMCFjS2gxQXQKemBTcG56c1g2SFoyPmd0VWU9SUc8c2w0cFAqdStPWXtyJHBm
WTN1d0ZmRnYkMEM5fnthVyFYOTlILW56TmwlNHRyCnpkY1VXb2k7YUhrJWtTfURDRWR6djJ9QTxM
cjFlak0wSDFgRXAjJFAkJTh2Tm1kS24mK2Bad19MRDtwb0V3K3BOPQp6bXRQVjY9PWBvfSF+N3Qh
dmE4R1hWbl9QNz93RnBASHpocVc1R0RyQSZkJXxOKjZ7biUtY09uLSt4RHwte1BPcyQKenU2ezBK
MDkoSHhBdiFUN3YkVy1iZWs3ISYze1UkNSRAeUt6UHZFPm5LTUFuSXNPK0BsakJiTmMpMW44JEdi
YGhOCnokfSMkYkJhYnFjOzheRHJOUCZNZW59Jml3TTNwWmJmJGkre0Vgak1mPzdSZSRtQHphZkJS
d3JUZHN1cWV5dH1tQQp6S1J3QlJVO2BuMHI2cnxAT0RBVGZDSTI4e1AqPHJxS2YpcThKKnlsdDFH
ZFdgZ0RuXnFLbjxQKyFhdCUtJnc+bGYKel9xcSVuNz99SH5LNTlLUXFwU3M4Mk14PjRObEFaSFc3
JlJMdHp+PEdxJTZPXjxzYz8hSlZNcWxePmJVeGZRV15GCnohT3tqcGEjKDd7MiFFSXBMMjZTNXE7
PCMkTld6RyQocX5KNzByRCZUbS1eVXc2JDkoQns8XiZYamY4eSFVa1RxSAp6VkchI0ppX34kantj
ckh+UzhtSCtjYVN6UjRjMGtmaCljJjE3PGlDUmcjV3pzYDdlZCN8RTEwamRLUil5MUReX2sKeig3
XkNBbl9YVUIwZ2t+Iz4rJEhIJUY4Mkc7XjZxZWgyWGM5UnVjR0kkJXJ3IThXMVcxUGJNS3srRV9n
Tyt9elEmCno5QFhxc3VTJkkrT35Fenp8SWh5bDFZcG8mVjFTcUVEcHNpVmZ3a1RgWTdNWWtJb05z
S25je3J4ZUNpeEB6SHgzawp6Qn5HKig9TUhobHhaQi1VOWBmUzZCeVd7PiZwWUg5I3dAbXk5YzhD
azE+UWAyRH44Q35AKFhGRyVJWFFGUmgtSUoKelo+b0g/TDJYazkpUDI9aEtkYXg+LVNLczdrPnwt
PDxYIVIrc1lXQntQJiRGV00rQGl8XmViQT9ZLWk/fk42aiNuCnokK3o+dntDbURnPj1Gaz5zQjkl
WXhsJGdObXQrSWdOQnZ6cnB7ZFQmcHtPUSQ4ZylQfnBjRkkhTy03czE5JmBAZgp6TEohYz5JMStR
KjkjNm9WJjM2MH5LMVhhNCg/byRkRGxVdE1xT1I7TjJnbmEoRk1OISo2bC1KP1JlKlFte3JESUAK
emhrd05iTmhUUmRhPi1fTGZWN3w7PT9pb3E5WmpkdjwjWiRjb2JJRWk9cH1tMzlMfmx1cWFueVlW
N09VYlIrViVzCnotQ2lmP2V0TClnUiR0T2QpX3Y9N3lQbG43a0dFci1HMHA7S3BMNSg8PllSNFF4
PVVUO2omdjhlPWlNJnVWMFZYbQp6eiYreGdifU1eTmN5K3g3VVEzVTcodT8oO19xdXQjSmIxOFVe
eWFfdiQ3T2BmbEg9dDJhO0wxVXM7ZyZJay1Ea0UKemJ6QStLb345UytnWmhPMk5nR3l9KSFjZzRJ
JThmaVo8KWNZOXkzYHE+JTtvOVM2RDd2Jk9UeHIqZzx4UVUxIUN0CnpHT3hqLWNySmdSdWkpR0dL
N05IcWk5ZEB4QHJoX0ZaTlUxMTxTSlVGc2JUN0FsdE1PPHskeDh6cmE+cUspazJMPgp6T1ZrOz9o
d3stPFJEaFpUZEl4WTN7c0dXQ1BPZygrVEFrTFZDYmVpUmVVWitmMytNe144UW52VihDX0ZLZFkz
Kz0KelJtYFcmWEgwNDtiQ1VVe3h4eT9rOF85KW9wTnYkdVJYelEtdTVFPWZoam5LWSpiSGBAODkr
Y21mT0FgfWBMbGQ1CnpwVCRxfGJObTZYQng7Q281aCtZemlFLWolNWlBYFVFdVdWISR4T0xQLWpU
ITk+dU1keS0qQFVxUmlje2YpfHpRWQp6cFY4TyFKJmkxQiNhZXg+IVBZZUU5YyFNSVp8d21Nc0FB
VyYrdHx3UFlreT4/SktzODJvITNBYzM+U0N8JXxxK1oKemNDO1RBOyRgPyN7NWAmZGdHaENmTlAz
WjFMN3dONSNpVzJ0QmVPfDlgSC12d3RkNWYoTmZyN09aQVJNeTQmNypQCnprZlN5NVB1aD5zNlpB
VTBMbzF0KDhFKzw9LTxjMjFuazxTOVdzX0pRZHluT19iP2daSG50amkleiRoOH5Oblczfgp6OzZe
KmNTUCNUZTxYfjYxZXt1OE5PS3ZSNFBrKG9+OHwrcDBwN05UM2NHZF4hRitJb1k8WmJmcWRZKERM
dGpnRCQKem82SThmbHYhLXZIU2U9NUs5Yk1sYFRSNCFuX3VVQGExUGl0bEZqNUVjfkpJTEx0d1A/
KWVeTnlaQzdFc3dsPWxXCnoyZHVCSHYoYGlGWFh7dCVQajt3WCEpezxsKn5EJlY9aCZtfE4lbDs4
aU1gVFpYSyUxfisyN2NnP0ZZOHcjNXB9Ywp6LWlAUnslOUJ3Q3dFfTV6UTRjZiVPKyZ3LSQ4a3FJ
MTwlMnxhVk9IKz59cmxPWFBTTjM4ejcmUF8qOVVeYkcocz0KejdDWGdXaylTKjI2PyZVfiNoUGc0
VDg3PWxQUDl8KGpkckcmMUExWmZmcSpJYT43c2g1VU1kQS1ickFJNlJoNlNnCnpzaitIO254ZnVO
R3ReQT11OX5NbFA+YSt1d05rQkN1YCkqcndhaGwwS341IzdDeVo/LT5Jal40MjdRa2ohT0pBRgp6
QCFQbCtRS1VXamk5QTY0YVZVOH0+ZThrWih9U29PKXk1cmdCSlBQXyRNZi0qY3M0bWxCI28hdFgr
Qio9PWdAVUAKejN4KEg3bk5jajN6MEVmQVVIbEBDNzJRT1ptPl8wfU1kRXFVVGNuOXh2MFVzSVV4
LTIodU0kLSFXbj54PDE4KjIjCnpsNnhlTWNBP1gwUmwxaWhXfDUkdWg/YHQ7bzQ0YUpKZFAqdUIl
YUs+XlBhcDlQdnJ4N0k/dj9VRnJzN2xjcz8xaAp6bzZodDJZI3paNj0mTzNIYCs+WEstUnQpQyMm
figmTl5oSFkhbl5BRXYrYD9qdVk1TF5FbiVte1AwPkpWVjNxZDMKeipnSTdaZCN6b34kI2cyWGkk
SF5wJHVxS29ZTmMqRG1FOEpuMylnV3d4fkVtSzNmMFpEM3Y5a3B8RWpCNURPUWZQCnorZDY0SVY7
NEJ2b20wKndDKXU2aSZIYEwzcUJAOEpHbWwweShGJH1EVHw8eEkrU3RRTXhGNFIydWlAJlhIbU9W
TQp6a3cmQmBYK2NeT09jPnpxMFA/WFU5eUZeSD18WHlkZXg7QiFHS2RUVEo8QjFaJFE8JU1Td05Q
TTY8fFI9Q1Z3TkoKemt9YyNqdld4NV5tJmdeK3h0cnRgeGw0V3t5X2tfXzchdndBM0d7Rj15Q297
aD5YT0leb1BqXlhSaVdQQXs3dEAqCnpVKmF7dWM1UmptKUdrJTE3eD0qJTNrYF9saHhpTyFmO1cm
O3EkK0pxdnVRSlAzKEtYZVheYDIkOUF8RFl1YlVtJQp6WG0qfWUxaWFWcSVBJWgqQ2EjSGJhKkYm
OD85PihjcXI1M14kLURBNSEwPUQxM1J1UEpzPHhgRD5ad01tc2NOQkcKekUzNnAyJDs/c2hSamk2
dnAtIXMycyp0WWR5eUMjazNrfTB4RU8tRztNQU9rNnY7XiV5TWQmSXJAUksrU1dVeENQCnppZiF+
fmwjQmIzaURXNzsmfT1lfkVGKXtsSGdiJHFXMjwtfXphWHhOIzxHUkh0cWdybjE/bFZobWFiI2Z3
Xn0tOwp6KTVlakd2N19gSk9ZbG0zMndnXzt4SWI5SFAhZGpSa08ocX56cmhSRzBvSWF0MWglLSZP
WmQ8SEsySD1+IzdIcXUKekVEK25BNkhZSThtXjs+ZSROZGtkdUdfKXc9VDM2eHlVV345KypAdT5a
P3BIJSpVX1chX0JZX316M3g0P2pgeS1SCnolM0JFaiE8WEtDekojeWxUWD0qeCVObTE+RUIrUjVF
THc/ZmEqZGIpd3FUMW1FUXtxZkg5e0F2d1IqU3lNSkhSbQp6dFJkRHxWQ2lxSCtaTUtldSUye2dm
YWtLIytHeT53OHJaUytLc3kpTVhwe1lTKEN4LWZiTFdFRiYtPmlqO35hM2wKemFFXmlYSj4/QVdo
SSgmJSM5OGpYMCR4STg5RVA5NSVgd0hYY3NpYm1eS21TQmhoJml7QiRSUipMbGMzdWQoaT1PCnpK
K1NzNmRYaVEhcERecDFPfkdtbkZeOE1lJW45YVMmNHAkfEhpJWBpUmppUDBXdUxSbD5eP2dMOSNJ
d1VeNT1NRwp6VkEtcXVZaiVPJVZRb056eU14e2kwZDFZbGpxfjdwMFgmdFI1TkVCayFGa3w+eFli
PH54UDY+RS1KUipLMFI1P2cKenNzckVEJDFTaH5QQ0FDcTxMJSgzXmQ/dkZGcCRkZzxPZ3p7anlC
dHtSMGR1UStzJVNgRXh0ZTswYmxHbElafDEmCnpxNiRfdVJrKF4kN1JjOHdieGEpciRzRFdCc01A
LUAtbTchSG8lKE5qbE9FdzVfMEQqVWJRXyE2JilGe21wUldacgp6emlTJmU0NUkrcjc7bT85K0Ij
I01pT3Y+aGhsNS1PS0ZjMlc3cWBTYz9WU1QoJj4hZENzO315PTJDSmM5TDU4YWcKenY9O1JPRktR
QzRCQVNZfFlPNU5qPnNpJDVpQjh9WV5iOzx8diVxNWhPenNkMk5HSDxIXmxOJlMtbG82T25yNjdV
CnoqRjBvaUhHZVdJdmsqMko/N347PEJ4fWNHYDYjZ1JgXjBmXlNgPUF4dFl5fEo+eX54VHMkdGkk
VntDczswKzFSWgp6MGlVNDBYZCtxKUIpRzZlMk41Uzs1WHNfWShNUitiPjAlaGo/PkkzVHtKfWkm
b3xyRWRpeDAmYnYwaUt6SkhYLWAKejdHSHshZlojPU9Sb29EXyNSQ3h9c3spQk1MZHtUYilETmBy
RkpRcVEwfl5wODd2UXp7LXw8KTI9THRiPHU9fWU/CnoyPjNxWj1Aan02eStDViR2fWBvRG5ON2ZK
TmRRXnMmVSp1RTQraFIyNGwqemlgMSZvN2d1bjhJZF5zPVI+d3ReNAp6Z1M7SCVOQkllVW1TNW5Q
TEY8YjdKI0w2ZiFVKEhpV0pDV1JMJX1FJUpnfSF3THVnU0gjMHA4VXRURV8wbCFVc1gKem9+U1B4
aD0hdFVeY290RWEpQ01DTDM0cTUmIVkzX0JEdytnc3t8TSUyblhYM2tve1VYOTdve0J4RVhHVkwr
bWlTCnptS3w9IyokTHBZPTZVT1YtRUNPR208bTdIUHsoQElqKmspSjBrXjRRSXZfViYlbXdUZ2ls
dTtGZmhZdzBIajFyKQp6O0JLJk5ociFQLTB1O31SXk1LPUpWOHQ3dlNkQHRTIWpNNVNTY2I/alN4
Ymg0TjgzO35rJiFZPUI1NnRxVVQyQVcKei0hOzQtRlczdzUhbnw1dXhFSkJLMHxNbHRmSjFEbm9m
VHVuU3FXQj5tMjZHNnJgaWtjQjBKY0xiYXZZJWM3b0YjCnpjciVDdmdWY252U31kR0p1IWdKJml2
LV5hdjJxSyNseiN8VjdqblAtO1ZNRWtSODNTUVhiMXYtYGxRO1p3fVN0Xgp6VGtxRzBeLSoxPFB3
S1AheXVQUn1nVUAoRjd3Wnl6QUFJWn1FNyVHRlBySF5DWmJldVB0dE04YTY9Zm1JMWZPeXYKeiot
Q2JoLURFI0dPcGNOd2Eqfl97T30kN2lsTitSJWwjdSh4cGd9WWtXPEN2UjZCPGRRQzwwR2VRayU4
fCMpK2N8CnpHPkltSUtoY3grcHtkfDhycWZLWUp0T0hEa2dDYWFEKTxJQGJUKnchPWhLQ0JEZzYq
O1BLOShvSnhxJiRwVSU/cgpVKVd8SEdrRTAtdmxuP355e28mXzcwbWV0bzB7e1IzCgpsaXRlcmFs
IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL0JVSUxELmduCmluZGV4IDQzZDFkZmU5ZjcxMjk4
ZDM5NWVhMmQ5NzYzMThmMjUxY2ZiMmUwNzcuLjRlZDA3YWY5ODMwYTUyOTM4MTlhZjdmN2QwYzRm
YjI4Y2FlZmExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2V4YW1wbGVzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL0JVSUxELmduCkBAIC02MCw2ICs2MCwzMiBAQCBn
cm91cCgiZXhhbXBsZXMiKSB7CiAgIH0KIH0KIAorcnRjX3NvdXJjZV9zZXQoInJlYWRfYXV0aF9m
aWxlIikgeworICB0ZXN0b25seSA9IHRydWUKKyAgc291cmNlcyA9IFsKKyAgICAidHVybnNlcnZl
ci9yZWFkX2F1dGhfZmlsZS5jYyIsCisgICAgInR1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuaCIs
CisgIF0KKyAgZGVwcyA9IFsKKyAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAorICBdCit9CisK
K2lmIChydGNfaW5jbHVkZV90ZXN0cykgeworICBydGNfdGVzdCgiZXhhbXBsZXNfdW5pdHRlc3Rz
IikgeworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAgIHNvdXJjZXMgPSBbCisgICAgICAidHVybnNl
cnZlci9yZWFkX2F1dGhfZmlsZV91bml0dGVzdC5jYyIsCisgICAgXQorICAgIGRlcHMgPSBbCisg
ICAgICAiOnJlYWRfYXV0aF9maWxlIiwKKyAgICAgICIuLi90ZXN0OnRlc3RfbWFpbiIsCisgICAg
ICAiLy90ZXN0OnRlc3Rfc3VwcG9ydCIsCisgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgICBd
CisgIH0KK30KKwogaWYgKGlzX2FuZHJvaWQpIHsKICAgcnRjX2FuZHJvaWRfYXBrKCJBcHBSVENN
b2JpbGUiKSB7CiAgICAgdGVzdG9ubHkgPSB0cnVlCkBAIC0xNjYsMTUgKzE5MiwxMiBAQCBpZiAo
aXNfYW5kcm9pZCkgewogICAgICAgIi4uL2J1aWxkL2FuZHJvaWQvYWRiX3JldmVyc2VfZm9yd2Fy
ZGVyLnB5IiwKICAgICAgICIuLi9leGFtcGxlcy9hbmRyb2lkdGVzdHMvdmlkZW9fcXVhbGl0eV9s
b29wYmFja190ZXN0LnB5IiwKICAgICAgICIuLi9yZXNvdXJjZXMvcmVmZXJlbmNlX3ZpZGVvXzY0
MHgzNjBfMzBmcHMueTRtIiwKLSAgICAgICIuLi9ydGNfdG9vbHMvYmFyY29kZV90b29scy9iYXJj
b2RlX2RlY29kZXIucHkiLAotICAgICAgIi4uL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL2hlbHBl
cl9mdW5jdGlvbnMucHkiLAogICAgICAgIi4uL3J0Y190b29scy9jb21wYXJlX3ZpZGVvcy5weSIs
CiAgICAgICAiLi4vcnRjX3Rvb2xzL3Rlc3RpbmcvcHJlYnVpbHRfYXBwcnRjLnppcCIsCiAgICAg
ICAiLi4vcnRjX3Rvb2xzL3Rlc3RpbmcvZ29sYW5nL2xpbnV4L2dvLnRhci5neiIsCiAgICAgICAi
Li4vcnRjX3Rvb2xzL3Rlc3RpbmcvYnVpbGRfYXBwcnRjLnB5IiwKICAgICAgICIuLi9ydGNfdG9v
bHMvdGVzdGluZy91dGlscy5weSIsCiAgICAgICAiLi4vdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxp
dHlfdG9vbGNoYWluL2xpbnV4L2ZmbXBlZyIsCi0gICAgICAiLi4vdG9vbHNfd2VicnRjL3ZpZGVv
X3F1YWxpdHlfdG9vbGNoYWluL2xpbnV4L3p4aW5nIiwKICAgICAgICIke3Jvb3Rfb3V0X2Rpcn0v
ZnJhbWVfYW5hbHl6ZXJfaG9zdCIsCiAgICAgXQogICB9CkBAIC00ODAsOCArNTAzLDEwIEBAIGlm
IChpc19pb3MgfHwgKGlzX21hYyAmJiB0YXJnZXRfY3B1ICE9ICJ4ODYiKSkgewogICAgICAgICAi
Li4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAgICAgICAiLi4vYXBpL2F1
ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeSIsCiAgICAgICAgICIuLi9h
cGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAgICAg
Ii4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAog
ICAgICAgICAiLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2ltcGxfYmFzZSIsCiAgICAgICAgICIu
Li9tZWRpYTpydGNfYXVkaW9fdmlkZW8iLAorICAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nOmFwaSIsCiAgICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9f
cHJvY2Vzc2luZyIsCiAgICAgICAgICIuLi9wYzpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24iLAog
ICAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLApAQCAtNjI1LDEyICs2NTAsMTMgQEAgaWYg
KGlzX2lvcyB8fCAoaXNfbWFjICYmIHRhcmdldF9jcHUgIT0gIng4NiIpKSB7CiAgICAgICBydGNf
aW9zX3hjdGVzdF90ZXN0KCJhcHBydGNtb2JpbGVfdGVzdHMiKSB7CiAgICAgICAgIGluZm9fcGxp
c3QgPSAib2JqYy9BcHBSVENNb2JpbGUvaW9zL0luZm8ucGxpc3QiCiAgICAgICAgIHNvdXJjZXMg
PSBbCi0gICAgICAgICAgIm9iamMvQXBwUlRDTW9iaWxlL2lvcy9tYWluLm0iLAorICAgICAgICAg
ICJvYmpjL0FwcFJUQ01vYmlsZS90ZXN0cy9tYWluLm1tIiwKICAgICAgICAgXQogICAgICAgICBk
ZXBzID0gWwogICAgICAgICAgICI6QXBwUlRDTW9iaWxlX2xpYiIsCiAgICAgICAgICAgIjphcHBy
dGNtb2JpbGVfdGVzdF9zb3VyY2VzIiwKICAgICAgICAgICAiLi4vc2RrOmZyYW1ld29ya19vYmpj
IiwKKyAgICAgICAgICAiLy90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAgIF0KICAgICAgICAg
bGRmbGFncyA9IFsgIi1hbGxfbG9hZCIgXQogICAgICAgfQpAQCAtNjU1LDExICs2ODEsMTQgQEAg
aWYgKGlzX2xpbnV4IHx8IGlzX3dpbikgewogICAgICAgc3VwcHJlc3NlZF9jb25maWdzICs9IFsg
Ii8vYnVpbGQvY29uZmlnL2NsYW5nOmZpbmRfYmFkX2NvbnN0cnVjdHMiIF0KICAgICB9CiAgICAg
ZGVwcyA9IFsKKyAgICAgICIuLi9hcGk6Y3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkiLAog
ICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi9h
cGkvdmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwK
ICAgICAgICIuLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIsCiAgICAgICAiLi4vcnRjX2Jhc2UvdGhp
cmRfcGFydHkvc2lnc2xvdCIsCisgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFs
IiwKKyAgICAgICIuLi90ZXN0OmZpZWxkX3RyaWFsIiwKICAgICBdCiAgICAgaWYgKGlzX3dpbikg
ewogICAgICAgc291cmNlcyArPSBbCkBAIC02OTYsNiArNzI1LDcgQEAgaWYgKGlzX2xpbnV4IHx8
IGlzX3dpbikgewogICAgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6YnVpbHRpbl92aWRlb19lbmNv
ZGVyX2ZhY3RvcnkiLAogICAgICAgIi4uL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCiAgICAgICAi
Li4vbW9kdWxlcy9hdWRpb19kZXZpY2U6YXVkaW9fZGV2aWNlIiwKKyAgICAgICIuLi9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmc6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAiLi4vbW9kdWxlcy92aWRlb19jYXB0dXJlOnZp
ZGVvX2NhcHR1cmVfbW9kdWxlIiwKICAgICAgICIuLi9wYzpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rp
b24iLApAQCAtNzE4LDEwICs3NDgsMTEgQEAgaWYgKGlzX2xpbnV4IHx8IGlzX3dpbikgewogICAg
ICAgInBlZXJjb25uZWN0aW9uL3NlcnZlci91dGlscy5oIiwKICAgICBdCiAgICAgZGVwcyA9IFsK
LSAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9h
cHByb3ZlZCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAogICAgICAgIi4uL3J0
Y190b29sczpjb21tYW5kX2xpbmVfcGFyc2VyIiwKKyAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6
ZmllbGRfdHJpYWwiLAorICAgICAgIi4uL3Rlc3Q6ZmllbGRfdHJpYWwiLAogICAgIF0KICAgICBp
ZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYgaXNfY2xhbmcpIHsKICAgICAgICMgU3VwcHJlc3Mg
d2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcv
MTYzKS4KQEAgLTc1MCw2ICs3ODEsNyBAQCBpZiAoaXNfbGludXggfHwgaXNfd2luKSB7CiAgICAg
ICAidHVybnNlcnZlci90dXJuc2VydmVyX21haW4uY2MiLAogICAgIF0KICAgICBkZXBzID0gWwor
ICAgICAgIjpyZWFkX2F1dGhfZmlsZSIsCiAgICAgICAiLi4vcDJwOnJ0Y19wMnAiLAogICAgICAg
Ii4uL3BjOnJ0Y19wYyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLApAQCAtODA3LDYg
KzgzOSw3IEBAIGlmIChpc193aW4gfHwgaXNfYW5kcm9pZCkgewogICAgICAgY29uZmlncyArPSBb
ICIvL2J1aWxkL2NvbmZpZy93aW46d2luZG93ZWQiIF0KICAgICB9CiAgICAgZGVwcyA9IFsKKyAg
ICAgICIuLi9hcGk6Y3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkiLAogICAgICAgIi4uL2Fw
aTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi9hcGkvYXVkaW9fY29k
ZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKICAgICAgICIuLi9hcGkvYXVkaW9f
Y29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5IiwKQEAgLTgxNiw2ICs4NDksNyBA
QCBpZiAoaXNfd2luIHx8IGlzX2FuZHJvaWQpIHsKICAgICAgICIuLi9tZWRpYTpydGNfbWVkaWEi
LAogICAgICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKICAgICAgICIuLi9tb2R1bGVzL2F1
ZGlvX2RldmljZTphdWRpb19kZXZpY2UiLAorICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZzphcGkiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9j
ZXNzaW5nIiwKICAgICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NhcHR1cmU6dmlkZW9fY2FwdHVyZV9t
b2R1bGUiLAogICAgICAgIi4uL3BjOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbiIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9E
RVBTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMv
REVQUwppbmRleCA2YTlhOWYwOWNmZmVmMzdmZmMzMjE1NmEzYmM1YmRjOWI2M2FhMmE4Li41YjM3
ODQ1NTkwMGI1MzcxNDJlOWE4MWVhNzY5YTZhMWYyN2U3YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9ERVBTCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL0RFUFMKQEAg
LTgsNSArOCw2IEBAIGluY2x1ZGVfcnVsZXMgPSBbCiAgICIrcDJwIiwKICAgIitwYyIsCiAgICIr
c2RrL29iamMiLAorICAiK3N5c3RlbV93cmFwcGVycy9pbmNsdWRlIiwKICAgIit0aGlyZF9wYXJ0
eS9saWJ5dXYiLAogXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvZXhhbXBsZXMvYWFycHJvamVjdC9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hYXJwcm9qZWN0L09XTkVSUwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYzRlNTQxNzRlNjBmNjU5MGRjY2E5OGE5ODA2Nzc3Y2MxZjljMTE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvYWFycHJvamVjdC9PV05FUlMKQEAgLTAsMCArMSBAQAorc2FrYWxAd2VicnRjLm9yZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvYW5kcm9pZGFwcC9BbmRyb2lkTWFuaWZlc3QueG1sIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFwcC9BbmRyb2lkTWFuaWZl
c3QueG1sCmluZGV4IGQ2ZTBmZjA0MTc0NDRkYjlkMTljMjBmMjdjNjBjZDhmNDZmOWZlMTAuLjU3
NjQ0OWJiMTRlOWVkZWZlNDA1ZGNiNDdhZTVhMTIzYzQxOTY2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAv
QW5kcm9pZE1hbmlmZXN0LnhtbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL0FuZHJvaWRNYW5pZmVzdC54bWwKQEAgLTE4
LDcgKzE4LDggQEAKICAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5w
ZXJtaXNzaW9uLklOVEVSTkVUIiAvPgogICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1l
PSJhbmRyb2lkLnBlcm1pc3Npb24uV1JJVEVfRVhURVJOQUxfU1RPUkFHRSIvPgogICAgIDx1c2Vz
LXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX05FVFdP
UktfU1RBVEUiIC8+Ci0gICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQu
cGVybWlzc2lvbi5DQVBUVVJFX1ZJREVPX09VVFBVVCIgLz4KKyAgICA8dXNlcy1wZXJtaXNzaW9u
IHRvb2xzOmlnbm9yZT0iUHJvdGVjdGVkUGVybWlzc2lvbnMiCisgICAgICAgICAgICAgICAgICAg
ICBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5DQVBUVVJFX1ZJREVPX09VVFBVVCIg
Lz4KIAogICAgIDwhLS0gVGhpcyBpcyBhIHRlc3QgYXBwbGljYXRpb24gdGhhdCBzaG91bGQgYWx3
YXlzIGJlIGRlYnVnZ2FibGUuIC0tPgogICAgIDxhcHBsaWNhdGlvbiBhbmRyb2lkOmxhYmVsPSJA
c3RyaW5nL2FwcF9uYW1lIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFwcC9yZXMvbGF5b3V0L2FjdGl2aXR5X2Nv
bm5lY3QueG1sIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvYW5kcm9pZGFwcC9yZXMvbGF5b3V0L2FjdGl2aXR5X2Nvbm5lY3QueG1sCmluZGV4IDgz
NzA3ZjcyZWQwN2Y3Y2JkNzE0NDVlYTRjZTRjMzc4NDI2YmQ5NjMuLjNjNTkxODk2NDQ0YTgyNWQ5
YzBkZDg4YTI3NWEwM2U0N2E3NzgxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvcmVzL2xheW91dC9hY3Rp
dml0eV9jb25uZWN0LnhtbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3Jlcy9sYXlvdXQvYWN0aXZpdHlfY29ubmVjdC54
bWwKQEAgLTEsNiArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
PgogPExpbmVhckxheW91dAogICAgIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJv
aWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp0b29scz0iaHR0cDovL3NjaGVtYXMu
YW5kcm9pZC5jb20vdG9vbHMiCiAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luPSIxNmRwIgogICAg
IGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCiAgICAgYW5kcm9pZDpsYXlvdXRf
aGVpZ2h0PSJtYXRjaF9wYXJlbnQiCkBAIC0yMSw3ICsyMiw5IEBACiAgICAgICAgIGFuZHJvaWQ6
Z3Jhdml0eT0iY2VudGVyIgogICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Cb3R0b209Ijhk
cCI+CiAKKyAgICAgICAgPCEtLSBUT0RPKGNyYnVnLmNvbS85MDA5MTIpOiBGaXggYW5kIHJlbW92
ZSBsaW50IGlnbm9yZSAtLT4KICAgICAgICAgPEVkaXRUZXh0CisgICAgICAgICAgICB0b29sczpp
Z25vcmU9IkxhYmVsRm9yIgogICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9yb29tX2VkaXR0
ZXh0IgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKICAgICAgICAgICAg
IGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFwcC9z
cmMvb3JnL2FwcHNwb3QvYXBwcnRjL0NhbGxBY3Rpdml0eS5qYXZhIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFwcC9zcmMvb3JnL2Fw
cHNwb3QvYXBwcnRjL0NhbGxBY3Rpdml0eS5qYXZhCmluZGV4IGNjYzJjM2JkOTNkODA3MGU0MzYz
NjcxZTI3MzQ3ODUwNzRiYjllYWMuLjQzOTYxNTA2YWI5M2IzMmQ1ZWIzN2M3MmM3MzU2YWE2ZmFj
YmIyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2V4YW1wbGVzL2FuZHJvaWRhcHAvc3JjL29yZy9hcHBzcG90L2FwcHJ0Yy9DYWxsQWN0aXZp
dHkuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9l
eGFtcGxlcy9hbmRyb2lkYXBwL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvQ2FsbEFjdGl2aXR5Lmph
dmEKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWMgY2xhc3MgQ2FsbEFjdGl2aXR5IGV4dGVuZHMg
QWN0aXZpdHkgaW1wbGVtZW50cyBBcHBSVENDbGllbnQuU2lnbmFsaW5nRXZlbgogICBwcml2YXRl
IFJvb21Db25uZWN0aW9uUGFyYW1ldGVycyByb29tQ29ubmVjdGlvblBhcmFtZXRlcnM7CiAgIEBO
dWxsYWJsZQogICBwcml2YXRlIFBlZXJDb25uZWN0aW9uUGFyYW1ldGVycyBwZWVyQ29ubmVjdGlv
blBhcmFtZXRlcnM7Ci0gIHByaXZhdGUgYm9vbGVhbiBpY2VDb25uZWN0ZWQ7CisgIHByaXZhdGUg
Ym9vbGVhbiBjb25uZWN0ZWQ7CiAgIHByaXZhdGUgYm9vbGVhbiBpc0Vycm9yOwogICBwcml2YXRl
IGJvb2xlYW4gY2FsbENvbnRyb2xGcmFnbWVudFZpc2libGUgPSB0cnVlOwogICBwcml2YXRlIGxv
bmcgY2FsbFN0YXJ0ZWRUaW1lTXM7CkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljIGNsYXNzIENh
bGxBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5IGltcGxlbWVudHMgQXBwUlRDQ2xpZW50LlNpZ25h
bGluZ0V2ZW4KICAgICBnZXRXaW5kb3coKS5nZXREZWNvclZpZXcoKS5zZXRTeXN0ZW1VaVZpc2li
aWxpdHkoZ2V0U3lzdGVtVWlWaXNpYmlsaXR5KCkpOwogICAgIHNldENvbnRlbnRWaWV3KFIubGF5
b3V0LmFjdGl2aXR5X2NhbGwpOwogCi0gICAgaWNlQ29ubmVjdGVkID0gZmFsc2U7CisgICAgY29u
bmVjdGVkID0gZmFsc2U7CiAgICAgc2lnbmFsaW5nUGFyYW1ldGVycyA9IG51bGw7CiAKICAgICAv
LyBDcmVhdGUgVUkgY29udHJvbHMuCkBAIC01NTMsNyArNTUzLDcgQEAgcHVibGljIGNsYXNzIENh
bGxBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5IGltcGxlbWVudHMgQXBwUlRDQ2xpZW50LlNpZ25h
bGluZ0V2ZW4KIAogICAvLyBIZWxwZXIgZnVuY3Rpb25zLgogICBwcml2YXRlIHZvaWQgdG9nZ2xl
Q2FsbENvbnRyb2xGcmFnbWVudFZpc2liaWxpdHkoKSB7Ci0gICAgaWYgKCFpY2VDb25uZWN0ZWQg
fHwgIWNhbGxGcmFnbWVudC5pc0FkZGVkKCkpIHsKKyAgICBpZiAoIWNvbm5lY3RlZCB8fCAhY2Fs
bEZyYWdtZW50LmlzQWRkZWQoKSkgewogICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBTaG93
L2hpZGUgY2FsbCBjb250cm9sIGZyYWdtZW50CkBAIC02NDksNyArNjQ5LDcgQEAgcHVibGljIGNs
YXNzIENhbGxBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5IGltcGxlbWVudHMgQXBwUlRDQ2xpZW50
LlNpZ25hbGluZ0V2ZW4KICAgICAgIGF1ZGlvTWFuYWdlci5zdG9wKCk7CiAgICAgICBhdWRpb01h
bmFnZXIgPSBudWxsOwogICAgIH0KLSAgICBpZiAoaWNlQ29ubmVjdGVkICYmICFpc0Vycm9yKSB7
CisgICAgaWYgKGNvbm5lY3RlZCAmJiAhaXNFcnJvcikgewogICAgICAgc2V0UmVzdWx0KFJFU1VM
VF9PSyk7CiAgICAgfSBlbHNlIHsKICAgICAgIHNldFJlc3VsdChSRVNVTFRfQ0FOQ0VMRUQpOwpA
QCAtOTExLDggKzkxMSw2IEBAIHB1YmxpYyBjbGFzcyBDYWxsQWN0aXZpdHkgZXh0ZW5kcyBBY3Rp
dml0eSBpbXBsZW1lbnRzIEFwcFJUQ0NsaWVudC5TaWduYWxpbmdFdmVuCiAgICAgICBAT3ZlcnJp
ZGUKICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKICAgICAgICAgbG9nQW5kVG9hc3QoIklDRSBj
b25uZWN0ZWQsIGRlbGF5PSIgKyBkZWx0YSArICJtcyIpOwotICAgICAgICBpY2VDb25uZWN0ZWQg
PSB0cnVlOwotICAgICAgICBjYWxsQ29ubmVjdGVkKCk7CiAgICAgICB9CiAgICAgfSk7CiAgIH0K
QEAgLTkyMyw3ICs5MjEsMzAgQEAgcHVibGljIGNsYXNzIENhbGxBY3Rpdml0eSBleHRlbmRzIEFj
dGl2aXR5IGltcGxlbWVudHMgQXBwUlRDQ2xpZW50LlNpZ25hbGluZ0V2ZW4KICAgICAgIEBPdmVy
cmlkZQogICAgICAgcHVibGljIHZvaWQgcnVuKCkgewogICAgICAgICBsb2dBbmRUb2FzdCgiSUNF
IGRpc2Nvbm5lY3RlZCIpOwotICAgICAgICBpY2VDb25uZWN0ZWQgPSBmYWxzZTsKKyAgICAgIH0K
KyAgICB9KTsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJsaWMgdm9pZCBvbkNvbm5lY3RlZCgp
IHsKKyAgICBmaW5hbCBsb25nIGRlbHRhID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBj
YWxsU3RhcnRlZFRpbWVNczsKKyAgICBydW5PblVpVGhyZWFkKG5ldyBSdW5uYWJsZSgpIHsKKyAg
ICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBsb2dBbmRU
b2FzdCgiRFRMUyBjb25uZWN0ZWQsIGRlbGF5PSIgKyBkZWx0YSArICJtcyIpOworICAgICAgICBj
b25uZWN0ZWQgPSB0cnVlOworICAgICAgICBjYWxsQ29ubmVjdGVkKCk7CisgICAgICB9CisgICAg
fSk7CisgIH0KKworICBAT3ZlcnJpZGUKKyAgcHVibGljIHZvaWQgb25EaXNjb25uZWN0ZWQoKSB7
CisgICAgcnVuT25VaVRocmVhZChuZXcgUnVubmFibGUoKSB7CisgICAgICBAT3ZlcnJpZGUKKyAg
ICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgbG9nQW5kVG9hc3QoIkRUTFMgZGlzY29u
bmVjdGVkIik7CisgICAgICAgIGNvbm5lY3RlZCA9IGZhbHNlOwogICAgICAgICBkaXNjb25uZWN0
KCk7CiAgICAgICB9CiAgICAgfSk7CkBAIC05MzcsNyArOTU4LDcgQEAgcHVibGljIGNsYXNzIENh
bGxBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5IGltcGxlbWVudHMgQXBwUlRDQ2xpZW50LlNpZ25h
bGluZ0V2ZW4KICAgICBydW5PblVpVGhyZWFkKG5ldyBSdW5uYWJsZSgpIHsKICAgICAgIEBPdmVy
cmlkZQogICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICBpZiAoIWlzRXJyb3IgJiYg
aWNlQ29ubmVjdGVkKSB7CisgICAgICAgIGlmICghaXNFcnJvciAmJiBjb25uZWN0ZWQpIHsKICAg
ICAgICAgICBodWRGcmFnbWVudC51cGRhdGVFbmNvZGVyU3RhdGlzdGljcyhyZXBvcnRzKTsKICAg
ICAgICAgfQogICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGFwcC9zcmMvb3JnL2FwcHNwb3QvYXBwcnRj
L1BlZXJDb25uZWN0aW9uQ2xpZW50LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMv
UGVlckNvbm5lY3Rpb25DbGllbnQuamF2YQppbmRleCA5NDEzNWRlZDRkNjQ4NzEzY2U1NGE1MmVm
MzllZDkyYWZmNzA5MTIyLi5mODVhNzg4ZjNkMTZjNjcwOTU0OWQ0YzhjM2VmZTk4ZjljOGZmMmU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9l
eGFtcGxlcy9hbmRyb2lkYXBwL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvUGVlckNvbm5lY3Rpb25D
bGllbnQuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9leGFtcGxlcy9hbmRyb2lkYXBwL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvUGVlckNvbm5lY3Rp
b25DbGllbnQuamF2YQpAQCAtNTIsNiArNTIsNyBAQCBpbXBvcnQgb3JnLndlYnJ0Yy5NZWRpYVN0
cmVhbVRyYWNrOwogaW1wb3J0IG9yZy53ZWJydGMuTWVkaWFTdHJlYW1UcmFjay5NZWRpYVR5cGU7
CiBpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbjsKIGltcG9ydCBvcmcud2VicnRjLlBl
ZXJDb25uZWN0aW9uLkljZUNvbm5lY3Rpb25TdGF0ZTsKK2ltcG9ydCBvcmcud2VicnRjLlBlZXJD
b25uZWN0aW9uLlBlZXJDb25uZWN0aW9uU3RhdGU7CiBpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29u
bmVjdGlvbkZhY3Rvcnk7CiBpbXBvcnQgb3JnLndlYnJ0Yy5SdHBQYXJhbWV0ZXJzOwogaW1wb3J0
IG9yZy53ZWJydGMuUnRwUmVjZWl2ZXI7CkBAIC0yOTMsMTEgKzI5NCwyMyBAQCBwdWJsaWMgY2xh
c3MgUGVlckNvbm5lY3Rpb25DbGllbnQgewogICAgIHZvaWQgb25JY2VDb25uZWN0ZWQoKTsKIAog
ICAgIC8qKgotICAgICAqIENhbGxiYWNrIGZpcmVkIG9uY2UgY29ubmVjdGlvbiBpcyBjbG9zZWQg
KEljZUNvbm5lY3Rpb25TdGF0ZSBpcworICAgICAqIENhbGxiYWNrIGZpcmVkIG9uY2UgY29ubmVj
dGlvbiBpcyBkaXNjb25uZWN0ZWQgKEljZUNvbm5lY3Rpb25TdGF0ZSBpcwogICAgICAqIERJU0NP
Tk5FQ1RFRCkuCiAgICAgICovCiAgICAgdm9pZCBvbkljZURpc2Nvbm5lY3RlZCgpOwogCisgICAg
LyoqCisgICAgICogQ2FsbGJhY2sgZmlyZWQgb25jZSBEVExTIGNvbm5lY3Rpb24gaXMgZXN0YWJs
aXNoZWQgKFBlZXJDb25uZWN0aW9uU3RhdGUKKyAgICAgKiBpcyBDT05ORUNURUQpLgorICAgICAq
LworICAgIHZvaWQgb25Db25uZWN0ZWQoKTsKKworICAgIC8qKgorICAgICAqIENhbGxiYWNrIGZp
cmVkIG9uY2UgRFRMUyBjb25uZWN0aW9uIGlzIGRpc2Nvbm5lY3RlZCAoUGVlckNvbm5lY3Rpb25T
dGF0ZQorICAgICAqIGlzIERJU0NPTk5FQ1RFRCkuCisgICAgICovCisgICAgdm9pZCBvbkRpc2Nv
bm5lY3RlZCgpOworCiAgICAgLyoqCiAgICAgICogQ2FsbGJhY2sgZmlyZWQgb25jZSBwZWVyIGNv
bm5lY3Rpb24gaXMgY2xvc2VkLgogICAgICAqLwpAQCAtMTI2Myw2ICsxMjc2LDIwIEBAIHB1Ymxp
YyBjbGFzcyBQZWVyQ29ubmVjdGlvbkNsaWVudCB7CiAgICAgICB9KTsKICAgICB9CiAKKyAgICBA
T3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNvbm5lY3Rpb25DaGFuZ2UoZmluYWwgUGVlckNv
bm5lY3Rpb24uUGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdTdGF0ZSkgeworICAgICAgZXhlY3V0b3Iu
ZXhlY3V0ZSgoKSAtPiB7CisgICAgICAgIExvZy5kKFRBRywgIlBlZXJDb25uZWN0aW9uU3RhdGU6
ICIgKyBuZXdTdGF0ZSk7CisgICAgICAgIGlmIChuZXdTdGF0ZSA9PSBQZWVyQ29ubmVjdGlvblN0
YXRlLkNPTk5FQ1RFRCkgeworICAgICAgICAgIGV2ZW50cy5vbkNvbm5lY3RlZCgpOworICAgICAg
ICB9IGVsc2UgaWYgKG5ld1N0YXRlID09IFBlZXJDb25uZWN0aW9uU3RhdGUuRElTQ09OTkVDVEVE
KSB7CisgICAgICAgICAgZXZlbnRzLm9uRGlzY29ubmVjdGVkKCk7CisgICAgICAgIH0gZWxzZSBp
ZiAobmV3U3RhdGUgPT0gUGVlckNvbm5lY3Rpb25TdGF0ZS5GQUlMRUQpIHsKKyAgICAgICAgICBy
ZXBvcnRFcnJvcigiRFRMUyBjb25uZWN0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgfQorICAgICAg
fSk7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgb25JY2VHYXRoZXJp
bmdDaGFuZ2UoUGVlckNvbm5lY3Rpb24uSWNlR2F0aGVyaW5nU3RhdGUgbmV3U3RhdGUpIHsKICAg
ICAgIExvZy5kKFRBRywgIkljZUdhdGhlcmluZ1N0YXRlOiAiICsgbmV3U3RhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMv
YW5kcm9pZGp1bml0L09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2V4YW1wbGVzL2FuZHJvaWRqdW5pdC9PV05FUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M0ZTU0MTc0
ZTYwZjY1OTBkY2NhOThhOTgwNjc3N2NjMWY5YzExOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRqdW5p
dC9PV05FUlMKQEAgLTAsMCArMSBAQAorc2FrYWxAd2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGp1
bml0L3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvVENQQ2hhbm5lbENsaWVudFRlc3QuamF2YSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRq
dW5pdC9zcmMvb3JnL2FwcHNwb3QvYXBwcnRjL1RDUENoYW5uZWxDbGllbnRUZXN0LmphdmEKaW5k
ZXggOGM1ZjM4Y2NiMzFiMTZhZmU1YmEzZWU4YjI4NDQ3ZjdmNmY3OTUzZi4uYTg4MDZlYzVmN2Q2
N2MxNmIwOWZjMzdiZDYxY2Q0ZDNkM2E5Y2NkMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZGp1bml0L3NyYy9vcmcv
YXBwc3BvdC9hcHBydGMvVENQQ2hhbm5lbENsaWVudFRlc3QuamF2YQorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkanVuaXQvc3Jj
L29yZy9hcHBzcG90L2FwcHJ0Yy9UQ1BDaGFubmVsQ2xpZW50VGVzdC5qYXZhCkBAIC0zOCwxMCAr
MzgsMTAgQEAgcHVibGljIGNsYXNzIFRDUENoYW5uZWxDbGllbnRUZXN0IHsKICAgICogSG93IGxv
bmcgd2Ugd2FpdCBiZWZvcmUgdHJ5aW5nIHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlci4gTm90ZTog
d2FzCiAgICAqIHByZXZpb3VzbHkgb25seSAxMCwgd2hpY2ggd2FzIHRvbyBzaG9ydCAodGVzdHMg
d2VyZSBmbGFreSkuCiAgICAqLwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0VSVkVSX1dB
SVQgPSAxMDA7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT05ORUNUX1RJTUVPVVQgPSAx
MDA7Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTRU5EX1RJTUVPVVQgPSAxMDA7Ci0gIHBy
aXZhdGUgc3RhdGljIGZpbmFsIGludCBESVNDT05ORUNUX1RJTUVPVVQgPSAxMDA7CisgIHByaXZh
dGUgc3RhdGljIGZpbmFsIGludCBTRVJWRVJfV0FJVCA9IDMwMDsKKyAgcHJpdmF0ZSBzdGF0aWMg
ZmluYWwgaW50IENPTk5FQ1RfVElNRU9VVCA9IDEwMDA7CisgIHByaXZhdGUgc3RhdGljIGZpbmFs
IGludCBTRU5EX1RJTUVPVVQgPSAxMDAwOworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRElT
Q09OTkVDVF9USU1FT1VUID0gMTAwMDsKICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFRFUk1J
TkFUSU9OX1RJTUVPVVQgPSAxMDAwOwogICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEVT
VF9NRVNTQUdFX1NFUlZFUiA9ICJIZWxsbywgU2VydmVyISI7CiAgIHByaXZhdGUgc3RhdGljIGZp
bmFsIFN0cmluZyBURVNUX01FU1NBR0VfQ0xJRU5UID0gIkhlbGxvLCBDbGllbnQhIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVz
L2FuZHJvaWRuYXRpdmVhcGkvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkbmF0aXZlYXBpL0JVSUxELmduCmluZGV4IDU1
NjhlYjExZGRlM2ViZjNiOTUxYjAyYTYyYWE2ODU1MTMyODY1ZTEuLjc5Mjg2NDBjYzZmNWNhYWVh
ZWE5YzZhNzE1NmNkMGQ2NjEzZjljNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRuYXRpdmVhcGkvQlVJTEQuZ24K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMv
YW5kcm9pZG5hdGl2ZWFwaS9CVUlMRC5nbgpAQCAtNDksMTAgKzQ5LDEyIEBAIGlmIChpc19hbmRy
b2lkKSB7CiAgICAgICAiLy9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAg
ICAiLy9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKICAg
ICAgICIvL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLAor
ICAgICAgIi8vYXBpL3ZpZGVvOmJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9y
eSIsCiAgICAgICAiLy9sb2dnaW5nOnJ0Y19ldmVudF9sb2dfaW1wbF9iYXNlIiwKICAgICAgICIv
L21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCiAgICAgICAiLy9tZWRpYTpydGNfaW50ZXJuYWxfdmlk
ZW9fY29kZWNzIiwKICAgICAgICIvL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZyIsCisgICAgICAi
Ly9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICIvL21vZHVsZXMvdXRpbGl0
eTp1dGlsaXR5IiwKICAgICAgICIvL3BjOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbiIsCiAgICAg
ICAiLy9ydGNfYmFzZTpydGNfYmFzZSIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkbmF0aXZlYXBpL2puaS9hbmRy
b2lkY2FsbGNsaWVudC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2V4YW1wbGVzL2FuZHJvaWRuYXRpdmVhcGkvam5pL2FuZHJvaWRjYWxsY2xpZW50LmNjCmlu
ZGV4IDAwNWYzNjlhNmQxMDQ2MjJkZGRiMGJkYmVmODA3MWE4MTJmMjEyMzMuLmExMzk0Y2QwMWM1
MjNkYzY5MDQ4MzBmM2FjOWFmOTg3NmM0OWQ1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRuYXRpdmVhcGkvam5p
L2FuZHJvaWRjYWxsY2xpZW50LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWRuYXRpdmVhcGkvam5pL2FuZHJvaWRjYWxsY2xp
ZW50LmNjCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWls
dGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3Mv
YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5l
Y3Rpb25pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiZXhhbXBsZXMvYW5kcm9pZG5hdGl2
ZWFwaS9nZW5lcmF0ZWRfam5pL2puaS9DYWxsQ2xpZW50X2puaS5oIgogI2luY2x1ZGUgIm1lZGlh
L2VuZ2luZS9pbnRlcm5hbGRlY29kZXJmYWN0b3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5l
L2ludGVybmFsZW5jb2RlcmZhY3RvcnkuaCIKQEAgLTk5LDcgKzEwMCw4IEBAIHZvaWQgQW5kcm9p
ZENhbGxDbGllbnQ6OkNhbGwoSk5JRW52KiBlbnYsCiAgIHJlbW90ZV9zaW5rXyA9IHdlYnJ0Yzo6
SmF2YVRvTmF0aXZlVmlkZW9TaW5rKGVudiwgcmVtb3RlX3Npbmsub2JqKCkpOwogCiAgIHZpZGVv
X3NvdXJjZV8gPSB3ZWJydGM6OkNyZWF0ZUphdmFWaWRlb1NvdXJjZShlbnYsIHNpZ25hbGluZ190
aHJlYWRfLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsc2UgLyogaXNfc2NyZWVuY2FzdCAqLyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpc19zY3JlZW5jYXN0PSAqLyBmYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFsaWduX3Rp
bWVzdGFtcHM9ICovIHRydWUpOwogCiAgIENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CiAgIENvbm5l
Y3QoKTsKQEAgLTE1OSw2ICsxNjEsNyBAQCB2b2lkIEFuZHJvaWRDYWxsQ2xpZW50OjpDcmVhdGVQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSB7CiAgICAgICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGlu
QXVkaW9EZWNvZGVyRmFjdG9yeSgpLAogICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPHdlYnJ0
Yzo6SW50ZXJuYWxFbmNvZGVyRmFjdG9yeT4oKSwKICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1
ZTx3ZWJydGM6OkludGVybmFsRGVjb2RlckZhY3Rvcnk+KCksCisgICAgICAgICAgd2VicnRjOjpD
cmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpLAogICAgICAgICAgIG51
bGxwdHIgLyogYXVkaW9fbWl4ZXIgKi8sIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigp
LkNyZWF0ZSgpKTsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiTWVkaWEgZW5naW5lIGNyZWF0ZWQ6
ICIgPDwgbWVkaWFfZW5naW5lLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkdGVzdHMvQW5kcm9pZE1h
bmlmZXN0LnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4
YW1wbGVzL2FuZHJvaWR0ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sCmluZGV4IDdjZDUyYmM1MzFk
NzRiOWU4NjFmMGI1YzMwNjJjOTVhM2E0NTY0YWUuLmRhZTJlOTgwYTZhNjBhN2YzNGZlYWI4Zjkz
Zjc3MWY0ZmRjMWU5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWR0ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL2Fu
ZHJvaWR0ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC0xNCw3ICsxNCw3IEBACiAgICAgICBw
YWNrYWdlPSJvcmcuYXBwc3BvdC5hcHBydGMudGVzdCI+CiAKICAgICA8dXNlcy1wZXJtaXNzaW9u
IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLlJVTl9JTlNUUlVNRU5UQVRJT04iIC8+
Ci0gICAgPHVzZXMtc2RrIGFuZHJvaWQ6bWluU2RrVmVyc2lvbj0iMTMiIGFuZHJvaWQ6dGFyZ2V0
U2RrVmVyc2lvbj0iMjEiIC8+CisgICAgPHVzZXMtc2RrIGFuZHJvaWQ6bWluU2RrVmVyc2lvbj0i
MTYiIGFuZHJvaWQ6dGFyZ2V0U2RrVmVyc2lvbj0iMjEiIC8+CiAKICAgICA8YXBwbGljYXRpb24+
CiAgICAgICAgIDx1c2VzLWxpYnJhcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnRlc3QucnVubmVy
IiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvdGVzdC9QZWVy
Q29ubmVjdGlvbkNsaWVudFRlc3QuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWR0ZXN0cy9zcmMvb3JnL2FwcHNwb3QvYXBwcnRj
L3Rlc3QvUGVlckNvbm5lY3Rpb25DbGllbnRUZXN0LmphdmEKaW5kZXggZTI2NzQwMTdlNDU2ZTA1
OTc2MWJhZjUwMmZhMTc5MDUyNjlhMDEwYi4uYzE2NWY1OWIwMzNkNTNmZGQwOTJhZjczM2ExODBj
YzdkYTQ2NWVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL3NyYy9vcmcvYXBwc3BvdC9hcHBydGMvdGVz
dC9QZWVyQ29ubmVjdGlvbkNsaWVudFRlc3QuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkdGVzdHMvc3JjL29yZy9hcHBz
cG90L2FwcHJ0Yy90ZXN0L1BlZXJDb25uZWN0aW9uQ2xpZW50VGVzdC5qYXZhCkBAIC0xODMsNiAr
MTgzLDE2IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbkNsaWVudFRlc3QgaW1wbGVtZW50
cyBQZWVyQ29ubmVjdGlvbkV2ZW50cyB7CiAgICAgfQogICB9CiAKKyAgQE92ZXJyaWRlCisgIHB1
YmxpYyB2b2lkIG9uQ29ubmVjdGVkKCkgeworICAgIExvZy5kKFRBRywgIkRUTFMgQ29ubmVjdGVk
Iik7CisgIH0KKworICBAT3ZlcnJpZGUKKyAgcHVibGljIHZvaWQgb25EaXNjb25uZWN0ZWQoKSB7
CisgICAgTG9nLmQoVEFHLCAiRFRMUyBEaXNjb25uZWN0ZWQiKTsKKyAgfQorCiAgIEBPdmVycmlk
ZQogICBwdWJsaWMgdm9pZCBvblBlZXJDb25uZWN0aW9uQ2xvc2VkKCkgewogICAgIExvZy5kKFRB
RywgIlBlZXJDb25uZWN0aW9uIGNsb3NlZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3RzL3ZpZGVvX3F1
YWxpdHlfbG9vcGJhY2tfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2V4YW1wbGVzL2FuZHJvaWR0ZXN0cy92aWRlb19xdWFsaXR5X2xvb3BiYWNrX3Rl
c3QucHkKaW5kZXggMTlkZDM3YzNkMzZiZmM4NGVjYzk4MjRhYWE2NjA3ZjczYzIxZWRkMy4uZmMx
OThhODI2Zjc5NjI0NDRiNjQ4NTg2OGI0YjIwYTNkNWQ2ZTI5NyAxMDA3NTUKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvYW5kcm9pZHRlc3Rz
L3ZpZGVvX3F1YWxpdHlfbG9vcGJhY2tfdGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9hbmRyb2lkdGVzdHMvdmlkZW9fcXVhbGl0
eV9sb29wYmFja190ZXN0LnB5CkBAIC0xOTAsMjAgKzE5MCwxMyBAQCBkZWYgUnVuVGVzdChhbmRy
b2lkX2RldmljZSwgYWRiX3BhdGgsIGJ1aWxkX2RpciwgdGVtcF9kaXIsIG51bV9yZXRyaWVzLAog
ICAjIFJ1biBjb21wYXJpc29uIHNjcmlwdC4KICAgY29tcGFyZV9zY3JpcHQgPSBvcy5wYXRoLmpv
aW4oU1JDX0RJUiwgJ3J0Y190b29scycsICdjb21wYXJlX3ZpZGVvcy5weScpCiAgIGZyYW1lX2Fu
YWx5emVyID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgJ2ZyYW1lX2FuYWx5emVyX2hvc3QnKQot
ICB6eGluZ19wYXRoID0gb3MucGF0aC5qb2luKFRPT0xDSEFJTl9ESVIsICd6eGluZycpCi0gIHN0
YXRzX2ZpbGVfcmVmID0gb3MucGF0aC5qb2luKHRlbXBfZGlyLCAnc3RhdHNfcmVmLnR4dCcpCi0g
IHN0YXRzX2ZpbGVfdGVzdCA9IG9zLnBhdGguam9pbih0ZW1wX2RpciwgJ3N0YXRzX3Rlc3QudHh0
JykKIAogICBhcmdzID0gWwogICAgICAgJy0tcmVmX3ZpZGVvJywgcmVmZXJlbmNlX3ZpZGVvX3l1
diwKICAgICAgICctLXRlc3RfdmlkZW8nLCB0ZXN0X3ZpZGVvX3l1diwKICAgICAgICctLXl1dl9m
cmFtZV93aWR0aCcsICc2NDAnLAogICAgICAgJy0teXV2X2ZyYW1lX2hlaWdodCcsICczNjAnLAot
ICAgICAgJy0tc3RhdHNfZmlsZV9yZWYnLCBzdGF0c19maWxlX3JlZiwKLSAgICAgICctLXN0YXRz
X2ZpbGVfdGVzdCcsIHN0YXRzX2ZpbGVfdGVzdCwKICAgICAgICctLWZyYW1lX2FuYWx5emVyJywg
ZnJhbWVfYW5hbHl6ZXIsCi0gICAgICAnLS1mZm1wZWdfcGF0aCcsIGZmbXBlZ19wYXRoLAotICAg
ICAgJy0tenhpbmdfcGF0aCcsIHp4aW5nX3BhdGgsCiAgIF0KICAgaWYgY2hhcnRqc29uX3Jlc3Vs
dF9maWxlOgogICAgIGFyZ3MuZXh0ZW5kKFsnLS1jaGFydGpzb25fcmVzdWx0X2ZpbGUnLCBjaGFy
dGpzb25fcmVzdWx0X2ZpbGVdKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvQVJEQXBwQ2xpZW50
Lm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9v
YmpjL0FwcFJUQ01vYmlsZS9BUkRBcHBDbGllbnQubQppbmRleCA5YTBkMzY5NWY5MTYxNTQ2OWM5
OTBkMTEyMmQxYWVlY2RiZmY2MGU1Li44YjNkMTA1Nzk3ZTJmZmY2ODYxYWJhNWRlYTNlMTBlZTk5
Y2ExMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9BUkRBcHBDbGllbnQubQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJU
Q01vYmlsZS9BUkRBcHBDbGllbnQubQpAQCAtNDAwLDEwICs0MDAsMTUgQEAgLSAodm9pZClwZWVy
Q29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24gKilwZWVyQ29ubmVjdGlvbgogICAgIGRpZENo
YW5nZUljZUNvbm5lY3Rpb25TdGF0ZTooUlRDSWNlQ29ubmVjdGlvblN0YXRlKW5ld1N0YXRlIHsK
ICAgUlRDTG9nKEAiSUNFIHN0YXRlIGNoYW5nZWQ6ICVsZCIsIChsb25nKW5ld1N0YXRlKTsKICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICBbX2RlbGVn
YXRlIGFwcENsaWVudDpzZWxmIGRpZENoYW5nZUNvbm5lY3Rpb25TdGF0ZTpuZXdTdGF0ZV07Cisg
ICAgW3NlbGYuZGVsZWdhdGUgYXBwQ2xpZW50OnNlbGYgZGlkQ2hhbmdlQ29ubmVjdGlvblN0YXRl
Om5ld1N0YXRlXTsKICAgfSk7CiB9CiAKKy0gKHZvaWQpcGVlckNvbm5lY3Rpb246KFJUQ1BlZXJD
b25uZWN0aW9uICopcGVlckNvbm5lY3Rpb24KKyAgICBkaWRDaGFuZ2VDb25uZWN0aW9uU3RhdGU6
KFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUpbmV3U3RhdGUgeworICBSVENMb2coQCJJQ0UrRFRMUyBz
dGF0ZSBjaGFuZ2VkOiAlbGQiLCAobG9uZyluZXdTdGF0ZSk7Cit9CisKIC0gKHZvaWQpcGVlckNv
bm5lY3Rpb246KFJUQ1BlZXJDb25uZWN0aW9uICopcGVlckNvbm5lY3Rpb24KICAgICBkaWRDaGFu
Z2VJY2VHYXRoZXJpbmdTdGF0ZTooUlRDSWNlR2F0aGVyaW5nU3RhdGUpbmV3U3RhdGUgewogICBS
VENMb2coQCJJQ0UgZ2F0aGVyaW5nIHN0YXRlIGNoYW5nZWQ6ICVsZCIsIChsb25nKW5ld1N0YXRl
KTsKQEAgLTQ1MCwxNiArNDU1LDE2IEBAIC0gKHZvaWQpcGVlckNvbm5lY3Rpb246KFJUQ1BlZXJD
b25uZWN0aW9uICopcGVlckNvbm5lY3Rpb24KICAgICAgICAgICBbW05TRXJyb3IgYWxsb2NdIGlu
aXRXaXRoRG9tYWluOmtBUkRBcHBDbGllbnRFcnJvckRvbWFpbgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvZGU6a0FSREFwcENsaWVudEVycm9yQ3JlYXRlU0RQCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySW5mbzp1c2VySW5mb107Ci0gICAgICBb
X2RlbGVnYXRlIGFwcENsaWVudDpzZWxmIGRpZEVycm9yOnNkcEVycm9yXTsKKyAgICAgIFtzZWxm
LmRlbGVnYXRlIGFwcENsaWVudDpzZWxmIGRpZEVycm9yOnNkcEVycm9yXTsKICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgX193ZWFrIEFSREFwcENsaWVudCAqd2Vha1NlbGYgPSBzZWxmOwotICAg
IFtfcGVlckNvbm5lY3Rpb24gc2V0TG9jYWxEZXNjcmlwdGlvbjpzZHAKLSAgICAgICAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvcikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgIEFSREFwcENsaWVudCAqc3Ryb25nU2VsZiA9IHdlYWtTZWxmOwotICAg
ICAgICAgICAgICAgICAgICAgICAgIFtzdHJvbmdTZWxmIHBlZXJDb25uZWN0aW9uOnN0cm9uZ1Nl
bGYucGVlckNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU2V0U2Vz
c2lvbkRlc2NyaXB0aW9uV2l0aEVycm9yOmVycm9yXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
fV07CisgICAgW3NlbGYucGVlckNvbm5lY3Rpb24gc2V0TG9jYWxEZXNjcmlwdGlvbjpzZHAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJEQXBwQ2xpZW50ICpzdHJvbmdT
ZWxmID0gd2Vha1NlbGY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJvbmdTZWxm
IHBlZXJDb25uZWN0aW9uOnN0cm9uZ1NlbGYucGVlckNvbm5lY3Rpb24KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZFNldFNlc3Npb25EZXNjcmlwdGlvbldpdGhFcnJvcjplcnJv
cl07CisgICAgICAgICAgICAgICAgICAgICAgICAgICB9XTsKICAgICBBUkRTZXNzaW9uRGVzY3Jp
cHRpb25NZXNzYWdlICptZXNzYWdlID0KICAgICAgICAgW1tBUkRTZXNzaW9uRGVzY3JpcHRpb25N
ZXNzYWdlIGFsbG9jXSBpbml0V2l0aERlc2NyaXB0aW9uOnNkcF07CiAgICAgW3NlbGYgc2VuZFNp
Z25hbGluZ01lc3NhZ2U6bWVzc2FnZV07CkBAIC00ODAsMjIgKzQ4NSwyMSBAQCAtICh2b2lkKXBl
ZXJDb25uZWN0aW9uOihSVENQZWVyQ29ubmVjdGlvbiAqKXBlZXJDb25uZWN0aW9uCiAgICAgICAg
ICAgW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjprQVJEQXBwQ2xpZW50RXJyb3JEb21h
aW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOmtBUkRBcHBDbGll
bnRFcnJvclNldFNEUAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckluZm86
dXNlckluZm9dOwotICAgICAgW19kZWxlZ2F0ZSBhcHBDbGllbnQ6c2VsZiBkaWRFcnJvcjpzZHBF
cnJvcl07CisgICAgICBbc2VsZi5kZWxlZ2F0ZSBhcHBDbGllbnQ6c2VsZiBkaWRFcnJvcjpzZHBF
cnJvcl07CiAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIElmIHdlJ3JlIGFuc3dlcmluZyBh
bmQgd2UndmUganVzdCBzZXQgdGhlIHJlbW90ZSBvZmZlciB3ZSBuZWVkIHRvIGNyZWF0ZQogICAg
IC8vIGFuIGFuc3dlciBhbmQgc2V0IHRoZSBsb2NhbCBkZXNjcmlwdGlvbi4KLSAgICBpZiAoIV9p
c0luaXRpYXRvciAmJiAhX3BlZXJDb25uZWN0aW9uLmxvY2FsRGVzY3JpcHRpb24pIHsKKyAgICBp
ZiAoIXNlbGYuaXNJbml0aWF0b3IgJiYgIXNlbGYucGVlckNvbm5lY3Rpb24ubG9jYWxEZXNjcmlw
dGlvbikgewogICAgICAgUlRDTWVkaWFDb25zdHJhaW50cyAqY29uc3RyYWludHMgPSBbc2VsZiBk
ZWZhdWx0QW5zd2VyQ29uc3RyYWludHNdOwogICAgICAgX193ZWFrIEFSREFwcENsaWVudCAqd2Vh
a1NlbGYgPSBzZWxmOwotICAgICAgW19wZWVyQ29ubmVjdGlvbiBhbnN3ZXJGb3JDb25zdHJhaW50
czpjb25zdHJhaW50cwotICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cjpeKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiAqc2RwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIEFSREFwcENs
aWVudCAqc3Ryb25nU2VsZiA9IHdlYWtTZWxmOwotICAgICAgICBbc3Ryb25nU2VsZiBwZWVyQ29u
bmVjdGlvbjpzdHJvbmdTZWxmLnBlZXJDb25uZWN0aW9uCi0gICAgICAgICAgICBkaWRDcmVhdGVT
ZXNzaW9uRGVzY3JpcHRpb246c2RwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3I6ZXJyb3JdOwotICAgICAgfV07CisgICAgICBbc2VsZi5wZWVyQ29ubmVjdGlvbiBhbnN3
ZXJGb3JDb25zdHJhaW50czpjb25zdHJhaW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXI6XihSVENTZXNzaW9uRGVzY3JpcHRpb24gKnNkcCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJEQXBwQ2xpZW50
ICpzdHJvbmdTZWxmID0gd2Vha1NlbGY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtzdHJvbmdTZWxmIHBlZXJDb25uZWN0aW9uOnN0cm9uZ1NlbGYucGVlckNvbm5lY3Rpb24KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENyZWF0ZVNlc3Npb25EZXNjcmlw
dGlvbjpzZHAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlcnJvcjplcnJvcl07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
XTsKICAgICB9CiAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvQVJEU3RhdHNCdWls
ZGVyLm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxl
cy9vYmpjL0FwcFJUQ01vYmlsZS9BUkRTdGF0c0J1aWxkZXIubQppbmRleCBjZmUyZWM1Y2Q4Mjg1
NjkwMDdmMjM5YjFkZWJkNzczOGNlMWRiZDllLi5mOWExOTIwMzk5MjExYmY3YTYzYzBhZGZhNzdm
MzIxYzdlZGE0MzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9BUkRTdGF0c0J1aWxkZXIubQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9v
YmpjL0FwcFJUQ01vYmlsZS9BUkRTdGF0c0J1aWxkZXIubQpAQCAtMTY3LDIzICsxNjcsNDMgQEAg
LSAoaW50KWNhbGN1bGF0ZUF2Z1FQIHsKICAgcmV0dXJuIGRlbHRhRnJhbWVzRW5jb2RlZCAhPSAw
ID8gZGVsdGFRUFN1bSAvIGRlbHRhRnJhbWVzRW5jb2RlZCA6IDA7CiB9CiAKKy0gKHZvaWQpdXBk
YXRlQndlU3RhdE9mS2V5OihOU1N0cmluZyAqKWtleSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSB7
CisgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dBdmFpbGFibGVTZW5kQmFuZHdpZHRo
Il0pIHsKKyAgICBfYXZhaWxhYmxlU2VuZEJ3ID0gW0FSREJpdHJhdGVUcmFja2VyIGJpdHJhdGVT
dHJpbmdGb3JCaXRyYXRlOnZhbHVlLmRvdWJsZVZhbHVlXTsKKyAgfSBlbHNlIGlmIChba2V5IGlz
RXF1YWxUb1N0cmluZzpAImdvb2dBdmFpbGFibGVSZWNlaXZlQmFuZHdpZHRoIl0pIHsKKyAgICBf
YXZhaWxhYmxlUmVjdkJ3ID0gW0FSREJpdHJhdGVUcmFja2VyIGJpdHJhdGVTdHJpbmdGb3JCaXRy
YXRlOnZhbHVlLmRvdWJsZVZhbHVlXTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmlu
ZzpAImdvb2dBY3R1YWxFbmNCaXRyYXRlIl0pIHsKKyAgICBfYWN0dWFsRW5jQml0cmF0ZSA9IFtB
UkRCaXRyYXRlVHJhY2tlciBiaXRyYXRlU3RyaW5nRm9yQml0cmF0ZTp2YWx1ZS5kb3VibGVWYWx1
ZV07CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nVGFyZ2V0RW5jQml0
cmF0ZSJdKSB7CisgICAgX3RhcmdldEVuY0JpdHJhdGUgPSBbQVJEQml0cmF0ZVRyYWNrZXIgYml0
cmF0ZVN0cmluZ0ZvckJpdHJhdGU6dmFsdWUuZG91YmxlVmFsdWVdOworICB9Cit9CisKIC0gKHZv
aWQpcGFyc2VCd2VTdGF0c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9y
dCB7Ci0gIFtzdGF0c1JlcG9ydC52YWx1ZXMgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Js
b2NrOl4oCi0gICAgICBOU1N0cmluZyAqa2V5LCBOU1N0cmluZyAqdmFsdWUsIEJPT0wgKnN0b3Ap
IHsKLSAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nQXZhaWxhYmxlU2VuZEJhbmR3
aWR0aCJdKSB7Ci0gICAgICBfYXZhaWxhYmxlU2VuZEJ3ID0KLSAgICAgICAgICBbQVJEQml0cmF0
ZVRyYWNrZXIgYml0cmF0ZVN0cmluZ0ZvckJpdHJhdGU6dmFsdWUuZG91YmxlVmFsdWVdOwotICAg
IH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nQXZhaWxhYmxlUmVjZWl2ZUJh
bmR3aWR0aCJdKSB7Ci0gICAgICBfYXZhaWxhYmxlUmVjdkJ3ID0KLSAgICAgICAgICBbQVJEQml0
cmF0ZVRyYWNrZXIgYml0cmF0ZVN0cmluZ0ZvckJpdHJhdGU6dmFsdWUuZG91YmxlVmFsdWVdOwot
ICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nQWN0dWFsRW5jQml0cmF0
ZSJdKSB7Ci0gICAgICBfYWN0dWFsRW5jQml0cmF0ZSA9Ci0gICAgICAgICAgW0FSREJpdHJhdGVU
cmFja2VyIGJpdHJhdGVTdHJpbmdGb3JCaXRyYXRlOnZhbHVlLmRvdWJsZVZhbHVlXTsKLSAgICB9
IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ1RhcmdldEVuY0JpdHJhdGUiXSkg
ewotICAgICAgX3RhcmdldEVuY0JpdHJhdGUgPQotICAgICAgICAgIFtBUkRCaXRyYXRlVHJhY2tl
ciBiaXRyYXRlU3RyaW5nRm9yQml0cmF0ZTp2YWx1ZS5kb3VibGVWYWx1ZV07Ci0gICAgfQotICB9
XTsKKyAgW3N0YXRzUmVwb3J0LnZhbHVlcworICAgICAgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNV
c2luZ0Jsb2NrOl4oTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcgKnZhbHVlLCBCT09MICpzdG9wKSB7
CisgICAgICAgIFtzZWxmIHVwZGF0ZUJ3ZVN0YXRPZktleTprZXkgdmFsdWU6dmFsdWVdOworICAg
ICAgfV07Cit9CisKKy0gKHZvaWQpdXBkYXRlQ29ubmVjdGlvblN0YXRPZktleTooTlNTdHJpbmcg
KilrZXkgdmFsdWU6KE5TU3RyaW5nICopdmFsdWUgeworICBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJnb29nUnR0Il0pIHsKKyAgICBfY29ublJ0dCA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtr
ZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0xvY2FsQ2FuZGlkYXRlVHlwZSJdKSB7CisgICAgX2xv
Y2FsQ2FuZFR5cGUgPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpA
Imdvb2dSZW1vdGVDYW5kaWRhdGVUeXBlIl0pIHsKKyAgICBfcmVtb3RlQ2FuZFR5cGUgPSB2YWx1
ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dUcmFuc3BvcnRUeXBl
Il0pIHsKKyAgICBfdHJhbnNwb3J0VHlwZSA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNF
cXVhbFRvU3RyaW5nOkAiYnl0ZXNSZWNlaXZlZCJdKSB7CisgICAgTlNJbnRlZ2VyIGJ5dGVDb3Vu
dCA9IHZhbHVlLmludGVnZXJWYWx1ZTsKKyAgICBbX2Nvbm5SZWN2Qml0cmF0ZVRyYWNrZXIgdXBk
YXRlQml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50OmJ5dGVDb3VudF07CisgICAgX2Nvbm5SZWN2
Qml0cmF0ZSA9IF9jb25uUmVjdkJpdHJhdGVUcmFja2VyLmJpdHJhdGVTdHJpbmc7CisgIH0gZWxz
ZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1NlbnQiXSkgeworICAgIE5TSW50ZWdl
ciBieXRlQ291bnQgPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7CisgICAgW19jb25uU2VuZEJpdHJhdGVU
cmFja2VyIHVwZGF0ZUJpdHJhdGVXaXRoQ3VycmVudEJ5dGVDb3VudDpieXRlQ291bnRdOworICAg
IF9jb25uU2VuZEJpdHJhdGUgPSBfY29ublNlbmRCaXRyYXRlVHJhY2tlci5iaXRyYXRlU3RyaW5n
OworICB9CiB9CiAKIC0gKHZvaWQpcGFyc2VDb25uZWN0aW9uU3RhdHNSZXBvcnQ6KFJUQ0xlZ2Fj
eVN0YXRzUmVwb3J0ICopc3RhdHNSZXBvcnQgewpAQCAtMTkxLDI2ICsyMTEsMTAgQEAgLSAodm9p
ZClwYXJzZUNvbm5lY3Rpb25TdGF0c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0
c1JlcG9ydCB7CiAgIGlmICghW2FjdGl2ZUNvbm5lY3Rpb24gaXNFcXVhbFRvU3RyaW5nOkAidHJ1
ZSJdKSB7CiAgICAgcmV0dXJuOwogICB9Ci0gIFtzdGF0c1JlcG9ydC52YWx1ZXMgZW51bWVyYXRl
S2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oCi0gICAgICBOU1N0cmluZyAqa2V5LCBOU1N0cmlu
ZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsKLSAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJn
b29nUnR0Il0pIHsKLSAgICAgIF9jb25uUnR0ID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5
IGlzRXF1YWxUb1N0cmluZzpAImdvb2dMb2NhbENhbmRpZGF0ZVR5cGUiXSkgewotICAgICAgX2xv
Y2FsQ2FuZFR5cGUgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5n
OkAiZ29vZ1JlbW90ZUNhbmRpZGF0ZVR5cGUiXSkgewotICAgICAgX3JlbW90ZUNhbmRUeXBlID0g
dmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dUcmFuc3Bv
cnRUeXBlIl0pIHsKLSAgICAgIF90cmFuc3BvcnRUeXBlID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlm
IChba2V5IGlzRXF1YWxUb1N0cmluZzpAImJ5dGVzUmVjZWl2ZWQiXSkgewotICAgICAgTlNJbnRl
Z2VyIGJ5dGVDb3VudCA9IHZhbHVlLmludGVnZXJWYWx1ZTsKLSAgICAgIFtfY29ublJlY3ZCaXRy
YXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRlQ291bnQ6Ynl0ZUNvdW50XTsK
LSAgICAgIF9jb25uUmVjdkJpdHJhdGUgPSBfY29ublJlY3ZCaXRyYXRlVHJhY2tlci5iaXRyYXRl
U3RyaW5nOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1NlbnQi
XSkgewotICAgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZhbHVlLmludGVnZXJWYWx1ZTsKLSAg
ICAgIFtfY29ublNlbmRCaXRyYXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRl
Q291bnQ6Ynl0ZUNvdW50XTsKLSAgICAgIF9jb25uU2VuZEJpdHJhdGUgPSBfY29ublNlbmRCaXRy
YXRlVHJhY2tlci5iaXRyYXRlU3RyaW5nOwotICAgIH0KLSAgfV07CisgIFtzdGF0c1JlcG9ydC52
YWx1ZXMKKyAgICAgIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5n
ICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAqc3RvcCkgeworICAgICAgICBbc2VsZiB1cGRh
dGVDb25uZWN0aW9uU3RhdE9mS2V5OmtleSB2YWx1ZTp2YWx1ZV07CisgICAgICB9XTsKIH0KIAog
LSAodm9pZClwYXJzZVNlbmRTc3JjU3RhdHNSZXBvcnQ6KFJUQ0xlZ2FjeVN0YXRzUmVwb3J0ICop
c3RhdHNSZXBvcnQgewpAQCAtMjI0LDUwICsyMjgsNTggQEAgLSAodm9pZClwYXJzZVNlbmRTc3Jj
U3RhdHNSZXBvcnQ6KFJUQ0xlZ2FjeVN0YXRzUmVwb3J0ICopc3RhdHNSZXBvcnQgewogICB9CiB9
CiAKKy0gKHZvaWQpdXBkYXRlQXVkaW9TZW5kU3RhdE9mS2V5OihOU1N0cmluZyAqKWtleSB2YWx1
ZTooTlNTdHJpbmcgKil2YWx1ZSB7CisgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dD
b2RlY05hbWUiXSkgeworICAgIF9hdWRpb1NlbmRDb2RlYyA9IHZhbHVlOworICB9IGVsc2UgaWYg
KFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiYnl0ZXNTZW50Il0pIHsKKyAgICBOU0ludGVnZXIgYnl0
ZUNvdW50ID0gdmFsdWUuaW50ZWdlclZhbHVlOworICAgIFtfYXVkaW9TZW5kQml0cmF0ZVRyYWNr
ZXIgdXBkYXRlQml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50OmJ5dGVDb3VudF07CisgICAgX2F1
ZGlvU2VuZEJpdHJhdGUgPSBfYXVkaW9TZW5kQml0cmF0ZVRyYWNrZXIuYml0cmF0ZVN0cmluZzsK
KyAgfQorfQorCiAtICh2b2lkKXBhcnNlQXVkaW9TZW5kU3RhdHNSZXBvcnQ6KFJUQ0xlZ2FjeVN0
YXRzUmVwb3J0ICopc3RhdHNSZXBvcnQgewotICBbc3RhdHNSZXBvcnQudmFsdWVzIGVudW1lcmF0
ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKAotICAgICAgTlNTdHJpbmcgKmtleSwgTlNTdHJp
bmcgKnZhbHVlLCBCT09MICpzdG9wKSB7Ci0gICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAi
Z29vZ0NvZGVjTmFtZSJdKSB7Ci0gICAgICBfYXVkaW9TZW5kQ29kZWMgPSB2YWx1ZTsKLSAgICB9
IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiYnl0ZXNTZW50Il0pIHsKLSAgICAgIE5T
SW50ZWdlciBieXRlQ291bnQgPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7Ci0gICAgICBbX2F1ZGlvU2Vu
ZEJpdHJhdGVUcmFja2VyIHVwZGF0ZUJpdHJhdGVXaXRoQ3VycmVudEJ5dGVDb3VudDpieXRlQ291
bnRdOwotICAgICAgX2F1ZGlvU2VuZEJpdHJhdGUgPSBfYXVkaW9TZW5kQml0cmF0ZVRyYWNrZXIu
Yml0cmF0ZVN0cmluZzsKLSAgICB9Ci0gIH1dOworICBbc3RhdHNSZXBvcnQudmFsdWVzCisgICAg
ICBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqa2V5LCBOU1N0
cmluZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgW3NlbGYgdXBkYXRlQXVkaW9TZW5k
U3RhdE9mS2V5OmtleSB2YWx1ZTp2YWx1ZV07CisgICAgICB9XTsKK30KKworLSAodm9pZCl1cGRh
dGVWaWRlb1NlbmRTdGF0T2ZLZXk6KE5TU3RyaW5nICopa2V5IHZhbHVlOihOU1N0cmluZyAqKXZh
bHVlIHsKKyAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0NvZGVjTmFtZSJdKSB7Cisg
ICAgX3ZpZGVvU2VuZENvZGVjID0gdmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9T
dHJpbmc6QCJnb29nRnJhbWVIZWlnaHRJbnB1dCJdKSB7CisgICAgX3ZpZGVvSW5wdXRIZWlnaHQg
PSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVdp
ZHRoSW5wdXQiXSkgeworICAgIF92aWRlb0lucHV0V2lkdGggPSB2YWx1ZTsKKyAgfSBlbHNlIGlm
IChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVJhdGVJbnB1dCJdKSB7CisgICAgX3Zp
ZGVvSW5wdXRGcHMgPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpA
Imdvb2dGcmFtZUhlaWdodFNlbnQiXSkgeworICAgIF92aWRlb1NlbmRIZWlnaHQgPSB2YWx1ZTsK
KyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVdpZHRoU2VudCJd
KSB7CisgICAgX3ZpZGVvU2VuZFdpZHRoID0gdmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0Vx
dWFsVG9TdHJpbmc6QCJnb29nRnJhbWVSYXRlU2VudCJdKSB7CisgICAgX3ZpZGVvU2VuZEZwcyA9
IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0F2Z0VuY29k
ZU1zIl0pIHsKKyAgICBfdmlkZW9FbmNvZGVNcyA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkg
aXNFcXVhbFRvU3RyaW5nOkAiYnl0ZXNTZW50Il0pIHsKKyAgICBOU0ludGVnZXIgYnl0ZUNvdW50
ID0gdmFsdWUuaW50ZWdlclZhbHVlOworICAgIFtfdmlkZW9TZW5kQml0cmF0ZVRyYWNrZXIgdXBk
YXRlQml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50OmJ5dGVDb3VudF07CisgICAgX3ZpZGVvU2Vu
ZEJpdHJhdGUgPSBfdmlkZW9TZW5kQml0cmF0ZVRyYWNrZXIuYml0cmF0ZVN0cmluZzsKKyAgfSBl
bHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAInFwU3VtIl0pIHsKKyAgICBfb2xkVmlkZW9R
UFN1bSA9IF92aWRlb1FQU3VtOworICAgIF92aWRlb1FQU3VtID0gdmFsdWUuaW50ZWdlclZhbHVl
OworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWVzRW5jb2RlZCJdKSB7
CisgICAgX29sZEZyYW1lc0VuY29kZWQgPSBfZnJhbWVzRW5jb2RlZDsKKyAgICBfZnJhbWVzRW5j
b2RlZCA9IHZhbHVlLmludGVnZXJWYWx1ZTsKKyAgfQogfQogCiAtICh2b2lkKXBhcnNlVmlkZW9T
ZW5kU3RhdHNSZXBvcnQ6KFJUQ0xlZ2FjeVN0YXRzUmVwb3J0ICopc3RhdHNSZXBvcnQgewotICBb
c3RhdHNSZXBvcnQudmFsdWVzIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKAot
ICAgICAgTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcgKnZhbHVlLCBCT09MICpzdG9wKSB7Ci0gICAg
aWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0NvZGVjTmFtZSJdKSB7Ci0gICAgICBfdmlk
ZW9TZW5kQ29kZWMgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5n
OkAiZ29vZ0ZyYW1lSGVpZ2h0SW5wdXQiXSkgewotICAgICAgX3ZpZGVvSW5wdXRIZWlnaHQgPSB2
YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lV2lk
dGhJbnB1dCJdKSB7Ci0gICAgICBfdmlkZW9JbnB1dFdpZHRoID0gdmFsdWU7Ci0gICAgfSBlbHNl
IGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVJhdGVJbnB1dCJdKSB7Ci0gICAg
ICBfdmlkZW9JbnB1dEZwcyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9T
dHJpbmc6QCJnb29nRnJhbWVIZWlnaHRTZW50Il0pIHsKLSAgICAgIF92aWRlb1NlbmRIZWlnaHQg
PSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1l
V2lkdGhTZW50Il0pIHsKLSAgICAgIF92aWRlb1NlbmRXaWR0aCA9IHZhbHVlOwotICAgIH0gZWxz
ZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVSYXRlU2VudCJdKSB7Ci0gICAg
ICBfdmlkZW9TZW5kRnBzID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0
cmluZzpAImdvb2dBdmdFbmNvZGVNcyJdKSB7Ci0gICAgICBfdmlkZW9FbmNvZGVNcyA9IHZhbHVl
OwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1NlbnQiXSkgewot
ICAgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZhbHVlLmludGVnZXJWYWx1ZTsKLSAgICAgIFtf
dmlkZW9TZW5kQml0cmF0ZVRyYWNrZXIgdXBkYXRlQml0cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50
OmJ5dGVDb3VudF07Ci0gICAgICBfdmlkZW9TZW5kQml0cmF0ZSA9IF92aWRlb1NlbmRCaXRyYXRl
VHJhY2tlci5iaXRyYXRlU3RyaW5nOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJxcFN1bSJdKSB7Ci0gICAgICBfb2xkVmlkZW9RUFN1bSA9IF92aWRlb1FQU3VtOwotICAg
ICAgX3ZpZGVvUVBTdW0gPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7Ci0gICAgfSBlbHNlIGlmIChba2V5
IGlzRXF1YWxUb1N0cmluZzpAImZyYW1lc0VuY29kZWQiXSkgewotICAgICAgX29sZEZyYW1lc0Vu
Y29kZWQgPSBfZnJhbWVzRW5jb2RlZDsKLSAgICAgIF9mcmFtZXNFbmNvZGVkID0gdmFsdWUuaW50
ZWdlclZhbHVlOwotICAgIH0KLSAgfV07CisgIFtzdGF0c1JlcG9ydC52YWx1ZXMKKyAgICAgIGVu
dW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICprZXksIE5TU3RyaW5n
ICp2YWx1ZSwgQk9PTCAqc3RvcCkgeworICAgICAgICBbc2VsZiB1cGRhdGVWaWRlb1NlbmRTdGF0
T2ZLZXk6a2V5IHZhbHVlOnZhbHVlXTsKKyAgICAgIH1dOwogfQogCiAtICh2b2lkKXBhcnNlUmVj
dlNzcmNTdGF0c1JlcG9ydDooUlRDTGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7CkBA
IC0yODEsNDQgKzI5Myw1MiBAQCAtICh2b2lkKXBhcnNlUmVjdlNzcmNTdGF0c1JlcG9ydDooUlRD
TGVnYWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7CiAgIH0KIH0KIAorLSAodm9pZCl1cGRh
dGVBdWRpb1JlY3ZTdGF0T2ZLZXk6KE5TU3RyaW5nICopa2V5IHZhbHVlOihOU1N0cmluZyAqKXZh
bHVlIHsKKyAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0NvZGVjTmFtZSJdKSB7Cisg
ICAgX2F1ZGlvUmVjdkNvZGVjID0gdmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9T
dHJpbmc6QCJieXRlc1JlY2VpdmVkIl0pIHsKKyAgICBOU0ludGVnZXIgYnl0ZUNvdW50ID0gdmFs
dWUuaW50ZWdlclZhbHVlOworICAgIFtfYXVkaW9SZWN2Qml0cmF0ZVRyYWNrZXIgdXBkYXRlQml0
cmF0ZVdpdGhDdXJyZW50Qnl0ZUNvdW50OmJ5dGVDb3VudF07CisgICAgX2F1ZGlvUmVjdkJpdHJh
dGUgPSBfYXVkaW9SZWN2Qml0cmF0ZVRyYWNrZXIuYml0cmF0ZVN0cmluZzsKKyAgfSBlbHNlIGlm
IChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dTcGVlY2hFeHBhbmRSYXRlIl0pIHsKKyAgICBf
YXVkaW9FeHBhbmRSYXRlID0gdmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJnb29nQ3VycmVudERlbGF5TXMiXSkgeworICAgIF9hdWRpb0N1cnJlbnREZWxheSA9IHZh
bHVlOworICB9Cit9CisKIC0gKHZvaWQpcGFyc2VBdWRpb1JlY3ZTdGF0c1JlcG9ydDooUlRDTGVn
YWN5U3RhdHNSZXBvcnQgKilzdGF0c1JlcG9ydCB7Ci0gIFtzdGF0c1JlcG9ydC52YWx1ZXMgZW51
bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oCi0gICAgICBOU1N0cmluZyAqa2V5LCBO
U1N0cmluZyAqdmFsdWUsIEJPT0wgKnN0b3ApIHsKLSAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJp
bmc6QCJnb29nQ29kZWNOYW1lIl0pIHsKLSAgICAgIF9hdWRpb1JlY3ZDb2RlYyA9IHZhbHVlOwot
ICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJieXRlc1JlY2VpdmVkIl0pIHsK
LSAgICAgIE5TSW50ZWdlciBieXRlQ291bnQgPSB2YWx1ZS5pbnRlZ2VyVmFsdWU7Ci0gICAgICBb
X2F1ZGlvUmVjdkJpdHJhdGVUcmFja2VyIHVwZGF0ZUJpdHJhdGVXaXRoQ3VycmVudEJ5dGVDb3Vu
dDpieXRlQ291bnRdOwotICAgICAgX2F1ZGlvUmVjdkJpdHJhdGUgPSBfYXVkaW9SZWN2Qml0cmF0
ZVRyYWNrZXIuYml0cmF0ZVN0cmluZzsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3Ry
aW5nOkAiZ29vZ1NwZWVjaEV4cGFuZFJhdGUiXSkgewotICAgICAgX2F1ZGlvRXhwYW5kUmF0ZSA9
IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nQ3VycmVu
dERlbGF5TXMiXSkgewotICAgICAgX2F1ZGlvQ3VycmVudERlbGF5ID0gdmFsdWU7Ci0gICAgfQot
ICB9XTsKKyAgW3N0YXRzUmVwb3J0LnZhbHVlcworICAgICAgZW51bWVyYXRlS2V5c0FuZE9iamVj
dHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcgKnZhbHVlLCBCT09MICpzdG9w
KSB7CisgICAgICAgIFtzZWxmIHVwZGF0ZUF1ZGlvUmVjdlN0YXRPZktleTprZXkgdmFsdWU6dmFs
dWVdOworICAgICAgfV07Cit9CisKKy0gKHZvaWQpdXBkYXRlVmlkZW9SZWN2U3RhdE9mS2V5OihO
U1N0cmluZyAqKWtleSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSB7CisgIGlmIChba2V5IGlzRXF1
YWxUb1N0cmluZzpAImdvb2dGcmFtZUhlaWdodFJlY2VpdmVkIl0pIHsKKyAgICBfdmlkZW9SZWN2
SGVpZ2h0ID0gdmFsdWU7CisgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29n
RnJhbWVXaWR0aFJlY2VpdmVkIl0pIHsKKyAgICBfdmlkZW9SZWN2V2lkdGggPSB2YWx1ZTsKKyAg
fSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZVJhdGVSZWNlaXZlZCJd
KSB7CisgICAgX3ZpZGVvUmVjdkZwcyA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVh
bFRvU3RyaW5nOkAiZ29vZ0ZyYW1lUmF0ZURlY29kZWQiXSkgeworICAgIF92aWRlb0RlY29kZWRG
cHMgPSB2YWx1ZTsKKyAgfSBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFt
ZVJhdGVPdXRwdXQiXSkgeworICAgIF92aWRlb091dHB1dEZwcyA9IHZhbHVlOworICB9IGVsc2Ug
aWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0RlY29kZU1zIl0pIHsKKyAgICBfdmlkZW9E
ZWNvZGVNcyA9IHZhbHVlOworICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiYnl0
ZXNSZWNlaXZlZCJdKSB7CisgICAgTlNJbnRlZ2VyIGJ5dGVDb3VudCA9IHZhbHVlLmludGVnZXJW
YWx1ZTsKKyAgICBbX3ZpZGVvUmVjdkJpdHJhdGVUcmFja2VyIHVwZGF0ZUJpdHJhdGVXaXRoQ3Vy
cmVudEJ5dGVDb3VudDpieXRlQ291bnRdOworICAgIF92aWRlb1JlY3ZCaXRyYXRlID0gX3ZpZGVv
UmVjdkJpdHJhdGVUcmFja2VyLmJpdHJhdGVTdHJpbmc7CisgIH0KIH0KIAogLSAodm9pZClwYXJz
ZVZpZGVvUmVjdlN0YXRzUmVwb3J0OihSVENMZWdhY3lTdGF0c1JlcG9ydCAqKXN0YXRzUmVwb3J0
IHsKLSAgW3N0YXRzUmVwb3J0LnZhbHVlcyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxv
Y2s6XigKLSAgICAgIE5TU3RyaW5nICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCAqc3RvcCkg
ewotICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImdvb2dGcmFtZUhlaWdodFJlY2VpdmVk
Il0pIHsKLSAgICAgIF92aWRlb1JlY3ZIZWlnaHQgPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtr
ZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lV2lkdGhSZWNlaXZlZCJdKSB7Ci0gICAgICBf
dmlkZW9SZWN2V2lkdGggPSB2YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3Ry
aW5nOkAiZ29vZ0ZyYW1lUmF0ZVJlY2VpdmVkIl0pIHsKLSAgICAgIF92aWRlb1JlY3ZGcHMgPSB2
YWx1ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZ29vZ0ZyYW1lUmF0
ZURlY29kZWQiXSkgewotICAgICAgX3ZpZGVvRGVjb2RlZEZwcyA9IHZhbHVlOwotICAgIH0gZWxz
ZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJnb29nRnJhbWVSYXRlT3V0cHV0Il0pIHsKLSAg
ICAgIF92aWRlb091dHB1dEZwcyA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAoW2tleSBpc0VxdWFs
VG9TdHJpbmc6QCJnb29nRGVjb2RlTXMiXSkgewotICAgICAgX3ZpZGVvRGVjb2RlTXMgPSB2YWx1
ZTsKLSAgICB9IGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiYnl0ZXNSZWNlaXZlZCJd
KSB7Ci0gICAgICBOU0ludGVnZXIgYnl0ZUNvdW50ID0gdmFsdWUuaW50ZWdlclZhbHVlOwotICAg
ICAgW192aWRlb1JlY3ZCaXRyYXRlVHJhY2tlciB1cGRhdGVCaXRyYXRlV2l0aEN1cnJlbnRCeXRl
Q291bnQ6Ynl0ZUNvdW50XTsKLSAgICAgIF92aWRlb1JlY3ZCaXRyYXRlID0gX3ZpZGVvUmVjdkJp
dHJhdGVUcmFja2VyLmJpdHJhdGVTdHJpbmc7Ci0gICAgfQotICB9XTsKKyAgW3N0YXRzUmVwb3J0
LnZhbHVlcworICAgICAgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJp
bmcgKmtleSwgTlNTdHJpbmcgKnZhbHVlLCBCT09MICpzdG9wKSB7CisgICAgICAgIFtzZWxmIHVw
ZGF0ZVZpZGVvUmVjdlN0YXRPZktleTprZXkgdmFsdWU6dmFsdWVdOworICAgICAgfV07CiB9CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL2lvcy9BUkRNYWluVmlld0NvbnRyb2xsZXIu
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29i
amMvQXBwUlRDTW9iaWxlL2lvcy9BUkRNYWluVmlld0NvbnRyb2xsZXIubQppbmRleCBmYWUzZjdi
OGFhNzI2N2M2ZGI0NWJlZjI2MmVkOWIzNTYwYzZiMjBkLi42M2IzZGQ3NmNhZDAyNWQ5YmM5ODUx
MTBhZGM1MjMzMTQ0MjhhZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9pb3MvQVJETWFpblZp
ZXdDb250cm9sbGVyLm0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvaW9zL0FSRE1haW5WaWV3Q29udHJvbGxl
ci5tCkBAIC0zMiwxNCArMzIsMTcgQEAgQGludGVyZmFjZSBBUkRNYWluVmlld0NvbnRyb2xsZXIg
KCkgPAogICAgIEFSRE1haW5WaWV3RGVsZWdhdGUsCiAgICAgQVJEVmlkZW9DYWxsVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZSwKICAgICBSVENBdWRpb1Nlc3Npb25EZWxlZ2F0ZT4KK0Bwcm9wZXJ0eShu
b25hdG9taWMsIHN0cm9uZykgQVJETWFpblZpZXcgKm1haW5WaWV3OworQHByb3BlcnR5KG5vbmF0
b21pYywgc3Ryb25nKSBBVkF1ZGlvUGxheWVyICphdWRpb1BsYXllcjsKIEBlbmQKIAogQGltcGxl
bWVudGF0aW9uIEFSRE1haW5WaWV3Q29udHJvbGxlciB7Ci0gIEFSRE1haW5WaWV3ICpfbWFpblZp
ZXc7Ci0gIEFWQXVkaW9QbGF5ZXIgKl9hdWRpb1BsYXllcjsKICAgQk9PTCBfdXNlTWFudWFsQXVk
aW87CiB9CiAKK0BzeW50aGVzaXplIG1haW5WaWV3ID0gX21haW5WaWV3OworQHN5bnRoZXNpemUg
YXVkaW9QbGF5ZXIgPSBfYXVkaW9QbGF5ZXI7CisKIC0gKHZvaWQpdmlld0RpZExvYWQgewogICBb
c3VwZXIgdmlld0RpZExvYWRdOwogICBpZiAoW1tbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10g
YXJndW1lbnRzXSBjb250YWluc09iamVjdDpsb29wYmFja0xhdW5jaFByb2Nlc3NBcmd1bWVudF0p
IHsKQEAgLTE2NSwxMyArMTY4LDEzIEBAIC0gKHZvaWQpYXVkaW9TZXNzaW9uRGlkU3RhcnRQbGF5
T3JSZWNvcmQ6KFJUQ0F1ZGlvU2Vzc2lvbiAqKXNlc3Npb24gewogICAvLyBTdG9wIHBsYXliYWNr
IG9uIG1haW4gcXVldWUgYW5kIHRoZW4gY29uZmlndXJlIFdlYlJUQy4KICAgW1JUQ0Rpc3BhdGNo
ZXIgZGlzcGF0Y2hBc3luY09uVHlwZTpSVENEaXNwYXRjaGVyVHlwZU1haW4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBibG9jazpeewotICAgIGlmIChfbWFpblZpZXcuaXNBdWRpb0xv
b3BQbGF5aW5nKSB7Ci0gICAgICBSVENMb2coQCJTdG9wcGluZyBhdWRpbyBsb29wIGR1ZSB0byBX
ZWJSVEMgc3RhcnQuIik7Ci0gICAgICBbX2F1ZGlvUGxheWVyIHN0b3BdOwotICAgIH0KLSAgICBS
VENMb2coQCJTZXR0aW5nIGlzQXVkaW9FbmFibGVkIHRvIFlFUy4iKTsKLSAgICBzZXNzaW9uLmlz
QXVkaW9FbmFibGVkID0gWUVTOwotICB9XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzZWxmLm1haW5WaWV3LmlzQXVkaW9Mb29wUGxheWluZykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSVENMb2coQCJTdG9wcGluZyBhdWRpbyBsb29wIGR1ZSB0
byBXZWJSVEMgc3RhcnQuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtz
ZWxmLmF1ZGlvUGxheWVyIHN0b3BdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRDTG9nKEAiU2V0dGluZyBpc0F1
ZGlvRW5hYmxlZCB0byBZRVMuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXNzaW9uLmlzQXVkaW9FbmFibGVkID0gWUVTOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH1dOwogfQogCiAtICh2b2lkKWF1ZGlvU2Vzc2lvbkRpZFN0b3BQbGF5T3JSZWNvcmQ6KFJU
Q0F1ZGlvU2Vzc2lvbiAqKXNlc3Npb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvaW9zL0FS
RFZpZGVvQ2FsbFZpZXdDb250cm9sbGVyLm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS9pb3MvQVJEVmlkZW9DYWxs
Vmlld0NvbnRyb2xsZXIubQppbmRleCAyODI3YmY5NDQyM2NiMDIzZTQ1ZWE5ODRmNWU3NzY4N2Fl
NzY0YTBhLi5mN2Y0YTg3N2VmMGFhMWVkMTMxYTcxMjI5YjRhZmYyMDdkYmFjYzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9v
YmpjL0FwcFJUQ01vYmlsZS9pb3MvQVJEVmlkZW9DYWxsVmlld0NvbnRyb2xsZXIubQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0Fw
cFJUQ01vYmlsZS9pb3MvQVJEVmlkZW9DYWxsVmlld0NvbnRyb2xsZXIubQpAQCAtMjcsNiArMjcs
NyBAQCBAaW50ZXJmYWNlIEFSRFZpZGVvQ2FsbFZpZXdDb250cm9sbGVyICgpIDxBUkRBcHBDbGll
bnREZWxlZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJU
Q0F1ZGlvU2Vzc2lvbkRlbGVnYXRlPgogQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBSVENW
aWRlb1RyYWNrICpyZW1vdGVWaWRlb1RyYWNrOwogQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9u
bHkpIEFSRFZpZGVvQ2FsbFZpZXcgKnZpZGVvQ2FsbFZpZXc7CitAcHJvcGVydHkobm9uYXRvbWlj
LCBhc3NpZ24pIEFWQXVkaW9TZXNzaW9uUG9ydE92ZXJyaWRlIHBvcnRPdmVycmlkZTsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIEFSRFZpZGVvQ2FsbFZpZXdDb250cm9sbGVyIHsKQEAgLTM0LDEy
ICszNSwxMiBAQCBAaW1wbGVtZW50YXRpb24gQVJEVmlkZW9DYWxsVmlld0NvbnRyb2xsZXIgewog
ICBSVENWaWRlb1RyYWNrICpfcmVtb3RlVmlkZW9UcmFjazsKICAgQVJEQ2FwdHVyZUNvbnRyb2xs
ZXIgKl9jYXB0dXJlQ29udHJvbGxlcjsKICAgQVJERmlsZUNhcHR1cmVDb250cm9sbGVyICpfZmls
ZUNhcHR1cmVDb250cm9sbGVyIE5TX0FWQUlMQUJMRV9JT1MoMTApOwotICBBVkF1ZGlvU2Vzc2lv
blBvcnRPdmVycmlkZSBfcG9ydE92ZXJyaWRlOwogfQogCiBAc3ludGhlc2l6ZSB2aWRlb0NhbGxW
aWV3ID0gX3ZpZGVvQ2FsbFZpZXc7CiBAc3ludGhlc2l6ZSByZW1vdGVWaWRlb1RyYWNrID0gX3Jl
bW90ZVZpZGVvVHJhY2s7CiBAc3ludGhlc2l6ZSBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZTsKK0BzeW50
aGVzaXplIHBvcnRPdmVycmlkZSA9IF9wb3J0T3ZlcnJpZGU7CiAKIC0gKGluc3RhbmNldHlwZSlp
bml0Rm9yUm9vbTooTlNTdHJpbmcgKilyb29tCiAgICAgICAgICAgICAgICAgIGlzTG9vcGJhY2s6
KEJPT0wpaXNMb29wYmFjawpAQCAtMTY4LDcgKzE2OSw3IEBAIC0gKHZvaWQpdmlkZW9DYWxsVmll
d0RpZENoYW5nZVJvdXRlOihBUkRWaWRlb0NhbGxWaWV3ICopdmlldyB7CiAgICAgW3Nlc3Npb24g
bG9ja0ZvckNvbmZpZ3VyYXRpb25dOwogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwogICAgIGlm
IChbc2Vzc2lvbiBvdmVycmlkZU91dHB1dEF1ZGlvUG9ydDpvdmVycmlkZSBlcnJvcjomZXJyb3Jd
KSB7Ci0gICAgICBfcG9ydE92ZXJyaWRlID0gb3ZlcnJpZGU7CisgICAgICBzZWxmLnBvcnRPdmVy
cmlkZSA9IG92ZXJyaWRlOwogICAgIH0gZWxzZSB7CiAgICAgICBSVENMb2dFcnJvcihAIkVycm9y
IG92ZXJyaWRpbmcgb3V0cHV0IHBvcnQ6ICVAIiwKICAgICAgICAgICAgICAgICAgIGVycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRDTW9iaWxlL21hYy9BUFBSVENW
aWV3Q29udHJvbGxlci5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvbWFjL0FQUFJUQ1ZpZXdDb250cm9sbGVyLm0K
aW5kZXggOWY1ZWQ0MGIxYjQxYzI4ZWExY2YxZWQ3M2FmMzY1ZDU0NjFiN2JjMi4uYTk3MmEyMGU0
ZWE4OTg5NjRiMWViZTAyMjJhOGQyYzQ0MGJiYmZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUv
bWFjL0FQUFJUQ1ZpZXdDb250cm9sbGVyLm0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqYy9BcHBSVENNb2JpbGUvbWFjL0FQUFJUQ1Zp
ZXdDb250cm9sbGVyLm0KQEAgLTM5LDYgKzM5LDcgQEAgQGludGVyZmFjZSBBUFBSVENNYWluVmll
dyA6IE5TVmlldwogQHByb3BlcnR5KG5vbmF0b21pYywgd2VhaykgaWQ8QVBQUlRDTWFpblZpZXdE
ZWxlZ2F0ZT4gZGVsZWdhdGU7CiBAcHJvcGVydHkobm9uYXRvbWljLCByZWFkb25seSkgTlNWaWV3
PFJUQ1ZpZGVvUmVuZGVyZXI+KiBsb2NhbFZpZGVvVmlldzsKIEBwcm9wZXJ0eShub25hdG9taWMs
IHJlYWRvbmx5KSBOU1ZpZXc8UlRDVmlkZW9SZW5kZXJlcj4qIHJlbW90ZVZpZGVvVmlldzsKK0Bw
cm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5KSBOU1RleHRWaWV3KiBsb2dWaWV3OwogCiAtICh2
b2lkKWRpc3BsYXlMb2dNZXNzYWdlOihOU1N0cmluZyopbWVzc2FnZTsKIApAQCAtNTIsNyArNTMs
NiBAQCBAaW1wbGVtZW50YXRpb24gQVBQUlRDTWFpblZpZXcgIHsKICAgTlNCdXR0b24qIF9jb25u
ZWN0QnV0dG9uOwogICBOU0J1dHRvbiogX2xvb3BiYWNrQnV0dG9uOwogICBOU1RleHRGaWVsZCog
X3Jvb21GaWVsZDsKLSAgTlNUZXh0VmlldyogX2xvZ1ZpZXc7CiAgIENHU2l6ZSBfbG9jYWxWaWRl
b1NpemU7CiAgIENHU2l6ZSBfcmVtb3RlVmlkZW9TaXplOwogfQpAQCAtNjAsMTQgKzYwLDEzIEBA
IEBpbXBsZW1lbnRhdGlvbiBBUFBSVENNYWluVmlldyAgewogQHN5bnRoZXNpemUgZGVsZWdhdGUg
PSBfZGVsZWdhdGU7CiBAc3ludGhlc2l6ZSBsb2NhbFZpZGVvVmlldyA9IF9sb2NhbFZpZGVvVmll
dzsKIEBzeW50aGVzaXplIHJlbW90ZVZpZGVvVmlldyA9IF9yZW1vdGVWaWRlb1ZpZXc7Ci0KK0Bz
eW50aGVzaXplIGxvZ1ZpZXcgPSBfbG9nVmlldzsKIAogLSAodm9pZClkaXNwbGF5TG9nTWVzc2Fn
ZTooTlNTdHJpbmcgKiltZXNzYWdlIHsKICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKLSAgICBfbG9nVmlldy5zdHJpbmcgPQotICAgICAgICBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVAJUBcbiIsIF9sb2dWaWV3LnN0cmluZywgbWVzc2FnZV07Ci0g
ICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKF9sb2dWaWV3LnN0cmluZy5sZW5ndGgsIDAp
OwotICAgIFtfbG9nVmlldyBzY3JvbGxSYW5nZVRvVmlzaWJsZTpyYW5nZV07CisgICAgc2VsZi5s
b2dWaWV3LnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQFxuIiwgc2Vs
Zi5sb2dWaWV3LnN0cmluZywgbWVzc2FnZV07CisgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJh
bmdlKHNlbGYubG9nVmlldy5zdHJpbmcubGVuZ3RoLCAwKTsKKyAgICBbc2VsZi5sb2dWaWV3IHNj
cm9sbFJhbmdlVG9WaXNpYmxlOnJhbmdlXTsKICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamMvQXBwUlRD
TW9iaWxlL3Rlc3RzL21haW4ubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9vYmpjL0FwcFJUQ01vYmlsZS90ZXN0cy9tYWluLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM2MjVmZmQ3YmY4MWNhODNlZTI2NmJmYTE5OWZhOWVmMzA0ODAzNWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxl
cy9vYmpjL0FwcFJUQ01vYmlsZS90ZXN0cy9tYWluLm1tCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisKKyNpbmNsdWRlICJ0ZXN0
L2lvcy9jb3ZlcmFnZV91dGlsX2lvcy5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJn
dltdKSB7CisgIHJ0Yzo6dGVzdDo6Q29uZmlndXJlQ292ZXJhZ2VSZXBvcnRQYXRoKCk7CisKKyAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgcmV0dXJuIFVJQXBwbGljYXRpb25NYWluKGFyZ2MsIGFy
Z3YsIG5pbCwgbmlsKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvb2JqY25hdGl2ZWFwaS9vYmpjL29iamNjYWxs
Y2xpZW50Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhh
bXBsZXMvb2JqY25hdGl2ZWFwaS9vYmpjL29iamNjYWxsY2xpZW50Lm1tCmluZGV4IGMzODRkYTNl
ZjhjYmJiNzc2ZGQwNWZjNTQwNTVjMjA5OWRiMTExY2YuLmM3YjJhZjQyMTIzZTQ5NWQ3ZTcyYWU2
NmNlY2ZkMTU3ZTMyMzgxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL29iamNuYXRpdmVhcGkvb2JqYy9vYmpjY2FsbGNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFt
cGxlcy9vYmpjbmF0aXZlYXBpL29iamMvb2JqY2NhbGxjbGllbnQubW0KQEAgLTIxLDYgKzIxLDcg
QEAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJf
ZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgorI2lu
Y2x1ZGUgImFwaS92aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnku
aCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAj
aW5jbHVkZSAic2RrL29iamMvbmF0aXZlL2FwaS92aWRlb19jYXB0dXJlci5oIgpAQCAtMTE2LDEy
ICsxMTcsMTYgQEAgdm9pZCBPYmpDQ2FsbENsaWVudDo6Q3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0
b3J5KCkgewogICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiB2
aWRlb0VuY29kZXJGYWN0b3J5ID0KICAgICAgIHdlYnJ0Yzo6T2JqQ1RvTmF0aXZlVmlkZW9FbmNv
ZGVyRmFjdG9yeShbW1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5IGFsbG9jXSBpbml0XSk7
CiAKKyAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9y
eT4gdmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSA9CisgICAgICB3ZWJydGM6OkNyZWF0ZUJ1
aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCk7CisKICAgc3RkOjp1bmlxdWVfcHRy
PGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUgPQogICAgICAgY3Jp
Y2tldDo6V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUobnVsbHB0ciAvKiBhZG0gKi8s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6
OkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0Rl
Y29kZXJGYWN0b3J5KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1vdmUodmlkZW9FbmNvZGVyRmFjdG9yeSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUodmlkZW9EZWNvZGVyRmFj
dG9yeSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om1vdmUodmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyIC8qIGF1ZGlvX21peGVyICov
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRj
OjpBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3JlYXRlKCkpOwogICBSVENfTE9HKExTX0lORk8p
IDw8ICJNZWRpYSBlbmdpbmUgY3JlYXRlZDogIiA8PCBtZWRpYV9lbmdpbmUuZ2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxl
cy9wZWVyY29ubmVjdGlvbi9jbGllbnQvY29uZHVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2Nv
bmR1Y3Rvci5jYwppbmRleCBjMjUyNTljZTM0ZGYzNWNhNGMzODQ1NjhmOGVmOTI0OGZjYTdkMDJh
Li5hNzgxYzRhMTg3NGFhMzJiMGQ5Y2Y4MzA3YmQ1NTBhYTA5NjY4ODhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29u
bmVjdGlvbi9jbGllbnQvY29uZHVjdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9jb25kdWN0
b3IuY2MKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVp
bHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL2NyZWF0ZV9w
ZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWls
dGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
YnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJleGFtcGxlcy9wZWVy
Y29ubmVjdGlvbi9jbGllbnQvZGVmYXVsdHMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVu
dC9mbGFnZGVmcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
ZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2ZsYWdkZWZzLmgKaW5kZXggNTY0ZTBlOTVm
OTBjN2M1NWZjOTMyNWY5M2ZkMDJjN2U5ODY1NTI0Zi4uNTFmOWM5YTQyNTVhNGFhZTNmYWY0ODBm
NjU1YjBhNzc1YWNmNDFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2ZsYWdkZWZzLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMv
cGVlcmNvbm5lY3Rpb24vY2xpZW50L2ZsYWdkZWZzLmgKQEAgLTE5LDIwICsxOSwyOSBAQCBleHRl
cm4gY29uc3QgdWludDE2X3Qga0RlZmF1bHRTZXJ2ZXJQb3J0OyAgLy8gRnJvbSBkZWZhdWx0cy5b
aHxjY10KIC8vIGhlYWRlciBmaWxlIHNvIHRoYXQgdGhleSBjYW4gYmUgc2hhcmVkIGFjcm9zcyB0
aGUgZGlmZmVyZW50IG1haW4uY2MncwogLy8gZm9yIGVhY2ggcGxhdGZvcm0uCiAKLURFRklORV9i
b29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZSIpOwotREVGSU5FX2Jvb2woYXV0
b2Nvbm5lY3QsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJDb25uZWN0IHRvIHRo
ZSBzZXJ2ZXIgd2l0aG91dCB1c2VyICIKLSAgICAgICAgICAgICJpbnRlcnZlbnRpb24uIik7Ci1E
RUZJTkVfc3RyaW5nKHNlcnZlciwgImxvY2FsaG9zdCIsICJUaGUgc2VydmVyIHRvIGNvbm5lY3Qg
dG8uIik7Ci1ERUZJTkVfaW50KHBvcnQsCi0gICAgICAgICAgIGtEZWZhdWx0U2VydmVyUG9ydCwK
LSAgICAgICAgICAgIlRoZSBwb3J0IG9uIHdoaWNoIHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nLiIp
OwotREVGSU5FX2Jvb2woCitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludHMg
dGhpcyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2Jvb2woYXV0b2Nvbm5lY3QsCisgICAgICAg
ICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIkNvbm5lY3QgdG8gdGhlIHNl
cnZlciB3aXRob3V0IHVzZXIgIgorICAgICAgICAgICAgICAgICAgICJpbnRlcnZlbnRpb24uIik7
CitXRUJSVENfREVGSU5FX3N0cmluZyhzZXJ2ZXIsICJsb2NhbGhvc3QiLCAiVGhlIHNlcnZlciB0
byBjb25uZWN0IHRvLiIpOworV0VCUlRDX0RFRklORV9pbnQocG9ydCwKKyAgICAgICAgICAgICAg
ICAgIGtEZWZhdWx0U2VydmVyUG9ydCwKKyAgICAgICAgICAgICAgICAgICJUaGUgcG9ydCBvbiB3
aGljaCB0aGUgc2VydmVyIGlzIGxpc3RlbmluZy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKICAg
ICBhdXRvY2FsbCwKICAgICBmYWxzZSwKICAgICAiQ2FsbCB0aGUgZmlyc3QgYXZhaWxhYmxlIG90
aGVyIGNsaWVudCBvbiAiCiAgICAgInRoZSBzZXJ2ZXIgd2l0aG91dCB1c2VyIGludGVydmVudGlv
bi4gIE5vdGU6IHRoaXMgZmxhZyBzaG91bGQgb25seSBiZSBzZXQgIgogICAgICJ0byB0cnVlIG9u
IG9uZSBvZiB0aGUgdHdvIGNsaWVudHMuIik7CiAKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAg
IGZvcmNlX2ZpZWxkdHJpYWxzLAorICAgICIiLAorICAgICJGaWVsZCB0cmlhbHMgY29udHJvbCBl
eHBlcmltZW50YWwgZmVhdHVyZXMuIFRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIGZpZWxkICIKKyAg
ICAidHJpYWxzIGluIGVmZmVjdC4gRS5nLiBydW5uaW5nIHdpdGggIgorICAgICItLWZvcmNlX2Zp
ZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZWQvICIKKyAgICAid2lsbCBhc3NpZ24g
dGhlIGdyb3VwIEVuYWJsZWQgdG8gZmllbGQgdHJpYWwgV2ViUlRDLUZvb0ZlYXR1cmUuIE11bHRp
cGxlICIKKyAgICAidHJpYWxzIGFyZSBzZXBhcmF0ZWQgYnkgXCIvXCIiKTsKKwogI2VuZGlmICAv
LyBFWEFNUExFU19QRUVSQ09OTkVDVElPTl9DTElFTlRfRkxBR0RFRlNfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJj
b25uZWN0aW9uL2NsaWVudC9saW51eC9tYWluLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2xpbnV4L21h
aW4uY2MKaW5kZXggNTAxNzljNGJhNTUxMGNmMWVkN2EzYzJlZGE2ZmEwMGFmN2RjN2IxOC4uNmMz
NDY4M2QyZWE5MWQ2MTA1MWU3OGRlMDllN2ZkZDJlOWUzODQwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rp
b24vY2xpZW50L2xpbnV4L21haW4uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L2xpbnV4L21haW4u
Y2MKQEAgLTE3LDYgKzE3LDggQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGFkYXB0ZXIuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9maWVsZF90cmlhbC5oIgorI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKIAog
Y2xhc3MgQ3VzdG9tU29ja2V0U2VydmVyIDogcHVibGljIHJ0Yzo6UGh5c2ljYWxTb2NrZXRTZXJ2
ZXIgewogIHB1YmxpYzoKQEAgLTc1LDYgKzc3LDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiBhcmd2W10pIHsKICAgICByZXR1cm4gMDsKICAgfQogCisgIHdlYnJ0Yzo6dGVzdDo6VmFsaWRh
dGVGaWVsZFRyaWFsc1N0cmluZ09yRGllKEZMQUdfZm9yY2VfZmllbGR0cmlhbHMpOworICAvLyBJ
bml0RmllbGRUcmlhbHNGcm9tU3RyaW5nIHN0b3JlcyB0aGUgY2hhciosIHNvIHRoZSBjaGFyIGFy
cmF5IG11c3Qgb3V0bGl2ZQorICAvLyB0aGUgYXBwbGljYXRpb24uCisgIHdlYnJ0Yzo6ZmllbGRf
dHJpYWw6OkluaXRGaWVsZFRyaWFsc0Zyb21TdHJpbmcoRkxBR19mb3JjZV9maWVsZHRyaWFscyk7
CisKICAgLy8gQWJvcnQgaWYgdGhlIHVzZXIgc3BlY2lmaWVzIGEgcG9ydCB0aGF0IGlzIG91dHNp
ZGUgdGhlIGFsbG93ZWQKICAgLy8gcmFuZ2UgWzEsIDY1NTM1XS4KICAgaWYgKChGTEFHX3BvcnQg
PCAxKSB8fCAoRkxBR19wb3J0ID4gNjU1MzUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGll
bnQvbGludXgvbWFpbl93bmQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbGludXgvbWFpbl93bmQuY2MK
aW5kZXggNTJiMGQ4ODUyM2MzY2E4MjNkYzk4NzA3NDEyNTM4ZGIwZGY5YWFlNS4uMmY3Nzc3ZDFl
ZWExZTZlMzhkMWJiOTBmZTlmNWY2MDIzODYyMjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xp
ZW50L2xpbnV4L21haW5fd25kLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVudC9saW51eC9tYWluX3du
ZC5jYwpAQCAtMTgsMTEgKzE4LDggQEAKICNpbmNsdWRlICJleGFtcGxlcy9wZWVyY29ubmVjdGlv
bi9jbGllbnQvZGVmYXVsdHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMu
aCIKICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvY29udmVydF9m
cm9tLmgiCiAKLXVzaW5nIHJ0Yzo6c3ByaW50Zm47Ci0KIG5hbWVzcGFjZSB7CiAKIC8vCkBAIC0x
NTAsNyArMTQ3LDcgQEAgR3RrTWFpblduZDo6R3RrTWFpblduZChjb25zdCBjaGFyKiBzZXJ2ZXIs
CiAgICAgICBhdXRvY29ubmVjdF8oYXV0b2Nvbm5lY3QpLAogICAgICAgYXV0b2NhbGxfKGF1dG9j
YWxsKSB7CiAgIGNoYXIgYnVmZmVyWzEwXTsKLSAgc3ByaW50Zm4oYnVmZmVyLCBzaXplb2YoYnVm
ZmVyKSwgIiVpIiwgcG9ydCk7CisgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIl
aSIsIHBvcnQpOwogICBwb3J0XyA9IGJ1ZmZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24v
Y2xpZW50L21haW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbWFpbi5jYwppbmRleCAyNWRkZTFlZjY1
ODVkODI1NzhhNzlmNDU0NTJiZWE0YjZkNjE2ZmVmLi5mOTJlNjA2YzMzODExOWUyMmU0M2IxMTM1
N2ZmYjhiYWMyMzBhYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbWFpbi5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVy
Y29ubmVjdGlvbi9jbGllbnQvbWFpbi5jYwpAQCAtMTYsNiArMTYsOCBAQAogI2luY2x1ZGUgInJ0
Y19iYXNlL3NzbGFkYXB0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS93aW4zMnNvY2tldGluaXQu
aCIKICNpbmNsdWRlICJydGNfYmFzZS93aW4zMnNvY2tldHNlcnZlci5oIgorI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCisjaW5jbHVkZSAidGVzdC9maWVs
ZF90cmlhbC5oIgogCiBpbnQgUEFTQ0FMIHdXaW5NYWluKEhJTlNUQU5DRSBpbnN0YW5jZSwKICAg
ICAgICAgICAgICAgICAgICAgSElOU1RBTkNFIHByZXZfaW5zdGFuY2UsCkBAIC0zNiw2ICszOCwx
MSBAQCBpbnQgUEFTQ0FMIHdXaW5NYWluKEhJTlNUQU5DRSBpbnN0YW5jZSwKICAgICByZXR1cm4g
MDsKICAgfQogCisgIHdlYnJ0Yzo6dGVzdDo6VmFsaWRhdGVGaWVsZFRyaWFsc1N0cmluZ09yRGll
KEZMQUdfZm9yY2VfZmllbGR0cmlhbHMpOworICAvLyBJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5n
IHN0b3JlcyB0aGUgY2hhciosIHNvIHRoZSBjaGFyIGFycmF5IG11c3Qgb3V0bGl2ZQorICAvLyB0
aGUgYXBwbGljYXRpb24uCisgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkluaXRGaWVsZFRyaWFsc0Zy
b21TdHJpbmcoRkxBR19mb3JjZV9maWVsZHRyaWFscyk7CisKICAgLy8gQWJvcnQgaWYgdGhlIHVz
ZXIgc3BlY2lmaWVzIGEgcG9ydCB0aGF0IGlzIG91dHNpZGUgdGhlIGFsbG93ZWQKICAgLy8gcmFu
Z2UgWzEsIDY1NTM1XS4KICAgaWYgKChGTEFHX3BvcnQgPCAxKSB8fCAoRkxBR19wb3J0ID4gNjU1
MzUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvbWFpbl93bmQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlv
bi9jbGllbnQvbWFpbl93bmQuY2MKaW5kZXggM2FkMjQ4ODQzYTgxNWIwYTkwMDU2ODJlNGZmMDFh
M2QwNGM5ODk5Yy4uOGVkZDFlNzZmMzUwMzE0ZGUwMzA0MDM1YTE5M2NkMjEwMWE3OTM4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBs
ZXMvcGVlcmNvbm5lY3Rpb24vY2xpZW50L21haW5fd25kLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL2NsaWVu
dC9tYWluX3duZC5jYwpAQCAtMTcsMTQgKzE3LDExIEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJy
YXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAjaW5jbHVk
ZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfYXJnYi5oIgogCiBB
VE9NIE1haW5XbmQ6OnduZF9jbGFzc18gPSAwOwogY29uc3Qgd2NoYXJfdCBNYWluV25kOjprQ2xh
c3NOYW1lW10gPSBMIldlYlJUQ19NYWluV25kIjsKIAotdXNpbmcgcnRjOjpzcHJpbnRmbjsKLQog
bmFtZXNwYWNlIHsKIAogY29uc3QgY2hhciBrQ29ubmVjdGluZ1tdID0gIkNvbm5lY3RpbmcuLi4g
IjsKQEAgLTg2LDggKzgzLDggQEAgTWFpblduZDo6TWFpblduZChjb25zdCBjaGFyKiBzZXJ2ZXIs
CiAgICAgICBzZXJ2ZXJfKHNlcnZlciksCiAgICAgICBhdXRvX2Nvbm5lY3RfKGF1dG9fY29ubmVj
dCksCiAgICAgICBhdXRvX2NhbGxfKGF1dG9fY2FsbCkgewotICBjaGFyIGJ1ZmZlclsxMF0gPSB7
MH07Ci0gIHNwcmludGZuKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlaSIsIHBvcnQpOworICBj
aGFyIGJ1ZmZlclsxMF07CisgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlaSIs
IHBvcnQpOwogICBwb3J0XyA9IGJ1ZmZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vY2xp
ZW50L3BlZXJfY29ubmVjdGlvbl9jbGllbnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVjdGlvbi9jbGllbnQvcGVlcl9jb25u
ZWN0aW9uX2NsaWVudC5jYwppbmRleCBiYjc5ZDE2NzkxMTE5OGRjNTU2MTM5ZDk0NjBiZDczMWIz
N2NjNzc4Li5mMTczZTQyNzkzYTI1YWVkOGM3NzJmZWM0YzU3MjFiMWM4NmQ4MjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9w
ZWVyY29ubmVjdGlvbi9jbGllbnQvcGVlcl9jb25uZWN0aW9uX2NsaWVudC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVj
dGlvbi9jbGllbnQvcGVlcl9jb25uZWN0aW9uX2NsaWVudC5jYwpAQCAtMTQsMTQgKzE0LDExIEBA
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2lu
Zy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL25ldGhlbHBlcnMuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9zdHJpbmd1dGlscy5oIgogCiAjaWZkZWYgV0lOMzIKICNpbmNsdWRlICJydGNfYmFzZS93aW4z
MnNvY2tldHNlcnZlci5oIgogI2VuZGlmCiAKLXVzaW5nIHJ0Yzo6c3ByaW50Zm47Ci0KIG5hbWVz
cGFjZSB7CiAKIC8vIFRoaXMgaXMgb3VyIG1hZ2ljYWwgaGFuZ3VwIHNpZ25hbC4KQEAgLTEzNiw3
ICsxMzMsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQ2xpZW50OjpEb0Nvbm5lY3QoKSB7CiAgIGhh
bmdpbmdfZ2V0Xy5yZXNldChDcmVhdGVDbGllbnRTb2NrZXQoc2VydmVyX2FkZHJlc3NfLmlwYWRk
cigpLmZhbWlseSgpKSk7CiAgIEluaXRTb2NrZXRTaWduYWxzKCk7CiAgIGNoYXIgYnVmZmVyWzEw
MjRdOwotICBzcHJpbnRmbihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiR0VUIC9zaWduX2luPyVz
IEhUVFAvMS4wXHJcblxyXG4iLAorICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAi
R0VUIC9zaWduX2luPyVzIEhUVFAvMS4wXHJcblxyXG4iLAogICAgICAgICAgICBjbGllbnRfbmFt
ZV8uY19zdHIoKSk7CiAgIG9uY29ubmVjdF9kYXRhXyA9IGJ1ZmZlcjsKIApAQCAtMTU4LDkgKzE1
NSw5IEBAIGJvb2wgUGVlckNvbm5lY3Rpb25DbGllbnQ6OlNlbmRUb1BlZXIoaW50IHBlZXJfaWQs
IGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIGNo
YXIgaGVhZGVyc1sxMDI0XTsKLSAgc3ByaW50Zm4oaGVhZGVycywgc2l6ZW9mKGhlYWRlcnMpLAor
ICBzbnByaW50ZihoZWFkZXJzLCBzaXplb2YoaGVhZGVycyksCiAgICAgICAgICAgICJQT1NUIC9t
ZXNzYWdlP3BlZXJfaWQ9JWkmdG89JWkgSFRUUC8xLjBcclxuIgotICAgICAgICAgICAiQ29udGVu
dC1MZW5ndGg6ICVpXHJcbiIKKyAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAlenVcclxuIgog
ICAgICAgICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXHJcbiIKICAgICAgICAgICAgIlxy
XG4iLAogICAgICAgICAgICBteV9pZF8sIHBlZXJfaWQsIG1lc3NhZ2UubGVuZ3RoKCkpOwpAQCAt
MTkwLDcgKzE4Nyw3IEBAIGJvb2wgUGVlckNvbm5lY3Rpb25DbGllbnQ6OlNpZ25PdXQoKSB7CiAK
ICAgICBpZiAobXlfaWRfICE9IC0xKSB7CiAgICAgICBjaGFyIGJ1ZmZlclsxMDI0XTsKLSAgICAg
IHNwcmludGZuKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCisgICAgICBzbnByaW50ZihidWZmZXIs
IHNpemVvZihidWZmZXIpLAogICAgICAgICAgICAgICAgIkdFVCAvc2lnbl9vdXQ/cGVlcl9pZD0l
aSBIVFRQLzEuMFxyXG5cclxuIiwgbXlfaWRfKTsKICAgICAgIG9uY29ubmVjdF9kYXRhXyA9IGJ1
ZmZlcjsKICAgICAgIHJldHVybiBDb25uZWN0Q29udHJvbFNvY2tldCgpOwpAQCAtMjM3LDcgKzIz
NCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25DbGllbnQ6Ok9uQ29ubmVjdChydGM6OkFzeW5jU29j
a2V0KiBzb2NrZXQpIHsKIAogdm9pZCBQZWVyQ29ubmVjdGlvbkNsaWVudDo6T25IYW5naW5nR2V0
Q29ubmVjdChydGM6OkFzeW5jU29ja2V0KiBzb2NrZXQpIHsKICAgY2hhciBidWZmZXJbMTAyNF07
Ci0gIHNwcmludGZuKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJHRVQgL3dhaXQ/cGVlcl9pZD0l
aSBIVFRQLzEuMFxyXG5cclxuIiwKKyAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwg
IkdFVCAvd2FpdD9wZWVyX2lkPSVpIEhUVFAvMS4wXHJcblxyXG4iLAogICAgICAgICAgICBteV9p
ZF8pOwogICBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihzdHJsZW4oYnVmZmVyKSk7CiAgIGlu
dCBzZW50ID0gc29ja2V0LT5TZW5kKGJ1ZmZlciwgbGVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9u
L3NlcnZlci9tYWluLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL21haW4uY2MKaW5kZXggMDc1YjZlYTJk
M2Y3YTA2ZjcxODY4NzZiMzcxNTVlMmU1ZTRkZDU0Mi4uNTIxNGNhNWNhNTUxMTU0Y2Y5MmExOTU1
ZmVjZTEwMGQxYTQxNzE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL21haW4uY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVl
cmNvbm5lY3Rpb24vc2VydmVyL21haW4uY2MKQEAgLTE4LDcgKzE4LDE5IEBACiAjaW5jbHVkZSAi
ZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL2RhdGFfc29ja2V0LmgiCiAjaW5jbHVkZSAi
ZXhhbXBsZXMvcGVlcmNvbm5lY3Rpb24vc2VydmVyL3BlZXJfY2hhbm5lbC5oIgogI2luY2x1ZGUg
ImV4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZlci91dGlscy5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2ZsYWdzLmgiCiAjaW5jbHVkZSAicnRjX3Rvb2xzL3NpbXBsZV9jb21tYW5kX2xpbmVfcGFy
c2VyLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIK
KyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCisKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAor
ICAgIGZvcmNlX2ZpZWxkdHJpYWxzLAorICAgICIiLAorICAgICJGaWVsZCB0cmlhbHMgY29udHJv
bCBleHBlcmltZW50YWwgZmVhdHVyZXMuIFRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIGZpZWxkICIK
KyAgICAidHJpYWxzIGluIGVmZmVjdC4gRS5nLiBydW5uaW5nIHdpdGggIgorICAgICItLWZvcmNl
X2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZWQvICIKKyAgICAid2lsbCBhc3Np
Z24gdGhlIGdyb3VwIEVuYWJsZWQgdG8gZmllbGQgdHJpYWwgV2ViUlRDLUZvb0ZlYXR1cmUuIE11
bHRpcGxlICIKKyAgICAidHJpYWxzIGFyZSBzZXBhcmF0ZWQgYnkgXCIvXCIiKTsKIAogc3RhdGlj
IGNvbnN0IHNpemVfdCBrTWF4Q29ubmVjdGlvbnMgPSAoRkRfU0VUU0laRSAtIDIpOwogCkBAIC02
Miw2ICs3NCwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgcmV0
dXJuIDA7CiAgIH0KIAorICB3ZWJydGM6OnRlc3Q6OlZhbGlkYXRlRmllbGRUcmlhbHNTdHJpbmdP
ckRpZShGTEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsKKyAgLy8gSW5pdEZpZWxkVHJpYWxzRnJvbVN0
cmluZyBzdG9yZXMgdGhlIGNoYXIqLCBzbyB0aGUgY2hhciBhcnJheSBtdXN0IG91dGxpdmUKKyAg
Ly8gdGhlIGFwcGxpY2F0aW9uLgorICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJbml0RmllbGRUcmlh
bHNGcm9tU3RyaW5nKEZMQUdfZm9yY2VfZmllbGR0cmlhbHMpOworCiAgIGludCBwb3J0ID0gc3Ry
dG9sKChwYXJzZXIuR2V0RmxhZygicG9ydCIpKS5jX3N0cigpLCBOVUxMLCAxMCk7CiAKICAgLy8g
QWJvcnQgaWYgdGhlIHVzZXIgc3BlY2lmaWVzIGEgcG9ydCB0aGF0IGlzIG91dHNpZGUgdGhlIGFs
bG93ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZlci9wZWVyX2NoYW5uZWwuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy9wZWVyY29ubmVj
dGlvbi9zZXJ2ZXIvcGVlcl9jaGFubmVsLmNjCmluZGV4IDZlZjA4ZDdiMjFkNzNiNmYyMjk5YWRi
NjljZTcyYjJmYWYyZWY4NTAuLmIyM2I3ZTA0ZTIxZDZiYmMwYjljZTVkMjIwNzVlMDczNWZkZjE3
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2V4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZlci9wZWVyX2NoYW5uZWwuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvcGVlcmNvbm5l
Y3Rpb24vc2VydmVyL3BlZXJfY2hhbm5lbC5jYwpAQCAtMTksOSArMTksNiBAQAogI2luY2x1ZGUg
ImV4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZlci9kYXRhX3NvY2tldC5oIgogI2luY2x1ZGUg
ImV4YW1wbGVzL3BlZXJjb25uZWN0aW9uL3NlcnZlci91dGlscy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ2VuY29kZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCi0K
LXVzaW5nIHJ0Yzo6c3ByaW50Zm47CiAKIC8vIFNldCB0byB0aGUgcGVlciBpZCBvZiB0aGUgb3Jp
Z2luYXRvciB3aGVuIG1lc3NhZ2VzIGFyZSBiZWluZwogLy8gZXhjaGFuZ2VkIGJldHdlZW4gcGVl
cnMsIGJ1dCBzZXQgdG8gdGhlIGlkIG9mIHRoZSByZWNlaXZpbmcgcGVlcgpAQCAtOTgsNyArOTUs
NyBAQCBzdGQ6OnN0cmluZyBDaGFubmVsTWVtYmVyOjpHZXRFbnRyeSgpIGNvbnN0IHsKIAogICAv
LyBuYW1lLCAxMS1kaWdpdCBpbnQsIDEtZGlnaXQgYm9vbCwgbmV3bGluZSwgbnVsbAogICBjaGFy
IGVudHJ5W2tNYXhOYW1lTGVuZ3RoICsgMTVdOwotICBzcHJpbnRmbihlbnRyeSwgc2l6ZW9mKGVu
dHJ5KSwgIiVzLCVkLCVkXG4iLAorICBzbnByaW50ZihlbnRyeSwgc2l6ZW9mKGVudHJ5KSwgIiVz
LCVkLCVkXG4iLAogICAgICAgICAgICBuYW1lXy5zdWJzdHIoMCwga01heE5hbWVMZW5ndGgpLmNf
c3RyKCksIGlkXywgY29ubmVjdGVkXyk7CiAgIHJldHVybiBlbnRyeTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3N0dW5w
cm9iZXIvbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2V4YW1wbGVzL3N0dW5wcm9iZXIvbWFpbi5jYwppbmRleCA0NWE3NmY1MjM3NDNlNmZhZmExYmU4
NWY0NDliYWRmYTNjN2Y2ODU1Li42ZGE5NmU0Njk5ODJmMDVlNzNiYWFiMmIzNDhhMjEyNGY1NGE0
NzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9leGFtcGxlcy9zdHVucHJvYmVyL21haW4uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvc3R1bnByb2Jlci9tYWluLmNjCkBAIC0xNCw3
ICsxNCw3IEBACiAKICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUg
PHNzdHJlYW0+ICAvLyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKKyNpbmNs
dWRlIDxzc3RyZWFtPgogCiAjaW5jbHVkZSAicDJwL2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0
b3J5LmgiCiAjaW5jbHVkZSAicDJwL3N0dW5wcm9iZXIvc3R1bnByb2Jlci5oIgpAQCAtMzMsMTYg
KzMzLDIxIEBACiB1c2luZyBzdHVucHJvYmVyOjpTdHVuUHJvYmVyOwogdXNpbmcgc3R1bnByb2Jl
cjo6QXN5bmNDYWxsYmFjazsKIAotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludHMgdGhp
cyBtZXNzYWdlIik7Ci1ERUZJTkVfaW50KGludGVydmFsLCAxMCwgIkludGVydmFsIG9mIGNvbnNl
Y3V0aXZlIHN0dW4gcGluZ3MgaW4gbWlsbGlzZWNvbmRzIik7Ci1ERUZJTkVfYm9vbChzaGFyZWRf
c29ja2V0LCBmYWxzZSwgIlNoYXJlIHNvY2tldCBtb2RlIGZvciBkaWZmZXJlbnQgcmVtb3RlIElQ
cyIpOwotREVGSU5FX2ludChwaW5nc19wZXJfaXAsCi0gICAgICAgICAgIDEwLAotICAgICAgICAg
ICAiTnVtYmVyIG9mIGNvbnNlY3V0aXZlIHN0dW4gcGluZ3MgdG8gc2VuZCBmb3IgZWFjaCBJUCIp
OwotREVGSU5FX2ludCh0aW1lb3V0LAotICAgICAgICAgICAxMDAwLAotICAgICAgICAgICAiTWls
bGlzZWNvbmRzIG9mIHdhaXQgYWZ0ZXIgdGhlIGxhc3QgcGluZyBzZW50IGJlZm9yZSBleGl0aW5n
Iik7Ci1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJp
bnRzIHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklORV9pbnQoaW50ZXJ2YWwsCisgICAgICAg
ICAgICAgICAgICAxMCwKKyAgICAgICAgICAgICAgICAgICJJbnRlcnZhbCBvZiBjb25zZWN1dGl2
ZSBzdHVuIHBpbmdzIGluIG1pbGxpc2Vjb25kcyIpOworV0VCUlRDX0RFRklORV9ib29sKHNoYXJl
ZF9zb2NrZXQsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAg
IlNoYXJlIHNvY2tldCBtb2RlIGZvciBkaWZmZXJlbnQgcmVtb3RlIElQcyIpOworV0VCUlRDX0RF
RklORV9pbnQocGluZ3NfcGVyX2lwLAorICAgICAgICAgICAgICAgICAgMTAsCisgICAgICAgICAg
ICAgICAgICAiTnVtYmVyIG9mIGNvbnNlY3V0aXZlIHN0dW4gcGluZ3MgdG8gc2VuZCBmb3IgZWFj
aCBJUCIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgdGltZW91dCwKKyAgICAxMDAwLAorICAg
ICJNaWxsaXNlY29uZHMgb2Ygd2FpdCBhZnRlciB0aGUgbGFzdCBwaW5nIHNlbnQgYmVmb3JlIGV4
aXRpbmciKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIHNlcnZlcnMsCiAgICAgInN0dW4u
bC5nb29nbGUuY29tOjE5MzAyLHN0dW4xLmwuZ29vZ2xlLmNvbToxOTMwMixzdHVuMi5sLmdvb2ds
ZS5jb206MTkzMDIiLAogICAgICJDb21tYSBzZXBhcmF0ZWQgU1RVTiBzZXJ2ZXIgYWRkcmVzc2Vz
IHdpdGggcG9ydHMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy90dXJuc2VydmVy
L3JlYWRfYXV0aF9maWxlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNTQ2NWU4MmZlODMzOWIwMWQ1MjdjZjQ2
NDJlMDNhMDZiZjY2MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9leGFtcGxlcy90dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlLmNj
CkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJleGFtcGxl
cy90dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
ZW5jb2RlLmgiCisKK25hbWVzcGFjZSB3ZWJydGNfZXhhbXBsZXMgeworCitzdGQ6Om1hcDxzdGQ6
OnN0cmluZywgc3RkOjpzdHJpbmc+IFJlYWRBdXRoRmlsZShzdGQ6OmlzdHJlYW0qIHMpIHsKKyAg
c3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBuYW1lX3RvX2tleTsKKyAgZm9yIChz
dGQ6OnN0cmluZyBsaW5lOyBzdGQ6OmdldGxpbmUoKnMsIGxpbmUpOykgeworICAgIGNvbnN0IHNp
emVfdCBzZXAgPSBsaW5lLmZpbmQoJz0nKTsKKyAgICBpZiAoc2VwID09IHN0ZDo6c3RyaW5nOjpu
cG9zKQorICAgICAgY29udGludWU7CisgICAgY2hhciBidWZbMzJdOworICAgIHNpemVfdCBsZW4g
PSBydGM6OmhleF9kZWNvZGUoYnVmLCBzaXplb2YoYnVmKSwgbGluZS5kYXRhKCkgKyBzZXAgKyAx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5zaXplKCkgLSBzZXAgLSAx
KTsKKyAgICBpZiAobGVuID4gMCkgeworICAgICAgbmFtZV90b19rZXkuZW1wbGFjZShsaW5lLnN1
YnN0cigwLCBzZXApLCBzdGQ6OnN0cmluZyhidWYsIGxlbikpOworICAgIH0KKyAgfQorICByZXR1
cm4gbmFtZV90b19rZXk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGNfZXhhbXBsZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1w
bGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xYzEzOWM5OTI0MGNhZTlkMWExZjdiYTQ4M2U1OTVjMzMxZjFjMGExCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
ZXhhbXBsZXMvdHVybnNlcnZlci9yZWFkX2F1dGhfZmlsZS5oCkBAIC0wLDAgKzEsMjQgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgRVhBTVBMRVNfVFVSTlNFUlZFUl9SRUFEX0FVVEhf
RklMRV9IXworI2RlZmluZSBFWEFNUExFU19UVVJOU0VSVkVSX1JFQURfQVVUSF9GSUxFX0hfCisK
KyNpbmNsdWRlIDxpc3RyZWFtPgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdHJpbmc+CisK
K25hbWVzcGFjZSB3ZWJydGNfZXhhbXBsZXMgeworCitzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3Rk
OjpzdHJpbmc+IFJlYWRBdXRoRmlsZShzdGQ6OmlzdHJlYW0qIHMpOworCit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjX2V4YW1wbGVzCisKKyNlbmRpZiAgLy8gRVhBTVBMRVNfVFVSTlNFUlZFUl9SRUFE
X0FVVEhfRklMRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci9yZWFkX2F1dGhfZmlsZV91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1
cm5zZXJ2ZXIvcmVhZF9hdXRoX2ZpbGVfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE2ZjMzMmMy
N2E1NzY2OWY0ZjJiNDU1OTJlY2UzZjMyYWM2YmMyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1cm5zZXJ2ZXIv
cmVhZF9hdXRoX2ZpbGVfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2luY2x1ZGUgPHNzdHJlYW0+CisKKyNpbmNsdWRlICJleGFtcGxlcy90dXJuc2Vy
dmVyL3JlYWRfYXV0aF9maWxlLmgiCisjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgorCituYW1lc3Bh
Y2Ugd2VicnRjX2V4YW1wbGVzIHsKKworVEVTVChSZWFkQXV0aEZpbGUsIEhhbmRsZXNFbXB0eUZp
bGUpIHsKKyAgc3RkOjppc3RyaW5nc3RyZWFtIGVtcHR5OworICBhdXRvIG1hcCA9IFJlYWRBdXRo
RmlsZSgmZW1wdHkpOworICBFWFBFQ1RfVFJVRShtYXAuZW1wdHkoKSk7Cit9CisKK1RFU1QoUmVh
ZEF1dGhGaWxlLCBSZWNvZ25pemVzVmFsaWRVc2VyKSB7CisgIHN0ZDo6aXN0cmluZ3N0cmVhbSBm
aWxlKCJmb289ZGVhZGJlYWZcbiIpOworICBhdXRvIG1hcCA9IFJlYWRBdXRoRmlsZSgmZmlsZSk7
CisgIEFTU0VSVF9ORShtYXAuZmluZCgiZm9vIiksIG1hcC5lbmQoKSk7CisgIEVYUEVDVF9FUSht
YXBbImZvbyJdLCAiXHhkZVx4YWRceGJlXHhhZiIpOworfQorCitURVNUKFJlYWRBdXRoRmlsZSwg
RW1wdHlWYWx1ZUZvckludmFsaWRIZXgpIHsKKyAgc3RkOjppc3RyaW5nc3RyZWFtIGZpbGUoCisg
ICAgICAiZm9vPWRlYWRiZWFmXG4iCisgICAgICAiYmFyPXh4eHhpbnZhbGlkaGV4XG4iCisgICAg
ICAiYmF6PWNhZmVcbiIpOworICBhdXRvIG1hcCA9IFJlYWRBdXRoRmlsZSgmZmlsZSk7CisgIEFT
U0VSVF9ORShtYXAuZmluZCgiZm9vIiksIG1hcC5lbmQoKSk7CisgIEVYUEVDVF9FUShtYXBbImZv
byJdLCAiXHhkZVx4YWRceGJlXHhhZiIpOworICBFWFBFQ1RfRVEobWFwLmZpbmQoImJhciIpLCBt
YXAuZW5kKCkpOworICBBU1NFUlRfTkUobWFwLmZpbmQoImJheiIpLCBtYXAuZW5kKCkpOworICBF
WFBFQ1RfRVEobWFwWyJiYXoiXSwgIlx4Y2FceGZlIik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3
ZWJydGNfZXhhbXBsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2V4YW1wbGVzL3R1cm5zZXJ2ZXIvdHVybnNlcnZlcl9tYWluLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZl
ci90dXJuc2VydmVyX21haW4uY2MKaW5kZXggZWRjMGI2OTliNGM3NjI4ZDM1NDUxZTk4ZjBhOGU5
Zjk0M2YzNzM2Yy4uODUwZmMyZDljODlhMjE1YjllMTJlOTg4MDU4NWFjMDQxOWI5NGY0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBs
ZXMvdHVybnNlcnZlci90dXJuc2VydmVyX21haW4uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdHVybnNlcnZlci90dXJuc2VydmVyX21h
aW4uY2MKQEAgLTgsMzkgKzgsNDQgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCi0jaW5jbHVkZSA8aW9zdHJl
YW0+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxmc3RyZWFtPgorI2luY2x1ZGUgPGlvc3RyZWFtPgor
I2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJleGFtcGxlcy90
dXJuc2VydmVyL3JlYWRfYXV0aF9maWxlLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvYmFzaWNwYWNr
ZXRzb2NrZXRmYWN0b3J5LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvdHVybnNlcnZlci5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2FzeW5jdWRwc29ja2V0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvb3B0
aW9uc2ZpbGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS90aHJlYWQuaCIKIAotc3RhdGljIGNvbnN0IGNoYXIga1NvZnR3YXJlW10gPSAi
bGliamluZ2xlIFR1cm5TZXJ2ZXIiOworbmFtZXNwYWNlIHsKK2NvbnN0IGNoYXIga1NvZnR3YXJl
W10gPSAibGliamluZ2xlIFR1cm5TZXJ2ZXIiOwogCiBjbGFzcyBUdXJuRmlsZUF1dGggOiBwdWJs
aWMgY3JpY2tldDo6VHVybkF1dGhJbnRlcmZhY2UgewogIHB1YmxpYzoKLSAgZXhwbGljaXQgVHVy
bkZpbGVBdXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSA6IGZpbGVfKHBhdGgpIHsgZmlsZV8u
TG9hZCgpOyB9CisgIGV4cGxpY2l0IFR1cm5GaWxlQXV0aChzdGQ6Om1hcDxzdGQ6OnN0cmluZywg
c3RkOjpzdHJpbmc+IG5hbWVfdG9fa2V5KQorICAgICAgOiBuYW1lX3RvX2tleV8oc3RkOjptb3Zl
KG5hbWVfdG9fa2V5KSkge30KKwogICB2aXJ0dWFsIGJvb2wgR2V0S2V5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiB1c2VybmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
cmVhbG0sCiAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcqIGtleSkgewogICAgIC8v
IEZpbGUgaXMgc3RvcmVkIGFzIGxpbmVzIG9mIDx1c2VybmFtZT49PEhBMT4uCiAgICAgLy8gR2Vu
ZXJhdGUgSEExIHZpYSAiZWNobyAtbiAiPHVzZXJuYW1lPjo8cmVhbG0+OjxwYXNzd29yZD4iIHwg
bWQ1c3VtIgotICAgIHN0ZDo6c3RyaW5nIGhleDsKLSAgICBib29sIHJldCA9IGZpbGVfLkdldFN0
cmluZ1ZhbHVlKHVzZXJuYW1lLCAmaGV4KTsKLSAgICBpZiAocmV0KSB7Ci0gICAgICBjaGFyIGJ1
ZlszMl07Ci0gICAgICBzaXplX3QgbGVuID0gcnRjOjpoZXhfZGVjb2RlKGJ1Ziwgc2l6ZW9mKGJ1
ZiksIGhleCk7Ci0gICAgICAqa2V5ID0gc3RkOjpzdHJpbmcoYnVmLCBsZW4pOwotICAgIH0KLSAg
ICByZXR1cm4gcmV0OworICAgIGF1dG8gaXQgPSBuYW1lX3RvX2tleV8uZmluZCh1c2VybmFtZSk7
CisgICAgaWYgKGl0ID09IG5hbWVfdG9fa2V5Xy5lbmQoKSkKKyAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAqa2V5ID0gaXQtPnNlY29uZDsKKyAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgcHJpdmF0
ZToKLSAgcnRjOjpPcHRpb25zRmlsZSBmaWxlXzsKKyAgY29uc3Qgc3RkOjptYXA8c3RkOjpzdHJp
bmcsIHN0ZDo6c3RyaW5nPiBuYW1lX3RvX2tleV87CiB9OwogCit9ICAvLyBuYW1lc3BhY2UKKwog
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBpZiAoYXJnYyAhPSA1KSB7CiAg
ICAgc3RkOjpjZXJyIDw8ICJ1c2FnZTogdHVybnNlcnZlciBpbnQtYWRkciBleHQtaXAgcmVhbG0g
YXV0aC1maWxlIgpAQCAtNzAsNyArNzUsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFy
Z3ZbXSkgewogICB9CiAKICAgY3JpY2tldDo6VHVyblNlcnZlciBzZXJ2ZXIobWFpbik7Ci0gIFR1
cm5GaWxlQXV0aCBhdXRoKGFyZ3ZbNF0pOworICBzdGQ6OmZzdHJlYW0gYXV0aF9maWxlKGFyZ3Zb
NF0sIHN0ZDo6ZnN0cmVhbTo6aW4pOworCisgIFR1cm5GaWxlQXV0aCBhdXRoKGF1dGhfZmlsZS5p
c19vcGVuKCkKKyAgICAgICAgICAgICAgICAgICAgICAgID8gd2VicnRjX2V4YW1wbGVzOjpSZWFk
QXV0aEZpbGUoJmF1dGhfZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogc3RkOjptYXA8
c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPigpKTsKICAgc2VydmVyLnNldF9yZWFsbShhcmd2WzNd
KTsKICAgc2VydmVyLnNldF9zb2Z0d2FyZShrU29mdHdhcmUpOwogICBzZXJ2ZXIuc2V0X2F1dGhf
aG9vaygmYXV0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9leGFtcGxlcy91bml0eXBsdWdpbi9zaW1wbGVfcGVlcl9jb25uZWN0aW9uLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZXhhbXBsZXMvdW5p
dHlwbHVnaW4vc2ltcGxlX3BlZXJfY29ubmVjdGlvbi5jYwppbmRleCAzNmUxOTM3ZWFkN2Q5MmM0
ZTExMjU2ZDE3Njg2NTdlM2I3ZmMyNjVlLi5iZjZhNjgyN2IwMzA3MWNmNjY0OGI3YTFmMjk0OGJm
NDgxNTY1MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9leGFtcGxlcy91bml0eXBsdWdpbi9zaW1wbGVfcGVlcl9jb25uZWN0aW9uLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2V4YW1wbGVzL3Vu
aXR5cGx1Z2luL3NpbXBsZV9wZWVyX2Nvbm5lY3Rpb24uY2MKQEAgLTE1LDYgKzE1LDcgQEAKICNp
bmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2Nv
ZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9jcmVh
dGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb3NvdXJjZXBy
b3h5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuaCIK
ICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5oIgpAQCAtNDQ4
LDcgKzQ0OSw4IEBAIHZvaWQgU2ltcGxlUGVlckNvbm5lY3Rpb246OkFkZFN0cmVhbXMoYm9vbCBh
dWRpb19vbmx5KSB7CiAKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpqbmk6OkFuZHJv
aWRWaWRlb1RyYWNrU291cmNlPiBzb3VyY2UoCiAgICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRP
YmplY3Q8d2VicnRjOjpqbmk6OkFuZHJvaWRWaWRlb1RyYWNrU291cmNlPigKLSAgICAgICAgICAg
IGdfc2lnbmFsaW5nX3RocmVhZC5nZXQoKSwgZW52LCBmYWxzZSkpOworICAgICAgICAgICAgZ19z
aWduYWxpbmdfdGhyZWFkLmdldCgpLCBlbnYsIC8qIGlzX3NjcmVlbmNhc3Q9ICovIGZhbHNlLAor
ICAgICAgICAgICAgLyogYWxpZ25fdGltZXN0YW1wcz0gKi8gdHJ1ZSkpOwogICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tTb3VyY2VQcm94eT4gcHJveHlfc291cmNlID0K
ICAgICAgICAgd2VicnRjOjpWaWRlb1RyYWNrU291cmNlUHJveHk6OkNyZWF0ZShnX3NpZ25hbGlu
Z190aHJlYWQuZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ193b3JrZXJfdGhyZWFkLmdldCgpLCBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvaW5mcmEvY29uZmlnL2NxLmNmZyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2luZnJhL2NvbmZpZy9j
cS5jZmcKaW5kZXggYzdiNWVmOTIzYjhhZGU0MjY2NzczYjFkMzkwOGNlY2Y1MWJjNDc0My4uMWMw
ZjAyMjhmODExZDRkYzE3NGIzODNkOTA2ZjRjM2IwNWNmMzRjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvaW5mcmEvY29uZmlnL2NxLmNmZwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9pbmZyYS9jb25m
aWcvY3EuY2ZnCkBAIC0zNiw3ICszNiw2IEBAIHZlcmlmaWVycyB7CiAgICAgICBidWlsZGVycyB7
IG5hbWU6ICJpb3NfYXJtNjRfcmVsIiB9CiAgICAgICBidWlsZGVycyB7IG5hbWU6ICJpb3NfZGJn
IiB9CiAgICAgICBidWlsZGVycyB7IG5hbWU6ICJpb3NfcmVsIiB9Ci0gICAgICBidWlsZGVycyB7
IG5hbWU6ICJpb3MzMl9zaW1faW9zOV9kYmciIH0KICAgICAgIGJ1aWxkZXJzIHsgbmFtZTogImlv
czY0X3NpbV9pb3M5X2RiZyIgfQogICAgICAgYnVpbGRlcnMgeyBuYW1lOiAiaW9zNjRfc2ltX2lv
czEwX2RiZyIgfQogICAgICAgYnVpbGRlcnMgeyBuYW1lOiAiaW9zX2FwaV9mcmFtZXdvcmsiIH0K
QEAgLTYzLDcgKzYyLDEyIEBAIHZlcmlmaWVycyB7CiAgICAgICBidWlsZGVycyB7IG5hbWU6ICJt
YWNfY2hyb21pdW1fY29tcGlsZSIgfQogICAgICAgYnVpbGRlcnMgeyBuYW1lOiAibWFjX2NvbXBp
bGVfZGJnIiB9CiAgICAgICBidWlsZGVycyB7IG5hbWU6ICJtYWNfcmVsIiB9Ci0gICAgICBidWls
ZGVycyB7IG5hbWU6ICJwcmVzdWJtaXQiIH0KKyAgICAgIGJ1aWxkZXJzIHsKKyAgICAgICAgbmFt
ZTogInByZXN1Ym1pdCIKKyAgICAgICAgIyBQcmVzdWJtaXQgYnVpbGRlciBzaG91bGQgYmUgcmUt
cnVuIGV2ZXJ5IHRpbWUgQ1EgaXMgdHJpZ2dlcmVkCisgICAgICAgICMgZm9yIGxhc3QgbWludXRl
IGxpbnQsIE9XTkVSUywgZXRjIGNoZWNrcy4KKyAgICAgICAgZGlzYWJsZV9yZXVzZTogdHJ1ZQor
ICAgICAgfQogICAgICAgYnVpbGRlcnMgeyBuYW1lOiAid2luX2FzYW4iIH0KICAgICAgIGJ1aWxk
ZXJzIHsgbmFtZTogIndpbl9jaHJvbWl1bV9jb21waWxlIiB9CiAgICAgICBidWlsZGVycyB7IG5h
bWU6ICJ3aW5fY2xhbmdfZGJnIiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9CVUlMRC5nbgppbmRleCAzODcxMTkzYmFk
Y2Q3ZjY4MTA3N2VkNzAyOTg4MDFiMGRmNTFmMDNkLi41NzU5NTJjMzE1ZjljMzE4MjA1NGM5OTg3
MjM3Y2FhMzljZjVkMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9sb2dnaW5nL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvQlVJTEQuZ24KQEAgLTQyLDYgKzQyLDcgQEAg
cnRjX3NvdXJjZV9zZXQoInJ0Y19ldmVudF9sb2dfYXBpIikgewogICAgICIuLi9ydGNfYmFzZTpw
dHJfdXRpbCIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLi4v
cnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnkiLAogICBdCiB9CiAKQEAgLTUzLDcgKzU0LDYgQEAgcnRjX3NvdXJjZV9zZXQo
InJ0Y19zdHJlYW1fY29uZmlnIikgewogCiAgIGRlcHMgPSBbCiAgICAgIjpydGNfZXZlbnRfbG9n
X2FwaSIsCi0gICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi9hcGk6bGliamluZ2xlX3Bl
ZXJjb25uZWN0aW9uX2FwaSIsCiAgIF0KIH0KQEAgLTg3LDYgKzg3LDcgQEAgcnRjX3NvdXJjZV9z
ZXQoInJ0Y19ldmVudF9hdWRpbyIpIHsKICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKICAgICAi
OnJ0Y19zdHJlYW1fY29uZmlnIiwKICAgICAiLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6YXVkaW9f
bmV0d29ya19hZGFwdG9yX2NvbmZpZyIsCisgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAg
Ii4uL3J0Y19iYXNlOnB0cl91dGlsIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWVtb3J5IiwKICAgXQpAQCAtMTMwLDYgKzEzMSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNf
ZXZlbnRfcnRwX3J0Y3AiKSB7CiAgICAgIjpydGNfZXZlbnRfbG9nX2FwaSIsCiAgICAgIi4uL2Fw
aTphcnJheV92aWV3IiwKICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQi
LAorICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpwdHJfdXRpbCIs
CiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKQEAgLTE0Nyw0MCArMTQ5LDYyIEBAIHJ0Y19zb3Vy
Y2Vfc2V0KCJydGNfZXZlbnRfdmlkZW8iKSB7CiAgIGRlcHMgPSBbCiAgICAgIjpydGNfZXZlbnRf
bG9nX2FwaSIsCiAgICAgIjpydGNfc3RyZWFtX2NvbmZpZyIsCisgICAgIi4uL3J0Y19iYXNlOmNo
ZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlOnB0cl91dGlsIiwKICAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQogfQogCisjIFRPRE8oZWxhZGFsb24pOiBCcmVh
ayBkb3duIGludG8gKDEpIGVuY29kZXIgYW5kICgyKSBkZWNvZGVyOyB3ZSBkb24ndCBuZWVkCisj
IHRoZSBkZWNvZGVyIGNvZGUgaW4gdGhlIFdlYlJUQyBsaWJyYXJ5LCBvbmx5IGluIHVuaXQgdGVz
dHMgYW5kIHRvb2xzLgogcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfZXZlbnRfbG9nX2ltcGxfZW5j
b2RlciIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgc291cmNlcyA9IFsKLSAgICAicnRj
X2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9sZWdhY3kuY2MiLAotICAg
ICJydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5oIiwK
KyAgICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmcuY2MiLAorICAgICJydGNf
ZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGluZy5oIiwKKyAgICAicnRjX2V2ZW50X2xvZy9l
bmNvZGVyL2RlbHRhX2VuY29kaW5nLmNjIiwKKyAgICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Rl
bHRhX2VuY29kaW5nLmgiLAorICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xv
Z19lbmNvZGVyX2NvbW1vbi5jYyIsCisgICAgInJ0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZl
bnRfbG9nX2VuY29kZXJfY29tbW9uLmgiLAorICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvdmFy
aW50LmNjIiwKKyAgICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL3ZhcmludC5oIiwKICAgXQogCiAg
IGRlZmluZXMgPSBbXQogCiAgIGRlcHMgPSBbCi0gICAgIjppY2VfbG9nIiwKLSAgICAiOnJ0Y19l
dmVudF9hdWRpbyIsCi0gICAgIjpydGNfZXZlbnRfYndlIiwKLSAgICAiOnJ0Y19ldmVudF9sb2df
YXBpIiwKLSAgICAiOnJ0Y19ldmVudF9sb2dfaW1wbF9vdXRwdXQiLAotICAgICI6cnRjX2V2ZW50
X3BhY2luZyIsCi0gICAgIjpydGNfZXZlbnRfcnRwX3J0Y3AiLAotICAgICI6cnRjX2V2ZW50X3Zp
ZGVvIiwKLSAgICAiOnJ0Y19zdHJlYW1fY29uZmlnIiwKLSAgICAiLi4vbW9kdWxlcy9hdWRpb19j
b2Rpbmc6YXVkaW9fbmV0d29ya19hZGFwdG9yIiwKLSAgICAiLi4vbW9kdWxlcy9yZW1vdGVfYml0
cmF0ZV9lc3RpbWF0b3I6cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yIiwKLSAgICAiLi4vbW9kdWxl
cy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAog
ICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3N0cmluZ3M6c3RyaW5ncyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs
L3R5cGVzOm9wdGlvbmFsIiwKICAgXQogCiAgIGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAg
ICAgZGVmaW5lcyArPSBbICJFTkFCTEVfUlRDX0VWRU5UX0xPRyIgXQotICAgIGRlcHMgKz0gWyAi
OnJ0Y19ldmVudF9sb2dfcHJvdG8iIF0KKyAgICBkZXBzICs9IFsKKyAgICAgICI6aWNlX2xvZyIs
CisgICAgICAiOnJ0Y19ldmVudF9hdWRpbyIsCisgICAgICAiOnJ0Y19ldmVudF9id2UiLAorICAg
ICAgIjpydGNfZXZlbnRfbG9nMl9wcm90byIsCisgICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwK
KyAgICAgICI6cnRjX2V2ZW50X2xvZ19pbXBsX291dHB1dCIsCisgICAgICAiOnJ0Y19ldmVudF9s
b2dfcHJvdG8iLAorICAgICAgIjpydGNfZXZlbnRfcGFjaW5nIiwKKyAgICAgICI6cnRjX2V2ZW50
X3J0cF9ydGNwIiwKKyAgICAgICI6cnRjX2V2ZW50X3ZpZGVvIiwKKyAgICAgICI6cnRjX3N0cmVh
bV9jb25maWciLAorICAgICAgIi4uL2FwaTphcnJheV92aWV3IiwKKyAgICAgICIuLi9tb2R1bGVz
L2F1ZGlvX2NvZGluZzphdWRpb19uZXR3b3JrX2FkYXB0b3IiLAorICAgICAgIi4uL21vZHVsZXMv
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yOnJlbW90ZV9iaXRyYXRlX2VzdGltYXRvciIsCisgICAg
ICAiLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAorICAgIF0KKyAgICBzb3Vy
Y2VzICs9IFsKKyAgICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNv
ZGVyX2xlZ2FjeS5jYyIsCisgICAgICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9s
b2dfZW5jb2Rlcl9sZWdhY3kuaCIsCisgICAgICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19l
dmVudF9sb2dfZW5jb2Rlcl9uZXdfZm9ybWF0LmNjIiwKKyAgICAgICJydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25ld19mb3JtYXQuaCIsCisgICAgXQogICB9CiB9
CiAKQEAgLTIxMSw4ICsyMzUsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19ldmVudF9sb2df
aW1wbF9iYXNlIikgewogICBkZXBzID0gWwogICAgICI6aWNlX2xvZyIsCiAgICAgIjpydGNfZXZl
bnRfbG9nX2FwaSIsCi0gICAgIjpydGNfZXZlbnRfbG9nX2ltcGxfZW5jb2RlciIsCi0gICAgIjpy
dGNfZXZlbnRfbG9nX2ltcGxfb3V0cHV0IiwKKyAgICAiLi4vYXBpOmxpYmppbmdsZV9sb2dnaW5n
X2FwaSIsCiAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLApAQCAtMjIz
LDcgKzI0Niw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2V2ZW50X2xvZ19pbXBsX2Jhc2Ui
KSB7CiAKICAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAgICBkZWZpbmVzICs9IFsgIkVO
QUJMRV9SVENfRVZFTlRfTE9HIiBdCi0gICAgZGVwcyArPSBbICI6cnRjX2V2ZW50X2xvZ19wcm90
byIgXQorICAgIGRlcHMgKz0gWyAiOnJ0Y19ldmVudF9sb2dfaW1wbF9lbmNvZGVyIiBdCiAgIH0K
IH0KIApAQCAtMjQ2LDYgKzI2OSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJmYWtlX3J0Y19ldmVudF9s
b2ciKSB7CiAKIGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAgIHByb3RvX2xpYnJhcnkoInJ0
Y19ldmVudF9sb2dfcHJvdG8iKSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgICBzb3Vy
Y2VzID0gWwogICAgICAgInJ0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5wcm90byIsCiAgICAg
XQpAQCAtMjUzLDYgKzI3Nyw3IEBAIGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAgIH0KIAog
ICBwcm90b19saWJyYXJ5KCJydGNfZXZlbnRfbG9nMl9wcm90byIpIHsKKyAgICB2aXNpYmlsaXR5
ID0gWyAiKiIgXQogICAgIHNvdXJjZXMgPSBbCiAgICAgICAicnRjX2V2ZW50X2xvZy9ydGNfZXZl
bnRfbG9nMi5wcm90byIsCiAgICAgXQpAQCAtMjYyLDggKzI4Nyw2IEBAIGlmIChydGNfZW5hYmxl
X3Byb3RvYnVmKSB7CiAgIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2V2ZW50X2xvZ19wYXJzZXIi
KSB7CiAgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgICBzb3VyY2VzID0gWwotICAgICAgInJ0
Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXIuY2MiLAotICAgICAgInJ0Y19ldmVudF9s
b2cvcnRjX2V2ZW50X2xvZ19wYXJzZXIuaCIsCiAgICAgICAicnRjX2V2ZW50X2xvZy9ydGNfZXZl
bnRfbG9nX3BhcnNlcl9uZXcuY2MiLAogICAgICAgInJ0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xv
Z19wYXJzZXJfbmV3LmgiLAogICAgICAgInJ0Y19ldmVudF9sb2cvcnRjX2V2ZW50X3Byb2Nlc3Nv
ci5oIiwKQEAgLTI3NCwxMyArMjk3LDEzIEBAIGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAg
ICAgICAiOnJ0Y19ldmVudF9id2UiLAogICAgICAgIjpydGNfZXZlbnRfbG9nMl9wcm90byIsCiAg
ICAgICAiOnJ0Y19ldmVudF9sb2dfYXBpIiwKKyAgICAgICI6cnRjX2V2ZW50X2xvZ19pbXBsX2Vu
Y29kZXIiLAogICAgICAgIjpydGNfZXZlbnRfbG9nX3Byb3RvIiwKICAgICAgICI6cnRjX3N0cmVh
bV9jb25maWciLAotICAgICAgIi4uOndlYnJ0Y19jb21tb24iLAogICAgICAgIi4uL2FwaTpsaWJq
aW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi9jYWxsOnZpZGVvX3N0cmVhbV9h
cGkiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9fY29kaW5nOmF1ZGlvX25ldHdvcmtfYWRhcHRv
ciIsCi0gICAgICAiLi4vbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXI6dHJhbnNwb3J0X2Zl
ZWRiYWNrIiwKKyAgICAgICIuLi9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHA6dHJh
bnNwb3J0X2ZlZWRiYWNrIiwKICAgICAgICIuLi9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvcjpyZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IiLAogICAgICAgIi4uL21vZHVsZXMvcnRwX3J0
Y3AiLAogICAgICAgIi4uL21vZHVsZXMvcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKQEAgLTI5
OCw2ICszMjEsOSBAQCBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgICAgYXNzZXJ0KHJ0
Y19lbmFibGVfcHJvdG9idWYpCiAgICAgICBkZWZpbmVzID0gWyAiRU5BQkxFX1JUQ19FVkVOVF9M
T0ciIF0KICAgICAgIHNvdXJjZXMgPSBbCisgICAgICAgICJydGNfZXZlbnRfbG9nL2VuY29kZXIv
YmxvYl9lbmNvZGluZ191bml0dGVzdC5jYyIsCisgICAgICAgICJydGNfZXZlbnRfbG9nL2VuY29k
ZXIvZGVsdGFfZW5jb2RpbmdfdW5pdHRlc3QuY2MiLAorICAgICAgICAicnRjX2V2ZW50X2xvZy9l
bmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9jb21tb25fdW5pdHRlc3QuY2MiLAogICAgICAg
ICAicnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl91bml0dGVzdC5j
YyIsCiAgICAgICAgICJydGNfZXZlbnRfbG9nL291dHB1dC9ydGNfZXZlbnRfbG9nX291dHB1dF9m
aWxlX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgInJ0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ191
bml0dGVzdC5jYyIsCkBAIC0zMDksNiArMzM1LDcgQEAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYp
IHsKICAgICAgICAgIjppY2VfbG9nIiwKICAgICAgICAgIjpydGNfZXZlbnRfYXVkaW8iLAogICAg
ICAgICAiOnJ0Y19ldmVudF9id2UiLAorICAgICAgICAiOnJ0Y19ldmVudF9sb2cyX3Byb3RvIiwK
ICAgICAgICAgIjpydGNfZXZlbnRfbG9nX2FwaSIsCiAgICAgICAgICI6cnRjX2V2ZW50X2xvZ19p
bXBsX2Jhc2UiLAogICAgICAgICAiOnJ0Y19ldmVudF9sb2dfaW1wbF9lbmNvZGVyIiwKQEAgLTMz
Miw2ICszNTksNyBAQCBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgICAgICAiLi4vdGVz
dDp0ZXN0X3N1cHBvcnQiLAogICAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICAgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgICAgICBdCiAgICAgICBpZiAo
IWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYgaXNfY2xhbmcpIHsKICAgICAgICAgIyBTdXBwcmVzcyB3
YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mud2VicnRjLm9yZy8x
NjMpLgpAQCAtMzYyLDQ5ICszOTAsNiBAQCBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAg
ICAgfQogICAgIH0KICAgfQotCi0gIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewotICAgIHJ0Y19l
eGVjdXRhYmxlKCJydGNfZXZlbnRfbG9nMnRleHQiKSB7Ci0gICAgICB0ZXN0b25seSA9IHRydWUK
LSAgICAgIHNvdXJjZXMgPSBbCi0gICAgICAgICJydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cy
dGV4dC5jYyIsCi0gICAgICBdCi0gICAgICBkZXBzID0gWwotICAgICAgICAiOnJ0Y19ldmVudF9s
b2dfYXBpIiwKLSAgICAgICAgIjpydGNfZXZlbnRfbG9nX3BhcnNlciIsCi0gICAgICAgICIuLi86
d2VicnRjX2NvbW1vbiIsCi0gICAgICAgICIuLi9jYWxsOnZpZGVvX3N0cmVhbV9hcGkiLAotICAg
ICAgICAiLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAotICAgICAgICAiLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKLSAgICAgICAgIi4uL3J0Y19iYXNlOnByb3RvYnVmX3V0aWxzIiwK
LSAgICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICAgIi4uL3J0
Y19iYXNlOnN0cmluZ3V0aWxzIiwKLQotICAgICAgICAjIFRPRE8oa3dpYmVyZyk6IFJlbW92ZSB0
aGlzIGRlcGVuZGVuY3kuCi0gICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVj
c19hcGkiLAotICAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6YXVkaW9fbmV0d29ya19h
ZGFwdG9yX2NvbmZpZyIsCi0gICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwIiwKLSAgICAgIF0K
LSAgICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgewotICAgICAgICAj
IFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIENocm9taXVtIENsYW5nIHBsdWdpbiAoYnVncy53
ZWJydGMub3JnLzE2MykuCi0gICAgICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1aWxk
L2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCi0gICAgICB9Ci0gICAgfQotICB9
Ci0gIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewotICAgIHJ0Y19leGVjdXRhYmxlKCJydGNfZXZl
bnRfbG9nMnN0YXRzIikgewotICAgICAgdGVzdG9ubHkgPSB0cnVlCi0gICAgICBzb3VyY2VzID0g
WwotICAgICAgICAicnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnN0YXRzLmNjIiwKLSAgICAg
IF0KLSAgICAgIGRlcHMgPSBbCi0gICAgICAgICI6cnRjX2V2ZW50X2xvZ19hcGkiLAotICAgICAg
ICAiOnJ0Y19ldmVudF9sb2dfcHJvdG8iLAotICAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwK
LSAgICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgIF0KLSAgICB9
Ci0gIH0KIH0KIAogcnRjX3NvdXJjZV9zZXQoImljZV9sb2ciKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGlu
Zy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZTEzN2YxM2ZjMWE0MDJmNmQ4MDgzODdhNzZhNDA5NDk0NTg1ZmU4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGluZy5jYwpAQCAt
MCwwICsxLDExMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJsb2dnaW5n
L3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nLmgiCisKKyNpbmNsdWRlIDxhbGdv
cml0aG0+CisKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CitzdGQ6OnN0cmluZyBFbmNvZGVCbG9icyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4m
IGJsb2JzKSB7CisgIFJUQ19EQ0hFQ0soIWJsb2JzLmVtcHR5KCkpOworCisgIHNpemVfdCByZXN1
bHRfbGVuZ3RoX2JvdW5kID0ga01heFZhckludExlbmd0aEJ5dGVzICogYmxvYnMuc2l6ZSgpOwor
ICBmb3IgKGNvbnN0IGF1dG8mIGJsb2IgOiBibG9icykgeworICAgIC8vIFByb3ZpZGluZyBhbiBp
bnB1dCBzbyBsb25nIHRoYXQgaXQgd291bGQgY2F1c2UgYSB3cmFwLWFyb3VuZCBpcyBhbiBlcnJv
ci4KKyAgICBSVENfRENIRUNLX0dFKHJlc3VsdF9sZW5ndGhfYm91bmQgKyBibG9iLmxlbmd0aCgp
LCByZXN1bHRfbGVuZ3RoX2JvdW5kKTsKKyAgICByZXN1bHRfbGVuZ3RoX2JvdW5kICs9IGJsb2Iu
bGVuZ3RoKCk7CisgIH0KKworICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgIHJlc3VsdC5yZXNlcnZl
KHJlc3VsdF9sZW5ndGhfYm91bmQpOworCisgIC8vIEZpcnN0LCBlbmNvZGUgYWxsIG9mIHRoZSBs
ZW5ndGhzLgorICBmb3IgKGFic2w6OnN0cmluZ192aWV3IGJsb2IgOiBibG9icykgeworICAgIHJl
c3VsdCArPSBFbmNvZGVWYXJJbnQoYmxvYi5sZW5ndGgoKSk7CisgIH0KKworICAvLyBTZWNvbmQs
IGVuY29kZSB0aGUgYWN0dWFsIGJsb2JzLgorICBmb3IgKGFic2w6OnN0cmluZ192aWV3IGJsb2Ig
OiBibG9icykgeworICAgIHJlc3VsdC5hcHBlbmQoYmxvYi5kYXRhKCksIGJsb2IubGVuZ3RoKCkp
OworICB9CisKKyAgUlRDX0RDSEVDS19MRShyZXN1bHQuc2l6ZSgpLCByZXN1bHRfbGVuZ3RoX2Jv
dW5kKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3Zp
ZXc+IERlY29kZUJsb2JzKGFic2w6OnN0cmluZ192aWV3IGVuY29kZWRfYmxvYnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9vZl9ibG9icykg
eworICBpZiAoZW5jb2RlZF9ibG9icy5lbXB0eSgpKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5H
KSA8PCAiQ29ycnVwdCBpbnB1dDsgZW1wdHkgaW5wdXQuIjsKKyAgICByZXR1cm4gc3RkOjp2ZWN0
b3I8YWJzbDo6c3RyaW5nX3ZpZXc+KCk7CisgIH0KKworICBpZiAobnVtX29mX2Jsb2JzID09IDB1
KSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKQorICAgICAgICA8PCAiQ29ycnVwdCBpbnB1dDsg
bnVtYmVyIG9mIGJsb2JzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAuIjsKKyAgICByZXR1cm4gc3Rk
Ojp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+KCk7CisgIH0KKworICBzaXplX3QgcmVhZF9pZHgg
PSAwOworCisgIC8vIFJlYWQgdGhlIGxlbmd0aHMgb2YgYWxsIGJsb2JzLgorICBzdGQ6OnZlY3Rv
cjx1aW50NjRfdD4gbGVuZ3RocyhudW1fb2ZfYmxvYnMpOworICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bV9vZl9ibG9iczsgKytpKSB7CisgICAgaWYgKHJlYWRfaWR4ID49IGVuY29kZWRfYmxv
YnMubGVuZ3RoKCkpIHsKKyAgICAgIFJUQ19EQ0hFQ0tfRVEocmVhZF9pZHgsIGVuY29kZWRfYmxv
YnMubGVuZ3RoKCkpOworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ29ycnVwdCBpbnB1
dDsgZXhjZXNzaXZlIG51bWJlciBvZiBibG9icy4iOworICAgICAgcmV0dXJuIHN0ZDo6dmVjdG9y
PGFic2w6OnN0cmluZ192aWV3PigpOworICAgIH0KKworICAgIGNvbnN0IHNpemVfdCByZWFkX2J5
dGVzID0KKyAgICAgICAgRGVjb2RlVmFySW50KGVuY29kZWRfYmxvYnMuc3Vic3RyKHJlYWRfaWR4
KSwgJmxlbmd0aHNbaV0pOworICAgIGlmIChyZWFkX2J5dGVzID09IDApIHsKKyAgICAgIFJUQ19M
T0coTFNfV0FSTklORykgPDwgIkNvcnJ1cHQgaW5wdXQ7IHZhcmludCBkZWNvZGluZyBmYWlsZWQu
IjsKKyAgICAgIHJldHVybiBzdGQ6OnZlY3RvcjxhYnNsOjpzdHJpbmdfdmlldz4oKTsKKyAgICB9
CisKKyAgICByZWFkX2lkeCArPSByZWFkX2J5dGVzOworCisgICAgLy8gTm90ZTogSXQgbWlnaHQg
YmUgdGhhdCByZWFkX2lkeCA9PSBlbmNvZGVkX2Jsb2JzLmxlbmd0aCgpLCBpZiB0aGlzCisgICAg
Ly8gaXMgdGhlIGxhc3QgaXRlcmF0aW9uLCBhbmQgYWxsIG9mIHRoZSBibG9icyBhcmUgdGhlIGVt
cHR5IHN0cmluZy4KKyAgICBSVENfRENIRUNLX0xFKHJlYWRfaWR4LCBlbmNvZGVkX2Jsb2JzLmxl
bmd0aCgpKTsKKyAgfQorCisgIC8vIFJlYWQgdGhlIGJsb2JzIHRoZW1zZWx2ZXMuCisgIHN0ZDo6
dmVjdG9yPGFic2w6OnN0cmluZ192aWV3PiBibG9icyhudW1fb2ZfYmxvYnMpOworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bV9vZl9ibG9iczsgKytpKSB7CisgICAgaWYgKHJlYWRfaWR4ICsg
bGVuZ3Roc1tpXSA8IHJlYWRfaWR4KSB7ICAvLyBXcmFwLWFyb3VuZCBkZXRlY3Rpb24uCisgICAg
ICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJDb3JydXB0IGlucHV0OyB1bnJlYXNvbmFibHkgbGFy
Z2UgYmxvYiBzZXF1ZW5jZS4iOworICAgICAgcmV0dXJuIHN0ZDo6dmVjdG9yPGFic2w6OnN0cmlu
Z192aWV3PigpOworICAgIH0KKworICAgIGlmIChyZWFkX2lkeCArIGxlbmd0aHNbaV0gPiBlbmNv
ZGVkX2Jsb2JzLmxlbmd0aCgpKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJDb3Jy
dXB0IGlucHV0OyBibG9iIHNpemVzIGV4Y2VlZCBpbnB1dCBzaXplLiI7CisgICAgICByZXR1cm4g
c3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+KCk7CisgICAgfQorCisgICAgYmxvYnNbaV0g
PSBlbmNvZGVkX2Jsb2JzLnN1YnN0cihyZWFkX2lkeCwgbGVuZ3Roc1tpXSk7CisgICAgcmVhZF9p
ZHggKz0gbGVuZ3Roc1tpXTsKKyAgfQorCisgIGlmIChyZWFkX2lkeCAhPSBlbmNvZGVkX2Jsb2Jz
Lmxlbmd0aCgpKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ29ycnVwdCBpbnB1dDsg
dW5yZWNvZ25pemVkIHRyYWlsZXIuIjsKKyAgICByZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6c3Ry
aW5nX3ZpZXc+KCk7CisgIH0KKworICByZXR1cm4gYmxvYnM7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmcuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2RpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmExMGQyNzdmN2ZkNmFl
MTcwMzBhNzc0YTAzZThiNzFkOTYwZDhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29k
ZXIvYmxvYl9lbmNvZGluZy5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChj
KSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX0JMT0JfRU5DT0RJTkdf
SF8KKyNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09ERVJfQkxPQl9FTkNPRElOR19I
XworCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFi
c2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gRW5j
b2RlL2RlY29kZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3MsIHdob3NlIGxlbmd0aCBpcyBub3Qga25v
d24gdG8gYmUKKy8vIGRpc2Nlcm5hYmxlIGZyb20gdGhlIGJsb2IgaXRzZWxmIChpLmUuIHdpdGhv
dXQgYmVpbmcgdHJhbnNtaXR0ZWQgT09CKSwKKy8vIGluIGEgd2F5IHRoYXQgd291bGQgYWxsb3cg
dXMgdG8gc2VwYXJhdGUgdGhlbSBhZ2FpbiBvbiB0aGUgZGVjb2Rpbmcgc2lkZS4KKy8vIFRoZSBu
dW1iZXIgb2YgYmxvYnMgaXMgYXNzdW1lZCB0byBiZSB0cmFuc21pdHRlZCBPT0IuIEZvciBleGFt
cGxlLCBpZgorLy8gbXVsdGlwbGUgc2VxdWVuY2VzIG9mIGRpZmZlcmVudCBibG9icyBhcmUgc2Vu
dCwgYnV0IGFsbCBzZXF1ZW5jZXMgY29udGFpbgorLy8gdGhlIHNhbWUgbnVtYmVyIG9mIGJsb2Jz
LCBpdCBpcyBiZW5lZmljaWFsIHRvIG5vdCBlbmNvZGUgdGhlIG51bWJlciBvZiBibG9icy4KKy8v
CisvLyBFbmNvZGVCbG9icygpIG11c3QgYmUgZ2l2ZW4gYSBub24tZW1wdHkgdmVjdG9yLiBUaGUg
YmxvYnMgdGhlbXNlbHZlcyBtYXkKKy8vIGJlIGVxdWFsIHRvICIiLCB0aG91Z2guCisvLyBFbmNv
ZGVCbG9icygpIG1heSBub3QgZmFpbC4KKy8vIEVuY29kZUJsb2JzKCkgbmV2ZXIgcmV0dXJucyB0
aGUgZW1wdHkgc3RyaW5nLgorLy8KKy8vIENhbGxpbmcgRGVjb2RlQmxvYnMoKSBvbiBhbiBlbXB0
eSBzdHJpbmcsIG9yIHdpdGggfG51bV9vZl9ibG9ic3wgc2V0IHRvIDAsCisvLyBpcyBhbiBlcnJv
ci4KKy8vIERlY29kZUJsb2JzKCkgcmV0dXJucyBhbiBlbXB0eSB2ZWN0b3IgaWYgaXQgZmFpbHMs
IGUuZy4gZHVlIHRvIGEgbWlzbWF0Y2gKKy8vIGJldHdlZW4gfG51bV9vZl9ibG9ic3wgYW5kIHxl
bmNvZGVkX2Jsb2JzfCwgd2hpY2ggY2FuIGhhcHBlbiBpZgorLy8gfGVuY29kZWRfYmxvYnN8IGlz
IGNvcnJ1cHRlZC4KKy8vIFdoZW4gc3VjY2Vzc2Z1bCwgRGVjb2RlQmxvYnMoKSByZXR1cm5zIGEg
dmVjdG9yIG9mIHN0cmluZ192aWV3IG9iamVjdHMsCisvLyB3aGljaCByZWZlciB0byB0aGUgb3Jp
Z2luYWwgaW5wdXQgKHxlbmNvZGVkX2Jsb2JzfCksIGFuZCB0aGVyZWZvcmUgbWF5CisvLyBub3Qg
b3V0bGl2ZSBpdC4KKy8vCisvLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHN0ZDo6c3RyaW5nIG1p
Z2h0IGhhdmUgYmVlbiByZXNlcnZlZCBmb3Igc2lnbmlmaWNhbnRseQorLy8gbW9yZSBtZW1vcnkg
dGhhbiBpdCBlbmRzIHVwIHVzaW5nLiBJZiB0aGUgY2FsbGVyIHRvIEVuY29kZUJsb2JzKCkgaW50
ZW5kcworLy8gdG8gc3RvcmUgdGhlIHJlc3VsdCBsb25nLXRlcm0sIGhlIHNob3VsZCBjb25zaWRl
ciBzaHJpbmtfdG9fZml0KCktaW5nIGl0Lgorc3RkOjpzdHJpbmcgRW5jb2RlQmxvYnMoY29uc3Qg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBibG9icyk7CitzdGQ6OnZlY3RvcjxhYnNsOjpzdHJp
bmdfdmlldz4gRGVjb2RlQmxvYnMoYWJzbDo6c3RyaW5nX3ZpZXcgZW5jb2RlZF9ibG9icywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX29mX2Js
b2JzKTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIExPR0dJTkdfUlRD
X0VWRU5UX0xPR19FTkNPREVSX0JMT0JfRU5DT0RJTkdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
bmNvZGVyL2Jsb2JfZW5jb2RpbmdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2Vu
Y29kaW5nX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkMDhlMGZlYjg3MDdmNzYxMDczOGE5Yjll
MmRjZGJmNTg0MWFlNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2Vu
Y29kaW5nX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogIENvcHlyaWdodCAo
YykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2Jsb2JfZW5jb2Rp
bmcuaCIKKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisKK3VzaW5nIENoYXJUID0g
c3RkOjpzdHJpbmc6OnZhbHVlX3R5cGU7CisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1lc3Bh
Y2UgeworCit2b2lkIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYgYmxvYnMpIHsKKyAgUlRDX0RDSEVDSyghYmxvYnMuZW1wdHkoKSk7CisKKyAg
Y29uc3Qgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IEVuY29kZUJsb2JzKGJsb2JzKTsKKyAgQVNTRVJU
X0ZBTFNFKGVuY29kZWQuZW1wdHkoKSk7CisKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6c3Ry
aW5nX3ZpZXc+IGRlY29kZWQgPQorICAgICAgRGVjb2RlQmxvYnMoZW5jb2RlZCwgYmxvYnMuc2l6
ZSgpKTsKKworICBBU1NFUlRfRVEoZGVjb2RlZC5zaXplKCksIGJsb2JzLnNpemUoKSk7CisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVjb2RlZC5zaXplKCk7ICsraSkgeworICAgIEFTU0VSVF9F
UShkZWNvZGVkW2ldLCBibG9ic1tpXSk7CisgIH0KK30KKwordm9pZCBUZXN0R3JhY2VmdWxFcnJv
ckhhbmRsaW5nKGFic2w6OnN0cmluZ192aWV3IGVuY29kZWRfYmxvYnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9vZl9ibG9icykgeworICBjb25zdCBzdGQ6OnZl
Y3RvcjxhYnNsOjpzdHJpbmdfdmlldz4gZGVjb2RlZCA9CisgICAgICBEZWNvZGVCbG9icyhlbmNv
ZGVkX2Jsb2JzLCBudW1fb2ZfYmxvYnMpOworICBFWFBFQ1RfVFJVRShkZWNvZGVkLmVtcHR5KCkp
OworfQorCit9ICAvLyBuYW1lc3BhY2UKKworVEVTVChCbG9iRW5jb2RpbmcsIEVtcHR5QmxvYikg
eworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyh7IiJ9KTsKK30KKworVEVTVChCbG9iRW5jb2Rp
bmcsIFNpbmdsZUNoYXJhY3RlckJsb2IpIHsKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoeyJh
In0pOworfQorCitURVNUKEJsb2JFbmNvZGluZywgTG9uZ0Jsb2IpIHsKKyAgc3RkOjpzdHJpbmcg
YmxvYiA9ICIiOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAg
YmxvYiArPSBzdGQ6OnRvX3N0cmluZyhpICsgMSkgKyAiIE1pc3Npc3NpcHBpXG4iOworICB9Cisg
IFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKHtibG9ifSk7Cit9CisKK1RFU1QoQmxvYkVuY29kaW5n
LCBCbG9ic09mVmFyaW91c0xlbmd0aHMpIHsKKyAgY29uc3RleHByIHNpemVfdCBrSnVtcCA9IDB4
ZjAzMmQ7ICAvLyBBcmJpdHJhcnkuCisgIGNvbnN0ZXhwciBzaXplX3Qga01heCA9IDB4ZmZmZmZm
OyAgLy8gQXJiaXRyYXJ5LgorCisgIHN0ZDo6c3RyaW5nIGJsb2I7CisgIGJsb2IucmVzZXJ2ZShr
TWF4KTsKKworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtNYXg7IGkgKz0ga0p1bXApIHsKKyAg
ICBibG9iLmFwcGVuZChrSnVtcCwgJ3gnKTsKKyAgICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyh7
YmxvYn0pOworICB9Cit9CisKK1RFU1QoQmxvYkVuY29kaW5nLCBNdWx0aXBsZUJsb2JzKSB7Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBibG9iczsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCAxMDAwMDA7ICsraSkgeworICAgIGJsb2JzLnB1c2hfYmFjayhzdGQ6OnRvX3N0cmluZyhpICsg
MSkgKyAiIE1pc3Npc3NpcHBpXG4iKTsKKyAgfQorICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhi
bG9icyk7Cit9CisKK1RFU1QoQmxvYkVuY29kaW5nLCBEZWNvZGVCbG9ic0hhbmRsZXNFcnJvcnNH
cmFjZWZ1bGx5RW1wdHlJbnB1dCkgeworICBUZXN0R3JhY2VmdWxFcnJvckhhbmRsaW5nKCIiLCAx
KTsKK30KKworVEVTVChCbG9iRW5jb2RpbmcsIERlY29kZUJsb2JzSGFuZGxlc0Vycm9yc0dyYWNl
ZnVsbHlaZXJvQmxvYnMpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IEVuY29kZUJs
b2JzKHsiYSJ9KTsKKyAgQVNTRVJUX0ZBTFNFKGVuY29kZWQuZW1wdHkoKSk7CisgIFRlc3RHcmFj
ZWZ1bEVycm9ySGFuZGxpbmcoZW5jb2RlZCwgMCk7Cit9CisKK1RFU1QoQmxvYkVuY29kaW5nLCBE
ZWNvZGVCbG9ic0hhbmRsZXNFcnJvcnNHcmFjZWZ1bGx5QmxvYkxlbmd0aFRvb1NtYWxsKSB7Cisg
IHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBFbmNvZGVCbG9icyh7ImFiIn0pOworICBBU1NFUlRfRkFM
U0UoZW5jb2RlZC5lbXB0eSgpKTsKKyAgQVNTRVJUX0VRKGVuY29kZWRbMF0sIDB4MDIpOworICBl
bmNvZGVkWzBdID0gMHgwMTsKKyAgVGVzdEdyYWNlZnVsRXJyb3JIYW5kbGluZyhlbmNvZGVkLCAx
KTsKK30KKworVEVTVChCbG9iRW5jb2RpbmcsIERlY29kZUJsb2JzSGFuZGxlc0Vycm9yc0dyYWNl
ZnVsbHlCbG9iTGVuZ3RoVG9vTGFyZ2UpIHsKKyAgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IEVuY29k
ZUJsb2JzKHsiYSJ9KTsKKyAgQVNTRVJUX0ZBTFNFKGVuY29kZWQuZW1wdHkoKSk7CisgIEFTU0VS
VF9FUShlbmNvZGVkWzBdLCAweDAxKTsKKyAgZW5jb2RlZFswXSA9IDB4MDI7CisgIFRlc3RHcmFj
ZWZ1bEVycm9ySGFuZGxpbmcoZW5jb2RlZCwgMSk7Cit9CisKK1RFU1QoQmxvYkVuY29kaW5nLAor
ICAgICBEZWNvZGVCbG9ic0hhbmRsZXNFcnJvcnNHcmFjZWZ1bGx5TnVtYmVyT2ZCbG9ic0luY29y
cmVjdGx5SGlnaCkgeworICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYmxvYnMgPSB7
ImEiLCAiYiJ9OworICBjb25zdCBzdGQ6OnN0cmluZyBlbmNvZGVkID0gRW5jb2RlQmxvYnMoYmxv
YnMpOworICAvLyBUZXN0IGZvY3VzIC0gdHdvIGVtcHR5IHN0cmluZ3MgZW5jb2RlZCwgYnV0IERl
Y29kZUJsb2JzKCkgdG9sZCB3YXkgbW9yZQorICAvLyBibG9icyBhcmUgaW4gdGhlIHN0cmluZ3Mg
dGhhbiBjb3VsZCBiZSBleHBlY3RlZC4KKyAgVGVzdEdyYWNlZnVsRXJyb3JIYW5kbGluZyhlbmNv
ZGVkLCAxMDAwKTsKKworICAvLyBUZXN0IHNhbml0eSAtIHNob3cgdGhhdCBEZWNvZGVCbG9icygp
IHdvdWxkIGhhdmUgd29ya2VkIGlmIGl0IGdvdCB0aGUKKyAgLy8gY29ycmVjdCBpbnB1dC4KKyAg
VGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmxvYnMpOworfQorCitURVNUKEJsb2JFbmNvZGluZywg
RGVjb2RlQmxvYnNIYW5kbGVzRXJyb3JzR3JhY2VmdWxseURlZmVjdGl2ZVZhckludCkgeworICBz
dGQ6OnN0cmluZyBkZWZlY3RpdmVfdmFyaW50OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtN
YXhWYXJJbnRMZW5ndGhCeXRlczsgKytpKSB7CisgICAgQVNTRVJUX0xFKGtNYXhWYXJJbnRMZW5n
dGhCeXRlcywgMHhmZnUpOworICAgIGRlZmVjdGl2ZV92YXJpbnQgKz0gc3RhdGljX2Nhc3Q8Q2hh
clQ+KHN0YXRpY19jYXN0PHNpemVfdD4oMHg4MHUpIHwgaSk7CisgIH0KKyAgZGVmZWN0aXZlX3Zh
cmludCArPSAweDAxdTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBkZWZlY3RpdmVfZW5jb2RlZCA9
IGRlZmVjdGl2ZV92YXJpbnQgKyAid2hhdGV2ZXIiOworCisgIFRlc3RHcmFjZWZ1bEVycm9ySGFu
ZGxpbmcoZGVmZWN0aXZlX2VuY29kZWQsIDEpOworfQorCitURVNUKEJsb2JFbmNvZGluZywgRGVj
b2RlQmxvYnNIYW5kbGVzRXJyb3JzR3JhY2VmdWxseUxlbmd0aFN1bVdyYXBBcm91bmQpIHsKKyAg
c3RkOjpzdHJpbmcgbWF4X3NpemVfdmFyaW50OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtN
YXhWYXJJbnRMZW5ndGhCeXRlcyAtIDE7ICsraSkgeworICAgIG1heF9zaXplX3ZhcmludCArPSAw
eGZmdTsKKyAgfQorICBtYXhfc2l6ZV92YXJpbnQgKz0gMHg3ZnU7CisKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgZGVmZWN0aXZlX2VuY29kZWQgPQorICAgICAgbWF4X3NpemVfdmFyaW50ICsgbWF4X3Np
emVfdmFyaW50ICsgIndoYXRldmVyIjsKKworICBUZXN0R3JhY2VmdWxFcnJvckhhbmRsaW5nKGRl
ZmVjdGl2ZV9lbmNvZGVkLCAyKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9k
ZWx0YV9lbmNvZGluZy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTMzNGI5OGQwMDA5YmFkZjQzZGFhNDUwNWEz
ZDBlM2ZhOTlmMzM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5j
b2RpbmcuY2MKQEAgLTAsMCArMSw5NzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
CisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5j
bHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuaCIKKwor
I2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWVtb3J5
PgorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIK
KyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9iaXRidWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lv
bnMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworCisvLyBUT0RPKGVsYWRh
bG9uKTogT25seSBidWlsZCB0aGUgZGVjb2RlciBpbiB0b29scyBhbmQgdW5pdCB0ZXN0cy4KKwor
Ym9vbCBnX2ZvcmNlX3Vuc2lnbmVkX2Zvcl90ZXN0aW5nID0gZmFsc2U7Citib29sIGdfZm9yY2Vf
c2lnbmVkX2Zvcl90ZXN0aW5nID0gZmFsc2U7CisKK3NpemVfdCBCaXRzVG9CeXRlcyhzaXplX3Qg
Yml0cykgeworICByZXR1cm4gKGJpdHMgLyA4KSArIChiaXRzICUgOCA+IDAgPyAxIDogMCk7Cit9
CisKKy8vIFRPRE8oZWxhZGFsb24pOiBSZXBsYWNlIGJ5IHNvbWV0aGluZyBtb3JlIGVmZmljaWVu
dC4KK3VpbnQ2NF90IFVuc2lnbmVkQml0V2lkdGgodWludDY0X3QgaW5wdXQsIGJvb2wgemVyb192
YWxfYXNfemVyb193aWR0aCA9IGZhbHNlKSB7CisgIGlmICh6ZXJvX3ZhbF9hc196ZXJvX3dpZHRo
ICYmIGlucHV0ID09IDApIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHVpbnQ2NF90IHdpZHRo
ID0gMDsKKyAgZG8geyAgLy8gaW5wdXQgPT0gMCAtPiB3aWR0aCA9PSAxCisgICAgd2lkdGggKz0g
MTsKKyAgICBpbnB1dCA+Pj0gMTsKKyAgfSB3aGlsZSAoaW5wdXQgIT0gMCk7CisgIHJldHVybiB3
aWR0aDsKK30KKwordWludDY0X3QgU2lnbmVkQml0V2lkdGgodWludDY0X3QgbWF4X3Bvc19tYWdu
aXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBtYXhfbmVnX21hZ25pdHVk
ZSkgeworICBjb25zdCB1aW50NjRfdCBiaXR3aWR0aF9wb3MgPSBVbnNpZ25lZEJpdFdpZHRoKG1h
eF9wb3NfbWFnbml0dWRlLCB0cnVlKTsKKyAgY29uc3QgdWludDY0X3QgYml0d2lkdGhfbmVnID0K
KyAgICAgIChtYXhfbmVnX21hZ25pdHVkZSA+IDApID8gVW5zaWduZWRCaXRXaWR0aChtYXhfbmVn
X21hZ25pdHVkZSAtIDEsIHRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDA7
CisgIHJldHVybiAxICsgc3RkOjptYXgoYml0d2lkdGhfcG9zLCBiaXR3aWR0aF9uZWcpOworfQor
CisvLyBSZXR1cm4gdGhlIG1heGltdW0gaW50ZWdlciBvZiBhIGdpdmVuIGJpdCB3aWR0aC4KKy8v
IEV4YW1wbGVzOgorLy8gTWF4VW5zaWduZWRWYWx1ZU9mQml0V2lkdGgoMSkgPSAweDAxCisvLyBN
YXhVbnNpZ25lZFZhbHVlT2ZCaXRXaWR0aCg2KSA9IDB4M2YKKy8vIE1heFVuc2lnbmVkVmFsdWVP
ZkJpdFdpZHRoKDgpID0gMHhmZgorLy8gTWF4VW5zaWduZWRWYWx1ZU9mQml0V2lkdGgoMzIpID0g
MHhmZmZmZmZmZgordWludDY0X3QgTWF4VW5zaWduZWRWYWx1ZU9mQml0V2lkdGgodWludDY0X3Qg
Yml0X3dpZHRoKSB7CisgIFJUQ19EQ0hFQ0tfR0UoYml0X3dpZHRoLCAxKTsKKyAgUlRDX0RDSEVD
S19MRShiaXRfd2lkdGgsIDY0KTsKKyAgcmV0dXJuIChiaXRfd2lkdGggPT0gNjQpID8gc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IGJpdF93aWR0aCkgLSAxKTsKK30KKwor
Ly8gQ29tcHV0ZXMgdGhlIGRlbHRhIGJldHdlZW4gfHByZXZpb3VzfCBhbmQgfGN1cnJlbnR8LCB1
bmRlciB0aGUgYXNzdW1wdGlvbgorLy8gdGhhdCB3cmFwLWFyb3VuZCBvY2N1cnMgYWZ0ZXIgfHdp
ZHRofCBpcyBleGNlZWRlZC4KK3VpbnQ2NF90IFVuc2lnbmVkRGVsdGEodWludDY0X3QgcHJldmlv
dXMsIHVpbnQ2NF90IGN1cnJlbnQsIHVpbnQ2NF90IGJpdF9tYXNrKSB7CisgIHJldHVybiAoY3Vy
cmVudCAtIHByZXZpb3VzKSAmIGJpdF9tYXNrOworfQorCisvLyBEZXRlcm1pbmVzIHRoZSBlbmNv
ZGluZyB0eXBlIChlLmcuIGZpeGVkLXNpemUgZW5jb2RpbmcpLgorLy8gR2l2ZW4gYW4gZW5jb2Rp
bmcgdHlwZSwgbWF5IGFsc28gZGlzdGluZ3Vpc2ggYmV0d2VlbiBzb21lIHZhcmlhbnRzIG9mIGl0
CisvLyAoZS5nLiB3aGljaCBmaWVsZHMgb2YgdGhlIGZpeGVkLXNpemUgZW5jb2RpbmcgYXJlIGV4
cGxpY2l0bHkgbWVudGlvbmVkIGJ5CisvLyB0aGUgaGVhZGVyLCBhbmQgd2hpY2ggYXJlIGltcGxp
Y2l0bHkgYXNzdW1lZCB0byBob2xkIGNlcnRhaW4gZGVmYXVsdCB2YWx1ZXMpLgorZW51bSBjbGFz
cyBFbmNvZGluZ1R5cGUgeworICBrRml4ZWRTaXplVW5zaWduZWREZWx0YXNOb0Vhcmx5V3JhcE5v
T3B0ID0gMCwKKyAga0ZpeGVkU2l6ZVNpZ25lZERlbHRhc0Vhcmx5V3JhcEFuZE9wdFN1cHBvcnRl
ZCA9IDEsCisgIGtSZXNlcnZlZDEgPSAyLAorICBrUmVzZXJ2ZWQyID0gMywKKyAga051bWJlck9m
RW5jb2RpbmdUeXBlcyAgLy8gS2VlcCBsYXN0Cit9OworCisvLyBUaGUgd2lkdGggb2YgZWFjaCBm
aWVsZCBpbiB0aGUgZW5jb2RpbmcgaGVhZGVyLiBOb3RlIHRoYXQgdGhpcyBpcyB0aGUKKy8vIHdp
ZHRoIGluIGNhc2UgdGhlIGZpZWxkIGV4aXN0czsgbm90IGFsbCBmaWVsZHMgb2NjdXIgaW4gYWxs
IGVuY29kaW5nIHR5cGVzLgorY29uc3RleHByIHNpemVfdCBrQml0c0luSGVhZGVyRm9yRW5jb2Rp
bmdUeXBlID0gMjsKK2NvbnN0ZXhwciBzaXplX3Qga0JpdHNJbkhlYWRlckZvckRlbHRhV2lkdGhC
aXRzID0gNjsKK2NvbnN0ZXhwciBzaXplX3Qga0JpdHNJbkhlYWRlckZvclNpZ25lZERlbHRhcyA9
IDE7Citjb25zdGV4cHIgc2l6ZV90IGtCaXRzSW5IZWFkZXJGb3JWYWx1ZXNPcHRpb25hbCA9IDE7
Citjb25zdGV4cHIgc2l6ZV90IGtCaXRzSW5IZWFkZXJGb3JWYWx1ZVdpZHRoQml0cyA9IDY7CisK
K3N0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihFbmNvZGluZ1R5cGU6OmtOdW1iZXJP
ZkVuY29kaW5nVHlwZXMpIDw9CisgICAgICAgICAgICAgICAgICAxIDw8IGtCaXRzSW5IZWFkZXJG
b3JFbmNvZGluZ1R5cGUsCisgICAgICAgICAgICAgICJOb3QgYWxsIGVuY29kaW5nIHR5cGVzIGZp
dC4iKTsKKworLy8gRGVmYXVsdCB2YWx1ZXMgZm9yIHdoZW4gdGhlIGVuY29kaW5nIGhlYWRlciBk
b2VzIG5vdCBzcGVjaWZ5IGV4cGxpY2l0bHkuCitjb25zdGV4cHIgYm9vbCBrRGVmYXVsdFNpZ25l
ZERlbHRhcyA9IGZhbHNlOworY29uc3RleHByIGJvb2wga0RlZmF1bHRWYWx1ZXNPcHRpb25hbCA9
IGZhbHNlOworY29uc3RleHByIHVpbnQ2NF90IGtEZWZhdWx0VmFsdWVXaWR0aEJpdHMgPSA2NDsK
KworLy8gV3JhcCBCaXRCdWZmZXJXcml0ZXIgYW5kIGV4dGVuZCBpdHMgZnVuY3Rpb25hbGl0eSBi
eSAoMSkga2VlcGluZyB0cmFjayBvZgorLy8gdGhlIG51bWJlciBvZiBiaXRzIHdyaXR0ZW4gYW5k
ICgyKSBvd25pbmcgaXRzIGJ1ZmZlci4KK2NsYXNzIEJpdFdyaXRlciBmaW5hbCB7CisgcHVibGlj
OgorICBleHBsaWNpdCBCaXRXcml0ZXIoc2l6ZV90IGJ5dGVfY291bnQpCisgICAgICA6IGJ1ZmZl
cl8oYnl0ZV9jb3VudCwgJ1wwJyksCisgICAgICAgIGJpdF93cml0ZXJfKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KCZidWZmZXJfWzBdKSwgYnVmZmVyXy5zaXplKCkpLAorICAgICAgICB3cml0
dGVuX2JpdHNfKDApLAorICAgICAgICB2YWxpZF8odHJ1ZSkgeworICAgIFJUQ19EQ0hFQ0tfR1Qo
Ynl0ZV9jb3VudCwgMCk7CisgIH0KKworICB2b2lkIFdyaXRlQml0cyh1aW50NjRfdCB2YWwsIHNp
emVfdCBiaXRfY291bnQpIHsKKyAgICBSVENfRENIRUNLKHZhbGlkXyk7CisgICAgY29uc3QgYm9v
bCBzdWNjZXNzID0gYml0X3dyaXRlcl8uV3JpdGVCaXRzKHZhbCwgYml0X2NvdW50KTsKKyAgICBS
VENfRENIRUNLKHN1Y2Nlc3MpOworICAgIHdyaXR0ZW5fYml0c18gKz0gYml0X2NvdW50OworICB9
CisKKyAgdm9pZCBXcml0ZUJpdHMoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0KSB7CisgICAgUlRD
X0RDSEVDSyh2YWxpZF8pOworICAgIGZvciAoc3RkOjpzdHJpbmc6OnZhbHVlX3R5cGUgYyA6IGlu
cHV0KSB7CisgICAgICBXcml0ZUJpdHMoYywgOCAqIHNpemVvZihzdGQ6OnN0cmluZzo6dmFsdWVf
dHlwZSkpOworICAgIH0KKyAgfQorCisgIC8vIFJldHVybnMgZXZlcnl0aGluZyB0aGF0IHdhcyB3
cml0dGVuIHNvIGZhci4KKyAgLy8gTm90aGluZyBtb3JlIG1heSBiZSB3cml0dGVuIGFmdGVyIHRo
aXMgaXMgY2FsbGVkLgorICBzdGQ6OnN0cmluZyBHZXRTdHJpbmcoKSB7CisgICAgUlRDX0RDSEVD
Syh2YWxpZF8pOworICAgIHZhbGlkXyA9IGZhbHNlOworCisgICAgYnVmZmVyXy5yZXNpemUoQml0
c1RvQnl0ZXMod3JpdHRlbl9iaXRzXykpOworICAgIHdyaXR0ZW5fYml0c18gPSAwOworCisgICAg
c3RkOjpzdHJpbmcgcmVzdWx0OworICAgIHN0ZDo6c3dhcChidWZmZXJfLCByZXN1bHQpOworICAg
IHJldHVybiByZXN1bHQ7CisgIH0KKworIHByaXZhdGU6CisgIHN0ZDo6c3RyaW5nIGJ1ZmZlcl87
CisgIHJ0Yzo6Qml0QnVmZmVyV3JpdGVyIGJpdF93cml0ZXJfOworICAvLyBOb3RlOiBDb3VudGlu
ZyBiaXRzIGluc3RlYWQgb2YgYnl0ZXMgd3JhcHMgYXJvdW5kIGVhcmxpZXIgdGhhbiBpdCBoYXMg
dG8sCisgIC8vIHdoaWNoIG1lYW5zIHRoZSBtYXhpbXVtIGxlbmd0aCBpcyBsb3dlciB0aGFuIGl0
IGNvdWxkIGJlLiBXZSBkb24ndCBleHBlY3QKKyAgLy8gdG8gZ28gYW55d2hlcmUgbmVhciB0aGUg
bGltaXQsIHRob3VnaCwgc28gdGhpcyBpcyBnb29kIGVub3VnaC4KKyAgc2l6ZV90IHdyaXR0ZW5f
Yml0c187CisgIGJvb2wgdmFsaWRfOworCisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04o
Qml0V3JpdGVyKTsKK307CisKKy8vIFBhcmFtZXRlcnMgZm9yIGZpeGVkLXNpemUgZGVsdGEtZW5j
b2RpbmcvZGVjb2RpbmcuCisvLyBUaGVzZSBhcmUgdGFpbG9yZWQgZm9yIHRoZSBzZXF1ZW5jZSB3
aGljaCB3aWxsIGJlIGVuY29kZWQgKGUuZy4gd2lkdGhzKS4KK2NsYXNzIEZpeGVkTGVuZ3RoRW5j
b2RpbmdQYXJhbWV0ZXJzIGZpbmFsIHsKKyBwdWJsaWM6CisgIHN0YXRpYyBib29sIFZhbGlkUGFy
YW1ldGVycyh1aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBzaWduZWRfZGVsdGFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCB2YWx1ZXNfb3B0aW9uYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50NjRfdCB2YWx1ZV93aWR0aF9iaXRzKSB7CisgICAgcmV0dXJuICgxIDw9IGRlbHRhX3dpZHRo
X2JpdHMgJiYgZGVsdGFfd2lkdGhfYml0cyA8PSA2NCAmJgorICAgICAgICAgICAgMSA8PSB2YWx1
ZV93aWR0aF9iaXRzICYmIHZhbHVlX3dpZHRoX2JpdHMgPD0gNjQgJiYKKyAgICAgICAgICAgIGRl
bHRhX3dpZHRoX2JpdHMgPD0gdmFsdWVfd2lkdGhfYml0cyk7CisgIH0KKworICBGaXhlZExlbmd0
aEVuY29kaW5nUGFyYW1ldGVycyh1aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHNpZ25lZF9kZWx0YXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgdmFsdWVzX29wdGlvbmFsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWx1ZV93aWR0aF9iaXRzKQorICAgICAgOiBkZWx0
YV93aWR0aF9iaXRzXyhkZWx0YV93aWR0aF9iaXRzKSwKKyAgICAgICAgc2lnbmVkX2RlbHRhc18o
c2lnbmVkX2RlbHRhcyksCisgICAgICAgIHZhbHVlc19vcHRpb25hbF8odmFsdWVzX29wdGlvbmFs
KSwKKyAgICAgICAgdmFsdWVfd2lkdGhfYml0c18odmFsdWVfd2lkdGhfYml0cyksCisgICAgICAg
IGRlbHRhX21hc2tfKE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKGRlbHRhX3dpZHRoX2JpdHNf
KSksCisgICAgICAgIHZhbHVlX21hc2tfKE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKHZhbHVl
X3dpZHRoX2JpdHNfKSkgeworICAgIFJUQ19EQ0hFQ0soVmFsaWRQYXJhbWV0ZXJzKGRlbHRhX3dp
ZHRoX2JpdHMsIHNpZ25lZF9kZWx0YXMsIHZhbHVlc19vcHRpb25hbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZV93aWR0aF9iaXRzKSk7CisgIH0KKworICAvLyBOdW1iZXIg
b2YgYml0cyBuZWNlc3NhcnkgdG8gaG9sZCB0aGUgd2lkZXN0KCopIG9mIHRoZSBkZWx0YXMgYmV0
d2VlbiB0aGUKKyAgLy8gdmFsdWVzIGluIHRoZSBzZXF1ZW5jZS4KKyAgLy8gKCopIC0gV2lkZXN0
IG1pZ2h0IG5vdCBiZSB0aGUgbGFyZ2VzdCwgaWYgc2lnbmVkIGRlbHRhcyBhcmUgdXNlZC4KKyAg
dWludDY0X3QgZGVsdGFfd2lkdGhfYml0cygpIGNvbnN0IHsgcmV0dXJuIGRlbHRhX3dpZHRoX2Jp
dHNfOyB9CisKKyAgLy8gV2hldGhlciBkZWx0YXMgYXJlIHNpZ25lZC4KKyAgYm9vbCBzaWduZWRf
ZGVsdGFzKCkgY29uc3QgeyByZXR1cm4gc2lnbmVkX2RlbHRhc187IH0KKworICAvLyBXaGV0aGVy
IHRoZSB2YWx1ZXMgb2YgdGhlIHNlcXVlbmNlIGFyZSBvcHRpb25hbC4gVGhhdCBpcywgaXQgbWF5
IGJlCisgIC8vIHRoYXQgc29tZSBvZiB0aGVtIGRvIG5vdCBoYXZlIGEgdmFsdWUgKG5vdCBldmVu
IGEgc2VudGluZWwgdmFsdWUgaW5kaWNhdGluZworICAvLyBpbnZhbGlkaXR5KS4KKyAgYm9vbCB2
YWx1ZXNfb3B0aW9uYWwoKSBjb25zdCB7IHJldHVybiB2YWx1ZXNfb3B0aW9uYWxfOyB9CisKKyAg
Ly8gTnVtYmVyIG9mIGJpdHMgbmVjZXNzYXJ5IHRvIGhvbGQgdGhlIGxhcmdlc3QgdmFsdWUgaW4g
dGhlIHNlcXVlbmNlLgorICB1aW50NjRfdCB2YWx1ZV93aWR0aF9iaXRzKCkgY29uc3QgeyByZXR1
cm4gdmFsdWVfd2lkdGhfYml0c187IH0KKworICAvLyBNYXNrcyB3aGVyZSBvbmx5IHRoZSBiaXRz
IHJlbGV2YW50IHRvIHRoZSBkZWx0YXMvdmFsdWVzIGFyZSB0dXJuZWQgb24uCisgIHVpbnQ2NF90
IGRlbHRhX21hc2soKSBjb25zdCB7IHJldHVybiBkZWx0YV9tYXNrXzsgfQorICB1aW50NjRfdCB2
YWx1ZV9tYXNrKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfbWFza187IH0KKworICB2b2lkIFNldFNp
Z25lZERlbHRhcyhib29sIHNpZ25lZF9kZWx0YXMpIHsgc2lnbmVkX2RlbHRhc18gPSBzaWduZWRf
ZGVsdGFzOyB9CisgIHZvaWQgU2V0RGVsdGFXaWR0aEJpdHModWludDY0X3QgZGVsdGFfd2lkdGhf
Yml0cykgeworICAgIGRlbHRhX3dpZHRoX2JpdHNfID0gZGVsdGFfd2lkdGhfYml0czsKKyAgICBk
ZWx0YV9tYXNrXyA9IE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKGRlbHRhX3dpZHRoX2JpdHMp
OworICB9CisKKyBwcml2YXRlOgorICB1aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzXzsgIC8vIE5v
cm1hbGx5IGNvbnN0LCBidXQgbXV0YWJsZSBpbiB0ZXN0cy4KKyAgYm9vbCBzaWduZWRfZGVsdGFz
XzsgICAgICAgICAvLyBOb3JtYWxseSBjb25zdCwgYnV0IG11dGFibGUgaW4gdGVzdHMuCisgIGNv
bnN0IGJvb2wgdmFsdWVzX29wdGlvbmFsXzsKKyAgY29uc3QgdWludDY0X3QgdmFsdWVfd2lkdGhf
Yml0c187CisKKyAgdWludDY0X3QgZGVsdGFfbWFza187ICAvLyBOb3JtYWxseSBjb25zdCwgYnV0
IG11dGFibGUgaW4gdGVzdHMuCisgIGNvbnN0IHVpbnQ2NF90IHZhbHVlX21hc2tfOworfTsKKwor
Ly8gUGVyZm9ybXMgZGVsdGEtZW5jb2Rpbmcgb2YgYSBzaW5nbGUgKG5vbi1lbXB0eSkgc2VxdWVu
Y2Ugb2YgdmFsdWVzLCB1c2luZworLy8gYW4gZW5jb2Rpbmcgd2hlcmUgYWxsIGRlbHRhcyBhcmUg
ZW5jb2RlZCB1c2luZyB0aGUgc2FtZSBudW1iZXIgb2YgYml0cy4KKy8vIChXaXRoIHRoZSBleGNl
cHRpb24gb2Ygb3B0aW9uYWwgZWxlbWVudHM7IHRob3NlIGFyZSBlbmNvZGVkIGFzIGEgYml0IHZl
Y3RvcgorLy8gd2l0aCBvbmUgYml0IHBlciBlbGVtZW50LCBwbHVzIGEgZml4ZWQgbnVtYmVyIG9m
IGJpdHMgZm9yIGV2ZXJ5IGVsZW1lbnQgdGhhdAorLy8gaGFzIGEgdmFsdWUuKQorY2xhc3MgRml4
ZWRMZW5ndGhEZWx0YUVuY29kZXIgZmluYWwgeworIHB1YmxpYzoKKyAgLy8gU2VlIHdlYnJ0Yzo6
RW5jb2RlRGVsdGFzKCkgZm9yIGdlbmVyYWwgZGV0YWlscy4KKyAgLy8gVGhpcyBmdW5jdGlvbiBy
ZXR1cm4gYSBiaXQgcGF0dGVybiB0aGF0IHdvdWxkIGFsbG93IHRoZSBkZWNvZGVyIHRvCisgIC8v
IGRldGVybWluZSB3aGV0aGVyIGl0IHdhcyBwcm9kdWNlZCBieSBGaXhlZExlbmd0aERlbHRhRW5j
b2RlciwgYW5kIGNhbgorICAvLyB0aGVyZWZvcmUgYmUgZGVjb2RlZCBieSBGaXhlZExlbmd0aERl
bHRhRGVjb2Rlciwgb3Igd2hldGhlciBpdCB3YXMgcHJvZHVjZWQKKyAgLy8gYnkgYSBkaWZmZXJl
bnQgZW5jb2Rlci4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEVuY29kZURlbHRhcygKKyAgICAgIGFi
c2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJz
bDo6b3B0aW9uYWw8dWludDY0X3Q+PiYgdmFsdWVzKTsKKworIHByaXZhdGU6CisgIC8vIENhbGN1
bGF0ZSBtaW4vbWF4IHZhbHVlcyBvZiB1bnNpZ25lZC9zaWduZWQgZGVsdGFzLCBnaXZlbiB0aGUg
Yml0IHdpZHRoCisgIC8vIG9mIGFsbCB0aGUgdmFsdWVzIGluIHRoZSBzZXJpZXMuCisgIHN0YXRp
YyB2b2lkIENhbGN1bGF0ZU1pbkFuZE1heERlbHRhcygKKyAgICAgIGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90PiBiYXNlLAorICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+PiYgdmFsdWVzLAorICAgICAgdWludDY0X3QgYml0X3dpZHRoLAorICAgICAgdWludDY0
X3QqIG1heF91bnNpZ25lZF9kZWx0YSwKKyAgICAgIHVpbnQ2NF90KiBtYXhfcG9zX3NpZ25lZF9k
ZWx0YSwKKyAgICAgIHVpbnQ2NF90KiBtaW5fbmVnX3NpZ25lZF9kZWx0YSk7CisKKyAgLy8gTm8g
ZWZmZWN0IG91dHNpZGUgb2YgdW5pdCB0ZXN0cy4KKyAgLy8gSW4gdW5pdCB0ZXN0cywgbWF5IGxl
YWQgdG8gZm9yY2luZyBzaWduZWQvdW5zaWduZWQgZGVsdGFzLCBldGMuCisgIHN0YXRpYyB2b2lk
IENvbnNpZGVyVGVzdE92ZXJyaWRlcyhGaXhlZExlbmd0aEVuY29kaW5nUGFyYW1ldGVycyogcGFy
YW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGVsdGFf
d2lkdGhfYml0c19zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50NjRfdCBkZWx0YV93aWR0aF9iaXRzX3Vuc2lnbmVkKTsKKworICAvLyBGaXhlZExlbmd0aERl
bHRhRW5jb2RlciBvYmplY3RzIGFyZSB0byBiZSBjcmVhdGVkIGJ5IEVuY29kZURlbHRhcygpIGFu
ZAorICAvLyByZWxlYXNlZCBieSBpdCBiZWZvcmUgaXQgcmV0dXJucy4gVGhleSdyZSBtb3N0bHkg
YSBjb252ZW5pZW50IHdheSB0bworICAvLyBhdm9pZCBoYXZpbmcgdG8gcGFzcyBhIGxvdCBvZiBz
dGF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBmdW5jdGlvbnMuCisgIC8vIFRoZXJlZm9yZSwgaXQgd2Fz
IGRlZW1lZCBhY2NlcHRhYmxlIHRvIGxldCB0aGVtIGhhdmUgYSByZWZlcmVuY2UgdG8KKyAgLy8g
fHZhbHVlc3wsIHdob3NlIGxpZmV0aW1lIG11c3QgZXhjZWVkIHRoZSBsaWZldGltZSBvZiB8dGhp
c3wuCisgIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyKGNvbnN0IEZpeGVkTGVuZ3RoRW5jb2RpbmdQ
YXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90PiBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+JiB2YWx1ZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBleGlzdGVudF92YWx1ZXNfY291bnQpOworCisgIC8vIFBlcmZv
cm0gZGVsdGEtZW5jb2RpbmcgdXNpbmcgdGhlIHBhcmFtZXRlcnMgZ2l2ZW4gdG8gdGhlIGN0b3Ig
b24gdGhlCisgIC8vIHNlcXVlbmNlIG9mIHZhbHVlcyBnaXZlbiB0byB0aGUgY3Rvci4KKyAgc3Rk
OjpzdHJpbmcgRW5jb2RlKCk7CisKKyAgLy8gRXhhY3QgbGVuZ3Rocy4KKyAgc2l6ZV90IE91dHB1
dExlbmd0aEJ5dGVzKHNpemVfdCBleGlzdGVudF92YWx1ZXNfY291bnQpIGNvbnN0OworICBzaXpl
X3QgSGVhZGVyTGVuZ3RoQml0cygpIGNvbnN0OworICBzaXplX3QgRW5jb2RlZERlbHRhc0xlbmd0
aEJpdHMoc2l6ZV90IGV4aXN0ZW50X3ZhbHVlc19jb3VudCkgY29uc3Q7CisKKyAgLy8gRW5jb2Rl
IHRoZSBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIGludG8gdGhlIHN0cmVhbS4KKyAgdm9pZCBFbmNv
ZGVIZWFkZXIoKTsKKworICAvLyBFbmNvZGUgYSBnaXZlbiBkZWx0YSBpbnRvIHRoZSBzdHJlYW0u
CisgIHZvaWQgRW5jb2RlRGVsdGEodWludDY0X3QgcHJldmlvdXMsIHVpbnQ2NF90IGN1cnJlbnQp
OworICB2b2lkIEVuY29kZVVuc2lnbmVkRGVsdGEodWludDY0X3QgcHJldmlvdXMsIHVpbnQ2NF90
IGN1cnJlbnQpOworICB2b2lkIEVuY29kZVNpZ25lZERlbHRhKHVpbnQ2NF90IHByZXZpb3VzLCB1
aW50NjRfdCBjdXJyZW50KTsKKworICAvLyBUaGUgcGFyYW1ldGVycyBhY2NvcmRpbmcgdG8gd2hp
Y2ggZW5jb2Rpbmcgd2lsbCBiZSBkb25lICh3aWR0aCBvZgorICAvLyBmaWVsZHMsIHdoZXRoZXIg
c2lnbmVkIGRlbHRhcyBzaG91bGQgYmUgdXNlZCwgZXRjLikKKyAgY29uc3QgRml4ZWRMZW5ndGhF
bmNvZGluZ1BhcmFtZXRlcnMgcGFyYW1zXzsKKworICAvLyBUaGUgZW5jb2Rpbmcgc2NoZW1lIGFz
c3VtZXMgdGhhdCBhdCBsZWFzdCBvbmUgdmFsdWUgaXMgdHJhbnNtaXR0ZWQgT09CLAorICAvLyBz
byB0aGF0IHRoZSBmaXJzdCB2YWx1ZSBjYW4gYmUgZW5jb2RlZCBhcyBhIGRlbHRhIGZyb20gdGhh
dCBPT0IgdmFsdWUsCisgIC8vIHdoaWNoIGlzIHxiYXNlX3wuCisgIGNvbnN0IGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90PiBiYXNlXzsKKworICAvLyBUaGUgdmFsdWVzIHRvIGJlIGVuY29kZWQuCisg
IC8vIE5vdGU6IFRoaXMgaXMgYSBub24tb3duaW5nIHJlZmVyZW5jZS4gU2VlIGNvbW1lbnQgYWJv
dmUgY3RvciBmb3IgZGV0YWlscy4KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+PiYgdmFsdWVzXzsKKworICAvLyBCdWZmZXIgaW50byB3aGljaCBlbmNvZGVkIHZh
bHVlcyB3aWxsIGJlIHdyaXR0ZW4uCisgIC8vIFRoaXMgaXMgY3JlYXRlZCBkeW5taWNhbGx5IGFz
IGEgd2F5IHRvIGVuZm9yY2UgdGhhdCB0aGUgcmVzdCBvZiB0aGUKKyAgLy8gY3RvciBoYXMgZmlu
aXNoZWQgcnVubmluZyB3aGVuIHRoaXMgaXMgY29uc3RydWN0ZWQsIHNvIHRoYXQgdGhlIGxvd2Vy
CisgIC8vIGJvdW5kIG9uIHRoZSBidWZmZXIgc2l6ZSB3b3VsZCBiZSBndWFyYW50ZWVkIGNvcnJl
Y3QuCisgIHN0ZDo6dW5pcXVlX3B0cjxCaXRXcml0ZXI+IHdyaXRlcl87CisKKyAgUlRDX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihGaXhlZExlbmd0aERlbHRhRW5jb2Rlcik7Cit9OworCisvLyBU
T0RPKGVsYWRhbG9uKTogUmVkdWNlIHRoZSBudW1iZXIgb2YgcGFzc2VzLgorc3RkOjpzdHJpbmcg
Rml4ZWRMZW5ndGhEZWx0YUVuY29kZXI6OkVuY29kZURlbHRhcygKKyAgICBhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4gYmFzZSwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4+JiB2YWx1ZXMpIHsKKyAgUlRDX0RDSEVDSyghdmFsdWVzLmVtcHR5KCkpOworCisg
IC8vIEFzIGEgc3BlY2lhbCBjYXNlLCBpZiBhbGwgb2YgdGhlIGVsZW1lbnRzIGFyZSBpZGVudGlj
YWwgdG8gdGhlIGJhc2UsCisgIC8vIChpbmNsdWRpbmcsIGZvciBvcHRpb25hbCBmaWVsZHMsIGFi
b3V0IHRoZWlyIGV4aXN0ZW5jZS9ub24tZXhpc3RlbmNlKSwKKyAgLy8gdGhlIGVtcHR5IHN0cmlu
ZyBpcyB1c2VkIHRvIHNpZ25hbCB0aGF0LgorICBpZiAoc3RkOjphbGxfb2YoCisgICAgICAgICAg
dmFsdWVzLmNiZWdpbigpLCB2YWx1ZXMuY2VuZCgpLAorICAgICAgICAgIFtiYXNlXShhYnNsOjpv
cHRpb25hbDx1aW50NjRfdD4gdmFsKSB7IHJldHVybiB2YWwgPT0gYmFzZTsgfSkpIHsKKyAgICBy
ZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAgfQorCisgIGJvb2wgbm9uX2RlY3JlYXNpbmcgPSB0cnVl
OworICB1aW50NjRfdCBtYXhfdmFsdWVfaW5jbHVkaW5nX2Jhc2UgPSBiYXNlLnZhbHVlX29yKDB1
KTsKKyAgc2l6ZV90IGV4aXN0ZW50X3ZhbHVlc19jb3VudCA9IDA7CisgIHsKKyAgICB1aW50NjRf
dCBwcmV2aW91cyA9IGJhc2UudmFsdWVfb3IoMHUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgICBpZiAoIXZhbHVlc1tpXS5oYXNfdmFsdWUo
KSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgICsrZXhpc3RlbnRfdmFsdWVz
X2NvdW50OworICAgICAgbm9uX2RlY3JlYXNpbmcgJj0gKHByZXZpb3VzIDw9IHZhbHVlc1tpXS52
YWx1ZSgpKTsKKyAgICAgIG1heF92YWx1ZV9pbmNsdWRpbmdfYmFzZSA9CisgICAgICAgICAgc3Rk
OjptYXgobWF4X3ZhbHVlX2luY2x1ZGluZ19iYXNlLCB2YWx1ZXNbaV0udmFsdWUoKSk7CisgICAg
ICBwcmV2aW91cyA9IHZhbHVlc1tpXS52YWx1ZSgpOworICAgIH0KKyAgfQorCisgIC8vIElmIHRo
ZSBzZXF1ZW5jZSBpcyBub24tZGVjcmVhc2luZywgaXQgbWF5IGJlIGFzc3VtZWQgdG8gaGF2ZSB3
aWR0aCA9IDY0OworICAvLyB0aGVyZSdzIG5vIHJlYXNvbiB0byBlbmNvZGUgdGhlIGFjdHVhbCBt
YXggd2lkdGggaW4gdGhlIGVuY29kaW5nIGhlYWRlci4KKyAgY29uc3QgdWludDY0X3QgdmFsdWVf
d2lkdGhfYml0cyA9CisgICAgICBub25fZGVjcmVhc2luZyA/IDY0IDogVW5zaWduZWRCaXRXaWR0
aChtYXhfdmFsdWVfaW5jbHVkaW5nX2Jhc2UpOworCisgIHVpbnQ2NF90IG1heF91bnNpZ25lZF9k
ZWx0YTsKKyAgdWludDY0X3QgbWF4X3Bvc19zaWduZWRfZGVsdGE7CisgIHVpbnQ2NF90IG1pbl9u
ZWdfc2lnbmVkX2RlbHRhOworICBDYWxjdWxhdGVNaW5BbmRNYXhEZWx0YXMoYmFzZSwgdmFsdWVz
LCB2YWx1ZV93aWR0aF9iaXRzLCAmbWF4X3Vuc2lnbmVkX2RlbHRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJm1heF9wb3Nfc2lnbmVkX2RlbHRhLCAmbWluX25lZ19zaWduZWRfZGVsdGEp
OworCisgIGNvbnN0IHVpbnQ2NF90IGRlbHRhX3dpZHRoX2JpdHNfdW5zaWduZWQgPQorICAgICAg
VW5zaWduZWRCaXRXaWR0aChtYXhfdW5zaWduZWRfZGVsdGEpOworICBjb25zdCB1aW50NjRfdCBk
ZWx0YV93aWR0aF9iaXRzX3NpZ25lZCA9CisgICAgICBTaWduZWRCaXRXaWR0aChtYXhfcG9zX3Np
Z25lZF9kZWx0YSwgbWluX25lZ19zaWduZWRfZGVsdGEpOworCisgIC8vIE5vdGU6IFByZWZlcmVu
Y2UgZm9yIHVuc2lnbmVkIGlmIHRoZSB0d28gaGF2ZSB0aGUgc2FtZSB3aWR0aCAoZWZmaWNpZW5j
eSkuCisgIGNvbnN0IGJvb2wgc2lnbmVkX2RlbHRhcyA9CisgICAgICBkZWx0YV93aWR0aF9iaXRz
X3NpZ25lZCA8IGRlbHRhX3dpZHRoX2JpdHNfdW5zaWduZWQ7CisgIGNvbnN0IHVpbnQ2NF90IGRl
bHRhX3dpZHRoX2JpdHMgPQorICAgICAgc2lnbmVkX2RlbHRhcyA/IGRlbHRhX3dpZHRoX2JpdHNf
c2lnbmVkIDogZGVsdGFfd2lkdGhfYml0c191bnNpZ25lZDsKKworICBjb25zdCBib29sIHZhbHVl
c19vcHRpb25hbCA9CisgICAgICAhYmFzZS5oYXNfdmFsdWUoKSB8fCAoZXhpc3RlbnRfdmFsdWVz
X2NvdW50IDwgdmFsdWVzLnNpemUoKSk7CisKKyAgRml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRl
cnMgcGFyYW1zKGRlbHRhX3dpZHRoX2JpdHMsIHNpZ25lZF9kZWx0YXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfb3B0aW9uYWwsIHZhbHVlX3dpZHRoX2Jp
dHMpOworCisgIC8vIE5vIGVmZmVjdCBpbiBwcm9kdWN0aW9uLgorICBDb25zaWRlclRlc3RPdmVy
cmlkZXMoJnBhcmFtcywgZGVsdGFfd2lkdGhfYml0c19zaWduZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBkZWx0YV93aWR0aF9iaXRzX3Vuc2lnbmVkKTsKKworICBGaXhlZExlbmd0aERlbHRh
RW5jb2RlciBlbmNvZGVyKHBhcmFtcywgYmFzZSwgdmFsdWVzLCBleGlzdGVudF92YWx1ZXNfY291
bnQpOworICByZXR1cm4gZW5jb2Rlci5FbmNvZGUoKTsKK30KKwordm9pZCBGaXhlZExlbmd0aERl
bHRhRW5jb2Rlcjo6Q2FsY3VsYXRlTWluQW5kTWF4RGVsdGFzKAorICAgIGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90PiBiYXNlLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90Pj4mIHZhbHVlcywKKyAgICB1aW50NjRfdCBiaXRfd2lkdGgsCisgICAgdWludDY0X3Qq
IG1heF91bnNpZ25lZF9kZWx0YV9vdXQsCisgICAgdWludDY0X3QqIG1heF9wb3Nfc2lnbmVkX2Rl
bHRhX291dCwKKyAgICB1aW50NjRfdCogbWluX25lZ19zaWduZWRfZGVsdGFfb3V0KSB7CisgIFJU
Q19EQ0hFQ0soIXZhbHVlcy5lbXB0eSgpKTsKKyAgUlRDX0RDSEVDSyhtYXhfdW5zaWduZWRfZGVs
dGFfb3V0KTsKKyAgUlRDX0RDSEVDSyhtYXhfcG9zX3NpZ25lZF9kZWx0YV9vdXQpOworICBSVENf
RENIRUNLKG1pbl9uZWdfc2lnbmVkX2RlbHRhX291dCk7CisKKyAgY29uc3QgdWludDY0X3QgYml0
X21hc2sgPSBNYXhVbnNpZ25lZFZhbHVlT2ZCaXRXaWR0aChiaXRfd2lkdGgpOworCisgIHVpbnQ2
NF90IG1heF91bnNpZ25lZF9kZWx0YSA9IDA7CisgIHVpbnQ2NF90IG1heF9wb3Nfc2lnbmVkX2Rl
bHRhID0gMDsKKyAgdWludDY0X3QgbWluX25lZ19zaWduZWRfZGVsdGEgPSAwOworCisgIGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90PiBwcmV2ID0gYmFzZTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBpZiAoIXZhbHVlc1tpXS5oYXNfdmFsdWUoKSkg
eworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgaWYgKCFwcmV2Lmhhc192YWx1ZSgpKSB7
CisgICAgICAvLyBJZiB0aGUgYmFzZSBpcyBub24tZXhpc3RlbnQsIHRoZSBmaXJzdCBleGlzdGVu
dCB2YWx1ZSBpcyBlbmNvZGVkIGFzCisgICAgICAvLyBhIHZhcmludCwgcmF0aGVyIHRoYW4gYXMg
YSBkZWx0YS4KKyAgICAgIFJUQ19EQ0hFQ0soIWJhc2UuaGFzX3ZhbHVlKCkpOworICAgICAgcHJl
diA9IHZhbHVlc1tpXTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGNvbnN0IHVpbnQ2
NF90IGN1cnJlbnQgPSB2YWx1ZXNbaV0udmFsdWUoKTsKKworICAgIGNvbnN0IHVpbnQ2NF90IGZv
cndhcmRfZGVsdGEgPSBVbnNpZ25lZERlbHRhKCpwcmV2LCBjdXJyZW50LCBiaXRfbWFzayk7Cisg
ICAgY29uc3QgdWludDY0X3QgYmFja3dhcmRfZGVsdGEgPSBVbnNpZ25lZERlbHRhKGN1cnJlbnQs
ICpwcmV2LCBiaXRfbWFzayk7CisKKyAgICBtYXhfdW5zaWduZWRfZGVsdGEgPSBzdGQ6Om1heCht
YXhfdW5zaWduZWRfZGVsdGEsIGZvcndhcmRfZGVsdGEpOworCisgICAgaWYgKGZvcndhcmRfZGVs
dGEgPCBiYWNrd2FyZF9kZWx0YSkgeworICAgICAgbWF4X3Bvc19zaWduZWRfZGVsdGEgPSBzdGQ6
Om1heChtYXhfcG9zX3NpZ25lZF9kZWx0YSwgZm9yd2FyZF9kZWx0YSk7CisgICAgfSBlbHNlIHsK
KyAgICAgIG1pbl9uZWdfc2lnbmVkX2RlbHRhID0gc3RkOjptYXgobWluX25lZ19zaWduZWRfZGVs
dGEsIGJhY2t3YXJkX2RlbHRhKTsKKyAgICB9CisKKyAgICBwcmV2ID0gY3VycmVudDsKKyAgfQor
CisgICptYXhfdW5zaWduZWRfZGVsdGFfb3V0ID0gbWF4X3Vuc2lnbmVkX2RlbHRhOworICAqbWF4
X3Bvc19zaWduZWRfZGVsdGFfb3V0ID0gbWF4X3Bvc19zaWduZWRfZGVsdGE7CisgICptaW5fbmVn
X3NpZ25lZF9kZWx0YV9vdXQgPSBtaW5fbmVnX3NpZ25lZF9kZWx0YTsKK30KKwordm9pZCBGaXhl
ZExlbmd0aERlbHRhRW5jb2Rlcjo6Q29uc2lkZXJUZXN0T3ZlcnJpZGVzKAorICAgIEZpeGVkTGVu
Z3RoRW5jb2RpbmdQYXJhbWV0ZXJzKiBwYXJhbXMsCisgICAgdWludDY0X3QgZGVsdGFfd2lkdGhf
Yml0c19zaWduZWQsCisgICAgdWludDY0X3QgZGVsdGFfd2lkdGhfYml0c191bnNpZ25lZCkgewor
ICBpZiAoZ19mb3JjZV91bnNpZ25lZF9mb3JfdGVzdGluZykgeworICAgIHBhcmFtcy0+U2V0RGVs
dGFXaWR0aEJpdHMoZGVsdGFfd2lkdGhfYml0c191bnNpZ25lZCk7CisgICAgcGFyYW1zLT5TZXRT
aWduZWREZWx0YXMoZmFsc2UpOworICB9IGVsc2UgaWYgKGdfZm9yY2Vfc2lnbmVkX2Zvcl90ZXN0
aW5nKSB7CisgICAgcGFyYW1zLT5TZXREZWx0YVdpZHRoQml0cyhkZWx0YV93aWR0aF9iaXRzX3Np
Z25lZCk7CisgICAgcGFyYW1zLT5TZXRTaWduZWREZWx0YXModHJ1ZSk7CisgIH0gZWxzZSB7Cisg
ICAgLy8gVW5jaGFuZ2VkLgorICB9Cit9CisKK0ZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpGaXhl
ZExlbmd0aERlbHRhRW5jb2RlcigKKyAgICBjb25zdCBGaXhlZExlbmd0aEVuY29kaW5nUGFyYW1l
dGVycyYgcGFyYW1zLAorICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4mIHZhbHVlcywKKyAgICBz
aXplX3QgZXhpc3RlbnRfdmFsdWVzX2NvdW50KQorICAgIDogcGFyYW1zXyhwYXJhbXMpLCBiYXNl
XyhiYXNlKSwgdmFsdWVzXyh2YWx1ZXMpIHsKKyAgUlRDX0RDSEVDSyghdmFsdWVzXy5lbXB0eSgp
KTsKKyAgd3JpdGVyXyA9CisgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxCaXRXcml0ZXI+KE91dHB1
dExlbmd0aEJ5dGVzKGV4aXN0ZW50X3ZhbHVlc19jb3VudCkpOworfQorCitzdGQ6OnN0cmluZyBG
aXhlZExlbmd0aERlbHRhRW5jb2Rlcjo6RW5jb2RlKCkgeworICBFbmNvZGVIZWFkZXIoKTsKKwor
ICBpZiAocGFyYW1zXy52YWx1ZXNfb3B0aW9uYWwoKSkgeworICAgIC8vIEVuY29kZSB3aGljaCB2
YWx1ZXMgZXhpc3QgYW5kIHdoaWNoIGRvbid0LgorICAgIGZvciAoYWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHZhbHVlIDogdmFsdWVzXykgeworICAgICAgd3JpdGVyXy0+V3JpdGVCaXRzKHZhbHVl
Lmhhc192YWx1ZSgpID8gMXUgOiAwdSwgMSk7CisgICAgfQorICB9CisKKyAgYWJzbDo6b3B0aW9u
YWw8dWludDY0X3Q+IHByZXZpb3VzID0gYmFzZV87CisgIGZvciAoYWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHZhbHVlIDogdmFsdWVzXykgeworICAgIGlmICghdmFsdWUuaGFzX3ZhbHVlKCkpIHsK
KyAgICAgIFJUQ19EQ0hFQ0socGFyYW1zXy52YWx1ZXNfb3B0aW9uYWwoKSk7CisgICAgICBjb250
aW51ZTsKKyAgICB9CisKKyAgICBpZiAoIXByZXZpb3VzLmhhc192YWx1ZSgpKSB7CisgICAgICAv
LyBJZiB0aGUgYmFzZSBpcyBub24tZXhpc3RlbnQsIHRoZSBmaXJzdCBleGlzdGVudCB2YWx1ZSBp
cyBlbmNvZGVkIGFzCisgICAgICAvLyBhIHZhcmludCwgcmF0aGVyIHRoYW4gYXMgYSBkZWx0YS4K
KyAgICAgIFJUQ19EQ0hFQ0soIWJhc2VfLmhhc192YWx1ZSgpKTsKKyAgICAgIHdyaXRlcl8tPldy
aXRlQml0cyhFbmNvZGVWYXJJbnQodmFsdWUudmFsdWUoKSkpOworICAgIH0gZWxzZSB7CisgICAg
ICBFbmNvZGVEZWx0YShwcmV2aW91cy52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpKTsKKyAgICB9CisK
KyAgICBwcmV2aW91cyA9IHZhbHVlOworICB9CisKKyAgcmV0dXJuIHdyaXRlcl8tPkdldFN0cmlu
ZygpOworfQorCitzaXplX3QgRml4ZWRMZW5ndGhEZWx0YUVuY29kZXI6Ok91dHB1dExlbmd0aEJ5
dGVzKAorICAgIHNpemVfdCBleGlzdGVudF92YWx1ZXNfY291bnQpIGNvbnN0IHsKKyAgcmV0dXJu
IEJpdHNUb0J5dGVzKEhlYWRlckxlbmd0aEJpdHMoKSArCisgICAgICAgICAgICAgICAgICAgICBF
bmNvZGVkRGVsdGFzTGVuZ3RoQml0cyhleGlzdGVudF92YWx1ZXNfY291bnQpKTsKK30KKworc2l6
ZV90IEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpIZWFkZXJMZW5ndGhCaXRzKCkgY29uc3Qgewor
ICBpZiAocGFyYW1zXy5zaWduZWRfZGVsdGFzKCkgPT0ga0RlZmF1bHRTaWduZWREZWx0YXMgJiYK
KyAgICAgIHBhcmFtc18udmFsdWVzX29wdGlvbmFsKCkgPT0ga0RlZmF1bHRWYWx1ZXNPcHRpb25h
bCAmJgorICAgICAgcGFyYW1zXy52YWx1ZV93aWR0aF9iaXRzKCkgPT0ga0RlZmF1bHRWYWx1ZVdp
ZHRoQml0cykgeworICAgIHJldHVybiBrQml0c0luSGVhZGVyRm9yRW5jb2RpbmdUeXBlICsga0Jp
dHNJbkhlYWRlckZvckRlbHRhV2lkdGhCaXRzOworICB9IGVsc2UgeworICAgIHJldHVybiBrQml0
c0luSGVhZGVyRm9yRW5jb2RpbmdUeXBlICsga0JpdHNJbkhlYWRlckZvckRlbHRhV2lkdGhCaXRz
ICsKKyAgICAgICAgICAga0JpdHNJbkhlYWRlckZvclNpZ25lZERlbHRhcyArIGtCaXRzSW5IZWFk
ZXJGb3JWYWx1ZXNPcHRpb25hbCArCisgICAgICAgICAgIGtCaXRzSW5IZWFkZXJGb3JWYWx1ZVdp
ZHRoQml0czsKKyAgfQorfQorCitzaXplX3QgRml4ZWRMZW5ndGhEZWx0YUVuY29kZXI6OkVuY29k
ZWREZWx0YXNMZW5ndGhCaXRzKAorICAgIHNpemVfdCBleGlzdGVudF92YWx1ZXNfY291bnQpIGNv
bnN0IHsKKyAgaWYgKCFwYXJhbXNfLnZhbHVlc19vcHRpb25hbCgpKSB7CisgICAgcmV0dXJuIHZh
bHVlc18uc2l6ZSgpICogcGFyYW1zXy5kZWx0YV93aWR0aF9iaXRzKCk7CisgIH0gZWxzZSB7Cisg
ICAgUlRDX0RDSEVDS19FUShzdGQ6OmNvdW50X2lmKHZhbHVlc18uYmVnaW4oKSwgdmFsdWVzXy5l
bmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10oYWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+IHZhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB2YWwuaGFzX3ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAor
ICAgICAgICAgICAgICAgICAgZXhpc3RlbnRfdmFsdWVzX2NvdW50KTsKKyAgICAvLyBPbmUgYml0
IGZvciBlYWNoIGRlbHRhLCB0byBpbmRpY2F0ZSBpZiB0aGUgdmFsdWUgZXhpc3RzLCBhbmQgZGVs
dGFfd2lkdGgKKyAgICAvLyBmb3IgZWFjaCBleGlzdGVudCB2YWx1ZSwgdG8gaW5kaWNhdGUgdGhl
IGRlbHRhIGl0c2VsZi4KKyAgICAvLyBJZiBiYXNlXyBpcyBub24tZXhpc3RlbnQsIHRoZSBmaXJz
dCB2YWx1ZSAoaWYgYW55KSBpcyBlbmNvZGVkIGFzIGEgdmFyaW50CisgICAgLy8gcmF0aGVyIHRo
YW4gYXMgYSBkZWx0YS4KKyAgICBjb25zdCBzaXplX3QgZXhpc3RlbmNlX2JpdG1hcF9zaXplX2Jp
dHMgPSAxICogdmFsdWVzXy5zaXplKCk7CisgICAgY29uc3QgYm9vbCBmaXJzdF92YWx1ZV9pc192
YXJpbnQgPQorICAgICAgICAhYmFzZV8uaGFzX3ZhbHVlKCkgJiYgZXhpc3RlbnRfdmFsdWVzX2Nv
dW50ID49IDE7CisgICAgY29uc3Qgc2l6ZV90IGZpcnN0X3ZhbHVlX3ZhcmludF9zaXplX2JpdHMg
PSA4ICoga01heFZhckludExlbmd0aEJ5dGVzOworICAgIGNvbnN0IHNpemVfdCBkZWx0YXNfY291
bnQgPSBleGlzdGVudF92YWx1ZXNfY291bnQgLSBmaXJzdF92YWx1ZV9pc192YXJpbnQ7CisgICAg
Y29uc3Qgc2l6ZV90IGRlbHRhc19zaXplX2JpdHMgPSBkZWx0YXNfY291bnQgKiBwYXJhbXNfLmRl
bHRhX3dpZHRoX2JpdHMoKTsKKyAgICByZXR1cm4gZXhpc3RlbmNlX2JpdG1hcF9zaXplX2JpdHMg
KyBmaXJzdF92YWx1ZV92YXJpbnRfc2l6ZV9iaXRzICsKKyAgICAgICAgICAgZGVsdGFzX3NpemVf
Yml0czsKKyAgfQorfQorCit2b2lkIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpFbmNvZGVIZWFk
ZXIoKSB7CisgIFJUQ19EQ0hFQ0sod3JpdGVyXyk7CisKKyAgY29uc3QgRW5jb2RpbmdUeXBlIGVu
Y29kaW5nX3R5cGUgPQorICAgICAgKHBhcmFtc18udmFsdWVfd2lkdGhfYml0cygpID09IGtEZWZh
dWx0VmFsdWVXaWR0aEJpdHMgJiYKKyAgICAgICBwYXJhbXNfLnNpZ25lZF9kZWx0YXMoKSA9PSBr
RGVmYXVsdFNpZ25lZERlbHRhcyAmJgorICAgICAgIHBhcmFtc18udmFsdWVzX29wdGlvbmFsKCkg
PT0ga0RlZmF1bHRWYWx1ZXNPcHRpb25hbCkKKyAgICAgICAgICA/IEVuY29kaW5nVHlwZTo6a0Zp
eGVkU2l6ZVVuc2lnbmVkRGVsdGFzTm9FYXJseVdyYXBOb09wdAorICAgICAgICAgIDogRW5jb2Rp
bmdUeXBlOjprRml4ZWRTaXplU2lnbmVkRGVsdGFzRWFybHlXcmFwQW5kT3B0U3VwcG9ydGVkOwor
CisgIHdyaXRlcl8tPldyaXRlQml0cyhzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW5jb2RpbmdfdHlw
ZSksCisgICAgICAgICAgICAgICAgICAgICBrQml0c0luSGVhZGVyRm9yRW5jb2RpbmdUeXBlKTsK
KworICAvLyBOb3RlOiBTaW5jZSBpdCdzIG1lYW5pbmdsZXNzIGZvciBhIGZpZWxkIHRvIGJlIG9m
IHdpZHRoIDAsIHdoZW4gaXQgY29tZXMKKyAgLy8gdG8gZmllbGRzIHRoYXQgcmVsYXRlIHdpZHRo
cywgd2UgZW5jb2RlICB3aWR0aCAxIGFzIDAsIHdpZHRoIDIgYXMgMSwKKworICB3cml0ZXJfLT5X
cml0ZUJpdHMocGFyYW1zXy5kZWx0YV93aWR0aF9iaXRzKCkgLSAxLAorICAgICAgICAgICAgICAg
ICAgICAga0JpdHNJbkhlYWRlckZvckRlbHRhV2lkdGhCaXRzKTsKKworICBpZiAoZW5jb2Rpbmdf
dHlwZSA9PSBFbmNvZGluZ1R5cGU6OmtGaXhlZFNpemVVbnNpZ25lZERlbHRhc05vRWFybHlXcmFw
Tm9PcHQpIHsKKyAgICByZXR1cm47CisgIH0KKworICB3cml0ZXJfLT5Xcml0ZUJpdHMoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHBhcmFtc18uc2lnbmVkX2RlbHRhcygpKSwKKyAgICAgICAgICAgICAg
ICAgICAgIGtCaXRzSW5IZWFkZXJGb3JTaWduZWREZWx0YXMpOworICB3cml0ZXJfLT5Xcml0ZUJp
dHMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhcmFtc18udmFsdWVzX29wdGlvbmFsKCkpLAorICAg
ICAgICAgICAgICAgICAgICAga0JpdHNJbkhlYWRlckZvclZhbHVlc09wdGlvbmFsKTsKKyAgd3Jp
dGVyXy0+V3JpdGVCaXRzKHBhcmFtc18udmFsdWVfd2lkdGhfYml0cygpIC0gMSwKKyAgICAgICAg
ICAgICAgICAgICAgIGtCaXRzSW5IZWFkZXJGb3JWYWx1ZVdpZHRoQml0cyk7Cit9CisKK3ZvaWQg
Rml4ZWRMZW5ndGhEZWx0YUVuY29kZXI6OkVuY29kZURlbHRhKHVpbnQ2NF90IHByZXZpb3VzLCB1
aW50NjRfdCBjdXJyZW50KSB7CisgIGlmIChwYXJhbXNfLnNpZ25lZF9kZWx0YXMoKSkgeworICAg
IEVuY29kZVNpZ25lZERlbHRhKHByZXZpb3VzLCBjdXJyZW50KTsKKyAgfSBlbHNlIHsKKyAgICBF
bmNvZGVVbnNpZ25lZERlbHRhKHByZXZpb3VzLCBjdXJyZW50KTsKKyAgfQorfQorCit2b2lkIEZp
eGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpFbmNvZGVVbnNpZ25lZERlbHRhKHVpbnQ2NF90IHByZXZp
b3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50NjRfdCBjdXJyZW50KSB7CisgIFJUQ19EQ0hFQ0sod3JpdGVyXyk7CisgIGNvbnN0IHVpbnQ2
NF90IGRlbHRhID0gVW5zaWduZWREZWx0YShwcmV2aW91cywgY3VycmVudCwgcGFyYW1zXy52YWx1
ZV9tYXNrKCkpOworICB3cml0ZXJfLT5Xcml0ZUJpdHMoZGVsdGEsIHBhcmFtc18uZGVsdGFfd2lk
dGhfYml0cygpKTsKK30KKwordm9pZCBGaXhlZExlbmd0aERlbHRhRW5jb2Rlcjo6RW5jb2RlU2ln
bmVkRGVsdGEodWludDY0X3QgcHJldmlvdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBjdXJyZW50KSB7CisgIFJUQ19EQ0hFQ0sod3Jp
dGVyXyk7CisKKyAgY29uc3QgdWludDY0X3QgZm9yd2FyZF9kZWx0YSA9CisgICAgICBVbnNpZ25l
ZERlbHRhKHByZXZpb3VzLCBjdXJyZW50LCBwYXJhbXNfLnZhbHVlX21hc2soKSk7CisgIGNvbnN0
IHVpbnQ2NF90IGJhY2t3YXJkX2RlbHRhID0KKyAgICAgIFVuc2lnbmVkRGVsdGEoY3VycmVudCwg
cHJldmlvdXMsIHBhcmFtc18udmFsdWVfbWFzaygpKTsKKworICB1aW50NjRfdCBkZWx0YTsKKyAg
aWYgKGZvcndhcmRfZGVsdGEgPD0gYmFja3dhcmRfZGVsdGEpIHsKKyAgICBkZWx0YSA9IGZvcndh
cmRfZGVsdGE7CisgIH0gZWxzZSB7CisgICAgLy8gQ29tcHV0ZSB0aGUgdW5zaWduZWQgcmVwcmVz
ZW50YXRpb24gb2YgYSBuZWdhdGl2ZSBkZWx0YS4KKyAgICAvLyBUaGlzIGlzIHRoZSB0d28ncyBj
b21wbGVtZW50IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbmVnYXRpdmUgdmFsdWUsCisgICAgLy8g
d2hlbiBkZWx0YXMgYXJlIG9mIHdpZHRoIHBhcmFtc18uZGVsdGFfbWFzaygpLgorICAgIFJUQ19E
Q0hFQ0tfR0UocGFyYW1zXy5kZWx0YV9tYXNrKCksIGJhY2t3YXJkX2RlbHRhKTsKKyAgICBSVENf
RENIRUNLX0xUKHBhcmFtc18uZGVsdGFfbWFzaygpIC0gYmFja3dhcmRfZGVsdGEsIHBhcmFtc18u
ZGVsdGFfbWFzaygpKTsKKyAgICBkZWx0YSA9IHBhcmFtc18uZGVsdGFfbWFzaygpIC0gYmFja3dh
cmRfZGVsdGEgKyAxOworICAgIFJUQ19EQ0hFQ0tfTEUoZGVsdGEsIHBhcmFtc18uZGVsdGFfbWFz
aygpKTsKKyAgfQorCisgIHdyaXRlcl8tPldyaXRlQml0cyhkZWx0YSwgcGFyYW1zXy5kZWx0YV93
aWR0aF9iaXRzKCkpOworfQorCisvLyBQZXJmb3JtIGRlY29kaW5nIG9mIGEgYSBkZWx0YS1lbmNv
ZGVkIHN0cmVhbSwgZXh0cmFjdGluZyB0aGUgb3JpZ2luYWwKKy8vIHNlcXVlbmNlIG9mIHZhbHVl
cy4KK2NsYXNzIEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyIGZpbmFsIHsKKyBwdWJsaWM6CisgIC8v
IENoZWNrcyB3aGV0aGVyIEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyIGlzIGEgc3VpdGFibGUgZGVj
b2RlciBmb3IgdGhpcworICAvLyBiaXRzdHJlYW0uIE5vdGUgdGhhdCB0aGlzIGRvZXMgTk9UIGlt
cGx5IHRoYXQgc3RyZWFtIGlzIHZhbGlkLCBhbmQgd2lsbAorICAvLyBiZSBkZWNvZGVkIHN1Y2Nl
c3NmdWxseS4gSXQgRE9FUyBpbXBseSB0aGF0IGFsbCBvdGhlciBkZWNvZGVyIGNsYXNzZXMKKyAg
Ly8gd2lsbCBmYWlsIHRvIGRlY29kZSB0aGlzIGlucHV0LCB0aG91Z2guCisgIHN0YXRpYyBib29s
IElzU3VpdGFibGVEZWNvZGVyRm9yKGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCk7CisKKyAgLy8g
QXNzdW1pbmcgdGhhdCB8aW5wdXR8IGlzIHRoZSByZXN1bHQgb2YgZml4ZWQtc2l6ZSBkZWx0YS1l
bmNvZGluZworICAvLyB0aGF0IHRvb2sgcGxhY2Ugd2l0aCB0aGUgc2FtZSB2YWx1ZSB0byB8YmFz
ZXwgYW5kIG92ZXIgfG51bV9vZl9kZWx0YXN8CisgIC8vIG9yaWdpbmFsIHZhbHVlcywgdGhpcyB3
aWxsIHJldHVybiB0aGUgc2VxdWVuY2Ugb2Ygb3JpZ2luYWwgdmFsdWVzLgorICAvLyBJZiBhbiBl
cnJvciBvY2N1cnMgKGNhbiBoYXBwZW4gaWYgfGlucHV0fCBpcyBjb3JydXB0KSwgYW4gZW1wdHkK
KyAgLy8gdmVjdG9yIHdpbGwgYmUgcmV0dXJuZWQuCisgIHN0YXRpYyBzdGQ6OnZlY3RvcjxhYnNs
OjpvcHRpb25hbDx1aW50NjRfdD4+IERlY29kZURlbHRhcygKKyAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBpbnB1dCwKKyAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgICAg
c2l6ZV90IG51bV9vZl9kZWx0YXMpOworCisgcHJpdmF0ZToKKyAgLy8gUmVhZHMgdGhlIGVuY29k
aW5nIGhlYWRlciBpbiB8aW5wdXR8IGFuZCByZXR1cm5zIGEgRml4ZWRMZW5ndGhEZWx0YURlY29k
ZXIKKyAgLy8gd2l0aCB0aGUgY29ycmVzcG9uZGluZyBjb25maWd1cmF0aW9uLCB0aGF0IGNhbiBi
ZSB1c2VkIHRvIGRlY29kZSB0aGUKKyAgLy8gdmFsdWVzIGluIHxpbnB1dHwuCisgIC8vIElmIHRo
ZSBlbmNvZGluZyBoZWFkZXIgaXMgY29ycnVwdCAoY29udGFpbnMgYW4gaWxsZWdhbCBjb25maWd1
cmF0aW9uKSwKKyAgLy8gbnVsbHB0ciB3aWxsIGJlIHJldHVybmVkLgorICAvLyBXaGVuIGEgdmFs
aWQgRml4ZWRMZW5ndGhEZWx0YURlY29kZXIgaXMgcmV0dXJuZWQsIHRoaXMgZG9lcyBub3QgbWVh
biB0aGF0CisgIC8vIHRoZSBlbnRpcmUgc3RyZWFtIGlzIGZyZWUgb2YgZXJyb3IuIFJhdGhlciwg
b25seSB0aGUgZW5jb2RpbmcgaGVhZGVyIGlzCisgIC8vIGV4YW1pbmVkIGFuZCBndWFyYW50ZWVk
LgorICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyPiBDcmVh
dGUoCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsCisgICAgICBhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4gYmFzZSwKKyAgICAgIHNpemVfdCBudW1fb2ZfZGVsdGFzKTsKKworICAvLyBG
aXhlZExlbmd0aERlbHRhRGVjb2RlciBvYmplY3RzIGFyZSB0byBiZSBjcmVhdGVkIGJ5IERlY29k
ZURlbHRhcygpIGFuZAorICAvLyByZWxlYXNlZCBieSBpdCBiZWZvcmUgaXQgcmV0dXJucy4gVGhl
eSdyZSBtb3N0bHkgYSBjb252ZW5pZW50IHdheSB0bworICAvLyBhdm9pZCBoYXZpbmcgdG8gcGFz
cyBhIGxvdCBvZiBzdGF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBmdW5jdGlvbnMuCisgIC8vIFRoZXJl
Zm9yZSwgaXQgd2FzIGRlZW1lZCBhY2NlcHRhYmxlIHRoYXQgfHJlYWRlcnwgZG9lcyBub3Qgb3du
IHRoZSBidWZmZXIKKyAgLy8gaXQgcmVhZHMsIG1lYW5pbmcgdGhlIGxpZmV0aW1lIG9mIHx0aGlz
fCBtdXN0IG5vdCBleGNlZWQgdGhlIGxpZmV0aW1lCisgIC8vIG9mIHxyZWFkZXJ8J3MgdW5kZXJs
eWluZyBidWZmZXIuCisgIEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyKHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OkJpdEJ1ZmZlcj4gcmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBG
aXhlZExlbmd0aEVuY29kaW5nUGFyYW1ldGVycyYgcGFyYW1zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG51bV9vZl9kZWx0YXMpOworCisgIC8vIFBlcmZvcm0gdGhlIGRlY29k
aW5nIHVzaW5nIHRoZSBwYXJhbWV0ZXJzIGdpdmVuIHRvIHRoZSBjdG9yLgorICBzdGQ6OnZlY3Rv
cjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IERlY29kZSgpOworCisgIC8vIERlY29kZSBhIHZh
cmludCBhbmQgd3JpdGUgaXQgdG8gfG91dHB1dHwuIFJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgc3Vj
Y2VzcworICAvLyBvciBmYWlsdXJlLiBJbiBjYXNlIG9mIGZhaWx1cmUsIG5vIGd1YXJhbnRlZXMg
YXJlIG1hZGUgYWJvdXQgdGhlIGNvbnRlbnRzCisgIC8vIG9mIHxvdXRwdXR8IG9yIHRoZSByZXN1
bHRzIG9mIGFkZGl0aW9uYWwgcmVhZHMuCisgIGJvb2wgUGFyc2VWYXJJbnQodWludDY0X3QqIG91
dHB1dCk7CisKKyAgLy8gQXR0ZW1wdCB0byBwYXJzZSBhIGRlbHRhIGZyb20gdGhlIGlucHV0IHJl
YWRlci4KKyAgLy8gUmV0dXJucyB0cnVlL2ZhbHNlIGZvciBzdWNjZXNzL2ZhaWx1cmUuCisgIC8v
IFdyaXRlcyB0aGUgZGVsdGEgaW50byB8ZGVsdGF8IGlmIHN1Y2Nlc3NmdWwuCisgIGJvb2wgUGFy
c2VEZWx0YSh1aW50NjRfdCogZGVsdGEpOworCisgIC8vIEFkZCB8ZGVsdGF8IHRvIHxiYXNlfCB0
byBwcm9kdWNlIHRoZSBuZXh0IHZhbHVlIGluIGEgc2VxdWVuY2UuCisgIC8vIFRoZSBkZWx0YSBp
cyBhcHBsaWVkIGFzIHNpZ25lZC91bnNpZ25lZCBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMK
KyAgLy8gZ2l2ZW4gdG8gdGhlIGN0b3IuIFdyYXAtYXJvdW5kIGlzIHRha2VuIGludG8gYWNjb3Vu
dCBhY2NvcmRpbmcgdG8gdGhlCisgIC8vIHZhbHVlcycgd2lkdGgsIGFzIHNwZWNpZmllZCBieSB0
aGUgYWZvcmVtZW50aW9uZWQgZW5jb2RpbmcgcGFyYW1ldGVycy4KKyAgdWludDY0X3QgQXBwbHlE
ZWx0YSh1aW50NjRfdCBiYXNlLCB1aW50NjRfdCBkZWx0YSkgY29uc3Q7CisKKyAgLy8gSGVscGVy
cyBmb3IgQXBwbHlEZWx0YSgpLgorICB1aW50NjRfdCBBcHBseVVuc2lnbmVkRGVsdGEodWludDY0
X3QgYmFzZSwgdWludDY0X3QgZGVsdGEpIGNvbnN0OworICB1aW50NjRfdCBBcHBseVNpZ25lZERl
bHRhKHVpbnQ2NF90IGJhc2UsIHVpbnQ2NF90IGRlbHRhKSBjb25zdDsKKworICAvLyBSZWFkZXIg
b2YgdGhlIGlucHV0IHN0cmVhbSB0byBiZSBkZWNvZGVkLiBEb2VzIG5vdCBvd24gdGhhdCBidWZm
ZXIuCisgIC8vIFNlZSBjb21tZW50IGFib3ZlIGN0b3IgZm9yIGRldGFpbHMuCisgIGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxydGM6OkJpdEJ1ZmZlcj4gcmVhZGVyXzsKKworICAvLyBUaGUgcGFyYW1l
dGVycyBhY2NvcmRpbmcgdG8gd2hpY2ggZW5jb2Rpbmcgd2lsbCBiZSBkb25lICh3aWR0aCBvZgor
ICAvLyBmaWVsZHMsIHdoZXRoZXIgc2lnbmVkIGRlbHRhcyBzaG91bGQgYmUgdXNlZCwgZXRjLikK
KyAgY29uc3QgRml4ZWRMZW5ndGhFbmNvZGluZ1BhcmFtZXRlcnMgcGFyYW1zXzsKKworICAvLyBU
aGUgZW5jb2Rpbmcgc2NoZW1lIGFzc3VtZXMgdGhhdCBhdCBsZWFzdCBvbmUgdmFsdWUgaXMgdHJh
bnNtaXR0ZWQgT09CLAorICAvLyBzbyB0aGF0IHRoZSBmaXJzdCB2YWx1ZSBjYW4gYmUgZW5jb2Rl
ZCBhcyBhIGRlbHRhIGZyb20gdGhhdCBPT0IgdmFsdWUsCisgIC8vIHdoaWNoIGlzIHxiYXNlX3wu
CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlXzsKKworICAvLyBUaGUgbnVt
YmVyIG9mIHZhbHVlcyB0byBiZSBrbm93biB0byBiZSBkZWNvZGVkLgorICBjb25zdCBzaXplX3Qg
bnVtX29mX2RlbHRhc187CisKKyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihGaXhlZExl
bmd0aERlbHRhRGVjb2Rlcik7Cit9OworCitib29sIEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpJ
c1N1aXRhYmxlRGVjb2RlckZvcihjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQpIHsKKyAgaWYgKGlu
cHV0Lmxlbmd0aCgpIDwga0JpdHNJbkhlYWRlckZvckVuY29kaW5nVHlwZSkgeworICAgIHJldHVy
biBmYWxzZTsKKyAgfQorCisgIHJ0Yzo6Qml0QnVmZmVyIHJlYWRlcihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPigmaW5wdXRbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAga0Jp
dHNJbkhlYWRlckZvckVuY29kaW5nVHlwZSk7CisKKyAgdWludDMyX3QgZW5jb2RpbmdfdHlwZV9i
aXRzOworICBjb25zdCBib29sIHJlc3VsdCA9CisgICAgICByZWFkZXIuUmVhZEJpdHMoJmVuY29k
aW5nX3R5cGVfYml0cywga0JpdHNJbkhlYWRlckZvckVuY29kaW5nVHlwZSk7CisgIFJUQ19EQ0hF
Q0socmVzdWx0KTsKKworICBjb25zdCBhdXRvIGVuY29kaW5nX3R5cGUgPSBzdGF0aWNfY2FzdDxF
bmNvZGluZ1R5cGU+KGVuY29kaW5nX3R5cGVfYml0cyk7CisgIHJldHVybiBlbmNvZGluZ190eXBl
ID09CisgICAgICAgICAgICAgRW5jb2RpbmdUeXBlOjprRml4ZWRTaXplVW5zaWduZWREZWx0YXNO
b0Vhcmx5V3JhcE5vT3B0IHx8CisgICAgICAgICBlbmNvZGluZ190eXBlID09CisgICAgICAgICAg
ICAgRW5jb2RpbmdUeXBlOjprRml4ZWRTaXplU2lnbmVkRGVsdGFzRWFybHlXcmFwQW5kT3B0U3Vw
cG9ydGVkOworfQorCitzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IEZpeGVk
TGVuZ3RoRGVsdGFEZWNvZGVyOjpEZWNvZGVEZWx0YXMoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGlucHV0LAorICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgIHNpemVfdCBu
dW1fb2ZfZGVsdGFzKSB7CisgIGF1dG8gZGVjb2RlciA9IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVy
OjpDcmVhdGUoaW5wdXQsIGJhc2UsIG51bV9vZl9kZWx0YXMpOworICBpZiAoIWRlY29kZXIpIHsK
KyAgICByZXR1cm4gc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PigpOworICB9
CisKKyAgcmV0dXJuIGRlY29kZXItPkRlY29kZSgpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Rml4
ZWRMZW5ndGhEZWx0YURlY29kZXI+IEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpDcmVhdGUoCisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LAorICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
PiBiYXNlLAorICAgIHNpemVfdCBudW1fb2ZfZGVsdGFzKSB7CisgIGlmIChpbnB1dC5sZW5ndGgo
KSA8IGtCaXRzSW5IZWFkZXJGb3JFbmNvZGluZ1R5cGUpIHsKKyAgICByZXR1cm4gbnVsbHB0cjsK
KyAgfQorCisgIGF1dG8gcmVhZGVyID0gYWJzbDo6bWFrZV91bmlxdWU8cnRjOjpCaXRCdWZmZXI+
KAorICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJmlucHV0WzBdKSwgaW5w
dXQubGVuZ3RoKCkpOworCisgIC8vIEVuY29kaW5nIHR5cGUKKyAgdWludDMyX3QgZW5jb2Rpbmdf
dHlwZV9iaXRzOworICBjb25zdCBib29sIHJlc3VsdCA9CisgICAgICByZWFkZXItPlJlYWRCaXRz
KCZlbmNvZGluZ190eXBlX2JpdHMsIGtCaXRzSW5IZWFkZXJGb3JFbmNvZGluZ1R5cGUpOworICBS
VENfRENIRUNLKHJlc3VsdCk7CisgIGNvbnN0IEVuY29kaW5nVHlwZSBlbmNvZGluZyA9IHN0YXRp
Y19jYXN0PEVuY29kaW5nVHlwZT4oZW5jb2RpbmdfdHlwZV9iaXRzKTsKKyAgaWYgKGVuY29kaW5n
ICE9IEVuY29kaW5nVHlwZTo6a0ZpeGVkU2l6ZVVuc2lnbmVkRGVsdGFzTm9FYXJseVdyYXBOb09w
dCAmJgorICAgICAgZW5jb2RpbmcgIT0KKyAgICAgICAgICBFbmNvZGluZ1R5cGU6OmtGaXhlZFNp
emVTaWduZWREZWx0YXNFYXJseVdyYXBBbmRPcHRTdXBwb3J0ZWQpIHsKKyAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJVbnJlY29nbml6ZWQgZW5jb2RpbmcgdHlwZS4iOworICAgIHJldHVybiBu
dWxscHRyOworICB9CisKKyAgdWludDMyX3QgcmVhZF9idWZmZXI7CisKKyAgLy8gZGVsdGFfd2lk
dGhfYml0cworICBpZiAoIXJlYWRlci0+UmVhZEJpdHMoJnJlYWRfYnVmZmVyLCBrQml0c0luSGVh
ZGVyRm9yRGVsdGFXaWR0aEJpdHMpKSB7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKyAgUlRD
X0RDSEVDS19MRShyZWFkX2J1ZmZlciwgNjQgLSAxKTsgIC8vIFNlZSBlbmNvZGluZyBmb3IgLTEn
cyByYXRpb25hbGUuCisgIGNvbnN0IHVpbnQ2NF90IGRlbHRhX3dpZHRoX2JpdHMgPQorICAgICAg
cmVhZF9idWZmZXIgKyAxOyAgLy8gU2VlIGVuY29kaW5nIGZvciArMSdzIHJhdGlvbmFsZS4KKwor
ICAvLyBzaWduZWRfZGVsdGFzLCB2YWx1ZXNfb3B0aW9uYWwsIHZhbHVlX3dpZHRoX2JpdHMKKyAg
Ym9vbCBzaWduZWRfZGVsdGFzOworICBib29sIHZhbHVlc19vcHRpb25hbDsKKyAgdWludDY0X3Qg
dmFsdWVfd2lkdGhfYml0czsKKyAgaWYgKGVuY29kaW5nID09IEVuY29kaW5nVHlwZTo6a0ZpeGVk
U2l6ZVVuc2lnbmVkRGVsdGFzTm9FYXJseVdyYXBOb09wdCkgeworICAgIHNpZ25lZF9kZWx0YXMg
PSBrRGVmYXVsdFNpZ25lZERlbHRhczsKKyAgICB2YWx1ZXNfb3B0aW9uYWwgPSBrRGVmYXVsdFZh
bHVlc09wdGlvbmFsOworICAgIHZhbHVlX3dpZHRoX2JpdHMgPSBrRGVmYXVsdFZhbHVlV2lkdGhC
aXRzOworICB9IGVsc2UgeworICAgIC8vIHNpZ25lZF9kZWx0YXMKKyAgICBpZiAoIXJlYWRlci0+
UmVhZEJpdHMoJnJlYWRfYnVmZmVyLCBrQml0c0luSGVhZGVyRm9yU2lnbmVkRGVsdGFzKSkgewor
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHNpZ25lZF9kZWx0YXMgPSBydGM6OmRj
aGVja2VkX2Nhc3Q8Ym9vbD4ocmVhZF9idWZmZXIpOworCisgICAgLy8gdmFsdWVzX29wdGlvbmFs
CisgICAgaWYgKCFyZWFkZXItPlJlYWRCaXRzKCZyZWFkX2J1ZmZlciwga0JpdHNJbkhlYWRlckZv
clZhbHVlc09wdGlvbmFsKSkgeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIFJU
Q19EQ0hFQ0tfTEUocmVhZF9idWZmZXIsIDEpOworICAgIHZhbHVlc19vcHRpb25hbCA9IHJ0Yzo6
ZGNoZWNrZWRfY2FzdDxib29sPihyZWFkX2J1ZmZlcik7CisKKyAgICAvLyB2YWx1ZV93aWR0aF9i
aXRzCisgICAgaWYgKCFyZWFkZXItPlJlYWRCaXRzKCZyZWFkX2J1ZmZlciwga0JpdHNJbkhlYWRl
ckZvclZhbHVlV2lkdGhCaXRzKSkgeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAg
IFJUQ19EQ0hFQ0tfTEUocmVhZF9idWZmZXIsIDY0IC0gMSk7ICAvLyBTZWUgZW5jb2RpbmcgZm9y
IC0xJ3MgcmF0aW9uYWxlLgorICAgIHZhbHVlX3dpZHRoX2JpdHMgPSByZWFkX2J1ZmZlciArIDE7
ICAvLyBTZWUgZW5jb2RpbmcgZm9yICsxJ3MgcmF0aW9uYWxlLgorICB9CisKKyAgLy8gTm90ZTog
QmVjYXVzZSBvZiB0aGUgd2F5IHRoZSBwYXJhbWV0ZXJzIGFyZSByZWFkLCBpdCBpcyBub3QgcG9z
c2libGUKKyAgLy8gZm9yIGlsbGVnYWwgdmFsdWVzIHRvIGJlIHJlYWQuIFdlIGNoZWNrIG5ldmVy
dGhlbGVzcywgaW4gY2FzZSB0aGUgY29kZQorICAvLyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUgaW4g
YSB3YXkgdGhhdCBicmVha3MgdGhpcyBwcm9taXNlLgorICBpZiAoIUZpeGVkTGVuZ3RoRW5jb2Rp
bmdQYXJhbWV0ZXJzOjpWYWxpZFBhcmFtZXRlcnMoCisgICAgICAgICAgZGVsdGFfd2lkdGhfYml0
cywgc2lnbmVkX2RlbHRhcywgdmFsdWVzX29wdGlvbmFsLCB2YWx1ZV93aWR0aF9iaXRzKSkgewor
ICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNvcnJ1cHQgbG9nOyBpbGxlZ2FsIGVuY29kaW5n
IHBhcmFtZXRlcnMuIjsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisgIEZpeGVkTGVuZ3Ro
RW5jb2RpbmdQYXJhbWV0ZXJzIHBhcmFtcyhkZWx0YV93aWR0aF9iaXRzLCBzaWduZWRfZGVsdGFz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzX29wdGlvbmFs
LCB2YWx1ZV93aWR0aF9iaXRzKTsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWUobmV3IEZpeGVk
TGVuZ3RoRGVsdGFEZWNvZGVyKHN0ZDo6bW92ZShyZWFkZXIpLCBwYXJhbXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLCBudW1fb2Zf
ZGVsdGFzKSk7Cit9CisKK0ZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpGaXhlZExlbmd0aERlbHRh
RGVjb2RlcigKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpCaXRCdWZmZXI+IHJlYWRlciwKKyAg
ICBjb25zdCBGaXhlZExlbmd0aEVuY29kaW5nUGFyYW1ldGVycyYgcGFyYW1zLAorICAgIGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgIHNpemVfdCBudW1fb2ZfZGVsdGFzKQorICAg
IDogcmVhZGVyXyhzdGQ6Om1vdmUocmVhZGVyKSksCisgICAgICBwYXJhbXNfKHBhcmFtcyksCisg
ICAgICBiYXNlXyhiYXNlKSwKKyAgICAgIG51bV9vZl9kZWx0YXNfKG51bV9vZl9kZWx0YXMpIHsK
KyAgUlRDX0RDSEVDSyhyZWFkZXJfKTsKK30KKworc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+PiBGaXhlZExlbmd0aERlbHRhRGVjb2Rlcjo6RGVjb2RlKCkgeworICBSVENfRENI
RUNLKHJlYWRlcl8pOworCisgIHN0ZDo6dmVjdG9yPGJvb2w+IGV4aXN0aW5nX3ZhbHVlcyhudW1f
b2ZfZGVsdGFzXyk7CisgIGlmIChwYXJhbXNfLnZhbHVlc19vcHRpb25hbCgpKSB7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1fb2ZfZGVsdGFzXzsgKytpKSB7CisgICAgICB1aW50MzJf
dCBleGlzdHM7CisgICAgICBpZiAoIXJlYWRlcl8tPlJlYWRCaXRzKCZleGlzdHMsIDF1KSkgewor
ICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcmVhZCBleGlzdGVuY2Ut
aW5kaWNhdGluZyBiaXQuIjsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90Pj4oKTsKKyAgICAgIH0KKyAgICAgIFJUQ19EQ0hFQ0tfTEUoZXhpc3RzLCAx
dSk7CisgICAgICBleGlzdGluZ192YWx1ZXNbaV0gPSAoZXhpc3RzID09IDEpOworICAgIH0KKyAg
fSBlbHNlIHsKKyAgICBzdGQ6OmZpbGwoZXhpc3RpbmdfdmFsdWVzLmJlZ2luKCksIGV4aXN0aW5n
X3ZhbHVlcy5lbmQoKSwgdHJ1ZSk7CisgIH0KKworICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4g
cHJldmlvdXMgPSBiYXNlXzsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+
PiB2YWx1ZXMobnVtX29mX2RlbHRhc18pOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVt
X29mX2RlbHRhc187ICsraSkgeworICAgIGlmICghZXhpc3RpbmdfdmFsdWVzW2ldKSB7CisgICAg
ICBSVENfRENIRUNLKHBhcmFtc18udmFsdWVzX29wdGlvbmFsKCkpOworICAgICAgY29udGludWU7
CisgICAgfQorCisgICAgaWYgKCFwcmV2aW91cykgeworICAgICAgLy8gSWYgdGhlIGJhc2UgaXMg
bm9uLWV4aXN0ZW50LCB0aGUgZmlyc3QgZXhpc3RlbnQgdmFsdWUgaXMgZW5jb2RlZCBhcworICAg
ICAgLy8gYSB2YXJpbnQsIHJhdGhlciB0aGFuIGFzIGEgZGVsdGEuCisgICAgICBSVENfRENIRUNL
KCFiYXNlXy5oYXNfdmFsdWUoKSk7CisgICAgICB1aW50NjRfdCBmaXJzdF92YWx1ZTsKKyAgICAg
IGlmICghUGFyc2VWYXJJbnQoJmZpcnN0X3ZhbHVlKSkgeworICAgICAgICBSVENfTE9HKExTX1dB
Uk5JTkcpIDw8ICJGYWlsZWQgdG8gcmVhZCBmaXJzdCB2YWx1ZS4iOworICAgICAgICByZXR1cm4g
c3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PigpOworICAgICAgfQorICAgICAg
dmFsdWVzW2ldID0gZmlyc3RfdmFsdWU7CisgICAgfSBlbHNlIHsKKyAgICAgIHVpbnQ2NF90IGRl
bHRhOworICAgICAgaWYgKCFQYXJzZURlbHRhKCZkZWx0YSkpIHsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4oKTsKKyAgICAgIH0KKyAgICAgIHZh
bHVlc1tpXSA9IEFwcGx5RGVsdGEocHJldmlvdXMudmFsdWUoKSwgZGVsdGEpOworICAgIH0KKwor
ICAgIHByZXZpb3VzID0gdmFsdWVzW2ldOworICB9CisKKyAgcmV0dXJuIHZhbHVlczsKK30KKwor
Ym9vbCBGaXhlZExlbmd0aERlbHRhRGVjb2Rlcjo6UGFyc2VWYXJJbnQodWludDY0X3QqIG91dHB1
dCkgeworICBSVENfRENIRUNLKHJlYWRlcl8pOworICByZXR1cm4gRGVjb2RlVmFySW50KHJlYWRl
cl8uZ2V0KCksIG91dHB1dCkgIT0gMDsKK30KKworYm9vbCBGaXhlZExlbmd0aERlbHRhRGVjb2Rl
cjo6UGFyc2VEZWx0YSh1aW50NjRfdCogZGVsdGEpIHsKKyAgUlRDX0RDSEVDSyhyZWFkZXJfKTsK
KworICAvLyBCaXRCdWZmZXIgYW5kIEJpdEJ1ZmZlcldyaXRlciByZWFkL3dyaXRlIGhpZ2hlciBi
aXRzIGJlZm9yZSBsb3dlciBiaXRzLgorCisgIGNvbnN0IHNpemVfdCBsb3dlcl9iaXRfY291bnQg
PQorICAgICAgc3RkOjptaW48dWludDY0X3Q+KHBhcmFtc18uZGVsdGFfd2lkdGhfYml0cygpLCAz
MnUpOworICBjb25zdCBzaXplX3QgaGlnaGVyX2JpdF9jb3VudCA9IChwYXJhbXNfLmRlbHRhX3dp
ZHRoX2JpdHMoKSA8PSAzMnUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID8gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHBhcmFtc18uZGVs
dGFfd2lkdGhfYml0cygpIC0gMzJ1OworCisgIHVpbnQzMl90IGxvd2VyX2JpdHM7CisgIHVpbnQz
Ml90IGhpZ2hlcl9iaXRzOworCisgIGlmIChoaWdoZXJfYml0X2NvdW50ID4gMCkgeworICAgIGlm
ICghcmVhZGVyXy0+UmVhZEJpdHMoJmhpZ2hlcl9iaXRzLCBoaWdoZXJfYml0X2NvdW50KSkgewor
ICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHJlYWQgaGlnaGVyIGhhbGYg
b2YgZGVsdGEuIjsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAg
aGlnaGVyX2JpdHMgPSAwOworICB9CisKKyAgaWYgKCFyZWFkZXJfLT5SZWFkQml0cygmbG93ZXJf
Yml0cywgbG93ZXJfYml0X2NvdW50KSkgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZh
aWxlZCB0byByZWFkIGxvd2VyIGhhbGYgb2YgZGVsdGEuIjsKKyAgICByZXR1cm4gZmFsc2U7Cisg
IH0KKworICBjb25zdCB1aW50NjRfdCBsb3dlcl9iaXRzXzY0ID0gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGxvd2VyX2JpdHMpOworICBjb25zdCB1aW50NjRfdCBoaWdoZXJfYml0c182NCA9IHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihoaWdoZXJfYml0cyk7CisKKyAgKmRlbHRhID0gKGhpZ2hlcl9iaXRz
XzY0IDw8IDMyKSB8IGxvd2VyX2JpdHNfNjQ7CisgIHJldHVybiB0cnVlOworfQorCit1aW50NjRf
dCBGaXhlZExlbmd0aERlbHRhRGVjb2Rlcjo6QXBwbHlEZWx0YSh1aW50NjRfdCBiYXNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGVsdGEp
IGNvbnN0IHsKKyAgUlRDX0RDSEVDS19MRShiYXNlLCBNYXhVbnNpZ25lZFZhbHVlT2ZCaXRXaWR0
aChwYXJhbXNfLnZhbHVlX3dpZHRoX2JpdHMoKSkpOworICBSVENfRENIRUNLX0xFKGRlbHRhLCBN
YXhVbnNpZ25lZFZhbHVlT2ZCaXRXaWR0aChwYXJhbXNfLmRlbHRhX3dpZHRoX2JpdHMoKSkpOwor
ICByZXR1cm4gcGFyYW1zXy5zaWduZWRfZGVsdGFzKCkgPyBBcHBseVNpZ25lZERlbHRhKGJhc2Us
IGRlbHRhKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBBcHBseVVuc2lnbmVk
RGVsdGEoYmFzZSwgZGVsdGEpOworfQorCit1aW50NjRfdCBGaXhlZExlbmd0aERlbHRhRGVjb2Rl
cjo6QXBwbHlVbnNpZ25lZERlbHRhKHVpbnQ2NF90IGJhc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRlbHRhKSBjb25zdCB7
CisgIC8vIE5vdGU6IE1heSBzdGlsbCBiZSB1c2VkIGlmIHNpZ25lZCBkZWx0YXMgdXNlZC4KKyAg
UlRDX0RDSEVDS19MRShiYXNlLCBNYXhVbnNpZ25lZFZhbHVlT2ZCaXRXaWR0aChwYXJhbXNfLnZh
bHVlX3dpZHRoX2JpdHMoKSkpOworICBSVENfRENIRUNLX0xFKGRlbHRhLCBNYXhVbnNpZ25lZFZh
bHVlT2ZCaXRXaWR0aChwYXJhbXNfLmRlbHRhX3dpZHRoX2JpdHMoKSkpOworICByZXR1cm4gKGJh
c2UgKyBkZWx0YSkgJiBwYXJhbXNfLnZhbHVlX21hc2soKTsKK30KKwordWludDY0X3QgRml4ZWRM
ZW5ndGhEZWx0YURlY29kZXI6OkFwcGx5U2lnbmVkRGVsdGEodWludDY0X3QgYmFzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRl
bHRhKSBjb25zdCB7CisgIFJUQ19EQ0hFQ0socGFyYW1zXy5zaWduZWRfZGVsdGFzKCkpOworICBS
VENfRENIRUNLX0xFKGJhc2UsIE1heFVuc2lnbmVkVmFsdWVPZkJpdFdpZHRoKHBhcmFtc18udmFs
dWVfd2lkdGhfYml0cygpKSk7CisgIFJUQ19EQ0hFQ0tfTEUoZGVsdGEsIE1heFVuc2lnbmVkVmFs
dWVPZkJpdFdpZHRoKHBhcmFtc18uZGVsdGFfd2lkdGhfYml0cygpKSk7CisKKyAgY29uc3QgdWlu
dDY0X3QgdG9wX2JpdCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgKHBhcmFtc18uZGVsdGFfd2lkdGhfYml0cygpIC0gMSk7CisKKyAgY29u
c3QgYm9vbCBwb3NpdGl2ZV9kZWx0YSA9ICgoZGVsdGEgJiB0b3BfYml0KSA9PSAwKTsKKyAgaWYg
KHBvc2l0aXZlX2RlbHRhKSB7CisgICAgcmV0dXJuIEFwcGx5VW5zaWduZWREZWx0YShiYXNlLCBk
ZWx0YSk7CisgIH0KKworICBjb25zdCB1aW50NjRfdCBkZWx0YV9hYnMgPSAofmRlbHRhICYgcGFy
YW1zXy5kZWx0YV9tYXNrKCkpICsgMTsKKyAgcmV0dXJuIChiYXNlIC0gZGVsdGFfYWJzKSAmIHBh
cmFtc18udmFsdWVfbWFzaygpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworc3RkOjpzdHJpbmcg
RW5jb2RlRGVsdGFzKGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4m
IHZhbHVlcykgeworICAvLyBUT0RPKGVsYWRhbG9uKTogU3VwcG9ydCBhZGRpdGlvbmFsIGVuY29k
aW5ncy4KKyAgcmV0dXJuIEZpeGVkTGVuZ3RoRGVsdGFFbmNvZGVyOjpFbmNvZGVEZWx0YXMoYmFz
ZSwgdmFsdWVzKTsKK30KKworc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBE
ZWNvZGVEZWx0YXMoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LAorICAgIGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAgIHNpemVfdCBudW1fb2ZfZGVsdGFzKSB7CisgIFJU
Q19EQ0hFQ0tfR1QobnVtX29mX2RlbHRhcywgMCk7ICAvLyBBbGxvd3MgZW1wdHkgdmVjdG9yIHRv
IGluZGljYXRlIGVycm9yLgorCisgIC8vIFRoZSBlbXB0eSBzdHJpbmcgaXMgYSBzcGVjaWFsIGNh
c2UgaW5kaWNhdGluZyB0aGF0IGFsbCB2YWx1ZXMgd2VyZSBlcXVhbAorICAvLyB0byB0aGUgYmFz
ZS4KKyAgaWYgKGlucHV0LmVtcHR5KCkpIHsKKyAgICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4+IHJlc3VsdChudW1fb2ZfZGVsdGFzKTsKKyAgICBzdGQ6OmZpbGwocmVzdWx0
LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgYmFzZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQor
CisgIGlmIChGaXhlZExlbmd0aERlbHRhRGVjb2Rlcjo6SXNTdWl0YWJsZURlY29kZXJGb3IoaW5w
dXQpKSB7CisgICAgcmV0dXJuIEZpeGVkTGVuZ3RoRGVsdGFEZWNvZGVyOjpEZWNvZGVEZWx0YXMo
aW5wdXQsIGJhc2UsIG51bV9vZl9kZWx0YXMpOworICB9CisKKyAgUlRDX0xPRyhMU19XQVJOSU5H
KSA8PCAiQ291bGQgbm90IGRlY29kZSBkZWx0YS1lbmNvZGVkIHN0cmVhbS4iOworICByZXR1cm4g
c3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PigpOworfQorCit2b2lkIFNldEZp
eGVkTGVuZ3RoRW5jb2RlckRlbHRhU2lnbmVkbmVzc0ZvclRlc3RpbmcoYm9vbCBzaWduZWRuZXNz
KSB7CisgIGdfZm9yY2VfdW5zaWduZWRfZm9yX3Rlc3RpbmcgPSAhc2lnbmVkbmVzczsKKyAgZ19m
b3JjZV9zaWduZWRfZm9yX3Rlc3RpbmcgPSBzaWduZWRuZXNzOworfQorCit2b2lkIFVuc2V0Rml4
ZWRMZW5ndGhFbmNvZGVyRGVsdGFTaWduZWRuZXNzRm9yVGVzdGluZygpIHsKKyAgZ19mb3JjZV91
bnNpZ25lZF9mb3JfdGVzdGluZyA9IGZhbHNlOworICBnX2ZvcmNlX3NpZ25lZF9mb3JfdGVzdGlu
ZyA9IGZhbHNlOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZW5jb2Rlci9kZWx0YV9lbmNvZGluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2Rp
bmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZTVlOGI3ZjQzY2RkNGI5ZDQyOTBmYmQ0ZmM4NjBkZjU2NmQ1MWUx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuaApAQCAt
MCwwICsxLDQ1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBMT0dHSU5HX1JU
Q19FVkVOVF9MT0dfRU5DT0RFUl9ERUxUQV9FTkNPRElOR19IXworI2RlZmluZSBMT0dHSU5HX1JU
Q19FVkVOVF9MT0dfRU5DT0RFUl9ERUxUQV9FTkNPRElOR19IXworCisjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
KworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEVuY29kZSB8dmFsdWVzfCBhcyBhIHNlcXVlbmNl
IG9mIGRlbHRhcyBmb2xsb3dpbmcgb24gfGJhc2V8IGFuZCByZXR1cm4gaXQuCisvLyBJZiBhbGwg
b2YgdGhlIHZhbHVlcyB3ZXJlIGVxdWFsIHRvIHRoZSBiYXNlLCBhbiBlbXB0eSBzdHJpbmcgd2ls
bCBiZQorLy8gcmV0dXJuZWQ7IHRoaXMgaXMgYSB2YWxpZCBlbmNvZGluZyBvZiB0aGF0IGVkZ2Ug
Y2FzZS4KKy8vIHxiYXNlfCBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSB3cml0dGVuIGludG8gfG91
dHB1dHwsIGFuZCBtdXN0IHRoZXJlZm9yZQorLy8gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSB0byB0
aGUgZGVjb2Rlci4KKy8vIFRoaXMgZnVuY3Rpb24gbmV2ZXIgZmFpbHMuCisvLyBUT0RPKGVsYWRh
bG9uKTogU3BsaXQgaW50byBvcHRpb25hbCBhbmQgbm9uLW9wdGlvbmFsIHZhcmlhbnRzIChlZmZp
Y2llbmN5KS4KK3N0ZDo6c3RyaW5nIEVuY29kZURlbHRhcyhhYnNsOjpvcHRpb25hbDx1aW50NjRf
dD4gYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxhYnNs
OjpvcHRpb25hbDx1aW50NjRfdD4+JiB2YWx1ZXMpOworCisvLyBFbmNvZGVEZWx0YXMoKSBhbmQg
RGVjb2RlRGVsdGFzKCkgYXJlIGludmVyc2Ugb3BlcmF0aW9uczsKKy8vIGludm9raW5nIERlY29k
ZURlbHRhcygpIG92ZXIgdGhlIG91dHB1dCBvZiBFbmNvZGVEZWx0YXMoKSwgd2lsbCByZXR1cm4K
Ky8vIHRoZSBpbnB1dCBvcmlnaW5hbGx5IGdpdmVuIHRvIEVuY29kZURlbHRhcygpLgorLy8gfG51
bV9vZl9kZWx0YXN8IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIElmIGlucHV0IGlzIG5vdCBh
IHZhbGlkIGVuY29kaW5nCisvLyBvZiB8bnVtX29mX2RlbHRhc3wgZWxlbWVudHMgYmFzZWQgb24g
fGJhc2V8LCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eQorLy8gdmVjdG9yLCB3aGljaCBz
aWduYWxzIGFuIGVycm9yLgorLy8gVE9ETyhlbGFkYWxvbik6IFNwbGl0IGludG8gb3B0aW9uYWwg
YW5kIG5vbi1vcHRpb25hbCB2YXJpYW50cyAoZWZmaWNpZW5jeSkuCitzdGQ6OnZlY3RvcjxhYnNs
OjpvcHRpb25hbDx1aW50NjRfdD4+IERlY29kZURlbHRhcygKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgaW5wdXQsCisgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UsCisgICAgc2l6ZV90
IG51bV9vZl9kZWx0YXMpOworCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8g
TE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09ERVJfREVMVEFfRU5DT0RJTkdfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29kaW5nX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvZGVsdGFfZW5jb2RpbmdfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E0NDAxMGVkYWMz
MDA1YWY1MWY5MGNkZGY1OTM4MjRmNDU1ZmExNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
bmNvZGVyL2RlbHRhX2VuY29kaW5nX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsNjkzIEBACisvKgor
ICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNv
ZGVyL2RlbHRhX2VuY29kaW5nLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUg
PHR1cGxlPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9u
YWwuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9yYW5kb20uaCIKKyNpbmNsdWRlICJ0ZXN0
L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCit2b2lkIFNldEZpeGVkTGVuZ3RoRW5j
b2RlckRlbHRhU2lnbmVkbmVzc0ZvclRlc3RpbmcoYm9vbCBzaWduZWRuZXNzKTsKK3ZvaWQgVW5z
ZXRGaXhlZExlbmd0aEVuY29kZXJEZWx0YVNpZ25lZG5lc3NGb3JUZXN0aW5nKCk7CisKK25hbWVz
cGFjZSB7CisKK2VudW0gY2xhc3MgRGVsdGFTaWduZWRuZXNzIHsga05vT3ZlcnJpZGUsIGtGb3Jj
ZVVuc2lnbmVkLCBrRm9yY2VTaWduZWQgfTsKKwordm9pZCBNYXliZVNldFNpZ25lZG5lc3MoRGVs
dGFTaWduZWRuZXNzIHNpZ25lZG5lc3MpIHsKKyAgc3dpdGNoIChzaWduZWRuZXNzKSB7CisgICAg
Y2FzZSBEZWx0YVNpZ25lZG5lc3M6OmtOb092ZXJyaWRlOgorICAgICAgVW5zZXRGaXhlZExlbmd0
aEVuY29kZXJEZWx0YVNpZ25lZG5lc3NGb3JUZXN0aW5nKCk7CisgICAgICByZXR1cm47CisgICAg
Y2FzZSBEZWx0YVNpZ25lZG5lc3M6OmtGb3JjZVVuc2lnbmVkOgorICAgICAgU2V0Rml4ZWRMZW5n
dGhFbmNvZGVyRGVsdGFTaWduZWRuZXNzRm9yVGVzdGluZyhmYWxzZSk7CisgICAgICByZXR1cm47
CisgICAgY2FzZSBEZWx0YVNpZ25lZG5lc3M6OmtGb3JjZVNpZ25lZDoKKyAgICAgIFNldEZpeGVk
TGVuZ3RoRW5jb2RlckRlbHRhU2lnbmVkbmVzc0ZvclRlc3RpbmcodHJ1ZSk7CisgICAgICByZXR1
cm47CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKK30KKwordWludDY0X3QgUmFuZG9tV2l0aE1h
eEJpdFdpZHRoKFJhbmRvbSogcHJuZywgdWludDY0X3QgbWF4X3dpZHRoKSB7CisgIFJUQ19EQ0hF
Q0tfR0UobWF4X3dpZHRoLCAxdSk7CisgIFJUQ19EQ0hFQ0tfTEUobWF4X3dpZHRoLCA2NHUpOwor
CisgIGNvbnN0IHVpbnQ2NF90IGxvdyA9IHBybmctPlJhbmQoc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MzJfdD46Om1heCgpKTsKKyAgY29uc3QgdWludDY0X3QgaGlnaCA9CisgICAgICBtYXhfd2lk
dGggPiAzMnUgPyBwcm5nLT5SYW5kKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgo
KSkgOiAwdTsKKworICBjb25zdCB1aW50NjRfdCByYW5kb21fYmVmb3JlX21hc2sgPSAoaGlnaCA8
PCAzMikgfCBsb3c7CisKKyAgaWYgKG1heF93aWR0aCA8IDY0KSB7CisgICAgcmV0dXJuIHJhbmRv
bV9iZWZvcmVfbWFzayAmICgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IG1heF93aWR0aCkg
LSAxKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gcmFuZG9tX2JlZm9yZV9tYXNrOworICB9Cit9
CisKKy8vIEVuY29kZXMgfHZhbHVlc3wgYmFzZWQgb24gfGJhc2V8LCB0aGVuIGRlY29kZXMgdGhl
IHJlc3VsdCBhbmQgbWFrZXMgc3VyZQorLy8gdGhhdCBpdCBpcyBlcXVhbCB0byB0aGUgb3JpZ2lu
YWwgaW5wdXQuCisvLyBJZiB8ZW5jb2RlZF9zdHJpbmd8IGlzIG5vbi1udWxsLCB0aGUgZW5jb2Rl
ZCByZXN1bHQgd2lsbCBhbHNvIGJlIHdyaXR0ZW4KKy8vIGludG8gaXQuCit2b2lkIFRlc3RFbmNv
ZGluZ0FuZERlY29kaW5nKAorICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlLAorICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4mIHZhbHVlcywKKyAg
ICBzdGQ6OnN0cmluZyogZW5jb2RlZF9zdHJpbmcgPSBudWxscHRyKSB7CisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGVuY29kZWQgPSBFbmNvZGVEZWx0YXMoYmFzZSwgdmFsdWVzKTsKKyAgaWYgKGVuY29k
ZWRfc3RyaW5nKSB7CisgICAgKmVuY29kZWRfc3RyaW5nID0gZW5jb2RlZDsKKyAgfQorCisgIGNv
bnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gZGVjb2RlZCA9CisgICAg
ICBEZWNvZGVEZWx0YXMoZW5jb2RlZCwgYmFzZSwgdmFsdWVzLnNpemUoKSk7CisKKyAgRVhQRUNU
X0VRKGRlY29kZWQsIHZhbHVlcyk7Cit9CisKK3N0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90Pj4gQ3JlYXRlU2VxdWVuY2VCeUZpcnN0VmFsdWUoCisgICAgdWludDY0X3QgZmlyc3Qs
CisgICAgc2l6ZV90IHNlcXVlbmNlX2xlbmd0aCkgeworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4+IHNlcXVlbmNlKHNlcXVlbmNlX2xlbmd0aCk7CisgIHN0ZDo6aW90YShz
ZXF1ZW5jZS5iZWdpbigpLCBzZXF1ZW5jZS5lbmQoKSwgZmlyc3QpOworICByZXR1cm4gc2VxdWVu
Y2U7Cit9CisKK3N0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gQ3JlYXRlU2Vx
dWVuY2VCeUxhc3RWYWx1ZSgKKyAgICB1aW50NjRfdCBsYXN0LAorICAgIHNpemVfdCBudW1fdmFs
dWVzKSB7CisgIGNvbnN0IHVpbnQ2NF90IGZpcnN0ID0gbGFzdCAtIG51bV92YWx1ZXMgKyAxOwor
ICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHJlc3VsdChudW1fdmFsdWVz
KTsKKyAgc3RkOjppb3RhKHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIGZpcnN0KTsKKyAg
cmV0dXJuIHJlc3VsdDsKK30KKworLy8gSWYgfHNlcXVlbmNlX2xlbmd0aHwgaXMgZ3JlYXRlciB0
aGFuIHRoZSBudW1iZXIgb2YgZGVsdGFzLCB0aGUgc2VxdWVuY2Ugb2YKKy8vIGRlbHRhcyB3aWxs
IHdyYXAgYXJvdW5kLgorc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBDcmVh
dGVTZXF1ZW5jZUJ5T3B0aW9uYWxEZWx0YXMoCisgICAgdWludDY0X3QgZmlyc3QsCisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiYgZGVsdGFzLAorICAgIHNp
emVfdCBzZXF1ZW5jZV9sZW5ndGgpIHsKKyAgUlRDX0RDSEVDS19HRShzZXF1ZW5jZV9sZW5ndGgs
IDEpOworCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gc2VxdWVuY2Uo
c2VxdWVuY2VfbGVuZ3RoKTsKKworICB1aW50NjRfdCBwcmV2aW91cyA9IGZpcnN0OworICBmb3Ig
KHNpemVfdCBpID0gMCwgbmV4dF9kZWx0YV9pbmRleCA9IDA7IGkgPCBzZXF1ZW5jZS5zaXplKCk7
ICsraSkgeworICAgIGlmIChkZWx0YXNbbmV4dF9kZWx0YV9pbmRleF0uaGFzX3ZhbHVlKCkpIHsK
KyAgICAgIHNlcXVlbmNlW2ldID0KKyAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4o
cHJldmlvdXMgKyBkZWx0YXNbbmV4dF9kZWx0YV9pbmRleF0udmFsdWUoKSk7CisgICAgICBwcmV2
aW91cyA9IHNlcXVlbmNlW2ldLnZhbHVlKCk7CisgICAgfQorICAgIG5leHRfZGVsdGFfaW5kZXgg
PSAobmV4dF9kZWx0YV9pbmRleCArIDEpICUgZGVsdGFzLnNpemUoKTsKKyAgfQorCisgIHJldHVy
biBzZXF1ZW5jZTsKK30KKworc2l6ZV90IEVuY29kaW5nTGVuZ3RoVXBwZXJCb3VuZChzaXplX3Qg
ZGVsdGFfbWF4X2JpdF93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG51bV9vZl9kZWx0YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlbHRh
U2lnbmVkbmVzcyBzaWduZWRuZXNzX292ZXJyaWRlKSB7CisgIGFic2w6Om9wdGlvbmFsPHNpemVf
dD4gc21hbGxlc3RfaGVhZGVyX3NpemVfYnl0ZXM7CisgIHN3aXRjaCAoc2lnbmVkbmVzc19vdmVy
cmlkZSkgeworICAgIGNhc2UgRGVsdGFTaWduZWRuZXNzOjprTm9PdmVycmlkZToKKyAgICBjYXNl
IERlbHRhU2lnbmVkbmVzczo6a0ZvcmNlVW5zaWduZWQ6CisgICAgICBzbWFsbGVzdF9oZWFkZXJf
c2l6ZV9ieXRlcyA9IDE7CisgICAgICBicmVhazsKKyAgICBjYXNlIERlbHRhU2lnbmVkbmVzczo6
a0ZvcmNlU2lnbmVkOgorICAgICAgc21hbGxlc3RfaGVhZGVyX3NpemVfYnl0ZXMgPSAyOworICAg
ICAgYnJlYWs7CisgIH0KKyAgUlRDX0RDSEVDSyhzbWFsbGVzdF9oZWFkZXJfc2l6ZV9ieXRlcyk7
CisKKyAgcmV0dXJuIGRlbHRhX21heF9iaXRfd2lkdGggKiBudW1fb2ZfZGVsdGFzICsgKnNtYWxs
ZXN0X2hlYWRlcl9zaXplX2J5dGVzOworfQorCisvLyBJZiB8c2VxdWVuY2VfbGVuZ3RofCBpcyBn
cmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBkZWx0YXMsIHRoZSBzZXF1ZW5jZSBvZgorLy8gZGVs
dGFzIHdpbGwgd3JhcCBhcm91bmQuCitzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRf
dD4+IENyZWF0ZVNlcXVlbmNlQnlEZWx0YXMoCisgICAgdWludDY0X3QgZmlyc3QsCisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8dWludDY0X3Q+JiBkZWx0YXMsCisgICAgc2l6ZV90IHNlcXVlbmNlX2xl
bmd0aCkgeworICBSVENfRENIRUNLKCFkZWx0YXMuZW1wdHkoKSk7CisgIHN0ZDo6dmVjdG9yPGFi
c2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gb3B0aW9uYWxfZGVsdGFzKGRlbHRhcy5zaXplKCkpOwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlbHRhcy5zaXplKCk7ICsraSkgeworICAgIG9wdGlv
bmFsX2RlbHRhc1tpXSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PihkZWx0YXNbaV0pOworICB9
CisgIHJldHVybiBDcmVhdGVTZXF1ZW5jZUJ5T3B0aW9uYWxEZWx0YXMoZmlyc3QsIG9wdGlvbmFs
X2RlbHRhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5j
ZV9sZW5ndGgpOworfQorCisvLyBUZXN0cyBvZiB0aGUgZGVsdGEgZW5jb2RpbmcsIHBhcmFtZXRl
cml6ZWQgYnkgdGhlIG51bWJlciBvZiB2YWx1ZXMKKy8vIGluIHRoZSBzZXF1ZW5jZSBjcmVhdGVk
IGJ5IHRoZSB0ZXN0LgorY2xhc3MgRGVsdGFFbmNvZGluZ1Rlc3QKKyAgICA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3RXaXRoUGFyYW08CisgICAgICAgICAgc3RkOjp0dXBsZTxEZWx0YVNpZ25lZG5l
c3MsIHNpemVfdCwgYm9vbCwgdWludDY0X3Q+PiB7CisgcHVibGljOgorICBEZWx0YUVuY29kaW5n
VGVzdCgpCisgICAgICA6IHNpZ25lZG5lc3NfKHN0ZDo6Z2V0PDA+KEdldFBhcmFtKCkpKSwKKyAg
ICAgICAgbnVtX29mX3ZhbHVlc18oc3RkOjpnZXQ8MT4oR2V0UGFyYW0oKSkpLAorICAgICAgICBv
cHRpb25hbF92YWx1ZXNfKHN0ZDo6Z2V0PDI+KEdldFBhcmFtKCkpKSwKKyAgICAgICAgcGFydGlh
bF9yYW5kb21fc2VlZF8oc3RkOjpnZXQ8Mz4oR2V0UGFyYW0oKSkpIHsKKyAgICBNYXliZVNldFNp
Z25lZG5lc3Moc2lnbmVkbmVzc18pOworICB9CisKKyAgfkRlbHRhRW5jb2RpbmdUZXN0KCkgb3Zl
cnJpZGUgPSBkZWZhdWx0OworCisgIC8vIFJ1bm5pbmcgd2l0aCB0aGUgc2FtZSBzZWVkIGZvciBh
bGwgdmFyaWFudHMgd291bGQgbWFrZSBhbGwgdGVzdHMgc3RhcnQKKyAgLy8gd2l0aCB0aGUgc2Ft
ZSBzZXF1ZW5jZTsgYXZvaWQgdGhpcyBieSBtYWtpbmcgdGhlIHNlZWQgZGlmZmVyZW50LgorICB1
aW50NjRfdCBTZWVkKCkgY29uc3QgeworICAgIC8vIE11bHRpcGx5IGV2ZXJ5dGhpbmcgYnV0IGJ5
IGRpZmZlcmVudCBwcmltZXMgdG8gcHJvZHVjZSB1bmlxdWUgcmVzdWx0cy4KKyAgICByZXR1cm4g
MiAqIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaWduZWRuZXNzXykgKyAzICogbnVtX29mX3ZhbHVl
c18gKworICAgICAgICAgICA1ICogb3B0aW9uYWxfdmFsdWVzXyArIDcgKiBwYXJ0aWFsX3JhbmRv
bV9zZWVkXzsKKyAgfQorCisgIGNvbnN0IERlbHRhU2lnbmVkbmVzcyBzaWduZWRuZXNzXzsKKyAg
Y29uc3QgdWludDY0X3QgbnVtX29mX3ZhbHVlc187CisgIGNvbnN0IGJvb2wgb3B0aW9uYWxfdmFs
dWVzXzsKKyAgY29uc3QgdWludDY0X3QgcGFydGlhbF9yYW5kb21fc2VlZF87ICAvLyBFeHBsYWlu
ZWQgd2hlcmUgaXQncyB1c2VkLgorfTsKKworVEVTVF9QKERlbHRhRW5jb2RpbmdUZXN0LCBBbGxW
YWx1ZXNFcXVhbFRvRXhpc3RlbnRCYXNlVmFsdWUpIHsKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+IGJhc2UoMzQzMik7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2
NF90Pj4gdmFsdWVzKG51bV9vZl92YWx1ZXNfKTsKKyAgc3RkOjpmaWxsKHZhbHVlcy5iZWdpbigp
LCB2YWx1ZXMuZW5kKCksIGJhc2UpOworICBzdGQ6OnN0cmluZyBlbmNvZGVkOworICBUZXN0RW5j
b2RpbmdBbmREZWNvZGluZyhiYXNlLCB2YWx1ZXMsICZlbmNvZGVkKTsKKworICAvLyBBZGRpdGlv
bmFsIHJlcXVpcmVtZW50IC0gdGhlIGVuY29kaW5nIHNob3VsZCBiZSBlZmZpY2llbnQgaW4gdGhp
cworICAvLyBjYXNlIC0gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGJlIHVzZWQuCisgIEVYUEVDVF9U
UlVFKGVuY29kZWQuZW1wdHkoKSk7Cit9CisKK1RFU1RfUChEZWx0YUVuY29kaW5nVGVzdCwgQWxs
VmFsdWVzRXF1YWxUb05vbkV4aXN0ZW50QmFzZVZhbHVlKSB7CisgIGlmICghb3B0aW9uYWxfdmFs
dWVzXykgeworICAgIHJldHVybjsgIC8vIFRlc3QgaXJyZWxldmFudCBmb3IgdGhpcyBjYXNlLgor
ICB9CisKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2U7CisgIHN0ZDo6dmVj
dG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVzKG51bV9vZl92YWx1ZXNfKTsKKyAg
c3RkOjpmaWxsKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCksIGJhc2UpOworICBzdGQ6OnN0
cmluZyBlbmNvZGVkOworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2YWx1ZXMsICZl
bmNvZGVkKTsKKworICAvLyBBZGRpdGlvbmFsIHJlcXVpcmVtZW50IC0gdGhlIGVuY29kaW5nIHNo
b3VsZCBiZSBlZmZpY2llbnQgaW4gdGhpcworICAvLyBjYXNlIC0gdGhlIGVtcHR5IHN0cmluZyB3
aWxsIGJlIHVzZWQuCisgIEVYUEVDVF9UUlVFKGVuY29kZWQuZW1wdHkoKSk7Cit9CisKK1RFU1Rf
UChEZWx0YUVuY29kaW5nVGVzdCwgQmFzZU5vbkV4aXN0ZW50QnV0U29tZU90aGVyVmFsdWVzRXhp
c3QpIHsKKyAgaWYgKCFvcHRpb25hbF92YWx1ZXNfKSB7CisgICAgcmV0dXJuOyAgLy8gVGVzdCBp
cnJlbGV2YW50IGZvciB0aGlzIGNhc2UuCisgIH0KKworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1
aW50NjRfdD4gYmFzZTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2
YWx1ZXMobnVtX29mX3ZhbHVlc18pOworCisgIFJhbmRvbSBwcm5nKFNlZWQoKSk7CisKKyAgY29u
c3QgdWludDY0X3QgbWF4X2JpdF93aWR0aCA9IDEgKyBwcm5nLlJhbmQoNjMpOyAgLy8gWzEsIDY0
XQorCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTspIHsKKyAgICAvLyBM
ZWF2ZSBhIHJhbmRvbSBudW1iZXIgb2YgdmFsdWVzIGFzIG5vbi1leGlzdGVudC4KKyAgICBjb25z
dCBzaXplX3Qgbm9uX2V4aXN0ZW50X2NvdW50ID0gcHJuZy5SYW5kKHZhbHVlcy5zaXplKCkgLSBp
IC0gMSk7CisgICAgaSArPSBub25fZXhpc3RlbnRfY291bnQ7CisKKyAgICAvLyBBc3NpZ24gcmFu
ZG9tIHZhbHVlcyB0byBhIHJhbmRvbSBudW1iZXIgb2YgdmFsdWVzLiAoQXQgbGVhc3Qgb25lLCB0
bworICAgIC8vIHByZXZlbnQgdGhpcyBpdGVyYXRpb24gb2YgdGhlIG91dGVyIGxvb3AgZnJvbSBi
ZWluZyBhIG5vLW9wLikKKyAgICBjb25zdCBzaXplX3QgZXhpc3RlbnRfY291bnQgPQorICAgICAg
ICBzdGQ6Om1heDxzaXplX3Q+KHBybmcuUmFuZCh2YWx1ZXMuc2l6ZSgpIC0gaSAtIDEpLCAxKTsK
KyAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGV4aXN0ZW50X2NvdW50OyArK2opIHsKKyAgICAg
IHZhbHVlc1tpICsgal0gPSBSYW5kb21XaXRoTWF4Qml0V2lkdGgoJnBybmcsIG1heF9iaXRfd2lk
dGgpOworICAgIH0KKyAgICBpICs9IGV4aXN0ZW50X2NvdW50OworICB9CisKKyAgVGVzdEVuY29k
aW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworVEVTVF9QKERlbHRhRW5jb2RpbmdU
ZXN0LCBNaW5EZWx0YU5vV3JhcEFyb3VuZCkgeworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50
NjRfdD4gYmFzZSgzNDMyKTsKKworICBhdXRvIHZhbHVlcyA9IENyZWF0ZVNlcXVlbmNlQnlGaXJz
dFZhbHVlKGJhc2UudmFsdWUoKSArIDEsIG51bV9vZl92YWx1ZXNfKTsKKyAgQVNTRVJUX0dUKHZh
bHVlc1t2YWx1ZXMuc2l6ZSgpIC0gMV0sIGJhc2UpIDw8ICJTYW5pdHk7IG11c3Qgbm90IHdyYXAg
YXJvdW5kIjsKKworICBpZiAob3B0aW9uYWxfdmFsdWVzXykgeworICAgIC8vIEFyYml0cmFyaWx5
IG1ha2Ugb25lIG9mIHRoZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0byBmb3JjZQorICAgIC8vIG9w
dGlvbmFsLXN1cHBvcnRpbmcgZW5jb2RpbmcuCisgICAgdmFsdWVzWzBdID0gYWJzbDo6b3B0aW9u
YWw8dWludDY0X3Q+KCk7CisgIH0KKworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhiYXNlLCB2
YWx1ZXMpOworfQorCitURVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIEJpZ0RlbHRhTm9XcmFwQXJv
dW5kKSB7CisgIGNvbnN0IHVpbnQ2NF90IGtCaWdEZWx0YSA9IDEzMjgyODsKKyAgY29uc3QgYWJz
bDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UoMzQzMik7CisKKyAgYXV0byB2YWx1ZXMgPQorICAg
ICAgQ3JlYXRlU2VxdWVuY2VCeUZpcnN0VmFsdWUoYmFzZS52YWx1ZSgpICsga0JpZ0RlbHRhLCBu
dW1fb2ZfdmFsdWVzXyk7CisgIEFTU0VSVF9HVCh2YWx1ZXNbdmFsdWVzLnNpemUoKSAtIDFdLCBi
YXNlKSA8PCAiU2FuaXR5OyBtdXN0IG5vdCB3cmFwIGFyb3VuZCI7CisKKyAgaWYgKG9wdGlvbmFs
X3ZhbHVlc18pIHsKKyAgICAvLyBBcmJpdHJhcmlseSBtYWtlIG9uZSBvZiB0aGUgdmFsdWVzIG5v
bi1leGlzdGVudCwgdG8gZm9yY2UKKyAgICAvLyBvcHRpb25hbC1zdXBwb3J0aW5nIGVuY29kaW5n
LgorICAgIHZhbHVlc1swXSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICB9CisKKyAg
VGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworVEVTVF9QKERlbHRh
RW5jb2RpbmdUZXN0LCBNYXhEZWx0YU5vV3JhcEFyb3VuZCkgeworICBjb25zdCBhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKworICBhdXRvIHZhbHVlcyA9IENyZWF0ZVNlcXVl
bmNlQnlMYXN0VmFsdWUoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX29mX3ZhbHVlc18pOwor
ICBBU1NFUlRfR1QodmFsdWVzW3ZhbHVlcy5zaXplKCkgLSAxXSwgYmFzZSkgPDwgIlNhbml0eTsg
bXVzdCBub3Qgd3JhcCBhcm91bmQiOworCisgIGlmIChvcHRpb25hbF92YWx1ZXNfKSB7CisgICAg
Ly8gQXJiaXRyYXJpbHkgbWFrZSBvbmUgb2YgdGhlIHZhbHVlcyBub24tZXhpc3RlbnQsIHRvIGZv
cmNlCisgICAgLy8gb3B0aW9uYWwtc3VwcG9ydGluZyBlbmNvZGluZy4KKyAgICB2YWx1ZXNbMF0g
PSBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgfQorCisgIFRlc3RFbmNvZGluZ0FuZERl
Y29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKK1RFU1RfUChEZWx0YUVuY29kaW5nVGVzdCwgU21h
bGxEZWx0YVdpdGhXcmFwQXJvdW5kQ29tcGFyZWRUb0Jhc2UpIHsKKyAgaWYgKG9wdGlvbmFsX3Zh
bHVlc18gJiYgbnVtX29mX3ZhbHVlc18gPT0gMSkgeworICAgIHJldHVybjsgIC8vIEluYXBwbGlj
YWJsZQorICB9CisKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2Uoc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKKworICBhdXRvIHZhbHVlcyA9IENyZWF0
ZVNlcXVlbmNlQnlEZWx0YXMoKmJhc2UsIHsxLCAxMCwgM30sIG51bV9vZl92YWx1ZXNfKTsKKyAg
QVNTRVJUX0xUKHZhbHVlc1swXSwgYmFzZSkgPDwgIlNhbml0eTsgbXVzdCB3cmFwIGFyb3VuZCI7
CisKKyAgaWYgKG9wdGlvbmFsX3ZhbHVlc18pIHsKKyAgICAvLyBBcmJpdHJhcmlseSBtYWtlIG9u
ZSBvZiB0aGUgdmFsdWVzIG5vbi1leGlzdGVudCwgdG8gZm9yY2UKKyAgICAvLyBvcHRpb25hbC1z
dXBwb3J0aW5nIGVuY29kaW5nLgorICAgIHZhbHVlc1sxXSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2
NF90PigpOworICB9CisKKyAgVGVzdEVuY29kaW5nQW5kRGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsK
K30KKworVEVTVF9QKERlbHRhRW5jb2RpbmdUZXN0LCBTbWFsbERlbHRhV2l0aFdyYXBBcm91bmRJ
blZhbHVlU2VxdWVuY2UpIHsKKyAgaWYgKG51bV9vZl92YWx1ZXNfID09IDEgfHwgKG9wdGlvbmFs
X3ZhbHVlc18gJiYgbnVtX29mX3ZhbHVlc18gPCAzKSkgeworICAgIHJldHVybjsgIC8vIEluYXBw
bGljYWJsZS4KKyAgfQorCisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBiYXNlKHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSAtIDIpOworCisgIGF1dG8gdmFsdWVz
ID0gQ3JlYXRlU2VxdWVuY2VCeURlbHRhcygqYmFzZSwgezEsIDEwLCAzfSwgbnVtX29mX3ZhbHVl
c18pOworICBBU1NFUlRfTFQodmFsdWVzW3ZhbHVlcy5zaXplKCkgLSAxXSwgdmFsdWVzWzBdKSA8
PCAiU2FuaXR5OyBtdXN0IHdyYXAgYXJvdW5kIjsKKworICBpZiAob3B0aW9uYWxfdmFsdWVzXykg
eworICAgIC8vIEFyYml0cmFyaWx5IG1ha2Ugb25lIG9mIHRoZSB2YWx1ZXMgbm9uLWV4aXN0ZW50
LCB0byBmb3JjZQorICAgIC8vIG9wdGlvbmFsLXN1cHBvcnRpbmcgZW5jb2RpbmcuCisgICAgUlRD
X0RDSEVDS19HVCh2YWx1ZXMuc2l6ZSgpIC0gMSwgMXUpOyAgLy8gV3JhcCBhcm91bmQgbm90IGNh
bmNlbGxlZC4KKyAgICB2YWx1ZXNbMV0gPSBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAg
fQorCisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKKy8vIFN1
cHByZXNzICJpbnRlZ3JhbCBjb25zdGFudCBvdmVyZmxvdyIgd2FybmluZzsgdGhpcyBpcyB0aGUg
dGVzdCdzIGZvY3VzLgorI2lmZGVmIF9NU0NfVkVSCisjcHJhZ21hIHdhcm5pbmcocHVzaCkKKyNw
cmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDMwNykKKyNlbmRpZgorVEVTVF9QKERlbHRhRW5jb2Rp
bmdUZXN0LCBCaWdEZWx0YVdpdGhXcmFwQXJvdW5kQ29tcGFyZWRUb0Jhc2UpIHsKKyAgaWYgKG9w
dGlvbmFsX3ZhbHVlc18gJiYgbnVtX29mX3ZhbHVlc18gPT0gMSkgeworICAgIHJldHVybjsgIC8v
IEluYXBwbGljYWJsZQorICB9CisKKyAgY29uc3QgdWludDY0X3Qga0JpZ0RlbHRhID0gMTMyODI4
OworICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZShzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrQmlnRGVsdGEgKyAzKTsKKworICBhdXRvIHZhbHVlcyA9CisgICAgICBDcmVhdGVTZXF1
ZW5jZUJ5Rmlyc3RWYWx1ZShiYXNlLnZhbHVlKCkgKyBrQmlnRGVsdGEsIG51bV9vZl92YWx1ZXNf
KTsKKyAgQVNTRVJUX0xUKHZhbHVlc1swXSwgYmFzZS52YWx1ZSgpKSA8PCAiU2FuaXR5OyBtdXN0
IHdyYXAgYXJvdW5kIjsKKworICBpZiAob3B0aW9uYWxfdmFsdWVzXykgeworICAgIC8vIEFyYml0
cmFyaWx5IG1ha2Ugb25lIG9mIHRoZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0byBmb3JjZQorICAg
IC8vIG9wdGlvbmFsLXN1cHBvcnRpbmcgZW5jb2RpbmcuCisgICAgdmFsdWVzWzFdID0gYWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgIH0KKworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhi
YXNlLCB2YWx1ZXMpOworfQorCitURVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIEJpZ0RlbHRhV2l0
aFdyYXBBcm91bmRJblZhbHVlU2VxdWVuY2UpIHsKKyAgaWYgKG51bV9vZl92YWx1ZXNfID09IDEg
fHwgKG9wdGlvbmFsX3ZhbHVlc18gJiYgbnVtX29mX3ZhbHVlc18gPCAzKSkgeworICAgIHJldHVy
bjsgIC8vIEluYXBwbGljYWJsZS4KKyAgfQorCisgIGNvbnN0IHVpbnQ2NF90IGtCaWdEZWx0YSA9
IDEzMjgyODsKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2Uoc3RkOjpudW1l
cmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga0JpZ0RlbHRhICsgMyk7CisKKyAgYXV0byB2YWx1ZXMgPSBDcmVhdGVTZXF1
ZW5jZUJ5Rmlyc3RWYWx1ZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX29mX3ZhbHVlc18p
OworICBBU1NFUlRfTFQodmFsdWVzW3ZhbHVlcy5zaXplKCkgLSAxXSwgdmFsdWVzWzBdKSA8PCAi
U2FuaXR5OyBtdXN0IHdyYXAgYXJvdW5kIjsKKworICBpZiAob3B0aW9uYWxfdmFsdWVzXykgewor
ICAgIC8vIEFyYml0cmFyaWx5IG1ha2Ugb25lIG9mIHRoZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0
byBmb3JjZQorICAgIC8vIG9wdGlvbmFsLXN1cHBvcnRpbmcgZW5jb2RpbmcuCisgICAgUlRDX0RD
SEVDS19HVCh2YWx1ZXMuc2l6ZSgpIC0gMSwgMXUpOyAgLy8gV3JhcCBhcm91bmQgbm90IGNhbmNl
bGxlZC4KKyAgICB2YWx1ZXNbMV0gPSBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgfQor
CisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisjaWZkZWYgX01T
Q19WRVIKKyNwcmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYKKworVEVTVF9QKERlbHRhRW5jb2Rp
bmdUZXN0LCBNYXhEZWx0YVdpdGhXcmFwQXJvdW5kQ29tcGFyZWRUb0Jhc2UpIHsKKyAgaWYgKG9w
dGlvbmFsX3ZhbHVlc18gJiYgbnVtX29mX3ZhbHVlc18gPT0gMSkgeworICAgIHJldHVybjsgIC8v
IEluYXBwbGljYWJsZQorICB9CisKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJh
c2UoMzQzMik7CisgIGF1dG8gdmFsdWVzID0gQ3JlYXRlU2VxdWVuY2VCeUZpcnN0VmFsdWUoKmJh
c2UgLSAxLCBudW1fb2ZfdmFsdWVzXyk7CisKKyAgaWYgKG9wdGlvbmFsX3ZhbHVlc18pIHsKKyAg
ICAvLyBBcmJpdHJhcmlseSBtYWtlIG9uZSBvZiB0aGUgdmFsdWVzIG5vbi1leGlzdGVudCwgdG8g
Zm9yY2UKKyAgICAvLyBvcHRpb25hbC1zdXBwb3J0aW5nIGVuY29kaW5nLgorICAgIHZhbHVlc1sx
XSA9IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICB9CisKKyAgVGVzdEVuY29kaW5nQW5k
RGVjb2RpbmcoYmFzZSwgdmFsdWVzKTsKK30KKworVEVTVF9QKERlbHRhRW5jb2RpbmdUZXN0LCBN
YXhEZWx0YVdpdGhXcmFwQXJvdW5kSW5WYWx1ZVNlcXVlbmNlKSB7CisgIGlmIChudW1fb2ZfdmFs
dWVzXyA9PSAxIHx8IChvcHRpb25hbF92YWx1ZXNfICYmIG51bV9vZl92YWx1ZXNfIDwgMykpIHsK
KyAgICByZXR1cm47ICAvLyBJbmFwcGxpY2FibGUuCisgIH0KKworICBjb25zdCBhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKworICBhdXRvIHZhbHVlcyA9IENyZWF0ZVNlcXVl
bmNlQnlEZWx0YXMoCisgICAgICAqYmFzZSwgezAsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0
X3Q+OjptYXgoKSwgM30sIG51bV9vZl92YWx1ZXNfKTsKKyAgLy8gV3JhcHMgYXJvdW5kIGNvbnRp
bnVvdXNseSBieSB2aXJ0dWUgb2YgYmVpbmcgbWF4KCk7IHdpbGwgbm90IEFTU0VSVC4KKworICBp
ZiAob3B0aW9uYWxfdmFsdWVzXykgeworICAgIC8vIEFyYml0cmFyaWx5IG1ha2Ugb25lIG9mIHRo
ZSB2YWx1ZXMgbm9uLWV4aXN0ZW50LCB0byBmb3JjZQorICAgIC8vIG9wdGlvbmFsLXN1cHBvcnRp
bmcgZW5jb2RpbmcuCisgICAgUlRDX0RDSEVDS19HVCh2YWx1ZXMuc2l6ZSgpIC0gMSwgMXUpOyAg
Ly8gV3JhcCBhcm91bmQgbm90IGNhbmNlbGxlZC4KKyAgICB2YWx1ZXNbMV0gPSBhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4oKTsKKyAgfQorCisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2Us
IHZhbHVlcyk7Cit9CisKKy8vIElmIG51bV9vZl92YWx1ZXNfID09IDEsIGEgemVybyBkZWx0YSB3
aWxsIHlpZWxkIGFuIGVtcHR5IHN0cmluZzsgdGhhdCdzCisvLyBhbHJlYWR5IGNvdmVyZWQgYnkg
QWxsVmFsdWVzRXF1YWxUb0V4aXN0ZW50QmFzZVZhbHVlLCBidXQgaXQgZG9lc24ndCBodXJ0IHRv
CisvLyB0ZXN0IGFnYWluLiBGb3IgYWxsIG90aGVyIGNhc2VzLCB3ZSBoYXZlIGEgbmV3IHRlc3Qu
CitURVNUX1AoRGVsdGFFbmNvZGluZ1Rlc3QsIFplcm9EZWx0YSkgeworICBjb25zdCBhYnNsOjpv
cHRpb25hbDx1aW50NjRfdD4gYmFzZSgzNDMyKTsKKworICAvLyBBcmJpdHJhcnkgc2VxdWVuY2Ug
b2YgZGVsdGFzIHdpdGggaW50ZW50aW9uYWwgemVybyBkZWx0YXMsIGFzIHdlbGwgYXMKKyAgLy8g
Y29uc2VjdXRpdmUgemVyb3MuCisgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ2NF90PiBkZWx0YXMg
PSB7MCwgICAgICAzMTIsIDExLCAxLCAgMSwgMCwgMCwgMTIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNDAwMzIxLCAzLCAgIDMsICAxMiwgNSwgMCwgNn07CisgIGF1
dG8gdmFsdWVzID0gQ3JlYXRlU2VxdWVuY2VCeURlbHRhcyhiYXNlLnZhbHVlKCksIGRlbHRhcywg
bnVtX29mX3ZhbHVlc18pOworCisgIGlmIChvcHRpb25hbF92YWx1ZXNfKSB7CisgICAgLy8gQXJi
aXRyYXJpbHkgbWFrZSBvbmUgb2YgdGhlIHZhbHVlcyBub24tZXhpc3RlbnQsIHRvIGZvcmNlCisg
ICAgLy8gb3B0aW9uYWwtc3VwcG9ydGluZyBlbmNvZGluZy4KKyAgICB2YWx1ZXNbMF0gPSBhYnNs
OjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgfQorCisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5n
KGJhc2UsIHZhbHVlcyk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIFNpZ25l
ZG5lc3NPdmVycmlkZUFuZE51bWJlck9mVmFsdWVzSW5TZXF1ZW5jZSwKKyAgICBEZWx0YUVuY29k
aW5nVGVzdCwKKyAgICA6OnRlc3Rpbmc6OkNvbWJpbmUoOjp0ZXN0aW5nOjpWYWx1ZXMoRGVsdGFT
aWduZWRuZXNzOjprTm9PdmVycmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRGVsdGFTaWduZWRuZXNzOjprRm9yY2VVbnNpZ25lZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsdGFTaWduZWRuZXNzOjprRm9yY2VTaWduZWQp
LAorICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygxLCAyLCAxMDAsIDEw
MDAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpCb29sKCksCisgICAgICAg
ICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDEwLCAyMCwgMzApKSk7CisKKy8vIFRl
c3RzIG92ZXIgdGhlIHF1YWxpdHkgb2YgdGhlIGNvbXByZXNzaW9uIChhcyBvcHBvc2VkIHRvIGl0
cyBjb3JyZWN0bmVzcykuCisvLyBOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCB0ZXN0cyBvZiBydW50
aW1lIGVmZmljaWVuY3kuCitjbGFzcyBEZWx0YUVuY29kaW5nQ29tcHJlc3Npb25RdWFsaXR5VGVz
dAorICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTwKKyAgICAgICAgICBzdGQ6
OnR1cGxlPERlbHRhU2lnbmVkbmVzcywgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdD4+IHsK
KyBwdWJsaWM6CisgIERlbHRhRW5jb2RpbmdDb21wcmVzc2lvblF1YWxpdHlUZXN0KCkKKyAgICAg
IDogc2lnbmVkbmVzc18oc3RkOjpnZXQ8MD4oR2V0UGFyYW0oKSkpLAorICAgICAgICBkZWx0YV9t
YXhfYml0X3dpZHRoXyhzdGQ6OmdldDwxPihHZXRQYXJhbSgpKSksCisgICAgICAgIG51bV9vZl92
YWx1ZXNfKHN0ZDo6Z2V0PDI+KEdldFBhcmFtKCkpKSwKKyAgICAgICAgcGFydGlhbF9yYW5kb21f
c2VlZF8oc3RkOjpnZXQ8Mz4oR2V0UGFyYW0oKSkpIHsKKyAgICBNYXliZVNldFNpZ25lZG5lc3Mo
c2lnbmVkbmVzc18pOworICB9CisKKyAgfkRlbHRhRW5jb2RpbmdDb21wcmVzc2lvblF1YWxpdHlU
ZXN0KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworCisgIC8vIFJ1bm5pbmcgd2l0aCB0aGUgc2FtZSBz
ZWVkIGZvciBhbGwgdmFyaWFudHMgd291bGQgbWFrZSBhbGwgdGVzdHMgc3RhcnQKKyAgLy8gd2l0
aCB0aGUgc2FtZSBzZXF1ZW5jZTsgYXZvaWQgdGhpcyBieSBtYWtpbmcgdGhlIHNlZWQgZGlmZmVy
ZW50LgorICB1aW50NjRfdCBTZWVkKCkgY29uc3QgeworICAgIC8vIE11bHRpcGx5IGV2ZXJ5dGhp
bmcgYnV0IGJ5IGRpZmZlcmVudCBwcmltZXMgdG8gcHJvZHVjZSB1bmlxdWUgcmVzdWx0cy4KKyAg
ICByZXR1cm4gMiAqIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaWduZWRuZXNzXykgKyAzICogZGVs
dGFfbWF4X2JpdF93aWR0aF8gKworICAgICAgICAgICA1ICogZGVsdGFfbWF4X2JpdF93aWR0aF8g
KyA3ICogbnVtX29mX3ZhbHVlc18gKworICAgICAgICAgICAxMSAqIHBhcnRpYWxfcmFuZG9tX3Nl
ZWRfOworICB9CisKKyAgY29uc3QgRGVsdGFTaWduZWRuZXNzIHNpZ25lZG5lc3NfOworICBjb25z
dCB1aW50NjRfdCBkZWx0YV9tYXhfYml0X3dpZHRoXzsKKyAgY29uc3QgdWludDY0X3QgbnVtX29m
X3ZhbHVlc187CisgIGNvbnN0IHVpbnQ2NF90IHBhcnRpYWxfcmFuZG9tX3NlZWRfOyAgLy8gRXhw
bGFpbmVkIHdoZXJlIGl0J3MgdXNlZC4KK307CisKKy8vIElmIG5vIHdyYXAtYXJvdW5kIG9jY3Vy
cyBpbiB0aGUgc3RyZWFtLCB0aGUgd2lkdGggb2YgdGhlIHZhbHVlcyBkb2VzIG5vdAorLy8gbWF0
dGVyIHRvIGNvbXByZXNzaW9uIHBlcmZvcm1hbmNlOyBvbmx5IHRoZSBkZWx0YXMgbWF0dGVyLgor
VEVTVF9QKERlbHRhRW5jb2RpbmdDb21wcmVzc2lvblF1YWxpdHlUZXN0LAorICAgICAgIEJhc2VE
b2VzTm90QWZmZWN0RWZmaWNpZW5jeUlmTm9XcmFwQXJvdW5kKSB7CisgIC8vIDEuIEJhc2VzIHdo
aWNoIHdpbGwgbm90IHByb2R1Y2UgYSB3cmFwLWFyb3VuZC4KKyAgLy8gMi4gVGhlIGxhc3QgYmFz
ZSAtIDB4ZmZmZmZmZmZmZmZmZmZmZiAtIGRvZXMgY2F1c2UgYSB3cmFwLWFyb3VuZCwgYnV0Cisg
IC8vICAgIHRoYXQgc3RpbGwgd29ya3MsIGJlY2F1c2UgdGhlIHdpZHRoIGlzIDY0IGFueXdheSwg
YW5kIGRvZXMgbm90CisgIC8vICAgIG5lZWQgdG8gYmUgY29udmV5ZWQgZXhwbGljaXRseSBpbiB0
aGUgZW5jb2RpbmcgaGVhZGVyLgorICBjb25zdCB1aW50NjRfdCBiYXNlc1tdID0gezAsIDB4NTUs
IDB4ZmZmZmZmZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xp
bWl0czx1aW50NjRfdD46Om1heCgpfTsKKyAgY29uc3Qgc2l6ZV90IGtJbnRlbmRlZFdyYXBBcm91
bmRCYXNlSW5kZXggPSBhcnJheXNpemUoYmFzZXMpOworCisgIHN0ZDo6dmVjdG9yPHVpbnQ2NF90
PiBkZWx0YXMobnVtX29mX3ZhbHVlc18pOworCisgIC8vIEFsbG93cyB1cyB0byBtYWtlIHN1cmUg
dGhhdCB0aGUgZGVsdGFzIGRvIG5vdCBwcm9kdWNlIGEgd3JhcC1hcm91bmQuCisgIHVpbnQ2NF90
IGxhc3RfZWxlbWVudFthcnJheXNpemUoYmFzZXMpXTsKKyAgbWVtY3B5KGxhc3RfZWxlbWVudCwg
YmFzZXMsIHNpemVvZihiYXNlcykpOworCisgIC8vIEF2b2lkIGVtcHR5IHxkZWx0YXN8IGR1ZSB0
byBmaXJzdCBlbGVtZW50IGNhdXNpbmcgd3JhcC1hcm91bmQuCisgIGRlbHRhc1swXSA9IDE7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKGxhc3RfZWxlbWVudCk7ICsraSkgewor
ICAgIGxhc3RfZWxlbWVudFtpXSArPSAxOworICB9CisKKyAgUmFuZG9tIHBybmcoU2VlZCgpKTsK
KworICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGRlbHRhcy5zaXplKCk7ICsraSkgeworICAgIGNv
bnN0IHVpbnQ2NF90IGRlbHRhID0gUmFuZG9tV2l0aE1heEJpdFdpZHRoKCZwcm5nLCBkZWx0YV9t
YXhfYml0X3dpZHRoXyk7CisKKyAgICBib29sIHdyYXBfYXJvdW5kID0gZmFsc2U7CisgICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCBhcnJheXNpemUobGFzdF9lbGVtZW50KTsgKytqKSB7CisgICAg
ICBpZiAoaiA9PSBrSW50ZW5kZWRXcmFwQXJvdW5kQmFzZUluZGV4KSB7CisgICAgICAgIGNvbnRp
bnVlOworICAgICAgfQorCisgICAgICBsYXN0X2VsZW1lbnRbal0gKz0gZGVsdGE7CisgICAgICBp
ZiAobGFzdF9lbGVtZW50W2pdIDwgYmFzZXNbal0pIHsKKyAgICAgICAgd3JhcF9hcm91bmQgPSB0
cnVlOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAod3JhcF9hcm91
bmQpIHsKKyAgICAgIGRlbHRhcy5yZXNpemUoaSk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBkZWx0YXNbaV0gPSBkZWx0YTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIGVuY29kaW5nc1thcnJh
eXNpemUoYmFzZXMpXTsKKworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShiYXNl
cyk7ICsraSkgeworICAgIGNvbnN0IGF1dG8gdmFsdWVzID0KKyAgICAgICAgQ3JlYXRlU2VxdWVu
Y2VCeURlbHRhcyhiYXNlc1tpXSwgZGVsdGFzLCBudW1fb2ZfdmFsdWVzXyk7CisgICAgLy8gUHJv
ZHVjZSB0aGUgZW5jb2RpbmcgYW5kIHdyaXRlIGl0IHRvIGVuY29kaW5nc1tpXS4KKyAgICAvLyBC
eSB1c2luZyBUZXN0RW5jb2RpbmdBbmREZWNvZGluZygpIHRvIGRvIHRoaXMsIHdlIGFsc28gc2Fu
aXR5LXRlc3QKKyAgICAvLyB0aGUgZW5jb2RpbmcvZGVjb2RpbmcsIHRob3VnaCB0aGF0IGlzIG5v
dCB0aGUgdGVzdCdzIGZvY3VzLgorICAgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2VzW2ld
LCB2YWx1ZXMsICZlbmNvZGluZ3NbaV0pOworICAgIEVYUEVDVF9MRShlbmNvZGluZ3NbaV0ubGVu
Z3RoKCksCisgICAgICAgICAgICAgIEVuY29kaW5nTGVuZ3RoVXBwZXJCb3VuZChkZWx0YV9tYXhf
Yml0X3dpZHRoXywgbnVtX29mX3ZhbHVlc18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaWduZWRuZXNzXykpOworICB9CisKKyAgLy8gVGVzdCBmb2N1cyAtIGFsbCBv
ZiB0aGUgZW5jb2RpbmdzIHNob3VsZCBiZSB0aGUgc2FtZSwgYXMgdGhleSBhcmUgYmFzZWQKKyAg
Ly8gb24gdGhlIHNhbWUgZGVsdGEgc2VxdWVuY2UsIGFuZCBkbyBub3QgY29udGFpbiBhIHdyYXAt
YXJvdW5kLgorICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGFycmF5c2l6ZShlbmNvZGluZ3MpOyAr
K2kpIHsKKyAgICBFWFBFQ1RfRVEoZW5jb2RpbmdzW2ldLCBlbmNvZGluZ3NbMF0pOworICB9Cit9
CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIFNpZ25lZG5lc3NPdmVycmlkZUFuZERl
bHRhTWF4Qml0V2lkdGhBbmROdW1iZXJPZlZhbHVlc0luU2VxdWVuY2UsCisgICAgRGVsdGFFbmNv
ZGluZ0NvbXByZXNzaW9uUXVhbGl0eVRlc3QsCisgICAgOjp0ZXN0aW5nOjpDb21iaW5lKAorICAg
ICAgICA6OnRlc3Rpbmc6OlZhbHVlcyhEZWx0YVNpZ25lZG5lc3M6OmtOb092ZXJyaWRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBEZWx0YVNpZ25lZG5lc3M6OmtGb3JjZVVuc2lnbmVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBEZWx0YVNpZ25lZG5lc3M6OmtGb3JjZVNpZ25lZCks
CisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDEsIDQsIDgsIDE1LCAxNiwgMTcsIDMxLCAzMiwg
MzMsIDYzLCA2NCksCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDEsIDIsIDEwMCwgMTAwMDAp
LAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygxMSwgMTIsIDEzKSkpOworCisvLyBTaW1pbGFy
IHRvIERlbHRhRW5jb2RpbmdUZXN0LCBidXQgaW5zdGVhZCBvZiBzZW1pLXN1cmdpY2FsbHkgcHJv
ZHVjaW5nCisvLyBzcGVjaWZpYyBjYXNlcywgcHJvZHVjZSBsYXJnZSBhbW91bnQgb2Ygc2VtaS1y
ZWFsaXN0aWMgaW5wdXRzLgorY2xhc3MgRGVsdGFFbmNvZGluZ0Z1enplckxpa2VUZXN0CisgICAg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPAorICAgICAgICAgIHN0ZDo6dHVwbGU8
RGVsdGFTaWduZWRuZXNzLCB1aW50NjRfdCwgdWludDY0X3QsIGJvb2wsIHVpbnQ2NF90Pj4gewor
IHB1YmxpYzoKKyAgRGVsdGFFbmNvZGluZ0Z1enplckxpa2VUZXN0KCkKKyAgICAgIDogc2lnbmVk
bmVzc18oc3RkOjpnZXQ8MD4oR2V0UGFyYW0oKSkpLAorICAgICAgICBkZWx0YV9tYXhfYml0X3dp
ZHRoXyhzdGQ6OmdldDwxPihHZXRQYXJhbSgpKSksCisgICAgICAgIG51bV9vZl92YWx1ZXNfKHN0
ZDo6Z2V0PDI+KEdldFBhcmFtKCkpKSwKKyAgICAgICAgb3B0aW9uYWxfdmFsdWVzXyhzdGQ6Omdl
dDwzPihHZXRQYXJhbSgpKSksCisgICAgICAgIHBhcnRpYWxfcmFuZG9tX3NlZWRfKHN0ZDo6Z2V0
PDQ+KEdldFBhcmFtKCkpKSB7CisgICAgTWF5YmVTZXRTaWduZWRuZXNzKHNpZ25lZG5lc3NfKTsK
KyAgfQorCisgIH5EZWx0YUVuY29kaW5nRnV6emVyTGlrZVRlc3QoKSBvdmVycmlkZSA9IGRlZmF1
bHQ7CisKKyAgLy8gUnVubmluZyB3aXRoIHRoZSBzYW1lIHNlZWQgZm9yIGFsbCB2YXJpYW50cyB3
b3VsZCBtYWtlIGFsbCB0ZXN0cyBzdGFydAorICAvLyB3aXRoIHRoZSBzYW1lIHNlcXVlbmNlOyBh
dm9pZCB0aGlzIGJ5IG1ha2luZyB0aGUgc2VlZCBkaWZmZXJlbnQuCisgIHVpbnQ2NF90IFNlZWQo
KSBjb25zdCB7CisgICAgLy8gTXVsdGlwbHkgZXZlcnl0aGluZyBidXQgYnkgZGlmZmVyZW50IHBy
aW1lcyB0byBwcm9kdWNlIHVuaXF1ZSByZXN1bHRzLgorICAgIHJldHVybiAyICogc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHNpZ25lZG5lc3NfKSArIDMgKiBkZWx0YV9tYXhfYml0X3dpZHRoXyArCisg
ICAgICAgICAgIDUgKiBkZWx0YV9tYXhfYml0X3dpZHRoXyArIDcgKiBudW1fb2ZfdmFsdWVzXyAr
CisgICAgICAgICAgIDExICogc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9wdGlvbmFsX3ZhbHVlc18p
ICsKKyAgICAgICAgICAgMTMgKiBwYXJ0aWFsX3JhbmRvbV9zZWVkXzsKKyAgfQorCisgIGNvbnN0
IERlbHRhU2lnbmVkbmVzcyBzaWduZWRuZXNzXzsKKyAgY29uc3QgdWludDY0X3QgZGVsdGFfbWF4
X2JpdF93aWR0aF87CisgIGNvbnN0IHVpbnQ2NF90IG51bV9vZl92YWx1ZXNfOworICBjb25zdCBi
b29sIG9wdGlvbmFsX3ZhbHVlc187CisgIGNvbnN0IHVpbnQ2NF90IHBhcnRpYWxfcmFuZG9tX3Nl
ZWRfOyAgLy8gRXhwbGFpbmVkIHdoZXJlIGl0J3MgdXNlZC4KK307CisKK1RFU1RfUChEZWx0YUVu
Y29kaW5nRnV6emVyTGlrZVRlc3QsIFRlc3QpIHsKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGJhc2UoMzQzMik7CisKKyAgUmFuZG9tIHBybmcoU2VlZCgpKTsKKyAgc3RkOjp2ZWN0
b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBkZWx0YXMobnVtX29mX3ZhbHVlc18pOworICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGRlbHRhcy5zaXplKCk7ICsraSkgeworICAgIGlmICghb3B0
aW9uYWxfdmFsdWVzXyB8fCBwcm5nLlJhbmQ8Ym9vbD4oKSkgeworICAgICAgZGVsdGFzW2ldID0g
UmFuZG9tV2l0aE1heEJpdFdpZHRoKCZwcm5nLCBkZWx0YV9tYXhfYml0X3dpZHRoXyk7CisgICAg
fQorICB9CisgIGNvbnN0IGF1dG8gdmFsdWVzID0KKyAgICAgIENyZWF0ZVNlcXVlbmNlQnlPcHRp
b25hbERlbHRhcyhiYXNlLnZhbHVlKCksIGRlbHRhcywgbnVtX29mX3ZhbHVlc18pOworCisgIFRl
c3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZhbHVlcyk7Cit9CisKK0lOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKAorICAgIFNpZ25lZG5lc3NPdmVycmlkZUFuZERlbHRhTWF4Qml0V2lkdGhBbmRO
dW1iZXJPZlZhbHVlc0luU2VxdWVuY2UsCisgICAgRGVsdGFFbmNvZGluZ0Z1enplckxpa2VUZXN0
LAorICAgIDo6dGVzdGluZzo6Q29tYmluZSgKKyAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoRGVs
dGFTaWduZWRuZXNzOjprTm9PdmVycmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVs
dGFTaWduZWRuZXNzOjprRm9yY2VVbnNpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
RGVsdGFTaWduZWRuZXNzOjprRm9yY2VTaWduZWQpLAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVl
cygxLCA0LCA4LCAxNSwgMTYsIDE3LCAzMSwgMzIsIDMzLCA2MywgNjQpLAorICAgICAgICA6OnRl
c3Rpbmc6OlZhbHVlcygxLCAyLCAxMDAsIDEwMDAwKSwKKyAgICAgICAgOjp0ZXN0aW5nOjpCb29s
KCksCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKDIxLCAyMiwgMjMpKSk7CisKK2NsYXNzIERl
bHRhRW5jb2RpbmdTcGVjaWZpY0VkZ2VDYXNlc1Rlc3QKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3RXaXRoUGFyYW08CisgICAgICAgICAgc3RkOjp0dXBsZTxEZWx0YVNpZ25lZG5lc3MsIHVp
bnQ2NF90LCBib29sPj4geworIHB1YmxpYzoKKyAgRGVsdGFFbmNvZGluZ1NwZWNpZmljRWRnZUNh
c2VzVGVzdCgpIHsKKyAgICBVbnNldEZpeGVkTGVuZ3RoRW5jb2RlckRlbHRhU2lnbmVkbmVzc0Zv
clRlc3RpbmcoKTsKKyAgfQorCisgIH5EZWx0YUVuY29kaW5nU3BlY2lmaWNFZGdlQ2FzZXNUZXN0
KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworfTsKKworLy8gVGhpcyBjYXNlIGlzIHNwZWNpYWwgYmVj
YXVzZSBpdCBwcm9kdWNlcyBpZGVudGljYWwgZm9yd2FyZC9iYWNrd2FyZCBkZWx0YXMuCitURVNU
X0YoRGVsdGFFbmNvZGluZ1NwZWNpZmljRWRnZUNhc2VzVGVzdCwgU2lnbmVkRGVsdGFXaXRoT25s
eVRvcEJpdE9uKSB7CisgIE1heWJlU2V0U2lnbmVkbmVzcyhEZWx0YVNpZ25lZG5lc3M6OmtGb3Jj
ZVNpZ25lZCk7CisKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2UoMzQzMik7
CisKKyAgY29uc3QgdWludDY0X3QgZGVsdGEgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwg
NjM7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVz
ID0ge2Jhc2UudmFsdWUoKSArIGRlbHRhfTsKKworICBUZXN0RW5jb2RpbmdBbmREZWNvZGluZyhi
YXNlLCB2YWx1ZXMpOworfQorCitURVNUX0YoRGVsdGFFbmNvZGluZ1NwZWNpZmljRWRnZUNhc2Vz
VGVzdCwgTWF4aW11bVVuc2lnbmVkRGVsdGEpIHsKKyAgTWF5YmVTZXRTaWduZWRuZXNzKERlbHRh
U2lnbmVkbmVzczo6a0ZvcmNlVW5zaWduZWQpOworCisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVp
bnQ2NF90PiBiYXNlKChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwgNjMpICsgMHgxMjMpOwor
CisgIGNvbnN0IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVzID0g
e2Jhc2UudmFsdWUoKSAtIDF9OworCisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5nKGJhc2UsIHZh
bHVlcyk7Cit9CisKKy8vIENoZWNrIHRoYXQsIGlmIGFsbCBkZWx0YXMgYXJlIHNldCB0byAtMSwg
dGhpbmdzIHN0aWxsIHdvcmsuCitURVNUX1AoRGVsdGFFbmNvZGluZ1NwZWNpZmljRWRnZUNhc2Vz
VGVzdCwgUmV2ZXJzZVNlcXVlbmNlKSB7CisgIE1heWJlU2V0U2lnbmVkbmVzcyhzdGQ6OmdldDww
PihHZXRQYXJhbSgpKSk7CisgIGNvbnN0IHVpbnQ2NF90IHdpZHRoID0gc3RkOjpnZXQ8MT4oR2V0
UGFyYW0oKSk7CisgIGNvbnN0IGJvb2wgd3JhcF9hcm91bmQgPSBzdGQ6OmdldDwyPihHZXRQYXJh
bSgpKTsKKworICBjb25zdCB1aW50NjRfdCB2YWx1ZV9tYXNrID0gKHdpZHRoID09IDY0KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
NjRfdD46Om1heCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PigxKSA8PCB3aWR0aCkgLSAxKTsKKworICBjb25zdCB1aW50NjRfdCBi
YXNlID0gd3JhcF9hcm91bmQgPyAxdSA6ICgweGY4MmQzICYgdmFsdWVfbWFzayk7CisgIGNvbnN0
IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVzID0geworICAgICAg
KGJhc2UgLSAxdSkgJiB2YWx1ZV9tYXNrLCAoYmFzZSAtIDJ1KSAmIHZhbHVlX21hc2ssCisgICAg
ICAoYmFzZSAtIDN1KSAmIHZhbHVlX21hc2t9OworCisgIFRlc3RFbmNvZGluZ0FuZERlY29kaW5n
KGJhc2UsIHZhbHVlcyk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIF8sCisg
ICAgRGVsdGFFbmNvZGluZ1NwZWNpZmljRWRnZUNhc2VzVGVzdCwKKyAgICA6OnRlc3Rpbmc6OkNv
bWJpbmUoCisgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKERlbHRhU2lnbmVkbmVzczo6a05vT3Zl
cnJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhU2lnbmVkbmVzczo6a0ZvcmNl
VW5zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhU2lnbmVkbmVzczo6a0Zv
cmNlU2lnbmVkKSwKKyAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoMSwgNCwgOCwgMTUsIDE2LCAx
NywgMzEsIDMyLCAzMywgNjMsIDY0KSwKKyAgICAgICAgOjp0ZXN0aW5nOjpCb29sKCkpKTsKKwor
fSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19l
dmVudF9sb2dfZW5jb2Rlci5oCmluZGV4IGJlYjcxMWM5ZGQ4MmY3MmI5NWY1ZGM4NWYxMDJlMTY0
ODExNmY4YmIuLjZjZTc1MGY2N2U3NjBhMWRjMjdlYWQ4ZjZkOGZiZWFhMmUzNmVlODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlci5oCkBAIC0yMiw3ICsyMiw4IEBAIGNsYXNz
IFJ0Y0V2ZW50TG9nRW5jb2RlciB7CiAgcHVibGljOgogICB2aXJ0dWFsIH5SdGNFdmVudExvZ0Vu
Y29kZXIoKSA9IGRlZmF1bHQ7CiAKLSAgdmlydHVhbCBzdGQ6OnN0cmluZyBFbmNvZGVMb2dTdGFy
dChpbnQ2NF90IHRpbWVzdGFtcF91cykgPSAwOworICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIEVuY29k
ZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3QgdXRjX3RpbWVfdXMpID0gMDsKICAgdmlydHVhbCBzdGQ6OnN0
cmluZyBFbmNvZGVMb2dFbmQoaW50NjRfdCB0aW1lc3RhbXBfdXMpID0gMDsKIAogICB2aXJ0dWFs
IHN0ZDo6c3RyaW5nIEVuY29kZUJhdGNoKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRj
X2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9s
b2dfZW5jb2Rlcl9jb21tb24uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FlYTQ3NjExZDZjM2RhNmM1NTczNWIy
OTZmN2IxOWVjOWJiNDNjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19l
dmVudF9sb2dfZW5jb2Rlcl9jb21tb24uY2MKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgorICovCisKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNf
ZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmgiCisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworLy8gV2UgdXNlIDB4M2ZmZiBi
ZWNhdXNlIHRoYXQgZ2l2ZXMgZGVjZW50IHByZWNpc2lvbiAoY29tcGFyZWQgdG8gdGhlIHVuZGVy
bHlpbmcKKy8vIG1lYXN1cmVtZW50IHByb2R1Y2luZyB0aGUgcGFja2V0IGxvc3MgZnJhY3Rpb24p
IG9uIHRoZSBvbmUgaGFuZCwgd2hpbGUKKy8vIGFsbG93aW5nIHVzIHRvIHVzZSBubyBtb3JlIHRo
YW4gMiBieXRlcyBpbiB2YXJpbnQgZm9ybSBvbiB0aGUgb3RoZXIgaGFuZC4KKy8vIChXZSBtaWdo
dCBhbHNvIGZpeGVkLXNpemUgZW5jb2RlIHVzaW5nIGF0IG1vc3QgMTQgYml0cy4pCitjb25zdGV4
cHIgdWludDMyX3Qga1BhY2tldExvc3NGcmFjdGlvblJhbmdlID0gKDEgPDwgMTQpIC0gMTsgIC8v
IDB4M2ZmZgorY29uc3RleHByIGZsb2F0IGtQYWNrZXRMb3NzRnJhY3Rpb25SYW5nZUZsb2F0ID0K
KyAgICBzdGF0aWNfY2FzdDxmbG9hdD4oa1BhY2tldExvc3NGcmFjdGlvblJhbmdlKTsKK30gIC8v
IG5hbWVzcGFjZQorCit1aW50MzJfdCBDb252ZXJ0UGFja2V0TG9zc0ZyYWN0aW9uVG9Qcm90b0Zv
cm1hdChmbG9hdCBwYWNrZXRfbG9zc19mcmFjdGlvbikgeworICBSVENfRENIRUNLX0dFKHBhY2tl
dF9sb3NzX2ZyYWN0aW9uLCAwKTsKKyAgUlRDX0RDSEVDS19MRShwYWNrZXRfbG9zc19mcmFjdGlv
biwgMSk7CisgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGFja2V0X2xvc3NfZnJhY3Rp
b24gKiBrUGFja2V0TG9zc0ZyYWN0aW9uUmFuZ2UpOworfQorCitib29sIFBhcnNlUGFja2V0TG9z
c0ZyYWN0aW9uRnJvbVByb3RvRm9ybWF0KHVpbnQzMl90IHByb3RvX3BhY2tldF9sb3NzX2ZyYWN0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCog
b3V0cHV0KSB7CisgIGlmIChwcm90b19wYWNrZXRfbG9zc19mcmFjdGlvbiA+PSBrUGFja2V0TG9z
c0ZyYWN0aW9uUmFuZ2UpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgKm91dHB1dCA9IHBy
b3RvX3BhY2tldF9sb3NzX2ZyYWN0aW9uIC8ga1BhY2tldExvc3NGcmFjdGlvblJhbmdlRmxvYXQ7
CisgIHJldHVybiB0cnVlOworfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbi5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOWY4ZWQy
YWQ3M2ZjNWE5ZWFhYTc2ZmNkYTEyMGY1Y2I1MmM2OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uLmgKQEAgLTAsMCArMSw5MyBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9H
X0VOQ09ERVJfUlRDX0VWRU5UX0xPR19FTkNPREVSX0NPTU1PTl9IXworI2RlZmluZSBMT0dHSU5H
X1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9SVENfRVZFTlRfTE9HX0VOQ09ERVJfQ09NTU9OX0hfCisK
KyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIENvbnZlcnQgYmV0d2VlbiB0aGUg
cGFja2V0IGZyYWN0aW9uIGxvc3MgKGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGluCisvLyB0aGUg
cmFuZ2UgWzAuMCwgMS4wXSksIGFuZCBhIHVpbnQzMl90IHdpdGggdXAgdG8gYSBmaXhlZCBudW1i
ZXIgb2YgYml0cy4KKy8vIFRoZSBsYXR0ZXIgY2FuIGJlIG1vcmUgZWZmaWNpZW50bHkgc3RvcmVk
IGluIGEgcHJvdG9idWYgYW5kL29yIGRlbHRhLWVuY29kZWQuCit1aW50MzJfdCBDb252ZXJ0UGFj
a2V0TG9zc0ZyYWN0aW9uVG9Qcm90b0Zvcm1hdChmbG9hdCBwYWNrZXRfbG9zc19mcmFjdGlvbik7
Citib29sIFBhcnNlUGFja2V0TG9zc0ZyYWN0aW9uRnJvbVByb3RvRm9ybWF0KHVpbnQzMl90IHBy
b3RvX3BhY2tldF9sb3NzX2ZyYWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCogb3V0cHV0KTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywor
CituYW1lc3BhY2Ugd2VicnRjX2V2ZW50X2xvZ2dpbmcgeworCisvLyBQcm9kdWNlIGFuIHVuc2ln
bmVkIHJlcHJlc2VudGF0aW9uIG9mIGEgc2lnbmVkIGludGVnZXIuIE9uIHR3bydzIGNvbXBsZW1l
bnQKKy8vIG1hY2hpbmVzLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG86CisvLyBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oc3RhdGljX2Nhc3Q8c3RkOjptYWtlX3Vuc2lnbmVkPFQ+Pih5KSkKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgordWludDY0X3QgVG9VbnNpZ25lZChUIHkpIHsKKyAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2lnbmVkPFQ+Ojp2YWx1ZSwgIiIpOworCisgIC8vIE5vdGUgdGhhdCBhIHNpZ25lZCBpbnRl
Z2VyIHdob3NlIHdpZHRoIGlzIE4gYml0cywgaGFzIE4tMSBkaWdpdHMuCisgIHN0YXRpY19hc3Nl
cnQoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzIDwgNjQsICIiKTsKKworICBjb25zdGV4
cHIgVCBNSU5fVCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbigpOworICBjb25zdGV4cHIg
VCBNQVhfVCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpOworCisgIHN0YXRpY19hc3Nl
cnQoTUFYX1QgKyBNSU5fVCArIDEgPj0gMCwgIk1BWF9UID49IGFicyhNSU5fVCkgLSAxIik7CisK
KyAgaWYgKHkgPj0gMCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oeSk7Cisg
IH0gZWxzZSB7CisgICAgLy8geSBpcyBpbiB0aGUgcmFuZ2UgW01JTl9ULCAtMV0sIHNvICh5IC0g
TUlOX1QpIGlzIGluIHRoZQorICAgIC8vIHJhbmdlIFswLCBhYnMoTUlOX1QpIC0gMV0uIFRoaXMg
aXMgcmVwcmVzZW50YWJsZSBpbiBhIFQKKyAgICAvLyBiZWNhdXNlIE1BWF9UID49IGFicyhNSU5f
VCkgLSAxLCBhcyBwZXIgdGhlIHN0YXRpY19hc3NlcnQgYWJvdmUuCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihNQVhfVCkgKyAxICsgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHkgLSBN
SU5fVCk7CisgIH0KK30KKworLy8gQXNzdW1pbmcgeCA9IFRvVW5zaWduZWQoeSksIHJldHVybiB8
eXwuCisvLyBOb3RlOiBzdGF0aWNfY2FzdDxUPih4KSB3b3VsZCB3b3JrIG9uIG1vc3QgcGxhdGZv
cm1zIGFuZCBjb21waWxlcnMsIGJ1dAorLy8gaW52b2x2ZXMgdW5kZWZpbmVkIGJlaGF2aW9yLiBU
aGlzIGZ1bmN0aW9uIGlzIHdlbGwtZGVmaW5lZCwgYW5kIGNhbiBiZQorLy8gb3B0aW1pemVkIHRv
IGEgbm9vcCBmb3IgNjQgYml0IHR5cGVzLCBvciBhIGZldyBhcml0aG1ldGljCisvLyBpbnN0cnVj
dGlvbnMgYW5kIGEgc2luZ2xlIGNvbmRpdGlvbmFsIGp1bXAgZm9yIG5hcnJvd2VyIHR5cGVzLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIFRvU2lnbmVkKHVpbnQ2NF90IHgsIFQqIHkpIHsK
KyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2lnbmVkPFQ+Ojp2YWx1ZSwgIiIpOworCisgIC8vIE5vdGUgdGhh
dCBhIHNpZ25lZCBpbnRlZ2VyIHdob3NlIHdpZHRoIGlzIE4gYml0cywgaGFzIE4tMSBkaWdpdHMu
CisgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzIDwgNjQsICIi
KTsKKworICBjb25zdGV4cHIgVCBNSU5fVCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbigp
OworICBjb25zdGV4cHIgVCBNQVhfVCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpOwor
CisgIHVzaW5nIFVOU0lHTkVEX1QgPSB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8VD46OnR5
cGU7CisgIGNvbnN0ZXhwciBhdXRvIE1BWF9VTlNJR05FRF9UID0gc3RkOjpudW1lcmljX2xpbWl0
czxVTlNJR05FRF9UPjo6bWF4KCk7CisgIGlmICh4ID4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KE1B
WF9VTlNJR05FRF9UKSkgeworICAgIHJldHVybiBmYWxzZTsgIC8vIHx4fCBjYW5ub3QgYmUgcmVw
cmVzZW50ZWQgdXNpbmcgYSBULgorICB9CisKKyAgaWYgKHggPD0gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KE1BWF9UKSkgeworICAgIC8vIFRoZSBvcmlnaW5hbCB2YWx1ZSB3YXMgcG9zaXRpdmUsIHNv
IGl0IGlzIHNhZmUgdG8ganVzdCBzdGF0aWNfY2FzdC4KKyAgICAqeSA9IHN0YXRpY19jYXN0PFQ+
KHgpOworICB9IGVsc2UgeyAgLy8geCA+IHN0YXRpY19jYXN0PHVpbnQ2NF90PihNQVhfVCkKKyAg
ICBjb25zdCB1aW50NjRfdCBuZWdfeCA9IHggLSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oTUFYX1Qp
IC0gMTsKKyAgICAqeSA9IHN0YXRpY19jYXN0PFQ+KG5lZ194KSArIE1JTl9UOworICB9CisKKyAg
cmV0dXJuIHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGNfZXZlbnRfbG9nZ2luZwor
CisjZW5kaWYgIC8vIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX1JUQ19FVkVOVF9MT0df
RU5DT0RFUl9DT01NT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9s
b2dfZW5jb2Rlcl9jb21tb25fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRf
bG9nX2VuY29kZXJfY29tbW9uX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ZDk0NDA2YWUwZDJm
NmUxY2IxZTY1NmE3MWY4YjQ3MWU4M2ZjZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5j
b2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29tbW9uX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEs
ODMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2NvbW1vbi5oIgorCisjaW5jbHVk
ZSA8bGltaXRzPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwor
I2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0Y19ldmVudF9sb2dnaW5n
IHsKK25hbWVzcGFjZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgU2lnbmVkbmVz
c0NvbnZlcnNpb25UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoKKyAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2lnbmVkPFQ+Ojp2YWx1ZSwgIiIpOworfTsKKworVFlQRURfVEVTVF9DQVNF
X1AoU2lnbmVkbmVzc0NvbnZlcnNpb25UZXN0KTsKKworVFlQRURfVEVTVF9QKFNpZ25lZG5lc3ND
b252ZXJzaW9uVGVzdCwgQ29ycmVjdGx5Q29udmVydHNMZWdhbFZhbHVlcykgeworICB1c2luZyBU
ID0gVHlwZVBhcmFtOworICBzdGQ6OnZlY3RvcjxUPiBsZWdhbF92YWx1ZXMgPSB7c3RkOjpudW1l
cmljX2xpbWl0czxUPjo6bWluKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSArIDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkgLSAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCl9OworICBm
b3IgKFQgdmFsIDogbGVnYWxfdmFsdWVzKSB7CisgICAgY29uc3QgYXV0byB1bnNpZ25lZF92YWwg
PSBUb1Vuc2lnbmVkKHZhbCk7CisgICAgVCBzaWduZWRfdmFsOworICAgIEFTU0VSVF9UUlVFKFRv
U2lnbmVkPFQ+KHVuc2lnbmVkX3ZhbCwgJnNpZ25lZF92YWwpKQorICAgICAgICA8PCAiRmFpbGVk
IG9uICIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkX3ZhbCkgPDwgIi4iOworICAg
IEVYUEVDVF9FUSh2YWwsIHNpZ25lZF92YWwpCisgICAgICAgIDw8ICJGYWlsZWQgb24gIiA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRfdmFsKSA8PCAiLiI7CisgIH0KK30KKworVFlQ
RURfVEVTVF9QKFNpZ25lZG5lc3NDb252ZXJzaW9uVGVzdCwgRmFpbHNPbkNvbnZlcnRpbmdJbGxl
Z2FsVmFsdWVzKSB7CisgIHVzaW5nIFQgPSBUeXBlUGFyYW07CisKKyAgLy8gTm90ZSB0aGF0IGEg
c2lnbmVkIGludGVnZXIgd2hvc2Ugd2lkdGggaXMgTiBiaXRzLCBoYXMgTi0xIGRpZ2l0cy4KKyAg
Y29uc3RleHByIGJvb2wgd2lkdGhfaXNfNjQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdp
dHMgPT0gNjM7CisKKyAgaWYgKHdpZHRoX2lzXzY0KSB7CisgICAgcmV0dXJuOyAgLy8gVGVzdCBp
cnJlbGV2YW50OyBpbGxlZ2FsIHZhbHVlcyBkbyBub3QgZXhpc3QuCisgIH0KKworICBjb25zdCB1
aW50NjRfdCBtYXhfbGVnYWxfdmFsdWUgPSBUb1Vuc2lnbmVkKHN0YXRpY19jYXN0PFQ+KC0xKSk7
CisKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDY0X3Q+IGlsbGVnYWxfdmFsdWVzID0geworICAg
ICAgbWF4X2xlZ2FsX3ZhbHVlICsgMXUsIG1heF9sZWdhbF92YWx1ZSArIDJ1LAorICAgICAgc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIC0gMXUsCisgICAgICBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCl9OworCisgIGZvciAodWludDY0X3QgdW5zaWduZWRf
dmFsIDogaWxsZWdhbF92YWx1ZXMpIHsKKyAgICBUIHNpZ25lZF92YWw7CisgICAgRVhQRUNUX0ZB
TFNFKFRvU2lnbmVkPFQ+KHVuc2lnbmVkX3ZhbCwgJnNpZ25lZF92YWwpKQorICAgICAgICA8PCAi
RmFpbGVkIG9uICIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkX3ZhbCkgPDwgIi4i
OworICB9Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKFNpZ25lZG5lc3NDb252ZXJz
aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcnJlY3RseUNvbnZlcnRzTGVn
YWxWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWlsc09uQ29udmVydGluZ0ls
bGVnYWxWYWx1ZXMpOworCit1c2luZyBUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8aW50OF90LCBp
bnQxNl90LCBpbnQzMl90LCBpbnQ2NF90PjsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1AoXywgU2lnbmVkbmVzc0NvbnZlcnNpb25UZXN0LCBUeXBlcyk7CisKK30gIC8vIG5hbWVzcGFj
ZQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Y19ldmVudF9sb2dnaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbGVnYWN5LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29k
ZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5jYwppbmRleCA3ZWY4ZDY3N2M2MDkwNzJl
MTA2YjA0ZTcyNTFkNmIyYTQ4Y2VlOGQwLi4yOTYzNmVkZTkyMmYyZDQ0OTI4ZTM3MzBkMWUyNWU2
YzJhYjdmNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29k
ZXJfbGVnYWN5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9s
ZWdhY3kuY2MKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9pZ25vcmVfd3Vu
ZGVmLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCi0jaWZkZWYgRU5BQkxFX1JU
Q19FVkVOVF9MT0cKIAogLy8gKi5wYi5oIGZpbGVzIGFyZSBnZW5lcmF0ZWQgYXQgYnVpbGQtdGlt
ZSBieSB0aGUgcHJvdG9idWYgY29tcGlsZXIuCiBSVENfUFVTSF9JR05PUklOR19XVU5ERUYoKQpA
QCAtMjIzLDcgKzIyMiw4IEBAIENvbnZlcnRJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlKEljZUNh
bmRpZGF0ZVBhaXJFdmVudFR5cGUgdHlwZSkgewogCiB9ICAvLyBuYW1lc3BhY2UKIAotc3RkOjpz
dHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVMb2dTdGFydChpbnQ2NF90IHRp
bWVzdGFtcF91cykgeworc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNv
ZGVMb2dTdGFydChpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB1dGNfdGltZV91cykgewogICBy
dGNsb2c6OkV2ZW50IHJ0Y2xvZ19ldmVudDsKICAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3RhbXBf
dXModGltZXN0YW1wX3VzKTsKICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xvZzo6RXZlbnQ6
OkxPR19TVEFSVCk7CkBAIC0zNTcsMzcgKzM1NywzNyBAQCBzdGQ6OnN0cmluZyBSdGNFdmVudExv
Z0VuY29kZXJMZWdhY3k6OkVuY29kZShjb25zdCBSdGNFdmVudCYgZXZlbnQpIHsKIHN0ZDo6c3Ry
aW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlQWxyU3RhdGUoCiAgICAgY29uc3Qg
UnRjRXZlbnRBbHJTdGF0ZSYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7
Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOwor
ICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAg
IHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpBTFJfU1RBVEVfRVZFTlQpOwog
CiAgIGF1dG8qIGFscl9zdGF0ZSA9IHJ0Y2xvZ19ldmVudC5tdXRhYmxlX2Fscl9zdGF0ZSgpOwot
ICBhbHJfc3RhdGUtPnNldF9pbl9hbHIoZXZlbnQuaW5fYWxyXyk7CisgIGFscl9zdGF0ZS0+c2V0
X2luX2FscihldmVudC5pbl9hbHIoKSk7CiAgIHJldHVybiBTZXJpYWxpemUoJnJ0Y2xvZ19ldmVu
dCk7CiB9CiAKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlQXVk
aW9OZXR3b3JrQWRhcHRhdGlvbigKICAgICBjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0
YXRpb24mIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZlbnQgcnRjbG9nX2V2ZW50OwotICBydGNsb2df
ZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXNfKTsKKyAgcnRjbG9nX2V2
ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwogICBydGNsb2dfZXZl
bnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6QVVESU9fTkVUV09SS19BREFQVEFUSU9OX0VWRU5U
KTsKIAogICBhdXRvKiBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb24gPQogICAgICAgcnRjbG9nX2V2
ZW50Lm11dGFibGVfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uKCk7Ci0gIGlmIChldmVudC5jb25m
aWdfLT5iaXRyYXRlX2JwcykKLSAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb24tPnNldF9iaXRy
YXRlX2JwcygqZXZlbnQuY29uZmlnXy0+Yml0cmF0ZV9icHMpOwotICBpZiAoZXZlbnQuY29uZmln
Xy0+ZnJhbWVfbGVuZ3RoX21zKQorICBpZiAoZXZlbnQuY29uZmlnKCkuYml0cmF0ZV9icHMpCisg
ICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfYml0cmF0ZV9icHMoKmV2ZW50LmNvbmZp
ZygpLmJpdHJhdGVfYnBzKTsKKyAgaWYgKGV2ZW50LmNvbmZpZygpLmZyYW1lX2xlbmd0aF9tcykK
ICAgICBhdWRpb19uZXR3b3JrX2FkYXB0YXRpb24tPnNldF9mcmFtZV9sZW5ndGhfbXMoCi0gICAg
ICAgICpldmVudC5jb25maWdfLT5mcmFtZV9sZW5ndGhfbXMpOwotICBpZiAoZXZlbnQuY29uZmln
Xy0+dXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKSB7CisgICAgICAgICpldmVudC5jb25maWco
KS5mcmFtZV9sZW5ndGhfbXMpOworICBpZiAoZXZlbnQuY29uZmlnKCkudXBsaW5rX3BhY2tldF9s
b3NzX2ZyYWN0aW9uKSB7CiAgICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfdXBsaW5r
X3BhY2tldF9sb3NzX2ZyYWN0aW9uKAotICAgICAgICAqZXZlbnQuY29uZmlnXy0+dXBsaW5rX3Bh
Y2tldF9sb3NzX2ZyYWN0aW9uKTsKKyAgICAgICAgKmV2ZW50LmNvbmZpZygpLnVwbGlua19wYWNr
ZXRfbG9zc19mcmFjdGlvbik7CiAgIH0KLSAgaWYgKGV2ZW50LmNvbmZpZ18tPmVuYWJsZV9mZWMp
Ci0gICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfZW5hYmxlX2ZlYygqZXZlbnQuY29u
ZmlnXy0+ZW5hYmxlX2ZlYyk7Ci0gIGlmIChldmVudC5jb25maWdfLT5lbmFibGVfZHR4KQotICAg
IGF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi0+c2V0X2VuYWJsZV9kdHgoKmV2ZW50LmNvbmZpZ18t
PmVuYWJsZV9kdHgpOwotICBpZiAoZXZlbnQuY29uZmlnXy0+bnVtX2NoYW5uZWxzKQotICAgIGF1
ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi0+c2V0X251bV9jaGFubmVscygqZXZlbnQuY29uZmlnXy0+
bnVtX2NoYW5uZWxzKTsKKyAgaWYgKGV2ZW50LmNvbmZpZygpLmVuYWJsZV9mZWMpCisgICAgYXVk
aW9fbmV0d29ya19hZGFwdGF0aW9uLT5zZXRfZW5hYmxlX2ZlYygqZXZlbnQuY29uZmlnKCkuZW5h
YmxlX2ZlYyk7CisgIGlmIChldmVudC5jb25maWcoKS5lbmFibGVfZHR4KQorICAgIGF1ZGlvX25l
dHdvcmtfYWRhcHRhdGlvbi0+c2V0X2VuYWJsZV9kdHgoKmV2ZW50LmNvbmZpZygpLmVuYWJsZV9k
dHgpOworICBpZiAoZXZlbnQuY29uZmlnKCkubnVtX2NoYW5uZWxzKQorICAgIGF1ZGlvX25ldHdv
cmtfYWRhcHRhdGlvbi0+c2V0X251bV9jaGFubmVscygqZXZlbnQuY29uZmlnKCkubnVtX2NoYW5u
ZWxzKTsKIAogICByZXR1cm4gU2VyaWFsaXplKCZydGNsb2dfZXZlbnQpOwogfQpAQCAtMzk1LDEx
ICszOTUsMTEgQEAgc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVB
dWRpb05ldHdvcmtBZGFwdGF0aW9uKAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVn
YWN5OjpFbmNvZGVBdWRpb1BsYXlvdXQoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQm
IGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZlbnQgcnRjbG9nX2V2ZW50OwotICBydGNsb2dfZXZlbnQu
c2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXNfKTsKKyAgcnRjbG9nX2V2ZW50LnNl
dF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwogICBydGNsb2dfZXZlbnQuc2V0
X3R5cGUocnRjbG9nOjpFdmVudDo6QVVESU9fUExBWU9VVF9FVkVOVCk7CiAKICAgYXV0byogcGxh
eW91dF9ldmVudCA9IHJ0Y2xvZ19ldmVudC5tdXRhYmxlX2F1ZGlvX3BsYXlvdXRfZXZlbnQoKTsK
LSAgcGxheW91dF9ldmVudC0+c2V0X2xvY2FsX3NzcmMoZXZlbnQuc3NyY18pOworICBwbGF5b3V0
X2V2ZW50LT5zZXRfbG9jYWxfc3NyYyhldmVudC5zc3JjKCkpOwogCiAgIHJldHVybiBTZXJpYWxp
emUoJnJ0Y2xvZ19ldmVudCk7CiB9CkBAIC00MDcsMTUgKzQwNywxNSBAQCBzdGQ6OnN0cmluZyBS
dGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUF1ZGlvUGxheW91dCgKIHN0ZDo6c3RyaW5n
IFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlQXVkaW9SZWNlaXZlU3RyZWFtQ29uZmln
KAogICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnJiBldmVudCkgewog
ICBydGNsb2c6OkV2ZW50IHJ0Y2xvZ19ldmVudDsKLSAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3Rh
bXBfdXMoZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1w
X3VzKGV2ZW50LnRpbWVzdGFtcF91cygpKTsKICAgcnRjbG9nX2V2ZW50LnNldF90eXBlKHJ0Y2xv
Zzo6RXZlbnQ6OkFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCk7CiAKICAgcnRjbG9nOjpBdWRp
b1JlY2VpdmVDb25maWcqIHJlY2VpdmVyX2NvbmZpZyA9CiAgICAgICBydGNsb2dfZXZlbnQubXV0
YWJsZV9hdWRpb19yZWNlaXZlcl9jb25maWcoKTsKLSAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfcmVt
b3RlX3NzcmMoZXZlbnQuY29uZmlnXy0+cmVtb3RlX3NzcmMpOwotICByZWNlaXZlcl9jb25maWct
PnNldF9sb2NhbF9zc3JjKGV2ZW50LmNvbmZpZ18tPmxvY2FsX3NzcmMpOworICByZWNlaXZlcl9j
b25maWctPnNldF9yZW1vdGVfc3NyYyhldmVudC5jb25maWcoKS5yZW1vdGVfc3NyYyk7CisgIHJl
Y2VpdmVyX2NvbmZpZy0+c2V0X2xvY2FsX3NzcmMoZXZlbnQuY29uZmlnKCkubG9jYWxfc3NyYyk7
CiAKLSAgZm9yIChjb25zdCBhdXRvJiBlIDogZXZlbnQuY29uZmlnXy0+cnRwX2V4dGVuc2lvbnMp
IHsKKyAgZm9yIChjb25zdCBhdXRvJiBlIDogZXZlbnQuY29uZmlnKCkucnRwX2V4dGVuc2lvbnMp
IHsKICAgICBydGNsb2c6OlJ0cEhlYWRlckV4dGVuc2lvbiogZXh0ZW5zaW9uID0KICAgICAgICAg
cmVjZWl2ZXJfY29uZmlnLT5hZGRfaGVhZGVyX2V4dGVuc2lvbnMoKTsKICAgICBleHRlbnNpb24t
PnNldF9uYW1lKGUudXJpKTsKQEAgLTQyOCwxNSArNDI4LDE1IEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2
ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlQXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKAogc3Rk
OjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVBdWRpb1NlbmRTdHJlYW1D
b25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcmIGV2ZW50KSB7
CiAgIHJ0Y2xvZzo6RXZlbnQgcnRjbG9nX2V2ZW50OwotICBydGNsb2dfZXZlbnQuc2V0X3RpbWVz
dGFtcF91cyhldmVudC50aW1lc3RhbXBfdXNfKTsKKyAgcnRjbG9nX2V2ZW50LnNldF90aW1lc3Rh
bXBfdXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwogICBydGNsb2dfZXZlbnQuc2V0X3R5cGUocnRj
bG9nOjpFdmVudDo6QVVESU9fU0VOREVSX0NPTkZJR19FVkVOVCk7CiAKICAgcnRjbG9nOjpBdWRp
b1NlbmRDb25maWcqIHNlbmRlcl9jb25maWcgPQogICAgICAgcnRjbG9nX2V2ZW50Lm11dGFibGVf
YXVkaW9fc2VuZGVyX2NvbmZpZygpOwogCi0gIHNlbmRlcl9jb25maWctPnNldF9zc3JjKGV2ZW50
LmNvbmZpZ18tPmxvY2FsX3NzcmMpOworICBzZW5kZXJfY29uZmlnLT5zZXRfc3NyYyhldmVudC5j
b25maWcoKS5sb2NhbF9zc3JjKTsKIAotICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25m
aWdfLT5ydHBfZXh0ZW5zaW9ucykgeworICBmb3IgKGNvbnN0IGF1dG8mIGUgOiBldmVudC5jb25m
aWcoKS5ydHBfZXh0ZW5zaW9ucykgewogICAgIHJ0Y2xvZzo6UnRwSGVhZGVyRXh0ZW5zaW9uKiBl
eHRlbnNpb24gPQogICAgICAgICBzZW5kZXJfY29uZmlnLT5hZGRfaGVhZGVyX2V4dGVuc2lvbnMo
KTsKICAgICBleHRlbnNpb24tPnNldF9uYW1lKGUudXJpKTsKQEAgLTQ0OSwxMiArNDQ5LDEyIEBA
IHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlQXVkaW9TZW5kU3Ry
ZWFtQ29uZmlnKAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVC
d2VVcGRhdGVEZWxheUJhc2VkKAogICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNl
ZCYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVu
dC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOworICBydGNsb2dfZXZlbnQu
c2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5z
ZXRfdHlwZShydGNsb2c6OkV2ZW50OjpERUxBWV9CQVNFRF9CV0VfVVBEQVRFKTsKIAogICBhdXRv
KiBid2VfZXZlbnQgPSBydGNsb2dfZXZlbnQubXV0YWJsZV9kZWxheV9iYXNlZF9id2VfdXBkYXRl
KCk7Ci0gIGJ3ZV9ldmVudC0+c2V0X2JpdHJhdGVfYnBzKGV2ZW50LmJpdHJhdGVfYnBzXyk7Ci0g
IGJ3ZV9ldmVudC0+c2V0X2RldGVjdG9yX3N0YXRlKENvbnZlcnREZXRlY3RvclN0YXRlKGV2ZW50
LmRldGVjdG9yX3N0YXRlXykpOworICBid2VfZXZlbnQtPnNldF9iaXRyYXRlX2JwcyhldmVudC5i
aXRyYXRlX2JwcygpKTsKKyAgYndlX2V2ZW50LT5zZXRfZGV0ZWN0b3Jfc3RhdGUoQ29udmVydERl
dGVjdG9yU3RhdGUoZXZlbnQuZGV0ZWN0b3Jfc3RhdGUoKSkpOwogCiAgIHJldHVybiBTZXJpYWxp
emUoJnJ0Y2xvZ19ldmVudCk7CiB9CkBAIC00NjIsMTMgKzQ2MiwxMyBAQCBzdGQ6OnN0cmluZyBS
dGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUJ3ZVVwZGF0ZURlbGF5QmFzZWQoCiBzdGQ6
OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUJ3ZVVwZGF0ZUxvc3NCYXNl
ZCgKICAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCYgZXZlbnQpIHsKICAgcnRj
bG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3Vz
KGV2ZW50LnRpbWVzdGFtcF91c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhl
dmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2
ZW50OjpMT1NTX0JBU0VEX0JXRV9VUERBVEUpOwogCiAgIGF1dG8qIGJ3ZV9ldmVudCA9IHJ0Y2xv
Z19ldmVudC5tdXRhYmxlX2xvc3NfYmFzZWRfYndlX3VwZGF0ZSgpOwotICBid2VfZXZlbnQtPnNl
dF9iaXRyYXRlX2JwcyhldmVudC5iaXRyYXRlX2Jwc18pOwotICBid2VfZXZlbnQtPnNldF9mcmFj
dGlvbl9sb3NzKGV2ZW50LmZyYWN0aW9uX2xvc3NfKTsKLSAgYndlX2V2ZW50LT5zZXRfdG90YWxf
cGFja2V0cyhldmVudC50b3RhbF9wYWNrZXRzXyk7CisgIGJ3ZV9ldmVudC0+c2V0X2JpdHJhdGVf
YnBzKGV2ZW50LmJpdHJhdGVfYnBzKCkpOworICBid2VfZXZlbnQtPnNldF9mcmFjdGlvbl9sb3Nz
KGV2ZW50LmZyYWN0aW9uX2xvc3MoKSk7CisgIGJ3ZV9ldmVudC0+c2V0X3RvdGFsX3BhY2tldHMo
ZXZlbnQudG90YWxfcGFja2V0cygpKTsKIAogICByZXR1cm4gU2VyaWFsaXplKCZydGNsb2dfZXZl
bnQpOwogfQpAQCAtNDc2LDE1ICs0NzYsMTUgQEAgc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNv
ZGVyTGVnYWN5OjpFbmNvZGVCd2VVcGRhdGVMb3NzQmFzZWQoCiBzdGQ6OnN0cmluZyBSdGNFdmVu
dExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUljZUNhbmRpZGF0ZVBhaXJDb25maWcoCiAgICAgY29u
c3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnJiBldmVudCkgewogICBydGNsb2c6OkV2
ZW50IGVuY29kZWRfcnRjX2V2ZW50OwotICBlbmNvZGVkX3J0Y19ldmVudC5zZXRfdGltZXN0YW1w
X3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOworICBlbmNvZGVkX3J0Y19ldmVudC5zZXRfdGltZXN0
YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91cygpKTsKICAgZW5jb2RlZF9ydGNfZXZlbnQuc2V0X3R5
cGUocnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRyk7CiAKICAgYXV0byog
ZW5jb2RlZF9pY2VfZXZlbnQgPQogICAgICAgZW5jb2RlZF9ydGNfZXZlbnQubXV0YWJsZV9pY2Vf
Y2FuZGlkYXRlX3BhaXJfY29uZmlnKCk7CiAgIGVuY29kZWRfaWNlX2V2ZW50LT5zZXRfY29uZmln
X3R5cGUoCi0gICAgICBDb252ZXJ0SWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUoZXZlbnQudHlw
ZV8pKTsKLSAgZW5jb2RlZF9pY2VfZXZlbnQtPnNldF9jYW5kaWRhdGVfcGFpcl9pZChldmVudC5j
YW5kaWRhdGVfcGFpcl9pZF8pOwotICBjb25zdCBhdXRvJiBkZXNjID0gZXZlbnQuY2FuZGlkYXRl
X3BhaXJfZGVzY187CisgICAgICBDb252ZXJ0SWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUoZXZl
bnQudHlwZSgpKSk7CisgIGVuY29kZWRfaWNlX2V2ZW50LT5zZXRfY2FuZGlkYXRlX3BhaXJfaWQo
ZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQoKSk7CisgIGNvbnN0IGF1dG8mIGRlc2MgPSBldmVudC5j
YW5kaWRhdGVfcGFpcl9kZXNjKCk7CiAgIGVuY29kZWRfaWNlX2V2ZW50LT5zZXRfbG9jYWxfY2Fu
ZGlkYXRlX3R5cGUoCiAgICAgICBDb252ZXJ0SWNlQ2FuZGlkYXRlVHlwZShkZXNjLmxvY2FsX2Nh
bmRpZGF0ZV90eXBlKSk7CiAgIGVuY29kZWRfaWNlX2V2ZW50LT5zZXRfbG9jYWxfcmVsYXlfcHJv
dG9jb2woCkBAIC01MDUsMjggKzUwNSwyOCBAQCBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29k
ZXJMZWdhY3k6OkVuY29kZUljZUNhbmRpZGF0ZVBhaXJDb25maWcoCiBzdGQ6OnN0cmluZyBSdGNF
dmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZUljZUNhbmRpZGF0ZVBhaXJFdmVudCgKICAgICBj
b25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXImIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZlbnQg
ZW5jb2RlZF9ydGNfZXZlbnQ7Ci0gIGVuY29kZWRfcnRjX2V2ZW50LnNldF90aW1lc3RhbXBfdXMo
ZXZlbnQudGltZXN0YW1wX3VzXyk7CisgIGVuY29kZWRfcnRjX2V2ZW50LnNldF90aW1lc3RhbXBf
dXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwogICBlbmNvZGVkX3J0Y19ldmVudC5zZXRfdHlwZShy
dGNsb2c6OkV2ZW50OjpJQ0VfQ0FORElEQVRFX1BBSVJfRVZFTlQpOwogCiAgIGF1dG8qIGVuY29k
ZWRfaWNlX2V2ZW50ID0KICAgICAgIGVuY29kZWRfcnRjX2V2ZW50Lm11dGFibGVfaWNlX2NhbmRp
ZGF0ZV9wYWlyX2V2ZW50KCk7CiAgIGVuY29kZWRfaWNlX2V2ZW50LT5zZXRfZXZlbnRfdHlwZSgK
LSAgICAgIENvbnZlcnRJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlKGV2ZW50LnR5cGVfKSk7Ci0g
IGVuY29kZWRfaWNlX2V2ZW50LT5zZXRfY2FuZGlkYXRlX3BhaXJfaWQoZXZlbnQuY2FuZGlkYXRl
X3BhaXJfaWRfKTsKKyAgICAgIENvbnZlcnRJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlKGV2ZW50
LnR5cGUoKSkpOworICBlbmNvZGVkX2ljZV9ldmVudC0+c2V0X2NhbmRpZGF0ZV9wYWlyX2lkKGV2
ZW50LmNhbmRpZGF0ZV9wYWlyX2lkKCkpOwogICByZXR1cm4gU2VyaWFsaXplKCZlbmNvZGVkX3J0
Y19ldmVudCk7CiB9CiAKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5j
b2RlUHJvYmVDbHVzdGVyQ3JlYXRlZCgKICAgICBjb25zdCBSdGNFdmVudFByb2JlQ2x1c3RlckNy
ZWF0ZWQmIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZlbnQgcnRjbG9nX2V2ZW50OwotICBydGNsb2df
ZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXNfKTsKKyAgcnRjbG9nX2V2
ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwogICBydGNsb2dfZXZl
bnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6QldFX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9FVkVO
VCk7CiAKICAgYXV0byogcHJvYmVfY2x1c3RlciA9IHJ0Y2xvZ19ldmVudC5tdXRhYmxlX3Byb2Jl
X2NsdXN0ZXIoKTsKLSAgcHJvYmVfY2x1c3Rlci0+c2V0X2lkKGV2ZW50LmlkXyk7Ci0gIHByb2Jl
X2NsdXN0ZXItPnNldF9iaXRyYXRlX2JwcyhldmVudC5iaXRyYXRlX2Jwc18pOwotICBwcm9iZV9j
bHVzdGVyLT5zZXRfbWluX3BhY2tldHMoZXZlbnQubWluX3Byb2Jlc18pOwotICBwcm9iZV9jbHVz
dGVyLT5zZXRfbWluX2J5dGVzKGV2ZW50Lm1pbl9ieXRlc18pOworICBwcm9iZV9jbHVzdGVyLT5z
ZXRfaWQoZXZlbnQuaWQoKSk7CisgIHByb2JlX2NsdXN0ZXItPnNldF9iaXRyYXRlX2JwcyhldmVu
dC5iaXRyYXRlX2JwcygpKTsKKyAgcHJvYmVfY2x1c3Rlci0+c2V0X21pbl9wYWNrZXRzKGV2ZW50
Lm1pbl9wcm9iZXMoKSk7CisgIHByb2JlX2NsdXN0ZXItPnNldF9taW5fYnl0ZXMoZXZlbnQubWlu
X2J5dGVzKCkpOwogCiAgIHJldHVybiBTZXJpYWxpemUoJnJ0Y2xvZ19ldmVudCk7CiB9CkBAIC01
MzQsMTIgKzUzNCwxMiBAQCBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVu
Y29kZVByb2JlQ2x1c3RlckNyZWF0ZWQoCiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJM
ZWdhY3k6OkVuY29kZVByb2JlUmVzdWx0RmFpbHVyZSgKICAgICBjb25zdCBSdGNFdmVudFByb2Jl
UmVzdWx0RmFpbHVyZSYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7Ci0g
IHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOworICBy
dGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIHJ0
Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfUkVTVUxUX0VWRU5U
KTsKIAogICBhdXRvKiBwcm9iZV9yZXN1bHQgPSBydGNsb2dfZXZlbnQubXV0YWJsZV9wcm9iZV9y
ZXN1bHQoKTsKLSAgcHJvYmVfcmVzdWx0LT5zZXRfaWQoZXZlbnQuaWRfKTsKLSAgcHJvYmVfcmVz
dWx0LT5zZXRfcmVzdWx0KENvbnZlcnRQcm9iZVJlc3VsdFR5cGUoZXZlbnQuZmFpbHVyZV9yZWFz
b25fKSk7CisgIHByb2JlX3Jlc3VsdC0+c2V0X2lkKGV2ZW50LmlkKCkpOworICBwcm9iZV9yZXN1
bHQtPnNldF9yZXN1bHQoQ29udmVydFByb2JlUmVzdWx0VHlwZShldmVudC5mYWlsdXJlX3JlYXNv
bigpKSk7CiAKICAgcmV0dXJuIFNlcmlhbGl6ZSgmcnRjbG9nX2V2ZW50KTsKIH0KQEAgLTU0Nyw3
MCArNTQ3LDcxIEBAIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2Rl
UHJvYmVSZXN1bHRGYWlsdXJlKAogc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5
OjpFbmNvZGVQcm9iZVJlc3VsdFN1Y2Nlc3MoCiAgICAgY29uc3QgUnRjRXZlbnRQcm9iZVJlc3Vs
dFN1Y2Nlc3MmIGV2ZW50KSB7CiAgIHJ0Y2xvZzo6RXZlbnQgcnRjbG9nX2V2ZW50OwotICBydGNs
b2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXNfKTsKKyAgcnRjbG9n
X2V2ZW50LnNldF90aW1lc3RhbXBfdXMoZXZlbnQudGltZXN0YW1wX3VzKCkpOwogICBydGNsb2df
ZXZlbnQuc2V0X3R5cGUocnRjbG9nOjpFdmVudDo6QldFX1BST0JFX1JFU1VMVF9FVkVOVCk7CiAK
ICAgYXV0byogcHJvYmVfcmVzdWx0ID0gcnRjbG9nX2V2ZW50Lm11dGFibGVfcHJvYmVfcmVzdWx0
KCk7Ci0gIHByb2JlX3Jlc3VsdC0+c2V0X2lkKGV2ZW50LmlkXyk7CisgIHByb2JlX3Jlc3VsdC0+
c2V0X2lkKGV2ZW50LmlkKCkpOwogICBwcm9iZV9yZXN1bHQtPnNldF9yZXN1bHQocnRjbG9nOjpC
d2VQcm9iZVJlc3VsdDo6U1VDQ0VTUyk7Ci0gIHByb2JlX3Jlc3VsdC0+c2V0X2JpdHJhdGVfYnBz
KGV2ZW50LmJpdHJhdGVfYnBzXyk7CisgIHByb2JlX3Jlc3VsdC0+c2V0X2JpdHJhdGVfYnBzKGV2
ZW50LmJpdHJhdGVfYnBzKCkpOwogCiAgIHJldHVybiBTZXJpYWxpemUoJnJ0Y2xvZ19ldmVudCk7
CiB9CiAKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5jb2RlUnRjcFBh
Y2tldEluY29taW5nKAogICAgIGNvbnN0IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nJiBldmVu
dCkgewotICByZXR1cm4gRW5jb2RlUnRjcFBhY2tldChldmVudC50aW1lc3RhbXBfdXNfLCBldmVu
dC5wYWNrZXRfLCB0cnVlKTsKKyAgcmV0dXJuIEVuY29kZVJ0Y3BQYWNrZXQoZXZlbnQudGltZXN0
YW1wX3VzKCksIGV2ZW50LnBhY2tldCgpLCB0cnVlKTsKIH0KIAogc3RkOjpzdHJpbmcgUnRjRXZl
bnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVSdGNwUGFja2V0T3V0Z29pbmcoCiAgICAgY29uc3Qg
UnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcmIGV2ZW50KSB7Ci0gIHJldHVybiBFbmNvZGVSdGNw
UGFja2V0KGV2ZW50LnRpbWVzdGFtcF91c18sIGV2ZW50LnBhY2tldF8sIGZhbHNlKTsKKyAgcmV0
dXJuIEVuY29kZVJ0Y3BQYWNrZXQoZXZlbnQudGltZXN0YW1wX3VzKCksIGV2ZW50LnBhY2tldCgp
LCBmYWxzZSk7CiB9CiAKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeTo6RW5j
b2RlUnRwUGFja2V0SW5jb21pbmcoCiAgICAgY29uc3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWlu
ZyYgZXZlbnQpIHsKLSAgcmV0dXJuIEVuY29kZVJ0cFBhY2tldChldmVudC50aW1lc3RhbXBfdXNf
LCBldmVudC5oZWFkZXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnBhY2tldF9s
ZW5ndGhfLCBQYWNlZFBhY2tldEluZm86OmtOb3RBUHJvYmUsCisgIHJldHVybiBFbmNvZGVSdHBQ
YWNrZXQoZXZlbnQudGltZXN0YW1wX3VzKCksIGV2ZW50LmhlYWRlcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50LnBhY2tldF9sZW5ndGgoKSwgUGFjZWRQYWNrZXRJbmZvOjprTm90
QVByb2JlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogfQogCiBzdGQ6OnN0cmlu
ZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVuY29kZVJ0cFBhY2tldE91dGdvaW5nKAogICAg
IGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcmIGV2ZW50KSB7Ci0gIHJldHVybiBFbmNv
ZGVSdHBQYWNrZXQoZXZlbnQudGltZXN0YW1wX3VzXywgZXZlbnQuaGVhZGVyXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBldmVudC5wYWNrZXRfbGVuZ3RoXywgZXZlbnQucHJvYmVfY2x1c3Rl
cl9pZF8sIGZhbHNlKTsKKyAgcmV0dXJuIEVuY29kZVJ0cFBhY2tldChldmVudC50aW1lc3RhbXBf
dXMoKSwgZXZlbnQuaGVhZGVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucGFj
a2V0X2xlbmd0aCgpLCBldmVudC5wcm9iZV9jbHVzdGVyX2lkKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFsc2UpOwogfQogCiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdh
Y3k6OkVuY29kZVZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZygKICAgICBjb25zdCBSdGNFdmVudFZp
ZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2df
ZXZlbnQ7Ci0gIHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91
c18pOworICBydGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMo
KSk7CiAgIHJ0Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpWSURFT19SRUNFSVZF
Ul9DT05GSUdfRVZFTlQpOwogCiAgIHJ0Y2xvZzo6VmlkZW9SZWNlaXZlQ29uZmlnKiByZWNlaXZl
cl9jb25maWcgPQogICAgICAgcnRjbG9nX2V2ZW50Lm11dGFibGVfdmlkZW9fcmVjZWl2ZXJfY29u
ZmlnKCk7Ci0gIHJlY2VpdmVyX2NvbmZpZy0+c2V0X3JlbW90ZV9zc3JjKGV2ZW50LmNvbmZpZ18t
PnJlbW90ZV9zc3JjKTsKLSAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfbG9jYWxfc3NyYyhldmVudC5j
b25maWdfLT5sb2NhbF9zc3JjKTsKKyAgcmVjZWl2ZXJfY29uZmlnLT5zZXRfcmVtb3RlX3NzcmMo
ZXZlbnQuY29uZmlnKCkucmVtb3RlX3NzcmMpOworICByZWNlaXZlcl9jb25maWctPnNldF9sb2Nh
bF9zc3JjKGV2ZW50LmNvbmZpZygpLmxvY2FsX3NzcmMpOwogCiAgIC8vIFRPRE8ocGVya2opOiBB
ZGQgZmllbGQgZm9yIHJzaWQuCi0gIHJlY2VpdmVyX2NvbmZpZy0+c2V0X3J0Y3BfbW9kZShDb252
ZXJ0UnRjcE1vZGUoZXZlbnQuY29uZmlnXy0+cnRjcF9tb2RlKSk7Ci0gIHJlY2VpdmVyX2NvbmZp
Zy0+c2V0X3JlbWIoZXZlbnQuY29uZmlnXy0+cmVtYik7CisgIHJlY2VpdmVyX2NvbmZpZy0+c2V0
X3J0Y3BfbW9kZShDb252ZXJ0UnRjcE1vZGUoZXZlbnQuY29uZmlnKCkucnRjcF9tb2RlKSk7Cisg
IHJlY2VpdmVyX2NvbmZpZy0+c2V0X3JlbWIoZXZlbnQuY29uZmlnKCkucmVtYik7CiAKLSAgZm9y
IChjb25zdCBhdXRvJiBlIDogZXZlbnQuY29uZmlnXy0+cnRwX2V4dGVuc2lvbnMpIHsKKyAgZm9y
IChjb25zdCBhdXRvJiBlIDogZXZlbnQuY29uZmlnKCkucnRwX2V4dGVuc2lvbnMpIHsKICAgICBy
dGNsb2c6OlJ0cEhlYWRlckV4dGVuc2lvbiogZXh0ZW5zaW9uID0KICAgICAgICAgcmVjZWl2ZXJf
Y29uZmlnLT5hZGRfaGVhZGVyX2V4dGVuc2lvbnMoKTsKICAgICBleHRlbnNpb24tPnNldF9uYW1l
KGUudXJpKTsKICAgICBleHRlbnNpb24tPnNldF9pZChlLmlkKTsKICAgfQogCi0gIGZvciAoY29u
c3QgYXV0byYgZCA6IGV2ZW50LmNvbmZpZ18tPmNvZGVjcykgeworICBmb3IgKGNvbnN0IGF1dG8m
IGQgOiBldmVudC5jb25maWcoKS5jb2RlY3MpIHsKICAgICBydGNsb2c6OkRlY29kZXJDb25maWcq
IGRlY29kZXIgPSByZWNlaXZlcl9jb25maWctPmFkZF9kZWNvZGVycygpOwogICAgIGRlY29kZXIt
PnNldF9uYW1lKGQucGF5bG9hZF9uYW1lKTsKICAgICBkZWNvZGVyLT5zZXRfcGF5bG9hZF90eXBl
KGQucGF5bG9hZF90eXBlKTsKICAgICBpZiAoZC5ydHhfcGF5bG9hZF90eXBlICE9IDApIHsKICAg
ICAgIHJ0Y2xvZzo6UnR4TWFwKiBydHggPSByZWNlaXZlcl9jb25maWctPmFkZF9ydHhfbWFwKCk7
CiAgICAgICBydHgtPnNldF9wYXlsb2FkX3R5cGUoZC5wYXlsb2FkX3R5cGUpOwotICAgICAgcnR4
LT5tdXRhYmxlX2NvbmZpZygpLT5zZXRfcnR4X3NzcmMoZXZlbnQuY29uZmlnXy0+cnR4X3NzcmMp
OworICAgICAgcnR4LT5tdXRhYmxlX2NvbmZpZygpLT5zZXRfcnR4X3NzcmMoZXZlbnQuY29uZmln
KCkucnR4X3NzcmMpOwogICAgICAgcnR4LT5tdXRhYmxlX2NvbmZpZygpLT5zZXRfcnR4X3BheWxv
YWRfdHlwZShkLnJ0eF9wYXlsb2FkX3R5cGUpOwogICAgIH0KICAgfQpAQCAtNjIxLDE5ICs2MjIs
MTkgQEAgc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTGVnYWN5OjpFbmNvZGVWaWRlb1Jl
Y2VpdmVTdHJlYW1Db25maWcoCiBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6
OkVuY29kZVZpZGVvU2VuZFN0cmVhbUNvbmZpZygKICAgICBjb25zdCBSdGNFdmVudFZpZGVvU2Vu
ZFN0cmVhbUNvbmZpZyYgZXZlbnQpIHsKICAgcnRjbG9nOjpFdmVudCBydGNsb2dfZXZlbnQ7Ci0g
IHJ0Y2xvZ19ldmVudC5zZXRfdGltZXN0YW1wX3VzKGV2ZW50LnRpbWVzdGFtcF91c18pOworICBy
dGNsb2dfZXZlbnQuc2V0X3RpbWVzdGFtcF91cyhldmVudC50aW1lc3RhbXBfdXMoKSk7CiAgIHJ0
Y2xvZ19ldmVudC5zZXRfdHlwZShydGNsb2c6OkV2ZW50OjpWSURFT19TRU5ERVJfQ09ORklHX0VW
RU5UKTsKIAogICBydGNsb2c6OlZpZGVvU2VuZENvbmZpZyogc2VuZGVyX2NvbmZpZyA9CiAgICAg
ICBydGNsb2dfZXZlbnQubXV0YWJsZV92aWRlb19zZW5kZXJfY29uZmlnKCk7CiAKICAgLy8gVE9E
TyhwZXJraik6IHJ0Y2xvZzo6VmlkZW9TZW5kQ29uZmlnIHNob3VsZCBvbmx5IGNvbnRhaW4gb25l
IFNTUkMuCi0gIHNlbmRlcl9jb25maWctPmFkZF9zc3JjcyhldmVudC5jb25maWdfLT5sb2NhbF9z
c3JjKTsKLSAgaWYgKGV2ZW50LmNvbmZpZ18tPnJ0eF9zc3JjICE9IDApIHsKLSAgICBzZW5kZXJf
Y29uZmlnLT5hZGRfcnR4X3NzcmNzKGV2ZW50LmNvbmZpZ18tPnJ0eF9zc3JjKTsKKyAgc2VuZGVy
X2NvbmZpZy0+YWRkX3NzcmNzKGV2ZW50LmNvbmZpZygpLmxvY2FsX3NzcmMpOworICBpZiAoZXZl
bnQuY29uZmlnKCkucnR4X3NzcmMgIT0gMCkgeworICAgIHNlbmRlcl9jb25maWctPmFkZF9ydHhf
c3NyY3MoZXZlbnQuY29uZmlnKCkucnR4X3NzcmMpOwogICB9CiAKLSAgZm9yIChjb25zdCBhdXRv
JiBlIDogZXZlbnQuY29uZmlnXy0+cnRwX2V4dGVuc2lvbnMpIHsKKyAgZm9yIChjb25zdCBhdXRv
JiBlIDogZXZlbnQuY29uZmlnKCkucnRwX2V4dGVuc2lvbnMpIHsKICAgICBydGNsb2c6OlJ0cEhl
YWRlckV4dGVuc2lvbiogZXh0ZW5zaW9uID0KICAgICAgICAgc2VuZGVyX2NvbmZpZy0+YWRkX2hl
YWRlcl9leHRlbnNpb25zKCk7CiAgICAgZXh0ZW5zaW9uLT5zZXRfbmFtZShlLnVyaSk7CkBAIC02
NDIsMTMgKzY0MywxMyBAQCBzdGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OkVu
Y29kZVZpZGVvU2VuZFN0cmVhbUNvbmZpZygKIAogICAvLyBUT0RPKHBlcmtqKTogcnRjbG9nOjpW
aWRlb1NlbmRDb25maWcgc2hvdWxkIGNvbnRhaW4gbWFueSBwb3NzaWJsZSBjb2RlYwogICAvLyBj
b25maWd1cmF0aW9ucy4KLSAgZm9yIChjb25zdCBhdXRvJiBjb2RlYyA6IGV2ZW50LmNvbmZpZ18t
PmNvZGVjcykgeworICBmb3IgKGNvbnN0IGF1dG8mIGNvZGVjIDogZXZlbnQuY29uZmlnKCkuY29k
ZWNzKSB7CiAgICAgc2VuZGVyX2NvbmZpZy0+c2V0X3J0eF9wYXlsb2FkX3R5cGUoY29kZWMucnR4
X3BheWxvYWRfdHlwZSk7CiAgICAgcnRjbG9nOjpFbmNvZGVyQ29uZmlnKiBlbmNvZGVyID0gc2Vu
ZGVyX2NvbmZpZy0+bXV0YWJsZV9lbmNvZGVyKCk7CiAgICAgZW5jb2Rlci0+c2V0X25hbWUoY29k
ZWMucGF5bG9hZF9uYW1lKTsKICAgICBlbmNvZGVyLT5zZXRfcGF5bG9hZF90eXBlKGNvZGVjLnBh
eWxvYWRfdHlwZSk7CiAKLSAgICBpZiAoZXZlbnQuY29uZmlnXy0+Y29kZWNzLnNpemUoKSA+IDEp
IHsKKyAgICBpZiAoZXZlbnQuY29uZmlnKCkuY29kZWNzLnNpemUoKSA+IDEpIHsKICAgICAgIFJU
Q19MT0coV0FSTklORykKICAgICAgICAgICA8PCAiTG9nVmlkZW9TZW5kU3RyZWFtQ29uZmlnIGN1
cnJlbnRseSBvbmx5IHN1cHBvcnRzIG9uZSAiCiAgICAgICAgICAgPDwgImNvZGVjLiBMb2dnaW5n
IGNvZGVjIDoiIDw8IGNvZGVjLnBheWxvYWRfbmFtZTsKQEAgLTc1Niw1ICs3NTcsMyBAQCBzdGQ6
OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k6OlNlcmlhbGl6ZShydGNsb2c6OkV2ZW50
KiBldmVudCkgewogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gRU5B
QkxFX1JUQ19FVkVOVF9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9s
b2dfZW5jb2Rlcl9sZWdhY3kuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rl
cl9sZWdhY3kuaAppbmRleCA4N2RiMDM5ZTNhZmYzZjE2ZWI5Y2FlYWM1NzIyZTExNTY3ZGE1NWQw
Li4zMTA1ZGMxZTY4YzZiOTM4ZWE4OTBjN2QyNjFiOWYyNzY2NzAyYmY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbGVnYWN5LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX2xlZ2FjeS5oCkBAIC0xOCw4ICsxOCw2IEBA
CiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19l
bmNvZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAKLSNpZiBkZWZpbmVkKEVO
QUJMRV9SVENfRVZFTlRfTE9HKQotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogbmFtZXNwYWNlIHJ0
Y2xvZyB7CkBAIC01Miw3ICs1MCw4IEBAIGNsYXNzIFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2FjeSBm
aW5hbCA6IHB1YmxpYyBSdGNFdmVudExvZ0VuY29kZXIgewogIHB1YmxpYzoKICAgflJ0Y0V2ZW50
TG9nRW5jb2RlckxlZ2FjeSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKIAotICBzdGQ6OnN0cmluZyBF
bmNvZGVMb2dTdGFydChpbnQ2NF90IHRpbWVzdGFtcF91cykgb3ZlcnJpZGU7CisgIHN0ZDo6c3Ry
aW5nIEVuY29kZUxvZ1N0YXJ0KGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IHV0Y190aW1lX3VzKSBvdmVycmlkZTsKICAgc3RkOjpzdHJp
bmcgRW5jb2RlTG9nRW5kKGludDY0X3QgdGltZXN0YW1wX3VzKSBvdmVycmlkZTsKIAogICBzdGQ6
OnN0cmluZyBFbmNvZGVCYXRjaCgKQEAgLTEwNSw2ICsxMDQsNCBAQCBjbGFzcyBSdGNFdmVudExv
Z0VuY29kZXJMZWdhY3kgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnRMb2dFbmNvZGVyIHsKIAogfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwogCi0jZW5kaWYgIC8vIEVOQUJMRV9SVENfRVZFTlRfTE9HCi0K
ICNlbmRpZiAgLy8gTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09ERVJfUlRDX0VWRU5UX0xPR19F
TkNPREVSX0xFR0FDWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xv
Z19lbmNvZGVyX25ld19mb3JtYXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2Vu
Y29kZXJfbmV3X2Zvcm1hdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWRjMzc5ZjQ4YjQxYTQ2MGQ1ZjQ2MjE3
MmMyMTRmMTIyNzU5OGMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2
ZW50X2xvZ19lbmNvZGVyX25ld19mb3JtYXQuY2MKQEAgLTAsMCArMSwxMzM2IEBACisvKgorICog
IENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVy
L3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9uZXdfZm9ybWF0LmgiCisKKyNpbmNsdWRlICJhYnNsL3R5
cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJs
b2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ibG9iX2VuY29kaW5nLmgiCisjaW5jbHVkZSAi
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvZGVsdGFfZW5jb2RpbmcuaCIKKyNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfY29t
bW9uLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
YWxyX3N0YXRlLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcGxheW91dC5oIgorI2luY2x1ZGUgImxv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFt
X2NvbmZpZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfZGVsYXlfYmFzZWQuaCIKKyNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2xv
c3NfYmFzZWQuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19l
dmVudF9pY2VfY2FuZGlkYXRlX3BhaXIuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnLmgiCisjaW5jbHVk
ZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfY2x1c3Rlcl9j
cmVhdGVkLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZl
bnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfc3VjY2Vzcy5oIgorI2luY2x1ZGUgImxv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X2luY29taW5n
LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRj
cF9wYWNrZXRfb3V0Z29pbmcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9vdXRnb2luZy5oIgorI2lu
Y2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3JlY2Vp
dmVfc3RyZWFtX2NvbmZpZy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVu
dHMvcnRjX2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZy5oIgorI2luY2x1ZGUgImxvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtf
YWRhcHRvcl9jb25maWcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL3J0cF9jdm8uaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRw
X3J0Y3BfZGVmaW5lcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
cGFja2V0L2FwcC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFj
a2V0L2J5ZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0
L2NvbW1vbl9oZWFkZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC9leHRlbmRlZF9qaXR0ZXJfcmVwb3J0LmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvZXh0ZW5kZWRfcmVwb3J0cy5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3BzZmIuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9yZWNlaXZlcl9yZXBvcnQuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ydHBmYi5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3NkZXMuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9zZW5kZXJfcmVwb3J0LmgiCisj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldC5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2lnbm9yZV93dW5kZWYu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisKKy8vICoucGIuaCBmaWxlcyBhcmUg
Z2VuZXJhdGVkIGF0IGJ1aWxkLXRpbWUgYnkgdGhlIHByb3RvYnVmIGNvbXBpbGVyLgorUlRDX1BV
U0hfSUdOT1JJTkdfV1VOREVGKCkKKyNpZmRlZiBXRUJSVENfQU5EUk9JRF9QTEFURk9STV9CVUlM
RAorI2luY2x1ZGUgImV4dGVybmFsL3dlYnJ0Yy93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L3J0Y19ldmVudF9sb2cyLnBiLmgiCisjZWxzZQorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ydGNfZXZlbnRfbG9nMi5wYi5oIgorI2VuZGlmCitSVENfUE9QX0lHTk9SSU5HX1dVTkRF
RigpCisKK3VzaW5nIHdlYnJ0Y19ldmVudF9sb2dnaW5nOjpUb1Vuc2lnbmVkOworCituYW1lc3Bh
Y2Ugd2VicnRjIHsKKworbmFtZXNwYWNlIHsKK3J0Y2xvZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVz
OjpEZXRlY3RvclN0YXRlIENvbnZlcnRUb1Byb3RvRm9ybWF0KAorICAgIEJhbmR3aWR0aFVzYWdl
IHN0YXRlKSB7CisgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIEJhbmR3aWR0aFVzYWdlOjpr
QndOb3JtYWw6CisgICAgICByZXR1cm4gcnRjbG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkJX
RV9OT1JNQUw7CisgICAgY2FzZSBCYW5kd2lkdGhVc2FnZTo6a0J3VW5kZXJ1c2luZzoKKyAgICAg
IHJldHVybiBydGNsb2cyOjpEZWxheUJhc2VkQndlVXBkYXRlczo6QldFX1VOREVSVVNJTkc7Cisg
ICAgY2FzZSBCYW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5nOgorICAgICAgcmV0dXJuIHJ0Y2xv
ZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVzOjpCV0VfT1ZFUlVTSU5HOworICAgIGNhc2UgQmFuZHdp
ZHRoVXNhZ2U6OmtMYXN0OgorICAgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgfQorICBSVENfTk9U
UkVBQ0hFRCgpOworICByZXR1cm4gcnRjbG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkJXRV9V
TktOT1dOX1NUQVRFOworfQorCitydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1cmU6OkZhaWx1
cmVSZWFzb24gQ29udmVydFRvUHJvdG9Gb3JtYXQoCisgICAgUHJvYmVGYWlsdXJlUmVhc29uIGZh
aWx1cmVfcmVhc29uKSB7CisgIHN3aXRjaCAoZmFpbHVyZV9yZWFzb24pIHsKKyAgICBjYXNlIFBy
b2JlRmFpbHVyZVJlYXNvbjo6a0ludmFsaWRTZW5kUmVjZWl2ZUludGVydmFsOgorICAgICAgcmV0
dXJuIHJ0Y2xvZzI6OkJ3ZVByb2JlUmVzdWx0RmFpbHVyZTo6SU5WQUxJRF9TRU5EX1JFQ0VJVkVf
SU5URVJWQUw7CisgICAgY2FzZSBQcm9iZUZhaWx1cmVSZWFzb246OmtJbnZhbGlkU2VuZFJlY2Vp
dmVSYXRpbzoKKyAgICAgIHJldHVybiBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1cmU6OklO
VkFMSURfU0VORF9SRUNFSVZFX1JBVElPOworICAgIGNhc2UgUHJvYmVGYWlsdXJlUmVhc29uOjpr
VGltZW91dDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1cmU6OlRJ
TUVPVVQ7CisgICAgY2FzZSBQcm9iZUZhaWx1cmVSZWFzb246OmtMYXN0OgorICAgICAgUlRDX05P
VFJFQUNIRUQoKTsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gcnRjbG9nMjo6
QndlUHJvYmVSZXN1bHRGYWlsdXJlOjpVTktOT1dOOworfQorCisvLyBSZXR1cm5zIHRydWUgaWYg
dGhlcmUgYXJlIHJlY29nbml6ZWQgZXh0ZW5zaW9ucyB0aGF0IHdlIHNob3VsZCBsb2cKKy8vIGFu
ZCBmYWxzZSBpZiB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBvciBhbGwgZXh0ZW5zaW9ucyBhcmUg
dHlwZXMgd2UgZG9uJ3QKKy8vIGxvZy4gVGhlIHByb3RvYnVmIHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSBoZWFkZXIgY29uZmlncyBpcyB3cml0dGVuIHRvCisvLyB8cHJvdG9fY29uZmlnfC4KK2Jvb2wg
Q29udmVydFRvUHJvdG9Gb3JtYXQoY29uc3Qgc3RkOjp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiYgZXh0
ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjbG9nMjo6UnRwSGVhZGVyRXh0
ZW5zaW9uQ29uZmlnKiBwcm90b19jb25maWcpIHsKKyAgc2l6ZV90IHVua25vd25fZXh0ZW5zaW9u
cyA9IDA7CisgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9ucykgeworICAgIGlmIChl
eHRlbnNpb24udXJpID09IFJ0cEV4dGVuc2lvbjo6a0F1ZGlvTGV2ZWxVcmkpIHsKKyAgICAgIHBy
b3RvX2NvbmZpZy0+c2V0X2F1ZGlvX2xldmVsX2lkKGV4dGVuc2lvbi5pZCk7CisgICAgfSBlbHNl
IGlmIChleHRlbnNpb24udXJpID09IFJ0cEV4dGVuc2lvbjo6a1RpbWVzdGFtcE9mZnNldFVyaSkg
eworICAgICAgcHJvdG9fY29uZmlnLT5zZXRfdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X2lkKGV4
dGVuc2lvbi5pZCk7CisgICAgfSBlbHNlIGlmIChleHRlbnNpb24udXJpID09IFJ0cEV4dGVuc2lv
bjo6a0Fic1NlbmRUaW1lVXJpKSB7CisgICAgICBwcm90b19jb25maWctPnNldF9hYnNvbHV0ZV9z
ZW5kX3RpbWVfaWQoZXh0ZW5zaW9uLmlkKTsKKyAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbi51cmkg
PT0gUnRwRXh0ZW5zaW9uOjprVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJVcmkpIHsKKyAgICAgIHBy
b3RvX2NvbmZpZy0+c2V0X3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfaWQoZXh0ZW5zaW9uLmlk
KTsKKyAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbi51cmkgPT0gUnRwRXh0ZW5zaW9uOjprVmlkZW9S
b3RhdGlvblVyaSkgeworICAgICAgcHJvdG9fY29uZmlnLT5zZXRfdmlkZW9fcm90YXRpb25faWQo
ZXh0ZW5zaW9uLmlkKTsKKyAgICB9IGVsc2UgeworICAgICAgKyt1bmtub3duX2V4dGVuc2lvbnM7
CisgICAgfQorICB9CisgIHJldHVybiB1bmtub3duX2V4dGVuc2lvbnMgPCBleHRlbnNpb25zLnNp
emUoKTsKK30KKworcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SWNlQ2FuZGlkYXRl
UGFpckNvbmZpZ1R5cGUKK0NvbnZlcnRUb1Byb3RvRm9ybWF0KEljZUNhbmRpZGF0ZVBhaXJDb25m
aWdUeXBlIHR5cGUpIHsKKyAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnVHlwZTo6a0FkZGVkOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0
ZVBhaXJDb25maWc6OkFEREVEOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGU6
OmtVcGRhdGVkOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OlVQREFURUQ7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a0Rlc3Ryb3ll
ZDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpERVNUUk9Z
RUQ7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a1NlbGVjdGVkOgorICAg
ICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlNFTEVDVEVEOworICAg
IGNhc2UgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGU6OmtOdW1WYWx1ZXM6CisgICAgICBSVENf
Tk9UUkVBQ0hFRCgpOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBydGNsb2cy
OjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX0NPTkZJR19UWVBFOworfQorCitydGNs
b2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJY2VDYW5kaWRhdGVUeXBlIENvbnZlcnRUb1By
b3RvRm9ybWF0KAorICAgIEljZUNhbmRpZGF0ZVR5cGUgdHlwZSkgeworICBzd2l0Y2ggKHR5cGUp
IHsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVR5cGU6OmtVbmtub3duOgorICAgICAgcmV0dXJuIHJ0
Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fQ0FORElEQVRFX1RZUEU7Cisg
ICAgY2FzZSBJY2VDYW5kaWRhdGVUeXBlOjprTG9jYWw6CisgICAgICByZXR1cm4gcnRjbG9nMjo6
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6TE9DQUw7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVUeXBl
OjprU3R1bjoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpT
VFVOOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlVHlwZTo6a1ByZmx4OgorICAgICAgcmV0dXJuIHJ0
Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlBSRkxYOworICAgIGNhc2UgSWNlQ2FuZGlk
YXRlVHlwZTo6a1JlbGF5OgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJD
b25maWc6OlJFTEFZOworICAgIGNhc2UgSWNlQ2FuZGlkYXRlVHlwZTo6a051bVZhbHVlczoKKyAg
ICAgIFJUQ19OT1RSRUFDSEVEKCk7CisgIH0KKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJu
IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fQ0FORElEQVRFX1RZUEU7
Cit9CisKK3J0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlByb3RvY29sIENvbnZlcnRU
b1Byb3RvRm9ybWF0KAorICAgIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbCBwcm90b2NvbCkgewor
ICBzd2l0Y2ggKHByb3RvY29sKSB7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6
OmtVbmtub3duOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OlVOS05PV05fUFJPVE9DT0w7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtV
ZHA6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VURQOwor
ICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprVGNwOgorICAgICAgcmV0dXJuIHJ0
Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlRDUDsKKyAgICBjYXNlIEljZUNhbmRpZGF0
ZVBhaXJQcm90b2NvbDo6a1NzbHRjcDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnOjpTU0xUQ1A7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2w6
OmtUbHM6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VExT
OworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprTnVtVmFsdWVzOgorICAgICAg
UlRDX05PVFJFQUNIRUQoKTsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gcnRj
bG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9QUk9UT0NPTDsKK30KKworcnRj
bG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6QWRkcmVzc0ZhbWlseSBDb252ZXJ0VG9Qcm90
b0Zvcm1hdCgKKyAgICBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseSBhZGRyZXNzX2ZhbWls
eSkgeworICBzd2l0Y2ggKGFkZHJlc3NfZmFtaWx5KSB7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQ
YWlyQWRkcmVzc0ZhbWlseTo6a1Vua25vd246CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9BRERSRVNTX0ZBTUlMWTsKKyAgICBjYXNlIEljZUNh
bmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5OjprSXB2NDoKKyAgICAgIHJldHVybiBydGNsb2cyOjpJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJUFY0OworICAgIGNhc2UgSWNlQ2FuZGlkYXRlUGFpckFk
ZHJlc3NGYW1pbHk6OmtJcHY2OgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBh
aXJDb25maWc6OklQVjY7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6
a051bVZhbHVlczoKKyAgICAgIFJUQ19OT1RSRUFDSEVEKCk7CisgIH0KKyAgUlRDX05PVFJFQUNI
RUQoKTsKKyAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05f
QUREUkVTU19GQU1JTFk7Cit9CisKK3J0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6Ok5l
dHdvcmtUeXBlIENvbnZlcnRUb1Byb3RvRm9ybWF0KAorICAgIEljZUNhbmRpZGF0ZU5ldHdvcmtU
eXBlIG5ldHdvcmtfdHlwZSkgeworICBzd2l0Y2ggKG5ldHdvcmtfdHlwZSkgeworICAgIGNhc2Ug
SWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtVbmtub3duOgorICAgICAgcmV0dXJuIHJ0Y2xvZzI6
OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fTkVUV09SS19UWVBFOworICAgIGNhc2Ug
SWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtFdGhlcm5ldDoKKyAgICAgIHJldHVybiBydGNsb2cy
OjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpFVEhFUk5FVDsKKyAgICBjYXNlIEljZUNhbmRpZGF0
ZU5ldHdvcmtUeXBlOjprTG9vcGJhY2s6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlk
YXRlUGFpckNvbmZpZzo6TE9PUEJBQ0s7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVOZXR3b3JrVHlw
ZTo6a1dpZmk6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6
V0lGSTsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprVnBuOgorICAgICAgcmV0
dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlZQTjsKKyAgICBjYXNlIEljZUNh
bmRpZGF0ZU5ldHdvcmtUeXBlOjprQ2VsbHVsYXI6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNl
Q2FuZGlkYXRlUGFpckNvbmZpZzo6Q0VMTFVMQVI7CisgICAgY2FzZSBJY2VDYW5kaWRhdGVOZXR3
b3JrVHlwZTo6a051bVZhbHVlczoKKyAgICAgIFJUQ19OT1RSRUFDSEVEKCk7CisgIH0KKyAgUlRD
X05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OlVOS05PV05fTkVUV09SS19UWVBFOworfQorCitydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZl
bnQ6OkljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgQ29udmVydFRvUHJvdG9Gb3JtYXQoCisgICAg
SWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSB0eXBlKSB7CisgIHN3aXRjaCAodHlwZSkgeworICAg
IGNhc2UgSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0NoZWNrU2VudDoKKyAgICAgIHJldHVy
biBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6OkNIRUNLX1NFTlQ7CisgICAgY2FzZSBJ
Y2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tSZWNlaXZlZDoKKyAgICAgIHJldHVybiBy
dGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6OkNIRUNLX1JFQ0VJVkVEOworICAgIGNhc2Ug
SWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0NoZWNrUmVzcG9uc2VTZW50OgorICAgICAgcmV0
dXJuIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudDo6Q0hFQ0tfUkVTUE9OU0VfU0VOVDsK
KyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGU6OmtDaGVja1Jlc3BvbnNlUmVjZWl2
ZWQ6CisgICAgICByZXR1cm4gcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpDSEVDS19S
RVNQT05TRV9SRUNFSVZFRDsKKyAgICBjYXNlIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGU6OmtO
dW1WYWx1ZXM6CisgICAgICBSVENfTk9UUkVBQ0hFRCgpOworICB9CisgIFJUQ19OT1RSRUFDSEVE
KCk7CisgIHJldHVybiBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6OlVOS05PV05fQ0hF
Q0tfVFlQRTsKK30KKworLy8gQ29waWVzIGFsbCBSVENQIGJsb2NrcyBleGNlcHQgQVBQLCBTREVT
IGFuZCB1bmtub3duIGZyb20gfHBhY2tldHwgdG8KKy8vIHxidWZmZXJ8LiB8YnVmZmVyfCBtdXN0
IGhhdmUgc3BhY2UgZm9yIHxJUF9QQUNLRVRfU0laRXwgYnl0ZXMuIHxwYWNrZXR8IG11c3QKKy8v
IGJlIGF0IG1vc3QgfElQX1BBQ0tFVF9TSVpFfCBieXRlcyBsb25nLgorc2l6ZV90IFJlbW92ZU5v
bldoaXRlbGlzdGVkUnRjcEJsb2Nrcyhjb25zdCBydGM6OkJ1ZmZlciYgcGFja2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBidWZmZXIpIHsKKyAgUlRD
X0RDSEVDSyhwYWNrZXQuc2l6ZSgpIDw9IElQX1BBQ0tFVF9TSVpFKTsKKyAgUlRDX0RDSEVDSyhi
dWZmZXIgIT0gbnVsbHB0cik7CisgIHJ0Y3A6OkNvbW1vbkhlYWRlciBoZWFkZXI7CisgIGNvbnN0
IHVpbnQ4X3QqIGJsb2NrX2JlZ2luID0gcGFja2V0LmRhdGEoKTsKKyAgY29uc3QgdWludDhfdCog
cGFja2V0X2VuZCA9IHBhY2tldC5kYXRhKCkgKyBwYWNrZXQuc2l6ZSgpOworICBzaXplX3QgYnVm
ZmVyX2xlbmd0aCA9IDA7CisgIHdoaWxlIChibG9ja19iZWdpbiA8IHBhY2tldF9lbmQpIHsKKyAg
ICBpZiAoIWhlYWRlci5QYXJzZShibG9ja19iZWdpbiwgcGFja2V0X2VuZCAtIGJsb2NrX2JlZ2lu
KSkgeworICAgICAgYnJlYWs7ICAvLyBJbmNvcnJlY3QgbWVzc2FnZSBoZWFkZXIuCisgICAgfQor
ICAgIGNvbnN0IHVpbnQ4X3QqIG5leHRfYmxvY2sgPSBoZWFkZXIuTmV4dFBhY2tldCgpOworICAg
IFJUQ19EQ0hFQ0tfR1QobmV4dF9ibG9jaywgYmxvY2tfYmVnaW4pOworICAgIFJUQ19EQ0hFQ0tf
TEUobmV4dF9ibG9jaywgcGFja2V0X2VuZCk7CisgICAgc2l6ZV90IGJsb2NrX3NpemUgPSBuZXh0
X2Jsb2NrIC0gYmxvY2tfYmVnaW47CisgICAgc3dpdGNoIChoZWFkZXIudHlwZSgpKSB7CisgICAg
ICBjYXNlIHJ0Y3A6OkJ5ZTo6a1BhY2tldFR5cGU6CisgICAgICBjYXNlIHJ0Y3A6OkV4dGVuZGVk
Sml0dGVyUmVwb3J0OjprUGFja2V0VHlwZToKKyAgICAgIGNhc2UgcnRjcDo6RXh0ZW5kZWRSZXBv
cnRzOjprUGFja2V0VHlwZToKKyAgICAgIGNhc2UgcnRjcDo6UHNmYjo6a1BhY2tldFR5cGU6Cisg
ICAgICBjYXNlIHJ0Y3A6OlJlY2VpdmVyUmVwb3J0OjprUGFja2V0VHlwZToKKyAgICAgIGNhc2Ug
cnRjcDo6UnRwZmI6OmtQYWNrZXRUeXBlOgorICAgICAgY2FzZSBydGNwOjpTZW5kZXJSZXBvcnQ6
OmtQYWNrZXRUeXBlOgorICAgICAgICAvLyBXZSBsb2cgc2VuZGVyIHJlcG9ydHMsIHJlY2VpdmVy
IHJlcG9ydHMsIGJ5ZSBtZXNzYWdlcworICAgICAgICAvLyBpbnRlci1hcnJpdmFsIGppdHRlciwg
dGhpcmQtcGFydHkgbG9zcyByZXBvcnRzLCBwYXlsb2FkLXNwZWNpZmljCisgICAgICAgIC8vIGZl
ZWRiYWNrIGFuZCBleHRlbmRlZCByZXBvcnRzLgorICAgICAgICAvLyBUT0RPKHRlcmVsaXVzKTog
QXMgYW4gb3B0aW1pemF0aW9uLCBkb24ndCBjb3B5IGFueXRoaW5nIGlmIGFsbCBibG9ja3MKKyAg
ICAgICAgLy8gaW4gdGhlIHBhY2tldCBhcmUgd2hpdGVsaXN0ZWQgdHlwZXMuCisgICAgICAgIG1l
bWNweShidWZmZXIgKyBidWZmZXJfbGVuZ3RoLCBibG9ja19iZWdpbiwgYmxvY2tfc2l6ZSk7Cisg
ICAgICAgIGJ1ZmZlcl9sZW5ndGggKz0gYmxvY2tfc2l6ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIHJ0Y3A6OkFwcDo6a1BhY2tldFR5cGU6CisgICAgICBjYXNlIHJ0Y3A6OlNkZXM6OmtQ
YWNrZXRUeXBlOgorICAgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gV2UgZG9uJ3QgbG9nIHNlbmRl
ciBkZXNjcmlwdGlvbnMsIGFwcGxpY2F0aW9uIGRlZmluZWQgbWVzc2FnZXMKKyAgICAgICAgLy8g
b3IgbWVzc2FnZSBibG9ja3Mgb2YgdW5rbm93biB0eXBlLgorICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBibG9ja19iZWdpbiArPSBibG9ja19zaXplOworICB9CisgIHJldHVybiBidWZmZXJf
bGVuZ3RoOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXZlbnRUeXBlLCB0eXBlbmFtZSBQcm90
b1R5cGU+Cit2b2lkIEVuY29kZVJ0Y3BQYWNrZXQocnRjOjpBcnJheVZpZXc8Y29uc3QgRXZlbnRU
eXBlKj4gYmF0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgUHJvdG9UeXBlKiBwcm90b19iYXRj
aCkgeworICBpZiAoYmF0Y2guc2l6ZSgpID09IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAv
LyBCYXNlIGV2ZW50CisgIGNvbnN0IEV2ZW50VHlwZSogY29uc3QgYmFzZV9ldmVudCA9IGJhdGNo
WzBdOworICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3Rh
bXBfbXMoKSk7CisgIHsKKyAgICB1aW50OF90IGJ1ZmZlcltJUF9QQUNLRVRfU0laRV07CisgICAg
c2l6ZV90IGJ1ZmZlcl9sZW5ndGggPQorICAgICAgICBSZW1vdmVOb25XaGl0ZWxpc3RlZFJ0Y3BC
bG9ja3MoYmFzZV9ldmVudC0+cGFja2V0KCksIGJ1ZmZlcik7CisgICAgcHJvdG9fYmF0Y2gtPnNl
dF9yYXdfcGFja2V0KGJ1ZmZlciwgYnVmZmVyX2xlbmd0aCk7CisgIH0KKworICBpZiAoYmF0Y2gu
c2l6ZSgpID09IDEpIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBEZWx0YSBlbmNvZGluZwor
ICBwcm90b19iYXRjaC0+c2V0X251bWJlcl9vZl9kZWx0YXMoYmF0Y2guc2l6ZSgpIC0gMSk7Cisg
IHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVzKGJhdGNoLnNpemUo
KSAtIDEpOworICBzdGQ6OnN0cmluZyBlbmNvZGVkX2RlbHRhczsKKworICAvLyB0aW1lc3RhbXBf
bXMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBj
b25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IFRv
VW5zaWduZWQoZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9
IEVuY29kZURlbHRhcyhUb1Vuc2lnbmVkKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKSwgdmFs
dWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gt
PnNldF90aW1lc3RhbXBfbXNfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIHJh
d19wYWNrZXQKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHNjcnViZWRfcGFja2V0cyhiYXRj
aC5zaXplKCkgLSAxKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzY3J1YmVkX3BhY2tldHMu
c2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSArIDFd
OworICAgIHNjcnViZWRfcGFja2V0c1tpXS5yZXNpemUoZXZlbnQtPnBhY2tldCgpLnNpemUoKSk7
CisgICAgc3RhdGljX2Fzc2VydChzaXplb2Yoc3RkOjpzdHJpbmc6OnZhbHVlX3R5cGUpID09IHNp
emVvZih1aW50OF90KSwgIiIpOworICAgIGNvbnN0IHNpemVfdCBidWZmZXJfbGVuZ3RoID0gUmVt
b3ZlTm9uV2hpdGVsaXN0ZWRSdGNwQmxvY2tzKAorICAgICAgICBldmVudC0+cGFja2V0KCksIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZzY3J1YmVkX3BhY2tldHNbaV1bMF0pKTsKKyAgICBp
ZiAoYnVmZmVyX2xlbmd0aCA8IGV2ZW50LT5wYWNrZXQoKS5zaXplKCkpIHsKKyAgICAgIHNjcnVi
ZWRfcGFja2V0c1tpXS5yZXNpemUoYnVmZmVyX2xlbmd0aCk7CisgICAgfQorICB9CisgIHByb3Rv
X2JhdGNoLT5zZXRfcmF3X3BhY2tldF9ibG9icyhFbmNvZGVCbG9icyhzY3J1YmVkX3BhY2tldHMp
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEV2ZW50VHlwZSwgdHlwZW5hbWUgUHJvdG9UeXBl
Pgordm9pZCBFbmNvZGVSdHBQYWNrZXQoY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgRXZlbnRUeXBl
Kj4mIGJhdGNoLAorICAgICAgICAgICAgICAgICAgICAgUHJvdG9UeXBlKiBwcm90b19iYXRjaCkg
eworICBpZiAoYmF0Y2guc2l6ZSgpID09IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBC
YXNlIGV2ZW50CisgIGNvbnN0IEV2ZW50VHlwZSogY29uc3QgYmFzZV9ldmVudCA9IGJhdGNoWzBd
OworICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBf
bXMoKSk7CisgIHByb3RvX2JhdGNoLT5zZXRfbWFya2VyKGJhc2VfZXZlbnQtPmhlYWRlcigpLk1h
cmtlcigpKTsKKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IElzIHBheWxvYWQgdHlwZSBuZWVkZWQ/Cisg
IHByb3RvX2JhdGNoLT5zZXRfcGF5bG9hZF90eXBlKGJhc2VfZXZlbnQtPmhlYWRlcigpLlBheWxv
YWRUeXBlKCkpOworICBwcm90b19iYXRjaC0+c2V0X3NlcXVlbmNlX251bWJlcihiYXNlX2V2ZW50
LT5oZWFkZXIoKS5TZXF1ZW5jZU51bWJlcigpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF9ydHBfdGlt
ZXN0YW1wKGJhc2VfZXZlbnQtPmhlYWRlcigpLlRpbWVzdGFtcCgpKTsKKyAgcHJvdG9fYmF0Y2gt
PnNldF9zc3JjKGJhc2VfZXZlbnQtPmhlYWRlcigpLlNzcmMoKSk7CisgIHByb3RvX2JhdGNoLT5z
ZXRfcGF5bG9hZF9zaXplKGJhc2VfZXZlbnQtPnBheWxvYWRfbGVuZ3RoKCkpOworICBwcm90b19i
YXRjaC0+c2V0X2hlYWRlcl9zaXplKGJhc2VfZXZlbnQtPmhlYWRlcl9sZW5ndGgoKSk7CisgIHBy
b3RvX2JhdGNoLT5zZXRfcGFkZGluZ19zaXplKGJhc2VfZXZlbnQtPnBhZGRpbmdfbGVuZ3RoKCkp
OworCisgIC8vIEFkZCBoZWFkZXIgZXh0ZW5zaW9ucyAoYmFzZSBldmVudCkuCisgIGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90PiBiYXNlX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXI7CisgIHsKKyAg
ICB1aW50MTZfdCBzZXFudW07CisgICAgaWYgKGJhc2VfZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRl
IEdldEV4dGVuc2lvbjxUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcj4oCisgICAgICAgICAgICAmc2Vx
bnVtKSkgeworICAgICAgcHJvdG9fYmF0Y2gtPnNldF90cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVy
KHNlcW51bSk7CisgICAgICBiYXNlX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIgPSBzZXFudW07
CisgICAgfQorICB9CisKKyAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHVuc2lnbmVkX2Jhc2Vf
dHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0OworICB7CisgICAgaW50MzJfdCBvZmZzZXQ7CisgICAg
aWYgKGJhc2VfZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRlIEdldEV4dGVuc2lvbjxUcmFuc21pc3Np
b25PZmZzZXQ+KAorICAgICAgICAgICAgJm9mZnNldCkpIHsKKyAgICAgIHByb3RvX2JhdGNoLT5z
ZXRfdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0KG9mZnNldCk7CisgICAgICB1bnNpZ25lZF9iYXNl
X3RyYW5zbWlzc2lvbl90aW1lX29mZnNldCA9IFRvVW5zaWduZWQob2Zmc2V0KTsKKyAgICB9Cisg
IH0KKworICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZV9hYnNvbHV0ZV9zZW5kX3RpbWU7
CisgIHsKKyAgICB1aW50MzJfdCBzZW5kdGltZTsKKyAgICBpZiAoYmFzZV9ldmVudC0+aGVhZGVy
KCkudGVtcGxhdGUgR2V0RXh0ZW5zaW9uPEFic29sdXRlU2VuZFRpbWU+KAorICAgICAgICAgICAg
JnNlbmR0aW1lKSkgeworICAgICAgcHJvdG9fYmF0Y2gtPnNldF9hYnNvbHV0ZV9zZW5kX3RpbWUo
c2VuZHRpbWUpOworICAgICAgYmFzZV9hYnNvbHV0ZV9zZW5kX3RpbWUgPSBzZW5kdGltZTsKKyAg
ICB9CisgIH0KKworICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZV92aWRlb19yb3RhdGlv
bjsKKyAgeworICAgIFZpZGVvUm90YXRpb24gdmlkZW9fcm90YXRpb247CisgICAgaWYgKGJhc2Vf
ZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRlIEdldEV4dGVuc2lvbjxWaWRlb09yaWVudGF0aW9uPigK
KyAgICAgICAgICAgICZ2aWRlb19yb3RhdGlvbikpIHsKKyAgICAgIHByb3RvX2JhdGNoLT5zZXRf
dmlkZW9fcm90YXRpb24oCisgICAgICAgICAgQ29udmVydFZpZGVvUm90YXRpb25Ub0NWT0J5dGUo
dmlkZW9fcm90YXRpb24pKTsKKyAgICAgIGJhc2VfdmlkZW9fcm90YXRpb24gPSBDb252ZXJ0Vmlk
ZW9Sb3RhdGlvblRvQ1ZPQnl0ZSh2aWRlb19yb3RhdGlvbik7CisgICAgfQorICB9CisKKyAgYWJz
bDo6b3B0aW9uYWw8dWludDY0X3Q+IGJhc2VfYXVkaW9fbGV2ZWw7CisgIGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90PiBiYXNlX3ZvaWNlX2FjdGl2aXR5OworICB7CisgICAgYm9vbCB2b2ljZV9hY3Rp
dml0eTsKKyAgICB1aW50OF90IGF1ZGlvX2xldmVsOworICAgIGlmIChiYXNlX2V2ZW50LT5oZWFk
ZXIoKS50ZW1wbGF0ZSBHZXRFeHRlbnNpb248QXVkaW9MZXZlbD4oJnZvaWNlX2FjdGl2aXR5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmF1ZGlvX2xldmVsKSkgeworICAgICAgUlRDX0RDSEVDS19MRShhdWRpb19sZXZlbCwg
MHg3RnUpOworICAgICAgYmFzZV9hdWRpb19sZXZlbCA9IGF1ZGlvX2xldmVsOworICAgICAgcHJv
dG9fYmF0Y2gtPnNldF9hdWRpb19sZXZlbChhdWRpb19sZXZlbCk7CisKKyAgICAgIGJhc2Vfdm9p
Y2VfYWN0aXZpdHkgPSB2b2ljZV9hY3Rpdml0eTsKKyAgICAgIHByb3RvX2JhdGNoLT5zZXRfdm9p
Y2VfYWN0aXZpdHkodm9pY2VfYWN0aXZpdHkpOworICAgIH0KKyAgfQorCisgIGlmIChiYXRjaC5z
aXplKCkgPT0gMSkgeworICAgIHJldHVybjsKKyAgfQorCisgIC8vIERlbHRhIGVuY29kaW5nCisg
IHByb3RvX2JhdGNoLT5zZXRfbnVtYmVyX29mX2RlbHRhcyhiYXRjaC5zaXplKCkgLSAxKTsKKyAg
c3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2YWx1ZXMoYmF0Y2guc2l6ZSgp
IC0gMSk7CisgIHN0ZDo6c3RyaW5nIGVuY29kZWRfZGVsdGFzOworCisgIC8vIHRpbWVzdGFtcF9t
cyAoZXZlbnQpCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7
CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNb
aV0gPSBUb1Vuc2lnbmVkKGV2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgIH0KKyAgZW5jb2RlZF9k
ZWx0YXMgPSBFbmNvZGVEZWx0YXMoVG9VbnNpZ25lZChiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMo
KSksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3Rv
X2JhdGNoLT5zZXRfdGltZXN0YW1wX21zX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKwor
ICAvLyBtYXJrZXIgKFJUUCBiYXNlKQorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5z
aXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07
CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmhlYWRlcigpLk1hcmtlcigpOworICB9CisgIGVuY29k
ZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPmhlYWRlcigpLk1hcmtlcigpLCB2
YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRj
aC0+c2V0X21hcmtlcl9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gcGF5bG9h
ZF90eXBlIChSVFAgYmFzZSkKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAg
IHZhbHVlc1tpXSA9IGV2ZW50LT5oZWFkZXIoKS5QYXlsb2FkVHlwZSgpOworICB9CisgIGVuY29k
ZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPmhlYWRlcigpLlBheWxvYWRUeXBl
KCksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3Rv
X2JhdGNoLT5zZXRfcGF5bG9hZF90eXBlX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKwor
ICAvLyBzZXF1ZW5jZV9udW1iZXIgKFJUUCBiYXNlKQorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRj
aFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmhlYWRlcigpLlNlcXVlbmNlTnVtYmVy
KCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV9ldmVudC0+aGVh
ZGVyKCkuU2VxdWVuY2VOdW1iZXIoKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5l
bXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9zZXF1ZW5jZV9udW1iZXJfZGVsdGFzKGVu
Y29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIHJ0cF90aW1lc3RhbXAgKFJUUCBiYXNlKQorICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2
ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmhl
YWRlcigpLlRpbWVzdGFtcCgpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFz
KGJhc2VfZXZlbnQtPmhlYWRlcigpLlRpbWVzdGFtcCgpLCB2YWx1ZXMpOworICBpZiAoIWVuY29k
ZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X3J0cF90aW1lc3RhbXBf
ZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIHNzcmMgKFJUUCBiYXNlKQorICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2
ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQtPmhl
YWRlcigpLlNzcmMoKTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNl
X2V2ZW50LT5oZWFkZXIoKS5Tc3JjKCksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMu
ZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfc3NyY19kZWx0YXMoZW5jb2RlZF9kZWx0
YXMpOworICB9CisKKyAgLy8gcGF5bG9hZF9zaXplIChSVFAgYmFzZSkKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2
ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IGV2ZW50LT5wYXlsb2FkX2xlbmd0
aCgpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPnBh
eWxvYWRfbGVuZ3RoKCksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkg
eworICAgIHByb3RvX2JhdGNoLT5zZXRfcGF5bG9hZF9zaXplX2RlbHRhcyhlbmNvZGVkX2RlbHRh
cyk7CisgIH0KKworICAvLyBoZWFkZXJfc2l6ZSAoUlRQIGJhc2UpCisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVu
dCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBldmVudC0+aGVhZGVyX2xlbmd0aCgp
OworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPmhlYWRl
cl9sZW5ndGgoKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7Cisg
ICAgcHJvdG9fYmF0Y2gtPnNldF9oZWFkZXJfc2l6ZV9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOwor
ICB9CisKKyAgLy8gcGFkZGluZ19zaXplIChSVFAgYmFzZSkKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBFdmVudFR5cGUqIGV2ZW50ID0g
YmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IGV2ZW50LT5wYWRkaW5nX2xlbmd0aCgpOwor
ICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPnBhZGRpbmdf
bGVuZ3RoKCksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAg
IHByb3RvX2JhdGNoLT5zZXRfcGFkZGluZ19zaXplX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7Cisg
IH0KKworICAvLyB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyIChSVFAgZXh0ZW5zaW9uKQorICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IEV2
ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdWludDE2X3Qgc2VxbnVtOworICAg
IGlmIChldmVudC0+aGVhZGVyKCkudGVtcGxhdGUgR2V0RXh0ZW5zaW9uPFRyYW5zcG9ydFNlcXVl
bmNlTnVtYmVyPigKKyAgICAgICAgICAgICZzZXFudW0pKSB7CisgICAgICB2YWx1ZXNbaV0gPSBz
ZXFudW07CisgICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tpXS5yZXNldCgpOworICAgIH0KKyAg
fQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX3RyYW5zcG9ydF9zZXF1ZW5j
ZV9udW1iZXIsIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAg
IHByb3RvX2JhdGNoLT5zZXRfdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9kZWx0YXMoZW5jb2Rl
ZF9kZWx0YXMpOworICB9CisKKyAgLy8gdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0IChSVFAgZXh0
ZW5zaW9uKQorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgewor
ICAgIGNvbnN0IEV2ZW50VHlwZSogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgaW50MzJfdCBv
ZmZzZXQ7CisgICAgaWYgKGV2ZW50LT5oZWFkZXIoKS50ZW1wbGF0ZSBHZXRFeHRlbnNpb248VHJh
bnNtaXNzaW9uT2Zmc2V0Pigmb2Zmc2V0KSkgeworICAgICAgdmFsdWVzW2ldID0gVG9VbnNpZ25l
ZChvZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICB2YWx1ZXNbaV0ucmVzZXQoKTsKKyAgICB9
CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXModW5zaWduZWRfYmFzZV90cmFu
c21pc3Npb25fdGltZV9vZmZzZXQsIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1w
dHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X2Rl
bHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyBhYnNvbHV0ZV9zZW5kX3RpbWUgKFJU
UCBleHRlbnNpb24pCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytp
KSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB1aW50
MzJfdCBzZW5kdGltZTsKKyAgICBpZiAoZXZlbnQtPmhlYWRlcigpLnRlbXBsYXRlIEdldEV4dGVu
c2lvbjxBYnNvbHV0ZVNlbmRUaW1lPigmc2VuZHRpbWUpKSB7CisgICAgICB2YWx1ZXNbaV0gPSBz
ZW5kdGltZTsKKyAgICB9IGVsc2UgeworICAgICAgdmFsdWVzW2ldLnJlc2V0KCk7CisgICAgfQor
ICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJhc2VfYWJzb2x1dGVfc2VuZF90
aW1lLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90
b19iYXRjaC0+c2V0X2Fic29sdXRlX3NlbmRfdGltZV9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOwor
ICB9CisKKyAgLy8gdmlkZW9fcm90YXRpb24gKFJUUCBleHRlbnNpb24pCisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBl
dmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICBWaWRlb1JvdGF0aW9uIHZpZGVvX3JvdGF0aW9uOwor
ICAgIGlmIChldmVudC0+aGVhZGVyKCkudGVtcGxhdGUgR2V0RXh0ZW5zaW9uPFZpZGVvT3JpZW50
YXRpb24+KAorICAgICAgICAgICAgJnZpZGVvX3JvdGF0aW9uKSkgeworICAgICAgdmFsdWVzW2ld
ID0gQ29udmVydFZpZGVvUm90YXRpb25Ub0NWT0J5dGUodmlkZW9fcm90YXRpb24pOworICAgIH0g
ZWxzZSB7CisgICAgICB2YWx1ZXNbaV0ucmVzZXQoKTsKKyAgICB9CisgIH0KKyAgZW5jb2RlZF9k
ZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV92aWRlb19yb3RhdGlvbiwgdmFsdWVzKTsKKyAgaWYg
KCFlbmNvZGVkX2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF92aWRlb19y
b3RhdGlvbl9kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gYXVkaW9fbGV2ZWwg
KFJUUCBleHRlbnNpb24pCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsg
KytpKSB7CisgICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICBi
b29sIHZvaWNlX2FjdGl2aXR5OworICAgIHVpbnQ4X3QgYXVkaW9fbGV2ZWw7CisgICAgaWYgKGV2
ZW50LT5oZWFkZXIoKS50ZW1wbGF0ZSBHZXRFeHRlbnNpb248QXVkaW9MZXZlbD4oJnZvaWNlX2Fj
dGl2aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZhdWRpb19sZXZlbCkpIHsKKyAgICAgIFJUQ19EQ0hFQ0tfTEUoYXVkaW9fbGV2
ZWwsIDB4N0Z1KTsKKyAgICAgIHZhbHVlc1tpXSA9IGF1ZGlvX2xldmVsOworICAgIH0gZWxzZSB7
CisgICAgICB2YWx1ZXNbaV0ucmVzZXQoKTsKKyAgICB9CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMg
PSBFbmNvZGVEZWx0YXMoYmFzZV9hdWRpb19sZXZlbCwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVk
X2RlbHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9hdWRpb19sZXZlbF9kZWx0
YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gdm9pY2VfYWN0aXZpdHkgKFJUUCBleHRl
bnNpb24pCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7Cisg
ICAgY29uc3QgRXZlbnRUeXBlKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICBib29sIHZvaWNl
X2FjdGl2aXR5OworICAgIHVpbnQ4X3QgYXVkaW9fbGV2ZWw7CisgICAgaWYgKGV2ZW50LT5oZWFk
ZXIoKS50ZW1wbGF0ZSBHZXRFeHRlbnNpb248QXVkaW9MZXZlbD4oJnZvaWNlX2FjdGl2aXR5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZhdWRpb19sZXZlbCkpIHsKKyAgICAgIFJUQ19EQ0hFQ0tfTEUoYXVkaW9fbGV2ZWwsIDB4N0Z1
KTsKKyAgICAgIHZhbHVlc1tpXSA9IHZvaWNlX2FjdGl2aXR5OworICAgIH0gZWxzZSB7CisgICAg
ICB2YWx1ZXNbaV0ucmVzZXQoKTsKKyAgICB9CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNv
ZGVEZWx0YXMoYmFzZV92b2ljZV9hY3Rpdml0eSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2Rl
bHRhcy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF92b2ljZV9hY3Rpdml0eV9kZWx0
YXMoZW5jb2RlZF9kZWx0YXMpOworICB9Cit9Cit9ICAvLyBuYW1lc3BhY2UKKworc3RkOjpzdHJp
bmcgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVMb2dTdGFydChpbnQ2NF90IHRp
bWVzdGFtcF91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCB1dGNfdGltZV91cykgeworICBydGNsb2cyOjpFdmVudFN0cmVh
bSBldmVudF9zdHJlYW07CisgIHJ0Y2xvZzI6OkJlZ2luTG9nRXZlbnQqIHByb3RvX2JhdGNoID0g
ZXZlbnRfc3RyZWFtLmFkZF9iZWdpbl9sb2dfZXZlbnRzKCk7CisgIHByb3RvX2JhdGNoLT5zZXRf
dGltZXN0YW1wX21zKHRpbWVzdGFtcF91cyAvIDEwMDApOworICBwcm90b19iYXRjaC0+c2V0X3Zl
cnNpb24oMik7CisgIHByb3RvX2JhdGNoLT5zZXRfdXRjX3RpbWVfbXModXRjX3RpbWVfdXMgLyAx
MDAwKTsKKyAgcmV0dXJuIGV2ZW50X3N0cmVhbS5TZXJpYWxpemVBc1N0cmluZygpOworfQorCitz
dGQ6OnN0cmluZyBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZUxvZ0VuZChpbnQ2
NF90IHRpbWVzdGFtcF91cykgeworICBydGNsb2cyOjpFdmVudFN0cmVhbSBldmVudF9zdHJlYW07
CisgIHJ0Y2xvZzI6OkVuZExvZ0V2ZW50KiBwcm90b19iYXRjaCA9IGV2ZW50X3N0cmVhbS5hZGRf
ZW5kX2xvZ19ldmVudHMoKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXModGltZXN0
YW1wX3VzIC8gMTAwMCk7CisgIHJldHVybiBldmVudF9zdHJlYW0uU2VyaWFsaXplQXNTdHJpbmco
KTsKK30KKworc3RkOjpzdHJpbmcgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVC
YXRjaCgKKyAgICBzdGQ6OmRlcXVlPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4+Ojpjb25zdF9p
dGVyYXRvciBiZWdpbiwKKyAgICBzdGQ6OmRlcXVlPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4+
Ojpjb25zdF9pdGVyYXRvciBlbmQpIHsKKyAgcnRjbG9nMjo6RXZlbnRTdHJlYW0gZXZlbnRfc3Ry
ZWFtOworICBzdGQ6OnN0cmluZyBlbmNvZGVkX291dHB1dDsKKworICB7CisgICAgc3RkOjp2ZWN0
b3I8Y29uc3QgUnRjRXZlbnRBbHJTdGF0ZSo+IGFscl9zdGF0ZV9ldmVudHM7CisgICAgc3RkOjp2
ZWN0b3I8Y29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKj4KKyAgICAgICAgYXVk
aW9fbmV0d29ya19hZGFwdGF0aW9uX2V2ZW50czsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNF
dmVudEF1ZGlvUGxheW91dCo+IGF1ZGlvX3BsYXlvdXRfZXZlbnRzOworICAgIHN0ZDo6dmVjdG9y
PGNvbnN0IFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnKj4KKyAgICAgICAgYXVkaW9f
cmVjdl9zdHJlYW1fY29uZmlnczsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudEF1ZGlv
U2VuZFN0cmVhbUNvbmZpZyo+IGF1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZ3M7CisgICAgc3RkOjp2
ZWN0b3I8Y29uc3QgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkKj4gYndlX2RlbGF5X2Jhc2Vk
X3VwZGF0ZXM7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFz
ZWQqPiBid2VfbG9zc19iYXNlZF91cGRhdGVzOworICAgIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2
ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCo+CisgICAgICAgIHByb2JlX2NsdXN0ZXJfY3JlYXRlZF9l
dmVudHM7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUq
PiBwcm9iZV9yZXN1bHRfZmFpbHVyZV9ldmVudHM7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRj
RXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3MqPiBwcm9iZV9yZXN1bHRfc3VjY2Vzc19ldmVudHM7Cisg
ICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmcqPiBpbmNvbWlu
Z19ydGNwX3BhY2tldHM7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRSdGNwUGFja2V0
T3V0Z29pbmcqPiBvdXRnb2luZ19ydGNwX3BhY2tldHM7CisgICAgc3RkOjptYXA8dWludDMyX3Qg
LyogU1NSQyAqLywgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyo+
PgorICAgICAgICBpbmNvbWluZ19ydHBfcGFja2V0czsKKyAgICBzdGQ6Om1hcDx1aW50MzJfdCAv
KiBTU1JDICovLCBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nKj4+
CisgICAgICAgIG91dGdvaW5nX3J0cF9wYWNrZXRzOworICAgIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0
Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnKj4KKyAgICAgICAgdmlkZW9fcmVjdl9zdHJl
YW1fY29uZmlnczsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudFZpZGVvU2VuZFN0cmVh
bUNvbmZpZyo+IHZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZ3M7CisgICAgc3RkOjp2ZWN0b3I8Y29u
c3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKj4gaWNlX2NhbmRpZGF0ZV9jb25maWdz
OworICAgIHN0ZDo6dmVjdG9yPGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcio+IGljZV9j
YW5kaWRhdGVfZXZlbnRzOworCisgICAgZm9yIChhdXRvIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgc3dpdGNoICgoKml0KS0+R2V0VHlwZSgpKSB7CisgICAgICAgIGNhc2Ug
UnRjRXZlbnQ6OlR5cGU6OkFsclN0YXRlRXZlbnQ6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZl
bnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBSdGNFdmVudEFsclN0YXRlKiBj
b25zdD4oaXQtPmdldCgpKTsKKyAgICAgICAgICBhbHJfc3RhdGVfZXZlbnRzLnB1c2hfYmFjayhy
dGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRj
RXZlbnQ6OlR5cGU6OkF1ZGlvTmV0d29ya0FkYXB0YXRpb246IHsKKyAgICAgICAgICBhdXRvKiBy
dGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBSdGNFdmVudEF1ZGlv
TmV0d29ya0FkYXB0YXRpb24qIGNvbnN0PigKKyAgICAgICAgICAgICAgICAgIGl0LT5nZXQoKSk7
CisgICAgICAgICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uX2V2ZW50cy5wdXNoX2JhY2socnRj
X2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2
ZW50OjpUeXBlOjpBdWRpb1BsYXlvdXQ6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQor
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBSdGNFdmVudEF1ZGlvUGxheW91dCogY29u
c3Q+KGl0LT5nZXQoKSk7CisgICAgICAgICAgYXVkaW9fcGxheW91dF9ldmVudHMucHVzaF9iYWNr
KHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBS
dGNFdmVudDo6VHlwZTo6QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnOiB7CisgICAgICAgICAgYXV0
byogcnRjX2V2ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRB
dWRpb1JlY2VpdmVTdHJlYW1Db25maWcqIGNvbnN0PigKKyAgICAgICAgICAgICAgICAgIGl0LT5n
ZXQoKSk7CisgICAgICAgICAgYXVkaW9fcmVjdl9zdHJlYW1fY29uZmlncy5wdXNoX2JhY2socnRj
X2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2
ZW50OjpUeXBlOjpBdWRpb1NlbmRTdHJlYW1Db25maWc6IHsKKyAgICAgICAgICBhdXRvKiBydGNf
ZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBSdGNFdmVudEF1ZGlvU2Vu
ZFN0cmVhbUNvbmZpZyogY29uc3Q+KAorICAgICAgICAgICAgICAgICAgaXQtPmdldCgpKTsKKyAg
ICAgICAgICBhdWRpb19zZW5kX3N0cmVhbV9jb25maWdzLnB1c2hfYmFjayhydGNfZXZlbnQpOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6
OkJ3ZVVwZGF0ZURlbGF5QmFzZWQ6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQq
IGNvbnN0PihpdC0+Z2V0KCkpOworICAgICAgICAgIGJ3ZV9kZWxheV9iYXNlZF91cGRhdGVzLnB1
c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgUnRjRXZlbnQ6OlR5cGU6OkJ3ZVVwZGF0ZUxvc3NCYXNlZDogeworICAgICAgICAgIGF1
dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50
QndlVXBkYXRlTG9zc0Jhc2VkKiBjb25zdD4oaXQtPmdldCgpKTsKKyAgICAgICAgICBid2VfbG9z
c19iYXNlZF91cGRhdGVzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OlByb2JlQ2x1c3RlckNyZWF0
ZWQ6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQqIGNvbnN0PihpdC0+Z2V0KCkp
OworICAgICAgICAgIHByb2JlX2NsdXN0ZXJfY3JlYXRlZF9ldmVudHMucHVzaF9iYWNrKHJ0Y19l
dmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNFdmVu
dDo6VHlwZTo6UHJvYmVSZXN1bHRGYWlsdXJlOiB7CisgICAgICAgICAgYXV0byogcnRjX2V2ZW50
ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdEZh
aWx1cmUqIGNvbnN0PihpdC0+Z2V0KCkpOworICAgICAgICAgIHByb2JlX3Jlc3VsdF9mYWlsdXJl
X2V2ZW50cy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpQcm9iZVJlc3VsdFN1Y2Nlc3M6IHsKKyAg
ICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2VzcyogY29uc3Q+KGl0LT5nZXQoKSk7CisgICAgICAg
ICAgcHJvYmVfcmVzdWx0X3N1Y2Nlc3NfZXZlbnRzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OlJ0
Y3BQYWNrZXRJbmNvbWluZzogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nKiBjb25z
dD4oaXQtPmdldCgpKTsKKyAgICAgICAgICBpbmNvbWluZ19ydGNwX3BhY2tldHMucHVzaF9iYWNr
KHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBS
dGNFdmVudDo6VHlwZTo6UnRjcFBhY2tldE91dGdvaW5nOiB7CisgICAgICAgICAgYXV0byogcnRj
X2V2ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUnRjRXZlbnRSdGNwUGFj
a2V0T3V0Z29pbmcqIGNvbnN0PihpdC0+Z2V0KCkpOworICAgICAgICAgIG91dGdvaW5nX3J0Y3Bf
cGFja2V0cy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpSdHBQYWNrZXRJbmNvbWluZzogeworICAg
ICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0
IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcqIGNvbnN0PihpdC0+Z2V0KCkpOworICAgICAgICAg
IGF1dG8mIHYgPSBpbmNvbWluZ19ydHBfcGFja2V0c1tydGNfZXZlbnQtPmhlYWRlcigpLlNzcmMo
KV07CisgICAgICAgICAgdi5lbXBsYWNlX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpSdHBQYWNrZXRPdXRn
b2luZzogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmcqIGNvbnN0PihpdC0+Z2V0KCkp
OworICAgICAgICAgIGF1dG8mIHYgPSBvdXRnb2luZ19ydHBfcGFja2V0c1tydGNfZXZlbnQtPmhl
YWRlcigpLlNzcmMoKV07CisgICAgICAgICAgdi5lbXBsYWNlX2JhY2socnRjX2V2ZW50KTsKKyAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJ0Y0V2ZW50OjpUeXBlOjpW
aWRlb1JlY2VpdmVTdHJlYW1Db25maWc6IHsKKyAgICAgICAgICBhdXRvKiBydGNfZXZlbnQgPQor
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVh
bUNvbmZpZyogY29uc3Q+KAorICAgICAgICAgICAgICAgICAgaXQtPmdldCgpKTsKKyAgICAgICAg
ICB2aWRlb19yZWN2X3N0cmVhbV9jb25maWdzLnB1c2hfYmFjayhydGNfZXZlbnQpOworICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUnRjRXZlbnQ6OlR5cGU6OlZpZGVv
U2VuZFN0cmVhbUNvbmZpZzogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnKiBj
b25zdD4oCisgICAgICAgICAgICAgICAgICBpdC0+Z2V0KCkpOworICAgICAgICAgIHZpZGVvX3Nl
bmRfc3RyZWFtX2NvbmZpZ3MucHVzaF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6SWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZzogeworICAgICAgICAgIGF1dG8qIHJ0Y19ldmVudCA9CisgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyogY29uc3Q+KAor
ICAgICAgICAgICAgICAgICAgaXQtPmdldCgpKTsKKyAgICAgICAgICBpY2VfY2FuZGlkYXRlX2Nv
bmZpZ3MucHVzaF9iYWNrKHJ0Y19ldmVudCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBSdGNFdmVudDo6VHlwZTo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OiB7Cisg
ICAgICAgICAgYXV0byogcnRjX2V2ZW50ID0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29u
c3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyKiBjb25zdD4oaXQtPmdldCgpKTsKKyAgICAgICAg
ICBpY2VfY2FuZGlkYXRlX2V2ZW50cy5wdXNoX2JhY2socnRjX2V2ZW50KTsKKyAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIEVuY29kZUFsclN0YXRlKGFs
cl9zdGF0ZV9ldmVudHMsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZUF1ZGlvTmV0d29ya0Fk
YXB0YXRpb24oYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uX2V2ZW50cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZUF1ZGlvUGxheW91
dChhdWRpb19wbGF5b3V0X2V2ZW50cywgJmV2ZW50X3N0cmVhbSk7CisgICAgRW5jb2RlQXVkaW9S
ZWN2U3RyZWFtQ29uZmlnKGF1ZGlvX3JlY3Zfc3RyZWFtX2NvbmZpZ3MsICZldmVudF9zdHJlYW0p
OworICAgIEVuY29kZUF1ZGlvU2VuZFN0cmVhbUNvbmZpZyhhdWRpb19zZW5kX3N0cmVhbV9jb25m
aWdzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVCd2VVcGRhdGVEZWxheUJhc2VkKGJ3ZV9k
ZWxheV9iYXNlZF91cGRhdGVzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVCd2VVcGRhdGVM
b3NzQmFzZWQoYndlX2xvc3NfYmFzZWRfdXBkYXRlcywgJmV2ZW50X3N0cmVhbSk7CisgICAgRW5j
b2RlUHJvYmVDbHVzdGVyQ3JlYXRlZChwcm9iZV9jbHVzdGVyX2NyZWF0ZWRfZXZlbnRzLCAmZXZl
bnRfc3RyZWFtKTsKKyAgICBFbmNvZGVQcm9iZVJlc3VsdEZhaWx1cmUocHJvYmVfcmVzdWx0X2Zh
aWx1cmVfZXZlbnRzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVQcm9iZVJlc3VsdFN1Y2Nl
c3MocHJvYmVfcmVzdWx0X3N1Y2Nlc3NfZXZlbnRzLCAmZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNv
ZGVSdGNwUGFja2V0SW5jb21pbmcoaW5jb21pbmdfcnRjcF9wYWNrZXRzLCAmZXZlbnRfc3RyZWFt
KTsKKyAgICBFbmNvZGVSdGNwUGFja2V0T3V0Z29pbmcob3V0Z29pbmdfcnRjcF9wYWNrZXRzLCAm
ZXZlbnRfc3RyZWFtKTsKKyAgICBFbmNvZGVSdHBQYWNrZXRJbmNvbWluZyhpbmNvbWluZ19ydHBf
cGFja2V0cywgJmV2ZW50X3N0cmVhbSk7CisgICAgRW5jb2RlUnRwUGFja2V0T3V0Z29pbmcob3V0
Z29pbmdfcnRwX3BhY2tldHMsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZVZpZGVvUmVjdlN0
cmVhbUNvbmZpZyh2aWRlb19yZWN2X3N0cmVhbV9jb25maWdzLCAmZXZlbnRfc3RyZWFtKTsKKyAg
ICBFbmNvZGVWaWRlb1NlbmRTdHJlYW1Db25maWcodmlkZW9fc2VuZF9zdHJlYW1fY29uZmlncywg
JmV2ZW50X3N0cmVhbSk7CisgICAgRW5jb2RlSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyhpY2VfY2Fu
ZGlkYXRlX2NvbmZpZ3MsICZldmVudF9zdHJlYW0pOworICAgIEVuY29kZUljZUNhbmRpZGF0ZVBh
aXJFdmVudChpY2VfY2FuZGlkYXRlX2V2ZW50cywgJmV2ZW50X3N0cmVhbSk7CisgIH0gIC8vIERl
YWxsb2NhdGUgdGhlIHRlbXBvcmFyeSB2ZWN0b3JzLgorCisgIHJldHVybiBldmVudF9zdHJlYW0u
U2VyaWFsaXplQXNTdHJpbmcoKTsKK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3Jt
YXQ6OkVuY29kZUFsclN0YXRlKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QWxy
U3RhdGUqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7
CisgIGZvciAoY29uc3QgUnRjRXZlbnRBbHJTdGF0ZSogYmFzZV9ldmVudCA6IGJhdGNoKSB7Cisg
ICAgcnRjbG9nMjo6QWxyU3RhdGUqIHByb3RvX2JhdGNoID0gZXZlbnRfc3RyZWFtLT5hZGRfYWxy
X3N0YXRlcygpOworICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQt
PnRpbWVzdGFtcF9tcygpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2luX2FscihiYXNlX2V2ZW50
LT5pbl9hbHIoKSk7CisgIH0KKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YS1j
b21wcmVzcyB0aGlzIGV2ZW50IHR5cGU/Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3
Rm9ybWF0OjpFbmNvZGVBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAorICAgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbio+IGJhdGNoLAorICAgIHJ0Y2xv
ZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAw
KQorICAgIHJldHVybjsKKworICAvLyBCYXNlIGV2ZW50CisgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9O
ZXR3b3JrQWRhcHRhdGlvbiogY29uc3QgYmFzZV9ldmVudCA9IGJhdGNoWzBdOworICBydGNsb2cy
OjpBdWRpb05ldHdvcmtBZGFwdGF0aW9ucyogcHJvdG9fYmF0Y2ggPQorICAgICAgZXZlbnRfc3Ry
ZWFtLT5hZGRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9ucygpOworICBwcm90b19iYXRjaC0+c2V0
X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgIGlmIChiYXNlX2V2
ZW50LT5jb25maWcoKS5iaXRyYXRlX2Jwcy5oYXNfdmFsdWUoKSkKKyAgICBwcm90b19iYXRjaC0+
c2V0X2JpdHJhdGVfYnBzKGJhc2VfZXZlbnQtPmNvbmZpZygpLmJpdHJhdGVfYnBzLnZhbHVlKCkp
OworICBpZiAoYmFzZV9ldmVudC0+Y29uZmlnKCkuZnJhbWVfbGVuZ3RoX21zLmhhc192YWx1ZSgp
KSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9mcmFtZV9sZW5ndGhfbXMoCisgICAgICAgIGJhc2Vf
ZXZlbnQtPmNvbmZpZygpLmZyYW1lX2xlbmd0aF9tcy52YWx1ZSgpKTsKKyAgfQorICBhYnNsOjpv
cHRpb25hbDx1aW50NjRfdD4gYmFzZV91cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb247CisgIGlm
IChiYXNlX2V2ZW50LT5jb25maWcoKS51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24uaGFzX3Zh
bHVlKCkpIHsKKyAgICBiYXNlX3VwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbiA9IENvbnZlcnRQ
YWNrZXRMb3NzRnJhY3Rpb25Ub1Byb3RvRm9ybWF0KAorICAgICAgICBiYXNlX2V2ZW50LT5jb25m
aWcoKS51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24udmFsdWUoKSk7CisgICAgcHJvdG9fYmF0
Y2gtPnNldF91cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24oCisgICAgICAgIGJhc2VfdXBsaW5r
X3BhY2tldF9sb3NzX2ZyYWN0aW9uLnZhbHVlKCkpOworICB9CisgIGlmIChiYXNlX2V2ZW50LT5j
b25maWcoKS5lbmFibGVfZmVjLmhhc192YWx1ZSgpKQorICAgIHByb3RvX2JhdGNoLT5zZXRfZW5h
YmxlX2ZlYyhiYXNlX2V2ZW50LT5jb25maWcoKS5lbmFibGVfZmVjLnZhbHVlKCkpOworICBpZiAo
YmFzZV9ldmVudC0+Y29uZmlnKCkuZW5hYmxlX2R0eC5oYXNfdmFsdWUoKSkKKyAgICBwcm90b19i
YXRjaC0+c2V0X2VuYWJsZV9kdHgoYmFzZV9ldmVudC0+Y29uZmlnKCkuZW5hYmxlX2R0eC52YWx1
ZSgpKTsKKyAgLy8gTm90ZSB0aGF0IHxudW1fY2hhbm5lbHNfZGVsdGFzfCBlbmNvZGVzIE4gYXMg
Ti0xLCB0byBrZWVwIGRlbHRhcyBzbWFsbGVyLAorICAvLyBidXQgdGhlcmUncyBubyByZWFzb24g
dG8gZG8gdGhlIHNhbWUgZm9yIHRoZSBiYXNlIGV2ZW50J3MgdmFsdWUsIHNpbmNlCisgIC8vIG5v
IGJpdHMgd2lsbCBiZSBzcGFyZWQuCisgIGlmIChiYXNlX2V2ZW50LT5jb25maWcoKS5udW1fY2hh
bm5lbHMuaGFzX3ZhbHVlKCkpCisgICAgcHJvdG9fYmF0Y2gtPnNldF9udW1fY2hhbm5lbHMoYmFz
ZV9ldmVudC0+Y29uZmlnKCkubnVtX2NoYW5uZWxzLnZhbHVlKCkpOworCisgIGlmIChiYXRjaC5z
aXplKCkgPT0gMSkKKyAgICByZXR1cm47CisKKyAgLy8gRGVsdGEgZW5jb2RpbmcKKyAgcHJvdG9f
YmF0Y2gtPnNldF9udW1iZXJfb2ZfZGVsdGFzKGJhdGNoLnNpemUoKSAtIDEpOworICBzdGQ6OnZl
Y3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHZhbHVlcyhiYXRjaC5zaXplKCkgLSAxKTsK
KyAgc3RkOjpzdHJpbmcgZW5jb2RlZF9kZWx0YXM7CisKKyAgLy8gdGltZXN0YW1wX21zCisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgUnRj
RXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2
YWx1ZXNbaV0gPSBUb1Vuc2lnbmVkKGV2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgIH0KKyAgZW5j
b2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoVG9VbnNpZ25lZChiYXNlX2V2ZW50LT50aW1lc3Rh
bXBfbXMoKSksIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAg
IHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7Cisg
IH0KKworICAvLyBiaXRyYXRlX2JwcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5z
aXplKCk7ICsraSkgeworICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiog
ZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgaWYgKGV2ZW50LT5jb25maWcoKS5iaXRyYXRlX2Jw
cy5oYXNfdmFsdWUoKSkgeworICAgICAgdmFsdWVzW2ldID0gVG9VbnNpZ25lZChldmVudC0+Y29u
ZmlnKCkuYml0cmF0ZV9icHMudmFsdWUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHZhbHVlc1tp
XS5yZXNldCgpOworICAgIH0KKyAgfQorICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4g
dW5zaWduZWRfYmFzZV9iaXRyYXRlX2JwcyA9CisgICAgICBiYXNlX2V2ZW50LT5jb25maWcoKS5i
aXRyYXRlX2Jwcy5oYXNfdmFsdWUoKQorICAgICAgICAgID8gVG9VbnNpZ25lZChiYXNlX2V2ZW50
LT5jb25maWcoKS5iaXRyYXRlX2Jwcy52YWx1ZSgpKQorICAgICAgICAgIDogYWJzbDo6b3B0aW9u
YWw8dWludDY0X3Q+KCk7CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKHVuc2lnbmVk
X2Jhc2VfYml0cmF0ZV9icHMsIHZhbHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHko
KSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfYml0cmF0ZV9icHNfZGVsdGFzKGVuY29kZWRfZGVs
dGFzKTsKKyAgfQorCisgIC8vIGZyYW1lX2xlbmd0aF9tcworICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3Jr
QWRhcHRhdGlvbiogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgaWYgKGV2ZW50LT5jb25maWco
KS5mcmFtZV9sZW5ndGhfbXMuaGFzX3ZhbHVlKCkpIHsKKyAgICAgIHZhbHVlc1tpXSA9IFRvVW5z
aWduZWQoZXZlbnQtPmNvbmZpZygpLmZyYW1lX2xlbmd0aF9tcy52YWx1ZSgpKTsKKyAgICB9IGVs
c2UgeworICAgICAgdmFsdWVzW2ldLnJlc2V0KCk7CisgICAgfQorICB9CisgIGNvbnN0IGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90PiB1bnNpZ25lZF9iYXNlX2ZyYW1lX2xlbmd0aF9tcyA9CisgICAg
ICBiYXNlX2V2ZW50LT5jb25maWcoKS5mcmFtZV9sZW5ndGhfbXMuaGFzX3ZhbHVlKCkKKyAgICAg
ICAgICA/IFRvVW5zaWduZWQoYmFzZV9ldmVudC0+Y29uZmlnKCkuZnJhbWVfbGVuZ3RoX21zLnZh
bHVlKCkpCisgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgZW5jb2Rl
ZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXModW5zaWduZWRfYmFzZV9mcmFtZV9sZW5ndGhfbXMsIHZh
bHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNo
LT5zZXRfZnJhbWVfbGVuZ3RoX21zX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAv
LyB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2
YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0
YXRpb24qIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIGlmIChldmVudC0+Y29uZmlnKCkudXBs
aW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uLmhhc192YWx1ZSgpKSB7CisgICAgICB2YWx1ZXNbaV0g
PSBDb252ZXJ0UGFja2V0TG9zc0ZyYWN0aW9uVG9Qcm90b0Zvcm1hdCgKKyAgICAgICAgICBldmVu
dC0+Y29uZmlnKCkudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uLnZhbHVlKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICB2YWx1ZXNbaV0ucmVzZXQoKTsKKyAgICB9CisgIH0KKyAgZW5jb2RlZF9k
ZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFzZV91cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24sIHZh
bHVlcyk7CisgIGlmICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNo
LT5zZXRfdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7
CisgIH0KKworICAvLyBlbmFibGVfZmVjCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVz
LnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9u
KiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBldmVudC0+Y29uZmlnKCku
ZW5hYmxlX2ZlYzsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhiYXNlX2V2
ZW50LT5jb25maWcoKS5lbmFibGVfZmVjLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFz
LmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X2VuYWJsZV9mZWNfZGVsdGFzKGVuY29k
ZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIGVuYWJsZV9kdHgKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29y
a0FkYXB0YXRpb24qIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IGV2ZW50
LT5jb25maWcoKS5lbmFibGVfZHR4OworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVs
dGFzKGJhc2VfZXZlbnQtPmNvbmZpZygpLmVuYWJsZV9kdHgsIHZhbHVlcyk7CisgIGlmICghZW5j
b2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfZW5hYmxlX2R0eF9k
ZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gbnVtX2NoYW5uZWxzCisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgUnRjRXZl
bnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICBjb25z
dCBhYnNsOjpvcHRpb25hbDxzaXplX3Q+IG51bV9jaGFubmVscyA9IGV2ZW50LT5jb25maWcoKS5u
dW1fY2hhbm5lbHM7CisgICAgaWYgKG51bV9jaGFubmVscy5oYXNfdmFsdWUoKSkgeworICAgICAg
Ly8gU2luY2UgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBhbHdheXMgZ3JlYXRlciB0aGFuIDAs
IHdlIGNhbiBlbmNvZGUKKyAgICAgIC8vIE4gY2hhbm5lbHMgYXMgTi0xLCB0aGVyZWJ5IG1ha2lu
ZyBzdXJlIHRoYXQgd2UgZ2V0IHNtYWxsZXIgZGVsdGFzLgorICAgICAgLy8gVGhhdCBpcywgYSB0
b2dnbGUgb2YgMS0+Mi0+MSBjYW4gYmUgZW5jb2RlZCBhcyBkZWx0YXMgdmVjdG9yICgxLCAxKSwK
KyAgICAgIC8vIHJhdGhlciB0aGFuIGFzICgxLCAzKSBvciAoMSwgLTEpLCBlaXRoZXIgb2Ygd2hp
Y2ggd291bGQgcmVxdWlyZSB0d28KKyAgICAgIC8vIGJpdHMgcGVyIGRlbHRhLgorICAgICAgUlRD
X0RDSEVDS19HVChudW1fY2hhbm5lbHMudmFsdWUoKSwgMHUpOworICAgICAgdmFsdWVzW2ldID0g
bnVtX2NoYW5uZWxzLnZhbHVlKCkgLSAxOworICAgIH0gZWxzZSB7CisgICAgICB2YWx1ZXNbaV0u
cmVzZXQoKTsKKyAgICB9CisgIH0KKyAgLy8gSW4gdGhlIGJhc2UgZXZlbnQsIE4gY2hhbm5lbHMg
ZW5jb2RlZCBhcyBOIGNoYW5uZWxzLCBidXQgZm9yIGRlbHRhCisgIC8vIGNvbXByZXNzaW9uIHB1
cnBvc2VzLCBhbHNvIHNoaWZ0ZWQgZG93biBieSAxLgorICBhYnNsOjpvcHRpb25hbDxzaXplX3Q+
IHNoaWZ0ZWRfYmFzZV9udW1fY2hhbm5lbHM7CisgIGlmIChiYXNlX2V2ZW50LT5jb25maWcoKS5u
dW1fY2hhbm5lbHMuaGFzX3ZhbHVlKCkpIHsKKyAgICBSVENfRENIRUNLX0dUKGJhc2VfZXZlbnQt
PmNvbmZpZygpLm51bV9jaGFubmVscy52YWx1ZSgpLCAwdSk7CisgICAgc2hpZnRlZF9iYXNlX251
bV9jaGFubmVscyA9IGJhc2VfZXZlbnQtPmNvbmZpZygpLm51bV9jaGFubmVscy52YWx1ZSgpIC0g
MTsKKyAgfQorICBlbmNvZGVkX2RlbHRhcyA9IEVuY29kZURlbHRhcyhzaGlmdGVkX2Jhc2VfbnVt
X2NoYW5uZWxzLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAg
ICBwcm90b19iYXRjaC0+c2V0X251bV9jaGFubmVsc19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOwor
ICB9Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVBdWRpb1Bs
YXlvdXQoCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRBdWRpb1BsYXlvdXQqPiBi
YXRjaCwKKyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7CisgIGlmIChi
YXRjaC5zaXplKCkgPT0gMCkKKyAgICByZXR1cm47CisKKyAgLy8gQmFzZSBldmVudAorICBjb25z
dCBSdGNFdmVudEF1ZGlvUGxheW91dCogY29uc3QgYmFzZV9ldmVudCA9IGJhdGNoWzBdOworICBy
dGNsb2cyOjpBdWRpb1BsYXlvdXRFdmVudHMqIHByb3RvX2JhdGNoID0KKyAgICAgIGV2ZW50X3N0
cmVhbS0+YWRkX2F1ZGlvX3BsYXlvdXRfZXZlbnRzKCk7CisgIHByb3RvX2JhdGNoLT5zZXRfdGlt
ZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgcHJvdG9fYmF0Y2gtPnNl
dF9sb2NhbF9zc3JjKGJhc2VfZXZlbnQtPnNzcmMoKSk7CisKKyAgaWYgKGJhdGNoLnNpemUoKSA9
PSAxKQorICAgIHJldHVybjsKKworICAvLyBEZWx0YSBlbmNvZGluZworICBwcm90b19iYXRjaC0+
c2V0X251bWJlcl9vZl9kZWx0YXMoYmF0Y2guc2l6ZSgpIC0gMSk7CisgIHN0ZDo6dmVjdG9yPGFi
c2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVzKGJhdGNoLnNpemUoKSAtIDEpOworICBzdGQ6
OnN0cmluZyBlbmNvZGVkX2RlbHRhczsKKworICAvLyB0aW1lc3RhbXBfbXMKKyAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEF1
ZGlvUGxheW91dCogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gVG9VbnNp
Z25lZChldmVudC0+dGltZXN0YW1wX21zKCkpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5j
b2RlRGVsdGFzKFRvVW5zaWduZWQoYmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpLCB2YWx1ZXMp
OworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0
X3RpbWVzdGFtcF9tc19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gbG9jYWxf
c3NyYworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAg
IGNvbnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2
YWx1ZXNbaV0gPSBldmVudC0+c3NyYygpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2Rl
RGVsdGFzKGJhc2VfZXZlbnQtPnNzcmMoKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRh
cy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9sb2NhbF9zc3JjX2RlbHRhcyhlbmNv
ZGVkX2RlbHRhcyk7CisgIH0KK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6
OkVuY29kZUF1ZGlvUmVjdlN0cmVhbUNvbmZpZygKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBS
dGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2
ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBSdGNFdmVudEF1ZGlvUmVj
ZWl2ZVN0cmVhbUNvbmZpZyogYmFzZV9ldmVudCA6IGJhdGNoKSB7CisgICAgcnRjbG9nMjo6QXVk
aW9SZWN2U3RyZWFtQ29uZmlnKiBwcm90b19iYXRjaCA9CisgICAgICAgIGV2ZW50X3N0cmVhbS0+
YWRkX2F1ZGlvX3JlY3Zfc3RyZWFtX2NvbmZpZ3MoKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3Rp
bWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgICAgcHJvdG9fYmF0Y2gt
PnNldF9yZW1vdGVfc3NyYyhiYXNlX2V2ZW50LT5jb25maWcoKS5yZW1vdGVfc3NyYyk7CisgICAg
cHJvdG9fYmF0Y2gtPnNldF9sb2NhbF9zc3JjKGJhc2VfZXZlbnQtPmNvbmZpZygpLmxvY2FsX3Nz
cmMpOworCisgICAgcnRjbG9nMjo6UnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnKiBwcm90b19jb25m
aWcgPQorICAgICAgICBwcm90b19iYXRjaC0+bXV0YWJsZV9oZWFkZXJfZXh0ZW5zaW9ucygpOwor
ICAgIGJvb2wgaGFzX3JlY29nbml6ZWRfZXh0ZW5zaW9ucyA9CisgICAgICAgIENvbnZlcnRUb1By
b3RvRm9ybWF0KGJhc2VfZXZlbnQtPmNvbmZpZygpLnJ0cF9leHRlbnNpb25zLCBwcm90b19jb25m
aWcpOworICAgIGlmICghaGFzX3JlY29nbml6ZWRfZXh0ZW5zaW9ucykKKyAgICAgIHByb3RvX2Jh
dGNoLT5jbGVhcl9oZWFkZXJfZXh0ZW5zaW9ucygpOworICB9Cit9CisKK3ZvaWQgUnRjRXZlbnRM
b2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVBdWRpb1NlbmRTdHJlYW1Db25maWcoCisgICAgcnRj
OjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcqPiBiYXRjaCwK
KyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7CisgIGZvciAoY29uc3Qg
UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcqIGJhc2VfZXZlbnQgOiBiYXRjaCkgeworICAg
IHJ0Y2xvZzI6OkF1ZGlvU2VuZFN0cmVhbUNvbmZpZyogcHJvdG9fYmF0Y2ggPQorICAgICAgICBl
dmVudF9zdHJlYW0tPmFkZF9hdWRpb19zZW5kX3N0cmVhbV9jb25maWdzKCk7CisgICAgcHJvdG9f
YmF0Y2gtPnNldF90aW1lc3RhbXBfbXMoYmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpOworICAg
IHByb3RvX2JhdGNoLT5zZXRfc3NyYyhiYXNlX2V2ZW50LT5jb25maWcoKS5sb2NhbF9zc3JjKTsK
KworICAgIHJ0Y2xvZzI6OlJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyogcHJvdG9fY29uZmlnID0K
KyAgICAgICAgcHJvdG9fYmF0Y2gtPm11dGFibGVfaGVhZGVyX2V4dGVuc2lvbnMoKTsKKyAgICBi
b29sIGhhc19yZWNvZ25pemVkX2V4dGVuc2lvbnMgPQorICAgICAgICBDb252ZXJ0VG9Qcm90b0Zv
cm1hdChiYXNlX2V2ZW50LT5jb25maWcoKS5ydHBfZXh0ZW5zaW9ucywgcHJvdG9fY29uZmlnKTsK
KyAgICBpZiAoIWhhc19yZWNvZ25pemVkX2V4dGVuc2lvbnMpCisgICAgICBwcm90b19iYXRjaC0+
Y2xlYXJfaGVhZGVyX2V4dGVuc2lvbnMoKTsKKyAgfQorfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5j
b2Rlck5ld0Zvcm1hdDo6RW5jb2RlQndlVXBkYXRlRGVsYXlCYXNlZCgKKyAgICBydGM6OkFycmF5
Vmlldzxjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQqPiBiYXRjaCwKKyAgICBydGNs
b2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7CisgIGlmIChiYXRjaC5zaXplKCkgPT0g
MCkKKyAgICByZXR1cm47CisKKyAgLy8gQmFzZSBldmVudAorICBjb25zdCBSdGNFdmVudEJ3ZVVw
ZGF0ZURlbGF5QmFzZWQqIGNvbnN0IGJhc2VfZXZlbnQgPSBiYXRjaFswXTsKKyAgcnRjbG9nMjo6
RGVsYXlCYXNlZEJ3ZVVwZGF0ZXMqIHByb3RvX2JhdGNoID0KKyAgICAgIGV2ZW50X3N0cmVhbS0+
YWRkX2RlbGF5X2Jhc2VkX2J3ZV91cGRhdGVzKCk7CisgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0
YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVzdGFtcF9tcygpKTsKKyAgcHJvdG9fYmF0Y2gtPnNldF9i
aXRyYXRlX2JwcyhiYXNlX2V2ZW50LT5iaXRyYXRlX2JwcygpKTsKKyAgcHJvdG9fYmF0Y2gtPnNl
dF9kZXRlY3Rvcl9zdGF0ZSgKKyAgICAgIENvbnZlcnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQt
PmRldGVjdG9yX3N0YXRlKCkpKTsKKworICBpZiAoYmF0Y2guc2l6ZSgpID09IDEpCisgICAgcmV0
dXJuOworCisgIC8vIERlbHRhIGVuY29kaW5nCisgIHByb3RvX2JhdGNoLT5zZXRfbnVtYmVyX29m
X2RlbHRhcyhiYXRjaC5zaXplKCkgLSAxKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+PiB2YWx1ZXMoYmF0Y2guc2l6ZSgpIC0gMSk7CisgIHN0ZDo6c3RyaW5nIGVuY29k
ZWRfZGVsdGFzOworCisgIC8vIHRpbWVzdGFtcF9tcworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlC
YXNlZCogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gVG9VbnNpZ25lZChl
dmVudC0+dGltZXN0YW1wX21zKCkpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVs
dGFzKFRvVW5zaWduZWQoYmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpLCB2YWx1ZXMpOworICBp
ZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVz
dGFtcF9tc19kZWx0YXMoZW5jb2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gYml0cmF0ZV9icHMK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25z
dCBSdGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAg
IHZhbHVlc1tpXSA9IGV2ZW50LT5iaXRyYXRlX2JwcygpOworICB9CisgIGVuY29kZWRfZGVsdGFz
ID0gRW5jb2RlRGVsdGFzKGJhc2VfZXZlbnQtPmJpdHJhdGVfYnBzKCksIHZhbHVlcyk7CisgIGlm
ICghZW5jb2RlZF9kZWx0YXMuZW1wdHkoKSkgeworICAgIHByb3RvX2JhdGNoLT5zZXRfYml0cmF0
ZV9icHNfZGVsdGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorCisgIC8vIGRldGVjdG9yX3N0YXRl
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29u
c3QgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAg
ICB2YWx1ZXNbaV0gPQorICAgICAgICBzdGF0aWNfY2FzdDx1aW50NjRfdD4oQ29udmVydFRvUHJv
dG9Gb3JtYXQoZXZlbnQtPmRldGVjdG9yX3N0YXRlKCkpKTsKKyAgfQorICBlbmNvZGVkX2RlbHRh
cyA9IEVuY29kZURlbHRhcygKKyAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PihDb252ZXJ0VG9Q
cm90b0Zvcm1hdChiYXNlX2V2ZW50LT5kZXRlY3Rvcl9zdGF0ZSgpKSksCisgICAgICB2YWx1ZXMp
OworICBpZiAoIWVuY29kZWRfZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0
X2RldGVjdG9yX3N0YXRlX2RlbHRhcyhlbmNvZGVkX2RlbHRhcyk7CisgIH0KK30KKwordm9pZCBS
dGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZUJ3ZVVwZGF0ZUxvc3NCYXNlZCgKKyAg
ICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCo+IGJhdGNo
LAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgaWYgKGJhdGNo
LnNpemUoKSA9PSAwKQorICAgIHJldHVybjsKKworICAvLyBCYXNlIGV2ZW50CisgIGNvbnN0IFJ0
Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkKiBjb25zdCBiYXNlX2V2ZW50ID0gYmF0Y2hbMF07Cisg
IHJ0Y2xvZzI6Okxvc3NCYXNlZEJ3ZVVwZGF0ZXMqIHByb3RvX2JhdGNoID0KKyAgICAgIGV2ZW50
X3N0cmVhbS0+YWRkX2xvc3NfYmFzZWRfYndlX3VwZGF0ZXMoKTsKKyAgcHJvdG9fYmF0Y2gtPnNl
dF90aW1lc3RhbXBfbXMoYmFzZV9ldmVudC0+dGltZXN0YW1wX21zKCkpOworICBwcm90b19iYXRj
aC0+c2V0X2JpdHJhdGVfYnBzKGJhc2VfZXZlbnQtPmJpdHJhdGVfYnBzKCkpOworICBwcm90b19i
YXRjaC0+c2V0X2ZyYWN0aW9uX2xvc3MoYmFzZV9ldmVudC0+ZnJhY3Rpb25fbG9zcygpKTsKKyAg
cHJvdG9fYmF0Y2gtPnNldF90b3RhbF9wYWNrZXRzKGJhc2VfZXZlbnQtPnRvdGFsX3BhY2tldHMo
KSk7CisKKyAgaWYgKGJhdGNoLnNpemUoKSA9PSAxKQorICAgIHJldHVybjsKKworICAvLyBEZWx0
YSBlbmNvZGluZworICBwcm90b19iYXRjaC0+c2V0X251bWJlcl9vZl9kZWx0YXMoYmF0Y2guc2l6
ZSgpIC0gMSk7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdmFsdWVz
KGJhdGNoLnNpemUoKSAtIDEpOworICBzdGQ6OnN0cmluZyBlbmNvZGVkX2RlbHRhczsKKworICAv
LyB0aW1lc3RhbXBfbXMKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCogZXZlbnQgPSBiYXRj
aFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gVG9VbnNpZ25lZChldmVudC0+dGltZXN0YW1wX21z
KCkpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKFRvVW5zaWduZWQoYmFz
ZV9ldmVudC0+dGltZXN0YW1wX21zKCkpLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRfZGVsdGFz
LmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tc19kZWx0YXMoZW5j
b2RlZF9kZWx0YXMpOworICB9CisKKyAgLy8gYml0cmF0ZV9icHMKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0
ZUxvc3NCYXNlZCogZXZlbnQgPSBiYXRjaFtpICsgMV07CisgICAgdmFsdWVzW2ldID0gZXZlbnQt
PmJpdHJhdGVfYnBzKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0YXMoYmFz
ZV9ldmVudC0+Yml0cmF0ZV9icHMoKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRhcy5l
bXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9iaXRyYXRlX2Jwc19kZWx0YXMoZW5jb2Rl
ZF9kZWx0YXMpOworICB9CisKKyAgLy8gZnJhY3Rpb25fbG9zcworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRl
TG9zc0Jhc2VkKiBldmVudCA9IGJhdGNoW2kgKyAxXTsKKyAgICB2YWx1ZXNbaV0gPSBldmVudC0+
ZnJhY3Rpb25fbG9zcygpOworICB9CisgIGVuY29kZWRfZGVsdGFzID0gRW5jb2RlRGVsdGFzKGJh
c2VfZXZlbnQtPmZyYWN0aW9uX2xvc3MoKSwgdmFsdWVzKTsKKyAgaWYgKCFlbmNvZGVkX2RlbHRh
cy5lbXB0eSgpKSB7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9mcmFjdGlvbl9sb3NzX2RlbHRhcyhl
bmNvZGVkX2RlbHRhcyk7CisgIH0KKworICAvLyB0b3RhbF9wYWNrZXRzCisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgUnRjRXZlbnRCd2VV
cGRhdGVMb3NzQmFzZWQqIGV2ZW50ID0gYmF0Y2hbaSArIDFdOworICAgIHZhbHVlc1tpXSA9IGV2
ZW50LT50b3RhbF9wYWNrZXRzKCk7CisgIH0KKyAgZW5jb2RlZF9kZWx0YXMgPSBFbmNvZGVEZWx0
YXMoYmFzZV9ldmVudC0+dG90YWxfcGFja2V0cygpLCB2YWx1ZXMpOworICBpZiAoIWVuY29kZWRf
ZGVsdGFzLmVtcHR5KCkpIHsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RvdGFsX3BhY2tldHNfZGVs
dGFzKGVuY29kZWRfZGVsdGFzKTsKKyAgfQorfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5l
d0Zvcm1hdDo6RW5jb2RlUHJvYmVDbHVzdGVyQ3JlYXRlZCgKKyAgICBydGM6OkFycmF5Vmlldzxj
b25zdCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQqPiBiYXRjaCwKKyAgICBydGNsb2cyOjpF
dmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7CisgIGZvciAoY29uc3QgUnRjRXZlbnRQcm9iZUNs
dXN0ZXJDcmVhdGVkKiBiYXNlX2V2ZW50IDogYmF0Y2gpIHsKKyAgICBydGNsb2cyOjpCd2VQcm9i
ZUNsdXN0ZXIqIHByb3RvX2JhdGNoID0gZXZlbnRfc3RyZWFtLT5hZGRfcHJvYmVfY2x1c3RlcnMo
KTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3Rh
bXBfbXMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9pZChiYXNlX2V2ZW50LT5pZCgpKTsKKyAg
ICBwcm90b19iYXRjaC0+c2V0X2JpdHJhdGVfYnBzKGJhc2VfZXZlbnQtPmJpdHJhdGVfYnBzKCkp
OworICAgIHByb3RvX2JhdGNoLT5zZXRfbWluX3BhY2tldHMoYmFzZV9ldmVudC0+bWluX3Byb2Jl
cygpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X21pbl9ieXRlcyhiYXNlX2V2ZW50LT5taW5fYnl0
ZXMoKSk7CisgIH0KK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29k
ZVByb2JlUmVzdWx0RmFpbHVyZSgKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFBy
b2JlUmVzdWx0RmFpbHVyZSo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVu
dF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZSogYmFz
ZV9ldmVudCA6IGJhdGNoKSB7CisgICAgcnRjbG9nMjo6QndlUHJvYmVSZXN1bHRGYWlsdXJlKiBw
cm90b19iYXRjaCA9CisgICAgICAgIGV2ZW50X3N0cmVhbS0+YWRkX3Byb2JlX2ZhaWx1cmUoKTsK
KyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBf
bXMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9pZChiYXNlX2V2ZW50LT5pZCgpKTsKKyAgICBw
cm90b19iYXRjaC0+c2V0X2ZhaWx1cmUoCisgICAgICAgIENvbnZlcnRUb1Byb3RvRm9ybWF0KGJh
c2VfZXZlbnQtPmZhaWx1cmVfcmVhc29uKCkpKTsKKyAgfQorICAvLyBUT0RPKHRlcmVsaXVzKTog
U2hvdWxkIHdlIGRlbHRhLWNvbXByZXNzIHRoaXMgZXZlbnQgdHlwZT8KK30KKwordm9pZCBSdGNF
dmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZVByb2JlUmVzdWx0U3VjY2VzcygKKyAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2Vzcyo+IGJhdGNoLAor
ICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBS
dGNFdmVudFByb2JlUmVzdWx0U3VjY2VzcyogYmFzZV9ldmVudCA6IGJhdGNoKSB7CisgICAgcnRj
bG9nMjo6QndlUHJvYmVSZXN1bHRTdWNjZXNzKiBwcm90b19iYXRjaCA9CisgICAgICAgIGV2ZW50
X3N0cmVhbS0+YWRkX3Byb2JlX3N1Y2Nlc3MoKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVz
dGFtcF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNl
dF9pZChiYXNlX2V2ZW50LT5pZCgpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2JpdHJhdGVfYnBz
KGJhc2VfZXZlbnQtPmJpdHJhdGVfYnBzKCkpOworICB9CisgIC8vIFRPRE8odGVyZWxpdXMpOiBT
aG91bGQgd2UgZGVsdGEtY29tcHJlc3MgdGhpcyBldmVudCB0eXBlPworfQorCit2b2lkIFJ0Y0V2
ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlUnRjcFBhY2tldEluY29taW5nKAorICAgIHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nKj4gYmF0Y2gsCisg
ICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgeworICBpZiAoYmF0Y2guZW1w
dHkoKSkgeworICAgIHJldHVybjsKKyAgfQorICBFbmNvZGVSdGNwUGFja2V0KGJhdGNoLCBldmVu
dF9zdHJlYW0tPmFkZF9pbmNvbWluZ19ydGNwX3BhY2tldHMoKSk7Cit9CisKK3ZvaWQgUnRjRXZl
bnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVSdGNwUGFja2V0T3V0Z29pbmcoCisgICAgcnRj
OjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcqPiBiYXRjaCwKKyAg
ICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKSB7CisgIGlmIChiYXRjaC5lbXB0
eSgpKSB7CisgICAgcmV0dXJuOworICB9CisgIEVuY29kZVJ0Y3BQYWNrZXQoYmF0Y2gsIGV2ZW50
X3N0cmVhbS0+YWRkX291dGdvaW5nX3J0Y3BfcGFja2V0cygpKTsKK30KKwordm9pZCBSdGNFdmVu
dExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVuY29kZVJ0cFBhY2tldEluY29taW5nKAorICAgIGNvbnN0
IHN0ZDo6bWFwPHVpbnQzMl90LCBzdGQ6OnZlY3Rvcjxjb25zdCBSdGNFdmVudFJ0cFBhY2tldElu
Y29taW5nKj4+JgorICAgICAgICBiYXRjaCwKKyAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZl
bnRfc3RyZWFtKSB7CisgIGZvciAoYXV0byBpdCA6IGJhdGNoKSB7CisgICAgUlRDX0RDSEVDSygh
aXQuc2Vjb25kLmVtcHR5KCkpOworICAgIEVuY29kZVJ0cFBhY2tldChpdC5zZWNvbmQsIGV2ZW50
X3N0cmVhbS0+YWRkX2luY29taW5nX3J0cF9wYWNrZXRzKCkpOworICB9Cit9CisKK3ZvaWQgUnRj
RXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpFbmNvZGVSdHBQYWNrZXRPdXRnb2luZygKKyAgICBj
b25zdCBzdGQ6Om1hcDx1aW50MzJfdCwgc3RkOjp2ZWN0b3I8Y29uc3QgUnRjRXZlbnRSdHBQYWNr
ZXRPdXRnb2luZyo+PiYKKyAgICAgICAgYmF0Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0q
IGV2ZW50X3N0cmVhbSkgeworICBmb3IgKGF1dG8gaXQgOiBiYXRjaCkgeworICAgIFJUQ19EQ0hF
Q0soIWl0LnNlY29uZC5lbXB0eSgpKTsKKyAgICBFbmNvZGVSdHBQYWNrZXQoaXQuc2Vjb25kLCBl
dmVudF9zdHJlYW0tPmFkZF9vdXRnb2luZ19ydHBfcGFja2V0cygpKTsKKyAgfQorfQorCit2b2lk
IFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5jb2RlVmlkZW9SZWN2U3RyZWFtQ29uZmln
KAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29u
ZmlnKj4gYmF0Y2gsCisgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSkgewor
ICBmb3IgKGNvbnN0IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnKiBiYXNlX2V2ZW50
IDogYmF0Y2gpIHsKKyAgICBydGNsb2cyOjpWaWRlb1JlY3ZTdHJlYW1Db25maWcqIHByb3RvX2Jh
dGNoID0KKyAgICAgICAgZXZlbnRfc3RyZWFtLT5hZGRfdmlkZW9fcmVjdl9zdHJlYW1fY29uZmln
cygpOworICAgIHByb3RvX2JhdGNoLT5zZXRfdGltZXN0YW1wX21zKGJhc2VfZXZlbnQtPnRpbWVz
dGFtcF9tcygpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3JlbW90ZV9zc3JjKGJhc2VfZXZlbnQt
PmNvbmZpZygpLnJlbW90ZV9zc3JjKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X2xvY2FsX3NzcmMo
YmFzZV9ldmVudC0+Y29uZmlnKCkubG9jYWxfc3NyYyk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9y
dHhfc3NyYyhiYXNlX2V2ZW50LT5jb25maWcoKS5ydHhfc3NyYyk7CisKKyAgICBydGNsb2cyOjpS
dHBIZWFkZXJFeHRlbnNpb25Db25maWcqIHByb3RvX2NvbmZpZyA9CisgICAgICAgIHByb3RvX2Jh
dGNoLT5tdXRhYmxlX2hlYWRlcl9leHRlbnNpb25zKCk7CisgICAgYm9vbCBoYXNfcmVjb2duaXpl
ZF9leHRlbnNpb25zID0KKyAgICAgICAgQ29udmVydFRvUHJvdG9Gb3JtYXQoYmFzZV9ldmVudC0+
Y29uZmlnKCkucnRwX2V4dGVuc2lvbnMsIHByb3RvX2NvbmZpZyk7CisgICAgaWYgKCFoYXNfcmVj
b2duaXplZF9leHRlbnNpb25zKQorICAgICAgcHJvdG9fYmF0Y2gtPmNsZWFyX2hlYWRlcl9leHRl
bnNpb25zKCk7CisgIH0KK30KKwordm9pZCBSdGNFdmVudExvZ0VuY29kZXJOZXdGb3JtYXQ6OkVu
Y29kZVZpZGVvU2VuZFN0cmVhbUNvbmZpZygKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNF
dmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZyo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3Ry
ZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBSdGNFdmVudFZpZGVvU2VuZFN0cmVh
bUNvbmZpZyogYmFzZV9ldmVudCA6IGJhdGNoKSB7CisgICAgcnRjbG9nMjo6VmlkZW9TZW5kU3Ry
ZWFtQ29uZmlnKiBwcm90b19iYXRjaCA9CisgICAgICAgIGV2ZW50X3N0cmVhbS0+YWRkX3ZpZGVv
X3NlbmRfc3RyZWFtX2NvbmZpZ3MoKTsKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFtcF9t
cyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9zc3Jj
KGJhc2VfZXZlbnQtPmNvbmZpZygpLmxvY2FsX3NzcmMpOworICAgIHByb3RvX2JhdGNoLT5zZXRf
cnR4X3NzcmMoYmFzZV9ldmVudC0+Y29uZmlnKCkucnR4X3NzcmMpOworCisgICAgcnRjbG9nMjo6
UnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnKiBwcm90b19jb25maWcgPQorICAgICAgICBwcm90b19i
YXRjaC0+bXV0YWJsZV9oZWFkZXJfZXh0ZW5zaW9ucygpOworICAgIGJvb2wgaGFzX3JlY29nbml6
ZWRfZXh0ZW5zaW9ucyA9CisgICAgICAgIENvbnZlcnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQt
PmNvbmZpZygpLnJ0cF9leHRlbnNpb25zLCBwcm90b19jb25maWcpOworICAgIGlmICghaGFzX3Jl
Y29nbml6ZWRfZXh0ZW5zaW9ucykKKyAgICAgIHByb3RvX2JhdGNoLT5jbGVhcl9oZWFkZXJfZXh0
ZW5zaW9ucygpOworICB9Cit9CisKK3ZvaWQgUnRjRXZlbnRMb2dFbmNvZGVyTmV3Rm9ybWF0OjpF
bmNvZGVJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0
Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyo+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50
U3RyZWFtKiBldmVudF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0
ZVBhaXJDb25maWcqIGJhc2VfZXZlbnQgOiBiYXRjaCkgeworICAgIHJ0Y2xvZzI6OkljZUNhbmRp
ZGF0ZVBhaXJDb25maWcqIHByb3RvX2JhdGNoID0KKyAgICAgICAgZXZlbnRfc3RyZWFtLT5hZGRf
aWNlX2NhbmRpZGF0ZV9jb25maWdzKCk7CisKKyAgICBwcm90b19iYXRjaC0+c2V0X3RpbWVzdGFt
cF9tcyhiYXNlX2V2ZW50LT50aW1lc3RhbXBfbXMoKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9j
b25maWdfdHlwZShDb252ZXJ0VG9Qcm90b0Zvcm1hdChiYXNlX2V2ZW50LT50eXBlKCkpKTsKKyAg
ICBwcm90b19iYXRjaC0+c2V0X2NhbmRpZGF0ZV9wYWlyX2lkKGJhc2VfZXZlbnQtPmNhbmRpZGF0
ZV9wYWlyX2lkKCkpOworICAgIGNvbnN0IGF1dG8mIGRlc2MgPSBiYXNlX2V2ZW50LT5jYW5kaWRh
dGVfcGFpcl9kZXNjKCk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9sb2NhbF9jYW5kaWRhdGVfdHlw
ZSgKKyAgICAgICAgQ29udmVydFRvUHJvdG9Gb3JtYXQoZGVzYy5sb2NhbF9jYW5kaWRhdGVfdHlw
ZSkpOworICAgIHByb3RvX2JhdGNoLT5zZXRfbG9jYWxfcmVsYXlfcHJvdG9jb2woCisgICAgICAg
IENvbnZlcnRUb1Byb3RvRm9ybWF0KGRlc2MubG9jYWxfcmVsYXlfcHJvdG9jb2wpKTsKKyAgICBw
cm90b19iYXRjaC0+c2V0X2xvY2FsX25ldHdvcmtfdHlwZSgKKyAgICAgICAgQ29udmVydFRvUHJv
dG9Gb3JtYXQoZGVzYy5sb2NhbF9uZXR3b3JrX3R5cGUpKTsKKyAgICBwcm90b19iYXRjaC0+c2V0
X2xvY2FsX2FkZHJlc3NfZmFtaWx5KAorICAgICAgICBDb252ZXJ0VG9Qcm90b0Zvcm1hdChkZXNj
LmxvY2FsX2FkZHJlc3NfZmFtaWx5KSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9yZW1vdGVfY2Fu
ZGlkYXRlX3R5cGUoCisgICAgICAgIENvbnZlcnRUb1Byb3RvRm9ybWF0KGRlc2MucmVtb3RlX2Nh
bmRpZGF0ZV90eXBlKSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9yZW1vdGVfYWRkcmVzc19mYW1p
bHkoCisgICAgICAgIENvbnZlcnRUb1Byb3RvRm9ybWF0KGRlc2MucmVtb3RlX2FkZHJlc3NfZmFt
aWx5KSk7CisgICAgcHJvdG9fYmF0Y2gtPnNldF9jYW5kaWRhdGVfcGFpcl9wcm90b2NvbCgKKyAg
ICAgICAgQ29udmVydFRvUHJvdG9Gb3JtYXQoZGVzYy5jYW5kaWRhdGVfcGFpcl9wcm90b2NvbCkp
OworICB9CisgIC8vIFRPRE8odGVyZWxpdXMpOiBTaG91bGQgd2UgZGVsdGEtY29tcHJlc3MgdGhp
cyBldmVudCB0eXBlPworfQorCit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdDo6RW5j
b2RlSWNlQ2FuZGlkYXRlUGFpckV2ZW50KAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2
ZW50SWNlQ2FuZGlkYXRlUGFpcio+IGJhdGNoLAorICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBl
dmVudF9zdHJlYW0pIHsKKyAgZm9yIChjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXIqIGJh
c2VfZXZlbnQgOiBiYXRjaCkgeworICAgIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJFdmVudCog
cHJvdG9fYmF0Y2ggPQorICAgICAgICBldmVudF9zdHJlYW0tPmFkZF9pY2VfY2FuZGlkYXRlX2V2
ZW50cygpOworCisgICAgcHJvdG9fYmF0Y2gtPnNldF90aW1lc3RhbXBfbXMoYmFzZV9ldmVudC0+
dGltZXN0YW1wX21zKCkpOworCisgICAgcHJvdG9fYmF0Y2gtPnNldF9ldmVudF90eXBlKENvbnZl
cnRUb1Byb3RvRm9ybWF0KGJhc2VfZXZlbnQtPnR5cGUoKSkpOworICAgIHByb3RvX2JhdGNoLT5z
ZXRfY2FuZGlkYXRlX3BhaXJfaWQoYmFzZV9ldmVudC0+Y2FuZGlkYXRlX3BhaXJfaWQoKSk7Cisg
IH0KKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3ZSBkZWx0YS1jb21wcmVzcyB0aGlzIGV2
ZW50IHR5cGU/Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9lbmNvZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl9uZXdfZm9ybWF0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5j
b2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbmV3X2Zvcm1hdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZmE0
OTAxMTRiNGViODgzYmM3ODk2MTUxNDk4ZTk4MTEwYTg4MDYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfbmV3X2Zvcm1hdC5oCkBAIC0wLDAg
KzEsMTI3IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBMT0dHSU5HX1JUQ19F
VkVOVF9MT0dfRU5DT0RFUl9SVENfRVZFTlRfTE9HX0VOQ09ERVJfTkVXX0ZPUk1BVF9IXworI2Rl
ZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9SVENfRVZFTlRfTE9HX0VOQ09ERVJf
TkVXX0ZPUk1BVF9IXworCisjaW5jbHVkZSA8ZGVxdWU+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5j
bHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXIuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisK
K25hbWVzcGFjZSBydGNsb2cyIHsKK2NsYXNzIEV2ZW50U3RyZWFtOyAgLy8gQXV0by1nZW5lcmF0
ZWQgZnJvbSBwcm90b2J1Zi4KK30gIC8vIG5hbWVzcGFjZSBydGNsb2cyCisKK2NsYXNzIFJ0Y0V2
ZW50QWxyU3RhdGU7CitjbGFzcyBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb247CitjbGFz
cyBSdGNFdmVudEF1ZGlvUGxheW91dDsKK2NsYXNzIFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFt
Q29uZmlnOworY2xhc3MgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc7CitjbGFzcyBSdGNF
dmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQ7CitjbGFzcyBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNl
ZDsKK2NsYXNzIFJ0Y0V2ZW50TG9nZ2luZ1N0YXJ0ZWQ7CitjbGFzcyBSdGNFdmVudExvZ2dpbmdT
dG9wcGVkOworY2xhc3MgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkOworY2xhc3MgUnRjRXZl
bnRQcm9iZVJlc3VsdEZhaWx1cmU7CitjbGFzcyBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2VzczsK
K2NsYXNzIFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nOworY2xhc3MgUnRjRXZlbnRSdGNwUGFj
a2V0T3V0Z29pbmc7CitjbGFzcyBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nOworY2xhc3MgUnRj
RXZlbnRSdHBQYWNrZXRPdXRnb2luZzsKK2NsYXNzIFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFt
Q29uZmlnOworY2xhc3MgUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWc7CitjbGFzcyBSdGNF
dmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWc7CitjbGFzcyBSdGNFdmVudEljZUNhbmRpZGF0ZVBh
aXI7CitjbGFzcyBSdHBQYWNrZXQ7CisKK2NsYXNzIFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1h
dCBmaW5hbCA6IHB1YmxpYyBSdGNFdmVudExvZ0VuY29kZXIgeworIHB1YmxpYzoKKyAgflJ0Y0V2
ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdCgpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworICBzdGQ6OnN0
cmluZyBFbmNvZGVCYXRjaCgKKyAgICAgIHN0ZDo6ZGVxdWU8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2
ZW50Pj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luLAorICAgICAgc3RkOjpkZXF1ZTxzdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnQ+Pjo6Y29uc3RfaXRlcmF0b3IgZW5kKSBvdmVycmlkZTsKKworICBzdGQ6
OnN0cmluZyBFbmNvZGVMb2dTdGFydChpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCB1dGNfdGltZV91cykgb3ZlcnJpZGU7CisgIHN0ZDo6
c3RyaW5nIEVuY29kZUxvZ0VuZChpbnQ2NF90IHRpbWVzdGFtcF91cykgb3ZlcnJpZGU7CisKKyBw
cml2YXRlOgorICAvLyBFbmNvZGluZyBlbnRyeS1wb2ludCBmb3IgdGhlIHZhcmlvdXMgUnRjRXZl
bnQgc3ViY2xhc3Nlcy4KKyAgdm9pZCBFbmNvZGVBbHJTdGF0ZShydGM6OkFycmF5Vmlldzxjb25z
dCBSdGNFdmVudEFsclN0YXRlKj4gYmF0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgcnRjbG9n
Mjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlQXVkaW9OZXR3b3Jr
QWRhcHRhdGlvbigKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3
b3JrQWRhcHRhdGlvbio+IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50
X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlQXVkaW9QbGF5b3V0KHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0Kj4gYmF0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2b2lkIEVuY29kZUF1ZGlv
UmVjdlN0cmVhbUNvbmZpZygKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50QXVk
aW9SZWNlaXZlU3RyZWFtQ29uZmlnKj4gYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0cmVh
bSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVBdWRpb1NlbmRTdHJlYW1Db25maWcoCisg
ICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyo+
IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZv
aWQgRW5jb2RlQndlVXBkYXRlRGVsYXlCYXNlZCgKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCo+IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZl
bnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlQndlVXBkYXRlTG9zc0Jhc2Vk
KAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQq
PiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2
b2lkIEVuY29kZUxvZ2dpbmdTdGFydGVkKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50TG9n
Z2luZ1N0YXJ0ZWQqPiBiYXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGNsb2cy
OjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVMb2dnaW5nU3RvcHBl
ZChydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudExvZ2dpbmdTdG9wcGVkKj4gYmF0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0
cmVhbSk7CisgIHZvaWQgRW5jb2RlUHJvYmVDbHVzdGVyQ3JlYXRlZCgKKyAgICAgIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCo+IGJhdGNoLAorICAgICAg
cnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2RlUHJvYmVS
ZXN1bHRGYWlsdXJlKAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZlbnRQcm9iZVJl
c3VsdEZhaWx1cmUqPiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9z
dHJlYW0pOworICB2b2lkIEVuY29kZVByb2JlUmVzdWx0U3VjY2VzcygKKyAgICAgIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzKj4gYmF0Y2gsCisgICAgICBy
dGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVSdGNwUGFj
a2V0SW5jb21pbmcoCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudFJ0Y3BQYWNr
ZXRJbmNvbWluZyo+IGJhdGNoLAorICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0
cmVhbSk7CisgIHZvaWQgRW5jb2RlUnRjcFBhY2tldE91dGdvaW5nKAorICAgICAgcnRjOjpBcnJh
eVZpZXc8Y29uc3QgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcqPiBiYXRjaCwKKyAgICAgIHJ0
Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2b2lkIEVuY29kZVJ0cFBhY2tl
dEluY29taW5nKAorICAgICAgY29uc3Qgc3RkOjptYXA8dWludDMyX3QsIHN0ZDo6dmVjdG9yPGNv
bnN0IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcqPj4mCisgICAgICAgICAgYmF0Y2gsCisgICAg
ICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVSdHBQ
YWNrZXRPdXRnb2luZygKKyAgICAgIGNvbnN0IHN0ZDo6bWFwPHVpbnQzMl90LCBzdGQ6OnZlY3Rv
cjxjb25zdCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nKj4+JgorICAgICAgICAgIGJhdGNoLAor
ICAgICAgcnRjbG9nMjo6RXZlbnRTdHJlYW0qIGV2ZW50X3N0cmVhbSk7CisgIHZvaWQgRW5jb2Rl
VmlkZW9SZWN2U3RyZWFtQ29uZmlnKAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgUnRjRXZl
bnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcqPiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50
U3RyZWFtKiBldmVudF9zdHJlYW0pOworICB2b2lkIEVuY29kZVZpZGVvU2VuZFN0cmVhbUNvbmZp
ZygKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29u
ZmlnKj4gYmF0Y2gsCisgICAgICBydGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsK
KyAgdm9pZCBFbmNvZGVJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAorICAgICAgcnRjOjpBcnJheVZp
ZXc8Y29uc3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKj4gYmF0Y2gsCisgICAgICBy
dGNsb2cyOjpFdmVudFN0cmVhbSogZXZlbnRfc3RyZWFtKTsKKyAgdm9pZCBFbmNvZGVJY2VDYW5k
aWRhdGVQYWlyRXZlbnQoCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBSdGNFdmVudEljZUNh
bmRpZGF0ZVBhaXIqPiBiYXRjaCwKKyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtKiBldmVudF9z
dHJlYW0pOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIExPR0dJ
TkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9ORVdfRk9STUFU
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9nX2VuY29kZXJfdW5pdHRlc3Qu
Y2MKaW5kZXggOTkwZmE2MDgwYmI5NDYxM2Q1NDM0NzQ0NjBiODdmOGEzYzQ2YzA4ZS4uODU2YmVj
NjZlN2NjYzA4MWMzNjQwN2E4YzI2NDFkMTVkYTQ3Y2FiNCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2Vu
Y29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNv
ZGVyL3J0Y19ldmVudF9sb2dfZW5jb2Rlcl91bml0dGVzdC5jYwpAQCAtMTEsOSArMTEsMTEgQEAK
ICNpbmNsdWRlIDxkZXF1ZT4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5nPgor
I2luY2x1ZGUgPHR1cGxlPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5j
bHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVy
X2xlZ2FjeS5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3J0Y19l
dmVudF9sb2dfZW5jb2Rlcl9uZXdfZm9ybWF0LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uLmgi
CiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9f
cGxheW91dC5oIgpAQCAtMzksMTU2ICs0MSwzNTcgQEAKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0Lmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewotCi0KLWNsYXNzIFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKK2NsYXNzIFJ0Y0V2ZW50TG9n
RW5jb2RlclRlc3QKKyAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6dHVw
bGU8aW50LCBib29sLCBzaXplX3QsIGJvb2w+PiB7CiAgcHJvdGVjdGVkOgogICBSdGNFdmVudExv
Z0VuY29kZXJUZXN0KCkKLSAgICAgIDogZW5jb2Rlcl8obmV3IFJ0Y0V2ZW50TG9nRW5jb2Rlckxl
Z2FjeSksCi0gICAgICAgIHNlZWRfKEdldFBhcmFtKCkpLAorICAgICAgOiBzZWVkXyhzdGQ6Omdl
dDwwPihHZXRQYXJhbSgpKSksCiAgICAgICAgIHBybmdfKHNlZWRfKSwKLSAgICAgICAgZ2VuXyhz
ZWVkXyAqIDg4MDAwMVVMKSB7fQorICAgICAgICBuZXdfZW5jb2RpbmdfKHN0ZDo6Z2V0PDE+KEdl
dFBhcmFtKCkpKSwKKyAgICAgICAgZXZlbnRfY291bnRfKHN0ZDo6Z2V0PDI+KEdldFBhcmFtKCkp
KSwKKyAgICAgICAgZm9yY2VfcmVwZWF0ZWRfZmllbGRzXyhzdGQ6OmdldDwzPihHZXRQYXJhbSgp
KSksCisgICAgICAgIGdlbl8oc2VlZF8gKiA4ODAwMDFVTCksCisgICAgICAgIHZlcmlmaWVyXyhu
ZXdfZW5jb2RpbmdfID8gUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TmV3Rm9ybWF0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6
TGVnYWN5KSB7CisgICAgaWYgKG5ld19lbmNvZGluZ18pCisgICAgICBlbmNvZGVyXyA9IGFic2w6
Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nRW5jb2Rlck5ld0Zvcm1hdD4oKTsKKyAgICBlbHNlCisg
ICAgICBlbmNvZGVyXyA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50TG9nRW5jb2RlckxlZ2Fj
eT4oKTsKKyAgfQogICB+UnRjRXZlbnRMb2dFbmNvZGVyVGVzdCgpIG92ZXJyaWRlID0gZGVmYXVs
dDsKIAogICAvLyBBTkEgZXZlbnRzIGhhdmUgc29tZSBvcHRpb25hbCBmaWVsZHMsIHNvIHdlIHdh
bnQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZ2V0CiAgIC8vIGNvcnJlY3QgYmVoYXZpb3IgYm90aCB3
aGVuIGFsbCBvZiB0aGUgdmFsdWVzIGFyZSB0aGVyZSwgYXMgd2VsbCBhcyB3aGVuCiAgIC8vIG9u
bHkgc29tZS4KICAgdm9pZCBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAotICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+IHJ1bnRpbWVfY29u
ZmlnKTsKKyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1
ZGlvTmV0d29ya0FkYXB0YXRpb24+PiYpOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBFdmVudFR5
cGU+CisgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFR5cGU+IE5ld1J0cFBhY2tldCgKKyAgICAgIHVp
bnQzMl90IHNzcmMsCisgICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lv
bl9tYXApOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBQYXJzZWRUeXBlPgorICBjb25zdCBzdGQ6
OnZlY3RvcjxQYXJzZWRUeXBlPiogR2V0UnRwUGFja2V0c0J5U3NyYygKKyAgICAgIGNvbnN0IFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3KiBwYXJzZWRfbG9nLAorICAgICAgdWludDMyX3Qgc3NyYyk7CisK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIEV2ZW50VHlwZSwgdHlwZW5hbWUgUGFyc2VkVHlwZT4KKyAg
dm9pZCBUZXN0UnRwUGFja2V0cygpOwogCiAgIHN0ZDo6ZGVxdWU8c3RkOjp1bmlxdWVfcHRyPFJ0
Y0V2ZW50Pj4gaGlzdG9yeV87Ci0gIC8vIFRPRE8oZWxhZGFsb24pOiBPbmNlIHdlIGhhdmUgbW9y
ZSB0aGFuIG9uZSBwb3NzaWJsZSBlbmNvZGVyLCBwYXJhbWV0ZXJpemUKLSAgLy8gZW5jb2RlciBz
ZWxlY3Rpb24uCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZ0VuY29kZXI+IGVuY29kZXJf
OwogICBQYXJzZWRSdGNFdmVudExvZ05ldyBwYXJzZWRfbG9nXzsKICAgY29uc3QgdWludDY0X3Qg
c2VlZF87CiAgIFJhbmRvbSBwcm5nXzsKKyAgY29uc3QgYm9vbCBuZXdfZW5jb2RpbmdfOworICBj
b25zdCBzaXplX3QgZXZlbnRfY291bnRfOworICBjb25zdCBib29sIGZvcmNlX3JlcGVhdGVkX2Zp
ZWxkc187CiAgIHRlc3Q6OkV2ZW50R2VuZXJhdG9yIGdlbl87CisgIHRlc3Q6OkV2ZW50VmVyaWZp
ZXIgdmVyaWZpZXJfOwogfTsKIAotVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2
ZW50QWxyU3RhdGUpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QWxyU3RhdGU+IGV2ZW50
ID0gZ2VuXy5OZXdBbHJTdGF0ZSgpOwotICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnQtPkNvcHko
KSk7Cit2b2lkIFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3Q6OlRlc3RSdGNFdmVudEF1ZGlvTmV0d29y
a0FkYXB0YXRpb24oCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2
ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4+JgorICAgICAgICBldmVudHMpIHsKKyAgQVNTRVJU
X1RSVUUoaGlzdG9yeV8uZW1wdHkoKSkgPDwgIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb25j
ZSBwZXIgdGVzdC4iOworCisgIGZvciAoYXV0byYgZXZlbnQgOiBldmVudHMpIHsKKyAgICBoaXN0
b3J5Xy5wdXNoX2JhY2soZXZlbnQtPkNvcHkoKSk7CisgIH0KIAogICBzdGQ6OnN0cmluZyBlbmNv
ZGVkID0gZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhpc3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVu
ZCgpKTsKICAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOwot
ICBjb25zdCBhdXRvJiBhbHJfc3RhdGVfZXZlbnRzID0gcGFyc2VkX2xvZ18uYWxyX3N0YXRlX2V2
ZW50cygpOworICBjb25zdCBhdXRvJiBhbmFfY29uZmlncyA9IHBhcnNlZF9sb2dfLmF1ZGlvX25l
dHdvcmtfYWRhcHRhdGlvbl9ldmVudHMoKTsKIAotICBBU1NFUlRfRVEoYWxyX3N0YXRlX2V2ZW50
cy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQWxyU3RhdGVF
dmVudCgqZXZlbnQsIGFscl9zdGF0ZV9ldmVudHNbMF0pKTsKKyAgQVNTRVJUX0VRKGFuYV9jb25m
aWdzLnNpemUoKSwgZXZlbnRzLnNpemUoKSk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZl
bnRzLnNpemUoKTsgKytpKSB7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEF1ZGlvTmV0d29y
a0FkYXB0YXRpb25FdmVudCgqZXZlbnRzW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5hX2NvbmZpZ3NbaV0pOworICB9CiB9CiAKLXZv
aWQgUnRjRXZlbnRMb2dFbmNvZGVyVGVzdDo6VGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRh
dGlvbigKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZz4gcnVu
dGltZV9jb25maWcpIHsKLSAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgcmVwZWF0ZWRseS4g
Q2xlYXIgc3RhdGUgYmV0d2VlbiBjYWxscy4KLSAgaGlzdG9yeV8uY2xlYXIoKTsKLSAgYXV0byBv
cmlnaW5hbF9ydW50aW1lX2NvbmZpZyA9ICpydW50aW1lX2NvbmZpZzsKLSAgYXV0byBldmVudCA9
IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4oCi0gICAg
ICBzdGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsKLSAgY29uc3QgaW50NjRfdCB0aW1lc3RhbXBf
dXMgPSBldmVudC0+dGltZXN0YW1wX3VzXzsKLSAgaGlzdG9yeV8ucHVzaF9iYWNrKHN0ZDo6bW92
ZShldmVudCkpOwordGVtcGxhdGUgPD4KK3N0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0cFBhY2tl
dEluY29taW5nPiBSdGNFdmVudExvZ0VuY29kZXJUZXN0OjpOZXdSdHBQYWNrZXQoCisgICAgdWlu
dDMyX3Qgc3NyYywKKyAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9t
YXApIHsKKyAgcmV0dXJuIGdlbl8uTmV3UnRwUGFja2V0SW5jb21pbmcoc3NyYywgZXh0ZW5zaW9u
X21hcCwgZmFsc2UpOworfQorCit0ZW1wbGF0ZSA8Pgorc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
UnRwUGFja2V0T3V0Z29pbmc+IFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3Q6Ok5ld1J0cFBhY2tldCgK
KyAgICB1aW50MzJfdCBzc3JjLAorICAgIGNvbnN0IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCYgZXh0
ZW5zaW9uX21hcCkgeworICByZXR1cm4gZ2VuXy5OZXdSdHBQYWNrZXRPdXRnb2luZyhzc3JjLCBl
eHRlbnNpb25fbWFwLCBmYWxzZSk7Cit9CisKK3RlbXBsYXRlIDw+Citjb25zdCBzdGQ6OnZlY3Rv
cjxMb2dnZWRSdHBQYWNrZXRJbmNvbWluZz4qCitSdGNFdmVudExvZ0VuY29kZXJUZXN0OjpHZXRS
dHBQYWNrZXRzQnlTc3JjKAorICAgIGNvbnN0IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3KiBwYXJzZWRf
bG9nLAorICAgIHVpbnQzMl90IHNzcmMpIHsKKyAgY29uc3QgYXV0byYgaW5jb21pbmdfc3RyZWFt
cyA9IHBhcnNlZF9sb2ctPmluY29taW5nX3J0cF9wYWNrZXRzX2J5X3NzcmMoKTsKKyAgZm9yIChj
b25zdCBhdXRvJiBzdHJlYW0gOiBpbmNvbWluZ19zdHJlYW1zKSB7CisgICAgaWYgKHN0cmVhbS5z
c3JjID09IHNzcmMpIHsKKyAgICAgIHJldHVybiAmc3RyZWFtLmluY29taW5nX3BhY2tldHM7Cisg
ICAgfQorICB9CisgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZSA8PgorY29uc3Qgc3Rk
Ojp2ZWN0b3I8TG9nZ2VkUnRwUGFja2V0T3V0Z29pbmc+KgorUnRjRXZlbnRMb2dFbmNvZGVyVGVz
dDo6R2V0UnRwUGFja2V0c0J5U3NyYygKKyAgICBjb25zdCBQYXJzZWRSdGNFdmVudExvZ05ldyog
cGFyc2VkX2xvZywKKyAgICB1aW50MzJfdCBzc3JjKSB7CisgIGNvbnN0IGF1dG8mIG91dGdvaW5n
X3N0cmVhbXMgPSBwYXJzZWRfbG9nLT5vdXRnb2luZ19ydHBfcGFja2V0c19ieV9zc3JjKCk7Cisg
IGZvciAoY29uc3QgYXV0byYgc3RyZWFtIDogb3V0Z29pbmdfc3RyZWFtcykgeworICAgIGlmIChz
dHJlYW0uc3NyYyA9PSBzc3JjKSB7CisgICAgICByZXR1cm4gJnN0cmVhbS5vdXRnb2luZ19wYWNr
ZXRzOworICAgIH0KKyAgfQorICByZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIEV2ZW50VHlwZSwgdHlwZW5hbWUgUGFyc2VkVHlwZT4KK3ZvaWQgUnRjRXZlbnRMb2dFbmNv
ZGVyVGVzdDo6VGVzdFJ0cFBhY2tldHMoKSB7CisgIC8vIFNTUkNzIHdpbGwgYmUgcmFuZG9tbHkg
YXNzaWduZWQgb3V0IG9mIHRoaXMgc21hbGwgcG9vbCwgc2lnbmlmaWNhbnQgb25seQorICAvLyBp
biB0aGF0IGl0IGFsc28gY292ZXJzIHN1Y2ggZWRnZSBjYXNlcyBhcyBTU1JDID0gMCBhbmQgU1NS
QyA9IDB4ZmZmZmZmZmYuCisgIC8vIFRoZSBwb29sIGlzIGludGVudGlvbmFsbHkgc21hbGwsIHNv
IGFzIHRvIHByb2R1Y2UgY29sbGlzaW9ucy4KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDMyX3Q+
IGtTc3JjUG9vbCA9IHsweDAwMDAwMDAwLCAweDEyMzQ1Njc4LCAweGFiY2RlZjAxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmZmZmZmZmYsIDB4MjAxNzEw
MjQsIDB4MTk4NDA3MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHgxOTgzMTIzMH07CisKKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFRlc3QgZXh0ZW5zaW9ucyBm
b3IgbGVnYWN5IGVuY29kaW5nLCB0b28uCisgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcCBleHRlbnNp
b25fbWFwOworICBpZiAobmV3X2VuY29kaW5nXykgeworICAgIGV4dGVuc2lvbl9tYXAgPSBnZW5f
Lk5ld1J0cEhlYWRlckV4dGVuc2lvbk1hcCh0cnVlKTsKKyAgfQorCisgIC8vIFNpbXVsYXRlIHxl
dmVudF9jb3VudF98IFJUUCBwYWNrZXRzLCB3aXRoIFNTUkNzIGFzc2lnbmVkIHJhbmRvbWx5Cisg
IC8vIG91dCBvZiB0aGUgc21hbGwgcG9vbCBhYm92ZS4KKyAgc3RkOjptYXA8dWludDMyX3QsIHN0
ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFdmVudFR5cGU+Pj4gZXZlbnRzX2J5X3NzcmM7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICBjb25zdCB1
aW50MzJfdCBzc3JjID0ga1NzcmNQb29sW3BybmdfLlJhbmQoa1NzcmNQb29sLnNpemUoKSAtIDEp
XTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRUeXBlPiBldmVudCA9CisgICAgICAgIChldmVu
dHNfYnlfc3NyY1tzc3JjXS5lbXB0eSgpIHx8ICFmb3JjZV9yZXBlYXRlZF9maWVsZHNfKQorICAg
ICAgICAgICAgPyBOZXdSdHBQYWNrZXQ8RXZlbnRUeXBlPihzc3JjLCBleHRlbnNpb25fbWFwKQor
ICAgICAgICAgICAgOiBldmVudHNfYnlfc3NyY1tzc3JjXVswXS0+Q29weSgpOworICAgIGhpc3Rv
cnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgpKTsKKyAgICBldmVudHNfYnlfc3NyY1tzc3JjXS5l
bXBsYWNlX2JhY2soc3RkOjptb3ZlKGV2ZW50KSk7CisgIH0KIAorICAvLyBFbmNvZGUgYW5kIHBh
cnNlLgogICBzdGQ6OnN0cmluZyBlbmNvZGVkID0gZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhpc3Rv
cnlfLmJlZ2luKCksIGhpc3RvcnlfLmVuZCgpKTsKICAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18u
UGFyc2VTdHJpbmcoZW5jb2RlZCkpOwotICBjb25zdCBhdXRvJiBhbmFfY29uZmlncyA9IHBhcnNl
ZF9sb2dfLmF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbl9ldmVudHMoKTsKLSAgQVNTRVJUX0VRKGFu
YV9jb25maWdzLnNpemUoKSwgMXUpOwogCi0gIEVYUEVDVF9FUShhbmFfY29uZmlnc1swXS50aW1l
c3RhbXBfdXMsIHRpbWVzdGFtcF91cyk7Ci0gIEVYUEVDVF9FUShhbmFfY29uZmlnc1swXS5jb25m
aWcsIG9yaWdpbmFsX3J1bnRpbWVfY29uZmlnKTsKKyAgLy8gRm9yIGVhY2ggU1NSQywgbWFrZSBz
dXJlIHRoZSBSVFAgcGFja2V0cyBhc3NvY2lhdGVkIHdpdGggaXQgdG8gaGF2ZSBiZWVuCisgIC8v
IGNvcnJlY3RseSBlbmNvZGVkIGFuZCBwYXJzZWQuCisgIGZvciAoYXV0byBpdCA9IGV2ZW50c19i
eV9zc3JjLmJlZ2luKCk7IGl0ICE9IGV2ZW50c19ieV9zc3JjLmVuZCgpOyArK2l0KSB7CisgICAg
Y29uc3QgdWludDMyX3Qgc3NyYyA9IGl0LT5maXJzdDsKKyAgICBjb25zdCBhdXRvJiBvcmlnaW5h
bF9wYWNrZXRzID0gaXQtPnNlY29uZDsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYXJzZWRUeXBl
PiogcGFyc2VkX3J0cF9wYWNrZXRzID0KKyAgICAgICAgR2V0UnRwUGFja2V0c0J5U3NyYzxQYXJz
ZWRUeXBlPigmcGFyc2VkX2xvZ18sIHNzcmMpOworICAgIEFTU0VSVF9ORShwYXJzZWRfcnRwX3Bh
Y2tldHMsIG51bGxwdHIpOworICAgIEFTU0VSVF9FUShvcmlnaW5hbF9wYWNrZXRzLnNpemUoKSwg
cGFyc2VkX3J0cF9wYWNrZXRzLT5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b3JpZ2luYWxfcGFja2V0cy5zaXplKCk7ICsraSkgeworICAgICAgdmVyaWZpZXJfLlZlcmlmeUxv
Z2dlZFJ0cFBhY2tldDxFdmVudFR5cGUsIFBhcnNlZFR5cGU+KAorICAgICAgICAgICpvcmlnaW5h
bF9wYWNrZXRzW2ldLCAoKnBhcnNlZF9ydHBfcGFja2V0cylbaV0pOworICAgIH0KKyAgfQorfQor
CitURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRBbHJTdGF0ZSkgeworICBz
dGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBbHJTdGF0ZT4+IGV2ZW50cyhldmVu
dF9jb3VudF8pOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytpKSB7
CisgICAgZXZlbnRzW2ldID0gKGkgPT0gMCB8fCAhZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykgPyBn
ZW5fLk5ld0FsclN0YXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IGV2ZW50c1swXS0+Q29weSgpOworICAgIGhpc3RvcnlfLnB1c2hfYmFj
ayhldmVudHNbaV0tPkNvcHkoKSk7CisgIH0KKworICBzdGQ6OnN0cmluZyBlbmNvZGVkID0gZW5j
b2Rlcl8tPkVuY29kZUJhdGNoKGhpc3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVuZCgpKTsKKyAg
QVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOworICBjb25zdCBh
dXRvJiBhbHJfc3RhdGVfZXZlbnRzID0gcGFyc2VkX2xvZ18uYWxyX3N0YXRlX2V2ZW50cygpOwor
CisgIEFTU0VSVF9FUShhbHJfc3RhdGVfZXZlbnRzLnNpemUoKSwgZXZlbnRfY291bnRfKTsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIHZlcmlmaWVy
Xy5WZXJpZnlMb2dnZWRBbHJTdGF0ZUV2ZW50KCpldmVudHNbaV0sIGFscl9zdGF0ZV9ldmVudHNb
aV0pOworICB9CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEF1
ZGlvTmV0d29ya0FkYXB0YXRpb25CaXRyYXRlKSB7Ci0gIGF1dG8gcnVudGltZV9jb25maWcgPSBh
YnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPigpOwotICBjb25zdCBp
bnQgYml0cmF0ZV9icHMgPSBydGM6OmNoZWNrZWRfY2FzdDxpbnQ+KAotICAgICAgcHJuZ18uUmFu
ZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpOwotICBydW50aW1lX2Nv
bmZpZy0+Yml0cmF0ZV9icHMgPSBiaXRyYXRlX2JwczsKLSAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3
b3JrQWRhcHRhdGlvbihzdGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsKKyAgc3RkOjp2ZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4+IGV2ZW50cygK
KyAgICAgIGV2ZW50X2NvdW50Xyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291
bnRfOyArK2kpIHsKKyAgICBpZiAoaSA9PSAwIHx8ICFmb3JjZV9yZXBlYXRlZF9maWVsZHNfKSB7
CisgICAgICBhdXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNv
ZGVyUnVudGltZUNvbmZpZz4oKTsKKyAgICAgIGNvbnN0IGludCBiaXRyYXRlX2JwcyA9IHJ0Yzo6
Y2hlY2tlZF9jYXN0PGludD4oCisgICAgICAgICAgcHJuZ18uUmFuZCgwLCBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKSkpOworICAgICAgcnVudGltZV9jb25maWctPmJpdHJhdGVf
YnBzID0gYml0cmF0ZV9icHM7CisgICAgICBldmVudHNbaV0gPSBhYnNsOjptYWtlX3VuaXF1ZTxS
dGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24+KAorICAgICAgICAgIHN0ZDo6bW92ZShydW50
aW1lX2NvbmZpZykpOworICAgIH0gZWxzZSB7CisgICAgICBldmVudHNbaV0gPSBldmVudHNbMF0t
PkNvcHkoKTsKKyAgICB9CisgIH0KKyAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlv
bihldmVudHMpOwogfQogCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRB
dWRpb05ldHdvcmtBZGFwdGF0aW9uRnJhbWVMZW5ndGgpIHsKLSAgYXV0byBydW50aW1lX2NvbmZp
ZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+KCk7Ci0gIGNv
bnN0IGludCBmcmFtZV9sZW5ndGhfbXMgPSBwcm5nXy5SYW5kKDEsIDEwMDApOwotICBydW50aW1l
X2NvbmZpZy0+ZnJhbWVfbGVuZ3RoX21zID0gZnJhbWVfbGVuZ3RoX21zOwotICBUZXN0UnRjRXZl
bnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOworICBz
dGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9u
Pj4gZXZlbnRzKAorICAgICAgZXZlbnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBldmVudF9jb3VudF87ICsraSkgeworICAgIGlmIChpID09IDAgfHwgIWZvcmNlX3JlcGVhdGVk
X2ZpZWxkc18pIHsKKyAgICAgIGF1dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1
ZTxBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPigpOworICAgICAgY29uc3QgaW50IGZyYW1lX2xl
bmd0aF9tcyA9IHBybmdfLlJhbmQoMSwgMTAwMCk7CisgICAgICBydW50aW1lX2NvbmZpZy0+ZnJh
bWVfbGVuZ3RoX21zID0gZnJhbWVfbGVuZ3RoX21zOworICAgICAgZXZlbnRzW2ldID0gYWJzbDo6
bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uPigKKyAgICAgICAgICBz
dGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsKKyAgICB9IGVsc2UgeworICAgICAgZXZlbnRzW2ld
ID0gZXZlbnRzWzBdLT5Db3B5KCk7CisgICAgfQorICB9CisgIFRlc3RSdGNFdmVudEF1ZGlvTmV0
d29ya0FkYXB0YXRpb24oZXZlbnRzKTsKIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRl
c3QsIFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvblBhY2tldExvc3MpIHsKLSAgLy8gVG8g
c2ltcGxpZnkgdGhlIHRlc3QsIHdlIGp1c3QgY2hlY2sgcG93ZXJzIG9mIHR3by4KLSAgY29uc3Qg
ZmxvYXQgcGxyID0gc3RkOjpwb3coMC41ZiwgcHJuZ18uUmFuZCgxLCA4KSk7Ci0gIGF1dG8gcnVu
dGltZV9jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJSdW50aW1lQ29uZmln
PigpOwotICBydW50aW1lX2NvbmZpZy0+dXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uID0gcGxy
OwotICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKHN0ZDo6bW92ZShydW50aW1l
X2NvbmZpZykpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb05l
dHdvcmtBZGFwdGF0aW9uPj4gZXZlbnRzKAorICAgICAgZXZlbnRfY291bnRfKTsKKyAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIGlmIChpID09IDAgfHwg
IWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18pIHsKKyAgICAgIC8vIFRvIHNpbXBsaWZ5IHRoZSB0ZXN0
LCB3ZSBqdXN0IGNoZWNrIHBvd2VycyBvZiB0d28uCisgICAgICBjb25zdCBmbG9hdCBwbHIgPSBz
dGQ6OnBvdygwLjVmLCBwcm5nXy5SYW5kKDEsIDgpKTsKKyAgICAgIGF1dG8gcnVudGltZV9jb25m
aWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPigpOworICAg
ICAgcnVudGltZV9jb25maWctPnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbiA9IHBscjsKKyAg
ICAgIGV2ZW50c1tpXSA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRh
cHRhdGlvbj4oCisgICAgICAgICAgc3RkOjptb3ZlKHJ1bnRpbWVfY29uZmlnKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgIGV2ZW50c1tpXSA9IGV2ZW50c1swXS0+Q29weSgpOworICAgIH0KKyAgfQor
ICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKGV2ZW50cyk7CiB9CiAKIFRFU1Rf
UChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb25G
ZWMpIHsKLSAgLy8gVGhlIHRlc3QgbWlnaHQgYmUgdHJpdmlhbGx5IHBhc3NpbmcgZm9yIG9uZSBv
ZiB0aGUgdHdvIGJvb2xlYW4gdmFsdWVzLCBzbwotICAvLyBmb3Igc2FmZXR5J3Mgc2FrZSwgd2Ug
dGVzdCBib3RoLgotICBmb3IgKGJvb2wgZmVjX2VuYWJsZWQgOiB7ZmFsc2UsIHRydWV9KSB7Ci0g
ICAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1
bnRpbWVDb25maWc+KCk7Ci0gICAgcnVudGltZV9jb25maWctPmVuYWJsZV9mZWMgPSBmZWNfZW5h
YmxlZDsKLSAgICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKHN0ZDo6bW92ZShy
dW50aW1lX2NvbmZpZykpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRB
dWRpb05ldHdvcmtBZGFwdGF0aW9uPj4gZXZlbnRzKAorICAgICAgZXZlbnRfY291bnRfKTsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAgIGlmIChpID09
IDAgfHwgIWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18pIHsKKyAgICAgIGF1dG8gcnVudGltZV9jb25m
aWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPigpOworICAg
ICAgcnVudGltZV9jb25maWctPmVuYWJsZV9mZWMgPSBwcm5nXy5SYW5kPGJvb2w+KCk7CisgICAg
ICBldmVudHNbaV0gPSBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0
YXRpb24+KAorICAgICAgICAgIHN0ZDo6bW92ZShydW50aW1lX2NvbmZpZykpOworICAgIH0gZWxz
ZSB7CisgICAgICBldmVudHNbaV0gPSBldmVudHNbMF0tPkNvcHkoKTsKKyAgICB9CiAgIH0KKyAg
VGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihldmVudHMpOwogfQogCiBURVNUX1Ao
UnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uRHR4
KSB7Ci0gIC8vIFRoZSB0ZXN0IG1pZ2h0IGJlIHRyaXZpYWxseSBwYXNzaW5nIGZvciBvbmUgb2Yg
dGhlIHR3byBib29sZWFuIHZhbHVlcywgc28KLSAgLy8gZm9yIHNhZmV0eSdzIHNha2UsIHdlIHRl
c3QgYm90aC4KLSAgZm9yIChib29sIGR0eF9lbmFibGVkIDoge2ZhbHNlLCB0cnVlfSkgewotICAg
IGF1dG8gcnVudGltZV9jb25maWcgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJSdW50
aW1lQ29uZmlnPigpOwotICAgIHJ1bnRpbWVfY29uZmlnLT5lbmFibGVfZHR4ID0gZHR4X2VuYWJs
ZWQ7Ci0gICAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihzdGQ6Om1vdmUocnVu
dGltZV9jb25maWcpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVk
aW9OZXR3b3JrQWRhcHRhdGlvbj4+IGV2ZW50cygKKyAgICAgIGV2ZW50X2NvdW50Xyk7CisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICBpZiAoaSA9PSAw
IHx8ICFmb3JjZV9yZXBlYXRlZF9maWVsZHNfKSB7CisgICAgICBhdXRvIHJ1bnRpbWVfY29uZmln
ID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZz4oKTsKKyAgICAg
IHJ1bnRpbWVfY29uZmlnLT5lbmFibGVfZHR4ID0gcHJuZ18uUmFuZDxib29sPigpOworICAgICAg
ZXZlbnRzW2ldID0gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0
aW9uPigKKyAgICAgICAgICBzdGQ6Om1vdmUocnVudGltZV9jb25maWcpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgZXZlbnRzW2ldID0gZXZlbnRzWzBdLT5Db3B5KCk7CisgICAgfQogICB9CisgIFRl
c3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oZXZlbnRzKTsKIH0KIAogVEVTVF9QKFJ0
Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbkNoYW5u
ZWxzKSB7Ci0gIC8vIFRoZSB0ZXN0IG1pZ2h0IGJlIHRyaXZpYWxseSBwYXNzaW5nIGZvciBvbmUg
b2YgdGhlIHR3byBwb3NzaWJsZSB2YWx1ZXMsIHNvCi0gIC8vIGZvciBzYWZldHkncyBzYWtlLCB3
ZSB0ZXN0IGJvdGguCi0gIGZvciAoc2l6ZV90IGNoYW5uZWxzIDogezEsIDJ9KSB7Ci0gICAgYXV0
byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRpbWVD
b25maWc+KCk7Ci0gICAgcnVudGltZV9jb25maWctPm51bV9jaGFubmVscyA9IGNoYW5uZWxzOwot
ICAgIFRlc3RSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oc3RkOjptb3ZlKHJ1bnRpbWVf
Y29uZmlnKSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvTmV0
d29ya0FkYXB0YXRpb24+PiBldmVudHMoCisgICAgICBldmVudF9jb3VudF8pOworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytpKSB7CisgICAgaWYgKGkgPT0gMCB8fCAh
Zm9yY2VfcmVwZWF0ZWRfZmllbGRzXykgeworICAgICAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFi
c2w6Om1ha2VfdW5pcXVlPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+KCk7CisgICAgICBydW50
aW1lX2NvbmZpZy0+bnVtX2NoYW5uZWxzID0gcHJuZ18uUmFuZCgxLCAyKTsKKyAgICAgIGV2ZW50
c1tpXSA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4o
CisgICAgICAgICAgc3RkOjptb3ZlKHJ1bnRpbWVfY29uZmlnKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIGV2ZW50c1tpXSA9IGV2ZW50c1swXS0+Q29weSgpOworICAgIH0KICAgfQorICBUZXN0UnRj
RXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKGV2ZW50cyk7CiB9CiAKIFRFU1RfUChSdGNFdmVu
dExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb25BbGwpIHsKLSAg
Y29uc3QgaW50IGJpdHJhdGVfYnBzID0gcnRjOjpjaGVja2VkX2Nhc3Q8aW50PigKLSAgICAgIHBy
bmdfLlJhbmQoMCwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKTsKLSAgY29u
c3QgaW50IGZyYW1lX2xlbmd0aF9tcyA9IHBybmdfLlJhbmQoMSwgMTAwMCk7Ci0gIGNvbnN0IGZs
b2F0IHBsciA9IHN0ZDo6cG93KDAuNWYsIHBybmdfLlJhbmQoMSwgOCkpOwotICBmb3IgKGJvb2wg
ZmVjX2VuYWJsZWQgOiB7ZmFsc2UsIHRydWV9KSB7Ci0gICAgZm9yIChib29sIGR0eF9lbmFibGVk
IDoge2ZhbHNlLCB0cnVlfSkgewotICAgICAgZm9yIChzaXplX3QgY2hhbm5lbHMgOiB7MSwgMn0p
IHsKLSAgICAgICAgYXV0byBydW50aW1lX2NvbmZpZyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlv
RW5jb2RlclJ1bnRpbWVDb25maWc+KCk7Ci0gICAgICAgIHJ1bnRpbWVfY29uZmlnLT5iaXRyYXRl
X2JwcyA9IGJpdHJhdGVfYnBzOwotICAgICAgICBydW50aW1lX2NvbmZpZy0+ZnJhbWVfbGVuZ3Ro
X21zID0gZnJhbWVfbGVuZ3RoX21zOwotICAgICAgICBydW50aW1lX2NvbmZpZy0+dXBsaW5rX3Bh
Y2tldF9sb3NzX2ZyYWN0aW9uID0gcGxyOwotICAgICAgICBydW50aW1lX2NvbmZpZy0+ZW5hYmxl
X2ZlYyA9IGZlY19lbmFibGVkOwotICAgICAgICBydW50aW1lX2NvbmZpZy0+ZW5hYmxlX2R0eCA9
IGR0eF9lbmFibGVkOwotICAgICAgICBydW50aW1lX2NvbmZpZy0+bnVtX2NoYW5uZWxzID0gY2hh
bm5lbHM7Ci0KLSAgICAgICAgVGVzdFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihzdGQ6
Om1vdmUocnVudGltZV9jb25maWcpKTsKLSAgICAgIH0KKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4+IGV2ZW50cygKKyAgICAgIGV2
ZW50X2NvdW50Xyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kp
IHsKKyAgICBpZiAoaSA9PSAwIHx8ICFmb3JjZV9yZXBlYXRlZF9maWVsZHNfKSB7CisgICAgICBh
dXRvIHJ1bnRpbWVfY29uZmlnID0gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyUnVudGlt
ZUNvbmZpZz4oKTsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLT5iaXRyYXRlX2JwcyA9IHJ0Yzo6Y2hl
Y2tlZF9jYXN0PGludD4oCisgICAgICAgICAgcHJuZ18uUmFuZCgwLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptYXgoKSkpOworICAgICAgcnVudGltZV9jb25maWctPmZyYW1lX2xlbmd0
aF9tcyA9IHBybmdfLlJhbmQoMSwgMTAwMCk7CisgICAgICBydW50aW1lX2NvbmZpZy0+dXBsaW5r
X3BhY2tldF9sb3NzX2ZyYWN0aW9uID0KKyAgICAgICAgICBzdGQ6OnBvdygwLjVmLCBwcm5nXy5S
YW5kKDEsIDgpKTsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLT5lbmFibGVfZmVjID0gcHJuZ18uUmFu
ZDxib29sPigpOworICAgICAgcnVudGltZV9jb25maWctPmVuYWJsZV9kdHggPSBwcm5nXy5SYW5k
PGJvb2w+KCk7CisgICAgICBydW50aW1lX2NvbmZpZy0+bnVtX2NoYW5uZWxzID0gcHJuZ18uUmFu
ZCgxLCAyKTsKKyAgICAgIGV2ZW50c1tpXSA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50QXVk
aW9OZXR3b3JrQWRhcHRhdGlvbj4oCisgICAgICAgICAgc3RkOjptb3ZlKHJ1bnRpbWVfY29uZmln
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGV2ZW50c1tpXSA9IGV2ZW50c1swXS0+Q29weSgpOwog
ICAgIH0KICAgfQorICBUZXN0UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKGV2ZW50cyk7
CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEF1ZGlvUGxheW91
dCkgewotICB1aW50MzJfdCBzc3JjID0gcHJuZ18uUmFuZDx1aW50MzJfdD4oKTsKLSAgc3RkOjp1
bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9QbGF5b3V0PiBldmVudCA9IGdlbl8uTmV3QXVkaW9QbGF5
b3V0KHNzcmMpOwotICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnQtPkNvcHkoKSk7CisgIC8vIFNT
UkNzIHdpbGwgYmUgcmFuZG9tbHkgYXNzaWduZWQgb3V0IG9mIHRoaXMgc21hbGwgcG9vbCwgc2ln
bmlmaWNhbnQgb25seQorICAvLyBpbiB0aGF0IGl0IGFsc28gY292ZXJzIHN1Y2ggZWRnZSBjYXNl
cyBhcyBTU1JDID0gMCBhbmQgU1NSQyA9IDB4ZmZmZmZmZmYuCisgIC8vIFRoZSBwb29sIGlzIGlu
dGVudGlvbmFsbHkgc21hbGwsIHNvIGFzIHRvIHByb2R1Y2UgY29sbGlzaW9ucy4KKyAgY29uc3Qg
c3RkOjp2ZWN0b3I8dWludDMyX3Q+IGtTc3JjUG9vbCA9IHsweDAwMDAwMDAwLCAweDEyMzQ1Njc4
LCAweGFiY2RlZjAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4ZmZmZmZmZmYsIDB4MjAxNzEwMjQsIDB4MTk4NDA3MzAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTgzMTIzMH07CisKKyAgc3RkOjptYXA8dWludDMy
X3QsIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvUGxheW91dD4+Pgor
ICAgICAgb3JpZ2luYWxfZXZlbnRzX2J5X3NzcmM7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICBjb25zdCB1aW50MzJfdCBzc3JjID0ga1NzcmNQb29s
W3BybmdfLlJhbmQoa1NzcmNQb29sLnNpemUoKSAtIDEpXTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UnRjRXZlbnRBdWRpb1BsYXlvdXQ+IGV2ZW50ID0KKyAgICAgICAgKG9yaWdpbmFsX2V2ZW50c19i
eV9zc3JjW3NzcmNdLmVtcHR5KCkgfHwgIWZvcmNlX3JlcGVhdGVkX2ZpZWxkc18pCisgICAgICAg
ICAgICA/IGdlbl8uTmV3QXVkaW9QbGF5b3V0KHNzcmMpCisgICAgICAgICAgICA6IG9yaWdpbmFs
X2V2ZW50c19ieV9zc3JjW3NzcmNdWzBdLT5Db3B5KCk7CisgICAgaGlzdG9yeV8ucHVzaF9iYWNr
KGV2ZW50LT5Db3B5KCkpOworICAgIG9yaWdpbmFsX2V2ZW50c19ieV9zc3JjW3NzcmNdLnB1c2hf
YmFjayhzdGQ6Om1vdmUoZXZlbnQpKTsKKyAgfQogCiAgIHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBl
bmNvZGVyXy0+RW5jb2RlQmF0Y2goaGlzdG9yeV8uYmVnaW4oKSwgaGlzdG9yeV8uZW5kKCkpOwog
ICBBU1NFUlRfVFJVRShwYXJzZWRfbG9nXy5QYXJzZVN0cmluZyhlbmNvZGVkKSk7CiAKLSAgY29u
c3QgYXV0byYgcGxheW91dF9ldmVudHMgPSBwYXJzZWRfbG9nXy5hdWRpb19wbGF5b3V0X2V2ZW50
cygpOwotICBBU1NFUlRfRVEocGxheW91dF9ldmVudHMuc2l6ZSgpLCAxdSk7Ci0gIGNvbnN0IGF1
dG8gcGxheW91dF9zdHJlYW0gPSBwbGF5b3V0X2V2ZW50cy5maW5kKHNzcmMpOwotICBBU1NFUlRf
VFJVRShwbGF5b3V0X3N0cmVhbSAhPSBwbGF5b3V0X2V2ZW50cy5lbmQoKSk7Ci0gIEFTU0VSVF9F
UShwbGF5b3V0X3N0cmVhbS0+c2Vjb25kLnNpemUoKSwgMXUpOwotICBMb2dnZWRBdWRpb1BsYXlv
dXRFdmVudCBwbGF5b3V0X2V2ZW50ID0gcGxheW91dF9zdHJlYW0tPnNlY29uZFswXTsKLSAgRVhQ
RUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQoKmV2ZW50LCBwbGF5
b3V0X2V2ZW50KSk7CisgIGNvbnN0IGF1dG8mIHBhcnNlZF9wbGF5b3V0X2V2ZW50c19ieV9zc3Jj
ID0KKyAgICAgIHBhcnNlZF9sb2dfLmF1ZGlvX3BsYXlvdXRfZXZlbnRzKCk7CisKKyAgLy8gU2Ft
ZSBudW1iZXIgb2YgZGlzdGluY3QgU1NSQ3MuCisgIEFTU0VSVF9FUShwYXJzZWRfcGxheW91dF9l
dmVudHNfYnlfc3NyYy5zaXplKCksCisgICAgICAgICAgICBvcmlnaW5hbF9ldmVudHNfYnlfc3Ny
Yy5zaXplKCkpOworCisgIGZvciAoYXV0byYgb3JpZ2luYWxfZXZlbnRfaXQgOiBvcmlnaW5hbF9l
dmVudHNfYnlfc3NyYykgeworICAgIGNvbnN0IHVpbnQzMl90IHNzcmMgPSBvcmlnaW5hbF9ldmVu
dF9pdC5maXJzdDsKKyAgICBjb25zdCBhdXRvJiBvcmlnaW5hbF9wbGF5b3V0X2V2ZW50cyA9IG9y
aWdpbmFsX2V2ZW50X2l0LnNlY29uZDsKKworICAgIGNvbnN0IGF1dG8mIHBhcnNlZF9ldmVudF9p
dCA9IHBhcnNlZF9wbGF5b3V0X2V2ZW50c19ieV9zc3JjLmZpbmQoc3NyYyk7CisgICAgQVNTRVJU
X1RSVUUocGFyc2VkX2V2ZW50X2l0ICE9IHBhcnNlZF9wbGF5b3V0X2V2ZW50c19ieV9zc3JjLmVu
ZCgpKTsKKyAgICBjb25zdCBhdXRvJiBwYXJzZWRfcGxheW91dF9ldmVudHMgPSBwYXJzZWRfZXZl
bnRfaXQtPnNlY29uZDsKKworICAgIC8vIFNhbWUgbnVtYmVyIHBsYXlvdXQgZXZlbnRzIGZvciB0
aGUgU1NSQyB1bmRlciBleGFtaW5hdGlvbi4KKyAgICBBU1NFUlRfRVEob3JpZ2luYWxfcGxheW91
dF9ldmVudHMuc2l6ZSgpLCBwYXJzZWRfcGxheW91dF9ldmVudHMuc2l6ZSgpKTsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ2luYWxfcGxheW91dF9ldmVudHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCgqb3JpZ2lu
YWxfcGxheW91dF9ldmVudHNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyc2VkX3BsYXlvdXRfZXZlbnRzW2ldKTsKKyAgICB9CisgIH0KIH0KIAor
Ly8gVE9ETyhlbGFkYWxvbi90ZXJlbGl1cyk6IFRlc3Qgd2l0aCBtdWx0aXBsZSBldmVudHMgaW4g
dGhlIGJhdGNoLgogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50QXVkaW9S
ZWNlaXZlU3RyZWFtQ29uZmlnKSB7CiAgIHVpbnQzMl90IHNzcmMgPSBwcm5nXy5SYW5kPHVpbnQz
Ml90PigpOwogICBSdHBIZWFkZXJFeHRlbnNpb25NYXAgZXh0ZW5zaW9ucyA9IGdlbl8uTmV3UnRw
SGVhZGVyRXh0ZW5zaW9uTWFwKCk7CkBAIC0yMDEsOSArNDA0LDEwIEBAIFRFU1RfUChSdGNFdmVu
dExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZykgewogICBj
b25zdCBhdXRvJiBhdWRpb19yZWN2X2NvbmZpZ3MgPSBwYXJzZWRfbG9nXy5hdWRpb19yZWN2X2Nv
bmZpZ3MoKTsKIAogICBBU1NFUlRfRVEoYXVkaW9fcmVjdl9jb25maWdzLnNpemUoKSwgMXUpOwot
ICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRBdWRpb1JlY3ZDb25maWcoKmV2ZW50LCBh
dWRpb19yZWN2X2NvbmZpZ3NbMF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEF1ZGlvUmVj
dkNvbmZpZygqZXZlbnQsIGF1ZGlvX3JlY3ZfY29uZmlnc1swXSk7CiB9CiAKKy8vIFRPRE8oZWxh
ZGFsb24vdGVyZWxpdXMpOiBUZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRzIGluIHRoZSBiYXRjaC4K
IFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNv
bmZpZykgewogICB1aW50MzJfdCBzc3JjID0gcHJuZ18uUmFuZDx1aW50MzJfdD4oKTsKICAgUnRw
SGVhZGVyRXh0ZW5zaW9uTWFwIGV4dGVuc2lvbnMgPSBnZW5fLk5ld1J0cEhlYWRlckV4dGVuc2lv
bk1hcCgpOwpAQCAtMjE2LDM3ICs0MjAsNTEgQEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRl
c3QsIFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnKSB7CiAgIGNvbnN0IGF1dG8mIGF1ZGlv
X3NlbmRfY29uZmlncyA9IHBhcnNlZF9sb2dfLmF1ZGlvX3NlbmRfY29uZmlncygpOwogCiAgIEFT
U0VSVF9FUShhdWRpb19zZW5kX2NvbmZpZ3Muc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRl
c3Q6OlZlcmlmeUxvZ2dlZEF1ZGlvU2VuZENvbmZpZygqZXZlbnQsIGF1ZGlvX3NlbmRfY29uZmln
c1swXSkpOworICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQXVkaW9TZW5kQ29uZmlnKCpldmVudCwg
YXVkaW9fc2VuZF9jb25maWdzWzBdKTsKIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRl
c3QsIFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCkgewotICBzdGQ6OnVuaXF1ZV9wdHI8UnRj
RXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkPiBldmVudCA9Ci0gICAgICBnZW5fLk5ld0J3ZVVwZGF0
ZURlbGF5QmFzZWQoKTsKLSAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5Db3B5KCkpOworICBz
dGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkPj4g
ZXZlbnRzKAorICAgICAgZXZlbnRfY291bnRfKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
dmVudF9jb3VudF87ICsraSkgeworICAgIGV2ZW50c1tpXSA9IChpID09IDAgfHwgIWZvcmNlX3Jl
cGVhdGVkX2ZpZWxkc18pCisgICAgICAgICAgICAgICAgICAgID8gZ2VuXy5OZXdCd2VVcGRhdGVE
ZWxheUJhc2VkKCkKKyAgICAgICAgICAgICAgICAgICAgOiBldmVudHNbMF0tPkNvcHkoKTsKKyAg
ICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnRzW2ldLT5Db3B5KCkpOworICB9CiAKICAgc3RkOjpz
dHJpbmcgZW5jb2RlZCA9IGVuY29kZXJfLT5FbmNvZGVCYXRjaChoaXN0b3J5Xy5iZWdpbigpLCBo
aXN0b3J5Xy5lbmQoKSk7CiAgIEFTU0VSVF9UUlVFKHBhcnNlZF9sb2dfLlBhcnNlU3RyaW5nKGVu
Y29kZWQpKTsKKwogICBjb25zdCBhdXRvJiBid2VfZGVsYXlfdXBkYXRlcyA9IHBhcnNlZF9sb2df
LmJ3ZV9kZWxheV91cGRhdGVzKCk7CisgIEFTU0VSVF9FUShid2VfZGVsYXlfdXBkYXRlcy5zaXpl
KCksIGV2ZW50X2NvdW50Xyk7CiAKLSAgQVNTRVJUX0VRKGJ3ZV9kZWxheV91cGRhdGVzLnNpemUo
KSwgMXUpOwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZURlbGF5
QmFzZWRVcGRhdGUoKmV2ZW50LCBid2VfZGVsYXlfdXBkYXRlc1swXSkpOworICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytpKSB7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxv
Z2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoKmV2ZW50c1tpXSwgYndlX2RlbGF5X3VwZGF0ZXNbaV0p
OworICB9CiB9CiAKIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEJ3ZVVw
ZGF0ZUxvc3NCYXNlZCkgewotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRCd2VVcGRhdGVMb3Nz
QmFzZWQ+IGV2ZW50ID0KLSAgICAgIGdlbl8uTmV3QndlVXBkYXRlTG9zc0Jhc2VkKCk7Ci0gIGhp
c3RvcnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkPj4gZXZlbnRzKGV2ZW50X2NvdW50Xyk7
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICBldmVu
dHNbaV0gPSAoaSA9PSAwIHx8ICFmb3JjZV9yZXBlYXRlZF9maWVsZHNfKQorICAgICAgICAgICAg
ICAgICAgICA/IGdlbl8uTmV3QndlVXBkYXRlTG9zc0Jhc2VkKCkKKyAgICAgICAgICAgICAgICAg
ICAgOiBldmVudHNbMF0tPkNvcHkoKTsKKyAgICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnRzW2ld
LT5Db3B5KCkpOworICB9CiAKICAgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IGVuY29kZXJfLT5FbmNv
ZGVCYXRjaChoaXN0b3J5Xy5iZWdpbigpLCBoaXN0b3J5Xy5lbmQoKSk7CiAgIEFTU0VSVF9UUlVF
KHBhcnNlZF9sb2dfLlBhcnNlU3RyaW5nKGVuY29kZWQpKTsKKwogICBjb25zdCBhdXRvJiBid2Vf
bG9zc191cGRhdGVzID0gcGFyc2VkX2xvZ18uYndlX2xvc3NfdXBkYXRlcygpOworICBBU1NFUlRf
RVEoYndlX2xvc3NfdXBkYXRlcy5zaXplKCksIGV2ZW50X2NvdW50Xyk7CiAKLSAgQVNTRVJUX0VR
KGJ3ZV9sb3NzX3VwZGF0ZXMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgdGVz
dDo6VmVyaWZ5TG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlKCpldmVudCwgYndlX2xvc3NfdXBkYXRl
c1swXSkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytpKSB7Cisg
ICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSgqZXZlbnRzW2ldLCBi
d2VfbG9zc191cGRhdGVzW2ldKTsKKyAgfQogfQogCisvLyBUT0RPKGVsYWRhbG9uL3RlcmVsaXVz
KTogVGVzdCB3aXRoIG11bHRpcGxlIGV2ZW50cyBpbiB0aGUgYmF0Y2guCiBURVNUX1AoUnRjRXZl
bnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKSB7CiAgIHN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWc+IGV2ZW50ID0KICAg
ICAgIGdlbl8uTmV3SWNlQ2FuZGlkYXRlUGFpckNvbmZpZygpOwpAQCAtMjU4LDEwICs0NzYsMTEg
QEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZykgewogICAgICAgcGFyc2VkX2xvZ18uaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZ3Mo
KTsKIAogICBBU1NFUlRfRVEoaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZ3Muc2l6ZSgpLCAxdSk7
Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWco
Ci0gICAgICAqZXZlbnQsIGljZV9jYW5kaWRhdGVfcGFpcl9jb25maWdzWzBdKSk7CisgIHZlcmlm
aWVyXy5WZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKCpldmVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNlX2NhbmRpZGF0ZV9wYWly
X2NvbmZpZ3NbMF0pOwogfQogCisvLyBUT0RPKGVsYWRhbG9uL3RlcmVsaXVzKTogVGVzdCB3aXRo
IG11bHRpcGxlIGV2ZW50cyBpbiB0aGUgYmF0Y2guCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVy
VGVzdCwgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudEljZUNhbmRpZGF0ZVBhaXI+IGV2ZW50ID0gZ2VuXy5OZXdJY2VDYW5kaWRhdGVQYWlyKCk7
CiAgIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgpKTsKQEAgLTI3MiwxOCArNDkxLDIx
IEBAIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudEljZUNhbmRpZGF0ZVBh
aXIpIHsKICAgICAgIHBhcnNlZF9sb2dfLmljZV9jYW5kaWRhdGVfcGFpcl9ldmVudHMoKTsKIAog
ICBBU1NFUlRfRVEoaWNlX2NhbmRpZGF0ZV9wYWlyX2V2ZW50cy5zaXplKCksIDF1KTsKLSAgRVhQ
RUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50KAotICAgICAg
KmV2ZW50LCBpY2VfY2FuZGlkYXRlX3BhaXJfZXZlbnRzWzBdKSk7CisgIHZlcmlmaWVyXy5WZXJp
ZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQoKmV2ZW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljZV9jYW5kaWRhdGVfcGFpcl9ldmVudHNbMF0p
OwogfQogCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRMb2dnaW5nU3Rh
cnRlZCkgewogICBjb25zdCBpbnQ2NF90IHRpbWVzdGFtcF91cyA9IHJ0Yzo6VGltZU1pY3Jvcygp
OworICBjb25zdCBpbnQ2NF90IHV0Y190aW1lX3VzID0gcnRjOjpUaW1lVVRDTWljcm9zKCk7CiAK
LSAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoZW5jb2Rlcl8tPkVuY29kZUxv
Z1N0YXJ0KHRpbWVzdGFtcF91cykpKTsKKyAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VT
dHJpbmcoCisgICAgICBlbmNvZGVyXy0+RW5jb2RlTG9nU3RhcnQodGltZXN0YW1wX3VzLCB1dGNf
dGltZV91cykpKTsKICAgY29uc3QgYXV0byYgc3RhcnRfbG9nX2V2ZW50cyA9IHBhcnNlZF9sb2df
LnN0YXJ0X2xvZ19ldmVudHMoKTsKIAogICBBU1NFUlRfRVEoc3RhcnRfbG9nX2V2ZW50cy5zaXpl
KCksIDF1KTsKLSAgRVhQRUNUX0VRKHN0YXJ0X2xvZ19ldmVudHNbMF0udGltZXN0YW1wX3VzLCB0
aW1lc3RhbXBfdXMpOworICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkU3RhcnRFdmVudCh0aW1lc3Rh
bXBfdXMsIHV0Y190aW1lX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydF9sb2dfZXZlbnRzWzBdKTsKIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3Qs
IFJ0Y0V2ZW50TG9nZ2luZ1N0b3BwZWQpIHsKQEAgLTI5Myw5ICs1MTUsMTAgQEAgVEVTVF9QKFJ0
Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50TG9nZ2luZ1N0b3BwZWQpIHsKICAgY29uc3Qg
YXV0byYgc3RvcF9sb2dfZXZlbnRzID0gcGFyc2VkX2xvZ18uc3RvcF9sb2dfZXZlbnRzKCk7CiAK
ICAgQVNTRVJUX0VRKHN0b3BfbG9nX2V2ZW50cy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX0VRKHN0
b3BfbG9nX2V2ZW50c1swXS50aW1lc3RhbXBfdXMsIHRpbWVzdGFtcF91cyk7CisgIHZlcmlmaWVy
Xy5WZXJpZnlMb2dnZWRTdG9wRXZlbnQodGltZXN0YW1wX3VzLCBzdG9wX2xvZ19ldmVudHNbMF0p
OwogfQogCisvLyBUT0RPKGVsYWRhbG9uL3RlcmVsaXVzKTogVGVzdCB3aXRoIG11bHRpcGxlIGV2
ZW50cyBpbiB0aGUgYmF0Y2guCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZl
bnRQcm9iZUNsdXN0ZXJDcmVhdGVkKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFByb2Jl
Q2x1c3RlckNyZWF0ZWQ+IGV2ZW50ID0KICAgICAgIGdlbl8uTmV3UHJvYmVDbHVzdGVyQ3JlYXRl
ZCgpOwpAQCAtMzA3LDEwICs1MzAsMTEgQEAgVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3Qs
IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCkgewogICAgICAgcGFyc2VkX2xvZ18uYndlX3By
b2JlX2NsdXN0ZXJfY3JlYXRlZF9ldmVudHMoKTsKIAogICBBU1NFUlRfRVEoYndlX3Byb2JlX2Ns
dXN0ZXJfY3JlYXRlZF9ldmVudHMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZl
cmlmeUxvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCgKLSAgICAgICpldmVudCwgYndl
X3Byb2JlX2NsdXN0ZXJfY3JlYXRlZF9ldmVudHNbMF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxv
Z2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCgKKyAgICAgICpldmVudCwgYndlX3Byb2Jl
X2NsdXN0ZXJfY3JlYXRlZF9ldmVudHNbMF0pOwogfQogCisvLyBUT0RPKGVsYWRhbG9uL3RlcmVs
aXVzKTogVGVzdCB3aXRoIG11bHRpcGxlIGV2ZW50cyBpbiB0aGUgYmF0Y2guCiBURVNUX1AoUnRj
RXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUpIHsKICAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlPiBldmVudCA9CiAgICAgICBn
ZW5fLk5ld1Byb2JlUmVzdWx0RmFpbHVyZSgpOwpAQCAtMzIxLDEwICs1NDUsMTEgQEAgVEVTVF9Q
KFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlKSB7CiAg
IGNvbnN0IGF1dG8mIGJ3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50cyA9IHBhcnNlZF9sb2dfLmJ3ZV9w
cm9iZV9mYWlsdXJlX2V2ZW50cygpOwogCiAgIEFTU0VSVF9FUShid2VfcHJvYmVfZmFpbHVyZV9l
dmVudHMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZVBy
b2JlRmFpbHVyZUV2ZW50KAotICAgICAgKmV2ZW50LCBid2VfcHJvYmVfZmFpbHVyZV9ldmVudHNb
MF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50KCpldmVu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ3ZV9wcm9i
ZV9mYWlsdXJlX2V2ZW50c1swXSk7CiB9CiAKKy8vIFRPRE8oZWxhZGFsb24vdGVyZWxpdXMpOiBU
ZXN0IHdpdGggbXVsdGlwbGUgZXZlbnRzIGluIHRoZSBiYXRjaC4KIFRFU1RfUChSdGNFdmVudExv
Z0VuY29kZXJUZXN0LCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2VzcykgewogICBzdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3M+IGV2ZW50ID0KICAgICAgIGdlbl8uTmV3
UHJvYmVSZXN1bHRTdWNjZXNzKCk7CkBAIC0zMzUsNzggKzU2MCw2NyBAQCBURVNUX1AoUnRjRXZl
bnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3MpIHsKICAgY29uc3Qg
YXV0byYgYndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRzID0gcGFyc2VkX2xvZ18uYndlX3Byb2JlX3N1
Y2Nlc3NfZXZlbnRzKCk7CiAKICAgQVNTRVJUX0VRKGJ3ZV9wcm9iZV9zdWNjZXNzX2V2ZW50cy5z
aXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQndlUHJvYmVTdWNj
ZXNzRXZlbnQoCi0gICAgICAqZXZlbnQsIGJ3ZV9wcm9iZV9zdWNjZXNzX2V2ZW50c1swXSkpOwor
ICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQoKmV2ZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYndlX3Byb2JlX3N1Y2Nl
c3NfZXZlbnRzWzBdKTsKIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0Y0V2
ZW50UnRjcFBhY2tldEluY29taW5nKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0Y3BQ
YWNrZXRJbmNvbWluZz4gZXZlbnQgPQotICAgICAgZ2VuXy5OZXdSdGNwUGFja2V0SW5jb21pbmco
KTsKLSAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50LT5Db3B5KCkpOworICBpZiAoIW5ld19lbmNv
ZGluZ18gJiYgZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykgeworICAgIC8vIFRoZSBvbGQgZW5jb2Rp
bmcgZG9lcyBub3Qgd29yayB3aXRoIGR1cGxpY2F0ZWQgcGFja2V0cy4gU2luY2UgdGhlIGxlZ2Fj
eQorICAgIC8vIGVuY29kaW5nIGlzIGJlaW5nIHBoYXNlZCBvdXQsIHdlIHdpbGwgbm90IGZpeCB0
aGlzLgorICAgIHJldHVybjsKKyAgfQorCisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZz4+IGV2ZW50cyhldmVudF9jb3VudF8pOworICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGV2ZW50X2NvdW50XzsgKytpKSB7CisgICAgZXZlbnRzW2ldID0g
KGkgPT0gMCB8fCAhZm9yY2VfcmVwZWF0ZWRfZmllbGRzXykKKyAgICAgICAgICAgICAgICAgICAg
PyBnZW5fLk5ld1J0Y3BQYWNrZXRJbmNvbWluZygpCisgICAgICAgICAgICAgICAgICAgIDogZXZl
bnRzWzBdLT5Db3B5KCk7CisgICAgaGlzdG9yeV8ucHVzaF9iYWNrKGV2ZW50c1tpXS0+Q29weSgp
KTsKKyAgfQogCiAgIHN0ZDo6c3RyaW5nIGVuY29kZWQgPSBlbmNvZGVyXy0+RW5jb2RlQmF0Y2go
aGlzdG9yeV8uYmVnaW4oKSwgaGlzdG9yeV8uZW5kKCkpOwogICBBU1NFUlRfVFJVRShwYXJzZWRf
bG9nXy5QYXJzZVN0cmluZyhlbmNvZGVkKSk7CisKICAgY29uc3QgYXV0byYgaW5jb21pbmdfcnRj
cF9wYWNrZXRzID0gcGFyc2VkX2xvZ18uaW5jb21pbmdfcnRjcF9wYWNrZXRzKCk7CisgIEFTU0VS
VF9FUShpbmNvbWluZ19ydGNwX3BhY2tldHMuc2l6ZSgpLCBldmVudF9jb3VudF8pOwogCi0gIEFT
U0VSVF9FUShpbmNvbWluZ19ydGNwX3BhY2tldHMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVF
KAotICAgICAgdGVzdDo6VmVyaWZ5TG9nZ2VkUnRjcFBhY2tldEluY29taW5nKCpldmVudCwgaW5j
b21pbmdfcnRjcF9wYWNrZXRzWzBdKSk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRf
Y291bnRfOyArK2kpIHsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkUnRjcFBhY2tldEluY29t
aW5nKCpldmVudHNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmNvbWluZ19ydGNwX3BhY2tldHNbaV0pOworICB9CiB9CiAKIFRFU1RfUChSdGNFdmVu
dExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZykgewotICBzdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmc+IGV2ZW50ID0KLSAgICAgIGdlbl8u
TmV3UnRjcFBhY2tldE91dGdvaW5nKCk7Ci0gIGhpc3RvcnlfLnB1c2hfYmFjayhldmVudC0+Q29w
eSgpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRjcFBhY2tldE91
dGdvaW5nPj4gZXZlbnRzKGV2ZW50X2NvdW50Xyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZXZlbnRfY291bnRfOyArK2kpIHsKKyAgICBldmVudHNbaV0gPSAoaSA9PSAwIHx8ICFmb3JjZV9y
ZXBlYXRlZF9maWVsZHNfKQorICAgICAgICAgICAgICAgICAgICA/IGdlbl8uTmV3UnRjcFBhY2tl
dE91dGdvaW5nKCkKKyAgICAgICAgICAgICAgICAgICAgOiBldmVudHNbMF0tPkNvcHkoKTsKKyAg
ICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZlbnRzW2ldLT5Db3B5KCkpOworICB9CiAKICAgc3RkOjpz
dHJpbmcgZW5jb2RlZCA9IGVuY29kZXJfLT5FbmNvZGVCYXRjaChoaXN0b3J5Xy5iZWdpbigpLCBo
aXN0b3J5Xy5lbmQoKSk7CiAgIEFTU0VSVF9UUlVFKHBhcnNlZF9sb2dfLlBhcnNlU3RyaW5nKGVu
Y29kZWQpKTsKKwogICBjb25zdCBhdXRvJiBvdXRnb2luZ19ydGNwX3BhY2tldHMgPSBwYXJzZWRf
bG9nXy5vdXRnb2luZ19ydGNwX3BhY2tldHMoKTsKKyAgQVNTRVJUX0VRKG91dGdvaW5nX3J0Y3Bf
cGFja2V0cy5zaXplKCksIGV2ZW50X2NvdW50Xyk7CiAKLSAgQVNTRVJUX0VRKG91dGdvaW5nX3J0
Y3BfcGFja2V0cy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICB0ZXN0OjpWZXJp
ZnlMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmcoKmV2ZW50LCBvdXRnb2luZ19ydGNwX3BhY2tldHNb
MF0pKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBldmVudF9jb3VudF87ICsraSkgeworICAg
IHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmcoKmV2ZW50c1tpXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGdvaW5nX3J0Y3Bf
cGFja2V0c1tpXSk7CisgIH0KIH0KIAogVEVTVF9QKFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsIFJ0
Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcpIHsKLSAgdWludDMyX3Qgc3NyYyA9IHBybmdfLlJhbmQ8
dWludDMyX3Q+KCk7Ci0gIFJ0cEhlYWRlckV4dGVuc2lvbk1hcCBleHRlbnNpb25fbWFwOyAgLy8g
VE9ETyh0ZXJlbGl1cyk6IFRlc3QgZXh0ZW5zaW9ucyB0b28uCi0gIHN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudFJ0cFBhY2tldEluY29taW5nPiBldmVudCA9Ci0gICAgICBnZW5fLk5ld1J0cFBhY2tl
dEluY29taW5nKHNzcmMsIGV4dGVuc2lvbl9tYXApOwotICBoaXN0b3J5Xy5wdXNoX2JhY2soZXZl
bnQtPkNvcHkoKSk7Ci0KLSAgc3RkOjpzdHJpbmcgZW5jb2RlZCA9IGVuY29kZXJfLT5FbmNvZGVC
YXRjaChoaXN0b3J5Xy5iZWdpbigpLCBoaXN0b3J5Xy5lbmQoKSk7Ci0gIEFTU0VSVF9UUlVFKHBh
cnNlZF9sb2dfLlBhcnNlU3RyaW5nKGVuY29kZWQpKTsKLSAgY29uc3QgYXV0byYgaW5jb21pbmdf
cnRwX3BhY2tldHNfYnlfc3NyYyA9Ci0gICAgICBwYXJzZWRfbG9nXy5pbmNvbWluZ19ydHBfcGFj
a2V0c19ieV9zc3JjKCk7Ci0KLSAgQVNTRVJUX0VRKGluY29taW5nX3J0cF9wYWNrZXRzX2J5X3Nz
cmMuc2l6ZSgpLCAxdSk7Ci0gIGNvbnN0IGF1dG8mIHN0cmVhbSA9IGluY29taW5nX3J0cF9wYWNr
ZXRzX2J5X3NzcmNbMF07Ci0gIEVYUEVDVF9FUShzdHJlYW0uc3NyYywgc3NyYyk7Ci0gIEFTU0VS
VF9FUShzdHJlYW0uaW5jb21pbmdfcGFja2V0cy5zaXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUo
Ci0gICAgICB0ZXN0OjpWZXJpZnlMb2dnZWRSdHBQYWNrZXRJbmNvbWluZygqZXZlbnQsIHN0cmVh
bS5pbmNvbWluZ19wYWNrZXRzWzBdKSk7CisgIFRlc3RSdHBQYWNrZXRzPFJ0Y0V2ZW50UnRwUGFj
a2V0SW5jb21pbmcsIExvZ2dlZFJ0cFBhY2tldEluY29taW5nPigpOwogfQogCiBURVNUX1AoUnRj
RXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZykgewotICB1aW50
MzJfdCBzc3JjID0gcHJuZ18uUmFuZDx1aW50MzJfdD4oKTsKLSAgUnRwSGVhZGVyRXh0ZW5zaW9u
TWFwIGV4dGVuc2lvbl9tYXA7ICAvLyBUT0RPKHRlcmVsaXVzKTogVGVzdCBleHRlbnNpb25zIHRv
by4KLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmc+IGV2ZW50ID0K
LSAgICAgIGdlbl8uTmV3UnRwUGFja2V0T3V0Z29pbmcoc3NyYywgZXh0ZW5zaW9uX21hcCk7Ci0g
IGhpc3RvcnlfLnB1c2hfYmFjayhldmVudC0+Q29weSgpKTsKLQotICBzdGQ6OnN0cmluZyBlbmNv
ZGVkID0gZW5jb2Rlcl8tPkVuY29kZUJhdGNoKGhpc3RvcnlfLmJlZ2luKCksIGhpc3RvcnlfLmVu
ZCgpKTsKLSAgQVNTRVJUX1RSVUUocGFyc2VkX2xvZ18uUGFyc2VTdHJpbmcoZW5jb2RlZCkpOwot
ICBjb25zdCBhdXRvJiBvdXRnb2luZ19ydHBfcGFja2V0c19ieV9zc3JjID0KLSAgICAgIHBhcnNl
ZF9sb2dfLm91dGdvaW5nX3J0cF9wYWNrZXRzX2J5X3NzcmMoKTsKLQotICBBU1NFUlRfRVEob3V0
Z29pbmdfcnRwX3BhY2tldHNfYnlfc3NyYy5zaXplKCksIDF1KTsKLSAgY29uc3QgYXV0byYgc3Ry
ZWFtID0gb3V0Z29pbmdfcnRwX3BhY2tldHNfYnlfc3NyY1swXTsKLSAgRVhQRUNUX0VRKHN0cmVh
bS5zc3JjLCBzc3JjKTsKLSAgQVNTRVJUX0VRKHN0cmVhbS5vdXRnb2luZ19wYWNrZXRzLnNpemUo
KSwgMXUpOwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIHRlc3Q6OlZlcmlmeUxvZ2dlZFJ0cFBhY2tl
dE91dGdvaW5nKCpldmVudCwgc3RyZWFtLm91dGdvaW5nX3BhY2tldHNbMF0pKTsKKyAgVGVzdFJ0
cFBhY2tldHM8UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZywgTG9nZ2VkUnRwUGFja2V0T3V0Z29p
bmc+KCk7CiB9CiAKKy8vIFRPRE8oZWxhZGFsb24vdGVyZWxpdXMpOiBUZXN0IHdpdGggbXVsdGlw
bGUgZXZlbnRzIGluIHRoZSBiYXRjaC4KIFRFU1RfUChSdGNFdmVudExvZ0VuY29kZXJUZXN0LCBS
dGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZykgewogICB1aW50MzJfdCBzc3JjID0gcHJu
Z18uUmFuZDx1aW50MzJfdD4oKTsKICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwIGV4dGVuc2lvbnMg
PSBnZW5fLk5ld1J0cEhlYWRlckV4dGVuc2lvbk1hcCgpOwpAQCAtNDE5LDkgKzYzMywxMCBAQCBU
RVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1D
b25maWcpIHsKICAgY29uc3QgYXV0byYgdmlkZW9fcmVjdl9jb25maWdzID0gcGFyc2VkX2xvZ18u
dmlkZW9fcmVjdl9jb25maWdzKCk7CiAKICAgQVNTRVJUX0VRKHZpZGVvX3JlY3ZfY29uZmlncy5z
aXplKCksIDF1KTsKLSAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkVmlkZW9SZWN2Q29u
ZmlnKCpldmVudCwgdmlkZW9fcmVjdl9jb25maWdzWzBdKSk7CisgIHZlcmlmaWVyXy5WZXJpZnlM
b2dnZWRWaWRlb1JlY3ZDb25maWcoKmV2ZW50LCB2aWRlb19yZWN2X2NvbmZpZ3NbMF0pOwogfQog
CisvLyBUT0RPKGVsYWRhbG9uL3RlcmVsaXVzKTogVGVzdCB3aXRoIG11bHRpcGxlIGV2ZW50cyBp
biB0aGUgYmF0Y2guCiBURVNUX1AoUnRjRXZlbnRMb2dFbmNvZGVyVGVzdCwgUnRjRXZlbnRWaWRl
b1NlbmRTdHJlYW1Db25maWcpIHsKICAgdWludDMyX3Qgc3NyYyA9IHBybmdfLlJhbmQ8dWludDMy
X3Q+KCk7CiAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcCBleHRlbnNpb25zID0gZ2VuXy5OZXdSdHBI
ZWFkZXJFeHRlbnNpb25NYXAoKTsKQEAgLTQzNCwxMSArNjQ5LDE1IEBAIFRFU1RfUChSdGNFdmVu
dExvZ0VuY29kZXJUZXN0LCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZykgewogICBjb25z
dCBhdXRvJiB2aWRlb19zZW5kX2NvbmZpZ3MgPSBwYXJzZWRfbG9nXy52aWRlb19zZW5kX2NvbmZp
Z3MoKTsKIAogICBBU1NFUlRfRVEodmlkZW9fc2VuZF9jb25maWdzLnNpemUoKSwgMXUpOwotICBF
WFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRWaWRlb1NlbmRDb25maWcoKmV2ZW50LCB2aWRl
b19zZW5kX2NvbmZpZ3NbMF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFZpZGVvU2VuZENv
bmZpZygqZXZlbnQsIHZpZGVvX3NlbmRfY29uZmlnc1swXSk7CiB9CiAKLUlOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKFJhbmRvbVNlZWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgUnRjRXZlbnRM
b2dFbmNvZGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVz
KDEsIDIsIDMsIDQsIDUpKTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIFJhbmRvbVNl
ZWRzLAorICAgIFJ0Y0V2ZW50TG9nRW5jb2RlclRlc3QsCisgICAgOjp0ZXN0aW5nOjpDb21iaW5l
KC8qIFJhbmRvbSBzZWVkKjogKi8gOjp0ZXN0aW5nOjpWYWx1ZXMoMSwgMiwgMywgNCwgNSksCisg
ICAgICAgICAgICAgICAgICAgICAgIC8qIEVuY29kaW5nOiAqLyA6OnRlc3Rpbmc6OkJvb2woKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgLyogRXZlbnQgY291bnQ6ICovIDo6dGVzdGluZzo6VmFs
dWVzKDEsIDIsIDEwLCAxMDApLAorICAgICAgICAgICAgICAgICAgICAgICAvKiBSZXBlYXRlZCBm
aWVsZHM6ICovIDo6dGVzdGluZzo6Qm9vbCgpKSk7CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3ZhcmludC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL3Zh
cmludC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MWUyOWU4NDgwYmQ1YWExMWNhMmUxYjY0MDU3YmRhODZkY2Y0
M2JhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvdmFyaW50LmNjCkBAIC0wLDAg
KzEsODAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2VuY29kZXIvdmFyaW50LmgiCisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKKworLy8gVE9ETyhlbGFkYWxvbik6IEFkZCB1bml0IHRlc3RzLgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworY29uc3Qgc2l6ZV90IGtNYXhWYXJJbnRMZW5ndGhCeXRlcyA9IDEwOyAgLy8gY2Vp
bCg2NCAvIDcuMCkgaXMgMTAuCisKK3N0ZDo6c3RyaW5nIEVuY29kZVZhckludCh1aW50NjRfdCBp
bnB1dCkgeworICBzdGQ6OnN0cmluZyBvdXRwdXQ7CisgIG91dHB1dC5yZXNlcnZlKGtNYXhWYXJJ
bnRMZW5ndGhCeXRlcyk7CisKKyAgZG8geworICAgIHVpbnQ4X3QgYnl0ZSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KGlucHV0ICYgMHg3Zik7CisgICAgaW5wdXQgPj49IDc7CisgICAgaWYgKGlucHV0
ID4gMCkgeworICAgICAgYnl0ZSB8PSAweDgwOworICAgIH0KKyAgICBvdXRwdXQgKz0gYnl0ZTsK
KyAgfSB3aGlsZSAoaW5wdXQgPiAwKTsKKworICBSVENfRENIRUNLX0dFKG91dHB1dC5zaXplKCks
IDF1KTsKKyAgUlRDX0RDSEVDS19MRShvdXRwdXQuc2l6ZSgpLCBrTWF4VmFySW50TGVuZ3RoQnl0
ZXMpOworCisgIHJldHVybiBvdXRwdXQ7Cit9CisKKy8vIFRoZXJlIGlzIHNvbWUgY29kZSBkdXBs
aWNhdGlvbiBiZXR3ZWVuIHRoZSBmbGF2b3JzIG9mIHRoaXMgZnVuY3Rpb24uCisvLyBGb3IgcGVy
Zm9ybWFuY2UncyBzYWtlLCBpdCdzIGJlc3QgdG8ganVzdCBrZWVwIGl0Lgorc2l6ZV90IERlY29k
ZVZhckludChhYnNsOjpzdHJpbmdfdmlldyBpbnB1dCwgdWludDY0X3QqIG91dHB1dCkgeworICBS
VENfRENIRUNLKG91dHB1dCk7CisKKyAgdWludDY0X3QgZGVjb2RlZCA9IDA7CisgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoKCkgJiYgaSA8IGtNYXhWYXJJbnRMZW5ndGhCeXRl
czsgKytpKSB7CisgICAgZGVjb2RlZCArPSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlucHV0W2ld
ICYgMHg3ZikKKyAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oNyAqIGkp
KTsKKyAgICBpZiAoIShpbnB1dFtpXSAmIDB4ODApKSB7CisgICAgICAqb3V0cHV0ID0gZGVjb2Rl
ZDsKKyAgICAgIHJldHVybiBpICsgMTsKKyAgICB9CisgIH0KKworICByZXR1cm4gMDsKK30KKwor
Ly8gVGhlcmUgaXMgc29tZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlIGZsYXZvcnMgb2Yg
dGhpcyBmdW5jdGlvbi4KKy8vIEZvciBwZXJmb3JtYW5jZSdzIHNha2UsIGl0J3MgYmVzdCB0byBq
dXN0IGtlZXAgaXQuCitzaXplX3QgRGVjb2RlVmFySW50KHJ0Yzo6Qml0QnVmZmVyKiBpbnB1dCwg
dWludDY0X3QqIG91dHB1dCkgeworICBSVENfRENIRUNLKG91dHB1dCk7CisKKyAgdWludDY0X3Qg
ZGVjb2RlZCA9IDA7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga01heFZhckludExlbmd0aEJ5
dGVzOyArK2kpIHsKKyAgICB1aW50OF90IGJ5dGU7CisgICAgaWYgKCFpbnB1dC0+UmVhZFVJbnQ4
KCZieXRlKSkgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGRlY29kZWQgKz0KKyAgICAg
ICAgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihieXRlICYgMHg3ZikgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KDcgKiBpKSk7CisgICAgaWYgKCEoYnl0ZSAmIDB4ODApKSB7CisgICAgICAqb3V0cHV0
ID0gZGVjb2RlZDsKKyAgICAgIHJldHVybiBpICsgMTsKKyAgICB9CisgIH0KKworICByZXR1cm4g
MDsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29k
ZXIvdmFyaW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci92YXJpbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTQ5NGFl
NzUzZmMyNTg3ZTdjYmIwZTNmYWNjOTRlY2YxMzY4MmJmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2VuY29kZXIvdmFyaW50LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VOQ09ERVJfVkFSSU5UX0hfCisj
ZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FTkNPREVSX1ZBUklOVF9IXworCisjaW5jbHVk
ZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvYml0YnVmZmVyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitleHRl
cm4gY29uc3Qgc2l6ZV90IGtNYXhWYXJJbnRMZW5ndGhCeXRlczsKKworLy8gRW5jb2RlIGEgZ2l2
ZW4gdWludDY0X3QgYXMgYSB2YXJpbnQuIEZyb20gbGVhc3QgdG8gbW9zdCBzaWduaWZpY2FudCwK
Ky8vIGVhY2ggYmF0Y2ggb2Ygc2V2ZW4gYml0cyBhcmUgcHV0IGludG8gdGhlIGxvd2VyIGJpdHMg
b2YgYSBieXRlLCBhbmQgdGhlIGxhc3QKKy8vIHJlbWFpbmluZyBiaXQgaW4gdGhhdCBieXRlICh0
aGUgaGlnaGVzdCBvbmUpIG1hcmtzIHdoZXRoZXIgYWRkaXRpb25hbCBieXRlcworLy8gZm9sbG93
ICh3aGljaCBoYXBwZW5zIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGFyZSBvdGhlciBiaXRzIGluIHxp
bnB1dHwgd2hpY2gKKy8vIGFyZSBub24temVybykuCisvLyBOb3RlczogSWYgaW5wdXQgPT0gMCwg
b25lIGJ5dGUgaXMgdXNlZC4gSWYgaW5wdXQgaXMgdWludDY0X3Q6Om1heCwgZXhhY3RseQorLy8g
a01heFZhckludExlbmd0aEJ5dGVzIGFyZSB1c2VkLgorc3RkOjpzdHJpbmcgRW5jb2RlVmFySW50
KHVpbnQ2NF90IGlucHV0KTsKKworLy8gSW52ZXJzZSBvZiBFbmNvZGVWYXJJbnQoKS4KKy8vIElm
IGRlY29kaW5nIGlzIHN1Y2Nlc3NmdWwsIGEgbm9uLXplcm8gbnVtYmVyIGlzIHJldHVybmVkLCBp
bmRpY2F0aW5nIHRoZQorLy8gbnVtYmVyIG9mIGJ5dGVzIHJlYWQgZnJvbSB8aW5wdXR8LCBhbmQg
dGhlIGRlY29kZWQgdmFyaW50IGlzIHdyaXR0ZW4KKy8vIGludG8gfG91dHB1dHwuCisvLyBJZiBu
b3Qgc3VjY2Vzc2Z1bCwgMCBpcyByZXR1cm5lZCwgYW5kIHxvdXRwdXR8IGlzIG5vdCBtb2RpZmll
ZC4KK3NpemVfdCBEZWNvZGVWYXJJbnQoYWJzbDo6c3RyaW5nX3ZpZXcgaW5wdXQsIHVpbnQ2NF90
KiBvdXRwdXQpOworCisvLyBTYW1lIGFzIG90aGVyIHZlcnNpb24sIGJ1dCB1c2VzIGEgcnRjOjpC
aXRCdWZmZXIgZm9yIGlucHV0LgorLy8gU29tZSBiaXRzIG1heSBiZSBjb25zdW1lZCBldmVuIGlm
IGEgdmFyaW50IGZhaWxzIHRvIGJlIHJlYWQuCitzaXplX3QgRGVjb2RlVmFySW50KHJ0Yzo6Qml0
QnVmZmVyKiBpbnB1dCwgdWludDY0X3QqIG91dHB1dCk7CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKKworI2VuZGlmICAvLyBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRU5DT0RFUl9WQVJJTlRfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudC5oCmluZGV4IDIxZDZlNDhlMGY1MjkwNDUwMDQ5MmYzYWVhYTllYzZkM2I5NjdmNDcu
LjdhZTYzNzU4YjE1OGFiMzA2ZTExZjA1NTBjODk4ZDhkYzU4ZDdhZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaApA
QCAtNTcsMTIgKzU3LDEzIEBAIGNsYXNzIFJ0Y0V2ZW50IHsKIAogICB2aXJ0dWFsIGJvb2wgSXND
b25maWdFdmVudCgpIGNvbnN0ID0gMDsKIAotICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxSdGNF
dmVudD4gQ29weSgpIGNvbnN0ID0gMDsKLQotICBjb25zdCBpbnQ2NF90IHRpbWVzdGFtcF91c187
CisgIGludDY0X3QgdGltZXN0YW1wX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzXyAv
IDEwMDA7IH0KKyAgaW50NjRfdCB0aW1lc3RhbXBfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3Rh
bXBfdXNfOyB9CiAKICBwcm90ZWN0ZWQ6CiAgIGV4cGxpY2l0IFJ0Y0V2ZW50KGludDY0X3QgdGlt
ZXN0YW1wX3VzKSA6IHRpbWVzdGFtcF91c18odGltZXN0YW1wX3VzKSB7fQorCisgIGNvbnN0IGlu
dDY0X3QgdGltZXN0YW1wX3VzXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2Fscl9zdGF0ZS5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVu
dHMvcnRjX2V2ZW50X2Fscl9zdGF0ZS5jYwppbmRleCBjMWYxYjM5NTMyMDMzMDEwYjVjNmM4MWI0
ZjQ4NjU2YzE2ODVkNjZjLi44ZTVjMmNhODJmNzFjYzlmZGVmZjhiYjVkNzU2YmE2NGRhNzJlNjE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hbHJfc3RhdGUuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmNjCkBAIC0yOCw4ICsyOCw4IEBAIGJv
b2wgUnRjRXZlbnRBbHJTdGF0ZTo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIGZh
bHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50QWxyU3RhdGU6OkNv
cHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50PihuZXcgUnRj
RXZlbnRBbHJTdGF0ZSgqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QWxyU3RhdGU+
IFJ0Y0V2ZW50QWxyU3RhdGU6OkNvcHkoKSBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5p
cXVlPFJ0Y0V2ZW50QWxyU3RhdGU+KG5ldyBSdGNFdmVudEFsclN0YXRlKCp0aGlzKSk7CiB9CiAK
IH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X2Fscl9zdGF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0YXRlLmgKaW5k
ZXggZTczN2M5MTVlMWQ1NjExMThmYzBlYjQ2NDcwZThkYWU2ZmY2OGM3My4uOTc2OTU4NWQzZDY4
MjY0NzdkMmU4YTc1Njc2MTgwNDdhMzE1ODgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfYWxyX3N0YXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYWxyX3N0
YXRlLmgKQEAgLTI2LDEyICsyNiwxNCBAQCBjbGFzcyBSdGNFdmVudEFsclN0YXRlIGZpbmFsIDog
cHVibGljIFJ0Y0V2ZW50IHsKIAogICBib29sIElzQ29uZmlnRXZlbnQoKSBjb25zdCBvdmVycmlk
ZTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IENvcHkoKSBjb25zdCBvdmVycmlkZTsK
KyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QWxyU3RhdGU+IENvcHkoKSBjb25zdDsKIAotICBj
b25zdCBib29sIGluX2Fscl87CisgIGJvb2wgaW5fYWxyKCkgY29uc3QgeyByZXR1cm4gaW5fYWxy
XzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRBbHJTdGF0ZShjb25zdCBSdGNFdmVudEFsclN0
YXRlJiBvdGhlcik7CisKKyAgY29uc3QgYm9vbCBpbl9hbHJfOwogfTsKIAogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0
d29ya19hZGFwdGF0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fbmV0d29y
a19hZGFwdGF0aW9uLmNjCmluZGV4IGRjZjJkN2RlNTkyMjRhZjJkNjRjMTExY2ViZDZmYjQ0NWFk
NTI3OWEuLjU3MWI5YTkzZDNlYjdkZWU5ZTYyYzAzN2VkOTY4NDk4OGQzZTQ4ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb24uY2MK
QEAgLTE0LDEyICsxNCwxNSBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1
ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFw
dGF0aW9uOjpSdGNFdmVudEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWc+IGNvbmZpZykKLSAgICA6IGNvbmZpZ18oc3Rk
Ojptb3ZlKGNvbmZpZykpIHt9CisgICAgOiBjb25maWdfKHN0ZDo6bW92ZShjb25maWcpKSB7Cisg
IFJUQ19EQ0hFQ0soY29uZmlnXyk7Cit9CiAKIFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlv
bjo6UnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAogICAgIGNvbnN0IFJ0Y0V2ZW50QXVk
aW9OZXR3b3JrQWRhcHRhdGlvbiYgb3RoZXIpCkBAIC0zNiw3ICszOSw4IEBAIGJvb2wgUnRjRXZl
bnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1
cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gUnRjRXZlbnRBdWRpb05l
dHdvcmtBZGFwdGF0aW9uOjpDb3B5KCkgY29uc3Qgeworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
QXVkaW9OZXR3b3JrQWRhcHRhdGlvbj4KK1J0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbjo6
Q29weSgpIGNvbnN0IHsKICAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWUobmV3IFJ0Y0V2ZW50QXVk
aW9OZXR3b3JrQWRhcHRhdGlvbigqdGhpcykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb24uaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi5oCmluZGV4IDY1ZmJhZDg2MjFkMDNl
YTdkNmYyYmEyNmNjNWY3NTkyMjU1YTE2MjQuLmVjNmNhMTEyNWM0MGEzZTZhZTJmOTVlNzU3MTky
N2I0NTFhZGI1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX25l
dHdvcmtfYWRhcHRhdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX25l
dHdvcmtfYWRhcHRhdGlvbi5oCkBAIC0yOSwxMiArMjksMTQgQEAgY2xhc3MgUnRjRXZlbnRBdWRp
b05ldHdvcmtBZGFwdGF0aW9uIGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50IHsKIAogICBib29sIElz
Q29uZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnQ+IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVk
aW9OZXR3b3JrQWRhcHRhdGlvbj4gQ29weSgpIGNvbnN0OwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxjb25zdCBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPiBjb25maWdfOworICBjb25zdCBB
dWRpb0VuY29kZXJSdW50aW1lQ29uZmlnJiBjb25maWcoKSBjb25zdCB7IHJldHVybiAqY29uZmln
XzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKGNvbnN0
IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiYgb3RoZXIpOworCisgIGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxjb25zdCBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnPiBjb25maWdfOwogfTsK
IAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfYXVkaW9fcGxheW91dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3Bs
YXlvdXQuY2MKaW5kZXggYTk2NDNiYTg2OGMwMzhkODFkMGEzNTU3MjM5ZjlkOGYyYTBlM2ZjOC4u
NmM0YWE5OGQzZTIzOGNhYzMyNTNkZjI1MzNkYTBjMTA2M2YyMjI4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcGxheW91dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9hdWRpb19wbGF5b3V0LmNjCkBAIC0yNyw4ICsyNyw5IEBAIGJvb2wgUnRjRXZl
bnRBdWRpb1BsYXlvdXQ6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNFdmVudEF1ZGlvUGxheW91dDo6Q29w
eSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNF
dmVudEF1ZGlvUGxheW91dCgqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QXVkaW9Q
bGF5b3V0PiBSdGNFdmVudEF1ZGlvUGxheW91dDo6Q29weSgpIGNvbnN0IHsKKyAgcmV0dXJuIGFi
c2w6OldyYXBVbmlxdWU8UnRjRXZlbnRBdWRpb1BsYXlvdXQ+KAorICAgICAgbmV3IFJ0Y0V2ZW50
QXVkaW9QbGF5b3V0KCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3BsYXlvdXQuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9l
dmVudHMvcnRjX2V2ZW50X2F1ZGlvX3BsYXlvdXQuaAppbmRleCAzMDgwZjViOWYwZTcyZWIxYWRk
M2E5ZDIxNmU2NWNlZDdlY2Y1MzYzLi40YjQwZjVjMDI3MjhhYTZiNGYyMDNkZGMwMWY2Yzk3MzM1
ZDVkZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19wbGF5b3V0
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fcGxheW91dC5oCkBAIC0xMSw2
ICsxMSw3IEBACiAjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FVkVOVFNfUlRDX0VWRU5U
X0FVRElPX1BMQVlPVVRfSF8KICNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19S
VENfRVZFTlRfQVVESU9fUExBWU9VVF9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVk
ZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnQuaCIKQEAgLTI2LDEyICsyNywxNCBAQCBjbGFzcyBSdGNFdmVudEF1ZGlvUGxheW91dCBm
aW5hbCA6IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkgY29uc3Qgb3Zl
cnJpZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudEF1ZGlvUGxheW91dD4gQ29weSgpIGNv
bnN0OwogCi0gIGNvbnN0IHVpbnQzMl90IHNzcmNfOworICB1aW50MzJfdCBzc3JjKCkgY29uc3Qg
eyByZXR1cm4gc3NyY187IH0KIAogIHByaXZhdGU6CiAgIFJ0Y0V2ZW50QXVkaW9QbGF5b3V0KGNv
bnN0IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0JiBvdGhlcik7CisKKyAgY29uc3QgdWludDMyX3Qgc3Ny
Y187CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0cmVhbV9jb25maWcuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0cmVhbV9jb25maWcuY2MKaW5kZXggZmVlN2Mz
Yzc2NmMzZDFkYTQ4YmViODhjMDdlNTBlMDNhMGVkMDU1NS4uZmRlZjM5M2Q1NDZjMWE4OTE2NjJh
MjU1NGQyZDA3NzlhOTE3NzVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
YXVkaW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5jYwpAQCAtMTQsMTIgKzE0LDE1IEBACiAK
ICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19l
dmVudF9sb2cvcnRjX3N0cmVhbV9jb25maWcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29u
ZmlnOjpSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZygKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8cnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZykKLSAgICA6IGNvbmZpZ18oc3RkOjptb3Zl
KGNvbmZpZykpIHt9CisgICAgOiBjb25maWdfKHN0ZDo6bW92ZShjb25maWcpKSB7CisgIFJUQ19E
Q0hFQ0soY29uZmlnXyk7Cit9CiAKIFJ0Y0V2ZW50QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnOjpS
dGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZygKICAgICBjb25zdCBSdGNFdmVudEF1ZGlv
UmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3RoZXIpCkBAIC0zNiw5ICszOSw5IEBAIGJvb2wgUnRjRXZl
bnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50QXVkaW9S
ZWNlaXZlU3RyZWFtQ29uZmlnOjpDb3B5KCkgY29uc3QgewotICBhdXRvIGNvbmZpZ19jb3B5ID0g
YWJzbDo6bWFrZV91bmlxdWU8cnRjbG9nOjpTdHJlYW1Db25maWc+KCpjb25maWdfKTsKLSAgcmV0
dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+KAorc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
QXVkaW9SZWNlaXZlU3RyZWFtQ29uZmlnPgorUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25m
aWc6OkNvcHkoKSBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50QXVk
aW9SZWNlaXZlU3RyZWFtQ29uZmlnPigKICAgICAgIG5ldyBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0
cmVhbUNvbmZpZygqdGhpcykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19l
dmVudF9hdWRpb19yZWNlaXZlX3N0cmVhbV9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5oCmluZGV4IDI3NTc2NTAzMTQzNjIwOWQy
OTlmZTdhZGQ3NTYxZGQzYzM0MThiNTUuLjJiNzNmNjNmMDAwZGZmMDZmOTRmMzliYmEwY2MzYjNh
NzYzNDhmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3JlY2Vp
dmVfc3RyZWFtX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3Jl
Y2VpdmVfc3RyZWFtX2NvbmZpZy5oCkBAIC0zMSwxMyArMzEsMTUgQEAgY2xhc3MgUnRjRXZlbnRB
dWRpb1JlY2VpdmVTdHJlYW1Db25maWcgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJv
b2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc+IENvcHkoKSBjb25zdDsKIAotICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Y29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZ187CisgIGNvbnN0
IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnJiBjb25maWcoKSBjb25zdCB7IHJldHVybiAqY29uZmlnXzsg
fQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWcoCiAgICAg
ICBjb25zdCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3RoZXIpOworCisgIGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmlnXzsK
IH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5jYwppbmRleCA0NzkzOWM3YmRjMzJlZjUx
YWYwYjkwOTJkMDQ5OWU1YmE4OGU0OTQ0Li5mMWE4NWJmZjY5NDY1MDA0NDZmZThlMzE4YjlhYTBm
YWUxYzNjNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19zZW5k
X3N0cmVhbV9jb25maWcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYXVkaW9fc2Vu
ZF9zdHJlYW1fY29uZmlnLmNjCkBAIC0xNCwxMiArMTQsMTUgQEAKIAogI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3Ry
ZWFtX2NvbmZpZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIAogUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc6OlJ0Y0V2ZW50QXVkaW9T
ZW5kU3RyZWFtQ29uZmlnKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxydGNsb2c6OlN0cmVhbUNvbmZp
Zz4gY29uZmlnKQotICAgIDogY29uZmlnXyhzdGQ6Om1vdmUoY29uZmlnKSkge30KKyAgICA6IGNv
bmZpZ18oc3RkOjptb3ZlKGNvbmZpZykpIHsKKyAgUlRDX0RDSEVDSyhjb25maWdfKTsKK30KIAog
UnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc6OlJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29u
ZmlnKAogICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnJiBvdGhlcikKQEAg
LTM2LDkgKzM5LDEwIEBAIGJvb2wgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc6OklzQ29u
ZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
UnRjRXZlbnQ+IFJ0Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnOjpDb3B5KCkgY29uc3Qgewot
ICBhdXRvIGNvbmZpZ19jb3B5ID0gYWJzbDo6bWFrZV91bmlxdWU8cnRjbG9nOjpTdHJlYW1Db25m
aWc+KCpjb25maWdfKTsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBS
dGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZygqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0
Y0V2ZW50QXVkaW9TZW5kU3RyZWFtQ29uZmlnPgorUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25m
aWc6OkNvcHkoKSBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50QXVk
aW9TZW5kU3RyZWFtQ29uZmlnPigKKyAgICAgIG5ldyBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNv
bmZpZygqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9hdWRpb19zZW5kX3N0cmVhbV9jb25maWcuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5oCmluZGV4IGIyNDhh
NjE5MTUwMTllOTdhNmU3NTg5NzdiYTYwMmE5NWMwZGZjMzEuLmMwZWZhOTUwOTAxYmJlZGMyMDVk
ZTQzMWQ1ZGUxYTY4ZDYyNmRhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X2F1ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZy5oCkBAIC0zMSwxMiArMzEsMTQgQEAgY2xhc3MgUnRj
RXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAg
IGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRj
RXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWc+IENvcHkoKSBjb25zdDsKIAotICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Y29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZ187CisgIGNvbnN0
IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnJiBjb25maWcoKSBjb25zdCB7IHJldHVybiAqY29uZmlnXzsg
fQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcoY29uc3QgUnRj
RXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcmIG90aGVyKTsKKworICBjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8Y29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZ187CiB9OwogCiB9ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2Vf
dXBkYXRlX2RlbGF5X2Jhc2VkLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0
ZV9kZWxheV9iYXNlZC5jYwppbmRleCA4YzE3OTcxMjYwNTIwYmJhZjMyYTIzNjEwZGU3ZDExYWE1
NmZkMzU5Li5kY2M4NzQyMWY4NzM3ZDdlMzNmYzZkZTJjZjZlMzA2ZGNmMWYyYmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2RlbGF5X2Jhc2VkLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfZGVsYXlfYmFzZWQuY2MKQEAg
LTM2LDggKzM2LDEwIEBAIGJvb2wgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkOjpJc0NvbmZp
Z0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudD4gUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkOjpDb3B5KCkgY29uc3QgewotICBy
ZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50QndlVXBkYXRlRGVs
YXlCYXNlZCgqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlC
YXNlZD4gUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkOjpDb3B5KCkKKyAgICBjb25zdCB7Cisg
IHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZD4oCisg
ICAgICBuZXcgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkKCp0aGlzKSk7CiB9CiAKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3
ZV91cGRhdGVfZGVsYXlfYmFzZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRh
dGVfZGVsYXlfYmFzZWQuaAppbmRleCAzZjQ3ZGM3Zjk3MDQ1ZDI3OWVkYTIyYmQ5YmI4YTRmYjYy
MWQ5ODNiLi5hOTdkNDlmNWE1NGU0N2JjMDk4MmJmOTQ1NWIxZDNkZDQxNDFjOTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBkYXRlX2RlbGF5X2Jhc2VkLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9kZWxheV9iYXNlZC5oCkBAIC0x
MSw2ICsxMSw3IEBACiAjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FVkVOVFNfUlRDX0VW
RU5UX0JXRV9VUERBVEVfREVMQVlfQkFTRURfSF8KICNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRf
TE9HX0VWRU5UU19SVENfRVZFTlRfQldFX1VQREFURV9ERUxBWV9CQVNFRF9IXwogCisjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIKQEAgLTI5LDEzICszMCwxNiBAQCBjbGFzcyBS
dGNFdmVudEJ3ZVVwZGF0ZURlbGF5QmFzZWQgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAg
IGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRj
RXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkPiBDb3B5KCkgY29uc3Q7CiAKLSAgY29uc3QgaW50MzJf
dCBiaXRyYXRlX2Jwc187Ci0gIGNvbnN0IEJhbmR3aWR0aFVzYWdlIGRldGVjdG9yX3N0YXRlXzsK
KyAgaW50MzJfdCBiaXRyYXRlX2JwcygpIGNvbnN0IHsgcmV0dXJuIGJpdHJhdGVfYnBzXzsgfQor
ICBCYW5kd2lkdGhVc2FnZSBkZXRlY3Rvcl9zdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGRldGVjdG9y
X3N0YXRlXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2VkKGNv
bnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCYgb3RoZXIpOworCisgIGNvbnN0IGludDMy
X3QgYml0cmF0ZV9icHNfOworICBjb25zdCBCYW5kd2lkdGhVc2FnZSBkZXRlY3Rvcl9zdGF0ZV87
CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9id2VfdXBkYXRlX2xvc3NfYmFzZWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19l
dmVudF9id2VfdXBkYXRlX2xvc3NfYmFzZWQuY2MKaW5kZXggYjBlNzJkZGIwYWE3OTRmZDY3MzMz
YjA2NTI0NzEzYTE4Y2RmNjk4Yy4uODQ1MzIzOGNmOTAzYjM4ZTkxNDUyOTEzMTEwOGViOGE1ODUy
ZTk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9sb3Nz
X2Jhc2VkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19i
YXNlZC5jYwpAQCAtMzgsOCArMzgsMTAgQEAgYm9vbCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNl
ZDo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkOjpDb3B5KCkgY29u
c3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50Qndl
VXBkYXRlTG9zc0Jhc2VkKCp0aGlzKSk7CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRCd2VVcGRh
dGVMb3NzQmFzZWQ+IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2VkOjpDb3B5KCkKKyAgICBjb25z
dCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jhc2Vk
PigKKyAgICAgIG5ldyBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCgqdGhpcykpOwogfQogCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVu
dF9id2VfdXBkYXRlX2xvc3NfYmFzZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91
cGRhdGVfbG9zc19iYXNlZC5oCmluZGV4IDJkNGZmZGExYjFlYTZlZDY2ZDAxODAwZGU3NDlkNmEx
ZDQyODg3ZDguLmI0Zjg4Nzc1ZmI3MmVhYTk2MThhYWE5MTllYzEzNmNjNWQ4M2ZlYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2J3ZV91cGRhdGVfbG9zc19iYXNlZC5oCkBAIC0x
MSw2ICsxMSw3IEBACiAjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FVkVOVFNfUlRDX0VW
RU5UX0JXRV9VUERBVEVfTE9TU19CQVNFRF9IXwogI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9M
T0dfRVZFTlRTX1JUQ19FVkVOVF9CV0VfVVBEQVRFX0xPU1NfQkFTRURfSF8KIAorI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCkBAIC0yOCwxNCArMjksMTggQEAgY2xhc3MgUnRj
RXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJv
b2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnRCd2VVcGRhdGVMb3NzQmFzZWQ+IENvcHkoKSBjb25zdDsKIAotICBjb25zdCBpbnQzMl90IGJp
dHJhdGVfYnBzXzsKLSAgY29uc3QgdWludDhfdCBmcmFjdGlvbl9sb3NzXzsKLSAgY29uc3QgaW50
MzJfdCB0b3RhbF9wYWNrZXRzXzsKKyAgaW50MzJfdCBiaXRyYXRlX2JwcygpIGNvbnN0IHsgcmV0
dXJuIGJpdHJhdGVfYnBzXzsgfQorICB1aW50OF90IGZyYWN0aW9uX2xvc3MoKSBjb25zdCB7IHJl
dHVybiBmcmFjdGlvbl9sb3NzXzsgfQorICBpbnQzMl90IHRvdGFsX3BhY2tldHMoKSBjb25zdCB7
IHJldHVybiB0b3RhbF9wYWNrZXRzXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRCd2VVcGRh
dGVMb3NzQmFzZWQoY29uc3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQmIG90aGVyKTsKKwor
ICBjb25zdCBpbnQzMl90IGJpdHJhdGVfYnBzXzsKKyAgY29uc3QgdWludDhfdCBmcmFjdGlvbl9s
b3NzXzsKKyAgY29uc3QgaW50MzJfdCB0b3RhbF9wYWNrZXRzXzsKIH07CiAKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5k
aWRhdGVfcGFpci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFp
ci5jYwppbmRleCBmYTMyZGU2OGQ1ZWFiN2MxYTJmZjdlNTczNjc1M2IwMTUwYjI2YTAxLi45YzMx
NzM3ZWE1ZWU2MTEzNTE4MDdlMWIwNDA1N2QwYzU2MjdlYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyLmNjCkBAIC0zNSw4ICszNSwxMCBAQCBib29s
IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcjo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0
dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50SWNlQ2Fu
ZGlkYXRlUGFpcjo6Q29weSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRj
RXZlbnQ+KG5ldyBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXIoKnRoaXMpKTsKK3N0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXI+IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcjo6
Q29weSgpCisgICAgY29uc3QgeworICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudElj
ZUNhbmRpZGF0ZVBhaXI+KAorICAgICAgbmV3IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcigqdGhp
cykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZl
bnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5oCmluZGV4IGY0OWEwZDE3OTJjYjQzMWJlZmMzN2JhZGM2
YjE2OTNkZmFiM2FiMTEuLjc0MTRmZWM3OWIxZThiMDYyZDIwNGQ1Nzg2NzQ2ZGYxNDczY2E1Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5oCkBAIC0z
NiwxMyArMzYsMTYgQEAgY2xhc3MgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyIGZpbmFsIDogcHVi
bGljIFJ0Y0V2ZW50IHsKIAogICBib29sIElzQ29uZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsK
IAotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAg
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcj4gQ29weSgpIGNvbnN0Owog
Ci0gIGNvbnN0IEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgdHlwZV87Ci0gIGNvbnN0IHVpbnQz
Ml90IGNhbmRpZGF0ZV9wYWlyX2lkXzsKKyAgSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gdHlwZV87IH0KKyAgdWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWQo
KSBjb25zdCB7IHJldHVybiBjYW5kaWRhdGVfcGFpcl9pZF87IH0KIAogIHByaXZhdGU6CiAgIFJ0
Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpcihjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXImIG90
aGVyKTsKKworICBjb25zdCBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlIHR5cGVfOworICBjb25z
dCB1aW50MzJfdCBjYW5kaWRhdGVfcGFpcl9pZF87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3Bh
aXJfY29uZmlnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWly
X2NvbmZpZy5jYwppbmRleCBmODlkZTc3NDBjN2JlOThlYmQ2MmY4ZjBhNmVlZjNjMjVkMDg3ZGZi
Li5mYmI4YTczZGZiZWE1OWY2NmZmM2JmNTZlNjQ1NGM3NDQ1NGY1NWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWcuY2MKQEAg
LTY0LDggKzY0LDEwIEBAIGJvb2wgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJc0Nv
bmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudD4gUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpDb3B5KCkgY29uc3Qg
ewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZygqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50SWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZz4KK1J0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6Q29weSgp
IGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnPigKKyAgICAgIG5ldyBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXJDb25maWcoKnRo
aXMpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2
ZW50cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZy5oCmluZGV4IDFmNmViOGNlYjBm
ZmZlOGU4N2QxZmU0ODllMjZlMjNlZjJiYjk2ZWMuLjQwYmRiYWE3NzFlODFjMGNmYjZhOWQwMTMy
YjdjZGVmNDJiOWNkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X2ljZV9j
YW5kaWRhdGVfcGFpcl9jb25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2Vf
Y2FuZGlkYXRlX3BhaXJfY29uZmlnLmgKQEAgLTkyLDE0ICs5MiwyMCBAQCBjbGFzcyBSdGNFdmVu
dEljZUNhbmRpZGF0ZVBhaXJDb25maWcgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJv
b2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnPiBDb3B5KCkgY29uc3Q7CiAKLSAgY29uc3QgSWNlQ2Fu
ZGlkYXRlUGFpckNvbmZpZ1R5cGUgdHlwZV87Ci0gIGNvbnN0IHVpbnQzMl90IGNhbmRpZGF0ZV9w
YWlyX2lkXzsKLSAgY29uc3QgSWNlQ2FuZGlkYXRlUGFpckRlc2NyaXB0aW9uIGNhbmRpZGF0ZV9w
YWlyX2Rlc2NfOworICBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZV87IH0KKyAgdWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWQoKSBjb25zdCB7IHJl
dHVybiBjYW5kaWRhdGVfcGFpcl9pZF87IH0KKyAgY29uc3QgSWNlQ2FuZGlkYXRlUGFpckRlc2Ny
aXB0aW9uJiBjYW5kaWRhdGVfcGFpcl9kZXNjKCkgY29uc3QgeworICAgIHJldHVybiBjYW5kaWRh
dGVfcGFpcl9kZXNjXzsKKyAgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnKGNvbnN0IFJ0Y0V2ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgb3RoZXIpOwor
CisgIGNvbnN0IEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlIHR5cGVfOworICBjb25zdCB1aW50
MzJfdCBjYW5kaWRhdGVfcGFpcl9pZF87CisgIGNvbnN0IEljZUNhbmRpZGF0ZVBhaXJEZXNjcmlw
dGlvbiBjYW5kaWRhdGVfcGFpcl9kZXNjXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRl
ZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRlZC5jYwpp
bmRleCBhNjA3NjVkYmQwZjFiZWZmOWJkYmJiNDRmMTM0ZDI0Y2ZmOGY0ZTVlLi5jMTFhNmNlNzhl
YjU2ZTBiZjkzNjNiNGNmOGExYTZiMmFhY2RmZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9wcm9iZV9jbHVzdGVyX2NyZWF0ZWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkLmNjCkBAIC0zOSw4ICszOSwxMCBAQCBib29s
IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZDo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAg
cmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50UHJv
YmVDbHVzdGVyQ3JlYXRlZDo6Q29weSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlx
dWU8UnRjRXZlbnQ+KG5ldyBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQoKnRoaXMpKTsKK3N0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQ+IFJ0Y0V2ZW50UHJvYmVD
bHVzdGVyQ3JlYXRlZDo6Q29weSgpCisgICAgY29uc3QgeworICByZXR1cm4gYWJzbDo6V3JhcFVu
aXF1ZTxSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQ+KAorICAgICAgbmV3IFJ0Y0V2ZW50UHJv
YmVDbHVzdGVyQ3JlYXRlZCgqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9jbHVzdGVyX2NyZWF0ZWQu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRlZC5oCmluZGV4
IDNlOGMyMWY1YzkyMTk4Mzk2NzMzMzRlYjA4MTZkY2ExMjUxNDUwZjAuLmFkNzU3ZWRkNTMwZTBj
Zjg1YTE1ZTE4ZTQ0YzI1Y2YxNWQ0MDE4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRlZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRlZC5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIExP
R0dJTkdfUlRDX0VWRU5UX0xPR19FVkVOVFNfUlRDX0VWRU5UX1BST0JFX0NMVVNURVJfQ1JFQVRF
RF9IXwogI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9QUk9C
RV9DTFVTVEVSX0NSRUFURURfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KIAogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
LmgiCkBAIC0yOSwxNSArMzAsMjAgQEAgY2xhc3MgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVk
IGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50IHsKIAogICBib29sIElzQ29uZmlnRXZlbnQoKSBjb25z
dCBvdmVycmlkZTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IENvcHkoKSBjb25zdCBv
dmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZD4g
Q29weSgpIGNvbnN0OworCisgIGludDMyX3QgaWQoKSBjb25zdCB7IHJldHVybiBpZF87IH0KKyAg
aW50MzJfdCBiaXRyYXRlX2JwcygpIGNvbnN0IHsgcmV0dXJuIGJpdHJhdGVfYnBzXzsgfQorICB1
aW50MzJfdCBtaW5fcHJvYmVzKCkgY29uc3QgeyByZXR1cm4gbWluX3Byb2Jlc187IH0KKyAgdWlu
dDMyX3QgbWluX2J5dGVzKCkgY29uc3QgeyByZXR1cm4gbWluX2J5dGVzXzsgfQorCisgcHJpdmF0
ZToKKyAgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkKGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVz
dGVyQ3JlYXRlZCYgb3RoZXIpOwogCiAgIGNvbnN0IGludDMyX3QgaWRfOwogICBjb25zdCBpbnQz
Ml90IGJpdHJhdGVfYnBzXzsKICAgY29uc3QgdWludDMyX3QgbWluX3Byb2Jlc187CiAgIGNvbnN0
IHVpbnQzMl90IG1pbl9ieXRlc187Ci0KLSBwcml2YXRlOgotICBSdGNFdmVudFByb2JlQ2x1c3Rl
ckNyZWF0ZWQoY29uc3QgUnRjRXZlbnRQcm9iZUNsdXN0ZXJDcmVhdGVkJiBvdGhlcik7CiB9Owog
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19l
dmVudF9wcm9iZV9yZXN1bHRfZmFpbHVyZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3By
b2JlX3Jlc3VsdF9mYWlsdXJlLmNjCmluZGV4IGFhNjA5MWNhNzc1YjU0YjkyZGI5MDhhNzFlMDEx
NTQ2NTY1ZjI4YjYuLjI5NTAwM2FlOGQwNDkxMTQxMTRlMjQ5NGY0OGU3MDU4YjFiN2I0MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9mYWlsdXJlLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9mYWlsdXJlLmNjCkBA
IC0zMyw4ICszMywxMCBAQCBib29sIFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlOjpJc0NvbmZp
Z0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudD4gUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmU6OkNvcHkoKSBjb25zdCB7Ci0gIHJl
dHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50PihuZXcgUnRjRXZlbnRQcm9iZVJlc3VsdEZh
aWx1cmUoKnRoaXMpKTsKK3N0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVy
ZT4gUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmU6OkNvcHkoKQorICAgIGNvbnN0IHsKKyAgcmV0
dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmU+KAorICAgICAg
bmV3IFJ0Y0V2ZW50UHJvYmVSZXN1bHRGYWlsdXJlKCp0aGlzKSk7CiB9CiAKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jl
c3VsdF9mYWlsdXJlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfZmFp
bHVyZS5oCmluZGV4IDE4MWM2OTQwMzcwZGRkMDYzNmM5OWUyMWU1NTJiOTY1YzM0ZjI4OTguLjBj
NDBmMGNkMWIxMWViOTMwOWZjNmE2YWNmN2Y5YzViZGI2N2VjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9mYWlsdXJlLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2
ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuaApAQCAtMTEsNiArMTEsNyBAQAog
I2lmbmRlZiBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19FVkVOVF9QUk9CRV9SRVNV
TFRfRkFJTFVSRV9IXwogI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfRVZFTlRTX1JUQ19F
VkVOVF9QUk9CRV9SRVNVTFRfRkFJTFVSRV9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnQuaCIKQEAgLTMzLDEzICszNCwxNiBAQCBjbGFzcyBSdGNFdmVudFByb2JlUmVzdWx0
RmFpbHVyZSBmaW5hbCA6IHB1YmxpYyBSdGNFdmVudCB7CiAKICAgYm9vbCBJc0NvbmZpZ0V2ZW50
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBDb3B5KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFByb2JlUmVzdWx0RmFp
bHVyZT4gQ29weSgpIGNvbnN0OwogCi0gIGNvbnN0IGludDMyX3QgaWRfOwotICBjb25zdCBQcm9i
ZUZhaWx1cmVSZWFzb24gZmFpbHVyZV9yZWFzb25fOworICBpbnQzMl90IGlkKCkgY29uc3QgeyBy
ZXR1cm4gaWRfOyB9CisgIFByb2JlRmFpbHVyZVJlYXNvbiBmYWlsdXJlX3JlYXNvbigpIGNvbnN0
IHsgcmV0dXJuIGZhaWx1cmVfcmVhc29uXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRQcm9i
ZVJlc3VsdEZhaWx1cmUoY29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUmIG90aGVyKTsK
KworICBjb25zdCBpbnQzMl90IGlkXzsKKyAgY29uc3QgUHJvYmVGYWlsdXJlUmVhc29uIGZhaWx1
cmVfcmVhc29uXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X3Byb2JlX3Jlc3VsdF9zdWNjZXNzLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2
ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X3N1Y2Nlc3MuY2MKaW5kZXggNTU5MDcyOTVkZWJk
NjEzZDkzNTA4ZGJlNzViNmQxMGU2Y2MzYTJjYy4uZDVmOWUyZjc4MGNhOTc3NTY2ZjQxYzRjMzMz
NGE1ZTE0NDJkNjhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVf
cmVzdWx0X3N1Y2Nlc3MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVz
dWx0X3N1Y2Nlc3MuY2MKQEAgLTMyLDggKzMyLDEwIEBAIGJvb2wgUnRjRXZlbnRQcm9iZVJlc3Vs
dFN1Y2Nlc3M6OklzQ29uZmlnRXZlbnQoKSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2Vzczo6Q29w
eSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+KG5ldyBSdGNF
dmVudFByb2JlUmVzdWx0U3VjY2VzcygqdGhpcykpOworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
UHJvYmVSZXN1bHRTdWNjZXNzPiBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2Vzczo6Q29weSgpCisg
ICAgY29uc3QgeworICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudFByb2JlUmVzdWx0
U3VjY2Vzcz4oCisgICAgICBuZXcgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3MoKnRoaXMpKTsK
IH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9y
dGNfZXZlbnRfcHJvYmVfcmVzdWx0X3N1Y2Nlc3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X3Byb2JlX3Jlc3VsdF9zdWNjZXNzLmgKaW5kZXggMTVmZjE4MzNiZjA0ZDFjNjJhZGExMzZlZDM4
MDNkYmZkY2JkNTlhOS4uYTA4ZGFkZDIxMmJhODIzZjA1OGZkMjkyNTMyOGRiNjAwMzZhYzNlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0X3N1Y2Nlc3Mu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9wcm9iZV9yZXN1bHRfc3VjY2Vzcy5oCkBA
IC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19FVkVOVFNfUlRD
X0VWRU5UX1BST0JFX1JFU1VMVF9TVUNDRVNTX0hfCiAjZGVmaW5lIExPR0dJTkdfUlRDX0VWRU5U
X0xPR19FVkVOVFNfUlRDX0VWRU5UX1BST0JFX1JFU1VMVF9TVUNDRVNTX0hfCiAKKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgpAQCAtMjYsMTMgKzI3LDE2IEBAIGNsYXNzIFJ0
Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzIGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50IHsKIAogICBi
b29sIElzQ29uZmlnRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8
UnRjRXZlbnQ+IENvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2
ZW50UHJvYmVSZXN1bHRTdWNjZXNzPiBDb3B5KCkgY29uc3Q7CiAKLSAgY29uc3QgaW50MzJfdCBp
ZF87Ci0gIGNvbnN0IGludDMyX3QgYml0cmF0ZV9icHNfOworICBpbnQzMl90IGlkKCkgY29uc3Qg
eyByZXR1cm4gaWRfOyB9CisgIGludDMyX3QgYml0cmF0ZV9icHMoKSBjb25zdCB7IHJldHVybiBi
aXRyYXRlX2Jwc187IH0KIAogIHByaXZhdGU6CiAgIFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNz
KGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzJiBvdGhlcik7CisKKyAgY29uc3QgaW50
MzJfdCBpZF87CisgIGNvbnN0IGludDMyX3QgYml0cmF0ZV9icHNfOwogfTsKIAogfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRjcF9w
YWNrZXRfaW5jb21pbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9p
bmNvbWluZy5jYwppbmRleCAxMTk5MzhjN2Y3MTg4NDgwOWQ1NDgyYjAwMDg0MTFjMTYwY2Q3NmUz
Li40NWE0MThmMWY2OWMyYmM3ODYwODZjZmRlOTkwOWZhNzFiZjQyODJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9pbmNvbWluZy5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9pbmNvbWluZy5jYwpAQCAtMzMsOCArMzMs
MTAgQEAgYm9vbCBSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZzo6SXNDb25maWdFdmVudCgpIGNv
bnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0
Y0V2ZW50UnRjcFBhY2tldEluY29taW5nOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6
V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nKCp0aGlz
KSk7CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmc+IFJ0Y0V2ZW50
UnRjcFBhY2tldEluY29taW5nOjpDb3B5KCkKKyAgICBjb25zdCB7CisgIHJldHVybiBhYnNsOjpX
cmFwVW5pcXVlPFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nPigKKyAgICAgIG5ldyBSdGNFdmVu
dFJ0Y3BQYWNrZXRJbmNvbWluZygqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9s
b2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9pbmNvbWlu
Zy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRjcF9wYWNrZXRfaW5jb21pbmcuaAppbmRl
eCA2ZDkwNDk1M2E0OGE4ODc2YzIzNzBlYmQ3ZTA4OTI3MjMzYzI2NzdlLi44Mzk0ZmUwMDVjZDU2
MzgyYWNmNjNhMTJlMzkwOTM4ZTA2ZGE0ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF9ydGNwX3BhY2tldF9pbmNvbWluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X3J0Y3BfcGFja2V0X2luY29taW5nLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTE9H
R0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfUlRDUF9QQUNLRVRfSU5DT01JTkdf
SF8KICNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZFTlRfUlRDUF9Q
QUNLRVRfSU5DT01JTkdfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCkBAIC0yOCwxMiArMjksMTQgQEAgY2xh
c3MgUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmcgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewog
CiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8
UnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmc+IENvcHkoKSBjb25zdDsKIAotICBydGM6OkJ1ZmZl
ciBwYWNrZXRfOworICBjb25zdCBydGM6OkJ1ZmZlciYgcGFja2V0KCkgY29uc3QgeyByZXR1cm4g
cGFja2V0XzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmcoY29u
c3QgUnRjRXZlbnRSdGNwUGFja2V0SW5jb21pbmcmIG90aGVyKTsKKworICBydGM6OkJ1ZmZlciBw
YWNrZXRfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L2V2ZW50cy9ydGNfZXZlbnRfcnRjcF9wYWNrZXRfb3V0Z29pbmcuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRz
L3J0Y19ldmVudF9ydGNwX3BhY2tldF9vdXRnb2luZy5jYwppbmRleCA0MDg1YWMwZjMxMzYyYWVm
OWQ1ZTU3ZjIxMjkwOTVkZTkzZTZhNzQ0Li5iNTgzZTU2MTRhMjA0MGNlOGVhNzI0Y2YwZWQ5NmE4
ZWIzZmUyNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tl
dF9vdXRnb2luZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9v
dXRnb2luZy5jYwpAQCAtMzMsOCArMzMsMTAgQEAgYm9vbCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRn
b2luZzo6SXNDb25maWdFdmVudCgpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdvaW5nOjpDb3B5KCkg
Y29uc3QgewotICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50
UnRjcFBhY2tldE91dGdvaW5nKCp0aGlzKSk7CitzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdGNw
UGFja2V0T3V0Z29pbmc+IFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdvaW5nOjpDb3B5KCkKKyAgICBj
b25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdv
aW5nPigKKyAgICAgIG5ldyBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZygqdGhpcykpOwogfQog
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19l
dmVudF9ydGNwX3BhY2tldF9vdXRnb2luZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRj
cF9wYWNrZXRfb3V0Z29pbmcuaAppbmRleCAzYWE5ZTcxOTlhZDYzM2MxZTc2NjFiNDkyNjEzYWJk
ZjYwMDhlOGRlLi5iNDdiODVkMGIzNjM1ZDE4YjA3MWU0NjVkNmI4NjRmZmVjMDkwOTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydGNwX3BhY2tldF9vdXRnb2luZy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0Y3BfcGFja2V0X291dGdvaW5nLmgKQEAgLTEx
LDYgKzExLDcgQEAKICNpZm5kZWYgTE9HR0lOR19SVENfRVZFTlRfTE9HX0VWRU5UU19SVENfRVZF
TlRfUlRDUF9QQUNLRVRfT1VUR09JTkdfSF8KICNkZWZpbmUgTE9HR0lOR19SVENfRVZFTlRfTE9H
X0VWRU5UU19SVENfRVZFTlRfUlRDUF9QQUNLRVRfT1VUR09JTkdfSF8KIAorI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CkBAIC0yOCwxMiArMjksMTQgQEAgY2xhc3MgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcgZmlu
YWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJy
aWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmc+IENvcHko
KSBjb25zdDsKIAotICBydGM6OkJ1ZmZlciBwYWNrZXRfOworICBjb25zdCBydGM6OkJ1ZmZlciYg
cGFja2V0KCkgY29uc3QgeyByZXR1cm4gcGFja2V0XzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZl
bnRSdGNwUGFja2V0T3V0Z29pbmcoY29uc3QgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcmIG90
aGVyKTsKKworICBydGM6OkJ1ZmZlciBwYWNrZXRfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9pbmNv
bWluZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuY2MK
aW5kZXggOGUxNWQwMjE3NTFiNjg1Y2Y5YTVjY2VhZDRiMjE3OGU4MTg3OTJhOS4uODk4YzBhYWY4
ZWU2NGYxNWIwZjRhYzZlODc5OTM0NmRkZGJjYjQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0
Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmNjCkBAIC0xMiwxOCArMTIsMjYgQEAKIAogI2lu
Y2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc6OlJ0
Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcoCiAgICAgY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBh
Y2tldCkKLSAgICA6IHBhY2tldF9sZW5ndGhfKHBhY2tldC5zaXplKCkpIHsKKyAgICA6IHBheWxv
YWRfbGVuZ3RoXyhwYWNrZXQucGF5bG9hZF9zaXplKCkpLAorICAgICAgaGVhZGVyX2xlbmd0aF8o
cGFja2V0LmhlYWRlcnNfc2l6ZSgpKSwKKyAgICAgIHBhZGRpbmdfbGVuZ3RoXyhwYWNrZXQucGFk
ZGluZ19zaXplKCkpIHsKICAgaGVhZGVyXy5Db3B5SGVhZGVyRnJvbShwYWNrZXQpOworICBSVENf
RENIRUNLX0VRKHBhY2tldC5zaXplKCksCisgICAgICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGhf
ICsgaGVhZGVyX2xlbmd0aF8gKyBwYWRkaW5nX2xlbmd0aF8pOwogfQogCiBSdGNFdmVudFJ0cFBh
Y2tldEluY29taW5nOjpSdGNFdmVudFJ0cFBhY2tldEluY29taW5nKAogICAgIGNvbnN0IFJ0Y0V2
ZW50UnRwUGFja2V0SW5jb21pbmcmIG90aGVyKQotICAgIDogUnRjRXZlbnQob3RoZXIudGltZXN0
YW1wX3VzXyksIHBhY2tldF9sZW5ndGhfKG90aGVyLnBhY2tldF9sZW5ndGhfKSB7CisgICAgOiBS
dGNFdmVudChvdGhlci50aW1lc3RhbXBfdXNfKSwKKyAgICAgIHBheWxvYWRfbGVuZ3RoXyhvdGhl
ci5wYXlsb2FkX2xlbmd0aF8pLAorICAgICAgaGVhZGVyX2xlbmd0aF8ob3RoZXIuaGVhZGVyX2xl
bmd0aF8pLAorICAgICAgcGFkZGluZ19sZW5ndGhfKG90aGVyLnBhZGRpbmdfbGVuZ3RoXykgewog
ICBoZWFkZXJfLkNvcHlIZWFkZXJGcm9tKG90aGVyLmhlYWRlcl8pOwogfQogCkBAIC0zNyw4ICs0
NSwxMCBAQCBib29sIFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc6OklzQ29uZmlnRXZlbnQoKSBj
b25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBS
dGNFdmVudFJ0cFBhY2tldEluY29taW5nOjpDb3B5KCkgY29uc3QgewotICByZXR1cm4gYWJzbDo6
V3JhcFVuaXF1ZTxSdGNFdmVudD4obmV3IFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmcoKnRoaXMp
KTsKK3N0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudFJ0cFBhY2tldEluY29taW5nPiBSdGNFdmVudFJ0
cFBhY2tldEluY29taW5nOjpDb3B5KCkKKyAgICBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFw
VW5pcXVlPFJ0Y0V2ZW50UnRwUGFja2V0SW5jb21pbmc+KAorICAgICAgbmV3IFJ0Y0V2ZW50UnRw
UGFja2V0SW5jb21pbmcoKnRoaXMpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5oCmluZGV4IDZiMTQx
YjZkNTc2MjJlNmQyOWIxOWE2MTc0OWZiNmNiMzM2MTM5YzUuLjFlMzU3MzUxYjNjZjI2ZGEwMzFj
OGYxYjk4Zjk1ZjIzODlmYWZmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50
X3J0cF9wYWNrZXRfaW5jb21pbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBf
cGFja2V0X2luY29taW5nLmgKQEAgLTI5LDEzICsyOSwyNCBAQCBjbGFzcyBSdGNFdmVudFJ0cFBh
Y2tldEluY29taW5nIGZpbmFsIDogcHVibGljIFJ0Y0V2ZW50IHsKIAogICBib29sIElzQ29uZmln
RXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IENv
cHkoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0
SW5jb21pbmc+IENvcHkoKSBjb25zdDsKIAotICBSdHBQYWNrZXQgaGVhZGVyXzsgICAgICAgICAg
ICAvLyBPbmx5IHRoZSBwYWNrZXQncyBoZWFkZXIgd2lsbCBiZSBzdG9yZWQgaGVyZS4KLSAgY29u
c3Qgc2l6ZV90IHBhY2tldF9sZW5ndGhfOyAgLy8gTGVuZ3RoIGJlZm9yZSBzdHJpcHBpbmcgYXdh
eSBhbGwgYnV0IGhlYWRlci4KKyAgc2l6ZV90IHBhY2tldF9sZW5ndGgoKSBjb25zdCB7CisgICAg
cmV0dXJuIHBheWxvYWRfbGVuZ3RoXyArIGhlYWRlcl9sZW5ndGhfICsgcGFkZGluZ19sZW5ndGhf
OworICB9CisKKyAgY29uc3QgUnRwUGFja2V0JiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiBoZWFk
ZXJfOyB9CisgIHNpemVfdCBwYXlsb2FkX2xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHBheWxvYWRf
bGVuZ3RoXzsgfQorICBzaXplX3QgaGVhZGVyX2xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGhlYWRl
cl9sZW5ndGhfOyB9CisgIHNpemVfdCBwYWRkaW5nX2xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHBh
ZGRpbmdfbGVuZ3RoXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWlu
Zyhjb25zdCBSdGNFdmVudFJ0cFBhY2tldEluY29taW5nJiBvdGhlcik7CisKKyAgUnRwUGFja2V0
IGhlYWRlcl87ICAgICAgICAgICAgLy8gT25seSB0aGUgcGFja2V0J3MgaGVhZGVyIHdpbGwgYmUg
c3RvcmVkIGhlcmUuCisgIGNvbnN0IHNpemVfdCBwYXlsb2FkX2xlbmd0aF87ICAvLyBNZWRpYSBw
YXlsb2FkLCBleGNsdWRpbmcgaGVhZGVyIGFuZCBwYWRkaW5nLgorICBjb25zdCBzaXplX3QgaGVh
ZGVyX2xlbmd0aF87ICAgLy8gUlRQIGhlYWRlci4KKyAgY29uc3Qgc2l6ZV90IHBhZGRpbmdfbGVu
Z3RoXzsgIC8vIFJUUCBwYWRkaW5nLgogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcnRwX3BhY2tldF9vdXRnb2luZy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9wYWNrZXRfb3V0Z29pbmcuY2MKaW5kZXggMTAz
NDQwYWQ2ZTk2NjFkYWRlZDBmZTFmZWFjMjVhMDIyZGYwZGEzZi4uMDUwNDc0ZWRkYTdjMDJjMGNm
ZjRmMzQ3MzBiMGFkNmE3ZjRkOWY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZl
bnRfcnRwX3BhY2tldF9vdXRnb2luZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9y
dHBfcGFja2V0X291dGdvaW5nLmNjCkBAIC0xMiwyMCArMTIsMjggQEAKIAogI2luY2x1ZGUgImFi
c2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9wYWNrZXRfdG9fc2VuZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKIAogUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZzo6UnRjRXZlbnRSdHBQ
YWNrZXRPdXRnb2luZygKICAgICBjb25zdCBSdHBQYWNrZXRUb1NlbmQmIHBhY2tldCwKICAgICBp
bnQgcHJvYmVfY2x1c3Rlcl9pZCkKLSAgICA6IHBhY2tldF9sZW5ndGhfKHBhY2tldC5zaXplKCkp
LCBwcm9iZV9jbHVzdGVyX2lkXyhwcm9iZV9jbHVzdGVyX2lkKSB7CisgICAgOiBwYXlsb2FkX2xl
bmd0aF8ocGFja2V0LnBheWxvYWRfc2l6ZSgpKSwKKyAgICAgIGhlYWRlcl9sZW5ndGhfKHBhY2tl
dC5oZWFkZXJzX3NpemUoKSksCisgICAgICBwYWRkaW5nX2xlbmd0aF8ocGFja2V0LnBhZGRpbmdf
c2l6ZSgpKSwKKyAgICAgIHByb2JlX2NsdXN0ZXJfaWRfKHByb2JlX2NsdXN0ZXJfaWQpIHsKICAg
aGVhZGVyXy5Db3B5SGVhZGVyRnJvbShwYWNrZXQpOworICBSVENfRENIRUNLX0VRKHBhY2tldC5z
aXplKCksCisgICAgICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGhfICsgaGVhZGVyX2xlbmd0aF8g
KyBwYWRkaW5nX2xlbmd0aF8pOwogfQogCiBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nOjpSdGNF
dmVudFJ0cFBhY2tldE91dGdvaW5nKAogICAgIGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29p
bmcmIG90aGVyKQogICAgIDogUnRjRXZlbnQob3RoZXIudGltZXN0YW1wX3VzXyksCi0gICAgICBw
YWNrZXRfbGVuZ3RoXyhvdGhlci5wYWNrZXRfbGVuZ3RoXyksCisgICAgICBwYXlsb2FkX2xlbmd0
aF8ob3RoZXIucGF5bG9hZF9sZW5ndGhfKSwKKyAgICAgIGhlYWRlcl9sZW5ndGhfKG90aGVyLmhl
YWRlcl9sZW5ndGhfKSwKKyAgICAgIHBhZGRpbmdfbGVuZ3RoXyhvdGhlci5wYWRkaW5nX2xlbmd0
aF8pLAogICAgICAgcHJvYmVfY2x1c3Rlcl9pZF8ob3RoZXIucHJvYmVfY2x1c3Rlcl9pZF8pIHsK
ICAgaGVhZGVyXy5Db3B5SGVhZGVyRnJvbShvdGhlci5oZWFkZXJfKTsKIH0KQEAgLTQwLDggKzQ4
LDEwIEBAIGJvb2wgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZzo6SXNDb25maWdFdmVudCgpIGNv
bnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnQ+IFJ0
Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmc6OkNvcHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpX
cmFwVW5pcXVlPFJ0Y0V2ZW50PihuZXcgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZygqdGhpcykp
Oworc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmc+IFJ0Y0V2ZW50UnRw
UGFja2V0T3V0Z29pbmc6OkNvcHkoKQorICAgIGNvbnN0IHsKKyAgcmV0dXJuIGFic2w6OldyYXBV
bmlxdWU8UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZz4oCisgICAgICBuZXcgUnRjRXZlbnRSdHBQ
YWNrZXRPdXRnb2luZygqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5n
L3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X291dGdvaW5nLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X291dGdvaW5nLmgKaW5kZXggMTcxYTIx
YzQyMGU0MTY3NmYzZjMzMDUwY2FjYzFjNmUyZDYxYzQ1NS4uZWJkZGMxNDIzMWYzYWYxOTNmMmQw
MjIzZDMzNzk2NmYwMTdjNTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRf
cnRwX3BhY2tldF9vdXRnb2luZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3J0cF9w
YWNrZXRfb3V0Z29pbmcuaApAQCAtMzAsMTQgKzMwLDI3IEBAIGNsYXNzIFJ0Y0V2ZW50UnRwUGFj
a2V0T3V0Z29pbmcgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJvb2wgSXNDb25maWdF
dmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudD4gQ29w
eSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRP
dXRnb2luZz4gQ29weSgpIGNvbnN0OwogCi0gIFJ0cFBhY2tldCBoZWFkZXJfOyAgICAgICAgICAg
IC8vIE9ubHkgdGhlIHBhY2tldCdzIGhlYWRlciB3aWxsIGJlIHN0b3JlZCBoZXJlLgotICBjb25z
dCBzaXplX3QgcGFja2V0X2xlbmd0aF87ICAvLyBMZW5ndGggYmVmb3JlIHN0cmlwcGluZyBhd2F5
IGFsbCBidXQgaGVhZGVyLgotICBjb25zdCBpbnQgcHJvYmVfY2x1c3Rlcl9pZF87CisgIHNpemVf
dCBwYWNrZXRfbGVuZ3RoKCkgY29uc3QgeworICAgIHJldHVybiBwYXlsb2FkX2xlbmd0aF8gKyBo
ZWFkZXJfbGVuZ3RoXyArIHBhZGRpbmdfbGVuZ3RoXzsKKyAgfQorCisgIGNvbnN0IFJ0cFBhY2tl
dCYgaGVhZGVyKCkgY29uc3QgeyByZXR1cm4gaGVhZGVyXzsgfQorICBzaXplX3QgcGF5bG9hZF9s
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBwYXlsb2FkX2xlbmd0aF87IH0KKyAgc2l6ZV90IGhlYWRl
cl9sZW5ndGgoKSBjb25zdCB7IHJldHVybiBoZWFkZXJfbGVuZ3RoXzsgfQorICBzaXplX3QgcGFk
ZGluZ19sZW5ndGgoKSBjb25zdCB7IHJldHVybiBwYWRkaW5nX2xlbmd0aF87IH0KKyAgaW50IHBy
b2JlX2NsdXN0ZXJfaWQoKSBjb25zdCB7IHJldHVybiBwcm9iZV9jbHVzdGVyX2lkXzsgfQogCiAg
cHJpdmF0ZToKICAgUnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZyhjb25zdCBSdGNFdmVudFJ0cFBh
Y2tldE91dGdvaW5nJiBvdGhlcik7CisKKyAgUnRwUGFja2V0IGhlYWRlcl87ICAgICAgICAgICAg
Ly8gT25seSB0aGUgcGFja2V0J3MgaGVhZGVyIHdpbGwgYmUgc3RvcmVkIGhlcmUuCisgIGNvbnN0
IHNpemVfdCBwYXlsb2FkX2xlbmd0aF87ICAvLyBNZWRpYSBwYXlsb2FkLCBleGNsdWRpbmcgaGVh
ZGVyIGFuZCBwYWRkaW5nLgorICBjb25zdCBzaXplX3QgaGVhZGVyX2xlbmd0aF87ICAgLy8gUlRQ
IGhlYWRlci4KKyAgY29uc3Qgc2l6ZV90IHBhZGRpbmdfbGVuZ3RoXzsgIC8vIFJUUCBwYWRkaW5n
LgorICAvLyBUT0RPKGVsYWRhbG9uKTogRGVsZXRlIHxwcm9iZV9jbHVzdGVyX2lkX3wgYWxvbmcg
d2l0aCBsZWdhY3kgZW5jb2RpbmcuCisgIGNvbnN0IGludCBwcm9iZV9jbHVzdGVyX2lkXzsKIH07
CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5jYwppbmRleCA3ZjRkZDliN2I4MDdj
NGIxMmZkMzg5YmQ0MjZkNGZkZWI2YzU4NjQwLi41ZGVjOTdiZjgzNzcyZTkxMmIxOTg2YjAyMjIx
YzU1ZDllODhlMmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF92aWRlb19y
ZWNlaXZlX3N0cmVhbV9jb25maWcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlk
ZW9fcmVjZWl2ZV9zdHJlYW1fY29uZmlnLmNjCkBAIC0xMywxMiArMTMsMTUgQEAKICNpbmNsdWRl
IDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBSdGNFdmVudFZpZGVv
UmVjZWl2ZVN0cmVhbUNvbmZpZzo6UnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcoCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWcpCi0gICAgOiBj
b25maWdfKHN0ZDo6bW92ZShjb25maWcpKSB7fQorICAgIDogY29uZmlnXyhzdGQ6Om1vdmUoY29u
ZmlnKSkgeworICBSVENfRENIRUNLKGNvbmZpZ18pOworfQogCiBSdGNFdmVudFZpZGVvUmVjZWl2
ZVN0cmVhbUNvbmZpZzo6UnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcoCiAgICAgY29u
c3QgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcmIG90aGVyKQpAQCAtMzUsOCArMzgs
OSBAQCBib29sIFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnOjpJc0NvbmZpZ0V2ZW50
KCkgY29uc3QgewogICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
PiBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZzo6Q29weSgpIGNvbnN0IHsKLSAgcmV0
dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+KAorc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50
VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnPgorUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25m
aWc6OkNvcHkoKSBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2ZW50Vmlk
ZW9SZWNlaXZlU3RyZWFtQ29uZmlnPigKICAgICAgIG5ldyBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0
cmVhbUNvbmZpZygqdGhpcykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19l
dmVudF92aWRlb19yZWNlaXZlX3N0cmVhbV9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2
ZW50X3ZpZGVvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5oCmluZGV4IGM2MjYzYzNmZGJlMjJjN2Nj
YjY5MWQ3YmU4ODI1NTAyMzVmZjQ0ODIuLjgwMWJhN2RkZDQ0ZDgxNDY4ZTQxNTRmNjFjMjcxYTYy
NWUxMmJhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3JlY2Vp
dmVfc3RyZWFtX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3Jl
Y2VpdmVfc3RyZWFtX2NvbmZpZy5oCkBAIC0yOCwxMyArMjgsMTUgQEAgY2xhc3MgUnRjRXZlbnRW
aWRlb1JlY2VpdmVTdHJlYW1Db25maWcgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQgewogCiAgIGJv
b2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZl
bnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWc+IENvcHkoKSBjb25zdDsKIAotICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Y29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZ187CisgIGNvbnN0
IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnJiBjb25maWcoKSBjb25zdCB7IHJldHVybiAqY29uZmlnXzsg
fQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcoCiAgICAg
ICBjb25zdCBSdGNFdmVudFZpZGVvUmVjZWl2ZVN0cmVhbUNvbmZpZyYgb3RoZXIpOworCisgIGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmlnXzsK
IH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZy5jYwppbmRleCBiNGI3OGE4YTUyYTc1YzEz
Y2NlYzZmNzE0YTEzZTMwNTM1NDY1YmJkLi5kYzRiMTY3NDM4Y2JhNzkzZTFhZWM4ODhhZGMxNjQ3
MmNiZjg5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF92aWRlb19zZW5k
X3N0cmVhbV9jb25maWcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fc2Vu
ZF9zdHJlYW1fY29uZmlnLmNjCkBAIC0zNSw4ICszNSwxMCBAQCBib29sIFJ0Y0V2ZW50VmlkZW9T
ZW5kU3RyZWFtQ29uZmlnOjpJc0NvbmZpZ0V2ZW50KCkgY29uc3QgewogICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50PiBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNv
bmZpZzo6Q29weSgpIGNvbnN0IHsKLSAgcmV0dXJuIGFic2w6OldyYXBVbmlxdWU8UnRjRXZlbnQ+
KG5ldyBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZygqdGhpcykpOworc3RkOjp1bmlxdWVf
cHRyPFJ0Y0V2ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnPgorUnRjRXZlbnRWaWRlb1NlbmRTdHJl
YW1Db25maWc6OkNvcHkoKSBjb25zdCB7CisgIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlPFJ0Y0V2
ZW50VmlkZW9TZW5kU3RyZWFtQ29uZmlnPigKKyAgICAgIG5ldyBSdGNFdmVudFZpZGVvU2VuZFN0
cmVhbUNvbmZpZygqdGhpcykpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0
Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF92aWRlb19zZW5kX3N0cmVhbV9jb25maWcuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZy5oCmluZGV4
IDM0NzJmODg1NWJlNjY5ZGQxM2NhNjhlYjY1MWUxODg1M2E1M2ViMGYuLmZlMjc0YzhjM2E1NWZk
MzUwZjgzYWQ1MDBjZWE0ODIwNjJiMjk2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMvcnRj
X2V2ZW50X3ZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZy5oCkBAIC0yOCwxMiArMjgsMTQgQEAgY2xh
c3MgUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWcgZmluYWwgOiBwdWJsaWMgUnRjRXZlbnQg
ewogCiAgIGJvb2wgSXNDb25maWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIHN0ZDo6dW5p
cXVlX3B0cjxSdGNFdmVudD4gQ29weSgpIGNvbnN0IG92ZXJyaWRlOworICBzdGQ6OnVuaXF1ZV9w
dHI8UnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWc+IENvcHkoKSBjb25zdDsKIAotICBjb25z
dCBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZ187Cisg
IGNvbnN0IHJ0Y2xvZzo6U3RyZWFtQ29uZmlnJiBjb25maWcoKSBjb25zdCB7IHJldHVybiAqY29u
ZmlnXzsgfQogCiAgcHJpdmF0ZToKICAgUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWcoY29u
c3QgUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWcmIG90aGVyKTsKKworICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Y29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZ187CiB9OwogCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmNjCmluZGV4IDczYTU5OGQ2YjFlMzJhOGM0MThhMjMz
MjgxNjVkZDhlMmIxMmM4ZWUuLmI0OGZlOTIzNGZkNzRmYzcyYTg5MTFmZjRiYWFjNTVhNzE2MDRi
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNf
ZXZlbnRfbG9nLmNjCkBAIC0xMCw4ICsxMCwxNCBAQAogCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNf
ZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKIAorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9y
eS5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAorc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9n
PiBSdGNFdmVudExvZzo6Q3JlYXRlTnVsbCgpIHsKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVl
PFJ0Y0V2ZW50TG9nTnVsbEltcGw+KCk7Cit9CisKIGJvb2wgUnRjRXZlbnRMb2dOdWxsSW1wbDo6
U3RhcnRMb2dnaW5nKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZ091dHB1dD4gb3V0
cHV0LAogICAgIGludDY0X3Qgb3V0cHV0X3BlcmlvZF9tcykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9n
L3J0Y19ldmVudF9sb2cuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgKaW5kZXggMGM3MTQwNjkw
MjQxZDgwODc0MGExOTQwZTc0OTE4OWU5ZTY0YzVjMi4uN2Q5MDBjMDA2ODZmODYwNzI4YzkyMDIw
MDRhZjgxYmZhMWRmODhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oCkBAIC0xMSw5ICsxMSw4IEBACiAjaWZuZGVmIExPR0dJ
TkdfUlRDX0VWRU5UX0xPR19SVENfRVZFTlRfTE9HX0hfCiAjZGVmaW5lIExPR0dJTkdfUlRDX0VW
RU5UX0xPR19SVENfRVZFTlRfTE9HX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRl
IDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNs
dWRlICJhcGkvcnRjZXZlbnRsb2dvdXRwdXQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgpAQCAtMjksMTAgKzI4LDkgQEAgY2xhc3MgUnRjRXZl
bnRMb2cgewogICBlbnVtIDogc2l6ZV90IHsga1VubGltaXRlZE91dHB1dCA9IDAgfTsKICAgZW51
bSA6IGludDY0X3QgeyBrSW1tZWRpYXRlT3V0cHV0ID0gMCB9OwogCi0gIC8vIFRPRE8oZWxhZGFs
b24pOiBUd28gc3RhZ2VzIGFyZSB1cGNvbWluZy4KLSAgLy8gMS4gRXh0ZW5kIHRoaXMgdG8gYWN0
dWFsbHkgc3VwcG9ydCB0aGUgbmV3IGVuY29kaW5nLgotICAvLyAyLiBHZXQgcmlkIG9mIHRoZSBs
ZWdhY3kgZW5jb2RpbmcsIGFsbG93aW5nIHVzIHRvIGdldCByaWQgb2YgdGhpcyBlbnVtLgotICBl
bnVtIGNsYXNzIEVuY29kaW5nVHlwZSB7IExlZ2FjeSB9OworICAvLyBUT0RPKGVsYWRhbG9uKTog
IEdldCByaWQgb2YgdGhlIGxlZ2FjeSBlbmNvZGluZyBhbmQgdGhpcyBlbnVtIG9uY2UgYWxsCisg
IC8vIGNsaWVudHMgaGF2ZSBtaWdyYXRlZCB0byB0aGUgbmV3IGZvcm1hdC4KKyAgZW51bSBjbGFz
cyBFbmNvZGluZ1R5cGUgeyBMZWdhY3ksIE5ld0Zvcm1hdCB9OwogCiAgIHZpcnR1YWwgflJ0Y0V2
ZW50TG9nKCkge30KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnByb3RvIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL3J0Y19ldmVudF9sb2cyLnByb3RvCmluZGV4IDRjYWM0NTUzY2VkNDM0N2JhM2EyN2Qz
YmIwOGFmNDE1MmQzNzE3MjUuLjk5NTg1M2I1NjVjYzFlMThkMzBlZDhiYWNkMTgwYWY1ZDc1YWQ1
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMi5wcm90bworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
cnRjX2V2ZW50X2xvZzIucHJvdG8KQEAgLTEwLDIwICsxMCwxNyBAQCBwYWNrYWdlIHdlYnJ0Yy5y
dGNsb2cyOwogLy8gc2luZ2xlIEV2ZW50U3RyZWFtIG9iamVjdCBjb250YWluaW5nIHRoZSBzYW1l
IGV2ZW50cy4gSGVuY2UsIGl0IGlzIG5vdAogLy8gbmVjZXNzYXJ5IHRvIHdhaXQgZm9yIHRoZSBl
bnRpcmUgbG9nIHRvIGJlIGNvbXBsZXRlIGJlZm9yZSBiZWdpbm5pbmcgdG8KIC8vIHdyaXRlIGl0
IHRvIGEgZmlsZS4KKy8vIE5vdGU6IEZvciBhbGwgWF9kZWx0YXMgZmllbGRzLCB3ZSByZWx5IG9u
IHRoZSBkZWZhdWx0IHZhbHVlIGJlaW5nIGFuCisvLyBlbXB0eSBzdHJpbmcuCiBtZXNzYWdlIEV2
ZW50U3RyZWFtIHsKICAgLy8gRGVwcmVjYXRlZCAtIE1haW50YWluZWQgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCB0aGUgb2xkIGV2ZW50IGxvZy4KLSAgLy8gVE9ETyh0ZXJlbGl1cyk6IE1heWJlIHdl
IGNhbiByZW1vdmUgdGhpcyBhbmQgaW5zdGVhZCBjaGVjayB0aGUgc3RyZWFtIGZvcgotICAvLyBw
cmVzZW5jZSBvZiBhIHZlcnNpb24gZmllbGQuIFRoYXQgcmVxdWlyZXMgYSBjdXN0b20gcHJvdG9i
dWYgcGFyc2VyLCBidXQgd2UKLSAgLy8gaGF2ZSB0aGF0IGFscmVhZHkgYW55d2F5LgogICByZXBl
YXRlZCBFdmVudCBzdHJlYW0gPSAxIFtkZXByZWNhdGVkID0gdHJ1ZV07Ci0gIC8vIHJlcXVpcmVk
IC0gVGhlIHZlcnNpb24gbnVtYmVyIG11c3QgYmUgMiBmb3IgdGhpcyB2ZXJzaW9uIG9mIHRoZSBl
dmVudCBsb2cuCi0gIG9wdGlvbmFsIHVpbnQzMiB2ZXJzaW9uID0gMjsKLSAgcmVwZWF0ZWQgSW5j
b21pbmdSdHBQYWNrZXRzIGluY29taW5nX3J0cF9wYWNrZXRzID0gMzsKLSAgcmVwZWF0ZWQgT3V0
Z29pbmdSdHBQYWNrZXRzIG91dGdvaW5nX3J0cF9wYWNrZXRzID0gNDsKLSAgcmVwZWF0ZWQgSW5j
b21pbmdSdGNwUGFja2V0cyBpbmNvbWluZ19ydGNwX3BhY2tldHMgPSA1OwotICByZXBlYXRlZCBP
dXRnb2luZ1J0Y3BQYWNrZXRzIG91dGdvaW5nX3J0Y3BfcGFja2V0cyA9IDY7Ci0gIHJlcGVhdGVk
IEF1ZGlvUGxheW91dEV2ZW50cyBhdWRpb19wbGF5b3V0X2V2ZW50cyA9IDc7Ci0gIC8vIFRoZSBm
aWVsZCB0YWdzIDgtMTUgYXJlIHJlc2VydmVkIGZvciB0aGUgbW9zdCBjb21tb24gZXZlbnRzCisg
IHJlcGVhdGVkIEluY29taW5nUnRwUGFja2V0cyBpbmNvbWluZ19ydHBfcGFja2V0cyA9IDI7Cisg
IHJlcGVhdGVkIE91dGdvaW5nUnRwUGFja2V0cyBvdXRnb2luZ19ydHBfcGFja2V0cyA9IDM7Cisg
IHJlcGVhdGVkIEluY29taW5nUnRjcFBhY2tldHMgaW5jb21pbmdfcnRjcF9wYWNrZXRzID0gNDsK
KyAgcmVwZWF0ZWQgT3V0Z29pbmdSdGNwUGFja2V0cyBvdXRnb2luZ19ydGNwX3BhY2tldHMgPSA1
OworICByZXBlYXRlZCBBdWRpb1BsYXlvdXRFdmVudHMgYXVkaW9fcGxheW91dF9ldmVudHMgPSA2
OworICAvLyBUaGUgZmllbGQgdGFncyA3LTE1IGFyZSByZXNlcnZlZCBmb3IgdGhlIG1vc3QgY29t
bW9uIGV2ZW50cy4KICAgcmVwZWF0ZWQgQmVnaW5Mb2dFdmVudCBiZWdpbl9sb2dfZXZlbnRzID0g
MTY7CiAgIHJlcGVhdGVkIEVuZExvZ0V2ZW50IGVuZF9sb2dfZXZlbnRzID0gMTc7CiAgIHJlcGVh
dGVkIExvc3NCYXNlZEJ3ZVVwZGF0ZXMgbG9zc19iYXNlZF9id2VfdXBkYXRlcyA9IDE4OwpAQCAt
MzIsNiArMjksOSBAQCBtZXNzYWdlIEV2ZW50U3RyZWFtIHsKICAgcmVwZWF0ZWQgQndlUHJvYmVD
bHVzdGVyIHByb2JlX2NsdXN0ZXJzID0gMjE7CiAgIHJlcGVhdGVkIEJ3ZVByb2JlUmVzdWx0U3Vj
Y2VzcyBwcm9iZV9zdWNjZXNzID0gMjI7CiAgIHJlcGVhdGVkIEJ3ZVByb2JlUmVzdWx0RmFpbHVy
ZSBwcm9iZV9mYWlsdXJlID0gMjM7CisgIHJlcGVhdGVkIEFsclN0YXRlIGFscl9zdGF0ZXMgPSAy
NDsKKyAgcmVwZWF0ZWQgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyBpY2VfY2FuZGlkYXRlX2NvbmZp
Z3MgPSAyNTsKKyAgcmVwZWF0ZWQgSWNlQ2FuZGlkYXRlUGFpckV2ZW50IGljZV9jYW5kaWRhdGVf
ZXZlbnRzID0gMjY7CiAKICAgcmVwZWF0ZWQgQXVkaW9SZWN2U3RyZWFtQ29uZmlnIGF1ZGlvX3Jl
Y3Zfc3RyZWFtX2NvbmZpZ3MgPSAxMDE7CiAgIHJlcGVhdGVkIEF1ZGlvU2VuZFN0cmVhbUNvbmZp
ZyBhdWRpb19zZW5kX3N0cmVhbV9jb25maWdzID0gMTAyOwpAQCAtNDUsMTM2ICs0NSwyMDYgQEAg
bWVzc2FnZSBFdmVudCB7CiB9CiAKIG1lc3NhZ2UgSW5jb21pbmdSdHBQYWNrZXRzIHsKKyAgLy8g
cmVxdWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIAotICAvLyBSVFAg
bWFya2VyIGJpdCwgdXNlZCB0byBsYWJlbCBib3VuZGFyaWVzIHdpdGhpbiBlLmcuIHZpZGVvIGZy
YW1lcy4KKyAgLy8gcmVxdWlyZWQgLSBSVFAgbWFya2VyIGJpdCwgdXNlZCB0byBsYWJlbCBib3Vu
ZGFyaWVzIGJldHdlZW4gdmlkZW8gZnJhbWVzLgogICBvcHRpb25hbCBib29sIG1hcmtlciA9IDI7
CiAKLSAgLy8gUlRQIHBheWxvYWQgdHlwZS4KKyAgLy8gcmVxdWlyZWQgLSBSVFAgcGF5bG9hZCB0
eXBlLgogICBvcHRpb25hbCB1aW50MzIgcGF5bG9hZF90eXBlID0gMzsKIAotICAvLyBSVFAgc2Vx
dWVuY2UgbnVtYmVyLgorICAvLyByZXF1aXJlZCAtIFJUUCBzZXF1ZW5jZSBudW1iZXIuCiAgIG9w
dGlvbmFsIHVpbnQzMiBzZXF1ZW5jZV9udW1iZXIgPSA0OwogCi0gIC8vIFJUUCBtb25vdG9uaWMg
Y2xvY2sgdGltZXN0YW1wIChub3QgYWN0dWFsIHRpbWUpLgorICAvLyByZXF1aXJlZCAtIFJUUCBt
b25vdG9uaWMgY2xvY2sgdGltZXN0YW1wIChub3QgYWN0dWFsIHRpbWUpLgogICBvcHRpb25hbCBm
aXhlZDMyIHJ0cF90aW1lc3RhbXAgPSA1OwogCi0gIC8vIFN5bmNocm9uaXphdGlvbiBzb3VyY2Ug
b2YgdGhpcyBwYWNrZXQncyBSVFAgc3RyZWFtLgorICAvLyByZXF1aXJlZCAtIFN5bmNocm9uaXph
dGlvbiBzb3VyY2Ugb2YgdGhpcyBwYWNrZXQncyBSVFAgc3RyZWFtLgogICBvcHRpb25hbCBmaXhl
ZDMyIHNzcmMgPSA2OwogCiAgIC8vIFRPRE8odGVyZWxpdXMvZGlub3IpOiBBZGQgQ1NSQ3MuIEZp
ZWxkIG51bWJlciA3IHJlc2VydmVkIGZvciB0aGlzIHB1cnBvc2UuCiAKLSAgLy8gcmVxdWlyZWQg
LSBUaGUgc2l6ZSBvZiB0aGUgcGFja2V0IGluY2x1ZGluZyBib3RoIHBheWxvYWQgYW5kIGhlYWRl
ci4KLSAgb3B0aW9uYWwgdWludDMyIHBhY2tldF9zaXplID0gODsKKyAgLy8gcmVxdWlyZWQgLSBU
aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBtZWRpYSBwYXlsb2FkLCBub3QgaW5jbHVkaW5nCisg
IC8vIFJUUCBoZWFkZXIgb3IgcGFkZGluZy4gVGhlIHBhY2tldCBzaXplIGlzIHRoZSBzdW0gb2Yg
cGF5bG9hZCwgaGVhZGVyIGFuZAorICAvLyBwYWRkaW5nLgorICBvcHRpb25hbCB1aW50MzIgcGF5
bG9hZF9zaXplID0gODsKKworICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIChpbiBieXRlcykgb2Yg
dGhlIFJUUCBoZWFkZXIuCisgIG9wdGlvbmFsIHVpbnQzMiBoZWFkZXJfc2l6ZSA9IDk7CisKKyAg
Ly8gcmVxdWlyZWQgLSBUaGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBwYWRkaW5nLgorICBvcHRp
b25hbCB1aW50MzIgcGFkZGluZ19zaXplID0gMTA7CisKKyAgLy8gb3B0aW9uYWwgLSByZXF1aXJl
ZCBpZiB0aGUgYmF0Y2ggY29udGFpbnMgZGVsdGEgZW5jb2RlZCBldmVudHMuCisgIG9wdGlvbmFs
IHVpbnQzMiBudW1iZXJfb2ZfZGVsdGFzID0gMTE7CisKKyAgLy8gRmllbGQgbnVtYmVycyAxMi0x
NCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4KIAogICAvLyBPcHRpb25hbCBoZWFkZXIgZXh0ZW5z
aW9ucy4KLSAgb3B0aW9uYWwgaW50MzIgdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0ID0gOTsKLSAg
b3B0aW9uYWwgdWludDMyIGFic29sdXRlX3NlbmRfdGltZSA9IDEwOwotICBvcHRpb25hbCB1aW50
MzIgdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciA9IDExOwotICBvcHRpb25hbCB1aW50MzIgYXVk
aW9fbGV2ZWwgPSAxMjsKLSAgLy8gVE9ETyh0ZXJlbGl1cyk6IEFkZCBoZWFkZXIgZXh0ZW5zaW9u
cyBsaWtlIHZpZGVvIHJvdGF0aW9uLCBwbGF5b3V0IGRlbGF5PwotCi0gIC8vIERlbHRhIGVuY29k
aW5ncwotICBvcHRpb25hbCBieXRlcyB0aW1lc3RhbXBfZGVsdGFzX21zID0gMTAxOworICBvcHRp
b25hbCB1aW50MzIgdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlciA9IDE1OworICBvcHRpb25hbCBp
bnQzMiB0cmFuc21pc3Npb25fdGltZV9vZmZzZXQgPSAxNjsKKyAgb3B0aW9uYWwgdWludDMyIGFi
c29sdXRlX3NlbmRfdGltZSA9IDE3OworICBvcHRpb25hbCB1aW50MzIgdmlkZW9fcm90YXRpb24g
PSAxODsKKyAgLy8gfGF1ZGlvX2xldmVsfCBhbmQgfHZvaWNlX2FjdGl2aXR5fCBhcmUgYWx3YXlz
IHVzZWQgaW4gY29uanVuY3Rpb24uCisgIG9wdGlvbmFsIHVpbnQzMiBhdWRpb19sZXZlbCA9IDE5
OworICBvcHRpb25hbCBib29sIHZvaWNlX2FjdGl2aXR5ID0gMjA7CisgIC8vIFRPRE8odGVyZWxp
dXMpOiBBZGQgb3RoZXIgaGVhZGVyIGV4dGVuc2lvbnMgbGlrZSBwbGF5b3V0IGRlbGF5PworCisg
IC8vIERlbHRhIGVuY29kaW5ncy4KKyAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1wX21zX2RlbHRh
cyA9IDEwMTsKICAgb3B0aW9uYWwgYnl0ZXMgbWFya2VyX2RlbHRhcyA9IDEwMjsKICAgb3B0aW9u
YWwgYnl0ZXMgcGF5bG9hZF90eXBlX2RlbHRhcyA9IDEwMzsKICAgb3B0aW9uYWwgYnl0ZXMgc2Vx
dWVuY2VfbnVtYmVyX2RlbHRhcyA9IDEwNDsKICAgb3B0aW9uYWwgYnl0ZXMgcnRwX3RpbWVzdGFt
cF9kZWx0YXMgPSAxMDU7CisgIC8vIEZpZWxkIG51bWJlciAxMDcgcmVzZXJ2ZWQgZm9yIENTUkMu
CiAgIG9wdGlvbmFsIGJ5dGVzIHNzcmNfZGVsdGFzID0gMTA2OwotICBvcHRpb25hbCBieXRlcyBw
YWNrZXRfc2l6ZV9kZWx0YXMgPSAxMDc7Ci0gIG9wdGlvbmFsIGJ5dGVzIHRyYW5zbWlzc2lvbl90
aW1lX29mZnNldF9kZWx0YXMgPSAxMDg7Ci0gIG9wdGlvbmFsIGJ5dGVzIGFic29sdXRlX3NlbmRf
dGltZV9kZWx0YXMgPSAxMDk7Ci0gIG9wdGlvbmFsIGJ5dGVzIHRyYW5zcG9ydF9zZXF1ZW5jZV9u
dW1iZXJfZGVsdGFzID0gMTEwOwotICBvcHRpb25hbCBieXRlcyBhdWRpb19sZXZlbF9kZWx0YXMg
PSAxMTE7CisgIG9wdGlvbmFsIGJ5dGVzIHBheWxvYWRfc2l6ZV9kZWx0YXMgPSAxMDg7CisgIG9w
dGlvbmFsIGJ5dGVzIGhlYWRlcl9zaXplX2RlbHRhcyA9IDEwOTsKKyAgb3B0aW9uYWwgYnl0ZXMg
cGFkZGluZ19zaXplX2RlbHRhcyA9IDExMDsKKyAgLy8gRmllbGQgbnVtYmVyIDExMS0xMTQgcmVz
ZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuCisgIG9wdGlvbmFsIGJ5dGVzIHRyYW5zcG9ydF9zZXF1ZW5j
ZV9udW1iZXJfZGVsdGFzID0gMTE1OworICBvcHRpb25hbCBieXRlcyB0cmFuc21pc3Npb25fdGlt
ZV9vZmZzZXRfZGVsdGFzID0gMTE2OworICBvcHRpb25hbCBieXRlcyBhYnNvbHV0ZV9zZW5kX3Rp
bWVfZGVsdGFzID0gMTE3OworICBvcHRpb25hbCBieXRlcyB2aWRlb19yb3RhdGlvbl9kZWx0YXMg
PSAxMTg7CisgIC8vIHxhdWRpb19sZXZlbHwgYW5kIHx2b2ljZV9hY3Rpdml0eXwgYXJlIGFsd2F5
cyB1c2VkIGluIGNvbmp1bmN0aW9uLgorICBvcHRpb25hbCBieXRlcyBhdWRpb19sZXZlbF9kZWx0
YXMgPSAxMTk7CisgIG9wdGlvbmFsIGJ5dGVzIHZvaWNlX2FjdGl2aXR5X2RlbHRhcyA9IDEyMDsK
IH0KIAogbWVzc2FnZSBPdXRnb2luZ1J0cFBhY2tldHMgeworICAvLyByZXF1aXJlZAogICBvcHRp
b25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCi0gIC8vIFJUUCBtYXJrZXIgYml0LCB1c2Vk
IHRvIGxhYmVsIGJvdW5kYXJpZXMgd2l0aGluIGUuZy4gdmlkZW8gZnJhbWVzLgorICAvLyByZXF1
aXJlZCAtIFJUUCBtYXJrZXIgYml0LCB1c2VkIHRvIGxhYmVsIGJvdW5kYXJpZXMgYmV0d2VlbiB2
aWRlbyBmcmFtZXMuCiAgIG9wdGlvbmFsIGJvb2wgbWFya2VyID0gMjsKIAorICAvLyByZXF1aXJl
ZCAtIFJUUCBwYXlsb2FkIHR5cGUuCiAgIG9wdGlvbmFsIHVpbnQzMiBwYXlsb2FkX3R5cGUgPSAz
OwogCi0gIC8vIFJUUCBzZXF1ZW5jZSBudW1iZXIuCisgIC8vIHJlcXVpcmVkIC0gUlRQIHNlcXVl
bmNlIG51bWJlci4KICAgb3B0aW9uYWwgdWludDMyIHNlcXVlbmNlX251bWJlciA9IDQ7CiAKLSAg
Ly8gUlRQIG1vbm90b25pYyBjbG9jayB0aW1lc3RhbXAgKG5vdCBhY3R1YWwgdGltZSkuCisgIC8v
IHJlcXVpcmVkIC0gUlRQIG1vbm90b25pYyBjbG9jayB0aW1lc3RhbXAgKG5vdCBhY3R1YWwgdGlt
ZSkuCiAgIG9wdGlvbmFsIGZpeGVkMzIgcnRwX3RpbWVzdGFtcCA9IDU7CiAKLSAgLy8gU3luY2hy
b25pemF0aW9uIHNvdXJjZSBvZiB0aGlzIHBhY2tldCdzIFJUUCBzdHJlYW0uCisgIC8vIHJlcXVp
cmVkIC0gU3luY2hyb25pemF0aW9uIHNvdXJjZSBvZiB0aGlzIHBhY2tldCdzIFJUUCBzdHJlYW0u
CiAgIG9wdGlvbmFsIGZpeGVkMzIgc3NyYyA9IDY7CiAKICAgLy8gVE9ETyh0ZXJlbGl1cy9kaW5v
cik6IEFkZCBDU1JDcy4gRmllbGQgbnVtYmVyIDcgcmVzZXJ2ZWQgZm9yIHRoaXMgcHVycG9zZS4K
IAotICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIG9mIHRoZSBwYWNrZXQgaW5jbHVkaW5nIGJvdGgg
cGF5bG9hZCBhbmQgaGVhZGVyLgotICBvcHRpb25hbCB1aW50MzIgcGFja2V0X3NpemUgPSA4Owor
ICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIG1lZGlhIHBheWxvYWQs
IG5vdCBpbmNsdWRpbmcKKyAgLy8gUlRQIGhlYWRlciBvciBwYWRkaW5nLiBUaGUgcGFja2V0IHNp
emUgaXMgdGhlIHN1bSBvZiBwYXlsb2FkLCBoZWFkZXIgYW5kCisgIC8vIHBhZGRpbmcuCisgIG9w
dGlvbmFsIHVpbnQzMiBwYXlsb2FkX3NpemUgPSA4OworCisgIC8vIHJlcXVpcmVkIC0gVGhlIHNp
emUgKGluIGJ5dGVzKSBvZiB0aGUgUlRQIGhlYWRlci4KKyAgb3B0aW9uYWwgdWludDMyIGhlYWRl
cl9zaXplID0gOTsKKworICAvLyByZXF1aXJlZCAtIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhl
IHBhZGRpbmcuCisgIG9wdGlvbmFsIHVpbnQzMiBwYWRkaW5nX3NpemUgPSAxMDsKKworICAvLyBv
cHRpb25hbCAtIHJlcXVpcmVkIGlmIHRoZSBiYXRjaCBjb250YWlucyBkZWx0YSBlbmNvZGVkIGV2
ZW50cy4KKyAgb3B0aW9uYWwgdWludDMyIG51bWJlcl9vZl9kZWx0YXMgPSAxMTsKKworICAvLyBG
aWVsZCBudW1iZXJzIDEyLTE0IHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLgogCiAgIC8vIE9wdGlv
bmFsIGhlYWRlciBleHRlbnNpb25zLgotICBvcHRpb25hbCBpbnQzMiB0cmFuc21pc3Npb25fdGlt
ZV9vZmZzZXQgPSA5OwotICBvcHRpb25hbCB1aW50MzIgYWJzb2x1dGVfc2VuZF90aW1lID0gMTA7
Ci0gIG9wdGlvbmFsIHVpbnQzMiB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyID0gMTE7Ci0gIG9w
dGlvbmFsIHVpbnQzMiBhdWRpb19sZXZlbCA9IDEyOwotICAvLyBUT0RPKHRlcmVsaXVzKTogQWRk
IGhlYWRlciBleHRlbnNpb25zIGxpa2UgdmlkZW8gcm90YXRpb24sIHBsYXlvdXQgZGVsYXk/Ci0K
LSAgLy8gRGVsdGEgZW5jb2RpbmdzCi0gIG9wdGlvbmFsIGJ5dGVzIHRpbWVzdGFtcF9kZWx0YXNf
bXMgPSAxMDE7CisgIG9wdGlvbmFsIHVpbnQzMiB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyID0g
MTU7CisgIG9wdGlvbmFsIGludDMyIHRyYW5zbWlzc2lvbl90aW1lX29mZnNldCA9IDE2OworICBv
cHRpb25hbCB1aW50MzIgYWJzb2x1dGVfc2VuZF90aW1lID0gMTc7CisgIG9wdGlvbmFsIHVpbnQz
MiB2aWRlb19yb3RhdGlvbiA9IDE4OworICAvLyB8YXVkaW9fbGV2ZWx8IGFuZCB8dm9pY2VfYWN0
aXZpdHl8IGFyZSBhbHdheXMgdXNlZCBpbiBjb25qdW5jdGlvbi4KKyAgb3B0aW9uYWwgdWludDMy
IGF1ZGlvX2xldmVsID0gMTk7CisgIG9wdGlvbmFsIGJvb2wgdm9pY2VfYWN0aXZpdHkgPSAyMDsK
KyAgLy8gVE9ETyh0ZXJlbGl1cyk6IEFkZCBvdGhlciBoZWFkZXIgZXh0ZW5zaW9ucyBsaWtlIHBs
YXlvdXQgZGVsYXk/CisKKyAgLy8gRGVsdGEgZW5jb2RpbmdzLgorICBvcHRpb25hbCBieXRlcyB0
aW1lc3RhbXBfbXNfZGVsdGFzID0gMTAxOwogICBvcHRpb25hbCBieXRlcyBtYXJrZXJfZGVsdGFz
ID0gMTAyOwogICBvcHRpb25hbCBieXRlcyBwYXlsb2FkX3R5cGVfZGVsdGFzID0gMTAzOwogICBv
cHRpb25hbCBieXRlcyBzZXF1ZW5jZV9udW1iZXJfZGVsdGFzID0gMTA0OwogICBvcHRpb25hbCBi
eXRlcyBydHBfdGltZXN0YW1wX2RlbHRhcyA9IDEwNTsKICAgb3B0aW9uYWwgYnl0ZXMgc3NyY19k
ZWx0YXMgPSAxMDY7Ci0gIG9wdGlvbmFsIGJ5dGVzIHBhY2tldF9zaXplX2RlbHRhcyA9IDEwNzsK
LSAgb3B0aW9uYWwgYnl0ZXMgcHJvYmVfY2x1c3Rlcl9pZF9kZWx0YXMgPSAxMDg7Ci0gIG9wdGlv
bmFsIGJ5dGVzIHRyYW5zbWlzc2lvbl90aW1lX29mZnNldF9kZWx0YXMgPSAxMDk7Ci0gIG9wdGlv
bmFsIGJ5dGVzIGFic29sdXRlX3NlbmRfdGltZV9kZWx0YXMgPSAxMTA7Ci0gIG9wdGlvbmFsIGJ5
dGVzIHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfZGVsdGFzID0gMTExOworICAvLyBGaWVsZCBu
dW1iZXIgMTA3IHJlc2VydmVkIGZvciBDU1JDLgorICBvcHRpb25hbCBieXRlcyBwYXlsb2FkX3Np
emVfZGVsdGFzID0gMTA4OworICBvcHRpb25hbCBieXRlcyBoZWFkZXJfc2l6ZV9kZWx0YXMgPSAx
MDk7CisgIG9wdGlvbmFsIGJ5dGVzIHBhZGRpbmdfc2l6ZV9kZWx0YXMgPSAxMTA7CisgIC8vIEZp
ZWxkIG51bWJlciAxMTEtMTE0IHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLgorICBvcHRpb25hbCBi
eXRlcyB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyX2RlbHRhcyA9IDExNTsKKyAgb3B0aW9uYWwg
Ynl0ZXMgdHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0X2RlbHRhcyA9IDExNjsKKyAgb3B0aW9uYWwg
Ynl0ZXMgYWJzb2x1dGVfc2VuZF90aW1lX2RlbHRhcyA9IDExNzsKKyAgb3B0aW9uYWwgYnl0ZXMg
dmlkZW9fcm90YXRpb25fZGVsdGFzID0gMTE4OworICAvLyB8YXVkaW9fbGV2ZWx8IGFuZCB8dm9p
Y2VfYWN0aXZpdHl8IGFyZSBhbHdheXMgdXNlZCBpbiBjb25qdW5jdGlvbi4KKyAgb3B0aW9uYWwg
Ynl0ZXMgYXVkaW9fbGV2ZWxfZGVsdGFzID0gMTE5OworICBvcHRpb25hbCBieXRlcyB2b2ljZV9h
Y3Rpdml0eV9kZWx0YXMgPSAxMjA7CiB9CiAKIG1lc3NhZ2UgSW5jb21pbmdSdGNwUGFja2V0cyB7
CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CiAKICAg
Ly8gcmVxdWlyZWQgLSBUaGUgd2hvbGUgcGFja2V0IGluY2x1ZGluZyBib3RoIHBheWxvYWQgYW5k
IGhlYWRlci4KICAgb3B0aW9uYWwgYnl0ZXMgcmF3X3BhY2tldCA9IDI7CiAgIC8vIFRPRE8odGVy
ZWxpdXMpOiBGZWFzaWJsZSB0byBsb2cgcGFyc2VkIFJUQ1AgaW5zdGVhZD8KIAotICAvLyBEZWx0
YSBlbmNvZGluZ3MKLSAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1wX2RlbHRhc19tcyA9IDEwMTsK
LSAgb3B0aW9uYWwgYnl0ZXMgcmF3X3BhY2tldF9kZWx0YXMgPSAxMDI7CisgIC8vIG9wdGlvbmFs
IC0gcmVxdWlyZWQgaWYgdGhlIGJhdGNoIGNvbnRhaW5zIGRlbHRhIGVuY29kZWQgZXZlbnRzLgor
ICBvcHRpb25hbCB1aW50MzIgbnVtYmVyX29mX2RlbHRhcyA9IDM7CisKKyAgLy8gRGVsdGEvYmxv
YiBlbmNvZGluZ3MuCisgIG9wdGlvbmFsIGJ5dGVzIHRpbWVzdGFtcF9tc19kZWx0YXMgPSAxMDE7
CisgIG9wdGlvbmFsIGJ5dGVzIHJhd19wYWNrZXRfYmxvYnMgPSAxMDI7CiB9CiAKIG1lc3NhZ2Ug
T3V0Z29pbmdSdGNwUGFja2V0cyB7CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFsIGludDY0IHRp
bWVzdGFtcF9tcyA9IDE7CiAKICAgLy8gcmVxdWlyZWQgLSBUaGUgd2hvbGUgcGFja2V0IGluY2x1
ZGluZyBib3RoIHBheWxvYWQgYW5kIGhlYWRlci4KICAgb3B0aW9uYWwgYnl0ZXMgcmF3X3BhY2tl
dCA9IDI7CiAgIC8vIFRPRE8odGVyZWxpdXMpOiBGZWFzaWJsZSB0byBsb2cgcGFyc2VkIFJUQ1Ag
aW5zdGVhZD8KIAotICAvLyBEZWx0YSBlbmNvZGluZ3MKLSAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0
YW1wX2RlbHRhc19tcyA9IDEwMTsKLSAgb3B0aW9uYWwgYnl0ZXMgcmF3X3BhY2tldF9kZWx0YXMg
PSAxMDI7CisgIC8vIG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgdGhlIGJhdGNoIGNvbnRhaW5zIGRl
bHRhIGVuY29kZWQgZXZlbnRzLgorICBvcHRpb25hbCB1aW50MzIgbnVtYmVyX29mX2RlbHRhcyA9
IDM7CisKKyAgLy8gRGVsdGEvYmxvYiBlbmNvZGluZ3MuCisgIG9wdGlvbmFsIGJ5dGVzIHRpbWVz
dGFtcF9tc19kZWx0YXMgPSAxMDE7CisgIG9wdGlvbmFsIGJ5dGVzIHJhd19wYWNrZXRfYmxvYnMg
PSAxMDI7CiB9CiAKIG1lc3NhZ2UgQXVkaW9QbGF5b3V0RXZlbnRzIHsKKyAgLy8gcmVxdWlyZWQK
ICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAvLyByZXF1aXJlZCAtIFRo
ZSBTU1JDIG9mIHRoZSBhdWRpbyBzdHJlYW0gYXNzb2NpYXRlZCB3aXRoIHRoZSBwbGF5b3V0IGV2
ZW50LgogICBvcHRpb25hbCB1aW50MzIgbG9jYWxfc3NyYyA9IDI7CiAKLSAgLy8gRGVsdGEgZW5j
b2RpbmdzCi0gIG9wdGlvbmFsIGJ5dGVzIHRpbWVzdGFtcF9kZWx0YXNfbXMgPSAxMDE7CisgIC8v
IG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgdGhlIGJhdGNoIGNvbnRhaW5zIGRlbHRhIGVuY29kZWQg
ZXZlbnRzLgorICBvcHRpb25hbCB1aW50MzIgbnVtYmVyX29mX2RlbHRhcyA9IDM7CisKKyAgLy8g
RGVsdGEgZW5jb2RpbmdzLgorICBvcHRpb25hbCBieXRlcyB0aW1lc3RhbXBfbXNfZGVsdGFzID0g
MTAxOwogICBvcHRpb25hbCBieXRlcyBsb2NhbF9zc3JjX2RlbHRhcyA9IDEwMjsKIH0KIAogbWVz
c2FnZSBCZWdpbkxvZ0V2ZW50IHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGlt
ZXN0YW1wX21zID0gMTsKKworICAvLyByZXF1aXJlZAorICBvcHRpb25hbCB1aW50MzIgdmVyc2lv
biA9IDI7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgaW50NjQgdXRjX3RpbWVfbXMgPSAz
OwogfQogCiBtZXNzYWdlIEVuZExvZ0V2ZW50IHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwg
aW50NjQgdGltZXN0YW1wX21zID0gMTsKIH0KIAogbWVzc2FnZSBMb3NzQmFzZWRCd2VVcGRhdGVz
IHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIAog
ICAvLyBUT0RPKHRlcmVsaXVzKTogVXBkYXRlIGxvZyBpbnRlcmZhY2UgdG8gdW5zaWduZWQuCkBA
IC0xOTEsMjkgKzI2MSwzNyBAQCBtZXNzYWdlIExvc3NCYXNlZEJ3ZVVwZGF0ZXMgewogICAvLyBy
ZXF1aXJlZCAtIFRvdGFsIG51bWJlciBvZiBwYWNrZXRzIHRoYXQgdGhlIEJXRSB1cGRhdGUgaXMg
YmFzZWQgb24uCiAgIG9wdGlvbmFsIHVpbnQzMiB0b3RhbF9wYWNrZXRzID0gNDsKIAotICAvLyBE
ZWx0YSBlbmNvZGluZ3MKLSAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1wX2RlbHRhc19tcyA9IDEw
MTsKLSAgb3B0aW9uYWwgYnl0ZXMgYml0cmF0ZV9kZWx0YXNfYnBzID0gMTAyOworICAvLyBvcHRp
b25hbCAtIHJlcXVpcmVkIGlmIHRoZSBiYXRjaCBjb250YWlucyBkZWx0YSBlbmNvZGVkIGV2ZW50
cy4KKyAgb3B0aW9uYWwgdWludDMyIG51bWJlcl9vZl9kZWx0YXMgPSA1OworCisgIC8vIERlbHRh
IGVuY29kaW5ncy4KKyAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1wX21zX2RlbHRhcyA9IDEwMTsK
KyAgb3B0aW9uYWwgYnl0ZXMgYml0cmF0ZV9icHNfZGVsdGFzID0gMTAyOwogICBvcHRpb25hbCBi
eXRlcyBmcmFjdGlvbl9sb3NzX2RlbHRhcyA9IDEwMzsKICAgb3B0aW9uYWwgYnl0ZXMgdG90YWxf
cGFja2V0c19kZWx0YXMgPSAxMDQ7CiB9CiAKIG1lc3NhZ2UgRGVsYXlCYXNlZEJ3ZVVwZGF0ZXMg
eworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCiAg
IC8vIHJlcXVpcmVkIC0gQmFuZHdpZHRoIGVzdGltYXRlIChpbiBicHMpIGFmdGVyIHRoZSB1cGRh
dGUuCiAgIG9wdGlvbmFsIHVpbnQzMiBiaXRyYXRlX2JwcyA9IDI7CiAKICAgZW51bSBEZXRlY3Rv
clN0YXRlIHsKLSAgICBCV0VfTk9STUFMID0gMDsKLSAgICBCV0VfVU5ERVJVU0lORyA9IDE7Ci0g
ICAgQldFX09WRVJVU0lORyA9IDI7CisgICAgQldFX1VOS05PV05fU1RBVEUgPSAwOworICAgIEJX
RV9OT1JNQUwgPSAxOworICAgIEJXRV9VTkRFUlVTSU5HID0gMjsKKyAgICBCV0VfT1ZFUlVTSU5H
ID0gMzsKICAgfQogICBvcHRpb25hbCBEZXRlY3RvclN0YXRlIGRldGVjdG9yX3N0YXRlID0gMzsK
IAotICAvLyBEZWx0YSBlbmNvZGluZ3MKLSAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1wX2RlbHRh
c19tcyA9IDEwMTsKLSAgb3B0aW9uYWwgYnl0ZXMgYml0cmF0ZV9kZWx0YXNfYnBzID0gMTAyOwor
ICAvLyBvcHRpb25hbCAtIHJlcXVpcmVkIGlmIHRoZSBiYXRjaCBjb250YWlucyBkZWx0YSBlbmNv
ZGVkIGV2ZW50cy4KKyAgb3B0aW9uYWwgdWludDMyIG51bWJlcl9vZl9kZWx0YXMgPSA0OworCisg
IC8vIERlbHRhIGVuY29kaW5ncy4KKyAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1wX21zX2RlbHRh
cyA9IDEwMTsKKyAgb3B0aW9uYWwgYnl0ZXMgYml0cmF0ZV9icHNfZGVsdGFzID0gMTAyOwogICBv
cHRpb25hbCBieXRlcyBkZXRlY3Rvcl9zdGF0ZV9kZWx0YXMgPSAxMDM7CiB9CiAKQEAgLTIyMSwx
NSArMjk5LDE3IEBAIG1lc3NhZ2UgRGVsYXlCYXNlZEJ3ZVVwZGF0ZXMgewogbWVzc2FnZSBSdHBI
ZWFkZXJFeHRlbnNpb25Db25maWcgewogICAvLyBPcHRpb25hbCBJRHMgZm9yIHRoZSBoZWFkZXIg
ZXh0ZW5zaW9ucy4gRWFjaCBJRCBpcyBhIDQtYml0IG51bWJlciB0aGF0IGlzCiAgIC8vIG9ubHkg
c2V0IGlmIHRoYXQgZXh0ZW5zaW9uIGlzIGNvbmZpZ3VyZWQuCi0gIC8vIFRPRE8odGVyZWxpdXMp
OiBDYW4gd2Ugc2tpcCB0cmFuc21pc3Npb25fdGltZV9vZmZzZXQ/IFdoZW4gaXMgaXQgdXNlZD8K
KyAgLy8gVE9ETzogQ2FuIHdlIHNraXAgYXVkaW8gbGV2ZWw/CiAgIG9wdGlvbmFsIGludDMyIHRy
YW5zbWlzc2lvbl90aW1lX29mZnNldF9pZCA9IDE7CiAgIG9wdGlvbmFsIGludDMyIGFic29sdXRl
X3NlbmRfdGltZV9pZCA9IDI7CiAgIG9wdGlvbmFsIGludDMyIHRyYW5zcG9ydF9zZXF1ZW5jZV9u
dW1iZXJfaWQgPSAzOwotICBvcHRpb25hbCBpbnQzMiBhdWRpb19sZXZlbF9pZCA9IDQ7Ci0gIC8v
IFRPRE8odGVyZWxpdXMpOiBBZGQgdmlkZW9fcm90YXRpb24gYW5kIHBsYXlvdXQgZGVsYXk/Cisg
IG9wdGlvbmFsIGludDMyIHZpZGVvX3JvdGF0aW9uX2lkID0gNDsKKyAgb3B0aW9uYWwgaW50MzIg
YXVkaW9fbGV2ZWxfaWQgPSA1OworICAvLyBUT0RPKHRlcmVsaXVzKTogQWRkIG90aGVyIGhlYWRl
ciBleHRlbnNpb25zIGxpa2UgcGxheW91dCBkZWxheT8KIH0KIAogbWVzc2FnZSBWaWRlb1JlY3ZT
dHJlYW1Db25maWcgeworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBf
bXMgPSAxOwogCiAgIC8vIHJlcXVpcmVkIC0gU3luY2hyb25pemF0aW9uIHNvdXJjZSAoc3RyZWFt
IGlkZW50aWZpZXIpIHRvIGJlIHJlY2VpdmVkLgpAQCAtMjM4LDQyICszMTgsMzggQEAgbWVzc2Fn
ZSBWaWRlb1JlY3ZTdHJlYW1Db25maWcgewogICAvLyByZXF1aXJlZCAtIFNlbmRlciBTU1JDIHVz
ZWQgZm9yIHNlbmRpbmcgUlRDUCAoc3VjaCBhcyByZWNlaXZlciByZXBvcnRzKS4KICAgb3B0aW9u
YWwgdWludDMyIGxvY2FsX3NzcmMgPSAzOwogCi0gIC8vIHJlcXVpcmVkIGlmIFJUWCBpcyBjb25m
aWd1cmVkCisgIC8vIG9wdGlvbmFsIC0gcmVxdWlyZWQgaWYgUlRYIGlzIGNvbmZpZ3VyZWQuIFNT
UkMgZm9yIHRoZSBSVFggc3RyZWFtLgogICBvcHRpb25hbCB1aW50MzIgcnR4X3NzcmMgPSA0Owog
Ci0gIC8vIG9wdGlvbmFsIC0gUlRQIHNvdXJjZSBzdHJlYW0gSUQKLSAgb3B0aW9uYWwgYnl0ZXMg
cnNpZCA9IDU7Ci0KICAgLy8gSURzIGZvciB0aGUgaGVhZGVyIGV4dGVuc2lvbiB3ZSBjYXJlIGFi
b3V0LiBPbmx5IHJlcXVpcmVkIGlmIHRoZXJlIGFyZQogICAvLyBoZWFkZXIgZXh0ZW5zaW9ucyBj
b25maWd1cmVkLgotICBvcHRpb25hbCBSdHBIZWFkZXJFeHRlbnNpb25Db25maWcgaGVhZGVyX2V4
dGVuc2lvbnMgPSA2OworICBvcHRpb25hbCBSdHBIZWFkZXJFeHRlbnNpb25Db25maWcgaGVhZGVy
X2V4dGVuc2lvbnMgPSA1OwogCiAgIC8vIFRPRE8odGVyZWxpdXMpOiBEbyB3ZSBuZWVkIGNvZGVj
LXBheWxvYWQgbWFwcGluZz8gSWYgc28gYW5kIHJ0eF9zc3JjIGlzCiAgIC8vIHVzZWQsIHdlIGFs
c28gbmVlZCBhIG1hcCBiZXR3ZWVuIFJUUCBwYXlsb2FkIHR5cGUgYW5kIFJUWCBwYXlsb2FkIHR5
cGUuCiB9CiAKIG1lc3NhZ2UgVmlkZW9TZW5kU3RyZWFtQ29uZmlnIHsKKyAgLy8gcmVxdWlyZWQK
ICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIAotICAvLyBTeW5jaHJvbml6YXRp
b24gc291cmNlIChzdHJlYW0gaWRlbnRpZmllcikgZm9yIG91dGdvaW5nIHN0cmVhbS4KLSAgLy8g
T25lIHN0cmVhbSBjYW4gaGF2ZSBzZXZlcmFsIHNzcmNzIGZvciBlLmcuIHNpbXVsY2FzdC4KKyAg
Ly8gcmVxdWlyZWQgLSBTeW5jaHJvbml6YXRpb24gc291cmNlIChzdHJlYW0gaWRlbnRpZmllcikg
Zm9yIG91dGdvaW5nIHN0cmVhbS4KKyAgLy8gV2hlbiB1c2luZyBzaW11bGNhc3QsIGEgc2VwYXJh
dGUgY29uZmlnIHNob3VsZCBiZSBsb2dnZWQgZm9yIGVhY2ggc3RyZWFtLgogICBvcHRpb25hbCB1
aW50MzIgc3NyYyA9IDI7CiAKLSAgLy8gU1NSQyBmb3IgdGhlIFJUWCBzdHJlYW0KKyAgLy8gb3B0
aW9uYWwgLSByZXF1aXJlZCBpZiBSVFggaXMgY29uZmlndXJlZC4gU1NSQyBmb3IgdGhlIFJUWCBz
dHJlYW0uCiAgIG9wdGlvbmFsIHVpbnQzMiBydHhfc3NyYyA9IDM7CiAKLSAgLy8gUlRQIHNvdXJj
ZSBzdHJlYW0gSUQKLSAgb3B0aW9uYWwgYnl0ZXMgcnNpZCA9IDQ7Ci0KICAgLy8gSURzIGZvciB0
aGUgaGVhZGVyIGV4dGVuc2lvbiB3ZSBjYXJlIGFib3V0LiBPbmx5IHJlcXVpcmVkIGlmIHRoZXJl
IGFyZQogICAvLyBoZWFkZXIgZXh0ZW5zaW9ucyBjb25maWd1cmVkLgotICBvcHRpb25hbCBSdHBI
ZWFkZXJFeHRlbnNpb25Db25maWcgaGVhZGVyX2V4dGVuc2lvbnMgPSA1OworICBvcHRpb25hbCBS
dHBIZWFkZXJFeHRlbnNpb25Db25maWcgaGVhZGVyX2V4dGVuc2lvbnMgPSA0OwogCiAgIC8vIFRP
RE8odGVyZWxpdXMpOiBEbyB3ZSBuZWVkIGNvZGVjLXBheWxvYWQgbWFwcGluZz8gSWYgc28gYW5k
IHJ0eF9zc3JjIGlzCiAgIC8vIHVzZWQsIHdlIGFsc28gbmVlZCBhIG1hcCBiZXR3ZWVuIFJUUCBw
YXlsb2FkIHR5cGUgYW5kIFJUWCBwYXlsb2FkIHR5cGUuCiB9CiAKIG1lc3NhZ2UgQXVkaW9SZWN2
U3RyZWFtQ29uZmlnIHsKKyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1w
X21zID0gMTsKIAogICAvLyByZXF1aXJlZCAtIFN5bmNocm9uaXphdGlvbiBzb3VyY2UgKHN0cmVh
bSBpZGVudGlmaWVyKSB0byBiZSByZWNlaXZlZC4KQEAgLTI4NCwzOCArMzYwLDMzIEBAIG1lc3Nh
Z2UgQXVkaW9SZWN2U3RyZWFtQ29uZmlnIHsKIAogICAvLyBGaWVsZCBudW1iZXIgNCByZXNlcnZl
ZCBmb3IgUlRYIFNTUkMuCiAKLSAgLy8gb3B0aW9uYWwgLSBSVFAgc291cmNlIHN0cmVhbSBJRAot
ICBvcHRpb25hbCBieXRlcyByc2lkID0gNTsKLQogICAvLyBJRHMgZm9yIHRoZSBoZWFkZXIgZXh0
ZW5zaW9uIHdlIGNhcmUgYWJvdXQuIE9ubHkgcmVxdWlyZWQgaWYgdGhlcmUgYXJlCiAgIC8vIGhl
YWRlciBleHRlbnNpb25zIGNvbmZpZ3VyZWQuCi0gIG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVuc2lv
bkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9ucyA9IDY7CisgIG9wdGlvbmFsIFJ0cEhlYWRlckV4dGVu
c2lvbkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9ucyA9IDU7CiAKICAgLy8gVE9ETyh0ZXJlbGl1cyk6
IERvIHdlIG5lZWQgY29kZWMtcGF5bG9hZCBtYXBwaW5nPyBJZiBzbyBhbmQgcnR4X3NzcmMgaXMK
ICAgLy8gdXNlZCwgd2UgYWxzbyBuZWVkIGEgbWFwIGJldHdlZW4gUlRQIHBheWxvYWQgdHlwZSBh
bmQgUlRYIHBheWxvYWQgdHlwZS4KIH0KIAogbWVzc2FnZSBBdWRpb1NlbmRTdHJlYW1Db25maWcg
eworICAvLyByZXF1aXJlZAogICBvcHRpb25hbCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCi0g
IC8vIFN5bmNocm9uaXphdGlvbiBzb3VyY2UgKHN0cmVhbSBpZGVudGlmaWVyKSBmb3Igb3V0Z29p
bmcgc3RyZWFtLgotICAvLyBPbmUgc3RyZWFtIGNhbiBoYXZlIHNldmVyYWwgc3NyY3MgZm9yIGUu
Zy4gc2ltdWxjYXN0LgorICAvLyByZXF1aXJlZCAtIFN5bmNocm9uaXphdGlvbiBzb3VyY2UgKHN0
cmVhbSBpZGVudGlmaWVyKSBmb3Igb3V0Z29pbmcgc3RyZWFtLgogICBvcHRpb25hbCB1aW50MzIg
c3NyYyA9IDI7CiAKLSAgLy8gRmllbGQgbnVtYmVyIDMgcmVzZXJ2ZWQgZm9yIFJUWCBTU1JDCi0K
LSAgLy8gUlRQIHNvdXJjZSBzdHJlYW0gSUQKLSAgb3B0aW9uYWwgYnl0ZXMgcnNpZCA9IDQ7Cisg
IC8vIEZpZWxkIG51bWJlciAzIHJlc2VydmVkIGZvciBSVFggU1NSQy4KIAogICAvLyBJRHMgZm9y
IHRoZSBoZWFkZXIgZXh0ZW5zaW9uIHdlIGNhcmUgYWJvdXQuIE9ubHkgcmVxdWlyZWQgaWYgdGhl
cmUgYXJlCiAgIC8vIGhlYWRlciBleHRlbnNpb25zIGNvbmZpZ3VyZWQuCi0gIG9wdGlvbmFsIFJ0
cEhlYWRlckV4dGVuc2lvbkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9ucyA9IDU7CisgIG9wdGlvbmFs
IFJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyBoZWFkZXJfZXh0ZW5zaW9ucyA9IDQ7CiAKICAgLy8g
VE9ETyh0ZXJlbGl1cyk6IERvIHdlIG5lZWQgY29kZWMtcGF5bG9hZCBtYXBwaW5nPyBJZiBzbyBh
bmQgcnR4X3NzcmMgaXMKICAgLy8gdXNlZCwgd2UgYWxzbyBuZWVkIGEgbWFwIGJldHdlZW4gUlRQ
IHBheWxvYWQgdHlwZSBhbmQgUlRYIHBheWxvYWQgdHlwZS4KIH0KIAogbWVzc2FnZSBBdWRpb05l
dHdvcmtBZGFwdGF0aW9ucyB7CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFsIGludDY0IHRpbWVz
dGFtcF9tcyA9IDE7CiAKICAgLy8gQml0IHJhdGUgdGhhdCB0aGUgYXVkaW8gZW5jb2RlciBpcyBv
cGVyYXRpbmcgYXQuCkBAIC0zMjgsNyArMzk5LDEyIEBAIG1lc3NhZ2UgQXVkaW9OZXR3b3JrQWRh
cHRhdGlvbnMgewogCiAgIC8vIFBhY2tldCBsb3NzIGZyYWN0aW9uIHRoYXQgdGhlIGVuY29kZXIn
cyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24gKEZFQykgaXMKICAgLy8gb3B0aW1pemVkIGZvci4K
LSAgb3B0aW9uYWwgZmxvYXQgdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uID0gNDsKKyAgLy8g
SW5zdGVhZCBvZiBlbmNvZGluZyBhIGZsb2F0LCB3ZSBlbmNvZGUgYSB2YWx1ZSBiZXR3ZWVuIDAg
YW5kIDE2MzgzLCB3aGljaAorICAvLyBpZiBkaXZpZGVkIGJ5IDE2MzgzLCB3aWxsIGdpdmUgYSB2
YWx1ZSBjbG9zZSB0byB0aGUgb3JpZ2luYWwgZmxvYXQuCisgIC8vIFRoZSB2YWx1ZSAxNjM4MyAo
Ml4xNCAtIDEpIHdhcyBjaG9zZW4gc28gdGhhdCBpdCB3b3VsZCBnaXZlIGdvb2QgcHJlY2lzaW9u
CisgIC8vIG9uIHRoZSBvbmUgaGFuZCwgYW5kIHdvdWxkIGJlIGVuY29kYWJsZSB3aXRoIHR3byBi
eXRlcyBpbiB2YXJpbnQgZm9ybQorICAvLyBvbiB0aGUgb3RoZXIgaGFuZC4KKyAgb3B0aW9uYWwg
dWludDMyIHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbiA9IDQ7CiAKICAgLy8gV2hldGhlciBm
b3J3YXJkIGVycm9yIGNvcnJlY3Rpb24gKEZFQykgaXMgdHVybmVkIG9uIG9yIG9mZi4KICAgb3B0
aW9uYWwgYm9vbCBlbmFibGVfZmVjID0gNTsKQEAgLTMzOSwxMCArNDE1LDEzIEBAIG1lc3NhZ2Ug
QXVkaW9OZXR3b3JrQWRhcHRhdGlvbnMgewogICAvLyBOdW1iZXIgb2YgYXVkaW8gY2hhbm5lbHMg
dGhhdCBlYWNoIGVuY29kZWQgcGFja2V0IGNvbnNpc3RzIG9mLgogICBvcHRpb25hbCB1aW50MzIg
bnVtX2NoYW5uZWxzID0gNzsKIAotICAvLyBEZWx0YSBlbmNvZGluZ3MKLSAgb3B0aW9uYWwgYnl0
ZXMgdGltZXN0YW1wX2RlbHRhc19tcyA9IDEwMTsKLSAgb3B0aW9uYWwgYnl0ZXMgYml0cmF0ZV9k
ZWx0YXNfYnBzID0gMTAyOwotICBvcHRpb25hbCBieXRlcyBmcmFtZV9sZW5ndGhfZGVsdGFzX21z
ID0gMTAzOworICAvLyBvcHRpb25hbCAtIHJlcXVpcmVkIGlmIHRoZSBiYXRjaCBjb250YWlucyBk
ZWx0YSBlbmNvZGVkIGV2ZW50cy4KKyAgb3B0aW9uYWwgdWludDMyIG51bWJlcl9vZl9kZWx0YXMg
PSA4OworCisgIC8vIERlbHRhIGVuY29kaW5ncy4KKyAgb3B0aW9uYWwgYnl0ZXMgdGltZXN0YW1w
X21zX2RlbHRhcyA9IDEwMTsKKyAgb3B0aW9uYWwgYnl0ZXMgYml0cmF0ZV9icHNfZGVsdGFzID0g
MTAyOworICBvcHRpb25hbCBieXRlcyBmcmFtZV9sZW5ndGhfbXNfZGVsdGFzID0gMTAzOwogICBv
cHRpb25hbCBieXRlcyB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb25fZGVsdGFzID0gMTA0Owog
ICBvcHRpb25hbCBieXRlcyBlbmFibGVfZmVjX2RlbHRhcyA9IDEwNTsKICAgb3B0aW9uYWwgYnl0
ZXMgZW5hYmxlX2R0eF9kZWx0YXMgPSAxMDY7CkBAIC0zNTAsNiArNDI5LDcgQEAgbWVzc2FnZSBB
dWRpb05ldHdvcmtBZGFwdGF0aW9ucyB7CiB9CiAKIG1lc3NhZ2UgQndlUHJvYmVDbHVzdGVyIHsK
KyAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgaW50NjQgdGltZXN0YW1wX21zID0gMTsKIAogICAv
LyByZXF1aXJlZCAtIFRoZSBpZCBvZiB0aGlzIHByb2JlIGNsdXN0ZXIuCkBAIC0zNjYsNiArNDQ2
LDcgQEAgbWVzc2FnZSBCd2VQcm9iZUNsdXN0ZXIgewogfQogCiBtZXNzYWdlIEJ3ZVByb2JlUmVz
dWx0U3VjY2VzcyB7CisgIC8vIHJlcXVpcmVkCiAgIG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9t
cyA9IDE7CiAKICAgLy8gcmVxdWlyZWQgLSBUaGUgaWQgb2YgdGhpcyBwcm9iZSBjbHVzdGVyLgpA
QCAtMzc2LDYgKzQ1Nyw3IEBAIG1lc3NhZ2UgQndlUHJvYmVSZXN1bHRTdWNjZXNzIHsKIH0KIAog
bWVzc2FnZSBCd2VQcm9iZVJlc3VsdEZhaWx1cmUgeworICAvLyByZXF1aXJlZAogICBvcHRpb25h
bCBpbnQ2NCB0aW1lc3RhbXBfbXMgPSAxOwogCiAgIC8vIHJlcXVpcmVkIC0gVGhlIGlkIG9mIHRo
aXMgcHJvYmUgY2x1c3Rlci4KQEAgLTM5MSwzICs0NzMsMTAxIEBAIG1lc3NhZ2UgQndlUHJvYmVS
ZXN1bHRGYWlsdXJlIHsKICAgLy8gcmVxdWlyZWQKICAgb3B0aW9uYWwgRmFpbHVyZVJlYXNvbiBm
YWlsdXJlID0gMzsKIH0KKworbWVzc2FnZSBBbHJTdGF0ZSB7CisgIC8vIHJlcXVpcmVkCisgIG9w
dGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CisKKyAgLy8gcmVxdWlyZWQgLSBUcnVlIGlm
IHRoZSBzZW5kIHJhdGUgaXMgYXBwbGljYXRpb24gbGltaXRlZC4KKyAgb3B0aW9uYWwgYm9vbCBp
bl9hbHIgPSAyOworfQorCittZXNzYWdlIEljZUNhbmRpZGF0ZVBhaXJDb25maWcgeworICBlbnVt
IEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlIHsKKyAgICBVTktOT1dOX0NPTkZJR19UWVBFID0g
MDsKKyAgICBBRERFRCA9IDE7CisgICAgVVBEQVRFRCA9IDI7CisgICAgREVTVFJPWUVEID0gMzsK
KyAgICBTRUxFQ1RFRCA9IDQ7CisgIH0KKworICBlbnVtIEljZUNhbmRpZGF0ZVR5cGUgeworICAg
IFVOS05PV05fQ0FORElEQVRFX1RZUEUgPSAwOworICAgIExPQ0FMID0gMTsKKyAgICBTVFVOID0g
MjsKKyAgICBQUkZMWCA9IDM7CisgICAgUkVMQVkgPSA0OworICB9CisKKyAgZW51bSBQcm90b2Nv
bCB7CisgICAgVU5LTk9XTl9QUk9UT0NPTCA9IDA7CisgICAgVURQID0gMTsKKyAgICBUQ1AgPSAy
OworICAgIFNTTFRDUCA9IDM7CisgICAgVExTID0gNDsKKyAgfQorCisgIGVudW0gQWRkcmVzc0Zh
bWlseSB7CisgICAgVU5LTk9XTl9BRERSRVNTX0ZBTUlMWSA9IDA7CisgICAgSVBWNCA9IDE7Cisg
ICAgSVBWNiA9IDI7CisgIH0KKworICBlbnVtIE5ldHdvcmtUeXBlIHsKKyAgICBVTktOT1dOX05F
VFdPUktfVFlQRSA9IDA7CisgICAgRVRIRVJORVQgPSAxOworICAgIFdJRkkgPSAyOworICAgIENF
TExVTEFSID0gMzsKKyAgICBWUE4gPSA0OworICAgIExPT1BCQUNLID0gNTsKKyAgfQorCisgIC8v
IHJlcXVpcmVkCisgIG9wdGlvbmFsIGludDY0IHRpbWVzdGFtcF9tcyA9IDE7CisKKyAgLy8gcmVx
dWlyZWQKKyAgb3B0aW9uYWwgSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgY29uZmlnX3R5cGUg
PSAyOworCisgIC8vIHJlcXVpcmVkCisgIG9wdGlvbmFsIHVpbnQzMiBjYW5kaWRhdGVfcGFpcl9p
ZCA9IDM7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgSWNlQ2FuZGlkYXRlVHlwZSBsb2Nh
bF9jYW5kaWRhdGVfdHlwZSA9IDQ7CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgUHJvdG9j
b2wgbG9jYWxfcmVsYXlfcHJvdG9jb2wgPSA1OworCisgIC8vIHJlcXVpcmVkCisgIG9wdGlvbmFs
IE5ldHdvcmtUeXBlIGxvY2FsX25ldHdvcmtfdHlwZSA9IDY7CisKKyAgLy8gcmVxdWlyZWQKKyAg
b3B0aW9uYWwgQWRkcmVzc0ZhbWlseSBsb2NhbF9hZGRyZXNzX2ZhbWlseSA9IDc7CisKKyAgLy8g
cmVxdWlyZWQKKyAgb3B0aW9uYWwgSWNlQ2FuZGlkYXRlVHlwZSByZW1vdGVfY2FuZGlkYXRlX3R5
cGUgPSA4OworCisgIC8vIHJlcXVpcmVkCisgIG9wdGlvbmFsIEFkZHJlc3NGYW1pbHkgcmVtb3Rl
X2FkZHJlc3NfZmFtaWx5ID0gOTsKKworICAvLyByZXF1aXJlZAorICBvcHRpb25hbCBQcm90b2Nv
bCBjYW5kaWRhdGVfcGFpcl9wcm90b2NvbCA9IDEwOworfQorCittZXNzYWdlIEljZUNhbmRpZGF0
ZVBhaXJFdmVudCB7CisgIGVudW0gSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSB7CisgICAgVU5L
Tk9XTl9DSEVDS19UWVBFID0gMDsKKyAgICBDSEVDS19TRU5UID0gMTsKKyAgICBDSEVDS19SRUNF
SVZFRCA9IDI7CisgICAgQ0hFQ0tfUkVTUE9OU0VfU0VOVCA9IDM7CisgICAgQ0hFQ0tfUkVTUE9O
U0VfUkVDRUlWRUQgPSA0OworICB9CisKKyAgLy8gcmVxdWlyZWQKKyAgb3B0aW9uYWwgaW50NjQg
dGltZXN0YW1wX21zID0gMTsKKworICAvLyByZXF1aXJlZAorICBvcHRpb25hbCBJY2VDYW5kaWRh
dGVQYWlyRXZlbnRUeXBlIGV2ZW50X3R5cGUgPSAyOworCisgIC8vIHJlcXVpcmVkCisgIG9wdGlv
bmFsIHVpbnQzMiBjYW5kaWRhdGVfcGFpcl9pZCA9IDM7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cv
cnRjX2V2ZW50X2xvZzJydHBfZHVtcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnJ0cF9kdW1w
LmNjCmluZGV4IGEzZDM0NTZhN2JkZWFiN2UyYmNkOWQzMmExYmZhYzJjMjFmOWQzNzguLmRhN2Rm
NjRmYWRkZjYxYTEzZTQxZDEyZmJkNThlNzJmNDU2YTBmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9y
dGNfZXZlbnRfbG9nMnJ0cF9kdW1wLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnJ0cF9k
dW1wLmNjCkBAIC0zMiwzMSArMzIsMzIgQEAgbmFtZXNwYWNlIHsKIAogdXNpbmcgTWVkaWFUeXBl
ID0gd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6TWVkaWFUeXBlOwogCi1ERUZJTkVfYm9v
bCgKK1dFQlJUQ19ERUZJTkVfYm9vbCgKICAgICBhdWRpbywKICAgICB0cnVlLAogICAgICJVc2Ug
LS1ub2F1ZGlvIHRvIGV4Y2x1ZGUgYXVkaW8gcGFja2V0cyBmcm9tIHRoZSBjb252ZXJ0ZWQgUlRQ
ZHVtcCBmaWxlLiIpOwotREVGSU5FX2Jvb2woCitXRUJSVENfREVGSU5FX2Jvb2woCiAgICAgdmlk
ZW8sCiAgICAgdHJ1ZSwKICAgICAiVXNlIC0tbm92aWRlbyB0byBleGNsdWRlIHZpZGVvIHBhY2tl
dHMgZnJvbSB0aGUgY29udmVydGVkIFJUUGR1bXAgZmlsZS4iKTsKLURFRklORV9ib29sKAorV0VC
UlRDX0RFRklORV9ib29sKAogICAgIGRhdGEsCiAgICAgdHJ1ZSwKICAgICAiVXNlIC0tbm9kYXRh
IHRvIGV4Y2x1ZGUgZGF0YSBwYWNrZXRzIGZyb20gdGhlIGNvbnZlcnRlZCBSVFBkdW1wIGZpbGUu
Iik7Ci1ERUZJTkVfYm9vbCgKK1dFQlJUQ19ERUZJTkVfYm9vbCgKICAgICBydHAsCiAgICAgdHJ1
ZSwKICAgICAiVXNlIC0tbm9ydHAgdG8gZXhjbHVkZSBSVFAgcGFja2V0cyBmcm9tIHRoZSBjb252
ZXJ0ZWQgUlRQZHVtcCBmaWxlLiIpOwotREVGSU5FX2Jvb2woCitXRUJSVENfREVGSU5FX2Jvb2wo
CiAgICAgcnRjcCwKICAgICB0cnVlLAogICAgICJVc2UgLS1ub3J0Y3AgdG8gZXhjbHVkZSBSVENQ
IHBhY2tldHMgZnJvbSB0aGUgY29udmVydGVkIFJUUGR1bXAgZmlsZS4iKTsKLURFRklORV9zdHJp
bmcoc3NyYywKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJTdG9yZSBvbmx5IHBh
Y2tldHMgd2l0aCB0aGlzIFNTUkMgKGRlY2ltYWwgb3IgaGV4LCB0aGUgbGF0dGVyICIKLSAgICAg
ICAgICAgICAgInN0YXJ0aW5nIHdpdGggMHgpLiIpOwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2Us
ICJQcmludHMgdGhpcyBtZXNzYWdlLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgc3Ny
YywKKyAgICAiIiwKKyAgICAiU3RvcmUgb25seSBwYWNrZXRzIHdpdGggdGhpcyBTU1JDIChkZWNp
bWFsIG9yIGhleCwgdGhlIGxhdHRlciAiCisgICAgInN0YXJ0aW5nIHdpdGggMHgpLiIpOworV0VC
UlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVzc2FnZS4iKTsKIAog
Ly8gUGFyc2VzIHRoZSBpbnB1dCBzdHJpbmcgZm9yIGEgdmFsaWQgU1NSQy4gSWYgYSB2YWxpZCBT
U1JDIGlzIGZvdW5kLCBpdCBpcwogLy8gd3JpdHRlbiB0byB0aGUgb3V0cHV0IHZhcmlhYmxlIHxz
c3JjfCwgYW5kIHRydWUgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwKQEAgLTk3LDkgKzk4LDEwIEBA
IGJvb2wgU2hvdWxkU2tpcFN0cmVhbShNZWRpYVR5cGUgbWVkaWFfdHlwZSwKIC8vIENvbnZlcnQg
YSBMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyB0byBhIHRlc3Q6OlJ0cFBhY2tldC4gSGVhZGVyIGV4
dGVuc2lvbiBJRHMKIC8vIGFyZSBhbGxvY2F0ZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBl
eHRlbnNpb24gbWFwLiBUaGlzIG1pZ2h0IG5vdCBtYXRjaAogLy8gdGhlIGV4dGVuc2lvbiBtYXAg
dXNlZCBpbiB0aGUgYWN0dWFsIGNhbGwuCi12b2lkIENvbnZlcnRSdHBQYWNrZXQoY29uc3Qgd2Vi
cnRjOjpMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyYgaW5jb21pbmcsCi0gICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAgZGVmYXVsdF9leHRlbnNp
b25fbWFwLAotICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6dGVzdDo6UnRwUGFja2V0KiBw
YWNrZXQpIHsKK3ZvaWQgQ29udmVydFJ0cFBhY2tldCgKKyAgICBjb25zdCB3ZWJydGM6OkxvZ2dl
ZFJ0cFBhY2tldEluY29taW5nJiBpbmNvbWluZywKKyAgICBjb25zdCB3ZWJydGM6OlJ0cEhlYWRl
ckV4dGVuc2lvbk1hcCYgZGVmYXVsdF9leHRlbnNpb25fbWFwLAorICAgIHdlYnJ0Yzo6dGVzdDo6
UnRwUGFja2V0KiBwYWNrZXQpIHsKICAgd2VicnRjOjpSdHBQYWNrZXQgcmVjb25zdHJ1Y3RlZF9w
YWNrZXQoJmRlZmF1bHRfZXh0ZW5zaW9uX21hcCk7CiAKICAgcmVjb25zdHJ1Y3RlZF9wYWNrZXQu
U2V0TWFya2VyKGluY29taW5nLnJ0cC5oZWFkZXIubWFya2VyQml0KTsKQEAgLTE5Niw4ICsxOTgs
NiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgcmV0dXJuIC0xOwog
ICB9CiAKLSAgc3RkOjpjb3V0IDw8ICJGb3VuZCAiIDw8IHBhcnNlZF9zdHJlYW0uR2V0TnVtYmVy
T2ZFdmVudHMoKQotICAgICAgICAgICAgPDwgIiBldmVudHMgaW4gdGhlIGlucHV0IGZpbGUuIiA8
PCBzdGQ6OmVuZGw7CiAgIGludCBydHBfY291bnRlciA9IDAsIHJ0Y3BfY291bnRlciA9IDA7CiAg
IGJvb2wgaGVhZGVyX29ubHkgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVu
dF9sb2cyc3RhdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzJzdGF0cy5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOTI4YzgyOWY0OWYxM2MwYzUxYWM5MDg1NWM1NmY0ODMzZDM5
N2NhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvcnRjX2V2ZW50X2xvZzJzdGF0cy5jYworKysgL2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0jaW5jbHVk
ZSA8c3RkaW8uaD4KLQotI2luY2x1ZGUgPGZzdHJlYW0+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0j
aW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx0dXBsZT4KLSNpbmNs
dWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImxvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvZmxhZ3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9pZ25vcmVf
d3VuZGVmLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotCi0vLyBGaWxlcyBnZW5l
cmF0ZWQgYXQgYnVpbGQtdGltZSBieSB0aGUgcHJvdG9idWYgY29tcGlsZXIuCi1SVENfUFVTSF9J
R05PUklOR19XVU5ERUYoKQotI2lmZGVmIFdFQlJUQ19BTkRST0lEX1BMQVRGT1JNX0JVSUxECi0j
aW5jbHVkZSAiZXh0ZXJuYWwvd2VicnRjL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRj
X2V2ZW50X2xvZy5wYi5oIgotI2Vsc2UKLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cv
cnRjX2V2ZW50X2xvZy5wYi5oIgotI2VuZGlmCi1SVENfUE9QX0lHTk9SSU5HX1dVTkRFRigpCi0K
LW5hbWVzcGFjZSB7Ci0KLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVz
c2FnZS4iKTsKLQotc3RydWN0IFN0YXRzIHsKLSAgaW50IGNvdW50ID0gMDsKLSAgc2l6ZV90IHRv
dGFsX3NpemUgPSAwOwotfTsKLQotLy8gV2UgYXJlIGR1cGxpY2F0aW5nIHNvbWUgcGFydHMgb2Yg
dGhlIHBhcnNlciBoZXJlIGJlY2F1c2Ugd2Ugd2FudCB0byBnZXQKLS8vIGFjY2VzcyB0byByYXcg
cHJvdG9idWYgZXZlbnRzLgotc3RkOjpwYWlyPHVpbnQ2NF90LCBib29sPiBQYXJzZVZhckludChz
dGQ6OmlzdHJlYW0mIHN0cmVhbSkgewotICB1aW50NjRfdCB2YXJpbnQgPSAwOwotICBmb3IgKHNp
emVfdCBieXRlc19yZWFkID0gMDsgYnl0ZXNfcmVhZCA8IDEwOyArK2J5dGVzX3JlYWQpIHsKLSAg
ICAvLyBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgZWFjaCBieXRlIGlzIDAgaWYgaXQgaXMg
dGhlIGxhc3QgYnl0ZSBpbgotICAgIC8vIHRoZSB2YXJpbnQgYW5kIDEgb3RoZXJ3aXNlLiBUaHVz
LCB3ZSB0YWtlIHRoZSA3IGxlYXN0IHNpZ25pZmljYW50IGJpdHMKLSAgICAvLyBvZiBlYWNoIGJ5
dGUgYW5kIHNoaWZ0IHRoZW0gNyBiaXRzIGZvciBlYWNoIGJ5dGUgcmVhZCBwcmV2aW91c2x5IHRv
IGdldAotICAgIC8vIHRoZSAodW5zaWduZWQpIGludGVnZXIuCi0gICAgaW50IGJ5dGUgPSBzdHJl
YW0uZ2V0KCk7Ci0gICAgaWYgKHN0cmVhbS5lb2YoKSkgewotICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHZhcmludCwgZmFsc2UpOwotICAgIH0KLSAgICBSVENfRENIRUNLX0dFKGJ5dGUsIDAp
OwotICAgIFJUQ19EQ0hFQ0tfTEUoYnl0ZSwgMjU1KTsKLSAgICB2YXJpbnQgfD0gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KGJ5dGUgJiAweDdGKSA8PCAoNyAqIGJ5dGVzX3JlYWQpOwotICAgIGlmICgo
Ynl0ZSAmIDB4ODApID09IDApIHsKLSAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih2YXJpbnQs
IHRydWUpOwotICAgIH0KLSAgfQotICByZXR1cm4gc3RkOjptYWtlX3BhaXIodmFyaW50LCBmYWxz
ZSk7Ci19Ci0KLWJvb2wgUGFyc2VFdmVudHMoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lLAot
ICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rvcjx3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ+KiBldmVu
dHMpIHsKLSAgc3RkOjppZnN0cmVhbSBzdHJlYW0oZmlsZW5hbWUsIHN0ZDo6aW9zX2Jhc2U6Omlu
IHwgc3RkOjppb3NfYmFzZTo6YmluYXJ5KTsKLSAgaWYgKCFzdHJlYW0uZ29vZCgpIHx8ICFzdHJl
YW0uaXNfb3BlbigpKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ291bGQgbm90IG9w
ZW4gZmlsZSBmb3IgcmVhZGluZy4iOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGNvbnN0
IHNpemVfdCBrTWF4RXZlbnRTaXplID0gKDF1IDw8IDE2KSAtIDE7Ci0gIHN0ZDo6dmVjdG9yPGNo
YXI+IHRtcF9idWZmZXIoa01heEV2ZW50U2l6ZSk7Ci0gIHVpbnQ2NF90IHRhZzsKLSAgdWludDY0
X3QgbWVzc2FnZV9sZW5ndGg7Ci0gIGJvb2wgc3VjY2VzczsKLQotICBSVENfRENIRUNLKHN0cmVh
bS5nb29kKCkpOwotCi0gIHdoaWxlICgxKSB7Ci0gICAgLy8gQ2hlY2sgd2hldGhlciB3ZSBoYXZl
IHJlYWNoZWQgZW5kIG9mIGZpbGUuCi0gICAgc3RyZWFtLnBlZWsoKTsKLSAgICBpZiAoc3RyZWFt
LmVvZigpKSB7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBSZWFkIHRoZSBu
ZXh0IG1lc3NhZ2UgdGFnLiBUaGUgdGFnIG51bWJlciBpcyBkZWZpbmVkIGFzCi0gICAgLy8gKGZp
ZWxkbnVtYmVyIDw8IDMpIHwgd2lyZV90eXBlLiBJbiBvdXIgY2FzZSwgdGhlIGZpZWxkIG51bWJl
ciBpcwotICAgIC8vIHN1cHBvc2VkIHRvIGJlIDEgYW5kIHRoZSB3aXJlIHR5cGUgZm9yIGFuIGxl
bmd0aC1kZWxpbWl0ZWQgZmllbGQgaXMgMi4KLSAgICBjb25zdCB1aW50NjRfdCBrRXhwZWN0ZWRU
YWcgPSAoMSA8PCAzKSB8IDI7Ci0gICAgc3RkOjp0aWUodGFnLCBzdWNjZXNzKSA9IFBhcnNlVmFy
SW50KHN0cmVhbSk7Ci0gICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5J
TkcpCi0gICAgICAgICAgPDwgIk1pc3NpbmcgZmllbGQgdGFnIGZyb20gYmVnaW5uaW5nIG9mIHBy
b3RvYnVmIGV2ZW50LiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmICh0YWcg
IT0ga0V4cGVjdGVkVGFnKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAgICAg
PDwgIlVuZXhwZWN0ZWQgZmllbGQgdGFnIGF0IGJlZ2lubmluZyBvZiBwcm90b2J1ZiBldmVudC4i
OwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIFJlYWQgdGhlIGxlbmd0aCBm
aWVsZC4KLSAgICBzdGQ6OnRpZShtZXNzYWdlX2xlbmd0aCwgc3VjY2VzcykgPSBQYXJzZVZhcklu
dChzdHJlYW0pOwotICAgIGlmICghc3VjY2VzcykgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5H
KSA8PCAiTWlzc2luZyBtZXNzYWdlIGxlbmd0aCBhZnRlciBwcm90b2J1ZiBmaWVsZCB0YWcuIjsK
LSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKG1lc3NhZ2VfbGVuZ3RoID4ga01h
eEV2ZW50U2l6ZSkgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUHJvdG9idWYgbWVz
c2FnZSBsZW5ndGggaXMgdG9vIGxhcmdlLiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgLy8gUmVhZCB0aGUgbmV4dCBwcm90b2J1ZiBldmVudCB0byBhIHRlbXBvcmFyeSBjaGFy
IGJ1ZmZlci4KLSAgICBzdHJlYW0ucmVhZCh0bXBfYnVmZmVyLmRhdGEoKSwgbWVzc2FnZV9sZW5n
dGgpOwotICAgIGlmIChzdHJlYW0uZ2NvdW50KCkgIT0gc3RhdGljX2Nhc3Q8aW50PihtZXNzYWdl
X2xlbmd0aCkpIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byByZWFk
IHByb3RvYnVmIG1lc3NhZ2UgZnJvbSBmaWxlLiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgLy8gUGFyc2UgdGhlIHByb3RvYnVmIGV2ZW50IGZyb20gdGhlIGJ1ZmZlci4KLSAg
ICB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQgZXZlbnQ7Ci0gICAgaWYgKCFldmVudC5QYXJzZUZyb21B
cnJheSh0bXBfYnVmZmVyLmRhdGEoKSwgbWVzc2FnZV9sZW5ndGgpKSB7Ci0gICAgICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcGFyc2UgcHJvdG9idWYgbWVzc2FnZS4iOwotICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBldmVudHMtPnB1c2hfYmFjayhldmVudCk7Ci0g
IH0KLX0KLQotLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB0aGlzIGJlIHBsYWNlZCBpbiBzb21l
IHV0aWxpdHkgZmlsZSBpbnN0ZWFkPwotc3RkOjpzdHJpbmcgRXZlbnRUeXBlVG9TdHJpbmcod2Vi
cnRjOjpydGNsb2c6OkV2ZW50OjpFdmVudFR5cGUgZXZlbnRfdHlwZSkgewotICBzd2l0Y2ggKGV2
ZW50X3R5cGUpIHsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6VU5LTk9XTl9FVkVO
VDoKLSAgICAgIHJldHVybiAiVU5LTk9XTl9FVkVOVCI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xv
Zzo6RXZlbnQ6OkxPR19TVEFSVDoKLSAgICAgIHJldHVybiAiTE9HX1NUQVJUIjsKLSAgICBjYXNl
IHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6TE9HX0VORDoKLSAgICAgIHJldHVybiAiTE9HX0VORCI7
Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OlJUUF9FVkVOVDoKLSAgICAgIHJldHVy
biAiUlRQX0VWRU5UIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6UlRDUF9FVkVO
VDoKLSAgICAgIHJldHVybiAiUlRDUF9FVkVOVCI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6
RXZlbnQ6OkFVRElPX1BMQVlPVVRfRVZFTlQ6Ci0gICAgICByZXR1cm4gIkFVRElPX1BMQVlPVVRf
RVZFTlQiOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpMT1NTX0JBU0VEX0JXRV9V
UERBVEU6Ci0gICAgICByZXR1cm4gIkxPU1NfQkFTRURfQldFX1VQREFURSI7Ci0gICAgY2FzZSB3
ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkRFTEFZX0JBU0VEX0JXRV9VUERBVEU6Ci0gICAgICByZXR1
cm4gIkRFTEFZX0JBU0VEX0JXRV9VUERBVEUiOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2
ZW50OjpWSURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6Ci0gICAgICByZXR1cm4gIlZJREVPX1JF
Q1ZfQ09ORklHIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6VklERU9fU0VOREVS
X0NPTkZJR19FVkVOVDoKLSAgICAgIHJldHVybiAiVklERU9fU0VORF9DT05GSUciOwotICAgIGNh
c2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6Ci0g
ICAgICByZXR1cm4gIkFVRElPX1JFQ1ZfQ09ORklHIjsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjbG9n
OjpFdmVudDo6QVVESU9fU0VOREVSX0NPTkZJR19FVkVOVDoKLSAgICAgIHJldHVybiAiQVVESU9f
U0VORF9DT05GSUciOwotICAgIGNhc2Ugd2VicnRjOjpydGNsb2c6OkV2ZW50OjpBVURJT19ORVRX
T1JLX0FEQVBUQVRJT05fRVZFTlQ6Ci0gICAgICByZXR1cm4gIkFVRElPX05FVFdPUktfQURBUFRB
VElPTiI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkJXRV9QUk9CRV9DTFVTVEVS
X0NSRUFURURfRVZFTlQ6Ci0gICAgICByZXR1cm4gIkJXRV9QUk9CRV9DUkVBVEVEIjsKLSAgICBj
YXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6QldFX1BST0JFX1JFU1VMVF9FVkVOVDoKLSAgICAg
IHJldHVybiAiQldFX1BST0JFX1JFU1VMVCI7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y2xvZzo6RXZl
bnQ6OkFMUl9TVEFURV9FVkVOVDoKLSAgICAgIHJldHVybiAiQUxSX1NUQVRFX0VWRU5UIjsKLSAg
ICBjYXNlIHdlYnJ0Yzo6cnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRzoK
LSAgICAgIHJldHVybiAiSUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRyI7Ci0gICAgY2FzZSB3ZWJy
dGM6OnJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJUl9FVkVOVDoKLSAgICAgIHJldHVy
biAiSUNFX0NBTkRJREFURV9QQUlSX0VWRU5UIjsKLSAgfQotICBSVENfTk9UUkVBQ0hFRCgpOwot
ICByZXR1cm4gIlVOS05PV05fRVZFTlQiOwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotLy8gVGhp
cyB1dGlsaXR5IHdpbGwgcHJpbnQgYmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBwYWNrZXQg
dG8gc3Rkb3V0LgotLy8gTm90ZSB0aGF0IHBhcnNlciB3aWxsIGFzc2VydCBpZiB0aGUgcHJvdG9i
dWYgZXZlbnQgaXMgbWlzc2luZyBzb21lIHJlcXVpcmVkCi0vLyBmaWVsZHMgYW5kIHdlIGF0dGVt
cHQgdG8gYWNjZXNzIHRoZW0uIFdlIGRvbid0IGhhbmRsZSB0aGlzIGF0IHRoZSBtb21lbnQuCi1p
bnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7Ci0gIHN0ZDo6c3RyaW5nIHByb2dyYW1f
bmFtZSA9IGFyZ3ZbMF07Ci0gIHN0ZDo6c3RyaW5nIHVzYWdlID0KLSAgICAgICJUb29sIGZvciBm
aWxlIHVzYWdlIHN0YXRpc3RpY3MgZnJvbSBhbiBSdGNFdmVudExvZy5cbiIKLSAgICAgICJSdW4g
IiArCi0gICAgICBwcm9ncmFtX25hbWUgKwotICAgICAgIiAtLWhlbHAgZm9yIHVzYWdlLlxuIgot
ICAgICAgIkV4YW1wbGUgdXNhZ2U6XG4iICsKLSAgICAgIHByb2dyYW1fbmFtZSArICIgaW5wdXQu
cmVsXG4iOwotICBpZiAocnRjOjpGbGFnTGlzdDo6U2V0RmxhZ3NGcm9tQ29tbWFuZExpbmUoJmFy
Z2MsIGFyZ3YsIHRydWUpIHx8IEZMQUdfaGVscCB8fAotICAgICAgYXJnYyAhPSAyKSB7Ci0gICAg
c3RkOjpjb3V0IDw8IHVzYWdlOwotICAgIGlmIChGTEFHX2hlbHApIHsKLSAgICAgIHJ0Yzo6Rmxh
Z0xpc3Q6OlByaW50KG51bGxwdHIsIGZhbHNlKTsKLSAgICAgIHJldHVybiAwOwotICAgIH0KLSAg
ICByZXR1cm4gMTsKLSAgfQotICBzdGQ6OnN0cmluZyBmaWxlX25hbWUgPSBhcmd2WzFdOwotCi0g
IHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6cnRjbG9nOjpFdmVudD4gZXZlbnRzOwotICBpZiAoIVBhcnNl
RXZlbnRzKGZpbGVfbmFtZSwgJmV2ZW50cykpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAi
RmFpbGVkIHRvIHBhcnNlIGV2ZW50IGxvZy4iOwotICAgIHJldHVybiAtMTsKLSAgfQotCi0gIC8v
IEdldCBmaWxlIHNpemUKLSAgRklMRSogZmlsZSA9IGZvcGVuKGZpbGVfbmFtZS5jX3N0cigpLCAi
cmIiKTsKLSAgZnNlZWsoZmlsZSwgMEwsIFNFRUtfRU5EKTsKLSAgaW50NjRfdCBmaWxlX3NpemUg
PSBmdGVsbChmaWxlKTsKLSAgZmNsb3NlKGZpbGUpOwotCi0gIC8vIFdlIGFyZSBkZWxpYmVyYXRl
bHkgdXNpbmcgbG93IGxldmVsIHByb3RvYnVmIGZ1bmN0aW9ucyB0byBnZXQgdGhlIHN0YXRzCi0g
IC8vIHNpbmNlIHRoZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgaW4gdGhlIHBhcnNlciB3b3VsZCBD
SEVDSyB0aGF0IHRoZSBldmVudHMKLSAgLy8gYXJlIHdlbGwgZm9ybWVkLgotICBzdGQ6Om1hcDx3
ZWJydGM6OnJ0Y2xvZzo6RXZlbnQ6OkV2ZW50VHlwZSwgU3RhdHM+IHN0YXRzOwotICBpbnQgbWFs
Zm9ybWVkX2V2ZW50cyA9IDA7Ci0gIHNpemVfdCBtYWxmb3JtZWRfZXZlbnRfc2l6ZSA9IDA7Ci0g
IHNpemVfdCBhY2N1bXVsYXRlZF9ldmVudF9zaXplID0gMDsKLSAgZm9yIChjb25zdCB3ZWJydGM6
OnJ0Y2xvZzo6RXZlbnQmIGV2ZW50IDogZXZlbnRzKSB7Ci0gICAgc2l6ZV90IHNlcmlhbGl6ZWRf
c2l6ZSA9IGV2ZW50LkJ5dGVTaXplTG9uZygpOwotICAgIC8vIFdoZW4gdGhlIGV2ZW50IGlzIHdy
aXR0ZW4gb24gdGhlIGRpc2ssIGl0IGlzIHBhcnQgb2YgYW4gRXZlbnRTdHJlYW0KLSAgICAvLyBv
YmplY3QuIFRoZSBldmVudCBzdHJlYW0gd2lsbCBwcmVwZW5kIGEgMSBieXRlIGZpZWxkIG51bWJl
ci93aXJlIHR5cGUsCi0gICAgLy8gYW5kIGEgdmFyaW50IGVuY29kaW5nIChiYXNlIDEyOCkgb2Yg
dGhlIGV2ZW50IGxlbmd0aC4KLSAgICBzZXJpYWxpemVkX3NpemUgPQotICAgICAgICAxICsgKDEg
KyAoc2VyaWFsaXplZF9zaXplID4gMTI3KSArIChzZXJpYWxpemVkX3NpemUgPiAxNjM4MykpICsK
LSAgICAgICAgc2VyaWFsaXplZF9zaXplOwotCi0gICAgaWYgKGV2ZW50Lmhhc190eXBlKCkgJiYg
ZXZlbnQuaGFzX3RpbWVzdGFtcF91cygpKSB7Ci0gICAgICBzdGF0c1tldmVudC50eXBlKCldLmNv
dW50Kys7Ci0gICAgICBzdGF0c1tldmVudC50eXBlKCldLnRvdGFsX3NpemUgKz0gc2VyaWFsaXpl
ZF9zaXplOwotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBUaGUgZXZlbnQgaXMgbWlzc2luZyB0aGUg
dHlwZSBvciB0aGUgdGltZXN0YW1wIGZpZWxkLgotICAgICAgbWFsZm9ybWVkX2V2ZW50cysrOwot
ICAgICAgbWFsZm9ybWVkX2V2ZW50X3NpemUgKz0gc2VyaWFsaXplZF9zaXplOwotICAgIH0KLSAg
ICBhY2N1bXVsYXRlZF9ldmVudF9zaXplICs9IHNlcmlhbGl6ZWRfc2l6ZTsKLSAgfQotCi0gIHBy
aW50ZigiVHlwZSAgICAgICAgICAgICAgICAgIFx0Q291bnRcdFRvdGFsIHNpemVcdEF2ZXJhZ2Ug
c2l6ZVx0UGVyY2VudFxuIik7Ci0gIHByaW50ZigKLSAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSAg
ICAgICJcbiIpOwotICBmb3IgKGNvbnN0IGF1dG8gaXQgOiBzdGF0cykgewotICAgIHByaW50Zigi
JS0yMnNcdCU1ZFx0JTEwenVcdCUxMi4ybGZcdCU3LjJsZlxuIiwKLSAgICAgICAgICAgRXZlbnRU
eXBlVG9TdHJpbmcoaXQuZmlyc3QpLmNfc3RyKCksIGl0LnNlY29uZC5jb3VudCwKLSAgICAgICAg
ICAgaXQuc2Vjb25kLnRvdGFsX3NpemUsCi0gICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4o
aXQuc2Vjb25kLnRvdGFsX3NpemUpIC8gaXQuc2Vjb25kLmNvdW50LAotICAgICAgICAgICBzdGF0
aWNfY2FzdDxkb3VibGU+KGl0LnNlY29uZC50b3RhbF9zaXplKSAvIGZpbGVfc2l6ZSAqIDEwMCk7
Ci0gIH0KLSAgaWYgKG1hbGZvcm1lZF9ldmVudHMgIT0gMCkgewotICAgIHByaW50ZigiJS0yMnNc
dCU1ZFx0JTEwenVcdCUxMi4ybGZcdCU3LjJsZlxuIiwgIk1BTEZPUk1FRCIsCi0gICAgICAgICAg
IG1hbGZvcm1lZF9ldmVudHMsIG1hbGZvcm1lZF9ldmVudF9zaXplLAotICAgICAgICAgICBzdGF0
aWNfY2FzdDxkb3VibGU+KG1hbGZvcm1lZF9ldmVudF9zaXplKSAvIG1hbGZvcm1lZF9ldmVudHMs
Ci0gICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obWFsZm9ybWVkX2V2ZW50X3NpemUpIC8g
ZmlsZV9zaXplICogMTAwKTsKLSAgfQotICBpZiAoZmlsZV9zaXplIC0gYWNjdW11bGF0ZWRfZXZl
bnRfc2l6ZSAhPSAwKSB7Ci0gICAgcHJpbnRmKCJXQVJOSU5HOiAlIiBQUklkNjQgIiBieXRlcyBu
b3QgYWNjb3VudGVkIGZvclxuIiwKLSAgICAgICAgICAgZmlsZV9zaXplIC0gYWNjdW11bGF0ZWRf
ZXZlbnRfc2l6ZSk7Ci0gIH0KLQotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9y
dGNfZXZlbnRfbG9nMnRleHQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZzJ0ZXh0LmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2NiNmVjZGY0YjVhNWNiYmZiZDM4NjkzYzUyMGQy
ZGRlMzgxYjZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ydGNfZXZlbnRfbG9nMnRleHQuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw4ODEgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2lu
Y2x1ZGUgPGlvbWFuaXA+ICAvLyBzZXRmaWxsLCBzZXR3Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0j
aW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgLy8g
cGFpcgotCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVk
ZSkKLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXJf
bmV3LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFw
dG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oIgotI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2J5ZS5oIgotI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2NvbW1vbl9oZWFkZXIuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRlZF9yZXBvcnRzLmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvZmlyLmgiCi0j
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvbmFjay5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3BsaS5oIgotI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3JhcGlkX3Jlc3luY19yZXF1
ZXN0LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVj
ZWl2ZXJfcmVwb3J0LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9w
YWNrZXQvcmVtYi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFj
a2V0L3NkZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tl
dC9zZW5kZXJfcmVwb3J0LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQvdG1tYm4uaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC90bW1ici5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
cGFja2V0L3RyYW5zcG9ydF9mZWVkYmFjay5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF91dGlsaXR5LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvZmxhZ3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgotCi1uYW1lc3Bh
Y2UgewotCi1ERUZJTkVfYm9vbCh1bmtub3duLCB0cnVlLCAiVXNlIC0tbm91bmtub3duIHRvIGV4
Y2x1ZGUgdW5rbm93biBldmVudHMuIik7Ci1ERUZJTkVfYm9vbChzdGFydHN0b3AsIHRydWUsICJV
c2UgLS1ub3N0YXJ0c3RvcCB0byBleGNsdWRlIHN0YXJ0L3N0b3AgZXZlbnRzLiIpOwotREVGSU5F
X2Jvb2woY29uZmlnLCB0cnVlLCAiVXNlIC0tbm9jb25maWcgdG8gZXhjbHVkZSBzdHJlYW0gY29u
ZmlndXJhdGlvbnMuIik7Ci1ERUZJTkVfYm9vbChid2UsIHRydWUsICJVc2UgLS1ub2J3ZSB0byBl
eGNsdWRlIEJXRSBldmVudHMuIik7Ci1ERUZJTkVfYm9vbChpbmNvbWluZywgdHJ1ZSwgIlVzZSAt
LW5vaW5jb21pbmcgdG8gZXhjbHVkZSBpbmNvbWluZyBwYWNrZXRzLiIpOwotREVGSU5FX2Jvb2wo
b3V0Z29pbmcsIHRydWUsICJVc2UgLS1ub291dGdvaW5nIHRvIGV4Y2x1ZGUgcGFja2V0cy4iKTsK
LS8vIFRPRE8odGVyZWxpdXMpOiBOb3RlIHRoYXQgdGhlIG1lZGlhIHR5cGUgZG9lc24ndCB3b3Jr
IHdpdGggb3V0Z29pbmcgcGFja2V0cy4KLURFRklORV9ib29sKGF1ZGlvLCB0cnVlLCAiVXNlIC0t
bm9hdWRpbyB0byBleGNsdWRlIGF1ZGlvIHBhY2tldHMuIik7Ci0vLyBUT0RPKHRlcmVsaXVzKTog
Tm90ZSB0aGF0IHRoZSBtZWRpYSB0eXBlIGRvZXNuJ3Qgd29yayB3aXRoIG91dGdvaW5nIHBhY2tl
dHMuCi1ERUZJTkVfYm9vbCh2aWRlbywgdHJ1ZSwgIlVzZSAtLW5vdmlkZW8gdG8gZXhjbHVkZSB2
aWRlbyBwYWNrZXRzLiIpOwotLy8gVE9ETyh0ZXJlbGl1cyk6IE5vdGUgdGhhdCB0aGUgbWVkaWEg
dHlwZSBkb2Vzbid0IHdvcmsgd2l0aCBvdXRnb2luZyBwYWNrZXRzLgotREVGSU5FX2Jvb2woZGF0
YSwgdHJ1ZSwgIlVzZSAtLW5vZGF0YSB0byBleGNsdWRlIGRhdGEgcGFja2V0cy4iKTsKLURFRklO
RV9ib29sKHJ0cCwgdHJ1ZSwgIlVzZSAtLW5vcnRwIHRvIGV4Y2x1ZGUgUlRQIHBhY2tldHMuIik7
Ci1ERUZJTkVfYm9vbChydGNwLCB0cnVlLCAiVXNlIC0tbm9ydGNwIHRvIGV4Y2x1ZGUgUlRDUCBw
YWNrZXRzLiIpOwotREVGSU5FX2Jvb2wocGxheW91dCwgdHJ1ZSwgIlVzZSAtLW5vcGxheW91dCB0
byBleGNsdWRlIGF1ZGlvIHBsYXlvdXQgZXZlbnRzLiIpOwotREVGSU5FX2Jvb2woYW5hLCB0cnVl
LCAiVXNlIC0tbm9hbmEgdG8gZXhjbHVkZSBBTkEgZXZlbnRzLiIpOwotREVGSU5FX2Jvb2wocHJv
YmUsIHRydWUsICJVc2UgLS1ub3Byb2JlIHRvIGV4Y2x1ZGUgcHJvYmUgZXZlbnRzLiIpOwotREVG
SU5FX2Jvb2woaWNlLCB0cnVlLCAiVXNlIC0tbm9pY2UgdG8gZXhjbHVkZSBJQ0UgZXZlbnRzLiIp
OwotCi1ERUZJTkVfYm9vbChwcmludF9mdWxsX3BhY2tldHMsCi0gICAgICAgICAgICBmYWxzZSwK
LSAgICAgICAgICAgICJQcmludCB0aGUgZnVsbCBSVFAgaGVhZGVycyBhbmQgUlRDUCBwYWNrZXRz
IGluIGhleC4iKTsKLQotLy8gVE9ETyh0ZXJlbGl1cyk6IEFsbG93IGEgbGlzdCBvZiBTU1JDcy4K
LURFRklORV9zdHJpbmcoc3NyYywKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJQ
cmludCBvbmx5IHBhY2tldHMgd2l0aCB0aGlzIFNTUkMgKGRlY2ltYWwgb3IgaGV4LCB0aGUgbGF0
dGVyICIKLSAgICAgICAgICAgICAgInN0YXJ0aW5nIHdpdGggMHgpLiIpOwotREVGSU5FX2Jvb2wo
aGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNzYWdlLiIpOwotCi11c2luZyBNZWRpYVR5cGUg
PSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpNZWRpYVR5cGU7Ci0KLXN0YXRpYyB1aW50
MzJfdCBmaWx0ZXJlZF9zc3JjID0gMDsKLQotLy8gUGFyc2VzIHRoZSBpbnB1dCBzdHJpbmcgZm9y
IGEgdmFsaWQgU1NSQy4gSWYgYSB2YWxpZCBTU1JDIGlzIGZvdW5kLCBpdCBpcwotLy8gd3JpdHRl
biB0byB0aGUgc3RhdGljIGdsb2JhbCB2YXJpYWJsZSB8ZmlsdGVyZWRfc3NyY3wsIGFuZCB0cnVl
IGlzIHJldHVybmVkLgotLy8gT3RoZXJ3aXNlLCBmYWxzZSBpcyByZXR1cm5lZC4KLS8vIFRoZSBl
bXB0eSBzdHJpbmcgbXVzdCBiZSB2YWxpZGF0ZWQgYXMgdHJ1ZSwgYmVjYXVzZSBpdCBpcyB0aGUg
ZGVmYXVsdCB2YWx1ZQotLy8gb2YgdGhlIGNvbW1hbmQtbGluZSBmbGFnLiBJbiB0aGlzIGNhc2Us
IG5vIHZhbHVlIGlzIHdyaXR0ZW4gdG8gdGhlIG91dHB1dAotLy8gdmFyaWFibGUuCi1ib29sIFBh
cnNlU3NyYyhzdGQ6OnN0cmluZyBzdHIpIHsKLSAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBzdGFy
dHMgd2l0aCAweCBvciAwWCBpdCBpbmRpY2F0ZXMgYSBoZXhhZGVjaW1hbCBudW1iZXIuCi0gIGF1
dG8gcmVhZF9tb2RlID0gc3RkOjpkZWM7Ci0gIGlmIChzdHIuc2l6ZSgpID4gMiAmJgotICAgICAg
KHN0ci5zdWJzdHIoMCwgMikgPT0gIjB4IiB8fCBzdHIuc3Vic3RyKDAsIDIpID09ICIwWCIpKSB7
Ci0gICAgcmVhZF9tb2RlID0gc3RkOjpoZXg7Ci0gICAgc3RyID0gc3RyLnN1YnN0cigyKTsKLSAg
fQotICBzdGQ6OnN0cmluZ3N0cmVhbSBzcyhzdHIpOwotICBzcyA+PiByZWFkX21vZGUgPj4gZmls
dGVyZWRfc3NyYzsKLSAgcmV0dXJuIHN0ci5lbXB0eSgpIHx8ICghc3MuZmFpbCgpICYmIHNzLmVv
ZigpKTsKLX0KLQotYm9vbCBFeGNsdWRlUGFja2V0KHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRp
cmVjdGlvbiwKLSAgICAgICAgICAgICAgICAgICBNZWRpYVR5cGUgbWVkaWFfdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBwYWNrZXRfc3NyYykgewotICBpZiAoIUZMQUdfb3V0Z29p
bmcgJiYgZGlyZWN0aW9uID09IHdlYnJ0Yzo6a091dGdvaW5nUGFja2V0KQotICAgIHJldHVybiB0
cnVlOwotICBpZiAoIUZMQUdfaW5jb21pbmcgJiYgZGlyZWN0aW9uID09IHdlYnJ0Yzo6a0luY29t
aW5nUGFja2V0KQotICAgIHJldHVybiB0cnVlOwotICBpZiAoIUZMQUdfYXVkaW8gJiYgbWVkaWFf
dHlwZSA9PSBNZWRpYVR5cGU6OkFVRElPKQotICAgIHJldHVybiB0cnVlOwotICBpZiAoIUZMQUdf
dmlkZW8gJiYgbWVkaWFfdHlwZSA9PSBNZWRpYVR5cGU6OlZJREVPKQotICAgIHJldHVybiB0cnVl
OwotICBpZiAoIUZMQUdfZGF0YSAmJiBtZWRpYV90eXBlID09IE1lZGlhVHlwZTo6REFUQSkKLSAg
ICByZXR1cm4gdHJ1ZTsKLSAgaWYgKHN0cmxlbihGTEFHX3NzcmMpID4gMCAmJiBwYWNrZXRfc3Ny
YyAhPSBmaWx0ZXJlZF9zc3JjKQotICAgIHJldHVybiB0cnVlOwotICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWNvbnN0IGNoYXIqIFN0cmVhbUluZm8od2VicnRjOjpQYWNrZXREaXJlY3Rpb24gZGlyZWN0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVR5cGUgbWVkaWFfdHlwZSkgewotICBp
ZiAoZGlyZWN0aW9uID09IHdlYnJ0Yzo6a091dGdvaW5nUGFja2V0KSB7Ci0gICAgaWYgKG1lZGlh
X3R5cGUgPT0gTWVkaWFUeXBlOjpBVURJTykKLSAgICAgIHJldHVybiAiKG91dCxhdWRpbykiOwot
ICAgIGVsc2UgaWYgKG1lZGlhX3R5cGUgPT0gTWVkaWFUeXBlOjpWSURFTykKLSAgICAgIHJldHVy
biAiKG91dCx2aWRlbykiOwotICAgIGVsc2UgaWYgKG1lZGlhX3R5cGUgPT0gTWVkaWFUeXBlOjpE
QVRBKQotICAgICAgcmV0dXJuICIob3V0LGRhdGEpIjsKLSAgICBlbHNlCi0gICAgICByZXR1cm4g
IihvdXQpIjsKLSAgfQotICBpZiAoZGlyZWN0aW9uID09IHdlYnJ0Yzo6a0luY29taW5nUGFja2V0
KSB7Ci0gICAgaWYgKG1lZGlhX3R5cGUgPT0gTWVkaWFUeXBlOjpBVURJTykKLSAgICAgIHJldHVy
biAiKGluLGF1ZGlvKSI7Ci0gICAgZWxzZSBpZiAobWVkaWFfdHlwZSA9PSBNZWRpYVR5cGU6OlZJ
REVPKQotICAgICAgcmV0dXJuICIoaW4sdmlkZW8pIjsKLSAgICBlbHNlIGlmIChtZWRpYV90eXBl
ID09IE1lZGlhVHlwZTo6REFUQSkKLSAgICAgIHJldHVybiAiKGluLGRhdGEpIjsKLSAgICBlbHNl
Ci0gICAgICByZXR1cm4gIihpbikiOwotICB9Ci0gIHJldHVybiAiKHVua25vd24pIjsKLX0KLQot
Ly8gUmV0dXJuIGRlZmF1bHQgdmFsdWVzIGZvciBoZWFkZXIgZXh0ZW5zaW9ucywgdG8gdXNlIG9u
IHN0cmVhbXMgd2l0aG91dCBzdG9yZWQKLS8vIG1hcHBpbmcgZGF0YS4gQ3VycmVudGx5IHRoaXMg
b25seSBhcHBsaWVzIHRvIGF1ZGlvIHN0cmVhbXMsIHNpbmNlIHRoZSBtYXBwaW5nCi0vLyBpcyBu
b3Qgc3RvcmVkIGluIHRoZSBldmVudCBsb2cuCi0vLyBUT0RPKGl2b2MpOiBSZW1vdmUgdGhpcyBv
bmNlIHRoaXMgbWFwcGluZyBpcyBzdG9yZWQgaW4gdGhlIGV2ZW50IGxvZyBmb3IKLS8vICAgICAg
ICAgICAgIGF1ZGlvIHN0cmVhbXMuIFRyYWNraW5nIGJ1Zzogd2VicnRjOjYzOTkKLXdlYnJ0Yzo6
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwIEdldERlZmF1bHRIZWFkZXJFeHRlbnNpb25NYXAoKSB7Ci0g
IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwIGRlZmF1bHRfbWFwOwotICBkZWZhdWx0X21h
cC5SZWdpc3Rlcjx3ZWJydGM6OkF1ZGlvTGV2ZWw+KAotICAgICAgd2VicnRjOjpSdHBFeHRlbnNp
b246OmtBdWRpb0xldmVsRGVmYXVsdElkKTsKLSAgZGVmYXVsdF9tYXAuUmVnaXN0ZXI8d2VicnRj
OjpUcmFuc21pc3Npb25PZmZzZXQ+KAotICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb246OmtUaW1l
c3RhbXBPZmZzZXREZWZhdWx0SWQpOwotICBkZWZhdWx0X21hcC5SZWdpc3Rlcjx3ZWJydGM6OkFi
c29sdXRlU2VuZFRpbWU+KAotICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb246OmtBYnNTZW5kVGlt
ZURlZmF1bHRJZCk7Ci0gIGRlZmF1bHRfbWFwLlJlZ2lzdGVyPHdlYnJ0Yzo6VmlkZW9PcmllbnRh
dGlvbj4oCi0gICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a1ZpZGVvUm90YXRpb25EZWZhdWx0
SWQpOwotICBkZWZhdWx0X21hcC5SZWdpc3Rlcjx3ZWJydGM6OlZpZGVvQ29udGVudFR5cGVFeHRl
bnNpb24+KAotICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb246OmtWaWRlb0NvbnRlbnRUeXBlRGVm
YXVsdElkKTsKLSAgZGVmYXVsdF9tYXAuUmVnaXN0ZXI8d2VicnRjOjpWaWRlb1RpbWluZ0V4dGVu
c2lvbj4oCi0gICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a1ZpZGVvVGltaW5nRGVmYXVsdElk
KTsKLSAgZGVmYXVsdF9tYXAuUmVnaXN0ZXI8d2VicnRjOjpGcmFtZU1hcmtpbmdFeHRlbnNpb24+
KAotICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb246OmtGcmFtZU1hcmtpbmdEZWZhdWx0SWQpOwot
ICBkZWZhdWx0X21hcC5SZWdpc3Rlcjx3ZWJydGM6OlRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyPigK
LSAgICAgIHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjprVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJEZWZh
dWx0SWQpOwotICBkZWZhdWx0X21hcC5SZWdpc3Rlcjx3ZWJydGM6OlBsYXlvdXREZWxheUxpbWl0
cz4oCi0gICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a1BsYXlvdXREZWxheURlZmF1bHRJZCk7
Ci0gIHJldHVybiBkZWZhdWx0X21hcDsKLX0KLQotdm9pZCBQcmludFNlbmRlclJlcG9ydChjb25z
dCB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3JiBwYXJzZWRfc3RyZWFtLAotICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OnJ0Y3A6OkNvbW1vbkhlYWRlciYgcnRjcF9ibG9j
aywKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbG9nX3RpbWVzdGFtcCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgd2VicnRjOjpQYWNrZXREaXJlY3Rpb24gZGlyZWN0aW9uKSB7Ci0g
IHdlYnJ0Yzo6cnRjcDo6U2VuZGVyUmVwb3J0IHNyOwotICBpZiAoIXNyLlBhcnNlKHJ0Y3BfYmxv
Y2spKQotICAgIHJldHVybjsKLSAgTWVkaWFUeXBlIG1lZGlhX3R5cGUgPQotICAgICAgcGFyc2Vk
X3N0cmVhbS5HZXRNZWRpYVR5cGUoc3Iuc2VuZGVyX3NzcmMoKSwgZGlyZWN0aW9uKTsKLSAgaWYg
KEV4Y2x1ZGVQYWNrZXQoZGlyZWN0aW9uLCBtZWRpYV90eXBlLCBzci5zZW5kZXJfc3NyYygpKSkK
LSAgICByZXR1cm47Ci0gIHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0YW1wIDw8ICJcdCIKLSAgICAg
ICAgICAgIDw8ICJSVENQX1NSIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkK
LSAgICAgICAgICAgIDw8ICJcdHNzcmM9IiA8PCBzci5zZW5kZXJfc3NyYygpCi0gICAgICAgICAg
ICA8PCAiXHR0aW1lc3RhbXA9IiA8PCBzci5ydHBfdGltZXN0YW1wKCkgPDwgc3RkOjplbmRsOwot
fQotCi12b2lkIFByaW50UmVjZWl2ZXJSZXBvcnQoY29uc3Qgd2VicnRjOjpQYXJzZWRSdGNFdmVu
dExvZ05ldyYgcGFyc2VkX3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3
ZWJydGM6OnJ0Y3A6OkNvbW1vbkhlYWRlciYgcnRjcF9ibG9jaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50NjRfdCBsb2dfdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbikgewotICB3ZWJydGM6OnJ0Y3A6OlJl
Y2VpdmVyUmVwb3J0IHJyOwotICBpZiAoIXJyLlBhcnNlKHJ0Y3BfYmxvY2spKQotICAgIHJldHVy
bjsKLSAgTWVkaWFUeXBlIG1lZGlhX3R5cGUgPQotICAgICAgcGFyc2VkX3N0cmVhbS5HZXRNZWRp
YVR5cGUocnIuc2VuZGVyX3NzcmMoKSwgZGlyZWN0aW9uKTsKLSAgaWYgKEV4Y2x1ZGVQYWNrZXQo
ZGlyZWN0aW9uLCBtZWRpYV90eXBlLCByci5zZW5kZXJfc3NyYygpKSkKLSAgICByZXR1cm47Ci0g
IHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0YW1wIDw8ICJcdCIKLSAgICAgICAgICAgIDw8ICJSVENQ
X1JSIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAgICAgIDw8
ICJcdHNzcmM9IiA8PCByci5zZW5kZXJfc3NyYygpIDw8IHN0ZDo6ZW5kbDsKLX0KLQotdm9pZCBQ
cmludFhyKGNvbnN0IHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXcmIHBhcnNlZF9zdHJlYW0s
Ci0gICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpydGNwOjpDb21tb25IZWFkZXImIHJ0Y3BfYmxv
Y2ssCi0gICAgICAgICAgICAgdWludDY0X3QgbG9nX3RpbWVzdGFtcCwKLSAgICAgICAgICAgICB3
ZWJydGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb24pIHsKLSAgd2VicnRjOjpydGNwOjpFeHRl
bmRlZFJlcG9ydHMgeHI7Ci0gIGlmICgheHIuUGFyc2UocnRjcF9ibG9jaykpCi0gICAgcmV0dXJu
OwotICBNZWRpYVR5cGUgbWVkaWFfdHlwZSA9Ci0gICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlh
VHlwZSh4ci5zZW5kZXJfc3NyYygpLCBkaXJlY3Rpb24pOwotICBpZiAoRXhjbHVkZVBhY2tldChk
aXJlY3Rpb24sIG1lZGlhX3R5cGUsIHhyLnNlbmRlcl9zc3JjKCkpKQotICAgIHJldHVybjsKLSAg
c3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgPDwgIlJUQ1Bf
WFIiIDw8IFN0cmVhbUluZm8oZGlyZWN0aW9uLCBtZWRpYV90eXBlKQotICAgICAgICAgICAgPDwg
Ilx0c3NyYz0iIDw8IHhyLnNlbmRlcl9zc3JjKCkgPDwgc3RkOjplbmRsOwotfQotCi12b2lkIFBy
aW50U2Rlcyhjb25zdCB3ZWJydGM6OnJ0Y3A6OkNvbW1vbkhlYWRlciYgcnRjcF9ibG9jaywKLSAg
ICAgICAgICAgICAgIHVpbnQ2NF90IGxvZ190aW1lc3RhbXAsCi0gICAgICAgICAgICAgICB3ZWJy
dGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb24pIHsKLSAgc3RkOjpjb3V0IDw8IGxvZ190aW1l
c3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgPDwgIlJUQ1BfU0RFUyIgPDwgU3RyZWFtSW5mbyhk
aXJlY3Rpb24sIE1lZGlhVHlwZTo6QU5ZKQotICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICBS
VENfTk9UUkVBQ0hFRCgpIDw8ICJTREVTIHNob3VsZCBoYXZlIGJlZW4gcmVkYWN0ZWQgd2hlbiB3
cml0aW5nIHRoZSBsb2ciOwotfQotCi12b2lkIFByaW50QnllKGNvbnN0IHdlYnJ0Yzo6UGFyc2Vk
UnRjRXZlbnRMb2dOZXcmIHBhcnNlZF9zdHJlYW0sCi0gICAgICAgICAgICAgIGNvbnN0IHdlYnJ0
Yzo6cnRjcDo6Q29tbW9uSGVhZGVyJiBydGNwX2Jsb2NrLAotICAgICAgICAgICAgICB1aW50NjRf
dCBsb2dfdGltZXN0YW1wLAotICAgICAgICAgICAgICB3ZWJydGM6OlBhY2tldERpcmVjdGlvbiBk
aXJlY3Rpb24pIHsKLSAgd2VicnRjOjpydGNwOjpCeWUgYnllOwotICBpZiAoIWJ5ZS5QYXJzZShy
dGNwX2Jsb2NrKSkKLSAgICByZXR1cm47Ci0gIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAg
IHBhcnNlZF9zdHJlYW0uR2V0TWVkaWFUeXBlKGJ5ZS5zZW5kZXJfc3NyYygpLCBkaXJlY3Rpb24p
OwotICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIGJ5ZS5zZW5kZXJf
c3NyYygpKSkKLSAgICByZXR1cm47Ci0gIHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0YW1wIDw8ICJc
dCIKLSAgICAgICAgICAgIDw8ICJSVENQX0JZRSIgPDwgU3RyZWFtSW5mbyhkaXJlY3Rpb24sIG1l
ZGlhX3R5cGUpCi0gICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgYnllLnNlbmRlcl9zc3JjKCkg
PDwgc3RkOjplbmRsOwotfQotCi12b2lkIFByaW50UnRwRmVlZGJhY2soY29uc3Qgd2VicnRjOjpQ
YXJzZWRSdGNFdmVudExvZ05ldyYgcGFyc2VkX3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB3ZWJydGM6OnJ0Y3A6OkNvbW1vbkhlYWRlciYgcnRjcF9ibG9jaywKLSAgICAgICAg
ICAgICAgICAgICAgICB1aW50NjRfdCBsb2dfdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAg
ICAgIHdlYnJ0Yzo6UGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbikgewotICBzd2l0Y2ggKHJ0Y3Bf
YmxvY2suZm10KCkpIHsKLSAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6TmFjazo6a0ZlZWRiYWNrTWVz
c2FnZVR5cGU6IHsKLSAgICAgIHdlYnJ0Yzo6cnRjcDo6TmFjayBuYWNrOwotICAgICAgaWYgKCFu
YWNrLlBhcnNlKHJ0Y3BfYmxvY2spKQotICAgICAgICByZXR1cm47Ci0gICAgICBNZWRpYVR5cGUg
bWVkaWFfdHlwZSA9Ci0gICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRNZWRpYVR5cGUobmFjay5z
ZW5kZXJfc3NyYygpLCBkaXJlY3Rpb24pOwotICAgICAgaWYgKEV4Y2x1ZGVQYWNrZXQoZGlyZWN0
aW9uLCBtZWRpYV90eXBlLCBuYWNrLnNlbmRlcl9zc3JjKCkpKQotICAgICAgICByZXR1cm47Ci0g
ICAgICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICAgICAg
PDwgIlJUQ1BfTkFDSyIgPDwgU3RyZWFtSW5mbyhkaXJlY3Rpb24sIG1lZGlhX3R5cGUpCi0gICAg
ICAgICAgICAgICAgPDwgIlx0c3NyYz0iIDw8IG5hY2suc2VuZGVyX3NzcmMoKSA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OlRtbWJyOjpr
RmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNwOjpUbW1iciB0bW1icjsK
LSAgICAgIGlmICghdG1tYnIuUGFyc2UocnRjcF9ibG9jaykpCi0gICAgICAgIHJldHVybjsKLSAg
ICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldE1l
ZGlhVHlwZSh0bW1ici5zZW5kZXJfc3NyYygpLCBkaXJlY3Rpb24pOwotICAgICAgaWYgKEV4Y2x1
ZGVQYWNrZXQoZGlyZWN0aW9uLCBtZWRpYV90eXBlLCB0bW1ici5zZW5kZXJfc3NyYygpKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgICAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0Igot
ICAgICAgICAgICAgICAgIDw8ICJSVENQX1RNTUJSIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwg
bWVkaWFfdHlwZSkKLSAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgdG1tYnIuc2VuZGVy
X3NzcmMoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSB3ZWJy
dGM6OnJ0Y3A6OlRtbWJuOjprRmVlZGJhY2tNZXNzYWdlVHlwZTogewotICAgICAgd2VicnRjOjpy
dGNwOjpUbW1ibiB0bW1ibjsKLSAgICAgIGlmICghdG1tYm4uUGFyc2UocnRjcF9ibG9jaykpCi0g
ICAgICAgIHJldHVybjsKLSAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgICAgICBw
YXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZSh0bW1ibi5zZW5kZXJfc3NyYygpLCBkaXJlY3Rpb24p
OwotICAgICAgaWYgKEV4Y2x1ZGVQYWNrZXQoZGlyZWN0aW9uLCBtZWRpYV90eXBlLCB0bW1ibi5z
ZW5kZXJfc3NyYygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgc3RkOjpjb3V0IDw8IGxvZ190
aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgICAgIDw8ICJSVENQX1RNTUJOIiA8PCBTdHJl
YW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAgICAgICAgICA8PCAiXHRzc3Jj
PSIgPDwgdG1tYm4uc2VuZGVyX3NzcmMoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICBicmVhazsKLSAg
ICB9Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OlJhcGlkUmVzeW5jUmVxdWVzdDo6a0ZlZWRiYWNr
TWVzc2FnZVR5cGU6IHsKLSAgICAgIHdlYnJ0Yzo6cnRjcDo6UmFwaWRSZXN5bmNSZXF1ZXN0IHNy
X3JlcTsKLSAgICAgIGlmICghc3JfcmVxLlBhcnNlKHJ0Y3BfYmxvY2spKQotICAgICAgICByZXR1
cm47Ci0gICAgICBNZWRpYVR5cGUgbWVkaWFfdHlwZSA9Ci0gICAgICAgICAgcGFyc2VkX3N0cmVh
bS5HZXRNZWRpYVR5cGUoc3JfcmVxLnNlbmRlcl9zc3JjKCksIGRpcmVjdGlvbik7Ci0gICAgICBp
ZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlhX3R5cGUsIHNyX3JlcS5zZW5kZXJfc3Ny
YygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgc3RkOjpjb3V0IDw8IGxvZ190aW1lc3RhbXAg
PDwgIlx0IgotICAgICAgICAgICAgICAgIDw8ICJSVENQX1NSUkVRIiA8PCBTdHJlYW1JbmZvKGRp
cmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgc3Jf
cmVxLnNlbmRlcl9zc3JjKCkgPDwgc3RkOjplbmRsOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGNhc2Ugd2VicnRjOjpydGNwOjpUcmFuc3BvcnRGZWVkYmFjazo6a0ZlZWRiYWNrTWVzc2FnZVR5
cGU6IHsKLSAgICAgIHdlYnJ0Yzo6cnRjcDo6VHJhbnNwb3J0RmVlZGJhY2sgdHJhbnNwb3J0X2Zl
ZWRiYWNrOwotICAgICAgaWYgKCF0cmFuc3BvcnRfZmVlZGJhY2suUGFyc2UocnRjcF9ibG9jaykp
Ci0gICAgICAgIHJldHVybjsKLSAgICAgIE1lZGlhVHlwZSBtZWRpYV90eXBlID0gcGFyc2VkX3N0
cmVhbS5HZXRNZWRpYVR5cGUoCi0gICAgICAgICAgdHJhbnNwb3J0X2ZlZWRiYWNrLnNlbmRlcl9z
c3JjKCksIGRpcmVjdGlvbik7Ci0gICAgICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1l
ZGlhX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfZmVlZGJhY2suc2Vu
ZGVyX3NzcmMoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICAgIHN0ZDo6Y291dCA8PCBsb2dfdGlt
ZXN0YW1wIDw8ICJcdCIKLSAgICAgICAgICAgICAgICA8PCAiUlRDUF9ORVdGQiIgPDwgU3RyZWFt
SW5mbyhkaXJlY3Rpb24sIG1lZGlhX3R5cGUpCi0gICAgICAgICAgICAgICAgPDwgIlx0c2VuZGVy
X3NzcmM9IiA8PCB0cmFuc3BvcnRfZmVlZGJhY2suc2VuZGVyX3NzcmMoKQotICAgICAgICAgICAg
ICAgIDw8ICJcdG1lZGlhX3NzcmM9IiA8PCB0cmFuc3BvcnRfZmVlZGJhY2subWVkaWFfc3NyYygp
Ci0gICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGRlZmF1bHQ6Ci0gICAgICBzdGQ6OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAg
ICAgICAgICAgICAgPDwgIlJUQ1BfUlRQRkIoVU5LTk9XTikiIDw8IHN0ZDo6ZW5kbDsKLSAgICAg
IGJyZWFrOwotICB9Ci19Ci0KLXZvaWQgUHJpbnRQc0ZlZWRiYWNrKGNvbnN0IHdlYnJ0Yzo6UGFy
c2VkUnRjRXZlbnRMb2dOZXcmIHBhcnNlZF9zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICBj
b25zdCB3ZWJydGM6OnJ0Y3A6OkNvbW1vbkhlYWRlciYgcnRjcF9ibG9jaywKLSAgICAgICAgICAg
ICAgICAgICAgIHVpbnQ2NF90IGxvZ190aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAgICB3
ZWJydGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb24pIHsKLSAgc3dpdGNoIChydGNwX2Jsb2Nr
LmZtdCgpKSB7Ci0gICAgY2FzZSB3ZWJydGM6OnJ0Y3A6OlBsaTo6a0ZlZWRiYWNrTWVzc2FnZVR5
cGU6IHsKLSAgICAgIHdlYnJ0Yzo6cnRjcDo6UGxpIHBsaTsKLSAgICAgIGlmICghcGxpLlBhcnNl
KHJ0Y3BfYmxvY2spKQotICAgICAgICByZXR1cm47Ci0gICAgICBNZWRpYVR5cGUgbWVkaWFfdHlw
ZSA9Ci0gICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRNZWRpYVR5cGUocGxpLnNlbmRlcl9zc3Jj
KCksIGRpcmVjdGlvbik7Ci0gICAgICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rpb24sIG1lZGlh
X3R5cGUsIHBsaS5zZW5kZXJfc3NyYygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgc3RkOjpj
b3V0IDw8IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgICAgIDw8ICJSVENQX1BM
SSIgPDwgU3RyZWFtSW5mbyhkaXJlY3Rpb24sIG1lZGlhX3R5cGUpCi0gICAgICAgICAgICAgICAg
PDwgIlx0c3NyYz0iIDw8IHBsaS5zZW5kZXJfc3NyYygpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6RmlyOjprRmVlZGJhY2tNZXNzYWdl
VHlwZTogewotICAgICAgd2VicnRjOjpydGNwOjpGaXIgZmlyOwotICAgICAgaWYgKCFmaXIuUGFy
c2UocnRjcF9ibG9jaykpCi0gICAgICAgIHJldHVybjsKLSAgICAgIE1lZGlhVHlwZSBtZWRpYV90
eXBlID0KLSAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZShmaXIuc2VuZGVyX3Nz
cmMoKSwgZGlyZWN0aW9uKTsKLSAgICAgIGlmIChFeGNsdWRlUGFja2V0KGRpcmVjdGlvbiwgbWVk
aWFfdHlwZSwgZmlyLnNlbmRlcl9zc3JjKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgICBzdGQ6
OmNvdXQgPDwgbG9nX3RpbWVzdGFtcCA8PCAiXHQiCi0gICAgICAgICAgICAgICAgPDwgIlJUQ1Bf
RklSIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAgICAgICAgICAg
ICA8PCAiXHRzc3JjPSIgPDwgZmlyLnNlbmRlcl9zc3JjKCkgPDwgc3RkOjplbmRsOwotICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIGNhc2Ugd2VicnRjOjpydGNwOjpSZW1iOjprRmVlZGJhY2tNZXNz
YWdlVHlwZTogewotICAgICAgd2VicnRjOjpydGNwOjpSZW1iIHJlbWI7Ci0gICAgICBpZiAoIXJl
bWIuUGFyc2UocnRjcF9ibG9jaykpCi0gICAgICAgIHJldHVybjsKLSAgICAgIE1lZGlhVHlwZSBt
ZWRpYV90eXBlID0KLSAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldE1lZGlhVHlwZShyZW1iLnNl
bmRlcl9zc3JjKCksIGRpcmVjdGlvbik7Ci0gICAgICBpZiAoRXhjbHVkZVBhY2tldChkaXJlY3Rp
b24sIG1lZGlhX3R5cGUsIHJlbWIuc2VuZGVyX3NzcmMoKSkpCi0gICAgICAgIHJldHVybjsKLSAg
ICAgIHN0ZDo6Y291dCA8PCBsb2dfdGltZXN0YW1wIDw8ICJcdCIKLSAgICAgICAgICAgICAgICA8
PCAiUlRDUF9SRU1CIiA8PCBTdHJlYW1JbmZvKGRpcmVjdGlvbiwgbWVkaWFfdHlwZSkKLSAgICAg
ICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgcmVtYi5zZW5kZXJfc3NyYygpIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgc3RkOjpjb3V0IDw8
IGxvZ190aW1lc3RhbXAgPDwgIlx0IgotICAgICAgICAgICAgICAgIDw8ICJSVENQX1BTRkIoVU5L
Tk9XTikiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLWVudW0gY2xhc3Mg
SW5wdXRTb3VyY2UgewotICBTVERJTiwKLSAgRklMRSwKLX07Ci0KLXZvaWQgUHJpbnRVc2FnZUd1
aWRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9ncmFtX25hbWUpIHsKLSAgc3RkOjpjb3V0Ci0gICAg
ICA8PCAiVG9vbCBmb3IgcHJpbnRpbmcgcGFja2V0IGluZm9ybWF0aW9uIGZyb20gYW4gUnRjRXZl
bnRMb2cgYXMgdGV4dC5cbiIKLSAgICAgIDw8ICIqIFJ1biAiICsgcHJvZ3JhbV9uYW1lICsgIiAt
LWhlbHAgZm9yIHVzYWdlLlxuIgotICAgICAgPDwgIiogRXhhbXBsZSB1c2FnZSBmb3IgcGFyc2lu
ZyBhIGZpbGU6XG4iCi0gICAgICA8PCAiICAiIDw8IHByb2dyYW1fbmFtZSArICIgaW5wdXQucmVs
XG4iCi0gICAgICA8PCAiKiBFeGFtcGxlIHVzYWdlIGZvciBwYXJzaW5nIHRoZSBzdGRpbjpcbiIK
LSAgICAgIDw8ICIgICIgPDwgcHJvZ3JhbV9uYW1lICsgIlxuIjsKLX0KLQotLy8gVE9ETyhlbGFk
YWxvbik6IFJldHVybiBhIHN0cmVhbSBvciBmaWxlIGRlc2NyaXB0b3IgaW5zdGVhZC4KLUlucHV0
U291cmNlIFBhcnNlQ29tbWFuZExpbmVGbGFncyhpbnQgYXJnYywgY2hhciogYXJndltdKSB7Ci0g
IGlmIChydGM6OkZsYWdMaXN0OjpTZXRGbGFnc0Zyb21Db21tYW5kTGluZSgmYXJnYywgYXJndiwg
dHJ1ZSkgIT0gMCkgewotICAgIFByaW50VXNhZ2VHdWlkZShhcmd2WzBdKTsKLSAgICBleGl0KC0x
KTsKLSAgfQotCi0gIGlmIChGTEFHX2hlbHApIHsKLSAgICBQcmludFVzYWdlR3VpZGUoYXJndlsw
XSk7Ci0gICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKLSAgICBydGM6OkZsYWdMaXN0OjpQcmlu
dChudWxscHRyLCBmYWxzZSk7Ci0gICAgZXhpdCgwKTsKLSAgfQotCi0gIHN3aXRjaCAoYXJnYykg
ewotICAgIGNhc2UgMToKLSAgICAgIHJldHVybiBJbnB1dFNvdXJjZTo6U1RESU47Ci0gICAgY2Fz
ZSAyOgotICAgICAgcmV0dXJuIElucHV0U291cmNlOjpGSUxFOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICBQcmludFVzYWdlR3VpZGUoYXJndlswXSk7Ci0gICAgICBleGl0KC0xKTsKLSAgfQotfQotCi19
ICAvLyBuYW1lc3BhY2UKLQotLy8gVGhpcyB1dGlsaXR5IHdpbGwgcHJpbnQgYmFzaWMgaW5mb3Jt
YXRpb24gYWJvdXQgZWFjaCBwYWNrZXQgdG8gc3Rkb3V0LgotLy8gTm90ZSB0aGF0IHBhcnNlciB3
aWxsIGFzc2VydCBpZiB0aGUgcHJvdG9idWYgZXZlbnQgaXMgbWlzc2luZyBzb21lIHJlcXVpcmVk
Ci0vLyBmaWVsZHMgYW5kIHdlIGF0dGVtcHQgdG8gYWNjZXNzIHRoZW0uIFdlIGRvbid0IGhhbmRs
ZSB0aGlzIGF0IHRoZSBtb21lbnQuCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7
Ci0gIElucHV0U291cmNlIGlucHV0X3NvdXJjZSA9IFBhcnNlQ29tbWFuZExpbmVGbGFncyhhcmdj
LCBhcmd2KTsKLQotICBpZiAoc3RybGVuKEZMQUdfc3NyYykgPiAwKQotICAgIFJUQ19DSEVDSyhQ
YXJzZVNzcmMoRkxBR19zc3JjKSkgPDwgIkZsYWcgdmVyaWZpY2F0aW9uIGhhcyBmYWlsZWQuIjsK
LQotICB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCBkZWZhdWx0X21hcCA9IEdldERlZmF1
bHRIZWFkZXJFeHRlbnNpb25NYXAoKTsKLSAgYm9vbCBkZWZhdWx0X21hcF91c2VkID0gZmFsc2U7
Ci0KLSAgd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldyBwYXJzZWRfc3RyZWFtOwotCi0gIHN3
aXRjaCAoaW5wdXRfc291cmNlKSB7Ci0gICAgY2FzZSBJbnB1dFNvdXJjZTo6U1RESU46IHsKLSAg
ICAgIGlmICghcGFyc2VkX3N0cmVhbS5QYXJzZVN0cmVhbShzdGQ6OmNpbikpIHsKLSAgICAgICAg
c3RkOjpjZXJyIDw8ICJFcnJvciB3aGlsZSBwYXJzaW5nIGlucHV0IHN0cmVhbS4iIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgSW5wdXRTb3VyY2U6OkZJTEU6IHsKLSAgICAgIGlmICghcGFyc2VkX3N0cmVhbS5Q
YXJzZUZpbGUoYXJndlsxXSkpIHsKLSAgICAgICAgc3RkOjpjZXJyIDw8ICJFcnJvciB3aGlsZSBw
YXJzaW5nIGlucHV0IGZpbGU6ICIgPDwgYXJndlsxXSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybiAtMTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OiB7IFJU
Q19OT1RSRUFDSEVEKCkgPDwgIlVuc3VwcG9ydGVkIGlucHV0IHNvdXJjZS4iOyB9Ci0gIH0KLQot
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9zdHJlYW0uR2V0TnVtYmVyT2ZFdmVudHMo
KTsgaSsrKSB7Ci0gICAgYm9vbCBldmVudF9yZWNvZ25pemVkID0gZmFsc2U7Ci0gICAgc3dpdGNo
IChwYXJzZWRfc3RyZWFtLkdldEV2ZW50VHlwZShpKSkgewotICAgICAgY2FzZSB3ZWJydGM6OlBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlVOS05PV05fRVZFTlQ6IHsKLSAgICAgICAg
aWYgKEZMQUdfdW5rbm93bikgewotICAgICAgICAgIHN0ZDo6Y291dCA8PCBwYXJzZWRfc3RyZWFt
LkdldFRpbWVzdGFtcChpKSA8PCAiXHRVTktOT1dOX0VWRU5UIgotICAgICAgICAgICAgICAgICAg
ICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZlbnRfcmVjb2duaXplZCA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBjYXNlIHdlYnJ0Yzo6UGFyc2Vk
UnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6TE9HX1NUQVJUOiB7Ci0gICAgICAgIGlmIChGTEFH
X3N0YXJ0c3RvcCkgewotICAgICAgICAgIHN0ZDo6Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRp
bWVzdGFtcChpKSA8PCAiXHRMT0dfU1RBUlQiCi0gICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExv
Z05ldzo6RXZlbnRUeXBlOjpMT0dfRU5EOiB7Ci0gICAgICAgIGlmIChGTEFHX3N0YXJ0c3RvcCkg
ewotICAgICAgICAgIHN0ZDo6Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKSA8
PCAiXHRMT0dfRU5EIgotICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
IH0KLSAgICAgICAgZXZlbnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgfQotCi0gICAgICBjYXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlw
ZTo6UlRQX0VWRU5UOiB7Ci0gICAgICAgIGlmIChGTEFHX3J0cCkgewotICAgICAgICAgIHNpemVf
dCBoZWFkZXJfbGVuZ3RoOwotICAgICAgICAgIHNpemVfdCB0b3RhbF9sZW5ndGg7Ci0gICAgICAg
ICAgdWludDhfdCBoZWFkZXJbSVBfUEFDS0VUX1NJWkVdOwotICAgICAgICAgIHdlYnJ0Yzo6UGFj
a2V0RGlyZWN0aW9uIGRpcmVjdGlvbjsKLSAgICAgICAgICBjb25zdCB3ZWJydGM6OlJ0cEhlYWRl
ckV4dGVuc2lvbk1hcCogZXh0ZW5zaW9uX21hcCA9Ci0gICAgICAgICAgICAgIHBhcnNlZF9zdHJl
YW0uR2V0UnRwSGVhZGVyKGksICZkaXJlY3Rpb24sIGhlYWRlciwgJmhlYWRlcl9sZW5ndGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0b3RhbF9sZW5ndGgsIG51
bGxwdHIpOwotCi0gICAgICAgICAgaWYgKGV4dGVuc2lvbl9tYXAgPT0gbnVsbHB0cikgewotICAg
ICAgICAgICAgZXh0ZW5zaW9uX21hcCA9ICZkZWZhdWx0X21hcDsKLSAgICAgICAgICAgIGlmICgh
ZGVmYXVsdF9tYXBfdXNlZCkKLSAgICAgICAgICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
VXNpbmcgZGVmYXVsdCBoZWFkZXIgZXh0ZW5zaW9uIG1hcCI7Ci0gICAgICAgICAgICBkZWZhdWx0
X21hcF91c2VkID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBQYXJzZSBoZWFk
ZXIgdG8gZ2V0IFNTUkMgYW5kIFJUUCB0aW1lLgotICAgICAgICAgIHdlYnJ0Yzo6UnRwVXRpbGl0
eTo6UnRwSGVhZGVyUGFyc2VyIHJ0cF9wYXJzZXIoaGVhZGVyLCBoZWFkZXJfbGVuZ3RoKTsKLSAg
ICAgICAgICB3ZWJydGM6OlJUUEhlYWRlciBwYXJzZWRfaGVhZGVyOwotICAgICAgICAgIHJ0cF9w
YXJzZXIuUGFyc2UoJnBhcnNlZF9oZWFkZXIsIGV4dGVuc2lvbl9tYXApOwotICAgICAgICAgIE1l
ZGlhVHlwZSBtZWRpYV90eXBlID0KLSAgICAgICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRNZWRp
YVR5cGUocGFyc2VkX2hlYWRlci5zc3JjLCBkaXJlY3Rpb24pOwotCi0gICAgICAgICAgaWYgKEV4
Y2x1ZGVQYWNrZXQoZGlyZWN0aW9uLCBtZWRpYV90eXBlLCBwYXJzZWRfaGVhZGVyLnNzcmMpKSB7
Ci0gICAgICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgIH0KLQotICAgICAgICAgIHN0ZDo6Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdl
dFRpbWVzdGFtcChpKSA8PCAiXHRSVFAiCi0gICAgICAgICAgICAgICAgICAgIDw8IFN0cmVhbUlu
Zm8oZGlyZWN0aW9uLCBtZWRpYV90eXBlKQotICAgICAgICAgICAgICAgICAgICA8PCAiXHRzc3Jj
PSIgPDwgcGFyc2VkX2hlYWRlci5zc3JjCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdHRpbWVz
dGFtcD0iIDw8IHBhcnNlZF9oZWFkZXIudGltZXN0YW1wOwotICAgICAgICAgIGlmIChwYXJzZWRf
aGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0ZVNlbmRUaW1lKSB7Ci0gICAgICAgICAgICBzdGQ6
OmNvdXQgPDwgIlx0QWJzU2VuZFRpbWU9IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHBhcnNl
ZF9oZWFkZXIuZXh0ZW5zaW9uLmFic29sdXRlU2VuZFRpbWU7Ci0gICAgICAgICAgfQotICAgICAg
ICAgIGlmIChwYXJzZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNWaWRlb0NvbnRlbnRUeXBlKSB7Ci0g
ICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0Q29udGVudFR5cGU9IgotICAgICAgICAgICAgICAg
ICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLnZpZGVvQ29udGVudFR5cGUpOwotICAgICAgICAgIH0K
LSAgICAgICAgICBpZiAocGFyc2VkX2hlYWRlci5leHRlbnNpb24uaGFzVmlkZW9Sb3RhdGlvbikg
ewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJcdFJvdGF0aW9uPSIKLSAgICAgICAgICAgICAg
ICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJzZWRfaGVhZGVyLmV4dGVuc2lvbi52aWRlb1JvdGF0aW9uKTsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgaWYgKHBhcnNlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zcG9ydFNlcXVlbmNl
TnVtYmVyKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0VHJhbnNwb3J0U2VxPSIKLSAg
ICAgICAgICAgICAgICAgICAgICA8PCBwYXJzZWRfaGVhZGVyLmV4dGVuc2lvbi50cmFuc3BvcnRT
ZXF1ZW5jZU51bWJlcjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHBhcnNlZF9oZWFkZXIu
ZXh0ZW5zaW9uLmhhc1RyYW5zbWlzc2lvblRpbWVPZmZzZXQpIHsKLSAgICAgICAgICAgIHN0ZDo6
Y291dCA8PCAiXHRUcmFuc21UaW1lT2Zmc2V0PSIKLSAgICAgICAgICAgICAgICAgICAgICA8PCBw
YXJzZWRfaGVhZGVyLmV4dGVuc2lvbi50cmFuc21pc3Npb25UaW1lT2Zmc2V0OwotICAgICAgICAg
IH0KLSAgICAgICAgICBpZiAocGFyc2VkX2hlYWRlci5leHRlbnNpb24uaGFzQXVkaW9MZXZlbCkg
ewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJcdEF1ZGlvTGV2ZWw9IgotICAgICAgICAgICAg
ICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4ocGFyc2VkX2hlYWRlci5leHRlbnNpb24uYXVk
aW9MZXZlbCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgICAgaWYgKEZMQUdfcHJpbnRfZnVsbF9wYWNrZXRzKSB7Ci0gICAgICAgICAgICAv
LyBUT0RPKHRlcmVsaXVzKTogUmV3cml0ZSB0aGlzIGZpbGUgdG8gdXNlIHByaW50ZiBpbnN0ZWFk
IG9mIGNvdXQuCi0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0XHQiIDw8IHN0ZDo6aGV4Owot
ICAgICAgICAgICAgY2hhciBwcmV2X2ZpbGwgPSBzdGQ6OmNvdXQuZmlsbCgnMCcpOwotICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBoZWFkZXJfbGVuZ3RoOyBpKyspIHsKLSAgICAg
ICAgICAgICAgc3RkOjpjb3V0IDw8IHN0ZDo6c2V0dygyKSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaGVhZGVyW2ldKTsKLSAgICAgICAgICAgICAgaWYgKGkgJSA0ID09IDMpCi0gICAgICAgICAg
ICAgICAgc3RkOjpjb3V0IDw8ICIgIjsgIC8vIFNlcGFyYXRvciBiZXR3ZWVuIDMyLWJpdCB3b3Jk
cy4KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0ZDo6Y291dC5maWxsKHByZXZfZmlsbCk7
Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgc3RkOjpkZWMgPDwgc3RkOjplbmRsOwotICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExv
Z05ldzo6RXZlbnRUeXBlOjpSVENQX0VWRU5UOiB7Ci0gICAgICAgIGlmIChGTEFHX3J0Y3ApIHsK
LSAgICAgICAgICBzaXplX3QgbGVuZ3RoOwotICAgICAgICAgIHVpbnQ4X3QgcGFja2V0W0lQX1BB
Q0tFVF9TSVpFXTsKLSAgICAgICAgICB3ZWJydGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb247
Ci0gICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRSdGNwUGFja2V0KGksICZkaXJlY3Rpb24sIHBh
Y2tldCwgJmxlbmd0aCk7Ci0KLSAgICAgICAgICB3ZWJydGM6OnJ0Y3A6OkNvbW1vbkhlYWRlciBy
dGNwX2Jsb2NrOwotICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHBhY2tldF9lbmQgPSBwYWNrZXQg
KyBsZW5ndGg7Ci0gICAgICAgICAgZm9yIChjb25zdCB1aW50OF90KiBuZXh0X2Jsb2NrID0gcGFj
a2V0OyBuZXh0X2Jsb2NrICE9IHBhY2tldF9lbmQ7Ci0gICAgICAgICAgICAgICBuZXh0X2Jsb2Nr
ID0gcnRjcF9ibG9jay5OZXh0UGFja2V0KCkpIHsKLSAgICAgICAgICAgIHB0cmRpZmZfdCByZW1h
aW5pbmdfYmxvY2tzX3NpemUgPSBwYWNrZXRfZW5kIC0gbmV4dF9ibG9jazsKLSAgICAgICAgICAg
IFJUQ19EQ0hFQ0tfR1QocmVtYWluaW5nX2Jsb2Nrc19zaXplLCAwKTsKLSAgICAgICAgICAgIGlm
ICghcnRjcF9ibG9jay5QYXJzZShuZXh0X2Jsb2NrLCByZW1haW5pbmdfYmxvY2tzX3NpemUpKSB7
Ci0gICAgICAgICAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byBwYXJzZSBS
VENQIjsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHVpbnQ2NF90IGxvZ190aW1lc3RhbXAgPSBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKTsK
LSAgICAgICAgICAgIHN3aXRjaCAocnRjcF9ibG9jay50eXBlKCkpIHsKLSAgICAgICAgICAgICAg
Y2FzZSB3ZWJydGM6OnJ0Y3A6OlNlbmRlclJlcG9ydDo6a1BhY2tldFR5cGU6Ci0gICAgICAgICAg
ICAgICAgUHJpbnRTZW5kZXJSZXBvcnQocGFyc2VkX3N0cmVhbSwgcnRjcF9ibG9jaywgbG9nX3Rp
bWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6
UmVjZWl2ZXJSZXBvcnQ6OmtQYWNrZXRUeXBlOgotICAgICAgICAgICAgICAgIFByaW50UmVjZWl2
ZXJSZXBvcnQocGFyc2VkX3N0cmVhbSwgcnRjcF9ibG9jaywgbG9nX3RpbWVzdGFtcCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbik7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2Ugd2VicnRjOjpydGNwOjpTZGVzOjprUGFja2V0
VHlwZToKLSAgICAgICAgICAgICAgICBQcmludFNkZXMocnRjcF9ibG9jaywgbG9nX3RpbWVzdGFt
cCwgZGlyZWN0aW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2Fz
ZSB3ZWJydGM6OnJ0Y3A6OkV4dGVuZGVkUmVwb3J0czo6a1BhY2tldFR5cGU6Ci0gICAgICAgICAg
ICAgICAgUHJpbnRYcihwYXJzZWRfc3RyZWFtLCBydGNwX2Jsb2NrLCBsb2dfdGltZXN0YW1wLCBk
aXJlY3Rpb24pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIHdl
YnJ0Yzo6cnRjcDo6QnllOjprUGFja2V0VHlwZToKLSAgICAgICAgICAgICAgICBQcmludEJ5ZShw
YXJzZWRfc3RyZWFtLCBydGNwX2Jsb2NrLCBsb2dfdGltZXN0YW1wLCBkaXJlY3Rpb24pOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIHdlYnJ0Yzo6cnRjcDo6UnRw
ZmI6OmtQYWNrZXRUeXBlOgotICAgICAgICAgICAgICAgIFByaW50UnRwRmVlZGJhY2socGFyc2Vk
X3N0cmVhbSwgcnRjcF9ibG9jaywgbG9nX3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpcmVjdGlvbik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2Ugd2VicnRjOjpydGNwOjpQc2ZiOjprUGFja2V0VHlwZToKLSAgICAgICAgICAg
ICAgICBQcmludFBzRmVlZGJhY2socGFyc2VkX3N0cmVhbSwgcnRjcF9ibG9jaywgbG9nX3RpbWVz
dGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChGTEFHX3ByaW50X2Z1bGxf
cGFja2V0cykgewotICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0XHQiIDw8IHN0ZDo6aGV4
OwotICAgICAgICAgICAgICBjaGFyIHByZXZfZmlsbCA9IHN0ZDo6Y291dC5maWxsKCcwJyk7Ci0g
ICAgICAgICAgICAgIGZvciAoY29uc3QgdWludDhfdCogcCA9IG5leHRfYmxvY2s7IHAgPCBydGNw
X2Jsb2NrLk5leHRQYWNrZXQoKTsKLSAgICAgICAgICAgICAgICAgICBwKyspIHsKLSAgICAgICAg
ICAgICAgICBzdGQ6OmNvdXQgPDwgc3RkOjpzZXR3KDIpIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PigqcCk7Ci0gICAgICAgICAgICAgICAgcHRyZGlmZl90IGNoYXJzX3ByaW50ZWQgPSBwIC0gbmV4
dF9ibG9jazsKLSAgICAgICAgICAgICAgICBpZiAoY2hhcnNfcHJpbnRlZCAlIDQgPT0gMykKLSAg
ICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiICI7ICAvLyBTZXBhcmF0b3IgYmV0d2VlbiAz
Mi1iaXQgd29yZHMuCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgc3RkOjpjb3V0LmZp
bGwocHJldl9maWxsKTsKLSAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZGVjIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
ZXZlbnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAg
ICBjYXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QVVESU9fUExB
WU9VVF9FVkVOVDogewotICAgICAgICBpZiAoRkxBR19wbGF5b3V0KSB7Ci0gICAgICAgICAgYXV0
byBhdWRpb19wbGF5b3V0ID0gcGFyc2VkX3N0cmVhbS5HZXRBdWRpb1BsYXlvdXQoaSk7Ci0gICAg
ICAgICAgc3RkOjpjb3V0IDw8IGF1ZGlvX3BsYXlvdXQubG9nX3RpbWVfdXMoKSA8PCAiXHRBVURJ
T19QTEFZT1VUIgotICAgICAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgYXVkaW9fcGxh
eW91dC5zc3JjIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25p
emVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRj
OjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpMT1NTX0JBU0VEX0JXRV9VUERBVEU6
IHsKLSAgICAgICAgaWYgKEZMQUdfYndlKSB7Ci0gICAgICAgICAgYXV0byBid2VfdXBkYXRlID0g
cGFyc2VkX3N0cmVhbS5HZXRMb3NzQmFzZWRCd2VVcGRhdGUoaSk7Ci0gICAgICAgICAgc3RkOjpj
b3V0IDw8IGJ3ZV91cGRhdGUubG9nX3RpbWVfdXMoKSA8PCAiXHRCV0UoTE9TU19CQVNFRCkiCi0g
ICAgICAgICAgICAgICAgICAgIDw8ICJcdGJpdHJhdGVfYnBzPSIgPDwgYndlX3VwZGF0ZS5iaXRy
YXRlX2JwcwotICAgICAgICAgICAgICAgICAgICA8PCAiXHRmcmFjdGlvbl9sb3N0PSIKLSAgICAg
ICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ3ZV91cGRhdGUuZnJhY3Rp
b25fbG9zdCkKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0ZXhwZWN0ZWRfcGFja2V0cz0iIDw8
IGJ3ZV91cGRhdGUuZXhwZWN0ZWRfcGFja2V0cwotICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6
OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZXZlbnRfcmVjb2duaXplZCA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBjYXNlIHdlYnJ0Yzo6UGFyc2VkUnRjRXZlbnRM
b2dOZXc6OkV2ZW50VHlwZTo6REVMQVlfQkFTRURfQldFX1VQREFURTogewotICAgICAgICBpZiAo
RkxBR19id2UpIHsKLSAgICAgICAgICBhdXRvIGJ3ZV91cGRhdGUgPSBwYXJzZWRfc3RyZWFtLkdl
dERlbGF5QmFzZWRCd2VVcGRhdGUoaSk7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IGJ3ZV91cGRh
dGUubG9nX3RpbWVfdXMoKSA8PCAiXHRCV0UoREVMQVlfQkFTRUQpIgotICAgICAgICAgICAgICAg
ICAgICA8PCAiXHRiaXRyYXRlX2Jwcz0iIDw8IGJ3ZV91cGRhdGUuYml0cmF0ZV9icHMKLSAgICAg
ICAgICAgICAgICAgICAgPDwgIlx0ZGV0ZWN0b3Jfc3RhdGU9IgotICAgICAgICAgICAgICAgICAg
ICA8PCBzdGF0aWNfY2FzdDxpbnQ+KGJ3ZV91cGRhdGUuZGV0ZWN0b3Jfc3RhdGUpIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExv
Z05ldzo6RXZlbnRUeXBlOjoKLSAgICAgICAgICBWSURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6
IHsKLSAgICAgICAgaWYgKEZMQUdfY29uZmlnICYmIEZMQUdfdmlkZW8gJiYgRkxBR19pbmNvbWlu
ZykgewotICAgICAgICAgIHdlYnJ0Yzo6cnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnID0KLSAg
ICAgICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRWaWRlb1JlY2VpdmVDb25maWcoaSk7Ci0gICAg
ICAgICAgc3RkOjpjb3V0IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdFZJ
REVPX1JFQ1ZfQ09ORklHIgotICAgICAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgY29u
ZmlnLnJlbW90ZV9zc3JjCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdGZlZWRiYWNrX3NzcmM9
IiA8PCBjb25maWcubG9jYWxfc3NyYzsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0ZXh0ZW5z
aW9ucz17IjsKLSAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGV4dGVuc2lvbiA6IGNvbmZpZy5y
dHBfZXh0ZW5zaW9ucykgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8IGV4dGVuc2lvbi5Ub1N0
cmluZygpIDw8ICIsIjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8ICJ9IjsK
LSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0Y29kZWNzPXsiOwotICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgY29kZWMgOiBjb25maWcuY29kZWNzKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQg
PDwgIntuYW1lOiAiIDw8IGNvZGVjLnBheWxvYWRfbmFtZQotICAgICAgICAgICAgICAgICAgICAg
IDw8ICIsIHBheWxvYWRfdHlwZTogIiA8PCBjb2RlYy5wYXlsb2FkX3R5cGUKLSAgICAgICAgICAg
ICAgICAgICAgICA8PCAiLCBydHhfcGF5bG9hZF90eXBlOiAiIDw8IGNvZGVjLnJ0eF9wYXlsb2Fk
X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICA8PCAifSI7Ci0gICAgICAgICAgfQotICAgICAg
ICAgIHN0ZDo6Y291dCA8PCAifSIgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2
ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAg
Y2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlZJREVPX1NFTkRF
Ul9DT05GSUdfRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfY29uZmlnICYmIEZMQUdfdmlkZW8g
JiYgRkxBR19vdXRnb2luZykgewotICAgICAgICAgIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6cnRjbG9n
OjpTdHJlYW1Db25maWc+IGNvbmZpZ3MgPQotICAgICAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdl
dFZpZGVvU2VuZENvbmZpZyhpKTsKLSAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbmZpZyA6
IGNvbmZpZ3MpIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRp
bWVzdGFtcChpKSA8PCAiXHRWSURFT19TRU5EX0NPTkZJRyI7Ci0gICAgICAgICAgICBzdGQ6OmNv
dXQgPDwgIlx0c3NyY3M9IiA8PCBjb25maWcubG9jYWxfc3NyYzsKLSAgICAgICAgICAgIHN0ZDo6
Y291dCA8PCAiXHRydHhfc3NyY3M9IiA8PCBjb25maWcucnR4X3NzcmM7Ci0gICAgICAgICAgICBz
dGQ6OmNvdXQgPDwgIlx0ZXh0ZW5zaW9ucz17IjsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgZXh0ZW5zaW9uIDogY29uZmlnLnJ0cF9leHRlbnNpb25zKSB7Ci0gICAgICAgICAgICAgIHN0
ZDo6Y291dCA8PCBleHRlbnNpb24uVG9TdHJpbmcoKSA8PCAiLCI7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIn0iOwotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJc
dGNvZGVjcz17IjsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY29kZWMgOiBjb25maWcu
Y29kZWNzKSB7Ci0gICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAie25hbWU6ICIgPDwgY29kZWMu
cGF5bG9hZF9uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBwYXlsb2FkX3R5cGU6
ICIgPDwgY29kZWMucGF5bG9hZF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBy
dHhfcGF5bG9hZF90eXBlOiAiIDw8IGNvZGVjLnJ0eF9wYXlsb2FkX3R5cGUKLSAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICJ9IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0ZDo6Y291
dCA8PCAifSIgPDwgc3RkOjplbmRsOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBl
dmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAg
IGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjoKLSAgICAgICAg
ICBBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfY29uZmln
ICYmIEZMQUdfYXVkaW8gJiYgRkxBR19pbmNvbWluZykgewotICAgICAgICAgIHdlYnJ0Yzo6cnRj
bG9nOjpTdHJlYW1Db25maWcgY29uZmlnID0KLSAgICAgICAgICAgICAgcGFyc2VkX3N0cmVhbS5H
ZXRBdWRpb1JlY2VpdmVDb25maWcoaSk7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IHBhcnNlZF9z
dHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdEFVRElPX1JFQ1ZfQ09ORklHIgotICAgICAgICAg
ICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgY29uZmlnLnJlbW90ZV9zc3JjCi0gICAgICAgICAg
ICAgICAgICAgIDw8ICJcdGZlZWRiYWNrX3NzcmM9IiA8PCBjb25maWcubG9jYWxfc3NyYzsKLSAg
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0ZXh0ZW5zaW9ucz17IjsKLSAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGV4dGVuc2lvbiA6IGNvbmZpZy5ydHBfZXh0ZW5zaW9ucykgewotICAgICAgICAg
ICAgc3RkOjpjb3V0IDw8IGV4dGVuc2lvbi5Ub1N0cmluZygpIDw8ICIsIjsKLSAgICAgICAgICB9
Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8ICJ9IjsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0
Y29kZWNzPXsiOwotICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY29kZWMgOiBjb25maWcuY29k
ZWNzKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIntuYW1lOiAiIDw8IGNvZGVjLnBheWxv
YWRfbmFtZQotICAgICAgICAgICAgICAgICAgICAgIDw8ICIsIHBheWxvYWRfdHlwZTogIiA8PCBj
b2RlYy5wYXlsb2FkX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBydHhfcGF5bG9h
ZF90eXBlOiAiIDw8IGNvZGVjLnJ0eF9wYXlsb2FkX3R5cGUKLSAgICAgICAgICAgICAgICAgICAg
ICA8PCAifSI7Ci0gICAgICAgICAgfQotICAgICAgICAgIHN0ZDo6Y291dCA8PCAifSIgPDwgc3Rk
OjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpFdmVudFR5cGU6OkFVRElPX1NFTkRFUl9DT05GSUdfRVZFTlQ6IHsKLSAgICAgICAg
aWYgKEZMQUdfY29uZmlnICYmIEZMQUdfYXVkaW8gJiYgRkxBR19vdXRnb2luZykgewotICAgICAg
ICAgIHdlYnJ0Yzo6cnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnID0KLSAgICAgICAgICAgICAg
cGFyc2VkX3N0cmVhbS5HZXRBdWRpb1NlbmRDb25maWcoaSk7Ci0gICAgICAgICAgc3RkOjpjb3V0
IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0YW1wKGkpIDw8ICJcdEFVRElPX1NFTkRfQ09ORklH
IgotICAgICAgICAgICAgICAgICAgICA8PCAiXHRzc3JjPSIgPDwgY29uZmlnLmxvY2FsX3NzcmM7
Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8ICJcdGV4dGVuc2lvbnM9eyI7Ci0gICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBleHRlbnNpb24gOiBjb25maWcucnRwX2V4dGVuc2lvbnMpIHsKLSAgICAg
ICAgICAgIHN0ZDo6Y291dCA8PCBleHRlbnNpb24uVG9TdHJpbmcoKSA8PCAiLCI7Ci0gICAgICAg
ICAgfQotICAgICAgICAgIHN0ZDo6Y291dCA8PCAifSI7Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8
ICJcdGNvZGVjcz17IjsKLSAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvZGVjIDogY29uZmln
LmNvZGVjcykgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJ7bmFtZTogIiA8PCBjb2RlYy5w
YXlsb2FkX25hbWUKLSAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBwYXlsb2FkX3R5cGU6ICIg
PDwgY29kZWMucGF5bG9hZF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgPDwgIiwgcnR4X3Bh
eWxvYWRfdHlwZTogIiA8PCBjb2RlYy5ydHhfcGF5bG9hZF90eXBlCi0gICAgICAgICAgICAgICAg
ICAgICAgPDwgIn0iOwotICAgICAgICAgIH0KLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgIn0iIDw8
IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNF
dmVudExvZ05ldzo6RXZlbnRUeXBlOjoKLSAgICAgICAgICBBVURJT19ORVRXT1JLX0FEQVBUQVRJ
T05fRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfYW5hKSB7Ci0gICAgICAgICAgYXV0byBhbmFf
ZXZlbnQgPSBwYXJzZWRfc3RyZWFtLkdldEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oaSk7Ci0gICAg
ICAgICAgY2hhciBidWZmZXJbMzAwXTsKLSAgICAgICAgICBydGM6OlNpbXBsZVN0cmluZ0J1aWxk
ZXIgYnVpbGRlcihidWZmZXIpOwotICAgICAgICAgIGJ1aWxkZXIgPDwgcGFyc2VkX3N0cmVhbS5H
ZXRUaW1lc3RhbXAoaSkgPDwgIlx0QU5BX1VQREFURSI7Ci0gICAgICAgICAgaWYgKGFuYV9ldmVu
dC5jb25maWcuYml0cmF0ZV9icHMpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIgPDwgIlx0Yml0cmF0
ZV9icHM9IiA8PCAqYW5hX2V2ZW50LmNvbmZpZy5iaXRyYXRlX2JwczsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgaWYgKGFuYV9ldmVudC5jb25maWcuZnJhbWVfbGVuZ3RoX21zKSB7Ci0gICAgICAg
ICAgICBidWlsZGVyIDw8ICJcdGZyYW1lX2xlbmd0aF9tcz0iCi0gICAgICAgICAgICAgICAgICAg
IDw8ICphbmFfZXZlbnQuY29uZmlnLmZyYW1lX2xlbmd0aF9tczsKLSAgICAgICAgICB9Ci0gICAg
ICAgICAgaWYgKGFuYV9ldmVudC5jb25maWcudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKSB7
Ci0gICAgICAgICAgICBidWlsZGVyIDw8ICJcdHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbj0i
Ci0gICAgICAgICAgICAgICAgICAgIDw8ICphbmFfZXZlbnQuY29uZmlnLnVwbGlua19wYWNrZXRf
bG9zc19mcmFjdGlvbjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGFuYV9ldmVudC5jb25m
aWcuZW5hYmxlX2ZlYykgewotICAgICAgICAgICAgYnVpbGRlciA8PCAiXHRlbmFibGVfZmVjPSIg
PDwgKmFuYV9ldmVudC5jb25maWcuZW5hYmxlX2ZlYzsKLSAgICAgICAgICB9Ci0gICAgICAgICAg
aWYgKGFuYV9ldmVudC5jb25maWcuZW5hYmxlX2R0eCkgewotICAgICAgICAgICAgYnVpbGRlciA8
PCAiXHRlbmFibGVfZHR4PSIgPDwgKmFuYV9ldmVudC5jb25maWcuZW5hYmxlX2R0eDsKLSAgICAg
ICAgICB9Ci0gICAgICAgICAgaWYgKGFuYV9ldmVudC5jb25maWcubnVtX2NoYW5uZWxzKSB7Ci0g
ICAgICAgICAgICBidWlsZGVyIDw8ICJcdG51bV9jaGFubmVscz0iIDw8ICphbmFfZXZlbnQuY29u
ZmlnLm51bV9jaGFubmVsczsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IGJ1
aWxkZXIuc3RyKCkgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29n
bml6ZWQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJy
dGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OgotICAgICAgICAgIEJXRV9QUk9C
RV9DTFVTVEVSX0NSRUFURURfRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfcHJvYmUpIHsKLSAg
ICAgICAgICBhdXRvIHByb2JlX2V2ZW50ID0gcGFyc2VkX3N0cmVhbS5HZXRCd2VQcm9iZUNsdXN0
ZXJDcmVhdGVkKGkpOwotICAgICAgICAgIHN0ZDo6Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRp
bWVzdGFtcChpKSA8PCAiXHRQUk9CRV9DUkVBVEVEKCIKLSAgICAgICAgICAgICAgICAgICAgPDwg
cHJvYmVfZXZlbnQuaWQgPDwgIikiCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdGJpdHJhdGVf
YnBzPSIgPDwgcHJvYmVfZXZlbnQuYml0cmF0ZV9icHMKLSAgICAgICAgICAgICAgICAgICAgPDwg
Ilx0bWluX3BhY2tldHM9IiA8PCBwcm9iZV9ldmVudC5taW5fcGFja2V0cwotICAgICAgICAgICAg
ICAgICAgICA8PCAiXHRtaW5fYnl0ZXM9IiA8PCBwcm9iZV9ldmVudC5taW5fYnl0ZXMgPDwgc3Rk
OjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9GQUlMVVJFX0VWRU5UOiB7Ci0gICAgICAgIGlm
IChGTEFHX3Byb2JlKSB7Ci0gICAgICAgICAgd2VicnRjOjpMb2dnZWRCd2VQcm9iZUZhaWx1cmVF
dmVudCBwcm9iZV9yZXN1bHQgPQotICAgICAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldEJ3ZVBy
b2JlRmFpbHVyZShpKTsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgcGFyc2VkX3N0cmVhbS5HZXRU
aW1lc3RhbXAoaSkgPDwgIlx0UFJPQkVfRkFJTFVSRSgiCi0gICAgICAgICAgICAgICAgICAgIDw8
IHByb2JlX3Jlc3VsdC5pZCA8PCAiKSIKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0ZmFpbHVy
ZV9yZWFzb249IgotICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KHByb2Jl
X3Jlc3VsdC5mYWlsdXJlX3JlYXNvbikKLSAgICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRs
OwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9TVUNDRVNTX0VWRU5UOiB7Ci0gICAgICAgIGlmIChGTEFH
X3Byb2JlKSB7Ci0gICAgICAgICAgd2VicnRjOjpMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCBw
cm9iZV9yZXN1bHQgPQotICAgICAgICAgICAgICBwYXJzZWRfc3RyZWFtLkdldEJ3ZVByb2JlU3Vj
Y2VzcyhpKTsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgcGFyc2VkX3N0cmVhbS5HZXRUaW1lc3Rh
bXAoaSkgPDwgIlx0UFJPQkVfU1VDQ0VTUygiCi0gICAgICAgICAgICAgICAgICAgIDw8IHByb2Jl
X3Jlc3VsdC5pZCA8PCAiKSIKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0Yml0cmF0ZV9icHM9
IiA8PCBwcm9iZV9yZXN1bHQuYml0cmF0ZV9icHMKLSAgICAgICAgICAgICAgICAgICAgPDwgc3Rk
OjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIGV2ZW50X3JlY29nbml6ZWQgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgY2FzZSB3ZWJydGM6OlBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpFdmVudFR5cGU6OkFMUl9TVEFURV9FVkVOVDogewotICAgICAgICBpZiAoRkxBR19i
d2UpIHsKLSAgICAgICAgICB3ZWJydGM6OkxvZ2dlZEFsclN0YXRlRXZlbnQgYWxyX3N0YXRlID0g
cGFyc2VkX3N0cmVhbS5HZXRBbHJTdGF0ZShpKTsKLSAgICAgICAgICBzdGQ6OmNvdXQgPDwgcGFy
c2VkX3N0cmVhbS5HZXRUaW1lc3RhbXAoaSkgPDwgIlx0QUxSX1NUQVRFIgotICAgICAgICAgICAg
ICAgICAgICA8PCAiXHRpbl9hbHI9IiA8PCBhbHJfc3RhdGUuaW5fYWxyIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ugd2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6
RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRFX1BBSVJfQ09ORklHOiB7Ci0gICAgICAgIGlmIChGTEFH
X2ljZSkgewotICAgICAgICAgIHdlYnJ0Yzo6TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyBp
Y2VfY3BfY29uZmlnID0KLSAgICAgICAgICAgICAgcGFyc2VkX3N0cmVhbS5HZXRJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnKGkpOwotICAgICAgICAgIC8vIFRPRE8ocWluZ3NpKTogY29udmVydCB0aGUg
bnVtZXJpYyByZXByZXNlbnRhdGlvbiBvZiBzdGF0ZXMgdG8gdGV4dAotICAgICAgICAgIHN0ZDo6
Y291dCA8PCBwYXJzZWRfc3RyZWFtLkdldFRpbWVzdGFtcChpKQotICAgICAgICAgICAgICAgICAg
ICA8PCAiXHRJQ0VfQ0FORElEQVRFX1BBSVJfQ09ORklHIgotICAgICAgICAgICAgICAgICAgICA8
PCAiXHR0eXBlPSIgPDwgc3RhdGljX2Nhc3Q8aW50PihpY2VfY3BfY29uZmlnLnR5cGUpCi0gICAg
ICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBldmVudF9y
ZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGNhc2Ug
d2VicnRjOjpQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRFX1BB
SVJfRVZFTlQ6IHsKLSAgICAgICAgaWYgKEZMQUdfaWNlKSB7Ci0gICAgICAgICAgd2VicnRjOjpM
b2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQgaWNlX2NwX2V2ZW50ID0KLSAgICAgICAgICAgICAg
cGFyc2VkX3N0cmVhbS5HZXRJY2VDYW5kaWRhdGVQYWlyRXZlbnQoaSk7Ci0gICAgICAgICAgLy8g
VE9ETyhxaW5nc2kpOiBjb252ZXJ0IHRoZSBudW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIHN0YXRl
cyB0byB0ZXh0Ci0gICAgICAgICAgc3RkOjpjb3V0IDw8IHBhcnNlZF9zdHJlYW0uR2V0VGltZXN0
YW1wKGkpCi0gICAgICAgICAgICAgICAgICAgIDw8ICJcdElDRV9DQU5ESURBVEVfUEFJUl9FVkVO
VCIKLSAgICAgICAgICAgICAgICAgICAgPDwgIlx0dHlwZT0iIDw8IHN0YXRpY19jYXN0PGludD4o
aWNlX2NwX2V2ZW50LnR5cGUpCi0gICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAg
ICAgICAgfQotICAgICAgICBldmVudF9yZWNvZ25pemVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFldmVudF9yZWNvZ25pemVkKSB7Ci0gICAgICBz
dGQ6OmNvdXQgPDwgIlVucmVjb2duaXplZCBldmVudCAoIgotICAgICAgICAgICAgICAgIDw8IHN0
YXRpY19jYXN0PGludD4ocGFyc2VkX3N0cmVhbS5HZXRFdmVudFR5cGUoaSkpIDw8ICIpIgotICAg
ICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIDA7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dn
aW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVu
dF9sb2dfaW1wbC5jYwppbmRleCA1NTRhMDI4M2ZkNmY5NzM3YWEwNGUyZTJhODRmMWQ4ODg4NDQy
MTQ2Li5jMDIyYTNkNDE4NWNmMTQzYjk0ZTBlMjgxYmM2ZmU3MjVjZWUzNjcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvcnRjX2V2ZW50X2xvZ19pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9n
X2ltcGwuY2MKQEAgLTE4LDggKzE4LDkgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRl
ICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvcnRjZXZlbnRsb2dvdXRwdXQu
aCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZW5jb2Rlci9ydGNfZXZlbnRfbG9n
X2VuY29kZXJfbGVnYWN5LmgiCi0jaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL291dHB1
dC9ydGNfZXZlbnRfbG9nX291dHB1dF9maWxlLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50X2xvZ19lbmNvZGVyX25ld19mb3JtYXQuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKQEAgLTY0LDcgKzY1LDExIEBAIHN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZ0VuY29kZXI+IENyZWF0ZUVuY29kZXIoCiAgICAgUnRj
RXZlbnRMb2c6OkVuY29kaW5nVHlwZSB0eXBlKSB7CiAgIHN3aXRjaCAodHlwZSkgewogICAgIGNh
c2UgUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TGVnYWN5OgorICAgICAgUlRDX0xPRyhMU19J
TkZPKSA8PCAiQ3JlYXRpbmcgbGVnYWN5IGVuY29kZXIgZm9yIFJUQyBldmVudCBsb2cuIjsKICAg
ICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudExvZ0VuY29kZXJMZWdhY3k+KCk7
CisgICAgY2FzZSBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpOZXdGb3JtYXQ6CisgICAgICBS
VENfTE9HKExTX0lORk8pIDw8ICJDcmVhdGluZyBuZXcgZm9ybWF0IGVuY29kZXIgZm9yIFJUQyBl
dmVudCBsb2cuIjsKKyAgICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxSdGNFdmVudExvZ0Vu
Y29kZXJOZXdGb3JtYXQ+KCk7CiAgICAgZGVmYXVsdDoKICAgICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJVbmtub3duIFJ0Y0V2ZW50TG9nIGVuY29kZXIgdHlwZSAoIiA8PCBpbnQodHlwZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8ICIpIjsKQEAgLTE2OCwyMCArMTczLDE5IEBAIGJvb2wg
UnRjRXZlbnRMb2dJbXBsOjpTdGFydExvZ2dpbmcoc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9n
T3V0cHV0PiBvdXRwdXQsCiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKLSAgLy8gVE9ETyh0ZXJl
bGl1cyk6IFRoZSBtYXBwaW5nIGJldHdlZW4gbG9nIHRpbWVzdGFtcHMgYW5kIFVUQyBzaG91bGQg
YmUgc3RvcmVkCi0gIC8vIGluIHRoZSBldmVudF9sb2cgU1RBUlQgZXZlbnQuCiAgIGNvbnN0IGlu
dDY0X3QgdGltZXN0YW1wX3VzID0gcnRjOjpUaW1lTWljcm9zKCk7CiAgIGNvbnN0IGludDY0X3Qg
dXRjX3RpbWVfdXMgPSBydGM6OlRpbWVVVENNaWNyb3MoKTsKICAgUlRDX0xPRyhMU19JTkZPKSA8
PCAiU3RhcnRpbmcgV2ViUlRDIGV2ZW50IGxvZy4gKFRpbWVzdGFtcCwgVVRDKSA9ICIKICAgICAg
ICAgICAgICAgICAgICA8PCAiKCIgPDwgdGltZXN0YW1wX3VzIDw8ICIsICIgPDwgdXRjX3RpbWVf
dXMgPDwgIikuIjsKIAogICAvLyBCaW5kaW5nIHRvIHx0aGlzfCBpcyBzYWZlIGJlY2F1c2UgfHRo
aXN8IG91dGxpdmVzIHRoZSB8dGFza19xdWV1ZV98LgotICBhdXRvIHN0YXJ0ID0gW3RoaXMsIHRp
bWVzdGFtcF91c10oc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nT3V0cHV0PiBvdXRwdXQpIHsK
KyAgYXV0byBzdGFydCA9IFt0aGlzLCB0aW1lc3RhbXBfdXMsCisgICAgICAgICAgICAgICAgdXRj
X3RpbWVfdXNdKHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZ091dHB1dD4gb3V0cHV0KSB7CiAg
ICAgUlRDX0RDSEVDS19SVU5fT04odGFza19xdWV1ZV8uZ2V0KCkpOwogICAgIFJUQ19EQ0hFQ0so
b3V0cHV0LT5Jc0FjdGl2ZSgpKTsKICAgICBldmVudF9vdXRwdXRfID0gc3RkOjptb3ZlKG91dHB1
dCk7CiAgICAgbnVtX2NvbmZpZ19ldmVudHNfd3JpdHRlbl8gPSAwOwotICAgIFdyaXRlVG9PdXRw
dXQoZXZlbnRfZW5jb2Rlcl8tPkVuY29kZUxvZ1N0YXJ0KHRpbWVzdGFtcF91cykpOworICAgIFdy
aXRlVG9PdXRwdXQoZXZlbnRfZW5jb2Rlcl8tPkVuY29kZUxvZ1N0YXJ0KHRpbWVzdGFtcF91cywg
dXRjX3RpbWVfdXMpKTsKICAgICBMb2dFdmVudHNGcm9tTWVtb3J5VG9PdXRwdXQoKTsKICAgfTsK
IApAQCAtMTk3LDcgKzIwMSw3IEBAIHZvaWQgUnRjRXZlbnRMb2dJbXBsOjpTdG9wTG9nZ2luZygp
IHsKIAogICBSVENfTE9HKExTX0lORk8pIDw8ICJTdG9wcGluZyBXZWJSVEMgZXZlbnQgbG9nLiI7
CiAKLSAgcnRjOjpFdmVudCBvdXRwdXRfc3RvcHBlZCh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZl
bnQgb3V0cHV0X3N0b3BwZWQ7CiAKICAgLy8gQmluZGluZyB0byB8dGhpc3wgaXMgc2FmZSBiZWNh
dXNlIHx0aGlzfCBvdXRsaXZlcyB0aGUgfHRhc2tfcXVldWVffC4KICAgdGFza19xdWV1ZV8tPlBv
c3RUYXNrKFt0aGlzLCAmb3V0cHV0X3N0b3BwZWRdKCkgewpAQCAtMzcyLDggKzM3Niw0IEBAIHN0
ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZz4gUnRjRXZlbnRMb2c6OkNyZWF0ZSgKICNlbmRpZiAg
Ly8gRU5BQkxFX1JUQ19FVkVOVF9MT0cKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9n
PiBSdGNFdmVudExvZzo6Q3JlYXRlTnVsbCgpIHsKLSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxS
dGNFdmVudExvZz4obmV3IFJ0Y0V2ZW50TG9nTnVsbEltcGwoKSk7Ci19Ci0KIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODAyYWYxODlhYWQ1OTI3MDY2OGY1N2MzMzVkMjJjMzFkNDZiMzVlZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xv
Z19wYXJzZXIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw4NTEgKzAsMCBAQAotLyoKLSAqICBDb3B5
cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgotICovCi0KLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xv
Z19wYXJzZXIuaCIKLQotI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgot
Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGZzdHJlYW0+Ci0jaW5jbHVkZSA8aXN0
cmVhbT4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotI2luY2x1ZGUgImxv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19h
ZGFwdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5j
bHVkZS9id2VfZGVmaW5lcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9y
dHBfcnRjcF9kZWZpbmVzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Byb3RvYnVmX3V0aWxz
LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1uYW1lc3BhY2UgewotUnRjcE1vZGUgR2V0UnVu
dGltZVJ0Y3BNb2RlKHJ0Y2xvZzo6VmlkZW9SZWNlaXZlQ29uZmlnOjpSdGNwTW9kZSBydGNwX21v
ZGUpIHsKLSAgc3dpdGNoIChydGNwX21vZGUpIHsKLSAgICBjYXNlIHJ0Y2xvZzo6VmlkZW9SZWNl
aXZlQ29uZmlnOjpSVENQX0NPTVBPVU5EOgotICAgICAgcmV0dXJuIFJ0Y3BNb2RlOjprQ29tcG91
bmQ7Ci0gICAgY2FzZSBydGNsb2c6OlZpZGVvUmVjZWl2ZUNvbmZpZzo6UlRDUF9SRURVQ0VEU0la
RToKLSAgICAgIHJldHVybiBSdGNwTW9kZTo6a1JlZHVjZWRTaXplOwotICB9Ci0gIFJUQ19OT1RS
RUFDSEVEKCk7Ci0gIHJldHVybiBSdGNwTW9kZTo6a09mZjsKLX0KLQotUGFyc2VkUnRjRXZlbnRM
b2c6OkV2ZW50VHlwZSBHZXRSdW50aW1lRXZlbnRUeXBlKAotICAgIHJ0Y2xvZzo6RXZlbnQ6OkV2
ZW50VHlwZSBldmVudF90eXBlKSB7Ci0gIHN3aXRjaCAoZXZlbnRfdHlwZSkgewotICAgIGNhc2Ug
cnRjbG9nOjpFdmVudDo6VU5LTk9XTl9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVu
dExvZzo6RXZlbnRUeXBlOjpVTktOT1dOX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6
TE9HX1NUQVJUOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OkxP
R19TVEFSVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkxPR19FTkQ6Ci0gICAgICByZXR1cm4g
UGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6TE9HX0VORDsKLSAgICBjYXNlIHJ0Y2xvZzo6
RXZlbnQ6OlJUUF9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRU
eXBlOjpSVFBfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpSVENQX0VWRU5UOgotICAg
ICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OlJUQ1BfRVZFTlQ7Ci0gICAg
Y2FzZSBydGNsb2c6OkV2ZW50OjpBVURJT19QTEFZT1VUX0VWRU5UOgotICAgICAgcmV0dXJuIFBh
cnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OkFVRElPX1BMQVlPVVRfRVZFTlQ7Ci0gICAgY2Fz
ZSBydGNsb2c6OkV2ZW50OjpMT1NTX0JBU0VEX0JXRV9VUERBVEU6Ci0gICAgICByZXR1cm4gUGFy
c2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6TE9TU19CQVNFRF9CV0VfVVBEQVRFOwotICAgIGNh
c2UgcnRjbG9nOjpFdmVudDo6REVMQVlfQkFTRURfQldFX1VQREFURToKLSAgICAgIHJldHVybiBQ
YXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpERUxBWV9CQVNFRF9CV0VfVVBEQVRFOwotICAg
IGNhc2UgcnRjbG9nOjpFdmVudDo6VklERU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UOgotICAgICAg
cmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OlZJREVPX1JFQ0VJVkVSX0NPTkZJ
R19FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZF
TlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6VklERU9fU0VO
REVSX0NPTkZJR19FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1JFQ0VJVkVS
X0NPTkZJR19FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBl
OjpBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpB
VURJT19TRU5ERVJfQ09ORklHX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9n
OjpFdmVudFR5cGU6OkFVRElPX1NFTkRFUl9DT05GSUdfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6
OkV2ZW50OjpBVURJT19ORVRXT1JLX0FEQVBUQVRJT05fRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFy
c2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6QVVESU9fTkVUV09SS19BREFQVEFUSU9OX0VWRU5U
OwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QldFX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9FVkVO
VDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlOjpCV0VfUFJPQkVf
Q0xVU1RFUl9DUkVBVEVEX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QldFX1BST0JF
X1JFU1VMVF9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBl
OjpCV0VfUFJPQkVfUkVTVUxUX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QUxSX1NU
QVRFX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nOjpFdmVudFR5cGU6OkFM
Ul9TVEFURV9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJ
Ul9DT05GSUc6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2c6OkV2ZW50VHlwZTo6SUNF
X0NBTkRJREFURV9QQUlSX0NPTkZJRzsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OklDRV9DQU5E
SURBVEVfUEFJUl9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZzo6RXZlbnRU
eXBlOjpJQ0VfQ0FORElEQVRFX1BBSVJfRVZFTlQ7Ci0gIH0KLSAgcmV0dXJuIFBhcnNlZFJ0Y0V2
ZW50TG9nOjpFdmVudFR5cGU6OlVOS05PV05fRVZFTlQ7Ci19Ci0KLUJhbmR3aWR0aFVzYWdlIEdl
dFJ1bnRpbWVEZXRlY3RvclN0YXRlKAotICAgIHJ0Y2xvZzo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZTo6
RGV0ZWN0b3JTdGF0ZSBkZXRlY3Rvcl9zdGF0ZSkgewotICBzd2l0Y2ggKGRldGVjdG9yX3N0YXRl
KSB7Ci0gICAgY2FzZSBydGNsb2c6OkRlbGF5QmFzZWRCd2VVcGRhdGU6OkJXRV9OT1JNQUw6Ci0g
ICAgICByZXR1cm4gQmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1hbDsKLSAgICBjYXNlIHJ0Y2xvZzo6
RGVsYXlCYXNlZEJ3ZVVwZGF0ZTo6QldFX1VOREVSVVNJTkc6Ci0gICAgICByZXR1cm4gQmFuZHdp
ZHRoVXNhZ2U6OmtCd1VuZGVydXNpbmc7Ci0gICAgY2FzZSBydGNsb2c6OkRlbGF5QmFzZWRCd2VV
cGRhdGU6OkJXRV9PVkVSVVNJTkc6Ci0gICAgICByZXR1cm4gQmFuZHdpZHRoVXNhZ2U6OmtCd092
ZXJ1c2luZzsKLSAgfQotICBSVENfTk9UUkVBQ0hFRCgpOwotICByZXR1cm4gQmFuZHdpZHRoVXNh
Z2U6OmtCd05vcm1hbDsKLX0KLQotSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgR2V0UnVudGlt
ZUljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlKAotICAgIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgdHlwZSkgewotICBzd2l0Y2ggKHR5
cGUpIHsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6QURERUQ6Ci0g
ICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGU6OmtBZGRlZDsKLSAgICBjYXNl
IHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VVBEQVRFRDoKLSAgICAgIHJldHVybiBJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a1VwZGF0ZWQ7Ci0gICAgY2FzZSBydGNsb2c6Oklj
ZUNhbmRpZGF0ZVBhaXJDb25maWc6OkRFU1RST1lFRDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnVHlwZTo6a0Rlc3Ryb3llZDsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlk
YXRlUGFpckNvbmZpZzo6U0VMRUNURUQ6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckNv
bmZpZ1R5cGU6OmtTZWxlY3RlZDsKLSAgfQotICBSVENfTk9UUkVBQ0hFRCgpOwotICByZXR1cm4g
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGU6OmtBZGRlZDsKLX0KLQotSWNlQ2FuZGlkYXRlVHlw
ZSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlVHlwZSgKLSAgICBydGNsb2c6OkljZUNhbmRpZGF0ZVBh
aXJDb25maWc6OkljZUNhbmRpZGF0ZVR5cGUgdHlwZSkgewotICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6TE9DQUw6Ci0gICAgICByZXR1
cm4gSWNlQ2FuZGlkYXRlVHlwZTo6a0xvY2FsOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnOjpTVFVOOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVR5cGU6OmtTdHVu
OwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpQUkZMWDoKLSAgICAg
IHJldHVybiBJY2VDYW5kaWRhdGVUeXBlOjprUHJmbHg7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNh
bmRpZGF0ZVBhaXJDb25maWc6OlJFTEFZOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVR5cGU6
OmtSZWxheTsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9X
Tl9DQU5ESURBVEVfVFlQRToKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVUeXBlOjprVW5rbm93
bjsKLSAgfQotICBSVENfTk9UUkVBQ0hFRCgpOwotICByZXR1cm4gSWNlQ2FuZGlkYXRlVHlwZTo6
a1Vua25vd247Ci19Ci0KLUljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbCBHZXRSdW50aW1lSWNlQ2Fu
ZGlkYXRlUGFpclByb3RvY29sKAotICAgIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6
UHJvdG9jb2wgcHJvdG9jb2wpIHsKLSAgc3dpdGNoIChwcm90b2NvbCkgewotICAgIGNhc2UgcnRj
bG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVRFA6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlk
YXRlUGFpclByb3RvY29sOjprVWRwOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWly
Q29uZmlnOjpUQ1A6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprVGNw
OwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpTU0xUQ1A6Ci0gICAg
ICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprU3NsdGNwOwotICAgIGNhc2UgcnRj
bG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpUTFM6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlk
YXRlUGFpclByb3RvY29sOjprVGxzOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWly
Q29uZmlnOjpVTktOT1dOX1BST1RPQ09MOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJQ
cm90b2NvbDo6a1Vua25vd247Ci0gIH0KLSAgUlRDX05PVFJFQUNIRUQoKTsKLSAgcmV0dXJuIElj
ZUNhbmRpZGF0ZVBhaXJQcm90b2NvbDo6a1Vua25vd247Ci19Ci0KLUljZUNhbmRpZGF0ZVBhaXJB
ZGRyZXNzRmFtaWx5IEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseSgKLSAg
ICBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkFkZHJlc3NGYW1pbHkgYWRkcmVzc19m
YW1pbHkpIHsKLSAgc3dpdGNoIChhZGRyZXNzX2ZhbWlseSkgewotICAgIGNhc2UgcnRjbG9nOjpJ
Y2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJUFY0OgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBh
aXJBZGRyZXNzRmFtaWx5OjprSXB2NDsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZzo6SVBWNjoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWls
eTo6a0lwdjY7Ci0gICAgY2FzZSBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05P
V05fQUREUkVTU19GQU1JTFk6Ci0gICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NG
YW1pbHk6OmtVbmtub3duOwotICB9Ci0gIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIHJldHVybiBJY2VD
YW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6a1Vua25vd247Ci19Ci0KLUljZUNhbmRpZGF0ZU5l
dHdvcmtUeXBlIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZSgKLSAgICBydGNsb2c6
OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6Ok5ldHdvcmtUeXBlIG5ldHdvcmtfdHlwZSkgewotICBz
d2l0Y2ggKG5ldHdvcmtfdHlwZSkgewotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWly
Q29uZmlnOjpFVEhFUk5FVDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6
a0V0aGVybmV0OwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpMT09Q
QkFDSzoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a0xvb3BiYWNrOwot
ICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpXSUZJOgotICAgICAgcmV0
dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprV2lmaTsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNl
Q2FuZGlkYXRlUGFpckNvbmZpZzo6VlBOOgotICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdv
cmtUeXBlOjprVnBuOwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpD
RUxMVUxBUjoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a0NlbGx1bGFy
OwotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX05FVFdP
UktfVFlQRToKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a1Vua25vd247
Ci0gIH0KLSAgUlRDX05PVFJFQUNIRUQoKTsKLSAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtU
eXBlOjprVW5rbm93bjsKLX0KLQotSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSBHZXRSdW50aW1l
SWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSgKLSAgICBydGNsb2c6OkljZUNhbmRpZGF0ZVBhaXJF
dmVudDo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZSB0eXBlKSB7Ci0gIHN3aXRjaCAodHlwZSkg
ewotICAgIGNhc2UgcnRjbG9nOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6OkNIRUNLX1NFTlQ6Ci0g
ICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0NoZWNrU2VudDsKLSAgICBj
YXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpDSEVDS19SRUNFSVZFRDoKLSAgICAg
IHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tSZWNlaXZlZDsKLSAgICBj
YXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpDSEVDS19SRVNQT05TRV9TRU5UOgot
ICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGU6OmtDaGVja1Jlc3BvbnNlU2Vu
dDsKLSAgICBjYXNlIHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpDSEVDS19SRVNQT05T
RV9SRUNFSVZFRDoKLSAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hl
Y2tSZXNwb25zZVJlY2VpdmVkOwotICB9Ci0gIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIHJldHVybiBJ
Y2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tTZW50OwotfQotCi1zdGQ6OnBhaXI8dWlu
dDY0X3QsIGJvb2w+IFBhcnNlVmFySW50KHN0ZDo6aXN0cmVhbSYgc3RyZWFtKSB7Ci0gIHVpbnQ2
NF90IHZhcmludCA9IDA7Ci0gIGZvciAoc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOyBieXRlc19yZWFk
IDwgMTA7ICsrYnl0ZXNfcmVhZCkgewotICAgIC8vIFRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBv
ZiBlYWNoIGJ5dGUgaXMgMCBpZiBpdCBpcyB0aGUgbGFzdCBieXRlIGluCi0gICAgLy8gdGhlIHZh
cmludCBhbmQgMSBvdGhlcndpc2UuIFRodXMsIHdlIHRha2UgdGhlIDcgbGVhc3Qgc2lnbmlmaWNh
bnQgYml0cwotICAgIC8vIG9mIGVhY2ggYnl0ZSBhbmQgc2hpZnQgdGhlbSA3IGJpdHMgZm9yIGVh
Y2ggYnl0ZSByZWFkIHByZXZpb3VzbHkgdG8gZ2V0Ci0gICAgLy8gdGhlICh1bnNpZ25lZCkgaW50
ZWdlci4KLSAgICBpbnQgYnl0ZSA9IHN0cmVhbS5nZXQoKTsKLSAgICBpZiAoc3RyZWFtLmVvZigp
KSB7Ci0gICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodmFyaW50LCBmYWxzZSk7Ci0gICAgfQot
ICAgIFJUQ19EQ0hFQ0tfR0UoYnl0ZSwgMCk7Ci0gICAgUlRDX0RDSEVDS19MRShieXRlLCAyNTUp
OwotICAgIHZhcmludCB8PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnl0ZSAmIDB4N0YpIDw8ICg3
ICogYnl0ZXNfcmVhZCk7Ci0gICAgaWYgKChieXRlICYgMHg4MCkgPT0gMCkgewotICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKHZhcmludCwgdHJ1ZSk7Ci0gICAgfQotICB9Ci0gIHJldHVybiBz
dGQ6Om1ha2VfcGFpcih2YXJpbnQsIGZhbHNlKTsKLX0KLQotdm9pZCBHZXRIZWFkZXJFeHRlbnNp
b25zKHN0ZDo6dmVjdG9yPFJ0cEV4dGVuc2lvbj4qIGhlYWRlcl9leHRlbnNpb25zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlcGVhdGVkUHRyRmllbGQ8cnRjbG9nOjpSdHBIZWFk
ZXJFeHRlbnNpb24+JgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b19oZWFkZXJf
ZXh0ZW5zaW9ucykgewotICBoZWFkZXJfZXh0ZW5zaW9ucy0+Y2xlYXIoKTsKLSAgZm9yIChhdXRv
JiBwIDogcHJvdG9faGVhZGVyX2V4dGVuc2lvbnMpIHsKLSAgICBSVENfQ0hFQ0socC5oYXNfbmFt
ZSgpKTsKLSAgICBSVENfQ0hFQ0socC5oYXNfaWQoKSk7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcm
IG5hbWUgPSBwLm5hbWUoKTsKLSAgICBpbnQgaWQgPSBwLmlkKCk7Ci0gICAgaGVhZGVyX2V4dGVu
c2lvbnMtPnB1c2hfYmFjayhSdHBFeHRlbnNpb24obmFtZSwgaWQpKTsKLSAgfQotfQotCi19ICAv
LyBuYW1lc3BhY2UKLQotUGFyc2VkUnRjRXZlbnRMb2c6OlBhcnNlZFJ0Y0V2ZW50TG9nKCkgPSBk
ZWZhdWx0OwotUGFyc2VkUnRjRXZlbnRMb2c6On5QYXJzZWRSdGNFdmVudExvZygpID0gZGVmYXVs
dDsKLQotUGFyc2VkUnRjRXZlbnRMb2c6OkJ3ZVByb2JlUmVzdWx0RXZlbnQ6OkJ3ZVByb2JlUmVz
dWx0RXZlbnQoKSA9IGRlZmF1bHQ7Ci1QYXJzZWRSdGNFdmVudExvZzo6QndlUHJvYmVSZXN1bHRF
dmVudDo6QndlUHJvYmVSZXN1bHRFdmVudCgKLSAgICBjb25zdCBCd2VQcm9iZVJlc3VsdEV2ZW50
JikgPSBkZWZhdWx0OwotCi1ib29sIFBhcnNlZFJ0Y0V2ZW50TG9nOjpQYXJzZUZpbGUoY29uc3Qg
c3RkOjpzdHJpbmcmIGZpbGVuYW1lKSB7Ci0gIHN0ZDo6aWZzdHJlYW0gZmlsZShmaWxlbmFtZSwg
c3RkOjppb3NfYmFzZTo6aW4gfCBzdGQ6Omlvc19iYXNlOjpiaW5hcnkpOwotICBpZiAoIWZpbGUu
Z29vZCgpIHx8ICFmaWxlLmlzX29wZW4oKSkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwg
IkNvdWxkIG5vdCBvcGVuIGZpbGUgZm9yIHJlYWRpbmcuIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0g
IH0KLQotICByZXR1cm4gUGFyc2VTdHJlYW0oZmlsZSk7Ci19Ci0KLWJvb2wgUGFyc2VkUnRjRXZl
bnRMb2c6OlBhcnNlU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSB7Ci0gIHN0ZDo6aXN0cmlu
Z3N0cmVhbSBzdHJlYW0ocywgc3RkOjppb3NfYmFzZTo6aW4gfCBzdGQ6Omlvc19iYXNlOjpiaW5h
cnkpOwotICByZXR1cm4gUGFyc2VTdHJlYW0oc3RyZWFtKTsKLX0KLQotYm9vbCBQYXJzZWRSdGNF
dmVudExvZzo6UGFyc2VTdHJlYW0oc3RkOjppc3RyZWFtJiBzdHJlYW0pIHsKLSAgZXZlbnRzXy5j
bGVhcigpOwotICBjb25zdCBzaXplX3Qga01heEV2ZW50U2l6ZSA9ICgxdSA8PCAxNikgLSAxOwot
ICBzdGQ6OnZlY3RvcjxjaGFyPiB0bXBfYnVmZmVyKGtNYXhFdmVudFNpemUpOwotICB1aW50NjRf
dCB0YWc7Ci0gIHVpbnQ2NF90IG1lc3NhZ2VfbGVuZ3RoOwotICBib29sIHN1Y2Nlc3M7Ci0KLSAg
UlRDX0RDSEVDSyhzdHJlYW0uZ29vZCgpKTsKLQotICB3aGlsZSAoMSkgewotICAgIC8vIENoZWNr
IHdoZXRoZXIgd2UgaGF2ZSByZWFjaGVkIGVuZCBvZiBmaWxlLgotICAgIHN0cmVhbS5wZWVrKCk7
Ci0gICAgaWYgKHN0cmVhbS5lb2YoKSkgewotICAgICAgLy8gUHJvY2VzcyBhbGwgZXh0ZW5zaW9u
cyBtYXBzIGZvciBmYXN0ZXIgbG9vay11cCBsYXRlci4KLSAgICAgIGZvciAoYXV0byYgZXZlbnRf
c3RyZWFtIDogc3RyZWFtc18pIHsKLSAgICAgICAgcnRwX2V4dGVuc2lvbnNfbWFwc19bU3RyZWFt
SWQoZXZlbnRfc3RyZWFtLnNzcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50X3N0cmVhbS5kaXJlY3Rpb24pXSA9Ci0gICAgICAgICAgICAmZXZlbnRfc3RyZWFt
LnJ0cF9leHRlbnNpb25zX21hcDsKLSAgICAgIH0KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIC8vIFJlYWQgdGhlIG5leHQgbWVzc2FnZSB0YWcuIFRoZSB0YWcgbnVtYmVyIGlzIGRl
ZmluZWQgYXMKLSAgICAvLyAoZmllbGRudW1iZXIgPDwgMykgfCB3aXJlX3R5cGUuIEluIG91ciBj
YXNlLCB0aGUgZmllbGQgbnVtYmVyIGlzCi0gICAgLy8gc3VwcG9zZWQgdG8gYmUgMSBhbmQgdGhl
IHdpcmUgdHlwZSBmb3IgYW4KLSAgICAvLyBsZW5ndGgtZGVsaW1pdGVkIGZpZWxkIGlzIDIuCi0g
ICAgY29uc3QgdWludDY0X3Qga0V4cGVjdGVkVGFnID0gKDEgPDwgMykgfCAyOwotICAgIHN0ZDo6
dGllKHRhZywgc3VjY2VzcykgPSBQYXJzZVZhckludChzdHJlYW0pOwotICAgIGlmICghc3VjY2Vz
cykgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQotICAgICAgICAgIDw8ICJNaXNzaW5nIGZp
ZWxkIHRhZyBmcm9tIGJlZ2lubmluZyBvZiBwcm90b2J1ZiBldmVudC4iOwotICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0gZWxzZSBpZiAodGFnICE9IGtFeHBlY3RlZFRhZykgewotICAgICAgUlRD
X0xPRyhMU19XQVJOSU5HKQotICAgICAgICAgIDw8ICJVbmV4cGVjdGVkIGZpZWxkIHRhZyBhdCBi
ZWdpbm5pbmcgb2YgcHJvdG9idWYgZXZlbnQuIjsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICAvLyBSZWFkIHRoZSBsZW5ndGggZmllbGQuCi0gICAgc3RkOjp0aWUobWVzc2FnZV9s
ZW5ndGgsIHN1Y2Nlc3MpID0gUGFyc2VWYXJJbnQoc3RyZWFtKTsKLSAgICBpZiAoIXN1Y2Nlc3Mp
IHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIk1pc3NpbmcgbWVzc2FnZSBsZW5ndGgg
YWZ0ZXIgcHJvdG9idWYgZmllbGQgdGFnLiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBl
bHNlIGlmIChtZXNzYWdlX2xlbmd0aCA+IGtNYXhFdmVudFNpemUpIHsKLSAgICAgIFJUQ19MT0co
TFNfV0FSTklORykgPDwgIlByb3RvYnVmIG1lc3NhZ2UgbGVuZ3RoIGlzIHRvbyBsYXJnZS4iOwot
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIFJlYWQgdGhlIG5leHQgcHJvdG9i
dWYgZXZlbnQgdG8gYSB0ZW1wb3JhcnkgY2hhciBidWZmZXIuCi0gICAgc3RyZWFtLnJlYWQodG1w
X2J1ZmZlci5kYXRhKCksIG1lc3NhZ2VfbGVuZ3RoKTsKLSAgICBpZiAoc3RyZWFtLmdjb3VudCgp
ICE9IHN0YXRpY19jYXN0PGludD4obWVzc2FnZV9sZW5ndGgpKSB7Ci0gICAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcmVhZCBwcm90b2J1ZiBtZXNzYWdlIGZyb20gZmlsZS4i
OwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIFBhcnNlIHRoZSBwcm90b2J1
ZiBldmVudCBmcm9tIHRoZSBidWZmZXIuCi0gICAgcnRjbG9nOjpFdmVudCBldmVudDsKLSAgICBp
ZiAoIWV2ZW50LlBhcnNlRnJvbUFycmF5KHRtcF9idWZmZXIuZGF0YSgpLCBtZXNzYWdlX2xlbmd0
aCkpIHsKLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byBwYXJzZSBwcm90
b2J1ZiBtZXNzYWdlLiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgRXZlbnRU
eXBlIHR5cGUgPSBHZXRSdW50aW1lRXZlbnRUeXBlKGV2ZW50LnR5cGUoKSk7Ci0gICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgICBjYXNlIFZJREVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDogewotICAg
ICAgICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcgPSBHZXRWaWRlb1JlY2VpdmVDb25maWco
ZXZlbnQpOwotICAgICAgICBzdHJlYW1zXy5lbXBsYWNlX2JhY2soY29uZmlnLnJlbW90ZV9zc3Jj
LCBNZWRpYVR5cGU6OlZJREVPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0luY29t
aW5nUGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwSGVhZGVyRXh0ZW5z
aW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucykpOwotICAgICAgICBzdHJlYW1zXy5lbXBsYWNl
X2JhY2soY29uZmlnLmxvY2FsX3NzcmMsIE1lZGlhVHlwZTo6VklERU8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrT3V0Z29pbmdQYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgY2FzZSBWSURFT19TRU5ERVJfQ09ORklHX0VW
RU5UOiB7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWdz
ID0gR2V0VmlkZW9TZW5kQ29uZmlnKGV2ZW50KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb25maWdzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgc3RyZWFtc18uZW1wbGFjZV9i
YWNrKAotICAgICAgICAgICAgICBjb25maWdzW2ldLmxvY2FsX3NzcmMsIE1lZGlhVHlwZTo6VklE
RU8sIGtPdXRnb2luZ1BhY2tldCwKLSAgICAgICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFw
KGNvbmZpZ3NbaV0ucnRwX2V4dGVuc2lvbnMpKTsKLQotICAgICAgICAgIHN0cmVhbXNfLmVtcGxh
Y2VfYmFjaygKLSAgICAgICAgICAgICAgY29uZmlnc1tpXS5ydHhfc3NyYywgTWVkaWFUeXBlOjpW
SURFTywga091dGdvaW5nUGFja2V0LAotICAgICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25N
YXAoY29uZmlnc1tpXS5ydHBfZXh0ZW5zaW9ucykpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFr
OwotICAgICAgfQotICAgICAgY2FzZSBBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6IHsKLSAg
ICAgICAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnID0gR2V0QXVkaW9SZWNlaXZlQ29uZmln
KGV2ZW50KTsKLSAgICAgICAgc3RyZWFtc18uZW1wbGFjZV9iYWNrKGNvbmZpZy5yZW1vdGVfc3Ny
YywgTWVkaWFUeXBlOjpBVURJTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtJbmNv
bWluZ1BhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVu
c2lvbk1hcChjb25maWcucnRwX2V4dGVuc2lvbnMpKTsKLSAgICAgICAgc3RyZWFtc18uZW1wbGFj
ZV9iYWNrKGNvbmZpZy5sb2NhbF9zc3JjLCBNZWRpYVR5cGU6OkFVRElPLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga091dGdvaW5nUGFja2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucykpOwot
ICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGNhc2UgQVVESU9fU0VOREVSX0NPTkZJR19F
VkVOVDogewotICAgICAgICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcgPSBHZXRBdWRpb1Nl
bmRDb25maWcoZXZlbnQpOwotICAgICAgICBzdHJlYW1zXy5lbXBsYWNlX2JhY2soY29uZmlnLmxv
Y2FsX3NzcmMsIE1lZGlhVHlwZTo6QVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrT3V0Z29pbmdQYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBIZWFk
ZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZXZl
bnRzXy5wdXNoX2JhY2soZXZlbnQpOwotICB9Ci19Ci0KLXNpemVfdCBQYXJzZWRSdGNFdmVudExv
Zzo6R2V0TnVtYmVyT2ZFdmVudHMoKSBjb25zdCB7Ci0gIHJldHVybiBldmVudHNfLnNpemUoKTsK
LX0KLQotaW50NjRfdCBQYXJzZWRSdGNFdmVudExvZzo6R2V0VGltZXN0YW1wKHNpemVfdCBpbmRl
eCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwot
ICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICBSVENfQ0hF
Q0soZXZlbnQuaGFzX3RpbWVzdGFtcF91cygpKTsKLSAgcmV0dXJuIGV2ZW50LnRpbWVzdGFtcF91
cygpOwotfQotCi1QYXJzZWRSdGNFdmVudExvZzo6RXZlbnRUeXBlIFBhcnNlZFJ0Y0V2ZW50TG9n
OjpHZXRFdmVudFR5cGUoCi0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19M
VChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2
ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKLSAg
cmV0dXJuIEdldFJ1bnRpbWVFdmVudFR5cGUoZXZlbnQudHlwZSgpKTsKLX0KLQotLy8gVGhlIGhl
YWRlciBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxlYXN0IElQX1BBQ0tFVF9TSVpFIGJ5dGVzLgot
d2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAqIFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRSdHBI
ZWFkZXIoCi0gICAgc2l6ZV90IGluZGV4LAotICAgIFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcs
Ci0gICAgdWludDhfdCogaGVhZGVyLAotICAgIHNpemVfdCogaGVhZGVyX2xlbmd0aCwKLSAgICBz
aXplX3QqIHRvdGFsX2xlbmd0aCwKLSAgICBpbnQqIHByb2JlX2NsdXN0ZXJfaWQpIGNvbnN0IHsK
LSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRj
bG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhh
c190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpS
VFBfRVZFTlQpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3J0cF9wYWNrZXQoKSk7Ci0gIGNvbnN0
IHJ0Y2xvZzo6UnRwUGFja2V0JiBydHBfcGFja2V0ID0gZXZlbnQucnRwX3BhY2tldCgpOwotICAv
LyBHZXQgZGlyZWN0aW9uIG9mIHBhY2tldC4KLSAgUlRDX0NIRUNLKHJ0cF9wYWNrZXQuaGFzX2lu
Y29taW5nKCkpOwotICBpZiAoaW5jb21pbmcgIT0gbnVsbHB0cikgewotICAgICppbmNvbWluZyA9
IHJ0cF9wYWNrZXQuaW5jb21pbmcoKSA/IGtJbmNvbWluZ1BhY2tldCA6IGtPdXRnb2luZ1BhY2tl
dDsKLSAgfQotICAvLyBHZXQgcGFja2V0IGxlbmd0aC4KLSAgUlRDX0NIRUNLKHJ0cF9wYWNrZXQu
aGFzX3BhY2tldF9sZW5ndGgoKSk7Ci0gIGlmICh0b3RhbF9sZW5ndGggIT0gbnVsbHB0cikgewot
ICAgICp0b3RhbF9sZW5ndGggPSBydHBfcGFja2V0LnBhY2tldF9sZW5ndGgoKTsKLSAgfQotICAv
LyBHZXQgaGVhZGVyIGxlbmd0aC4KLSAgUlRDX0NIRUNLKHJ0cF9wYWNrZXQuaGFzX2hlYWRlcigp
KTsKLSAgaWYgKGhlYWRlcl9sZW5ndGggIT0gbnVsbHB0cikgewotICAgICpoZWFkZXJfbGVuZ3Ro
ID0gcnRwX3BhY2tldC5oZWFkZXIoKS5zaXplKCk7Ci0gIH0KLSAgLy8gR2V0IGhlYWRlciBjb250
ZW50cy4KLSAgaWYgKGhlYWRlciAhPSBudWxscHRyKSB7Ci0gICAgY29uc3Qgc2l6ZV90IGtNaW5S
dHBIZWFkZXJTaXplID0gMTI7Ci0gICAgUlRDX0NIRUNLX0dFKHJ0cF9wYWNrZXQuaGVhZGVyKCku
c2l6ZSgpLCBrTWluUnRwSGVhZGVyU2l6ZSk7Ci0gICAgUlRDX0NIRUNLX0xFKHJ0cF9wYWNrZXQu
aGVhZGVyKCkuc2l6ZSgpLAotICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KElQ
X1BBQ0tFVF9TSVpFKSk7Ci0gICAgbWVtY3B5KGhlYWRlciwgcnRwX3BhY2tldC5oZWFkZXIoKS5k
YXRhKCksIHJ0cF9wYWNrZXQuaGVhZGVyKCkuc2l6ZSgpKTsKLSAgICB1aW50MzJfdCBzc3JjID0g
Qnl0ZVJlYWRlcjx1aW50MzJfdD46OlJlYWRCaWdFbmRpYW4oaGVhZGVyICsgOCk7Ci0gICAgU3Ry
ZWFtSWQgc3RyZWFtX2lkKAotICAgICAgICBzc3JjLCBydHBfcGFja2V0LmluY29taW5nKCkgPyBr
SW5jb21pbmdQYWNrZXQgOiBrT3V0Z29pbmdQYWNrZXQpOwotICAgIGF1dG8gaXQgPSBydHBfZXh0
ZW5zaW9uc19tYXBzXy5maW5kKHN0cmVhbV9pZCk7Ci0gICAgaWYgKGl0ICE9IHJ0cF9leHRlbnNp
b25zX21hcHNfLmVuZCgpKSB7Ci0gICAgICByZXR1cm4gaXQtPnNlY29uZDsKLSAgICB9Ci0gIH0K
LSAgaWYgKHByb2JlX2NsdXN0ZXJfaWQgIT0gbnVsbHB0cikgewotICAgIGlmIChydHBfcGFja2V0
Lmhhc19wcm9iZV9jbHVzdGVyX2lkKCkpIHsKLSAgICAgICpwcm9iZV9jbHVzdGVyX2lkID0gcnRw
X3BhY2tldC5wcm9iZV9jbHVzdGVyX2lkKCk7Ci0gICAgICBSVENfQ0hFQ0tfTkUoKnByb2JlX2Ns
dXN0ZXJfaWQsIFBhY2VkUGFja2V0SW5mbzo6a05vdEFQcm9iZSk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICpwcm9iZV9jbHVzdGVyX2lkID0gUGFjZWRQYWNrZXRJbmZvOjprTm90QVByb2JlOwotICAg
IH0KLSAgfQotICByZXR1cm4gbnVsbHB0cjsKLX0KLQotLy8gVGhlIHBhY2tldCBtdXN0IGhhdmUg
c3BhY2UgZm9yIGF0IGxlYXN0IElQX1BBQ0tFVF9TSVpFIGJ5dGVzLgotdm9pZCBQYXJzZWRSdGNF
dmVudExvZzo6R2V0UnRjcFBhY2tldChzaXplX3QgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhY2tldERpcmVjdGlvbiogaW5jb21pbmcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIHBhY2tldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgpIGNvbnN0IHsKLSAgUlRD
X0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpF
dmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBl
KCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpSVENQX0VW
RU5UKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19ydGNwX3BhY2tldCgpKTsKLSAgY29uc3QgcnRj
bG9nOjpSdGNwUGFja2V0JiBydGNwX3BhY2tldCA9IGV2ZW50LnJ0Y3BfcGFja2V0KCk7Ci0gIC8v
IEdldCBkaXJlY3Rpb24gb2YgcGFja2V0LgotICBSVENfQ0hFQ0socnRjcF9wYWNrZXQuaGFzX2lu
Y29taW5nKCkpOwotICBpZiAoaW5jb21pbmcgIT0gbnVsbHB0cikgewotICAgICppbmNvbWluZyA9
IHJ0Y3BfcGFja2V0LmluY29taW5nKCkgPyBrSW5jb21pbmdQYWNrZXQgOiBrT3V0Z29pbmdQYWNr
ZXQ7Ci0gIH0KLSAgLy8gR2V0IHBhY2tldCBsZW5ndGguCi0gIFJUQ19DSEVDSyhydGNwX3BhY2tl
dC5oYXNfcGFja2V0X2RhdGEoKSk7Ci0gIGlmIChsZW5ndGggIT0gbnVsbHB0cikgewotICAgICps
ZW5ndGggPSBydGNwX3BhY2tldC5wYWNrZXRfZGF0YSgpLnNpemUoKTsKLSAgfQotICAvLyBHZXQg
cGFja2V0IGNvbnRlbnRzLgotICBpZiAocGFja2V0ICE9IG51bGxwdHIpIHsKLSAgICBSVENfQ0hF
Q0tfTEUocnRjcF9wYWNrZXQucGFja2V0X2RhdGEoKS5zaXplKCksCi0gICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJUF9QQUNLRVRfU0laRSkpOwotICAgIG1lbWNweShwYWNr
ZXQsIHJ0Y3BfcGFja2V0LnBhY2tldF9kYXRhKCkuZGF0YSgpLAotICAgICAgICAgICBydGNwX3Bh
Y2tldC5wYWNrZXRfZGF0YSgpLnNpemUoKSk7Ci0gIH0KLX0KLQotcnRjbG9nOjpTdHJlYW1Db25m
aWcgUGFyc2VkUnRjRXZlbnRMb2c6OkdldFZpZGVvUmVjZWl2ZUNvbmZpZygKLSAgICBzaXplX3Qg
aW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygp
KTsKLSAgcmV0dXJuIEdldFZpZGVvUmVjZWl2ZUNvbmZpZyhldmVudHNfW2luZGV4XSk7Ci19Ci0K
LXJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRWaWRlb1JlY2VpdmVD
b25maWcoCi0gICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKLSAgcnRjbG9n
OjpTdHJlYW1Db25maWcgY29uZmlnOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0g
IFJUQ19DSEVDS19FUShldmVudC50eXBlKCksIHJ0Y2xvZzo6RXZlbnQ6OlZJREVPX1JFQ0VJVkVS
X0NPTkZJR19FVkVOVCk7Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfdmlkZW9fcmVjZWl2ZXJfY29u
ZmlnKCkpOwotICBjb25zdCBydGNsb2c6OlZpZGVvUmVjZWl2ZUNvbmZpZyYgcmVjZWl2ZXJfY29u
ZmlnID0KLSAgICAgIGV2ZW50LnZpZGVvX3JlY2VpdmVyX2NvbmZpZygpOwotICAvLyBHZXQgU1NS
Q3MuCi0gIFJUQ19DSEVDSyhyZWNlaXZlcl9jb25maWcuaGFzX3JlbW90ZV9zc3JjKCkpOwotICBj
b25maWcucmVtb3RlX3NzcmMgPSByZWNlaXZlcl9jb25maWcucmVtb3RlX3NzcmMoKTsKLSAgUlRD
X0NIRUNLKHJlY2VpdmVyX2NvbmZpZy5oYXNfbG9jYWxfc3NyYygpKTsKLSAgY29uZmlnLmxvY2Fs
X3NzcmMgPSByZWNlaXZlcl9jb25maWcubG9jYWxfc3NyYygpOwotICBjb25maWcucnR4X3NzcmMg
PSAwOwotICAvLyBHZXQgUlRDUCBzZXR0aW5ncy4KLSAgUlRDX0NIRUNLKHJlY2VpdmVyX2NvbmZp
Zy5oYXNfcnRjcF9tb2RlKCkpOwotICBjb25maWcucnRjcF9tb2RlID0gR2V0UnVudGltZVJ0Y3BN
b2RlKHJlY2VpdmVyX2NvbmZpZy5ydGNwX21vZGUoKSk7Ci0gIFJUQ19DSEVDSyhyZWNlaXZlcl9j
b25maWcuaGFzX3JlbWIoKSk7Ci0gIGNvbmZpZy5yZW1iID0gcmVjZWl2ZXJfY29uZmlnLnJlbWIo
KTsKLQotICAvLyBHZXQgUlRYIG1hcC4KLSAgc3RkOjptYXA8dWludDMyX3QsIGNvbnN0IHJ0Y2xv
Zzo6UnR4Q29uZmlnPiBydHhfbWFwOwotICBmb3IgKGludCBpID0gMDsgaSA8IHJlY2VpdmVyX2Nv
bmZpZy5ydHhfbWFwX3NpemUoKTsgaSsrKSB7Ci0gICAgY29uc3QgcnRjbG9nOjpSdHhNYXAmIG1h
cCA9IHJlY2VpdmVyX2NvbmZpZy5ydHhfbWFwKGkpOwotICAgIFJUQ19DSEVDSyhtYXAuaGFzX3Bh
eWxvYWRfdHlwZSgpKTsKLSAgICBSVENfQ0hFQ0sobWFwLmhhc19jb25maWcoKSk7Ci0gICAgUlRD
X0NIRUNLKG1hcC5jb25maWcoKS5oYXNfcnR4X3NzcmMoKSk7Ci0gICAgUlRDX0NIRUNLKG1hcC5j
b25maWcoKS5oYXNfcnR4X3BheWxvYWRfdHlwZSgpKTsKLSAgICBydHhfbWFwLmluc2VydChzdGQ6
Om1ha2VfcGFpcihtYXAucGF5bG9hZF90eXBlKCksIG1hcC5jb25maWcoKSkpOwotICB9Ci0KLSAg
Ly8gR2V0IGhlYWRlciBleHRlbnNpb25zLgotICBHZXRIZWFkZXJFeHRlbnNpb25zKCZjb25maWcu
cnRwX2V4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJfY29uZmlnLmhl
YWRlcl9leHRlbnNpb25zKCkpOwotICAvLyBHZXQgZGVjb2RlcnMuCi0gIGNvbmZpZy5jb2RlY3Mu
Y2xlYXIoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCByZWNlaXZlcl9jb25maWcuZGVjb2RlcnNf
c2l6ZSgpOyBpKyspIHsKLSAgICBSVENfQ0hFQ0socmVjZWl2ZXJfY29uZmlnLmRlY29kZXJzKGkp
Lmhhc19uYW1lKCkpOwotICAgIFJUQ19DSEVDSyhyZWNlaXZlcl9jb25maWcuZGVjb2RlcnMoaSku
aGFzX3BheWxvYWRfdHlwZSgpKTsKLSAgICBpbnQgcnR4X3BheWxvYWRfdHlwZSA9IDA7Ci0gICAg
YXV0byBydHhfaXQgPSBydHhfbWFwLmZpbmQocmVjZWl2ZXJfY29uZmlnLmRlY29kZXJzKGkpLnBh
eWxvYWRfdHlwZSgpKTsKLSAgICBpZiAocnR4X2l0ICE9IHJ0eF9tYXAuZW5kKCkpIHsKLSAgICAg
IHJ0eF9wYXlsb2FkX3R5cGUgPSBydHhfaXQtPnNlY29uZC5ydHhfcGF5bG9hZF90eXBlKCk7Ci0g
ICAgICBpZiAoY29uZmlnLnJ0eF9zc3JjICE9IDAgJiYKLSAgICAgICAgICBjb25maWcucnR4X3Nz
cmMgIT0gcnR4X2l0LT5zZWNvbmQucnR4X3NzcmMoKSkgewotICAgICAgICBSVENfTE9HKExTX1dB
Uk5JTkcpCi0gICAgICAgICAgICA8PCAiUnRjRXZlbnRMb2cgcHJvdG9idWYgY29udGFpbmVkIGRp
ZmZlcmVudCBTU1JDcyBmb3IgIgotICAgICAgICAgICAgICAgImRpZmZlcmVudCByZWNlaXZlZCBS
VFggcGF5bG9hZCB0eXBlcy4gV2lsbCBvbmx5IHVzZSAiCi0gICAgICAgICAgICAgICAicnR4X3Nz
cmMgPSAiCi0gICAgICAgICAgICA8PCBjb25maWcucnR4X3NzcmMgPDwgIi4iOwotICAgICAgfSBl
bHNlIHsKLSAgICAgICAgY29uZmlnLnJ0eF9zc3JjID0gcnR4X2l0LT5zZWNvbmQucnR4X3NzcmMo
KTsKLSAgICAgIH0KLSAgICB9Ci0gICAgY29uZmlnLmNvZGVjcy5lbXBsYWNlX2JhY2socmVjZWl2
ZXJfY29uZmlnLmRlY29kZXJzKGkpLm5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWNlaXZlcl9jb25maWcuZGVjb2RlcnMoaSkucGF5bG9hZF90eXBlKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnR4X3BheWxvYWRfdHlwZSk7Ci0gIH0KLSAgcmV0dXJu
IGNvbmZpZzsKLX0KLQotc3RkOjp2ZWN0b3I8cnRjbG9nOjpTdHJlYW1Db25maWc+IFBhcnNlZFJ0
Y0V2ZW50TG9nOjpHZXRWaWRlb1NlbmRDb25maWcoCi0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7
Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIHJldHVybiBH
ZXRWaWRlb1NlbmRDb25maWcoZXZlbnRzX1tpbmRleF0pOwotfQotCi1zdGQ6OnZlY3RvcjxydGNs
b2c6OlN0cmVhbUNvbmZpZz4gUGFyc2VkUnRjRXZlbnRMb2c6OkdldFZpZGVvU2VuZENvbmZpZygK
LSAgICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3QgewotICBzdGQ6OnZlY3Rvcjxy
dGNsb2c6OlN0cmVhbUNvbmZpZz4gY29uZmlnczsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBl
KCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpWSURFT19T
RU5ERVJfQ09ORklHX0VWRU5UKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc192aWRlb19zZW5kZXJf
Y29uZmlnKCkpOwotICBjb25zdCBydGNsb2c6OlZpZGVvU2VuZENvbmZpZyYgc2VuZGVyX2NvbmZp
ZyA9IGV2ZW50LnZpZGVvX3NlbmRlcl9jb25maWcoKTsKLSAgaWYgKHNlbmRlcl9jb25maWcucnR4
X3NzcmNzX3NpemUoKSA+IDAgJiYKLSAgICAgIHNlbmRlcl9jb25maWcuc3NyY3Nfc2l6ZSgpICE9
IHNlbmRlcl9jb25maWcucnR4X3NzcmNzX3NpemUoKSkgewotICAgIFJUQ19MT0coV0FSTklORykK
LSAgICAgICAgPDwgIlZpZGVvU2VuZENvbmZpZyBpcyBjb25maWd1cmVkIGZvciBSVFggYnV0IHRo
ZSBudW1iZXIgb2YgIgotICAgICAgICAgICAiU1NSQ3MgZG9lc24ndCBtYXRjaCB0aGUgbnVtYmVy
IG9mIFJUWCBTU1JDcy4iOwotICB9Ci0gIGNvbmZpZ3MucmVzaXplKHNlbmRlcl9jb25maWcuc3Ny
Y3Nfc2l6ZSgpKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZW5kZXJfY29uZmlnLnNzcmNzX3Np
emUoKTsgaSsrKSB7Ci0gICAgLy8gR2V0IFNTUkNzLgotICAgIGNvbmZpZ3NbaV0ubG9jYWxfc3Ny
YyA9IHNlbmRlcl9jb25maWcuc3NyY3MoaSk7Ci0gICAgaWYgKHNlbmRlcl9jb25maWcucnR4X3Nz
cmNzX3NpemUoKSA+IDAgJiYKLSAgICAgICAgaSA8IHNlbmRlcl9jb25maWcucnR4X3NzcmNzX3Np
emUoKSkgewotICAgICAgUlRDX0NIRUNLKHNlbmRlcl9jb25maWcuaGFzX3J0eF9wYXlsb2FkX3R5
cGUoKSk7Ci0gICAgICBjb25maWdzW2ldLnJ0eF9zc3JjID0gc2VuZGVyX2NvbmZpZy5ydHhfc3Ny
Y3MoaSk7Ci0gICAgfQotICAgIC8vIEdldCBoZWFkZXIgZXh0ZW5zaW9ucy4KLSAgICBHZXRIZWFk
ZXJFeHRlbnNpb25zKCZjb25maWdzW2ldLnJ0cF9leHRlbnNpb25zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VuZGVyX2NvbmZpZy5oZWFkZXJfZXh0ZW5zaW9ucygpKTsKLQotICAgIC8vIEdl
dCB0aGUgY29kZWMuCi0gICAgUlRDX0NIRUNLKHNlbmRlcl9jb25maWcuaGFzX2VuY29kZXIoKSk7
Ci0gICAgUlRDX0NIRUNLKHNlbmRlcl9jb25maWcuZW5jb2RlcigpLmhhc19uYW1lKCkpOwotICAg
IFJUQ19DSEVDSyhzZW5kZXJfY29uZmlnLmVuY29kZXIoKS5oYXNfcGF5bG9hZF90eXBlKCkpOwot
ICAgIGNvbmZpZ3NbaV0uY29kZWNzLmVtcGxhY2VfYmFjaygKLSAgICAgICAgc2VuZGVyX2NvbmZp
Zy5lbmNvZGVyKCkubmFtZSgpLCBzZW5kZXJfY29uZmlnLmVuY29kZXIoKS5wYXlsb2FkX3R5cGUo
KSwKLSAgICAgICAgc2VuZGVyX2NvbmZpZy5oYXNfcnR4X3BheWxvYWRfdHlwZSgpID8gc2VuZGVy
X2NvbmZpZy5ydHhfcGF5bG9hZF90eXBlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogMCk7Ci0gIH0KLSAgcmV0dXJuIGNvbmZpZ3M7Ci19Ci0KLXJ0Y2xv
Zzo6U3RyZWFtQ29uZmlnIFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRBdWRpb1JlY2VpdmVDb25maWco
Ci0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVt
YmVyT2ZFdmVudHMoKSk7Ci0gIHJldHVybiBHZXRBdWRpb1JlY2VpdmVDb25maWcoZXZlbnRzX1tp
bmRleF0pOwotfQotCi1ydGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZzo6R2V0
QXVkaW9SZWNlaXZlQ29uZmlnKAotICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25z
dCB7Ci0gIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIGNvbmZpZzsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhh
c190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpB
VURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX2F1ZGlv
X3JlY2VpdmVyX2NvbmZpZygpKTsKLSAgY29uc3QgcnRjbG9nOjpBdWRpb1JlY2VpdmVDb25maWcm
IHJlY2VpdmVyX2NvbmZpZyA9Ci0gICAgICBldmVudC5hdWRpb19yZWNlaXZlcl9jb25maWcoKTsK
LSAgLy8gR2V0IFNTUkNzLgotICBSVENfQ0hFQ0socmVjZWl2ZXJfY29uZmlnLmhhc19yZW1vdGVf
c3NyYygpKTsKLSAgY29uZmlnLnJlbW90ZV9zc3JjID0gcmVjZWl2ZXJfY29uZmlnLnJlbW90ZV9z
c3JjKCk7Ci0gIFJUQ19DSEVDSyhyZWNlaXZlcl9jb25maWcuaGFzX2xvY2FsX3NzcmMoKSk7Ci0g
IGNvbmZpZy5sb2NhbF9zc3JjID0gcmVjZWl2ZXJfY29uZmlnLmxvY2FsX3NzcmMoKTsKLSAgLy8g
R2V0IGhlYWRlciBleHRlbnNpb25zLgotICBHZXRIZWFkZXJFeHRlbnNpb25zKCZjb25maWcucnRw
X2V4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJfY29uZmlnLmhlYWRl
cl9leHRlbnNpb25zKCkpOwotICByZXR1cm4gY29uZmlnOwotfQotCi1ydGNsb2c6OlN0cmVhbUNv
bmZpZyBQYXJzZWRSdGNFdmVudExvZzo6R2V0QXVkaW9TZW5kQ29uZmlnKHNpemVfdCBpbmRleCkg
Y29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBy
ZXR1cm4gR2V0QXVkaW9TZW5kQ29uZmlnKGV2ZW50c19baW5kZXhdKTsKLX0KLQotcnRjbG9nOjpT
dHJlYW1Db25maWcgUGFyc2VkUnRjRXZlbnRMb2c6OkdldEF1ZGlvU2VuZENvbmZpZygKLSAgICBj
b25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3QgewotICBydGNsb2c6OlN0cmVhbUNvbmZp
ZyBjb25maWc7Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VR
KGV2ZW50LnR5cGUoKSwgcnRjbG9nOjpFdmVudDo6QVVESU9fU0VOREVSX0NPTkZJR19FVkVOVCk7
Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfYXVkaW9fc2VuZGVyX2NvbmZpZygpKTsKLSAgY29uc3Qg
cnRjbG9nOjpBdWRpb1NlbmRDb25maWcmIHNlbmRlcl9jb25maWcgPSBldmVudC5hdWRpb19zZW5k
ZXJfY29uZmlnKCk7Ci0gIC8vIEdldCBTU1JDcy4KLSAgUlRDX0NIRUNLKHNlbmRlcl9jb25maWcu
aGFzX3NzcmMoKSk7Ci0gIGNvbmZpZy5sb2NhbF9zc3JjID0gc2VuZGVyX2NvbmZpZy5zc3JjKCk7
Ci0gIC8vIEdldCBoZWFkZXIgZXh0ZW5zaW9ucy4KLSAgR2V0SGVhZGVyRXh0ZW5zaW9ucygmY29u
ZmlnLnJ0cF9leHRlbnNpb25zLAotICAgICAgICAgICAgICAgICAgICAgIHNlbmRlcl9jb25maWcu
aGVhZGVyX2V4dGVuc2lvbnMoKSk7Ci0gIHJldHVybiBjb25maWc7Ci19Ci0KLXZvaWQgUGFyc2Vk
UnRjRXZlbnRMb2c6OkdldEF1ZGlvUGxheW91dChzaXplX3QgaW5kZXgsIHVpbnQzMl90KiBzc3Jj
KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0g
IGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19DSEVD
SyhldmVudC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VRKGV2ZW50LnR5cGUoKSwgcnRjbG9n
OjpFdmVudDo6QVVESU9fUExBWU9VVF9FVkVOVCk7Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfYXVk
aW9fcGxheW91dF9ldmVudCgpKTsKLSAgY29uc3QgcnRjbG9nOjpBdWRpb1BsYXlvdXRFdmVudCYg
bG9zc19ldmVudCA9IGV2ZW50LmF1ZGlvX3BsYXlvdXRfZXZlbnQoKTsKLSAgUlRDX0NIRUNLKGxv
c3NfZXZlbnQuaGFzX2xvY2FsX3NzcmMoKSk7Ci0gIGlmIChzc3JjICE9IG51bGxwdHIpIHsKLSAg
ICAqc3NyYyA9IGxvc3NfZXZlbnQubG9jYWxfc3NyYygpOwotICB9Ci19Ci0KLXZvaWQgUGFyc2Vk
UnRjRXZlbnRMb2c6OkdldExvc3NCYXNlZEJ3ZVVwZGF0ZShzaXplX3QgaW5kZXgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCogYml0cmF0ZV9i
cHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCogZnJhY3Rpb25fbG9zcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90KiB0b3RhbF9wYWNrZXRzKSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChp
bmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50
ID0gZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKLSAgUlRD
X0NIRUNLX0VRKGV2ZW50LnR5cGUoKSwgcnRjbG9nOjpFdmVudDo6TE9TU19CQVNFRF9CV0VfVVBE
QVRFKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19sb3NzX2Jhc2VkX2J3ZV91cGRhdGUoKSk7Ci0g
IGNvbnN0IHJ0Y2xvZzo6TG9zc0Jhc2VkQndlVXBkYXRlJiBsb3NzX2V2ZW50ID0gZXZlbnQubG9z
c19iYXNlZF9id2VfdXBkYXRlKCk7Ci0gIFJUQ19DSEVDSyhsb3NzX2V2ZW50Lmhhc19iaXRyYXRl
X2JwcygpKTsKLSAgaWYgKGJpdHJhdGVfYnBzICE9IG51bGxwdHIpIHsKLSAgICAqYml0cmF0ZV9i
cHMgPSBsb3NzX2V2ZW50LmJpdHJhdGVfYnBzKCk7Ci0gIH0KLSAgUlRDX0NIRUNLKGxvc3NfZXZl
bnQuaGFzX2ZyYWN0aW9uX2xvc3MoKSk7Ci0gIGlmIChmcmFjdGlvbl9sb3NzICE9IG51bGxwdHIp
IHsKLSAgICAqZnJhY3Rpb25fbG9zcyA9IGxvc3NfZXZlbnQuZnJhY3Rpb25fbG9zcygpOwotICB9
Ci0gIFJUQ19DSEVDSyhsb3NzX2V2ZW50Lmhhc190b3RhbF9wYWNrZXRzKCkpOwotICBpZiAodG90
YWxfcGFja2V0cyAhPSBudWxscHRyKSB7Ci0gICAgKnRvdGFsX3BhY2tldHMgPSBsb3NzX2V2ZW50
LnRvdGFsX3BhY2tldHMoKTsKLSAgfQotfQotCi1QYXJzZWRSdGNFdmVudExvZzo6QndlRGVsYXlC
YXNlZFVwZGF0ZQotUGFyc2VkUnRjRXZlbnRMb2c6OkdldERlbGF5QmFzZWRCd2VVcGRhdGUoc2l6
ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVu
dHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0g
IFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VRKGV2ZW50LnR5cGUo
KSwgcnRjbG9nOjpFdmVudDo6REVMQVlfQkFTRURfQldFX1VQREFURSk7Ci0gIFJUQ19DSEVDSyhl
dmVudC5oYXNfZGVsYXlfYmFzZWRfYndlX3VwZGF0ZSgpKTsKLSAgY29uc3QgcnRjbG9nOjpEZWxh
eUJhc2VkQndlVXBkYXRlJiBkZWxheV9ldmVudCA9Ci0gICAgICBldmVudC5kZWxheV9iYXNlZF9i
d2VfdXBkYXRlKCk7Ci0KLSAgQndlRGVsYXlCYXNlZFVwZGF0ZSByZXM7Ci0gIHJlcy50aW1lc3Rh
bXAgPSBHZXRUaW1lc3RhbXAoaW5kZXgpOwotICBSVENfQ0hFQ0soZGVsYXlfZXZlbnQuaGFzX2Jp
dHJhdGVfYnBzKCkpOwotICByZXMuYml0cmF0ZV9icHMgPSBkZWxheV9ldmVudC5iaXRyYXRlX2Jw
cygpOwotICBSVENfQ0hFQ0soZGVsYXlfZXZlbnQuaGFzX2RldGVjdG9yX3N0YXRlKCkpOwotICBy
ZXMuZGV0ZWN0b3Jfc3RhdGUgPSBHZXRSdW50aW1lRGV0ZWN0b3JTdGF0ZShkZWxheV9ldmVudC5k
ZXRlY3Rvcl9zdGF0ZSgpKTsKLSAgcmV0dXJuIHJlczsKLX0KLQotdm9pZCBQYXJzZWRSdGNFdmVu
dExvZzo6R2V0QXVkaW9OZXR3b3JrQWRhcHRhdGlvbigKLSAgICBzaXplX3QgaW5kZXgsCi0gICAg
QXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZyogY29uZmlnKSBjb25zdCB7Ci0gIFJUQ19DSEVDS19M
VChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2
ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKLSAg
UlRDX0NIRUNLX0VRKGV2ZW50LnR5cGUoKSwgcnRjbG9nOjpFdmVudDo6QVVESU9fTkVUV09SS19B
REFQVEFUSU9OX0VWRU5UKTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19hdWRpb19uZXR3b3JrX2Fk
YXB0YXRpb24oKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiYgYW5h
X2V2ZW50ID0KLSAgICAgIGV2ZW50LmF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbigpOwotICBpZiAo
YW5hX2V2ZW50Lmhhc19iaXRyYXRlX2JwcygpKQotICAgIGNvbmZpZy0+Yml0cmF0ZV9icHMgPSBh
bmFfZXZlbnQuYml0cmF0ZV9icHMoKTsKLSAgaWYgKGFuYV9ldmVudC5oYXNfZW5hYmxlX2ZlYygp
KQotICAgIGNvbmZpZy0+ZW5hYmxlX2ZlYyA9IGFuYV9ldmVudC5lbmFibGVfZmVjKCk7Ci0gIGlm
IChhbmFfZXZlbnQuaGFzX2VuYWJsZV9kdHgoKSkKLSAgICBjb25maWctPmVuYWJsZV9kdHggPSBh
bmFfZXZlbnQuZW5hYmxlX2R0eCgpOwotICBpZiAoYW5hX2V2ZW50Lmhhc19mcmFtZV9sZW5ndGhf
bXMoKSkKLSAgICBjb25maWctPmZyYW1lX2xlbmd0aF9tcyA9IGFuYV9ldmVudC5mcmFtZV9sZW5n
dGhfbXMoKTsKLSAgaWYgKGFuYV9ldmVudC5oYXNfbnVtX2NoYW5uZWxzKCkpCi0gICAgY29uZmln
LT5udW1fY2hhbm5lbHMgPSBhbmFfZXZlbnQubnVtX2NoYW5uZWxzKCk7Ci0gIGlmIChhbmFfZXZl
bnQuaGFzX3VwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbigpKQotICAgIGNvbmZpZy0+dXBsaW5r
X3BhY2tldF9sb3NzX2ZyYWN0aW9uID0KLSAgICAgICAgYW5hX2V2ZW50LnVwbGlua19wYWNrZXRf
bG9zc19mcmFjdGlvbigpOwotfQotCi1QYXJzZWRSdGNFdmVudExvZzo6QndlUHJvYmVDbHVzdGVy
Q3JlYXRlZEV2ZW50Ci1QYXJzZWRSdGNFdmVudExvZzo6R2V0QndlUHJvYmVDbHVzdGVyQ3JlYXRl
ZChzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJP
ZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4
XTsKLSAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQu
dHlwZSgpLCBydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0VWRU5UKTsK
LSAgUlRDX0NIRUNLKGV2ZW50Lmhhc19wcm9iZV9jbHVzdGVyKCkpOwotICBjb25zdCBydGNsb2c6
OkJ3ZVByb2JlQ2x1c3RlciYgcGNjX2V2ZW50ID0gZXZlbnQucHJvYmVfY2x1c3RlcigpOwotICBC
d2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQgcmVzOwotICByZXMudGltZXN0YW1wID0gR2V0VGlt
ZXN0YW1wKGluZGV4KTsKLSAgUlRDX0NIRUNLKHBjY19ldmVudC5oYXNfaWQoKSk7Ci0gIHJlcy5p
ZCA9IHBjY19ldmVudC5pZCgpOwotICBSVENfQ0hFQ0socGNjX2V2ZW50Lmhhc19iaXRyYXRlX2Jw
cygpKTsKLSAgcmVzLmJpdHJhdGVfYnBzID0gcGNjX2V2ZW50LmJpdHJhdGVfYnBzKCk7Ci0gIFJU
Q19DSEVDSyhwY2NfZXZlbnQuaGFzX21pbl9wYWNrZXRzKCkpOwotICByZXMubWluX3BhY2tldHMg
PSBwY2NfZXZlbnQubWluX3BhY2tldHMoKTsKLSAgUlRDX0NIRUNLKHBjY19ldmVudC5oYXNfbWlu
X2J5dGVzKCkpOwotICByZXMubWluX2J5dGVzID0gcGNjX2V2ZW50Lm1pbl9ieXRlcygpOwotICBy
ZXR1cm4gcmVzOwotfQotCi1QYXJzZWRSdGNFdmVudExvZzo6QndlUHJvYmVSZXN1bHRFdmVudCBQ
YXJzZWRSdGNFdmVudExvZzo6R2V0QndlUHJvYmVSZXN1bHQoCi0gICAgc2l6ZV90IGluZGV4KSBj
b25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNv
bnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19DSEVDSyhl
dmVudC5oYXNfdHlwZSgpKTsKLSAgUlRDX0NIRUNLX0VRKGV2ZW50LnR5cGUoKSwgcnRjbG9nOjpF
dmVudDo6QldFX1BST0JFX1JFU1VMVF9FVkVOVCk7Ci0gIFJUQ19DSEVDSyhldmVudC5oYXNfcHJv
YmVfcmVzdWx0KCkpOwotICBjb25zdCBydGNsb2c6OkJ3ZVByb2JlUmVzdWx0JiBwcl9ldmVudCA9
IGV2ZW50LnByb2JlX3Jlc3VsdCgpOwotICBCd2VQcm9iZVJlc3VsdEV2ZW50IHJlczsKLSAgcmVz
LnRpbWVzdGFtcCA9IEdldFRpbWVzdGFtcChpbmRleCk7Ci0gIFJUQ19DSEVDSyhwcl9ldmVudC5o
YXNfaWQoKSk7Ci0gIHJlcy5pZCA9IHByX2V2ZW50LmlkKCk7Ci0KLSAgUlRDX0NIRUNLKHByX2V2
ZW50Lmhhc19yZXN1bHQoKSk7Ci0gIGlmIChwcl9ldmVudC5yZXN1bHQoKSA9PSBydGNsb2c6OkJ3
ZVByb2JlUmVzdWx0OjpTVUNDRVNTKSB7Ci0gICAgUlRDX0NIRUNLKHByX2V2ZW50Lmhhc19iaXRy
YXRlX2JwcygpKTsKLSAgICByZXMuYml0cmF0ZV9icHMgPSBwcl9ldmVudC5iaXRyYXRlX2Jwcygp
OwotICB9IGVsc2UgaWYgKHByX2V2ZW50LnJlc3VsdCgpID09Ci0gICAgICAgICAgICAgcnRjbG9n
OjpCd2VQcm9iZVJlc3VsdDo6SU5WQUxJRF9TRU5EX1JFQ0VJVkVfSU5URVJWQUwpIHsKLSAgICBy
ZXMuZmFpbHVyZV9yZWFzb24gPSBQcm9iZUZhaWx1cmVSZWFzb246OmtJbnZhbGlkU2VuZFJlY2Vp
dmVJbnRlcnZhbDsKLSAgfSBlbHNlIGlmIChwcl9ldmVudC5yZXN1bHQoKSA9PQotICAgICAgICAg
ICAgIHJ0Y2xvZzo6QndlUHJvYmVSZXN1bHQ6OklOVkFMSURfU0VORF9SRUNFSVZFX1JBVElPKSB7
Ci0gICAgcmVzLmZhaWx1cmVfcmVhc29uID0gUHJvYmVGYWlsdXJlUmVhc29uOjprSW52YWxpZFNl
bmRSZWNlaXZlUmF0aW87Ci0gIH0gZWxzZSBpZiAocHJfZXZlbnQucmVzdWx0KCkgPT0gcnRjbG9n
OjpCd2VQcm9iZVJlc3VsdDo6VElNRU9VVCkgewotICAgIHJlcy5mYWlsdXJlX3JlYXNvbiA9IFBy
b2JlRmFpbHVyZVJlYXNvbjo6a1RpbWVvdXQ7Ci0gIH0gZWxzZSB7Ci0gICAgUlRDX05PVFJFQUNI
RUQoKTsKLSAgfQotCi0gIHJldHVybiByZXM7Ci19Ci0KLVBhcnNlZFJ0Y0V2ZW50TG9nOjpBbHJT
dGF0ZUV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nOjpHZXRBbHJTdGF0ZSgKLSAgICBzaXplX3QgaW5k
ZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsK
LSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgUlRDX0NI
RUNLKGV2ZW50Lmhhc190eXBlKCkpOwotICBSVENfQ0hFQ0tfRVEoZXZlbnQudHlwZSgpLCBydGNs
b2c6OkV2ZW50OjpBTFJfU1RBVEVfRVZFTlQpOwotICBSVENfQ0hFQ0soZXZlbnQuaGFzX2Fscl9z
dGF0ZSgpKTsKLSAgY29uc3QgcnRjbG9nOjpBbHJTdGF0ZSYgYWxyX2V2ZW50ID0gZXZlbnQuYWxy
X3N0YXRlKCk7Ci0gIEFsclN0YXRlRXZlbnQgcmVzOwotICByZXMudGltZXN0YW1wID0gR2V0VGlt
ZXN0YW1wKGluZGV4KTsKLSAgUlRDX0NIRUNLKGFscl9ldmVudC5oYXNfaW5fYWxyKCkpOwotICBy
ZXMuaW5fYWxyID0gYWxyX2V2ZW50LmluX2FscigpOwotCi0gIHJldHVybiByZXM7Ci19Ci0KLVBh
cnNlZFJ0Y0V2ZW50TG9nOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnCi1QYXJzZWRSdGNFdmVudExv
Zzo6R2V0SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyhzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRD
X0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpF
dmVudCYgcnRjX2V2ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIFJUQ19DSEVDSyhydGNfZXZlbnQu
aGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShydGNfZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2
ZW50OjpJQ0VfQ0FORElEQVRFX1BBSVJfQ09ORklHKTsKLSAgSWNlQ2FuZGlkYXRlUGFpckNvbmZp
ZyByZXM7Ci0gIGNvbnN0IHJ0Y2xvZzo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgY29uZmlnID0K
LSAgICAgIHJ0Y19ldmVudC5pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnKCk7Ci0gIHJlcy50aW1l
c3RhbXAgPSBHZXRUaW1lc3RhbXAoaW5kZXgpOwotICBSVENfQ0hFQ0soY29uZmlnLmhhc19jb25m
aWdfdHlwZSgpKTsKLSAgcmVzLnR5cGUgPSBHZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckNvbmZp
Z1R5cGUoY29uZmlnLmNvbmZpZ190eXBlKCkpOwotICBSVENfQ0hFQ0soY29uZmlnLmhhc19jYW5k
aWRhdGVfcGFpcl9pZCgpKTsKLSAgcmVzLmNhbmRpZGF0ZV9wYWlyX2lkID0gY29uZmlnLmNhbmRp
ZGF0ZV9wYWlyX2lkKCk7Ci0gIFJUQ19DSEVDSyhjb25maWcuaGFzX2xvY2FsX2NhbmRpZGF0ZV90
eXBlKCkpOwotICByZXMubG9jYWxfY2FuZGlkYXRlX3R5cGUgPQotICAgICAgR2V0UnVudGltZUlj
ZUNhbmRpZGF0ZVR5cGUoY29uZmlnLmxvY2FsX2NhbmRpZGF0ZV90eXBlKCkpOwotICBSVENfQ0hF
Q0soY29uZmlnLmhhc19sb2NhbF9yZWxheV9wcm90b2NvbCgpKTsKLSAgcmVzLmxvY2FsX3JlbGF5
X3Byb3RvY29sID0KLSAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2woY29u
ZmlnLmxvY2FsX3JlbGF5X3Byb3RvY29sKCkpOwotICBSVENfQ0hFQ0soY29uZmlnLmhhc19sb2Nh
bF9uZXR3b3JrX3R5cGUoKSk7Ci0gIHJlcy5sb2NhbF9uZXR3b3JrX3R5cGUgPQotICAgICAgR2V0
UnVudGltZUljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlKGNvbmZpZy5sb2NhbF9uZXR3b3JrX3R5cGUo
KSk7Ci0gIFJUQ19DSEVDSyhjb25maWcuaGFzX2xvY2FsX2FkZHJlc3NfZmFtaWx5KCkpOwotICBy
ZXMubG9jYWxfYWRkcmVzc19mYW1pbHkgPQotICAgICAgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBh
aXJBZGRyZXNzRmFtaWx5KGNvbmZpZy5sb2NhbF9hZGRyZXNzX2ZhbWlseSgpKTsKLSAgUlRDX0NI
RUNLKGNvbmZpZy5oYXNfcmVtb3RlX2NhbmRpZGF0ZV90eXBlKCkpOwotICByZXMucmVtb3RlX2Nh
bmRpZGF0ZV90eXBlID0KLSAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVUeXBlKGNvbmZpZy5y
ZW1vdGVfY2FuZGlkYXRlX3R5cGUoKSk7Ci0gIFJUQ19DSEVDSyhjb25maWcuaGFzX3JlbW90ZV9h
ZGRyZXNzX2ZhbWlseSgpKTsKLSAgcmVzLnJlbW90ZV9hZGRyZXNzX2ZhbWlseSA9Ci0gICAgICBH
ZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHkoY29uZmlnLnJlbW90ZV9hZGRy
ZXNzX2ZhbWlseSgpKTsKLSAgUlRDX0NIRUNLKGNvbmZpZy5oYXNfY2FuZGlkYXRlX3BhaXJfcHJv
dG9jb2woKSk7Ci0gIHJlcy5jYW5kaWRhdGVfcGFpcl9wcm90b2NvbCA9Ci0gICAgICBHZXRSdW50
aW1lSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sKGNvbmZpZy5jYW5kaWRhdGVfcGFpcl9wcm90b2Nv
bCgpKTsKLSAgcmV0dXJuIHJlczsKLX0KLQotUGFyc2VkUnRjRXZlbnRMb2c6OkljZUNhbmRpZGF0
ZVBhaXJFdmVudAotUGFyc2VkUnRjRXZlbnRMb2c6OkdldEljZUNhbmRpZGF0ZVBhaXJFdmVudChz
aXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2
ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgcnRjX2V2ZW50ID0gZXZlbnRzX1tpbmRl
eF07Ci0gIFJUQ19DSEVDSyhydGNfZXZlbnQuaGFzX3R5cGUoKSk7Ci0gIFJUQ19DSEVDS19FUShy
dGNfZXZlbnQudHlwZSgpLCBydGNsb2c6OkV2ZW50OjpJQ0VfQ0FORElEQVRFX1BBSVJfRVZFTlQp
OwotICBJY2VDYW5kaWRhdGVQYWlyRXZlbnQgcmVzOwotICBjb25zdCBydGNsb2c6OkljZUNhbmRp
ZGF0ZVBhaXJFdmVudCYgZXZlbnQgPQotICAgICAgcnRjX2V2ZW50LmljZV9jYW5kaWRhdGVfcGFp
cl9ldmVudCgpOwotICByZXMudGltZXN0YW1wID0gR2V0VGltZXN0YW1wKGluZGV4KTsKLSAgUlRD
X0NIRUNLKGV2ZW50Lmhhc19ldmVudF90eXBlKCkpOwotICByZXMudHlwZSA9IEdldFJ1bnRpbWVJ
Y2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlKGV2ZW50LmV2ZW50X3R5cGUoKSk7Ci0gIFJUQ19DSEVD
SyhldmVudC5oYXNfY2FuZGlkYXRlX3BhaXJfaWQoKSk7Ci0gIHJlcy5jYW5kaWRhdGVfcGFpcl9p
ZCA9IGV2ZW50LmNhbmRpZGF0ZV9wYWlyX2lkKCk7Ci0gIHJldHVybiByZXM7Ci19Ci0KLS8vIFJl
dHVybnMgdGhlIE1lZGlhVHlwZSBmb3IgcmVnaXN0ZXJlZCBTU1JDcy4gU2VhcmNoIGZyb20gdGhl
IGVuZCB0byB1c2UgbGFzdAotLy8gcmVnaXN0ZXJlZCB0eXBlcyBmaXJzdC4KLVBhcnNlZFJ0Y0V2
ZW50TG9nOjpNZWRpYVR5cGUgUGFyc2VkUnRjRXZlbnRMb2c6OkdldE1lZGlhVHlwZSgKLSAgICB1
aW50MzJfdCBzc3JjLAotICAgIFBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0IHsKLSAg
Zm9yIChhdXRvIHJpdCA9IHN0cmVhbXNfLnJiZWdpbigpOyByaXQgIT0gc3RyZWFtc18ucmVuZCgp
OyArK3JpdCkgewotICAgIGlmIChyaXQtPnNzcmMgPT0gc3NyYyAmJiByaXQtPmRpcmVjdGlvbiA9
PSBkaXJlY3Rpb24pCi0gICAgICByZXR1cm4gcml0LT5tZWRpYV90eXBlOwotICB9Ci0gIHJldHVy
biBNZWRpYVR5cGU6OkFOWTsKLX0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFy
c2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5M2VjNmRhN2MzNjFhYmFiYWRj
NWYyNjM0NDEwZjAyOGFjYjhiNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9n
Z2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwyNTkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBw
cm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0jaWZuZGVmIExPR0dJTkdf
UlRDX0VWRU5UX0xPR19SVENfRVZFTlRfTE9HX1BBUlNFUl9IXwotI2RlZmluZSBMT0dHSU5HX1JU
Q19FVkVOVF9MT0dfUlRDX0VWRU5UX0xPR19QQVJTRVJfSF8KLQotI2luY2x1ZGUgPG1hcD4KLSNp
bmNsdWRlIDxzc3RyZWFtPiAgLy8gbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg5ODIp
Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBwYWlyCi0jaW5jbHVk
ZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiY2FsbC92aWRlb19yZWNlaXZlX3N0cmVhbS5oIgotI2lu
Y2x1ZGUgImNhbGwvdmlkZW9fc2VuZF9zdHJlYW0uaCIKLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3BhaXIuaCIKLSNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9pY2VfY2FuZGlkYXRlX3Bh
aXJfY29uZmlnLmgiCi0jaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfcHJvYmVfcmVzdWx0X2ZhaWx1cmUuaCIKLSNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvcnRjX2V2ZW50X2xvZy5oIgotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9y
dGNfc3RyZWFtX2NvbmZpZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9y
dHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ieXRlX2lvLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvaWdub3JlX3d1bmRlZi5oIgotCi0v
LyBGaWxlcyBnZW5lcmF0ZWQgYXQgYnVpbGQtdGltZSBieSB0aGUgcHJvdG9idWYgY29tcGlsZXIu
Ci1SVENfUFVTSF9JR05PUklOR19XVU5ERUYoKQotI2lmZGVmIFdFQlJUQ19BTkRST0lEX1BMQVRG
T1JNX0JVSUxECi0jaW5jbHVkZSAiZXh0ZXJuYWwvd2VicnRjL3dlYnJ0Yy9sb2dnaW5nL3J0Y19l
dmVudF9sb2cvcnRjX2V2ZW50X2xvZy5wYi5oIgotI2Vsc2UKLSNpbmNsdWRlICJsb2dnaW5nL3J0
Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5wYi5oIgotI2VuZGlmCi1SVENfUE9QX0lHTk9SSU5H
X1dVTkRFRigpCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1lbnVtIGNsYXNzIEJhbmR3aWR0aFVz
YWdlOwotZW51bSBjbGFzcyBNZWRpYVR5cGU7Ci0KLXN0cnVjdCBBdWRpb0VuY29kZXJSdW50aW1l
Q29uZmlnOwotCi1jbGFzcyBQYXJzZWRSdGNFdmVudExvZyB7Ci0gIGZyaWVuZCBjbGFzcyBSdGNF
dmVudExvZ1Rlc3RIZWxwZXI7Ci0KLSBwdWJsaWM6Ci0gIFBhcnNlZFJ0Y0V2ZW50TG9nKCk7Ci0g
IH5QYXJzZWRSdGNFdmVudExvZygpOwotCi0gIHN0cnVjdCBCd2VQcm9iZUNsdXN0ZXJDcmVhdGVk
RXZlbnQgewotICAgIHVpbnQ2NF90IHRpbWVzdGFtcDsKLSAgICB1aW50MzJfdCBpZDsKLSAgICB1
aW50NjRfdCBiaXRyYXRlX2JwczsKLSAgICB1aW50MzJfdCBtaW5fcGFja2V0czsKLSAgICB1aW50
MzJfdCBtaW5fYnl0ZXM7Ci0gIH07Ci0KLSAgc3RydWN0IEJ3ZVByb2JlUmVzdWx0RXZlbnQgewot
ICAgIEJ3ZVByb2JlUmVzdWx0RXZlbnQoKTsKLSAgICBCd2VQcm9iZVJlc3VsdEV2ZW50KGNvbnN0
IEJ3ZVByb2JlUmVzdWx0RXZlbnQmKTsKLQotICAgIHVpbnQ2NF90IHRpbWVzdGFtcDsKLSAgICB1
aW50MzJfdCBpZDsKLSAgICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYml0cmF0ZV9icHM7Ci0g
ICAgYWJzbDo6b3B0aW9uYWw8UHJvYmVGYWlsdXJlUmVhc29uPiBmYWlsdXJlX3JlYXNvbjsKLSAg
fTsKLQotICBzdHJ1Y3QgQndlRGVsYXlCYXNlZFVwZGF0ZSB7Ci0gICAgdWludDY0X3QgdGltZXN0
YW1wOwotICAgIGludDMyX3QgYml0cmF0ZV9icHM7Ci0gICAgQmFuZHdpZHRoVXNhZ2UgZGV0ZWN0
b3Jfc3RhdGU7Ci0gIH07Ci0KLSAgc3RydWN0IEFsclN0YXRlRXZlbnQgewotICAgIHVpbnQ2NF90
IHRpbWVzdGFtcDsKLSAgICBib29sIGluX2FscjsKLSAgfTsKLQotICBzdHJ1Y3QgSWNlQ2FuZGlk
YXRlUGFpckNvbmZpZyB7Ci0gICAgdWludDY0X3QgdGltZXN0YW1wOwotICAgIEljZUNhbmRpZGF0
ZVBhaXJDb25maWdUeXBlIHR5cGU7Ci0gICAgdWludDMyX3QgY2FuZGlkYXRlX3BhaXJfaWQ7Ci0g
ICAgSWNlQ2FuZGlkYXRlVHlwZSBsb2NhbF9jYW5kaWRhdGVfdHlwZTsKLSAgICBJY2VDYW5kaWRh
dGVQYWlyUHJvdG9jb2wgbG9jYWxfcmVsYXlfcHJvdG9jb2w7Ci0gICAgSWNlQ2FuZGlkYXRlTmV0
d29ya1R5cGUgbG9jYWxfbmV0d29ya190eXBlOwotICAgIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNz
RmFtaWx5IGxvY2FsX2FkZHJlc3NfZmFtaWx5OwotICAgIEljZUNhbmRpZGF0ZVR5cGUgcmVtb3Rl
X2NhbmRpZGF0ZV90eXBlOwotICAgIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5IHJlbW90
ZV9hZGRyZXNzX2ZhbWlseTsKLSAgICBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2wgY2FuZGlkYXRl
X3BhaXJfcHJvdG9jb2w7Ci0gIH07Ci0KLSAgc3RydWN0IEljZUNhbmRpZGF0ZVBhaXJFdmVudCB7
Ci0gICAgdWludDY0X3QgdGltZXN0YW1wOwotICAgIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUg
dHlwZTsKLSAgICB1aW50MzJfdCBjYW5kaWRhdGVfcGFpcl9pZDsKLSAgfTsKLQotICBlbnVtIEV2
ZW50VHlwZSB7Ci0gICAgVU5LTk9XTl9FVkVOVCA9IDAsCi0gICAgTE9HX1NUQVJUID0gMSwKLSAg
ICBMT0dfRU5EID0gMiwKLSAgICBSVFBfRVZFTlQgPSAzLAotICAgIFJUQ1BfRVZFTlQgPSA0LAot
ICAgIEFVRElPX1BMQVlPVVRfRVZFTlQgPSA1LAotICAgIExPU1NfQkFTRURfQldFX1VQREFURSA9
IDYsCi0gICAgREVMQVlfQkFTRURfQldFX1VQREFURSA9IDcsCi0gICAgVklERU9fUkVDRUlWRVJf
Q09ORklHX0VWRU5UID0gOCwKLSAgICBWSURFT19TRU5ERVJfQ09ORklHX0VWRU5UID0gOSwKLSAg
ICBBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQgPSAxMCwKLSAgICBBVURJT19TRU5ERVJfQ09O
RklHX0VWRU5UID0gMTEsCi0gICAgQVVESU9fTkVUV09SS19BREFQVEFUSU9OX0VWRU5UID0gMTYs
Ci0gICAgQldFX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9FVkVOVCA9IDE3LAotICAgIEJXRV9QUk9C
RV9SRVNVTFRfRVZFTlQgPSAxOCwKLSAgICBBTFJfU1RBVEVfRVZFTlQgPSAxOSwKLSAgICBJQ0Vf
Q0FORElEQVRFX1BBSVJfQ09ORklHID0gMjAsCi0gICAgSUNFX0NBTkRJREFURV9QQUlSX0VWRU5U
ID0gMjEsCi0gIH07Ci0KLSAgZW51bSBjbGFzcyBNZWRpYVR5cGUgeyBBTlksIEFVRElPLCBWSURF
TywgREFUQSB9OwotCi0gIC8vIFJlYWRzIGFuIFJ0Y0V2ZW50TG9nIGZpbGUgYW5kIHJldHVybnMg
dHJ1ZSBpZiBwYXJzaW5nIHdhcyBzdWNjZXNzZnVsLgotICBib29sIFBhcnNlRmlsZShjb25zdCBz
dGQ6OnN0cmluZyYgZmlsZV9uYW1lKTsKLQotICAvLyBSZWFkcyBhbiBSdGNFdmVudExvZyBmcm9t
IGEgc3RyaW5nIGFuZCByZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4KLSAgYm9vbCBQYXJzZVN0
cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcyk7Ci0KLSAgLy8gUmVhZHMgYW4gUnRjRXZlbnRMb2cg
ZnJvbSBhbiBpc3RyZWFtIGFuZCByZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4KLSAgYm9vbCBQ
YXJzZVN0cmVhbShzdGQ6OmlzdHJlYW0mIHN0cmVhbSk7Ci0KLSAgLy8gUmV0dXJucyB0aGUgbnVt
YmVyIG9mIGV2ZW50cyBpbiBhbiBFdmVudFN0cmVhbS4KLSAgc2l6ZV90IEdldE51bWJlck9mRXZl
bnRzKCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgdGhlIGFycml2YWwgdGltZXN0YW1wIChpbiBtaWNy
b3NlY29uZHMpIGZyb20gYSBydGNsb2c6OkV2ZW50LgotICBpbnQ2NF90IEdldFRpbWVzdGFtcChz
aXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIHRoZSBldmVudCB0eXBlIG9mIHRoZSBy
dGNsb2c6OkV2ZW50IGF0IHxpbmRleHwuCi0gIEV2ZW50VHlwZSBHZXRFdmVudFR5cGUoc2l6ZV90
IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyB0aGUgaGVhZGVyLCBkaXJlY3Rpb24sIGhlYWRl
ciBsZW5ndGggYW5kIHBhY2tldCBsZW5ndGggZnJvbSB0aGUgUlRQCi0gIC8vIGV2ZW50IGF0IHxp
bmRleHwsIGFuZCBzdG9yZXMgdGhlIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9uZGluZyBvdXRwdXQK
LSAgLy8gcGFyYW1ldGVycy4gRWFjaCBvdXRwdXQgcGFyYW1ldGVyIGNhbiBiZSBzZXQgdG8gbnVs
bHB0ciBpZiB0aGF0IHZhbHVlCi0gIC8vIGlzbid0IG5lZWRlZC4KLSAgLy8gTkI6IFRoZSBoZWFk
ZXIgbXVzdCBoYXZlIHNwYWNlIGZvciBhdCBsZWFzdCBJUF9QQUNLRVRfU0laRSBieXRlcy4KLSAg
Ly8gUmV0dXJuczogYSBwb2ludGVyIHRvIGEgaGVhZGVyIGV4dGVuc2lvbnMgbWFwIGFjcXVpcmVk
IGZyb20gcGFyc2luZwotICAvLyBjb3JyZXNwb25kaW5nIEF1ZGlvL1ZpZGVvIFNlbmRlci9SZWNl
aXZlciBjb25maWcgZXZlbnRzLgotICAvLyBXYXJuaW5nOiBpZiB0aGUgc2FtZSBTU1JDIGlzIHJl
dXNlZCBieSBib3RoIHZpZGVvIGFuZCBhdWRpbyBzdHJlYW1zIGR1cmluZwotICAvLyBjYWxsLCBl
eHRlbnNpb25zIG1hcHMgbWF5IGJlIGluY29ycmVjdCAodGhlIGxhc3Qgb25lIHdvdWxkIGJlIHJl
dHVybmVkKS4KLSAgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAqIEdldFJ0cEhlYWRlcihz
aXplX3QgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFja2V0RGlyZWN0aW9uKiBpbmNvbWluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBoZWFkZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBoZWFkZXJfbGVuZ3RoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogdG90YWxfbGVu
Z3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCog
cHJvYmVfY2x1c3Rlcl9pZCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgcGFja2V0LCBkaXJlY3Rpb24g
YW5kIHBhY2tldCBsZW5ndGggZnJvbSB0aGUgUlRDUCBldmVudCBhdCB8aW5kZXh8LAotICAvLyBh
bmQgc3RvcmVzIHRoZSB2YWx1ZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgb3V0cHV0IHBhcmFtZXRl
cnMuCi0gIC8vIEVhY2ggb3V0cHV0IHBhcmFtZXRlciBjYW4gYmUgc2V0IHRvIG51bGxwdHIgaWYg
dGhhdCB2YWx1ZSBpc24ndCBuZWVkZWQuCi0gIC8vIE5COiBUaGUgcGFja2V0IG11c3QgaGF2ZSBz
cGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VUX1NJWkUgYnl0ZXMuCi0gIHZvaWQgR2V0UnRjcFBh
Y2tldChzaXplX3QgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICBQYWNrZXREaXJlY3Rpb24q
IGluY29taW5nLAotICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogcGFja2V0LAotICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIGEgdmlk
ZW8gcmVjZWl2ZSBjb25maWcgZXZlbnQgdG8gYSBTdHJlYW1Db25maWcgc3RydWN0LgotICAvLyBP
bmx5IHRoZSBmaWVsZHMgdGhhdCBhcmUgc3RvcmVkIGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdy
aXR0ZW4uCi0gIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIEdldFZpZGVvUmVjZWl2ZUNvbmZpZyhzaXpl
X3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIGEgdmlkZW8gc2VuZCBjb25maWcgZXZlbnQg
dG8gYSBTdHJlYW1Db25maWcgc3RydWN0LiBJZiB0aGUgcHJvdG8KLSAgLy8gY29udGFpbnMgbXVs
dGlwbGUgU1NSQ3MgYW5kIFJUWCBTU1JDcyAodGhpcyB1c2VkIHRvIGJlIHRoZSBjYXNlIGZvcgot
ICAvLyBzaW11bGNhc3Qgc3RyZWFtcykgdGhlbiB3ZSByZXR1cm4gb25lIFN0cmVhbUNvbmZpZyBw
ZXIgU1NSQyxSVFhfU1NSQyBwYWlyLgotICAvLyBPbmx5IHRoZSBmaWVsZHMgdGhhdCBhcmUgc3Rv
cmVkIGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdyaXR0ZW4uCi0gIHN0ZDo6dmVjdG9yPHJ0Y2xv
Zzo6U3RyZWFtQ29uZmlnPiBHZXRWaWRlb1NlbmRDb25maWcoc2l6ZV90IGluZGV4KSBjb25zdDsK
LQotICAvLyBSZWFkcyBhIGF1ZGlvIHJlY2VpdmUgY29uZmlnIGV2ZW50IHRvIGEgU3RyZWFtQ29u
ZmlnIHN0cnVjdC4KLSAgLy8gT25seSB0aGUgZmllbGRzIHRoYXQgYXJlIHN0b3JlZCBpbiB0aGUg
cHJvdG9idWYgd2lsbCBiZSB3cml0dGVuLgotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBHZXRBdWRp
b1JlY2VpdmVDb25maWcoc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyBhIGNvbmZp
ZyBldmVudCB0byBhIFN0cmVhbUNvbmZpZyBzdHJ1Y3QuCi0gIC8vIE9ubHkgdGhlIGZpZWxkcyB0
aGF0IGFyZSBzdG9yZWQgaW4gdGhlIHByb3RvYnVmIHdpbGwgYmUgd3JpdHRlbi4KLSAgcnRjbG9n
OjpTdHJlYW1Db25maWcgR2V0QXVkaW9TZW5kQ29uZmlnKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0K
LSAgLy8gUmVhZHMgdGhlIFNTUkMgZnJvbSB0aGUgYXVkaW8gcGxheW91dCBldmVudCBhdCB8aW5k
ZXh8LiBUaGUgU1NSQyBpcyBzdG9yZWQKLSAgLy8gaW4gdGhlIG91dHB1dCBwYXJhbWV0ZXIgc3Ny
Yy4gVGhlIG91dHB1dCBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0byBudWxscHRyCi0gIC8vIGFuZCBp
biB0aGF0IGNhc2UgdGhlIGZ1bmN0aW9uIG9ubHkgYXNzZXJ0cyB0aGF0IHRoZSBldmVudCBpcyB3
ZWxsIGZvcm1lZC4KLSAgdm9pZCBHZXRBdWRpb1BsYXlvdXQoc2l6ZV90IGluZGV4LCB1aW50MzJf
dCogc3NyYykgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgYml0cmF0ZSwgZnJhY3Rpb24gbG9zcyAoYXMg
ZGVmaW5lZCBpbiBSRkMgMTg4OSkgYW5kIHRvdGFsIG51bWJlciBvZgotICAvLyBleHBlY3RlZCBw
YWNrZXRzIGZyb20gdGhlIGxvc3MgYmFzZWQgQldFIGV2ZW50IGF0IHxpbmRleHwgYW5kIHN0b3Jl
cyB0aGUKLSAgLy8gdmFsdWVzIGluCi0gIC8vIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBwYXJh
bWV0ZXJzLiBFYWNoIG91dHB1dCBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0bwotICAvLyBudWxscHRy
IGlmIHRoYXQKLSAgLy8gdmFsdWUgaXNuJ3QgbmVlZGVkLgotICB2b2lkIEdldExvc3NCYXNlZEJ3
ZVVwZGF0ZShzaXplX3QgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy
X3QqIGJpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90KiBm
cmFjdGlvbl9sb3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiB0b3Rh
bF9wYWNrZXRzKSBjb25zdDsKLQotICAvLyBSZWFkcyBiaXRyYXRlIGFuZCBkZXRlY3Rvcl9zdGF0
ZSBmcm9tIHRoZSBkZWxheSBiYXNlZCBCV0UgZXZlbnQgYXQgfGluZGV4fAotICAvLyBhbmQgc3Rv
cmVzIHRoZSB2YWx1ZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgb3V0cHV0IHBhcmFtZXRlcnMuIEVh
Y2ggb3V0cHV0Ci0gIC8vIHBhcmFtZXRlciBjYW4gYmUgc2V0IHRvIG51bGxwdHIgaWYgdGhhdAot
ICAvLyB2YWx1ZSBpc24ndCBuZWVkZWQuCi0gIEJ3ZURlbGF5QmFzZWRVcGRhdGUgR2V0RGVsYXlC
YXNlZEJ3ZVVwZGF0ZShzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIGEgYXVkaW8g
bmV0d29yayBhZGFwdGF0aW9uIGV2ZW50IHRvIGEgKG5vbi1OVUxMKQotICAvLyBBdWRpb0VuY29k
ZXJSdW50aW1lQ29uZmlnIHN0cnVjdC4gT25seSB0aGUgZmllbGRzIHRoYXQgYXJlCi0gIC8vIHN0
b3JlZCBpbiB0aGUgcHJvdG9idWYgd2lsbCBiZSB3cml0dGVuLgotICB2b2lkIEdldEF1ZGlvTmV0
d29ya0FkYXB0YXRpb24oc2l6ZV90IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQXVkaW9FbmNvZGVyUnVudGltZUNvbmZpZyogY29uZmlnKSBjb25zdDsKLQotICBCd2VQ
cm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQgR2V0QndlUHJvYmVDbHVzdGVyQ3JlYXRlZChzaXplX3Qg
aW5kZXgpIGNvbnN0OwotCi0gIEJ3ZVByb2JlUmVzdWx0RXZlbnQgR2V0QndlUHJvYmVSZXN1bHQo
c2l6ZV90IGluZGV4KSBjb25zdDsKLQotICBNZWRpYVR5cGUgR2V0TWVkaWFUeXBlKHVpbnQzMl90
IHNzcmMsIFBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0OwotCi0gIEFsclN0YXRlRXZl
bnQgR2V0QWxyU3RhdGUoc2l6ZV90IGluZGV4KSBjb25zdDsKLQotICBJY2VDYW5kaWRhdGVQYWly
Q29uZmlnIEdldEljZUNhbmRpZGF0ZVBhaXJDb25maWcoc2l6ZV90IGluZGV4KSBjb25zdDsKLSAg
SWNlQ2FuZGlkYXRlUGFpckV2ZW50IEdldEljZUNhbmRpZGF0ZVBhaXJFdmVudChzaXplX3QgaW5k
ZXgpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgR2V0VmlkZW9S
ZWNlaXZlQ29uZmlnKGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdDsKLSAgc3RkOjp2
ZWN0b3I8cnRjbG9nOjpTdHJlYW1Db25maWc+IEdldFZpZGVvU2VuZENvbmZpZygKLSAgICAgIGNv
bnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdDsKLSAgcnRjbG9nOjpTdHJlYW1Db25maWcg
R2V0QXVkaW9SZWNlaXZlQ29uZmlnKGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdDsK
LSAgcnRjbG9nOjpTdHJlYW1Db25maWcgR2V0QXVkaW9TZW5kQ29uZmlnKGNvbnN0IHJ0Y2xvZzo6
RXZlbnQmIGV2ZW50KSBjb25zdDsKLQotICBzdGQ6OnZlY3RvcjxydGNsb2c6OkV2ZW50PiBldmVu
dHNfOwotCi0gIHN0cnVjdCBTdHJlYW0gewotICAgIFN0cmVhbSh1aW50MzJfdCBzc3JjLAotICAg
ICAgICAgICBNZWRpYVR5cGUgbWVkaWFfdHlwZSwKLSAgICAgICAgICAgd2VicnRjOjpQYWNrZXRE
aXJlY3Rpb24gZGlyZWN0aW9uLAotICAgICAgICAgICB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lv
bk1hcCBtYXApCi0gICAgICAgIDogc3NyYyhzc3JjKSwKLSAgICAgICAgICBtZWRpYV90eXBlKG1l
ZGlhX3R5cGUpLAotICAgICAgICAgIGRpcmVjdGlvbihkaXJlY3Rpb24pLAotICAgICAgICAgIHJ0
cF9leHRlbnNpb25zX21hcChtYXApIHt9Ci0gICAgdWludDMyX3Qgc3NyYzsKLSAgICBNZWRpYVR5
cGUgbWVkaWFfdHlwZTsKLSAgICB3ZWJydGM6OlBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb247Ci0g
ICAgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAgcnRwX2V4dGVuc2lvbnNfbWFwOwotICB9
OwotCi0gIC8vIEFsbCBjb25maWd1cmVkIHN0cmVhbXMgZm91bmQgaW4gdGhlIGV2ZW50IGxvZy4K
LSAgc3RkOjp2ZWN0b3I8U3RyZWFtPiBzdHJlYW1zXzsKLQotICAvLyBUbyBmaW5kIGNvbmZpZ3Vy
ZWQgZXh0ZW5zaW9ucyBtYXAgZm9yIGdpdmVuIHN0cmVhbSwgd2hhdCBhcmUgbmVlZGVkIHRvCi0g
IC8vIHBhcnNlIGEgaGVhZGVyLgotICB0eXBlZGVmIHN0ZDo6cGFpcjx1aW50MzJfdCwgd2VicnRj
OjpQYWNrZXREaXJlY3Rpb24+IFN0cmVhbUlkOwotICBzdGQ6Om1hcDxTdHJlYW1JZCwgd2VicnRj
OjpSdHBIZWFkZXJFeHRlbnNpb25NYXAqPiBydHBfZXh0ZW5zaW9uc19tYXBzXzsKLX07Ci0KLX0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBMT0dHSU5HX1JUQ19FVkVOVF9MT0df
UlRDX0VWRU5UX0xPR19QQVJTRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9n
X3BhcnNlcl9uZXcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXJfbmV3LmNjCmluZGV4
IDVmYTY5ZWQ2MzdmNjVlYWMwOTEyOWI0NmY4MmI4NTk1ZjQxMzg0NTcuLjcyNzhlYTE4YjFkMzNj
NDVjM2Q4ZTc3ZTAwZTEyYmZjZWU5OGUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRf
bG9nX3BhcnNlcl9uZXcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5j
YwpAQCAtMjQsMjEgKzI0LDMwIEBACiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgog
I2luY2x1ZGUgImFwaS9ydHBfaGVhZGVycy5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJz
LmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvYmxvYl9lbmNvZGlu
Zy5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9lbmNvZGVyL2RlbHRhX2VuY29k
aW5nLmgiCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2VuY29kZXIvcnRjX2V2ZW50
X2xvZ19lbmNvZGVyX2NvbW1vbi5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9y
dGNfZXZlbnRfbG9nLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0
d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0
X2ZlZWRiYWNrX2FkYXB0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2Vz
dGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9pbmNsdWRlL3J0cF9jdm8uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUv
cnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5
dGVfaW8uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4
dGVuc2lvbnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0
eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Z2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvcHJvdG9idWZfdXRpbHMuaCIKIAordXNpbmcgd2VicnRjX2V2
ZW50X2xvZ2dpbmc6OlRvU2lnbmVkOwordXNpbmcgd2VicnRjX2V2ZW50X2xvZ2dpbmc6OlRvVW5z
aWduZWQ7CisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBuYW1lc3BhY2UgeworLy8gQ29udmVyc2lv
biBmdW5jdGlvbnMgZm9yIGxlZ2FjeSB3aXJlIGZvcm1hdC4KIFJ0Y3BNb2RlIEdldFJ1bnRpbWVS
dGNwTW9kZShydGNsb2c6OlZpZGVvUmVjZWl2ZUNvbmZpZzo6UnRjcE1vZGUgcnRjcF9tb2RlKSB7
CiAgIHN3aXRjaCAocnRjcF9tb2RlKSB7CiAgICAgY2FzZSBydGNsb2c6OlZpZGVvUmVjZWl2ZUNv
bmZpZzo6UlRDUF9DT01QT1VORDoKQEAgLTUwLDUyICs1OSw2IEBAIFJ0Y3BNb2RlIEdldFJ1bnRp
bWVSdGNwTW9kZShydGNsb2c6OlZpZGVvUmVjZWl2ZUNvbmZpZzo6UnRjcE1vZGUgcnRjcF9tb2Rl
KSB7CiAgIHJldHVybiBSdGNwTW9kZTo6a09mZjsKIH0KIAotUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OkV2ZW50VHlwZSBHZXRSdW50aW1lRXZlbnRUeXBlKAotICAgIHJ0Y2xvZzo6RXZlbnQ6OkV2ZW50
VHlwZSBldmVudF90eXBlKSB7Ci0gIHN3aXRjaCAoZXZlbnRfdHlwZSkgewotICAgIGNhc2UgcnRj
bG9nOjpFdmVudDo6VU5LTk9XTl9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExv
Z05ldzo6RXZlbnRUeXBlOjpVTktOT1dOX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6
TE9HX1NUQVJUOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6
OkxPR19TVEFSVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkxPR19FTkQ6Ci0gICAgICByZXR1
cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6TE9HX0VORDsKLSAgICBjYXNlIHJ0
Y2xvZzo6RXZlbnQ6OlJUUF9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05l
dzo6RXZlbnRUeXBlOjpSVFBfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpSVENQX0VW
RU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlJUQ1Bf
RVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBVURJT19QTEFZT1VUX0VWRU5UOgotICAg
ICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkFVRElPX1BMQVlPVVRf
RVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpMT1NTX0JBU0VEX0JXRV9VUERBVEU6Ci0g
ICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6TE9TU19CQVNFRF9C
V0VfVVBEQVRFOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6REVMQVlfQkFTRURfQldFX1VQREFU
RToKLSAgICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpERUxBWV9C
QVNFRF9CV0VfVVBEQVRFOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6VklERU9fUkVDRUlWRVJf
Q09ORklHX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5
cGU6OlZJREVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6
OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRM
b2dOZXc6OkV2ZW50VHlwZTo6VklERU9fU0VOREVSX0NPTkZJR19FVkVOVDsKLSAgICBjYXNlIHJ0
Y2xvZzo6RXZlbnQ6OkFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDoKLSAgICAgIHJldHVybiBQ
YXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpBVURJT19SRUNFSVZFUl9DT05GSUdfRVZF
TlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBVURJT19TRU5ERVJfQ09ORklHX0VWRU5UOgot
ICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkFVRElPX1NFTkRF
Ul9DT05GSUdfRVZFTlQ7Ci0gICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBVURJT19ORVRXT1JLX0FE
QVBUQVRJT05fRVZFTlQ6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50
VHlwZTo6QVVESU9fTkVUV09SS19BREFQVEFUSU9OX0VWRU5UOwotICAgIGNhc2UgcnRjbG9nOjpF
dmVudDo6QldFX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJz
ZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpCV0VfUFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0VW
RU5UOwotICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QldFX1BST0JFX1JFU1VMVF9FVkVOVDoKLSAg
ICAgIC8vIFByb2JlIHN1Y2Nlc3NlcyBhbmQgZmFpbHVyZXMgYXJlIGN1cnJlbnRseSBzdG9yZWQg
aW4gdGhlIHNhbWUgcHJvdG8KLSAgICAgIC8vIG1lc3NhZ2UsIHdlIGFyZSBtb3ZpbmcgdG93YXJk
cyBzZXBhcmF0ZSBtZXNzYWdlcy4gUHJvYmUgcmVzdWx0cwotICAgICAgLy8gdGhlcmVmb3JlIG5l
ZWQgc3BlY2lhbCB0cmVhdG1lbnQgaW4gdGhlIHBhcnNlci4KLSAgICAgIHJldHVybiBQYXJzZWRS
dGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpVTktOT1dOX0VWRU5UOwotICAgIGNhc2UgcnRjbG9n
OjpFdmVudDo6QUxSX1NUQVRFX0VWRU5UOgotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9n
TmV3OjpFdmVudFR5cGU6OkFMUl9TVEFURV9FVkVOVDsKLSAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6
OklDRV9DQU5ESURBVEVfUEFJUl9DT05GSUc6Ci0gICAgICByZXR1cm4gUGFyc2VkUnRjRXZlbnRM
b2dOZXc6OkV2ZW50VHlwZTo6SUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRzsKLSAgICBjYXNlIHJ0
Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJUl9FVkVOVDoKLSAgICAgIHJldHVybiBQYXJz
ZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRFX1BBSVJfRVZFTlQ7Ci0g
IH0KLSAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlVOS05PV05fRVZF
TlQ7Ci19Ci0KIEJhbmR3aWR0aFVzYWdlIEdldFJ1bnRpbWVEZXRlY3RvclN0YXRlKAogICAgIHJ0
Y2xvZzo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZTo6RGV0ZWN0b3JTdGF0ZSBkZXRlY3Rvcl9zdGF0ZSkg
ewogICBzd2l0Y2ggKGRldGVjdG9yX3N0YXRlKSB7CkBAIC0yMTIsNiArMTc1LDE3NSBAQCBJY2VD
YW5kaWRhdGVQYWlyRXZlbnRUeXBlIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBl
KAogICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0NoZWNrU2VudDsKIH0KIAor
Ly8gQ29udmVyc2lvbiBmdW5jdGlvbnMgZm9yIHZlcnNpb24gMiBvZiB0aGUgd2lyZSBmb3JtYXQu
CitCYW5kd2lkdGhVc2FnZSBHZXRSdW50aW1lRGV0ZWN0b3JTdGF0ZSgKKyAgICBydGNsb2cyOjpE
ZWxheUJhc2VkQndlVXBkYXRlczo6RGV0ZWN0b3JTdGF0ZSBkZXRlY3Rvcl9zdGF0ZSkgeworICBz
d2l0Y2ggKGRldGVjdG9yX3N0YXRlKSB7CisgICAgY2FzZSBydGNsb2cyOjpEZWxheUJhc2VkQndl
VXBkYXRlczo6QldFX05PUk1BTDoKKyAgICAgIHJldHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3Tm9y
bWFsOworICAgIGNhc2UgcnRjbG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkJXRV9VTkRFUlVT
SU5HOgorICAgICAgcmV0dXJuIEJhbmR3aWR0aFVzYWdlOjprQndVbmRlcnVzaW5nOworICAgIGNh
c2UgcnRjbG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXM6OkJXRV9PVkVSVVNJTkc6CisgICAgICBy
ZXR1cm4gQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZzsKKyAgICBjYXNlIHJ0Y2xvZzI6OkRl
bGF5QmFzZWRCd2VVcGRhdGVzOjpCV0VfVU5LTk9XTl9TVEFURToKKyAgICAgIGJyZWFrOworICB9
CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBCYW5kd2lkdGhVc2FnZTo6a0J3Tm9ybWFs
OworfQorCitQcm9iZUZhaWx1cmVSZWFzb24gR2V0UnVudGltZVByb2JlRmFpbHVyZVJlYXNvbigK
KyAgICBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1cmU6OkZhaWx1cmVSZWFzb24gZmFpbHVy
ZSkgeworICBzd2l0Y2ggKGZhaWx1cmUpIHsKKyAgICBjYXNlIHJ0Y2xvZzI6OkJ3ZVByb2JlUmVz
dWx0RmFpbHVyZTo6SU5WQUxJRF9TRU5EX1JFQ0VJVkVfSU5URVJWQUw6CisgICAgICByZXR1cm4g
UHJvYmVGYWlsdXJlUmVhc29uOjprSW52YWxpZFNlbmRSZWNlaXZlSW50ZXJ2YWw7CisgICAgY2Fz
ZSBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1cmU6OklOVkFMSURfU0VORF9SRUNFSVZFX1JB
VElPOgorICAgICAgcmV0dXJuIFByb2JlRmFpbHVyZVJlYXNvbjo6a0ludmFsaWRTZW5kUmVjZWl2
ZVJhdGlvOworICAgIGNhc2UgcnRjbG9nMjo6QndlUHJvYmVSZXN1bHRGYWlsdXJlOjpUSU1FT1VU
OgorICAgICAgcmV0dXJuIFByb2JlRmFpbHVyZVJlYXNvbjo6a1RpbWVvdXQ7CisgICAgY2FzZSBy
dGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1cmU6OlVOS05PV046CisgICAgICBicmVhazsKKyAg
fQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gUHJvYmVGYWlsdXJlUmVhc29uOjprVGlt
ZW91dDsKK30KKworSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUgR2V0UnVudGltZUljZUNhbmRp
ZGF0ZVBhaXJDb25maWdUeXBlKAorICAgIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OkljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlIHR5cGUpIHsKKyAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpBRERFRDoKKyAgICAgIHJl
dHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a0FkZGVkOworICAgIGNhc2UgcnRjbG9n
Mjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VVBEQVRFRDoKKyAgICAgIHJldHVybiBJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnVHlwZTo6a1VwZGF0ZWQ7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnOjpERVNUUk9ZRUQ6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFp
ckNvbmZpZ1R5cGU6OmtEZXN0cm95ZWQ7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQ
YWlyQ29uZmlnOjpTRUxFQ1RFRDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmln
VHlwZTo6a1NlbGVjdGVkOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZp
Zzo6VU5LTk9XTl9DT05GSUdfVFlQRToKKyAgICAgIGJyZWFrOworICB9CisgIFJUQ19OT1RSRUFD
SEVEKCk7CisgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQ29uZmlnVHlwZTo6a0FkZGVkOworfQor
CitJY2VDYW5kaWRhdGVUeXBlIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVUeXBlKAorICAgIHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkljZUNhbmRpZGF0ZVR5cGUgdHlwZSkgeworICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6
OkxPQ0FMOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVR5cGU6OmtMb2NhbDsKKyAgICBjYXNl
IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlNUVU46CisgICAgICByZXR1cm4gSWNl
Q2FuZGlkYXRlVHlwZTo6a1N0dW47CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWly
Q29uZmlnOjpQUkZMWDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVUeXBlOjprUHJmbHg7Cisg
ICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpSRUxBWToKKyAgICAgIHJl
dHVybiBJY2VDYW5kaWRhdGVUeXBlOjprUmVsYXk7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5k
aWRhdGVQYWlyQ29uZmlnOjpVTktOT1dOX0NBTkRJREFURV9UWVBFOgorICAgICAgcmV0dXJuIElj
ZUNhbmRpZGF0ZVR5cGU6OmtVbmtub3duOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7CisgIHJl
dHVybiBJY2VDYW5kaWRhdGVUeXBlOjprVW5rbm93bjsKK30KKworSWNlQ2FuZGlkYXRlUGFpclBy
b3RvY29sIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2woCisgICAgcnRjbG9nMjo6
SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6UHJvdG9jb2wgcHJvdG9jb2wpIHsKKyAgc3dpdGNoIChw
cm90b2NvbCkgeworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VURQ
OgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbDo6a1VkcDsKKyAgICBjYXNl
IHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlRDUDoKKyAgICAgIHJldHVybiBJY2VD
YW5kaWRhdGVQYWlyUHJvdG9jb2w6OmtUY3A7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnOjpTU0xUQ1A6CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3Rv
Y29sOjprU3NsdGNwOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6
VExTOgorICAgICAgcmV0dXJuIEljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbDo6a1RsczsKKyAgICBj
YXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fUFJPVE9DT0w6Cisg
ICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprVW5rbm93bjsKKyAgfQorICBS
VENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpclByb3RvY29sOjprVW5r
bm93bjsKK30KKworSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHkgR2V0UnVudGltZUljZUNh
bmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5KAorICAgIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJD
b25maWc6OkFkZHJlc3NGYW1pbHkgYWRkcmVzc19mYW1pbHkpIHsKKyAgc3dpdGNoIChhZGRyZXNz
X2ZhbWlseSkgeworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6SVBW
NDoKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseTo6a0lwdjQ7Cisg
ICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpJUFY2OgorICAgICAgcmV0
dXJuIEljZUNhbmRpZGF0ZVBhaXJBZGRyZXNzRmFtaWx5OjprSXB2NjsKKyAgICBjYXNlIHJ0Y2xv
ZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OlVOS05PV05fQUREUkVTU19GQU1JTFk6CisgICAg
ICByZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHk6OmtVbmtub3duOworICB9Cisg
IFJUQ19OT1RSRUFDSEVEKCk7CisgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWls
eTo6a1Vua25vd247Cit9CisKK0ljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlIEdldFJ1bnRpbWVJY2VD
YW5kaWRhdGVOZXR3b3JrVHlwZSgKKyAgICBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmln
OjpOZXR3b3JrVHlwZSBuZXR3b3JrX3R5cGUpIHsKKyAgc3dpdGNoIChuZXR3b3JrX3R5cGUpIHsK
KyAgICBjYXNlIHJ0Y2xvZzI6OkljZUNhbmRpZGF0ZVBhaXJDb25maWc6OkVUSEVSTkVUOgorICAg
ICAgcmV0dXJuIEljZUNhbmRpZGF0ZU5ldHdvcmtUeXBlOjprRXRoZXJuZXQ7CisgICAgY2FzZSBy
dGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpMT09QQkFDSzoKKyAgICAgIHJldHVybiBJ
Y2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a0xvb3BiYWNrOworICAgIGNhc2UgcnRjbG9nMjo6SWNl
Q2FuZGlkYXRlUGFpckNvbmZpZzo6V0lGSToKKyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3
b3JrVHlwZTo6a1dpZmk7CisgICAgY2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmln
OjpWUE46CisgICAgICByZXR1cm4gSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtWcG47CisgICAg
Y2FzZSBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnOjpDRUxMVUxBUjoKKyAgICAgIHJl
dHVybiBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a0NlbGx1bGFyOworICAgIGNhc2UgcnRjbG9n
Mjo6SWNlQ2FuZGlkYXRlUGFpckNvbmZpZzo6VU5LTk9XTl9ORVRXT1JLX1RZUEU6CisgICAgICBy
ZXR1cm4gSWNlQ2FuZGlkYXRlTmV0d29ya1R5cGU6OmtVbmtub3duOworICB9CisgIFJUQ19OT1RS
RUFDSEVEKCk7CisgIHJldHVybiBJY2VDYW5kaWRhdGVOZXR3b3JrVHlwZTo6a1Vua25vd247Cit9
CisKK0ljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJF
dmVudFR5cGUoCisgICAgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpJY2VDYW5kaWRh
dGVQYWlyRXZlbnRUeXBlIHR5cGUpIHsKKyAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBydGNs
b2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQ6OkNIRUNLX1NFTlQ6CisgICAgICByZXR1cm4gSWNl
Q2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0NoZWNrU2VudDsKKyAgICBjYXNlIHJ0Y2xvZzI6Oklj
ZUNhbmRpZGF0ZVBhaXJFdmVudDo6Q0hFQ0tfUkVDRUlWRUQ6CisgICAgICByZXR1cm4gSWNlQ2Fu
ZGlkYXRlUGFpckV2ZW50VHlwZTo6a0NoZWNrUmVjZWl2ZWQ7CisgICAgY2FzZSBydGNsb2cyOjpJ
Y2VDYW5kaWRhdGVQYWlyRXZlbnQ6OkNIRUNLX1JFU1BPTlNFX1NFTlQ6CisgICAgICByZXR1cm4g
SWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0NoZWNrUmVzcG9uc2VTZW50OworICAgIGNhc2Ug
cnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpDSEVDS19SRVNQT05TRV9SRUNFSVZFRDoK
KyAgICAgIHJldHVybiBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlOjprQ2hlY2tSZXNwb25zZVJl
Y2VpdmVkOworICAgIGNhc2UgcnRjbG9nMjo6SWNlQ2FuZGlkYXRlUGFpckV2ZW50OjpVTktOT1dO
X0NIRUNLX1RZUEU6CisgICAgICBicmVhazsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworICBy
ZXR1cm4gSWNlQ2FuZGlkYXRlUGFpckV2ZW50VHlwZTo6a0NoZWNrU2VudDsKK30KKworc3RkOjp2
ZWN0b3I8UnRwRXh0ZW5zaW9uPiBHZXRSdW50aW1lUnRwSGVhZGVyRXh0ZW5zaW9uQ29uZmlnKAor
ICAgIGNvbnN0IHJ0Y2xvZzI6OlJ0cEhlYWRlckV4dGVuc2lvbkNvbmZpZyYgcHJvdG9faGVhZGVy
X2V4dGVuc2lvbnMpIHsKKyAgc3RkOjp2ZWN0b3I8UnRwRXh0ZW5zaW9uPiBydHBfZXh0ZW5zaW9u
czsKKyAgaWYgKHByb3RvX2hlYWRlcl9leHRlbnNpb25zLmhhc190cmFuc21pc3Npb25fdGltZV9v
ZmZzZXRfaWQoKSkgeworICAgIHJ0cF9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygKKyAgICAgICAg
UnRwRXh0ZW5zaW9uOjprVGltZXN0YW1wT2Zmc2V0VXJpLAorICAgICAgICBwcm90b19oZWFkZXJf
ZXh0ZW5zaW9ucy50cmFuc21pc3Npb25fdGltZV9vZmZzZXRfaWQoKSk7CisgIH0KKyAgaWYgKHBy
b3RvX2hlYWRlcl9leHRlbnNpb25zLmhhc19hYnNvbHV0ZV9zZW5kX3RpbWVfaWQoKSkgeworICAg
IHJ0cF9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygKKyAgICAgICAgUnRwRXh0ZW5zaW9uOjprQWJz
U2VuZFRpbWVVcmksCisgICAgICAgIHByb3RvX2hlYWRlcl9leHRlbnNpb25zLmFic29sdXRlX3Nl
bmRfdGltZV9pZCgpKTsKKyAgfQorICBpZiAocHJvdG9faGVhZGVyX2V4dGVuc2lvbnMuaGFzX3Ry
YW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfaWQoKSkgeworICAgIHJ0cF9leHRlbnNpb25zLmVtcGxh
Y2VfYmFjaygKKyAgICAgICAgUnRwRXh0ZW5zaW9uOjprVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJV
cmksCisgICAgICAgIHByb3RvX2hlYWRlcl9leHRlbnNpb25zLnRyYW5zcG9ydF9zZXF1ZW5jZV9u
dW1iZXJfaWQoKSk7CisgIH0KKyAgaWYgKHByb3RvX2hlYWRlcl9leHRlbnNpb25zLmhhc19hdWRp
b19sZXZlbF9pZCgpKSB7CisgICAgcnRwX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKFJ0cEV4dGVu
c2lvbjo6a0F1ZGlvTGV2ZWxVcmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b3RvX2hlYWRlcl9leHRlbnNpb25zLmF1ZGlvX2xldmVsX2lkKCkpOworICB9CisgIGlmIChwcm90
b19oZWFkZXJfZXh0ZW5zaW9ucy5oYXNfdmlkZW9fcm90YXRpb25faWQoKSkgeworICAgIHJ0cF9l
eHRlbnNpb25zLmVtcGxhY2VfYmFjayhSdHBFeHRlbnNpb246OmtWaWRlb1JvdGF0aW9uVXJpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b19oZWFkZXJfZXh0ZW5zaW9ucy52
aWRlb19yb3RhdGlvbl9pZCgpKTsKKyAgfQorICByZXR1cm4gcnRwX2V4dGVuc2lvbnM7Cit9Cisv
LyBFbmQgb2YgY29udmVyc2lvbiBmdW5jdGlvbnMuCisKIC8vIFJlYWRzIGEgVmFySW50IGZyb20g
fHN0cmVhbXwgYW5kIHJldHVybnMgaXQuIEFsc28gd3JpdGVzIHRoZSByZWFkIGJ5dGVzIHRvCiAv
LyB8YnVmZmVyfCBzdGFydGluZyB8Ynl0ZXNfd3JpdHRlbnwgYnl0ZXMgaW50byB0aGUgYnVmZmVy
LiB8Ynl0ZXNfd3JpdHRlbnwgaXMKIC8vIGluY3JlbWVudGVkIGZvciBlYWNoIHdyaXR0ZW4gYnl0
ZS4KQEAgLTI3MSwxNSArNDAzLDMyMiBAQCB2b2lkIFNvcnRQYWNrZXRGZWVkYmFja1ZlY3Rvcldp
dGhMb3NzKHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiogdmVjKSB7CiAgIHN0ZDo6c29ydCh2
ZWMtPmJlZ2luKCksIHZlYy0+ZW5kKCksIExvc3NIYW5kbGluZ1BhY2tldEZlZWRiYWNrQ29tcGFy
YXRvcigpKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFByb3RvVHlwZSwgdHlwZW5hbWUgTG9n
Z2VkVHlwZT4KK3ZvaWQgU3RvcmVSdHBQYWNrZXRzKAorICAgIGNvbnN0IFByb3RvVHlwZSYgcHJv
dG8sCisgICAgc3RkOjptYXA8dWludDMyX3QsIHN0ZDo6dmVjdG9yPExvZ2dlZFR5cGU+PiogcnRw
X3BhY2tldHNfbWFwKSB7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1wX21zKCkpOwor
ICBSVENfQ0hFQ0socHJvdG8uaGFzX21hcmtlcigpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19w
YXlsb2FkX3R5cGUoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfc2VxdWVuY2VfbnVtYmVyKCkp
OworICBSVENfQ0hFQ0socHJvdG8uaGFzX3J0cF90aW1lc3RhbXAoKSk7CisgIFJUQ19DSEVDSyhw
cm90by5oYXNfc3NyYygpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19wYXlsb2FkX3NpemUoKSk7
CisgIFJUQ19DSEVDSyhwcm90by5oYXNfaGVhZGVyX3NpemUoKSk7CisgIFJUQ19DSEVDSyhwcm90
by5oYXNfcGFkZGluZ19zaXplKCkpOworCisgIC8vIEJhc2UgZXZlbnQKKyAgeworICAgIFJUUEhl
YWRlciBoZWFkZXI7CisgICAgaGVhZGVyLm1hcmtlckJpdCA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PGJv
b2w+KHByb3RvLm1hcmtlcigpKTsKKyAgICBoZWFkZXIucGF5bG9hZFR5cGUgPSBydGM6OmNoZWNr
ZWRfY2FzdDx1aW50OF90Pihwcm90by5wYXlsb2FkX3R5cGUoKSk7CisgICAgaGVhZGVyLnNlcXVl
bmNlTnVtYmVyID0KKyAgICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8dWludDE2X3Q+KHByb3RvLnNl
cXVlbmNlX251bWJlcigpKTsKKyAgICBoZWFkZXIudGltZXN0YW1wID0gcnRjOjpjaGVja2VkX2Nh
c3Q8dWludDMyX3Q+KHByb3RvLnJ0cF90aW1lc3RhbXAoKSk7CisgICAgaGVhZGVyLnNzcmMgPSBy
dGM6OmNoZWNrZWRfY2FzdDx1aW50MzJfdD4ocHJvdG8uc3NyYygpKTsKKyAgICBoZWFkZXIubnVt
Q1NSQ3MgPSAwOyAgLy8gVE9ETyh0ZXJlbGl1cyk6IEltcGxlbWVudCBDU1JDLgorICAgIGhlYWRl
ci5wYWRkaW5nTGVuZ3RoID0gcnRjOjpjaGVja2VkX2Nhc3Q8c2l6ZV90Pihwcm90by5wYWRkaW5n
X3NpemUoKSk7CisgICAgaGVhZGVyLmhlYWRlckxlbmd0aCA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PHNp
emVfdD4ocHJvdG8uaGVhZGVyX3NpemUoKSk7CisgICAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3Vs
ZCB3ZSBpbXBsZW1lbnQgcGF5bG9hZF90eXBlX2ZyZXF1ZW5jeT8KKyAgICBpZiAocHJvdG8uaGFz
X3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIoKSkgeworICAgICAgaGVhZGVyLmV4dGVuc2lvbi5o
YXNUcmFuc3BvcnRTZXF1ZW5jZU51bWJlciA9IHRydWU7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9u
LnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyID0KKyAgICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDx1
aW50MTZfdD4ocHJvdG8udHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcigpKTsKKyAgICB9CisgICAg
aWYgKHByb3RvLmhhc190cmFuc21pc3Npb25fdGltZV9vZmZzZXQoKSkgeworICAgICAgaGVhZGVy
LmV4dGVuc2lvbi5oYXNUcmFuc21pc3Npb25UaW1lT2Zmc2V0ID0gdHJ1ZTsKKyAgICAgIGhlYWRl
ci5leHRlbnNpb24udHJhbnNtaXNzaW9uVGltZU9mZnNldCA9CisgICAgICAgICAgcnRjOjpjaGVj
a2VkX2Nhc3Q8aW50MzJfdD4ocHJvdG8udHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0KCkpOworICAg
IH0KKyAgICBpZiAocHJvdG8uaGFzX2Fic29sdXRlX3NlbmRfdGltZSgpKSB7CisgICAgICBoZWFk
ZXIuZXh0ZW5zaW9uLmhhc0Fic29sdXRlU2VuZFRpbWUgPSB0cnVlOworICAgICAgaGVhZGVyLmV4
dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1lID0KKyAgICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDx1
aW50MzJfdD4ocHJvdG8uYWJzb2x1dGVfc2VuZF90aW1lKCkpOworICAgIH0KKyAgICBpZiAocHJv
dG8uaGFzX3ZpZGVvX3JvdGF0aW9uKCkpIHsKKyAgICAgIGhlYWRlci5leHRlbnNpb24uaGFzVmlk
ZW9Sb3RhdGlvbiA9IHRydWU7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLnZpZGVvUm90YXRpb24g
PSBDb252ZXJ0Q1ZPQnl0ZVRvVmlkZW9Sb3RhdGlvbigKKyAgICAgICAgICBydGM6OmNoZWNrZWRf
Y2FzdDx1aW50OF90Pihwcm90by52aWRlb19yb3RhdGlvbigpKSk7CisgICAgfQorICAgIGlmIChw
cm90by5oYXNfYXVkaW9fbGV2ZWwoKSkgeworICAgICAgUlRDX0NIRUNLKHByb3RvLmhhc192b2lj
ZV9hY3Rpdml0eSgpKTsKKyAgICAgIGhlYWRlci5leHRlbnNpb24uaGFzQXVkaW9MZXZlbCA9IHRy
dWU7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLnZvaWNlQWN0aXZpdHkgPQorICAgICAgICAgIHJ0
Yzo6Y2hlY2tlZF9jYXN0PGJvb2w+KHByb3RvLnZvaWNlX2FjdGl2aXR5KCkpOworICAgICAgY29u
c3QgdWludDhfdCBhdWRpb19sZXZlbCA9CisgICAgICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8dWlu
dDhfdD4ocHJvdG8uYXVkaW9fbGV2ZWwoKSk7CisgICAgICBSVENfQ0hFQ0tfTEUoYXVkaW9fbGV2
ZWwsIDB4N0Z1KTsKKyAgICAgIGhlYWRlci5leHRlbnNpb24uYXVkaW9MZXZlbCA9IGF1ZGlvX2xl
dmVsOworICAgIH0gZWxzZSB7CisgICAgICBSVENfQ0hFQ0soIXByb3RvLmhhc192b2ljZV9hY3Rp
dml0eSgpKTsKKyAgICB9CisgICAgKCpydHBfcGFja2V0c19tYXApW2hlYWRlci5zc3JjXS5lbXBs
YWNlX2JhY2soCisgICAgICAgIHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAwMCwgaGVhZGVyLCBw
cm90by5oZWFkZXJfc2l6ZSgpLAorICAgICAgICBwcm90by5wYXlsb2FkX3NpemUoKSArIGhlYWRl
ci5oZWFkZXJMZW5ndGggKyBoZWFkZXIucGFkZGluZ0xlbmd0aCk7CisgIH0KKworICBjb25zdCBz
aXplX3QgbnVtYmVyX29mX2RlbHRhcyA9CisgICAgICBwcm90by5oYXNfbnVtYmVyX29mX2RlbHRh
cygpID8gcHJvdG8ubnVtYmVyX29mX2RlbHRhcygpIDogMHU7CisgIGlmIChudW1iZXJfb2ZfZGVs
dGFzID09IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyB0aW1lc3RhbXBfbXMgKGV2ZW50
KQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHRpbWVzdGFtcF9tc192
YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLnRpbWVzdGFtcF9tc19kZWx0YXMoKSwK
KyAgICAgICAgICAgICAgICAgICBUb1Vuc2lnbmVkKHByb3RvLnRpbWVzdGFtcF9tcygpKSwgbnVt
YmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUSh0aW1lc3RhbXBfbXNfdmFsdWVzLnNpemUo
KSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gbWFya2VyIChSVFAgYmFzZSkKKyAgc3RkOjp2
ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBtYXJrZXJfdmFsdWVzID0KKyAgICAgIERl
Y29kZURlbHRhcyhwcm90by5tYXJrZXJfZGVsdGFzKCksIHByb3RvLm1hcmtlcigpLCBudW1iZXJf
b2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKG1hcmtlcl92YWx1ZXMuc2l6ZSgpLCBudW1iZXJf
b2ZfZGVsdGFzKTsKKworICAvLyBwYXlsb2FkX3R5cGUgKFJUUCBiYXNlKQorICBzdGQ6OnZlY3Rv
cjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHBheWxvYWRfdHlwZV92YWx1ZXMgPSBEZWNvZGVE
ZWx0YXMoCisgICAgICBwcm90by5wYXlsb2FkX3R5cGVfZGVsdGFzKCksIHByb3RvLnBheWxvYWRf
dHlwZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHBheWxvYWRfdHlwZV92
YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBzZXF1ZW5jZV9udW1iZXIg
KFJUUCBiYXNlKQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHNlcXVl
bmNlX251bWJlcl92YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLnNlcXVlbmNlX251
bWJlcl9kZWx0YXMoKSwgcHJvdG8uc2VxdWVuY2VfbnVtYmVyKCksCisgICAgICAgICAgICAgICAg
ICAgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShzZXF1ZW5jZV9udW1iZXJfdmFs
dWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gcnRwX3RpbWVzdGFtcCAoUlRQ
IGJhc2UpCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gcnRwX3RpbWVz
dGFtcF92YWx1ZXMgPSBEZWNvZGVEZWx0YXMoCisgICAgICBwcm90by5ydHBfdGltZXN0YW1wX2Rl
bHRhcygpLCBwcm90by5ydHBfdGltZXN0YW1wKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENf
Q0hFQ0tfRVEocnRwX3RpbWVzdGFtcF92YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsK
KworICAvLyBzc3JjIChSVFAgYmFzZSkKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWlu
dDY0X3Q+PiBzc3JjX3ZhbHVlcyA9CisgICAgICBEZWNvZGVEZWx0YXMocHJvdG8uc3NyY19kZWx0
YXMoKSwgcHJvdG8uc3NyYygpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHNz
cmNfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gcGF5bG9hZF9zaXpl
IChSVFAgYmFzZSkKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiBwYXls
b2FkX3NpemVfdmFsdWVzID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJvdG8ucGF5bG9hZF9zaXpl
X2RlbHRhcygpLCBwcm90by5wYXlsb2FkX3NpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJU
Q19DSEVDS19FUShwYXlsb2FkX3NpemVfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7
CisKKyAgLy8gaGVhZGVyX3NpemUgKFJUUCBiYXNlKQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4+IGhlYWRlcl9zaXplX3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAgICAg
IHByb3RvLmhlYWRlcl9zaXplX2RlbHRhcygpLCBwcm90by5oZWFkZXJfc2l6ZSgpLCBudW1iZXJf
b2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGhlYWRlcl9zaXplX3ZhbHVlcy5zaXplKCksIG51
bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIHBhZGRpbmdfc2l6ZSAoUlRQIGJhc2UpCisgIHN0ZDo6
dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gcGFkZGluZ19zaXplX3ZhbHVlcyA9IERl
Y29kZURlbHRhcygKKyAgICAgIHByb3RvLnBhZGRpbmdfc2l6ZV9kZWx0YXMoKSwgcHJvdG8ucGFk
ZGluZ19zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEocGFkZGluZ19z
aXplX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIHRyYW5zcG9ydF9z
ZXF1ZW5jZV9udW1iZXIgKFJUUCBleHRlbnNpb24pCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90Pj4gdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl92YWx1ZXM7CisgIHsKKyAg
ICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZV90cmFuc3BvcnRfc2VxdWVuY2Vf
bnVtYmVyID0KKyAgICAgICAgcHJvdG8uaGFzX3RyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXIoKQor
ICAgICAgICAgICAgPyBwcm90by50cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyKCkKKyAgICAgICAg
ICAgIDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgICAgdHJhbnNwb3J0X3NlcXVlbmNl
X251bWJlcl92YWx1ZXMgPQorICAgICAgICBEZWNvZGVEZWx0YXMocHJvdG8udHJhbnNwb3J0X3Nl
cXVlbmNlX251bWJlcl9kZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHJhbnNw
b3J0X3NlcXVlbmNlX251bWJlciwgbnVtYmVyX29mX2RlbHRhcyk7CisgICAgUlRDX0NIRUNLX0VR
KHRyYW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRh
cyk7CisgIH0KKworICAvLyB0cmFuc21pc3Npb25fdGltZV9vZmZzZXQgKFJUUCBleHRlbnNpb24p
CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdHJhbnNtaXNzaW9uX3Rp
bWVfb2Zmc2V0X3ZhbHVlczsKKyAgeworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
PiB1bnNpZ25lZF9iYXNlX3RyYW5zbWlzc2lvbl90aW1lX29mZnNldCA9CisgICAgICAgIHByb3Rv
Lmhhc190cmFuc21pc3Npb25fdGltZV9vZmZzZXQoKQorICAgICAgICAgICAgPyBUb1Vuc2lnbmVk
KHByb3RvLnRyYW5zbWlzc2lvbl90aW1lX29mZnNldCgpKQorICAgICAgICAgICAgOiBhYnNsOjpv
cHRpb25hbDx1aW50NjRfdD4oKTsKKyAgICB0cmFuc21pc3Npb25fdGltZV9vZmZzZXRfdmFsdWVz
ID0KKyAgICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLnRyYW5zbWlzc2lvbl90aW1lX29mZnNldF9k
ZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkX2Jhc2VfdHJhbnNtaXNzaW9u
X3RpbWVfb2Zmc2V0LCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgICBSVENfQ0hFQ0tfRVEodHJhbnNt
aXNzaW9uX3RpbWVfb2Zmc2V0X3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworICB9
CisKKyAgLy8gYWJzb2x1dGVfc2VuZF90aW1lIChSVFAgZXh0ZW5zaW9uKQorICBzdGQ6OnZlY3Rv
cjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGFic29sdXRlX3NlbmRfdGltZV92YWx1ZXM7Cisg
IHsKKyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZV9hYnNvbHV0ZV9zZW5k
X3RpbWUgPQorICAgICAgICBwcm90by5oYXNfYWJzb2x1dGVfc2VuZF90aW1lKCkgPyBwcm90by5h
YnNvbHV0ZV9zZW5kX3RpbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgICBhYnNvbHV0ZV9zZW5kX3RpbWVf
dmFsdWVzID0KKyAgICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLmFic29sdXRlX3NlbmRfdGltZV9k
ZWx0YXMoKSwgYmFzZV9hYnNvbHV0ZV9zZW5kX3RpbWUsCisgICAgICAgICAgICAgICAgICAgICBu
dW1iZXJfb2ZfZGVsdGFzKTsKKyAgICBSVENfQ0hFQ0tfRVEoYWJzb2x1dGVfc2VuZF90aW1lX3Zh
bHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworICB9CisKKyAgLy8gdmlkZW9fcm90YXRp
b24gKFJUUCBleHRlbnNpb24pCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
Pj4gdmlkZW9fcm90YXRpb25fdmFsdWVzOworICB7CisgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8
dWludDY0X3Q+IGJhc2VfdmlkZW9fcm90YXRpb24gPQorICAgICAgICBwcm90by5oYXNfdmlkZW9f
cm90YXRpb24oKSA/IHByb3RvLnZpZGVvX3JvdGF0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgICB2aWRlb19y
b3RhdGlvbl92YWx1ZXMgPSBEZWNvZGVEZWx0YXMocHJvdG8udmlkZW9fcm90YXRpb25fZGVsdGFz
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdmlkZW9f
cm90YXRpb24sIG51bWJlcl9vZl9kZWx0YXMpOworICAgIFJUQ19DSEVDS19FUSh2aWRlb19yb3Rh
dGlvbl92YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgfQorCisgIC8vIGF1ZGlv
X2xldmVsIChSVFAgZXh0ZW5zaW9uKQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50
NjRfdD4+IGF1ZGlvX2xldmVsX3ZhbHVlczsKKyAgeworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90PiBiYXNlX2F1ZGlvX2xldmVsID0KKyAgICAgICAgcHJvdG8uaGFzX2F1ZGlvX2xl
dmVsKCkgPyBwcm90by5hdWRpb19sZXZlbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgICAgYXVkaW9fbGV2ZWxfdmFsdWVz
ID0gRGVjb2RlRGVsdGFzKHByb3RvLmF1ZGlvX2xldmVsX2RlbHRhcygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX2F1ZGlvX2xldmVsLCBudW1iZXJfb2ZfZGVs
dGFzKTsKKyAgICBSVENfQ0hFQ0tfRVEoYXVkaW9fbGV2ZWxfdmFsdWVzLnNpemUoKSwgbnVtYmVy
X29mX2RlbHRhcyk7CisgIH0KKworICAvLyB2b2ljZV9hY3Rpdml0eSAoUlRQIGV4dGVuc2lvbikK
KyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB2b2ljZV9hY3Rpdml0eV92
YWx1ZXM7CisgIHsKKyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gYmFzZV92b2lj
ZV9hY3Rpdml0eSA9CisgICAgICAgIHByb3RvLmhhc192b2ljZV9hY3Rpdml0eSgpID8gcHJvdG8u
dm9pY2VfYWN0aXZpdHkoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFi
c2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICAgIHZvaWNlX2FjdGl2aXR5X3ZhbHVlcyA9IERl
Y29kZURlbHRhcyhwcm90by52b2ljZV9hY3Rpdml0eV9kZWx0YXMoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV92b2ljZV9hY3Rpdml0eSwgbnVtYmVyX29m
X2RlbHRhcyk7CisgICAgUlRDX0NIRUNLX0VRKHZvaWNlX2FjdGl2aXR5X3ZhbHVlcy5zaXplKCks
IG51bWJlcl9vZl9kZWx0YXMpOworICB9CisKKyAgLy8gRGVsdGEgZGVjb2RpbmcKKyAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1iZXJfb2ZfZGVsdGFzOyArK2kpIHsKKyAgICBSVENfQ0hFQ0so
dGltZXN0YW1wX21zX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgUlRDX0NIRUNLKG1hcmtl
cl92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDSyhwYXlsb2FkX3R5cGVfdmFs
dWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBSVENfQ0hFQ0soc2VxdWVuY2VfbnVtYmVyX3ZhbHVl
c1tpXS5oYXNfdmFsdWUoKSk7CisgICAgUlRDX0NIRUNLKHJ0cF90aW1lc3RhbXBfdmFsdWVzW2ld
Lmhhc192YWx1ZSgpKTsKKyAgICBSVENfQ0hFQ0soc3NyY192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkp
OworICAgIFJUQ19DSEVDSyhwYXlsb2FkX3NpemVfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAg
ICBSVENfQ0hFQ0soaGVhZGVyX3NpemVfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBSVENf
Q0hFQ0socGFkZGluZ19zaXplX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisKKyAgICBpbnQ2NF90
IHRpbWVzdGFtcF9tczsKKyAgICBSVENfQ0hFQ0soVG9TaWduZWQodGltZXN0YW1wX21zX3ZhbHVl
c1tpXS52YWx1ZSgpLCAmdGltZXN0YW1wX21zKSk7CisKKyAgICBSVFBIZWFkZXIgaGVhZGVyOwor
ICAgIGhlYWRlci5tYXJrZXJCaXQgPSBydGM6OmNoZWNrZWRfY2FzdDxib29sPigqbWFya2VyX3Zh
bHVlc1tpXSk7CisgICAgaGVhZGVyLnBheWxvYWRUeXBlID0gcnRjOjpjaGVja2VkX2Nhc3Q8dWlu
dDhfdD4oKnBheWxvYWRfdHlwZV92YWx1ZXNbaV0pOworICAgIGhlYWRlci5zZXF1ZW5jZU51bWJl
ciA9CisgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQxNl90Pigqc2VxdWVuY2VfbnVtYmVy
X3ZhbHVlc1tpXSk7CisgICAgaGVhZGVyLnRpbWVzdGFtcCA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PHVp
bnQzMl90PigqcnRwX3RpbWVzdGFtcF92YWx1ZXNbaV0pOworICAgIGhlYWRlci5zc3JjID0gcnRj
OjpjaGVja2VkX2Nhc3Q8dWludDMyX3Q+KCpzc3JjX3ZhbHVlc1tpXSk7CisgICAgaGVhZGVyLm51
bUNTUkNzID0gMDsgIC8vIFRPRE8odGVyZWxpdXMpOiBJbXBsZW1lbnQgQ1NSQy4KKyAgICBoZWFk
ZXIucGFkZGluZ0xlbmd0aCA9IHJ0Yzo6Y2hlY2tlZF9jYXN0PHNpemVfdD4oKnBhZGRpbmdfc2l6
ZV92YWx1ZXNbaV0pOworICAgIGhlYWRlci5oZWFkZXJMZW5ndGggPSBydGM6OmNoZWNrZWRfY2Fz
dDxzaXplX3Q+KCpoZWFkZXJfc2l6ZV92YWx1ZXNbaV0pOworICAgIC8vIFRPRE8odGVyZWxpdXMp
OiBTaG91bGQgd2UgaW1wbGVtZW50IHBheWxvYWRfdHlwZV9mcmVxdWVuY3k/CisgICAgaWYgKHRy
YW5zcG9ydF9zZXF1ZW5jZV9udW1iZXJfdmFsdWVzLnNpemUoKSA+IGkgJiYKKyAgICAgICAgdHJh
bnNwb3J0X3NlcXVlbmNlX251bWJlcl92YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIGhl
YWRlci5leHRlbnNpb24uaGFzVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIgPSB0cnVlOworICAgICAg
aGVhZGVyLmV4dGVuc2lvbi50cmFuc3BvcnRTZXF1ZW5jZU51bWJlciA9IHJ0Yzo6Y2hlY2tlZF9j
YXN0PHVpbnQxNl90PigKKyAgICAgICAgICB0cmFuc3BvcnRfc2VxdWVuY2VfbnVtYmVyX3ZhbHVl
c1tpXS52YWx1ZSgpKTsKKyAgICB9CisgICAgaWYgKHRyYW5zbWlzc2lvbl90aW1lX29mZnNldF92
YWx1ZXMuc2l6ZSgpID4gaSAmJgorICAgICAgICB0cmFuc21pc3Npb25fdGltZV9vZmZzZXRfdmFs
dWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zbWlz
c2lvblRpbWVPZmZzZXQgPSB0cnVlOworICAgICAgaW50MzJfdCB0cmFuc21pc3Npb25fdGltZV9v
ZmZzZXQ7CisgICAgICBSVENfQ0hFQ0soVG9TaWduZWQodHJhbnNtaXNzaW9uX3RpbWVfb2Zmc2V0
X3ZhbHVlc1tpXS52YWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFuc21pc3Np
b25fdGltZV9vZmZzZXQpKTsKKyAgICAgIGhlYWRlci5leHRlbnNpb24udHJhbnNtaXNzaW9uVGlt
ZU9mZnNldCA9IHRyYW5zbWlzc2lvbl90aW1lX29mZnNldDsKKyAgICB9CisgICAgaWYgKGFic29s
dXRlX3NlbmRfdGltZV92YWx1ZXMuc2l6ZSgpID4gaSAmJgorICAgICAgICBhYnNvbHV0ZV9zZW5k
X3RpbWVfdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLmhh
c0Fic29sdXRlU2VuZFRpbWUgPSB0cnVlOworICAgICAgaGVhZGVyLmV4dGVuc2lvbi5hYnNvbHV0
ZVNlbmRUaW1lID0KKyAgICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDx1aW50MzJfdD4oYWJzb2x1
dGVfc2VuZF90aW1lX3ZhbHVlc1tpXS52YWx1ZSgpKTsKKyAgICB9CisgICAgaWYgKHZpZGVvX3Jv
dGF0aW9uX3ZhbHVlcy5zaXplKCkgPiBpICYmCisgICAgICAgIHZpZGVvX3JvdGF0aW9uX3ZhbHVl
c1tpXS5oYXNfdmFsdWUoKSkgeworICAgICAgaGVhZGVyLmV4dGVuc2lvbi5oYXNWaWRlb1JvdGF0
aW9uID0gdHJ1ZTsKKyAgICAgIGhlYWRlci5leHRlbnNpb24udmlkZW9Sb3RhdGlvbiA9IENvbnZl
cnRDVk9CeXRlVG9WaWRlb1JvdGF0aW9uKAorICAgICAgICAgIHJ0Yzo6Y2hlY2tlZF9jYXN0PHVp
bnQ4X3Q+KHZpZGVvX3JvdGF0aW9uX3ZhbHVlc1tpXS52YWx1ZSgpKSk7CisgICAgfQorICAgIGlm
IChhdWRpb19sZXZlbF92YWx1ZXMuc2l6ZSgpID4gaSAmJiBhdWRpb19sZXZlbF92YWx1ZXNbaV0u
aGFzX3ZhbHVlKCkpIHsKKyAgICAgIFJUQ19DSEVDSyh2b2ljZV9hY3Rpdml0eV92YWx1ZXMuc2l6
ZSgpID4gaSAmJgorICAgICAgICAgICAgICAgIHZvaWNlX2FjdGl2aXR5X3ZhbHVlc1tpXS5oYXNf
dmFsdWUoKSk7CisgICAgICBoZWFkZXIuZXh0ZW5zaW9uLmhhc0F1ZGlvTGV2ZWwgPSB0cnVlOwor
ICAgICAgaGVhZGVyLmV4dGVuc2lvbi52b2ljZUFjdGl2aXR5ID0KKyAgICAgICAgICBydGM6OmNo
ZWNrZWRfY2FzdDxib29sPih2b2ljZV9hY3Rpdml0eV92YWx1ZXNbaV0udmFsdWUoKSk7CisgICAg
ICBjb25zdCB1aW50OF90IGF1ZGlvX2xldmVsID0KKyAgICAgICAgICBydGM6OmNoZWNrZWRfY2Fz
dDx1aW50OF90PihhdWRpb19sZXZlbF92YWx1ZXNbaV0udmFsdWUoKSk7CisgICAgICBSVENfQ0hF
Q0tfTEUoYXVkaW9fbGV2ZWwsIDB4N0Z1KTsKKyAgICAgIGhlYWRlci5leHRlbnNpb24uYXVkaW9M
ZXZlbCA9IGF1ZGlvX2xldmVsOworICAgIH0gZWxzZSB7CisgICAgICBSVENfQ0hFQ0sodm9pY2Vf
YWN0aXZpdHlfdmFsdWVzLnNpemUoKSA8PSBpIHx8CisgICAgICAgICAgICAgICAgIXZvaWNlX2Fj
dGl2aXR5X3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgfQorICAgICgqcnRwX3BhY2tldHNf
bWFwKVtoZWFkZXIuc3NyY10uZW1wbGFjZV9iYWNrKAorICAgICAgICAxMDAwICogdGltZXN0YW1w
X21zLCBoZWFkZXIsIGhlYWRlci5oZWFkZXJMZW5ndGgsCisgICAgICAgIHBheWxvYWRfc2l6ZV92
YWx1ZXNbaV0udmFsdWUoKSArIGhlYWRlci5oZWFkZXJMZW5ndGggKworICAgICAgICAgICAgaGVh
ZGVyLnBhZGRpbmdMZW5ndGgpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQcm90b1R5
cGUsIHR5cGVuYW1lIExvZ2dlZFR5cGU+Cit2b2lkIFN0b3JlUnRjcFBhY2tldHMoY29uc3QgUHJv
dG9UeXBlJiBwcm90bywKKyAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxMb2dnZWRU
eXBlPiogcnRjcF9wYWNrZXRzKSB7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1wX21z
KCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3Jhd19wYWNrZXQoKSk7CisKKyAgLy8gQmFzZSBl
dmVudAorICBydGNwX3BhY2tldHMtPmVtcGxhY2VfYmFjayhwcm90by50aW1lc3RhbXBfbXMoKSAq
IDEwMDAsIHByb3RvLnJhd19wYWNrZXQoKSk7CisKKyAgY29uc3Qgc2l6ZV90IG51bWJlcl9vZl9k
ZWx0YXMgPQorICAgICAgcHJvdG8uaGFzX251bWJlcl9vZl9kZWx0YXMoKSA/IHByb3RvLm51bWJl
cl9vZl9kZWx0YXMoKSA6IDB1OworICBpZiAobnVtYmVyX29mX2RlbHRhcyA9PSAwKSB7CisgICAg
cmV0dXJuOworICB9CisKKyAgLy8gdGltZXN0YW1wX21zCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9w
dGlvbmFsPHVpbnQ2NF90Pj4gdGltZXN0YW1wX21zX3ZhbHVlcyA9CisgICAgICBEZWNvZGVEZWx0
YXMocHJvdG8udGltZXN0YW1wX21zX2RlbHRhcygpLAorICAgICAgICAgICAgICAgICAgIFRvVW5z
aWduZWQocHJvdG8udGltZXN0YW1wX21zKCkpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NI
RUNLX0VRKHRpbWVzdGFtcF9tc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKwor
ICAvLyByYXdfcGFja2V0CisgIFJUQ19DSEVDSyhwcm90by5oYXNfcmF3X3BhY2tldF9ibG9icygp
KTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6c3RyaW5nX3ZpZXc+IHJhd19wYWNrZXRfdmFsdWVzID0K
KyAgICAgIERlY29kZUJsb2JzKHByb3RvLnJhd19wYWNrZXRfYmxvYnMoKSwgbnVtYmVyX29mX2Rl
bHRhcyk7CisgIFJUQ19DSEVDS19FUShyYXdfcGFja2V0X3ZhbHVlcy5zaXplKCksIG51bWJlcl9v
Zl9kZWx0YXMpOworCisgIC8vIERlbHRhIGRlY29kaW5nCisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtYmVyX29mX2RlbHRhczsgKytpKSB7CisgICAgUlRDX0NIRUNLKHRpbWVzdGFtcF9tc192
YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIGludDY0X3QgdGltZXN0YW1wX21zOworICAgIFJU
Q19DSEVDSyhUb1NpZ25lZCh0aW1lc3RhbXBfbXNfdmFsdWVzW2ldLnZhbHVlKCksICZ0aW1lc3Rh
bXBfbXMpKTsKKworICAgIHJ0Y3BfcGFja2V0cy0+ZW1wbGFjZV9iYWNrKAorICAgICAgICAxMDAw
ICogdGltZXN0YW1wX21zLAorICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihyYXdfcGFja2V0X3ZhbHVlc1tpXS5kYXRhKCkpLAorICAgICAgICByYXdfcGFja2V0X3ZhbHVl
c1tpXS5zaXplKCkpOworICB9Cit9CisKIH0gIC8vIG5hbWVzcGFjZQogCiBMb2dnZWRSdGNwUGFj
a2V0OjpMb2dnZWRSdGNwUGFja2V0KHVpbnQ2NF90IHRpbWVzdGFtcF91cywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogcGFja2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdG90YWxfbGVuZ3RoKQogICAgIDogdGlt
ZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIHJhd19kYXRhKHBhY2tldCwgcGFja2V0ICsgdG90YWxf
bGVuZ3RoKSB7fQorTG9nZ2VkUnRjcFBhY2tldDo6TG9nZ2VkUnRjcFBhY2tldCh1aW50NjRfdCB0
aW1lc3RhbXBfdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBwYWNrZXQpCisgICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwgcmF3
X2RhdGEocGFja2V0LnNpemUoKSkgeworICBtZW1jcHkocmF3X2RhdGEuZGF0YSgpLCBwYWNrZXQu
ZGF0YSgpLCBwYWNrZXQuc2l6ZSgpKTsKK30KIExvZ2dlZFJ0Y3BQYWNrZXQ6OkxvZ2dlZFJ0Y3BQ
YWNrZXQoY29uc3QgTG9nZ2VkUnRjcFBhY2tldCYgcmhzKSA9IGRlZmF1bHQ7CiBMb2dnZWRSdGNw
UGFja2V0Ojp+TG9nZ2VkUnRjcFBhY2tldCgpID0gZGVmYXVsdDsKIAorTG9nZ2VkVmlkZW9TZW5k
Q29uZmlnOjpMb2dnZWRWaWRlb1NlbmRDb25maWcoKSA9IGRlZmF1bHQ7CiBMb2dnZWRWaWRlb1Nl
bmRDb25maWc6OkxvZ2dlZFZpZGVvU2VuZENvbmZpZygKICAgICBpbnQ2NF90IHRpbWVzdGFtcF91
cywKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4mIGNvbmZpZ3Mp
CkBAIC0zNjEsNyArODAwLDYgQEAgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlBhcnNlZFJ0Y0V2ZW50
TG9nTmV3KAogfQogCiB2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpDbGVhcigpIHsKLSAgZXZl
bnRzXy5jbGVhcigpOwogICBkZWZhdWx0X2V4dGVuc2lvbl9tYXBfID0gR2V0RGVmYXVsdEhlYWRl
ckV4dGVuc2lvbk1hcCgpOwogCiAgIGluY29taW5nX3J0eF9zc3Jjc18uY2xlYXIoKTsKQEAgLTQ3
OCw5ICs5MTYsOCBAQCBib29sIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpQYXJzZVN0cmVhbSgKIAog
Ym9vbCBQYXJzZWRSdGNFdmVudExvZ05ldzo6UGFyc2VTdHJlYW1JbnRlcm5hbCgKICAgICBzdGQ6
OmlzdHJlYW0mIHN0cmVhbSkgeyAgLy8gbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg5
ODIpCi0gIGNvbnN0IHNpemVfdCBrTWF4RXZlbnRTaXplID0gKDF1IDw8IDE2KSAtIDE7Ci0gIGNv
bnN0IHNpemVfdCBrTWF4VmFyaW50U2l6ZSA9IDEwOwotICBzdGQ6OnZlY3RvcjxjaGFyPiBidWZm
ZXIoa01heEV2ZW50U2l6ZSArIDIgKiBrTWF4VmFyaW50U2l6ZSk7CisgIGNvbnN0ZXhwciB1aW50
NjRfdCBrTWF4RXZlbnRTaXplID0gMTAwMDAwMDA7ICAvLyBTYW5pdHkgY2hlY2suCisgIHN0ZDo6
dmVjdG9yPGNoYXI+IGJ1ZmZlcigweEZGRkYpOwogCiAgIFJUQ19EQ0hFQ0soc3RyZWFtLmdvb2Qo
KSk7CiAKQEAgLTQ5MSwxMCArOTI4LDEyIEBAIGJvb2wgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlBh
cnNlU3RyZWFtSW50ZXJuYWwoCiAgICAgICBicmVhazsKICAgICB9CiAKLSAgICAvLyBSZWFkIHRo
ZSBuZXh0IG1lc3NhZ2UgdGFnLiBUaGUgdGFnIG51bWJlciBpcyBkZWZpbmVkIGFzCi0gICAgLy8g
KGZpZWxkbnVtYmVyIDw8IDMpIHwgd2lyZV90eXBlLiBJbiBvdXIgY2FzZSwgdGhlIGZpZWxkIG51
bWJlciBpcwotICAgIC8vIHN1cHBvc2VkIHRvIGJlIDEgYW5kIHRoZSB3aXJlIHR5cGUgZm9yIGEg
bGVuZ3RoLWRlbGltaXRlZCBmaWVsZCBpcyAyLgotICAgIGNvbnN0IHVpbnQ2NF90IGtFeHBlY3Rl
ZFYxVGFnID0gKDEgPDwgMykgfCAyOworICAgIC8vIFJlYWQgdGhlIG5leHQgbWVzc2FnZSB0YWcu
IFByb3RvYnVmIGRlZmluZXMgdGhlIG1lc3NhZ2UgdGFnIGFzCisgICAgLy8gKGZpZWxkX251bWJl
ciA8PCAzKSB8IHdpcmVfdHlwZS4gSW4gdGhlIGxlZ2FjeSBlbmNvZGluZywgdGhlIGZpZWxkIG51
bWJlcgorICAgIC8vIGlzIHN1cHBvc2VkIHRvIGJlIDEgYW5kIHRoZSB3aXJlIHR5cGUgZm9yIGEg
bGVuZ3RoLWRlbGltaXRlZCBmaWVsZCBpcyAyLgorICAgIC8vIEluIHRoZSBuZXcgZW5jb2Rpbmcg
d2Ugc3RpbGwgZXhwZWN0IHRoZSB3aXJlIHR5cGUgdG8gYmUgMiwgYnV0IHRoZSBmaWVsZAorICAg
IC8vIG51bWJlciB3aWxsIGJlIGdyZWF0ZXIgdGhhbiAxLgorICAgIGNvbnN0ZXhwciB1aW50NjRf
dCBrRXhwZWN0ZWRWMVRhZyA9ICgxIDw8IDMpIHwgMjsKICAgICBzaXplX3QgYnl0ZXNfd3JpdHRl
biA9IDA7CiAgICAgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHRhZyA9CiAgICAgICAgIFBhcnNl
VmFySW50KHN0cmVhbSwgYnVmZmVyLmRhdGEoKSwgJmJ5dGVzX3dyaXR0ZW4pOwpAQCAtNTAyLDkg
Kzk0MSwxMyBAQCBib29sIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpQYXJzZVN0cmVhbUludGVybmFs
KAogICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQogICAgICAgICAgIDw8ICJNaXNzaW5nIGZpZWxk
IHRhZyBmcm9tIGJlZ2lubmluZyBvZiBwcm90b2J1ZiBldmVudC4iOwogICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0gZWxzZSBpZiAoKnRhZyAhPSBrRXhwZWN0ZWRWMVRhZykgewotICAgICAgUlRD
X0xPRyhMU19XQVJOSU5HKQotICAgICAgICAgIDw8ICJVbmV4cGVjdGVkIGZpZWxkIHRhZyBhdCBi
ZWdpbm5pbmcgb2YgcHJvdG9idWYgZXZlbnQuIjsKKyAgICB9CisgICAgY29uc3RleHByIHVpbnQ2
NF90IGtXaXJlVHlwZU1hc2sgPSAweDA3OworICAgIGNvbnN0IHVpbnQ2NF90IHdpcmVfdHlwZSA9
ICp0YWcgJiBrV2lyZVR5cGVNYXNrOworICAgIGlmICh3aXJlX3R5cGUgIT0gMikgeworICAgICAg
UlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRXhwZWN0ZWQgZmllbGQgdGFnIHdpdGggd2lyZSB0eXBl
IDIgKGxlbmd0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxpbWl0ZWQgbWVz
c2FnZSkuIEZvdW5kIHdpcmUgdHlwZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHdp
cmVfdHlwZTsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTUyMCw2ICs5NjMsOCBA
QCBib29sIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpQYXJzZVN0cmVhbUludGVybmFsKAogICAgIH0K
IAogICAgIC8vIFJlYWQgdGhlIG5leHQgcHJvdG9idWYgZXZlbnQgdG8gYSB0ZW1wb3JhcnkgY2hh
ciBidWZmZXIuCisgICAgaWYgKGJ1ZmZlci5zaXplKCkgPCBieXRlc193cml0dGVuICsgKm1lc3Nh
Z2VfbGVuZ3RoKQorICAgICAgYnVmZmVyLnJlc2l6ZShieXRlc193cml0dGVuICsgKm1lc3NhZ2Vf
bGVuZ3RoKTsKICAgICBzdHJlYW0ucmVhZChidWZmZXIuZGF0YSgpICsgYnl0ZXNfd3JpdHRlbiwg
Km1lc3NhZ2VfbGVuZ3RoKTsKICAgICBpZiAoc3RyZWFtLmdjb3VudCgpICE9IHN0YXRpY19jYXN0
PGludD4oKm1lc3NhZ2VfbGVuZ3RoKSkgewogICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
RmFpbGVkIHRvIHJlYWQgcHJvdG9idWYgbWVzc2FnZSBmcm9tIGZpbGUuIjsKQEAgLTUyNywyMSAr
OTcyLDMyIEBAIGJvb2wgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlBhcnNlU3RyZWFtSW50ZXJuYWwo
CiAgICAgfQogICAgIHNpemVfdCBidWZmZXJfc2l6ZSA9IGJ5dGVzX3dyaXR0ZW4gKyAqbWVzc2Fn
ZV9sZW5ndGg7CiAKLSAgICAvLyBQYXJzZSB0aGUgcHJvdG9idWYgZXZlbnQgZnJvbSB0aGUgYnVm
ZmVyLgotICAgIHJ0Y2xvZzo6RXZlbnRTdHJlYW0gZXZlbnRfc3RyZWFtOwotICAgIGlmICghZXZl
bnRfc3RyZWFtLlBhcnNlRnJvbUFycmF5KGJ1ZmZlci5kYXRhKCksIGJ1ZmZlcl9zaXplKSkgewot
ICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHBhcnNlIHByb3RvYnVmIG1l
c3NhZ2UuIjsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgaWYgKCp0YWcgPT0ga0V4
cGVjdGVkVjFUYWcpIHsKKyAgICAgIC8vIFBhcnNlIHRoZSBwcm90b2J1ZiBldmVudCBmcm9tIHRo
ZSBidWZmZXIuCisgICAgICBydGNsb2c6OkV2ZW50U3RyZWFtIGV2ZW50X3N0cmVhbTsKKyAgICAg
IGlmICghZXZlbnRfc3RyZWFtLlBhcnNlRnJvbUFycmF5KGJ1ZmZlci5kYXRhKCksIGJ1ZmZlcl9z
aXplKSkgeworICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpCisgICAgICAgICAgICA8PCAiRmFp
bGVkIHRvIHBhcnNlIGxlZ2FjeS1mb3JtYXQgcHJvdG9idWYgbWVzc2FnZS4iOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICB9CiAKLSAgICBSVENfQ0hFQ0tfRVEoZXZlbnRfc3RyZWFtLnN0
cmVhbV9zaXplKCksIDEpOwotICAgIFN0b3JlUGFyc2VkRXZlbnQoZXZlbnRfc3RyZWFtLnN0cmVh
bSgwKSk7Ci0gICAgZXZlbnRzXy5wdXNoX2JhY2soZXZlbnRfc3RyZWFtLnN0cmVhbSgwKSk7Cisg
ICAgICBSVENfQ0hFQ0tfRVEoZXZlbnRfc3RyZWFtLnN0cmVhbV9zaXplKCksIDEpOworICAgICAg
U3RvcmVQYXJzZWRMZWdhY3lFdmVudChldmVudF9zdHJlYW0uc3RyZWFtKDApKTsKKyAgICB9IGVs
c2UgeworICAgICAgLy8gUGFyc2UgdGhlIHByb3RvYnVmIGV2ZW50IGZyb20gdGhlIGJ1ZmZlci4K
KyAgICAgIHJ0Y2xvZzI6OkV2ZW50U3RyZWFtIGV2ZW50X3N0cmVhbTsKKyAgICAgIGlmICghZXZl
bnRfc3RyZWFtLlBhcnNlRnJvbUFycmF5KGJ1ZmZlci5kYXRhKCksIGJ1ZmZlcl9zaXplKSkgewor
ICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcGFyc2UgbmV3LWZvcm1h
dCBwcm90b2J1ZiBtZXNzYWdlLiI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAg
ICAgIFN0b3JlUGFyc2VkTmV3Rm9ybWF0RXZlbnQoZXZlbnRfc3RyZWFtKTsKKyAgICB9CiAgIH0K
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlUGFy
c2VkRXZlbnQoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIHsKK3ZvaWQgUGFyc2VkUnRjRXZl
bnRMb2dOZXc6OlN0b3JlUGFyc2VkTGVnYWN5RXZlbnQoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZl
bnQpIHsKKyAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwogICBpZiAoZXZlbnQudHlwZSgp
ICE9IHJ0Y2xvZzo6RXZlbnQ6OlZJREVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVCAmJgogICAgICAg
ZXZlbnQudHlwZSgpICE9IHJ0Y2xvZzo6RXZlbnQ6OlZJREVPX1NFTkRFUl9DT05GSUdfRVZFTlQg
JiYKICAgICAgIGV2ZW50LnR5cGUoKSAhPSBydGNsb2c6OkV2ZW50OjpBVURJT19SRUNFSVZFUl9D
T05GSUdfRVZFTlQgJiYKQEAgLTU1NCw1NSArMTAxMCw2MyBAQCB2b2lkIFBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpTdG9yZVBhcnNlZEV2ZW50KGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSB7CiAg
ICAgbGFzdF90aW1lc3RhbXBfID0gc3RkOjptYXgobGFzdF90aW1lc3RhbXBfLCB0aW1lc3RhbXAp
OwogICB9CiAKLSAgc3dpdGNoIChHZXRFdmVudFR5cGUoZXZlbnQpKSB7Ci0gICAgY2FzZSBQYXJz
ZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpWSURFT19SRUNFSVZFUl9DT05GSUdfRVZFTlQ6
IHsKKyAgc3dpdGNoIChldmVudC50eXBlKCkpIHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OlZJ
REVPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDogewogICAgICAgcnRjbG9nOjpTdHJlYW1Db25maWcg
Y29uZmlnID0gR2V0VmlkZW9SZWNlaXZlQ29uZmlnKGV2ZW50KTsKICAgICAgIHZpZGVvX3JlY3Zf
Y29uZmlnc18uZW1wbGFjZV9iYWNrKEdldFRpbWVzdGFtcChldmVudCksIGNvbmZpZyk7Ci0gICAg
ICBpbmNvbWluZ19ydHBfZXh0ZW5zaW9uc19tYXBzX1tjb25maWcucmVtb3RlX3NzcmNdID0KLSAg
ICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKTsKLSAg
ICAgIC8vIFRPRE8odGVyZWxpdXMpOiBJIGRvbid0IHVuZGVyc3RhbmQgdGhlIHJlYXNvbiBmb3Ig
Y29uZmlndXJpbmcgaGVhZGVyCi0gICAgICAvLyBleHRlbnNpb25zIGZvciB0aGUgbG9jYWwgU1NS
Qy4gSSB0aGluayBpdCBzaG91bGQgYmUgcmVtb3ZlZCwgYnV0IGZvcgotICAgICAgLy8gbm93IEkg
d2FudCB0byBwcmVzZXJ2ZSB0aGUgcHJldmlvdXMgZnVuY3Rpb25hbGl0eS4KLSAgICAgIGluY29t
aW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5sb2NhbF9zc3JjXSA9Ci0gICAgICAgICAg
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7CisgICAgICBpZiAo
IWNvbmZpZy5ydHBfZXh0ZW5zaW9ucy5lbXB0eSgpKSB7CisgICAgICAgIGluY29taW5nX3J0cF9l
eHRlbnNpb25zX21hcHNfW2NvbmZpZy5yZW1vdGVfc3NyY10gPQorICAgICAgICAgICAgUnRwSGVh
ZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7CisgICAgICAgIC8vIFRPRE8o
dGVyZWxpdXMpOiBJIGRvbid0IHVuZGVyc3RhbmQgdGhlIHJlYXNvbiBmb3IgY29uZmlndXJpbmcg
aGVhZGVyCisgICAgICAgIC8vIGV4dGVuc2lvbnMgZm9yIHRoZSBsb2NhbCBTU1JDLiBJIHRoaW5r
IGl0IHNob3VsZCBiZSByZW1vdmVkLCBidXQgZm9yCisgICAgICAgIC8vIG5vdyBJIHdhbnQgdG8g
cHJlc2VydmUgdGhlIHByZXZpb3VzIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgIGluY29taW5nX3J0
cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5sb2NhbF9zc3JjXSA9CisgICAgICAgICAgICBSdHBI
ZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKTsKKyAgICAgIH0KICAgICAg
IGluY29taW5nX3ZpZGVvX3NzcmNzXy5pbnNlcnQoY29uZmlnLnJlbW90ZV9zc3JjKTsKICAgICAg
IGluY29taW5nX3ZpZGVvX3NzcmNzXy5pbnNlcnQoY29uZmlnLnJ0eF9zc3JjKTsKICAgICAgIGlu
Y29taW5nX3J0eF9zc3Jjc18uaW5zZXJ0KGNvbmZpZy5ydHhfc3NyYyk7CiAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpWSURFT19T
RU5ERVJfQ09ORklHX0VWRU5UOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpWSURFT19TRU5E
RVJfQ09ORklHX0VWRU5UOiB7CiAgICAgICBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZp
Zz4gY29uZmlncyA9IEdldFZpZGVvU2VuZENvbmZpZyhldmVudCk7CiAgICAgICB2aWRlb19zZW5k
X2NvbmZpZ3NfLmVtcGxhY2VfYmFjayhHZXRUaW1lc3RhbXAoZXZlbnQpLCBjb25maWdzKTsKICAg
ICAgIGZvciAoY29uc3QgYXV0byYgY29uZmlnIDogY29uZmlncykgewotICAgICAgICBvdXRnb2lu
Z19ydHBfZXh0ZW5zaW9uc19tYXBzX1tjb25maWcubG9jYWxfc3NyY10gPQotICAgICAgICAgICAg
UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7Ci0gICAgICAgIG91
dGdvaW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2NvbmZpZy5ydHhfc3NyY10gPQotICAgICAgICAg
ICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7CisgICAgICAg
IGlmICghY29uZmlnLnJ0cF9leHRlbnNpb25zLmVtcHR5KCkpIHsKKyAgICAgICAgICBvdXRnb2lu
Z19ydHBfZXh0ZW5zaW9uc19tYXBzX1tjb25maWcubG9jYWxfc3NyY10gPQorICAgICAgICAgICAg
ICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0cF9leHRlbnNpb25zKTsKKyAgICAgICAg
ICBvdXRnb2luZ19ydHBfZXh0ZW5zaW9uc19tYXBzX1tjb25maWcucnR4X3NzcmNdID0KKyAgICAg
ICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZpZy5ydHBfZXh0ZW5zaW9ucyk7Cisg
ICAgICAgIH0KICAgICAgICAgb3V0Z29pbmdfdmlkZW9fc3NyY3NfLmluc2VydChjb25maWcubG9j
YWxfc3NyYyk7CiAgICAgICAgIG91dGdvaW5nX3ZpZGVvX3NzcmNzXy5pbnNlcnQoY29uZmlnLnJ0
eF9zc3JjKTsKICAgICAgICAgb3V0Z29pbmdfcnR4X3NzcmNzXy5pbnNlcnQoY29uZmlnLnJ0eF9z
c3JjKTsKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpFdmVudFR5cGU6OkFVRElPX1JFQ0VJVkVSX0NPTkZJR19FVkVOVDogeworICAg
IGNhc2UgcnRjbG9nOjpFdmVudDo6QVVESU9fUkVDRUlWRVJfQ09ORklHX0VWRU5UOiB7CiAgICAg
ICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcgPSBHZXRBdWRpb1JlY2VpdmVDb25maWcoZXZl
bnQpOwogICAgICAgYXVkaW9fcmVjdl9jb25maWdzXy5lbXBsYWNlX2JhY2soR2V0VGltZXN0YW1w
KGV2ZW50KSwgY29uZmlnKTsKLSAgICAgIGluY29taW5nX3J0cF9leHRlbnNpb25zX21hcHNfW2Nv
bmZpZy5yZW1vdGVfc3NyY10gPQotICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25m
aWcucnRwX2V4dGVuc2lvbnMpOwotICAgICAgaW5jb21pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19b
Y29uZmlnLmxvY2FsX3NzcmNdID0KLSAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29u
ZmlnLnJ0cF9leHRlbnNpb25zKTsKKyAgICAgIGlmICghY29uZmlnLnJ0cF9leHRlbnNpb25zLmVt
cHR5KCkpIHsKKyAgICAgICAgaW5jb21pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29uZmlnLnJl
bW90ZV9zc3JjXSA9CisgICAgICAgICAgICBSdHBIZWFkZXJFeHRlbnNpb25NYXAoY29uZmlnLnJ0
cF9leHRlbnNpb25zKTsKKyAgICAgICAgaW5jb21pbmdfcnRwX2V4dGVuc2lvbnNfbWFwc19bY29u
ZmlnLmxvY2FsX3NzcmNdID0KKyAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcChjb25m
aWcucnRwX2V4dGVuc2lvbnMpOworICAgICAgfQogICAgICAgaW5jb21pbmdfYXVkaW9fc3NyY3Nf
Lmluc2VydChjb25maWcucmVtb3RlX3NzcmMpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNh
c2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QVVESU9fU0VOREVSX0NPTkZJR19F
VkVOVDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6QVVESU9fU0VOREVSX0NPTkZJR19FVkVO
VDogewogICAgICAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnID0gR2V0QXVkaW9TZW5kQ29u
ZmlnKGV2ZW50KTsKICAgICAgIGF1ZGlvX3NlbmRfY29uZmlnc18uZW1wbGFjZV9iYWNrKEdldFRp
bWVzdGFtcChldmVudCksIGNvbmZpZyk7Ci0gICAgICBvdXRnb2luZ19ydHBfZXh0ZW5zaW9uc19t
YXBzX1tjb25maWcubG9jYWxfc3NyY10gPQotICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbk1h
cChjb25maWcucnRwX2V4dGVuc2lvbnMpOworICAgICAgaWYgKCFjb25maWcucnRwX2V4dGVuc2lv
bnMuZW1wdHkoKSkgeworICAgICAgICBvdXRnb2luZ19ydHBfZXh0ZW5zaW9uc19tYXBzX1tjb25m
aWcubG9jYWxfc3NyY10gPQorICAgICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGNvbmZp
Zy5ydHBfZXh0ZW5zaW9ucyk7CisgICAgICB9CiAgICAgICBvdXRnb2luZ19hdWRpb19zc3Jjc18u
aW5zZXJ0KGNvbmZpZy5sb2NhbF9zc3JjKTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNl
IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OlJUUF9FVkVOVDogeworICAgIGNhc2Ug
cnRjbG9nOjpFdmVudDo6UlRQX0VWRU5UOiB7CiAgICAgICBQYWNrZXREaXJlY3Rpb24gZGlyZWN0
aW9uOwogICAgICAgdWludDhfdCBoZWFkZXJbSVBfUEFDS0VUX1NJWkVdOwogICAgICAgc2l6ZV90
IGhlYWRlcl9sZW5ndGg7CkBAIC02NDUsNyArMTEwOSw3IEBAIHZvaWQgUGFyc2VkUnRjRXZlbnRM
b2dOZXc6OlN0b3JlUGFyc2VkRXZlbnQoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIHsKICAg
ICAgIH0KICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpFdmVudFR5cGU6OlJUQ1BfRVZFTlQ6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OlJUQ1Bf
RVZFTlQ6IHsKICAgICAgIFBhY2tldERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgICB1aW50OF90
IHBhY2tldFtJUF9QQUNLRVRfU0laRV07CiAgICAgICBzaXplX3QgdG90YWxfbGVuZ3RoOwpAQCAt
NzMxLDExMyArMTE5NSw3NiBAQCB2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZVBhcnNl
ZEV2ZW50KGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSB7CiAgICAgICB9CiAgICAgICBicmVh
azsKICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpMT0df
U1RBUlQ6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkxPR19TVEFSVDogewogICAgICAgc3Rh
cnRfbG9nX2V2ZW50c18ucHVzaF9iYWNrKExvZ2dlZFN0YXJ0RXZlbnQoR2V0VGltZXN0YW1wKGV2
ZW50KSkpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dO
ZXc6OkV2ZW50VHlwZTo6TE9HX0VORDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6TE9HX0VO
RDogewogICAgICAgc3RvcF9sb2dfZXZlbnRzXy5wdXNoX2JhY2soTG9nZ2VkU3RvcEV2ZW50KEdl
dFRpbWVzdGFtcChldmVudCkpKTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkFVRElPX1BMQVlPVVRfRVZFTlQ6IHsKKyAgICBj
YXNlIHJ0Y2xvZzo6RXZlbnQ6OkFVRElPX1BMQVlPVVRfRVZFTlQ6IHsKICAgICAgIExvZ2dlZEF1
ZGlvUGxheW91dEV2ZW50IHBsYXlvdXRfZXZlbnQgPSBHZXRBdWRpb1BsYXlvdXQoZXZlbnQpOwog
ICAgICAgYXVkaW9fcGxheW91dF9ldmVudHNfW3BsYXlvdXRfZXZlbnQuc3NyY10ucHVzaF9iYWNr
KHBsYXlvdXRfZXZlbnQpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRj
RXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6TE9TU19CQVNFRF9CV0VfVVBEQVRFOiB7CisgICAgY2Fz
ZSBydGNsb2c6OkV2ZW50OjpMT1NTX0JBU0VEX0JXRV9VUERBVEU6IHsKICAgICAgIGJ3ZV9sb3Nz
X3VwZGF0ZXNfLnB1c2hfYmFjayhHZXRMb3NzQmFzZWRCd2VVcGRhdGUoZXZlbnQpKTsKICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6
OkRFTEFZX0JBU0VEX0JXRV9VUERBVEU6IHsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkRFTEFZ
X0JBU0VEX0JXRV9VUERBVEU6IHsKICAgICAgIGJ3ZV9kZWxheV91cGRhdGVzXy5wdXNoX2JhY2so
R2V0RGVsYXlCYXNlZEJ3ZVVwZGF0ZShldmVudCkpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAg
IGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50VHlwZTo6QVVESU9fTkVUV09SS19BREFQ
VEFUSU9OX0VWRU5UOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBVURJT19ORVRXT1JLX0FE
QVBUQVRJT05fRVZFTlQ6IHsKICAgICAgIExvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVu
dCBhbmFfZXZlbnQgPQogICAgICAgICAgIEdldEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oZXZlbnQp
OwogICAgICAgYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uX2V2ZW50c18ucHVzaF9iYWNrKGFuYV9l
dmVudCk7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExvZ05l
dzo6RXZlbnRUeXBlOjpCV0VfUFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0VWRU5UOiB7CisgICAgY2Fz
ZSBydGNsb2c6OkV2ZW50OjpCV0VfUFJPQkVfQ0xVU1RFUl9DUkVBVEVEX0VWRU5UOiB7CiAgICAg
ICBid2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50c18ucHVzaF9iYWNrKAogICAgICAgICAg
IEdldEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQoZXZlbnQpKTsKICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBjYXNlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9GQUlM
VVJFX0VWRU5UOiB7Ci0gICAgICBid2VfcHJvYmVfZmFpbHVyZV9ldmVudHNfLnB1c2hfYmFjayhH
ZXRCd2VQcm9iZUZhaWx1cmUoZXZlbnQpKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNl
IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9CRV9TVUNDRVNTX0VWRU5U
OiB7Ci0gICAgICBid2VfcHJvYmVfc3VjY2Vzc19ldmVudHNfLnB1c2hfYmFjayhHZXRCd2VQcm9i
ZVN1Y2Nlc3MoZXZlbnQpKTsKKyAgICBjYXNlIHJ0Y2xvZzo6RXZlbnQ6OkJXRV9QUk9CRV9SRVNV
TFRfRVZFTlQ6IHsKKyAgICAgIC8vIFByb2JlIHN1Y2Nlc3NlcyBhbmQgZmFpbHVyZXMgYXJlIGN1
cnJlbnRseSBzdG9yZWQgaW4gdGhlIHNhbWUgcHJvdG8KKyAgICAgIC8vIG1lc3NhZ2UsIHdlIGFy
ZSBtb3ZpbmcgdG93YXJkcyBzZXBhcmF0ZSBtZXNzYWdlcy4gUHJvYmUgcmVzdWx0cworICAgICAg
Ly8gdGhlcmVmb3JlIG5lZWQgc3BlY2lhbCB0cmVhdG1lbnQgaW4gdGhlIHBhcnNlci4KKyAgICAg
IFJUQ19DSEVDSyhldmVudC5oYXNfcHJvYmVfcmVzdWx0KCkpOworICAgICAgUlRDX0NIRUNLKGV2
ZW50LnByb2JlX3Jlc3VsdCgpLmhhc19yZXN1bHQoKSk7CisgICAgICBpZiAoZXZlbnQucHJvYmVf
cmVzdWx0KCkucmVzdWx0KCkgPT0gcnRjbG9nOjpCd2VQcm9iZVJlc3VsdDo6U1VDQ0VTUykgewor
ICAgICAgICBid2VfcHJvYmVfc3VjY2Vzc19ldmVudHNfLnB1c2hfYmFjayhHZXRCd2VQcm9iZVN1
Y2Nlc3MoZXZlbnQpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGJ3ZV9wcm9iZV9mYWlsdXJl
X2V2ZW50c18ucHVzaF9iYWNrKEdldEJ3ZVByb2JlRmFpbHVyZShldmVudCkpOworICAgICAgfQog
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkV2ZW50
VHlwZTo6QUxSX1NUQVRFX0VWRU5UOiB7CisgICAgY2FzZSBydGNsb2c6OkV2ZW50OjpBTFJfU1RB
VEVfRVZFTlQ6IHsKICAgICAgIGFscl9zdGF0ZV9ldmVudHNfLnB1c2hfYmFjayhHZXRBbHJTdGF0
ZShldmVudCkpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRM
b2dOZXc6OkV2ZW50VHlwZTo6SUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRzogeworICAgIGNhc2Ug
cnRjbG9nOjpFdmVudDo6SUNFX0NBTkRJREFURV9QQUlSX0NPTkZJRzogewogICAgICAgaWNlX2Nh
bmRpZGF0ZV9wYWlyX2NvbmZpZ3NfLnB1c2hfYmFjayhHZXRJY2VDYW5kaWRhdGVQYWlyQ29uZmln
KGV2ZW50KSk7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXJzZWRSdGNFdmVudExv
Z05ldzo6RXZlbnRUeXBlOjpJQ0VfQ0FORElEQVRFX1BBSVJfRVZFTlQ6IHsKKyAgICBjYXNlIHJ0
Y2xvZzo6RXZlbnQ6OklDRV9DQU5ESURBVEVfUEFJUl9FVkVOVDogewogICAgICAgaWNlX2NhbmRp
ZGF0ZV9wYWlyX2V2ZW50c18ucHVzaF9iYWNrKEdldEljZUNhbmRpZGF0ZVBhaXJFdmVudChldmVu
dCkpOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGFyc2VkUnRjRXZlbnRMb2dOZXc6
OkV2ZW50VHlwZTo6VU5LTk9XTl9FVkVOVDogeworICAgIGNhc2UgcnRjbG9nOjpFdmVudDo6VU5L
Tk9XTl9FVkVOVDogewogICAgICAgYnJlYWs7CiAgICAgfQogICB9CiB9CiAKLXNpemVfdCBQYXJz
ZWRSdGNFdmVudExvZ05ldzo6R2V0TnVtYmVyT2ZFdmVudHMoKSBjb25zdCB7Ci0gIHJldHVybiBl
dmVudHNfLnNpemUoKTsKLX0KLQotaW50NjRfdCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0VGlt
ZXN0YW1wKHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51
bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19b
aW5kZXhdOwotICByZXR1cm4gR2V0VGltZXN0YW1wKGV2ZW50KTsKLX0KIAogaW50NjRfdCBQYXJz
ZWRSdGNFdmVudExvZ05ldzo6R2V0VGltZXN0YW1wKGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50
KSBjb25zdCB7CiAgIFJUQ19DSEVDSyhldmVudC5oYXNfdGltZXN0YW1wX3VzKCkpOwogICByZXR1
cm4gZXZlbnQudGltZXN0YW1wX3VzKCk7CiB9CiAKLVBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVu
dFR5cGUgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEV2ZW50VHlwZSgKLSAgICBzaXplX3QgaW5k
ZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsK
LSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJu
IEdldEV2ZW50VHlwZShldmVudCk7Ci19Ci0KLVBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5
cGUgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEV2ZW50VHlwZSgKLSAgICBjb25zdCBydGNsb2c6
OkV2ZW50JiBldmVudCkgY29uc3QgewotICBSVENfQ0hFQ0soZXZlbnQuaGFzX3R5cGUoKSk7Ci0g
IGlmIChldmVudC50eXBlKCkgPT0gcnRjbG9nOjpFdmVudDo6QldFX1BST0JFX1JFU1VMVF9FVkVO
VCkgewotICAgIFJUQ19DSEVDSyhldmVudC5oYXNfcHJvYmVfcmVzdWx0KCkpOwotICAgIFJUQ19D
SEVDSyhldmVudC5wcm9iZV9yZXN1bHQoKS5oYXNfcmVzdWx0KCkpOwotICAgIGlmIChldmVudC5w
cm9iZV9yZXN1bHQoKS5yZXN1bHQoKSA9PSBydGNsb2c6OkJ3ZVByb2JlUmVzdWx0OjpTVUNDRVNT
KQotICAgICAgcmV0dXJuIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5cGU6OkJXRV9QUk9C
RV9TVUNDRVNTX0VWRU5UOwotICAgIHJldHVybiBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRU
eXBlOjpCV0VfUFJPQkVfRkFJTFVSRV9FVkVOVDsKLSAgfQotICByZXR1cm4gR2V0UnVudGltZUV2
ZW50VHlwZShldmVudC50eXBlKCkpOwotfQotCiAvLyBUaGUgaGVhZGVyIG11c3QgaGF2ZSBzcGFj
ZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VUX1NJWkUgYnl0ZXMuCi1jb25zdCB3ZWJydGM6OlJ0cEhl
YWRlckV4dGVuc2lvbk1hcCogUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldFJ0cEhlYWRlcigKLSAg
ICBzaXplX3QgaW5kZXgsCi0gICAgUGFja2V0RGlyZWN0aW9uKiBpbmNvbWluZywKLSAgICB1aW50
OF90KiBoZWFkZXIsCi0gICAgc2l6ZV90KiBoZWFkZXJfbGVuZ3RoLAotICAgIHNpemVfdCogdG90
YWxfbGVuZ3RoLAotICAgIGludCogcHJvYmVfY2x1c3Rlcl9pZCkgY29uc3QgewotICBSVENfQ0hF
Q0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50
JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0UnRwSGVhZGVyKGV2ZW50LCBp
bmNvbWluZywgaGVhZGVyLCBoZWFkZXJfbGVuZ3RoLCB0b3RhbF9sZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgcHJvYmVfY2x1c3Rlcl9pZCk7Ci19Ci0KIGNvbnN0IHdlYnJ0Yzo6UnRwSGVh
ZGVyRXh0ZW5zaW9uTWFwKiBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0UnRwSGVhZGVyKAogICAg
IGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50LAogICAgIFBhY2tldERpcmVjdGlvbiogaW5jb21p
bmcsCkBAIC04OTksMTUgKzEzMjYsNiBAQCBjb25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lv
bk1hcCogUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldFJ0cEhlYWRlcigKIH0KIAogLy8gVGhlIHBh
Y2tldCBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxlYXN0IElQX1BBQ0tFVF9TSVpFIGJ5dGVzLgot
dm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0UnRjcFBhY2tldChzaXplX3QgaW5kZXgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tldERpcmVjdGlvbiog
aW5jb21pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90KiBsZW5ndGgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBHZXROdW1iZXJPZkV2
ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVudHNfW2luZGV4XTsK
LSAgR2V0UnRjcFBhY2tldChldmVudCwgaW5jb21pbmcsIHBhY2tldCwgbGVuZ3RoKTsKLX0KLQog
dm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0UnRjcFBhY2tldChjb25zdCBydGNsb2c6OkV2
ZW50JiBldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFj
a2V0RGlyZWN0aW9uKiBpbmNvbWluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCogcGFja2V0LApAQCAtOTM1LDEyICsxMzUzLDYgQEAgdm9pZCBQYXJz
ZWRSdGNFdmVudExvZ05ldzo6R2V0UnRjcFBhY2tldChjb25zdCBydGNsb2c6OkV2ZW50JiBldmVu
dCwKICAgfQogfQogCi1ydGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6
R2V0VmlkZW9SZWNlaXZlQ29uZmlnKAotICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENf
Q0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICByZXR1cm4gR2V0VmlkZW9S
ZWNlaXZlQ29uZmlnKGV2ZW50c19baW5kZXhdKTsKLX0KLQogcnRjbG9nOjpTdHJlYW1Db25maWcg
UGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldFZpZGVvUmVjZWl2ZUNvbmZpZygKICAgICBjb25zdCBy
dGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3QgewogICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25m
aWc7CkBAIC0xMDAyLDEyICsxNDE0LDYgQEAgcnRjbG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRj
RXZlbnRMb2dOZXc6OkdldFZpZGVvUmVjZWl2ZUNvbmZpZygKICAgcmV0dXJuIGNvbmZpZzsKIH0K
IAotc3RkOjp2ZWN0b3I8cnRjbG9nOjpTdHJlYW1Db25maWc+IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpHZXRWaWRlb1NlbmRDb25maWcoCi0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19D
SEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIHJldHVybiBHZXRWaWRlb1Nl
bmRDb25maWcoZXZlbnRzX1tpbmRleF0pOwotfQotCiBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVh
bUNvbmZpZz4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldFZpZGVvU2VuZENvbmZpZygKICAgICBj
b25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3QgewogICBzdGQ6OnZlY3RvcjxydGNsb2c6
OlN0cmVhbUNvbmZpZz4gY29uZmlnczsKQEAgLTEwNDYsMTIgKzE0NTIsNiBAQCBzdGQ6OnZlY3Rv
cjxydGNsb2c6OlN0cmVhbUNvbmZpZz4gUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldFZpZGVvU2Vu
ZENvbmZpZygKICAgcmV0dXJuIGNvbmZpZ3M7CiB9CiAKLXJ0Y2xvZzo6U3RyZWFtQ29uZmlnIFBh
cnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBdWRpb1JlY2VpdmVDb25maWcoCi0gICAgc2l6ZV90IGlu
ZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7
Ci0gIHJldHVybiBHZXRBdWRpb1JlY2VpdmVDb25maWcoZXZlbnRzX1tpbmRleF0pOwotfQotCiBy
dGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QXVkaW9SZWNlaXZl
Q29uZmlnKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAgIHJ0Y2xv
Zzo6U3RyZWFtQ29uZmlnIGNvbmZpZzsKQEAgLTEwNzEsMTIgKzE0NzEsNiBAQCBydGNsb2c6OlN0
cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QXVkaW9SZWNlaXZlQ29uZmlnKAog
ICByZXR1cm4gY29uZmlnOwogfQogCi1ydGNsb2c6OlN0cmVhbUNvbmZpZyBQYXJzZWRSdGNFdmVu
dExvZ05ldzo6R2V0QXVkaW9TZW5kQ29uZmlnKAotICAgIHNpemVfdCBpbmRleCkgY29uc3Qgewot
ICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICByZXR1cm4gR2V0
QXVkaW9TZW5kQ29uZmlnKGV2ZW50c19baW5kZXhdKTsKLX0KLQogcnRjbG9nOjpTdHJlYW1Db25m
aWcgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEF1ZGlvU2VuZENvbmZpZygKICAgICBjb25zdCBy
dGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3QgewogICBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25m
aWc7CkBAIC0xMDkzLDEzICsxNDg3LDYgQEAgcnRjbG9nOjpTdHJlYW1Db25maWcgUGFyc2VkUnRj
RXZlbnRMb2dOZXc6OkdldEF1ZGlvU2VuZENvbmZpZygKICAgcmV0dXJuIGNvbmZpZzsKIH0KIAot
TG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEF1ZGlvUGxh
eW91dCgKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBH
ZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQgPSBldmVu
dHNfW2luZGV4XTsKLSAgcmV0dXJuIEdldEF1ZGlvUGxheW91dChldmVudCk7Ci19Ci0KIExvZ2dl
ZEF1ZGlvUGxheW91dEV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBdWRpb1BsYXlvdXQo
CiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKGV2
ZW50Lmhhc190eXBlKCkpOwpAQCAtMTExMywxMyArMTUwMCw2IEBAIExvZ2dlZEF1ZGlvUGxheW91
dEV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBdWRpb1BsYXlvdXQoCiAgIHJldHVybiBy
ZXM7CiB9CiAKLUxvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6
R2V0TG9zc0Jhc2VkQndlVXBkYXRlKAotICAgIHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENf
Q0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2
ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0TG9zc0Jhc2VkQndlVXBk
YXRlKGV2ZW50KTsKLX0KLQogTG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlIFBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpHZXRMb3NzQmFzZWRCd2VVcGRhdGUoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYg
ZXZlbnQpIGNvbnN0IHsKICAgUlRDX0NIRUNLKGV2ZW50Lmhhc190eXBlKCkpOwpAQCAtMTEzOCwx
MyArMTUxOCw2IEBAIExvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSBQYXJzZWRSdGNFdmVudExvZ05l
dzo6R2V0TG9zc0Jhc2VkQndlVXBkYXRlKAogICByZXR1cm4gYndlX3VwZGF0ZTsKIH0KIAotTG9n
Z2VkQndlRGVsYXlCYXNlZFVwZGF0ZSBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0RGVsYXlCYXNl
ZEJ3ZVVwZGF0ZSgKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGlu
ZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQg
PSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJuIEdldERlbGF5QmFzZWRCd2VVcGRhdGUoZXZlbnQp
OwotfQotCiBMb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpH
ZXREZWxheUJhc2VkQndlVXBkYXRlKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBj
b25zdCB7CiAgIFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKQEAgLTExNjIsMTMgKzE1MzUs
NiBAQCBMb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRlIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRE
ZWxheUJhc2VkQndlVXBkYXRlKAogICByZXR1cm4gcmVzOwogfQogCi1Mb2dnZWRBdWRpb05ldHdv
cmtBZGFwdGF0aW9uRXZlbnQKLVBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRBdWRpb05ldHdvcmtB
ZGFwdGF0aW9uKHNpemVfdCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdl
dE51bWJlck9mRXZlbnRzKCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50
c19baW5kZXhdOwotICByZXR1cm4gR2V0QXVkaW9OZXR3b3JrQWRhcHRhdGlvbihldmVudCk7Ci19
Ci0KIExvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudAogUGFyc2VkUnRjRXZlbnRMb2dO
ZXc6OkdldEF1ZGlvTmV0d29ya0FkYXB0YXRpb24oCiAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYg
ZXZlbnQpIGNvbnN0IHsKQEAgLTExOTYsMTMgKzE1NjIsNiBAQCBQYXJzZWRSdGNFdmVudExvZ05l
dzo6R2V0QXVkaW9OZXR3b3JrQWRhcHRhdGlvbigKICAgcmV0dXJuIHJlczsKIH0KIAotTG9nZ2Vk
QndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50Ci1QYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0Qndl
UHJvYmVDbHVzdGVyQ3JlYXRlZChzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xU
KGluZGV4LCBHZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZl
bnQgPSBldmVudHNfW2luZGV4XTsKLSAgcmV0dXJuIEdldEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQo
ZXZlbnQpOwotfQotCiBMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQKIFBhcnNlZFJ0
Y0V2ZW50TG9nTmV3OjpHZXRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkKAogICAgIGNvbnN0IHJ0Y2xv
Zzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CkBAIC0xMjIzLDEzICsxNTgyLDYgQEAgUGFyc2VkUnRj
RXZlbnRMb2dOZXc6OkdldEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQoCiAgIHJldHVybiByZXM7CiB9
CiAKLUxvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpHZXRC
d2VQcm9iZUZhaWx1cmUoCi0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19M
VChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2
ZW50ID0gZXZlbnRzX1tpbmRleF07Ci0gIHJldHVybiBHZXRCd2VQcm9iZUZhaWx1cmUoZXZlbnQp
OwotfQotCiBMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6
R2V0QndlUHJvYmVGYWlsdXJlKAogICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25z
dCB7CiAgIFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsKQEAgLTEyNjAsMTMgKzE2MTIsNiBA
QCBMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0Qndl
UHJvYmVGYWlsdXJlKAogICByZXR1cm4gcmVzOwogfQogCi1Mb2dnZWRCd2VQcm9iZVN1Y2Nlc3NF
dmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QndlUHJvYmVTdWNjZXNzKAotICAgIHNpemVf
dCBpbmRleCkgY29uc3QgewotICBSVENfQ0hFQ0tfTFQoaW5kZXgsIEdldE51bWJlck9mRXZlbnRz
KCkpOwotICBjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCA9IGV2ZW50c19baW5kZXhdOwotICBy
ZXR1cm4gR2V0QndlUHJvYmVTdWNjZXNzKGV2ZW50KTsKLX0KLQogTG9nZ2VkQndlUHJvYmVTdWNj
ZXNzRXZlbnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEJ3ZVByb2JlU3VjY2VzcygKICAgICBj
b25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3QgewogICBSVENfQ0hFQ0soZXZlbnQuaGFz
X3R5cGUoKSk7CkBAIC0xMjg2LDEyICsxNjMxLDYgQEAgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZl
bnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEJ3ZVByb2JlU3VjY2VzcygKICAgcmV0dXJuIHJl
czsKIH0KIAotTG9nZ2VkQWxyU3RhdGVFdmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0QWxy
U3RhdGUoc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVt
YmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50ID0gZXZlbnRzX1tp
bmRleF07Ci0gIHJldHVybiBHZXRBbHJTdGF0ZShldmVudCk7Ci19Ci0KIExvZ2dlZEFsclN0YXRl
RXZlbnQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OkdldEFsclN0YXRlKAogICAgIGNvbnN0IHJ0Y2xv
Zzo6RXZlbnQmIGV2ZW50KSBjb25zdCB7CiAgIFJUQ19DSEVDSyhldmVudC5oYXNfdHlwZSgpKTsK
QEAgLTEzMDYsMTMgKzE2NDUsNiBAQCBMb2dnZWRBbHJTdGF0ZUV2ZW50IFBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpHZXRBbHJTdGF0ZSgKICAgcmV0dXJuIHJlczsKIH0KIAotTG9nZ2VkSWNlQ2FuZGlk
YXRlUGFpckNvbmZpZyBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0SWNlQ2FuZGlkYXRlUGFpckNv
bmZpZygKLSAgICBzaXplX3QgaW5kZXgpIGNvbnN0IHsKLSAgUlRDX0NIRUNLX0xUKGluZGV4LCBH
ZXROdW1iZXJPZkV2ZW50cygpKTsKLSAgY29uc3QgcnRjbG9nOjpFdmVudCYgcnRjX2V2ZW50ID0g
ZXZlbnRzX1tpbmRleF07Ci0gIHJldHVybiBHZXRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKHJ0Y19l
dmVudCk7Ci19Ci0KIExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWcgUGFyc2VkUnRjRXZlbnRM
b2dOZXc6OkdldEljZUNhbmRpZGF0ZVBhaXJDb25maWcoCiAgICAgY29uc3QgcnRjbG9nOjpFdmVu
dCYgcnRjX2V2ZW50KSBjb25zdCB7CiAgIFJUQ19DSEVDSyhydGNfZXZlbnQuaGFzX3R5cGUoKSk7
CkBAIC0xMzQ5LDEzICsxNjgxLDYgQEAgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyBQYXJz
ZWRSdGNFdmVudExvZ05ldzo6R2V0SWNlQ2FuZGlkYXRlUGFpckNvbmZpZygKICAgcmV0dXJuIHJl
czsKIH0KIAotTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpHZXRJY2VDYW5kaWRhdGVQYWlyRXZlbnQoCi0gICAgc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0g
IFJUQ19DSEVDS19MVChpbmRleCwgR2V0TnVtYmVyT2ZFdmVudHMoKSk7Ci0gIGNvbnN0IHJ0Y2xv
Zzo6RXZlbnQmIHJ0Y19ldmVudCA9IGV2ZW50c19baW5kZXhdOwotICByZXR1cm4gR2V0SWNlQ2Fu
ZGlkYXRlUGFpckV2ZW50KHJ0Y19ldmVudCk7Ci19Ci0KIExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJF
dmVudCBQYXJzZWRSdGNFdmVudExvZ05ldzo6R2V0SWNlQ2FuZGlkYXRlUGFpckV2ZW50KAogICAg
IGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIHJ0Y19ldmVudCkgY29uc3QgewogICBSVENfQ0hFQ0socnRj
X2V2ZW50Lmhhc190eXBlKCkpOwpAQCAtMTQzOCw3ICsxNzYzLDggQEAgY29uc3Qgc3RkOjp2ZWN0
b3I8TWF0Y2hlZFNlbmRBcnJpdmFsVGltZXM+IEdldE5ldHdvcmtUcmFjZSgKICAgICBjbG9jay5B
ZHZhbmNlVGltZU1pY3Jvc2Vjb25kcyh0aW1lX3VzIC0gY2xvY2suVGltZUluTWljcm9zZWNvbmRz
KCkpOwogICAgIGlmIChjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSA+PSBOZXh0UnRjcFRpbWUo
KSkgewogICAgICAgUlRDX0RDSEVDS19FUShjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSwgTmV4
dFJ0Y3BUaW1lKCkpOwotICAgICAgZmVlZGJhY2tfYWRhcHRlci5PblRyYW5zcG9ydEZlZWRiYWNr
KHJ0Y3BfaXRlcmF0b3ItPnRyYW5zcG9ydF9mZWVkYmFjayk7CisgICAgICBmZWVkYmFja19hZGFw
dGVyLlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjaygKKyAgICAgICAgICBydGNwX2l0ZXJhdG9yLT50
cmFuc3BvcnRfZmVlZGJhY2spOwogICAgICAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IGZl
ZWRiYWNrID0KICAgICAgICAgICBmZWVkYmFja19hZGFwdGVyLkdldFRyYW5zcG9ydEZlZWRiYWNr
VmVjdG9yKCk7CiAgICAgICBTb3J0UGFja2V0RmVlZGJhY2tWZWN0b3JXaXRoTG9zcygmZmVlZGJh
Y2spOwpAQCAtMTQ1MiwxNCArMTc3OCwyNSBAQCBjb25zdCBzdGQ6OnZlY3RvcjxNYXRjaGVkU2Vu
ZEFycml2YWxUaW1lcz4gR2V0TmV0d29ya1RyYWNlKAogICAgIGlmIChjbG9jay5UaW1lSW5NaWNy
b3NlY29uZHMoKSA+PSBOZXh0UnRwVGltZSgpKSB7CiAgICAgICBSVENfRENIRUNLX0VRKGNsb2Nr
LlRpbWVJbk1pY3Jvc2Vjb25kcygpLCBOZXh0UnRwVGltZSgpKTsKICAgICAgIGNvbnN0IFJ0cFBh
Y2tldFR5cGUmIHJ0cF9wYWNrZXQgPSAqcnRwX2l0ZXJhdG9yLT5zZWNvbmQ7CisgICAgICBydGM6
OlNlbnRQYWNrZXQgc2VudF9wYWNrZXQ7CisgICAgICBzZW50X3BhY2tldC5zZW5kX3RpbWVfbXMg
PSBydHBfcGFja2V0LnJ0cC5sb2dfdGltZV9tcygpOworICAgICAgc2VudF9wYWNrZXQuaW5mby5w
YWNrZXRfc2l6ZV9ieXRlcyA9IHJ0cF9wYWNrZXQucnRwLnRvdGFsX2xlbmd0aDsKICAgICAgIGlm
IChydHBfcGFja2V0LnJ0cC5oZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zcG9ydFNlcXVlbmNlTnVt
YmVyKSB7CiAgICAgICAgIGZlZWRiYWNrX2FkYXB0ZXIuQWRkUGFja2V0KAogICAgICAgICAgICAg
cnRwX3BhY2tldC5ydHAuaGVhZGVyLnNzcmMsCiAgICAgICAgICAgICBydHBfcGFja2V0LnJ0cC5o
ZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyLAogICAgICAgICAgICAgcnRw
X3BhY2tldC5ydHAudG90YWxfbGVuZ3RoLCBQYWNlZFBhY2tldEluZm8oKSk7Ci0gICAgICAgIGZl
ZWRiYWNrX2FkYXB0ZXIuT25TZW50UGFja2V0KAotICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAu
aGVhZGVyLmV4dGVuc2lvbi50cmFuc3BvcnRTZXF1ZW5jZU51bWJlciwKLSAgICAgICAgICAgIHJ0
cF9wYWNrZXQucnRwLmxvZ190aW1lX21zKCkpOworICAgICAgICBzZW50X3BhY2tldC5wYWNrZXRf
aWQgPQorICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAuaGVhZGVyLmV4dGVuc2lvbi50cmFuc3Bv
cnRTZXF1ZW5jZU51bWJlcjsKKyAgICAgICAgc2VudF9wYWNrZXQuaW5mby5pbmNsdWRlZF9pbl9m
ZWVkYmFjayA9IHRydWU7CisgICAgICAgIHNlbnRfcGFja2V0LmluZm8uaW5jbHVkZWRfaW5fYWxs
b2NhdGlvbiA9IHRydWU7CisgICAgICAgIGZlZWRiYWNrX2FkYXB0ZXIuUHJvY2Vzc1NlbnRQYWNr
ZXQoc2VudF9wYWNrZXQpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2VudF9wYWNrZXQuaW5m
by5pbmNsdWRlZF9pbl9mZWVkYmFjayA9IGZhbHNlOworICAgICAgICAvLyBUT0RPKHNydGUpOiBN
YWtlIGl0IHBvc3NpYmxlIHRvIGluZGljYXRlIHRoYXQgYWxsIHBhY2tldHMgYXJlIHBhcnQgb2YK
KyAgICAgICAgLy8gYWxsb2NhdGlvbi4KKyAgICAgICAgc2VudF9wYWNrZXQuaW5mby5pbmNsdWRl
ZF9pbl9hbGxvY2F0aW9uID0gZmFsc2U7CisgICAgICAgIGZlZWRiYWNrX2FkYXB0ZXIuUHJvY2Vz
c1NlbnRQYWNrZXQoc2VudF9wYWNrZXQpOwogICAgICAgfQogICAgICAgKytydHBfaXRlcmF0b3I7
CiAgICAgfQpAQCAtMTQ2OCw0ICsxODA1LDYxMyBAQCBjb25zdCBzdGQ6OnZlY3RvcjxNYXRjaGVk
U2VuZEFycml2YWxUaW1lcz4gR2V0TmV0d29ya1RyYWNlKAogICByZXR1cm4gcnRwX3J0Y3BfbWF0
Y2hlZDsKIH0KIAorLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgbmV3IGZvcm1hdCBzdGFydCBoZXJl
Cit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZVBhcnNlZE5ld0Zvcm1hdEV2ZW50KAor
ICAgIGNvbnN0IHJ0Y2xvZzI6OkV2ZW50U3RyZWFtJiBzdHJlYW0pIHsKKyAgUlRDX0RDSEVDS19F
UShzdHJlYW0uc3RyZWFtX3NpemUoKSwgMCk7CisKKyAgUlRDX0RDSEVDS19FUSgKKyAgICAgIHN0
cmVhbS5pbmNvbWluZ19ydHBfcGFja2V0c19zaXplKCkgKyBzdHJlYW0ub3V0Z29pbmdfcnRwX3Bh
Y2tldHNfc2l6ZSgpICsKKyAgICAgICAgICBzdHJlYW0uaW5jb21pbmdfcnRjcF9wYWNrZXRzX3Np
emUoKSArCisgICAgICAgICAgc3RyZWFtLm91dGdvaW5nX3J0Y3BfcGFja2V0c19zaXplKCkgKwor
ICAgICAgICAgIHN0cmVhbS5hdWRpb19wbGF5b3V0X2V2ZW50c19zaXplKCkgKyBzdHJlYW0uYmVn
aW5fbG9nX2V2ZW50c19zaXplKCkgKworICAgICAgICAgIHN0cmVhbS5lbmRfbG9nX2V2ZW50c19z
aXplKCkgKyBzdHJlYW0ubG9zc19iYXNlZF9id2VfdXBkYXRlc19zaXplKCkgKworICAgICAgICAg
IHN0cmVhbS5kZWxheV9iYXNlZF9id2VfdXBkYXRlc19zaXplKCkgKworICAgICAgICAgIHN0cmVh
bS5hdWRpb19uZXR3b3JrX2FkYXB0YXRpb25zX3NpemUoKSArCisgICAgICAgICAgc3RyZWFtLnBy
b2JlX2NsdXN0ZXJzX3NpemUoKSArIHN0cmVhbS5wcm9iZV9zdWNjZXNzX3NpemUoKSArCisgICAg
ICAgICAgc3RyZWFtLnByb2JlX2ZhaWx1cmVfc2l6ZSgpICsgc3RyZWFtLmFscl9zdGF0ZXNfc2l6
ZSgpICsKKyAgICAgICAgICBzdHJlYW0uaWNlX2NhbmRpZGF0ZV9jb25maWdzX3NpemUoKSArCisg
ICAgICAgICAgc3RyZWFtLmljZV9jYW5kaWRhdGVfZXZlbnRzX3NpemUoKSArCisgICAgICAgICAg
c3RyZWFtLmF1ZGlvX3JlY3Zfc3RyZWFtX2NvbmZpZ3Nfc2l6ZSgpICsKKyAgICAgICAgICBzdHJl
YW0uYXVkaW9fc2VuZF9zdHJlYW1fY29uZmlnc19zaXplKCkgKworICAgICAgICAgIHN0cmVhbS52
aWRlb19yZWN2X3N0cmVhbV9jb25maWdzX3NpemUoKSArCisgICAgICAgICAgc3RyZWFtLnZpZGVv
X3NlbmRfc3RyZWFtX2NvbmZpZ3Nfc2l6ZSgpLAorICAgICAgMXUpOworCisgIGlmIChzdHJlYW0u
aW5jb21pbmdfcnRwX3BhY2tldHNfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUluY29taW5nUnRw
UGFja2V0cyhzdHJlYW0uaW5jb21pbmdfcnRwX3BhY2tldHMoMCkpOworICB9IGVsc2UgaWYgKHN0
cmVhbS5vdXRnb2luZ19ydHBfcGFja2V0c19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlT3V0Z29p
bmdSdHBQYWNrZXRzKHN0cmVhbS5vdXRnb2luZ19ydHBfcGFja2V0cygwKSk7CisgIH0gZWxzZSBp
ZiAoc3RyZWFtLmluY29taW5nX3J0Y3BfcGFja2V0c19zaXplKCkgPT0gMSkgeworICAgIFN0b3Jl
SW5jb21pbmdSdGNwUGFja2V0cyhzdHJlYW0uaW5jb21pbmdfcnRjcF9wYWNrZXRzKDApKTsKKyAg
fSBlbHNlIGlmIChzdHJlYW0ub3V0Z29pbmdfcnRjcF9wYWNrZXRzX3NpemUoKSA9PSAxKSB7Cisg
ICAgU3RvcmVPdXRnb2luZ1J0Y3BQYWNrZXRzKHN0cmVhbS5vdXRnb2luZ19ydGNwX3BhY2tldHMo
MCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5hdWRpb19wbGF5b3V0X2V2ZW50c19zaXplKCkgPT0g
MSkgeworICAgIFN0b3JlQXVkaW9QbGF5b3V0RXZlbnQoc3RyZWFtLmF1ZGlvX3BsYXlvdXRfZXZl
bnRzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0uYmVnaW5fbG9nX2V2ZW50c19zaXplKCkgPT0g
MSkgeworICAgIFN0b3JlU3RhcnRFdmVudChzdHJlYW0uYmVnaW5fbG9nX2V2ZW50cygwKSk7Cisg
IH0gZWxzZSBpZiAoc3RyZWFtLmVuZF9sb2dfZXZlbnRzX3NpemUoKSA9PSAxKSB7CisgICAgU3Rv
cmVTdG9wRXZlbnQoc3RyZWFtLmVuZF9sb2dfZXZlbnRzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJl
YW0ubG9zc19iYXNlZF9id2VfdXBkYXRlc19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlQndlTG9z
c0Jhc2VkVXBkYXRlKHN0cmVhbS5sb3NzX2Jhc2VkX2J3ZV91cGRhdGVzKDApKTsKKyAgfSBlbHNl
IGlmIChzdHJlYW0uZGVsYXlfYmFzZWRfYndlX3VwZGF0ZXNfc2l6ZSgpID09IDEpIHsKKyAgICBT
dG9yZUJ3ZURlbGF5QmFzZWRVcGRhdGUoc3RyZWFtLmRlbGF5X2Jhc2VkX2J3ZV91cGRhdGVzKDAp
KTsKKyAgfSBlbHNlIGlmIChzdHJlYW0uYXVkaW9fbmV0d29ya19hZGFwdGF0aW9uc19zaXplKCkg
PT0gMSkgeworICAgIFN0b3JlQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50KHN0cmVhbS5hdWRp
b19uZXR3b3JrX2FkYXB0YXRpb25zKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0ucHJvYmVfY2x1
c3RlcnNfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9yZUJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWQoc3Ry
ZWFtLnByb2JlX2NsdXN0ZXJzKDApKTsKKyAgfSBlbHNlIGlmIChzdHJlYW0ucHJvYmVfc3VjY2Vz
c19zaXplKCkgPT0gMSkgeworICAgIFN0b3JlQndlUHJvYmVTdWNjZXNzRXZlbnQoc3RyZWFtLnBy
b2JlX3N1Y2Nlc3MoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5wcm9iZV9mYWlsdXJlX3NpemUo
KSA9PSAxKSB7CisgICAgU3RvcmVCd2VQcm9iZUZhaWx1cmVFdmVudChzdHJlYW0ucHJvYmVfZmFp
bHVyZSgwKSk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLmFscl9zdGF0ZXNfc2l6ZSgpID09IDEpIHsK
KyAgICBTdG9yZUFsclN0YXRlRXZlbnQoc3RyZWFtLmFscl9zdGF0ZXMoMCkpOworICB9IGVsc2Ug
aWYgKHN0cmVhbS5pY2VfY2FuZGlkYXRlX2NvbmZpZ3Nfc2l6ZSgpID09IDEpIHsKKyAgICBTdG9y
ZUljZUNhbmRpZGF0ZVBhaXJDb25maWcoc3RyZWFtLmljZV9jYW5kaWRhdGVfY29uZmlncygwKSk7
CisgIH0gZWxzZSBpZiAoc3RyZWFtLmljZV9jYW5kaWRhdGVfZXZlbnRzX3NpemUoKSA9PSAxKSB7
CisgICAgU3RvcmVJY2VDYW5kaWRhdGVFdmVudChzdHJlYW0uaWNlX2NhbmRpZGF0ZV9ldmVudHMo
MCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5hdWRpb19yZWN2X3N0cmVhbV9jb25maWdzX3NpemUo
KSA9PSAxKSB7CisgICAgU3RvcmVBdWRpb1JlY3ZDb25maWcoc3RyZWFtLmF1ZGlvX3JlY3Zfc3Ry
ZWFtX2NvbmZpZ3MoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS5hdWRpb19zZW5kX3N0cmVhbV9j
b25maWdzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVBdWRpb1NlbmRDb25maWcoc3RyZWFtLmF1
ZGlvX3NlbmRfc3RyZWFtX2NvbmZpZ3MoMCkpOworICB9IGVsc2UgaWYgKHN0cmVhbS52aWRlb19y
ZWN2X3N0cmVhbV9jb25maWdzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVWaWRlb1JlY3ZDb25m
aWcoc3RyZWFtLnZpZGVvX3JlY3Zfc3RyZWFtX2NvbmZpZ3MoMCkpOworICB9IGVsc2UgaWYgKHN0
cmVhbS52aWRlb19zZW5kX3N0cmVhbV9jb25maWdzX3NpemUoKSA9PSAxKSB7CisgICAgU3RvcmVW
aWRlb1NlbmRDb25maWcoc3RyZWFtLnZpZGVvX3NlbmRfc3RyZWFtX2NvbmZpZ3MoMCkpOworICB9
IGVsc2UgeworICAgIFJUQ19OT1RSRUFDSEVEKCk7CisgIH0KK30KKwordm9pZCBQYXJzZWRSdGNF
dmVudExvZ05ldzo6U3RvcmVBbHJTdGF0ZUV2ZW50KGNvbnN0IHJ0Y2xvZzI6OkFsclN0YXRlJiBw
cm90bykgeworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgUlRDX0NI
RUNLKHByb3RvLmhhc19pbl9hbHIoKSk7CisgIExvZ2dlZEFsclN0YXRlRXZlbnQgYWxyX2V2ZW50
OworICBhbHJfZXZlbnQudGltZXN0YW1wX3VzID0gcHJvdG8udGltZXN0YW1wX21zKCkgKiAxMDAw
OworICBhbHJfZXZlbnQuaW5fYWxyID0gcHJvdG8uaW5fYWxyKCk7CisKKyAgYWxyX3N0YXRlX2V2
ZW50c18ucHVzaF9iYWNrKGFscl9ldmVudCk7CisgIC8vIFRPRE8odGVyZWxpdXMpOiBTaG91bGQg
d2UgZGVsdGEgZW5jb2RlIHRoaXMgZXZlbnQgdHlwZT8KK30KKwordm9pZCBQYXJzZWRSdGNFdmVu
dExvZ05ldzo6U3RvcmVBdWRpb1BsYXlvdXRFdmVudCgKKyAgICBjb25zdCBydGNsb2cyOjpBdWRp
b1BsYXlvdXRFdmVudHMmIHByb3RvKSB7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1w
X21zKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2xvY2FsX3NzcmMoKSk7CisKKyAgLy8gQmFz
ZSBldmVudAorICBhdXRvIG1hcF9pdCA9IGF1ZGlvX3BsYXlvdXRfZXZlbnRzX1twcm90by5sb2Nh
bF9zc3JjKCldOworICBhdWRpb19wbGF5b3V0X2V2ZW50c19bcHJvdG8ubG9jYWxfc3NyYygpXS5l
bXBsYWNlX2JhY2soCisgICAgICAxMDAwICogcHJvdG8udGltZXN0YW1wX21zKCksIHByb3RvLmxv
Y2FsX3NzcmMoKSk7CisKKyAgY29uc3Qgc2l6ZV90IG51bWJlcl9vZl9kZWx0YXMgPQorICAgICAg
cHJvdG8uaGFzX251bWJlcl9vZl9kZWx0YXMoKSA/IHByb3RvLm51bWJlcl9vZl9kZWx0YXMoKSA6
IDB1OworICBpZiAobnVtYmVyX29mX2RlbHRhcyA9PSAwKSB7CisgICAgcmV0dXJuOworICB9CisK
KyAgLy8gdGltZXN0YW1wX21zCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90
Pj4gdGltZXN0YW1wX21zX3ZhbHVlcyA9CisgICAgICBEZWNvZGVEZWx0YXMocHJvdG8udGltZXN0
YW1wX21zX2RlbHRhcygpLAorICAgICAgICAgICAgICAgICAgIFRvVW5zaWduZWQocHJvdG8udGlt
ZXN0YW1wX21zKCkpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHRpbWVzdGFt
cF9tc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBsb2NhbF9zc3Jj
CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gbG9jYWxfc3NyY192YWx1
ZXMgPSBEZWNvZGVEZWx0YXMoCisgICAgICBwcm90by5sb2NhbF9zc3JjX2RlbHRhcygpLCBwcm90
by5sb2NhbF9zc3JjKCksIG51bWJlcl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEobG9jYWxf
c3NyY192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBEZWx0YSBkZWNv
ZGluZworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlcl9vZl9kZWx0YXM7ICsraSkgewor
ICAgIFJUQ19DSEVDSyh0aW1lc3RhbXBfbXNfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsKKyAgICBS
VENfQ0hFQ0sobG9jYWxfc3NyY192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVD
S19MRShsb2NhbF9zc3JjX3ZhbHVlc1tpXS52YWx1ZSgpLAorICAgICAgICAgICAgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOworCisgICAgaW50NjRfdCB0aW1lc3Rh
bXBfbXM7CisgICAgUlRDX0NIRUNLKFRvU2lnbmVkKHRpbWVzdGFtcF9tc192YWx1ZXNbaV0udmFs
dWUoKSwgJnRpbWVzdGFtcF9tcykpOworCisgICAgY29uc3QgdWludDMyX3QgbG9jYWxfc3NyYyA9
CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhbF9zc3JjX3ZhbHVlc1tpXS52YWx1
ZSgpKTsKKyAgICBhdWRpb19wbGF5b3V0X2V2ZW50c19bbG9jYWxfc3NyY10uZW1wbGFjZV9iYWNr
KDEwMDAgKiB0aW1lc3RhbXBfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2NhbF9zc3JjKTsKKyAgfQorfQorCit2b2lkIFBhcnNlZFJ0Y0V2
ZW50TG9nTmV3OjpTdG9yZUluY29taW5nUnRwUGFja2V0cygKKyAgICBjb25zdCBydGNsb2cyOjpJ
bmNvbWluZ1J0cFBhY2tldHMmIHByb3RvKSB7CisgIFN0b3JlUnRwUGFja2V0cyhwcm90bywgJmlu
Y29taW5nX3J0cF9wYWNrZXRzX21hcF8pOworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3
OjpTdG9yZU91dGdvaW5nUnRwUGFja2V0cygKKyAgICBjb25zdCBydGNsb2cyOjpPdXRnb2luZ1J0
cFBhY2tldHMmIHByb3RvKSB7CisgIFN0b3JlUnRwUGFja2V0cyhwcm90bywgJm91dGdvaW5nX3J0
cF9wYWNrZXRzX21hcF8pOworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZUlu
Y29taW5nUnRjcFBhY2tldHMoCisgICAgY29uc3QgcnRjbG9nMjo6SW5jb21pbmdSdGNwUGFja2V0
cyYgcHJvdG8pIHsKKyAgU3RvcmVSdGNwUGFja2V0cyhwcm90bywgJmluY29taW5nX3J0Y3BfcGFj
a2V0c18pOworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZU91dGdvaW5nUnRj
cFBhY2tldHMoCisgICAgY29uc3QgcnRjbG9nMjo6T3V0Z29pbmdSdGNwUGFja2V0cyYgcHJvdG8p
IHsKKyAgU3RvcmVSdGNwUGFja2V0cyhwcm90bywgJm91dGdvaW5nX3J0Y3BfcGFja2V0c18pOwor
fQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpTdG9yZVN0YXJ0RXZlbnQoCisgICAgY29u
c3QgcnRjbG9nMjo6QmVnaW5Mb2dFdmVudCYgcHJvdG8pIHsKKyAgUlRDX0NIRUNLKHByb3RvLmhh
c190aW1lc3RhbXBfbXMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdmVyc2lvbigpKTsKKyAg
UlRDX0NIRUNLKHByb3RvLmhhc191dGNfdGltZV9tcygpKTsKKyAgUlRDX0NIRUNLX0VRKHByb3Rv
LnZlcnNpb24oKSwgMik7CisgIExvZ2dlZFN0YXJ0RXZlbnQgc3RhcnRfZXZlbnQocHJvdG8udGlt
ZXN0YW1wX21zKCkgKiAxMDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Rv
LnV0Y190aW1lX21zKCkpOworCisgIHN0YXJ0X2xvZ19ldmVudHNfLnB1c2hfYmFjayhzdGFydF9l
dmVudCk7Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlU3RvcEV2ZW50KGNv
bnN0IHJ0Y2xvZzI6OkVuZExvZ0V2ZW50JiBwcm90bykgeworICBSVENfQ0hFQ0socHJvdG8uaGFz
X3RpbWVzdGFtcF9tcygpKTsKKyAgTG9nZ2VkU3RvcEV2ZW50IHN0b3BfZXZlbnQocHJvdG8udGlt
ZXN0YW1wX21zKCkgKiAxMDAwKTsKKworICBzdG9wX2xvZ19ldmVudHNfLnB1c2hfYmFjayhzdG9w
X2V2ZW50KTsKK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVCd2VMb3NzQmFz
ZWRVcGRhdGUoCisgICAgY29uc3QgcnRjbG9nMjo6TG9zc0Jhc2VkQndlVXBkYXRlcyYgcHJvdG8p
IHsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190aW1lc3RhbXBfbXMoKSk7CisgIFJUQ19DSEVDSyhw
cm90by5oYXNfYml0cmF0ZV9icHMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfZnJhY3Rpb25f
bG9zcygpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190b3RhbF9wYWNrZXRzKCkpOworCisgIC8v
IEJhc2UgZXZlbnQKKyAgYndlX2xvc3NfdXBkYXRlc18uZW1wbGFjZV9iYWNrKDEwMDAgKiBwcm90
by50aW1lc3RhbXBfbXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Rv
LmJpdHJhdGVfYnBzKCksIHByb3RvLmZyYWN0aW9uX2xvc3MoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb3RvLnRvdGFsX3BhY2tldHMoKSk7CisKKyAgY29uc3Qgc2l6ZV90
IG51bWJlcl9vZl9kZWx0YXMgPQorICAgICAgcHJvdG8uaGFzX251bWJlcl9vZl9kZWx0YXMoKSA/
IHByb3RvLm51bWJlcl9vZl9kZWx0YXMoKSA6IDB1OworICBpZiAobnVtYmVyX29mX2RlbHRhcyA9
PSAwKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgLy8gdGltZXN0YW1wX21zCisgIHN0ZDo6dmVj
dG9yPGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gdGltZXN0YW1wX21zX3ZhbHVlcyA9CisgICAg
ICBEZWNvZGVEZWx0YXMocHJvdG8udGltZXN0YW1wX21zX2RlbHRhcygpLAorICAgICAgICAgICAg
ICAgICAgIFRvVW5zaWduZWQocHJvdG8udGltZXN0YW1wX21zKCkpLCBudW1iZXJfb2ZfZGVsdGFz
KTsKKyAgUlRDX0NIRUNLX0VRKHRpbWVzdGFtcF9tc192YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2Zf
ZGVsdGFzKTsKKworICAvLyBiaXRyYXRlX2JwcworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25h
bDx1aW50NjRfdD4+IGJpdHJhdGVfYnBzX3ZhbHVlcyA9IERlY29kZURlbHRhcygKKyAgICAgIHBy
b3RvLmJpdHJhdGVfYnBzX2RlbHRhcygpLCBwcm90by5iaXRyYXRlX2JwcygpLCBudW1iZXJfb2Zf
ZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGJpdHJhdGVfYnBzX3ZhbHVlcy5zaXplKCksIG51bWJl
cl9vZl9kZWx0YXMpOworCisgIC8vIGZyYWN0aW9uX2xvc3MKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+PiBmcmFjdGlvbl9sb3NzX3ZhbHVlcyA9IERlY29kZURlbHRhcygK
KyAgICAgIHByb3RvLmZyYWN0aW9uX2xvc3NfZGVsdGFzKCksIHByb3RvLmZyYWN0aW9uX2xvc3Mo
KSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUShmcmFjdGlvbl9sb3NzX3ZhbHVl
cy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIHRvdGFsX3BhY2tldHMKKyAgc3Rk
Ojp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB0b3RhbF9wYWNrZXRzX3ZhbHVlcyA9
IERlY29kZURlbHRhcygKKyAgICAgIHByb3RvLnRvdGFsX3BhY2tldHNfZGVsdGFzKCksIHByb3Rv
LnRvdGFsX3BhY2tldHMoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUSh0b3Rh
bF9wYWNrZXRzX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIERlbHRh
IGRlY29kaW5nCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyX29mX2RlbHRhczsgKytp
KSB7CisgICAgUlRDX0NIRUNLKHRpbWVzdGFtcF9tc192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOwor
ICAgIGludDY0X3QgdGltZXN0YW1wX21zOworICAgIFJUQ19DSEVDSyhUb1NpZ25lZCh0aW1lc3Rh
bXBfbXNfdmFsdWVzW2ldLnZhbHVlKCksICZ0aW1lc3RhbXBfbXMpKTsKKworICAgIFJUQ19DSEVD
SyhiaXRyYXRlX2Jwc192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19DSEVDS19MRShi
aXRyYXRlX2Jwc192YWx1ZXNbaV0udmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsKKyAgICBjb25zdCB1aW50MzJfdCBiaXRyYXRl
X2JwcyA9CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihiaXRyYXRlX2Jwc192YWx1ZXNb
aV0udmFsdWUoKSk7CisKKyAgICBSVENfQ0hFQ0soZnJhY3Rpb25fbG9zc192YWx1ZXNbaV0uaGFz
X3ZhbHVlKCkpOworICAgIFJUQ19DSEVDS19MRShmcmFjdGlvbl9sb3NzX3ZhbHVlc1tpXS52YWx1
ZSgpLAorICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCkpOworICAgIGNvbnN0IHVpbnQzMl90IGZyYWN0aW9uX2xvc3MgPQorICAgICAgICBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oZnJhY3Rpb25fbG9zc192YWx1ZXNbaV0udmFsdWUoKSk7CisKKyAgICBS
VENfQ0hFQ0sodG90YWxfcGFja2V0c192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpOworICAgIFJUQ19D
SEVDS19MRSh0b3RhbF9wYWNrZXRzX3ZhbHVlc1tpXS52YWx1ZSgpLAorICAgICAgICAgICAgICAg
ICBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOworICAgIGNvbnN0IHVpbnQz
Ml90IHRvdGFsX3BhY2tldHMgPQorICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG90YWxf
cGFja2V0c192YWx1ZXNbaV0udmFsdWUoKSk7CisKKyAgICBid2VfbG9zc191cGRhdGVzXy5lbXBs
YWNlX2JhY2soMTAwMCAqIHRpbWVzdGFtcF9tcywgYml0cmF0ZV9icHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uX2xvc3MsIHRvdGFsX3BhY2tldHMpOworICB9
Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlQndlRGVsYXlCYXNlZFVwZGF0
ZSgKKyAgICBjb25zdCBydGNsb2cyOjpEZWxheUJhc2VkQndlVXBkYXRlcyYgcHJvdG8pIHsKKyAg
UlRDX0NIRUNLKHByb3RvLmhhc190aW1lc3RhbXBfbXMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5o
YXNfYml0cmF0ZV9icHMoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfZGV0ZWN0b3Jfc3RhdGUo
KSk7CisKKyAgLy8gQmFzZSBldmVudAorICBjb25zdCBCYW5kd2lkdGhVc2FnZSBiYXNlX2RldGVj
dG9yX3N0YXRlID0KKyAgICAgIEdldFJ1bnRpbWVEZXRlY3RvclN0YXRlKHByb3RvLmRldGVjdG9y
X3N0YXRlKCkpOworICBid2VfZGVsYXlfdXBkYXRlc18uZW1wbGFjZV9iYWNrKDEwMDAgKiBwcm90
by50aW1lc3RhbXBfbXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90
by5iaXRyYXRlX2JwcygpLCBiYXNlX2RldGVjdG9yX3N0YXRlKTsKKworICBjb25zdCBzaXplX3Qg
bnVtYmVyX29mX2RlbHRhcyA9CisgICAgICBwcm90by5oYXNfbnVtYmVyX29mX2RlbHRhcygpID8g
cHJvdG8ubnVtYmVyX29mX2RlbHRhcygpIDogMHU7CisgIGlmIChudW1iZXJfb2ZfZGVsdGFzID09
IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyB0aW1lc3RhbXBfbXMKKyAgc3RkOjp2ZWN0
b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+PiB0aW1lc3RhbXBfbXNfdmFsdWVzID0KKyAgICAg
IERlY29kZURlbHRhcyhwcm90by50aW1lc3RhbXBfbXNfZGVsdGFzKCksCisgICAgICAgICAgICAg
ICAgICAgVG9VbnNpZ25lZChwcm90by50aW1lc3RhbXBfbXMoKSksIG51bWJlcl9vZl9kZWx0YXMp
OworICBSVENfQ0hFQ0tfRVEodGltZXN0YW1wX21zX3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9k
ZWx0YXMpOworCisgIC8vIGJpdHJhdGVfYnBzCisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90Pj4gYml0cmF0ZV9icHNfdmFsdWVzID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJv
dG8uYml0cmF0ZV9icHNfZGVsdGFzKCksIHByb3RvLmJpdHJhdGVfYnBzKCksIG51bWJlcl9vZl9k
ZWx0YXMpOworICBSVENfQ0hFQ0tfRVEoYml0cmF0ZV9icHNfdmFsdWVzLnNpemUoKSwgbnVtYmVy
X29mX2RlbHRhcyk7CisKKyAgLy8gZGV0ZWN0b3Jfc3RhdGUKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+PiBkZXRlY3Rvcl9zdGF0ZV92YWx1ZXMgPSBEZWNvZGVEZWx0YXMo
CisgICAgICBwcm90by5kZXRlY3Rvcl9zdGF0ZV9kZWx0YXMoKSwKKyAgICAgIHN0YXRpY19jYXN0
PHVpbnQ2NF90Pihwcm90by5kZXRlY3Rvcl9zdGF0ZSgpKSwgbnVtYmVyX29mX2RlbHRhcyk7Cisg
IFJUQ19DSEVDS19FUShkZXRlY3Rvcl9zdGF0ZV92YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVs
dGFzKTsKKworICAvLyBEZWx0YSBkZWNvZGluZworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bWJlcl9vZl9kZWx0YXM7ICsraSkgeworICAgIFJUQ19DSEVDSyh0aW1lc3RhbXBfbXNfdmFsdWVz
W2ldLmhhc192YWx1ZSgpKTsKKyAgICBpbnQ2NF90IHRpbWVzdGFtcF9tczsKKyAgICBSVENfQ0hF
Q0soVG9TaWduZWQodGltZXN0YW1wX21zX3ZhbHVlc1tpXS52YWx1ZSgpLCAmdGltZXN0YW1wX21z
KSk7CisKKyAgICBSVENfQ0hFQ0soYml0cmF0ZV9icHNfdmFsdWVzW2ldLmhhc192YWx1ZSgpKTsK
KyAgICBSVENfQ0hFQ0tfTEUoYml0cmF0ZV9icHNfdmFsdWVzW2ldLnZhbHVlKCksCisgICAgICAg
ICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7CisgICAgY29u
c3QgdWludDMyX3QgYml0cmF0ZV9icHMgPQorICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
Yml0cmF0ZV9icHNfdmFsdWVzW2ldLnZhbHVlKCkpOworCisgICAgUlRDX0NIRUNLKGRldGVjdG9y
X3N0YXRlX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgY29uc3QgYXV0byBkZXRlY3Rvcl9z
dGF0ZSA9CisgICAgICAgIHN0YXRpY19jYXN0PHJ0Y2xvZzI6OkRlbGF5QmFzZWRCd2VVcGRhdGVz
OjpEZXRlY3RvclN0YXRlPigKKyAgICAgICAgICAgIGRldGVjdG9yX3N0YXRlX3ZhbHVlc1tpXS52
YWx1ZSgpKTsKKworICAgIGJ3ZV9kZWxheV91cGRhdGVzXy5lbXBsYWNlX2JhY2soMTAwMCAqIHRp
bWVzdGFtcF9tcywgYml0cmF0ZV9icHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZXRSdW50aW1lRGV0ZWN0b3JTdGF0ZShkZXRlY3Rvcl9zdGF0ZSkpOworICB9Cit9CisK
K3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlQndlUHJvYmVDbHVzdGVyQ3JlYXRlZCgK
KyAgICBjb25zdCBydGNsb2cyOjpCd2VQcm9iZUNsdXN0ZXImIHByb3RvKSB7CisgIExvZ2dlZEJ3
ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCBwcm9iZV9jbHVzdGVyOworICBSVENfQ0hFQ0socHJv
dG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgcHJvYmVfY2x1c3Rlci50aW1lc3RhbXBfdXMgPSBw
cm90by50aW1lc3RhbXBfbXMoKSAqIDEwMDA7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfaWQoKSk7
CisgIHByb2JlX2NsdXN0ZXIuaWQgPSBwcm90by5pZCgpOworICBSVENfQ0hFQ0socHJvdG8uaGFz
X2JpdHJhdGVfYnBzKCkpOworICBwcm9iZV9jbHVzdGVyLmJpdHJhdGVfYnBzID0gcHJvdG8uYml0
cmF0ZV9icHMoKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19taW5fcGFja2V0cygpKTsKKyAgcHJv
YmVfY2x1c3Rlci5taW5fcGFja2V0cyA9IHByb3RvLm1pbl9wYWNrZXRzKCk7CisgIFJUQ19DSEVD
Syhwcm90by5oYXNfbWluX2J5dGVzKCkpOworICBwcm9iZV9jbHVzdGVyLm1pbl9ieXRlcyA9IHBy
b3RvLm1pbl9ieXRlcygpOworCisgIGJ3ZV9wcm9iZV9jbHVzdGVyX2NyZWF0ZWRfZXZlbnRzXy5w
dXNoX2JhY2socHJvYmVfY2x1c3Rlcik7CisKKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3
ZSBkZWx0YSBlbmNvZGUgdGhpcyBldmVudCB0eXBlPworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpTdG9yZUJ3ZVByb2JlU3VjY2Vzc0V2ZW50KAorICAgIGNvbnN0IHJ0Y2xvZzI6OkJ3
ZVByb2JlUmVzdWx0U3VjY2VzcyYgcHJvdG8pIHsKKyAgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZl
bnQgcHJvYmVfcmVzdWx0OworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsK
KyAgcHJvYmVfcmVzdWx0LnRpbWVzdGFtcF91cyA9IHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAw
MDsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19pZCgpKTsKKyAgcHJvYmVfcmVzdWx0LmlkID0gcHJv
dG8uaWQoKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19iaXRyYXRlX2JwcygpKTsKKyAgcHJvYmVf
cmVzdWx0LmJpdHJhdGVfYnBzID0gcHJvdG8uYml0cmF0ZV9icHMoKTsKKworICBid2VfcHJvYmVf
c3VjY2Vzc19ldmVudHNfLnB1c2hfYmFjayhwcm9iZV9yZXN1bHQpOworCisgIC8vIFRPRE8odGVy
ZWxpdXMpOiBTaG91bGQgd2UgZGVsdGEgZW5jb2RlIHRoaXMgZXZlbnQgdHlwZT8KK30KKwordm9p
ZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVCd2VQcm9iZUZhaWx1cmVFdmVudCgKKyAgICBj
b25zdCBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1cmUmIHByb3RvKSB7CisgIExvZ2dlZEJ3
ZVByb2JlRmFpbHVyZUV2ZW50IHByb2JlX3Jlc3VsdDsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190
aW1lc3RhbXBfbXMoKSk7CisgIHByb2JlX3Jlc3VsdC50aW1lc3RhbXBfdXMgPSBwcm90by50aW1l
c3RhbXBfbXMoKSAqIDEwMDA7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfaWQoKSk7CisgIHByb2Jl
X3Jlc3VsdC5pZCA9IHByb3RvLmlkKCk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfZmFpbHVyZSgp
KTsKKyAgcHJvYmVfcmVzdWx0LmZhaWx1cmVfcmVhc29uID0gR2V0UnVudGltZVByb2JlRmFpbHVy
ZVJlYXNvbihwcm90by5mYWlsdXJlKCkpOworCisgIGJ3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50c18u
cHVzaF9iYWNrKHByb2JlX3Jlc3VsdCk7CisKKyAgLy8gVE9ETyh0ZXJlbGl1cyk6IFNob3VsZCB3
ZSBkZWx0YSBlbmNvZGUgdGhpcyBldmVudCB0eXBlPworfQorCit2b2lkIFBhcnNlZFJ0Y0V2ZW50
TG9nTmV3OjpTdG9yZUF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCgKKyAgICBjb25zdCBydGNs
b2cyOjpBdWRpb05ldHdvcmtBZGFwdGF0aW9ucyYgcHJvdG8pIHsKKyAgUlRDX0NIRUNLKHByb3Rv
Lmhhc190aW1lc3RhbXBfbXMoKSk7CisKKyAgLy8gQmFzZSBldmVudAorICB7CisgICAgQXVkaW9F
bmNvZGVyUnVudGltZUNvbmZpZyBydW50aW1lX2NvbmZpZzsKKyAgICBpZiAocHJvdG8uaGFzX2Jp
dHJhdGVfYnBzKCkpIHsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLmJpdHJhdGVfYnBzID0gcHJvdG8u
Yml0cmF0ZV9icHMoKTsKKyAgICB9CisgICAgaWYgKHByb3RvLmhhc19mcmFtZV9sZW5ndGhfbXMo
KSkgeworICAgICAgcnVudGltZV9jb25maWcuZnJhbWVfbGVuZ3RoX21zID0gcHJvdG8uZnJhbWVf
bGVuZ3RoX21zKCk7CisgICAgfQorICAgIGlmIChwcm90by5oYXNfdXBsaW5rX3BhY2tldF9sb3Nz
X2ZyYWN0aW9uKCkpIHsKKyAgICAgIGZsb2F0IHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbjsK
KyAgICAgIFJUQ19DSEVDSyhQYXJzZVBhY2tldExvc3NGcmFjdGlvbkZyb21Qcm90b0Zvcm1hdCgK
KyAgICAgICAgICBwcm90by51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24oKSwgJnVwbGlua19w
YWNrZXRfbG9zc19mcmFjdGlvbikpOworICAgICAgcnVudGltZV9jb25maWcudXBsaW5rX3BhY2tl
dF9sb3NzX2ZyYWN0aW9uID0gdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uOworICAgIH0KKyAg
ICBpZiAocHJvdG8uaGFzX2VuYWJsZV9mZWMoKSkgeworICAgICAgcnVudGltZV9jb25maWcuZW5h
YmxlX2ZlYyA9IHByb3RvLmVuYWJsZV9mZWMoKTsKKyAgICB9CisgICAgaWYgKHByb3RvLmhhc19l
bmFibGVfZHR4KCkpIHsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLmVuYWJsZV9kdHggPSBwcm90by5l
bmFibGVfZHR4KCk7CisgICAgfQorICAgIGlmIChwcm90by5oYXNfbnVtX2NoYW5uZWxzKCkpIHsK
KyAgICAgIC8vIE5vdGU6IEVuY29kaW5nIE4gYXMgTi0xIG9ubHkgZG9uZSBmb3IgfG51bV9jaGFu
bmVsc19kZWx0YXN8LgorICAgICAgcnVudGltZV9jb25maWcubnVtX2NoYW5uZWxzID0gcHJvdG8u
bnVtX2NoYW5uZWxzKCk7CisgICAgfQorICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbl9ldmVu
dHNfLmVtcGxhY2VfYmFjaygxMDAwICogcHJvdG8udGltZXN0YW1wX21zKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfY29uZmlnKTsK
KyAgfQorCisgIGNvbnN0IHNpemVfdCBudW1iZXJfb2ZfZGVsdGFzID0KKyAgICAgIHByb3RvLmhh
c19udW1iZXJfb2ZfZGVsdGFzKCkgPyBwcm90by5udW1iZXJfb2ZfZGVsdGFzKCkgOiAwdTsKKyAg
aWYgKG51bWJlcl9vZl9kZWx0YXMgPT0gMCkgeworICAgIHJldHVybjsKKyAgfQorCisgIC8vIHRp
bWVzdGFtcF9tcworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IHRpbWVz
dGFtcF9tc192YWx1ZXMgPQorICAgICAgRGVjb2RlRGVsdGFzKHByb3RvLnRpbWVzdGFtcF9tc19k
ZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICBUb1Vuc2lnbmVkKHByb3RvLnRpbWVzdGFtcF9t
cygpKSwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19FUSh0aW1lc3RhbXBfbXNfdmFs
dWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gYml0cmF0ZV9icHMKKyAgY29u
c3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+IHVuc2lnbmVkX2Jhc2VfYml0cmF0ZV9icHMgPQor
ICAgICAgcHJvdG8uaGFzX2JpdHJhdGVfYnBzKCkKKyAgICAgICAgICA/IGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90PihUb1Vuc2lnbmVkKHByb3RvLmJpdHJhdGVfYnBzKCkpKQorICAgICAgICAgIDog
YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KCk7CisgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90Pj4gYml0cmF0ZV9icHNfdmFsdWVzID0gRGVjb2RlRGVsdGFzKAorICAgICAgcHJv
dG8uYml0cmF0ZV9icHNfZGVsdGFzKCksIHVuc2lnbmVkX2Jhc2VfYml0cmF0ZV9icHMsIG51bWJl
cl9vZl9kZWx0YXMpOworICBSVENfQ0hFQ0tfRVEoYml0cmF0ZV9icHNfdmFsdWVzLnNpemUoKSwg
bnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gZnJhbWVfbGVuZ3RoX21zCisgIGNvbnN0IGFic2w6
Om9wdGlvbmFsPHVpbnQ2NF90PiB1bnNpZ25lZF9iYXNlX2ZyYW1lX2xlbmd0aF9tcyA9CisgICAg
ICBwcm90by5oYXNfZnJhbWVfbGVuZ3RoX21zKCkKKyAgICAgICAgICA/IGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90PihUb1Vuc2lnbmVkKHByb3RvLmZyYW1lX2xlbmd0aF9tcygpKSkKKyAgICAgICAg
ICA6IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PigpOworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4+IGZyYW1lX2xlbmd0aF9tc192YWx1ZXMgPQorICAgICAgRGVjb2RlRGVs
dGFzKHByb3RvLmZyYW1lX2xlbmd0aF9tc19kZWx0YXMoKSwKKyAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZF9iYXNlX2ZyYW1lX2xlbmd0aF9tcywgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19D
SEVDS19FUShmcmFtZV9sZW5ndGhfbXNfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7
CisKKyAgLy8gdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uCisgIGNvbnN0IGFic2w6Om9wdGlv
bmFsPHVpbnQ2NF90PiB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24gPQorICAgICAgcHJvdG8u
aGFzX3VwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbigpCisgICAgICAgICAgPyBhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4ocHJvdG8udXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKCkpCisgICAg
ICAgICAgOiBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4oKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6
b3B0aW9uYWw8dWludDY0X3Q+PiB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb25fdmFsdWVzID0K
KyAgICAgIERlY29kZURlbHRhcyhwcm90by51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb25fZGVs
dGFzKCksCisgICAgICAgICAgICAgICAgICAgdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uLCBu
dW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKHVwbGlua19wYWNrZXRfbG9zc19mcmFj
dGlvbl92YWx1ZXMuc2l6ZSgpLCBudW1iZXJfb2ZfZGVsdGFzKTsKKworICAvLyBlbmFibGVfZmVj
CisgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQ2NF90PiBlbmFibGVfZmVjID0KKyAgICAgIHBy
b3RvLmhhc19lbmFibGVfZmVjKCkgPyBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4ocHJvdG8uZW5h
YmxlX2ZlYygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6Om9wdGlvbmFs
PHVpbnQ2NF90PigpOworICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4+IGVu
YWJsZV9mZWNfdmFsdWVzID0KKyAgICAgIERlY29kZURlbHRhcyhwcm90by5lbmFibGVfZmVjX2Rl
bHRhcygpLCBlbmFibGVfZmVjLCBudW1iZXJfb2ZfZGVsdGFzKTsKKyAgUlRDX0NIRUNLX0VRKGVu
YWJsZV9mZWNfdmFsdWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gZW5hYmxl
X2R0eAorICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gZW5hYmxlX2R0eCA9CisgICAg
ICBwcm90by5oYXNfZW5hYmxlX2R0eCgpID8gYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+KHByb3Rv
LmVuYWJsZV9kdHgoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhYnNsOjpvcHRp
b25hbDx1aW50NjRfdD4oKTsKKyAgc3RkOjp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+
PiBlbmFibGVfZHR4X3ZhbHVlcyA9CisgICAgICBEZWNvZGVEZWx0YXMocHJvdG8uZW5hYmxlX2R0
eF9kZWx0YXMoKSwgZW5hYmxlX2R0eCwgbnVtYmVyX29mX2RlbHRhcyk7CisgIFJUQ19DSEVDS19F
UShlbmFibGVfZHR4X3ZhbHVlcy5zaXplKCksIG51bWJlcl9vZl9kZWx0YXMpOworCisgIC8vIG51
bV9jaGFubmVscworICAvLyBOb3RlOiBGb3IgZGVsdGEgZW5jb2RpbmcsIGFsbCBudW1fY2hhbm5l
bCB2YWx1ZXMsIGluY2x1ZGluZyB0aGUgYmFzZSwKKyAgLy8gd2VyZSBzaGlmdGVkIGRvd24gYnkg
b25lLCBidXQgaW4gdGhlIGJhc2UgZXZlbnQsIHRoZXkgd2VyZSBub3QuCisgIC8vIFdlIGxpa2V3
aXNlIHNoaWZ0IHRoZSBiYXNlIGV2ZW50IGRvd24gYnkgb25lLCB0byBnZXQgdGhlIHNhbWUgYmFz
ZSBhcworICAvLyBlbmNvZGluZyBoYWQsIGJ1dCB0aGVuIHNoaWZ0IGFsbCBvZiB0aGUgdmFsdWVz
IChleGNlcHQgdGhlIGJhc2UpIGJhY2sgdXAKKyAgLy8gIHRvIHRoZWlyIG9yaWdpbmFsIHZhbHVl
LgorICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4gc2hpZnRlZF9iYXNlX251bV9jaGFubmVsczsK
KyAgaWYgKHByb3RvLmhhc19udW1fY2hhbm5lbHMoKSkgeworICAgIHNoaWZ0ZWRfYmFzZV9udW1f
Y2hhbm5lbHMgPQorICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50NjRfdD4ocHJvdG8ubnVtX2No
YW5uZWxzKCkgLSAxKTsKKyAgfQorICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDx1aW50NjRf
dD4+IG51bV9jaGFubmVsc192YWx1ZXMgPSBEZWNvZGVEZWx0YXMoCisgICAgICBwcm90by5udW1f
Y2hhbm5lbHNfZGVsdGFzKCksIHNoaWZ0ZWRfYmFzZV9udW1fY2hhbm5lbHMsIG51bWJlcl9vZl9k
ZWx0YXMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9jaGFubmVsc192YWx1ZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICBpZiAobnVtX2NoYW5uZWxzX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSkg
eworICAgICAgbnVtX2NoYW5uZWxzX3ZhbHVlc1tpXSA9IG51bV9jaGFubmVsc192YWx1ZXNbaV0u
dmFsdWUoKSArIDE7CisgICAgfQorICB9CisgIFJUQ19DSEVDS19FUShudW1fY2hhbm5lbHNfdmFs
dWVzLnNpemUoKSwgbnVtYmVyX29mX2RlbHRhcyk7CisKKyAgLy8gRGVsdGEgZGVjb2RpbmcKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJfb2ZfZGVsdGFzOyArK2kpIHsKKyAgICBSVENf
Q0hFQ0sodGltZXN0YW1wX21zX3ZhbHVlc1tpXS5oYXNfdmFsdWUoKSk7CisgICAgaW50NjRfdCB0
aW1lc3RhbXBfbXM7CisgICAgUlRDX0NIRUNLKFRvU2lnbmVkKHRpbWVzdGFtcF9tc192YWx1ZXNb
aV0udmFsdWUoKSwgJnRpbWVzdGFtcF9tcykpOworCisgICAgQXVkaW9FbmNvZGVyUnVudGltZUNv
bmZpZyBydW50aW1lX2NvbmZpZzsKKyAgICBpZiAoYml0cmF0ZV9icHNfdmFsdWVzW2ldLmhhc192
YWx1ZSgpKSB7CisgICAgICBpbnQgc2lnbmVkX2JpdHJhdGVfYnBzOworICAgICAgUlRDX0NIRUNL
KFRvU2lnbmVkKGJpdHJhdGVfYnBzX3ZhbHVlc1tpXS52YWx1ZSgpLCAmc2lnbmVkX2JpdHJhdGVf
YnBzKSk7CisgICAgICBydW50aW1lX2NvbmZpZy5iaXRyYXRlX2JwcyA9IHNpZ25lZF9iaXRyYXRl
X2JwczsKKyAgICB9CisgICAgaWYgKGZyYW1lX2xlbmd0aF9tc192YWx1ZXNbaV0uaGFzX3ZhbHVl
KCkpIHsKKyAgICAgIGludCBzaWduZWRfZnJhbWVfbGVuZ3RoX21zOworICAgICAgUlRDX0NIRUNL
KAorICAgICAgICAgIFRvU2lnbmVkKGZyYW1lX2xlbmd0aF9tc192YWx1ZXNbaV0udmFsdWUoKSwg
JnNpZ25lZF9mcmFtZV9sZW5ndGhfbXMpKTsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLmZyYW1lX2xl
bmd0aF9tcyA9IHNpZ25lZF9mcmFtZV9sZW5ndGhfbXM7CisgICAgfQorICAgIGlmICh1cGxpbmtf
cGFja2V0X2xvc3NfZnJhY3Rpb25fdmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBmbG9h
dCB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb247CisgICAgICBSVENfQ0hFQ0soUGFyc2VQYWNr
ZXRMb3NzRnJhY3Rpb25Gcm9tUHJvdG9Gb3JtYXQoCisgICAgICAgICAgcnRjOjpjaGVja2VkX2Nh
c3Q8dWludDMyX3Q+KAorICAgICAgICAgICAgICB1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb25f
dmFsdWVzW2ldLnZhbHVlKCkpLAorICAgICAgICAgICZ1cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rp
b24pKTsKKyAgICAgIHJ1bnRpbWVfY29uZmlnLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbiA9
IHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbjsKKyAgICB9CisgICAgaWYgKGVuYWJsZV9mZWNf
dmFsdWVzW2ldLmhhc192YWx1ZSgpKSB7CisgICAgICBydW50aW1lX2NvbmZpZy5lbmFibGVfZmVj
ID0KKyAgICAgICAgICBydGM6OmNoZWNrZWRfY2FzdDxib29sPihlbmFibGVfZmVjX3ZhbHVlc1tp
XS52YWx1ZSgpKTsKKyAgICB9CisgICAgaWYgKGVuYWJsZV9kdHhfdmFsdWVzW2ldLmhhc192YWx1
ZSgpKSB7CisgICAgICBydW50aW1lX2NvbmZpZy5lbmFibGVfZHR4ID0KKyAgICAgICAgICBydGM6
OmNoZWNrZWRfY2FzdDxib29sPihlbmFibGVfZHR4X3ZhbHVlc1tpXS52YWx1ZSgpKTsKKyAgICB9
CisgICAgaWYgKG51bV9jaGFubmVsc192YWx1ZXNbaV0uaGFzX3ZhbHVlKCkpIHsKKyAgICAgIHJ1
bnRpbWVfY29uZmlnLm51bV9jaGFubmVscyA9CisgICAgICAgICAgcnRjOjpjaGVja2VkX2Nhc3Q8
c2l6ZV90PihudW1fY2hhbm5lbHNfdmFsdWVzW2ldLnZhbHVlKCkpOworICAgIH0KKyAgICBhdWRp
b19uZXR3b3JrX2FkYXB0YXRpb25fZXZlbnRzXy5lbXBsYWNlX2JhY2soMTAwMCAqIHRpbWVzdGFt
cF9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnVudGltZV9jb25maWcpOworICB9Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0
b3JlSWNlQ2FuZGlkYXRlUGFpckNvbmZpZygKKyAgICBjb25zdCBydGNsb2cyOjpJY2VDYW5kaWRh
dGVQYWlyQ29uZmlnJiBwcm90bykgeworICBMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnIGlj
ZV9jb25maWc7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1wX21zKCkpOworICBpY2Vf
Y29uZmlnLnRpbWVzdGFtcF91cyA9IHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAwMDsKKworICBS
VENfQ0hFQ0socHJvdG8uaGFzX2NvbmZpZ190eXBlKCkpOworICBpY2VfY29uZmlnLnR5cGUgPSBH
ZXRSdW50aW1lSWNlQ2FuZGlkYXRlUGFpckNvbmZpZ1R5cGUocHJvdG8uY29uZmlnX3R5cGUoKSk7
CisgIFJUQ19DSEVDSyhwcm90by5oYXNfY2FuZGlkYXRlX3BhaXJfaWQoKSk7CisgIGljZV9jb25m
aWcuY2FuZGlkYXRlX3BhaXJfaWQgPSBwcm90by5jYW5kaWRhdGVfcGFpcl9pZCgpOworICBSVENf
Q0hFQ0socHJvdG8uaGFzX2xvY2FsX2NhbmRpZGF0ZV90eXBlKCkpOworICBpY2VfY29uZmlnLmxv
Y2FsX2NhbmRpZGF0ZV90eXBlID0KKyAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVUeXBlKHBy
b3RvLmxvY2FsX2NhbmRpZGF0ZV90eXBlKCkpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2xvY2Fs
X3JlbGF5X3Byb3RvY29sKCkpOworICBpY2VfY29uZmlnLmxvY2FsX3JlbGF5X3Byb3RvY29sID0K
KyAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2wocHJvdG8ubG9jYWxfcmVs
YXlfcHJvdG9jb2woKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfbG9jYWxfbmV0d29ya190eXBl
KCkpOworICBpY2VfY29uZmlnLmxvY2FsX25ldHdvcmtfdHlwZSA9CisgICAgICBHZXRSdW50aW1l
SWNlQ2FuZGlkYXRlTmV0d29ya1R5cGUocHJvdG8ubG9jYWxfbmV0d29ya190eXBlKCkpOworICBS
VENfQ0hFQ0socHJvdG8uaGFzX2xvY2FsX2FkZHJlc3NfZmFtaWx5KCkpOworICBpY2VfY29uZmln
LmxvY2FsX2FkZHJlc3NfZmFtaWx5ID0KKyAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWly
QWRkcmVzc0ZhbWlseShwcm90by5sb2NhbF9hZGRyZXNzX2ZhbWlseSgpKTsKKyAgUlRDX0NIRUNL
KHByb3RvLmhhc19yZW1vdGVfY2FuZGlkYXRlX3R5cGUoKSk7CisgIGljZV9jb25maWcucmVtb3Rl
X2NhbmRpZGF0ZV90eXBlID0KKyAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVUeXBlKHByb3Rv
LnJlbW90ZV9jYW5kaWRhdGVfdHlwZSgpKTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc19yZW1vdGVf
YWRkcmVzc19mYW1pbHkoKSk7CisgIGljZV9jb25maWcucmVtb3RlX2FkZHJlc3NfZmFtaWx5ID0K
KyAgICAgIEdldFJ1bnRpbWVJY2VDYW5kaWRhdGVQYWlyQWRkcmVzc0ZhbWlseShwcm90by5yZW1v
dGVfYWRkcmVzc19mYW1pbHkoKSk7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfY2FuZGlkYXRlX3Bh
aXJfcHJvdG9jb2woKSk7CisgIGljZV9jb25maWcuY2FuZGlkYXRlX3BhaXJfcHJvdG9jb2wgPQor
ICAgICAgR2V0UnVudGltZUljZUNhbmRpZGF0ZVBhaXJQcm90b2NvbChwcm90by5jYW5kaWRhdGVf
cGFpcl9wcm90b2NvbCgpKTsKKworICBpY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnc18ucHVzaF9i
YWNrKGljZV9jb25maWcpOworCisgIC8vIFRPRE8odGVyZWxpdXMpOiBTaG91bGQgd2UgZGVsdGEg
ZW5jb2RlIHRoaXMgZXZlbnQgdHlwZT8KK30KKwordm9pZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6
U3RvcmVJY2VDYW5kaWRhdGVFdmVudCgKKyAgICBjb25zdCBydGNsb2cyOjpJY2VDYW5kaWRhdGVQ
YWlyRXZlbnQmIHByb3RvKSB7CisgIExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCBpY2VfZXZl
bnQ7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfdGltZXN0YW1wX21zKCkpOworICBpY2VfZXZlbnQu
dGltZXN0YW1wX3VzID0gcHJvdG8udGltZXN0YW1wX21zKCkgKiAxMDAwOworICBSVENfQ0hFQ0so
cHJvdG8uaGFzX2V2ZW50X3R5cGUoKSk7CisgIGljZV9ldmVudC50eXBlID0gR2V0UnVudGltZUlj
ZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUocHJvdG8uZXZlbnRfdHlwZSgpKTsKKyAgUlRDX0NIRUNL
KHByb3RvLmhhc19jYW5kaWRhdGVfcGFpcl9pZCgpKTsKKyAgaWNlX2V2ZW50LmNhbmRpZGF0ZV9w
YWlyX2lkID0gcHJvdG8uY2FuZGlkYXRlX3BhaXJfaWQoKTsKKworICBpY2VfY2FuZGlkYXRlX3Bh
aXJfZXZlbnRzXy5wdXNoX2JhY2soaWNlX2V2ZW50KTsKKworICAvLyBUT0RPKHRlcmVsaXVzKTog
U2hvdWxkIHdlIGRlbHRhIGVuY29kZSB0aGlzIGV2ZW50IHR5cGU/Cit9CisKK3ZvaWQgUGFyc2Vk
UnRjRXZlbnRMb2dOZXc6OlN0b3JlVmlkZW9SZWN2Q29uZmlnKAorICAgIGNvbnN0IHJ0Y2xvZzI6
OlZpZGVvUmVjdlN0cmVhbUNvbmZpZyYgcHJvdG8pIHsKKyAgTG9nZ2VkVmlkZW9SZWN2Q29uZmln
IHN0cmVhbTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190aW1lc3RhbXBfbXMoKSk7CisgIHN0cmVh
bS50aW1lc3RhbXBfdXMgPSBwcm90by50aW1lc3RhbXBfbXMoKSAqIDEwMDA7CisgIFJUQ19DSEVD
Syhwcm90by5oYXNfcmVtb3RlX3NzcmMoKSk7CisgIHN0cmVhbS5jb25maWcucmVtb3RlX3NzcmMg
PSBwcm90by5yZW1vdGVfc3NyYygpOworICBSVENfQ0hFQ0socHJvdG8uaGFzX2xvY2FsX3NzcmMo
KSk7CisgIHN0cmVhbS5jb25maWcubG9jYWxfc3NyYyA9IHByb3RvLmxvY2FsX3NzcmMoKTsKKyAg
aWYgKHByb3RvLmhhc19ydHhfc3NyYygpKSB7CisgICAgc3RyZWFtLmNvbmZpZy5ydHhfc3NyYyA9
IHByb3RvLnJ0eF9zc3JjKCk7CisgIH0KKyAgaWYgKHByb3RvLmhhc19oZWFkZXJfZXh0ZW5zaW9u
cygpKSB7CisgICAgc3RyZWFtLmNvbmZpZy5ydHBfZXh0ZW5zaW9ucyA9CisgICAgICAgIEdldFJ1
bnRpbWVSdHBIZWFkZXJFeHRlbnNpb25Db25maWcocHJvdG8uaGVhZGVyX2V4dGVuc2lvbnMoKSk7
CisgIH0KKyAgdmlkZW9fcmVjdl9jb25maWdzXy5wdXNoX2JhY2soc3RyZWFtKTsKK30KKwordm9p
ZCBQYXJzZWRSdGNFdmVudExvZ05ldzo6U3RvcmVWaWRlb1NlbmRDb25maWcoCisgICAgY29uc3Qg
cnRjbG9nMjo6VmlkZW9TZW5kU3RyZWFtQ29uZmlnJiBwcm90bykgeworICBMb2dnZWRWaWRlb1Nl
bmRDb25maWcgc3RyZWFtOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsK
KyAgc3RyZWFtLnRpbWVzdGFtcF91cyA9IHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAwMDsKKyAg
cnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3NzcmMo
KSk7CisgIGNvbmZpZy5sb2NhbF9zc3JjID0gcHJvdG8uc3NyYygpOworICBpZiAocHJvdG8uaGFz
X3J0eF9zc3JjKCkpIHsKKyAgICBjb25maWcucnR4X3NzcmMgPSBwcm90by5ydHhfc3NyYygpOwor
ICB9CisgIGlmIChwcm90by5oYXNfaGVhZGVyX2V4dGVuc2lvbnMoKSkgeworICAgIGNvbmZpZy5y
dHBfZXh0ZW5zaW9ucyA9CisgICAgICAgIEdldFJ1bnRpbWVSdHBIZWFkZXJFeHRlbnNpb25Db25m
aWcocHJvdG8uaGVhZGVyX2V4dGVuc2lvbnMoKSk7CisgIH0KKyAgc3RyZWFtLmNvbmZpZ3MucHVz
aF9iYWNrKGNvbmZpZyk7CisgIHZpZGVvX3NlbmRfY29uZmlnc18ucHVzaF9iYWNrKHN0cmVhbSk7
Cit9CisKK3ZvaWQgUGFyc2VkUnRjRXZlbnRMb2dOZXc6OlN0b3JlQXVkaW9SZWN2Q29uZmlnKAor
ICAgIGNvbnN0IHJ0Y2xvZzI6OkF1ZGlvUmVjdlN0cmVhbUNvbmZpZyYgcHJvdG8pIHsKKyAgTG9n
Z2VkQXVkaW9SZWN2Q29uZmlnIHN0cmVhbTsKKyAgUlRDX0NIRUNLKHByb3RvLmhhc190aW1lc3Rh
bXBfbXMoKSk7CisgIHN0cmVhbS50aW1lc3RhbXBfdXMgPSBwcm90by50aW1lc3RhbXBfbXMoKSAq
IDEwMDA7CisgIFJUQ19DSEVDSyhwcm90by5oYXNfcmVtb3RlX3NzcmMoKSk7CisgIHN0cmVhbS5j
b25maWcucmVtb3RlX3NzcmMgPSBwcm90by5yZW1vdGVfc3NyYygpOworICBSVENfQ0hFQ0socHJv
dG8uaGFzX2xvY2FsX3NzcmMoKSk7CisgIHN0cmVhbS5jb25maWcubG9jYWxfc3NyYyA9IHByb3Rv
LmxvY2FsX3NzcmMoKTsKKyAgaWYgKHByb3RvLmhhc19oZWFkZXJfZXh0ZW5zaW9ucygpKSB7Cisg
ICAgc3RyZWFtLmNvbmZpZy5ydHBfZXh0ZW5zaW9ucyA9CisgICAgICAgIEdldFJ1bnRpbWVSdHBI
ZWFkZXJFeHRlbnNpb25Db25maWcocHJvdG8uaGVhZGVyX2V4dGVuc2lvbnMoKSk7CisgIH0KKyAg
YXVkaW9fcmVjdl9jb25maWdzXy5wdXNoX2JhY2soc3RyZWFtKTsKK30KKwordm9pZCBQYXJzZWRS
dGNFdmVudExvZ05ldzo6U3RvcmVBdWRpb1NlbmRDb25maWcoCisgICAgY29uc3QgcnRjbG9nMjo6
QXVkaW9TZW5kU3RyZWFtQ29uZmlnJiBwcm90bykgeworICBMb2dnZWRBdWRpb1NlbmRDb25maWcg
c3RyZWFtOworICBSVENfQ0hFQ0socHJvdG8uaGFzX3RpbWVzdGFtcF9tcygpKTsKKyAgc3RyZWFt
LnRpbWVzdGFtcF91cyA9IHByb3RvLnRpbWVzdGFtcF9tcygpICogMTAwMDsKKyAgUlRDX0NIRUNL
KHByb3RvLmhhc19zc3JjKCkpOworICBzdHJlYW0uY29uZmlnLmxvY2FsX3NzcmMgPSBwcm90by5z
c3JjKCk7CisgIGlmIChwcm90by5oYXNfaGVhZGVyX2V4dGVuc2lvbnMoKSkgeworICAgIHN0cmVh
bS5jb25maWcucnRwX2V4dGVuc2lvbnMgPQorICAgICAgICBHZXRSdW50aW1lUnRwSGVhZGVyRXh0
ZW5zaW9uQ29uZmlnKHByb3RvLmhlYWRlcl9leHRlbnNpb25zKCkpOworICB9CisgIGF1ZGlvX3Nl
bmRfY29uZmlnc18ucHVzaF9iYWNrKHN0cmVhbSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlcl9uZXcuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ydGNfZXZlbnRfbG9nX3BhcnNlcl9uZXcuaAppbmRleCA1YWIwYzE1YjkyYTc5ZTU2YzRjMDlj
ZGYwZDRiMDRlZWYxMmYwNjc2Li41MGUzYjk5MjJkZTI2YWRjOGRlODAwMGQwZWE2ZjRlYzRjYmI1
YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZ19wYXJzZXJfbmV3LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZl
bnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5oCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5j
bHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfcHJvYmVfcmVzdWx0
X2ZhaWx1cmUuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xv
Zy5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9p
bmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRv
cl9jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRl
cl9leHRlbnNpb25fbWFwLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9wYWNrZXQvY29tbW9uX2hlYWRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfcGFja2V0L25hY2suaCIKQEAgLTM5LDggKzM5LDEwIEBACiBSVENfUFVTSF9JR05P
UklOR19XVU5ERUYoKQogI2lmZGVmIFdFQlJUQ19BTkRST0lEX1BMQVRGT1JNX0JVSUxECiAjaW5j
bHVkZSAiZXh0ZXJuYWwvd2VicnRjL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2
ZW50X2xvZy5wYi5oIgorI2luY2x1ZGUgImV4dGVybmFsL3dlYnJ0Yy93ZWJydGMvbG9nZ2luZy9y
dGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnBiLmgiCiAjZWxzZQogI2luY2x1ZGUgImxvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLnBiLmgiCisjaW5jbHVkZSAibG9nZ2luZy9y
dGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cyLnBiLmgiCiAjZW5kaWYKIFJUQ19QT1BfSUdOT1JJ
TkdfV1VOREVGKCkKIApAQCAtNTUsNzAgKzU3LDEzNiBAQCBzdHJ1Y3QgQXVkaW9FbmNvZGVyUnVu
dGltZUNvbmZpZzsKIC8vIGNvbnNpZGVyZWQgdG8gb3V0d2VpZ2ggdGhlIGFkZGVkIG1lbW9yeSBh
bmQgcnVudGltZSBvdmVyaGVhZCBpbmN1cnJlZCBieQogLy8gYWRkaW5nIGEgdnB0ci4KIHN0cnVj
dCBMb2dnZWRBbHJTdGF0ZUV2ZW50IHsKLSAgaW50NjRfdCB0aW1lc3RhbXBfdXM7Ci0gIGJvb2wg
aW5fYWxyOworICBMb2dnZWRBbHJTdGF0ZUV2ZW50KCkgPSBkZWZhdWx0OworICBMb2dnZWRBbHJT
dGF0ZUV2ZW50KGludDY0X3QgdGltZXN0YW1wX3VzLCBib29sIGluX2FscikKKyAgICAgIDogdGlt
ZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksIGluX2Fscihpbl9hbHIpIHt9CisKICAgaW50NjRfdCBs
b2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxv
Z190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGlu
dDY0X3QgdGltZXN0YW1wX3VzOworICBib29sIGluX2FscjsKIH07CiAKIHN0cnVjdCBMb2dnZWRB
dWRpb1BsYXlvdXRFdmVudCB7Ci0gIGludDY0X3QgdGltZXN0YW1wX3VzOwotICB1aW50MzJfdCBz
c3JjOworICBMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCgpID0gZGVmYXVsdDsKKyAgTG9nZ2VkQXVk
aW9QbGF5b3V0RXZlbnQoaW50NjRfdCB0aW1lc3RhbXBfdXMsIHVpbnQzMl90IHNzcmMpCisgICAg
ICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBzc3JjKHNzcmMpIHt9CisKICAgaW50NjRf
dCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90
IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisg
IGludDY0X3QgdGltZXN0YW1wX3VzOworICB1aW50MzJfdCBzc3JjOwogfTsKIAogc3RydWN0IExv
Z2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCB7Ci0gIGludDY0X3QgdGltZXN0YW1wX3Vz
OwotICBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnIGNvbmZpZzsKKyAgTG9nZ2VkQXVkaW9OZXR3
b3JrQWRhcHRhdGlvbkV2ZW50KCkgPSBkZWZhdWx0OworICBMb2dnZWRBdWRpb05ldHdvcmtBZGFw
dGF0aW9uRXZlbnQoaW50NjRfdCB0aW1lc3RhbXBfdXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBBdWRpb0VuY29kZXJSdW50aW1lQ29uZmlnJiBjb25maWcpCisg
ICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMpLCBjb25maWcoY29uZmlnKSB7fQorCiAg
IGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KICAg
aW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7
IH0KKworICBpbnQ2NF90IHRpbWVzdGFtcF91czsKKyAgQXVkaW9FbmNvZGVyUnVudGltZUNvbmZp
ZyBjb25maWc7CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSB7CisgIExv
Z2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoKSA9IGRlZmF1bHQ7CisgIExvZ2dlZEJ3ZURlbGF5QmFz
ZWRVcGRhdGUoaW50NjRfdCB0aW1lc3RhbXBfdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCBiaXRyYXRlX2JwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYW5k
d2lkdGhVc2FnZSBkZXRlY3Rvcl9zdGF0ZSkKKyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFt
cF91cyksCisgICAgICAgIGJpdHJhdGVfYnBzKGJpdHJhdGVfYnBzKSwKKyAgICAgICAgZGV0ZWN0
b3Jfc3RhdGUoZGV0ZWN0b3Jfc3RhdGUpIHt9CisKKyAgaW50NjRfdCBsb2dfdGltZV91cygpIGNv
bnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQorICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29u
c3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCiAgIGludDY0X3QgdGltZXN0YW1w
X3VzOwogICBpbnQzMl90IGJpdHJhdGVfYnBzOwogICBCYW5kd2lkdGhVc2FnZSBkZXRlY3Rvcl9z
dGF0ZTsKLSAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91
czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
IC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSB7CisgIExv
Z2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSgpID0gZGVmYXVsdDsKKyAgTG9nZ2VkQndlTG9zc0Jhc2Vk
VXBkYXRlKGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCBiaXRyYXRlX2JwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
ZnJhY3Rpb25fbG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgZXhwZWN0
ZWRfcGFja2V0cykKKyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyksCisgICAgICAg
IGJpdHJhdGVfYnBzKGJpdHJhdGVfYnBzKSwKKyAgICAgICAgZnJhY3Rpb25fbG9zdChmcmFjdGlv
bl9sb3N0KSwKKyAgICAgICAgZXhwZWN0ZWRfcGFja2V0cyhleHBlY3RlZF9wYWNrZXRzKSB7fQor
CisgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0K
KyAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEw
MDA7IH0KKwogICBpbnQ2NF90IHRpbWVzdGFtcF91czsKICAgaW50MzJfdCBiaXRyYXRlX2JwczsK
ICAgdWludDhfdCBmcmFjdGlvbl9sb3N0OwogICBpbnQzMl90IGV4cGVjdGVkX3BhY2tldHM7Ci0g
IGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KLSAg
aW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7
IH0KIH07CiAKIHN0cnVjdCBMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQgeworICBM
b2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQoKSA9IGRlZmF1bHQ7CisgIExvZ2dlZEJ3
ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudChpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGJpdHJhdGVfYnBzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbWluX3BhY2tldHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBtaW5fYnl0ZXMpCisgICAgICA6IHRpbWVz
dGFtcF91cyh0aW1lc3RhbXBfdXMpLAorICAgICAgICBpZChpZCksCisgICAgICAgIGJpdHJhdGVf
YnBzKGJpdHJhdGVfYnBzKSwKKyAgICAgICAgbWluX3BhY2tldHMobWluX3BhY2tldHMpLAorICAg
ICAgICBtaW5fYnl0ZXMobWluX2J5dGVzKSB7fQorCisgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBj
b25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KKyAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNv
bnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKwogICBpbnQ2NF90IHRpbWVzdGFt
cF91czsKICAgaW50MzJfdCBpZDsKICAgaW50MzJfdCBiaXRyYXRlX2JwczsKICAgdWludDMyX3Qg
bWluX3BhY2tldHM7CiAgIHVpbnQzMl90IG1pbl9ieXRlczsKLSAgaW50NjRfdCBsb2dfdGltZV91
cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21z
KCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExv
Z2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50IHsKKyAgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQo
KSA9IGRlZmF1bHQ7CisgIExvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50KGludDY0X3QgdGltZXN0
YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGlkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGJpdHJhdGVfYnBzKQorICAgICAgOiB0aW1l
c3RhbXBfdXModGltZXN0YW1wX3VzKSwgaWQoaWQpLCBiaXRyYXRlX2JwcyhiaXRyYXRlX2Jwcykg
e30KKworICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3Vz
OyB9CisgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMg
LyAxMDAwOyB9CisKICAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CiAgIGludDMyX3QgaWQ7CiAgIGlu
dDMyX3QgYml0cmF0ZV9icHM7Ci0gIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVy
biB0aW1lc3RhbXBfdXM7IH0KLSAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJu
IHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KIH07CiAKIHN0cnVjdCBMb2dnZWRCd2VQcm9iZUZhaWx1
cmVFdmVudCB7CisgIExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50KCkgPSBkZWZhdWx0OworICBM
b2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudChpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUHJvYmVGYWlsdXJlUmVhc29uIGZhaWx1cmVfcmVhc29uKQorICAgICAgOiB0aW1lc3Rh
bXBfdXModGltZXN0YW1wX3VzKSwgaWQoaWQpLCBmYWlsdXJlX3JlYXNvbihmYWlsdXJlX3JlYXNv
bikge30KKworICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1w
X3VzOyB9CisgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBf
dXMgLyAxMDAwOyB9CisKICAgaW50NjRfdCB0aW1lc3RhbXBfdXM7CiAgIGludDMyX3QgaWQ7CiAg
IFByb2JlRmFpbHVyZVJlYXNvbiBmYWlsdXJlX3JlYXNvbjsKLSAgaW50NjRfdCBsb2dfdGltZV91
cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQotICBpbnQ2NF90IGxvZ190aW1lX21z
KCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQogfTsKIAogc3RydWN0IExv
Z2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWcgeworICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29u
c3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CisgIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25z
dCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKICAgaW50NjRfdCB0aW1lc3RhbXBf
dXM7CiAgIEljZUNhbmRpZGF0ZVBhaXJDb25maWdUeXBlIHR5cGU7CiAgIHVpbnQzMl90IGNhbmRp
ZGF0ZV9wYWlyX2lkOwpAQCAtMTI5LDE2ICsxOTcsMjMgQEAgc3RydWN0IExvZ2dlZEljZUNhbmRp
ZGF0ZVBhaXJDb25maWcgewogICBJY2VDYW5kaWRhdGVUeXBlIHJlbW90ZV9jYW5kaWRhdGVfdHlw
ZTsKICAgSWNlQ2FuZGlkYXRlUGFpckFkZHJlc3NGYW1pbHkgcmVtb3RlX2FkZHJlc3NfZmFtaWx5
OwogICBJY2VDYW5kaWRhdGVQYWlyUHJvdG9jb2wgY2FuZGlkYXRlX3BhaXJfcHJvdG9jb2w7Ci0g
IGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KLSAg
aW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7
IH0KIH07CiAKIHN0cnVjdCBMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQgeworICBMb2dnZWRJ
Y2VDYW5kaWRhdGVQYWlyRXZlbnQoKSA9IGRlZmF1bHQ7CisgIExvZ2dlZEljZUNhbmRpZGF0ZVBh
aXJFdmVudChpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEljZUNhbmRpZGF0ZVBhaXJFdmVudFR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGNhbmRpZGF0ZV9wYWlyX2lkKQorICAgICAgOiB0aW1lc3RhbXBf
dXModGltZXN0YW1wX3VzKSwKKyAgICAgICAgdHlwZSh0eXBlKSwKKyAgICAgICAgY2FuZGlkYXRl
X3BhaXJfaWQoY2FuZGlkYXRlX3BhaXJfaWQpIHt9CisKKyAgaW50NjRfdCBsb2dfdGltZV91cygp
IGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQorICBpbnQ2NF90IGxvZ190aW1lX21zKCkg
Y29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCiAgIGludDY0X3QgdGltZXN0
YW1wX3VzOwogICBJY2VDYW5kaWRhdGVQYWlyRXZlbnRUeXBlIHR5cGU7CiAgIHVpbnQzMl90IGNh
bmRpZGF0ZV9wYWlyX2lkOwotICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4g
dGltZXN0YW1wX3VzOyB9Ci0gIGludDY0X3QgbG9nX3RpbWVfbXMoKSBjb25zdCB7IHJldHVybiB0
aW1lc3RhbXBfdXMgLyAxMDAwOyB9CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkUnRwUGFja2V0IHsKQEAg
LTE1MCwxMyArMjI1LDE1IEBAIHN0cnVjdCBMb2dnZWRSdHBQYWNrZXQgewogICAgICAgICBoZWFk
ZXIoaGVhZGVyKSwKICAgICAgICAgaGVhZGVyX2xlbmd0aChoZWFkZXJfbGVuZ3RoKSwKICAgICAg
ICAgdG90YWxfbGVuZ3RoKHRvdGFsX2xlbmd0aCkge30KKworICBpbnQ2NF90IGxvZ190aW1lX3Vz
KCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzOyB9CisgIGludDY0X3QgbG9nX3RpbWVfbXMo
KSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKICAgaW50NjRfdCB0aW1l
c3RhbXBfdXM7CiAgIC8vIFRPRE8odGVyZWxpdXMpOiBUaGlzIGFsbG9jYXRlcyBzcGFjZSBmb3Ig
MTUgQ1NSQ3MgZXZlbiBpZiBub25lIGFyZSB1c2VkLgogICBSVFBIZWFkZXIgaGVhZGVyOwogICBz
aXplX3QgaGVhZGVyX2xlbmd0aDsKICAgc2l6ZV90IHRvdGFsX2xlbmd0aDsKLSAgaW50NjRfdCBs
b2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQotICBpbnQ2NF90IGxv
Z190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQogfTsKIAog
c3RydWN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nIHsKQEAgLTE2NSw5ICsyNDIsMTAgQEAgc3Ry
dWN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGhlYWRlcl9sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0
b3RhbF9sZW5ndGgpCiAgICAgICA6IHJ0cCh0aW1lc3RhbXBfdXMsIGhlYWRlciwgaGVhZGVyX2xl
bmd0aCwgdG90YWxfbGVuZ3RoKSB7fQotICBMb2dnZWRSdHBQYWNrZXQgcnRwOwogICBpbnQ2NF90
IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4gcnRwLnRpbWVzdGFtcF91czsgfQogICBpbnQ2
NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gcnRwLnRpbWVzdGFtcF91cyAvIDEwMDA7
IH0KKworICBMb2dnZWRSdHBQYWNrZXQgcnRwOwogfTsKIAogc3RydWN0IExvZ2dlZFJ0cFBhY2tl
dE91dGdvaW5nIHsKQEAgLTE3NiwyMSArMjU0LDI1IEBAIHN0cnVjdCBMb2dnZWRSdHBQYWNrZXRP
dXRnb2luZyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWFkZXJfbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdG90YWxfbGVuZ3RoKQogICAgICAg
OiBydHAodGltZXN0YW1wX3VzLCBoZWFkZXIsIGhlYWRlcl9sZW5ndGgsIHRvdGFsX2xlbmd0aCkg
e30KLSAgTG9nZ2VkUnRwUGFja2V0IHJ0cDsKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0
IHsgcmV0dXJuIHJ0cC50aW1lc3RhbXBfdXM7IH0KICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNv
bnN0IHsgcmV0dXJuIHJ0cC50aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgTG9nZ2VkUnRwUGFj
a2V0IHJ0cDsKIH07CiAKIHN0cnVjdCBMb2dnZWRSdGNwUGFja2V0IHsKICAgTG9nZ2VkUnRjcFBh
Y2tldCh1aW50NjRfdCB0aW1lc3RhbXBfdXMsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCogcGFja2V0LAogICAgICAgICAgICAgICAgICAgIHNpemVfdCB0b3RhbF9sZW5ndGgpOwor
ICBMb2dnZWRSdGNwUGFja2V0KHVpbnQ2NF90IHRpbWVzdGFtcF91cywgY29uc3Qgc3RkOjpzdHJp
bmcmIHBhY2tldCk7CiAgIExvZ2dlZFJ0Y3BQYWNrZXQoY29uc3QgTG9nZ2VkUnRjcFBhY2tldCYp
OwogICB+TG9nZ2VkUnRjcFBhY2tldCgpOwotICBpbnQ2NF90IHRpbWVzdGFtcF91czsKLSAgc3Rk
Ojp2ZWN0b3I8dWludDhfdD4gcmF3X2RhdGE7CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNv
bnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29u
c3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1w
X3VzOworICBzdGQ6OnZlY3Rvcjx1aW50OF90PiByYXdfZGF0YTsKIH07CiAKIHN0cnVjdCBMb2dn
ZWRSdGNwUGFja2V0SW5jb21pbmcgewpAQCAtMTk4LDkgKzI4MCwxMyBAQCBzdHJ1Y3QgTG9nZ2Vk
UnRjcFBhY2tldEluY29taW5nIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIHBhY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0b3RhbF9s
ZW5ndGgpCiAgICAgICA6IHJ0Y3AodGltZXN0YW1wX3VzLCBwYWNrZXQsIHRvdGFsX2xlbmd0aCkg
e30KLSAgTG9nZ2VkUnRjcFBhY2tldCBydGNwOworICBMb2dnZWRSdGNwUGFja2V0SW5jb21pbmco
dWludDY0X3QgdGltZXN0YW1wX3VzLCBjb25zdCBzdGQ6OnN0cmluZyYgcGFja2V0KQorICAgICAg
OiBydGNwKHRpbWVzdGFtcF91cywgcGFja2V0KSB7fQorCiAgIGludDY0X3QgbG9nX3RpbWVfdXMo
KSBjb25zdCB7IHJldHVybiBydGNwLnRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1l
X21zKCkgY29uc3QgeyByZXR1cm4gcnRjcC50aW1lc3RhbXBfdXMgLyAxMDAwOyB9CisKKyAgTG9n
Z2VkUnRjcFBhY2tldCBydGNwOwogfTsKIAogc3RydWN0IExvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2lu
ZyB7CkBAIC0yMDgsOTcgKzI5NCwxNTAgQEAgc3RydWN0IExvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2lu
ZyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwYWNrZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdG90YWxfbGVuZ3RoKQogICAgICAgOiBy
dGNwKHRpbWVzdGFtcF91cywgcGFja2V0LCB0b3RhbF9sZW5ndGgpIHt9Ci0gIExvZ2dlZFJ0Y3BQ
YWNrZXQgcnRjcDsKKyAgTG9nZ2VkUnRjcFBhY2tldE91dGdvaW5nKHVpbnQ2NF90IHRpbWVzdGFt
cF91cywgY29uc3Qgc3RkOjpzdHJpbmcmIHBhY2tldCkKKyAgICAgIDogcnRjcCh0aW1lc3RhbXBf
dXMsIHBhY2tldCkge30KKwogICBpbnQ2NF90IGxvZ190aW1lX3VzKCkgY29uc3QgeyByZXR1cm4g
cnRjcC50aW1lc3RhbXBfdXM7IH0KICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0
dXJuIHJ0Y3AudGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIExvZ2dlZFJ0Y3BQYWNrZXQgcnRj
cDsKIH07CiAKIHN0cnVjdCBMb2dnZWRSdGNwUGFja2V0UmVjZWl2ZXJSZXBvcnQgewotICBpbnQ2
NF90IHRpbWVzdGFtcF91czsKLSAgcnRjcDo6UmVjZWl2ZXJSZXBvcnQgcnI7CisgIExvZ2dlZFJ0
Y3BQYWNrZXRSZWNlaXZlclJlcG9ydCgpID0gZGVmYXVsdDsKKyAgTG9nZ2VkUnRjcFBhY2tldFJl
Y2VpdmVyUmVwb3J0KGludDY0X3QgdGltZXN0YW1wX3VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjcDo6UmVjZWl2ZXJSZXBvcnQmIHJyKQorICAgICAgOiB0aW1l
c3RhbXBfdXModGltZXN0YW1wX3VzKSwgcnIocnIpIHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91
cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21z
KCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGlt
ZXN0YW1wX3VzOworICBydGNwOjpSZWNlaXZlclJlcG9ydCBycjsKIH07CiAKIHN0cnVjdCBMb2dn
ZWRSdGNwUGFja2V0U2VuZGVyUmVwb3J0IHsKLSAgaW50NjRfdCB0aW1lc3RhbXBfdXM7Ci0gIHJ0
Y3A6OlNlbmRlclJlcG9ydCBzcjsKKyAgTG9nZ2VkUnRjcFBhY2tldFNlbmRlclJlcG9ydCgpID0g
ZGVmYXVsdDsKKyAgTG9nZ2VkUnRjcFBhY2tldFNlbmRlclJlcG9ydChpbnQ2NF90IHRpbWVzdGFt
cF91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGNwOjpTZW5kZXJS
ZXBvcnQmIHNyKQorICAgICAgOiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSwgc3Ioc3IpIHt9
CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91czsg
fQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4gdGltZXN0YW1wX3VzIC8g
MTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBydGNwOjpTZW5kZXJSZXBvcnQg
c3I7CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkUnRjcFBhY2tldFJlbWIgewotICBpbnQ2NF90IHRpbWVz
dGFtcF91czsKLSAgcnRjcDo6UmVtYiByZW1iOworICBMb2dnZWRSdGNwUGFja2V0UmVtYigpID0g
ZGVmYXVsdDsKKyAgTG9nZ2VkUnRjcFBhY2tldFJlbWIoaW50NjRfdCB0aW1lc3RhbXBfdXMsIGNv
bnN0IHJ0Y3A6OlJlbWImIHJlbWIpCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBfdXMp
LCByZW1iKHJlbWIpIHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJu
IHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4g
dGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOworICBydGNw
OjpSZW1iIHJlbWI7CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkUnRjcFBhY2tldE5hY2sgewotICBpbnQ2
NF90IHRpbWVzdGFtcF91czsKLSAgcnRjcDo6TmFjayBuYWNrOworICBMb2dnZWRSdGNwUGFja2V0
TmFjaygpID0gZGVmYXVsdDsKKyAgTG9nZ2VkUnRjcFBhY2tldE5hY2soaW50NjRfdCB0aW1lc3Rh
bXBfdXMsIGNvbnN0IHJ0Y3A6Ok5hY2smIG5hY2spCisgICAgICA6IHRpbWVzdGFtcF91cyh0aW1l
c3RhbXBfdXMpLCBuYWNrKG5hY2spIHt9CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0
IHsgcmV0dXJuIHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3Qg
eyByZXR1cm4gdGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3Vz
OworICBydGNwOjpOYWNrIG5hY2s7CiB9OwogCiBzdHJ1Y3QgTG9nZ2VkUnRjcFBhY2tldFRyYW5z
cG9ydEZlZWRiYWNrIHsKLSAgaW50NjRfdCB0aW1lc3RhbXBfdXM7Ci0gIHJ0Y3A6OlRyYW5zcG9y
dEZlZWRiYWNrIHRyYW5zcG9ydF9mZWVkYmFjazsKKyAgTG9nZ2VkUnRjcFBhY2tldFRyYW5zcG9y
dEZlZWRiYWNrKCkgPSBkZWZhdWx0OworICBMb2dnZWRSdGNwUGFja2V0VHJhbnNwb3J0RmVlZGJh
Y2soCisgICAgICBpbnQ2NF90IHRpbWVzdGFtcF91cywKKyAgICAgIGNvbnN0IHJ0Y3A6OlRyYW5z
cG9ydEZlZWRiYWNrJiB0cmFuc3BvcnRfZmVlZGJhY2spCisgICAgICA6IHRpbWVzdGFtcF91cyh0
aW1lc3RhbXBfdXMpLCB0cmFuc3BvcnRfZmVlZGJhY2sodHJhbnNwb3J0X2ZlZWRiYWNrKSB7fQor
CiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0K
ICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEw
MDA7IH0KKworICBpbnQ2NF90IHRpbWVzdGFtcF91czsKKyAgcnRjcDo6VHJhbnNwb3J0RmVlZGJh
Y2sgdHJhbnNwb3J0X2ZlZWRiYWNrOwogfTsKIAogc3RydWN0IExvZ2dlZFN0YXJ0RXZlbnQgewog
ICBleHBsaWNpdCBMb2dnZWRTdGFydEV2ZW50KGludDY0X3QgdGltZXN0YW1wX3VzKQotICAgICAg
OiB0aW1lc3RhbXBfdXModGltZXN0YW1wX3VzKSB7fQotICBpbnQ2NF90IHRpbWVzdGFtcF91czsK
KyAgICAgIDogTG9nZ2VkU3RhcnRFdmVudCh0aW1lc3RhbXBfdXMsIHRpbWVzdGFtcF91cyAvIDEw
MDApIHt9CisKKyAgTG9nZ2VkU3RhcnRFdmVudChpbnQ2NF90IHRpbWVzdGFtcF91cywgaW50NjRf
dCB1dGNfc3RhcnRfdGltZV9tcykKKyAgICAgIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cyks
IHV0Y19zdGFydF90aW1lX21zKHV0Y19zdGFydF90aW1lX21zKSB7fQorCiAgIGludDY0X3QgbG9n
X3RpbWVfdXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KICAgaW50NjRfdCBsb2df
dGltZV9tcygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKworICBpbnQ2
NF90IHRpbWVzdGFtcF91czsKKyAgaW50NjRfdCB1dGNfc3RhcnRfdGltZV9tczsKIH07CiAKIHN0
cnVjdCBMb2dnZWRTdG9wRXZlbnQgewogICBleHBsaWNpdCBMb2dnZWRTdG9wRXZlbnQoaW50NjRf
dCB0aW1lc3RhbXBfdXMpIDogdGltZXN0YW1wX3VzKHRpbWVzdGFtcF91cykge30KLSAgaW50NjRf
dCB0aW1lc3RhbXBfdXM7CisKICAgaW50NjRfdCBsb2dfdGltZV91cygpIGNvbnN0IHsgcmV0dXJu
IHRpbWVzdGFtcF91czsgfQogICBpbnQ2NF90IGxvZ190aW1lX21zKCkgY29uc3QgeyByZXR1cm4g
dGltZXN0YW1wX3VzIC8gMTAwMDsgfQorCisgIGludDY0X3QgdGltZXN0YW1wX3VzOwogfTsKIAog
c3RydWN0IExvZ2dlZEF1ZGlvUmVjdkNvbmZpZyB7CisgIExvZ2dlZEF1ZGlvUmVjdkNvbmZpZygp
ID0gZGVmYXVsdDsKICAgTG9nZ2VkQXVkaW9SZWN2Q29uZmlnKGludDY0X3QgdGltZXN0YW1wX3Vz
LCBjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcpCiAgICAgICA6IHRpbWVzdGFtcF91
cyh0aW1lc3RhbXBfdXMpLCBjb25maWcoY29uZmlnKSB7fQotICBpbnQ2NF90IHRpbWVzdGFtcF91
czsKLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOworCiAgIGludDY0X3QgbG9nX3RpbWVf
dXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KICAgaW50NjRfdCBsb2dfdGltZV9t
cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKworICBpbnQ2NF90IHRp
bWVzdGFtcF91czsKKyAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOwogfTsKIAogc3RydWN0
IExvZ2dlZEF1ZGlvU2VuZENvbmZpZyB7CisgIExvZ2dlZEF1ZGlvU2VuZENvbmZpZygpID0gZGVm
YXVsdDsKICAgTG9nZ2VkQXVkaW9TZW5kQ29uZmlnKGludDY0X3QgdGltZXN0YW1wX3VzLCBjb25z
dCBydGNsb2c6OlN0cmVhbUNvbmZpZyBjb25maWcpCiAgICAgICA6IHRpbWVzdGFtcF91cyh0aW1l
c3RhbXBfdXMpLCBjb25maWcoY29uZmlnKSB7fQotICBpbnQ2NF90IHRpbWVzdGFtcF91czsKLSAg
cnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOworCiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBj
b25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNv
bnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKworICBpbnQ2NF90IHRpbWVzdGFt
cF91czsKKyAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOwogfTsKIAogc3RydWN0IExvZ2dl
ZFZpZGVvUmVjdkNvbmZpZyB7CisgIExvZ2dlZFZpZGVvUmVjdkNvbmZpZygpID0gZGVmYXVsdDsK
ICAgTG9nZ2VkVmlkZW9SZWN2Q29uZmlnKGludDY0X3QgdGltZXN0YW1wX3VzLCBjb25zdCBydGNs
b2c6OlN0cmVhbUNvbmZpZyBjb25maWcpCiAgICAgICA6IHRpbWVzdGFtcF91cyh0aW1lc3RhbXBf
dXMpLCBjb25maWcoY29uZmlnKSB7fQotICBpbnQ2NF90IHRpbWVzdGFtcF91czsKLSAgcnRjbG9n
OjpTdHJlYW1Db25maWcgY29uZmlnOworCiAgIGludDY0X3QgbG9nX3RpbWVfdXMoKSBjb25zdCB7
IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KICAgaW50NjRfdCBsb2dfdGltZV9tcygpIGNvbnN0IHsg
cmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKworICBpbnQ2NF90IHRpbWVzdGFtcF91czsK
KyAgcnRjbG9nOjpTdHJlYW1Db25maWcgY29uZmlnOwogfTsKIAogc3RydWN0IExvZ2dlZFZpZGVv
U2VuZENvbmZpZyB7CisgIExvZ2dlZFZpZGVvU2VuZENvbmZpZygpOwogICBMb2dnZWRWaWRlb1Nl
bmRDb25maWcoaW50NjRfdCB0aW1lc3RhbXBfdXMsCiAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxydGNsb2c6OlN0cmVhbUNvbmZpZz4mIGNvbmZpZ3MpOwogICBMb2dn
ZWRWaWRlb1NlbmRDb25maWcoY29uc3QgTG9nZ2VkVmlkZW9TZW5kQ29uZmlnJik7CiAgIH5Mb2dn
ZWRWaWRlb1NlbmRDb25maWcoKTsKLSAgaW50NjRfdCB0aW1lc3RhbXBfdXM7Ci0gIHN0ZDo6dmVj
dG9yPHJ0Y2xvZzo6U3RyZWFtQ29uZmlnPiBjb25maWdzOworCiAgIGludDY0X3QgbG9nX3RpbWVf
dXMoKSBjb25zdCB7IHJldHVybiB0aW1lc3RhbXBfdXM7IH0KICAgaW50NjRfdCBsb2dfdGltZV9t
cygpIGNvbnN0IHsgcmV0dXJuIHRpbWVzdGFtcF91cyAvIDEwMDA7IH0KKworICBpbnQ2NF90IHRp
bWVzdGFtcF91czsKKyAgc3RkOjp2ZWN0b3I8cnRjbG9nOjpTdHJlYW1Db25maWc+IGNvbmZpZ3M7
CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTQ3NywzMCArNjE2LDYgQEAgY2xhc3Mg
UGFyc2VkUnRjRXZlbnRMb2dOZXcgewogICBmcmllbmQgY2xhc3MgUnRjRXZlbnRMb2dUZXN0SGVs
cGVyOwogCiAgcHVibGljOgotICB+UGFyc2VkUnRjRXZlbnRMb2dOZXcoKTsKLQotICBlbnVtIGNs
YXNzIEV2ZW50VHlwZSB7Ci0gICAgVU5LTk9XTl9FVkVOVCA9IDAsCi0gICAgTE9HX1NUQVJUID0g
MSwKLSAgICBMT0dfRU5EID0gMiwKLSAgICBSVFBfRVZFTlQgPSAzLAotICAgIFJUQ1BfRVZFTlQg
PSA0LAotICAgIEFVRElPX1BMQVlPVVRfRVZFTlQgPSA1LAotICAgIExPU1NfQkFTRURfQldFX1VQ
REFURSA9IDYsCi0gICAgREVMQVlfQkFTRURfQldFX1VQREFURSA9IDcsCi0gICAgVklERU9fUkVD
RUlWRVJfQ09ORklHX0VWRU5UID0gOCwKLSAgICBWSURFT19TRU5ERVJfQ09ORklHX0VWRU5UID0g
OSwKLSAgICBBVURJT19SRUNFSVZFUl9DT05GSUdfRVZFTlQgPSAxMCwKLSAgICBBVURJT19TRU5E
RVJfQ09ORklHX0VWRU5UID0gMTEsCi0gICAgQVVESU9fTkVUV09SS19BREFQVEFUSU9OX0VWRU5U
ID0gMTYsCi0gICAgQldFX1BST0JFX0NMVVNURVJfQ1JFQVRFRF9FVkVOVCA9IDE3LAotICAgIEJX
RV9QUk9CRV9GQUlMVVJFX0VWRU5UID0gMTgsCi0gICAgQldFX1BST0JFX1NVQ0NFU1NfRVZFTlQg
PSAxOSwKLSAgICBBTFJfU1RBVEVfRVZFTlQgPSAyMCwKLSAgICBJQ0VfQ0FORElEQVRFX1BBSVJf
Q09ORklHID0gMjEsCi0gICAgSUNFX0NBTkRJREFURV9QQUlSX0VWRU5UID0gMjIsCi0gIH07Ci0K
ICAgZW51bSBjbGFzcyBNZWRpYVR5cGUgeyBBTlksIEFVRElPLCBWSURFTywgREFUQSB9OwogICBl
bnVtIGNsYXNzIFVuY29uZmlndXJlZEhlYWRlckV4dGVuc2lvbnMgewogICAgIGtEb250UGFyc2Us
CkBAIC01NDEsNiArNjU2LDggQEAgY2xhc3MgUGFyc2VkUnRjRXZlbnRMb2dOZXcgewogICAgICAg
VW5jb25maWd1cmVkSGVhZGVyRXh0ZW5zaW9ucyBwYXJzZV91bmNvbmZpZ3VyZWRfaGVhZGVyX2V4
dGVuc2lvbnMgPQogICAgICAgICAgIFVuY29uZmlndXJlZEhlYWRlckV4dGVuc2lvbnM6OmtEb250
UGFyc2UpOwogCisgIH5QYXJzZWRSdGNFdmVudExvZ05ldygpOworCiAgIC8vIENsZWFycyBwcmV2
aW91c2x5IHBhcnNlZCBldmVudHMgYW5kIHJlc2V0cyB0aGUgUGFyc2VkUnRjRXZlbnRMb2dOZXcg
dG8gYW4KICAgLy8gZW1wdHkgc3RhdGUuCiAgIHZvaWQgQ2xlYXIoKTsKQEAgLTU1NSwxMTEgKzY3
Miw4IEBAIGNsYXNzIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3IHsKICAgYm9vbCBQYXJzZVN0cmVhbSgK
ICAgICAgIHN0ZDo6aXN0cmVhbSYgc3RyZWFtKTsgIC8vIG5vLXByZXN1Ym1pdC1jaGVjayBUT0RP
KHdlYnJ0Yzo4OTgyKQogCi0gIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBldmVudHMgaW4gYW4g
RXZlbnRTdHJlYW0uCi0gIHNpemVfdCBHZXROdW1iZXJPZkV2ZW50cygpIGNvbnN0OwotCi0gIC8v
IFJlYWRzIHRoZSBhcnJpdmFsIHRpbWVzdGFtcCAoaW4gbWljcm9zZWNvbmRzKSBmcm9tIGEgcnRj
bG9nOjpFdmVudC4KLSAgaW50NjRfdCBHZXRUaW1lc3RhbXAoc2l6ZV90IGluZGV4KSBjb25zdDsK
LSAgaW50NjRfdCBHZXRUaW1lc3RhbXAoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpIGNvbnN0
OwotCi0gIC8vIFJlYWRzIHRoZSBldmVudCB0eXBlIG9mIHRoZSBydGNsb2c6OkV2ZW50IGF0IHxp
bmRleHwuCi0gIEV2ZW50VHlwZSBHZXRFdmVudFR5cGUoc2l6ZV90IGluZGV4KSBjb25zdDsKLSAg
RXZlbnRUeXBlIEdldEV2ZW50VHlwZShjb25zdCBydGNsb2c6OkV2ZW50JiBldmVudCkgY29uc3Q7
Ci0KLSAgLy8gUmVhZHMgdGhlIGhlYWRlciwgZGlyZWN0aW9uLCBoZWFkZXIgbGVuZ3RoIGFuZCBw
YWNrZXQgbGVuZ3RoIGZyb20gdGhlIFJUUAotICAvLyBldmVudCBhdCB8aW5kZXh8LCBhbmQgc3Rv
cmVzIHRoZSB2YWx1ZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgb3V0cHV0Ci0gIC8vIHBhcmFtZXRl
cnMuIEVhY2ggb3V0cHV0IHBhcmFtZXRlciBjYW4gYmUgc2V0IHRvIG51bGxwdHIgaWYgdGhhdCB2
YWx1ZQotICAvLyBpc24ndCBuZWVkZWQuCi0gIC8vIE5COiBUaGUgaGVhZGVyIG11c3QgaGF2ZSBz
cGFjZSBmb3IgYXQgbGVhc3QgSVBfUEFDS0VUX1NJWkUgYnl0ZXMuCi0gIC8vIFJldHVybnM6IGEg
cG9pbnRlciB0byBhIGhlYWRlciBleHRlbnNpb25zIG1hcCBhY3F1aXJlZCBmcm9tIHBhcnNpbmcK
LSAgLy8gY29ycmVzcG9uZGluZyBBdWRpby9WaWRlbyBTZW5kZXIvUmVjZWl2ZXIgY29uZmlnIGV2
ZW50cy4KLSAgLy8gV2FybmluZzogaWYgdGhlIHNhbWUgU1NSQyBpcyByZXVzZWQgYnkgYm90aCB2
aWRlbyBhbmQgYXVkaW8gc3RyZWFtcyBkdXJpbmcKLSAgLy8gY2FsbCwgZXh0ZW5zaW9ucyBtYXBz
IG1heSBiZSBpbmNvcnJlY3QgKHRoZSBsYXN0IG9uZSB3b3VsZCBiZSByZXR1cm5lZCkuCi0gIGNv
bnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKiBHZXRSdHBIZWFkZXIoCi0gICAgICBz
aXplX3QgaW5kZXgsCi0gICAgICBQYWNrZXREaXJlY3Rpb24qIGluY29taW5nLAotICAgICAgdWlu
dDhfdCogaGVhZGVyLAotICAgICAgc2l6ZV90KiBoZWFkZXJfbGVuZ3RoLAotICAgICAgc2l6ZV90
KiB0b3RhbF9sZW5ndGgsCi0gICAgICBpbnQqIHByb2JlX2NsdXN0ZXJfaWQpIGNvbnN0OwotICBj
b25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCogR2V0UnRwSGVhZGVyKAotICAgICAg
Y29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQsCi0gICAgICBQYWNrZXREaXJlY3Rpb24qIGluY29t
aW5nLAotICAgICAgdWludDhfdCogaGVhZGVyLAotICAgICAgc2l6ZV90KiBoZWFkZXJfbGVuZ3Ro
LAotICAgICAgc2l6ZV90KiB0b3RhbF9sZW5ndGgsCi0gICAgICBpbnQqIHByb2JlX2NsdXN0ZXJf
aWQpIGNvbnN0OwotCi0gIC8vIFJlYWRzIHBhY2tldCwgZGlyZWN0aW9uIGFuZCBwYWNrZXQgbGVu
Z3RoIGZyb20gdGhlIFJUQ1AgZXZlbnQgYXQgfGluZGV4fCwKLSAgLy8gYW5kIHN0b3JlcyB0aGUg
dmFsdWVzIGluIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBwYXJhbWV0ZXJzLgotICAvLyBFYWNo
IG91dHB1dCBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0byBudWxscHRyIGlmIHRoYXQgdmFsdWUgaXNu
J3QgbmVlZGVkLgotICAvLyBOQjogVGhlIHBhY2tldCBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxl
YXN0IElQX1BBQ0tFVF9TSVpFIGJ5dGVzLgotICB2b2lkIEdldFJ0Y3BQYWNrZXQoc2l6ZV90IGlu
ZGV4LAotICAgICAgICAgICAgICAgICAgICAgUGFja2V0RGlyZWN0aW9uKiBpbmNvbWluZywKLSAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCogbGVuZ3RoKSBjb25zdDsKLSAgdm9pZCBHZXRSdGNwUGFja2V0KGNvbnN0IHJ0Y2xv
Zzo6RXZlbnQmIGV2ZW50LAotICAgICAgICAgICAgICAgICAgICAgUGFja2V0RGlyZWN0aW9uKiBp
bmNvbWluZywKLSAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIHBhY2tldCwKLSAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCogbGVuZ3RoKSBjb25zdDsKLQotICAvLyBSZWFkcyBhIHZpZGVv
IHJlY2VpdmUgY29uZmlnIGV2ZW50IHRvIGEgU3RyZWFtQ29uZmlnIHN0cnVjdC4KLSAgLy8gT25s
eSB0aGUgZmllbGRzIHRoYXQgYXJlIHN0b3JlZCBpbiB0aGUgcHJvdG9idWYgd2lsbCBiZSB3cml0
dGVuLgotICBydGNsb2c6OlN0cmVhbUNvbmZpZyBHZXRWaWRlb1JlY2VpdmVDb25maWcoc2l6ZV90
IGluZGV4KSBjb25zdDsKLQotICAvLyBSZWFkcyBhIHZpZGVvIHNlbmQgY29uZmlnIGV2ZW50IHRv
IGEgU3RyZWFtQ29uZmlnIHN0cnVjdC4gSWYgdGhlIHByb3RvCi0gIC8vIGNvbnRhaW5zIG11bHRp
cGxlIFNTUkNzIGFuZCBSVFggU1NSQ3MgKHRoaXMgdXNlZCB0byBiZSB0aGUgY2FzZSBmb3IKLSAg
Ly8gc2ltdWxjYXN0IHN0cmVhbXMpIHRoZW4gd2UgcmV0dXJuIG9uZSBTdHJlYW1Db25maWcgcGVy
IFNTUkMsUlRYX1NTUkMgcGFpci4KLSAgLy8gT25seSB0aGUgZmllbGRzIHRoYXQgYXJlIHN0b3Jl
ZCBpbiB0aGUgcHJvdG9idWYgd2lsbCBiZSB3cml0dGVuLgotICBzdGQ6OnZlY3RvcjxydGNsb2c6
OlN0cmVhbUNvbmZpZz4gR2V0VmlkZW9TZW5kQ29uZmlnKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0K
LSAgLy8gUmVhZHMgYSBhdWRpbyByZWNlaXZlIGNvbmZpZyBldmVudCB0byBhIFN0cmVhbUNvbmZp
ZyBzdHJ1Y3QuCi0gIC8vIE9ubHkgdGhlIGZpZWxkcyB0aGF0IGFyZSBzdG9yZWQgaW4gdGhlIHBy
b3RvYnVmIHdpbGwgYmUgd3JpdHRlbi4KLSAgcnRjbG9nOjpTdHJlYW1Db25maWcgR2V0QXVkaW9S
ZWNlaXZlQ29uZmlnKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgYSBjb25maWcg
ZXZlbnQgdG8gYSBTdHJlYW1Db25maWcgc3RydWN0LgotICAvLyBPbmx5IHRoZSBmaWVsZHMgdGhh
dCBhcmUgc3RvcmVkIGluIHRoZSBwcm90b2J1ZiB3aWxsIGJlIHdyaXR0ZW4uCi0gIHJ0Y2xvZzo6
U3RyZWFtQ29uZmlnIEdldEF1ZGlvU2VuZENvbmZpZyhzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0g
IC8vIFJlYWRzIHRoZSBTU1JDIGZyb20gdGhlIGF1ZGlvIHBsYXlvdXQgZXZlbnQgYXQgfGluZGV4
fC4gVGhlIFNTUkMgaXMgc3RvcmVkCi0gIC8vIGluIHRoZSBvdXRwdXQgcGFyYW1ldGVyIHNzcmMu
IFRoZSBvdXRwdXQgcGFyYW1ldGVyIGNhbiBiZSBzZXQgdG8gbnVsbHB0cgotICAvLyBhbmQgaW4g
dGhhdCBjYXNlIHRoZSBmdW5jdGlvbiBvbmx5IGFzc2VydHMgdGhhdCB0aGUgZXZlbnQgaXMgd2Vs
bCBmb3JtZWQuCi0gIExvZ2dlZEF1ZGlvUGxheW91dEV2ZW50IEdldEF1ZGlvUGxheW91dChzaXpl
X3QgaW5kZXgpIGNvbnN0OwotCi0gIC8vIFJlYWRzIGJpdHJhdGUsIGZyYWN0aW9uIGxvc3MgKGFz
IGRlZmluZWQgaW4gUkZDIDE4ODkpIGFuZCB0b3RhbCBudW1iZXIgb2YKLSAgLy8gZXhwZWN0ZWQg
cGFja2V0cyBmcm9tIHRoZSBsb3NzIGJhc2VkIEJXRSBldmVudCBhdCB8aW5kZXh8IGFuZCBzdG9y
ZXMgdGhlCi0gIC8vIHZhbHVlcyBpbgotICAvLyB0aGUgY29ycmVzcG9uZGluZyBvdXRwdXQgcGFy
YW1ldGVycy4gRWFjaCBvdXRwdXQgcGFyYW1ldGVyIGNhbiBiZSBzZXQgdG8KLSAgLy8gbnVsbHB0
ciBpZiB0aGF0Ci0gIC8vIHZhbHVlIGlzbid0IG5lZWRlZC4KLSAgTG9nZ2VkQndlTG9zc0Jhc2Vk
VXBkYXRlIEdldExvc3NCYXNlZEJ3ZVVwZGF0ZShzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIC8v
IFJlYWRzIGJpdHJhdGUgYW5kIGRldGVjdG9yX3N0YXRlIGZyb20gdGhlIGRlbGF5IGJhc2VkIEJX
RSBldmVudCBhdCB8aW5kZXh8Ci0gIC8vIGFuZCBzdG9yZXMgdGhlIHZhbHVlcyBpbiB0aGUgY29y
cmVzcG9uZGluZyBvdXRwdXQgcGFyYW1ldGVycy4gRWFjaCBvdXRwdXQKLSAgLy8gcGFyYW1ldGVy
IGNhbiBiZSBzZXQgdG8gbnVsbHB0ciBpZiB0aGF0Ci0gIC8vIHZhbHVlIGlzbid0IG5lZWRlZC4K
LSAgTG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSBHZXREZWxheUJhc2VkQndlVXBkYXRlKHNpemVf
dCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8gUmVhZHMgYSBhdWRpbyBuZXR3b3JrIGFkYXB0YXRpb24g
ZXZlbnQgdG8gYSAobm9uLU5VTEwpCi0gIC8vIEF1ZGlvRW5jb2RlclJ1bnRpbWVDb25maWcgc3Ry
dWN0LiBPbmx5IHRoZSBmaWVsZHMgdGhhdCBhcmUKLSAgLy8gc3RvcmVkIGluIHRoZSBwcm90b2J1
ZiB3aWxsIGJlIHdyaXR0ZW4uCi0gIExvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCBH
ZXRBdWRpb05ldHdvcmtBZGFwdGF0aW9uKAotICAgICAgc2l6ZV90IGluZGV4KSBjb25zdDsKLQot
ICBMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQgR2V0QndlUHJvYmVDbHVzdGVyQ3Jl
YXRlZCgKLSAgICAgIHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgTG9nZ2VkQndlUHJvYmVGYWls
dXJlRXZlbnQgR2V0QndlUHJvYmVGYWlsdXJlKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0gIExvZ2dl
ZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50IEdldEJ3ZVByb2JlU3VjY2VzcyhzaXplX3QgaW5kZXgpIGNv
bnN0OwotCiAgIE1lZGlhVHlwZSBHZXRNZWRpYVR5cGUodWludDMyX3Qgc3NyYywgUGFja2V0RGly
ZWN0aW9uIGRpcmVjdGlvbikgY29uc3Q7CiAKLSAgTG9nZ2VkQWxyU3RhdGVFdmVudCBHZXRBbHJT
dGF0ZShzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25m
aWcgR2V0SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyhzaXplX3QgaW5kZXgpIGNvbnN0OwotCi0gIExv
Z2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCBHZXRJY2VDYW5kaWRhdGVQYWlyRXZlbnQoc2l6ZV90
IGluZGV4KSBjb25zdDsKLQogICAvLyBDb25maWd1cmVkIFNTUkNzLgogICBjb25zdCBzdGQ6OnNl
dDx1aW50MzJfdD4mIGluY29taW5nX3J0eF9zc3JjcygpIGNvbnN0IHsKICAgICByZXR1cm4gaW5j
b21pbmdfcnR4X3NzcmNzXzsKQEAgLTg0MSw3ICs4NTUsMzYgQEAgY2xhc3MgUGFyc2VkUnRjRXZl
bnRMb2dOZXcgewogICBib29sIFBhcnNlU3RyZWFtSW50ZXJuYWwoCiAgICAgICBzdGQ6OmlzdHJl
YW0mIHN0cmVhbSk7ICAvLyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikKIAot
ICB2b2lkIFN0b3JlUGFyc2VkRXZlbnQoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpOworICB2
b2lkIFN0b3JlUGFyc2VkTGVnYWN5RXZlbnQoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQpOwor
CisgIC8vIFJlYWRzIHRoZSBhcnJpdmFsIHRpbWVzdGFtcCAoaW4gbWljcm9zZWNvbmRzKSBmcm9t
IGEgcnRjbG9nOjpFdmVudC4KKyAgaW50NjRfdCBHZXRUaW1lc3RhbXAoY29uc3QgcnRjbG9nOjpF
dmVudCYgZXZlbnQpIGNvbnN0OworCisgIC8vIFJlYWRzIHRoZSBoZWFkZXIsIGRpcmVjdGlvbiwg
aGVhZGVyIGxlbmd0aCBhbmQgcGFja2V0IGxlbmd0aCBmcm9tIHRoZSBSVFAKKyAgLy8gZXZlbnQg
YXQgfGluZGV4fCwgYW5kIHN0b3JlcyB0aGUgdmFsdWVzIGluIHRoZSBjb3JyZXNwb25kaW5nIG91
dHB1dAorICAvLyBwYXJhbWV0ZXJzLiBFYWNoIG91dHB1dCBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0
byBudWxscHRyIGlmIHRoYXQgdmFsdWUKKyAgLy8gaXNuJ3QgbmVlZGVkLgorICAvLyBOQjogVGhl
IGhlYWRlciBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxlYXN0IElQX1BBQ0tFVF9TSVpFIGJ5dGVz
LgorICAvLyBSZXR1cm5zOiBhIHBvaW50ZXIgdG8gYSBoZWFkZXIgZXh0ZW5zaW9ucyBtYXAgYWNx
dWlyZWQgZnJvbSBwYXJzaW5nCisgIC8vIGNvcnJlc3BvbmRpbmcgQXVkaW8vVmlkZW8gU2VuZGVy
L1JlY2VpdmVyIGNvbmZpZyBldmVudHMuCisgIC8vIFdhcm5pbmc6IGlmIHRoZSBzYW1lIFNTUkMg
aXMgcmV1c2VkIGJ5IGJvdGggdmlkZW8gYW5kIGF1ZGlvIHN0cmVhbXMgZHVyaW5nCisgIC8vIGNh
bGwsIGV4dGVuc2lvbnMgbWFwcyBtYXkgYmUgaW5jb3JyZWN0ICh0aGUgbGFzdCBvbmUgd291bGQg
YmUgcmV0dXJuZWQpLgorICBjb25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvbk1hcCogR2V0
UnRwSGVhZGVyKAorICAgICAgY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQsCisgICAgICBQYWNr
ZXREaXJlY3Rpb24qIGluY29taW5nLAorICAgICAgdWludDhfdCogaGVhZGVyLAorICAgICAgc2l6
ZV90KiBoZWFkZXJfbGVuZ3RoLAorICAgICAgc2l6ZV90KiB0b3RhbF9sZW5ndGgsCisgICAgICBp
bnQqIHByb2JlX2NsdXN0ZXJfaWQpIGNvbnN0OworCisgIC8vIFJlYWRzIHBhY2tldCwgZGlyZWN0
aW9uIGFuZCBwYWNrZXQgbGVuZ3RoIGZyb20gdGhlIFJUQ1AgZXZlbnQgYXQgfGluZGV4fCwKKyAg
Ly8gYW5kIHN0b3JlcyB0aGUgdmFsdWVzIGluIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBwYXJh
bWV0ZXJzLgorICAvLyBFYWNoIG91dHB1dCBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0byBudWxscHRy
IGlmIHRoYXQgdmFsdWUgaXNuJ3QgbmVlZGVkLgorICAvLyBOQjogVGhlIHBhY2tldCBtdXN0IGhh
dmUgc3BhY2UgZm9yIGF0IGxlYXN0IElQX1BBQ0tFVF9TSVpFIGJ5dGVzLgorICB2b2lkIEdldFJ0
Y3BQYWNrZXQoY29uc3QgcnRjbG9nOjpFdmVudCYgZXZlbnQsCisgICAgICAgICAgICAgICAgICAg
ICBQYWNrZXREaXJlY3Rpb24qIGluY29taW5nLAorICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCogcGFja2V0LAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgpIGNvbnN0Owog
CiAgIHJ0Y2xvZzo6U3RyZWFtQ29uZmlnIEdldFZpZGVvUmVjZWl2ZUNvbmZpZyhjb25zdCBydGNs
b2c6OkV2ZW50JiBldmVudCkgY29uc3Q7CiAgIHN0ZDo6dmVjdG9yPHJ0Y2xvZzo6U3RyZWFtQ29u
ZmlnPiBHZXRWaWRlb1NlbmRDb25maWcoCkBAIC04NzMsNyArOTE2LDMxIEBAIGNsYXNzIFBhcnNl
ZFJ0Y0V2ZW50TG9nTmV3IHsKICAgTG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50IEdldEljZUNh
bmRpZGF0ZVBhaXJFdmVudCgKICAgICAgIGNvbnN0IHJ0Y2xvZzo6RXZlbnQmIGV2ZW50KSBjb25z
dDsKIAotICBzdGQ6OnZlY3RvcjxydGNsb2c6OkV2ZW50PiBldmVudHNfOworICAvLyBQYXJzaW5n
IGZ1bmN0aW9ucyBmb3IgbmV3IGZvcm1hdC4KKyAgdm9pZCBTdG9yZVBhcnNlZE5ld0Zvcm1hdEV2
ZW50KGNvbnN0IHJ0Y2xvZzI6OkV2ZW50U3RyZWFtJiBldmVudCk7CisgIHZvaWQgU3RvcmVJbmNv
bWluZ1J0cFBhY2tldHMoY29uc3QgcnRjbG9nMjo6SW5jb21pbmdSdHBQYWNrZXRzJiBwcm90byk7
CisgIHZvaWQgU3RvcmVPdXRnb2luZ1J0cFBhY2tldHMoY29uc3QgcnRjbG9nMjo6T3V0Z29pbmdS
dHBQYWNrZXRzJiBwcm90byk7CisgIHZvaWQgU3RvcmVJbmNvbWluZ1J0Y3BQYWNrZXRzKGNvbnN0
IHJ0Y2xvZzI6OkluY29taW5nUnRjcFBhY2tldHMmIHByb3RvKTsKKyAgdm9pZCBTdG9yZU91dGdv
aW5nUnRjcFBhY2tldHMoY29uc3QgcnRjbG9nMjo6T3V0Z29pbmdSdGNwUGFja2V0cyYgcHJvdG8p
OworICB2b2lkIFN0b3JlQXVkaW9QbGF5b3V0RXZlbnQoY29uc3QgcnRjbG9nMjo6QXVkaW9QbGF5
b3V0RXZlbnRzJiBwcm90byk7CisgIHZvaWQgU3RvcmVTdGFydEV2ZW50KGNvbnN0IHJ0Y2xvZzI6
OkJlZ2luTG9nRXZlbnQmIHByb3RvKTsKKyAgdm9pZCBTdG9yZVN0b3BFdmVudChjb25zdCBydGNs
b2cyOjpFbmRMb2dFdmVudCYgcHJvdG8pOworICB2b2lkIFN0b3JlQndlTG9zc0Jhc2VkVXBkYXRl
KGNvbnN0IHJ0Y2xvZzI6Okxvc3NCYXNlZEJ3ZVVwZGF0ZXMmIHByb3RvKTsKKyAgdm9pZCBTdG9y
ZUJ3ZURlbGF5QmFzZWRVcGRhdGUoY29uc3QgcnRjbG9nMjo6RGVsYXlCYXNlZEJ3ZVVwZGF0ZXMm
IHByb3RvKTsKKyAgdm9pZCBTdG9yZUF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCgKKyAgICAg
IGNvbnN0IHJ0Y2xvZzI6OkF1ZGlvTmV0d29ya0FkYXB0YXRpb25zJiBwcm90byk7CisgIHZvaWQg
U3RvcmVCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkKGNvbnN0IHJ0Y2xvZzI6OkJ3ZVByb2JlQ2x1c3Rl
ciYgcHJvdG8pOworICB2b2lkIFN0b3JlQndlUHJvYmVTdWNjZXNzRXZlbnQoY29uc3QgcnRjbG9n
Mjo6QndlUHJvYmVSZXN1bHRTdWNjZXNzJiBwcm90byk7CisgIHZvaWQgU3RvcmVCd2VQcm9iZUZh
aWx1cmVFdmVudChjb25zdCBydGNsb2cyOjpCd2VQcm9iZVJlc3VsdEZhaWx1cmUmIHByb3RvKTsK
KyAgdm9pZCBTdG9yZUFsclN0YXRlRXZlbnQoY29uc3QgcnRjbG9nMjo6QWxyU3RhdGUmIHByb3Rv
KTsKKyAgdm9pZCBTdG9yZUljZUNhbmRpZGF0ZVBhaXJDb25maWcoCisgICAgICBjb25zdCBydGNs
b2cyOjpJY2VDYW5kaWRhdGVQYWlyQ29uZmlnJiBwcm90byk7CisgIHZvaWQgU3RvcmVJY2VDYW5k
aWRhdGVFdmVudChjb25zdCBydGNsb2cyOjpJY2VDYW5kaWRhdGVQYWlyRXZlbnQmIHByb3RvKTsK
KyAgdm9pZCBTdG9yZUF1ZGlvUmVjdkNvbmZpZyhjb25zdCBydGNsb2cyOjpBdWRpb1JlY3ZTdHJl
YW1Db25maWcmIHByb3RvKTsKKyAgdm9pZCBTdG9yZUF1ZGlvU2VuZENvbmZpZyhjb25zdCBydGNs
b2cyOjpBdWRpb1NlbmRTdHJlYW1Db25maWcmIHByb3RvKTsKKyAgdm9pZCBTdG9yZVZpZGVvUmVj
dkNvbmZpZyhjb25zdCBydGNsb2cyOjpWaWRlb1JlY3ZTdHJlYW1Db25maWcmIHByb3RvKTsKKyAg
dm9pZCBTdG9yZVZpZGVvU2VuZENvbmZpZyhjb25zdCBydGNsb2cyOjpWaWRlb1NlbmRTdHJlYW1D
b25maWcmIHByb3RvKTsKKyAgLy8gRW5kIG9mIG5ldyBwYXJzaW5nIGZ1bmN0aW9ucy4KIAogICBz
dHJ1Y3QgU3RyZWFtIHsKICAgICBTdHJlYW0odWludDMyX3Qgc3NyYywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfdW5p
dHRlc3QuY2MKaW5kZXggZTIzOGY4NDg4NDYxOGFjMTkwNzNlNzMwNGUwMWVlMTc0NmU0YmM5MS4u
ZjdiNzg5ODk5M2Y3YzkyYjkxNTdkOWE3OTE4ZTkyNGQ4MTEwY2I4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2df
dW5pdHRlc3QuY2MKQEAgLTEwMSwxMyArMTAxLDE2IEBAIHN0cnVjdCBFdmVudENvdW50cyB7CiB9
OwogCiBjbGFzcyBSdGNFdmVudExvZ1Nlc3Npb24KLSAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08c3RkOjp0dXBsZTx1aW50NjRfdCwgaW50NjRfdD4+IHsKKyAgICA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08CisgICAgICAgICAgc3RkOjp0dXBsZTx1aW50NjRf
dCwgaW50NjRfdCwgUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZT4+IHsKICBwdWJsaWM6CiAgIFJ0
Y0V2ZW50TG9nU2Vzc2lvbigpCiAgICAgICA6IHNlZWRfKHN0ZDo6Z2V0PDA+KEdldFBhcmFtKCkp
KSwKICAgICAgICAgcHJuZ18oc2VlZF8pLAorICAgICAgICBvdXRwdXRfcGVyaW9kX21zXyhzdGQ6
OmdldDwxPihHZXRQYXJhbSgpKSksCisgICAgICAgIGVuY29kaW5nX3R5cGVfKHN0ZDo6Z2V0PDI+
KEdldFBhcmFtKCkpKSwKICAgICAgICAgZ2VuXyhzZWVkXyAqIDg4MDAwMVVMKSwKLSAgICAgICAg
b3V0cHV0X3BlcmlvZF9tc18oc3RkOjpnZXQ8MT4oR2V0UGFyYW0oKSkpIHsKKyAgICAgICAgdmVy
aWZpZXJfKGVuY29kaW5nX3R5cGVfKSB7CiAgICAgY2xvY2tfLlNldFRpbWVNaWNyb3MocHJuZ18u
UmFuZDx1aW50MzJfdD4oKSk7CiAgICAgLy8gRmluZCB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0
ZXN0LCBpbiBvcmRlciB0byB1c2UgaXQgYXMgYSB0ZW1wb3JhcnkKICAgICAvLyBmaWxlbmFtZS4K
QEAgLTE2NiwxMiArMTY5LDE1IEBAIGNsYXNzIFJ0Y0V2ZW50TG9nU2Vzc2lvbgogICBzdGQ6OnZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmc+PiBvdXRnb2lu
Z19ydGNwX2xpc3RfOwogCiAgIGludDY0X3Qgc3RhcnRfdGltZV91c187CisgIGludDY0X3QgdXRj
X3N0YXJ0X3RpbWVfdXNfOwogICBpbnQ2NF90IHN0b3BfdGltZV91c187CiAKICAgY29uc3QgdWlu
dDY0X3Qgc2VlZF87CiAgIFJhbmRvbSBwcm5nXzsKKyAgY29uc3QgaW50NjRfdCBvdXRwdXRfcGVy
aW9kX21zXzsKKyAgY29uc3QgUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZSBlbmNvZGluZ190eXBl
XzsKICAgdGVzdDo6RXZlbnRHZW5lcmF0b3IgZ2VuXzsKLSAgaW50NjRfdCBvdXRwdXRfcGVyaW9k
X21zXzsKKyAgdGVzdDo6RXZlbnRWZXJpZmllciB2ZXJpZmllcl87CiAgIHJ0Yzo6U2NvcGVkRmFr
ZUNsb2NrIGNsb2NrXzsKICAgc3RkOjpzdHJpbmcgdGVtcF9maWxlbmFtZV87CiB9OwpAQCAtMjg0
LDggKzI5MCw3IEBAIHZvaWQgUnRjRXZlbnRMb2dTZXNzaW9uOjpXcml0ZUxvZyhFdmVudENvdW50
cyBjb3VudCwKICAgLy8gTWF5YmUgYWx3YXlzIHVzZSB0aGUgU2NvcGVkRmFrZUNsb2NrLCBidXQg
Y29uZGl0aW9uYWxseSBTbGVlcE1zKCk/CiAKICAgLy8gVGhlIGxvZyBmaWxlIHdpbGwgYmUgZmx1
c2hlZCB0byBkaXNrIHdoZW4gdGhlIGV2ZW50X2xvZyBnb2VzIG91dCBvZiBzY29wZS4KLSAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBldmVudF9sb2coCi0gICAgICBSdGNFdmVudExvZzo6
Q3JlYXRlKFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6OkxlZ2FjeSkpOworICBzdGQ6OnVuaXF1
ZV9wdHI8UnRjRXZlbnRMb2c+IGV2ZW50X2xvZyhSdGNFdmVudExvZzo6Q3JlYXRlKGVuY29kaW5n
X3R5cGVfKSk7CiAKICAgLy8gV2UgY2FuJ3Qgc2VuZCBvciByZWNlaXZlIHBhY2tldHMgd2l0aG91
dCBjb25maWd1cmVkIHN0cmVhbXMuCiAgIFJUQ19DSEVDS19HRShjb3VudC52aWRlb19yZWN2X3N0
cmVhbXMsIDEpOwpAQCAtMzA2LDYgKzMxMSw3IEBAIHZvaWQgUnRjRXZlbnRMb2dTZXNzaW9uOjpX
cml0ZUxvZyhFdmVudENvdW50cyBjb3VudCwKICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxS
dGNFdmVudExvZ091dHB1dEZpbGU+KHRlbXBfZmlsZW5hbWVfLCAxMDAwMDAwMCksCiAgICAgICAg
ICAgb3V0cHV0X3BlcmlvZF9tc18pOwogICAgICAgc3RhcnRfdGltZV91c18gPSBydGM6OlRpbWVN
aWNyb3MoKTsKKyAgICAgIHV0Y19zdGFydF90aW1lX3VzXyA9IHJ0Yzo6VGltZVVUQ01pY3Jvcygp
OwogICAgIH0KIAogICAgIGNsb2NrXy5BZHZhbmNlVGltZU1pY3Jvcyhwcm5nXy5SYW5kKDIwKSAq
IDEwMDApOwpAQCAtNDY1LDE5ICs0NzEsMTggQEAgdm9pZCBSdGNFdmVudExvZ1Nlc3Npb246OlJl
YWRBbmRWZXJpZnlMb2coKSB7CiAgIC8vIFN0YXJ0IGFuZCBzdG9wIGV2ZW50cy4KICAgYXV0byYg
cGFyc2VkX3N0YXJ0X2xvZ19ldmVudHMgPSBwYXJzZWRfbG9nLnN0YXJ0X2xvZ19ldmVudHMoKTsK
ICAgQVNTRVJUX0VRKHBhcnNlZF9zdGFydF9sb2dfZXZlbnRzLnNpemUoKSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PigxKSk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgdGVzdDo6VmVyaWZ5TG9nZ2VkU3Rh
cnRFdmVudChzdGFydF90aW1lX3VzXywgcGFyc2VkX3N0YXJ0X2xvZ19ldmVudHNbMF0pKTsKKyAg
dmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFN0YXJ0RXZlbnQoc3RhcnRfdGltZV91c18sIHV0Y19zdGFy
dF90aW1lX3VzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX3N0
YXJ0X2xvZ19ldmVudHNbMF0pOwogCiAgIGF1dG8mIHBhcnNlZF9zdG9wX2xvZ19ldmVudHMgPSBw
YXJzZWRfbG9nLnN0b3BfbG9nX2V2ZW50cygpOwogICBBU1NFUlRfRVEocGFyc2VkX3N0b3BfbG9n
X2V2ZW50cy5zaXplKCksIHN0YXRpY19jYXN0PHNpemVfdD4oMSkpOwotICBFWFBFQ1RfVFJVRSgK
LSAgICAgIHRlc3Q6OlZlcmlmeUxvZ2dlZFN0b3BFdmVudChzdG9wX3RpbWVfdXNfLCBwYXJzZWRf
c3RvcF9sb2dfZXZlbnRzWzBdKSk7CisgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRTdG9wRXZlbnQo
c3RvcF90aW1lX3VzXywgcGFyc2VkX3N0b3BfbG9nX2V2ZW50c1swXSk7CiAKICAgYXV0byYgcGFy
c2VkX2Fscl9zdGF0ZV9ldmVudHMgPSBwYXJzZWRfbG9nLmFscl9zdGF0ZV9ldmVudHMoKTsKICAg
QVNTRVJUX0VRKHBhcnNlZF9hbHJfc3RhdGVfZXZlbnRzLnNpemUoKSwgYWxyX3N0YXRlX2xpc3Rf
LnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2Fscl9zdGF0ZV9ldmVu
dHMuc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRBbHJT
dGF0ZUV2ZW50KCphbHJfc3RhdGVfbGlzdF9baV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfYWxyX3N0YXRlX2V2ZW50c1tpXSkpOworICAg
IHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRBbHJTdGF0ZUV2ZW50KCphbHJfc3RhdGVfbGlzdF9baV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX2Fscl9zdGF0
ZV9ldmVudHNbaV0pOwogICB9CiAKICAgY29uc3QgYXV0byYgcGFyc2VkX2F1ZGlvX3BsYXlvdXRf
bWFwID0gcGFyc2VkX2xvZy5hdWRpb19wbGF5b3V0X2V2ZW50cygpOwpAQCAtNDg4LDggKzQ5Myw4
IEBAIHZvaWQgUnRjRXZlbnRMb2dTZXNzaW9uOjpSZWFkQW5kVmVyaWZ5TG9nKCkgewogICAgIGNv
bnN0IGF1dG8mIGF1ZGlvX3BsYXlvdXRfc3RyZWFtID0gYXVkaW9fcGxheW91dF9tYXBfW3NzcmNd
OwogICAgIEFTU0VSVF9FUShwYXJzZWRfYXVkaW9fcGxheW91dF9zdHJlYW0uc2l6ZSgpLCBhdWRp
b19wbGF5b3V0X3N0cmVhbS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFy
c2VkX2F1ZGlvX3BsYXlvdXRfbWFwLnNpemUoKTsgaSsrKSB7Ci0gICAgICBFWFBFQ1RfVFJVRSh0
ZXN0OjpWZXJpZnlMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCgKLSAgICAgICAgICAqYXVkaW9fcGxh
eW91dF9zdHJlYW1baV0sIHBhcnNlZF9hdWRpb19wbGF5b3V0X3N0cmVhbVtpXSkpOworICAgICAg
dmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEF1ZGlvUGxheW91dEV2ZW50KCphdWRpb19wbGF5b3V0X3N0
cmVhbVtpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJzZWRfYXVkaW9fcGxheW91dF9zdHJlYW1baV0pOwogICAgIH0KICAgfQogCkBAIC00OTgsMjIg
KzUwMywyMiBAQCB2b2lkIFJ0Y0V2ZW50TG9nU2Vzc2lvbjo6UmVhZEFuZFZlcmlmeUxvZygpIHsK
ICAgQVNTRVJUX0VRKHBhcnNlZF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb25fZXZlbnRzLnNpemUo
KSwKICAgICAgICAgICAgIGFuYV9jb25maWdzX2xpc3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcGFyc2VkX2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbl9ldmVudHMuc2l6ZSgp
OyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRBdWRpb05ldHdvcmtB
ZGFwdGF0aW9uRXZlbnQoCi0gICAgICAgICphbmFfY29uZmlnc19saXN0X1tpXSwgcGFyc2VkX2F1
ZGlvX25ldHdvcmtfYWRhcHRhdGlvbl9ldmVudHNbaV0pKTsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5
TG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50KAorICAgICAgICAqYW5hX2NvbmZpZ3Nf
bGlzdF9baV0sIHBhcnNlZF9hdWRpb19uZXR3b3JrX2FkYXB0YXRpb25fZXZlbnRzW2ldKTsKICAg
fQogCiAgIGF1dG8mIHBhcnNlZF9id2VfZGVsYXlfdXBkYXRlcyA9IHBhcnNlZF9sb2cuYndlX2Rl
bGF5X3VwZGF0ZXMoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF9id2VfZGVsYXlfdXBkYXRlcy5zaXpl
KCksIGJ3ZV9kZWxheV9saXN0Xy5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
cnNlZF9id2VfZGVsYXlfdXBkYXRlcy5zaXplKCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRl
c3Q6OlZlcmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoCi0gICAgICAgICpid2VfZGVsYXlf
bGlzdF9baV0sIHBhcnNlZF9id2VfZGVsYXlfdXBkYXRlc1tpXSkpOworICAgIHZlcmlmaWVyXy5W
ZXJpZnlMb2dnZWRCd2VEZWxheUJhc2VkVXBkYXRlKCpid2VfZGVsYXlfbGlzdF9baV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX2J3ZV9kZWxh
eV91cGRhdGVzW2ldKTsKICAgfQogCiAgIGF1dG8mIHBhcnNlZF9id2VfbG9zc191cGRhdGVzID0g
cGFyc2VkX2xvZy5id2VfbG9zc191cGRhdGVzKCk7CiAgIEFTU0VSVF9FUShwYXJzZWRfYndlX2xv
c3NfdXBkYXRlcy5zaXplKCksIGJ3ZV9sb3NzX2xpc3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcGFyc2VkX2J3ZV9sb3NzX3VwZGF0ZXMuc2l6ZSgpOyBpKyspIHsKLSAgICBF
WFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUoCi0gICAgICAg
ICpid2VfbG9zc19saXN0X1tpXSwgcGFyc2VkX2J3ZV9sb3NzX3VwZGF0ZXNbaV0pKTsKKyAgICB2
ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlTG9zc0Jhc2VkVXBkYXRlKCpid2VfbG9zc19saXN0X1tp
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9i
d2VfbG9zc191cGRhdGVzW2ldKTsKICAgfQogCiAgIGF1dG8mIHBhcnNlZF9id2VfcHJvYmVfY2x1
c3Rlcl9jcmVhdGVkX2V2ZW50cyA9CkBAIC01MjEsMzAgKzUyNiwzMCBAQCB2b2lkIFJ0Y0V2ZW50
TG9nU2Vzc2lvbjo6UmVhZEFuZFZlcmlmeUxvZygpIHsKICAgQVNTRVJUX0VRKHBhcnNlZF9id2Vf
cHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50cy5zaXplKCksCiAgICAgICAgICAgICBwcm9iZV9j
cmVhdGlvbl9saXN0Xy5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9i
d2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50cy5zaXplKCk7IGkrKykgewotICAgIEVYUEVD
VF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCgKLSAg
ICAgICAgKnByb2JlX2NyZWF0aW9uX2xpc3RfW2ldLCBwYXJzZWRfYndlX3Byb2JlX2NsdXN0ZXJf
Y3JlYXRlZF9ldmVudHNbaV0pKTsKKyAgICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlUHJvYmVD
bHVzdGVyQ3JlYXRlZEV2ZW50KAorICAgICAgICAqcHJvYmVfY3JlYXRpb25fbGlzdF9baV0sIHBh
cnNlZF9id2VfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkX2V2ZW50c1tpXSk7CiAgIH0KIAogICBhdXRv
JiBwYXJzZWRfYndlX3Byb2JlX2ZhaWx1cmVfZXZlbnRzID0gcGFyc2VkX2xvZy5id2VfcHJvYmVf
ZmFpbHVyZV9ldmVudHMoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF9id2VfcHJvYmVfZmFpbHVyZV9l
dmVudHMuc2l6ZSgpLCBwcm9iZV9mYWlsdXJlX2xpc3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcGFyc2VkX2J3ZV9wcm9iZV9mYWlsdXJlX2V2ZW50cy5zaXplKCk7IGkrKykg
ewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50
KAotICAgICAgICAqcHJvYmVfZmFpbHVyZV9saXN0X1tpXSwgcGFyc2VkX2J3ZV9wcm9iZV9mYWls
dXJlX2V2ZW50c1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRCd2VQcm9iZUZhaWx1
cmVFdmVudCgKKyAgICAgICAgKnByb2JlX2ZhaWx1cmVfbGlzdF9baV0sIHBhcnNlZF9id2VfcHJv
YmVfZmFpbHVyZV9ldmVudHNbaV0pOwogICB9CiAKICAgYXV0byYgcGFyc2VkX2J3ZV9wcm9iZV9z
dWNjZXNzX2V2ZW50cyA9IHBhcnNlZF9sb2cuYndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRzKCk7CiAg
IEFTU0VSVF9FUShwYXJzZWRfYndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRzLnNpemUoKSwgcHJvYmVf
c3VjY2Vzc19saXN0Xy5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9i
d2VfcHJvYmVfc3VjY2Vzc19ldmVudHMuc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0
ZXN0OjpWZXJpZnlMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCgKLSAgICAgICAgKnByb2JlX3N1
Y2Nlc3NfbGlzdF9baV0sIHBhcnNlZF9id2VfcHJvYmVfc3VjY2Vzc19ldmVudHNbaV0pKTsKKyAg
ICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQoCisgICAgICAgICpw
cm9iZV9zdWNjZXNzX2xpc3RfW2ldLCBwYXJzZWRfYndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRzW2ld
KTsKICAgfQogCiAgIGF1dG8mIHBhcnNlZF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlncyA9CiAg
ICAgICBwYXJzZWRfbG9nLmljZV9jYW5kaWRhdGVfcGFpcl9jb25maWdzKCk7CiAgIEFTU0VSVF9F
UShwYXJzZWRfaWNlX2NhbmRpZGF0ZV9wYWlyX2NvbmZpZ3Muc2l6ZSgpLCBpY2VfY29uZmlnX2xp
c3RfLnNpemUoKSk7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2ljZV9jYW5kaWRh
dGVfcGFpcl9jb25maWdzLnNpemUoKTsgaSsrKSB7Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6VmVy
aWZ5TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZygKLSAgICAgICAgKmljZV9jb25maWdfbGlz
dF9baV0sIHBhcnNlZF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnc1tpXSkpOworICAgIHZlcmlm
aWVyXy5WZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAorICAgICAgICAqaWNlX2Nv
bmZpZ19saXN0X1tpXSwgcGFyc2VkX2ljZV9jYW5kaWRhdGVfcGFpcl9jb25maWdzW2ldKTsKICAg
fQogCiAgIGF1dG8mIHBhcnNlZF9pY2VfY2FuZGlkYXRlX3BhaXJfZXZlbnRzID0KQEAgLTU1Miw4
ICs1NTcsOCBAQCB2b2lkIFJ0Y0V2ZW50TG9nU2Vzc2lvbjo6UmVhZEFuZFZlcmlmeUxvZygpIHsK
ICAgQVNTRVJUX0VRKHBhcnNlZF9pY2VfY2FuZGlkYXRlX3BhaXJfZXZlbnRzLnNpemUoKSwKICAg
ICAgICAgICAgIHBhcnNlZF9pY2VfY2FuZGlkYXRlX3BhaXJfZXZlbnRzLnNpemUoKSk7CiAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX2ljZV9jYW5kaWRhdGVfcGFpcl9ldmVudHMuc2l6
ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRJY2VDYW5kaWRh
dGVQYWlyRXZlbnQoCi0gICAgICAgICppY2VfZXZlbnRfbGlzdF9baV0sIHBhcnNlZF9pY2VfY2Fu
ZGlkYXRlX3BhaXJfZXZlbnRzW2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEljZUNh
bmRpZGF0ZVBhaXJFdmVudCgKKyAgICAgICAgKmljZV9ldmVudF9saXN0X1tpXSwgcGFyc2VkX2lj
ZV9jYW5kaWRhdGVfcGFpcl9ldmVudHNbaV0pOwogICB9CiAKICAgYXV0byYgcGFyc2VkX2luY29t
aW5nX3J0cF9wYWNrZXRzX2J5X3NzcmMgPQpAQCAtNTY2LDggKzU3MSw4IEBAIHZvaWQgUnRjRXZl
bnRMb2dTZXNzaW9uOjpSZWFkQW5kVmVyaWZ5TG9nKCkgewogICAgIGNvbnN0IGF1dG8mIHJ0cF9z
dHJlYW0gPSBpbmNvbWluZ19ydHBfbWFwX1tzc3JjXTsKICAgICBBU1NFUlRfRVEocGFyc2VkX3J0
cF9zdHJlYW0uc2l6ZSgpLCBydHBfc3RyZWFtLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwYXJzZWRfcnRwX3N0cmVhbS5zaXplKCk7IGkrKykgewotICAgICAgRVhQRUNUX1RS
VUUodGVzdDo6VmVyaWZ5TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcoKnJ0cF9zdHJlYW1baV0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJz
ZWRfcnRwX3N0cmVhbVtpXSkpOworICAgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFJ0cFBhY2tl
dEluY29taW5nKCpydHBfc3RyZWFtW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcnNlZF9ydHBfc3RyZWFtW2ldKTsKICAgICB9CiAgIH0KIApAQCAt
NTgxLDQ3ICs1ODYsNDcgQEAgdm9pZCBSdGNFdmVudExvZ1Nlc3Npb246OlJlYWRBbmRWZXJpZnlM
b2coKSB7CiAgICAgY29uc3QgYXV0byYgcnRwX3N0cmVhbSA9IG91dGdvaW5nX3J0cF9tYXBfW3Nz
cmNdOwogICAgIEFTU0VSVF9FUShwYXJzZWRfcnRwX3N0cmVhbS5zaXplKCksIHJ0cF9zdHJlYW0u
c2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcnNlZF9ydHBfc3RyZWFtLnNp
emUoKTsgaSsrKSB7Ci0gICAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRSdHBQYWNr
ZXRPdXRnb2luZygqcnRwX3N0cmVhbVtpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9ydHBfc3RyZWFtW2ldKSk7CisgICAgICB2
ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcoKnJ0cF9zdHJlYW1baV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX3J0cF9z
dHJlYW1baV0pOwogICAgIH0KICAgfQogCiAgIGF1dG8mIHBhcnNlZF9pbmNvbWluZ19ydGNwX3Bh
Y2tldHMgPSBwYXJzZWRfbG9nLmluY29taW5nX3J0Y3BfcGFja2V0cygpOwogICBBU1NFUlRfRVEo
cGFyc2VkX2luY29taW5nX3J0Y3BfcGFja2V0cy5zaXplKCksIGluY29taW5nX3J0Y3BfbGlzdF8u
c2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfaW5jb21pbmdfcnRjcF9w
YWNrZXRzLnNpemUoKTsgaSsrKSB7Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2Vk
UnRjcFBhY2tldEluY29taW5nKAotICAgICAgICAqaW5jb21pbmdfcnRjcF9saXN0X1tpXSwgcGFy
c2VkX2luY29taW5nX3J0Y3BfcGFja2V0c1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dn
ZWRSdGNwUGFja2V0SW5jb21pbmcoKmluY29taW5nX3J0Y3BfbGlzdF9baV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfaW5jb21pbmdfcnRjcF9w
YWNrZXRzW2ldKTsKICAgfQogCiAgIGF1dG8mIHBhcnNlZF9vdXRnb2luZ19ydGNwX3BhY2tldHMg
PSBwYXJzZWRfbG9nLm91dGdvaW5nX3J0Y3BfcGFja2V0cygpOwogICBBU1NFUlRfRVEocGFyc2Vk
X291dGdvaW5nX3J0Y3BfcGFja2V0cy5zaXplKCksIG91dGdvaW5nX3J0Y3BfbGlzdF8uc2l6ZSgp
KTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRfb3V0Z29pbmdfcnRjcF9wYWNrZXRz
LnNpemUoKTsgaSsrKSB7Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkUnRjcFBh
Y2tldE91dGdvaW5nKAotICAgICAgICAqb3V0Z29pbmdfcnRjcF9saXN0X1tpXSwgcGFyc2VkX291
dGdvaW5nX3J0Y3BfcGFja2V0c1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRSdGNw
UGFja2V0T3V0Z29pbmcoKm91dGdvaW5nX3J0Y3BfbGlzdF9baV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfb3V0Z29pbmdfcnRjcF9wYWNrZXRz
W2ldKTsKICAgfQogICBhdXRvJiBwYXJzZWRfYXVkaW9fcmVjdl9jb25maWdzID0gcGFyc2VkX2xv
Zy5hdWRpb19yZWN2X2NvbmZpZ3MoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF9hdWRpb19yZWN2X2Nv
bmZpZ3Muc2l6ZSgpLCBhdWRpb19yZWN2X2NvbmZpZ19saXN0Xy5zaXplKCkpOwogICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHBhcnNlZF9hdWRpb19yZWN2X2NvbmZpZ3Muc2l6ZSgpOyBpKyspIHsK
LSAgICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRBdWRpb1JlY3ZDb25maWcoCi0gICAg
ICAgICphdWRpb19yZWN2X2NvbmZpZ19saXN0X1tpXSwgcGFyc2VkX2F1ZGlvX3JlY3ZfY29uZmln
c1tpXSkpOworICAgIHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRBdWRpb1JlY3ZDb25maWcoKmF1ZGlv
X3JlY3ZfY29uZmlnX2xpc3RfW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyc2VkX2F1ZGlvX3JlY3ZfY29uZmlnc1tpXSk7CiAgIH0KICAgYXV0byYgcGFy
c2VkX2F1ZGlvX3NlbmRfY29uZmlncyA9IHBhcnNlZF9sb2cuYXVkaW9fc2VuZF9jb25maWdzKCk7
CiAgIEFTU0VSVF9FUShwYXJzZWRfYXVkaW9fc2VuZF9jb25maWdzLnNpemUoKSwgYXVkaW9fc2Vu
ZF9jb25maWdfbGlzdF8uc2l6ZSgpKTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJzZWRf
YXVkaW9fc2VuZF9jb25maWdzLnNpemUoKTsgaSsrKSB7Ci0gICAgRVhQRUNUX1RSVUUodGVzdDo6
VmVyaWZ5TG9nZ2VkQXVkaW9TZW5kQ29uZmlnKAotICAgICAgICAqYXVkaW9fc2VuZF9jb25maWdf
bGlzdF9baV0sIHBhcnNlZF9hdWRpb19zZW5kX2NvbmZpZ3NbaV0pKTsKKyAgICB2ZXJpZmllcl8u
VmVyaWZ5TG9nZ2VkQXVkaW9TZW5kQ29uZmlnKCphdWRpb19zZW5kX2NvbmZpZ19saXN0X1tpXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9hdWRpb19z
ZW5kX2NvbmZpZ3NbaV0pOwogICB9CiAgIGF1dG8mIHBhcnNlZF92aWRlb19yZWN2X2NvbmZpZ3Mg
PSBwYXJzZWRfbG9nLnZpZGVvX3JlY3ZfY29uZmlncygpOwogICBBU1NFUlRfRVEocGFyc2VkX3Zp
ZGVvX3JlY3ZfY29uZmlncy5zaXplKCksIHZpZGVvX3JlY3ZfY29uZmlnX2xpc3RfLnNpemUoKSk7
CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyc2VkX3ZpZGVvX3JlY3ZfY29uZmlncy5zaXpl
KCk7IGkrKykgewotICAgIEVYUEVDVF9UUlVFKHRlc3Q6OlZlcmlmeUxvZ2dlZFZpZGVvUmVjdkNv
bmZpZygKLSAgICAgICAgKnZpZGVvX3JlY3ZfY29uZmlnX2xpc3RfW2ldLCBwYXJzZWRfdmlkZW9f
cmVjdl9jb25maWdzW2ldKSk7CisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFZpZGVvUmVjdkNv
bmZpZygqdmlkZW9fcmVjdl9jb25maWdfbGlzdF9baV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJzZWRfdmlkZW9fcmVjdl9jb25maWdzW2ldKTsKICAgfQog
ICBhdXRvJiBwYXJzZWRfdmlkZW9fc2VuZF9jb25maWdzID0gcGFyc2VkX2xvZy52aWRlb19zZW5k
X2NvbmZpZ3MoKTsKICAgQVNTRVJUX0VRKHBhcnNlZF92aWRlb19zZW5kX2NvbmZpZ3Muc2l6ZSgp
LCB2aWRlb19zZW5kX2NvbmZpZ19saXN0Xy5zaXplKCkpOwogICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHBhcnNlZF92aWRlb19zZW5kX2NvbmZpZ3Muc2l6ZSgpOyBpKyspIHsKLSAgICBFWFBFQ1Rf
VFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRWaWRlb1NlbmRDb25maWcoCi0gICAgICAgICp2aWRlb19z
ZW5kX2NvbmZpZ19saXN0X1tpXSwgcGFyc2VkX3ZpZGVvX3NlbmRfY29uZmlnc1tpXSkpOworICAg
IHZlcmlmaWVyXy5WZXJpZnlMb2dnZWRWaWRlb1NlbmRDb25maWcoKnZpZGVvX3NlbmRfY29uZmln
X2xpc3RfW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
c2VkX3ZpZGVvX3NlbmRfY29uZmlnc1tpXSk7CiAgIH0KIAogICAvLyBDbGVhbiB1cCB0ZW1wb3Jh
cnkgZmlsZSAtIGNhbiBiZSBwcmV0dHkgc2xvdy4KQEAgLTY4MCw3ICs2ODUsMjUgQEAgVEVTVF9Q
KFJ0Y0V2ZW50TG9nU2Vzc2lvbiwgU3RhcnRMb2dnaW5nSW5UaGVNaWRkbGUpIHsKICAgUmVhZEFu
ZFZlcmlmeUxvZygpOwogfQogCi1URVNUKFJ0Y0V2ZW50TG9nVGVzdCwgQ2lyY3VsYXJCdWZmZXJL
ZWVwc01vc3RSZWNlbnRFdmVudHMpIHsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIFJ0
Y0V2ZW50TG9nVGVzdCwKKyAgICBSdGNFdmVudExvZ1Nlc3Npb24sCisgICAgOjp0ZXN0aW5nOjpD
b21iaW5lKAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygxMjM0NTY3LCA3NjU0MzIxKSwKKyAg
ICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoUnRjRXZlbnRMb2c6OmtJbW1lZGlhdGVPdXRwdXQsIDEs
IDUpLAorICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcyhSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBl
OjpMZWdhY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y0V2ZW50TG9nOjpFbmNvZGlu
Z1R5cGU6Ok5ld0Zvcm1hdCkpKTsKKworY2xhc3MgUnRjRXZlbnRMb2dDaXJjdWxhckJ1ZmZlclRl
c3QKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08UnRjRXZlbnRMb2c6OkVu
Y29kaW5nVHlwZT4geworIHB1YmxpYzoKKyAgUnRjRXZlbnRMb2dDaXJjdWxhckJ1ZmZlclRlc3Qo
KQorICAgICAgOiBlbmNvZGluZ190eXBlXyhHZXRQYXJhbSgpKSwgdmVyaWZpZXJfKGVuY29kaW5n
X3R5cGVfKSB7fQorICBjb25zdCBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlIGVuY29kaW5nX3R5
cGVfOworICBjb25zdCB0ZXN0OjpFdmVudFZlcmlmaWVyIHZlcmlmaWVyXzsKK307CisKK1RFU1Rf
UChSdGNFdmVudExvZ0NpcmN1bGFyQnVmZmVyVGVzdCwgS2VlcHNNb3N0UmVjZW50RXZlbnRzKSB7
CiAgIC8vIFRPRE8odGVyZWxpdXMpOiBNYXliZSBtYWtlIGEgc2VwYXJhdGUgUnRjRXZlbnRMb2dJ
bXBsVGVzdCB0aGF0IGNhbiBhY2Nlc3MKICAgLy8gdGhlIHNpemUgb2YgdGhlIGN5Y2xpYyBidWZm
ZXI/CiAgIGNvbnN0ZXhwciBzaXplX3Qga051bUV2ZW50cyA9IDIwMDAwOwpAQCAtNjk5LDggKzcy
Miw3IEBAIFRFU1QoUnRjRXZlbnRMb2dUZXN0LCBDaXJjdWxhckJ1ZmZlcktlZXBzTW9zdFJlY2Vu
dEV2ZW50cykgewogCiAgIC8vIFdoZW4gbG9nX2R1bXBlciBnb2VzIG91dCBvZiBzY29wZSwgaXQg
Y2F1c2VzIHRoZSBsb2cgZmlsZSB0byBiZSBmbHVzaGVkCiAgIC8vIHRvIGRpc2suCi0gIHN0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudExvZz4gbG9nX2R1bXBlcigKLSAgICAgIFJ0Y0V2ZW50TG9nOjpD
cmVhdGUoUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TGVnYWN5KSk7CisgIHN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudExvZz4gbG9nX2R1bXBlcihSdGNFdmVudExvZzo6Q3JlYXRlKGVuY29kaW5n
X3R5cGVfKSk7CiAKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrTnVtRXZlbnRzOyBpKyspIHsK
ICAgICAvLyBUaGUgcHVycG9zZSBvZiB0aGUgdGVzdCBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgbG9n
IGNhbiBoYW5kbGUKQEAgLTcxNCw2ICs3MzYsNyBAQCBURVNUKFJ0Y0V2ZW50TG9nVGVzdCwgQ2ly
Y3VsYXJCdWZmZXJLZWVwc01vc3RSZWNlbnRFdmVudHMpIHsKICAgICBmYWtlX2Nsb2NrLT5BZHZh
bmNlVGltZU1pY3JvcygxMDAwMCk7CiAgIH0KICAgaW50NjRfdCBzdGFydF90aW1lX3VzID0gcnRj
OjpUaW1lTWljcm9zKCk7CisgIGludDY0X3QgdXRjX3N0YXJ0X3RpbWVfdXMgPSBydGM6OlRpbWVV
VENNaWNyb3MoKTsKICAgbG9nX2R1bXBlci0+U3RhcnRMb2dnaW5nKAogICAgICAgYWJzbDo6bWFr
ZV91bmlxdWU8UnRjRXZlbnRMb2dPdXRwdXRGaWxlPih0ZW1wX2ZpbGVuYW1lLCAxMDAwMDAwMCks
CiAgICAgICBSdGNFdmVudExvZzo6a0ltbWVkaWF0ZU91dHB1dCk7CkBAIC03MjcsMTEgKzc1MCwx
MiBAQCBURVNUKFJ0Y0V2ZW50TG9nVGVzdCwgQ2lyY3VsYXJCdWZmZXJLZWVwc01vc3RSZWNlbnRF
dmVudHMpIHsKIAogICBjb25zdCBhdXRvJiBzdGFydF9sb2dfZXZlbnRzID0gcGFyc2VkX2xvZy5z
dGFydF9sb2dfZXZlbnRzKCk7CiAgIEFTU0VSVF9FUShzdGFydF9sb2dfZXZlbnRzLnNpemUoKSwg
MXUpOwotICBFWFBFQ1RfVFJVRSh0ZXN0OjpWZXJpZnlMb2dnZWRTdGFydEV2ZW50KHN0YXJ0X3Rp
bWVfdXMsIHN0YXJ0X2xvZ19ldmVudHNbMF0pKTsKKyAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZFN0
YXJ0RXZlbnQoc3RhcnRfdGltZV91cywgdXRjX3N0YXJ0X3RpbWVfdXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xvZ19ldmVudHNbMF0pOwogCiAgIGNvbnN0IGF1
dG8mIHN0b3BfbG9nX2V2ZW50cyA9IHBhcnNlZF9sb2cuc3RvcF9sb2dfZXZlbnRzKCk7CiAgIEFT
U0VSVF9FUShzdG9wX2xvZ19ldmVudHMuc2l6ZSgpLCAxdSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Q6
OlZlcmlmeUxvZ2dlZFN0b3BFdmVudChzdG9wX3RpbWVfdXMsIHN0b3BfbG9nX2V2ZW50c1swXSkp
OworICB2ZXJpZmllcl8uVmVyaWZ5TG9nZ2VkU3RvcEV2ZW50KHN0b3BfdGltZV91cywgc3RvcF9s
b2dfZXZlbnRzWzBdKTsKIAogICBjb25zdCBhdXRvJiBwcm9iZV9zdWNjZXNzX2V2ZW50cyA9IHBh
cnNlZF9sb2cuYndlX3Byb2JlX3N1Y2Nlc3NfZXZlbnRzKCk7CiAgIC8vIElmIHRoZSBmb2xsb3dp
bmcgZmFpbHMsIGl0IHByb2JhYmx5IG1lYW5zIHRoYXQga051bUV2ZW50cyBpc24ndCBsYXJnZXIK
QEAgLTc1MiwxOSArNzc2LDIwIEBAIFRFU1QoUnRjRXZlbnRMb2dUZXN0LCBDaXJjdWxhckJ1ZmZl
cktlZXBzTW9zdFJlY2VudEV2ZW50cykgewogICBmYWtlX2Nsb2NrLT5TZXRUaW1lTWljcm9zKGZp
cnN0X3RpbWVzdGFtcF91cyk7CiAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgcHJvYmVfc3VjY2Vz
c19ldmVudHMuc2l6ZSgpOyBpKyspIHsKICAgICBmYWtlX2Nsb2NrLT5BZHZhbmNlVGltZU1pY3Jv
cygxMDAwMCk7Ci0gICAgQVNTRVJUX1RSVUUodGVzdDo6VmVyaWZ5TG9nZ2VkQndlUHJvYmVTdWNj
ZXNzRXZlbnQoCisgICAgdmVyaWZpZXJfLlZlcmlmeUxvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50
KAogICAgICAgICBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2VzcyhmaXJzdF9pZCArIGksIGZpcnN0
X2JpdHJhdGVfYnBzICsgaSAqIDEwMDApLAotICAgICAgICBwcm9iZV9zdWNjZXNzX2V2ZW50c1tp
XSkpOworICAgICAgICBwcm9iZV9zdWNjZXNzX2V2ZW50c1tpXSk7CiAgIH0KIH0KIAorSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AoCisgICAgUnRjRXZlbnRMb2dUZXN0LAorICAgIFJ0Y0V2ZW50TG9n
Q2lyY3VsYXJCdWZmZXJUZXN0LAorICAgIDo6dGVzdGluZzo6VmFsdWVzKFJ0Y0V2ZW50TG9nOjpF
bmNvZGluZ1R5cGU6OkxlZ2FjeSwKKyAgICAgICAgICAgICAgICAgICAgICBSdGNFdmVudExvZzo6
RW5jb2RpbmdUeXBlOjpOZXdGb3JtYXQpKTsKKwogLy8gVE9ETyh0ZXJlbGl1cyk6IFZlcmlmeSBw
YXJzZXIgYmVoYXZpb3IgaWYgdGhlIHRpbWVzdGFtcHMgYXJlIG5vdAogLy8gbW9ub3RvbmljYWxs
eSBpbmNyZWFzaW5nIGluIHRoZSBsb2cuCiAKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAotICAg
IFJ0Y0V2ZW50TG9nVGVzdCwKLSAgICBSdGNFdmVudExvZ1Nlc3Npb24sCi0gICAgOjp0ZXN0aW5n
OjpDb21iaW5lKDo6dGVzdGluZzo6VmFsdWVzKDEyMzQ1NjcsIDc2NTQzMjEpLAotICAgICAgICAg
ICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcyhSdGNFdmVudExvZzo6a0ltbWVkaWF0ZU91
dHB1dCwgMSwgNSkpKTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRf
bG9nL3J0Y19ldmVudF9sb2dfdW5pdHRlc3RfaGVscGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9s
b2dfdW5pdHRlc3RfaGVscGVyLmNjCmluZGV4IDlmNjI0MGNiZTFlNmJmNzc3NzFkZjFiMTM3ZGJl
OWQzN2YxMGI2MzguLmU4NzgwOGQxMjVjM2U0OTNjMTFmMTVjNzdhOWRhZjAxNjQzYjUyN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0X2hlbHBlci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVu
dF9sb2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdF9oZWxwZXIuY2MKQEAgLTEyLDEyICsxMiwxNSBA
QAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBtZW1jbXAKIAorI2luY2x1ZGUgPGFsZ29yaXRo
bT4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPG51bWVy
aWM+CisjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdv
cmtfYWRhcHRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L2luY2x1ZGUvYndlX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1
ZGUvcnRwX2N2by5oIgpAQCAtMjUsNiArMjgsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBA
IC02Miw2ICs2NiwxNiBAQCB2b2lkIFNodWZmbGVJblBsYWNlKFJhbmRvbSogcHJuZywgcnRjOjpB
cnJheVZpZXc8VD4gYXJyYXkpIHsKICAgICBzdGQ6OnN3YXAoYXJyYXlbaV0sIGFycmF5W290aGVy
XSk7CiAgIH0KIH0KKworYWJzbDo6b3B0aW9uYWw8aW50PiBHZXRFeHRlbnNpb25JZChjb25zdCBz
dGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+JiBleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXJpKSB7CisgIGZvciAoY29uc3Qg
YXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9ucykgeworICAgIGlmIChleHRlbnNpb24udXJpID09
IHVyaSkKKyAgICAgIHJldHVybiBleHRlbnNpb24uaWQ7CisgIH0KKyAgcmV0dXJuIGFic2w6Om51
bGxvcHQ7Cit9CisKIH0gIC8vIG5hbWVzcGFjZQogCiBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRB
bHJTdGF0ZT4gRXZlbnRHZW5lcmF0b3I6Ok5ld0FsclN0YXRlKCkgewpAQCAtMjY2LDcgKzI4MCw4
IEBAIHZvaWQgRXZlbnRHZW5lcmF0b3I6OlJhbmRvbWl6ZVJ0cFBhY2tldCgKICAgICBzaXplX3Qg
cGFkZGluZ19zaXplLAogICAgIHVpbnQzMl90IHNzcmMsCiAgICAgY29uc3QgUnRwSGVhZGVyRXh0
ZW5zaW9uTWFwJiBleHRlbnNpb25fbWFwLAotICAgIFJ0cFBhY2tldCogcnRwX3BhY2tldCkgewor
ICAgIFJ0cFBhY2tldCogcnRwX3BhY2tldCwKKyAgICBib29sIGFsbF9jb25maWd1cmVkX2V4dHMp
IHsKICAgY29uc3RleHByIGludCBrTWF4UGF5bG9hZFR5cGUgPSAxMjc7CiAgIHJ0cF9wYWNrZXQt
PlNldFBheWxvYWRUeXBlKHBybmdfLlJhbmQoa01heFBheWxvYWRUeXBlKSk7CiAgIHJ0cF9wYWNr
ZXQtPlNldE1hcmtlcihwcm5nXy5SYW5kPGJvb2w+KCkpOwpAQCAtMjgxLDE2ICsyOTYsMzAgQEAg
dm9pZCBFdmVudEdlbmVyYXRvcjo6UmFuZG9taXplUnRwUGFja2V0KAogICB9CiAgIHJ0cF9wYWNr
ZXQtPlNldENzcmNzKGNzcmNzKTsKIAotICBpZiAoZXh0ZW5zaW9uX21hcC5Jc1JlZ2lzdGVyZWQo
VHJhbnNtaXNzaW9uT2Zmc2V0OjprSWQpKQorICBpZiAoZXh0ZW5zaW9uX21hcC5Jc1JlZ2lzdGVy
ZWQoVHJhbnNtaXNzaW9uT2Zmc2V0OjprSWQpICYmCisgICAgICAoYWxsX2NvbmZpZ3VyZWRfZXh0
cyB8fCBwcm5nXy5SYW5kPGJvb2w+KCkpKSB7CiAgICAgcnRwX3BhY2tldC0+U2V0RXh0ZW5zaW9u
PFRyYW5zbWlzc2lvbk9mZnNldD4ocHJuZ18uUmFuZCgweDAwZmZmZmZmKSk7Ci0gIGlmIChleHRl
bnNpb25fbWFwLklzUmVnaXN0ZXJlZChBdWRpb0xldmVsOjprSWQpKQorICB9CisKKyAgaWYgKGV4
dGVuc2lvbl9tYXAuSXNSZWdpc3RlcmVkKEF1ZGlvTGV2ZWw6OmtJZCkgJiYKKyAgICAgIChhbGxf
Y29uZmlndXJlZF9leHRzIHx8IHBybmdfLlJhbmQ8Ym9vbD4oKSkpIHsKICAgICBydHBfcGFja2V0
LT5TZXRFeHRlbnNpb248QXVkaW9MZXZlbD4ocHJuZ18uUmFuZDxib29sPigpLCBwcm5nXy5SYW5k
KDEyNykpOwotICBpZiAoZXh0ZW5zaW9uX21hcC5Jc1JlZ2lzdGVyZWQoQWJzb2x1dGVTZW5kVGlt
ZTo6a0lkKSkKKyAgfQorCisgIGlmIChleHRlbnNpb25fbWFwLklzUmVnaXN0ZXJlZChBYnNvbHV0
ZVNlbmRUaW1lOjprSWQpICYmCisgICAgICAoYWxsX2NvbmZpZ3VyZWRfZXh0cyB8fCBwcm5nXy5S
YW5kPGJvb2w+KCkpKSB7CiAgICAgcnRwX3BhY2tldC0+U2V0RXh0ZW5zaW9uPEFic29sdXRlU2Vu
ZFRpbWU+KHBybmdfLlJhbmQoMHgwMGZmZmZmZikpOwotICBpZiAoZXh0ZW5zaW9uX21hcC5Jc1Jl
Z2lzdGVyZWQoVmlkZW9PcmllbnRhdGlvbjo6a0lkKSkKKyAgfQorCisgIGlmIChleHRlbnNpb25f
bWFwLklzUmVnaXN0ZXJlZChWaWRlb09yaWVudGF0aW9uOjprSWQpICYmCisgICAgICAoYWxsX2Nv
bmZpZ3VyZWRfZXh0cyB8fCBwcm5nXy5SYW5kPGJvb2w+KCkpKSB7CiAgICAgcnRwX3BhY2tldC0+
U2V0RXh0ZW5zaW9uPFZpZGVvT3JpZW50YXRpb24+KHBybmdfLlJhbmQoMykpOwotICBpZiAoZXh0
ZW5zaW9uX21hcC5Jc1JlZ2lzdGVyZWQoVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI6OmtJZCkpCisg
IH0KKworICBpZiAoZXh0ZW5zaW9uX21hcC5Jc1JlZ2lzdGVyZWQoVHJhbnNwb3J0U2VxdWVuY2VO
dW1iZXI6OmtJZCkgJiYKKyAgICAgIChhbGxfY29uZmlndXJlZF9leHRzIHx8IHBybmdfLlJhbmQ8
Ym9vbD4oKSkpIHsKICAgICBydHBfcGFja2V0LT5TZXRFeHRlbnNpb248VHJhbnNwb3J0U2VxdWVu
Y2VOdW1iZXI+KHBybmdfLlJhbmQ8dWludDE2X3Q+KCkpOworICB9CiAKICAgUlRDX0NIRUNLX0xF
KHJ0cF9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpICsgcGF5bG9hZF9zaXplLCBJUF9QQUNLRVRfU0la
RSk7CiAKQEAgLTI5OSwxMiArMzI4LDEzIEBAIHZvaWQgRXZlbnRHZW5lcmF0b3I6OlJhbmRvbWl6
ZVJ0cFBhY2tldCgKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkX3NpemU7IGkrKykg
ewogICAgIHBheWxvYWRbaV0gPSBwcm5nXy5SYW5kPHVpbnQ4X3Q+KCk7CiAgIH0KLSAgUlRDX0NI
RUNLKHJ0cF9wYWNrZXQtPlNldFBhZGRpbmcocGFkZGluZ19zaXplLCAmcHJuZ18pKTsKKyAgUlRD
X0NIRUNLKHJ0cF9wYWNrZXQtPlNldFBhZGRpbmcocGFkZGluZ19zaXplKSk7CiB9CiAKIHN0ZDo6
dW5pcXVlX3B0cjxSdGNFdmVudFJ0cFBhY2tldEluY29taW5nPiBFdmVudEdlbmVyYXRvcjo6TmV3
UnRwUGFja2V0SW5jb21pbmcoCiAgICAgdWludDMyX3Qgc3NyYywKLSAgICBjb25zdCBSdHBIZWFk
ZXJFeHRlbnNpb25NYXAmIGV4dGVuc2lvbl9tYXApIHsKKyAgICBjb25zdCBSdHBIZWFkZXJFeHRl
bnNpb25NYXAmIGV4dGVuc2lvbl9tYXAsCisgICAgYm9vbCBhbGxfY29uZmlndXJlZF9leHRzKSB7
CiAgIGNvbnN0ZXhwciBzaXplX3Qga01heFBhZGRpbmdMZW5ndGggPSAyMjQ7CiAgIGNvbnN0IGJv
b2wgcGFkZGluZyA9IHBybmdfLlJhbmQoMCwgOSkgPT0gMDsgIC8vIExldCBwYWRkaW5nIGJlIDEw
JSBwcm9iYWJsZS4KICAgY29uc3Qgc2l6ZV90IHBhZGRpbmdfc2l6ZSA9ICFwYWRkaW5nID8gMHUg
OiBwcm5nXy5SYW5kKDB1LCBrTWF4UGFkZGluZ0xlbmd0aCk7CkBAIC0zMjUsMTQgKzM1NSwxNSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZz4gRXZlbnRHZW5lcmF0
b3I6Ok5ld1J0cFBhY2tldEluY29taW5nKAogCiAgIFJ0cFBhY2tldFJlY2VpdmVkIHJ0cF9wYWNr
ZXQoJmV4dGVuc2lvbl9tYXApOwogICBSYW5kb21pemVSdHBQYWNrZXQocGF5bG9hZF9zaXplLCBw
YWRkaW5nX3NpemUsIHNzcmMsIGV4dGVuc2lvbl9tYXAsCi0gICAgICAgICAgICAgICAgICAgICAm
cnRwX3BhY2tldCk7CisgICAgICAgICAgICAgICAgICAgICAmcnRwX3BhY2tldCwgYWxsX2NvbmZp
Z3VyZWRfZXh0cyk7CiAKICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFJ0Y0V2ZW50UnRwUGFj
a2V0SW5jb21pbmc+KHJ0cF9wYWNrZXQpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRS
dHBQYWNrZXRPdXRnb2luZz4gRXZlbnRHZW5lcmF0b3I6Ok5ld1J0cFBhY2tldE91dGdvaW5nKAog
ICAgIHVpbnQzMl90IHNzcmMsCi0gICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBleHRl
bnNpb25fbWFwKSB7CisgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBleHRlbnNpb25f
bWFwLAorICAgIGJvb2wgYWxsX2NvbmZpZ3VyZWRfZXh0cykgewogICBjb25zdGV4cHIgc2l6ZV90
IGtNYXhQYWRkaW5nTGVuZ3RoID0gMjI0OwogICBjb25zdCBib29sIHBhZGRpbmcgPSBwcm5nXy5S
YW5kKDAsIDkpID09IDA7ICAvLyBMZXQgcGFkZGluZyBiZSAxMCUgcHJvYmFibGUuCiAgIGNvbnN0
IHNpemVfdCBwYWRkaW5nX3NpemUgPSAhcGFkZGluZyA/IDB1IDogcHJuZ18uUmFuZCgwdSwga01h
eFBhZGRpbmdMZW5ndGgpOwpAQCAtMzU0LDMzICszODUsMzQgQEAgc3RkOjp1bmlxdWVfcHRyPFJ0
Y0V2ZW50UnRwUGFja2V0T3V0Z29pbmc+IEV2ZW50R2VuZXJhdG9yOjpOZXdSdHBQYWNrZXRPdXRn
b2luZygKICAgUnRwUGFja2V0VG9TZW5kIHJ0cF9wYWNrZXQoJmV4dGVuc2lvbl9tYXAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtNYXhIZWFkZXJTaXplICsgcGF5bG9hZF9zaXplICsg
cGFkZGluZ19zaXplKTsKICAgUmFuZG9taXplUnRwUGFja2V0KHBheWxvYWRfc2l6ZSwgcGFkZGlu
Z19zaXplLCBzc3JjLCBleHRlbnNpb25fbWFwLAotICAgICAgICAgICAgICAgICAgICAgJnJ0cF9w
YWNrZXQpOworICAgICAgICAgICAgICAgICAgICAgJnJ0cF9wYWNrZXQsIGFsbF9jb25maWd1cmVk
X2V4dHMpOwogCiAgIGludCBwcm9iZV9jbHVzdGVyX2lkID0gcHJuZ18uUmFuZCgwLCAxMDAwMDAp
OwogICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRSdHBQYWNrZXRPdXRnb2luZz4o
cnRwX3BhY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2JlX2NsdXN0ZXJfaWQpOwogfQogCi1SdHBIZWFkZXJFeHRlbnNpb25NYXAg
RXZlbnRHZW5lcmF0b3I6Ok5ld1J0cEhlYWRlckV4dGVuc2lvbk1hcCgpIHsKK1J0cEhlYWRlckV4
dGVuc2lvbk1hcCBFdmVudEdlbmVyYXRvcjo6TmV3UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKAorICAg
IGJvb2wgY29uZmlndXJlX2FsbCkgewogICBSdHBIZWFkZXJFeHRlbnNpb25NYXAgZXh0ZW5zaW9u
X21hcDsKICAgc3RkOjp2ZWN0b3I8aW50PiBpZChSdHBFeHRlbnNpb246OmtPbmVCeXRlSGVhZGVy
RXh0ZW5zaW9uTWF4SWQgLQogICAgICAgICAgICAgICAgICAgICAgIFJ0cEV4dGVuc2lvbjo6a01p
bklkICsgMSk7CiAgIHN0ZDo6aW90YShpZC5iZWdpbigpLCBpZC5lbmQoKSwgUnRwRXh0ZW5zaW9u
OjprTWluSWQpOwogICBTaHVmZmxlSW5QbGFjZSgmcHJuZ18sIHJ0Yzo6QXJyYXlWaWV3PGludD4o
aWQpKTsKIAotICBpZiAocHJuZ18uUmFuZDxib29sPigpKSB7CisgIGlmIChjb25maWd1cmVfYWxs
IHx8IHBybmdfLlJhbmQ8Ym9vbD4oKSkgewogICAgIGV4dGVuc2lvbl9tYXAuUmVnaXN0ZXI8QXVk
aW9MZXZlbD4oaWRbMF0pOwogICB9Ci0gIGlmIChwcm5nXy5SYW5kPGJvb2w+KCkpIHsKKyAgaWYg
KGNvbmZpZ3VyZV9hbGwgfHwgcHJuZ18uUmFuZDxib29sPigpKSB7CiAgICAgZXh0ZW5zaW9uX21h
cC5SZWdpc3RlcjxUcmFuc21pc3Npb25PZmZzZXQ+KGlkWzFdKTsKICAgfQotICBpZiAocHJuZ18u
UmFuZDxib29sPigpKSB7CisgIGlmIChjb25maWd1cmVfYWxsIHx8IHBybmdfLlJhbmQ8Ym9vbD4o
KSkgewogICAgIGV4dGVuc2lvbl9tYXAuUmVnaXN0ZXI8QWJzb2x1dGVTZW5kVGltZT4oaWRbMl0p
OwogICB9Ci0gIGlmIChwcm5nXy5SYW5kPGJvb2w+KCkpIHsKKyAgaWYgKGNvbmZpZ3VyZV9hbGwg
fHwgcHJuZ18uUmFuZDxib29sPigpKSB7CiAgICAgZXh0ZW5zaW9uX21hcC5SZWdpc3RlcjxWaWRl
b09yaWVudGF0aW9uPihpZFszXSk7CiAgIH0KLSAgaWYgKHBybmdfLlJhbmQ8Ym9vbD4oKSkgewor
ICBpZiAoY29uZmlndXJlX2FsbCB8fCBwcm5nXy5SYW5kPGJvb2w+KCkpIHsKICAgICBleHRlbnNp
b25fbWFwLlJlZ2lzdGVyPFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyPihpZFs0XSk7CiAgIH0KIApA
QCAtNDY5LDM5NiArNTAxLDMxNyBAQCBFdmVudEdlbmVyYXRvcjo6TmV3VmlkZW9TZW5kU3RyZWFt
Q29uZmlnKAogICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRWaWRlb1NlbmRTdHJl
YW1Db25maWc+KHN0ZDo6bW92ZShjb25maWcpKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRBbHJT
dGF0ZUV2ZW50KGNvbnN0IFJ0Y0V2ZW50QWxyU3RhdGUmIG9yaWdpbmFsX2V2ZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvZ2dlZEFsclN0YXRlRXZlbnQmIGxvZ2dl
ZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRf
ZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9l
dmVudC5pbl9hbHJfICE9IGxvZ2dlZF9ldmVudC5pbl9hbHIpCi0gICAgcmV0dXJuIGZhbHNlOwot
ICByZXR1cm4gdHJ1ZTsKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkQWxyU3RhdGVF
dmVudCgKKyAgICBjb25zdCBSdGNFdmVudEFsclN0YXRlJiBvcmlnaW5hbF9ldmVudCwKKyAgICBj
b25zdCBMb2dnZWRBbHJTdGF0ZUV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNU
X0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVf
bXMoKSk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5pbl9hbHIoKSwgbG9nZ2VkX2V2ZW50
LmluX2Fscik7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQoCit2b2lk
IEV2ZW50VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZEF1ZGlvUGxheW91dEV2ZW50KAogICAgIGNvbnN0
IFJ0Y0V2ZW50QXVkaW9QbGF5b3V0JiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRB
dWRpb1BsYXlvdXRFdmVudCYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50
aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBm
YWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnNzcmNfICE9IGxvZ2dlZF9ldmVudC5zc3JjKQot
ICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7CisgICAgY29uc3QgTG9nZ2VkQXVkaW9Q
bGF5b3V0RXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxf
ZXZlbnQudGltZXN0YW1wX21zKCksIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKyAgRVhQ
RUNUX0VRKG9yaWdpbmFsX2V2ZW50LnNzcmMoKSwgbG9nZ2VkX2V2ZW50LnNzcmMpOwogfQogCi1i
b29sIFZlcmlmeUxvZ2dlZEF1ZGlvTmV0d29ya0FkYXB0YXRpb25FdmVudCgKK3ZvaWQgRXZlbnRW
ZXJpZmllcjo6VmVyaWZ5TG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50KAogICAgIGNv
bnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlvbiYgb3JpZ2luYWxfZXZlbnQsCi0gICAg
Y29uc3QgTG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50JiBsb2dnZWRfZXZlbnQpIHsK
LSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190
aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmIChvcmlnaW5hbF9ldmVudC5jb25m
aWdfLT5iaXRyYXRlX2JwcyAhPSBsb2dnZWRfZXZlbnQuY29uZmlnLmJpdHJhdGVfYnBzKQotICAg
IHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNvbmZpZ18tPmVuYWJsZV9kdHgg
IT0gbG9nZ2VkX2V2ZW50LmNvbmZpZy5lbmFibGVfZHR4KQotICAgIHJldHVybiBmYWxzZTsKLSAg
aWYgKG9yaWdpbmFsX2V2ZW50LmNvbmZpZ18tPmVuYWJsZV9mZWMgIT0gbG9nZ2VkX2V2ZW50LmNv
bmZpZy5lbmFibGVfZmVjKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50
LmNvbmZpZ18tPmZyYW1lX2xlbmd0aF9tcyAhPQotICAgICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy5m
cmFtZV9sZW5ndGhfbXMpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQu
Y29uZmlnXy0+bnVtX2NoYW5uZWxzICE9IGxvZ2dlZF9ldmVudC5jb25maWcubnVtX2NoYW5uZWxz
KQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNvbmZpZ18tPnVwbGlu
a19wYWNrZXRfbG9zc19mcmFjdGlvbiAhPQotICAgICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy51cGxp
bmtfcGFja2V0X2xvc3NfZnJhY3Rpb24pCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIHJldHVybiB0
cnVlOwotfQotCi1ib29sIFZlcmlmeUxvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUoCisgICAgY29u
c3QgTG9nZ2VkQXVkaW9OZXR3b3JrQWRhcHRhdGlvbkV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0
IHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZl
bnQubG9nX3RpbWVfbXMoKSk7CisKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNvbmZpZygp
LmJpdHJhdGVfYnBzLAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy5iaXRyYXRlX2Jw
cyk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5jb25maWcoKS5lbmFibGVfZHR4LCBsb2dn
ZWRfZXZlbnQuY29uZmlnLmVuYWJsZV9kdHgpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQu
Y29uZmlnKCkuZW5hYmxlX2ZlYywgbG9nZ2VkX2V2ZW50LmNvbmZpZy5lbmFibGVfZmVjKTsKKyAg
RVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmNvbmZpZygpLmZyYW1lX2xlbmd0aF9tcywKKyAgICAg
ICAgICAgIGxvZ2dlZF9ldmVudC5jb25maWcuZnJhbWVfbGVuZ3RoX21zKTsKKyAgRVhQRUNUX0VR
KG9yaWdpbmFsX2V2ZW50LmNvbmZpZygpLm51bV9jaGFubmVscywKKyAgICAgICAgICAgIGxvZ2dl
ZF9ldmVudC5jb25maWcubnVtX2NoYW5uZWxzKTsKKworICAvLyB1cGxpbmtfcGFja2V0X2xvc3Nf
ZnJhY3Rpb24KKyAgQVNTRVJUX0VRKG9yaWdpbmFsX2V2ZW50LmNvbmZpZygpLnVwbGlua19wYWNr
ZXRfbG9zc19mcmFjdGlvbi5oYXNfdmFsdWUoKSwKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVudC5j
b25maWcudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uLmhhc192YWx1ZSgpKTsKKyAgaWYgKG9y
aWdpbmFsX2V2ZW50LmNvbmZpZygpLnVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbi5oYXNfdmFs
dWUoKSkgeworICAgIGNvbnN0IGZsb2F0IG9yaWdpbmFsID0KKyAgICAgICAgb3JpZ2luYWxfZXZl
bnQuY29uZmlnKCkudXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uLnZhbHVlKCk7CisgICAgY29u
c3QgZmxvYXQgbG9nZ2VkID0KKyAgICAgICAgbG9nZ2VkX2V2ZW50LmNvbmZpZy51cGxpbmtfcGFj
a2V0X2xvc3NfZnJhY3Rpb24udmFsdWUoKTsKKyAgICBjb25zdCBmbG9hdCB1cGxpbmtfcGFja2V0
X2xvc3NfZnJhY3Rpb25fZGVsdGEgPSBzdGQ6OmFicyhvcmlnaW5hbCAtIGxvZ2dlZCk7CisgICAg
RVhQRUNUX0xFKHVwbGlua19wYWNrZXRfbG9zc19mcmFjdGlvbl9kZWx0YSwgMC4wMDAxZik7Cisg
IH0KK30KKwordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRCd2VEZWxheUJhc2VkVXBk
YXRlKAogICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCYgb3JpZ2luYWxfZXZl
bnQsCi0gICAgY29uc3QgTG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50KSB7
Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2df
dGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmJpdHJh
dGVfYnBzXyAhPSBsb2dnZWRfZXZlbnQuYml0cmF0ZV9icHMpCi0gICAgcmV0dXJuIGZhbHNlOwot
ICBpZiAob3JpZ2luYWxfZXZlbnQuZGV0ZWN0b3Jfc3RhdGVfICE9IGxvZ2dlZF9ldmVudC5kZXRl
Y3Rvcl9zdGF0ZSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVlOworICAgIGNvbnN0
IExvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUmIGxvZ2dlZF9ldmVudCkgY29uc3QgeworICBFWFBF
Q1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX21zKCksIGxvZ2dlZF9ldmVudC5sb2dfdGlt
ZV9tcygpKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmJpdHJhdGVfYnBzKCksIGxvZ2dl
ZF9ldmVudC5iaXRyYXRlX2Jwcyk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5kZXRlY3Rv
cl9zdGF0ZSgpLCBsb2dnZWRfZXZlbnQuZGV0ZWN0b3Jfc3RhdGUpOwogfQogCi1ib29sIFZlcmlm
eUxvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSgKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9n
Z2VkQndlTG9zc0Jhc2VkVXBkYXRlKAogICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlTG9zc0Jh
c2VkJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUm
IGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBs
b2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmln
aW5hbF9ldmVudC5iaXRyYXRlX2Jwc18gIT0gbG9nZ2VkX2V2ZW50LmJpdHJhdGVfYnBzKQotICAg
IHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmZyYWN0aW9uX2xvc3NfICE9IGxv
Z2dlZF9ldmVudC5mcmFjdGlvbl9sb3N0KQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdp
bmFsX2V2ZW50LnRvdGFsX3BhY2tldHNfICE9IGxvZ2dlZF9ldmVudC5leHBlY3RlZF9wYWNrZXRz
KQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmVyaWZ5TG9n
Z2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50KAorICAgIGNvbnN0IExvZ2dlZEJ3ZUxvc3NC
YXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9l
dmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOworICBFWFBF
Q1RfRVEob3JpZ2luYWxfZXZlbnQuYml0cmF0ZV9icHMoKSwgbG9nZ2VkX2V2ZW50LmJpdHJhdGVf
YnBzKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmZyYWN0aW9uX2xvc3MoKSwgbG9nZ2Vk
X2V2ZW50LmZyYWN0aW9uX2xvc3QpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudG90YWxf
cGFja2V0cygpLCBsb2dnZWRfZXZlbnQuZXhwZWN0ZWRfcGFja2V0cyk7Cit9CisKK3ZvaWQgRXZl
bnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50KAogICAg
IGNvbnN0IFJ0Y0V2ZW50UHJvYmVDbHVzdGVyQ3JlYXRlZCYgb3JpZ2luYWxfZXZlbnQsCi0gICAg
Y29uc3QgTG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50JiBsb2dnZWRfZXZlbnQpIHsK
LSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190
aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuaWRfICE9
IGxvZ2dlZF9ldmVudC5pZCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVu
dC5iaXRyYXRlX2Jwc18gIT0gbG9nZ2VkX2V2ZW50LmJpdHJhdGVfYnBzKQotICAgIHJldHVybiBm
YWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50Lm1pbl9wcm9iZXNfICE9IGxvZ2dlZF9ldmVudC5t
aW5fcGFja2V0cykKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5taW5f
Ynl0ZXNfICE9IGxvZ2dlZF9ldmVudC5taW5fYnl0ZXMpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0g
IHJldHVybiB0cnVlOwotfQotCi1ib29sIFZlcmlmeUxvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50
KAorICAgIGNvbnN0IExvZ2dlZEJ3ZVByb2JlQ2x1c3RlckNyZWF0ZWRFdmVudCYgbG9nZ2VkX2V2
ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwg
bG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQu
aWQoKSwgbG9nZ2VkX2V2ZW50LmlkKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmJpdHJh
dGVfYnBzKCksIGxvZ2dlZF9ldmVudC5iaXRyYXRlX2Jwcyk7CisgIEVYUEVDVF9FUShvcmlnaW5h
bF9ldmVudC5taW5fcHJvYmVzKCksIGxvZ2dlZF9ldmVudC5taW5fcGFja2V0cyk7CisgIEVYUEVD
VF9FUShvcmlnaW5hbF9ldmVudC5taW5fYnl0ZXMoKSwgbG9nZ2VkX2V2ZW50Lm1pbl9ieXRlcyk7
Cit9CisKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZl
bnQoCiAgICAgY29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1cmUmIG9yaWdpbmFsX2V2ZW50
LAotICAgIGNvbnN0IExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50JiBsb2dnZWRfZXZlbnQpIHsK
LSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190
aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuaWRfICE9
IGxvZ2dlZF9ldmVudC5pZCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVu
dC5mYWlsdXJlX3JlYXNvbl8gIT0gbG9nZ2VkX2V2ZW50LmZhaWx1cmVfcmVhc29uKQotICAgIHJl
dHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7CisgICAgY29uc3QgTG9nZ2VkQndlUHJvYmVGYWls
dXJlRXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZl
bnQudGltZXN0YW1wX21zKCksIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKyAgRVhQRUNU
X0VRKG9yaWdpbmFsX2V2ZW50LmlkKCksIGxvZ2dlZF9ldmVudC5pZCk7CisgIEVYUEVDVF9FUShv
cmlnaW5hbF9ldmVudC5mYWlsdXJlX3JlYXNvbigpLCBsb2dnZWRfZXZlbnQuZmFpbHVyZV9yZWFz
b24pOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50KAordm9pZCBF
dmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCgKICAgICBjb25z
dCBSdGNFdmVudFByb2JlUmVzdWx0U3VjY2VzcyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3Qg
TG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQmIGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2lu
YWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5pZF8gIT0gbG9nZ2VkX2V2ZW50
LmlkKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmJpdHJhdGVfYnBz
XyAhPSBsb2dnZWRfZXZlbnQuYml0cmF0ZV9icHMpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1
cm4gdHJ1ZTsKKyAgICBjb25zdCBMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCYgbG9nZ2VkX2V2
ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwg
bG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQu
aWQoKSwgbG9nZ2VkX2V2ZW50LmlkKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmJpdHJh
dGVfYnBzKCksIGxvZ2dlZF9ldmVudC5iaXRyYXRlX2Jwcyk7CiB9CiAKLWJvb2wgVmVyaWZ5TG9n
Z2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZygKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9n
Z2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZygKICAgICBjb25zdCBSdGNFdmVudEljZUNhbmRpZGF0
ZVBhaXJDb25maWcmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZEljZUNhbmRpZGF0
ZVBhaXJDb25maWcmIGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZlbnQudGltZXN0
YW1wX3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnR5cGVfICE9IGxvZ2dlZF9ldmVudC50eXBlKQotICAg
IHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2lkXyAh
PSBsb2dnZWRfZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQpCi0gICAgcmV0dXJuIGZhbHNlOwotICBp
ZiAob3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzY18ubG9jYWxfY2FuZGlkYXRlX3R5
cGUgIT0KLSAgICAgIGxvZ2dlZF9ldmVudC5sb2NhbF9jYW5kaWRhdGVfdHlwZSkKLSAgICByZXR1
cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjXy5sb2Nh
bF9yZWxheV9wcm90b2NvbCAhPQotICAgICAgbG9nZ2VkX2V2ZW50LmxvY2FsX3JlbGF5X3Byb3Rv
Y29sKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9w
YWlyX2Rlc2NfLmxvY2FsX25ldHdvcmtfdHlwZSAhPQotICAgICAgbG9nZ2VkX2V2ZW50LmxvY2Fs
X25ldHdvcmtfdHlwZSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5j
YW5kaWRhdGVfcGFpcl9kZXNjXy5sb2NhbF9hZGRyZXNzX2ZhbWlseSAhPQotICAgICAgbG9nZ2Vk
X2V2ZW50LmxvY2FsX2FkZHJlc3NfZmFtaWx5KQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9y
aWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2Rlc2NfLnJlbW90ZV9jYW5kaWRhdGVfdHlwZSAh
PQotICAgICAgbG9nZ2VkX2V2ZW50LnJlbW90ZV9jYW5kaWRhdGVfdHlwZSkKLSAgICByZXR1cm4g
ZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjXy5yZW1vdGVf
YWRkcmVzc19mYW1pbHkgIT0KLSAgICAgIGxvZ2dlZF9ldmVudC5yZW1vdGVfYWRkcmVzc19mYW1p
bHkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3Bh
aXJfZGVzY18uY2FuZGlkYXRlX3BhaXJfcHJvdG9jb2wgIT0KLSAgICAgIGxvZ2dlZF9ldmVudC5j
YW5kaWRhdGVfcGFpcl9wcm90b2NvbCkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50KAorICAgIGNv
bnN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWcmIGxvZ2dlZF9ldmVudCkgY29uc3Qgewor
ICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0YW1wX21zKCksIGxvZ2dlZF9ldmVudC5s
b2dfdGltZV9tcygpKTsKKworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudHlwZSgpLCBsb2dn
ZWRfZXZlbnQudHlwZSk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFp
cl9pZCgpLCBsb2dnZWRfZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQpOworICBFWFBFQ1RfRVEob3Jp
Z2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzYygpLmxvY2FsX2NhbmRpZGF0ZV90eXBlLAor
ICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LmxvY2FsX2NhbmRpZGF0ZV90eXBlKTsKKyAgRVhQRUNU
X0VRKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX2Rlc2MoKS5sb2NhbF9yZWxheV9wcm90
b2NvbCwKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVudC5sb2NhbF9yZWxheV9wcm90b2NvbCk7Cisg
IEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjKCkubG9jYWxfbmV0
d29ya190eXBlLAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LmxvY2FsX25ldHdvcmtfdHlwZSk7
CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9kZXNjKCkubG9jYWxf
YWRkcmVzc19mYW1pbHksCisgICAgICAgICAgICBsb2dnZWRfZXZlbnQubG9jYWxfYWRkcmVzc19m
YW1pbHkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3BhaXJfZGVzYygp
LnJlbW90ZV9jYW5kaWRhdGVfdHlwZSwKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVudC5yZW1vdGVf
Y2FuZGlkYXRlX3R5cGUpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY2FuZGlkYXRlX3Bh
aXJfZGVzYygpLnJlbW90ZV9hZGRyZXNzX2ZhbWlseSwKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVu
dC5yZW1vdGVfYWRkcmVzc19mYW1pbHkpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQuY2Fu
ZGlkYXRlX3BhaXJfZGVzYygpLmNhbmRpZGF0ZV9wYWlyX3Byb3RvY29sLAorICAgICAgICAgICAg
bG9nZ2VkX2V2ZW50LmNhbmRpZGF0ZV9wYWlyX3Byb3RvY29sKTsKK30KKwordm9pZCBFdmVudFZl
cmlmaWVyOjpWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQoCiAgICAgY29uc3QgUnRj
RXZlbnRJY2VDYW5kaWRhdGVQYWlyJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRJ
Y2VDYW5kaWRhdGVQYWlyRXZlbnQmIGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxfZXZl
bnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnR5cGVfICE9IGxvZ2dlZF9ldmVudC50
eXBlKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmNhbmRpZGF0ZV9w
YWlyX2lkXyAhPSBsb2dnZWRfZXZlbnQuY2FuZGlkYXRlX3BhaXJfaWQpCi0gICAgcmV0dXJuIGZh
bHNlOworICAgIGNvbnN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJFdmVudCYgbG9nZ2VkX2V2ZW50
KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9n
Z2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOwogCi0gIHJldHVybiB0cnVlOworICBFWFBFQ1RfRVEo
b3JpZ2luYWxfZXZlbnQudHlwZSgpLCBsb2dnZWRfZXZlbnQudHlwZSk7CisgIEVYUEVDVF9FUShv
cmlnaW5hbF9ldmVudC5jYW5kaWRhdGVfcGFpcl9pZCgpLCBsb2dnZWRfZXZlbnQuY2FuZGlkYXRl
X3BhaXJfaWQpOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZFJ0cEhlYWRlcihjb25zdCBSdHBQYWNr
ZXQmIG9yaWdpbmFsX2hlYWRlciwKK3ZvaWQgVmVyaWZ5TG9nZ2VkUnRwSGVhZGVyKGNvbnN0IFJ0
cFBhY2tldCYgb3JpZ2luYWxfaGVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUlRQSGVhZGVyJiBsb2dnZWRfaGVhZGVyKSB7CiAgIC8vIFN0YW5kYXJkIFJUUCBoZWFkZXIu
Ci0gIGlmIChvcmlnaW5hbF9oZWFkZXIuTWFya2VyKCkgIT0gbG9nZ2VkX2hlYWRlci5tYXJrZXJC
aXQpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAob3JpZ2luYWxfaGVhZGVyLlBheWxvYWRUeXBl
KCkgIT0gbG9nZ2VkX2hlYWRlci5wYXlsb2FkVHlwZSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlm
IChvcmlnaW5hbF9oZWFkZXIuU2VxdWVuY2VOdW1iZXIoKSAhPSBsb2dnZWRfaGVhZGVyLnNlcXVl
bmNlTnVtYmVyKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5UaW1l
c3RhbXAoKSAhPSBsb2dnZWRfaGVhZGVyLnRpbWVzdGFtcCkKLSAgICByZXR1cm4gZmFsc2U7Ci0g
IGlmIChvcmlnaW5hbF9oZWFkZXIuU3NyYygpICE9IGxvZ2dlZF9oZWFkZXIuc3NyYykKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0gIGlmIChvcmlnaW5hbF9oZWFkZXIuQ3NyY3MoKS5zaXplKCkgIT0gbG9n
Z2VkX2hlYWRlci5udW1DU1JDcykKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbG9nZ2VkX2hlYWRlci5udW1DU1JDczsgaSsrKSB7Ci0gICAgaWYgKG9yaWdpbmFs
X2hlYWRlci5Dc3JjcygpW2ldICE9IGxvZ2dlZF9oZWFkZXIuYXJyT2ZDU1JDc1tpXSkKLSAgICAg
IHJldHVybiBmYWxzZTsKLSAgfQorICBFWFBFQ1RfRVEob3JpZ2luYWxfaGVhZGVyLk1hcmtlcigp
LCBsb2dnZWRfaGVhZGVyLm1hcmtlckJpdCk7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9oZWFkZXIu
UGF5bG9hZFR5cGUoKSwgbG9nZ2VkX2hlYWRlci5wYXlsb2FkVHlwZSk7CisgIEVYUEVDVF9FUShv
cmlnaW5hbF9oZWFkZXIuU2VxdWVuY2VOdW1iZXIoKSwgbG9nZ2VkX2hlYWRlci5zZXF1ZW5jZU51
bWJlcik7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9oZWFkZXIuVGltZXN0YW1wKCksIGxvZ2dlZF9o
ZWFkZXIudGltZXN0YW1wKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2hlYWRlci5Tc3JjKCksIGxv
Z2dlZF9oZWFkZXIuc3NyYyk7CiAKLSAgaWYgKG9yaWdpbmFsX2hlYWRlci5oZWFkZXJzX3NpemUo
KSAhPSBsb2dnZWRfaGVhZGVyLmhlYWRlckxlbmd0aCkKLSAgICByZXR1cm4gZmFsc2U7CisgIEVY
UEVDVF9FUShvcmlnaW5hbF9oZWFkZXIuaGVhZGVyc19zaXplKCksIGxvZ2dlZF9oZWFkZXIuaGVh
ZGVyTGVuZ3RoKTsKIAogICAvLyBUcmFuc21pc3Npb25PZmZzZXQgaGVhZGVyIGV4dGVuc2lvbi4K
LSAgaWYgKG9yaWdpbmFsX2hlYWRlci5IYXNFeHRlbnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0Pigp
ICE9Ci0gICAgICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNUcmFuc21pc3Npb25UaW1lT2Zm
c2V0KQotICAgIHJldHVybiBmYWxzZTsKKyAgQVNTRVJUX0VRKG9yaWdpbmFsX2hlYWRlci5IYXNF
eHRlbnNpb248VHJhbnNtaXNzaW9uT2Zmc2V0PigpLAorICAgICAgICAgICAgbG9nZ2VkX2hlYWRl
ci5leHRlbnNpb24uaGFzVHJhbnNtaXNzaW9uVGltZU9mZnNldCk7CiAgIGlmIChsb2dnZWRfaGVh
ZGVyLmV4dGVuc2lvbi5oYXNUcmFuc21pc3Npb25UaW1lT2Zmc2V0KSB7CiAgICAgaW50MzJfdCBv
ZmZzZXQ7Ci0gICAgb3JpZ2luYWxfaGVhZGVyLkdldEV4dGVuc2lvbjxUcmFuc21pc3Npb25PZmZz
ZXQ+KCZvZmZzZXQpOwotICAgIGlmIChvZmZzZXQgIT0gbG9nZ2VkX2hlYWRlci5leHRlbnNpb24u
dHJhbnNtaXNzaW9uVGltZU9mZnNldCkKLSAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlRf
VFJVRShvcmlnaW5hbF9oZWFkZXIuR2V0RXh0ZW5zaW9uPFRyYW5zbWlzc2lvbk9mZnNldD4oJm9m
ZnNldCkpOworICAgIEVYUEVDVF9FUShvZmZzZXQsIGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLnRy
YW5zbWlzc2lvblRpbWVPZmZzZXQpOwogICB9CiAKICAgLy8gQWJzb2x1dGVTZW5kVGltZSBoZWFk
ZXIgZXh0ZW5zaW9uLgotICBpZiAob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxBYnNvbHV0
ZVNlbmRUaW1lPigpICE9Ci0gICAgICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0
ZVNlbmRUaW1lKQotICAgIHJldHVybiBmYWxzZTsKKyAgQVNTRVJUX0VRKG9yaWdpbmFsX2hlYWRl
ci5IYXNFeHRlbnNpb248QWJzb2x1dGVTZW5kVGltZT4oKSwKKyAgICAgICAgICAgIGxvZ2dlZF9o
ZWFkZXIuZXh0ZW5zaW9uLmhhc0Fic29sdXRlU2VuZFRpbWUpOwogICBpZiAobG9nZ2VkX2hlYWRl
ci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5kVGltZSkgewogICAgIHVpbnQzMl90IHNlbmR0aW1l
OwotICAgIG9yaWdpbmFsX2hlYWRlci5HZXRFeHRlbnNpb248QWJzb2x1dGVTZW5kVGltZT4oJnNl
bmR0aW1lKTsKLSAgICBpZiAoc2VuZHRpbWUgIT0gbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uYWJz
b2x1dGVTZW5kVGltZSkKLSAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlRfVFJVRShvcmln
aW5hbF9oZWFkZXIuR2V0RXh0ZW5zaW9uPEFic29sdXRlU2VuZFRpbWU+KCZzZW5kdGltZSkpOwor
ICAgIEVYUEVDVF9FUShzZW5kdGltZSwgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uYWJzb2x1dGVT
ZW5kVGltZSk7CiAgIH0KIAogICAvLyBUcmFuc3BvcnRTZXF1ZW5jZU51bWJlciBoZWFkZXIgZXh0
ZW5zaW9uLgotICBpZiAob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxUcmFuc3BvcnRTZXF1
ZW5jZU51bWJlcj4oKSAhPQotICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzVHJhbnNw
b3J0U2VxdWVuY2VOdW1iZXIpCi0gICAgcmV0dXJuIGZhbHNlOworICBBU1NFUlRfRVEob3JpZ2lu
YWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcj4oKSwKKyAgICAg
ICAgICAgIGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVy
KTsKICAgaWYgKGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLmhhc1RyYW5zcG9ydFNlcXVlbmNlTnVt
YmVyKSB7CiAgICAgdWludDE2X3Qgc2VxbnVtOwotICAgIG9yaWdpbmFsX2hlYWRlci5HZXRFeHRl
bnNpb248VHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI+KCZzZXFudW0pOwotICAgIGlmIChzZXFudW0g
IT0gbG9nZ2VkX2hlYWRlci5leHRlbnNpb24udHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpCi0gICAg
ICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUX1RSVUUob3JpZ2luYWxfaGVhZGVyLkdldEV4dGVu
c2lvbjxUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcj4oJnNlcW51bSkpOworICAgIEVYUEVDVF9FUShz
ZXFudW0sIGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKTsK
ICAgfQogCiAgIC8vIEF1ZGlvTGV2ZWwgaGVhZGVyIGV4dGVuc2lvbi4KLSAgaWYgKG9yaWdpbmFs
X2hlYWRlci5IYXNFeHRlbnNpb248QXVkaW9MZXZlbD4oKSAhPQotICAgICAgbG9nZ2VkX2hlYWRl
ci5leHRlbnNpb24uaGFzQXVkaW9MZXZlbCkKLSAgICByZXR1cm4gZmFsc2U7CisgIEFTU0VSVF9F
UShvcmlnaW5hbF9oZWFkZXIuSGFzRXh0ZW5zaW9uPEF1ZGlvTGV2ZWw+KCksCisgICAgICAgICAg
ICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNBdWRpb0xldmVsKTsKICAgaWYgKGxvZ2dlZF9o
ZWFkZXIuZXh0ZW5zaW9uLmhhc0F1ZGlvTGV2ZWwpIHsKICAgICBib29sIHZvaWNlX2FjdGl2aXR5
OwogICAgIHVpbnQ4X3QgYXVkaW9fbGV2ZWw7Ci0gICAgb3JpZ2luYWxfaGVhZGVyLkdldEV4dGVu
c2lvbjxBdWRpb0xldmVsPigmdm9pY2VfYWN0aXZpdHksICZhdWRpb19sZXZlbCk7Ci0gICAgaWYg
KHZvaWNlX2FjdGl2aXR5ICE9IGxvZ2dlZF9oZWFkZXIuZXh0ZW5zaW9uLnZvaWNlQWN0aXZpdHkp
Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGF1ZGlvX2xldmVsICE9IGxvZ2dlZF9oZWFk
ZXIuZXh0ZW5zaW9uLmF1ZGlvTGV2ZWwpCi0gICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJU
X1RSVUUob3JpZ2luYWxfaGVhZGVyLkdldEV4dGVuc2lvbjxBdWRpb0xldmVsPigmdm9pY2VfYWN0
aXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmYXVkaW9fbGV2ZWwpKTsKKyAgICBFWFBFQ1RfRVEodm9pY2VfYWN0aXZpdHksIGxv
Z2dlZF9oZWFkZXIuZXh0ZW5zaW9uLnZvaWNlQWN0aXZpdHkpOworICAgIEVYUEVDVF9FUShhdWRp
b19sZXZlbCwgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uYXVkaW9MZXZlbCk7CiAgIH0KIAogICAv
LyBWaWRlb09yaWVudGF0aW9uIGhlYWRlciBleHRlbnNpb24uCi0gIGlmIChvcmlnaW5hbF9oZWFk
ZXIuSGFzRXh0ZW5zaW9uPFZpZGVvT3JpZW50YXRpb24+KCkgIT0KLSAgICAgIGxvZ2dlZF9oZWFk
ZXIuZXh0ZW5zaW9uLmhhc1ZpZGVvUm90YXRpb24pCi0gICAgcmV0dXJuIGZhbHNlOworICBBU1NF
UlRfRVEob3JpZ2luYWxfaGVhZGVyLkhhc0V4dGVuc2lvbjxWaWRlb09yaWVudGF0aW9uPigpLAor
ICAgICAgICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24uaGFzVmlkZW9Sb3RhdGlvbik7CiAg
IGlmIChsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi5oYXNWaWRlb1JvdGF0aW9uKSB7CiAgICAgdWlu
dDhfdCByb3RhdGlvbjsKLSAgICBvcmlnaW5hbF9oZWFkZXIuR2V0RXh0ZW5zaW9uPFZpZGVvT3Jp
ZW50YXRpb24+KCZyb3RhdGlvbik7Ci0gICAgaWYgKENvbnZlcnRDVk9CeXRlVG9WaWRlb1JvdGF0
aW9uKHJvdGF0aW9uKSAhPQotICAgICAgICBsb2dnZWRfaGVhZGVyLmV4dGVuc2lvbi52aWRlb1Jv
dGF0aW9uKQotICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVF9UUlVFKG9yaWdpbmFsX2hl
YWRlci5HZXRFeHRlbnNpb248VmlkZW9PcmllbnRhdGlvbj4oJnJvdGF0aW9uKSk7CisgICAgRVhQ
RUNUX0VRKENvbnZlcnRDVk9CeXRlVG9WaWRlb1JvdGF0aW9uKHJvdGF0aW9uKSwKKyAgICAgICAg
ICAgICAgbG9nZ2VkX2hlYWRlci5leHRlbnNpb24udmlkZW9Sb3RhdGlvbik7CiAgIH0KLQotICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRSdHBQYWNrZXRJbmNvbWluZygKK3Zv
aWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcoCiAgICAgY29u
c3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3Qg
TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2luYWxf
ZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKG9yaWdpbmFsX2V2ZW50LmhlYWRlcl8uaGVhZGVyc19zaXpl
KCkgIT0gbG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXJfbGVuZ3RoKQotICAgIHJldHVybiBmYWxzZTsK
LQotICBpZiAob3JpZ2luYWxfZXZlbnQucGFja2V0X2xlbmd0aF8gIT0gbG9nZ2VkX2V2ZW50LnJ0
cC50b3RhbF9sZW5ndGgpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmICgob3JpZ2luYWxfZXZl
bnQuaGVhZGVyXy5kYXRhKClbMF0gJiAweDIwKSAhPSAwICYmICAvLyBoYXMgcGFkZGluZwotICAg
ICAgb3JpZ2luYWxfZXZlbnQucGFja2V0X2xlbmd0aF8gLSBvcmlnaW5hbF9ldmVudC5oZWFkZXJf
LmhlYWRlcnNfc2l6ZSgpICE9Ci0gICAgICAgICAgbG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXIucGFk
ZGluZ0xlbmd0aCkgewotICAgIC8vIEN1cnJlbnRseSwgUlRDIGV2ZW50bG9nIGVuY29kZXItcGFy
c2VyIGNhbiBvbmx5IG1haW50YWluIHBhZGRpbmcgbGVuZ3RoCi0gICAgLy8gaWYgcGFja2V0IGlz
IGZ1bGwgcGFkZGluZy4KLSAgICAvLyBUT0RPKHdlYnJ0Yzo5NzMwKTogQ2hhbmdlIHRoZSBjb25k
aXRpb24gdG8gc29tZXRoaW5nIGxpa2UKLSAgICAvLyBvcmlnaW5hbF9ldmVudC5wYWRkaW5nX2xl
bmd0aF8gIT0gbG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXIucGFkZGluZ0xlbmd0aC4KLSAgICByZXR1
cm4gZmFsc2U7Ci0gIH0KKyAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyYgbG9nZ2Vk
X2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMo
KSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOworCisgIEVYUEVDVF9FUShvcmlnaW5hbF9l
dmVudC5oZWFkZXIoKS5oZWFkZXJzX3NpemUoKSwKKyAgICAgICAgICAgIGxvZ2dlZF9ldmVudC5y
dHAuaGVhZGVyX2xlbmd0aCk7CisKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnBhY2tldF9s
ZW5ndGgoKSwgbG9nZ2VkX2V2ZW50LnJ0cC50b3RhbF9sZW5ndGgpOwogCi0gIGlmICghVmVyaWZ5
TG9nZ2VkUnRwSGVhZGVyKG9yaWdpbmFsX2V2ZW50LmhlYWRlcl8sIGxvZ2dlZF9ldmVudC5ydHAu
aGVhZGVyKSkKLSAgICByZXR1cm4gZmFsc2U7CisgIC8vIEN1cnJlbnRseSwgUlRDIGV2ZW50bG9n
IGVuY29kZXItcGFyc2VyIGNhbiBvbmx5IG1haW50YWluIHBhZGRpbmcgbGVuZ3RoCisgIC8vIGlm
IHBhY2tldCBpcyBmdWxsIHBhZGRpbmcuCisgIEVYUEVDVF9FUShvcmlnaW5hbF9ldmVudC5wYWRk
aW5nX2xlbmd0aCgpLAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXIucGFkZGlu
Z0xlbmd0aCk7CiAKLSAgcmV0dXJuIHRydWU7CisgIFZlcmlmeUxvZ2dlZFJ0cEhlYWRlcihvcmln
aW5hbF9ldmVudC5oZWFkZXIoKSwgbG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXIpOwogfQogCi1ib29s
IFZlcmlmeUxvZ2dlZFJ0cFBhY2tldE91dGdvaW5nKAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJp
ZnlMb2dnZWRSdHBQYWNrZXRPdXRnb2luZygKICAgICBjb25zdCBSdGNFdmVudFJ0cFBhY2tldE91
dGdvaW5nJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRSdHBQYWNrZXRPdXRnb2lu
ZyYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9
IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAo
b3JpZ2luYWxfZXZlbnQuaGVhZGVyXy5oZWFkZXJzX3NpemUoKSAhPSBsb2dnZWRfZXZlbnQucnRw
LmhlYWRlcl9sZW5ndGgpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmIChvcmlnaW5hbF9ldmVu
dC5wYWNrZXRfbGVuZ3RoXyAhPSBsb2dnZWRfZXZlbnQucnRwLnRvdGFsX2xlbmd0aCkKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKChvcmlnaW5hbF9ldmVudC5oZWFkZXJfLmRhdGEoKVswXSAm
IDB4MjApICE9IDAgJiYgIC8vIGhhcyBwYWRkaW5nCi0gICAgICBvcmlnaW5hbF9ldmVudC5wYWNr
ZXRfbGVuZ3RoXyAtIG9yaWdpbmFsX2V2ZW50LmhlYWRlcl8uaGVhZGVyc19zaXplKCkgIT0KLSAg
ICAgICAgICBsb2dnZWRfZXZlbnQucnRwLmhlYWRlci5wYWRkaW5nTGVuZ3RoKSB7Ci0gICAgLy8g
Q3VycmVudGx5LCBSVEMgZXZlbnRsb2cgZW5jb2Rlci1wYXJzZXIgY2FuIG9ubHkgbWFpbnRhaW4g
cGFkZGluZyBsZW5ndGgKLSAgICAvLyBpZiBwYWNrZXQgaXMgZnVsbCBwYWRkaW5nLgotICAgIC8v
IFRPRE8od2VicnRjOjk3MzApOiBDaGFuZ2UgdGhlIGNvbmRpdGlvbiB0byBzb21ldGhpbmcgbGlr
ZQotICAgIC8vIG9yaWdpbmFsX2V2ZW50LnBhZGRpbmdfbGVuZ3RoXyAhPSBsb2dnZWRfZXZlbnQu
cnRwLmhlYWRlci5wYWRkaW5nTGVuZ3RoLgotICAgIHJldHVybiBmYWxzZTsKLSAgfQorICAgIGNv
bnN0IExvZ2dlZFJ0cFBhY2tldE91dGdvaW5nJiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQ
RUNUX0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3Rp
bWVfbXMoKSk7CisKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LmhlYWRlcigpLmhlYWRlcnNf
c2l6ZSgpLAorICAgICAgICAgICAgbG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXJfbGVuZ3RoKTsKKwor
ICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQucGFja2V0X2xlbmd0aCgpLCBsb2dnZWRfZXZlbnQu
cnRwLnRvdGFsX2xlbmd0aCk7CisKKyAgLy8gQ3VycmVudGx5LCBSVEMgZXZlbnRsb2cgZW5jb2Rl
ci1wYXJzZXIgY2FuIG9ubHkgbWFpbnRhaW4gcGFkZGluZyBsZW5ndGgKKyAgLy8gaWYgcGFja2V0
IGlzIGZ1bGwgcGFkZGluZy4KKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2V2ZW50LnBhZGRpbmdfbGVu
Z3RoKCksCisgICAgICAgICAgICBsb2dnZWRfZXZlbnQucnRwLmhlYWRlci5wYWRkaW5nTGVuZ3Ro
KTsKIAogICAvLyBUT0RPKHRlcmVsaXVzKTogUHJvYmUgY2x1c3RlciBJRCBpc24ndCBwYXJzZWQs
IHVzZWQgb3IgdGVzdGVkLiBVbmxlc3MKICAgLy8gc29tZW9uZSBoYXMgYSBzdHJvbmcgcmVhc29u
IHRvIGtlZXAgaXQsIGl0J2xsIGJlIHJlbW92ZWQuCiAKLSAgaWYgKCFWZXJpZnlMb2dnZWRSdHBI
ZWFkZXIob3JpZ2luYWxfZXZlbnQuaGVhZGVyXywgbG9nZ2VkX2V2ZW50LnJ0cC5oZWFkZXIpKQot
ICAgIHJldHVybiBmYWxzZTsKLQotICByZXR1cm4gdHJ1ZTsKKyAgVmVyaWZ5TG9nZ2VkUnRwSGVh
ZGVyKG9yaWdpbmFsX2V2ZW50LmhlYWRlcigpLCBsb2dnZWRfZXZlbnQucnRwLmhlYWRlcik7CiB9
CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkUnRjcFBhY2tldEluY29taW5nKAordm9pZCBFdmVudFZlcmlm
aWVyOjpWZXJpZnlMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcoCiAgICAgY29uc3QgUnRjRXZlbnRS
dGNwUGFja2V0SW5jb21pbmcmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZFJ0Y3BQ
YWNrZXRJbmNvbWluZyYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1l
c3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxz
ZTsKLQotICBpZiAob3JpZ2luYWxfZXZlbnQucGFja2V0Xy5zaXplKCkgIT0gbG9nZ2VkX2V2ZW50
LnJ0Y3AucmF3X2RhdGEuc2l6ZSgpKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKG1lbWNtcChv
cmlnaW5hbF9ldmVudC5wYWNrZXRfLmRhdGEoKSwgbG9nZ2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEu
ZGF0YSgpLAotICAgICAgICAgICAgIG9yaWdpbmFsX2V2ZW50LnBhY2tldF8uc2l6ZSgpKSAhPSAw
KSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHJldHVybiB0cnVlOworICAgIGNvbnN0IExv
Z2dlZFJ0Y3BQYWNrZXRJbmNvbWluZyYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9F
UShvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21z
KCkpOworCisgIEFTU0VSVF9FUShvcmlnaW5hbF9ldmVudC5wYWNrZXQoKS5zaXplKCksIGxvZ2dl
ZF9ldmVudC5ydGNwLnJhd19kYXRhLnNpemUoKSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIG1lbWNt
cChvcmlnaW5hbF9ldmVudC5wYWNrZXQoKS5kYXRhKCksIGxvZ2dlZF9ldmVudC5ydGNwLnJhd19k
YXRhLmRhdGEoKSwKKyAgICAgICAgICAgICBvcmlnaW5hbF9ldmVudC5wYWNrZXQoKS5zaXplKCkp
LAorICAgICAgMCk7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkUnRjcFBhY2tldE91dGdvaW5nKAor
dm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmcoCiAgICAg
Y29uc3QgUnRjRXZlbnRSdGNwUGFja2V0T3V0Z29pbmcmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNv
bnN0IExvZ2dlZFJ0Y3BQYWNrZXRPdXRnb2luZyYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmln
aW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQot
ICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAob3JpZ2luYWxfZXZlbnQucGFja2V0Xy5zaXplKCkg
IT0gbG9nZ2VkX2V2ZW50LnJ0Y3AucmF3X2RhdGEuc2l6ZSgpKQotICAgIHJldHVybiBmYWxzZTsK
LSAgaWYgKG1lbWNtcChvcmlnaW5hbF9ldmVudC5wYWNrZXRfLmRhdGEoKSwgbG9nZ2VkX2V2ZW50
LnJ0Y3AucmF3X2RhdGEuZGF0YSgpLAotICAgICAgICAgICAgIG9yaWdpbmFsX2V2ZW50LnBhY2tl
dF8uc2l6ZSgpKSAhPSAwKSB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IExvZ2dlZFJ0
Y3BQYWNrZXRPdXRnb2luZyYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmln
aW5hbF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOwor
CisgIEFTU0VSVF9FUShvcmlnaW5hbF9ldmVudC5wYWNrZXQoKS5zaXplKCksIGxvZ2dlZF9ldmVu
dC5ydGNwLnJhd19kYXRhLnNpemUoKSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIG1lbWNtcChvcmln
aW5hbF9ldmVudC5wYWNrZXQoKS5kYXRhKCksIGxvZ2dlZF9ldmVudC5ydGNwLnJhd19kYXRhLmRh
dGEoKSwKKyAgICAgICAgICAgICBvcmlnaW5hbF9ldmVudC5wYWNrZXQoKS5zaXplKCkpLAorICAg
ICAgMCk7Cit9CisKK3ZvaWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkU3RhcnRFdmVudCgK
KyAgICBpbnQ2NF90IHN0YXJ0X3RpbWVfdXMsCisgICAgaW50NjRfdCB1dGNfc3RhcnRfdGltZV91
cywKKyAgICBjb25zdCBMb2dnZWRTdGFydEV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAg
RVhQRUNUX0VRKHN0YXJ0X3RpbWVfdXMgLyAxMDAwLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVfbXMo
KSk7CisgIGlmIChlbmNvZGluZ190eXBlXyA9PSBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpO
ZXdGb3JtYXQpIHsKKyAgICBFWFBFQ1RfRVEodXRjX3N0YXJ0X3RpbWVfdXMgLyAxMDAwLCBsb2dn
ZWRfZXZlbnQudXRjX3N0YXJ0X3RpbWVfbXMpOwogICB9Ci0gIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZlcmlmeUxvZ2dlZFN0YXJ0RXZlbnQoaW50NjRfdCBzdGFydF90aW1lX3VzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvZ2dlZFN0YXJ0RXZlbnQmIGxvZ2dlZF9ldmVu
dCkgewotICBpZiAoc3RhcnRfdGltZV91cyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkK
LSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVlOwordm9pZCBFdmVudFZlcmlmaWVyOjpW
ZXJpZnlMb2dnZWRTdG9wRXZlbnQoCisgICAgaW50NjRfdCBzdG9wX3RpbWVfdXMsCisgICAgY29u
c3QgTG9nZ2VkU3RvcEV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNUX0VRKHN0
b3BfdGltZV91cyAvIDEwMDAsIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKIH0KIAotYm9v
bCBWZXJpZnlMb2dnZWRTdG9wRXZlbnQoaW50NjRfdCBzdG9wX3RpbWVfdXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRTdG9wRXZlbnQmIGxvZ2dlZF9ldmVudCkgewot
ICBpZiAoc3RvcF90aW1lX3VzICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJl
dHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Cit2b2lkIFZlcmlmeUxvZ2dlZFN0cmVhbUNvbmZp
Zyhjb25zdCBydGNsb2c6OlN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfY29uZmlnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjbG9nOjpTdHJlYW1Db25maWcmIGxvZ2dlZF9j
b25maWcpIHsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2NvbmZpZy5sb2NhbF9zc3JjLCBsb2dnZWRf
Y29uZmlnLmxvY2FsX3NzcmMpOworICBFWFBFQ1RfRVEob3JpZ2luYWxfY29uZmlnLnJlbW90ZV9z
c3JjLCBsb2dnZWRfY29uZmlnLnJlbW90ZV9zc3JjKTsKKyAgRVhQRUNUX0VRKG9yaWdpbmFsX2Nv
bmZpZy5ydHhfc3NyYywgbG9nZ2VkX2NvbmZpZy5ydHhfc3NyYyk7CisKKyAgRVhQRUNUX0VRKG9y
aWdpbmFsX2NvbmZpZy5ydHBfZXh0ZW5zaW9ucy5zaXplKCksCisgICAgICAgICAgICBsb2dnZWRf
Y29uZmlnLnJ0cF9leHRlbnNpb25zLnNpemUoKSk7CisgIHNpemVfdCByZWNvZ25pemVkX2V4dGVu
c2lvbnMgPSAwOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtNYXhOdW1FeHRlbnNpb25zOyBp
KyspIHsKKyAgICBhdXRvIG9yaWdpbmFsX2lkID0KKyAgICAgICAgR2V0RXh0ZW5zaW9uSWQob3Jp
Z2luYWxfY29uZmlnLnJ0cF9leHRlbnNpb25zLCBrRXh0ZW5zaW9uc1tpXS5uYW1lKTsKKyAgICBh
dXRvIGxvZ2dlZF9pZCA9CisgICAgICAgIEdldEV4dGVuc2lvbklkKGxvZ2dlZF9jb25maWcucnRw
X2V4dGVuc2lvbnMsIGtFeHRlbnNpb25zW2ldLm5hbWUpOworICAgIEVYUEVDVF9FUShvcmlnaW5h
bF9pZCwgbG9nZ2VkX2lkKQorICAgICAgICA8PCAiSURzIGZvciAiIDw8IGtFeHRlbnNpb25zW2ld
Lm5hbWUgPDwgIiBkb24ndCBtYXRjaC4gT3JpZ2luYWwgSUQgIgorICAgICAgICA8PCBvcmlnaW5h
bF9pZC52YWx1ZV9vcigtMSkgPDwgIi4gUGFyc2VkIElEICIgPDwgbG9nZ2VkX2lkLnZhbHVlX29y
KC0xKQorICAgICAgICA8PCAiLiI7CisgICAgaWYgKG9yaWdpbmFsX2lkKSB7CisgICAgICByZWNv
Z25pemVkX2V4dGVuc2lvbnMrKzsKKyAgICB9CisgIH0KKyAgRVhQRUNUX0VRKHJlY29nbml6ZWRf
ZXh0ZW5zaW9ucywgb3JpZ2luYWxfY29uZmlnLnJ0cF9leHRlbnNpb25zLnNpemUoKSk7CiB9CiAK
LWJvb2wgVmVyaWZ5TG9nZ2VkQXVkaW9SZWN2Q29uZmlnKAordm9pZCBFdmVudFZlcmlmaWVyOjpW
ZXJpZnlMb2dnZWRBdWRpb1JlY3ZDb25maWcoCiAgICAgY29uc3QgUnRjRXZlbnRBdWRpb1JlY2Vp
dmVTdHJlYW1Db25maWcmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZEF1ZGlvUmVj
dkNvbmZpZyYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlmIChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBf
dXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91cygpKQotICAgIHJldHVybiBmYWxzZTsKLSAg
aWYgKCpvcmlnaW5hbF9ldmVudC5jb25maWdfICE9IGxvZ2dlZF9ldmVudC5jb25maWcpCi0gICAg
cmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBMb2dnZWRBdWRpb1JlY3ZD
b25maWcmIGxvZ2dlZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQu
dGltZXN0YW1wX21zKCksIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKKyAgVmVyaWZ5TG9n
Z2VkU3RyZWFtQ29uZmlnKG9yaWdpbmFsX2V2ZW50LmNvbmZpZygpLCBsb2dnZWRfZXZlbnQuY29u
ZmlnKTsKIH0KIAotYm9vbCBWZXJpZnlMb2dnZWRBdWRpb1NlbmRDb25maWcoCit2b2lkIEV2ZW50
VmVyaWZpZXI6OlZlcmlmeUxvZ2dlZEF1ZGlvU2VuZENvbmZpZygKICAgICBjb25zdCBSdGNFdmVu
dEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2Vk
QXVkaW9TZW5kQ29uZmlnJiBsb2dnZWRfZXZlbnQpIHsKLSAgaWYgKG9yaWdpbmFsX2V2ZW50LnRp
bWVzdGFtcF91c18gIT0gbG9nZ2VkX2V2ZW50LmxvZ190aW1lX3VzKCkpCi0gICAgcmV0dXJuIGZh
bHNlOwotICBpZiAoKm9yaWdpbmFsX2V2ZW50LmNvbmZpZ18gIT0gbG9nZ2VkX2V2ZW50LmNvbmZp
ZykKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVlOworICAgIGNvbnN0IExvZ2dlZEF1
ZGlvU2VuZENvbmZpZyYgbG9nZ2VkX2V2ZW50KSBjb25zdCB7CisgIEVYUEVDVF9FUShvcmlnaW5h
bF9ldmVudC50aW1lc3RhbXBfbXMoKSwgbG9nZ2VkX2V2ZW50LmxvZ190aW1lX21zKCkpOworICBW
ZXJpZnlMb2dnZWRTdHJlYW1Db25maWcob3JpZ2luYWxfZXZlbnQuY29uZmlnKCksIGxvZ2dlZF9l
dmVudC5jb25maWcpOwogfQogCi1ib29sIFZlcmlmeUxvZ2dlZFZpZGVvUmVjdkNvbmZpZygKK3Zv
aWQgRXZlbnRWZXJpZmllcjo6VmVyaWZ5TG9nZ2VkVmlkZW9SZWN2Q29uZmlnKAogICAgIGNvbnN0
IFJ0Y0V2ZW50VmlkZW9SZWNlaXZlU3RyZWFtQ29uZmlnJiBvcmlnaW5hbF9ldmVudCwKLSAgICBj
b25zdCBMb2dnZWRWaWRlb1JlY3ZDb25maWcmIGxvZ2dlZF9ldmVudCkgewotICBpZiAob3JpZ2lu
YWxfZXZlbnQudGltZXN0YW1wX3VzXyAhPSBsb2dnZWRfZXZlbnQubG9nX3RpbWVfdXMoKSkKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIGlmICgqb3JpZ2luYWxfZXZlbnQuY29uZmlnXyAhPSBsb2dnZWRf
ZXZlbnQuY29uZmlnKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7CisgICAgY29u
c3QgTG9nZ2VkVmlkZW9SZWN2Q29uZmlnJiBsb2dnZWRfZXZlbnQpIGNvbnN0IHsKKyAgRVhQRUNU
X0VRKG9yaWdpbmFsX2V2ZW50LnRpbWVzdGFtcF9tcygpLCBsb2dnZWRfZXZlbnQubG9nX3RpbWVf
bXMoKSk7CisgIFZlcmlmeUxvZ2dlZFN0cmVhbUNvbmZpZyhvcmlnaW5hbF9ldmVudC5jb25maWco
KSwgbG9nZ2VkX2V2ZW50LmNvbmZpZyk7CiB9CiAKLWJvb2wgVmVyaWZ5TG9nZ2VkVmlkZW9TZW5k
Q29uZmlnKAordm9pZCBFdmVudFZlcmlmaWVyOjpWZXJpZnlMb2dnZWRWaWRlb1NlbmRDb25maWco
CiAgICAgY29uc3QgUnRjRXZlbnRWaWRlb1NlbmRTdHJlYW1Db25maWcmIG9yaWdpbmFsX2V2ZW50
LAotICAgIGNvbnN0IExvZ2dlZFZpZGVvU2VuZENvbmZpZyYgbG9nZ2VkX2V2ZW50KSB7Ci0gIGlm
IChvcmlnaW5hbF9ldmVudC50aW1lc3RhbXBfdXNfICE9IGxvZ2dlZF9ldmVudC5sb2dfdGltZV91
cygpKQotICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBMb2dnZWRWaWRlb1NlbmRDb25maWcm
IGxvZ2dlZF9ldmVudCkgY29uc3QgeworICBFWFBFQ1RfRVEob3JpZ2luYWxfZXZlbnQudGltZXN0
YW1wX21zKCksIGxvZ2dlZF9ldmVudC5sb2dfdGltZV9tcygpKTsKICAgLy8gVE9ETyh0ZXJlbGl1
cyk6IEluIHRoZSBwYXN0LCB3ZSBhbGxvd2VkIHN0b3JpbmcgbXVsdGlwbGUgUnRjU3RyZWFtQ29u
ZmlncwogICAvLyBpbiB0aGUgc2FtZSBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZy4gTG9v
ayBpbnRvIHdoZXRoZXIgd2Ugc2hvdWxkIGRyb3AKICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxp
dHkgaW4gdGhlIHBhcnNlci4KLSAgaWYgKGxvZ2dlZF9ldmVudC5jb25maWdzLnNpemUoKSAhPSAx
KQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKCpvcmlnaW5hbF9ldmVudC5jb25maWdfICE9IGxv
Z2dlZF9ldmVudC5jb25maWdzWzBdKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7
CisgIEFTU0VSVF9FUShsb2dnZWRfZXZlbnQuY29uZmlncy5zaXplKCksIDF1KTsKKyAgVmVyaWZ5
TG9nZ2VkU3RyZWFtQ29uZmlnKG9yaWdpbmFsX2V2ZW50LmNvbmZpZygpLCBsb2dnZWRfZXZlbnQu
Y29uZmlnc1swXSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvcnRjX2V2ZW50X2xvZ191bml0dGVzdF9oZWxwZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9n
X3VuaXR0ZXN0X2hlbHBlci5oCmluZGV4IGY0ZDE4NzY1Mjg3YmU0ZGMxNTY2MzNlYzNiYjQ4ZDNj
ODkyN2Q1MjIuLjgxNzYwYjc1NTUzNjA4YWZmYWFhZTM2MGQ4MmFlMGI5MDhmMGU4YmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcv
cnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0X2hlbHBlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2xvZ2dpbmcvcnRjX2V2ZW50X2xv
Zy9ydGNfZXZlbnRfbG9nX3VuaXR0ZXN0X2hlbHBlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnRfdmlkZW9fcmVjZWl2
ZV9zdHJlYW1fY29uZmlnLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50
cy9ydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlnLmgiCiAjaW5jbHVkZSAibG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2dfcGFyc2VyX25ldy5oIgorI2luY2x1ZGUgImxv
Z2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfc3RyZWFtX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3JlY2VpdmVyX3JlcG9ydC5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3JlcG9ydF9ibG9jay5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3NlbmRlcl9yZXBv
cnQuaCIKQEAgLTcwLDIxICs3MSwzMiBAQCBjbGFzcyBFdmVudEdlbmVyYXRvciB7CiAKICAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0Y0V2ZW50UnRjcFBhY2tldE91dGdvaW5nPiBOZXdSdGNwUGFja2V0T3V0
Z29pbmcoKTsKIAorICAvLyB8YWxsX2NvbmZpZ3VyZWRfZXh0c3wgZGV0ZXJtaW5lcyB3aGV0aGVy
IHRoZSBSVFAgcGFja2V0IGV4aGliaXRzIGFsbAorICAvLyBjb25maWd1cmVkIGV4dGVuc2lvbnMs
IG9yIGEgcmFuZG9tIHN1YnNldCB0aGVyZW9mLgogICB2b2lkIFJhbmRvbWl6ZVJ0cFBhY2tldChz
aXplX3QgcGF5bG9hZF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFk
ZGluZ19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzc3JjLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVu
c2lvbl9tYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFBhY2tldCogcnRwX3BhY2tl
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFBhY2tldCogcnRwX3BhY2tldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGxfY29uZmlndXJlZF9leHRzKTsKIAorICAv
LyB8YWxsX2NvbmZpZ3VyZWRfZXh0c3wgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBSVFAgcGFja2V0
IGV4aGliaXRzIGFsbAorICAvLyBjb25maWd1cmVkIGV4dGVuc2lvbnMsIG9yIGEgcmFuZG9tIHN1
YnNldCB0aGVyZW9mLgogICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRSdHBQYWNrZXRJbmNvbWlu
Zz4gTmV3UnRwUGFja2V0SW5jb21pbmcoCiAgICAgICB1aW50MzJfdCBzc3JjLAotICAgICAgY29u
c3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBleHRlbnNpb25fbWFwKTsKKyAgICAgIGNvbnN0IFJ0
cEhlYWRlckV4dGVuc2lvbk1hcCYgZXh0ZW5zaW9uX21hcCwKKyAgICAgIGJvb2wgYWxsX2NvbmZp
Z3VyZWRfZXh0cyA9IHRydWUpOwogCisgIC8vIHxhbGxfY29uZmlndXJlZF9leHRzfCBkZXRlcm1p
bmVzIHdoZXRoZXIgdGhlIFJUUCBwYWNrZXQgZXhoaWJpdHMgYWxsCisgIC8vIGNvbmZpZ3VyZWQg
ZXh0ZW5zaW9ucywgb3IgYSByYW5kb20gc3Vic2V0IHRoZXJlb2YuCiAgIHN0ZDo6dW5pcXVlX3B0
cjxSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5nPiBOZXdSdHBQYWNrZXRPdXRnb2luZygKICAgICAg
IHVpbnQzMl90IHNzcmMsCi0gICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAmIGV4dGVu
c2lvbl9tYXApOworICAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBleHRlbnNpb25f
bWFwLAorICAgICAgYm9vbCBhbGxfY29uZmlndXJlZF9leHRzID0gdHJ1ZSk7CiAKLSAgUnRwSGVh
ZGVyRXh0ZW5zaW9uTWFwIE5ld1J0cEhlYWRlckV4dGVuc2lvbk1hcCgpOworICAvLyB8Y29uZmln
dXJlX2FsbHwgZGV0ZXJtaW5lcyB3aGV0aGVyIGFsbCBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBhcmUg
Y29uZmlndXJlZCwKKyAgLy8gb3IgYSByYW5kb20gc3Vic2V0LgorICBSdHBIZWFkZXJFeHRlbnNp
b25NYXAgTmV3UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKGJvb2wgY29uZmlndXJlX2FsbCA9IGZhbHNl
KTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWc+
IE5ld0F1ZGlvUmVjZWl2ZVN0cmVhbUNvbmZpZygKICAgICAgIHVpbnQzMl90IHNzcmMsCkBAIC0x
MTAsODAgKzEyMiwxMTEgQEAgY2xhc3MgRXZlbnRHZW5lcmF0b3IgewogICBSYW5kb20gcHJuZ187
CiB9OwogCi1ib29sIFZlcmlmeUxvZ2dlZEFsclN0YXRlRXZlbnQoY29uc3QgUnRjRXZlbnRBbHJT
dGF0ZSYgb3JpZ2luYWxfZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgTG9nZ2VkQWxyU3RhdGVFdmVudCYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dn
ZWRBdWRpb1BsYXlvdXRFdmVudChjb25zdCBSdGNFdmVudEF1ZGlvUGxheW91dCYgb3JpZ2luYWxf
ZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvZ2dlZEF1
ZGlvUGxheW91dEV2ZW50JiBsb2dnZWRfZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZEF1ZGlv
TmV0d29ya0FkYXB0YXRpb25FdmVudCgKLSAgICBjb25zdCBSdGNFdmVudEF1ZGlvTmV0d29ya0Fk
YXB0YXRpb24mIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZEF1ZGlvTmV0d29ya0Fk
YXB0YXRpb25FdmVudCYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRCd2VEZWxh
eUJhc2VkVXBkYXRlKAotICAgIGNvbnN0IFJ0Y0V2ZW50QndlVXBkYXRlRGVsYXlCYXNlZCYgb3Jp
Z2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQndlRGVsYXlCYXNlZFVwZGF0ZSYgbG9nZ2Vk
X2V2ZW50KTsKLQotYm9vbCBWZXJpZnlMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUoCi0gICAgY29u
c3QgUnRjRXZlbnRCd2VVcGRhdGVMb3NzQmFzZWQmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0
IExvZ2dlZEJ3ZUxvc3NCYXNlZFVwZGF0ZSYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlM
b2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZlbnQoCi0gICAgY29uc3QgUnRjRXZlbnRQcm9i
ZUNsdXN0ZXJDcmVhdGVkJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRCd2VQcm9i
ZUNsdXN0ZXJDcmVhdGVkRXZlbnQmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2Vk
QndlUHJvYmVGYWlsdXJlRXZlbnQoCi0gICAgY29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdEZhaWx1
cmUmIG9yaWdpbmFsX2V2ZW50LAotICAgIGNvbnN0IExvZ2dlZEJ3ZVByb2JlRmFpbHVyZUV2ZW50
JiBsb2dnZWRfZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50
KAotICAgIGNvbnN0IFJ0Y0V2ZW50UHJvYmVSZXN1bHRTdWNjZXNzJiBvcmlnaW5hbF9ldmVudCwK
LSAgICBjb25zdCBMb2dnZWRCd2VQcm9iZVN1Y2Nlc3NFdmVudCYgbG9nZ2VkX2V2ZW50KTsKLQot
Ym9vbCBWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAotICAgIGNvbnN0IFJ0Y0V2
ZW50SWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9n
Z2VkSWNlQ2FuZGlkYXRlUGFpckNvbmZpZyYgbG9nZ2VkX2V2ZW50KTsKLQotYm9vbCBWZXJpZnlM
b2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQoCi0gICAgY29uc3QgUnRjRXZlbnRJY2VDYW5kaWRh
dGVQYWlyJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRJY2VDYW5kaWRhdGVQYWly
RXZlbnQmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0SW5jb21p
bmcoCi0gICAgY29uc3QgUnRjRXZlbnRSdHBQYWNrZXRJbmNvbWluZyYgb3JpZ2luYWxfZXZlbnQs
Ci0gICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIGxvZ2dlZF9ldmVudCk7Ci0KLWJv
b2wgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcoCi0gICAgY29uc3QgUnRjRXZlbnRSdHBQ
YWNrZXRPdXRnb2luZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0
T3V0Z29pbmcmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkUnRjcFBhY2tldElu
Y29taW5nKAotICAgIGNvbnN0IFJ0Y0V2ZW50UnRjcFBhY2tldEluY29taW5nJiBvcmlnaW5hbF9l
dmVudCwKLSAgICBjb25zdCBMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcmIGxvZ2dlZF9ldmVudCk7
Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkUnRjcFBhY2tldE91dGdvaW5nKAotICAgIGNvbnN0IFJ0Y0V2
ZW50UnRjcFBhY2tldE91dGdvaW5nJiBvcmlnaW5hbF9ldmVudCwKLSAgICBjb25zdCBMb2dnZWRS
dGNwUGFja2V0T3V0Z29pbmcmIGxvZ2dlZF9ldmVudCk7Ci0KLWJvb2wgVmVyaWZ5TG9nZ2VkU3Rh
cnRFdmVudChpbnQ2NF90IHN0YXJ0X3RpbWVfdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgTG9nZ2VkU3RhcnRFdmVudCYgbG9nZ2VkX2V2ZW50KTsKLWJvb2wgVmVyaWZ5TG9n
Z2VkU3RvcEV2ZW50KGludDY0X3Qgc3RvcF90aW1lX3VzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgTG9nZ2VkU3RvcEV2ZW50JiBsb2dnZWRfZXZlbnQpOwotCi1ib29sIFZlcmlm
eUxvZ2dlZEF1ZGlvUmVjdkNvbmZpZygKLSAgICBjb25zdCBSdGNFdmVudEF1ZGlvUmVjZWl2ZVN0
cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkQXVkaW9SZWN2Q29u
ZmlnJiBsb2dnZWRfZXZlbnQpOwotCi1ib29sIFZlcmlmeUxvZ2dlZEF1ZGlvU2VuZENvbmZpZygK
LSAgICBjb25zdCBSdGNFdmVudEF1ZGlvU2VuZFN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQs
Ci0gICAgY29uc3QgTG9nZ2VkQXVkaW9TZW5kQ29uZmlnJiBsb2dnZWRfZXZlbnQpOwotCi1ib29s
IFZlcmlmeUxvZ2dlZFZpZGVvUmVjdkNvbmZpZygKLSAgICBjb25zdCBSdGNFdmVudFZpZGVvUmVj
ZWl2ZVN0cmVhbUNvbmZpZyYgb3JpZ2luYWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkVmlkZW9S
ZWN2Q29uZmlnJiBsb2dnZWRfZXZlbnQpOworY2xhc3MgRXZlbnRWZXJpZmllciB7CisgcHVibGlj
OgorICBleHBsaWNpdCBFdmVudFZlcmlmaWVyKFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGUgZW5j
b2RpbmdfdHlwZSkKKyAgICAgIDogZW5jb2RpbmdfdHlwZV8oZW5jb2RpbmdfdHlwZSkge30KKwor
ICB2b2lkIFZlcmlmeUxvZ2dlZEFsclN0YXRlRXZlbnQoY29uc3QgUnRjRXZlbnRBbHJTdGF0ZSYg
b3JpZ2luYWxfZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBM
b2dnZWRBbHJTdGF0ZUV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5
TG9nZ2VkQXVkaW9QbGF5b3V0RXZlbnQoCisgICAgICBjb25zdCBSdGNFdmVudEF1ZGlvUGxheW91
dCYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCYg
bG9nZ2VkX2V2ZW50KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dlZEF1ZGlvTmV0d29ya0Fk
YXB0YXRpb25FdmVudCgKKyAgICAgIGNvbnN0IFJ0Y0V2ZW50QXVkaW9OZXR3b3JrQWRhcHRhdGlv
biYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRBdWRpb05ldHdvcmtBZGFwdGF0
aW9uRXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRCd2VE
ZWxheUJhc2VkVXBkYXRlKAorICAgICAgY29uc3QgUnRjRXZlbnRCd2VVcGRhdGVEZWxheUJhc2Vk
JiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZEJ3ZURlbGF5QmFzZWRVcGRhdGUm
IGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRCd2VMb3NzQmFzZWRV
cGRhdGUoCisgICAgICBjb25zdCBSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCYgb3JpZ2luYWxf
ZXZlbnQsCisgICAgICBjb25zdCBMb2dnZWRCd2VMb3NzQmFzZWRVcGRhdGUmIGxvZ2dlZF9ldmVu
dCkgY29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRCd2VQcm9iZUNsdXN0ZXJDcmVhdGVkRXZl
bnQoCisgICAgICBjb25zdCBSdGNFdmVudFByb2JlQ2x1c3RlckNyZWF0ZWQmIG9yaWdpbmFsX2V2
ZW50LAorICAgICAgY29uc3QgTG9nZ2VkQndlUHJvYmVDbHVzdGVyQ3JlYXRlZEV2ZW50JiBsb2dn
ZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5TG9nZ2VkQndlUHJvYmVGYWlsdXJlRXZl
bnQoCisgICAgICBjb25zdCBSdGNFdmVudFByb2JlUmVzdWx0RmFpbHVyZSYgb3JpZ2luYWxfZXZl
bnQsCisgICAgICBjb25zdCBMb2dnZWRCd2VQcm9iZUZhaWx1cmVFdmVudCYgbG9nZ2VkX2V2ZW50
KSBjb25zdDsKKworICB2b2lkIFZlcmlmeUxvZ2dlZEJ3ZVByb2JlU3VjY2Vzc0V2ZW50KAorICAg
ICAgY29uc3QgUnRjRXZlbnRQcm9iZVJlc3VsdFN1Y2Nlc3MmIG9yaWdpbmFsX2V2ZW50LAorICAg
ICAgY29uc3QgTG9nZ2VkQndlUHJvYmVTdWNjZXNzRXZlbnQmIGxvZ2dlZF9ldmVudCkgY29uc3Q7
CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnKAorICAgICAgY29u
c3QgUnRjRXZlbnRJY2VDYW5kaWRhdGVQYWlyQ29uZmlnJiBvcmlnaW5hbF9ldmVudCwKKyAgICAg
IGNvbnN0IExvZ2dlZEljZUNhbmRpZGF0ZVBhaXJDb25maWcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7
CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRJY2VDYW5kaWRhdGVQYWlyRXZlbnQoCisgICAgICBjb25z
dCBSdGNFdmVudEljZUNhbmRpZGF0ZVBhaXImIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3Qg
TG9nZ2VkSWNlQ2FuZGlkYXRlUGFpckV2ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZv
aWQgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcoCisgICAgICBjb25zdCBSdGNFdmVudFJ0
cFBhY2tldEluY29taW5nJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZFJ0cFBh
Y2tldEluY29taW5nJiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5TG9nZ2Vk
UnRwUGFja2V0T3V0Z29pbmcoCisgICAgICBjb25zdCBSdGNFdmVudFJ0cFBhY2tldE91dGdvaW5n
JiBvcmlnaW5hbF9ldmVudCwKKyAgICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldE91dGdvaW5nJiBs
b2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBFdmVudFR5cGUsIHR5
cGVuYW1lIFBhcnNlZFR5cGU+CisgIHZvaWQgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0KGNvbnN0IEV2
ZW50VHlwZSYgb3JpZ2luYWxfZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFBhcnNlZFR5cGUmIGxvZ2dlZF9ldmVudCkgeworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFBhcnNlZFR5cGUpID09IDAsCisgICAgICAgICAgICAgICAgICAiWW91IGhhdmUgdG8gdXNlIG9u
ZSBvZiB0aGUgdHdvIGRlZmluZWQgdGVtcGxhdGUgIgorICAgICAgICAgICAgICAgICAgInNwZWNp
YWxpemF0aW9ucyBvZiBWZXJpZnlMb2dnZWRSdHBQYWNrZXQiKTsKKyAgfQorCisgIHRlbXBsYXRl
IDw+CisgIHZvaWQgVmVyaWZ5TG9nZ2VkUnRwUGFja2V0KGNvbnN0IFJ0Y0V2ZW50UnRwUGFja2V0
SW5jb21pbmcmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBMb2dnZWRSdHBQYWNrZXRJbmNvbWluZyYgbG9nZ2VkX2V2ZW50KSB7CisgICAgVmVyaWZ5
TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcob3JpZ2luYWxfZXZlbnQsIGxvZ2dlZF9ldmVudCk7Cisg
IH0KKworICB0ZW1wbGF0ZSA8PgorICB2b2lkIFZlcmlmeUxvZ2dlZFJ0cFBhY2tldChjb25zdCBS
dGNFdmVudFJ0cFBhY2tldE91dGdvaW5nJiBvcmlnaW5hbF9ldmVudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0T3V0Z29pbmcmIGxvZ2dlZF9ldmVu
dCkgeworICAgIFZlcmlmeUxvZ2dlZFJ0cFBhY2tldE91dGdvaW5nKG9yaWdpbmFsX2V2ZW50LCBs
b2dnZWRfZXZlbnQpOworICB9CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRSdGNwUGFja2V0SW5jb21p
bmcoCisgICAgICBjb25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRJbmNvbWluZyYgb3JpZ2luYWxfZXZl
bnQsCisgICAgICBjb25zdCBMb2dnZWRSdGNwUGFja2V0SW5jb21pbmcmIGxvZ2dlZF9ldmVudCkg
Y29uc3Q7CisKKyAgdm9pZCBWZXJpZnlMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmcoCisgICAgICBj
b25zdCBSdGNFdmVudFJ0Y3BQYWNrZXRPdXRnb2luZyYgb3JpZ2luYWxfZXZlbnQsCisgICAgICBj
b25zdCBMb2dnZWRSdGNwUGFja2V0T3V0Z29pbmcmIGxvZ2dlZF9ldmVudCkgY29uc3Q7CisKKyAg
dm9pZCBWZXJpZnlMb2dnZWRTdGFydEV2ZW50KGludDY0X3Qgc3RhcnRfdGltZV91cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdXRjX3N0YXJ0X3RpbWVfdXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2dnZWRTdGFydEV2ZW50JiBsb2dnZWRf
ZXZlbnQpIGNvbnN0OworICB2b2lkIFZlcmlmeUxvZ2dlZFN0b3BFdmVudChpbnQ2NF90IHN0b3Bf
dGltZV91cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9nZ2VkU3RvcEV2
ZW50JiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5TG9nZ2VkQXVkaW9SZWN2
Q29uZmlnKAorICAgICAgY29uc3QgUnRjRXZlbnRBdWRpb1JlY2VpdmVTdHJlYW1Db25maWcmIG9y
aWdpbmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9nZ2VkQXVkaW9SZWN2Q29uZmlnJiBsb2dnZWRf
ZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVyaWZ5TG9nZ2VkQXVkaW9TZW5kQ29uZmlnKAorICAg
ICAgY29uc3QgUnRjRXZlbnRBdWRpb1NlbmRTdHJlYW1Db25maWcmIG9yaWdpbmFsX2V2ZW50LAor
ICAgICAgY29uc3QgTG9nZ2VkQXVkaW9TZW5kQ29uZmlnJiBsb2dnZWRfZXZlbnQpIGNvbnN0Owor
CisgIHZvaWQgVmVyaWZ5TG9nZ2VkVmlkZW9SZWN2Q29uZmlnKAorICAgICAgY29uc3QgUnRjRXZl
bnRWaWRlb1JlY2VpdmVTdHJlYW1Db25maWcmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3Qg
TG9nZ2VkVmlkZW9SZWN2Q29uZmlnJiBsb2dnZWRfZXZlbnQpIGNvbnN0OworCisgIHZvaWQgVmVy
aWZ5TG9nZ2VkVmlkZW9TZW5kQ29uZmlnKAorICAgICAgY29uc3QgUnRjRXZlbnRWaWRlb1NlbmRT
dHJlYW1Db25maWcmIG9yaWdpbmFsX2V2ZW50LAorICAgICAgY29uc3QgTG9nZ2VkVmlkZW9TZW5k
Q29uZmlnJiBsb2dnZWRfZXZlbnQpIGNvbnN0OwogCi1ib29sIFZlcmlmeUxvZ2dlZFZpZGVvU2Vu
ZENvbmZpZygKLSAgICBjb25zdCBSdGNFdmVudFZpZGVvU2VuZFN0cmVhbUNvbmZpZyYgb3JpZ2lu
YWxfZXZlbnQsCi0gICAgY29uc3QgTG9nZ2VkVmlkZW9TZW5kQ29uZmlnJiBsb2dnZWRfZXZlbnQp
OworIHByaXZhdGU6CisgIFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGUgZW5jb2RpbmdfdHlwZV87
Cit9OwogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbG9nZ2lu
Zy9ydGNfZXZlbnRfbG9nL3J0Y19zdHJlYW1fY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX3N0cmVhbV9j
b25maWcuaAppbmRleCBkOTVjODM1OWVjZTgyOWY3MDUyN2JhNDE4Y2IyMzQ4YzllNTc2ZTg4Li5h
OWRhNDgxNGU2YjM4ODQ4MTAyMmJhZmM0YjVhYWI3ZjhkNDk0ZGYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9s
b2cvcnRjX3N0cmVhbV9jb25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9sb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX3N0cmVhbV9jb25maWcuaApA
QCAtMTEsMTIgKzExLDEyIEBACiAjaWZuZGVmIExPR0dJTkdfUlRDX0VWRU5UX0xPR19SVENfU1RS
RUFNX0NPTkZJR19IXwogI2RlZmluZSBMT0dHSU5HX1JUQ19FVkVOVF9MT0dfUlRDX1NUUkVBTV9D
T05GSUdfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKICNpbmNsdWRlICJh
cGkvcnRwcGFyYW1ldGVycy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5U
KGJ1aWxkL2luY2x1ZGUpCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHJ0Y2xvZyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL0JVSUxELmduCmluZGV4IDg1OGIyNzJmNTU4MGRjMmE0YjE2ZWZmZjM3ZDQwODdiNGNl
NmVjMTguLmI2Zjk4YzY3YjcyNzgyMjdkMTdjNjY3NjQ2NGQ5ZjgyMTM2OWUzYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL0JVSUxE
LmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L0JVSUxELmduCkBAIC00Miw2ICs0Miw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfaDI2NF9wcm9m
aWxlX2lkIikgewogICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRj
X2Jhc2UiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uL3J0
Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CkBAIC0xMzYsNyArMTM3LDkgQEAgcnRjX3N0
YXRpY19saWJyYXJ5KCJydGNfbWVkaWFfYmFzZSIpIHsKICAgICAiLi4vbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nOmF1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcyIsCiAgICAgIi4uL3J0Y19iYXNl
OnJ0Y19iYXNlIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIu
Li9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi4uL3J0Y19iYXNlL3RoaXJkX3Bh
cnR5L3NpZ3Nsb3QiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAog
ICBdCiAKQEAgLTE1OSw2ICsxNjIsNTIgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfY29uc3Rh
bnRzIikgewogICBdCiB9CiAKK3J0Y19zdGF0aWNfbGlicmFyeSgicnRjX3NpbXVsY2FzdF9lbmNv
ZGVyX2FkYXB0ZXIiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIGRlZmluZXMgPSBbXQor
ICBsaWJzID0gW10KKyAgc291cmNlcyA9IFsKKyAgICAiZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVy
X2FkYXB0ZXIuY2MiLAorICAgICJlbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5oIiwK
KyAgXQorICBkZXBzID0gWworICAgICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0
aW9uIiwKKyAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAorICAgICIuLi9hcGkv
dmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAorICAgICIuLi9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAorICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zzp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCisgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAg
Ii4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vcnRjX2Jhc2U6c2VxdWVu
Y2VkX3Rhc2tfY2hlY2tlciIsCisgICAgIi4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgIi4uL3N5
c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9saWJ5dXYiLAorICBd
CisgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgeworICAgICMgU3VwcHJl
c3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5v
cmcvMTYzKS4KKyAgICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xh
bmc6ZmluZF9iYWRfY29uc3RydWN0cyIgXQorICB9Cit9CisKK3J0Y19zdGF0aWNfbGlicmFyeSgi
cnRjX3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eSIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioi
IF0KKyAgZGVmaW5lcyA9IFtdCisgIGxpYnMgPSBbXQorICBzb3VyY2VzID0gWworICAgICJlbmdp
bmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5LmNjIiwKKyAgICAiZW5naW5lL3ZwOF9lbmNv
ZGVyX3NpbXVsY2FzdF9wcm94eS5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6cnRjX3NpbXVs
Y2FzdF9lbmNvZGVyX2FkYXB0ZXIiLAorICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2Nv
ZGVjc19hcGkiLAorICBdCisgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykg
eworICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2lu
IChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KKyAgICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAiLy9i
dWlsZC9jb25maWcvY2xhbmc6ZmluZF9iYWRfY29uc3RydWN0cyIgXQorICB9Cit9CisKIHJ0Y19z
dGF0aWNfbGlicmFyeSgicnRjX2ludGVybmFsX3ZpZGVvX2NvZGVjcyIpIHsKICAgdmlzaWJpbGl0
eSA9IFsgIioiIF0KICAgYWxsb3dfcG9pc29uID0gWyAic29mdHdhcmVfdmlkZW9fY29kZWNzIiBd
CkBAIC0xNjYsOCArMjE1LDkgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfaW50ZXJuYWxfdmlk
ZW9fY29kZWNzIikgewogICBsaWJzID0gW10KICAgZGVwcyA9IFsKICAgICAiOnJ0Y19oMjY0X3By
b2ZpbGVfaWQiLAorICAgICI6cnRjX3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIiLAorICAgICI6
cnRjX3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eSIsCiAgICAgIi4uL21vZHVsZXMvdmlkZW9f
Y29kaW5nOnZpZGVvX2NvZGVjX2ludGVyZmFjZSIsCi0gICAgIi4uL3N5c3RlbV93cmFwcGVyczpm
aWVsZF90cmlhbCIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIs
CiAgIF0KICAgc291cmNlcyA9IFsKQEAgLTE4Myw5ICsyMzMsOSBAQCBydGNfc3RhdGljX2xpYnJh
cnkoInJ0Y19pbnRlcm5hbF92aWRlb19jb2RlY3MiKSB7CiAgICAgImVuZ2luZS9zY29wZWR2aWRl
b2RlY29kZXIuaCIsCiAgICAgImVuZ2luZS9zY29wZWR2aWRlb2VuY29kZXIuY2MiLAogICAgICJl
bmdpbmUvc2NvcGVkdmlkZW9lbmNvZGVyLmgiLAotICAgICJlbmdpbmUvc2ltdWxjYXN0X2VuY29k
ZXJfYWRhcHRlci5jYyIsCi0gICAgImVuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmgi
LAotICAgICJlbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5LmNjIiwKKworICAgICMg
VE9ETyhidWdzLndlYnJ0Yy5vcmcvNzkyNSk6IHN0b3AgZXhwb3J0aW5nIHRoaXMgaGVhZGVyIG9u
Y2UgZG93bnN0cmVhbQorICAgICMgdGFyZ2V0cyBkZXBlbmQgb24gOnJ0Y192cDhfZW5jb2Rlcl9z
aW11bGNhc3RfcHJveHkgZGlyZWN0bHkuCiAgICAgImVuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNh
c3RfcHJveHkuaCIsCiAgICAgImVuZ2luZS93ZWJydGN2aWRlb2RlY29kZXJmYWN0b3J5LmgiLAog
ICAgICJlbmdpbmUvd2VicnRjdmlkZW9lbmNvZGVyZmFjdG9yeS5oIiwKQEAgLTIwMiwyNCArMjUy
LDIwIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2ludGVybmFsX3ZpZGVvX2NvZGVjcyIpIHsK
ICAgZGVwcyArPSBbCiAgICAgIjpydGNfY29uc3RhbnRzIiwKICAgICAiOnJ0Y19tZWRpYV9iYXNl
IiwKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19iaXRy
YXRlX2FsbG9jYXRpb24iLAotICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCisg
ICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6
cnRjX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXJzIiwKICAgICAiLi4vYXBpL3ZpZGVvX2NvZGVj
czp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAiLi4vY2FsbDpjYWxsX2ludGVyZmFjZXMiLAogICAg
ICIuLi9jYWxsOnZpZGVvX3N0cmVhbV9hcGkiLAotICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zzp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCiAgICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOndl
YnJ0Y19oMjY0IiwKICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6d2VicnRjX211bHRpcGxl
eCIsCiAgICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOndlYnJ0Y192cDgiLAogICAgICIuLi9t
b2R1bGVzL3ZpZGVvX2NvZGluZzp3ZWJydGNfdnA5IiwKICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tz
IiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICIuLi9ydGNfYmFz
ZTpzZXF1ZW5jZWRfdGFza19jaGVja2VyIiwKLSAgICAiLi4vc3lzdGVtX3dyYXBwZXJzIiwKLSAg
ICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAotICAgICIv
L3RoaXJkX3BhcnR5L2xpYnl1diIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0
IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgIF0KIH0K
IApAQCAtMjMyLDEyICsyNzgsMTUgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYXVkaW9fdmlk
ZW8iKSB7CiAgIGRlZmluZXMgPSBbXQogICBsaWJzID0gW10KICAgZGVwcyA9IFsKKyAgICAiLi4v
YXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAorICAgICIuLi9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlY19kdW1wOmFlY19kdW1wIiwKICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlk
ZW9fY29kZWNfaW50ZXJmYWNlIiwKICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9f
Y29kaW5nIiwKICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kaW5nX3V0aWxp
dHkiLAogICAgICIuLi9ydGNfYmFzZTphdWRpb19mb3JtYXRfdG9fc3RyaW5nIiwKICAgICAiLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAog
ICAgICIuLi9ydGNfYmFzZS90aGlyZF9wYXJ0eS9iYXNlNjQiLAogICAgICIuLi9zeXN0ZW1fd3Jh
cHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCkBA
IC0zMDUsNiArMzU0LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYXVkaW9fdmlkZW8iKSB7
CiAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAiLi4vYXBp
OnRyYW5zcG9ydF9hcGkiLAogICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19h
cGkiLAorICAgICIuLi9hcGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9m
YWN0b3J5IiwKICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwKICAgICAiLi4vYXBpL3Zp
ZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAogICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnJ0Y19zb2Z0
d2FyZV9mYWxsYmFja193cmFwcGVycyIsCkBAIC0zMjIsNyArMzcyLDEwIEBAIHJ0Y19zdGF0aWNf
bGlicmFyeSgicnRjX2F1ZGlvX3ZpZGVvIikgewogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIs
CiAgICAgIi4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKICAgICAiLi4vcnRjX2Jhc2U6c3Ry
aW5ndXRpbHMiLAorICAgICIuLi9ydGNfYmFzZS9leHBlcmltZW50czpub3JtYWxpemVfc2ltdWxj
YXN0X3NpemVfZXhwZXJpbWVudCIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgIi8v
dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTM5MSwyNCArNDQ0LDI5IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgIGluY2x1ZGVfZGlycyA9IFtdCiAgICAgZGVwcyA9IFsK
ICAgICAgICI6cnRjX2F1ZGlvX3ZpZGVvIiwKKyAgICAgICI6cnRjX3NpbXVsY2FzdF9lbmNvZGVy
X2FkYXB0ZXIiLAogICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwK
ICAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCiAgICAgICAiLi4vY2FsbDp2
aWRlb19zdHJlYW1fYXBpIiwKICAgICAgICIuLi9jb21tb25fdmlkZW86Y29tbW9uX3ZpZGVvIiwK
ICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpyZW50X2FfY29kZWMiLAorICAgICAgIi4u
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAgIi4uL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNw
OnJ0cF9ydGNwX2Zvcm1hdCIsCiAgICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9f
Y29kZWNfaW50ZXJmYWNlIiwKICAgICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19j
b2RpbmdfdXRpbGl0eSIsCiAgICAgICAiLi4vcDJwOnJ0Y19wMnAiLAogICAgICAgIi4uL3J0Y19i
YXNlOmNoZWNrcyIsCisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAi
Li4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWUiLAogICAgICAgIi4uL3J0Y19iYXNlOnN0cmluZ3V0
aWxzIiwKICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAg
ICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgIF0KICAgICBz
b3VyY2VzID0gWwogICAgICAgImJhc2UvZmFrZWZyYW1lc291cmNlLmNjIiwKICAgICAgICJiYXNl
L2Zha2VmcmFtZXNvdXJjZS5oIiwKKyAgICAgICJiYXNlL2Zha2VtZWRpYWVuZ2luZS5jYyIsCiAg
ICAgICAiYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIsCiAgICAgICAiYmFzZS9mYWtlbmV0d29ya2lu
dGVyZmFjZS5oIiwKICAgICAgICJiYXNlL2Zha2VydHAuY2MiLApAQCAtNDUwLDcgKzUwOCw2IEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL2NhbGw6bW9ja19ydHBfaW50ZXJm
YWNlcyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uL3J0Y19iYXNl
OnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191
dGlscyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVldWVfZm9yX3Rlc3QiLAogICAg
ICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3QiLAogICAgICAgIi4uL3Rlc3Q6dGVz
dF9zdXBwb3J0IiwKQEAgLTQ4Niw4ICs1NDMsMTAgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7
CiAgICAgICAiOnJ0Y19hdWRpb192aWRlbyIsCiAgICAgICAiOnJ0Y19jb25zdGFudHMiLAogICAg
ICAgIjpydGNfZGF0YSIsCisgICAgICAiLi4vYXBpL3Rlc3QvdmlkZW86ZnVuY3Rpb25fdmlkZW9f
ZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpL3VuaXRzOnRpbWVfZGVsdGEiLAogICAgICAgIi4uL2Fw
aS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKKyAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3Npbmc6YXBpIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6bW9ja3MiLAog
ICAgICAgIi4uL21vZHVsZXMvcnRwX3J0Y3AiLAogICAgICAgIi4uL21vZHVsZXMvdmlkZW9fY29k
aW5nOnZpZGVvX2NvZGVjX2ludGVyZmFjZSIsCkBAIC00OTUsMTEgKzU1NCwxMyBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9wYzpydGNfcGMiLAogICAgICAgIi4uL3BjOnJ0
Y19wY19iYXNlIiwKICAgICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICAgIi4uL3J0Y19i
YXNlOmd1bml0X2hlbHBlcnMiLAorICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0
aWxzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCiAgICAgICAiLi4vcnRj
X2Jhc2U6c3RyaW5ndXRpbHMiLAogICAgICAgIi4uL3Rlc3Q6ZmllbGRfdHJpYWwiLAotICAgICAg
Ii4uL3Rlc3Q6dGVzdF9jb21tb24iLAogICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL21lbW9yeSIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n
cyIsCiAgICAgXQogICAgIHNvdXJjZXMgPSBbCiAgICAgICAiYmFzZS9jb2RlY191bml0dGVzdC5j
YyIsCkBAIC01NjgsMTMgKzYyOSwxOCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAg
ICI6cnRjX21lZGlhIiwKICAgICAgICI6cnRjX21lZGlhX2Jhc2UiLAogICAgICAgIjpydGNfbWVk
aWFfdGVzdHNfdXRpbHMiLAorICAgICAgIjpydGNfc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlciIs
CisgICAgICAiOnJ0Y192cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkiLAogICAgICAgIjpydGNf
dnA5X3Byb2ZpbGUiLAogICAgICAgIi4uL2FwaTpjcmVhdGVfc2ltdWxjYXN0X3Rlc3RfZml4dHVy
ZV9hcGkiLAogICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKKyAg
ICAgICIuLi9hcGk6bW9ja192aWRlb19iaXRyYXRlX2FsbG9jYXRvciIsCisgICAgICAiLi4vYXBp
Om1vY2tfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpOm1v
Y2tfdmlkZW9fY29kZWNfZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpOnNpbXVsY2FzdF90ZXN0X2Zp
eHR1cmVfYXBpIiwKICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5IiwKICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9f
ZW5jb2Rlcl9mYWN0b3J5IiwKKyAgICAgICIuLi9hcGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0
ZV9hbGxvY2F0aW9uIiwKICAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAogICAgICAg
Ii4uL2FwaS92aWRlb19jb2RlY3M6YnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkiLApAQCAt
NTkyLDcgKzY1OCw2IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIi4uL3J0Y19i
YXNlOnJ0Y19iYXNlIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAg
ICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfbWFpbiIsCi0gICAgICAiLi4vcnRjX2Jh
c2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uL3Rlc3Q6YXVkaW9fY29kZWNfbW9j
a3MiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICIuLi90ZXN0OnZpZGVv
X3Rlc3RfY29tbW9uIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL09XTkVSUwppbmRleCA2MzRlYWYyYmZhNzllMTg3MWE3YjA2MDhj
ZjVjMDIwNTU2MmI3YzUyLi40NTQ0ZTlmNDgwNjEzODY3MDgyM2RiODRiYTNlYmJhYTRkNDdmMzMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9PV05FUlMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvT1dORVJTCkBAIC00LDYgKzQsNyBAQCBzcHJhbmdAd2VicnRjLm9yZwogbWFnamVk
QHdlYnJ0Yy5vcmcKIG1mbG9kbWFuQHdlYnJ0Yy5vcmcKIHBlcmtqQHdlYnJ0Yy5vcmcKK3NoYW1w
c29uQHdlYnJ0Yy5vcmcKIHNvbGVuYmVyZ0B3ZWJydGMub3JnCiAKICMgVGhlc2UgYXJlIGZvciB0
aGUgY29tbW9uIGNhc2Ugb2YgYWRkaW5nIG9yIHJlbmFtaW5nIGZpbGVzLiBJZiB5b3UncmUgZG9p
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2Jhc2UvY29kZWMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9iYXNlL2NvZGVjLmNjCmluZGV4IGNhZjMyMTIxMTI1YjFkYmVjMGNhOGNm
MjBmOTYxODk0ODkzMTVmZTguLjBhMWM3MTU2YWY4MGUwNTk5ZDE5ZTUyNzUyYjhlMmQ3MzFhNTFi
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2Jhc2UvY29kZWMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvYmFzZS9jb2RlYy5jYwpAQCAtMTIsMTMgKzEyLDEzIEBACiAKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNp
bmNsdWRlICJtZWRpYS9iYXNlL2gyNjRfcHJvZmlsZV9sZXZlbF9pZC5oIgogI2luY2x1ZGUgIm1l
ZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5j
b2RlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKIG5hbWVzcGFjZSBjcmlja2V0IHsKIApA
QCAtMjYsOCArMjYsOCBAQCBGZWVkYmFja1BhcmFtczo6RmVlZGJhY2tQYXJhbXMoKSA9IGRlZmF1
bHQ7CiBGZWVkYmFja1BhcmFtczo6fkZlZWRiYWNrUGFyYW1zKCkgPSBkZWZhdWx0OwogCiBib29s
IEZlZWRiYWNrUGFyYW06Om9wZXJhdG9yPT0oY29uc3QgRmVlZGJhY2tQYXJhbSYgb3RoZXIpIGNv
bnN0IHsKLSAgcmV0dXJuIF9zdHJpY21wKG90aGVyLmlkKCkuY19zdHIoKSwgaWQoKS5jX3N0cigp
KSA9PSAwICYmCi0gICAgICAgICBfc3RyaWNtcChvdGhlci5wYXJhbSgpLmNfc3RyKCksIHBhcmFt
KCkuY19zdHIoKSkgPT0gMDsKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uob3RoZXIu
aWQoKSwgaWQoKSkgJiYKKyAgICAgICAgIGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uob3RoZXIucGFy
YW0oKSwgcGFyYW0oKSk7CiB9CiAKIGJvb2wgRmVlZGJhY2tQYXJhbXM6Om9wZXJhdG9yPT0oY29u
c3QgRmVlZGJhY2tQYXJhbXMmIG90aGVyKSBjb25zdCB7CkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wg
Q29kZWM6Ok1hdGNoZXMoY29uc3QgQ29kZWMmIGNvZGVjKSBjb25zdCB7CiAgIGNvbnN0IGludCBr
TWF4U3RhdGljUGF5bG9hZElkID0gOTU7CiAgIHJldHVybiAoaWQgPD0ga01heFN0YXRpY1BheWxv
YWRJZCB8fCBjb2RlYy5pZCA8PSBrTWF4U3RhdGljUGF5bG9hZElkKQogICAgICAgICAgICAgID8g
KGlkID09IGNvZGVjLmlkKQotICAgICAgICAgICAgIDogKF9zdHJpY21wKG5hbWUuY19zdHIoKSwg
Y29kZWMubmFtZS5jX3N0cigpKSA9PSAwKTsKKyAgICAgICAgICAgICA6IChhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKG5hbWUsIGNvZGVjLm5hbWUpKTsKIH0KIAogYm9vbCBDb2RlYzo6R2V0UGFyYW0o
Y29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIHN0ZDo6c3RyaW5nKiBvdXQpIGNvbnN0IHsKQEAgLTIz
NSw3ICsyMzUsNyBAQCBWaWRlb0NvZGVjJiBWaWRlb0NvZGVjOjpvcGVyYXRvcj0oY29uc3QgVmlk
ZW9Db2RlYyYgYykgPSBkZWZhdWx0OwogVmlkZW9Db2RlYyYgVmlkZW9Db2RlYzo6b3BlcmF0b3I9
KFZpZGVvQ29kZWMmJiBjKSA9IGRlZmF1bHQ7CiAKIHZvaWQgVmlkZW9Db2RlYzo6U2V0RGVmYXVs
dFBhcmFtZXRlcnMoKSB7Ci0gIGlmIChfc3RyaWNtcChrSDI2NENvZGVjTmFtZSwgbmFtZS5jX3N0
cigpKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGtIMjY0Q29kZWNOYW1l
LCBuYW1lKSkgewogICAgIC8vIFRoaXMgZGVmYXVsdCBpcyBzZXQgZm9yIGFsbCBILjI2NCBjb2Rl
Y3MgY3JlYXRlZCBiZWNhdXNlCiAgICAgLy8gdGhhdCB3YXMgdGhlIGRlZmF1bHQgYmVmb3JlIHBh
Y2tldGl6YXRpb24gbW9kZSBzdXBwb3J0IHdhcyBhZGRlZC4KICAgICAvLyBUT0RPKGh0YSk6IE1v
dmUgdGhpcyB0byB0aGUgcGxhY2VzIHRoYXQgY3JlYXRlIFZpZGVvQ29kZWNzIGZyb20KQEAgLTI2
OCwxMCArMjY4LDEwIEBAIHN0YXRpYyBib29sIElzU2FtZUgyNjRQYWNrZXRpemF0aW9uTW9kZShj
b25zdCBDb2RlY1BhcmFtZXRlck1hcCYgb3VycywKIGJvb2wgVmlkZW9Db2RlYzo6TWF0Y2hlcyhj
b25zdCBWaWRlb0NvZGVjJiBvdGhlcikgY29uc3QgewogICBpZiAoIUNvZGVjOjpNYXRjaGVzKG90
aGVyKSkKICAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChDb2RlY05hbWVzRXEobmFtZS5jX3N0cigp
LCBrSDI2NENvZGVjTmFtZSkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUsIGtI
MjY0Q29kZWNOYW1lKSkKICAgICByZXR1cm4gd2VicnRjOjpIMjY0OjpJc1NhbWVIMjY0UHJvZmls
ZShwYXJhbXMsIG90aGVyLnBhcmFtcykgJiYKICAgICAgICAgICAgSXNTYW1lSDI2NFBhY2tldGl6
YXRpb25Nb2RlKHBhcmFtcywgb3RoZXIucGFyYW1zKTsKLSAgaWYgKENvZGVjTmFtZXNFcShuYW1l
LmNfc3RyKCksIGtWcDlDb2RlY05hbWUpKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShu
YW1lLCBrVnA5Q29kZWNOYW1lKSkKICAgICByZXR1cm4gd2VicnRjOjpJc1NhbWVWUDlQcm9maWxl
KHBhcmFtcywgb3RoZXIucGFyYW1zKTsKICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yODUsMTYgKzI4
NSwxNiBAQCBWaWRlb0NvZGVjIFZpZGVvQ29kZWM6OkNyZWF0ZVJ0eENvZGVjKGludCBydHhfcGF5
bG9hZF90eXBlLAogCiBWaWRlb0NvZGVjOjpDb2RlY1R5cGUgVmlkZW9Db2RlYzo6R2V0Q29kZWNU
eXBlKCkgY29uc3QgewogICBjb25zdCBjaGFyKiBwYXlsb2FkX25hbWUgPSBuYW1lLmNfc3RyKCk7
Ci0gIGlmIChfc3RyaWNtcChwYXlsb2FkX25hbWUsIGtSZWRDb2RlY05hbWUpID09IDApIHsKKyAg
aWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGF5bG9hZF9uYW1lLCBrUmVkQ29kZWNOYW1lKSkg
ewogICAgIHJldHVybiBDT0RFQ19SRUQ7CiAgIH0KLSAgaWYgKF9zdHJpY21wKHBheWxvYWRfbmFt
ZSwga1VscGZlY0NvZGVjTmFtZSkgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2Fz
ZShwYXlsb2FkX25hbWUsIGtVbHBmZWNDb2RlY05hbWUpKSB7CiAgICAgcmV0dXJuIENPREVDX1VM
UEZFQzsKICAgfQotICBpZiAoX3N0cmljbXAocGF5bG9hZF9uYW1lLCBrRmxleGZlY0NvZGVjTmFt
ZSkgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25hbWUsIGtG
bGV4ZmVjQ29kZWNOYW1lKSkgewogICAgIHJldHVybiBDT0RFQ19GTEVYRkVDOwogICB9Ci0gIGlm
IChfc3RyaWNtcChwYXlsb2FkX25hbWUsIGtSdHhDb2RlY05hbWUpID09IDApIHsKKyAgaWYgKGFi
c2w6OkVxdWFsc0lnbm9yZUNhc2UocGF5bG9hZF9uYW1lLCBrUnR4Q29kZWNOYW1lKSkgewogICAg
IHJldHVybiBDT0RFQ19SVFg7CiAgIH0KIApAQCAtMzYyLDE0ICszNjIsNiBAQCBib29sIEhhc1Ry
YW5zcG9ydENjKGNvbnN0IENvZGVjJiBjb2RlYykgewogICAgICAgRmVlZGJhY2tQYXJhbShrUnRj
cEZiUGFyYW1UcmFuc3BvcnRDYywga1BhcmFtVmFsdWVFbXB0eSkpOwogfQogCi1ib29sIENvZGVj
TmFtZXNFcShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZTEsIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
MikgewotICByZXR1cm4gQ29kZWNOYW1lc0VxKG5hbWUxLmNfc3RyKCksIG5hbWUyLmNfc3RyKCkp
OwotfQotCi1ib29sIENvZGVjTmFtZXNFcShjb25zdCBjaGFyKiBuYW1lMSwgY29uc3QgY2hhciog
bmFtZTIpIHsKLSAgcmV0dXJuIF9zdHJpY21wKG5hbWUxLCBuYW1lMikgPT0gMDsKLX0KLQogY29u
c3QgVmlkZW9Db2RlYyogRmluZE1hdGNoaW5nQ29kZWMoCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
VmlkZW9Db2RlYz4mIHN1cHBvcnRlZF9jb2RlY3MsCiAgICAgY29uc3QgVmlkZW9Db2RlYyYgY29k
ZWMpIHsKQEAgLTM4NywxMiArMzc5LDEyIEBAIGJvb2wgSXNTYW1lQ29kZWMoY29uc3Qgc3RkOjpz
dHJpbmcmIG5hbWUxLAogICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZTIs
CiAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjUGFyYW1ldGVyTWFwJiBwYXJhbXMyKSB7CiAg
IC8vIElmIGRpZmZlcmVudCBuYW1lcyAoY2FzZSBpbnNlbnNpdGl2ZSksIHRoZW4gbm90IHNhbWUg
Zm9ybWF0cy4KLSAgaWYgKCFDb2RlY05hbWVzRXEobmFtZTEsIG5hbWUyKSkKKyAgaWYgKCFhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKG5hbWUxLCBuYW1lMikpCiAgICAgcmV0dXJuIGZhbHNlOwogICAv
LyBGb3IgZXZlcnkgZm9ybWF0IGJlc2lkZXMgSDI2NCBhbmQgVlA5LCBjb21wYXJpbmcgbmFtZXMg
aXMgZW5vdWdoLgotICBpZiAoQ29kZWNOYW1lc0VxKG5hbWUxLmNfc3RyKCksIGtIMjY0Q29kZWNO
YW1lKSkKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZTEsIGtIMjY0Q29kZWNOYW1l
KSkKICAgICByZXR1cm4gd2VicnRjOjpIMjY0OjpJc1NhbWVIMjY0UHJvZmlsZShwYXJhbXMxLCBw
YXJhbXMyKTsKLSAgaWYgKENvZGVjTmFtZXNFcShuYW1lMS5jX3N0cigpLCBrVnA5Q29kZWNOYW1l
KSkKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UobmFtZTEsIGtWcDlDb2RlY05hbWUpKQog
ICAgIHJldHVybiB3ZWJydGM6OklzU2FtZVZQOVByb2ZpbGUocGFyYW1zMSwgcGFyYW1zMik7CiAg
IHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9jb2RlYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9jb2RlYy5oCmluZGV4IGRiMTMzZjZlMjdm
NjQ0ZjUxZTBkNzlkYTgyOWNjMjUzZjAwMTM5MjIuLjBjYTY1MzUyODdiZWViMjlmZjU1OThkZjFm
MjVjYmFmMTQwOTBkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvY29kZWMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2NvZGVjLmgKQEAgLTE4LDggKzE4LDgg
QEAKIAogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAv
LyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3Rh
bnRzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNw
YWNlIGNyaWNrZXQgewogCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIEZlZWRiYWNrUGFyYW1zIHsK
ICAgc3RkOjp2ZWN0b3I8RmVlZGJhY2tQYXJhbT4gcGFyYW1zXzsKIH07CiAKLXN0cnVjdCBDb2Rl
YyB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBDb2RlYyB7CiAgIGludCBpZDsKICAgc3RkOjpzdHJpbmcg
bmFtZTsKICAgaW50IGNsb2NrcmF0ZTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdHJ1Y3QgQXVkaW9D
b2RlYyA6IHB1YmxpYyBDb2RlYyB7CiAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdWRpb0NvZGVj
JiBjKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IGMpOyB9CiB9OwogCi1zdHJ1Y3QgVmlkZW9D
b2RlYyA6IHB1YmxpYyBDb2RlYyB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBWaWRlb0NvZGVjIDogcHVi
bGljIENvZGVjIHsKICAgLy8gQ3JlYXRlcyBhIGNvZGVjIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRl
cnMuCiAgIFZpZGVvQ29kZWMoaW50IGlkLCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7CiAgIC8v
IENyZWF0ZXMgYSBjb2RlYyB3aXRoIHRoZSBnaXZlbiBuYW1lIGFuZCBlbXB0eSBpZC4KQEAgLTIx
NSw4ICsyMTUsNiBAQCBjb25zdCBDb2RlYyogRmluZENvZGVjQnlJZChjb25zdCBzdGQ6OnZlY3Rv
cjxDb2RlYz4mIGNvZGVjcywgaW50IHBheWxvYWRfdHlwZSkgewogICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotYm9vbCBDb2RlY05hbWVzRXEoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUxLCBjb25zdCBz
dGQ6OnN0cmluZyYgbmFtZTIpOwotYm9vbCBDb2RlY05hbWVzRXEoY29uc3QgY2hhciogbmFtZTEs
IGNvbnN0IGNoYXIqIG5hbWUyKTsKIGJvb2wgSGFzTmFjayhjb25zdCBDb2RlYyYgY29kZWMpOwog
Ym9vbCBIYXNSZW1iKGNvbnN0IENvZGVjJiBjb2RlYyk7CiBib29sIEhhc1JydHIoY29uc3QgQ29k
ZWMmIGNvZGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjQ4MjA2ZmQ3Nzc3MmFjOTM4OGIwODYwZTI5ZjU1ODg1MGZlMzM5YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmNjCkBAIC0wLDAgKzEsNTk4IEBACisvKgorICog
IENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCisjaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKKwor
I2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNp
bmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKKworbmFtZXNwYWNlIGNyaWNrZXQgeworCitGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OkR0bWZJ
bmZvOjpEdG1mSW5mbyh1aW50MzJfdCBzc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGV2ZW50X2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgZHVyYXRpb24pCisgICAgOiBzc3JjKHNzcmMpLCBldmVudF9j
b2RlKGV2ZW50X2NvZGUpLCBkdXJhdGlvbihkdXJhdGlvbikge30KKworRmFrZVZvaWNlTWVkaWFD
aGFubmVsOjpWb2ljZUNoYW5uZWxBdWRpb1Npbms6OlZvaWNlQ2hhbm5lbEF1ZGlvU2luaygKKyAg
ICBBdWRpb1NvdXJjZSogc291cmNlKQorICAgIDogc291cmNlXyhzb3VyY2UpIHsKKyAgc291cmNl
Xy0+U2V0U2luayh0aGlzKTsKK30KK0Zha2VWb2ljZU1lZGlhQ2hhbm5lbDo6Vm9pY2VDaGFubmVs
QXVkaW9TaW5rOjp+Vm9pY2VDaGFubmVsQXVkaW9TaW5rKCkgeworICBpZiAoc291cmNlXykgewor
ICAgIHNvdXJjZV8tPlNldFNpbmsobnVsbHB0cik7CisgIH0KK30KK3ZvaWQgRmFrZVZvaWNlTWVk
aWFDaGFubmVsOjpWb2ljZUNoYW5uZWxBdWRpb1Npbms6Ok9uRGF0YSgKKyAgICBjb25zdCB2b2lk
KiBhdWRpb19kYXRhLAorICAgIGludCBiaXRzX3Blcl9zYW1wbGUsCisgICAgaW50IHNhbXBsZV9y
YXRlLAorICAgIHNpemVfdCBudW1iZXJfb2ZfY2hhbm5lbHMsCisgICAgc2l6ZV90IG51bWJlcl9v
Zl9mcmFtZXMpIHt9Cit2b2lkIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6Vm9pY2VDaGFubmVsQXVk
aW9TaW5rOjpPbkNsb3NlKCkgeworICBzb3VyY2VfID0gbnVsbHB0cjsKK30KK0F1ZGlvU291cmNl
KiBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OlZvaWNlQ2hhbm5lbEF1ZGlvU2luazo6c291cmNlKCkg
Y29uc3QgeworICByZXR1cm4gc291cmNlXzsKK30KKworRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpG
YWtlVm9pY2VNZWRpYUNoYW5uZWwoRmFrZVZvaWNlRW5naW5lKiBlbmdpbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb09wdGlvbnMmIG9w
dGlvbnMpCisgICAgOiBlbmdpbmVfKGVuZ2luZSksIG1heF9icHNfKC0xKSB7CisgIG91dHB1dF9z
Y2FsaW5nc19bMF0gPSAxLjA7ICAvLyBGb3IgZGVmYXVsdCBjaGFubmVsLgorICBTZXRPcHRpb25z
KG9wdGlvbnMpOworfQorRmFrZVZvaWNlTWVkaWFDaGFubmVsOjp+RmFrZVZvaWNlTWVkaWFDaGFu
bmVsKCkgeworICBpZiAoZW5naW5lXykgeworICAgIGVuZ2luZV8tPlVucmVnaXN0ZXJDaGFubmVs
KHRoaXMpOworICB9Cit9Citjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgRmFrZVZvaWNl
TWVkaWFDaGFubmVsOjpyZWN2X2NvZGVjcygpIGNvbnN0IHsKKyAgcmV0dXJuIHJlY3ZfY29kZWNz
XzsKK30KK2NvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBGYWtlVm9pY2VNZWRpYUNoYW5u
ZWw6OnNlbmRfY29kZWNzKCkgY29uc3QgeworICByZXR1cm4gc2VuZF9jb2RlY3NfOworfQorY29u
c3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6Y29kZWNz
KCkgY29uc3QgeworICByZXR1cm4gc2VuZF9jb2RlY3MoKTsKK30KK2NvbnN0IHN0ZDo6dmVjdG9y
PEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6RHRtZkluZm8+JgorRmFrZVZvaWNlTWVkaWFDaGFubmVs
OjpkdG1mX2luZm9fcXVldWUoKSBjb25zdCB7CisgIHJldHVybiBkdG1mX2luZm9fcXVldWVfOwor
fQorY29uc3QgQXVkaW9PcHRpb25zJiBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6Om9wdGlvbnMoKSBj
b25zdCB7CisgIHJldHVybiBvcHRpb25zXzsKK30KK2ludCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6
Om1heF9icHMoKSBjb25zdCB7CisgIHJldHVybiBtYXhfYnBzXzsKK30KK2Jvb2wgRmFrZVZvaWNl
TWVkaWFDaGFubmVsOjpTZXRTZW5kUGFyYW1ldGVycygKKyAgICBjb25zdCBBdWRpb1NlbmRQYXJh
bWV0ZXJzJiBwYXJhbXMpIHsKKyAgc2V0X3NlbmRfcnRjcF9wYXJhbWV0ZXJzKHBhcmFtcy5ydGNw
KTsKKyAgcmV0dXJuIChTZXRTZW5kQ29kZWNzKHBhcmFtcy5jb2RlY3MpICYmCisgICAgICAgICAg
U2V0U2VuZEV4dG1hcEFsbG93TWl4ZWQocGFyYW1zLmV4dG1hcF9hbGxvd19taXhlZCkgJiYKKyAg
ICAgICAgICBTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJhbXMuZXh0ZW5zaW9ucykgJiYK
KyAgICAgICAgICBTZXRNYXhTZW5kQmFuZHdpZHRoKHBhcmFtcy5tYXhfYmFuZHdpZHRoX2Jwcykg
JiYKKyAgICAgICAgICBTZXRPcHRpb25zKHBhcmFtcy5vcHRpb25zKSk7Cit9Citib29sIEZha2VW
b2ljZU1lZGlhQ2hhbm5lbDo6U2V0UmVjdlBhcmFtZXRlcnMoCisgICAgY29uc3QgQXVkaW9SZWN2
UGFyYW1ldGVycyYgcGFyYW1zKSB7CisgIHNldF9yZWN2X3J0Y3BfcGFyYW1ldGVycyhwYXJhbXMu
cnRjcCk7CisgIHJldHVybiAoU2V0UmVjdkNvZGVjcyhwYXJhbXMuY29kZWNzKSAmJgorICAgICAg
ICAgIFNldFJlY3ZSdHBIZWFkZXJFeHRlbnNpb25zKHBhcmFtcy5leHRlbnNpb25zKSk7Cit9Cit2
b2lkIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0UGxheW91dChib29sIHBsYXlvdXQpIHsKKyAg
c2V0X3BsYXlvdXQocGxheW91dCk7Cit9Cit2b2lkIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0
U2VuZChib29sIHNlbmQpIHsKKyAgc2V0X3NlbmRpbmcoc2VuZCk7Cit9Citib29sIEZha2VWb2lj
ZU1lZGlhQ2hhbm5lbDo6U2V0QXVkaW9TZW5kKHVpbnQzMl90IHNzcmMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb09wdGlvbnMqIG9wdGlvbnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvU291cmNlKiBzb3Vy
Y2UpIHsKKyAgaWYgKCFTZXRMb2NhbFNvdXJjZShzc3JjLCBzb3VyY2UpKSB7CisgICAgcmV0dXJu
IGZhbHNlOworICB9CisgIGlmICghUnRwSGVscGVyPFZvaWNlTWVkaWFDaGFubmVsPjo6TXV0ZVN0
cmVhbShzc3JjLCAhZW5hYmxlKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAoZW5h
YmxlICYmIG9wdGlvbnMpIHsKKyAgICByZXR1cm4gU2V0T3B0aW9ucygqb3B0aW9ucyk7CisgIH0K
KyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6SGFzU291cmNl
KHVpbnQzMl90IHNzcmMpIGNvbnN0IHsKKyAgcmV0dXJuIGxvY2FsX3NpbmtzXy5maW5kKHNzcmMp
ICE9IGxvY2FsX3NpbmtzXy5lbmQoKTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpB
ZGRSZWN2U3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIHsKKyAgaWYgKCFSdHBIZWxwZXI8
Vm9pY2VNZWRpYUNoYW5uZWw+OjpBZGRSZWN2U3RyZWFtKHNwKSkKKyAgICByZXR1cm4gZmFsc2U7
CisgIG91dHB1dF9zY2FsaW5nc19bc3AuZmlyc3Rfc3NyYygpXSA9IDEuMDsKKyAgcmV0dXJuIHRy
dWU7Cit9Citib29sIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6UmVtb3ZlUmVjdlN0cmVhbSh1aW50
MzJfdCBzc3JjKSB7CisgIGlmICghUnRwSGVscGVyPFZvaWNlTWVkaWFDaGFubmVsPjo6UmVtb3Zl
UmVjdlN0cmVhbShzc3JjKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIG91dHB1dF9zY2FsaW5nc18u
ZXJhc2Uoc3NyYyk7CisgIHJldHVybiB0cnVlOworfQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5u
ZWw6OkNhbkluc2VydER0bWYoKSB7CisgIGZvciAoc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gc2VuZF9jb2RlY3NfLmJlZ2luKCk7CisgICAgICAgaXQgIT0gc2Vu
ZF9jb2RlY3NfLmVuZCgpOyArK2l0KSB7CisgICAgLy8gRmluZCB0aGUgRFRNRiB0ZWxlcGhvbmUg
ZXZlbnQgImNvZGVjIi4KKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShpdC0+bmFtZSwg
InRlbGVwaG9uZS1ldmVudCIpKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgIH0KKyAg
cmV0dXJuIGZhbHNlOworfQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6Okluc2VydER0bWYo
dWludDMyX3Qgc3NyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBldmVudF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGR1cmF0aW9uKSB7CisgIGR0bWZfaW5mb19xdWV1ZV8ucHVzaF9iYWNrKER0bWZJbmZvKHNzcmMs
IGV2ZW50X2NvZGUsIGR1cmF0aW9uKSk7CisgIHJldHVybiB0cnVlOworfQorYm9vbCBGYWtlVm9p
Y2VNZWRpYUNoYW5uZWw6OlNldE91dHB1dFZvbHVtZSh1aW50MzJfdCBzc3JjLCBkb3VibGUgdm9s
dW1lKSB7CisgIGlmICgwID09IHNzcmMpIHsKKyAgICBzdGQ6Om1hcDx1aW50MzJfdCwgZG91Ymxl
Pjo6aXRlcmF0b3IgaXQ7CisgICAgZm9yIChpdCA9IG91dHB1dF9zY2FsaW5nc18uYmVnaW4oKTsg
aXQgIT0gb3V0cHV0X3NjYWxpbmdzXy5lbmQoKTsgKytpdCkgeworICAgICAgaXQtPnNlY29uZCA9
IHZvbHVtZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH0gZWxzZSBpZiAob3V0cHV0X3Nj
YWxpbmdzXy5maW5kKHNzcmMpICE9IG91dHB1dF9zY2FsaW5nc18uZW5kKCkpIHsKKyAgICBvdXRw
dXRfc2NhbGluZ3NfW3NzcmNdID0gdm9sdW1lOworICAgIHJldHVybiB0cnVlOworICB9CisgIHJl
dHVybiBmYWxzZTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpHZXRPdXRwdXRWb2x1
bWUodWludDMyX3Qgc3NyYywgZG91YmxlKiB2b2x1bWUpIHsKKyAgaWYgKG91dHB1dF9zY2FsaW5n
c18uZmluZChzc3JjKSA9PSBvdXRwdXRfc2NhbGluZ3NfLmVuZCgpKQorICAgIHJldHVybiBmYWxz
ZTsKKyAgKnZvbHVtZSA9IG91dHB1dF9zY2FsaW5nc19bc3NyY107CisgIHJldHVybiB0cnVlOwor
fQorYm9vbCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OkdldFN0YXRzKFZvaWNlTWVkaWFJbmZvKiBp
bmZvKSB7CisgIHJldHVybiBmYWxzZTsKK30KK3ZvaWQgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpT
ZXRSYXdBdWRpb1NpbmsoCisgICAgdWludDMyX3Qgc3NyYywKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpBdWRpb1NpbmtJbnRlcmZhY2U+IHNpbmspIHsKKyAgc2lua18gPSBzdGQ6Om1vdmUo
c2luayk7Cit9CitzdGQ6OnZlY3Rvcjx3ZWJydGM6OlJ0cFNvdXJjZT4gRmFrZVZvaWNlTWVkaWFD
aGFubmVsOjpHZXRTb3VyY2VzKAorICAgIHVpbnQzMl90IHNzcmMpIGNvbnN0IHsKKyAgcmV0dXJu
IHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNlPigpOworfQorYm9vbCBGYWtlVm9pY2VNZWRp
YUNoYW5uZWw6OlNldFJlY3ZDb2RlY3MoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2Rl
Yz4mIGNvZGVjcykgeworICBpZiAoZmFpbF9zZXRfcmVjdl9jb2RlY3MoKSkgeworICAgIC8vIEZh
a2UgdGhlIGZhaWx1cmUgaW4gU2V0UmVjdkNvZGVjcy4KKyAgICByZXR1cm4gZmFsc2U7CisgIH0K
KyAgcmVjdl9jb2RlY3NfID0gY29kZWNzOworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZv
aWNlTWVkaWFDaGFubmVsOjpTZXRTZW5kQ29kZWNzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEF1
ZGlvQ29kZWM+JiBjb2RlY3MpIHsKKyAgaWYgKGZhaWxfc2V0X3NlbmRfY29kZWNzKCkpIHsKKyAg
ICAvLyBGYWtlIHRoZSBmYWlsdXJlIGluIFNldFNlbmRDb2RlY3MuCisgICAgcmV0dXJuIGZhbHNl
OworICB9CisgIHNlbmRfY29kZWNzXyA9IGNvZGVjczsKKyAgcmV0dXJuIHRydWU7Cit9Citib29s
IEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6U2V0TWF4U2VuZEJhbmR3aWR0aChpbnQgYnBzKSB7Cisg
IG1heF9icHNfID0gYnBzOworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZvaWNlTWVkaWFD
aGFubmVsOjpTZXRPcHRpb25zKGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykgeworICAvLyBE
b2VzIGEgIm1lcmdlIiBvZiBjdXJyZW50IG9wdGlvbnMgYW5kIHNldCBvcHRpb25zLgorICBvcHRp
b25zXy5TZXRBbGwob3B0aW9ucyk7CisgIHJldHVybiB0cnVlOworfQorYm9vbCBGYWtlVm9pY2VN
ZWRpYUNoYW5uZWw6OlNldExvY2FsU291cmNlKHVpbnQzMl90IHNzcmMsIEF1ZGlvU291cmNlKiBz
b3VyY2UpIHsKKyAgYXV0byBpdCA9IGxvY2FsX3NpbmtzXy5maW5kKHNzcmMpOworICBpZiAoc291
cmNlKSB7CisgICAgaWYgKGl0ICE9IGxvY2FsX3NpbmtzXy5lbmQoKSkgeworICAgICAgUlRDX0NI
RUNLKGl0LT5zZWNvbmQtPnNvdXJjZSgpID09IHNvdXJjZSk7CisgICAgfSBlbHNlIHsKKyAgICAg
IGxvY2FsX3NpbmtzXy5pbnNlcnQoc3RkOjptYWtlX3BhaXIoCisgICAgICAgICAgc3NyYywgYWJz
bDo6bWFrZV91bmlxdWU8Vm9pY2VDaGFubmVsQXVkaW9TaW5rPihzb3VyY2UpKSk7CisgICAgfQor
ICB9IGVsc2UgeworICAgIGlmIChpdCAhPSBsb2NhbF9zaW5rc18uZW5kKCkpIHsKKyAgICAgIGxv
Y2FsX3NpbmtzXy5lcmFzZShpdCk7CisgICAgfQorICB9CisgIHJldHVybiB0cnVlOworfQorCiti
b29sIENvbXBhcmVEdG1mSW5mbyhjb25zdCBGYWtlVm9pY2VNZWRpYUNoYW5uZWw6OkR0bWZJbmZv
JiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYywKKyAgICAgICAgICAg
ICAgICAgICAgIGludCBldmVudF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgaW50IGR1cmF0
aW9uKSB7CisgIHJldHVybiAoaW5mby5kdXJhdGlvbiA9PSBkdXJhdGlvbiAmJiBpbmZvLmV2ZW50
X2NvZGUgPT0gZXZlbnRfY29kZSAmJgorICAgICAgICAgIGluZm8uc3NyYyA9PSBzc3JjKTsKK30K
KworRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpGYWtlVmlkZW9NZWRpYUNoYW5uZWwoRmFrZVZpZGVv
RW5naW5lKiBlbmdpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBlbmdpbmVfKGVuZ2luZSks
IG1heF9icHNfKC0xKSB7CisgIFNldE9wdGlvbnMob3B0aW9ucyk7Cit9CitGYWtlVmlkZW9NZWRp
YUNoYW5uZWw6On5GYWtlVmlkZW9NZWRpYUNoYW5uZWwoKSB7CisgIGlmIChlbmdpbmVfKSB7Cisg
ICAgZW5naW5lXy0+VW5yZWdpc3RlckNoYW5uZWwodGhpcyk7CisgIH0KK30KK2NvbnN0IHN0ZDo6
dmVjdG9yPFZpZGVvQ29kZWM+JiBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OnJlY3ZfY29kZWNzKCkg
Y29uc3QgeworICByZXR1cm4gcmVjdl9jb2RlY3NfOworfQorY29uc3Qgc3RkOjp2ZWN0b3I8Vmlk
ZW9Db2RlYz4mIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6c2VuZF9jb2RlY3MoKSBjb25zdCB7Cisg
IHJldHVybiBzZW5kX2NvZGVjc187Cit9Citjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYg
RmFrZVZpZGVvTWVkaWFDaGFubmVsOjpjb2RlY3MoKSBjb25zdCB7CisgIHJldHVybiBzZW5kX2Nv
ZGVjcygpOworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OnJlbmRlcmluZygpIGNvbnN0
IHsKKyAgcmV0dXJuIHBsYXlvdXQoKTsKK30KK2NvbnN0IFZpZGVvT3B0aW9ucyYgRmFrZVZpZGVv
TWVkaWFDaGFubmVsOjpvcHRpb25zKCkgY29uc3QgeworICByZXR1cm4gb3B0aW9uc187Cit9Citj
b25zdCBzdGQ6Om1hcDx1aW50MzJfdCwgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpW
aWRlb0ZyYW1lPio+JgorRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpzaW5rcygpIGNvbnN0IHsKKyAg
cmV0dXJuIHNpbmtzXzsKK30KK2ludCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6Om1heF9icHMoKSBj
b25zdCB7CisgIHJldHVybiBtYXhfYnBzXzsKK30KK2Jvb2wgRmFrZVZpZGVvTWVkaWFDaGFubmVs
OjpTZXRTZW5kUGFyYW1ldGVycygKKyAgICBjb25zdCBWaWRlb1NlbmRQYXJhbWV0ZXJzJiBwYXJh
bXMpIHsKKyAgc2V0X3NlbmRfcnRjcF9wYXJhbWV0ZXJzKHBhcmFtcy5ydGNwKTsKKyAgcmV0dXJu
IChTZXRTZW5kQ29kZWNzKHBhcmFtcy5jb2RlY3MpICYmCisgICAgICAgICAgU2V0U2VuZEV4dG1h
cEFsbG93TWl4ZWQocGFyYW1zLmV4dG1hcF9hbGxvd19taXhlZCkgJiYKKyAgICAgICAgICBTZXRT
ZW5kUnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJhbXMuZXh0ZW5zaW9ucykgJiYKKyAgICAgICAgICBT
ZXRNYXhTZW5kQmFuZHdpZHRoKHBhcmFtcy5tYXhfYmFuZHdpZHRoX2JwcykpOworfQorYm9vbCBG
YWtlVmlkZW9NZWRpYUNoYW5uZWw6OlNldFJlY3ZQYXJhbWV0ZXJzKAorICAgIGNvbnN0IFZpZGVv
UmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgeworICBzZXRfcmVjdl9ydGNwX3BhcmFtZXRlcnMocGFy
YW1zLnJ0Y3ApOworICByZXR1cm4gKFNldFJlY3ZDb2RlY3MocGFyYW1zLmNvZGVjcykgJiYKKyAg
ICAgICAgICBTZXRSZWN2UnRwSGVhZGVyRXh0ZW5zaW9ucyhwYXJhbXMuZXh0ZW5zaW9ucykpOwor
fQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OkFkZFNlbmRTdHJlYW0oY29uc3QgU3RyZWFt
UGFyYW1zJiBzcCkgeworICByZXR1cm4gUnRwSGVscGVyPFZpZGVvTWVkaWFDaGFubmVsPjo6QWRk
U2VuZFN0cmVhbShzcCk7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6UmVtb3ZlU2Vu
ZFN0cmVhbSh1aW50MzJfdCBzc3JjKSB7CisgIHJldHVybiBSdHBIZWxwZXI8VmlkZW9NZWRpYUNo
YW5uZWw+OjpSZW1vdmVTZW5kU3RyZWFtKHNzcmMpOworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNo
YW5uZWw6OkdldFNlbmRDb2RlYyhWaWRlb0NvZGVjKiBzZW5kX2NvZGVjKSB7CisgIGlmIChzZW5k
X2NvZGVjc18uZW1wdHkoKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICAqc2VuZF9jb2Rl
YyA9IHNlbmRfY29kZWNzX1swXTsKKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VWaWRlb01l
ZGlhQ2hhbm5lbDo6U2V0U2luaygKKyAgICB1aW50MzJfdCBzc3JjLAorICAgIHJ0Yzo6VmlkZW9T
aW5rSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4qIHNpbmspIHsKKyAgaWYgKHNzcmMgIT0g
MCAmJiBzaW5rc18uZmluZChzc3JjKSA9PSBzaW5rc18uZW5kKCkpIHsKKyAgICByZXR1cm4gZmFs
c2U7CisgIH0KKyAgaWYgKHNzcmMgIT0gMCkgeworICAgIHNpbmtzX1tzc3JjXSA9IHNpbms7Cisg
IH0KKyAgcmV0dXJuIHRydWU7Cit9Citib29sIEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6SGFzU2lu
ayh1aW50MzJfdCBzc3JjKSBjb25zdCB7CisgIHJldHVybiBzaW5rc18uZmluZChzc3JjKSAhPSBz
aW5rc18uZW5kKCkgJiYgc2lua3NfLmF0KHNzcmMpICE9IG51bGxwdHI7Cit9Citib29sIEZha2VW
aWRlb01lZGlhQ2hhbm5lbDo6U2V0U2VuZChib29sIHNlbmQpIHsKKyAgcmV0dXJuIHNldF9zZW5k
aW5nKHNlbmQpOworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OlNldFZpZGVvU2VuZCgK
KyAgICB1aW50MzJfdCBzc3JjLAorICAgIGNvbnN0IFZpZGVvT3B0aW9ucyogb3B0aW9ucywKKyAg
ICBydGM6OlZpZGVvU291cmNlSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4qIHNvdXJjZSkg
eworICBpZiAob3B0aW9ucykgeworICAgIGlmICghU2V0T3B0aW9ucygqb3B0aW9ucykpIHsKKyAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKyAgc291cmNlc19bc3NyY10gPSBzb3VyY2U7
CisgIHJldHVybiB0cnVlOworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6Okhhc1NvdXJj
ZSh1aW50MzJfdCBzc3JjKSBjb25zdCB7CisgIHJldHVybiBzb3VyY2VzXy5maW5kKHNzcmMpICE9
IHNvdXJjZXNfLmVuZCgpICYmIHNvdXJjZXNfLmF0KHNzcmMpICE9IG51bGxwdHI7Cit9Citib29s
IEZha2VWaWRlb01lZGlhQ2hhbm5lbDo6QWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMm
IHNwKSB7CisgIGlmICghUnRwSGVscGVyPFZpZGVvTWVkaWFDaGFubmVsPjo6QWRkUmVjdlN0cmVh
bShzcCkpCisgICAgcmV0dXJuIGZhbHNlOworICBzaW5rc19bc3AuZmlyc3Rfc3NyYygpXSA9IE5V
TEw7CisgIHJldHVybiB0cnVlOworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5uZWw6OlJlbW92
ZVJlY3ZTdHJlYW0odWludDMyX3Qgc3NyYykgeworICBpZiAoIVJ0cEhlbHBlcjxWaWRlb01lZGlh
Q2hhbm5lbD46OlJlbW92ZVJlY3ZTdHJlYW0oc3NyYykpCisgICAgcmV0dXJuIGZhbHNlOworICBz
aW5rc18uZXJhc2Uoc3NyYyk7CisgIHJldHVybiB0cnVlOworfQordm9pZCBGYWtlVmlkZW9NZWRp
YUNoYW5uZWw6OkZpbGxCaXRyYXRlSW5mbyhCYW5kd2lkdGhFc3RpbWF0aW9uSW5mbyogYndlX2lu
Zm8pIHsKK30KK2Jvb2wgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpHZXRTdGF0cyhWaWRlb01lZGlh
SW5mbyogaW5mbykgeworICByZXR1cm4gZmFsc2U7Cit9CitzdGQ6OnZlY3Rvcjx3ZWJydGM6OlJ0
cFNvdXJjZT4gRmFrZVZpZGVvTWVkaWFDaGFubmVsOjpHZXRTb3VyY2VzKAorICAgIHVpbnQzMl90
IHNzcmMpIGNvbnN0IHsKKyAgcmV0dXJuIHt9OworfQorYm9vbCBGYWtlVmlkZW9NZWRpYUNoYW5u
ZWw6OlNldFJlY3ZDb2RlY3MoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNv
ZGVjcykgeworICBpZiAoZmFpbF9zZXRfcmVjdl9jb2RlY3MoKSkgeworICAgIC8vIEZha2UgdGhl
IGZhaWx1cmUgaW4gU2V0UmVjdkNvZGVjcy4KKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmVj
dl9jb2RlY3NfID0gY29kZWNzOworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZVZpZGVvTWVk
aWFDaGFubmVsOjpTZXRTZW5kQ29kZWNzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29k
ZWM+JiBjb2RlY3MpIHsKKyAgaWYgKGZhaWxfc2V0X3NlbmRfY29kZWNzKCkpIHsKKyAgICAvLyBG
YWtlIHRoZSBmYWlsdXJlIGluIFNldFNlbmRDb2RlY3MuCisgICAgcmV0dXJuIGZhbHNlOworICB9
CisgIHNlbmRfY29kZWNzXyA9IGNvZGVjczsKKworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFr
ZVZpZGVvTWVkaWFDaGFubmVsOjpTZXRPcHRpb25zKGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9u
cykgeworICBvcHRpb25zXyA9IG9wdGlvbnM7CisgIHJldHVybiB0cnVlOworfQorYm9vbCBGYWtl
VmlkZW9NZWRpYUNoYW5uZWw6OlNldE1heFNlbmRCYW5kd2lkdGgoaW50IGJwcykgeworICBtYXhf
YnBzXyA9IGJwczsKKyAgcmV0dXJuIHRydWU7Cit9CisKK0Zha2VEYXRhTWVkaWFDaGFubmVsOjpG
YWtlRGF0YU1lZGlhQ2hhbm5lbCh2b2lkKiB1bnVzZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGF0YU9wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBz
ZW5kX2Jsb2NrZWRfKGZhbHNlKSwgbWF4X2Jwc18oLTEpIHt9CitGYWtlRGF0YU1lZGlhQ2hhbm5l
bDo6fkZha2VEYXRhTWVkaWFDaGFubmVsKCkge30KK2NvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2Rl
Yz4mIEZha2VEYXRhTWVkaWFDaGFubmVsOjpyZWN2X2NvZGVjcygpIGNvbnN0IHsKKyAgcmV0dXJu
IHJlY3ZfY29kZWNzXzsKK30KK2NvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIEZha2VEYXRh
TWVkaWFDaGFubmVsOjpzZW5kX2NvZGVjcygpIGNvbnN0IHsKKyAgcmV0dXJuIHNlbmRfY29kZWNz
XzsKK30KK2NvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIEZha2VEYXRhTWVkaWFDaGFubmVs
Ojpjb2RlY3MoKSBjb25zdCB7CisgIHJldHVybiBzZW5kX2NvZGVjcygpOworfQoraW50IEZha2VE
YXRhTWVkaWFDaGFubmVsOjptYXhfYnBzKCkgY29uc3QgeworICByZXR1cm4gbWF4X2Jwc187Cit9
Citib29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBEYXRh
U2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgeworICBzZXRfc2VuZF9ydGNwX3BhcmFtZXRlcnMocGFy
YW1zLnJ0Y3ApOworICByZXR1cm4gKFNldFNlbmRDb2RlY3MocGFyYW1zLmNvZGVjcykgJiYKKyAg
ICAgICAgICBTZXRNYXhTZW5kQmFuZHdpZHRoKHBhcmFtcy5tYXhfYmFuZHdpZHRoX2JwcykpOwor
fQorYm9vbCBGYWtlRGF0YU1lZGlhQ2hhbm5lbDo6U2V0UmVjdlBhcmFtZXRlcnMoY29uc3QgRGF0
YVJlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKKyAgc2V0X3JlY3ZfcnRjcF9wYXJhbWV0ZXJzKHBh
cmFtcy5ydGNwKTsKKyAgcmV0dXJuIFNldFJlY3ZDb2RlY3MocGFyYW1zLmNvZGVjcyk7Cit9Citi
b29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpTZXRTZW5kKGJvb2wgc2VuZCkgeworICByZXR1cm4g
c2V0X3NlbmRpbmcoc2VuZCk7Cit9Citib29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpTZXRSZWNl
aXZlKGJvb2wgcmVjZWl2ZSkgeworICBzZXRfcGxheW91dChyZWNlaXZlKTsKKyAgcmV0dXJuIHRy
dWU7Cit9Citib29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpBZGRSZWN2U3RyZWFtKGNvbnN0IFN0
cmVhbVBhcmFtcyYgc3ApIHsKKyAgaWYgKCFSdHBIZWxwZXI8RGF0YU1lZGlhQ2hhbm5lbD46OkFk
ZFJlY3ZTdHJlYW0oc3ApKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9Citi
b29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpSZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMp
IHsKKyAgaWYgKCFSdHBIZWxwZXI8RGF0YU1lZGlhQ2hhbm5lbD46OlJlbW92ZVJlY3ZTdHJlYW0o
c3NyYykpCisgICAgcmV0dXJuIGZhbHNlOworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZURh
dGFNZWRpYUNoYW5uZWw6OlNlbmREYXRhKGNvbnN0IFNlbmREYXRhUGFyYW1zJiBwYXJhbXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRl
QnVmZmVyJiBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vu
ZERhdGFSZXN1bHQqIHJlc3VsdCkgeworICBpZiAoc2VuZF9ibG9ja2VkXykgeworICAgICpyZXN1
bHQgPSBTRFJfQkxPQ0s7CisgICAgcmV0dXJuIGZhbHNlOworICB9IGVsc2UgeworICAgIGxhc3Rf
c2VudF9kYXRhX3BhcmFtc18gPSBwYXJhbXM7CisgICAgbGFzdF9zZW50X2RhdGFfID0gc3RkOjpz
dHJpbmcocGF5bG9hZC5kYXRhPGNoYXI+KCksIHBheWxvYWQuc2l6ZSgpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKKyAgfQorfQorU2VuZERhdGFQYXJhbXMgRmFrZURhdGFNZWRpYUNoYW5uZWw6Omxhc3Rf
c2VudF9kYXRhX3BhcmFtcygpIHsKKyAgcmV0dXJuIGxhc3Rfc2VudF9kYXRhX3BhcmFtc187Cit9
CitzdGQ6OnN0cmluZyBGYWtlRGF0YU1lZGlhQ2hhbm5lbDo6bGFzdF9zZW50X2RhdGEoKSB7Cisg
IHJldHVybiBsYXN0X3NlbnRfZGF0YV87Cit9Citib29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpp
c19zZW5kX2Jsb2NrZWQoKSB7CisgIHJldHVybiBzZW5kX2Jsb2NrZWRfOworfQordm9pZCBGYWtl
RGF0YU1lZGlhQ2hhbm5lbDo6c2V0X3NlbmRfYmxvY2tlZChib29sIGJsb2NrZWQpIHsKKyAgc2Vu
ZF9ibG9ja2VkXyA9IGJsb2NrZWQ7Cit9Citib29sIEZha2VEYXRhTWVkaWFDaGFubmVsOjpTZXRS
ZWN2Q29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGNvZGVjcykgeworICBpZiAo
ZmFpbF9zZXRfcmVjdl9jb2RlY3MoKSkgeworICAgIC8vIEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0
UmVjdkNvZGVjcy4KKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmVjdl9jb2RlY3NfID0gY29k
ZWNzOworICByZXR1cm4gdHJ1ZTsKK30KK2Jvb2wgRmFrZURhdGFNZWRpYUNoYW5uZWw6OlNldFNl
bmRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVjPiYgY29kZWNzKSB7CisgIGlmIChm
YWlsX3NldF9zZW5kX2NvZGVjcygpKSB7CisgICAgLy8gRmFrZSB0aGUgZmFpbHVyZSBpbiBTZXRT
ZW5kQ29kZWNzLgorICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBzZW5kX2NvZGVjc18gPSBjb2Rl
Y3M7CisgIHJldHVybiB0cnVlOworfQorYm9vbCBGYWtlRGF0YU1lZGlhQ2hhbm5lbDo6U2V0TWF4
U2VuZEJhbmR3aWR0aChpbnQgYnBzKSB7CisgIG1heF9icHNfID0gYnBzOworICByZXR1cm4gdHJ1
ZTsKK30KKworRmFrZVZvaWNlRW5naW5lOjpGYWtlVm9pY2VFbmdpbmUoKSA6IGZhaWxfY3JlYXRl
X2NoYW5uZWxfKGZhbHNlKSB7CisgIC8vIEFkZCBhIGZha2UgYXVkaW8gY29kZWMuIE5vdGUgdGhh
dCB0aGUgbmFtZSBtdXN0IG5vdCBiZSAiIiBhcyB0aGVyZSBhcmUKKyAgLy8gc2FuaXR5IGNoZWNr
cyBhZ2FpbnN0IHRoYXQuCisgIGNvZGVjc18ucHVzaF9iYWNrKEF1ZGlvQ29kZWMoMTAxLCAiZmFr
ZV9hdWRpb19jb2RlYyIsIDAsIDAsIDEpKTsKK30KK1J0cENhcGFiaWxpdGllcyBGYWtlVm9pY2VF
bmdpbmU6OkdldENhcGFiaWxpdGllcygpIGNvbnN0IHsKKyAgcmV0dXJuIFJ0cENhcGFiaWxpdGll
cygpOworfQordm9pZCBGYWtlVm9pY2VFbmdpbmU6OkluaXQoKSB7fQorcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4gRmFrZVZvaWNlRW5naW5lOjpHZXRBdWRpb1N0YXRlKCkg
Y29uc3QgeworICByZXR1cm4gcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4o
KTsKK30KK1ZvaWNlTWVkaWFDaGFubmVsKiBGYWtlVm9pY2VFbmdpbmU6OkNyZWF0ZU1lZGlhQ2hh
bm5lbCgKKyAgICB3ZWJydGM6OkNhbGwqIGNhbGwsCisgICAgY29uc3QgTWVkaWFDb25maWcmIGNv
bmZpZywKKyAgICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMsCisgICAgY29uc3Qgd2VicnRj
OjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykgeworICBpZiAoZmFpbF9jcmVhdGVfY2hh
bm5lbF8pIHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisgIEZha2VWb2ljZU1lZGlhQ2hh
bm5lbCogY2ggPSBuZXcgRmFrZVZvaWNlTWVkaWFDaGFubmVsKHRoaXMsIG9wdGlvbnMpOworICBj
aGFubmVsc18ucHVzaF9iYWNrKGNoKTsKKyAgcmV0dXJuIGNoOworfQorRmFrZVZvaWNlTWVkaWFD
aGFubmVsKiBGYWtlVm9pY2VFbmdpbmU6OkdldENoYW5uZWwoc2l6ZV90IGluZGV4KSB7CisgIHJl
dHVybiAoY2hhbm5lbHNfLnNpemUoKSA+IGluZGV4KSA/IGNoYW5uZWxzX1tpbmRleF0gOiBOVUxM
OworfQordm9pZCBGYWtlVm9pY2VFbmdpbmU6OlVucmVnaXN0ZXJDaGFubmVsKFZvaWNlTWVkaWFD
aGFubmVsKiBjaGFubmVsKSB7CisgIGNoYW5uZWxzXy5lcmFzZShzdGQ6OmZpbmQoY2hhbm5lbHNf
LmJlZ2luKCksIGNoYW5uZWxzXy5lbmQoKSwgY2hhbm5lbCkpOworfQorY29uc3Qgc3RkOjp2ZWN0
b3I8QXVkaW9Db2RlYz4mIEZha2VWb2ljZUVuZ2luZTo6c2VuZF9jb2RlY3MoKSBjb25zdCB7Cisg
IHJldHVybiBjb2RlY3NfOworfQorY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIEZha2VW
b2ljZUVuZ2luZTo6cmVjdl9jb2RlY3MoKSBjb25zdCB7CisgIHJldHVybiBjb2RlY3NfOworfQor
dm9pZCBGYWtlVm9pY2VFbmdpbmU6OlNldENvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0Nv
ZGVjPiYgY29kZWNzKSB7CisgIGNvZGVjc18gPSBjb2RlY3M7Cit9CitpbnQgRmFrZVZvaWNlRW5n
aW5lOjpHZXRJbnB1dExldmVsKCkgeworICByZXR1cm4gMDsKK30KK2Jvb2wgRmFrZVZvaWNlRW5n
aW5lOjpTdGFydEFlY0R1bXAocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBtYXhfc2l6ZV9ieXRlcykgeworICByZXR1cm4g
ZmFsc2U7Cit9Cit2b2lkIEZha2VWb2ljZUVuZ2luZTo6U3RvcEFlY0R1bXAoKSB7fQorYm9vbCBG
YWtlVm9pY2VFbmdpbmU6OlN0YXJ0UnRjRXZlbnRMb2cocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgbWF4X3NpemVf
Ynl0ZXMpIHsKKyAgcmV0dXJuIGZhbHNlOworfQordm9pZCBGYWtlVm9pY2VFbmdpbmU6OlN0b3BS
dGNFdmVudExvZygpIHt9CisKK0Zha2VWaWRlb0VuZ2luZTo6RmFrZVZpZGVvRW5naW5lKCkKKyAg
ICA6IGNhcHR1cmVfKGZhbHNlKSwgZmFpbF9jcmVhdGVfY2hhbm5lbF8oZmFsc2UpIHsKKyAgLy8g
QWRkIGEgZmFrZSB2aWRlbyBjb2RlYy4gTm90ZSB0aGF0IHRoZSBuYW1lIG11c3Qgbm90IGJlICIi
IGFzIHRoZXJlIGFyZQorICAvLyBzYW5pdHkgY2hlY2tzIGFnYWluc3QgdGhhdC4KKyAgY29kZWNz
Xy5wdXNoX2JhY2soVmlkZW9Db2RlYygwLCAiZmFrZV92aWRlb19jb2RlYyIpKTsKK30KK1J0cENh
cGFiaWxpdGllcyBGYWtlVmlkZW9FbmdpbmU6OkdldENhcGFiaWxpdGllcygpIGNvbnN0IHsKKyAg
cmV0dXJuIFJ0cENhcGFiaWxpdGllcygpOworfQorYm9vbCBGYWtlVmlkZW9FbmdpbmU6OlNldE9w
dGlvbnMoY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKSB7CisgIG9wdGlvbnNfID0gb3B0aW9u
czsKKyAgcmV0dXJuIHRydWU7Cit9CitWaWRlb01lZGlhQ2hhbm5lbCogRmFrZVZpZGVvRW5naW5l
OjpDcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgd2VicnRjOjpDYWxsKiBjYWxsLAorICAgIGNvbnN0
IE1lZGlhQ29uZmlnJiBjb25maWcsCisgICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zLAor
ICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIHsKKyAgaWYg
KGZhaWxfY3JlYXRlX2NoYW5uZWxfKSB7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKworICBG
YWtlVmlkZW9NZWRpYUNoYW5uZWwqIGNoID0gbmV3IEZha2VWaWRlb01lZGlhQ2hhbm5lbCh0aGlz
LCBvcHRpb25zKTsKKyAgY2hhbm5lbHNfLmVtcGxhY2VfYmFjayhjaCk7CisgIHJldHVybiBjaDsK
K30KK0Zha2VWaWRlb01lZGlhQ2hhbm5lbCogRmFrZVZpZGVvRW5naW5lOjpHZXRDaGFubmVsKHNp
emVfdCBpbmRleCkgeworICByZXR1cm4gKGNoYW5uZWxzXy5zaXplKCkgPiBpbmRleCkgPyBjaGFu
bmVsc19baW5kZXhdIDogbnVsbHB0cjsKK30KK3ZvaWQgRmFrZVZpZGVvRW5naW5lOjpVbnJlZ2lz
dGVyQ2hhbm5lbChWaWRlb01lZGlhQ2hhbm5lbCogY2hhbm5lbCkgeworICBhdXRvIGl0ID0gc3Rk
OjpmaW5kKGNoYW5uZWxzXy5iZWdpbigpLCBjaGFubmVsc18uZW5kKCksIGNoYW5uZWwpOworICBS
VENfRENIRUNLKGl0ICE9IGNoYW5uZWxzXy5lbmQoKSk7CisgIGNoYW5uZWxzXy5lcmFzZShpdCk7
Cit9CitzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiBGYWtlVmlkZW9FbmdpbmU6OmNvZGVjcygpIGNv
bnN0IHsKKyAgcmV0dXJuIGNvZGVjc187Cit9Cit2b2lkIEZha2VWaWRlb0VuZ2luZTo6U2V0Q29k
ZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IGNvZGVjcykgeworICBjb2RlY3NfID0g
Y29kZWNzOworfQorYm9vbCBGYWtlVmlkZW9FbmdpbmU6OlNldENhcHR1cmUoYm9vbCBjYXB0dXJl
KSB7CisgIGNhcHR1cmVfID0gY2FwdHVyZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK0Zha2VNZWRp
YUVuZ2luZTo6RmFrZU1lZGlhRW5naW5lKCkKKyAgICA6IENvbXBvc2l0ZU1lZGlhRW5naW5lKGFi
c2w6Om1ha2VfdW5pcXVlPEZha2VWb2ljZUVuZ2luZT4oKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VWaWRlb0VuZ2luZT4oKSksCisgICAgICB2b2lj
ZV8oc3RhdGljX2Nhc3Q8RmFrZVZvaWNlRW5naW5lKj4oJnZvaWNlKCkpKSwKKyAgICAgIHZpZGVv
XyhzdGF0aWNfY2FzdDxGYWtlVmlkZW9FbmdpbmUqPigmdmlkZW8oKSkpIHt9CitGYWtlTWVkaWFF
bmdpbmU6On5GYWtlTWVkaWFFbmdpbmUoKSB7fQordm9pZCBGYWtlTWVkaWFFbmdpbmU6OlNldEF1
ZGlvQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MpIHsKKyAgdm9p
Y2VfLT5TZXRDb2RlY3MoY29kZWNzKTsKK30KK3ZvaWQgRmFrZU1lZGlhRW5naW5lOjpTZXRWaWRl
b0NvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKSB7CisgIHZpZGVv
Xy0+U2V0Q29kZWNzKGNvZGVjcyk7Cit9CisKK0Zha2VWb2ljZU1lZGlhQ2hhbm5lbCogRmFrZU1l
ZGlhRW5naW5lOjpHZXRWb2ljZUNoYW5uZWwoc2l6ZV90IGluZGV4KSB7CisgIHJldHVybiB2b2lj
ZV8tPkdldENoYW5uZWwoaW5kZXgpOworfQorRmFrZVZpZGVvTWVkaWFDaGFubmVsKiBGYWtlTWVk
aWFFbmdpbmU6OkdldFZpZGVvQ2hhbm5lbChzaXplX3QgaW5kZXgpIHsKKyAgcmV0dXJuIHZpZGVv
Xy0+R2V0Q2hhbm5lbChpbmRleCk7Cit9CisKK3ZvaWQgRmFrZU1lZGlhRW5naW5lOjpzZXRfZmFp
bF9jcmVhdGVfY2hhbm5lbChib29sIGZhaWwpIHsKKyAgdm9pY2VfLT5mYWlsX2NyZWF0ZV9jaGFu
bmVsXyA9IGZhaWw7CisgIHZpZGVvXy0+ZmFpbF9jcmVhdGVfY2hhbm5lbF8gPSBmYWlsOworfQor
CitEYXRhTWVkaWFDaGFubmVsKiBGYWtlRGF0YUVuZ2luZTo6Q3JlYXRlQ2hhbm5lbChjb25zdCBN
ZWRpYUNvbmZpZyYgY29uZmlnKSB7CisgIEZha2VEYXRhTWVkaWFDaGFubmVsKiBjaCA9IG5ldyBG
YWtlRGF0YU1lZGlhQ2hhbm5lbCh0aGlzLCBEYXRhT3B0aW9ucygpKTsKKyAgY2hhbm5lbHNfLnB1
c2hfYmFjayhjaCk7CisgIHJldHVybiBjaDsKK30KK0Zha2VEYXRhTWVkaWFDaGFubmVsKiBGYWtl
RGF0YUVuZ2luZTo6R2V0Q2hhbm5lbChzaXplX3QgaW5kZXgpIHsKKyAgcmV0dXJuIChjaGFubmVs
c18uc2l6ZSgpID4gaW5kZXgpID8gY2hhbm5lbHNfW2luZGV4XSA6IE5VTEw7Cit9Cit2b2lkIEZh
a2VEYXRhRW5naW5lOjpVbnJlZ2lzdGVyQ2hhbm5lbChEYXRhTWVkaWFDaGFubmVsKiBjaGFubmVs
KSB7CisgIGNoYW5uZWxzXy5lcmFzZShzdGQ6OmZpbmQoY2hhbm5lbHNfLmJlZ2luKCksIGNoYW5u
ZWxzXy5lbmQoKSwgY2hhbm5lbCkpOworfQordm9pZCBGYWtlRGF0YUVuZ2luZTo6U2V0RGF0YUNv
ZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+JiBkYXRhX2NvZGVjcykgeworICBkYXRh
X2NvZGVjc18gPSBkYXRhX2NvZGVjczsKK30KK2NvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4m
IEZha2VEYXRhRW5naW5lOjpkYXRhX2NvZGVjcygpIHsKKyAgcmV0dXJuIGRhdGFfY29kZWNzXzsK
K30KKworfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2Zh
a2VtZWRpYWVuZ2luZS5oCmluZGV4IDYyYmQ2YmE1YmE1MGYyMTRhNjlmOWY3MWJiNDM2ZjNlOWYx
NjFkZWEuLmUzYTA2Mzg3MTUyODJjYmE3YTIxYmIxZjc1ZGMxZWE2NmZjZDY0MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2Uv
ZmFrZW1lZGlhZW5naW5lLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaApAQCAtMTcsMTAgKzE3LDggQEAK
ICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHR1cGxlPgotI2lu
Y2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAiYWJzbC9tZW1v
cnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL2NhbGwvYXVkaW9fc2luay5oIgogI2luY2x1ZGUg
Im1lZGlhL2Jhc2UvYXVkaW9zb3VyY2UuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhZW5n
aW5lLmgiCkBAIC0yOCwxMCArMjYsOCBAQAogI2luY2x1ZGUgIm1lZGlhL2Jhc2Uvc3RyZWFtcGFy
YW1zLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvcHlv
bndyaXRlYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29ya3JvdXRlLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogdXNpbmcgd2VicnRjOjpSdHBFeHRlbnNp
b247CiAKQEAgLTEyOCw3ICsxMjQsNyBAQCBjbGFzcyBSdHBIZWxwZXIgOiBwdWJsaWMgQmFzZSB7
CiAgICAgfQogICAgIHJlY2VpdmVfc3RyZWFtc18ucHVzaF9iYWNrKHNwKTsKICAgICBydHBfcmVj
ZWl2ZV9wYXJhbWV0ZXJzX1tzcC5maXJzdF9zc3JjKCldID0KLSAgICAgICAgQ3JlYXRlUnRwUGFy
YW1ldGVyc1dpdGhPbmVFbmNvZGluZygpOworICAgICAgICBDcmVhdGVSdHBQYXJhbWV0ZXJzV2l0
aEVuY29kaW5ncyhzcCk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KICAgdmlydHVhbCBib29sIFJl
bW92ZVJlY3ZTdHJlYW0odWludDMyX3Qgc3NyYykgewpAQCAtMjU2LDYgKzI1MiwxMiBAQCBjbGFz
cyBSdHBIZWxwZXIgOiBwdWJsaWMgQmFzZSB7CiAgICAgcmVjdl9leHRlbnNpb25zXyA9IGV4dGVu
c2lvbnM7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KKyAgYm9vbCBTZXRTZW5kRXh0bWFwQWxsb3dN
aXhlZChib29sIGV4dG1hcF9hbGxvd19taXhlZCkgeworICAgIGlmIChCYXNlOjpFeHRtYXBBbGxv
d01peGVkKCkgIT0gZXh0bWFwX2FsbG93X21peGVkKSB7CisgICAgICBCYXNlOjpTZXRFeHRtYXBB
bGxvd01peGVkKGV4dG1hcF9hbGxvd19taXhlZCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
ICB9CiAgIGJvb2wgU2V0U2VuZFJ0cEhlYWRlckV4dGVuc2lvbnMoY29uc3Qgc3RkOjp2ZWN0b3I8
UnRwRXh0ZW5zaW9uPiYgZXh0ZW5zaW9ucykgewogICAgIHNlbmRfZXh0ZW5zaW9uc18gPSBleHRl
bnNpb25zOwogICAgIHJldHVybiB0cnVlOwpAQCAtMjY3LDExICsyNjksMTEgQEAgY2xhc3MgUnRw
SGVscGVyIDogcHVibGljIEJhc2UgewogICAgIHJlY3ZfcnRjcF9wYXJhbWV0ZXJzXyA9IHBhcmFt
czsKICAgfQogICB2aXJ0dWFsIHZvaWQgT25QYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRl
QnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICAgIHJ0cF9wYWNrZXRzXy5wdXNoX2Jh
Y2soc3RkOjpzdHJpbmcocGFja2V0LT5kYXRhPGNoYXI+KCksIHBhY2tldC0+c2l6ZSgpKSk7CiAg
IH0KICAgdmlydHVhbCB2b2lkIE9uUnRjcFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIq
IHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0
VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgICBydGNwX3BhY2tldHNfLnB1c2hfYmFjayhzdGQ6OnN0
cmluZyhwYWNrZXQtPmRhdGE8Y2hhcj4oKSwgcGFja2V0LT5zaXplKCkpKTsKICAgfQogICB2aXJ0
dWFsIHZvaWQgT25SZWFkeVRvU2VuZChib29sIHJlYWR5KSB7IHJlYWR5X3RvX3NlbmRfID0gcmVh
ZHk7IH0KQEAgLTMxMiwxODcgKzMxNCw3MiBAQCBjbGFzcyBSdHBIZWxwZXIgOiBwdWJsaWMgQmFz
ZSB7CiBjbGFzcyBGYWtlVm9pY2VNZWRpYUNoYW5uZWwgOiBwdWJsaWMgUnRwSGVscGVyPFZvaWNl
TWVkaWFDaGFubmVsPiB7CiAgcHVibGljOgogICBzdHJ1Y3QgRHRtZkluZm8gewotICAgIER0bWZJ
bmZvKHVpbnQzMl90IHNzcmMsIGludCBldmVudF9jb2RlLCBpbnQgZHVyYXRpb24pCi0gICAgICAg
IDogc3NyYyhzc3JjKSwgZXZlbnRfY29kZShldmVudF9jb2RlKSwgZHVyYXRpb24oZHVyYXRpb24p
IHt9CisgICAgRHRtZkluZm8odWludDMyX3Qgc3NyYywgaW50IGV2ZW50X2NvZGUsIGludCBkdXJh
dGlvbik7CiAgICAgdWludDMyX3Qgc3NyYzsKICAgICBpbnQgZXZlbnRfY29kZTsKICAgICBpbnQg
ZHVyYXRpb247CiAgIH07CiAgIGV4cGxpY2l0IEZha2VWb2ljZU1lZGlhQ2hhbm5lbChGYWtlVm9p
Y2VFbmdpbmUqIGVuZ2luZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykKLSAgICAgIDogZW5naW5lXyhlbmdpbmUpLCBtYXhfYnBz
XygtMSkgewotICAgIG91dHB1dF9zY2FsaW5nc19bMF0gPSAxLjA7ICAvLyBGb3IgZGVmYXVsdCBj
aGFubmVsLgotICAgIFNldE9wdGlvbnMob3B0aW9ucyk7Ci0gIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucyk7CiAgIH5GYWtlVm9p
Y2VNZWRpYUNoYW5uZWwoKTsKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHJlY3Zf
Y29kZWNzKCkgY29uc3QgeyByZXR1cm4gcmVjdl9jb2RlY3NfOyB9Ci0gIGNvbnN0IHN0ZDo6dmVj
dG9yPEF1ZGlvQ29kZWM+JiBzZW5kX2NvZGVjcygpIGNvbnN0IHsgcmV0dXJuIHNlbmRfY29kZWNz
XzsgfQotICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKCkgY29uc3QgeyBy
ZXR1cm4gc2VuZF9jb2RlY3MoKTsgfQotICBjb25zdCBzdGQ6OnZlY3RvcjxEdG1mSW5mbz4mIGR0
bWZfaW5mb19xdWV1ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gZHRtZl9pbmZvX3F1ZXVlXzsKLSAg
fQotICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBvcHRpb25z
XzsgfQotICBpbnQgbWF4X2JwcygpIGNvbnN0IHsgcmV0dXJuIG1heF9icHNfOyB9Ci0gIHZpcnR1
YWwgYm9vbCBTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBBdWRpb1NlbmRQYXJhbWV0ZXJzJiBwYXJh
bXMpIHsKLSAgICBzZXRfc2VuZF9ydGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOwotICAgIHJl
dHVybiAoU2V0U2VuZENvZGVjcyhwYXJhbXMuY29kZWNzKSAmJgotICAgICAgICAgICAgU2V0U2Vu
ZFJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1zLmV4dGVuc2lvbnMpICYmCi0gICAgICAgICAgICBT
ZXRNYXhTZW5kQmFuZHdpZHRoKHBhcmFtcy5tYXhfYmFuZHdpZHRoX2JwcykgJiYKLSAgICAgICAg
ICAgIFNldE9wdGlvbnMocGFyYW1zLm9wdGlvbnMpKTsKLSAgfQotCi0gIHZpcnR1YWwgYm9vbCBT
ZXRSZWN2UGFyYW1ldGVycyhjb25zdCBBdWRpb1JlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKLSAg
ICBzZXRfcmVjdl9ydGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOwotICAgIHJldHVybiAoU2V0
UmVjdkNvZGVjcyhwYXJhbXMuY29kZWNzKSAmJgotICAgICAgICAgICAgU2V0UmVjdlJ0cEhlYWRl
ckV4dGVuc2lvbnMocGFyYW1zLmV4dGVuc2lvbnMpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBT
ZXRQbGF5b3V0KGJvb2wgcGxheW91dCkgeyBzZXRfcGxheW91dChwbGF5b3V0KTsgfQotICB2aXJ0
dWFsIHZvaWQgU2V0U2VuZChib29sIHNlbmQpIHsgc2V0X3NlbmRpbmcoc2VuZCk7IH0KLSAgdmly
dHVhbCBib29sIFNldEF1ZGlvU2VuZCh1aW50MzJfdCBzc3JjLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEF1ZGlvT3B0aW9ucyogb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRp
b1NvdXJjZSogc291cmNlKSB7Ci0gICAgaWYgKCFTZXRMb2NhbFNvdXJjZShzc3JjLCBzb3VyY2Up
KSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmICghUnRwSGVscGVyPFZvaWNl
TWVkaWFDaGFubmVsPjo6TXV0ZVN0cmVhbShzc3JjLCAhZW5hYmxlKSkgewotICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICBpZiAoZW5hYmxlICYmIG9wdGlvbnMpIHsKLSAgICAgIHJldHVy
biBTZXRPcHRpb25zKCpvcHRpb25zKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAg
Y29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHJlY3ZfY29kZWNzKCkgY29uc3Q7CisgIGNv
bnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBzZW5kX2NvZGVjcygpIGNvbnN0OworICBjb25z
dCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKCkgY29uc3Q7CisgIGNvbnN0IHN0ZDo6
dmVjdG9yPER0bWZJbmZvPiYgZHRtZl9pbmZvX3F1ZXVlKCkgY29uc3Q7CisgIGNvbnN0IEF1ZGlv
T3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0OworICBpbnQgbWF4X2JwcygpIGNvbnN0OworICBib29s
IFNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0IEF1ZGlvU2VuZFBhcmFtZXRlcnMmIHBhcmFtcykgb3Zl
cnJpZGU7CiAKLSAgYm9vbCBIYXNTb3VyY2UodWludDMyX3Qgc3NyYykgY29uc3QgewotICAgIHJl
dHVybiBsb2NhbF9zaW5rc18uZmluZChzc3JjKSAhPSBsb2NhbF9zaW5rc18uZW5kKCk7Ci0gIH0K
KyAgYm9vbCBTZXRSZWN2UGFyYW1ldGVycyhjb25zdCBBdWRpb1JlY3ZQYXJhbWV0ZXJzJiBwYXJh
bXMpIG92ZXJyaWRlOwogCi0gIHZpcnR1YWwgYm9vbCBBZGRSZWN2U3RyZWFtKGNvbnN0IFN0cmVh
bVBhcmFtcyYgc3ApIHsKLSAgICBpZiAoIVJ0cEhlbHBlcjxWb2ljZU1lZGlhQ2hhbm5lbD46OkFk
ZFJlY3ZTdHJlYW0oc3ApKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG91dHB1dF9zY2FsaW5n
c19bc3AuZmlyc3Rfc3NyYygpXSA9IDEuMDsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICB2aXJ0
dWFsIGJvb2wgUmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSB7Ci0gICAgaWYgKCFSdHBI
ZWxwZXI8Vm9pY2VNZWRpYUNoYW5uZWw+OjpSZW1vdmVSZWN2U3RyZWFtKHNzcmMpKQotICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIG91dHB1dF9zY2FsaW5nc18uZXJhc2Uoc3NyYyk7Ci0gICAgcmV0
dXJuIHRydWU7Ci0gIH0KKyAgdm9pZCBTZXRQbGF5b3V0KGJvb2wgcGxheW91dCkgb3ZlcnJpZGU7
CisgIHZvaWQgU2V0U2VuZChib29sIHNlbmQpIG92ZXJyaWRlOworICBib29sIFNldEF1ZGlvU2Vu
ZCh1aW50MzJfdCBzc3JjLAorICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZSwKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQXVkaW9PcHRpb25zKiBvcHRpb25zLAorICAgICAgICAgICAg
ICAgICAgICBBdWRpb1NvdXJjZSogc291cmNlKSBvdmVycmlkZTsKIAotICB2aXJ0dWFsIGJvb2wg
Q2FuSW5zZXJ0RHRtZigpIHsKLSAgICBmb3IgKHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IHNlbmRfY29kZWNzXy5iZWdpbigpOwotICAgICAgICAgaXQgIT0gc2Vu
ZF9jb2RlY3NfLmVuZCgpOyArK2l0KSB7Ci0gICAgICAvLyBGaW5kIHRoZSBEVE1GIHRlbGVwaG9u
ZSBldmVudCAiY29kZWMiLgotICAgICAgaWYgKF9zdHJpY21wKGl0LT5uYW1lLmNfc3RyKCksICJ0
ZWxlcGhvbmUtZXZlbnQiKSA9PSAwKSB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQot
ICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgdmlydHVhbCBib29sIEluc2VydER0bWYo
dWludDMyX3Qgc3NyYywgaW50IGV2ZW50X2NvZGUsIGludCBkdXJhdGlvbikgewotICAgIGR0bWZf
aW5mb19xdWV1ZV8ucHVzaF9iYWNrKER0bWZJbmZvKHNzcmMsIGV2ZW50X2NvZGUsIGR1cmF0aW9u
KSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAgYm9vbCBIYXNTb3VyY2UodWludDMyX3Qgc3Ny
YykgY29uc3Q7CiAKLSAgdmlydHVhbCBib29sIFNldE91dHB1dFZvbHVtZSh1aW50MzJfdCBzc3Jj
LCBkb3VibGUgdm9sdW1lKSB7Ci0gICAgaWYgKDAgPT0gc3NyYykgewotICAgICAgc3RkOjptYXA8
dWludDMyX3QsIGRvdWJsZT46Oml0ZXJhdG9yIGl0OwotICAgICAgZm9yIChpdCA9IG91dHB1dF9z
Y2FsaW5nc18uYmVnaW4oKTsgaXQgIT0gb3V0cHV0X3NjYWxpbmdzXy5lbmQoKTsgKytpdCkgewot
ICAgICAgICBpdC0+c2Vjb25kID0gdm9sdW1lOwotICAgICAgfQotICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfSBlbHNlIGlmIChvdXRwdXRfc2NhbGluZ3NfLmZpbmQoc3NyYykgIT0gb3V0cHV0X3Nj
YWxpbmdzXy5lbmQoKSkgewotICAgICAgb3V0cHV0X3NjYWxpbmdzX1tzc3JjXSA9IHZvbHVtZTsK
LSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgYm9v
bCBHZXRPdXRwdXRWb2x1bWUodWludDMyX3Qgc3NyYywgZG91YmxlKiB2b2x1bWUpIHsKLSAgICBp
ZiAob3V0cHV0X3NjYWxpbmdzXy5maW5kKHNzcmMpID09IG91dHB1dF9zY2FsaW5nc18uZW5kKCkp
Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgKnZvbHVtZSA9IG91dHB1dF9zY2FsaW5nc19bc3Ny
Y107Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAgYm9vbCBBZGRSZWN2U3RyZWFtKGNvbnN0IFN0
cmVhbVBhcmFtcyYgc3ApIG92ZXJyaWRlOworICBib29sIFJlbW92ZVJlY3ZTdHJlYW0odWludDMy
X3Qgc3NyYykgb3ZlcnJpZGU7CisKKyAgYm9vbCBDYW5JbnNlcnREdG1mKCkgb3ZlcnJpZGU7Cisg
IGJvb2wgSW5zZXJ0RHRtZih1aW50MzJfdCBzc3JjLCBpbnQgZXZlbnRfY29kZSwgaW50IGR1cmF0
aW9uKSBvdmVycmlkZTsKKworICBib29sIFNldE91dHB1dFZvbHVtZSh1aW50MzJfdCBzc3JjLCBk
b3VibGUgdm9sdW1lKSBvdmVycmlkZTsKKyAgYm9vbCBHZXRPdXRwdXRWb2x1bWUodWludDMyX3Qg
c3NyYywgZG91YmxlKiB2b2x1bWUpOwogCi0gIHZpcnR1YWwgYm9vbCBHZXRTdGF0cyhWb2ljZU1l
ZGlhSW5mbyogaW5mbykgeyByZXR1cm4gZmFsc2U7IH0KKyAgYm9vbCBHZXRTdGF0cyhWb2ljZU1l
ZGlhSW5mbyogaW5mbykgb3ZlcnJpZGU7CiAKLSAgdmlydHVhbCB2b2lkIFNldFJhd0F1ZGlvU2lu
aygKKyAgdm9pZCBTZXRSYXdBdWRpb1NpbmsoCiAgICAgICB1aW50MzJfdCBzc3JjLAotICAgICAg
c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6QXVkaW9TaW5rSW50ZXJmYWNlPiBzaW5rKSB7Ci0gICAg
c2lua18gPSBzdGQ6Om1vdmUoc2luayk7Ci0gIH0KKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OkF1ZGlvU2lua0ludGVyZmFjZT4gc2luaykgb3ZlcnJpZGU7CiAKLSAgdmlydHVhbCBzdGQ6
OnZlY3Rvcjx3ZWJydGM6OlJ0cFNvdXJjZT4gR2V0U291cmNlcyh1aW50MzJfdCBzc3JjKSBjb25z
dCB7Ci0gICAgcmV0dXJuIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNlPigpOwotICB9Cisg
IHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNlPiBHZXRTb3VyY2VzKHVpbnQzMl90IHNzcmMp
IGNvbnN0IG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAgY2xhc3MgVm9pY2VDaGFubmVsQXVkaW9T
aW5rIDogcHVibGljIEF1ZGlvU291cmNlOjpTaW5rIHsKICAgIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBWb2ljZUNoYW5uZWxBdWRpb1NpbmsoQXVkaW9Tb3VyY2UqIHNvdXJjZSkgOiBzb3VyY2VfKHNv
dXJjZSkgewotICAgICAgc291cmNlXy0+U2V0U2luayh0aGlzKTsKLSAgICB9Ci0gICAgdmlydHVh
bCB+Vm9pY2VDaGFubmVsQXVkaW9TaW5rKCkgewotICAgICAgaWYgKHNvdXJjZV8pIHsKLSAgICAg
ICAgc291cmNlXy0+U2V0U2luayhudWxscHRyKTsKLSAgICAgIH0KLSAgICB9CisgICAgZXhwbGlj
aXQgVm9pY2VDaGFubmVsQXVkaW9TaW5rKEF1ZGlvU291cmNlKiBzb3VyY2UpOworICAgIH5Wb2lj
ZUNoYW5uZWxBdWRpb1NpbmsoKSBvdmVycmlkZTsKICAgICB2b2lkIE9uRGF0YShjb25zdCB2b2lk
KiBhdWRpb19kYXRhLAogICAgICAgICAgICAgICAgIGludCBiaXRzX3Blcl9zYW1wbGUsCiAgICAg
ICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlLAogICAgICAgICAgICAgICAgIHNpemVfdCBudW1i
ZXJfb2ZfY2hhbm5lbHMsCi0gICAgICAgICAgICAgICAgc2l6ZV90IG51bWJlcl9vZl9mcmFtZXMp
IG92ZXJyaWRlIHt9Ci0gICAgdm9pZCBPbkNsb3NlKCkgb3ZlcnJpZGUgeyBzb3VyY2VfID0gbnVs
bHB0cjsgfQotICAgIEF1ZGlvU291cmNlKiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBzb3VyY2Vf
OyB9CisgICAgICAgICAgICAgICAgc2l6ZV90IG51bWJlcl9vZl9mcmFtZXMpIG92ZXJyaWRlOwor
ICAgIHZvaWQgT25DbG9zZSgpIG92ZXJyaWRlOworICAgIEF1ZGlvU291cmNlKiBzb3VyY2UoKSBj
b25zdDsKIAogICAgcHJpdmF0ZToKICAgICBBdWRpb1NvdXJjZSogc291cmNlXzsKICAgfTsKIAot
ICBib29sIFNldFJlY3ZDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGNvZGVj
cykgewotICAgIGlmIChmYWlsX3NldF9yZWN2X2NvZGVjcygpKSB7Ci0gICAgICAvLyBGYWtlIHRo
ZSBmYWlsdXJlIGluIFNldFJlY3ZDb2RlY3MuCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIHJlY3ZfY29kZWNzXyA9IGNvZGVjczsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICBib29s
IFNldFNlbmRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGNvZGVjcykgewot
ICAgIGlmIChmYWlsX3NldF9zZW5kX2NvZGVjcygpKSB7Ci0gICAgICAvLyBGYWtlIHRoZSBmYWls
dXJlIGluIFNldFNlbmRDb2RlY3MuCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHNl
bmRfY29kZWNzXyA9IGNvZGVjczsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICBib29sIFNldE1h
eFNlbmRCYW5kd2lkdGgoaW50IGJwcykgewotICAgIG1heF9icHNfID0gYnBzOwotICAgIHJldHVy
biB0cnVlOwotICB9Ci0gIGJvb2wgU2V0T3B0aW9ucyhjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlv
bnMpIHsKLSAgICAvLyBEb2VzIGEgIm1lcmdlIiBvZiBjdXJyZW50IG9wdGlvbnMgYW5kIHNldCBv
cHRpb25zLgotICAgIG9wdGlvbnNfLlNldEFsbChvcHRpb25zKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LSAgfQotICBib29sIFNldExvY2FsU291cmNlKHVpbnQzMl90IHNzcmMsIEF1ZGlvU291cmNlKiBz
b3VyY2UpIHsKLSAgICBhdXRvIGl0ID0gbG9jYWxfc2lua3NfLmZpbmQoc3NyYyk7Ci0gICAgaWYg
KHNvdXJjZSkgewotICAgICAgaWYgKGl0ICE9IGxvY2FsX3NpbmtzXy5lbmQoKSkgewotICAgICAg
ICBSVENfQ0hFQ0soaXQtPnNlY29uZC0+c291cmNlKCkgPT0gc291cmNlKTsKLSAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGxvY2FsX3NpbmtzXy5pbnNlcnQoc3RkOjptYWtlX3BhaXIoCi0gICAgICAg
ICAgICBzc3JjLCBhYnNsOjptYWtlX3VuaXF1ZTxWb2ljZUNoYW5uZWxBdWRpb1Npbms+KHNvdXJj
ZSkpKTsKLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgaWYgKGl0ICE9IGxvY2FsX3Npbmtz
Xy5lbmQoKSkgewotICAgICAgICBsb2NhbF9zaW5rc18uZXJhc2UoaXQpOwotICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBib29sIFNldFJlY3ZDb2RlY3MoY29uc3Qgc3Rk
Ojp2ZWN0b3I8QXVkaW9Db2RlYz4mIGNvZGVjcyk7CisgIGJvb2wgU2V0U2VuZENvZGVjcyhjb25z
dCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKTsKKyAgYm9vbCBTZXRNYXhTZW5kQmFu
ZHdpZHRoKGludCBicHMpOworICBib29sIFNldE9wdGlvbnMoY29uc3QgQXVkaW9PcHRpb25zJiBv
cHRpb25zKTsKKyAgYm9vbCBTZXRMb2NhbFNvdXJjZSh1aW50MzJfdCBzc3JjLCBBdWRpb1NvdXJj
ZSogc291cmNlKTsKIAogICBGYWtlVm9pY2VFbmdpbmUqIGVuZ2luZV87CiAgIHN0ZDo6dmVjdG9y
PEF1ZGlvQ29kZWM+IHJlY3ZfY29kZWNzXzsKQEAgLTUwNiwxMzYgKzM5Myw1NSBAQCBjbGFzcyBG
YWtlVm9pY2VNZWRpYUNoYW5uZWwgOiBwdWJsaWMgUnRwSGVscGVyPFZvaWNlTWVkaWFDaGFubmVs
PiB7CiB9OwogCiAvLyBBIGhlbHBlciBmdW5jdGlvbiB0byBjb21wYXJlIHRoZSBGYWtlVm9pY2VN
ZWRpYUNoYW5uZWw6OkR0bWZJbmZvLgotaW5saW5lIGJvb2wgQ29tcGFyZUR0bWZJbmZvKGNvbnN0
IEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6RHRtZkluZm8mIGluZm8sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3Qgc3NyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZXZlbnRfY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHVyYXRpb24p
IHsKLSAgcmV0dXJuIChpbmZvLmR1cmF0aW9uID09IGR1cmF0aW9uICYmIGluZm8uZXZlbnRfY29k
ZSA9PSBldmVudF9jb2RlICYmCi0gICAgICAgICAgaW5mby5zc3JjID09IHNzcmMpOwotfQorYm9v
bCBDb21wYXJlRHRtZkluZm8oY29uc3QgRmFrZVZvaWNlTWVkaWFDaGFubmVsOjpEdG1mSW5mbyYg
aW5mbywKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNzcmMsCisgICAgICAgICAgICAg
ICAgICAgICBpbnQgZXZlbnRfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBkdXJhdGlv
bik7CiAKIGNsYXNzIEZha2VWaWRlb01lZGlhQ2hhbm5lbCA6IHB1YmxpYyBSdHBIZWxwZXI8Vmlk
ZW9NZWRpYUNoYW5uZWw+IHsKICBwdWJsaWM6Ci0gIEZha2VWaWRlb01lZGlhQ2hhbm5lbChGYWtl
VmlkZW9FbmdpbmUqIGVuZ2luZSwgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKQotICAgICAg
OiBlbmdpbmVfKGVuZ2luZSksIG1heF9icHNfKC0xKSB7Ci0gICAgU2V0T3B0aW9ucyhvcHRpb25z
KTsKLSAgfQorICBGYWtlVmlkZW9NZWRpYUNoYW5uZWwoRmFrZVZpZGVvRW5naW5lKiBlbmdpbmUs
IGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucyk7CiAKICAgfkZha2VWaWRlb01lZGlhQ2hhbm5l
bCgpOwogCi0gIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiByZWN2X2NvZGVjcygpIGNv
bnN0IHsgcmV0dXJuIHJlY3ZfY29kZWNzXzsgfQotICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0Nv
ZGVjPiYgc2VuZF9jb2RlY3MoKSBjb25zdCB7IHJldHVybiBzZW5kX2NvZGVjc187IH0KLSAgY29u
c3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNvZGVjcygpIGNvbnN0IHsgcmV0dXJuIHNlbmRf
Y29kZWNzKCk7IH0KLSAgYm9vbCByZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiBwbGF5b3V0KCk7
IH0KLSAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gb3B0aW9u
c187IH0KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIHJlY3ZfY29kZWNzKCkgY29u
c3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBzZW5kX2NvZGVjcygpIGNvbnN0
OworICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKCkgY29uc3Q7CisgIGJv
b2wgcmVuZGVyaW5nKCkgY29uc3Q7CisgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucygpIGNv
bnN0OwogICBjb25zdCBzdGQ6Om1hcDx1aW50MzJfdCwgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8
d2VicnRjOjpWaWRlb0ZyYW1lPio+JgotICBzaW5rcygpIGNvbnN0IHsKLSAgICByZXR1cm4gc2lu
a3NfOwotICB9Ci0gIGludCBtYXhfYnBzKCkgY29uc3QgeyByZXR1cm4gbWF4X2Jwc187IH0KLSAg
Ym9vbCBTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBWaWRlb1NlbmRQYXJhbWV0ZXJzJiBwYXJhbXMp
IG92ZXJyaWRlIHsKLSAgICBzZXRfc2VuZF9ydGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3ApOwot
ICAgIHJldHVybiAoU2V0U2VuZENvZGVjcyhwYXJhbXMuY29kZWNzKSAmJgotICAgICAgICAgICAg
U2V0U2VuZFJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1zLmV4dGVuc2lvbnMpICYmCi0gICAgICAg
ICAgICBTZXRNYXhTZW5kQmFuZHdpZHRoKHBhcmFtcy5tYXhfYmFuZHdpZHRoX2JwcykpOwotICB9
Ci0gIGJvb2wgU2V0UmVjdlBhcmFtZXRlcnMoY29uc3QgVmlkZW9SZWN2UGFyYW1ldGVycyYgcGFy
YW1zKSBvdmVycmlkZSB7Ci0gICAgc2V0X3JlY3ZfcnRjcF9wYXJhbWV0ZXJzKHBhcmFtcy5ydGNw
KTsKLSAgICByZXR1cm4gKFNldFJlY3ZDb2RlY3MocGFyYW1zLmNvZGVjcykgJiYKLSAgICAgICAg
ICAgIFNldFJlY3ZSdHBIZWFkZXJFeHRlbnNpb25zKHBhcmFtcy5leHRlbnNpb25zKSk7Ci0gIH0K
LSAgYm9vbCBBZGRTZW5kU3RyZWFtKGNvbnN0IFN0cmVhbVBhcmFtcyYgc3ApIG92ZXJyaWRlIHsK
LSAgICByZXR1cm4gUnRwSGVscGVyPFZpZGVvTWVkaWFDaGFubmVsPjo6QWRkU2VuZFN0cmVhbShz
cCk7Ci0gIH0KLSAgYm9vbCBSZW1vdmVTZW5kU3RyZWFtKHVpbnQzMl90IHNzcmMpIG92ZXJyaWRl
IHsKLSAgICByZXR1cm4gUnRwSGVscGVyPFZpZGVvTWVkaWFDaGFubmVsPjo6UmVtb3ZlU2VuZFN0
cmVhbShzc3JjKTsKLSAgfQotCi0gIGJvb2wgR2V0U2VuZENvZGVjKFZpZGVvQ29kZWMqIHNlbmRf
Y29kZWMpIG92ZXJyaWRlIHsKLSAgICBpZiAoc2VuZF9jb2RlY3NfLmVtcHR5KCkpIHsKLSAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgKnNlbmRfY29kZWMgPSBzZW5kX2NvZGVjc19bMF07
Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAgc2lua3MoKSBjb25zdDsKKyAgaW50IG1heF9icHMo
KSBjb25zdDsKKyAgYm9vbCBTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBWaWRlb1NlbmRQYXJhbWV0
ZXJzJiBwYXJhbXMpIG92ZXJyaWRlOworICBib29sIFNldFJlY3ZQYXJhbWV0ZXJzKGNvbnN0IFZp
ZGVvUmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgb3ZlcnJpZGU7CisgIGJvb2wgQWRkU2VuZFN0cmVh
bShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSBvdmVycmlkZTsKKyAgYm9vbCBSZW1vdmVTZW5kU3Ry
ZWFtKHVpbnQzMl90IHNzcmMpIG92ZXJyaWRlOworCisgIGJvb2wgR2V0U2VuZENvZGVjKFZpZGVv
Q29kZWMqIHNlbmRfY29kZWMpIG92ZXJyaWRlOwogICBib29sIFNldFNpbmsodWludDMyX3Qgc3Ny
YywKLSAgICAgICAgICAgICAgIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9G
cmFtZT4qIHNpbmspIG92ZXJyaWRlIHsKLSAgICBpZiAoc3NyYyAhPSAwICYmIHNpbmtzXy5maW5k
KHNzcmMpID09IHNpbmtzXy5lbmQoKSkgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICBpZiAoc3NyYyAhPSAwKSB7Ci0gICAgICBzaW5rc19bc3NyY10gPSBzaW5rOwotICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKLSAgfQotICBib29sIEhhc1NpbmsodWludDMyX3Qgc3NyYykgY29uc3Qg
ewotICAgIHJldHVybiBzaW5rc18uZmluZChzc3JjKSAhPSBzaW5rc18uZW5kKCkgJiYgc2lua3Nf
LmF0KHNzcmMpICE9IG51bGxwdHI7Ci0gIH0KKyAgICAgICAgICAgICAgIHJ0Yzo6VmlkZW9TaW5r
SW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4qIHNpbmspIG92ZXJyaWRlOworICBib29sIEhh
c1NpbmsodWludDMyX3Qgc3NyYykgY29uc3Q7CiAKLSAgYm9vbCBTZXRTZW5kKGJvb2wgc2VuZCkg
b3ZlcnJpZGUgeyByZXR1cm4gc2V0X3NlbmRpbmcoc2VuZCk7IH0KKyAgYm9vbCBTZXRTZW5kKGJv
b2wgc2VuZCkgb3ZlcnJpZGU7CiAgIGJvb2wgU2V0VmlkZW9TZW5kKAogICAgICAgdWludDMyX3Qg
c3NyYywKICAgICAgIGNvbnN0IFZpZGVvT3B0aW9ucyogb3B0aW9ucywKLSAgICAgIHJ0Yzo6Vmlk
ZW9Tb3VyY2VJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiogc291cmNlKSBvdmVycmlkZSB7
Ci0gICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgIGlmICghU2V0T3B0aW9ucygqb3B0aW9ucykpIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgICBzb3VyY2VzX1tzc3Jj
XSA9IHNvdXJjZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICAgICAgcnRjOjpWaWRlb1NvdXJj
ZUludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KiBzb3VyY2UpIG92ZXJyaWRlOwogCi0gIGJv
b2wgSGFzU291cmNlKHVpbnQzMl90IHNzcmMpIGNvbnN0IHsKLSAgICByZXR1cm4gc291cmNlc18u
ZmluZChzc3JjKSAhPSBzb3VyY2VzXy5lbmQoKSAmJgotICAgICAgICAgICBzb3VyY2VzXy5hdChz
c3JjKSAhPSBudWxscHRyOwotICB9Ci0gIGJvb2wgQWRkUmVjdlN0cmVhbShjb25zdCBTdHJlYW1Q
YXJhbXMmIHNwKSBvdmVycmlkZSB7Ci0gICAgaWYgKCFSdHBIZWxwZXI8VmlkZW9NZWRpYUNoYW5u
ZWw+OjpBZGRSZWN2U3RyZWFtKHNwKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzaW5rc19b
c3AuZmlyc3Rfc3NyYygpXSA9IE5VTEw7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgYm9vbCBS
ZW1vdmVSZWN2U3RyZWFtKHVpbnQzMl90IHNzcmMpIG92ZXJyaWRlIHsKLSAgICBpZiAoIVJ0cEhl
bHBlcjxWaWRlb01lZGlhQ2hhbm5lbD46OlJlbW92ZVJlY3ZTdHJlYW0oc3NyYykpCi0gICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgc2lua3NfLmVyYXNlKHNzcmMpOwotICAgIHJldHVybiB0cnVlOwot
ICB9CisgIGJvb2wgSGFzU291cmNlKHVpbnQzMl90IHNzcmMpIGNvbnN0OworICBib29sIEFkZFJl
Y3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgb3ZlcnJpZGU7CisgIGJvb2wgUmVtb3Zl
UmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSBvdmVycmlkZTsKIAotICB2b2lkIEZpbGxCaXRyYXRl
SW5mbyhCYW5kd2lkdGhFc3RpbWF0aW9uSW5mbyogYndlX2luZm8pIG92ZXJyaWRlIHt9Ci0gIGJv
b2wgR2V0U3RhdHMoVmlkZW9NZWRpYUluZm8qIGluZm8pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgIHZvaWQgRmlsbEJpdHJhdGVJbmZvKEJhbmR3aWR0aEVzdGltYXRpb25JbmZvKiBid2Vf
aW5mbykgb3ZlcnJpZGU7CisgIGJvb2wgR2V0U3RhdHMoVmlkZW9NZWRpYUluZm8qIGluZm8pIG92
ZXJyaWRlOwogCi0gIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwU291cmNlPiBHZXRTb3VyY2VzKHVp
bnQzMl90IHNzcmMpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICByZXR1cm4ge307Ci0gIH0KKyAgc3Rk
Ojp2ZWN0b3I8d2VicnRjOjpSdHBTb3VyY2U+IEdldFNvdXJjZXModWludDMyX3Qgc3NyYykgY29u
c3Qgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgotICBib29sIFNldFJlY3ZDb2RlY3MoY29uc3Qgc3Rk
Ojp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNvZGVjcykgewotICAgIGlmIChmYWlsX3NldF9yZWN2X2Nv
ZGVjcygpKSB7Ci0gICAgICAvLyBGYWtlIHRoZSBmYWlsdXJlIGluIFNldFJlY3ZDb2RlY3MuCi0g
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJlY3ZfY29kZWNzXyA9IGNvZGVjczsKLSAg
ICByZXR1cm4gdHJ1ZTsKLSAgfQotICBib29sIFNldFNlbmRDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0
b3I8VmlkZW9Db2RlYz4mIGNvZGVjcykgewotICAgIGlmIChmYWlsX3NldF9zZW5kX2NvZGVjcygp
KSB7Ci0gICAgICAvLyBGYWtlIHRoZSBmYWlsdXJlIGluIFNldFNlbmRDb2RlY3MuCi0gICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHNlbmRfY29kZWNzXyA9IGNvZGVjczsKLQotICAgIHJl
dHVybiB0cnVlOwotICB9Ci0gIGJvb2wgU2V0T3B0aW9ucyhjb25zdCBWaWRlb09wdGlvbnMmIG9w
dGlvbnMpIHsKLSAgICBvcHRpb25zXyA9IG9wdGlvbnM7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0K
LSAgYm9vbCBTZXRNYXhTZW5kQmFuZHdpZHRoKGludCBicHMpIHsKLSAgICBtYXhfYnBzXyA9IGJw
czsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQorICBib29sIFNldFJlY3ZDb2RlY3MoY29uc3Qgc3Rk
Ojp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNvZGVjcyk7CisgIGJvb2wgU2V0U2VuZENvZGVjcyhjb25z
dCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKTsKKyAgYm9vbCBTZXRPcHRpb25zKGNv
bnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucyk7CisgIGJvb2wgU2V0TWF4U2VuZEJhbmR3aWR0aChp
bnQgYnBzKTsKIAogICBGYWtlVmlkZW9FbmdpbmUqIGVuZ2luZV87CiAgIHN0ZDo6dmVjdG9yPFZp
ZGVvQ29kZWM+IHJlY3ZfY29kZWNzXzsKQEAgLTY1Miw3OCArNDU4LDMzIEBAIGNsYXNzIERhdGFP
cHRpb25zIHt9OwogCiBjbGFzcyBGYWtlRGF0YU1lZGlhQ2hhbm5lbCA6IHB1YmxpYyBSdHBIZWxw
ZXI8RGF0YU1lZGlhQ2hhbm5lbD4gewogIHB1YmxpYzoKLSAgZXhwbGljaXQgRmFrZURhdGFNZWRp
YUNoYW5uZWwodm9pZCogdW51c2VkLCBjb25zdCBEYXRhT3B0aW9ucyYgb3B0aW9ucykKLSAgICAg
IDogc2VuZF9ibG9ja2VkXyhmYWxzZSksIG1heF9icHNfKC0xKSB7fQotICB+RmFrZURhdGFNZWRp
YUNoYW5uZWwoKSB7fQotICBjb25zdCBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+JiByZWN2X2NvZGVj
cygpIGNvbnN0IHsgcmV0dXJuIHJlY3ZfY29kZWNzXzsgfQotICBjb25zdCBzdGQ6OnZlY3RvcjxE
YXRhQ29kZWM+JiBzZW5kX2NvZGVjcygpIGNvbnN0IHsgcmV0dXJuIHNlbmRfY29kZWNzXzsgfQot
ICBjb25zdCBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+JiBjb2RlY3MoKSBjb25zdCB7IHJldHVybiBz
ZW5kX2NvZGVjcygpOyB9Ci0gIGludCBtYXhfYnBzKCkgY29uc3QgeyByZXR1cm4gbWF4X2Jwc187
IH0KLQotICB2aXJ0dWFsIGJvb2wgU2V0U2VuZFBhcmFtZXRlcnMoY29uc3QgRGF0YVNlbmRQYXJh
bWV0ZXJzJiBwYXJhbXMpIHsKLSAgICBzZXRfc2VuZF9ydGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0
Y3ApOwotICAgIHJldHVybiAoU2V0U2VuZENvZGVjcyhwYXJhbXMuY29kZWNzKSAmJgotICAgICAg
ICAgICAgU2V0TWF4U2VuZEJhbmR3aWR0aChwYXJhbXMubWF4X2JhbmR3aWR0aF9icHMpKTsKLSAg
fQotICB2aXJ0dWFsIGJvb2wgU2V0UmVjdlBhcmFtZXRlcnMoY29uc3QgRGF0YVJlY3ZQYXJhbWV0
ZXJzJiBwYXJhbXMpIHsKLSAgICBzZXRfcmVjdl9ydGNwX3BhcmFtZXRlcnMocGFyYW1zLnJ0Y3Ap
OwotICAgIHJldHVybiBTZXRSZWN2Q29kZWNzKHBhcmFtcy5jb2RlY3MpOwotICB9Ci0gIHZpcnR1
YWwgYm9vbCBTZXRTZW5kKGJvb2wgc2VuZCkgeyByZXR1cm4gc2V0X3NlbmRpbmcoc2VuZCk7IH0K
LSAgdmlydHVhbCBib29sIFNldFJlY2VpdmUoYm9vbCByZWNlaXZlKSB7Ci0gICAgc2V0X3BsYXlv
dXQocmVjZWl2ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgdmlydHVhbCBib29sIEFkZFJl
Y3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgewotICAgIGlmICghUnRwSGVscGVyPERh
dGFNZWRpYUNoYW5uZWw+OjpBZGRSZWN2U3RyZWFtKHNwKSkKLSAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICB2aXJ0dWFsIGJvb2wgUmVtb3ZlUmVjdlN0cmVhbSh1
aW50MzJfdCBzc3JjKSB7Ci0gICAgaWYgKCFSdHBIZWxwZXI8RGF0YU1lZGlhQ2hhbm5lbD46OlJl
bW92ZVJlY3ZTdHJlYW0oc3NyYykpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRy
dWU7Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgU2VuZERhdGEoY29uc3QgU2VuZERhdGFQYXJhbXMm
IHBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVC
dWZmZXImIHBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBTZW5kRGF0YVJlc3VsdCog
cmVzdWx0KSB7Ci0gICAgaWYgKHNlbmRfYmxvY2tlZF8pIHsKLSAgICAgICpyZXN1bHQgPSBTRFJf
QkxPQ0s7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGxhc3Rfc2Vu
dF9kYXRhX3BhcmFtc18gPSBwYXJhbXM7Ci0gICAgICBsYXN0X3NlbnRfZGF0YV8gPSBzdGQ6OnN0
cmluZyhwYXlsb2FkLmRhdGE8Y2hhcj4oKSwgcGF5bG9hZC5zaXplKCkpOwotICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICB9Ci0KLSAgU2VuZERhdGFQYXJhbXMgbGFzdF9zZW50X2RhdGFfcGFy
YW1zKCkgeyByZXR1cm4gbGFzdF9zZW50X2RhdGFfcGFyYW1zXzsgfQotICBzdGQ6OnN0cmluZyBs
YXN0X3NlbnRfZGF0YSgpIHsgcmV0dXJuIGxhc3Rfc2VudF9kYXRhXzsgfQotICBib29sIGlzX3Nl
bmRfYmxvY2tlZCgpIHsgcmV0dXJuIHNlbmRfYmxvY2tlZF87IH0KLSAgdm9pZCBzZXRfc2VuZF9i
bG9ja2VkKGJvb2wgYmxvY2tlZCkgeyBzZW5kX2Jsb2NrZWRfID0gYmxvY2tlZDsgfQorICBleHBs
aWNpdCBGYWtlRGF0YU1lZGlhQ2hhbm5lbCh2b2lkKiB1bnVzZWQsIGNvbnN0IERhdGFPcHRpb25z
JiBvcHRpb25zKTsKKyAgfkZha2VEYXRhTWVkaWFDaGFubmVsKCk7CisgIGNvbnN0IHN0ZDo6dmVj
dG9yPERhdGFDb2RlYz4mIHJlY3ZfY29kZWNzKCkgY29uc3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9y
PERhdGFDb2RlYz4mIHNlbmRfY29kZWNzKCkgY29uc3Q7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPERh
dGFDb2RlYz4mIGNvZGVjcygpIGNvbnN0OworICBpbnQgbWF4X2JwcygpIGNvbnN0OworCisgIGJv
b2wgU2V0U2VuZFBhcmFtZXRlcnMoY29uc3QgRGF0YVNlbmRQYXJhbWV0ZXJzJiBwYXJhbXMpIG92
ZXJyaWRlOworICBib29sIFNldFJlY3ZQYXJhbWV0ZXJzKGNvbnN0IERhdGFSZWN2UGFyYW1ldGVy
cyYgcGFyYW1zKSBvdmVycmlkZTsKKyAgYm9vbCBTZXRTZW5kKGJvb2wgc2VuZCkgb3ZlcnJpZGU7
CisgIGJvb2wgU2V0UmVjZWl2ZShib29sIHJlY2VpdmUpIG92ZXJyaWRlOworICBib29sIEFkZFJl
Y3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgb3ZlcnJpZGU7CisgIGJvb2wgUmVtb3Zl
UmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSBvdmVycmlkZTsKKworICBib29sIFNlbmREYXRhKGNv
bnN0IFNlbmREYXRhUGFyYW1zJiBwYXJhbXMsCisgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpD
b3B5T25Xcml0ZUJ1ZmZlciYgcGF5bG9hZCwKKyAgICAgICAgICAgICAgICBTZW5kRGF0YVJlc3Vs
dCogcmVzdWx0KSBvdmVycmlkZTsKKworICBTZW5kRGF0YVBhcmFtcyBsYXN0X3NlbnRfZGF0YV9w
YXJhbXMoKTsKKyAgc3RkOjpzdHJpbmcgbGFzdF9zZW50X2RhdGEoKTsKKyAgYm9vbCBpc19zZW5k
X2Jsb2NrZWQoKTsKKyAgdm9pZCBzZXRfc2VuZF9ibG9ja2VkKGJvb2wgYmxvY2tlZCk7CiAKICBw
cml2YXRlOgotICBib29sIFNldFJlY3ZDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8RGF0YUNvZGVj
PiYgY29kZWNzKSB7Ci0gICAgaWYgKGZhaWxfc2V0X3JlY3ZfY29kZWNzKCkpIHsKLSAgICAgIC8v
IEZha2UgdGhlIGZhaWx1cmUgaW4gU2V0UmVjdkNvZGVjcy4KLSAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgcmVjdl9jb2RlY3NfID0gY29kZWNzOwotICAgIHJldHVybiB0cnVlOwotICB9
Ci0gIGJvb2wgU2V0U2VuZENvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+JiBjb2Rl
Y3MpIHsKLSAgICBpZiAoZmFpbF9zZXRfc2VuZF9jb2RlY3MoKSkgewotICAgICAgLy8gRmFrZSB0
aGUgZmFpbHVyZSBpbiBTZXRTZW5kQ29kZWNzLgotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICBzZW5kX2NvZGVjc18gPSBjb2RlY3M7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgYm9v
bCBTZXRNYXhTZW5kQmFuZHdpZHRoKGludCBicHMpIHsKLSAgICBtYXhfYnBzXyA9IGJwczsKLSAg
ICByZXR1cm4gdHJ1ZTsKLSAgfQorICBib29sIFNldFJlY3ZDb2RlY3MoY29uc3Qgc3RkOjp2ZWN0
b3I8RGF0YUNvZGVjPiYgY29kZWNzKTsKKyAgYm9vbCBTZXRTZW5kQ29kZWNzKGNvbnN0IHN0ZDo6
dmVjdG9yPERhdGFDb2RlYz4mIGNvZGVjcyk7CisgIGJvb2wgU2V0TWF4U2VuZEJhbmR3aWR0aChp
bnQgYnBzKTsKIAogICBzdGQ6OnZlY3RvcjxEYXRhQ29kZWM+IHJlY3ZfY29kZWNzXzsKICAgc3Rk
Ojp2ZWN0b3I8RGF0YUNvZGVjPiBzZW5kX2NvZGVjc187CkBAIC03MzMsMjMzICs0OTQsOTggQEAg
Y2xhc3MgRmFrZURhdGFNZWRpYUNoYW5uZWwgOiBwdWJsaWMgUnRwSGVscGVyPERhdGFNZWRpYUNo
YW5uZWw+IHsKICAgaW50IG1heF9icHNfOwogfTsKIAotLy8gQSBiYXNlIGNsYXNzIGZvciBhbGwg
b2YgdGhlIHNoYXJlZCBwYXJ0cyBiZXR3ZWVuIEZha2VWb2ljZUVuZ2luZQotLy8gYW5kIEZha2VW
aWRlb0VuZ2luZS4KLWNsYXNzIEZha2VCYXNlRW5naW5lIHsKLSBwdWJsaWM6Ci0gIEZha2VCYXNl
RW5naW5lKCkgOiBvcHRpb25zX2NoYW5nZWRfKGZhbHNlKSwgZmFpbF9jcmVhdGVfY2hhbm5lbF8o
ZmFsc2UpIHt9Ci0gIHZvaWQgc2V0X2ZhaWxfY3JlYXRlX2NoYW5uZWwoYm9vbCBmYWlsKSB7IGZh
aWxfY3JlYXRlX2NoYW5uZWxfID0gZmFpbDsgfQotCi0gIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBh
YmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBjYXBhYmlsaXRpZXNfOyB9Ci0gIHZvaWQgc2V0X3J0
cF9oZWFkZXJfZXh0ZW5zaW9ucyhjb25zdCBzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+JiBleHRl
bnNpb25zKSB7Ci0gICAgY2FwYWJpbGl0aWVzXy5oZWFkZXJfZXh0ZW5zaW9ucyA9IGV4dGVuc2lv
bnM7Ci0gIH0KLQotICB2b2lkIHNldF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMoCi0gICAgICBjb25z
dCBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb24+JiBleHRlbnNpb25zKSB7
Ci0gICAgZm9yIChjb25zdCBjcmlja2V0OjpSdHBIZWFkZXJFeHRlbnNpb24mIGV4dCA6IGV4dGVu
c2lvbnMpIHsKLSAgICAgIFJ0cEV4dGVuc2lvbiB3ZWJydGNfZXh0OwotICAgICAgd2VicnRjX2V4
dC51cmkgPSBleHQudXJpOwotICAgICAgd2VicnRjX2V4dC5pZCA9IGV4dC5pZDsKLSAgICAgIGNh
cGFiaWxpdGllc18uaGVhZGVyX2V4dGVuc2lvbnMucHVzaF9iYWNrKHdlYnJ0Y19leHQpOwotICAg
IH0KLSAgfQotCi0gcHJvdGVjdGVkOgotICAvLyBGbGFnIHVzZWQgYnkgb3B0aW9uc21lc3NhZ2Vo
YW5kbGVyX3VuaXR0ZXN0IGZvciBjaGVja2luZyB3aGV0aGVyIGFueQotICAvLyByZWxldmFudCBz
ZXR0aW5nIGhhcyBiZWVuIHVwZGF0ZWQuCi0gIC8vIFRPRE8odGhhbG91bik6IFJlcGxhY2Ugd2l0
aCBleHBsaWNpdCBjaGVja3Mgb2YgYmVmb3JlICYgYWZ0ZXIgdmFsdWVzLgotICBib29sIG9wdGlv
bnNfY2hhbmdlZF87Ci0gIGJvb2wgZmFpbF9jcmVhdGVfY2hhbm5lbF87Ci0gIFJ0cENhcGFiaWxp
dGllcyBjYXBhYmlsaXRpZXNfOwotfTsKLQotY2xhc3MgRmFrZVZvaWNlRW5naW5lIDogcHVibGlj
IEZha2VCYXNlRW5naW5lIHsKK2NsYXNzIEZha2VWb2ljZUVuZ2luZSA6IHB1YmxpYyBWb2ljZUVu
Z2luZUludGVyZmFjZSB7CiAgcHVibGljOgotICBGYWtlVm9pY2VFbmdpbmUoKSB7Ci0gICAgLy8g
QWRkIGEgZmFrZSBhdWRpbyBjb2RlYy4gTm90ZSB0aGF0IHRoZSBuYW1lIG11c3Qgbm90IGJlICIi
IGFzIHRoZXJlIGFyZQotICAgIC8vIHNhbml0eSBjaGVja3MgYWdhaW5zdCB0aGF0LgotICAgIGNv
ZGVjc18ucHVzaF9iYWNrKEF1ZGlvQ29kZWMoMTAxLCAiZmFrZV9hdWRpb19jb2RlYyIsIDAsIDAs
IDEpKTsKLSAgfQotICB2b2lkIEluaXQoKSB7fQotICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpBdWRpb1N0YXRlPiBHZXRBdWRpb1N0YXRlKCkgY29uc3QgewotICAgIHJldHVybiBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPigpOwotICB9Ci0KLSAgVm9pY2VNZWRpYUNo
YW5uZWwqIENyZWF0ZUNoYW5uZWwod2VicnRjOjpDYWxsKiBjYWxsLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMpIHsK
LSAgICBpZiAoZmFpbF9jcmVhdGVfY2hhbm5lbF8pIHsKLSAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQotICAgIEZha2VWb2ljZU1lZGlhQ2hhbm5lbCogY2ggPSBuZXcgRmFrZVZvaWNlTWVk
aWFDaGFubmVsKHRoaXMsIG9wdGlvbnMpOwotICAgIGNoYW5uZWxzXy5wdXNoX2JhY2soY2gpOwot
ICAgIHJldHVybiBjaDsKLSAgfQotICBGYWtlVm9pY2VNZWRpYUNoYW5uZWwqIEdldENoYW5uZWwo
c2l6ZV90IGluZGV4KSB7Ci0gICAgcmV0dXJuIChjaGFubmVsc18uc2l6ZSgpID4gaW5kZXgpID8g
Y2hhbm5lbHNfW2luZGV4XSA6IE5VTEw7Ci0gIH0KLSAgdm9pZCBVbnJlZ2lzdGVyQ2hhbm5lbChW
b2ljZU1lZGlhQ2hhbm5lbCogY2hhbm5lbCkgewotICAgIGNoYW5uZWxzXy5lcmFzZShzdGQ6OmZp
bmQoY2hhbm5lbHNfLmJlZ2luKCksIGNoYW5uZWxzXy5lbmQoKSwgY2hhbm5lbCkpOwotICB9Cisg
IEZha2VWb2ljZUVuZ2luZSgpOworICBSdHBDYXBhYmlsaXRpZXMgR2V0Q2FwYWJpbGl0aWVzKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgIHZvaWQgSW5pdCgpIG92ZXJyaWRlOworICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpBdWRpb1N0YXRlPiBHZXRBdWRpb1N0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgVm9pY2VNZWRpYUNoYW5uZWwqIENyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIHdlYnJ0
Yzo6Q2FsbCogY2FsbCwKKyAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCisgICAgICBj
b25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMsCisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09w
dGlvbnMmIGNyeXB0b19vcHRpb25zKSBvdmVycmlkZTsKKyAgRmFrZVZvaWNlTWVkaWFDaGFubmVs
KiBHZXRDaGFubmVsKHNpemVfdCBpbmRleCk7CisgIHZvaWQgVW5yZWdpc3RlckNoYW5uZWwoVm9p
Y2VNZWRpYUNoYW5uZWwqIGNoYW5uZWwpOwogCiAgIC8vIFRPRE8ob3NzdSk6IEZvciBwcm9wZXIg
dGVzdGluZywgVGhlc2Ugc2hvdWxkIGVpdGhlciBpbmRpdmlkdWFsbHkgc2V0dGFibGUKICAgLy8g
ICAgICAgICAgICAgb3IgdGhlIHZvaWNlIGVuZ2luZSBzaG91bGQgcmVmZXJlbmNlIG1vY2thYmxl
IGZhY3Rvcmllcy4KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHNlbmRfY29kZWNz
KCkgeyByZXR1cm4gY29kZWNzXzsgfQotICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYg
cmVjdl9jb2RlY3MoKSB7IHJldHVybiBjb2RlY3NfOyB9Ci0gIHZvaWQgU2V0Q29kZWNzKGNvbnN0
IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MpIHsgY29kZWNzXyA9IGNvZGVjczsgfQot
Ci0gIGludCBHZXRJbnB1dExldmVsKCkgeyByZXR1cm4gMDsgfQotCi0gIGJvb2wgU3RhcnRBZWNE
dW1wKHJ0Yzo6UGxhdGZvcm1GaWxlIGZpbGUsIGludDY0X3QgbWF4X3NpemVfYnl0ZXMpIHsKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICB2b2lkIFN0b3BBZWNEdW1wKCkge30KLQotICBib29s
IFN0YXJ0UnRjRXZlbnRMb2cocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwgaW50NjRfdCBtYXhfc2l6
ZV9ieXRlcykgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHZvaWQgU3RvcFJ0Y0V2ZW50
TG9nKCkge30KKyAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHNlbmRfY29kZWNzKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiByZWN2X2Nv
ZGVjcygpIGNvbnN0IG92ZXJyaWRlOworICB2b2lkIFNldENvZGVjcyhjb25zdCBzdGQ6OnZlY3Rv
cjxBdWRpb0NvZGVjPiYgY29kZWNzKTsKKyAgaW50IEdldElucHV0TGV2ZWwoKTsKKyAgYm9vbCBT
dGFydEFlY0R1bXAocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwgaW50NjRfdCBtYXhfc2l6ZV9ieXRl
cykgb3ZlcnJpZGU7CisgIHZvaWQgU3RvcEFlY0R1bXAoKSBvdmVycmlkZTsKKyAgYm9vbCBTdGFy
dFJ0Y0V2ZW50TG9nKHJ0Yzo6UGxhdGZvcm1GaWxlIGZpbGUsIGludDY0X3QgbWF4X3NpemVfYnl0
ZXMpOworICB2b2lkIFN0b3BSdGNFdmVudExvZygpOwogCiAgcHJpdmF0ZToKICAgc3RkOjp2ZWN0
b3I8RmFrZVZvaWNlTWVkaWFDaGFubmVsKj4gY2hhbm5lbHNfOwogICBzdGQ6OnZlY3RvcjxBdWRp
b0NvZGVjPiBjb2RlY3NfOworICBib29sIGZhaWxfY3JlYXRlX2NoYW5uZWxfOwogCiAgIGZyaWVu
ZCBjbGFzcyBGYWtlTWVkaWFFbmdpbmU7CiB9OwogCi1jbGFzcyBGYWtlVmlkZW9FbmdpbmUgOiBw
dWJsaWMgRmFrZUJhc2VFbmdpbmUgeworY2xhc3MgRmFrZVZpZGVvRW5naW5lIDogcHVibGljIFZp
ZGVvRW5naW5lSW50ZXJmYWNlIHsKICBwdWJsaWM6Ci0gIEZha2VWaWRlb0VuZ2luZSgpIDogY2Fw
dHVyZV8oZmFsc2UpIHsKLSAgICAvLyBBZGQgYSBmYWtlIHZpZGVvIGNvZGVjLiBOb3RlIHRoYXQg
dGhlIG5hbWUgbXVzdCBub3QgYmUgIiIgYXMgdGhlcmUgYXJlCi0gICAgLy8gc2FuaXR5IGNoZWNr
cyBhZ2FpbnN0IHRoYXQuCi0gICAgY29kZWNzXy5wdXNoX2JhY2soVmlkZW9Db2RlYygwLCAiZmFr
ZV92aWRlb19jb2RlYyIpKTsKLSAgfQotCi0gIGJvb2wgU2V0T3B0aW9ucyhjb25zdCBWaWRlb09w
dGlvbnMmIG9wdGlvbnMpIHsKLSAgICBvcHRpb25zXyA9IG9wdGlvbnM7Ci0gICAgb3B0aW9uc19j
aGFuZ2VkXyA9IHRydWU7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBWaWRlb01lZGlhQ2hh
bm5lbCogQ3JlYXRlQ2hhbm5lbCh3ZWJydGM6OkNhbGwqIGNhbGwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykgewot
ICAgIGlmIChmYWlsX2NyZWF0ZV9jaGFubmVsXykgewotICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQotCi0gICAgRmFrZVZpZGVvTWVkaWFDaGFubmVsKiBjaCA9IG5ldyBGYWtlVmlkZW9NZWRp
YUNoYW5uZWwodGhpcywgb3B0aW9ucyk7Ci0gICAgY2hhbm5lbHNfLmVtcGxhY2VfYmFjayhjaCk7
Ci0gICAgcmV0dXJuIGNoOwotICB9Ci0KLSAgRmFrZVZpZGVvTWVkaWFDaGFubmVsKiBHZXRDaGFu
bmVsKHNpemVfdCBpbmRleCkgewotICAgIHJldHVybiAoY2hhbm5lbHNfLnNpemUoKSA+IGluZGV4
KSA/IGNoYW5uZWxzX1tpbmRleF0gOiBudWxscHRyOwotICB9Ci0KLSAgdm9pZCBVbnJlZ2lzdGVy
Q2hhbm5lbChWaWRlb01lZGlhQ2hhbm5lbCogY2hhbm5lbCkgewotICAgIGF1dG8gaXQgPSBzdGQ6
OmZpbmQoY2hhbm5lbHNfLmJlZ2luKCksIGNoYW5uZWxzXy5lbmQoKSwgY2hhbm5lbCk7Ci0gICAg
UlRDX0RDSEVDSyhpdCAhPSBjaGFubmVsc18uZW5kKCkpOwotICAgIGNoYW5uZWxzXy5lcmFzZShp
dCk7Ci0gIH0KLQotICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKCkgY29u
c3QgeyByZXR1cm4gY29kZWNzXzsgfQotCi0gIHZvaWQgU2V0Q29kZWNzKGNvbnN0IHN0ZDo6dmVj
dG9yPFZpZGVvQ29kZWM+IGNvZGVjcykgeyBjb2RlY3NfID0gY29kZWNzOyB9Ci0KLSAgYm9vbCBT
ZXRDYXB0dXJlKGJvb2wgY2FwdHVyZSkgewotICAgIGNhcHR1cmVfID0gY2FwdHVyZTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLSAgfQorICBGYWtlVmlkZW9FbmdpbmUoKTsKKyAgUnRwQ2FwYWJpbGl0aWVz
IEdldENhcGFiaWxpdGllcygpIGNvbnN0IG92ZXJyaWRlOworICBib29sIFNldE9wdGlvbnMoY29u
c3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKTsKKyAgVmlkZW9NZWRpYUNoYW5uZWwqIENyZWF0ZU1l
ZGlhQ2hhbm5lbCgKKyAgICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKKyAgICAgIGNvbnN0IE1lZGlh
Q29uZmlnJiBjb25maWcsCisgICAgICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMsCisgICAg
ICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSBvdmVycmlkZTsK
KyAgRmFrZVZpZGVvTWVkaWFDaGFubmVsKiBHZXRDaGFubmVsKHNpemVfdCBpbmRleCk7CisgIHZv
aWQgVW5yZWdpc3RlckNoYW5uZWwoVmlkZW9NZWRpYUNoYW5uZWwqIGNoYW5uZWwpOworICBzdGQ6
OnZlY3RvcjxWaWRlb0NvZGVjPiBjb2RlY3MoKSBjb25zdCBvdmVycmlkZTsKKyAgdm9pZCBTZXRD
b2RlY3MoY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNzKTsKKyAgYm9vbCBTZXRD
YXB0dXJlKGJvb2wgY2FwdHVyZSk7CiAKICBwcml2YXRlOgogICBzdGQ6OnZlY3RvcjxGYWtlVmlk
ZW9NZWRpYUNoYW5uZWwqPiBjaGFubmVsc187CiAgIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IGNv
ZGVjc187CiAgIGJvb2wgY2FwdHVyZV87CiAgIFZpZGVvT3B0aW9ucyBvcHRpb25zXzsKKyAgYm9v
bCBmYWlsX2NyZWF0ZV9jaGFubmVsXzsKIAogICBmcmllbmQgY2xhc3MgRmFrZU1lZGlhRW5naW5l
OwogfTsKIAotY2xhc3MgRmFrZU1lZGlhRW5naW5lCi0gICAgOiBwdWJsaWMgQ29tcG9zaXRlTWVk
aWFFbmdpbmU8RmFrZVZvaWNlRW5naW5lLCBGYWtlVmlkZW9FbmdpbmU+IHsKK2NsYXNzIEZha2VN
ZWRpYUVuZ2luZSA6IHB1YmxpYyBDb21wb3NpdGVNZWRpYUVuZ2luZSB7CiAgcHVibGljOgotICBG
YWtlTWVkaWFFbmdpbmUoKQotICAgICAgOiBDb21wb3NpdGVNZWRpYUVuZ2luZTxGYWtlVm9pY2VF
bmdpbmUsIEZha2VWaWRlb0VuZ2luZT4oc3RkOjp0dXBsZTw+KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnR1cGxl
PD4oKSkgewotICB9CisgIEZha2VNZWRpYUVuZ2luZSgpOwogCi0gIHZpcnR1YWwgfkZha2VNZWRp
YUVuZ2luZSgpIHt9CisgIH5GYWtlTWVkaWFFbmdpbmUoKSBvdmVycmlkZTsKIAotICB2b2lkIFNl
dEF1ZGlvQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBjb2RlY3MpIHsKLSAg
ICB2b2ljZSgpLlNldENvZGVjcyhjb2RlY3MpOwotICB9Ci0gIHZvaWQgU2V0VmlkZW9Db2RlY3Mo
Y29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4mIGNvZGVjcykgewotICAgIHZpZGVvKCkuU2V0
Q29kZWNzKGNvZGVjcyk7Ci0gIH0KKyAgdm9pZCBTZXRBdWRpb0NvZGVjcyhjb25zdCBzdGQ6OnZl
Y3RvcjxBdWRpb0NvZGVjPiYgY29kZWNzKTsKKyAgdm9pZCBTZXRWaWRlb0NvZGVjcyhjb25zdCBz
dGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKTsKIAotICB2b2lkIFNldEF1ZGlvUnRwSGVh
ZGVyRXh0ZW5zaW9ucygKLSAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFJ0cEV4dGVuc2lvbj4mIGV4
dGVuc2lvbnMpIHsKLSAgICB2b2ljZSgpLnNldF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMoZXh0ZW5z
aW9ucyk7Ci0gIH0KLSAgdm9pZCBTZXRWaWRlb1J0cEhlYWRlckV4dGVuc2lvbnMoCi0gICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxSdHBFeHRlbnNpb24+JiBleHRlbnNpb25zKSB7Ci0gICAgdmlkZW8o
KS5zZXRfcnRwX2hlYWRlcl9leHRlbnNpb25zKGV4dGVuc2lvbnMpOwotICB9CisgIEZha2VWb2lj
ZU1lZGlhQ2hhbm5lbCogR2V0Vm9pY2VDaGFubmVsKHNpemVfdCBpbmRleCk7CisgIEZha2VWaWRl
b01lZGlhQ2hhbm5lbCogR2V0VmlkZW9DaGFubmVsKHNpemVfdCBpbmRleCk7CiAKLSAgdm9pZCBT
ZXRBdWRpb1J0cEhlYWRlckV4dGVuc2lvbnMoCi0gICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxjcmlj
a2V0OjpSdHBIZWFkZXJFeHRlbnNpb24+JiBleHRlbnNpb25zKSB7Ci0gICAgdm9pY2UoKS5zZXRf
cnRwX2hlYWRlcl9leHRlbnNpb25zKGV4dGVuc2lvbnMpOwotICB9Ci0gIHZvaWQgU2V0VmlkZW9S
dHBIZWFkZXJFeHRlbnNpb25zKAotICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y3JpY2tldDo6UnRw
SGVhZGVyRXh0ZW5zaW9uPiYgZXh0ZW5zaW9ucykgewotICAgIHZpZGVvKCkuc2V0X3J0cF9oZWFk
ZXJfZXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKLSAgfQorICB2b2lkIHNldF9mYWlsX2NyZWF0ZV9j
aGFubmVsKGJvb2wgZmFpbCk7CiAKLSAgRmFrZVZvaWNlTWVkaWFDaGFubmVsKiBHZXRWb2ljZUNo
YW5uZWwoc2l6ZV90IGluZGV4KSB7Ci0gICAgcmV0dXJuIHZvaWNlKCkuR2V0Q2hhbm5lbChpbmRl
eCk7Ci0gIH0KLSAgRmFrZVZpZGVvTWVkaWFDaGFubmVsKiBHZXRWaWRlb0NoYW5uZWwoc2l6ZV90
IGluZGV4KSB7Ci0gICAgcmV0dXJuIHZpZGVvKCkuR2V0Q2hhbm5lbChpbmRleCk7Ci0gIH0KLQot
ICBib29sIGNhcHR1cmUoKSBjb25zdCB7IHJldHVybiB2aWRlbygpLmNhcHR1cmVfOyB9Ci0gIGJv
b2wgb3B0aW9uc19jaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gdmlkZW8oKS5vcHRpb25zX2NoYW5n
ZWRfOyB9Ci0gIHZvaWQgY2xlYXJfb3B0aW9uc19jaGFuZ2VkKCkgeyB2aWRlbygpLm9wdGlvbnNf
Y2hhbmdlZF8gPSBmYWxzZTsgfQotICB2b2lkIHNldF9mYWlsX2NyZWF0ZV9jaGFubmVsKGJvb2wg
ZmFpbCkgewotICAgIHZvaWNlKCkuc2V0X2ZhaWxfY3JlYXRlX2NoYW5uZWwoZmFpbCk7Ci0gICAg
dmlkZW8oKS5zZXRfZmFpbF9jcmVhdGVfY2hhbm5lbChmYWlsKTsKLSAgfQorIHByaXZhdGU6Cisg
IEZha2VWb2ljZUVuZ2luZSogY29uc3Qgdm9pY2VfOworICBGYWtlVmlkZW9FbmdpbmUqIGNvbnN0
IHZpZGVvXzsKIH07CiAKIC8vIEhhdmUgdG8gY29tZSBhZnRlcndhcmRzIGR1ZSB0byBkZWNsYXJh
dGlvbiBvcmRlcgotaW5saW5lIEZha2VWb2ljZU1lZGlhQ2hhbm5lbDo6fkZha2VWb2ljZU1lZGlh
Q2hhbm5lbCgpIHsKLSAgaWYgKGVuZ2luZV8pIHsKLSAgICBlbmdpbmVfLT5VbnJlZ2lzdGVyQ2hh
bm5lbCh0aGlzKTsKLSAgfQotfQotCi1pbmxpbmUgRmFrZVZpZGVvTWVkaWFDaGFubmVsOjp+RmFr
ZVZpZGVvTWVkaWFDaGFubmVsKCkgewotICBpZiAoZW5naW5lXykgewotICAgIGVuZ2luZV8tPlVu
cmVnaXN0ZXJDaGFubmVsKHRoaXMpOwotICB9Ci19CiAKIGNsYXNzIEZha2VEYXRhRW5naW5lIDog
cHVibGljIERhdGFFbmdpbmVJbnRlcmZhY2UgewogIHB1YmxpYzoKLSAgdmlydHVhbCBEYXRhTWVk
aWFDaGFubmVsKiBDcmVhdGVDaGFubmVsKGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcpIHsKLSAg
ICBGYWtlRGF0YU1lZGlhQ2hhbm5lbCogY2ggPSBuZXcgRmFrZURhdGFNZWRpYUNoYW5uZWwodGhp
cywgRGF0YU9wdGlvbnMoKSk7Ci0gICAgY2hhbm5lbHNfLnB1c2hfYmFjayhjaCk7Ci0gICAgcmV0
dXJuIGNoOwotICB9CisgIERhdGFNZWRpYUNoYW5uZWwqIENyZWF0ZUNoYW5uZWwoY29uc3QgTWVk
aWFDb25maWcmIGNvbmZpZykgb3ZlcnJpZGU7CiAKLSAgRmFrZURhdGFNZWRpYUNoYW5uZWwqIEdl
dENoYW5uZWwoc2l6ZV90IGluZGV4KSB7Ci0gICAgcmV0dXJuIChjaGFubmVsc18uc2l6ZSgpID4g
aW5kZXgpID8gY2hhbm5lbHNfW2luZGV4XSA6IE5VTEw7Ci0gIH0KKyAgRmFrZURhdGFNZWRpYUNo
YW5uZWwqIEdldENoYW5uZWwoc2l6ZV90IGluZGV4KTsKIAotICB2b2lkIFVucmVnaXN0ZXJDaGFu
bmVsKERhdGFNZWRpYUNoYW5uZWwqIGNoYW5uZWwpIHsKLSAgICBjaGFubmVsc18uZXJhc2Uoc3Rk
OjpmaW5kKGNoYW5uZWxzXy5iZWdpbigpLCBjaGFubmVsc18uZW5kKCksIGNoYW5uZWwpKTsKLSAg
fQorICB2b2lkIFVucmVnaXN0ZXJDaGFubmVsKERhdGFNZWRpYUNoYW5uZWwqIGNoYW5uZWwpOwog
Ci0gIHZpcnR1YWwgdm9pZCBTZXREYXRhQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2Rl
Yz4mIGRhdGFfY29kZWNzKSB7Ci0gICAgZGF0YV9jb2RlY3NfID0gZGF0YV9jb2RlY3M7Ci0gIH0K
KyAgdm9pZCBTZXREYXRhQ29kZWNzKGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGRhdGFf
Y29kZWNzKTsKIAotICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGRhdGFf
Y29kZWNzKCkgeyByZXR1cm4gZGF0YV9jb2RlY3NfOyB9CisgIGNvbnN0IHN0ZDo6dmVjdG9yPERh
dGFDb2RlYz4mIGRhdGFfY29kZWNzKCkgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgogICBzdGQ6OnZl
Y3RvcjxGYWtlRGF0YU1lZGlhQ2hhbm5lbCo+IGNoYW5uZWxzXzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZW5ldHdv
cmtpbnRlcmZhY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2Jhc2UvZmFrZW5ldHdvcmtpbnRlcmZhY2UuaAppbmRleCAwZjE0NjU5YzQ2MDZjOWRm
NmE3NjBlNmVlMzM4M2IyZjk3YWM5YTU5Li5kZmQzNDA3NzJiNjkzMzkyYjE1ZDM1NDRiN2M0YzZk
MWQyMmZjZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9iYXNlL2Zha2VuZXR3b3JraW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtlbmV0d29ya2lu
dGVyZmFjZS5oCkBAIC0xNjksOSArMTY5LDkgQEAgY2xhc3MgRmFrZU5ldHdvcmtJbnRlcmZhY2Ug
OiBwdWJsaWMgTWVkaWFDaGFubmVsOjpOZXR3b3JrSW50ZXJmYWNlLAogICAgICAgICBzdGF0aWNf
Y2FzdDxydGM6OlR5cGVkTWVzc2FnZURhdGE8cnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcj4qPihtc2ct
PnBkYXRhKTsKICAgICBpZiAoZGVzdF8pIHsKICAgICAgIGlmIChtc2ctPm1lc3NhZ2VfaWQgPT0g
U1RfUlRQKSB7Ci0gICAgICAgIGRlc3RfLT5PblBhY2tldFJlY2VpdmVkKCZtc2dfZGF0YS0+ZGF0
YSgpLCBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpOworICAgICAgICBkZXN0Xy0+T25QYWNrZXRS
ZWNlaXZlZCgmbXNnX2RhdGEtPmRhdGEoKSwgcnRjOjpUaW1lTWljcm9zKCkpOwogICAgICAgfSBl
bHNlIHsKLSAgICAgICAgZGVzdF8tPk9uUnRjcFJlY2VpdmVkKCZtc2dfZGF0YS0+ZGF0YSgpLCBy
dGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpOworICAgICAgICBkZXN0Xy0+T25SdGNwUmVjZWl2ZWQo
Jm1zZ19kYXRhLT5kYXRhKCksIHJ0Yzo6VGltZU1pY3JvcygpKTsKICAgICAgIH0KICAgICB9CiAg
ICAgZGVsZXRlIG1zZ19kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtldmlkZW9jYXB0dXJlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvZmFrZXZpZGVv
Y2FwdHVyZXIuY2MKaW5kZXggOTQ5MDBiYTM3YjZhNTRiMDBmYTYyNjdiNjlkYmViNTIzODMxODQ1
Ny4uYjVkMDE4OTYwOGE5MjM1MmI4ZWQ0NTBlYjNlNjc1MjgwMzJmZmNhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9mYWtl
dmlkZW9jYXB0dXJlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9iYXNlL2Zha2V2aWRlb2NhcHR1cmVyLmNjCkBAIC0xMSw2ICsxMSw3IEBA
CiAjaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtldmlkZW9jYXB0dXJlci5oIgogCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvYXJyYXlzaXplLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAK
IG5hbWVzcGFjZSBjcmlja2V0IHsKIApAQCAtOTUsNyArOTYsNyBAQCBjcmlja2V0OjpDYXB0dXJl
U3RhdGUgRmFrZVZpZGVvQ2FwdHVyZXI6OlN0YXJ0KAogICBTZXRDYXB0dXJlU3RhdGUoY3JpY2tl
dDo6Q1NfUlVOTklORyk7CiAgIGZyYW1lX3NvdXJjZV8gPSBhYnNsOjptYWtlX3VuaXF1ZTxGYWtl
RnJhbWVTb3VyY2U+KAogICAgICAgZm9ybWF0LndpZHRoLCBmb3JtYXQuaGVpZ2h0LAotICAgICAg
Zm9ybWF0LmludGVydmFsIC8gcnRjOjprTnVtTmFub3NlY3NQZXJNaWNyb3NlYyk7CisgICAgICBm
b3JtYXQuaW50ZXJ2YWwgLyBydGM6OmtOdW1OYW5vc2Vjc1Blck1pY3Jvc2VjLCBydGM6OlRpbWVN
aWNyb3MoKSk7CiAgIGZyYW1lX3NvdXJjZV8tPlNldFJvdGF0aW9uKHJvdGF0aW9uXyk7CiAgIHJl
dHVybiBjcmlja2V0OjpDU19SVU5OSU5HOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2ZWxf
aWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jh
c2UvaDI2NF9wcm9maWxlX2xldmVsX2lkLmgKaW5kZXggYjRmZjg4MzY5YzYxNDg5ZjRmODUxYjk1
YzU0NmMyNzFhOWMwZmRmOC4uNmEzZTdjZGIzMjE5NjZmNjkzYmY4M2ZiOTBhNjFhOTRjNDczOWI4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2ZWxfaWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL2gyNjRfcHJvZmlsZV9sZXZlbF9p
ZC5oCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
CiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIG5hbWVzcGFjZSBIMjY0IHsKQEAgLTYxLDE4ICs2MiwxOSBAQCBhYnNsOjpvcHRpb25hbDxQ
cm9maWxlTGV2ZWxJZD4gUGFyc2VQcm9maWxlTGV2ZWxJZChjb25zdCBjaGFyKiBzdHIpOwogLy8g
Y29udGFpbmVkIGluIGFuIFNEUCBrZXktdmFsdWUgbWFwLiBBIGRlZmF1bHQgcHJvZmlsZSBsZXZl
bCBpZCB3aWxsIGJlCiAvLyByZXR1cm5lZCBpZiB0aGUgcHJvZmlsZS1sZXZlbC1pZCBrZXkgaXMg
bWlzc2luZy4gTm90aGluZyB3aWxsIGJlIHJldHVybmVkIGlmCiAvLyB0aGUga2V5IGlzIHByZXNl
bnQgYnV0IHRoZSBzdHJpbmcgaXMgaW52YWxpZC4KLWFic2w6Om9wdGlvbmFsPFByb2ZpbGVMZXZl
bElkPiBQYXJzZVNkcFByb2ZpbGVMZXZlbElkKAorUlRDX0VYUE9SVCBhYnNsOjpvcHRpb25hbDxQ
cm9maWxlTGV2ZWxJZD4gUGFyc2VTZHBQcm9maWxlTGV2ZWxJZCgKICAgICBjb25zdCBDb2RlY1Bh
cmFtZXRlck1hcCYgcGFyYW1zKTsKIAogLy8gR2l2ZW4gdGhhdCBhIGRlY29kZXIgc3VwcG9ydHMg
dXAgdG8gYSBnaXZlbiBmcmFtZSBzaXplIChpbiBwaXhlbHMpIGF0IHVwIHRvIGEKIC8vIGdpdmVu
IG51bWJlciBvZiBmcmFtZXMgcGVyIHNlY29uZCwgcmV0dXJuIHRoZSBoaWdoZXN0IEguMjY0IGxl
dmVsIHdoZXJlIGl0CiAvLyBjYW4gZ3VhcmFudGVlIHRoYXQgaXQgd2lsbCBiZSBhYmxlIHRvIHN1
cHBvcnQgYWxsIHZhbGlkIGVuY29kZWQgc3RyZWFtcyB0aGF0CiAvLyBhcmUgd2l0aGluIHRoYXQg
bGV2ZWwuCi1hYnNsOjpvcHRpb25hbDxMZXZlbD4gU3VwcG9ydGVkTGV2ZWwoaW50IG1heF9mcmFt
ZV9waXhlbF9jb3VudCwgZmxvYXQgbWF4X2Zwcyk7CitSVENfRVhQT1JUIGFic2w6Om9wdGlvbmFs
PExldmVsPiBTdXBwb3J0ZWRMZXZlbChpbnQgbWF4X2ZyYW1lX3BpeGVsX2NvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4X2Zwcyk7
CiAKIC8vIFJldHVybnMgY2Fub25pY2FsIHN0cmluZyByZXByZXNlbnRhdGlvbiBhcyB0aHJlZSBo
ZXggYnl0ZXMgb2YgdGhlIHByb2ZpbGUKIC8vIGxldmVsIGlkLCBvciByZXR1cm5zIG5vdGhpbmcg
Zm9yIGludmFsaWQgcHJvZmlsZSBsZXZlbCBpZHMuCi1hYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmlu
Zz4gUHJvZmlsZUxldmVsSWRUb1N0cmluZygKK1JUQ19FWFBPUlQgYWJzbDo6b3B0aW9uYWw8c3Rk
OjpzdHJpbmc+IFByb2ZpbGVMZXZlbElkVG9TdHJpbmcoCiAgICAgY29uc3QgUHJvZmlsZUxldmVs
SWQmIHByb2ZpbGVfbGV2ZWxfaWQpOwogCiAvLyBHZW5lcmF0ZSBjb2RlYyBwYXJhbWV0ZXJzIHRo
YXQgd2lsbCBiZSB1c2VkIGFzIGFuc3dlciBpbiBhbiBTRFAgbmVnb3RpYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2Uv
bWVkaWFjaGFubmVsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuY2MKaW5kZXggY2JhM2JlMzBlZDE2MTZjZTMzNzVh
Y2FhMGE5ZDU3NjM3Njk4Y2Y5ZS4uMDYzNGIyZTU3NWY4YjJlYmFmZmMyMjk5ZTEyYjdlN2QwOTQ0
ZmI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuY2MKQEAgLTE2LDE2
ICsxNiwxOSBAQCBWaWRlb09wdGlvbnM6OlZpZGVvT3B0aW9ucygpID0gZGVmYXVsdDsKIFZpZGVv
T3B0aW9uczo6flZpZGVvT3B0aW9ucygpID0gZGVmYXVsdDsKIAogTWVkaWFDaGFubmVsOjpNZWRp
YUNoYW5uZWwoY29uc3QgTWVkaWFDb25maWcmIGNvbmZpZykKLSAgICA6IGVuYWJsZV9kc2NwXyhj
b25maWcuZW5hYmxlX2RzY3ApLCBuZXR3b3JrX2ludGVyZmFjZV8oTlVMTCkge30KKyAgICA6IGVu
YWJsZV9kc2NwXyhjb25maWcuZW5hYmxlX2RzY3ApIHt9CiAKLU1lZGlhQ2hhbm5lbDo6TWVkaWFD
aGFubmVsKCkgOiBlbmFibGVfZHNjcF8oZmFsc2UpLCBuZXR3b3JrX2ludGVyZmFjZV8oTlVMTCkg
e30KK01lZGlhQ2hhbm5lbDo6TWVkaWFDaGFubmVsKCkgOiBlbmFibGVfZHNjcF8oZmFsc2UpIHt9
CiAKIE1lZGlhQ2hhbm5lbDo6fk1lZGlhQ2hhbm5lbCgpIHt9CiAKLXZvaWQgTWVkaWFDaGFubmVs
OjpTZXRJbnRlcmZhY2UoTmV0d29ya0ludGVyZmFjZSogaWZhY2UpIHsKK3ZvaWQgTWVkaWFDaGFu
bmVsOjpTZXRJbnRlcmZhY2UoCisgICAgTmV0d29ya0ludGVyZmFjZSogaWZhY2UsCisgICAgd2Vi
cnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KSB7CiAgIHJ0Yzo6
Q3JpdFNjb3BlIGNzKCZuZXR3b3JrX2ludGVyZmFjZV9jcml0Xyk7CiAgIG5ldHdvcmtfaW50ZXJm
YWNlXyA9IGlmYWNlOwotICBTZXREc2NwKGVuYWJsZV9kc2NwXyA/IFByZWZlcnJlZERzY3AoKSA6
IHJ0Yzo6RFNDUF9ERUZBVUxUKTsKKyAgbWVkaWFfdHJhbnNwb3J0XyA9IG1lZGlhX3RyYW5zcG9y
dDsKKyAgVXBkYXRlRHNjcCgpOwogfQogCiBpbnQgTWVkaWFDaGFubmVsOjpHZXRSdHBTZW5kVGlt
ZUV4dG5JZCgpIGNvbnN0IHsKQEAgLTg0LDYgKzg3LDEwIEBAIHN0ZDo6bWFwPHN0ZDo6c3RyaW5n
LCBzdGQ6OnN0cmluZz4gQXVkaW9TZW5kUGFyYW1ldGVyczo6VG9TdHJpbmdNYXAoKSBjb25zdCB7
CiAgIHJldHVybiBwYXJhbXM7CiB9CiAKK2NyaWNrZXQ6Ok1lZGlhVHlwZSBWb2ljZU1lZGlhQ2hh
bm5lbDo6bWVkaWFfdHlwZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGNyaWNrZXQ6Ok1lZGlhVHlwZTo6
TUVESUFfVFlQRV9BVURJTzsKK30KKwogVmlkZW9TZW5kUGFyYW1ldGVyczo6VmlkZW9TZW5kUGFy
YW1ldGVycygpID0gZGVmYXVsdDsKIFZpZGVvU2VuZFBhcmFtZXRlcnM6On5WaWRlb1NlbmRQYXJh
bWV0ZXJzKCkgPSBkZWZhdWx0OwogCkBAIC05MywxMSArMTAwLDE5IEBAIHN0ZDo6bWFwPHN0ZDo6
c3RyaW5nLCBzdGQ6OnN0cmluZz4gVmlkZW9TZW5kUGFyYW1ldGVyczo6VG9TdHJpbmdNYXAoKSBj
b25zdCB7CiAgIHJldHVybiBwYXJhbXM7CiB9CiAKK2NyaWNrZXQ6Ok1lZGlhVHlwZSBWaWRlb01l
ZGlhQ2hhbm5lbDo6bWVkaWFfdHlwZSgpIGNvbnN0IHsKKyAgcmV0dXJuIGNyaWNrZXQ6Ok1lZGlh
VHlwZTo6TUVESUFfVFlQRV9WSURFTzsKK30KKwogRGF0YU1lZGlhQ2hhbm5lbDo6RGF0YU1lZGlh
Q2hhbm5lbCgpID0gZGVmYXVsdDsKIERhdGFNZWRpYUNoYW5uZWw6OkRhdGFNZWRpYUNoYW5uZWwo
Y29uc3QgTWVkaWFDb25maWcmIGNvbmZpZykKICAgICA6IE1lZGlhQ2hhbm5lbChjb25maWcpIHt9
CiBEYXRhTWVkaWFDaGFubmVsOjp+RGF0YU1lZGlhQ2hhbm5lbCgpID0gZGVmYXVsdDsKIAorY3Jp
Y2tldDo6TWVkaWFUeXBlIERhdGFNZWRpYUNoYW5uZWw6Om1lZGlhX3R5cGUoKSBjb25zdCB7Cisg
IHJldHVybiBjcmlja2V0OjpNZWRpYVR5cGU6Ok1FRElBX1RZUEVfREFUQTsKK30KKwogYm9vbCBE
YXRhTWVkaWFDaGFubmVsOjpHZXRTdGF0cyhEYXRhTWVkaWFJbmZvKiBpbmZvKSB7CiAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFjaGFubmVsLmgKaW5kZXggZmYz
MzY4Y2Y0MDFkNWY3OGFmMDc3OWM1NDdjZjBiMmVkN2NiMjgyZS4uZmNhNmVlNGRkOWJlNWE1NWZi
MjU4NTcwMjhlMzAwYTRmOGU3YTA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhY2hh
bm5lbC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiYXBpL2F1ZGlvX29wdGlvbnMuaCIK
ICNpbmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZGVjcnlwdG9yaW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiYXBpL2NyeXB0by9mcmFtZWVuY3J5cHRvcmludGVyZmFjZS5oIgorI2luY2x1ZGUgImFwaS9t
ZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYXBpL3J0Y2Vycm9yLmgiCiAj
aW5jbHVkZSAiYXBpL3J0cHBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJhcGkvcnRwcmVjZWl2ZXJp
bnRlcmZhY2UuaCIKQEAgLTE4MywxNCArMTg0LDIyIEBAIGNsYXNzIE1lZGlhQ2hhbm5lbCA6IHB1
YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIE1lZGlhQ2hhbm5lbCgpOwogICB+TWVkaWFD
aGFubmVsKCkgb3ZlcnJpZGU7CiAKLSAgLy8gU2V0cyB0aGUgYWJzdHJhY3QgaW50ZXJmYWNlIGNs
YXNzIGZvciBzZW5kaW5nIFJUUC9SVENQIGRhdGEuCi0gIHZpcnR1YWwgdm9pZCBTZXRJbnRlcmZh
Y2UoTmV0d29ya0ludGVyZmFjZSogaWZhY2UpOworICB2aXJ0dWFsIGNyaWNrZXQ6Ok1lZGlhVHlw
ZSBtZWRpYV90eXBlKCkgY29uc3QgPSAwOworCisgIC8vIFNldHMgdGhlIGFic3RyYWN0IGludGVy
ZmFjZSBjbGFzcyBmb3Igc2VuZGluZyBSVFAvUlRDUCBkYXRhIGFuZAorICAvLyBpbnRlcmZhY2Ug
Zm9yIG1lZGlhIHRyYW5zcG9ydCAoZXhwZXJpbWVudGFsKS4gSWYgbWVkaWEgdHJhbnNwb3J0IGlz
CisgIC8vIHByb3ZpZGVkLCBpdCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIFJUUC9SVENQLgor
ICAvLyBUT0RPKHN1a2hhbm92KTogQ3VycmVudGx5IG1lZGlhIHRyYW5zcG9ydCBjYW4gY28tZXhp
c3Qgd2l0aCBSVFAvUlRDUCwgYnV0CisgIC8vIGluIHRoZSBmdXR1cmUgd2Ugd2lsbCByZWZhY3Rv
ciBjb2RlIHRvIHNlbmQgYWxsIGZyYW1lcyB3aXRoIG1lZGlhCisgIC8vIHRyYW5zcG9ydC4KKyAg
dmlydHVhbCB2b2lkIFNldEludGVyZmFjZShOZXR3b3JrSW50ZXJmYWNlKiBpZmFjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBt
ZWRpYV90cmFuc3BvcnQpOwogICAvLyBDYWxsZWQgd2hlbiBhIFJUUCBwYWNrZXQgaXMgcmVjZWl2
ZWQuCiAgIHZpcnR1YWwgdm9pZCBPblBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZm
ZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQ
YWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSA9IDA7CiAgIC8vIENhbGxlZCB3aGVuIGEgUlRD
UCBwYWNrZXQgaXMgcmVjZWl2ZWQuCiAgIHZpcnR1YWwgdm9pZCBPblJ0Y3BSZWNlaXZlZChydGM6
OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSA9IDA7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSA9IDA7CiAgIC8vIENhbGxl
ZCB3aGVuIHRoZSBzb2NrZXQncyBhYmlsaXR5IHRvIHNlbmQgaGFzIGNoYW5nZWQuCiAgIHZpcnR1
YWwgdm9pZCBPblJlYWR5VG9TZW5kKGJvb2wgcmVhZHkpID0gMDsKICAgLy8gQ2FsbGVkIHdoZW4g
dGhlIG5ldHdvcmsgcm91dGUgdXNlZCBmb3Igc2VuZGluZyBwYWNrZXRzIGNoYW5nZWQuCkBAIC0y
NTEsMTQgKzI2MCwyOCBAQCBjbGFzcyBNZWRpYUNoYW5uZWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFz
X3Nsb3RzPD4gewogICAgIHJldHVybiBuZXR3b3JrX2ludGVyZmFjZV8tPlNldE9wdGlvbih0eXBl
LCBvcHQsIG9wdGlvbik7CiAgIH0KIAorICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNl
KiBtZWRpYV90cmFuc3BvcnQoKSB7CisgICAgcmV0dXJuIG1lZGlhX3RyYW5zcG9ydF87CisgIH0K
KworICAvLyBDb3JyZXNwb25kcyB0byB0aGUgU0RQIGF0dHJpYnV0ZSBleHRtYXAtYWxsb3ctbWl4
ZWQsIHNlZSBSRkM4Mjg1LgorICAvLyBTZXQgdG8gdHJ1ZSBpZiBpdCdzIGFsbG93ZWQgdG8gbWl4
IG9uZS0gYW5kIHR3by1ieXRlIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucworICAvLyBpbiB0aGUgc2Ft
ZSBzdHJlYW0uIFRoZSBzZXR0ZXIgYW5kIGdldHRlciBtdXN0IG9ubHkgYmUgY2FsbGVkIGZyb20K
KyAgLy8gd29ya2VyX3RocmVhZC4KKyAgdm9pZCBTZXRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0
bWFwX2FsbG93X21peGVkKSB7CisgICAgZXh0bWFwX2FsbG93X21peGVkXyA9IGV4dG1hcF9hbGxv
d19taXhlZDsKKyAgfQorICBib29sIEV4dG1hcEFsbG93TWl4ZWQoKSBjb25zdCB7IHJldHVybiBl
eHRtYXBfYWxsb3dfbWl4ZWRfOyB9CisKICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgcnRjOjpEaWZm
U2VydkNvZGVQb2ludCBQcmVmZXJyZWREc2NwKCkgY29uc3Q7CiAKICAgYm9vbCBEc2NwRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIGVuYWJsZV9kc2NwXzsgfQogCi0gcHJpdmF0ZToKICAgLy8gVGhp
cyBtZXRob2Qgc2V0cyBEU0NQIHx2YWx1ZXwgb24gYm90aCBSVFAgYW5kIFJUQ1AgY2hhbm5lbHMu
Ci0gIGludCBTZXREc2NwKHJ0Yzo6RGlmZlNlcnZDb2RlUG9pbnQgdmFsdWUpIHsKKyAgaW50IFVw
ZGF0ZURzY3AoKSB7CisgICAgcnRjOjpEaWZmU2VydkNvZGVQb2ludCB2YWx1ZSA9CisgICAgICAg
IGVuYWJsZV9kc2NwXyA/IFByZWZlcnJlZERzY3AoKSA6IHJ0Yzo6RFNDUF9ERUZBVUxUOwogICAg
IGludCByZXQ7CiAgICAgcmV0ID0gU2V0T3B0aW9uKE5ldHdvcmtJbnRlcmZhY2U6OlNUX1JUUCwg
cnRjOjpTb2NrZXQ6Ok9QVF9EU0NQLCB2YWx1ZSk7CiAgICAgaWYgKHJldCA9PSAwKSB7CkBAIC0y
NjcsNiArMjkwLDcgQEAgY2xhc3MgTWVkaWFDaGFubmVsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19z
bG90czw+IHsKICAgICByZXR1cm4gcmV0OwogICB9CiAKKyBwcml2YXRlOgogICBib29sIERvU2Vu
ZFBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCiAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgcnRjcCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRPcHRp
b25zJiBvcHRpb25zKSB7CkBAIC0yODMsNyArMzA3LDkgQEAgY2xhc3MgTWVkaWFDaGFubmVsIDog
cHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgLy8gZnJvbSBhbnkgTWVkaWFFbmdpbmUg
dGhyZWFkcy4gVGhpcyBjcml0aWNhbCBzZWN0aW9uIGlzIHRvIHByb3RlY3QgYWNjZXNzaW5nCiAg
IC8vIG9mIG5ldHdvcmtfaW50ZXJmYWNlXyBvYmplY3QuCiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9u
IG5ldHdvcmtfaW50ZXJmYWNlX2NyaXRfOwotICBOZXR3b3JrSW50ZXJmYWNlKiBuZXR3b3JrX2lu
dGVyZmFjZV87CisgIE5ldHdvcmtJbnRlcmZhY2UqIG5ldHdvcmtfaW50ZXJmYWNlXyA9IG51bGxw
dHI7CisgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydF8g
PSBudWxscHRyOworICBib29sIGV4dG1hcF9hbGxvd19taXhlZF8gPSBmYWxzZTsKIH07CiAKIC8v
IFRoZSBzdGF0cyBpbmZvcm1hdGlvbiBpcyBzdHJ1Y3R1cmVkIGFzIGZvbGxvd3M6CkBAIC00MDIs
MTQgKzQyOCw2IEBAIHN0cnVjdCBWb2ljZVNlbmRlckluZm8gOiBwdWJsaWMgTWVkaWFTZW5kZXJJ
bmZvIHsKICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8jZG9tLXJ0Y21l
ZGlhc3RyZWFtdHJhY2tzdGF0cy10b3RhbGF1ZGlvZW5lcmd5CiAgIGRvdWJsZSB0b3RhbF9pbnB1
dF9lbmVyZ3kgPSAwLjA7CiAgIGRvdWJsZSB0b3RhbF9pbnB1dF9kdXJhdGlvbiA9IDAuMDsKLSAg
Ly8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODU3Mik6IFJlbW92ZSBBUE0gc3RhdHMgZnJvbSB0aGlz
IHN0cnVjdCwgc2luY2UgdGhleQotICAvLyBhcmUgbm8gbG9uZ2VyIG5lZWRlZCBub3cgdGhhdCB3
ZSBoYXZlIGFwbV9zdGF0aXN0aWNzLgotICBpbnQgZWNob19kZWxheV9tZWRpYW5fbXMgPSAwOwot
ICBpbnQgZWNob19kZWxheV9zdGRfbXMgPSAwOwotICBpbnQgZWNob19yZXR1cm5fbG9zcyA9IDA7
Ci0gIGludCBlY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0gMDsKLSAgZmxvYXQgcmVzaWR1
YWxfZWNob19saWtlbGlob29kID0gMC4wZjsKLSAgZmxvYXQgcmVzaWR1YWxfZWNob19saWtlbGlo
b29kX3JlY2VudF9tYXggPSAwLjBmOwogICBib29sIHR5cGluZ19ub2lzZV9kZXRlY3RlZCA9IGZh
bHNlOwogICB3ZWJydGM6OkFOQVN0YXRzIGFuYV9zdGF0aXN0aWNzOwogICB3ZWJydGM6OkF1ZGlv
UHJvY2Vzc2luZ1N0YXRzIGFwbV9zdGF0aXN0aWNzOwpAQCAtNDU4LDYgKzQ3NiwxMCBAQCBzdHJ1
Y3QgVm9pY2VSZWNlaXZlckluZm8gOiBwdWJsaWMgTWVkaWFSZWNlaXZlckluZm8gewogICBpbnQg
ZGVjb2RpbmdfbXV0ZWRfb3V0cHV0ID0gMDsKICAgLy8gRXN0aW1hdGVkIGNhcHR1cmUgc3RhcnQg
dGltZSBpbiBOVFAgdGltZSBpbiBtcy4KICAgaW50NjRfdCBjYXB0dXJlX3N0YXJ0X250cF90aW1l
X21zID0gLTE7CisgIC8vIENvdW50IG9mIHRoZSBudW1iZXIgb2YgYnVmZmVyIGZsdXNoZXMuCisg
IHVpbnQ2NF90IGppdHRlcl9idWZmZXJfZmx1c2hlcyA9IDA7CisgIC8vIE51bWJlciBvZiBzYW1w
bGVzIGV4cGFuZGVkIGR1ZSB0byBkZWxheWVkIHBhY2tldHMuCisgIHVpbnQ2NF90IGRlbGF5ZWRf
cGFja2V0X291dGFnZV9zYW1wbGVzID0gMDsKIH07CiAKIHN0cnVjdCBWaWRlb1NlbmRlckluZm8g
OiBwdWJsaWMgTWVkaWFTZW5kZXJJbmZvIHsKQEAgLTY0NywxMiArNjY5LDE0IEBAIHN0cnVjdCBS
dHBTZW5kUGFyYW1ldGVycyA6IFJ0cFBhcmFtZXRlcnM8Q29kZWM+IHsKICAgLy8gVGhpcyBpcyB0
aGUgdmFsdWUgdG8gYmUgc2VudCBpbiB0aGUgTUlEIFJUUCBoZWFkZXIgZXh0ZW5zaW9uIChpZiB0
aGUgaGVhZGVyCiAgIC8vIGV4dGVuc2lvbiBpbiBpbmNsdWRlZCBpbiB0aGUgbGlzdCBvZiBleHRl
bnNpb25zKS4KICAgc3RkOjpzdHJpbmcgbWlkOworICBib29sIGV4dG1hcF9hbGxvd19taXhlZCA9
IGZhbHNlOwogCiAgcHJvdGVjdGVkOgogICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJp
bmc+IFRvU3RyaW5nTWFwKCkgY29uc3Qgb3ZlcnJpZGUgewogICAgIGF1dG8gcGFyYW1zID0gUnRw
UGFyYW1ldGVyczxDb2RlYz46OlRvU3RyaW5nTWFwKCk7CiAgICAgcGFyYW1zWyJtYXhfYmFuZHdp
ZHRoX2JwcyJdID0gcnRjOjpUb1N0cmluZyhtYXhfYmFuZHdpZHRoX2Jwcyk7CiAgICAgcGFyYW1z
WyJtaWQiXSA9IChtaWQuZW1wdHkoKSA/ICI8bm90IHNldD4iIDogbWlkKTsKKyAgICBwYXJhbXNb
ImV4dG1hcC1hbGxvdy1taXhlZCJdID0gZXh0bWFwX2FsbG93X21peGVkID8gInRydWUiIDogImZh
bHNlIjsKICAgICByZXR1cm4gcGFyYW1zOwogICB9CiB9OwpAQCAtNjc0LDYgKzY5OCw4IEBAIGNs
YXNzIFZvaWNlTWVkaWFDaGFubmVsIDogcHVibGljIE1lZGlhQ2hhbm5lbCB7CiAgIGV4cGxpY2l0
IFZvaWNlTWVkaWFDaGFubmVsKGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcpCiAgICAgICA6IE1l
ZGlhQ2hhbm5lbChjb25maWcpIHt9CiAgIH5Wb2ljZU1lZGlhQ2hhbm5lbCgpIG92ZXJyaWRlIHt9
CisKKyAgY3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUoKSBjb25zdCBvdmVycmlkZTsKICAg
dmlydHVhbCBib29sIFNldFNlbmRQYXJhbWV0ZXJzKGNvbnN0IEF1ZGlvU2VuZFBhcmFtZXRlcnMm
IHBhcmFtcykgPSAwOwogICB2aXJ0dWFsIGJvb2wgU2V0UmVjdlBhcmFtZXRlcnMoY29uc3QgQXVk
aW9SZWN2UGFyYW1ldGVycyYgcGFyYW1zKSA9IDA7CiAgIHZpcnR1YWwgd2VicnRjOjpSdHBQYXJh
bWV0ZXJzIEdldFJ0cFNlbmRQYXJhbWV0ZXJzKHVpbnQzMl90IHNzcmMpIGNvbnN0ID0gMDsKQEAg
LTc0Niw2ICs3NzIsNyBAQCBjbGFzcyBWaWRlb01lZGlhQ2hhbm5lbCA6IHB1YmxpYyBNZWRpYUNo
YW5uZWwgewogICAgICAgOiBNZWRpYUNoYW5uZWwoY29uZmlnKSB7fQogICB+VmlkZW9NZWRpYUNo
YW5uZWwoKSBvdmVycmlkZSB7fQogCisgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgIHZpcnR1YWwgYm9vbCBTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBW
aWRlb1NlbmRQYXJhbWV0ZXJzJiBwYXJhbXMpID0gMDsKICAgdmlydHVhbCBib29sIFNldFJlY3ZQ
YXJhbWV0ZXJzKGNvbnN0IFZpZGVvUmVjdlBhcmFtZXRlcnMmIHBhcmFtcykgPSAwOwogICB2aXJ0
dWFsIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBHZXRSdHBTZW5kUGFyYW1ldGVycyh1aW50MzJfdCBz
c3JjKSBjb25zdCA9IDA7CkBAIC04NTcsNiArODg0LDcgQEAgY2xhc3MgRGF0YU1lZGlhQ2hhbm5l
bCA6IHB1YmxpYyBNZWRpYUNoYW5uZWwgewogICBleHBsaWNpdCBEYXRhTWVkaWFDaGFubmVsKGNv
bnN0IE1lZGlhQ29uZmlnJiBjb25maWcpOwogICB+RGF0YU1lZGlhQ2hhbm5lbCgpIG92ZXJyaWRl
OwogCisgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
IHZpcnR1YWwgYm9vbCBTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBEYXRhU2VuZFBhcmFtZXRlcnMm
IHBhcmFtcykgPSAwOwogICB2aXJ0dWFsIGJvb2wgU2V0UmVjdlBhcmFtZXRlcnMoY29uc3QgRGF0
YVJlY3ZQYXJhbWV0ZXJzJiBwYXJhbXMpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNvbmZpZy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRp
YWNvbmZpZy5oCmluZGV4IGVkYTM4N2UzMTkxMTJiMzIxZjJmZDhlNjhiNjhmMjNkNWIwYmYwODku
LmM4ZmM1MjEyYTBmOGNiYzViMjczODZiNTg3ZWY0NjA1M2NhNWZiNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVkaWFj
b25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9iYXNlL21lZGlhY29uZmlnLmgKQEAgLTU5LDggKzU5LDE3IEBAIHN0cnVjdCBNZWRpYUNv
bmZpZyB7CiAgICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODUwNCk6IElmIGFsbCBnb2VzIHdl
bGwsIHRoZSBmbGFnIHdpbGwgYmUgcmVtb3ZlZAogICAgIC8vIHRvZ2V0aGVyIHdpdGggdGhlIG9s
ZCBtZXRob2Qgb2YgZXN0aW1hdGlvbi4KICAgICBib29sIGV4cGVyaW1lbnRfY3B1X2xvYWRfZXN0
aW1hdG9yID0gZmFsc2U7CisKKyAgICAvLyBUaW1lIGludGVydmFsIGJldHdlZW4gUlRDUCByZXBv
cnQgZm9yIHZpZGVvCisgICAgaW50IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID0gMTAwMDsKICAg
fSB2aWRlbzsKIAorICAvLyBBdWRpby1zcGVjaWZpYyBjb25maWcuCisgIHN0cnVjdCBBdWRpbyB7
CisgICAgLy8gVGltZSBpbnRlcnZhbCBiZXR3ZWVuIFJUQ1AgcmVwb3J0IGZvciBhdWRpbworICAg
IGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IDUwMDA7CisgIH0gYXVkaW87CisKICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhQ29uZmlnJiBvKSBjb25zdCB7CiAgICAgcmV0dXJuIGVu
YWJsZV9kc2NwID09IG8uZW5hYmxlX2RzY3AgJiYKICAgICAgICAgICAgdmlkZW8uZW5hYmxlX2Nw
dV9hZGFwdGF0aW9uID09IG8udmlkZW8uZW5hYmxlX2NwdV9hZGFwdGF0aW9uICYmCkBAIC03MSw3
ICs4MCw5IEBAIHN0cnVjdCBNZWRpYUNvbmZpZyB7CiAgICAgICAgICAgIHZpZGVvLnBlcmlvZGlj
X2Fscl9iYW5kd2lkdGhfcHJvYmluZyA9PQogICAgICAgICAgICAgICAgby52aWRlby5wZXJpb2Rp
Y19hbHJfYmFuZHdpZHRoX3Byb2JpbmcgJiYKICAgICAgICAgICAgdmlkZW8uZXhwZXJpbWVudF9j
cHVfbG9hZF9lc3RpbWF0b3IgPT0KLSAgICAgICAgICAgICAgIG8udmlkZW8uZXhwZXJpbWVudF9j
cHVfbG9hZF9lc3RpbWF0b3I7CisgICAgICAgICAgICAgICBvLnZpZGVvLmV4cGVyaW1lbnRfY3B1
X2xvYWRfZXN0aW1hdG9yICYmCisgICAgICAgICAgIHZpZGVvLnJ0Y3BfcmVwb3J0X2ludGVydmFs
X21zID09IG8udmlkZW8ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgJiYKKyAgICAgICAgICAgYXVk
aW8ucnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMgPT0gby5hdWRpby5ydGNwX3JlcG9ydF9pbnRlcnZh
bF9tczsKICAgfQogCiAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNZWRpYUNvbmZpZyYgbykgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRp
YWNvbnN0YW50cy5oCmluZGV4IDE0YzQ5YmFmNzJjYmFkMWM1YTkyMDI4YjQ3OWEwYjE3M2MwZGFi
Y2QuLmM0YTM0MDZmZDg1YTIzYThhYWJhMzQwM2MzMTljNmU4MTFmNWE2ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvbWVk
aWFjb25zdGFudHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgKQEAgLTEzLDYgKzEzLDggQEAKIAogI2lu
Y2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0Lmgi
CisKIC8vIFRoaXMgZmlsZSBjb250YWlucyBjb25zdGFudHMgcmVsYXRlZCB0byBtZWRpYS4KIAog
bmFtZXNwYWNlIGNyaWNrZXQgewpAQCAtMTI3LDEyICsxMjksMTIgQEAgZXh0ZXJuIGNvbnN0IGNo
YXIga0NvbWZvcnROb2lzZUNvZGVjTmFtZVtdOwogCiBleHRlcm4gY29uc3QgY2hhciBrVnA4Q29k
ZWNOYW1lW107CiBleHRlcm4gY29uc3QgY2hhciBrVnA5Q29kZWNOYW1lW107Ci1leHRlcm4gY29u
c3QgY2hhciBrSDI2NENvZGVjTmFtZVtdOworUlRDX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciBr
SDI2NENvZGVjTmFtZVtdOwogCiAvLyBSRkMgNjE4NCBSVFAgUGF5bG9hZCBGb3JtYXQgZm9yIEgu
MjY0IHZpZGVvCi1leHRlcm4gY29uc3QgY2hhciBrSDI2NEZtdHBQcm9maWxlTGV2ZWxJZFtdOwot
ZXh0ZXJuIGNvbnN0IGNoYXIga0gyNjRGbXRwTGV2ZWxBc3ltbWV0cnlBbGxvd2VkW107Ci1leHRl
cm4gY29uc3QgY2hhciBrSDI2NEZtdHBQYWNrZXRpemF0aW9uTW9kZVtdOworUlRDX0VYUE9SVCBl
eHRlcm4gY29uc3QgY2hhciBrSDI2NEZtdHBQcm9maWxlTGV2ZWxJZFtdOworUlRDX0VYUE9SVCBl
eHRlcm4gY29uc3QgY2hhciBrSDI2NEZtdHBMZXZlbEFzeW1tZXRyeUFsbG93ZWRbXTsKK1JUQ19F
WFBPUlQgZXh0ZXJuIGNvbnN0IGNoYXIga0gyNjRGbXRwUGFja2V0aXphdGlvbk1vZGVbXTsKIGV4
dGVybiBjb25zdCBjaGFyIGtIMjY0Rm10cFNwcm9wUGFyYW1ldGVyU2V0c1tdOwogZXh0ZXJuIGNv
bnN0IGNoYXIga0gyNjRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEJhc2VsaW5lW107CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jh
c2UvbWVkaWFlbmdpbmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9iYXNlL21lZGlhZW5naW5lLmNjCmluZGV4IDc2Y2FjNGI0MzgzNDJlMGFiZTIy
NmE3Mjc2NWQwNDYyOWQ1ODIzYjcuLmQ1MTk4ZmU2NGYxOTAxZTAwM2RmNDgyMjkzOTgzNGRjZjFi
Y2VmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2Jhc2UvbWVkaWFlbmdpbmUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5jYwpAQCAtMTAsNiAr
MTAsOCBAQAogCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5oIgogCisjaW5jbHVk
ZSA8dXRpbGl0eT4KKwogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRp
b24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKIApAQCAtMTA0LDQgKzEw
NiwzMyBAQCB3ZWJydGM6OlJUQ0Vycm9yIFZhbGlkYXRlUnRwUGFyYW1ldGVycygKICAgcmV0dXJu
IHdlYnJ0Yzo6UlRDRXJyb3I6Ok9LKCk7CiB9CiAKK0NvbXBvc2l0ZU1lZGlhRW5naW5lOjpDb21w
b3NpdGVNZWRpYUVuZ2luZSgKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Vm9pY2VFbmdpbmVJbnRlcmZh
Y2U+IHZvaWNlX2VuZ2luZSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmdpbmVJbnRlcmZh
Y2U+IHZpZGVvX2VuZ2luZSkKKyAgICA6IHZvaWNlX2VuZ2luZV8oc3RkOjptb3ZlKHZvaWNlX2Vu
Z2luZSkpLAorICAgICAgdmlkZW9fZW5naW5lXyhzdGQ6Om1vdmUodmlkZW9fZW5naW5lKSkge30K
KworQ29tcG9zaXRlTWVkaWFFbmdpbmU6On5Db21wb3NpdGVNZWRpYUVuZ2luZSgpID0gZGVmYXVs
dDsKKworYm9vbCBDb21wb3NpdGVNZWRpYUVuZ2luZTo6SW5pdCgpIHsKKyAgdm9pY2UoKS5Jbml0
KCk7CisgIHJldHVybiB0cnVlOworfQorCitWb2ljZUVuZ2luZUludGVyZmFjZSYgQ29tcG9zaXRl
TWVkaWFFbmdpbmU6OnZvaWNlKCkgeworICByZXR1cm4gKnZvaWNlX2VuZ2luZV8uZ2V0KCk7Cit9
CisKK1ZpZGVvRW5naW5lSW50ZXJmYWNlJiBDb21wb3NpdGVNZWRpYUVuZ2luZTo6dmlkZW8oKSB7
CisgIHJldHVybiAqdmlkZW9fZW5naW5lXy5nZXQoKTsKK30KKworY29uc3QgVm9pY2VFbmdpbmVJ
bnRlcmZhY2UmIENvbXBvc2l0ZU1lZGlhRW5naW5lOjp2b2ljZSgpIGNvbnN0IHsKKyAgcmV0dXJu
ICp2b2ljZV9lbmdpbmVfLmdldCgpOworfQorCitjb25zdCBWaWRlb0VuZ2luZUludGVyZmFjZSYg
Q29tcG9zaXRlTWVkaWFFbmdpbmU6OnZpZGVvKCkgY29uc3QgeworICByZXR1cm4gKnZpZGVvX2Vu
Z2luZV8uZ2V0KCk7Cit9CisKIH07ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9tZWRp
YWVuZ2luZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvYmFzZS9tZWRpYWVuZ2luZS5oCmluZGV4IDAxYzZmYjY1MjY5ZWEyZTcyNjEyNGRlOWFiYjcy
ODlkNTY2NTRiZGIuLjAxMzAwZDQ4YWMzNzBiN2E5NWE2ZGFhNzg4YTZmNDkyYzQ2YzdhM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2Jhc2UvbWVkaWFlbmdpbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL21lZGlhZW5naW5lLmgKQEAgLTE1LDEzICsxNSwxMyBAQAog
I2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW8uaD4KICNlbmRpZgogCisjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx0dXBsZT4KLSNpbmNsdWRlIDx1dGls
aXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVk
aW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19l
bmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIK
ICNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgogI2luY2x1ZGUgImNhbGwvYXVkaW9fc3Rh
dGUuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2NvZGVjLmgiCkBAIC00OCwzNyArNDgsMzAgQEAg
c3RydWN0IFJ0cENhcGFiaWxpdGllcyB7CiAgIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwRXh0ZW5z
aW9uPiBoZWFkZXJfZXh0ZW5zaW9uczsKIH07CiAKLS8vIE1lZGlhRW5naW5lSW50ZXJmYWNlIGlz
IGFuIGFic3RyYWN0aW9uIG9mIGEgbWVkaWEgZW5naW5lIHdoaWNoIGNhbiBiZQotLy8gc3ViY2xh
c3NlZCB0byBzdXBwb3J0IGRpZmZlcmVudCBtZWRpYSBjb21wb25lbnRyeSBiYWNrZW5kcy4KLS8v
IEl0IHN1cHBvcnRzIHZvaWNlIGFuZCB2aWRlbyBvcGVyYXRpb25zIGluIHRoZSBzYW1lIGNsYXNz
IHRvIGZhY2lsaXRhdGUKLS8vIHByb3BlciBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBib3RoIG1l
ZGlhIHR5cGVzLgotY2xhc3MgTWVkaWFFbmdpbmVJbnRlcmZhY2UgeworY2xhc3MgVm9pY2VFbmdp
bmVJbnRlcmZhY2UgewogIHB1YmxpYzoKLSAgdmlydHVhbCB+TWVkaWFFbmdpbmVJbnRlcmZhY2Uo
KSB7fQorICBWb2ljZUVuZ2luZUludGVyZmFjZSgpID0gZGVmYXVsdDsKKyAgdmlydHVhbCB+Vm9p
Y2VFbmdpbmVJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9B
U1NJR04oVm9pY2VFbmdpbmVJbnRlcmZhY2UpOwogCiAgIC8vIEluaXRpYWxpemF0aW9uCiAgIC8v
IFN0YXJ0cyB0aGUgZW5naW5lLgotICB2aXJ0dWFsIGJvb2wgSW5pdCgpID0gMDsKKyAgdmlydHVh
bCB2b2lkIEluaXQoKSA9IDA7CisKICAgLy8gVE9ETyhzb2xlbmJlcmcpOiBSZW1vdmUgb25jZSBW
b0UgQVBJIHJlZmFjdG9yaW5nIGlzIGRvbmUuCiAgIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6QXVkaW9TdGF0ZT4gR2V0QXVkaW9TdGF0ZSgpIGNvbnN0ID0gMDsKIAogICAvLyBN
ZWRpYUNoYW5uZWwgY3JlYXRpb24KICAgLy8gQ3JlYXRlcyBhIHZvaWNlIG1lZGlhIGNoYW5uZWwu
IFJldHVybnMgTlVMTCBvbiBmYWlsdXJlLgotICB2aXJ0dWFsIFZvaWNlTWVkaWFDaGFubmVsKiBD
cmVhdGVDaGFubmVsKHdlYnJ0Yzo6Q2FsbCogY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0
aW9ucykgPSAwOwotICAvLyBDcmVhdGVzIGEgdmlkZW8gbWVkaWEgY2hhbm5lbCwgcGFpcmVkIHdp
dGggdGhlIHNwZWNpZmllZCB2b2ljZSBjaGFubmVsLgotICAvLyBSZXR1cm5zIE5VTEwgb24gZmFp
bHVyZS4KLSAgdmlydHVhbCBWaWRlb01lZGlhQ2hhbm5lbCogQ3JlYXRlVmlkZW9DaGFubmVsKAor
ICB2aXJ0dWFsIFZvaWNlTWVkaWFDaGFubmVsKiBDcmVhdGVNZWRpYUNoYW5uZWwoCiAgICAgICB3
ZWJydGM6OkNhbGwqIGNhbGwsCiAgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAg
ICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zKSA9IDA7CisgICAgICBjb25zdCBBdWRpb09w
dGlvbnMmIG9wdGlvbnMsCisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0
b19vcHRpb25zKSA9IDA7CiAKLSAgdmlydHVhbCBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVj
PiYgYXVkaW9fc2VuZF9jb2RlY3MoKSA9IDA7Ci0gIHZpcnR1YWwgY29uc3Qgc3RkOjp2ZWN0b3I8
QXVkaW9Db2RlYz4mIGF1ZGlvX3JlY3ZfY29kZWNzKCkgPSAwOwotICB2aXJ0dWFsIFJ0cENhcGFi
aWxpdGllcyBHZXRBdWRpb0NhcGFiaWxpdGllcygpID0gMDsKLSAgdmlydHVhbCBzdGQ6OnZlY3Rv
cjxWaWRlb0NvZGVjPiB2aWRlb19jb2RlY3MoKSA9IDA7Ci0gIHZpcnR1YWwgUnRwQ2FwYWJpbGl0
aWVzIEdldFZpZGVvQ2FwYWJpbGl0aWVzKCkgPSAwOworICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dmVj
dG9yPEF1ZGlvQ29kZWM+JiBzZW5kX2NvZGVjcygpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBjb25z
dCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgcmVjdl9jb2RlY3MoKSBjb25zdCA9IDA7CisgIHZp
cnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldENhcGFiaWxpdGllcygpIGNvbnN0ID0gMDsKIAogICAv
LyBTdGFydHMgQUVDIGR1bXAgdXNpbmcgZXhpc3RpbmcgZmlsZSwgYSBtYXhpbXVtIGZpbGUgc2l6
ZSBpbiBieXRlcyBjYW4gYmUKICAgLy8gc3BlY2lmaWVkLiBMb2dnaW5nIGlzIHN0b3BwZWQganVz
dCBiZWZvcmUgdGhlIHNpemUgbGltaXQgaXMgZXhjZWVkZWQuCkBAIC04OSw2OSArODIsNjYgQEAg
Y2xhc3MgTWVkaWFFbmdpbmVJbnRlcmZhY2UgewogICB2aXJ0dWFsIHZvaWQgU3RvcEFlY0R1bXAo
KSA9IDA7CiB9OwogCitjbGFzcyBWaWRlb0VuZ2luZUludGVyZmFjZSB7CisgcHVibGljOgorICBW
aWRlb0VuZ2luZUludGVyZmFjZSgpID0gZGVmYXVsdDsKKyAgdmlydHVhbCB+VmlkZW9FbmdpbmVJ
bnRlcmZhY2UoKSA9IGRlZmF1bHQ7CisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmlk
ZW9FbmdpbmVJbnRlcmZhY2UpOworCisgIC8vIENyZWF0ZXMgYSB2aWRlbyBtZWRpYSBjaGFubmVs
LCBwYWlyZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHZvaWNlIGNoYW5uZWwuCisgIC8vIFJldHVybnMg
TlVMTCBvbiBmYWlsdXJlLgorICB2aXJ0dWFsIFZpZGVvTWVkaWFDaGFubmVsKiBDcmVhdGVNZWRp
YUNoYW5uZWwoCisgICAgICB3ZWJydGM6OkNhbGwqIGNhbGwsCisgICAgICBjb25zdCBNZWRpYUNv
bmZpZyYgY29uZmlnLAorICAgICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zLAorICAgICAg
Y29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykgPSAwOworCisgIHZp
cnR1YWwgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNzKCkgY29uc3QgPSAwOworICB2aXJ0
dWFsIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7Cit9OworCisv
LyBNZWRpYUVuZ2luZUludGVyZmFjZSBpcyBhbiBhYnN0cmFjdGlvbiBvZiBhIG1lZGlhIGVuZ2lu
ZSB3aGljaCBjYW4gYmUKKy8vIHN1YmNsYXNzZWQgdG8gc3VwcG9ydCBkaWZmZXJlbnQgbWVkaWEg
Y29tcG9uZW50cnkgYmFja2VuZHMuCisvLyBJdCBzdXBwb3J0cyB2b2ljZSBhbmQgdmlkZW8gb3Bl
cmF0aW9ucyBpbiB0aGUgc2FtZSBjbGFzcyB0byBmYWNpbGl0YXRlCisvLyBwcm9wZXIgc3luY2hy
b25pemF0aW9uIGJldHdlZW4gYm90aCBtZWRpYSB0eXBlcy4KK2NsYXNzIE1lZGlhRW5naW5lSW50
ZXJmYWNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfk1lZGlhRW5naW5lSW50ZXJmYWNlKCkge30K
KworICAvLyBJbml0aWFsaXphdGlvbgorICAvLyBTdGFydHMgdGhlIGVuZ2luZS4KKyAgdmlydHVh
bCBib29sIEluaXQoKSA9IDA7CisgIHZpcnR1YWwgVm9pY2VFbmdpbmVJbnRlcmZhY2UmIHZvaWNl
KCkgPSAwOworICB2aXJ0dWFsIFZpZGVvRW5naW5lSW50ZXJmYWNlJiB2aWRlbygpID0gMDsKKyAg
dmlydHVhbCBjb25zdCBWb2ljZUVuZ2luZUludGVyZmFjZSYgdm9pY2UoKSBjb25zdCA9IDA7Cisg
IHZpcnR1YWwgY29uc3QgVmlkZW9FbmdpbmVJbnRlcmZhY2UmIHZpZGVvKCkgY29uc3QgPSAwOwor
fTsKKwogLy8gQ29tcG9zaXRlTWVkaWFFbmdpbmUgY29uc3RydWN0cyBhIE1lZGlhRW5naW5lIGZy
b20gc2VwYXJhdGUKIC8vIHZvaWNlIGFuZCB2aWRlbyBlbmdpbmUgY2xhc3Nlcy4KLXRlbXBsYXRl
IDxjbGFzcyBWT0lDRSwgY2xhc3MgVklERU8+CiBjbGFzcyBDb21wb3NpdGVNZWRpYUVuZ2luZSA6
IHB1YmxpYyBNZWRpYUVuZ2luZUludGVyZmFjZSB7CiAgcHVibGljOgotICB0ZW1wbGF0ZSA8Y2xh
c3MuLi4gQXJnczEsIGNsYXNzLi4uIEFyZ3MyPgotICBDb21wb3NpdGVNZWRpYUVuZ2luZShzdGQ6
OnR1cGxlPEFyZ3MxLi4uPiBmaXJzdF9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnR1cGxlPEFyZ3MyLi4uPiBzZWNvbmRfYXJncykKLSAgICAgIDogZW5naW5lc18oc3RkOjpwaWVj
ZXdpc2VfY29uc3RydWN0LAotICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoZmlyc3RfYXJncyks
Ci0gICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShzZWNvbmRfYXJncykpIHt9Ci0KLSAgdmlydHVh
bCB+Q29tcG9zaXRlTWVkaWFFbmdpbmUoKSB7fQotICB2aXJ0dWFsIGJvb2wgSW5pdCgpIHsKLSAg
ICB2b2ljZSgpLkluaXQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHZpcnR1YWwgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4gR2V0QXVkaW9TdGF0ZSgpIGNvbnN0
IHsKLSAgICByZXR1cm4gdm9pY2UoKS5HZXRBdWRpb1N0YXRlKCk7Ci0gIH0KLSAgdmlydHVhbCBW
b2ljZU1lZGlhQ2hhbm5lbCogQ3JlYXRlQ2hhbm5lbCh3ZWJydGM6OkNhbGwqIGNhbGwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVkaWFDb25maWcm
IGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBBdWRpb09wdGlvbnMmIG9wdGlvbnMpIHsKLSAgICByZXR1cm4gdm9pY2UoKS5DcmVhdGVDaGFu
bmVsKGNhbGwsIGNvbmZpZywgb3B0aW9ucyk7Ci0gIH0KLSAgdmlydHVhbCBWaWRlb01lZGlhQ2hh
bm5lbCogQ3JlYXRlVmlkZW9DaGFubmVsKHdlYnJ0Yzo6Q2FsbCogY2FsbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBj
b25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpIHsKLSAgICByZXR1cm4gdmlkZW8oKS5DcmVhdGVD
aGFubmVsKGNhbGwsIGNvbmZpZywgb3B0aW9ucyk7Ci0gIH0KLQotICB2aXJ0dWFsIGNvbnN0IHN0
ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiBhdWRpb19zZW5kX2NvZGVjcygpIHsKLSAgICByZXR1cm4g
dm9pY2UoKS5zZW5kX2NvZGVjcygpOwotICB9Ci0gIHZpcnR1YWwgY29uc3Qgc3RkOjp2ZWN0b3I8
QXVkaW9Db2RlYz4mIGF1ZGlvX3JlY3ZfY29kZWNzKCkgewotICAgIHJldHVybiB2b2ljZSgpLnJl
Y3ZfY29kZWNzKCk7Ci0gIH0KLSAgdmlydHVhbCBSdHBDYXBhYmlsaXRpZXMgR2V0QXVkaW9DYXBh
YmlsaXRpZXMoKSB7Ci0gICAgcmV0dXJuIHZvaWNlKCkuR2V0Q2FwYWJpbGl0aWVzKCk7Ci0gIH0K
LSAgdmlydHVhbCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiB2aWRlb19jb2RlY3MoKSB7IHJldHVy
biB2aWRlbygpLmNvZGVjcygpOyB9Ci0gIHZpcnR1YWwgUnRwQ2FwYWJpbGl0aWVzIEdldFZpZGVv
Q2FwYWJpbGl0aWVzKCkgewotICAgIHJldHVybiB2aWRlbygpLkdldENhcGFiaWxpdGllcygpOwot
ICB9Ci0KLSAgdmlydHVhbCBib29sIFN0YXJ0QWVjRHVtcChydGM6OlBsYXRmb3JtRmlsZSBmaWxl
LCBpbnQ2NF90IG1heF9zaXplX2J5dGVzKSB7Ci0gICAgcmV0dXJuIHZvaWNlKCkuU3RhcnRBZWNE
dW1wKGZpbGUsIG1heF9zaXplX2J5dGVzKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTdG9wQWVj
RHVtcCgpIHsgdm9pY2UoKS5TdG9wQWVjRHVtcCgpOyB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIFZPSUNF
JiB2b2ljZSgpIHsgcmV0dXJuIGVuZ2luZXNfLmZpcnN0OyB9Ci0gIFZJREVPJiB2aWRlbygpIHsg
cmV0dXJuIGVuZ2luZXNfLnNlY29uZDsgfQotICBjb25zdCBWT0lDRSYgdm9pY2UoKSBjb25zdCB7
IHJldHVybiBlbmdpbmVzXy5maXJzdDsgfQotICBjb25zdCBWSURFTyYgdmlkZW8oKSBjb25zdCB7
IHJldHVybiBlbmdpbmVzXy5zZWNvbmQ7IH0KKyAgQ29tcG9zaXRlTWVkaWFFbmdpbmUoc3RkOjp1
bmlxdWVfcHRyPFZvaWNlRW5naW5lSW50ZXJmYWNlPiBhdWRpb19lbmdpbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuZ2luZUludGVyZmFjZT4gdmlkZW9f
ZW5naW5lKTsKKyAgfkNvbXBvc2l0ZU1lZGlhRW5naW5lKCkgb3ZlcnJpZGU7CisgIGJvb2wgSW5p
dCgpIG92ZXJyaWRlOworCisgIFZvaWNlRW5naW5lSW50ZXJmYWNlJiB2b2ljZSgpIG92ZXJyaWRl
OworICBWaWRlb0VuZ2luZUludGVyZmFjZSYgdmlkZW8oKSBvdmVycmlkZTsKKyAgY29uc3QgVm9p
Y2VFbmdpbmVJbnRlcmZhY2UmIHZvaWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgIGNvbnN0IFZpZGVv
RW5naW5lSW50ZXJmYWNlJiB2aWRlbygpIGNvbnN0IG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKLSAg
c3RkOjpwYWlyPFZPSUNFLCBWSURFTz4gZW5naW5lc187CisgIHN0ZDo6dW5pcXVlX3B0cjxWb2lj
ZUVuZ2luZUludGVyZmFjZT4gdm9pY2VfZW5naW5lXzsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
RW5naW5lSW50ZXJmYWNlPiB2aWRlb19lbmdpbmVfOwogfTsKIAotZW51bSBEYXRhQ2hhbm5lbFR5
cGUgeyBEQ1RfTk9ORSA9IDAsIERDVF9SVFAgPSAxLCBEQ1RfU0NUUCA9IDIgfTsKK2VudW0gRGF0
YUNoYW5uZWxUeXBlIHsKKyAgRENUX05PTkUgPSAwLAorICBEQ1RfUlRQID0gMSwKKyAgRENUX1ND
VFAgPSAyLAorICBEQ1RfTUVESUFfVFJBTlNQT1JUID0gMworfTsKIAogY2xhc3MgRGF0YUVuZ2lu
ZUludGVyZmFjZSB7CiAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5naW5lLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5n
aW5lLmNjCmluZGV4IGZjMmI3MzE0MWVkZDc1ZTA4ZTZkNjZiMzViNjQzODljZmRhOGYzZTYuLmMz
MzY3YzBhMWY2MGI0OTRmN2EzMzEzZDFmNTUyY2I3YWQ2ZWRlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVu
Z2luZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9iYXNlL3J0cGRhdGFlbmdpbmUuY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUg
PG1hcD4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1lZGlh
L2Jhc2UvY29kZWMuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAj
aW5jbHVkZSAibWVkaWEvYmFzZS9ydHB1dGlscy5oIgpAQCAtMjEsNyArMjIsNiBAQAogI2luY2x1
ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc2FuaXRpemVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
dXRpbHMuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewogCkBAIC00Nyw3ICs0Nyw3IEBAIERhdGFN
ZWRpYUNoYW5uZWwqIFJ0cERhdGFFbmdpbmU6OkNyZWF0ZUNoYW5uZWwoY29uc3QgTWVkaWFDb25m
aWcmIGNvbmZpZykgewogc3RhdGljIGNvbnN0IERhdGFDb2RlYyogRmluZENvZGVjQnlOYW1lKGNv
bnN0IHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4mIGNvZGVjcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkgewogICBmb3IgKGNv
bnN0IERhdGFDb2RlYyYgY29kZWMgOiBjb2RlY3MpIHsKLSAgICBpZiAoX3N0cmljbXAobmFtZS5j
X3N0cigpLCBjb2RlYy5uYW1lLmNfc3RyKCkpID09IDApCisgICAgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UobmFtZSwgY29kZWMubmFtZSkpCiAgICAgICByZXR1cm4gJmNvZGVjOwogICB9CiAg
IHJldHVybiBudWxscHRyOwpAQCAtMTk0LDcgKzE5NCw3IEBAIGJvb2wgUnRwRGF0YU1lZGlhQ2hh
bm5lbDo6UmVtb3ZlUmVjdlN0cmVhbSh1aW50MzJfdCBzc3JjKSB7CiB9CiAKIHZvaWQgUnRwRGF0
YU1lZGlhQ2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBw
YWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAgUnRw
SGVhZGVyIGhlYWRlcjsKICAgaWYgKCFHZXRSdHBIZWFkZXIocGFja2V0LT5jZGF0YSgpLCBwYWNr
ZXQtPnNpemUoKSwgJmhlYWRlcikpIHsKICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3J0cGRhdGFlbmdp
bmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jh
c2UvcnRwZGF0YWVuZ2luZS5oCmluZGV4IDk2NmQwYzgxNTE0MTU3ZDJlMDdhM2M3N2Q1NGY2M2Yz
MmUzMGI2ZjMuLjQyZTkxOTAzOWQwMTNmOWNmYTg2Mzc5ZTNhYWFhMmRhZDI3N2M3ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jh
c2UvcnRwZGF0YWVuZ2luZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZS5oCkBAIC04Miw5ICs4Miw5IEBAIGNs
YXNzIFJ0cERhdGFNZWRpYUNoYW5uZWwgOiBwdWJsaWMgRGF0YU1lZGlhQ2hhbm5lbCB7CiAgICAg
cmV0dXJuIHRydWU7CiAgIH0KICAgdmlydHVhbCB2b2lkIE9uUGFja2V0UmVjZWl2ZWQocnRjOjpD
b3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAgIHZpcnR1YWwgdm9pZCBP
blJ0Y3BSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykg
e30KICAgdmlydHVhbCB2b2lkIE9uUmVhZHlUb1NlbmQoYm9vbCByZWFkeSkge30KICAgdmlydHVh
bCBib29sIFNlbmREYXRhKGNvbnN0IFNlbmREYXRhUGFyYW1zJiBwYXJhbXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBwYXlsb2FkLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
YmFzZS9ydHBkYXRhZW5naW5lX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS9ydHBkYXRhZW5naW5lX3VuaXR0ZXN0LmNjCmlu
ZGV4IGMxNWM1NWY1ZTYyNzRlODhkMzU3ZjlkOTYwZGU2YzE2YTdlODg1MTcuLjliOGUxMGI0NTAw
N2NjZWQ2Njk4YTVlMjQ0MjAzZTA4YjZkZDQ1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvcnRwZGF0YWVuZ2luZV91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9iYXNlL3J0cGRhdGFlbmdpbmVfdW5pdHRlc3QuY2MKQEAgLTczLDcgKzczLDcgQEAgY2xh
c3MgUnRwRGF0YU1lZGlhQ2hhbm5lbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAg
Y3JpY2tldDo6TWVkaWFDb25maWcgY29uZmlnOwogICAgIGNyaWNrZXQ6OlJ0cERhdGFNZWRpYUNo
YW5uZWwqIGNoYW5uZWwgPQogICAgICAgICBzdGF0aWNfY2FzdDxjcmlja2V0OjpSdHBEYXRhTWVk
aWFDaGFubmVsKj4oZG1lLT5DcmVhdGVDaGFubmVsKGNvbmZpZykpOwotICAgIGNoYW5uZWwtPlNl
dEludGVyZmFjZShpZmFjZV8uZ2V0KCkpOworICAgIGNoYW5uZWwtPlNldEludGVyZmFjZShpZmFj
ZV8uZ2V0KCksIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgICAgY2hhbm5lbC0+U2ln
bmFsRGF0YVJlY2VpdmVkLmNvbm5lY3QocmVjZWl2ZXJfLmdldCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZGYWtlRGF0YVJlY2VpdmVyOjpPbkRhdGFSZWNlaXZl
ZCk7CiAgICAgcmV0dXJuIGNoYW5uZWw7CkBAIC0zMTcsMTMgKzMxNywxMyBAQCBURVNUX0YoUnRw
RGF0YU1lZGlhQ2hhbm5lbFRlc3QsIFJlY2VpdmVEYXRhKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxj
cmlja2V0OjpSdHBEYXRhTWVkaWFDaGFubmVsPiBkbWMoQ3JlYXRlQ2hhbm5lbCgpKTsKIAogICAv
LyBTZXRSZWNlaXZlZCBub3QgY2FsbGVkLgotICBkbWMtPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tl
dCwgcnRjOjpQYWNrZXRUaW1lKCkpOworICBkbWMtPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwg
LyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfRkFMU0UoSGFzUmVjZWl2ZWREYXRh
KCkpOwogCiAgIGRtYy0+U2V0UmVjZWl2ZSh0cnVlKTsKIAogICAvLyBVbmtub3duIHBheWxvYWQg
aWQKLSAgZG1jLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHJ0Yzo6UGFja2V0VGltZSgpKTsK
KyAgZG1jLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0x
KTsKICAgRVhQRUNUX0ZBTFNFKEhhc1JlY2VpdmVkRGF0YSgpKTsKIAogICBjcmlja2V0OjpEYXRh
Q29kZWMgY29kZWM7CkBAIC0zMzQsNyArMzM0LDcgQEAgVEVTVF9GKFJ0cERhdGFNZWRpYUNoYW5u
ZWxUZXN0LCBSZWNlaXZlRGF0YSkgewogICBBU1NFUlRfVFJVRShkbWMtPlNldFJlY3ZQYXJhbWV0
ZXJzKHBhcmFtZXRlcnMpKTsKIAogICAvLyBVbmtub3duIHN0cmVhbQotICBkbWMtPk9uUGFja2V0
UmVjZWl2ZWQoJnBhY2tldCwgcnRjOjpQYWNrZXRUaW1lKCkpOworICBkbWMtPk9uUGFja2V0UmVj
ZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfRkFMU0Uo
SGFzUmVjZWl2ZWREYXRhKCkpOwogCiAgIGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyBzdHJlYW07CkBA
IC0zNDIsNyArMzQyLDcgQEAgVEVTVF9GKFJ0cERhdGFNZWRpYUNoYW5uZWxUZXN0LCBSZWNlaXZl
RGF0YSkgewogICBBU1NFUlRfVFJVRShkbWMtPkFkZFJlY3ZTdHJlYW0oc3RyZWFtKSk7CiAKICAg
Ly8gRmluYWxseSB3b3JrcyEKLSAgZG1jLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHJ0Yzo6
UGFja2V0VGltZSgpKTsKKyAgZG1jLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tl
dF90aW1lX3VzICovIC0xKTsKICAgRVhQRUNUX1RSVUUoSGFzUmVjZWl2ZWREYXRhKCkpOwogICBF
WFBFQ1RfRVEoImFiY2RlIiwgR2V0UmVjZWl2ZWREYXRhKCkpOwogICBFWFBFQ1RfRVEoNVUsIEdl
dFJlY2VpdmVkRGF0YUxlbigpKTsKQEAgLTM1NSw2ICszNTUsNiBAQCBURVNUX0YoUnRwRGF0YU1l
ZGlhQ2hhbm5lbFRlc3QsIEludmFsaWRSdHBQYWNrZXRzKSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjxj
cmlja2V0OjpSdHBEYXRhTWVkaWFDaGFubmVsPiBkbWMoQ3JlYXRlQ2hhbm5lbCgpKTsKIAogICAv
LyBUb28gc2hvcnQKLSAgZG1jLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHJ0Yzo6UGFja2V0
VGltZSgpKTsKKyAgZG1jLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1l
X3VzICovIC0xKTsKICAgRVhQRUNUX0ZBTFNFKEhhc1JlY2VpdmVkRGF0YSgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jh
c2UvcnRwdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2Jhc2UvcnRwdXRpbHMuaAppbmRleCAwZmQ5YTU5ODE2YjZlN2U0YzFhOGFiM2MyNGU5
NTRkYjAxMGQ2YjI4Li5jNWZlMTRmYjNkMzgxNzg4OTM3ZDE1YWIwMDI3ZDFiMjU2Yzg1NmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9iYXNlL3J0cHV0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvYmFzZS9ydHB1dGlscy5oCkBAIC0xMiw2ICsxMiw3IEBACiAjZGVmaW5l
IE1FRElBX0JBU0VfUlRQVVRJTFNfSF8KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2J5dGVvcmRlci5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSBy
dGMgewogc3RydWN0IFBhY2tldFRpbWVVcGRhdGVQYXJhbXM7CkBAIC02OCw5ICs2OSw5IEBAIGJv
b2wgSXNWYWxpZFJ0cFJ0Y3BQYWNrZXRTaXplKGJvb2wgcnRjcCwgc2l6ZV90IHNpemUpOwogY29u
c3QgY2hhciogUnRwUnRjcFN0cmluZ0xpdGVyYWwoYm9vbCBydGNwKTsKIAogLy8gVmVyaWZpZXMg
dGhhdCBhIHBhY2tldCBoYXMgYSB2YWxpZCBSVFAgaGVhZGVyLgotYm9vbCBWYWxpZGF0ZVJ0cEhl
YWRlcihjb25zdCB1aW50OF90KiBydHAsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBs
ZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogaGVhZGVyX2xlbmd0aCk7Citi
b29sIFJUQ19FWFBPUlQgVmFsaWRhdGVSdHBIZWFkZXIoY29uc3QgdWludDhfdCogcnRwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBoZWFkZXJfbGVuZ3RoKTsKIAogLy8gSGVs
cGVyIG1ldGhvZCB3aGljaCB1cGRhdGVzIHRoZSBhYnNvbHV0ZSBzZW5kIHRpbWUgZXh0ZW5zaW9u
IGlmIHByZXNlbnQuCiBib29sIFVwZGF0ZVJ0cEFic1NlbmRUaW1lRXh0ZW5zaW9uKHVpbnQ4X3Qq
IHJ0cCwKQEAgLTgwLDEwICs4MSwxMSBAQCBib29sIFVwZGF0ZVJ0cEFic1NlbmRUaW1lRXh0ZW5z
aW9uKHVpbnQ4X3QqIHJ0cCwKIAogLy8gQXBwbGllcyBzcGVjaWZpZWQgfG9wdGlvbnN8IHRvIHRo
ZSBwYWNrZXQuIEl0IHVwZGF0ZXMgdGhlIGFic29sdXRlIHNlbmQgdGltZQogLy8gZXh0ZW5zaW9u
IGhlYWRlciBpZiBpdCBpcyBwcmVzZW50IHByZXNlbnQgdGhlbiB1cGRhdGVzIEhNQUMuCi1ib29s
IEFwcGx5UGFja2V0T3B0aW9ucyh1aW50OF90KiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFj
a2V0VGltZVVwZGF0ZVBhcmFtcyYgcGFja2V0X3RpbWVfcGFyYW1zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDY0X3QgdGltZV91cyk7Citib29sIFJUQ19FWFBPUlQKK0FwcGx5UGFja2V0
T3B0aW9ucyh1aW50OF90KiBkYXRhLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lVXBkYXRlUGFyYW1zJiBw
YWNrZXRfdGltZV9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdGltZV91cyk7
CiAKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdGVzdHV0aWxzLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS90ZXN0dXRp
bHMuY2MKaW5kZXggOTNjMmJjOThhZWYzMmI4NzA3NzJiMzUxNTBiMjg0OWVmNjkwNjdmNS4uNTEy
ZGM5MWY5M2MzMWIzM2ZlYTNjNDU0ZTgyN2ZjMjFlOTljMjRkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS90ZXN0dXRpbHMu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
YmFzZS90ZXN0dXRpbHMuY2MKQEAgLTEwLDkwICsxMCwxNCBAQAogCiAjaW5jbHVkZSAibWVkaWEv
YmFzZS90ZXN0dXRpbHMuaCIKIAotI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1l
LmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvYnl0ZWJ1ZmZlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2Uvc3RyZWFtLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS90ZXN0dXRpbHMuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewog
Ci0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyBJbXBsZW1lbnRhdGlvbiBvZiBSYXdSdHBQYWNrZXQKLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLXZvaWQgUmF3UnRwUGFja2V0OjpXcml0ZVRvQnl0ZUJ1ZmZlcih1aW50
MzJfdCBpbl9zc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6
Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7Ci0gIGlmICghYnVmKQotICAgIHJldHVybjsK
LQotICBidWYtPldyaXRlVUludDgodmVyX3RvX2NjKTsKLSAgYnVmLT5Xcml0ZVVJbnQ4KG1fdG9f
cHQpOwotICBidWYtPldyaXRlVUludDE2KHNlcXVlbmNlX251bWJlcik7Ci0gIGJ1Zi0+V3JpdGVV
SW50MzIodGltZXN0YW1wKTsKLSAgYnVmLT5Xcml0ZVVJbnQzMihpbl9zc3JjKTsKLSAgYnVmLT5X
cml0ZUJ5dGVzKHBheWxvYWQsIHNpemVvZihwYXlsb2FkKSk7Ci19Ci0KLWJvb2wgUmF3UnRwUGFj
a2V0OjpSZWFkRnJvbUJ5dGVCdWZmZXIocnRjOjpCeXRlQnVmZmVyUmVhZGVyKiBidWYpIHsKLSAg
aWYgKCFidWYpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGJvb2wgcmV0ID0gdHJ1ZTsKLSAgcmV0
ICY9IGJ1Zi0+UmVhZFVJbnQ4KCZ2ZXJfdG9fY2MpOwotICByZXQgJj0gYnVmLT5SZWFkVUludDgo
Jm1fdG9fcHQpOwotICByZXQgJj0gYnVmLT5SZWFkVUludDE2KCZzZXF1ZW5jZV9udW1iZXIpOwot
ICByZXQgJj0gYnVmLT5SZWFkVUludDMyKCZ0aW1lc3RhbXApOwotICByZXQgJj0gYnVmLT5SZWFk
VUludDMyKCZzc3JjKTsKLSAgcmV0ICY9IGJ1Zi0+UmVhZEJ5dGVzKHBheWxvYWQsIHNpemVvZihw
YXlsb2FkKSk7Ci0gIHJldHVybiByZXQ7Ci19Ci0KLWJvb2wgUmF3UnRwUGFja2V0OjpTYW1lRXhj
ZXB0U2VxTnVtVGltZXN0YW1wU3NyYyhjb25zdCBSYXdSdHBQYWNrZXQmIHBhY2tldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3Qgc3NjKSBjb25zdCB7Ci0gIHJldHVybiBzZXF1ZW5jZV9udW1iZXIgPT0gc2VxICYm
IHRpbWVzdGFtcCA9PSB0cyAmJgotICAgICAgICAgdmVyX3RvX2NjID09IHBhY2tldC52ZXJfdG9f
Y2MgJiYgbV90b19wdCA9PSBwYWNrZXQubV90b19wdCAmJgotICAgICAgICAgc3NyYyA9PSBzc2Mg
JiYgMCA9PSBtZW1jbXAocGF5bG9hZCwgcGFja2V0LnBheWxvYWQsIHNpemVvZihwYXlsb2FkKSk7
Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEltcGxlbWVudGF0aW9uIG9mIFJhd1J0Y3BQYWNr
ZXQKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLXZvaWQgUmF3UnRjcFBhY2tldDo6V3JpdGVUb0J5dGVCdWZm
ZXIocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKLSAgaWYgKCFidWYpCi0gICAg
cmV0dXJuOwotCi0gIGJ1Zi0+V3JpdGVVSW50OCh2ZXJfdG9fY291bnQpOwotICBidWYtPldyaXRl
VUludDgodHlwZSk7Ci0gIGJ1Zi0+V3JpdGVVSW50MTYobGVuZ3RoKTsKLSAgYnVmLT5Xcml0ZUJ5
dGVzKHBheWxvYWQsIHNpemVvZihwYXlsb2FkKSk7Ci19Ci0KLWJvb2wgUmF3UnRjcFBhY2tldDo6
UmVhZEZyb21CeXRlQnVmZmVyKHJ0Yzo6Qnl0ZUJ1ZmZlclJlYWRlciogYnVmKSB7Ci0gIGlmICgh
YnVmKQotICAgIHJldHVybiBmYWxzZTsKLQotICBib29sIHJldCA9IHRydWU7Ci0gIHJldCAmPSBi
dWYtPlJlYWRVSW50OCgmdmVyX3RvX2NvdW50KTsKLSAgcmV0ICY9IGJ1Zi0+UmVhZFVJbnQ4KCZ0
eXBlKTsKLSAgcmV0ICY9IGJ1Zi0+UmVhZFVJbnQxNigmbGVuZ3RoKTsKLSAgcmV0ICY9IGJ1Zi0+
UmVhZEJ5dGVzKHBheWxvYWQsIHNpemVvZihwYXlsb2FkKSk7Ci0gIHJldHVybiByZXQ7Ci19Ci0K
LWJvb2wgUmF3UnRjcFBhY2tldDo6RXF1YWxzVG8oY29uc3QgUmF3UnRjcFBhY2tldCYgcGFja2V0
KSBjb25zdCB7Ci0gIHJldHVybiB2ZXJfdG9fY291bnQgPT0gcGFja2V0LnZlcl90b19jb3VudCAm
JiB0eXBlID09IHBhY2tldC50eXBlICYmCi0gICAgICAgICBsZW5ndGggPT0gcGFja2V0Lmxlbmd0
aCAmJgotICAgICAgICAgMCA9PSBtZW1jbXAocGF5bG9hZCwgcGFja2V0LnBheWxvYWQsIHNpemVv
ZihwYXlsb2FkKSk7Ci19Ci0KIC8vIEltcGxlbWVudGF0aW9uIG9mIFZpZGVvQ2FwdHVyZUxpc3Rl
bmVyLgogVmlkZW9DYXB0dXJlckxpc3RlbmVyOjpWaWRlb0NhcHR1cmVyTGlzdGVuZXIoVmlkZW9D
YXB0dXJlciogY2FwdHVyZXIpCiAgICAgOiBjYXB0dXJlcl8oY2FwdHVyZXIpLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS90
ZXN0dXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2Jhc2UvdGVzdHV0aWxzLmgKaW5kZXggYzg0Njk2MjM2YjRhNDAyZmM0YzQ2ZTM0MWRhMjk4
MzYxMzZkMzUzNi4uNmI2M2ZmZDE4MDAwMzY0NmNhYTU0YWY3NTU3NTRiNzg1NmI1ZTgzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
YmFzZS90ZXN0dXRpbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9iYXNlL3Rlc3R1dGlscy5oCkBAIC0yMCwxMiArMjAsNiBAQAogI2luY2x1
ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5
L3NpZ3Nsb3Qvc2lnc2xvdC5oIgogCi1uYW1lc3BhY2UgcnRjIHsKLWNsYXNzIEJ5dGVCdWZmZXJS
ZWFkZXI7Ci1jbGFzcyBCeXRlQnVmZmVyV3JpdGVyOwotY2xhc3MgU3RyZWFtSW50ZXJmYWNlOwot
fSAgLy8gbmFtZXNwYWNlIHJ0YwotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIFZpZGVvRnJh
bWU7CiB9CkBAIC00Myw0MCArMzcsNiBAQCBpbmxpbmUgc3RkOjp2ZWN0b3I8VD4gTWFrZVZlY3Rv
cihjb25zdCBUIGFbXSwgc2l6ZV90IHMpIHsKIH0KICNkZWZpbmUgTUFLRV9WRUNUT1IoYSkgY3Jp
Y2tldDo6TWFrZVZlY3RvcihhLCBhcnJheXNpemUoYSkpCiAKLXN0cnVjdCBSdHBEdW1wUGFja2V0
OwotY2xhc3MgUnRwRHVtcFdyaXRlcjsKLQotc3RydWN0IFJhd1J0cFBhY2tldCB7Ci0gIHZvaWQg
V3JpdGVUb0J5dGVCdWZmZXIodWludDMyX3QgaW5fc3NyYywgcnRjOjpCeXRlQnVmZmVyV3JpdGVy
KiBidWYpIGNvbnN0OwotICBib29sIFJlYWRGcm9tQnl0ZUJ1ZmZlcihydGM6OkJ5dGVCdWZmZXJS
ZWFkZXIqIGJ1Zik7Ci0gIC8vIENoZWNrIGlmIHRoaXMgcGFja2V0IGlzIHRoZSBzYW1lIGFzIHRo
ZSBzcGVjaWZpZWQgcGFja2V0IGV4Y2VwdCB0aGUKLSAgLy8gc2VxdWVuY2UgbnVtYmVyIGFuZCB0
aW1lc3RhbXAsIHdoaWNoIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgc3BlY2lmaWVkCi0gIC8v
IHBhcmFtZXRlcnMuCi0gIGJvb2wgU2FtZUV4Y2VwdFNlcU51bVRpbWVzdGFtcFNzcmMoY29uc3Qg
UmF3UnRwUGFja2V0JiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDE2X3Qgc2VxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IHRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IHNzYykgY29uc3Q7Ci0gIGludCBzaXplKCkgY29uc3QgeyByZXR1cm4gMjg7IH0KLQotICB1aW50
OF90IHZlcl90b19jYzsKLSAgdWludDhfdCBtX3RvX3B0OwotICB1aW50MTZfdCBzZXF1ZW5jZV9u
dW1iZXI7Ci0gIHVpbnQzMl90IHRpbWVzdGFtcDsKLSAgdWludDMyX3Qgc3NyYzsKLSAgY2hhciBw
YXlsb2FkWzE2XTsKLX07Ci0KLXN0cnVjdCBSYXdSdGNwUGFja2V0IHsKLSAgdm9pZCBXcml0ZVRv
Qnl0ZUJ1ZmZlcihydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3Q7Ci0gIGJvb2wgUmVh
ZEZyb21CeXRlQnVmZmVyKHJ0Yzo6Qnl0ZUJ1ZmZlclJlYWRlciogYnVmKTsKLSAgYm9vbCBFcXVh
bHNUbyhjb25zdCBSYXdSdGNwUGFja2V0JiBwYWNrZXQpIGNvbnN0OwotCi0gIHVpbnQ4X3QgdmVy
X3RvX2NvdW50OwotICB1aW50OF90IHR5cGU7Ci0gIHVpbnQxNl90IGxlbmd0aDsKLSAgY2hhciBw
YXlsb2FkWzE2XTsKLX07Ci0KIC8vIFRlc3QgaGVscGVyIGZvciB0ZXN0aW5nIFZpZGVvQ2FwdHVy
ZXIgaW1wbGVtZW50YXRpb25zLgogY2xhc3MgVmlkZW9DYXB0dXJlckxpc3RlbmVyCiAgICAgOiBw
dWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3R1cm51dGlscy5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS90dXJudXRpbHMu
aAppbmRleCAxM2VkMjZiN2E1ZmY3Y2MyNzU2OWMyNjZhOGRkNjQ1MjJjZmZiNjIzLi43YWEwNjUx
Y2VhM2VhNTU5ZjRiZWIxM2I1M2I0MjJkMTU3ZjRlYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3R1cm51dGlscy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2Uv
dHVybnV0aWxzLmgKQEAgLTE0LDE2ICsxNCwxOCBAQAogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5j
bHVkZSA8Y3N0ZGludD4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0Lmgi
CisKIG5hbWVzcGFjZSBjcmlja2V0IHsKIAogc3RydWN0IFBhY2tldE9wdGlvbnM7CiAKIC8vIEZp
bmRzIGRhdGEgbG9jYXRpb24gd2l0aGluIGEgVFVSTiBDaGFubmVsIE1lc3NhZ2Ugb3IgVFVSTiBT
ZW5kIEluZGljYXRpb24KIC8vIG1lc3NhZ2UuCi1ib29sIFVud3JhcFR1cm5QYWNrZXQoY29uc3Qg
dWludDhfdCogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYWNrZXRfc2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGNvbnRlbnRfcG9zaXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90KiBjb250ZW50X3NpemUpOworYm9vbCBSVENfRVhQT1JU
IFVud3JhcFR1cm5QYWNrZXQoY29uc3QgdWludDhfdCogcGFja2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhY2tldF9zaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90KiBjb250ZW50X3Bvc2l0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90KiBjb250ZW50X3NpemUpOwogCiB9ICAvLyBuYW1lc3Bh
Y2UgY3JpY2tldAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvYWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9hZGFwdGVyLmNjCmluZGV4
IDg0MDEwMWJjZWUzNDAzZDY0YmI4ZjkxZjc1YzRkNTFlYmQwNGI3MmQuLmIyZWQzMzM2MTQ5MzA4
ODc2NjNiNTc0ZjNmZTU4YzA1Y2I2MjEwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdmlkZW9hZGFwdGVyLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2Uvdmlk
ZW9hZGFwdGVyLmNjCkBAIC0xNjksOCArMTY5LDE4IEBAIGJvb2wgVmlkZW9BZGFwdGVyOjpBZGFw
dEZyYW1lUmVzb2x1dGlvbihpbnQgaW5fd2lkdGgsCiAgIC8vIE9uT3V0cHV0Rm9ybWF0UmVxdWVz
dCBhbmQgT25SZXNvbHV0aW9uRnJhbWVyYXRlUmVxdWVzdC4KICAgaW50IG1heF9waXhlbF9jb3Vu
dCA9IHJlc29sdXRpb25fcmVxdWVzdF9tYXhfcGl4ZWxfY291bnRfOwogCi0gIGlmIChtYXhfcGl4
ZWxfY291bnRfKQotICAgIG1heF9waXhlbF9jb3VudCA9IHN0ZDo6bWluKG1heF9waXhlbF9jb3Vu
dCwgKm1heF9waXhlbF9jb3VudF8pOworICAvLyBTZWxlY3QgdGFyZ2V0IGFzcGVjdCByYXRpbyBh
bmQgbWF4IHBpeGVsIGNvdW50IGRlcGVuZGluZyBvbiBpbnB1dCBmcmFtZQorICAvLyBvcmllbnRh
dGlvbi4KKyAgYWJzbDo6b3B0aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4gdGFyZ2V0X2FzcGVj
dF9yYXRpbzsKKyAgaWYgKGluX3dpZHRoID4gaW5faGVpZ2h0KSB7CisgICAgdGFyZ2V0X2FzcGVj
dF9yYXRpbyA9IHRhcmdldF9sYW5kc2NhcGVfYXNwZWN0X3JhdGlvXzsKKyAgICBpZiAobWF4X2xh
bmRzY2FwZV9waXhlbF9jb3VudF8pCisgICAgICBtYXhfcGl4ZWxfY291bnQgPSBzdGQ6Om1pbiht
YXhfcGl4ZWxfY291bnQsICptYXhfbGFuZHNjYXBlX3BpeGVsX2NvdW50Xyk7CisgIH0gZWxzZSB7
CisgICAgdGFyZ2V0X2FzcGVjdF9yYXRpbyA9IHRhcmdldF9wb3J0cmFpdF9hc3BlY3RfcmF0aW9f
OworICAgIGlmIChtYXhfcG9ydHJhaXRfcGl4ZWxfY291bnRfKQorICAgICAgbWF4X3BpeGVsX2Nv
dW50ID0gc3RkOjptaW4obWF4X3BpeGVsX2NvdW50LCAqbWF4X3BvcnRyYWl0X3BpeGVsX2NvdW50
Xyk7CisgIH0KIAogICBpbnQgdGFyZ2V0X3BpeGVsX2NvdW50ID0KICAgICAgIHN0ZDo6bWluKHJl
c29sdXRpb25fcmVxdWVzdF90YXJnZXRfcGl4ZWxfY291bnRfLCBtYXhfcGl4ZWxfY291bnQpOwpA
QCAtMTk1LDE5ICsyMDUsMTQgQEAgYm9vbCBWaWRlb0FkYXB0ZXI6OkFkYXB0RnJhbWVSZXNvbHV0
aW9uKGludCBpbl93aWR0aCwKICAgfQogCiAgIC8vIENhbGN1bGF0ZSBob3cgdGhlIGlucHV0IHNo
b3VsZCBiZSBjcm9wcGVkLgotICBpZiAoIXRhcmdldF9hc3BlY3RfcmF0aW9fIHx8IHRhcmdldF9h
c3BlY3RfcmF0aW9fLT5maXJzdCA8PSAwIHx8Ci0gICAgICB0YXJnZXRfYXNwZWN0X3JhdGlvXy0+
c2Vjb25kIDw9IDApIHsKKyAgaWYgKCF0YXJnZXRfYXNwZWN0X3JhdGlvIHx8IHRhcmdldF9hc3Bl
Y3RfcmF0aW8tPmZpcnN0IDw9IDAgfHwKKyAgICAgIHRhcmdldF9hc3BlY3RfcmF0aW8tPnNlY29u
ZCA8PSAwKSB7CiAgICAgKmNyb3BwZWRfd2lkdGggPSBpbl93aWR0aDsKICAgICAqY3JvcHBlZF9o
ZWlnaHQgPSBpbl9oZWlnaHQ7CiAgIH0gZWxzZSB7Ci0gICAgLy8gQWRqdXN0IHx0YXJnZXRfYXNw
ZWN0X3JhdGlvX3wgb3JpZW50YXRpb24gdG8gbWF0Y2ggaW5wdXQuCi0gICAgaWYgKChpbl93aWR0
aCA+IGluX2hlaWdodCkgIT0KLSAgICAgICAgKHRhcmdldF9hc3BlY3RfcmF0aW9fLT5maXJzdCA+
IHRhcmdldF9hc3BlY3RfcmF0aW9fLT5zZWNvbmQpKSB7Ci0gICAgICBzdGQ6OnN3YXAodGFyZ2V0
X2FzcGVjdF9yYXRpb18tPmZpcnN0LCB0YXJnZXRfYXNwZWN0X3JhdGlvXy0+c2Vjb25kKTsKLSAg
ICB9CiAgICAgY29uc3QgZmxvYXQgcmVxdWVzdGVkX2FzcGVjdCA9Ci0gICAgICAgIHRhcmdldF9h
c3BlY3RfcmF0aW9fLT5maXJzdCAvCi0gICAgICAgIHN0YXRpY19jYXN0PGZsb2F0Pih0YXJnZXRf
YXNwZWN0X3JhdGlvXy0+c2Vjb25kKTsKKyAgICAgICAgdGFyZ2V0X2FzcGVjdF9yYXRpby0+Zmly
c3QgLworICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4odGFyZ2V0X2FzcGVjdF9yYXRpby0+c2Vj
b25kKTsKICAgICAqY3JvcHBlZF93aWR0aCA9CiAgICAgICAgIHN0ZDo6bWluKGluX3dpZHRoLCBz
dGF0aWNfY2FzdDxpbnQ+KGluX2hlaWdodCAqIHJlcXVlc3RlZF9hc3BlY3QpKTsKICAgICAqY3Jv
cHBlZF9oZWlnaHQgPQpAQCAtMjc0LDkgKzI3OSwzMyBAQCB2b2lkIFZpZGVvQWRhcHRlcjo6T25P
dXRwdXRGb3JtYXRSZXF1ZXN0KAogICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxp
bnQsIGludD4+JiB0YXJnZXRfYXNwZWN0X3JhdGlvLAogICAgIGNvbnN0IGFic2w6Om9wdGlvbmFs
PGludD4mIG1heF9waXhlbF9jb3VudCwKICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBt
YXhfZnBzKSB7CisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQsIGludD4+IHRhcmdldF9s
YW5kc2NhcGVfYXNwZWN0X3JhdGlvOworICBhYnNsOjpvcHRpb25hbDxzdGQ6OnBhaXI8aW50LCBp
bnQ+PiB0YXJnZXRfcG9ydHJhaXRfYXNwZWN0X3JhdGlvOworICBpZiAodGFyZ2V0X2FzcGVjdF9y
YXRpbyAmJiB0YXJnZXRfYXNwZWN0X3JhdGlvLT5maXJzdCA+IDAgJiYKKyAgICAgIHRhcmdldF9h
c3BlY3RfcmF0aW8tPnNlY29uZCA+IDApIHsKKyAgICAvLyBNYWludGFpbiBpbnB1dCBvcmllbnRh
dGlvbi4KKyAgICBjb25zdCBpbnQgbWF4X3NpZGUgPQorICAgICAgICBzdGQ6Om1heCh0YXJnZXRf
YXNwZWN0X3JhdGlvLT5maXJzdCwgdGFyZ2V0X2FzcGVjdF9yYXRpby0+c2Vjb25kKTsKKyAgICBj
b25zdCBpbnQgbWluX3NpZGUgPQorICAgICAgICBzdGQ6Om1pbih0YXJnZXRfYXNwZWN0X3JhdGlv
LT5maXJzdCwgdGFyZ2V0X2FzcGVjdF9yYXRpby0+c2Vjb25kKTsKKyAgICB0YXJnZXRfbGFuZHNj
YXBlX2FzcGVjdF9yYXRpbyA9IHN0ZDo6bWFrZV9wYWlyKG1heF9zaWRlLCBtaW5fc2lkZSk7Cisg
ICAgdGFyZ2V0X3BvcnRyYWl0X2FzcGVjdF9yYXRpbyA9IHN0ZDo6bWFrZV9wYWlyKG1pbl9zaWRl
LCBtYXhfc2lkZSk7CisgIH0KKyAgT25PdXRwdXRGb3JtYXRSZXF1ZXN0KHRhcmdldF9sYW5kc2Nh
cGVfYXNwZWN0X3JhdGlvLCBtYXhfcGl4ZWxfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICB0YXJnZXRfcG9ydHJhaXRfYXNwZWN0X3JhdGlvLCBtYXhfcGl4ZWxfY291bnQsIG1heF9mcHMp
OworfQorCit2b2lkIFZpZGVvQWRhcHRlcjo6T25PdXRwdXRGb3JtYXRSZXF1ZXN0KAorICAgIGNv
bnN0IGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQsIGludD4+JiB0YXJnZXRfbGFuZHNjYXBl
X2FzcGVjdF9yYXRpbywKKyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBtYXhfbGFuZHNj
YXBlX3BpeGVsX2NvdW50LAorICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQs
IGludD4+JiB0YXJnZXRfcG9ydHJhaXRfYXNwZWN0X3JhdGlvLAorICAgIGNvbnN0IGFic2w6Om9w
dGlvbmFsPGludD4mIG1heF9wb3J0cmFpdF9waXhlbF9jb3VudCwKKyAgICBjb25zdCBhYnNsOjpv
cHRpb25hbDxpbnQ+JiBtYXhfZnBzKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0aWNhbF9z
ZWN0aW9uXyk7Ci0gIHRhcmdldF9hc3BlY3RfcmF0aW9fID0gdGFyZ2V0X2FzcGVjdF9yYXRpbzsK
LSAgbWF4X3BpeGVsX2NvdW50XyA9IG1heF9waXhlbF9jb3VudDsKKyAgdGFyZ2V0X2xhbmRzY2Fw
ZV9hc3BlY3RfcmF0aW9fID0gdGFyZ2V0X2xhbmRzY2FwZV9hc3BlY3RfcmF0aW87CisgIG1heF9s
YW5kc2NhcGVfcGl4ZWxfY291bnRfID0gbWF4X2xhbmRzY2FwZV9waXhlbF9jb3VudDsKKyAgdGFy
Z2V0X3BvcnRyYWl0X2FzcGVjdF9yYXRpb18gPSB0YXJnZXRfcG9ydHJhaXRfYXNwZWN0X3JhdGlv
OworICBtYXhfcG9ydHJhaXRfcGl4ZWxfY291bnRfID0gbWF4X3BvcnRyYWl0X3BpeGVsX2NvdW50
OwogICBtYXhfZnBzXyA9IG1heF9mcHM7CiAgIG5leHRfZnJhbWVfdGltZXN0YW1wX25zXyA9IGFi
c2w6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2FkYXB0ZXIuaAppbmRl
eCBiYjlhYjgwMjZmMDg4YWNkOTQzMjk0OTFjYTI1ZDRhNjJlYTk0NmZhLi4xODY0ZDVjYzBjN2Jm
MzU4ZDk1YmJkYTNjNWZiZTIwNTQwNzgwOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvYWRhcHRlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2Uvdmlk
ZW9hZGFwdGVyLmgKQEAgLTY4LDYgKzY4LDE3IEBAIGNsYXNzIFZpZGVvQWRhcHRlciB7CiAgICAg
ICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBtYXhfcGl4ZWxfY291bnQsCiAgICAgICBjb25z
dCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBtYXhfZnBzKTsKIAorICAvLyBTYW1lIGFzIGFib3ZlLCBi
dXQgYWxsb3dzIHNldHRpbmcgdHdvIGRpZmZlcmVudCB0YXJnZXQgYXNwZWN0IHJhdGlvcworICAv
LyBkZXBlbmRpbmcgb24gaW5jb21pbmcgZnJhbWUgb3JpZW50YXRpb24uIFRoaXMgZ2l2ZXMgbW9y
ZSBmaW5lLWdyYWluZWQKKyAgLy8gY29udHJvbCBhbmQgY2FuIGUuZy4gYmUgdXNlZCB0byBmb3Jj
ZSBsYW5kc2NhcGUgdmlkZW8gdG8gYmUgY3JvcHBlZCB0bworICAvLyBwb3J0cmFpdCB2aWRlby4K
KyAgdm9pZCBPbk91dHB1dEZvcm1hdFJlcXVlc3QoCisgICAgICBjb25zdCBhYnNsOjpvcHRpb25h
bDxzdGQ6OnBhaXI8aW50LCBpbnQ+PiYgdGFyZ2V0X2xhbmRzY2FwZV9hc3BlY3RfcmF0aW8sCisg
ICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+JiBtYXhfbGFuZHNjYXBlX3BpeGVsX2NvdW50
LAorICAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4mIHRhcmdl
dF9wb3J0cmFpdF9hc3BlY3RfcmF0aW8sCisgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxpbnQ+
JiBtYXhfcG9ydHJhaXRfcGl4ZWxfY291bnQsCisgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxp
bnQ+JiBtYXhfZnBzKTsKKwogICAvLyBSZXF1ZXN0cyB0aGUgb3V0cHV0IGZyYW1lIHNpemUgZnJv
bSB8QWRhcHRGcmFtZVJlc29sdXRpb258IHRvIGhhdmUgYXMgY2xvc2UKICAgLy8gYXMgcG9zc2li
bGUgdG8gfHRhcmdldF9waXhlbF9jb3VudHwgcGl4ZWxzIChpZiBzZXQpIGJ1dCBubyBtb3JlIHRo
YW4KICAgLy8gfG1heF9waXhlbF9jb3VudHwuCkBAIC0xMDAsOSArMTExLDE0IEBAIGNsYXNzIFZp
ZGVvQWRhcHRlciB7CiAgIC8vIE1heCBudW1iZXIgb2YgcGl4ZWxzL2ZwcyByZXF1ZXN0ZWQgdmlh
IGNhbGxzIHRvIE9uT3V0cHV0Rm9ybWF0UmVxdWVzdCwKICAgLy8gT25SZXNvbHV0aW9uRnJhbWVy
YXRlUmVxdWVzdCByZXNwZWN0aXZlbHkuCiAgIC8vIFRoZSBhZGFwdGVkIG91dHB1dCBmb3JtYXQg
aXMgdGhlIG1pbmltdW0gb2YgdGhlc2UuCi0gIGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQs
IGludD4+IHRhcmdldF9hc3BlY3RfcmF0aW9fCisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxp
bnQsIGludD4+IHRhcmdldF9sYW5kc2NhcGVfYXNwZWN0X3JhdGlvXworICAgICAgUlRDX0dVQVJE
RURfQlkoY3JpdGljYWxfc2VjdGlvbl8pOworICBhYnNsOjpvcHRpb25hbDxpbnQ+IG1heF9sYW5k
c2NhcGVfcGl4ZWxfY291bnRfCisgICAgICBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9u
Xyk7CisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6cGFpcjxpbnQsIGludD4+IHRhcmdldF9wb3J0cmFp
dF9hc3BlY3RfcmF0aW9fCisgICAgICBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9uXyk7
CisgIGFic2w6Om9wdGlvbmFsPGludD4gbWF4X3BvcnRyYWl0X3BpeGVsX2NvdW50XwogICAgICAg
UlRDX0dVQVJERURfQlkoY3JpdGljYWxfc2VjdGlvbl8pOwotICBhYnNsOjpvcHRpb25hbDxpbnQ+
IG1heF9waXhlbF9jb3VudF8gUlRDX0dVQVJERURfQlkoY3JpdGljYWxfc2VjdGlvbl8pOwogICBh
YnNsOjpvcHRpb25hbDxpbnQ+IG1heF9mcHNfIFJUQ19HVUFSREVEX0JZKGNyaXRpY2FsX3NlY3Rp
b25fKTsKICAgaW50IHJlc29sdXRpb25fcmVxdWVzdF90YXJnZXRfcGl4ZWxfY291bnRfIFJUQ19H
VUFSREVEX0JZKGNyaXRpY2FsX3NlY3Rpb25fKTsKICAgaW50IHJlc29sdXRpb25fcmVxdWVzdF9t
YXhfcGl4ZWxfY291bnRfIFJUQ19HVUFSREVEX0JZKGNyaXRpY2FsX3NlY3Rpb25fKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jh
c2UvdmlkZW9hZGFwdGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2FkYXB0ZXJfdW5pdHRlc3QuY2MKaW5kZXgg
NjdhNjYyNjM5ZTU1MTRlNDQ0MzhkMmE1ZTAxNjg2YTA5MWYwYmU1OC4uYzYwMGZjMmMwNzMwYzk5
MTZjNGE0YTljMTdiMzgyNmE3YWU4OTIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2FkYXB0ZXJfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
YmFzZS92aWRlb2FkYXB0ZXJfdW5pdHRlc3QuY2MKQEAgLTE4LDcgKzE4LDYgQEAKICNpbmNsdWRl
ICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2VmcmFtZXNv
dXJjZS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjaGFubmVsLmgiCi0jaW5jbHVkZSAi
bWVkaWEvYmFzZS90ZXN0dXRpbHMuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL3ZpZGVvYWRhcHRl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgpAQCAtMTExMiw0ICsxMTExLDYxIEBAIFRFU1RfUChWaWRlb0FkYXB0ZXJUZXN0LCBU
ZXN0QWRhcHRUb01heCkgewogICBFWFBFQ1RfRVEoNjQwLCBvdXRfd2lkdGhfKTsKICAgRVhQRUNU
X0VRKDM2MCwgb3V0X2hlaWdodF8pOwogfQorCisvLyBUZXN0IGFkanVzdGluZyB0byAxNjo5IGlu
IGxhbmRzY2FwZSwgYW5kIDk6MTYgaW4gcG9ydHJhaXQuCitURVNUKFZpZGVvQWRhcHRlclRlc3RN
dWx0aXBsZU9yaWVudGF0aW9uLCBUZXN0Tm9ybWFsKSB7CisgIFZpZGVvQWRhcHRlciB2aWRlb19h
ZGFwdGVyOworICB2aWRlb19hZGFwdGVyLk9uT3V0cHV0Rm9ybWF0UmVxdWVzdChzdGQ6Om1ha2Vf
cGFpcig2NDAsIDM2MCksIDY0MCAqIDM2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYWtlX3BhaXIoMzYwLCA2NDApLCAzNjAgKiA2NDAsIDMwKTsKKworICBp
bnQgY3JvcHBlZF93aWR0aDsKKyAgaW50IGNyb3BwZWRfaGVpZ2h0OworICBpbnQgb3V0X3dpZHRo
OworICBpbnQgb3V0X2hlaWdodDsKKyAgRVhQRUNUX1RSVUUodmlkZW9fYWRhcHRlci5BZGFwdEZy
YW1lUmVzb2x1dGlvbigKKyAgICAgIC8qIGluX3dpZHRoPSAqLyA2NDAsIC8qIGluX2hlaWdodD0g
Ki8gNDgwLCAvKiBpbl90aW1lc3RhbXBfbnM9ICovIDAsCisgICAgICAmY3JvcHBlZF93aWR0aCwg
JmNyb3BwZWRfaGVpZ2h0LCAmb3V0X3dpZHRoLCAmb3V0X2hlaWdodCkpOworICBFWFBFQ1RfRVEo
NjQwLCBjcm9wcGVkX3dpZHRoKTsKKyAgRVhQRUNUX0VRKDM2MCwgY3JvcHBlZF9oZWlnaHQpOwor
ICBFWFBFQ1RfRVEoNjQwLCBvdXRfd2lkdGgpOworICBFWFBFQ1RfRVEoMzYwLCBvdXRfaGVpZ2h0
KTsKKworICBFWFBFQ1RfVFJVRSh2aWRlb19hZGFwdGVyLkFkYXB0RnJhbWVSZXNvbHV0aW9uKAor
ICAgICAgLyogaW5fd2lkdGg9ICovIDQ4MCwgLyogaW5faGVpZ2h0PSAqLyA2NDAsCisgICAgICAv
KiBpbl90aW1lc3RhbXBfbnM9ICovIHJ0Yzo6a051bU5hbm9zZWNzUGVyU2VjIC8gMzAsICZjcm9w
cGVkX3dpZHRoLAorICAgICAgJmNyb3BwZWRfaGVpZ2h0LCAmb3V0X3dpZHRoLCAmb3V0X2hlaWdo
dCkpOworICBFWFBFQ1RfRVEoMzYwLCBjcm9wcGVkX3dpZHRoKTsKKyAgRVhQRUNUX0VRKDY0MCwg
Y3JvcHBlZF9oZWlnaHQpOworICBFWFBFQ1RfRVEoMzYwLCBvdXRfd2lkdGgpOworICBFWFBFQ1Rf
RVEoNjQwLCBvdXRfaGVpZ2h0KTsKK30KKworLy8gRm9yY2Ugb3V0cHV0IHRvIGJlIDk6MTYsIGV2
ZW4gZm9yIGxhbmRzY2FwZSBpbnB1dC4KK1RFU1QoVmlkZW9BZGFwdGVyVGVzdE11bHRpcGxlT3Jp
ZW50YXRpb24sIFRlc3RGb3JjZVBvcnRyYWl0KSB7CisgIFZpZGVvQWRhcHRlciB2aWRlb19hZGFw
dGVyOworICB2aWRlb19hZGFwdGVyLk9uT3V0cHV0Rm9ybWF0UmVxdWVzdChzdGQ6Om1ha2VfcGFp
cigzNjAsIDY0MCksIDY0MCAqIDM2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptYWtlX3BhaXIoMzYwLCA2NDApLCAzNjAgKiA2NDAsIDMwKTsKKworICBpbnQg
Y3JvcHBlZF93aWR0aDsKKyAgaW50IGNyb3BwZWRfaGVpZ2h0OworICBpbnQgb3V0X3dpZHRoOwor
ICBpbnQgb3V0X2hlaWdodDsKKyAgRVhQRUNUX1RSVUUodmlkZW9fYWRhcHRlci5BZGFwdEZyYW1l
UmVzb2x1dGlvbigKKyAgICAgIC8qIGluX3dpZHRoPSAqLyA2NDAsIC8qIGluX2hlaWdodD0gKi8g
NDgwLCAvKiBpbl90aW1lc3RhbXBfbnM9ICovIDAsCisgICAgICAmY3JvcHBlZF93aWR0aCwgJmNy
b3BwZWRfaGVpZ2h0LCAmb3V0X3dpZHRoLCAmb3V0X2hlaWdodCkpOworICBFWFBFQ1RfRVEoMjcw
LCBjcm9wcGVkX3dpZHRoKTsKKyAgRVhQRUNUX0VRKDQ4MCwgY3JvcHBlZF9oZWlnaHQpOworICBF
WFBFQ1RfRVEoMjcwLCBvdXRfd2lkdGgpOworICBFWFBFQ1RfRVEoNDgwLCBvdXRfaGVpZ2h0KTsK
KworICBFWFBFQ1RfVFJVRSh2aWRlb19hZGFwdGVyLkFkYXB0RnJhbWVSZXNvbHV0aW9uKAorICAg
ICAgLyogaW5fd2lkdGg9ICovIDQ4MCwgLyogaW5faGVpZ2h0PSAqLyA2NDAsCisgICAgICAvKiBp
bl90aW1lc3RhbXBfbnM9ICovIHJ0Yzo6a051bU5hbm9zZWNzUGVyU2VjIC8gMzAsICZjcm9wcGVk
X3dpZHRoLAorICAgICAgJmNyb3BwZWRfaGVpZ2h0LCAmb3V0X3dpZHRoLCAmb3V0X2hlaWdodCkp
OworICBFWFBFQ1RfRVEoMzYwLCBjcm9wcGVkX3dpZHRoKTsKKyAgRVhQRUNUX0VRKDY0MCwgY3Jv
cHBlZF9oZWlnaHQpOworICBFWFBFQ1RfRVEoMzYwLCBvdXRfd2lkdGgpOworICBFWFBFQ1RfRVEo
NjQwLCBvdXRfaGVpZ2h0KTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2Uv
dmlkZW9jYXB0dXJlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyLmgKaW5kZXggODI2ZTM4ZmE1YTFhY2JkYjE2Mjhl
Nzc0NWExMGQ1MjA0OTg2ZmI1Mi4uMzI3NDIwNjJhYTkyOGMwMjE3ODg1YzNkMGFhMzg2YmE5MThl
MTc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJtZWRpYS9iYXNlL3ZpZGVvY29tbW9uLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fs
c2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1lc3RhbXBh
bGlnbmVyLmgiCkBAIC03Miw4ICs3Myw5IEBAIGVudW0gQ2FwdHVyZVN0YXRlIHsKIC8vICAgbWVk
aWEgZW5naW5lIHRocmVhZCkuIEhlbmNlLCB0aGUgVmlkZW9DYXB0dXJlIHN1YmNsYXNzZXMgZG9u
dCBuZWVkIHRvIGJlCiAvLyAgIHRocmVhZCBzYWZlLgogLy8KLWNsYXNzIFZpZGVvQ2FwdHVyZXIg
OiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4sCi0gICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIHJ0Yzo6VmlkZW9Tb3VyY2VJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiB7CitjbGFz
cyBSVENfRVhQT1JUIFZpZGVvQ2FwdHVyZXIKKyAgICA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xv
dHM8PiwKKyAgICAgIHB1YmxpYyBydGM6OlZpZGVvU291cmNlSW50ZXJmYWNlPHdlYnJ0Yzo6Vmlk
ZW9GcmFtZT4gewogIHB1YmxpYzoKICAgVmlkZW9DYXB0dXJlcigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVv
Y2FwdHVyZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY2FwdHVyZXJfdW5pdHRlc3QuY2MKaW5kZXggMDgwZjRh
MDhjYWVhYjA0OGQ2ZmExZTNiZWI5ZGJkMDg0NjdkOWYzZi4uMDczNDRjYTdhYzg1YWUyNDUxYjQ5
N2ZhNDllNjc0MGU3NThiY2ZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NhcHR1cmVyX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2Uv
dmlkZW9jYXB0dXJlcl91bml0dGVzdC5jYwpAQCAtMTUsNyArMTUsNiBAQAogCiAjaW5jbHVkZSAi
bWVkaWEvYmFzZS9mYWtldmlkZW9jYXB0dXJlci5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFr
ZXZpZGVvcmVuZGVyZXIuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL3Rlc3R1dGlscy5oIgogI2lu
Y2x1ZGUgIm1lZGlhL2Jhc2UvdmlkZW9jYXB0dXJlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1
bml0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92aWRlb2NvbW1v
bi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFz
ZS92aWRlb2NvbW1vbi5oCmluZGV4IDBmZmQ5ODljYjY1MTVmMGU1ZTlkMjIwMDFiODdjYmY2NDVj
Yzc5OTguLjY0NDdjYmEzYjJiNjlhYzUzZjU4OWE3N2NiYWM1NTAyNGIzZWE2NGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2Uv
dmlkZW9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9iYXNlL3ZpZGVvY29tbW9uLmgKQEAgLTE3LDYgKzE3LDcgQEAKIAogI2luY2x1
ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKIG5hbWVzcGFjZSBjcmlja2V0IHsKQEAg
LTE0OSw3ICsxNTAsNyBAQCBzdHJ1Y3QgVmlkZW9Gb3JtYXRQb2QgewogICB1aW50MzJfdCBmb3Vy
Y2M7ICAvLyBDb2xvciBzcGFjZS4gRk9VUkNDX0FOWSBtZWFucyB0aGF0IGFueSBjb2xvciBzcGFj
ZSBpcyBPSy4KIH07CiAKLXN0cnVjdCBWaWRlb0Zvcm1hdCA6IFZpZGVvRm9ybWF0UG9kIHsKK3N0
cnVjdCBSVENfRVhQT1JUIFZpZGVvRm9ybWF0IDogVmlkZW9Gb3JtYXRQb2QgewogICBzdGF0aWMg
Y29uc3QgaW50NjRfdCBrTWluaW11bUludGVydmFsID0KICAgICAgIHJ0Yzo6a051bU5hbm9zZWNz
UGVyU2VjIC8gMTAwMDA7ICAvLyAxMGsgZnBzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZwOV9wcm9maWxlLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvYmFzZS92cDlf
cHJvZmlsZS5jYwppbmRleCBhMjhhOTEyNzYyYTcyOWU2Mjc5Njc0MGFlYjg0ODE1YzNiOTkxYzJh
Li5jOWNjYWE5ZjlkN2RlYzFmMDU5MTkzNWRkZjk2MGY5YzBmZDZjM2NhIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZwOV9w
cm9maWxlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuY2MKQEAgLTE1LDcgKzE1LDcgQEAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCiAvLyBQcm9maWxlIGluZm9ybWF0aW9uIGZvciBWUDkgdmlkZW8uCi1jb25zdCBj
aGFyIGtWUDlGbXRwUHJvZmlsZUlkW10gPSAieC1nb29nbGUtcHJvZmlsZS1pZCI7Citjb25zdCBj
aGFyIGtWUDlGbXRwUHJvZmlsZUlkW10gPSAicHJvZmlsZS1pZCI7CiAKIHN0ZDo6c3RyaW5nIFZQ
OVByb2ZpbGVUb1N0cmluZyhWUDlQcm9maWxlIHByb2ZpbGUpIHsKICAgc3dpdGNoIChwcm9maWxl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9iYXNlL3ZwOV9wcm9maWxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9iYXNlL3ZwOV9wcm9maWxlLmgKaW5kZXggNWNjMWQxNjZhODc4
OWIxODI5ZDdhYTJkOTE5NTFjYTVlZmUwODI1OC4uNzU1YzQ2ZGEyY2JkYjk2M2I1YWVkY2NhZTRl
OTU5NmY4NTY0ZjIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvYmFzZS92cDlfcHJvZmlsZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Jhc2UvdnA5X3Byb2ZpbGUuaApAQCAt
MTYsNyArMTYsNiBAQAogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgotI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvYWRtX2hlbHBlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9hZG1faGVscGVycy5oCmluZGV4IGM2ZWEzYTIw
OWYyYzlhZjM2MzJiYzQ4YzM5Mzc2YWQ0Yzk1YWYyODAuLjJhMzVkMjZiNDcxNjE0MDUzM2U5NmE2
YWY4YTdkZTM1ZGY3NjQ0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9hZG1faGVscGVycy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9hZG1faGVscGVy
cy5oCkBAIC0xMSw4ICsxMSw2IEBACiAjaWZuZGVmIE1FRElBX0VOR0lORV9BRE1fSEVMUEVSU19I
XwogI2RlZmluZSBNRURJQV9FTkdJTkVfQURNX0hFTFBFUlNfSF8KIAotI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0KIG5hbWVzcGFjZSB3ZWJydGMg
ewogCiBjbGFzcyBBdWRpb0RldmljZU1vZHVsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9hcG1faGVscGVyc191bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2VuZ2luZS9hcG1faGVscGVyc191bml0dGVzdC5jYwppbmRleCA0NjRlMDUzZGMwYThkMTZiYjZl
MWQyYmZmNjlhOTkzYjJkNGVmOTJjLi43MGFjMGMxYzIxZThhNTM1YmNkYjZhMDMwOTlkODNjZDM1
NjM5YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9lbmdpbmUvYXBtX2hlbHBlcnNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2FwbV9oZWxwZXJz
X3VuaXR0ZXN0LmNjCkBAIC0xNjQsMTEgKzE2NCw0IEBAIFRFU1QoQXBtSGVscGVyc1Rlc3QsIFR5
cGluZ0RldGVjdGlvblN0YXR1c19FbmFibGVEaXNhYmxlKSB7CiAgIEVYUEVDVF9FUShWb2ljZURl
dGVjdGlvbjo6a1ZlcnlMb3dMaWtlbGlob29kLCB2ZC0+bGlrZWxpaG9vZCgpKTsKICAgRVhQRUNU
X0ZBTFNFKHZkLT5pc19lbmFibGVkKCkpOwogfQotCi0vLyBUT0RPKHNvbGVuYmVyZyk6IE1vdmUg
dGhpcyB0ZXN0IHRvIGEgYmV0dGVyIHBsYWNlIC0gYWRkZWQgaGVyZSBmb3IgdGhlIHNha2UKLS8v
IG9mIGR1cGxpY2F0aW5nIGFsbCByZWxldmFudCB0ZXN0cyBmcm9tIGF1ZGlvX3Byb2Nlc3Npbmdf
dGVzdC5jYy4KLVRFU1QoQXBtSGVscGVyc1Rlc3QsIEhpZ2hQYXNzRmlsdGVyX0RlZmF1bHRNb2Rl
KSB7Ci0gIFRlc3RIZWxwZXIgaGVscGVyOwotICBFWFBFQ1RfRkFMU0UoaGVscGVyLmFwbSgpLT5o
aWdoX3Bhc3NfZmlsdGVyKCktPmlzX2VuYWJsZWQoKSk7Ci19CiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvY29uc3RhbnRzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2NvbnN0YW50cy5jYwppbmRleCA3MzY2ODVmYzc5
ZjM2ODRmNGRmNDE5NWVlYjRmNDg1MDNhZTQ1ODE1Li5mYjNhYzY5OGU2MTcwMjc4ZTViOGU4MTM3
N2VkNzhlZGIyZGFkNmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29uc3RhbnRzLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9jb25zdGFudHMuY2MK
QEAgLTE0LDUgKzE0LDYgQEAgbmFtZXNwYWNlIGNyaWNrZXQgewogCiBjb25zdCBpbnQga01pblZp
ZGVvQml0cmF0ZUJwcyA9IDMwMDAwOwogY29uc3QgaW50IGtWaWRlb010dSA9IDEyMDA7Ci1jb25z
dCBpbnQga1ZpZGVvUnRwQnVmZmVyU2l6ZSA9IDY1NTM2OworY29uc3QgaW50IGtWaWRlb1J0cFNl
bmRCdWZmZXJTaXplID0gNjU1MzY7Citjb25zdCBpbnQga1ZpZGVvUnRwUmVjdkJ1ZmZlclNpemUg
PSAyNjIxNDQ7CiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2NvbnN0YW50cy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5l
L2NvbnN0YW50cy5oCmluZGV4IGVhNmMwNzU0YTY1ZDk3MmViZjg2MTdiZGIxNGFhODY5YTE4YTZh
MjQuLmIxMzYwNjA1NDYxMDAxOTRlZDZmZTUxNDc4ZmViNWIxNTgzODM5ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9j
b25zdGFudHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvY29uc3RhbnRzLmgKQEAgLTE0LDcgKzE0LDggQEAKIG5hbWVzcGFjZSBj
cmlja2V0IHsKIAogZXh0ZXJuIGNvbnN0IGludCBrVmlkZW9NdHU7Ci1leHRlcm4gY29uc3QgaW50
IGtWaWRlb1J0cEJ1ZmZlclNpemU7CitleHRlcm4gY29uc3QgaW50IGtWaWRlb1J0cFNlbmRCdWZm
ZXJTaXplOworZXh0ZXJuIGNvbnN0IGludCBrVmlkZW9SdHBSZWN2QnVmZmVyU2l6ZTsKIAogZXh0
ZXJuIGNvbnN0IGNoYXIga0gyNjRDb2RlY05hbWVbXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2NvbnZlcnRfbGVn
YWN5X3ZpZGVvX2ZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29udmVydF9sZWdhY3lfdmlkZW9fZmFjdG9yeS5jYwppbmRl
eCA3ZGExYjBmZTJmZDdjMmI3NjM4MmUyMWZmZGQxMjMzOGQxNWU4ODY4Li4yOTdhMTQzNDI1YjRj
MWVhNDFjYzA1MWFmYTQzYWQ5MTM1YzNjZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29udmVydF9sZWdhY3lfdmlk
ZW9fZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9lbmdpbmUvY29udmVydF9sZWdhY3lfdmlkZW9fZmFjdG9yeS5jYwpAQCAtMTUs
NiArMTUsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS92
aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy92aWRlb19kZWNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIuaCIKICNpbmNs
dWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgpAQCAtMTMwLDcg
KzEzMSw3IEBAIGNsYXNzIEVuY29kZXJBZGFwdGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNv
ZGVyRmFjdG9yeSB7CiAgICAgaWYgKElzRm9ybWF0U3VwcG9ydGVkKGludGVybmFsX2VuY29kZXJf
ZmFjdG9yeV8tPkdldFN1cHBvcnRlZEZvcm1hdHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9ybWF0KSkgewogICAgICAgaW50ZXJuYWxfZW5jb2RlciA9Ci0gICAgICAgICAgQ29kZWNO
YW1lc0VxKGZvcm1hdC5uYW1lLmNfc3RyKCksIGtWcDhDb2RlY05hbWUpCisgICAgICAgICAgYWJz
bDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwga1ZwOENvZGVjTmFtZSkKICAgICAgICAg
ICAgICAgPyBhYnNsOjptYWtlX3VuaXF1ZTx3ZWJydGM6OlZQOEVuY29kZXJTaW11bGNhc3RQcm94
eT4oCiAgICAgICAgICAgICAgICAgICAgIGludGVybmFsX2VuY29kZXJfZmFjdG9yeV8uZ2V0KCks
IGZvcm1hdCkKICAgICAgICAgICAgICAgOiBpbnRlcm5hbF9lbmNvZGVyX2ZhY3RvcnlfLT5DcmVh
dGVWaWRlb0VuY29kZXIoZm9ybWF0KTsKQEAgLTE0MSw3ICsxNDIsNyBAQCBjbGFzcyBFbmNvZGVy
QWRhcHRlciA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3RvcnkgewogICAgIGlmIChJ
c0Zvcm1hdFN1cHBvcnRlZChleHRlcm5hbF9lbmNvZGVyX2ZhY3RvcnlfLT5HZXRTdXBwb3J0ZWRG
b3JtYXRzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCkpIHsKICAgICAgIGV4
dGVybmFsX2VuY29kZXIgPQotICAgICAgICAgIENvZGVjTmFtZXNFcShmb3JtYXQubmFtZS5jX3N0
cigpLCBrVnA4Q29kZWNOYW1lKQorICAgICAgICAgIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9y
bWF0Lm5hbWUsIGtWcDhDb2RlY05hbWUpCiAgICAgICAgICAgICAgID8gYWJzbDo6bWFrZV91bmlx
dWU8d2VicnRjOjpTaW11bGNhc3RFbmNvZGVyQWRhcHRlcj4oCiAgICAgICAgICAgICAgICAgICAg
IGV4dGVybmFsX2VuY29kZXJfZmFjdG9yeV8uZ2V0KCksIGZvcm1hdCkKICAgICAgICAgICAgICAg
OiBleHRlcm5hbF9lbmNvZGVyX2ZhY3RvcnlfLT5DcmVhdGVWaWRlb0VuY29kZXIoZm9ybWF0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS9jb252ZXJ0X2xlZ2FjeV92aWRlb19mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvY29udmVydF9sZWdhY3lf
dmlkZW9fZmFjdG9yeS5oCmluZGV4IDViZDM1ODBhNmYxMDQyNWQzMGZkOTVkNDM4MTM2OGJhNjg3
ZWNiYmYuLjI3MzgzYWIzODZlOWYzOTgzZGU0MzI1NzMzZGQxZTQ4NmRiNjVjOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS9jb252ZXJ0X2xlZ2FjeV92aWRlb19mYWN0b3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2NvbnZlcnRfbGVnYWN5X3ZpZGVv
X2ZhY3RvcnkuaApAQCAtMTMsNiArMTMsOCBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5j
bHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7
CiBjbGFzcyBWaWRlb0VuY29kZXJGYWN0b3J5OwogY2xhc3MgVmlkZW9EZWNvZGVyRmFjdG9yeTsK
QEAgLTI3LDEwICsyOSwxMiBAQCBjbGFzcyBXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5OwogLy8g
bmV3IHR5cGUgb2YgY29kZWMgZmFjdG9yaWVzLiBUaGUgcHVycG9zZSBvZiB0aGVzZSBmdW5jdGlv
bnMgaXMgdG8gcHJvdmlkZSBhbgogLy8gZWFzeSB3YXkgZm9yIGNsaWVudHMgdG8gbWlncmF0ZSB0
byB0aGUgQVBJIHdpdGggbmV3IGZhY3RvcnkgdHlwZXMuCiAvLyBUT0RPKG1hZ2plZCk6IFJlbW92
ZSBvbmNlIG9sZCBmYWN0b3JpZXMgYXJlIGdvbmUsIHdlYnJ0Yzo3OTI1Lgotc3RkOjp1bmlxdWVf
cHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4gQ29udmVydFZpZGVvRW5jb2RlckZhY3Rv
cnkoCitSVENfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rv
cnk+CitDb252ZXJ0VmlkZW9FbmNvZGVyRmFjdG9yeSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
UnRjVmlkZW9FbmNvZGVyRmFjdG9yeT4gZXh0ZXJuYWxfZW5jb2Rlcl9mYWN0b3J5KTsKIAotc3Rk
Ojp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gQ29udmVydFZpZGVvRGVj
b2RlckZhY3RvcnkoCitSVENfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVj
b2RlckZhY3Rvcnk+CitDb252ZXJ0VmlkZW9EZWNvZGVyRmFjdG9yeSgKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeT4gZXh0ZXJuYWxfZGVjb2Rlcl9mYWN0b3J5
KTsKIAogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjY2FsbC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS9mYWtld2VicnRjY2FsbC5jYwppbmRleCBjZTk5YjljMTAzNGMwOTIxNTQwODk0ODgzNmU0Yzk0
NDMxMTJhZjQyLi42YzViOGM3NGI4ZjA4ZDE4MjlmNTg1MmVmYjNmZDQ1OTE5ZWExNGMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvZmFrZXdlYnJ0Y2NhbGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGNjYWxsLmNjCkBAIC0xMjMsNiAr
MTIzLDcgQEAgRmFrZVZpZGVvU2VuZFN0cmVhbTo6RmFrZVZpZGVvU2VuZFN0cmVhbSgKICAgICAg
IHNvdXJjZV8obnVsbHB0ciksCiAgICAgICBudW1fc3dhcHBlZF9mcmFtZXNfKDApIHsKICAgUlRD
X0RDSEVDSyhjb25maWcuZW5jb2Rlcl9zZXR0aW5ncy5lbmNvZGVyX2ZhY3RvcnkgIT0gbnVsbHB0
cik7CisgIFJUQ19EQ0hFQ0soY29uZmlnLmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0
b3JfZmFjdG9yeSAhPSBudWxscHRyKTsKICAgUmVjb25maWd1cmVWaWRlb0VuY29kZXIoc3RkOjpt
b3ZlKGVuY29kZXJfY29uZmlnKSk7CiB9CiAKQEAgLTY0Myw0ICs2NDQsNyBAQCB2b2lkIEZha2VD
YWxsOjpPblNlbnRQYWNrZXQoY29uc3QgcnRjOjpTZW50UGFja2V0JiBzZW50X3BhY2tldCkgewog
ICB9CiB9CiAKK3ZvaWQgRmFrZUNhbGw6Ok1lZGlhVHJhbnNwb3J0Q2hhbmdlKAorICAgIHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UpIHt9
CisKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y2NhbGwuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9m
YWtld2VicnRjY2FsbC5oCmluZGV4IGRiY2VkYjhmNDEwOGZlNTVmMWEyMTgxYjg4YTAzMTZjOWIy
MDg4OWIuLjFiNmRlYjA3MDJkYTdmMzVlNzQyNWFlMDJmNjYzMDUyOTE1YmUxNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS9mYWtld2VicnRjY2FsbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjY2FsbC5oCkBAIC0yNzMsNiArMjczLDkg
QEAgY2xhc3MgRmFrZUNhbGwgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpDYWxsLCBwdWJsaWMgd2Vi
cnRjOjpQYWNrZXRSZWNlaXZlciB7CiAgIGludCBHZXROdW1DcmVhdGVkUmVjZWl2ZVN0cmVhbXMo
KSBjb25zdDsKICAgdm9pZCBTZXRTdGF0cyhjb25zdCB3ZWJydGM6OkNhbGw6OlN0YXRzJiBzdGF0
cyk7CiAKKyAgdm9pZCBNZWRpYVRyYW5zcG9ydENoYW5nZSgKKyAgICAgIHdlYnJ0Yzo6TWVkaWFU
cmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UpIG92ZXJyaWRlOwor
CiAgcHJpdmF0ZToKICAgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW0qIENyZWF0ZUF1ZGlvU2VuZFN0
cmVhbSgKICAgICAgIGNvbnN0IHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpDb25maWcmIGNvbmZp
Zykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVvY2FwdHVyZW1vZHVsZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zh
a2V3ZWJydGN2aWRlb2NhcHR1cmVtb2R1bGUuaAppbmRleCA0N2YxMzkzYzNmMzgxOWU4NTE3MTBi
Yjg0YmIyODFhNGViZDQwZDM4Li43NTU2ODExZjJkZTAxOTYyYmZlMDE0ZTUwNTYzMjRjMmQ2ODQw
MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVvY2FwdHVyZW1vZHVsZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2Vi
cnRjdmlkZW9jYXB0dXJlbW9kdWxlLmgKQEAgLTE0LDcgKzE0LDYgQEAKICNpbmNsdWRlIDx2ZWN0
b3I+CiAKICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKLSNpbmNsdWRlICJtZWRp
YS9iYXNlL3Rlc3R1dGlscy5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2Nh
cHR1cmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZV9mb3JfdGVzdC5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9lbmdpbmUvZmFrZXdlYnJ0Y3ZpZGVvZW5naW5lLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGN2aWRlb2VuZ2luZS5j
YwppbmRleCA3MDgxYjY0OTMzYTk1NmYyYzA2YWE1YTg2Mjg0NTc0YjEwZjNkYjcyLi42OTBmM2U3
ZjgzMWVjYTc2MGE3NWM1MTE0NDM0Y2NkZTZiOTE0YmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0Y3Zp
ZGVvZW5naW5lLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlkZW9lbmdpbmUuY2MKQEAgLTEwLDYgKzEwLDcg
QEAKIAogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlkZW9lbmdpbmUuaCIKIAor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29k
ZWMuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5o
IgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2RlY29kZXJmYWN0b3J5LmgiCkBA
IC0xMjgsOSArMTI5LDcgQEAgRmFrZVdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnk6OmRlY29kZXJz
KCkgewogLy8gRW5jb2Rlci4KIEZha2VXZWJSdGNWaWRlb0VuY29kZXI6OkZha2VXZWJSdGNWaWRl
b0VuY29kZXIoCiAgICAgRmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIGZhY3RvcnkpCi0g
ICAgOiBpbml0X2VuY29kZV9ldmVudF8oZmFsc2UsIGZhbHNlKSwKLSAgICAgIG51bV9mcmFtZXNf
ZW5jb2RlZF8oMCksCi0gICAgICBmYWN0b3J5XyhmYWN0b3J5KSB7fQorICAgIDogbnVtX2ZyYW1l
c19lbmNvZGVkXygwKSwgZmFjdG9yeV8oZmFjdG9yeSkge30KIAogRmFrZVdlYlJ0Y1ZpZGVvRW5j
b2Rlcjo6fkZha2VXZWJSdGNWaWRlb0VuY29kZXIoKSB7CiAgIGlmIChmYWN0b3J5XykgewpAQCAt
MTY3LDExICsxNjYsNiBAQCBpbnQzMl90IEZha2VXZWJSdGNWaWRlb0VuY29kZXI6OlJlbGVhc2Uo
KSB7CiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKLWludDMyX3QgRmFrZVdl
YlJ0Y1ZpZGVvRW5jb2Rlcjo6U2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0TG9z
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50NjRfdCBydHQpIHsKLSAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLX0KLQogaW50
MzJfdCBGYWtlV2ViUnRjVmlkZW9FbmNvZGVyOjpTZXRSYXRlQWxsb2NhdGlvbigKICAgICBjb25z
dCB3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRpb24mIGFsbG9jYXRpb24sCiAgICAgdWludDMy
X3QgZnJhbWVyYXRlKSB7CkBAIC0xOTQsOCArMTg4LDcgQEAgaW50IEZha2VXZWJSdGNWaWRlb0Vu
Y29kZXI6OkdldE51bUVuY29kZWRGcmFtZXMoKSB7CiAKIC8vIFZpZGVvIGVuY29kZXIgZmFjdG9y
eS4KIEZha2VXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5OjpGYWtlV2ViUnRjVmlkZW9FbmNvZGVy
RmFjdG9yeSgpCi0gICAgOiBjcmVhdGVkX3ZpZGVvX2VuY29kZXJfZXZlbnRfKGZhbHNlLCBmYWxz
ZSksCi0gICAgICBudW1fY3JlYXRlZF9lbmNvZGVyc18oMCksCisgICAgOiBudW1fY3JlYXRlZF9l
bmNvZGVyc18oMCksCiAgICAgICBlbmNvZGVyc19oYXZlX2ludGVybmFsX3NvdXJjZXNfKGZhbHNl
KSwKICAgICAgIHZwOF9mYWN0b3J5X21vZGVfKGZhbHNlKSB7fQogCkBAIC0yMTgsNyArMjExLDcg
QEAgRmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3Rvcnk6OkNyZWF0ZVZpZGVvRW5jb2RlcigKICAg
cnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF8pOwogICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpW
aWRlb0VuY29kZXI+IGVuY29kZXI7CiAgIGlmIChJc0Zvcm1hdFN1cHBvcnRlZChmb3JtYXRzXywg
Zm9ybWF0KSkgewotICAgIGlmIChDb2RlY05hbWVzRXEoZm9ybWF0Lm5hbWUuY19zdHIoKSwga1Zw
OENvZGVjTmFtZSkgJiYKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFt
ZSwga1ZwOENvZGVjTmFtZSkgJiYKICAgICAgICAgIXZwOF9mYWN0b3J5X21vZGVfKSB7CiAgICAg
ICAvLyBUaGUgc2ltdWxjYXN0IGFkYXB0ZXIgd2lsbCBhc2sgdGhpcyBmYWN0b3J5IGZvciBtdWx0
aXBsZSBWUDgKICAgICAgIC8vIGVuY29kZXJzLiBFbnRlciB2cDhfZmFjdG9yeV9tb2RlIHNvIHRo
YXQgd2Ugbm93IGNyZWF0ZSB0aGVzZSBlbmNvZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2Zha2V3ZWJydGN2aWRl
b2VuZ2luZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVk
aWEvZW5naW5lL2Zha2V3ZWJydGN2aWRlb2VuZ2luZS5oCmluZGV4IGY0Mjg3YTMxZDI2MDI2ZmRl
ZTg5MzFiZTkzNDdkYjQ4OTg0NmFlMjMuLjZlZDkyYTc4OWI1N2UyZGQ3OTA5ODBkN2E5Yzg5NjJi
YTI0N2YwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21lZGlhL2VuZ2luZS9mYWtld2VicnRjdmlkZW9lbmdpbmUuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvZmFrZXdlYnJ0
Y3ZpZGVvZW5naW5lLmgKQEAgLTg2LDcgKzg2LDYgQEAgY2xhc3MgRmFrZVdlYlJ0Y1ZpZGVvRW5j
b2RlciA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRW5jb2RlciB7CiAgIGludDMyX3QgUmVnaXN0ZXJF
bmNvZGVDb21wbGV0ZUNhbGxiYWNrKAogICAgICAgd2VicnRjOjpFbmNvZGVkSW1hZ2VDYWxsYmFj
ayogY2FsbGJhY2spIG92ZXJyaWRlOwogICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZTsKLSAg
aW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRMb3NzLCBpbnQ2NF90
IHJ0dCkgb3ZlcnJpZGU7CiAgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3Qgd2VicnRj
OjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9pbnRl
cm5hbGRlY29kZXJmYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuY2MKaW5kZXggZGY3
NDc3M2M4NmRiMjZlZTM3NDg0MTI0N2FhMTBiYjQwMGIxOTdhYy4uNzIyNDEzMzM4ZTUxMTk4ZDJm
YzYxNmFmNTllOTlmOWY3NjBmN2JjNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3Rvcnku
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2lu
Y2x1ZGUgIm1lZGlhL2VuZ2luZS9pbnRlcm5hbGRlY29kZXJmYWN0b3J5LmgiCiAKKyNpbmNsdWRl
ICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3NkcF92
aWRlb19mb3JtYXQuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0Lmgi
CkBAIC01NSwxMSArNTYsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4gSW50ZXJu
YWxEZWNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9EZWNvZGVyKAogICAgIHJldHVybiBudWxscHRy
OwogICB9CiAKLSAgaWYgKGNyaWNrZXQ6OkNvZGVjTmFtZXNFcShmb3JtYXQubmFtZSwgY3JpY2tl
dDo6a1ZwOENvZGVjTmFtZSkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5u
YW1lLCBjcmlja2V0OjprVnA4Q29kZWNOYW1lKSkKICAgICByZXR1cm4gVlA4RGVjb2Rlcjo6Q3Jl
YXRlKCk7Ci0gIGlmIChjcmlja2V0OjpDb2RlY05hbWVzRXEoZm9ybWF0Lm5hbWUsIGNyaWNrZXQ6
OmtWcDlDb2RlY05hbWUpKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFt
ZSwgY3JpY2tldDo6a1ZwOUNvZGVjTmFtZSkpCiAgICAgcmV0dXJuIFZQOURlY29kZXI6OkNyZWF0
ZSgpOwotICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGZvcm1hdC5uYW1lLCBjcmlja2V0Ojpr
SDI2NENvZGVjTmFtZSkpCisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1l
LCBjcmlja2V0OjprSDI2NENvZGVjTmFtZSkpCiAgICAgcmV0dXJuIEgyNjREZWNvZGVyOjpDcmVh
dGUoKTsKIAogICBSVENfTk9UUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL2ludGVybmFsZW5jb2RlcmZh
Y3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5jYwppbmRleCBlNmMzYzJlNzJmZDYzMmVh
YzcxZWIzOGRmYWI2MTMyN2ExOGI4MmRmLi5lODFiNzNkNWUzZDZjZjE1YWMzOGNmN2QzNTUzNWQx
NWQ0MjIwYzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvaW50ZXJu
YWxlbmNvZGVyZmFjdG9yeS5jYwpAQCAtMTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSA8dXRpbGl0
eT4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS92aWRl
b19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy9oMjY0L2luY2x1ZGUvaDI2NC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKQEAgLTQxLDExICs0MiwxMSBAQCBWaWRl
b0VuY29kZXJGYWN0b3J5OjpDb2RlY0luZm8gSW50ZXJuYWxFbmNvZGVyRmFjdG9yeTo6UXVlcnlW
aWRlb0VuY29kZXIoCiAKIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IEludGVybmFsRW5j
b2RlckZhY3Rvcnk6OkNyZWF0ZVZpZGVvRW5jb2RlcigKICAgICBjb25zdCBTZHBWaWRlb0Zvcm1h
dCYgZm9ybWF0KSB7Ci0gIGlmIChjcmlja2V0OjpDb2RlY05hbWVzRXEoZm9ybWF0Lm5hbWUsIGNy
aWNrZXQ6OmtWcDhDb2RlY05hbWUpKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3Jt
YXQubmFtZSwgY3JpY2tldDo6a1ZwOENvZGVjTmFtZSkpCiAgICAgcmV0dXJuIFZQOEVuY29kZXI6
OkNyZWF0ZSgpOwotICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGZvcm1hdC5uYW1lLCBjcmlj
a2V0OjprVnA5Q29kZWNOYW1lKSkKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0
Lm5hbWUsIGNyaWNrZXQ6OmtWcDlDb2RlY05hbWUpKQogICAgIHJldHVybiBWUDlFbmNvZGVyOjpD
cmVhdGUoY3JpY2tldDo6VmlkZW9Db2RlYyhmb3JtYXQpKTsKLSAgaWYgKGNyaWNrZXQ6OkNvZGVj
TmFtZXNFcShmb3JtYXQubmFtZSwgY3JpY2tldDo6a0gyNjRDb2RlY05hbWUpKQorICBpZiAoYWJz
bDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwgY3JpY2tldDo6a0gyNjRDb2RlY05hbWUp
KQogICAgIHJldHVybiBIMjY0RW5jb2Rlcjo6Q3JlYXRlKGNyaWNrZXQ6OlZpZGVvQ29kZWMoZm9y
bWF0KSk7CiAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJUcnlpbmcgdG8gY3JlYXRlZCBlbmNvZGVy
IG9mIHVuc3VwcG9ydGVkIGZvcm1hdCAiCiAgICAgICAgICAgICAgICAgICAgIDw8IGZvcm1hdC5u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbWVkaWEvZW5naW5lL211bHRpcGxleGNvZGVjZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9tdWx0aXBsZXhjb2RlY2Zh
Y3RvcnkuY2MKaW5kZXggMjM2YTJlODFhY2M3MjJkODQ4NTU0YTg3YWRmNDg0MGMyNGQ3NWY5NC4u
YjM5MTMyNDNlZGViMDVkMTYzZGQzYTJhYjg3M2ZjMDBmMjAwY2Y0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL211bHRp
cGxleGNvZGVjZmFjdG9yeS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbXVsdGlwbGV4Y29kZWNmYWN0b3J5LmNjCkBAIC0xMiw2
ICsxMiw3IEBACiAKICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0Lmgi
CiAjaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVk
aWFjb25zdGFudHMuaCIKQEAgLTIyLDggKzIzLDggQEAKIG5hbWVzcGFjZSB7CiAKIGJvb2wgSXNN
dWx0aXBsZXhDb2RlYyhjb25zdCBjcmlja2V0OjpWaWRlb0NvZGVjJiBjb2RlYykgewotICByZXR1
cm4gY3JpY2tldDo6Q29kZWNOYW1lc0VxKGNvZGVjLm5hbWUuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjprTXVsdGlwbGV4Q29kZWNOYW1lKTsKKyAgcmV0
dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZS5jX3N0cigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjprTXVsdGlwbGV4Q29kZWNOYW1lKTsKIH0K
IAogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpAQCAtNDIsNyArNDMsNyBAQCBzdGQ6OnZlY3Rv
cjxTZHBWaWRlb0Zvcm1hdD4gTXVsdGlwbGV4RW5jb2RlckZhY3Rvcnk6OkdldFN1cHBvcnRlZEZv
cm1hdHMoKQogICAgIGNvbnN0IHsKICAgc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IGZvcm1h
dHMgPSBmYWN0b3J5Xy0+R2V0U3VwcG9ydGVkRm9ybWF0cygpOwogICBmb3IgKGNvbnN0IGF1dG8m
IGZvcm1hdCA6IGZvcm1hdHMpIHsKLSAgICBpZiAoY3JpY2tldDo6Q29kZWNOYW1lc0VxKGZvcm1h
dC5uYW1lLCBrTXVsdGlwbGV4QXNzb2NpYXRlZENvZGVjTmFtZSkpIHsKKyAgICBpZiAoYWJzbDo6
RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwga011bHRpcGxleEFzc29jaWF0ZWRDb2RlY05h
bWUpKSB7CiAgICAgICBTZHBWaWRlb0Zvcm1hdCBtdWx0aXBsZXhfZm9ybWF0ID0gZm9ybWF0Owog
ICAgICAgbXVsdGlwbGV4X2Zvcm1hdC5wYXJhbWV0ZXJzW2NyaWNrZXQ6OmtDb2RlY1BhcmFtQXNz
b2NpYXRlZENvZGVjTmFtZV0gPQogICAgICAgICAgIGZvcm1hdC5uYW1lOwpAQCAtODgsNyArODks
NyBAQCBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gTXVsdGlwbGV4RGVjb2RlckZhY3Rvcnk6
OkdldFN1cHBvcnRlZEZvcm1hdHMoKQogICAgIGNvbnN0IHsKICAgc3RkOjp2ZWN0b3I8U2RwVmlk
ZW9Gb3JtYXQ+IGZvcm1hdHMgPSBmYWN0b3J5Xy0+R2V0U3VwcG9ydGVkRm9ybWF0cygpOwogICBm
b3IgKGNvbnN0IGF1dG8mIGZvcm1hdCA6IGZvcm1hdHMpIHsKLSAgICBpZiAoY3JpY2tldDo6Q29k
ZWNOYW1lc0VxKGZvcm1hdC5uYW1lLCBrTXVsdGlwbGV4QXNzb2NpYXRlZENvZGVjTmFtZSkpIHsK
KyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQubmFtZSwga011bHRpcGxleEFz
c29jaWF0ZWRDb2RlY05hbWUpKSB7CiAgICAgICBTZHBWaWRlb0Zvcm1hdCBtdWx0aXBsZXhfZm9y
bWF0ID0gZm9ybWF0OwogICAgICAgbXVsdGlwbGV4X2Zvcm1hdC5wYXJhbWV0ZXJzW2NyaWNrZXQ6
OmtDb2RlY1BhcmFtQXNzb2NpYXRlZENvZGVjTmFtZV0gPQogICAgICAgICAgIGZvcm1hdC5uYW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvZW5naW5lL211bHRpcGxleGNvZGVjZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL211bHRpcGxleGNvZGVjZmFjdG9y
eS5oCmluZGV4IDdhODUxYzhjMWVjZmM0MjAzY2E4M2ZhZTkxYWM4NmVhYzc3ZmU2N2EuLmFlMDk5
YTRlZjNlNzhiMWVmYWRmYjE5MmQ3NjkwMzAxNWRjYjUzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9tdWx0aXBsZXhj
b2RlY2ZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9lbmdpbmUvbXVsdGlwbGV4Y29kZWNmYWN0b3J5LmgKQEAgLTE2LDYgKzE2LDcg
QEAKIAogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIC8vIE11bHRpcGxleCBjb2RlYyBpcyBhIGNvbXBsZXRlbHkgbW9kdWxhci9vcHRpb25hbCBj
b2RlYyB0aGF0IGFsbG93cyB1c2VycyB0bwpAQCAtMzYsNyArMzcsNyBAQCBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIC8vIGFuZCBkZWNvZGVyIGluc3RhbmNlKHMpIHVzaW5nIHRoZXNlIGZhY3Rvcmllcy4K
IC8vIC0gVXNlIE11bHRpcGxleCpjb2RlckZhY3RvcnkgY2xhc3NlcyBpbiBDcmVhdGVQZWVyQ29u
bmVjdGlvbkZhY3RvcnkoKSBjYWxscy4KIC8vIC0gU2VsZWN0ICJtdWx0aXBsZXgiIGNvZGVjIGlu
IFNEUCBuZWdvdGlhdGlvbi4KLWNsYXNzIE11bHRpcGxleEVuY29kZXJGYWN0b3J5IDogcHVibGlj
IFZpZGVvRW5jb2RlckZhY3RvcnkgeworY2xhc3MgUlRDX0VYUE9SVCBNdWx0aXBsZXhFbmNvZGVy
RmFjdG9yeSA6IHB1YmxpYyBWaWRlb0VuY29kZXJGYWN0b3J5IHsKICBwdWJsaWM6CiAgIC8vIHxz
dXBwb3J0c19hdWdtZW50aW5nX2RhdGF8IGRlZmluZXMgaWYgdGhlIGVuY29kZXIgd291bGQgc3Vw
cG9ydCBhdWdtZW50aW5nCiAgIC8vIGRhdGEuIElmIHNldCwgdGhlIGVuY29kZXIgZXhwZWN0cyB0
byByZWNlaXZlIHZpZGVvIGZyYW1lIGJ1ZmZlcnMgb2YgdHlwZQpAQCAtNTQsNyArNTUsNyBAQCBj
bGFzcyBNdWx0aXBsZXhFbmNvZGVyRmFjdG9yeSA6IHB1YmxpYyBWaWRlb0VuY29kZXJGYWN0b3J5
IHsKICAgY29uc3QgYm9vbCBzdXBwb3J0c19hdWdtZW50aW5nX2RhdGFfOwogfTsKIAotY2xhc3Mg
TXVsdGlwbGV4RGVjb2RlckZhY3RvcnkgOiBwdWJsaWMgVmlkZW9EZWNvZGVyRmFjdG9yeSB7Citj
bGFzcyBSVENfRVhQT1JUIE11bHRpcGxleERlY29kZXJGYWN0b3J5IDogcHVibGljIFZpZGVvRGVj
b2RlckZhY3RvcnkgewogIHB1YmxpYzoKICAgLy8gfHN1cHBvcnRzX2F1Z21lbnRpbmdfZGF0YXwg
ZGVmaW5lcyBpZiB0aGUgZGVjb2RlciB3b3VsZCBzdXBwb3J0IGF1Z21lbnRpbmcKICAgLy8gZGF0
YS4gSWYgc2V0LCB0aGUgZGVjb2RlciBpcyBleHBlY3RlZCB0byBvdXRwdXQgdmlkZW8gZnJhbWUg
YnVmZmVycyBvZiB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbnVsbHdlYnJ0Y3ZpZGVvZW5naW5lLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbnVsbHdl
YnJ0Y3ZpZGVvZW5naW5lLmgKaW5kZXggOWFmMGY5YjEzMGM2YzJlNDU2NDUzNGU5MDIyZGUwN2U3
NTdmYzhjMS4uNjIzMjZkZDRkZGQ0M2IzOTY5OGVkZDEyMmRlMGNjMWFkZGVmNWE5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL251bGx3ZWJydGN2aWRlb2VuZ2luZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9udWxsd2VicnRjdmlkZW9lbmdpbmUuaApA
QCAtMzAsMTUgKzMwLDE5IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3Rvcnk7CiAKIC8v
IFZpZGVvIGVuZ2luZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGRvZXMgbm90aGluZyBhbmQgY2FuIGJl
IHVzZWQgaW4KIC8vIENvbXBvc2l0ZU1lZGlhRW5naW5lLgotY2xhc3MgTnVsbFdlYlJ0Y1ZpZGVv
RW5naW5lIHsKK2NsYXNzIE51bGxXZWJSdGNWaWRlb0VuZ2luZSA6IHB1YmxpYyBWaWRlb0VuZ2lu
ZUludGVyZmFjZSB7CiAgcHVibGljOgotICBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiBjb2RlY3Mo
KSBjb25zdCB7IHJldHVybiBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPigpOyB9CisgIHN0ZDo6dmVj
dG9yPFZpZGVvQ29kZWM+IGNvZGVjcygpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICByZXR1cm4gc3Rk
Ojp2ZWN0b3I8VmlkZW9Db2RlYz4oKTsKKyAgfQogCi0gIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBh
YmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBSdHBDYXBhYmlsaXRpZXMoKTsgfQorICBSdHBDYXBh
YmlsaXRpZXMgR2V0Q2FwYWJpbGl0aWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUnRwQ2Fw
YWJpbGl0aWVzKCk7IH0KIAotICBWaWRlb01lZGlhQ2hhbm5lbCogQ3JlYXRlQ2hhbm5lbCh3ZWJy
dGM6OkNhbGwqIGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IE1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykgeworICBWaWRlb01lZGlhQ2hhbm5lbCogQ3Jl
YXRlTWVkaWFDaGFubmVsKAorICAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAorICAgICAgY29uc3Qg
TWVkaWFDb25maWcmIGNvbmZpZywKKyAgICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucywK
KyAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIG92ZXJy
aWRlIHsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9udWxsd2VicnRj
dmlkZW9lbmdpbmVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvbnVsbHdlYnJ0Y3ZpZGVvZW5naW5lX3VuaXR0ZXN0LmNj
CmluZGV4IDZjNzQwYjhjOGMzNzJhYjhhMjkwYzMxYmRjYWU1NzVjODU1YjJhZGYuLmU3MThkMWJi
Njk3ZTIxODIyNzI4ZmE4YzFmNDVlY2M1ZTVkODYzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9udWxsd2VicnRjdmlk
ZW9lbmdpbmVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL251bGx3ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5j
YwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL251bGx3ZWJy
dGN2aWRlb2VuZ2luZS5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1
ZGUgIm1lZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2luZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fZGV2aWNlL2luY2x1ZGUvbW9ja19hdWRpb19kZXZpY2UuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCkBAIC0xOCw4
ICsxOSw3IEBACiAKIG5hbWVzcGFjZSBjcmlja2V0IHsKIAotY2xhc3MgV2ViUnRjTWVkaWFFbmdp
bmVOdWxsVmlkZW8KLSAgICA6IHB1YmxpYyBDb21wb3NpdGVNZWRpYUVuZ2luZTxXZWJSdGNWb2lj
ZUVuZ2luZSwgTnVsbFdlYlJ0Y1ZpZGVvRW5naW5lPiB7CitjbGFzcyBXZWJSdGNNZWRpYUVuZ2lu
ZU51bGxWaWRlbyA6IHB1YmxpYyBDb21wb3NpdGVNZWRpYUVuZ2luZSB7CiAgcHVibGljOgogICBX
ZWJSdGNNZWRpYUVuZ2luZU51bGxWaWRlbygKICAgICAgIHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1
bGUqIGFkbSwKQEAgLTI3LDEzICsyNywxMyBAQCBjbGFzcyBXZWJSdGNNZWRpYUVuZ2luZU51bGxW
aWRlbwogICAgICAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKICAgICAgIGNvbnN0IHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVjb2RlckZhY3Rvcnk+JgogICAgICAgICAgIGF1
ZGlvX2RlY29kZXJfZmFjdG9yeSkKLSAgICAgIDogQ29tcG9zaXRlTWVkaWFFbmdpbmU8V2ViUnRj
Vm9pY2VFbmdpbmUsIE51bGxXZWJSdGNWaWRlb0VuZ2luZT4oCi0gICAgICAgICAgICBzdGQ6OmZv
cndhcmRfYXNfdHVwbGUoYWRtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkF1ZGlv
UHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKSksCi0gICAgICAgICAgICBzdGQ6OmZvcndhcmRf
YXNfdHVwbGUoKSkge30KKyAgICAgIDogQ29tcG9zaXRlTWVkaWFFbmdpbmUoYWJzbDo6bWFrZV91
bmlxdWU8V2ViUnRjVm9pY2VFbmdpbmU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWRtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fZGVjb2Rlcl9m
YWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nQnVpbGRl
cigpLkNyZWF0ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bWFrZV91
bmlxdWU8TnVsbFdlYlJ0Y1ZpZGVvRW5naW5lPigpKSB7fQogfTsKIAogLy8gU2ltcGxlIHRlc3Qg
dG8gY2hlY2sgaWYgTnVsbFdlYlJ0Y1ZpZGVvRW5naW5lIGltcGxlbWVudHMgdGhlIG1ldGhvZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS9wYXlsb2FkX3R5cGVfbWFwcGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3BheWxvYWRfdHlwZV9tYXBwZXIuY2MK
aW5kZXggNWQyZmI2NzU3YzQ0NWFkMjEyNTE3OTAwZTg5NGRjODQwOWRmNTY1NS4uYWU0ZTMwOWVm
NDkwMGQzYjkxN2Y4OWFkMDYxOGZkY2VkMjcyMTlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3BheWxvYWRfdHlwZV9t
YXBwZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvZW5naW5lL3BheWxvYWRfdHlwZV9tYXBwZXIuY2MKQEAgLTEyLDggKzEyLDggQEAKIAog
I2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvYXNjaWkuaCIKICNp
bmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgotI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibWVkaWEvYmFz
ZS9tZWRpYWNvbnN0YW50cy5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CkBAIC0xNDAsNyArMTQw
LDggQEAgYm9vbCBQYXlsb2FkVHlwZU1hcHBlcjo6U2RwQXVkaW9Gb3JtYXRPcmRlcmluZzo6b3Bl
cmF0b3IoKSgKICAgICBjb25zdCB3ZWJydGM6OlNkcEF1ZGlvRm9ybWF0JiBiKSBjb25zdCB7CiAg
IGlmIChhLmNsb2NrcmF0ZV9oeiA9PSBiLmNsb2NrcmF0ZV9oeikgewogICAgIGlmIChhLm51bV9j
aGFubmVscyA9PSBiLm51bV9jaGFubmVscykgewotICAgICAgaW50IG5hbWVfY21wID0gU1RSX0NB
U0VfQ01QKGEubmFtZS5jX3N0cigpLCBiLm5hbWUuY19zdHIoKSk7CisgICAgICBpbnQgbmFtZV9j
bXAgPQorICAgICAgICAgIGFic2w6OkFzY2lpU3RyVG9Mb3dlcihhLm5hbWUpLmNvbXBhcmUoYWJz
bDo6QXNjaWlTdHJUb0xvd2VyKGIubmFtZSkpOwogICAgICAgaWYgKG5hbWVfY21wID09IDApCiAg
ICAgICAgIHJldHVybiBhLnBhcmFtZXRlcnMgPCBiLnBhcmFtZXRlcnM7CiAgICAgICByZXR1cm4g
bmFtZV9jbXAgPCAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3Njb3BlZHZpZGVvZW5jb2Rlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zY29wZWR2aWRl
b2VuY29kZXIuY2MKaW5kZXggMDI2NjU0ZTA3MjA0ZDA0NGI2OWY1Y2I4OTY2NmY3OGI5MmFiMzFj
Ni4uZGIxMTQ4YmYzMGZlMjAwOTMwNGI1N2E3OTcyYmI4ZmYxY2NmNjM1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3Nj
b3BlZHZpZGVvZW5jb2Rlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2NvcGVkdmlkZW9lbmNvZGVyLmNjCkBAIC0zMywxNCAr
MzMsMTAgQEAgY2xhc3MgU2NvcGVkVmlkZW9FbmNvZGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9F
bmNvZGVyIHsKICAgaW50MzJfdCBFbmNvZGUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFt
ZSwKICAgICAgICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpDb2RlY1NwZWNpZmljSW5mbyogY29k
ZWNfc3BlY2lmaWNfaW5mbywKICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8d2Vi
cnRjOjpGcmFtZVR5cGU+KiBmcmFtZV90eXBlcykgb3ZlcnJpZGU7Ci0gIGludDMyX3QgU2V0Q2hh
bm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsIGludDY0X3QgcnR0KSBvdmVycmlk
ZTsKICAgaW50MzJfdCBTZXRSYXRlcyh1aW50MzJfdCBiaXRyYXRlLCB1aW50MzJfdCBmcmFtZXJh
dGUpIG92ZXJyaWRlOwogICBpbnQzMl90IFNldFJhdGVBbGxvY2F0aW9uKGNvbnN0IHdlYnJ0Yzo6
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYWxsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBmcmFtZXJhdGUpIG92ZXJyaWRlOwotICBTY2FsaW5nU2V0dGluZ3Mg
R2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGJvb2wgU3VwcG9ydHNOYXRp
dmVIYW5kbGUoKSBjb25zdCBvdmVycmlkZTsKLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25O
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KKyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBj
b25zdCBvdmVycmlkZTsKICAgflNjb3BlZFZpZGVvRW5jb2RlcigpIG92ZXJyaWRlOwogCiAgcHJp
dmF0ZToKQEAgLTc1LDExICs3MSw2IEBAIGludDMyX3QgU2NvcGVkVmlkZW9FbmNvZGVyOjpFbmNv
ZGUoCiAgIHJldHVybiBlbmNvZGVyXy0+RW5jb2RlKGZyYW1lLCBjb2RlY19zcGVjaWZpY19pbmZv
LCBmcmFtZV90eXBlcyk7CiB9CiAKLWludDMyX3QgU2NvcGVkVmlkZW9FbmNvZGVyOjpTZXRDaGFu
bmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJ0dCkgewotICByZXR1cm4gZW5j
b2Rlcl8tPlNldENoYW5uZWxQYXJhbWV0ZXJzKHBhY2tldF9sb3NzLCBydHQpOwotfQotCiBpbnQz
Ml90IFNjb3BlZFZpZGVvRW5jb2Rlcjo6U2V0UmF0ZXModWludDMyX3QgYml0cmF0ZSwgdWludDMy
X3QgZnJhbWVyYXRlKSB7CiAgIHJldHVybiBlbmNvZGVyXy0+U2V0UmF0ZXMoYml0cmF0ZSwgZnJh
bWVyYXRlKTsKIH0KQEAgLTkwLDE3ICs4MSw4IEBAIGludDMyX3QgU2NvcGVkVmlkZW9FbmNvZGVy
OjpTZXRSYXRlQWxsb2NhdGlvbigKICAgcmV0dXJuIGVuY29kZXJfLT5TZXRSYXRlQWxsb2NhdGlv
bihhbGxvY2F0aW9uLCBmcmFtZXJhdGUpOwogfQogCi13ZWJydGM6OlZpZGVvRW5jb2Rlcjo6U2Nh
bGluZ1NldHRpbmdzIFNjb3BlZFZpZGVvRW5jb2Rlcjo6R2V0U2NhbGluZ1NldHRpbmdzKCkKLSAg
ICBjb25zdCB7Ci0gIHJldHVybiBlbmNvZGVyXy0+R2V0U2NhbGluZ1NldHRpbmdzKCk7Ci19Ci0K
LWJvb2wgU2NvcGVkVmlkZW9FbmNvZGVyOjpTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0IHsK
LSAgcmV0dXJuIGVuY29kZXJfLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgpOwotfQotCi1jb25zdCBj
aGFyKiBTY29wZWRWaWRlb0VuY29kZXI6OkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsKLSAg
cmV0dXJuIGVuY29kZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKTsKK3dlYnJ0Yzo6VmlkZW9FbmNv
ZGVyOjpFbmNvZGVySW5mbyBTY29wZWRWaWRlb0VuY29kZXI6OkdldEVuY29kZXJJbmZvKCkgY29u
c3QgeworICByZXR1cm4gZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCk7CiB9CiAKIFNjb3BlZFZp
ZGVvRW5jb2Rlcjo6flNjb3BlZFZpZGVvRW5jb2RlcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdp
bmUvc2ltdWxjYXN0LmNjCmluZGV4IGM0MmUxZGNhZTI5MDg0MGE5YjM5OGNjODMwZDEyYzgxY2Y2
MTYxYzYuLmRlM2Q4ZGYwOTdmMTUwNWQwMWY2NGNlMzBmZTdhNmUwMjJkYzBmZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS9zaW11bGNhc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdC5jYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1
ZGUgIm1lZGlhL2VuZ2luZS9zaW11bGNhc3QuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy91dGlsaXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9jYXRvci5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2FycmF5c2l6ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6
ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2lu
Zy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAK
QEAgLTE0MCw3ICsxNDEsMTMgQEAgaW50IEZpbmRTaW11bGNhc3RGb3JtYXRJbmRleChpbnQgd2lk
dGgsIGludCBoZWlnaHQsIHNpemVfdCBtYXhfbGF5ZXJzKSB7CiAvLyBTaW11bGNhc3Qgc3RyZWFt
IHdpZHRoIGFuZCBoZWlnaHQgbXVzdCBib3RoIGJlIGRpdmlkYWJsZSBieQogLy8gfDIgXiAoc2lt
dWxjYXN0X2xheWVycyAtIDEpfC4KIGludCBOb3JtYWxpemVTaW11bGNhc3RTaXplKGludCBzaXpl
LCBzaXplX3Qgc2ltdWxjYXN0X2xheWVycykgewotICBjb25zdCBpbnQgYmFzZTJfZXhwb25lbnQg
PSBzdGF0aWNfY2FzdDxpbnQ+KHNpbXVsY2FzdF9sYXllcnMpIC0gMTsKKyAgaW50IGJhc2UyX2V4
cG9uZW50ID0gc3RhdGljX2Nhc3Q8aW50PihzaW11bGNhc3RfbGF5ZXJzKSAtIDE7CisgIGNvbnN0
IGFic2w6Om9wdGlvbmFsPGludD4gZXhwZXJpbWVudGFsX2Jhc2UyX2V4cG9uZW50ID0KKyAgICAg
IHdlYnJ0Yzo6Tm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnQ6OkdldEJhc2UyRXhwb25l
bnQoKTsKKyAgaWYgKGV4cGVyaW1lbnRhbF9iYXNlMl9leHBvbmVudCAmJgorICAgICAgKHNpemUg
PiAoMSA8PCAqZXhwZXJpbWVudGFsX2Jhc2UyX2V4cG9uZW50KSkpIHsKKyAgICBiYXNlMl9leHBv
bmVudCA9ICpleHBlcmltZW50YWxfYmFzZTJfZXhwb25lbnQ7CisgIH0KICAgcmV0dXJuICgoc2l6
ZSA+PiBiYXNlMl9leHBvbmVudCkgPDwgYmFzZTJfZXhwb25lbnQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
c2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmNj
CmluZGV4IDMwZGE2OGVjODVjYThiN2ZhMGRlNzFhNzFjNjViOGNkNGQxNzI1YzguLjYyNDFmZjlk
MzZkNjkxZDAzOWNkZmVjNmM2YzY2NjYxMjJkNTk2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5j
b2Rlcl9hZGFwdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmNjCkBAIC0xNyw5
ICsxNyw5IEBACiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCiAjaW5jbHVkZSAi
YXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgogI2luY2x1ZGUgImFwaS92aWRl
b19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAibWVkaWEvZW5naW5l
L3Njb3BlZHZpZGVvZW5jb2Rlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0
aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInN5c3RlbV93
cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1
ZGUvZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9s
aWJ5dXYvc2NhbGUuaCIKQEAgLTEyNyw5ICsxMjcsOSBAQCBTaW11bGNhc3RFbmNvZGVyQWRhcHRl
cjo6U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXIoVmlkZW9FbmNvZGVyRmFjdG9yeSogZmFjdG9yeSwK
ICAgICAgIGZhY3RvcnlfKGZhY3RvcnkpLAogICAgICAgdmlkZW9fZm9ybWF0Xyhmb3JtYXQpLAog
ICAgICAgZW5jb2RlZF9jb21wbGV0ZV9jYWxsYmFja18obnVsbHB0ciksCi0gICAgICBpbXBsZW1l
bnRhdGlvbl9uYW1lXygiU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXIiKSwKICAgICAgIGV4cGVyaW1l
bnRhbF9ib29zdGVkX3NjcmVlbnNoYXJlX3FwXyhHZXRTY3JlZW5zaGFyZUJvb3N0ZWRRcFZhbHVl
KCkpIHsKICAgUlRDX0RDSEVDSyhmYWN0b3J5Xyk7CisgIGVuY29kZXJfaW5mb18uaW1wbGVtZW50
YXRpb25fbmFtZSA9ICJTaW11bGNhc3RFbmNvZGVyQWRhcHRlciI7CiAKICAgLy8gVGhlIGFkYXB0
ZXIgaXMgdHlwaWNhbGx5IGNyZWF0ZWQgb24gdGhlIHdvcmtlciB0aHJlYWQsIGJ1dCBvcGVyYXRl
ZCBvbgogICAvLyB0aGUgZW5jb2RlciB0YXNrIHF1ZXVlLgpAQCAtMjAzLDcgKzIwMyw4IEBAIGlu
dCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6SW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBp
bnN0LAogICAgIHN0YXJ0X2JpdHJhdGVzLnB1c2hfYmFjayhzdHJlYW1fYml0cmF0ZSk7CiAgIH0K
IAotICBzdGQ6OnN0cmluZyBpbXBsZW1lbnRhdGlvbl9uYW1lOworICBlbmNvZGVyX2luZm9fLnN1
cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSB0cnVlOworICBlbmNvZGVyX2luZm9fLnNjYWxpbmdfc2V0
dGluZ3MudGhyZXNob2xkcyA9IGFic2w6Om51bGxvcHQ7CiAgIC8vIENyZWF0ZSB8bnVtYmVyX29m
X3N0cmVhbXN8IG9mIGVuY29kZXIgaW5zdGFuY2VzIGFuZCBpbml0IHRoZW0uCiAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbnVtYmVyX29mX3N0cmVhbXM7ICsraSkgewogICAgIFZpZGVvQ29kZWMgc3Ry
ZWFtX2NvZGVjOwpAQCAtMjEyLDYgKzIxMyw3IEBAIGludCBTaW11bGNhc3RFbmNvZGVyQWRhcHRl
cjo6SW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBpbnN0LAogICAgIGlmICghZG9pbmdfc2lt
dWxjYXN0KSB7CiAgICAgICBzdHJlYW1fY29kZWMgPSBjb2RlY187CiAgICAgICBzdHJlYW1fY29k
ZWMubnVtYmVyT2ZTaW11bGNhc3RTdHJlYW1zID0gMTsKKwogICAgIH0gZWxzZSB7CiAgICAgICAv
LyBDYXAgc3RhcnQgYml0cmF0ZSB0byB0aGUgbWluIGJpdHJhdGUgaW4gb3JkZXIgdG8gYXZvaWQg
c3RyYW5nZSBjb2RlYwogICAgICAgLy8gYmVoYXZpb3IuIFNpbmNlIHNlbmRpbmcgd2lsbCBiZSBm
YWxzZSwgdGhpcyBzaG91bGQgbm90IG1hdHRlci4KQEAgLTI0Nyw2ICsyNDksNyBAQCBpbnQgU2lt
dWxjYXN0RW5jb2RlckFkYXB0ZXI6OkluaXRFbmNvZGUoY29uc3QgVmlkZW9Db2RlYyogaW5zdCwK
ICAgICAgIFJlbGVhc2UoKTsKICAgICAgIHJldHVybiByZXQ7CiAgICAgfQorCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEVuY29kZWRJbWFnZUNhbGxiYWNrPiBjYWxsYmFjaygKICAgICAgICAgbmV3IEFk
YXB0ZXJFbmNvZGVkSW1hZ2VDYWxsYmFjayh0aGlzLCBpKSk7CiAgICAgZW5jb2Rlci0+UmVnaXN0
ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKGNhbGxiYWNrLmdldCgpKTsKQEAgLTI1NCwxNyArMjU3
LDQ1IEBAIGludCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6SW5pdEVuY29kZShjb25zdCBWaWRl
b0NvZGVjKiBpbnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2NvZGVj
LndpZHRoLCBzdHJlYW1fY29kZWMuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VuZF9zdHJlYW0pOwogCi0gICAgaWYgKGkgIT0gMCkgewotICAgICAgaW1wbGVtZW50YXRp
b25fbmFtZSArPSAiLCAiOworICAgIGlmICghZG9pbmdfc2ltdWxjYXN0KSB7CisgICAgICAvLyBX
aXRob3V0IHNpbXVsY2FzdCwganVzdCBwYXNzIHRocm91Z2ggdGhlIGVuY29kZXIgaW5mbyBmcm9t
IHRoZSBvbmUKKyAgICAgIC8vIGFjdGl2ZSBlbmNvZGVyLgorICAgICAgZW5jb2Rlcl9pbmZvXyA9
IHN0cmVhbWluZm9zX1swXS5lbmNvZGVyLT5HZXRFbmNvZGVySW5mbygpOworICAgIH0gZWxzZSB7
CisgICAgICBjb25zdCBFbmNvZGVySW5mbyBlbmNvZGVyX2ltcGxfaW5mbyA9CisgICAgICAgICAg
c3RyZWFtaW5mb3NfW2ldLmVuY29kZXItPkdldEVuY29kZXJJbmZvKCk7CisKKyAgICAgIGlmIChp
ID09IDApIHsKKyAgICAgICAgLy8gUXVhbGl0eSBzY2FsaW5nIG5vdCBlbmFibGVkIGZvciBzaW11
bGNhc3QuCisgICAgICAgIGVuY29kZXJfaW5mb18uc2NhbGluZ19zZXR0aW5ncyA9IFZpZGVvRW5j
b2Rlcjo6U2NhbGluZ1NldHRpbmdzOjprT2ZmOworCisgICAgICAgIC8vIEVuY29kZXIgbmFtZSBp
bmRpY2F0ZXMgbmFtZXMgb2YgYWxsIHN1Yi1lbmNvZGVycy4KKyAgICAgICAgZW5jb2Rlcl9pbmZv
Xy5pbXBsZW1lbnRhdGlvbl9uYW1lID0gIlNpbXVsY2FzdEVuY29kZXJBZGFwdGVyICgiOworICAg
ICAgICBlbmNvZGVyX2luZm9fLmltcGxlbWVudGF0aW9uX25hbWUgKz0KKyAgICAgICAgICAgIGVu
Y29kZXJfaW1wbF9pbmZvLmltcGxlbWVudGF0aW9uX25hbWU7CisKKyAgICAgICAgZW5jb2Rlcl9p
bmZvXy5zdXBwb3J0c19uYXRpdmVfaGFuZGxlID0KKyAgICAgICAgICAgIGVuY29kZXJfaW1wbF9p
bmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGU7CisgICAgICAgIGVuY29kZXJfaW5mb18uaGFzX3Ry
dXN0ZWRfcmF0ZV9jb250cm9sbGVyID0KKyAgICAgICAgICAgIGVuY29kZXJfaW1wbF9pbmZvLmhh
c190cnVzdGVkX3JhdGVfY29udHJvbGxlcjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGVuY29k
ZXJfaW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSArPSAiLCAiOworICAgICAgICBlbmNvZGVyX2lu
Zm9fLmltcGxlbWVudGF0aW9uX25hbWUgKz0KKyAgICAgICAgICAgIGVuY29kZXJfaW1wbF9pbmZv
LmltcGxlbWVudGF0aW9uX25hbWU7CisKKyAgICAgICAgLy8gTmF0aXZlIGhhbmRsZSBzdXBwb3J0
ZWQgb25seSBpZiBhbGwgZW5jb2RlcnMgc3VwcG9ydHMgaXQuCisgICAgICAgIGVuY29kZXJfaW5m
b18uc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSAmPQorICAgICAgICAgICAgZW5jb2Rlcl9pbXBsX2lu
Zm8uc3VwcG9ydHNfbmF0aXZlX2hhbmRsZTsKKworICAgICAgICAvLyBUcnVzdGVkIHJhdGUgY29u
dHJvbGxlciBvbmx5IGlmIGFsbCBlbmNvZGVycyBoYXZlIGl0LgorICAgICAgICBlbmNvZGVyX2lu
Zm9fLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlciAmPQorICAgICAgICAgICAgZW5jb2Rlcl9p
bXBsX2luZm8uaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyOworICAgICAgfQogICAgIH0KLSAg
ICBpbXBsZW1lbnRhdGlvbl9uYW1lICs9IHN0cmVhbWluZm9zX1tpXS5lbmNvZGVyLT5JbXBsZW1l
bnRhdGlvbk5hbWUoKTsKICAgfQogCiAgIGlmIChkb2luZ19zaW11bGNhc3QpIHsKLSAgICBpbXBs
ZW1lbnRhdGlvbl9uYW1lXyA9Ci0gICAgICAgICJTaW11bGNhc3RFbmNvZGVyQWRhcHRlciAoIiAr
IGltcGxlbWVudGF0aW9uX25hbWUgKyAiKSI7Ci0gIH0gZWxzZSB7Ci0gICAgaW1wbGVtZW50YXRp
b25fbmFtZV8gPSBpbXBsZW1lbnRhdGlvbl9uYW1lOworICAgIGVuY29kZXJfaW5mb18uaW1wbGVt
ZW50YXRpb25fbmFtZSArPSAiKSI7CiAgIH0KIAogICAvLyBUbyBzYXZlIG1lbW9yeSwgZG9uJ3Qg
c3RvcmUgZW5jb2RlcnMgdGhhdCB3ZSBkb24ndCB1c2UuCkBAIC0zNzcsMTUgKzQwOCw2IEBAIGlu
dCBTaW11bGNhc3RFbmNvZGVyQWRhcHRlcjo6UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNr
KAogICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQogCi1pbnQgU2ltdWxjYXN0RW5j
b2RlckFkYXB0ZXI6OlNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IHJ0dCkgewotICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJmVuY29kZXJfcXVldWVf
KTsKLSAgZm9yIChzaXplX3Qgc3RyZWFtX2lkeCA9IDA7IHN0cmVhbV9pZHggPCBzdHJlYW1pbmZv
c18uc2l6ZSgpOyArK3N0cmVhbV9pZHgpIHsKLSAgICBzdHJlYW1pbmZvc19bc3RyZWFtX2lkeF0u
ZW5jb2Rlci0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0X2xvc3MsIHJ0dCk7Ci0gIH0KLSAg
cmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLX0KLQogaW50IFNpbXVsY2FzdEVuY29kZXJB
ZGFwdGVyOjpTZXRSYXRlQWxsb2NhdGlvbigKICAgICBjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0
aW9uJiBiaXRyYXRlLAogICAgIHVpbnQzMl90IG5ld19mcmFtZXJhdGUpIHsKQEAgLTQ1Miw3ICs0
NzQsNiBAQCBFbmNvZGVkSW1hZ2VDYWxsYmFjazo6UmVzdWx0IFNpbXVsY2FzdEVuY29kZXJBZGFw
dGVyOjpPbkVuY29kZWRJbWFnZSgKICAgICBjb25zdCBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBm
cmFnbWVudGF0aW9uKSB7CiAgIEVuY29kZWRJbWFnZSBzdHJlYW1faW1hZ2UoZW5jb2RlZEltYWdl
KTsKICAgQ29kZWNTcGVjaWZpY0luZm8gc3RyZWFtX2NvZGVjX3NwZWNpZmljID0gKmNvZGVjU3Bl
Y2lmaWNJbmZvOwotICBzdHJlYW1fY29kZWNfc3BlY2lmaWMuY29kZWNfbmFtZSA9IGltcGxlbWVu
dGF0aW9uX25hbWVfLmNfc3RyKCk7CiAKICAgc3RyZWFtX2ltYWdlLlNldFNwYXRpYWxJbmRleChz
dHJlYW1faWR4KTsKIApAQCAtNTE3LDMyICs1MzgsOCBAQCB2b2lkIFNpbXVsY2FzdEVuY29kZXJB
ZGFwdGVyOjpEZXN0cm95U3RvcmVkRW5jb2RlcnMoKSB7CiAgIH0KIH0KIAotYm9vbCBTaW11bGNh
c3RFbmNvZGVyQWRhcHRlcjo6U3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCB7Ci0gIFJUQ19E
Q0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmZW5jb2Rlcl9xdWV1ZV8pOwotICAvLyBXZSBzaG91
bGQgbm90IGJlIGNhbGxpbmcgdGhpcyBtZXRob2QgYmVmb3JlIHN0cmVhbWluZm9zXyBhcmUgY29u
ZmlndXJlZC4KLSAgUlRDX0RDSEVDSyghc3RyZWFtaW5mb3NfLmVtcHR5KCkpOwotICBmb3IgKGNv
bnN0IGF1dG8mIHN0cmVhbWluZm8gOiBzdHJlYW1pbmZvc18pIHsKLSAgICBpZiAoIXN0cmVhbWlu
Zm8uZW5jb2Rlci0+U3VwcG9ydHNOYXRpdmVIYW5kbGUoKSkgewotICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotVmlkZW9FbmNvZGVyOjpTY2FsaW5n
U2V0dGluZ3MgU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXI6OkdldFNjYWxpbmdTZXR0aW5ncygpCi0g
ICAgY29uc3QgewotICAvLyBUT0RPKGJyYW5kdHIpOiBJbnZlc3RpZ2F0ZSB3aHkgdGhlIHNlcXVl
bmNlIGNoZWNrZXIgYmVsb3cgZmFpbHMgb24gbWFjLgotICAvLyBSVENfRENIRUNLX0NBTExFRF9T
RVFVRU5USUFMTFkoJmVuY29kZXJfcXVldWVfKTsKLSAgLy8gVHVybiBvZmYgcXVhbGl0eSBzY2Fs
aW5nIGZvciBzaW11bGNhc3QuCi0gIGlmICghSW5pdGlhbGl6ZWQoKSB8fCBOdW1iZXJPZlN0cmVh
bXMoY29kZWNfKSAhPSAxKSB7Ci0gICAgcmV0dXJuIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRp
bmdzOjprT2ZmOwotICB9Ci0gIHJldHVybiBzdHJlYW1pbmZvc19bMF0uZW5jb2Rlci0+R2V0U2Nh
bGluZ1NldHRpbmdzKCk7Ci19Ci0KLWNvbnN0IGNoYXIqIFNpbXVsY2FzdEVuY29kZXJBZGFwdGVy
OjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVF
TlRJQUxMWSgmZW5jb2Rlcl9xdWV1ZV8pOwotICByZXR1cm4gaW1wbGVtZW50YXRpb25fbmFtZV8u
Y19zdHIoKTsKK1ZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gU2ltdWxjYXN0RW5jb2RlckFkYXB0
ZXI6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICByZXR1cm4gZW5jb2Rlcl9pbmZvXzsKIH0K
IAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVyX2Fk
YXB0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlh
L2VuZ2luZS9zaW11bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmgKaW5kZXggNTI2NDNhYTc5YjE2Mjcw
MDE5ZjU5NmU3ODlkYWFlOTk1OTFhOTRiNS4uNzgzYzM0MmQ2YjlmYzRhMjg5YmU3NzU4YWY5M2Fk
YzY0ZGRkN2MzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2lt
dWxjYXN0X2VuY29kZXJfYWRhcHRlci5oCkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVkZSA8dmVj
dG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgotI2luY2x1ZGUgIm1lZGlh
L2VuZ2luZS93ZWJydGN2aWRlb2VuY29kZXJmYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVv
X2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9h
dG9taWNvcHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyLmgi
CkBAIC00OCw3ICs0OCw2IEBAIGNsYXNzIFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyIDogcHVibGlj
IFZpZGVvRW5jb2RlciB7CiAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNv
ZGVjX3NwZWNpZmljX2luZm8sCiAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RnJhbWVU
eXBlPiogZnJhbWVfdHlwZXMpIG92ZXJyaWRlOwogICBpbnQgUmVnaXN0ZXJFbmNvZGVDb21wbGV0
ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7Ci0gIGlu
dCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQp
IG92ZXJyaWRlOwogICBpbnQgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxs
b2NhdGlvbiYgYml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5ld19m
cmFtZXJhdGUpIG92ZXJyaWRlOwogCkBAIC02MSwxMCArNjAsNyBAQCBjbGFzcyBTaW11bGNhc3RF
bmNvZGVyQWRhcHRlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICAgICAgY29uc3QgQ29kZWNT
cGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCiAgICAgICBjb25zdCBSVFBGcmFnbWVu
dGF0aW9uSGVhZGVyKiBmcmFnbWVudGF0aW9uKTsKIAotICBWaWRlb0VuY29kZXI6OlNjYWxpbmdT
ZXR0aW5ncyBHZXRTY2FsaW5nU2V0dGluZ3MoKSBjb25zdCBvdmVycmlkZTsKLQotICBib29sIFN1
cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGNvbnN0IGNoYXIqIEltcGxl
bWVudGF0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICBFbmNvZGVySW5mbyBHZXRFbmNvZGVy
SW5mbygpIGNvbnN0IG92ZXJyaWRlOwogCiAgcHJpdmF0ZToKICAgc3RydWN0IFN0cmVhbUluZm8g
ewpAQCAtMTA0LDcgKzEwMCw3IEBAIGNsYXNzIFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyIDogcHVi
bGljIFZpZGVvRW5jb2RlciB7CiAgIFZpZGVvQ29kZWMgY29kZWNfOwogICBzdGQ6OnZlY3RvcjxT
dHJlYW1JbmZvPiBzdHJlYW1pbmZvc187CiAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBlbmNvZGVk
X2NvbXBsZXRlX2NhbGxiYWNrXzsKLSAgc3RkOjpzdHJpbmcgaW1wbGVtZW50YXRpb25fbmFtZV87
CisgIEVuY29kZXJJbmZvIGVuY29kZXJfaW5mb187CiAKICAgLy8gVXNlZCBmb3IgY2hlY2tpbmcg
dGhlIHNpbmdsZS10aHJlYWRlZCBhY2Nlc3Mgb2YgdGhlIGVuY29kZXIgaW50ZXJmYWNlLgogICBy
dGM6OlNlcXVlbmNlZFRhc2tDaGVja2VyIGVuY29kZXJfcXVldWVfOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVs
Y2FzdF9lbmNvZGVyX2FkYXB0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRl
cl91bml0dGVzdC5jYwppbmRleCA1YjdkMTg1YjhjYzZlYmFhMmMyNDQ4ODBlYzM0ZTA1ZTYwZmI4
ZmMzLi41OTU0MTc1NWZhNTFkYzM3N2I2ZTNlNjM3MTBiNDMzZWJjMzM0YmZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
c2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2ltdWxjYXN0X2VuY29k
ZXJfYWRhcHRlcl91bml0dGVzdC5jYwpAQCAtMTUsMTYgKzE1LDE3IEBACiAjaW5jbHVkZSAiYWJz
bC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL3Rlc3QvY3JlYXRlX3NpbXVsY2FzdF90
ZXN0X2ZpeHR1cmUuaCIKICNpbmNsdWRlICJhcGkvdGVzdC9zaW11bGNhc3RfdGVzdF9maXh0dXJl
LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0Lmgi
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNp
bmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZV9idWZmZXIuaCIKKyNpbmNs
dWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5l
L2ludGVybmFsZW5jb2RlcmZhY3RvcnkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvc2ltdWxj
YXN0X2VuY29kZXJfYWRhcHRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2Nv
ZGVjcy92cDgvaW5jbHVkZS92cDguaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9p
bmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9pbXBsLmgiCi0jaW5jbHVkZSAi
dGVzdC9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1
bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInRlc3QvZ21vY2suaCIK
ICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKQEAgLTU1LDcgKzU2LDYgQEAgc3RkOjp1bmlxdWVf
cHRyPFNpbXVsY2FzdFRlc3RGaXh0dXJlPiBDcmVhdGVTcGVjaWZpY1NpbXVsY2FzdFRlc3RGaXh0
dXJlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGRlY29k
ZXJfZmFjdG9yeSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBWaWRl
b0Zvcm1hdChjcmlja2V0OjprVnA4Q29kZWNOYW1lKSk7CiB9Ci0KIH0gIC8vIG5hbWVzcGFjZQog
CiBURVNUKFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyU2ltdWxjYXN0VGVzdCwgVGVzdEtleUZyYW1l
UmVxdWVzdHNPbkFsbFN0cmVhbXMpIHsKQEAgLTE0NCw2ICsxNDQsMTIgQEAgVEVTVChTaW11bGNh
c3RFbmNvZGVyQWRhcHRlclNpbXVsY2FzdFRlc3QsCiAgIGZpeHR1cmUtPlRlc3RTcGF0aW9UZW1w
b3JhbExheWVyczMyMVBhdHRlcm5FbmNvZGVyKCk7CiB9CiAKK1RFU1QoU2ltdWxjYXN0RW5jb2Rl
ckFkYXB0ZXJTaW11bGNhc3RUZXN0LCBUZXN0RGVjb2RlV2lkdGhIZWlnaHRTZXQpIHsKKyAgSW50
ZXJuYWxFbmNvZGVyRmFjdG9yeSBpbnRlcm5hbF9lbmNvZGVyX2ZhY3Rvcnk7CisgIGF1dG8gZml4
dHVyZSA9IENyZWF0ZVNwZWNpZmljU2ltdWxjYXN0VGVzdEZpeHR1cmUoJmludGVybmFsX2VuY29k
ZXJfZmFjdG9yeSk7CisgIGZpeHR1cmUtPlRlc3REZWNvZGVXaWR0aEhlaWdodFNldCgpOworfQor
CiBjbGFzcyBNb2NrVmlkZW9FbmNvZGVyOwogCiBjbGFzcyBNb2NrVmlkZW9FbmNvZGVyRmFjdG9y
eSA6IHB1YmxpYyBWaWRlb0VuY29kZXJGYWN0b3J5IHsKQEAgLTE3MCw3ICsxNzYsOSBAQCBjbGFz
cyBNb2NrVmlkZW9FbmNvZGVyRmFjdG9yeSA6IHB1YmxpYyBWaWRlb0VuY29kZXJGYWN0b3J5IHsK
IGNsYXNzIE1vY2tWaWRlb0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICBwdWJsaWM6
CiAgIGV4cGxpY2l0IE1vY2tWaWRlb0VuY29kZXIoTW9ja1ZpZGVvRW5jb2RlckZhY3RvcnkqIGZh
Y3RvcnkpCi0gICAgICA6IGZhY3RvcnlfKGZhY3RvcnkpLCBjYWxsYmFja18obnVsbHB0cikge30K
KyAgICAgIDogZmFjdG9yeV8oZmFjdG9yeSksCisgICAgICAgIHNjYWxpbmdfc2V0dGluZ3NfKFZp
ZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjprT2ZmKSwKKyAgICAgICAgY2FsbGJhY2tfKG51
bGxwdHIpIHt9CiAKICAgLy8gVE9ETyhuaXNzZSk6IFZhbGlkIG92ZXJyaWRlcyBjb21tZW50ZWQg
b3V0LCBiZWNhdXNlIHRoZSBnbW9jawogICAvLyBtZXRob2RzIGRvbid0IHVzZSBhbnkgb3ZlcnJp
ZGUgZGVjbGFyYXRpb25zLCBhbmQgd2Ugd2FudCB0byBhdm9pZApAQCAtMjAzLDEwICsyMTEsMTMg
QEAgY2xhc3MgTW9ja1ZpZGVvRW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICAgIHJl
dHVybiAwOwogICB9CiAKLSAgTU9DS19NRVRIT0QyKFNldENoYW5uZWxQYXJhbWV0ZXJzLCBpbnQz
Ml90KHVpbnQzMl90IHBhY2tldExvc3MsIGludDY0X3QgcnR0KSk7Ci0KLSAgYm9vbCBTdXBwb3J0
c05hdGl2ZUhhbmRsZSgpIGNvbnN0IC8qIG92ZXJyaWRlICovIHsKLSAgICByZXR1cm4gc3VwcG9y
dHNfbmF0aXZlX2hhbmRsZV87CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qg
b3ZlcnJpZGUgeworICAgIEVuY29kZXJJbmZvIGluZm87CisgICAgaW5mby5zdXBwb3J0c19uYXRp
dmVfaGFuZGxlID0gc3VwcG9ydHNfbmF0aXZlX2hhbmRsZV87CisgICAgaW5mby5pbXBsZW1lbnRh
dGlvbl9uYW1lID0gaW1wbGVtZW50YXRpb25fbmFtZV87CisgICAgaW5mby5zY2FsaW5nX3NldHRp
bmdzID0gc2NhbGluZ19zZXR0aW5nc187CisgICAgaW5mby5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRy
b2xsZXIgPSBoYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXJfOworICAgIHJldHVybiBpbmZvOwog
ICB9CiAKICAgdmlydHVhbCB+TW9ja1ZpZGVvRW5jb2RlcigpIHsgZmFjdG9yeV8tPkRlc3Ryb3lW
aWRlb0VuY29kZXIodGhpcyk7IH0KQEAgLTIyOCwxNyArMjM5LDMwIEBAIGNsYXNzIE1vY2tWaWRl
b0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgICBzdXBwb3J0c19uYXRpdmVfaGFu
ZGxlXyA9IGVuYWJsZWQ7CiAgIH0KIAorICB2b2lkIHNldF9pbXBsZW1lbnRhdGlvbl9uYW1lKGNv
bnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7CisgICAgaW1wbGVtZW50YXRpb25fbmFtZV8gPSBuYW1l
OworICB9CisKICAgdm9pZCBzZXRfaW5pdF9lbmNvZGVfcmV0dXJuX3ZhbHVlKGludDMyX3QgdmFs
dWUpIHsKICAgICBpbml0X2VuY29kZV9yZXR1cm5fdmFsdWVfID0gdmFsdWU7CiAgIH0KIAotICBW
aWRlb0JpdHJhdGVBbGxvY2F0aW9uIGxhc3Rfc2V0X2JpdHJhdGUoKSBjb25zdCB7IHJldHVybiBs
YXN0X3NldF9iaXRyYXRlXzsgfQorICB2b2lkIHNldF9zY2FsaW5nX3NldHRpbmdzKGNvbnN0IFZp
ZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzJiBzZXR0aW5ncykgeworICAgIHNjYWxpbmdfc2V0
dGluZ3NfID0gc2V0dGluZ3M7CisgIH0KIAotICBNT0NLX0NPTlNUX01FVEhPRDAoSW1wbGVtZW50
YXRpb25OYW1lLCBjb25zdCBjaGFyKigpKTsKKyAgdm9pZCBzZXRfaGFzX3RydXN0ZWRfcmF0ZV9j
b250cm9sbGVyKGJvb2wgdHJ1c3RlZCkgeworICAgIGhhc190cnVzdGVkX3JhdGVfY29udHJvbGxl
cl8gPSB0cnVzdGVkOworICB9CisKKyAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBsYXN0X3NldF9i
aXRyYXRlKCkgY29uc3QgeyByZXR1cm4gbGFzdF9zZXRfYml0cmF0ZV87IH0KIAogIHByaXZhdGU6
CiAgIE1vY2tWaWRlb0VuY29kZXJGYWN0b3J5KiBjb25zdCBmYWN0b3J5XzsKICAgYm9vbCBzdXBw
b3J0c19uYXRpdmVfaGFuZGxlXyA9IGZhbHNlOworICBzdGQ6OnN0cmluZyBpbXBsZW1lbnRhdGlv
bl9uYW1lXyA9ICJ1bmtub3duIjsKKyAgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3Mgc2Nh
bGluZ19zZXR0aW5nc187CisgIGJvb2wgaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyXyA9IGZh
bHNlOwogICBpbnQzMl90IGluaXRfZW5jb2RlX3JldHVybl92YWx1ZV8gPSAwOwogICBWaWRlb0Jp
dHJhdGVBbGxvY2F0aW9uIGxhc3Rfc2V0X2JpdHJhdGVfOwogCkBAIC0yNjAsNyArMjg0LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gTW9ja1ZpZGVvRW5jb2RlckZhY3Rvcnk6OkNy
ZWF0ZVZpZGVvRW5jb2RlcigKICAgY29uc3QgY2hhciogZW5jb2Rlcl9uYW1lID0gZW5jb2Rlcl9u
YW1lc18uZW1wdHkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAiY29kZWNf
aW1wbGVtZW50YXRpb25fbmFtZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
ZW5jb2Rlcl9uYW1lc19bZW5jb2RlcnNfLnNpemUoKV07Ci0gIE9OX0NBTEwoKmVuY29kZXIsIElt
cGxlbWVudGF0aW9uTmFtZSgpKS5XaWxsQnlEZWZhdWx0KFJldHVybihlbmNvZGVyX25hbWUpKTsK
KyAgZW5jb2Rlci0+c2V0X2ltcGxlbWVudGF0aW9uX25hbWUoZW5jb2Rlcl9uYW1lKTsKICAgZW5j
b2RlcnNfLnB1c2hfYmFjayhlbmNvZGVyLmdldCgpKTsKICAgcmV0dXJuIGVuY29kZXI7CiB9CkBA
IC0zMDIsMTUgKzMyNiw2IEBAIGNsYXNzIFRlc3RTaW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2VI
ZWxwZXIgewogICAgIHJldHVybiBuZXcgU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXIoZmFjdG9yeV8u
Z2V0KCksIFNkcFZpZGVvRm9ybWF0KCJWUDgiKSk7CiAgIH0KIAotICB2b2lkIEV4cGVjdENhbGxT
ZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRMb3NzLCBpbnQ2NF90IHJ0dCkgewot
ICAgIEVYUEVDVF9UUlVFKCFmYWN0b3J5Xy0+ZW5jb2RlcnMoKS5lbXB0eSgpKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZhY3RvcnlfLT5lbmNvZGVycygpLnNpemUoKTsgKytpKSB7Ci0g
ICAgICBFWFBFQ1RfQ0FMTCgqZmFjdG9yeV8tPmVuY29kZXJzKClbaV0sCi0gICAgICAgICAgICAg
ICAgICBTZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRMb3NzLCBydHQpKQotICAgICAgICAgIC5U
aW1lcygxKTsKLSAgICB9Ci0gIH0KLQogICBNb2NrVmlkZW9FbmNvZGVyRmFjdG9yeSogZmFjdG9y
eSgpIHsgcmV0dXJuIGZhY3RvcnlfLmdldCgpOyB9CiAKICBwcml2YXRlOgpAQCAtNDU5LDE0ICs0
NzQsNiBAQCBURVNUX0YoVGVzdFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZSwgUmVpbml0KSB7
CiAgIEVYUEVDVF9FUSgwLCBhZGFwdGVyXy0+SW5pdEVuY29kZSgmY29kZWNfLCAxLCAxMjAwKSk7
CiB9CiAKLVRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBTZXRDaGFubmVs
UGFyYW1ldGVycykgewotICBTZXR1cENvZGVjKCk7Ci0gIGNvbnN0IHVpbnQzMl90IHBhY2tldExv
c3MgPSA1OwotICBjb25zdCBpbnQ2NF90IHJ0dCA9IDMwOwotICBoZWxwZXJfLT5FeHBlY3RDYWxs
U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0TG9zcywgcnR0KTsKLSAgYWRhcHRlcl8tPlNldENo
YW5uZWxQYXJhbWV0ZXJzKHBhY2tldExvc3MsIHJ0dCk7Ci19Ci0KIFRFU1RfRihUZXN0U2ltdWxj
YXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBFbmNvZGVkQ2FsbGJhY2tGb3JEaWZmZXJlbnRFbmNvZGVy
cykgewogICBTZXR1cENvZGVjKCk7CiAKQEAgLTcyOCw5ICs3MzUsMTEgQEAgVEVTVF9GKFRlc3RT
aW11bGNhc3RFbmNvZGVyQWRhcHRlckZha2UsIFN1cHBvcnRzTmF0aXZlSGFuZGxlRm9yU2luZ2xl
U3RyZWFtcykgewogICBhZGFwdGVyXy0+UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKHRo
aXMpOwogICBBU1NFUlRfRVEoMXUsIGhlbHBlcl8tPmZhY3RvcnkoKS0+ZW5jb2RlcnMoKS5zaXpl
KCkpOwogICBoZWxwZXJfLT5mYWN0b3J5KCktPmVuY29kZXJzKClbMF0tPnNldF9zdXBwb3J0c19u
YXRpdmVfaGFuZGxlKHRydWUpOwotICBFWFBFQ1RfVFJVRShhZGFwdGVyXy0+U3VwcG9ydHNOYXRp
dmVIYW5kbGUoKSk7CisgIEVYUEVDVF9FUSgwLCBhZGFwdGVyXy0+SW5pdEVuY29kZSgmY29kZWNf
LCAxLCAxMjAwKSk7CisgIEVYUEVDVF9UUlVFKGFkYXB0ZXJfLT5HZXRFbmNvZGVySW5mbygpLnN1
cHBvcnRzX25hdGl2ZV9oYW5kbGUpOwogICBoZWxwZXJfLT5mYWN0b3J5KCktPmVuY29kZXJzKClb
MF0tPnNldF9zdXBwb3J0c19uYXRpdmVfaGFuZGxlKGZhbHNlKTsKLSAgRVhQRUNUX0ZBTFNFKGFk
YXB0ZXJfLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgpKTsKKyAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJf
LT5Jbml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsKKyAgRVhQRUNUX0ZBTFNFKGFkYXB0ZXJf
LT5HZXRFbmNvZGVySW5mbygpLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUpOwogfQogCiBURVNUX0Yo
VGVzdFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZSwgU2V0UmF0ZXNVbmRlck1pbkJpdHJhdGUp
IHsKQEAgLTc2Myw3ICs3NzIsOCBAQCBURVNUX0YoVGVzdFNpbXVsY2FzdEVuY29kZXJBZGFwdGVy
RmFrZSwgU2V0UmF0ZXNVbmRlck1pbkJpdHJhdGUpIHsKIH0KIAogVEVTVF9GKFRlc3RTaW11bGNh
c3RFbmNvZGVyQWRhcHRlckZha2UsIFN1cHBvcnRzSW1wbGVtZW50YXRpb25OYW1lKSB7Ci0gIEVY
UEVDVF9TVFJFUSgiU2ltdWxjYXN0RW5jb2RlckFkYXB0ZXIiLCBhZGFwdGVyXy0+SW1wbGVtZW50
YXRpb25OYW1lKCkpOworICBFWFBFQ1RfRVEoIlNpbXVsY2FzdEVuY29kZXJBZGFwdGVyIiwKKyAg
ICAgICAgICAgIGFkYXB0ZXJfLT5HZXRFbmNvZGVySW5mbygpLmltcGxlbWVudGF0aW9uX25hbWUp
OwogICBTaW11bGNhc3RUZXN0Rml4dHVyZUltcGw6OkRlZmF1bHRTZXR0aW5ncygKICAgICAgICZj
b2RlY18sIHN0YXRpY19jYXN0PGNvbnN0IGludCo+KGtUZXN0VGVtcG9yYWxMYXllclByb2ZpbGUp
LAogICAgICAga1ZpZGVvQ29kZWNWUDgpOwpAQCAtNzczLDggKzc4Myw4IEBAIFRFU1RfRihUZXN0
U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBTdXBwb3J0c0ltcGxlbWVudGF0aW9uTmFtZSkg
ewogICBlbmNvZGVyX25hbWVzLnB1c2hfYmFjaygiY29kZWMzIik7CiAgIGhlbHBlcl8tPmZhY3Rv
cnkoKS0+U2V0RW5jb2Rlck5hbWVzKGVuY29kZXJfbmFtZXMpOwogICBFWFBFQ1RfRVEoMCwgYWRh
cHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywgMSwgMTIwMCkpOwotICBFWFBFQ1RfU1RSRVEoIlNp
bXVsY2FzdEVuY29kZXJBZGFwdGVyIChjb2RlYzEsIGNvZGVjMiwgY29kZWMzKSIsCi0gICAgICAg
ICAgICAgICBhZGFwdGVyXy0+SW1wbGVtZW50YXRpb25OYW1lKCkpOworICBFWFBFQ1RfRVEoIlNp
bXVsY2FzdEVuY29kZXJBZGFwdGVyIChjb2RlYzEsIGNvZGVjMiwgY29kZWMzKSIsCisgICAgICAg
ICAgICBhZGFwdGVyXy0+R2V0RW5jb2RlckluZm8oKS5pbXBsZW1lbnRhdGlvbl9uYW1lKTsKIAog
ICAvLyBTaW5nbGUgc3RyZWFtcyBzaG91bGQgbm90IGV4cG9zZSAiU2ltdWxjYXN0RW5jb2RlckFk
YXB0ZXIiIGluIG5hbWUuCiAgIEVYUEVDVF9FUSgwLCBhZGFwdGVyXy0+UmVsZWFzZSgpKTsKQEAg
LTc4Miw3ICs3OTIsNyBAQCBURVNUX0YoVGVzdFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZSwg
U3VwcG9ydHNJbXBsZW1lbnRhdGlvbk5hbWUpIHsKICAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJfLT5J
bml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsKICAgYWRhcHRlcl8tPlJlZ2lzdGVyRW5jb2Rl
Q29tcGxldGVDYWxsYmFjayh0aGlzKTsKICAgQVNTRVJUX0VRKDF1LCBoZWxwZXJfLT5mYWN0b3J5
KCktPmVuY29kZXJzKCkuc2l6ZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJjb2RlYzEiLCBhZGFwdGVy
Xy0+SW1wbGVtZW50YXRpb25OYW1lKCkpOworICBFWFBFQ1RfRVEoImNvZGVjMSIsIGFkYXB0ZXJf
LT5HZXRFbmNvZGVySW5mbygpLmltcGxlbWVudGF0aW9uX25hbWUpOwogfQogCiBURVNUX0YoVGVz
dFNpbXVsY2FzdEVuY29kZXJBZGFwdGVyRmFrZSwKQEAgLTc5OCwxMCArODA4LDExIEBAIFRFU1Rf
RihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLAogICAgIGVuY29kZXItPnNldF9zdXBw
b3J0c19uYXRpdmVfaGFuZGxlKHRydWUpOwogICAvLyBJZiBvbmUgZW5jb2RlciBkb2Vzbid0IHN1
cHBvcnQgaXQsIHRoZW4gb3ZlcmFsbCBzdXBwb3J0IGlzIGRpc2FibGVkLgogICBoZWxwZXJfLT5m
YWN0b3J5KCktPmVuY29kZXJzKClbMF0tPnNldF9zdXBwb3J0c19uYXRpdmVfaGFuZGxlKGZhbHNl
KTsKLSAgRVhQRUNUX0ZBTFNFKGFkYXB0ZXJfLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgpKTsKKyAg
RVhQRUNUX0ZBTFNFKGFkYXB0ZXJfLT5HZXRFbmNvZGVySW5mbygpLnN1cHBvcnRzX25hdGl2ZV9o
YW5kbGUpOwogICAvLyBPbmNlIGFsbCBkbywgdGhlbiB0aGUgYWRhcHRlciBjbGFpbXMgc3VwcG9y
dC4KICAgaGVscGVyXy0+ZmFjdG9yeSgpLT5lbmNvZGVycygpWzBdLT5zZXRfc3VwcG9ydHNfbmF0
aXZlX2hhbmRsZSh0cnVlKTsKLSAgRVhQRUNUX1RSVUUoYWRhcHRlcl8tPlN1cHBvcnRzTmF0aXZl
SGFuZGxlKCkpOworICBFWFBFQ1RfRVEoMCwgYWRhcHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywg
MSwgMTIwMCkpOworICBFWFBFQ1RfVFJVRShhZGFwdGVyXy0+R2V0RW5jb2RlckluZm8oKS5zdXBw
b3J0c19uYXRpdmVfaGFuZGxlKTsKIH0KIAogLy8gVE9ETyhuaXNzZSk6IFJldXNlIGRlZmluaXRp
b24gaW4gd2VicnRjL3Rlc3QvZmFrZV90ZXh0dXJlX2hhbmRsZS5oLgpAQCAtODM3LDcgKzg0OCw4
IEBAIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLAogICBBU1NFUlRfRVEo
M3UsIGhlbHBlcl8tPmZhY3RvcnkoKS0+ZW5jb2RlcnMoKS5zaXplKCkpOwogICBmb3IgKE1vY2tW
aWRlb0VuY29kZXIqIGVuY29kZXIgOiBoZWxwZXJfLT5mYWN0b3J5KCktPmVuY29kZXJzKCkpCiAg
ICAgZW5jb2Rlci0+c2V0X3N1cHBvcnRzX25hdGl2ZV9oYW5kbGUodHJ1ZSk7Ci0gIEVYUEVDVF9U
UlVFKGFkYXB0ZXJfLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgpKTsKKyAgRVhQRUNUX0VRKDAsIGFk
YXB0ZXJfLT5Jbml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsKKyAgRVhQRUNUX1RSVUUoYWRh
cHRlcl8tPkdldEVuY29kZXJJbmZvKCkuc3VwcG9ydHNfbmF0aXZlX2hhbmRsZSk7CiAKICAgcnRj
OjpzY29wZWRfcmVmcHRyPFZpZGVvRnJhbWVCdWZmZXI+IGJ1ZmZlcigKICAgICAgIG5ldyBydGM6
OlJlZkNvdW50ZWRPYmplY3Q8RmFrZU5hdGl2ZUJ1ZmZlck5vSTQyMD4oMTI4MCwgNzIwKSk7CkBA
IC05NDgsNSArOTYwLDUwIEBAIFRFU1RfRihUZXN0U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtl
LCBBY3RpdmF0ZXNDb3JyZWN0U3RyZWFtc0luSW5pdEVuY29kZSkgewogICBmcmFtZV90eXBlcy5y
ZXNpemUoMywga1ZpZGVvRnJhbWVLZXkpOwogICBFWFBFQ1RfRVEoMCwgYWRhcHRlcl8tPkVuY29k
ZShpbnB1dF9mcmFtZSwgbnVsbHB0ciwgJmZyYW1lX3R5cGVzKSk7CiB9CisKK1RFU1RfRihUZXN0
U2ltdWxjYXN0RW5jb2RlckFkYXB0ZXJGYWtlLCBUcnVzdGVkUmF0ZUNvbnRyb2wpIHsKKyAgLy8g
U2V0IHVwIGNvbW1vbiBzZXR0aW5ncyBmb3IgdGhyZWUgc3RyZWFtcy4KKyAgU2ltdWxjYXN0VGVz
dEZpeHR1cmVJbXBsOjpEZWZhdWx0U2V0dGluZ3MoCisgICAgICAmY29kZWNfLCBzdGF0aWNfY2Fz
dDxjb25zdCBpbnQqPihrVGVzdFRlbXBvcmFsTGF5ZXJQcm9maWxlKSwKKyAgICAgIGtWaWRlb0Nv
ZGVjVlA4KTsKKyAgcmF0ZV9hbGxvY2F0b3JfLnJlc2V0KG5ldyBTaW11bGNhc3RSYXRlQWxsb2Nh
dG9yKGNvZGVjXykpOworICBhZGFwdGVyXy0+UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNr
KHRoaXMpOworCisgIC8vIE9ubHkgZW5vdWdoIHN0YXJ0IGJpdHJhdGUgZm9yIHRoZSBsb3dlc3Qg
c3RyZWFtLgorICBBU1NFUlRfRVEoM3UsIGNvZGVjXy5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMp
OworICBjb2RlY18uc3RhcnRCaXRyYXRlID0gY29kZWNfLnNpbXVsY2FzdFN0cmVhbVswXS50YXJn
ZXRCaXRyYXRlICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjXy5zaW11bGNhc3RTdHJl
YW1bMV0ubWluQml0cmF0ZSAtIDE7CisKKyAgLy8gSW5wdXQgZGF0YS4KKyAgcnRjOjpzY29wZWRf
cmVmcHRyPFZpZGVvRnJhbWVCdWZmZXI+IGJ1ZmZlcihJNDIwQnVmZmVyOjpDcmVhdGUoMTI4MCwg
NzIwKSk7CisgIFZpZGVvRnJhbWUgaW5wdXRfZnJhbWUoYnVmZmVyLCAxMDAsIDEwMDAsIGtWaWRl
b1JvdGF0aW9uXzE4MCk7CisKKyAgLy8gTm8gZW5jb2RlciB0cnVzdGVkLCBzbyBzaW11bGNhc3Qg
YWRhcHRlciBzaG91bGQgbm90IGJlIGVpdGhlci4KKyAgRVhQRUNUX0VRKDAsIGFkYXB0ZXJfLT5J
bml0RW5jb2RlKCZjb2RlY18sIDEsIDEyMDApKTsKKyAgRVhQRUNUX0ZBTFNFKGFkYXB0ZXJfLT5H
ZXRFbmNvZGVySW5mbygpLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcik7CisKKyAgLy8gRW5j
b2RlIHdpdGggdGhyZWUgc3RyZWFtcy4KKyAgc3RkOjp2ZWN0b3I8TW9ja1ZpZGVvRW5jb2Rlcio+
IG9yaWdpbmFsX2VuY29kZXJzID0KKyAgICAgIGhlbHBlcl8tPmZhY3RvcnkoKS0+ZW5jb2RlcnMo
KTsKKworICAvLyBBbGwgZW5jb2RlcnMgYXJlIHRydXN0ZWQsIHNvIHNpbXVsY2FzdCBhZGFwdGVy
IHNob3VsZCBiZSB0b28uCisgIG9yaWdpbmFsX2VuY29kZXJzWzBdLT5zZXRfaGFzX3RydXN0ZWRf
cmF0ZV9jb250cm9sbGVyKHRydWUpOworICBvcmlnaW5hbF9lbmNvZGVyc1sxXS0+c2V0X2hhc190
cnVzdGVkX3JhdGVfY29udHJvbGxlcih0cnVlKTsKKyAgb3JpZ2luYWxfZW5jb2RlcnNbMl0tPnNl
dF9oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIodHJ1ZSk7CisgIEVYUEVDVF9FUSgwLCBhZGFw
dGVyXy0+SW5pdEVuY29kZSgmY29kZWNfLCAxLCAxMjAwKSk7CisgIEVYUEVDVF9UUlVFKGFkYXB0
ZXJfLT5HZXRFbmNvZGVySW5mbygpLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcik7CisKKyAg
Ly8gT25lIGVuY29kZXIgbm90IHRydXN0ZWQsIHNvIHNpbXVsY2FzdCBhZGFwdGVyIHNob3VsZCBu
b3QgYmUgZWl0aGVyLgorICBvcmlnaW5hbF9lbmNvZGVyc1syXS0+c2V0X2hhc190cnVzdGVkX3Jh
dGVfY29udHJvbGxlcihmYWxzZSk7CisgIEVYUEVDVF9FUSgwLCBhZGFwdGVyXy0+SW5pdEVuY29k
ZSgmY29kZWNfLCAxLCAxMjAwKSk7CisgIEVYUEVDVF9GQUxTRShhZGFwdGVyXy0+R2V0RW5jb2Rl
ckluZm8oKS5oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xsZXIpOworCisgIC8vIE5vIGVuY29kZXIg
dHJ1c3RlZCwgc28gc2ltdWxjYXN0IGFkYXB0ZXIgc2hvdWxkIG5vdCBiZSBlaXRoZXIuCisgIG9y
aWdpbmFsX2VuY29kZXJzWzBdLT5zZXRfaGFzX3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKGZhbHNl
KTsKKyAgb3JpZ2luYWxfZW5jb2RlcnNbMV0tPnNldF9oYXNfdHJ1c3RlZF9yYXRlX2NvbnRyb2xs
ZXIoZmFsc2UpOworICBFWFBFQ1RfRVEoMCwgYWRhcHRlcl8tPkluaXRFbmNvZGUoJmNvZGVjXywg
MSwgMTIwMCkpOworICBFWFBFQ1RfRkFMU0UoYWRhcHRlcl8tPkdldEVuY29kZXJJbmZvKCkuaGFz
X3RydXN0ZWRfcmF0ZV9jb250cm9sbGVyKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS9zaW11bGNhc3RfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvc2lt
dWxjYXN0X3VuaXR0ZXN0LmNjCmluZGV4IGY0MTYzNjg2OTc4OTkzMTczOWQ2ZjkzYWIwOGUxNmJi
NTk4NjYwZmMuLjBjMjc4MTYwNjg5ZGZlMzYzOWNmOGQwOTE0OTkxMDI0ZDVjMjc2MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2Vu
Z2luZS9zaW11bGNhc3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3NpbXVsY2FzdF91bml0dGVzdC5jYwpAQCAt
MTc5LDcgKzE3OSw3IEBAIFRFU1QoU2ltdWxjYXN0VGVzdCwgR2V0Q29uZmlnV2l0aE5vcm1hbGl6
ZWRSZXNvbHV0aW9uKSB7CiAgICAgICBrTWF4TGF5ZXJzLCA2NDAgKyAxLCAzNjAgKyAxLCBrTWF4
Qml0cmF0ZUJwcywga0JpdHJhdGVQcmlvcml0eSwga1FwTWF4LAogICAgICAga01heEZwcywgIWtT
Y3JlZW5zaGFyZSk7CiAKLSAgLy8gTXVzdCBiZSBkaXZpZGFibGUgYnkgfDIgXiAobnVtX2xheWVy
cyAtIDEpfC4KKyAgLy8gTXVzdCBiZSBkaXZpc2libGUgYnkgfDIgXiAobnVtX2xheWVycyAtIDEp
fC4KICAgRVhQRUNUX0VRKGtNYXhMYXllcnMsIHN0cmVhbXMuc2l6ZSgpKTsKICAgRVhQRUNUX0VR
KDMyMHUsIHN0cmVhbXNbMF0ud2lkdGgpOwogICBFWFBFQ1RfRVEoMTgwdSwgc3RyZWFtc1swXS5o
ZWlnaHQpOwpAQCAtMTg3LDYgKzE4Nyw0MCBAQCBURVNUKFNpbXVsY2FzdFRlc3QsIEdldENvbmZp
Z1dpdGhOb3JtYWxpemVkUmVzb2x1dGlvbikgewogICBFWFBFQ1RfRVEoMzYwdSwgc3RyZWFtc1sx
XS5oZWlnaHQpOwogfQogCitURVNUKFNpbXVsY2FzdFRlc3QsIEdldENvbmZpZ1dpdGhOb3JtYWxp
emVkUmVzb2x1dGlvbkRpdmlzaWJsZUJ5NCkgeworICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBm
aWVsZF90cmlhbHMoCisgICAgICAiV2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2FzdFJlc29sdXRpb24v
RW5hYmxlZC0yLyIpOworCisgIGNvbnN0IHNpemVfdCBrTWF4TGF5ZXJzID0gMjsKKyAgc3RkOjp2
ZWN0b3I8VmlkZW9TdHJlYW0+IHN0cmVhbXMgPSBjcmlja2V0OjpHZXRTaW11bGNhc3RDb25maWco
CisgICAgICBrTWF4TGF5ZXJzLCA3MDksIDUwMSwga01heEJpdHJhdGVCcHMsIGtCaXRyYXRlUHJp
b3JpdHksIGtRcE1heCwga01heEZwcywKKyAgICAgICFrU2NyZWVuc2hhcmUpOworCisgIC8vIE11
c3QgYmUgZGl2aXNpYmxlIGJ5IHwyIF4gMnwuCisgIEVYUEVDVF9FUShrTWF4TGF5ZXJzLCBzdHJl
YW1zLnNpemUoKSk7CisgIEVYUEVDVF9FUSgzNTR1LCBzdHJlYW1zWzBdLndpZHRoKTsKKyAgRVhQ
RUNUX0VRKDI1MHUsIHN0cmVhbXNbMF0uaGVpZ2h0KTsKKyAgRVhQRUNUX0VRKDcwOHUsIHN0cmVh
bXNbMV0ud2lkdGgpOworICBFWFBFQ1RfRVEoNTAwdSwgc3RyZWFtc1sxXS5oZWlnaHQpOworfQor
CitURVNUKFNpbXVsY2FzdFRlc3QsIEdldENvbmZpZ1dpdGhOb3JtYWxpemVkUmVzb2x1dGlvbkRp
dmlzaWJsZUJ5OCkgeworICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisg
ICAgICAiV2ViUlRDLU5vcm1hbGl6ZVNpbXVsY2FzdFJlc29sdXRpb24vRW5hYmxlZC0zLyIpOwor
CisgIGNvbnN0IHNpemVfdCBrTWF4TGF5ZXJzID0gMjsKKyAgc3RkOjp2ZWN0b3I8VmlkZW9TdHJl
YW0+IHN0cmVhbXMgPSBjcmlja2V0OjpHZXRTaW11bGNhc3RDb25maWcoCisgICAgICBrTWF4TGF5
ZXJzLCA3MDksIDUwMSwga01heEJpdHJhdGVCcHMsIGtCaXRyYXRlUHJpb3JpdHksIGtRcE1heCwg
a01heEZwcywKKyAgICAgICFrU2NyZWVuc2hhcmUpOworCisgIC8vIE11c3QgYmUgZGl2aXNpYmxl
IGJ5IHwyIF4gM3wuCisgIEVYUEVDVF9FUShrTWF4TGF5ZXJzLCBzdHJlYW1zLnNpemUoKSk7Cisg
IEVYUEVDVF9FUSgzNTJ1LCBzdHJlYW1zWzBdLndpZHRoKTsKKyAgRVhQRUNUX0VRKDI0OHUsIHN0
cmVhbXNbMF0uaGVpZ2h0KTsKKyAgRVhQRUNUX0VRKDcwNHUsIHN0cmVhbXNbMV0ud2lkdGgpOwor
ICBFWFBFQ1RfRVEoNDk2dSwgc3RyZWFtc1sxXS5oZWlnaHQpOworfQorCiBURVNUKFNpbXVsY2Fz
dFRlc3QsIEdldENvbmZpZ0ZvclNjcmVlbnNoYXJlKSB7CiAgIGNvbnN0IHNpemVfdCBrTWF4TGF5
ZXJzID0gMzsKICAgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+IHN0cmVhbXMgPSBjcmlja2V0OjpH
ZXRTaW11bGNhc3RDb25maWcoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eS5jYwppbmRleCA0ZDg1ODYzMGI1ODI0ZDcw
NGVlODljMWI4MDQxNjQ3MGRiOWEyZTg2Li4xYTJmNTc3MjVjZWMyNWFlZTQzMGI0NjhkYzE1OTI3
ODViOTMyMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92
cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuY2MKQEAgLTEwLDkgKzEwLDcgQEAKIAogI2luY2x1
ZGUgIm1lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuaCIKIAotI2luY2x1
ZGUgIm1lZGlhL2VuZ2luZS9zY29wZWR2aWRlb2VuY29kZXIuaCIKICNpbmNsdWRlICJtZWRpYS9l
bmdpbmUvc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIFZQOEVuY29kZXJTaW11bGNhc3RQcm94eTo6
VlA4RW5jb2RlclNpbXVsY2FzdFByb3h5KFZpZGVvRW5jb2RlckZhY3RvcnkqIGZhY3RvcnksCkBA
IC01NywyOCArNTUsMTQgQEAgaW50IFZQOEVuY29kZXJTaW11bGNhc3RQcm94eTo6UmVnaXN0ZXJF
bmNvZGVDb21wbGV0ZUNhbGxiYWNrKAogICByZXR1cm4gZW5jb2Rlcl8tPlJlZ2lzdGVyRW5jb2Rl
Q29tcGxldGVDYWxsYmFjayhjYWxsYmFjayk7CiB9CiAKLWludCBWUDhFbmNvZGVyU2ltdWxjYXN0
UHJveHk6OlNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBydHQp
IHsKLSAgcmV0dXJuIGVuY29kZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRfbG9zcywg
cnR0KTsKLX0KLQogaW50IFZQOEVuY29kZXJTaW11bGNhc3RQcm94eTo6U2V0UmF0ZUFsbG9jYXRp
b24oCiAgICAgY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSwKICAgICB1aW50
MzJfdCBuZXdfZnJhbWVyYXRlKSB7CiAgIHJldHVybiBlbmNvZGVyXy0+U2V0UmF0ZUFsbG9jYXRp
b24oYml0cmF0ZSwgbmV3X2ZyYW1lcmF0ZSk7CiB9CiAKLVZpZGVvRW5jb2Rlcjo6U2NhbGluZ1Nl
dHRpbmdzIFZQOEVuY29kZXJTaW11bGNhc3RQcm94eTo6R2V0U2NhbGluZ1NldHRpbmdzKCkKLSAg
ICBjb25zdCB7Ci0gIHJldHVybiBlbmNvZGVyXy0+R2V0U2NhbGluZ1NldHRpbmdzKCk7Ci19Ci0K
LWJvb2wgVlA4RW5jb2RlclNpbXVsY2FzdFByb3h5OjpTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNv
bnN0IHsKLSAgcmV0dXJuIGVuY29kZXJfLT5TdXBwb3J0c05hdGl2ZUhhbmRsZSgpOwotfQotCi1j
b25zdCBjaGFyKiBWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHk6OkltcGxlbWVudGF0aW9uTmFtZSgp
IGNvbnN0IHsKLSAgcmV0dXJuIGVuY29kZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKTsKK1ZpZGVv
RW5jb2Rlcjo6RW5jb2RlckluZm8gVlA4RW5jb2RlclNpbXVsY2FzdFByb3h5OjpHZXRFbmNvZGVy
SW5mbygpIGNvbnN0IHsKKyAgcmV0dXJuIGVuY29kZXJfLT5HZXRFbmNvZGVySW5mbygpOwogfQog
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0
X3Byb3h5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRp
YS9lbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5LmgKaW5kZXggNjg1YmNiZWQ2ZWY4
NDZkNzlhZmJkM2Y4MzM5ODkwODA4ZjY1MmEwMC4uZDA0NjI0ZjI2YzVkODYxNTA3ZTY4YTY4MmEy
MmNlZmNlODA2NmM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94eS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2lu
ZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuaApAQCAtMTYsOCArMTYsOCBAQAogI2luY2x1
ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1h
dC5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgogI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIApAQCAtNDIsMTQgKzQyLDkgQEAgY2xhc3MgVlA4RW5jb2RlclNpbXVsY2Fz
dFByb3h5IDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgICAgICAgICAgICAgY29uc3QgQ29kZWNT
cGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCiAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8RnJhbWVUeXBlPiogZnJhbWVfdHlwZXMpIG92ZXJyaWRlOwogICBpbnQgUmVnaXN0
ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykg
b3ZlcnJpZGU7Ci0gIGludCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9z
cywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwogICBpbnQgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3Qg
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IG5ld19mcmFtZXJhdGUpIG92ZXJyaWRlOwotCi0gIFZpZGVvRW5jb2Rlcjo6U2Nh
bGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IG92ZXJyaWRlOwotCi0gIGJv
b2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdCBvdmVycmlkZTsKLSAgY29uc3QgY2hhciog
SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgIEVuY29kZXJJbmZvIEdldEVu
Y29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgogICBWaWRlb0VuY29kZXJG
YWN0b3J5KiBjb25zdCBmYWN0b3J5XzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3Rf
cHJveHlfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9lbmdpbmUvdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5X3VuaXR0ZXN0LmNj
CmluZGV4IGQxZGM5YTMxZGY2NmJjNTkzM2ZhZjBiOGI3NTA0NTZkNTZhOWJjNzMuLmQxYjI2YmJl
OTNlNjkxM2E3YTliMjc5NzFlMmMwODM5NzFlYjU1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS92cDhfZW5jb2Rlcl9z
aW11bGNhc3RfcHJveHlfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3ZwOF9lbmNvZGVyX3NpbXVsY2FzdF9wcm94
eV91bml0dGVzdC5jYwpAQCAtMTAsMTIgKzEwLDExIEBACiAgKi8KIAogI2luY2x1ZGUgIm1lZGlh
L2VuZ2luZS92cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuaCIKLQogI2luY2x1ZGUgPHN0cmlu
Zz4KIAogI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisj
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVk
ZSAibWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3RvcnkuaCIKLSNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVy
cy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNf
aW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgogI2luY2x1ZGUgInRlc3QvZ3Rl
c3QuaCIKQEAgLTUyLDkgKzUxLDcgQEAgY2xhc3MgTW9ja0VuY29kZXIgOiBwdWJsaWMgVmlkZW9F
bmNvZGVyIHsKICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjU3Bl
Y2lmaWNJbmZvLAogICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxGcmFtZVR5cGU+KiBm
cmFtZV90eXBlcykgLyogb3ZlcnJpZGUgKi8pOwogCi0gIE1PQ0tfTUVUSE9EMihTZXRDaGFubmVs
UGFyYW1ldGVycywgaW50MzJfdCh1aW50MzJfdCBwYWNrZXRMb3NzLCBpbnQ2NF90IHJ0dCkpOwot
Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChJbXBsZW1lbnRhdGlvbk5hbWUsIGNvbnN0IGNoYXIqKCkp
OworICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0RW5jb2RlckluZm8sIFZpZGVvRW5jb2Rlcjo6RW5j
b2RlckluZm8odm9pZCkpOwogfTsKIAogVEVTVChWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHksIENo
b29zZXNDb3JyZWN0SW1wbGVtZW50YXRpb24pIHsKQEAgLTk0LDggKzkxLDEwIEBAIFRFU1QoVlA4
RW5jb2RlclNpbXVsY2FzdFByb3h5LCBDaG9vc2VzQ29ycmVjdEltcGxlbWVudGF0aW9uKSB7CiAK
ICAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2RlciwgSW5pdEVuY29kZShfLCBfLCBfKSkKICAgICAg
IC5XaWxsT25jZShSZXR1cm4oV0VCUlRDX1ZJREVPX0NPREVDX09LKSk7Ci0gIEVYUEVDVF9DQUxM
KCptb2NrX2VuY29kZXIsIEltcGxlbWVudGF0aW9uTmFtZSgpKQotICAgICAgLldpbGxSZXBlYXRl
ZGx5KFJldHVybihrSW1wbGVtZW50YXRpb25OYW1lLmNfc3RyKCkpKTsKKyAgVmlkZW9FbmNvZGVy
OjpFbmNvZGVySW5mbyBlbmNvZGVyX2luZm87CisgIGVuY29kZXJfaW5mby5pbXBsZW1lbnRhdGlv
bl9uYW1lID0ga0ltcGxlbWVudGF0aW9uTmFtZTsKKyAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2Rl
ciwgR2V0RW5jb2RlckluZm8oKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oZW5jb2Rl
cl9pbmZvKSk7CiAKICAgRVhQRUNUX0NBTEwoc2ltdWxjYXN0X2ZhY3RvcnksIENyZWF0ZVZpZGVv
RW5jb2RlclByb3h5KF8pKQogICAgICAgLlRpbWVzKDEpCkBAIC0xMDUsNyArMTA0LDggQEAgVEVT
VChWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHksIENob29zZXNDb3JyZWN0SW1wbGVtZW50YXRpb24p
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNk
cFZpZGVvRm9ybWF0KCJWUDgiKSk7CiAgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ss
CiAgICAgICAgICAgICBzaW11bGNhc3RfZW5hYmxlZF9wcm94eS5Jbml0RW5jb2RlKCZjb2RlY19z
ZXR0aW5ncywgNCwgMTIwMCkpOwotICBFWFBFQ1RfRVEoa0ltcGxlbWVudGF0aW9uTmFtZSwgc2lt
dWxjYXN0X2VuYWJsZWRfcHJveHkuSW1wbGVtZW50YXRpb25OYW1lKCkpOworICBFWFBFQ1RfRVEo
a0ltcGxlbWVudGF0aW9uTmFtZSwKKyAgICAgICAgICAgIHNpbXVsY2FzdF9lbmFibGVkX3Byb3h5
LkdldEVuY29kZXJJbmZvKCkuaW1wbGVtZW50YXRpb25fbmFtZSk7CiAKICAgTmljZU1vY2s8TW9j
a0VuY29kZXI+KiBtb2NrX2VuY29kZXIxID0gbmV3IE5pY2VNb2NrPE1vY2tFbmNvZGVyPigpOwog
ICBOaWNlTW9jazxNb2NrRW5jb2Rlcj4qIG1vY2tfZW5jb2RlcjIgPSBuZXcgTmljZU1vY2s8TW9j
a0VuY29kZXI+KCk7CkBAIC0xMTYsMjMgKzExNiwyMyBAQCBURVNUKFZQOEVuY29kZXJTaW11bGNh
c3RQcm94eSwgQ2hvb3Nlc0NvcnJlY3RJbXBsZW1lbnRhdGlvbikgewogICBFWFBFQ1RfQ0FMTCgq
bW9ja19lbmNvZGVyMSwgSW5pdEVuY29kZShfLCBfLCBfKSkKICAgICAgIC5XaWxsT25jZSgKICAg
ICAgICAgICBSZXR1cm4oV0VCUlRDX1ZJREVPX0NPREVDX0VSUl9TSU1VTENBU1RfUEFSQU1FVEVS
U19OT1RfU1VQUE9SVEVEKSk7Ci0gIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIxLCBJbXBsZW1l
bnRhdGlvbk5hbWUoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oa0ltcGxlbWVudGF0
aW9uTmFtZS5jX3N0cigpKSk7CisgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIxLCBHZXRFbmNv
ZGVySW5mbygpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihlbmNvZGVyX2luZm8pKTsK
IAogICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVyMiwgSW5pdEVuY29kZShfLCBfLCBfKSkKICAg
ICAgIC5XaWxsT25jZShSZXR1cm4oV0VCUlRDX1ZJREVPX0NPREVDX09LKSk7Ci0gIEVYUEVDVF9D
QUxMKCptb2NrX2VuY29kZXIyLCBJbXBsZW1lbnRhdGlvbk5hbWUoKSkKLSAgICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm4oa0ltcGxlbWVudGF0aW9uTmFtZS5jX3N0cigpKSk7CisgIEVYUEVDVF9D
QUxMKCptb2NrX2VuY29kZXIyLCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldpbGxSZXBlYXRl
ZGx5KFJldHVybihlbmNvZGVyX2luZm8pKTsKIAogICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVy
MywgSW5pdEVuY29kZShfLCBfLCBfKSkKICAgICAgIC5XaWxsT25jZShSZXR1cm4oV0VCUlRDX1ZJ
REVPX0NPREVDX09LKSk7Ci0gIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIzLCBJbXBsZW1lbnRh
dGlvbk5hbWUoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oa0ltcGxlbWVudGF0aW9u
TmFtZS5jX3N0cigpKSk7CisgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIzLCBHZXRFbmNvZGVy
SW5mbygpKQorICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihlbmNvZGVyX2luZm8pKTsKIAog
ICBFWFBFQ1RfQ0FMTCgqbW9ja19lbmNvZGVyNCwgSW5pdEVuY29kZShfLCBfLCBfKSkKICAgICAg
IC5XaWxsT25jZShSZXR1cm4oV0VCUlRDX1ZJREVPX0NPREVDX09LKSk7Ci0gIEVYUEVDVF9DQUxM
KCptb2NrX2VuY29kZXI0LCBJbXBsZW1lbnRhdGlvbk5hbWUoKSkKLSAgICAgIC5XaWxsUmVwZWF0
ZWRseShSZXR1cm4oa0ltcGxlbWVudGF0aW9uTmFtZS5jX3N0cigpKSk7CisgIEVYUEVDVF9DQUxM
KCptb2NrX2VuY29kZXI0LCBHZXRFbmNvZGVySW5mbygpKQorICAgICAgLldpbGxSZXBlYXRlZGx5
KFJldHVybihlbmNvZGVyX2luZm8pKTsKIAogICBFWFBFQ1RfQ0FMTChub25zaW11bGNhc3RfZmFj
dG9yeSwgQ3JlYXRlVmlkZW9FbmNvZGVyUHJveHkoXykpCiAgICAgICAuVGltZXMoNCkKQEAgLTE0
NiwxMiArMTQ2LDM4IEBAIFRFU1QoVlA4RW5jb2RlclNpbXVsY2FzdFByb3h5LCBDaG9vc2VzQ29y
cmVjdEltcGxlbWVudGF0aW9uKSB7CiAgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ss
CiAgICAgICAgICAgICBzaW11bGNhc3RfZGlzYWJsZWRfcHJveHkuSW5pdEVuY29kZSgmY29kZWNf
c2V0dGluZ3MsIDQsIDEyMDApKTsKICAgRVhQRUNUX0VRKGtTaW11bGNhc3RBZGFwdGVkSW1wbGVt
ZW50YXRpb25OYW1lLAotICAgICAgICAgICAgc2ltdWxjYXN0X2Rpc2FibGVkX3Byb3h5LkltcGxl
bWVudGF0aW9uTmFtZSgpKTsKKyAgICAgICAgICAgIHNpbXVsY2FzdF9kaXNhYmxlZF9wcm94eS5H
ZXRFbmNvZGVySW5mbygpLmltcGxlbWVudGF0aW9uX25hbWUpOwogCiAgIC8vIENsZWFudXAuCiAg
IHNpbXVsY2FzdF9lbmFibGVkX3Byb3h5LlJlbGVhc2UoKTsKICAgc2ltdWxjYXN0X2Rpc2FibGVk
X3Byb3h5LlJlbGVhc2UoKTsKIH0KIAorVEVTVChWUDhFbmNvZGVyU2ltdWxjYXN0UHJveHksIEZv
cndhcmRzVHJ1c3RlZFNldHRpbmcpIHsKKyAgTmljZU1vY2s8TW9ja0VuY29kZXI+KiBtb2NrX2Vu
Y29kZXIgPSBuZXcgTmljZU1vY2s8TW9ja0VuY29kZXI+KCk7CisgIE5pY2VNb2NrPE1vY2tWaWRl
b0VuY29kZXJGYWN0b3J5PiBzaW11bGNhc3RfZmFjdG9yeTsKKworICBFWFBFQ1RfQ0FMTCgqbW9j
a19lbmNvZGVyLCBJbml0RW5jb2RlKF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKFJldHVybihX
RUJSVENfVklERU9fQ09ERUNfT0spKTsKKworICBFWFBFQ1RfQ0FMTChzaW11bGNhc3RfZmFjdG9y
eSwgQ3JlYXRlVmlkZW9FbmNvZGVyUHJveHkoXykpCisgICAgICAuVGltZXMoMSkKKyAgICAgIC5X
aWxsT25jZShSZXR1cm4obW9ja19lbmNvZGVyKSk7CisKKyAgVlA4RW5jb2RlclNpbXVsY2FzdFBy
b3h5IHNpbXVsY2FzdF9lbmFibGVkX3Byb3h5KCZzaW11bGNhc3RfZmFjdG9yeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFZpZGVvRm9ybWF0
KCJWUDgiKSk7CisgIFZpZGVvQ29kZWMgY29kZWNfc2V0dGluZ3M7CisgIHdlYnJ0Yzo6dGVzdDo6
Q29kZWNTZXR0aW5ncyhrVmlkZW9Db2RlY1ZQOCwgJmNvZGVjX3NldHRpbmdzKTsKKyAgRVhQRUNU
X0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAgICAgICAgICAgIHNpbXVsY2FzdF9lbmFibGVk
X3Byb3h5LkluaXRFbmNvZGUoJmNvZGVjX3NldHRpbmdzLCA0LCAxMjAwKSk7CisKKyAgVmlkZW9F
bmNvZGVyOjpFbmNvZGVySW5mbyBpbmZvOworICBpbmZvLmhhc190cnVzdGVkX3JhdGVfY29udHJv
bGxlciA9IHRydWU7CisgIEVYUEVDVF9DQUxMKCptb2NrX2VuY29kZXIsIEdldEVuY29kZXJJbmZv
KCkpLldpbGxSZXBlYXRlZGx5KFJldHVybihpbmZvKSk7CisKKyAgRVhQRUNUX1RSVUUoCisgICAg
ICBzaW11bGNhc3RfZW5hYmxlZF9wcm94eS5HZXRFbmNvZGVySW5mbygpLmhhc190cnVzdGVkX3Jh
dGVfY29udHJvbGxlcik7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFl
bmdpbmUuY2MKaW5kZXggZTYwYzU5MmEzZmFiZWVkMTJlYjU4ZmVkOWE2YjZlY2Q2N2ZkZjAzNS4u
YmM3ZDNjM2UxMjRmZmVmZWEzNmIwMjFlNWJjNjM1YTM2MDJlYjYyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0
Y21lZGlhZW5naW5lLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZS5jYwpAQCAtMTEsMTAgKzExLDEw
IEBACiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lLmgiCiAKICNpbmNs
dWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHR1cGxlPgogI2lu
Y2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNs
dWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNp
bmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1
ZGUgIm1lZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2luZS5oIgpAQCAtMzgsMjMgKzM4LDI0IEBA
IE1lZGlhRW5naW5lSW50ZXJmYWNlKiBDcmVhdGVXZWJSdGNNZWRpYUVuZ2luZSgKICAgICAgICAg
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAogICAgIFdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZp
ZGVvX2VuY29kZXJfZmFjdG9yeSwKICAgICBXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRl
b19kZWNvZGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRy
YXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFj
dG9yeSwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb01peGVyPiBhdWRpb19t
aXhlciwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+IGF1
ZGlvX3Byb2Nlc3NpbmcpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5naW5lSW50ZXJmYWNl
PiB2aWRlb19lbmdpbmU7CiAjaWZkZWYgSEFWRV9XRUJSVENfVklERU8KLSAgdHlwZWRlZiBXZWJS
dGNWaWRlb0VuZ2luZSBWaWRlb0VuZ2luZTsKLSAgc3RkOjp0dXBsZTxzdGQ6OnVuaXF1ZV9wdHI8
V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeT4sCi0gICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnk+PgotICAgICAgdmlkZW9fYXJncygKLSAgICAgICAg
ICAoc3RkOjp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3Rvcnk+KHZpZGVvX2VuY29k
ZXJfZmFjdG9yeSkpLAotICAgICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9EZWNv
ZGVyRmFjdG9yeT4odmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSkpOworICB2aWRlb19lbmdpbmUgPSBh
YnNsOjptYWtlX3VuaXF1ZTxXZWJSdGNWaWRlb0VuZ2luZT4oCisgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeT4odmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSwKKyAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5Pih2aWRlb19kZWNv
ZGVyX2ZhY3RvcnkpLAorICAgICAgc3RkOjptb3ZlKHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2Zh
Y3RvcnkpKTsKICNlbHNlCi0gIHR5cGVkZWYgTnVsbFdlYlJ0Y1ZpZGVvRW5naW5lIFZpZGVvRW5n
aW5lOwotICBzdGQ6OnR1cGxlPD4gdmlkZW9fYXJnczsKKyAgdmlkZW9fZW5naW5lID0gYWJzbDo6
bWFrZV91bmlxdWU8TnVsbFdlYlJ0Y1ZpZGVvRW5naW5lPigpOwogI2VuZGlmCi0gIHJldHVybiBu
ZXcgQ29tcG9zaXRlTWVkaWFFbmdpbmU8V2ViUnRjVm9pY2VFbmdpbmUsIFZpZGVvRW5naW5lPigK
LSAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShhZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwg
YXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlv
X21peGVyLCBhdWRpb19wcm9jZXNzaW5nKSwKLSAgICAgIHN0ZDo6bW92ZSh2aWRlb19hcmdzKSk7
CisgIHJldHVybiBuZXcgQ29tcG9zaXRlTWVkaWFFbmdpbmUoCisgICAgICBhYnNsOjptYWtlX3Vu
aXF1ZTxXZWJSdGNWb2ljZUVuZ2luZT4oYWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5LCBhdWRpb19taXhlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhdWRpb19wcm9jZXNzaW5nKSwKKyAgICAgIHN0ZDo6bW92ZSh2aWRlb19lbmdpbmUpKTsK
IH0KIAogfSAgLy8gbmFtZXNwYWNlCkBAIC02NywxMCArNjgsNDMgQEAgTWVkaWFFbmdpbmVJbnRl
cmZhY2UqIFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAogICAgICAgICBhdWRpb19k
ZWNvZGVyX2ZhY3RvcnksCiAgICAgV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LAogICAgIFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29k
ZXJfZmFjdG9yeSkgewotICByZXR1cm4gQ3JlYXRlV2ViUnRjTWVkaWFFbmdpbmUoYWRtLCBhdWRp
b19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRp
b19kZWNvZGVyX2ZhY3RvcnksIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwgbnVsbHB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nQnVpbGRl
cigpLkNyZWF0ZSgpKTsKKyAgcmV0dXJuIFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRl
KAorICAgICAgYWRtLCBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9y
eSwgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgICAgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAor
ICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgp
KTsKK30KKworTWVkaWFFbmdpbmVJbnRlcmZhY2UqIFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6
Q3JlYXRlKAorICAgIHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGUqIGFkbSwKKyAgICBjb25zdCBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0VuY29kZXJGYWN0b3J5PiYKKyAgICAgICAg
YXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkF1ZGlvRGVjb2RlckZhY3Rvcnk+JgorICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3Rvcnks
CisgICAgV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAor
ICAgIFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5Pgor
ICAgICAgICB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KSB7CisgIHJldHVybiBDcmVh
dGVXZWJSdGNNZWRpYUVuZ2luZSgKKyAgICAgIGFkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBh
dWRpb19kZWNvZGVyX2ZhY3RvcnksIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKKyAgICAgIHZpZGVv
X2RlY29kZXJfZmFjdG9yeSwgc3RkOjptb3ZlKHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rv
cnkpLAorICAgICAgbnVsbHB0ciwgd2VicnRjOjpBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkuQ3Jl
YXRlKCkpOworfQorCitNZWRpYUVuZ2luZUludGVyZmFjZSogV2ViUnRjTWVkaWFFbmdpbmVGYWN0
b3J5OjpDcmVhdGUoCisgICAgd2VicnRjOjpBdWRpb0RldmljZU1vZHVsZSogYWRtLAorICAgIGNv
bnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+JgorICAg
ICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeT4mCisgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFj
dG9yeSwKKyAgICBXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3Rv
cnksCisgICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5
LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVy
LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9f
cHJvY2Vzc2luZykgeworICByZXR1cm4gV2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUo
CisgICAgICBhZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
LCB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisg
ICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCks
IGF1ZGlvX21peGVyLAorICAgICAgYXVkaW9fcHJvY2Vzc2luZyk7CiB9CiAKIE1lZGlhRW5naW5l
SW50ZXJmYWNlKiBXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKQEAgLTgxLDExICsx
MTUsMTQgQEAgTWVkaWFFbmdpbmVJbnRlcmZhY2UqIFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6
Q3JlYXRlKAogICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCiAgICAgV2ViUnRjVmlkZW9F
bmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAogICAgIFdlYlJ0Y1ZpZGVvRGVj
b2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICB2aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5LAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1
ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1
ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZykgewogICByZXR1cm4gQ3JlYXRlV2ViUnRj
TWVkaWFFbmdpbmUoCiAgICAgICBhZG0sIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5LCB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICB2aWRlb19kZWNvZGVy
X2ZhY3RvcnksIGF1ZGlvX21peGVyLCBhdWRpb19wcm9jZXNzaW5nKTsKKyAgICAgIHZpZGVvX2Rl
Y29kZXJfZmFjdG9yeSwgc3RkOjptb3ZlKHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnkp
LAorICAgICAgYXVkaW9fbWl4ZXIsIGF1ZGlvX3Byb2Nlc3NpbmcpOwogfQogI2VuZGlmCiAKQEAg
LTk3LDIyICsxMzQsMzUgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhRW5naW5lSW50ZXJmYWNlPiBX
ZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCiAgICAgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCiAgICAgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5n
KSB7CisgIHJldHVybiBXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKKyAgICAgIGFk
bSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICBz
dGQ6Om1vdmUodmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSwgc3RkOjptb3ZlKHZpZGVvX2RlY29kZXJf
ZmFjdG9yeSksCisgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0
b3JGYWN0b3J5KCksIGF1ZGlvX21peGVyLAorICAgICAgYXVkaW9fcHJvY2Vzc2luZyk7Cit9CisK
K3N0ZDo6dW5pcXVlX3B0cjxNZWRpYUVuZ2luZUludGVyZmFjZT4gV2ViUnRjTWVkaWFFbmdpbmVG
YWN0b3J5OjpDcmVhdGUoCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZXZp
Y2VNb2R1bGU+IGFkbSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0VuY29k
ZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAorICAg
IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IHZpZGVvX2VuY29k
ZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0
b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6
VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeSwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb01peGVy
PiBhdWRpb19taXhlciwKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nl
c3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcpIHsKICNpZmRlZiBIQVZFX1dFQlJUQ19WSURFTwotICB0
eXBlZGVmIFdlYlJ0Y1ZpZGVvRW5naW5lIFZpZGVvRW5naW5lOwotICBzdGQ6OnR1cGxlPHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+LAotICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+PgotICAgICAgdmlkZW9f
YXJncyhzdGQ6Om1vdmUodmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSwKLSAgICAgICAgICAgICAgICAg
c3RkOjptb3ZlKHZpZGVvX2RlY29kZXJfZmFjdG9yeSkpOworICBhdXRvIHZpZGVvX2VuZ2luZSA9
IGFic2w6Om1ha2VfdW5pcXVlPFdlYlJ0Y1ZpZGVvRW5naW5lPigKKyAgICAgIHN0ZDo6bW92ZSh2
aWRlb19lbmNvZGVyX2ZhY3RvcnkpLCBzdGQ6Om1vdmUodmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSwK
KyAgICAgIHN0ZDo6bW92ZSh2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KSk7CiAjZWxz
ZQotICB0eXBlZGVmIE51bGxXZWJSdGNWaWRlb0VuZ2luZSBWaWRlb0VuZ2luZTsKLSAgc3RkOjp0
dXBsZTw+IHZpZGVvX2FyZ3M7CisgIGF1dG8gdmlkZW9fZW5naW5lID0gYWJzbDo6bWFrZV91bmlx
dWU8TnVsbFdlYlJ0Y1ZpZGVvRW5naW5lPigpOwogI2VuZGlmCi0gIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFFbmdpbmVJbnRlcmZhY2U+KAotICAgICAgbmV3IENvbXBvc2l0ZU1lZGlhRW5n
aW5lPFdlYlJ0Y1ZvaWNlRW5naW5lLCBWaWRlb0VuZ2luZT4oCi0gICAgICAgICAgc3RkOjpmb3J3
YXJkX2FzX3R1cGxlKGFkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdWRpb19kZWNvZGVyX2ZhY3RvcnksIGF1ZGlvX21peGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wcm9jZXNzaW5nKSwKLSAgICAgICAg
ICBzdGQ6Om1vdmUodmlkZW9fYXJncykpKTsKKyAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YUVuZ2luZUludGVyZmFjZT4obmV3IENvbXBvc2l0ZU1lZGlhRW5naW5lKAorICAgICAgYWJzbDo6
bWFrZV91bmlxdWU8V2ViUnRjVm9pY2VFbmdpbmU+KGFkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2RlY29k
ZXJfZmFjdG9yeSwgYXVkaW9fbWl4ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXVkaW9fcHJvY2Vzc2luZyksCisgICAgICBzdGQ6Om1vdmUodmlkZW9fZW5n
aW5lKSkpOwogfQogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
d2VicnRjbWVkaWFlbmdpbmUuaAppbmRleCBkODJlY2NmOWRjMzQ3ZmFmOTZmODYzMWZkZjI2NGI5
MDIyMTczYWY5Li5mYmY0NDY2NzMyNzE1ZjMzMjc4ZDg1ZmQzYTU2Y2JmNDJkYzNiMmZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaApAQCAtMjUs
NiArMjUsNyBAQCBjbGFzcyBBdWRpb01peGVyOwogY2xhc3MgQXVkaW9Qcm9jZXNzaW5nOwogY2xh
c3MgVmlkZW9EZWNvZGVyRmFjdG9yeTsKIGNsYXNzIFZpZGVvRW5jb2RlckZhY3Rvcnk7CitjbGFz
cyBWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5OwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywog
bmFtZXNwYWNlIGNyaWNrZXQgewogY2xhc3MgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeTsKQEAg
LTUwLDYgKzUxLDI5IEBAIGNsYXNzIFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeSB7CiAgICAgICAg
ICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAogICAgICAgV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9y
eSogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAogICAgICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9y
eSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KTsKKworICBzdGF0aWMgTWVkaWFFbmdpbmVJbnRlcmZh
Y2UqIENyZWF0ZSgKKyAgICAgIHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGUqIGFkbSwKKyAgICAg
IGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+Jgor
ICAgICAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKKyAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVjb2RlckZhY3Rvcnk+JgorICAgICAgICAgIGF1ZGlvX2Rl
Y29kZXJfZmFjdG9yeSwKKyAgICAgIFdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2Vu
Y29kZXJfZmFjdG9yeSwKKyAgICAgIFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2Rl
Y29kZXJfZmFjdG9yeSwKKyAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvTWl4
ZXI+IGF1ZGlvX21peGVyLAorICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Q
cm9jZXNzaW5nPiBhcG0pOworCisgIHN0YXRpYyBNZWRpYUVuZ2luZUludGVyZmFjZSogQ3JlYXRl
KAorICAgICAgd2VicnRjOjpBdWRpb0RldmljZU1vZHVsZSogYWRtLAorICAgICAgY29uc3QgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9FbmNvZGVyRmFjdG9yeT4mCisgICAgICAgICAg
YXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAorICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeT4mCisgICAgICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5LAorICAgICAgV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5LAorICAgICAgV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5LAorICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9y
RmFjdG9yeT4KKyAgICAgICAgICB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KTsKKwog
ICBzdGF0aWMgTWVkaWFFbmdpbmVJbnRlcmZhY2UqIENyZWF0ZSgKICAgICAgIHdlYnJ0Yzo6QXVk
aW9EZXZpY2VNb2R1bGUqIGFkbSwKICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+JgpAQCAtNTgsNiArODIsOCBAQCBjbGFzcyBXZWJSdGNN
ZWRpYUVuZ2luZUZhY3RvcnkgewogICAgICAgICAgIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKICAg
ICAgIFdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKICAg
ICAgIFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+
CisgICAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSwKICAgICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAogICAgICAgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPiBhcG0pOwogI2VuZGlmCkBA
IC03Myw2ICs5OSwxNyBAQCBjbGFzcyBXZWJSdGNNZWRpYUVuZ2luZUZhY3RvcnkgewogICAgICAg
c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gdmlkZW9fZGVjb2Rl
cl9mYWN0b3J5LAogICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9NaXhlcj4g
YXVkaW9fbWl4ZXIsCiAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nl
c3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcpOworCisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFFbmdpbmVJbnRlcmZhY2U+IENyZWF0ZSgKKyAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkF1ZGlvRGV2aWNlTW9kdWxlPiBhZG0sCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnksCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJG
YWN0b3J5PiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCisgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAg
ICAgICAgIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnksCisgICAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb01peGVyPiBhdWRpb19taXhlciwKKyAgICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4gYXVkaW9fcHJvY2Vzc2luZyk7CiB9
OwogCiAvLyBWZXJpZnkgdGhhdCBleHRlbnNpb24gSURzIGFyZSB3aXRoaW4gMS1ieXRlIGV4dGVu
c2lvbiByYW5nZSBhbmQgYXJlIG5vdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5lX3VuaXR0ZXN0LmNjCmluZGV4IDRmYTlhNmI1ZWUzNWQ4
OWNiZmM2ODU0OTE5ZDFiZjQ0YWQ1Mzk2NDAuLmVlYzdkYzM5YzQ4ODFjMzY5ZDRiZTY0MmM5ZjZj
M2NkYjgzMTAwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGNtZWRpYWVuZ2luZV91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
d2VicnRjbWVkaWFlbmdpbmVfdW5pdHRlc3QuY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1
ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNp
bmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5Lmgi
CisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFj
dG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVy
X2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0Y21lZGlhZW5naW5l
LmgiCkBAIC0yNDksNCArMjUwLDE1IEBAIFRFU1QoV2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5VGVz
dCwgQ3JlYXRlV2l0aEJ1aWx0aW5EZWNvZGVycykgewogICBFWFBFQ1RfVFJVRShlbmdpbmUpOwog
fQogCitURVNUKFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeVRlc3QsIENyZWF0ZVdpdGhWaWRlb0Jp
dHJhdGVGYWN0b3J5KSB7CisgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYUVuZ2luZUludGVyZmFjZT4g
ZW5naW5lKFdlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAorICAgICAgbnVsbHB0ciAv
KiBhZG0gKi8sIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwKKyAg
ICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSwKKyAgICAgIHdl
YnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVvRW5jb2RlckZhY3RvcnkoKSwKKyAgICAgIHdlYnJ0Yzo6
Q3JlYXRlQnVpbHRpblZpZGVvRGVjb2RlckZhY3RvcnkoKSwKKyAgICAgIHdlYnJ0Yzo6Q3JlYXRl
QnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKSwKKyAgICAgIG51bGxwdHIgLyog
YXVkaW9fbWl4ZXIgKi8sIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgp
KSk7CisgIEVYUEVDVF9UUlVFKGVuZ2luZSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9kZWNvZGVyZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZGVjb2Rl
cmZhY3RvcnkuaAppbmRleCAwMTZjYjA5ZGEwMDBmNDc0ZmFkZDY1NjIyOTM0ZGQ2MzA4YTk1MGUw
Li5mMDBkOWE2OWUwZTI2NmQ1ODlkMmZmOTQ3MmJkNTRhNGYzZWUyNzlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2Vi
cnRjdmlkZW9kZWNvZGVyZmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2RlY29kZXJmYWN0b3J5LmgK
QEAgLTEzLDkgKzEzLDEwIEBACiAKICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJjb21t
b25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFwaS92aWRl
by92aWRlb19jb2RlY190eXBlLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0
Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBWaWRlb0RlY29kZXI7CkBA
IC0yOSw3ICszMCw3IEBAIHN0cnVjdCBWaWRlb0RlY29kZXJQYXJhbXMgewogCiAvLyBEZXByZWNh
dGVkLiBVc2Ugd2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5IGluc3RlYWQuCiAvLyBodHRwczov
L2J1Z3MuY2hyb21pdW0ub3JnL3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9NzkyNQotY2xhc3Mg
V2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeSB7CitjbGFzcyBSVENfRVhQT1JUIFdlYlJ0Y1ZpZGVv
RGVjb2RlckZhY3RvcnkgewogIHB1YmxpYzoKICAgLy8gQ2FsbGVyIHRha2VzIHRoZSBvd25lcnNo
aXAgb2YgdGhlIHJldHVybmVkIG9iamVjdCBhbmQgaXQgc2hvdWxkIGJlIHJlbGVhc2VkCiAgIC8v
IGJ5IGNhbGxpbmcgRGVzdHJveVZpZGVvRGVjb2RlcigpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVv
ZW5jb2RlcmZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuY29kZXJmYWN0b3J5LmgKaW5kZXggOTdhYzAz
YjQ3M2Y4ZjBjNzhjODRlZTg2NTAzNjU2MGNhZDYxOTIxMy4uZDM5ZTBmZDVmOTVhZTQ1NDA4MDE1
MDNmMmQ1NThmZDgwZjIwYjc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3Rvcnku
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvd2VicnRjdmlkZW9lbmNvZGVyZmFjdG9yeS5oCkBAIC0xNCw4ICsxNCw5IEBACiAjaW5j
bHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImNvbW1vbl90eXBl
cy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVv
X2NvZGVjX3R5cGUuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2NvZGVjLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFz
cyBWaWRlb0VuY29kZXI7CkBAIC0yNSw3ICsyNiw3IEBAIG5hbWVzcGFjZSBjcmlja2V0IHsKIAog
Ly8gRGVwcmVjYXRlZC4gVXNlIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeSBpbnN0ZWFkLgog
Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3dlYnJ0Yy9pc3N1ZXMvZGV0YWlsP2lkPTc5
MjUKLWNsYXNzIFdlYlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkgeworY2xhc3MgUlRDX0VYUE9SVCBX
ZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5IHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgfldlYlJ0Y1Zp
ZGVvRW5jb2RlckZhY3RvcnkoKSB7fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUv
d2VicnRjdmlkZW9lbmdpbmUuY2MKaW5kZXggNDBiMGM0NWEzZDgzMmMxMTY2YWMzNzQ0ZWZhZDY1
ZTdmZTAzNmQwMS4uYTc1ZGI3MzY5NzA2OWI5MzdmYTg4YjYxN2MzZTNkOWE0ZjRiNDhmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2aWRlb2VuZ2luZS5jYwpAQCAt
MTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVj
cy9zZHBfdmlkZW9fZm9ybWF0LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19k
ZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29k
ZXIuaCIKQEAgLTExMSw4ICsxMTIsOCBAQCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiBBc3NpZ25Q
YXlsb2FkVHlwZXNBbmREZWZhdWx0Q29kZWNzKAogICAgIH0KIAogICAgIC8vIEFkZCBhc3NvY2lh
dGVkIFJUWCBjb2RlYyBmb3Igbm9uLUZFQyBjb2RlY3MuCi0gICAgaWYgKCFDb2RlY05hbWVzRXEo
Y29kZWMubmFtZSwga1VscGZlY0NvZGVjTmFtZSkgJiYKLSAgICAgICAgIUNvZGVjTmFtZXNFcShj
b2RlYy5uYW1lLCBrRmxleGZlY0NvZGVjTmFtZSkpIHsKKyAgICBpZiAoIWFic2w6OkVxdWFsc0ln
bm9yZUNhc2UoY29kZWMubmFtZSwga1VscGZlY0NvZGVjTmFtZSkgJiYKKyAgICAgICAgIWFic2w6
OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwga0ZsZXhmZWNDb2RlY05hbWUpKSB7CiAgICAg
ICBvdXRwdXRfY29kZWNzLnB1c2hfYmFjaygKICAgICAgICAgICBWaWRlb0NvZGVjOjpDcmVhdGVS
dHhDb2RlYyhwYXlsb2FkX3R5cGUsIGNvZGVjLmlkKSk7CiAKQEAgLTE0Nyw4ICsxNDgsOCBAQCBp
bnQgR2V0TWF4RnJhbWVyYXRlKGNvbnN0IHdlYnJ0Yzo6VmlkZW9FbmNvZGVyQ29uZmlnJiBlbmNv
ZGVyX2NvbmZpZywKIH0KIAogYm9vbCBJc1RlbXBvcmFsTGF5ZXJzU3VwcG9ydGVkKGNvbnN0IHN0
ZDo6c3RyaW5nJiBjb2RlY19uYW1lKSB7Ci0gIHJldHVybiBDb2RlY05hbWVzRXEoY29kZWNfbmFt
ZSwga1ZwOENvZGVjTmFtZSkgfHwKLSAgICAgICAgIENvZGVjTmFtZXNFcShjb2RlY19uYW1lLCBr
VnA5Q29kZWNOYW1lKTsKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWNfbmFt
ZSwga1ZwOENvZGVjTmFtZSkgfHwKKyAgICAgICAgIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29k
ZWNfbmFtZSwga1ZwOUNvZGVjTmFtZSk7CiB9CiAKIHN0YXRpYyBzdGQ6OnN0cmluZyBDb2RlY1Zl
Y3RvclRvU3RyaW5nKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+JiBjb2RlY3MpIHsKQEAg
LTIyMCw5ICsyMjEsOSBAQCBzdGF0aWMgYm9vbCBWYWxpZGF0ZVN0cmVhbVBhcmFtcyhjb25zdCBT
dHJlYW1QYXJhbXMmIHNwKSB7CiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGNvZGVjIGlz
IGRpc2FsbG93ZWQgZnJvbSBkb2luZyBzaW11bGNhc3QuCiBib29sIElzQ29kZWNCbGFja2xpc3Rl
ZEZvclNpbXVsY2FzdChjb25zdCBzdGQ6OnN0cmluZyYgY29kZWNfbmFtZSkgewogICByZXR1cm4g
d2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtSDI2NFNpbXVsY2FzdCIpCi0g
ICAgPyBDb2RlY05hbWVzRXEoY29kZWNfbmFtZSwga1ZwOUNvZGVjTmFtZSkKLSAgICA6IENvZGVj
TmFtZXNFcShjb2RlY19uYW1lLCBrSDI2NENvZGVjTmFtZSkgfHwKLSAgICAgIENvZGVjTmFtZXNF
cShjb2RlY19uYW1lLCBrVnA5Q29kZWNOYW1lKTsKKyAgICAgICAgICAgICA/IGFic2w6OkVxdWFs
c0lnbm9yZUNhc2UoY29kZWNfbmFtZSwga1ZwOUNvZGVjTmFtZSkKKyAgICAgICAgICAgICA6IGFi
c2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWNfbmFtZSwga0gyNjRDb2RlY05hbWUpIHx8CisgICAg
ICAgICAgICAgICAgICAgYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19uYW1lLCBrVnA5Q29k
ZWNOYW1lKTsKIH0KIAogLy8gVGhlIHNlbGVjdGVkIHRocmVzaG9sZHMgZm9yIFFWR0EgYW5kIFZH
QSBjb3JyZXNwb25kZWQgdG8gYSBRUCBhcm91bmQgMTAuCkBAIC0zMzcsMTQgKzMzOCwxNCBAQCBX
ZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvU2VuZFN0cmVhbTo6Q29uZmlndXJlVmlkZW9F
bmNvZGVyU2V0dGluZ3MoCiAgICAgZGVub2lzaW5nID0gcGFyYW1ldGVyc18ub3B0aW9ucy52aWRl
b19ub2lzZV9yZWR1Y3Rpb24udmFsdWVfb3IoZmFsc2UpOwogICB9CiAKLSAgaWYgKENvZGVjTmFt
ZXNFcShjb2RlYy5uYW1lLCBrSDI2NENvZGVjTmFtZSkpIHsKKyAgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UoY29kZWMubmFtZSwga0gyNjRDb2RlY05hbWUpKSB7CiAgICAgd2VicnRjOjpWaWRl
b0NvZGVjSDI2NCBoMjY0X3NldHRpbmdzID0KICAgICAgICAgd2VicnRjOjpWaWRlb0VuY29kZXI6
OkdldERlZmF1bHRIMjY0U2V0dGluZ3MoKTsKICAgICBoMjY0X3NldHRpbmdzLmZyYW1lRHJvcHBp
bmdPbiA9IGZyYW1lX2Ryb3BwaW5nOwogICAgIHJldHVybiBuZXcgcnRjOjpSZWZDb3VudGVkT2Jq
ZWN0PAogICAgICAgICB3ZWJydGM6OlZpZGVvRW5jb2RlckNvbmZpZzo6SDI2NEVuY29kZXJTcGVj
aWZpY1NldHRpbmdzPihoMjY0X3NldHRpbmdzKTsKICAgfQotICBpZiAoQ29kZWNOYW1lc0VxKGNv
ZGVjLm5hbWUsIGtWcDhDb2RlY05hbWUpKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KGNvZGVjLm5hbWUsIGtWcDhDb2RlY05hbWUpKSB7CiAgICAgd2VicnRjOjpWaWRlb0NvZGVjVlA4
IHZwOF9zZXR0aW5ncyA9CiAgICAgICAgIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyOjpHZXREZWZhdWx0
VnA4U2V0dGluZ3MoKTsKICAgICB2cDhfc2V0dGluZ3MuYXV0b21hdGljUmVzaXplT24gPSBhdXRv
bWF0aWNfcmVzaXplOwpAQCAtMzU0LDcgKzM1NSw3IEBAIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2Vi
UnRjVmlkZW9TZW5kU3RyZWFtOjpDb25maWd1cmVWaWRlb0VuY29kZXJTZXR0aW5ncygKICAgICBy
ZXR1cm4gbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDwKICAgICAgICAgd2VicnRjOjpWaWRlb0Vu
Y29kZXJDb25maWc6OlZwOEVuY29kZXJTcGVjaWZpY1NldHRpbmdzPih2cDhfc2V0dGluZ3MpOwog
ICB9Ci0gIGlmIChDb2RlY05hbWVzRXEoY29kZWMubmFtZSwga1ZwOUNvZGVjTmFtZSkpIHsKKyAg
aWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwga1ZwOUNvZGVjTmFtZSkpIHsK
ICAgICB3ZWJydGM6OlZpZGVvQ29kZWNWUDkgdnA5X3NldHRpbmdzID0KICAgICAgICAgd2VicnRj
OjpWaWRlb0VuY29kZXI6OkdldERlZmF1bHRWcDlTZXR0aW5ncygpOwogICAgIGNvbnN0IHNpemVf
dCBkZWZhdWx0X251bV9zcGF0aWFsX2xheWVycyA9CkBAIC00MzYsMjAgKzQzNywyNiBAQCB2b2lk
IERlZmF1bHRVbnNpZ25hbGxlZFNzcmNIYW5kbGVyOjpTZXREZWZhdWx0U2luaygKICNpZiBkZWZp
bmVkKFVTRV9CVUlMVElOX1NXX0NPREVDUykKIFdlYlJ0Y1ZpZGVvRW5naW5lOjpXZWJSdGNWaWRl
b0VuZ2luZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeT4g
ZXh0ZXJuYWxfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJS
dGNWaWRlb0RlY29kZXJGYWN0b3J5PiBleHRlcm5hbF92aWRlb19kZWNvZGVyX2ZhY3RvcnkpCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnk+IGV4dGVybmFsX3Zp
ZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0Jp
dHJhdGVBbGxvY2F0b3JGYWN0b3J5PgorICAgICAgICB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9m
YWN0b3J5KQogICAgIDogZGVjb2Rlcl9mYWN0b3J5XyhDb252ZXJ0VmlkZW9EZWNvZGVyRmFjdG9y
eSgKICAgICAgICAgICBzdGQ6Om1vdmUoZXh0ZXJuYWxfdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSkp
LAogICAgICAgZW5jb2Rlcl9mYWN0b3J5XyhDb252ZXJ0VmlkZW9FbmNvZGVyRmFjdG9yeSgKLSAg
ICAgICAgICBzdGQ6Om1vdmUoZXh0ZXJuYWxfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSkpIHsKKyAg
ICAgICAgICBzdGQ6Om1vdmUoZXh0ZXJuYWxfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSkpLAorICAg
ICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8oc3RkOjptb3ZlKHZpZGVvX2JpdHJhdGVfYWxs
b2NhdG9yX2ZhY3RvcnkpKSB7CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIldlYlJ0Y1ZpZGVvRW5n
aW5lOjpXZWJSdGNWaWRlb0VuZ2luZSgpIjsKIH0KICNlbmRpZgogCiBXZWJSdGNWaWRlb0VuZ2lu
ZTo6V2ViUnRjVmlkZW9FbmdpbmUoCiAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9F
bmNvZGVyRmFjdG9yeT4gdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHN0ZDo6dW5pcXVlX3B0
cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IHZpZGVvX2RlY29kZXJfZmFjdG9yeSkKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiB2aWRlb19kZWNv
ZGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxs
b2NhdG9yRmFjdG9yeT4KKyAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkK
ICAgICA6IGRlY29kZXJfZmFjdG9yeV8oc3RkOjptb3ZlKHZpZGVvX2RlY29kZXJfZmFjdG9yeSkp
LAotICAgICAgZW5jb2Rlcl9mYWN0b3J5XyhzdGQ6Om1vdmUodmlkZW9fZW5jb2Rlcl9mYWN0b3J5
KSkgeworICAgICAgZW5jb2Rlcl9mYWN0b3J5XyhzdGQ6Om1vdmUodmlkZW9fZW5jb2Rlcl9mYWN0
b3J5KSksCisgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XyhzdGQ6Om1vdmUodmlkZW9f
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkpIHsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiV2Vi
UnRjVmlkZW9FbmdpbmU6OldlYlJ0Y1ZpZGVvRW5naW5lKCkiOwogfQogCkBAIC00NTcsMTUgKzQ2
NCwxNiBAQCBXZWJSdGNWaWRlb0VuZ2luZTo6fldlYlJ0Y1ZpZGVvRW5naW5lKCkgewogICBSVENf
TE9HKExTX0lORk8pIDw8ICJXZWJSdGNWaWRlb0VuZ2luZTo6fldlYlJ0Y1ZpZGVvRW5naW5lIjsK
IH0KIAotV2ViUnRjVmlkZW9DaGFubmVsKiBXZWJSdGNWaWRlb0VuZ2luZTo6Q3JlYXRlQ2hhbm5l
bCgKK1ZpZGVvTWVkaWFDaGFubmVsKiBXZWJSdGNWaWRlb0VuZ2luZTo6Q3JlYXRlTWVkaWFDaGFu
bmVsKAogICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29u
ZmlnLAotICAgIGNvbnN0IFZpZGVvT3B0aW9ucyYgb3B0aW9ucykgewotICBSVENfTE9HKExTX0lO
Rk8pIDw8ICJDcmVhdGVDaGFubmVsLiBPcHRpb25zOiAiIDw8IG9wdGlvbnMuVG9TdHJpbmcoKTsK
LSAgcmV0dXJuIG5ldyBXZWJSdGNWaWRlb0NoYW5uZWwoY2FsbCwgY29uZmlnLCBvcHRpb25zLCBl
bmNvZGVyX2ZhY3RvcnlfLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWNvZGVyX2ZhY3RvcnlfLmdldCgpKTsKKyAgICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMs
CisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykgeworICBS
VENfTE9HKExTX0lORk8pIDw8ICJDcmVhdGVNZWRpYUNoYW5uZWwuIE9wdGlvbnM6ICIgPDwgb3B0
aW9ucy5Ub1N0cmluZygpOworICByZXR1cm4gbmV3IFdlYlJ0Y1ZpZGVvQ2hhbm5lbChjYWxsLCBj
b25maWcsIG9wdGlvbnMsIGNyeXB0b19vcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbmNvZGVyX2ZhY3RvcnlfLmdldCgpLCBkZWNvZGVyX2ZhY3RvcnlfLmdldCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5
Xy5nZXQoKSk7CiB9Ci0KIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IFdlYlJ0Y1ZpZGVvRW5naW5l
Ojpjb2RlY3MoKSBjb25zdCB7CiAgIHJldHVybiBBc3NpZ25QYXlsb2FkVHlwZXNBbmREZWZhdWx0
Q29kZWNzKGVuY29kZXJfZmFjdG9yeV8uZ2V0KCkpOwogfQpAQCAtNDk2LDYgKzUwNCwxMSBAQCBS
dHBDYXBhYmlsaXRpZXMgV2ViUnRjVmlkZW9FbmdpbmU6OkdldENhcGFiaWxpdGllcygpIGNvbnN0
IHsKICAgY2FwYWJpbGl0aWVzLmhlYWRlcl9leHRlbnNpb25zLnB1c2hfYmFjaygKICAgICAgIHdl
YnJ0Yzo6UnRwRXh0ZW5zaW9uKHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjprRnJhbWVNYXJraW5nVXJp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb246OmtGcmFt
ZU1hcmtpbmdEZWZhdWx0SWQpKTsKKyAgaWYgKHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxl
ZCgiV2ViUlRDLUdlbmVyaWNEZXNjcmlwdG9yQWR2ZXJ0aXNlZCIpKSB7CisgICAgY2FwYWJpbGl0
aWVzLmhlYWRlcl9leHRlbnNpb25zLnB1c2hfYmFjayh3ZWJydGM6OlJ0cEV4dGVuc2lvbigKKyAg
ICAgICAgd2VicnRjOjpSdHBFeHRlbnNpb246OmtHZW5lcmljRnJhbWVEZXNjcmlwdG9yVXJpLAor
ICAgICAgICB3ZWJydGM6OlJ0cEV4dGVuc2lvbjo6a0dlbmVyaWNGcmFtZURlc2NyaXB0b3JEZWZh
dWx0SWQpKTsKKyAgfQogICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy80MDUwKTogQWRkIE1JRCBo
ZWFkZXIgZXh0ZW5zaW9uIGFzIGNhcGFiaWxpdHkgb25jZSBNSUQKICAgLy8gZGVtdXhpbmcgaXMg
Y29tcGxldGVkLgogICAvLyBjYXBhYmlsaXRpZXMuaGVhZGVyX2V4dGVuc2lvbnMucHVzaF9iYWNr
KHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uKApAQCAtNTA3LDE2ICs1MjAsMjMgQEAgV2ViUnRjVmlkZW9D
aGFubmVsOjpXZWJSdGNWaWRlb0NoYW5uZWwoCiAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAogICAg
IGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCiAgICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRp
b25zLAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCiAg
ICAgd2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5KiBlbmNvZGVyX2ZhY3RvcnksCi0gICAgd2Vi
cnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5KiBkZWNvZGVyX2ZhY3RvcnkpCisgICAgd2VicnRjOjpW
aWRlb0RlY29kZXJGYWN0b3J5KiBkZWNvZGVyX2ZhY3RvcnksCisgICAgd2VicnRjOjpWaWRlb0Jp
dHJhdGVBbGxvY2F0b3JGYWN0b3J5KiBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KQogICAgIDog
VmlkZW9NZWRpYUNoYW5uZWwoY29uZmlnKSwKICAgICAgIGNhbGxfKGNhbGwpLAogICAgICAgdW5z
aWduYWxsZWRfc3NyY19oYW5kbGVyXygmZGVmYXVsdF91bnNpZ25hbGxlZF9zc3JjX2hhbmRsZXJf
KSwKICAgICAgIHZpZGVvX2NvbmZpZ18oY29uZmlnLnZpZGVvKSwKICAgICAgIGVuY29kZXJfZmFj
dG9yeV8oZW5jb2Rlcl9mYWN0b3J5KSwKICAgICAgIGRlY29kZXJfZmFjdG9yeV8oZGVjb2Rlcl9m
YWN0b3J5KSwKKyAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfKGJpdHJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnkpLAorICAgICAgcHJlZmVycmVkX2RzY3BfKHJ0Yzo6RFNDUF9ERUZBVUxUKSwK
ICAgICAgIGRlZmF1bHRfc2VuZF9vcHRpb25zXyhvcHRpb25zKSwKLSAgICAgIGxhc3Rfc3RhdHNf
bG9nX21zXygtMSkgeworICAgICAgbGFzdF9zdGF0c19sb2dfbXNfKC0xKSwKKyAgICAgIGRpc2Nh
cmRfdW5rbm93bl9zc3JjX3BhY2tldHNfKHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgK
KyAgICAgICAgICAiV2ViUlRDLVZpZGVvLURpc2NhcmRQYWNrZXRzV2l0aFVua25vd25Tc3JjIikp
LAorICAgICAgY3J5cHRvX29wdGlvbnNfKGNyeXB0b19vcHRpb25zKSB7CiAgIFJUQ19EQ0hFQ0so
dGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAKICAgcnRjcF9yZWNlaXZl
cl9yZXBvcnRfc3NyY18gPSBrRGVmYXVsdFJ0Y3BSZWNlaXZlclJlcG9ydFNzcmM7CkBAIC02MTIs
NiArNjMyLDkgQEAgYm9vbCBXZWJSdGNWaWRlb0NoYW5uZWw6OkdldENoYW5nZWRTZW5kUGFyYW1l
dGVycygKICAgICBjaGFuZ2VkX3BhcmFtcy0+Y29kZWMgPSBzZWxlY3RlZF9zZW5kX2NvZGVjOwog
CiAgIC8vIEhhbmRsZSBSVFAgaGVhZGVyIGV4dGVuc2lvbnMuCisgIGlmIChwYXJhbXMuZXh0bWFw
X2FsbG93X21peGVkICE9IEV4dG1hcEFsbG93TWl4ZWQoKSkgeworICAgIGNoYW5nZWRfcGFyYW1z
LT5leHRtYXBfYWxsb3dfbWl4ZWQgPSBwYXJhbXMuZXh0bWFwX2FsbG93X21peGVkOworICB9CiAg
IHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uPiBmaWx0ZXJlZF9leHRlbnNpb25zID0g
RmlsdGVyUnRwRXh0ZW5zaW9ucygKICAgICAgIHBhcmFtcy5leHRlbnNpb25zLCB3ZWJydGM6OlJ0
cEV4dGVuc2lvbjo6SXNTdXBwb3J0ZWRGb3JWaWRlbywgdHJ1ZSk7CiAgIGlmICghc2VuZF9ydHBf
ZXh0ZW5zaW9uc18gfHwgKCpzZW5kX3J0cF9leHRlbnNpb25zXyAhPSBmaWx0ZXJlZF9leHRlbnNp
b25zKSkgewpAQCAtNjQ5LDcgKzY3Miw3IEBAIGJvb2wgV2ViUnRjVmlkZW9DaGFubmVsOjpHZXRD
aGFuZ2VkU2VuZFBhcmFtZXRlcnMoCiB9CiAKIHJ0Yzo6RGlmZlNlcnZDb2RlUG9pbnQgV2ViUnRj
VmlkZW9DaGFubmVsOjpQcmVmZXJyZWREc2NwKCkgY29uc3QgewotICByZXR1cm4gcnRjOjpEU0NQ
X0FGNDE7CisgIHJldHVybiBwcmVmZXJyZWRfZHNjcF87CiB9CiAKIGJvb2wgV2ViUnRjVmlkZW9D
aGFubmVsOjpTZXRTZW5kUGFyYW1ldGVycyhjb25zdCBWaWRlb1NlbmRQYXJhbWV0ZXJzJiBwYXJh
bXMpIHsKQEAgLTY2Niw2ICs2ODksOSBAQCBib29sIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6U2V0U2Vu
ZFBhcmFtZXRlcnMoY29uc3QgVmlkZW9TZW5kUGFyYW1ldGVycyYgcGFyYW1zKSB7CiAgICAgUlRD
X0xPRyhMU19JTkZPKSA8PCAiVXNpbmcgY29kZWM6ICIgPDwgY29kZWNfc2V0dGluZ3MuY29kZWMu
VG9TdHJpbmcoKTsKICAgfQogCisgIGlmIChjaGFuZ2VkX3BhcmFtcy5leHRtYXBfYWxsb3dfbWl4
ZWQpIHsKKyAgICBTZXRFeHRtYXBBbGxvd01peGVkKCpjaGFuZ2VkX3BhcmFtcy5leHRtYXBfYWxs
b3dfbWl4ZWQpOworICB9CiAgIGlmIChjaGFuZ2VkX3BhcmFtcy5ydHBfaGVhZGVyX2V4dGVuc2lv
bnMpIHsKICAgICBzZW5kX3J0cF9leHRlbnNpb25zXyA9IGNoYW5nZWRfcGFyYW1zLnJ0cF9oZWFk
ZXJfZXh0ZW5zaW9uczsKICAgfQpAQCAtNzY0LDExICs3OTAsMzQgQEAgd2VicnRjOjpSVENFcnJv
ciBXZWJSdGNWaWRlb0NoYW5uZWw6OlNldFJ0cFNlbmRQYXJhbWV0ZXJzKAogICAvLyBkaWZmZXJl
bnQgb3JkZXIgKHdoaWNoIHNob3VsZCBjaGFuZ2UgdGhlIHNlbmQgY29kZWMpLgogICB3ZWJydGM6
OlJ0cFBhcmFtZXRlcnMgY3VycmVudF9wYXJhbWV0ZXJzID0gR2V0UnRwU2VuZFBhcmFtZXRlcnMo
c3NyYyk7CiAgIGlmIChjdXJyZW50X3BhcmFtZXRlcnMuY29kZWNzICE9IHBhcmFtZXRlcnMuY29k
ZWNzKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVzaW5nIFNldFBhcmFtZXRlcnMgdG8g
Y2hhbmdlIHRoZSBzZXQgb2YgY29kZWNzICIKLSAgICAgICAgICAgICAgICAgICAgICA8PCAiaXMg
bm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuIjsKKyAgICBSVENfRExPRyhMU19FUlJPUikgPDwgIlVz
aW5nIFNldFBhcmFtZXRlcnMgdG8gY2hhbmdlIHRoZSBzZXQgb2YgY29kZWNzICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgPDwgImlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLiI7CiAgICAgcmV0
dXJuIHdlYnJ0Yzo6UlRDRXJyb3Iod2VicnRjOjpSVENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9S
KTsKICAgfQogCisgIGlmICghcGFyYW1ldGVycy5lbmNvZGluZ3MuZW1wdHkoKSkgeworICAgIGNv
bnN0IGF1dG8mIHByaW9yaXR5ID0gcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubmV0d29ya19wcmlv
cml0eTsKKyAgICBydGM6OkRpZmZTZXJ2Q29kZVBvaW50IG5ld19kc2NwID0gcnRjOjpEU0NQX0RF
RkFVTFQ7CisgICAgaWYgKHByaW9yaXR5ID09IDAuNSAqIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRl
UHJpb3JpdHkpIHsKKyAgICAgIG5ld19kc2NwID0gcnRjOjpEU0NQX0NTMTsKKyAgICB9IGVsc2Ug
aWYgKHByaW9yaXR5ID09IHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkpIHsKKyAgICAg
IG5ld19kc2NwID0gcnRjOjpEU0NQX0RFRkFVTFQ7CisgICAgfSBlbHNlIGlmIChwcmlvcml0eSA9
PSAyLjAgKiB3ZWJydGM6OmtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5KSB7CisgICAgICBuZXdfZHNj
cCA9IHJ0Yzo6RFNDUF9BRjQyOworICAgIH0gZWxzZSBpZiAocHJpb3JpdHkgPT0gNC4wICogd2Vi
cnRjOjprRGVmYXVsdEJpdHJhdGVQcmlvcml0eSkgeworICAgICAgbmV3X2RzY3AgPSBydGM6OkRT
Q1BfQUY0MTsKKyAgICB9IGVsc2UgeworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVj
ZWl2ZWQgaW52YWxpZCBzZW5kIG5ldHdvcmsgcHJpb3JpdHk6ICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgcHJpb3JpdHk7CisgICAgICByZXR1cm4gd2VicnRjOjpSVENFcnJvcih3ZWJy
dGM6OlJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9SQU5HRSk7CisgICAgfQorCisgICAgaWYgKG5ld19k
c2NwICE9IHByZWZlcnJlZF9kc2NwXykgeworICAgICAgcHJlZmVycmVkX2RzY3BfID0gbmV3X2Rz
Y3A7CisgICAgICBNZWRpYUNoYW5uZWw6OlVwZGF0ZURzY3AoKTsKKyAgICB9CisgIH0KKwogICBy
ZXR1cm4gaXQtPnNlY29uZC0+U2V0UnRwUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKIH0KIApAQCAt
ODMyLDggKzg4MSw4IEBAIGJvb2wgV2ViUnRjVmlkZW9DaGFubmVsOjpTZXRSdHBSZWNlaXZlUGFy
YW1ldGVycygKIAogICB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgY3VycmVudF9wYXJhbWV0ZXJzID0g
R2V0UnRwUmVjZWl2ZVBhcmFtZXRlcnMoc3NyYyk7CiAgIGlmIChjdXJyZW50X3BhcmFtZXRlcnMg
IT0gcGFyYW1ldGVycykgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDaGFuZ2luZyB0aGUg
UlRQIHJlY2VpdmUgcGFyYW1ldGVycyBpcyBjdXJyZW50bHkgIgotICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJ1bnN1cHBvcnRlZC4iOworICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiQ2hhbmdp
bmcgdGhlIFJUUCByZWNlaXZlIHBhcmFtZXRlcnMgaXMgY3VycmVudGx5ICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgPDwgInVuc3VwcG9ydGVkLiI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAg
IHJldHVybiB0cnVlOwpAQCAtOTQ5LDcgKzk5OCw3IEBAIGJvb2wgV2ViUnRjVmlkZW9DaGFubmVs
OjpTZXRTZW5kKGJvb2wgc2VuZCkgewogICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJXZWJSdGNW
aWRlb0NoYW5uZWw6OlNldFNlbmQiKTsKICAgUlRDX0xPRyhMU19WRVJCT1NFKSA8PCAiU2V0U2Vu
ZDogIiA8PCAoc2VuZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICBpZiAoc2VuZCAmJiAhc2VuZF9j
b2RlY18pIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiU2V0U2VuZCh0cnVlKSBjYWxsZWQg
YmVmb3JlIHNldHRpbmcgY29kZWMuIjsKKyAgICBSVENfRExPRyhMU19FUlJPUikgPDwgIlNldFNl
bmQodHJ1ZSkgY2FsbGVkIGJlZm9yZSBzZXR0aW5nIGNvZGVjLiI7CiAgICAgcmV0dXJuIGZhbHNl
OwogICB9CiAgIHsKQEAgLTEwMjgsNiArMTA3NywxMSBAQCBib29sIFdlYlJ0Y1ZpZGVvQ2hhbm5l
bDo6QWRkU2VuZFN0cmVhbShjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSB7CiAgIGNvbmZpZy5lbmNv
ZGVyX3NldHRpbmdzLmV4cGVyaW1lbnRfY3B1X2xvYWRfZXN0aW1hdG9yID0KICAgICAgIHZpZGVv
X2NvbmZpZ18uZXhwZXJpbWVudF9jcHVfbG9hZF9lc3RpbWF0b3I7CiAgIGNvbmZpZy5lbmNvZGVy
X3NldHRpbmdzLmVuY29kZXJfZmFjdG9yeSA9IGVuY29kZXJfZmFjdG9yeV87CisgIGNvbmZpZy5l
bmNvZGVyX3NldHRpbmdzLmJpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkgPQorICAgICAgYml0cmF0
ZV9hbGxvY2F0b3JfZmFjdG9yeV87CisgIGNvbmZpZy5jcnlwdG9fb3B0aW9ucyA9IGNyeXB0b19v
cHRpb25zXzsKKyAgY29uZmlnLnJ0cC5leHRtYXBfYWxsb3dfbWl4ZWQgPSBFeHRtYXBBbGxvd01p
eGVkKCk7CisgIGNvbmZpZy5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9IHZpZGVvX2NvbmZpZ18u
cnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXM7CiAKICAgV2ViUnRjVmlkZW9TZW5kU3RyZWFtKiBzdHJl
YW0gPSBuZXcgV2ViUnRjVmlkZW9TZW5kU3RyZWFtKAogICAgICAgY2FsbF8sIHNwLCBzdGQ6Om1v
dmUoY29uZmlnKSwgZGVmYXVsdF9zZW5kX29wdGlvbnNfLApAQCAtMTE0NCw2ICsxMTk4LDcgQEAg
Ym9vbCBXZWJSdGNWaWRlb0NoYW5uZWw6OkFkZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1z
JiBzcCwKICAgd2VicnRjOjpGbGV4ZmVjUmVjZWl2ZVN0cmVhbTo6Q29uZmlnIGZsZXhmZWNfY29u
ZmlnKHRoaXMpOwogICBDb25maWd1cmVSZWNlaXZlclJ0cCgmY29uZmlnLCAmZmxleGZlY19jb25m
aWcsIHNwKTsKIAorICBjb25maWcuY3J5cHRvX29wdGlvbnMgPSBjcnlwdG9fb3B0aW9uc187CiAg
IC8vIFRPRE8obmlzc2UpOiBSZW5hbWUgY29uZmlnIHZhcmlhYmxlIHRvIGF2b2lkIG5lZ2F0aW9u
LgogICBjb25maWcuZGlzYWJsZV9wcmVyZW5kZXJlcl9zbW9vdGhpbmcgPQogICAgICAgIXZpZGVv
X2NvbmZpZ18uZW5hYmxlX3ByZXJlbmRlcmVyX3Ntb290aGluZzsKQEAgLTEzMzIsMTAgKzEzODcs
MTAgQEAgdm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6OkZpbGxTZW5kQW5kUmVjZWl2ZUNvZGVjU3Rh
dHMoCiB9CiAKIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpPblBhY2tldFJlY2VpdmVkKHJ0Yzo6
Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVf
dXMpIHsKICAgY29uc3Qgd2VicnRjOjpQYWNrZXRSZWNlaXZlcjo6RGVsaXZlcnlTdGF0dXMgZGVs
aXZlcnlfcmVzdWx0ID0KICAgICAgIGNhbGxfLT5SZWNlaXZlcigpLT5EZWxpdmVyUGFja2V0KHdl
YnJ0Yzo6TWVkaWFUeXBlOjpWSURFTywgKnBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhY2tldF90aW1lLnRpbWVzdGFtcCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdGltZV91cyk7CiAgIHN3aXRjaCAoZGVsaXZl
cnlfcmVzdWx0KSB7CiAgICAgY2FzZSB3ZWJydGM6OlBhY2tldFJlY2VpdmVyOjpERUxJVkVSWV9P
SzoKICAgICAgIHJldHVybjsKQEAgLTEzNDUsNiArMTQwMCwxMCBAQCB2b2lkIFdlYlJ0Y1ZpZGVv
Q2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQs
CiAgICAgICBicmVhazsKICAgfQogCisgIGlmIChkaXNjYXJkX3Vua25vd25fc3NyY19wYWNrZXRz
XykgeworICAgIHJldHVybjsKKyAgfQorCiAgIHVpbnQzMl90IHNzcmMgPSAwOwogICBpZiAoIUdl
dFJ0cFNzcmMocGFja2V0LT5jZGF0YSgpLCBwYWNrZXQtPnNpemUoKSwgJnNzcmMpKSB7CiAgICAg
cmV0dXJuOwpAQCAtMTM3OSw3ICsxNDM4LDcgQEAgdm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6Ok9u
UGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAogICB9CiAKICAg
aWYgKGNhbGxfLT5SZWNlaXZlcigpLT5EZWxpdmVyUGFja2V0KHdlYnJ0Yzo6TWVkaWFUeXBlOjpW
SURFTywgKnBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
Y2tldF90aW1lLnRpbWVzdGFtcCkgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhY2tldF90aW1lX3VzKSAhPQogICAgICAgd2VicnRjOjpQYWNrZXRSZWNlaXZlcjo6
REVMSVZFUllfT0spIHsKICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gZGVs
aXZlciBSVFAgcGFja2V0IG9uIHJlLWRlbGl2ZXJ5LiI7CiAgICAgcmV0dXJuOwpAQCAtMTM4Nywx
MyArMTQ0NiwxMyBAQCB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZChy
dGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCiB9CiAKIHZvaWQgV2ViUnRjVmlkZW9DaGFu
bmVsOjpPblJ0Y3BSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1l
JiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgLy8gVE9ETyhwYm9zKTogQ2hlY2sgd2VicnRj
OjpQYWNrZXRSZWNlaXZlcjo6REVMSVZFUllfT0sgb25jZSB3ZSBkZWxpdmVyCiAgIC8vIGZvciBi
b3RoIGF1ZGlvIGFuZCB2aWRlbyBvbiB0aGUgc2FtZSBwYXRoLiBTaW5jZSBCdW5kbGVGaWx0ZXIg
ZG9lc24ndAogICAvLyBmaWx0ZXIgUlRDUCBhbnltb3JlIGluY29taW5nIFJUQ1AgcGFja2V0cyBj
b3VsZCd2ZSBiZWVuIGdvaW5nIHRvIGF1ZGlvIChzbwogICAvLyBsb2dnaW5nIGZhaWx1cmVzIHNw
YW0gdGhlIGxvZykuCiAgIGNhbGxfLT5SZWNlaXZlcigpLT5EZWxpdmVyUGFja2V0KHdlYnJ0Yzo6
TWVkaWFUeXBlOjpWSURFTywgKnBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFja2V0X3RpbWUudGltZXN0YW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6
T25SZWFkeVRvU2VuZChib29sIHJlYWR5KSB7CkBAIC0xNDEyLDMxICsxNDcxLDQ2IEBAIHZvaWQg
V2ViUnRjVmlkZW9DaGFubmVsOjpPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCiAgICAgICBuZXR3b3Jr
X3JvdXRlLnBhY2tldF9vdmVyaGVhZCk7CiB9CiAKLXZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpT
ZXRJbnRlcmZhY2UoTmV0d29ya0ludGVyZmFjZSogaWZhY2UpIHsKLSAgTWVkaWFDaGFubmVsOjpT
ZXRJbnRlcmZhY2UoaWZhY2UpOwordm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6OlNldEludGVyZmFj
ZSgKKyAgICBOZXR3b3JrSW50ZXJmYWNlKiBpZmFjZSwKKyAgICB3ZWJydGM6Ok1lZGlhVHJhbnNw
b3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQpIHsKKyAgLy8gVE9ETyhzdWtoYW5vdik6IFZp
ZGVvIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIHdpdGggbWVkaWEgdHJhbnNwb3J0LgorICBS
VENfQ0hFQ0sobWVkaWFfdHJhbnNwb3J0ID09IG51bGxwdHIpOworCisgIE1lZGlhQ2hhbm5lbDo6
U2V0SW50ZXJmYWNlKGlmYWNlLCBtZWRpYV90cmFuc3BvcnQpOwogICAvLyBTZXQgdGhlIFJUUCBy
ZWN2L3NlbmQgYnVmZmVyIHRvIGEgYmlnZ2VyIHNpemUuCiAKLSAgLy8gVGhlIGdyb3VwIGhlcmUg
Y2FuIGJlIGVpdGhlciBhIHBvc2l0aXZlIGludGVnZXIgd2l0aCBhbiBleHBsaWNpdCBzaXplLCBp
bgotICAvLyB3aGljaCBjYXNlIHRoYXQgaXMgdXNlZCBhcyBzaXplLiBBbGwgb3RoZXIgdmFsdWVz
IHNoYWxsIHJlc3VsdCBpbiB0aGUKLSAgLy8gZGVmYXVsdCB2YWx1ZSBiZWluZyB1c2VkLgotICBj
b25zdCBzdGQ6OnN0cmluZyBncm91cF9uYW1lID0KLSAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6
OkZpbmRGdWxsTmFtZSgiV2ViUlRDLUluY3JlYXNlZFJlY2VpdmVidWZmZXJzIik7Ci0gIGludCBy
ZWN2X2J1ZmZlcl9zaXplID0ga1ZpZGVvUnRwQnVmZmVyU2l6ZTsKLSAgaWYgKCFncm91cF9uYW1l
LmVtcHR5KCkgJiYKLSAgICAgIChzc2NhbmYoZ3JvdXBfbmFtZS5jX3N0cigpLCAiJWQiLCAmcmVj
dl9idWZmZXJfc2l6ZSkgIT0gMSB8fAotICAgICAgIHJlY3ZfYnVmZmVyX3NpemUgPD0gMCkpIHsK
LSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJJbnZhbGlkIHJlY2VpdmUgYnVmZmVyIHNpemU6
ICIgPDwgZ3JvdXBfbmFtZTsKLSAgICByZWN2X2J1ZmZlcl9zaXplID0ga1ZpZGVvUnRwQnVmZmVy
U2l6ZTsKLSAgfQogICBNZWRpYUNoYW5uZWw6OlNldE9wdGlvbihOZXR3b3JrSW50ZXJmYWNlOjpT
VF9SVFAsIHJ0Yzo6U29ja2V0OjpPUFRfUkNWQlVGLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWN2X2J1ZmZlcl9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAga1ZpZGVvUnRw
UmVjdkJ1ZmZlclNpemUpOwogCiAgIC8vIFNwZWN1bGF0aXZlIGNoYW5nZSB0byBpbmNyZWFzZSB0
aGUgb3V0Ym91bmQgc29ja2V0IGJ1ZmZlciBzaXplLgogICAvLyBJbiBiLzE1MTUyMjU3LCB3ZSBh
cmUgc2VlaW5nIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIHBhY2tldHMgZGlzY2FyZGVkCiAgIC8v
IGR1ZSB0byBsYWNrIG9mIHNvY2tldCBidWZmZXIgc3BhY2UsIGFsdGhvdWdoIGl0J3Mgbm90IHll
dCBjbGVhciB3aGF0IHRoZQogICAvLyBpZGVhbCB2YWx1ZSBzaG91bGQgYmUuCiAgIE1lZGlhQ2hh
bm5lbDo6U2V0T3B0aW9uKE5ldHdvcmtJbnRlcmZhY2U6OlNUX1JUUCwgcnRjOjpTb2NrZXQ6Ok9Q
VF9TTkRCVUYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGtWaWRlb1J0cEJ1ZmZlclNpemUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICBrVmlkZW9SdHBTZW5kQnVmZmVyU2l6ZSk7Cit9
CisKK3ZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpTZXRGcmFtZURlY3J5cHRvcigKKyAgICB1aW50
MzJfdCBzc3JjLAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRGVjcnlwdG9y
SW50ZXJmYWNlPiBmcmFtZV9kZWNyeXB0b3IpIHsKKyAgcnRjOjpDcml0U2NvcGUgc3RyZWFtX2xv
Y2soJnN0cmVhbV9jcml0Xyk7CisgIGF1dG8gbWF0Y2hpbmdfc3RyZWFtID0gcmVjZWl2ZV9zdHJl
YW1zXy5maW5kKHNzcmMpOworICBpZiAobWF0Y2hpbmdfc3RyZWFtICE9IHJlY2VpdmVfc3RyZWFt
c18uZW5kKCkpIHsKKyAgICBtYXRjaGluZ19zdHJlYW0tPnNlY29uZC0+U2V0RnJhbWVEZWNyeXB0
b3IoZnJhbWVfZGVjcnlwdG9yKTsKKyAgfQorfQorCit2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6
U2V0RnJhbWVFbmNyeXB0b3IoCisgICAgdWludDMyX3Qgc3NyYywKKyAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yKSB7
CisgIHJ0Yzo6Q3JpdFNjb3BlIHN0cmVhbV9sb2NrKCZzdHJlYW1fY3JpdF8pOworICBhdXRvIG1h
dGNoaW5nX3N0cmVhbSA9IHNlbmRfc3RyZWFtc18uZmluZChzc3JjKTsKKyAgaWYgKG1hdGNoaW5n
X3N0cmVhbSAhPSBzZW5kX3N0cmVhbXNfLmVuZCgpKSB7CisgICAgbWF0Y2hpbmdfc3RyZWFtLT5z
ZWNvbmQtPlNldEZyYW1lRW5jcnlwdG9yKGZyYW1lX2VuY3J5cHRvcik7CisgIH0gZWxzZSB7Cisg
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIk5vIHN0cmVhbSBmb3VuZCB0byBhdHRhY2ggZnJhbWUg
ZW5jcnlwdG9yIjsKKyAgfQogfQogCiBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gV2ViUnRjVmlk
ZW9DaGFubmVsOjpHZXREZWZhdWx0UmVjZWl2ZVN0cmVhbVNzcmMoKSB7CkBAIC0xNDc0LDYgKzE1
NDgsMTAgQEAgYm9vbCBXZWJSdGNWaWRlb0NoYW5uZWw6OlNlbmRSdHAoY29uc3QgdWludDhfdCog
ZGF0YSwKICAgaWYgKERzY3BFbmFibGVkKCkpIHsKICAgICBydGNfb3B0aW9ucy5kc2NwID0gUHJl
ZmVycmVkRHNjcCgpOwogICB9CisgIHJ0Y19vcHRpb25zLmluZm9fc2lnbmFsZWRfYWZ0ZXJfc2Vu
dC5pbmNsdWRlZF9pbl9mZWVkYmFjayA9CisgICAgICBvcHRpb25zLmluY2x1ZGVkX2luX2ZlZWRi
YWNrOworICBydGNfb3B0aW9ucy5pbmZvX3NpZ25hbGVkX2FmdGVyX3NlbnQuaW5jbHVkZWRfaW5f
YWxsb2NhdGlvbiA9CisgICAgICBvcHRpb25zLmluY2x1ZGVkX2luX2FsbG9jYXRpb247CiAgIHJl
dHVybiBNZWRpYUNoYW5uZWw6OlNlbmRQYWNrZXQoJnBhY2tldCwgcnRjX29wdGlvbnMpOwogfQog
CkBAIC0xNDgzLDYgKzE1NjEsNyBAQCBib29sIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6U2VuZFJ0Y3Ao
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbikgewogICBpZiAoRHNjcEVuYWJsZWQoKSkg
ewogICAgIHJ0Y19vcHRpb25zLmRzY3AgPSBQcmVmZXJyZWREc2NwKCk7CiAgIH0KKwogICByZXR1
cm4gTWVkaWFDaGFubmVsOjpTZW5kUnRjcCgmcGFja2V0LCBydGNfb3B0aW9ucyk7CiB9CiAKQEAg
LTE1NjksNyArMTY0OCw2IEBAIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9TZW5kU3Ry
ZWFtOjpXZWJSdGNWaWRlb1NlbmRTdHJlYW0oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID8gd2VicnRjOjpSdGNwTW9kZTo6a1JlZHVjZWRTaXplCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogd2VicnRjOjpSdGNwTW9kZTo6a0NvbXBv
dW5kOwogICBwYXJhbWV0ZXJzXy5jb25maWcucnRwLm1pZCA9IHNlbmRfcGFyYW1zLm1pZDsKLQog
ICBydHBfcGFyYW1ldGVyc18ucnRjcC5yZWR1Y2VkX3NpemUgPSBzZW5kX3BhcmFtcy5ydGNwLnJl
ZHVjZWRfc2l6ZTsKIAogICBpZiAoY29kZWNfc2V0dGluZ3MpIHsKQEAgLTE2OTksNiArMTc3Nywx
MCBAQCB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9TZW5kU3RyZWFtOjpTZXRT
ZW5kUGFyYW1ldGVycygKICAgICAgICAgcGFyYW1ldGVyc18uY29uZmlnLnJ0cC5ydGNwX21vZGUg
PT0gd2VicnRjOjpSdGNwTW9kZTo6a1JlZHVjZWRTaXplOwogICAgIHJlY3JlYXRlX3N0cmVhbSA9
IHRydWU7CiAgIH0KKyAgaWYgKHBhcmFtcy5leHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICBwYXJh
bWV0ZXJzXy5jb25maWcucnRwLmV4dG1hcF9hbGxvd19taXhlZCA9ICpwYXJhbXMuZXh0bWFwX2Fs
bG93X21peGVkOworICAgIHJlY3JlYXRlX3N0cmVhbSA9IHRydWU7CisgIH0KICAgaWYgKHBhcmFt
cy5ydHBfaGVhZGVyX2V4dGVuc2lvbnMpIHsKICAgICBwYXJhbWV0ZXJzXy5jb25maWcucnRwLmV4
dGVuc2lvbnMgPSAqcGFyYW1zLnJ0cF9oZWFkZXJfZXh0ZW5zaW9uczsKICAgICBydHBfcGFyYW1l
dGVyc18uaGVhZGVyX2V4dGVuc2lvbnMgPSAqcGFyYW1zLnJ0cF9oZWFkZXJfZXh0ZW5zaW9uczsK
QEAgLTE3OTksNiArMTg4MSwxNSBAQCBXZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvU2Vu
ZFN0cmVhbTo6R2V0UnRwUGFyYW1ldGVycygpIGNvbnN0IHsKICAgcmV0dXJuIHJ0cF9wYXJhbWV0
ZXJzXzsKIH0KIAordm9pZCBXZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvU2VuZFN0cmVh
bTo6U2V0RnJhbWVFbmNyeXB0b3IoCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RnJh
bWVFbmNyeXB0b3JJbnRlcmZhY2U+IGZyYW1lX2VuY3J5cHRvcikgeworICBSVENfRENIRUNLX1JV
Tl9PTigmdGhyZWFkX2NoZWNrZXJfKTsKKyAgcGFyYW1ldGVyc18uY29uZmlnLmZyYW1lX2VuY3J5
cHRvciA9IGZyYW1lX2VuY3J5cHRvcjsKKyAgaWYgKHN0cmVhbV8pIHsKKyAgICBSZWNyZWF0ZVdl
YlJ0Y1N0cmVhbSgpOworICB9Cit9CisKIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNW
aWRlb1NlbmRTdHJlYW06OlVwZGF0ZVNlbmRTdGF0ZSgpIHsKICAgUlRDX0RDSEVDS19SVU5fT04o
JnRocmVhZF9jaGVja2VyXyk7CiAgIGlmIChzZW5kaW5nXykgewpAQCAtMjE2MSwyNiArMjI1Miwy
MCBAQCBXZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvUmVjZWl2ZVN0cmVhbTo6R2V0U291
cmNlcygpIHsKICAgcmV0dXJuIHN0cmVhbV8tPkdldFNvdXJjZXMoKTsKIH0KIAotYWJzbDo6b3B0
aW9uYWw8dWludDMyX3Q+Ci1XZWJSdGNWaWRlb0NoYW5uZWw6OldlYlJ0Y1ZpZGVvUmVjZWl2ZVN0
cmVhbTo6R2V0Rmlyc3RQcmltYXJ5U3NyYygpIGNvbnN0IHsKK3dlYnJ0Yzo6UnRwUGFyYW1ldGVy
cworV2ViUnRjVmlkZW9DaGFubmVsOjpXZWJSdGNWaWRlb1JlY2VpdmVTdHJlYW06OkdldFJ0cFBh
cmFtZXRlcnMoKSBjb25zdCB7CisgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBydHBfcGFyYW1ldGVy
czsKKwogICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gcHJpbWFyeV9zc3JjczsKICAgc3RyZWFtX3Bh
cmFtc18uR2V0UHJpbWFyeVNzcmNzKCZwcmltYXJ5X3NzcmNzKTsKLQotICBpZiAocHJpbWFyeV9z
c3Jjcy5lbXB0eSgpKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKQotICAgICAgICA8PCAiRW1w
dHkgcHJpbWFyeSBzc3JjcyB2ZWN0b3IsIHJldHVybmluZyBlbXB0eSBvcHRpb25hbCI7Ci0gICAg
cmV0dXJuIGFic2w6Om51bGxvcHQ7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIHByaW1hcnlfc3Ny
Y3NbMF07CisgIGZvciAodWludDMyX3Qgc3NyYyA6IHByaW1hcnlfc3NyY3MpIHsKKyAgICBydHBf
cGFyYW1ldGVycy5lbmNvZGluZ3MuZW1wbGFjZV9iYWNrKCk7CisgICAgcnRwX3BhcmFtZXRlcnMu
ZW5jb2RpbmdzLmJhY2soKS5zc3JjID0gc3NyYzsKICAgfQotfQogCi13ZWJydGM6OlJ0cFBhcmFt
ZXRlcnMKLVdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9SZWNlaXZlU3RyZWFtOjpHZXRS
dHBQYXJhbWV0ZXJzKCkgY29uc3QgewotICB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgcnRwX3BhcmFt
ZXRlcnM7Ci0gIHJ0cF9wYXJhbWV0ZXJzLmVuY29kaW5ncy5lbXBsYWNlX2JhY2soKTsKLSAgcnRw
X3BhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnNzcmMgPSBHZXRGaXJzdFByaW1hcnlTc3JjKCk7CiAg
IHJ0cF9wYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zID0gY29uZmlnXy5ydHAuZXh0ZW5zaW9u
czsKKyAgcnRwX3BhcmFtZXRlcnMucnRjcC5yZWR1Y2VkX3NpemUgPQorICAgICAgY29uZmlnXy5y
dHAucnRjcF9tb2RlID09IHdlYnJ0Yzo6UnRjcE1vZGU6OmtSZWR1Y2VkU2l6ZTsKIAogICByZXR1
cm4gcnRwX3BhcmFtZXRlcnM7CiB9CkBAIC0yMjMwLDkgKzIzMTUsOSBAQCB2b2lkIFdlYlJ0Y1Zp
ZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9SZWNlaXZlU3RyZWFtOjpTZXRMb2NhbFNzcmMoCiAgIC8v
IHJpZ2h0IG5vdyB0aGlzIGNhbid0IGJlIGRvbmUgZHVlIHRvIHVuaXR0ZXN0cyBkZXBlbmRpbmcg
b24gcmVjZWl2aW5nIHdoYXQKICAgLy8gdGhleSBhcmUgc2VuZGluZyBmcm9tIHRoZSBzYW1lIE1l
ZGlhQ2hhbm5lbC4KICAgaWYgKGxvY2FsX3NzcmMgPT0gY29uZmlnXy5ydHAubG9jYWxfc3NyYykg
ewotICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIklnbm9yaW5nIGNhbGwgdG8gU2V0TG9jYWxTc3Jj
IGJlY2F1c2UgcGFyYW1ldGVycyBhcmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgInVuY2hh
bmdlZDsgbG9jYWxfc3NyYz0iCi0gICAgICAgICAgICAgICAgICAgICA8PCBsb2NhbF9zc3JjOwor
ICAgIFJUQ19ETE9HKExTX0lORk8pIDw8ICJJZ25vcmluZyBjYWxsIHRvIFNldExvY2FsU3NyYyBi
ZWNhdXNlIHBhcmFtZXRlcnMgYXJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAidW5jaGFu
Z2VkOyBsb2NhbF9zc3JjPSIKKyAgICAgICAgICAgICAgICAgICAgICA8PCBsb2NhbF9zc3JjOwog
ICAgIHJldHVybjsKICAgfQogCkBAIC0yMzcyLDYgKzI0NTcsMTQgQEAgYm9vbCBXZWJSdGNWaWRl
b0NoYW5uZWw6OldlYlJ0Y1ZpZGVvUmVjZWl2ZVN0cmVhbTo6SXNEZWZhdWx0U3RyZWFtKCkgY29u
c3QgewogICByZXR1cm4gZGVmYXVsdF9zdHJlYW1fOwogfQogCit2b2lkIFdlYlJ0Y1ZpZGVvQ2hh
bm5lbDo6V2ViUnRjVmlkZW9SZWNlaXZlU3RyZWFtOjpTZXRGcmFtZURlY3J5cHRvcigKKyAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVf
ZGVjcnlwdG9yKSB7CisgIGNvbmZpZ18uZnJhbWVfZGVjcnlwdG9yID0gZnJhbWVfZGVjcnlwdG9y
OworICBpZiAoc3RyZWFtXykgeworICAgIFJlY3JlYXRlV2ViUnRjVmlkZW9TdHJlYW0oKTsKKyAg
fQorfQorCiB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbDo6V2ViUnRjVmlkZW9SZWNlaXZlU3RyZWFt
OjpTZXRTaW5rKAogICAgIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFt
ZT4qIHNpbmspIHsKICAgcnRjOjpDcml0U2NvcGUgY3JpdCgmc2lua19sb2NrXyk7CkBAIC0yNjA3
LDEwICsyNzAwLDExIEBAIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6VmlkZW9TdHJlYW0+IEVuY29kZXJT
dHJlYW1GYWN0b3J5OjpDcmVhdGVFbmNvZGVyU3RyZWFtcygKICAgc3RkOjp2ZWN0b3I8d2VicnRj
OjpWaWRlb1N0cmVhbT4gbGF5ZXJzOwogCiAgIGlmIChlbmNvZGVyX2NvbmZpZy5udW1iZXJfb2Zf
c3RyZWFtcyA+IDEgfHwKLSAgICAgKChDb2RlY05hbWVzRXEoY29kZWNfbmFtZV8sIGtWcDhDb2Rl
Y05hbWUpIHx8Ci0gICAgICAgIENvZGVjTmFtZXNFcShjb2RlY19uYW1lXywga0gyNjRDb2RlY05h
bWUpKSAmJgorICAgICAgKChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjX25hbWVfLCBrVnA4
Q29kZWNOYW1lKSB8fAorICAgICAgICBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjX25hbWVf
LCBrSDI2NENvZGVjTmFtZSkpICYmCiAgICAgICAgaXNfc2NyZWVuc2hhcmVfICYmIHNjcmVlbnNo
YXJlX2NvbmZpZ19leHBsaWNpdGx5X2VuYWJsZWRfKSkgewotICAgIGJvb2wgdGVtcG9yYWxfbGF5
ZXJzX3N1cHBvcnRlZCA9IENvZGVjTmFtZXNFcShjb2RlY19uYW1lXywga1ZwOENvZGVjTmFtZSk7
CisgICAgYm9vbCB0ZW1wb3JhbF9sYXllcnNfc3VwcG9ydGVkID0KKyAgICAgICAgYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShjb2RlY19uYW1lXywga1ZwOENvZGVjTmFtZSk7CiAgICAgbGF5ZXJzID0g
R2V0U2ltdWxjYXN0Q29uZmlnKGVuY29kZXJfY29uZmlnLm51bWJlcl9vZl9zdHJlYW1zLCB3aWR0
aCwgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qbm90IHVzZWQq
LywgZW5jb2Rlcl9jb25maWcuYml0cmF0ZV9wcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF4X3FwXywgMCAvKm5vdF91c2VkKi8sIGlzX3NjcmVlbnNoYXJlXywKQEAg
LTI3MDMsNyArMjc5Nyw3IEBAIHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6VmlkZW9TdHJlYW0+IEVuY29k
ZXJTdHJlYW1GYWN0b3J5OjpDcmVhdGVFbmNvZGVyU3RyZWFtcygKICAgbGF5ZXIubWF4X3FwID0g
bWF4X3FwXzsKICAgbGF5ZXIuYml0cmF0ZV9wcmlvcml0eSA9IGVuY29kZXJfY29uZmlnLmJpdHJh
dGVfcHJpb3JpdHk7CiAKLSAgaWYgKENvZGVjTmFtZXNFcShjb2RlY19uYW1lXywga1ZwOUNvZGVj
TmFtZSkpIHsKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWNfbmFtZV8sIGtWcDlD
b2RlY05hbWUpKSB7CiAgICAgUlRDX0RDSEVDSyhlbmNvZGVyX2NvbmZpZy5lbmNvZGVyX3NwZWNp
ZmljX3NldHRpbmdzKTsKICAgICAvLyBVc2UgVlA5IFNWQyBsYXllcmluZyBmcm9tIGNvZGVjIHNl
dHRpbmdzIHdoaWNoIG1pZ2h0IGJlIGluaXRpYWxpemVkCiAgICAgLy8gdGhvdWdoIGZpZWxkIHRy
aWFsIGluIENvbmZpZ3VyZVZpZGVvRW5jb2RlclNldHRpbmdzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3Zp
ZGVvZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
ZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuaAppbmRleCA4YTFlNmFkNGQxNzAzNjQ4ZWRj
ZjQ1NzBkZjQ3YTMzOTE3ZDNjNjFhLi4zYjc5YWQ0MGI4YTJkNjczZmI4N2YxMjY0Y2E4YjU1ZDcy
NGE5ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdp
bmUuaApAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgogI2luY2x1ZGUgImFwaS9jYWxsL3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgImFwaS92aWRlby92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3Zp
ZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3NpbmtfaW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3NvdXJjZV9pbnRlcmZhY2UuaCIKQEAgLTc4LDQz
ICs3OSw1MyBAQCBjbGFzcyBEZWZhdWx0VW5zaWduYWxsZWRTc3JjSGFuZGxlciA6IHB1YmxpYyBV
bnNpZ25hbGxlZFNzcmNIYW5kbGVyIHsKIH07CiAKIC8vIFdlYlJ0Y1ZpZGVvRW5naW5lIGlzIHVz
ZWQgZm9yIHRoZSBuZXcgbmF0aXZlIFdlYlJUQyBWaWRlbyBBUEkgKHdlYnJ0YzoxNjY3KS4KLWNs
YXNzIFdlYlJ0Y1ZpZGVvRW5naW5lIHsKK2NsYXNzIFdlYlJ0Y1ZpZGVvRW5naW5lIDogcHVibGlj
IFZpZGVvRW5naW5lSW50ZXJmYWNlIHsKICBwdWJsaWM6CiAjaWYgZGVmaW5lZChVU0VfQlVJTFRJ
Tl9TV19DT0RFQ1MpCiAgIC8vIEludGVybmFsIFNXIHZpZGVvIGNvZGVjcyB3aWxsIGJlIGFkZGVk
IG9uIHRvcCBvZiB0aGUgZXh0ZXJuYWwgY29kZWNzLgogICBXZWJSdGNWaWRlb0VuZ2luZSgKICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJSdGNWaWRlb0VuY29kZXJGYWN0b3J5PiBleHRlcm5hbF92
aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUnRjVmlkZW9E
ZWNvZGVyRmFjdG9yeT4KLSAgICAgICAgICBleHRlcm5hbF92aWRlb19kZWNvZGVyX2ZhY3Rvcnkp
OworICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlJ0Y1ZpZGVvRGVjb2RlckZhY3Rvcnk+IGV4dGVy
bmFsX3ZpZGVvX2RlY29kZXJfZmFjdG9yeSwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6
OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+CisgICAgICAgICAgdmlkZW9fYml0cmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeSk7CiAjZW5kaWYKIAogICAvLyBUaGVzZSB2aWRlbyBjb2RlYyBmYWN0
b3JpZXMgcmVwcmVzZW50cyBhbGwgdmlkZW8gY29kZWNzLCBpLmUuIGJvdGggc29mdHdhcmUKICAg
Ly8gYW5kIGV4dGVybmFsIGhhcmR3YXJlIGNvZGVjcy4KICAgV2ViUnRjVmlkZW9FbmdpbmUoCiAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiB2aWRlb19l
bmNvZGVyX2ZhY3RvcnksCi0gICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29k
ZXJGYWN0b3J5PiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkpOworICAgICAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LAorICAg
ICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4K
KyAgICAgICAgICB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5KTsKIAotICB2aXJ0dWFs
IH5XZWJSdGNWaWRlb0VuZ2luZSgpOworICB+V2ViUnRjVmlkZW9FbmdpbmUoKSBvdmVycmlkZTsK
IAotICBXZWJSdGNWaWRlb0NoYW5uZWwqIENyZWF0ZUNoYW5uZWwod2VicnRjOjpDYWxsKiBjYWxs
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVkaWFDb25maWcm
IGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZpZGVv
T3B0aW9ucyYgb3B0aW9ucyk7CisgIFZpZGVvTWVkaWFDaGFubmVsKiBDcmVhdGVNZWRpYUNoYW5u
ZWwoCisgICAgICB3ZWJydGM6OkNhbGwqIGNhbGwsCisgICAgICBjb25zdCBNZWRpYUNvbmZpZyYg
Y29uZmlnLAorICAgICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zLAorICAgICAgY29uc3Qg
d2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykgb3ZlcnJpZGU7CiAKLSAgc3Rk
Ojp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNzKCkgY29uc3Q7Ci0gIFJ0cENhcGFiaWxpdGllcyBH
ZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKKyAgc3RkOjp2ZWN0b3I8VmlkZW9Db2RlYz4gY29kZWNz
KCkgY29uc3Qgb3ZlcnJpZGU7CisgIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBhYmlsaXRpZXMoKSBj
b25zdCBvdmVycmlkZTsKIAogIHByaXZhdGU6CiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IGRlY29kZXJfZmFjdG9yeV87CiAgIGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IGVuY29kZXJfZmFjdG9yeV87
CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZh
Y3Rvcnk+CisgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5XzsKIH07CiAKIGNsYXNzIFdl
YlJ0Y1ZpZGVvQ2hhbm5lbCA6IHB1YmxpYyBWaWRlb01lZGlhQ2hhbm5lbCwgcHVibGljIHdlYnJ0
Yzo6VHJhbnNwb3J0IHsKICBwdWJsaWM6Ci0gIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCh3ZWJydGM6OkNh
bGwqIGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmln
LAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmlkZW9PcHRpb25zJiBvcHRpb25zLAotICAg
ICAgICAgICAgICAgICAgICAgd2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5KiBlbmNvZGVyX2Zh
Y3RvcnksCi0gICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnkq
IGRlY29kZXJfZmFjdG9yeSk7CisgIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCgKKyAgICAgIHdlYnJ0Yzo6
Q2FsbCogY2FsbCwKKyAgICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCisgICAgICBjb25z
dCBWaWRlb09wdGlvbnMmIG9wdGlvbnMsCisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlv
bnMmIGNyeXB0b19vcHRpb25zLAorICAgICAgd2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5KiBl
bmNvZGVyX2ZhY3RvcnksCisgICAgICB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3RvcnkqIGRlY29k
ZXJfZmFjdG9yeSwKKyAgICAgIHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSog
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSk7CiAgIH5XZWJSdGNWaWRlb0NoYW5uZWwoKSBvdmVy
cmlkZTsKIAogICAvLyBWaWRlb01lZGlhQ2hhbm5lbCBpbXBsZW1lbnRhdGlvbgpAQCAtMTQ3LDEz
ICsxNTgsMjggQEAgY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsIDogcHVibGljIFZpZGVvTWVkaWFD
aGFubmVsLCBwdWJsaWMgd2VicnRjOjpUcmFuc3BvcnQgewogICBib29sIEdldFN0YXRzKFZpZGVv
TWVkaWFJbmZvKiBpbmZvKSBvdmVycmlkZTsKIAogICB2b2lkIE9uUGFja2V0UmVjZWl2ZWQocnRj
OjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgb3ZlcnJpZGU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSBvdmVycmlkZTsKICAgdm9pZCBPblJ0
Y3BSZWNlaXZlZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgb3ZlcnJpZGU7Cisg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgb3ZlcnJpZGU7CiAg
IHZvaWQgT25SZWFkeVRvU2VuZChib29sIHJlYWR5KSBvdmVycmlkZTsKICAgdm9pZCBPbk5ldHdv
cmtSb3V0ZUNoYW5nZWQoY29uc3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9uYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6Ok5ldHdvcmtSb3V0ZSYgbmV0d29ya19y
b3V0ZSkgb3ZlcnJpZGU7Ci0gIHZvaWQgU2V0SW50ZXJmYWNlKE5ldHdvcmtJbnRlcmZhY2UqIGlm
YWNlKSBvdmVycmlkZTsKKyAgdm9pZCBTZXRJbnRlcmZhY2UoTmV0d29ya0ludGVyZmFjZSogaWZh
Y2UsCisgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2Uq
IG1lZGlhX3RyYW5zcG9ydCkgb3ZlcnJpZGU7CisKKyAgLy8gRTJFIEVuY3J5cHRlZCBWaWRlbyBG
cmFtZSBBUEkKKyAgLy8gU2V0IGEgZnJhbWUgZGVjcnlwdG9yIHRvIGEgcGFydGljdWxhciBzc3Jj
IHRoYXQgd2lsbCBpbnRlcmNlcHQgYWxsCisgIC8vIGluY29taW5nIHZpZGVvIGZyYW1lcyBhbmQg
YXR0ZW1wdCB0byBkZWNyeXB0IHRoZW0gYmVmb3JlIGZvcndhcmRpbmcgdGhlCisgIC8vIHJlc3Vs
dC4KKyAgdm9pZCBTZXRGcmFtZURlY3J5cHRvcih1aW50MzJfdCBzc3JjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkZyYW1lRGVjcnlwdG9ySW50
ZXJmYWNlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9kZWNyeXB0b3IpIG92
ZXJyaWRlOworICAvLyBTZXQgYSBmcmFtZSBlbmNyeXB0b3IgdG8gYSBwYXJ0aWN1bGFyIHNzcmMg
dGhhdCB3aWxsIGludGVyY2VwdCBhbGwKKyAgLy8gb3V0Z29pbmcgdmlkZW8gZnJhbWVzIGFuZCBh
dHRlbXB0IHRvIGVuY3J5cHQgdGhlbSBhbmQgZm9yd2FyZCB0aGUgcmVzdWx0CisgIC8vIHRvIHRo
ZSBwYWNrZXRpemVyLgorICB2b2lkIFNldEZyYW1lRW5jcnlwdG9yKHVpbnQzMl90IHNzcmMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RnJhbWVF
bmNyeXB0b3JJbnRlcmZhY2U+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2Vu
Y3J5cHRvcikgb3ZlcnJpZGU7CiAKICAgLy8gSW1wbGVtZW50ZWQgZm9yIFZpZGVvTWVkaWFDaGFu
bmVsVGVzdC4KICAgYm9vbCBzZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc2VuZGluZ187IH0KQEAg
LTIwMSw2ICsyMjcsNyBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWwgOiBwdWJsaWMgVmlkZW9N
ZWRpYUNoYW5uZWwsIHB1YmxpYyB3ZWJydGM6OlRyYW5zcG9ydCB7CiAgICAgYWJzbDo6b3B0aW9u
YWw8VmlkZW9Db2RlY1NldHRpbmdzPiBjb2RlYzsKICAgICBhYnNsOjpvcHRpb25hbDxzdGQ6OnZl
Y3Rvcjx3ZWJydGM6OlJ0cEV4dGVuc2lvbj4+IHJ0cF9oZWFkZXJfZXh0ZW5zaW9uczsKICAgICBh
YnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gbWlkOworICAgIGFic2w6Om9wdGlvbmFsPGJvb2w+
IGV4dG1hcF9hbGxvd19taXhlZDsKICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IG1heF9iYW5kd2lk
dGhfYnBzOwogICAgIGFic2w6Om9wdGlvbmFsPGJvb2w+IGNvbmZlcmVuY2VfbW9kZTsKICAgICBh
YnNsOjpvcHRpb25hbDx3ZWJydGM6OlJ0Y3BNb2RlPiBydGNwX21vZGU7CkBAIC0yNTcsNiArMjg0
LDkgQEAgY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsIDogcHVibGljIFZpZGVvTWVkaWFDaGFubmVs
LCBwdWJsaWMgd2VicnRjOjpUcmFuc3BvcnQgewogICAgIHdlYnJ0Yzo6UlRDRXJyb3IgU2V0UnRw
UGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwogICAg
IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBHZXRSdHBQYXJhbWV0ZXJzKCkgY29uc3Q7CiAKKyAgICB2
b2lkIFNldEZyYW1lRW5jcnlwdG9yKAorICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yKTsKKwogICAgIC8vIElt
cGxlbWVudHMgcnRjOjpWaWRlb1NvdXJjZUludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+Lgog
ICAgIC8vIFdlYlJ0Y1ZpZGVvU2VuZFN0cmVhbSBhY3RzIGFzIGEgc291cmNlIHRvIHRoZSB3ZWJy
dGM6OlZpZGVvU2VuZFN0cmVhbQogICAgIC8vIGluIHxzdHJlYW1ffC4gVGhpcyBpcyBkb25lIHRv
IHByb3h5IFZpZGVvU2lua1dhbnRzIGZyb20gdGhlIGVuY29kZXIgdG8KQEAgLTM3MSw2ICs0MDEs
OSBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWwgOiBwdWJsaWMgVmlkZW9NZWRpYUNoYW5uZWws
IHB1YmxpYyB3ZWJydGM6OlRyYW5zcG9ydCB7CiAgICAgdm9pZCBPbkZyYW1lKGNvbnN0IHdlYnJ0
Yzo6VmlkZW9GcmFtZSYgZnJhbWUpIG92ZXJyaWRlOwogICAgIGJvb2wgSXNEZWZhdWx0U3RyZWFt
KCkgY29uc3Q7CiAKKyAgICB2b2lkIFNldEZyYW1lRGVjcnlwdG9yKAorICAgICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlw
dG9yKTsKKwogICAgIHZvaWQgU2V0U2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6
OlZpZGVvRnJhbWU+KiBzaW5rKTsKIAogICAgIFZpZGVvUmVjZWl2ZXJJbmZvIEdldFZpZGVvUmVj
ZWl2ZXJJbmZvKGJvb2wgbG9nX3N0YXRzKTsKQEAgLTM4Nyw4ICs0MjAsNiBAQCBjbGFzcyBXZWJS
dGNWaWRlb0NoYW5uZWwgOiBwdWJsaWMgVmlkZW9NZWRpYUNoYW5uZWwsIHB1YmxpYyB3ZWJydGM6
OlRyYW5zcG9ydCB7CiAKICAgICBzdGQ6OnN0cmluZyBHZXRDb2RlY05hbWVGcm9tUGF5bG9hZFR5
cGUoaW50IHBheWxvYWRfdHlwZSk7CiAKLSAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gR2V0
Rmlyc3RQcmltYXJ5U3NyYygpIGNvbnN0OwotCiAgICAgd2VicnRjOjpDYWxsKiBjb25zdCBjYWxs
XzsKICAgICBjb25zdCBTdHJlYW1QYXJhbXMgc3RyZWFtX3BhcmFtc187CiAKQEAgLTQ2Niw2ICs0
OTcsNyBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWwgOiBwdWJsaWMgVmlkZW9NZWRpYUNoYW5u
ZWwsIHB1YmxpYyB3ZWJydGM6OlRyYW5zcG9ydCB7CiAKICAgd2VicnRjOjpWaWRlb0VuY29kZXJG
YWN0b3J5KiBjb25zdCBlbmNvZGVyX2ZhY3RvcnlfOwogICB3ZWJydGM6OlZpZGVvRGVjb2RlckZh
Y3RvcnkqIGNvbnN0IGRlY29kZXJfZmFjdG9yeV87CisgIHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxs
b2NhdG9yRmFjdG9yeSogY29uc3QgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV87CiAgIHN0ZDo6
dmVjdG9yPFZpZGVvQ29kZWNTZXR0aW5ncz4gcmVjdl9jb2RlY3NfOwogICBzdGQ6OnZlY3Rvcjx3
ZWJydGM6OlJ0cEV4dGVuc2lvbj4gcmVjdl9ydHBfZXh0ZW5zaW9uc187CiAgIC8vIFNlZSByZWFz
b24gZm9yIGtlZXBpbmcgdHJhY2sgb2YgdGhlIEZsZXhGRUMgcGF5bG9hZCB0eXBlIHNlcGFyYXRl
bHkgaW4KQEAgLTQ3NSwxNCArNTA3LDE5IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbCA6IHB1
YmxpYyBWaWRlb01lZGlhQ2hhbm5lbCwgcHVibGljIHdlYnJ0Yzo6VHJhbnNwb3J0IHsKICAgLy8g
VE9ETyhkZWFkYmVlZik6IERvbid0IGR1cGxpY2F0ZSBpbmZvcm1hdGlvbiBiZXR3ZWVuCiAgIC8v
IHNlbmRfcGFyYW1zL3JlY3ZfcGFyYW1zLCBydHBfZXh0ZW5zaW9ucywgb3B0aW9ucywgZXRjLgog
ICBWaWRlb1NlbmRQYXJhbWV0ZXJzIHNlbmRfcGFyYW1zXzsKKyAgcnRjOjpEaWZmU2VydkNvZGVQ
b2ludCBwcmVmZXJyZWRfZHNjcF87CiAgIFZpZGVvT3B0aW9ucyBkZWZhdWx0X3NlbmRfb3B0aW9u
c187CiAgIFZpZGVvUmVjdlBhcmFtZXRlcnMgcmVjdl9wYXJhbXNfOwogICBpbnQ2NF90IGxhc3Rf
c3RhdHNfbG9nX21zXzsKKyAgY29uc3QgYm9vbCBkaXNjYXJkX3Vua25vd25fc3NyY19wYWNrZXRz
XzsKICAgLy8gVGhpcyBpcyBhIHN0cmVhbSBwYXJhbSB0aGF0IGNvbWVzIGZyb20gdGhlIHJlbW90
ZSBkZXNjcmlwdGlvbiwgYnV0IHdhc24ndAogICAvLyBzaWduYWxlZCB3aXRoIGFueSBhPXNzcmMg
bGluZXMuIEl0IGhvbGRzIGluZm9ybWF0aW9uIHRoYXQgd2FzIHNpZ25hbGVkCiAgIC8vIGJlZm9y
ZSB0aGUgdW5zaWduYWxlZCByZWNlaXZlIHN0cmVhbSBpcyBjcmVhdGVkIHdoZW4gdGhlIGZpcnN0
IHBhY2tldCBpcwogICAvLyByZWNlaXZlZC4KICAgU3RyZWFtUGFyYW1zIHVuc2lnbmFsZWRfc3Ry
ZWFtX3BhcmFtc187CisgIC8vIFBlciBwZWVyIGNvbm5lY3Rpb24gY3J5cHRvIG9wdGlvbnMgdGhh
dCBsYXN0IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHBlZXIKKyAgLy8gY29ubmVjdGlvbi4KKyAg
Y29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKIH07CiAKIGNsYXNz
IEVuY29kZXJTdHJlYW1GYWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9lbmdpbmVfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9l
bmdpbmUvd2VicnRjdmlkZW9lbmdpbmVfdW5pdHRlc3QuY2MKaW5kZXggZTg3ZjYzZmY0YTY1ZjJh
MTQ1NDZhYjFhZjc5YTU0MGE0ZDViYTRjMC4uYWIwNGZhNmFmM2U1YTY2NTExNTQ5MDViNDA4ODcw
MjlhOTE2NWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5naW5lX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93
ZWJydGN2aWRlb2VuZ2luZV91bml0dGVzdC5jYwpAQCAtMTQsMTAgKzE0LDE0IEBACiAjaW5jbHVk
ZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mv
bWF0Y2guaCIKICNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgorI2luY2x1ZGUgImFwaS90
ZXN0L21vY2tfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9t
b2NrX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdGVz
dC9tb2NrX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS90ZXN0L21vY2tf
dmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3VuaXRzL3RpbWVfZGVsdGEu
aCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9m
YWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5o
IgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rlcl9m
YWN0b3J5LmgiCkBAIC0xMDEsNyArMTA1LDcgQEAgYm9vbCBIYXNSdHhDb2RlYyhjb25zdCBzdGQ6
OnZlY3Rvcjxjcmlja2V0OjpWaWRlb0NvZGVjPiYgY29kZWNzLAogICAgICAgICAgICAgICAgICBp
bnQgcGF5bG9hZF90eXBlKSB7CiAgIGZvciAoY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyYgY29k
ZWMgOiBjb2RlY3MpIHsKICAgICBpbnQgYXNzb2NpYXRlZF9wYXlsb2FkX3R5cGU7Ci0gICAgaWYg
KGNyaWNrZXQ6OkNvZGVjTmFtZXNFcShjb2RlYy5uYW1lLmNfc3RyKCksICJydHgiKSAmJgorICAg
IGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjLm5hbWUuY19zdHIoKSwgInJ0eCIpICYm
CiAgICAgICAgIGNvZGVjLkdldFBhcmFtKGNyaWNrZXQ6OmtDb2RlY1BhcmFtQXNzb2NpYXRlZFBh
eWxvYWRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAmYXNzb2NpYXRlZF9wYXlsb2FkX3R5
cGUpICYmCiAgICAgICAgIGFzc29jaWF0ZWRfcGF5bG9hZF90eXBlID09IHBheWxvYWRfdHlwZSkg
ewpAQCAtMjEzLDcgKzIxNyw4IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBlbmdpbmVfKHN0ZDo6dW5pcXVlX3B0cjxjcmlj
a2V0OjpGYWtlV2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeT4oCiAgICAgICAgICAgICAgICAgICAg
IGVuY29kZXJfZmFjdG9yeV8pLAogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlj
a2V0OjpGYWtlV2ViUnRjVmlkZW9EZWNvZGVyRmFjdG9yeT4oCi0gICAgICAgICAgICAgICAgICAg
IGRlY29kZXJfZmFjdG9yeV8pKSB7CisgICAgICAgICAgICAgICAgICAgIGRlY29kZXJfZmFjdG9y
eV8pLAorICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFs
bG9jYXRvckZhY3RvcnkoKSkgewogICAgIC8vIEVuc3VyZSBmYWtlIGNsb2NrIGRvZXNuJ3QgcmV0
dXJuIDAsIHdoaWNoIHdpbGwgY2F1c2Ugc29tZSBpbml0aWFsaXphdGlvbnMKICAgICAvLyBmYWls
IGluc2lkZSBSVFAgc2VuZGVycy4KICAgICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pY3Jvcygx
KTsKQEAgLTMxOCw2ICszMjMsMjUgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwgU3Vw
cG9ydHNWaWRlb1JvdGF0aW9uSGVhZGVyRXh0ZW5zaW9uKSB7CiAgIEZBSUwoKSA8PCAiVmlkZW8g
Um90YXRpb24gZXh0ZW5zaW9uIG5vdCBpbiBoZWFkZXItZXh0ZW5zaW9uIGxpc3QuIjsKIH0KIAor
Y2xhc3MgV2ViUnRjVmlkZW9FbmdpbmVUZXN0V2l0aEdlbmVyaWNEZXNjcmlwdG9yCisgICAgOiBw
dWJsaWMgV2ViUnRjVmlkZW9FbmdpbmVUZXN0IHsKKyBwdWJsaWM6CisgIFdlYlJ0Y1ZpZGVvRW5n
aW5lVGVzdFdpdGhHZW5lcmljRGVzY3JpcHRvcigpCisgICAgICA6IFdlYlJ0Y1ZpZGVvRW5naW5l
VGVzdCgiV2ViUlRDLUdlbmVyaWNEZXNjcmlwdG9yQWR2ZXJ0aXNlZC9FbmFibGVkLyIpIHt9Cit9
OworCitURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0V2l0aEdlbmVyaWNEZXNjcmlwdG9yLCBB
ZHZlcnRpc2VHZW5lcmljRGVzY3JpcHRvcikgeworICBSdHBDYXBhYmlsaXRpZXMgY2FwYWJpbGl0
aWVzID0gZW5naW5lXy5HZXRDYXBhYmlsaXRpZXMoKTsKKyAgQVNTRVJUX0ZBTFNFKGNhcGFiaWxp
dGllcy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXB0eSgpKTsKKyAgZm9yIChjb25zdCBSdHBFeHRlbnNp
b24mIGV4dGVuc2lvbiA6IGNhcGFiaWxpdGllcy5oZWFkZXJfZXh0ZW5zaW9ucykgeworICAgIGlm
IChleHRlbnNpb24udXJpID09IFJ0cEV4dGVuc2lvbjo6a0dlbmVyaWNGcmFtZURlc2NyaXB0b3JV
cmkpIHsKKyAgICAgIEVYUEVDVF9FUShSdHBFeHRlbnNpb246OmtHZW5lcmljRnJhbWVEZXNjcmlw
dG9yRGVmYXVsdElkLCBleHRlbnNpb24uaWQpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQor
ICBGQUlMKCkgPDwgIkdlbmVyaWMgZGVzY3JpcHRvciBleHRlbnNpb24gbm90IGluIGhlYWRlci1l
eHRlbnNpb24gbGlzdC4iOworfQorCiBURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBDVk9T
ZXRIZWFkZXJFeHRlbnNpb25CZWZvcmVDYXB0dXJlcikgewogICAvLyBBbGxvY2F0ZSB0aGUgc291
cmNlIGZpcnN0IHRvIHByZXZlbnQgZWFybHkgZGVzdHJ1Y3Rpb24gYmVmb3JlIGNoYW5uZWwncwog
ICAvLyBkdG9yIGlzIGNhbGxlZC4KQEAgLTQzMyw4ICs0NTcsOCBAQCBURVNUX0YoV2ViUnRjVmlk
ZW9FbmdpbmVUZXN0LCBDVk9TZXRIZWFkZXJFeHRlbnNpb25BZnRlckNhcHR1cmVyKSB7CiBURVNU
X0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBTZXRTZW5kRmFpbHNCZWZvcmVTZXR0aW5nQ29kZWNz
KSB7CiAgIGVuY29kZXJfZmFjdG9yeV8tPkFkZFN1cHBvcnRlZFZpZGVvQ29kZWNUeXBlKCJWUDgi
KTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IGNoYW5uZWwoCi0gICAg
ICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZp
ZGVvT3B0aW9ucygpKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gY2hh
bm5lbChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGNhbGxfLmdldCgpLCBHZXRN
ZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKTsK
IAogICBFWFBFQ1RfVFJVRShjaGFubmVsLT5BZGRTZW5kU3RyZWFtKFN0cmVhbVBhcmFtczo6Q3Jl
YXRlTGVnYWN5KDEyMykpKTsKIApAQCAtNDQ3LDggKzQ3MSw4IEBAIFRFU1RfRihXZWJSdGNWaWRl
b0VuZ2luZVRlc3QsIFNldFNlbmRGYWlsc0JlZm9yZVNldHRpbmdDb2RlY3MpIHsKIFRFU1RfRihX
ZWJSdGNWaWRlb0VuZ2luZVRlc3QsIEdldFN0YXRzV2l0aG91dFNlbmRDb2RlY3NTZXREb2VzTm90
Q3Jhc2gpIHsKICAgZW5jb2Rlcl9mYWN0b3J5Xy0+QWRkU3VwcG9ydGVkVmlkZW9Db2RlY1R5cGUo
IlZQOCIpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gY2hhbm5lbCgK
LSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWco
KSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVs
PiBjaGFubmVsKGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbF8uZ2V0KCks
IEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMo
KSkpOwogICBFWFBFQ1RfVFJVRShjaGFubmVsLT5BZGRTZW5kU3RyZWFtKFN0cmVhbVBhcmFtczo6
Q3JlYXRlTGVnYWN5KDEyMykpKTsKICAgVmlkZW9NZWRpYUluZm8gaW5mbzsKICAgY2hhbm5lbC0+
R2V0U3RhdHMoJmluZm8pOwpAQCAtNTMwLDcgKzU1NCw3IEBAIFRFU1RfRihXZWJSdGNWaWRlb0Vu
Z2luZVRlc3QsIFJ0eENvZGVjQWRkZWRGb3JIMjY0Q29kZWMpIHsKICAgICAgIGNvZGVjcywgRmlu
ZE1hdGNoaW5nQ29kZWMoY29kZWNzLCBjcmlja2V0OjpWaWRlb0NvZGVjKGgyNjRfaGlnaCkpLT5p
ZCkpOwogfQogCi0jaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2lmIGRlZmluZWQoUlRD
X0VOQUJMRV9WUDkpCiBURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBDYW5Db25zdHJ1Y3RE
ZWNvZGVyRm9yVnA5RW5jb2RlckZhY3RvcnkpIHsKICAgZW5jb2Rlcl9mYWN0b3J5Xy0+QWRkU3Vw
cG9ydGVkVmlkZW9Db2RlY1R5cGUoIlZQOSIpOwogCkBAIC01NDAsNyArNTY0LDcgQEAgVEVTVF9G
KFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwgQ2FuQ29uc3RydWN0RGVjb2RlckZvclZwOUVuY29kZXJG
YWN0b3J5KSB7CiAgIEVYUEVDVF9UUlVFKAogICAgICAgY2hhbm5lbC0+QWRkUmVjdlN0cmVhbShj
cmlja2V0OjpTdHJlYW1QYXJhbXM6OkNyZWF0ZUxlZ2FjeShrU3NyYykpKTsKIH0KLSNlbmRpZiAg
Ly8gIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2VuZGlmICAvLyBkZWZpbmVkKFJUQ19FTkFC
TEVfVlA5KQogCiBURVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBQcm9wYWdhdGVzSW5wdXRG
cmFtZVRpbWVzdGFtcCkgewogICBlbmNvZGVyX2ZhY3RvcnlfLT5BZGRTdXBwb3J0ZWRWaWRlb0Nv
ZGVjVHlwZSgiVlA4Iik7CkBAIC02MzEsMTEgKzY1NSwxMSBAQCBzaXplX3QgV2ViUnRjVmlkZW9F
bmdpbmVUZXN0OjpHZXRFbmdpbmVDb2RlY0luZGV4KAogICBjb25zdCBzdGQ6OnZlY3Rvcjxjcmlj
a2V0OjpWaWRlb0NvZGVjPiBjb2RlY3MgPSBlbmdpbmVfLmNvZGVjcygpOwogICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNvZGVjcy5zaXplKCk7ICsraSkgewogICAgIGNvbnN0IGNyaWNrZXQ6OlZp
ZGVvQ29kZWMgZW5naW5lX2NvZGVjID0gY29kZWNzW2ldOwotICAgIGlmICghQ29kZWNOYW1lc0Vx
KG5hbWUsIGVuZ2luZV9jb2RlYy5uYW1lKSkKKyAgICBpZiAoIWFic2w6OkVxdWFsc0lnbm9yZUNh
c2UobmFtZSwgZW5naW5lX2NvZGVjLm5hbWUpKQogICAgICAgY29udGludWU7CiAgICAgLy8gVGhl
IHRlc3RzIG9ubHkgdXNlIEgyNjQgQ29uc3RyYWluZWQgQmFzZWxpbmUuIE1ha2Ugc3VyZSB3ZSBk
b24ndCByZXR1cm4KICAgICAvLyBhbiBpbnRlcm5hbCBIMjY0IGNvZGVjIGZyb20gdGhlIGVuZ2lu
ZSB3aXRoIGEgZGlmZmVyZW50IEgyNjQgcHJvZmlsZS4KLSAgICBpZiAoQ29kZWNOYW1lc0VxKG5h
bWUuY19zdHIoKSwga0gyNjRDb2RlY05hbWUpKSB7CisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9y
ZUNhc2UobmFtZS5jX3N0cigpLCBrSDI2NENvZGVjTmFtZSkpIHsKICAgICAgIGNvbnN0IGFic2w6
Om9wdGlvbmFsPHdlYnJ0Yzo6SDI2NDo6UHJvZmlsZUxldmVsSWQ+IHByb2ZpbGVfbGV2ZWxfaWQg
PQogICAgICAgICAgIHdlYnJ0Yzo6SDI2NDo6UGFyc2VTZHBQcm9maWxlTGV2ZWxJZChlbmdpbmVf
Y29kZWMucGFyYW1zKTsKICAgICAgIGlmIChwcm9maWxlX2xldmVsX2lkLT5wcm9maWxlICE9CkBA
IC02NTcsOCArNjgxLDggQEAgY3JpY2tldDo6VmlkZW9Db2RlYyBXZWJSdGNWaWRlb0VuZ2luZVRl
c3Q6OkdldEVuZ2luZUNvZGVjKAogCiBWaWRlb01lZGlhQ2hhbm5lbCoKIFdlYlJ0Y1ZpZGVvRW5n
aW5lVGVzdDo6U2V0U2VuZFBhcmFtc1dpdGhBbGxTdXBwb3J0ZWRDb2RlY3MoKSB7Ci0gIFZpZGVv
TWVkaWFDaGFubmVsKiBjaGFubmVsID0KLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxs
Xy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpOworICBWaWRlb01lZGlh
Q2hhbm5lbCogY2hhbm5lbCA9IGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2Fs
bF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0
b09wdGlvbnMoKSk7CiAgIGNyaWNrZXQ6OlZpZGVvU2VuZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsK
ICAgLy8gV2UgbmVlZCB0byBsb29rIHVwIHRoZSBjb2RlYyBpbiB0aGUgZW5naW5lIHRvIGdldCB0
aGUgY29ycmVjdCBwYXlsb2FkIHR5cGUuCiAgIGZvciAoY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zv
cm1hdCYgZm9ybWF0IDoKQEAgLTY3Nyw4ICs3MDEsOCBAQCBXZWJSdGNWaWRlb0VuZ2luZVRlc3Q6
OlNldFNlbmRQYXJhbXNXaXRoQWxsU3VwcG9ydGVkQ29kZWNzKCkgewogCiBWaWRlb01lZGlhQ2hh
bm5lbCogV2ViUnRjVmlkZW9FbmdpbmVUZXN0OjpTZXRSZWN2UGFyYW1zV2l0aFN1cHBvcnRlZENv
ZGVjcygKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0NvZGVjPiYgY29kZWNzKSB7Ci0gIFZp
ZGVvTWVkaWFDaGFubmVsKiBjaGFubmVsID0KLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChj
YWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpOworICBWaWRlb01l
ZGlhQ2hhbm5lbCogY2hhbm5lbCA9IGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAg
Y2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNy
eXB0b09wdGlvbnMoKSk7CiAgIGNyaWNrZXQ6OlZpZGVvUmVjdlBhcmFtZXRlcnMgcGFyYW1ldGVy
czsKICAgcGFyYW1ldGVycy5jb2RlY3MgPSBjb2RlY3M7CiAgIEVYUEVDVF9UUlVFKGNoYW5uZWwt
PlNldFJlY3ZQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpKTsKQEAgLTczMiw4ICs3NTYsOCBAQCBURVNU
X0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBDaGFubmVsV2l0aEgyNjRDYW5DaGFuZ2VUb1ZwOCkg
ewogICBFWFBFQ1RfRVEoY3JpY2tldDo6Q1NfUlVOTklORywKICAgICAgICAgICAgIGNhcHR1cmVy
LlN0YXJ0KGNhcHR1cmVyLkdldFN1cHBvcnRlZEZvcm1hdHMoKS0+ZnJvbnQoKSkpOwogCi0gIHN0
ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gY2hhbm5lbCgKLSAgICAgIGVuZ2luZV8u
Q3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25z
KCkpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBjaGFubmVsKGVuZ2lu
ZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmln
KCksIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBjcmlja2V0
OjpWaWRlb1NlbmRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgIHBhcmFtZXRlcnMuY29kZWNzLnB1
c2hfYmFjayhHZXRFbmdpbmVDb2RlYygiSDI2NCIpKTsKICAgRVhQRUNUX1RSVUUoY2hhbm5lbC0+
U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycykpOwpAQCAtNzYxLDggKzc4NSw4IEBAIFRFU1Rf
RihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsCiAgIGVuY29kZXJfZmFjdG9yeV8tPkFkZFN1cHBvcnRl
ZFZpZGVvQ29kZWNUeXBlKCJWUDgiKTsKICAgZW5jb2Rlcl9mYWN0b3J5Xy0+QWRkU3VwcG9ydGVk
VmlkZW9Db2RlY1R5cGUoIkgyNjQiKTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNo
YW5uZWw+IGNoYW5uZWwoCi0gICAgICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoY2FsbF8uZ2V0KCks
IEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb01lZGlhQ2hhbm5lbD4gY2hhbm5lbChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAg
ICAgIGNhbGxfLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSwgd2VicnRj
OjpDcnlwdG9PcHRpb25zKCkpKTsKICAgY3JpY2tldDo6VmlkZW9TZW5kUGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwogICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soR2V0RW5naW5lQ29kZWMoIlZQ
OCIpKTsKICAgRVhQRUNUX1RSVUUoY2hhbm5lbC0+U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVy
cykpOwpAQCAtNzk2LDggKzgyMCw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0VuZ2luZVRlc3QsCiAg
IGVuY29kZXJfZmFjdG9yeV8tPkFkZFN1cHBvcnRlZFZpZGVvQ29kZWNUeXBlKCJWUDgiKTsKICAg
ZW5jb2Rlcl9mYWN0b3J5Xy0+QWRkU3VwcG9ydGVkVmlkZW9Db2RlY1R5cGUoIkgyNjQiKTsKIAot
ICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IGNoYW5uZWwoCi0gICAgICBlbmdp
bmVfLkNyZWF0ZUNoYW5uZWwoY2FsbF8uZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0
aW9ucygpKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gY2hhbm5lbChl
bmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGNhbGxfLmdldCgpLCBHZXRNZWRpYUNv
bmZpZygpLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKTsKICAgY3Jp
Y2tldDo6VmlkZW9TZW5kUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICBwYXJhbWV0ZXJzLmNvZGVj
cy5wdXNoX2JhY2soR2V0RW5naW5lQ29kZWMoIkgyNjQiKSk7CiAgIEVYUEVDVF9UUlVFKGNoYW5u
ZWwtPlNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpKTsKQEAgLTgyOCw4ICs4NTIsOCBAQCBU
RVNUX0YoV2ViUnRjVmlkZW9FbmdpbmVUZXN0LCBTaW11bGNhc3RFbmFibGVkRm9ySDI2NEJlaGlu
ZEZpZWxkVHJpYWwpIHsKICAgICAgICJXZWJSVEMtSDI2NFNpbXVsY2FzdC9FbmFibGVkLyIpOwog
ICBlbmNvZGVyX2ZhY3RvcnlfLT5BZGRTdXBwb3J0ZWRWaWRlb0NvZGVjVHlwZSgiSDI2NCIpOwog
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gY2hhbm5lbCgKLSAgICAgIGVu
Z2luZV8uQ3JlYXRlQ2hhbm5lbChjYWxsXy5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9P
cHRpb25zKCkpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBjaGFubmVs
KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgY2FsbF8uZ2V0KCksIEdldE1lZGlh
Q29uZmlnKCksIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBj
cmlja2V0OjpWaWRlb1NlbmRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgIHBhcmFtZXRlcnMuY29k
ZWNzLnB1c2hfYmFjayhHZXRFbmdpbmVDb2RlYygiSDI2NCIpKTsKICAgRVhQRUNUX1RSVUUoY2hh
bm5lbC0+U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycykpOwpAQCAtOTg5LDggKzEwMTMsMTAg
QEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvRW5naW5lVGVzdCwgR2V0U291cmNlc1dpdGhOb25FeGlzdGlu
Z1NzcmMpIHsKIFRFU1QoV2ViUnRjVmlkZW9FbmdpbmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3Qs
IE51bGxGYWN0b3JpZXMpIHsKICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVy
RmFjdG9yeT4gZW5jb2Rlcl9mYWN0b3J5OwogICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRl
b0RlY29kZXJGYWN0b3J5PiBkZWNvZGVyX2ZhY3Rvcnk7CisgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+IHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnk7
CiAgIFdlYlJ0Y1ZpZGVvRW5naW5lIGVuZ2luZShzdGQ6Om1vdmUoZW5jb2Rlcl9mYWN0b3J5KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShkZWNvZGVyX2ZhY3RvcnkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShkZWNvZGVyX2ZhY3RvcnkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHJhdGVfYWxsb2NhdG9yX2ZhY3Rv
cnkpKTsKICAgRVhQRUNUX0VRKDB1LCBlbmdpbmUuY29kZWNzKCkuc2l6ZSgpKTsKIH0KIApAQCAt
MTAwMCwxMyArMTAyNiwxOCBAQCBURVNUKFdlYlJ0Y1ZpZGVvRW5naW5lTmV3VmlkZW9Db2RlY0Zh
Y3RvcnlUZXN0LCBFbXB0eUZhY3RvcmllcykgewogICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1ZpZGVv
RW5jb2RlckZhY3RvcnkoKTsKICAgd2VicnRjOjpNb2NrVmlkZW9EZWNvZGVyRmFjdG9yeSogZGVj
b2Rlcl9mYWN0b3J5ID0KICAgICAgIG5ldyB3ZWJydGM6Ok1vY2tWaWRlb0RlY29kZXJGYWN0b3J5
KCk7CisgIHdlYnJ0Yzo6TW9ja1ZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkqIHJhdGVfYWxs
b2NhdG9yX2ZhY3RvcnkgPQorICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1ZpZGVvQml0cmF0ZUFsbG9j
YXRvckZhY3RvcnkoKTsKICAgV2ViUnRjVmlkZW9FbmdpbmUgZW5naW5lKAogICAgICAgKHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+KGVuY29kZXJfZmFjdG9yeSkp
LAotICAgICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+KGRl
Y29kZXJfZmFjdG9yeSkpKTsKKyAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0Rl
Y29kZXJGYWN0b3J5PihkZWNvZGVyX2ZhY3RvcnkpKSwKKyAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PigKKyAgICAgICAgICByYXRlX2Fs
bG9jYXRvcl9mYWN0b3J5KSkpOwogICBFWFBFQ1RfQ0FMTCgqZW5jb2Rlcl9mYWN0b3J5LCBHZXRT
dXBwb3J0ZWRGb3JtYXRzKCkpOwogICBFWFBFQ1RfRVEoMHUsIGVuZ2luZS5jb2RlY3MoKS5zaXpl
KCkpOwogICBFWFBFQ1RfQ0FMTCgqZW5jb2Rlcl9mYWN0b3J5LCBEaWUoKSk7CiAgIEVYUEVDVF9D
QUxMKCpkZWNvZGVyX2ZhY3RvcnksIERpZSgpKTsKKyAgRVhQRUNUX0NBTEwoKnJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnksIERpZSgpKTsKIH0KIAogLy8gVGVzdCBmdWxsIGJlaGF2aW9yIGluIHRoZSB2
aWRlbyBlbmdpbmUgd2hlbiB2aWRlbyBjb2RlYyBmYWN0b3JpZXMgb2YgdGhlIG5ldwpAQCAtMTAx
OSw5ICsxMDUwLDE3IEBAIFRFU1QoV2ViUnRjVmlkZW9FbmdpbmVOZXdWaWRlb0NvZGVjRmFjdG9y
eVRlc3QsIFZwOCkgewogICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1ZpZGVvRW5jb2RlckZhY3Rvcnko
KTsKICAgd2VicnRjOjpNb2NrVmlkZW9EZWNvZGVyRmFjdG9yeSogZGVjb2Rlcl9mYWN0b3J5ID0K
ICAgICAgIG5ldyB3ZWJydGM6Ok1vY2tWaWRlb0RlY29kZXJGYWN0b3J5KCk7CisgIHdlYnJ0Yzo6
TW9ja1ZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkqIHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnkg
PQorICAgICAgbmV3IHdlYnJ0Yzo6TW9ja1ZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKTsK
KyAgRVhQRUNUX0NBTEwoKnJhdGVfYWxsb2NhdG9yX2ZhY3RvcnksCisgICAgICAgICAgICAgIENy
ZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRvclByb3h5KEZpZWxkKAorICAgICAgICAgICAgICAgICAg
JndlYnJ0Yzo6VmlkZW9Db2RlYzo6Y29kZWNUeXBlLCB3ZWJydGM6OmtWaWRlb0NvZGVjVlA4KSkp
CisgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKG5ldyB3ZWJydGM6Ok1vY2tWaWRlb0Jp
dHJhdGVBbGxvY2F0b3IoKSkpOwogICBXZWJSdGNWaWRlb0VuZ2luZSBlbmdpbmUoCiAgICAgICAo
c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4oZW5jb2Rlcl9mYWN0
b3J5KSksCi0gICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9y
eT4oZGVjb2Rlcl9mYWN0b3J5KSkpOworICAgICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZp
ZGVvRGVjb2RlckZhY3Rvcnk+KGRlY29kZXJfZmFjdG9yeSkpLAorICAgICAgKHN0ZDo6dW5pcXVl
X3B0cjx3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+KAorICAgICAgICAgIHJh
dGVfYWxsb2NhdG9yX2ZhY3RvcnkpKSk7CiAgIGNvbnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQg
dnA4X2Zvcm1hdCgiVlA4Iik7CiAgIGNvbnN0IHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6U2RwVmlkZW9G
b3JtYXQ+IHN1cHBvcnRlZF9mb3JtYXRzID0ge3ZwOF9mb3JtYXR9OwogICBFWFBFQ1RfQ0FMTCgq
ZW5jb2Rlcl9mYWN0b3J5LCBHZXRTdXBwb3J0ZWRGb3JtYXRzKCkpCkBAIC0xMDY2LDcgKzExMDUs
NyBAQCBURVNUKFdlYlJ0Y1ZpZGVvRW5naW5lTmV3VmlkZW9Db2RlY0ZhY3RvcnlUZXN0LCBWcDgp
IHsKICAgRVhQRUNUX0NBTEwoKmVuY29kZXJfZmFjdG9yeSwgUXVlcnlWaWRlb0VuY29kZXIoZm9y
bWF0KSkKICAgICAgIC5XaWxsUmVwZWF0ZWRseSh0ZXN0aW5nOjpSZXR1cm4oY29kZWNfaW5mbykp
OwogICBGYWtlV2ViUnRjVmlkZW9FbmNvZGVyKiBjb25zdCBlbmNvZGVyID0gbmV3IEZha2VXZWJS
dGNWaWRlb0VuY29kZXIobnVsbHB0cik7Ci0gIHJ0Yzo6RXZlbnQgZW5jb2Rlcl9jcmVhdGVkKGZh
bHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZW5jb2Rlcl9jcmVhdGVkOwogICBFWFBFQ1RfQ0FM
TCgqZW5jb2Rlcl9mYWN0b3J5LCBDcmVhdGVWaWRlb0VuY29kZXJQcm94eShmb3JtYXQpKQogICAg
ICAgLldpbGxPbmNlKAogICAgICAgICAgIDo6dGVzdGluZzo6RG9BbGwoOjp0ZXN0aW5nOjpJbnZv
a2VXaXRob3V0QXJncygKQEAgLTEwODUsOCArMTEyNCw4IEBAIFRFU1QoV2ViUnRjVmlkZW9Fbmdp
bmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3QsIFZwOCkgewogCiAgIC8vIENyZWF0ZSBzZW5kIGNo
YW5uZWwuCiAgIGNvbnN0IGludCBzZW5kX3NzcmMgPSAxMjM7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb01lZGlhQ2hhbm5lbD4gc2VuZF9jaGFubmVsKAotICAgICAgZW5naW5lLkNyZWF0ZUNoYW5u
ZWwoY2FsbC5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVsPiBzZW5kX2NoYW5uZWwoZW5naW5lLkNyZWF0
ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGNhbGwuZ2V0KCksIEdldE1lZGlhQ29uZmlnKCksIFZpZGVv
T3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBjcmlja2V0OjpWaWRlb1Nl
bmRQYXJhbWV0ZXJzIHNlbmRfcGFyYW1ldGVyczsKICAgc2VuZF9wYXJhbWV0ZXJzLmNvZGVjcy5w
dXNoX2JhY2soZW5naW5lX2NvZGVjcy5hdCgwKSk7CiAgIEVYUEVDVF9UUlVFKHNlbmRfY2hhbm5l
bC0+U2V0U2VuZFBhcmFtZXRlcnMoc2VuZF9wYXJhbWV0ZXJzKSk7CkBAIC0xMTA2LDggKzExNDUs
OCBAQCBURVNUKFdlYlJ0Y1ZpZGVvRW5naW5lTmV3VmlkZW9Db2RlY0ZhY3RvcnlUZXN0LCBWcDgp
IHsKIAogICAvLyBDcmVhdGUgcmVjdiBjaGFubmVsLgogICBjb25zdCBpbnQgcmVjdl9zc3JjID0g
MzIxOwotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IHJlY3ZfY2hhbm5lbCgK
LSAgICAgIGVuZ2luZS5DcmVhdGVDaGFubmVsKGNhbGwuZ2V0KCksIEdldE1lZGlhQ29uZmlnKCks
IFZpZGVvT3B0aW9ucygpKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4g
cmVjdl9jaGFubmVsKGVuZ2luZS5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICBjYWxsLmdldCgp
LCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25z
KCkpKTsKICAgY3JpY2tldDo6VmlkZW9SZWN2UGFyYW1ldGVycyByZWN2X3BhcmFtZXRlcnM7CiAg
IHJlY3ZfcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKGVuZ2luZV9jb2RlY3MuYXQoMCkpOwog
ICBFWFBFQ1RfVFJVRShyZWN2X2NoYW5uZWwtPlNldFJlY3ZQYXJhbWV0ZXJzKHJlY3ZfcGFyYW1l
dGVycykpOwpAQCAtMTExNyw2ICsxMTU2LDcgQEAgVEVTVChXZWJSdGNWaWRlb0VuZ2luZU5ld1Zp
ZGVvQ29kZWNGYWN0b3J5VGVzdCwgVnA4KSB7CiAgIC8vIFJlbW92ZSBzdHJlYW1zIHByZXZpb3Vz
bHkgYWRkZWQgdG8gZnJlZSB0aGUgZW5jb2RlciBhbmQgZGVjb2RlciBpbnN0YW5jZS4KICAgRVhQ
RUNUX0NBTEwoKmVuY29kZXJfZmFjdG9yeSwgRGllKCkpOwogICBFWFBFQ1RfQ0FMTCgqZGVjb2Rl
cl9mYWN0b3J5LCBEaWUoKSk7CisgIEVYUEVDVF9DQUxMKCpyYXRlX2FsbG9jYXRvcl9mYWN0b3J5
LCBEaWUoKSk7CiAgIEVYUEVDVF9UUlVFKHNlbmRfY2hhbm5lbC0+UmVtb3ZlU2VuZFN0cmVhbShz
ZW5kX3NzcmMpKTsKICAgRVhQRUNUX1RSVUUocmVjdl9jaGFubmVsLT5SZW1vdmVSZWN2U3RyZWFt
KHJlY3Zfc3NyYykpOwogfQpAQCAtMTEyNSwxMiArMTE2NSwxNiBAQCBURVNUKFdlYlJ0Y1ZpZGVv
RW5naW5lTmV3VmlkZW9Db2RlY0ZhY3RvcnlUZXN0LCBWcDgpIHsKIFRFU1QoV2ViUnRjVmlkZW9F
bmdpbmVOZXdWaWRlb0NvZGVjRmFjdG9yeVRlc3QsIE51bGxEZWNvZGVyKSB7CiAgIC8vIHxlbmdp
bmV8IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBmYWN0b3JpZXMuCiAgIHdlYnJ0Yzo6TW9ja1ZpZGVv
RW5jb2RlckZhY3RvcnkqIGVuY29kZXJfZmFjdG9yeSA9Ci0gICAgICBuZXcgdGVzdGluZzo6U3Ry
aWN0TW9jazx3ZWJydGM6Ok1vY2tWaWRlb0VuY29kZXJGYWN0b3J5PigpOworICAgICAgbmV3IHdl
YnJ0Yzo6TW9ja1ZpZGVvRW5jb2RlckZhY3RvcnkoKTsKICAgd2VicnRjOjpNb2NrVmlkZW9EZWNv
ZGVyRmFjdG9yeSogZGVjb2Rlcl9mYWN0b3J5ID0KLSAgICAgIG5ldyB0ZXN0aW5nOjpTdHJpY3RN
b2NrPHdlYnJ0Yzo6TW9ja1ZpZGVvRGVjb2RlckZhY3Rvcnk+KCk7CisgICAgICBuZXcgd2VicnRj
OjpNb2NrVmlkZW9EZWNvZGVyRmFjdG9yeSgpOworICB3ZWJydGM6Ok1vY2tWaWRlb0JpdHJhdGVB
bGxvY2F0b3JGYWN0b3J5KiByYXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0KKyAgICAgIG5ldyB3ZWJy
dGM6Ok1vY2tWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCk7CiAgIFdlYlJ0Y1ZpZGVvRW5n
aW5lIGVuZ2luZSgKICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJG
YWN0b3J5PihlbmNvZGVyX2ZhY3RvcnkpKSwKLSAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRj
OjpWaWRlb0RlY29kZXJGYWN0b3J5PihkZWNvZGVyX2ZhY3RvcnkpKSk7CisgICAgICAoc3RkOjp1
bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4oZGVjb2Rlcl9mYWN0b3J5KSks
CisgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFj
dG9yeT4oCisgICAgICAgICAgcmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSkpKTsKICAgY29uc3Qgd2Vi
cnRjOjpTZHBWaWRlb0Zvcm1hdCB2cDhfZm9ybWF0KCJWUDgiKTsKICAgY29uc3Qgc3RkOjp2ZWN0
b3I8d2VicnRjOjpTZHBWaWRlb0Zvcm1hdD4gc3VwcG9ydGVkX2Zvcm1hdHMgPSB7dnA4X2Zvcm1h
dH07CiAgIEVYUEVDVF9DQUxMKCplbmNvZGVyX2ZhY3RvcnksIEdldFN1cHBvcnRlZEZvcm1hdHMo
KSkKQEAgLTExNDcsOCArMTE5MSw4IEBAIFRFU1QoV2ViUnRjVmlkZW9FbmdpbmVOZXdWaWRlb0Nv
ZGVjRmFjdG9yeVRlc3QsIE51bGxEZWNvZGVyKSB7CiAKICAgLy8gQ3JlYXRlIHJlY3YgY2hhbm5l
bC4KICAgY29uc3QgaW50IHJlY3Zfc3NyYyA9IDMyMTsKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
TWVkaWFDaGFubmVsPiByZWN2X2NoYW5uZWwoCi0gICAgICBlbmdpbmUuQ3JlYXRlQ2hhbm5lbChj
YWxsLmdldCgpLCBHZXRNZWRpYUNvbmZpZygpLCBWaWRlb09wdGlvbnMoKSkpOworICBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9NZWRpYUNoYW5uZWw+IHJlY3ZfY2hhbm5lbChlbmdpbmUuQ3JlYXRlTWVk
aWFDaGFubmVsKAorICAgICAgY2FsbC5nZXQoKSwgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRp
b25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgIGNyaWNrZXQ6OlZpZGVvUmVjdlBh
cmFtZXRlcnMgcmVjdl9wYXJhbWV0ZXJzOwogICByZWN2X3BhcmFtZXRlcnMuY29kZWNzLnB1c2hf
YmFjayhlbmdpbmUuY29kZWNzKCkuZnJvbnQoKSk7CiAgIEVYUEVDVF9UUlVFKHJlY3ZfY2hhbm5l
bC0+U2V0UmVjdlBhcmFtZXRlcnMocmVjdl9wYXJhbWV0ZXJzKSk7CkBAIC0xMjIzLDcgKzEyNjcs
OCBAQCBjbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWxCYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKICBwcm90ZWN0ZWQ6CiAgIFdlYlJ0Y1ZpZGVvQ2hhbm5lbEJhc2VUZXN0KCkKICAgICAg
IDogZW5naW5lXyh3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRlb0VuY29kZXJGYWN0b3J5KCksCi0g
ICAgICAgICAgICAgICAgd2VicnRjOjpDcmVhdGVCdWlsdGluVmlkZW9EZWNvZGVyRmFjdG9yeSgp
KSB7fQorICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVvRGVjb2RlckZh
Y3RvcnkoKSwKKyAgICAgICAgICAgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJh
dGVBbGxvY2F0b3JGYWN0b3J5KCkpIHt9CiAKICAgdmlydHVhbCB2b2lkIFNldFVwKCkgewogICAg
IC8vIE9uZSB0ZXN0Y2FzZSBjYWxscyBTZXRVcCBpbiBhIGxvb3AsIG9ubHkgY3JlYXRlIGNhbGxf
IG9uY2UuCkBAIC0xMjM2LDEyICsxMjgxLDE0IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbEJh
c2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIC8vIG5lZWRzIHRvIGJlIGRpc2Fi
bGVkLCBvdGhlcndpc2UsIHRlc3RzIHdoaWNoIGNoZWNrIHRoZSBzaXplIG9mIHJlY2VpdmVkCiAg
ICAgLy8gZnJhbWVzIGJlY29tZSBmbGFreS4KICAgICBtZWRpYV9jb25maWcudmlkZW8uZW5hYmxl
X2NwdV9hZGFwdGF0aW9uID0gZmFsc2U7Ci0gICAgY2hhbm5lbF8ucmVzZXQoZW5naW5lXy5DcmVh
dGVDaGFubmVsKGNhbGxfLmdldCgpLCBtZWRpYV9jb25maWcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OlZpZGVvT3B0aW9ucygpKSk7CisgICAgY2hh
bm5lbF8ucmVzZXQoCisgICAgICAgIHN0YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvQ2hh
bm5lbCo+KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgICAgICAgY2FsbF8uZ2V0
KCksIG1lZGlhX2NvbmZpZywgY3JpY2tldDo6VmlkZW9PcHRpb25zKCksCisgICAgICAgICAgICB3
ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpKTsKICAgICBjaGFubmVsXy0+T25SZWFkeVRvU2VuZCh0
cnVlKTsKICAgICBFWFBFQ1RfVFJVRShjaGFubmVsXy5nZXQoKSAhPSBOVUxMKTsKICAgICBuZXR3
b3JrX2ludGVyZmFjZV8uU2V0RGVzdGluYXRpb24oY2hhbm5lbF8uZ2V0KCkpOwotICAgIGNoYW5u
ZWxfLT5TZXRJbnRlcmZhY2UoJm5ldHdvcmtfaW50ZXJmYWNlXyk7CisgICAgY2hhbm5lbF8tPlNl
dEludGVyZmFjZSgmbmV0d29ya19pbnRlcmZhY2VfLCAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxw
dHIpOwogICAgIGNyaWNrZXQ6OlZpZGVvUmVjdlBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBw
YXJhbWV0ZXJzLmNvZGVjcyA9IGVuZ2luZV8uY29kZWNzKCk7CiAgICAgY2hhbm5lbF8tPlNldFJl
Y3ZQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwpAQCAtMTQxMSw3ICsxNDU4LDcgQEAgY2xhc3MgV2Vi
UnRjVmlkZW9DaGFubmVsQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAKICAgY3Jp
Y2tldDo6VmlkZW9Db2RlYyBHZXRFbmdpbmVDb2RlYyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkg
ewogICAgIGZvciAoY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyYgZW5naW5lX2NvZGVjIDogZW5n
aW5lXy5jb2RlY3MoKSkgewotICAgICAgaWYgKENvZGVjTmFtZXNFcShuYW1lLCBlbmdpbmVfY29k
ZWMubmFtZSkpCisgICAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShuYW1lLCBlbmdpbmVf
Y29kZWMubmFtZSkpCiAgICAgICAgIHJldHVybiBlbmdpbmVfY29kZWM7CiAgICAgfQogICAgIC8v
IFRoaXMgcG9pbnQgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuCkBAIC0xNDY1LDYwICsxNTEyLDcg
QEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbEJhc2VUZXN0LCBTZXRTZW5kU2V0c1RyYW5zcG9y
dEJ1ZmZlclNpemVzKSB7CiAgIEVYUEVDVF9UUlVFKFNldE9uZUNvZGVjKERlZmF1bHRDb2RlYygp
KSk7CiAgIEVYUEVDVF9UUlVFKFNldFNlbmQodHJ1ZSkpOwogICBFWFBFQ1RfRVEoNjQgKiAxMDI0
LCBuZXR3b3JrX2ludGVyZmFjZV8uc2VuZGJ1Zl9zaXplKCkpOwotICBFWFBFQ1RfRVEoNjQgKiAx
MDI0LCBuZXR3b3JrX2ludGVyZmFjZV8ucmVjdmJ1Zl9zaXplKCkpOwotfQotCi0vLyBUZXN0IHRo
YXQgd2UgcHJvcGVybHkgc2V0IHRoZSBzZW5kIGFuZCByZWN2IGJ1ZmZlciBzaXplcyB3aGVuIG92
ZXJyaWRpbmcKLS8vIHZpYSBmaWVsZCB0cmlhbHMuCi1URVNUX0YoV2ViUnRjVmlkZW9DaGFubmVs
QmFzZVRlc3QsIE92ZXJyaWRlc1JlY3ZCdWZmZXJTaXplKSB7Ci0gIC8vIFNldCBmaWVsZCB0cmlh
bCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCByZWN2IGJ1ZmZlciBzaXplLCBhbmQgdGhlbiByZS1y
dW4KLSAgLy8gc2V0dXAgd2hlcmUgdGhlIGludGVyZmFjZSBpcyBjcmVhdGVkIGFuZCBjb25maWd1
cmVkLgotICBjb25zdCBpbnQga0N1c3RvbVJlY3ZCdWZmZXJTaXplID0gMTIzNDU2OwotICB3ZWJy
dGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFsKAotICAgICAgIldlYlJUQy1J
bmNyZWFzZWRSZWNlaXZlYnVmZmVycy8xMjM0NTYvIik7Ci0gIFNldFVwKCk7Ci0KLSAgRVhQRUNU
X1RSVUUoU2V0T25lQ29kZWMoRGVmYXVsdENvZGVjKCkpKTsKLSAgRVhQRUNUX1RSVUUoU2V0U2Vu
ZCh0cnVlKSk7Ci0gIEVYUEVDVF9FUSg2NCAqIDEwMjQsIG5ldHdvcmtfaW50ZXJmYWNlXy5zZW5k
YnVmX3NpemUoKSk7Ci0gIEVYUEVDVF9FUShrQ3VzdG9tUmVjdkJ1ZmZlclNpemUsIG5ldHdvcmtf
aW50ZXJmYWNlXy5yZWN2YnVmX3NpemUoKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCB3ZSBwcm9wZXJs
eSBzZXQgdGhlIHNlbmQgYW5kIHJlY3YgYnVmZmVyIHNpemVzIHdoZW4gb3ZlcnJpZGluZwotLy8g
dmlhIGZpZWxkIHRyaWFscyB3aXRoIHN1ZmZpeC4KLVRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxC
YXNlVGVzdCwgT3ZlcnJpZGVzUmVjdkJ1ZmZlclNpemVXaXRoU3VmZml4KSB7Ci0gIC8vIFNldCBm
aWVsZCB0cmlhbCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCByZWN2IGJ1ZmZlciBzaXplLCBhbmQg
dGhlbiByZS1ydW4KLSAgLy8gc2V0dXAgd2hlcmUgdGhlIGludGVyZmFjZSBpcyBjcmVhdGVkIGFu
ZCBjb25maWd1cmVkLgotICBjb25zdCBpbnQga0N1c3RvbVJlY3ZCdWZmZXJTaXplID0gMTIzNDU2
OwotICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFsKAotICAgICAg
IldlYlJUQy1JbmNyZWFzZWRSZWNlaXZlYnVmZmVycy8xMjM0NTZfRG9nZm9vZC8iKTsKLSAgU2V0
VXAoKTsKLQotICBFWFBFQ1RfVFJVRShTZXRPbmVDb2RlYyhEZWZhdWx0Q29kZWMoKSkpOwotICBF
WFBFQ1RfVFJVRShTZXRTZW5kKHRydWUpKTsKLSAgRVhQRUNUX0VRKDY0ICogMTAyNCwgbmV0d29y
a19pbnRlcmZhY2VfLnNlbmRidWZfc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKGtDdXN0b21SZWN2QnVm
ZmVyU2l6ZSwgbmV0d29ya19pbnRlcmZhY2VfLnJlY3ZidWZfc2l6ZSgpKTsKLX0KLQotLy8gVGVz
dCB0aGF0IHdlIHByb3Blcmx5IHNldCB0aGUgc2VuZCBhbmQgcmVjdiBidWZmZXIgc2l6ZXMgd2hl
biBvdmVycmlkaW5nCi0vLyB2aWEgZmllbGQgdHJpYWxzIHRoYXQgZG9uJ3QgbWFrZSBhbnkgc2Vu
c2UuCi1URVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsQmFzZVRlc3QsIEludmFsaWRSZWN2QnVmZmVy
U2l6ZSkgewotICAvLyBTZXQgYm9ndXMgZmllbGQgdHJpYWwgdmFsdWVzIHRvIG92ZXJyaWRlIHRo
ZSBkZWZhdWx0IHJlY3YgYnVmZmVyIHNpemUsIGFuZAotICAvLyB0aGVuIHJlLXJ1biBzZXR1cCB3
aGVyZSB0aGUgaW50ZXJmYWNlIGlzIGNyZWF0ZWQgYW5kIGNvbmZpZ3VyZWQuIFRoZQotICAvLyBk
ZWZhdWx0IHZhbHVlIHNob3VsZCBzdGlsbCBiZSB1c2VkLgotCi0gIGZvciAoc3RkOjpzdHJpbmcg
Z3JvdXAgOiB7IiAiLCAiTm90QU51bWJlciIsICItMSIsICIwIn0pIHsKLSAgICBzdGQ6OnN0cmlu
ZyBmaWVsZF90cmlhbF9zdHJpbmcgPSAiV2ViUlRDLUluY3JlYXNlZFJlY2VpdmVidWZmZXJzLyI7
Ci0gICAgZmllbGRfdHJpYWxfc3RyaW5nICs9IGdyb3VwOwotICAgIGZpZWxkX3RyaWFsX3N0cmlu
ZyArPSAiLyI7Ci0gICAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlh
bChmaWVsZF90cmlhbF9zdHJpbmcpOwotICAgIFNldFVwKCk7Ci0KLSAgICBFWFBFQ1RfVFJVRShT
ZXRPbmVDb2RlYyhEZWZhdWx0Q29kZWMoKSkpOwotICAgIEVYUEVDVF9UUlVFKFNldFNlbmQodHJ1
ZSkpOwotICAgIEVYUEVDVF9FUSg2NCAqIDEwMjQsIG5ldHdvcmtfaW50ZXJmYWNlXy5zZW5kYnVm
X3NpemUoKSk7Ci0gICAgRVhQRUNUX0VRKDY0ICogMTAyNCwgbmV0d29ya19pbnRlcmZhY2VfLnJl
Y3ZidWZfc2l6ZSgpKTsKLSAgfQorICBFWFBFQ1RfRVEoMjU2ICogMTAyNCwgbmV0d29ya19pbnRl
cmZhY2VfLnJlY3ZidWZfc2l6ZSgpKTsKIH0KIAogLy8gVGVzdCB0aGF0IHN0YXRzIHdvcmsgcHJv
cGVybHkgZm9yIGEgMS0xIGNhbGwuCkBAIC0xNzU3LDcgKzE3NTEsNyBAQCBURVNUX0YoV2ViUnRj
VmlkZW9DaGFubmVsQmFzZVRlc3QsIFNldFNpbmspIHsKICAgRVhQRUNUX1RSVUUoU2V0RGVmYXVs
dENvZGVjKCkpOwogICBFWFBFQ1RfVFJVRShTZXRTZW5kKHRydWUpKTsKICAgRVhQRUNUX0VRKDAs
IHJlbmRlcmVyXy5udW1fcmVuZGVyZWRfZnJhbWVzKCkpOwotICBjaGFubmVsXy0+T25QYWNrZXRS
ZWNlaXZlZCgmcGFja2V0MSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICBjaGFubmVsXy0+T25QYWNr
ZXRSZWNlaXZlZCgmcGFja2V0MSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1Rf
VFJVRShjaGFubmVsXy0+U2V0U2luayhrRGVmYXVsdFJlY2VpdmVTc3JjLCAmcmVuZGVyZXJfKSk7
CiAgIEVYUEVDVF9UUlVFKFNlbmRGcmFtZSgpKTsKICAgRVhQRUNUX0ZSQU1FX1dBSVQoMSwga1Zp
ZGVvV2lkdGgsIGtWaWRlb0hlaWdodCwga1RpbWVvdXQpOwpAQCAtMjA0Niw4ICsyMDQwLDkgQEAg
Y2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsVGVzdCA6IHB1YmxpYyBXZWJSdGNWaWRlb0VuZ2luZVRl
c3QgewogI2VuZGlmCiAKICAgICBmYWtlX2NhbGxfLnJlc2V0KG5ldyBGYWtlQ2FsbCgpKTsKLSAg
ICBjaGFubmVsXy5yZXNldChlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoZmFrZV9jYWxsXy5nZXQoKSwg
R2V0TWVkaWFDb25maWcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmlkZW9PcHRpb25zKCkpKTsKKyAgICBjaGFubmVsXy5yZXNldChlbmdpbmVfLkNyZWF0ZU1l
ZGlhQ2hhbm5lbChmYWtlX2NhbGxfLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdldE1lZGlhQ29uZmlnKCksIFZpZGVvT3B0aW9ucygpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRv
T3B0aW9ucygpKSk7CiAgICAgY2hhbm5lbF8tPk9uUmVhZHlUb1NlbmQodHJ1ZSk7CiAgICAgbGFz
dF9zc3JjXyA9IDEyMzsKICAgICBzZW5kX3BhcmFtZXRlcnNfLmNvZGVjcyA9IGVuZ2luZV8uY29k
ZWNzKCk7CkBAIC0yMTIxLDYgKzIxMTYsMjkgQEAgY2xhc3MgV2ViUnRjVmlkZW9DaGFubmVsVGVz
dCA6IHB1YmxpYyBXZWJSdGNWaWRlb0VuZ2luZVRlc3QgewogICAgICAgICAgICAgICAgICAgICAm
Qml0cmF0ZUNvbnN0cmFpbnRzOjptYXhfYml0cmF0ZV9icHMsIG1heF9iaXRyYXRlX2JwcykpKTsK
ICAgfQogCisgIHZvaWQgVGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZXIoYm9vbCBleHRtYXBfYWxs
b3dfbWl4ZWQpIHsKKyAgICAvLyBGb3IgYSBjYWxsZXIsIHRoZSBhbnN3ZXIgd2lsbCBiZSBhcHBs
aWVkIGluIHNldCByZW1vdGUgZGVzY3JpcHRpb24KKyAgICAvLyB3aGVyZSBTZXRTZW5kUGFyYW1l
dGVycygpIGlzIGNhbGxlZC4KKyAgICBFWFBFQ1RfVFJVRSgKKyAgICAgICAgY2hhbm5lbF8tPkFk
ZFNlbmRTdHJlYW0oY3JpY2tldDo6U3RyZWFtUGFyYW1zOjpDcmVhdGVMZWdhY3koa1NzcmMpKSk7
CisgICAgc2VuZF9wYXJhbWV0ZXJzXy5leHRtYXBfYWxsb3dfbWl4ZWQgPSBleHRtYXBfYWxsb3df
bWl4ZWQ7CisgICAgRVhQRUNUX1RSVUUoY2hhbm5lbF8tPlNldFNlbmRQYXJhbWV0ZXJzKHNlbmRf
cGFyYW1ldGVyc18pKTsKKyAgICBjb25zdCB3ZWJydGM6OlZpZGVvU2VuZFN0cmVhbTo6Q29uZmln
JiBjb25maWcgPQorICAgICAgICBmYWtlX2NhbGxfLT5HZXRWaWRlb1NlbmRTdHJlYW1zKClbMF0t
PkdldENvbmZpZygpOworICAgIEVYUEVDVF9FUShleHRtYXBfYWxsb3dfbWl4ZWQsIGNvbmZpZy5y
dHAuZXh0bWFwX2FsbG93X21peGVkKTsKKyAgfQorCisgIHZvaWQgVGVzdEV4dG1hcEFsbG93TWl4
ZWRDYWxsZWUoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICAvLyBGb3IgYSBjYWxsZWUs
IHRoZSBhbnN3ZXIgd2lsbCBiZSBhcHBsaWVkIGluIHNldCBsb2NhbCBkZXNjcmlwdGlvbgorICAg
IC8vIHdoZXJlIFNldEV4dG1hcEFsbG93TWl4ZWQoKSBhbmQgQWRkU2VuZFN0cmVhbSgpIGFyZSBj
YWxsZWQuCisgICAgY2hhbm5lbF8tPlNldEV4dG1hcEFsbG93TWl4ZWQoZXh0bWFwX2FsbG93X21p
eGVkKTsKKyAgICBFWFBFQ1RfVFJVRSgKKyAgICAgICAgY2hhbm5lbF8tPkFkZFNlbmRTdHJlYW0o
Y3JpY2tldDo6U3RyZWFtUGFyYW1zOjpDcmVhdGVMZWdhY3koa1NzcmMpKSk7CisgICAgY29uc3Qg
d2VicnRjOjpWaWRlb1NlbmRTdHJlYW06OkNvbmZpZyYgY29uZmlnID0KKyAgICAgICAgZmFrZV9j
YWxsXy0+R2V0VmlkZW9TZW5kU3RyZWFtcygpWzBdLT5HZXRDb25maWcoKTsKKyAgICBFWFBFQ1Rf
RVEoZXh0bWFwX2FsbG93X21peGVkLCBjb25maWcucnRwLmV4dG1hcF9hbGxvd19taXhlZCk7Cisg
IH0KKwogICB2b2lkIFRlc3RTZXRTZW5kUnRwSGVhZGVyRXh0ZW5zaW9ucyhjb25zdCBzdGQ6OnN0
cmluZyYgZXh0X3VyaSkgewogICAgIC8vIEVuYWJsZSBleHRlbnNpb24uCiAgICAgY29uc3QgaW50
IGlkID0gMTsKQEAgLTIzNzcsNiArMjM5NSwyMCBAQCBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVs
VGVzdCwgUmVjdlN0cmVhbU5vUnR4KSB7CiAgIEFTU0VSVF9FUSgwVSwgcmVjdl9zdHJlYW0tPkdl
dENvbmZpZygpLnJ0cC5ydHhfc3NyYyk7CiB9CiAKKy8vIFRlc3QgcHJvcGFnYXRpb24gb2YgZXh0
bWFwIGFsbG93IG1peGVkIHNldHRpbmcuCitURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwg
U2V0RXh0bWFwQWxsb3dNaXhlZEFzQ2FsbGVyKSB7CisgIFRlc3RFeHRtYXBBbGxvd01peGVkQ2Fs
bGVyKC8qZXh0bWFwX2FsbG93X21peGVkPSovdHJ1ZSk7Cit9CitURVNUX0YoV2ViUnRjVmlkZW9D
aGFubmVsVGVzdCwgU2V0RXh0bWFwQWxsb3dNaXhlZERpc2FibGVkQXNDYWxsZXIpIHsKKyAgVGVz
dEV4dG1hcEFsbG93TWl4ZWRDYWxsZXIoLypleHRtYXBfYWxsb3dfbWl4ZWQ9Ki9mYWxzZSk7Cit9
CitURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgU2V0RXh0bWFwQWxsb3dNaXhlZEFzQ2Fs
bGVlKSB7CisgIFRlc3RFeHRtYXBBbGxvd01peGVkQ2FsbGVlKC8qZXh0bWFwX2FsbG93X21peGVk
PSovdHJ1ZSk7Cit9CitURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgU2V0RXh0bWFwQWxs
b3dNaXhlZERpc2FibGVkQXNDYWxsZWUpIHsKKyAgVGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZWUo
LypleHRtYXBfYWxsb3dfbWl4ZWQ9Ki9mYWxzZSk7Cit9CisKIFRFU1RfRihXZWJSdGNWaWRlb0No
YW5uZWxUZXN0LCBOb0hlYWRlckV4dGVzaW9uc0J5RGVmYXVsdCkgewogICBGYWtlVmlkZW9TZW5k
U3RyZWFtKiBzZW5kX3N0cmVhbSA9CiAgICAgICBBZGRTZW5kU3RyZWFtKGNyaWNrZXQ6OlN0cmVh
bVBhcmFtczo6Q3JlYXRlTGVnYWN5KGtTc3JjczFbMF0pKTsKQEAgLTI4NTMsOCArMjg4NSw4IEBA
IFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBTZXRNZWRpYUNvbmZpZ1N1c3BlbmRCZWxv
d01pbkJpdHJhdGUpIHsKICAgTWVkaWFDb25maWcgbWVkaWFfY29uZmlnID0gR2V0TWVkaWFDb25m
aWcoKTsKICAgbWVkaWFfY29uZmlnLnZpZGVvLnN1c3BlbmRfYmVsb3dfbWluX2JpdHJhdGUgPSB0
cnVlOwogCi0gIGNoYW5uZWxfLnJlc2V0KAotICAgICAgZW5naW5lXy5DcmVhdGVDaGFubmVsKGZh
a2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywgVmlkZW9PcHRpb25zKCkpKTsKKyAgY2hhbm5l
bF8ucmVzZXQoZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICBmYWtlX2NhbGxfLmdl
dCgpLCBtZWRpYV9jb25maWcsIFZpZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMo
KSkpOwogICBjaGFubmVsXy0+T25SZWFkeVRvU2VuZCh0cnVlKTsKIAogICBjaGFubmVsXy0+U2V0
U2VuZFBhcmFtZXRlcnMoc2VuZF9wYXJhbWV0ZXJzXyk7CkBAIC0yODYzLDggKzI4OTUsOCBAQCBU
RVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgU2V0TWVkaWFDb25maWdTdXNwZW5kQmVsb3dN
aW5CaXRyYXRlKSB7CiAgIEVYUEVDVF9UUlVFKHN0cmVhbS0+R2V0Q29uZmlnKCkuc3VzcGVuZF9i
ZWxvd19taW5fYml0cmF0ZSk7CiAKICAgbWVkaWFfY29uZmlnLnZpZGVvLnN1c3BlbmRfYmVsb3df
bWluX2JpdHJhdGUgPSBmYWxzZTsKLSAgY2hhbm5lbF8ucmVzZXQoCi0gICAgICBlbmdpbmVfLkNy
ZWF0ZUNoYW5uZWwoZmFrZV9jYWxsXy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMo
KSkpOworICBjaGFubmVsXy5yZXNldChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAg
IGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6
Q3J5cHRvT3B0aW9ucygpKSk7CiAgIGNoYW5uZWxfLT5PblJlYWR5VG9TZW5kKHRydWUpOwogCiAg
IGNoYW5uZWxfLT5TZXRTZW5kUGFyYW1ldGVycyhzZW5kX3BhcmFtZXRlcnNfKTsKQEAgLTMyMDQs
OCArMzIzNiw4IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBBZGFwdHNPbk92ZXJ1
c2VBbmRDaGFuZ2VSZXNvbHV0aW9uKSB7CiAgIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhj
b2RlYyk7CiAKICAgTWVkaWFDb25maWcgbWVkaWFfY29uZmlnID0gR2V0TWVkaWFDb25maWcoKTsK
LSAgY2hhbm5lbF8ucmVzZXQoCi0gICAgICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoZmFrZV9jYWxs
Xy5nZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMoKSkpOworICBjaGFubmVsXy5yZXNl
dChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGZha2VfY2FsbF8uZ2V0KCksIG1l
ZGlhX2NvbmZpZywgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAg
IGNoYW5uZWxfLT5PblJlYWR5VG9TZW5kKHRydWUpOwogICBBU1NFUlRfVFJVRShjaGFubmVsXy0+
U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1ldGVycykpOwogCkBAIC0zMjg1LDggKzMzMTcsOCBAQCBU
RVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgUHJldmlvdXNBZGFwdGF0aW9uRG9lc05vdEFw
cGx5VG9TY3JlZW5zaGFyZSkgewogCiAgIE1lZGlhQ29uZmlnIG1lZGlhX2NvbmZpZyA9IEdldE1l
ZGlhQ29uZmlnKCk7CiAgIG1lZGlhX2NvbmZpZy52aWRlby5lbmFibGVfY3B1X2FkYXB0YXRpb24g
PSB0cnVlOwotICBjaGFubmVsXy5yZXNldCgKLSAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbChm
YWtlX2NhbGxfLmdldCgpLCBtZWRpYV9jb25maWcsIFZpZGVvT3B0aW9ucygpKSk7CisgIGNoYW5u
ZWxfLnJlc2V0KGVuZ2luZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgZmFrZV9jYWxsXy5n
ZXQoKSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMoKSwgd2VicnRjOjpDcnlwdG9PcHRpb25z
KCkpKTsKICAgY2hhbm5lbF8tPk9uUmVhZHlUb1NlbmQodHJ1ZSk7CiAgIEFTU0VSVF9UUlVFKGNo
YW5uZWxfLT5TZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSk7CiAKQEAgLTMzNTksOCArMzM5
MSw4IEBAIHZvaWQgV2ViUnRjVmlkZW9DaGFubmVsVGVzdDo6VGVzdERlZ3JhZGF0aW9uUHJlZmVy
ZW5jZSgKIAogICBNZWRpYUNvbmZpZyBtZWRpYV9jb25maWcgPSBHZXRNZWRpYUNvbmZpZygpOwog
ICBtZWRpYV9jb25maWcudmlkZW8uZW5hYmxlX2NwdV9hZGFwdGF0aW9uID0gdHJ1ZTsKLSAgY2hh
bm5lbF8ucmVzZXQoCi0gICAgICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoZmFrZV9jYWxsXy5nZXQo
KSwgbWVkaWFfY29uZmlnLCBWaWRlb09wdGlvbnMoKSkpOworICBjaGFubmVsXy5yZXNldChlbmdp
bmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2Nv
bmZpZywgVmlkZW9PcHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CiAgIGNoYW5u
ZWxfLT5PblJlYWR5VG9TZW5kKHRydWUpOwogCiAgIEVYUEVDVF9UUlVFKGNoYW5uZWxfLT5TZXRT
ZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSk7CkBAIC0zMzk0LDggKzM0MjYsOCBAQCB2b2lkIFdl
YlJ0Y1ZpZGVvQ2hhbm5lbFRlc3Q6OlRlc3RDcHVBZGFwdGF0aW9uKGJvb2wgZW5hYmxlX292ZXJ1
c2UsCiAgIGlmIChlbmFibGVfb3ZlcnVzZSkgewogICAgIG1lZGlhX2NvbmZpZy52aWRlby5lbmFi
bGVfY3B1X2FkYXB0YXRpb24gPSB0cnVlOwogICB9Ci0gIGNoYW5uZWxfLnJlc2V0KAotICAgICAg
ZW5naW5lXy5DcmVhdGVDaGFubmVsKGZha2VfY2FsbF8uZ2V0KCksIG1lZGlhX2NvbmZpZywgVmlk
ZW9PcHRpb25zKCkpKTsKKyAgY2hhbm5lbF8ucmVzZXQoZW5naW5lXy5DcmVhdGVNZWRpYUNoYW5u
ZWwoCisgICAgICBmYWtlX2NhbGxfLmdldCgpLCBtZWRpYV9jb25maWcsIFZpZGVvT3B0aW9ucygp
LCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICBjaGFubmVsXy0+T25SZWFkeVRvU2VuZCh0
cnVlKTsKIAogICBFWFBFQ1RfVFJVRShjaGFubmVsXy0+U2V0U2VuZFBhcmFtZXRlcnMocGFyYW1l
dGVycykpOwpAQCAtNDU3NSwzMSArNDYwNyw1NSBAQCBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVs
VGVzdCwgVGVzdFNldERzY3BPcHRpb25zKSB7CiAgICAgICBuZXcgY3JpY2tldDo6RmFrZU5ldHdv
cmtJbnRlcmZhY2UpOwogICBNZWRpYUNvbmZpZyBjb25maWc7CiAgIHN0ZDo6dW5pcXVlX3B0cjxj
cmlja2V0OjpXZWJSdGNWaWRlb0NoYW5uZWw+IGNoYW5uZWw7CisgIHdlYnJ0Yzo6UnRwUGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwogCi0gIGNoYW5uZWwucmVzZXQoc3RhdGljX2Nhc3Q8Y3JpY2tldDo6
V2ViUnRjVmlkZW9DaGFubmVsKj4oCi0gICAgICBlbmdpbmVfLkNyZWF0ZUNoYW5uZWwoY2FsbF8u
Z2V0KCksIGNvbmZpZywgVmlkZW9PcHRpb25zKCkpKSk7Ci0gIGNoYW5uZWwtPlNldEludGVyZmFj
ZShuZXR3b3JrX2ludGVyZmFjZS5nZXQoKSk7CisgIGNoYW5uZWwucmVzZXQoCisgICAgICBzdGF0
aWNfY2FzdDxjcmlja2V0OjpXZWJSdGNWaWRlb0NoYW5uZWwqPihlbmdpbmVfLkNyZWF0ZU1lZGlh
Q2hhbm5lbCgKKyAgICAgICAgICBjYWxsXy5nZXQoKSwgY29uZmlnLCBWaWRlb09wdGlvbnMoKSwg
d2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKSk7CisgIGNoYW5uZWwtPlNldEludGVyZmFjZShuZXR3
b3JrX2ludGVyZmFjZS5nZXQoKSwgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgLy8g
RGVmYXVsdCB2YWx1ZSB3aGVuIERTQ1AgaXMgZGlzYWJsZWQgc2hvdWxkIGJlIERTQ1BfREVGQVVM
VC4KICAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9ERUZBVUxULCBuZXR3b3JrX2ludGVyZmFjZS0+ZHNj
cCgpKTsKIAorICAvLyBEZWZhdWx0IHZhbHVlIHdoZW4gRFNDUCBpcyBlbmFibGVkIGlzIGFsc28g
RFNDUF9ERUZBVUxULCB1bnRpbCBpdCBpcyBzZXQKKyAgLy8gdGhyb3VnaCBydHAgcGFyYW1ldGVy
cy4KICAgY29uZmlnLmVuYWJsZV9kc2NwID0gdHJ1ZTsKLSAgY2hhbm5lbC5yZXNldChzdGF0aWNf
Y2FzdDxjcmlja2V0OjpXZWJSdGNWaWRlb0NoYW5uZWwqPigKLSAgICAgIGVuZ2luZV8uQ3JlYXRl
Q2hhbm5lbChjYWxsXy5nZXQoKSwgY29uZmlnLCBWaWRlb09wdGlvbnMoKSkpKTsKLSAgY2hhbm5l
bC0+U2V0SW50ZXJmYWNlKG5ldHdvcmtfaW50ZXJmYWNlLmdldCgpKTsKKyAgY2hhbm5lbC5yZXNl
dCgKKyAgICAgIHN0YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvQ2hhbm5lbCo+KGVuZ2lu
ZV8uQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAgICAgIGNhbGxfLmdldCgpLCBjb25maWcsIFZp
ZGVvT3B0aW9ucygpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpKTsKKyAgY2hhbm5lbC0+U2V0
SW50ZXJmYWNlKG5ldHdvcmtfaW50ZXJmYWNlLmdldCgpLCAvKm1lZGlhX3RyYW5zcG9ydD0qL251
bGxwdHIpOworICBFWFBFQ1RfRVEocnRjOjpEU0NQX0RFRkFVTFQsIG5ldHdvcmtfaW50ZXJmYWNl
LT5kc2NwKCkpOworCisgIC8vIENyZWF0ZSBhIHNlbmQgc3RyZWFtIHRvIGNvbmZpZ3VyZQorICBF
WFBFQ1RfVFJVRShjaGFubmVsLT5BZGRTZW5kU3RyZWFtKFN0cmVhbVBhcmFtczo6Q3JlYXRlTGVn
YWN5KGtTc3JjKSkpOworICBwYXJhbWV0ZXJzID0gY2hhbm5lbC0+R2V0UnRwU2VuZFBhcmFtZXRl
cnMoa1NzcmMpOworICBBU1NFUlRfRkFMU0UocGFyYW1ldGVycy5lbmNvZGluZ3MuZW1wdHkoKSk7
CisKKyAgLy8gVmFyaW91cyBwcmlvcml0aWVzIG1hcCB0byB2YXJpb3VzIGRzY3AgdmFsdWVzLgor
ICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5ID0gNC4wOworICBBU1NF
UlRfVFJVRShjaGFubmVsLT5TZXRSdHBTZW5kUGFyYW1ldGVycyhrU3NyYywgcGFyYW1ldGVycyku
b2soKSk7CiAgIEVYUEVDVF9FUShydGM6OkRTQ1BfQUY0MSwgbmV0d29ya19pbnRlcmZhY2UtPmRz
Y3AoKSk7CisgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdvcmtfcHJpb3JpdHkgPSAwLjU7
CisgIEFTU0VSVF9UUlVFKGNoYW5uZWwtPlNldFJ0cFNlbmRQYXJhbWV0ZXJzKGtTc3JjLCBwYXJh
bWV0ZXJzKS5vaygpKTsKKyAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9DUzEsIG5ldHdvcmtfaW50ZXJm
YWNlLT5kc2NwKCkpOworCisgIC8vIEEgYmFkIHByaW9yaXR5IGRvZXMgbm90IGNoYW5nZSB0aGUg
ZHNjcCB2YWx1ZS4KKyAgcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubmV0d29ya19wcmlvcml0eSA9
IDAuMDsKKyAgQVNTRVJUX0ZBTFNFKGNoYW5uZWwtPlNldFJ0cFNlbmRQYXJhbWV0ZXJzKGtTc3Jj
LCBwYXJhbWV0ZXJzKS5vaygpKTsKKyAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9DUzEsIG5ldHdvcmtf
aW50ZXJmYWNlLT5kc2NwKCkpOwogCiAgIC8vIFBhY2tldHMgc2hvdWxkIGFsc28gc2VsZi1pZGVu
dGlmeSB0aGVpciBkc2NwIGluIFBhY2tldE9wdGlvbnMuCiAgIGNvbnN0IHVpbnQ4X3Qga0RhdGFb
MTBdID0gezB9OwogICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDx3ZWJydGM6OlRyYW5zcG9ydCo+
KGNoYW5uZWwuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAtPlNlbmRSdGNwKGtEYXRhLCBzaXpl
b2Yoa0RhdGEpKSk7Ci0gIEVYUEVDVF9FUShydGM6OkRTQ1BfQUY0MSwgbmV0d29ya19pbnRlcmZh
Y2UtPm9wdGlvbnMoKS5kc2NwKTsKKyAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9DUzEsIG5ldHdvcmtf
aW50ZXJmYWNlLT5vcHRpb25zKCkuZHNjcCk7CiAKICAgLy8gVmVyaWZ5IHRoYXQgc2V0dGluZyB0
aGUgb3B0aW9uIHRvIGZhbHNlIHJlc2V0cyB0aGUKICAgLy8gRGlmZlNlcnZDb2RlUG9pbnQuCiAg
IGNvbmZpZy5lbmFibGVfZHNjcCA9IGZhbHNlOwotICBjaGFubmVsLnJlc2V0KHN0YXRpY19jYXN0
PGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvQ2hhbm5lbCo+KAotICAgICAgZW5naW5lXy5DcmVhdGVDaGFu
bmVsKGNhbGxfLmdldCgpLCBjb25maWcsIFZpZGVvT3B0aW9ucygpKSkpOwotICBjaGFubmVsLT5T
ZXRJbnRlcmZhY2UobmV0d29ya19pbnRlcmZhY2UuZ2V0KCkpOworICBjaGFubmVsLnJlc2V0KAor
ICAgICAgc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRjVmlkZW9DaGFubmVsKj4oZW5naW5lXy5D
cmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICAgICAgY2FsbF8uZ2V0KCksIGNvbmZpZywgVmlkZW9P
cHRpb25zKCksIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSkpOworICBjaGFubmVsLT5TZXRJbnRl
cmZhY2UobmV0d29ya19pbnRlcmZhY2UuZ2V0KCksIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0
cik7CiAgIEVYUEVDVF9FUShydGM6OkRTQ1BfREVGQVVMVCwgbmV0d29ya19pbnRlcmZhY2UtPmRz
Y3AoKSk7CiB9CiAKQEAgLTQ5NTcsOCArNTAxMyw3IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5u
ZWxUZXN0LCBEZWZhdWx0UmVjZWl2ZVN0cmVhbVJlY29uZmlndXJlc1RvVXNlUnR4KSB7CiAgIG1l
bXNldChkYXRhLCAwLCBzaXplb2YoZGF0YSkpOwogICBydGM6OlNldEJFMzIoJmRhdGFbOF0sIHNz
cmNzWzBdKTsKICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQoZGF0YSwga0RhdGFMZW5n
dGgpOwotICBydGM6OlBhY2tldFRpbWUgcGFja2V0X3RpbWU7Ci0gIGNoYW5uZWxfLT5PblBhY2tl
dFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgY2hhbm5lbF8tPk9uUGFja2V0UmVj
ZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogCiAgIEFTU0VSVF9FUSgx
dSwgZmFrZV9jYWxsXy0+R2V0VmlkZW9SZWNlaXZlU3RyZWFtcygpLnNpemUoKSkKICAgICAgIDw8
ICJObyBkZWZhdWx0IHJlY2VpdmUgc3RyZWFtIGNyZWF0ZWQuIjsKQEAgLTUxMTYsOCArNTE3MSw3
IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBSZWN2VW5zaWduYWxlZFNzcmNXaXRo
U2lnbmFsZWRTdHJlYW1JZCkgewogICBtZW1zZXQoZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKICAg
cnRjOjpTZXRCRTMyKCZkYXRhWzhdLCBrSW5jb21pbmdVbnNpZ25hbGxlZFNzcmMpOwogICBydGM6
OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldChkYXRhLCBrRGF0YUxlbmd0aCk7Ci0gIHJ0Yzo6UGFj
a2V0VGltZSBwYWNrZXRfdGltZTsKLSAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tl
dCwgcGFja2V0X3RpbWUpOworICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCAv
KiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAKICAgLy8gVGhlIHN0cmVhbSBzaG91bGQgbm93IGJl
IGNyZWF0ZWQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgc3luYyBsYWJlbC4KICAgRVhQRUNUX0VRKDF1
LCBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVTdHJlYW1zKCkuc2l6ZSgpKTsKQEAgLTUxMzAs
NyArNTE4NCw3IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBSZWN2VW5zaWduYWxl
ZFNzcmNXaXRoU2lnbmFsZWRTdHJlYW1JZCkgewogICBBU1NFUlRfVFJVRShjaGFubmVsXy0+UmVt
b3ZlUmVjdlN0cmVhbShrSW5jb21pbmdVbnNpZ25hbGxlZFNzcmMpKTsKICAgRVhQRUNUX0VRKDB1
LCBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVTdHJlYW1zKCkuc2l6ZSgpKTsKIAotICBjaGFu
bmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBwYWNrZXRfdGltZSk7CisgIGNoYW5uZWxf
LT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAg
RVhQRUNUX0VRKDF1LCBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVTdHJlYW1zKCkuc2l6ZSgp
KTsKICAgRVhQRUNUX1RSVUUoCiAgICAgICBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVTdHJl
YW1zKClbMF0tPkdldENvbmZpZygpLnN5bmNfZ3JvdXAuZW1wdHkoKSk7CkBAIC01MTU2LDggKzUy
MTAsNyBAQCB2b2lkIFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3Q6OlRlc3RSZWNlaXZlVW5zaWduYWxl
ZFNzcmNQYWNrZXQoCiAgIHJ0Yzo6U2V0OChkYXRhLCAxLCBwYXlsb2FkX3R5cGUpOwogICBydGM6
OlNldEJFMzIoJmRhdGFbOF0sIGtJbmNvbWluZ1Vuc2lnbmFsbGVkU3NyYyk7CiAgIHJ0Yzo6Q29w
eU9uV3JpdGVCdWZmZXIgcGFja2V0KGRhdGEsIGtEYXRhTGVuZ3RoKTsKLSAgcnRjOjpQYWNrZXRU
aW1lIHBhY2tldF90aW1lOwotICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmcGFja2V0LCBw
YWNrZXRfdGltZSk7CisgIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIC8qIHBh
Y2tldF90aW1lX3VzICovIC0xKTsKIAogICBpZiAoZXhwZWN0X2NyZWF0ZWRfcmVjZWl2ZV9zdHJl
YW0pIHsKICAgICBFWFBFQ1RfRVEoMXUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVh
bXMoKS5zaXplKCkpCkBAIC01MTcwLDYgKzUyMjMsMTggQEAgdm9pZCBXZWJSdGNWaWRlb0NoYW5u
ZWxUZXN0OjpUZXN0UmVjZWl2ZVVuc2lnbmFsZWRTc3JjUGFja2V0KAogICB9CiB9CiAKK2NsYXNz
IFdlYlJ0Y1ZpZGVvQ2hhbm5lbERpc2NhcmRVbmtub3duU3NyY1Rlc3QgOiBwdWJsaWMgV2ViUnRj
VmlkZW9DaGFubmVsVGVzdCB7CisgcHVibGljOgorICBXZWJSdGNWaWRlb0NoYW5uZWxEaXNjYXJk
VW5rbm93blNzcmNUZXN0KCkKKyAgICAgIDogV2ViUnRjVmlkZW9DaGFubmVsVGVzdCgKKyAgICAg
ICAgICAgICJXZWJSVEMtVmlkZW8tRGlzY2FyZFBhY2tldHNXaXRoVW5rbm93blNzcmMvRW5hYmxl
ZC8iKSB7fQorfTsKKworVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbERpc2NhcmRVbmtub3duU3Ny
Y1Rlc3QsIE5vVW5zaWduYWxsZWRTdHJlYW1DcmVhdGVkKSB7CisgIFRlc3RSZWNlaXZlVW5zaWdu
YWxlZFNzcmNQYWNrZXQoR2V0RW5naW5lQ29kZWMoIlZQOCIpLmlkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIGV4cGVjdF9jcmVhdGVkX3JlY2VpdmVfc3RyZWFt
ICovKTsKK30KKwogVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIFZwOFBhY2tldENyZWF0
ZXNVbnNpZ25hbGxlZFN0cmVhbSkgewogICBUZXN0UmVjZWl2ZVVuc2lnbmFsZWRTc3JjUGFja2V0
KEdldEVuZ2luZUNvZGVjKCJWUDgiKS5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cnVlIC8qIGV4cGVjdF9jcmVhdGVkX3JlY2VpdmVfc3RyZWFtICovKTsKQEAgLTUyMzIs
OCArNTI5Nyw3IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBSZWNlaXZlRGlmZmVy
ZW50VW5zaWduYWxlZFNzcmMpIHsKICAgcnRwSGVhZGVyLnNzcmMgPSBrSW5jb21pbmdVbnNpZ25h
bGxlZFNzcmMgKyAxOwogICBjcmlja2V0OjpTZXRSdHBIZWFkZXIoZGF0YSwgc2l6ZW9mKGRhdGEp
LCBydHBIZWFkZXIpOwogICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldChkYXRhLCBzaXpl
b2YoZGF0YSkpOwotICBydGM6OlBhY2tldFRpbWUgcGFja2V0X3RpbWU7Ci0gIGNoYW5uZWxfLT5P
blBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgY2hhbm5lbF8tPk9uUGFj
a2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICAvLyBWUDgg
cGFja2V0IHNob3VsZCBjcmVhdGUgZGVmYXVsdCByZWNlaXZlIHN0cmVhbS4KICAgQVNTRVJUX0VR
KDF1LCBmYWtlX2NhbGxfLT5HZXRWaWRlb1JlY2VpdmVTdHJlYW1zKCkuc2l6ZSgpKTsKICAgRmFr
ZVZpZGVvUmVjZWl2ZVN0cmVhbSogcmVjdl9zdHJlYW0gPSBmYWtlX2NhbGxfLT5HZXRWaWRlb1Jl
Y2VpdmVTdHJlYW1zKClbMF07CkBAIC01MjQ5LDcgKzUzMTMsNyBAQCBURVNUX0YoV2ViUnRjVmlk
ZW9DaGFubmVsVGVzdCwgUmVjZWl2ZURpZmZlcmVudFVuc2lnbmFsZWRTc3JjKSB7CiAgIHJ0cEhl
YWRlci5zc3JjID0ga0luY29taW5nVW5zaWduYWxsZWRTc3JjICsgMjsKICAgY3JpY2tldDo6U2V0
UnRwSGVhZGVyKGRhdGEsIHNpemVvZihkYXRhKSwgcnRwSGVhZGVyKTsKICAgcnRjOjpDb3B5T25X
cml0ZUJ1ZmZlciBwYWNrZXQyKGRhdGEsIHNpemVvZihkYXRhKSk7Ci0gIGNoYW5uZWxfLT5PblBh
Y2tldFJlY2VpdmVkKCZwYWNrZXQyLCBwYWNrZXRfdGltZSk7CisgIGNoYW5uZWxfLT5PblBhY2tl
dFJlY2VpdmVkKCZwYWNrZXQyLCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIC8vIFZQOSBw
YWNrZXQgc2hvdWxkIHJlcGxhY2UgdGhlIGRlZmF1bHQgcmVjZWl2ZSBTU1JDLgogICBBU1NFUlRf
RVEoMXUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKS5zaXplKCkpOwogICBy
ZWN2X3N0cmVhbSA9IGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKVswXTsKQEAg
LTUyNjYsNyArNTMzMCw3IEBAIFRFU1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LCBSZWNlaXZl
RGlmZmVyZW50VW5zaWduYWxlZFNzcmMpIHsKICAgcnRwSGVhZGVyLnNzcmMgPSBrSW5jb21pbmdV
bnNpZ25hbGxlZFNzcmMgKyAzOwogICBjcmlja2V0OjpTZXRSdHBIZWFkZXIoZGF0YSwgc2l6ZW9m
KGRhdGEpLCBydHBIZWFkZXIpOwogICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldDMoZGF0
YSwgc2l6ZW9mKGRhdGEpKTsKLSAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldDMs
IHBhY2tldF90aW1lKTsKKyAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldDMsIC8q
IHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgLy8gSDI2NCBwYWNrZXQgc2hvdWxkIHJlcGxhY2Ug
dGhlIGRlZmF1bHQgcmVjZWl2ZSBTU1JDLgogICBBU1NFUlRfRVEoMXUsIGZha2VfY2FsbF8tPkdl
dFZpZGVvUmVjZWl2ZVN0cmVhbXMoKS5zaXplKCkpOwogICByZWN2X3N0cmVhbSA9IGZha2VfY2Fs
bF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMoKVswXTsKQEAgLTUzMDAsOCArNTM2NCw3IEBAIFRF
U1RfRihXZWJSdGNWaWRlb0NoYW5uZWxUZXN0LAogICBydHBfaGVhZGVyLnNzcmMgPSBrU3NyY3Mz
WzBdOwogICBjcmlja2V0OjpTZXRSdHBIZWFkZXIoZGF0YSwgc2l6ZW9mKGRhdGEpLCBydHBfaGVh
ZGVyKTsKICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQoZGF0YSwgc2l6ZW9mKGRhdGEp
KTsKLSAgcnRjOjpQYWNrZXRUaW1lIHBhY2tldF90aW1lOwotICBjaGFubmVsXy0+T25QYWNrZXRS
ZWNlaXZlZCgmcGFja2V0LCBwYWNrZXRfdGltZSk7CisgIGNoYW5uZWxfLT5PblBhY2tldFJlY2Vp
dmVkKCZwYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgLy8gRGVmYXVsdCByZWNl
aXZlIHN0cmVhbSBzaG91bGQgYmUgY3JlYXRlZC4KICAgQVNTRVJUX0VRKDF1LCBmYWtlX2NhbGxf
LT5HZXRWaWRlb1JlY2VpdmVTdHJlYW1zKCkuc2l6ZSgpKTsKICAgRmFrZVZpZGVvUmVjZWl2ZVN0
cmVhbSogcmVjdl9zdHJlYW0wID0KQEAgLTUzMTksNyArNTM4Miw3IEBAIFRFU1RfRihXZWJSdGNW
aWRlb0NoYW5uZWxUZXN0LAogICBydHBfaGVhZGVyLnNzcmMgPSBrU3NyY3MzWzFdOwogICBjcmlj
a2V0OjpTZXRSdHBIZWFkZXIoZGF0YSwgc2l6ZW9mKGRhdGEpLCBydHBfaGVhZGVyKTsKICAgcGFj
a2V0LlNldERhdGEoZGF0YSwgc2l6ZW9mKGRhdGEpKTsKLSAgY2hhbm5lbF8tPk9uUGFja2V0UmVj
ZWl2ZWQoJnBhY2tldCwgcGFja2V0X3RpbWUpOworICBjaGFubmVsXy0+T25QYWNrZXRSZWNlaXZl
ZCgmcGFja2V0LCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIC8vIE5ldyBkZWZhdWx0IHJl
Y2VpdmUgc3RyZWFtIHNob3VsZCBiZSBjcmVhdGVkLCBidXQgb2xkIHN0cmVhbSBzaG91bGQgcmVt
YWluLgogICBBU1NFUlRfRVEoMnUsIGZha2VfY2FsbF8tPkdldFZpZGVvUmVjZWl2ZVN0cmVhbXMo
KS5zaXplKCkpOwogICBFWFBFQ1RfRVEocmVjdl9zdHJlYW0wLCBmYWtlX2NhbGxfLT5HZXRWaWRl
b1JlY2VpdmVTdHJlYW1zKClbMF0pOwpAQCAtNTY0Niw2ICs1NzA5LDI4IEBAIFRFU1RfRihXZWJS
dGNWaWRlb0NoYW5uZWxUZXN0LCBTZXRSdHBTZW5kUGFyYW1ldGVyc1ByaW9yaXR5U2ltdWxjYXN0
U3RyZWFtcykgewogICBFWFBFQ1RfVFJVRShjaGFubmVsXy0+U2V0VmlkZW9TZW5kKHByaW1hcnlf
c3NyYywgbnVsbHB0ciwgbnVsbHB0cikpOwogfQogCisvLyBSVENSdHBFbmNvZGluZ1BhcmFtZXRl
cnMubmV0d29ya19wcmlvcml0eSBtdXN0IGJlIG9uZSBvZiBhIGZldyB2YWx1ZXMKKy8vIGRlcml2
ZWQgZnJvbSB0aGUgZGVmYXVsdCBwcmlvcml0eSwgY29ycmVzcG9uZGluZyB0byB2ZXJ5LWxvdywg
bG93LCBtZWRpdW0sCisvLyBvciBoaWdoLgorVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3Qs
IFNldFJ0cFNlbmRQYXJhbWV0ZXJzSW52YWxpZE5ldHdvcmtQcmlvcml0eSkgeworICBBZGRTZW5k
U3RyZWFtKCk7CisgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gY2hhbm5lbF8t
PkdldFJ0cFNlbmRQYXJhbWV0ZXJzKGxhc3Rfc3NyY18pOworICBFWFBFQ1RfRVEoMVVMLCBwYXJh
bWV0ZXJzLmVuY29kaW5ncy5zaXplKCkpOworICBFWFBFQ1RfRVEod2VicnRjOjprRGVmYXVsdEJp
dHJhdGVQcmlvcml0eSwKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdv
cmtfcHJpb3JpdHkpOworCisgIGRvdWJsZSBnb29kX3ZhbHVlc1tdID0gezAuNSwgMS4wLCAyLjAs
IDQuMH07CisgIGRvdWJsZSBiYWRfdmFsdWVzW10gPSB7LTEuMCwgMC4wLCAwLjQ5LCAwLjUxLCAx
LjEsIDMuOTksIDQuMSwgNS4wfTsKKyAgZm9yIChhdXRvIGl0IDogZ29vZF92YWx1ZXMpIHsKKyAg
ICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5ID0gaXQ7CisgICAgRVhQ
RUNUX1RSVUUoY2hhbm5lbF8tPlNldFJ0cFNlbmRQYXJhbWV0ZXJzKGxhc3Rfc3NyY18sIHBhcmFt
ZXRlcnMpLm9rKCkpOworICB9CisgIGZvciAoYXV0byBpdCA6IGJhZF92YWx1ZXMpIHsKKyAgICBw
YXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5ID0gaXQ7CisgICAgRVhQRUNU
X0ZBTFNFKGNoYW5uZWxfLT5TZXRSdHBTZW5kUGFyYW1ldGVycyhsYXN0X3NzcmNfLCBwYXJhbWV0
ZXJzKS5vaygpKTsKKyAgfQorfQorCiBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVzdCwgR2V0
QW5kU2V0UnRwU2VuZFBhcmFtZXRlcnNNYXhGcmFtZXJhdGUpIHsKICAgY29uc3Qgc2l6ZV90IGtO
dW1TaW11bGNhc3RTdHJlYW1zID0gMzsKICAgU2V0VXBTaW11bGNhc3QodHJ1ZSwgZmFsc2UpOwpA
QCAtNjYzNCw4ICs2NzE5LDcgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3QsIEdldFJ0
cFJlY2VpdmVQYXJhbWV0ZXJzV2l0aFVuc2lnbmFsZWRTc3JjKSB7CiAgIHJ0cEhlYWRlci5zc3Jj
ID0ga0luY29taW5nVW5zaWduYWxsZWRTc3JjOwogICBjcmlja2V0OjpTZXRSdHBIZWFkZXIoZGF0
YSwgc2l6ZW9mKGRhdGEpLCBydHBIZWFkZXIpOwogICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBh
Y2tldChkYXRhLCBzaXplb2YoZGF0YSkpOwotICBydGM6OlBhY2tldFRpbWUgcGFja2V0X3RpbWU7
Ci0gIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAg
Y2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tldCwgLyogcGFja2V0X3RpbWVfdXMgKi8g
LTEpOwogCiAgIC8vIFRoZSB8c3NyY3wgbWVtYmVyIHNob3VsZCBzdGlsbCBiZSB1bnNldC4KICAg
cnRwX3BhcmFtZXRlcnMgPSBjaGFubmVsXy0+R2V0UnRwUmVjZWl2ZVBhcmFtZXRlcnMoMCk7CkBA
IC02Njk5LDE2ICs2NzgzLDIxIEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbFNpbXVsY2FzdFRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgICA6IGZha2VfY2FsbF8oKSwKICAgICAg
ICAgZW5jb2Rlcl9mYWN0b3J5XyhuZXcgY3JpY2tldDo6RmFrZVdlYlJ0Y1ZpZGVvRW5jb2RlckZh
Y3RvcnkpLAogICAgICAgICBkZWNvZGVyX2ZhY3RvcnlfKG5ldyBjcmlja2V0OjpGYWtlV2ViUnRj
VmlkZW9EZWNvZGVyRmFjdG9yeSksCisgICAgICAgIG1vY2tfcmF0ZV9hbGxvY2F0b3JfZmFjdG9y
eV8oCisgICAgICAgICAgICBuZXcgd2VicnRjOjpNb2NrVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFj
dG9yeSksCiAgICAgICAgIGVuZ2luZV8oc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkZha2VXZWJS
dGNWaWRlb0VuY29kZXJGYWN0b3J5PigKICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlcl9mYWN0
b3J5XyksCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkZha2VXZWJS
dGNWaWRlb0RlY29kZXJGYWN0b3J5PigKLSAgICAgICAgICAgICAgICAgICAgZGVjb2Rlcl9mYWN0
b3J5XykpLAorICAgICAgICAgICAgICAgICAgICBkZWNvZGVyX2ZhY3RvcnlfKSwKKyAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0
b3J5PigKKyAgICAgICAgICAgICAgICAgICAgbW9ja19yYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xykp
LAogICAgICAgICBsYXN0X3NzcmNfKDApIHt9CiAKICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsK
ICAgICBlbmNvZGVyX2ZhY3RvcnlfLT5BZGRTdXBwb3J0ZWRWaWRlb0NvZGVjVHlwZSgiVlA4Iik7
Ci0gICAgY2hhbm5lbF8ucmVzZXQoCi0gICAgICAgIGVuZ2luZV8uQ3JlYXRlQ2hhbm5lbCgmZmFr
ZV9jYWxsXywgR2V0TWVkaWFDb25maWcoKSwgVmlkZW9PcHRpb25zKCkpKTsKKyAgICBjaGFubmVs
Xy5yZXNldChlbmdpbmVfLkNyZWF0ZU1lZGlhQ2hhbm5lbCgmZmFrZV9jYWxsXywgR2V0TWVkaWFD
b25maWcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
aWRlb09wdGlvbnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpOwogICAgIGNoYW5uZWxfLT5PblJlYWR5VG9T
ZW5kKHRydWUpOwogICAgIGxhc3Rfc3NyY18gPSAxMjM7CiAgIH0KQEAgLTY4NTgsNiArNjk0Nyw3
IEBAIGNsYXNzIFdlYlJ0Y1ZpZGVvQ2hhbm5lbFNpbXVsY2FzdFRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CiAgIEZha2VDYWxsIGZha2VfY2FsbF87CiAgIGNyaWNrZXQ6OkZha2VXZWJSdGNW
aWRlb0VuY29kZXJGYWN0b3J5KiBlbmNvZGVyX2ZhY3RvcnlfOwogICBjcmlja2V0OjpGYWtlV2Vi
UnRjVmlkZW9EZWNvZGVyRmFjdG9yeSogZGVjb2Rlcl9mYWN0b3J5XzsKKyAgd2VicnRjOjpNb2Nr
VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSogbW9ja19yYXRlX2FsbG9jYXRvcl9mYWN0b3J5
XzsKICAgV2ViUnRjVmlkZW9FbmdpbmUgZW5naW5lXzsKICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
TWVkaWFDaGFubmVsPiBjaGFubmVsXzsKICAgdWludDMyX3QgbGFzdF9zc3JjXzsKQEAgLTY5MDUs
MTYgKzY5OTUsMjAgQEAgVEVTVF9GKFdlYlJ0Y1ZpZGVvQ2hhbm5lbFNpbXVsY2FzdFRlc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIAotLy8gVGhlIGZha2UgY2xvY2sg
bmVlZHMgdG8gYmUgaW5pdGlhbGl6ZSBiZWZvcmUgdGhlIGNhbGwuCi0vLyBTbyBkZWZlciBjcmVh
dGluZyBjYWxsIGluIGJhc2UgY2xhc3MuCi1jbGFzcyBXZWJSdGNWaWRlb0NoYW5uZWxUZXN0V2l0
aENsb2NrIDogcHVibGljIFdlYlJ0Y1ZpZGVvQ2hhbm5lbEJhc2VUZXN0IHsKK2NsYXNzIFdlYlJ0
Y1ZpZGVvRmFrZUNsb2NrIHsKICBwdWJsaWM6Ci0gIFdlYlJ0Y1ZpZGVvQ2hhbm5lbFRlc3RXaXRo
Q2xvY2soKSB7CisgIFdlYlJ0Y1ZpZGVvRmFrZUNsb2NrKCkgewogICAgIGZha2VfY2xvY2tfLkFk
dmFuY2VUaW1lKHdlYnJ0Yzo6VGltZURlbHRhOjptcygxKSk7ICAvLyBhdm9pZCB0aW1lPTAKICAg
fQogICBydGM6OlNjb3BlZEZha2VDbG9jayBmYWtlX2Nsb2NrXzsKIH07CiAKKy8vIFRoZSBmYWtl
IGNsb2NrIG5lZWRzIHRvIGJlIGluaXRpYWxpemVkIGJlZm9yZSB0aGUgY2FsbCwgYW5kIG5vdAor
Ly8gZGVzdHJveWVkIHVudGlsIGFmdGVyIGFsbCB0aHJlYWRzIHNwYXduZWQgYnkgdGhlIHRlc3Qg
aGF2ZSBiZWVuIHN0b3BwZWQuCisvLyBUaGlzIG1peGluIGVuc3VyZXMgdGhhdC4KK2NsYXNzIFdl
YlJ0Y1ZpZGVvQ2hhbm5lbFRlc3RXaXRoQ2xvY2sgOiBwdWJsaWMgV2ViUnRjVmlkZW9GYWtlQ2xv
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYlJ0
Y1ZpZGVvQ2hhbm5lbEJhc2VUZXN0IHt9OworCiBURVNUX0YoV2ViUnRjVmlkZW9DaGFubmVsVGVz
dFdpdGhDbG9jaywgR2V0U291cmNlcykgewogICB1aW50OF90IGRhdGExW10gPSB7MHg4MCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKICAgICAgICAgICAgICAgICAgICAgIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5l
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvZW5n
aW5lL3dlYnJ0Y3ZvaWNlZW5naW5lLmNjCmluZGV4IDhhZTdiOTkxZTgwNTM5MmRjOTI1NGFlYTg0
YjEzODYxODZiNzNmZjkuLjE2NjBiZDg2ZTExNGFhZmJjZWMxNjQ3ZDYzODhiOTE1YWFiZjRkYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21l
ZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2luZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9pY2VlbmdpbmUuY2MK
QEAgLTE5LDggKzE5LDEwIEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+
CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIKICNpbmNsdWRlICJhcGkvY2FsbC9hdWRpb19z
aW5rLmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJtZWRpYS9iYXNlL2F1ZGlvc291cmNlLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRp
YWNvbnN0YW50cy5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2Uvc3RyZWFtcGFyYW1zLmgiCkBAIC0z
OCwxMCArNDAsOCBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Ry
aW5ncy9hdWRpb19mb3JtYXRfdG9fc3RyaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
cy9zdHJpbmdfYnVpbGRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0L2Jhc2U2NC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3RyYWNlX2V2ZW50LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1
ZGUvZmllbGRfdHJpYWwuaCIKQEAgLTU4LDExICs1OCw2IEBAIGNvbnN0ZXhwciBpbnQga05hY2tS
dHBIaXN0b3J5TXMgPSA1MDAwOwogY29uc3QgaW50IGtPcHVzTWluQml0cmF0ZUJwcyA9IDYwMDA7
CiBjb25zdCBpbnQga09wdXNCaXRyYXRlRmJCcHMgPSAzMjAwMDsKIAotLy8gRGVmYXVsdCBhdWRp
byBkc2NwIHZhbHVlLgotLy8gU2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI0NzQg
Zm9yIGRldGFpbHMuCi0vLyBTZWUgYWxzbyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFm
dC1qZW5uaW5ncy1ydGN3ZWItcW9zLTAwCi1jb25zdCBydGM6OkRpZmZTZXJ2Q29kZVBvaW50IGtB
dWRpb0RzY3BWYWx1ZSA9IHJ0Yzo6RFNDUF9FRjsKLQogY29uc3QgaW50IGtNaW5UZWxlcGhvbmVF
dmVudENvZGUgPSAwOyAgLy8gUkZDNDczMyAoU2VjdGlvbiAyLjMuMSkKIGNvbnN0IGludCBrTWF4
VGVsZXBob25lRXZlbnRDb2RlID0gMjU1OwogCkBAIC04MywxMiArNzgsMTIgQEAgY2xhc3MgUHJv
eHlTaW5rIDogcHVibGljIHdlYnJ0Yzo6QXVkaW9TaW5rSW50ZXJmYWNlIHsKIAogYm9vbCBWYWxp
ZGF0ZVN0cmVhbVBhcmFtcyhjb25zdCBTdHJlYW1QYXJhbXMmIHNwKSB7CiAgIGlmIChzcC5zc3Jj
cy5lbXB0eSgpKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIk5vIFNTUkNzIGluIHN0cmVh
bSBwYXJhbWV0ZXJzOiAiIDw8IHNwLlRvU3RyaW5nKCk7CisgICAgUlRDX0RMT0coTFNfRVJST1Ip
IDw8ICJObyBTU1JDcyBpbiBzdHJlYW0gcGFyYW1ldGVyczogIiA8PCBzcC5Ub1N0cmluZygpOwog
ICAgIHJldHVybiBmYWxzZTsKICAgfQogICBpZiAoc3Auc3NyY3Muc2l6ZSgpID4gMSkgewotICAg
IFJUQ19MT0coTFNfRVJST1IpIDw8ICJNdWx0aXBsZSBTU1JDcyBpbiBzdHJlYW0gcGFyYW1ldGVy
czogIgotICAgICAgICAgICAgICAgICAgICAgIDw8IHNwLlRvU3RyaW5nKCk7CisgICAgUlRDX0RM
T0coTFNfRVJST1IpIDw8ICJNdWx0aXBsZSBTU1JDcyBpbiBzdHJlYW0gcGFyYW1ldGVyczogIgor
ICAgICAgICAgICAgICAgICAgICAgICA8PCBzcC5Ub1N0cmluZygpOwogICAgIHJldHVybiBmYWxz
ZTsKICAgfQogICByZXR1cm4gdHJ1ZTsKQEAgLTExMCw3ICsxMDUsNyBAQCBzdGQ6OnN0cmluZyBU
b1N0cmluZyhjb25zdCBBdWRpb0NvZGVjJiBjb2RlYykgewogfQogCiBib29sIElzQ29kZWMoY29u
c3QgQXVkaW9Db2RlYyYgY29kZWMsIGNvbnN0IGNoYXIqIHJlZl9uYW1lKSB7Ci0gIHJldHVybiAo
X3N0cmljbXAoY29kZWMubmFtZS5jX3N0cigpLCByZWZfbmFtZSkgPT0gMCk7CisgIHJldHVybiBh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjLm5hbWUsIHJlZl9uYW1lKTsKIH0KIAogYm9vbCBG
aW5kQ29kZWMoY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIGNvZGVjcywKQEAgLTI4NCw2
ICsyNzksNyBAQCB2b2lkIFdlYlJ0Y1ZvaWNlRW5naW5lOjpJbml0KCkgewogICAgIG9wdGlvbnMu
c3RlcmVvX3N3YXBwaW5nID0gZmFsc2U7CiAgICAgb3B0aW9ucy5hdWRpb19qaXR0ZXJfYnVmZmVy
X21heF9wYWNrZXRzID0gNTA7CiAgICAgb3B0aW9ucy5hdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3Rf
YWNjZWxlcmF0ZSA9IGZhbHNlOworICAgIG9wdGlvbnMuYXVkaW9faml0dGVyX2J1ZmZlcl9taW5f
ZGVsYXlfbXMgPSAwOwogICAgIG9wdGlvbnMudHlwaW5nX2RldGVjdGlvbiA9IHRydWU7CiAgICAg
b3B0aW9ucy5leHBlcmltZW50YWxfYWdjID0gZmFsc2U7CiAgICAgb3B0aW9ucy5leHRlbmRlZF9m
aWx0ZXJfYWVjID0gZmFsc2U7CkBAIC0zMDMsMTIgKzI5OSwxNCBAQCBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpBdWRpb1N0YXRlPiBXZWJSdGNWb2ljZUVuZ2luZTo6R2V0QXVkaW9TdGF0ZSgp
CiAgIHJldHVybiBhdWRpb19zdGF0ZV87CiB9CiAKLVZvaWNlTWVkaWFDaGFubmVsKiBXZWJSdGNW
b2ljZUVuZ2luZTo6Q3JlYXRlQ2hhbm5lbCgKK1ZvaWNlTWVkaWFDaGFubmVsKiBXZWJSdGNWb2lj
ZUVuZ2luZTo6Q3JlYXRlTWVkaWFDaGFubmVsKAogICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKICAg
ICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0
aW9ucykgeworICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywKKyAgICBjb25zdCB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSB7CiAgIFJUQ19EQ0hFQ0sod29ya2Vy
X3RocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotICByZXR1cm4gbmV3IFdl
YlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKHRoaXMsIGNvbmZpZywgb3B0aW9ucywgY2FsbCk7CisgIHJl
dHVybiBuZXcgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwodGhpcywgY29uZmlnLCBvcHRpb25zLCBj
cnlwdG9fb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs
KTsKIH0KIAogYm9vbCBXZWJSdGNWb2ljZUVuZ2luZTo6QXBwbHlPcHRpb25zKGNvbnN0IEF1ZGlv
T3B0aW9ucyYgb3B0aW9uc19pbikgewpAQCAtMzIwLDExICszMTgsNiBAQCBib29sIFdlYlJ0Y1Zv
aWNlRW5naW5lOjpBcHBseU9wdGlvbnMoY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zX2luKSB7
CiAgIC8vIFNldCBhbmQgYWRqdXN0IGVjaG8gY2FuY2VsbGVyIG9wdGlvbnMuCiAgIC8vIGtFY0Nv
bmZlcmVuY2UgaXMgQUVDIHdpdGggaGlnaCBzdXBwcmVzc2lvbi4KICAgd2VicnRjOjpFY01vZGVz
IGVjX21vZGUgPSB3ZWJydGM6OmtFY0NvbmZlcmVuY2U7Ci0gIGlmIChvcHRpb25zLmFlY21fZ2Vu
ZXJhdGVfY29tZm9ydF9ub2lzZSAmJgotICAgICAgKm9wdGlvbnMuYWVjbV9nZW5lcmF0ZV9jb21m
b3J0X25vaXNlKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKQotICAgICAgICA8PCAiSWdub3Jp
bmcgZGVwcmVjYXRlZCBtb2JpbGUgQUVDIHNldHRpbmc6IGNvbWZvcnQgbm9pc2UiOwotICB9CiAK
ICNpZiBkZWZpbmVkKFdFQlJUQ19JT1MpCiAgIGlmIChvcHRpb25zLmlvc19mb3JjZV9zb2Z0d2Fy
ZV9hZWNfSEFDSyAmJgpAQCAtNDkwLDYgKzQ4MywxMiBAQCBib29sIFdlYlJ0Y1ZvaWNlRW5naW5l
OjpBcHBseU9wdGlvbnMoY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zX2luKSB7CiAgICAgYXVk
aW9faml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGVfID0KICAgICAgICAgKm9wdGlvbnMuYXVk
aW9faml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGU7CiAgIH0KKyAgaWYgKG9wdGlvbnMuYXVk
aW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXMpIHsKKyAgICBSVENfTE9HKExTX0lORk8pIDw8
ICJOZXRFcSBtaW5pbXVtIGRlbGF5IGlzICIKKyAgICAgICAgICAgICAgICAgICAgIDw8ICpvcHRp
b25zLmF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zOworICAgIGF1ZGlvX2ppdHRlcl9i
dWZmZXJfbWluX2RlbGF5X21zXyA9CisgICAgICAgICpvcHRpb25zLmF1ZGlvX2ppdHRlcl9idWZm
ZXJfbWluX2RlbGF5X21zOworICB9CiAKICAgaWYgKG9wdGlvbnMudHlwaW5nX2RldGVjdGlvbikg
ewogICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlR5cGluZyBkZXRlY3Rpb24gaXMgZW5hYmxlZD8g
IgpAQCAtNzEzLDE2ICs3MTIsMjAgQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6Oldl
YlJ0Y0F1ZGlvU2VuZFN0cmVhbQogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdHJhY2tfaWQsCiAg
ICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbTo6Q29uZmln
OjpTZW5kQ29kZWNTcGVjPiYKICAgICAgICAgICBzZW5kX2NvZGVjX3NwZWMsCisgICAgICBib29s
IGV4dG1hcF9hbGxvd19taXhlZCwKICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UnRw
RXh0ZW5zaW9uPiYgZXh0ZW5zaW9ucywKICAgICAgIGludCBtYXhfc2VuZF9iaXRyYXRlX2JwcywK
KyAgICAgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tcywKICAgICAgIGNvbnN0IGFic2w6Om9w
dGlvbmFsPHN0ZDo6c3RyaW5nPiYgYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZywKICAgICAg
IHdlYnJ0Yzo6Q2FsbCogY2FsbCwKICAgICAgIHdlYnJ0Yzo6VHJhbnNwb3J0KiBzZW5kX3RyYW5z
cG9ydCwKKyAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5z
cG9ydCwKICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRW5jb2Rl
ckZhY3Rvcnk+JiBlbmNvZGVyX2ZhY3RvcnksCiAgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDx3
ZWJydGM6OkF1ZGlvQ29kZWNQYWlySWQ+IGNvZGVjX3BhaXJfaWQsCi0gICAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9y
KQorICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RnJhbWVFbmNyeXB0b3JJbnRlcmZh
Y2U+IGZyYW1lX2VuY3J5cHRvciwKKyAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYg
Y3J5cHRvX29wdGlvbnMpCiAgICAgICA6IGNhbGxfKGNhbGwpLAotICAgICAgICBjb25maWdfKHNl
bmRfdHJhbnNwb3J0KSwKKyAgICAgICAgY29uZmlnXyhzZW5kX3RyYW5zcG9ydCwgbWVkaWFfdHJh
bnNwb3J0KSwKICAgICAgICAgc2VuZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXygKICAgICAgICAg
ICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVNlbmRTaWRlQndlLVdp
dGhPdmVyaGVhZCIpKSwKICAgICAgICAgbWF4X3NlbmRfYml0cmF0ZV9icHNfKG1heF9zZW5kX2Jp
dHJhdGVfYnBzKSwKQEAgLTczMiwxMiArNzM1LDE3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFD
aGFubmVsOjpXZWJSdGNBdWRpb1NlbmRTdHJlYW0KICAgICBjb25maWdfLnJ0cC5zc3JjID0gc3Ny
YzsKICAgICBjb25maWdfLnJ0cC5taWQgPSBtaWQ7CiAgICAgY29uZmlnXy5ydHAuY19uYW1lID0g
Y19uYW1lOworICAgIGNvbmZpZ18ucnRwLmV4dG1hcF9hbGxvd19taXhlZCA9IGV4dG1hcF9hbGxv
d19taXhlZDsKICAgICBjb25maWdfLnJ0cC5leHRlbnNpb25zID0gZXh0ZW5zaW9uczsKKyAgICBj
b25maWdfLmhhc19kc2NwID0gcnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5uZXR3b3JrX3By
aW9yaXR5ICE9CisgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRl
UHJpb3JpdHk7CiAgICAgY29uZmlnXy5hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnID0gYXVk
aW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZzsKICAgICBjb25maWdfLmVuY29kZXJfZmFjdG9yeSA9
IGVuY29kZXJfZmFjdG9yeTsKICAgICBjb25maWdfLmNvZGVjX3BhaXJfaWQgPSBjb2RlY19wYWly
X2lkOwogICAgIGNvbmZpZ18udHJhY2tfaWQgPSB0cmFja19pZDsKICAgICBjb25maWdfLmZyYW1l
X2VuY3J5cHRvciA9IGZyYW1lX2VuY3J5cHRvcjsKKyAgICBjb25maWdfLmNyeXB0b19vcHRpb25z
ID0gY3J5cHRvX29wdGlvbnM7CisgICAgY29uZmlnXy5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcyA9
IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zOwogICAgIHJ0cF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3Nb
MF0uc3NyYyA9IHNzcmM7CiAgICAgcnRwX3BhcmFtZXRlcnNfLnJ0Y3AuY25hbWUgPSBjX25hbWU7
CiAgICAgcnRwX3BhcmFtZXRlcnNfLmhlYWRlcl9leHRlbnNpb25zID0gZXh0ZW5zaW9uczsKQEAg
LTc2OCw2ICs3NzYsMTEgQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0Y0F1
ZGlvU2VuZFN0cmVhbQogICAgIFJlY29uZmlndXJlQXVkaW9TZW5kU3RyZWFtKCk7CiAgIH0KIAor
ICB2b2lkIFNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAg
ICBjb25maWdfLnJ0cC5leHRtYXBfYWxsb3dfbWl4ZWQgPSBleHRtYXBfYWxsb3dfbWl4ZWQ7Cisg
ICAgUmVjb25maWd1cmVBdWRpb1NlbmRTdHJlYW0oKTsKKyAgfQorCiAgIHZvaWQgU2V0TWlkKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtaWQpIHsKICAgICBSVENfRENIRUNLKHdvcmtlcl90aHJlYWRfY2hl
Y2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKICAgICBpZiAoY29uZmlnXy5ydHAubWlkID09
IG1pZCkgewpAQCAtOTI4LDEyICs5NDEsMTYgQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5u
ZWw6OldlYlJ0Y0F1ZGlvU2VuZFN0cmVhbQogICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4g
b2xkX3J0cF9tYXhfYml0cmF0ZSA9CiAgICAgICAgIHJ0cF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3Nb
MF0ubWF4X2JpdHJhdGVfYnBzOwogICAgIGRvdWJsZSBvbGRfcHJpb3JpdHkgPSBydHBfcGFyYW1l
dGVyc18uZW5jb2RpbmdzWzBdLmJpdHJhdGVfcHJpb3JpdHk7CisgICAgZG91YmxlIG9sZF9kc2Nw
ID0gcnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5OwogICAgIHJ0
cF9wYXJhbWV0ZXJzXyA9IHBhcmFtZXRlcnM7CiAgICAgY29uZmlnXy5iaXRyYXRlX3ByaW9yaXR5
ID0gcnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5iaXRyYXRlX3ByaW9yaXR5OworICAgIGNv
bmZpZ18uaGFzX2RzY3AgPSAocnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5uZXR3b3JrX3By
aW9yaXR5ICE9CisgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OmtEZWZhdWx0Qml0cmF0
ZVByaW9yaXR5KTsKIAogICAgIGJvb2wgcmVjb25maWd1cmVfc2VuZF9zdHJlYW0gPQogICAgICAg
ICAocnRwX3BhcmFtZXRlcnNfLmVuY29kaW5nc1swXS5tYXhfYml0cmF0ZV9icHMgIT0gb2xkX3J0
cF9tYXhfYml0cmF0ZSkgfHwKLSAgICAgICAgKHJ0cF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3NbMF0u
Yml0cmF0ZV9wcmlvcml0eSAhPSBvbGRfcHJpb3JpdHkpOworICAgICAgICAocnRwX3BhcmFtZXRl
cnNfLmVuY29kaW5nc1swXS5iaXRyYXRlX3ByaW9yaXR5ICE9IG9sZF9wcmlvcml0eSkgfHwKKyAg
ICAgICAgKHJ0cF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3NbMF0ubmV0d29ya19wcmlvcml0eSAhPSBv
bGRfZHNjcCk7CiAgICAgaWYgKHJ0cF9wYXJhbWV0ZXJzXy5lbmNvZGluZ3NbMF0ubWF4X2JpdHJh
dGVfYnBzICE9IG9sZF9ydHBfbWF4X2JpdHJhdGUpIHsKICAgICAgIC8vIFVwZGF0ZSB0aGUgYml0
cmF0ZSByYW5nZS4KICAgICAgIGlmIChzZW5kX3JhdGUpIHsKQEAgLTk2OSw4ICs5ODYsOCBAQCBj
bGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjQXVkaW9TZW5kU3RyZWFtCiAgICAg
UlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7
CiAgICAgY29uc3QgYm9vbCBpc19vcHVzID0KICAgICAgICAgY29uZmlnXy5zZW5kX2NvZGVjX3Nw
ZWMgJiYKLSAgICAgICAgIVNUUl9DQVNFX0NNUChjb25maWdfLnNlbmRfY29kZWNfc3BlYy0+Zm9y
bWF0Lm5hbWUuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICBrT3B1c0NvZGVjTmFtZSk7
CisgICAgICAgIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29uZmlnXy5zZW5kX2NvZGVjX3NwZWMt
PmZvcm1hdC5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtPcHVzQ29kZWNO
YW1lKTsKICAgICBpZiAoaXNfb3B1cyAmJiB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQo
IldlYlJUQy1BdWRpby1TZW5kU2lkZUJ3ZSIpKSB7CiAgICAgICBjb25maWdfLm1pbl9iaXRyYXRl
X2JwcyA9IGtPcHVzTWluQml0cmF0ZUJwczsKIApAQCAtMTAxNCw4ICsxMDMxLDYgQEAgY2xhc3Mg
V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0Y0F1ZGlvU2VuZFN0cmVhbQogICB2b2lkIFVw
ZGF0ZVNlbmRDb2RlY1NwZWMoCiAgICAgICBjb25zdCB3ZWJydGM6OkF1ZGlvU2VuZFN0cmVhbTo6
Q29uZmlnOjpTZW5kQ29kZWNTcGVjJiBzZW5kX2NvZGVjX3NwZWMpIHsKICAgICBSVENfRENIRUNL
KHdvcmtlcl90aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLSAgICBjb25m
aWdfLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zID0KLSAgICAgICAgc2VuZF9jb2RlY19zcGVjLm5h
Y2tfZW5hYmxlZCA/IGtOYWNrUnRwSGlzdG9yeU1zIDogMDsKICAgICBjb25maWdfLnNlbmRfY29k
ZWNfc3BlYyA9IHNlbmRfY29kZWNfc3BlYzsKICAgICBhdXRvIGluZm8gPQogICAgICAgICBjb25m
aWdfLmVuY29kZXJfZmFjdG9yeS0+UXVlcnlBdWRpb0VuY29kZXIoc2VuZF9jb2RlY19zcGVjLmZv
cm1hdCk7CkBAIC0xMDc3LDEyICsxMDkyLDE1IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFu
bmVsOjpXZWJSdGNBdWRpb1JlY2VpdmVTdHJlYW0gewogICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
d2VicnRjOjpSdHBFeHRlbnNpb24+JiBleHRlbnNpb25zLAogICAgICAgd2VicnRjOjpDYWxsKiBj
YWxsLAogICAgICAgd2VicnRjOjpUcmFuc3BvcnQqIHJ0Y3Bfc2VuZF90cmFuc3BvcnQsCisgICAg
ICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQsCiAgICAg
ICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiYg
ZGVjb2Rlcl9mYWN0b3J5LAogICAgICAgY29uc3Qgc3RkOjptYXA8aW50LCB3ZWJydGM6OlNkcEF1
ZGlvRm9ybWF0PiYgZGVjb2Rlcl9tYXAsCiAgICAgICBhYnNsOjpvcHRpb25hbDx3ZWJydGM6OkF1
ZGlvQ29kZWNQYWlySWQ+IGNvZGVjX3BhaXJfaWQsCiAgICAgICBzaXplX3Qgaml0dGVyX2J1ZmZl
cl9tYXhfcGFja2V0cywKICAgICAgIGJvb2wgaml0dGVyX2J1ZmZlcl9mYXN0X2FjY2VsZXJhdGUs
Ci0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZURlY3J5cHRvckludGVyZmFj
ZT4gZnJhbWVfZGVjcnlwdG9yKQorICAgICAgaW50IGppdHRlcl9idWZmZXJfbWluX2RlbGF5X21z
LAorICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RnJhbWVEZWNyeXB0b3JJbnRlcmZh
Y2U+IGZyYW1lX2RlY3J5cHRvciwKKyAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYg
Y3J5cHRvX29wdGlvbnMpCiAgICAgICA6IGNhbGxfKGNhbGwpLCBjb25maWdfKCkgewogICAgIFJU
Q19EQ0hFQ0soY2FsbCk7CiAgICAgY29uZmlnXy5ydHAucmVtb3RlX3NzcmMgPSByZW1vdGVfc3Ny
YzsKQEAgLTEwOTEsOCArMTEwOSwxMCBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6
V2ViUnRjQXVkaW9SZWNlaXZlU3RyZWFtIHsKICAgICBjb25maWdfLnJ0cC5uYWNrLnJ0cF9oaXN0
b3J5X21zID0gdXNlX25hY2sgPyBrTmFja1J0cEhpc3RvcnlNcyA6IDA7CiAgICAgY29uZmlnXy5y
dHAuZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnM7CiAgICAgY29uZmlnXy5ydGNwX3NlbmRfdHJhbnNw
b3J0ID0gcnRjcF9zZW5kX3RyYW5zcG9ydDsKKyAgICBjb25maWdfLm1lZGlhX3RyYW5zcG9ydCA9
IG1lZGlhX3RyYW5zcG9ydDsKICAgICBjb25maWdfLmppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMg
PSBqaXR0ZXJfYnVmZmVyX21heF9wYWNrZXRzOwogICAgIGNvbmZpZ18uaml0dGVyX2J1ZmZlcl9m
YXN0X2FjY2VsZXJhdGUgPSBqaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZTsKKyAgICBjb25m
aWdfLmppdHRlcl9idWZmZXJfbWluX2RlbGF5X21zID0gaml0dGVyX2J1ZmZlcl9taW5fZGVsYXlf
bXM7CiAgICAgaWYgKCFzdHJlYW1faWRzLmVtcHR5KCkpIHsKICAgICAgIGNvbmZpZ18uc3luY19n
cm91cCA9IHN0cmVhbV9pZHNbMF07CiAgICAgfQpAQCAtMTEwMCw2ICsxMTIwLDcgQEAgY2xhc3Mg
V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0Y0F1ZGlvUmVjZWl2ZVN0cmVhbSB7CiAgICAg
Y29uZmlnXy5kZWNvZGVyX21hcCA9IGRlY29kZXJfbWFwOwogICAgIGNvbmZpZ18uY29kZWNfcGFp
cl9pZCA9IGNvZGVjX3BhaXJfaWQ7CiAgICAgY29uZmlnXy5mcmFtZV9kZWNyeXB0b3IgPSBmcmFt
ZV9kZWNyeXB0b3I7CisgICAgY29uZmlnXy5jcnlwdG9fb3B0aW9ucyA9IGNyeXB0b19vcHRpb25z
OwogICAgIFJlY3JlYXRlQXVkaW9SZWNlaXZlU3RyZWFtKCk7CiAgIH0KIApAQCAtMTIzNywxMSAr
MTI1OCwxNyBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjQXVkaW9SZWNl
aXZlU3RyZWFtIHsKICAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhXZWJSdGNB
dWRpb1JlY2VpdmVTdHJlYW0pOwogfTsKIAotV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OldlYlJ0
Y1ZvaWNlTWVkaWFDaGFubmVsKFdlYlJ0Y1ZvaWNlRW5naW5lKiBlbmdpbmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVkaWFDb25maWcm
IGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpDYWxsKiBjYWxsKQotICAgIDogVm9pY2VN
ZWRpYUNoYW5uZWwoY29uZmlnKSwgZW5naW5lXyhlbmdpbmUpLCBjYWxsXyhjYWxsKSB7CitXZWJS
dGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwoCisgICAgV2ViUnRj
Vm9pY2VFbmdpbmUqIGVuZ2luZSwKKyAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAorICAg
IGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09w
dGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCkKKyAgICA6IFZv
aWNlTWVkaWFDaGFubmVsKGNvbmZpZyksCisgICAgICBlbmdpbmVfKGVuZ2luZSksCisgICAgICBj
YWxsXyhjYWxsKSwKKyAgICAgIGF1ZGlvX2NvbmZpZ18oY29uZmlnLmF1ZGlvKSwKKyAgICAgIGNy
eXB0b19vcHRpb25zXyhjcnlwdG9fb3B0aW9ucykgewogICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8
ICJXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwiOwogICBS
VENfRENIRUNLKGNhbGwpOwogICBlbmdpbmUtPlJlZ2lzdGVyQ2hhbm5lbCh0aGlzKTsKQEAgLTEy
NjQsNyArMTI5MSw3IEBAIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjp+V2ViUnRjVm9pY2VNZWRp
YUNoYW5uZWwoKSB7CiB9CiAKIHJ0Yzo6RGlmZlNlcnZDb2RlUG9pbnQgV2ViUnRjVm9pY2VNZWRp
YUNoYW5uZWw6OlByZWZlcnJlZERzY3AoKSBjb25zdCB7Ci0gIHJldHVybiBrQXVkaW9Ec2NwVmFs
dWU7CisgIHJldHVybiBwcmVmZXJyZWRfZHNjcF87CiB9CiAKIGJvb2wgV2ViUnRjVm9pY2VNZWRp
YUNoYW5uZWw6OlNldFNlbmRQYXJhbWV0ZXJzKApAQCAtMTI4Myw2ICsxMzEwLDE0IEBAIGJvb2wg
V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OlNldFNlbmRQYXJhbWV0ZXJzKAogICBpZiAoIVZhbGlk
YXRlUnRwRXh0ZW5zaW9ucyhwYXJhbXMuZXh0ZW5zaW9ucykpIHsKICAgICByZXR1cm4gZmFsc2U7
CiAgIH0KKworICBpZiAoRXh0bWFwQWxsb3dNaXhlZCgpICE9IHBhcmFtcy5leHRtYXBfYWxsb3df
bWl4ZWQpIHsKKyAgICBTZXRFeHRtYXBBbGxvd01peGVkKHBhcmFtcy5leHRtYXBfYWxsb3dfbWl4
ZWQpOworICAgIGZvciAoYXV0byYgaXQgOiBzZW5kX3N0cmVhbXNfKSB7CisgICAgICBpdC5zZWNv
bmQtPlNldEV4dG1hcEFsbG93TWl4ZWQocGFyYW1zLmV4dG1hcF9hbGxvd19taXhlZCk7CisgICAg
fQorICB9CisKICAgc3RkOjp2ZWN0b3I8d2VicnRjOjpSdHBFeHRlbnNpb24+IGZpbHRlcmVkX2V4
dGVuc2lvbnMgPSBGaWx0ZXJSdHBFeHRlbnNpb25zKAogICAgICAgcGFyYW1zLmV4dGVuc2lvbnMs
IHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uOjpJc1N1cHBvcnRlZEZvckF1ZGlvLCB0cnVlKTsKICAgaWYg
KHNlbmRfcnRwX2V4dGVuc2lvbnNfICE9IGZpbHRlcmVkX2V4dGVuc2lvbnMpIHsKQEAgLTEzNjUs
MTEgKzE0MDAsMzQgQEAgd2VicnRjOjpSVENFcnJvciBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6
U2V0UnRwU2VuZFBhcmFtZXRlcnMoCiAgIC8vIGRpZmZlcmVudCBvcmRlciAod2hpY2ggc2hvdWxk
IGNoYW5nZSB0aGUgc2VuZCBjb2RlYykuCiAgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBjdXJyZW50
X3BhcmFtZXRlcnMgPSBHZXRSdHBTZW5kUGFyYW1ldGVycyhzc3JjKTsKICAgaWYgKGN1cnJlbnRf
cGFyYW1ldGVycy5jb2RlY3MgIT0gcGFyYW1ldGVycy5jb2RlY3MpIHsKLSAgICBSVENfTE9HKExT
X0VSUk9SKSA8PCAiVXNpbmcgU2V0UGFyYW1ldGVycyB0byBjaGFuZ2UgdGhlIHNldCBvZiBjb2Rl
Y3MgIgotICAgICAgICAgICAgICAgICAgICAgIDw8ICJpcyBub3QgY3VycmVudGx5IHN1cHBvcnRl
ZC4iOworICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiVXNpbmcgU2V0UGFyYW1ldGVycyB0byBj
aGFuZ2UgdGhlIHNldCBvZiBjb2RlY3MgIgorICAgICAgICAgICAgICAgICAgICAgICA8PCAiaXMg
bm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuIjsKICAgICByZXR1cm4gd2VicnRjOjpSVENFcnJvcih3
ZWJydGM6OlJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfUEFSQU1FVEVSKTsKICAgfQogCisgIGlm
ICghcGFyYW1ldGVycy5lbmNvZGluZ3MuZW1wdHkoKSkgeworICAgIGF1dG8mIHByaW9yaXR5ID0g
cGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubmV0d29ya19wcmlvcml0eTsKKyAgICBydGM6OkRpZmZT
ZXJ2Q29kZVBvaW50IG5ld19kc2NwID0gcnRjOjpEU0NQX0RFRkFVTFQ7CisgICAgaWYgKHByaW9y
aXR5ID09IDAuNSAqIHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkpIHsKKyAgICAgIG5l
d19kc2NwID0gcnRjOjpEU0NQX0NTMTsKKyAgICB9IGVsc2UgaWYgKHByaW9yaXR5ID09IDEuMCAq
IHdlYnJ0Yzo6a0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkpIHsKKyAgICAgIG5ld19kc2NwID0gcnRj
OjpEU0NQX0RFRkFVTFQ7CisgICAgfSBlbHNlIGlmIChwcmlvcml0eSA9PSAyLjAgKiB3ZWJydGM6
OmtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5KSB7CisgICAgICBuZXdfZHNjcCA9IHJ0Yzo6RFNDUF9F
RjsKKyAgICB9IGVsc2UgaWYgKHByaW9yaXR5ID09IDQuMCAqIHdlYnJ0Yzo6a0RlZmF1bHRCaXRy
YXRlUHJpb3JpdHkpIHsKKyAgICAgIG5ld19kc2NwID0gcnRjOjpEU0NQX0VGOworICAgIH0gZWxz
ZSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJSZWNlaXZlZCBpbnZhbGlkIHNlbmQg
bmV0d29yayBwcmlvcml0eTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBwcmlvcml0
eTsKKyAgICAgIHJldHVybiB3ZWJydGM6OlJUQ0Vycm9yKHdlYnJ0Yzo6UlRDRXJyb3JUeXBlOjpJ
TlZBTElEX1JBTkdFKTsKKyAgICB9CisKKyAgICBpZiAobmV3X2RzY3AgIT0gcHJlZmVycmVkX2Rz
Y3BfKSB7CisgICAgICBwcmVmZXJyZWRfZHNjcF8gPSBuZXdfZHNjcDsKKyAgICAgIE1lZGlhQ2hh
bm5lbDo6VXBkYXRlRHNjcCgpOworICAgIH0KKyAgfQorCiAgIC8vIFRPRE8obWlueXVlKTogVGhl
IGZvbGxvd2luZyBsZWdhY3kgYWN0aW9ucyBnbyBpbnRvCiAgIC8vIHxXZWJSdGNBdWRpb1NlbmRT
dHJlYW06OlNldFJ0cFBhcmFtZXRlcnMoKXwgd2hpY2ggaXMgY2FsbGVkIGF0IHRoZSBlbmQsCiAg
IC8vIHRob3VnaCB0aGVyZSBhcmUgdHdvIGRpZmZlcmVuY2U6CkBAIC0xNDQwLDggKzE0OTgsOCBA
QCBib29sIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpTZXRSdHBSZWNlaXZlUGFyYW1ldGVycygK
IAogICB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgY3VycmVudF9wYXJhbWV0ZXJzID0gR2V0UnRwUmVj
ZWl2ZVBhcmFtZXRlcnMoc3NyYyk7CiAgIGlmIChjdXJyZW50X3BhcmFtZXRlcnMgIT0gcGFyYW1l
dGVycykgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDaGFuZ2luZyB0aGUgUlRQIHJlY2Vp
dmUgcGFyYW1ldGVycyBpcyBjdXJyZW50bHkgIgotICAgICAgICAgICAgICAgICAgICAgIDw8ICJ1
bnN1cHBvcnRlZC4iOworICAgIFJUQ19ETE9HKExTX0VSUk9SKSA8PCAiQ2hhbmdpbmcgdGhlIFJU
UCByZWNlaXZlIHBhcmFtZXRlcnMgaXMgY3VycmVudGx5ICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgPDwgInVuc3VwcG9ydGVkLiI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIHJldHVybiB0
cnVlOwpAQCAtMTYyMywxNyArMTY4MSwxNyBAQCBib29sIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVs
OjpTZXRTZW5kQ29kZWNzKAogICAgIC8vIFRPRE8oc29sZW5iZXJnKTogQnJlYWsgb3V0IGludG8g
YSBzZXBhcmF0ZSBmdW5jdGlvbj8KICAgICBmb3IgKGNvbnN0IEF1ZGlvQ29kZWMmIGNuX2NvZGVj
IDogY29kZWNzKSB7CiAgICAgICBpZiAoSXNDb2RlYyhjbl9jb2RlYywga0NuQ29kZWNOYW1lKSAm
JgotICAgICAgICAgIGNuX2NvZGVjLmNsb2NrcmF0ZSA9PSBzZW5kX2NvZGVjX3NwZWMtPmZvcm1h
dC5jbG9ja3JhdGVfaHopIHsKLSAgICAgICAgc3dpdGNoIChjbl9jb2RlYy5jbG9ja3JhdGUpIHsK
LSAgICAgICAgICBjYXNlIDgwMDA6Ci0gICAgICAgICAgY2FzZSAxNjAwMDoKLSAgICAgICAgICBj
YXNlIDMyMDAwOgotICAgICAgICAgICAgc2VuZF9jb2RlY19zcGVjLT5jbmdfcGF5bG9hZF90eXBl
ID0gY25fY29kZWMuaWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQotICAgICAgICAgICAgICAgIDw8ICJDTiBm
cmVxdWVuY3kgIiA8PCBjbl9jb2RlYy5jbG9ja3JhdGUgPDwgIiBub3Qgc3VwcG9ydGVkLiI7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjbl9jb2RlYy5jbG9ja3JhdGUgPT0gc2VuZF9j
b2RlY19zcGVjLT5mb3JtYXQuY2xvY2tyYXRlX2h6ICYmCisgICAgICAgICAgY25fY29kZWMuY2hh
bm5lbHMgPT0gdm9pY2VfY29kZWNfaW5mby0+bnVtX2NoYW5uZWxzKSB7CisgICAgICAgIGlmIChj
bl9jb2RlYy5jaGFubmVscyAhPSAxKSB7CisgICAgICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQor
ICAgICAgICAgICAgICA8PCAiQ04gI2NoYW5uZWxzICIgPDwgY25fY29kZWMuY2hhbm5lbHMgPDwg
IiBub3Qgc3VwcG9ydGVkLiI7CisgICAgICAgIH0gZWxzZSBpZiAoY25fY29kZWMuY2xvY2tyYXRl
ICE9IDgwMDAgJiYgY25fY29kZWMuY2xvY2tyYXRlICE9IDE2MDAwICYmCisgICAgICAgICAgICAg
ICAgICAgY25fY29kZWMuY2xvY2tyYXRlICE9IDMyMDAwKSB7CisgICAgICAgICAgUlRDX0xPRyhM
U19XQVJOSU5HKQorICAgICAgICAgICAgICA8PCAiQ04gZnJlcXVlbmN5ICIgPDwgY25fY29kZWMu
Y2xvY2tyYXRlIDw8ICIgbm90IHN1cHBvcnRlZC4iOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgIHNlbmRfY29kZWNfc3BlYy0+Y25nX3BheWxvYWRfdHlwZSA9IGNuX2NvZGVjLmlkOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtMTc2MSw5ICsxODE5LDExIEBAIGJv
b2wgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OkFkZFNlbmRTdHJlYW0oY29uc3QgU3RyZWFtUGFy
YW1zJiBzcCkgewogICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gYXVkaW9fbmV0d29ya19h
ZGFwdG9yX2NvbmZpZyA9CiAgICAgICBHZXRBdWRpb05ldHdvcmtBZGFwdG9yQ29uZmlnKG9wdGlv
bnNfKTsKICAgV2ViUnRjQXVkaW9TZW5kU3RyZWFtKiBzdHJlYW0gPSBuZXcgV2ViUnRjQXVkaW9T
ZW5kU3RyZWFtKAotICAgICAgc3NyYywgbWlkXywgc3AuY25hbWUsIHNwLmlkLCBzZW5kX2NvZGVj
X3NwZWNfLCBzZW5kX3J0cF9leHRlbnNpb25zXywKLSAgICAgIG1heF9zZW5kX2JpdHJhdGVfYnBz
XywgYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZywgY2FsbF8sIHRoaXMsCi0gICAgICBlbmdp
bmUoKS0+ZW5jb2Rlcl9mYWN0b3J5XywgY29kZWNfcGFpcl9pZF8sIG51bGxwdHIpOworICAgICAg
c3NyYywgbWlkXywgc3AuY25hbWUsIHNwLmlkLCBzZW5kX2NvZGVjX3NwZWNfLCBFeHRtYXBBbGxv
d01peGVkKCksCisgICAgICBzZW5kX3J0cF9leHRlbnNpb25zXywgbWF4X3NlbmRfYml0cmF0ZV9i
cHNfLAorICAgICAgYXVkaW9fY29uZmlnXy5ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcywgYXVkaW9f
bmV0d29ya19hZGFwdG9yX2NvbmZpZywKKyAgICAgIGNhbGxfLCB0aGlzLCBtZWRpYV90cmFuc3Bv
cnQoKSwgZW5naW5lKCktPmVuY29kZXJfZmFjdG9yeV8sCisgICAgICBjb2RlY19wYWlyX2lkXywg
bnVsbHB0ciwgY3J5cHRvX29wdGlvbnNfKTsKICAgc2VuZF9zdHJlYW1zXy5pbnNlcnQoc3RkOjpt
YWtlX3BhaXIoc3NyYywgc3RyZWFtKSk7CiAKICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgc3RyZWFt
J3MgbG9jYWwgU1NSQyBoYXMgYmVlbiB1cGRhdGVkLiBJZiBpdCBpcyB0aGUgZmlyc3QKQEAgLTE4
MjYsNyArMTg4Niw3IEBAIGJvb2wgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6OkFkZFJlY3ZTdHJl
YW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCkgewogCiAgIGNvbnN0IHVpbnQzMl90IHNzcmMgPSBz
cC5maXJzdF9zc3JjKCk7CiAgIGlmIChzc3JjID09IDApIHsKLSAgICBSVENfTE9HKExTX1dBUk5J
TkcpIDw8ICJBZGRSZWN2U3RyZWFtIHdpdGggc3NyYz09MCBpcyBub3Qgc3VwcG9ydGVkLiI7Cisg
ICAgUlRDX0RMT0coTFNfV0FSTklORykgPDwgIkFkZFJlY3ZTdHJlYW0gd2l0aCBzc3JjPT0wIGlz
IG5vdCBzdXBwb3J0ZWQuIjsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIApAQCAtMTg0NCwxMyAr
MTkwNCwxNSBAQCBib29sIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpBZGRSZWN2U3RyZWFtKGNv
bnN0IFN0cmVhbVBhcmFtcyYgc3ApIHsKIAogICAvLyBDcmVhdGUgYSBuZXcgY2hhbm5lbCBmb3Ig
cmVjZWl2aW5nIGF1ZGlvIGRhdGEuCiAgIHJlY3Zfc3RyZWFtc18uaW5zZXJ0KHN0ZDo6bWFrZV9w
YWlyKAotICAgICAgc3NyYywgbmV3IFdlYlJ0Y0F1ZGlvUmVjZWl2ZVN0cmVhbSgKLSAgICAgICAg
ICAgICAgICBzc3JjLCByZWNlaXZlcl9yZXBvcnRzX3NzcmNfLCByZWN2X3RyYW5zcG9ydF9jY19l
bmFibGVkXywKLSAgICAgICAgICAgICAgICByZWN2X25hY2tfZW5hYmxlZF8sIHNwLnN0cmVhbV9p
ZHMoKSwgcmVjdl9ydHBfZXh0ZW5zaW9uc18sCi0gICAgICAgICAgICAgICAgY2FsbF8sIHRoaXMs
IGVuZ2luZSgpLT5kZWNvZGVyX2ZhY3RvcnlfLCBkZWNvZGVyX21hcF8sCi0gICAgICAgICAgICAg
ICAgY29kZWNfcGFpcl9pZF8sIGVuZ2luZSgpLT5hdWRpb19qaXR0ZXJfYnVmZmVyX21heF9wYWNr
ZXRzXywKLSAgICAgICAgICAgICAgICBlbmdpbmUoKS0+YXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0
X2FjY2VsZXJhdGVfLAotICAgICAgICAgICAgICAgIHVuc2lnbmFsZWRfZnJhbWVfZGVjcnlwdG9y
XykpKTsKKyAgICAgIHNzcmMsCisgICAgICBuZXcgV2ViUnRjQXVkaW9SZWNlaXZlU3RyZWFtKAor
ICAgICAgICAgIHNzcmMsIHJlY2VpdmVyX3JlcG9ydHNfc3NyY18sIHJlY3ZfdHJhbnNwb3J0X2Nj
X2VuYWJsZWRfLAorICAgICAgICAgIHJlY3ZfbmFja19lbmFibGVkXywgc3Auc3RyZWFtX2lkcygp
LCByZWN2X3J0cF9leHRlbnNpb25zXywgY2FsbF8sCisgICAgICAgICAgdGhpcywgbWVkaWFfdHJh
bnNwb3J0KCksIGVuZ2luZSgpLT5kZWNvZGVyX2ZhY3RvcnlfLCBkZWNvZGVyX21hcF8sCisgICAg
ICAgICAgY29kZWNfcGFpcl9pZF8sIGVuZ2luZSgpLT5hdWRpb19qaXR0ZXJfYnVmZmVyX21heF9w
YWNrZXRzXywKKyAgICAgICAgICBlbmdpbmUoKS0+YXVkaW9faml0dGVyX2J1ZmZlcl9mYXN0X2Fj
Y2VsZXJhdGVfLAorICAgICAgICAgIGVuZ2luZSgpLT5hdWRpb19qaXR0ZXJfYnVmZmVyX21pbl9k
ZWxheV9tc18sCisgICAgICAgICAgdW5zaWduYWxlZF9mcmFtZV9kZWNyeXB0b3JfLCBjcnlwdG9f
b3B0aW9uc18pKSk7CiAgIHJlY3Zfc3RyZWFtc19bc3NyY10tPlNldFBsYXlvdXQocGxheW91dF8p
OwogCiAgIHJldHVybiB0cnVlOwpAQCAtMTk3OSwxNCArMjA0MSwxNCBAQCBib29sIFdlYlJ0Y1Zv
aWNlTWVkaWFDaGFubmVsOjpJbnNlcnREdG1mKHVpbnQzMl90IHNzcmMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQsIGR1cmF0aW9uKTsKIH0KIAotdm9pZCBX
ZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZCgKLSAgICBydGM6OkNvcHlP
bldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRf
dGltZSkgewordm9pZCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZChy
dGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgUlRDX0RD
SEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CiAKICAg
d2VicnRjOjpQYWNrZXRSZWNlaXZlcjo6RGVsaXZlcnlTdGF0dXMgZGVsaXZlcnlfcmVzdWx0ID0K
ICAgICAgIGNhbGxfLT5SZWNlaXZlcigpLT5EZWxpdmVyUGFja2V0KHdlYnJ0Yzo6TWVkaWFUeXBl
OjpBVURJTywgKnBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhY2tldF90aW1lLnRpbWVzdGFtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYWNrZXRfdGltZV91cyk7CisKICAgaWYgKGRlbGl2ZXJ5X3Jlc3VsdCAhPSB3ZWJy
dGM6OlBhY2tldFJlY2VpdmVyOjpERUxJVkVSWV9VTktOT1dOX1NTUkMpIHsKICAgICByZXR1cm47
CiAgIH0KQEAgLTIwMTcsOCArMjA3OSw4IEBAIHZvaWQgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw6
Ok9uUGFja2V0UmVjZWl2ZWQoCiAgIC8vIFJlbW92ZSBvbGRlc3QgdW5zaWduYWxlZCBzdHJlYW0s
IGlmIHdlIGhhdmUgdG9vIG1hbnkuCiAgIGlmICh1bnNpZ25hbGVkX3JlY3Zfc3NyY3NfLnNpemUo
KSA+IGtNYXhVbnNpZ25hbGVkUmVjdlN0cmVhbXMpIHsKICAgICB1aW50MzJfdCByZW1vdmVfc3Ny
YyA9IHVuc2lnbmFsZWRfcmVjdl9zc3Jjc18uZnJvbnQoKTsKLSAgICBSVENfTE9HKExTX0lORk8p
IDw8ICJSZW1vdmluZyB1bnNpZ25hbGVkIHJlY2VpdmUgc3RyZWFtIHdpdGggU1NSQz0iCi0gICAg
ICAgICAgICAgICAgICAgICA8PCByZW1vdmVfc3NyYzsKKyAgICBSVENfRExPRyhMU19JTkZPKSA8
PCAiUmVtb3ZpbmcgdW5zaWduYWxlZCByZWNlaXZlIHN0cmVhbSB3aXRoIFNTUkM9IgorICAgICAg
ICAgICAgICAgICAgICAgIDw8IHJlbW92ZV9zc3JjOwogICAgIFJlbW92ZVJlY3ZTdHJlYW0ocmVt
b3ZlX3NzcmMpOwogICB9CiAgIFJUQ19EQ0hFQ0tfR0Uoa01heFVuc2lnbmFsZWRSZWN2U3RyZWFt
cywgdW5zaWduYWxlZF9yZWN2X3NzcmNzXy5zaXplKCkpOwpAQCAtMjAzOCwxOSArMjEwMCwxOCBA
QCB2b2lkIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsOjpPblBhY2tldFJlY2VpdmVkKAogICAgIFNl
dFJhd0F1ZGlvU2luayhzc3JjLCBzdGQ6Om1vdmUocHJveHlfc2luaykpOwogICB9CiAKLSAgZGVs
aXZlcnlfcmVzdWx0ID0gY2FsbF8tPlJlY2VpdmVyKCktPkRlbGl2ZXJQYWNrZXQoCi0gICAgICB3
ZWJydGM6Ok1lZGlhVHlwZTo6QVVESU8sICpwYWNrZXQsIHBhY2tldF90aW1lLnRpbWVzdGFtcCk7
CisgIGRlbGl2ZXJ5X3Jlc3VsdCA9IGNhbGxfLT5SZWNlaXZlcigpLT5EZWxpdmVyUGFja2V0KHdl
YnJ0Yzo6TWVkaWFUeXBlOjpBVURJTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnBhY2tldCwgcGFja2V0X3RpbWVfdXMpOwogICBSVENfRENI
RUNLX05FKHdlYnJ0Yzo6UGFja2V0UmVjZWl2ZXI6OkRFTElWRVJZX1VOS05PV05fU1NSQywgZGVs
aXZlcnlfcmVzdWx0KTsKIH0KIAotdm9pZCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6T25SdGNw
UmVjZWl2ZWQoCi0gICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgIGNvbnN0
IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKK3ZvaWQgV2ViUnRjVm9pY2VNZWRpYUNo
YW5uZWw6Ok9uUnRjcFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0
X3RpbWVfdXMpIHsKICAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9u
VmFsaWRUaHJlYWQoKSk7CiAKICAgLy8gRm9yd2FyZCBwYWNrZXQgdG8gQ2FsbCBhcyB3ZWxsLgog
ICBjYWxsXy0+UmVjZWl2ZXIoKS0+RGVsaXZlclBhY2tldCh3ZWJydGM6Ok1lZGlhVHlwZTo6QVVE
SU8sICpwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90
aW1lLnRpbWVzdGFtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tl
dF90aW1lX3VzKTsKIH0KIAogdm9pZCBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDo6T25OZXR3b3Jr
Um91dGVDaGFuZ2VkKApAQCAtMjE4Miw2ICsyMjQzLDcgQEAgYm9vbCBXZWJSdGNWb2ljZU1lZGlh
Q2hhbm5lbDo6R2V0U3RhdHMoVm9pY2VNZWRpYUluZm8qIGluZm8pIHsKICAgICByaW5mby5zZWNv
bmRhcnlfZGlzY2FyZGVkX3JhdGUgPSBzdGF0cy5zZWNvbmRhcnlfZGlzY2FyZGVkX3JhdGU7CiAg
ICAgcmluZm8uYWNjZWxlcmF0ZV9yYXRlID0gc3RhdHMuYWNjZWxlcmF0ZV9yYXRlOwogICAgIHJp
bmZvLnByZWVtcHRpdmVfZXhwYW5kX3JhdGUgPSBzdGF0cy5wcmVlbXB0aXZlX2V4cGFuZF9yYXRl
OworICAgIHJpbmZvLmRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzID0gc3RhdHMuZGVsYXll
ZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXM7CiAgICAgcmluZm8uZGVjb2RpbmdfY2FsbHNfdG9fc2ls
ZW5jZV9nZW5lcmF0b3IgPQogICAgICAgICBzdGF0cy5kZWNvZGluZ19jYWxsc190b19zaWxlbmNl
X2dlbmVyYXRvcjsKICAgICByaW5mby5kZWNvZGluZ19jYWxsc190b19uZXRlcSA9IHN0YXRzLmRl
Y29kaW5nX2NhbGxzX3RvX25ldGVxOwpAQCAtMjE5MSw2ICsyMjUzLDggQEAgYm9vbCBXZWJSdGNW
b2ljZU1lZGlhQ2hhbm5lbDo6R2V0U3RhdHMoVm9pY2VNZWRpYUluZm8qIGluZm8pIHsKICAgICBy
aW5mby5kZWNvZGluZ19wbGNfY25nID0gc3RhdHMuZGVjb2RpbmdfcGxjX2NuZzsKICAgICByaW5m
by5kZWNvZGluZ19tdXRlZF9vdXRwdXQgPSBzdGF0cy5kZWNvZGluZ19tdXRlZF9vdXRwdXQ7CiAg
ICAgcmluZm8uY2FwdHVyZV9zdGFydF9udHBfdGltZV9tcyA9IHN0YXRzLmNhcHR1cmVfc3RhcnRf
bnRwX3RpbWVfbXM7CisgICAgcmluZm8uaml0dGVyX2J1ZmZlcl9mbHVzaGVzID0gc3RhdHMuaml0
dGVyX2J1ZmZlcl9mbHVzaGVzOworCiAgICAgaW5mby0+cmVjZWl2ZXJzLnB1c2hfYmFjayhyaW5m
byk7CiAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5lLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9pY2Vlbmdp
bmUuaAppbmRleCBiZWRlZGUxMjQ4MGRjNzdmZTc0YzMwYmI1NDc4N2MxOTQ4N2Q4YWI0Li4yMTNm
MWIzOTNmOWUyY2EyOGUwNTlmMDVjZjExYTVlM2Y2YzI4ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9p
Y2VlbmdpbmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9pY2VlbmdpbmUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFz
cyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbDsKIAogLy8gV2ViUnRjVm9pY2VFbmdpbmUgaXMgYSBj
bGFzcyB0byBiZSB1c2VkIHdpdGggQ29tcG9zaXRlTWVkaWFFbmdpbmUuCiAvLyBJdCB1c2VzIHRo
ZSBXZWJSdGMgVm9pY2VFbmdpbmUgbGlicmFyeSBmb3IgYXVkaW8gaGFuZGxpbmcuCi1jbGFzcyBX
ZWJSdGNWb2ljZUVuZ2luZSBmaW5hbCB7CitjbGFzcyBXZWJSdGNWb2ljZUVuZ2luZSBmaW5hbCA6
IHB1YmxpYyBWb2ljZUVuZ2luZUludGVyZmFjZSB7CiAgIGZyaWVuZCBjbGFzcyBXZWJSdGNWb2lj
ZU1lZGlhQ2hhbm5lbDsKIAogIHB1YmxpYzoKQEAgLTUwLDE5ICs1MCwyMSBAQCBjbGFzcyBXZWJS
dGNWb2ljZUVuZ2luZSBmaW5hbCB7CiAgICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5PiYgZGVjb2Rlcl9mYWN0b3J5LAogICAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9NaXhlcj4gYXVkaW9fbWl4ZXIsCiAgICAgICBydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3Npbmcp
OwotICB+V2ViUnRjVm9pY2VFbmdpbmUoKTsKKyAgfldlYlJ0Y1ZvaWNlRW5naW5lKCkgb3ZlcnJp
ZGU7CiAKICAgLy8gRG9lcyBpbml0aWFsaXphdGlvbiB0aGF0IG5lZWRzIHRvIG9jY3VyIG9uIHRo
ZSB3b3JrZXIgdGhyZWFkLgotICB2b2lkIEluaXQoKTsKKyAgdm9pZCBJbml0KCkgb3ZlcnJpZGU7
CiAKLSAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9TdGF0ZT4gR2V0QXVkaW9TdGF0
ZSgpIGNvbnN0OwotICBWb2ljZU1lZGlhQ2hhbm5lbCogQ3JlYXRlQ2hhbm5lbCh3ZWJydGM6OkNh
bGwqIGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lZGlh
Q29uZmlnJiBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucyk7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1
ZGlvU3RhdGU+IEdldEF1ZGlvU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgVm9pY2VNZWRpYUNo
YW5uZWwqIENyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCwKKyAg
ICAgIGNvbnN0IE1lZGlhQ29uZmlnJiBjb25maWcsCisgICAgICBjb25zdCBBdWRpb09wdGlvbnMm
IG9wdGlvbnMsCisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRp
b25zKSBvdmVycmlkZTsKIAotICBjb25zdCBzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjPiYgc2VuZF9j
b2RlY3MoKSBjb25zdDsKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHJlY3ZfY29k
ZWNzKCkgY29uc3Q7Ci0gIFJ0cENhcGFiaWxpdGllcyBHZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsK
KyAgY29uc3Qgc3RkOjp2ZWN0b3I8QXVkaW9Db2RlYz4mIHNlbmRfY29kZWNzKCkgY29uc3Qgb3Zl
cnJpZGU7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+JiByZWN2X2NvZGVjcygpIGNv
bnN0IG92ZXJyaWRlOworICBSdHBDYXBhYmlsaXRpZXMgR2V0Q2FwYWJpbGl0aWVzKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgLy8gRm9yIHRyYWNraW5nIFdlYlJ0YyBjaGFubmVscy4gTmVlZGVkIGJl
Y2F1c2Ugd2UgaGF2ZSB0byBwYXVzZSB0aGVtCiAgIC8vIGFsbCB3aGVuIHN3aXRjaGluZyBkZXZp
Y2VzLgpAQCAtNzQsMTAgKzc2LDEwIEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlRW5naW5lIGZpbmFsIHsK
ICAgLy8gc3BlY2lmaWVkLiBXaGVuIHRoZSBtYXhpbXVtIGZpbGUgc2l6ZSBpcyByZWFjaGVkLCBs
b2dnaW5nIGlzIHN0b3BwZWQgYW5kCiAgIC8vIHRoZSBmaWxlIGlzIGNsb3NlZC4gSWYgbWF4X3Np
emVfYnl0ZXMgaXMgc2V0IHRvIDw9IDAsIG5vIGxpbWl0IHdpbGwgYmUKICAgLy8gdXNlZC4KLSAg
Ym9vbCBTdGFydEFlY0R1bXAocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwgaW50NjRfdCBtYXhfc2l6
ZV9ieXRlcyk7CisgIGJvb2wgU3RhcnRBZWNEdW1wKHJ0Yzo6UGxhdGZvcm1GaWxlIGZpbGUsIGlu
dDY0X3QgbWF4X3NpemVfYnl0ZXMpIG92ZXJyaWRlOwogCiAgIC8vIFN0b3BzIEFFQyBkdW1wLgot
ICB2b2lkIFN0b3BBZWNEdW1wKCk7CisgIHZvaWQgU3RvcEFlY0R1bXAoKSBvdmVycmlkZTsKIAog
ICBjb25zdCB3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnIEdldEFwbUNvbmZpZ0ZvclRl
c3QoKSBjb25zdCB7CiAgICAgcmV0dXJuIGFwbSgpLT5HZXRDb25maWcoKTsKQEAgLTEzMCw2ICsx
MzIsNyBAQCBjbGFzcyBXZWJSdGNWb2ljZUVuZ2luZSBmaW5hbCB7CiAgIC8vIEppdHRlciBidWZm
ZXIgc2V0dGluZ3MgZm9yIG5ldyBzdHJlYW1zLgogICBzaXplX3QgYXVkaW9faml0dGVyX2J1ZmZl
cl9tYXhfcGFja2V0c18gPSA1MDsKICAgYm9vbCBhdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNj
ZWxlcmF0ZV8gPSBmYWxzZTsKKyAgaW50IGF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2RlbGF5X21z
XyA9IDA7CiAKICAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhXZWJSdGNWb2lj
ZUVuZ2luZSk7CiB9OwpAQCAtMTQyLDYgKzE0NSw3IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFD
aGFubmVsIGZpbmFsIDogcHVibGljIFZvaWNlTWVkaWFDaGFubmVsLAogICBXZWJSdGNWb2ljZU1l
ZGlhQ2hhbm5lbChXZWJSdGNWb2ljZUVuZ2luZSogZW5naW5lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBNZWRpYUNvbmZpZyYgY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBBdWRpb09wdGlvbnMmIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q2FsbCogY2FsbCk7CiAgIH5XZWJSdGNWb2ljZU1l
ZGlhQ2hhbm5lbCgpIG92ZXJyaWRlOwogCkBAIC0xOTIsOSArMTk2LDkgQEAgY2xhc3MgV2ViUnRj
Vm9pY2VNZWRpYUNoYW5uZWwgZmluYWwgOiBwdWJsaWMgVm9pY2VNZWRpYUNoYW5uZWwsCiAgIGJv
b2wgSW5zZXJ0RHRtZih1aW50MzJfdCBzc3JjLCBpbnQgZXZlbnQsIGludCBkdXJhdGlvbikgb3Zl
cnJpZGU7CiAKICAgdm9pZCBPblBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIq
IHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYg
cGFja2V0X3RpbWUpIG92ZXJyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBw
YWNrZXRfdGltZV91cykgb3ZlcnJpZGU7CiAgIHZvaWQgT25SdGNwUmVjZWl2ZWQocnRjOjpDb3B5
T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIG92ZXJyaWRlOworICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgcGFja2V0X3RpbWVfdXMpIG92ZXJyaWRlOwogICB2b2lkIE9uTmV0d29ya1JvdXRl
Q2hhbmdlZChjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0X25hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6TmV0d29ya1JvdXRlJiBuZXR3b3JrX3JvdXRlKSBv
dmVycmlkZTsKICAgdm9pZCBPblJlYWR5VG9TZW5kKGJvb2wgcmVhZHkpIG92ZXJyaWRlOwpAQCAt
MjE4LDYgKzIyMiwxMCBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCBmaW5hbCA6IHB1
YmxpYyBWb2ljZU1lZGlhQ2hhbm5lbCwKICAgICBpZiAoRHNjcEVuYWJsZWQoKSkgewogICAgICAg
cnRjX29wdGlvbnMuZHNjcCA9IFByZWZlcnJlZERzY3AoKTsKICAgICB9CisgICAgcnRjX29wdGlv
bnMuaW5mb19zaWduYWxlZF9hZnRlcl9zZW50LmluY2x1ZGVkX2luX2ZlZWRiYWNrID0KKyAgICAg
ICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9mZWVkYmFjazsKKyAgICBydGNfb3B0aW9ucy5pbmZvX3Np
Z25hbGVkX2FmdGVyX3NlbnQuaW5jbHVkZWRfaW5fYWxsb2NhdGlvbiA9CisgICAgICAgIG9wdGlv
bnMuaW5jbHVkZWRfaW5fYWxsb2NhdGlvbjsKICAgICByZXR1cm4gVm9pY2VNZWRpYUNoYW5uZWw6
OlNlbmRQYWNrZXQoJnBhY2tldCwgcnRjX29wdGlvbnMpOwogICB9CiAKQEAgLTIyNyw2ICsyMzUs
NyBAQCBjbGFzcyBXZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCBmaW5hbCA6IHB1YmxpYyBWb2ljZU1l
ZGlhQ2hhbm5lbCwKICAgICBpZiAoRHNjcEVuYWJsZWQoKSkgewogICAgICAgcnRjX29wdGlvbnMu
ZHNjcCA9IFByZWZlcnJlZERzY3AoKTsKICAgICB9CisKICAgICByZXR1cm4gVm9pY2VNZWRpYUNo
YW5uZWw6OlNlbmRSdGNwKCZwYWNrZXQsIHJ0Y19vcHRpb25zKTsKICAgfQogCkBAIC0yNTgsNiAr
MjY3LDcgQEAgY2xhc3MgV2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwgZmluYWwgOiBwdWJsaWMgVm9p
Y2VNZWRpYUNoYW5uZWwsCiAgIHN0ZDo6dmVjdG9yPEF1ZGlvQ29kZWM+IHJlY3ZfY29kZWNzXzsK
IAogICBpbnQgbWF4X3NlbmRfYml0cmF0ZV9icHNfID0gMDsKKyAgcnRjOjpEaWZmU2VydkNvZGVQ
b2ludCBwcmVmZXJyZWRfZHNjcF8gPSBydGM6OkRTQ1BfREVGQVVMVDsKICAgQXVkaW9PcHRpb25z
IG9wdGlvbnNfOwogICBhYnNsOjpvcHRpb25hbDxpbnQ+IGR0bWZfcGF5bG9hZF90eXBlXzsKICAg
aW50IGR0bWZfcGF5bG9hZF9mcmVxXyA9IC0xOwpAQCAtMjY4LDYgKzI3OCw4IEBAIGNsYXNzIFdl
YlJ0Y1ZvaWNlTWVkaWFDaGFubmVsIGZpbmFsIDogcHVibGljIFZvaWNlTWVkaWFDaGFubmVsLAog
ICBib29sIHNlbmRfID0gZmFsc2U7CiAgIHdlYnJ0Yzo6Q2FsbCogY29uc3QgY2FsbF8gPSBudWxs
cHRyOwogCisgIGNvbnN0IE1lZGlhQ29uZmlnOjpBdWRpbyBhdWRpb19jb25maWdfOworCiAgIC8v
IFF1ZXVlIG9mIHVuc2lnbmFsZWQgU1NSQ3M7IG9sZGVzdCBhdCB0aGUgYmVnaW5uaW5nLgogICBz
dGQ6OnZlY3Rvcjx1aW50MzJfdD4gdW5zaWduYWxlZF9yZWN2X3NzcmNzXzsKIApAQCAtMzAyLDYg
KzMxNCw5IEBAIGNsYXNzIFdlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsIGZpbmFsIDogcHVibGljIFZv
aWNlTWVkaWFDaGFubmVsLAogICBjb25zdCB3ZWJydGM6OkF1ZGlvQ29kZWNQYWlySWQgY29kZWNf
cGFpcl9pZF8gPQogICAgICAgd2VicnRjOjpBdWRpb0NvZGVjUGFpcklkOjpDcmVhdGUoKTsKIAor
ICAvLyBQZXIgcGVlciBjb25uZWN0aW9uIGNyeXB0byBvcHRpb25zIHRoYXQgbGFzdCBmb3IgdGhl
IGxpZmV0aW1lIG9mIHRoZSBwZWVyCisgIC8vIGNvbm5lY3Rpb24uCisgIGNvbnN0IHdlYnJ0Yzo6
Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uc187CiAgIC8vIFVuc2lnbmFsZWQgc3RyZWFtcyBo
YXZlIGFuIG9wdGlvbiB0byBoYXZlIGEgZnJhbWUgZGVjcnlwdG9yIHNldCBvbiB0aGVtLgogICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpGcmFtZURlY3J5cHRvckludGVyZmFjZT4KICAgICAg
IHVuc2lnbmFsZWRfZnJhbWVfZGVjcnlwdG9yXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2lu
ZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21lZGlhL2VuZ2luZS93ZWJydGN2b2ljZWVuZ2luZV91bml0dGVzdC5jYwppbmRleCBiYjgxNmVl
ZDExODI3ZjJjMGNkYzYyOTkxNjQzZWJkYjA5ODM1ZjgzLi45ZmQ1ZGZiMGFkODVjNGY3ODM5ZGE4
YTMzNGNhM2UxMzI5MzAyMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdm9pY2VlbmdpbmVfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEv
ZW5naW5lL3dlYnJ0Y3ZvaWNlZW5naW5lX3VuaXR0ZXN0LmNjCkBAIC0xMSw2ICsxMSw3IEBACiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3N0
cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1
ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCkBA
IC0yMTAsOCArMjExLDkgQEAgY2xhc3MgV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKIAogICBib29sIFNldHVwQ2hhbm5lbCgpIHsKICAgICBFWFBFQ1Rf
Q0FMTCgqYXBtXywgU2V0RXh0cmFPcHRpb25zKHRlc3Rpbmc6Ol8pKTsKLSAgICBjaGFubmVsXyA9
IGVuZ2luZV8tPkNyZWF0ZUNoYW5uZWwoJmNhbGxfLCBjcmlja2V0OjpNZWRpYUNvbmZpZygpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpBdWRpb09wdGlv
bnMoKSk7CisgICAgY2hhbm5lbF8gPSBlbmdpbmVfLT5DcmVhdGVNZWRpYUNoYW5uZWwoJmNhbGxf
LCBjcmlja2V0OjpNZWRpYUNvbmZpZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKICAgICBy
ZXR1cm4gKGNoYW5uZWxfICE9IG51bGxwdHIpOwogICB9CiAKQEAgLTI1Myw3ICsyNTUsNyBAQCBj
bGFzcyBXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlIDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewog
CiAgIHZvaWQgRGVsaXZlclBhY2tldChjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuKSB7CiAgICAg
cnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YSksIGxlbik7Ci0gICAgY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJnBhY2tl
dCwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgIGNoYW5uZWxfLT5PblBhY2tldFJlY2VpdmVkKCZw
YWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgfQogCiAgIHZvaWQgVGVhckRvd24o
KSBvdmVycmlkZSB7IGRlbGV0ZSBjaGFubmVsXzsgfQpAQCAtMzQ5LDYgKzM1MSwzMCBAQCBjbGFz
cyBXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAg
IEVYUEVDVF9FUSgxMjMsIHRlbGVwaG9uZV9ldmVudC5kdXJhdGlvbl9tcyk7CiAgIH0KIAorICB2
b2lkIFRlc3RFeHRtYXBBbGxvd01peGVkQ2FsbGVyKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSB7
CisgICAgLy8gRm9yIGEgY2FsbGVyLCB0aGUgYW5zd2VyIHdpbGwgYmUgYXBwbGllZCBpbiBzZXQg
cmVtb3RlIGRlc2NyaXB0aW9uCisgICAgLy8gd2hlcmUgU2V0U2VuZFBhcmFtZXRlcnMoKSBpcyBj
YWxsZWQuCisgICAgRVhQRUNUX1RSVUUoU2V0dXBDaGFubmVsKCkpOworICAgIEVYUEVDVF9UUlVF
KAorICAgICAgICBjaGFubmVsXy0+QWRkU2VuZFN0cmVhbShjcmlja2V0OjpTdHJlYW1QYXJhbXM6
OkNyZWF0ZUxlZ2FjeShrU3NyY1gpKSk7CisgICAgc2VuZF9wYXJhbWV0ZXJzXy5leHRtYXBfYWxs
b3dfbWl4ZWQgPSBleHRtYXBfYWxsb3dfbWl4ZWQ7CisgICAgU2V0U2VuZFBhcmFtZXRlcnMoc2Vu
ZF9wYXJhbWV0ZXJzXyk7CisgICAgY29uc3Qgd2VicnRjOjpBdWRpb1NlbmRTdHJlYW06OkNvbmZp
ZyYgY29uZmlnID0gR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3NyY1gpOworICAgIEVYUEVDVF9FUShl
eHRtYXBfYWxsb3dfbWl4ZWQsIGNvbmZpZy5ydHAuZXh0bWFwX2FsbG93X21peGVkKTsKKyAgfQor
CisgIHZvaWQgVGVzdEV4dG1hcEFsbG93TWl4ZWRDYWxsZWUoYm9vbCBleHRtYXBfYWxsb3dfbWl4
ZWQpIHsKKyAgICAvLyBGb3IgYSBjYWxsZWUsIHRoZSBhbnN3ZXIgd2lsbCBiZSBhcHBsaWVkIGlu
IHNldCBsb2NhbCBkZXNjcmlwdGlvbgorICAgIC8vIHdoZXJlIFNldEV4dG1hcEFsbG93TWl4ZWQo
KSBhbmQgQWRkU2VuZFN0cmVhbSgpIGFyZSBjYWxsZWQuCisgICAgRVhQRUNUX1RSVUUoU2V0dXBD
aGFubmVsKCkpOworICAgIGNoYW5uZWxfLT5TZXRFeHRtYXBBbGxvd01peGVkKGV4dG1hcF9hbGxv
d19taXhlZCk7CisgICAgRVhQRUNUX1RSVUUoCisgICAgICAgIGNoYW5uZWxfLT5BZGRTZW5kU3Ry
ZWFtKGNyaWNrZXQ6OlN0cmVhbVBhcmFtczo6Q3JlYXRlTGVnYWN5KGtTc3JjWCkpKTsKKworICAg
IGNvbnN0IHdlYnJ0Yzo6QXVkaW9TZW5kU3RyZWFtOjpDb25maWcmIGNvbmZpZyA9IEdldFNlbmRT
dHJlYW1Db25maWcoa1NzcmNYKTsKKyAgICBFWFBFQ1RfRVEoZXh0bWFwX2FsbG93X21peGVkLCBj
b25maWcucnRwLmV4dG1hcF9hbGxvd19taXhlZCk7CisgIH0KKwogICAvLyBUZXN0IHRoYXQgc2Vu
ZCBiYW5kd2lkdGggaXMgc2V0IGNvcnJlY3RseS4KICAgLy8gfGNvZGVjfCBpcyB0aGUgY29kZWMg
dW5kZXIgdGVzdC4KICAgLy8gfG1heF9iaXRyYXRlfCBpcyBhIHBhcmFtZXRlciB0byBzZXQgdG8g
U2V0TWF4U2VuZEJhbmR3aWR0aCgpLgpAQCAtNzM1LDcgKzc2MSw3IEBAIGNsYXNzIFdlYlJ0Y1Zv
aWNlRW5naW5lVGVzdEZha2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiB9OwogCiAvLyBUZXN0
cyB0aGF0IHdlIGNhbiBjcmVhdGUgYW5kIGRlc3Ryb3kgYSBjaGFubmVsLgotVEVTVF9GKFdlYlJ0
Y1ZvaWNlRW5naW5lVGVzdEZha2UsIENyZWF0ZUNoYW5uZWwpIHsKK1RFU1RfRihXZWJSdGNWb2lj
ZUVuZ2luZVRlc3RGYWtlLCBDcmVhdGVNZWRpYUNoYW5uZWwpIHsKICAgRVhQRUNUX1RSVUUoU2V0
dXBDaGFubmVsKCkpOwogfQogCkBAIC0xMTM3LDYgKzExNjMsMjggQEAgVEVTVF9GKFdlYlJ0Y1Zv
aWNlRW5naW5lVGVzdEZha2UsIFJ0cFBhcmFtZXRlcnNBcmVQZXJTdHJlYW0pIHsKICAgRVhQRUNU
X0VRKDMyMDAwLCBHZXRDb2RlY0JpdHJhdGUoa1NzcmNzNFsyXSkpOwogfQogCisvLyBSVENSdHBF
bmNvZGluZ1BhcmFtZXRlcnMubmV0d29ya19wcmlvcml0eSBtdXN0IGJlIG9uZSBvZiBhIGZldyB2
YWx1ZXMKKy8vIGRlcml2ZWQgZnJvbSB0aGUgZGVmYXVsdCBwcmlvcml0eSwgY29ycmVzcG9uZGlu
ZyB0byB2ZXJ5LWxvdywgbG93LCBtZWRpdW0sCisvLyBvciBoaWdoLgorVEVTVF9GKFdlYlJ0Y1Zv
aWNlRW5naW5lVGVzdEZha2UsIFNldFJ0cFNlbmRQYXJhbWV0ZXJzSW52YWxpZE5ldHdvcmtQcmlv
cml0eSkgeworICBFWFBFQ1RfVFJVRShTZXR1cFNlbmRTdHJlYW0oKSk7CisgIHdlYnJ0Yzo6UnRw
UGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gY2hhbm5lbF8tPkdldFJ0cFNlbmRQYXJhbWV0ZXJzKGtT
c3JjWCk7CisgIEVYUEVDVF9FUSgxVUwsIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnNpemUoKSk7Cisg
IEVYUEVDVF9FUSh3ZWJydGM6OmtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5LAorICAgICAgICAgICAg
cGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubmV0d29ya19wcmlvcml0eSk7CisKKyAgZG91YmxlIGdv
b2RfdmFsdWVzW10gPSB7MC41LCAxLjAsIDIuMCwgNC4wfTsKKyAgZG91YmxlIGJhZF92YWx1ZXNb
XSA9IHstMS4wLCAwLjAsIDAuNDksIDAuNTEsIDEuMSwgMy45OSwgNC4xLCA1LjB9OworICBmb3Ig
KGF1dG8gaXQgOiBnb29kX3ZhbHVlcykgeworICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5l
dHdvcmtfcHJpb3JpdHkgPSBpdDsKKyAgICBFWFBFQ1RfVFJVRShjaGFubmVsXy0+U2V0UnRwU2Vu
ZFBhcmFtZXRlcnMoa1NzcmNYLCBwYXJhbWV0ZXJzKS5vaygpKTsKKyAgfQorICBmb3IgKGF1dG8g
aXQgOiBiYWRfdmFsdWVzKSB7CisgICAgcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubmV0d29ya19w
cmlvcml0eSA9IGl0OworICAgIEVYUEVDVF9GQUxTRShjaGFubmVsXy0+U2V0UnRwU2VuZFBhcmFt
ZXRlcnMoa1NzcmNYLCBwYXJhbWV0ZXJzKS5vaygpKTsKKyAgfQorfQorCiAvLyBUZXN0IHRoYXQg
R2V0UnRwU2VuZFBhcmFtZXRlcnMgcmV0dXJucyB0aGUgY3VycmVudGx5IGNvbmZpZ3VyZWQgY29k
ZWNzLgogVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIEdldFJ0cFNlbmRQYXJhbWV0
ZXJzQ29kZWNzKSB7CiAgIEVYUEVDVF9UUlVFKFNldHVwU2VuZFN0cmVhbSgpKTsKQEAgLTE1ODcs
MTggKzE2MzUsNiBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0TWF4U2Vu
ZEJhbmR3aWR0aEZvckF1ZGlvRG9lc250QWZmZWN0QndlKSB7CiAgIFNldFNlbmRQYXJhbWV0ZXJz
KHNlbmRfcGFyYW1ldGVyc18pOwogfQogCi0vLyBUZXN0IHRoYXQgd2UgY2FuIGVuYWJsZSBOQUNL
IHdpdGggb3B1cyBhcyBjYWxsZXIuCi1URVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwg
U2V0U2VuZENvZGVjRW5hYmxlTmFja0FzQ2FsbGVyKSB7Ci0gIEVYUEVDVF9UUlVFKFNldHVwU2Vu
ZFN0cmVhbSgpKTsKLSAgY3JpY2tldDo6QXVkaW9TZW5kUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwot
ICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soa09wdXNDb2RlYyk7Ci0gIHBhcmFtZXRlcnMu
Y29kZWNzWzBdLkFkZEZlZWRiYWNrUGFyYW0oY3JpY2tldDo6RmVlZGJhY2tQYXJhbSgKLSAgICAg
IGNyaWNrZXQ6OmtSdGNwRmJQYXJhbU5hY2ssIGNyaWNrZXQ6OmtQYXJhbVZhbHVlRW1wdHkpKTsK
LSAgRVhQRUNUX0VRKDAsIEdldFNlbmRTdHJlYW1Db25maWcoa1NzcmNYKS5ydHAubmFjay5ydHBf
aGlzdG9yeV9tcyk7Ci0gIFNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotICBFWFBFQ1Rf
RVEoa1J0cEhpc3RvcnlNcywgR2V0U2VuZFN0cmVhbUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0
cF9oaXN0b3J5X21zKTsKLX0KLQogLy8gVGVzdCB0aGF0IHdlIGNhbiBlbmFibGUgTkFDSyB3aXRo
IG9wdXMgYXMgY2FsbGVlLgogVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNldFNl
bmRDb2RlY0VuYWJsZU5hY2tBc0NhbGxlZSkgewogICBFWFBFQ1RfVFJVRShTZXR1cFJlY3ZTdHJl
YW0oKSk7CkBAIC0xNjEzLDcgKzE2NDksNiBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0
RmFrZSwgU2V0U2VuZENvZGVjRW5hYmxlTmFja0FzQ2FsbGVlKSB7CiAKICAgRVhQRUNUX1RSVUUo
CiAgICAgICBjaGFubmVsXy0+QWRkU2VuZFN0cmVhbShjcmlja2V0OjpTdHJlYW1QYXJhbXM6OkNy
ZWF0ZUxlZ2FjeShrU3NyY1gpKSk7Ci0gIEVYUEVDVF9FUShrUnRwSGlzdG9yeU1zLCBHZXRTZW5k
U3RyZWFtQ29uZmlnKGtTc3JjWCkucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMpOwogfQogCiAvLyBU
ZXN0IHRoYXQgd2UgY2FuIGVuYWJsZSBOQUNLIG9uIHJlY2VpdmUgc3RyZWFtcy4KQEAgLTE2MjQs
MjkgKzE2NTksMTEgQEAgVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNldFNlbmRD
b2RlY0VuYWJsZU5hY2tSZWN2U3RyZWFtcykgewogICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2Jh
Y2soa09wdXNDb2RlYyk7CiAgIHBhcmFtZXRlcnMuY29kZWNzWzBdLkFkZEZlZWRiYWNrUGFyYW0o
Y3JpY2tldDo6RmVlZGJhY2tQYXJhbSgKICAgICAgIGNyaWNrZXQ6OmtSdGNwRmJQYXJhbU5hY2ss
IGNyaWNrZXQ6OmtQYXJhbVZhbHVlRW1wdHkpKTsKLSAgRVhQRUNUX0VRKDAsIEdldFNlbmRTdHJl
YW1Db25maWcoa1NzcmNYKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7CiAgIEVYUEVDVF9FUSgw
LCBHZXRSZWN2U3RyZWFtQ29uZmlnKGtTc3JjWSkucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMpOwog
ICBTZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKLSAgRVhQRUNUX0VRKGtSdHBIaXN0b3J5
TXMsIEdldFNlbmRTdHJlYW1Db25maWcoa1NzcmNYKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7
CiAgIEVYUEVDVF9FUShrUnRwSGlzdG9yeU1zLCBHZXRSZWN2U3RyZWFtQ29uZmlnKGtTc3JjWSku
cnRwLm5hY2sucnRwX2hpc3RvcnlfbXMpOwogfQogCi0vLyBUZXN0IHRoYXQgd2UgY2FuIGRpc2Fi
bGUgTkFDSy4KLVRFU1RfRihXZWJSdGNWb2ljZUVuZ2luZVRlc3RGYWtlLCBTZXRTZW5kQ29kZWNE
aXNhYmxlTmFjaykgewotICBFWFBFQ1RfVFJVRShTZXR1cFNlbmRTdHJlYW0oKSk7Ci0gIGNyaWNr
ZXQ6OkF1ZGlvU2VuZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgcGFyYW1ldGVycy5jb2RlY3Mu
cHVzaF9iYWNrKGtPcHVzQ29kZWMpOwotICBwYXJhbWV0ZXJzLmNvZGVjc1swXS5BZGRGZWVkYmFj
a1BhcmFtKGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0oCi0gICAgICBjcmlja2V0OjprUnRjcEZiUGFy
YW1OYWNrLCBjcmlja2V0OjprUGFyYW1WYWx1ZUVtcHR5KSk7Ci0gIFNldFNlbmRQYXJhbWV0ZXJz
KHBhcmFtZXRlcnMpOwotICBFWFBFQ1RfRVEoa1J0cEhpc3RvcnlNcywgR2V0U2VuZFN0cmVhbUNv
bmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKLQotICBwYXJhbWV0ZXJzLmNv
ZGVjcy5jbGVhcigpOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soa09wdXNDb2RlYyk7
Ci0gIFNldFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwotICBFWFBFQ1RfRVEoMCwgR2V0U2Vu
ZFN0cmVhbUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKLX0KLQogLy8g
VGVzdCB0aGF0IHdlIGNhbiBkaXNhYmxlIE5BQ0sgb24gcmVjZWl2ZSBzdHJlYW1zLgogVEVTVF9G
KFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNldFNlbmRDb2RlY0Rpc2FibGVOYWNrUmVjdlN0
cmVhbXMpIHsKICAgRVhQRUNUX1RSVUUoU2V0dXBTZW5kU3RyZWFtKCkpOwpAQCAtMTY1NiwxMyAr
MTY3MywxMSBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0U2VuZENvZGVj
RGlzYWJsZU5hY2tSZWN2U3RyZWFtcykgewogICBwYXJhbWV0ZXJzLmNvZGVjc1swXS5BZGRGZWVk
YmFja1BhcmFtKGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0oCiAgICAgICBjcmlja2V0OjprUnRjcEZi
UGFyYW1OYWNrLCBjcmlja2V0OjprUGFyYW1WYWx1ZUVtcHR5KSk7CiAgIFNldFNlbmRQYXJhbWV0
ZXJzKHBhcmFtZXRlcnMpOwotICBFWFBFQ1RfRVEoa1J0cEhpc3RvcnlNcywgR2V0U2VuZFN0cmVh
bUNvbmZpZyhrU3NyY1gpLnJ0cC5uYWNrLnJ0cF9oaXN0b3J5X21zKTsKICAgRVhQRUNUX0VRKGtS
dHBIaXN0b3J5TXMsIEdldFJlY3ZTdHJlYW1Db25maWcoa1NzcmNZKS5ydHAubmFjay5ydHBfaGlz
dG9yeV9tcyk7CiAKICAgcGFyYW1ldGVycy5jb2RlY3MuY2xlYXIoKTsKICAgcGFyYW1ldGVycy5j
b2RlY3MucHVzaF9iYWNrKGtPcHVzQ29kZWMpOwogICBTZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0
ZXJzKTsKLSAgRVhQRUNUX0VRKDAsIEdldFNlbmRTdHJlYW1Db25maWcoa1NzcmNYKS5ydHAubmFj
ay5ydHBfaGlzdG9yeV9tcyk7CiAgIEVYUEVDVF9FUSgwLCBHZXRSZWN2U3RyZWFtQ29uZmlnKGtT
c3JjWSkucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMpOwogfQogCkBAIC0xNjc1LDcgKzE2OTAsNiBA
QCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgQWRkUmVjdlN0cmVhbUVuYWJsZU5h
Y2spIHsKICAgcGFyYW1ldGVycy5jb2RlY3NbMF0uQWRkRmVlZGJhY2tQYXJhbShjcmlja2V0OjpG
ZWVkYmFja1BhcmFtKAogICAgICAgY3JpY2tldDo6a1J0Y3BGYlBhcmFtTmFjaywgY3JpY2tldDo6
a1BhcmFtVmFsdWVFbXB0eSkpOwogICBTZXRTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKLSAg
RVhQRUNUX0VRKGtSdHBIaXN0b3J5TXMsIEdldFNlbmRTdHJlYW1Db25maWcoa1NzcmNYKS5ydHAu
bmFjay5ydHBfaGlzdG9yeV9tcyk7CiAKICAgRVhQRUNUX1RSVUUoQWRkUmVjdlN0cmVhbShrU3Ny
Y1kpKTsKICAgRVhQRUNUX0VRKGtSdHBIaXN0b3J5TXMsIEdldFJlY3ZTdHJlYW1Db25maWcoa1Nz
cmNZKS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyk7CkBAIC0yNzk5LDYgKzI4MTMsMjAgQEAgVEVT
VF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIEluc2VydER0bWZPblNlbmRTdHJlYW1Bc0Nh
bGxlZSkgewogICBUZXN0SW5zZXJ0RHRtZihrU3NyY1gsIGZhbHNlLCBrVGVsZXBob25lRXZlbnRD
b2RlYzEpOwogfQogCisvLyBUZXN0IHByb3BhZ2F0aW9uIG9mIGV4dG1hcCBhbGxvdyBtaXhlZCBz
ZXR0aW5nLgorVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNldEV4dG1hcEFsbG93
TWl4ZWRBc0NhbGxlcikgeworICBUZXN0RXh0bWFwQWxsb3dNaXhlZENhbGxlcigvKmV4dG1hcF9h
bGxvd19taXhlZD0qL3RydWUpOworfQorVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2Us
IFNldEV4dG1hcEFsbG93TWl4ZWREaXNhYmxlZEFzQ2FsbGVyKSB7CisgIFRlc3RFeHRtYXBBbGxv
d01peGVkQ2FsbGVyKC8qZXh0bWFwX2FsbG93X21peGVkPSovZmFsc2UpOworfQorVEVTVF9GKFdl
YlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNldEV4dG1hcEFsbG93TWl4ZWRBc0NhbGxlZSkgewor
ICBUZXN0RXh0bWFwQWxsb3dNaXhlZENhbGxlZSgvKmV4dG1hcF9hbGxvd19taXhlZD0qL3RydWUp
OworfQorVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNldEV4dG1hcEFsbG93TWl4
ZWREaXNhYmxlZEFzQ2FsbGVlKSB7CisgIFRlc3RFeHRtYXBBbGxvd01peGVkQ2FsbGVlKC8qZXh0
bWFwX2FsbG93X21peGVkPSovZmFsc2UpOworfQorCiBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVU
ZXN0RmFrZSwgU2V0QXVkaW9PcHRpb25zKSB7CiAgIEVYUEVDVF9UUlVFKFNldHVwU2VuZFN0cmVh
bSgpKTsKICAgRVhQRUNUX1RSVUUoQWRkUmVjdlN0cmVhbShrU3NyY1kpKTsKQEAgLTI5MTQsMTEg
KzI5NDIsMTUgQEAgVEVTVF9GKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFNldE9wdGlvbk92
ZXJyaWRlc1ZpYUNoYW5uZWxzKSB7CiAgIEVYUEVDVF9DQUxMKCphcG1fLCBTZXRFeHRyYU9wdGlv
bnModGVzdGluZzo6XykpLlRpbWVzKDEwKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6
V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWw+IGNoYW5uZWwxKAotICAgICAgc3RhdGljX2Nhc3Q8Y3Jp
Y2tldDo6V2ViUnRjVm9pY2VNZWRpYUNoYW5uZWwqPihlbmdpbmVfLT5DcmVhdGVDaGFubmVsKAot
ICAgICAgICAgICZjYWxsXywgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgY3JpY2tldDo6QXVkaW9P
cHRpb25zKCkpKSk7CisgICAgICBzdGF0aWNfY2FzdDxjcmlja2V0OjpXZWJSdGNWb2ljZU1lZGlh
Q2hhbm5lbCo+KAorICAgICAgICAgIGVuZ2luZV8tPkNyZWF0ZU1lZGlhQ2hhbm5lbCgmY2FsbF8s
IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpKTsKICAgc3RkOjp1bmlxdWVf
cHRyPGNyaWNrZXQ6OldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsPiBjaGFubmVsMigKLSAgICAgIHN0
YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKj4oZW5naW5lXy0+Q3Jl
YXRlQ2hhbm5lbCgKLSAgICAgICAgICAmY2FsbF8sIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIGNy
aWNrZXQ6OkF1ZGlvT3B0aW9ucygpKSkpOworICAgICAgc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2Vi
UnRjVm9pY2VNZWRpYUNoYW5uZWwqPigKKyAgICAgICAgICBlbmdpbmVfLT5DcmVhdGVNZWRpYUNo
YW5uZWwoJmNhbGxfLCBjcmlja2V0OjpNZWRpYUNvbmZpZygpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKSk7CiAK
ICAgLy8gSGF2ZSB0byBhZGQgYSBzdHJlYW0gdG8gbWFrZSBTZXRTZW5kIHdvcmsuCiAgIGNyaWNr
ZXQ6OlN0cmVhbVBhcmFtcyBzdHJlYW0xOwpAQCAtMzAxNyw2ICszMDQ5LDcgQEAgVEVTVF9GKFdl
YlJ0Y1ZvaWNlRW5naW5lVGVzdEZha2UsIFRlc3RTZXREc2NwT3B0aW9ucykgewogICBjcmlja2V0
OjpGYWtlTmV0d29ya0ludGVyZmFjZSBuZXR3b3JrX2ludGVyZmFjZTsKICAgY3JpY2tldDo6TWVk
aWFDb25maWcgY29uZmlnOwogICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6V2ViUnRjVm9pY2VN
ZWRpYUNoYW5uZWw+IGNoYW5uZWw7CisgIHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OwogCiAgIHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nOjpDb25maWcgYXBtX2NvbmZpZzsKICAgRVhQ
RUNUX0NBTEwoKmFwbV8sIEdldENvbmZpZygpKQpAQCAtMzAyNiwzMiArMzA1OSw1NCBAQCBURVNU
X0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgVGVzdFNldERzY3BPcHRpb25zKSB7CiAgIEVY
UEVDVF9DQUxMKCphcG1fLCBTZXRFeHRyYU9wdGlvbnModGVzdGluZzo6XykpLlRpbWVzKDMpOwog
CiAgIGNoYW5uZWwucmVzZXQoc3RhdGljX2Nhc3Q8Y3JpY2tldDo6V2ViUnRjVm9pY2VNZWRpYUNo
YW5uZWwqPigKLSAgICAgIGVuZ2luZV8tPkNyZWF0ZUNoYW5uZWwoJmNhbGxfLCBjb25maWcsIGNy
aWNrZXQ6OkF1ZGlvT3B0aW9ucygpKSkpOwotICBjaGFubmVsLT5TZXRJbnRlcmZhY2UoJm5ldHdv
cmtfaW50ZXJmYWNlKTsKKyAgICAgIGVuZ2luZV8tPkNyZWF0ZU1lZGlhQ2hhbm5lbCgmY2FsbF8s
IGNvbmZpZywgY3JpY2tldDo6QXVkaW9PcHRpb25zKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpKSk7CisgIGNoYW5uZWwtPlNldElu
dGVyZmFjZSgmbmV0d29ya19pbnRlcmZhY2UsIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7
CiAgIC8vIERlZmF1bHQgdmFsdWUgd2hlbiBEU0NQIGlzIGRpc2FibGVkIHNob3VsZCBiZSBEU0NQ
X0RFRkFVTFQuCiAgIEVYUEVDVF9FUShydGM6OkRTQ1BfREVGQVVMVCwgbmV0d29ya19pbnRlcmZh
Y2UuZHNjcCgpKTsKIAogICBjb25maWcuZW5hYmxlX2RzY3AgPSB0cnVlOwogICBjaGFubmVsLnJl
c2V0KHN0YXRpY19jYXN0PGNyaWNrZXQ6OldlYlJ0Y1ZvaWNlTWVkaWFDaGFubmVsKj4oCi0gICAg
ICBlbmdpbmVfLT5DcmVhdGVDaGFubmVsKCZjYWxsXywgY29uZmlnLCBjcmlja2V0OjpBdWRpb09w
dGlvbnMoKSkpKTsKLSAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKCZuZXR3b3JrX2ludGVyZmFjZSk7
CisgICAgICBlbmdpbmVfLT5DcmVhdGVNZWRpYUNoYW5uZWwoJmNhbGxfLCBjb25maWcsIGNyaWNr
ZXQ6OkF1ZGlvT3B0aW9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdl
YnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSkpOworICBjaGFubmVsLT5TZXRJbnRlcmZhY2UoJm5ldHdv
cmtfaW50ZXJmYWNlLCAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOworICBFWFBFQ1RfRVEo
cnRjOjpEU0NQX0RFRkFVTFQsIG5ldHdvcmtfaW50ZXJmYWNlLmRzY3AoKSk7CisKKyAgLy8gQ3Jl
YXRlIGEgc2VuZCBzdHJlYW0gdG8gY29uZmlndXJlCisgIEVYUEVDVF9UUlVFKAorICAgICAgY2hh
bm5lbC0+QWRkU2VuZFN0cmVhbShjcmlja2V0OjpTdHJlYW1QYXJhbXM6OkNyZWF0ZUxlZ2FjeShr
U3NyY1opKSk7CisgIHBhcmFtZXRlcnMgPSBjaGFubmVsLT5HZXRSdHBTZW5kUGFyYW1ldGVycyhr
U3NyY1opOworICBBU1NFUlRfRkFMU0UocGFyYW1ldGVycy5lbmNvZGluZ3MuZW1wdHkoKSk7CisK
KyAgLy8gVmFyaW91cyBwcmlvcml0aWVzIG1hcCB0byB2YXJpb3VzIGRzY3AgdmFsdWVzLgorICBw
YXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5ID0gNC4wOworICBBU1NFUlRf
VFJVRShjaGFubmVsLT5TZXRSdHBTZW5kUGFyYW1ldGVycyhrU3NyY1osIHBhcmFtZXRlcnMpLm9r
KCkpOwogICBFWFBFQ1RfRVEocnRjOjpEU0NQX0VGLCBuZXR3b3JrX2ludGVyZmFjZS5kc2NwKCkp
OworICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5uZXR3b3JrX3ByaW9yaXR5ID0gMC41OworICBB
U1NFUlRfVFJVRShjaGFubmVsLT5TZXRSdHBTZW5kUGFyYW1ldGVycyhrU3NyY1osIHBhcmFtZXRl
cnMpLm9rKCkpOworICBFWFBFQ1RfRVEocnRjOjpEU0NQX0NTMSwgbmV0d29ya19pbnRlcmZhY2Uu
ZHNjcCgpKTsKKworICAvLyBBIGJhZCBwcmlvcml0eSBkb2VzIG5vdCBjaGFuZ2UgdGhlIGRzY3Ag
dmFsdWUuCisgIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLm5ldHdvcmtfcHJpb3JpdHkgPSAwLjA7
CisgIEFTU0VSVF9GQUxTRShjaGFubmVsLT5TZXRSdHBTZW5kUGFyYW1ldGVycyhrU3NyY1osIHBh
cmFtZXRlcnMpLm9rKCkpOworICBFWFBFQ1RfRVEocnRjOjpEU0NQX0NTMSwgbmV0d29ya19pbnRl
cmZhY2UuZHNjcCgpKTsKIAogICAvLyBQYWNrZXRzIHNob3VsZCBhbHNvIHNlbGYtaWRlbnRpZnkg
dGhlaXIgZHNjcCBpbiBQYWNrZXRPcHRpb25zLgogICBjb25zdCB1aW50OF90IGtEYXRhWzEwXSA9
IHswfTsKICAgRVhQRUNUX1RSVUUoY2hhbm5lbC0+U2VuZFJ0Y3Aoa0RhdGEsIHNpemVvZihrRGF0
YSkpKTsKLSAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9FRiwgbmV0d29ya19pbnRlcmZhY2Uub3B0aW9u
cygpLmRzY3ApOworICBFWFBFQ1RfRVEocnRjOjpEU0NQX0NTMSwgbmV0d29ya19pbnRlcmZhY2Uu
b3B0aW9ucygpLmRzY3ApOwogCiAgIC8vIFZlcmlmeSB0aGF0IHNldHRpbmcgdGhlIG9wdGlvbiB0
byBmYWxzZSByZXNldHMgdGhlCiAgIC8vIERpZmZTZXJ2Q29kZVBvaW50LgogICBjb25maWcuZW5h
YmxlX2RzY3AgPSBmYWxzZTsKICAgY2hhbm5lbC5yZXNldChzdGF0aWNfY2FzdDxjcmlja2V0OjpX
ZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCo+KAotICAgICAgZW5naW5lXy0+Q3JlYXRlQ2hhbm5lbCgm
Y2FsbF8sIGNvbmZpZywgY3JpY2tldDo6QXVkaW9PcHRpb25zKCkpKSk7Ci0gIGNoYW5uZWwtPlNl
dEludGVyZmFjZSgmbmV0d29ya19pbnRlcmZhY2UpOworICAgICAgZW5naW5lXy0+Q3JlYXRlTWVk
aWFDaGFubmVsKCZjYWxsXywgY29uZmlnLCBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSkpKTsK
KyAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKCZuZXR3b3JrX2ludGVyZmFjZSwgLyptZWRpYV90cmFu
c3BvcnQ9Ki9udWxscHRyKTsKICAgLy8gRGVmYXVsdCB2YWx1ZSB3aGVuIERTQ1AgaXMgZGlzYWJs
ZWQgc2hvdWxkIGJlIERTQ1BfREVGQVVMVC4KICAgRVhQRUNUX0VRKHJ0Yzo6RFNDUF9ERUZBVUxU
LCBuZXR3b3JrX2ludGVyZmFjZS5kc2NwKCkpOwogCi0gIGNoYW5uZWwtPlNldEludGVyZmFjZShu
dWxscHRyKTsKKyAgY2hhbm5lbC0+U2V0SW50ZXJmYWNlKG51bGxwdHIsIG51bGxwdHIpOwogfQog
CiBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgU2V0T3V0cHV0Vm9sdW1lKSB7CkBA
IC0zMTk0LDkgKzMyNDksOSBAQCBURVNUX0YoV2ViUnRjVm9pY2VFbmdpbmVUZXN0RmFrZSwgRGVs
aXZlckF1ZGlvUGFja2V0X0NhbGwpIHsKICAgY29uc3QgY3JpY2tldDo6RmFrZUF1ZGlvUmVjZWl2
ZVN0cmVhbSogcyA9CiAgICAgICBjYWxsXy5HZXRBdWRpb1JlY2VpdmVTdHJlYW0oa0F1ZGlvU3Ny
Yyk7CiAgIEVYUEVDVF9FUSgwLCBzLT5yZWNlaXZlZF9wYWNrZXRzKCkpOwotICBjaGFubmVsXy0+
T25QYWNrZXRSZWNlaXZlZCgma1BjbXVQYWNrZXQsIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgY2hh
bm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJmtQY211UGFja2V0LCAvKiBwYWNrZXRfdGltZV91cyAq
LyAtMSk7CiAgIEVYUEVDVF9FUSgxLCBzLT5yZWNlaXZlZF9wYWNrZXRzKCkpOwotICBjaGFubmVs
Xy0+T25SdGNwUmVjZWl2ZWQoJmtSdGNwUGFja2V0LCBydGM6OlBhY2tldFRpbWUoKSk7CisgIGNo
YW5uZWxfLT5PblJ0Y3BSZWNlaXZlZCgma1J0Y3BQYWNrZXQsIC8qIHBhY2tldF90aW1lX3VzICov
IC0xKTsKICAgRVhQRUNUX0VRKDIsIHMtPnJlY2VpdmVkX3BhY2tldHMoKSk7CiB9CiAKQEAgLTMz
NzQsOCArMzQyOSw5IEBAIFRFU1QoV2ViUnRjVm9pY2VFbmdpbmVUZXN0LCBTdGFydHVwU2h1dGRv
d24pIHsKICAgd2VicnRjOjpSdGNFdmVudExvZ051bGxJbXBsIGV2ZW50X2xvZzsKICAgc3RkOjp1
bmlxdWVfcHRyPHdlYnJ0Yzo6Q2FsbD4gY2FsbCgKICAgICAgIHdlYnJ0Yzo6Q2FsbDo6Q3JlYXRl
KHdlYnJ0Yzo6Q2FsbDo6Q29uZmlnKCZldmVudF9sb2cpKSk7Ci0gIGNyaWNrZXQ6OlZvaWNlTWVk
aWFDaGFubmVsKiBjaGFubmVsID0gZW5naW5lLkNyZWF0ZUNoYW5uZWwoCi0gICAgICBjYWxsLmdl
dCgpLCBjcmlja2V0OjpNZWRpYUNvbmZpZygpLCBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSk7Cisg
IGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiBjaGFubmVsID0gZW5naW5lLkNyZWF0ZU1lZGlh
Q2hhbm5lbCgKKyAgICAgIGNhbGwuZ2V0KCksIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIGNyaWNr
ZXQ6OkF1ZGlvT3B0aW9ucygpLAorICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpOwogICBF
WFBFQ1RfVFJVRShjaGFubmVsICE9IG51bGxwdHIpOwogICBkZWxldGUgY2hhbm5lbDsKIH0KQEAg
LTMzOTcsOCArMzQ1Myw5IEBAIFRFU1QoV2ViUnRjVm9pY2VFbmdpbmVUZXN0LCBTdGFydHVwU2h1
dGRvd25XaXRoRXh0ZXJuYWxBRE0pIHsKICAgICB3ZWJydGM6OlJ0Y0V2ZW50TG9nTnVsbEltcGwg
ZXZlbnRfbG9nOwogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkNhbGw+IGNhbGwoCiAgICAg
ICAgIHdlYnJ0Yzo6Q2FsbDo6Q3JlYXRlKHdlYnJ0Yzo6Q2FsbDo6Q29uZmlnKCZldmVudF9sb2cp
KSk7Ci0gICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIGNoYW5uZWwgPSBlbmdpbmUuQ3Jl
YXRlQ2hhbm5lbCgKLSAgICAgICAgY2FsbC5nZXQoKSwgY3JpY2tldDo6TWVkaWFDb25maWcoKSwg
Y3JpY2tldDo6QXVkaW9PcHRpb25zKCkpOworICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVs
KiBjaGFubmVsID0gZW5naW5lLkNyZWF0ZU1lZGlhQ2hhbm5lbCgKKyAgICAgICAgY2FsbC5nZXQo
KSwgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgY3JpY2tldDo6QXVkaW9PcHRpb25zKCksCisgICAg
ICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKICAgICBFWFBFQ1RfVFJVRShjaGFubmVsICE9
IG51bGxwdHIpOwogICAgIGRlbGV0ZSBjaGFubmVsOwogICB9CkBAIC0zNDE3LDcgKzM0NzQsNyBA
QCBURVNUKFdlYlJ0Y1ZvaWNlRW5naW5lVGVzdCwgSGFzQ29ycmVjdFBheWxvYWRUeXBlTWFwcGlu
ZykgewogICBlbmdpbmUuSW5pdCgpOwogICBmb3IgKGNvbnN0IGNyaWNrZXQ6OkF1ZGlvQ29kZWMm
IGNvZGVjIDogZW5naW5lLnNlbmRfY29kZWNzKCkpIHsKICAgICBhdXRvIGlzX2NvZGVjID0gWyZj
b2RlY10oY29uc3QgY2hhciogbmFtZSwgaW50IGNsb2NrcmF0ZSA9IDApIHsKLSAgICAgIHJldHVy
biBTVFJfQ0FTRV9DTVAoY29kZWMubmFtZS5jX3N0cigpLCBuYW1lKSA9PSAwICYmCisgICAgICBy
ZXR1cm4gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBuYW1lKSAmJgogICAgICAg
ICAgICAgIChjbG9ja3JhdGUgPT0gMCB8fCBjb2RlYy5jbG9ja3JhdGUgPT0gY2xvY2tyYXRlKTsK
ICAgICB9OwogICAgIGlmIChpc19jb2RlYygiQ04iLCAxNjAwMCkpIHsKQEAgLTM0NjcsOCArMzUy
NCw5IEBAIFRFU1QoV2ViUnRjVm9pY2VFbmdpbmVUZXN0LCBIYXMzMkNoYW5uZWxzKSB7CiAgIGNy
aWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiBjaGFubmVsc1szMl07CiAgIHNpemVfdCBudW1fY2hh
bm5lbHMgPSAwOwogICB3aGlsZSAobnVtX2NoYW5uZWxzIDwgYXJyYXlzaXplKGNoYW5uZWxzKSkg
ewotICAgIGNyaWNrZXQ6OlZvaWNlTWVkaWFDaGFubmVsKiBjaGFubmVsID0gZW5naW5lLkNyZWF0
ZUNoYW5uZWwoCi0gICAgICAgIGNhbGwuZ2V0KCksIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIGNy
aWNrZXQ6OkF1ZGlvT3B0aW9ucygpKTsKKyAgICBjcmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCog
Y2hhbm5lbCA9IGVuZ2luZS5DcmVhdGVNZWRpYUNoYW5uZWwoCisgICAgICAgIGNhbGwuZ2V0KCks
IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpLAorICAgICAg
ICB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSk7CiAgICAgaWYgKCFjaGFubmVsKQogICAgICAgYnJl
YWs7CiAgICAgY2hhbm5lbHNbbnVtX2NoYW5uZWxzKytdID0gY2hhbm5lbDsKQEAgLTM1MDIsNyAr
MzU2MCw4IEBAIFRFU1QoV2ViUnRjVm9pY2VFbmdpbmVUZXN0LCBTZXRSZWN2Q29kZWNzKSB7CiAg
IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkNhbGw+IGNhbGwoCiAgICAgICB3ZWJydGM6OkNhbGw6
OkNyZWF0ZSh3ZWJydGM6OkNhbGw6OkNvbmZpZygmZXZlbnRfbG9nKSkpOwogICBjcmlja2V0OjpX
ZWJSdGNWb2ljZU1lZGlhQ2hhbm5lbCBjaGFubmVsKCZlbmdpbmUsIGNyaWNrZXQ6Ok1lZGlhQ29u
ZmlnKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tl
dDo6QXVkaW9PcHRpb25zKCksIGNhbGwuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkF1ZGlvT3B0aW9ucygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBj
YWxsLmdldCgpKTsKICAgY3JpY2tldDo6QXVkaW9SZWN2UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwog
ICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGVuZ2luZS5yZWN2X2NvZGVjcygpOwogICBFWFBFQ1RfVFJV
RShjaGFubmVsLlNldFJlY3ZQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpKTsKQEAgLTM1NjQsNyArMzYy
Myw3IEBAIFRFU1QoV2ViUnRjVm9pY2VFbmdpbmVUZXN0LCBDb2xsZWN0UmVjdkNvZGVjcykgewog
ICBhdXRvIGZpbmRfY29kZWMgPSBbJmNvZGVjc10oY29uc3Qgd2VicnRjOjpTZHBBdWRpb0Zvcm1h
dCYgZm9ybWF0KSAtPiBpbnQgewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNvZGVjcy5z
aXplKCk7ICsraSkgewogICAgICAgY29uc3QgY3JpY2tldDo6QXVkaW9Db2RlYyYgY29kZWMgPSBj
b2RlY3NbaV07Ci0gICAgICBpZiAoU1RSX0NBU0VfQ01QKGNvZGVjLm5hbWUuY19zdHIoKSwgZm9y
bWF0Lm5hbWUuY19zdHIoKSkgPT0gMCAmJgorICAgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNh
c2UoY29kZWMubmFtZSwgZm9ybWF0Lm5hbWUpICYmCiAgICAgICAgICAgY29kZWMuY2xvY2tyYXRl
ID09IGZvcm1hdC5jbG9ja3JhdGVfaHogJiYKICAgICAgICAgICBjb2RlYy5jaGFubmVscyA9PSBm
b3JtYXQubnVtX2NoYW5uZWxzKSB7CiAgICAgICAgIHJldHVybiBydGM6OmNoZWNrZWRfY2FzdDxp
bnQ+KGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbWVkaWEvc2N0cC9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL09XTkVSUwppbmRleCA4MjYyZmY3NTA4OTZmYjY5YjFjMDcw
ZDU5MDU4NjFiYTQ2ZDNmMGI0Li5iYzIxODJiMWI2MGYyYzljNDMwNjAyNjJhZGVhMTBhOGM5MGJh
NDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tZWRpYS9zY3RwL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL09XTkVSUwpAQCAtMSwyICsxIEBACiBqZXJvZW5kYkB3ZWJy
dGMub3JnCi1zaGFtcHNvbkB3ZWJydGMub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnQuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0
cmFuc3BvcnQuY2MKaW5kZXggYThiOTQ1YTZmMTczZDliYTA2ZjI5YTRiYjI4YzRhNWZhYmMwOTgy
Mi4uNGZmYWFmN2Y1YTA0NDhkMTBmYzMxZWY0MDVjYzNlZjZiODQ4YmQ5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvc2N0cC9zY3Rw
dHJhbnNwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21lZGlhL3NjdHAvc2N0cHRyYW5zcG9ydC5jYwpAQCAtODU4LDcgKzg1OCw3IEBAIHZvaWQg
U2N0cFRyYW5zcG9ydDo6T25Xcml0YWJsZVN0YXRlKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJu
YWwqIHRyYW5zcG9ydCkgewogdm9pZCBTY3RwVHJhbnNwb3J0OjpPblBhY2tldFJlYWQocnRjOjpQ
YWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpIHsKICAgUlRDX0RDSEVDS19SVU5fT04o
bmV0d29ya190aHJlYWRfKTsKICAgUlRDX0RDSEVDS19FUSh0cmFuc3BvcnRfLCB0cmFuc3BvcnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bWVkaWEvc2N0cC9zY3RwdHJhbnNwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnQuaAppbmRleCBhNDAxZDhiNzk1
YThhYTkxNGFlMzY0YWIxMzU1MjYyOGM1MzA3NzIxLi41YzJhNzUwZTRmM2MzMjIwYzRlOTdiNGI4
MDcxNjk4M2JkZDQzMDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnQu
aApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPGVycm5vLmg+CiAKICNpbmNsdWRlIDxtYXA+
Ci0jaW5jbHVkZSA8bWVtb3J5PiAgLy8gZm9yIHVuaXF1ZV9wdHIuCisjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgpA
QCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNjdHBUcmFuc3BvcnQgOiBwdWJsaWMgU2N0cFRyYW5z
cG9ydEludGVybmFsLAogICB2aXJ0dWFsIHZvaWQgT25QYWNrZXRSZWFkKHJ0Yzo6UGFja2V0VHJh
bnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNr
ZXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNr
ZXRfdGltZV91cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOwogCiAg
IC8vIE1ldGhvZHMgcmVsYXRlZCB0byB1c3JzY3RwIGNhbGxiYWNrcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRy
YW5zcG9ydGludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnRpbnRlcm5hbC5oCmluZGV4IDAzODBhODcwYjRj
MGIwOGQyY2UxYjQ2ODQ2YjU4ODY4NGNiYTc3ZDAuLjRjM2I1NDJhNTIxZDhiYjYzNDgzNzIwYjgw
NjRkYTQ2NDk1ZjQ5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21lZGlhL3NjdHAvc2N0cHRyYW5zcG9ydGludGVybmFsLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbWVkaWEvc2N0cC9zY3RwdHJh
bnNwb3J0aW50ZXJuYWwuaApAQCAtMTQsNyArMTQsNyBAQAogLy8gVE9ETyhkZWFkYmVlZik6IE1v
dmUgU0NUUCBjb2RlIG91dCBvZiBtZWRpYS8sIGFuZCBtYWtlIGl0IG5vdCBkZXBlbmQgb24KIC8v
IGFueXRoaW5nIGluIG1lZGlhLy4KIAotI2luY2x1ZGUgPG1lbW9yeT4gIC8vIGZvciB1bmlxdWVf
cHRyCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL0JVSUxELmduCmluZGV4IDgxMjcyNDQ0NjJiMzM1NzI2NjI5NmFmMmMz
NTg2ZjE1Yzg4YmY2ZDAuLmVmMDI5OTE0YjMwOTNjMmJlNDM4ZmEyMzBlYmFiYWMxYzZmMDQ5MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9CVUlMRC5nbgpAQCAtNTQsNiArNTQsNyBAQCBydGNfc291cmNlX3NldCgi
bW9kdWxlX2FwaSIpIHsKICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGki
LAogICAgICIuLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF92aWRlb19oZWFkZXIiLAogICAgICIuLi9y
dGNfYmFzZTpzYWZlX2NvbnZlcnNpb25zIiwKKyAgICAiLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19l
eHBvcnQiLAogICBdCiB9CiAKQEAgLTIzNiw2ICsyMzcsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICBkZXBzID0gWwogICAgICAgIjptb2R1bGVfYXBpIiwKICAgICAgICIuLi90ZXN0
OnRlc3RfbWFpbiIsCisgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgImF1ZGlv
X2NvZGluZzphdWRpb19jb2RpbmdfdW5pdHRlc3RzIiwKICAgICAgICJhdWRpb19kZXZpY2U6YXVk
aW9fZGV2aWNlX3VuaXR0ZXN0cyIsCiAgICAgICAiYXVkaW9fbWl4ZXI6YXVkaW9fbWl4ZXJfdW5p
dHRlc3RzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvQlVJTEQuZ24KaW5k
ZXggNDk4MmQxOWE3YjMwMzZmNzUwODkwMTJkMWUwZTNkNzQxN2NiZmJjNC4uZGY0YmEyM2ZmZjVk
Mzc3NDAxMzhjNzdiODAyMjM5YjRjNjI4MzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvQlVJTEQuZ24K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvQlVJTEQuZ24KQEAgLTE0LDMyICsxNCw2IEBAIGlmICghYnVpbGRfd2l0aF9t
b3ppbGxhKSB7CiAKIHZpc2liaWxpdHkgPSBbICI6KiIgXQogCi1hdWRpb19jb2RlY19kZXBzID0g
WwotICAiOmNuZyIsCi0gICI6ZzcxMSIsCi0gICI6cGNtMTZiIiwKLV0KLWlmIChydGNfaW5jbHVk
ZV9pbGJjKSB7Ci0gIGF1ZGlvX2NvZGVjX2RlcHMgKz0gWyAiOmlsYmMiIF0KLX0KLWlmIChydGNf
aW5jbHVkZV9vcHVzKSB7Ci0gIGF1ZGlvX2NvZGVjX2RlcHMgKz0gWyAiOndlYnJ0Y19vcHVzIiBd
Ci19Ci1pZiAoY3VycmVudF9jcHUgPT0gImFybSIpIHsKLSAgYXVkaW9fY29kZWNfZGVwcyArPSBb
ICI6aXNhY19maXgiIF0KLX0gZWxzZSB7Ci0gIGF1ZGlvX2NvZGVjX2RlcHMgKz0gWyAiOmlzYWMi
IF0KLX0KLWF1ZGlvX2NvZGVjX2RlcHMgKz0gWyAiOmc3MjIiIF0KLWlmICghYnVpbGRfd2l0aF9t
b3ppbGxhICYmICFidWlsZF93aXRoX2Nocm9taXVtKSB7Ci0gIGF1ZGlvX2NvZGVjX2RlcHMgKz0g
WyAiOnJlZCIgXQotfQotYXVkaW9fY29kaW5nX2RlcHMgPSBhdWRpb19jb2RlY19kZXBzICsgWwot
ICAgICAgICAgICAgICAgICAgICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAiLi4vLi4vY29tbW9uX2F1ZGlvIiwKLSAgICAgICAgICAgICAgICAgICAgICAi
Li4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgXQotCiBydGNfc3Rh
dGljX2xpYnJhcnkoImF1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uIikgewogICB2aXNpYmlsaXR5ICs9
IHdlYnJ0Y19kZWZhdWx0X3Zpc2liaWxpdHkKICAgc291cmNlcyA9IFsKQEAgLTUzLDYgKzI3LDcg
QEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19mb3JtYXRfY29udmVyc2lvbiIpIHsKICAgICAi
Li4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBw
cm92ZWQiLAogICAgICIuLi8uLi9ydGNfYmFzZTpzYW5pdGl6ZXIiLAorICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwt
Y3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CkBAIC02Myw3ICszOCw2IEBAIHJ0Y19z
dGF0aWNfbGlicmFyeSgicmVudF9hX2NvZGVjIikgewogICAjIFRPRE8oYnVncy53ZWJydGMub3Jn
Lzk4MDgpOiBNb3ZlIHRvIHByaXZhdGUgdmlzaWJpbGl0eSBhcyBzb29uIGFzIHRoYXQKICAgIyBj
bGllbnQgY29kZSBnZXRzIHVwZGF0ZWQuCiAgIHZpc2liaWxpdHkgKz0gWyAiKiIgXQotICBhbGxv
d19wb2lzb24gPSBbICJhdWRpb19jb2RlY3MiIF0KIAogICBzb3VyY2VzID0gWwogICAgICJhY20y
L2FjbV9jb2RlY19kYXRhYmFzZS5jYyIsCkBAIC03MiwyMCArNDYsMTggQEAgcnRjX3N0YXRpY19s
aWJyYXJ5KCJyZW50X2FfY29kZWMiKSB7CiAgICAgImFjbTIvcmVudF9hX2NvZGVjLmgiLAogICBd
CiAgIGRlcHMgPSBbCi0gICAgICAgICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAotICAgICAg
ICAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAotICAgICAgICAgICAiLy90aGlyZF9wYXJ0eS9h
YnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAotICAgICAgICAgICAiLi4vLi4vYXBpL2F1
ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKLSAgICAgICAgICAgIi4uLy4uOndlYnJ0Y19j
b21tb24iLAotICAgICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cHJvdG9idWZfdXRpbHMiLAotICAg
ICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICAgICAgICAi
Li4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKLSAgICAgICAgICAgIjphdWRpb19jb2RpbmdfbW9kdWxl
X3R5cGVkZWZzIiwKLSAgICAgICAgICAgIjppc2FjX2NvbW1vbiIsCi0gICAgICAgICAgICI6aXNh
Y19maXhfYyIsCi0gICAgICAgICAgICI6bmV0ZXFfZGVjb2Rlcl9lbnVtIiwKLSAgICAgICAgIF0g
KyBhdWRpb19jb2RlY19kZXBzCi0KKyAgICAiOmF1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMi
LAorICAgICI6bmV0ZXFfZGVjb2Rlcl9lbnVtIiwKKyAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIs
CisgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKKyAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVj
czphdWRpb19jb2RlY3NfYXBpIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAi
Li4vLi4vcnRjX2Jhc2U6cHJvdG9idWZfdXRpbHMiLAorICAgICIuLi8uLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KICAgZGVmaW5lcyA9IGF1ZGlvX2Nv
ZGVjX2RlZmluZXMKIH0KIApAQCAtOTUsMTIgKzY3LDEyIEBAIHJ0Y19zb3VyY2Vfc2V0KCJhdWRp
b19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzIikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uLy4u
OndlYnJ0Y19jb21tb24iLAorICAgICIuLi8uLi9ydGNfYmFzZTpkZXByZWNhdGlvbiIsCiAgIF0K
IH0KIAogcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19jb2RpbmciKSB7CiAgIHZpc2liaWxpdHkg
Kz0gWyAiKiIgXQotICBhbGxvd19wb2lzb24gPSBbICJhdWRpb19jb2RlY3MiIF0gICMgVE9ETyhi
dWdzLndlYnJ0Yy5vcmcvODM5Nik6IFJlbW92ZS4KICAgc291cmNlcyA9IFsKICAgICAiYWNtMi9h
Y21fcmVjZWl2ZXIuY2MiLAogICAgICJhY20yL2FjbV9yZWNlaXZlci5oIiwKQEAgLTEwOSwzNyAr
ODEsMzQgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19jb2RpbmciKSB7CiAgICAgImFjbTIv
YXVkaW9fY29kaW5nX21vZHVsZS5jYyIsCiAgICAgImFjbTIvY2FsbF9zdGF0aXN0aWNzLmNjIiwK
ICAgICAiYWNtMi9jYWxsX3N0YXRpc3RpY3MuaCIsCi0gICAgImFjbTIvY29kZWNfbWFuYWdlci5j
YyIsCi0gICAgImFjbTIvY29kZWNfbWFuYWdlci5oIiwKICAgICAiaW5jbHVkZS9hdWRpb19jb2Rp
bmdfbW9kdWxlLmgiLAogICBdCiAKICAgZGVmaW5lcyA9IFtdCiAKLSAgaWYgKHJ0Y19pbmNsdWRl
X29wdXMpIHsKLSAgICBwdWJsaWNfZGVwcyA9IFsKLSAgICAgICI6d2VicnRjX29wdXMiLAotICAg
IF0KLSAgfQotCi0gIGRlcHMgPSBhdWRpb19jb2RpbmdfZGVwcyArIFsKLSAgICAgICAgICAgIi4u
Ly4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKLSAgICAgICAgICAgIi4uLy4uL2FwaS9hdWRp
bzphdWRpb19mcmFtZV9hcGkiLAotICAgICAgICAgICAiLi46bW9kdWxlX2FwaSIsCi0gICAgICAg
ICAgICIuLi8uLi9jb21tb25fYXVkaW86Y29tbW9uX2F1ZGlvX2MiLAotICAgICAgICAgICAiLi4v
Li4vcnRjX2Jhc2U6ZGVwcmVjYXRpb24iLAotICAgICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hl
Y2tzIiwKLSAgICAgICAgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwKLSAgICAgICAgICAgIi4u
Ly4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCi0gICAgICAgICAgICI6YXVk
aW9fY29kaW5nX21vZHVsZV90eXBlZGVmcyIsCi0gICAgICAgICAgICI6bmV0ZXEiLAotICAgICAg
ICAgICAiOnJlbnRfYV9jb2RlYyIsCi0gICAgICAgICAgICIuLi8uLi9ydGNfYmFzZTphdWRpb19m
b3JtYXRfdG9fc3RyaW5nIiwKLSAgICAgICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKLSAgICAgICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVz
Om9wdGlvbmFsIiwKLSAgICAgICAgICAgIi4uLy4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGki
LAotICAgICAgICAgXQotICBkZWZpbmVzID0gYXVkaW9fY29kaW5nX2RlZmluZXMKKyAgZGVwcyA9
IFsKKyAgICAiOmF1ZGlvX2NvZGluZ19tb2R1bGVfdHlwZWRlZnMiLAorICAgICI6bmV0ZXEiLAor
ICAgICI6bmV0ZXFfZGVjb2Rlcl9lbnVtIiwKKyAgICAiOnJlbnRfYV9jb2RlYyIsCisgICAgIi4u
Om1vZHVsZV9hcGkiLAorICAgICIuLjptb2R1bGVfYXBpX3B1YmxpYyIsCisgICAgIi4uLy4uOndl
YnJ0Y19jb21tb24iLAorICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCisgICAgIi4uLy4uL2Fw
aS9hdWRpbzphdWRpb19mcmFtZV9hcGkiLAorICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmF1
ZGlvX2NvZGVjc19hcGkiLAorICAgICIuLi8uLi9jb21tb25fYXVkaW86Y29tbW9uX2F1ZGlvIiwK
KyAgICAiLi4vLi4vY29tbW9uX2F1ZGlvOmNvbW1vbl9hdWRpb19jIiwKKyAgICAiLi4vLi4vbG9n
Z2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmF1ZGlvX2Zvcm1h
dF90b19zdHJpbmciLAorICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi8uLi9y
dGNfYmFzZTpkZXByZWNhdGlvbiIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dy
YXBwZXJzOm1ldHJpY3MiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJp
bmdzIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwi
LAorICBdCiB9CiAKIHJ0Y19zdGF0aWNfbGlicmFyeSgibGVnYWN5X2VuY29kZWRfYXVkaW9fZnJh
bWUiKSB7CkBAIC0xNTAsMjYgKzExOSw0MSBAQCBydGNfc3RhdGljX2xpYnJhcnkoImxlZ2FjeV9l
bmNvZGVkX2F1ZGlvX2ZyYW1lIikgewogICBkZXBzID0gWwogICAgICIuLi8uLi9hcGk6YXJyYXlf
dmlldyIsCiAgICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCisg
ICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNl
X2FwcHJvdmVkIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0
aW9uYWwiLAogICBdCiB9CiAKLXJ0Y19zdGF0aWNfbGlicmFyeSgiY25nIikgewotICB2aXNpYmls
aXR5ICs9IFsgIioiIF0KK3J0Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX2NuZyIpIHsKKyAgdmlz
aWJpbGl0eSArPSB3ZWJydGNfZGVmYXVsdF92aXNpYmlsaXR5CiAgIHNvdXJjZXMgPSBbCi0gICAg
ImNvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MiLAotICAgICJjb2RlY3MvY25nL2F1ZGlv
X2VuY29kZXJfY25nLmgiLAogICAgICJjb2RlY3MvY25nL3dlYnJ0Y19jbmcuY2MiLAogICAgICJj
b2RlY3MvY25nL3dlYnJ0Y19jbmcuaCIsCiAgIF0KIAogICBkZXBzID0gWwotICAgICIuLi8uLjp3
ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAotICAgICIuLi8uLi9h
cGkvYXVkaW9fY29kZWNzOmF1ZGlvX2NvZGVjc19hcGkiLAotICAgICIuLi8uLi9jb21tb25fYXVk
aW8iLAogICAgICIuLi8uLi9jb21tb25fYXVkaW86Y29tbW9uX2F1ZGlvX2MiLAorICAgICIuLi8u
Li9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3Zl
ZCIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfY29udmVyc2lvbnMiLAorICBdCit9CisKK3J0
Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fZW5jb2Rlcl9jbmciKSB7CisgIHZpc2liaWxpdHkgKz0g
WyAiKiIgXQorICBzb3VyY2VzID0gWworICAgICJjb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25n
LmNjIiwKKyAgICAiY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5oIiwKKyAgXQorCisgIGRl
cHMgPSBbCisgICAgIjp3ZWJydGNfY25nIiwKKyAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczph
dWRpb19jb2RlY3NfYXBpIiwKKyAgICAiLi4vLi4vY29tbW9uX2F1ZGlvIiwKKyAgICAiLi4vLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVt
b3J5IiwKICAgXQogfQogCkBAIC0xODEsMTAgKzE2NSwxMiBAQCBydGNfc3RhdGljX2xpYnJhcnko
InJlZCIpIHsKICAgXQogCiAgIGRlcHMgPSBbCisgICAgIi4uLy4uL2FwaTphcnJheV92aWV3IiwK
ICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKICAgICAiLi4v
Li4vY29tbW9uX2F1ZGlvIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4v
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KIApAQCAtMjAxLDYgKzE4Nyw3IEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiZzcxMSIpIHsKICAgZGVwcyA9IFsKICAgICAiOmxlZ2FjeV9l
bmNvZGVkX2F1ZGlvX2ZyYW1lIiwKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4u
Ly4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19j
b2RlY3NfYXBpIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRj
X2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLApAQCAtMjM1LDYgKzIyMiw3IEBAIHJ0Y19zdGF0aWNf
bGlicmFyeSgiZzcyMiIpIHsKICAgZGVwcyA9IFsKICAgICAiOmxlZ2FjeV9lbmNvZGVkX2F1ZGlv
X2ZyYW1lIiwKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaTphcnJh
eV92aWV3IiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwK
ICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjcy9nNzIyOmF1ZGlvX2VuY29kZXJfZzcyMl9jb25m
aWciLAogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLApAQCAtMjcwLDYgKzI1OCw3IEBAIHJ0
Y19zdGF0aWNfbGlicmFyeSgiaWxiYyIpIHsKICAgZGVwcyA9IFsKICAgICAiOmxlZ2FjeV9lbmNv
ZGVkX2F1ZGlvX2ZyYW1lIiwKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4u
L2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2Rl
Y3NfYXBpIiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjcy9pbGJjOmF1ZGlvX2VuY29kZXJf
aWxiY19jb25maWciLAogICAgICIuLi8uLi9jb21tb25fYXVkaW8iLApAQCAtNzg2LDYgKzc3NSw3
IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicGNtMTZiIikgewogICAgICI6ZzcxMSIsCiAgICAgIjps
ZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZSIsCiAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAor
ICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uL2FwaS9hdWRpb19jb2RlY3M6
YXVkaW9fY29kZWNzX2FwaSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4u
Ly4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKQEAgLTgyMCw2ICs4MTAsNyBAQCBydGNf
c3RhdGljX2xpYnJhcnkoIndlYnJ0Y19vcHVzIikgewogICBkZXBzID0gWwogICAgICI6YXVkaW9f
bmV0d29ya19hZGFwdG9yIiwKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4u
L2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2Rl
Y3NfYXBpIiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjcy9vcHVzOmF1ZGlvX2VuY29kZXJf
b3B1c19jb25maWciLAogICAgICIuLi8uLi9jb21tb25fYXVkaW8iLApAQCAtODI5LDYgKzgyMCw3
IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX29wdXMiKSB7CiAgICAgIi4uLy4uL3J0Y19i
YXNlOnNhZmVfbWlubWF4IiwKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFs
IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogICBwdWJsaWNfZGVwcyA9IFsK
QEAgLTg4Miw2ICs4NzQsNyBAQCBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgIHByb3Rv
X291dF9kaXIgPSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yIgog
ICB9CiAgIHByb3RvX2xpYnJhcnkoImFuYV9jb25maWdfcHJvdG8iKSB7CisgICAgdmlzaWJpbGl0
eSArPSBbICIqIiBdCiAgICAgc291cmNlcyA9IFsKICAgICAgICJhdWRpb19uZXR3b3JrX2FkYXB0
b3IvY29uZmlnLnByb3RvIiwKICAgICBdCkBAIC0xMDMyLDggKzEwMjUsNiBAQCBydGNfc3RhdGlj
X2xpYnJhcnkoIm5ldGVxIikgewogICAgICJuZXRlcS9yYW5kb21fdmVjdG9yLmgiLAogICAgICJu
ZXRlcS9yZWRfcGF5bG9hZF9zcGxpdHRlci5jYyIsCiAgICAgIm5ldGVxL3JlZF9wYXlsb2FkX3Nw
bGl0dGVyLmgiLAotICAgICJuZXRlcS9ydGNwLmNjIiwKLSAgICAibmV0ZXEvcnRjcC5oIiwKICAg
ICAibmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmNjIiwKICAgICAibmV0ZXEvc3RhdGlzdGlj
c19jYWxjdWxhdG9yLmgiLAogICAgICJuZXRlcS9zeW5jX2J1ZmZlci5jYyIsCkBAIC0xMDQ4LDkg
KzEwMzksMTAgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJuZXRlcSIpIHsKIAogICBkZXBzID0gWwog
ICAgICI6YXVkaW9fY29kaW5nX21vZHVsZV90eXBlZGVmcyIsCi0gICAgIjpjbmciLAogICAgICI6
bmV0ZXFfZGVjb2Rlcl9lbnVtIiwKKyAgICAiOndlYnJ0Y19jbmciLAogICAgICIuLjptb2R1bGVf
YXBpIiwKKyAgICAiLi46bW9kdWxlX2FwaV9wdWJsaWMiLAogICAgICIuLi8uLjp3ZWJydGNfY29t
bW9uIiwKICAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGk6bGliamlu
Z2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCkBAIC0xMDY3LDYgKzEwNTksNyBAQCBydGNfc3RhdGlj
X2xpYnJhcnkoIm5ldGVxIikgewogICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06ZmFsbHRocm91
Z2giLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIuLi8u
Li9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
czpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTExMDUsNiArMTA5OCw3IEBAIHJ0Y19zb3VyY2Vfc2V0
KCJuZXRlcV90b29sc19taW5pbWFsIikgewogICAgICIuLi9ydHBfcnRjcCIsCiAgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQorICBkZWZpbmVz
ID0gYXVkaW9fY29kZWNfZGVmaW5lcwogfQogCiBydGNfc291cmNlX3NldCgibmV0ZXFfdGVzdF90
b29scyIpIHsKQEAgLTExNDAsMTEgKzExMzQsMTEgQEAgcnRjX3NvdXJjZV9zZXQoIm5ldGVxX3Rl
c3RfdG9vbHMiKSB7CiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0
Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAotICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgIi4uLy4u
L3J0Y19iYXNlL3N5c3RlbTphcmNoIiwKICAgICAiLi4vLi4vdGVzdDpydHBfdGVzdF91dGlscyIs
CiAgICAgIi4uL3J0cF9ydGNwIiwKICAgICAiLi4vcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwK
KyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBd
CiAKICAgcHVibGljX2RlcHMgPSBbCkBAIC0xMjM4LDYgKzEyMzIsNyBAQCBpZiAocnRjX2VuYWJs
ZV9wcm90b2J1ZikgewogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwK
ICAgICAgICIuLi9ydHBfcnRjcCIsCiAgICAgICAiLi4vcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0
IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIs
CiAgICAgXQogICAgIHB1YmxpY19kZXBzID0gWwogICAgICAgIi4uLy4uL2xvZ2dpbmc6cnRjX2V2
ZW50X2xvZ19wcm90byIsCkBAIC0xMjQ2LDYgKzEyNDEsMzAgQEAgaWYgKHJ0Y19lbmFibGVfcHJv
dG9idWYpIHsKIH0KIAogaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CisgIGF1ZGlvX2NvZGluZ19k
ZXBzID0gWworICAgICIuLi8uLi9jb21tb25fYXVkaW8iLAorICAgICIuLi8uLi9zeXN0ZW1fd3Jh
cHBlcnMiLAorICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKKyAgICAiOmF1ZGlvX2VuY29kZXJf
Y25nIiwKKyAgICAiOmc3MTEiLAorICAgICI6ZzcyMiIsCisgICAgIjpwY20xNmIiLAorICBdCisg
IGlmIChydGNfaW5jbHVkZV9pbGJjKSB7CisgICAgYXVkaW9fY29kaW5nX2RlcHMgKz0gWyAiOmls
YmMiIF0KKyAgfQorICBpZiAocnRjX2luY2x1ZGVfb3B1cykgeworICAgIGF1ZGlvX2NvZGluZ19k
ZXBzICs9IFsgIjp3ZWJydGNfb3B1cyIgXQorICB9CisgIGlmIChjdXJyZW50X2NwdSA9PSAiYXJt
IikgeworICAgIGF1ZGlvX2NvZGluZ19kZXBzICs9IFsgIjppc2FjX2ZpeCIgXQorICB9IGVsc2Ug
eworICAgIGF1ZGlvX2NvZGluZ19kZXBzICs9IFsgIjppc2FjIiBdCisgIH0KKyAgaWYgKCFidWls
ZF93aXRoX21vemlsbGEgJiYgIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKKyAgICBhdWRpb19jb2Rp
bmdfZGVwcyArPSBbICI6cmVkIiBdCisgIH0KKwogICBydGNfc291cmNlX3NldCgibW9ja3MiKSB7
CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAgICAgc291cmNlcyA9IFsKQEAgLTEzMzAsMTAgKzEzNDks
MTEgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgZGVwcyA9IFsKICAgICAgICI6YXVk
aW9fY29kaW5nIiwKICAgICAgICI6YXVkaW9fY29kaW5nX21vZHVsZV90eXBlZGVmcyIsCisgICAg
ICAiOmF1ZGlvX2VuY29kZXJfY25nIiwKICAgICAgICI6YXVkaW9fZm9ybWF0X2NvbnZlcnNpb24i
LAotICAgICAgIjpjbmciLAogICAgICAgIjpwY20xNmJfYyIsCiAgICAgICAiOnJlZCIsCisgICAg
ICAiOndlYnJ0Y19vcHVzX2MiLAogICAgICAgIi4uOm1vZHVsZV9hcGkiLAogICAgICAgIi4uLy4u
OndlYnJ0Y19jb21tb24iLAogICAgICAgIi4uLy4uL2FwaS9hdWRpbzphdWRpb19mcmFtZV9hcGki
LApAQCAtMTM1OSw2ICsxMzc5LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAi
Li4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAgICIuLi8uLi90ZXN0OmZpbGV1dGlscyIsCiAg
ICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h
YnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgICBdCiAgICAgZGVmaW5lcyA9IGF1ZGlvX2NvZGluZ19k
ZWZpbmVzCkBAIC0xNDE0LDYgKzE0MzUsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAg
ICAgICAgICAgICAiOm5ldGVxX3Rvb2xzIiwKICAgICAgICAgICAgICAiLi4vLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9y
dCIsCisgICAgICAgICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mi
LAogICAgICAgICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgICAgICAgICBdCiAgIH0KQEAg
LTE0NzcsNiArMTQ5OSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgICAgICAg
ICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06YXJjaCIsCiAgICAgICAgICAgICAgIi4uLy4uL3Rlc3Q6
dGVzdF9tYWluIiwKICAgICAgICAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgICAgICAgICAg
ICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgICAgICBdICsgYXVkaW9fY29kaW5n
X2RlcHMKIAogICAgIGRhdGEgPSBhdWRpb19kZWNvZGVyX3VuaXR0ZXN0c19yZXNvdXJjZXMKQEAg
LTE1MDEsNyArMTUyNCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIHJ0Y19zb3Vy
Y2Vfc2V0KCJuZXRlcV90ZXN0X2ZhY3RvcnkiKSB7CiAgICAgICB0ZXN0b25seSA9IHRydWUKICAg
ICAgIHZpc2liaWxpdHkgKz0gd2VicnRjX2RlZmF1bHRfdmlzaWJpbGl0eQotICAgICAgZGVmaW5l
cyA9IFtdCisgICAgICBkZWZpbmVzID0gYXVkaW9fY29kZWNfZGVmaW5lcwogICAgICAgZGVwcyA9
IFsKICAgICAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgICAgICIuLi8uLi90ZXN0
OmZpbGV1dGlscyIsCkBAIC0xNTk0LDYgKzE2MTcsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMp
IHsKICAgICAgICIuLi8uLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAg
ICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uLy4uL3Rlc3Q6
dGVzdF9tYWluIiwKKyAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLi4v
YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKICAgICBdCkBAIC0x
NjYxLDYgKzE2ODUsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBkZXBzID0gYXVk
aW9fY29kaW5nX2RlcHMgKyBbCiAgICAgICAgICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL21lbW9yeSIsCiAgICAgICAgICAgICAgIjphdWRpb19jb2RpbmciLAorICAgICAgICAg
ICAgICI6YXVkaW9fZW5jb2Rlcl9jbmciLAogICAgICAgICAgICAgICI6bmV0ZXFfaW5wdXRfYXVk
aW9fdG9vbHMiLAogICAgICAgICAgICAgICIuLi8uLi9hcGkvYXVkaW86YXVkaW9fZnJhbWVfYXBp
IiwKICAgICAgICAgICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjcy9nNzExOmF1ZGlvX2VuY29k
ZXJfZzcxMSIsCkBAIC0xNzU2LDcgKzE3ODEsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsK
ICAgICAgICI6bmV0ZXFfdGVzdF9zdXBwb3J0IiwKICAgICAgICIuLi8uLjp3ZWJydGNfY29tbW9u
IiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgICAiLi4v
Li4vdGVzdDpmaWxldXRpbHMiLAogICAgICAgIi4uLy4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAg
ICBdCiAgIH0KQEAgLTE5NTYsNiArMTk4MCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewog
ICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi8uLi90
ZXN0OmZpbGV1dGlscyIsCiAgICAgICAiLi4vLi4vdGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4u
Ly4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgIF0K
ICAgfQpAQCAtMTk2OCw4ICsxOTkzLDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAg
ICAiYWNtMi9hY21fcmVjZWl2ZXJfdW5pdHRlc3QuY2MiLAogICAgICAgImFjbTIvYXVkaW9fY29k
aW5nX21vZHVsZV91bml0dGVzdC5jYyIsCiAgICAgICAiYWNtMi9jYWxsX3N0YXRpc3RpY3NfdW5p
dHRlc3QuY2MiLAotICAgICAgImFjbTIvY29kZWNfbWFuYWdlcl91bml0dGVzdC5jYyIsCi0gICAg
ICAiYWNtMi9yZW50X2FfY29kZWNfdW5pdHRlc3QuY2MiLAogICAgICAgImF1ZGlvX25ldHdvcmtf
YWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbF91bml0dGVzdC5jYyIsCiAgICAgICAi
YXVkaW9fbmV0d29ya19hZGFwdG9yL2JpdHJhdGVfY29udHJvbGxlcl91bml0dGVzdC5jYyIsCiAg
ICAgICAiYXVkaW9fbmV0d29ya19hZGFwdG9yL2NoYW5uZWxfY29udHJvbGxlcl91bml0dGVzdC5j
YyIsCkBAIC0yMDQ4LDkgKzIwNzEsOSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAg
ICI6YWNtX3NlbmRfdGVzdCIsCiAgICAgICAiOmF1ZGlvX2NvZGluZyIsCiAgICAgICAiOmF1ZGlv
X2NvZGluZ19tb2R1bGVfdHlwZWRlZnMiLAorICAgICAgIjphdWRpb19lbmNvZGVyX2NuZyIsCiAg
ICAgICAiOmF1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uIiwKICAgICAgICI6YXVkaW9fbmV0d29ya19h
ZGFwdG9yIiwKLSAgICAgICI6Y25nIiwKICAgICAgICI6ZzcxMSIsCiAgICAgICAiOmlsYmMiLAog
ICAgICAgIjppc2FjIiwKQEAgLTIwNjQsNiArMjA4Nyw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0
cykgewogICAgICAgIjpwY20xNmIiLAogICAgICAgIjpyZWQiLAogICAgICAgIjpyZW50X2FfY29k
ZWMiLAorICAgICAgIjp3ZWJydGNfY25nIiwKICAgICAgICI6d2VicnRjX29wdXMiLAogICAgICAg
Ii4uOm1vZHVsZV9hcGkiLAogICAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLApAQCAtMjA3OSw2
ICsyMTAzLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vLi4vbG9nZ2lu
Zzptb2NrcyIsCiAgICAgICAiLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfYXVkaW8iLAogICAgICAg
Ii4uLy4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAorICAgICAgIi4uLy4uL21vZHVsZXMv
cnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3Mi
LAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnByb3RvYnVmX3V0aWxzIiwKICAgICAgICIuLi8uLi9y
dGNfYmFzZTpydGNfYmFzZSIsCkBAIC0yMDk4LDYgKzIxMjMsNyBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICAgICJjb2RlY3Mvb3B1cy90ZXN0OnRlc3RfdW5pdHRlc3QiLAogICAgICAg
Ii8vdGVzdGluZy9ndGVzdCIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
bWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRp
b25hbCIsCiAgICAgXQogCiAgICAgZGVmaW5lcyA9IGF1ZGlvX2NvZGluZ19kZWZpbmVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9PV05FUlMKaW5kZXggYzFhZGM1NjFiODk1ZGQ4
MjI0N2QzMmYzNDgxZjI0YWY0N2M3M2M4OS4uNDZmOTk1ODY4NDJiMzkxNTFkMjBhYjdjNmY2Mzg3
NmVlNThkMGM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvT1dORVJTCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL09XTkVSUwpA
QCAtNCw2ICs0LDcgQEAga3dpYmVyZ0B3ZWJydGMub3JnCiBtaW55dWVAd2VicnRjLm9yZwogamFu
LnNrb2dsdW5kQHdlYnJ0Yy5vcmcKIG9zc3VAd2VicnRjLm9yZworaXZvY0B3ZWJydGMub3JnCiAK
ICMgVGhlc2UgYXJlIGZvciB0aGUgY29tbW9uIGNhc2Ugb2YgYWRkaW5nIG9yIHJlbmFtaW5nIGZp
bGVzLiBJZiB5b3UncmUgZG9pbmcKICMgc3RydWN0dXJhbCBjaGFuZ2VzLCBwbGVhc2UgZ2V0IGEg
cmV2aWV3IGZyb20gYSByZXZpZXdlciBpbiB0aGlzIGZpbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9h
Y20yL2FjbV9jb2RlY19kYXRhYmFzZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX2NvZGVjX2RhdGFiYXNl
LmNjCmluZGV4IDMxMWFmMmRmM2ZmNmU5NGZkNTkzM2YyOWVlMTlhMTg1MTA2NWViMTQuLmNhZGE4
MGMwNjE4ODQzODlhMWRhYTA0MjQ5MDk5YTJlOGM0YjNhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Fj
bTIvYWNtX2NvZGVjX2RhdGFiYXNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX2NvZGVjX2RhdGFi
YXNlLmNjCkBAIC0xNyw3ICsxNyw5IEBACiAvLyByZWZlcmVuY2VzLCB3aGVyZSBhcHByb3ByaWF0
ZS4KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9jb2RlY19kYXRhYmFz
ZS5oIgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL21hdGNoLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5oIgogCiAjaWYgKChkZWZpbmVkIFdF
QlJUQ19DT0RFQ19JU0FDKSAmJiAoZGVmaW5lZCBXRUJSVENfQ09ERUNfSVNBQ0ZYKSkKICNlcnJv
ciBpU0FDIGFuZCBpU0FDRlggY29kZWNzIGNhbm5vdCBiZSBlbmFibGVkIGF0IHRoZSBzYW1lIHRp
bWUKQEAgLTIzOSwxMiArMjQxLDEyIEBAIGludCBBQ01Db2RlY0RCOjpDb2RlY051bWJlcihjb25z
dCBDb2RlY0luc3QmIGNvZGVjX2luc3QpIHsKICAgfQogCiAgIC8vIENvbWZvcnQgTm9pc2UgaXMg
c3BlY2lhbCBjYXNlLCBwYWNrZXQtc2l6ZSAmIHJhdGUgaXMgbm90IGNoZWNrZWQuCi0gIGlmIChT
VFJfQ0FTRV9DTVAoZGF0YWJhc2VfW2NvZGVjX2lkXS5wbG5hbWUsICJDTiIpID09IDApIHsKKyAg
aWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZGF0YWJhc2VfW2NvZGVjX2lkXS5wbG5hbWUsICJD
TiIpKSB7CiAgICAgcmV0dXJuIGNvZGVjX2lkOwogICB9CiAKICAgLy8gUkVEIGlzIHNwZWNpYWwg
Y2FzZSwgcGFja2V0LXNpemUgJiByYXRlIGlzIG5vdCBjaGVja2VkLgotICBpZiAoU1RSX0NBU0Vf
Q01QKGRhdGFiYXNlX1tjb2RlY19pZF0ucGxuYW1lLCAicmVkIikgPT0gMCkgeworICBpZiAoYWJz
bDo6RXF1YWxzSWdub3JlQ2FzZShkYXRhYmFzZV9bY29kZWNfaWRdLnBsbmFtZSwgInJlZCIpKSB7
CiAgICAgcmV0dXJuIGNvZGVjX2lkOwogICB9CiAKQEAgLTI3MiwxMiArMjc0LDEyIEBAIGludCBB
Q01Db2RlY0RCOjpDb2RlY051bWJlcihjb25zdCBDb2RlY0luc3QmIGNvZGVjX2luc3QpIHsKIAog
ICAvLyBDaGVjayB0aGUgdmFsaWRpdHkgb2YgcmF0ZS4gQ29kZWNzIHdpdGggbXVsdGlwbGUgcmF0
ZXMgaGF2ZSB0aGVpciBvd24KICAgLy8gZnVuY3Rpb24gZm9yIHRoaXMuCi0gIGlmIChTVFJfQ0FT
RV9DTVAoImlzYWMiLCBjb2RlY19pbnN0LnBsbmFtZSkgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZSgiaXNhYyIsIGNvZGVjX2luc3QucGxuYW1lKSkgewogICAgIHJldHVybiBJ
c0lTQUNSYXRlVmFsaWQoY29kZWNfaW5zdC5yYXRlKSA/IGNvZGVjX2lkIDoga0ludmFsaWRSYXRl
OwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUCgiaWxiYyIsIGNvZGVjX2luc3QucGxuYW1lKSA9
PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZSgiaWxiYyIsIGNvZGVj
X2luc3QucGxuYW1lKSkgewogICAgIHJldHVybiBJc0lMQkNSYXRlVmFsaWQoY29kZWNfaW5zdC5y
YXRlLCBjb2RlY19pbnN0LnBhY3NpemUpID8gY29kZWNfaWQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGtJbnZhbGlkUmF0
ZTsKLSAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAoIm9wdXMiLCBjb2RlY19pbnN0LnBsbmFtZSkg
PT0gMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoIm9wdXMiLCBjb2Rl
Y19pbnN0LnBsbmFtZSkpIHsKICAgICByZXR1cm4gSXNPcHVzUmF0ZVZhbGlkKGNvZGVjX2luc3Qu
cmF0ZSkgPyBjb2RlY19pZCA6IGtJbnZhbGlkUmF0ZTsKICAgfQogCkBAIC0yOTYsNyArMjk4LDcg
QEAgaW50IEFDTUNvZGVjREI6OkNvZGVjSWQoY29uc3QgQ29kZWNJbnN0JiBjb2RlY19pbnN0KSB7
CiBpbnQgQUNNQ29kZWNEQjo6Q29kZWNJZChjb25zdCBjaGFyKiBwYXlsb2FkX25hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgZnJlcXVlbmN5LAogICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNoYW5uZWxzKSB7Ci0gIGZvciAoY29uc3QgQ29kZWNJbnN0JiBjaSA6IFJlbnRB
Q29kZWM6OkRhdGFiYXNlKCkpIHsKKyAgZm9yIChjb25zdCBDb2RlY0luc3QmIGNpIDogZGF0YWJh
c2VfKSB7CiAgICAgYm9vbCBuYW1lX21hdGNoID0gZmFsc2U7CiAgICAgYm9vbCBmcmVxdWVuY3lf
bWF0Y2ggPSBmYWxzZTsKICAgICBib29sIGNoYW5uZWxzX21hdGNoID0gZmFsc2U7CkBAIC0zMDQs
MTAgKzMwNiwxMCBAQCBpbnQgQUNNQ29kZWNEQjo6Q29kZWNJZChjb25zdCBjaGFyKiBwYXlsb2Fk
X25hbWUsCiAgICAgLy8gUGF5bG9hZCBuYW1lLCBzYW1wbGluZyBmcmVxdWVuY3kgYW5kIG51bWJl
ciBvZiBjaGFubmVscyBuZWVkIHRvIG1hdGNoLgogICAgIC8vIE5PVEUhIElmIHxmcmVxdWVuY3l8
IGlzIC0xLCB0aGUgZnJlcXVlbmN5IGlzIG5vdCBhcHBsaWNhYmxlLCBhbmQgaXMKICAgICAvLyBh
bHdheXMgdHJlYXRlZCBhcyB0cnVlLCBsaWtlIGZvciBSRUQuCi0gICAgbmFtZV9tYXRjaCA9IChT
VFJfQ0FTRV9DTVAoY2kucGxuYW1lLCBwYXlsb2FkX25hbWUpID09IDApOworICAgIG5hbWVfbWF0
Y2ggPSBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNpLnBsbmFtZSwgcGF5bG9hZF9uYW1lKTsKICAg
ICBmcmVxdWVuY3lfbWF0Y2ggPSAoZnJlcXVlbmN5ID09IGNpLnBsZnJlcSkgfHwgKGZyZXF1ZW5j
eSA9PSAtMSk7CiAgICAgLy8gVGhlIG51bWJlciBvZiBjaGFubmVscyBtdXN0IG1hdGNoIGZvciBh
bGwgY29kZWNzIGJ1dCBPcHVzLgotICAgIGlmIChTVFJfQ0FTRV9DTVAocGF5bG9hZF9uYW1lLCAi
b3B1cyIpICE9IDApIHsKKyAgICBpZiAoIWFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGF5bG9hZF9u
YW1lLCAib3B1cyIpKSB7CiAgICAgICBjaGFubmVsc19tYXRjaCA9IChjaGFubmVscyA9PSBjaS5j
aGFubmVscyk7CiAgICAgfSBlbHNlIHsKICAgICAgIC8vIEZvciBvcHVzIHdlIGp1c3QgY2hlY2sg
dGhhdCBudW1iZXIgb2YgY2hhbm5lbHMgaXMgdmFsaWQuCkBAIC0zMTYsNyArMzE4LDcgQEAgaW50
IEFDTUNvZGVjREI6OkNvZGVjSWQoY29uc3QgY2hhciogcGF5bG9hZF9uYW1lLAogCiAgICAgaWYg
KG5hbWVfbWF0Y2ggJiYgZnJlcXVlbmN5X21hdGNoICYmIGNoYW5uZWxzX21hdGNoKSB7CiAgICAg
ICAvLyBXZSBoYXZlIGZvdW5kIGEgbWF0Y2hpbmcgY29kZWMgaW4gdGhlIGxpc3QuCi0gICAgICBy
ZXR1cm4gJmNpIC0gUmVudEFDb2RlYzo6RGF0YWJhc2UoKS5kYXRhKCk7CisgICAgICByZXR1cm4g
JmNpIC0gZGF0YWJhc2VfOwogICAgIH0KICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2Fj
bV9yZWNlaXZlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlX3Rlc3QuY2MKaW5kZXgg
MmQ3ZjI5NjBkZTU4OWJkYTRkOTM1YWMzMzI5NGE2ZTU5ZjYxOWZhNS4uYzE0OWVjMWIwYmMyMWRl
ZmU5YWQzMGNjOGZiNzEzOGVlNmQ0MzhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVj
ZWl2ZV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVfdGVzdC5jYwpAQCAtMTQs
NiArMTQsNyBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdz
L21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29k
ZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9hdWRp
b19mb3JtYXRfY29udmVyc2lvbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2lu
Y2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oIgpAQCAtMzAsMTEgKzMxLDExIEBAIG5hbWVzcGFj
ZSB7CiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvZGVjIHNob3VsZCBiZSByZWdpc3RlcmVkLCBv
dGhlcndpc2UgZmFsc2UuIENoYW5nZXMKIC8vIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRo
ZSBPcHVzIGNvZGVjIHRvIGFsd2F5cyBiZSAxLgogYm9vbCBNb2RpZnlBbmRVc2VUaGlzQ29kZWMo
Q29kZWNJbnN0KiBjb2RlY19wYXJhbSkgewotICBpZiAoU1RSX0NBU0VfQ01QKGNvZGVjX3BhcmFt
LT5wbG5hbWUsICJDTiIpID09IDAgJiYKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29k
ZWNfcGFyYW0tPnBsbmFtZSwgIkNOIikgJiYKICAgICAgIGNvZGVjX3BhcmFtLT5wbGZyZXEgPT0g
NDgwMDApCiAgICAgcmV0dXJuIGZhbHNlOyAgLy8gU2tpcCA0OCBrSHogY29tZm9ydCBub2lzZS4K
IAotICBpZiAoU1RSX0NBU0VfQ01QKGNvZGVjX3BhcmFtLT5wbG5hbWUsICJ0ZWxlcGhvbmUtZXZl
bnQiKSA9PSAwKQorICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2RlY19wYXJhbS0+cGxu
YW1lLCAidGVsZXBob25lLWV2ZW50IikpCiAgICAgcmV0dXJuIGZhbHNlOyAgLy8gU2tpcCBEVEZN
LgogCiAgIHJldHVybiB0cnVlOwpAQCAtNjUsMzkgKzY2LDQzIEBAIGJvb2wgUmVtYXBQbHR5cGVB
bmRVc2VUaGlzQ29kZWMoY29uc3QgY2hhciogcGxuYW1lLAogICAgIHJldHVybiBmYWxzZTsgIC8v
IERvbid0IHVzZSBub24tbW9ubyBjb2RlY3MuCiAKICAgLy8gUmUtbWFwIHBsdHlwZXMgdG8gdGhv
c2UgdXNlZCBpbiB0aGUgTmV0RXEgdGVzdCBmaWxlcy4KLSAgaWYgKFNUUl9DQVNFX0NNUChwbG5h
bWUsICJQQ01VIikgPT0gMCAmJiBwbGZyZXEgPT0gODAwMCkgeworICBpZiAoYWJzbDo6RXF1YWxz
SWdub3JlQ2FzZShwbG5hbWUsICJQQ01VIikgJiYgcGxmcmVxID09IDgwMDApIHsKICAgICAqcGx0
eXBlID0gMDsKLSAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAocGxuYW1lLCAiUENNQSIpID09IDAg
JiYgcGxmcmVxID09IDgwMDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNl
KHBsbmFtZSwgIlBDTUEiKSAmJiBwbGZyZXEgPT0gODAwMCkgewogICAgICpwbHR5cGUgPSA4Owot
ICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJDTiIpID09IDAgJiYgcGxmcmVxID09
IDgwMDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgIkNO
IikgJiYgcGxmcmVxID09IDgwMDApIHsKICAgICAqcGx0eXBlID0gMTM7Ci0gIH0gZWxzZSBpZiAo
U1RSX0NBU0VfQ01QKHBsbmFtZSwgIkNOIikgPT0gMCAmJiBwbGZyZXEgPT0gMTYwMDApIHsKKyAg
fSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgIkNOIikgJiYgcGxmcmVx
ID09IDE2MDAwKSB7CiAgICAgKnBsdHlwZSA9IDk4OwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NN
UChwbG5hbWUsICJDTiIpID09IDAgJiYgcGxmcmVxID09IDMyMDAwKSB7CisgIH0gZWxzZSBpZiAo
YWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwbG5hbWUsICJDTiIpICYmIHBsZnJlcSA9PSAzMjAwMCkg
ewogICAgICpwbHR5cGUgPSA5OTsKLSAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAocGxuYW1lLCAi
SUxCQyIpID09IDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFt
ZSwgIklMQkMiKSkgewogICAgICpwbHR5cGUgPSAxMDI7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0Vf
Q01QKHBsbmFtZSwgIklTQUMiKSA9PSAwICYmIHBsZnJlcSA9PSAxNjAwMCkgeworICB9IGVsc2Ug
aWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAiSVNBQyIpICYmIHBsZnJlcSA9PSAx
NjAwMCkgewogICAgICpwbHR5cGUgPSAxMDM7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBs
bmFtZSwgIklTQUMiKSA9PSAwICYmIHBsZnJlcSA9PSAzMjAwMCkgeworICB9IGVsc2UgaWYgKGFi
c2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAiSVNBQyIpICYmIHBsZnJlcSA9PSAzMjAwMCkg
ewogICAgICpwbHR5cGUgPSAxMDQ7Ci0gIH0gZWxzZSBpZiAoU1RSX0NBU0VfQ01QKHBsbmFtZSwg
InRlbGVwaG9uZS1ldmVudCIpID09IDAgJiYgcGxmcmVxID09IDgwMDApIHsKKyAgfSBlbHNlIGlm
IChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgInRlbGVwaG9uZS1ldmVudCIpICYmCisg
ICAgICAgICAgICAgcGxmcmVxID09IDgwMDApIHsKICAgICAqcGx0eXBlID0gMTA2OwotICB9IGVs
c2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSA9PSAwICYmIHBs
ZnJlcSA9PSAxNjAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxu
YW1lLCAidGVsZXBob25lLWV2ZW50IikgJiYKKyAgICAgICAgICAgICBwbGZyZXEgPT0gMTYwMDAp
IHsKICAgICAqcGx0eXBlID0gMTE0OwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUs
ICJ0ZWxlcGhvbmUtZXZlbnQiKSA9PSAwICYmIHBsZnJlcSA9PSAzMjAwMCkgeworICB9IGVsc2Ug
aWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAidGVsZXBob25lLWV2ZW50IikgJiYK
KyAgICAgICAgICAgICBwbGZyZXEgPT0gMzIwMDApIHsKICAgICAqcGx0eXBlID0gMTE1OwotICB9
IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSA9PSAwICYm
IHBsZnJlcSA9PSA0ODAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uo
cGxuYW1lLCAidGVsZXBob25lLWV2ZW50IikgJiYKKyAgICAgICAgICAgICBwbGZyZXEgPT0gNDgw
MDApIHsKICAgICAqcGx0eXBlID0gMTE2OwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5h
bWUsICJyZWQiKSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShw
bG5hbWUsICJyZWQiKSkgewogICAgICpwbHR5cGUgPSAxMTc7Ci0gIH0gZWxzZSBpZiAoU1RSX0NB
U0VfQ01QKHBsbmFtZSwgIkwxNiIpID09IDAgJiYgcGxmcmVxID09IDgwMDApIHsKKyAgfSBlbHNl
IGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBsbmFtZSwgIkwxNiIpICYmIHBsZnJlcSA9PSA4
MDAwKSB7CiAgICAgKnBsdHlwZSA9IDkzOwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5h
bWUsICJMMTYiKSA9PSAwICYmIHBsZnJlcSA9PSAxNjAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6
OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAiTDE2IikgJiYgcGxmcmVxID09IDE2MDAwKSB7CiAg
ICAgKnBsdHlwZSA9IDk0OwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJMMTYi
KSA9PSAwICYmIHBsZnJlcSA9PSAzMjAwMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UocGxuYW1lLCAiTDE2IikgJiYgcGxmcmVxID09IDMyMDAwKSB7CiAgICAgKnBsdHlw
ZSA9IDk1OwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChwbG5hbWUsICJHNzIyIikgPT0gMCkg
eworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UocGxuYW1lLCAiRzcyMiIpKSB7
CiAgICAgKnBsdHlwZSA9IDk7CiAgIH0gZWxzZSB7CiAgICAgLy8gRG9uJ3QgdXNlIGFueSBvdGhl
ciBjb2RlY3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2FjbTIvYWNtX3JlY2VpdmVyLmNjCmluZGV4IGY2MzE3NDZiODhmNGJmYjhlNTBiYWFkYmQzNmUy
OTUwZTJlNDNmZGIuLmQzYWY3YzAzNDE4ODUxYTE2YzQ5YmZjMzI1NGNhY2IyYWIzZDBiZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNt
X3JlY2VpdmVyLmNjCkBAIC0xMCwyMSArMTAsMjEgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVyLmgiCiAKLSNpbmNsdWRlIDxzdGRsaWIuaD4gIC8v
IG1hbGxvYwotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gc29ydAorI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCisjaW5jbHVkZSAiYXBp
L2F1ZGlvL2F1ZGlvX2ZyYW1lLmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19k
ZWNvZGVyLmgiCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1
ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvYWNtMi9hY21fcmVzYW1wbGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
YWNtMi9jYWxsX3N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9h
Y20yL3JlbnRfYV9jb2RlYy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L2luY2x1ZGUvbmV0ZXEuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9u
ZXRlcV9kZWNvZGVyX2VudW0uaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2Nv
bW1vbl90eXBlcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3N0cmluZ3MvYXVkaW9fZm9ybWF0X3RvX3N0cmluZy5oIgpAQCAtOTIsNyArOTIs
NyBAQCBpbnQgQWNtUmVjZWl2ZXI6Okluc2VydFBhY2tldChjb25zdCBXZWJSdGNSVFBIZWFkZXIm
IHJ0cF9oZWFkZXIsCiAgICAgfQogICAgIHJlY2VpdmVfdGltZXN0YW1wID0gTm93SW5UaW1lc3Rh
bXAoY2ktPnBsZnJlcSk7CiAKLSAgICBpZiAoU1RSX0NBU0VfQ01QKGNpLT5wbG5hbWUsICJjbiIp
ID09IDApIHsKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjaS0+cGxuYW1lLCAiY24i
KSkgewogICAgICAgaWYgKGxhc3RfYXVkaW9fZGVjb2Rlcl8gJiYgbGFzdF9hdWRpb19kZWNvZGVy
Xy0+Y2hhbm5lbHMgPiAxKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBDTkcgYW5kIHRoZSBhdWRp
byBjb2RlYyBpcyBub3QgbW9ubywgc28gc2tpcCBwdXNoaW5nIGluCiAgICAgICAgIC8vIHBhY2tl
dHMgaW50byBOZXRFcS4KQEAgLTM0NSw2ICszNDUsMTMgQEAgdm9pZCBBY21SZWNlaXZlcjo6R2V0
TmV0d29ya1N0YXRpc3RpY3MoTmV0d29ya1N0YXRpc3RpY3MqIGFjbV9zdGF0KSB7CiAgIGFjbV9z
dGF0LT5jb25jZWFsZWRTYW1wbGVzID0gbmV0ZXFfbGlmZXRpbWVfc3RhdC5jb25jZWFsZWRfc2Ft
cGxlczsKICAgYWNtX3N0YXQtPmNvbmNlYWxtZW50RXZlbnRzID0gbmV0ZXFfbGlmZXRpbWVfc3Rh
dC5jb25jZWFsbWVudF9ldmVudHM7CiAgIGFjbV9zdGF0LT5qaXR0ZXJCdWZmZXJEZWxheU1zID0g
bmV0ZXFfbGlmZXRpbWVfc3RhdC5qaXR0ZXJfYnVmZmVyX2RlbGF5X21zOworICBhY21fc3RhdC0+
ZGVsYXllZFBhY2tldE91dGFnZVNhbXBsZXMgPQorICAgICAgbmV0ZXFfbGlmZXRpbWVfc3RhdC5k
ZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2FtcGxlczsKKworICBOZXRFcU9wZXJhdGlvbnNBbmRTdGF0
ZSBuZXRlcV9vcGVyYXRpb25zX2FuZF9zdGF0ZSA9CisgICAgICBuZXRlcV8tPkdldE9wZXJhdGlv
bnNBbmRTdGF0ZSgpOworICBhY21fc3RhdC0+cGFja2V0QnVmZmVyRmx1c2hlcyA9CisgICAgICBu
ZXRlcV9vcGVyYXRpb25zX2FuZF9zdGF0ZS5wYWNrZXRfYnVmZmVyX2ZsdXNoZXM7CiB9CiAKIGlu
dCBBY21SZWNlaXZlcjo6RGVjb2RlckJ5UGF5bG9hZFR5cGUodWludDhfdCBwYXlsb2FkX3R5cGUs
CkBAIC0zOTEsNyArMzk4LDcgQEAgY29uc3QgYWJzbDo6b3B0aW9uYWw8Q29kZWNJbnN0PiBBY21S
ZWNlaXZlcjo6UnRwSGVhZGVyVG9EZWNvZGVyKAogICAgIHVpbnQ4X3QgZmlyc3RfcGF5bG9hZF9i
eXRlKSBjb25zdCB7CiAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPENvZGVjSW5zdD4gY2kgPQogICAg
ICAgbmV0ZXFfLT5HZXREZWNvZGVyKHJ0cF9oZWFkZXIucGF5bG9hZFR5cGUpOwotICBpZiAoY2kg
JiYgU1RSX0NBU0VfQ01QKGNpLT5wbG5hbWUsICJyZWQiKSA9PSAwKSB7CisgIGlmIChjaSAmJiBh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNpLT5wbG5hbWUsICJyZWQiKSkgewogICAgIC8vIFRoaXMg
aXMgYSBSRUQgcGFja2V0LiBHZXQgdGhlIHBheWxvYWQgb2YgdGhlIGF1ZGlvIGNvZGVjLgogICAg
IHJldHVybiBuZXRlcV8tPkdldERlY29kZXIoZmlyc3RfcGF5bG9hZF9ieXRlICYgMHg3Zik7CiAg
IH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
YWNtMi9hY21fcmVjZWl2ZXIuaAppbmRleCBhMmFlNzIzZGVlZTZhY2RiYzdmNDNmZjJmMzIyYzhm
ZmU3YzQyNDhkLi44ZTdkODM5NzhjMGQ3YTEzYTM5YjYyYjkyMTljZDRiNGUzMGEzMGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZWNlaXZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jl
Y2VpdmVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdf
QUNNMl9BQ01fUkVDRUlWRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfQUNNMl9B
Q01fUkVDRUlWRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1hcD4KICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgpAQCAtMTgsMTkgKzE5LDIxIEBACiAK
ICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3Zp
ZXcuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKLSNpbmNsdWRlICJjb21t
b25fYXVkaW8vdmFkL2luY2x1ZGUvd2VicnRjX3ZhZC5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19j
b2RlY3MvYXVkaW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9f
Zm9ybWF0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVzYW1w
bGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jYWxsX3N0YXRpc3Rp
Y3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlvX2NvZGlu
Z19tb2R1bGUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9pbmNsdWRl
L25ldGVxLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CitjbGFzcyBDbG9jazsKIHN0cnVjdCBDb2RlY0luc3Q7CiBjbGFzcyBOZXRFcTsKK3N0cnVjdCBS
VFBIZWFkZXI7CitzdHJ1Y3QgV2ViUnRjUlRQSGVhZGVyOwogCiBuYW1lc3BhY2UgYWNtMiB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3JlY2VpdmVyX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
YWNtMi9hY21fcmVjZWl2ZXJfdW5pdHRlc3QuY2MKaW5kZXggMjlmMmE0NTY2OWIzZDk5ZjIxZWRj
MDQwMmQxNmMxZmVkMGJlMWYxMS4uNDYzODRmZWJiNTc0OWY0NWQwZWQyZGM3MTU1M2U5NDQ0MDkz
OTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXJfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvYWNtMi9hY21fcmVjZWl2ZXJfdW5pdHRlc3QuY2MKQEAgLTczLDEyICs3MywxMiBA
QCBjbGFzcyBBY21SZWNlaXZlclRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9QYWNrZXRpemF0aW9u
Q2FsbGJhY2ssCiAgICAgLy8gSWYgd2UgaGF2ZSBhIGNvbXBhdGlibGUgQ04gc3BlY2lmaWNhdGlv
biwgc3RhY2sgYSBDTkcgb24gdG9wLgogICAgIGF1dG8gaXQgPSBjbmdfcGF5bG9hZF90eXBlcy5m
aW5kKGluZm8uc2FtcGxlX3JhdGVfaHopOwogICAgIGlmIChpdCAhPSBjbmdfcGF5bG9hZF90eXBl
cy5lbmQoKSkgewotICAgICAgQXVkaW9FbmNvZGVyQ25nOjpDb25maWcgY29uZmlnOworICAgICAg
QXVkaW9FbmNvZGVyQ25nQ29uZmlnIGNvbmZpZzsKICAgICAgIGNvbmZpZy5zcGVlY2hfZW5jb2Rl
ciA9IHN0ZDo6bW92ZShlbmMpOwogICAgICAgY29uZmlnLm51bV9jaGFubmVscyA9IDE7CiAgICAg
ICBjb25maWcucGF5bG9hZF90eXBlID0gaXQtPnNlY29uZDsKICAgICAgIGNvbmZpZy52YWRfbW9k
ZSA9IFZhZDo6a1ZhZE5vcm1hbDsKLSAgICAgIGVuYyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1ZGlv
RW5jb2RlckNuZz4oc3RkOjptb3ZlKGNvbmZpZykpOworICAgICAgZW5jID0gQ3JlYXRlQ29tZm9y
dE5vaXNlRW5jb2RlcihzdGQ6Om1vdmUoY29uZmlnKSk7CiAgICAgfQogCiAgICAgLy8gQWN0dWFs
bHkgc3RhcnQgdXNpbmcgdGhlIG5ldyBlbmNvZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9h
Y21fcmVzYW1wbGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9hY21fcmVzYW1wbGVyLmNjCmluZGV4IGMwYjIw
NjQ0NTM3NTljZDRmZGJmMTY3YjFhZGM1YjMyNDA3Y2I0YjAuLmNhMzU4M2UzMmNkZWE0NjRiOTk0
NmM2YWI5YzhjNWZlNWMzNzRjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYWNtX3Jlc2FtcGxl
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuY2MKQEAgLTEzLDcgKzEzLDYgQEAK
ICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIAotI2luY2x1ZGUgImNv
bW1vbl9hdWRpby9yZXNhbXBsZXIvaW5jbHVkZS9yZXNhbXBsZXIuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
YWNtMi9hY21fcmVzYW1wbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuaAppbmRleCA5
MDRlYTUyNGY4ODM5YTYwNGRhOGEzODZmN2FhNTI0NzQ1N2FkZjgzLi45NmJhOTNhNzYyMjk5NWNl
OWFjYTMxNWJmNWFhYWQ5MzQ5NGJkNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNh
bXBsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2FjbV9yZXNhbXBsZXIuaApAQCAtMTEsNiArMTEsOSBA
QAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19BQ00yX0FDTV9SRVNBTVBMRVJfSF8KICNk
ZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfQUNNMl9BQ01fUkVTQU1QTEVSX0hfCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImNvbW1vbl9h
dWRpby9yZXNhbXBsZXIvaW5jbHVkZS9wdXNoX3Jlc2FtcGxlci5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYXVkaW9fY29kaW5nX21vZHVsZS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2FjbTIvYXVkaW9fY29kaW5nX21vZHVsZS5jYwppbmRleCA2MGFmZWI2OWJkZWQzOWNmYzM3
ZjI0ZmMzZjc1MTA1MzljOWJjYzEyLi5jMGFhYjNhMzBmYTUzOWEzYmI5MGVhOGIxMzBmZGIwMjdm
NTdjYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2F1ZGlvX2NvZGluZ19tb2R1bGUuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvYWNtMi9hdWRpb19jb2RpbmdfbW9kdWxlLmNjCkBAIC0xMCwyOCArMTAsMjkgQEAK
IAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21v
ZHVsZS5oIgogCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2lu
Y2x1ZGUgPGNzdGRpbnQ+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNpbmNs
dWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2Fj
bTIvYWNtX3JlY2VpdmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9h
Y21fcmVzYW1wbGVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jb2Rl
Y19tYW5hZ2VyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2Ff
Y29kZWMuaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZl
cnNpb25zLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIAogbmFtZXNwYWNlIHsKIAotc3RydWN0IEVuY29kZXJGYWN0b3J5IHsKLSAgQXVkaW9F
bmNvZGVyKiBleHRlcm5hbF9zcGVlY2hfZW5jb2RlciA9IG51bGxwdHI7Ci0gIGFjbTI6OkNvZGVj
TWFuYWdlciBjb2RlY19tYW5hZ2VyOwotICBhY20yOjpSZW50QUNvZGVjIHJlbnRfYV9jb2RlYzsK
LX07Ci0KIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0Nv
ZGluZ01vZHVsZSB7CiAgcHVibGljOgogICBleHBsaWNpdCBBdWRpb0NvZGluZ01vZHVsZUltcGwo
Y29uc3QgQXVkaW9Db2RpbmdNb2R1bGU6OkNvbmZpZyYgY29uZmlnKTsKQEAgLTQxLDEyICs0Miw2
IEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0NvZGlu
Z01vZHVsZSB7CiAgIC8vICAgU2VuZGVyCiAgIC8vCiAKLSAgLy8gQ2FuIGJlIGNhbGxlZCBtdWx0
aXBsZSB0aW1lcyBmb3IgQ29kZWMsIENORywgUkVELgotICBpbnQgUmVnaXN0ZXJTZW5kQ29kZWMo
Y29uc3QgQ29kZWNJbnN0JiBzZW5kX2NvZGVjKSBvdmVycmlkZTsKLQotICB2b2lkIFJlZ2lzdGVy
RXh0ZXJuYWxTZW5kQ29kZWMoCi0gICAgICBBdWRpb0VuY29kZXIqIGV4dGVybmFsX3NwZWVjaF9l
bmNvZGVyKSBvdmVycmlkZTsKLQogICB2b2lkIE1vZGlmeUVuY29kZXIocnRjOjpGdW5jdGlvblZp
ZXc8dm9pZChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiopPgogICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vZGlmaWVyKSBvdmVycmlkZTsKIApAQCAtNjUsMjYgKzYwLDEwIEBAIGNsYXNz
IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0NvZGluZ01vZHVsZSB7
CiAgIC8vIEFkZCAxMCBtcyBvZiByYXcgKFBDTSkgYXVkaW8gZGF0YSB0byB0aGUgZW5jb2Rlci4K
ICAgaW50IEFkZDEwTXNEYXRhKGNvbnN0IEF1ZGlvRnJhbWUmIGF1ZGlvX2ZyYW1lKSBvdmVycmlk
ZTsKIAotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAvLyAo
UkVEKSBSZWR1bmRhbnQgQ29kaW5nCi0gIC8vCi0KLSAgLy8gQ29uZmlndXJlIFJFRCBzdGF0dXMg
aS5lLiBvbi9vZmYuCi0gIGludCBTZXRSRURTdGF0dXMoYm9vbCBlbmFibGVfcmVkKSBvdmVycmlk
ZTsKLQotICAvLyBHZXQgUkVEIHN0YXR1cy4KLSAgYm9vbCBSRURTdGF0dXMoKSBjb25zdCBvdmVy
cmlkZTsKLQogICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAv
LyAoRkVDKSBGb3J3YXJkIEVycm9yIENvcnJlY3Rpb24gKGNvZGVjIGludGVybmFsKQogICAvLwog
Ci0gIC8vIENvbmZpZ3VyZSBGRUMgc3RhdHVzIGkuZS4gb24vb2ZmLgotICBpbnQgU2V0Q29kZWNG
RUMoYm9vbCBlbmFibGVkX2NvZGVjX2ZlYykgb3ZlcnJpZGU7Ci0KLSAgLy8gR2V0IEZFQyBzdGF0
dXMuCi0gIGJvb2wgQ29kZWNGRUMoKSBjb25zdCBvdmVycmlkZTsKLQogICAvLyBTZXQgdGFyZ2V0
IHBhY2tldCBsb3NzIHJhdGUKICAgaW50IFNldFBhY2tldExvc3NSYXRlKGludCBsb3NzX3JhdGUp
IG92ZXJyaWRlOwogCkBAIC05NCwxNCArNzMsNiBAQCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZUlt
cGwgZmluYWwgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGUgewogICAvLyAgIChDTkcpIENvbWZv
cnQgTm9pc2UgR2VuZXJhdGlvbgogICAvLwogCi0gIGludCBTZXRWQUQoYm9vbCBlbmFibGVfZHR4
ID0gdHJ1ZSwKLSAgICAgICAgICAgICBib29sIGVuYWJsZV92YWQgPSBmYWxzZSwKLSAgICAgICAg
ICAgICBBQ01WQURNb2RlIG1vZGUgPSBWQUROb3JtYWwpIG92ZXJyaWRlOwotCi0gIGludCBWQUQo
Ym9vbCogZHR4X2VuYWJsZWQsCi0gICAgICAgICAgYm9vbCogdmFkX2VuYWJsZWQsCi0gICAgICAg
ICAgQUNNVkFETW9kZSogbW9kZSkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgaW50IFJlZ2lzdGVyVkFE
Q2FsbGJhY2soQUNNVkFEQ2FsbGJhY2sqIHZhZF9jYWxsYmFjaykgb3ZlcnJpZGU7CiAKICAgLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTEyMiwxMSArOTMsNiBA
QCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZUltcGwgZmluYWwgOiBwdWJsaWMgQXVkaW9Db2RpbmdN
b2R1bGUgewogICBib29sIFJlZ2lzdGVyUmVjZWl2ZUNvZGVjKGludCBydHBfcGF5bG9hZF90eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNkcEF1ZGlvRm9ybWF0JiBhdWRp
b19mb3JtYXQpIG92ZXJyaWRlOwogCi0gIGludCBSZWdpc3RlclJlY2VpdmVDb2RlYyhjb25zdCBD
b2RlY0luc3QmIHJlY2VpdmVfY29kZWMpIG92ZXJyaWRlOwotICBpbnQgUmVnaXN0ZXJSZWNlaXZl
Q29kZWMoCi0gICAgICBjb25zdCBDb2RlY0luc3QmIHJlY2VpdmVfY29kZWMsCi0gICAgICBydGM6
OkZ1bmN0aW9uVmlldzxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPigpPiBpc2FjX2ZhY3Rv
cnkpIG92ZXJyaWRlOwotCiAgIGludCBSZWdpc3RlckV4dGVybmFsUmVjZWl2ZUNvZGVjKGludCBy
dHBfcGF5bG9hZF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRp
b0RlY29kZXIqIGV4dGVybmFsX2RlY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKQEAgLTIxNCwxMSArMTgwLDYgQEAgY2xhc3MgQXVk
aW9Db2RpbmdNb2R1bGVJbXBsIGZpbmFsIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlIHsKICAg
ICBjb25zdCBzdGQ6OnN0cmluZyBoaXN0b2dyYW1fbmFtZV87CiAgIH07CiAKLSAgaW50IFJlZ2lz
dGVyUmVjZWl2ZUNvZGVjVW5sb2NrZWQoCi0gICAgICBjb25zdCBDb2RlY0luc3QmIGNvZGVjLAot
ICAgICAgcnRjOjpGdW5jdGlvblZpZXc8c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4oKT4g
aXNhY19mYWN0b3J5KQotICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChhY21fY3Jp
dF9zZWN0Xyk7Ci0KICAgaW50IEFkZDEwTXNEYXRhSW50ZXJuYWwoY29uc3QgQXVkaW9GcmFtZSYg
YXVkaW9fZnJhbWUsIElucHV0RGF0YSogaW5wdXRfZGF0YSkKICAgICAgIFJUQ19FWENMVVNJVkVf
TE9DS1NfUkVRVUlSRUQoYWNtX2NyaXRfc2VjdF8pOwogICBpbnQgRW5jb2RlKGNvbnN0IElucHV0
RGF0YSYgaW5wdXRfZGF0YSkKQEAgLTI1NiwxMiArMjE3LDcgQEAgY2xhc3MgQXVkaW9Db2RpbmdN
b2R1bGVJbXBsIGZpbmFsIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlIHsKICAgYWNtMjo6QWNt
UmVjZWl2ZXIgcmVjZWl2ZXJfOyAgLy8gQWNtUmVjZWl2ZXIgaGFzIGl0J3Mgb3duIGludGVybmFs
IGxvY2suCiAgIENoYW5nZUxvZ2dlciBiaXRyYXRlX2xvZ2dlcl8gUlRDX0dVQVJERURfQlkoYWNt
X2NyaXRfc2VjdF8pOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyRmFjdG9yeT4gZW5jb2Rl
cl9mYWN0b3J5XwotICAgICAgUlRDX0dVQVJERURfQlkoYWNtX2NyaXRfc2VjdF8pOwotCi0gIC8v
IEN1cnJlbnQgZW5jb2RlciBzdGFjaywgZWl0aGVyIG9idGFpbmVkIGZyb20KLSAgLy8gZW5jb2Rl
cl9mYWN0b3J5Xy0+cmVudF9hX2NvZGVjLlJlbnRFbmNvZGVyU3RhY2sgb3IgcHJvdmlkZWQgYnkg
YSBjYWxsIHRvCi0gIC8vIFJlZ2lzdGVyRW5jb2Rlci4KKyAgLy8gQ3VycmVudCBlbmNvZGVyIHN0
YWNrLCBwcm92aWRlZCBieSBhIGNhbGwgdG8gUmVnaXN0ZXJFbmNvZGVyLgogICBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmNvZGVyX3N0YWNrXyBSVENfR1VBUkRFRF9CWShhY21fY3Jp
dF9zZWN0Xyk7CiAKICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4gaXNhY19kZWNvZGVy
XzE2a18KQEAgLTM5NywyOCArMzUzLDYgQEAgY2xhc3MgUmF3QXVkaW9FbmNvZGVyV3JhcHBlciBm
aW5hbCA6IHB1YmxpYyBBdWRpb0VuY29kZXIgewogICBBdWRpb0VuY29kZXIqIGVuY187CiB9Owog
Ci0vLyBSZXR1cm4gZmFsc2Ugb24gZXJyb3IuCi1ib29sIENyZWF0ZVNwZWVjaEVuY29kZXJJZk5l
Y2Vzc2FyeShFbmNvZGVyRmFjdG9yeSogZWYpIHsKLSAgYXV0byogc3AgPSBlZi0+Y29kZWNfbWFu
YWdlci5HZXRTdGFja1BhcmFtcygpOwotICBpZiAoc3AtPnNwZWVjaF9lbmNvZGVyKSB7Ci0gICAg
Ly8gRG8gbm90aGluZzsgd2UgYWxyZWFkeSBoYXZlIGEgc3BlZWNoIGVuY29kZXIuCi0gIH0gZWxz
ZSBpZiAoZWYtPmNvZGVjX21hbmFnZXIuR2V0Q29kZWNJbnN0KCkpIHsKLSAgICBSVENfRENIRUNL
KCFlZi0+ZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXIpOwotICAgIC8vIFdlIGhhdmUgbm8gc3BlZWNo
IGVuY29kZXIsIGJ1dCB3ZSBoYXZlIGEgc3BlY2lmaWNhdGlvbiBmb3IgbWFraW5nIG9uZS4KLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBlbmMgPQotICAgICAgICBlZi0+cmVudF9h
X2NvZGVjLlJlbnRFbmNvZGVyKCplZi0+Y29kZWNfbWFuYWdlci5HZXRDb2RlY0luc3QoKSk7Ci0g
ICAgaWYgKCFlbmMpCi0gICAgICByZXR1cm4gZmFsc2U7ICAvLyBFbmNvZGVyIHNwZWMgd2FzIGJh
ZC4KLSAgICBzcC0+c3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUoZW5jKTsKLSAgfSBlbHNlIGlm
IChlZi0+ZXh0ZXJuYWxfc3BlZWNoX2VuY29kZXIpIHsKLSAgICBSVENfRENIRUNLKCFlZi0+Y29k
ZWNfbWFuYWdlci5HZXRDb2RlY0luc3QoKSk7Ci0gICAgLy8gV2UgaGF2ZSBhbiBleHRlcm5hbCBz
cGVlY2ggZW5jb2Rlci4KLSAgICBzcC0+c3BlZWNoX2VuY29kZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9FbmNvZGVyPigKLSAgICAgICAgbmV3IFJhd0F1ZGlvRW5jb2RlcldyYXBwZXIoZWYtPmV4
dGVybmFsX3NwZWVjaF9lbmNvZGVyKSk7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQg
QXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpDaGFuZ2VMb2dnZXI6Ok1heWJlTG9nKGludCB2YWx1ZSkg
ewogICBpZiAodmFsdWUgIT0gbGFzdF92YWx1ZV8gfHwgZmlyc3RfdGltZV8pIHsKICAgICBmaXJz
dF90aW1lXyA9IGZhbHNlOwpAQCAtNDMzLDcgKzM2Nyw2IEBAIEF1ZGlvQ29kaW5nTW9kdWxlSW1w
bDo6QXVkaW9Db2RpbmdNb2R1bGVJbXBsKAogICAgICAgZXhwZWN0ZWRfaW5fdHNfKDB4RDg3RjNG
OUYpLAogICAgICAgcmVjZWl2ZXJfKGNvbmZpZyksCiAgICAgICBiaXRyYXRlX2xvZ2dlcl8oIldl
YlJUQy5BdWRpby5UYXJnZXRCaXRyYXRlSW5LYnBzIiksCi0gICAgICBlbmNvZGVyX2ZhY3Rvcnlf
KG5ldyBFbmNvZGVyRmFjdG9yeSksCiAgICAgICBlbmNvZGVyX3N0YWNrXyhudWxscHRyKSwKICAg
ICAgIHByZXZpb3VzX3BsdHlwZV8oMjU1KSwKICAgICAgIHJlY2VpdmVyX2luaXRpYWxpemVkXyhm
YWxzZSksCkBAIC01NDEsNjkgKzQ3NCwyOSBAQCBpbnQzMl90IEF1ZGlvQ29kaW5nTW9kdWxlSW1w
bDo6RW5jb2RlKGNvbnN0IElucHV0RGF0YSYgaW5wdXRfZGF0YSkgewogLy8gICBTZW5kZXIKIC8v
CiAKLS8vIENhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgZm9yIENvZGVjLCBDTkcsIFJFRC4K
LWludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OlJlZ2lzdGVyU2VuZENvZGVjKGNvbnN0IENvZGVj
SW5zdCYgc2VuZF9jb2RlYykgewotICBydGM6OkNyaXRTY29wZSBsb2NrKCZhY21fY3JpdF9zZWN0
Xyk7Ci0gIGlmICghZW5jb2Rlcl9mYWN0b3J5Xy0+Y29kZWNfbWFuYWdlci5SZWdpc3RlckVuY29k
ZXIoc2VuZF9jb2RlYykpIHsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgaWYgKGVuY29kZXJfZmFj
dG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0Q29kZWNJbnN0KCkpIHsKLSAgICBlbmNvZGVyX2ZhY3Rv
cnlfLT5leHRlcm5hbF9zcGVlY2hfZW5jb2RlciA9IG51bGxwdHI7Ci0gIH0KLSAgaWYgKCFDcmVh
dGVTcGVlY2hFbmNvZGVySWZOZWNlc3NhcnkoZW5jb2Rlcl9mYWN0b3J5Xy5nZXQoKSkpIHsKLSAg
ICByZXR1cm4gLTE7Ci0gIH0KLSAgYXV0byogc3AgPSBlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19t
YW5hZ2VyLkdldFN0YWNrUGFyYW1zKCk7Ci0gIGlmIChzcC0+c3BlZWNoX2VuY29kZXIpCi0gICAg
ZW5jb2Rlcl9zdGFja18gPSBlbmNvZGVyX2ZhY3RvcnlfLT5yZW50X2FfY29kZWMuUmVudEVuY29k
ZXJTdGFjayhzcCk7Ci0gIHJldHVybiAwOwotfQotCi12b2lkIEF1ZGlvQ29kaW5nTW9kdWxlSW1w
bDo6UmVnaXN0ZXJFeHRlcm5hbFNlbmRDb2RlYygKLSAgICBBdWRpb0VuY29kZXIqIGV4dGVybmFs
X3NwZWVjaF9lbmNvZGVyKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3Rf
KTsKLSAgZW5jb2Rlcl9mYWN0b3J5Xy0+Y29kZWNfbWFuYWdlci5VbnNldENvZGVjSW5zdCgpOwot
ICBlbmNvZGVyX2ZhY3RvcnlfLT5leHRlcm5hbF9zcGVlY2hfZW5jb2RlciA9IGV4dGVybmFsX3Nw
ZWVjaF9lbmNvZGVyOwotICBSVENfQ0hFQ0soQ3JlYXRlU3BlZWNoRW5jb2RlcklmTmVjZXNzYXJ5
KGVuY29kZXJfZmFjdG9yeV8uZ2V0KCkpKTsKLSAgYXV0byogc3AgPSBlbmNvZGVyX2ZhY3Rvcnlf
LT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1zKCk7Ci0gIFJUQ19DSEVDSyhzcC0+c3BlZWNo
X2VuY29kZXIpOwotICBlbmNvZGVyX3N0YWNrXyA9IGVuY29kZXJfZmFjdG9yeV8tPnJlbnRfYV9j
b2RlYy5SZW50RW5jb2RlclN0YWNrKHNwKTsKLX0KLQogdm9pZCBBdWRpb0NvZGluZ01vZHVsZUlt
cGw6Ok1vZGlmeUVuY29kZXIoCiAgICAgcnRjOjpGdW5jdGlvblZpZXc8dm9pZChzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9FbmNvZGVyPiopPiBtb2RpZmllcikgewogICBydGM6OkNyaXRTY29wZSBsb2Nr
KCZhY21fY3JpdF9zZWN0Xyk7Ci0KLSAgLy8gV2lwZSB0aGUgZW5jb2RlciBmYWN0b3J5LCBzbyB0
aGF0IGV2ZXJ5dGhpbmcgdGhhdCByZWxpZXMgb24gaXQgd2lsbCBmYWlsLgotICAvLyBXZSBkb24n
dCB3YW50IHRoZSBjb21wbGV4aXR5IG9mIHN1cHBvcnRpbmcgc3dhcHBpbmcgYmFjayBhbmQgZm9y
dGguCi0gIGlmIChlbmNvZGVyX2ZhY3RvcnlfKSB7Ci0gICAgZW5jb2Rlcl9mYWN0b3J5Xy5yZXNl
dCgpOwotICAgIFJUQ19DSEVDSyghZW5jb2Rlcl9zdGFja18pOyAgLy8gRW5zdXJlIHdlIGhhZG4n
dCBzdGFydGVkIHVzaW5nIHRoZSBmYWN0b3J5LgotICB9Ci0KICAgbW9kaWZpZXIoJmVuY29kZXJf
c3RhY2tfKTsKIH0KIAogLy8gR2V0IGN1cnJlbnQgc2VuZCBjb2RlYy4KIGFic2w6Om9wdGlvbmFs
PENvZGVjSW5zdD4gQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpTZW5kQ29kZWMoKSBjb25zdCB7CiAg
IHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgaWYgKGVuY29kZXJfZmFj
dG9yeV8pIHsKLSAgICBhdXRvKiBjaSA9IGVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIu
R2V0Q29kZWNJbnN0KCk7Ci0gICAgaWYgKGNpKSB7Ci0gICAgICByZXR1cm4gKmNpOwotICAgIH0K
LSAgICBDcmVhdGVTcGVlY2hFbmNvZGVySWZOZWNlc3NhcnkoZW5jb2Rlcl9mYWN0b3J5Xy5nZXQo
KSk7Ci0gICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4mIGVuYyA9Ci0gICAg
ICAgIGVuY29kZXJfZmFjdG9yeV8tPmNvZGVjX21hbmFnZXIuR2V0U3RhY2tQYXJhbXMoKS0+c3Bl
ZWNoX2VuY29kZXI7Ci0gICAgaWYgKGVuYykgewotICAgICAgcmV0dXJuIGFjbTI6OkNvZGVjTWFu
YWdlcjo6Rm9yZ2VDb2RlY0luc3QoZW5jLmdldCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFic2w6
Om51bGxvcHQ7CisgIGlmIChlbmNvZGVyX3N0YWNrXykgeworICAgIENvZGVjSW5zdCBjaTsKKyAg
ICBjaS5jaGFubmVscyA9IGVuY29kZXJfc3RhY2tfLT5OdW1DaGFubmVscygpOworICAgIGNpLnBs
ZnJlcSA9IGVuY29kZXJfc3RhY2tfLT5TYW1wbGVSYXRlSHooKTsKKyAgICBjaS5wYWNzaXplID0g
cnRjOjpDaGVja2VkRGl2RXhhY3QoCisgICAgICAgIHN0YXRpY19jYXN0PGludD4oZW5jb2Rlcl9z
dGFja18tPk1heDEwTXNGcmFtZXNJbkFQYWNrZXQoKSAqIGNpLnBsZnJlcSksCisgICAgICAgIDEw
MCk7CisgICAgY2kucGx0eXBlID0gLTE7ICAvLyBOb3QgdmFsaWQuCisgICAgY2kucmF0ZSA9IC0x
OyAgICAvLyBOb3QgdmFsaWQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIga05hbWVbXSA9ICJleHRl
cm5hbCI7CisgICAgbWVtY3B5KGNpLnBsbmFtZSwga05hbWUsIHNpemVvZihrTmFtZSkpOworICAg
IHJldHVybiBjaTsKICAgfSBlbHNlIHsKLSAgICByZXR1cm4gZW5jb2Rlcl9zdGFja18KLSAgICAg
ICAgICAgICAgID8gYWJzbDo6b3B0aW9uYWw8Q29kZWNJbnN0PigKLSAgICAgICAgICAgICAgICAg
ICAgIGFjbTI6OkNvZGVjTWFuYWdlcjo6Rm9yZ2VDb2RlY0luc3QoZW5jb2Rlcl9zdGFja18uZ2V0
KCkpKQotICAgICAgICAgICAgICAgOiBhYnNsOjpudWxsb3B0OworICAgIHJldHVybiBhYnNsOjpu
dWxsb3B0OwogICB9CiB9CiAKQEAgLTgwMCw1OSArNjkzLDEwIEBAIGludCBBdWRpb0NvZGluZ01v
ZHVsZUltcGw6OlByZXByb2Nlc3NUb0FkZERhdGEoY29uc3QgQXVkaW9GcmFtZSYgaW5fZnJhbWUs
CiAgIHJldHVybiAwOwogfQogCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotLy8gICAoUkVEKSBSZWR1bmRhbnQgQ29kaW5nCi0vLwotCi1ib29sIEF1ZGlvQ29kaW5n
TW9kdWxlSW1wbDo6UkVEU3RhdHVzKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBsb2NrKCZh
Y21fY3JpdF9zZWN0Xyk7Ci0gIHJldHVybiBlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2Vy
LkdldFN0YWNrUGFyYW1zKCktPnVzZV9yZWQ7Ci19Ci0KLS8vIENvbmZpZ3VyZSBSRUQgc3RhdHVz
IGkuZSBvbi9vZmYuCi1pbnQgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpTZXRSRURTdGF0dXMoYm9v
bCBlbmFibGVfcmVkKSB7Ci0jaWZkZWYgV0VCUlRDX0NPREVDX1JFRAotICBydGM6OkNyaXRTY29w
ZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0gIENyZWF0ZVNwZWVjaEVuY29kZXJJZk5lY2Vzc2Fy
eShlbmNvZGVyX2ZhY3RvcnlfLmdldCgpKTsKLSAgaWYgKCFlbmNvZGVyX2ZhY3RvcnlfLT5jb2Rl
Y19tYW5hZ2VyLlNldENvcHlSZWQoZW5hYmxlX3JlZCkpIHsKLSAgICByZXR1cm4gLTE7Ci0gIH0K
LSAgYXV0byogc3AgPSBlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFy
YW1zKCk7Ci0gIGlmIChzcC0+c3BlZWNoX2VuY29kZXIpCi0gICAgZW5jb2Rlcl9zdGFja18gPSBl
bmNvZGVyX2ZhY3RvcnlfLT5yZW50X2FfY29kZWMuUmVudEVuY29kZXJTdGFjayhzcCk7Ci0gIHJl
dHVybiAwOwotI2Vsc2UKLSAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiICBXRUJSVENfQ09ERUNf
UkVEIGlzIHVuZGVmaW5lZCI7Ci0gIHJldHVybiAtMTsKLSNlbmRpZgotfQotCiAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gICAoRkVDKSBGb3J3YXJkIEVycm9y
IENvcnJlY3Rpb24gKGNvZGVjIGludGVybmFsKQogLy8KIAotYm9vbCBBdWRpb0NvZGluZ01vZHVs
ZUltcGw6OkNvZGVjRkVDKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBsb2NrKCZhY21fY3Jp
dF9zZWN0Xyk7Ci0gIHJldHVybiBlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2VyLkdldFN0
YWNrUGFyYW1zKCktPnVzZV9jb2RlY19mZWM7Ci19Ci0KLWludCBBdWRpb0NvZGluZ01vZHVsZUlt
cGw6OlNldENvZGVjRkVDKGJvb2wgZW5hYmxlX2NvZGVjX2ZlYykgewotICBydGM6OkNyaXRTY29w
ZSBsb2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0gIENyZWF0ZVNwZWVjaEVuY29kZXJJZk5lY2Vzc2Fy
eShlbmNvZGVyX2ZhY3RvcnlfLmdldCgpKTsKLSAgaWYgKCFlbmNvZGVyX2ZhY3RvcnlfLT5jb2Rl
Y19tYW5hZ2VyLlNldENvZGVjRkVDKGVuYWJsZV9jb2RlY19mZWMpKSB7Ci0gICAgcmV0dXJuIC0x
OwotICB9Ci0gIGF1dG8qIHNwID0gZW5jb2Rlcl9mYWN0b3J5Xy0+Y29kZWNfbWFuYWdlci5HZXRT
dGFja1BhcmFtcygpOwotICBpZiAoc3AtPnNwZWVjaF9lbmNvZGVyKQotICAgIGVuY29kZXJfc3Rh
Y2tfID0gZW5jb2Rlcl9mYWN0b3J5Xy0+cmVudF9hX2NvZGVjLlJlbnRFbmNvZGVyU3RhY2soc3Ap
OwotICBpZiAoZW5hYmxlX2NvZGVjX2ZlYykgewotICAgIHJldHVybiBzcC0+dXNlX2NvZGVjX2Zl
YyA/IDAgOiAtMTsKLSAgfSBlbHNlIHsKLSAgICBSVENfRENIRUNLKCFzcC0+dXNlX2NvZGVjX2Zl
Yyk7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQogaW50IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6
U2V0UGFja2V0TG9zc1JhdGUoaW50IGxvc3NfcmF0ZSkgewogICBydGM6OkNyaXRTY29wZSBsb2Nr
KCZhY21fY3JpdF9zZWN0Xyk7CiAgIGlmIChIYXZlVmFsaWRFbmNvZGVyKCJTZXRQYWNrZXRMb3Nz
UmF0ZSIpKSB7CkBAIC04NjEsMzYgKzcwNSw2IEBAIGludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6
OlNldFBhY2tldExvc3NSYXRlKGludCBsb3NzX3JhdGUpIHsKICAgcmV0dXJuIDA7CiB9CiAKLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAgIChWQUQpIFZvaWNl
IEFjdGl2aXR5IERldGVjdGlvbgotLy8KLWludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OlNldFZB
RChib29sIGVuYWJsZV9kdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBlbmFibGVfdmFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDTVZBRE1v
ZGUgbW9kZSkgewotICAvLyBOb3RlOiB8ZW5hYmxlX3ZhZHwgaXMgbm90IHVzZWQ7IFZBRCBpcyBl
bmFibGVkIGJhc2VkIG9uIHRoZSBEVFggc2V0dGluZy4KLSAgUlRDX0RDSEVDS19FUShlbmFibGVf
ZHR4LCBlbmFibGVfdmFkKTsKLSAgcnRjOjpDcml0U2NvcGUgbG9jaygmYWNtX2NyaXRfc2VjdF8p
OwotICBDcmVhdGVTcGVlY2hFbmNvZGVySWZOZWNlc3NhcnkoZW5jb2Rlcl9mYWN0b3J5Xy5nZXQo
KSk7Ci0gIGlmICghZW5jb2Rlcl9mYWN0b3J5Xy0+Y29kZWNfbWFuYWdlci5TZXRWQUQoZW5hYmxl
X2R0eCwgbW9kZSkpIHsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgYXV0byogc3AgPSBlbmNvZGVy
X2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1zKCk7Ci0gIGlmIChzcC0+c3Bl
ZWNoX2VuY29kZXIpCi0gICAgZW5jb2Rlcl9zdGFja18gPSBlbmNvZGVyX2ZhY3RvcnlfLT5yZW50
X2FfY29kZWMuUmVudEVuY29kZXJTdGFjayhzcCk7Ci0gIHJldHVybiAwOwotfQotCi0vLyBHZXQg
VkFEL0RUWCBzZXR0aW5ncy4KLWludCBBdWRpb0NvZGluZ01vZHVsZUltcGw6OlZBRChib29sKiBk
dHhfZW5hYmxlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sKiB2YWRfZW5h
YmxlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ01WQURNb2RlKiBtb2RlKSBj
b25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmFjbV9jcml0X3NlY3RfKTsKLSAgY29uc3Qg
YXV0byogc3AgPSBlbmNvZGVyX2ZhY3RvcnlfLT5jb2RlY19tYW5hZ2VyLkdldFN0YWNrUGFyYW1z
KCk7Ci0gICpkdHhfZW5hYmxlZCA9ICp2YWRfZW5hYmxlZCA9IHNwLT51c2VfY25nOwotICAqbW9k
ZSA9IHNwLT52YWRfbW9kZTsKLSAgcmV0dXJuIDA7Ci19Ci0KIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyAgIFJlY2VpdmVyCiAvLwpAQCAtOTQ5LDU5ICs3NjMs
NiBAQCBib29sIEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6UmVnaXN0ZXJSZWNlaXZlQ29kZWMoCiAg
IHJldHVybiByZWNlaXZlcl8uQWRkQ29kZWMocnRwX3BheWxvYWRfdHlwZSwgYXVkaW9fZm9ybWF0
KTsKIH0KIAotaW50IEF1ZGlvQ29kaW5nTW9kdWxlSW1wbDo6UmVnaXN0ZXJSZWNlaXZlQ29kZWMo
Y29uc3QgQ29kZWNJbnN0JiBjb2RlYykgewotICBydGM6OkNyaXRTY29wZSBsb2NrKCZhY21fY3Jp
dF9zZWN0Xyk7Ci0gIGF1dG8qIGVmID0gZW5jb2Rlcl9mYWN0b3J5Xy5nZXQoKTsKLSAgcmV0dXJu
IFJlZ2lzdGVyUmVjZWl2ZUNvZGVjVW5sb2NrZWQoCi0gICAgICBjb2RlYywgWyZdIHsgcmV0dXJu
IGVmLT5yZW50X2FfY29kZWMuUmVudElzYWNEZWNvZGVyKGNvZGVjLnBsZnJlcSk7IH0pOwotfQot
Ci1pbnQgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpSZWdpc3RlclJlY2VpdmVDb2RlYygKLSAgICBj
b25zdCBDb2RlY0luc3QmIGNvZGVjLAotICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0RlY29kZXI+KCk+IGlzYWNfZmFjdG9yeSkgewotICBydGM6OkNyaXRTY29wZSBs
b2NrKCZhY21fY3JpdF9zZWN0Xyk7Ci0gIHJldHVybiBSZWdpc3RlclJlY2VpdmVDb2RlY1VubG9j
a2VkKGNvZGVjLCBpc2FjX2ZhY3RvcnkpOwotfQotCi1pbnQgQXVkaW9Db2RpbmdNb2R1bGVJbXBs
OjpSZWdpc3RlclJlY2VpdmVDb2RlY1VubG9ja2VkKAotICAgIGNvbnN0IENvZGVjSW5zdCYgY29k
ZWMsCi0gICAgcnRjOjpGdW5jdGlvblZpZXc8c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4o
KT4gaXNhY19mYWN0b3J5KSB7Ci0gIFJUQ19EQ0hFQ0socmVjZWl2ZXJfaW5pdGlhbGl6ZWRfKTsK
LSAgaWYgKGNvZGVjLmNoYW5uZWxzID4gMikgewotICAgIFJUQ19MT0dfRihMU19FUlJPUikgPDwg
IlVuc3VwcG9ydGVkIG51bWJlciBvZiBjaGFubmVsczogIiA8PCBjb2RlYy5jaGFubmVsczsKLSAg
ICByZXR1cm4gLTE7Ci0gIH0KLQotICBhdXRvIGNvZGVjX2lkID0gYWNtMjo6UmVudEFDb2RlYzo6
Q29kZWNJZEJ5UGFyYW1zKGNvZGVjLnBsbmFtZSwgY29kZWMucGxmcmVxLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjLmNoYW5uZWxzKTsK
LSAgaWYgKCFjb2RlY19pZCkgewotICAgIFJUQ19MT0dfRihMU19FUlJPUikKLSAgICAgICAgPDwg
Ildyb25nIGNvZGVjIHBhcmFtcyB0byBiZSByZWdpc3RlcmVkIGFzIHJlY2VpdmUgY29kZWMiOwot
ICAgIHJldHVybiAtMTsKLSAgfQotICBhdXRvIGNvZGVjX2luZGV4ID0gYWNtMjo6UmVudEFDb2Rl
Yzo6Q29kZWNJbmRleEZyb21JZCgqY29kZWNfaWQpOwotICBSVENfQ0hFQ0soY29kZWNfaW5kZXgp
IDw8ICJJbnZhbGlkIGNvZGVjIElEOiAiIDw8IHN0YXRpY19jYXN0PGludD4oKmNvZGVjX2lkKTsK
LQotICAvLyBDaGVjayBpZiB0aGUgcGF5bG9hZC10eXBlIGlzIHZhbGlkLgotICBpZiAoIWFjbTI6
OlJlbnRBQ29kZWM6OklzUGF5bG9hZFR5cGVWYWxpZChjb2RlYy5wbHR5cGUpKSB7Ci0gICAgUlRD
X0xPR19GKExTX0VSUk9SKSA8PCAiSW52YWxpZCBwYXlsb2FkIHR5cGUgIiA8PCBjb2RlYy5wbHR5
cGUgPDwgIiBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgPDwgY29kZWMucGxuYW1lOwot
ICAgIHJldHVybiAtMTsKLSAgfQotCi0gIEF1ZGlvRGVjb2RlciogaXNhY19kZWNvZGVyID0gbnVs
bHB0cjsKLSAgaWYgKFNUUl9DQVNFX0NNUChjb2RlYy5wbG5hbWUsICJpc2FjIikgPT0gMCkgewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RlY29kZXI+JiBzYXZlZF9pc2FjX2RlY29kZXIgPQot
ICAgICAgICBjb2RlYy5wbGZyZXEgPT0gMTYwMDAgPyBpc2FjX2RlY29kZXJfMTZrXyA6IGlzYWNf
ZGVjb2Rlcl8zMmtfOwotICAgIGlmICghc2F2ZWRfaXNhY19kZWNvZGVyKSB7Ci0gICAgICBzYXZl
ZF9pc2FjX2RlY29kZXIgPSBpc2FjX2ZhY3RvcnkoKTsKLSAgICB9Ci0gICAgaXNhY19kZWNvZGVy
ID0gc2F2ZWRfaXNhY19kZWNvZGVyLmdldCgpOwotICB9Ci0gIHJldHVybiByZWNlaXZlcl8uQWRk
Q29kZWMoKmNvZGVjX2luZGV4LCBjb2RlYy5wbHR5cGUsIGNvZGVjLmNoYW5uZWxzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvZGVjLnBsZnJlcSwgaXNhY19kZWNvZGVyLCBjb2RlYy5w
bG5hbWUpOwotfQotCiBpbnQgQXVkaW9Db2RpbmdNb2R1bGVJbXBsOjpSZWdpc3RlckV4dGVybmFs
UmVjZWl2ZUNvZGVjKAogICAgIGludCBydHBfcGF5bG9hZF90eXBlLAogICAgIEF1ZGlvRGVjb2Rl
ciogZXh0ZXJuYWxfZGVjb2RlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYXVkaW9fY29kaW5n
X21vZHVsZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvYXVkaW9fY29kaW5nX21vZHVsZV91bml0
dGVzdC5jYwppbmRleCA1YWM2MTAyYzY4MjA5OTg4YWRiYjAyYjdiMWNhNWNjMDQ4ZmYwNTI3Li40
ZTI2MmY3YjAzOGEzYmRmOWYxMzZmM2E1NjRhNDk1MmE3YTI2YzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hY20yL2F1ZGlvX2NvZGluZ19tb2R1bGVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9h
dWRpb19jb2RpbmdfbW9kdWxlX3VuaXR0ZXN0LmNjCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0LmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZl
bnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Bs
YXRmb3JtX3RocmVhZC5oIgpAQCAtNDIsNyArNDMsNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3N5
c3RlbS9hcmNoLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAj
aW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKLSNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dy
YXBwZXJzL2luY2x1ZGUvc2xlZXAuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVk
ZSAidGVzdC9tb2NrX2F1ZGlvX2RlY29kZXIuaCIKQEAgLTQwOCwxMiArNDA4LDEyIEBAIGNsYXNz
IEF1ZGlvQ29kaW5nTW9kdWxlVGVzdFdpdGhDb21mb3J0Tm9pc2VPbGRBcGkKICAgICAgICAgICAg
ICAgYWNtXy0+UmVnaXN0ZXJSZWNlaXZlQ29kZWMoCiAgICAgICAgICAgICAgICAgICBydHBfcGF5
bG9hZF90eXBlLCBTZHBBdWRpb0Zvcm1hdCgiY24iLCBrU2FtcGxlUmF0ZUh6LCAxKSkpOwogICAg
IGFjbV8tPk1vZGlmeUVuY29kZXIoWyZdKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+KiBl
bmMpIHsKLSAgICAgIEF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnIGNvbmZpZzsKKyAgICAgIEF1ZGlv
RW5jb2RlckNuZ0NvbmZpZyBjb25maWc7CiAgICAgICBjb25maWcuc3BlZWNoX2VuY29kZXIgPSBz
dGQ6Om1vdmUoKmVuYyk7CiAgICAgICBjb25maWcubnVtX2NoYW5uZWxzID0gMTsKICAgICAgIGNv
bmZpZy5wYXlsb2FkX3R5cGUgPSBydHBfcGF5bG9hZF90eXBlOwogICAgICAgY29uZmlnLnZhZF9t
b2RlID0gVmFkOjprVmFkTm9ybWFsOwotICAgICAgKmVuYyA9IGFic2w6Om1ha2VfdW5pcXVlPEF1
ZGlvRW5jb2RlckNuZz4oc3RkOjptb3ZlKGNvbmZpZykpOworICAgICAgKmVuYyA9IENyZWF0ZUNv
bWZvcnROb2lzZUVuY29kZXIoc3RkOjptb3ZlKGNvbmZpZykpOwogICAgIH0pOwogICB9CiAKQEAg
LTQ4MSw3ICs0ODEsNiBAQCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZU10VGVzdE9sZEFwaSA6IHB1
YmxpYyBBdWRpb0NvZGluZ01vZHVsZVRlc3RPbGRBcGkgewogICAgICAgICBzZW5kX3RocmVhZF8o
Q2JTZW5kVGhyZWFkLCB0aGlzLCAic2VuZCIpLAogICAgICAgICBpbnNlcnRfcGFja2V0X3RocmVh
ZF8oQ2JJbnNlcnRQYWNrZXRUaHJlYWQsIHRoaXMsICJpbnNlcnRfcGFja2V0IiksCiAgICAgICAg
IHB1bGxfYXVkaW9fdGhyZWFkXyhDYlB1bGxBdWRpb1RocmVhZCwgdGhpcywgInB1bGxfYXVkaW8i
KSwKLSAgICAgICAgdGVzdF9jb21wbGV0ZV8oRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCiAgICAg
ICAgIHNlbmRfY291bnRfKDApLAogICAgICAgICBpbnNlcnRfcGFja2V0X2NvdW50XygwKSwKICAg
ICAgICAgcHVsbF9hdWRpb19jb3VudF8oMCksCkBAIC01MTIsOCArNTExLDggQEAgY2xhc3MgQXVk
aW9Db2RpbmdNb2R1bGVNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVUZXN0
T2xkQXBpIHsKICAgICBpbnNlcnRfcGFja2V0X3RocmVhZF8uU3RvcCgpOwogICB9CiAKLSAgRXZl
bnRUeXBlV3JhcHBlciBSdW5UZXN0KCkgewotICAgIHJldHVybiB0ZXN0X2NvbXBsZXRlXy0+V2Fp
dCgxMCAqIDYwICogMTAwMCk7ICAvLyAxMCBtaW51dGVzJyB0aW1lb3V0LgorICBib29sIFJ1blRl
c3QoKSB7CisgICAgcmV0dXJuIHRlc3RfY29tcGxldGVfLldhaXQoMTAgKiA2MCAqIDEwMDApOyAg
Ly8gMTAgbWludXRlcycgdGltZW91dC4KICAgfQogCiAgIHZpcnR1YWwgYm9vbCBUZXN0RG9uZSgp
IHsKQEAgLTUzOCwxMiArNTM3LDEyIEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlTXRUZXN0T2xk
QXBpIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlVGVzdE9sZEFwaSB7CiAgICAgU2xlZXBNcygx
KTsKICAgICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpIHsKICAgICAgIC8vIEVuZCB0aGUgdGVzdCBl
YXJseSBpZiBhIGZhdGFsIGZhaWx1cmUgKEFTU0VSVF8qKSBoYXMgb2NjdXJyZWQuCi0gICAgICB0
ZXN0X2NvbXBsZXRlXy0+U2V0KCk7CisgICAgICB0ZXN0X2NvbXBsZXRlXy5TZXQoKTsKICAgICB9
CiAgICAgKytzZW5kX2NvdW50XzsKICAgICBJbnNlcnRBdWRpb0FuZFZlcmlmeUVuY29kaW5nKCk7
CiAgICAgaWYgKFRlc3REb25lKCkpIHsKLSAgICAgIHRlc3RfY29tcGxldGVfLT5TZXQoKTsKKyAg
ICAgIHRlc3RfY29tcGxldGVfLlNldCgpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKICAgfQpA
QCAtNTkyLDcgKzU5MSw3IEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlTXRUZXN0T2xkQXBpIDog
cHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlVGVzdE9sZEFwaSB7CiAgIHJ0Yzo6UGxhdGZvcm1UaHJl
YWQgc2VuZF90aHJlYWRfOwogICBydGM6OlBsYXRmb3JtVGhyZWFkIGluc2VydF9wYWNrZXRfdGhy
ZWFkXzsKICAgcnRjOjpQbGF0Zm9ybVRocmVhZCBwdWxsX2F1ZGlvX3RocmVhZF87Ci0gIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+IHRlc3RfY29tcGxldGVfOworICBydGM6OkV2
ZW50IHRlc3RfY29tcGxldGVfOwogICBpbnQgc2VuZF9jb3VudF87CiAgIGludCBpbnNlcnRfcGFj
a2V0X2NvdW50XzsKICAgaW50IHB1bGxfYXVkaW9fY291bnRfIFJUQ19HVUFSREVEX0JZKGNyaXRf
c2VjdF8pOwpAQCAtNjA3LDcgKzYwNiw3IEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlTXRUZXN0
T2xkQXBpIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlVGVzdE9sZEFwaSB7CiAjZGVmaW5lIE1B
WUJFX0RvVGVzdCBEb1Rlc3QKICNlbmRpZgogVEVTVF9GKEF1ZGlvQ29kaW5nTW9kdWxlTXRUZXN0
T2xkQXBpLCBNQVlCRV9Eb1Rlc3QpIHsKLSAgRVhQRUNUX0VRKGtFdmVudFNpZ25hbGVkLCBSdW5U
ZXN0KCkpOworICBFWFBFQ1RfVFJVRShSdW5UZXN0KCkpOwogfQogCiAvLyBUaGlzIGlzIGEgbXVs
dGktdGhyZWFkZWQgQUNNIHRlc3QgdXNpbmcgaVNBQy4gVGhlIHRlc3QgZW5jb2RlcyBhdWRpbwpA
QCAtNzE3LDcgKzcxNiw3IEBAIGNsYXNzIEFjbUlzYWNNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVk
aW9Db2RpbmdNb2R1bGVNdFRlc3RPbGRBcGkgewogI2VuZGlmCiAjaWYgZGVmaW5lZChXRUJSVENf
Q09ERUNfSVNBQykgfHwgZGVmaW5lZChXRUJSVENfQ09ERUNfSVNBQ0ZYKQogVEVTVF9GKEFjbUlz
YWNNdFRlc3RPbGRBcGksIE1BWUJFX0RvVGVzdCkgewotICBFWFBFQ1RfRVEoa0V2ZW50U2lnbmFs
ZWQsIFJ1blRlc3QoKSk7CisgIEVYUEVDVF9UUlVFKFJ1blRlc3QoKSk7CiB9CiAjZW5kaWYKIApA
QCAtNzM0LDcgKzczMyw2IEBAIGNsYXNzIEFjbVJlUmVnaXN0ZXJJc2FjTXRUZXN0T2xkQXBpIDog
cHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlVGVzdE9sZEFwaSB7CiAgICAgICAgIGNvZGVjX3JlZ2lz
dHJhdGlvbl90aHJlYWRfKENiQ29kZWNSZWdpc3RyYXRpb25UaHJlYWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJjb2RlY19yZWdpc3RyYXRpb24iKSwKLSAgICAgICAgdGVzdF9jb21wbGV0ZV8oRXZl
bnRXcmFwcGVyOjpDcmVhdGUoKSksCiAgICAgICAgIGNvZGVjX3JlZ2lzdGVyZWRfKGZhbHNlKSwK
ICAgICAgICAgcmVjZWl2ZV9wYWNrZXRfY291bnRfKDApLAogICAgICAgICBuZXh0X2luc2VydF9w
YWNrZXRfdGltZV9tc18oMCksCkBAIC03ODEsOCArNzc5LDggQEAgY2xhc3MgQWNtUmVSZWdpc3Rl
cklzYWNNdFRlc3RPbGRBcGkgOiBwdWJsaWMgQXVkaW9Db2RpbmdNb2R1bGVUZXN0T2xkQXBpIHsK
ICAgICBjb2RlY19yZWdpc3RyYXRpb25fdGhyZWFkXy5TdG9wKCk7CiAgIH0KIAotICBFdmVudFR5
cGVXcmFwcGVyIFJ1blRlc3QoKSB7Ci0gICAgcmV0dXJuIHRlc3RfY29tcGxldGVfLT5XYWl0KDEw
ICogNjAgKiAxMDAwKTsgIC8vIDEwIG1pbnV0ZXMnIHRpbWVvdXQuCisgIGJvb2wgUnVuVGVzdCgp
IHsKKyAgICByZXR1cm4gdGVzdF9jb21wbGV0ZV8uV2FpdCgxMCAqIDYwICogMTAwMCk7ICAvLyAx
MCBtaW51dGVzJyB0aW1lb3V0LgogICB9CiAKICAgc3RhdGljIGJvb2wgQ2JSZWNlaXZlVGhyZWFk
KHZvaWQqIGNvbnRleHQpIHsKQEAgLTg0NSw3ICs4NDMsNyBAQCBjbGFzcyBBY21SZVJlZ2lzdGVy
SXNhY010VGVzdE9sZEFwaSA6IHB1YmxpYyBBdWRpb0NvZGluZ01vZHVsZVRlc3RPbGRBcGkgewog
ICAgIFNsZWVwTXMoMSk7CiAgICAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKSB7CiAgICAgICAvLyBF
bmQgdGhlIHRlc3QgZWFybHkgaWYgYSBmYXRhbCBmYWlsdXJlIChBU1NFUlRfKikgaGFzIG9jY3Vy
cmVkLgotICAgICAgdGVzdF9jb21wbGV0ZV8tPlNldCgpOworICAgICAgdGVzdF9jb21wbGV0ZV8u
U2V0KCk7CiAgICAgfQogICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfc2VjdF8pOwogICAg
IGlmICghY29kZWNfcmVnaXN0ZXJlZF8gJiYKQEAgLTg1NiwxNCArODU0LDE0IEBAIGNsYXNzIEFj
bVJlUmVnaXN0ZXJJc2FjTXRUZXN0T2xkQXBpIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlVGVz
dE9sZEFwaSB7CiAgICAgICBjb2RlY19yZWdpc3RlcmVkXyA9IHRydWU7CiAgICAgfQogICAgIGlm
IChjb2RlY19yZWdpc3RlcmVkXyAmJiByZWNlaXZlX3BhY2tldF9jb3VudF8gPiBrTnVtUGFja2V0
cykgewotICAgICAgdGVzdF9jb21wbGV0ZV8tPlNldCgpOworICAgICAgdGVzdF9jb21wbGV0ZV8u
U2V0KCk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogICB9CiAKICAgcnRjOjpQbGF0Zm9ybVRo
cmVhZCByZWNlaXZlX3RocmVhZF87CiAgIHJ0Yzo6UGxhdGZvcm1UaHJlYWQgY29kZWNfcmVnaXN0
cmF0aW9uX3RocmVhZF87Ci0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+IHRl
c3RfY29tcGxldGVfOworICBydGM6OkV2ZW50IHRlc3RfY29tcGxldGVfOwogICBydGM6OkNyaXRp
Y2FsU2VjdGlvbiBjcml0X3NlY3RfOwogICBib29sIGNvZGVjX3JlZ2lzdGVyZWRfIFJUQ19HVUFS
REVEX0JZKGNyaXRfc2VjdF8pOwogICBpbnQgcmVjZWl2ZV9wYWNrZXRfY291bnRfIFJUQ19HVUFS
REVEX0JZKGNyaXRfc2VjdF8pOwpAQCAtODgwLDcgKzg3OCw3IEBAIGNsYXNzIEFjbVJlUmVnaXN0
ZXJJc2FjTXRUZXN0T2xkQXBpIDogcHVibGljIEF1ZGlvQ29kaW5nTW9kdWxlVGVzdE9sZEFwaSB7
CiAjZW5kaWYKICNpZiBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FDKSB8fCBkZWZpbmVkKFdFQlJU
Q19DT0RFQ19JU0FDRlgpCiBURVNUX0YoQWNtUmVSZWdpc3RlcklzYWNNdFRlc3RPbGRBcGksIE1B
WUJFX0RvVGVzdCkgewotICBFWFBFQ1RfRVEoa0V2ZW50U2lnbmFsZWQsIFJ1blRlc3QoKSk7Cisg
IEVYUEVDVF9UUlVFKFJ1blRlc3QoKSk7CiB9CiAjZW5kaWYKIApAQCAtMTE4NSwxNCArMTE4Mywx
NCBAQCBjbGFzcyBBY21TZW5kZXJCaXRFeGFjdG5lc3NPbGRBcGkgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0LAogCiAgICAgLy8gRXh0cmFjdCBhbmQgdmVyaWZ5IHRoZSBhdWRpbyBjaGVja3N1bS4K
ICAgICBzdGQ6OnN0cmluZyBjaGVja3N1bV9zdHJpbmcgPSBhdWRpb19jaGVja3N1bS5GaW5pc2go
KTsKLSAgICBFWFBFQ1RfRVEoYXVkaW9fY2hlY2tzdW1fcmVmLCBjaGVja3N1bV9zdHJpbmcpOwor
ICAgIEV4cGVjdENoZWNrc3VtRXEoYXVkaW9fY2hlY2tzdW1fcmVmLCBjaGVja3N1bV9zdHJpbmcp
OwogCiAgICAgLy8gRXh0cmFjdCBhbmQgdmVyaWZ5IHRoZSBwYXlsb2FkIGNoZWNrc3VtLgogICAg
IHJ0Yzo6QnVmZmVyIGNoZWNrc3VtX3Jlc3VsdChwYXlsb2FkX2NoZWNrc3VtXy0+U2l6ZSgpKTsK
ICAgICBwYXlsb2FkX2NoZWNrc3VtXy0+RmluaXNoKGNoZWNrc3VtX3Jlc3VsdC5kYXRhKCksIGNo
ZWNrc3VtX3Jlc3VsdC5zaXplKCkpOwogICAgIGNoZWNrc3VtX3N0cmluZyA9CiAgICAgICAgIHJ0
Yzo6aGV4X2VuY29kZShjaGVja3N1bV9yZXN1bHQuZGF0YTxjaGFyPigpLCBjaGVja3N1bV9yZXN1
bHQuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVEocGF5bG9hZF9jaGVja3N1bV9yZWYsIGNoZWNrc3Vt
X3N0cmluZyk7CisgICAgRXhwZWN0Q2hlY2tzdW1FcShwYXlsb2FkX2NoZWNrc3VtX3JlZiwgY2hl
Y2tzdW1fc3RyaW5nKTsKIAogICAgIC8vIFZlcmlmeSBudW1iZXIgb2YgcGFja2V0cyBwcm9kdWNl
ZC4KICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGFja2V0cywgcGFja2V0X2NvdW50Xyk7CkBAIC0x
MjAxLDYgKzExOTksMTggQEAgY2xhc3MgQWNtU2VuZGVyQml0RXhhY3RuZXNzT2xkQXBpIDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCwKICAgICByZW1vdmUob3V0cHV0X2ZpbGVfbmFtZS5jX3N0cigp
KTsKICAgfQogCisgIC8vIEhlbHBlcjogcmVzdWx0IG11c3QgYmUgb25lIHRoZSAifCItc2VwYXJh
dGVkIGNoZWNrc3Vtcy4KKyAgdm9pZCBFeHBlY3RDaGVja3N1bUVxKHN0ZDo6c3RyaW5nIHJlZiwg
c3RkOjpzdHJpbmcgcmVzdWx0KSB7CisgICAgaWYgKHJlZi5zaXplKCkgPT0gcmVzdWx0LnNpemUo
KSkgeworICAgICAgLy8gT25seSBvbmUgY2hlY2tzdW06IGNsZWFyZXIgbWVzc2FnZS4KKyAgICAg
IEVYUEVDVF9FUShyZWYsIHJlc3VsdCk7CisgICAgfSBlbHNlIHsKKyAgICAgIEVYUEVDVF9ORShy
ZWYuZmluZChyZXN1bHQpLCBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAgICA8PCByZXN1bHQg
PDwgIiBtdXN0IGJlIG9uZSBvZiB0aGVzZTpcbiIKKyAgICAgICAgICA8PCByZWY7CisgICAgfQor
ICB9CisKICAgLy8gSW5oZXJpdGVkIGZyb20gdGVzdDo6UGFja2V0U291cmNlLgogICBzdGQ6OnVu
aXF1ZV9wdHI8dGVzdDo6UGFja2V0PiBOZXh0UGFja2V0KCkgb3ZlcnJpZGUgewogICAgIGF1dG8g
cGFja2V0ID0gc2VuZF90ZXN0Xy0+TmV4dFBhY2tldCgpOwpAQCAtMTQzOCwyMSArMTQ0OCwzNSBA
QCBURVNUX0YoQWNtU2VuZGVyQml0RXhhY3RuZXNzT2xkQXBpLCBNQVlCRV9HNzIyX3N0ZXJlb18y
MG1zKSB7CiAgICAgICA1MCwgdGVzdDo6QWNtUmVjZWl2ZVRlc3RPbGRBcGk6OmtTdGVyZW9PdXRw
dXQpOwogfQogCituYW1lc3BhY2UgeworLy8gQ2hlY2tzdW0gZGVwZW5kcyBvbiBsaWJvcHVzIGJl
aW5nIGNvbXBpbGVkIHdpdGggb3Igd2l0aG91dCBTU0UuCitjb25zdCBzdGQ6OnN0cmluZyBhdWRp
b19tYXliZV9zc2UgPQorICAgICIzZTI4NWI3NDUxMGU2MjA2MmZiZDgxNDJkYWNkMTZlOXwiCisg
ICAgImZkNWQ1N2Q2ZDc2NjkwOGU2YTcyMTFlMmE1YzdmNzhhIjsKK2NvbnN0IHN0ZDo6c3RyaW5n
IHBheWxvYWRfbWF5YmVfc3NlID0KKyAgICAiNzhjZjhmMDMxNTczNThhY2RjNjlmNjgzNWNhYTBk
OWJ8IgorICAgICJiNjkzYmQ5NWMyZWUyMzU0ZjkyMzQwZGQwOWU5ZGE2OCI7CisvLyBDb21tb24g
Y2hlY2tzdW1zLgorY29uc3Qgc3RkOjpzdHJpbmcgYXVkaW9fY2hlY2tzdW0gPQorICAgIEFjbVJl
Y2VpdmVyQml0RXhhY3RuZXNzT2xkQXBpOjpQbGF0Zm9ybUNoZWNrc3VtKAorICAgICAgICBhdWRp
b19tYXliZV9zc2UsCisgICAgICAgIGF1ZGlvX21heWJlX3NzZSwKKyAgICAgICAgIjQzOWU5N2Fk
MTkzMmM0OTkyM2I1ZGEwMjljMTdkZDVlIiwKKyAgICAgICAgIjAzOGVjOTBmNWYzZmMyMzIwZjMw
OTBmOGVjZWY2YmI3IiwKKyAgICAgICAgIjAzOGVjOTBmNWYzZmMyMzIwZjMwOTBmOGVjZWY2YmI3
Iik7Citjb25zdCBzdGQ6OnN0cmluZyBwYXlsb2FkX2NoZWNrc3VtID0KKyAgICBBY21SZWNlaXZl
ckJpdEV4YWN0bmVzc09sZEFwaTo6UGxhdGZvcm1DaGVja3N1bSgKKyAgICAgICAgcGF5bG9hZF9t
YXliZV9zc2UsCisgICAgICAgIHBheWxvYWRfbWF5YmVfc3NlLAorICAgICAgICAiYWI4OGIxYTA0
OWMzNmJkZmViN2U4YjA1N2VmNjk4MmEiLAorICAgICAgICAiMjdmZWY3Yjc5OTM5MzM0N2VjM2I1
Njk0MzY5YTFjMzYiLAorICAgICAgICAiMjdmZWY3Yjc5OTM5MzM0N2VjM2I1Njk0MzY5YTFjMzYi
KTsKK307ICAvLyBuYW1lc3BhY2UKKwogVEVTVF9GKEFjbVNlbmRlckJpdEV4YWN0bmVzc09sZEFw
aSwgT3B1c19zdGVyZW9fMjBtcykgewogICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShTZXRVcFRl
c3QoIm9wdXMiLCA0ODAwMCwgMiwgMTIwLCA5NjAsIDk2MCkpOwotICBSdW4oQWNtUmVjZWl2ZXJC
aXRFeGFjdG5lc3NPbGRBcGk6OlBsYXRmb3JtQ2hlY2tzdW0oCi0gICAgICAgICAgIjNlMjg1Yjc0
NTEwZTYyMDYyZmJkODE0MmRhY2QxNmU5IiwKLSAgICAgICAgICAiM2UyODViNzQ1MTBlNjIwNjJm
YmQ4MTQyZGFjZDE2ZTkiLAotICAgICAgICAgICI0MzllOTdhZDE5MzJjNDk5MjNiNWRhMDI5YzE3
ZGQ1ZSIsCi0gICAgICAgICAgIjAzOGVjOTBmNWYzZmMyMzIwZjMwOTBmOGVjZWY2YmI3IiwKLSAg
ICAgICAgICAiMDM4ZWM5MGY1ZjNmYzIzMjBmMzA5MGY4ZWNlZjZiYjciKSwKLSAgICAgIEFjbVJl
Y2VpdmVyQml0RXhhY3RuZXNzT2xkQXBpOjpQbGF0Zm9ybUNoZWNrc3VtKAotICAgICAgICAgICI3
OGNmOGYwMzE1NzM1OGFjZGM2OWY2ODM1Y2FhMGQ5YiIsCi0gICAgICAgICAgIjc4Y2Y4ZjAzMTU3
MzU4YWNkYzY5ZjY4MzVjYWEwZDliIiwKLSAgICAgICAgICAiYWI4OGIxYTA0OWMzNmJkZmViN2U4
YjA1N2VmNjk4MmEiLAotICAgICAgICAgICIyN2ZlZjdiNzk5MzkzMzQ3ZWMzYjU2OTQzNjlhMWMz
NiIsCi0gICAgICAgICAgIjI3ZmVmN2I3OTkzOTMzNDdlYzNiNTY5NDM2OWExYzM2IiksCi0gICAg
ICA1MCwgdGVzdDo6QWNtUmVjZWl2ZVRlc3RPbGRBcGk6OmtTdGVyZW9PdXRwdXQpOworICBSdW4o
YXVkaW9fY2hlY2tzdW0sIHBheWxvYWRfY2hlY2tzdW0sIDUwLAorICAgICAgdGVzdDo6QWNtUmVj
ZWl2ZVRlc3RPbGRBcGk6OmtTdGVyZW9PdXRwdXQpOwogfQogCiBURVNUX0YoQWNtU2VuZGVyQml0
RXhhY3RuZXNzTmV3QXBpLCBNQVlCRV9PcHVzRnJvbUZvcm1hdF9zdGVyZW9fMjBtcykgewpAQCAt
MTQ2MCwxOSArMTQ4NCw4IEBAIFRFU1RfRihBY21TZW5kZXJCaXRFeGFjdG5lc3NOZXdBcGksIE1B
WUJFX09wdXNGcm9tRm9ybWF0X3N0ZXJlb18yMG1zKSB7CiAgICAgICBTZHBBdWRpb0Zvcm1hdCgi
b3B1cyIsIDQ4MDAwLCAyLCB7eyJzdGVyZW8iLCAiMSJ9fSkpOwogICBBU1NFUlRfTk9fRkFUQUxf
RkFJTFVSRShTZXRVcFRlc3RFeHRlcm5hbEVuY29kZXIoCiAgICAgICBBdWRpb0VuY29kZXJPcHVz
OjpNYWtlQXVkaW9FbmNvZGVyKCpjb25maWcsIDEyMCksIDEyMCkpOwotICBSdW4oQWNtUmVjZWl2
ZXJCaXRFeGFjdG5lc3NPbGRBcGk6OlBsYXRmb3JtQ2hlY2tzdW0oCi0gICAgICAgICAgIjNlMjg1
Yjc0NTEwZTYyMDYyZmJkODE0MmRhY2QxNmU5IiwKLSAgICAgICAgICAiM2UyODViNzQ1MTBlNjIw
NjJmYmQ4MTQyZGFjZDE2ZTkiLAotICAgICAgICAgICI0MzllOTdhZDE5MzJjNDk5MjNiNWRhMDI5
YzE3ZGQ1ZSIsCi0gICAgICAgICAgIjAzOGVjOTBmNWYzZmMyMzIwZjMwOTBmOGVjZWY2YmI3IiwK
LSAgICAgICAgICAiMDM4ZWM5MGY1ZjNmYzIzMjBmMzA5MGY4ZWNlZjZiYjciKSwKLSAgICAgIEFj
bVJlY2VpdmVyQml0RXhhY3RuZXNzT2xkQXBpOjpQbGF0Zm9ybUNoZWNrc3VtKAotICAgICAgICAg
ICI3OGNmOGYwMzE1NzM1OGFjZGM2OWY2ODM1Y2FhMGQ5YiIsCi0gICAgICAgICAgIjc4Y2Y4ZjAz
MTU3MzU4YWNkYzY5ZjY4MzVjYWEwZDliIiwKLSAgICAgICAgICAiYWI4OGIxYTA0OWMzNmJkZmVi
N2U4YjA1N2VmNjk4MmEiLAotICAgICAgICAgICIyN2ZlZjdiNzk5MzkzMzQ3ZWMzYjU2OTQzNjlh
MWMzNiIsCi0gICAgICAgICAgIjI3ZmVmN2I3OTkzOTMzNDdlYzNiNTY5NDM2OWExYzM2IiksCi0g
ICAgICA1MCwgdGVzdDo6QWNtUmVjZWl2ZVRlc3RPbGRBcGk6OmtTdGVyZW9PdXRwdXQpOworICBS
dW4oYXVkaW9fY2hlY2tzdW0sIHBheWxvYWRfY2hlY2tzdW0sIDUwLAorICAgICAgdGVzdDo6QWNt
UmVjZWl2ZVRlc3RPbGRBcGk6OmtTdGVyZW9PdXRwdXQpOwogfQogCiBURVNUX0YoQWNtU2VuZGVy
Qml0RXhhY3RuZXNzTmV3QXBpLCBPcHVzRnJvbUZvcm1hdF9zdGVyZW9fMjBtc192b2lwKSB7CkBA
IC0xNDgyLDE1ICsxNDk1LDE5IEBAIFRFU1RfRihBY21TZW5kZXJCaXRFeGFjdG5lc3NOZXdBcGks
IE9wdXNGcm9tRm9ybWF0X3N0ZXJlb18yMG1zX3ZvaXApIHsKICAgY29uZmlnLT5hcHBsaWNhdGlv
biA9IEF1ZGlvRW5jb2Rlck9wdXNDb25maWc6OkFwcGxpY2F0aW9uTW9kZTo6a1ZvaXA7CiAgIEFT
U0VSVF9OT19GQVRBTF9GQUlMVVJFKFNldFVwVGVzdEV4dGVybmFsRW5jb2RlcigKICAgICAgIEF1
ZGlvRW5jb2Rlck9wdXM6Ok1ha2VBdWRpb0VuY29kZXIoKmNvbmZpZywgMTIwKSwgMTIwKSk7Cisg
IC8vIENoZWNrc3VtIGRlcGVuZHMgb24gbGlib3B1cyBiZWluZyBjb21waWxlZCB3aXRoIG9yIHdp
dGhvdXQgU1NFLgorICBjb25zdCBzdGQ6OnN0cmluZyBhdWRpb19tYXliZV9zc2UgPQorICAgICAg
ImIwMzI1ZGY0ZTgxMDRmMDRlMDNhZjIzYzBiNzU4MDBlfCIKKyAgICAgICIzY2Q0ZTFiYzJhY2Q5
NDQwYmI5ZTk3YWYzNDA4MGZmYyI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHBheWxvYWRfbWF5YmVf
c3NlID0KKyAgICAgICI0ZWFiMjI1OWI2ZmUyNGMyMmRkMjQyYTExM2UwYjNkOXwiCisgICAgICAi
NGZjMGFmMGFhMDZjMjY0NTRhZjA5ODMyZDNlYzFiNGUiOwogICBSdW4oQWNtUmVjZWl2ZXJCaXRF
eGFjdG5lc3NPbGRBcGk6OlBsYXRmb3JtQ2hlY2tzdW0oCi0gICAgICAgICAgImIwMzI1ZGY0ZTgx
MDRmMDRlMDNhZjIzYzBiNzU4MDBlIiwKLSAgICAgICAgICAiYjAzMjVkZjRlODEwNGYwNGUwM2Fm
MjNjMGI3NTgwMGUiLAotICAgICAgICAgICIxYzgxMTIxZjVkOTI4NmE1YTg2NWQwMWRiYWIyMmNl
OCIsCisgICAgICAgICAgYXVkaW9fbWF5YmVfc3NlLCBhdWRpb19tYXliZV9zc2UsICIxYzgxMTIx
ZjVkOTI4NmE1YTg2NWQwMWRiYWIyMmNlOCIsCiAgICAgICAgICAgIjExZDU0N2Y4OTE0MmU5ZWYw
M2YzN2Q3Y2E3ZjMyMzc5IiwKICAgICAgICAgICAiMTFkNTQ3Zjg5MTQyZTllZjAzZjM3ZDdjYTdm
MzIzNzkiKSwKICAgICAgIEFjbVJlY2VpdmVyQml0RXhhY3RuZXNzT2xkQXBpOjpQbGF0Zm9ybUNo
ZWNrc3VtKAotICAgICAgICAgICI0ZWFiMjI1OWI2ZmUyNGMyMmRkMjQyYTExM2UwYjNkOSIsCi0g
ICAgICAgICAgIjRlYWIyMjU5YjZmZTI0YzIyZGQyNDJhMTEzZTBiM2Q5IiwKKyAgICAgICAgICBw
YXlsb2FkX21heWJlX3NzZSwgcGF5bG9hZF9tYXliZV9zc2UsCiAgICAgICAgICAgIjgzOWVhNjAz
OTk0NDcyNjhlZTBmMDI2MmE1MGI3NWZkIiwKICAgICAgICAgICAiMTgxNWZkNTU4OWNhZDBjNmY2
Y2Y5NDZjNzZiODFhZWIiLAogICAgICAgICAgICIxODE1ZmQ1NTg5Y2FkMGM2ZjZjZjk0NmM3NmI4
MWFlYiIpLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jYWxsX3N0YXRpc3RpY3MuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2FjbTIvY2FsbF9zdGF0aXN0aWNzLmgKaW5kZXggOWRjZWQ2NDc1YTgwYzc3M2Y0YzE0MjkwYmY3
Zjc3MDY3NGFlMDM3YS4uNWQ5NGFjNDUzODkxZGI4ZDM1MWI3NTU2OTE0NTk5NmQ0ZmVmZWE5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jYWxsX3N0YXRpc3RpY3MuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20y
L2NhbGxfc3RhdGlzdGljcy5oCkBAIC0xMiw3ICsxMiw3IEBACiAjZGVmaW5lIE1PRFVMRVNfQVVE
SU9fQ09ESU5HX0FDTTJfQ0FMTF9TVEFUSVNUSUNTX0hfCiAKICNpbmNsdWRlICJhcGkvYXVkaW8v
YXVkaW9fZnJhbWUuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWls
ZC9pbmNsdWRlKQorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9f
Y29kaW5nX21vZHVsZV90eXBlZGVmcy5oIgogCiAvLwogLy8gVGhpcyBjbGFzcyBpcyBmb3IgYm9v
ayBrZWVwaW5nIG9mIGNhbGxzIHRvIEFDTS4gSXQgaXMgbm90IHVzZWZ1bCB0byBsb2cgQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVjX21hbmFnZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVj
X21hbmFnZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyOWUwZjFhMWUyN2I5
MGNjOTA1NGQ4Mzc3ZWIyZjg1YjRkY2Q1MDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jb2RlY19tYW5hZ2VyLmNjCisrKyAvZGV2L251
bGwKQEAgLTEsMjQ2ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jb2RlY19tYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLS8vI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3Bh
Y2UgYWNtMiB7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIENoZWNrIGlmIHRoZSBnaXZlbiBjb2RlYyBp
cyBhIHZhbGlkIHRvIGJlIHJlZ2lzdGVyZWQgYXMgc2VuZCBjb2RlYy4KLWludCBJc1ZhbGlkU2Vu
ZENvZGVjKGNvbnN0IENvZGVjSW5zdCYgc2VuZF9jb2RlYykgewotICBpZiAoKHNlbmRfY29kZWMu
Y2hhbm5lbHMgIT0gMSkgJiYgKHNlbmRfY29kZWMuY2hhbm5lbHMgIT0gMikpIHsKLSAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiV3JvbmcgbnVtYmVyIG9mIGNoYW5uZWxzICgiIDw8IHNlbmRfY29k
ZWMuY2hhbm5lbHMKLSAgICAgICAgICAgICAgICAgICAgICA8PCAiKSwgb25seSBtb25vIGFuZCBz
dGVyZW8gYXJlIHN1cHBvcnRlZCkiOwotICAgIHJldHVybiAtMTsKLSAgfQotCi0gIGF1dG8gbWF5
YmVfY29kZWNfaWQgPSBSZW50QUNvZGVjOjpDb2RlY0lkQnlJbnN0KHNlbmRfY29kZWMpOwotICBp
ZiAoIW1heWJlX2NvZGVjX2lkKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkludmFsaWQg
Y29kZWMgc2V0dGluZyBmb3IgdGhlIHNlbmQgY29kZWMuIjsKLSAgICByZXR1cm4gLTE7Ci0gIH0K
LQotICAvLyBUZWxlcGhvbmUtZXZlbnQgY2Fubm90IGJlIGEgc2VuZCBjb2RlYy4KLSAgaWYgKCFT
VFJfQ0FTRV9DTVAoc2VuZF9jb2RlYy5wbG5hbWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSkgewotICAg
IFJUQ19MT0coTFNfRVJST1IpIDw8ICJ0ZWxlcGhvbmUtZXZlbnQgY2Fubm90IGJlIGEgc2VuZCBj
b2RlYyI7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0KLSAgaWYgKCFSZW50QUNvZGVjOjpJc1N1cHBv
cnRlZE51bUNoYW5uZWxzKCptYXliZV9jb2RlY19pZCwgc2VuZF9jb2RlYy5jaGFubmVscykKLSAg
ICAgICAgICAgLnZhbHVlX29yKGZhbHNlKSkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8IHNl
bmRfY29kZWMuY2hhbm5lbHMKLSAgICAgICAgICAgICAgICAgICAgICA8PCAiIG51bWJlciBvZiBj
aGFubmVscyBub3Qgc3VwcG9ydGVkIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgPDwgc2Vu
ZF9jb2RlYy5wbG5hbWUgPDwgIi4iOwotICAgIHJldHVybiAtMTsKLSAgfQotICByZXR1cm4gUmVu
dEFDb2RlYzo6Q29kZWNJbmRleEZyb21JZCgqbWF5YmVfY29kZWNfaWQpLnZhbHVlX29yKC0xKTsK
LX0KLQotYm9vbCBJc09wdXMoY29uc3QgQ29kZWNJbnN0JiBjb2RlYykgewotICByZXR1cm4KLSNp
ZmRlZiBXRUJSVENfQ09ERUNfT1BVUwotICAgICAgIVNUUl9DQVNFX0NNUChjb2RlYy5wbG5hbWUs
ICJvcHVzIikgfHwKLSNlbmRpZgotICAgICAgZmFsc2U7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQot
Ci1Db2RlY01hbmFnZXI6OkNvZGVjTWFuYWdlcigpIHsKLSAgdGhyZWFkX2NoZWNrZXJfLkRldGFj
aEZyb21UaHJlYWQoKTsKLX0KLQotQ29kZWNNYW5hZ2VyOjp+Q29kZWNNYW5hZ2VyKCkgPSBkZWZh
dWx0OwotCi1ib29sIENvZGVjTWFuYWdlcjo6UmVnaXN0ZXJFbmNvZGVyKGNvbnN0IENvZGVjSW5z
dCYgc2VuZF9jb2RlYykgewotICBSVENfRENIRUNLKHRocmVhZF9jaGVja2VyXy5DYWxsZWRPblZh
bGlkVGhyZWFkKCkpOwotICBpbnQgY29kZWNfaWQgPSBJc1ZhbGlkU2VuZENvZGVjKHNlbmRfY29k
ZWMpOwotCi0gIC8vIENoZWNrIGZvciByZXBvcnRlZCBlcnJvcnMgZnJvbSBmdW5jdGlvbiBJc1Zh
bGlkU2VuZENvZGVjKCkuCi0gIGlmIChjb2RlY19pZCA8IDApIHsKLSAgICByZXR1cm4gZmFsc2U7
Ci0gIH0KLQotICBzd2l0Y2ggKFJlbnRBQ29kZWM6OlJlZ2lzdGVyUmVkUGF5bG9hZFR5cGUoCi0g
ICAgICAmY29kZWNfc3RhY2tfcGFyYW1zXy5yZWRfcGF5bG9hZF90eXBlcywgc2VuZF9jb2RlYykp
IHsKLSAgICBjYXNlIFJlbnRBQ29kZWM6OlJlZ2lzdHJhdGlvblJlc3VsdDo6a09rOgotICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgY2FzZSBSZW50QUNvZGVjOjpSZWdpc3RyYXRpb25SZXN1bHQ6OmtC
YWRGcmVxOgotICAgICAgUlRDX0xPRyhMU19FUlJPUikKLSAgICAgICAgICA8PCAiUmVnaXN0ZXJT
ZW5kQ29kZWMoKSBmYWlsZWQsIGludmFsaWQgZnJlcXVlbmN5IGZvciBSRUQiCi0gICAgICAgICAg
ICAgIiByZWdpc3RyYXRpb24iOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgUmVudEFD
b2RlYzo6UmVnaXN0cmF0aW9uUmVzdWx0OjprU2tpcDoKLSAgICAgIGJyZWFrOwotICB9Ci0gIHN3
aXRjaCAoUmVudEFDb2RlYzo6UmVnaXN0ZXJDbmdQYXlsb2FkVHlwZSgKLSAgICAgICZjb2RlY19z
dGFja19wYXJhbXNfLmNuZ19wYXlsb2FkX3R5cGVzLCBzZW5kX2NvZGVjKSkgewotICAgIGNhc2Ug
UmVudEFDb2RlYzo6UmVnaXN0cmF0aW9uUmVzdWx0OjprT2s6Ci0gICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBjYXNlIFJlbnRBQ29kZWM6OlJlZ2lzdHJhdGlvblJlc3VsdDo6a0JhZEZyZXE6Ci0gICAg
ICBSVENfTE9HKExTX0VSUk9SKQotICAgICAgICAgIDw8ICJSZWdpc3RlclNlbmRDb2RlYygpIGZh
aWxlZCwgaW52YWxpZCBmcmVxdWVuY3kgZm9yIENORyIKLSAgICAgICAgICAgICAiIHJlZ2lzdHJh
dGlvbiI7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBSZW50QUNvZGVjOjpSZWdpc3Ry
YXRpb25SZXN1bHQ6OmtTa2lwOgotICAgICAgYnJlYWs7Ci0gIH0KLQotICBpZiAoSXNPcHVzKHNl
bmRfY29kZWMpKSB7Ci0gICAgLy8gVkFEL0RUWCBub3Qgc3VwcG9ydGVkLgotICAgIGNvZGVjX3N0
YWNrX3BhcmFtc18udXNlX2NuZyA9IGZhbHNlOwotICB9Ci0KLSAgc2VuZF9jb2RlY19pbnN0XyA9
IHNlbmRfY29kZWM7Ci0gIHJlY3JlYXRlX2VuY29kZXJfID0gdHJ1ZTsgIC8vIENhbGxlciBtdXN0
IHJlY3JlYXRlIGl0LgotICByZXR1cm4gdHJ1ZTsKLX0KLQotQ29kZWNJbnN0IENvZGVjTWFuYWdl
cjo6Rm9yZ2VDb2RlY0luc3QoCi0gICAgY29uc3QgQXVkaW9FbmNvZGVyKiBleHRlcm5hbF9zcGVl
Y2hfZW5jb2RlcikgewotICBDb2RlY0luc3QgY2k7Ci0gIGNpLmNoYW5uZWxzID0gZXh0ZXJuYWxf
c3BlZWNoX2VuY29kZXItPk51bUNoYW5uZWxzKCk7Ci0gIGNpLnBsZnJlcSA9IGV4dGVybmFsX3Nw
ZWVjaF9lbmNvZGVyLT5TYW1wbGVSYXRlSHooKTsKLSAgY2kucGFjc2l6ZSA9IHJ0Yzo6Q2hlY2tl
ZERpdkV4YWN0KAotICAgICAgc3RhdGljX2Nhc3Q8aW50PihleHRlcm5hbF9zcGVlY2hfZW5jb2Rl
ci0+TWF4MTBNc0ZyYW1lc0luQVBhY2tldCgpICoKLSAgICAgICAgICAgICAgICAgICAgICAgY2ku
cGxmcmVxKSwKLSAgICAgIDEwMCk7Ci0gIGNpLnBsdHlwZSA9IC0xOyAgLy8gTm90IHZhbGlkLgot
ICBjaS5yYXRlID0gLTE7ICAgIC8vIE5vdCB2YWxpZC4KLSAgc3RhdGljIGNvbnN0IGNoYXIga05h
bWVbXSA9ICJleHRlcm5hbCI7Ci0gIG1lbWNweShjaS5wbG5hbWUsIGtOYW1lLCBzaXplb2Yoa05h
bWUpKTsKLSAgcmV0dXJuIGNpOwotfQotCi1ib29sIENvZGVjTWFuYWdlcjo6U2V0Q29weVJlZChi
b29sIGVuYWJsZSkgewotICBpZiAoZW5hYmxlICYmIGNvZGVjX3N0YWNrX3BhcmFtc18udXNlX2Nv
ZGVjX2ZlYykgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNvZGVjIGludGVybmFsIEZF
QyBhbmQgUkVEIGNhbm5vdCBiZSBjby1lbmFibGVkLiI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9
Ci0gIGlmIChlbmFibGUgJiYgc2VuZF9jb2RlY19pbnN0XyAmJgotICAgICAgY29kZWNfc3RhY2tf
cGFyYW1zXy5yZWRfcGF5bG9hZF90eXBlcy5jb3VudChzZW5kX2NvZGVjX2luc3RfLT5wbGZyZXEp
IDwKLSAgICAgICAgICAxKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiQ2Fubm90IGVu
YWJsZSBSRUQgYXQgIiA8PCBzZW5kX2NvZGVjX2luc3RfLT5wbGZyZXEKLSAgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICIgSHouIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgY29kZWNfc3Rh
Y2tfcGFyYW1zXy51c2VfcmVkID0gZW5hYmxlOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBD
b2RlY01hbmFnZXI6OlNldFZBRChib29sIGVuYWJsZSwgQUNNVkFETW9kZSBtb2RlKSB7Ci0gIC8v
IFNhbml0eSBjaGVjayBvZiB0aGUgbW9kZS4KLSAgUlRDX0RDSEVDSyhtb2RlID09IFZBRE5vcm1h
bCB8fCBtb2RlID09IFZBRExvd0JpdHJhdGUgfHwgbW9kZSA9PSBWQURBZ2dyIHx8Ci0gICAgICAg
ICAgICAgbW9kZSA9PSBWQURWZXJ5QWdncik7Ci0KLSAgLy8gQ2hlY2sgdGhhdCB0aGUgc2VuZCBj
b2RlYyBpcyBtb25vLiBXZSBkb24ndCBzdXBwb3J0IFZBRC9EVFggZm9yIHN0ZXJlbwotICAvLyBz
ZW5kaW5nLgotICBjb25zdCBib29sIHN0ZXJlb19zZW5kID0KLSAgICAgIGNvZGVjX3N0YWNrX3Bh
cmFtc18uc3BlZWNoX2VuY29kZXIKLSAgICAgICAgICA/IChjb2RlY19zdGFja19wYXJhbXNfLnNw
ZWVjaF9lbmNvZGVyLT5OdW1DaGFubmVscygpICE9IDEpCi0gICAgICAgICAgOiBmYWxzZTsKLSAg
aWYgKGVuYWJsZSAmJiBzdGVyZW9fc2VuZCkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJW
QUQvRFRYIG5vdCBzdXBwb3J0ZWQgZm9yIHN0ZXJlbyBzZW5kaW5nIjsKLSAgICByZXR1cm4gZmFs
c2U7Ci0gIH0KLQotICAvLyBUT0RPKGt3aWJlcmcpOiBUaGlzIGRvZXNuJ3QgcHJvdGVjdCBPcHVz
IHdoZW4gaW5qZWN0ZWQgYXMgYW4gZXh0ZXJuYWwKLSAgLy8gZW5jb2Rlci4KLSAgaWYgKHNlbmRf
Y29kZWNfaW5zdF8gJiYgSXNPcHVzKCpzZW5kX2NvZGVjX2luc3RfKSkgewotICAgIC8vIFZBRC9E
VFggbm90IHN1cHBvcnRlZCwgYnV0IGRvbid0IGZhaWwuCi0gICAgZW5hYmxlID0gZmFsc2U7Ci0g
IH0KLQotICBjb2RlY19zdGFja19wYXJhbXNfLnVzZV9jbmcgPSBlbmFibGU7Ci0gIGNvZGVjX3N0
YWNrX3BhcmFtc18udmFkX21vZGUgPSBtb2RlOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBD
b2RlY01hbmFnZXI6OlNldENvZGVjRkVDKGJvb2wgZW5hYmxlX2NvZGVjX2ZlYykgewotICBpZiAo
ZW5hYmxlX2NvZGVjX2ZlYyAmJiBjb2RlY19zdGFja19wYXJhbXNfLnVzZV9yZWQpIHsKLSAgICBS
VENfTE9HKExTX1dBUk5JTkcpIDw8ICJDb2RlYyBpbnRlcm5hbCBGRUMgYW5kIFJFRCBjYW5ub3Qg
YmUgY28tZW5hYmxlZC4iOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGNvZGVjX3N0YWNr
X3BhcmFtc18udXNlX2NvZGVjX2ZlYyA9IGVuYWJsZV9jb2RlY19mZWM7Ci0gIHJldHVybiB0cnVl
OwotfQotCi1ib29sIENvZGVjTWFuYWdlcjo6TWFrZUVuY29kZXIoUmVudEFDb2RlYyogcmFjLCBB
dWRpb0NvZGluZ01vZHVsZSogYWNtKSB7Ci0gIFJUQ19EQ0hFQ0socmFjKTsKLSAgUlRDX0RDSEVD
SyhhY20pOwotCi0gIGlmICghcmVjcmVhdGVfZW5jb2Rlcl8pIHsKLSAgICBib29sIGVycm9yID0g
ZmFsc2U7Ci0gICAgLy8gVHJ5IHRvIHJlLXVzZSB0aGUgc3BlZWNoIGVuY29kZXIgd2UndmUgZ2l2
ZW4gdG8gdGhlIEFDTS4KLSAgICBhY20tPk1vZGlmeUVuY29kZXIoWyZdKHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb0VuY29kZXI+KiBlbmNvZGVyKSB7Ci0gICAgICBpZiAoISplbmNvZGVyKSB7Ci0gICAg
ICAgIC8vIFRoZXJlIGlzIG5vIGV4aXN0aW5nIGVuY29kZXIuCi0gICAgICAgIHJlY3JlYXRlX2Vu
Y29kZXJfID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0gICAgICAvLyBFeHRy
YWN0IHRoZSBzcGVlY2ggZW5jb2RlciBmcm9tIHRoZSBBQ00uCi0gICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9FbmNvZGVyPiBlbmMgPSBzdGQ6Om1vdmUoKmVuY29kZXIpOwotICAgICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgICAgYXV0byBzdWJfZW5jID0gZW5jLT5SZWNsYWltQ29udGFpbmVkRW5j
b2RlcnMoKTsKLSAgICAgICAgaWYgKHN1Yl9lbmMuZW1wdHkoKSkgewotICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIFJUQ19DSEVDS19FUSgxLCBzdWJfZW5jLnNpemUoKSk7Ci0K
LSAgICAgICAgLy8gUmVwbGFjZSBlbmMgd2l0aCBpdHMgc3ViIGVuY29kZXIuIFdlIG5lZWQgdG8g
cHV0IHRoZSBzdWIgZW5jb2RlciBpbgotICAgICAgICAvLyBhIHRlbXBvcmFyeSBmaXJzdCwgc2lu
Y2Ugb3RoZXJ3aXNlIHRoZSBvbGQgdmFsdWUgb2YgZW5jIHdvdWxkIGJlCi0gICAgICAgIC8vIGRl
c3Ryb3llZCBiZWZvcmUgdGhlIG5ldyB2YWx1ZSBnb3QgYXNzaWduZWQsIHdoaWNoIHdvdWxkIGJl
IGJhZAotICAgICAgICAvLyBzaW5jZSB0aGUgbmV3IHZhbHVlIGlzIGEgcGFydCBvZiB0aGUgb2xk
IHZhbHVlLgotICAgICAgICBhdXRvIHRtcF9lbmMgPSBzdGQ6Om1vdmUoc3ViX2VuY1swXSk7Ci0g
ICAgICAgIGVuYyA9IHN0ZDo6bW92ZSh0bXBfZW5jKTsKLSAgICAgIH0KLQotICAgICAgLy8gV3Jh
cCBpdCBpbiBhIG5ldyBlbmNvZGVyIHN0YWNrIGFuZCBwdXQgaXQgYmFjay4KLSAgICAgIGNvZGVj
X3N0YWNrX3BhcmFtc18uc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUoZW5jKTsKLSAgICAgICpl
bmNvZGVyID0gcmFjLT5SZW50RW5jb2RlclN0YWNrKCZjb2RlY19zdGFja19wYXJhbXNfKTsKLSAg
ICAgIGlmICghKmVuY29kZXIpIHsKLSAgICAgICAgZXJyb3IgPSB0cnVlOwotICAgICAgfQotICAg
IH0pOwotICAgIGlmIChlcnJvcikgewotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBp
ZiAoIXJlY3JlYXRlX2VuY29kZXJfKSB7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0K
LQotICBpZiAoIXNlbmRfY29kZWNfaW5zdF8pIHsKLSAgICAvLyBXZSBkb24ndCBoYXZlIHRoZSBp
bmZvcm1hdGlvbiB3ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBzcGVlY2ggZW5jb2Rlci4KLSAgICAv
LyAoVGhpcyBpcyBub3QgYW4gZXJyb3IuKQotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgY29k
ZWNfc3RhY2tfcGFyYW1zXy5zcGVlY2hfZW5jb2RlciA9IHJhYy0+UmVudEVuY29kZXIoKnNlbmRf
Y29kZWNfaW5zdF8pOwotICBhdXRvIHN0YWNrID0gcmFjLT5SZW50RW5jb2RlclN0YWNrKCZjb2Rl
Y19zdGFja19wYXJhbXNfKTsKLSAgaWYgKCFzdGFjaykgewotICAgIHJldHVybiBmYWxzZTsKLSAg
fQotICBhY20tPlNldEVuY29kZXIoc3RkOjptb3ZlKHN0YWNrKSk7Ci0gIHJlY3JlYXRlX2VuY29k
ZXJfID0gZmFsc2U7Ci0gIHJldHVybiB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2UgYWNtMgot
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9jb2RlY19tYW5h
Z2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9hY20yL2NvZGVjX21hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmZiYWQ5NjcwODgwNTA4Yzc2ZjE2ODE1NzY5ODUzMDcwNTcxZWQ4ZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVj
X21hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IChjKSAyMDE1IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KLSAqLwotCi0jaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FDTTJfQ09ERUNfTUFOQUdF
Ul9IXwotI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19BQ00yX0NPREVDX01BTkFHRVJfSF8K
LQotI2luY2x1ZGUgPG1hcD4KLQotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLSNp
bmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQotI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlLmgiCi0jaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlX3R5
cGVkZWZzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1j
bGFzcyBBdWRpb0RlY29kZXI7Ci1jbGFzcyBBdWRpb0VuY29kZXI7Ci0KLW5hbWVzcGFjZSBhY20y
IHsKLQotY2xhc3MgQ29kZWNNYW5hZ2VyIGZpbmFsIHsKLSBwdWJsaWM6Ci0gIENvZGVjTWFuYWdl
cigpOwotICB+Q29kZWNNYW5hZ2VyKCk7Ci0KLSAgLy8gUGFyc2VzIHRoZSBnaXZlbiBzcGVjaWZp
Y2F0aW9uLiBPbiBzdWNjZXNzLCByZXR1cm5zIHRydWUgYW5kIHVwZGF0ZXMgdGhlCi0gIC8vIHN0
b3JlZCBDb2RlY0luc3QgYW5kIHN0YWNrIHBhcmFtZXRlcnM7IG9uIGVycm9yLCByZXR1cm5zIGZh
bHNlLgotICBib29sIFJlZ2lzdGVyRW5jb2Rlcihjb25zdCBDb2RlY0luc3QmIHNlbmRfY29kZWMp
OwotCi0gIHN0YXRpYyBDb2RlY0luc3QgRm9yZ2VDb2RlY0luc3QoY29uc3QgQXVkaW9FbmNvZGVy
KiBleHRlcm5hbF9zcGVlY2hfZW5jb2Rlcik7Ci0KLSAgY29uc3QgQ29kZWNJbnN0KiBHZXRDb2Rl
Y0luc3QoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHNlbmRfY29kZWNfaW5zdF8gPyAmKnNlbmRfY29k
ZWNfaW5zdF8gOiBudWxscHRyOwotICB9Ci0KLSAgdm9pZCBVbnNldENvZGVjSW5zdCgpIHsgc2Vu
ZF9jb2RlY19pbnN0XyA9IGFic2w6Om51bGxvcHQ7IH0KLQotICBjb25zdCBSZW50QUNvZGVjOjpT
dGFja1BhcmFtZXRlcnMqIEdldFN0YWNrUGFyYW1zKCkgY29uc3QgewotICAgIHJldHVybiAmY29k
ZWNfc3RhY2tfcGFyYW1zXzsKLSAgfQotICBSZW50QUNvZGVjOjpTdGFja1BhcmFtZXRlcnMqIEdl
dFN0YWNrUGFyYW1zKCkgeyByZXR1cm4gJmNvZGVjX3N0YWNrX3BhcmFtc187IH0KLQotICBib29s
IFNldENvcHlSZWQoYm9vbCBlbmFibGUpOwotCi0gIGJvb2wgU2V0VkFEKGJvb2wgZW5hYmxlLCBB
Q01WQURNb2RlIG1vZGUpOwotCi0gIGJvb2wgU2V0Q29kZWNGRUMoYm9vbCBlbmFibGVfY29kZWNf
ZmVjKTsKLQotICAvLyBVc2VzIHRoZSBwcm92aWRlZCBSZW50LUEtQ29kZWMgdG8gY3JlYXRlIGEg
bmV3IGVuY29kZXIgc3RhY2ssIGlmIHdlIGhhdmUgYQotICAvLyBjb21wbGV0ZSBzcGVjaWZpY2F0
aW9uOyBpZiBzbywgaXQgaXMgdGhlbiBwYXNzZWQgdG8gc2V0X2VuY29kZXIuIE9uIGVycm9yLAot
ICAvLyByZXR1cm5zIGZhbHNlLgotICBib29sIE1ha2VFbmNvZGVyKFJlbnRBQ29kZWMqIHJhYywg
QXVkaW9Db2RpbmdNb2R1bGUqIGFjbSk7Ci0KLSBwcml2YXRlOgotICBydGM6OlRocmVhZENoZWNr
ZXIgdGhyZWFkX2NoZWNrZXJfOwotICBhYnNsOjpvcHRpb25hbDxDb2RlY0luc3Q+IHNlbmRfY29k
ZWNfaW5zdF87Ci0gIFJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVycyBjb2RlY19zdGFja19wYXJh
bXNfOwotICBib29sIHJlY3JlYXRlX2VuY29kZXJfID0gdHJ1ZTsgIC8vIE5lZWQgdG8gcmVjcmVh
dGUgZW5jb2Rlcj8KLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKENvZGVjTWFuYWdl
cik7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgYWNtMgotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywot
I2VuZGlmICAvLyBNT0RVTEVTX0FVRElPX0NPRElOR19BQ00yX0NPREVDX01BTkFHRVJfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2FjbTIvY29kZWNfbWFuYWdlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Fj
bTIvY29kZWNfbWFuYWdlcl91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNmE1ZWE1ZjUyZTI1NTYyNDhkNmMwN2Q0MmVjM2ZhMmI0YTNiMzg3NS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL2NvZGVjX21hbmFn
ZXJfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogIENv
cHlyaWdodCAoYykgMjAxNSBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0g
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2FjbTIvY29kZWNfbWFuYWdlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmgiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC5oIgotI2lu
Y2x1ZGUgInRlc3QvbW9ja19hdWRpb19lbmNvZGVyLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewot
bmFtZXNwYWNlIGFjbTIgewotCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLQotbmFtZXNwYWNl
IHsKLQotLy8gQ3JlYXRlIGEgTW9ja0F1ZGlvRW5jb2RlciB3aXRoIHNvbWUgcmVhc29uYWJsZSBk
ZWZhdWx0IGJlaGF2aW9yLgotc3RkOjp1bmlxdWVfcHRyPE1vY2tBdWRpb0VuY29kZXI+IENyZWF0
ZU1vY2tFbmNvZGVyKCkgewotICBhdXRvIGVuYyA9IHN0ZDo6dW5pcXVlX3B0cjxNb2NrQXVkaW9F
bmNvZGVyPihuZXcgTW9ja0F1ZGlvRW5jb2Rlcik7Ci0gIEVYUEVDVF9DQUxMKCplbmMsIFNhbXBs
ZVJhdGVIeigpKS5XaWxsUmVwZWF0ZWRseShSZXR1cm4oODAwMCkpOwotICBFWFBFQ1RfQ0FMTCgq
ZW5jLCBOdW1DaGFubmVscygpKS5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMSkpOwotICBFWFBFQ1Rf
Q0FMTCgqZW5jLCBNYXgxME1zRnJhbWVzSW5BUGFja2V0KCkpLldpbGxSZXBlYXRlZGx5KFJldHVy
bigxKSk7Ci0gIHJldHVybiBlbmM7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1URVNUKENvZGVj
TWFuYWdlclRlc3QsIEV4dGVybmFsRW5jb2RlckZlYykgewotICBhdXRvIGVuYzAgPSBDcmVhdGVN
b2NrRW5jb2RlcigpOwotICBhdXRvIGVuYzEgPSBDcmVhdGVNb2NrRW5jb2RlcigpOwotICBhdXRv
IGVuYzIgPSBDcmVhdGVNb2NrRW5jb2RlcigpOwotICB7Ci0gICAgOjp0ZXN0aW5nOjpJblNlcXVl
bmNlIHM7Ci0gICAgRVhQRUNUX0NBTEwoKmVuYzAsIFNldEZlYyhmYWxzZSkpLldpbGxPbmNlKFJl
dHVybih0cnVlKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmVuYzEsIFNldEZlYyh0cnVlKSkuV2lsbE9u
Y2UoUmV0dXJuKHRydWUpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqZW5jMiwgU2V0RmVjKHRydWUpKS5X
aWxsT25jZShSZXR1cm4oZmFsc2UpKTsKLSAgfQotCi0gIENvZGVjTWFuYWdlciBjbTsKLSAgUmVu
dEFDb2RlYyByYWM7Ci0KLSAgLy8gdXNlX2NvZGVjX2ZlYyBzdGFydHMgb3V0IGZhbHNlLgotICBF
WFBFQ1RfRkFMU0UoY20uR2V0U3RhY2tQYXJhbXMoKS0+dXNlX2NvZGVjX2ZlYyk7Ci0gIGNtLkdl
dFN0YWNrUGFyYW1zKCktPnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKGVuYzApOwotICBFWFBF
Q1RfVFJVRShyYWMuUmVudEVuY29kZXJTdGFjayhjbS5HZXRTdGFja1BhcmFtcygpKSk7Ci0gIEVY
UEVDVF9GQUxTRShjbS5HZXRTdGFja1BhcmFtcygpLT51c2VfY29kZWNfZmVjKTsKLQotICAvLyBT
ZXQgaXQgdG8gdHJ1ZS4KLSAgRVhQRUNUX0VRKHRydWUsIGNtLlNldENvZGVjRkVDKHRydWUpKTsK
LSAgRVhQRUNUX1RSVUUoY20uR2V0U3RhY2tQYXJhbXMoKS0+dXNlX2NvZGVjX2ZlYyk7Ci0gIGNt
LkdldFN0YWNrUGFyYW1zKCktPnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKGVuYzEpOwotICBF
WFBFQ1RfVFJVRShyYWMuUmVudEVuY29kZXJTdGFjayhjbS5HZXRTdGFja1BhcmFtcygpKSk7Ci0g
IEVYUEVDVF9UUlVFKGNtLkdldFN0YWNrUGFyYW1zKCktPnVzZV9jb2RlY19mZWMpOwotCi0gIC8v
IFN3aXRjaCB0byBhIGNvZGVjIHRoYXQgZG9lc24ndCBzdXBwb3J0IGl0LgotICBjbS5HZXRTdGFj
a1BhcmFtcygpLT5zcGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShlbmMyKTsKLSAgRVhQRUNUX1RS
VUUocmFjLlJlbnRFbmNvZGVyU3RhY2soY20uR2V0U3RhY2tQYXJhbXMoKSkpOwotICBFWFBFQ1Rf
RkFMU0UoY20uR2V0U3RhY2tQYXJhbXMoKS0+dXNlX2NvZGVjX2ZlYyk7Ci19Ci0KLX0gIC8vIG5h
bWVzcGFjZSBhY20yCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9h
Y20yL3JlbnRfYV9jb2RlYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmNjCmluZGV4IDQ1
ZDc4ZDc0YTVkZDRlOGE5NmU4NDM1MTEwN2EzYjQxNjJkY2Q5YTIuLmJmZGRjNDJiYzkxMTg3NmNm
NTliNmVkYTg1MDc4MDFiMWQwNmEwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2Nv
ZGVjLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmNjCkBAIC0xMywzNCArMTMsOSBA
QAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5oIgotI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfcGNtLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5oIgotI2lmZGVmIFdFQlJUQ19D
T0RFQ19JTEJDCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVk
aW9fZW5jb2Rlcl9pbGJjLmgiICAvLyBub2duY2hlY2sKLSNlbmRpZgotI2lmZGVmIFdFQlJUQ19D
T0RFQ19JU0FDRlgKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9m
aXgvaW5jbHVkZS9hdWRpb19kZWNvZGVyX2lzYWNmaXguaCIgIC8vIG5vZ25jaGVjawotI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC9pbmNsdWRlL2F1ZGlvX2Vu
Y29kZXJfaXNhY2ZpeC5oIiAgLy8gbm9nbmNoZWNrCi0jZW5kaWYKLSNpZmRlZiBXRUJSVENfQ09E
RUNfSVNBQwotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4v
aW5jbHVkZS9hdWRpb19kZWNvZGVyX2lzYWMuaCIgIC8vIG5vZ25jaGVjawotI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vaW5jbHVkZS9hdWRpb19lbmNvZGVy
X2lzYWMuaCIgIC8vIG5vZ25jaGVjawotI2VuZGlmCi0jaWZkZWYgV0VCUlRDX0NPREVDX09QVVMK
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVy
X29wdXMuaCIKLSNlbmRpZgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9w
Y20xNmIvYXVkaW9fZW5jb2Rlcl9wY20xNmIuaCIKLSNpZmRlZiBXRUJSVENfQ09ERUNfUkVECi0j
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9hdWRpb19lbmNvZGVyX2Nv
cHlfcmVkLmgiICAvLyBub2duY2hlY2sKLSNlbmRpZgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2FjbTIvYWNtX2NvZGVjX2RhdGFiYXNlLmgiCiAKLSNpZiBkZWZpbmVkKFdFQlJUQ19D
T0RFQ19JU0FDRlgpIHx8IGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUMpCi0jaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbG9ja2VkX2JhbmR3aWR0aF9pbmZvLmgiCi0j
ZW5kaWYKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgYWNtMiB7CiAKQEAgLTU0LDcg
KzI5LDggQEAgYWJzbDo6b3B0aW9uYWw8UmVudEFDb2RlYzo6Q29kZWNJZD4gUmVudEFDb2RlYzo6
Q29kZWNJZEJ5UGFyYW1zKAogCiBhYnNsOjpvcHRpb25hbDxDb2RlY0luc3Q+IFJlbnRBQ29kZWM6
OkNvZGVjSW5zdEJ5SWQoQ29kZWNJZCBjb2RlY19pZCkgewogICBhYnNsOjpvcHRpb25hbDxpbnQ+
IG1pID0gQ29kZWNJbmRleEZyb21JZChjb2RlY19pZCk7Ci0gIHJldHVybiBtaSA/IGFic2w6Om9w
dGlvbmFsPENvZGVjSW5zdD4oRGF0YWJhc2UoKVsqbWldKSA6IGFic2w6Om51bGxvcHQ7CisgIHJl
dHVybiBtaSA/IGFic2w6Om9wdGlvbmFsPENvZGVjSW5zdD4oQUNNQ29kZWNEQjo6ZGF0YWJhc2Vf
WyptaV0pCisgICAgICAgICAgICA6IGFic2w6Om51bGxvcHQ7CiB9CiAKIGFic2w6Om9wdGlvbmFs
PFJlbnRBQ29kZWM6OkNvZGVjSWQ+IFJlbnRBQ29kZWM6OkNvZGVjSWRCeUluc3QoCkBAIC04MCwy
MCArNTYsNiBAQCBhYnNsOjpvcHRpb25hbDxDb2RlY0luc3Q+IFJlbnRBQ29kZWM6OkNvZGVjSW5z
dEJ5UGFyYW1zKAogICByZXR1cm4gY2k7CiB9CiAKLWFic2w6Om9wdGlvbmFsPGJvb2w+IFJlbnRB
Q29kZWM6OklzU3VwcG9ydGVkTnVtQ2hhbm5lbHMoQ29kZWNJZCBjb2RlY19pZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51
bV9jaGFubmVscykgewotICBhdXRvIGkgPSBDb2RlY0luZGV4RnJvbUlkKGNvZGVjX2lkKTsKLSAg
cmV0dXJuIGkgPyBhYnNsOjpvcHRpb25hbDxib29sPigKLSAgICAgICAgICAgICAgICAgQUNNQ29k
ZWNEQjo6Y29kZWNfc2V0dGluZ3NfWyppXS5jaGFubmVsX3N1cHBvcnQgPj0KLSAgICAgICAgICAg
ICAgICAgbnVtX2NoYW5uZWxzKQotICAgICAgICAgICA6IGFic2w6Om51bGxvcHQ7Ci19Ci0KLXJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IENvZGVjSW5zdD4gUmVudEFDb2RlYzo6RGF0YWJhc2UoKSB7Ci0g
IHJldHVybiBydGM6OkFycmF5Vmlldzxjb25zdCBDb2RlY0luc3Q+KEFDTUNvZGVjREI6OmRhdGFi
YXNlXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyT2ZD
b2RlY3MoKSk7Ci19Ci0KIGFic2w6Om9wdGlvbmFsPE5ldEVxRGVjb2Rlcj4gUmVudEFDb2RlYzo6
TmV0RXFEZWNvZGVyRnJvbUNvZGVjSWQoCiAgICAgQ29kZWNJZCBjb2RlY19pZCwKICAgICBzaXpl
X3QgbnVtX2NoYW5uZWxzKSB7CkBAIC0xMDYsMjAwICs2OCw1IEBAIGFic2w6Om9wdGlvbmFsPE5l
dEVxRGVjb2Rlcj4gUmVudEFDb2RlYzo6TmV0RXFEZWNvZGVyRnJvbUNvZGVjSWQoCiAgICAgICAg
ICAgICAgOiBuZWQ7CiB9CiAKLVJlbnRBQ29kZWM6OlJlZ2lzdHJhdGlvblJlc3VsdCBSZW50QUNv
ZGVjOjpSZWdpc3RlckNuZ1BheWxvYWRUeXBlKAotICAgIHN0ZDo6bWFwPGludCwgaW50PiogcHRf
bWFwLAotICAgIGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCkgewotICBpZiAoU1RSX0NBU0Vf
Q01QKGNvZGVjX2luc3QucGxuYW1lLCAiQ04iKSAhPSAwKQotICAgIHJldHVybiBSZWdpc3RyYXRp
b25SZXN1bHQ6OmtTa2lwOwotICBzd2l0Y2ggKGNvZGVjX2luc3QucGxmcmVxKSB7Ci0gICAgY2Fz
ZSA4MDAwOgotICAgIGNhc2UgMTYwMDA6Ci0gICAgY2FzZSAzMjAwMDoKLSAgICBjYXNlIDQ4MDAw
OgotICAgICAgKCpwdF9tYXApW2NvZGVjX2luc3QucGxmcmVxXSA9IGNvZGVjX2luc3QucGx0eXBl
OwotICAgICAgcmV0dXJuIFJlZ2lzdHJhdGlvblJlc3VsdDo6a09rOwotICAgIGRlZmF1bHQ6Ci0g
ICAgICByZXR1cm4gUmVnaXN0cmF0aW9uUmVzdWx0OjprQmFkRnJlcTsKLSAgfQotfQotCi1SZW50
QUNvZGVjOjpSZWdpc3RyYXRpb25SZXN1bHQgUmVudEFDb2RlYzo6UmVnaXN0ZXJSZWRQYXlsb2Fk
VHlwZSgKLSAgICBzdGQ6Om1hcDxpbnQsIGludD4qIHB0X21hcCwKLSAgICBjb25zdCBDb2RlY0lu
c3QmIGNvZGVjX2luc3QpIHsKLSAgaWYgKFNUUl9DQVNFX0NNUChjb2RlY19pbnN0LnBsbmFtZSwg
IlJFRCIpICE9IDApCi0gICAgcmV0dXJuIFJlZ2lzdHJhdGlvblJlc3VsdDo6a1NraXA7Ci0gIHN3
aXRjaCAoY29kZWNfaW5zdC5wbGZyZXEpIHsKLSAgICBjYXNlIDgwMDA6Ci0gICAgICAoKnB0X21h
cClbY29kZWNfaW5zdC5wbGZyZXFdID0gY29kZWNfaW5zdC5wbHR5cGU7Ci0gICAgICByZXR1cm4g
UmVnaXN0cmF0aW9uUmVzdWx0OjprT2s7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBSZWdp
c3RyYXRpb25SZXN1bHQ6OmtCYWRGcmVxOwotICB9Ci19Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFJl
dHVybnMgYSBuZXcgc3BlZWNoIGVuY29kZXIsIG9yIG51bGwgb24gZXJyb3IuCi0vLyBUT0RPKGt3
aWJlcmcpOiBEb24ndCBoYW5kbGUgZXJyb3JzIGhlcmUgKGJ1ZyA1MDMzKQotc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRW5jb2Rlcj4gQ3JlYXRlRW5jb2RlcigKLSAgICBjb25zdCBDb2RlY0luc3QmIHNw
ZWVjaF9pbnN0LAotICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxMb2NrZWRJc2FjQmFuZHdp
ZHRoSW5mbz4mIGJ3aW5mbykgewotI2lmIGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUNGWCkKLSAg
aWYgKFNUUl9DQVNFX0NNUChzcGVlY2hfaW5zdC5wbG5hbWUsICJpc2FjIikgPT0gMCkKLSAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4oCi0gICAgICAgIG5ldyBBdWRpb0Vu
Y29kZXJJc2FjRml4SW1wbChzcGVlY2hfaW5zdCwgYndpbmZvKSk7Ci0jZW5kaWYKLSNpZiBkZWZp
bmVkKFdFQlJUQ19DT0RFQ19JU0FDKQotICBpZiAoU1RSX0NBU0VfQ01QKHNwZWVjaF9pbnN0LnBs
bmFtZSwgImlzYWMiKSA9PSAwKQotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNv
ZGVyPigKLSAgICAgICAgbmV3IEF1ZGlvRW5jb2RlcklzYWNGbG9hdEltcGwoc3BlZWNoX2luc3Qs
IGJ3aW5mbykpOwotI2VuZGlmCi0jaWZkZWYgV0VCUlRDX0NPREVDX09QVVMKLSAgaWYgKFNUUl9D
QVNFX0NNUChzcGVlY2hfaW5zdC5wbG5hbWUsICJvcHVzIikgPT0gMCkKLSAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4obmV3IEF1ZGlvRW5jb2Rlck9wdXNJbXBsKHNwZWVj
aF9pbnN0KSk7Ci0jZW5kaWYKLSAgaWYgKFNUUl9DQVNFX0NNUChzcGVlY2hfaW5zdC5wbG5hbWUs
ICJwY211IikgPT0gMCkKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4o
bmV3IEF1ZGlvRW5jb2RlclBjbVUoc3BlZWNoX2luc3QpKTsKLSAgaWYgKFNUUl9DQVNFX0NNUChz
cGVlY2hfaW5zdC5wbG5hbWUsICJwY21hIikgPT0gMCkKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRW5jb2Rlcj4obmV3IEF1ZGlvRW5jb2RlclBjbUEoc3BlZWNoX2luc3QpKTsKLSAg
aWYgKFNUUl9DQVNFX0NNUChzcGVlY2hfaW5zdC5wbG5hbWUsICJsMTYiKSA9PSAwKQotICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPihuZXcgQXVkaW9FbmNvZGVyUGNtMTZC
KHNwZWVjaF9pbnN0KSk7Ci0jaWZkZWYgV0VCUlRDX0NPREVDX0lMQkMKLSAgaWYgKFNUUl9DQVNF
X0NNUChzcGVlY2hfaW5zdC5wbG5hbWUsICJpbGJjIikgPT0gMCkKLSAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4obmV3IEF1ZGlvRW5jb2RlcklsYmNJbXBsKHNwZWVjaF9p
bnN0KSk7Ci0jZW5kaWYKLSAgaWYgKFNUUl9DQVNFX0NNUChzcGVlY2hfaW5zdC5wbG5hbWUsICJn
NzIyIikgPT0gMCkKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4obmV3
IEF1ZGlvRW5jb2Rlckc3MjJJbXBsKHNwZWVjaF9pbnN0KSk7Ci0gIFJUQ19MT0dfRihMU19FUlJP
UikgPDwgIkNvdWxkIG5vdCBjcmVhdGUgZW5jb2RlciBvZiB0eXBlICIKLSAgICAgICAgICAgICAg
ICAgICAgICA8PCBzcGVlY2hfaW5zdC5wbG5hbWU7Ci0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9FbmNvZGVyPigpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBDcmVh
dGVSZWRFbmNvZGVyKAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29kZXIs
Ci0gICAgaW50IHJlZF9wYXlsb2FkX3R5cGUpIHsKLSNpZmRlZiBXRUJSVENfQ09ERUNfUkVECi0g
IEF1ZGlvRW5jb2RlckNvcHlSZWQ6OkNvbmZpZyBjb25maWc7Ci0gIGNvbmZpZy5wYXlsb2FkX3R5
cGUgPSByZWRfcGF5bG9hZF90eXBlOwotICBjb25maWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1v
dmUoZW5jb2Rlcik7Ci0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPigKLSAg
ICAgIG5ldyBBdWRpb0VuY29kZXJDb3B5UmVkKHN0ZDo6bW92ZShjb25maWcpKSk7Ci0jZWxzZQot
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4oKTsKLSNlbmRpZgotfQotCi1z
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBDcmVhdGVDbmdFbmNvZGVyKAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29kZXIsCi0gICAgaW50IHBheWxvYWRfdHlwZSwK
LSAgICBBQ01WQURNb2RlIHZhZF9tb2RlKSB7Ci0gIEF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnIGNv
bmZpZzsKLSAgY29uZmlnLm51bV9jaGFubmVscyA9IGVuY29kZXItPk51bUNoYW5uZWxzKCk7Ci0g
IGNvbmZpZy5wYXlsb2FkX3R5cGUgPSBwYXlsb2FkX3R5cGU7Ci0gIGNvbmZpZy5zcGVlY2hfZW5j
b2RlciA9IHN0ZDo6bW92ZShlbmNvZGVyKTsKLSAgc3dpdGNoICh2YWRfbW9kZSkgewotICAgIGNh
c2UgVkFETm9ybWFsOgotICAgICAgY29uZmlnLnZhZF9tb2RlID0gVmFkOjprVmFkTm9ybWFsOwot
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWQURMb3dCaXRyYXRlOgotICAgICAgY29uZmlnLnZhZF9t
b2RlID0gVmFkOjprVmFkTG93Qml0cmF0ZTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgVkFEQWdn
cjoKLSAgICAgIGNvbmZpZy52YWRfbW9kZSA9IFZhZDo6a1ZhZEFnZ3Jlc3NpdmU7Ci0gICAgICBi
cmVhazsKLSAgICBjYXNlIFZBRFZlcnlBZ2dyOgotICAgICAgY29uZmlnLnZhZF9tb2RlID0gVmFk
OjprVmFkVmVyeUFnZ3Jlc3NpdmU7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
UlRDX0ZBVEFMKCk7Ci0gIH0KLSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+
KG5ldyBBdWRpb0VuY29kZXJDbmcoc3RkOjptb3ZlKGNvbmZpZykpKTsKLX0KLQotc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvRGVjb2Rlcj4gQ3JlYXRlSXNhY0RlY29kZXIoCi0gICAgaW50IHNhbXBsZV9y
YXRlX2h6LAotICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxMb2NrZWRJc2FjQmFuZHdpZHRo
SW5mbz4mIGJ3aW5mbykgewotI2lmIGRlZmluZWQoV0VCUlRDX0NPREVDX0lTQUNGWCkKLSAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RlY29kZXI+KAotICAgICAgbmV3IEF1ZGlvRGVjb2Rl
cklzYWNGaXhJbXBsKHNhbXBsZV9yYXRlX2h6LCBid2luZm8pKTsKLSNlbGlmIGRlZmluZWQoV0VC
UlRDX0NPREVDX0lTQUMpCi0gIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPigK
LSAgICAgIG5ldyBBdWRpb0RlY29kZXJJc2FjRmxvYXRJbXBsKHNhbXBsZV9yYXRlX2h6LCBid2lu
Zm8pKTsKLSNlbHNlCi0gIFJUQ19GQVRBTCgpIDw8ICJpU0FDIGlzIG5vdCBzdXBwb3J0ZWQuIjsK
LSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RlY29kZXI+KCk7Ci0jZW5kaWYKLX0KLQot
fSAgLy8gbmFtZXNwYWNlCi0KLVJlbnRBQ29kZWM6OlJlbnRBQ29kZWMoKSB7Ci0jaWYgZGVmaW5l
ZChXRUJSVENfQ09ERUNfSVNBQ0ZYKSB8fCBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FDKQotICBp
c2FjX2JhbmR3aWR0aF9pbmZvXyA9IG5ldyBMb2NrZWRJc2FjQmFuZHdpZHRoSW5mbzsKLSNlbmRp
ZgotfQotUmVudEFDb2RlYzo6flJlbnRBQ29kZWMoKSA9IGRlZmF1bHQ7Ci0KLXN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0VuY29kZXI+IFJlbnRBQ29kZWM6OlJlbnRFbmNvZGVyKAotICAgIGNvbnN0IENv
ZGVjSW5zdCYgY29kZWNfaW5zdCkgewotICByZXR1cm4gQ3JlYXRlRW5jb2Rlcihjb2RlY19pbnN0
LCBpc2FjX2JhbmR3aWR0aF9pbmZvXyk7Ci19Ci0KLVJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVy
czo6U3RhY2tQYXJhbWV0ZXJzKCkgewotICAvLyBSZWdpc3RlciB0aGUgZGVmYXVsdCBwYXlsb2Fk
IHR5cGVzIGZvciBSRUQgYW5kIENORy4KLSAgZm9yIChjb25zdCBDb2RlY0luc3QmIGNpIDogUmVu
dEFDb2RlYzo6RGF0YWJhc2UoKSkgewotICAgIFJlbnRBQ29kZWM6OlJlZ2lzdGVyQ25nUGF5bG9h
ZFR5cGUoJmNuZ19wYXlsb2FkX3R5cGVzLCBjaSk7Ci0gICAgUmVudEFDb2RlYzo6UmVnaXN0ZXJS
ZWRQYXlsb2FkVHlwZSgmcmVkX3BheWxvYWRfdHlwZXMsIGNpKTsKLSAgfQotfQotCi1SZW50QUNv
ZGVjOjpTdGFja1BhcmFtZXRlcnM6On5TdGFja1BhcmFtZXRlcnMoKSA9IGRlZmF1bHQ7Ci0KLXN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IFJlbnRBQ29kZWM6OlJlbnRFbmNvZGVyU3RhY2so
Ci0gICAgU3RhY2tQYXJhbWV0ZXJzKiBwYXJhbSkgewotICBpZiAoIXBhcmFtLT5zcGVlY2hfZW5j
b2RlcikKLSAgICByZXR1cm4gbnVsbHB0cjsKLQotICBpZiAocGFyYW0tPnVzZV9jb2RlY19mZWMp
IHsKLSAgICAvLyBTd2l0Y2ggRkVDIG9uLiBPbiBmYWlsdXJlLCByZW1lbWJlciB0aGF0IEZFQyBp
cyBvZmYuCi0gICAgaWYgKCFwYXJhbS0+c3BlZWNoX2VuY29kZXItPlNldEZlYyh0cnVlKSkKLSAg
ICAgIHBhcmFtLT51c2VfY29kZWNfZmVjID0gZmFsc2U7Ci0gIH0gZWxzZSB7Ci0gICAgLy8gU3dp
dGNoIEZFQyBvZmYuIFRoaXMgc2hvdWxkbid0IGZhaWwuCi0gICAgY29uc3QgYm9vbCBzdWNjZXNz
ID0gcGFyYW0tPnNwZWVjaF9lbmNvZGVyLT5TZXRGZWMoZmFsc2UpOwotICAgIFJUQ19EQ0hFQ0so
c3VjY2Vzcyk7Ci0gIH0KLQotICBhdXRvIHB0ID0gWyZwYXJhbV0oY29uc3Qgc3RkOjptYXA8aW50
LCBpbnQ+JiBtKSB7Ci0gICAgYXV0byBpdCA9IG0uZmluZChwYXJhbS0+c3BlZWNoX2VuY29kZXIt
PlNhbXBsZVJhdGVIeigpKTsKLSAgICByZXR1cm4gaXQgPT0gbS5lbmQoKSA/IGFic2w6Om51bGxv
cHQgOiBhYnNsOjpvcHRpb25hbDxpbnQ+KGl0LT5zZWNvbmQpOwotICB9OwotICBhdXRvIGNuZ19w
dCA9IHB0KHBhcmFtLT5jbmdfcGF5bG9hZF90eXBlcyk7Ci0gIHBhcmFtLT51c2VfY25nID0KLSAg
ICAgIHBhcmFtLT51c2VfY25nICYmIGNuZ19wdCAmJiBwYXJhbS0+c3BlZWNoX2VuY29kZXItPk51
bUNoYW5uZWxzKCkgPT0gMTsKLSAgYXV0byByZWRfcHQgPSBwdChwYXJhbS0+cmVkX3BheWxvYWRf
dHlwZXMpOwotICBwYXJhbS0+dXNlX3JlZCA9IHBhcmFtLT51c2VfcmVkICYmIHJlZF9wdDsKLQot
ICBpZiAocGFyYW0tPnVzZV9jbmcgfHwgcGFyYW0tPnVzZV9yZWQpIHsKLSAgICAvLyBUaGUgUkVE
IGFuZCBDTkcgZW5jb2RlcnMgbmVlZCB0byBiZSBpbiBzeW5jIHdpdGggdGhlIHNwZWVjaCBlbmNv
ZGVyLCBzbwotICAgIC8vIHJlc2V0IHRoZSBsYXR0ZXIgdG8gZW5zdXJlIGl0cyBidWZmZXIgaXMg
ZW1wdHkuCi0gICAgcGFyYW0tPnNwZWVjaF9lbmNvZGVyLT5SZXNldCgpOwotICB9Ci0gIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IGVuY29kZXJfc3RhY2sgPQotICAgICAgc3RkOjptb3Zl
KHBhcmFtLT5zcGVlY2hfZW5jb2Rlcik7Ci0gIGlmIChwYXJhbS0+dXNlX3JlZCkgewotICAgIGVu
Y29kZXJfc3RhY2sgPSBDcmVhdGVSZWRFbmNvZGVyKHN0ZDo6bW92ZShlbmNvZGVyX3N0YWNrKSwg
KnJlZF9wdCk7Ci0gIH0KLSAgaWYgKHBhcmFtLT51c2VfY25nKSB7Ci0gICAgZW5jb2Rlcl9zdGFj
ayA9Ci0gICAgICAgIENyZWF0ZUNuZ0VuY29kZXIoc3RkOjptb3ZlKGVuY29kZXJfc3RhY2spLCAq
Y25nX3B0LCBwYXJhbS0+dmFkX21vZGUpOwotICB9Ci0gIHJldHVybiBlbmNvZGVyX3N0YWNrOwot
fQotCi1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZWNvZGVyPiBSZW50QUNvZGVjOjpSZW50SXNhY0Rl
Y29kZXIoaW50IHNhbXBsZV9yYXRlX2h6KSB7Ci0gIHJldHVybiBDcmVhdGVJc2FjRGVjb2Rlcihz
YW1wbGVfcmF0ZV9oeiwgaXNhY19iYW5kd2lkdGhfaW5mb18pOwotfQotCiB9ICAvLyBuYW1lc3Bh
Y2UgYWNtMgogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9y
ZW50X2FfY29kZWMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmgKaW5kZXggYjBhZDM4MmQ4
YTliMjQzZDJjY2ViN2FhMDEzYzUwZjAyNTAxMGI1MS4uMmNmMWM2ZTE4YzllNmY4YjA2MGMwNTQw
OGM2MjVlNDNkYTJkODYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5oCkBAIC0zMSw4ICszMSw3IEBAIGNsYXNzIExv
Y2tlZElzYWNCYW5kd2lkdGhJbmZvOwogCiBuYW1lc3BhY2UgYWNtMiB7CiAKLWNsYXNzIFJlbnRB
Q29kZWMgewotIHB1YmxpYzoKK3N0cnVjdCBSZW50QUNvZGVjIHsKICAgZW51bSBjbGFzcyBDb2Rl
Y0lkIHsKICNpZiBkZWZpbmVkKFdFQlJUQ19DT0RFQ19JU0FDKSB8fCBkZWZpbmVkKFdFQlJUQ19D
T0RFQ19JU0FDRlgpCiAgICAga0lTQUMsCkBAIC0xMzMsNjQgKzEzMiw5IEBAIGNsYXNzIFJlbnRB
Q29kZWMgewogICAgIHJldHVybiBwYXlsb2FkX3R5cGUgPj0gMCAmJiBwYXlsb2FkX3R5cGUgPD0g
MTI3OwogICB9CiAKLSAgc3RhdGljIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IENvZGVjSW5zdD4gRGF0
YWJhc2UoKTsKLQotICBzdGF0aWMgYWJzbDo6b3B0aW9uYWw8Ym9vbD4gSXNTdXBwb3J0ZWROdW1D
aGFubmVscyhDb2RlY0lkIGNvZGVjX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2NoYW5uZWxzKTsKLQogICBzdGF0aWMg
YWJzbDo6b3B0aW9uYWw8TmV0RXFEZWNvZGVyPiBOZXRFcURlY29kZXJGcm9tQ29kZWNJZCgKICAg
ICAgIENvZGVjSWQgY29kZWNfaWQsCiAgICAgICBzaXplX3QgbnVtX2NoYW5uZWxzKTsKLQotICAv
LyBQYXJzZSBjb2RlY19pbnN0IGFuZCBleHRyYWN0IHBheWxvYWQgdHlwZXMuIElmIHRoZSBnaXZl
biBDb2RlY0luc3Qgd2FzIGZvcgotICAvLyB0aGUgd3Jvbmcgc29ydCBvZiBjb2RlYywgcmV0dXJu
IGtTa2lwOyBvdGhlcndpc2UsIGlmIHRoZSByYXRlIHdhcyBpbGxlZ2FsLAotICAvLyByZXR1cm4g
a0JhZEZyZXE7IG90aGVyd2lzZSwgdXBkYXRlIHRoZSBnaXZlbiBSVFAgdGltZXN0YW1wIHJhdGUg
KEh6KSAtPgotICAvLyBwYXlsb2FkIHR5cGUgbWFwIGFuZCByZXR1cm4ga09rLgotICBlbnVtIGNs
YXNzIFJlZ2lzdHJhdGlvblJlc3VsdCB7IGtPaywga1NraXAsIGtCYWRGcmVxIH07Ci0gIHN0YXRp
YyBSZWdpc3RyYXRpb25SZXN1bHQgUmVnaXN0ZXJDbmdQYXlsb2FkVHlwZShzdGQ6Om1hcDxpbnQs
IGludD4qIHB0X21hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCk7Ci0gIHN0YXRpYyBSZWdpc3Ry
YXRpb25SZXN1bHQgUmVnaXN0ZXJSZWRQYXlsb2FkVHlwZShzdGQ6Om1hcDxpbnQsIGludD4qIHB0
X21hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCk7Ci0KLSAgUmVudEFDb2RlYygpOwotICB+UmVu
dEFDb2RlYygpOwotCi0gIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYW4gYXVkaW8gZW5jb2RlciBi
dWlsdCB0byB0aGUgZ2l2ZW4gc3BlY2lmaWNhdGlvbi4KLSAgLy8gUmV0dXJucyBudWxsIGluIGNh
c2Ugb2YgZXJyb3IuCi0gIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IFJlbnRFbmNvZGVy
KGNvbnN0IENvZGVjSW5zdCYgY29kZWNfaW5zdCk7Ci0KLSAgc3RydWN0IFN0YWNrUGFyYW1ldGVy
cyB7Ci0gICAgU3RhY2tQYXJhbWV0ZXJzKCk7Ci0gICAgflN0YWNrUGFyYW1ldGVycygpOwotCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gc3BlZWNoX2VuY29kZXI7Ci0KLSAgICBi
b29sIHVzZV9jb2RlY19mZWMgPSBmYWxzZTsKLSAgICBib29sIHVzZV9yZWQgPSBmYWxzZTsKLSAg
ICBib29sIHVzZV9jbmcgPSBmYWxzZTsKLSAgICBBQ01WQURNb2RlIHZhZF9tb2RlID0gVkFETm9y
bWFsOwotCi0gICAgLy8gTWFwcyBmcm9tIFJUUCB0aW1lc3RhbXAgcmF0ZSAoaW4gSHopIHRvIHBh
eWxvYWQgdHlwZS4KLSAgICBzdGQ6Om1hcDxpbnQsIGludD4gY25nX3BheWxvYWRfdHlwZXM7Ci0g
ICAgc3RkOjptYXA8aW50LCBpbnQ+IHJlZF9wYXlsb2FkX3R5cGVzOwotICB9OwotCi0gIC8vIENy
ZWF0ZXMgYW5kIHJldHVybnMgYW4gYXVkaW8gZW5jb2RlciBzdGFjayBjb25zdHJ1Y3RlZCB0byB0
aGUgZ2l2ZW4KLSAgLy8gc3BlY2lmaWNhdGlvbi4gSWYgdGhlIHNwZWNpZmljYXRpb24gaXNuJ3Qg
Y29tcGF0aWJsZSB3aXRoIHRoZSBlbmNvZGVyLCBpdAotICAvLyB3aWxsIGJlIGNoYW5nZWQgdG8g
bWF0Y2ggKHRoaW5ncyB3aWxsIGJlIHN3aXRjaGVkIG9mZikuIFRoZSBzcGVlY2ggZW5jb2Rlcgot
ICAvLyB3aWxsIGJlIHN0b2xlbi4gSWYgdGhlIHNwZWNpZmljYXRpb24gaXNuJ3QgY29tcGxldGUs
IHJldHVybnMgbnVsbHB0ci4KLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gUmVudEVu
Y29kZXJTdGFjayhTdGFja1BhcmFtZXRlcnMqIHBhcmFtKTsKLQotICAvLyBDcmVhdGVzIGFuZCBy
ZXR1cm5zIGFuIGlTQUMgZGVjb2Rlci4KLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVjb2Rlcj4g
UmVudElzYWNEZWNvZGVyKGludCBzYW1wbGVfcmF0ZV9oeik7Ci0KLSBwcml2YXRlOgotICBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBzcGVlY2hfZW5jb2Rlcl87Ci0gIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0VuY29kZXI+IGNuZ19lbmNvZGVyXzsKLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
RW5jb2Rlcj4gcmVkX2VuY29kZXJfOwotICBydGM6OnNjb3BlZF9yZWZwdHI8TG9ja2VkSXNhY0Jh
bmR3aWR0aEluZm8+IGlzYWNfYmFuZHdpZHRoX2luZm9fOwotCi0gIFJUQ19ESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oUmVudEFDb2RlYyk7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgYWNtMgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWNfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20y
L3JlbnRfYV9jb2RlY191bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZmQzMzI5Y2ZiMTEzNTljZjVkMjdjMzQxN2ExOTk4M2NhODE2ZGI1ZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlY191
bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIyOCArMCwwIEBACi0vKgotICogIENvcHly
aWdodCAoYykgMjAxNSBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2FjbTIvcmVudF9hX2NvZGVjLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC5oIgot
I2luY2x1ZGUgInRlc3QvbW9ja19hdWRpb19lbmNvZGVyLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMg
ewotbmFtZXNwYWNlIGFjbTIgewotCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLQotbmFtZXNw
YWNlIHsKLQotY29uc3QgaW50IGtEYXRhTGVuZ3RoU2FtcGxlcyA9IDgwOwotY29uc3QgaW50IGtQ
YWNrZXRTaXplU2FtcGxlcyA9IDIgKiBrRGF0YUxlbmd0aFNhbXBsZXM7Ci1jb25zdCBpbnQxNl90
IGtaZXJvRGF0YVtrRGF0YUxlbmd0aFNhbXBsZXNdID0gezB9OwotY29uc3QgQ29kZWNJbnN0IGtE
ZWZhdWx0Q29kZWNJbnN0ID0gezAsICJwY211IiwgODAwMCwga1BhY2tldFNpemVTYW1wbGVzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDY0MDAwfTsKLWNvbnN0IGlu
dCBrQ25nUHQgPSAxMzsKLQotY2xhc3MgTWFya2VyIGZpbmFsIHsKLSBwdWJsaWM6Ci0gIE1PQ0tf
TUVUSE9EMShNYXJrLCB2b2lkKHN0ZDo6c3RyaW5nIGRlc2MpKTsKLX07Ci0KLX0gIC8vIG5hbWVz
cGFjZQotCi1jbGFzcyBSZW50QUNvZGVjVGVzdEYgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsK
LSBwcm90ZWN0ZWQ6Ci0gIHZvaWQgQ3JlYXRlQ29kZWMoKSB7Ci0gICAgYXV0byBzcGVlY2hfZW5j
b2RlciA9IHJlbnRfYV9jb2RlY18uUmVudEVuY29kZXIoa0RlZmF1bHRDb2RlY0luc3QpOwotICAg
IEFTU0VSVF9UUlVFKHNwZWVjaF9lbmNvZGVyKTsKLSAgICBSZW50QUNvZGVjOjpTdGFja1BhcmFt
ZXRlcnMgcGFyYW07Ci0gICAgcGFyYW0udXNlX2NuZyA9IHRydWU7Ci0gICAgcGFyYW0uc3BlZWNo
X2VuY29kZXIgPSBzdGQ6Om1vdmUoc3BlZWNoX2VuY29kZXIpOwotICAgIGVuY29kZXJfID0gcmVu
dF9hX2NvZGVjXy5SZW50RW5jb2RlclN0YWNrKCZwYXJhbSk7Ci0gIH0KLQotICB2b2lkIEVuY29k
ZUFuZFZlcmlmeShzaXplX3QgZXhwZWN0ZWRfb3V0X2xlbmd0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgZXhwZWN0ZWRfdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgZXhwZWN0ZWRfcGF5bG9hZF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQg
ZXhwZWN0ZWRfc2VuZF9ldmVuX2lmX2VtcHR5KSB7Ci0gICAgcnRjOjpCdWZmZXIgb3V0OwotICAg
IEF1ZGlvRW5jb2Rlcjo6RW5jb2RlZEluZm8gZW5jb2RlZF9pbmZvOwotICAgIGVuY29kZWRfaW5m
byA9IGVuY29kZXJfLT5FbmNvZGUodGltZXN0YW1wXywga1plcm9EYXRhLCAmb3V0KTsKLSAgICB0
aW1lc3RhbXBfICs9IGtEYXRhTGVuZ3RoU2FtcGxlczsKLSAgICBFWFBFQ1RfVFJVRShlbmNvZGVk
X2luZm8ucmVkdW5kYW50LmVtcHR5KCkpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZF9vdXRfbGVu
Z3RoLCBlbmNvZGVkX2luZm8uZW5jb2RlZF9ieXRlcyk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVk
X3RpbWVzdGFtcCwgZW5jb2RlZF9pbmZvLmVuY29kZWRfdGltZXN0YW1wKTsKLSAgICBpZiAoZXhw
ZWN0ZWRfcGF5bG9hZF90eXBlID49IDApCi0gICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGF5bG9h
ZF90eXBlLCBlbmNvZGVkX2luZm8ucGF5bG9hZF90eXBlKTsKLSAgICBpZiAoZXhwZWN0ZWRfc2Vu
ZF9ldmVuX2lmX2VtcHR5ID49IDApCi0gICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Ym9vbD4o
ZXhwZWN0ZWRfc2VuZF9ldmVuX2lmX2VtcHR5KSwKLSAgICAgICAgICAgICAgICBlbmNvZGVkX2lu
Zm8uc2VuZF9ldmVuX2lmX2VtcHR5KTsKLSAgfQotCi0gIFJlbnRBQ29kZWMgcmVudF9hX2NvZGVj
XzsKLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gZW5jb2Rlcl87Ci0gIHVpbnQzMl90
IHRpbWVzdGFtcF8gPSAwOwotfTsKLQotLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgQ05HIGZy
YW1lcyBhcmUgZGVsaXZlcmVkIGFzIGV4cGVjdGVkLiBTaW5jZSB0aGUgZnJhbWUKLS8vIHNpemUg
aXMgc2V0IHRvIDIwIG1zLCB3ZSBleHBlY3QgdGhlIGZpcnN0IGVuY29kZSBjYWxsIHRvIHByb2R1
Y2Ugbm8gb3V0cHV0Ci0vLyAod2hpY2ggaXMgc2lnbmFsZWQgYXMgMCBieXRlcyBvdXRwdXQgb2Yg
dHlwZSBrTm9FbmNvZGluZykuIFRoZSBuZXh0IGVuY29kZQotLy8gY2FsbCBzaG91bGQgcHJvZHVj
ZSBvbmUgU0lEIGZyYW1lIG9mIDkgYnl0ZXMuIFRoZSB0aGlyZCBjYWxsIHNob3VsZCBub3QKLS8v
IHJlc3VsdCBpbiBhbnkgb3V0cHV0IChqdXN0IGxpa2UgdGhlIGZpcnN0IG9uZSkuIFRoZSBmb3Vy
dGggYW5kIGZpbmFsIGVuY29kZQotLy8gY2FsbCBzaG91bGQgcHJvZHVjZSBhbiAiZW1wdHkgZnJh
bWUiLCB3aGljaCBpcyBsaWtlIG5vIG91dHB1dCwgYnV0IHdpdGgKLS8vIEF1ZGlvRW5jb2Rlcjo6
RW5jb2RlZEluZm86OnNlbmRfZXZlbl9pZl9lbXB0eSBzZXQgdG8gdHJ1ZS4gKFRoZSByZWFzb24g
dG8KLS8vIHByb2R1Y2UgYW4gZW1wdHkgZnJhbWUgaXMgdG8gZHJpdmUgc2VuZGluZyBvZiBEVE1G
IHBhY2tldHMgaW4gdGhlIFJUUC9SVENQCi0vLyBtb2R1bGUuKQotVEVTVF9GKFJlbnRBQ29kZWNU
ZXN0RiwgVmVyaWZ5Q25nRnJhbWVzKSB7Ci0gIENyZWF0ZUNvZGVjKCk7Ci0gIHVpbnQzMl90IGV4
cGVjdGVkX3RpbWVzdGFtcCA9IHRpbWVzdGFtcF87Ci0gIC8vIFZlcmlmeSBubyBmcmFtZS4KLSAg
ewotICAgIFNDT1BFRF9UUkFDRSgiRmlyc3QgZW5jb2RpbmciKTsKLSAgICBFbmNvZGVBbmRWZXJp
ZnkoMCwgZXhwZWN0ZWRfdGltZXN0YW1wLCAtMSwgLTEpOwotICB9Ci0KLSAgLy8gVmVyaWZ5IFNJ
RCBmcmFtZSBkZWxpdmVyZWQuCi0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIlNlY29uZCBlbmNvZGlu
ZyIpOwotICAgIEVuY29kZUFuZFZlcmlmeSg5LCBleHBlY3RlZF90aW1lc3RhbXAsIGtDbmdQdCwg
MSk7Ci0gIH0KLQotICAvLyBWZXJpZnkgbm8gZnJhbWUuCi0gIHsKLSAgICBTQ09QRURfVFJBQ0Uo
IlRoaXJkIGVuY29kaW5nIik7Ci0gICAgRW5jb2RlQW5kVmVyaWZ5KDAsIGV4cGVjdGVkX3RpbWVz
dGFtcCwgLTEsIC0xKTsKLSAgfQotCi0gIC8vIFZlcmlmeSBOb0VuY29kaW5nLgotICBleHBlY3Rl
ZF90aW1lc3RhbXAgKz0gMiAqIGtEYXRhTGVuZ3RoU2FtcGxlczsKLSAgewotICAgIFNDT1BFRF9U
UkFDRSgiRm91cnRoIGVuY29kaW5nIik7Ci0gICAgRW5jb2RlQW5kVmVyaWZ5KDAsIGV4cGVjdGVk
X3RpbWVzdGFtcCwga0NuZ1B0LCAxKTsKLSAgfQotfQotCi1URVNUKFJlbnRBQ29kZWNUZXN0LCBF
eHRlcm5hbEVuY29kZXIpIHsKLSAgY29uc3QgaW50IGtTYW1wbGVSYXRlSHogPSA4MDAwOwotICBh
dXRvKiBleHRlcm5hbF9lbmNvZGVyID0gbmV3IE1vY2tBdWRpb0VuY29kZXI7Ci0gIEVYUEVDVF9D
QUxMKCpleHRlcm5hbF9lbmNvZGVyLCBTYW1wbGVSYXRlSHooKSkKLSAgICAgIC5XaWxsUmVwZWF0
ZWRseShSZXR1cm4oa1NhbXBsZVJhdGVIeikpOwotICBFWFBFQ1RfQ0FMTCgqZXh0ZXJuYWxfZW5j
b2RlciwgTnVtQ2hhbm5lbHMoKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDEpKTsKLSAgRVhQRUNU
X0NBTEwoKmV4dGVybmFsX2VuY29kZXIsIFNldEZlYyhmYWxzZSkpLldpbGxSZXBlYXRlZGx5KFJl
dHVybih0cnVlKSk7Ci0KLSAgUmVudEFDb2RlYyByYWM7Ci0gIFJlbnRBQ29kZWM6OlN0YWNrUGFy
YW1ldGVycyBwYXJhbTsKLSAgcGFyYW0uc3BlZWNoX2VuY29kZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9FbmNvZGVyPihleHRlcm5hbF9lbmNvZGVyKTsKLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
RW5jb2Rlcj4gZW5jb2Rlcl9zdGFjayA9IHJhYy5SZW50RW5jb2RlclN0YWNrKCZwYXJhbSk7Ci0g
IEVYUEVDVF9FUShleHRlcm5hbF9lbmNvZGVyLCBlbmNvZGVyX3N0YWNrLmdldCgpKTsKLSAgY29u
c3QgaW50IGtQYWNrZXRTaXplU2FtcGxlcyA9IGtTYW1wbGVSYXRlSHogLyAxMDA7Ci0gIGludDE2
X3QgYXVkaW9ba1BhY2tldFNpemVTYW1wbGVzXSA9IHswfTsKLSAgcnRjOjpCdWZmZXIgZW5jb2Rl
ZDsKLSAgQXVkaW9FbmNvZGVyOjpFbmNvZGVkSW5mbyBpbmZvOwotCi0gIE1hcmtlciBtYXJrZXI7
Ci0gIHsKLSAgICA6OnRlc3Rpbmc6OkluU2VxdWVuY2UgczsKLSAgICBpbmZvLmVuY29kZWRfdGlt
ZXN0YW1wID0gMDsKLSAgICBFWFBFQ1RfQ0FMTCgqZXh0ZXJuYWxfZW5jb2RlciwKLSAgICAgICAg
ICAgICAgICBFbmNvZGVJbXBsKDAsIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGludDE2X3Q+KGF1ZGlv
KSwgJmVuY29kZWQpKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKGluZm8pKTsKLSAgICBFWFBF
Q1RfQ0FMTChtYXJrZXIsIE1hcmsoIkEiKSk7Ci0gICAgRVhQRUNUX0NBTEwobWFya2VyLCBNYXJr
KCJCIikpOwotICAgIEVYUEVDVF9DQUxMKG1hcmtlciwgTWFyaygiQyIpKTsKLSAgfQotCi0gIGlu
Zm8gPSBlbmNvZGVyX3N0YWNrLT5FbmNvZGUoMCwgYXVkaW8sICZlbmNvZGVkKTsKLSAgRVhQRUNU
X0VRKDB1LCBpbmZvLmVuY29kZWRfdGltZXN0YW1wKTsKLSAgbWFya2VyLk1hcmsoIkEiKTsKLQot
ICAvLyBDaGFuZ2UgdG8gaW50ZXJuYWwgZW5jb2Rlci4KLSAgQ29kZWNJbnN0IGNvZGVjX2luc3Qg
PSBrRGVmYXVsdENvZGVjSW5zdDsKLSAgY29kZWNfaW5zdC5wYWNzaXplID0ga1BhY2tldFNpemVT
YW1wbGVzOwotICBwYXJhbS5zcGVlY2hfZW5jb2RlciA9IHJhYy5SZW50RW5jb2Rlcihjb2RlY19p
bnN0KTsKLSAgQVNTRVJUX1RSVUUocGFyYW0uc3BlZWNoX2VuY29kZXIpOwotICBBdWRpb0VuY29k
ZXIqIGVuYyA9IHBhcmFtLnNwZWVjaF9lbmNvZGVyLmdldCgpOwotICBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9FbmNvZGVyPiBzdGFjayA9IHJhYy5SZW50RW5jb2RlclN0YWNrKCZwYXJhbSk7Ci0gIEVY
UEVDVF9FUShlbmMsIHN0YWNrLmdldCgpKTsKLQotICAvLyBEb24ndCBleHBlY3QgYW55IG1vcmUg
Y2FsbHMgdG8gdGhlIGV4dGVybmFsIGVuY29kZXIuCi0gIGluZm8gPSBzdGFjay0+RW5jb2RlKDEs
IGF1ZGlvLCAmZW5jb2RlZCk7Ci0gIG1hcmtlci5NYXJrKCJCIik7Ci0gIGVuY29kZXJfc3RhY2su
cmVzZXQoKTsKLSAgbWFya2VyLk1hcmsoIkMiKTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgdGhlIHNw
ZWVjaCBlbmNvZGVyJ3MgUmVzZXQgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIENORyBvciBSRUQKLS8v
IChvciBib3RoKSBhcmUgc3dpdGNoZWQgb24sIGJ1dCBub3Qgd2hlbiB0aGV5J3JlIHN3aXRjaGVk
IG9mZi4KLXZvaWQgVGVzdENuZ0FuZFJlZFJlc2V0U3BlZWNoRW5jb2Rlcihib29sIHVzZV9jbmcs
IGJvb2wgdXNlX3JlZCkgewotICBhdXRvIG1ha2VfZW5jID0gW10gewotICAgIGF1dG8gc3BlZWNo
X2VuY29kZXIgPQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0F1ZGlvRW5jb2Rlcj4obmV3
IE1vY2tBdWRpb0VuY29kZXIpOwotICAgIEVYUEVDVF9DQUxMKCpzcGVlY2hfZW5jb2RlciwgTnVt
Q2hhbm5lbHMoKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDEpKTsKLSAgICBFWFBFQ1RfQ0FMTCgq
c3BlZWNoX2VuY29kZXIsIE1heDEwTXNGcmFtZXNJbkFQYWNrZXQoKSkKLSAgICAgICAgLldpbGxS
ZXBlYXRlZGx5KFJldHVybigyKSk7Ci0gICAgRVhQRUNUX0NBTEwoKnNwZWVjaF9lbmNvZGVyLCBT
YW1wbGVSYXRlSHooKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDgwMDApKTsKLSAgICBFWFBFQ1Rf
Q0FMTCgqc3BlZWNoX2VuY29kZXIsIFNldEZlYyhmYWxzZSkpLldpbGxSZXBlYXRlZGx5KFJldHVy
bih0cnVlKSk7Ci0gICAgcmV0dXJuIHNwZWVjaF9lbmNvZGVyOwotICB9OwotICBhdXRvIHNwZWVj
aF9lbmNvZGVyMSA9IG1ha2VfZW5jKCk7Ci0gIGF1dG8gc3BlZWNoX2VuY29kZXIyID0gbWFrZV9l
bmMoKTsKLSAgTWFya2VyIG1hcmtlcjsKLSAgewotICAgIDo6dGVzdGluZzo6SW5TZXF1ZW5jZSBz
OwotICAgIEVYUEVDVF9DQUxMKG1hcmtlciwgTWFyaygiZGlzYWJsZWQiKSk7Ci0gICAgRVhQRUNU
X0NBTEwobWFya2VyLCBNYXJrKCJlbmFibGVkIikpOwotICAgIGlmICh1c2VfY25nIHx8IHVzZV9y
ZWQpCi0gICAgICBFWFBFQ1RfQ0FMTCgqc3BlZWNoX2VuY29kZXIyLCBSZXNldCgpKTsKLSAgfQot
Ci0gIFJlbnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVycyBwYXJhbTEsIHBhcmFtMjsKLSAgcGFyYW0x
LnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKHNwZWVjaF9lbmNvZGVyMSk7Ci0gIHBhcmFtMi5z
cGVlY2hfZW5jb2RlciA9IHN0ZDo6bW92ZShzcGVlY2hfZW5jb2RlcjIpOwotICBwYXJhbTIudXNl
X2NuZyA9IHVzZV9jbmc7Ci0gIHBhcmFtMi51c2VfcmVkID0gdXNlX3JlZDsKLSAgbWFya2VyLk1h
cmsoImRpc2FibGVkIik7Ci0gIFJlbnRBQ29kZWMgcmFjOwotICByYWMuUmVudEVuY29kZXJTdGFj
aygmcGFyYW0xKTsKLSAgbWFya2VyLk1hcmsoImVuYWJsZWQiKTsKLSAgcmFjLlJlbnRFbmNvZGVy
U3RhY2soJnBhcmFtMik7Ci19Ci0KLVRFU1QoUmVudEFDb2RlY1Rlc3QsIENuZ1Jlc2V0c1NwZWVj
aEVuY29kZXIpIHsKLSAgVGVzdENuZ0FuZFJlZFJlc2V0U3BlZWNoRW5jb2Rlcih0cnVlLCBmYWxz
ZSk7Ci19Ci0KLVRFU1QoUmVudEFDb2RlY1Rlc3QsIFJlZFJlc2V0c1NwZWVjaEVuY29kZXIpIHsK
LSAgVGVzdENuZ0FuZFJlZFJlc2V0U3BlZWNoRW5jb2RlcihmYWxzZSwgdHJ1ZSk7Ci19Ci0KLVRF
U1QoUmVudEFDb2RlY1Rlc3QsIENuZ0FuZFJlZFJlc2V0c1NwZWVjaEVuY29kZXIpIHsKLSAgVGVz
dENuZ0FuZFJlZFJlc2V0U3BlZWNoRW5jb2Rlcih0cnVlLCB0cnVlKTsKLX0KLQotVEVTVChSZW50
QUNvZGVjVGVzdCwgTm9DbmdBbmRSZWROb1NwZWVjaEVuY29kZXJSZXNldCkgewotICBUZXN0Q25n
QW5kUmVkUmVzZXRTcGVlY2hFbmNvZGVyKGZhbHNlLCBmYWxzZSk7Ci19Ci0KLVRFU1QoUmVudEFD
b2RlY1Rlc3QsIFJlbnRFbmNvZGVyRXJyb3IpIHsKLSAgY29uc3QgQ29kZWNJbnN0IGNvZGVjX2lu
c3QgPSB7Ci0gICAgICAwLCAiUm9iZXJ0Jyk7IERST1AgVEFCTEUgU3R1ZGVudHM7IiwgODAwMCwg
MTYwLCAxLCA2NDAwMH07Ci0gIFJlbnRBQ29kZWMgcmVudF9hX2NvZGVjOwotICBFWFBFQ1RfRkFM
U0UocmVudF9hX2NvZGVjLlJlbnRFbmNvZGVyKGNvZGVjX2luc3QpKTsKLX0KLQotVEVTVChSZW50
QUNvZGVjVGVzdCwgUmVudEVuY29kZXJTdGFja1dpdGhvdXRTcGVlY2hFbmNvZGVyKSB7Ci0gIFJl
bnRBQ29kZWM6OlN0YWNrUGFyYW1ldGVycyBzcDsKLSAgRVhQRUNUX0VRKG51bGxwdHIsIHNwLnNw
ZWVjaF9lbmNvZGVyKTsKLSAgRVhQRUNUX0VRKG51bGxwdHIsIFJlbnRBQ29kZWMoKS5SZW50RW5j
b2RlclN0YWNrKCZzcCkpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgYWNtMgotfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlv
X25ldHdvcmtfYWRhcHRvcl9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1
ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsLmNjCmluZGV4IGM0ODMyYTM2ZGU0YTU1N2U1NzdlNmU1
ZDczNDc2MDYwNTk4Mjg4ZWMuLjllNDdhMDZmN2NhYzljM2JkZmFmZTU0OWYxMTRjMzY5N2ZlMzIz
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3Jr
X2FkYXB0b3JfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9f
bmV0d29ya19hZGFwdG9yX2ltcGwuY2MKQEAgLTEwLDkgKzEwLDE0IEBACiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19h
ZGFwdG9yX2ltcGwuaCIKIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHV0aWxpdHk+
CisjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9jb250cm9s
bGVyX21hbmFnZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3
b3JrX2FkYXB0b3IvZGVidWdfZHVtcF93cml0ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlci5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgog
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKQEAgLTQx
LDE3ICs0Niw3IEBAIEF1ZGlvTmV0d29ya0FkYXB0b3JJbXBsOjpBdWRpb05ldHdvcmtBZGFwdG9y
SW1wbCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0V2ZW50TG9nTWluQml0
cmF0ZUNoYW5nZUJwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0V2ZW50
TG9nTWluQml0cmF0ZUNoYW5nZUZyYWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrRXZlbnRMb2dNaW5QYWNrZXRMb3NzQ2hhbmdlRnJhY3Rpb24pCi0gICAgICAgICAg
ICAgIDogbnVsbHB0ciksCi0gICAgICBlbmFibGVfYml0cmF0ZV9hZGFwdGF0aW9uXygKLSAgICAg
ICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BdWRpby1CaXRyYXRl
QWRhcHRhdGlvbiIpKSwKLSAgICAgIGVuYWJsZV9kdHhfYWRhcHRhdGlvbl8oCi0gICAgICAgICAg
d2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tRHR4QWRhcHRhdGlv
biIpKSwKLSAgICAgIGVuYWJsZV9mZWNfYWRhcHRhdGlvbl8oCi0gICAgICAgICAgd2VicnRjOjpm
aWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tRmVjQWRhcHRhdGlvbiIpKSwKLSAg
ICAgIGVuYWJsZV9jaGFubmVsX2FkYXB0YXRpb25fKAotICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRf
dHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUF1ZGlvLUNoYW5uZWxBZGFwdGF0aW9uIikpLAotICAg
ICAgZW5hYmxlX2ZyYW1lX2xlbmd0aF9hZGFwdGF0aW9uXyh3ZWJydGM6OmZpZWxkX3RyaWFsOjpJ
c0VuYWJsZWQoCi0gICAgICAgICAgIldlYlJUQy1BdWRpby1GcmFtZUxlbmd0aEFkYXB0YXRpb24i
KSkgeworICAgICAgICAgICAgICA6IG51bGxwdHIpIHsKICAgUlRDX0RDSEVDSyhjb250cm9sbGVy
X21hbmFnZXJfKTsKIH0KIApAQCAtMTUyLDI0ICsxNDcsNiBAQCBBdWRpb0VuY29kZXJSdW50aW1l
Q29uZmlnIEF1ZGlvTmV0d29ya0FkYXB0b3JJbXBsOjpHZXRFbmNvZGVyUnVudGltZUNvbmZpZygp
IHsKICAgfQogICBwcmV2X2NvbmZpZ18gPSBjb25maWc7CiAKLSAgLy8gUHJldmVudCBjZXJ0YWlu
IGNvbnRyb2xsZXJzIGZyb20gdGFraW5nIGFjdGlvbiAoZGV0ZXJtaW5lZCBieSBmaWVsZCB0cmlh
bHMpCi0gIGlmICghZW5hYmxlX2JpdHJhdGVfYWRhcHRhdGlvbl8gJiYgY29uZmlnLmJpdHJhdGVf
YnBzKSB7Ci0gICAgY29uZmlnLmJpdHJhdGVfYnBzLnJlc2V0KCk7Ci0gIH0KLSAgaWYgKCFlbmFi
bGVfZHR4X2FkYXB0YXRpb25fICYmIGNvbmZpZy5lbmFibGVfZHR4KSB7Ci0gICAgY29uZmlnLmVu
YWJsZV9kdHgucmVzZXQoKTsKLSAgfQotICBpZiAoIWVuYWJsZV9mZWNfYWRhcHRhdGlvbl8gJiYg
Y29uZmlnLmVuYWJsZV9mZWMpIHsKLSAgICBjb25maWcuZW5hYmxlX2ZlYy5yZXNldCgpOwotICAg
IGNvbmZpZy51cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24ucmVzZXQoKTsKLSAgfQotICBpZiAo
IWVuYWJsZV9mcmFtZV9sZW5ndGhfYWRhcHRhdGlvbl8gJiYgY29uZmlnLmZyYW1lX2xlbmd0aF9t
cykgewotICAgIGNvbmZpZy5mcmFtZV9sZW5ndGhfbXMucmVzZXQoKTsKLSAgfQotICBpZiAoIWVu
YWJsZV9jaGFubmVsX2FkYXB0YXRpb25fICYmIGNvbmZpZy5udW1fY2hhbm5lbHMpIHsKLSAgICBj
b25maWcubnVtX2NoYW5uZWxzLnJlc2V0KCk7Ci0gIH0KLQogICBpZiAoZGVidWdfZHVtcF93cml0
ZXJfKQogICAgIGRlYnVnX2R1bXBfd3JpdGVyXy0+RHVtcEVuY29kZXJSdW50aW1lQ29uZmlnKGNv
bmZpZywgcnRjOjpUaW1lTWlsbGlzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3
b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFwdG9yX2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25l
dHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5oCmluZGV4IGUyMDhlZDI2
MDdjMzQ0NjMyYmE3NjcxOGZiZjAzNDI2MzdlYWU0YWMuLjRjMWMxOWI3ZWEyOGNiMWM1ZTdhZDc2
MGJlMGE0MWVlMWFkZDAyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRv
ci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtf
YWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbC5oCkBAIC0xMSwxNyArMTEsMjEgQEAK
ICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0FVRElP
X05FVFdPUktfQURBUFRPUl9JTVBMX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FV
RElPX05FVFdPUktfQURBUFRPUl9BVURJT19ORVRXT1JLX0FEQVBUT1JfSU1QTF9IXwogCisjaW5j
bHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2Nv
bnRyb2xsZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3Jr
X2FkYXB0b3IvY29udHJvbGxlcl9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2RlYnVnX2R1bXBfd3JpdGVyLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193
cml0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2Fk
YXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3Jr
X2FkYXB0b3JfY29uZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAorY2xhc3MgQ29udHJvbGxlck1hbmFnZXI7CitjbGFz
cyBFdmVudExvZ1dyaXRlcjsKIGNsYXNzIFJ0Y0V2ZW50TG9nOwogCiBjbGFzcyBBdWRpb05ldHdv
cmtBZGFwdG9ySW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb05ldHdvcmtBZGFwdG9yIHsKQEAgLTc5
LDEyICs4Myw2IEBAIGNsYXNzIEF1ZGlvTmV0d29ya0FkYXB0b3JJbXBsIGZpbmFsIDogcHVibGlj
IEF1ZGlvTmV0d29ya0FkYXB0b3IgewogCiAgIEFOQVN0YXRzIHN0YXRzXzsKIAotICBjb25zdCBi
b29sIGVuYWJsZV9iaXRyYXRlX2FkYXB0YXRpb25fOwotICBjb25zdCBib29sIGVuYWJsZV9kdHhf
YWRhcHRhdGlvbl87Ci0gIGNvbnN0IGJvb2wgZW5hYmxlX2ZlY19hZGFwdGF0aW9uXzsKLSAgY29u
c3QgYm9vbCBlbmFibGVfY2hhbm5lbF9hZGFwdGF0aW9uXzsKLSAgY29uc3QgYm9vbCBlbmFibGVf
ZnJhbWVfbGVuZ3RoX2FkYXB0YXRpb25fOwotCiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oQXVkaW9OZXR3b3JrQWRhcHRvckltcGwpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVk
aW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBsX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9pbXBs
X3VuaXR0ZXN0LmNjCmluZGV4IDU5NDhhYzM2NDQwZGEwZjAyYzRhMmZjNWZhZGRjMDQ3ZWZhMDM5
NTQuLmJlOTU1MGE3YTc2M2U1ZGUzNDVjYzIwNzNlMGJjNjVhY2M1YjgwMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9hdWRpb19uZXR3b3JrX2FkYXB0b3JfaW1wbF91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29y
a19hZGFwdG9yX2ltcGxfdW5pdHRlc3QuY2MKQEAgLTUxLDcgKzUxLDcgQEAgTUFUQ0hFUl9QKElz
UnRjRXZlbnRBbmFDb25maWdFcXVhbFRvLCBjb25maWcsICIiKSB7CiAgICAgcmV0dXJuIGZhbHNl
OwogICB9CiAgIGF1dG8gYW5hX2V2ZW50ID0gc3RhdGljX2Nhc3Q8UnRjRXZlbnRBdWRpb05ldHdv
cmtBZGFwdGF0aW9uKj4oYXJnKTsKLSAgcmV0dXJuICphbmFfZXZlbnQtPmNvbmZpZ18gPT0gY29u
ZmlnOworICByZXR1cm4gYW5hX2V2ZW50LT5jb25maWcoKSA9PSBjb25maWc7CiB9CiAKIE1BVENI
RVJfUChFbmNvZGVyUnVudGltZUNvbmZpZ0lzLCBjb25maWcsICIiKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvYml0cmF0ZV9jb250cm9sbGVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9h
dWRpb19uZXR3b3JrX2FkYXB0b3IvYml0cmF0ZV9jb250cm9sbGVyLmgKaW5kZXggMjgyZjU5OWI2
ZGEzMDI1NTQ3YzUwMjBhZWQ3ZmQyNTljYmQ2ZGJlMC4uNmI2MzMwYjAzMDE1MmIyMWUyZWQ4MjA1
NTgyZDc3NzQwZmMyNmQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9y
L2JpdHJhdGVfY29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9i
aXRyYXRlX2NvbnRyb2xsZXIuaApAQCAtMTEsNyArMTEsMTEgQEAKICNpZm5kZWYgTU9EVUxFU19B
VURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0JJVFJBVEVfQ09OVFJPTExFUl9IXwog
I2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1JfQklUUkFU
RV9DT05UUk9MTEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9j
b25maWcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2No
YW5uZWxfY29udHJvbGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2NoYW5uZWxf
Y29udHJvbGxlci5oCmluZGV4IDIzY2JlZjY2M2I0ZmJmYzU1NTFjMjM3Mjc4ZTUwZjI3MWU1ZGVh
YzEuLjBkNzc1YjFjNzdmMWM5NzMxMTQ2N2Q3ODk3YmFmODllYTQ0N2I3ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9jaGFubmVsX2NvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY2hhbm5lbF9jb250cm9sbGVyLmgKQEAgLTExLDcg
KzExLDExIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElPX05FVFdPUktfQURB
UFRPUl9DSEFOTkVMX0NPTlRST0xMRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdf
QVVESU9fTkVUV09SS19BREFQVE9SX0NIQU5ORUxfQ09OVFJPTExFUl9IXwogCisjaW5jbHVkZSA8
c3RkZGVmLmg+CisKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2NvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5j
bHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9kZWJ1Z19kdW1wX3dyaXRlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1
ZGlvX25ldHdvcmtfYWRhcHRvci9kZWJ1Z19kdW1wX3dyaXRlci5jYwppbmRleCA4MTgzNjJlZDBk
YTdlYTNhM2E3Y2Y3YTMzOWFiMjY3YTYwMzdkMDM1Li44ZTA0ZThlYWZjOTM3MWYxZmYzNTQ3MTkw
NmI4N2ZkOTJiMzA1YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3Iv
ZGVidWdfZHVtcF93cml0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2Rl
YnVnX2R1bXBfd3JpdGVyLmNjCkBAIC0xMCwxMCArMTAsMTIgQEAKIAogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9kZWJ1Z19kdW1wX3dyaXRlci5o
IgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2lnbm9yZV93dW5kZWYuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvcHJvdG9idWZfdXRpbHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vZmlsZV93cmFw
cGVyLmgiCiAKICNpZiBXRUJSVENfRU5BQkxFX1BST1RPQlVGCiBSVENfUFVTSF9JR05PUklOR19X
VU5ERUYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2R0eF9jb250
cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZHR4X2NvbnRyb2xsZXIuaApp
bmRleCBmYjQwZGIyOGIyMGNjYTczZTk1OTMyMmY0MmQ0ZDRkYmE4N2FmY2QwLi5kMzMzNGVjYTll
ZjAwMWI1Mjg0MGM0YmY1MDdmZmYwZTJjZmQxMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvZHR4X2NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3Jr
X2FkYXB0b3IvZHR4X2NvbnRyb2xsZXIuaApAQCAtMTEsNyArMTEsOSBAQAogI2lmbmRlZiBNT0RV
TEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1JfRFRYX0NPTlRST0xMRVJfSF8K
ICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0RUWF9D
T05UUk9MTEVSX0hfCiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2NvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3Iv
aW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9ldmVudF9sb2dfd3JpdGVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
YXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXIuY2MKaW5kZXggNGE5MjM0M2Q5
Njg4YmQwOWFhZjk4ZTM1MjBhNjE1NzlkMzA5NjAzMy4uNzkyNWI4OTEyNzc1MDFkZTBkYzYyYjcw
NGU5OWQ1OTk4YzQ4ZDQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9y
L2V2ZW50X2xvZ193cml0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2
ZW50X2xvZ193cml0ZXIuY2MKQEAgLTksMTMgKzksMTcgQEAKICAqLwogCiAjaW5jbHVkZSA8bWF0
aC5oPgotCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVk
ZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cv
ZXZlbnRzL3J0Y19ldmVudC5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVu
dHMvcnRjX2V2ZW50X2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi5oIgogI2luY2x1ZGUgImxvZ2dp
bmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2ZW50X2xvZ193cml0ZXIuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9ldmVudF9sb2dfd3JpdGVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlci5oCmluZGV4IGZjYThlNTNi
NjY0YmYxYmYzZGU4OWU1MGU5OGE4MmU4YjA5MDkyNjcuLjcyYjUyNDVlMTE1YTZmZmQ1MDIwNWQx
MGEzYzhjYmE5ZTFkYzg5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRv
ci9ldmVudF9sb2dfd3JpdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2V2
ZW50X2xvZ193cml0ZXIuaApAQCAtMTEsNyArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElP
X0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1JfRVZFTlRfTE9HX1dSSVRFUl9IXwogI2RlZmlu
ZSBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1JfRVZFTlRfTE9HX1dS
SVRFUl9IXwogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19h
ZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yLmgiCisjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29y
a19hZGFwdG9yX2NvbmZpZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3Jr
X2FkYXB0b3IvZXZlbnRfbG9nX3dyaXRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdv
cmtfYWRhcHRvci9ldmVudF9sb2dfd3JpdGVyX3VuaXR0ZXN0LmNjCmluZGV4IGRmOTc1OTQ3Y2Ex
M2ExZjQzYWM4Y2ViOGU3NWE1YmY0Y2NkNTI0NDYuLjQyMTg5YzNlMTFjMzIxZmEwMzYzOWE2NzNk
Y2EyMjMwNjc3OWUwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9l
dmVudF9sb2dfd3JpdGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRh
cHRvci9ldmVudF9sb2dfd3JpdGVyX3VuaXR0ZXN0LmNjCkBAIC0zNiw3ICszNiw3IEBAIE1BVENI
RVJfUChJc1J0Y0V2ZW50QW5hQ29uZmlnRXF1YWxUbywgY29uZmlnLCAiIikgewogICAgIHJldHVy
biBmYWxzZTsKICAgfQogICBhdXRvIGFuYV9ldmVudCA9IHN0YXRpY19jYXN0PFJ0Y0V2ZW50QXVk
aW9OZXR3b3JrQWRhcHRhdGlvbio+KGFyZyk7Ci0gIHJldHVybiAqYW5hX2V2ZW50LT5jb25maWdf
ID09IGNvbmZpZzsKKyAgcmV0dXJuIGFuYV9ldmVudC0+Y29uZmlnKCkgPT0gY29uZmlnOwogfQog
CiBzdHJ1Y3QgRXZlbnRMb2dXcml0ZXJTdGF0ZXMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9f
bmV0d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVyX3Bscl9iYXNlZC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlv
X25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9wbHJfYmFzZWQuY2MKaW5kZXggN2FiNzJj
OTQzN2UzNzIxOWQyNGZkMWUwYTEyNzk5ZDRiNWQ4N2Q4OC4uOTM2ZTIyNDI5YWM4ODg1NGZjZDcy
ZWNhNzUyMTdlN2QzMjZhYTEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFw
dG9yL2ZlY19jb250cm9sbGVyX3Bscl9iYXNlZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3Jr
X2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJfcGxyX2Jhc2VkLmNjCkBAIC0xMCw3ICsxMCw3IEBACiAK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVj
X2NvbnRyb2xsZXJfcGxyX2Jhc2VkLmgiCiAKLSNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8
c3RyaW5nPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxl
cl9wbHJfYmFzZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxl
cl9wbHJfYmFzZWQuaAppbmRleCBiNjY4ODNlZjU1MmU1MTRiMDM4ZTgyYjI1ZTRkNmRjOTcyN2M2
NGFkLi5iN2QzZDU2MTczZTZiYThkZTJkNmNiMzUyMDNiOWNlMzFiZDM3ZTJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJfcGxyX2Jhc2VkLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVyX3Bscl9iYXNl
ZC5oCkBAIC0xMyw4ICsxMywxMCBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAi
YWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9zbW9vdGhpbmdf
ZmlsdGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19h
ZGFwdG9yL2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRp
b19uZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL3V0
aWwvdGhyZXNob2xkX2N1cnZlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdp
Yy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRy
b2xsZXJfcnBscl9iYXNlZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29u
dHJvbGxlcl9ycGxyX2Jhc2VkLmNjCmluZGV4IGM4Y2ZkMzE2MDdjNDZlMzBhNGNlZmM1YTQxZmMz
NDk0NTdiMjY0MTQuLjZjMzBiOGYyYzA3NDNlNzQwMDhlNmEyMmQ0MWU2MDE4YThjMDMzZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9ycGxy
X2Jhc2VkLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxl
cl9ycGxyX2Jhc2VkLmNjCkBAIC0xMCw5ICsxMCw2IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJfcnBscl9iYXNl
ZC5oIgogCi0jaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJfcnBscl9iYXNlZC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2ZlY19jb250cm9sbGVyX3JwbHJfYmFzZWQuaApp
bmRleCA5YTNjMzdjM2QxZDhjZTA2YzIwOGFmNzI3MjBmYTdkMTY4NmExZTEzLi40MjFjYjcwYWJk
MThiYWFhYmNmYzZhMGZhZGY0Mzc2NGY4N2IwNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvZmVjX2NvbnRyb2xsZXJfcnBscl9iYXNlZC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1
ZGlvX25ldHdvcmtfYWRhcHRvci9mZWNfY29udHJvbGxlcl9ycGxyX2Jhc2VkLmgKQEAgLTExLDkg
KzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQ
VE9SX0ZFQ19DT05UUk9MTEVSX1JQTFJfQkFTRURfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19D
T0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0ZFQ19DT05UUk9MTEVSX1JQTFJfQkFTRURfSF8K
IAotI2luY2x1ZGUgPG1lbW9yeT4KLQorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtf
YWRhcHRvci9pbmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvdXRpbC90aHJlc2hv
bGRfY3VydmUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mcmFtZV9sZW5ndGhfY29udHJv
bGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9mcmFtZV9sZW5ndGhfY29udHJv
bGxlci5jYwppbmRleCA0MGU5N2NiMzcxZTQzYzI3MGY3NzFlY2YwNjBlMWYwZTYzNjE1ZjAyLi5i
MTIzYzdjNzBlZDVlODdmODI1ODYzYzA5YTJjM2ZhNjg2NjY0ZmU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZnJhbWVfbGVuZ3RoX2NvbnRyb2xsZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvYXVkaW9fbmV0d29ya19hZGFwdG9yL2ZyYW1lX2xlbmd0aF9jb250cm9sbGVyLmNjCkBA
IC0xMSwxMCArMTEsMTAgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvZnJhbWVfbGVuZ3RoX2NvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgPGFs
Z29yaXRobT4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19h
ZGFwdG9yL2ZyYW1lX2xlbmd0aF9jb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2Fk
YXB0b3IvZnJhbWVfbGVuZ3RoX2NvbnRyb2xsZXIuaAppbmRleCBmMDg0ZmQwMzgyZjE2MDc5NTlk
MGMwMThjNWRmNDJiNjk1YmFiOTI2Li5mMGE1YWFiYTlhMmE2YTJhN2Q0NjUzNzU2NDAwNDE0YTZl
MWI4ZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZnJhbWVfbGVu
Z3RoX2NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvZnJhbWVf
bGVuZ3RoX2NvbnRyb2xsZXIuaApAQCAtMTEsMTAgKzExLDEzIEBACiAjaWZuZGVmIE1PRFVMRVNf
QVVESU9fQ09ESU5HX0FVRElPX05FVFdPUktfQURBUFRPUl9GUkFNRV9MRU5HVEhfQ09OVFJPTExF
Ul9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19BVURJT19ORVRXT1JLX0FEQVBUT1Jf
RlJBTUVfTEVOR1RIX0NPTlRST0xMRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1
ZGUgPG1hcD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlv
bmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0d29ya19hZGFw
dG9yL2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19u
ZXR3b3JrX2FkYXB0b3IvaW5jbHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9pbmNsdWRlL2F1ZGlv
X25ldHdvcmtfYWRhcHRvcl9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9p
bmNsdWRlL2F1ZGlvX25ldHdvcmtfYWRhcHRvcl9jb25maWcuaAppbmRleCAyNTdhNzlhZjE4ZDkx
OTRmMWQwMDY1ZWIwYWFkZDhjMzk2ODkzOTBjLi45NGU4ZWQ5NjFlN2U2ODNiZjBkODliZTU3YjEw
ZTJiZTM0N2NlZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvaW5j
bHVkZS9hdWRpb19uZXR3b3JrX2FkYXB0b3JfY29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYXVkaW9fbmV0
d29ya19hZGFwdG9yL2luY2x1ZGUvYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZy5oCkBAIC0x
MSw2ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0FVRElPX05FVFdPUktf
QURBUFRPUl9JTkNMVURFX0FVRElPX05FVFdPUktfQURBUFRPUl9DT05GSUdfSF8KICNkZWZpbmUg
TU9EVUxFU19BVURJT19DT0RJTkdfQVVESU9fTkVUV09SS19BREFQVE9SX0lOQ0xVREVfQVVESU9f
TkVUV09SS19BREFQVE9SX0NPTkZJR19IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2F1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29k
ZWNzL2F1ZGlvX2Zvcm1hdF9jb252ZXJzaW9uLmNjCmluZGV4IGUzOGFhMzMzMzUwNWM3NjQyMGZi
NTRmNzg5MmVmNjQ5N2Y4N2ZjZjEuLmYwNjgzMDFhZGY5MTY4NTc2Y2IxMTMwNmZkYmNmZmE3MWU1
NjQ1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9hdWRpb19mb3JtYXRfY29udmVyc2lvbi5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvYXVkaW9fZm9ybWF0X2NvbnZlcnNpb24uY2MKQEAgLTExLDEx
ICsxMSwxMiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9hdWRpb19m
b3JtYXRfY29udmVyc2lvbi5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3Ry
aW5nPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFs
LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5
X3ZpZXcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2FuaXRp
emVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNDEsMTEgKzQyLDExIEBAIENvZGVjSW5z
dCBNYWtlQ29kZWNJbnN0KGludCBwYXlsb2FkX3R5cGUsCiB9ICAvLyBuYW1lc3BhY2UKIAogU2Rw
QXVkaW9Gb3JtYXQgQ29kZWNJbnN0VG9TZHAoY29uc3QgQ29kZWNJbnN0JiBjaSkgewotICBpZiAo
U1RSX0NBU0VfQ01QKGNpLnBsbmFtZSwgImc3MjIiKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVh
bHNJZ25vcmVDYXNlKGNpLnBsbmFtZSwgImc3MjIiKSkgewogICAgIFJUQ19DSEVDS19FUSgxNjAw
MCwgY2kucGxmcmVxKTsKICAgICBSVENfQ0hFQ0soY2kuY2hhbm5lbHMgPT0gMSB8fCBjaS5jaGFu
bmVscyA9PSAyKTsKICAgICByZXR1cm4geyJnNzIyIiwgODAwMCwgY2kuY2hhbm5lbHN9OwotICB9
IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChjaS5wbG5hbWUsICJvcHVzIikgPT0gMCkgeworICB9IGVs
c2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY2kucGxuYW1lLCAib3B1cyIpKSB7CiAgICAg
UlRDX0NIRUNLX0VRKDQ4MDAwLCBjaS5wbGZyZXEpOwogICAgIFJUQ19DSEVDSyhjaS5jaGFubmVs
cyA9PSAxIHx8IGNpLmNoYW5uZWxzID09IDIpOwogICAgIHJldHVybiBjaS5jaGFubmVscyA9PSAx
CkBAIC01NywxMiArNTgsMTIgQEAgU2RwQXVkaW9Gb3JtYXQgQ29kZWNJbnN0VG9TZHAoY29uc3Qg
Q29kZWNJbnN0JiBjaSkgewogfQogCiBDb2RlY0luc3QgU2RwVG9Db2RlY0luc3QoaW50IHBheWxv
YWRfdHlwZSwgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGF1ZGlvX2Zvcm1hdCkgewotICBpZiAoU1RS
X0NBU0VfQ01QKGF1ZGlvX2Zvcm1hdC5uYW1lLmNfc3RyKCksICJnNzIyIikgPT0gMCkgeworICBp
ZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShhdWRpb19mb3JtYXQubmFtZSwgImc3MjIiKSkgewog
ICAgIFJUQ19DSEVDS19FUSg4MDAwLCBhdWRpb19mb3JtYXQuY2xvY2tyYXRlX2h6KTsKICAgICBS
VENfQ0hFQ0soYXVkaW9fZm9ybWF0Lm51bV9jaGFubmVscyA9PSAxIHx8IGF1ZGlvX2Zvcm1hdC5u
dW1fY2hhbm5lbHMgPT0gMik7CiAgICAgcmV0dXJuIE1ha2VDb2RlY0luc3QocGF5bG9hZF90eXBl
LCAiZzcyMiIsIDE2MDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2Zvcm1hdC5u
dW1fY2hhbm5lbHMpOwotICB9IGVsc2UgaWYgKFNUUl9DQVNFX0NNUChhdWRpb19mb3JtYXQubmFt
ZS5jX3N0cigpLCAib3B1cyIpID09IDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKGF1ZGlvX2Zvcm1hdC5uYW1lLCAib3B1cyIpKSB7CiAgICAgUlRDX0NIRUNLX0VRKDQ4
MDAwLCBhdWRpb19mb3JtYXQuY2xvY2tyYXRlX2h6KTsKICAgICBSVENfQ0hFQ0tfRVEoMiwgYXVk
aW9fZm9ybWF0Lm51bV9jaGFubmVscyk7CiAgICAgY29uc3QgaW50IG51bV9jaGFubmVscyA9IFsm
XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZy5jYwppbmRleCAwNTUxOTA0OTdhNTRj
Mjg0MzZlZDQwMTI5NWQyYTAxNTE2ZWU0MzYwLi40NzY5NTRmZTYwZDA2ZDA0NzhjYmI1YmQ0N2Qy
N2QzYzg5ZDljZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJf
Y25nLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MKQEAgLTEw
LDQwICsxMCw3MiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2Nu
Zy9hdWRpb19lbmNvZGVyX2NuZy5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJydGNfY25nLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBuYW1lc3BhY2Ugewog
CiBjb25zdCBpbnQga01heEZyYW1lU2l6ZU1zID0gNjA7CiAKLX0gIC8vIG5hbWVzcGFjZQotCi1B
dWRpb0VuY29kZXJDbmc6OkNvbmZpZzo6Q29uZmlnKCkgPSBkZWZhdWx0OwotQXVkaW9FbmNvZGVy
Q25nOjpDb25maWc6OkNvbmZpZyhDb25maWcmJikgPSBkZWZhdWx0OwotQXVkaW9FbmNvZGVyQ25n
OjpDb25maWc6On5Db25maWcoKSA9IGRlZmF1bHQ7Ci0KLWJvb2wgQXVkaW9FbmNvZGVyQ25nOjpD
b25maWc6OklzT2soKSBjb25zdCB7Ci0gIGlmIChudW1fY2hhbm5lbHMgIT0gMSkKLSAgICByZXR1
cm4gZmFsc2U7Ci0gIGlmICghc3BlZWNoX2VuY29kZXIpCi0gICAgcmV0dXJuIGZhbHNlOwotICBp
ZiAobnVtX2NoYW5uZWxzICE9IHNwZWVjaF9lbmNvZGVyLT5OdW1DaGFubmVscygpKQotICAgIHJl
dHVybiBmYWxzZTsKLSAgaWYgKHNpZF9mcmFtZV9pbnRlcnZhbF9tcyA8Ci0gICAgICBzdGF0aWNf
Y2FzdDxpbnQ+KHNwZWVjaF9lbmNvZGVyLT5NYXgxME1zRnJhbWVzSW5BUGFja2V0KCkgKiAxMCkp
Ci0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAobnVtX2NuZ19jb2VmZmljaWVudHMgPiBXRUJSVENf
Q05HX01BWF9MUENfT1JERVIgfHwKLSAgICAgIG51bV9jbmdfY29lZmZpY2llbnRzIDw9IDApCi0g
ICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotQXVkaW9FbmNvZGVyQ25nOjpB
dWRpb0VuY29kZXJDbmcoQ29uZmlnJiYgY29uZmlnKQorY2xhc3MgQXVkaW9FbmNvZGVyQ25nIGZp
bmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7CisgcHVibGljOgorICBleHBsaWNpdCBBdWRpb0Vu
Y29kZXJDbmcoQXVkaW9FbmNvZGVyQ25nQ29uZmlnJiYgY29uZmlnKTsKKyAgfkF1ZGlvRW5jb2Rl
ckNuZygpIG92ZXJyaWRlOworCisgIC8vIE5vdCBjb3B5YWJsZSBvciBtb3ZlYWJsZS4KKyAgQXVk
aW9FbmNvZGVyQ25nKGNvbnN0IEF1ZGlvRW5jb2RlckNuZyYpID0gZGVsZXRlOworICBBdWRpb0Vu
Y29kZXJDbmcoQXVkaW9FbmNvZGVyQ25nJiYpID0gZGVsZXRlOworICBBdWRpb0VuY29kZXJDbmcm
IG9wZXJhdG9yPShjb25zdCBBdWRpb0VuY29kZXJDbmcmKSA9IGRlbGV0ZTsKKyAgQXVkaW9FbmNv
ZGVyQ25nJiBvcGVyYXRvcj0oQXVkaW9FbmNvZGVyQ25nJiYpID0gZGVsZXRlOworCisgIGludCBT
YW1wbGVSYXRlSHooKSBjb25zdCBvdmVycmlkZTsKKyAgc2l6ZV90IE51bUNoYW5uZWxzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgIGludCBSdHBUaW1lc3RhbXBSYXRlSHooKSBjb25zdCBvdmVycmlkZTsK
KyAgc2l6ZV90IE51bTEwTXNGcmFtZXNJbk5leHRQYWNrZXQoKSBjb25zdCBvdmVycmlkZTsKKyAg
c2l6ZV90IE1heDEwTXNGcmFtZXNJbkFQYWNrZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgaW50IEdl
dFRhcmdldEJpdHJhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgRW5jb2RlZEluZm8gRW5jb2RlSW1w
bCh1aW50MzJfdCBydHBfdGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGludDE2X3Q+IGF1ZGlvLAorICAgICAgICAgICAgICAgICAgICAgICAg
IHJ0Yzo6QnVmZmVyKiBlbmNvZGVkKSBvdmVycmlkZTsKKyAgdm9pZCBSZXNldCgpIG92ZXJyaWRl
OworICBib29sIFNldEZlYyhib29sIGVuYWJsZSkgb3ZlcnJpZGU7CisgIGJvb2wgU2V0RHR4KGJv
b2wgZW5hYmxlKSBvdmVycmlkZTsKKyAgYm9vbCBTZXRBcHBsaWNhdGlvbihBcHBsaWNhdGlvbiBh
cHBsaWNhdGlvbikgb3ZlcnJpZGU7CisgIHZvaWQgU2V0TWF4UGxheWJhY2tSYXRlKGludCBmcmVx
dWVuY3lfaHopIG92ZXJyaWRlOworICBydGM6OkFycmF5VmlldzxzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9FbmNvZGVyPj4gUmVjbGFpbUNvbnRhaW5lZEVuY29kZXJzKCkKKyAgICAgIG92ZXJyaWRlOwor
ICB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtQYWNrZXRMb3NzRnJhY3Rpb24oCisgICAgICBmbG9hdCB1
cGxpbmtfcGFja2V0X2xvc3NfZnJhY3Rpb24pIG92ZXJyaWRlOworICB2b2lkIE9uUmVjZWl2ZWRV
cGxpbmtSZWNvdmVyYWJsZVBhY2tldExvc3NGcmFjdGlvbigKKyAgICAgIGZsb2F0IHVwbGlua19y
ZWNvdmVyYWJsZV9wYWNrZXRfbG9zc19mcmFjdGlvbikgb3ZlcnJpZGU7CisgIHZvaWQgT25SZWNl
aXZlZFVwbGlua0JhbmR3aWR0aCgKKyAgICAgIGludCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMs
CisgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBid2VfcGVyaW9kX21zKSBvdmVycmlkZTsK
KworIHByaXZhdGU6CisgIEVuY29kZWRJbmZvIEVuY29kZVBhc3NpdmUoc2l6ZV90IGZyYW1lc190
b19lbmNvZGUsIHJ0Yzo6QnVmZmVyKiBlbmNvZGVkKTsKKyAgRW5jb2RlZEluZm8gRW5jb2RlQWN0
aXZlKHNpemVfdCBmcmFtZXNfdG9fZW5jb2RlLCBydGM6OkJ1ZmZlciogZW5jb2RlZCk7CisgIHNp
emVfdCBTYW1wbGVzUGVyMTBtc0ZyYW1lKCkgY29uc3Q7CisKKyAgc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvRW5jb2Rlcj4gc3BlZWNoX2VuY29kZXJfOworICBjb25zdCBpbnQgY25nX3BheWxvYWRfdHlw
ZV87CisgIGNvbnN0IGludCBudW1fY25nX2NvZWZmaWNpZW50c187CisgIGNvbnN0IGludCBzaWRf
ZnJhbWVfaW50ZXJ2YWxfbXNfOworICBzdGQ6OnZlY3RvcjxpbnQxNl90PiBzcGVlY2hfYnVmZmVy
XzsKKyAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHJ0cF90aW1lc3RhbXBzXzsKKyAgYm9vbCBsYXN0
X2ZyYW1lX2FjdGl2ZV87CisgIHN0ZDo6dW5pcXVlX3B0cjxWYWQ+IHZhZF87CisgIHN0ZDo6dW5p
cXVlX3B0cjxDb21mb3J0Tm9pc2VFbmNvZGVyPiBjbmdfZW5jb2Rlcl87Cit9OworCitBdWRpb0Vu
Y29kZXJDbmc6OkF1ZGlvRW5jb2RlckNuZyhBdWRpb0VuY29kZXJDbmdDb25maWcmJiBjb25maWcp
CiAgICAgOiBzcGVlY2hfZW5jb2Rlcl8oKHN0YXRpY19jYXN0PHZvaWQ+KFsmXSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgUlRDX0NIRUNLKGNvbmZpZy5Jc09rKCkpIDw8ICJJbnZhbGlkIGNv
bmZpZ3VyYXRpb24uIjsKICAgICAgICAgICAgICAgICAgICAgICAgfSgpKSwKQEAgLTI2MSw0ICsy
OTMsMzEgQEAgc2l6ZV90IEF1ZGlvRW5jb2RlckNuZzo6U2FtcGxlc1BlcjEwbXNGcmFtZSgpIGNv
bnN0IHsKICAgcmV0dXJuIHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KDEwICogU2FtcGxlUmF0ZUh6KCks
IDEwMDApOwogfQogCit9ICAvLyBuYW1lc3BhY2UKKworQXVkaW9FbmNvZGVyQ25nQ29uZmlnOjpB
dWRpb0VuY29kZXJDbmdDb25maWcoKSA9IGRlZmF1bHQ7CitBdWRpb0VuY29kZXJDbmdDb25maWc6
OkF1ZGlvRW5jb2RlckNuZ0NvbmZpZyhBdWRpb0VuY29kZXJDbmdDb25maWcmJikgPSBkZWZhdWx0
OworQXVkaW9FbmNvZGVyQ25nQ29uZmlnOjp+QXVkaW9FbmNvZGVyQ25nQ29uZmlnKCkgPSBkZWZh
dWx0OworCitib29sIEF1ZGlvRW5jb2RlckNuZ0NvbmZpZzo6SXNPaygpIGNvbnN0IHsKKyAgaWYg
KG51bV9jaGFubmVscyAhPSAxKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKCFzcGVlY2hfZW5j
b2RlcikKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChudW1fY2hhbm5lbHMgIT0gc3BlZWNoX2Vu
Y29kZXItPk51bUNoYW5uZWxzKCkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoc2lkX2ZyYW1l
X2ludGVydmFsX21zIDwKKyAgICAgIHN0YXRpY19jYXN0PGludD4oc3BlZWNoX2VuY29kZXItPk1h
eDEwTXNGcmFtZXNJbkFQYWNrZXQoKSAqIDEwKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmIChu
dW1fY25nX2NvZWZmaWNpZW50cyA+IFdFQlJUQ19DTkdfTUFYX0xQQ19PUkRFUiB8fAorICAgICAg
bnVtX2NuZ19jb2VmZmljaWVudHMgPD0gMCkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0
cnVlOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPiBDcmVhdGVDb21mb3J0Tm9p
c2VFbmNvZGVyKAorICAgIEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyYmIGNvbmZpZykgeworICByZXR1
cm4gYWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyQ25nPihzdGQ6Om1vdmUoY29uZmlnKSk7
Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9j
bmcvYXVkaW9fZW5jb2Rlcl9jbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9j
bmcuaAppbmRleCBlNGM2NTA3NzY1MWMwNTM2ZWMyM2UwYzljZWJjOTk1OTVmYTQ3NGMzLi4yZWYz
MjM2NGM3ZWE5ZGY0ZWMxNjg3NGIxMTIwMDU1OTlmNjIwOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRp
b19lbmNvZGVyX2NuZy5oCkBAIC0xMSw4NiArMTEsMzggQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19DT0RJTkdfQ09ERUNTX0NOR19BVURJT19FTkNPREVSX0NOR19IXwogI2RlZmluZSBNT0RVTEVT
X0FVRElPX0NPRElOR19DT0RFQ1NfQ05HX0FVRElPX0VOQ09ERVJfQ05HX0hfCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiY29tbW9u
X2F1ZGlvL3ZhZC9pbmNsdWRlL3ZhZC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9jbmcvd2VicnRjX2NuZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIFZhZDsKLQotY2xhc3MgQXVk
aW9FbmNvZGVyQ25nIGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7Ci0gcHVibGljOgotICBz
dHJ1Y3QgQ29uZmlnIHsKLSAgICBDb25maWcoKTsKLSAgICBDb25maWcoQ29uZmlnJiYpOwotICAg
IH5Db25maWcoKTsKLSAgICBib29sIElzT2soKSBjb25zdDsKLQotICAgIHNpemVfdCBudW1fY2hh
bm5lbHMgPSAxOwotICAgIGludCBwYXlsb2FkX3R5cGUgPSAxMzsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9FbmNvZGVyPiBzcGVlY2hfZW5jb2RlcjsKLSAgICBWYWQ6OkFnZ3Jlc3NpdmVuZXNz
IHZhZF9tb2RlID0gVmFkOjprVmFkTm9ybWFsOwotICAgIGludCBzaWRfZnJhbWVfaW50ZXJ2YWxf
bXMgPSAxMDA7Ci0gICAgaW50IG51bV9jbmdfY29lZmZpY2llbnRzID0gODsKLSAgICAvLyBUaGUg
VmFkIHBvaW50ZXIgaXMgbWFpbmx5IGZvciB0ZXN0aW5nLiBJZiBhIE5VTEwgcG9pbnRlciBpcyBw
YXNzZWQsIHRoZQotICAgIC8vIEF1ZGlvRW5jb2RlckNuZyBjcmVhdGVzIChhbmQgZGVzdHJveXMp
IGEgVmFkIG9iamVjdCBpbnRlcm5hbGx5LiBJZiBhbgotICAgIC8vIG9iamVjdCBpcyBwYXNzZWQs
IHRoZSBBdWRpb0VuY29kZXJDbmcgYXNzdW1lcyBvd25lcnNoaXAgb2YgdGhlIFZhZAotICAgIC8v
IG9iamVjdC4KLSAgICBWYWQqIHZhZCA9IG51bGxwdHI7Ci0gIH07Ci0KLSAgZXhwbGljaXQgQXVk
aW9FbmNvZGVyQ25nKENvbmZpZyYmIGNvbmZpZyk7Ci0gIH5BdWRpb0VuY29kZXJDbmcoKSBvdmVy
cmlkZTsKLQotICBpbnQgU2FtcGxlUmF0ZUh6KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIHNpemVfdCBO
dW1DaGFubmVscygpIGNvbnN0IG92ZXJyaWRlOwotICBpbnQgUnRwVGltZXN0YW1wUmF0ZUh6KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gIHNpemVfdCBOdW0xME1zRnJhbWVzSW5OZXh0UGFja2V0KCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gIHNpemVfdCBNYXgxME1zRnJhbWVzSW5BUGFja2V0KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gIGludCBHZXRUYXJnZXRCaXRyYXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIEVuY29k
ZWRJbmZvIEVuY29kZUltcGwodWludDMyX3QgcnRwX3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBpbnQxNl90PiBhdWRpbywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBydGM6OkJ1ZmZlciogZW5jb2RlZCkgb3ZlcnJpZGU7Ci0gIHZvaWQg
UmVzZXQoKSBvdmVycmlkZTsKLSAgYm9vbCBTZXRGZWMoYm9vbCBlbmFibGUpIG92ZXJyaWRlOwot
ICBib29sIFNldER0eChib29sIGVuYWJsZSkgb3ZlcnJpZGU7Ci0gIGJvb2wgU2V0QXBwbGljYXRp
b24oQXBwbGljYXRpb24gYXBwbGljYXRpb24pIG92ZXJyaWRlOwotICB2b2lkIFNldE1heFBsYXli
YWNrUmF0ZShpbnQgZnJlcXVlbmN5X2h6KSBvdmVycmlkZTsKLSAgcnRjOjpBcnJheVZpZXc8c3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4+IFJlY2xhaW1Db250YWluZWRFbmNvZGVycygpCi0g
ICAgICBvdmVycmlkZTsKLSAgdm9pZCBPblJlY2VpdmVkVXBsaW5rUGFja2V0TG9zc0ZyYWN0aW9u
KAotICAgICAgZmxvYXQgdXBsaW5rX3BhY2tldF9sb3NzX2ZyYWN0aW9uKSBvdmVycmlkZTsKLSAg
dm9pZCBPblJlY2VpdmVkVXBsaW5rUmVjb3ZlcmFibGVQYWNrZXRMb3NzRnJhY3Rpb24oCi0gICAg
ICBmbG9hdCB1cGxpbmtfcmVjb3ZlcmFibGVfcGFja2V0X2xvc3NfZnJhY3Rpb24pIG92ZXJyaWRl
OwotICB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtCYW5kd2lkdGgoCi0gICAgICBpbnQgdGFyZ2V0X2F1
ZGlvX2JpdHJhdGVfYnBzLAotICAgICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gYndlX3Blcmlv
ZF9tcykgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICBFbmNvZGVkSW5mbyBFbmNvZGVQYXNzaXZl
KHNpemVfdCBmcmFtZXNfdG9fZW5jb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6QnVmZmVyKiBlbmNvZGVkKTsKLSAgRW5jb2RlZEluZm8gRW5jb2RlQWN0aXZlKHNpemVfdCBm
cmFtZXNfdG9fZW5jb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpCdWZmZXIq
IGVuY29kZWQpOwotICBzaXplX3QgU2FtcGxlc1BlcjEwbXNGcmFtZSgpIGNvbnN0OwotCi0gIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IHNwZWVjaF9lbmNvZGVyXzsKLSAgY29uc3QgaW50
IGNuZ19wYXlsb2FkX3R5cGVfOwotICBjb25zdCBpbnQgbnVtX2NuZ19jb2VmZmljaWVudHNfOwot
ICBjb25zdCBpbnQgc2lkX2ZyYW1lX2ludGVydmFsX21zXzsKLSAgc3RkOjp2ZWN0b3I8aW50MTZf
dD4gc3BlZWNoX2J1ZmZlcl87Ci0gIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBydHBfdGltZXN0YW1w
c187Ci0gIGJvb2wgbGFzdF9mcmFtZV9hY3RpdmVfOwotICBzdGQ6OnVuaXF1ZV9wdHI8VmFkPiB2
YWRfOwotICBzdGQ6OnVuaXF1ZV9wdHI8Q29tZm9ydE5vaXNlRW5jb2Rlcj4gY25nX2VuY29kZXJf
OwotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oQXVkaW9FbmNvZGVyQ25nKTsKK3N0
cnVjdCBBdWRpb0VuY29kZXJDbmdDb25maWcgeworICAvLyBNb3ZlYWJsZSwgbm90IGNvcHlhYmxl
LgorICBBdWRpb0VuY29kZXJDbmdDb25maWcoKTsKKyAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnKEF1
ZGlvRW5jb2RlckNuZ0NvbmZpZyYmKTsKKyAgfkF1ZGlvRW5jb2RlckNuZ0NvbmZpZygpOworCisg
IGJvb2wgSXNPaygpIGNvbnN0OworCisgIHNpemVfdCBudW1fY2hhbm5lbHMgPSAxOworICBpbnQg
cGF5bG9hZF90eXBlID0gMTM7CisgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IHNwZWVj
aF9lbmNvZGVyOworICBWYWQ6OkFnZ3Jlc3NpdmVuZXNzIHZhZF9tb2RlID0gVmFkOjprVmFkTm9y
bWFsOworICBpbnQgc2lkX2ZyYW1lX2ludGVydmFsX21zID0gMTAwOworICBpbnQgbnVtX2NuZ19j
b2VmZmljaWVudHMgPSA4OworICAvLyBUaGUgVmFkIHBvaW50ZXIgaXMgbWFpbmx5IGZvciB0ZXN0
aW5nLiBJZiBhIE5VTEwgcG9pbnRlciBpcyBwYXNzZWQsIHRoZQorICAvLyBBdWRpb0VuY29kZXJD
bmcgY3JlYXRlcyAoYW5kIGRlc3Ryb3lzKSBhIFZhZCBvYmplY3QgaW50ZXJuYWxseS4gSWYgYW4K
KyAgLy8gb2JqZWN0IGlzIHBhc3NlZCwgdGhlIEF1ZGlvRW5jb2RlckNuZyBhc3N1bWVzIG93bmVy
c2hpcCBvZiB0aGUgVmFkCisgIC8vIG9iamVjdC4KKyAgVmFkKiB2YWQgPSBudWxscHRyOwogfTsK
IAorc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2Rl
cigKKyAgICBBdWRpb0VuY29kZXJDbmdDb25maWcmJiBjb25maWcpOworCiB9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCiAKICNlbmRpZiAgLy8gTU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX0NOR19B
VURJT19FTkNPREVSX0NOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19l
bmNvZGVyX2NuZ191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9j
bmdfdW5pdHRlc3QuY2MKaW5kZXggYTc2ZGNiZGEyOTg5ZjllMWYwN2MzYTI1Nzg1MmU2YzFmOWFl
Yjk4MC4uZTM2NTViNDY0YTVjZWY4OGE2ZGJlMDYzMGZkOGNlYjM2NDM3MWIyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2NuZ191bml0dGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nX3VuaXR0ZXN0LmNjCkBAIC01MCw4ICs1
MCw4IEBAIGNsYXNzIEF1ZGlvRW5jb2RlckNuZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKICAgICBjbmdfLnJlc2V0KCk7CiAgIH0KIAotICBBdWRpb0VuY29kZXJDbmc6OkNvbmZpZyBN
YWtlQ25nQ29uZmlnKCkgewotICAgIEF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnIGNvbmZpZzsKKyAg
QXVkaW9FbmNvZGVyQ25nQ29uZmlnIE1ha2VDbmdDb25maWcoKSB7CisgICAgQXVkaW9FbmNvZGVy
Q25nQ29uZmlnIGNvbmZpZzsKICAgICBjb25maWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUo
bW9ja19lbmNvZGVyX293bmVyXyk7CiAgICAgRVhQRUNUX1RSVUUoY29uZmlnLnNwZWVjaF9lbmNv
ZGVyKTsKIApAQCAtNjMsNyArNjMsNyBAQCBjbGFzcyBBdWRpb0VuY29kZXJDbmdUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgcmV0dXJuIGNvbmZpZzsKICAgfQogCi0gIHZvaWQg
Q3JlYXRlQ25nKEF1ZGlvRW5jb2RlckNuZzo6Q29uZmlnJiYgY29uZmlnKSB7CisgIHZvaWQgQ3Jl
YXRlQ25nKEF1ZGlvRW5jb2RlckNuZ0NvbmZpZyYmIGNvbmZpZykgewogICAgIG51bV9hdWRpb19z
YW1wbGVzXzEwbXNfID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigxMCAqIHNhbXBsZV9yYXRlX2h6XyAv
IDEwMDApOwogICAgIEFTU0VSVF9MRShudW1fYXVkaW9fc2FtcGxlc18xMG1zXywga01heE51bVNh
bXBsZXMpOwogICAgIGlmIChjb25maWcuc3BlZWNoX2VuY29kZXIpIHsKQEAgLTc1LDcgKzc1LDcg
QEAgY2xhc3MgQXVkaW9FbmNvZGVyQ25nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qgewog
ICAgICAgRVhQRUNUX0NBTEwoKm1vY2tfZW5jb2Rlcl8sIE1heDEwTXNGcmFtZXNJbkFQYWNrZXQo
KSkKICAgICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDF1KSk7CiAgICAgfQotICAgIGNuZ18ucmVz
ZXQobmV3IEF1ZGlvRW5jb2RlckNuZyhzdGQ6Om1vdmUoY29uZmlnKSkpOworICAgIGNuZ18gPSBD
cmVhdGVDb21mb3J0Tm9pc2VFbmNvZGVyKHN0ZDo6bW92ZShjb25maWcpKTsKICAgfQogCiAgIHZv
aWQgRW5jb2RlKCkgewpAQCAtMTkzLDcgKzE5Myw3IEBAIGNsYXNzIEF1ZGlvRW5jb2RlckNuZ1Rl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICByZXR1cm4gZW5jb2RlZF9pbmZvXy5w
YXlsb2FkX3R5cGUgIT0ga0NuZ1BheWxvYWRUeXBlOwogICB9CiAKLSAgc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvRW5jb2RlckNuZz4gY25nXzsKKyAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rlcj4g
Y25nXzsKICAgc3RkOjp1bmlxdWVfcHRyPE1vY2tBdWRpb0VuY29kZXI+IG1vY2tfZW5jb2Rlcl9v
d25lcl87CiAgIE1vY2tBdWRpb0VuY29kZXIqIG1vY2tfZW5jb2Rlcl87CiAgIE1vY2tWYWQqIG1v
Y2tfdmFkXzsgIC8vIE93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZCB0byB8Y25nX3wuCkBAIC00MzIs
NyArNDMyLDcgQEAgY2xhc3MgQXVkaW9FbmNvZGVyQ25nRGVhdGhUZXN0IDogcHVibGljIEF1ZGlv
RW5jb2RlckNuZ1Rlc3QgewogICAvLyBkZWxldGVkLgogICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUgeyBjbmdfLnJlc2V0KCk7IH0KIAotICBBdWRpb0VuY29kZXJDbmc6OkNvbmZpZyBNYWtlQ25n
Q29uZmlnKCkgeworICBBdWRpb0VuY29kZXJDbmdDb25maWcgTWFrZUNuZ0NvbmZpZygpIHsKICAg
ICAvLyBEb24ndCBwcm92aWRlIGEgVmFkIG1vY2sgb2JqZWN0LCBzaW5jZSBpdCB3b3VsZCBsZWFr
IHdoZW4gdGhlIHRlc3QgZGllcy4KICAgICBhdXRvIGNvbmZpZyA9IEF1ZGlvRW5jb2RlckNuZ1Rl
c3Q6Ok1ha2VDbmdDb25maWcoKTsKICAgICBjb25maWcudmFkID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9jbmcvd2VicnRjX2NuZy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2Vi
cnRjX2NuZy5jYwppbmRleCBhMDdiMDkzYjNjNzA5NWJiZGQ0NTgyNzI2YTYzYzllZDdmNDFhZWE3
Li5mMThmYjI4ZTk4ODA3YjMwMTJkYmRkYzA2MjA2MDkzZGJlMDNhNTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvY25nL3dlYnJ0Y19jbmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2NuZy93ZWJy
dGNfY25nLmNjCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAjaW5j
bHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nl
c3NpbmdfbGlicmFyeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL3dlYnJ0Y19jbmcuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9jbmcvd2VicnRjX2NuZy5oCmluZGV4IDNmOGZhZGNkNzFiNGRjNzc3NGQ5Yjg1OWU5YzQ2
NzQ1MTk5YmI3YTYuLjZmZjc1Mjk4YWZhMTZhNDFiNzZlMTJlZWViZmQ3NDczOWFiNTczMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvd2VicnRjX2NuZy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9jbmcvd2VicnRjX2NuZy5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVE
SU9fQ09ESU5HX0NPREVDU19DTkdfV0VCUlRDX0NOR19IXwogI2RlZmluZSBNT0RVTEVTX0FVRElP
X0NPRElOR19DT0RFQ1NfQ05HX1dFQlJUQ19DTkdfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgog
I2luY2x1ZGUgPGNzdGRkZWY+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9wY20uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvZzcxMS9hdWRpb19kZWNvZGVyX3BjbS5jYwppbmRleCAyNWY0OTVmMzlkODE4N2ViYTIyYzVh
ZTFiMmUwNGFjY2FmZTljNWI4Li5kNTgwYTA1MDliNDczOGQ3NGI4ZjRkZmQ4NjhmMzE3ZmJhMTNl
MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3BjbS5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3BjbS5jYwpAQCAtMTAsNiArMTAs
OCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MTEvYXVkaW9f
ZGVjb2Rlcl9wY20uaCIKIAorI2luY2x1ZGUgPHV0aWxpdHk+CisKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9nNzExX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9sZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZS5oIgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3BjbS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL2c3MTEvYXVkaW9fZGVjb2Rlcl9wY20uaAppbmRleCAyOWU0ZmE2NTkzYjkzYjdj
YmFlMjZiMjZjZTIxMzJkMzFiNjRjMDUwLi45YTAxYjhhZmY0ZWJmOGQxNWM0Y2RlYjE4MzVlNmQz
NDA4ZmQzMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9hdWRpb19kZWNvZGVyX3Bj
bS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2RlY29kZXJfcGNtLmgKQEAgLTExLDcg
KzExLDEyIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19HNzExX0FVRElP
X0RFQ09ERVJfUENNX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19HNzEx
X0FVRElPX0RFQ09ERVJfUENNX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxz
dGRpbnQuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2F1ZGlvX2RlY29kZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2lj
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzExL2F1ZGlvX2VuY29kZXJfcGNtLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9wY20uY2MKaW5kZXggYzE0Mjg3ZWQ0
ODdlOWRiYjZmOWJhMTNkMjMxMzdlNTM2ZmM4MmIxNC4uZGNlMTYzNThlZjM1MThmY2NjMjg2YWUy
MWQwNGQ5MmI5MmY0ZDY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MTEvYXVkaW9fZW5j
b2Rlcl9wY20uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MTEvYXVkaW9fZW5jb2Rlcl9wY20uY2MK
QEAgLTEwLDEwICsxMCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvZzcxMS9hdWRpb19lbmNvZGVyX3BjbS5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2lu
Y2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxjc3RkaW50PgogCi0jaW5jbHVkZSAiY29tbW9uX3R5
cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJjb21tb25fdHlwZXMu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcxMS9nNzExX2ludGVy
ZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9h
dWRpb19kZWNvZGVyX2c3MjIuY2MKaW5kZXggZWE0YTcyMWIxMjA1MjU2NWQ5ODE5ZjAwMDQxN2Iw
MjljYzY3NjdjMi4uNGRlNTVhMGJiNTBmZGY3NjMxZWZlN2QwMjlmYjJiNzk0ODY5MTRmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIvYXVkaW9fZGVjb2Rlcl9nNzIyLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJfZzcyMi5jYwpAQCAtMTEsNiArMTEsNyBAQAog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2RlY29kZXJf
ZzcyMi5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2c3MjJfaW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2xlZ2FjeV9lbmNvZGVkX2F1
ZGlvX2ZyYW1lLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVy
X2c3MjIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjIuY2MKaW5kZXgg
Y2I5NmMzYzE3ZWY4MTcwMjY0OWZjODg4YmEzMzI2ZGU4ZDUyZjFkMC4uZTYzZDU5MDMwOTA1MjI5
ODVhZDE5ZmE0YTY0ZDAyMTIxMzU5YmI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2c3MjIv
YXVkaW9fZW5jb2Rlcl9nNzIyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29k
ZXJfZzcyMi5jYwpAQCAtMTAsMTAgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9nNzIyL2F1ZGlvX2VuY29kZXJfZzcyMi5oIgogCi0jaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAKLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVk
ZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvZzcy
Mi9nNzIyX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2RlY29kZXJfaWxiYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJj
L2F1ZGlvX2RlY29kZXJfaWxiYy5jYwppbmRleCA5ZTU4Y2UwM2NhNDc0YmIwYzljZDJmMGM2MjM1
OTFhNzVhZTQxODg1Li41N2I1YWJiZTIzZGY3ZmMyYTJhMTk3ZmE4ODBhNmMxZDgzOWE4YzAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9pbGJjLmNjCkBAIC0xMCw2ICsxMCw3IEBA
CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19kZWNv
ZGVyX2lsYmMuaCIKIAorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvaWxiYy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9pbGJjLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuaAppbmRleCBlZGI2NWQwOWM2ZDJmZGFjZDc4NDQ4
YjFkNDk5YTY4MTRkYWY4NGJmLi5mY2IyMDc0ZGM5NTMzNjAxODgwN2RhNmQwYzlkYmUwYzcwMDg1
MDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19kZWNvZGVyX2lsYmMuaApAQCAtMTEsNyArMTEs
MTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX0lMQkNfQVVESU9fREVD
T0RFUl9JTEJDX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19JTEJDX0FV
RElPX0RFQ09ERVJfSUxCQ19IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3Rk
aW50Lmg+CisjaW5jbHVkZSA8dmVjdG9yPgorCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9h
dWRpb19kZWNvZGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiB0eXBlZGVmIHN0cnVjdCBpTEJDX2RlY2lu
c3RfdF8gSWxiY0RlY29kZXJJbnN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJj
L2F1ZGlvX2VuY29kZXJfaWxiYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJf
aWxiYy5jYwppbmRleCBkYWU5NTZiMzBjMDQ5OGVlMDQwYWRhZDNkOThiNjk3NTU2MTNhMDExLi4z
NWU2ZmM2NGE2MmFiYWM2MzRhNmYyMTNhNzU4ZTk2Mjg5OTlkNTMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2ls
YmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjCkBAIC0xMSw4ICsxMSw5IEBACiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmgiCiAKICNp
bmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgImNvbW1vbl90
eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVkZSA8Y3N0ZGludD4KKwor
I2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9pbGJjL2lsYmMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvaWxiYy90ZXN0L2lMQkN0ZXN0c2NyaXB0LnR4dCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9p
bGJjL3Rlc3QvaUxCQ3Rlc3RzY3JpcHQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5OWM2MDkyMTE2YjdmZjUwMGVjZjY5Y2QzOThkNzRjODFlOTE2NmJkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pbGJjL3Rlc3Qv
aUxCQ3Rlc3RzY3JpcHQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotIyEvYmlu
L2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3Jj
ZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIKLQotIwotIyBUaGlzIHNjcmlwdCBjYW4gYmUg
dXNlZCB0byB2ZXJpZnkgdGhlIGJpdCBleGFjdG5lc3Mgb2YgaUxCQyBmaXhlZC1wb2ludCB2ZXJz
aW9uIDEuMC42Ci0jCi0KLUlOUD0uLi8uLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvYXVkaW9fY29k
aW5nCi1FWEVQPS4uLy4uLy4uLy4uLy4uLy4uLy4uL291dC9SZWxlYXNlCi1PVVRQPS4vR2VuZXJh
dGVkRmlsZXMKLW1rZGlyIC4vR2VuZXJhdGVkRmlsZXMKLQotJEVYRVAvaUxCQ3Rlc3QgMjAgJElO
UC9GMDAuSU5QICRPVVRQL0YwMC5CSVQyMCAkT1VUUC9GMDAuT1VUMjAgJElOUC9jbGVhbi5jaG4K
LSRFWEVQL2lMQkN0ZXN0IDIwICRJTlAvRjAxLklOUCAkT1VUUC9GMDEuQklUMjAgJE9VVFAvRjAx
Lk9VVDIwICRJTlAvY2xlYW4uY2huCi0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0YwMi5JTlAgJE9V
VFAvRjAyLkJJVDIwICRPVVRQL0YwMi5PVVQyMCAkSU5QL2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rl
c3QgMjAgJElOUC9GMDMuSU5QICRPVVRQL0YwMy5CSVQyMCAkT1VUUC9GMDMuT1VUMjAgJElOUC9j
bGVhbi5jaG4KLSRFWEVQL2lMQkN0ZXN0IDIwICRJTlAvRjA0LklOUCAkT1VUUC9GMDQuQklUMjAg
JE9VVFAvRjA0Lk9VVDIwICRJTlAvY2xlYW4uY2huCi0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0Yw
NS5JTlAgJE9VVFAvRjA1LkJJVDIwICRPVVRQL0YwNS5PVVQyMCAkSU5QL2NsZWFuLmNobgotJEVY
RVAvaUxCQ3Rlc3QgMjAgJElOUC9GMDYuSU5QICRPVVRQL0YwNi5CSVQyMCAkT1VUUC9GMDYuT1VU
MjAgJElOUC9jbGVhbi5jaG4KLQotJEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9GMDAuSU5QICRPVVRQ
L0YwMC5CSVQzMCAkT1VUUC9GMDAuT1VUMzAgJElOUC9jbGVhbi5jaG4KLSRFWEVQL2lMQkN0ZXN0
IDMwICRJTlAvRjAxLklOUCAkT1VUUC9GMDEuQklUMzAgJE9VVFAvRjAxLk9VVDMwICRJTlAvY2xl
YW4uY2huCi0kRVhFUC9pTEJDdGVzdCAzMCAkSU5QL0YwMi5JTlAgJE9VVFAvRjAyLkJJVDMwICRP
VVRQL0YwMi5PVVQzMCAkSU5QL2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9GMDMu
SU5QICRPVVRQL0YwMy5CSVQzMCAkT1VUUC9GMDMuT1VUMzAgJElOUC9jbGVhbi5jaG4KLSRFWEVQ
L2lMQkN0ZXN0IDMwICRJTlAvRjA0LklOUCAkT1VUUC9GMDQuQklUMzAgJE9VVFAvRjA0Lk9VVDMw
ICRJTlAvY2xlYW4uY2huCi0kRVhFUC9pTEJDdGVzdCAzMCAkSU5QL0YwNS5JTlAgJE9VVFAvRjA1
LkJJVDMwICRPVVRQL0YwNS5PVVQzMCAkSU5QL2NsZWFuLmNobgotJEVYRVAvaUxCQ3Rlc3QgMzAg
JElOUC9GMDYuSU5QICRPVVRQL0YwNi5CSVQzMCAkT1VUUC9GMDYuT1VUMzAgJElOUC9jbGVhbi5j
aG4KLQotJEVYRVAvaUxCQ3Rlc3QgMjAgJElOUC9GMDAuSU5QICRPVVRQL0YwMC5CSVQyMCAkT1VU
UC9GMDBfdGxtMTAuT1VUMjAgJElOUC90bG0xMC5jaG4KLSRFWEVQL2lMQkN0ZXN0IDIwICRJTlAv
RjAxLklOUCAkT1VUUC9GMDEuQklUMjAgJE9VVFAvRjAxX3RsbTEwLk9VVDIwICRJTlAvdGxtMTAu
Y2huCi0kRVhFUC9pTEJDdGVzdCAyMCAkSU5QL0YwMi5JTlAgJE9VVFAvRjAyLkJJVDIwICRPVVRQ
L0YwMl90bG0xMC5PVVQyMCAkSU5QL3RsbTEwLmNobgotJEVYRVAvaUxCQ3Rlc3QgMzAgJElOUC9G
MDAuSU5QICRPVVRQL0YwMC5CSVQzMCAkT1VUUC9GMDBfdGxtMTAuT1VUMzAgJElOUC90bG0xMC5j
aG4KLSRFWEVQL2lMQkN0ZXN0IDMwICRJTlAvRjAxLklOUCAkT1VUUC9GMDEuQklUMzAgJE9VVFAv
RjAxX3RsbTEwLk9VVDMwICRJTlAvdGxtMTAuY2huCi0kRVhFUC9pTEJDdGVzdCAzMCAkSU5QL0Yw
Mi5JTlAgJE9VVFAvRjAyLkJJVDMwICRPVVRQL0YwMl90bG0xMC5PVVQzMCAkSU5QL3RsbTEwLmNo
bgotCi0KLWRpZmYgJE9VVFAvRjAwLkJJVDIwICRJTlAvRjAwLkJJVDIwCi1kaWZmICRPVVRQL0Yw
MS5CSVQyMCAkSU5QL0YwMS5CSVQyMAotZGlmZiAkT1VUUC9GMDIuQklUMjAgJElOUC9GMDIuQklU
MjAKLWRpZmYgJE9VVFAvRjAzLkJJVDIwICRJTlAvRjAzLkJJVDIwCi1kaWZmICRPVVRQL0YwNC5C
SVQyMCAkSU5QL0YwNC5CSVQyMAotZGlmZiAkT1VUUC9GMDUuQklUMjAgJElOUC9GMDUuQklUMjAK
LWRpZmYgJE9VVFAvRjA2LkJJVDIwICRJTlAvRjA2LkJJVDIwCi1kaWZmICRPVVRQL0YwMC5PVVQy
MCAkSU5QL0YwMC5PVVQyMAotZGlmZiAkT1VUUC9GMDEuT1VUMjAgJElOUC9GMDEuT1VUMjAKLWRp
ZmYgJE9VVFAvRjAyLk9VVDIwICRJTlAvRjAyLk9VVDIwCi1kaWZmICRPVVRQL0YwMy5PVVQyMCAk
SU5QL0YwMy5PVVQyMAotZGlmZiAkT1VUUC9GMDQuT1VUMjAgJElOUC9GMDQuT1VUMjAKLWRpZmYg
JE9VVFAvRjA1Lk9VVDIwICRJTlAvRjA1Lk9VVDIwCi1kaWZmICRPVVRQL0YwNi5PVVQyMCAkSU5Q
L0YwNi5PVVQyMAotCi1kaWZmICRPVVRQL0YwMC5CSVQzMCAkSU5QL0YwMC5CSVQzMAotZGlmZiAk
T1VUUC9GMDEuQklUMzAgJElOUC9GMDEuQklUMzAKLWRpZmYgJE9VVFAvRjAyLkJJVDMwICRJTlAv
RjAyLkJJVDMwCi1kaWZmICRPVVRQL0YwMy5CSVQzMCAkSU5QL0YwMy5CSVQzMAotZGlmZiAkT1VU
UC9GMDQuQklUMzAgJElOUC9GMDQuQklUMzAKLWRpZmYgJE9VVFAvRjA1LkJJVDMwICRJTlAvRjA1
LkJJVDMwCi1kaWZmICRPVVRQL0YwNi5CSVQzMCAkSU5QL0YwNi5CSVQzMAotZGlmZiAkT1VUUC9G
MDAuT1VUMzAgJElOUC9GMDAuT1VUMzAKLWRpZmYgJE9VVFAvRjAxLk9VVDMwICRJTlAvRjAxLk9V
VDMwCi1kaWZmICRPVVRQL0YwMi5PVVQzMCAkSU5QL0YwMi5PVVQzMAotZGlmZiAkT1VUUC9GMDMu
T1VUMzAgJElOUC9GMDMuT1VUMzAKLWRpZmYgJE9VVFAvRjA0Lk9VVDMwICRJTlAvRjA0Lk9VVDMw
Ci1kaWZmICRPVVRQL0YwNS5PVVQzMCAkSU5QL0YwNS5PVVQzMAotZGlmZiAkT1VUUC9GMDYuT1VU
MzAgJElOUC9GMDYuT1VUMzAKLQotZGlmZiAkT1VUUC9GMDBfdGxtMTAuT1VUMjAgJElOUC9GMDBf
dGxtMTAuT1VUMjAKLWRpZmYgJE9VVFAvRjAxX3RsbTEwLk9VVDIwICRJTlAvRjAxX3RsbTEwLk9V
VDIwCi1kaWZmICRPVVRQL0YwMl90bG0xMC5PVVQyMCAkSU5QL0YwMl90bG0xMC5PVVQyMAotZGlm
ZiAkT1VUUC9GMDBfdGxtMTAuT1VUMzAgJElOUC9GMDBfdGxtMTAuT1VUMzAKLWRpZmYgJE9VVFAv
RjAxX3RsbTEwLk9VVDMwICRJTlAvRjAxX3RsbTEwLk9VVDMwCi1kaWZmICRPVVRQL0YwMl90bG0x
MC5PVVQzMCAkSU5QL0YwMl90bG0xMC5PVVQzMAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
aXNhYy9maXgvdGVzdC9RQS9DaGFubmVsRmlsZXMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4
L3Rlc3QvUUEvQ2hhbm5lbEZpbGVzLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDVmNzQxMDE0MWU4Mzk5ZjJiNmI1YmJlMTNmMjYyZjVkMjg4NmU4MC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVz
dC9RQS9DaGFubmVsRmlsZXMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1ib3R0
bGVuZWNrcy50eHQKLWxvd3JhdGVzLnR4dAotdHdvcmF0ZXMudHh0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9JbnB1dEZpbGVzLnR4dCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9p
c2FjL2ZpeC90ZXN0L1FBL0lucHV0RmlsZXMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmMjZiN2FmYjZjYTg1OWE1MjA5YzZjY2YzNzk5ZDU4MDNiZTQyYTMxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2Zp
eC90ZXN0L1FBL0lucHV0RmlsZXMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAot
RFRNRl8xNmtIel9sb25nLnBjbQotRFRNRl8xNmtIel9zaG9ydC5wY20KLUYwMC5JTlAKLUYwMS5J
TlAKLUYwMi5JTlAKLUYwMy5JTlAKLUYwNC5JTlAKLUYwNS5JTlAKLUYwNi5JTlAKLWxvbmd0ZXN0
LnBjbQotbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotbHRlc3RfbXVzaWMucGNtCi1sdGVzdF9zcGVl
Y2hfbm9pc3kucGNtCi1taXNjMi5wY20KLXB1cmVuYi5wY20KLXNhd3N3ZWVwXzM4MF82MC5wY20K
LXNpbmVzd2VlcC5wY20KLXNpbmVzd2VlcF9oYWxmLnBjbQotc3BlZWNobXVzaWMucGNtCi1zcGVl
Y2htdXNpY19uYi5wY20KLXNwZWVjaG9mZmljZTBkQi5wY20KLXNwZWVjaF9hbmRfbWlzY19OQi5w
Y20KLXNwZWVjaF9hbmRfbWlzY19XQi5wY20KLXRlc3RNNC5wY20KLXRlc3RNNERfcmV2LnBjbSAg
Ci10ZXN0TTRELnBjbSAgCi10ZXN0ZmlsZS5wY20KLXRvbmVfY2lzY28ucGNtCi10b25lX2Npc2Nv
X2xvbmcucGNtCi13Yl9jb250c3BlZWNoLnBjbQotd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMv
Zml4L3Rlc3QvUUEvSW5wdXRGaWxlc0Zldy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVz
dC9RQS9JbnB1dEZpbGVzRmV3LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhi
YmRlMzBkNzMzN2IyODM2ZGM1M2EwMDUzYTNhMzA5Y2UyYzQ5MC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9R
QS9JbnB1dEZpbGVzRmV3LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotRFRNRl8x
NmtIel9zaG9ydC5wY20KLWx0ZXN0X3NwZWVjaF9ub2lzeS5wY20KLW1pc2MyLnBjbQotc2luZXN3
ZWVwLnBjbQotc3BlZWNobXVzaWMucGNtCi10b25lX2Npc2NvLnBjbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvTGlzdE9mVGVzdENhc2VzLnhscyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL0xpc3RPZlRlc3RDYXNlcy54bHMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYwODg5ZWY0ZWRkYjUzYjUyOTVlNDI0ODA1OWUzZTM0NTIyM2YyNWIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMTUyMDY0CnpjbWVJYjNBaTBxbHw2cCRP
RzNnUiNVenNtazlrYjs8fEtqeTBWOE1fTHt3QlhKZHppUDJgYFg1QVNlaV5JSERxYAp6SU4mX2JJ
TGBfV0M+cTM+IztMSmV5VmJVfSkkVnBeRn43Q1ctUzxAOFF+VDZDPWlLTV97cmxmT3pFZm5hUzlT
S0AKelhScTItX3R0KiplJmc8ND98YjcxX1dnPFJldlVWRCV3TS17Wj8+IU9iTVd0MDJrJkNjQXBw
ZEctTGBGOGhkdit3CnpfLTcxSWZCKlNrdW1iblAkSFMzQz01e1d8SlBoVzFLRT91IT9KOykxKmIh
cVZqMGElc2o4Un1mMCVsaT8tN3QyPwp6KmFQRSU3PCojdWd8Um9ySntiRkFKUDJieWowYT12azh1
RlRBald8aDJWb3FIYVJ8bnQ3PjhqVGomVElXa3Irb3wKejlGMWBkI3pLcm03PmhCNkZvclFrRmgo
KVBGdmMrXkZxVTh9I2FNPiU1Ujc5bmo+Qzg7I188QC1GOzJqRTd7LVloCnpDdDtrN0BvPGI0Nz5+
ZD4xPjtuVk1gQW4qVjxwQ0U3Xmg+TGZwSTNycWNQNkhjbnJxYjc+fnR4OUxEMUAmY1MjQgp6I3VH
N35nbUVzJGxRRXV4dT9waW5qN2Z+dTd8Zz5Pe0NeNSNFeWV7SDdoPGYjY3ErenZqMTNxVVZON0Zl
I0pDdmEKejV7eWs0bj14aUVGMiVTRTw4cThHNyp9OUM0ZGR3O1M3S2ErQGVHV3NGfE5UbDNvfnVS
ayVOZVE4dm95OWtIOVk/CnpmQSlsOEl4LSk/RkBwPVpIUmQrRXdNKklsN3ErK1Z7ciszbT97akRD
Jj0hOCotVk4pdDVqTk1HXlF8OUBHVk56Swp6R3Rpb2dMcG5haDk4Sl5QbWJWPzRoczw0eVJsTndB
VkM8KTI3MW1teCRqbzU8SGA/X00mM2dwd0JPSDdGKDEqfXwKeks3WEdPXlBzd29QeWxfSHZLZEo4
WERSRz1Wdm5gWV4qVngxPDdmSz9JRSVOTlhXbl9oVUdyfjhIUXhAdXtEflBiCnp4Nlp2Q1RWd3RT
PDZJflc9bCQ5MXJZOHFDT2J0Rl8pOHpEOyFOMmooaVBuZTc3SmF4NHpDTl9JME54RT9vIyZjYwp6
QGMmJjxTQD04VEFLVHNTX1dnRzZQdXVON0B0Wjk7WWhRb2pDeXJucDtGYW99ZmZNWTBGUzZUJT5+
PzJ0VGpwYy0Kem5EMUw9ODE/Q2cqbmZlIWZvbjhpUE1xSTUzMGx8eUV1MFVIdFY3TkR8SVF2NExW
WmlrckAwOHUofkhFPE4kY3FgCnoke3lYWiU8Wnx5NTN4cVJtRl92WFYhUVRTdXwwYjNhYV8rbWpf
PEtZMyQ/dl9KJHo0RnhLY0ZsIUR+ciNfRkszegp6X0xeZ2Q5Ji0lZkQlczEqZn1VMms1Ni1kdy0y
RzZVYVYwK0prYkAzQj1IUD5lUnZtZmx4a3Elc3hrdjZsX2RzMGgKel92YHhvbGdecjJeV15URzQj
TGQ8RjU4e3M3N2NhSjFJKCFvI3xkK2d6bjM/Zz83OVMzYlg+RG4oVXFlSEpEdiRWCnpfWHRhemQq
cmJ+OUpLSHRfYFR8ZzZJUXs+QkhSJCptU0VLcCkjSHZEdFI4Z0tWQW0xTGFvZDAhZlUyPX0xbHso
bQp6WVphNXJtelBFLWFRQWB4M30+YCt5dENVbSpxU2JueXdCYmQ4U2BKOzI2MStEZXJfQjVKSX1T
NHtkSClXIU9rTTEKejhuKS0+e2o2Ujg1NmlGU3pUVTJYb3F1bkRlXi1FaVV4MHMyZlBhNjBlQH1w
YVpHZUFhZkRpYy1uKlQjfjleUzhhCnp1Z35pT2VBfVA7eyV3RWl7OTZMXmQ/M0pvSUtZMjR6YHIy
Q2U8SHhBYHR1UHgmeUtiQVkzcWNxZjkkJXdZfVp8SAp6LXRwIWcmRD5ZbXtkYVp6K08/bE07QnlD
PHhnV0ZxSmskYG97fnhofntwc2xRJE4reSNmSW12KmBURVB3fERRNncKem9MX3dIKX03ekJwNjdT
P0A3Unx5Mlh4THl6VUgoMHd8UnUkX0grQV5BSCtXcXpRPW9aYWxoRH0kRXtDV3xHMy1pCnolenF5
S3hvPkE0elA5WjReV0N5OyFyIXYldTZ5cGRDKVdBWm1najN3eUZjYnt1WEI2LT1pJDArZDJnTSE+
K0o5Twp6eGtyY3A0cXU4TEA3N19yNHF3Xi0kXzBDdkU0ZWBLPVhtcXVkdzsjPHNzIyhwUmI0IUg3
e0VSQTlgPHpzWnpGazsKeiNPMzl2b3BEN1RzMnxZMihAWiNeZVohWTx6P0BXPF8kbmJPMkEwJk0x
REtQZjExUT8wMURLU2cxMVImUDE5Kk5WCno5bChOO2JPNnRjcXl1PkJCXnwoWERkXytmem9ZfD5Q
Q2VrNSlCX2YjOTxWNiYwTmd+VDE8a2pkJTJuZHxTMWtncQp6c30/LVdzfldoK003YCpvKUJYVmkz
IzZSeiNCQVJXNC1WRVIhSHNxQU53ekktb2BtbkZfNEgoOXcwamMyMiMjVHIKemFRckJPZSo4bnVE
eXRqbkB3ViFNNGFgT1N7S1h4PWBURGtTezZ9PDZhKk5xY3BKZHlZbjxuQUFod2I9akBScTU3CnpD
KUB0Km1XbjRZXzBsPHhMKzlJY2ErMmxDRkFJM0deO0s/P2A0WnlRUzZ7dHRQPTEocFBFaDV4dVc8
TzR7bjxnYAp6dTNGJGIjckgkMlBBJTcrYHJZcS1TOTVDbF41ciRCcyQ5bkBhXmUlLUkmTTIoPD8y
cjE2PHgpdEtWS0RDWnEyRmMKenNgUiV+ejhkKjFhO2JydVF5cFg1dTQlY0lzei1LfGk7U2w7ZV5n
MW9ee3NEcGxYTnN0VUR9U1pEaV49cHspeCU9Cnp6fXFKI2IlazdZWW9IemwtI319TmhFZGRSWEY0
YjV3cnlLJFFHRD0mQUZQUnslNXxiM2hxPilmTT5KS2dlI144Tgp6YDw3OHEyVkZ+aClxPS0qPWlf
bFdWNkgyI3dKNW1tNDZqPCR4YjdYVWIzV0dWKTxIT2B0ZDs9dkJ6R25XKkRjLXsKem15XmBJO35M
S35RKXtjPClqaW9XV3xGTmRuPHYyPUxLUk57dn5jfDVAMUgjZiQ0dF9HKyFTNkR6TDwodzZXKH0r
CnpDJkJ3KXkoaWhhdlV3N2B8NWNkO0t3cCNRTmUrcGJyMlk2VTkxZFRZTTYzeiN0OzNWLTlXJSsr
bUNjanYtISV6PAp6ejkhOSs5MnpxVHQ0fnVuZURORXhDZTQlVjZFbiV5bUNjampePCV7bzBEVm9H
Q3BqITtsSj9gLWFFa2ZESGV5WnEKejNNbzdaVVlfQCFXYjRaMk5kfihuMG5wY15kNkw2cENUVHll
NHVgYHhzVXBeZEY5TzRwSlNiKzh0dCo9K0lrME9JCnowRFZvV2xpVzEwOD1pWE0jb2ZyenBAUnp0
QUdVaCspYnp+b2pTRWdRSCopRlpyIXt4flo0YmJePnFCXndLOFVCfgp6Z0x1TmQ4dm5KUUV3KjFf
d0QyVDx7QGtneEtsc15peDZSfGZkOX1lXnpAZENeZkBYSTAmNVlFfDlNb1dAe1RqclkKem5LIWxl
Y1IlYH1aZX07JSV4Sy1yVkdVOzV1VHJkOz9XV2ZMXjB6PEkmRnQ9KjhMT0spcz0qOWokSVFXOTQ7
RV92CnopWV9sal9iYzdaOT1ANkp4fHV9e1g4M1lKJXEmMXxlKkpzaCVtYU5oNkxtOHE0UUFUNndL
a2dWcmBGIzhpK2dvNQp6ZCh6QlV2KGdUTG5YdzNeWkMmfkN0dn1WeD9CJHpMbHktMX5uWDF5WnVL
YnJ6ZHxXclB3e0ojSytUamdtcyFIM3MKekB9OGY1U35zKGdaJD9xdChHNnkqTzUzX30+dXVsSCZG
dCUmUUl4ajAhQXc8WVRVVVBjTT9jcmlKamdlckN+ZFVDCnpPalQpSFNOYFJAQUopejZNPjctNk4q
amNraTNwe1FqSzJJc19xNUhocHk5e1d2PExmVTZyfi1+VjVYfEhrPG9pXgp6ZXp8VURmOFVJdnY/
Q2hLUkZ5VXxgdVhwQFN+cWltWiQ/cXRGJTQjX04qZnZkOzJYY0puO0c9WUNgdWJARmpIMDkKeiRt
bVVYTnJtPXZiRChjVlFRQkM4blgxeDhNKm49PDRPJW9pO3FmJT95V0RtMlZjdkR+IVExOHN1YSlU
Y3k3bntyCnpxejlMaUxRKCN0MllRb01SZkk8JFhQJX17ZFBxNGJeeTUhQHM1ZmE8R3NlODtRJX0k
KkorenpAWVZqdk0od25yWgp6NU0hPWNeQ29ATCFeJW1hNFMmKnctbFNETXByYElWY2olS0lVUVAt
bl8+JkhNbFVCMkQlcFlFe0xZczV9eChWP2oKentLVXlNSCFmSiNvJXo7LXcjYDhnO0d8ak91RTZ2
N3JVPjM0PGxQYmYmOUBQeWxJKCoxMUg2WlMoJlVFS211e0d4CnpTK3taZSNzJH1RUGRLcFd3akkk
PiRkKH5DYzVUNEYlMHt5Sl9EK0o2XjZqalMwbHZMdDRReisqTzglMVhYU0E+awp6UmtXWkJaUXE0
JThZc3xKZnV8OENUe3lMUntvcU1jOCNkZ3k7QStwV3l8KFFEemI/ZWg7QSp0bzRkVU5aQFEhVlQK
enJCezNfJUg5LUtQdHVOOGVFKEBYPVQjZVp5bFNKNFM4YTM/LW4yZFhubU9CVVRyayt9JURnISth
dVBiPCtNUmM+CnpXd2BHIypLQ0o8a01RPjA0dD5id3pKdXRjOUl9MHM/UENeUkdaKTdrPHtkTTQr
WDVWT0RmK2NHKj9ac0IoJGAyVQp6aT57ZkVCTmxsXyUtXjxDP1RCdCQ0QEIxfi1sbG9AbVd3d2BQ
RVhFays7cWpAKjs4OSlaZH53KT94X2FHeDl4JjwKeiR9TVB7V0EzTUl7QExidTE9anAqeFUmVSU7
RzAqUz5AKFJTdWs4XlYta3kySCMqR2xfdkVCMndfVDRyWWpqMyRkCno/M09DdTUlMF9lVzFZRW5N
JU1+bkw3WHgqeG58dzsxJXI2NDs1ajtIN3AmfGxhRVJKcDJTK2J9Z1lETXtSc3VMLQp6NG1rQ3lf
SD5sdWUwYklfZ2Z8V0JqMjlWfCR4LXxLJCMrI0laYFolVDxsQzBOPEYrM281S2NaP29nNmpMcEx7
b0UKekBeJjJ6T3kwZ1Y3X2dJJVJWUE8rXmF7ZTktSWQ4JTU4RH09VXROfSkyNmpOdEcyWnQlYl43
ODxBJSNvM1EjUDslCno7JGN0ZSNuMio/VVk9OyVAVjxYMVg/IUApPWpwIS1aamV4eVI8NF5+S2Vh
fkF8M2BWdz8yV3AjKGs2TzZsRD8qXgp6MD9jdTBiaFc1Y2VmU3BsYzM4TmIme2Q1cT07PjNKJlRO
YFFkR1FLIVlkO2pgKD1qbjQtMl9kc3UoViYlKm17YkcKekM3cFAwITRua2BKUzI2RSFSYXtLP1E2
QHg8bXBpUUNmbDBKc2J1d0FfLUZaSWIkaiRCVnY1ckAmUD82NztRYTE2CnoyNm4qdCFafksoNnlJ
eSlzfituTC1sKj1CR2BgN1A3VFB4SWwoYVZMbChhVXdYPCRiKm1FJXBWR2NLTDY4TmJ7IQp6YGFu
IzVoRnlidCZae00jNnx5Vm1CdVk9KHNOK2MrYnYkViFtYT5PakdZQE5iTlZmfn48ez1TaEJJWnIq
ZytHXiEKelFhelNaSiR2MkUyQ1VYX19mY35TcX5+bT9WK00paWRlem41O3VPYyhES15lZjBwNUVM
Yk1+PVFhS1lRenBLQz9jCnpfNUszYXk7RGNwKFJMNmV3a3NPK2NTODY0PGZkdHN0YWY9Xy10RmtY
ajtQZCtobE5jenVSMnZyRTMzU1MrWkJIQwp6Zl4qRF5Ee3FxQWZhckZgZWBqTm9eS0c8YGZ5LUNl
ZjFRVGRTcSN+YnkkcXxrNCg7PnxzTjkyUiY7X2BQJlkpQ0kKem5EY0R3QE81Wkd6V1FVNz04bitm
cmkmJnc0OS1rI3AxQlRQJGdUVEg/X2dGO1ViPG1NKmFCQT9LNn1DV2EtdlhzCnpuaW1heytTI21G
d2BKa2w0STN4aEpITDl0LXNhVTYtYG56VUtaU1dTbnohRnZgNWd7NypXK3woO2xKQ19GbnYzQQp6
ZSg9QXcld05wbDtMQXw4STQ7RUJQYl53fCozXmNuJDwwJVgqSDJBUFUkSk92JWhjZSlRd044S0BI
NG5AI21kM2EKenArVzRsV14haDdAeTFRLUU/OWk+Kns3e29IOVdFWWwmN3VRdXlPaT1NSGpFV3NJ
JFcqbFopNGw0eV90aWM4TX1JCnprIUVUbC1QQ3d+UjNuS3xJYUJGVEM3SyVQQlVodG9RSSkzQnFl
P2E5N0JGM2JWfko1WVF8VkQ5bml9bVJTTDEwPgp6bThSMDhOO080WVdMQXJiI0hnSTleciRwYm4q
dWVrdExCfSphUiEma1h9cEAreWw3XzJPc0MkKDZ2Um9iOGc3ZysKeng/JHR4bjxqRFBOVmNlemsw
Xl5YbXY3OW9zR1p0UjRhNjlHYW9LI34jIVdOSSluIVJWRksoWUdWLTEzRjZMbkl7CnpPQnQ+JiQ7
TW5JWCgoRSVGPGR2N3JiZ3pCV2tpOzB0Z1FTUWt1NkoldFRkSnBuUUNsKFNkQWxZODhhZHE5QDBY
Swp6dlgmOEF2YkZMV2tQfTxBYlVEI0IjOHo2JWk3blpoeUF0SFlSeE9mSXV7bW93djhtU1o5KU5v
TG9wdEdQRjtwdHAKeldjQjk2P1FsdHEqe0YrO28zZClOZGg2aEpoX1ZAVmBFZ1RMWkJ7U3JaaWh6
KTsldk1DdHIhfHdibjVBNlJ3bFF2CnpYaHd5UG4kczdFR0FDY1UjTE84aVAwRX5uPHV3LUpyPCpn
PCZ4a3E4ZGhNVHowWUFya2Amckh6PjFXS0dGN2AtMgp6Q25FZkdiNEwwWkY9dHN3Qm1HPmArc3xe
Jk5JenJkYlZWYEomIXJLNXg7WjJMPzlCUFohMSozdVBRfCYoJHZAZHkKemd2WkJCOXhqXjclcEpG
KlcpN0R8VyMoblE3ZGlhKSZXZlI3dHBIKzklViFxQStNRnphRj58Xzt0MWh0R29HNUBKCnpMbEoo
dUlxTCRlJT9VcWE8fThhPHFAVG1Se1ZlQjxeZlA4bzdraXxpQk4yWU9JVjFneW42b1RhayQmUTAr
RG83MQp6b1JOT1UlO30wJXFAVEUkX1ZtLXU4Uj0oZFBKRklScFpBbUVUKHRsV2NoMEREVnJGbHVm
ZDA4UElvdUkhKVlNSFMKenVzKEghIytxdjJoKkFTYmFEIXBfJW88cG1sZUh5Z1BJckZRSENDSUdI
NHJ4I0peZ2ZaKS1fZ31sWVUwYlM9T3NhCnpLWEdtQzwhM28ocUBPVyF5NFdOQSNGZV9JcEtpYGJL
T15RVz5zNiRteFNzYSV2eiM7MSZ6THp+eV44YTU2Y3dlWAp6cEtpYExLaSE8T1EzSWBXVHtSRl8w
IXV+fXMtX3hQcEJsd0dlKEkoZ1NmNHRrd2dld1h0UVo8cVlUemhKdyZnUXgKelV+TnYrbVomLTFg
Qm0zZ1pCRXB7UVBsc1FlITRtOThtckFvS09eUVc+czYkbVAqeUtMJVErK2NqRzVFTDlfYzQhCnor
UzUtclhRWkRJYkMmZmcob2JsPG0hSVhGayQlUl4+RlFPYXBTWWcoXndaNTU+MVN1b3pIOHVkPW4q
aUIjbHg7Ygp6KmZHJn1BKyo3Rk9ecXdKQzhNVHBEdW5mXmFrMV5TKmlBUXNWX0c0RXlPeiVeZ3Rh
K1lVfUVOVUNzfCErd0stVmAKejVxblFSLUpFcnkpI2p3MTVwJE1CRTdES2dYIVA+NG9ITnFUbV5v
ZVNhZWp7Qj1CMX5mWnE3SkFXOUJUMlItflZ9CnpRMXxrKW9ITnFUbV5vZTFpdTRsfil0LUwzSVYx
aC0lLU1HI0w9Q2pnYnJxX1BzLWc7Mik2SE9RWVFFRUMkKjhIRAp6WUc4ZnBofTw+Uno7VUdwal5S
ZWJAfGlXVEhZYUxKKVNUfThzJXh3XkN1LW1yWlp2eE8+RV42IXRUcmU4akZfe20KelNDTXw9TXgm
Ulg8KCFkeiM/MHdya010OUYwWF9ZNmI0TDBaRj10dD9CS15lbXczbmFkb1JOT1UlPDFZP3FAVEUr
CnpfVm0tdThSPShkJmVeRGUqMTJqODk2XlAoV0teTVFzKTY7WEo0R2RHPlpUZjRwRX1+NFpLe0Qy
U2BFYjIhMTk/agp6dXI/PWFPVSNfXntIa2xMSFlhTX1JNCYoY3tkOUJJSENDR3dlI1hwTSl+aVRB
YWg+WXJYRXxyMnBEfVp+KmR6VksKejhQTDtESClvYHU1cCRPSEQkLUEhUFFDbXI9WnkzLVc9PmJI
QkteZDwrMCMhcVhRWkU8SWNLOD1USWFmSUFnLSpJCnpqNEQpM0hMeU40RXs1P19IYFQhVSlWT3xH
R1BFWCotNyMkVj1pZjNZWkpGY2EpbjcpPD9xeygmTDFtQGNoWiNTKwp6SkxpMWVnPVN9UW9UJmI/
JCMqdzxpdG4rcm12dEAwX2ElfE9tJFJxJTl6REJUbkgxbGIjYF5BTlB3X289X09rd14Kel9gV1JD
X2oyfFctPWstREg4SHtXaUpANUUtUnVkemNoOFEkOV8jYT1iayl+TlMocUhAJUoyQ3hjRVZMU1hy
d0M8CnpRQVdiYElBbW5CRDw3ZCZ7cFFOZHZiPHtaI1p5ek9GST1ANmY2ejZwKWFaJWY0ZUQtRDdI
Yk1ucj5aMX5idnd0Ugp6SkopTjk/cjlPVmR9MVUkTXJTY0UjJm5CaUV6WE5eRyYjbzdWcVQwSDdU
djFtI1c8RThxcUNTN1c0Z3QldyYlcS0Kem8qWkxvRil6anBpfCFoYjd2bl5Gakx1P1Npfik9SWBt
MjdnTTc7e288WT1KNlVLVjQhO3ApYGVhRyhmOThFJntACnpeKT8pKzQzbUx+QmQlZj5VQWxTUVlW
R3AxcSU5QClgejlOJTdVLSZWYjV0KV95bkhPcHY3emYhd1pWJkdme2s4dgp6Sjd7QkJkPnI5RmZi
ITw+KUBzUitfeHB4P2x5eGdEQTR9d2ZhJmJvNE5YdGkoalVLaGhgQl9+bjxhfipvcFlIZGUKektj
a0I4UmAoWGFWc0xVKUVAalNJPStFIUZ0bzVvdFpaP3stSnAla3gwUXt4bzxmdlIkKyNYVChkWCpo
RlRVVGdPCnotUTYjdlplRGZLJD9mdj0jJncmb1EwbVErPyRZTFZpP1hPb3UqbzctbDN9cSZwPSt7
O2RiZ3plclk5OyFYRTg2dgp6YmM8eVglKiRpPE87MWRXck56NyRHYzNBUSY1Tj03clk5OyFYRTg2
dmJjPyslMD09ezwqTUVQdmhWIXdzbT18TSkKek1SJFM3JWNJO0lxe1FlZj1FV0dXSUxvKW9QTFc7
M0pnfmt8Y2RmbEhTTjstcTg0ZCY7V3dfVU10SUBGQm0tK2lWCnpIc15OdnFJSHtCazd5VUpXJHJn
b15aTDRSTV5+MjJlaX1tRHlzb2JKWE1qMntFPCNJKCs7NXV2YkBSc2g4I2l4Ugp6PiFiWjBqYDZw
Z0hgP0YwZEVHaWhgI1RjbHViVmc4LT43LVo4WFdFS1hwRnoqeXdVIX4mRmt1RXc3Kzlmezw/WGkK
entWbkhSNntydGdIfUgpZ1F7IUIkb1lhJEo8KFlTR2pEPktgKXUlNTc5V3tOcHZnKl45YFYwTFBa
UjZWdzdoayQqCnpZV2pTb2ZHITtgZS0kO2VwVjlMMCU0KU5PIz9JYHtNUEd5WiVxKmY0PColQjJi
fkRITzk1LWBXQDhXJTQ2NkpGXwp6YkcqLXlHclFHQF9qemZZJnUtPjtwV3xqTz50NExpJWM2V1BY
Tzh6ZGElTlppcUozVUE2ejgqPklvanZ5JSVRaUYKejtfR1ZaVyN2PyM5MitoOXJ9UzRAJVphKVNq
Rm8ocGZwQmR0QythZCNzZSRWUDVqMGxVJjZBZ0p6STx4eFYqSUBUCnotdCF6JSVJdmFYV3VHV3Bl
eSl7eUR6VUtlQ2Zqbzd1ZG1vMXdvcjxmalZTdngjcFBeZSNGYzJQdGZkKW9qaSR2Xwp6K1JCSjQp
c3xic2pKVT1VPDhybiM7ITNudCo1cikxIz8jXnxaRHF1allSbEVfakpQSGU8OHJuIzs/aXR3NCVF
Wj0KenRBLUxsckM/MnRYO3Y/ZXVeUFRaP2Azant2T3w9fkBSZGNHdWA5fUAkX2BIc01BPnw7U3ZO
Z3BGRS1qJFgzNkkyCnpaPT5kfj43K1ZDQj9ObkFpSiN4cWpoZn58XllkITVHfT9iUmYwRjt2Xk95
QkokXlRgc3srSUo3YFFKVCU9dz1BfAp6Mnx3dVVeMDFtO3RVdnhGcHpHSUIyMnVoQEZpPStMbG5l
fEg0YVlgTThjMiZFLWhpdmNYJVVQPk44ayprTWJLXkYKemY8UDVZc1BLVlBkVUM4PXVXTW9+SEJ8
TUduZWxHYk13d30tPFV1cHRuR1plcWpqUF9QRX1ZITNSdz8xYkwhJlBKCnpabDVTcUtAR1RScyVK
WjFDblRHNEg4LWVkKXMhdFBWYCkpMlF5RWRFbkpPIUJNcFdhU3NCRGtHI1YtN1lncThMKAp6TFVa
PXdPdTFGZTJ5TFBoVEI1MHBzTTFXOGJ2cS1mQCYrYSpTRVo/cHMxaS1OVEFtU0FkMFBffGx7MXdR
bTE2M1cKem42bHBaaEo5VVhsfk9mMVVTNitVYyspWDlCUTdPdyFZK2VLMzYzJXRhWiU5P0RrVXFf
Zlp1JDF2MGRANVZXPCs2Cnp7Y1BXJVckbE50WmlnciVISTs7bypzRHM0ayNMMHk4e3plMmNxa3pm
WEN5SV82ZURGPnVic2E9QXttYTRxJUBLbQp6TnMxQS1UJmE8YUJ0K3RqcSgraXBxJTdhNWsmTVBp
UVd7QihCKmxtOyp7UDk/Qn1DJGtxKDxUIT5BJk9DXlNWO1YKekNkYkZVVXhzZUJ4P2FGRVRubUVk
PWo4WkFqO1YmTEshZDN6ayl+cW58MD94eUA5PVBTXjw8eVcwKE9+ZCgxYz0mCno3bEtxJXR8VDtR
VHJwKVkyaH5KSE1DRDluTTNyVyRFWkdAUlJXO0Umcz90PE9SRWVoQzAlazxEdzQoSGdzR087Ywp6
c00xVzhyOTMwNT5SbklvczdnfkFRNi12a1dqI0hyaz9MKCRMeyFkSGRRX1VKUyRKaHBSJE90dj5y
JGZWQmtEIyEKej5UMDRIUjhralpGelRBMzdAU1pOODEpVE94PmghPlVBdTFlKVg8c313UmYmWTxS
LUlncnptNShURHM8YHE+V0ReCnpoTGVyQ0dMalJTKztueiUpRClSQm1KP1pgdjlqI3ZMPyQ8KHY1
fVI9YXcxREw9OVYhaEdQeDtAaj81WCRpN2U0cgp6U15qZShsVXVtaCRWeXs1ayk7fVFtdz1xZTxs
WlZlR0d7QyZHUkBkNUpucHR2b1VSQmV3UUYpaEUwUiZxb19rJCQKeiFYfndYNUBvWDJSVlFweEpK
VWxaeUl5QUtzIyFIVHk9RH5+Vl5eSzdVd1kqQikhIzQ1cV49ISpzITledTdvWkgyCnp1RWI8VURZ
cS1XWWZWdSlsYktQYm49Q0k4bk5pOTtRYkxyYSQ7PkQtT3VCezVpKmkoTSV1PUZzQ2k5fXFGai16
WQp6R05ZN2dtaz8hWEdCZTV5bGtQSC04S281MWxxajlhJXFSbVVgfk9xNl9LUn5ybHVHclJvUkZJ
eGYxandvREM+MDwKel5DI154RWNZVipLMmU1eVVDYURReTl+PiVnMT04dztTR00+Z3VsUiNTRmRR
SmFzQDMtdyljeE4qLUtNKGxZQnspCnpXNzN0UlVUMDMtQjtVNml0eDJoT2wrSSprbDw2a1IlUyZk
SVpRYUApZmVSQjdUSDRKRndSWFByVC19RGdGPyhPQAp6ZHRXKEErVFJ7cEo1diUmVz01SEF2YkBH
KkNiVnwlKkU3bn1XTS01WkNmemtBR3NAYiVVKypaTCQ7PkROQ1RJViQKeikoKWoyLV5xITwzUClY
Qzt4Qjg4O1h1JCloVHxgNWlzOU9BWitvQjYkR2tTYVB+Km9ab2k/VnVGRjNsYXs5Vi00Cnp6SU12
UEVCVWY3IWVYYSgqOWB3bSg1TDM1WD42JGNVNmE+dD5VZ2dzciFMRVhnNGVAUVVZQW9SY3BXKmxU
YVd+PQp6TjgtRzhRenYqR0grNU5fNlRCWGNeMTdUbCFSeUdXVUFheTBkTXdVc0grNiM3bTh0dnhZ
czFwYiUyX3xUcTtndEAKeitTNE4rezA5dEZXRkJROFQhOH15RHZGSGl6dFZHaUB+VFohbXVjbThZ
YGtzUD9HUi18JiQ2NE5rXik8SmxaPzMyCnpIWl91b2doLXJgKUpQSkhsd350RGt8cHR4bHR4a2BO
aXBKPEQ+YWcoMzZWRz5zZ1djWURhJmhXQnl3QmdHflJIWQp6bHR4a2BOaXBJfFplaz9rUVdLKmhh
WWhtJnNUdHxOJDsocXhyTiZHeWtxZSo7RGIlQnNST3tWclU4ZHghPCRmN3UKenMjbiFfdnZyeUJP
WTsqMFpPanBPKzl6d1plX1NxSl9Mb3RVMlVPcnMmaTk5K0N3SGZQSyojPiV5eGtzYHQ3MT5qCnot
USsycmA7JVg1akNtJTt2b01+R2FVSTVVRnJKST9KZEVkS3lhM35jN31zT0cyOzs+VkZUdUQwPEUw
b2tWJSZ1Qgp6R0tgbUZ5YU1COWo4fGczM2dndW51ZmV6bDxGeSNDISsxVCQ4IStDOEBnfEhuVzRz
MDl0ciV+XmNzc15CRnk0dnIKekV7dTAkeWEoZ0c4MUtWKUtnTypYQUhldF4jKW1MSWpQVmhTazc5
ZmI8S3F+ZyExeUdfciFZUV5AZm5RSVZ0ZndjCnpIakxYYks5QkpRajR4dCozRjhpb0ZKcFdLPDQl
bVBWdGZyX0U1PTxJVSZwdWA7fk47PyNQfUEqdz11cWhAbS1BWAp6VmNkaTk0O2M0aWQ+YFduNyhj
fUw1eXA9KHt0QEZvakd0aXE2VUkrNT8lJWQ7K3QyWC1mNUdAeWpHdHJ0MF5ecSQKenxBejReakRO
QFlITzZsK3tzWkg7N3s5fiNKO3J9eHsxP1c1V0JkVypqfklXI18lcGA7VkVoSCtldkgzall7TWB1
CnpvT0Z4Tm4hK2M/Wj1QRGJlcmtJOWliWWRmclVyNCZtNnpUVzwjdExIVyZPblAzMCtRfXFUSlpZ
LUQjMkhkOGhMQQp6XjR2fEg7KDZyYzwpdDtuXkcrZXs7ZHdjRWlzIU1EeUd2PGA9YmhXbFVZQChq
USNgTHV6QihZcXR9QUJhcFhKRSkKem5WeG9DI2l+fSRpP0lAWmNQd1AwYjFPXlJRNl9wYGs4NHFN
P2xKamBhfDJRSXliaUJqd18oYmcqfWV9eFpVZ0IyCnpIZm5rOyZ6JVY+JVdxJFAjWlRgfVR9YDlm
XiE4JEcqUVdFXkNoeSghTiM0ZyFVeldAeUA5ak56ZyFrcTJOIX58Swp6Py1uUDtgdzRxOUFMRzU3
S0U/YSE+QzRpWTxoe0tDanF0dmxLRlJ5Jj4wUzl1XjR7SmojKDN8aFB4OEtOYGwmJDgKek52cUV0
WERiekFhIUhwJCZ5VFV3VCVrMjFPU15PJFd1Jj1BdDQ2eD05bDgpU1NMdXpAUT4je15iIT8rbnJ6
YntkCnp4XyUjSnFMJVpuREpxJDt3S35Pd0pFZCE/NFZxeFJvKjBYZCFrSXtuQkhsejxSdWlLYmtC
KmA9a3IralMzQWEjKgp6UUIxQH47WT1oKDVwU1hfdngha0dpSEBRKWtyK2pTMzBIMHRxZ1dhcmcp
QDtEZz1iPTJPdGxUKWI9d30xYnImcXwKel9QYkoyQ1lPJE18ODh4SiFHYGk0RGxDJnJ6MHckRXNH
LUQlNFNBKklzZXk8aCVscztTX25jYm1tejY4JGM4VzM8CnptVn0kOWxBP0NpUGNgT2hMMElDZEcx
aC1QNm16VFZjNH5edThPdyspKW1UfXBiMFFsfmk+eCUzNklyUzt3flJURgp6Um5Gcz5vUnl0Zkln
dXFBRHtGZEFXUj0xWjZJcDMyQyRkeXl1Rm1IflI7ZzRga3ZVXklrIWkqQDJXbiUmaS12bG8KenNN
TX4+cklrQSo3dmpZK1IlNU8pWnBKUT9tRD9HJkx6S3l3dEJzcW4lVmchPSF8ZjJkeiVeY1hFPGI8
Tz5XJE1nCno/V1NKc3M8VUxnd284O0RVb297PUQpSERXUE5KYjs/UEBlK3VRbjY0VTc4fHRoU0RR
U0dFfG0rfElEdHJUVXxPRQp6KFVSSU80SDE9dyhqIVZVPGQhWnlxTlBhQElZYTNZQl5mRzllUkBS
OFFYKG8xckFMJXokZCZseWg/V2l8TWRTPTYKek4yRDBxNypvOzFGSGBVZXJSSUMocT8laz5TSCpA
SGl7V2NYdiQ9WjhxUmZTX0FDMmFnKWV8PXBoXzJWUUw7ZV9+Cnp7ZkNxejw3PjM5PW9ucik0MHFI
JHFzJUlMUTc1WTsmfFhtVCUoX3lkb0RWKEN2S1RLTiQlKXBQJjVrejVZPFZmagp6aiY/TDcrUnwp
eHZ7YDF8QjQ8WkNtSl9Xcm47bVZBKzQyJlM5VzhKRFJMd1Y+eDI0KGFYdFRfXiVTKDImeWp4My0K
eil8dChZSGZaKiRLdXdOK3RyUUJWUVlqfncxJmowM1YoZDN3QHptQXFHOUR+aVFOfG11ZjR6K2RZ
WTFBWHUqbWZtCnpvNXEhMnhNSmxYdzZ9MUBzcG1aVzxXJkcmZCFLeXZYKUV4Y1dCbjtsVGViUFpq
aGtrP21zKnAmYSVsVHh5OD1DQwp6eTI0JkwmNlZxQ2VedUlGajRZWWJ6anR6SVJybUwkeVM9akEz
OW4zVmNkI31BY1EoIWI+WnNxTzJCRFBTamhBZ1MKenlhdVhLZ2syaHFJeUw9IUA4K3xeZVNvZlZU
OWx0SCVVQDwyNEBWcHtqO09uaEtWJFpEK302SlBLLSo1eXV3VF9aCnp2YFlRfSo4TXUkZnJqWUlQ
Wjt3VEFNeUpSVHNpd0lQYCpMIytsU09FWj57bVMrMitJWGhzYDU9JnBnXn5HcC1BIwp6b19efXR0
SW00WiokOzJ7UipPYjJEc1QzMjVoZXAoYmlHelh6K0ttJEBLQDBEd2JGIXF5UlE+a2dOXmQkLU1g
YW4KenUpJFF5X3Z1RjIyO01SYCpnemFoaFA+WjUjNCtrXy1PfVAlQXtQSmAkNVI2Tj1vbENyP29J
e24lMGgzc3VBTiFECnpjQmMwR28oNHcjKSZAclopJnxEQCkmfEReKSY/ZzIpJmBkUnRxbTtlKD9G
PClzeXErY0hPY2t9T3dMUiQtbmdteAp6ZUs+bkkzPWdmVW9lLWZuJEV1YlZwMUU+eCplaW15aTg+
S3FHQVh0JC1tdG9FWmhnLWE5UVdGJXBPfGB7NC1aWUIKektVfXZLeH5KPDM0JVM4bl5Gb3xIZjIz
fm9uS25kckdwfF47V3lPWSNsUVpeajNjNDtLd09oSzI1SFdsPnNrNGdoCnpnalFaVSlIQG0wWmR0
b3dAIUFiKndeVXpZYmF1O2ghWSlMKjZZeFpIO184VCU9ejd0K3UlQmZaUUMySSpnWndxZgp6XmBQ
c3VjVkJCVG56O3RQMmw7RURkNE5Cd2c4RkNzajhJPHR5SGpHVXZKUCYpT2dEUDBnYDIpfT5ZQFBK
R1pQIXQKempjWCVUQmtgO1ZgaGU7JXR9Ujg1NH1HamR3aHo4OGRsYnAwYihxTHEyajdRMik8Tn41
LUpDVG1YVUJANnArJT5qCnpleHxRUHM5PWZ3RCR8JTJiSEVzNi0hWFE8RUdhITszMUthalUqJVh6
aXomc0R1TlkwVztoMl5zI049Ql9pPllJJgp6ZU4jM3wzTEZrN2FDbTZOa297ZXpIOWEpZDhnRUJC
KS1JZWk0WFVQaWAheV9xPChOdjBEI2V0cTRQQXg3czc0Wl4KekA9WWExKWlJVCszX1ktc2tQYiZ6
NEI2amhUR0x9d3R4PDteWWRQWGIzfldwUyVRMk4wUmY7S0o5RW5rbENxKDYmCnpOe3Amd0RwTUpI
VjUxPSZQT0tRUnpzdDB5JEVJNE40bTtMeiNFfT5uRjh8aHo5OC14PXJJXy0/a3IpK2owSFVNdgp6
TyhqT3ZGX296ZEorUUhtNHNqUD9mMHQ9Wms0PzJrOWRAa2NoJEFocTUhP2I7SCohcCtNVWBhQTdl
YGBMeENNeGcKeiR+VG81Um1XN09HVzVYNDEzRGJSVTRaPnZyWnFoXylmI2xAdG1UTCFGKS1XJFNU
fU1eQn1TRUUkYD9tc1JKYTkqCnpqPjxRYzcqKXFxclpWKXZDUEYmSVU0Wj52clpxaF8pZiNvIXY2
ZHJfI0szUzFWQk4/dWxeOWl1RFBKNmtRUTtPSwp6SXg2MihWcEpWZG1xeHMlakNfWm1AN01FJWNs
WXlwX2RlI3goJmBTR2NDeyQwKUIwfjBRST1oSCttQkoyLXlldjEKeiRGaipOVVB6QkR0TH42dkck
K3p6cXJRa1Z5O2NNOW1sdShhNHBuIUVpUFNmbTVveCM0PWcqPnNzZjxwJD1XMllHCnopXnRHNHFy
PmYlMCU9bG55SnFeTHUwZlA5UDxZNmY9Un5ZYWwtOHBocCUlS0U7TX02KklNVXlXXng9cHZQeFlM
TAp6VVhmODxDTlY0R0pKUjJaMVJReUtnaHBjUHpnLW05fER4NTNGfFE5Til3PUJ3bkF0S2poJG9C
VDxwe2RLYkgjVUkKek9UK0BpcENtIWtKVWhtez15T2JHTXhBNVkqSSlRVlhwREx5QldtQXRYNEpt
diU7RnBsSmx2d31aaEo8aGh0QShNCnopMGdse195K3Yqa0t6eWI1PnQpaCZ3KlohQEtqalpSVGY/
SWM4KCtjdHc8a15fIyo5M0NlakEhRko4PXdfPlQwcQp6QV59SSplX0Z7Qi0qK3BKKG82MTZtJDQh
RCtmMGpFXmxuYiZxXk1ZSUg7Xl5RNztfIzMlfFpITyF8dH5ePTh+Z0oKekd2YFo1KTNvIzdVcmFf
ZjsoaSt3b29fQlZ5MypWdzUhZG1eODx+cVEtODQxcnttRSk2KDkhYk9uS3JkMyVTcnVKCnpNY3Ay
Jipxbn10R2UpQ2ZnR31SQ2BSZzJtPUBCTHhebzY3OHY8JCZ0UWJzc2x7eUhXPy0oWSUjNkAlP1I3
LSs2RAp6a3lfbjZkSExxY3I9fjdtSE0kaE5eaDFHSHQ3OCsmZXdraXFrdD8oTllmYyQhVVIqT3Zk
WDh7YFg8d3IzbSpZWW8KenRCfnUwRkZ7VDdOXzJpQXhDJT5ee2JFK1pjY0c2fSZ8SjdZTEpQNnkj
ayVQIWR0IXZuaC1GPVctPDRAdWpsYW48Cnomd181dD9aMjZCdF8zbW15ZWt8Zj1pQF9OZCpxblNp
OGpObUZFVWw8T15YYkxqfUlxRD56bURydyVjcT5ZaWc+Vgp6UzZ3KXtWUW9PdjwwQ0Y9d19CelVq
blRXd2VWc3d4bmgpKjJQbjw9SzJPVkpRTjkmN188M1JvaldJRXNydXU9RG8KekReVUo8c0BwQVEx
JCtuY1MzcSRmXntxYTZtcnFAVShCRyFJb0FoITI0XiVVKXQxSGxLb3VgMHJKP0QrUyUpc1NhCnpX
OEZKKUlpQHFDJk4xeXZFO0ROUmo/PCo1ZWJicHlgPSZHTlpJOGZMMXooU2olaCM7aCprIWomQTl9
MW56eX1JbQp6QGdiKCpNQlVldnIoM2BRKV9uUU8qWGtuVklGUD5ybkdYME8lJEM4I1EyVSszKURg
ZEAkWClAPmZ5YEghO1lEYkYKenB4RHFGQDRNdyktSmNrNHVSXzs7bk89bGZxSEF7TDdEKTlYPUgq
clZgT3hTQlBLYiNTV2cmODA9d2xVZlVHT0VACnpoYTUmVFNIWDlvazUkbEkkYjl3X1VXb0doPnJX
NCE4ZXtGWEBPUkRoQ0E9Y08wcXEwe18hOUg1Qm1OeGU8cEBzYAp6eGx7OVomMmdsXjczc3FmVSMk
SmZNREY1cFI+WEl0elpENU0obz9VVT87NDFHVlF1ZCglNWVTZmxQfDk9YTtOOS0KeitTNEk/bnR8
ZD0lO008MjtEJjE9OzdnOGZXOHxWYyFWXmdEe1FPMTlhaXFUJD5CQTlVeEJhYiUreklCYWkwPz4k
CnpELXYpZF5QIWN0RDExbGZ3NlZhT1FQcjxCJiRPdzxBR1YzfXFHfmhkc1pQd3JCeTE0K1VuMVgz
JVFlVWBtPnl4Rwp6TDA/a29YX1BPU2pnOFBabT55eHBWQ0xJNDtVSmFvRkxuaktfVHxpKCoyNTc4
dHk4KzR1Uzh3N1kzZWRBY0ZzRkQKem5TcG57KTNoSmNuTmpETV85ZDFYYj81c35RPTt9d1hHWk90
Wmghd3BeQmQmS0p3IXZgcGB1KjxsRzlBOTRLWnQwCnpzcUwhT19FJXN1I35OUmt6MyZTelB2K2Ba
dD4mMV9oJShpckZRJHhpUj1AMnZDUTlGQU13Q15QblNhRiozYmcpUgp6aURmPiF6V2chTVpZYksy
VH1ycGhacEAhSSNBLUtXNm43UWZVcVlFPEckWWI8cXJSOWooej4ra249b1N7Xl5OOTQKeitHWF5M
Kj1zcm9lTyN3Z3ZIdloxbllQdUstNGBHUWltLTN7dldVMiZ3QV5UellPWntqNkBBTXdvRUxHMVZQ
OVVWCnpyaDcoUWBIcmpEaDwoRig1cXBMKy19LUoyK0lfUT58SVF3QnQkb2l7cldlZ0M1Y0MyP1Rs
Rkk2LVMwallxVmdIUgp6JmVhP2pgZEVjcjdrbng5dT9tJlhDezlgaC0tU0xfTDMxSkl2bEp1bXgw
Xm1aNmpIUkdZTj5wMFBeSmdrSWBzNV8KelhHSHkqaWBwTlctVCFAZlB4Q0FiXj1+ckRGYHBmTW9f
U3d7K0liS1l6NEZDTUcxMj94YkU4K3h6Yk45YEFGcUZUCnp1KylBZ1NedV50Y2xRKGlQTFdLMTB4
Sl5iNF5FMShLUUQrX3BPfHxpczNYYzVvRmRERC0rN1liT3VzQUJtb3ZVXwp6MUxzWmokXl5mVkMx
eiFPWFpsXjRwZmZSI0piWSljR1c4RkwpO2A9Knh6KnlRTHt+cWwqbk1EVmp3NHU9SlYkVUUKejFz
IT18Izk1QFRoP2I9Mldmez96Q0M4aWd2Z0NTVypDeWFpaiZ4UEU9em1CViZgYkI5I2spVmQleUM5
bE9xP15LCnpuU2U3ZG5OYClxZDQmNFEmcCkzPGtIWDR7XkdMSzRARj9mNEsyPCZMdWtgfGdEWmt6
KSRFMiF9cGg9Tk1YKUArcgp6eldEbDR3UUc5PjdPJW0jNFJrKT9TYF5UcUBvPl9zIz1Hb0ZvPWR3
aWtBM3VAejMmcm9VR1VvYkt7bmlCP3xZMUwKek9zZ3F3RyVhWl5UZzImS2AlQ1NiVXlTSGMhLTNq
JjRLJik5TyFzZDtvYjUqWWxKUmMpSWo7eFE2U3twPDxyPCpfCnpyP3VhcG8/fjltZUEldDUkeGQ/
Ym5+JipOUFJNPzw1MGR9Y0BTI0JnJXwzXypkPmA4MVZ3UTZqYzt8bDRIPT1wWgp6UihYNGZ4eW11
RllNfE07TldlMjVeTDl3UTAtOE0jMG5DQzI7cnVzeUFuRXIhWGdBNSF6Z317OTJ0V0FOI2BnQ30K
enJyeEhYZSZTKnpKTT14MHk+MFI8KCgtS0xpP2BJKkMldFgqYCFacUVgfklydDdYVVdTay1wPjF1
bztUOC05OGVMCnpQc205NVItJX0yQHg0VCRoPGpVPyU9VHFINm5pa28/aTxgQiQ2biF6MiUxezFl
bWprTy1QX3d7VXN9JHoqX1cweAp6Wk13e01lTmpgeStLd1Fmcz9ESTl7Q3hKTXJjaD5rVFh6eG5h
VkNYZzU5ekF3OHhKI1VCcUZZVSVUUH0obXAxIy0KemE7RDlgdzQ3PHZXajA2NHM/Q3NeJUMmV0lf
TXhVd1dfdyRBNSUqeW9UMl5CWllTfS1KXlhqdHRCfmlVP19OQz1hCnpuPVolNng8WTAlWk13YFIr
ZUFLOW4/V2BDYFJ1bllYSWdnPV9vcnBtZFByQkp2dmE/IWUkaUtObnwqMEgoYEh7PAp6JmF+Kz1v
MTxtYlc9UEFtZUQ8czVPelNTPHs8TiVHNTkrRz1aTiZOYTgwd2RgXnxzbFVtTlJZa3JSN1lVRjAo
bVcKelImNTVnP0J9eXpFb1dNSDUlO0hNKXE0QUZgLXM9US1hU1VJMlA1dkNqS0hVdV9PYDMqSW5G
TXd6fWE/bk8tST9+CnpJfnYoYFU2IzlhOWNNUWpafk1LdmkyVWw+angqbldYQ259S1p4M0FMbiFj
a3cyKExqPFl5TiMjdUVxbk9PV1dJUwp6cEJtNCQrbyM1fT9ZZDBvWCpeJnpzNHpkantjQWtpMH5k
TH04VmA2NyhwdjN4YTwwWSRwRVRVdFpsNDtAdyVlITEKenYrY1N9PVY/NChIPkJ9ZWUqNCNXd2cp
Y3FlbDtIT3AjOFQ5Xj1zTTRfPms9cFhuZ1B6YnNlI2ZVV1c4dDg/MX1yCnpLOXhTNFpNYVhWPU5v
bnomKG5JeWFKJShoTz59cFRgeGtxQDNvaUQ0KWdFI29CKUhtMz9BKCQqLTJKc1V1RVZVaQp6O2VN
NSNaTWF7aFhCJjNlJlF5QjlhN2dMMzlNNksldnQ0a3BfcFM3UjNxaXM4RlRrXnY5JSMrJFpNYXto
WEIrTlUKej5EaCl8d2xrRjtGZFM2NnBXfDZqZGJTSExfUCYpS2FOJTZyRkkmSHxePWNiWVNgeXRt
RVc+MyNWKDttN0pxTUA5CnppfFZCNWI9OEtadztkb0UtZ3x1PyFSZm9iVW1Mc2p4Jm5oJXFfM2xs
cXFtXyhvaSFRaWp3cU9KfEFudHRIJHhXZQp6P2VDY1RaU1V6YilSWiFQaE1IMlFjVWtERmJUMGd8
OWtibzgjSS1NezQ8Xn1QYCNkJEo3OzxyRlJWeD97V1pOQjQKekRCWlB9bT8+JStjbExXdnBQe0Nk
PWArLW5HUUc8fXlxZTFDTHUjdDZlViY/OTQ3b1VSKUtuU0ByclNTMVFxKGxqCnpUVE8ySTNeaz1w
cFB7Q2Q+MEs3JClsXk8mUkZoakE9WTQ5REBxfVlJI2dMMDUpZXZoX1goKihvK1V1a2dINyk2Pgp6
cmdIaVdIS2sxTkApNEpBVys3I0lteFp8THglVERzQXZLa1k8R2ZFemEoNWlQNFlAY3s0UnVFcFJG
blQmQnQ9YjIKemQjbE0hcFB7Q2Q+MExoSigjPFRTT3oqTX5IJEIoQm9JYVJqdz5aeEcpRmdNdShj
NiVWQmheck1MfkNNU1M5b2QpCnp7TllqZ3h+fWBYaGtCZFFSbj0mUWspKWImYFJQaTNsTnRMdUZW
JjM4UFEwMFZIMF9XMWpDajRSLSZadlRDOW5Jcwp6PExZaEQjaWdtUG0lKTAzTDBTME1gYjcxT2Ji
a2ReWiE+eDdPRSMwSXpHTzJsT0cpYlUlbWxeWT1PJFp5JHAmM3EKem5kPFdsaEdiRUQtSUEpbD8o
Z1I2WjY7SEZzYihfT211a2prRE5UTGRXPHUoIzx0QVQhc1JtdEt4JDVnUzc/ZyM3CnpleDw2ZntB
eEQtdjFNO0ZuZChiNWxjfk5gR2NIU00+Z3pUV1JHKilsZUR4KDd2XkBmWUYxVEM/YzNUWjtxeFJ3
YAp6UmY2VUIobHRyMkc/T1g4UjVPX3BPZn09T2xxU0okR2EoNjxpe18lcTVkJlVzakhEV0xhcGY0
cSY3V3M1czZQTTIKelJJMipBS2slVHBuTjBQaW5zTkR4bWokendZUXwrTC1WQWZvWjY+SGJLUjVY
V0Z4OC1vRF80RXAxfjFIZztUIXRBCnoxXjNjLSNRKDVgLWxoVHlZJk9OTHJKRCs8dStiRD4wJXc/
VjhTN1NKdm5lZ0FfTk8pSHpZdVA9Km5UTm9pPzZwKQp6N29WIWdvPF9BdWdIckt0SnA3djJYd0Nq
MXlaQHpgeS1qN1NHVGxfUkQkYEI1dGZpe2JIeCgzIXBRfUtQWSlzalIKenM1MEhDaSFXYzV6Unsz
V1lBP3BwUnEyMUpYPlV7NnMhVFZQdDslIyRFXkRjKF5pNzNTUzw2KkZzIVRXUDs+JWExCnpaIXs8
c3xOS2k9VyVYTlRgM2sxRHNjY29JbzYxJll4KyN+blI4eyg+Zn54ZCQpc0hJRWprQF5xUnB9Y0lO
dX5DPgp6RW5TdD5afmtwa1dvYXJ+bUZjRmtSaGUkZVdpM15lek53SFolTFF+JTxxM3JNJkZNeTZl
MGZIQlUrRWhTcz92V3cKem0jb1VzPmVvUnhzP3dSdFJiX0BMbSVrTExBWnI8PlQtSClkQXkrazFL
fj1nMWJXIUNBTTJvTXRRNVJwSFE3ektZCnpRfD98MyNpN3I8YjElVjFocjQmX1pBak4tX2Jnc2Q8
dUY0Xkhzb15HQzZoKSZlRUZTaiRtSmAra1A9YioofEVJQQp6ZHA4SHhldiN3SCo0dzB1UDE5bWVs
Uy02OWYleHwpVVZVdHwjaDJacUJpKzA3SGs3TnhXSjlAMU9nN31RbThlOXwKelAqNF9yamBWeFQ/
bVQkc3ZiQH4odig/K0FpIUVEO1VYJnEkKUx5P09FN0FMb3NAe2ZqbTYmV09TQmM0blQoJU9HCno9
b3QjaHFMIW1SbCRkUE4jZz9yXiZ0eTtfe2ByPXlNRE0lOWRLPTFCVnpReEpCXzxuayotQktSWERG
eWRLU3pCaQp6RzE7VnhFbkE3NiQmZiY1dWhXdjFTb3NuO3pJTiR0Q3w4TmVoQkIwUm9jWit9Vnth
Q2R0K3x2WCVGIzB2bDRDN1YKemVhSkR7cT5DK0VqLUpWJk84Z2dTJCNWMlFyQE9iSVRzYkJpJTg7
V35Wek1FWnR3YmV5aEpzNDtiSlR8dGxURXRWCnp2WCR0VystNj1xWE15P2NMU3VGXiMrKjhBJSRo
bUlkfV8+Pz9gPnp5Vk1+cDkqYmNeQWV5bE0hS0VSbTBqeUdteAp6N2h8QGJWOWRZblgzVTBAakN0
K0BqWDdrNkcwWFFoPThMQm9eTjslKWJMRkZxeCV0N3k5RFRZbTJWdmZPJm90JjYKejFJRTFJRn4o
ZHcmelJ4SThGUnp9Vn01YXRHNTJCcT1SZTdxWWNUKCNvP15fMm5FJSpHKnhCOGZePVEyfmVAfG9u
Cno9S15EWHd+c01idFQqT2olPT1NdjdkIypIdUUzaVBgXitgd0pOTykpeDZlMWBXJXljPDNvemZz
XylOUSNGeTlIIQp6RmxLa21fWXswPCEhWUxpPzZad3xEZHlZbWRHSERJP1N3QntgcDVsQElxJHtC
NnF4ViFtKlFCJi0rSCsqdzw3K2YKenVTQV5OOCp7Xko1Rmg1ZHw4PlReMmxHdzYkKFRMJUZ5YGxQ
TVZ4IVZfamVrel8oOEBqZTZLTS0rfjFoNS1mR05hCno1JTF5Ozh9bXVUSk81KT9LZzdHPUMqa0xn
Iys+e2FXQTVKQm0/enczJXVqYlU9ODwxOD1EVjJoayQyJCNuRDViZAp6Vmppc0hgbU0oTkh7eU5t
LU53dnE4OGgkT1NhWmJ0alBEdXFHc0p0eHl8OVYtbWpCM0B3XygwTis9cDBebSReVH4KenY1NTFK
S1IwRi08fmllNlNUb0Vze1RwTEdmSCt0Rzl7WGRTQztoPmcqVEp1a3syQlhWcDU2YXklO1ReU20k
ekV4CnpsYkdrYkZ1Rko5OEN9cGFtdG5uJW9tJUVCJXlaTihFcHNhVElkX2tpY3s8fHo+MFRgfTJr
WjM3MmVyKC01WWkwPwp6dzlOYWxQT20oO1dqPTx1VVZNMVZ5Y2hhLSRJJmhHV3ZxOD1zQWN7RktZ
bGFYR1FXZiRwSUZpfEFCRz4zJEZ8SjUKeklSMWQ7RXdlOTxLa31yT0lSd1hfYGlQYn04T09pLVE3
IVd9OVJJfkxTX1VhR3c+X3ExWnBRSTFldGdTSjtyUGNyCnpzYnY9OF8jSVpZJXVmKTxYVX1oJG1t
fX1iUz0leUMjPTFXN3NWeV4lSlQwMVRuUnkyb2JLc195YDN+fVF8RGBSUAp6P0BPK0xKP1E3OVNI
ZDNoe28xUXI9MWxuVSZTJTBlJXlaeztFcHNLLTxBS2pfblhoMHlDYS1VcUorS35reXJnOXcKejN4
OVVJc2IkXj57WTx+MlckdVQ1ZSpMUEp4ZURfPUB3Rn1VMyhSLU44P1licHoyWXFgbzl7UWg5c1ZH
JHpyTCR3CnpVSWYzVS0tcUwlcFN3VE1HN29gWXN+N0J2ZnI7ZUBydFF5d2RCdVdWRmErWCVDO2tq
ODBgNF54NGhiXlhnUyk9TQp6QGQhOSV3ZysjdityXy18ZlY8fTNaZHp0THRtMkxYRUJSfnReSjUl
KipULTlDezQqYHtuY0d8RDtkaXZtVTA7UncKemNlbClzekt6eFhobkQmR0FHWFk7S1lfPXZlY2Rs
eDxeakxLWVg4MXY5e2s2YW5md2N8OE5rZHRWWT4hcjd5ckYwCnp3I012WTdNUT1oXlM5cVI/ZmYm
QnVkQDc2bU90OFZwSnx6RXV1dGRiJjtkQVNqJWkocy1gcVlJYXhmQDQ9Mj4+ewp6WFdRKnoqbjYl
MGBJcUh+U04/czNvOHstcmtGNU9yamtZUXMxQ3tmP3hwd3ROP2EjTkRjbUJWNT5YcnFFbk9qT1gK
eklffGp0QTItX2g9VlJmOzAmfHRFcH5uMitTJXBGSmpUeWl4aTY1PmRHPkBAaDBJUDJRZVQ/Tnl0
RlJuRjNsWCt8CnorMiopWEpfbCpsSUlmTXFBNU9ee04wMHBkUChvQFAxTlFnQnNhQGwhQjdaLVdr
USNeNnZCdSQ0c0J2NT9lP0ZZVAp6SEk2SWo/fXQ7VyMtVilHSUduO1lqKFlPdnFyUUJPPWJxMUBx
fGBXXiZOVTlEcVE7PnQqRXAxYjhpI1VNPDR8JkgKejlMaCRHTHk3Qys/emlXRGAmeCZwMlNtdmdj
MXVMZkBsMCsxaiVxNm14Qk1NLVJAZn5PNjt7fFM1dytGVUpQfW5ACnoqZXd6RDFWdipATD9zbj1P
R0ZKN2MxdUx7Nm4wQlEtNHUzOU04eTwjT0dLPntjMXVLKzZuMEJRZUgzO31MfWU2cQp6T0dIZitj
MXVKeDZuMEJROVRhdjtMPEpPZk9UXnE0YzF5JnA3antkO2Q+M3wwIzdxfTxPVC0pKGMxeShVN0lz
VS0KenljVHYjI0VjZXBPVD02amMxeSU4N0l1NCZJb1hfbUx+S0IxPkV9UHpwK1VeKj4taioxSjRv
UlVSPTdoSD9vZnEwCnpPeUxlIXhGWnpxTlFGQn07Zl98Z1YtIytvIVl4dmAjUkBtMWFLajJXcUh3
JSRfLWo5PWFOYE8kcD5SdFNabUdnOAp6UUBEcEgrXzRJR29XZWErO2ZgMGg8c0p1QjxKeE5tRnk+
JmBUVS0ycEpCO31seFo1PF9XOSkjakJMP218JT55dVkKeiN3YWp3X2kxKjsqYlFUTTRCVW05MlYo
NHJmamQjTkheeDJ+YChvZ1opYS19eFYydTRTYUEjQDtGJUhCeTJtXlBoCno9QzlrZlpSMHFzQF44
U3V8TklTQ3p6amtZaDI2NW85Y1U0Xk02NVo1LTRlMGQ2bjBDKkkjYnYhNWkzayN3P3dRaAp6aDIw
WGRzdVhyaCNDbFRMRWZGaDhWWWZ1QUElKSEldjNlQUNPVEBaUypld3cmTXEjJV50UUNkYjYwdTRZ
YzF5KGkKelB9blVJRD8/JG9NNjN5Zy00ZH1INm4wQypJI0FkeDVpM0Fwdz9zVm0zJWUhYVN6cCpL
NXpxSStaaSNyTjdqe2Q7CnpiRykheUJBKHJhLTRnTTxGNkA/d1hMTW49TF9DKVp5Q3ZkVFQtZmJ3
VVdaUD10YlEkZ244S1o/YTM/OTskcU0meQp6ZzxHTDtrNUlUJTZ6KWBvZCEpaVdPNXMqMistVkFU
eTI3MklhQXp2cXFaUkhmZz9vJmBvdm08PlJrKzZ+K35YRFEKejlFRSM9IWFZJnBvfV9UK0QlX0o1
P2tOaGwlSHljJjZUbFVBT0dNPXJjMXVMZjY/UktSd0gwPHRNNGM2T09HSmVnCnpjMXVLVTY/UktS
UlRYd2lMX0hPRE9HRzZWYzF1Sko2P1JLUl4lUW5YTUJObTJPR0wjS2MxdUw5Nm4wQlFsQHhZTQp6
TTEyJT9PR0lUOWMxdUp9Nm4wQlFINTdKQkw+Jn0lT0dFX31jMXkoRTdqe2Q7dFFVNG0jQyNXYU9U
PGhVYzF5JEAKejdqe2Q7Pj10JVEjSm09RU9UPiY4YzF5JXU3SXNVLUVFYVk8bnwwX3MlPDkqbk5y
Z0xLO1pgZiQ4aWt1dXhVfnYqCnpmeD15PWFPKUtBc1MzQVY7V2pBVE1HN35xYTJwbHdWdWlhejtX
akRVV2Amemt4SndvOEdLSVRiO2tHRTs2JDx3Pgp6Zz9xWmZVOCEoYURjbXlAP3JNKnRzP1AmZypl
d3kyU0oqOFBIQ05hejUhRmBNRWZJQkEqZXd3aVJAZn5Pd049PEgKejVtaTsjRWZNdXAqZXd5MlJN
OyZNSEJ7SXc1IUYtSkVmSUI3KmV3d2lRYGp2THdObHRFNW1pI3lFZk11bSpld3kyCnpRUD9kSkhC
czB0NSFGIUdFZklCNCpld3dpUH1uVUliNj9tazV3bCp7RWZNb3cqZXd3PVVEeiFWYjZuVWg1d2x5
Xgp6RWZNb3QqZXd3PVRHJVpTYjZNQ2U1d2xwPj9RR1ZlWWNRKXtocHR0KVhEWnlZNno8c3ljYiZw
TE44ejVVYUwtZT8Kej1QVFJgNnordXpjZkc+Qk5hMD9yYTQlN344eC0hUDNVe056LUsyMFlRQEVF
YSskJDlCV2AlcEQhbzVvMlVhZkdpCnpRTWcrYT96SVp7SSkhX14kNUdZU2ZHZ35saHtgTU1tV1l9
dz8zUmRYRTl7bnRJeEZtIWh6Y3cwbVdiTGE/M1JlQwp6RChzZXNkTWZPZWgpT0UjbVdVY0U/M1Jl
P0RlUlZyeCsoMEloPjl1Zm1XV3lAPzNSY3NEZVJWcmBZN3l7aHtgREoKem1XWX10PzNSZFhERDBN
cUl3PFV4aHpjbXxtV2E3OD8zUmRHRllLMHhgN1ozMWg/eT96bVdWa24/M1JleEUkbyh2CnpjYGZY
Z2gjNCpIbVdhNzU/M1JkR0ViTWtSPihDbzh0Nnp1U3NCbXZteEhsYEBUTkxpQzNpbWRKZCVNRURM
KmRAMwp6YVBMeU1jUHJkYDZ6O3RXX2RiUHR6cngrQmEzNF4oND1VVjs2ejs8Y19Zc0Jyc0tSfHI7
WGJaI3BIUjNARCVfX08Kej8kWmtROEhNfC0haE8hO3NPbVI+RTl7bnQkfTgtYWg/Kjx4bVdYT0E/
M1JjK0U5e250M009ZkVofXRVNV9nbjNFCnpuVyhENWF7THxqUjJYdFpSOG5EbkFiVjBuaDI0WHtx
azBPdjJOODhzNyg1RUskNUFuYjtyeyNgd05sdnFpS3Zwbwp6ezdDa3NKXz5zQGVAQTUkaERRQG82
Tk5wUmgteFY4KEx+ZmlWUiRxVjY7Umx0aUoxR3M5ITxvbzd4cmkoPURWOyoKejZFVnw7SihgRilG
Nl99biV4KzxpQ1NxTy1kbyZSPFRHKnFCbjlJVCpPfmZufl9VUEhITCRfZzh6WWc4NWFHekpXCnpG
RFRwPjc0QXo0Y1piNCNTPmU4LWFDYSkpUn43RFMzYiQzXj9vem1+RThOYCpfWUg7bnJvdyRvO2w4
YkstJStebAp6RCV8JUo/akQ4djJaZyY9O2w4aE1LVHg8SUQlXzcwPyNCeEVqfispPS12K0wqWDh7
cUZTSjw8Rmg/Kjx4U3dLWCEKejc0fEczcVJ0OT9HIVllNipyU1E0dC0+Qm5MeyR+YFhkPiNWdXR5
VjdOcmdSe2gjRCZGKExfe0ZWVUglRlpWRyFlCno1ZnhMfHFsdWBNIVg4YVRsQCNgOUJJPXtDTS14
I1FnKn0+eG5rZWtpTHt2anprMHpvSDNWU3BXNjtSbHRpSjFHcwp6OSE8b283eHJpKD1EVjsqNkVW
fDtKKGBGKUY2X31uJXgrPGlDU3FPLWRvJlI8VEcqcUJtYGxga1k+QWpmKU5YOE4KenZrdSpkYFRS
UWM2TlVSSGg1S2lQYD5EZUhPeVR9VDtyPjxPZXkodThQYEY8eitgbFFAdU4zYXo3NEZ2eF9aeC0j
Cno0fjZAISF1P0wrZXk/ITxzY2A/TGFSMDR2ZV45dFREJV90Rz8jfk1NS01NQzNnfVl6ans7RmA+
SmRVY3E0Oz0wQAp6dXFDNE1hNCNXPG5rKCNDen41MUFnKl4rMXNJJFR6Tys8d2lfR2x0JXQxdnY4
aF5pez0oTH5mIVZVSCVGa192az8KejVqOWxVcWx1YFYhWDhhVC00eW17QX1YZV5NLXgjaWcqfT54
RGs8I0lNQVMhTmswem9yM1ZTcFdIQnMyM2lLdkZjCno5ISozWTYhdkgkRHhrMU82RVhMTkooYEdG
RllNN28leShnckNTcy13ZG8mU3FULWMrRG5CQnIyT35rd3dfR2x0egp6dzZJNExGXyhvc251dTh9
PzlzRFhoZnN1U2IlK25ze28ySGI+cHNWYT9MTm5jPz47d0E7ck1YZy07V1JMZVUxPEIKemVVMTxG
ZVUxPEplVTE8TmVVMTxSZVU4bGxLRjgoJnBKVEl0JiNgJkg9aCNmKGI4SWZ+SVdgO2s5R2VlKGo/
RC1ACnokTDBpfFczeihLdjNiR2cqdiNOX1k7TiM1SGFxd25uOygzUiVAOTd2PF9Nby12cVk3bnN6
RV4ySlBVfVp5dXpMWgp6TUFUZWkmaktRPHQqfmJTNXBgREJxbHVfNl5xcFojTH5XdChPYn1JdHpC
NTc4NloqfnNRQXl9SzZHUlE2P0BTUVkKemdUNkNDKUQ4TzExV19eUUl9PkNaTm87IXd0eTNsRkpD
b20wQUx1KDFMfWo0d09ifDdKekI1NW8xTnpQY1EzdlFkCno2R1IxfD9AU1BMa0c/Wk8lc1RxYzFU
byp9SX1ebEFxd2g9KmJCdystTENofXQmSUI+OT1zT2R7akgyJk01T2F5WAp6R2VPS0VgcCZTTyV7
bnhRYEtzRHJQdVlQQWNhWHZ6dFo7YFkrQFQ3MG44Rj5kYTdRVElrcVVRfCFYMiR9JDAqIUYKemc8
R1U+aXhxQjI7ZjU3JU1CenBpWmNPM0U2PmRWfG1NR2ooZzxHYUA0Xmc7ZDc0QTVOZCNKKTR1Vy12
ZmolT3xQCnpoeUY9eWlLc21FUFlSO3UmXzV9TllENTJ8QW5MNUpOQW94O3RndUhEUUNzTGNsMEIm
Xl5jQE1KcDNyd0JoKVAxPQp6a3N4WGFlTWY/KjlgcWR2cUhmVDRCIzRTWi07cDN7MSR7Pz9zMW8h
WTM4RnNHY087MClLO014ZFk2NSpuZn5XQGMKejlTTmNpKDAzJD0zUDloSEFtJCFATX1uQWpeY0BM
ZXpSYENpaD96IztrcyMoNmVNZj9yVUd5Q1pWcVZkQUIjMFNCCnotO3A1WjVgOU80bV9fcypWTE98
Mz1tZ0I/KlAofGcrPSZXemxFUiY9YTFVM3c2JDx3VmcqISN6UEYxKV5EJV8oSwp6WmwlSlZyZnti
IyshK2RZcm91ZzE7bSVVSCQwKiN7M2ludXJkemB7T1VnNkdCeEY7eXc2QlhgQjNVe3U7SnozJE4K
enFId0Rganh+ZSZMO29ETUx7dUw3PUxBdTY9JHtpcndWezdiNU9zI1dCU0JPY2BpPXhxVGopQ3lM
eyp7aE5EJWRlCnp6OVRfWTY4ZXE9UUE2bEU1PThaJj8/QDFKZ1Q1bXtSMUVyIzFXX3lLSX0ke2Rw
emxaIV4/fC00S354NiVqcyNIPwp6PXNPWmJISzZaRTVPc2pRQlNCT0VgaT14S192a3drI0heJDVO
RCVYbHo5VGAqSDJSSk5GfntnVDYyJERIPz9AMnkKemlvUFIzJXFhU2YxVG1OQkl9KmUhcVZFWFgq
e25uN1ZMcmJPTylBe14zYiRJfSkrcFNSIW1VLWYzbCMxYGc8R2ReCnpQZ1NffTNiI1N3RT5nSEBo
MTtsYjdjMU4pM2IjcSZIWT9uVyFkPEZ4bW5xIWszYiNlIXUyOHRBRGNzVyk/bjtIYgp6TzV2V05h
OTRYQUQtWlJEe3lBKWtzNjZ6fjM4TG9FS1BRTjRMO3N2MD5JezhIZn5ZWGA5U05lZygwMyQ9c3pU
cTkKekFuRk55TX1udiVeY0BNSmhSfUI7aTBWUCNrcyNeQGVNZj8qODF4K3BxRV5zJUIjMF9PLTtw
NWQxQVJ3PXMwe1FTCnozOEUmQGNPLX52SztNeGQ+SHZMNWZ+V3hXOVNMSVkoUlU8PlN4NFdJQW0k
cj1NfW5BWF5jQExlaj9zNHtofWxLbwp6a3MjKDNlTWY/clFTPT1OVmxMNWxCIzJvPS14MFI2UyU8
RXtlMTA5ZVJeZ3RoYUwtYj5YRGkldzNpbGpeZCM9SmcKelB2TUBnYTQlNH03YkBLSzNpbCN+ZCRH
ZDNNQiMyd3hSKXkyalM2PkAhbzV1NFVhb01qUGBIfkY/dilEbkR1c0tzCnohbzVifVpjKF9gRCV8
VDc/KTR0VyUwdkMzZS0yd0JEaThnMGZ+WXo0JmszVTEmXzVATEl6ISkpQVN3KWZNfW52PQp6XmNA
TUpzP2N7Tmg8Wlpia3N2QXdlTWY/KkFAbSZ5cUklR0dCIzYyfS07cDNIMjdPMEBzMUBgYjM4RzVT
Y087MVYKeks7TXhkRGclOC1mflgxZjlTTmN1KDAzJD1JelpvJUFTd1dUTX1uQXBeY0BMZSozb3cp
aTF8an1rc3hMb2VNZj9yCnpXQXEmZlZzX0RZQiMzIU0tO3AzQDZuI2c2bWBuNT4zMVN3fWNaQlYx
KX1jM0dLRURwVlFRX1hDYUJvKCl3PHozTwp6NzRCXmNfalpNUWhyKyM2O29oWmk/XmR8P0RCT0Qk
P3RLZFBldWNZTDtYYV5uQTVeI3hEY3B3QD9qczhLUUhBQE0KeiFoS3hmS0F+YCpSSmN6bStAfUBw
R1lhPXZoNU1ZeHZHUCFWPSUyJXVoe3s5JW9GSGxye2Qwbi1IdVRSNHFSIUJGCnpCIX4oXy07cDN7
M3c9anxzNERhdzM4SjNSY08tflBMZj9AZlk2elcxZn5YI0o4VlJDcSZ8NCZraWF+RllBWmk4Twp6
TTFyVWliUTF9cEtGfmlUaHt7MCFrUldPVHtYPkdOMkp7YUpxN0trTUIhfig/fEJ4VyY5e29kdG4w
NTNJMzFZc3sKektPfjVtTSpvbD88ezE0JGZ8eTxPNCsmeWsoTFdASjhBYm4pQW0kU05MeFB3Xl5i
Y1Y+bnwwX20lOyhwaytaRkVmCnozaWt6dGA9WXtxTiNYOEx4R3lXKlJ9fTZ9aDVNPyllTkV4RUQl
QFFQX2pRSDRUajlRO2FOa3Q4Wno8Zmo3NEFDPAp6X2cjaGlwMkZSdWFRfm9pX2JTfT83NDhRTF9k
fHZJaztrIzNQKj47KyFqXzFOTFNLKnxZNipRb2Z+WD8mMXFxXmwKeiY9KHwjJTBYWHtBWmlBRUw0
djNqXmFUbGBQUzYpNWh6ZGJwa1JXT1VlTDtlIzNpSmdEcThgdX1CIzI1dFV5dlliCnowRFZEJW4w
QHBHMzFaJlM3Ykopb01fLVUyPHtFdUxmfHpDVzFxb3QpKEhBNiRuTUdmYUFtJFcoTDR1ZX5eYVRs
Rwp6OT89JmhoIzVwKmtSYXZgZUw7ZWxIU2A0dVYhcUg5QiM0PHBVbDZ3VW09bnhqPUhSb0lgdU1E
Yjt8RiMjQUtlYSoKekl4JCFJXkZuLWYmST1jbTc9T3IpUGowe3lPUy1+aF5UUVZaYi17d1lGdntL
VjBYWTE3Pk56SmplRkQhT1p2VU98Cnp1ZjZfPyZyOTAmenYrezc3LVopWWJVT2J4XyFPUEFQdHhn
cGF0X3lrMztLV1dsWEY7OF89Qno8Z2lwaihLdiQyVAp6MGdMVnYxZXhQXktNXiQ3cUpJKUomIVRA
OExAfWVRTjY+dFdla089b01PVGxZP0pmRk9MRyVWKUolVjwkPW9kaXUKejsxZig8aVUwcEZAT2RR
bTQ4cT0jWFY2YWVxaGFgPVFUVyZQUyFkOE8pKjNoTEdgeXJXVkQ2bmFVP3o3TUZ1Jk0mCnp6K0FI
WGZjZXYyMUxvVE9AYyNuX3t1Z35sKSRFKkVvekpLYF49YUxvUU5efFR6aj55eVotSTVqemVqdzQh
dEpiWgp6PXhNMVB5TmtsQHMmS24wLTBsajt0QWcqfTB+S3loaDEqTnZfRXh4azZtRE9JZHl2Qkly
KklFZXhjd0ZHMEZOc3gKei09fFVKJUY2Y3tMRzgtLVN3WmN9X2M9bEIlNkZUZmNJQ1RXUGBtUGRV
UW9POGVMK3lXQF9rV0l5WWhXV1BgbVFvCnpBKmZ5WHpBVDhrIU0mOXJEaEJzZmZ+WGJUVE00Mnth
Qm40dWBvTylGQVN3ZypSKVZNcisqPTh2OGdPcVZoJnNUJQp6bF5ga3JfZn4/S2QpIStJViVCa1FD
NVpYUHlfRnpsOHV3TyRtfUFecTMxVzZ9WnpZSSUjbDRqdlcpJH5VZnx5SjYKelRubDByKFFeJG5v
M0dzbEZ7YGlwMH5QS2RnKiNaYDRwRiM2NzQ5JkZKNnokOFBgRCElP2tJJmpUSCQhQF41YjJvCnph
RWxhZnZCQ3swK18xdXBEQlAmUmpWYXU/IWM4ZEw1YHxsO2FMV3wjQXFzYl8hWDJrQDReX0QxNj5o
bzV2R05ScAp6TChqRW5vWFNKYndJRkheY1Z+akFIciQ7RnFSIUJCRXI8JWstSSpZMjNxOTlAczRE
YmEzITxLSWNQNUJSTGVJNHoKelk2eTJ7Zn5YJCFUbm5PWmFDYXQlaWIybntBWmk2WSpNZ2BMXmpy
Jn5LRzFWNWh7ezBFd0lGSCZKPWNQJDJKfkRECnpxN0trPUVyPCQwJiRTQHQ5ekVCQm4wNTRBM3Uz
O31iMWpJT00kZmUlPGBfTktmfHk8T1RubDFlKFFfP2A4QVo+dgp6QW0kUTEqTWdXdV5qcmhZVypz
Xkt2LTs9ZCF4WmpCZyohPiVQRkE+d0U4R2YmZHhYTkJxSHcxdysjP240UTN8KEcKejtaOVN5KC1y
T3ZnKiNLPjk8NlheRGNvWmU/cmVwN3RpbkFgO1UyR1c9UDJBMDZ6KyklX2F1Y29TSyokbGE4RlVW
CnpSVVhHV2JPSmNeVCNMcjNKb0g9KHFVTytaRXJAREUmJFNAeDQwaiVMK1ZAZFo3PCNTK1FDc01f
N0RRRnk5U2xMIwp6Nk1DKSVRQXl+ejdETnI8d1N5cTQyUit3PHMybFdMMyEtQXNiMWpIayFEb0Y2
cURzKG5FcnxMKyYkUz5iMTNsTSoKenMwczkzMyEpbShiMWpIRUsrbS14RGdacyNmfHpec1RubDI+
KFFfP2BgOXt5UkFaOGpwKk1nWDFeanImS2NGfVYhCnpoPFFjTndJRjVgSj1jUG1PWX5kfFZpd1ZK
NEskbHw9c2U4bypQJSY7Sjcze2VFOEg0fG5eTCY3M1VgNlJVOHIjRAp6NnotYEN3X2Yya0RCTUt+
SD80M1I3NEJrJXlGfXFPRGNvai1uXkN3Kzc0OTtIeUlrUzZEQktrYV9jVm9qeTI0JGwKemE5MWha
R1pnTT5rN0ZHPTQ7KkB+TWRNVCtkYWVhZ2JMaERpd0EhS3IxV3sqJjg1QmY/cTMybzx3U31IKkt+
eG9iCnp0XzR2fj0oIWR8Qzg2aDk1SCpDSlllN15HZGFlYWdIfFYoKk04JS16U2BmOEBvQCtyPTMz
eyN0UTZLMko3RFEjQgp6PVVOYW9mdTN0WVIwRGRoMXlLait4ZlZuUHB5eWY7YkJ+XkRMQ2lYT3Rf
M21RPSghZmVPcnombzVPYSo0WWVDRXwKemRhZWFBdWpzaUojRWhjblNgYyVJb0ArdE9CNl9aWVgw
cn1tZ0lXRExiZ2paWVF7a1NhYUwtbl8+bEUlZTNpbil2CnpkIUU4UVUqVFMkYTQlSDI+bE4tcjNp
bzEjZHhecmBwbH5sJHhFbUdqQ1dVKk0hbzZKS1VaSFJ8RThIczs/b3xyKwp6WUs0MV4hcmh7OXVU
ezkkRGN0S2xqJjxsN2FPay1malo9Qih4ZlZwdHEzMm88KXJPdkhMRFUmfnRfNHdIPSghZHwKelpL
M0J7NUxKYnFZZUNjI2RhZWFnTiQ5eTJMPUI8bVNgZ0tQb0ArdFc0U0tFeFE4RFBiN0RUT309VU5h
fGZ9VSRaCnopQ1lSNTF5TEYzeGZWb0NweXlmOylxdExCTERUX3l0XzR2Nj0oIWZlK0B0NE81Vk1Z
K1llQ0Y2ZGFlYUEpOUFTdAp6IzJsbU5TYGYyfm9AK3RPRHwpVTRGezl8WTdRfGVsPVVOYzZoQE5Z
cCp7bmx2el5yfjlkWldVPE4jV2tDYUJvcSMKenc8X0cqNno9VGBfWVFAN3JeM0JVO29oeHE/QF9x
LUQlfEBOPyk/Z1B0SE9PaTtYYkh2QTV5cHZFOElzRT94UEMjCnpGQF5pTSFoSiZGS0I7aEBRbipo
bSstRFQtdmtMYilrN0ZIcjEzMl90aV5pIXVeanImfj1Gb0YzaC15UjZ3SUojWQp6Sj1jUCRGIVdw
dHFQRWE7RXJfWkAmJFNAeDJ8ZD8+czNpMVUzITtZNWIxakpLTEM+YHk+SU9hNmZ+WGt1VG5uT0IK
eiZ+cShfRG5aWStBbkY0PipNZ2BGXmpyJn5DZVUqJmgteUkzd0lKI01KPWNQJDBRNmk3VighcyVF
cj9sMSYkU0B0Cno4JEgqOG19Jkd9M3UyRFpiMWpKM01iRVYkPGBxNUhmfHliQ1RubDBAKFFfP2BT
d3puQCZ9YFBCK2Myd05oaStINgp6Jm53Jik2eis9KF9hJWs5TCpjJXhhOT5mbEl+REckM2ltYUkr
cDJKUERjc2k7P3J3JHFoUWZWUTtsOERDLSZWTnEKekRCTzF5P3QyUCVrSF8mbXpZUUZFbm5ncCpF
UDkjK0Z7a0toN1F9MyNyJiRwNWhATklhJXBpSzIxdT1LJVglQHQrCnpwe0gzOF5NIyZmTENoMy1u
Z3VhTz14RytqPzRZTXY1YzdoYlc8a3NkZFlUMD43d0JtZyM0TW52U3JGR0JKPFdvKwp6XjV8KDYj
NUc0eHZtbVpFZFlUMXNvemNAUWglMWJxVzxnd0FeZlV8TnMtbVlFPXBLQndKenB0cFpLWnZLTnhQ
R1AKelhaaV5rb3U2UFk0JGJxVnsybU51X1RuNjRye0lRYkBUbWdfJSl5NVpuMEZzRlVgN2BZbWB7
eGtuM0krY242RGktCnpVQGwrJmY0N3NzVC1WKTZ6X3NHU3xLSURgYEZrZnBgPHUpNXZIM3JTNWBZ
bGUrYGJDO0FjZm1jO1UyN1RgenpjNQp6OT4+YmZBM1hobkZHTz8rUHJuMldTb0FBRkNgdEk7ellD
Z2MoWFIhfnYqPFUxd3pLRnoxa0piVHd9S1d9XmdCVkAKelRsOU5EXmFmQUExbnA/aWUraztqcVc+
MjMwRV8tMFhsSU41RDUkWExQbDklXz0rQTw3d2RqOFk/UGskbTFucTlvCnp7ZXQkZTI8P1MtVF4/
dT04VnhQbCg7fGNBO2hPRGI1ISRGTStTe1Q1TENpRnM4VkYqSkB6ZypOdnh9eiZmfHlzLQp6Mnw+
JiNvKkQ+WkV+JTJYMSFmVVg0Uzs2ejRzOCYjYGdkcHREJT9RfGNkKWA4cUh1PlErK2hsTHhXWE53
YTdRWksKelEzYGpvIXR2VlckR2NHQjdBZjNmZyZSYDFWVEJ0fXhLVnswUUBDLTNuXjNxVjNiJDBA
bU1QcHI2eio3c0o1SiNxCnpzJkwwRSs7V2ZPU3VfWF5QcnBSdFIzNHN3MzhMb2teaColY2hOb1lH
czUzbk01PTRkSj42YWpDM3MxaVVRQmA+UQp6QzVVPiQoPVMwKDV9dGt1cUs1R0ZPQXl0QXIoYzRv
OCRBNklNOCk5Z21tcTJkUHJuM0ZDM3lOSmkyQV9PRkZ7bFcKem9fLTBVQ2gqaWk1WT5SRTI3OyZx
SlQod1IxPmxvZjFUcHRgWTlOU04kNVI3QSVyfkFJMng2eDMpSWJuKGpIZD5JCnptfForSTVYOExW
c2V2Rzc2aSpFVkZfKEMxQWMkR1NRdjt5Y3RWMVZZUnt5K3duOEtaP2EzPzk7JHFNJnlnPEdMOwp6
azVJVCU2eilgb2QhKWlXTzVzKjIrLVZBVHkyNzJJYUF6dnFxWlJIZmc/byZgb3ZtPD5Says2fit+
WERROUVFIz0KeiFhWSZwb31fVCtEJV9KNT9rTmhsJUh2cHZQNV82ZVUhcmo7NF5PYFlRRkQwdUM1
VVJuKD1TMlA4Sj5PI3FRZGE+CnpPQXhoJXIoYzRvRG0/dVhMX09pQG1tbiQkUHJuM0ZMd05jbmkw
Wi05RkcxN3xvXy0wVVYofDEhNVZlQSpVeEtJLQp6SnBCP3hlYzxWckFTd2UtelhWWWVjeG9Wc1lR
UiRpTERUYEI4Vkk1U0BZRnlNYkMwSjZmfHp3WUg0d3luPEVlb2wKelcqU2NvMVRue1dZOU5UJiNa
dj04JXF5TjYyeDNPQClJYm4oaUtobUZtXzxBXzBHaURAYlJLNSk+KEhkYW92KDFLCno2PmcyZk8p
MT0zZ31YckVFPnlVNjNpbmluVGQhfiU2eihGMG5edzR1M1V7JT5VN35RQzZtR01eJV8hV1ozVWBe
cAp6VTlOQ2o2eiZSemR6ISpNVUUhYCZ4VF9USTg0N29gJEZVQmIyTSRsYU1CYEsqb18tMFU9SjUx
TzVZPmpLVXhLSkoKekpwQj94aDJpTyFBWmlPd3pYVlpMYz17IVhkY3hCJEt+eGYrZWhIJDZAYnBV
JSlxfCZCZn5Ycmp7U3JqUTtPVW5qCnpZNlZaZjFXX2U7YFh6fF56fCR7NVIwZmBZMzhFKE8pSWJv
YGZUc3E2cn5eRFQ1SlV5d3NldkhvOSMwSmZHMyQ3MAp6QWMqPEtRdipURkdAY3A9VnZoMERLb0dO
d3J2YCRVUzNFVGsjRWp5cGZndDcqUFluYnlpK0V9UEdARXRrOHFEZ34KenA9JVpIbkZ7d1RnP3FO
YlU4aXUqUU1sKFMtMThMZmAzbTt9Zz9wakdVOVdJMlFuKGlAKylFVmgyOERhNiFyaUVGCnpIITBs
OTZ6PTU7X1g+cihTPmF4KGFJYUZoUzFhNlc2eiYjPGQjJUV+UFRea2ZhalprdmZXeS0tKEt3WmRy
KGM0bwp6SVh3TG1NNzgxUm1tdW00UHJuM0ZWUi1yX2h9eSFfRkZ7bGxvXy0wVXA3OFdiNVM0X2RV
eEtKMUpwQj94XzJCODMKekFuRkVCelhWWStjPXshWFRFV3ZWS354RXplaEgjSkBicFUlbTRUO1Vm
fld+UilldUJBO0hpY24+SHRxUTFXXkhhCnpzdihIRSQ1UmJLJXNRVEcyeDdrUlI2YEltamkoeGRt
fTVORTVYOWBfc2ZIbHQ2O0N3O0Z7NX5AQSY5eGVRdz40UAp6QkEjamgmMU1+WDE3YEs+Jj5JISpP
JHpzQmc/byNfeTtiNGZyZl9kcHhPWFZySX5ERi0zaW9iPmR5bTRzU0s7MkwKemFQTD5SVE5VbUQz
aW07VWA7ZndZU204ZFJhMzU4O2sxNT44NzQ4IVhfZXE4T2wpYDtsO1hiMnFwSDtaZWNedkR8Cno4
XkdifG9NQGNOIV96ckkpRXU3OTM4TEVZYldSWDtoTnA5YXM0elU4NkdVeXs+Nns+ezNReSsqUUJR
YX1DeH1ZSQp6KD5YIVo1SSU4ODVZPlpFOTE9dmA7MWg9Z1E4RDwkQXdrcCVLNTxBOFJmMTAoNT00
RkE2TmR5KjhUaUJATERVMzMKenNZTVhnZktPQD5MPj1JaFNfRHg2X0Bvdj0lc29ELU1HJikmUGlo
Z3dlQitaXjFUb1kycSF2TlVGK1FuOTVWTU88CnpZN3hZfDsqKGtnRntBalQ3RDNEPEtCK3x6dnhy
WT4waC1NXmJRQDslPihLMkFfaiFmO2cySGBLO2w4QUJjUFFNSwp6NzQ5bnZjYztSQVJwR3YtYTli
N2JFYHxITCFyaVRLLSV6LTNkS31OVStyWihJYnRJUXVWU0tXVkFnKFB3U3d8MzgKejZgIW1saTBn
P0ApKUI7JiMzJDxyO3VfK1VicCZ6c0BYMCFZeE5pN2w5WUlfJWU2byVwdGAkQzZNLVcjRHBSNk5A
Cno+d3swJDV5WHxqQytpNX1uJjZYbDFhVVIrJHZUMyM0KXxtcEwwa2NSdkpUS2E8X1A7cjtPdk59
QDlpaDx5IU19Zgp6KGZKOEphaTs/bUA3P3cqZl9uVnpLS0Ezc1g0dDw/RkBNRiFWJDgkOHg1Sm9e
dT5nYkk0KVQ5fll7dVZ6e3tPV0MKemY4QSNBSDRhb2pfWVpZKC0qdkQ1LUpqMDVhRj0oI2JiJmVn
QERKVFAxZGJPRllKPE4mMGI/JTRESHpuc2NeSkU0CnpZe0EkRzt8N2NlVkRQNExjWl8jbig5JXpG
KEVqLVVFKk5MOG8xUHJwRmc1c3lPX1M0V2ZQMyskdHl7Zm08S35UUAp6WDlnZD5XJWJrcz54MjJr
bFRLUSt7aGg1N2FRcm9RVXY9eUhlZVBfeyFNfGdFbiZLYiQ/cEAhI1d6bUNueCM/IWEKemY2U2xX
JE4ydzx1e3tSa0tORitDSTBzYGQ0RW56IyNzJjw9SGlOO3F1Zio2QjxKbE5va0x4a0dLSHRLcXRf
UE9JCnp7PE1BSCQ8OVRCYk1uWGt8TmJ6LVY+czk4OCNpNHZ4blhjLVlWKFpVWl5oKUw4KW4qJnNY
Nl9gX1BePXdpZ2pCUwp6dUhDUzRRaHZQP1d9ejJjZDBLZTwjIWMldFVwT14ydilSeSpqI0shal9S
flV6bjFjZXJ2dG49bz1QfGFaPDl7bS0KeiE9fXZGOEVlPEJUUnFpSSt1K0YxKENEREVXR2x7ej4o
O0phaWpPWmIjJTZaV1c5WS04clJHMUVlZWU+SGZCKlRMCnl0VSR9MGdzJXBfMnd3PChoQkBEVSlw
KGtqLUpxUm5NVHxMYD1nKzI/OVY3UWl3STRaY15sdHh+P2YqWT5ZaWpITwoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL2RpZmZpU0FDLnR4dCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9pc2FjL2ZpeC90ZXN0L1FBL2RpZmZpU0FDLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTZiODdjMDY2YjNhYzdhNWJhZDkyOGQ2NjA2ZTM2YmNjZWE4ZTk1Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9m
aXgvdGVzdC9RQS9kaWZmaVNBQy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ODEgKzAsMCBAQAot
IyEvYmluL2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsg
IyBmb3JjZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIKLQotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzFEVE1GXzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pMzBfMURUTUZfMTZrSHpfbG9u
Zy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xRFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzFEVE1GXzE2a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMkRU
TUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUxL2kzMF8yRFRNRl8xNmtIel9sb25nLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzJEVE1GXzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9p
NjBfMkRUTUZfMTZrSHpfbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8zRFRNRl8xNmtI
el9sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzNEVE1GXzE2a0h6X2xvbmcucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfM0RUTUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF8zRFRN
Rl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzREVE1GXzE2a0h6X2xvbmcu
cGNtIC4uL2RhdGFxYTM1MS9pMzBfNERUTUZfMTZrSHpfbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2k2MF80RFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzREVE1GXzE2a0h6
X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNURUTUZfMTZrSHpfbG9uZy5wY20gLi4v
ZGF0YXFhMzUxL2kzMF81RFRNRl8xNmtIel9sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzVEVE1GXzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBfNURUTUZfMTZrSHpfbG9uZy5w
Y20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF82RFRNRl8xNmtIel9sb25nLnBjbSAuLi9kYXRhcWEz
NTEvaTMwXzZEVE1GXzE2a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNkRUTUZf
MTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF82RFRNRl8xNmtIel9sb25nLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvYTFEVE1GXzE2a0h6X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9hMURUTUZf
MTZrSHpfbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2EyRFRNRl8xNmtIel9sb25nLnBjbSAu
Li9kYXRhcWEzNTEvYTJEVE1GXzE2a0h6X2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hM0RU
TUZfMTZrSHpfbG9uZy5wY20gLi4vZGF0YXFhMzUxL2EzRFRNRl8xNmtIel9sb25nLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzdEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzdEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzdEVE1GXzE2a0h6
X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzdEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzhEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzhE
VE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzhEVE1GXzE2a0h6X3No
b3J0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzhEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzlEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzlEVE1G
XzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzlEVE1GXzE2a0h6X3Nob3J0
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzlEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzEwRFRNRl8xNmtIel9zaG9ydC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMERUTUZf
MTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTBEVE1GXzE2a0h6X3Nob3J0
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwRFRNRl8xNmtIel9zaG9ydC5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2kzMF8xMURUTUZfMTZrSHpfc2hvcnQucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTFEVE1G
XzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExRFRNRl8xNmtIel9zaG9y
dC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMURUTUZfMTZrSHpfc2hvcnQucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMTJEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEyRFRN
Rl8xNmtIel9zaG9ydC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMkRUTUZfMTZrSHpfc2hv
cnQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTJEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvYTREVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvYTREVE1GXzE2a0h6
X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTVEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9k
YXRhcWEzNTEvYTVEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTZEVE1G
XzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvYTZEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzEzRjAwLklOUCAuLi9kYXRhcWEzNTAvaTMwXzEzRjAwLklOUAot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEzRjAwLklOUCAuLi9kYXRhcWEzNTAvaTYwXzEzRjAwLklO
UAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0RjAwLklOUCAuLi9kYXRhcWEzNTAvaTMwXzE0RjAw
LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0RjAwLklOUCAuLi9kYXRhcWEzNTAvaTYwXzE0
RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE1RjAwLklOUCAuLi9kYXRhcWEzNTAvaTMw
XzE1RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1RjAwLklOUCAuLi9kYXRhcWEzNTAv
aTYwXzE1RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE2RjAwLklOUCAuLi9kYXRhcWEz
NTAvaTMwXzE2RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE2RjAwLklOUCAuLi9kYXRh
cWEzNTAvaTYwXzE2RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE3RjAwLklOUCAuLi9k
YXRhcWEzNTAvaTMwXzE3RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE3RjAwLklOUCAu
Li9kYXRhcWEzNTAvaTYwXzE3RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE4RjAwLklO
UCAuLi9kYXRhcWEzNTAvaTMwXzE4RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE4RjAw
LklOUCAuLi9kYXRhcWEzNTAvaTYwXzE4RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTdGMDAu
SU5QIC4uL2RhdGFxYTM1MC9hN0YwMC5JTlAKLWRpZmYgLi4vZGF0YXFhMzUwL2E4RjAwLklOUCAu
Li9kYXRhcWEzNTAvYThGMDAuSU5QCi1kaWZmIC4uL2RhdGFxYTM1MC9hOUYwMC5JTlAgLi4vZGF0
YXFhMzUwL2E5RjAwLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE5RjAxLklOUCAuLi9kYXRh
cWEzNTAvaTMwXzE5RjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE5RjAxLklOUCAuLi9k
YXRhcWEzNTAvaTYwXzE5RjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzIwRjAxLklOUCAu
Li9kYXRhcWEzNTAvaTMwXzIwRjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzIwRjAxLklO
UCAuLi9kYXRhcWEzNTAvaTYwXzIwRjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzIxRjAx
LklOUCAuLi9kYXRhcWEzNTAvaTMwXzIxRjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzIx
RjAxLklOUCAuLi9kYXRhcWEzNTAvaTYwXzIxRjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzIyRjAxLklOUCAuLi9kYXRhcWEzNTAvaTMwXzIyRjAxLklOUAotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzIyRjAxLklOUCAuLi9kYXRhcWEzNTAvaTYwXzIyRjAxLklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzIzRjAxLklOUCAuLi9kYXRhcWEzNTAvaTMwXzIzRjAxLklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzIzRjAxLklOUCAuLi9kYXRhcWEzNTAvaTYwXzIzRjAxLklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzI0RjAxLklOUCAuLi9kYXRhcWEzNTAvaTMwXzI0RjAxLklOUAotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzI0RjAxLklOUCAuLi9kYXRhcWEzNTAvaTYwXzI0RjAxLklOUAotZGlm
ZiAuLi9kYXRhcWEzNTAvYTEwRjAxLklOUCAuLi9kYXRhcWEzNTAvYTEwRjAxLklOUAotZGlmZiAu
Li9kYXRhcWEzNTAvYTExRjAxLklOUCAuLi9kYXRhcWEzNTAvYTExRjAxLklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvYTEyRjAxLklOUCAuLi9kYXRhcWEzNTAvYTEyRjAxLklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzI1RjAyLklOUCAuLi9kYXRhcWEzNTAvaTMwXzI1RjAyLklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzI1RjAyLklOUCAuLi9kYXRhcWEzNTAvaTYwXzI1RjAyLklOUAotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzI2RjAyLklOUCAuLi9kYXRhcWEzNTAvaTMwXzI2RjAyLklOUAotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzI2RjAyLklOUCAuLi9kYXRhcWEzNTAvaTYwXzI2RjAyLklOUAot
ZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzI3RjAyLklOUCAuLi9kYXRhcWEzNTAvaTMwXzI3RjAyLklO
UAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzI3RjAyLklOUCAuLi9kYXRhcWEzNTAvaTYwXzI3RjAy
LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzI4RjAyLklOUCAuLi9kYXRhcWEzNTAvaTMwXzI4
RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzI4RjAyLklOUCAuLi9kYXRhcWEzNTAvaTYw
XzI4RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzI5RjAyLklOUCAuLi9kYXRhcWEzNTAv
aTMwXzI5RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzI5RjAyLklOUCAuLi9kYXRhcWEz
NTAvaTYwXzI5RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzMwRjAyLklOUCAuLi9kYXRh
cWEzNTAvaTMwXzMwRjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzMwRjAyLklOUCAuLi9k
YXRhcWEzNTAvaTYwXzMwRjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTEzRjAyLklOUCAuLi9k
YXRhcWEzNTAvYTEzRjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTE0RjAyLklOUCAuLi9kYXRh
cWEzNTAvYTE0RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTE1RjAyLklOUCAuLi9kYXRhcWEz
NTAvYTE1RjAyLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzMxRjAzLklOUCAuLi9kYXRhcWEz
NTAvaTMwXzMxRjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzMxRjAzLklOUCAuLi9kYXRh
cWEzNTAvaTYwXzMxRjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzMyRjAzLklOUCAuLi9k
YXRhcWEzNTAvaTMwXzMyRjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzMyRjAzLklOUCAu
Li9kYXRhcWEzNTAvaTYwXzMyRjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzMzRjAzLklO
UCAuLi9kYXRhcWEzNTAvaTMwXzMzRjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzMzRjAz
LklOUCAuLi9kYXRhcWEzNTAvaTYwXzMzRjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzM0
RjAzLklOUCAuLi9kYXRhcWEzNTAvaTMwXzM0RjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzM0RjAzLklOUCAuLi9kYXRhcWEzNTAvaTYwXzM0RjAzLklOUAotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzM1RjAzLklOUCAuLi9kYXRhcWEzNTAvaTMwXzM1RjAzLklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzM1RjAzLklOUCAuLi9kYXRhcWEzNTAvaTYwXzM1RjAzLklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzM2RjAzLklOUCAuLi9kYXRhcWEzNTAvaTMwXzM2RjAzLklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzM2RjAzLklOUCAuLi9kYXRhcWEzNTAvaTYwXzM2RjAzLklOUAotZGlmZiAu
Li9kYXRhcWEzNTAvYTE2RjAzLklOUCAuLi9kYXRhcWEzNTAvYTE2RjAzLklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvYTE3RjAzLklOUCAuLi9kYXRhcWEzNTAvYTE3RjAzLklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvYTE4RjAzLklOUCAuLi9kYXRhcWEzNTAvYTE4RjAzLklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzM3RjA0LklOUCAuLi9kYXRhcWEzNTAvaTMwXzM3RjA0LklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzM3RjA0LklOUCAuLi9kYXRhcWEzNTAvaTYwXzM3RjA0LklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzM4RjA0LklOUCAuLi9kYXRhcWEzNTAvaTMwXzM4RjA0LklOUAotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzM4RjA0LklOUCAuLi9kYXRhcWEzNTAvaTYwXzM4RjA0LklOUAotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzM5RjA0LklOUCAuLi9kYXRhcWEzNTAvaTMwXzM5RjA0LklOUAot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzM5RjA0LklOUCAuLi9kYXRhcWEzNTAvaTYwXzM5RjA0LklO
UAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQwRjA0LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQwRjA0
LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQwRjA0LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQw
RjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQxRjA0LklOUCAuLi9kYXRhcWEzNTAvaTMw
XzQxRjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQxRjA0LklOUCAuLi9kYXRhcWEzNTAv
aTYwXzQxRjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQyRjA0LklOUCAuLi9kYXRhcWEz
NTAvaTMwXzQyRjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQyRjA0LklOUCAuLi9kYXRh
cWEzNTAvaTYwXzQyRjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTE5RjA0LklOUCAuLi9kYXRh
cWEzNTAvYTE5RjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTIwRjA0LklOUCAuLi9kYXRhcWEz
NTAvYTIwRjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTIxRjA0LklOUCAuLi9kYXRhcWEzNTAv
YTIxRjA0LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQzRjA1LklOUCAuLi9kYXRhcWEzNTAv
aTMwXzQzRjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQzRjA1LklOUCAuLi9kYXRhcWEz
NTAvaTYwXzQzRjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQ0RjA1LklOUCAuLi9kYXRh
cWEzNTAvaTMwXzQ0RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQ0RjA1LklOUCAuLi9k
YXRhcWEzNTAvaTYwXzQ0RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQ1RjA1LklOUCAu
Li9kYXRhcWEzNTAvaTMwXzQ1RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQ1RjA1LklO
UCAuLi9kYXRhcWEzNTAvaTYwXzQ1RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzQ2RjA1
LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQ2RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzQ2
RjA1LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQ2RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzQ3RjA1LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQ3RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzQ3RjA1LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQ3RjA1LklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzQ4RjA1LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQ4RjA1LklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzQ4RjA1LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQ4RjA1LklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvYTIyRjA1LklOUCAuLi9kYXRhcWEzNTAvYTIyRjA1LklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvYTIzRjA1LklOUCAuLi9kYXRhcWEzNTAvYTIzRjA1LklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvYTI0RjA1LklOUCAuLi9kYXRhcWEzNTAvYTI0RjA1LklOUAotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzQ5RjA2LklOUCAuLi9kYXRhcWEzNTAvaTMwXzQ5RjA2LklOUAotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzQ5RjA2LklOUCAuLi9kYXRhcWEzNTAvaTYwXzQ5RjA2LklOUAotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzUwRjA2LklOUCAuLi9kYXRhcWEzNTAvaTMwXzUwRjA2LklOUAotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzUwRjA2LklOUCAuLi9kYXRhcWEzNTAvaTYwXzUwRjA2LklOUAotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzUxRjA2LklOUCAuLi9kYXRhcWEzNTAvaTMwXzUxRjA2LklOUAotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzUxRjA2LklOUCAuLi9kYXRhcWEzNTAvaTYwXzUxRjA2LklOUAot
ZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzUyRjA2LklOUCAuLi9kYXRhcWEzNTAvaTMwXzUyRjA2LklO
UAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzUyRjA2LklOUCAuLi9kYXRhcWEzNTAvaTYwXzUyRjA2
LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzUzRjA2LklOUCAuLi9kYXRhcWEzNTAvaTMwXzUz
RjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzUzRjA2LklOUCAuLi9kYXRhcWEzNTAvaTYw
XzUzRjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzU0RjA2LklOUCAuLi9kYXRhcWEzNTAv
aTMwXzU0RjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzU0RjA2LklOUCAuLi9kYXRhcWEz
NTAvaTYwXzU0RjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTI1RjA2LklOUCAuLi9kYXRhcWEz
NTAvYTI1RjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTI2RjA2LklOUCAuLi9kYXRhcWEzNTAv
YTI2RjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvYTI3RjA2LklOUCAuLi9kYXRhcWEzNTAvYTI3
RjA2LklOUAotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzU1bG9uZ3Rlc3QucGNtIC4uL2RhdGFxYTM1
MS9pMzBfNTVsb25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF81NWxvbmd0ZXN0LnBj
bSAuLi9kYXRhcWEzNTEvaTYwXzU1bG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBf
NTZsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUxL2kzMF81Nmxvbmd0ZXN0LnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzU2bG9uZ3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9pNjBfNTZsb25ndGVzdC5w
Y20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF81N2xvbmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzU3bG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNTdsb25ndGVzdC5wY20gLi4v
ZGF0YXFhMzUxL2k2MF81N2xvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzU4bG9u
Z3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9pMzBfNThsb25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFh
MzUwL2k2MF81OGxvbmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzU4bG9uZ3Rlc3QucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pMzBfNTlsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUxL2kzMF81OWxv
bmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzU5bG9uZ3Rlc3QucGNtIC4uL2RhdGFx
YTM1MS9pNjBfNTlsb25ndGVzdC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF82MGxvbmd0ZXN0
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzYwbG9uZ3Rlc3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfNjBsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUxL2k2MF82MGxvbmd0ZXN0LnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvYTI4bG9uZ3Rlc3QucGNtIC4uL2RhdGFxYTM1MS9hMjhsb25ndGVzdC5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2EyOWxvbmd0ZXN0LnBjbSAuLi9kYXRhcWEzNTEvYTI5bG9uZ3Rl
c3QucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzBsb25ndGVzdC5wY20gLi4vZGF0YXFhMzUxL2Ez
MGxvbmd0ZXN0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzYxbHRlc3Rfc3BlZWNoX2NsZWFu
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzYxbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzYxbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzYx
bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzYybHRlc3Rfc3Bl
ZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzYybHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzYybHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEz
NTEvaTYwXzYybHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzYz
bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzYzbHRlc3Rfc3BlZWNoX2Ns
ZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzYzbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzYzbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzY0bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzY0bHRlc3Rf
c3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzY0bHRlc3Rfc3BlZWNoX2Ns
ZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzY0bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzY1bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzY1bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzY1bHRlc3Rf
c3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzY1bHRlc3Rfc3BlZWNoX2NsZWFuLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzY2bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRh
cWEzNTEvaTMwXzY2bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzY2bHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzY2bHRlc3Rfc3BlZWNo
X2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTMxbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAu
Li9kYXRhcWEzNTEvYTMxbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
YTMybHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9kYXRhcWEzNTEvYTMybHRlc3Rfc3BlZWNoX2Ns
ZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTMzbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbSAuLi9k
YXRhcWEzNTEvYTMzbHRlc3Rfc3BlZWNoX2NsZWFuLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzY3bHRlc3RfbXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pMzBfNjdsdGVzdF9tdXNpYy5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2k2MF82N2x0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzY3
bHRlc3RfbXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNjhsdGVzdF9tdXNpYy5wY20g
Li4vZGF0YXFhMzUxL2kzMF82OGx0ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzY4bHRlc3RfbXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pNjBfNjhsdGVzdF9tdXNpYy5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2kzMF82OWx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzY5
bHRlc3RfbXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNjlsdGVzdF9tdXNpYy5wY20g
Li4vZGF0YXFhMzUxL2k2MF82OWx0ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzcwbHRlc3RfbXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pMzBfNzBsdGVzdF9tdXNpYy5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2k2MF83MGx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzcw
bHRlc3RfbXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfNzFsdGVzdF9tdXNpYy5wY20g
Li4vZGF0YXFhMzUxL2kzMF83MWx0ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzcxbHRlc3RfbXVzaWMucGNtIC4uL2RhdGFxYTM1MS9pNjBfNzFsdGVzdF9tdXNpYy5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2kzMF83Mmx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzcy
bHRlc3RfbXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfNzJsdGVzdF9tdXNpYy5wY20g
Li4vZGF0YXFhMzUxL2k2MF83Mmx0ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTM0
bHRlc3RfbXVzaWMucGNtIC4uL2RhdGFxYTM1MS9hMzRsdGVzdF9tdXNpYy5wY20KLWRpZmYgLi4v
ZGF0YXFhMzUwL2EzNWx0ZXN0X211c2ljLnBjbSAuLi9kYXRhcWEzNTEvYTM1bHRlc3RfbXVzaWMu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzZsdGVzdF9tdXNpYy5wY20gLi4vZGF0YXFhMzUxL2Ez
Nmx0ZXN0X211c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzczbHRlc3Rfc3BlZWNoX25v
aXN5LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzczbHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzczbHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTYw
XzczbHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzc0bHRlc3Rf
c3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzc0bHRlc3Rfc3BlZWNoX25vaXN5LnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzc0bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzc0bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
Xzc1bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzc1bHRlc3Rfc3BlZWNo
X25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzc1bHRlc3Rfc3BlZWNoX25vaXN5LnBj
bSAuLi9kYXRhcWEzNTEvaTYwXzc1bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzc2bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzc2bHRl
c3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzc2bHRlc3Rfc3BlZWNo
X25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzc2bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzc3bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzc3bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzc3bHRl
c3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzc3bHRlc3Rfc3BlZWNoX25vaXN5
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzc4bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzc4bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzc4bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzc4bHRlc3Rfc3Bl
ZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTM3bHRlc3Rfc3BlZWNoX25vaXN5LnBj
bSAuLi9kYXRhcWEzNTEvYTM3bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvYTM4bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvYTM4bHRlc3Rfc3BlZWNo
X25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTM5bHRlc3Rfc3BlZWNoX25vaXN5LnBjbSAu
Li9kYXRhcWEzNTEvYTM5bHRlc3Rfc3BlZWNoX25vaXN5LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzc5bWlzYzIucGNtIC4uL2RhdGFxYTM1MS9pMzBfNzltaXNjMi5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2k2MF83OW1pc2MyLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzc5bWlzYzIucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfODBtaXNjMi5wY20gLi4vZGF0YXFhMzUxL2kzMF84MG1pc2MyLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzgwbWlzYzIucGNtIC4uL2RhdGFxYTM1MS9pNjBfODBt
aXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF84MW1pc2MyLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzgxbWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfODFtaXNjMi5wY20gLi4vZGF0
YXFhMzUxL2k2MF84MW1pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzgybWlzYzIucGNt
IC4uL2RhdGFxYTM1MS9pMzBfODJtaXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF84Mm1p
c2MyLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzgybWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
MzBfODNtaXNjMi5wY20gLi4vZGF0YXFhMzUxL2kzMF84M21pc2MyLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzgzbWlzYzIucGNtIC4uL2RhdGFxYTM1MS9pNjBfODNtaXNjMi5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2kzMF84NG1pc2MyLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzg0bWlzYzIucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfODRtaXNjMi5wY20gLi4vZGF0YXFhMzUxL2k2MF84NG1p
c2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQwbWlzYzIucGNtIC4uL2RhdGFxYTM1MS9hNDBt
aXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E0MW1pc2MyLnBjbSAuLi9kYXRhcWEzNTEvYTQx
bWlzYzIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNDJtaXNjMi5wY20gLi4vZGF0YXFhMzUxL2E0
Mm1pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzg1cHVyZW5iLnBjbSAuLi9kYXRhcWEz
NTEvaTMwXzg1cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzg1cHVyZW5iLnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzg1cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzg2cHVy
ZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzg2cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzg2cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzg2cHVyZW5iLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzg3cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzg3cHVyZW5iLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzg3cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzg3cHVy
ZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzg4cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzg4cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzg4cHVyZW5iLnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzg4cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzg5cHVyZW5i
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzg5cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
Xzg5cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzg5cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzkwcHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzkwcHVyZW5iLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzkwcHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzkwcHVyZW5i
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQzcHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvYTQzcHVy
ZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQ0cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEvYTQ0
cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQ1cHVyZW5iLnBjbSAuLi9kYXRhcWEzNTEv
YTQ1cHVyZW5iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzkxc2F3c3dlZXBfMzgwXzYwLnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzkxc2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzkxc2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzkxc2F3c3dlZXBf
MzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzkyc2F3c3dlZXBfMzgwXzYwLnBjbSAu
Li9kYXRhcWEzNTEvaTMwXzkyc2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzkyc2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzkyc2F3c3dlZXBfMzgw
XzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzkzc2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzkzc2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
Xzkzc2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzkzc2F3c3dlZXBfMzgwXzYw
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk0c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRh
cWEzNTEvaTMwXzk0c2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzk0
c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzk0c2F3c3dlZXBfMzgwXzYwLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk1c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEz
NTEvaTMwXzk1c2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzk1c2F3
c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzk1c2F3c3dlZXBfMzgwXzYwLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk2c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzk2c2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzk2c2F3c3dl
ZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzk2c2F3c3dlZXBfMzgwXzYwLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvYTQ2c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvYTQ2c2F3
c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQ3c2F3c3dlZXBfMzgwXzYwLnBj
bSAuLi9kYXRhcWEzNTEvYTQ3c2F3c3dlZXBfMzgwXzYwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
YTQ4c2F3c3dlZXBfMzgwXzYwLnBjbSAuLi9kYXRhcWEzNTEvYTQ4c2F3c3dlZXBfMzgwXzYwLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk3c2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTMw
Xzk3c2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzk3c2luZXN3ZWVwLnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzk3c2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk4
c2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzk4c2luZXN3ZWVwLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTYwXzk4c2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzk4c2luZXN3ZWVw
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzk5c2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzk5c2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzk5c2luZXN3ZWVwLnBj
bSAuLi9kYXRhcWEzNTEvaTYwXzk5c2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzEwMHNpbmVzd2VlcC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMDBzaW5lc3dlZXAucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfMTAwc2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwMHNp
bmVzd2VlcC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMDFzaW5lc3dlZXAucGNtIC4uL2Rh
dGFxYTM1MS9pMzBfMTAxc2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEwMXNp
bmVzd2VlcC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMDFzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMTAyc2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEwMnNpbmVzd2Vl
cC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMDJzaW5lc3dlZXAucGNtIC4uL2RhdGFxYTM1
MS9pNjBfMTAyc2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTQ5c2luZXN3ZWVwLnBj
bSAuLi9kYXRhcWEzNTEvYTQ5c2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTUwc2lu
ZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvYTUwc2luZXN3ZWVwLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvYTUxc2luZXN3ZWVwLnBjbSAuLi9kYXRhcWEzNTEvYTUxc2luZXN3ZWVwLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzEwM3NpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEw
M3NpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEwM3NpbmVzd2VlcF9o
YWxmLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwM3NpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzEwNHNpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEwNHNp
bmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEwNHNpbmVzd2VlcF9oYWxm
LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEwNHNpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzEwNXNpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEwNXNpbmVz
d2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEwNXNpbmVzd2VlcF9oYWxmLnBj
bSAuLi9kYXRhcWEzNTEvaTYwXzEwNXNpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzEwNnNpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEwNnNpbmVzd2Vl
cF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEwNnNpbmVzd2VlcF9oYWxmLnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzEwNnNpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzEwN3NpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEwN3NpbmVzd2VlcF9o
YWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEwN3NpbmVzd2VlcF9oYWxmLnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzEwN3NpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzEwOHNpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEwOHNpbmVzd2VlcF9oYWxm
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEwOHNpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzEwOHNpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTUyc2lu
ZXN3ZWVwX2hhbGYucGNtIC4uL2RhdGFxYTM1MS9hNTJzaW5lc3dlZXBfaGFsZi5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2E1M3NpbmVzd2VlcF9oYWxmLnBjbSAuLi9kYXRhcWEzNTEvYTUzc2luZXN3
ZWVwX2hhbGYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNTRzaW5lc3dlZXBfaGFsZi5wY20gLi4v
ZGF0YXFhMzUxL2E1NHNpbmVzd2VlcF9oYWxmLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEw
OXNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEwOXNwZWVjaG11c2ljLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzEwOXNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEw
OXNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExMHNwZWVjaG11c2ljLnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzExMHNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzExMHNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExMHNwZWVjaG11c2ljLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExMXNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEv
aTMwXzExMXNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExMXNwZWVjaG11
c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExMXNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzExMnNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzExMnNwZWVjaG11
c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExMnNwZWVjaG11c2ljLnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzExMnNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExM3Nw
ZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzExM3NwZWVjaG11c2ljLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzExM3NwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExM3Nw
ZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExNHNwZWVjaG11c2ljLnBjbSAu
Li9kYXRhcWEzNTEvaTMwXzExNHNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzExNHNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzExNHNwZWVjaG11c2ljLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvYTU1c3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9hNTVzcGVl
Y2htdXNpYy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E1NnNwZWVjaG11c2ljLnBjbSAuLi9kYXRh
cWEzNTEvYTU2c3BlZWNobXVzaWMucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNTdzcGVlY2htdXNp
Yy5wY20gLi4vZGF0YXFhMzUxL2E1N3NwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzExNXNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzExNXNwZWVjaG11c2lj
X25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExNXNwZWVjaG11c2ljX25iLnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzExNXNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzExNnNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzExNnNwZWVjaG11c2ljX25i
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExNnNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzExNnNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEx
N3NwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzExN3NwZWVjaG11c2ljX25iLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExN3NwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEz
NTEvaTYwXzExN3NwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExOHNw
ZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzExOHNwZWVjaG11c2ljX25iLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzExOHNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEv
aTYwXzExOHNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzExOXNwZWVj
aG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzExOXNwZWVjaG11c2ljX25iLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzExOXNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTYw
XzExOXNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEyMHNwZWVjaG11
c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEyMHNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzEyMHNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEy
MHNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTU4c3BlZWNobXVzaWNfbmIu
cGNtIC4uL2RhdGFxYTM1MS9hNThzcGVlY2htdXNpY19uYi5wY20KLWRpZmYgLi4vZGF0YXFhMzUw
L2E1OXNwZWVjaG11c2ljX25iLnBjbSAuLi9kYXRhcWEzNTEvYTU5c3BlZWNobXVzaWNfbmIucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9hNjBzcGVlY2htdXNpY19uYi5wY20gLi4vZGF0YXFhMzUxL2E2
MHNwZWVjaG11c2ljX25iLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEyMXNwZWVjaG9mZmlj
ZTBkQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMjFzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMTIxc3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEy
MXNwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMjJzcGVlY2hvZmZp
Y2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTIyc3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzEyMnNwZWVjaG9mZmljZTBkQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8x
MjJzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTIzc3BlZWNob2Zm
aWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEyM3NwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2k2MF8xMjNzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pNjBf
MTIzc3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEyNHNwZWVjaG9m
ZmljZTBkQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMjRzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfMTI0c3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTYw
XzEyNHNwZWVjaG9mZmljZTBkQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMjVzcGVlY2hv
ZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTI1c3BlZWNob2ZmaWNlMGRCLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzEyNXNwZWVjaG9mZmljZTBkQi5wY20gLi4vZGF0YXFhMzUxL2k2
MF8xMjVzcGVlY2hvZmZpY2UwZEIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTI2c3BlZWNo
b2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEyNnNwZWVjaG9mZmljZTBkQi5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2k2MF8xMjZzcGVlY2hvZmZpY2UwZEIucGNtIC4uL2RhdGFxYTM1MS9p
NjBfMTI2c3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTYxc3BlZWNob2Zm
aWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvYTYxc3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvYTYyc3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9kYXRhcWEzNTEvYTYyc3BlZWNob2Zm
aWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTYzc3BlZWNob2ZmaWNlMGRCLnBjbSAuLi9k
YXRhcWEzNTEvYTYzc3BlZWNob2ZmaWNlMGRCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEy
N3NwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMjdzcGVlY2hfYW5kX21p
c2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTI3c3BlZWNoX2FuZF9taXNjX05CLnBj
bSAuLi9kYXRhcWEzNTEvaTYwXzEyN3NwZWVjaF9hbmRfbWlzY19OQi5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2kzMF8xMjhzcGVlY2hfYW5kX21pc2NfTkIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTI4
c3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEyOHNwZWVjaF9h
bmRfbWlzY19OQi5wY20gLi4vZGF0YXFhMzUxL2k2MF8xMjhzcGVlY2hfYW5kX21pc2NfTkIucGNt
Ci1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTI5c3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRh
cWEzNTEvaTMwXzEyOXNwZWVjaF9hbmRfbWlzY19OQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2
MF8xMjlzcGVlY2hfYW5kX21pc2NfTkIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTI5c3BlZWNoX2Fu
ZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEzMHNwZWVjaF9hbmRfbWlzY19O
Qi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMzBzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMTMwc3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTYw
XzEzMHNwZWVjaF9hbmRfbWlzY19OQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMzFzcGVl
Y2hfYW5kX21pc2NfTkIucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTMxc3BlZWNoX2FuZF9taXNjX05C
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEzMXNwZWVjaF9hbmRfbWlzY19OQi5wY20gLi4v
ZGF0YXFhMzUxL2k2MF8xMzFzcGVlY2hfYW5kX21pc2NfTkIucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9pMzBfMTMyc3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEzMnNwZWVj
aF9hbmRfbWlzY19OQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMzJzcGVlY2hfYW5kX21p
c2NfTkIucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTMyc3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvYTY0c3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvYTY0
c3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTY1c3BlZWNoX2FuZF9t
aXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvYTY1c3BlZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvYTY2c3BlZWNoX2FuZF9taXNjX05CLnBjbSAuLi9kYXRhcWEzNTEvYTY2c3Bl
ZWNoX2FuZF9taXNjX05CLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEzM3NwZWVjaF9hbmRf
bWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2kzMF8xMzNzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1k
aWZmIC4uL2RhdGFxYTM1MC9pNjBfMTMzc3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEz
NTEvaTYwXzEzM3NwZWVjaF9hbmRfbWlzY19XQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8x
MzRzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTM0c3BlZWNoX2FuZF9t
aXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzEzNHNwZWVjaF9hbmRfbWlzY19XQi5w
Y20gLi4vZGF0YXFhMzUxL2k2MF8xMzRzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2Rh
dGFxYTM1MC9pMzBfMTM1c3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEz
NXNwZWVjaF9hbmRfbWlzY19XQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMzVzcGVlY2hf
YW5kX21pc2NfV0IucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTM1c3BlZWNoX2FuZF9taXNjX1dCLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEzNnNwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0
YXFhMzUxL2kzMF8xMzZzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9p
NjBfMTM2c3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzEzNnNwZWVjaF9h
bmRfbWlzY19XQi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xMzdzcGVlY2hfYW5kX21pc2Nf
V0IucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTM3c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzEzN3NwZWVjaF9hbmRfbWlzY19XQi5wY20gLi4vZGF0YXFhMzUxL2k2
MF8xMzdzcGVlY2hfYW5kX21pc2NfV0IucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTM4c3Bl
ZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzEzOHNwZWVjaF9hbmRfbWlzY19X
Qi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xMzhzcGVlY2hfYW5kX21pc2NfV0IucGNtIC4u
L2RhdGFxYTM1MS9pNjBfMTM4c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvYTY3c3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvYTY3c3BlZWNoX2FuZF9t
aXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTY4c3BlZWNoX2FuZF9taXNjX1dCLnBjbSAu
Li9kYXRhcWEzNTEvYTY4c3BlZWNoX2FuZF9taXNjX1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
YTY5c3BlZWNoX2FuZF9taXNjX1dCLnBjbSAuLi9kYXRhcWEzNTEvYTY5c3BlZWNoX2FuZF9taXNj
X1dCLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzEzOXRlc3RNNC5wY20gLi4vZGF0YXFhMzUx
L2kzMF8xMzl0ZXN0TTQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTM5dGVzdE00LnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzEzOXRlc3RNNC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNDB0
ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTQwdGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzE0MHRlc3RNNC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNDB0ZXN0TTQucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMTQxdGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE0MXRlc3RN
NC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNDF0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9p
NjBfMTQxdGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0MnRlc3RNNC5wY20gLi4v
ZGF0YXFhMzUxL2kzMF8xNDJ0ZXN0TTQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTQydGVz
dE00LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE0MnRlc3RNNC5wY20KLWRpZmYgLi4vZGF0YXFhMzUw
L2kzMF8xNDN0ZXN0TTQucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTQzdGVzdE00LnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzE0M3Rlc3RNNC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNDN0ZXN0TTQu
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTQ0dGVzdE00LnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzE0NHRlc3RNNC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNDR0ZXN0TTQucGNtIC4uL2Rh
dGFxYTM1MS9pNjBfMTQ0dGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTcwdGVzdE00LnBj
bSAuLi9kYXRhcWEzNTEvYTcwdGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTcxdGVzdE00
LnBjbSAuLi9kYXRhcWEzNTEvYTcxdGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTcydGVz
dE00LnBjbSAuLi9kYXRhcWEzNTEvYTcydGVzdE00LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMw
XzE0NXRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE0NXRlc3RNNERfcmV2LnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0NXRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTYw
XzE0NXRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0NnRlc3RNNERfcmV2
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE0NnRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzE0NnRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE0NnRlc3RNNERfcmV2
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0N3Rlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEz
NTEvaTMwXzE0N3Rlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0N3Rlc3RN
NERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE0N3Rlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzE0OHRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE0OHRlc3RN
NERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE0OHRlc3RNNERfcmV2LnBjbSAuLi9k
YXRhcWEzNTEvaTYwXzE0OHRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE0
OXRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE0OXRlc3RNNERfcmV2LnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTYwXzE0OXRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE0
OXRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE1MHRlc3RNNERfcmV2LnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzE1MHRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTYwXzE1MHRlc3RNNERfcmV2LnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE1MHRlc3RNNERfcmV2LnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvYTczdGVzdE00RF9yZXYucGNtIC4uL2RhdGFxYTM1MS9hNzN0
ZXN0TTREX3Jldi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E3NHRlc3RNNERfcmV2LnBjbSAuLi9k
YXRhcWEzNTEvYTc0dGVzdE00RF9yZXYucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNzV0ZXN0TTRE
X3Jldi5wY20gLi4vZGF0YXFhMzUxL2E3NXRlc3RNNERfcmV2LnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzE1MXRlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTUxdGVzdE00RC5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2k2MF8xNTF0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE1MXRl
c3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTUydGVzdE00RC5wY20gLi4vZGF0YXFh
MzUxL2kzMF8xNTJ0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1MnRlc3RNNEQu
cGNtIC4uL2RhdGFxYTM1MS9pNjBfMTUydGVzdE00RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kz
MF8xNTN0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE1M3Rlc3RNNEQucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMTUzdGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNTN0ZXN0TTRE
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE1NHRlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9p
MzBfMTU0dGVzdE00RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNTR0ZXN0TTRELnBjbSAu
Li9kYXRhcWEzNTEvaTYwXzE1NHRlc3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTU1
dGVzdE00RC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNTV0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTYwXzE1NXRlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTU1dGVzdE00RC5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xNTZ0ZXN0TTRELnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE1
NnRlc3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTU2dGVzdE00RC5wY20gLi4vZGF0
YXFhMzUxL2k2MF8xNTZ0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTc2dGVzdE00RC5w
Y20gLi4vZGF0YXFhMzUxL2E3NnRlc3RNNEQucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hNzd0ZXN0
TTRELnBjbSAuLi9kYXRhcWEzNTEvYTc3dGVzdE00RC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E3
OHRlc3RNNEQucGNtIC4uL2RhdGFxYTM1MS9hNzh0ZXN0TTRELnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTMwXzE1N3Rlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE1N3Rlc3RmaWxlLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1N3Rlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE1
N3Rlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE1OHRlc3RmaWxlLnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzE1OHRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1OHRl
c3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE1OHRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRh
cWEzNTAvaTMwXzE1OXRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE1OXRlc3RmaWxlLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE1OXRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTYw
XzE1OXRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE2MHRlc3RmaWxlLnBjbSAu
Li9kYXRhcWEzNTEvaTMwXzE2MHRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE2
MHRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE2MHRlc3RmaWxlLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzE2MXRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE2MXRlc3RmaWxl
LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE2MXRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEv
aTYwXzE2MXRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE2MnRlc3RmaWxlLnBj
bSAuLi9kYXRhcWEzNTEvaTMwXzE2MnRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzE2MnRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE2MnRlc3RmaWxlLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvYTc5dGVzdGZpbGUucGNtIC4uL2RhdGFxYTM1MS9hNzl0ZXN0ZmlsZS5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2E4MHRlc3RmaWxlLnBjbSAuLi9kYXRhcWEzNTEvYTgwdGVzdGZp
bGUucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hODF0ZXN0ZmlsZS5wY20gLi4vZGF0YXFhMzUxL2E4
MXRlc3RmaWxlLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE2M3RvbmVfY2lzY28ucGNtIC4u
L2RhdGFxYTM1MS9pMzBfMTYzdG9uZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8x
NjN0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE2M3RvbmVfY2lzY28ucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMTY0dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNjR0
b25lX2Npc2NvLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE2NHRvbmVfY2lzY28ucGNtIC4u
L2RhdGFxYTM1MS9pNjBfMTY0dG9uZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8x
NjV0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE2NXRvbmVfY2lzY28ucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfMTY1dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNjV0
b25lX2Npc2NvLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE2NnRvbmVfY2lzY28ucGNtIC4u
L2RhdGFxYTM1MS9pMzBfMTY2dG9uZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8x
NjZ0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE2NnRvbmVfY2lzY28ucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMTY3dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNjd0
b25lX2Npc2NvLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE2N3RvbmVfY2lzY28ucGNtIC4u
L2RhdGFxYTM1MS9pNjBfMTY3dG9uZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8x
Njh0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE2OHRvbmVfY2lzY28ucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pNjBfMTY4dG9uZV9jaXNjby5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNjh0
b25lX2Npc2NvLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTgydG9uZV9jaXNjby5wY20gLi4vZGF0
YXFhMzUxL2E4MnRvbmVfY2lzY28ucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hODN0b25lX2Npc2Nv
LnBjbSAuLi9kYXRhcWEzNTEvYTgzdG9uZV9jaXNjby5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E4
NHRvbmVfY2lzY28ucGNtIC4uL2RhdGFxYTM1MS9hODR0b25lX2Npc2NvLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvaTMwXzE2OXRvbmVfY2lzY29fbG9uZy5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNjl0
b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTY5dG9uZV9jaXNjb19s
b25nLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE2OXRvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4v
ZGF0YXFhMzUwL2kzMF8xNzB0b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTcw
dG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE3MHRvbmVfY2lzY29f
bG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNzB0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pMzBfMTcxdG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE3
MXRvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNzF0b25lX2Npc2Nv
X2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTcxdG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTMwXzE3MnRvbmVfY2lzY29fbG9uZy5wY20gLi4vZGF0YXFhMzUxL2kzMF8x
NzJ0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTcydG9uZV9jaXNj
b19sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE3MnRvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2kzMF8xNzN0b25lX2Npc2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pMzBf
MTczdG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE3M3RvbmVfY2lz
Y29fbG9uZy5wY20gLi4vZGF0YXFhMzUxL2k2MF8xNzN0b25lX2Npc2NvX2xvbmcucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMTc0dG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRhcWEzNTEvaTMw
XzE3NHRvbmVfY2lzY29fbG9uZy5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNzR0b25lX2Np
c2NvX2xvbmcucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTc0dG9uZV9jaXNjb19sb25nLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvYTg1dG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRhcWEzNTEvYTg1dG9u
ZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTg2dG9uZV9jaXNjb19sb25nLnBj
bSAuLi9kYXRhcWEzNTEvYTg2dG9uZV9jaXNjb19sb25nLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
YTg3dG9uZV9jaXNjb19sb25nLnBjbSAuLi9kYXRhcWEzNTEvYTg3dG9uZV9jaXNjb19sb25nLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE3NXdiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1
MS9pMzBfMTc1d2JfY29udHNwZWVjaC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNzV3Yl9j
b250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE3NXdiX2NvbnRzcGVlY2gucGNtCi1kaWZm
IC4uL2RhdGFxYTM1MC9pMzBfMTc2d2JfY29udHNwZWVjaC5wY20gLi4vZGF0YXFhMzUxL2kzMF8x
NzZ3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE3NndiX2NvbnRzcGVl
Y2gucGNtIC4uL2RhdGFxYTM1MS9pNjBfMTc2d2JfY29udHNwZWVjaC5wY20KLWRpZmYgLi4vZGF0
YXFhMzUwL2kzMF8xNzd3Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE3N3diX2Nv
bnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pNjBfMTc3d2JfY29udHNwZWVjaC5wY20g
Li4vZGF0YXFhMzUxL2k2MF8xNzd3Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzE3OHdiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9pMzBfMTc4d2JfY29udHNwZWVj
aC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2k2MF8xNzh3Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzE3OHdiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9pMzBfMTc5
d2JfY29udHNwZWVjaC5wY20gLi4vZGF0YXFhMzUxL2kzMF8xNzl3Yl9jb250c3BlZWNoLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE3OXdiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9p
NjBfMTc5d2JfY29udHNwZWVjaC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2kzMF8xODB3Yl9jb250
c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE4MHdiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4u
L2RhdGFxYTM1MC9pNjBfMTgwd2JfY29udHNwZWVjaC5wY20gLi4vZGF0YXFhMzUxL2k2MF8xODB3
Yl9jb250c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTg4d2JfY29udHNwZWVjaC5wY20g
Li4vZGF0YXFhMzUxL2E4OHdiX2NvbnRzcGVlY2gucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hODl3
Yl9jb250c3BlZWNoLnBjbSAuLi9kYXRhcWEzNTEvYTg5d2JfY29udHNwZWVjaC5wY20KLWRpZmYg
Li4vZGF0YXFhMzUwL2E5MHdiX2NvbnRzcGVlY2gucGNtIC4uL2RhdGFxYTM1MS9hOTB3Yl9jb250
c3BlZWNoLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE4MXdiX3NwZWVjaF9vZmZpY2UyNWRi
LnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE4MXdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAu
Li9kYXRhcWEzNTAvaTYwXzE4MXdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEv
aTYwXzE4MXdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE4
MndiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE4MndiX3NwZWVjaF9v
ZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE4MndiX3NwZWVjaF9vZmZpY2Uy
NWRiLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE4MndiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlm
ZiAuLi9kYXRhcWEzNTAvaTMwXzE4M3diX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEz
NTEvaTMwXzE4M3diX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYw
XzE4M3diX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE4M3diX3NwZWVj
aF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE4NHdiX3NwZWVjaF9vZmZp
Y2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE4NHdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE4NHdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRh
cWEzNTEvaTYwXzE4NHdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAv
aTMwXzE4NXdiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTMwXzE4NXdiX3Nw
ZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvaTYwXzE4NXdiX3NwZWVjaF9v
ZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE4NXdiX3NwZWVjaF9vZmZpY2UyNWRiLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvaTMwXzE4NndiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9k
YXRhcWEzNTEvaTMwXzE4NndiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEz
NTAvaTYwXzE4NndiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEvaTYwXzE4Nndi
X3NwZWVjaF9vZmZpY2UyNWRiLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTkxd2Jfc3BlZWNoX29m
ZmljZTI1ZGIucGNtIC4uL2RhdGFxYTM1MS9hOTF3Yl9zcGVlY2hfb2ZmaWNlMjVkYi5wY20KLWRp
ZmYgLi4vZGF0YXFhMzUwL2E5MndiX3NwZWVjaF9vZmZpY2UyNWRiLnBjbSAuLi9kYXRhcWEzNTEv
YTkyd2Jfc3BlZWNoX29mZmljZTI1ZGIucGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hOTN3Yl9zcGVl
Y2hfb2ZmaWNlMjVkYi5wY20gLi4vZGF0YXFhMzUxL2E5M3diX3NwZWVjaF9vZmZpY2UyNWRiLnBj
bQotZGlmZiAuLi9kYXRhcWEzNTAvYTMwXzFEVE1GXzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEz
NTEvYTMwXzFEVE1GXzE2a0h6X3Nob3J0LnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTYwXzFEVE1G
XzE2a0h6X3Nob3J0LnBjbSAuLi9kYXRhcWEzNTEvYTYwXzFEVE1GXzE2a0h6X3Nob3J0LnBjbQot
ZGlmZiAuLi9kYXRhcWEzNTAvYTMwXzJsdGVzdF9zcGVlY2hfbm9pc3kucGNtIC4uL2RhdGFxYTM1
MS9hMzBfMmx0ZXN0X3NwZWVjaF9ub2lzeS5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E2MF8ybHRl
c3Rfc3BlZWNoX25vaXN5LnBjbSAuLi9kYXRhcWEzNTEvYTYwXzJsdGVzdF9zcGVlY2hfbm9pc3ku
cGNtCi1kaWZmIC4uL2RhdGFxYTM1MC9hMzBfM21pc2MyLnBjbSAuLi9kYXRhcWEzNTEvYTMwXzNt
aXNjMi5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E2MF8zbWlzYzIucGNtIC4uL2RhdGFxYTM1MS9h
NjBfM21pc2MyLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTMwXzRzaW5lc3dlZXAucGNtIC4uL2Rh
dGFxYTM1MS9hMzBfNHNpbmVzd2VlcC5wY20KLWRpZmYgLi4vZGF0YXFhMzUwL2E2MF80c2luZXN3
ZWVwLnBjbSAuLi9kYXRhcWEzNTEvYTYwXzRzaW5lc3dlZXAucGNtCi1kaWZmIC4uL2RhdGFxYTM1
MC9hMzBfNXNwZWVjaG11c2ljLnBjbSAuLi9kYXRhcWEzNTEvYTMwXzVzcGVlY2htdXNpYy5wY20K
LWRpZmYgLi4vZGF0YXFhMzUwL2E2MF81c3BlZWNobXVzaWMucGNtIC4uL2RhdGFxYTM1MS9hNjBf
NXNwZWVjaG11c2ljLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTMwXzZ0b25lX2Npc2NvLnBjbSAu
Li9kYXRhcWEzNTEvYTMwXzZ0b25lX2Npc2NvLnBjbQotZGlmZiAuLi9kYXRhcWEzNTAvYTYwXzZ0
b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEvYTYwXzZ0b25lX2Npc2NvLnBjbQotZGlmZiAuLi9k
YXRhcWEzNTAvYTYwXzd0b25lX2Npc2NvLnBjbSAuLi9kYXRhcWEzNTEvYTYwXzd0b25lX2Npc2Nv
LnBjbQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvZGlmZmlTQUNQ
TEMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvZGlmZmlTQUNQTEMudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTM2MjliMmNhNzJhNDkwZTMxYzViNDcyZGQ5
MWIzZDRkMmE4MzY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90ZXN0L1FBL2RpZmZpU0FDUExDLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDIwICswLDAgQEAKLSMhL2Jpbi9iYXNoCi0oc2V0IC1vIGlnbmNyKSAyPi9k
ZXYvbnVsbCAmJiBzZXQgLW8gaWduY3I7ICMgZm9yY2UgYmFzaCB0byBpZ25vcmUgXHIgY2hhcmFj
dGVyCi0KLUxPR0ZJTEU9bG9ncGxjLnR4dAotZWNobyAiU1RBUlQgUExDIFRFU1QiID4gJExPR0ZJ
TEUKLQotT1VURElSMT0uLi9kYXRhcWFwbGNfMAotT1VURElSMj0uLi9kYXRhcWFwbGNfMQotCi1k
aWZmICRPVVRESVIxL291dHBsYzEucGNtICRPVVRESVIyL291dHBsYzEucGNtIAotZGlmZiAkT1VU
RElSMS9vdXRwbGMyLnBjbSAkT1VURElSMi9vdXRwbGMyLnBjbSAKLWRpZmYgJE9VVERJUjEvb3V0
cGxjMy5wY20gJE9VVERJUjIvb3V0cGxjMy5wY20gCi1kaWZmICRPVVRESVIxL291dHBsYzQucGNt
ICRPVVRESVIyL291dHBsYzQucGNtIAotZGlmZiAkT1VURElSMS9vdXRwbGM1LnBjbSAkT1VURElS
Mi9vdXRwbGM1LnBjbSAKLWRpZmYgJE9VVERJUjEvb3V0cGxjNi5wY20gJE9VVERJUjIvb3V0cGxj
Ni5wY20gCi0KLWVjaG8gRE9ORSEKLQotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2Fj
L2ZpeC90ZXN0L1FBL3J1bmlTQUNMb25ndGVzdC50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgv
dGVzdC9RQS9ydW5pU0FDTG9uZ3Rlc3QudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlZWZmYzBjOTU1ZWRkMDdhYzlmMGViMDU0OGNhZTEwMGI2ZTAzOTcxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90
ZXN0L1FBL3J1bmlTQUNMb25ndGVzdC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBA
Ci0jIS9iaW4vYmFzaAotKHNldCAtbyBpZ25jcikgMj4vZGV2L251bGwgJiYgc2V0IC1vIGlnbmNy
OyAjIGZvcmNlIGJhc2ggdG8gaWdub3JlIFxyIGNoYXJhY3RlcgotCi1MT0dGSUxFPWxvZ05vcm1h
bC50eHQKLWVjaG8gIlNUQVJUIElTQUMgVEVTVCIgPiAkTE9HRklMRQotZWNobyA+PiAkTE9HRklM
RQotCi1JU0FDPS4uL1JlbGVhc2Uva2VubnkuZXhlCi1JU0FDRklYRkxPQVQ9Li4vUmVsZWFzZS90
ZXN0Rml4RmxvYXQuZXhlCi0KLUlORklMRVM9JChjYXQgSW5wdXRGaWxlcy50eHQpCi1TVUJTRVQ9
JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi1DSEFOTkVMRklMRVM9JChjYXQgQ2hhbm5lbEZpbGVz
LnR4dCkKLUNIQU5ORUxMSVNUPSgkKGNhdCBDaGFubmVsRmlsZXMudHh0KSkKLUlORElSPS4uL2Rh
dGEvb3JpZwotT1VURElSPS4uL2RhdGFxYQotbWtkaXIgLXAgJE9VVERJUgotCi1UQVJHRVRSQVRF
PSgxMDAwMCAxNTAwMCAyMDAwMCAyNTAwMCAzMDAwMCAzMjAwMCkKLSNlY2hvICR7Q0hBTk5FTEZJ
TEVTWzFdfQotCi1pbmRleDE9MAotaW5kZXgyPTAKLQotZm9yIGZpbGUgaW4gJElORklMRVMgIyBs
b29wIG92ZXIgYWxsIGlucHV0IGZpbGVzCi0gIGRvCi0gIAotICBmb3IgcmF0ZSBpbiAke1RBUkdF
VFJBVEVbKl19Ci0JZG8KLQlsZXQgImluZGV4MT1pbmRleDErMSIKLQkkSVNBQyAtSSAkcmF0ZSAt
RkwgMzAgJElORElSLyIkZmlsZSIgJE9VVERJUi9pMzBfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJ
TEUKLQkkSVNBQyAtSSAkcmF0ZSAtRkwgNjAgJElORElSLyIkZmlsZSIgJE9VVERJUi9pNjBfJGlu
ZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLSAgZG9uZQotICBmb3IgY2hhbm5lbCBpbiAkQ0hBTk5F
TEZJTEVTCi0JZG8KLQlsZXQgImluZGV4Mj1pbmRleDIrMSIKLQkkSVNBQyAkSU5ESVIvJGNoYW5u
ZWwgJElORElSLyIkZmlsZSIgJE9VVERJUi9hJGluZGV4MiIkZmlsZSIgPj4gJExPR0ZJTEUKLSAg
ZG9uZQotCi1kb25lCi0KLWluZGV4MT0wCi0KLWZvciBmaWxlIGluICRTVUJTRVQgIyBsb29wIG92
ZXIgdGhlIHN1YnNldCBvZiBpbnB1dCBmaWxlcwotICBkbwotCWxldCAiaW5kZXgxPWluZGV4MSsx
IgotCSRJU0FDICRJTkRJUi8ke0NIQU5ORUxMSVNUWzBdfSAtRkwgMzAgLUZJWEVEX0ZMICRJTkRJ
Ui8iJGZpbGUiICRPVVRESVIvYTMwXyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxFCi0JJElTQUMg
JElORElSLyR7Q0hBTk5FTExJU1RbMF19IC1GTCA2MCAtRklYRURfRkwgJElORElSLyIkZmlsZSIg
JE9VVERJUi9hNjBfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLWRvbmUKLQotbGV0ICJpbmRl
eDE9aW5kZXgxKzEiCQotICRJU0FDICRJTkRJUi8ke0NIQU5ORUxMSVNUWzBdfSAtSU5JVFJBVEUg
MjUwMDAgLUZMIDMwICRJTkRJUi8iJGZpbGUiICRPVVRESVIvYTYwXyRpbmRleDEiJGZpbGUiID4+
ICRMT0dGSUxFCi0KLSMgUnVuIGZhdWx0IHRlc3QKLQotIy4vcnVuaVNBQ2ZhdWx0LnR4dAotCi1l
Y2hvIERPTkUhCi0KLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9R
QS9ydW5pU0FDTkIudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ05C
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA1NTk1Y2MwNGZjYTYxOTI0Yjli
YTdjYzdjYWVmYjk2ZDAyYTAzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDTkIudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotIyEvYmluL2Jhc2gKLShzZXQgLW8gaWduY3Ip
IDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBiYXNoIHRvIGlnbm9yZSBcciBj
aGFyYWN0ZXIKLQotTE9HRklMRT1sb2dOQi50eHQKLWVjaG8gIlNUQVJUIE5BUlJPV0JBTkQgVEVT
VCIgPiAkTE9HRklMRQotZWNobyA+PiAkTE9HRklMRQotCi1JU0FDPS4uL1JlbGVhc2Uva2Vubnku
ZXhlCi1JU0FDRklYRkxPQVQ9Li4vUmVsZWFzZS90ZXN0Rml4RmxvYXQuZXhlCi0KLUlORklMRVM9
JChjYXQgSW5wdXRGaWxlcy50eHQpCi1TVUJTRVQ9JChjYXQgSW5wdXRGaWxlc0Zldy50eHQpCi1D
SEFOTkVMRklMRVM9JChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkKLUNIQU5ORUxMSVNUPSgkKGNhdCBD
aGFubmVsRmlsZXMudHh0KSkKLUlORElSPS4uL2RhdGEvb3JpZwotT1VURElSPS4uL2RhdGFxYU5C
Ci1ta2RpciAtcCAkT1VURElSCi0KLVRBUkdFVFJBVEU9KDEwMDAwIDE1MDAwIDIwMDAwIDI1MDAw
IDMwMDAwIDMyMDAwKQotI2VjaG8gJHtDSEFOTkVMRklMRVNbMV19Ci0KLWluZGV4MT0wCi1pbmRl
eDI9MAotCi0jIE5hcnJvd2JhbmQgSW50ZXJmYWNlcwotCi1mb3IgZmlsZSBpbiAkU1VCU0VUICMg
bG9vcCBvdmVyIGFsbCBpbnB1dCBmaWxlcwotICBkbwotICBmb3IgcmF0ZSBpbiAke1RBUkdFVFJB
VEVbKl19Ci0JZG8KLQlsZXQgImluZGV4MT1pbmRleDErMSIKLSAJJElTQUMgJHJhdGUgLUZMIDMw
IC1OQiAxICRJTkRJUi8iJGZpbGUiICRPVVRESVIvbmIxMzBfJGluZGV4MSIkZmlsZSIgPj4gJExP
R0ZJTEUKLQkkSVNBQyAkcmF0ZSAtRkwgNjAgLU5CIDEgJElORElSLyIkZmlsZSIgJE9VVERJUi9u
YjE2MF8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQotCSRJU0FDICRyYXRlIC1GTCAzMCAtTkIg
MiAkSU5ESVIvIiRmaWxlIiAkT1VURElSL25iMjMwXyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxF
Ci0JJElTQUMgJHJhdGUgLUZMIDYwIC1OQiAyICRJTkRJUi8iJGZpbGUiICRPVVRESVIvbmIyNjBf
JGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQyAkcmF0ZSAtRkwgMzAgLU5CIDIgLVBM
IDEwICRJTkRJUi8iJGZpbGUiICRPVVRESVIvbmIycGxjMzBfJGluZGV4MSIkZmlsZSIgPj4gJExP
R0ZJTEUKLQkkSVNBQyAkcmF0ZSAtRkwgNjAgLU5CIDIgLVBMIDEwICRJTkRJUi8iJGZpbGUiICRP
VVRESVIvbmIycGxjNjBfJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLSAgZG9uZQotCi1kb25l
Ci0KLWVjaG8gRE9ORSEKLQotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL2ZpeC90
ZXN0L1FBL3J1bmlTQUNQTEMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVu
aVNBQ1BMQy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZWU2ZjdjM2YzMjM4
NjEwNzI4ZTI3NDkyMWY2Mjg3OGE0NThlOTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ1BM
Qy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0jIS9iaW4vYmFzaAotKHNldCAt
byBpZ25jcikgMj4vZGV2L251bGwgJiYgc2V0IC1vIGlnbmNyOyAjIGZvcmNlIGJhc2ggdG8gaWdu
b3JlIFxyIGNoYXJhY3RlcgotCi1MT0dGSUxFPWxvZ3BsYy50eHQKLWVjaG8gIlNUQVJUIFBMQyBU
RVNUIiA+ICRMT0dGSUxFCi0KLUlTQUM9Li4vUmVsZWFzZS9rZW5ueS5leGUKLQotSU5ESVI9Li4v
ZGF0YS9vcmlnCi1PVVRESVI9Li4vZGF0YXFhcGxjXzAKLW1rZGlyIC1wICRPVVRESVIKLQotJElT
QUMgMTIwMDAgLVBMIDE1ICRJTkRJUi9zcGVlY2htdXNpYy5wY20gJE9VVERJUi9vdXRwbGMxLnBj
bSAKLSRJU0FDIDIwMDAwIC1QTCAxNSAkSU5ESVIvc3BlZWNobXVzaWMucGNtICRPVVRESVIvb3V0
cGxjMi5wY20gCi0kSVNBQyAzMjAwMCAtUEwgMTUgJElORElSL3NwZWVjaG11c2ljLnBjbSAkT1VU
RElSL291dHBsYzMucGNtIAotJElTQUMgMTIwMDAgLVBMIDE1ICRJTkRJUi90b25lX2Npc2NvLnBj
bSAkT1VURElSL291dHBsYzQucGNtIAotJElTQUMgMjAwMDAgLVBMIDE1ICRJTkRJUi90b25lX2Np
c2NvLnBjbSAkT1VURElSL291dHBsYzUucGNtIAotJElTQUMgMzIwMDAgLVBMIDE1ICRJTkRJUi90
b25lX2Npc2NvLnBjbSAkT1VURElSL291dHBsYzYucGNtIAotCi1lY2hvIERPTkUhCi0KLQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDUmF0ZS50eHQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9RQS9ydW5pU0FDUmF0ZS50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NDAzZTA5OWQ2NTBmYjc1ZWIzNjgyNzRiYmUxMzlmOWQ0
OTgyZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvY29kZWNzL2lzYWMvZml4L3Rlc3QvUUEvcnVuaVNBQ1JhdGUudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMjMgKzAsMCBAQAotIyEvYmluL2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9udWxs
ICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIKLQot
TE9HRz1sb2dnUmF0ZS50eHQKLU9VVERJUj0uLi9kYXRhcWFSYXRlCi1ta2RpciAtcCAkT1VURElS
Ci0KLS4uL1JlbGVhc2Uva2VubnkuZXhlIDEzMDAwIC1GSVhFRF9GTCAtRkwgMzAgLU1BWCAxMDAg
Li4vZGF0YS9vcmlnL3Nhd3N3ZWVwXzM4MF82MC5wY20gJE9VVERJUi9vdXRfbmFwaV8xLnBjbSA+
ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAuLi9kYXRhL29yaWcvYm90dGxlbmVja3MudHh0
IC1GSVhFRF9GTCAtRkwgMzAgLU1BWFJBVEUgMzIwMDAgLi4vZGF0YS9vcmlnL3Nhd3N3ZWVwXzM4
MF82MC5wY20gJE9VVERJUi9vdXRfbmFwaV8yLnBjbSA+PiAkTE9HRwotLi4vUmVsZWFzZS9rZW5u
eS5leGUgMTMwMDAgLUZJWEVEX0ZMIC1GTCAzMCAtTUFYIDEwMCAuLi9kYXRhL29yaWcvc2F3c3dl
ZXBfMzgwXzYwLnBjbSAkT1VURElSL291dF9uYXBpXzMucGNtID4+ICRMT0dHCi0uLi9SZWxlYXNl
L2tlbm55LmV4ZSAuLi9kYXRhL29yaWcvYm90dGxlbmVja3MudHh0IC1GSVhFRF9GTCAtRkwgMzAg
LU1BWFJBVEUgMzIwMDAgLi4vZGF0YS9vcmlnL3Nhd3N3ZWVwXzM4MF82MC5wY20gJE9VVERJUi9v
dXRfbmFwaV80LnBjbSA+PiAkTE9HRwotLi4vUmVsZWFzZS9rZW5ueS5leGUgMTMwMDAgLUZJWEVE
X0ZMIC1GTCA2MCAtTUFYIDEwMCAuLi9kYXRhL29yaWcvc2F3c3dlZXBfMzgwXzYwLnBjbSAkT1VU
RElSL291dF9uYXBpXzUucGNtID4+ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAuLi9kYXRh
L29yaWcvYm90dGxlbmVja3MudHh0IC1GSVhFRF9GTCAtRkwgNjAgLU1BWFJBVEUgMzIwMDAgLi4v
ZGF0YS9vcmlnL3Nhd3N3ZWVwXzM4MF82MC5wY20gJE9VVERJUi9vdXRfbmFwaV82LnBjbSA+PiAk
TE9HRwotLi4vUmVsZWFzZS9rZW5ueS5leGUgMTMwMDAgLUlOSVRfUkFURSAzMjAwMCAtRklYRURf
RkwgLUZMIDYwIC1NQVggMTAwIC4uL2RhdGEvb3JpZy9zYXdzd2VlcF8zODBfNjAucGNtICRPVVRE
SVIvb3V0X25hcGlfNy5wY20gPj4gJExPR0cKLQotLi4vUmVsZWFzZS9rZW5ueS5leGUgMTMwMDAg
LUZJWEVEX0ZMIC1GTCAzMCAtTUFYIDEwMCAuLi9kYXRhL29yaWcvbG9uZ3NwZWVjaC5wY20gJE9V
VERJUi9vdXRfbmFwaV8xMS5wY20gPj4gJExPR0cKLS4uL1JlbGVhc2Uva2VubnkuZXhlIC4uL2Rh
dGEvb3JpZy9ib3R0bGVuZWNrcy50eHQgLUZJWEVEX0ZMIC1GTCAzMCAtTUFYUkFURSAzMjAwMCAu
Li9kYXRhL29yaWcvbG9uZ3NwZWVjaC5wY20gJE9VVERJUi9vdXRfbmFwaV8xMi5wY20gPj4gJExP
R0cKLS4uL1JlbGVhc2Uva2VubnkuZXhlIDEzMDAwIC1GSVhFRF9GTCAtRkwgMzAgLU1BWCAxMDAg
Li4vZGF0YS9vcmlnL2xvbmdzcGVlY2gucGNtICRPVVRESVIvb3V0X25hcGlfMTMucGNtID4+ICRM
T0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAuLi9kYXRhL29yaWcvYm90dGxlbmVja3MudHh0IC1G
SVhFRF9GTCAtRkwgMzAgLU1BWFJBVEUgMzIwMDAgLi4vZGF0YS9vcmlnL2xvbmdzcGVlY2gucGNt
ICRPVVRESVIvb3V0X25hcGlfMTQucGNtID4+ICRMT0dHCi0uLi9SZWxlYXNlL2tlbm55LmV4ZSAx
MzAwMCAtRklYRURfRkwgLUZMIDYwIC1NQVggMTAwIC4uL2RhdGEvb3JpZy9sb25nc3BlZWNoLnBj
bSAkT1VURElSL291dF9uYXBpXzE1LnBjbSA+PiAkTE9HRwotLi4vUmVsZWFzZS9rZW5ueS5leGUg
Li4vZGF0YS9vcmlnL2JvdHRsZW5lY2tzLnR4dCAtRklYRURfRkwgLUZMIDYwIC1NQVhSQVRFIDMy
MDAwIC4uL2RhdGEvb3JpZy9sb25nc3BlZWNoLnBjbSAkT1VURElSL291dF9uYXBpXzE2LnBjbSA+
PiAkTE9HRwotLi4vUmVsZWFzZS9rZW5ueS5leGUgMTMwMDAgLUlOSVRfUkFURSAzMjAwMCAtRklY
RURfRkwgLUZMIDYwIC1NQVggMTAwIC4uL2RhdGEvb3JpZy9sb25nc3BlZWNoLnBjbSAkT1VURElS
L291dF9uYXBpXzE3LnBjbSA+PiAkTE9HRwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNh
Yy9maXgvdGVzdC9RQS9ydW5pU0FDZmF1bHQudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rl
c3QvUUEvcnVuaVNBQ2ZhdWx0LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRk
OTQ3OGZkNDliZmY1MTAzY2Q0MmFjNDU5ZWExYzhiYTRlODczOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9R
QS9ydW5pU0FDZmF1bHQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyEvYmlu
L2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3Jj
ZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIKLQotTE9HRklMRT1sb2dmYXVsdC50eHQKLWVj
aG8gIlNUQVJUIEZBVUxUIFRFU1QiID4gJExPR0ZJTEUKLQotSVNBQz0uLi9SZWxlYXNlL2tlbm55
LmV4ZQotSVNBQ0ZJWEZMT0FUPS4uL1JlbGVhc2UvdGVzdEZpeEZsb2F0LmV4ZQotCi1JTkZJTEVT
PSQoY2F0IElucHV0RmlsZXMudHh0KQotU1VCU0VUPSQoY2F0IElucHV0RmlsZXNGZXcudHh0KQot
Q0hBTk5FTEZJTEVTPSQoY2F0IENoYW5uZWxGaWxlcy50eHQpCi1DSEFOTkVMTElTVD0oJChjYXQg
Q2hhbm5lbEZpbGVzLnR4dCkpCi1JTkRJUj0uLi9kYXRhL29yaWcKLU9VVERJUj0uLi9kYXRhcWFm
dAotbWtkaXIgLXAgJE9VVERJUgotCi1UQVJHRVRSQVRFPSgxMDAwMCAxNTAwMCAyMDAwMCAyNTAw
MCAzMDAwMCAzMjAwMCkKLUZBVUxUVEVTVD0oMSAyIDMgNCA1IDYgNyA5KQotCi1pbmRleDE9MAot
Ci1maWxlPXdiX2NvbnRzcGVlY2gucGNtCi0KLSMgRmF1bHQgdGVzdAotZm9yIHRlc3RuciBpbiAk
e0ZBVUxUVEVTVFsqXX0KLSAgIGRvCi0JJElTQUMgMzIwMDAgLUYgJHRlc3RuciAkSU5ESVIvIiRm
aWxlIiAkT1VURElSL2Z0JHRlc3RuciIkZmlsZSIgPj4gJExPR0ZJTEUKLWRvbmUKLQotIyBGYXVs
dCB0ZXN0IG51bWJlciAxMCwgZXJyb3IgaW4gYml0c3RyZWFtCi0gJElTQUMgMzIwMDAgLUYgMTAg
JElORElSLyIkZmlsZSIgJE9VVERJUi9mdDEwXyIkZmlsZSIgPj4gJExPR0ZJTEUKLSAkSVNBQyAz
MjAwMCAtRiAxMCAtUEwgMTAgJElORElSLyIkZmlsZSIgJE9VVERJUi9mdDEwcGxjXyIkZmlsZSIg
Pj4gJExPR0ZJTEUKLSAkSVNBQyAzMjAwMCAtRiAxMCAtTkIgMSAkSU5ESVIvIiRmaWxlIiAkT1VU
RElSL2Z0MTBuYjFfIiRmaWxlIiA+PiAkTE9HRklMRQotICRJU0FDIDMyMDAwIC1GIDEwIC1OQiAy
IC1QTCAxMCAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2Z0MTBuYjJfIiRmaWxlIiA+PiAkTE9HRklM
RQotCi1lY2hvIERPTkUhCi0KLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgv
dGVzdC9RQS9ydW5pU0FDZml4ZmxvYXQudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvZml4L3Rlc3Qv
UUEvcnVuaVNBQ2ZpeGZsb2F0LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzll
MDJkZjJlOWYzMzY2MDI1NWU2MmU0ZjZhNjJjMGFlZTExNTYxNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9maXgvdGVzdC9R
QS9ydW5pU0FDZml4ZmxvYXQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotIyEv
YmluL2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBm
b3JjZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXIKLQotTE9HRklMRT1sb2dmeGZsLnR4dAot
ZWNobyAiU1RBUlQgRklYLUZMT0FUIFRFU1QiID4gJExPR0ZJTEUKLQotCi1JU0FDRklYRkxPQVQ9
Li4vdGVzdEZpeEZsb2F0LmV4ZQotCi1JTkZJTEVTPSQoY2F0IElucHV0RmlsZXMudHh0KQotU1VC
U0VUPSQoY2F0IElucHV0RmlsZXNGZXcudHh0KQotQ0hBTk5FTEZJTEVTPSQoY2F0IENoYW5uZWxG
aWxlcy50eHQpCi1DSEFOTkVMTElTVD0oJChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkpCi1JTkRJUj0u
Li9kYXRhL29yaWcKLU9VVERJUj0uLi9kYXRhcWFmeGZsCi1ta2RpciAtcCAkT1VURElSCi0KLWlu
ZGV4MT0wCi0KLWZvciBmaWxlIGluICRJTkZJTEVTICMgbG9vcCBvdmVyIGFsbCBpbnB1dCBmaWxl
cwotICBkbwotICAKLSAgZm9yIGNoYW5uZWwgaW4gJENIQU5ORUxGSUxFUwotCWRvCi0JbGV0ICJp
bmRleDE9aW5kZXgxKzEiCi0KLQkkSVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5lbCAtbSAxIC1Q
TEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9mbGZ4JGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUK
LQkkSVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5lbCAtbSAyIC1QTEMgJElORElSLyIkZmlsZSIg
JE9VVERJUi9meGZsJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLSAgZG9uZQotCi1kb25lCi0K
LWluZGV4MT0wCi0KLWZvciBmaWxlIGluICRTVUJTRVQgIyBsb29wIG92ZXIgdGhlIHN1YnNldCBv
ZiBpbnB1dCBmaWxlcwotICBkbwotCWxldCAiaW5kZXgxPWluZGV4MSsxIgotCSRJU0FDRklYRkxP
QVQgJElORElSLyRjaGFubmVsIC1tIDEgLU5CIDEgJElORElSLyIkZmlsZSIgJE9VVERJUi9mbGZ4
bmIxXyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxFCi0JJElTQUNGSVhGTE9BVCAkSU5ESVIvJGNo
YW5uZWwgLW0gMiAtTkIgMSAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2Z4ZmxuYjFfJGluZGV4MSIk
ZmlsZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5lbCAtbSAxIC1O
QiAyIC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9mbGZ4bmIyXyRpbmRleDEiJGZpbGUiID4+
ICRMT0dGSUxFCi0JJElTQUNGSVhGTE9BVCAkSU5ESVIvJGNoYW5uZWwgLW0gMiAtTkIgMiAtUExD
ICRJTkRJUi8iJGZpbGUiICRPVVRESVIvZnhmbG5iMl8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklM
RQotZG9uZQotCi1lY2hvIERPTkUhCi0KLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNh
Yy9tYWluL3NvdXJjZS9lbnRyb3B5X2NvZGluZy5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lzYWMvbWFpbi9z
b3VyY2UvZW50cm9weV9jb2RpbmcuYwppbmRleCAyODc2N2FmYzYzM2MwOWVlYzc1YWQwOGUyY2Jm
NzE2OThiNDExNjQwLi42NjkyYTUxOWNhOTdjMzAyZDdhZjVhMGRlYjNiZDU1ODY5MjhlY2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9tYWluL3NvdXJjZS9lbnRyb3B5X2NvZGluZy5j
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vc291cmNlL2VudHJvcHlfY29kaW5nLmMKQEAg
LTk2LDcgKzk2LDcgQEAgc3RhdGljIHZvaWQgRmluZEludkFyU3BlYyhjb25zdCBpbnQxNl90KiBB
UkNvZWZRMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDMyX3QgZ2FpblEx
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCogQ3VydmVRMTYpIHsKICAgaW50
MzJfdCBDb3JyUTExW0FSX09SREVSICsgMV07Ci0gIGludDMyX3Qgc3VtLCB0bXBHYWluOworICBp
bnQ2NF90IHN1bSwgdG1wR2FpbjsKICAgaW50MzJfdCBkaWZmUTE2W0ZSQU1FU0FNUExFUyAvIDhd
OwogICBjb25zdCBpbnQxNl90KiBDU19wdHJROTsKICAgaW50IGssIG47CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvaXNhYy9tYWluL3Rlc3QvUUEvcnVuaVNBQ0xvbmd0ZXN0LnR4dCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9ydW5pU0FDTG9uZ3Rlc3QudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZjA1MjI0YTBlY2MyNTZhZTExNmE3ZThlOTc0NGU3YTAwNTBk
YTZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9ydW5pU0FDTG9uZ3Rlc3QudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNDMzICswLDAgQEAKLSMhL2Jpbi9iYXNoCi0oc2V0IC1vIGlnbmNyKSAyPi9kZXYv
bnVsbCAmJiBzZXQgLW8gaWduY3I7ICMgZm9yY2UgYmFzaCB0byBpZ25vcmUgXHIgY2hhcmFjdGVy
Ci0KLQotCi1pZiAgWyAiJDEiID0gIng2NCIgXSB8fCBbICIkMiIgPSAieDY0IiBdIHx8IFsgIiQj
IiAtZXEgMCBdCi0gICAgdGhlbgotICAgIFBMQVRGT1JNPV9YNjQKLSAgICBJU0FDPS4uL3g2NC9S
ZWxlYXNlL1JlbGVhc2VUZXN0LUFQSV8yMDA1LmV4ZQotZWxpZiBbICIkMSIgPSAiTElOVVgiIF0g
fHwgWyAiJDIiID0gIkxJTlVYIiBdCi0gICAgdGhlbgotICAgIFBMQVRGT1JNPV9saW51eAotICAg
IElTQUM9Li4vUmVsZWFzZVRlc3QtQVBJL2lzYWNzd3Rlc3QKLWVsc2UKLSAgICBQTEFURk9STT1f
MjAwNQotICAgIElTQUM9Li4vd2luMzIvUmVsZWFzZS9SZWxlYXNlVGVzdC1BUElfMjAwNS5leGUK
LWZpCi0KLWlmICBbICIkIyIgLWVxIDAgXSB8fCBbICIkMSIgPSAiYWxsIiBdIHx8IFsgIiQxIiA9
ICJ3YiIgXQotICAgIHRoZW4KLSAgICBMT0dGSUxFPWxvZ05vcm1hbCIkUExBVEZPUk0iLnR4dAot
ICAgIGVjaG8gIlNUQVJUIElTQUMgV0IgVEVTVCIgPiAkTE9HRklMRQotICAgIGVjaG8gPj4gJExP
R0ZJTEUKLQotICAgIElORklMRVM9JChjYXQgSW5wdXRGaWxlcy50eHQpCi0gICAgU1VCU0VUPSQo
Y2F0IElucHV0RmlsZXNGZXcudHh0KQotICAgIENIQU5ORUxGSUxFUz0kKGNhdCBDaGFubmVsRmls
ZXMudHh0KQotICAgIENIQU5ORUxMSVNUPSgkKGNhdCBDaGFubmVsRmlsZXMudHh0KSkKLSAgICBJ
TkRJUj0uLi9kYXRhL29yaWcKLSAgICBPVVRESVI9Li4vZGF0YXFhIiRQTEFURk9STSIKLSAgICBt
a2RpciAtcCAkT1VURElSCi0gICAgcm0gLWYgJE9VVERJUi8qCi0gICAgCi0gICAgaWR4PTAKLSAg
ICBSQVRFPTEwMDAwCi0gICAgRlJBTUVTSVpFPTMwCi0gICAgCi0KLSAgICBmb3IgZmlsZSBpbiAk
SU5GSUxFUyAjIGxvb3Agb3ZlciBhbGwgaW5wdXQgZmlsZXMKLSAgICAgIGRvCi0gICAgICAKLSAg
ICAgIGVjaG8gIklucHV0IGZpbGU6ICIgJGZpbGUKLSAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotICAgICAgZWNobyAiSW5zdGFudGFuZW91cyB3aXRoIFJB
VEUgIiAkUkFURSAiLCBhbmQgRnJhbWUtc2l6ZSAiICRGUkFNRVNJWkUKLSAgICAgICRJU0FDIC1J
IC1CICRSQVRFIC1GTCAkRlJBTUVTSVpFIC1GUyAxNiAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2lf
IiRGUkFNRVNJWkUiXyIkUkFURSJfIiRmaWxlIiA+PiAkTE9HRklMRQotICAgICAgZWNobwotICAg
ICAgCi0gICAgICBuYW1lPSIke0NIQU5ORUxMSVNUWyRpZHhdfSIKLSAgICAgIGVjaG8gIkFkYXB0
aXZlIHdpdGggY2hhbm5lbCBmaWxlOiAiICRuYW1lIAotICAgICAgCi0gICAgICAkSVNBQyAtQiAk
SU5ESVIvJHtDSEFOTkVMTElTVFskaWR4XX0gLUZTIDE2ICRJTkRJUi8iJGZpbGUiICRPVVRESVIv
YV8ke25hbWUlLip9XyIkZmlsZSIgPj4gJExPR0ZJTEUKLSAgICAgIAotICAgICAgZWNobwotICAg
ICAgZWNobwotICAgICAgCi0jICAgICBhbHRlcm5hdGUgYmV0d2VlbiAzMCAmIDYwIG1zLgotICAg
ICAgaWYgWyAkRlJBTUVTSVpFIC1lcSAzMCBdCi0JICB0aGVuCi0JICBGUkFNRVNJWkU9NjAKLSAg
ICAgIGVsc2UKLQkgIEZSQU1FU0laRT0zMAotICAgICAgZmkKLSAgICAgIAotIyAgICAgcmF0ZSBi
ZXR3ZWVuIDEwMDAwIHRvIDMyMDAwIGJpdHMvc2VjCi0gICAgICBpZiBbICRSQVRFIC1sZSAzMDAw
MCBdCi0JICB0aGVuCi0JICBsZXQgIlJBVEU9UkFURSsyMDAwIgotICAgICAgZWxzZQotCSAgbGV0
ICJSQVRFPTEwMDAwIgotICAgICAgZmkKLSAgICAgIAotIyAgICAgdGhlcmUgYXJlIG9ubHkgdGhy
ZWUgY2hhbm5lbCBmaWxlCi0gICAgICBpZiBbICRpZHggLWdlIDIgXTsgdGhlbgotCSAgaWR4PTAK
LSAgICAgIGVsc2UKLQkgIGxldCAiaWR4PWlkeCsxIgotICAgICAgZmkKLSAgICAgIAotICAgIGRv
bmUKLQotICAgIGlkeD0wCi0gICAgCi0jICAgbG9vcCBvdmVyIHRoZSBzdWJzZXQgb2YgaW5wdXQg
ZmlsZXMKLSAgICBmb3IgZmlsZSBpbiAkU1VCU0VUIAotICAgICAgZG8KLSAgICAgIAotICAgICAg
aWYgWyAkaWR4IC1lcSAwIF07IHRoZW4KLQkgICRJU0FDIC1CICRJTkRJUi8ke0NIQU5ORUxMSVNU
WzBdfSAtRkwgMzAgLUZJWEVEX0ZMIC1GUyAxNiAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2EzMF8i
JGZpbGUiID4+ICRMT0dGSUxFCi0JICBpZHg9MQotICAgICAgZWxzZQotCSAgJElTQUMgLUIgJElO
RElSLyR7Q0hBTk5FTExJU1RbMF19IC1GTCA2MCAtRklYRURfRkwgLUZTIDE2ICRJTkRJUi8iJGZp
bGUiICRPVVRESVIvYTYwXyIkZmlsZSIgPj4gJExPR0ZJTEUKLQkgIGlkeD0wCi0gICAgICBmaQot
ICAgIGRvbmUKLQotICAgICRJU0FDIC1CICRJTkRJUi8ke0NIQU5ORUxMSVNUWzBdfSAtSU5JVFJB
VEUgMjUwMDAgLUZMIDMwIC1GUyAxNiAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2E2MF9Jbml0MjVr
YnBzXyIkZmlsZSIgPj4gJExPR0ZJTEUKLQotICAgIGVjaG8KLSAgICBlY2hvIFdJREVCQU5EIERP
TkUhCi0gICAgZWNobwotICAgIGVjaG8KLWZpCi0KLWlmICBbICIkIyIgLWVxIDAgXSB8fCBbICIk
MSIgPSAiYWxsIiBdIHx8IFsgIiQxIiA9ICJzd2IiIF0KLSAgICB0aGVuCi0KLSAgICBMT0dGSUxF
PWxvZ05vcm1hbF9TV0IiJFBMQVRGT1JNIi50eHQKLSAgICBlY2hvICJTVEFSVCBJU0FDIFNXQiBU
RVNUIiA+ICRMT0dGSUxFCi0gICAgZWNobyA+PiAkTE9HRklMRQotCi0gICAgZWNobyBTVEFSVElO
RyBUTyBURVNUIFNVUEVSLVdJREVCQU5ECi0gICAgCi0gICAgSU5GSUxFUz0kKGNhdCBJbnB1dEZp
bGVzU1dCLnR4dCkKLSAgICBJTkRJUj0uLi9kYXRhL29yaWdzd2IKLSAgICBPVVRESVI9Li4vZGF0
YXFhc3diIiRQTEFURk9STSIKLSAgICBta2RpciAtcCAkT1VURElSCi0gICAgcm0gLWYgJE9VVERJ
Ui8qCi0gICAgCi0gICAgZm9yIGZpbGUgaW4gJElORklMRVMKLSAgICAgIGRvCi0gICAgICBlY2hv
Ci0gICAgICBlY2hvICJJbnB1dCBmaWxlOiAiICRmaWxlCi0gICAgICBlY2hvICItLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSAgICAgIGZvciBSQVRFIGluIDEyMDAwIDIwMDAwIDMy
MDAwIDM4MDAwIDQ1MDAwIDUwMDAwIDU2MDAwICAKLQlkbwotCQotCWVjaG8gIlJhdGUgIiAkUkFU
RQotCSRJU0FDIC1JIC1CICRSQVRFIC1GTCAzMCAtRlMgMzIgJElORElSLyIkZmlsZSIgJE9VVERJ
Ui9zd2JfIiRSQVRFIl8iJGZpbGUiID4+ICRMT0dGSUxFCi0JZWNobwotCQotICAgICAgZG9uZQot
ICAKLSAgICBkb25lCi1maQotCi1pZiAgWyAiJCMiIC1lcSAwIF0gfHwgWyAiJDEiID0gImFsbCIg
XSB8fCBbICIkMSIgPSAiQVBJIiBdCi0gICAgdGhlbgotCi0gICAgTE9HRklMRV9BUEk9bG9nTm9y
bWFsX0FQSSIkUExBVEZPUk0iLnR4dAotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiU1RB
UlQgSVNBQyBBUEkgVEVTVCIgPiAkTE9HRklMRV9BUEkKLSAgICBlY2hvID4+ICRMT0dGSUxFX0FQ
SQotICAgIGlkeD0xCi0gICAgZWNobyAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Qg
RW5mb3JjZW1lbnQgb2YgZnJhbWUtc2l6ZSIKLSAgICBlY2hvICI9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09IgotICAgIG1rZGlyIC1wIC4uL0ZyYW1lU2l6ZUxpbSIkUExBVEZPUk0iCi0g
ICAgcm0gLWYgLi4vRnJhbWVTaXplTGltIiRQTEFURk9STSIvKgotICAgIGVjaG8KLSAgICBlY2hv
ICItLSBObyBlbmZvcmNlbWVudDsgQk4gMTAwMDAiCi0gICAgZWNobwotICAgICRJU0FDIC1CIDEw
MDAwIC1GUyAxNiAuLi9kYXRhL29yaWcvc3BlZWNoX2FuZF9taXNjX1dCLnBjbSBcCi0JLi4vRnJh
bWVTaXplTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQot
ICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gTm93
IEVuZm9yY2UgMzAgbXMgZnJhbWUgc2l6ZSB3aXRoIHRoZSBzYW1lIGJvdHRsZW5lY2siCi0gICAg
ZWNobyAiVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgNjAgbXMgZnJhbWUiCi0gICAgZWNobwotICAg
ICRJU0FDIC1CIDEwMDAwIC1GTCAzMCAtRklYRURfRkwgLUZTIDE2IC4uL2RhdGEvb3JpZy9zcGVl
Y2hfYW5kX21pc2NfV0IucGNtIFwKLQkuLi9GcmFtZVNpemVMaW0iJFBMQVRGT1JNIi9BUElUZXN0
XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNo
bwotICAgIGVjaG8KLSAgICBlY2hvICItLSBObyBlbmZvcmNlbWVudDsgQk4gMzIwMDAiCi0gICAg
ZWNobwotICAgICRJU0FDIC1CIDMyMDAwIC1GUyAxNiAuLi9kYXRhL29yaWcvc3BlZWNoX2FuZF9t
aXNjX1dCLnBjbSBcCi0JLi4vRnJhbWVTaXplTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIu
cGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBl
Y2hvCi0gICAgZWNobyAiLS0gTm93IEVuZm9yY2UgNjAgbXMgZnJhbWUgc2l6ZSB3aXRoIHRoZSBz
YW1lIGJvdHRsZW5lY2siCi0gICAgZWNobyAiVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgMzAgbXMg
ZnJhbWUiCi0gICAgZWNobyAKLSAgICAkSVNBQyAtQiAzMjAwMCAtRkwgNjAgLUZJWEVEX0ZMIC1G
UyAxNiAuLi9kYXRhL29yaWcvc3BlZWNoX2FuZF9taXNjX1dCLnBjbSBcCi0JLi4vRnJhbWVTaXpl
TGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxl
dCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8KLSAg
ICBlY2hvCi0KLSAgICBlY2hvICIgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0IExpbWl0
aW5nIG9mIFBheWxvYWQgU2l6ZSBhbmQgUmF0ZSIKLSAgICBlY2hvICI9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09IgotICAgIG1rZGlyIC1wIC4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIgot
ICAgIHJtIC1mIC4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi8qCi0gICAgZWNobwotICAgIGVjaG8K
LSAgICBlY2hvICItLSBObyBMaW1pdCwgZnJhbWUtc2l6ZSA2MCBtcywgV0lERUJBTkQiCi0gICAg
ZWNobyAKLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgNjAgLUZTIDE2ICAgICAgICAgICAgICAg
IC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQ
TEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4
PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gUGF5bG9hZC1zaXplIGxp
bWl0IG9mIDI1MCwgZnJhbWUtc2l6ZSA2MCBtcywgV0lERUJBTkQiCi0gICAgZWNobyAKLSAgICAk
SVNBQyAtSSAtQiAzMjAwMCAtRkwgNjAgLUZTIDE2IC1NQVggMjUwICAgICAgIC4uL2RhdGEvb3Jp
Zy9zcGVlY2hfYW5kX21pc2NfV0IucGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJ
VGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAg
IGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gUmF0ZSBsaW1pdCBvZiAzMyBrYnBzIGZvciA2
MCBtcyBmcmFtZS1zaXplIgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgNjAg
LUZTIDE2IC1NQVhSQVRFIDMzMDAwIC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNt
IFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dG
SUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8gCi0gICAgZWNobyAiX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iCi0gICAg
ZWNobwotICAgIGVjaG8KLQotICAgIGVjaG8gIi0tIE5vIExpbWl0LCBmcmFtZS1zaXplIDMwIG1z
LCBXSURFQkFORCIKLSAgICBlY2hvIAotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1GTCAzMCAtRlMg
MTYgICAgICAgICAgICAgICAgLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5wY20gXAot
CS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVf
QVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8gICAgCi0gICAgZWNo
byAiLS0gUGF5bG9hZC1zaXplIGxpbWl0IG9mIDEzMCwgZnJhbWUtc2l6ZSAzMCBtcywgV0lERUJB
TkQiCi0gICAgZWNobyAKLSAgICAkSVNBQyAtSSAtQiAzMjAwMCAtRkwgMzAgLUZTIDE2IC1NQVgg
MTMwICAgICAgIC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNtIFwKLQkuLi9QYXls
b2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAg
IGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gUmF0ZSBs
aW1pdCBvZiAzMyBrYnBzIGZvciAzMCBtcyBmcmFtZS1zaXplLCB3aWRlYmFuZCIKLSAgICBlY2hv
Ci0gICAgJElTQUMgLUkgLUIgMzIwMDAgLUZMIDMwIC1GUyAxNiAtTUFYUkFURSAzMzAwMCAuLi9k
YXRhL29yaWcvc3BlZWNoX2FuZF9taXNjX1dCLnBjbSBcCi0JLi4vUGF5bG9hZExpbSIkUExBVEZP
Uk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgr
MSIKLSAgICBlY2hvCi0gICAgZWNobyAiX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18iCi0gICAgZWNobwotICAgIGVjaG8KLQotICAgIGVjaG8g
Ii0tIE5vIGxpbWl0IGZvciAzMiBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQiCi0gICAgZWNo
bwotICAgICRJU0FDIC1JIC1CIDMyMDAwIC1GTCAzMCAtRlMgMzIgICAgICAgICAgLi4vZGF0YS9v
cmlnc3diL2pzdGVzdF8zMi5wY20gXAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0
XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNo
bwotICAgIGVjaG8KLSAgICBlY2hvICItLSBQYXlsb2FkIGxpbWl0IG9mIDEzMCBieXRlcyBmb3Ig
MzIga2JwcywgMzAgbXMsIFNVUEVSLVdJREVCQU5EIgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAt
QiAzMjAwMCAtRkwgMzAgLUZTIDMyIC1NQVggMTMwIC4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIu
cGNtIFwKLQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRM
T0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvICJfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIKLSAg
ICBlY2hvCi0gICAgZWNobwotCi0gICAgZWNobyAiLS0gTm8gbGltaXQsIFJhdGUgNDUga2Jwcywg
MzAgbXMsIFNVUEVSLVdJREVCQU5ELCAxMiBrSHoiCi0gICAgZWNobwotICAgICRJU0FDIC1JIC1C
IDQ1MDAwIC1GTCAzMCAtRlMgMzIgICAgICAgICAgICAgICAuLi9kYXRhL29yaWdzd2IvanN0ZXN0
XzMyLnBjbSBcCi0JLi4vUGF5bG9hZExpbSIkUExBVEZPUk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+
PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwot
ICAgIGVjaG8gIi0tIFJhdGUgbGltaXQgb2YgNDYga2JwcyBmb3IgNDIga2JwcywgMzAgbXMsIFNV
UEVSLVdJREVCQU5ELCAxMiBrSHoiCi0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDQ1MDAwIC1G
TCAzMCAtRlMgMzIgLU1BWFJBVEUgNDYwMDAgLi4vZGF0YS9vcmlnc3diL2pzdGVzdF8zMi5wY20g
XAotCS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJ
TEVfQVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hv
ICItLSBQYXlsb2FkIGxpbWl0IG9mIDE3MCBieXRlcyBmb3IgNDUga2JwcywgMzAgbXMsIFNVUEVS
LVdJREVCQU5ELCAxMiBrSHoiCi0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDQ1MDAwIC1GTCAz
MCAtRlMgMzIgLU1BWCAxNzAgICAgICAgLi4vZGF0YS9vcmlnc3diL2pzdGVzdF8zMi5wY20gXAot
CS4uL1BheWxvYWRMaW0iJFBMQVRGT1JNIi9BUElUZXN0XyIkaWR4Ii5wY20gPj4gJExPR0ZJTEVf
QVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8gIl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIgotICAgIGVjaG8K
LSAgICBlY2hvCi0gIAotICAgIGVjaG8gIi0tIE5vIGxpbWl0IGZvciA1NiBrYnBzLCAzMCBtcywg
U1VQRVItV0lERUJBTkQsIDE2IGtIeiIKLSAgICBlY2hvCi0gICAgJElTQUMgLUkgLUIgNTYwMDAg
LUZMIDMwIC1GUyAzMiAgICAgICAgICAgICAgICAuLi9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBj
bSBcCi0JLi4vUGF5bG9hZExpbSIkUExBVEZPUk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9H
RklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIGVj
aG8gIi0tIFBheWxvYWQgbGltaXQgb2YgMjAwIGJ5dGVzIGZvciA1NiBrYnBzIDMwIG1zLCBTVVBF
Ui1XSURFQkFORCwgMTYga0h6IgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiA1NjAwMCAtRkwg
MzAgLUZTIDMyIC1NQVggMjAwICAgICAgIC4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIFwK
LQkuLi9QYXlsb2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxF
X0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAi
LS0gUmF0ZSBsaW1pdCBvZiA1NyBrYnBzIGZvciA1NiBrYnBzIDMwIG1zLCBTVVBFUi1XSURFQkFO
RCwgMTYga0h6IgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiA1NjAwMCAtRkwgMzAgLUZTIDMy
IC1NQVhSQVRFIDU3MDAwIC4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIFwKLQkuLi9QYXls
b2FkTGltIiRQTEFURk9STSIvQVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAg
IGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvICJfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIKLSAgICBlY2hvCi0gICAgZWNo
bwotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobwotICAgIAotICAgIGVjaG8gIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgVHJhbnMtQ29kaW5nIgotICAgIGVjaG8g
Ij09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCi0gICAgbWtkaXIgLXAgLi4vVHJhbnNj
b2RpbmciJFBMQVRGT1JNIgotICAgIHJtIC1mIC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvKgot
ICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gMjAga2JwcywgMzAgbXMsIFdJREVCQU5E
IgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiAyMDAwMCAtRkwgMzAgLUZTIDE2ICAgICAgICAg
IC4uL2RhdGEvb3JpZy9zcGVlY2hfYW5kX21pc2NfV0IucGNtIFwKLQkuLi9UcmFuc2NvZGluZyIk
UExBVEZPUk0iL0FQSVRlc3RfcmVmVHJhbnMyMFdCLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBs
ZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIAotICAgIGVjaG8gIi0tIDMy
IGticHMgdHJhbnMtY29kaW5nIHRvIDIwIGticHMsIDMwIG1zLCBXSURFQkFORCIKLSAgICBlY2hv
Ci0gICAgJElTQUMgLUkgLUIgMzIwMDAgLUZMIDMwIC1GUyAxNiAgLVQgMjAwMDAgIC4uL1RyYW5z
Y29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF8zMlQyMC5wY20gXAotCS4uL2RhdGEvb3JpZy9zcGVl
Y2hfYW5kX21pc2NfV0IucGNtIC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF8iJGlk
eCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAg
ICBlY2hvICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXyIKLQotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgZWNobyAiLS0gMzgga2JwcywgMzAg
bXMsIFNVUEVSLVdJREVCQU5EIgotICAgIGVjaG8KLSAgICAkSVNBQyAtSSAtQiAzODAwMCAtRkwg
MzAgLUZTIDMyICAgICAgICAgIC4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIFwKLQkuLi9U
cmFuc2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3RfcmVmVHJhbnMzOC5wY20gPj4gJExPR0ZJTEVf
QVBJCi0gICAgbGV0ICJpZHg9aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLSAgICAKLSAgICBl
Y2hvICItLSA0NSBrYnBzIHRyYW5zLWNvZGluZyB0byAzOCBrYnBzLCAzMCBtcywgU1VQRVItV0lE
RUJBTkQiCi0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDQ1MDAwIC1GTCAzMCAtRlMgMzIgIC1U
IDM4MDAwICAuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3RfNDVUMzgucGNtIFwKLQku
Li9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSAuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQ
SVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAK
LSAgICBlY2hvCi0gICAgZWNobwotICAgIGVjaG8gIi0tIDIwIGticHMsIDMwIG1zLCBTVVBFUi1X
SURFQkFORCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUkgLUIgMjAwMDAgLUZMIDMwIC1GUyAzMiAg
ICAgICAgICAuLi9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSBcCi0JLi4vVHJhbnNjb2Rpbmci
JFBMQVRGT1JNIi9BUElUZXN0X3JlZlRyYW5zMjBTV0IucGNtID4+ICRMT0dGSUxFX0FQSQotICAg
IGxldCAiaWR4PWlkeCsxIgotCi0gICAgZWNobwotICAgIGVjaG8KLSAgICAKLSAgICBlY2hvICIt
LSA0NSBrYnBzIHRyYW5zLWNvZGluZyB0byAyMCBrYnBzLCAzMCBtcywgU1VQRVItV0lERUJBTkQi
Ci0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDQ1MDAwIC1GTCAzMCAtRlMgMzIgIC1UIDIwMDAw
ICAuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3RfNDVUMjAucGNtIFwKLQkuLi9kYXRh
L29yaWdzd2IvanN0ZXN0XzMyLnBjbSAuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3Rf
IiRpZHgiLnBjbSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hv
Ci0gICAgZWNobyAiX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18iCi0gICAgZWNobwotICAgIGVjaG8KLSAgICBlY2hvICItLSA1MCBrYnBzLCAz
MCBtcywgU1VQRVItV0lERUJBTkQiCi0gICAgZWNobwotICAgICRJU0FDIC1JIC1CIDUwMDAwIC1G
TCAzMCAtRlMgMzIgICAgICAgICAgLi4vZGF0YS9vcmlnc3diL2pzdGVzdF8zMi5wY20gXAotCS4u
L1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF9yZWZUcmFuczUwLnBjbSA+PiAkTE9HRklM
RV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotICAgIAotICAg
IGVjaG8gIi0tIDU2IGticHMgdHJhbnMtY29kaW5nIHRvIDUwIGticHMsIDMwIG1zLCBTVVBFUi1X
SURFQkFORCIKLSAgICBlY2hvCi0gICAgJElTQUMgLUkgLUIgNTYwMDAgLUZMIDMwIC1GUyAzMiAg
LVQgNTAwMDAgIC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIvQVBJVGVzdF81NlQ1MC5wY20gXAot
CS4uL2RhdGEvb3JpZ3N3Yi9qc3Rlc3RfMzIucGNtIC4uL1RyYW5zY29kaW5nIiRQTEFURk9STSIv
QVBJVGVzdF8iJGlkeCIucGNtID4+ICRMT0dGSUxFX0FQSQotICAgIGxldCAiaWR4PWlkeCsxIgot
ICAgIGVjaG8KLSAgICBlY2hvCi0gICAgCi0gICAgZWNobyAiLS0gNTYga2JwcyB0cmFucy1jb2Rp
bmcgdG8gMjAga2JwcywgMzAgbXMsIFNVUEVSLVdJREVCQU5EIgotICAgIGVjaG8KLSAgICAkSVNB
QyAtSSAtQiA1NjAwMCAtRkwgMzAgLUZTIDMyICAtVCAyMDAwMCAuLi9UcmFuc2NvZGluZyIkUExB
VEZPUk0iL0FQSVRlc3RfNTZUMjAucGNtIFwKLQkuLi9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBj
bSAuLi9UcmFuc2NvZGluZyIkUExBVEZPUk0iL0FQSVRlc3RfIiRpZHgiLnBjbSA+PiAkTE9HRklM
RV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobyAiX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iCi0gICAgZWNo
bwotICAgIGVjaG8KLSAgICBlY2hvIAotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgCi0gICAgZWNo
byAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0IEZFQyIKLSAg
ICBlY2hvICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgotICAgIG1rZGlyIC1wIC4u
L0ZFQyIkUExBVEZPUk0iCi0gICAgcm0gLWYgLi4vRkVDIiRQTEFURk9STSIvKgotICAgIGVjaG8K
LSAgICBlY2hvCi0gICAgZWNobyAiLS0gMzIga2JwcyB3aXRoIHRyYW5zY29kaW5nIHRvIDIwa2Jw
cywgMzAgbXMsIFdJREVCQU5ELCAxMCUgcGFja2V0IGxvc3MiCi0gICAgJElTQUMgLUkgLUIgMzIw
MDAgLUZMIDMwIC1GUyAxNiAtUEwgMTAgLVQgMjAwMDAgLi4vRkVDIiRQTEFURk9STSIvQVBJVGVz
dF9QTDEwX1dCMzBfVDIwLnBjbSBcCi0JLi4vZGF0YS9vcmlnL3NwZWVjaF9hbmRfbWlzY19XQi5w
Y20gLi4vRkVDIiRQTEFURk9STSIvQVBJVGVzdF9QTDEwX1dCMzAucGNtID4+ICRMT0dGSUxFX0FQ
SQotICAgIGxldCAiaWR4PWlkeCsxIgotICAgIGVjaG8KLSAgICBlY2hvCi0gICAgCi0gICAgZWNo
byAiLS0gMzIga2JwcywgNjAgbXMsIFdJREVCQU5ELCAxMCUgcGFja2V0IGxvc3MiCi0gICAgJElT
QUMgLUkgLUIgMzIwMDAgLUZMIDYwIC1GUyAxNiAtUEwgMTAgLi4vZGF0YS9vcmlnL3NwZWVjaF9h
bmRfbWlzY19XQi5wY20gXAotCS4uL0ZFQyIkUExBVEZPUk0iL0FQSVRlc3RfUEwxMF9XQjYwLnBj
bSA+PiAkTE9HRklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNo
bwotICAgIAotICAgIGVjaG8gIi0tIDMyIGticHMgd2l0aCB0cmFuc2NvZGluZyB0byAyMCBrYnBz
LCAzMCBtcywgU1VQRVItV0lERUJBTkQsIDEwJSBwYWNrZXQgbG9zcyIKLSAgICAkSVNBQyAtSSAt
QiAzMjAwMCAtRkwgMzAgLUZTIDMyIC1QTCAxMCAtVCAyMDAwMCAuLi9GRUMiJFBMQVRGT1JNIi9B
UElUZXN0X1BMMTBfU1dCXzhrSHpfVDIwLnBjbSBcCi0JLi4vZGF0YS9vcmlnc3diL2pzdGVzdF8z
Mi5wY20gLi4vRkVDIiRQTEFURk9STSIvQVBJVGVzdF9QTDEwX1NXQl84a0h6LnBjbSA+PiAkTE9H
RklMRV9BUEkKLSAgICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotCi0gICAg
ZWNobyAiLS0gNDUga2JwcyB3aXRoIFRyYXNjb2RpbmcgdG8gMzgga2JwcywgMzAgbXMsIFNVUEVS
LVdJREVCQU5ELCAxMCUgcGFja2V0IGxvc3MiCi0gICAgJElTQUMgLUkgLUIgNDUwMDAgLUZMIDMw
IC1GUyAzMiAtUEwgMTAgLVQgMzgwMDAgLi4vRkVDIiRQTEFURk9STSIvQVBJVGVzdF9QTDEwX1NX
Ql8xMmtIel9UMzgucGNtIFwKLQkuLi9kYXRhL29yaWdzd2IvanN0ZXN0XzMyLnBjbSAuLi9GRUMi
JFBMQVRGT1JNIi9BUElUZXN0X1BMMTBfU1dCXzEya0h6LnBjbSA+PiAkTE9HRklMRV9BUEkKLSAg
ICBsZXQgImlkeD1pZHgrMSIKLSAgICBlY2hvCi0gICAgZWNobwotCi0gICAgZWNobyAiLS0gNTYg
a2JwcyB3aXRoIHRyYW5zY29kaW5nIHRvIDUwIGticHMsIDMwIG1zLCBTVVBFUi1XSURFQkFORCwg
MTAlIHBhY2tldCBsb3NzIgotICAgICRJU0FDIC1JIC1CIDU2MDAwIC1GTCAzMCAtRlMgMzIgLVBM
IDEwIC1UIDUwMDAwIC4uL0ZFQyIkUExBVEZPUk0iL0FQSVRlc3RfUEwxMF9TV0JfMTZrSHpfVDUw
LnBjbSBcCi0JLi4vZGF0YS9vcmlnc3diL2pzdGVzdF8zMi5wY20gLi4vRkVDIiRQTEFURk9STSIv
QVBJVGVzdF9QTDEwX1NXQl8xNmtIei5wY20gPj4gJExPR0ZJTEVfQVBJCi0gICAgbGV0ICJpZHg9
aWR4KzEiCi0gICAgZWNobwotICAgIGVjaG8KLWZpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mv
aXNhYy9tYWluL3Rlc3QvUUEvcnVuaVNBQ2ZhdWx0LnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21h
aW4vdGVzdC9RQS9ydW5pU0FDZmF1bHQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2MzgyOWE0Yjk4MzRlYzMyZjI0ZjhiZDlmNzgzZWFiYjViZGQyOWJhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4v
dGVzdC9RQS9ydW5pU0FDZmF1bHQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAot
IyEvYmluL2Jhc2gKLShzZXQgLW8gaWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsg
IyBmb3JjZSBiYXNoIHRvIGlnbm9yZSBcciBjaGFyYWN0ZXI/Pz8/PyA/Pz8/Pz8gCi1pZiAgWyAi
JDEiID0gIng2NCIgXSB8fCBbICIkIyIgLWVxIDAgXQotICAgIHRoZW4KLSAgICBQTEFURk9STT1f
WDY0Ci0gICAgSVNBQz0uLi94NjQvUmVsZWFzZS9SZWxlYXNlVGVzdC1BUElfMjAwNS5leGUKLWVs
aWYgWyAiJDEiID0gIjIwMDUiIF0KLQl0aGVuCi0gICAgUExBVEZPUk09XzIwMDUKLSAgICBJU0FD
PS4uL3dpbjMyL1JlbGVhc2UvUmVsZWFzZVRlc3QtQVBJXzIwMDUuZXhlCi1lbGlmIFsgIiQxIiA9
PSAiTElOVVgiIF0KLQl0aGVuCi0gICAgUExBVEZPUk09X2xpbnV4Ci0gICAgSVNBQz0uLi9SZWxl
YXNlVGVzdC1BUEkvaXNhY3N3dGVzdAotZWxzZQotCWVjaG8gVW5rbm93biBQbGF0Zm9ybQotCWV4
aXQgMgotZmkKLQotTE9HRklMRT1sb2dmYXVsdCRQTEFURk9STS50eHQKLWVjaG8gIlNUQVJUIEZB
VUxUIFRFU1QiID4gJExPR0ZJTEUKLQotCi1JTkZJTEVTPSQoY2F0IElucHV0RmlsZXMudHh0KQot
U1VCU0VUPSQoY2F0IElucHV0RmlsZXNGZXcudHh0KQotQ0hBTk5FTEZJTEVTPSQoY2F0IENoYW5u
ZWxGaWxlcy50eHQpCi1DSEFOTkVMTElTVD0oJChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkpCi1JTkRJ
Uj0uLi9kYXRhL29yaWcKLUlORElSU1dCPS4uL2RhdGEvb3JpZ3N3YgotT1VURElSPS4uL2RhdGFx
YWZ0JFBMQVRGT1JNCi1ta2RpciAtcCAkT1VURElSCi0KLSNtYXhpbXVtIFRhcmdldCByYXRlIGZv
ciBkaWZmZXJlbnQgYmFuZHdpZHRoCi1UQVJHRVRSQVRFPSggMzIwMDAgMzIwMDAgNDQwMDAgNTYw
MDAgKQotU0FNUEZSRVE9KCAxNiAzMiAzMiAzMiApCi1GQVVMVFRFU1Q9KDEgMiAzIDQgNSA2IDcg
OSkKLQotaW5kZXgxPTAKLQotZmlsZV93Yj0uLi9kYXRhL29yaWcvMTZrSHoucGNtCi1maWxlX3N3
Yj0uLi9kYXRhL29yaWdzd2IvMzJrSHoucGNtCi0KLWZvciBpZHggaW4gMCAxIDIgMyAKLSAgZG8K
LSMgRmF1bHQgdGVzdAotICBlY2hvCi0gIGVjaG8gIlNhbXBsaW5nIEZyZXF1ZW5jeSAiICR7U0FN
UEZSRVFbaWR4XX0gImtIeiwgUmF0ZSAiICR7VEFSR0VUUkFURVtpZHhdfSAiYnBzLiIKLSAgZWNo
byAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgot
ICBpZiBbICR7U0FNUEZSRVFbaWR4XX0gLWVxIDE2IF07IHRoZW4KLSAgICBmaWxlPSRmaWxlX3di
Ci0gIGVsc2UKLSAgICBmaWxlPSRmaWxlX3N3YgotICBmaQotCi0gIGZvciB0ZXN0bnIgaW4gJHtG
QVVMVFRFU1RbKl19Ci0gICAgZG8KLSAgICBlY2hvICJSdW5uaW5nIEZhdWx0IFRlc3QgIiAkdGVz
dG5yCi0gICAgJElTQUMgLUkgLUIgIiR7VEFSR0VUUkFURVtpZHhdfSIgLUYgJHRlc3RuciAtRlMg
IiR7U0FNUEZSRVFbaWR4XX0iICIkZmlsZSIgXAotCSRPVVRESVIvZnQiJHRlc3RuciJfIiR7VEFS
R0VUUkFURVtpZHhdfSJfIiR7U0FNUEZSRVFbaWR4XX0iLnBjbSA+PiBMT0dGSUxFCi0gICAgZWNo
bwotICAgIAotICBkb25lCi0gIAotIyBGYXVsdCB0ZXN0IG51bWJlciAxMCwgZXJyb3IgaW4gYml0
c3RyZWFtCi0gIGVjaG8gIlJ1bm5pbmcgRmF1bHQgVGVzdCAxMCIKLSAgJElTQUMgLUkgLUIgIiR7
VEFSR0VUUkFURVtpZHhdfSIgLUYgMTAgICAgICAgIC1GUyAiJHtTQU1QRlJFUVtpZHhdfSIgIiRm
aWxlIiBcCi0gICAgJE9VVERJUi9mdDEwXyIke1RBUkdFVFJBVEVbaWR4XX0iXyIke1NBTVBGUkVR
W2lkeF19Ii5wY20gPj4gTE9HRklMRQotICBlY2hvCi0gIGVjaG8gIlJ1bm5pbmcgRmF1bHQgVGVz
dCAxMCB3aXRoIHBhY2tldGxvc3MiCi0gICRJU0FDIC1JIC1CICIke1RBUkdFVFJBVEVbaWR4XX0i
IC1GIDEwIC1QTCAxMCAtRlMgIiR7U0FNUEZSRVFbaWR4XX0iICIkZmlsZSIgXAotICAgICRPVVRE
SVIvZnQxMHBsY18iJHtUQVJHRVRSQVRFW2lkeF19Il8iJHtTQU1QRlJFUVtpZHhdfSIucGNtID4+
IExPR0ZJTEUKLSAgZWNobwotZG9uZQotCi1lY2hvIAotZWNobwotZWNobyBET05FIQotICAKLQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvaXNhYy9tYWluL3Rlc3QvUUEvcnVuaVNBQ2ZpeGZs
b2F0LnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9ydW5pU0FDZml4ZmxvYXQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2RhNzhlNGZlYTZiNTNhNzlmZjc0
MDk5MzVlNzY0MTI4NGI5Mjc4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vdGVzdC9RQS9ydW5pU0FDZml4ZmxvYXQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotIyEvYmluL2Jhc2gKLShzZXQgLW8g
aWduY3IpIDI+L2Rldi9udWxsICYmIHNldCAtbyBpZ25jcjsgIyBmb3JjZSBiYXNoIHRvIGlnbm9y
ZSBcciBjaGFyYWN0ZXIKLQotTE9HRklMRT1sb2dmeGZsLnR4dAotZWNobyAiU1RBUlQgRklYLUZM
T0FUIFRFU1QiID4gJExPR0ZJTEUKLQotCi1JU0FDRklYRkxPQVQ9Li4vLi4vLi4vZml4L3Rlc3Qv
dGVzdEZpeEZsb2F0LmV4ZQotCi1JTkZJTEVTPSQoY2F0IElucHV0RmlsZXMudHh0KQotU1VCU0VU
PSQoY2F0IElucHV0RmlsZXNGZXcudHh0KQotQ0hBTk5FTEZJTEVTPSQoY2F0IENoYW5uZWxGaWxl
cy50eHQpCi1DSEFOTkVMTElTVD0oJChjYXQgQ2hhbm5lbEZpbGVzLnR4dCkpCi1JTkRJUj0uLi9k
YXRhL29yaWcKLU9VVERJUj0uLi9kYXRhcWFmeGZsCi1ta2RpciAtcCAkT1VURElSCi0KLWluZGV4
MT0wCi0KLWZvciBmaWxlIGluICRJTkZJTEVTICMgbG9vcCBvdmVyIGFsbCBpbnB1dCBmaWxlcwot
ICBkbwotICAKLSAgZm9yIGNoYW5uZWwgaW4gJENIQU5ORUxGSUxFUwotCWRvCi0JbGV0ICJpbmRl
eDE9aW5kZXgxKzEiCi0KLQkkSVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5lbCAtbSAxIC1QTEMg
JElORElSLyIkZmlsZSIgJE9VVERJUi9mbGZ4JGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLQkk
SVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5lbCAtbSAyIC1QTEMgJElORElSLyIkZmlsZSIgJE9V
VERJUi9meGZsJGluZGV4MSIkZmlsZSIgPj4gJExPR0ZJTEUKLSAgZG9uZQotCi1kb25lCi0KLWlu
ZGV4MT0wCi0KLWZvciBmaWxlIGluICRTVUJTRVQgIyBsb29wIG92ZXIgdGhlIHN1YnNldCBvZiBp
bnB1dCBmaWxlcwotICBkbwotCWxldCAiaW5kZXgxPWluZGV4MSsxIgotCSRJU0FDRklYRkxPQVQg
JElORElSLyRjaGFubmVsIC1tIDEgLU5CIDEgJElORElSLyIkZmlsZSIgJE9VVERJUi9mbGZ4bmIx
XyRpbmRleDEiJGZpbGUiID4+ICRMT0dGSUxFCi0JJElTQUNGSVhGTE9BVCAkSU5ESVIvJGNoYW5u
ZWwgLW0gMiAtTkIgMSAkSU5ESVIvIiRmaWxlIiAkT1VURElSL2Z4ZmxuYjFfJGluZGV4MSIkZmls
ZSIgPj4gJExPR0ZJTEUKLQkkSVNBQ0ZJWEZMT0FUICRJTkRJUi8kY2hhbm5lbCAtbSAxIC1OQiAy
IC1QTEMgJElORElSLyIkZmlsZSIgJE9VVERJUi9mbGZ4bmIyXyRpbmRleDEiJGZpbGUiID4+ICRM
T0dGSUxFCi0JJElTQUNGSVhGTE9BVCAkSU5ESVIvJGNoYW5uZWwgLW0gMiAtTkIgMiAtUExDICRJ
TkRJUi8iJGZpbGUiICRPVVRESVIvZnhmbG5iMl8kaW5kZXgxIiRmaWxlIiA+PiAkTE9HRklMRQot
ZG9uZQotCi1lY2hvIERPTkUhCi0KLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvbGVnYWN5
X2VuY29kZWRfYXVkaW9fZnJhbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvbGVnYWN5X2VuY29kZWRfYXVk
aW9fZnJhbWUuY2MKaW5kZXggMGJmM2IxOWEzYjE3Y2IzNDZiY2NkODg3NzYyYTI3N2IyZWMxZTQw
NS4uZDllZmMyMTFkYTNkYWM2ODAwYjIxYjVkOTc5ZGI5MWJkNmRlNjgzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL2xlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9sZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZS5jYwpAQCAtMTQsNiArMTQsOCBAQAogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBMZWdhY3lFbmNvZGVkQXVkaW9GcmFt
ZTo6TGVnYWN5RW5jb2RlZEF1ZGlvRnJhbWUoQXVkaW9EZWNvZGVyKiBkZWNvZGVyLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvY29kZWNzL2xlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3MvbGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUuaAppbmRleCAwNWQ0ZmU0ODljOTFkZTBh
M2MwNmJkZGI2Y2ZmZmY0ZmIyMDVjODVjLi40MWIwOGY3ODk4ZTJlOGZiZjk2NGNjYjMxZmUyMTM0
OTEzNWVjMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvbGVnYWN5X2VuY29kZWRfYXVkaW9f
ZnJhbWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvbGVnYWN5X2VuY29kZWRfYXVkaW9fZnJhbWUuaApA
QCAtMTEsMTAgKzExLDE0IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19M
RUdBQ1lfRU5DT0RFRF9BVURJT19GUkFNRV9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElO
R19DT0RFQ1NfTEVHQUNZX0VOQ09ERURfQVVESU9fRlJBTUVfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2J1ZmZlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVk
aW9fZGVjb2Rlcl9vcHVzLmNjCmluZGV4IDMwMmI3MTQwMzE5NmFhZGU4NmJiMzNmYjFkNGQ4ZjQ5
Yzc3OGQyNmUuLjM1N2NiMWEyMGRhNzk5ZGQwMjg4ZGQxZmZlODQ0NmM3NTk1OGJhNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2RlY29kZXJfb3B1cy5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuY2MKQEAgLTEwLDggKzEwLDExIEBACiAK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVy
X29wdXMuaCIKIAorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5j
bHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZGVjb2Rlcl9vcHVzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9j
b2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuaAppbmRleCA3MGFhNDBiZGM0NmIwMWU4OGI5
ZmYwYWEwZjVmY2VjMjdmN2UwMGVjLi44MDQzNDI1MjQzY2Q5ZWQ1NjRiNzA0Y2UzMzIzMzEwOTM5
NDZlYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19kZWNvZGVyX29wdXMuaApAQCAtMTEsOCAr
MTEsMTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfQ09ERUNTX09QVVNfQVVESU9f
REVDT0RFUl9PUFVTX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX0NPREVDU19PUFVT
X0FVRElPX0RFQ09ERVJfT1BVU19IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8
c3RkaW50Lmg+CisjaW5jbHVkZSA8dmVjdG9yPgorCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVj
cy9hdWRpb19kZWNvZGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L29wdXMvb3B1c19pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzLmNjCmluZGV4IGU2MjQwZTY5ODI2
YTE0MGY4NjgxOGNjNzM3MjAzYzA4MTZjODU1ZGUuLjFhODhhY2YzYzAzNTI2ZmI2MWUyYmY0NjA5
NTQyNTRlNDEyNjZjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29k
ZXJfb3B1cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXMuY2MK
QEAgLTE1LDcgKzE1LDggQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVp
bGQvaW5jbHVkZSkKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3
b3JrX2FkYXB0b3IvYXVkaW9fbmV0d29ya19hZGFwdG9yX2ltcGwuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY29udHJvbGxlcl9tYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvb3B1c19pbnRl
cmZhY2UuaCIKQEAgLTIxNCw4ICsyMTUsODAgQEAgaW50IEdldEJpdHJhdGVCcHMoY29uc3QgQXVk
aW9FbmNvZGVyT3B1c0NvbmZpZyYgY29uZmlnKSB7CiAgIHJldHVybiAqY29uZmlnLmJpdHJhdGVf
YnBzOwogfQogCitib29sIElzVmFsaWRQYWNrZXRMb3NzUmF0ZShpbnQgdmFsdWUpIHsKKyAgcmV0
dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMTAwOworfQorCitmbG9hdCBUb0ZyYWN0aW9uKGlu
dCBwZXJjZW50KSB7CisgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4ocGVyY2VudCkgLyAxMDA7
Cit9CisKK2Zsb2F0IEdldE1pblBhY2tldExvc3NSYXRlKCkgeworICBjb25zdGV4cHIgY2hhciBr
UGFja2V0TG9zc0ZpZWxkVHJpYWxbXSA9ICJXZWJSVEMtQXVkaW8tT3B1c01pblBhY2tldExvc3NS
YXRlIjsKKyAgY29uc3QgYm9vbCB1c2Vfb3B1c19taW5fcGFja2V0X2xvc3NfcmF0ZSA9CisgICAg
ICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa1BhY2tldExvc3NGaWVsZFRyaWFsKTsK
KyAgaWYgKHVzZV9vcHVzX21pbl9wYWNrZXRfbG9zc19yYXRlKSB7CisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgZmllbGRfdHJpYWxfc3RyaW5nID0KKyAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6
RmluZEZ1bGxOYW1lKGtQYWNrZXRMb3NzRmllbGRUcmlhbCk7CisgICAgY29uc3RleHByIGludCBr
RGVmYXVsdE1pblBhY2tldExvc3NSYXRlID0gMTsKKyAgICBpbnQgdmFsdWUgPSBrRGVmYXVsdE1p
blBhY2tldExvc3NSYXRlOworICAgIGlmIChzc2NhbmYoZmllbGRfdHJpYWxfc3RyaW5nLmNfc3Ry
KCksICJFbmFibGVkLSVkIiwgJnZhbHVlKSA9PSAxICYmCisgICAgICAgICFJc1ZhbGlkUGFja2V0
TG9zc1JhdGUodmFsdWUpKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJJbnZhbGlk
IHBhcmFtZXRlciBmb3IgIiA8PCBrUGFja2V0TG9zc0ZpZWxkVHJpYWwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgIiwgdXNpbmcgZGVmYXVsdCB2YWx1ZTogIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCBrRGVmYXVsdE1pblBhY2tldExvc3NSYXRlOworICAgICAgdmFsdWUgPSBr
RGVmYXVsdE1pblBhY2tldExvc3NSYXRlOworICAgIH0KKyAgICByZXR1cm4gVG9GcmFjdGlvbih2
YWx1ZSk7CisgIH0KKyAgcmV0dXJuIDAuMDsKK30KKworc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5j
b2Rlck9wdXNJbXBsOjpOZXdQYWNrZXRMb3NzUmF0ZU9wdGltaXplcj4KK0dldE5ld1BhY2tldExv
c3NSYXRlT3B0aW1pemVyKCkgeworICBjb25zdGV4cHIgY2hhciBrUGFja2V0TG9zc09wdGltaXph
dGlvbk5hbWVbXSA9CisgICAgICAiV2ViUlRDLUF1ZGlvLU5ld09wdXNQYWNrZXRMb3NzUmF0ZU9w
dGltaXphdGlvbiI7CisgIGNvbnN0IGJvb2wgdXNlX25ld19wYWNrZXRfbG9zc19vcHRpbWl6YXRp
b24gPQorICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtQYWNrZXRMb3NzT3B0
aW1pemF0aW9uTmFtZSk7CisgIGlmICh1c2VfbmV3X3BhY2tldF9sb3NzX29wdGltaXphdGlvbikg
eworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpZWxkX3RyaWFsX3N0cmluZyA9CisgICAgICAgIHdl
YnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZShrUGFja2V0TG9zc09wdGltaXphdGlvbk5h
bWUpOworICAgIGludCBtaW5fcmF0ZTsKKyAgICBpbnQgbWF4X3JhdGU7CisgICAgZmxvYXQgc2xv
cGU7CisgICAgaWYgKHNzY2FuZihmaWVsZF90cmlhbF9zdHJpbmcuY19zdHIoKSwgIkVuYWJsZWQt
JWQtJWQtJWYiLCAmbWluX3JhdGUsCisgICAgICAgICAgICAgICAmbWF4X3JhdGUsICZzbG9wZSkg
PT0gMyAmJgorICAgICAgICBJc1ZhbGlkUGFja2V0TG9zc1JhdGUobWluX3JhdGUpICYmIElzVmFs
aWRQYWNrZXRMb3NzUmF0ZShtYXhfcmF0ZSkpIHsKKyAgICAgIHJldHVybiBhYnNsOjptYWtlX3Vu
aXF1ZTwKKyAgICAgICAgICBBdWRpb0VuY29kZXJPcHVzSW1wbDo6TmV3UGFja2V0TG9zc1JhdGVP
cHRpbWl6ZXI+KAorICAgICAgICAgIFRvRnJhY3Rpb24obWluX3JhdGUpLCBUb0ZyYWN0aW9uKG1h
eF9yYXRlKSwgc2xvcGUpOworICAgIH0KKyAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJJbnZh
bGlkIHBhcmFtZXRlcnMgZm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IGtQYWNrZXRM
b3NzT3B0aW1pemF0aW9uTmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgdXNpbmcg
ZGVmYXVsdCB2YWx1ZXMuIjsKKyAgICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8CisgICAgICAg
IEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpOZXdQYWNrZXRMb3NzUmF0ZU9wdGltaXplcj4oKTsKKyAg
fQorICByZXR1cm4gbnVsbHB0cjsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKK0F1ZGlvRW5jb2Rl
ck9wdXNJbXBsOjpOZXdQYWNrZXRMb3NzUmF0ZU9wdGltaXplcjo6TmV3UGFja2V0TG9zc1JhdGVP
cHRpbWl6ZXIoCisgICAgZmxvYXQgbWluX3BhY2tldF9sb3NzX3JhdGUsCisgICAgZmxvYXQgbWF4
X3BhY2tldF9sb3NzX3JhdGUsCisgICAgZmxvYXQgc2xvcGUpCisgICAgOiBtaW5fcGFja2V0X2xv
c3NfcmF0ZV8obWluX3BhY2tldF9sb3NzX3JhdGUpLAorICAgICAgbWF4X3BhY2tldF9sb3NzX3Jh
dGVfKG1heF9wYWNrZXRfbG9zc19yYXRlKSwKKyAgICAgIHNsb3BlXyhzbG9wZSkge30KKworZmxv
YXQgQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok5ld1BhY2tldExvc3NSYXRlT3B0aW1pemVyOjpPcHRp
bWl6ZVBhY2tldExvc3NSYXRlKAorICAgIGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpIGNvbnN0IHsK
KyAgcGFja2V0X2xvc3NfcmF0ZSA9IHNsb3BlXyAqIHBhY2tldF9sb3NzX3JhdGU7CisgIHJldHVy
biBzdGQ6Om1pbihzdGQ6Om1heChwYWNrZXRfbG9zc19yYXRlLCBtaW5fcGFja2V0X2xvc3NfcmF0
ZV8pLAorICAgICAgICAgICAgICAgICAgbWF4X3BhY2tldF9sb3NzX3JhdGVfKTsKK30KKwogdm9p
ZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6QXBwZW5kU3VwcG9ydGVkRW5jb2RlcnMoCiAgICAgc3Rk
Ojp2ZWN0b3I8QXVkaW9Db2RlY1NwZWM+KiBzcGVjcykgewogICBjb25zdCBTZHBBdWRpb0Zvcm1h
dCBmbXQgPSB7CkBAIC0yNDQsNyArMzE3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRW5jb2Rl
cj4gQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok1ha2VBdWRpb0VuY29kZXIoCiAKIGFic2w6Om9wdGlv
bmFsPEF1ZGlvQ29kZWNJbmZvPiBBdWRpb0VuY29kZXJPcHVzSW1wbDo6UXVlcnlBdWRpb0VuY29k
ZXIoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkgewotICBpZiAoU1RSX0NBU0Vf
Q01QKGZvcm1hdC5uYW1lLmNfc3RyKCksIEdldFBheWxvYWROYW1lKCkpID09IDAgJiYKKyAgaWYg
KGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsIEdldFBheWxvYWROYW1lKCkpICYm
CiAgICAgICBmb3JtYXQuY2xvY2tyYXRlX2h6ID09IDQ4MDAwICYmIGZvcm1hdC5udW1fY2hhbm5l
bHMgPT0gMikgewogICAgIGNvbnN0IHNpemVfdCBudW1fY2hhbm5lbHMgPSBHZXRDaGFubmVsQ291
bnQoZm9ybWF0KTsKICAgICBjb25zdCBpbnQgYml0cmF0ZSA9CkBAIC0yNzYsNyArMzQ5LDcgQEAg
QXVkaW9FbmNvZGVyT3B1c0NvbmZpZyBBdWRpb0VuY29kZXJPcHVzSW1wbDo6Q3JlYXRlQ29uZmln
KAogCiBhYnNsOjpvcHRpb25hbDxBdWRpb0VuY29kZXJPcHVzQ29uZmlnPiBBdWRpb0VuY29kZXJP
cHVzSW1wbDo6U2RwVG9Db25maWcoCiAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGZvcm1hdCkg
ewotICBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJvcHVzIikgIT0gMCB8
fAorICBpZiAoIWFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5hbWUsICJvcHVzIikgfHwK
ICAgICAgIGZvcm1hdC5jbG9ja3JhdGVfaHogIT0gNDgwMDAgfHwgZm9ybWF0Lm51bV9jaGFubmVs
cyAhPSAyKSB7CiAgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CiAgIH0KQEAgLTM5OCwxMCArNDcx
LDE0IEBAIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpBdWRpb0VuY29kZXJPcHVzSW1wbCgKICAgICA6
IHBheWxvYWRfdHlwZV8ocGF5bG9hZF90eXBlKSwKICAgICAgIHNlbmRfc2lkZV9id2Vfd2l0aF9v
dmVyaGVhZF8oCiAgICAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJS
VEMtU2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikpLAorICAgICAgdXNlX2xpbmtfY2FwYWNpdHlf
Zm9yX2FkYXB0YXRpb25fKHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgKKyAgICAgICAg
ICAiV2ViUlRDLUF1ZGlvLUxpbmtDYXBhY2l0eUFkYXB0YXRpb24iKSksCiAgICAgICBhZGp1c3Rf
YmFuZHdpZHRoXygKICAgICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldl
YlJUQy1BZGp1c3RPcHVzQmFuZHdpZHRoIikpLAogICAgICAgYml0cmF0ZV9jaGFuZ2VkXyh0cnVl
KSwKICAgICAgIHBhY2tldF9sb3NzX3JhdGVfKDAuMCksCisgICAgICBtaW5fcGFja2V0X2xvc3Nf
cmF0ZV8oR2V0TWluUGFja2V0TG9zc1JhdGUoKSksCisgICAgICBuZXdfcGFja2V0X2xvc3Nfb3B0
aW1pemVyXyhHZXROZXdQYWNrZXRMb3NzUmF0ZU9wdGltaXplcigpKSwKICAgICAgIGluc3RfKG51
bGxwdHIpLAogICAgICAgcGFja2V0X2xvc3NfZnJhY3Rpb25fc21vb3RoZXJfKG5ldyBQYWNrZXRM
b3NzRnJhY3Rpb25TbW9vdGhlcigpKSwKICAgICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRvcl9jcmVh
dG9yXyhhdWRpb19uZXR3b3JrX2FkYXB0b3JfY3JlYXRvciksCkBAIC00MTQsNiArNDkxLDcgQEAg
QXVkaW9FbmNvZGVyT3B1c0ltcGw6OkF1ZGlvRW5jb2Rlck9wdXNJbXBsKAogICBSVENfQ0hFQ0so
Y29uZmlnLnBheWxvYWRfdHlwZSA9PSAtMSB8fCBjb25maWcucGF5bG9hZF90eXBlID09IHBheWxv
YWRfdHlwZSk7CiAKICAgUlRDX0NIRUNLKFJlY3JlYXRlRW5jb2Rlckluc3RhbmNlKGNvbmZpZykp
OworICBTZXRQcm9qZWN0ZWRQYWNrZXRMb3NzUmF0ZShwYWNrZXRfbG9zc19yYXRlXyk7CiB9CiAK
IEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpBdWRpb0VuY29kZXJPcHVzSW1wbChjb25zdCBDb2RlY0lu
c3QmIGNvZGVjX2luc3QpCkBAIC01MjksNyArNjA3LDggQEAgdm9pZCBBdWRpb0VuY29kZXJPcHVz
SW1wbDo6T25SZWNlaXZlZFVwbGlua1JlY292ZXJhYmxlUGFja2V0TG9zc0ZyYWN0aW9uKAogCiB2
b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpPblJlY2VpdmVkVXBsaW5rQmFuZHdpZHRoKAogICAg
IGludCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMsCi0gICAgYWJzbDo6b3B0aW9uYWw8aW50NjRf
dD4gYndlX3BlcmlvZF9tcykgeworICAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+IGJ3ZV9wZXJp
b2RfbXMsCisgICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGlua19jYXBhY2l0eV9hbGxvY2F0
aW9uX2JwcykgewogICBpZiAoYXVkaW9fbmV0d29ya19hZGFwdG9yXykgewogICAgIGF1ZGlvX25l
dHdvcmtfYWRhcHRvcl8tPlNldFRhcmdldEF1ZGlvQml0cmF0ZSh0YXJnZXRfYXVkaW9fYml0cmF0
ZV9icHMpOwogICAgIC8vIFdlIGdpdmUgc21vb3RoZWQgYml0cmF0ZSBhbGxvY2F0aW9uIHRvIGF1
ZGlvIG5ldHdvcmsgYWRhcHRvciBhcwpAQCAtNTQ3LDYgKzYyNiw5IEBAIHZvaWQgQXVkaW9FbmNv
ZGVyT3B1c0ltcGw6Ok9uUmVjZWl2ZWRVcGxpbmtCYW5kd2lkdGgoCiAgICAgICBiaXRyYXRlX3Nt
b290aGVyXy0+U2V0VGltZUNvbnN0YW50TXMoKmJ3ZV9wZXJpb2RfbXMgKiA0KTsKICAgICBiaXRy
YXRlX3Ntb290aGVyXy0+QWRkU2FtcGxlKHRhcmdldF9hdWRpb19iaXRyYXRlX2Jwcyk7CiAKKyAg
ICBpZiAobGlua19jYXBhY2l0eV9hbGxvY2F0aW9uX2JwcykKKyAgICAgIGxpbmtfY2FwYWNpdHlf
YWxsb2NhdGlvbl9icHNfID0gbGlua19jYXBhY2l0eV9hbGxvY2F0aW9uX2JwczsKKwogICAgIEFw
cGx5QXVkaW9OZXR3b3JrQWRhcHRvcigpOwogICB9IGVsc2UgaWYgKHNlbmRfc2lkZV9id2Vfd2l0
aF9vdmVyaGVhZF8pIHsKICAgICBpZiAoIW92ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXRfKSB7CkBA
IC01NjUsNiArNjQ3LDE4IEBAIHZvaWQgQXVkaW9FbmNvZGVyT3B1c0ltcGw6Ok9uUmVjZWl2ZWRV
cGxpbmtCYW5kd2lkdGgoCiAgICAgU2V0VGFyZ2V0Qml0cmF0ZSh0YXJnZXRfYXVkaW9fYml0cmF0
ZV9icHMpOwogICB9CiB9Cit2b2lkIEF1ZGlvRW5jb2Rlck9wdXNJbXBsOjpPblJlY2VpdmVkVXBs
aW5rQmFuZHdpZHRoKAorICAgIGludCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMsCisgICAgYWJz
bDo6b3B0aW9uYWw8aW50NjRfdD4gYndlX3BlcmlvZF9tcykgeworICBPblJlY2VpdmVkVXBsaW5r
QmFuZHdpZHRoKHRhcmdldF9hdWRpb19iaXRyYXRlX2JwcywgYndlX3BlcmlvZF9tcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpudWxsb3B0KTsKK30KKwordm9pZCBBdWRpb0Vu
Y29kZXJPcHVzSW1wbDo6T25SZWNlaXZlZFVwbGlua0FsbG9jYXRpb24oCisgICAgQml0cmF0ZUFs
bG9jYXRpb25VcGRhdGUgdXBkYXRlKSB7CisgIE9uUmVjZWl2ZWRVcGxpbmtCYW5kd2lkdGgodXBk
YXRlLnRhcmdldF9iaXRyYXRlLmJwcygpLCB1cGRhdGUuYndlX3BlcmlvZC5tcygpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZS5saW5rX2NhcGFjaXR5LmJwcygpKTsKK30KIAog
dm9pZCBBdWRpb0VuY29kZXJPcHVzSW1wbDo6T25SZWNlaXZlZFJ0dChpbnQgcnR0X21zKSB7CiAg
IGlmICghYXVkaW9fbmV0d29ya19hZGFwdG9yXykKQEAgLTczOCw5ICs4MzIsMTQgQEAgdm9pZCBB
dWRpb0VuY29kZXJPcHVzSW1wbDo6U2V0TnVtQ2hhbm5lbHNUb0VuY29kZSgKIH0KIAogdm9pZCBB
dWRpb0VuY29kZXJPcHVzSW1wbDo6U2V0UHJvamVjdGVkUGFja2V0TG9zc1JhdGUoZmxvYXQgZnJh
Y3Rpb24pIHsKLSAgZmxvYXQgb3B0X2xvc3NfcmF0ZSA9IE9wdGltaXplUGFja2V0TG9zc1JhdGUo
ZnJhY3Rpb24sIHBhY2tldF9sb3NzX3JhdGVfKTsKLSAgaWYgKHBhY2tldF9sb3NzX3JhdGVfICE9
IG9wdF9sb3NzX3JhdGUpIHsKLSAgICBwYWNrZXRfbG9zc19yYXRlXyA9IG9wdF9sb3NzX3JhdGU7
CisgIGlmIChuZXdfcGFja2V0X2xvc3Nfb3B0aW1pemVyXykgeworICAgIGZyYWN0aW9uID0gbmV3
X3BhY2tldF9sb3NzX29wdGltaXplcl8tPk9wdGltaXplUGFja2V0TG9zc1JhdGUoZnJhY3Rpb24p
OworICB9IGVsc2UgeworICAgIGZyYWN0aW9uID0gT3B0aW1pemVQYWNrZXRMb3NzUmF0ZShmcmFj
dGlvbiwgcGFja2V0X2xvc3NfcmF0ZV8pOworICAgIGZyYWN0aW9uID0gc3RkOjptYXgoZnJhY3Rp
b24sIG1pbl9wYWNrZXRfbG9zc19yYXRlXyk7CisgIH0KKyAgaWYgKHBhY2tldF9sb3NzX3JhdGVf
ICE9IGZyYWN0aW9uKSB7CisgICAgcGFja2V0X2xvc3NfcmF0ZV8gPSBmcmFjdGlvbjsKICAgICBS
VENfQ0hFQ0tfRVEoCiAgICAgICAgIDAsIFdlYlJ0Y09wdXNfU2V0UGFja2V0TG9zc1JhdGUoCiAg
ICAgICAgICAgICAgICBpbnN0Xywgc3RhdGljX2Nhc3Q8aW50MzJfdD4ocGFja2V0X2xvc3NfcmF0
ZV8gKiAxMDAgKyAuNSkpKTsKQEAgLTc5NCwxNCArODkzLDIwIEBAIEF1ZGlvRW5jb2Rlck9wdXNJ
bXBsOjpEZWZhdWx0QXVkaW9OZXR3b3JrQWRhcHRvckNyZWF0b3IoCiAKIHZvaWQgQXVkaW9FbmNv
ZGVyT3B1c0ltcGw6Ok1heWJlVXBkYXRlVXBsaW5rQmFuZHdpZHRoKCkgewogICBpZiAoYXVkaW9f
bmV0d29ya19hZGFwdG9yXykgewotICAgIGludDY0X3Qgbm93X21zID0gcnRjOjpUaW1lTWlsbGlz
KCk7Ci0gICAgaWYgKCFiaXRyYXRlX3Ntb290aGVyX2xhc3RfdXBkYXRlX3RpbWVfIHx8Ci0gICAg
ICAgIG5vd19tcyAtICpiaXRyYXRlX3Ntb290aGVyX2xhc3RfdXBkYXRlX3RpbWVfID49Ci0gICAg
ICAgICAgICBjb25maWdfLnVwbGlua19iYW5kd2lkdGhfdXBkYXRlX2ludGVydmFsX21zKSB7Ci0g
ICAgICBhYnNsOjpvcHRpb25hbDxmbG9hdD4gc21vb3RoZWRfYml0cmF0ZSA9IGJpdHJhdGVfc21v
b3RoZXJfLT5HZXRBdmVyYWdlKCk7Ci0gICAgICBpZiAoc21vb3RoZWRfYml0cmF0ZSkKLSAgICAg
ICAgYXVkaW9fbmV0d29ya19hZGFwdG9yXy0+U2V0VXBsaW5rQmFuZHdpZHRoKCpzbW9vdGhlZF9i
aXRyYXRlKTsKLSAgICAgIGJpdHJhdGVfc21vb3RoZXJfbGFzdF91cGRhdGVfdGltZV8gPSBub3df
bXM7CisgICAgaWYgKHVzZV9saW5rX2NhcGFjaXR5X2Zvcl9hZGFwdGF0aW9uXyAmJiBsaW5rX2Nh
cGFjaXR5X2FsbG9jYXRpb25fYnBzXykgeworICAgICAgYXVkaW9fbmV0d29ya19hZGFwdG9yXy0+
U2V0VXBsaW5rQmFuZHdpZHRoKAorICAgICAgICAgICpsaW5rX2NhcGFjaXR5X2FsbG9jYXRpb25f
YnBzXyk7CisgICAgfSBlbHNlIHsKKyAgICAgIGludDY0X3Qgbm93X21zID0gcnRjOjpUaW1lTWls
bGlzKCk7CisgICAgICBpZiAoIWJpdHJhdGVfc21vb3RoZXJfbGFzdF91cGRhdGVfdGltZV8gfHwK
KyAgICAgICAgICBub3dfbXMgLSAqYml0cmF0ZV9zbW9vdGhlcl9sYXN0X3VwZGF0ZV90aW1lXyA+
PQorICAgICAgICAgICAgICBjb25maWdfLnVwbGlua19iYW5kd2lkdGhfdXBkYXRlX2ludGVydmFs
X21zKSB7CisgICAgICAgIGFic2w6Om9wdGlvbmFsPGZsb2F0PiBzbW9vdGhlZF9iaXRyYXRlID0K
KyAgICAgICAgICAgIGJpdHJhdGVfc21vb3RoZXJfLT5HZXRBdmVyYWdlKCk7CisgICAgICAgIGlm
IChzbW9vdGhlZF9iaXRyYXRlKQorICAgICAgICAgIGF1ZGlvX25ldHdvcmtfYWRhcHRvcl8tPlNl
dFVwbGlua0JhbmR3aWR0aCgqc21vb3RoZWRfYml0cmF0ZSk7CisgICAgICAgIGJpdHJhdGVfc21v
b3RoZXJfbGFzdF91cGRhdGVfdGltZV8gPSBub3dfbXM7CisgICAgICB9CiAgICAgfQogICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19lbmNvZGVyX29wdXMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5oCmluZGV4IGVhNGIyNjUwYmJiZTcz
NjQ2YTM5YjFkNzhkZTVkNjJhYTVlMjllYzQuLjE1MDQyM2ZkM2VlN2FhN2VjNGE3M2NmNGVlYmI4
ODg5ZTE3ODE2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJf
b3B1cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1cy5oCkBAIC0z
NCw2ICszNCwyNiBAQCBzdHJ1Y3QgQ29kZWNJbnN0OwogCiBjbGFzcyBBdWRpb0VuY29kZXJPcHVz
SW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0VuY29kZXIgewogIHB1YmxpYzoKKyAgY2xhc3MgTmV3
UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXIgeworICAgcHVibGljOgorICAgIE5ld1BhY2tldExvc3NS
YXRlT3B0aW1pemVyKGZsb2F0IG1pbl9wYWNrZXRfbG9zc19yYXRlID0gMC4wMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBtYXhfcGFja2V0X2xvc3NfcmF0ZSA9IDAuMiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBzbG9wZSA9IDEuMCk7CisKKyAg
ICBmbG9hdCBPcHRpbWl6ZVBhY2tldExvc3NSYXRlKGZsb2F0IHBhY2tldF9sb3NzX3JhdGUpIGNv
bnN0OworCisgICAgLy8gR2V0dGVycyBmb3IgdGVzdGluZy4KKyAgICBmbG9hdCBtaW5fcGFja2V0
X2xvc3NfcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1pbl9wYWNrZXRfbG9zc19yYXRlXzsgfTsKKyAg
ICBmbG9hdCBtYXhfcGFja2V0X2xvc3NfcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1heF9wYWNrZXRf
bG9zc19yYXRlXzsgfTsKKyAgICBmbG9hdCBzbG9wZSgpIGNvbnN0IHsgcmV0dXJuIHNsb3BlXzsg
fTsKKworICAgcHJpdmF0ZToKKyAgICBjb25zdCBmbG9hdCBtaW5fcGFja2V0X2xvc3NfcmF0ZV87
CisgICAgY29uc3QgZmxvYXQgbWF4X3BhY2tldF9sb3NzX3JhdGVfOworICAgIGNvbnN0IGZsb2F0
IHNsb3BlXzsKKyAgICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKE5ld1BhY2tldExvc3NS
YXRlT3B0aW1pemVyKTsKKyAgfTsKKwogICBzdGF0aWMgQXVkaW9FbmNvZGVyT3B1c0NvbmZpZyBD
cmVhdGVDb25maWcoY29uc3QgQ29kZWNJbnN0JiBjb2RlY19pbnN0KTsKIAogICAvLyBSZXR1cm5z
IGVtcHR5IGlmIHRoZSBjdXJyZW50IGJpdHJhdGUgZmFsbHMgd2l0aGluIHRoZSBoeXN0ZXJlc2lz
IHdpbmRvdywKQEAgLTk5LDYgKzExOSw3IEBAIGNsYXNzIEF1ZGlvRW5jb2Rlck9wdXNJbXBsIGZp
bmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7CiAgIHZvaWQgT25SZWNlaXZlZFVwbGlua0JhbmR3
aWR0aCgKICAgICAgIGludCB0YXJnZXRfYXVkaW9fYml0cmF0ZV9icHMsCiAgICAgICBhYnNsOjpv
cHRpb25hbDxpbnQ2NF90PiBid2VfcGVyaW9kX21zKSBvdmVycmlkZTsKKyAgdm9pZCBPblJlY2Vp
dmVkVXBsaW5rQWxsb2NhdGlvbihCaXRyYXRlQWxsb2NhdGlvblVwZGF0ZSB1cGRhdGUpIG92ZXJy
aWRlOwogICB2b2lkIE9uUmVjZWl2ZWRSdHQoaW50IHJ0dF9tcykgb3ZlcnJpZGU7CiAgIHZvaWQg
T25SZWNlaXZlZE92ZXJoZWFkKHNpemVfdCBvdmVyaGVhZF9ieXRlc19wZXJfcGFja2V0KSBvdmVy
cmlkZTsKICAgdm9pZCBTZXRSZWNlaXZlckZyYW1lTGVuZ3RoUmFuZ2UoaW50IG1pbl9mcmFtZV9s
ZW5ndGhfbXMsCkBAIC0xMTAsNiArMTMxLDkgQEAgY2xhc3MgQXVkaW9FbmNvZGVyT3B1c0ltcGwg
ZmluYWwgOiBwdWJsaWMgQXVkaW9FbmNvZGVyIHsKIAogICAvLyBHZXR0ZXJzIGZvciB0ZXN0aW5n
LgogICBmbG9hdCBwYWNrZXRfbG9zc19yYXRlKCkgY29uc3QgeyByZXR1cm4gcGFja2V0X2xvc3Nf
cmF0ZV87IH0KKyAgTmV3UGFja2V0TG9zc1JhdGVPcHRpbWl6ZXIqIG5ld19wYWNrZXRfbG9zc19v
cHRpbWl6ZXIoKSBjb25zdCB7CisgICAgcmV0dXJuIG5ld19wYWNrZXRfbG9zc19vcHRpbWl6ZXJf
LmdldCgpOworICB9CiAgIEF1ZGlvRW5jb2Rlck9wdXNDb25maWc6OkFwcGxpY2F0aW9uTW9kZSBh
cHBsaWNhdGlvbigpIGNvbnN0IHsKICAgICByZXR1cm4gY29uZmlnXy5hcHBsaWNhdGlvbjsKICAg
fQpAQCAtMTQxLDYgKzE2NSwxMSBAQCBjbGFzcyBBdWRpb0VuY29kZXJPcHVzSW1wbCBmaW5hbCA6
IHB1YmxpYyBBdWRpb0VuY29kZXIgewogICB2b2lkIFNldE51bUNoYW5uZWxzVG9FbmNvZGUoc2l6
ZV90IG51bV9jaGFubmVsc190b19lbmNvZGUpOwogICB2b2lkIFNldFByb2plY3RlZFBhY2tldExv
c3NSYXRlKGZsb2F0IGZyYWN0aW9uKTsKIAorICB2b2lkIE9uUmVjZWl2ZWRVcGxpbmtCYW5kd2lk
dGgoCisgICAgICBpbnQgdGFyZ2V0X2F1ZGlvX2JpdHJhdGVfYnBzLAorICAgICAgYWJzbDo6b3B0
aW9uYWw8aW50NjRfdD4gYndlX3BlcmlvZF9tcywKKyAgICAgIGFic2w6Om9wdGlvbmFsPGludDY0
X3Q+IGxpbmtfY2FwYWNpdHlfYWxsb2NhdGlvbik7CisKICAgLy8gVE9ETyhtaW55dWUpOiByZW1v
dmUgIm92ZXJyaWRlIiB3aGVuIHdlIGNhbiBkZXByZWNhdGUKICAgLy8gfEF1ZGlvRW5jb2Rlcjo6
U2V0VGFyZ2V0Qml0cmF0ZXwuCiAgIHZvaWQgU2V0VGFyZ2V0Qml0cmF0ZShpbnQgdGFyZ2V0X2Jw
cykgb3ZlcnJpZGU7CkBAIC0xNTUsOSArMTg0LDEyIEBAIGNsYXNzIEF1ZGlvRW5jb2Rlck9wdXNJ
bXBsIGZpbmFsIDogcHVibGljIEF1ZGlvRW5jb2RlciB7CiAgIEF1ZGlvRW5jb2Rlck9wdXNDb25m
aWcgY29uZmlnXzsKICAgY29uc3QgaW50IHBheWxvYWRfdHlwZV87CiAgIGNvbnN0IGJvb2wgc2Vu
ZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXzsKKyAgY29uc3QgYm9vbCB1c2VfbGlua19jYXBhY2l0
eV9mb3JfYWRhcHRhdGlvbl87CiAgIGNvbnN0IGJvb2wgYWRqdXN0X2JhbmR3aWR0aF87CiAgIGJv
b2wgYml0cmF0ZV9jaGFuZ2VkXzsKICAgZmxvYXQgcGFja2V0X2xvc3NfcmF0ZV87CisgIGNvbnN0
IGZsb2F0IG1pbl9wYWNrZXRfbG9zc19yYXRlXzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPE5l
d1BhY2tldExvc3NSYXRlT3B0aW1pemVyPiBuZXdfcGFja2V0X2xvc3Nfb3B0aW1pemVyXzsKICAg
c3RkOjp2ZWN0b3I8aW50MTZfdD4gaW5wdXRfYnVmZmVyXzsKICAgT3B1c0VuY0luc3QqIGluc3Rf
OwogICB1aW50MzJfdCBmaXJzdF90aW1lc3RhbXBfaW5fYnVmZmVyXzsKQEAgLTE3MCw2ICsyMDIs
NyBAQCBjbGFzcyBBdWRpb0VuY29kZXJPcHVzSW1wbCBmaW5hbCA6IHB1YmxpYyBBdWRpb0VuY29k
ZXIgewogICBhYnNsOjpvcHRpb25hbDxzaXplX3Q+IG92ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXRf
OwogICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8U21vb3RoaW5nRmlsdGVyPiBiaXRyYXRlX3Ntb290
aGVyXzsKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gYml0cmF0ZV9zbW9vdGhlcl9sYXN0X3Vw
ZGF0ZV90aW1lXzsKKyAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGlua19jYXBhY2l0eV9hbGxv
Y2F0aW9uX2Jwc187CiAgIGludCBjb25zZWN1dGl2ZV9kdHhfZnJhbWVzXzsKIAogICBmcmllbmQg
c3RydWN0IEF1ZGlvRW5jb2Rlck9wdXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9h
dWRpb19lbmNvZGVyX29wdXNfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3Mvb3B1cy9hdWRpb19l
bmNvZGVyX29wdXNfdW5pdHRlc3QuY2MKaW5kZXggN2E2ZDVmZGE0YmJjMTYxNDFhYjg0YTkzNWNk
NzMzNGVkNzliNzdkZS4uZDVjMmM4NGYxZmY3MTNhMWJjYjYxNzAxYjE1NTg2MjZhNmIyMTZjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL29wdXMvYXVkaW9fZW5jb2Rlcl9vcHVzX3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9vcHVzL2F1ZGlvX2VuY29kZXJfb3B1c191bml0dGVzdC5j
YwpAQCAtMjcyLDYgKzI3Miw1MSBAQCBURVNUKEF1ZGlvRW5jb2Rlck9wdXNUZXN0LCBQYWNrZXRM
b3NzUmF0ZU9wdGltaXplZCkgewogICAvLyBjbGFuZy1mb3JtYXQgb24KIH0KIAorVEVTVChBdWRp
b0VuY29kZXJPcHVzVGVzdCwgUGFja2V0TG9zc1JhdGVMb3dlckJvdW5kZWQpIHsKKyAgdGVzdDo6
U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1B
dWRpby1PcHVzTWluUGFja2V0TG9zc1JhdGUvRW5hYmxlZC01LyIpOworICBhdXRvIHN0YXRlcyA9
IENyZWF0ZUNvZGVjKDEpOworICBhdXRvIEkgPSBbXShmbG9hdCBhLCBmbG9hdCBiKSB7IHJldHVy
biBJbnRlcnZhbFN0ZXBzKGEsIGIsIDEwKTsgfTsKKyAgY29uc3RleHByIGZsb2F0IGVwcyA9IDFl
LThmOworCisgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0
YXRlcy5nZXQoKSwgSSgwLjAwZiAgICAgICwgMC4wMWYgLSBlcHMpLCAwLjA1Zik7CisgIFRlc3RT
ZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIEkoMC4wMWYgKyBlcHMsIDAuMDZmIC0gZXBz
KSwgMC4wNWYpOworICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3RhdGVzLmdldCgpLCBJKDAuMDZm
ICsgZXBzLCAwLjExZiAtIGVwcyksIDAuMDVmKTsKKyAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0
YXRlcy5nZXQoKSwgSSgwLjExZiArIGVwcywgMC4yMmYgLSBlcHMpLCAwLjEwZik7CisgIFRlc3RT
ZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIEkoMC4yMmYgKyBlcHMsIDEuMDBmICAgICAg
KSwgMC4yMGYpOworCisgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIEkoMS4w
MGYgICAgICAsIDAuMThmICsgZXBzKSwgMC4yMGYpOworICBUZXN0U2V0UGFja2V0TG9zc1JhdGUo
c3RhdGVzLmdldCgpLCBJKDAuMThmIC0gZXBzLCAwLjA5ZiArIGVwcyksIDAuMTBmKTsKKyAgVGVz
dFNldFBhY2tldExvc3NSYXRlKHN0YXRlcy5nZXQoKSwgSSgwLjA5ZiAtIGVwcywgMC4wNGYgKyBl
cHMpLCAwLjA1Zik7CisgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0ZXMuZ2V0KCksIEkoMC4w
NGYgLSBlcHMsIDAuMDFmICsgZXBzKSwgMC4wNWYpOworICBUZXN0U2V0UGFja2V0TG9zc1JhdGUo
c3RhdGVzLmdldCgpLCBJKDAuMDFmIC0gZXBzLCAwLjAwZiAgICAgICksIDAuMDVmKTsKKyAgLy8g
Y2xhbmctZm9ybWF0IG9uCit9CisKK1RFU1QoQXVkaW9FbmNvZGVyT3B1c1Rlc3QsIE5ld1BhY2tl
dExvc3NSYXRlT3B0aW1pemF0aW9uKSB7CisgIHsKKyAgICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFs
cyBvdmVycmlkZV9maWVsZF90cmlhbHMoCisgICAgICAgICJXZWJSVEMtQXVkaW8tTmV3T3B1c1Bh
Y2tldExvc3NSYXRlT3B0aW1pemF0aW9uL0VuYWJsZWQtNS0xNS0wLjUvIik7CisgICAgYXV0byBz
dGF0ZXMgPSBDcmVhdGVDb2RlYygxKTsKKworICAgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShzdGF0
ZXMuZ2V0KCksIHswLjAwZn0sIDAuMDVmKTsKKyAgICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3Rh
dGVzLmdldCgpLCB7MC4xMmZ9LCAwLjA2Zik7CisgICAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0
YXRlcy5nZXQoKSwgezAuMjJmfSwgMC4xMWYpOworICAgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShz
dGF0ZXMuZ2V0KCksIHswLjUwZn0sIDAuMTVmKTsKKyAgfQorICB7CisgICAgdGVzdDo6U2NvcGVk
RmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAgICAiV2ViUlRDLUF1ZGlv
LU5ld09wdXNQYWNrZXRMb3NzUmF0ZU9wdGltaXphdGlvbi9FbmFibGVkLyIpOworICAgIGF1dG8g
c3RhdGVzID0gQ3JlYXRlQ29kZWMoMSk7CisKKyAgICBUZXN0U2V0UGFja2V0TG9zc1JhdGUoc3Rh
dGVzLmdldCgpLCB7MC4wMGZ9LCAwLjAxZik7CisgICAgVGVzdFNldFBhY2tldExvc3NSYXRlKHN0
YXRlcy5nZXQoKSwgezAuMTJmfSwgMC4xMmYpOworICAgIFRlc3RTZXRQYWNrZXRMb3NzUmF0ZShz
dGF0ZXMuZ2V0KCksIHswLjIyZn0sIDAuMjBmKTsKKyAgICBUZXN0U2V0UGFja2V0TG9zc1JhdGUo
c3RhdGVzLmdldCgpLCB7MC41MGZ9LCAwLjIwZik7CisgIH0KK30KKwogVEVTVChBdWRpb0VuY29k
ZXJPcHVzVGVzdCwgU2V0UmVjZWl2ZXJGcmFtZUxlbmd0aFJhbmdlKSB7CiAgIGF1dG8gc3RhdGVz
ID0gQ3JlYXRlQ29kZWMoMik7CiAgIC8vIEJlZm9yZSBjYWxsaW5nIHRvIHxTZXRSZWNlaXZlckZy
YW1lTGVuZ3RoUmFuZ2V8LApAQCAtNDQ2LDYgKzQ5MSw1NyBAQCBURVNUKEF1ZGlvRW5jb2Rlck9w
dXNUZXN0LCBCaXRyYXRlQm91bmRlZCkgewogICBFWFBFQ1RfRVEoa01heEJpdHJhdGVCcHMsIHN0
YXRlcy0+ZW5jb2Rlci0+R2V0VGFyZ2V0Qml0cmF0ZSgpKTsKIH0KIAorVEVTVChBdWRpb0VuY29k
ZXJPcHVzVGVzdCwgTWluUGFja2V0TG9zc1JhdGUpIHsKKyAgY29uc3RleHByIGZsb2F0IGtEZWZh
dWx0TWluUGFja2V0TG9zc1JhdGUgPSAwLjAxOworICB7CisgICAgdGVzdDo6U2NvcGVkRmllbGRU
cmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAgICAiV2ViUlRDLUF1ZGlvLU9wdXNN
aW5QYWNrZXRMb3NzUmF0ZS9FbmFibGVkLyIpOworICAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQ29k
ZWMoMSk7CisgICAgRVhQRUNUX0VRKGtEZWZhdWx0TWluUGFja2V0TG9zc1JhdGUsIHN0YXRlcy0+
ZW5jb2Rlci0+cGFja2V0X2xvc3NfcmF0ZSgpKTsKKyAgfQorICB7CisgICAgdGVzdDo6U2NvcGVk
RmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAgICAiV2ViUlRDLUF1ZGlv
LU9wdXNNaW5QYWNrZXRMb3NzUmF0ZS9FbmFibGVkLTIwMC8iKTsKKyAgICBhdXRvIHN0YXRlcyA9
IENyZWF0ZUNvZGVjKDEpOworICAgIEVYUEVDVF9FUShrRGVmYXVsdE1pblBhY2tldExvc3NSYXRl
LCBzdGF0ZXMtPmVuY29kZXItPnBhY2tldF9sb3NzX3JhdGUoKSk7CisgIH0KKyAgeworICAgIHRl
c3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscygKKyAgICAgICAgIldl
YlJUQy1BdWRpby1PcHVzTWluUGFja2V0TG9zc1JhdGUvRW5hYmxlZC01MC8iKTsKKyAgICBjb25z
dGV4cHIgZmxvYXQga01pblBhY2tldExvc3NSYXRlID0gMC41OworICAgIGF1dG8gc3RhdGVzID0g
Q3JlYXRlQ29kZWMoMSk7CisgICAgRVhQRUNUX0VRKGtNaW5QYWNrZXRMb3NzUmF0ZSwgc3RhdGVz
LT5lbmNvZGVyLT5wYWNrZXRfbG9zc19yYXRlKCkpOworICB9Cit9CisKK1RFU1QoQXVkaW9FbmNv
ZGVyT3B1c1Rlc3QsIE5ld1BhY2tldExvc3NSYXRlT3B0aW1pemVyKSB7CisgIHsKKyAgICBhdXRv
IHN0YXRlcyA9IENyZWF0ZUNvZGVjKDEpOworICAgIGF1dG8gb3B0aW1pemVyID0gc3RhdGVzLT5l
bmNvZGVyLT5uZXdfcGFja2V0X2xvc3Nfb3B0aW1pemVyKCk7CisgICAgRVhQRUNUX0VRKG51bGxw
dHIsIG9wdGltaXplcik7CisgIH0KKyAgeworICAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92
ZXJyaWRlX2ZpZWxkX3RyaWFscygKKyAgICAgICAgIldlYlJUQy1BdWRpby1OZXdPcHVzUGFja2V0
TG9zc1JhdGVPcHRpbWl6YXRpb24vRW5hYmxlZC8iKTsKKyAgICBhdXRvIHN0YXRlcyA9IENyZWF0
ZUNvZGVjKDEpOworICAgIGF1dG8gb3B0aW1pemVyID0gc3RhdGVzLT5lbmNvZGVyLT5uZXdfcGFj
a2V0X2xvc3Nfb3B0aW1pemVyKCk7CisgICAgQVNTRVJUX05FKG51bGxwdHIsIG9wdGltaXplcik7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMDEsIG9wdGltaXplci0+bWluX3BhY2tldF9sb3NzX3Jh
dGUoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMjAsIG9wdGltaXplci0+bWF4X3BhY2tldF9s
b3NzX3JhdGUoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMDAsIG9wdGltaXplci0+c2xvcGUo
KSk7CisgIH0KKyAgeworICAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxk
X3RyaWFscygKKyAgICAgICAgIldlYlJUQy1BdWRpby1OZXdPcHVzUGFja2V0TG9zc1JhdGVPcHRp
bWl6YXRpb24vRW5hYmxlZC0yLTUwLTAuNy8iKTsKKyAgICBhdXRvIHN0YXRlcyA9IENyZWF0ZUNv
ZGVjKDEpOworICAgIGF1dG8gb3B0aW1pemVyID0gc3RhdGVzLT5lbmNvZGVyLT5uZXdfcGFja2V0
X2xvc3Nfb3B0aW1pemVyKCk7CisgICAgQVNTRVJUX05FKG51bGxwdHIsIG9wdGltaXplcik7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDAuMDIsIG9wdGltaXplci0+bWluX3BhY2tldF9sb3NzX3JhdGUo
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNTAsIG9wdGltaXplci0+bWF4X3BhY2tldF9sb3Nz
X3JhdGUoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNzAsIG9wdGltaXplci0+c2xvcGUoKSk7
CisgIH0KK30KKwogLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29tcGxleGl0eSBhZGFwdGF0aW9uIGlu
IHRoZSBjb25maWcgd29ya3MgYXMgaW50ZW5kZWQuCiBURVNUKEF1ZGlvRW5jb2Rlck9wdXNUZXN0
LCBDb25maWdDb21wbGV4aXR5QWRhcHRhdGlvbikgewogICBBdWRpb0VuY29kZXJPcHVzQ29uZmln
IGNvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9fZGVjb2Rlcl9w
Y20xNmIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2RlY29kZXJfcGNtMTZiLmNjCmlu
ZGV4IGIwNzYyNGRmZmM1YzRlMzJjODM2M2VlMGE2Zjg3OTEwNTA0YTA1NjAuLjFkZDJmZjI4OWVl
MTAyODA5NjNjM2RiNWRlNTg1NDU4ODZjNjBkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9w
Y20xNmIvYXVkaW9fZGVjb2Rlcl9wY20xNmIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9h
dWRpb19kZWNvZGVyX3BjbTE2Yi5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19kZWNvZGVyX3BjbTE2Yi5oIgog
CisjaW5jbHVkZSA8dXRpbGl0eT4KKwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2Nv
ZGVjcy9sZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2RlY29kZXJfcGNt
MTZiLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2RlY29kZXJfcGNtMTZiLmgKaW5kZXgg
N2QyMzQyMjRlM2NkMDBkYWE4ZTgxYjhhZDMzNzRjMTc5MzE4NTkzOS4uOWI0NzhkODA2ZjdhYzYw
NWQxYTk0OTMzMTY4Y2IwZDI1MWZhNjE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2
Yi9hdWRpb19kZWNvZGVyX3BjbTE2Yi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVkaW9f
ZGVjb2Rlcl9wY20xNmIuaApAQCAtMTEsNyArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19DT0RJTkdfQ09ERUNTX1BDTTE2Ql9BVURJT19ERUNPREVSX1BDTTE2Ql9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX0NPRElOR19DT0RFQ1NfUENNMTZCX0FVRElPX0RFQ09ERVJfUENNMTZCX0hf
CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rv
cm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNz
L3BjbTE2Yi9hdWRpb19lbmNvZGVyX3BjbTE2Yi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvYXVk
aW9fZW5jb2Rlcl9wY20xNmIuY2MKaW5kZXggODMxZGFlZGM2M2Y5ZDFmNjJiZDMzY2ZmMTMzZWU4
ZDBmOGVhMzMyNi4uMTA2YWIxNjc5NDAyNTE4M2FkYTQwMTgxYjZkNDY1NDA5NTQ3MWIwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9hdWRpb19lbmNvZGVyX3BjbTE2Yi5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvcGNtMTZiL2F1ZGlvX2VuY29kZXJfcGNtMTZiLmNjCkBAIC0xMCwxMiAr
MTAsOSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9h
dWRpb19lbmNvZGVyX3BjbTE2Yi5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVk
ZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNt
MTZiL3BjbTE2Yi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiX2NvbW1vbi5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9wY20xNmIvcGNtMTZiX2NvbW1vbi5jYwppbmRleCA2ZDBmYzJkMDE1Y2M1ODg2
OGI2ZjhiMDFkZWRhZjhmZDExODk2NmM1Li44ZjhiYmE1MjdiZTQ1ZjkwYjk3MDhjOGExYzBiOWMz
ZTBlYmJhNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3BjbTE2Yl9jb21tb24u
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20xNmJfY29tbW9uLmNjCkBAIC0xMCw2ICsx
MCw5IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3Bj
bTE2Yl9jb21tb24uaCIKIAorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGluaXRpYWxp
emVyX2xpc3Q+CisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiB2b2lkIFBjbTE2QkFwcGVuZFN1cHBv
cnRlZENvZGVjU3BlY3Moc3RkOjp2ZWN0b3I8QXVkaW9Db2RlY1NwZWM+KiBzcGVjcykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL3BjbTE2Yi9wY20xNmJfY29tbW9uLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2Rl
Y3MvcGNtMTZiL3BjbTE2Yl9jb21tb24uaAppbmRleCA5ODBhOTk2NDA4ODY0MmRhYzg5MjJkZTgx
NjIzNmJiNDUwZWE2MDcxLi4zZmFlNzE3ZmYzMWQ5YzRjMWFlMzAxOTA5N2E1NTVhZDljNDY3OGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcGNtMTZiL3BjbTE2Yl9jb21tb24uaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvcGNtMTZiL3BjbTE2Yl9jb21tb24uaApAQCAtMTMsNyArMTMsNyBAQAogCiAj
aW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19kZWNv
ZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1hdC5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIHZvaWQgUGNtMTZCQXBwZW5kU3VwcG9ydGVkQ29kZWNT
cGVjcyhzdGQ6OnZlY3RvcjxBdWRpb0NvZGVjU3BlYz4qIHNwZWNzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2NvZGVjcy9yZWQvYXVkaW9fZW5jb2Rlcl9jb3B5X3JlZC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9y
ZWQvYXVkaW9fZW5jb2Rlcl9jb3B5X3JlZC5jYwppbmRleCAyNjAxZjI2ZTQ0ZmRkYWNkZGExOGY0
YWIwZWRiNzM0NDE3MGRiMmM2Li4xMjRlODExOTgxNzljZDNjYzA1ODI0YjY3NGQ5NzcyYzVkYzIy
N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvcmVkL2F1ZGlvX2VuY29kZXJfY29weV9yZWQu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9hdWRpb19lbmNvZGVyX2NvcHlfcmVkLmNjCkBAIC0x
MSw4ICsxMSw4IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9h
dWRpb19lbmNvZGVyX2NvcHlfcmVkLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KLQogI2luY2x1
ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9yZWQvYXVkaW9fZW5jb2Rlcl9jb3B5
X3JlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9hdWRpb19lbmNvZGVyX2NvcHlfcmVkLmgKaW5kZXgg
NDkyZWUzYWZiNDcxNzYzYjg3ZDI3NzdkNjA1ODMwNjk2ZGIyYjI3OS4uNWE2ODg3NmI4OThjMTQz
ZDU2YTEyMTNmOGJmNDYwZmEzMDcyOGU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9h
dWRpb19lbmNvZGVyX2NvcHlfcmVkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL3JlZC9hdWRpb19lbmNv
ZGVyX2NvcHlfcmVkLmgKQEAgLTExLDkgKzExLDEyIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9f
Q09ESU5HX0NPREVDU19SRURfQVVESU9fRU5DT0RFUl9DT1BZX1JFRF9IXwogI2RlZmluZSBNT0RV
TEVTX0FVRElPX0NPRElOR19DT0RFQ1NfUkVEX0FVRElPX0VOQ09ERVJfQ09QWV9SRURfSF8KIAor
I2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KLSNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
CisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2F1ZGlvX2VuY29kZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRl
L2F1ZGlvX2NvZGluZ19tb2R1bGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVs
ZS5oCmluZGV4IGI5ZjIyMjg4ZmQ5ZmNlMzJiNWYxZTVmOTc5YmU0N2YxY2RjNTAwYTMuLmY5ZmRi
YTVmNTExYjMzZDBhYjkwMmFhOWIyZWMwZGJkMDgxYTU4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2lu
Y2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29k
aW5nX21vZHVsZS5oCkBAIC0xNTQsNDAgKzE1NCw2IEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxl
IHsKICAgLy8gICBTZW5kZXIKICAgLy8KIAotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gaW50
MzJfdCBSZWdpc3RlclNlbmRDb2RlYygpCi0gIC8vIFJlZ2lzdGVycyBhIGNvZGVjLCBzcGVjaWZp
ZWQgYnkgfHNlbmRfY29kZWN8LCBhcyBzZW5kaW5nIGNvZGVjLgotICAvLyBUaGlzIEFQSSBjYW4g
YmUgY2FsbGVkIG11bHRpcGxlIG9mIHRpbWVzIHRvIHJlZ2lzdGVyIENvZGVjLiBUaGUgbGFzdCBj
b2RlYwotICAvLyByZWdpc3RlcmVkIG92ZXJ3cml0ZXMgdGhlIHByZXZpb3VzIG9uZXMuCi0gIC8v
IFRoZSBBUEkgY2FuIGFsc28gYmUgdXNlZCB0byBjaGFuZ2UgcGF5bG9hZCB0eXBlIGZvciBDTkcg
YW5kIFJFRCwgd2hpY2ggYXJlCi0gIC8vIHJlZ2lzdGVyZWQgYnkgZGVmYXVsdCB0byBkZWZhdWx0
IHBheWxvYWQgdHlwZXMuCi0gIC8vIE5vdGUgdGhhdCByZWdpc3RlcmluZyBDTkcgYW5kIFJFRCB3
b24ndCBvdmVyd3JpdGUgc3BlZWNoIGNvZGVjcy4KLSAgLy8gVGhpcyBBUEkgY2FuIGJlIGNhbGxl
ZCB0byBzZXQvY2hhbmdlIHRoZSBzZW5kIHBheWxvYWQtdHlwZSwgZnJhbWUtc2l6ZQotICAvLyBv
ciBlbmNvZGluZyByYXRlIChpZiBhcHBsaWNhYmxlIGZvciB0aGUgY29kZWMpLgotICAvLwotICAv
LyBOb3RlOiBJZiBhIHN0ZXJlbyBjb2RlYyBpcyByZWdpc3RlcmVkIGFzIHNlbmQgY29kZWMsIFZB
RC9EVFggd2lsbAotICAvLyBhdXRvbWF0aWNhbGx5IGJlIHR1cm5lZCBvZmYsIHNpbmNlIGl0IGlz
IG5vdCBzdXBwb3J0ZWQgZm9yIHN0ZXJlbyBzZW5kaW5nLgotICAvLwotICAvLyBOb3RlOiBJZiBh
IHNlY29uZGFyeSBlbmNvZGVyIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCwgYW5kIHRoZSBuZXcgc2Vu
ZC1jb2RlYwotICAvLyBoYXMgYSBzYW1wbGluZyByYXRlIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhl
IHNlY29uZGFyeSBlbmNvZGVyLCB0aGUKLSAgLy8gc2Vjb25kYXJ5IGVuY29kZXIgd2lsbCBiZSB1
bnJlZ2lzdGVyZWQuCi0gIC8vCi0gIC8vIElucHV0OgotICAvLyAgIC1zZW5kX2NvZGVjICAgICAg
ICAgOiBQYXJhbWV0ZXJzIG9mIHRoZSBjb2RlYyB0byBiZSByZWdpc3RlcmVkLCBjLmYuCi0gIC8v
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbl90eXBlcy5oIGZvciB0aGUgZGVmaW5pdGlv
biBvZgotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlY0luc3QuCi0gIC8vCi0gIC8v
IFJldHVybiB2YWx1ZToKLSAgLy8gICAtMSBpZiBmYWlsZWQgdG8gaW5pdGlhbGl6ZSwKLSAgLy8g
ICAgMCBpZiBzdWNjZWVkZWQuCi0gIC8vCi0gIHZpcnR1YWwgaW50MzJfdCBSZWdpc3RlclNlbmRD
b2RlYyhjb25zdCBDb2RlY0luc3QmIHNlbmRfY29kZWMpID0gMDsKLQotICAvLyBSZWdpc3RlcnMg
fGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyfCBhcyBlbmNvZGVyLiBUaGUgbmV3IGVuY29kZXIgd2ls
bAotICAvLyByZXBsYWNlIGFueSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgc3BlZWNoIGVuY29kZXIg
KGludGVybmFsIG9yIGV4dGVybmFsKS4KLSAgdmlydHVhbCB2b2lkIFJlZ2lzdGVyRXh0ZXJuYWxT
ZW5kQ29kZWMoCi0gICAgICBBdWRpb0VuY29kZXIqIGV4dGVybmFsX3NwZWVjaF9lbmNvZGVyKSA9
IDA7Ci0KICAgLy8gfG1vZGlmaWVyfCBpcyBjYWxsZWQgZXhhY3RseSBvbmNlIHdpdGggb25lIGFy
Z3VtZW50OiBhIHBvaW50ZXIgdG8gdGhlCiAgIC8vIHVuaXF1ZV9wdHIgdGhhdCBob2xkcyB0aGUg
Y3VycmVudCBlbmNvZGVyICh3aGljaCBpcyBudWxsIGlmIHRoZXJlIGlzIG5vCiAgIC8vIGN1cnJl
bnQgZW5jb2RlcikuIEZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGNhbGwsIHxtb2RpZmllcnwgaGFz
IGV4Y2x1c2l2ZQpAQCAtMjU3LDcxICsyMjMsNiBAQCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZSB7
CiAgIC8vCiAgIHZpcnR1YWwgaW50MzJfdCBBZGQxME1zRGF0YShjb25zdCBBdWRpb0ZyYW1lJiBh
dWRpb19mcmFtZSkgPSAwOwogCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAvLyAoUkVEKSBSZWR1
bmRhbnQgQ29kaW5nCi0gIC8vCi0KLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8vIGludDMyX3Qg
U2V0UkVEU3RhdHVzKCkKLSAgLy8gY29uZmlndXJlIFJFRCBzdGF0dXMgaS5lLiBvbi9vZmYuCi0g
IC8vCi0gIC8vIFJGQyAyMTk4IGRlc2NyaWJlcyBhIHNvbHV0aW9uIHdoaWNoIGhhcyBhIHNpbmds
ZSBwYXlsb2FkIHR5cGUgd2hpY2gKLSAgLy8gc2lnbmlmaWVzIGEgcGFja2V0IHdpdGggcmVkdW5k
YW5jeS4gVGhhdCBwYWNrZXQgdGhlbiBiZWNvbWVzIGEgY29udGFpbmVyLAotICAvLyBlbmNhcHN1
bGF0aW5nIG11bHRpcGxlIHBheWxvYWRzIGludG8gYSBzaW5nbGUgUlRQIHBhY2tldC4KLSAgLy8g
U3VjaCBhIHNjaGVtZSBpcyBmbGV4aWJsZSwgc2luY2UgYW55IGFtb3VudCBvZiByZWR1bmRhbmN5
IG1heSBiZQotICAvLyBlbmNhcHN1bGF0ZWQgd2l0aGluIGEgc2luZ2xlIHBhY2tldC4gIFRoZXJl
IGlzLCBob3dldmVyLCBhIHNtYWxsIG92ZXJoZWFkCi0gIC8vIHNpbmNlIGVhY2ggZW5jYXBzdWxh
dGVkIHBheWxvYWQgbXVzdCBiZSBwcmVjZWRlZCBieSBhIGhlYWRlciBpbmRpY2F0aW5nCi0gIC8v
IHRoZSB0eXBlIG9mIGRhdGEgZW5jbG9zZWQuCi0gIC8vCi0gIC8vIElucHV0OgotICAvLyAgIC1l
bmFibGVfcmVkICAgICAgICAgOiBpZiB0cnVlIFJFRCBpcyBlbmFibGVkLCBvdGhlcndpc2UgUkVE
IGlzCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLgotICAvLwotICAvLyBS
ZXR1cm4gdmFsdWU6Ci0gIC8vICAgLTEgaWYgZmFpbGVkIHRvIHNldCBSRUQgc3RhdHVzLAotICAv
LyAgICAwIGlmIHN1Y2NlZWRlZC4KLSAgLy8KLSAgdmlydHVhbCBpbnQzMl90IFNldFJFRFN0YXR1
cyhib29sIGVuYWJsZV9yZWQpID0gMDsKLQotICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8gYm9v
bCBSRURTdGF0dXMoKQotICAvLyBHZXQgUkVEIHN0YXR1cwotICAvLwotICAvLyBSZXR1cm4gdmFs
dWU6Ci0gIC8vICAgdHJ1ZSBpZiBSRUQgaXMgZW5hYmxlZCwKLSAgLy8gICBmYWxzZSBpZiBSRUQg
aXMgZGlzYWJsZWQuCi0gIC8vCi0gIHZpcnR1YWwgYm9vbCBSRURTdGF0dXMoKSBjb25zdCA9IDA7
Ci0KLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8vIChGRUMpIEZvcndhcmQgRXJyb3IgQ29ycmVj
dGlvbiAoY29kZWMgaW50ZXJuYWwpCi0gIC8vCi0KLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8v
IGludDMyX3QgU2V0Q29kZWNGRUMoKQotICAvLyBDb25maWd1cmVzIGNvZGVjIGludGVybmFsIEZF
QyBzdGF0dXMgaS5lLiBvbi9vZmYuIE5vIGVmZmVjdHMgb24gY29kZWNzIHRoYXQKLSAgLy8gZG8g
bm90IHByb3ZpZGUgaW50ZXJuYWwgRkVDLgotICAvLwotICAvLyBJbnB1dDoKLSAgLy8gICAtZW5h
YmxlX2ZlYyAgICAgICAgIDogaWYgdHJ1ZSBGRUMgd2lsbCBiZSBlbmFibGVkIG90aGVyd2lzZSB0
aGUgRkVDIGlzCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLgotICAvLwot
ICAvLyBSZXR1cm4gdmFsdWU6Ci0gIC8vICAgLTEgaWYgZmFpbGVkLCBvciB0aGUgY29kZWMgZG9l
cyBub3Qgc3VwcG9ydCBGRUMKLSAgLy8gICAgMCBpZiBzdWNjZWVkZWQuCi0gIC8vCi0gIHZpcnR1
YWwgaW50IFNldENvZGVjRkVDKGJvb2wgZW5hYmxlX2NvZGVjX2ZlYykgPSAwOwotCi0gIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotICAvLyBib29sIENvZGVjRkVDKCkKLSAgLy8gR2V0cyBzdGF0dXMgb2Yg
Y29kZWMgaW50ZXJuYWwgRkVDLgotICAvLwotICAvLyBSZXR1cm4gdmFsdWU6Ci0gIC8vICAgdHJ1
ZSBpZiBGRUMgaXMgZW5hYmxlZCwKLSAgLy8gICBmYWxzZSBpZiBGRUMgaXMgZGlzYWJsZWQuCi0g
IC8vCi0gIHZpcnR1YWwgYm9vbCBDb2RlY0ZFQygpIGNvbnN0ID0gMDsKLQogICAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KICAgLy8gaW50IFNldFBhY2tldExvc3NSYXRlKCkKICAgLy8gU2V0cyBleHBlY3Rl
ZCBwYWNrZXQgbG9zcyByYXRlIGZvciBlbmNvZGluZy4gU29tZSBlbmNvZGVycyBwcm92aWRlIHBh
Y2tldApAQCAtMzQzLDU1ICsyNDQsNiBAQCBjbGFzcyBBdWRpb0NvZGluZ01vZHVsZSB7CiAgIC8v
ICAgKFZBRCkgVm9pY2UgQWN0aXZpdHkgRGV0ZWN0aW9uCiAgIC8vCiAKLSAgLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCi0gIC8vIGludDMyX3QgU2V0VkFEKCkKLSAgLy8gSWYgRFRYIGlzIGVuYWJsZWQgJiB0
aGUgY29kZWMgZG9lcyBub3QgaGF2ZSBpbnRlcm5hbCBEVFgvVkFECi0gIC8vIFdlYlJ0YyBWQUQg
d2lsbCBiZSBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgYW5kIHxlbmFibGVfdmFkfCBpcyBpZ25vcmVk
LgotICAvLwotICAvLyBJZiBEVFggaXMgZGlzYWJsZWQgYnV0IFZBRCBpcyBlbmFibGVkIG5vIERU
WCBwYWNrZXRzIGFyZSBzZW5kLAotICAvLyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGNvZGVj
IGhhcyBpbnRlcm5hbCBEVFgvVkFEIG9yIG5vdC4gSW4gdGhpcwotICAvLyBjYXNlLCBXZWJSdGMg
VkFEIGlzIHJ1bm5pbmcgdG8gbGFiZWwgZnJhbWVzIGFzIGFjdGl2ZS9pbi1hY3RpdmUuCi0gIC8v
Ci0gIC8vIE5PVEUhIFZBRC9EVFggaXMgbm90IHN1cHBvcnRlZCB3aGVuIHNlbmRpbmcgc3RlcmVv
LgotICAvLwotICAvLyBJbnB1dHM6Ci0gIC8vICAgLWVuYWJsZV9kdHggICAgICAgICA6IGlmIHRy
dWUgRFRYIGlzIGVuYWJsZWQsCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyd2lz
ZSBEVFggaXMgZGlzYWJsZWQuCi0gIC8vICAgLWVuYWJsZV92YWQgICAgICAgICA6IGlmIHRydWUg
VkFEIGlzIGVuYWJsZWQsCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSBW
QUQgaXMgZGlzYWJsZWQuCi0gIC8vICAgLXZhZF9tb2RlICAgICAgICAgICA6IGRldGVybWluZXMg
dGhlIGFnZ3Jlc3NpdmVuZXNzIG9mIFZBRC4gQSBtb3JlCi0gIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgIGFnZ3Jlc3NpdmUgbW9kZSByZXN1bHRzIGluIG1vcmUgZnJhbWVzIGxhYmVsZWQKLSAg
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgYXMgaW4tYWN0aXZlLCBjLmYuIGRlZmluaXRpb24g
b2YKLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgQUNNVkFETW9kZSBpbiBhdWRpb19jb2Rp
bmdfbW9kdWxlX3R5cGVkZWZzLmgKLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHZh
bGlkIHZhbHVlcy4KLSAgLy8KLSAgLy8gUmV0dXJuIHZhbHVlOgotICAvLyAgIC0xIGlmIGZhaWxl
ZCB0byBzZXQgdXAgVkFEL0RUWCwKLSAgLy8gICAgMCBpZiBzdWNjZWVkZWQuCi0gIC8vCi0gIHZp
cnR1YWwgaW50MzJfdCBTZXRWQUQoY29uc3QgYm9vbCBlbmFibGVfZHR4ID0gdHJ1ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIGVuYWJsZV92YWQgPSBmYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBQ01WQURNb2RlIHZhZF9tb2RlID0gVkFETm9ybWFs
KSA9IDA7Ci0KLSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8vIGludDMyX3QgVkFEKCkKLSAgLy8g
R2V0IFZBRCBzdGF0dXMuCi0gIC8vCi0gIC8vIE91dHB1dHM6Ci0gIC8vICAgLWR0eF9lbmFibGVk
ICAgICAgICA6IGlzIHNldCB0byB0cnVlIGlmIERUWCBpcyBlbmFibGVkLCBvdGhlcndpc2UKLSAg
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvIGZhbHNlLgotICAvLyAgIC12YWRf
ZW5hYmxlZCAgICAgICAgOiBpcyBzZXQgdG8gdHJ1ZSBpZiBWQUQgaXMgZW5hYmxlZCwgb3RoZXJ3
aXNlCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byBmYWxzZS4KLSAgLy8g
ICAtdmFkX21vZGUgICAgICAgICAgICA6IGlzIHNldCB0byB0aGUgY3VycmVudCBhZ2dyZXNzaXZl
bmVzcyBvZiBWQUQuCi0gIC8vCi0gIC8vIFJldHVybiB2YWx1ZToKLSAgLy8gICAtMSBpZiBmYWls
cyB0byByZXRyaWV2ZSB0aGUgc2V0dGluZyBvZiBEVFgvVkFELAotICAvLyAgICAwIGlmIHN1Y2Nl
ZWRlZC4KLSAgLy8KLSAgdmlydHVhbCBpbnQzMl90IFZBRChib29sKiBkdHhfZW5hYmxlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICBib29sKiB2YWRfZW5hYmxlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICBBQ01WQURNb2RlKiB2YWRfbW9kZSkgY29uc3QgPSAwOwotCiAgIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwogICAvLyBpbnQzMl90IFJlZ2lzdGVyVkFEQ2FsbGJhY2soKQogICAvLyBDYWxsIHRoaXMg
bWV0aG9kIHRvIHJlZ2lzdGVyIGEgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkCkBA
IC00NTUsMjkgKzMwNyw2IEBAIGNsYXNzIEF1ZGlvQ29kaW5nTW9kdWxlIHsKICAgdmlydHVhbCBi
b29sIFJlZ2lzdGVyUmVjZWl2ZUNvZGVjKGludCBydHBfcGF5bG9hZF90eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2RwQXVkaW9Gb3JtYXQmIGF1ZGlvX2Zv
cm1hdCkgPSAwOwogCi0gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAvLyBpbnQzMl90IFJlZ2lzdGVy
UmVjZWl2ZUNvZGVjKCkKLSAgLy8gUmVnaXN0ZXIgcG9zc2libGUgZGVjb2RlcnMsIGNhbiBiZSBj
YWxsZWQgbXVsdGlwbGUgdGltZXMgZm9yCi0gIC8vIGNvZGVjcywgQ05HLU5CLCBDTkctV0IsIENO
Ry1TV0IsIEFWVCBhbmQgUkVELgotICAvLwotICAvLyBJbnB1dDoKLSAgLy8gICAtcmVjZWl2ZV9j
b2RlYyAgICAgIDogcGFyYW1ldGVycyBvZiB0aGUgY29kZWMgdG8gYmUgcmVnaXN0ZXJlZCwgYy5m
LgotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25fdHlwZXMuaCBmb3IgdGhlIGRl
ZmluaXRpb24gb2YKLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgQ29kZWNJbnN0LgotICAv
LwotICAvLyBSZXR1cm4gdmFsdWU6Ci0gIC8vICAgLTEgaWYgZmFpbGVkIHRvIHJlZ2lzdGVyIHRo
ZSBjb2RlYwotICAvLyAgICAwIGlmIHRoZSBjb2RlYyByZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseS4K
LSAgLy8KLSAgdmlydHVhbCBpbnQgUmVnaXN0ZXJSZWNlaXZlQ29kZWMoY29uc3QgQ29kZWNJbnN0
JiByZWNlaXZlX2NvZGVjKSA9IDA7Ci0KLSAgLy8gUmVnaXN0ZXIgYSBkZWNvZGVyOyBjYWxsIHJl
cGVhdGVkbHkgdG8gcmVnaXN0ZXIgbXVsdGlwbGUgZGVjb2RlcnMuIHxkZnwgaXMKLSAgLy8gYSBk
ZWNvZGVyIGZhY3RvcnkgdGhhdCByZXR1cm5zIGFuIGlTQUMgZGVjb2RlcjsgaXQgd2lsbCBiZSBj
YWxsZWQgb25jZSBpZgotICAvLyB0aGUgZGVjb2RlciBiZWluZyByZWdpc3RlcmVkIGlzIGlTQUMu
Ci0gIHZpcnR1YWwgaW50IFJlZ2lzdGVyUmVjZWl2ZUNvZGVjKAotICAgICAgY29uc3QgQ29kZWNJ
bnN0JiByZWNlaXZlX2NvZGVjLAotICAgICAgcnRjOjpGdW5jdGlvblZpZXc8c3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRGVjb2Rlcj4oKT4gaXNhY19mYWN0b3J5KSA9IDA7Ci0KICAgLy8gUmVnaXN0ZXJz
IGFuIGV4dGVybmFsIGRlY29kZXIuIFRoZSBuYW1lIGlzIG9ubHkgdXNlZCB0byBwcm92aWRlIGlu
Zm9ybWF0aW9uCiAgIC8vIGJhY2sgdG8gdGhlIGNhbGxlciBhYm91dCB0aGUgZGVjb2Rlci4gSGVu
Y2UsIHRoZSBuYW1lIGlzIGFyYml0cmFyeSwgYW5kIG1heQogICAvLyBiZSBlbXB0eS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZV90eXBlZGVmcy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxlX3R5cGVkZWZzLmgKaW5kZXggY2Q0MzUxYjA3
ZmYxYjk0MzQ1MDkwNDM5MDg3MzI5NmU2NzMzNTRlNC4uYmFmZmY3MmU1YWQ0YjZhY2YwMWVhMjgz
ZGU3YzA2MTU2MWE1ZjM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2Rpbmdf
bW9kdWxlX3R5cGVkZWZzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvaW5jbHVkZS9hdWRpb19jb2RpbmdfbW9kdWxl
X3R5cGVkZWZzLmgKQEAgLTEzLDYgKzEzLDggQEAKIAogI2luY2x1ZGUgPG1hcD4KIAorI2luY2x1
ZGUgInJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgiCisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KQEAgLTQzLDYgKzQ1LDg0IEBAIGVudW0gT3B1c0FwcGxpY2F0aW9uTW9k
ZSB7CiAgIGtBdWRpbyA9IDEsCiB9OwogCisvLyBTdGF0aXN0aWNzIGZvciBjYWxscyB0byBBdWRp
b0NvZGluZ01vZHVsZTo6UGxheW91dERhdGExME1zKCkuCitzdHJ1Y3QgQXVkaW9EZWNvZGluZ0Nh
bGxTdGF0cyB7CisgIEF1ZGlvRGVjb2RpbmdDYWxsU3RhdHMoKQorICAgICAgOiBjYWxsc190b19z
aWxlbmNlX2dlbmVyYXRvcigwKSwKKyAgICAgICAgY2FsbHNfdG9fbmV0ZXEoMCksCisgICAgICAg
IGRlY29kZWRfbm9ybWFsKDApLAorICAgICAgICBkZWNvZGVkX3BsYygwKSwKKyAgICAgICAgZGVj
b2RlZF9jbmcoMCksCisgICAgICAgIGRlY29kZWRfcGxjX2NuZygwKSwKKyAgICAgICAgZGVjb2Rl
ZF9tdXRlZF9vdXRwdXQoMCkge30KKworICBpbnQgY2FsbHNfdG9fc2lsZW5jZV9nZW5lcmF0b3I7
ICAvLyBOdW1iZXIgb2YgY2FsbHMgd2hlcmUgc2lsZW5jZSBnZW5lcmF0ZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBOZXRFcSB3YXMgZGlzZW5nYWdlZCBmcm9t
IGRlY29kaW5nLgorICBpbnQgY2FsbHNfdG9fbmV0ZXE7ICAgICAgICAgICAgICAvLyBOdW1iZXIg
b2YgY2FsbHMgdG8gTmV0RXEuCisgIGludCBkZWNvZGVkX25vcm1hbDsgIC8vIE51bWJlciBvZiBj
YWxscyB3aGVyZSBhdWRpbyBSVFAgcGFja2V0IGRlY29kZWQuCisgIGludCBkZWNvZGVkX3BsYzsg
ICAgIC8vIE51bWJlciBvZiBjYWxscyByZXN1bHRlZCBpbiBQTEMuCisgIGludCBkZWNvZGVkX2Nu
ZzsgIC8vIE51bWJlciBvZiBjYWxscyB3aGVyZSBjb21mb3J0IG5vaXNlIGdlbmVyYXRlZCBkdWUg
dG8gRFRYLgorICBpbnQgZGVjb2RlZF9wbGNfY25nOyAgICAgICAvLyBOdW1iZXIgb2YgY2FsbHMg
cmVzdWx0ZWQgd2hlcmUgUExDIGZhZGVkIHRvIENORy4KKyAgaW50IGRlY29kZWRfbXV0ZWRfb3V0
cHV0OyAgLy8gTnVtYmVyIG9mIGNhbGxzIHJldHVybmluZyBhIG11dGVkIHN0YXRlIG91dHB1dC4K
K307CisKKy8vIE5FVEVRIHN0YXRpc3RpY3MuCitzdHJ1Y3QgTmV0d29ya1N0YXRpc3RpY3Mgewor
ICAvLyBjdXJyZW50IGppdHRlciBidWZmZXIgc2l6ZSBpbiBtcworICB1aW50MTZfdCBjdXJyZW50
QnVmZmVyU2l6ZTsKKyAgLy8gcHJlZmVycmVkIChvcHRpbWFsKSBidWZmZXIgc2l6ZSBpbiBtcwor
ICB1aW50MTZfdCBwcmVmZXJyZWRCdWZmZXJTaXplOworICAvLyBhZGRpbmcgZXh0cmEgZGVsYXkg
ZHVlIHRvICJwZWFreSBqaXR0ZXIiCisgIGJvb2wgaml0dGVyUGVha3NGb3VuZDsKKyAgLy8gU3Rh
dHMgYmVsb3cgY29ycmVzcG9uZCB0byBzaW1pbGFybHktbmFtZWQgZmllbGRzIGluIHRoZSBXZWJS
VEMgc3RhdHMgc3BlYy4KKyAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1zdGF0cy8j
ZG9tLXJ0Y21lZGlhc3RyZWFtdHJhY2tzdGF0cworICB1aW50NjRfdCB0b3RhbFNhbXBsZXNSZWNl
aXZlZDsKKyAgdWludDY0X3QgY29uY2VhbGVkU2FtcGxlczsKKyAgdWludDY0X3QgY29uY2VhbG1l
bnRFdmVudHM7CisgIHVpbnQ2NF90IGppdHRlckJ1ZmZlckRlbGF5TXM7CisgIC8vIFN0YXRzIGJl
bG93IERPIE5PVCBjb3JyZXNwb25kIGRpcmVjdGx5IHRvIGFueXRoaW5nIGluIHRoZSBXZWJSVEMg
c3RhdHMKKyAgLy8gTG9zcyByYXRlIChuZXR3b3JrICsgbGF0ZSk7IGZyYWN0aW9uIGJldHdlZW4g
MCBhbmQgMSwgc2NhbGVkIHRvIFExNC4KKyAgdWludDE2X3QgY3VycmVudFBhY2tldExvc3NSYXRl
OworICAvLyBMYXRlIGxvc3MgcmF0ZTsgZnJhY3Rpb24gYmV0d2VlbiAwIGFuZCAxLCBzY2FsZWQg
dG8gUTE0LgorICB1bmlvbiB7CisgICAgUlRDX0RFUFJFQ0FURUQgdWludDE2X3QgY3VycmVudERp
c2NhcmRSYXRlOworICB9OworICAvLyBmcmFjdGlvbiAob2Ygb3JpZ2luYWwgc3RyZWFtKSBvZiBz
eW50aGVzaXplZCBhdWRpbyBpbnNlcnRlZCB0aHJvdWdoCisgIC8vIGV4cGFuc2lvbiAoaW4gUTE0
KQorICB1aW50MTZfdCBjdXJyZW50RXhwYW5kUmF0ZTsKKyAgLy8gZnJhY3Rpb24gKG9mIG9yaWdp
bmFsIHN0cmVhbSkgb2Ygc3ludGhlc2l6ZWQgc3BlZWNoIGluc2VydGVkIHRocm91Z2gKKyAgLy8g
ZXhwYW5zaW9uIChpbiBRMTQpCisgIHVpbnQxNl90IGN1cnJlbnRTcGVlY2hFeHBhbmRSYXRlOwor
ICAvLyBmcmFjdGlvbiBvZiBzeW50aGVzaXplZCBzcGVlY2ggaW5zZXJ0ZWQgdGhyb3VnaCBwcmUt
ZW1wdGl2ZSBleHBhbnNpb24KKyAgLy8gKGluIFExNCkKKyAgdWludDE2X3QgY3VycmVudFByZWVt
cHRpdmVSYXRlOworICAvLyBmcmFjdGlvbiBvZiBkYXRhIHJlbW92ZWQgdGhyb3VnaCBhY2NlbGVy
YXRpb24gKGluIFExNCkKKyAgdWludDE2X3QgY3VycmVudEFjY2VsZXJhdGVSYXRlOworICAvLyBm
cmFjdGlvbiBvZiBkYXRhIGNvbWluZyBmcm9tIHNlY29uZGFyeSBkZWNvZGluZyAoaW4gUTE0KQor
ICB1aW50MTZfdCBjdXJyZW50U2Vjb25kYXJ5RGVjb2RlZFJhdGU7CisgIC8vIEZyYWN0aW9uIG9m
IHNlY29uZGFyeSBkYXRhLCBpbmNsdWRpbmcgRkVDIGFuZCBSRUQsIHRoYXQgaXMgZGlzY2FyZGVk
IChpbgorICAvLyBRMTQpLiBEaXNjYXJkaW5nIG9mIHNlY29uZGFyeSBkYXRhIGNhbiBiZSBjYXVz
ZWQgYnkgdGhlIHJlY2VwdGlvbiBvZiB0aGUKKyAgLy8gcHJpbWFyeSBkYXRhLCBvYnNvbGV0aW5n
IHRoZSBzZWNvbmRhcnkgZGF0YS4gSXQgY2FuIGFsc28gYmUgY2F1c2VkIGJ5IGVhcmx5CisgIC8v
IG9yIGxhdGUgYXJyaXZhbCBvZiBzZWNvbmRhcnkgZGF0YS4KKyAgdWludDE2X3QgY3VycmVudFNl
Y29uZGFyeURpc2NhcmRlZFJhdGU7CisgIC8vIGNsb2NrLWRyaWZ0IGluIHBhcnRzLXBlci1taWxs
aW9uIChuZWdhdGl2ZSBvciBwb3NpdGl2ZSkKKyAgaW50MzJfdCBjbG9ja0RyaWZ0UFBNOworICAv
LyBhdmVyYWdlIHBhY2tldCB3YWl0aW5nIHRpbWUgaW4gdGhlIGppdHRlciBidWZmZXIgKG1zKQor
ICBpbnQgbWVhbldhaXRpbmdUaW1lTXM7CisgIC8vIG1lZGlhbiBwYWNrZXQgd2FpdGluZyB0aW1l
IGluIHRoZSBqaXR0ZXIgYnVmZmVyIChtcykKKyAgaW50IG1lZGlhbldhaXRpbmdUaW1lTXM7Cisg
IC8vIG1pbiBwYWNrZXQgd2FpdGluZyB0aW1lIGluIHRoZSBqaXR0ZXIgYnVmZmVyIChtcykKKyAg
aW50IG1pbldhaXRpbmdUaW1lTXM7CisgIC8vIG1heCBwYWNrZXQgd2FpdGluZyB0aW1lIGluIHRo
ZSBqaXR0ZXIgYnVmZmVyIChtcykKKyAgaW50IG1heFdhaXRpbmdUaW1lTXM7CisgIC8vIGFkZGVk
IHNhbXBsZXMgaW4gb2ZmIG1vZGUgZHVlIHRvIHBhY2tldCBsb3NzCisgIHNpemVfdCBhZGRlZFNh
bXBsZXM7CisgIC8vIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYnVmZmVyIGZsdXNoZXMKKyAgdWlu
dDY0X3QgcGFja2V0QnVmZmVyRmx1c2hlczsKKyAgLy8gbnVtYmVyIG9mIHNhbXBsZXMgZXhwYW5k
ZWQgZHVlIHRvIGRlbGF5ZWQgcGFja2V0cworICB1aW50NjRfdCBkZWxheWVkUGFja2V0T3V0YWdl
U2FtcGxlczsKK307CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIAogI2VuZGlmICAvLyBNT0RV
TEVTX0FVRElPX0NPRElOR19JTkNMVURFX0FVRElPX0NPRElOR19NT0RVTEVfVFlQRURFRlNfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2FjY2VsZXJhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hY2Nl
bGVyYXRlLmNjCmluZGV4IDE4MzUwYjBhNzg5NzEwNjQ2NTQ0OTdiZmRhNzYxZWExZDMwZmZhZjQu
LjYxNjFhOGY5MWJmMjk0ZmM0Y2NjNTJkZjRmYzIzYmZhZGIzZTZjODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2FjY2VsZXJhdGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5jYwpA
QCAtMTAsNyArMTAsMTAgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L2FjY2VsZXJhdGUuaCIKIAotI2luY2x1ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJvY2Vzc2lu
Zy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNzaW5nX2xpYnJhcnkuaCIKKyNpbmNsdWRlIDxhc3NlcnQu
aD4KKworI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hY2NlbGVyYXRlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9h
Y2NlbGVyYXRlLmgKaW5kZXggNTYwOTU2ODk1YjdkZjYzY2Q2NjVkYzRiYTE0MWFhOTMzOTU2MDY4
Yy4uMWEzYWY0MmIyZTlmM2M0Yzg4YjkxYTcwOGY0NDZkMTQxZTg2ZTI1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvYWNjZWxlcmF0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2FjY2VsZXJhdGUuaApA
QCAtMTEsMTMgKzExLDE1IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0FD
Q0VMRVJBVEVfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfQUNDRUxFUkFU
RV9IXwogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlf
dmVjdG9yLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aW1lX3N0cmV0Y2guaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
Ci0vLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KK2NsYXNzIEF1ZGlvTXVsdGlWZWN0b3I7CiBjbGFz
cyBCYWNrZ3JvdW5kTm9pc2U7CiAKIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgQWNjZWxl
cmF0ZSBvcGVyYXRpb24uIE1vc3Qgb2YgdGhlIHdvcmsgaXMgZG9uZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92
ZWN0b3IuaAppbmRleCA4NmY4MjgyMGNhN2E3N2JkNjZkMGM2NDBkMTk1MDY2ZGNlOWViYjI2Li5h
MmRkM2MzY2IxMGNmZDRjY2I1OGJiMmE4OGQwOTk3NzhiYmQ3MjAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0
aV92ZWN0b3IuaApAQCAtMTEsOCArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElO
R19ORVRFUV9BVURJT19NVUxUSV9WRUNUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJ
TkdfTkVURVFfQVVESU9fTVVMVElfVkVDVE9SX0hfCiAKLSNpbmNsdWRlIDxzdHJpbmcuaD4gIC8v
IEFjY2VzcyB0byBzaXplX3QuCi0KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJp
bmcuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fdmVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRp
b192ZWN0b3IuaAppbmRleCA4MjVhM2JjZWFjOWJlMGYzYjVlZDYwYTI3ZjU2OGU3NzNmMjkzZDMw
Li5kMGRiMzMyZGI2NWRlODQ4ZDMwMmYyMDY0YjMwMmZmMTFiMTAzYTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9hdWRpb192ZWN0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb192ZWN0b3Iu
aApAQCAtMTEsNyArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9B
VURJT19WRUNUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfQVVESU9f
VkVDVE9SX0hfCiAKLSNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIEFjY2VzcyB0byBzaXplX3QuCisj
aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxtZW1vcnk+
CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L2JhY2tncm91bmRfbm9pc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2JhY2tncm91bmRfbm9pc2UuaAppbmRl
eCA1OGVlY2FhNzA1Y2U4MjUyZGM4N2JiNzc1NGMyM2M3ZTIyOTJhY2U0Li44NGQ3ZWI5ZDc0NWFm
MzZhNDdjNDc2N2U5Y2ZhZDUzMGRiMTRlZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9iYWNr
Z3JvdW5kX25vaXNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYmFja2dyb3VuZF9ub2lzZS5oCkBAIC0x
NCwxMyArMTQsMTIgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIHNpemVfdAogI2luY2x1ZGUg
PG1lbW9yeT4KIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX211
bHRpX3ZlY3Rvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2luY2x1
ZGUvbmV0ZXEuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCiAvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KK2NsYXNzIEF1ZGlv
TXVsdGlWZWN0b3I7CiBjbGFzcyBQb3N0RGVjb2RlVmFkOwogCiAvLyBUaGlzIGNsYXNzIGhhbmRs
ZXMgZXN0aW1hdGlvbiBvZiBiYWNrZ3JvdW5kIG5vaXNlIHBhcmFtZXRlcnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9idWZmZXJfbGV2ZWxfZmlsdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYnVmZmVy
X2xldmVsX2ZpbHRlci5jYwppbmRleCA2ZThkYTBhMDFiOTVmYjBjYjk2ZjAzZTkzZmNmYmEyYTYw
YzVmMjE2Li4yZjk2NjE4NTM2MmY5NGVlZTljYmI2MDlmZTg4YzAzMDFmZjlkYmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9idWZmZXJfbGV2ZWxfZmlsdGVyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L2J1ZmZlcl9sZXZlbF9maWx0ZXIuY2MKQEAgLTEwLDcgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2J1ZmZlcl9sZXZlbF9maWx0ZXIuaCIKIAotI2luY2x1
ZGUgPGFsZ29yaXRobT4gIC8vIFByb3ZpZGUgYWNjZXNzIHRvIHN0ZDo6bWF4LgorI2luY2x1ZGUg
PHN0ZGludC5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvY29t
Zm9ydF9ub2lzZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2NvbWZvcnRfbm9pc2UuY2MKaW5kZXggYjM0MWFj
ZDVhNTBkNmU1OGI4ZGQyMzY1YWY1YzZkNmJkYTcyNDY4OS4uY2IyYjc0ZGJmMmIxOWEwYWY4ZjE1
M2M2OGU3NGU0Zjc4MDVmODljMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvY29tZm9ydF9ub2lz
ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9jb21mb3J0X25vaXNlLmNjCkBAIC0xMSwxMSArMTEsMTgg
QEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9jb21mb3J0X25vaXNlLmgi
CiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPG1l
bW9yeT4KIAotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlci5oIgorI2lu
Y2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
Y29kZWNzL2NuZy93ZWJydGNfY25nLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvYXVkaW9fdmVjdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvZGVjb2Rlcl9kYXRhYmFzZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2RzcF9oZWxwZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9zeW5jX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9jb21mb3J0X25vaXNlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9jb21mb3J0X25vaXNlLmgKaW5kZXggNTE2OTEyNDA0MGY2NzdjMDRmZWRj
YTEyYTA0MTlkYmMzODMyMDE5MS4uM2E5YmZkZTdhYWI1YjRlNjE4MTNkNWQ2OWVhNGY5MDYwMzgz
YmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvY29tZm9ydF9ub2lzZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2NvbWZvcnRfbm9pc2UuaApAQCAtMTEsMTIgKzExLDE0IEBACiAjaWZuZGVmIE1PRFVM
RVNfQVVESU9fQ09ESU5HX05FVEVRX0NPTUZPUlRfTk9JU0VfSF8KICNkZWZpbmUgTU9EVUxFU19B
VURJT19DT0RJTkdfTkVURVFfQ09NRk9SVF9OT0lTRV9IXwogCi0jaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CisKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCiAvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KK2NsYXNzIEF1ZGlvTXVsdGlW
ZWN0b3I7CiBjbGFzcyBEZWNvZGVyRGF0YWJhc2U7CiBjbGFzcyBTeW5jQnVmZmVyOwogc3RydWN0
IFBhY2tldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2Nyb3NzX2NvcnJlbGF0aW9uLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9jcm9zc19jb3JyZWxhdGlvbi5oCmluZGV4IGE3NDc3NzJjZmM0MzUyYmIyOGRh
NTI2NWYwMzljYTM0N2Y0NGUxYjYuLjljZThiZTgzYWVjZjBmNTJkZWFiN2NkYjJiNjNlNzNjOWNj
NjY3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2Nyb3NzX2NvcnJlbGF0aW9uLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvY3Jvc3NfY29ycmVsYXRpb24uaApAQCAtMTEsNyArMTEsOCBAQAogI2lmbmRl
ZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9DUk9TU19DT1JSRUxBVElPTl9IXwogI2RlZmlu
ZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9DUk9TU19DT1JSRUxBVElPTl9IXwogCi0jaW5j
bHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY2lzaW9uX2xvZ2ljLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
ZGVjaXNpb25fbG9naWMuY2MKaW5kZXggMzQ5ZmRhYjlmMTVkMDk3M2U5ZjhjMzkzZWRkNTZmNDNm
ODhmYjcxMi4uODNjMmIzYjkwYzU2OWVhYjNjYzExZDQ5MTk3MWNlYjA2OTMyZDNmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvZGVjaXNpb25fbG9naWMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVj
aXNpb25fbG9naWMuY2MKQEAgLTExLDggKzExLDggQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpYy5oIgogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0j
aW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2J1ZmZlcl9sZXZlbF9maWx0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmgiCkBAIC0yMCw4ICsyMCw5IEBACiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0X2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3N5bmNfYnVmZmVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRl
L21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mv
c2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Zp
ZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNp
c2lvbl9sb2dpYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjaXNpb25fbG9naWMuaAppbmRleCAzOTc2MWRh
MDcwMmI0MTliN2Q1NTU3M2YzMzJlNzY5N2QxM2Y0MjQ2Li4yYTUzMzU5NGIzMzgyZjQ3MWNlMDg4
YTg2ZjIyM2UxODVmOGI2ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dp
Yy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY2lzaW9uX2xvZ2ljLmgKQEAgLTEyLDcgKzEyLDYgQEAK
ICNkZWZpbmUgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfREVDSVNJT05fTE9HSUNfSF8KIAog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlZmluZXMuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9pbmNsdWRlL25ldGVxLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGlja190aW1lci5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjaXNp
b25fbG9naWNfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lvbl9sb2dpY191bml0dGVz
dC5jYwppbmRleCAwODcyMGQxNzY4ZjQ1NmQwMDA4MWIzMDA4N2UwZjEwNWFlZTE1NzU4Li4xODNi
OWM3OWM5MzU2MzMxZjA3ZDNmNjgwNmU5MWI4OTU3YzkwN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS9kZWNpc2lvbl9sb2dpY191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNpc2lv
bl9sb2dpY191bml0dGVzdC5jYwpAQCAtMzEsNyArMzEsNyBAQCBURVNUKERlY2lzaW9uTG9naWMs
IENyZWF0ZUFuZERlc3Ryb3kpIHsKICAgVGlja1RpbWVyIHRpY2tfdGltZXI7CiAgIFBhY2tldEJ1
ZmZlciBwYWNrZXRfYnVmZmVyKDEwLCAmdGlja190aW1lcik7CiAgIERlbGF5UGVha0RldGVjdG9y
IGRlbGF5X3BlYWtfZGV0ZWN0b3IoJnRpY2tfdGltZXIpOwotICBEZWxheU1hbmFnZXIgZGVsYXlf
bWFuYWdlcigyNDAsICZkZWxheV9wZWFrX2RldGVjdG9yLCAmdGlja190aW1lcik7CisgIERlbGF5
TWFuYWdlciBkZWxheV9tYW5hZ2VyKDI0MCwgMCwgJmRlbGF5X3BlYWtfZGV0ZWN0b3IsICZ0aWNr
X3RpbWVyKTsKICAgQnVmZmVyTGV2ZWxGaWx0ZXIgYnVmZmVyX2xldmVsX2ZpbHRlcjsKICAgRGVj
aXNpb25Mb2dpYyogbG9naWMgPSBEZWNpc2lvbkxvZ2ljOjpDcmVhdGUoCiAgICAgICBmc19oeiwg
b3V0cHV0X3NpemVfc2FtcGxlcywgZmFsc2UsICZkZWNvZGVyX2RhdGFiYXNlLCBwYWNrZXRfYnVm
ZmVyLApAQCAtNDgsNyArNDgsNyBAQCBURVNUKERlY2lzaW9uTG9naWMsIFBvc3Rwb25lRGVjb2Rp
bmdBZnRlckV4cGFuc2lvblNldHRpbmdzKSB7CiAgIFRpY2tUaW1lciB0aWNrX3RpbWVyOwogICBQ
YWNrZXRCdWZmZXIgcGFja2V0X2J1ZmZlcigxMCwgJnRpY2tfdGltZXIpOwogICBEZWxheVBlYWtE
ZXRlY3RvciBkZWxheV9wZWFrX2RldGVjdG9yKCZ0aWNrX3RpbWVyKTsKLSAgRGVsYXlNYW5hZ2Vy
IGRlbGF5X21hbmFnZXIoMjQwLCAmZGVsYXlfcGVha19kZXRlY3RvciwgJnRpY2tfdGltZXIpOwor
ICBEZWxheU1hbmFnZXIgZGVsYXlfbWFuYWdlcigyNDAsIDAsICZkZWxheV9wZWFrX2RldGVjdG9y
LCAmdGlja190aW1lcik7CiAgIEJ1ZmZlckxldmVsRmlsdGVyIGJ1ZmZlcl9sZXZlbF9maWx0ZXI7
CiAgIHsKICAgICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbCgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNvZGVy
X2RhdGFiYXNlLmNjCmluZGV4IDFmZDhjMDNjYTI0YTYzYmE1NTU5MGFhY2FjMzRhMDVjMDNmNWM2
YmEuLjA4OTBiZWI5MzQyZDY4MmZkY2U2Y2NiZGI5OGMwNDU3MWMxODM3NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVjb2Rl
cl9kYXRhYmFzZS5jYwpAQCAtMTAsOSArMTAsMTUgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJhc2UuaCIKIAotI2luY2x1ZGUgPHV0aWxpdHk+
ICAvLyBwYWlyCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNs
dWRlIDxsaXN0PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAK
KyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29k
ZWNzL2F1ZGlvX2RlY29kZXIuaCIKKyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9hdWRpb19mb3JtYXRfdG9fc3RyaW5nLmgiCkBAIC0xMDEs
NyArMTA3LDcgQEAgQXVkaW9EZWNvZGVyKiBEZWNvZGVyRGF0YWJhc2U6OkRlY29kZXJJbmZvOjpH
ZXREZWNvZGVyKCkgY29uc3QgewogfQogCiBib29sIERlY29kZXJEYXRhYmFzZTo6RGVjb2Rlcklu
Zm86OklzVHlwZShjb25zdCBjaGFyKiBuYW1lKSBjb25zdCB7Ci0gIHJldHVybiBTVFJfQ0FTRV9D
TVAoYXVkaW9fZm9ybWF0Xy5uYW1lLmNfc3RyKCksIG5hbWUpID09IDA7CisgIHJldHVybiBhYnNs
OjpFcXVhbHNJZ25vcmVDYXNlKGF1ZGlvX2Zvcm1hdF8ubmFtZSwgbmFtZSk7CiB9CiAKIGJvb2wg
RGVjb2RlckRhdGFiYXNlOjpEZWNvZGVySW5mbzo6SXNUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiBu
YW1lKSBjb25zdCB7CkBAIC0xMTAsNyArMTE2LDcgQEAgYm9vbCBEZWNvZGVyRGF0YWJhc2U6OkRl
Y29kZXJJbmZvOjpJc1R5cGUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIGNvbnN0IHsKIAogYWJz
bDo6b3B0aW9uYWw8RGVjb2RlckRhdGFiYXNlOjpEZWNvZGVySW5mbzo6Q25nRGVjb2Rlcj4KIERl
Y29kZXJEYXRhYmFzZTo6RGVjb2RlckluZm86OkNuZ0RlY29kZXI6OkNyZWF0ZShjb25zdCBTZHBB
dWRpb0Zvcm1hdCYgZm9ybWF0KSB7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19z
dHIoKSwgIkNOIikgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShmb3JtYXQu
bmFtZSwgIkNOIikpIHsKICAgICAvLyBDTiBoYXMgYSAxOjEgUlRQIGNsb2NrIHJhdGUgdG8gc2Ft
cGxlIHJhdGUgcmF0aW8uCiAgICAgY29uc3QgaW50IHNhbXBsZV9yYXRlX2h6ID0gZm9ybWF0LmNs
b2NrcmF0ZV9oejsKICAgICBSVENfRENIRUNLKHNhbXBsZV9yYXRlX2h6ID09IDgwMDAgfHwgc2Ft
cGxlX3JhdGVfaHogPT0gMTYwMDAgfHwKQEAgLTEyMywxMSArMTI5LDExIEBAIERlY29kZXJEYXRh
YmFzZTo6RGVjb2RlckluZm86OkNuZ0RlY29kZXI6OkNyZWF0ZShjb25zdCBTZHBBdWRpb0Zvcm1h
dCYgZm9ybWF0KSB7CiAKIERlY29kZXJEYXRhYmFzZTo6RGVjb2RlckluZm86OlN1YnR5cGUKIERl
Y29kZXJEYXRhYmFzZTo6RGVjb2RlckluZm86OlN1YnR5cGVGcm9tRm9ybWF0KGNvbnN0IFNkcEF1
ZGlvRm9ybWF0JiBmb3JtYXQpIHsKLSAgaWYgKFNUUl9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0
cigpLCAiQ04iKSA9PSAwKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5u
YW1lLCAiQ04iKSkgewogICAgIHJldHVybiBTdWJ0eXBlOjprQ29tZm9ydE5vaXNlOwotICB9IGVs
c2UgaWYgKFNUUl9DQVNFX0NNUChmb3JtYXQubmFtZS5jX3N0cigpLCAidGVsZXBob25lLWV2ZW50
IikgPT0gMCkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoZm9ybWF0Lm5h
bWUsICJ0ZWxlcGhvbmUtZXZlbnQiKSkgewogICAgIHJldHVybiBTdWJ0eXBlOjprRHRtZjsKLSAg
fSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAoZm9ybWF0Lm5hbWUuY19zdHIoKSwgInJlZCIpID09IDAp
IHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAicmVk
IikpIHsKICAgICByZXR1cm4gU3VidHlwZTo6a1JlZDsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9kZWxheV9tYW5hZ2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlfbWFuYWdlci5jYwpp
bmRleCBlNWViNTkyZWZhMTM0NzU2NWI2MmIwYjE5ZGE3NWY3MWEzMjAwZGQzLi42N2U2YTEzYzFk
NzY5NTI2ZDE3MTgyMjRhODc3YzJlNjQyZGM5M2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9k
ZWxheV9tYW5hZ2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFnZXIuY2MKQEAgLTEx
LDE0ICsxMSwxNSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5
X21hbmFnZXIuaCIKIAogI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPG1hdGguaD4KLQot
I2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIG1heCwgbWluCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp
bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bnVtZXJp
Yz4KKyNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJjb21tb25fYXVkaW8vc2lnbmFsX3By
b2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlfcGVha19kZXRlY3Rvci5oIgotI2luY2x1
ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXNfcHVibGljLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJzeXN0ZW1f
d3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgpAQCAtNjEsNiArNjIsNyBAQCBhYnNsOjpv
cHRpb25hbDxpbnQ+IEdldEZvcmNlZExpbWl0UHJvYmFiaWxpdHkoKSB7CiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIAogRGVsYXlNYW5hZ2VyOjpEZWxheU1hbmFnZXIoc2l6ZV90IG1heF9wYWNrZXRzX2lu
X2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlX21pbl90YXJnZXRf
ZGVsYXlfbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWxheVBlYWtEZXRlY3Rvciog
cGVha19kZXRlY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRpY2tUaW1l
ciogdGlja190aW1lcikKICAgICA6IGZpcnN0X3BhY2tldF9yZWNlaXZlZF8oZmFsc2UpLApAQCAt
NjgsMTMgKzcwLDE0IEBAIERlbGF5TWFuYWdlcjo6RGVsYXlNYW5hZ2VyKHNpemVfdCBtYXhfcGFj
a2V0c19pbl9idWZmZXIsCiAgICAgICBpYXRfdmVjdG9yXyhrTWF4SWF0ICsgMSwgMCksCiAgICAg
ICBpYXRfZmFjdG9yXygwKSwKICAgICAgIHRpY2tfdGltZXJfKHRpY2tfdGltZXIpLAorICAgICAg
YmFzZV9taW5fdGFyZ2V0X2RlbGF5X21zXyhiYXNlX21pbl90YXJnZXRfZGVsYXlfbXMpLAogICAg
ICAgYmFzZV90YXJnZXRfbGV2ZWxfKDQpLCAgICAgICAgICAgICAgICAgICAvLyBJbiBRMCBkb21h
aW4uCiAgICAgICB0YXJnZXRfbGV2ZWxfKGJhc2VfdGFyZ2V0X2xldmVsXyA8PCA4KSwgIC8vIElu
IFE4IGRvbWFpbi4KICAgICAgIHBhY2tldF9sZW5fbXNfKDApLAogICAgICAgc3RyZWFtaW5nX21v
ZGVfKGZhbHNlKSwKICAgICAgIGxhc3Rfc2VxX25vXygwKSwKICAgICAgIGxhc3RfdGltZXN0YW1w
XygwKSwKLSAgICAgIG1pbmltdW1fZGVsYXlfbXNfKDApLAorICAgICAgbWluaW11bV9kZWxheV9t
c18oYmFzZV9taW5fdGFyZ2V0X2RlbGF5X21zXyksCiAgICAgICBtYXhpbXVtX2RlbGF5X21zXyh0
YXJnZXRfbGV2ZWxfKSwKICAgICAgIGlhdF9jdW11bGF0aXZlX3N1bV8oMCksCiAgICAgICBtYXhf
aWF0X2N1bXVsYXRpdmVfc3VtXygwKSwKQEAgLTg0LDYgKzg3LDggQEAgRGVsYXlNYW5hZ2VyOjpE
ZWxheU1hbmFnZXIoc2l6ZV90IG1heF9wYWNrZXRzX2luX2J1ZmZlciwKICAgICAgICAgICBmaWVs
ZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8tTmV0RXFGcmFtZWxlbmd0aEV4cGVyaW1l
bnQiKSksCiAgICAgICBmb3JjZWRfbGltaXRfcHJvYmFiaWxpdHlfKEdldEZvcmNlZExpbWl0UHJv
YmFiaWxpdHkoKSkgewogICBhc3NlcnQocGVha19kZXRlY3Rvcik7ICAvLyBTaG91bGQgbmV2ZXIg
YmUgTlVMTC4KKyAgUlRDX0RDSEVDS19HRShiYXNlX21pbl90YXJnZXRfZGVsYXlfbXNfLCAwKTsK
KyAgUlRDX0RDSEVDS19MRShtaW5pbXVtX2RlbGF5X21zXywgbWF4aW11bV9kZWxheV9tc18pOwog
CiAgIFJlc2V0KCk7CiB9CkBAIC00ODQsNyArNDg5LDcgQEAgYm9vbCBEZWxheU1hbmFnZXI6OlNl
dE1pbmltdW1EZWxheShpbnQgZGVsYXlfbXMpIHsKICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
PigzICogbWF4X3BhY2tldHNfaW5fYnVmZmVyXyAqIHBhY2tldF9sZW5fbXNfIC8gNCkpKSB7CiAg
ICAgcmV0dXJuIGZhbHNlOwogICB9Ci0gIG1pbmltdW1fZGVsYXlfbXNfID0gZGVsYXlfbXM7Cisg
IG1pbmltdW1fZGVsYXlfbXNfID0gc3RkOjptYXgoZGVsYXlfbXMsIGJhc2VfbWluX3RhcmdldF9k
ZWxheV9tc18pOwogICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
ZGVsYXlfbWFuYWdlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlfbWFuYWdlci5oCmluZGV4IGNkNWZj
MDkwMzE2OTFmMjU5ZmRlNDNlMWMwMjNmMGMzMGFjYmYxZTUuLjJjODA4MWIwNzVmZTQxMzU3ZWE2
YzY0ZGJlMjA5MWUwNWQ0ODFmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X21hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9tYW5hZ2VyLmgKQEAgLTMxLDkgKzMxLDExIEBA
IGNsYXNzIERlbGF5TWFuYWdlciB7CiAKICAgLy8gQ3JlYXRlIGEgRGVsYXlNYW5hZ2VyIG9iamVj
dC4gTm90aWZ5IHRoZSBkZWxheSBtYW5hZ2VyIHRoYXQgdGhlIHBhY2tldAogICAvLyBidWZmZXIg
Y2FuIGhvbGQgbm8gbW9yZSB0aGFuIHxtYXhfcGFja2V0c19pbl9idWZmZXJ8IHBhY2tldHMgKGku
ZS4sIHRoaXMKLSAgLy8gaXMgdGhlIG51bWJlciBvZiBwYWNrZXQgc2xvdHMgaW4gdGhlIGJ1ZmZl
cikuIFN1cHBseSBhIFBlYWtEZXRlY3RvcgotICAvLyBvYmplY3QgdG8gdGhlIERlbGF5TWFuYWdl
ci4KKyAgLy8gaXMgdGhlIG51bWJlciBvZiBwYWNrZXQgc2xvdHMgaW4gdGhlIGJ1ZmZlcikgYW5k
IHRoYXQgdGhlIHRhcmdldCBkZWxheQorICAvLyBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVx
dWFsIHRvIHxiYXNlX21pbl90YXJnZXRfZGVsYXlfbXN8LiBTdXBwbHkgYQorICAvLyBQZWFrRGV0
ZWN0b3Igb2JqZWN0IHRvIHRoZSBEZWxheU1hbmFnZXIuCiAgIERlbGF5TWFuYWdlcihzaXplX3Qg
bWF4X3BhY2tldHNfaW5fYnVmZmVyLAorICAgICAgICAgICAgICAgaW50IGJhc2VfbWluX3Rhcmdl
dF9kZWxheV9tcywKICAgICAgICAgICAgICAgIERlbGF5UGVha0RldGVjdG9yKiBwZWFrX2RldGVj
dG9yLAogICAgICAgICAgICAgICAgY29uc3QgVGlja1RpbWVyKiB0aWNrX3RpbWVyKTsKIApAQCAt
MTQ0LDYgKzE0Niw4IEBAIGNsYXNzIERlbGF5TWFuYWdlciB7CiAgIElBVFZlY3RvciBpYXRfdmVj
dG9yXzsgICAgICAgICAgICAgICAgLy8gSGlzdG9ncmFtIG9mIGludGVyLWFycml2YWwgdGltZXMu
CiAgIGludCBpYXRfZmFjdG9yXzsgIC8vIEZvcmdldHRpbmcgZmFjdG9yIGZvciB1cGRhdGluZyB0
aGUgSUFUIGhpc3RvZ3JhbSAoUTE1KS4KICAgY29uc3QgVGlja1RpbWVyKiB0aWNrX3RpbWVyXzsK
KyAgY29uc3QgaW50IGJhc2VfbWluX3RhcmdldF9kZWxheV9tc187ICAvLyBMb3dlciBib3VuZCBm
b3IgdGFyZ2V0X2xldmVsXyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBtaW5pbXVtX2RlbGF5X21zXy4KICAgLy8gVGltZSBlbGFwc2VkIHNpbmNlIGxhc3Qg
cGFja2V0LgogICBzdGQ6OnVuaXF1ZV9wdHI8VGlja1RpbWVyOjpTdG9wd2F0Y2g+IHBhY2tldF9p
YXRfc3RvcHdhdGNoXzsKICAgaW50IGJhc2VfdGFyZ2V0X2xldmVsXzsgIC8vIEN1cnJlbnRseSBw
cmVmZXJyZWQgYnVmZmVyIGxldmVsIGJlZm9yZSBwZWFrCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9kZWxheV9tYW5hZ2VyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVsYXlfbWFuYWdlcl91
bml0dGVzdC5jYwppbmRleCBlNGU4NjVmZTQ2YmUzMDAyODAzMmM3ZDU0NmM5M2M4MmFhZGMxYTEw
Li42MjgxYTE1Njc5OTg5M2MwMjUxNTVlYTU1ZTY3NWZiZTdlOWM2OTE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9kZWxheV9tYW5hZ2VyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2Rl
bGF5X21hbmFnZXJfdW5pdHRlc3QuY2MKQEAgLTI3LDYgKzI3LDcgQEAgdXNpbmcgOjp0ZXN0aW5n
OjpfOwogY2xhc3MgRGVsYXlNYW5hZ2VyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qgewog
IHByb3RlY3RlZDoKICAgc3RhdGljIGNvbnN0IGludCBrTWF4TnVtYmVyT2ZQYWNrZXRzID0gMjQw
OworICBzdGF0aWMgY29uc3QgaW50IGtNaW5EZWxheU1zID0gMDsKICAgc3RhdGljIGNvbnN0IGlu
dCBrVGltZVN0ZXBNcyA9IDEwOwogICBzdGF0aWMgY29uc3QgaW50IGtGcyA9IDgwMDA7CiAgIHN0
YXRpYyBjb25zdCBpbnQga0ZyYW1lU2l6ZU1zID0gMjA7CkBAIC01Niw3ICs1Nyw4IEBAIHZvaWQg
RGVsYXlNYW5hZ2VyVGVzdDo6U2V0VXAoKSB7CiAKIHZvaWQgRGVsYXlNYW5hZ2VyVGVzdDo6UmVj
cmVhdGVEZWxheU1hbmFnZXIoKSB7CiAgIEVYUEVDVF9DQUxMKGRldGVjdG9yXywgUmVzZXQoKSku
VGltZXMoMSk7Ci0gIGRtXy5yZXNldChuZXcgRGVsYXlNYW5hZ2VyKGtNYXhOdW1iZXJPZlBhY2tl
dHMsICZkZXRlY3Rvcl8sICZ0aWNrX3RpbWVyXykpOworICBkbV8ucmVzZXQobmV3IERlbGF5TWFu
YWdlcihrTWF4TnVtYmVyT2ZQYWNrZXRzLCBrTWluRGVsYXlNcywgJmRldGVjdG9yXywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnRpY2tfdGltZXJfKSk7CiB9CiAKIHZvaWQgRGVsYXlN
YW5hZ2VyVGVzdDo6U2V0UGFja2V0QXVkaW9MZW5ndGgoaW50IGxlbmd0X21zKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9wZWFrX2RldGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVs
YXlfcGVha19kZXRlY3Rvci5jYwppbmRleCBlYjlmNmQ1MzBkNWQ2NTFhYTU2NzIxZGU3ZmVjYjAx
YzIwN2VkYWEzLi44OTNjZTNlOGZkMjQ0NDhjZWE2NmM3ZWE0M2RlNmI3MDZjNzI0NjdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9wZWFrX2RldGVjdG9yLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2RlbGF5X3BlYWtfZGV0ZWN0b3IuY2MKQEAgLTEwLDEwICsxMCw5IEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9wZWFrX2RldGVjdG9yLmgiCiAKLSNp
bmNsdWRlIDxhbGdvcml0aG0+ICAvLyBtYXgKKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZl
X2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRf
dHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9k
ZWxheV9wZWFrX2RldGVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWxheV9wZWFrX2RldGVjdG9yLmgK
aW5kZXggOWRlZmNhNWFkMDIxNjQ3OGJjN2VkYzAzZDRkZjk5OGQ0ZDhmYzQxNS4uMjcyZDUwZWQ1
MDlmY2UyM2I1NjI2OGJkNWRmMTdkNmU3YWVjNmIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
ZGVsYXlfcGVha19kZXRlY3Rvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlbGF5X3BlYWtfZGV0ZWN0
b3IuaApAQCAtMTEsOCArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRF
UV9ERUxBWV9QRUFLX0RFVEVDVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05F
VEVRX0RFTEFZX1BFQUtfREVURUNUT1JfSF8KIAotI2luY2x1ZGUgPHN0cmluZy5oPiAgLy8gc2l6
ZV90Ci0KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRl
IDxsaXN0PgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHNw
X2hlbHBlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHNwX2hlbHBlci5oCmluZGV4IGVmYTJmOWNlMDY0NDdh
OGRlMmYyZTM0ODc5NTA2ZjU4MGE2OGFiY2IuLjgzNzk0NjEyYzVmZGY2MWE0ZTVkMzRhMTdiYTli
YTlhM2ZiOTg1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RzcF9oZWxwZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9kc3BfaGVscGVyLmgKQEAgLTExLDkgKzExLDExIEBACiAjaWZuZGVmIE1PRFVM
RVNfQVVESU9fQ09ESU5HX05FVEVRX0RTUF9IRUxQRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJ
T19DT0RJTkdfTkVURVFfRFNQX0hFTFBFUl9IXwogCi0jaW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBB
Y2Nlc3MgdG8gc2l6ZV90LgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5o
PgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVj
dG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvYXVkaW9fdmVjdG9y
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2R0bWZfYnVmZmVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS9kdG1mX2J1ZmZlci5oCmluZGV4IDZkZTUxMjc3MmYyZWE1MGQ4YjNlYjI4NWRkN2Y0NWE2
YzgwZWEwMWEuLjI0YjE0ZWNlNDE2YTFiNDZiM2RkNjc1NGZmODNlYWRmNWE3ZWM0ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL2R0bWZfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHRtZl9i
dWZmZXIuaApAQCAtMTEsOCArMTEsOSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19O
RVRFUV9EVE1GX0JVRkZFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19ORVRFUV9E
VE1GX0JVRkZFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxzdHJpbmc+ICAvLyBzaXplX3QKIAogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvZHRtZl90b25lX2dlbmVyYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2R0bWZfdG9uZV9nZW5lcmF0
b3IuY2MKaW5kZXggNmZkYjk1YWFjYWQ2N2JmMTMzY2VjNzE0NzFlNjk2NzAzYzMyOGFiOS4uNmM0
MTJlMzY0ZDg3ZDRjZjc0Nzk2ODQ1OTY3MmIzNGViMGNjZjkyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvZHRtZl90b25lX2dlbmVyYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1mX3RvbmVf
Z2VuZXJhdG9yLmNjCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9kdG1mX3RvbmVfZ2VuZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb192ZWN0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9h
cnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvZHRtZl90b25lX2dlbmVyYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZHRtZl90b25l
X2dlbmVyYXRvci5oCmluZGV4IGE3NzNmZjM1M2QzYjMwZGY2OTQ4ZGM3Y2FkNzQ4ZDMwZjkzMjZh
NTMuLjIyZTE2NmVmMGM0M2Y5YmI4MDEyNzQyMTczM2RlMzAxNjMzNjNkMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2R0bWZfdG9uZV9nZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kdG1m
X3RvbmVfZ2VuZXJhdG9yLmgKQEAgLTExLDYgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19DT0RJTkdfTkVURVFfRFRNRl9UT05FX0dFTkVSQVRPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FV
RElPX0NPRElOR19ORVRFUV9EVE1GX1RPTkVfR0VORVJBVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0
cnVjdG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvZXhwYW5kLmNjCmluZGV4IDVmNjcxYWRhNmI2MjAzNTI2ZTFmMjgzYmMwOTZmOTIx
M2M1NmE1NGMuLjRhMDZkMDljMWM2MWE3MjYxNDM3YTlhNzdjZDE3OGYzYzU5ZTAwNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmQuY2MK
QEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlIDxsaW1pdHM+ICAgICAvLyBudW1lcmljX2xpbWl0
czxUPgogCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUv
c2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2JhY2tncm91bmRfbm9pc2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9jcm9zc19jb3JyZWxhdGlvbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL2RzcF9oZWxwZXIuaCIKQEAgLTMyMiw4ICszMjMsNyBAQCB2b2lkIEV4
cGFuZDo6U2V0UGFyYW1ldGVyc0Zvck5vcm1hbEFmdGVyRXhwYW5kKCkgewogICBjdXJyZW50X2xh
Z19pbmRleF8gPSAwOwogICBsYWdfaW5kZXhfZGlyZWN0aW9uXyA9IDA7CiAgIHN0b3BfbXV0aW5n
XyA9IHRydWU7ICAvLyBEbyBub3QgbXV0ZSBzaWduYWwgYW55IG1vcmUuCi0gIHN0YXRpc3RpY3Nf
LT5Mb2dEZWxheWVkUGFja2V0T3V0YWdlRXZlbnQoCi0gICAgICBydGM6OmRjaGVja2VkX2Nhc3Q8
aW50PihleHBhbmRfZHVyYXRpb25fc2FtcGxlc18pIC8gKGZzX2h6XyAvIDEwMDApKTsKKyAgc3Rh
dGlzdGljc18tPkxvZ0RlbGF5ZWRQYWNrZXRPdXRhZ2VFdmVudChleHBhbmRfZHVyYXRpb25fc2Ft
cGxlc18sIGZzX2h6Xyk7CiB9CiAKIHZvaWQgRXhwYW5kOjpTZXRQYXJhbWV0ZXJzRm9yTWVyZ2VB
ZnRlckV4cGFuZCgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvZXhwYW5kLmgKaW5kZXggNGNmZTdiOWQ4Y2JlZWMxZTc5OTBiYjQyNzlhNjQwMTZiZTE0
OTYwMC4uMzBjMzRhMmMzMDBkZjE2MjQyOTUzMWEwZWQzMmVkOTIwMDFhZTY1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvZXhwYW5kLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kLmgKQEAgLTE0
LDEyICsxNCwxMyBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAot
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX211bHRpX3ZlY3Rvci5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2F1ZGlvX3ZlY3Rvci5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKIC8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgorY2xhc3MgQXVkaW9NdWx0aVZlY3RvcjsK
IGNsYXNzIEJhY2tncm91bmROb2lzZTsKIGNsYXNzIFJhbmRvbVZlY3RvcjsKIGNsYXNzIFN0YXRp
c3RpY3NDYWxjdWxhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kX3VtYV9sb2dn
ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL2V4cGFuZF91bWFfbG9nZ2VyLmgKaW5kZXggMDA5MDdkNGU1YTg0
MWI0YmZhYzU5MmQ3MmM5NmU3ODhkYzY5NjY1Mi4uYmQwNzljNmFiNzc1MGIwZjNjMWM1ZmE2NTM3
ODAzMThhZWQ3NjVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kX3VtYV9sb2dnZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmRfdW1hX2xvZ2dlci5oCkBAIC0xMCw2ICsxMCw3IEBA
CiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0VYUEFORF9VTUFfTE9HR0VSX0hf
CiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX0VYUEFORF9VTUFfTE9HR0VSX0hf
CiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3Ry
aW5nPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9leHBhbmRfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9leHBhbmRfdW5pdHRlc3QuY2MKaW5kZXggYjRlNjQ2NmU5MDQ1MDAyYmZmODA4YmRh
Y2VlZmE3MjZiN2QwZWE1Ni4uMDk5MTRkYWNhODIyOTVjODhkYWRlZTgxOTA0MTMxODY4MzJiNWEx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZXhwYW5kX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL2V4cGFuZF91bml0dGVzdC5jYwpAQCAtNTEsMTQgKzUxLDE2IEBAIFRFU1QoRXhwYW5k
LCBDcmVhdGVVc2luZ0ZhY3RvcnkpIHsKIG5hbWVzcGFjZSB7CiBjbGFzcyBGYWtlU3RhdGlzdGlj
c0NhbGN1bGF0b3IgOiBwdWJsaWMgU3RhdGlzdGljc0NhbGN1bGF0b3IgewogIHB1YmxpYzoKLSAg
dm9pZCBMb2dEZWxheWVkUGFja2V0T3V0YWdlRXZlbnQoaW50IG91dGFnZV9kdXJhdGlvbl9tcykg
b3ZlcnJpZGUgewotICAgIGxhc3Rfb3V0YWdlX2R1cmF0aW9uX21zXyA9IG91dGFnZV9kdXJhdGlv
bl9tczsKKyAgdm9pZCBMb2dEZWxheWVkUGFja2V0T3V0YWdlRXZlbnQoaW50IG51bV9zYW1wbGVz
LCBpbnQgZnNfaHopIG92ZXJyaWRlIHsKKyAgICBsYXN0X291dGFnZV9kdXJhdGlvbl9zYW1wbGVz
XyA9IG51bV9zYW1wbGVzOwogICB9CiAKLSAgaW50IGxhc3Rfb3V0YWdlX2R1cmF0aW9uX21zKCkg
Y29uc3QgeyByZXR1cm4gbGFzdF9vdXRhZ2VfZHVyYXRpb25fbXNfOyB9CisgIGludCBsYXN0X291
dGFnZV9kdXJhdGlvbl9zYW1wbGVzKCkgY29uc3QgeworICAgIHJldHVybiBsYXN0X291dGFnZV9k
dXJhdGlvbl9zYW1wbGVzXzsKKyAgfQogCiAgcHJpdmF0ZToKLSAgaW50IGxhc3Rfb3V0YWdlX2R1
cmF0aW9uX21zXyA9IDA7CisgIGludCBsYXN0X291dGFnZV9kdXJhdGlvbl9zYW1wbGVzXyA9IDA7
CiB9OwogCiAvLyBUaGlzIGlzIHRoZSBzYW1lIHNpemUgdGhhdCBpcyBnaXZlbiB0byB0aGUgU3lu
Y0J1ZmZlciBvYmplY3QgaW4gTmV0RXEuCkBAIC0xMjAsMTMgKzEyMiwxMiBAQCBURVNUX0YoRXhw
YW5kVGVzdCwgRGVsYXllZFBhY2tldE91dGFnZSkgewogICAgIEVYUEVDVF9FUSgwLCBleHBhbmRf
LlByb2Nlc3MoJm91dHB1dCkpOwogICAgIEVYUEVDVF9HVChvdXRwdXQuU2l6ZSgpLCAwdSk7CiAg
ICAgc3VtX291dHB1dF9sZW5fc2FtcGxlcyArPSBvdXRwdXQuU2l6ZSgpOwotICAgIEVYUEVDVF9F
USgwLCBzdGF0aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlvbl9tcygpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgc3RhdGlzdGljc18ubGFzdF9vdXRhZ2VfZHVyYXRpb25fc2FtcGxlcygpKTsKICAgfQog
ICBleHBhbmRfLlNldFBhcmFtZXRlcnNGb3JOb3JtYWxBZnRlckV4cGFuZCgpOwogICAvLyBDb252
ZXJ0IHxzdW1fb3V0cHV0X2xlbl9zYW1wbGVzfCB0byBtaWxsaXNlY29uZHMuCi0gIEVYUEVDVF9F
UShydGM6OmNoZWNrZWRfY2FzdDxpbnQ+KHN1bV9vdXRwdXRfbGVuX3NhbXBsZXMgLwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdF9zYW1wbGVfcmF0ZV9oel8gLyAxMDAw
KSksCi0gICAgICAgICAgICBzdGF0aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlvbl9tcygpKTsK
KyAgRVhQRUNUX0VRKHJ0Yzo6Y2hlY2tlZF9jYXN0PGludD4oc3VtX291dHB1dF9sZW5fc2FtcGxl
cyksCisgICAgICAgICAgICBzdGF0aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlvbl9zYW1wbGVz
KCkpOwogfQogCiAvLyBUaGlzIHRlc3QgaXMgc2ltaWxhciB0byBEZWxheWVkUGFja2V0T3V0YWdl
LCBidXQgZW5kcyBieSBjYWxsaW5nCkBAIC0xNDAsMTAgKzE0MSwxMCBAQCBURVNUX0YoRXhwYW5k
VGVzdCwgTG9zdFBhY2tldE91dGFnZSkgewogICAgIEVYUEVDVF9FUSgwLCBleHBhbmRfLlByb2Nl
c3MoJm91dHB1dCkpOwogICAgIEVYUEVDVF9HVChvdXRwdXQuU2l6ZSgpLCAwdSk7CiAgICAgc3Vt
X291dHB1dF9sZW5fc2FtcGxlcyArPSBvdXRwdXQuU2l6ZSgpOwotICAgIEVYUEVDVF9FUSgwLCBz
dGF0aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlvbl9tcygpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
c3RhdGlzdGljc18ubGFzdF9vdXRhZ2VfZHVyYXRpb25fc2FtcGxlcygpKTsKICAgfQogICBleHBh
bmRfLlNldFBhcmFtZXRlcnNGb3JNZXJnZUFmdGVyRXhwYW5kKCk7Ci0gIEVYUEVDVF9FUSgwLCBz
dGF0aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlvbl9tcygpKTsKKyAgRVhQRUNUX0VRKDAsIHN0
YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9uX3NhbXBsZXMoKSk7CiB9CiAKIC8vIFRoaXMg
dGVzdCBpcyBzaW1pbGFyIHRvIHRoZSBEZWxheWVkUGFja2V0T3V0YWdlIHRlc3QgYWJvdmUsIGJ1
dCB3aXRoIHRoZQpAQCAtMTYxLDEzICsxNjIsMTIgQEAgVEVTVF9GKEV4cGFuZFRlc3QsIENoZWNr
T3V0YWdlU3RhdHNBZnRlclJlc2V0KSB7CiAgICAgICBleHBhbmRfLlJlc2V0KCk7CiAgICAgICBz
dW1fb3V0cHV0X2xlbl9zYW1wbGVzID0gMDsKICAgICB9Ci0gICAgRVhQRUNUX0VRKDAsIHN0YXRp
c3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9uX21zKCkpOworICAgIEVYUEVDVF9FUSgwLCBzdGF0
aXN0aWNzXy5sYXN0X291dGFnZV9kdXJhdGlvbl9zYW1wbGVzKCkpOwogICB9CiAgIGV4cGFuZF8u
U2V0UGFyYW1ldGVyc0Zvck5vcm1hbEFmdGVyRXhwYW5kKCk7CiAgIC8vIENvbnZlcnQgfHN1bV9v
dXRwdXRfbGVuX3NhbXBsZXN8IHRvIG1pbGxpc2Vjb25kcy4KLSAgRVhQRUNUX0VRKHJ0Yzo6Y2hl
Y2tlZF9jYXN0PGludD4oc3VtX291dHB1dF9sZW5fc2FtcGxlcyAvCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh0ZXN0X3NhbXBsZV9yYXRlX2h6XyAvIDEwMDApKSwKLSAgICAg
ICAgICAgIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9uX21zKCkpOworICBFWFBFQ1Rf
RVEocnRjOjpjaGVja2VkX2Nhc3Q8aW50PihzdW1fb3V0cHV0X2xlbl9zYW1wbGVzKSwKKyAgICAg
ICAgICAgIHN0YXRpc3RpY3NfLmxhc3Rfb3V0YWdlX2R1cmF0aW9uX3NhbXBsZXMoKSk7CiB9CiAK
IG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9pbmNsdWRlL25ldGVxLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9pbmNsdWRlL25ldGVxLmgKaW5kZXggNTMwOTc1ZjNiOGU3ZDdjNTNiY2UzNzU0
MDFmYjI1ZmI1NzQ1MzE3ZS4uMjgyMGZkODQ3ODdkNTYzNmYxMWIxNzBjOTJhNWIzNzA1OGQxOWU1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvaW5jbHVkZS9uZXRlcS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL2luY2x1ZGUvbmV0ZXEuaApAQCAtNzIsNiArNzIsNyBAQCBzdHJ1Y3QgTmV0RXFMaWZldGlt
ZVN0YXRpc3RpY3MgewogICB1aW50NjRfdCBqaXR0ZXJfYnVmZmVyX2RlbGF5X21zID0gMDsKICAg
Ly8gQmVsb3cgc3RhdCBpcyBub3QgcGFydCBvZiB0aGUgc3BlYy4KICAgdWludDY0X3Qgdm9pY2Vf
Y29uY2VhbGVkX3NhbXBsZXMgPSAwOworICB1aW50NjRfdCBkZWxheWVkX3BhY2tldF9vdXRhZ2Vf
c2FtcGxlcyA9IDA7CiB9OwogCiAvLyBNZXRyaWNzIHRoYXQgZGVzY3JpYmUgdGhlIG9wZXJhdGlv
bnMgcGVyZm9ybWVkIGluIE5ldEVxLCBhbmQgdGhlIGludGVybmFsCkBAIC0xMTIsNiArMTEzLDcg
QEAgY2xhc3MgTmV0RXEgewogICAgIGJvb2wgZW5hYmxlX3Bvc3RfZGVjb2RlX3ZhZCA9IGZhbHNl
OwogICAgIHNpemVfdCBtYXhfcGFja2V0c19pbl9idWZmZXIgPSA1MDsKICAgICBpbnQgbWF4X2Rl
bGF5X21zID0gMjAwMDsKKyAgICBpbnQgbWluX2RlbGF5X21zID0gMDsKICAgICBib29sIGVuYWJs
ZV9mYXN0X2FjY2VsZXJhdGUgPSBmYWxzZTsKICAgICBib29sIGVuYWJsZV9tdXRlZF9zdGF0ZSA9
IGZhbHNlOwogICAgIGFic2w6Om9wdGlvbmFsPEF1ZGlvQ29kZWNQYWlySWQ+IGNvZGVjX3BhaXJf
aWQ7CkBAIC0yMzEsMTMgKzIzMyw2IEBAIGNsYXNzIE5ldEVxIHsKICAgLy8gc3RhdGlzdGljcyBh
cmUgbmV2ZXIgcmVzZXQuCiAgIHZpcnR1YWwgTmV0RXFPcGVyYXRpb25zQW5kU3RhdGUgR2V0T3Bl
cmF0aW9uc0FuZFN0YXRlKCkgY29uc3QgPSAwOwogCi0gIC8vIFdyaXRlcyB0aGUgY3VycmVudCBS
VENQIHN0YXRpc3RpY3MgdG8gfHN0YXRzfC4gVGhlIHN0YXRpc3RpY3MgYXJlIHJlc2V0Ci0gIC8v
IGFuZCBhIG5ldyByZXBvcnQgcGVyaW9kIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgY2FsbC4KLSAgdmly
dHVhbCB2b2lkIEdldFJ0Y3BTdGF0aXN0aWNzKFJ0Y3BTdGF0aXN0aWNzKiBzdGF0cykgPSAwOwot
Ci0gIC8vIFNhbWUgYXMgUnRjcFN0YXRpc3RpY3MoKSwgYnV0IGRvZXMgbm90IHJlc2V0IGFueXRo
aW5nLgotICB2aXJ0dWFsIHZvaWQgR2V0UnRjcFN0YXRpc3RpY3NOb1Jlc2V0KFJ0Y3BTdGF0aXN0
aWNzKiBzdGF0cykgPSAwOwotCiAgIC8vIEVuYWJsZXMgcG9zdC1kZWNvZGUgVkFELiBXaGVuIGVu
YWJsZWQsIEdldEF1ZGlvKCkgd2lsbCByZXR1cm4KICAgLy8ga091dHB1dFZBRFBhc3NpdmUgd2hl
biB0aGUgc2lnbmFsIGNvbnRhaW5zIG5vIHNwZWVjaC4KICAgdmlydHVhbCB2b2lkIEVuYWJsZVZh
ZCgpID0gMDsKQEAgLTI2NiwxMCArMjYxLDYgQEAgY2xhc3MgTmV0RXEgewogICAvLyBGbHVzaGVz
IGJvdGggdGhlIHBhY2tldCBidWZmZXIgYW5kIHRoZSBzeW5jIGJ1ZmZlci4KICAgdmlydHVhbCB2
b2lkIEZsdXNoQnVmZmVycygpID0gMDsKIAotICAvLyBDdXJyZW50IHVzYWdlIG9mIHBhY2tldC1i
dWZmZXIgYW5kIGl0J3MgbGltaXRzLgotICB2aXJ0dWFsIHZvaWQgUGFja2V0QnVmZmVyU3RhdGlz
dGljcyhpbnQqIGN1cnJlbnRfbnVtX3BhY2tldHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCogbWF4X251bV9wYWNrZXRzKSBjb25zdCA9IDA7Ci0KICAgLy8gRW5h
YmxlcyBOQUNLIGFuZCBzZXRzIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIE5BQ0sgbGlzdCwgd2hp
Y2ggc2hvdWxkIGJlCiAgIC8vIHBvc2l0aXZlIGFuZCBubyBsYXJnZXIgdGhhbiBOYWNrOjprTmFj
a0xpc3RTaXplTGltaXQuIElmIE5BQ0sgaXMgYWxyZWFkeQogICAvLyBlbmFibGVkIHRoZW4gdGhl
IG1heGltdW0gTkFDSyBsaXN0IHNpemUgaXMgbW9kaWZpZWQgYWNjb3JkaW5nbHkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS9tb2NrL21vY2tfZGVsYXlfbWFuYWdlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEv
bW9jay9tb2NrX2RlbGF5X21hbmFnZXIuaAppbmRleCA5YjJlZDQ5OGQ5ZGJmY2MyNDFhZTE0Zjdh
NzUyMDk2MDFjYWRlMDk3Li4yMDZjZWE3ZjEwZTdmNTY5YTQ1YzQ4NjM5MGM5Yjg3NDhhNWM1YjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9tb2NrL21vY2tfZGVsYXlfbWFuYWdlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL21vY2svbW9ja19kZWxheV9tYW5hZ2VyLmgKQEAgLTIwLDkgKzIwLDEzIEBA
IG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgTW9ja0RlbGF5TWFuYWdlciA6IHB1YmxpYyBEZWxh
eU1hbmFnZXIgewogIHB1YmxpYzoKICAgTW9ja0RlbGF5TWFuYWdlcihzaXplX3QgbWF4X3BhY2tl
dHNfaW5fYnVmZmVyLAorICAgICAgICAgICAgICAgICAgIGludCBiYXNlX21pbl90YXJnZXRfZGVs
YXlfbXMsCiAgICAgICAgICAgICAgICAgICAgRGVsYXlQZWFrRGV0ZWN0b3IqIHBlYWtfZGV0ZWN0
b3IsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgVGlja1RpbWVyKiB0aWNrX3RpbWVyKQotICAg
ICAgOiBEZWxheU1hbmFnZXIobWF4X3BhY2tldHNfaW5fYnVmZmVyLCBwZWFrX2RldGVjdG9yLCB0
aWNrX3RpbWVyKSB7fQorICAgICAgOiBEZWxheU1hbmFnZXIobWF4X3BhY2tldHNfaW5fYnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgYmFzZV9taW5fdGFyZ2V0X2RlbGF5X21zLAorICAgICAg
ICAgICAgICAgICAgICAgcGVha19kZXRlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgIHRpY2tf
dGltZXIpIHt9CiAgIHZpcnR1YWwgfk1vY2tEZWxheU1hbmFnZXIoKSB7IERpZSgpOyB9CiAgIE1P
Q0tfTUVUSE9EMChEaWUsIHZvaWQoKSk7CiAgIE1PQ0tfQ09OU1RfTUVUSE9EMChpYXRfdmVjdG9y
LCBjb25zdCBJQVRWZWN0b3ImKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmFja190cmFj
a2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvbmFja190cmFja2VyLmNjCmluZGV4IGM2MmNkZjg4ZTRkYzEz
ZDg0ZmUzMDExYmJlNjQzNWJhNDljOGY3YzQuLmUzZWNmZWFlZDI3MDczYzY2Y2EyYWUyYWEwZDJl
MWJkODQ2ZGIxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25hY2tfdHJhY2tlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9uYWNrX3RyYWNrZXIuY2MKQEAgLTEwLDkgKzEwLDkgQEAKIAogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25hY2tfdHJhY2tlci5oIgogCi0jaW5jbHVk
ZSA8YXNzZXJ0Lmg+ICAvLyBGb3IgYXNzZXJ0LgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8g
Rm9yIHN0ZDo6bWF4LgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+Cisj
aW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9uYWNrX3RyYWNrZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25hY2tfdHJh
Y2tlci5oCmluZGV4IDE5MzZhOTQ0Y2NiNTJiZTc0ZTU5ODJiOGRkZTM2Y2Y3YTMxYWMxZTMuLmQ3
YzZiMDg0MjIyY2ZjMmIwYzRmZGU3N2VlNDRjZDU4NjIyNzY5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL25hY2tfdHJhY2tlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25hY2tfdHJhY2tlci5oCkBA
IC0xMSwxMSArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFfTkFD
S19UUkFDS0VSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX05BQ0tfVFJB
Q0tFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8bWFwPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2luY2x1ZGUvYXVkaW9fY29kaW5nX21vZHVsZV90eXBlZGVmcy5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCisjaW5jbHVkZSAibW9kdWxl
cy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXNfcHVibGljLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvZ3Rlc3RfcHJvZF91dGlsLmgiCiAKIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRl
cS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL25ldGVxLmNjCmluZGV4IGNmMWM2YWE2NjUzNjQ1NTNmMzA0MDZi
NzZhYTQzMGJjNmYyMTllMjAuLjBlNjE0N2UyMzJjYjE0NzAxODViZGY5ODcyYTcwOGQ4NTU1ZWY2
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25l
dGVxLmNjCkBAIC0xMCw4ICsxMCw2IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9pbmNsdWRlL25ldGVxLmgiCiAKLSNpbmNsdWRlIDxtZW1vcnk+Ci0KICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBsLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9uZXRlcV9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfaW1wbC5jYwppbmRleCBmNDI4YmUx
YzNiYzgyNTBkY2QxNmNiZmUwODZhNjI5NDI3NmVmNDVmLi4yYTAyNWYzMDRlNTM3Y2UxMTgwMGI3
YzkxNjAwMzJlMTlkMjI0NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBsLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGwuY2MKQEAgLTExLDEzICsxMSwxNiBAQAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGwuaCIKIAogI2luY2x1
ZGUgPGFzc2VydC5oPgotCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+
CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPHV0aWxpdHk+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19k
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1
ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL2NvZGVjcy9jbmcvd2VicnRjX2NuZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL2FjY2VsZXJhdGUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9iYWNrZ3JvdW5kX25vaXNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvYnVmZmVyX2xldmVsX2ZpbHRlci5oIgpAQCAtNDAsMTUgKzQzLDE0IEBACiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zeW5jX2J1ZmZlci5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpY2tfdGltZXIuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aW1lX3N0cmV0Y2guaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aW1lc3RhbXBfc2NhbGVyLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9zYW5pdGl6ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL2F1ZGlvX2Zvcm1h
dF90b19zdHJpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vZmFsbHRocm91Z2guaCIK
ICNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFw
cGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC02
MSw2ICs2Myw3IEBAIE5ldEVxSW1wbDo6RGVwZW5kZW5jaWVzOjpEZXBlbmRlbmNpZXMoCiAgICAg
ICAgICAgbmV3IERlY29kZXJEYXRhYmFzZShkZWNvZGVyX2ZhY3RvcnksIGNvbmZpZy5jb2RlY19w
YWlyX2lkKSksCiAgICAgICBkZWxheV9wZWFrX2RldGVjdG9yKG5ldyBEZWxheVBlYWtEZXRlY3Rv
cih0aWNrX3RpbWVyLmdldCgpKSksCiAgICAgICBkZWxheV9tYW5hZ2VyKG5ldyBEZWxheU1hbmFn
ZXIoY29uZmlnLm1heF9wYWNrZXRzX2luX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25maWcubWluX2RlbGF5X21zLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlbGF5X3BlYWtfZGV0ZWN0b3IuZ2V0KCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGlja190aW1lci5nZXQoKSkpLAogICAgICAgZHRtZl9i
dWZmZXIobmV3IER0bWZCdWZmZXIoY29uZmlnLnNhbXBsZV9yYXRlX2h6KSksCkBAIC0zODUsMjAg
KzM4OCw2IEBAIE5ldEVxT3BlcmF0aW9uc0FuZFN0YXRlIE5ldEVxSW1wbDo6R2V0T3BlcmF0aW9u
c0FuZFN0YXRlKCkgY29uc3QgewogICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIE5ldEVxSW1w
bDo6R2V0UnRjcFN0YXRpc3RpY3MoUnRjcFN0YXRpc3RpY3MqIHN0YXRzKSB7Ci0gIHJ0Yzo6Q3Jp
dFNjb3BlIGxvY2soJmNyaXRfc2VjdF8pOwotICBpZiAoc3RhdHMpIHsKLSAgICBydGNwXy5HZXRT
dGF0aXN0aWNzKGZhbHNlLCBzdGF0cyk7Ci0gIH0KLX0KLQotdm9pZCBOZXRFcUltcGw6OkdldFJ0
Y3BTdGF0aXN0aWNzTm9SZXNldChSdGNwU3RhdGlzdGljcyogc3RhdHMpIHsKLSAgcnRjOjpDcml0
U2NvcGUgbG9jaygmY3JpdF9zZWN0Xyk7Ci0gIGlmIChzdGF0cykgewotICAgIHJ0Y3BfLkdldFN0
YXRpc3RpY3ModHJ1ZSwgc3RhdHMpOwotICB9Ci19Ci0KIHZvaWQgTmV0RXFJbXBsOjpFbmFibGVW
YWQoKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfc2VjdF8pOwogICBhc3NlcnQodmFk
Xy5nZXQoKSk7CkBAIC00NzMsMTIgKzQ2Miw2IEBAIHZvaWQgTmV0RXFJbXBsOjpGbHVzaEJ1ZmZl
cnMoKSB7CiAgIGZpcnN0X3BhY2tldF8gPSB0cnVlOwogfQogCi12b2lkIE5ldEVxSW1wbDo6UGFj
a2V0QnVmZmVyU3RhdGlzdGljcyhpbnQqIGN1cnJlbnRfbnVtX3BhY2tldHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1heF9udW1fcGFja2V0cykgY29uc3Qg
ewotICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0X3NlY3RfKTsKLSAgcGFja2V0X2J1ZmZlcl8t
PkJ1ZmZlclN0YXQoY3VycmVudF9udW1fcGFja2V0cywgbWF4X251bV9wYWNrZXRzKTsKLX0KLQog
dm9pZCBOZXRFcUltcGw6OkVuYWJsZU5hY2soc2l6ZV90IG1heF9uYWNrX2xpc3Rfc2l6ZSkgewog
ICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0X3NlY3RfKTsKICAgaWYgKCFuYWNrX2VuYWJsZWRf
KSB7CkBAIC01NzQsOCArNTU3LDYgQEAgaW50IE5ldEVxSW1wbDo6SW5zZXJ0UGFja2V0SW50ZXJu
YWwoY29uc3QgUlRQSGVhZGVyJiBydHBfaGVhZGVyLAogICAgIC8vIE5vdGU6IHxmaXJzdF9wYWNr
ZXRffCB3aWxsIGJlIGNsZWFyZWQgZnVydGhlciBkb3duIGluIHRoaXMgbWV0aG9kLCBvbmNlCiAg
ICAgLy8gdGhlIHBhY2tldCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgaW5zZXJ0ZWQgaW50byB0aGUg
cGFja2V0IGJ1ZmZlci4KIAotICAgIHJ0Y3BfLkluaXQocnRwX2hlYWRlci5zZXF1ZW5jZU51bWJl
cik7Ci0KICAgICAvLyBGbHVzaCB0aGUgcGFja2V0IGJ1ZmZlciBhbmQgRFRNRiBidWZmZXIuCiAg
ICAgcGFja2V0X2J1ZmZlcl8tPkZsdXNoKCk7CiAgICAgZHRtZl9idWZmZXJfLT5GbHVzaCgpOwpA
QCAtNTkwLDkgKzU3MSw2IEBAIGludCBOZXRFcUltcGw6Okluc2VydFBhY2tldEludGVybmFsKGNv
bnN0IFJUUEhlYWRlciYgcnRwX2hlYWRlciwKICAgICB0aW1lc3RhbXBfID0gbWFpbl90aW1lc3Rh
bXA7CiAgIH0KIAotICAvLyBVcGRhdGUgUlRDUCBzdGF0aXN0aWNzLCBvbmx5IGZvciByZWd1bGFy
IHBhY2tldHMuCi0gIHJ0Y3BfLlVwZGF0ZShydHBfaGVhZGVyLCByZWNlaXZlX3RpbWVzdGFtcCk7
Ci0KICAgaWYgKG5hY2tfZW5hYmxlZF8pIHsKICAgICBSVENfRENIRUNLKG5hY2tfKTsKICAgICBp
ZiAodXBkYXRlX3NhbXBsZV9yYXRlX2FuZF9jaGFubmVscykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvbmV0ZXFfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfaW1wbC5oCmluZGV4IDhlZjk3
Y2UwYWYzNzZmOTQxZWFkNGIxZWMzZWFmMWQ4ODk2ZWM5ZjMuLjUyNWFlNjE1ZDg1NmVmZDQyZWEx
NjgzNzhiOTIyNGMwMzYyZTE3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGwu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBsLmgKQEAgLTE3LDEyICsxNywxMSBAQAogI2lu
Y2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9f
ZnJhbWUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0
aV92ZWN0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWZpbmVz
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVmaW5lcy5oIiAgLy8g
TW9kZXMsIE9wZXJhdGlvbnMKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9l
eHBhbmRfdW1hX2xvZ2dlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L2luY2x1ZGUvbmV0ZXEuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9w
YWNrZXQuaCIgIC8vIERlY2xhcmUgUGFja2V0TGlzdC4KKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9wYWNrZXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS9yYW5kb21fdmVjdG9yLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvcnRjcC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N0YXRpc3Rp
Y3NfY2FsY3VsYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rp
Y2tfdGltZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCkBAIC0x
NzAsMTcgKzE2OSwxMCBAQCBjbGFzcyBOZXRFcUltcGwgOiBwdWJsaWMgd2VicnRjOjpOZXRFcSB7
CiAgIC8vIGFmdGVyIHRoZSBjYWxsLgogICBpbnQgTmV0d29ya1N0YXRpc3RpY3MoTmV0RXFOZXR3
b3JrU3RhdGlzdGljcyogc3RhdHMpIG92ZXJyaWRlOwogCi0gIC8vIFdyaXRlcyB0aGUgY3VycmVu
dCBSVENQIHN0YXRpc3RpY3MgdG8gfHN0YXRzfC4gVGhlIHN0YXRpc3RpY3MgYXJlIHJlc2V0Ci0g
IC8vIGFuZCBhIG5ldyByZXBvcnQgcGVyaW9kIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgY2FsbC4KLSAg
dm9pZCBHZXRSdGNwU3RhdGlzdGljcyhSdGNwU3RhdGlzdGljcyogc3RhdHMpIG92ZXJyaWRlOwot
CiAgIE5ldEVxTGlmZXRpbWVTdGF0aXN0aWNzIEdldExpZmV0aW1lU3RhdGlzdGljcygpIGNvbnN0
IG92ZXJyaWRlOwogCiAgIE5ldEVxT3BlcmF0aW9uc0FuZFN0YXRlIEdldE9wZXJhdGlvbnNBbmRT
dGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gIC8vIFNhbWUgYXMgUnRjcFN0YXRpc3RpY3MoKSwg
YnV0IGRvZXMgbm90IHJlc2V0IGFueXRoaW5nLgotICB2b2lkIEdldFJ0Y3BTdGF0aXN0aWNzTm9S
ZXNldChSdGNwU3RhdGlzdGljcyogc3RhdHMpIG92ZXJyaWRlOwotCiAgIC8vIEVuYWJsZXMgcG9z
dC1kZWNvZGUgVkFELiBXaGVuIGVuYWJsZWQsIEdldEF1ZGlvKCkgd2lsbCByZXR1cm4KICAgLy8g
a091dHB1dFZBRFBhc3NpdmUgd2hlbiB0aGUgc2lnbmFsIGNvbnRhaW5zIG5vIHNwZWVjaC4KICAg
dm9pZCBFbmFibGVWYWQoKSBvdmVycmlkZTsKQEAgLTIwMCw5ICsxOTIsNiBAQCBjbGFzcyBOZXRF
cUltcGwgOiBwdWJsaWMgd2VicnRjOjpOZXRFcSB7CiAgIC8vIEZsdXNoZXMgYm90aCB0aGUgcGFj
a2V0IGJ1ZmZlciBhbmQgdGhlIHN5bmMgYnVmZmVyLgogICB2b2lkIEZsdXNoQnVmZmVycygpIG92
ZXJyaWRlOwogCi0gIHZvaWQgUGFja2V0QnVmZmVyU3RhdGlzdGljcyhpbnQqIGN1cnJlbnRfbnVt
X3BhY2tldHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1heF9udW1fcGFj
a2V0cykgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgdm9pZCBFbmFibGVOYWNrKHNpemVfdCBtYXhfbmFj
a19saXN0X3NpemUpIG92ZXJyaWRlOwogCiAgIHZvaWQgRGlzYWJsZU5hY2soKSBvdmVycmlkZTsK
QEAgLTM5NSw3ICszODQsNiBAQCBjbGFzcyBOZXRFcUltcGwgOiBwdWJsaWMgd2VicnRjOjpOZXRF
cSB7CiAgICAgICBSVENfR1VBUkRFRF9CWShjcml0X3NlY3RfKTsKICAgUmFuZG9tVmVjdG9yIHJh
bmRvbV92ZWN0b3JfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8pOwogICBzdGQ6OnVuaXF1ZV9w
dHI8Q29tZm9ydE5vaXNlPiBjb21mb3J0X25vaXNlXyBSVENfR1VBUkRFRF9CWShjcml0X3NlY3Rf
KTsKLSAgUnRjcCBydGNwXyBSVENfR1VBUkRFRF9CWShjcml0X3NlY3RfKTsKICAgU3RhdGlzdGlj
c0NhbGN1bGF0b3Igc3RhdHNfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8pOwogICBpbnQgZnNf
aHpfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8pOwogICBpbnQgZnNfbXVsdF8gUlRDX0dVQVJE
RURfQlkoY3JpdF9zZWN0Xyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBsX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbmV0ZXFfaW1wbF91bml0dGVzdC5jYwppbmRleCBiNzcy
ZGZhNzFkZTExOWZiY2MwNDA2ZWI0YmVkNDYxNjBlNDdmNWU4Li4wZTA4N2M4NDdmMThmZGZjMzVm
ZDI4ZjMyMmY1ZmFiMjU5NTJhMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV9pbXBs
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX2ltcGxfdW5pdHRlc3QuY2MKQEAg
LTkyLDcgKzkyLDggQEAgY2xhc3MgTmV0RXFJbXBsVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgewogCiAgICAgaWYgKHVzZV9tb2NrX2RlbGF5X21hbmFnZXJfKSB7CiAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TW9ja0RlbGF5TWFuYWdlcj4gbW9jayhuZXcgTW9ja0RlbGF5TWFuYWdlcigKLSAg
ICAgICAgICBjb25maWdfLm1heF9wYWNrZXRzX2luX2J1ZmZlciwgZGVsYXlfcGVha19kZXRlY3Rv
cl8sIHRpY2tfdGltZXJfKSk7CisgICAgICAgICAgY29uZmlnXy5tYXhfcGFja2V0c19pbl9idWZm
ZXIsIGNvbmZpZ18ubWluX2RlbGF5X21zLAorICAgICAgICAgIGRlbGF5X3BlYWtfZGV0ZWN0b3Jf
LCB0aWNrX3RpbWVyXykpOwogICAgICAgbW9ja19kZWxheV9tYW5hZ2VyXyA9IG1vY2suZ2V0KCk7
CiAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja19kZWxheV9tYW5hZ2VyXywgc2V0X3N0cmVhbWluZ19t
b2RlKGZhbHNlKSkuVGltZXMoMSk7CiAgICAgICBkZXBzLmRlbGF5X21hbmFnZXIgPSBzdGQ6Om1v
dmUobW9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9uZXRlcV91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL25ldGVxX3VuaXR0ZXN0LmNjCmluZGV4IDNlZTBiNWJmNjkzZjUzOWZmZmU3NDZk
ZDQ0OWY0NzlkYTJmMmY0NGYuLmU4YjUwMjM3NzAzMTQ4YTMzYWVmYTgzNGMxM2EwM2ZjODVmNmVm
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL25ldGVxX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL25ldGVxX3VuaXR0ZXN0LmNjCkBAIC0yMiwxMiArMjIsMTIgQEAKIAogI2luY2x1ZGUg
ImFwaS9hdWRpby9hdWRpb19mcmFtZS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVp
bHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIg
IC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9wY20xNmIvcGNtMTZiLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvdG9vbHMvYXVkaW9fbG9vcC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3Rvb2xzL25ldGVxX3BhY2tldF9zb3VyY2VfaW5wdXQuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV90ZXN0LmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmgiCisjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0Y3Bfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2lnbm9yZV93dW5kZWYuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGln
ZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgpA
QCAtNTIsNyArNTIsNyBAQCBSVENfUFVTSF9JR05PUklOR19XVU5ERUYoKQogUlRDX1BPUF9JR05P
UklOR19XVU5ERUYoKQogI2VuZGlmCiAKLURFRklORV9ib29sKGdlbl9yZWYsIGZhbHNlLCAiR2Vu
ZXJhdGUgcmVmZXJlbmNlIGZpbGVzLiIpOworV0VCUlRDX0RFRklORV9ib29sKGdlbl9yZWYsIGZh
bHNlLCAiR2VuZXJhdGUgcmVmZXJlbmNlIGZpbGVzLiIpOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IApAQCAtMjM0LDcgKzIzNCwxNCBAQCB2b2lkIFJlc3VsdFNpbms6OlZlcmlmeUNoZWNrc3VtKGNv
bnN0IHN0ZDo6c3RyaW5nJiBjaGVja3N1bSkgewogICBidWZmZXIucmVzaXplKGRpZ2VzdF8tPlNp
emUoKSk7CiAgIGRpZ2VzdF8tPkZpbmlzaCgmYnVmZmVyWzBdLCBidWZmZXIuc2l6ZSgpKTsKICAg
Y29uc3Qgc3RkOjpzdHJpbmcgcmVzdWx0ID0gcnRjOjpoZXhfZW5jb2RlKCZidWZmZXJbMF0sIGRp
Z2VzdF8tPlNpemUoKSk7Ci0gIEVYUEVDVF9FUShjaGVja3N1bSwgcmVzdWx0KTsKKyAgaWYgKGNo
ZWNrc3VtLnNpemUoKSA9PSByZXN1bHQuc2l6ZSgpKSB7CisgICAgRVhQRUNUX0VRKGNoZWNrc3Vt
LCByZXN1bHQpOworICB9IGVsc2UgeworICAgIC8vIENoZWNrIHJlc3VsdCBpcyBvbmUgdGhlICd8
Jy1zZXBhcmF0ZWQgY2hlY2tzdW1zLgorICAgIEVYUEVDVF9ORShjaGVja3N1bS5maW5kKHJlc3Vs
dCksIHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICA8PCByZXN1bHQgPDwgIiBzaG91bGQgYmUg
b25lIG9mIHRoZXNlOlxuIgorICAgICAgICA8PCBjaGVja3N1bTsKKyAgfQogfQogCiBjbGFzcyBO
ZXRFcURlY29kaW5nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewpAQCAtMjU4LDcgKzI2
NSw2IEBAIGNsYXNzIE5ldEVxRGVjb2RpbmdUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CiAgIHZvaWQgRGVjb2RlQW5kQ29tcGFyZShjb25zdCBzdGQ6OnN0cmluZyYgcnRwX2ZpbGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2NoZWNrc3Vt
LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5ldHdvcmtfc3Rh
dHNfY2hlY2tzdW0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
cnRjcF9zdGF0c19jaGVja3N1bSwKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZ2VuX3Jl
Zik7CiAKICAgc3RhdGljIHZvaWQgUG9wdWxhdGVSdHBJbmZvKGludCBmcmFtZV9pbmRleCwKQEAg
LTM2Niw3ICszNzIsNiBAQCB2b2lkIE5ldEVxRGVjb2RpbmdUZXN0OjpEZWNvZGVBbmRDb21wYXJl
KAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBydHBfZmlsZSwKICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgb3V0cHV0X2NoZWNrc3VtLAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuZXR3b3JrX3N0YXRz
X2NoZWNrc3VtLAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBydGNwX3N0YXRzX2NoZWNrc3VtLAog
ICAgIGJvb2wgZ2VuX3JlZikgewogICBPcGVuSW5wdXRGaWxlKHJ0cF9maWxlKTsKIApAQCAtMzc4
LDEwICszODMsNiBAQCB2b2lkIE5ldEVxRGVjb2RpbmdUZXN0OjpEZWNvZGVBbmRDb21wYXJlKAog
ICAgICAgZ2VuX3JlZiA/IHdlYnJ0Yzo6dGVzdDo6T3V0cHV0UGF0aCgpICsgIm5ldGVxX25ldHdv
cmtfc3RhdHMuZGF0IiA6ICIiOwogICBSZXN1bHRTaW5rIG5ldHdvcmtfc3RhdHMoc3RhdF9vdXRf
ZmlsZSk7CiAKLSAgc3RkOjpzdHJpbmcgcnRjcF9vdXRfZmlsZSA9Ci0gICAgICBnZW5fcmVmID8g
d2VicnRjOjp0ZXN0OjpPdXRwdXRQYXRoKCkgKyAibmV0ZXFfcnRjcF9zdGF0cy5kYXQiIDogIiI7
Ci0gIFJlc3VsdFNpbmsgcnRjcF9zdGF0cyhydGNwX291dF9maWxlKTsKLQogICBwYWNrZXRfID0g
cnRwX3NvdXJjZV8tPk5leHRQYWNrZXQoKTsKICAgaW50IGkgPSAwOwogICB1aW50NjRfdCBsYXN0
X2NvbmNlYWxlZF9zYW1wbGVzID0gMDsKQEAgLTQxOCwxMSArNDE5LDYgQEAgdm9pZCBOZXRFcURl
Y29kaW5nVGVzdDo6RGVjb2RlQW5kQ29tcGFyZSgKICAgICAgIEVYUEVDVF9ORUFSKAogICAgICAg
ICAgIChkZWx0YV9jb25jZWFsZWRfc2FtcGxlcyA8PCAxNCkgLyBkZWx0YV90b3RhbF9zYW1wbGVz
X3JlY2VpdmVkLAogICAgICAgICAgIGN1cnJlbnRfbmV0d29ya19zdGF0cy5leHBhbmRfcmF0ZSwg
KDIgPDwgMTQpIC8gMTAwLjApOwotCi0gICAgICAvLyBQcm9jZXNzIFJUQ1BzdGF0LgotICAgICAg
UnRjcFN0YXRpc3RpY3MgY3VycmVudF9ydGNwX3N0YXRzOwotICAgICAgbmV0ZXFfLT5HZXRSdGNw
U3RhdGlzdGljcygmY3VycmVudF9ydGNwX3N0YXRzKTsKLSAgICAgIEFTU0VSVF9OT19GQVRBTF9G
QUlMVVJFKHJ0Y3Bfc3RhdHMuQWRkUmVzdWx0KGN1cnJlbnRfcnRjcF9zdGF0cykpOwogICAgIH0K
ICAgfQogCkBAIC00MzAsOCArNDI2LDYgQEAgdm9pZCBOZXRFcURlY29kaW5nVGVzdDo6RGVjb2Rl
QW5kQ29tcGFyZSgKICAgb3V0cHV0LlZlcmlmeUNoZWNrc3VtKG91dHB1dF9jaGVja3N1bSk7CiAg
IFNDT1BFRF9UUkFDRSgiQ2hlY2sgbmV0d29yayBzdGF0cy4iKTsKICAgbmV0d29ya19zdGF0cy5W
ZXJpZnlDaGVja3N1bShuZXR3b3JrX3N0YXRzX2NoZWNrc3VtKTsKLSAgU0NPUEVEX1RSQUNFKCJD
aGVjayBydGNwIHN0YXRzLiIpOwotICBydGNwX3N0YXRzLlZlcmlmeUNoZWNrc3VtKHJ0Y3Bfc3Rh
dHNfY2hlY2tzdW0pOwogfQogCiB2b2lkIE5ldEVxRGVjb2RpbmdUZXN0OjpQb3B1bGF0ZVJ0cElu
Zm8oaW50IGZyYW1lX2luZGV4LApAQCAtNDgxLDE0ICs0NzUsOCBAQCBURVNUX0YoTmV0RXFEZWNv
ZGluZ1Rlc3QsIE1BWUJFX1Rlc3RCaXRFeGFjdG5lc3MpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIjRiMjM3MGY1Yzc5NDc0MWQyYTQ2YmU1Yzc5MzVjNjZlZjNmYjUzZTkiLAogICAgICAgICAg
ICAgICAgICAgICAgICAiNGIyMzcwZjVjNzk0NzQxZDJhNDZiZTVjNzkzNWM2NmVmM2ZiNTNlOSIp
OwogCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHJ0Y3Bfc3RhdHNfY2hlY2tzdW0gPQotICAgICAgUGxh
dGZvcm1DaGVja3N1bSgiYjg4ODBiZjlmZWQyNDg3ZWZiZGRjYjhkOTRiOTkzN2EyOWFlNTIxZCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICJmM2Y3YjNkM2U3MWQ3ZTYzNTI0MGI1MzczYjU3ZGY2
YTdlNGNlOWQ0IiwgIm5vdCB1c2VkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgImI4ODgwYmY5
ZmVkMjQ4N2VmYmRkY2I4ZDk0Yjk5MzdhMjlhZTUyMWQiLAotICAgICAgICAgICAgICAgICAgICAg
ICAiYjg4ODBiZjlmZWQyNDg3ZWZiZGRjYjhkOTRiOTkzN2EyOWFlNTIxZCIpOwotCiAgIERlY29k
ZUFuZENvbXBhcmUoaW5wdXRfcnRwX2ZpbGUsIG91dHB1dF9jaGVja3N1bSwgbmV0d29ya19zdGF0
c19jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAgICBydGNwX3N0YXRzX2NoZWNrc3VtLCBGTEFH
X2dlbl9yZWYpOworICAgICAgICAgICAgICAgICAgIEZMQUdfZ2VuX3JlZik7CiB9CiAKICNpZiAh
ZGVmaW5lZChXRUJSVENfSU9TKSAmJiBkZWZpbmVkKFdFQlJUQ19ORVRFUV9VTklUVEVTVF9CSVRF
WEFDVCkgJiYgXApAQCAtNTAxLDEyICs0ODksMTMgQEAgVEVTVF9GKE5ldEVxRGVjb2RpbmdUZXN0
LCBNQVlCRV9UZXN0T3B1c0JpdEV4YWN0bmVzcykgewogICBjb25zdCBzdGQ6OnN0cmluZyBpbnB1
dF9ydHBfZmlsZSA9CiAgICAgICB3ZWJydGM6OnRlc3Q6OlJlc291cmNlUGF0aCgiYXVkaW9fY29k
aW5nL25ldGVxX29wdXMiLCAicnRwIik7CiAKLSAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0X2No
ZWNrc3VtID0KLSAgICAgIFBsYXRmb3JtQ2hlY2tzdW0oIjE0YTYzYjNjN2I5MjVjODIyOTZiZTRi
YWZjNzFiZWM4NWYyOTE1YzIiLAotICAgICAgICAgICAgICAgICAgICAgICAiYjdiN2VkODAyYjBl
MThlZTQxNjk3M2JmM2I5YWU5ODU5OWIwMTgxZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICI1
ODc2ZTUyZGRhOTBkNWNhNDMzYzM3MjY1NTViOTA3Yjk3Yzg2Mzc0IiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIjE0YTYzYjNjN2I5MjVjODIyOTZiZTRiYWZjNzFiZWM4NWYyOTE1YzIiLAotICAg
ICAgICAgICAgICAgICAgICAgICAiMTRhNjNiM2M3YjkyNWM4MjI5NmJlNGJhZmM3MWJlYzg1ZjI5
MTVjMiIpOworICAvLyBDaGVja3N1bSBkZXBlbmRzIG9uIGxpYm9wdXMgYmVpbmcgY29tcGlsZWQg
d2l0aCBvciB3aXRob3V0IFNTRS4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgbWF5YmVfc3NlID0KKyAg
ICAgICIxNGE2M2IzYzdiOTI1YzgyMjk2YmU0YmFmYzcxYmVjODVmMjkxNWMyfCIKKyAgICAgICIy
YzA1Njc3ZGFhOTY4ZDZjNjhiOTJhZGY0YWZmYjdjZDliYjRkMzYzIjsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgb3V0cHV0X2NoZWNrc3VtID0gUGxhdGZvcm1DaGVja3N1bSgKKyAgICAgIG1heWJlX3Nz
ZSwgImI3YjdlZDgwMmIwZTE4ZWU0MTY5NzNiZjNiOWFlOTg1OTliMDE4MWQiLAorICAgICAgIjU4
NzZlNTJkZGE5MGQ1Y2E0MzNjMzcyNjU1NWI5MDdiOTdjODYzNzQiLCBtYXliZV9zc2UsIG1heWJl
X3NzZSk7CiAKICAgY29uc3Qgc3RkOjpzdHJpbmcgbmV0d29ya19zdGF0c19jaGVja3N1bSA9CiAg
ICAgICBQbGF0Zm9ybUNoZWNrc3VtKCJhZGIzMjcyNDk4ZTQzNmQxYzAxOWNiZmQ3MTYxMGU5NTEw
YzU0NDk3IiwKQEAgLTUxNSwxNSArNTA0LDggQEAgVEVTVF9GKE5ldEVxRGVjb2RpbmdUZXN0LCBN
QVlCRV9UZXN0T3B1c0JpdEV4YWN0bmVzcykgewogICAgICAgICAgICAgICAgICAgICAgICAiYWRi
MzI3MjQ5OGU0MzZkMWMwMTljYmZkNzE2MTBlOTUxMGM1NDQ5NyIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICJhZGIzMjcyNDk4ZTQzNmQxYzAxOWNiZmQ3MTYxMGU5NTEwYzU0NDk3Iik7CiAKLSAg
Y29uc3Qgc3RkOjpzdHJpbmcgcnRjcF9zdGF0c19jaGVja3N1bSA9Ci0gICAgICBQbGF0Zm9ybUNo
ZWNrc3VtKCJlMzdjNzk3ZTNkZTZhNjRkZGE4OGM5YWRlN2EwMTNkMDIyYTJlMWUwIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgImUzN2M3OTdlM2RlNmE2NGRkYTg4YzlhZGU3YTAxM2QwMjJhMmUx
ZTAiLAotICAgICAgICAgICAgICAgICAgICAgICAiZTM3Yzc5N2UzZGU2YTY0ZGRhODhjOWFkZTdh
MDEzZDAyMmEyZTFlMCIsCi0gICAgICAgICAgICAgICAgICAgICAgICJlMzdjNzk3ZTNkZTZhNjRk
ZGE4OGM5YWRlN2EwMTNkMDIyYTJlMWUwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgImUzN2M3
OTdlM2RlNmE2NGRkYTg4YzlhZGU3YTAxM2QwMjJhMmUxZTAiKTsKLQogICBEZWNvZGVBbmRDb21w
YXJlKGlucHV0X3J0cF9maWxlLCBvdXRwdXRfY2hlY2tzdW0sIG5ldHdvcmtfc3RhdHNfY2hlY2tz
dW0sCi0gICAgICAgICAgICAgICAgICAgcnRjcF9zdGF0c19jaGVja3N1bSwgRkxBR19nZW5fcmVm
KTsKKyAgICAgICAgICAgICAgICAgICBGTEFHX2dlbl9yZWYpOwogfQogCiAjaWYgIWRlZmluZWQo
V0VCUlRDX0lPUykgJiYgZGVmaW5lZChXRUJSVENfTkVURVFfVU5JVFRFU1RfQklURVhBQ1QpICYm
IFwKQEAgLTUzNiwyMSArNTE4LDE4IEBAIFRFU1RfRihOZXRFcURlY29kaW5nVGVzdCwgTUFZQkVf
VGVzdE9wdXNEdHhCaXRFeGFjdG5lc3MpIHsKICAgY29uc3Qgc3RkOjpzdHJpbmcgaW5wdXRfcnRw
X2ZpbGUgPQogICAgICAgd2VicnRjOjp0ZXN0OjpSZXNvdXJjZVBhdGgoImF1ZGlvX2NvZGluZy9u
ZXRlcV9vcHVzX2R0eCIsICJydHAiKTsKIAotICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfY2hl
Y2tzdW0gPQotICAgICAgUGxhdGZvcm1DaGVja3N1bSgiNzEzYWY2YzkyODgxZjVhYWIxMjg1NzY1
ZWU2NjgwZGE5ZDFjMDZjZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICIzZWM5OTFiOTY4NzIx
MjNmMTU1NGMwM2M1NDNjYTVkNTE4NDMxZTQ2IiwKLSAgICAgICAgICAgICAgICAgICAgICAgImRh
OWY5YTJkOTRlMGMyZDY3MzQyZmFkNDk2NWQ3YjkxY2RhNTBiMjUiLAotICAgICAgICAgICAgICAg
ICAgICAgICAiNzEzYWY2YzkyODgxZjVhYWIxMjg1NzY1ZWU2NjgwZGE5ZDFjMDZjZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICI3MTNhZjZjOTI4ODFmNWFhYjEyODU3NjVlZTY2ODBkYTlkMWMw
NmNlIik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1heWJlX3NzZSA9CisgICAgICAiNzEzYWY2Yzky
ODgxZjVhYWIxMjg1NzY1ZWU2NjgwZGE5ZDFjMDZjZXwiCisgICAgICAiMmFjMTBjNGU3OWFlZWRk
MGRmMjg2M2IwNzlkYTU4NDhiNDBmMDBiNSI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1dF9j
aGVja3N1bSA9IFBsYXRmb3JtQ2hlY2tzdW0oCisgICAgICBtYXliZV9zc2UsICIzZWM5OTFiOTY4
NzIxMjNmMTU1NGMwM2M1NDNjYTVkNTE4NDMxZTQ2IiwKKyAgICAgICJkYTlmOWEyZDk0ZTBjMmQ2
NzM0MmZhZDQ5NjVkN2I5MWNkYTUwYjI1IiwgbWF5YmVfc3NlLCBtYXliZV9zc2UpOwogCiAgIGNv
bnN0IHN0ZDo6c3RyaW5nIG5ldHdvcmtfc3RhdHNfY2hlY2tzdW0gPQogICAgICAgImJhYjU4ZGM1
ODdkOTU2ZjMyNjA1NmQ3MzQwYzk2ZWI5ZDJkM2NjMjEiOwogCi0gIGNvbnN0IHN0ZDo6c3RyaW5n
IHJ0Y3Bfc3RhdHNfY2hlY2tzdW0gPQotICAgICAgImFjMjdhN2YzMDVlZmI1OGIzOWJmMTIzZGNj
ZWUyNWRlZTU3NThlNjMiOwotCiAgIERlY29kZUFuZENvbXBhcmUoaW5wdXRfcnRwX2ZpbGUsIG91
dHB1dF9jaGVja3N1bSwgbmV0d29ya19zdGF0c19jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAg
ICBydGNwX3N0YXRzX2NoZWNrc3VtLCBGTEFHX2dlbl9yZWYpOworICAgICAgICAgICAgICAgICAg
IEZMQUdfZ2VuX3JlZik7CiB9CiAKIC8vIFVzZSBmYXggbW9kZSB0byBhdm9pZCB0aW1lLXNjYWxp
bmcuIFRoaXMgaXMgdG8gc2ltcGxpZnkgdGhlIHRlc3Rpbmcgb2YKQEAgLTE3NDAsNyArMTcxOSw3
IEBAIFRFU1QoTmV0RXFOb1RpbWVTdHJldGNoaW5nTW9kZSwgUnVuVGVzdCkgewogICAgICAgezgs
IGtSdHBFeHRlbnNpb25WaWRlb1RpbWluZ319OwogICBzdGQ6OnVuaXF1ZV9wdHI8TmV0RXFJbnB1
dD4gaW5wdXQobmV3IE5ldEVxUnRwRHVtcElucHV0KAogICAgICAgd2VicnRjOjp0ZXN0OjpSZXNv
dXJjZVBhdGgoImF1ZGlvX2NvZGluZy9uZXRlcV91bml2ZXJzYWxfbmV3IiwgInJ0cCIpLAotICAg
ICAgcnRwX2V4dF9tYXApKTsKKyAgICAgIHJ0cF9leHRfbWFwLCBhYnNsOjpudWxsb3B0IC8qTm8g
U1NSQyBmaWx0ZXIqLykpOwogICBzdGQ6OnVuaXF1ZV9wdHI8VGltZUxpbWl0ZWROZXRFcUlucHV0
PiBpbnB1dF90aW1lX2xpbWl0KAogICAgICAgbmV3IFRpbWVMaW1pdGVkTmV0RXFJbnB1dChzdGQ6
Om1vdmUoaW5wdXQpLCAyMDAwMCkpOwogICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TaW5rPiBvdXRw
dXQobmV3IFZvaWRBdWRpb1NpbmspOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvbm9ybWFsLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9ub3JtYWwuaAppbmRleCBiMTNmMTZlNTBkYzgxOGQxYzA4NjFlY2MxZmRj
MjM5Yzk4NzdhOTJlLi44MDQ1MWI1MDA3ODEzZmE3MTM5NmI4NzFiZTU1Y2RkODEzNTI4NTcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ub3JtYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ub3JtYWwu
aApAQCAtMTEsMTEgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFf
Tk9STUFMX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX05PUk1BTF9IXwog
CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBBY2Nlc3MgdG8g
c2l6ZV90LgogCi0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKQEAgLTI0LDYgKzIyLDcgQEAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KK2NsYXNzIEF1
ZGlvTXVsdGlWZWN0b3I7CiBjbGFzcyBCYWNrZ3JvdW5kTm9pc2U7CiBjbGFzcyBEZWNvZGVyRGF0
YWJhc2U7CiBjbGFzcyBFeHBhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL3BhY2tldC5oCmluZGV4IDQ1YzU2ZTFiNjg2YjM1M2JkZmU5NDdlNTdjNzEw
ZWI4YzAwZTdjZDkuLjM1OGQ4ZmExYWJiOGY4YjllMDk3ZmUxNzU1NDViYTg2OWVmMWZkZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldC5o
CkBAIC0xMSwxMiArMTEsMTQgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19DT0RJTkdfTkVURVFf
UEFDS0VUX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1BBQ0tFVF9IXwog
CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+
CiAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aWNrX3RpbWVyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRfYnVmZmVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvcGFja2V0X2J1ZmZlci5jYwppbmRleCBlYmE0ZDNlNjhiNjZkNmU1NzFlOWMw
NmU0NTU3MzgxN2FmN2RhOTc4Li4zNDM3NjNiNGU0ZDgxM2ZhNjEwNWMzYWI5OWU2ZmVhNzA2MDY2
MmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRfYnVmZmVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3BhY2tldF9idWZmZXIuY2MKQEAgLTE0LDEyICsxNCwxNyBAQAogCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0X2J1ZmZlci5oIgogCi0jaW5jbHVkZSA8
YWxnb3JpdGhtPiAgLy8gZmluZF9pZigpCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
PGxpc3Q+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1
ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNl
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxj
dWxhdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGlja190aW1l
ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Z2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0yOTQsOSArMjk5LDQgQEAgYm9vbCBQ
YWNrZXRCdWZmZXI6OkNvbnRhaW5zRHR4T3JDbmdQYWNrZXQoCiAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBQYWNrZXRCdWZmZXI6OkJ1ZmZlclN0YXQoaW50KiBudW1fcGFja2V0cywgaW50KiBt
YXhfbnVtX3BhY2tldHMpIGNvbnN0IHsKLSAgKm51bV9wYWNrZXRzID0gc3RhdGljX2Nhc3Q8aW50
PihidWZmZXJfLnNpemUoKSk7Ci0gICptYXhfbnVtX3BhY2tldHMgPSBzdGF0aWNfY2FzdDxpbnQ+
KG1heF9udW1iZXJfb2ZfcGFja2V0c18pOwotfQotCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNrZXRfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wYWNr
ZXRfYnVmZmVyLmgKaW5kZXggN2UzNGMxZTlmY2UwYjgwMDNkNDM3ODY2MjU2NDBjM2MyMmY1MDVj
ZS4uMGY1Y2Q3ZjhlZDVkYWNkMDVjNzA1MTcwNmI2ZDVmMDA1ZmFiNGRlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvcGFja2V0X2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3BhY2tldF9idWZm
ZXIuaApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0LmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlc19wdWJsaWMuaCIgIC8vIElzTmV3ZXJUaW1l
c3RhbXAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewpAQCAtMTI1LDggKzEyNSw2IEBAIGNsYXNzIFBhY2tldEJ1ZmZlciB7CiAgIHZp
cnR1YWwgYm9vbCBDb250YWluc0R0eE9yQ25nUGFja2V0KAogICAgICAgY29uc3QgRGVjb2RlckRh
dGFiYXNlKiBkZWNvZGVyX2RhdGFiYXNlKSBjb25zdDsKIAotICB2aXJ0dWFsIHZvaWQgQnVmZmVy
U3RhdChpbnQqIG51bV9wYWNrZXRzLCBpbnQqIG1heF9udW1fcGFja2V0cykgY29uc3Q7Ci0KICAg
Ly8gU3RhdGljIG1ldGhvZCByZXR1cm5pbmcgdHJ1ZSBpZiB8dGltZXN0YW1wfCBpcyBvbGRlciB0
aGFuIHx0aW1lc3RhbXBfbGltaXR8CiAgIC8vIGJ1dCBsZXNzIHRoYW4gfGhvcml6b25fc2FtcGxl
c3wgYmVoaW5kIHx0aW1lc3RhbXBfbGltaXR8LiBGb3IgaW5zdGFuY2UsCiAgIC8vIHdpdGggdGlt
ZXN0YW1wX2xpbWl0ID0gMTAwIGFuZCBob3Jpem9uX3NhbXBsZXMgPSAxMCwgYSB0aW1lc3RhbXAg
aW4gdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9wb3N0X2RlY29kZV92YWQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3Bvc3RfZGVjb2RlX3ZhZC5oCmluZGV4IGFkNGYwODIzYmI3YTVkNzJjODExMWUwNzU4
MTQxZjM0Zjc2Yzk5NmQuLjI3ZDY5YTZlZWIyMjgwYWZiODM0ZTY4M2I5ZjJkYTFhNGI4ZDMxMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Bvc3RfZGVjb2RlX3ZhZC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Bvc3RfZGVjb2RlX3ZhZC5oCkBAIC0xMSwxMyArMTEsMTEgQEAKICNpZm5kZWYgTU9EVUxF
U19BVURJT19DT0RJTkdfTkVURVFfUE9TVF9ERUNPREVfVkFEX0hfCiAjZGVmaW5lIE1PRFVMRVNf
QVVESU9fQ09ESU5HX05FVEVRX1BPU1RfREVDT0RFX1ZBRF9IXwogCi0jaW5jbHVkZSA8c3RyaW5n
PiAgLy8gc2l6ZV90CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2RlY29kZXIuaCIKICNpbmNsdWRlICJj
b21tb25fYXVkaW8vdmFkL2luY2x1ZGUvd2VicnRjX3ZhZC5oIgotI2luY2x1ZGUgImNvbW1vbl90
eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpICAvLyBOVUxMCi0jaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvZGVmaW5lcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3BhY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9w
cmVlbXB0aXZlX2V4cGFuZC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3ByZWVtcHRpdmVfZXhwYW5kLmNjCmlu
ZGV4IDYxNTlhOWNiMTVkNzBlNjcwODZkZmYxZjdlZjBjMDI1Yzc1MWYzOTMuLmNhZDhkNmE1MGY2
Y2NkMmE1MGRhMjU5NGJiYTc5YjA3NDFkZjcyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3By
ZWVtcHRpdmVfZXhwYW5kLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3ByZWVtcHRpdmVfZXhwYW5kLmNj
CkBAIC0xMCw5ICsxMCwxMSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvcHJlZW1wdGl2ZV9leHBhbmQuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIG1pbiwg
bWF4CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL3NpZ25h
bF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oIgorI2luY2x1
ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvdGltZV9zdHJldGNoLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9wcmVlbXB0aXZlX2V4cGFuZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcHJlZW1wdGl2
ZV9leHBhbmQuaAppbmRleCBhY2U2NDhmMTVjY2UyNTcxMDk5NzZiYmVjODhkYzg3YjBhMTI1ZjUz
Li4wZjdiM2JjOGFjZjE4YmQzY2U5ZTZmY2VkZGVmZmM4YWVlZjVhM2Y2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS9wcmVlbXB0aXZlX2V4cGFuZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3ByZWVtcHRp
dmVfZXhwYW5kLmgKQEAgLTExLDEzICsxMSwxNSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NP
RElOR19ORVRFUV9QUkVFTVBUSVZFX0VYUEFORF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX0NP
RElOR19ORVRFUV9QUkVFTVBUSVZFX0VYUEFORF9IXwogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvYXVkaW9fbXVsdGlfdmVjdG9yLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+
CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90aW1lX3N0cmV0Y2guaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2lj
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KK2Ns
YXNzIEF1ZGlvTXVsdGlWZWN0b3I7CiBjbGFzcyBCYWNrZ3JvdW5kTm9pc2U7CiAKIC8vIFRoaXMg
Y2xhc3MgaW1wbGVtZW50cyB0aGUgUHJlZW1wdGl2ZUV4cGFuZCBvcGVyYXRpb24uIE1vc3Qgb2Yg
dGhlIHdvcmsgaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3JlZF9wYXlsb2FkX3NwbGl0dGVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuY2MKaW5kZXggZjU0MzVlOGVh
YjRhZDFlZmI5NmQzYTAzOWY5Njc2ZGNiODI5ZmM3MC4uMmRmZTgzODZmZjlhOTRlZWE5N2VlMjdm
YTc0MzY1NzRjZWI3ZjAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3Bs
aXR0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuY2MKQEAgLTEx
LDEwICsxMSwxNSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3JlZF9w
YXlsb2FkX3NwbGl0dGVyLmgiCiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8dXRp
bGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9kZWNvZGVyX2RhdGFiYXNlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcGFja2V0LmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3JlZF9w
YXlsb2FkX3NwbGl0dGVyLmgKaW5kZXggNWUyMzlkZGM3MDgyNjBlNjZmZjRlYTM2MWM1Y2MyNjEx
NzU2NGI0Ni4uNTUwNjNlNzQxNzY5ZTBjMDMxYjkyYmEwZjA3NTNhOTBmZWQwZjc2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvcmVkX3BheWxvYWRfc3BsaXR0ZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS9yZWRfcGF5bG9hZF9zcGxpdHRlci5oCkBAIC0xNiw3ICsxNiw2IEBACiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KIGNsYXNzIERlY29kZXJEYXRhYmFz
ZTsKIAogLy8gVGhpcyBjbGFzcyBoYW5kbGVzIHNwbGl0dGluZyBvZiBSRUQgcGF5bG9hZHMgaW50
byBzbWFsbGVyIHBhcnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcnRjcC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3J0Y3AuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MWViNWY3NWI0
MDFmZmIyZjk1ODI4YjI4MmQ4ZmRkNWFmY2E5YzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcnRjcC5jYworKysgL2Rldi9udWxsCkBA
IC0xLDk0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDExIFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
Ci0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvcnRjcC5oIgotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5j
bHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLW5hbWVzcGFjZSB3ZWJy
dGMgewotCi12b2lkIFJ0Y3A6OkluaXQodWludDE2X3Qgc3RhcnRfc2VxdWVuY2VfbnVtYmVyKSB7
Ci0gIGN5Y2xlc18gPSAwOwotICBtYXhfc2VxX25vXyA9IHN0YXJ0X3NlcXVlbmNlX251bWJlcjsK
LSAgYmFzZV9zZXFfbm9fID0gc3RhcnRfc2VxdWVuY2VfbnVtYmVyOwotICByZWNlaXZlZF9wYWNr
ZXRzXyA9IDA7Ci0gIHJlY2VpdmVkX3BhY2tldHNfcHJpb3JfID0gMDsKLSAgZXhwZWN0ZWRfcHJp
b3JfID0gMDsKLSAgaml0dGVyXyA9IDA7Ci0gIHRyYW5zaXRfID0gMDsKLX0KLQotdm9pZCBSdGNw
OjpVcGRhdGUoY29uc3QgUlRQSGVhZGVyJiBydHBfaGVhZGVyLCB1aW50MzJfdCByZWNlaXZlX3Rp
bWVzdGFtcCkgewotICAvLyBVcGRhdGUgbnVtYmVyIG9mIHJlY2VpdmVkIHBhY2tldHMsIGFuZCBs
YXJnZXN0IHBhY2tldCBudW1iZXIgcmVjZWl2ZWQuCi0gIHJlY2VpdmVkX3BhY2tldHNfKys7Ci0g
IGludDE2X3Qgc25fZGlmZiA9IHJ0cF9oZWFkZXIuc2VxdWVuY2VOdW1iZXIgLSBtYXhfc2VxX25v
XzsKLSAgaWYgKHNuX2RpZmYgPj0gMCkgewotICAgIGlmIChydHBfaGVhZGVyLnNlcXVlbmNlTnVt
YmVyIDwgbWF4X3NlcV9ub18pIHsKLSAgICAgIC8vIFdyYXAtYXJvdW5kIGRldGVjdGVkLgotICAg
ICAgY3ljbGVzXysrOwotICAgIH0KLSAgICBtYXhfc2VxX25vXyA9IHJ0cF9oZWFkZXIuc2VxdWVu
Y2VOdW1iZXI7Ci0gIH0KLQotICAvLyBDYWxjdWxhdGUgaml0dGVyIGFjY29yZGluZyB0byBSRkMg
MzU1MCwgYW5kIHVwZGF0ZSBwcmV2aW91cyB0aW1lc3RhbXBzLgotICAvLyBOb3RlIHRoYXQgdGhl
IHZhbHVlIGluIHxqaXR0ZXJffCBpcyBpbiBRNC4KLSAgaWYgKHJlY2VpdmVkX3BhY2tldHNfID4g
MSkgewotICAgIGludDMyX3QgdHNfZGlmZiA9IHJlY2VpdmVfdGltZXN0YW1wIC0gKHJ0cF9oZWFk
ZXIudGltZXN0YW1wIC0gdHJhbnNpdF8pOwotICAgIGludDY0X3Qgaml0dGVyX2RpZmYgPSAoc3Rk
OjphYnMoaW50NjRfdHt0c19kaWZmfSkgPDwgNCkgLSBqaXR0ZXJfOwotICAgIC8vIENhbGN1bGF0
ZSAxNSAqIGppdHRlcl8gLyAxNiArIGppdHRlcl9kaWZmIC8gMTYgKHdpdGggcHJvcGVyIHJvdW5k
aW5nKS4KLSAgICBqaXR0ZXJfID0gaml0dGVyXyArICgoaml0dGVyX2RpZmYgKyA4KSA+PiA0KTsK
LSAgICBSVENfRENIRUNLX0dFKGppdHRlcl8sIDApOwotICB9Ci0gIHRyYW5zaXRfID0gcnRwX2hl
YWRlci50aW1lc3RhbXAgLSByZWNlaXZlX3RpbWVzdGFtcDsKLX0KLQotdm9pZCBSdGNwOjpHZXRT
dGF0aXN0aWNzKGJvb2wgbm9fcmVzZXQsIFJ0Y3BTdGF0aXN0aWNzKiBzdGF0cykgewotICAvLyBF
eHRlbmRlZCBoaWdoZXN0IHNlcXVlbmNlIG51bWJlciByZWNlaXZlZC4KLSAgc3RhdHMtPmV4dGVu
ZGVkX2hpZ2hlc3Rfc2VxdWVuY2VfbnVtYmVyID0KLSAgICAgIChzdGF0aWNfY2FzdDxpbnQ+KGN5
Y2xlc18pIDw8IDE2KSArIG1heF9zZXFfbm9fOwotCi0gIC8vIENhbGN1bGF0ZSBleHBlY3RlZCBu
dW1iZXIgb2YgcGFja2V0cyBhbmQgY29tcGFyZSBpdCB3aXRoIHRoZSBudW1iZXIgb2YKLSAgLy8g
cGFja2V0cyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVjZWl2ZWQuIFRoZSBjdW11bGF0aXZlIG51bWJl
ciBvZiBsb3N0IHBhY2tldHMKLSAgLy8gY2FuIGJlIGV4dHJhY3RlZC4KLSAgdWludDMyX3QgZXhw
ZWN0ZWRfcGFja2V0cyA9Ci0gICAgICBzdGF0cy0+ZXh0ZW5kZWRfaGlnaGVzdF9zZXF1ZW5jZV9u
dW1iZXIgLSBiYXNlX3NlcV9ub18gKyAxOwotICBpZiAocmVjZWl2ZWRfcGFja2V0c18gPT0gMCkg
ewotICAgIC8vIE5vIHBhY2tldHMgcmVjZWl2ZWQsIGFzc3VtZSBub25lIGxvc3QuCi0gICAgc3Rh
dHMtPnBhY2tldHNfbG9zdCA9IDA7Ci0gIH0gZWxzZSBpZiAoZXhwZWN0ZWRfcGFja2V0cyA+IHJl
Y2VpdmVkX3BhY2tldHNfKSB7Ci0gICAgc3RhdHMtPnBhY2tldHNfbG9zdCA9IGV4cGVjdGVkX3Bh
Y2tldHMgLSByZWNlaXZlZF9wYWNrZXRzXzsKLSAgICBpZiAoc3RhdHMtPnBhY2tldHNfbG9zdCA+
IDB4RkZGRkZGKSB7Ci0gICAgICBzdGF0cy0+cGFja2V0c19sb3N0ID0gMHhGRkZGRkY7Ci0gICAg
fQotICB9IGVsc2UgewotICAgIHN0YXRzLT5wYWNrZXRzX2xvc3QgPSAwOwotICB9Ci0KLSAgLy8g
RnJhY3Rpb24gbG9zdCBzaW5jZSBsYXN0IHJlcG9ydC4KLSAgdWludDMyX3QgZXhwZWN0ZWRfc2lu
Y2VfbGFzdCA9IGV4cGVjdGVkX3BhY2tldHMgLSBleHBlY3RlZF9wcmlvcl87Ci0gIHVpbnQzMl90
IHJlY2VpdmVkX3NpbmNlX2xhc3QgPSByZWNlaXZlZF9wYWNrZXRzXyAtIHJlY2VpdmVkX3BhY2tl
dHNfcHJpb3JfOwotICBpZiAoIW5vX3Jlc2V0KSB7Ci0gICAgZXhwZWN0ZWRfcHJpb3JfID0gZXhw
ZWN0ZWRfcGFja2V0czsKLSAgICByZWNlaXZlZF9wYWNrZXRzX3ByaW9yXyA9IHJlY2VpdmVkX3Bh
Y2tldHNfOwotICB9Ci0gIGludDMyX3QgbG9zdCA9IGV4cGVjdGVkX3NpbmNlX2xhc3QgLSByZWNl
aXZlZF9zaW5jZV9sYXN0OwotICBpZiAoZXhwZWN0ZWRfc2luY2VfbGFzdCA9PSAwIHx8IGxvc3Qg
PD0gMCB8fCByZWNlaXZlZF9wYWNrZXRzXyA9PSAwKSB7Ci0gICAgc3RhdHMtPmZyYWN0aW9uX2xv
c3QgPSAwOwotICB9IGVsc2UgewotICAgIHN0YXRzLT5mcmFjdGlvbl9sb3N0ID0gc3RkOjptaW4o
MHhGRlUsIChsb3N0IDw8IDgpIC8gZXhwZWN0ZWRfc2luY2VfbGFzdCk7Ci0gIH0KLQotICBzdGF0
cy0+aml0dGVyID0gaml0dGVyXyA+PiA0OyAgLy8gU2NhbGluZyBmcm9tIFE0LgotfQotCi19ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9ydGNwLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS9ydGNwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZGU3ZWI3ZjQ4
N2YyN2ViOGJjNjk2Y2U4MTA2OTgzOTg0OThmMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvcnRjcC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
LSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19B
VURJT19DT0RJTkdfTkVURVFfUlRDUF9IXwotI2RlZmluZSBNT0RVTEVTX0FVRElPX0NPRElOR19O
RVRFUV9SVENQX0hfCi0KLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9pbmNs
dWRlL25ldGVxLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotCi1u
YW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gRm9yd2FyZCBkZWNsYXJhdGlvbi4KLXN0cnVjdCBSVFBI
ZWFkZXI7Ci0KLWNsYXNzIFJ0Y3AgewotIHB1YmxpYzoKLSAgUnRjcCgpIHsgSW5pdCgwKTsgfQot
Ci0gIH5SdGNwKCkge30KLQotICAvLyBSZXNldHMgdGhlIFJUQ1Agc3RhdGlzdGljcywgYW5kIHNl
dHMgdGhlIGZpcnN0IHJlY2VpdmVkIHNlcXVlbmNlIG51bWJlci4KLSAgdm9pZCBJbml0KHVpbnQx
Nl90IHN0YXJ0X3NlcXVlbmNlX251bWJlcik7Ci0KLSAgLy8gVXBkYXRlcyB0aGUgUlRDUCBzdGF0
aXN0aWNzIHdpdGggYSBuZXcgcmVjZWl2ZWQgcGFja2V0LgotICB2b2lkIFVwZGF0ZShjb25zdCBS
VFBIZWFkZXImIHJ0cF9oZWFkZXIsIHVpbnQzMl90IHJlY2VpdmVfdGltZXN0YW1wKTsKLQotICAv
LyBSZXR1cm5zIHRoZSBjdXJyZW50IFJUQ1Agc3RhdGlzdGljcy4gSWYgfG5vX3Jlc2V0fCBpcyB0
cnVlLCB0aGUgc3RhdGlzdGljcwotICAvLyBhcmUgbm90IHJlc2V0LCBvdGhlcndpc2UgdGhleSBh
cmUuCi0gIHZvaWQgR2V0U3RhdGlzdGljcyhib29sIG5vX3Jlc2V0LCBSdGNwU3RhdGlzdGljcyog
c3RhdHMpOwotCi0gcHJpdmF0ZToKLSAgdWludDE2X3QgY3ljbGVzXzsgICAgICAgLy8gVGhlIG51
bWJlciBvZiB3cmFwLWFyb3VuZHMgZm9yIHRoZSBzZXF1ZW5jZSBudW1iZXIuCi0gIHVpbnQxNl90
IG1heF9zZXFfbm9fOyAgIC8vIFRoZSBtYXhpbXVtIHNlcXVlbmNlIG51bWJlciByZWNlaXZlZC4g
U3RhcnRzIG92ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSAwIGFmdGVyIHdy
YXAtYXJvdW5kLgotICB1aW50MTZfdCBiYXNlX3NlcV9ub187ICAvLyBUaGUgc2VxdWVuY2UgbnVt
YmVyIG9mIHRoZSBmaXJzdCByZWNlaXZlZCBwYWNrZXQuCi0gIHVpbnQzMl90IHJlY2VpdmVkX3Bh
Y2tldHNfOyAgLy8gVGhlIG51bWJlciBvZiBwYWNrZXRzIHRoYXQgaGF2ZSBiZWVuIHJlY2VpdmVk
LgotICB1aW50MzJfdCByZWNlaXZlZF9wYWNrZXRzX3ByaW9yXzsgIC8vIE51bWJlciBvZiBwYWNr
ZXRzIHJlY2VpdmVkIHdoZW4gbGFzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHJlcG9ydCB3YXMgZ2VuZXJhdGVkLgotICB1aW50MzJfdCBleHBlY3RlZF9wcmlvcl87
ICAvLyBFeHBlY3RlZCBudW1iZXIgb2YgcGFja2V0cywgYXQgdGhlIHRpbWUgb2YgdGhlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxhc3QgcmVwb3J0LgotICBpbnQ2NF90IGppdHRl
cl87ICAgICAgICAgICAvLyBDdXJyZW50IGppdHRlciB2YWx1ZSBpbiBRNC4KLSAgaW50MzJfdCB0
cmFuc2l0XzsgICAgICAgICAgLy8gQ2xvY2sgZGlmZmVyZW5jZSBmb3IgcHJldmlvdXMgcGFja2V0
LgotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oUnRjcCk7Ci19OwotCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCi0jZW5kaWYgIC8vIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1JU
Q1BfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N0YXRpc3RpY3NfY2FsY3VsYXRvci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
Y29kaW5nL25ldGVxL3N0YXRpc3RpY3NfY2FsY3VsYXRvci5jYwppbmRleCBjMGU3YTQwMmFhYzAw
YWE3MmE1Zjc5ZGQzNDg2OGYyNjNjOWY4NTFkLi41MDUyMWZiMDNkMzY0ZWEwODBkNDU3MDQ3YWM3
MGYxYTM4NzlhNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9zdGF0aXN0aWNzX2NhbGN1bGF0
b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmNjCkBAIC0xMjYs
NyArMTI2LDEwIEBAIFN0YXRpc3RpY3NDYWxjdWxhdG9yOjpTdGF0aXN0aWNzQ2FsY3VsYXRvcigp
CiAgICAgICAgICAgMTAwKSwKICAgICAgIGV4Y2Vzc19idWZmZXJfZGVsYXlfKCJXZWJSVEMuQXVk
aW8uQXZlcmFnZUV4Y2Vzc0J1ZmZlckRlbGF5TXMiLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNjAwMDAsICAvLyA2MCBzZWNvbmRzIHJlcG9ydCBpbnRlcnZhbC4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEwMDApIHt9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwKSwK
KyAgICAgIGJ1ZmZlcl9mdWxsX2NvdW50ZXJfKCJXZWJSVEMuQXVkaW8uSml0dGVyQnVmZmVyRnVs
bFBlck1pbnV0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA2MDAwMCwgIC8vIDYwIHNl
Y29uZHMgcmVwb3J0IGludGVydmFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwKSB7
fQogCiBTdGF0aXN0aWNzQ2FsY3VsYXRvcjo6flN0YXRpc3RpY3NDYWxjdWxhdG9yKCkgPSBkZWZh
dWx0OwogCkBAIC0yMjksNiArMjMyLDcgQEAgdm9pZCBTdGF0aXN0aWNzQ2FsY3VsYXRvcjo6SW5j
cmVhc2VDb3VudGVyKHNpemVfdCBudW1fc2FtcGxlcywgaW50IGZzX2h6KSB7CiAgICAgICBydGM6
OkNoZWNrZWREaXZFeGFjdChzdGF0aWNfY2FzdDxpbnQ+KDEwMDAgKiBudW1fc2FtcGxlcyksIGZz
X2h6KTsKICAgZGVsYXllZF9wYWNrZXRfb3V0YWdlX2NvdW50ZXJfLkFkdmFuY2VDbG9jayh0aW1l
X3N0ZXBfbXMpOwogICBleGNlc3NfYnVmZmVyX2RlbGF5Xy5BZHZhbmNlQ2xvY2sodGltZV9zdGVw
X21zKTsKKyAgYnVmZmVyX2Z1bGxfY291bnRlcl8uQWR2YW5jZUNsb2NrKHRpbWVfc3RlcF9tcyk7
CiAgIHRpbWVzdGFtcHNfc2luY2VfbGFzdF9yZXBvcnRfICs9IHN0YXRpY19jYXN0PHVpbnQzMl90
PihudW1fc2FtcGxlcyk7CiAgIGlmICh0aW1lc3RhbXBzX3NpbmNlX2xhc3RfcmVwb3J0XyA+CiAg
ICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnNfaHogKiBrTWF4UmVwb3J0UGVyaW9kKSkgewpA
QCAtMjUwLDEzICsyNTQsMTcgQEAgdm9pZCBTdGF0aXN0aWNzQ2FsY3VsYXRvcjo6U2Vjb25kYXJ5
RGVjb2RlZFNhbXBsZXMoaW50IG51bV9zYW1wbGVzKSB7CiAKIHZvaWQgU3RhdGlzdGljc0NhbGN1
bGF0b3I6OkZsdXNoZWRQYWNrZXRCdWZmZXIoKSB7CiAgIG9wZXJhdGlvbnNfYW5kX3N0YXRlXy5w
YWNrZXRfYnVmZmVyX2ZsdXNoZXMrKzsKKyAgYnVmZmVyX2Z1bGxfY291bnRlcl8uUmVnaXN0ZXJT
YW1wbGUoKTsKIH0KIAotdm9pZCBTdGF0aXN0aWNzQ2FsY3VsYXRvcjo6TG9nRGVsYXllZFBhY2tl
dE91dGFnZUV2ZW50KGludCBvdXRhZ2VfZHVyYXRpb25fbXMpIHsKK3ZvaWQgU3RhdGlzdGljc0Nh
bGN1bGF0b3I6OkxvZ0RlbGF5ZWRQYWNrZXRPdXRhZ2VFdmVudChpbnQgbnVtX3NhbXBsZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGZzX2h6KSB7CisgIGludCBvdXRhZ2VfZHVyYXRpb25fbXMgPSBudW1fc2FtcGxlcyAvIChmc19o
eiAvIDEwMDApOwogICBSVENfSElTVE9HUkFNX0NPVU5UUygiV2ViUlRDLkF1ZGlvLkRlbGF5ZWRQ
YWNrZXRPdXRhZ2VFdmVudE1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgb3V0YWdlX2R1cmF0
aW9uX21zLCAxIC8qIG1pbiAqLywgMjAwMCAvKiBtYXggKi8sCiAgICAgICAgICAgICAgICAgICAg
ICAgIDEwMCAvKiBidWNrZXQgY291bnQgKi8pOwogICBkZWxheWVkX3BhY2tldF9vdXRhZ2VfY291
bnRlcl8uUmVnaXN0ZXJTYW1wbGUoKTsKKyAgbGlmZXRpbWVfc3RhdHNfLmRlbGF5ZWRfcGFja2V0
X291dGFnZV9zYW1wbGVzICs9IG51bV9zYW1wbGVzOwogfQogCiB2b2lkIFN0YXRpc3RpY3NDYWxj
dWxhdG9yOjpTdG9yZVdhaXRpbmdUaW1lKGludCB3YWl0aW5nX3RpbWVfbXMpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3N0YXRpc3RpY3NfY2FsY3VsYXRvci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3Rh
dGlzdGljc19jYWxjdWxhdG9yLmgKaW5kZXggOWU1ZGFjZmQ5MjBhNjM5OTgwMjZjM2JjYjk2YmVk
OGYzM2ViMDRhNi4uNDliNzRhMDRiM2I0YTZkNzdjZTA1ZTU3MDRmYzg2YzJiYzQ5NjhhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvc3RhdGlzdGljc19jYWxjdWxhdG9yLmgKQEAgLTg2LDEwICs4NiwxMCBAQCBjbGFzcyBT
dGF0aXN0aWNzQ2FsY3VsYXRvciB7CiAgIC8vIFJlcnBvcnQgdGhhdCB0aGUgcGFja2V0IGJ1ZmZl
ciB3YXMgZmx1c2hlZC4KICAgdm9pZCBGbHVzaGVkUGFja2V0QnVmZmVyKCk7CiAKLSAgLy8gTG9n
cyBhIGRlbGF5ZWQgcGFja2V0IG91dGFnZSBldmVudCBvZiB8b3V0YWdlX2R1cmF0aW9uX21zfC4g
QSBkZWxheWVkCi0gIC8vIHBhY2tldCBvdXRhZ2UgZXZlbnQgaXMgZGVmaW5lZCBhcyBhbiBleHBh
bmQgcGVyaW9kIGNhdXNlZCBub3QgYnkgYW4gYWN0dWFsCi0gIC8vIHBhY2tldCBsb3NzLCBidXQg
YnkgYSBkZWxheWVkIHBhY2tldC4KLSAgdmlydHVhbCB2b2lkIExvZ0RlbGF5ZWRQYWNrZXRPdXRh
Z2VFdmVudChpbnQgb3V0YWdlX2R1cmF0aW9uX21zKTsKKyAgLy8gTG9ncyBhIGRlbGF5ZWQgcGFj
a2V0IG91dGFnZSBldmVudCBvZiB8bnVtX3NhbXBsZXN8IGV4cGFuZGVkIGF0IGEgc2FtcGxlCisg
IC8vIHJhdGUgb2YgfGZzX2h6fC4gQSBkZWxheWVkIHBhY2tldCBvdXRhZ2UgZXZlbnQgaXMgZGVm
aW5lZCBhcyBhbiBleHBhbmQKKyAgLy8gcGVyaW9kIGNhdXNlZCBub3QgYnkgYW4gYWN0dWFsIHBh
Y2tldCBsb3NzLCBidXQgYnkgYSBkZWxheWVkIHBhY2tldC4KKyAgdmlydHVhbCB2b2lkIExvZ0Rl
bGF5ZWRQYWNrZXRPdXRhZ2VFdmVudChpbnQgbnVtX3NhbXBsZXMsIGludCBmc19oeik7CiAKICAg
Ly8gUmV0dXJucyB0aGUgY3VycmVudCBuZXR3b3JrIHN0YXRpc3RpY3MgaW4gfHN0YXRzfC4gVGhl
IGN1cnJlbnQgc2FtcGxlIHJhdGUKICAgLy8gaXMgfGZzX2h6fCwgdGhlIHRvdGFsIG51bWJlciBv
ZiBzYW1wbGVzIGluIHBhY2tldCBidWZmZXIgYW5kIHN5bmMgYnVmZmVyCkBAIC0xOTksNiArMTk5
LDcgQEAgY2xhc3MgU3RhdGlzdGljc0NhbGN1bGF0b3IgewogICBzaXplX3QgZGlzY2FyZGVkX3Nl
Y29uZGFyeV9wYWNrZXRzXzsKICAgUGVyaW9kaWNVbWFDb3VudCBkZWxheWVkX3BhY2tldF9vdXRh
Z2VfY291bnRlcl87CiAgIFBlcmlvZGljVW1hQXZlcmFnZSBleGNlc3NfYnVmZmVyX2RlbGF5XzsK
KyAgUGVyaW9kaWNVbWFDb3VudCBidWZmZXJfZnVsbF9jb3VudGVyXzsKIAogICBSVENfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKFN0YXRpc3RpY3NDYWxjdWxhdG9yKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS9zeW5jX2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvc3luY19idWZmZXIuaApp
bmRleCA3MmUzMjBjNjFmNmY5MDE3YzhiMmQ1NDA5ODAyNDllODBlZWFjMDkyLi5kNjQ1ZTkxNjNl
OTEwNWM5OGYxYjkwMGIwOWNhZWY0MTZmZmZjYTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9z
eW5jX2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3N5bmNfYnVmZmVyLmgKQEAgLTExLDggKzEx
LDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1NZTkNfQlVGRkVSX0hf
CiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1NZTkNfQlVGRkVSX0hfCiAKKyNp
bmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKICNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb19tdWx0aV92ZWN0b3IuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS9hdWRpb192ZWN0b3IuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfaWxiY19xdWFsaXR5X3Rlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90ZXN0L25ldGVxX2lsYmNfcXVhbGl0eV90ZXN0LmNjCmluZGV4IGFkNjEyMzVj
ZjI4OTY2ZGFhYjQ5MWU2ZGRiNzc2MWFmODI4NTBjNGMuLjZmMTAzNDUyOTgwZGU1MmYwOTc0NTJm
YjQ5NmFjMzJmZjk1YzRmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfaWxi
Y19xdWFsaXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9pbGJjX3F1YWxp
dHlfdGVzdC5jYwpAQCAtMjUsNyArMjUsNyBAQCBuYW1lc3BhY2Ugewogc3RhdGljIGNvbnN0IGlu
dCBrSW5wdXRTYW1wbGVSYXRlS2h6ID0gODsKIHN0YXRpYyBjb25zdCBpbnQga091dHB1dFNhbXBs
ZVJhdGVLaHogPSA4OwogCi1ERUZJTkVfaW50KGZyYW1lX3NpemVfbXMsIDIwLCAiQ29kZWMgZnJh
bWUgc2l6ZSAobWlsbGlzZWNvbmRzKS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGZyYW1lX3NpemVf
bXMsIDIwLCAiQ29kZWMgZnJhbWUgc2l6ZSAobWlsbGlzZWNvbmRzKS4iKTsKIAogfSAgLy8gbmFt
ZXNwYWNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfaXNhY19xdWFsaXR5
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX2lzYWNfcXVhbGl0eV90ZXN0LmNjCmlu
ZGV4IDk0OTg0Yjg3ZTZmMTIzOTIwMTkyNGFmYTc1ZGJmMTAxNmQwOGUzMjUuLjY1MWIwY2E3MWE2
OGVkODM0MTBhMTRkZTlkNzM5Yjg4MDU1MzU2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rl
c3QvbmV0ZXFfaXNhY19xdWFsaXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRl
cV9pc2FjX3F1YWxpdHlfdGVzdC5jYwpAQCAtMjEsNyArMjEsNyBAQCBzdGF0aWMgY29uc3QgaW50
IGtJc2FjQmxvY2tEdXJhdGlvbk1zID0gMzA7CiBzdGF0aWMgY29uc3QgaW50IGtJc2FjSW5wdXRT
YW1wbGluZ0toeiA9IDE2Owogc3RhdGljIGNvbnN0IGludCBrSXNhY091dHB1dFNhbXBsaW5nS2h6
ID0gMTY7CiAKLURFRklORV9pbnQoYml0X3JhdGVfa2JwcywgMzIsICJUYXJnZXQgYml0IHJhdGUg
KGticHMpLiIpOworV0VCUlRDX0RFRklORV9pbnQoYml0X3JhdGVfa2JwcywgMzIsICJUYXJnZXQg
Yml0IHJhdGUgKGticHMpLiIpOwogCiB9ICAvLyBuYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvbmV0ZXEvdGVzdC9uZXRlcV9vcHVzX3F1YWxpdHlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rl
c3QvbmV0ZXFfb3B1c19xdWFsaXR5X3Rlc3QuY2MKaW5kZXggNjg2MWU0YzU1YWFmZDZjNDQ2NDdm
ZGJjMDRiMmFkOTI1MDg2ZmM2Mi4uZjRhMzYzNjNiYWE5NWJlYTdlYjAzY2E2ZDJhNTNkOTBlYWE2
NmQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9vcHVzX3F1YWxpdHlfdGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX29wdXNfcXVhbGl0eV90ZXN0LmNjCkBA
IC0yMiwyNCArMjIsMjYgQEAgbmFtZXNwYWNlIHsKIHN0YXRpYyBjb25zdCBpbnQga09wdXNCbG9j
a0R1cmF0aW9uTXMgPSAyMDsKIHN0YXRpYyBjb25zdCBpbnQga09wdXNTYW1wbGluZ0toeiA9IDQ4
OwogCi1ERUZJTkVfaW50KGJpdF9yYXRlX2ticHMsIDMyLCAiVGFyZ2V0IGJpdCByYXRlIChrYnBz
KS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGJpdF9yYXRlX2ticHMsIDMyLCAiVGFyZ2V0IGJpdCBy
YXRlIChrYnBzKS4iKTsKIAotREVGSU5FX2ludChjb21wbGV4aXR5LAotICAgICAgICAgICAxMCwK
LSAgICAgICAgICAgIkNvbXBsZXhpdHk6IDAgfiAxMCAtLSBkZWZpbmVkIGFzIGluIE9wdXMiCi0g
ICAgICAgICAgICJzcGVjaWZpY2F0aW9uLiIpOworV0VCUlRDX0RFRklORV9pbnQoY29tcGxleGl0
eSwKKyAgICAgICAgICAgICAgICAgIDEwLAorICAgICAgICAgICAgICAgICAgIkNvbXBsZXhpdHk6
IDAgfiAxMCAtLSBkZWZpbmVkIGFzIGluIE9wdXMiCisgICAgICAgICAgICAgICAgICAic3BlY2lm
aWNhdGlvbi4iKTsKIAotREVGSU5FX2ludChtYXhwbGF5YmFja3JhdGUsIDQ4MDAwLCAiTWF4aW11
bSBwbGF5YmFjayByYXRlIChIeikuIik7CitXRUJSVENfREVGSU5FX2ludChtYXhwbGF5YmFja3Jh
dGUsIDQ4MDAwLCAiTWF4aW11bSBwbGF5YmFjayByYXRlIChIeikuIik7CiAKLURFRklORV9pbnQo
YXBwbGljYXRpb24sIDAsICJBcHBsaWNhdGlvbiBtb2RlOiAwIC0tIFZPSVAsIDEgLS0gQXVkaW8u
Iik7CitXRUJSVENfREVGSU5FX2ludChhcHBsaWNhdGlvbiwgMCwgIkFwcGxpY2F0aW9uIG1vZGU6
IDAgLS0gVk9JUCwgMSAtLSBBdWRpby4iKTsKIAotREVGSU5FX2ludChyZXBvcnRlZF9sb3NzX3Jh
dGUsIDEwLCAiUmVwb3J0ZWQgcGVyY2VudGlsZSBvZiBwYWNrZXQgbG9zcy4iKTsKK1dFQlJUQ19E
RUZJTkVfaW50KHJlcG9ydGVkX2xvc3NfcmF0ZSwKKyAgICAgICAgICAgICAgICAgIDEwLAorICAg
ICAgICAgICAgICAgICAgIlJlcG9ydGVkIHBlcmNlbnRpbGUgb2YgcGFja2V0IGxvc3MuIik7CiAK
LURFRklORV9ib29sKGZlYywgZmFsc2UsICJFbmFibGUgRkVDIGZvciBlbmNvZGluZyAoLW5vZmVj
IHRvIGRpc2FibGUpLiIpOworV0VCUlRDX0RFRklORV9ib29sKGZlYywgZmFsc2UsICJFbmFibGUg
RkVDIGZvciBlbmNvZGluZyAoLW5vZmVjIHRvIGRpc2FibGUpLiIpOwogCi1ERUZJTkVfYm9vbChk
dHgsIGZhbHNlLCAiRW5hYmxlIERUWCBmb3IgZW5jb2RpbmcgKC1ub2R0eCB0byBkaXNhYmxlKS4i
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbChkdHgsIGZhbHNlLCAiRW5hYmxlIERUWCBmb3IgZW5jb2Rp
bmcgKC1ub2R0eCB0byBkaXNhYmxlKS4iKTsKIAotREVGSU5FX2ludChzdWJfcGFja2V0cywgMSwg
Ik51bWJlciBvZiBzdWIgcGFja2V0cyB0byByZXBhY2tldGl6ZS4iKTsKK1dFQlJUQ19ERUZJTkVf
aW50KHN1Yl9wYWNrZXRzLCAxLCAiTnVtYmVyIG9mIHN1YiBwYWNrZXRzIHRvIHJlcGFja2V0aXpl
LiIpOwogCiB9ICAvLyBuYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9u
ZXRlcV9wY20xNmJfcXVhbGl0eV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9wY20x
NmJfcXVhbGl0eV90ZXN0LmNjCmluZGV4IDg4NzJiOTRhMDYzOTMxNWMyZTlmZDk2NmIxZDU3NDM5
NDFiNmRmOGQuLjljNTM5MTlkNTQwNzdlZjMwNjRkYTg4Y2I5NDJmZWYxZDQ5OWY5OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfcGNtMTZiX3F1YWxpdHlfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX3BjbTE2Yl9xdWFsaXR5X3Rlc3QuY2MKQEAgLTI2LDcg
KzI2LDcgQEAgbmFtZXNwYWNlIHsKIHN0YXRpYyBjb25zdCBpbnQga0lucHV0U2FtcGxlUmF0ZUto
eiA9IDQ4Owogc3RhdGljIGNvbnN0IGludCBrT3V0cHV0U2FtcGxlUmF0ZUtoeiA9IDQ4OwogCi1E
RUZJTkVfaW50KGZyYW1lX3NpemVfbXMsIDIwLCAiQ29kZWMgZnJhbWUgc2l6ZSAobWlsbGlzZWNv
bmRzKS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGZyYW1lX3NpemVfbXMsIDIwLCAiQ29kZWMgZnJh
bWUgc2l6ZSAobWlsbGlzZWNvbmRzKS4iKTsKIAogfSAgLy8gbmFtZXNwYWNlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfcGNtdV9xdWFsaXR5X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9u
ZXRlcS90ZXN0L25ldGVxX3BjbXVfcXVhbGl0eV90ZXN0LmNjCmluZGV4IDU0ZmY4NDk3MzlhMzkw
MmYzYzk3NGFiNjJlMGY1ODM2MWE5MGY5MmQuLjg1ZjIyNjcxZWFjNDdhZGE5OWZlMzg5MjUzYjE2
MmYxZDQ1OGQzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfcGNtdV9xdWFs
aXR5X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9wY211X3F1YWxpdHlfdGVz
dC5jYwpAQCAtMjUsNyArMjUsNyBAQCBuYW1lc3BhY2Ugewogc3RhdGljIGNvbnN0IGludCBrSW5w
dXRTYW1wbGVSYXRlS2h6ID0gODsKIHN0YXRpYyBjb25zdCBpbnQga091dHB1dFNhbXBsZVJhdGVL
aHogPSA4OwogCi1ERUZJTkVfaW50KGZyYW1lX3NpemVfbXMsIDIwLCAiQ29kZWMgZnJhbWUgc2l6
ZSAobWlsbGlzZWNvbmRzKS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGZyYW1lX3NpemVfbXMsIDIw
LCAiQ29kZWMgZnJhbWUgc2l6ZSAobWlsbGlzZWNvbmRzKS4iKTsKIAogfSAgLy8gbmFtZXNwYWNl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rlc3QvbmV0ZXFfc3BlZWRfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL3Rlc3QvbmV0ZXFfc3BlZWRfdGVzdC5jYwppbmRleCBjNDg2YWM2MGJkN2M4OWNl
NDE3MjI5YzUyMGNjOWY0YTYwM2FiOWY2Li43MDc3N2EyZDAyMTQ5MjE0ODNhZGRjZjIwYWQ1OWQz
YzkxYmFmM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90ZXN0L25ldGVxX3NwZWVkX3Rlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdGVzdC9uZXRlcV9zcGVlZF90ZXN0LmNjCkBAIC0xNCwxMyAr
MTQsMTIgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25l
dGVxX3BlcmZvcm1hbmNlX3Rlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgotI2lu
Y2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKIC8vIERlZmluZSBjb21tYW5k
IGxpbmUgZmxhZ3MuCi1ERUZJTkVfaW50KHJ1bnRpbWVfbXMsIDEwMDAwLCAiU2ltdWxhdGVkIHJ1
bnRpbWUgaW4gbXMuIik7Ci1ERUZJTkVfaW50KGxvc3NyYXRlLCAxMCwgIlBhY2tldCBsb3NzcmF0
ZTsgZHJvcCBldmVyeSBOIHBhY2tldHMuIik7Ci1ERUZJTkVfZmxvYXQoZHJpZnQsIDAuMWYsICJD
bG9ja2RyaWZ0IGZhY3Rvci4iKTsKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhp
cyBtZXNzYWdlLiIpOworV0VCUlRDX0RFRklORV9pbnQocnVudGltZV9tcywgMTAwMDAsICJTaW11
bGF0ZWQgcnVudGltZSBpbiBtcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGxvc3NyYXRlLCAxMCwg
IlBhY2tldCBsb3NzcmF0ZTsgZHJvcCBldmVyeSBOIHBhY2tldHMuIik7CitXRUJSVENfREVGSU5F
X2Zsb2F0KGRyaWZ0LCAwLjFmLCAiQ2xvY2tkcmlmdCBmYWN0b3IuIik7CitXRUJSVENfREVGSU5F
X2Jvb2woaGVscCwgZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CiAKIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgc3RkOjpzdHJpbmcgcHJvZ3JhbV9uYW1lID0gYXJn
dlswXTsKQEAgLTMzLDcgKzMyLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkg
ewogICAgICAgIiAgLS1sb3NzcmF0ZT1OICAgICAgICAgICBkcm9wIGV2ZXJ5IE4gcGFja2V0czsg
ZGVmYXVsdCBpcyAxMFxuIgogICAgICAgIiAgLS1kcmlmdD1GICAgICAgICAgICAgICBjbG9ja2Ry
aWZ0IGZhY3RvciBiZXR3ZWVuIDAuMCBhbmQgMS4wOyAiCiAgICAgICAiZGVmYXVsdCBpcyAwLjFc
biI7Ci0gIHdlYnJ0Yzo6dGVzdDo6U2V0RXhlY3V0YWJsZVBhdGgoYXJndlswXSk7CiAgIGlmIChy
dGM6OkZsYWdMaXN0OjpTZXRGbGFnc0Zyb21Db21tYW5kTGluZSgmYXJnYywgYXJndiwgdHJ1ZSkg
fHwgRkxBR19oZWxwIHx8CiAgICAgICBhcmdjICE9IDEpIHsKICAgICBwcmludGYoIiVzIiwgdXNh
Z2UuY19zdHIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aWNrX3RpbWVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS90aWNrX3RpbWVyLmgKaW5kZXggNTIwMDk5ZTM0NjYyNGI1NTc1MjkzNTg1ZGM5ZDdj
YTdkM2NjNGQ2MC4uMDJmMDgzZTAyZWI5NzljYzc3YWZmYWE0NTgxNjYxMTI2MjJmYTU0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvbmV0ZXEvdGlja190aW1lci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpY2tf
dGltZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0NPRElOR19O
RVRFUV9USUNLX1RJTUVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1RJ
Q0tfVElNRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGlt
ZXN0YW1wX3NjYWxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3RpbWVzdGFtcF9zY2FsZXIuY2MKaW5kZXgg
MDdkOTQ1ZWRjZTA3MTJkN2Y1MWU0ZWNlNDFjOWY5YmFkOGUyYmNiYS4uYjA0NjFiYjkyZDg0ZWYz
NDA4MmIxYzRiMTZkMTQ5ZGRkZmY5ZjgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdGltZXN0
YW1wX3NjYWxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aW1lc3RhbXBfc2NhbGVyLmNjCkBAIC0x
MCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90aW1l
c3RhbXBfc2NhbGVyLmgiCiAKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2F1ZGlvX2Zvcm1h
dC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL2RlY29kZXJfZGF0YWJh
c2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvdG9vbHMvbmV0ZXFfZXZlbnRfbG9nX2lucHV0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMv
bmV0ZXFfZXZlbnRfbG9nX2lucHV0LmNjCmluZGV4IDIxYzVmOWVmMDIyM2Y3YjEwZThhNzc1YjBm
ZTAwN2JhMmY1M2VhOTYuLjkxMDdlNWU1ZWY0ZmMwMjRjMGU4MDUyMWY0MTkxZDY1MmZkZTMyOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX2V2ZW50X2xvZ19pbnB1dC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9ldmVudF9sb2dfaW5wdXQuY2MKQEAgLTE5LDEx
ICsxOSw4IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewogCiBOZXRFcUV2
ZW50TG9nSW5wdXQ6Ok5ldEVxRXZlbnRMb2dJbnB1dChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9u
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUnRwSGVh
ZGVyRXh0ZW5zaW9uTWFwJiBoZHJfZXh0X21hcCkKLSAgICA6IHNvdXJjZV8oUnRjRXZlbnRMb2dT
b3VyY2U6OkNyZWF0ZShmaWxlX25hbWUpKSB7Ci0gIGZvciAoY29uc3QgYXV0byYgZXh0X3BhaXIg
OiBoZHJfZXh0X21hcCkgewotICAgIHNvdXJjZV8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9u
KGV4dF9wYWlyLnNlY29uZCwgZXh0X3BhaXIuZmlyc3QpOwotICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gc3NyY19maWx0
ZXIpCisgICAgOiBzb3VyY2VfKFJ0Y0V2ZW50TG9nU291cmNlOjpDcmVhdGUoZmlsZV9uYW1lLCBz
c3JjX2ZpbHRlcikpIHsKICAgTG9hZE5leHRQYWNrZXQoKTsKICAgQWR2YW5jZU91dHB1dEV2ZW50
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9ldmVudF9sb2dfaW5w
dXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX2V2ZW50X2xvZ19pbnB1dC5oCmluZGV4IDg2
Y2Y5ZjJmMDJhOTJiNmVmMzhjNDQ3YmZkODlmY2ZmODU0Y2JkMGIuLmUwNGRmMTY4NGYxYjg3MWQz
Y2NjY2VlNzdlOGZiNDk1MGUzYjIzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25l
dGVxX2V2ZW50X2xvZ19pbnB1dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX2V2ZW50
X2xvZ19pbnB1dC5oCkBAIC0yOCw3ICsyOCw3IEBAIGNsYXNzIFJ0Y0V2ZW50TG9nU291cmNlOwog
Y2xhc3MgTmV0RXFFdmVudExvZ0lucHV0IGZpbmFsIDogcHVibGljIE5ldEVxUGFja2V0U291cmNl
SW5wdXQgewogIHB1YmxpYzoKICAgTmV0RXFFdmVudExvZ0lucHV0KGNvbnN0IHN0ZDo6c3RyaW5n
JiBmaWxlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBSdHBIZWFkZXJFeHRlbnNp
b25NYXAmIGhkcl9leHRfbWFwKTsKKyAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFs
PHVpbnQzMl90PiBzc3JjX2ZpbHRlcik7CiAKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gTmV4
dE91dHB1dEV2ZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICB2b2lkIEFkdmFuY2VPdXRwdXRF
dmVudCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGFj
a2V0X3NvdXJjZV9pbnB1dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3BhY2tldF9zb3Vy
Y2VfaW5wdXQuY2MKaW5kZXggYTg2Y2Y2YWZhNTkwMTc4NGY3MTY0MDYzMGFkZGU2YTk4YTkyNGY2
Zi4uZWUwMjI4OGM4NmQ2NmU1ZjNkZDA2YjE0OTVjZDhlNjI0NTY2NjJmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGFja2V0X3NvdXJjZV9pbnB1dC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9uZXRlcS90b29scy9uZXRlcV9wYWNrZXRfc291cmNlX2lucHV0LmNjCkBAIC01OCwxNSArNTgs
MTAgQEAgc3RkOjp1bmlxdWVfcHRyPE5ldEVxSW5wdXQ6OlBhY2tldERhdGE+IE5ldEVxUGFja2V0
U291cmNlSW5wdXQ6OlBvcFBhY2tldCgpIHsKICAgcmV0dXJuIHBhY2tldF9kYXRhOwogfQogCi12
b2lkIE5ldEVxUGFja2V0U291cmNlSW5wdXQ6OlNlbGVjdFNzcmModWludDMyX3Qgc3NyYykgewot
ICBzb3VyY2UoKS0+U2VsZWN0U3NyYyhzc3JjKTsKLSAgaWYgKHBhY2tldF8gJiYgcGFja2V0Xy0+
aGVhZGVyKCkuc3NyYyAhPSBzc3JjKQotICAgIExvYWROZXh0UGFja2V0KCk7Ci19Ci0KIE5ldEVx
UnRwRHVtcElucHV0OjpOZXRFcVJ0cER1bXBJbnB1dChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9u
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJ0cEhlYWRl
ckV4dGVuc2lvbk1hcCYgaGRyX2V4dF9tYXApCi0gICAgOiBzb3VyY2VfKFJ0cEZpbGVTb3VyY2U6
OkNyZWF0ZShmaWxlX25hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9uTWFwJiBoZHJfZXh0X21hcCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gc3NyY19m
aWx0ZXIpCisgICAgOiBzb3VyY2VfKFJ0cEZpbGVTb3VyY2U6OkNyZWF0ZShmaWxlX25hbWUsIHNz
cmNfZmlsdGVyKSkgewogICBmb3IgKGNvbnN0IGF1dG8mIGV4dF9wYWlyIDogaGRyX2V4dF9tYXAp
IHsKICAgICBzb3VyY2VfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihleHRfcGFpci5zZWNv
bmQsIGV4dF9wYWlyLmZpcnN0KTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMv
bmV0ZXFfcGFja2V0X3NvdXJjZV9pbnB1dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcGFj
a2V0X3NvdXJjZV9pbnB1dC5oCmluZGV4IGIzMmM1MzQwODUxZjY2MjU1YTU1ZDY2ZDg2ZWU4Zjgw
ZTA5NTZlODQuLjg2MzNkMWY1ZGQxY2YzN2VjNjcxYjg3MjRlMmNhYzI4OTQ0ZTAxMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3BhY2tldF9zb3VyY2VfaW5wdXQuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9wYWNrZXRfc291cmNlX2lucHV0LmgKQEAgLTEyLDgg
KzEyLDEwIEBACiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fQ09ESU5HX05FVEVRX1RPT0xTX05FVEVR
X1BBQ0tFVF9TT1VSQ0VfSU5QVVRfSF8KIAogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX2lucHV0
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMu
aCIKIApAQCAtMzIsNyArMzQsNiBAQCBjbGFzcyBOZXRFcVBhY2tldFNvdXJjZUlucHV0IDogcHVi
bGljIE5ldEVxSW5wdXQgewogICBzdGQ6OnVuaXF1ZV9wdHI8UGFja2V0RGF0YT4gUG9wUGFja2V0
KCkgb3ZlcnJpZGU7CiAgIGFic2w6Om9wdGlvbmFsPFJUUEhlYWRlcj4gTmV4dEhlYWRlcigpIGNv
bnN0IG92ZXJyaWRlOwogICBib29sIGVuZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW5l
eHRfb3V0cHV0X2V2ZW50X21zXzsgfQotICB2b2lkIFNlbGVjdFNzcmModWludDMyX3QpOwogCiAg
cHJvdGVjdGVkOgogICB2aXJ0dWFsIFBhY2tldFNvdXJjZSogc291cmNlKCkgPSAwOwpAQCAtNDgs
NyArNDksOCBAQCBjbGFzcyBOZXRFcVBhY2tldFNvdXJjZUlucHV0IDogcHVibGljIE5ldEVxSW5w
dXQgewogY2xhc3MgTmV0RXFSdHBEdW1wSW5wdXQgZmluYWwgOiBwdWJsaWMgTmV0RXFQYWNrZXRT
b3VyY2VJbnB1dCB7CiAgcHVibGljOgogICBOZXRFcVJ0cER1bXBJbnB1dChjb25zdCBzdGQ6OnN0
cmluZyYgZmlsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBSdHBIZWFkZXJFeHRl
bnNpb25NYXAmIGhkcl9leHRfbWFwKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgUnRwSGVh
ZGVyRXh0ZW5zaW9uTWFwJiBoZHJfZXh0X21hcCwKKyAgICAgICAgICAgICAgICAgICAgYWJzbDo6
b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyKTsKIAogICBhYnNsOjpvcHRpb25hbDxpbnQ2
NF90PiBOZXh0T3V0cHV0RXZlbnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIHZvaWQgQWR2YW5j
ZU91dHB1dEV2ZW50KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9u
ZXRlcV9xdWFsaXR5X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9xdWFsaXR5X3Rl
c3QuY2MKaW5kZXggZmFjYTg5NTlkNGQ0ZjVjN2NmNmExM2U5OGNhMzIxNDFiMmIxZjc2ZS4uMmVl
Njc3OWM1MzllMWI5ZTY3YmI3YzVmYjA3MWUyNTFmNWQwOWJkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvdG9vbHMvbmV0ZXFfcXVhbGl0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xz
L25ldGVxX3F1YWxpdHlfdGVzdC5jYwpAQCAtNDcsNDIgKzQ3LDQ3IEBAIHN0YXRpYyBib29sIFZh
bGlkYXRlRmlsZW5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLCBib29sIHdyaXRlKSB7CiAg
IHJldHVybiB0cnVlOwogfQogCi1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9zdHJpbmco
CiAgICAgaW5fZmlsZW5hbWUsCiAgICAgRGVmYXVsdEluRmlsZW5hbWUoKS5jX3N0cigpLAogICAg
ICJGaWxlbmFtZSBmb3IgaW5wdXQgYXVkaW8gKHNwZWNpZnkgc2FtcGxlIHJhdGUgd2l0aCAtLWlu
cHV0X3NhbXBsZV9yYXRlLCAiCiAgICAgImFuZCBjaGFubmVscyB3aXRoIC0tY2hhbm5lbHMpLiIp
OwogCi1ERUZJTkVfaW50KGlucHV0X3NhbXBsZV9yYXRlLCAxNjAwMCwgIlNhbXBsZSByYXRlIG9m
IGlucHV0IGZpbGUgaW4gSHouIik7CitXRUJSVENfREVGSU5FX2ludChpbnB1dF9zYW1wbGVfcmF0
ZSwgMTYwMDAsICJTYW1wbGUgcmF0ZSBvZiBpbnB1dCBmaWxlIGluIEh6LiIpOwogCi1ERUZJTkVf
aW50KGNoYW5uZWxzLCAxLCAiTnVtYmVyIG9mIGNoYW5uZWxzIGluIGlucHV0IGF1ZGlvLiIpOwor
V0VCUlRDX0RFRklORV9pbnQoY2hhbm5lbHMsIDEsICJOdW1iZXIgb2YgY2hhbm5lbHMgaW4gaW5w
dXQgYXVkaW8uIik7CiAKLURFRklORV9zdHJpbmcob3V0X2ZpbGVuYW1lLAotICAgICAgICAgICAg
ICBEZWZhdWx0T3V0RmlsZW5hbWUoKS5jX3N0cigpLAotICAgICAgICAgICAgICAiTmFtZSBvZiBv
dXRwdXQgYXVkaW8gZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKG91dF9maWxlbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRPdXRGaWxlbmFtZSgpLmNfc3RyKCksCisgICAg
ICAgICAgICAgICAgICAgICAiTmFtZSBvZiBvdXRwdXQgYXVkaW8gZmlsZS4iKTsKIAotREVGSU5F
X2ludChydW50aW1lX21zLCAxMDAwMCwgIlNpbXVsYXRlZCBydW50aW1lIChtaWxsaXNlY29uZHMp
LiIpOworV0VCUlRDX0RFRklORV9pbnQocnVudGltZV9tcywgMTAwMDAsICJTaW11bGF0ZWQgcnVu
dGltZSAobWlsbGlzZWNvbmRzKS4iKTsKIAotREVGSU5FX2ludChwYWNrZXRfbG9zc19yYXRlLCAx
MCwgIlBlcmNlbnRpbGUgb2YgcGFja2V0IGxvc3MuIik7CitXRUJSVENfREVGSU5FX2ludChwYWNr
ZXRfbG9zc19yYXRlLCAxMCwgIlBlcmNlbnRpbGUgb2YgcGFja2V0IGxvc3MuIik7CiAKLURFRklO
RV9pbnQocmFuZG9tX2xvc3NfbW9kZSwKLSAgICAgICAgICAga1VuaWZvcm1Mb3NzLAotICAgICAg
ICAgICAiUmFuZG9tIGxvc3MgbW9kZTogMC0tbm8gbG9zcywgMS0tdW5pZm9ybSBsb3NzLCAyLS1H
aWxiZXJ0IEVsbGlvdCAiCi0gICAgICAgICAgICJsb3NzLCAzLS1maXhlZCBsb3NzLiIpOworV0VC
UlRDX0RFRklORV9pbnQoCisgICAgcmFuZG9tX2xvc3NfbW9kZSwKKyAgICBrVW5pZm9ybUxvc3Ms
CisgICAgIlJhbmRvbSBsb3NzIG1vZGU6IDAtLW5vIGxvc3MsIDEtLXVuaWZvcm0gbG9zcywgMi0t
R2lsYmVydCBFbGxpb3QgIgorICAgICJsb3NzLCAzLS1maXhlZCBsb3NzLiIpOwogCi1ERUZJTkVf
aW50KGJ1cnN0X2xlbmd0aCwKLSAgICAgICAgICAgMzAsCi0gICAgICAgICAgICJCdXJzdCBsZW5n
dGggaW4gbWlsbGlzZWNvbmRzLCBvbmx5IHZhbGlkIGZvciBHaWxiZXJ0IEVsbGlvdCBsb3NzLiIp
OworV0VCUlRDX0RFRklORV9pbnQoCisgICAgYnVyc3RfbGVuZ3RoLAorICAgIDMwLAorICAgICJC
dXJzdCBsZW5ndGggaW4gbWlsbGlzZWNvbmRzLCBvbmx5IHZhbGlkIGZvciBHaWxiZXJ0IEVsbGlv
dCBsb3NzLiIpOwogCi1ERUZJTkVfZmxvYXQoZHJpZnRfZmFjdG9yLCAwLjAsICJUaW1lIGRyaWZ0
IGZhY3Rvci4iKTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoZHJpZnRfZmFjdG9yLCAwLjAsICJUaW1l
IGRyaWZ0IGZhY3Rvci4iKTsKIAotREVGSU5FX2ludChwcmVsb2FkX3BhY2tldHMsIDAsICJQcmVs
b2FkIHRoZSBidWZmZXIgd2l0aCB0aGlzIG1hbnkgcGFja2V0cy4iKTsKK1dFQlJUQ19ERUZJTkVf
aW50KHByZWxvYWRfcGFja2V0cywKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAg
ICAgICAiUHJlbG9hZCB0aGUgYnVmZmVyIHdpdGggdGhpcyBtYW55IHBhY2tldHMuIik7CiAKLURF
RklORV9zdHJpbmcobG9zc19ldmVudHMsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAg
ICAiTGlzdCBvZiBsb3NzIGV2ZW50cyB0aW1lIGFuZCBkdXJhdGlvbiBzZXBhcmF0ZWQgYnkgY29t
bWE6ICIKLSAgICAgICAgICAgICAgIjxmaXJzdF9ldmVudF90aW1lPiA8Zmlyc3RfZXZlbnRfZHVy
YXRpb24+LCA8c2Vjb25kX2V2ZW50X3RpbWU+ICIKLSAgICAgICAgICAgICAgIjxzZWNvbmRfZXZl
bnRfZHVyYXRpb24+LCAuLi4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIGxvc3NfZXZl
bnRzLAorICAgICIiLAorICAgICJMaXN0IG9mIGxvc3MgZXZlbnRzIHRpbWUgYW5kIGR1cmF0aW9u
IHNlcGFyYXRlZCBieSBjb21tYTogIgorICAgICI8Zmlyc3RfZXZlbnRfdGltZT4gPGZpcnN0X2V2
ZW50X2R1cmF0aW9uPiwgPHNlY29uZF9ldmVudF90aW1lPiAiCisgICAgIjxzZWNvbmRfZXZlbnRf
ZHVyYXRpb24+LCAuLi4iKTsKIAogLy8gUHJvYlRyYW5zMDBTb2x2ZXIoKSBpcyB0byBjYWxjdWxh
dGUgdGhlIHRyYW5zaXRpb24gcHJvYmFiaWxpdHkgZnJvbSBuby1sb3NzCiAvLyBzdGF0ZSB0byBp
dHNlbGYgaW4gYSBtb2RpZmllZCBHaWxiZXJ0IEVsbGlvdCBwYWNrZXQgbG9zcyBtb2RlbC4gVGhl
IHJlc3VsdCBpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcnRwcGxheS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3J0cHBsYXkuY2MKaW5kZXggMjVlOGNkODgxNmUx
MjBiYTdiM2Q4NTJmN2E3MWUwN2Y3YmM5ZjY4Ni4uYzI3MjZlYjQ3MDRiODczYmUyN2UwYjcxY2Qx
MjJjOGU5MzY1MjRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFfcnRwcGxh
eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV9ydHBwbGF5LmNjCkBAIC0xNywxNyAr
MTcsMTcgQEAKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5o
IgogI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKIAotREVGSU5FX2Jvb2woY29kZWNfbWFw
LAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUHJpbnRzIHRoZSBtYXBwaW5nIGJl
dHdlZW4gUlRQIHBheWxvYWQgdHlwZSBhbmQgIgotICAgICAgICAgICAgImNvZGVjIik7Ci1ERUZJ
TkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9ib29sKGNvZGVjX21hcCwKKyAgICAgICAgICAgICAg
ICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiUHJpbnRzIHRoZSBtYXBwaW5nIGJldHdl
ZW4gUlRQIHBheWxvYWQgdHlwZSBhbmQgIgorICAgICAgICAgICAgICAgICAgICJjb2RlYyIpOwor
V0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgZm9yY2VfZmllbGR0cmlhbHMsCiAgICAgIiIsCiAg
ICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2gg
Y2FuIGJlIGZvcmNlZC4gIgogICAgICJFLmcuIHJ1bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJp
YWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZS8iCiAgICAgIiB3aWxsIGFzc2lnbiB0aGUgZ3Jv
dXAgRW5hYmxlIHRvIGZpZWxkIHRyaWFsIFdlYlJUQy1Gb29GZWF0dXJlLiIpOwotREVGSU5FX2Jv
b2woaGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2Jv
b2woaGVscCwgZmFsc2UsICJQcmludHMgdGhpcyBtZXNzYWdlIik7CiAKIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pIHsKICAgd2VicnRjOjp0ZXN0OjpOZXRFcVRlc3RGYWN0b3J5IGZh
Y3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV90ZXN0X2ZhY3Rvcnku
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS90b29scy9uZXRlcV90ZXN0X2ZhY3RvcnkuY2MKaW5kZXggNTEwNzdi
YzZiOGI5MjM1NzEyYmYyZjE2NTk4Y2IzNTRhNjE3ZDkzZS4uYWE5NTZjZThhYmNkMzExODI4YTMz
Mzc3NzNmNGNjYzEyZDQyZGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvbmV0ZXFf
dGVzdF9mYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL25ldGVxX3Rlc3RfZmFjdG9y
eS5jYwpAQCAtOTEsNDcgKzkxLDYwIEBAIHN0YXRpYyBib29sIFZhbGlkYXRlRXh0ZW5zaW9uSWQo
aW50IHZhbHVlKSB7CiB9CiAKIC8vIERlZmluZSBjb21tYW5kIGxpbmUgZmxhZ3MuCi1ERUZJTkVf
aW50KHBjbXUsIDAsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQQ00tdSIpOwotREVGSU5FX2ludChw
Y21hLCA4LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgUENNLWEiKTsKLURFRklORV9pbnQoaWxiYywg
MTAyLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgaUxCQyIpOwotREVGSU5FX2ludChpc2FjLCAxMDMs
ICJSVFAgcGF5bG9hZCB0eXBlIGZvciBpU0FDIik7Ci1ERUZJTkVfaW50KGlzYWNfc3diLCAxMDQs
ICJSVFAgcGF5bG9hZCB0eXBlIGZvciBpU0FDLXN3YiAoMzIga0h6KSIpOwotREVGSU5FX2ludChv
cHVzLCAxMTEsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBPcHVzIik7Ci1ERUZJTkVfaW50KHBjbTE2
YiwgOTMsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBQQ00xNmItbmIgKDgga0h6KSIpOwotREVGSU5F
X2ludChwY20xNmJfd2IsIDk0LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgUENNMTZiLXdiICgxNiBr
SHopIik7Ci1ERUZJTkVfaW50KHBjbTE2Yl9zd2IzMiwgOTUsICJSVFAgcGF5bG9hZCB0eXBlIGZv
ciBQQ00xNmItc3diMzIgKDMyIGtIeikiKTsKLURFRklORV9pbnQocGNtMTZiX3N3YjQ4LCA5Niwg
IlJUUCBwYXlsb2FkIHR5cGUgZm9yIFBDTTE2Yi1zd2I0OCAoNDgga0h6KSIpOwotREVGSU5FX2lu
dChnNzIyLCA5LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgRy43MjIiKTsKLURFRklORV9pbnQoYXZ0
LCAxMDYsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBBVlQvRFRNRiAoOCBrSHopIik7Ci1ERUZJTkVf
aW50KGF2dF8xNiwgMTE0LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgQVZUL0RUTUYgKDE2IGtIeiki
KTsKLURFRklORV9pbnQoYXZ0XzMyLCAxMTUsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBBVlQvRFRN
RiAoMzIga0h6KSIpOwotREVGSU5FX2ludChhdnRfNDgsIDExNiwgIlJUUCBwYXlsb2FkIHR5cGUg
Zm9yIEFWVC9EVE1GICg0OCBrSHopIik7Ci1ERUZJTkVfaW50KHJlZCwgMTE3LCAiUlRQIHBheWxv
YWQgdHlwZSBmb3IgcmVkdW5kYW50IGF1ZGlvIChSRUQpIik7Ci1ERUZJTkVfaW50KGNuX25iLCAx
MywgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGNvbWZvcnQgbm9pc2UgKDgga0h6KSIpOwotREVGSU5F
X2ludChjbl93YiwgOTgsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBjb21mb3J0IG5vaXNlICgxNiBr
SHopIik7Ci1ERUZJTkVfaW50KGNuX3N3YjMyLCA5OSwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGNv
bWZvcnQgbm9pc2UgKDMyIGtIeikiKTsKLURFRklORV9pbnQoY25fc3diNDgsIDEwMCwgIlJUUCBw
YXlsb2FkIHR5cGUgZm9yIGNvbWZvcnQgbm9pc2UgKDQ4IGtIeikiKTsKLURFRklORV9zdHJpbmco
cmVwbGFjZW1lbnRfYXVkaW9fZmlsZSwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAg
ICJBIFBDTSBmaWxlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHBvcHVsYXRlICIKLSAgICAgICAgICAg
ICAgImR1bW15IgotICAgICAgICAgICAgICAiIFJUUCBwYWNrZXRzIik7Ci1ERUZJTkVfc3RyaW5n
KHNzcmMsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiT25seSB1c2UgcGFja2V0
cyB3aXRoIHRoaXMgU1NSQyAoZGVjaW1hbCBvciBoZXgsIHRoZSBsYXR0ZXIgIgotICAgICAgICAg
ICAgICAic3RhcnRpbmcgd2l0aCAweCkiKTsKLURFRklORV9pbnQoYXVkaW9fbGV2ZWwsIDEsICJF
eHRlbnNpb24gSUQgZm9yIGF1ZGlvIGxldmVsIChSRkMgNjQ2NCkiKTsKLURFRklORV9pbnQoYWJz
X3NlbmRfdGltZSwgMywgIkV4dGVuc2lvbiBJRCBmb3IgYWJzb2x1dGUgc2VuZGVyIHRpbWUiKTsK
LURFRklORV9pbnQodHJhbnNwb3J0X3NlcV9ubywgNSwgIkV4dGVuc2lvbiBJRCBmb3IgdHJhbnNw
b3J0IHNlcXVlbmNlIG51bWJlciIpOwotREVGSU5FX2ludCh2aWRlb19jb250ZW50X3R5cGUsIDcs
ICJFeHRlbnNpb24gSUQgZm9yIHZpZGVvIGNvbnRlbnQgdHlwZSIpOwotREVGSU5FX2ludCh2aWRl
b190aW1pbmcsIDgsICJFeHRlbnNpb24gSUQgZm9yIHZpZGVvIHRpbWluZyIpOwotREVGSU5FX2Jv
b2wobWF0bGFicGxvdCwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIkdlbmVyYXRl
cyBhIG1hdGxhYiBzY3JpcHQgZm9yIHBsb3R0aW5nIHRoZSBkZWxheSBwcm9maWxlIik7Ci1ERUZJ
TkVfYm9vbChweXRob25wbG90LAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiR2Vu
ZXJhdGVzIGEgcHl0aG9uIHNjcmlwdCBmb3IgcGxvdHRpbmcgdGhlIGRlbGF5IHByb2ZpbGUiKTsK
LURFRklORV9ib29sKGNvbmNlYWxtZW50X2V2ZW50cywgZmFsc2UsICJQcmludHMgY29uY2VhbG1l
bnQgZXZlbnRzIik7CitXRUJSVENfREVGSU5FX2ludChwY211LCAwLCAiUlRQIHBheWxvYWQgdHlw
ZSBmb3IgUENNLXUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHBjbWEsIDgsICJSVFAgcGF5bG9hZCB0
eXBlIGZvciBQQ00tYSIpOworV0VCUlRDX0RFRklORV9pbnQoaWxiYywgMTAyLCAiUlRQIHBheWxv
YWQgdHlwZSBmb3IgaUxCQyIpOworV0VCUlRDX0RFRklORV9pbnQoaXNhYywgMTAzLCAiUlRQIHBh
eWxvYWQgdHlwZSBmb3IgaVNBQyIpOworV0VCUlRDX0RFRklORV9pbnQoaXNhY19zd2IsIDEwNCwg
IlJUUCBwYXlsb2FkIHR5cGUgZm9yIGlTQUMtc3diICgzMiBrSHopIik7CitXRUJSVENfREVGSU5F
X2ludChvcHVzLCAxMTEsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBPcHVzIik7CitXRUJSVENfREVG
SU5FX2ludChwY20xNmIsIDkzLCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgUENNMTZiLW5iICg4IGtI
eikiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHBjbTE2Yl93YiwgOTQsICJSVFAgcGF5bG9hZCB0eXBl
IGZvciBQQ00xNmItd2IgKDE2IGtIeikiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHBjbTE2Yl9zd2Iz
MiwKKyAgICAgICAgICAgICAgICAgIDk1LAorICAgICAgICAgICAgICAgICAgIlJUUCBwYXlsb2Fk
IHR5cGUgZm9yIFBDTTE2Yi1zd2IzMiAoMzIga0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQocGNt
MTZiX3N3YjQ4LAorICAgICAgICAgICAgICAgICAgOTYsCisgICAgICAgICAgICAgICAgICAiUlRQ
IHBheWxvYWQgdHlwZSBmb3IgUENNMTZiLXN3YjQ4ICg0OCBrSHopIik7CitXRUJSVENfREVGSU5F
X2ludChnNzIyLCA5LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgRy43MjIiKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KGF2dCwgMTA2LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgQVZUL0RUTUYgKDgga0h6KSIp
OworV0VCUlRDX0RFRklORV9pbnQoYXZ0XzE2LCAxMTQsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBB
VlQvRFRNRiAoMTYga0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQoYXZ0XzMyLCAxMTUsICJSVFAg
cGF5bG9hZCB0eXBlIGZvciBBVlQvRFRNRiAoMzIga0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQo
YXZ0XzQ4LCAxMTYsICJSVFAgcGF5bG9hZCB0eXBlIGZvciBBVlQvRFRNRiAoNDgga0h6KSIpOwor
V0VCUlRDX0RFRklORV9pbnQocmVkLCAxMTcsICJSVFAgcGF5bG9hZCB0eXBlIGZvciByZWR1bmRh
bnQgYXVkaW8gKFJFRCkiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGNuX25iLCAxMywgIlJUUCBwYXls
b2FkIHR5cGUgZm9yIGNvbWZvcnQgbm9pc2UgKDgga0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQo
Y25fd2IsIDk4LCAiUlRQIHBheWxvYWQgdHlwZSBmb3IgY29tZm9ydCBub2lzZSAoMTYga0h6KSIp
OworV0VCUlRDX0RFRklORV9pbnQoY25fc3diMzIsIDk5LCAiUlRQIHBheWxvYWQgdHlwZSBmb3Ig
Y29tZm9ydCBub2lzZSAoMzIga0h6KSIpOworV0VCUlRDX0RFRklORV9pbnQoY25fc3diNDgsIDEw
MCwgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIGNvbWZvcnQgbm9pc2UgKDQ4IGtIeikiKTsKK1dFQlJU
Q19ERUZJTkVfc3RyaW5nKHJlcGxhY2VtZW50X2F1ZGlvX2ZpbGUsCisgICAgICAgICAgICAgICAg
ICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJBIFBDTSBmaWxlIHRoYXQgd2lsbCBiZSB1
c2VkIHRvIHBvcHVsYXRlICIKKyAgICAgICAgICAgICAgICAgICAgICJkdW1teSIKKyAgICAgICAg
ICAgICAgICAgICAgICIgUlRQIHBhY2tldHMiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAg
IHNzcmMsCisgICAgIiIsCisgICAgIk9ubHkgdXNlIHBhY2tldHMgd2l0aCB0aGlzIFNTUkMgKGRl
Y2ltYWwgb3IgaGV4LCB0aGUgbGF0dGVyICIKKyAgICAic3RhcnRpbmcgd2l0aCAweCkiKTsKK1dF
QlJUQ19ERUZJTkVfaW50KGF1ZGlvX2xldmVsLCAxLCAiRXh0ZW5zaW9uIElEIGZvciBhdWRpbyBs
ZXZlbCAoUkZDIDY0NjQpIik7CitXRUJSVENfREVGSU5FX2ludChhYnNfc2VuZF90aW1lLCAzLCAi
RXh0ZW5zaW9uIElEIGZvciBhYnNvbHV0ZSBzZW5kZXIgdGltZSIpOworV0VCUlRDX0RFRklORV9p
bnQodHJhbnNwb3J0X3NlcV9ubywKKyAgICAgICAgICAgICAgICAgIDUsCisgICAgICAgICAgICAg
ICAgICAiRXh0ZW5zaW9uIElEIGZvciB0cmFuc3BvcnQgc2VxdWVuY2UgbnVtYmVyIik7CitXRUJS
VENfREVGSU5FX2ludCh2aWRlb19jb250ZW50X3R5cGUsIDcsICJFeHRlbnNpb24gSUQgZm9yIHZp
ZGVvIGNvbnRlbnQgdHlwZSIpOworV0VCUlRDX0RFRklORV9pbnQodmlkZW9fdGltaW5nLCA4LCAi
RXh0ZW5zaW9uIElEIGZvciB2aWRlbyB0aW1pbmciKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChtYXRs
YWJwbG90LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJH
ZW5lcmF0ZXMgYSBtYXRsYWIgc2NyaXB0IGZvciBwbG90dGluZyB0aGUgZGVsYXkgcHJvZmlsZSIp
OworV0VCUlRDX0RFRklORV9ib29sKHB5dGhvbnBsb3QsCisgICAgICAgICAgICAgICAgICAgZmFs
c2UsCisgICAgICAgICAgICAgICAgICAgIkdlbmVyYXRlcyBhIHB5dGhvbiBzY3JpcHQgZm9yIHBs
b3R0aW5nIHRoZSBkZWxheSBwcm9maWxlIik7CitXRUJSVENfREVGSU5FX2Jvb2woY29uY2VhbG1l
bnRfZXZlbnRzLCBmYWxzZSwgIlByaW50cyBjb25jZWFsbWVudCBldmVudHMiKTsKK1dFQlJUQ19E
RUZJTkVfaW50KG1heF9ucl9wYWNrZXRzX2luX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgIDUw
LAorICAgICAgICAgICAgICAgICAgIk1heGltdW0gYWxsb3dlZCBudW1iZXIgb2YgcGFja2V0cyBp
biB0aGUgYnVmZmVyIik7CitXRUJSVENfREVGSU5FX2Jvb2woZW5hYmxlX2Zhc3RfYWNjZWxlcmF0
ZSwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiRW5hYmxl
cyBqaXR0ZXIgYnVmZmVyIGZhc3QgYWNjZWxlcmF0ZSIpOwogCiAvLyBNYXBzIGEgY29kZWMgdHlw
ZSB0byBhIHByaW50YWJsZSBuYW1lIHN0cmluZy4KIHN0ZDo6c3RyaW5nIENvZGVjTmFtZShOZXRF
cURlY29kZXIgY29kZWMpIHsKQEAgLTMwOSwyNSArMzIyLDI3IEBAIHN0ZDo6dW5pcXVlX3B0cjxO
ZXRFcVRlc3Q+IE5ldEVxVGVzdEZhY3Rvcnk6OkluaXRpYWxpemVUZXN0KAogICAgICAge0ZMQUdf
dmlkZW9fY29udGVudF90eXBlLCBrUnRwRXh0ZW5zaW9uVmlkZW9Db250ZW50VHlwZX0sCiAgICAg
ICB7RkxBR192aWRlb190aW1pbmcsIGtSdHBFeHRlbnNpb25WaWRlb1RpbWluZ319OwogCisgIGFi
c2w6Om9wdGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlcjsKKyAgLy8gQ2hlY2sgaWYgYW4gU1NS
QyB2YWx1ZSB3YXMgcHJvdmlkZWQuCisgIGlmIChzdHJsZW4oRkxBR19zc3JjKSA+IDApIHsKKyAg
ICB1aW50MzJfdCBzc3JjOworICAgIFJUQ19DSEVDSyhQYXJzZVNzcmMoRkxBR19zc3JjLCAmc3Ny
YykpIDw8ICJGbGFnIHZlcmlmaWNhdGlvbiBoYXMgZmFpbGVkLiI7CisgICAgc3NyY19maWx0ZXIg
PSBzc3JjOworICB9CisKICAgc3RkOjp1bmlxdWVfcHRyPE5ldEVxSW5wdXQ+IGlucHV0OwogICBp
ZiAoUnRwRmlsZVNvdXJjZTo6VmFsaWRSdHBEdW1wKGlucHV0X2ZpbGVfbmFtZSkgfHwKICAgICAg
IFJ0cEZpbGVTb3VyY2U6OlZhbGlkUGNhcChpbnB1dF9maWxlX25hbWUpKSB7Ci0gICAgaW5wdXQu
cmVzZXQobmV3IE5ldEVxUnRwRHVtcElucHV0KGlucHV0X2ZpbGVfbmFtZSwgcnRwX2V4dF9tYXAp
KTsKKyAgICBpbnB1dC5yZXNldCgKKyAgICAgICAgbmV3IE5ldEVxUnRwRHVtcElucHV0KGlucHV0
X2ZpbGVfbmFtZSwgcnRwX2V4dF9tYXAsIHNzcmNfZmlsdGVyKSk7CiAgIH0gZWxzZSB7Ci0gICAg
aW5wdXQucmVzZXQobmV3IE5ldEVxRXZlbnRMb2dJbnB1dChpbnB1dF9maWxlX25hbWUsIHJ0cF9l
eHRfbWFwKSk7CisgICAgaW5wdXQucmVzZXQobmV3IE5ldEVxRXZlbnRMb2dJbnB1dChpbnB1dF9m
aWxlX25hbWUsIHNzcmNfZmlsdGVyKSk7CiAgIH0KIAogICBzdGQ6OmNvdXQgPDwgIklucHV0IGZp
bGU6ICIgPDwgaW5wdXRfZmlsZV9uYW1lIDw8IHN0ZDo6ZW5kbDsKICAgUlRDX0NIRUNLKGlucHV0
KSA8PCAiQ2Fubm90IG9wZW4gaW5wdXQgZmlsZSI7CiAgIFJUQ19DSEVDSyghaW5wdXQtPmVuZGVk
KCkpIDw8ICJJbnB1dCBmaWxlIGlzIGVtcHR5IjsKIAotICAvLyBDaGVjayBpZiBhbiBTU1JDIHZh
bHVlIHdhcyBwcm92aWRlZC4KLSAgaWYgKHN0cmxlbihGTEFHX3NzcmMpID4gMCkgewotICAgIHVp
bnQzMl90IHNzcmM7Ci0gICAgUlRDX0NIRUNLKFBhcnNlU3NyYyhGTEFHX3NzcmMsICZzc3JjKSkg
PDwgIkZsYWcgdmVyaWZpY2F0aW9uIGhhcyBmYWlsZWQuIjsKLSAgICBzdGF0aWNfY2FzdDxOZXRF
cVBhY2tldFNvdXJjZUlucHV0Kj4oaW5wdXQuZ2V0KCkpLT5TZWxlY3RTc3JjKHNzcmMpOwotICB9
Ci0KICAgLy8gQ2hlY2sgdGhlIHNhbXBsZSByYXRlLgogICBhYnNsOjpvcHRpb25hbDxpbnQ+IHNh
bXBsZV9yYXRlX2h6OwogICBzdGQ6OnNldDxzdGQ6OnBhaXI8aW50LCB1aW50MzJfdD4+IGRpc2Nh
cmRlZF9wdF9hbmRfc3NyYzsKQEAgLTQ1Nyw2ICs0NzIsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TmV0
RXFUZXN0PiBOZXRFcVRlc3RGYWN0b3J5OjpJbml0aWFsaXplVGVzdCgKICAgY2FsbGJhY2tzLnNp
bXVsYXRpb25fZW5kZWRfY2FsbGJhY2sgPSBzdGF0c19wbG90dGVyXy5nZXQoKTsKICAgTmV0RXE6
OkNvbmZpZyBjb25maWc7CiAgIGNvbmZpZy5zYW1wbGVfcmF0ZV9oeiA9ICpzYW1wbGVfcmF0ZV9o
ejsKKyAgY29uZmlnLm1heF9wYWNrZXRzX2luX2J1ZmZlciA9IEZMQUdfbWF4X25yX3BhY2tldHNf
aW5fYnVmZmVyOworICBjb25maWcuZW5hYmxlX2Zhc3RfYWNjZWxlcmF0ZSA9IEZMQUdfZW5hYmxl
X2Zhc3RfYWNjZWxlcmF0ZTsKICAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPE5ldEVxVGVzdD4o
Y29uZmlnLCBjb2RlY3MsIGV4dF9jb2RlY3NfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1vdmUoaW5wdXQpLCBzdGQ6Om1vdmUob3V0cHV0KSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL3Rvb2xzL3BhY2tldC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldC5jYwpp
bmRleCBiMWE5YjY0MTkzYmY3NWI3OWE3MGM3NmUyMGYyMDEyZTg5ZjUzMDhhLi4wZTc5NTFiNmUz
YzM0M2VjMjJiOTcwYzFkNjEyNzljMDg3MmI2YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
b29scy9wYWNrZXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0LmNjCkBAIC00OSw2
ICs0OSwyMCBAQCBQYWNrZXQ6OlBhY2tldCh1aW50OF90KiBwYWNrZXRfbWVtb3J5LAogICB2YWxp
ZF9oZWFkZXJfID0gUGFyc2VIZWFkZXIocGFyc2VyKTsKIH0KIAorUGFja2V0OjpQYWNrZXQoY29u
c3QgUlRQSGVhZGVyJiBoZWFkZXIsCisgICAgICAgICAgICAgICBzaXplX3QgdmlydHVhbF9wYWNr
ZXRfbGVuZ3RoX2J5dGVzLAorICAgICAgICAgICAgICAgc2l6ZV90IHZpcnR1YWxfcGF5bG9hZF9s
ZW5ndGhfYnl0ZXMsCisgICAgICAgICAgICAgICBkb3VibGUgdGltZV9tcykKKyAgICA6IGhlYWRl
cl8oaGVhZGVyKSwKKyAgICAgIHBheWxvYWRfbWVtb3J5XygpLAorICAgICAgcGF5bG9hZF8oTlVM
TCksCisgICAgICBwYWNrZXRfbGVuZ3RoX2J5dGVzXygwKSwKKyAgICAgIHBheWxvYWRfbGVuZ3Ro
X2J5dGVzXygwKSwKKyAgICAgIHZpcnR1YWxfcGFja2V0X2xlbmd0aF9ieXRlc18odmlydHVhbF9w
YWNrZXRfbGVuZ3RoX2J5dGVzKSwKKyAgICAgIHZpcnR1YWxfcGF5bG9hZF9sZW5ndGhfYnl0ZXNf
KHZpcnR1YWxfcGF5bG9hZF9sZW5ndGhfYnl0ZXMpLAorICAgICAgdGltZV9tc18odGltZV9tcyks
CisgICAgICB2YWxpZF9oZWFkZXJfKHRydWUpIHt9CisKIFBhY2tldDo6UGFja2V0KHVpbnQ4X3Qq
IHBhY2tldF9tZW1vcnksIHNpemVfdCBhbGxvY2F0ZWRfYnl0ZXMsIGRvdWJsZSB0aW1lX21zKQog
ICAgIDogcGF5bG9hZF9tZW1vcnlfKHBhY2tldF9tZW1vcnkpLAogICAgICAgcGF5bG9hZF8oTlVM
TCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVx
L3Rvb2xzL3BhY2tldC5oCmluZGV4IDYyM2M1Y2I2MzU5YTk5ZjVjOTNhMzlkMjNhMDdlNDExY2Jh
OTFhY2UuLjM5MTM3YWFlNDNhMGFlYzU5MjM0MDA3NTQyYjEwOGZjZmE3Yjg4M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3Bh
Y2tldC5oCkBAIC01MCw3ICs1MCwxNyBAQCBjbGFzcyBQYWNrZXQgewogICAgICAgICAgZG91Ymxl
IHRpbWVfbXMsCiAgICAgICAgICBjb25zdCBSdHBIZWFkZXJQYXJzZXImIHBhcnNlcik7CiAKLSAg
Ly8gVGhlIGZvbGxvd2luZyB0d28gY29uc3RydWN0b3JzIGFyZSB0aGUgc2FtZSBhcyBhYm92ZSwg
YnV0IHdpdGhvdXQgYQorICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgY3JlYXRlcyB0aGUgcGFja2V0
IGZyb20gYW4gYWxyZWFkeSBwYXJzZWQgUlRQSGVhZGVyLgorICAvLyBUaGlzIGlzIHR5cGljYWxs
eSB1c2VkIHdoZW4gcmVhZGluZyBSVFAgZHVtcCBmaWxlcyB0aGF0IG9ubHkgY29udGFpbiB0aGUK
KyAgLy8gUlRQIGhlYWRlcnMsIGFuZCBubyBwYXlsb2FkLiBUaGUgfHZpcnR1YWxfcGFja2V0X2xl
bmd0aF9ieXRlc3wgdGVsbHMgd2hhdAorICAvLyBzaXplIHRoZSBwYWNrZXQgaGFkIG9uIHdpcmUs
IGluY2x1ZGluZyB0aGUgbm93IGRpc2NhcmRlZCBwYXlsb2FkLAorICAvLyBUaGUgfHZpcnR1YWxf
cGF5bG9hZF9sZW5ndGhfYnl0ZXN8IHRlbGxzIHRoZSBzaXplIG9mIHRoZSBwYXlsb2FkLgorICBQ
YWNrZXQoY29uc3QgUlRQSGVhZGVyJiBoZWFkZXIsCisgICAgICAgICBzaXplX3QgdmlydHVhbF9w
YWNrZXRfbGVuZ3RoX2J5dGVzLAorICAgICAgICAgc2l6ZV90IHZpcnR1YWxfcGF5bG9hZF9sZW5n
dGhfYnl0ZXMsCisgICAgICAgICBkb3VibGUgdGltZV9tcyk7CisKKyAgLy8gVGhlIGZvbGxvd2lu
ZyBjb25zdHJ1Y3RvcnMgYXJlIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCB0d28sIGJ1dCB3aXRob3V0
IGEKICAgLy8gcGFyc2VyLiBOb3RlIHRoYXQgd2hlbiB0aGUgb2JqZWN0IGlzIGNvbnN0cnVjdGVk
IHVzaW5nIGFueSBvZiB0aGVzZQogICAvLyBtZXRob2RzLCB0aGUgaGVhZGVyIHdpbGwgYmUgcGFy
c2VkIHVzaW5nIGEgZGVmYXVsdCBSdHBIZWFkZXJQYXJzZXIgb2JqZWN0LgogICAvLyBJbiBwYXJ0
aWN1bGFyLCBSVFAgaGVhZGVyIGV4dGVuc2lvbnMgd29uJ3QgYmUgcGFyc2VkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0X3NvdXJjZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xz
L3BhY2tldF9zb3VyY2UuY2MKaW5kZXggMzBiZjQzMTgzNTU1MjM5NWU0OGNmNzg5YWFhM2M0MmRj
ZjdjNDVmMS4uNTk4YWU2ZWRkNDA4ZDNlM2VjMDlmMTI5ZGQ1YWNhMWViYjEyZGRiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcGFja2V0X3NvdXJjZS5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90b29scy9wYWNrZXRfc291cmNlLmNjCkBAIC0xMyw3ICsxMyw3IEBACiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIAotUGFja2V0U291cmNlOjpQYWNrZXRTb3VyY2UoKSA6
IHVzZV9zc3JjX2ZpbHRlcl8oZmFsc2UpLCBzc3JjXygwKSB7fQorUGFja2V0U291cmNlOjpQYWNr
ZXRTb3VyY2UoKSA9IGRlZmF1bHQ7CiAKIFBhY2tldFNvdXJjZTo6flBhY2tldFNvdXJjZSgpID0g
ZGVmYXVsdDsKIApAQCAtMjEsMTAgKzIxLDUgQEAgdm9pZCBQYWNrZXRTb3VyY2U6OkZpbHRlck91
dFBheWxvYWRUeXBlKHVpbnQ4X3QgcGF5bG9hZF90eXBlKSB7CiAgIGZpbHRlcl8uc2V0KHBheWxv
YWRfdHlwZSwgdHJ1ZSk7CiB9CiAKLXZvaWQgUGFja2V0U291cmNlOjpTZWxlY3RTc3JjKHVpbnQz
Ml90IHNzcmMpIHsKLSAgdXNlX3NzcmNfZmlsdGVyXyA9IHRydWU7Ci0gIHNzcmNfID0gc3NyYzsK
LX0KLQogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3BhY2tldF9zb3VyY2UuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rv
b2xzL3BhY2tldF9zb3VyY2UuaAppbmRleCBmYjY4OWUzM2Q0ZTQ4NTJjOTgxNDQwYTJhZTIxODBi
ODI1MTU4MDRkLi5jYjg2YTk4OTk5ZGUwNmJmZWU4NWM1NjhmZTk4Y2I2ZmYyM2UyMDgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXRfc291cmNlLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0
ZXEvdG9vbHMvcGFja2V0X3NvdXJjZS5oCkBAIC0zMiwxMyArMzIsOCBAQCBjbGFzcyBQYWNrZXRT
b3VyY2UgewogCiAgIHZpcnR1YWwgdm9pZCBGaWx0ZXJPdXRQYXlsb2FkVHlwZSh1aW50OF90IHBh
eWxvYWRfdHlwZSk7CiAKLSAgdmlydHVhbCB2b2lkIFNlbGVjdFNzcmModWludDMyX3Qgc3NyYyk7
Ci0KICBwcm90ZWN0ZWQ6CiAgIHN0ZDo6Yml0c2V0PDEyOD4gZmlsdGVyXzsgIC8vIFBheWxvYWQg
dHlwZSBpcyA3IGJpdHMgaW4gdGhlIFJGQy4KLSAgLy8gSWYgU1NSQyBmaWx0ZXJpbmcgZGlzY2Fy
ZHMgYWxsIHBhY2tldCB0aGF0IGRvIG5vdCBtYXRjaCB0aGUgU1NSQy4KLSAgYm9vbCB1c2Vfc3Ny
Y19maWx0ZXJfOyAgLy8gVHJ1ZSB3aGVuIFNTUkMgZmlsdGVyaW5nIGlzIGFjdGl2ZS4KLSAgdWlu
dDMyX3Qgc3NyY187ICAvLyBUaGUgc2VsZWN0ZWQgU1NSQy4gQWxsIG90aGVyIFNTUkNzIHdpbGwg
YmUgZGlzY2FyZGVkLgogCiAgcHJpdmF0ZToKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihQYWNrZXRTb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRjX2V2ZW50
X2xvZ19zb3VyY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5j
YwppbmRleCA5ZTQzNWM3Y2Y4OGZjMmI5ZDZkODY2ZGU0ODA4ODlmMTg2YjNmODNmLi41ODJjMmYy
ZjEzNTUxZjk4N2JhYWY5MWFhZWEyZWM4OTc2ZmYyZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRl
cS90b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9y
dGNfZXZlbnRfbG9nX3NvdXJjZS5jYwpAQCAtMTMsOTQgKzEzLDExNSBAQAogI2luY2x1ZGUgPHN0
cmluZy5oPgogI2luY2x1ZGUgPGlvc3RyZWFtPgogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRl
IDx1dGlsaXR5PgogCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9w
cm9jZXNzb3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9w
YWNrZXQuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9w
YXJzZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiAKLVJ0Y0V2ZW50TG9nU291cmNlKiBSdGNFdmVudExvZ1Nv
dXJjZTo6Q3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpIHsKK25hbWVzcGFjZSB7
Citib29sIFNob3VsZFNraXBTdHJlYW0oUGFyc2VkUnRjRXZlbnRMb2dOZXc6Ok1lZGlhVHlwZSBt
ZWRpYV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNzcmMsCisgICAgICAg
ICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyKSB7Cisg
IGlmIChtZWRpYV90eXBlICE9IFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpNZWRpYVR5cGU6OkFVRElP
KQorICAgIHJldHVybiB0cnVlOworICBpZiAoc3NyY19maWx0ZXIuaGFzX3ZhbHVlKCkgJiYgc3Ny
YyAhPSAqc3NyY19maWx0ZXIpCisgICAgcmV0dXJuIHRydWU7CisgIHJldHVybiBmYWxzZTsKK30K
K30gIC8vIG5hbWVzcGFjZQorCitSdGNFdmVudExvZ1NvdXJjZSogUnRjRXZlbnRMb2dTb3VyY2U6
OkNyZWF0ZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lLAorICAgIGFic2w6Om9w
dGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlcikgewogICBSdGNFdmVudExvZ1NvdXJjZSogc291
cmNlID0gbmV3IFJ0Y0V2ZW50TG9nU291cmNlKCk7Ci0gIFJUQ19DSEVDSyhzb3VyY2UtPk9wZW5G
aWxlKGZpbGVfbmFtZSkpOworICBSVENfQ0hFQ0soc291cmNlLT5PcGVuRmlsZShmaWxlX25hbWUs
IHNzcmNfZmlsdGVyKSk7CiAgIHJldHVybiBzb3VyY2U7CiB9CiAKIFJ0Y0V2ZW50TG9nU291cmNl
Ojp+UnRjRXZlbnRMb2dTb3VyY2UoKSB7fQogCi1ib29sIFJ0Y0V2ZW50TG9nU291cmNlOjpSZWdp
c3RlclJ0cEhlYWRlckV4dGVuc2lvbihSVFBFeHRlbnNpb25UeXBlIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGlkKSB7Ci0g
IFJUQ19DSEVDSyhwYXJzZXJfLmdldCgpKTsKLSAgcmV0dXJuIHBhcnNlcl8tPlJlZ2lzdGVyUnRw
SGVhZGVyRXh0ZW5zaW9uKHR5cGUsIGlkKTsKLX0KLQogc3RkOjp1bmlxdWVfcHRyPFBhY2tldD4g
UnRjRXZlbnRMb2dTb3VyY2U6Ok5leHRQYWNrZXQoKSB7Ci0gIGZvciAoOyBydHBfcGFja2V0X2lu
ZGV4XyA8IHBhcnNlZF9zdHJlYW1fLkdldE51bWJlck9mRXZlbnRzKCk7Ci0gICAgICAgcnRwX3Bh
Y2tldF9pbmRleF8rKykgewotICAgIGlmIChwYXJzZWRfc3RyZWFtXy5HZXRFdmVudFR5cGUocnRw
X3BhY2tldF9pbmRleF8pID09Ci0gICAgICAgIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpFdmVudFR5
cGU6OlJUUF9FVkVOVCkgewotICAgICAgUGFja2V0RGlyZWN0aW9uIGRpcmVjdGlvbjsKLSAgICAg
IHNpemVfdCBoZWFkZXJfbGVuZ3RoOwotICAgICAgc2l6ZV90IHBhY2tldF9sZW5ndGg7Ci0gICAg
ICB1aW50NjRfdCB0aW1lc3RhbXBfdXMgPSBwYXJzZWRfc3RyZWFtXy5HZXRUaW1lc3RhbXAocnRw
X3BhY2tldF9pbmRleF8pOwotICAgICAgcGFyc2VkX3N0cmVhbV8uR2V0UnRwSGVhZGVyKHJ0cF9w
YWNrZXRfaW5kZXhfLCAmZGlyZWN0aW9uLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZoZWFkZXJfbGVuZ3RoLCAmcGFja2V0X2xlbmd0aCwgbnVsbHB0cik7Ci0K
LSAgICAgIGlmIChkaXJlY3Rpb24gIT0ga0luY29taW5nUGFja2V0KSB7Ci0gICAgICAgIGNvbnRp
bnVlOwotICAgICAgfQotCi0gICAgICB1aW50OF90KiBwYWNrZXRfaGVhZGVyID0gbmV3IHVpbnQ4
X3RbaGVhZGVyX2xlbmd0aF07Ci0gICAgICBwYXJzZWRfc3RyZWFtXy5HZXRSdHBIZWFkZXIocnRw
X3BhY2tldF9pbmRleF8sIG51bGxwdHIsIHBhY2tldF9oZWFkZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFja2V0PiBwYWNrZXQoCi0gICAgICAgICAgbmV3IFBhY2tldChwYWNrZXRf
aGVhZGVyLCBoZWFkZXJfbGVuZ3RoLCBwYWNrZXRfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lc3RhbXBfdXMpIC8gMTAwMCwgKnBhcnNlcl8uZ2V0
KCkpKTsKLQotICAgICAgaWYgKCFwYWNrZXQtPnZhbGlkX2hlYWRlcigpKSB7Ci0gICAgICAgIHN0
ZDo6Y291dCA8PCAiV2FybmluZzogUGFja2V0IHdpdGggaW5kZXggIiA8PCBydHBfcGFja2V0X2lu
ZGV4XwotICAgICAgICAgICAgICAgICAgPDwgIiBoYXMgYW4gaW52YWxpZCBoZWFkZXIgYW5kIHdp
bGwgYmUgaWdub3JlZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9
Ci0KLSAgICAgIGlmIChwYXJzZWRfc3RyZWFtXy5HZXRNZWRpYVR5cGUocGFja2V0LT5oZWFkZXIo
KS5zc3JjLCBkaXJlY3Rpb24pICE9Ci0gICAgICAgICAgUGFyc2VkUnRjRXZlbnRMb2dOZXc6Ok1l
ZGlhVHlwZTo6QVVESU8pIHsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0KLSAgICAgIC8v
IENoZWNrIGlmIHRoZSBwYWNrZXQgc2hvdWxkIG5vdCBiZSBmaWx0ZXJlZCBvdXQuCi0gICAgICBp
ZiAoIWZpbHRlcl8udGVzdChwYWNrZXQtPmhlYWRlcigpLnBheWxvYWRUeXBlKSAmJgotICAgICAg
ICAgICEodXNlX3NzcmNfZmlsdGVyXyAmJiBwYWNrZXQtPmhlYWRlcigpLnNzcmMgIT0gc3NyY18p
KSB7Ci0gICAgICAgICsrcnRwX3BhY2tldF9pbmRleF87Ci0gICAgICAgIHJldHVybiBwYWNrZXQ7
Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJldHVybiBudWxscHRyOworICBpZiAocnRwX3BhY2tl
dF9pbmRleF8gPj0gcnRwX3BhY2tldHNfLnNpemUoKSkKKyAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFja2V0PiBwYWNrZXQgPSBzdGQ6Om1vdmUocnRwX3BhY2tldHNf
W3J0cF9wYWNrZXRfaW5kZXhfKytdKTsKKyAgcmV0dXJuIHBhY2tldDsKIH0KIAogaW50NjRfdCBS
dGNFdmVudExvZ1NvdXJjZTo6TmV4dEF1ZGlvT3V0cHV0RXZlbnRNcygpIHsKLSAgd2hpbGUgKGF1
ZGlvX291dHB1dF9pbmRleF8gPCBwYXJzZWRfc3RyZWFtXy5HZXROdW1iZXJPZkV2ZW50cygpKSB7
Ci0gICAgaWYgKHBhcnNlZF9zdHJlYW1fLkdldEV2ZW50VHlwZShhdWRpb19vdXRwdXRfaW5kZXhf
KSA9PQotICAgICAgICBQYXJzZWRSdGNFdmVudExvZ05ldzo6RXZlbnRUeXBlOjpBVURJT19QTEFZ
T1VUX0VWRU5UKSB7Ci0gICAgICBMb2dnZWRBdWRpb1BsYXlvdXRFdmVudCBwbGF5b3V0X2V2ZW50
ID0KLSAgICAgICAgICBwYXJzZWRfc3RyZWFtXy5HZXRBdWRpb1BsYXlvdXQoYXVkaW9fb3V0cHV0
X2luZGV4Xyk7Ci0gICAgICBpZiAoISh1c2Vfc3NyY19maWx0ZXJfICYmIHBsYXlvdXRfZXZlbnQu
c3NyYyAhPSBzc3JjXykpIHsKLSAgICAgICAgYXVkaW9fb3V0cHV0X2luZGV4XysrOwotICAgICAg
ICByZXR1cm4gcGxheW91dF9ldmVudC50aW1lc3RhbXBfdXMgLyAxMDAwOwotICAgICAgfQorICBp
ZiAoYXVkaW9fb3V0cHV0X2luZGV4XyA+PSBhdWRpb19vdXRwdXRzXy5zaXplKCkpCisgICAgcmV0
dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOworCisgIGludDY0X3Qgb3V0
cHV0X3RpbWVfbXMgPSBhdWRpb19vdXRwdXRzX1thdWRpb19vdXRwdXRfaW5kZXhfKytdOworICBy
ZXR1cm4gb3V0cHV0X3RpbWVfbXM7Cit9CisKK1J0Y0V2ZW50TG9nU291cmNlOjpSdGNFdmVudExv
Z1NvdXJjZSgpIDogUGFja2V0U291cmNlKCkge30KKworYm9vbCBSdGNFdmVudExvZ1NvdXJjZTo6
T3BlbkZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBzc3JjX2ZpbHRlcikgewor
ICBQYXJzZWRSdGNFdmVudExvZ05ldyBwYXJzZWRfbG9nOworICBpZiAoIXBhcnNlZF9sb2cuUGFy
c2VGaWxlKGZpbGVfbmFtZSkpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGNvbnN0IGF1dG8gZmly
c3RfbG9nX2VuZF90aW1lX3VzID0KKyAgICAgIHBhcnNlZF9sb2cuc3RvcF9sb2dfZXZlbnRzKCku
ZW1wdHkoKQorICAgICAgICAgID8gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkK
KyAgICAgICAgICA6IHBhcnNlZF9sb2cuc3RvcF9sb2dfZXZlbnRzKCkuZnJvbnQoKS5sb2dfdGlt
ZV91cygpOworCisgIGF1dG8gaGFuZGxlX3J0cF9wYWNrZXQgPQorICAgICAgW3RoaXMsCisgICAg
ICAgZmlyc3RfbG9nX2VuZF90aW1lX3VzXShjb25zdCB3ZWJydGM6OkxvZ2dlZFJ0cFBhY2tldElu
Y29taW5nJiBpbmNvbWluZykgeworICAgICAgICBpZiAoIWZpbHRlcl8udGVzdChpbmNvbWluZy5y
dHAuaGVhZGVyLnBheWxvYWRUeXBlKSAmJgorICAgICAgICAgICAgaW5jb21pbmcubG9nX3RpbWVf
dXMoKSA8IGZpcnN0X2xvZ19lbmRfdGltZV91cykgeworICAgICAgICAgIHJ0cF9wYWNrZXRzXy5l
bXBsYWNlX2JhY2soYWJzbDo6bWFrZV91bmlxdWU8UGFja2V0PigKKyAgICAgICAgICAgICAgaW5j
b21pbmcucnRwLmhlYWRlciwgaW5jb21pbmcucnRwLnRvdGFsX2xlbmd0aCwKKyAgICAgICAgICAg
ICAgaW5jb21pbmcucnRwLnRvdGFsX2xlbmd0aCAtIGluY29taW5nLnJ0cC5oZWFkZXJfbGVuZ3Ro
LAorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KGluY29taW5nLmxvZ190aW1lX21z
KCkpKSk7CisgICAgICAgIH0KKyAgICAgIH07CisKKyAgYXV0byBoYW5kbGVfYXVkaW9fcGxheW91
dCA9CisgICAgICBbdGhpcywgZmlyc3RfbG9nX2VuZF90aW1lX3VzXSgKKyAgICAgICAgICBjb25z
dCB3ZWJydGM6OkxvZ2dlZEF1ZGlvUGxheW91dEV2ZW50JiBhdWRpb19wbGF5b3V0KSB7CisgICAg
ICAgIGlmIChhdWRpb19wbGF5b3V0LmxvZ190aW1lX3VzKCkgPCBmaXJzdF9sb2dfZW5kX3RpbWVf
dXMpIHsKKyAgICAgICAgICBhdWRpb19vdXRwdXRzXy5lbXBsYWNlX2JhY2soYXVkaW9fcGxheW91
dC5sb2dfdGltZV9tcygpKTsKKyAgICAgICAgfQorICAgICAgfTsKKworICAvLyBUaGlzIHdvdWxk
bid0IGJlIG5lZWRlZCBpZiB3ZSBrbmV3IHRoYXQgdGhlcmUgd2FzIGF0IG1vc3Qgb25lIGF1ZGlv
IHN0cmVhbS4KKyAgd2VicnRjOjpSdGNFdmVudFByb2Nlc3NvciBldmVudF9wcm9jZXNzb3I7Cisg
IGZvciAoY29uc3QgYXV0byYgcnRwX3BhY2tldHMgOiBwYXJzZWRfbG9nLmluY29taW5nX3J0cF9w
YWNrZXRzX2J5X3NzcmMoKSkgeworICAgIFBhcnNlZFJ0Y0V2ZW50TG9nTmV3OjpNZWRpYVR5cGUg
bWVkaWFfdHlwZSA9CisgICAgICAgIHBhcnNlZF9sb2cuR2V0TWVkaWFUeXBlKHJ0cF9wYWNrZXRz
LnNzcmMsIHdlYnJ0Yzo6a0luY29taW5nUGFja2V0KTsKKyAgICBpZiAoU2hvdWxkU2tpcFN0cmVh
bShtZWRpYV90eXBlLCBydHBfcGFja2V0cy5zc3JjLCBzc3JjX2ZpbHRlcikpIHsKKyAgICAgIGNv
bnRpbnVlOwogICAgIH0KLSAgICBhdWRpb19vdXRwdXRfaW5kZXhfKys7CisgICAgYXV0byBydHBf
dmlldyA9IGFic2w6Om1ha2VfdW5pcXVlPAorICAgICAgICB3ZWJydGM6OlByb2Nlc3NhYmxlRXZl
bnRMaXN0PHdlYnJ0Yzo6TG9nZ2VkUnRwUGFja2V0SW5jb21pbmc+PigKKyAgICAgICAgcnRwX3Bh
Y2tldHMuaW5jb21pbmdfcGFja2V0cy5iZWdpbigpLAorICAgICAgICBydHBfcGFja2V0cy5pbmNv
bWluZ19wYWNrZXRzLmVuZCgpLCBoYW5kbGVfcnRwX3BhY2tldCk7CisgICAgZXZlbnRfcHJvY2Vz
c29yLkFkZEV2ZW50cyhzdGQ6Om1vdmUocnRwX3ZpZXcpKTsKKyAgfQorCisgIGZvciAoY29uc3Qg
YXV0byYgYXVkaW9fcGxheW91dHMgOiBwYXJzZWRfbG9nLmF1ZGlvX3BsYXlvdXRfZXZlbnRzKCkp
IHsKKyAgICBpZiAoc3NyY19maWx0ZXIuaGFzX3ZhbHVlKCkgJiYgYXVkaW9fcGxheW91dHMuZmly
c3QgIT0gKnNzcmNfZmlsdGVyKQorICAgICAgY29udGludWU7CisgICAgYXV0byBhdWRpb192aWV3
ID0gYWJzbDo6bWFrZV91bmlxdWU8CisgICAgICAgIHdlYnJ0Yzo6UHJvY2Vzc2FibGVFdmVudExp
c3Q8d2VicnRjOjpMb2dnZWRBdWRpb1BsYXlvdXRFdmVudD4+KAorICAgICAgICBhdWRpb19wbGF5
b3V0cy5zZWNvbmQuYmVnaW4oKSwgYXVkaW9fcGxheW91dHMuc2Vjb25kLmVuZCgpLAorICAgICAg
ICBoYW5kbGVfYXVkaW9fcGxheW91dCk7CisgICAgZXZlbnRfcHJvY2Vzc29yLkFkZEV2ZW50cyhz
dGQ6Om1vdmUoYXVkaW9fdmlldykpOwogICB9Ci0gIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDY0X3Q+OjptYXgoKTsKLX0KIAotUnRjRXZlbnRMb2dTb3VyY2U6OlJ0Y0V2ZW50TG9nU291
cmNlKCkKLSAgICA6IFBhY2tldFNvdXJjZSgpLCBwYXJzZXJfKFJ0cEhlYWRlclBhcnNlcjo6Q3Jl
YXRlKCkpIHt9CisgIC8vIEZpbGxzIGluIHJ0cF9wYWNrZXRzXyBhbmQgYXVkaW9fb3V0cHV0c18u
CisgIGV2ZW50X3Byb2Nlc3Nvci5Qcm9jZXNzRXZlbnRzSW5PcmRlcigpOwogCi1ib29sIFJ0Y0V2
ZW50TG9nU291cmNlOjpPcGVuRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lKSB7Ci0g
IHJldHVybiBwYXJzZWRfc3RyZWFtXy5QYXJzZUZpbGUoZmlsZV9uYW1lKTsKKyAgcmV0dXJuIHRy
dWU7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRjX2V2ZW50
X2xvZ19zb3VyY2UuaAppbmRleCBkYjRlYjE5ZTExZjM2OWRiOTA0NDcwY2JiNTI4ZWIyNTQ1ODZl
MWFjLi42Yjc2MWY3ZGJiZDI2MmQ2ZmNlZGFhNThhZmYyMDVhZjg5MGU2ZGYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9uZXRlcS90b29scy9ydGNfZXZlbnRfbG9nX3NvdXJjZS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Rvb2xzL3J0Y19ldmVudF9sb2dfc291cmNlLmgKQEAgLTEzLDcgKzEzLDkgQEAKIAogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgogCisj
aW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ydGNfZXZlbnRfbG9nX3BhcnNlcl9uZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2NvZGluZy9uZXRlcS90b29scy9wYWNrZXRfc291cmNlLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKQEAgLTMxLDEzICszMywxMSBA
QCBjbGFzcyBSdGNFdmVudExvZ1NvdXJjZSA6IHB1YmxpYyBQYWNrZXRTb3VyY2UgewogIHB1Ymxp
YzoKICAgLy8gQ3JlYXRlcyBhbiBSdGNFdmVudExvZ1NvdXJjZSByZWFkaW5nIGZyb20gfGZpbGVf
bmFtZXwuIElmIHRoZSBmaWxlIGNhbm5vdAogICAvLyBiZSBvcGVuZWQsIG9yIGhhcyB0aGUgd3Jv
bmcgZm9ybWF0LCBOVUxMIHdpbGwgYmUgcmV0dXJuZWQuCi0gIHN0YXRpYyBSdGNFdmVudExvZ1Nv
dXJjZSogQ3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpOworICBzdGF0aWMgUnRj
RXZlbnRMb2dTb3VyY2UqIENyZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4g
c3NyY19maWx0ZXIpOwogCiAgIHZpcnR1YWwgflJ0Y0V2ZW50TG9nU291cmNlKCk7CiAKLSAgLy8g
UmVnaXN0ZXJzIGFuIFJUUCBoZWFkZXIgZXh0ZW5zaW9uIGFuZCBiaW5kcyBpdCB0byB8aWR8Lgot
ICB2aXJ0dWFsIGJvb2wgUmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUlRQRXh0ZW5zaW9uVHlw
ZSB0eXBlLCB1aW50OF90IGlkKTsKLQogICBzdGQ6OnVuaXF1ZV9wdHI8UGFja2V0PiBOZXh0UGFj
a2V0KCkgb3ZlcnJpZGU7CiAKICAgLy8gUmV0dXJucyB0aGUgdGltZXN0YW1wIG9mIHRoZSBuZXh0
IGF1ZGlvIG91dHB1dCBldmVudCwgaW4gbWlsbGlzZWNvbmRzLiBUaGUKQEAgLTQ4LDE0ICs0OCwx
NCBAQCBjbGFzcyBSdGNFdmVudExvZ1NvdXJjZSA6IHB1YmxpYyBQYWNrZXRTb3VyY2UgewogIHBy
aXZhdGU6CiAgIFJ0Y0V2ZW50TG9nU291cmNlKCk7CiAKLSAgYm9vbCBPcGVuRmlsZShjb25zdCBz
dGQ6OnN0cmluZyYgZmlsZV9uYW1lKTsKKyAgYm9vbCBPcGVuRmlsZShjb25zdCBzdGQ6OnN0cmlu
ZyYgZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBz
c3JjX2ZpbHRlcik7CiAKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBhY2tldD4+IHJ0
cF9wYWNrZXRzXzsKICAgc2l6ZV90IHJ0cF9wYWNrZXRfaW5kZXhfID0gMDsKKyAgc3RkOjp2ZWN0
b3I8aW50NjRfdD4gYXVkaW9fb3V0cHV0c187CiAgIHNpemVfdCBhdWRpb19vdXRwdXRfaW5kZXhf
ID0gMDsKIAotICBQYXJzZWRSdGNFdmVudExvZ05ldyBwYXJzZWRfc3RyZWFtXzsKLSAgc3RkOjp1
bmlxdWVfcHRyPFJ0cEhlYWRlclBhcnNlcj4gcGFyc2VyXzsKLQogICBSVENfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOKFJ0Y0V2ZW50TG9nU291cmNlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3Rvb2xzL3J0cF9hbmFseXplLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2FuYWx5
emUuY2MKaW5kZXggZjkzOTAzODFjZDM4ZDBkMTJlYzExM2EzMTM1NjVlYWRmNzA0ODRmZS4uOWQz
MDQxZWE2NjhkY2ExZGViZGMzMjBjYmE1NDYzNjMwYTI0OGQ4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rpbmcv
bmV0ZXEvdG9vbHMvcnRwX2FuYWx5emUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2Fu
YWx5emUuY2MKQEAgLTE5LDE2ICsxOSwxNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgi
CiAKIC8vIERlZmluZSBjb21tYW5kIGxpbmUgZmxhZ3MuCi1ERUZJTkVfaW50KHJlZCwgMTE3LCAi
UlRQIHBheWxvYWQgdHlwZSBmb3IgUkVEIik7Ci1ERUZJTkVfaW50KGF1ZGlvX2xldmVsLAotICAg
ICAgICAgICAtMSwKLSAgICAgICAgICAgIkV4dGVuc2lvbiBJRCBmb3IgYXVkaW8gbGV2ZWwgKFJG
QyA2NDY0KTsgIgotICAgICAgICAgICAiLTEgbm90IHRvIHByaW50IGF1ZGlvIGxldmVsIik7Ci1E
RUZJTkVfaW50KGFic19zZW5kX3RpbWUsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiRXh0
ZW5zaW9uIElEIGZvciBhYnNvbHV0ZSBzZW5kZXIgdGltZTsgIgotICAgICAgICAgICAiLTEgbm90
IHRvIHByaW50IGFic29sdXRlIHNlbmQgdGltZSIpOwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2Us
ICJQcmludCB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHJlZCwgMTE3LCAiUlRQ
IHBheWxvYWQgdHlwZSBmb3IgUkVEIik7CitXRUJSVENfREVGSU5FX2ludChhdWRpb19sZXZlbCwK
KyAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgIkV4dGVuc2lvbiBJRCBm
b3IgYXVkaW8gbGV2ZWwgKFJGQyA2NDY0KTsgIgorICAgICAgICAgICAgICAgICAgIi0xIG5vdCB0
byBwcmludCBhdWRpbyBsZXZlbCIpOworV0VCUlRDX0RFRklORV9pbnQoYWJzX3NlbmRfdGltZSwK
KyAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgIkV4dGVuc2lvbiBJRCBm
b3IgYWJzb2x1dGUgc2VuZGVyIHRpbWU7ICIKKyAgICAgICAgICAgICAgICAgICItMSBub3QgdG8g
cHJpbnQgYWJzb2x1dGUgc2VuZCB0aW1lIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFs
c2UsICJQcmludCB0aGlzIG1lc3NhZ2UiKTsKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFy
Z3ZbXSkgewogICBzdGQ6OnN0cmluZyBwcm9ncmFtX25hbWUgPSBhcmd2WzBdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2VuY29kZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzL3J0
cF9lbmNvZGUuY2MKaW5kZXggNTA2NWNhMTY3NTdkMDZmYTUyNWU2ZTNlNzdhZDQxZDdjZjIxYjI5
OC4uMTRjNmU1OGE5ZDY0NGE3MzFmYzA1ZWU4NGFhOWYwYzMzY2Q4NGFmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19j
b2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2VuY29kZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9y
dHBfZW5jb2RlLmNjCkBAIC00MCwyMCArNDAsMjQgQEAgbmFtZXNwYWNlIHRlc3QgewogbmFtZXNw
YWNlIHsKIAogLy8gRGVmaW5lIGNvbW1hbmQgbGluZSBmbGFncy4KLURFRklORV9ib29sKGxpc3Rf
Y29kZWNzLCBmYWxzZSwgIkVudW1lcmF0ZSBhbGwgY29kZWNzIik7Ci1ERUZJTkVfc3RyaW5nKGNv
ZGVjLCAib3B1cyIsICJDb2RlYyB0byB1c2UiKTsKLURFRklORV9pbnQoZnJhbWVfbGVuLCAwLCAi
RnJhbWUgbGVuZ3RoIGluIG1zOyAwIGluZGljYXRlcyBjb2RlYyBkZWZhdWx0IHZhbHVlIik7Ci1E
RUZJTkVfaW50KGJpdHJhdGUsIDAsICJCaXRyYXRlIGluIGticHM7IDAgaW5kaWNhdGVzIGNvZGVj
IGRlZmF1bHQgdmFsdWUiKTsKLURFRklORV9pbnQocGF5bG9hZF90eXBlLAotICAgICAgICAgICAt
MSwKLSAgICAgICAgICAgIlJUUCBwYXlsb2FkIHR5cGU7IC0xIGluZGljYXRlcyBjb2RlYyBkZWZh
dWx0IHZhbHVlIik7Ci1ERUZJTkVfaW50KGNuZ19wYXlsb2FkX3R5cGUsCi0gICAgICAgICAgIC0x
LAotICAgICAgICAgICAiUlRQIHBheWxvYWQgdHlwZSBmb3IgQ05HOyAtMSBpbmRpY2F0ZXMgZGVm
YXVsdCB2YWx1ZSIpOwotREVGSU5FX2ludChzc3JjLCAwLCAiU1NSQyB0byB3cml0ZSB0byB0aGUg
UlRQIGhlYWRlciIpOwotREVGSU5FX2Jvb2woZHR4LCBmYWxzZSwgIlVzZSBEVFgvQ05HIik7Ci1E
RUZJTkVfaW50KHNhbXBsZV9yYXRlLCA0ODAwMCwgIlNhbXBsZSByYXRlIG9mIHRoZSBpbnB1dCBm
aWxlIik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMgbWVzc2FnZSIpOwor
V0VCUlRDX0RFRklORV9ib29sKGxpc3RfY29kZWNzLCBmYWxzZSwgIkVudW1lcmF0ZSBhbGwgY29k
ZWNzIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhjb2RlYywgIm9wdXMiLCAiQ29kZWMgdG8gdXNl
Iik7CitXRUJSVENfREVGSU5FX2ludChmcmFtZV9sZW4sCisgICAgICAgICAgICAgICAgICAwLAor
ICAgICAgICAgICAgICAgICAgIkZyYW1lIGxlbmd0aCBpbiBtczsgMCBpbmRpY2F0ZXMgY29kZWMg
ZGVmYXVsdCB2YWx1ZSIpOworV0VCUlRDX0RFRklORV9pbnQoYml0cmF0ZSwKKyAgICAgICAgICAg
ICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiQml0cmF0ZSBpbiBrYnBzOyAwIGluZGljYXRl
cyBjb2RlYyBkZWZhdWx0IHZhbHVlIik7CitXRUJSVENfREVGSU5FX2ludChwYXlsb2FkX3R5cGUs
CisgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICJSVFAgcGF5bG9hZCB0
eXBlOyAtMSBpbmRpY2F0ZXMgY29kZWMgZGVmYXVsdCB2YWx1ZSIpOworV0VCUlRDX0RFRklORV9p
bnQoY25nX3BheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAg
ICAgICAgIlJUUCBwYXlsb2FkIHR5cGUgZm9yIENORzsgLTEgaW5kaWNhdGVzIGRlZmF1bHQgdmFs
dWUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNzcmMsIDAsICJTU1JDIHRvIHdyaXRlIHRvIHRoZSBS
VFAgaGVhZGVyIik7CitXRUJSVENfREVGSU5FX2Jvb2woZHR4LCBmYWxzZSwgIlVzZSBEVFgvQ05H
Iik7CitXRUJSVENfREVGSU5FX2ludChzYW1wbGVfcmF0ZSwgNDgwMDAsICJTYW1wbGUgcmF0ZSBv
ZiB0aGUgaW5wdXQgZmlsZSIpOworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJp
bnQgdGhpcyBtZXNzYWdlIik7CiAKIC8vIEFkZCBuZXcgY29kZWNzIGhlcmUsIGFuZCB0byB0aGUg
bWFwIGJlbG93LgogZW51bSBjbGFzcyBDb2RlY1R5cGUgewpAQCAtMjQyLDggKzI0Niw4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0VuY29kZXI+IENyZWF0ZUVuY29kZXIoQ29kZWNUeXBlIGNvZGVj
X3R5cGUsCiAgIHJldHVybiBudWxscHRyOwogfQogCi1BdWRpb0VuY29kZXJDbmc6OkNvbmZpZyBH
ZXRDbmdDb25maWcoaW50IHNhbXBsZV9yYXRlX2h6KSB7Ci0gIEF1ZGlvRW5jb2RlckNuZzo6Q29u
ZmlnIGNuZ19jb25maWc7CitBdWRpb0VuY29kZXJDbmdDb25maWcgR2V0Q25nQ29uZmlnKGludCBz
YW1wbGVfcmF0ZV9oeikgeworICBBdWRpb0VuY29kZXJDbmdDb25maWcgY25nX2NvbmZpZzsKICAg
Y29uc3QgYXV0byBkZWZhdWx0X3BheWxvYWRfdHlwZSA9IFsmXSB7CiAgICAgc3dpdGNoIChzYW1w
bGVfcmF0ZV9oeikgewogICAgICAgY2FzZSA4MDAwOgpAQCAtMzA5LDEwICszMTMsMTAgQEAgaW50
IFJ1blJ0cEVuY29kZShpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAKICAgLy8gQ3JlYXRlIGFu
IGV4dGVybmFsIFZBRC9DTkcgZW5jb2RlciBpZiBuZWVkZWQuCiAgIGlmIChGTEFHX2R0eCAmJiAh
Y29kZWNfaXQtPnNlY29uZC5pbnRlcm5hbF9kdHgpIHsKLSAgICBBdWRpb0VuY29kZXJDbmc6OkNv
bmZpZyBjbmdfY29uZmlnID0gR2V0Q25nQ29uZmlnKGNvZGVjLT5TYW1wbGVSYXRlSHooKSk7Cisg
ICAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnIGNuZ19jb25maWcgPSBHZXRDbmdDb25maWcoY29kZWMt
PlNhbXBsZVJhdGVIeigpKTsKICAgICBSVENfRENIRUNLKGNvZGVjKTsKICAgICBjbmdfY29uZmln
LnNwZWVjaF9lbmNvZGVyID0gc3RkOjptb3ZlKGNvZGVjKTsKLSAgICBjb2RlYyA9IGFic2w6Om1h
a2VfdW5pcXVlPEF1ZGlvRW5jb2RlckNuZz4oc3RkOjptb3ZlKGNuZ19jb25maWcpKTsKKyAgICBj
b2RlYyA9IENyZWF0ZUNvbWZvcnROb2lzZUVuY29kZXIoc3RkOjptb3ZlKGNuZ19jb25maWcpKTsK
ICAgfQogICBSVENfRENIRUNLKGNvZGVjKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9v
bHMvcnRwX2ZpbGVfc291cmNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNl
LmNjCmluZGV4IDdiZjdkNTIwODNjYzY1YzQwMThlMTM3MmVhNGFkYTkwZTlmYzNiYjYuLmVkYTJi
M2UzMWZjYmQ0YTA2OWExNWVkZDAyNjQ0MmM0ODk2ZDE0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBf
ZmlsZV9zb3VyY2UuY2MKQEAgLTI2LDggKzI2LDkgQEAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFt
ZXNwYWNlIHRlc3QgewogCi1SdHBGaWxlU291cmNlKiBSdHBGaWxlU291cmNlOjpDcmVhdGUoY29u
c3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSkgewotICBSdHBGaWxlU291cmNlKiBzb3VyY2UgPSBu
ZXcgUnRwRmlsZVNvdXJjZSgpOworUnRwRmlsZVNvdXJjZSogUnRwRmlsZVNvdXJjZTo6Q3JlYXRl
KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyKSB7CisgIFJ0
cEZpbGVTb3VyY2UqIHNvdXJjZSA9IG5ldyBSdHBGaWxlU291cmNlKHNzcmNfZmlsdGVyKTsKICAg
UlRDX0NIRUNLKHNvdXJjZS0+T3BlbkZpbGUoZmlsZV9uYW1lKSk7CiAgIHJldHVybiBzb3VyY2U7
CiB9CkBAIC03Miw3ICs3Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWNrZXQ+IFJ0cEZpbGVTb3Vy
Y2U6Ok5leHRQYWNrZXQoKSB7CiAgICAgICBjb250aW51ZTsKICAgICB9CiAgICAgaWYgKGZpbHRl
cl8udGVzdChwYWNrZXQtPmhlYWRlcigpLnBheWxvYWRUeXBlKSB8fAotICAgICAgICAodXNlX3Nz
cmNfZmlsdGVyXyAmJiBwYWNrZXQtPmhlYWRlcigpLnNzcmMgIT0gc3NyY18pKSB7CisgICAgICAg
IChzc3JjX2ZpbHRlcl8gJiYgcGFja2V0LT5oZWFkZXIoKS5zc3JjICE9ICpzc3JjX2ZpbHRlcl8p
KSB7CiAgICAgICAvLyBUaGlzIHBheWxvYWQgdHlwZSBzaG91bGQgYmUgZmlsdGVyZWQgb3V0LiBD
b250aW51ZSB0byB0aGUgbmV4dCBwYWNrZXQuCiAgICAgICBjb250aW51ZTsKICAgICB9CkBAIC04
MCw4ICs4MSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFja2V0PiBSdHBGaWxlU291cmNlOjpOZXh0
UGFja2V0KCkgewogICB9CiB9CiAKLVJ0cEZpbGVTb3VyY2U6OlJ0cEZpbGVTb3VyY2UoKQotICAg
IDogUGFja2V0U291cmNlKCksIHBhcnNlcl8oUnRwSGVhZGVyUGFyc2VyOjpDcmVhdGUoKSkge30K
K1J0cEZpbGVTb3VyY2U6OlJ0cEZpbGVTb3VyY2UoYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNz
cmNfZmlsdGVyKQorICAgIDogUGFja2V0U291cmNlKCksCisgICAgICBwYXJzZXJfKFJ0cEhlYWRl
clBhcnNlcjo6Q3JlYXRlKCkpLAorICAgICAgc3NyY19maWx0ZXJfKHNzcmNfZmlsdGVyKSB7fQog
CiBib29sIFJ0cEZpbGVTb3VyY2U6Ok9wZW5GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25h
bWUpIHsKICAgcnRwX3JlYWRlcl8ucmVzZXQoUnRwRmlsZVJlYWRlcjo6Q3JlYXRlKFJ0cEZpbGVS
ZWFkZXI6OmtSdHBEdW1wLCBmaWxlX25hbWUpKTsKQEAgLTg5LDcgKzkyLDcgQEAgYm9vbCBSdHBG
aWxlU291cmNlOjpPcGVuRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lKSB7CiAgICAg
cmV0dXJuIHRydWU7CiAgIHJ0cF9yZWFkZXJfLnJlc2V0KFJ0cEZpbGVSZWFkZXI6OkNyZWF0ZShS
dHBGaWxlUmVhZGVyOjprUGNhcCwgZmlsZV9uYW1lKSk7CiAgIGlmICghcnRwX3JlYWRlcl8pIHsK
LSAgICBSVENfRkFUQUwoKSA8PCAiQ291bGRuJ3Qgb3BlbiBpbnB1dCBmaWxlIGFzIGVpdGhlciBh
IHJ0cGR1bXAgb3IgLnBjYXAuIE5vdGUgIgorICAgIEZBVEFMKCkgPDwgIkNvdWxkbid0IG9wZW4g
aW5wdXQgZmlsZSBhcyBlaXRoZXIgYSBydHBkdW1wIG9yIC5wY2FwLiBOb3RlICIKICAgICAgICAg
ICAgICAgICJ0aGF0IC5wY2FwbmcgaXMgbm90IHN1cHBvcnRlZC4iOwogICB9CiAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2UuaAppbmRleCAwMTMzMzNiODlhMzY5ZmEy
MjJmNDdjYzI4OTBmMWY3OWFlZTc0ZmExLi4wMmFiODk3NTY2MTkwYjMzNTIxNWNjNjgzZjk2MDli
OWJmNzIwZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2Uu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2UuaApAQCAtMTYsNiArMTYs
NyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJ
TlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90
b29scy9wYWNrZXRfc291cmNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRl
L3J0cF9ydGNwX2RlZmluZXMuaCIKQEAgLTMzLDcgKzM0LDkgQEAgY2xhc3MgUnRwRmlsZVNvdXJj
ZSA6IHB1YmxpYyBQYWNrZXRTb3VyY2UgewogIHB1YmxpYzoKICAgLy8gQ3JlYXRlcyBhbiBSdHBG
aWxlU291cmNlIHJlYWRpbmcgZnJvbSB8ZmlsZV9uYW1lfC4gSWYgdGhlIGZpbGUgY2Fubm90IGJl
CiAgIC8vIG9wZW5lZCwgb3IgaGFzIHRoZSB3cm9uZyBmb3JtYXQsIE5VTEwgd2lsbCBiZSByZXR1
cm5lZC4KLSAgc3RhdGljIFJ0cEZpbGVTb3VyY2UqIENyZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYg
ZmlsZV9uYW1lKTsKKyAgc3RhdGljIFJ0cEZpbGVTb3VyY2UqIENyZWF0ZSgKKyAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUsCisgICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4g
c3NyY19maWx0ZXIgPSBhYnNsOjpudWxsb3B0KTsKIAogICAvLyBDaGVja3Mgd2hldGhlciBhIGZp
bGVzIGlzIGEgdmFsaWQgUlRQIGR1bXAgb3IgUENBUCAoV2lyZXNoYXJrKSBmaWxlLgogICBzdGF0
aWMgYm9vbCBWYWxpZFJ0cER1bXAoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZSk7CkBAIC01
MSwxMiArNTQsMTMgQEAgY2xhc3MgUnRwRmlsZVNvdXJjZSA6IHB1YmxpYyBQYWNrZXRTb3VyY2Ug
ewogICBzdGF0aWMgY29uc3QgaW50IGtSdHBGaWxlSGVhZGVyU2l6ZSA9IDQgKyA0ICsgNCArIDIg
KyAyOwogICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYWNrZXRIZWFkZXJTaXplID0gODsKIAotICBS
dHBGaWxlU291cmNlKCk7CisgIGV4cGxpY2l0IFJ0cEZpbGVTb3VyY2UoYWJzbDo6b3B0aW9uYWw8
dWludDMyX3Q+IHNzcmNfZmlsdGVyKTsKIAogICBib29sIE9wZW5GaWxlKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBmaWxlX25hbWUpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBGaWxlUmVhZGVyPiBydHBf
cmVhZGVyXzsKICAgc3RkOjp1bmlxdWVfcHRyPFJ0cEhlYWRlclBhcnNlcj4gcGFyc2VyXzsKKyAg
Y29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHNzcmNfZmlsdGVyXzsKIAogICBSVENfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJ0cEZpbGVTb3VyY2UpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL25ldGVxL3Rvb2xzL3J0cF9qaXR0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfaml0
dGVyLmNjCmluZGV4IDNjNDk0NDMwMzZjMzlmNzMyMmVmMWU4ZTYzN2MzMmQ2MTY4MTk3ODkuLjky
YTdhOGQyMTUwYWZiNDRlMTdmY2M2ZDNlMTQ5MDVmNjc4ODRhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L25ldGVxL3Rvb2xzL3J0cF9qaXR0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRwX2pp
dHRlci5jYwpAQCAtMjMsNyArMjMsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0
ZXN0IHsKIG5hbWVzcGFjZSB7CiAKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgaGVs
cCBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJQcmludCBoZWxw
IG1lc3NhZ2UiKTsKIAogY29uc3RleHByIHNpemVfdCBrUnRwRHVtcEhlYWRlckxlbmd0aCA9IDg7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvRW5jb2RlRGVjb2RlVGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rl
c3QvRW5jb2RlRGVjb2RlVGVzdC5jYwppbmRleCBjNmYzZjhjOWYyNTYyZDQ5MmU0OGRkZTM1NDY1
NDg1M2M2MWQyNWViLi4yNDA4MzY2ODhjZjBjZmFlMjMzMWFmODU4MjY3MzJkYzZlMjlkOGYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy90ZXN0L0VuY29kZURlY29kZVRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVz
dC9FbmNvZGVEZWNvZGVUZXN0LmNjCkBAIC0xNCw5ICsxNCw5IEBACiAjaW5jbHVkZSA8c3RkbGli
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgi
CiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9y
eS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2Zh
Y3RvcnkuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNs
dWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9hdWRpb19mb3JtYXRf
Y29udmVyc2lvbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVk
aW9fY29kaW5nX21vZHVsZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3Qv
dXRpbGl0eS5oIgpAQCAtMjQ4LDExICsyNDgsMTEgQEAgdm9pZCBFbmNvZGVEZWNvZGVUZXN0OjpQ
ZXJmb3JtKCkgewogCiAgIGZvciAoaW50IG4gPSAwOyBuIDwgbnVtQ29kZWNzOyBuKyspIHsKICAg
ICBFWFBFQ1RfRVEoMCwgYWNtLT5Db2RlYyhuLCAmc2VuZENvZGVjVG1wKSk7Ci0gICAgaWYgKFNU
Ul9DQVNFX0NNUChzZW5kQ29kZWNUbXAucGxuYW1lLCAidGVsZXBob25lLWV2ZW50IikgPT0gMCkg
eworICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHNlbmRDb2RlY1RtcC5wbG5hbWUsICJ0
ZWxlcGhvbmUtZXZlbnQiKSkgewogICAgICAgbnVtUGFyc1tuXSA9IDA7Ci0gICAgfSBlbHNlIGlm
IChTVFJfQ0FTRV9DTVAoc2VuZENvZGVjVG1wLnBsbmFtZSwgImNuIikgPT0gMCkgeworICAgIH0g
ZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShzZW5kQ29kZWNUbXAucGxuYW1lLCAiY24i
KSkgewogICAgICAgbnVtUGFyc1tuXSA9IDA7Ci0gICAgfSBlbHNlIGlmIChTVFJfQ0FTRV9DTVAo
c2VuZENvZGVjVG1wLnBsbmFtZSwgInJlZCIpID09IDApIHsKKyAgICB9IGVsc2UgaWYgKGFic2w6
OkVxdWFsc0lnbm9yZUNhc2Uoc2VuZENvZGVjVG1wLnBsbmFtZSwgInJlZCIpKSB7CiAgICAgICBu
dW1QYXJzW25dID0gMDsKICAgICB9IGVsc2UgaWYgKHNlbmRDb2RlY1RtcC5jaGFubmVscyA9PSAy
KSB7CiAgICAgICBudW1QYXJzW25dID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvVGVzdFJl
ZEZlYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fY29kaW5nL3Rlc3QvVGVzdFJlZEZlYy5jYwppbmRleCBjNTZmZWQ5NWRhYjk2ZGM1
NTJjMDE5YjJiZDIyYTc4NWNjYTYwZThhLi44YmIzOTcxMzczZGE3ZjA3MjEwODFhNzIxYjc1ZDM3
NGU0OTQ5NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RSZWRGZWMuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvdGVzdC9UZXN0UmVkRmVjLmNjCkBAIC0xNzMsMTQgKzE3MywxNCBAQCB2b2lkIFRlc3RSZWRG
ZWM6OlJlZ2lzdGVyU2VuZENvZGVjKAogICBhdXRvIGVuY29kZXIgPSBlbmNvZGVyX2ZhY3Rvcnlf
LT5NYWtlQXVkaW9FbmNvZGVyKHBheWxvYWRfdHlwZSwgY29kZWNfZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om51bGxvcHQp
OwogICBFWFBFQ1RfTkUoZW5jb2RlciwgbnVsbHB0cik7Ci0gIGlmIChTVFJfQ0FTRV9DTVAoY29k
ZWNfZm9ybWF0Lm5hbWUuY19zdHIoKSwgIm9wdXMiKSAhPSAwKSB7CisgIGlmICghYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShjb2RlY19mb3JtYXQubmFtZSwgIm9wdXMiKSkgewogICAgIGlmICh2YWRf
bW9kZS5oYXNfdmFsdWUoKSkgewotICAgICAgQXVkaW9FbmNvZGVyQ25nOjpDb25maWcgY29uZmln
OworICAgICAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnIGNvbmZpZzsKICAgICAgIGNvbmZpZy5zcGVl
Y2hfZW5jb2RlciA9IHN0ZDo6bW92ZShlbmNvZGVyKTsKICAgICAgIGNvbmZpZy5udW1fY2hhbm5l
bHMgPSAxOwogICAgICAgY29uZmlnLnBheWxvYWRfdHlwZSA9IGNuX3BheWxvYWRfdHlwZTsKICAg
ICAgIGNvbmZpZy52YWRfbW9kZSA9IHZhZF9tb2RlLnZhbHVlKCk7Ci0gICAgICBlbmNvZGVyID0g
YWJzbDo6bWFrZV91bmlxdWU8QXVkaW9FbmNvZGVyQ25nPihzdGQ6Om1vdmUoY29uZmlnKSk7Cisg
ICAgICBlbmNvZGVyID0gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2RlcihzdGQ6Om1vdmUoY29uZmln
KSk7CiAgICAgICBFWFBFQ1RfRVEodHJ1ZSwKICAgICAgICAgICAgICAgICBvdGhlcl9hY20tPlJl
Z2lzdGVyUmVjZWl2ZUNvZGVjKAogICAgICAgICAgICAgICAgICAgICBjbl9wYXlsb2FkX3R5cGUs
IHsiQ04iLCBjb2RlY19mb3JtYXQuY2xvY2tyYXRlX2h6LCAxfSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2Rp
bmcvdGVzdC9UZXN0U3RlcmVvLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9UZXN0U3RlcmVvLmNjCmluZGV4IGZk
NjlmZDI2MjYyMmUzMTQzNjUxZGE4N2Y0ZjI1MWJiOGQ4MzM2YTEuLmJmOGUxODk0ZDBlNDFiOTM2
MzIyZGQ1ZjdkYjRmNTFiZDAwNDJlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvVGVzdFN0ZXJl
by5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy90ZXN0L1Rlc3RTdGVyZW8uY2MKQEAgLTEyLDkgKzEyLDkgQEAKIAog
I2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LmgiCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvYXVkaW9fZm9ybWF0X2NvbnZl
cnNpb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9pbmNsdWRlL2F1ZGlvX2Nv
ZGluZ19tb2R1bGVfdHlwZWRlZnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy90
ZXN0L3V0aWxpdHkuaCIKQEAgLTYyNiwxNCArNjI2LDE0IEBAIHZvaWQgVGVzdFN0ZXJlbzo6UmVn
aXN0ZXJTZW5kQ29kZWMoY2hhciBzaWRlLAogICBBU1NFUlRfVFJVRShteV9hY20gIT0gTlVMTCk7
CiAKICAgYXV0byBlbmNvZGVyX2ZhY3RvcnkgPSBDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFj
dG9yeSgpOwotICBjb25zdCBpbnQgY2xvY2tyYXRlX2h6ID0gU1RSX0NBU0VfQ01QKGNvZGVjX25h
bWUsICJnNzIyIikgPT0gMAorICBjb25zdCBpbnQgY2xvY2tyYXRlX2h6ID0gYWJzbDo6RXF1YWxz
SWdub3JlQ2FzZShjb2RlY19uYW1lLCAiZzcyMiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPyBzYW1wbGluZ19mcmVxX2h6IC8gMgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogc2FtcGxpbmdfZnJlcV9oejsKICAgY29uc3Qgc3RkOjpzdHJpbmcgcHRpbWUgPSBydGM6
OlRvU3RyaW5nKHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KAogICAgICAgcGFja19zaXplLCBydGM6OkNo
ZWNrZWREaXZFeGFjdChzYW1wbGluZ19mcmVxX2h6LCAxMDAwKSkpOwogICBTZHBBdWRpb0Zvcm1h
dDo6UGFyYW1ldGVycyBwYXJhbXMgPSB7eyJwdGltZSIsIHB0aW1lfX07CiAgIFJUQ19DSEVDSyhj
aGFubmVscyA9PSAxIHx8IGNoYW5uZWxzID09IDIpOwotICBpZiAoU1RSX0NBU0VfQ01QKGNvZGVj
X25hbWUsICJvcHVzIikgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShjb2Rl
Y19uYW1lLCAib3B1cyIpKSB7CiAgICAgaWYgKGNoYW5uZWxzID09IDIpIHsKICAgICAgIHBhcmFt
c1sic3RlcmVvIl0gPSAiMSI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvdGVzdC9UZXN0VkFE
RFRYLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvdGVzdC9UZXN0VkFERFRYLmNjCmluZGV4IDRmMDJlZGFhODM3NDRjMTkz
YjBlNzQyZWMyMmY3ODczOGUzZThlYmEuLjA5YzY5ZjljNmJiZTU2NjA5NmZhN2JmMmNhYTQxZmVk
NWY3MWFlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvVGVzdFZBRERUWC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy90ZXN0L1Rlc3RWQUREVFguY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgPHN0cmlu
Zz4KIAorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS9hdWRp
b19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5X3RlbXBsYXRlLmgiCiAjaW5jbHVkZSAiYXBp
L2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnlfdGVtcGxhdGUuaCIKICNpbmNsdWRl
ICJhcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZGVjb2Rlcl9pbGJjLmgiCkBAIC04MSwxMyAr
ODIsMTMgQEAgYm9vbCBUZXN0VmFkRHR4OjpSZWdpc3RlckNvZGVjKGNvbnN0IFNkcEF1ZGlvRm9y
bWF0JiBjb2RlY19mb3JtYXQsCiAgIGF1dG8gZW5jb2RlciA9IGVuY29kZXJfZmFjdG9yeV8tPk1h
a2VBdWRpb0VuY29kZXIocGF5bG9hZF90eXBlLCBjb2RlY19mb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6bnVsbG9wdCk7CiAg
IGlmICh2YWRfbW9kZS5oYXNfdmFsdWUoKSAmJgotICAgICAgU1RSX0NBU0VfQ01QKGNvZGVjX2Zv
cm1hdC5uYW1lLmNfc3RyKCksICJvcHVzIikgIT0gMCkgewotICAgIEF1ZGlvRW5jb2RlckNuZzo6
Q29uZmlnIGNvbmZpZzsKKyAgICAgICFhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjX2Zvcm1h
dC5uYW1lLCAib3B1cyIpKSB7CisgICAgQXVkaW9FbmNvZGVyQ25nQ29uZmlnIGNvbmZpZzsKICAg
ICBjb25maWcuc3BlZWNoX2VuY29kZXIgPSBzdGQ6Om1vdmUoZW5jb2Rlcik7CiAgICAgY29uZmln
Lm51bV9jaGFubmVscyA9IDE7CiAgICAgY29uZmlnLnBheWxvYWRfdHlwZSA9IGNuX3BheWxvYWRf
dHlwZTsKICAgICBjb25maWcudmFkX21vZGUgPSB2YWRfbW9kZS52YWx1ZSgpOwotICAgIGVuY29k
ZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxBdWRpb0VuY29kZXJDbmc+KHN0ZDo6bW92ZShjb25maWcp
KTsKKyAgICBlbmNvZGVyID0gQ3JlYXRlQ29tZm9ydE5vaXNlRW5jb2RlcihzdGQ6Om1vdmUoY29u
ZmlnKSk7CiAgICAgYWRkZWRfY29tZm9ydF9ub2lzZSA9IHRydWU7CiAgIH0KICAgY2hhbm5lbF8t
PlNldElzU3RlcmVvKGVuY29kZXItPk51bUNoYW5uZWxzKCkgPiAxKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL3Rlc3QvaVNBQ1Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L2lTQUNUZXN0LmNjCmluZGV4IGExMzBh
ZTNlNjZmZGFjOGIwMzEwMTY5MGEwZjA5NGRmZjFmNmI2YmIuLmMzMzJmZTA4ZjExMTgzNjk0YjFh
ODllYjg5ZDFiNGEzMWMyOGI2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvaVNBQ1Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19jb2RpbmcvdGVzdC9pU0FDVGVzdC5jYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUg
PHRpbWUuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgog
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19lbmNvZGVyX2lzYWNfZmxvYXQu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvYXVkaW9fZm9ybWF0X2Nv
bnZlcnNpb24uaCIKQEAgLTkyLDEyICs5MywxMiBAQCB2b2lkIElTQUNUZXN0OjpTZXR1cCgpIHsK
ICAgZm9yIChjb2RlY0NudHIgPSAwOyBjb2RlY0NudHIgPCBBdWRpb0NvZGluZ01vZHVsZTo6TnVt
YmVyT2ZDb2RlY3MoKTsKICAgICAgICBjb2RlY0NudHIrKykgewogICAgIEVYUEVDVF9FUSgwLCBB
dWRpb0NvZGluZ01vZHVsZTo6Q29kZWMoY29kZWNDbnRyLCAmY29kZWNQYXJhbSkpOwotICAgIGlm
ICghU1RSX0NBU0VfQ01QKGNvZGVjUGFyYW0ucGxuYW1lLCAiSVNBQyIpICYmCisgICAgaWYgKGFi
c2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWNQYXJhbS5wbG5hbWUsICJJU0FDIikgJiYKICAgICAg
ICAgY29kZWNQYXJhbS5wbGZyZXEgPT0gMTYwMDApIHsKICAgICAgIG1lbWNweSgmX3BhcmFtSVNB
QzE2a0h6LCAmY29kZWNQYXJhbSwgc2l6ZW9mKENvZGVjSW5zdCkpOwogICAgICAgX2lkSVNBQzE2
a0h6ID0gY29kZWNDbnRyOwogICAgIH0KLSAgICBpZiAoIVNUUl9DQVNFX0NNUChjb2RlY1BhcmFt
LnBsbmFtZSwgIklTQUMiKSAmJgorICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVj
UGFyYW0ucGxuYW1lLCAiSVNBQyIpICYmCiAgICAgICAgIGNvZGVjUGFyYW0ucGxmcmVxID09IDMy
MDAwKSB7CiAgICAgICBtZW1jcHkoJl9wYXJhbUlTQUMzMmtIeiwgJmNvZGVjUGFyYW0sIHNpemVv
ZihDb2RlY0luc3QpKTsKICAgICAgIF9pZElTQUMzMmtIeiA9IGNvZGVjQ250cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fY29kaW5nL3Rlc3QvdXRpbGl0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL3Rlc3QvdXRpbGl0eS5jYwppbmRleCA4
M2MyNWI1MzdlNDVjMTgyNzBjZmMzM2U4Njk0NzU2NDI1N2YzZjVkLi41M2Y4MDc3OTBlZjMzNzdh
YjIwZWY0NzAwYTkxM2Q5MGFjYjI0ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy90ZXN0L3V0aWxpdHku
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19jb2RpbmcvdGVzdC91dGlsaXR5LmNjCkBAIC0xNSw3ICsxNSw3IEBACiAjaW5jbHVk
ZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNsdWRlICJjb21tb25fdHlw
ZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9t
YXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2luY2x1ZGUvYXVkaW9fY29k
aW5nX21vZHVsZS5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIApAQCAtMjY4LDcgKzI2OCw3
IEBAIGJvb2wgRml4ZWRQYXlsb2FkVHlwZUNvZGVjKGNvbnN0IGNoYXIqIHBheWxvYWROYW1lKSB7
CiAgICAgICAiRzcyMiIsICJRQ0VMUCIsICJDTiIsICAiTVBBIiwgICJHNzI4IiwgIkc3MjkifTsK
IAogICBmb3IgKGludCBuID0gMDsgbiA8IE5VTV9DT0RFQ1NfV0lUSF9GSVhFRF9QQVlMT0FEX1RZ
UEU7IG4rKykgewotICAgIGlmICghU1RSX0NBU0VfQ01QKHBheWxvYWROYW1lLCBmaXhQYXlsb2Fk
VHlwZUNvZGVjc1tuXSkpIHsKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2Fk
TmFtZSwgZml4UGF5bG9hZFR5cGVDb2RlY3Nbbl0pKSB7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvQlVJTEQuZ24KaW5k
ZXggYjY5MDA1MDk4MTE5NDM5NWQ3YTA3NTg5NTE5N2I3MWJkNzg1ZmE2Ny4uNjc0OTVhY2E3NzU1
NmU3NTU5M2ExMzMxZDJlNWY1ODM4ZDQ0NGY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvQlVJTEQuZ24K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19kZXZpY2UvQlVJTEQuZ24KQEAgLTI0LDYgKzI0LDE2IEBAIGNvbmZpZygiYXVkaW9fZGV2
aWNlX3dhcm5pbmdzX2NvbmZpZyIpIHsKICAgfQogfQogCitydGNfc291cmNlX3NldCgiYXVkaW9f
ZGV2aWNlX2RlZmF1bHQiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHNvdXJjZXMgPSBb
CisgICAgImluY2x1ZGUvYXVkaW9fZGV2aWNlX2RlZmF1bHQuaCIsCisgIF0KKyAgZGVwcyA9IFsK
KyAgICAiOmF1ZGlvX2RldmljZV9hcGkiLAorICBdCit9CisKIHJ0Y19zb3VyY2Vfc2V0KCJhdWRp
b19kZXZpY2UiKSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIHB1YmxpY19kZXBzID0gWwpA
QCAtMjAzLDggKzIxMyw4IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhdWRpb19kZXZpY2VfaW1wbCIpIHsK
ICAgZGVwcyA9IFsKICAgICAiOmF1ZGlvX2RldmljZV9hcGkiLAogICAgICI6YXVkaW9fZGV2aWNl
X2J1ZmZlciIsCisgICAgIjphdWRpb19kZXZpY2VfZGVmYXVsdCIsCiAgICAgIjphdWRpb19kZXZp
Y2VfZ2VuZXJpYyIsCi0gICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9hcGk6
YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uL2NvbW1vbl9hdWRpbyIsCiAgICAgIi4uLy4uL2NvbW1v
bl9hdWRpbzpjb21tb25fYXVkaW9fYyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hbmRyb2lkL2F1ZGlv
X2RldmljZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2FuZHJvaWQvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0
LmNjCmluZGV4IGIwY2Y0MmVkZWM1M2EzMTU5NWY5ZGI0Nzk1MmU0MDRmMGRiMGE2ODAuLjZlMDkx
MzljNzliNjg4NTBmOGQ5MjJiYTk0NWM2ODc4NTI0NzhkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2Fu
ZHJvaWQvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2FuZHJvaWQvYXVkaW9f
ZGV2aWNlX3VuaXR0ZXN0LmNjCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2RldmljZS9pbmNsdWRlL21vY2tfYXVkaW9fdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9u
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9mb3Jt
YXRfbWFjcm9zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKICNpbmNs
dWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5j
bHVkZS9ldmVudF93cmFwcGVyLmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgogI2luY2x1ZGUg
InRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgpA
QCAtMzY1LDcgKzM2NSw3IEBAIGNsYXNzIE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQgOiBwdWJs
aWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0IHsKIAogICAvLyBTZXQgZGVmYXVsdCBhY3Rpb25z
IG9mIHRoZSBtb2NrIG9iamVjdC4gV2UgYXJlIGRlbGVnYXRpbmcgdG8gZmFrZQogICAvLyBpbXBs
ZW1lbnRhdGlvbnMgKG9mIEF1ZGlvU3RyZWFtSW50ZXJmYWNlKSBoZXJlLgotICB2b2lkIEhhbmRs
ZUNhbGxiYWNrcyhFdmVudFdyYXBwZXIqIHRlc3RfaXNfZG9uZSwKKyAgdm9pZCBIYW5kbGVDYWxs
YmFja3MocnRjOjpFdmVudCogdGVzdF9pc19kb25lLAogICAgICAgICAgICAgICAgICAgICAgICBB
dWRpb1N0cmVhbUludGVyZmFjZSogYXVkaW9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbnVtX2NhbGxiYWNrcykgewogICAgIHRlc3RfaXNfZG9uZV8gPSB0ZXN0X2lzX2RvbmU7
CkBAIC00NDgsNyArNDQ4LDcgQEAgY2xhc3MgTW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCA6IHB1
YmxpYyB0ZXN0OjpNb2NrQXVkaW9UcmFuc3BvcnQgewogICBib29sIHJlY19tb2RlKCkgY29uc3Qg
eyByZXR1cm4gdHlwZV8gJiBrUmVjb3JkaW5nOyB9CiAKICBwcml2YXRlOgotICBFdmVudFdyYXBw
ZXIqIHRlc3RfaXNfZG9uZV87CisgIHJ0Yzo6RXZlbnQqIHRlc3RfaXNfZG9uZV87CiAgIHNpemVf
dCBudW1fY2FsbGJhY2tzXzsKICAgaW50IHR5cGVfOwogICBzaXplX3QgcGxheV9jb3VudF87CkBA
IC00NjAsNyArNDYwLDcgQEAgY2xhc3MgTW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCA6IHB1Ymxp
YyB0ZXN0OjpNb2NrQXVkaW9UcmFuc3BvcnQgewogLy8gQXVkaW9EZXZpY2VUZXN0IHRlc3QgZml4
dHVyZS4KIGNsYXNzIEF1ZGlvRGV2aWNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qgewog
IHByb3RlY3RlZDoKLSAgQXVkaW9EZXZpY2VUZXN0KCkgOiB0ZXN0X2lzX2RvbmVfKEV2ZW50V3Jh
cHBlcjo6Q3JlYXRlKCkpIHsKKyAgQXVkaW9EZXZpY2VUZXN0KCkgewogICAgIC8vIE9uZS10aW1l
IGluaXRpYWxpemF0aW9uIG9mIEpWTSBhbmQgYXBwbGljYXRpb24gY29udGV4dC4gRW5zdXJlcyB0
aGF0IHdlCiAgICAgLy8gY2FuIGRvIGNhbGxzIGJldHdlZW4gQysrIGFuZCBKYXZhLiBJbml0aWFs
aXplcyBib3RoIEphdmEgYW5kIE9wZW5TTCBFUwogICAgIC8vIGltcGxlbWVudGF0aW9ucy4KQEAg
LTYzOCw3ICs2MzgsNyBAQCBjbGFzcyBBdWRpb0RldmljZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKICAgICByZXR1cm4gdm9sdW1lOwogICB9CiAKLSAgc3RkOjp1bmlxdWVfcHRyPEV2
ZW50V3JhcHBlcj4gdGVzdF9pc19kb25lXzsKKyAgcnRjOjpFdmVudCB0ZXN0X2lzX2RvbmVfOwog
ICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZXZpY2VNb2R1bGU+IGF1ZGlvX2RldmljZV87CiAg
IEF1ZGlvUGFyYW1ldGVycyBwbGF5b3V0X3BhcmFtZXRlcnNfOwogICBBdWRpb1BhcmFtZXRlcnMg
cmVjb3JkX3BhcmFtZXRlcnNfOwpAQCAtODY3LDE0ICs4NjcsMTQgQEAgVEVTVF9GKEF1ZGlvRGV2
aWNlVGVzdCwgU3RvcFJlY29yZGluZ1JlcXVpcmVzSW5pdFRvUmVzdGFydCkgewogLy8gYXVkaW8g
c2FtcGxlcyB0byBwbGF5IG91dCB1c2luZyB0aGUgTmVlZE1vcmVQbGF5RGF0YSBjYWxsYmFjay4K
IFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UGxheW91dFZlcmlmeUNhbGxiYWNrcykgewog
ICBNb2NrQXVkaW9UcmFuc3BvcnRBbmRyb2lkIG1vY2soa1BsYXlvdXQpOwotICBtb2NrLkhhbmRs
ZUNhbGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsK
KyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRlc3RfaXNfZG9uZV8sIG51bGxwdHIsIGtOdW1DYWxs
YmFja3MpOwogICBFWFBFQ1RfQ0FMTChtb2NrLCBOZWVkTW9yZVBsYXlEYXRhKHBsYXlvdXRfZnJh
bWVzX3Blcl8xMG1zX2J1ZmZlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtCeXRlc1BlclNhbXBsZSwgcGxheW91dF9jaGFubmVscygpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBsYXlvdXRfc2FtcGxlX3JhdGUoKSwgTm90TnVsbCgpLCBf
LCBfLCBfKSkKICAgICAgIC5UaW1lcyhBdExlYXN0KGtOdW1DYWxsYmFja3MpKTsKICAgRVhQRUNU
X0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAg
U3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxs
aXNlY29uZHMpOworICB0ZXN0X2lzX2RvbmVfLldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29u
ZHMpOwogICBTdG9wUGxheW91dCgpOwogfQogCkBAIC04ODQsNyArODg0LDcgQEAgVEVTVF9GKEF1
ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0VmVyaWZ5Q2FsbGJhY2tzKSB7CiAvLyBkZWxheSBl
c3RpbWF0ZXMgYXMgd2VsbCAoYXJndW1lbnQgIzYpLgogVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwg
U3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0QW5k
cm9pZCBtb2NrKGtSZWNvcmRpbmcpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lzX2Rv
bmVfLmdldCgpLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFj
a3MoJnRlc3RfaXNfZG9uZV8sIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOwogICBFWFBFQ1RfQ0FM
TCgKICAgICAgIG1vY2ssIFJlY29yZGVkRGF0YUlzQXZhaWxhYmxlKE5vdE51bGwoKSwgcmVjb3Jk
X2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtCeXRlc1BlclNhbXBsZSwgcmVjb3JkX2NoYW5uZWxzKCksCkBAIC04OTMsNyArODkz
LDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFj
a3MpIHsKIAogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxs
YmFjaygmbW9jaykpOwogICBTdGFydFJlY29yZGluZygpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0
KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKKyAgdGVzdF9pc19kb25lXy5XYWl0KGtUZXN0
VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAgU3RvcFJlY29yZGluZygpOwogfQogCkBAIC05MDEs
NyArOTAxLDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlD
YWxsYmFja3MpIHsKIC8vIGFjdGl2ZSBpbiBib3RoIGRpcmVjdGlvbnMuCiBURVNUX0YoQXVkaW9E
ZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRBbmRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKICAg
TW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCBtb2NrKGtQbGF5b3V0IHwga1JlY29yZGluZyk7Ci0g
IG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtOdW1D
YWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVsbHB0
ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIE5lZWRNb3JlUGxheURhdGEo
cGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga0J5dGVzUGVyU2FtcGxlLCBwbGF5b3V0X2NoYW5uZWxzKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheW91dF9zYW1wbGVfcmF0ZSgpLCBO
b3ROdWxsKCksIF8sIF8sIF8pKQpAQCAtOTE0LDcgKzkxNCw3IEBAIFRFU1RfRihBdWRpb0Rldmlj
ZVRlc3QsIFN0YXJ0UGxheW91dEFuZFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogICBFWFBF
Q1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwog
ICBTdGFydFBsYXlvdXQoKTsKICAgU3RhcnRSZWNvcmRpbmcoKTsKLSAgdGVzdF9pc19kb25lXy0+
V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChr
VGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BSZWNvcmRpbmcoKTsKICAgU3RvcFBs
YXlvdXQoKTsKIH0KQEAgLTkzMCwxMiArOTMwLDExIEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3Qs
IFJ1blBsYXlvdXRXaXRoRmlsZUFzU291cmNlKSB7CiAgIHN0ZDo6c3RyaW5nIGZpbGVfbmFtZSA9
IEdldEZpbGVOYW1lKHBsYXlvdXRfc2FtcGxlX3JhdGUoKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxG
aWxlQXVkaW9TdHJlYW0+IGZpbGVfYXVkaW9fc3RyZWFtKAogICAgICAgbmV3IEZpbGVBdWRpb1N0
cmVhbShudW1fY2FsbGJhY2tzLCBmaWxlX25hbWUsIHBsYXlvdXRfc2FtcGxlX3JhdGUoKSkpOwot
ICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBmaWxlX2F1ZGlvX3N0
cmVhbS5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgbnVtX2NhbGxiYWNrcyk7CisgIG1v
Y2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBmaWxlX2F1ZGlvX3N0cmVhbS5nZXQo
KSwgbnVtX2NhbGxiYWNrcyk7CiAgIC8vIFNldE1heFBsYXlvdXRWb2x1bWUoKTsKICAgRVhQRUNU
X0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAg
U3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxs
aXNlY29uZHMpOworICB0ZXN0X2lzX2RvbmVfLldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29u
ZHMpOwogICBTdG9wUGxheW91dCgpOwogfQogCkBAIC05NjQsMTMgKzk2MywxMyBAQCBURVNUX0Yo
QXVkaW9EZXZpY2VUZXN0LCBESVNBQkxFRF9SdW5QbGF5b3V0QW5kUmVjb3JkaW5nSW5GdWxsRHVw
bGV4KSB7CiAgIE5pY2VNb2NrPE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQ+IG1vY2soa1BsYXlv
dXQgfCBrUmVjb3JkaW5nKTsKICAgc3RkOjp1bmlxdWVfcHRyPEZpZm9BdWRpb1N0cmVhbT4gZmlm
b19hdWRpb19zdHJlYW0oCiAgICAgICBuZXcgRmlmb0F1ZGlvU3RyZWFtKHBsYXlvdXRfZnJhbWVz
X3Blcl8xMG1zX2J1ZmZlcigpKSk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9u
ZV8uZ2V0KCksIGZpZm9fYXVkaW9fc3RyZWFtLmdldCgpLAorICBtb2NrLkhhbmRsZUNhbGxiYWNr
cygmdGVzdF9pc19kb25lXywgZmlmb19hdWRpb19zdHJlYW0uZ2V0KCksCiAgICAgICAgICAgICAg
ICAgICAgICAgIGtGdWxsRHVwbGV4VGltZUluU2VjICoga051bUNhbGxiYWNrc1BlclNlY29uZCk7
CiAgIFNldE1heFBsYXlvdXRWb2x1bWUoKTsKICAgRVhQRUNUX0VRKDAsIGF1ZGlvX2RldmljZSgp
LT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3RhcnRSZWNvcmRpbmcoKTsKICAg
U3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoCisgIHRlc3RfaXNfZG9uZV8u
V2FpdCgKICAgICAgIHN0ZDo6bWF4KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzLCAxMDAwICog
a0Z1bGxEdXBsZXhUaW1lSW5TZWMpKTsKICAgU3RvcFBsYXlvdXQoKTsKICAgU3RvcFJlY29yZGlu
ZygpOwpAQCAtOTk3LDE0ICs5OTYsMTQgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgRElTQUJM
RURfTWVhc3VyZUxvb3BiYWNrTGF0ZW5jeSkgewogICBOaWNlTW9jazxNb2NrQXVkaW9UcmFuc3Bv
cnRBbmRyb2lkPiBtb2NrKGtQbGF5b3V0IHwga1JlY29yZGluZyk7CiAgIHN0ZDo6dW5pcXVlX3B0
cjxMYXRlbmN5TWVhc3VyaW5nQXVkaW9TdHJlYW0+IGxhdGVuY3lfYXVkaW9fc3RyZWFtKAogICAg
ICAgbmV3IExhdGVuY3lNZWFzdXJpbmdBdWRpb1N0cmVhbShwbGF5b3V0X2ZyYW1lc19wZXJfMTBt
c19idWZmZXIoKSkpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgp
LCBsYXRlbmN5X2F1ZGlvX3N0cmVhbS5nZXQoKSwKKyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRl
c3RfaXNfZG9uZV8sIGxhdGVuY3lfYXVkaW9fc3RyZWFtLmdldCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICBrTWVhc3VyZUxhdGVuY3lUaW1lSW5TZWMgKiBrTnVtQ2FsbGJhY2tzUGVyU2Vjb25k
KTsKICAgRVhQRUNUX0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2so
Jm1vY2spKTsKICAgU2V0TWF4UGxheW91dFZvbHVtZSgpOwogICBEaXNhYmxlQnVpbHRJbkFFQ0lm
QXZhaWxhYmxlKCk7CiAgIFN0YXJ0UmVjb3JkaW5nKCk7CiAgIFN0YXJ0UGxheW91dCgpOwotICB0
ZXN0X2lzX2RvbmVfLT5XYWl0KAorICB0ZXN0X2lzX2RvbmVfLldhaXQoCiAgICAgICBzdGQ6Om1h
eChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcywgMTAwMCAqIGtNZWFzdXJlTGF0ZW5jeVRpbWVJ
blNlYykpOwogICBTdG9wUGxheW91dCgpOwogICBTdG9wUmVjb3JkaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZl
ci5jYwppbmRleCA1YzQ1NzgwNDI2Yjc4ZjkxNGE5YjE5NTE2MTU2OGM0N2Q4MWQ4N2E1Li44Zjky
MGNmZmY4ZWE5YzM0YTM2NTU2MmI5NjhhYTBlN2I3Yzc0ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9h
dWRpb19kZXZpY2VfYnVmZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuY2MK
QEAgLTgsMTkgKzgsMTYgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGNtYXRoPgotCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5oIgorI2luY2x1ZGUgPGNzdGRkZWY+
CisjaW5jbHVkZSA8Y3N0ZGludD4KIAogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJv
Y2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNzaW5nX2xpYnJhcnkuaCIKLSNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfY29uZmlnLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvYXJyYXlzaXplLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9f
ZGV2aWNlX2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2JpbmQuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNz
L3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNp
bmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
ZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIu
aAppbmRleCA3ZjBjZjgzYmFmN2Q3ZWE3ZDZlN2JjN2RjMDMzMTczNWViYmJlMWUzLi5iYmUyOTY5
ZDQzNjk3NTU4YjY1ODc0ZTM1MDFlN2VkYTYwNzk5MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRp
b19kZXZpY2VfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5oCkBAIC0x
MSw5ICsxMSwxMSBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX0RFVklDRV9BVURJT19ERVZJQ0Vf
QlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fREVWSUNFX0FVRElPX0RFVklDRV9CVUZG
RVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPGF0b21pYz4KIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVk
aW9fZGV2aWNlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRp
b19kZXZpY2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tf
cXVldWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9kYXRhX29ic2VydmVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19kZXZpY2UvYXVkaW9fZGV2aWNlX2RhdGFfb2JzZXJ2ZXIuY2MKaW5kZXggNzIzZDFjOGJiZGM3
NGM5YTljNmJkMjg1NmE0MTJhOTk4MDgxOGI4Yi4uOTk0YzJlZmRmMzMyMTBhMWJmNDZmZjcyZWQz
NzU5NjQ4NGI1ZTJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2RhdGFfb2JzZXJ2
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2RhdGFfb2JzZXJ2ZXIuY2MKQEAgLTksNiAr
OSw4IEBACiAgKi8KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVk
aW9fZGV2aWNlX2RhdGFfb2JzZXJ2ZXIuaCIKKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2
aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9nZW5lcmljLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2Vf
Z2VuZXJpYy5oCmluZGV4IGJlOWMwNzJjNDEyY2U4NGIxYmM3NGE0OTMzMDVkMWIzOTg5YWZiMzAu
LjdkM2M4M2UxMTk2MDNiYjZlYmRlOTIyNWE5ODU3MjQzNTg3YmRmNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2
aWNlL2F1ZGlvX2RldmljZV9nZW5lcmljLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2dlbmVy
aWMuaApAQCAtMTEsOCArMTEsMTEgQEAKICNpZm5kZWYgQVVESU9fREVWSUNFX0FVRElPX0RFVklD
RV9HRU5FUklDX0hfCiAjZGVmaW5lIEFVRElPX0RFVklDRV9BVURJT19ERVZJQ0VfR0VORVJJQ19I
XwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Rldmlj
ZS9hdWRpb19kZXZpY2VfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2Uv
aW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9p
bmNsdWRlL2F1ZGlvX2RldmljZV9kZWZpbmVzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2Rldmlj
ZV9pbXBsLmNjCmluZGV4IDkxZDYyMDhmZTFmZDFlOGU4NTQ3MGE2OGVmNTJlOTU5MGE2NDIxOTgu
LjMxZDViNWVjZmM1MWU5YThjYTUzYjJjM2FlZTg5ODY1OTgzZTA2ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2
aWNlL2F1ZGlvX2RldmljZV9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9pbXBsLmNj
CkBAIC0xMCwxMiArMTAsMTQgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1
ZGlvX2RldmljZV9pbXBsLmgiCiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRp
b19kZXZpY2VfY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfY29uZmlnLmgiICAvLyBJV1lVIHByYWdtYTog
a2VlcAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9nZW5lcmlj
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvcmVmY291bnRlZG9iamVjdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRy
LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogCiAjaWYg
ZGVmaW5lZChfV0lOMzIpCkBAIC00NywxMCArNDksMTAgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX2RldmljZS9tYWMvYXVkaW9fZGV2aWNlX21hYy5oIgogI2VuZGlmCiAjaWYgZGVmaW5lZChX
RUJSVENfRFVNTVlfRklMRV9ERVZJQ0VTKQorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNl
L2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZp
Y2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2VfZmFjdG9yeS5oIgogI2VuZGlmCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvYXVkaW9fZGV2aWNlX2R1bW15LmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuaCIKIAogI2Rl
ZmluZSBDSEVDS2luaXRpYWxpemVkXygpIFwKICAgeyAgICAgICAgICAgICAgICAgICAgICAgICBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2
aWNlX2ltcGwuaAppbmRleCA0ODFjZGYzMmUwMGRjYTRhYzlmNzY2ZGYyNWIwZWRmYTFmMTE4N2Q2
Li5hZmU1M2IzMjQwMzI4ZDk0MTc2OTg1OGUzNDU4OThjZDdjMTIzODE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Rl
dmljZS9hdWRpb19kZXZpY2VfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9pbXBsLmgK
QEAgLTEzLDEyICsxMywxMSBAQAogCiAjaWYgZGVmaW5lZChXRUJSVENfSU5DTFVERV9JTlRFUk5B
TF9BVURJT19ERVZJQ0UpCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1vcnk+
CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNh
bHNlY3Rpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1
ZGlvX2RldmljZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV91bml0dGVzdC5jYwpp
bmRleCBhODJiYzRhMzNiYTNhN2RiYjQ2ZmM5MWIzM2JmZWU3Yjk1NjU3MTlkLi4xYWEyOGU1ZDdj
MTIzMGEzNzA2YTc5NzZmMGM2ODE5MTE3YTk5ZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19k
ZXZpY2VfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjCkBA
IC01MDksNyArNTA5LDcgQEAgY2xhc3MgTW9ja0F1ZGlvVHJhbnNwb3J0IDogcHVibGljIHRlc3Q6
Ok1vY2tBdWRpb1RyYW5zcG9ydCB7CiBjbGFzcyBBdWRpb0RldmljZVRlc3QKICAgICA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08d2VicnRjOjpBdWRpb0RldmljZU1vZHVsZTo6QXVk
aW9MYXllcj4gewogIHByb3RlY3RlZDoKLSAgQXVkaW9EZXZpY2VUZXN0KCkgOiBhdWRpb19sYXll
cl8oR2V0UGFyYW0oKSksIGV2ZW50XyhmYWxzZSwgZmFsc2UpIHsKKyAgQXVkaW9EZXZpY2VUZXN0
KCkgOiBhdWRpb19sYXllcl8oR2V0UGFyYW0oKSkgewogLy8gVE9ETyh3ZWJydGM6OTc3OCk6IFJl
LWVuYWJsZSBvbiBUSFJFQURfU0FOSVRJWkVSPwogI2lmICFkZWZpbmVkKEFERFJFU1NfU0FOSVRJ
WkVSKSAmJiAhZGVmaW5lZChNRU1PUllfU0FOSVRJWkVSKSAmJiBcCiAgICAgIWRlZmluZWQoV0VC
UlRDX0RVTU1ZX0FVRElPX0JVSUxEKSAmJiAhZGVmaW5lZChUSFJFQURfU0FOSVRJWkVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19kZXZpY2UvZHVtbXkvYXVkaW9fZGV2aWNlX2R1bW15LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9h
dWRpb19kZXZpY2VfZHVtbXkuaAppbmRleCBkNzA5Zjc3NjkxOWZjN2RjM2E0ZWQ4OTNjOWNlNWI2
ZmRkN2M3NDU4Li4yYTI1NDEwOThlYTg2ODY5YWVlMmRjMzFkOWQyOTIxZDFmMmZjODFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2RldmljZS9kdW1teS9hdWRpb19kZXZpY2VfZHVtbXkuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1t
eS9hdWRpb19kZXZpY2VfZHVtbXkuaApAQCAtMTEsOSArMTEsMTIgQEAKICNpZm5kZWYgQVVESU9f
REVWSUNFX0FVRElPX0RFVklDRV9EVU1NWV9IXwogI2RlZmluZSBBVURJT19ERVZJQ0VfQVVESU9f
REVWSUNFX0RVTU1ZX0hfCiAKLSNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGludC5o
PgogCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9nZW5lcmljLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZV9kZWZp
bmVzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9m
aWxlX2F1ZGlvX2RldmljZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlLmNjCmlu
ZGV4IGI5YWVhYTE1MDY1YTk4ODcwMDdjZTVlMjIyZmQ3MTEyOTIwMWZhZjQuLjI4NDhlZWFlMzUw
ODk1Nzg5YjAxYzYxNTMyMzZkZDYyMTNkNjJhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2Zp
bGVfYXVkaW9fZGV2aWNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlLmNj
CkBAIC05LDkgKzksMTMgQEAKICAqLwogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2Uv
ZHVtbXkvZmlsZV9hdWRpb19kZXZpY2UuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL3NsZWVwLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRp
b19kZXZpY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlLmgKaW5kZXggZjA3Njkw
ZTdlMDMzNzkwMjAyYmQ5MDRkZGE2ZDg2Zjk3MmJjMjkyYi4uMjEwYzhmN2I4YmU2MDI2ZmIwMjBh
MzMyZjlmYjZiMWIwNjM2NjI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19k
ZXZpY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZS5oCkBAIC0yNiw3ICsy
Niw2IEBAIGNsYXNzIFBsYXRmb3JtVGhyZWFkOwogfSAgLy8gbmFtZXNwYWNlIHJ0YwogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKLWNsYXNzIEV2ZW50V3JhcHBlcjsKIAogLy8gVGhpcyBpcyBhIGZha2Ug
YXVkaW8gZGV2aWNlIHdoaWNoIHBsYXlzIGF1ZGlvIGZyb20gYSBmaWxlIGFzIGl0cyBtaWNyb3Bo
b25lCiAvLyBhbmQgcGxheXMgb3V0IGludG8gYSBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVt
bXkvZmlsZV9hdWRpb19kZXZpY2VfZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9f
ZGV2aWNlX2ZhY3RvcnkuY2MKaW5kZXggNmIzOGQ4YmMwNTVhZTg1MzBkMWU1Mjg1YmFmNzA1ZDIy
YWEwYjhmYi4uMDI3YjEzYmY1YzVjZTFiYmI3ZWU3NmJmYzFmYTAxNGU3ZmZhZjU0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2VfZmFjdG9yeS5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Rldmlj
ZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0b3J5LmNjCkBAIC0xMCw4ICsxMCw4IEBACiAK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9m
YWN0b3J5LmgiCiAKKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5j
bHVkZSA8Y3N0cmluZz4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2Zp
bGVfYXVkaW9fZGV2aWNlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19kZXZpY2UvZHVtbXkvZmlsZV9hdWRpb19kZXZpY2VfZmFjdG9yeS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvZHVt
bXkvZmlsZV9hdWRpb19kZXZpY2VfZmFjdG9yeS5oCmluZGV4IDljZDViM2Q2MjU2NmY2YjJkYjI4
NzBhYjM5YTE1ZjVjNzhmODE2ZjEuLjcyZjRhYjJiMzg0ZWQ5NDA3ZTE2NzY4OGM0NDBmNmRmOGEx
ODlmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2R1bW15L2ZpbGVfYXVkaW9fZGV2aWNlX2ZhY3Rvcnku
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX2RldmljZS9kdW1teS9maWxlX2F1ZGlvX2RldmljZV9mYWN0b3J5LmgKQEAgLTExLDcg
KzExLDcgQEAKICNpZm5kZWYgQVVESU9fREVWSUNFX0ZJTEVfQVVESU9fREVWSUNFX0ZBQ1RPUllf
SF8KICNkZWZpbmUgQVVESU9fREVWSUNFX0ZJTEVfQVVESU9fREVWSUNFX0ZBQ1RPUllfSF8KIAot
I2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5j
bHVkZSA8c3RkaW50Lmg+CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Rldmlj
ZS9maW5lX2F1ZGlvX2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2ZpbmVfYXVkaW9fYnVmZmVyLmNjCmluZGV4
IDRhZjM0NGFlZjM3ODZhMzAwMjczMDc1ODViNjE3MWU5MTQ1ZDIzNGUuLmI0ZjNjMzcxYWNlMzY5
Y2RjZmQ0NWJiOTMyNjE2NDgwODMwYmQ0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2ZpbmVfYXVkaW9f
YnVmZmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fZGV2aWNlL2ZpbmVfYXVkaW9fYnVmZmVyLmNjCkBAIC0xMCw2ICsxMCw5
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9maW5lX2F1ZGlvX2J1ZmZlci5o
IgogCisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxjc3RyaW5nPgorCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9fZGV2aWNlX2RhdGFfb2JzZXJ2ZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2lu
Y2x1ZGUvYXVkaW9fZGV2aWNlX2RhdGFfb2JzZXJ2ZXIuaAppbmRleCAzYTRlZTk5NTE4YWE5MjZi
MWNjMjE1ZjA2OTNiMzMwZmM5NzYxYmIxLi45NTljZmE0NjYyYzY5NmI5MjZmZmYxN2M2OTQ1YzE1
Mzg3YjFlMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZV9kYXRhX29i
c2VydmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2VfZGF0YV9vYnNlcnZlci5o
CkBAIC0xMSw2ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fREVWSUNFX0lOQ0xVREVf
QVVESU9fREVWSUNFX0RBVEFfT0JTRVJWRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19ERVZJ
Q0VfSU5DTFVERV9BVURJT19ERVZJQ0VfREFUQV9PQlNFUlZFUl9IXwogCisjaW5jbHVkZSA8c3Rk
ZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2Rl
dmljZS9pbmNsdWRlL2F1ZGlvX2RldmljZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9y
ZWZfcHRyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvdGVzdF9hdWRpb19kZXZpY2Uu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2RldmljZS9pbmNsdWRlL3Rlc3RfYXVkaW9fZGV2aWNlLmNjCmluZGV4IDdkNTVjNDc1Mjlh
Mjk2Zjk4ZDM4ZTlmZWU5YWMwODgyYTE5NDNjNmMuLjhhZWExZDI0NWUyMjZiZTFkNzdhMzZkZjNi
ZjM1NTAyZTcxNmMzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvdGVzdF9hdWRpb19kZXZp
Y2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS90ZXN0X2F1ZGlvX2RldmljZS5jYwpAQCAtOCw4ICs4
LDExIEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCiAgKi8KICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0
ZGludD4KKyNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxz
dHJpbmc+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKQEAgLTI4LDYgKzMxLDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9yYW5k
b20uaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvdGhyZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25z
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpAQCAtNTgsOCArNjIsNiBAQCBjbGFzcyBUZXN0QXVkaW9EZXZpY2VNb2R1bGVJbXBsCiAgICAg
ICAgIGF1ZGlvX2NhbGxiYWNrXyhudWxscHRyKSwKICAgICAgICAgcmVuZGVyaW5nXyhmYWxzZSks
CiAgICAgICAgIGNhcHR1cmluZ18oZmFsc2UpLAotICAgICAgICBkb25lX3JlbmRlcmluZ18odHJ1
ZSwgdHJ1ZSksCi0gICAgICAgIGRvbmVfY2FwdHVyaW5nXyh0cnVlLCB0cnVlKSwKICAgICAgICAg
c3RvcF90aHJlYWRfKGZhbHNlKSB7CiAgICAgYXV0byBnb29kX3NhbXBsZV9yYXRlID0gW10oaW50
IHNyKSB7CiAgICAgICByZXR1cm4gc3IgPT0gODAwMCB8fCBzciA9PSAxNjAwMCB8fCBzciA9PSAz
MjAwMCB8fCBzciA9PSA0NDEwMCB8fApAQCAtMTA4LDE0ICsxMTAsMTIgQEAgY2xhc3MgVGVzdEF1
ZGlvRGV2aWNlTW9kdWxlSW1wbAogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7CiAgICAg
UlRDX0NIRUNLKHJlbmRlcmVyXyk7CiAgICAgcmVuZGVyaW5nXyA9IHRydWU7Ci0gICAgZG9uZV9y
ZW5kZXJpbmdfLlJlc2V0KCk7CiAgICAgcmV0dXJuIDA7CiAgIH0KIAogICBpbnQzMl90IFN0b3BQ
bGF5b3V0KCkgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7CiAgICAgcmVuZGVyaW5n
XyA9IGZhbHNlOwotICAgIGRvbmVfcmVuZGVyaW5nXy5TZXQoKTsKICAgICByZXR1cm4gMDsKICAg
fQogCkBAIC0xMjMsMTQgKzEyMywxMiBAQCBjbGFzcyBUZXN0QXVkaW9EZXZpY2VNb2R1bGVJbXBs
CiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJmxvY2tfKTsKICAgICBSVENfQ0hFQ0soY2FwdHVyZXJf
KTsKICAgICBjYXB0dXJpbmdfID0gdHJ1ZTsKLSAgICBkb25lX2NhcHR1cmluZ18uUmVzZXQoKTsK
ICAgICByZXR1cm4gMDsKICAgfQogCiAgIGludDMyX3QgU3RvcFJlY29yZGluZygpIHsKICAgICBy
dGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwogICAgIGNhcHR1cmluZ18gPSBmYWxzZTsKLSAgICBk
b25lX2NhcHR1cmluZ18uU2V0KCk7CiAgICAgcmV0dXJuIDA7CiAgIH0KIApAQCAtMTcyLDkgKzE3
MCwxMCBAQCBjbGFzcyBUZXN0QXVkaW9EZXZpY2VNb2R1bGVJbXBsCiAgICAgICAgICAgdWludDMy
X3QgbmV3X21pY19sZXZlbCA9IDA7CiAgICAgICAgICAgaWYgKHJlY29yZGluZ19idWZmZXJfLnNp
emUoKSA+IDApIHsKICAgICAgICAgICAgIGF1ZGlvX2NhbGxiYWNrXy0+UmVjb3JkZWREYXRhSXNB
dmFpbGFibGUoCi0gICAgICAgICAgICAgICAgcmVjb3JkaW5nX2J1ZmZlcl8uZGF0YSgpLCByZWNv
cmRpbmdfYnVmZmVyXy5zaXplKCksIDIsCi0gICAgICAgICAgICAgICAgY2FwdHVyZXJfLT5OdW1D
aGFubmVscygpLCBjYXB0dXJlcl8tPlNhbXBsaW5nRnJlcXVlbmN5KCksIDAsIDAsCi0gICAgICAg
ICAgICAgICAgMCwgZmFsc2UsIG5ld19taWNfbGV2ZWwpOworICAgICAgICAgICAgICAgIHJlY29y
ZGluZ19idWZmZXJfLmRhdGEoKSwKKyAgICAgICAgICAgICAgICByZWNvcmRpbmdfYnVmZmVyXy5z
aXplKCkgLyBjYXB0dXJlcl8tPk51bUNoYW5uZWxzKCksCisgICAgICAgICAgICAgICAgMiAqIGNh
cHR1cmVyXy0+TnVtQ2hhbm5lbHMoKSwgY2FwdHVyZXJfLT5OdW1DaGFubmVscygpLAorICAgICAg
ICAgICAgICAgIGNhcHR1cmVyXy0+U2FtcGxpbmdGcmVxdWVuY3koKSwgMCwgMCwgMCwgZmFsc2Us
IG5ld19taWNfbGV2ZWwpOwogICAgICAgICAgIH0KICAgICAgICAgICBpZiAoIWtlZXBfY2FwdHVy
aW5nKSB7CiAgICAgICAgICAgICBjYXB0dXJpbmdfID0gZmFsc2U7CkBAIC0xODcsOSArMTg2LDEw
IEBAIGNsYXNzIFRlc3RBdWRpb0RldmljZU1vZHVsZUltcGwKICAgICAgICAgICBpbnQ2NF90IG50
cF90aW1lX21zID0gLTE7CiAgICAgICAgICAgY29uc3QgaW50IHNhbXBsaW5nX2ZyZXF1ZW5jeSA9
IHJlbmRlcmVyXy0+U2FtcGxpbmdGcmVxdWVuY3koKTsKICAgICAgICAgICBhdWRpb19jYWxsYmFj
a18tPk5lZWRNb3JlUGxheURhdGEoCi0gICAgICAgICAgICAgIFNhbXBsZXNQZXJGcmFtZShzYW1w
bGluZ19mcmVxdWVuY3kpLCAyLCByZW5kZXJlcl8tPk51bUNoYW5uZWxzKCksCi0gICAgICAgICAg
ICAgIHNhbXBsaW5nX2ZyZXF1ZW5jeSwgcGxheW91dF9idWZmZXJfLmRhdGEoKSwgc2FtcGxlc19v
dXQsCi0gICAgICAgICAgICAgICZlbGFwc2VkX3RpbWVfbXMsICZudHBfdGltZV9tcyk7CisgICAg
ICAgICAgICAgIFNhbXBsZXNQZXJGcmFtZShzYW1wbGluZ19mcmVxdWVuY3kpLCAyICogcmVuZGVy
ZXJfLT5OdW1DaGFubmVscygpLAorICAgICAgICAgICAgICByZW5kZXJlcl8tPk51bUNoYW5uZWxz
KCksIHNhbXBsaW5nX2ZyZXF1ZW5jeSwKKyAgICAgICAgICAgICAgcGxheW91dF9idWZmZXJfLmRh
dGEoKSwgc2FtcGxlc19vdXQsICZlbGFwc2VkX3RpbWVfbXMsCisgICAgICAgICAgICAgICZudHBf
dGltZV9tcyk7CiAgICAgICAgICAgY29uc3QgYm9vbCBrZWVwX3JlbmRlcmluZyA9CiAgICAgICAg
ICAgICAgIHJlbmRlcmVyXy0+UmVuZGVyKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGludDE2X3Q+KAog
ICAgICAgICAgICAgICAgICAgcGxheW91dF9idWZmZXJfLmRhdGEoKSwgc2FtcGxlc19vdXQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvdGVzdF9hdWRpb19kZXZpY2UuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2lu
Y2x1ZGUvdGVzdF9hdWRpb19kZXZpY2UuaAppbmRleCA3ZDAzNGRjZThjNzBlY2RiNjI5YzJjNjUy
YjhlNmIyMTRiZGE2YTRhLi45M2YwYjEzNjAxZmI3OTBmNDI1NDhiNTQxZjNhZGJkNDAzZWFiYTRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL3Rlc3RfYXVkaW9fZGV2aWNlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZp
Y2UvaW5jbHVkZS90ZXN0X2F1ZGlvX2RldmljZS5oCkBAIC0xMCwxNCArMTAsMTggQEAKICNpZm5k
ZWYgTU9EVUxFU19BVURJT19ERVZJQ0VfSU5DTFVERV9URVNUX0FVRElPX0RFVklDRV9IXwogI2Rl
ZmluZSBNT0RVTEVTX0FVRElPX0RFVklDRV9JTkNMVURFX1RFU1RfQVVESU9fREVWSUNFX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFw
aS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9h
dWRpb19kZXZpY2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL2F1
ZGlvX2RldmljZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxl
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2lvcy9hdWRpb19kZXZpY2VfdW5pdHRlc3RfaW9z
Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19kZXZpY2UvaW9zL2F1ZGlvX2RldmljZV91bml0dGVzdF9pb3MubW0KaW5kZXggNDdiODcz
ZDRhOTliNzFhMGVkNmI2NjExNmU5Y2ViODlkZDQzYTJkMi4uMTlmZjljOTIzMzIzNmE4YWU1MDJh
ZWIwMjQwMTE5MzU4ZDNjMmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW9zL2F1ZGlvX2RldmljZV91
bml0dGVzdF9pb3MubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW9zL2F1ZGlvX2RldmljZV91bml0dGVzdF9pb3Mu
bW0KQEAgLTIyLDExICsyMiwxMSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2lv
cy9hdWRpb19kZXZpY2VfaW9zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
ZXZlbnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oIgogI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKICNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRp
bHMuaCIKQEAgLTM3Miw3ICszNzIsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFuc3BvcnRJT1MgOiBw
dWJsaWMgdGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0IHsKIAogICAvLyBTZXQgZGVmYXVsdCBhY3Rp
b25zIG9mIHRoZSBtb2NrIG9iamVjdC4gV2UgYXJlIGRlbGVnYXRpbmcgdG8gZmFrZQogICAvLyBp
bXBsZW1lbnRhdGlvbnMgKG9mIEF1ZGlvU3RyZWFtSW50ZXJmYWNlKSBoZXJlLgotICB2b2lkIEhh
bmRsZUNhbGxiYWNrcyhFdmVudFdyYXBwZXIqIHRlc3RfaXNfZG9uZSwKKyAgdm9pZCBIYW5kbGVD
YWxsYmFja3MocnRjOjpFdmVudCogdGVzdF9pc19kb25lLAogICAgICAgICAgICAgICAgICAgICAg
ICBBdWRpb1N0cmVhbUludGVyZmFjZSogYXVkaW9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbnVtX2NhbGxiYWNrcykgewogICAgIHRlc3RfaXNfZG9uZV8gPSB0ZXN0X2lz
X2RvbmU7CkBAIC00NjEsNyArNDYxLDcgQEAgY2xhc3MgTW9ja0F1ZGlvVHJhbnNwb3J0SU9TIDog
cHVibGljIHRlc3Q6Ok1vY2tBdWRpb1RyYW5zcG9ydCB7CiAgIGJvb2wgcmVjX21vZGUoKSBjb25z
dCB7IHJldHVybiB0eXBlXyAmIGtSZWNvcmRpbmc7IH0KIAogIHByaXZhdGU6Ci0gIEV2ZW50V3Jh
cHBlciogdGVzdF9pc19kb25lXzsKKyAgcnRjOjpFdmVudCogdGVzdF9pc19kb25lXzsKICAgc2l6
ZV90IG51bV9jYWxsYmFja3NfOwogICBpbnQgdHlwZV87CiAgIHNpemVfdCBwbGF5X2NvdW50XzsK
QEAgLTQ3Miw3ICs0NzIsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFuc3BvcnRJT1MgOiBwdWJsaWMg
dGVzdDo6TW9ja0F1ZGlvVHJhbnNwb3J0IHsKIC8vIEF1ZGlvRGV2aWNlVGVzdCB0ZXN0IGZpeHR1
cmUuCiBjbGFzcyBBdWRpb0RldmljZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICBw
cm90ZWN0ZWQ6Ci0gIEF1ZGlvRGV2aWNlVGVzdCgpIDogdGVzdF9pc19kb25lXyhFdmVudFdyYXBw
ZXI6OkNyZWF0ZSgpKSB7CisgIEF1ZGlvRGV2aWNlVGVzdCgpIHsKICAgICBvbGRfc2V2XyA9IHJ0
Yzo6TG9nTWVzc2FnZTo6R2V0TG9nVG9EZWJ1ZygpOwogICAgIC8vIFNldCBzdWl0YWJsZSBsb2dn
aW5nIGxldmVsIGhlcmUuIENoYW5nZSB0byBydGM6OkxTX0lORk8gZm9yIG1vcmUgdmVyYm9zZQog
ICAgIC8vIG91dHB1dC4gU2VlIHdlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmggZm9yIGNvbXBsZXRl
IGxpc3Qgb2Ygb3B0aW9ucy4KQEAgLTU3Miw3ICs1NzIsNyBAQCBjbGFzcyBBdWRpb0RldmljZVRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICBFWFBFQ1RfRkFMU0UoYXVkaW9fZGV2
aWNlKCktPlJlY29yZGluZygpKTsKICAgfQogCi0gIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBw
ZXI+IHRlc3RfaXNfZG9uZV87CisgIHJ0Yzo6RXZlbnQgdGVzdF9pc19kb25lXzsKICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBhdWRpb19kZXZpY2VfOwogICBBdWRpb1Bh
cmFtZXRlcnMgcGxheW91dF9wYXJhbWV0ZXJzXzsKICAgQXVkaW9QYXJhbWV0ZXJzIHJlY29yZF9w
YXJhbWV0ZXJzXzsKQEAgLTY2Miw3ICs2NjIsNyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBE
SVNBQkxFRF9TdGFydFBsYXlvdXRPblR3b0luc3RhbmNlcykgewogICAvLyBoYXMgYmVlbiBkb25l
IHN1Y2Nlc3NmdWxseSBhbmQgdGhhdCB0aGVyZSBpcyBubyBjb25mbGljdCB3aXRoIHRoZSBhbHJl
YWR5CiAgIC8vIHBsYXlpbmcgZmlyc3QgQURNLgogICBNb2NrQXVkaW9UcmFuc3BvcnRJT1MgbW9j
azIoa1BsYXlvdXQpOwotICBtb2NrMi5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQo
KSwgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CisgIG1vY2syLkhhbmRsZUNhbGxiYWNrcygmdGVz
dF9pc19kb25lXywgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVDVF9DQUxMKAogICAg
ICAgbW9jazIsIE5lZWRNb3JlUGxheURhdGEocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVy
KCksIGtCeXRlc1BlclNhbXBsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlv
dXRfY2hhbm5lbHMoKSwgcGxheW91dF9zYW1wbGVfcmF0ZSgpLApAQCAtNjcxLDcgKzY3MSw3IEBA
IFRFU1RfRihBdWRpb0RldmljZVRlc3QsIERJU0FCTEVEX1N0YXJ0UGxheW91dE9uVHdvSW5zdGFu
Y2VzKSB7CiAgIEVYUEVDVF9FUSgwLCBzZWNvbmRfYXVkaW9fZGV2aWNlLT5SZWdpc3RlckF1ZGlv
Q2FsbGJhY2soJm1vY2syKSk7CiAgIEVYUEVDVF9FUSgwLCBzZWNvbmRfYXVkaW9fZGV2aWNlLT5T
dGFydFBsYXlvdXQoKSk7CiAgIEVYUEVDVF9UUlVFKHNlY29uZF9hdWRpb19kZXZpY2UtPlBsYXlp
bmcoKSk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMp
OworICB0ZXN0X2lzX2RvbmVfLldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMpOwogICBF
WFBFQ1RfRVEoMCwgc2Vjb25kX2F1ZGlvX2RldmljZS0+U3RvcFBsYXlvdXQoKSk7CiAgIEVYUEVD
VF9GQUxTRShzZWNvbmRfYXVkaW9fZGV2aWNlLT5QbGF5aW5nKCkpOwogICBFWFBFQ1RfRkFMU0Uo
c2Vjb25kX2F1ZGlvX2RldmljZS0+UGxheW91dElzSW5pdGlhbGl6ZWQoKSk7CkBAIC02ODMsMTQg
KzY4MywxNCBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBESVNBQkxFRF9TdGFydFBsYXlvdXRP
blR3b0luc3RhbmNlcykgewogLy8gYXVkaW8gc2FtcGxlcyB0byBwbGF5IG91dCB1c2luZyB0aGUg
TmVlZE1vcmVQbGF5RGF0YSBjYWxsYmFjay4KIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0
UGxheW91dFZlcmlmeUNhbGxiYWNrcykgewogICBNb2NrQXVkaW9UcmFuc3BvcnRJT1MgbW9jayhr
UGxheW91dCk7Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIG51
bGxwdHIsIGtOdW1DYWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19k
b25lXywgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIE5lZWRN
b3JlUGxheURhdGEocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga0J5dGVzUGVyU2FtcGxlLCBwbGF5b3V0X2NoYW5u
ZWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheW91dF9zYW1w
bGVfcmF0ZSgpLCBOb3ROdWxsKCksIF8sIF8sIF8pKQogICAgICAgLlRpbWVzKEF0TGVhc3Qoa051
bUNhbGxiYWNrcykpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVk
aW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25lXy0+
V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChr
VGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BQbGF5b3V0KCk7CiB9CiAKQEAgLTY5
OCw3ICs2OTgsNyBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRWZXJpZnlD
YWxsYmFja3MpIHsKIC8vIGF1ZGlvIHNhbXBsZXMgdmlhIHRoZSBSZWNvcmRlZERhdGFJc0F2YWls
YWJsZSBjYWxsYmFjay4KIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UmVjb3JkaW5nVmVy
aWZ5Q2FsbGJhY2tzKSB7CiAgIE1vY2tBdWRpb1RyYW5zcG9ydElPUyBtb2NrKGtSZWNvcmRpbmcp
OwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBudWxscHRyLCBr
TnVtQ2FsbGJhY2tzKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFja3MoJnRlc3RfaXNfZG9uZV8sIG51
bGxwdHIsIGtOdW1DYWxsYmFja3MpOwogICBFWFBFQ1RfQ0FMTChtb2NrLAogICAgICAgICAgICAg
ICBSZWNvcmRlZERhdGFJc0F2YWlsYWJsZSgKICAgICAgICAgICAgICAgICAgIE5vdE51bGwoKSwg
cmVjb3JkX2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSwga0J5dGVzUGVyU2FtcGxlLApAQCAtNzA4
LDcgKzcwOCw3IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UmVjb3JkaW5nVmVyaWZ5
Q2FsbGJhY2tzKSB7CiAKICAgRVhQRUNUX0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1
ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAgU3RhcnRSZWNvcmRpbmcoKTsKLSAgdGVzdF9pc19kb25l
Xy0+V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2Fp
dChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BSZWNvcmRpbmcoKTsKIH0KIApA
QCAtNzE2LDcgKzcxNiw3IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0YXJ0UmVjb3JkaW5n
VmVyaWZ5Q2FsbGJhY2tzKSB7CiAvLyBhY3RpdmUgaW4gYm90aCBkaXJlY3Rpb25zLgogVEVTVF9G
KEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRQbGF5b3V0QW5kUmVjb3JkaW5nVmVyaWZ5Q2FsbGJhY2tz
KSB7CiAgIE1vY2tBdWRpb1RyYW5zcG9ydElPUyBtb2NrKGtQbGF5b3V0IHwga1JlY29yZGluZyk7
Ci0gIG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtO
dW1DYWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVs
bHB0ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIE5lZWRNb3JlUGxheURh
dGEocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0J5dGVzUGVyU2FtcGxlLCBwbGF5b3V0X2NoYW5uZWxzKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheW91dF9zYW1wbGVfcmF0ZSgp
LCBOb3ROdWxsKCksIF8sIF8sIF8pKQpAQCAtNzMwLDcgKzczMCw3IEBAIFRFU1RfRihBdWRpb0Rl
dmljZVRlc3QsIFN0YXJ0UGxheW91dEFuZFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogICBF
WFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykp
OwogICBTdGFydFBsYXlvdXQoKTsKICAgU3RhcnRSZWNvcmRpbmcoKTsKLSAgdGVzdF9pc19kb25l
Xy0+V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2Fp
dChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BSZWNvcmRpbmcoKTsKICAgU3Rv
cFBsYXlvdXQoKTsKIH0KQEAgLTc0NiwxMiArNzQ2LDExIEBAIFRFU1RfRihBdWRpb0RldmljZVRl
c3QsIFJ1blBsYXlvdXRXaXRoRmlsZUFzU291cmNlKSB7CiAgIHN0ZDo6c3RyaW5nIGZpbGVfbmFt
ZSA9IEdldEZpbGVOYW1lKHBsYXlvdXRfc2FtcGxlX3JhdGUoKSk7CiAgIHN0ZDo6dW5pcXVlX3B0
cjxGaWxlQXVkaW9TdHJlYW0+IGZpbGVfYXVkaW9fc3RyZWFtKAogICAgICAgbmV3IEZpbGVBdWRp
b1N0cmVhbShudW1fY2FsbGJhY2tzLCBmaWxlX25hbWUsIHBsYXlvdXRfc2FtcGxlX3JhdGUoKSkp
OwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBmaWxlX2F1ZGlv
X3N0cmVhbS5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgbnVtX2NhbGxiYWNrcyk7Cisg
IG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBmaWxlX2F1ZGlvX3N0cmVhbS5n
ZXQoKSwgbnVtX2NhbGxiYWNrcyk7CiAgIC8vIFNldE1heFBsYXlvdXRWb2x1bWUoKTsKICAgRVhQ
RUNUX0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsK
ICAgU3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5N
aWxsaXNlY29uZHMpOworICB0ZXN0X2lzX2RvbmVfLldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNl
Y29uZHMpOwogICBTdG9wUGxheW91dCgpOwogfQogCkBAIC03ODAsMTQgKzc3OSwxMyBAQCBURVNU
X0YoQXVkaW9EZXZpY2VUZXN0LCBSdW5QbGF5b3V0QW5kUmVjb3JkaW5nSW5GdWxsRHVwbGV4KSB7
CiAgIE5pY2VNb2NrPE1vY2tBdWRpb1RyYW5zcG9ydElPUz4gbW9jayhrUGxheW91dCB8IGtSZWNv
cmRpbmcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8Rmlmb0F1ZGlvU3RyZWFtPiBmaWZvX2F1ZGlvX3N0
cmVhbSgKICAgICAgIG5ldyBGaWZvQXVkaW9TdHJlYW0ocGxheW91dF9mcmFtZXNfcGVyXzEwbXNf
YnVmZmVyKCkpKTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwg
Zmlmb19hdWRpb19zdHJlYW0uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgIGtGdWxsRHVw
bGV4VGltZUluU2VjICoga051bUNhbGxiYWNrc1BlclNlY29uZCk7CisgIG1vY2suSGFuZGxlQ2Fs
bGJhY2tzKAorICAgICAgJnRlc3RfaXNfZG9uZV8sIGZpZm9fYXVkaW9fc3RyZWFtLmdldCgpLCBr
RnVsbER1cGxleFRpbWVJblNlYyAqIGtOdW1DYWxsYmFja3NQZXJTZWNvbmQpOwogICAvLyBTZXRN
YXhQbGF5b3V0Vm9sdW1lKCk7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+UmVnaXN0
ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UmVjb3JkaW5nKCk7CiAgIFN0YXJ0UGxh
eW91dCgpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0KAotICAgICAgc3RkOjptYXgoa1Rlc3RUaW1l
T3V0SW5NaWxsaXNlY29uZHMsIDEwMDAgKiBrRnVsbER1cGxleFRpbWVJblNlYykpOworICB0ZXN0
X2lzX2RvbmVfLldhaXQoc3RkOjptYXgoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMsIDEwMDAg
KiBrRnVsbER1cGxleFRpbWVJblNlYykpOwogICBTdG9wUGxheW91dCgpOwogICBTdG9wUmVjb3Jk
aW5nKCk7CiAgIEVYUEVDVF9MRShmaWZvX2F1ZGlvX3N0cmVhbS0+YXZlcmFnZV9zaXplKCksIDEw
dSk7CkBAIC04MDksMTUgKzgwNywxNSBAQCBURVNUX0YoQXVkaW9EZXZpY2VUZXN0LCBESVNBQkxF
RF9NZWFzdXJlTG9vcGJhY2tMYXRlbmN5KSB7CiAgIE5pY2VNb2NrPE1vY2tBdWRpb1RyYW5zcG9y
dElPUz4gbW9jayhrUGxheW91dCB8IGtSZWNvcmRpbmcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8TGF0
ZW5jeU1lYXN1cmluZ0F1ZGlvU3RyZWFtPiBsYXRlbmN5X2F1ZGlvX3N0cmVhbSgKICAgICAgIG5l
dyBMYXRlbmN5TWVhc3VyaW5nQXVkaW9TdHJlYW0ocGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVm
ZmVyKCkpKTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5nZXQoKSwgbGF0
ZW5jeV9hdWRpb19zdHJlYW0uZ2V0KCksCisgIG1vY2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lz
X2RvbmVfLAorICAgICAgICAgICAgICAgICAgICAgICBsYXRlbmN5X2F1ZGlvX3N0cmVhbS5nZXQo
KSwKICAgICAgICAgICAgICAgICAgICAgICAga01lYXN1cmVMYXRlbmN5VGltZUluU2VjICoga051
bUNhbGxiYWNrc1BlclNlY29uZCk7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+UmVn
aXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIC8vIFNldE1heFBsYXlvdXRWb2x1bWUoKTsK
ICAgLy8gRGlzYWJsZUJ1aWx0SW5BRUNJZkF2YWlsYWJsZSgpOwogICBTdGFydFJlY29yZGluZygp
OwogICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdCgKLSAgICAgIHN0ZDo6
bWF4KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzLCAxMDAwICoga01lYXN1cmVMYXRlbmN5VGlt
ZUluU2VjKSk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChzdGQ6Om1heChrVGVzdFRpbWVPdXRJbk1p
bGxpc2Vjb25kcywgMTAwMCAqIGtNZWFzdXJlTGF0ZW5jeVRpbWVJblNlYykpOwogICBTdG9wUGxh
eW91dCgpOwogICBTdG9wUmVjb3JkaW5nKCk7CiAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjb3JyZWN0
IG51bWJlciBvZiB0cmFuc21pdHRlZCBpbXB1bHNlcyBhcmUgZGV0ZWN0ZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2RldmljZS9saW51eC9hdWRpb19kZXZpY2VfYWxzYV9saW51eC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVk
aW9fZGV2aWNlX2Fsc2FfbGludXguaAppbmRleCAzZDE1NTY1YjhkYzQ4MTQwMGFjMWE0ZTAyZWM2
MDc4ZThjMTA5ODg3Li5kNjBkY2FmZGNlZDE2Y2JjYTdlZDM5MjNmMzQyY2YyYzEzZjdiNDE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19kZXZpY2VfYWxzYV9saW51eC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2
aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9hbHNhX2xpbnV4LmgKQEAgLTI5LDcgKzI5LDYgQEAgdHlw
ZWRlZiB3ZWJydGM6OmFkbV9saW51eF9hbHNhOjpBbHNhU3ltYm9sVGFibGUgV2ViUlRDQWxzYVN5
bWJvbFRhYmxlOwogV2ViUlRDQWxzYVN5bWJvbFRhYmxlKiBHZXRBbHNhU3ltYm9sVGFibGUoKTsK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBFdmVudFdyYXBwZXI7CiAKIGNsYXNzIEF1ZGlv
RGV2aWNlTGludXhBTFNBIDogcHVibGljIEF1ZGlvRGV2aWNlR2VuZXJpYyB7CiAgcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xpbnV4LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZp
Y2UvbGludXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xpbnV4LmNjCmluZGV4IDIxNTdhZjMyOGM2ZDNi
MjM3NDIwYWFlZjc1OWQyY2VjODdmY2IyYzMuLjM3MDZkOTE3NmVjZDgwZmU1NDk2ODMzMTNhMDcx
YzA2ZWIzODNiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9wdWxzZV9s
aW51eC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19kZXZpY2VfcHVsc2VfbGludXguY2MKQEAg
LTgsMTEgKzgsMTIgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19k
ZXZpY2UvYXVkaW9fZGV2aWNlX2NvbmZpZy5oIgorI2luY2x1ZGUgPHN0cmluZy5oPgorCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xpbnV4
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvbGF0ZWJpbmRpbmdzeW1i
b2x0YWJsZV9saW51eC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9l
dmVudF93cmFwcGVyLmgiCiAKIFdlYlJUQ1B1bHNlU3ltYm9sVGFibGUqIEdldFB1bHNlU3ltYm9s
VGFibGUoKSB7CiAgIHN0YXRpYyBXZWJSVENQdWxzZVN5bWJvbFRhYmxlKiBwdWxzZV9zeW1ib2xf
dGFibGUgPQpAQCAtMzEsMTAgKzMyLDYgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIEF1ZGlvRGV2
aWNlTGludXhQdWxzZTo6QXVkaW9EZXZpY2VMaW51eFB1bHNlKCkKICAgICA6IF9wdHJBdWRpb0J1
ZmZlcihOVUxMKSwKLSAgICAgIF90aW1lRXZlbnRSZWMoKkV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkp
LAotICAgICAgX3RpbWVFdmVudFBsYXkoKkV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAotICAgICAg
X3JlY1N0YXJ0RXZlbnQoKkV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAotICAgICAgX3BsYXlTdGFy
dEV2ZW50KCpFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSwKICAgICAgIF9pbnB1dERldmljZUluZGV4
KDApLAogICAgICAgX291dHB1dERldmljZUluZGV4KDApLAogICAgICAgX2lucHV0RGV2aWNlSXNT
cGVjaWZpZWQoZmFsc2UpLApAQCAtMTExLDExICsxMDgsNiBAQCBBdWRpb0RldmljZUxpbnV4UHVs
c2U6On5BdWRpb0RldmljZUxpbnV4UHVsc2UoKSB7CiAgICAgZGVsZXRlW10gX3JlY0RldmljZU5h
bWU7CiAgICAgX3JlY0RldmljZU5hbWUgPSBOVUxMOwogICB9Ci0KLSAgZGVsZXRlICZfcmVjU3Rh
cnRFdmVudDsKLSAgZGVsZXRlICZfcGxheVN0YXJ0RXZlbnQ7Ci0gIGRlbGV0ZSAmX3RpbWVFdmVu
dFJlYzsKLSAgZGVsZXRlICZfdGltZUV2ZW50UGxheTsKIH0KIAogdm9pZCBBdWRpb0RldmljZUxp
bnV4UHVsc2U6OkF0dGFjaEF1ZGlvQnVmZmVyKEF1ZGlvRGV2aWNlQnVmZmVyKiBhdWRpb0J1ZmZl
cikgewpAQCAtMTA2NSw3ICsxMDU3LDcgQEAgaW50MzJfdCBBdWRpb0RldmljZUxpbnV4UHVsc2U6
OlN0YXJ0UmVjb3JkaW5nKCkgewogCiAgIC8vIFRoZSBhdWRpbyB0aHJlYWQgd2lsbCBzaWduYWwg
d2hlbiByZWNvcmRpbmcgaGFzIHN0YXJ0ZWQuCiAgIF90aW1lRXZlbnRSZWMuU2V0KCk7Ci0gIGlm
IChrRXZlbnRUaW1lb3V0ID09IF9yZWNTdGFydEV2ZW50LldhaXQoMTAwMDApKSB7CisgIGlmICgh
X3JlY1N0YXJ0RXZlbnQuV2FpdCgxMDAwMCkpIHsKICAgICB7CiAgICAgICBydGM6OkNyaXRTY29w
ZSBsb2NrKCZfY3JpdFNlY3QpOwogICAgICAgX3N0YXJ0UmVjID0gZmFsc2U7CkBAIC0xMTgwLDcg
KzExNzIsNyBAQCBpbnQzMl90IEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6U3RhcnRQbGF5b3V0KCkg
ewogCiAgIC8vIFRoZSBhdWRpbyB0aHJlYWQgd2lsbCBzaWduYWwgd2hlbiBwbGF5b3V0IGhhcyBz
dGFydGVkLgogICBfdGltZUV2ZW50UGxheS5TZXQoKTsKLSAgaWYgKGtFdmVudFRpbWVvdXQgPT0g
X3BsYXlTdGFydEV2ZW50LldhaXQoMTAwMDApKSB7CisgIGlmICghX3BsYXlTdGFydEV2ZW50Lldh
aXQoMTAwMDApKSB7CiAgICAgewogICAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmX2NyaXRTZWN0
KTsKICAgICAgIF9zdGFydFBsYXkgPSBmYWxzZTsKQEAgLTE5OTQsMTQgKzE5ODYsOCBAQCBib29s
IEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6UmVjVGhyZWFkRnVuYyh2b2lkKiBwVGhpcykgewogfQog
CiBib29sIEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6UGxheVRocmVhZFByb2Nlc3MoKSB7Ci0gIHN3
aXRjaCAoX3RpbWVFdmVudFBsYXkuV2FpdCgxMDAwKSkgewotICAgIGNhc2Uga0V2ZW50U2lnbmFs
ZWQ6Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGtFdmVudEVycm9yOgotICAgICAgUlRDX0xPRyhM
U19XQVJOSU5HKSA8PCAiRXZlbnRXcmFwcGVyOjpXYWl0KCkgZmFpbGVkIjsKLSAgICAgIHJldHVy
biB0cnVlOwotICAgIGNhc2Uga0V2ZW50VGltZW91dDoKLSAgICAgIHJldHVybiB0cnVlOworICBp
ZiAoIV90aW1lRXZlbnRQbGF5LldhaXQoMTAwMCkpIHsKKyAgICByZXR1cm4gdHJ1ZTsKICAgfQog
CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJl9jcml0U2VjdCk7CkBAIC0yMTY4LDE0ICsyMTU0LDgg
QEAgYm9vbCBBdWRpb0RldmljZUxpbnV4UHVsc2U6OlBsYXlUaHJlYWRQcm9jZXNzKCkgewogfQog
CiBib29sIEF1ZGlvRGV2aWNlTGludXhQdWxzZTo6UmVjVGhyZWFkUHJvY2VzcygpIHsKLSAgc3dp
dGNoIChfdGltZUV2ZW50UmVjLldhaXQoMTAwMCkpIHsKLSAgICBjYXNlIGtFdmVudFNpZ25hbGVk
OgotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBrRXZlbnRFcnJvcjoKLSAgICAgIFJUQ19MT0coTFNf
V0FSTklORykgPDwgIkV2ZW50V3JhcHBlcjo6V2FpdCgpIGZhaWxlZCI7Ci0gICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBjYXNlIGtFdmVudFRpbWVvdXQ6Ci0gICAgICByZXR1cm4gdHJ1ZTsKKyAgaWYg
KCFfdGltZUV2ZW50UmVjLldhaXQoMTAwMCkpIHsKKyAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAg
IHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJl9jcml0U2VjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51
eC9hdWRpb19kZXZpY2VfcHVsc2VfbGludXguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9w
dWxzZV9saW51eC5oCmluZGV4IDE2NTViMTgxMTdmYjI0ZTMxNzM4ZWI5Y2IyNDZhODJjNzJiNmQ2
MTEuLjRkZTg3ZmMzZTZlM2U0ZWQ2ZTIxNTRlY2MxOTcyMDljNzcyODgwN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
ZGV2aWNlL2xpbnV4L2F1ZGlvX2RldmljZV9wdWxzZV9saW51eC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4
L2F1ZGlvX2RldmljZV9wdWxzZV9saW51eC5oCkBAIC0xMywxMCArMTMsMTYgQEAKIAogI2luY2x1
ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2F1ZGlvX2Rldmlj
ZV9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2Vf
Z2VuZXJpYy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvYXVkaW9f
ZGV2aWNlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19k
ZXZpY2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1
ZGlvX21peGVyX21hbmFnZXJfcHVsc2VfbGludXguaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X2RldmljZS9saW51eC9wdWxzZWF1ZGlvc3ltYm9sdGFibGVfbGludXguaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3RocmVhZF9hbm5vdGF0aW9ucy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2Vy
LmgiCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19VU0VfWDExKQpAQCAtMjQsNiArMzAsOCBAQAogI2Vu
ZGlmCiAKICNpbmNsdWRlIDxwdWxzZS9wdWxzZWF1ZGlvLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+
CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKIC8vIFdlIGRlZmluZSB0aGlzIGZsYWcgaWYgaXQncyBt
aXNzaW5nIGZyb20gb3VyIGhlYWRlcnMsIGJlY2F1c2Ugd2Ugd2FudCB0byBiZQogLy8gYWJsZSB0
byBjb21waWxlIGFnYWluc3Qgb2xkIGhlYWRlcnMgYnV0IHN0aWxsIHVzZSBQQV9TVFJFQU1fQURK
VVNUX0xBVEVOQ1kKQEAgLTk2LDcgKzEwNCw2IEBAIHR5cGVkZWYgd2VicnRjOjphZG1fbGludXhf
cHVsc2U6OlB1bHNlQXVkaW9TeW1ib2xUYWJsZSBXZWJSVENQdWxzZVN5bWJvbFRhYmxlOwogV2Vi
UlRDUHVsc2VTeW1ib2xUYWJsZSogR2V0UHVsc2VTeW1ib2xUYWJsZSgpOwogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKLWNsYXNzIEV2ZW50V3JhcHBlcjsKIAogY2xhc3MgQXVkaW9EZXZpY2VMaW51eFB1
bHNlIDogcHVibGljIEF1ZGlvRGV2aWNlR2VuZXJpYyB7CiAgcHVibGljOgpAQCAtMjU1LDEwICsy
NjIsMTAgQEAgY2xhc3MgQXVkaW9EZXZpY2VMaW51eFB1bHNlIDogcHVibGljIEF1ZGlvRGV2aWNl
R2VuZXJpYyB7CiAgIEF1ZGlvRGV2aWNlQnVmZmVyKiBfcHRyQXVkaW9CdWZmZXI7CiAKICAgcnRj
OjpDcml0aWNhbFNlY3Rpb24gX2NyaXRTZWN0OwotICBFdmVudFdyYXBwZXImIF90aW1lRXZlbnRS
ZWM7Ci0gIEV2ZW50V3JhcHBlciYgX3RpbWVFdmVudFBsYXk7Ci0gIEV2ZW50V3JhcHBlciYgX3Jl
Y1N0YXJ0RXZlbnQ7Ci0gIEV2ZW50V3JhcHBlciYgX3BsYXlTdGFydEV2ZW50OworICBydGM6OkV2
ZW50IF90aW1lRXZlbnRSZWM7CisgIHJ0Yzo6RXZlbnQgX3RpbWVFdmVudFBsYXk7CisgIHJ0Yzo6
RXZlbnQgX3JlY1N0YXJ0RXZlbnQ7CisgIHJ0Yzo6RXZlbnQgX3BsYXlTdGFydEV2ZW50OwogCiAg
IC8vIFRPRE8ocGJvcyk6IFJlbW92ZSB1bmlxdWVfcHRyIGFuZCB1c2UgZGlyZWN0bHkgd2l0aG91
dCByZXNldHRpbmcuCiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlBsYXRmb3JtVGhyZWFkPiBfcHRy
VGhyZWFkUGxheTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlvX21peGVyX21hbmFnZXJf
cHVsc2VfbGludXguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19taXhlcl9tYW5hZ2VyX3B1bHNlX2xp
bnV4LmNjCmluZGV4IDViYTkyM2JiOTExYzFkMjIyNDQ5ZTUxYzgwNjBkN2Y4NzQxODg4NDQuLjIy
ZTEwNDA3ZGUyZmYxM2YwYWE2MzA2NDYyZTZhNGU5NzAyOGVlNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNl
L2xpbnV4L2F1ZGlvX21peGVyX21hbmFnZXJfcHVsc2VfbGludXguY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbGlu
dXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5jYwpAQCAtOCw4ICs4LDEyIEBACiAg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCiAgKi8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19kZXZpY2UvbGludXgvYXVkaW9fZGV2aWNlX3B1bHNlX2xpbnV4LmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51
eC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2xhdGViaW5kaW5nc3lt
Ym9sdGFibGVfbGludXguaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9w
dWxzZWF1ZGlvc3ltYm9sdGFibGVfbGludXguaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xp
bnV4L2F1ZGlvX21peGVyX21hbmFnZXJfcHVsc2VfbGludXguaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL2xpbnV4L2F1ZGlv
X21peGVyX21hbmFnZXJfcHVsc2VfbGludXguaAppbmRleCBjNTQ2MGI2MjM3YWY4NzIyNTIzMDdi
MmE3ZmMxNDgxODBmYzYyMDNlLi42NzlkMWI0YjdjMjZkMjM2ZTUyMzA2ZDhhZDlkMWFmZDg1YWZh
OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2RldmljZS9saW51eC9hdWRpb19taXhlcl9tYW5hZ2VyX3B1bHNlX2xp
bnV4LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19kZXZpY2UvbGludXgvYXVkaW9fbWl4ZXJfbWFuYWdlcl9wdWxzZV9saW51eC5o
CkBAIC0xMSwxMyArMTEsMTEgQEAKICNpZm5kZWYgQVVESU9fREVWSUNFX0FVRElPX01JWEVSX01B
TkFHRVJfUFVMU0VfTElOVVhfSF8KICNkZWZpbmUgQVVESU9fREVWSUNFX0FVRElPX01JWEVSX01B
TkFHRVJfUFVMU0VfTElOVVhfSF8KIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2lu
Y2x1ZGUvYXVkaW9fZGV2aWNlLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvbGlu
dXgvcHVsc2VhdWRpb3N5bWJvbHRhYmxlX2xpbnV4LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhy
ZWFkX2NoZWNrZXIuaCIKLQogI2luY2x1ZGUgPHB1bHNlL3B1bHNlYXVkaW8uaD4KICNpbmNsdWRl
IDxzdGRpbnQuaD4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCisKICNp
Zm5kZWYgVUlOVDMyX01BWAogI2RlZmluZSBVSU5UMzJfTUFYICgodWludDMyX3QpLTEpCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fZGV2aWNlL21hYy9hdWRpb19kZXZpY2VfbWFjLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFj
L2F1ZGlvX2RldmljZV9tYWMuY2MKaW5kZXggMDYzYWM4NTczNmRkYzRkMTAxNWYyMTg2MzUxZmYw
MmQyNzk3ZjNmZC4uOWRhZjdiZGRmN2JmNzNjNTlkZTI4ZmUzNTM1NjRjMWI4ZjMzNWYyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19kZXZpY2UvbWFjL2F1ZGlvX2RldmljZV9tYWMuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjL2F1
ZGlvX2RldmljZV9tYWMuY2MKQEAgLTE2LDcgKzE2LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNs
dWRlL2V2ZW50X3dyYXBwZXIuaCIKIAogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBw
bGljYXRpb25TZXJ2aWNlcy5oPgogI2luY2x1ZGUgPGxpYmtlcm4vT1NBdG9taWMuaD4gIC8vIE9T
QXRvbWljQ29tcGFyZUFuZFN3YXAoKQpAQCAtMTE1LDggKzExNCw2IEBAIHZvaWQgQXVkaW9EZXZp
Y2VNYWM6OmxvZ0NBTXNnKGNvbnN0IHJ0Yzo6TG9nZ2luZ1NldmVyaXR5IHNldiwKIAogQXVkaW9E
ZXZpY2VNYWM6OkF1ZGlvRGV2aWNlTWFjKCkKICAgICA6IF9wdHJBdWRpb0J1ZmZlcihOVUxMKSwK
LSAgICAgIF9zdG9wRXZlbnRSZWMoKkV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAotICAgICAgX3N0
b3BFdmVudCgqRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCiAgICAgICBfbWl4ZXJNYW5hZ2VyKCks
CiAgICAgICBfaW5wdXREZXZpY2VJbmRleCgwKSwKICAgICAgIF9vdXRwdXREZXZpY2VJbmRleCgw
KSwKQEAgLTE1Myw5ICsxNTAsNiBAQCBBdWRpb0RldmljZU1hYzo6QXVkaW9EZXZpY2VNYWMoKQog
ICAgICAgcHJldl9rZXlfc3RhdGVfKCkgewogICBSVENfTE9HKExTX0lORk8pIDw8IF9fRlVOQ1RJ
T05fXyA8PCAiIGNyZWF0ZWQiOwogCi0gIFJUQ19EQ0hFQ0soJl9zdG9wRXZlbnQgIT0gTlVMTCk7
Ci0gIFJUQ19EQ0hFQ0soJl9zdG9wRXZlbnRSZWMgIT0gTlVMTCk7Ci0KICAgbWVtc2V0KF9yZW5k
ZXJDb252ZXJ0RGF0YSwgMCwgc2l6ZW9mKF9yZW5kZXJDb252ZXJ0RGF0YSkpOwogICBtZW1zZXQo
Jl9vdXRTdHJlYW1Gb3JtYXQsIDAsIHNpemVvZihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24p
KTsKICAgbWVtc2V0KCZfb3V0RGVzaXJlZEZvcm1hdCwgMCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbikpOwpAQCAtMjA0LDggKzE5OCw2IEBAIEF1ZGlvRGV2aWNlTWFjOjp+QXVk
aW9EZXZpY2VNYWMoKSB7CiAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgInNlbWFwaG9yZV9kZXN0
cm95KCkgZXJyb3I6ICIgPDwga2VybkVycjsKICAgfQogCi0gIGRlbGV0ZSAmX3N0b3BFdmVudDsK
LSAgZGVsZXRlICZfc3RvcEV2ZW50UmVjOwogfQogCiAvLyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBA
IC0xMzM4LDcgKzEzMzAsNyBAQCBpbnQzMl90IEF1ZGlvRGV2aWNlTWFjOjpTdG9wUmVjb3JkaW5n
KCkgewogICAgICAgX3JlY29yZGluZyA9IGZhbHNlOwogICAgICAgX2RvU3RvcFJlYyA9IHRydWU7
ICAvLyBTaWduYWwgdG8gaW8gcHJvYyB0byBzdG9wIGF1ZGlvIGRldmljZQogICAgICAgX2NyaXRT
ZWN0LkxlYXZlKCk7ICAvLyBDYW5ub3QgYmUgdW5kZXIgbG9jaywgcmlzayBvZiBkZWFkbG9jawot
ICAgICAgaWYgKGtFdmVudFRpbWVvdXQgPT0gX3N0b3BFdmVudFJlYy5XYWl0KDIwMDApKSB7Cisg
ICAgICBpZiAoIV9zdG9wRXZlbnRSZWMuV2FpdCgyMDAwKSkgewogICAgICAgICBydGM6OkNyaXRT
Y29wZSBjcml0U2NvcGVkKCZfY3JpdFNlY3QpOwogICAgICAgICBSVENfTE9HKExTX1dBUk5JTkcp
IDw8ICJUaW1lZCBvdXQgc3RvcHBpbmcgdGhlIGNhcHR1cmUgSU9Qcm9jLiIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiV2UgbWF5IGhhdmUgZmFpbGVkIHRvIGRldGVjdCBhIGRldmlj
ZSByZW1vdmFsLiI7CkBAIC0xMzY2LDcgKzEzNTgsNyBAQCBpbnQzMl90IEF1ZGlvRGV2aWNlTWFj
OjpTdG9wUmVjb3JkaW5nKCkgewogICAgICAgX3JlY29yZGluZyA9IGZhbHNlOwogICAgICAgX2Rv
U3RvcCA9IHRydWU7ICAgICAvLyBTaWduYWwgdG8gaW8gcHJvYyB0byBzdG9wIGF1ZGlvIGRldmlj
ZQogICAgICAgX2NyaXRTZWN0LkxlYXZlKCk7ICAvLyBDYW5ub3QgYmUgdW5kZXIgbG9jaywgcmlz
ayBvZiBkZWFkbG9jawotICAgICAgaWYgKGtFdmVudFRpbWVvdXQgPT0gX3N0b3BFdmVudC5XYWl0
KDIwMDApKSB7CisgICAgICBpZiAoIV9zdG9wRXZlbnQuV2FpdCgyMDAwKSkgewogICAgICAgICBy
dGM6OkNyaXRTY29wZSBjcml0U2NvcGVkKCZfY3JpdFNlY3QpOwogICAgICAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJUaW1lZCBvdXQgc3RvcHBpbmcgdGhlIHNoYXJlZCBJT1Byb2MuIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJXZSBtYXkgaGF2ZSBmYWlsZWQgdG8gZGV0ZWN0
IGEgZGV2aWNlIHJlbW92YWwuIjsKQEAgLTE0NzQsNyArMTQ2Niw3IEBAIGludDMyX3QgQXVkaW9E
ZXZpY2VNYWM6OlN0b3BQbGF5b3V0KCkgewogICAgIF9wbGF5aW5nID0gZmFsc2U7CiAgICAgX2Rv
U3RvcCA9IHRydWU7ICAgICAvLyBTaWduYWwgdG8gaW8gcHJvYyB0byBzdG9wIGF1ZGlvIGRldmlj
ZQogICAgIF9jcml0U2VjdC5MZWF2ZSgpOyAgLy8gQ2Fubm90IGJlIHVuZGVyIGxvY2ssIHJpc2sg
b2YgZGVhZGxvY2sKLSAgICBpZiAoa0V2ZW50VGltZW91dCA9PSBfc3RvcEV2ZW50LldhaXQoMjAw
MCkpIHsKKyAgICBpZiAoIV9zdG9wRXZlbnQuV2FpdCgyMDAwKSkgewogICAgICAgcnRjOjpDcml0
U2NvcGUgY3JpdFNjb3BlZCgmX2NyaXRTZWN0KTsKICAgICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIlRpbWVkIG91dCBzdG9wcGluZyB0aGUgcmVuZGVyIElPUHJvYy4iCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICJXZSBtYXkgaGF2ZSBmYWlsZWQgdG8gZGV0ZWN0IGEgZGV2aWNlIHJl
bW92YWwuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fZGV2aWNlL21hYy9hdWRpb19kZXZpY2VfbWFjLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Rldmlj
ZS9tYWMvYXVkaW9fZGV2aWNlX21hYy5oCmluZGV4IDVjYmRhZTI4MzcxYTI5MzBlMDczNWE3NDIz
ZDQ1YjY2ZWE0Y2MxMzUuLjVhNzA3NjA2NTMzNGNmNzU0ZDc1NmEwNGViODE3MGVhNmJjODgzN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fZGV2aWNlL21hYy9hdWRpb19kZXZpY2VfbWFjLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvbWFj
L2F1ZGlvX2RldmljZV9tYWMuaApAQCAtMTYsOSArMTYsOSBAQAogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9nZW5lcmljLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19kZXZpY2UvbWFjL2F1ZGlvX21peGVyX21hbmFnZXJfbWFjLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fu
bm90YXRpb25zLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRfd3Jh
cHBlci5oIgogCiAjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CiAjaW5j
bHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpby5oPgpAQCAtMzEsNyArMzEsNiBAQCBjbGFzcyBQbGF0
Zm9ybVRocmVhZDsKIH0gIC8vIG5hbWVzcGFjZSBydGMKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci1j
bGFzcyBFdmVudFdyYXBwZXI7CiAKIGNvbnN0IHVpbnQzMl90IE5fUkVDX1NBTVBMRVNfUEVSX1NF
QyA9IDQ4MDAwOwogY29uc3QgdWludDMyX3QgTl9QTEFZX1NBTVBMRVNfUEVSX1NFQyA9IDQ4MDAw
OwpAQCAtMjUyLDggKzI1MSw4IEBAIGNsYXNzIEF1ZGlvRGV2aWNlTWFjIDogcHVibGljIEF1ZGlv
RGV2aWNlR2VuZXJpYyB7CiAKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gX2NyaXRTZWN0OwogCi0g
IEV2ZW50V3JhcHBlciYgX3N0b3BFdmVudFJlYzsKLSAgRXZlbnRXcmFwcGVyJiBfc3RvcEV2ZW50
OworICBydGM6OkV2ZW50IF9zdG9wRXZlbnRSZWM7CisgIHJ0Yzo6RXZlbnQgX3N0b3BFdmVudDsK
IAogICAvLyBUT0RPKHBib3MpOiBSZXBsYWNlIHdpdGggZGlyZWN0IG1lbWJlcnMsIGp1c3Qgc3Rh
cnQvc3RvcCwgbm8gbmVlZCB0bwogICAvLyByZWNyZWF0ZSB0aGUgdGhyZWFkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19taXhlci9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvQlVJTEQuZ24KaW5kZXggMGJiM2FlMTM3YWVlZGRkZmQ5
OWM3NDBmMTEzZjA5YjBhNDUxYzlmMi4uZjkzNWU4M2M1YmEyM2Y5ZWZlZGFlNTU0MjIxM2I3NjQ2
YjhiNWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL0JVSUxELmduCkBA
IC0zNyw3ICszNyw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fbWl4ZXJfaW1wbCIpIHsK
IAogICBkZXBzID0gWwogICAgICI6YXVkaW9fZnJhbWVfbWFuaXB1bGF0b3IiLAotICAgICIuLi8u
Ljp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8u
Li9hcGkvYXVkaW86YXVkaW9fZnJhbWVfYXBpIiwKICAgICAiLi4vLi4vYXBpL2F1ZGlvOmF1ZGlv
X21peGVyX2FwaSIsCkBAIC00OCw2ICs0Nyw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9f
bWl4ZXJfaW1wbCIpIHsKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAiLi4vLi4v
c3lzdGVtX3dyYXBwZXJzOm1ldHJpY3MiLAogICAgICIuLi9hdWRpb19wcm9jZXNzaW5nIiwKKyAg
ICAiLi4vYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICIuLi9hdWRpb19wcm9jZXNzaW5nOmFw
bV9sb2dnaW5nIiwKICAgICAiLi4vYXVkaW9fcHJvY2Vzc2luZzphdWRpb19mcmFtZV92aWV3IiwK
ICAgICAiLi4vYXVkaW9fcHJvY2Vzc2luZy9hZ2MyOmZpeGVkX2RpZ2l0YWwiLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19taXhlci9hdWRpb19taXhlcl9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVyX2ltcGwuaAppbmRl
eCBlODk5NGE2NzRiYzYwNWQ4NTY0OTczODZlMWRmNGQ1OGFkODQwMTRiLi44ZWRkM2I4YmRjNGQz
ZTRiNjAwMzYxNzVhODQ1YWVlZTY2ODkwNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVy
X2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVyX2ltcGwuaApAQCAtMTcsNiArMTcsNyBAQAog
I2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19taXhlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fbWl4ZXIvZnJhbWVfY29tYmluZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX21peGVy
L291dHB1dF9yYXRlX2NhbGN1bGF0b3IuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNl
Y3Rpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9yYWNlX2NoZWNrZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5v
dGF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9hdWRpb19taXhlcl90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9h
dWRpb19taXhlcl90ZXN0LmNjCmluZGV4IDIwMDRhZWVmNDYzYWIwYWI5MDIxMzBmNzMyNDA2Yjk5
YzBlY2RjN2IuLmI2MDc4Nzc1NWQ4MzZlMDI4MmQwYmFkNGQxNzNmNWY3ODUyODEwNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fbWl4ZXIvYXVkaW9fbWl4ZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2F1ZGlvX21peGVyX3Rl
c3QuY2MKQEAgLTE5LDI0ICsxOSwyNSBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogCi1ERUZJTkVfYm9v
bChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKLURFRklORV9pbnQoc2FtcGxp
bmdfcmF0ZSwKLSAgICAgICAgICAgMTYwMDAsCi0gICAgICAgICAgICJSYXRlIGF0IHdoaWNoIHRv
IG1peCAoYWxsIGlucHV0IHN0cmVhbXMgbXVzdCBoYXZlIHRoaXMgcmF0ZSkiKTsKK1dFQlJUQ19E
RUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19E
RUZJTkVfaW50KAorICAgIHNhbXBsaW5nX3JhdGUsCisgICAgMTYwMDAsCisgICAgIlJhdGUgYXQg
d2hpY2ggdG8gbWl4IChhbGwgaW5wdXQgc3RyZWFtcyBtdXN0IGhhdmUgdGhpcyByYXRlKSIpOwog
Ci1ERUZJTkVfYm9vbCgKK1dFQlJUQ19ERUZJTkVfYm9vbCgKICAgICBzdGVyZW8sCiAgICAgZmFs
c2UsCiAgICAgIkVuYWJsZSBzdGVyZW8gKGludGVybGVhdmVkKS4gSW5wdXRzIG5lZWQgbm90IGJl
IGFzIHRoaXMgcGFyYW1ldGVyLiIpOwogCi1ERUZJTkVfYm9vbChsaW1pdGVyLCB0cnVlLCAiRW5h
YmxlIGxpbWl0ZXIuIik7Ci1ERUZJTkVfc3RyaW5nKG91dHB1dF9maWxlLAotICAgICAgICAgICAg
ICAibWl4ZWRfZmlsZS53YXYiLAotICAgICAgICAgICAgICAiRmlsZSBpbiB3aGljaCB0byBzdG9y
ZSB0aGUgbWl4ZWQgcmVzdWx0LiIpOwotREVGSU5FX3N0cmluZyhpbnB1dF9maWxlXzEsICIiLCAi
Rmlyc3QgaW5wdXQuIERlZmF1bHQgbm9uZS4iKTsKLURFRklORV9zdHJpbmcoaW5wdXRfZmlsZV8y
LCAiIiwgIlNlY29uZCBpbnB1dC4gRGVmYXVsdCBub25lLiIpOwotREVGSU5FX3N0cmluZyhpbnB1
dF9maWxlXzMsICIiLCAiVGhpcmQgaW5wdXQuIERlZmF1bHQgbm9uZS4iKTsKLURFRklORV9zdHJp
bmcoaW5wdXRfZmlsZV80LCAiIiwgIkZvdXJ0aCBpbnB1dC4gRGVmYXVsdCBub25lLiIpOworV0VC
UlRDX0RFRklORV9ib29sKGxpbWl0ZXIsIHRydWUsICJFbmFibGUgbGltaXRlci4iKTsKK1dFQlJU
Q19ERUZJTkVfc3RyaW5nKG91dHB1dF9maWxlLAorICAgICAgICAgICAgICAgICAgICAgIm1peGVk
X2ZpbGUud2F2IiwKKyAgICAgICAgICAgICAgICAgICAgICJGaWxlIGluIHdoaWNoIHRvIHN0b3Jl
IHRoZSBtaXhlZCByZXN1bHQuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhpbnB1dF9maWxlXzEs
ICIiLCAiRmlyc3QgaW5wdXQuIERlZmF1bHQgbm9uZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KGlucHV0X2ZpbGVfMiwgIiIsICJTZWNvbmQgaW5wdXQuIERlZmF1bHQgbm9uZS4iKTsKK1dFQlJU
Q19ERUZJTkVfc3RyaW5nKGlucHV0X2ZpbGVfMywgIiIsICJUaGlyZCBpbnB1dC4gRGVmYXVsdCBu
b25lLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoaW5wdXRfZmlsZV80LCAiIiwgIkZvdXJ0aCBp
bnB1dC4gRGVmYXVsdCBub25lLiIpOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0
ZXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvZnJhbWVfY29tYmluZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2ZyYW1lX2Nv
bWJpbmVyLmNjCmluZGV4IGNmZjIyODJlMzNmZTY5ODI0MWRhOWFhM2IyMDRjMjk5MTI4ZWQyZmIu
LmQzNDkzZjVjM2RkNDM3ZmRmNDQzMjY2OTQ1MTI2N2Y3ZDhmYmNmNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4
ZXIvZnJhbWVfY29tYmluZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhlci9mcmFtZV9jb21iaW5lci5jYwpAQCAtOTIs
MTAgKzkyLDEwIEBAIHN0ZDo6YXJyYXk8T25lQ2hhbm5lbEJ1ZmZlciwga01heGltdW1BbW91bnRP
ZkNoYW5uZWxzPiBNaXhUb0Zsb2F0RnJhbWUoCiAgIHJldHVybiBtaXhpbmdfYnVmZmVyOwogfQog
Ci12b2lkIFJ1bkxpbWl0ZXIoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IG1peGluZ19idWZmZXJfdmll
dywKLSAgICAgICAgICAgICAgICBGaXhlZEdhaW5Db250cm9sbGVyKiBsaW1pdGVyKSB7Cit2b2lk
IFJ1bkxpbWl0ZXIoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IG1peGluZ19idWZmZXJfdmlldywgTGlt
aXRlciogbGltaXRlcikgewogICBjb25zdCBzaXplX3Qgc2FtcGxlX3JhdGUgPSBtaXhpbmdfYnVm
ZmVyX3ZpZXcuc2FtcGxlc19wZXJfY2hhbm5lbCgpICogMTAwMCAvCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEF1ZGlvTWl4ZXJJbXBsOjprRnJhbWVEdXJhdGlvbkluTXM7CisgIC8vIFRP
RE8oYWxlc3Npb2IpOiBBdm9pZCBjYWxsaW5nIFNldFNhbXBsZVJhdGUgZXZlcnkgdGltZS4KICAg
bGltaXRlci0+U2V0U2FtcGxlUmF0ZShzYW1wbGVfcmF0ZSk7CiAgIGxpbWl0ZXItPlByb2Nlc3Mo
bWl4aW5nX2J1ZmZlcl92aWV3KTsKIH0KQEAgLTExNywxMCArMTE3LDggQEAgdm9pZCBJbnRlcmxl
YXZlVG9BdWRpb0ZyYW1lKEF1ZGlvRnJhbWVWaWV3PGNvbnN0IGZsb2F0PiBtaXhpbmdfYnVmZmVy
X3ZpZXcsCiAKIEZyYW1lQ29tYmluZXI6OkZyYW1lQ29tYmluZXIoYm9vbCB1c2VfbGltaXRlcikK
ICAgICA6IGRhdGFfZHVtcGVyXyhuZXcgQXBtRGF0YUR1bXBlcigwKSksCi0gICAgICBsaW1pdGVy
XyhkYXRhX2R1bXBlcl8uZ2V0KCksICJBdWRpb01peGVyIiksCi0gICAgICB1c2VfbGltaXRlcl8o
dXNlX2xpbWl0ZXIpIHsKLSAgbGltaXRlcl8uU2V0R2FpbigwLmYpOwotfQorICAgICAgbGltaXRl
cl8oc3RhdGljX2Nhc3Q8c2l6ZV90Pig0ODAwMCksIGRhdGFfZHVtcGVyXy5nZXQoKSwgIkF1ZGlv
TWl4ZXIiKSwKKyAgICAgIHVzZV9saW1pdGVyXyh1c2VfbGltaXRlcikge30KIAogRnJhbWVDb21i
aW5lcjo6fkZyYW1lQ29tYmluZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fbWl4ZXIvZnJh
bWVfY29tYmluZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fbWl4ZXIvZnJhbWVfY29tYmluZXIuaAppbmRleCA3MGFjMDI3NzU4OTkw
NzBhNDBjNzUyNzEwZjU3ZjA2NmYxZDczNWE1Li4xYzFjZDUzZWZmMzExNWVlMTJlYzE4NmZlZmVi
MDM3ZmRjMDU0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX21peGVyL2ZyYW1lX2NvbWJpbmVyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19taXhl
ci9mcmFtZV9jb21iaW5lci5oCkBAIC0xNSwxMSArMTUsMTAgQEAKICNpbmNsdWRlIDx2ZWN0b3I+
CiAKICNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJhbWUuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogY2xhc3MgQXBtRGF0YUR1bXBlcjsKLWNsYXNzIEZpeGVkR2FpbkNvbnRyb2xsZXI7
CiAKIGNsYXNzIEZyYW1lQ29tYmluZXIgewogIHB1YmxpYzoKQEAgLTQ1LDcgKzQ0LDcgQEAgY2xh
c3MgRnJhbWVDb21iaW5lciB7CiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bWJlcl9v
Zl9zdHJlYW1zKSBjb25zdDsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8QXBtRGF0YUR1bXBlcj4gZGF0
YV9kdW1wZXJfOwotICBGaXhlZEdhaW5Db250cm9sbGVyIGxpbWl0ZXJfOworICBMaW1pdGVyIGxp
bWl0ZXJfOwogICBjb25zdCBib29sIHVzZV9saW1pdGVyXzsKICAgbXV0YWJsZSBpbnQgdW1hX2xv
Z2dpbmdfY291bnRlcl8gPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9CVUlMRC5nbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9CVUlMRC5nbgppbmRleCA2MWI0ZDQ5NWVkMmY5MTYxODIzY2M3YzUzZTM4YWQ1
ZDMxNDY4ZWExLi42NmIwN2RmMTk5ZTY3ZGFjZjkyNDU3NDJiZWRhMzBkMTQ0Mjk3ODQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL0JVSUxELmduCkBAIC0y
Niw2ICsyNiw0MSBAQCBjb25maWcoImFwbV9kZWJ1Z19kdW1wIikgewogICB9CiB9CiAKK3J0Y19z
dGF0aWNfbGlicmFyeSgiY29uZmlnIikgeworICB2aXNpYmlsaXR5ID0gWyAiOioiIF0KKyAgc291
cmNlcyA9IFsKKyAgICAiaW5jbHVkZS9jb25maWcuY2MiLAorICAgICJpbmNsdWRlL2NvbmZpZy5o
IiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi8uLi9ydGNfYmFzZTptYWNyb21hZ2ljIiwKKyAg
ICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAorICBdCit9CisKK3J0Y19zb3Vy
Y2Vfc2V0KCJhcGkiKSB7CisgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisg
ICAgImluY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5jYyIsCisgICAgImluY2x1ZGUvYXVkaW9fcHJv
Y2Vzc2luZy5oIiwKKyAgXQorICBkZXBzID0gWworICAgICI6YXVkaW9fZnJhbWVfdmlldyIsCisg
ICAgIjphdWRpb19nZW5lcmF0b3JfaW50ZXJmYWNlIiwKKyAgICAiOmF1ZGlvX3Byb2Nlc3Npbmdf
c3RhdGlzdGljcyIsCisgICAgIjpjb25maWciLAorICAgICI6Z2Fpbl9jb250cm9sX2ludGVyZmFj
ZSIsCisgICAgIi4uLy4uL2FwaS9hdWRpbzphZWMzX2NvbmZpZyIsCisgICAgIi4uLy4uL2FwaS9h
dWRpbzplY2hvX2NvbnRyb2wiLAorICAgICIuLi8uLi9ydGNfYmFzZTpkZXByZWNhdGlvbiIsCisg
ICAgIi4uLy4uL3J0Y19iYXNlOm1hY3JvbWFnaWMiLAorICAgICIuLi8uLi9ydGNfYmFzZTpwdHJf
dXRpbCIsCisgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4v
Li4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2Vp
bC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KK30KKwogcnRjX3N0YXRpY19saWJyYXJ5
KCJhdWRpb19wcm9jZXNzaW5nIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBjb25maWdz
ICs9IFsgIjphcG1fZGVidWdfZHVtcCIgXQpAQCAtNTUsMTAgKzkwLDYgQEAgcnRjX3N0YXRpY19s
aWJyYXJ5KCJhdWRpb19wcm9jZXNzaW5nIikgewogICAgICJnYWluX2NvbnRyb2xsZXIyLmgiLAog
ICAgICJpbmNsdWRlL2FlY19kdW1wLmNjIiwKICAgICAiaW5jbHVkZS9hZWNfZHVtcC5oIiwKLSAg
ICAiaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmNjIiwKLSAgICAiaW5jbHVkZS9hdWRpb19wcm9j
ZXNzaW5nLmgiLAotICAgICJpbmNsdWRlL2NvbmZpZy5jYyIsCi0gICAgImluY2x1ZGUvY29uZmln
LmgiLAogICAgICJsZXZlbF9lc3RpbWF0b3JfaW1wbC5jYyIsCiAgICAgImxldmVsX2VzdGltYXRv
cl9pbXBsLmgiLAogICAgICJsb3dfY3V0X2ZpbHRlci5jYyIsCkBAIC05NSwxMSArMTI2LDEzIEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiYXVkaW9fcHJvY2Vzc2luZyIpIHsKIAogICBkZWZpbmVzID0g
W10KICAgZGVwcyA9IFsKKyAgICAiOmFwaSIsCiAgICAgIjphcG1fbG9nZ2luZyIsCiAgICAgIjph
dWRpb19mcmFtZV92aWV3IiwKICAgICAiOmF1ZGlvX2dlbmVyYXRvcl9pbnRlcmZhY2UiLAogICAg
ICI6YXVkaW9fcHJvY2Vzc2luZ19jIiwKICAgICAiOmF1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGlj
cyIsCisgICAgIjpjb25maWciLAogICAgICI6Z2Fpbl9jb250cm9sX2ludGVyZmFjZSIsCiAgICAg
Ii4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCkBAIC0x
MTUsNiArMTQ4LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJhdWRpb19wcm9jZXNzaW5nIikgewog
ICAgICIuLi8uLi9ydGNfYmFzZTpzYWZlX21pbm1heCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnNh
bml0aXplciIsCiAgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTphcmNoIiwKKyAgICAiLi4vLi4v
cnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6
Y3B1X2ZlYXR1cmVzX2FwaSIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlh
bCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKQEAgLTE2Miw2ICsxOTYs
NyBAQCBydGNfc291cmNlX3NldCgiYXVkaW9fcHJvY2Vzc2luZ19zdGF0aXN0aWNzIikgewogICAg
ICJpbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcy5oIiwKICAgXQogICBkZXBzID0g
WworICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgICAgIi8vdGhpcmRf
cGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQpAQCAtMjk0LDYg
KzMyOSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJhcG1fbG9nZ2luZyIpIHsKICAgZGVwcyA9IFsKICAg
ICAiLi4vLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9jb21tb25fYXVkaW86Y29tbW9u
X2F1ZGlvIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jh
c2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi9ydGNfYmFzZTpzdHJpbmd1dGlscyIs
CiAgIF0KQEAgLTMwNyw2ICszNDMsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAg
ICJpbmNsdWRlL21vY2tfYXVkaW9fcHJvY2Vzc2luZy5oIiwKICAgICBdCiAgICAgZGVwcyA9IFsK
KyAgICAgICI6YXBpIiwKICAgICAgICI6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAiOmF1ZGlv
X3Byb2Nlc3Npbmdfc3RhdGlzdGljcyIsCiAgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQi
LApAQCAtMzU4LDEwICszOTUsMTIgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAKICAgICBk
ZXBzID0gWwogICAgICAgIjphbmFsb2dfbWljX3NpbXVsYXRpb24iLAorICAgICAgIjphcGkiLAog
ICAgICAgIjphcG1fbG9nZ2luZyIsCiAgICAgICAiOmF1ZGlvX2ZyYW1lX3ZpZXciLAogICAgICAg
IjphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICI6YXVkaW9wcm9jX3Rlc3RfdXRpbHMiLAorICAg
ICAgIjpjb25maWciLAogICAgICAgIjpmaWxlX2F1ZGlvX2dlbmVyYXRvcl91bml0dGVzdHMiLAog
ICAgICAgIjptb2NrcyIsCiAgICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCkBAIC0zNzUsNiAr
NDE0LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6
cHJvdG9idWZfdXRpbHMiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAg
ICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgICAiLi4vLi4vcnRjX2Jh
c2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfbWlu
bWF4IiwKICAgICAgICIuLi8uLi9ydGNfYmFzZS9zeXN0ZW06YXJjaCIsCiAgICAgICAiLi4vLi4v
cnRjX2Jhc2Uvc3lzdGVtOmZpbGVfd3JhcHBlciIsCkBAIC0zOTEsNiArNDMxLDggQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiYWdjMjpiaXF1YWRfZmlsdGVyX3VuaXR0ZXN0cyIs
CiAgICAgICAiYWdjMjpmaXhlZF9kaWdpdGFsX3VuaXR0ZXN0cyIsCiAgICAgICAiYWdjMjpub2lz
ZV9lc3RpbWF0b3JfdW5pdHRlc3RzIiwKKyAgICAgICJhZ2MyOnJubl92YWRfd2l0aF9sZXZlbF91
bml0dGVzdHMiLAorICAgICAgImFnYzI6dGVzdF91dGlscyIsCiAgICAgICAiYWdjMi9ybm5fdmFk
OnVuaXR0ZXN0cyIsCiAgICAgICAidGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2g6dW5pdHRlc3Qi
LAogICAgICAgInV0aWxpdHk6YmxvY2tfbWVhbl9jYWxjdWxhdG9yX3VuaXR0ZXN0IiwKQEAgLTQx
OCw3ICs0NjAsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICAgIjphdWRpb3By
b2NfdW5pdHRlc3RfcHJvdG8iLAogICAgICAgICAiOnJ1bnRpbWVfc2V0dGluZ3NfcHJvdG9idWZf
dXRpbHMiLAogICAgICAgICAiLi4vLi4vYXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIsCi0gICAg
ICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAgICIuLi8u
Li9ydGNfYmFzZTpydGNfdGFza19xdWV1ZSIsCiAgICAgICAgICJhZWNfZHVtcCIsCiAgICAgICAg
ICJhZWNfZHVtcDphZWNfZHVtcF91bml0dGVzdHMiLApAQCAtNDgyLDYgKzUyMyw3IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgIF0KIAogICAgIGRlcHMgPSBbCisgICAgICAiOmFwaSIs
CiAgICAgICAiOmF1ZGlvX2dlbmVyYXRvcl9mYWN0b3J5IiwKICAgICAgICI6YXVkaW9fcHJvY2Vz
c2luZyIsCiAgICAgICAiOmZpbGVfYXVkaW9fZ2VuZXJhdG9yIiwKQEAgLTUxMiw2ICs1NTQsNyBA
QCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsK
ICAgICBydGNfc291cmNlX3NldCgiYXVkaW9wcm9jX2ZfaW1wbCIpIHsKICAgICAgIHRlc3Rvbmx5
ID0gdHJ1ZQorICAgICAgY29uZmlncyArPSBbICI6YXBtX2RlYnVnX2R1bXAiIF0KICAgICAgIHNv
dXJjZXMgPSBbCiAgICAgICAgICJ0ZXN0L2FlY19kdW1wX2Jhc2VkX3NpbXVsYXRvci5jYyIsCiAg
ICAgICAgICJ0ZXN0L2FlY19kdW1wX2Jhc2VkX3NpbXVsYXRvci5oIiwKQEAgLTUyNSwxMSArNTY4
LDE0IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogCiAgICAgICBkZXBzID0gWwogICAgICAg
ICAiOmFuYWxvZ19taWNfc2ltdWxhdGlvbiIsCisgICAgICAgICI6YXBpIiwKKyAgICAgICAgIjph
cG1fbG9nZ2luZyIsCiAgICAgICAgICI6YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAgICI6YXVk
aW9wcm9jX2RlYnVnX3Byb3RvIiwKICAgICAgICAgIjphdWRpb3Byb2NfcHJvdG9idWZfdXRpbHMi
LAogICAgICAgICAiOmF1ZGlvcHJvY190ZXN0X3V0aWxzIiwKICAgICAgICAgIjpydW50aW1lX3Nl
dHRpbmdzX3Byb3RvYnVmX3V0aWxzIiwKKyAgICAgICAgIi4uLy4uL2FwaS9hdWRpbzphZWMzX2Nv
bmZpZ19qc29uIiwKICAgICAgICAgIi4uLy4uL2FwaS9hdWRpbzphZWMzX2ZhY3RvcnkiLAogICAg
ICAgICAiLi4vLi4vY29tbW9uX2F1ZGlvOmNvbW1vbl9hdWRpbyIsCiAgICAgICAgICIuLi8uLi9y
dGNfYmFzZTpjaGVja3MiLApAQCAtNTQ0LDYgKzU5MCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0
cykgewogICAgICAgICAiYWVjX2R1bXA6YWVjX2R1bXBfaW1wbCIsCiAgICAgICAgICIvL3Rlc3Rp
bmcvZ3Rlc3QiLAogICAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5
IiwKKyAgICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAg
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICAg
ICAgXQogICAgIH0gICMgYXVkaW9wcm9jX2ZfaW1wbApAQCAtNTUzLDYgKzYwMCw3IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgICAidGVzdC9hdWRpb3Byb2NfZmxvYXRfbWFpbi5j
YyIsCiAgICAgICBdCiAgICAgICBkZXBzID0gWworICAgICAgICAiOmFwaSIsCiAgICAgICAgICI6
YXVkaW9fcHJvY2Vzc2luZyIsCiAgICAgICAgICIuLi8uLi9hcGk6YXVkaW9wcm9jX2ZfYXBpIiwK
ICAgICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKQEAgLTU3OCw2ICs2
MjYsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBdCiAKICAgICBkZXBzID0gWwor
ICAgICAgIjphcGkiLAogICAgICAgIjphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICIuLi8uLi9h
cGk6YXJyYXlfdmlldyIsCiAgICAgICAiLi4vLi4vYXBpL2F1ZGlvOmF1ZGlvX2ZyYW1lX2FwaSIs
CkBAIC02NjIsNiArNzExLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICBdCiAK
ICAgICAgIGRlcHMgPSBbCisgICAgICAgICI6YXBpIiwKICAgICAgICAgIjphdWRpb19wcm9jZXNz
aW5nIiwKICAgICAgICAgIjphdWRpb3Byb2NfZGVidWdfcHJvdG8iLAogICAgICAgICAiOmF1ZGlv
cHJvY19wcm90b2J1Zl91dGlscyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19jb3Jl
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfY29yZS5jYwppbmRleCA1YThjZjhmNThiNjAxZjFhYjI1
ZTQ5OWUzMmE3ZDFhMzdlYTdiODdmLi42MmI4YWQwZjdjMDcwOWU1YzM0YjdmNjQ2Mzg1YzAwN2I5
YTA4OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19jb3JlLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMvYWVjX2NvcmUuY2MKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKwogZXh0ZXJuICJDIiB7CiAjaW5j
bHVkZSAiY29tbW9uX2F1ZGlvL3JpbmdfYnVmZmVyLmgiCiB9CkBAIC0yOSw3ICszMCw2IEBAIGV4
dGVybiAiQyIgewogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMvYWVjX2Nv
cmVfb3B0aW1pemVkX21ldGhvZHMuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvdXRpbGl0eS9kZWxheV9lc3RpbWF0b3Jfd3JhcHBlci5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9hcmNoLmgiCiAjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2ZlYXR1cmVzX3dyYXBwZXIuaCIKICNp
bmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjL2FlY19yZXNhbXBsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19yZXNhbXBs
ZXIuY2MKaW5kZXggMjg1MWMwYjZkZDU3NWQ2OTY4Yjc2NjY5ZGIyNWVlNDIwMDU3NzJmNi4uMjEw
YzJiZWJlMGUyMTEzYWQwZTgwOGQyNGYyM2I5YmM4MDg2MDhhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYy9hZWNfcmVzYW1wbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMvYWVjX3Jlc2FtcGxl
ci5jYwpAQCAtMTQsNyArMTQsNiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYy9hZWNfcmVzYW1wbGVyLmgiCiAKLSNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8
c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMvYWVjX3Jlc2FtcGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfcmVzYW1wbGVyLmgKaW5kZXgg
MTMwZjdlYzdjNzY2NDdkMWNlODM2ZmMyMzJhNDE3NzZmZWVhZWRlYi4uYTExMmM0MzRkMGJjOTFi
YTFhOWQ1NmViZjFhZTMxYjM2MThmMGZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYy9hZWNf
cmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfcmVzYW1wbGVyLmgKQEAgLTExLDYg
KzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQ19BRUNfUkVTQU1Q
TEVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUNfQUVDX1JFU0FNUExF
Ul9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjL2FlY19jb3JlLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9CVUlMRC5nbgppbmRl
eCBlNjMxNzMyYTQ1MzlhYjEzNjJmMTViOTk4YmQ1YzExY2VmODI3MzJjLi4xODliY2ZkNzEyNTUz
MzliYzdkYmY3N2YwZjM3MGNlYmIzMWY0ZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9C
VUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9CVUlMRC5nbgpAQCAtMjAsMTYgKzIwLDIxIEBA
IHJ0Y19zdGF0aWNfbGlicmFyeSgiYWVjMyIpIHsKICAgICAiYWVjM19mZnQuaCIsCiAgICAgImFl
Y19zdGF0ZS5jYyIsCiAgICAgImFlY19zdGF0ZS5oIiwKKyAgICAiYXBpX2NhbGxfaml0dGVyX21l
dHJpY3MuY2MiLAorICAgICJhcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5oIiwKICAgICAiYmxvY2tf
ZGVsYXlfYnVmZmVyLmNjIiwKICAgICAiYmxvY2tfZGVsYXlfYnVmZmVyLmgiLAogICAgICJibG9j
a19mcmFtZXIuY2MiLAogICAgICJibG9ja19mcmFtZXIuaCIsCiAgICAgImJsb2NrX3Byb2Nlc3Nv
ci5jYyIsCiAgICAgImJsb2NrX3Byb2Nlc3Nvci5oIiwKKyAgICAiYmxvY2tfcHJvY2Vzc29yMi5j
YyIsCiAgICAgImJsb2NrX3Byb2Nlc3Nvcl9tZXRyaWNzLmNjIiwKICAgICAiYmxvY2tfcHJvY2Vz
c29yX21ldHJpY3MuaCIsCiAgICAgImNhc2NhZGVkX2JpcXVhZF9maWx0ZXIuY2MiLAogICAgICJj
YXNjYWRlZF9iaXF1YWRfZmlsdGVyLmgiLAorICAgICJjbG9ja2RyaWZ0X2RldGVjdG9yLmNjIiwK
KyAgICAiY2xvY2tkcmlmdF9kZXRlY3Rvci5oIiwKICAgICAiY29tZm9ydF9ub2lzZV9nZW5lcmF0
b3IuY2MiLAogICAgICJjb21mb3J0X25vaXNlX2dlbmVyYXRvci5oIiwKICAgICAiZGVjaW1hdG9y
LmNjIiwKQEAgLTc2LDEwICs4MSwxNCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImFlYzMiKSB7CiAg
ICAgInJlbmRlcl9idWZmZXIuaCIsCiAgICAgInJlbmRlcl9kZWxheV9idWZmZXIuY2MiLAogICAg
ICJyZW5kZXJfZGVsYXlfYnVmZmVyLmgiLAorICAgICJyZW5kZXJfZGVsYXlfYnVmZmVyMi5jYyIs
CiAgICAgInJlbmRlcl9kZWxheV9jb250cm9sbGVyLmNjIiwKICAgICAicmVuZGVyX2RlbGF5X2Nv
bnRyb2xsZXIuaCIsCisgICAgInJlbmRlcl9kZWxheV9jb250cm9sbGVyMi5jYyIsCiAgICAgInJl
bmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3MuY2MiLAogICAgICJyZW5kZXJfZGVsYXlfY29u
dHJvbGxlcl9tZXRyaWNzLmgiLAorICAgICJyZW5kZXJfcmV2ZXJiX21vZGVsLmNjIiwKKyAgICAi
cmVuZGVyX3JldmVyYl9tb2RlbC5oIiwKICAgICAicmVuZGVyX3NpZ25hbF9hbmFseXplci5jYyIs
CiAgICAgInJlbmRlcl9zaWduYWxfYW5hbHl6ZXIuaCIsCiAgICAgInJlc2lkdWFsX2VjaG9fZXN0
aW1hdG9yLmNjIiwKQEAgLTk2LDYgKzEwNSw4IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiYWVjMyIp
IHsKICAgICAicmV2ZXJiX21vZGVsX2ZhbGxiYWNrLmgiLAogICAgICJzaGFkb3dfZmlsdGVyX3Vw
ZGF0ZV9nYWluLmNjIiwKICAgICAic2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbi5oIiwKKyAgICAi
c2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvci5jYyIsCisgICAgInNpZ25hbF9kZXBlbmRl
bnRfZXJsZV9lc3RpbWF0b3IuaCIsCiAgICAgInNrZXdfZXN0aW1hdG9yLmNjIiwKICAgICAic2tl
d19lc3RpbWF0b3IuaCIsCiAgICAgInN0YXRpb25hcml0eV9lc3RpbWF0b3IuY2MiLApAQCAtMTgz
LDExICsxOTQsMTMgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAgICJhZGFwdGl2
ZV9maXJfZmlsdGVyX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgImFlYzNfZmZ0X3VuaXR0ZXN0LmNj
IiwKICAgICAgICAgImFlY19zdGF0ZV91bml0dGVzdC5jYyIsCisgICAgICAgICJhcGlfY2FsbF9q
aXR0ZXJfbWV0cmljc191bml0dGVzdC5jYyIsCiAgICAgICAgICJibG9ja19kZWxheV9idWZmZXJf
dW5pdHRlc3QuY2MiLAogICAgICAgICAiYmxvY2tfZnJhbWVyX3VuaXR0ZXN0LmNjIiwKICAgICAg
ICAgImJsb2NrX3Byb2Nlc3Nvcl9tZXRyaWNzX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgImJsb2Nr
X3Byb2Nlc3Nvcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJjYXNjYWRlZF9iaXF1YWRfZmlsdGVy
X3VuaXR0ZXN0LmNjIiwKKyAgICAgICAgImNsb2NrZHJpZnRfZGV0ZWN0b3JfdW5pdHRlc3QuY2Mi
LAogICAgICAgICAiY29tZm9ydF9ub2lzZV9nZW5lcmF0b3JfdW5pdHRlc3QuY2MiLAogICAgICAg
ICAiZGVjaW1hdG9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgImVjaG9fY2FuY2VsbGVyM191bml0
dGVzdC5jYyIsCkBAIC0yMTEsNiArMjI0LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAg
ICAgICAgICJyZXNpZHVhbF9lY2hvX2VzdGltYXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJy
ZXZlcmJfbW9kZWxfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgInNoYWRvd19maWx0
ZXJfdXBkYXRlX2dhaW5fdW5pdHRlc3QuY2MiLAorICAgICAgICAic2lnbmFsX2RlcGVuZGVudF9l
cmxlX2VzdGltYXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJza2V3X2VzdGltYXRvcl91bml0
dGVzdC5jYyIsCiAgICAgICAgICJzdWJ0cmFjdG9yX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgInN1
cHByZXNzaW9uX2ZpbHRlcl91bml0dGVzdC5jYyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9hZGFwdGl2ZV9maXJfZmlsdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWRhcHRpdmVfZmlyX2Zp
bHRlci5jYwppbmRleCA5YTFlODExZmNmZTNjZjUyZWE5YmI5ODY4ZjkxZjkyN2Q4ZGU3Njg4Li4z
YWIxZWJjYzRiOWRlYmNkOTE5ZWFhYmIyZGIzZmQwOGMzYTNkOTUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9hZGFwdGl2ZV9maXJfZmlsdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Fk
YXB0aXZlX2Zpcl9maWx0ZXIuY2MKQEAgLTI0LDcgKzI0LDcgQEAKIAogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9kYXRhLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CkBAIC00MTcsMTIgKzQxNywyMSBAQCB2b2lkIEFwcGx5RmlsdGVyX1NTRTIoY29uc3QgUmVuZGVy
QnVmZmVyJiByZW5kZXJfYnVmZmVyLAogCiB9ICAvLyBuYW1lc3BhY2UgYWVjMwogCituYW1lc3Bh
Y2UgeworCitib29sIEVuYWJsZVBhcnRpYWxGaWx0ZXJSZXNldCgpIHsKKyAgcmV0dXJuICFmaWVs
ZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM1BhcnRpYWxGaWx0ZXJSZXNldEtpbGxTd2l0
Y2giKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKIEFkYXB0aXZlRmlyRmlsdGVyOjpBZGFwdGl2
ZUZpckZpbHRlcihzaXplX3QgbWF4X3NpemVfcGFydGl0aW9ucywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5pdGlhbF9zaXplX3BhcnRpdGlvbnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemVfY2hhbmdlX2R1cmF0
aW9uX2Jsb2NrcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZWMzT3B0
aW1pemF0aW9uIG9wdGltaXphdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBcG1EYXRhRHVtcGVyKiBkYXRhX2R1bXBlcikKICAgICA6IGRhdGFfZHVtcGVyXyhkYXRh
X2R1bXBlciksCisgICAgICB1c2VfcGFydGlhbF9maWx0ZXJfcmVzZXRfKEVuYWJsZVBhcnRpYWxG
aWx0ZXJSZXNldCgpKSwKICAgICAgIGZmdF8oKSwKICAgICAgIG9wdGltaXphdGlvbl8ob3B0aW1p
emF0aW9uKSwKICAgICAgIG1heF9zaXplX3BhcnRpdGlvbnNfKG1heF9zaXplX3BhcnRpdGlvbnMp
LApAQCAtNDU1LDIwICs0NjQsMjIgQEAgQWRhcHRpdmVGaXJGaWx0ZXI6On5BZGFwdGl2ZUZpckZp
bHRlcigpID0gZGVmYXVsdDsKIHZvaWQgQWRhcHRpdmVGaXJGaWx0ZXI6OkhhbmRsZUVjaG9QYXRo
Q2hhbmdlKCkgewogICBzaXplX3QgY3VycmVudF9oX3NpemUgPSBoXy5zaXplKCk7CiAgIGhfLnJl
c2l6ZShHZXRUaW1lRG9tYWluTGVuZ3RoKG1heF9zaXplX3BhcnRpdGlvbnNfKSk7Ci0gIHN0ZDo6
ZmlsbChoXy5iZWdpbigpLCBoXy5lbmQoKSwgMC5mKTsKKyAgY29uc3Qgc2l6ZV90IGJlZ2luX2Nv
ZWZmZmljaWVudCA9CisgICAgICB1c2VfcGFydGlhbF9maWx0ZXJfcmVzZXRfID8gY3VycmVudF9o
X3NpemUgOiAwOworICBzdGQ6OmZpbGwoaF8uYmVnaW4oKSArIGJlZ2luX2NvZWZmZmljaWVudCwg
aF8uZW5kKCksIDAuZik7CiAgIGhfLnJlc2l6ZShjdXJyZW50X2hfc2l6ZSk7CiAKICAgc2l6ZV90
IGN1cnJlbnRfc2l6ZV9wYXJ0aXRpb25zID0gSF8uc2l6ZSgpOwogICBIXy5yZXNpemUobWF4X3Np
emVfcGFydGl0aW9uc18pOwotICBmb3IgKGF1dG8mIEhfaiA6IEhfKSB7Ci0gICAgSF9qLkNsZWFy
KCk7Ci0gIH0KLSAgSF8ucmVzaXplKGN1cnJlbnRfc2l6ZV9wYXJ0aXRpb25zKTsKLQogICBIMl8u
cmVzaXplKG1heF9zaXplX3BhcnRpdGlvbnNfKTsKLSAgZm9yIChhdXRvJiBIMl9rIDogSDJfKSB7
Ci0gICAgSDJfay5maWxsKDAuZik7CisKKyAgY29uc3Qgc2l6ZV90IGJlZ2luX3BhcnRpdGlvbiA9
CisgICAgICB1c2VfcGFydGlhbF9maWx0ZXJfcmVzZXRfID8gY3VycmVudF9zaXplX3BhcnRpdGlv
bnMgOiAwOworICBmb3IgKHNpemVfdCBrID0gYmVnaW5fcGFydGl0aW9uOyBrIDwgbWF4X3NpemVf
cGFydGl0aW9uc187ICsraykgeworICAgIEhfW2tdLkNsZWFyKCk7CisgICAgSDJfW2tdLmZpbGwo
MC5mKTsKICAgfQorICBIXy5yZXNpemUoY3VycmVudF9zaXplX3BhcnRpdGlvbnMpOwogICBIMl8u
cmVzaXplKGN1cnJlbnRfc2l6ZV9wYXJ0aXRpb25zKTsKIAogICBlcmxfLmZpbGwoMC5mKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FkYXB0aXZlX2Zpcl9maWx0ZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2FkYXB0aXZlX2Zpcl9maWx0ZXIuaAppbmRleCA1ZGZiNDY2MGZhMjFjMDM3NWNiYmE1
ZTJjOTEwNTQ5YmZhMDA3OGI0Li43YzgzMmE2Y2QyM2E0MDVjNDZmOGI5ODVhNTYxOWUyMzYwODBh
ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZGFwdGl2ZV9maXJfZmlsdGVyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvYWRhcHRpdmVfZmlyX2ZpbHRlci5oCkBAIC0xMSw4ICsxMSw4IEBA
CiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0FEQVBUSVZFX0ZJUl9GSUxU
RVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQURBUFRJVkVfRklS
X0ZJTFRFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YXJyYXk+Ci0jaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92
aWV3LmgiCkBAIC0xNjQsNiArMTY0LDcgQEAgY2xhc3MgQWRhcHRpdmVGaXJGaWx0ZXIgewogICB2
b2lkIFVwZGF0ZVNpemUoKTsKIAogICBBcG1EYXRhRHVtcGVyKiBjb25zdCBkYXRhX2R1bXBlcl87
CisgIGNvbnN0IGJvb2wgdXNlX3BhcnRpYWxfZmlsdGVyX3Jlc2V0XzsKICAgY29uc3QgQWVjM0Zm
dCBmZnRfOwogICBjb25zdCBBZWMzT3B0aW1pemF0aW9uIG9wdGltaXphdGlvbl87CiAgIGNvbnN0
IHNpemVfdCBtYXhfc2l6ZV9wYXJ0aXRpb25zXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2FlYzNfY29tbW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uY2MKaW5kZXggYzM3
NGEzNTE3ZDYwZTM3YTc5OTFkNGVlOTY0YjEwMGVkNzAwMWQ2NC4uYWViODQ4YTU3MDBhNjQ4MjBk
ZGNjZDRmMzNmZjkzMzA1YjU2MWY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19j
b21tb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uY2MKQEAgLTEwLDEwICsx
MCwxMSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19j
b21tb24uaCIKIAotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9mZWF0dXJl
c193cmFwcGVyLmgiCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vYXJjaC5oIgorI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9mZWF0dXJlc193cmFwcGVyLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2ZmdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2FlYzNfZmZ0LmNjCmluZGV4IGUyOTQzNGQzMDAyZGRiZjIxNDQzMjkyYmRm
ZTE5YTczMjhmYWIxMGIuLjE4MzIxMDE4NTUyNDIwMzBhZTBhOWJlNjI1ZTZiY2RkMWQ2MzllNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfZmZ0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FlYzNfZmZ0LmNjCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRlIDxhbGdvcml0aG0+
CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4KIAogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2Zm
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuaAppbmRleCBiNzAwMjIyNTVkOTU2NGQzMzJm
ZGMyYTQ2YTkxYWQ5MWFhM2U3MzYxLi42Y2Q2NDlhZjhmNGM5NmE0MjEzMzQzNzdjYmE5NTU2ZjQ0
MzE1ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2ZmdC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2FlYzNfZmZ0LmgKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9kYXRhLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3V0aWxpdHkvb291cmFfZmZ0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlY19zdGF0ZS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2FlY19zdGF0ZS5jYwppbmRleCA1ZTU4YTFjMjc5YzAzMWFiZjYyOWZmMzYw
OTM0ODU4ZTFlMTM0ODViLi5kNWYyNTZiMWMxMjU2ZTlmZWYyNzQ5MGQ1MDgwZjI5MmViYmQ4YWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYWVjX3N0YXRlLmNjCkBAIC0xMSw3ICsxMSw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlLmgiCiAKICNpbmNsdWRlIDxtYXRoLmg+Ci0K
KyNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bnVtZXJpYz4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKQEAgLTMwLDYgKzMwLDIyIEBAIGJvb2wgRW5hYmxlRXJsZVJlc2V0c0F0R2FpbkNoYW5n
ZXMoKSB7CiAgIHJldHVybiAhZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNSZXNl
dEVybGVBdEdhaW5DaGFuZ2VzS2lsbFN3aXRjaCIpOwogfQogCitib29sIFVzZUxlZ2FjeUZpbHRl
clF1YWxpdHlTdGF0ZSgpIHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJU
Qy1BZWMzRmlsdGVyUXVhbGl0eVN0YXRlS2lsbFN3aXRjaCIpOworfQorCitib29sIEVuYWJsZUxl
Z2FjeVNhdHVyYXRpb25CZWhhdmlvcigpIHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJs
ZWQoIldlYlJUQy1BZWMzTmV3U2F0dXJhdGlvbkJlaGF2aW9yS2lsbFN3aXRjaCIpOworfQorCiti
b29sIFVzZVN1cHByZXNzaW9uR2FpbkxpbWl0ZXIoKSB7CisgIHJldHVybiBmaWVsZF90cmlhbDo6
SXNFbmFibGVkKCJXZWJSVEMtQWVjM0dhaW5MaW1pdGVyRGVhY3RpdmF0aW9uS2lsbFN3aXRjaCIp
OworfQorYm9vbCBFbmFibGVFcmxlVXBkYXRlc0R1cmluZ1JldmVyYigpIHsKKyAgcmV0dXJuICFm
aWVsZF90cmlhbDo6SXNFbmFibGVkKAorICAgICAgIldlYlJUQy1BZWMzRW5hYmxlRXJsZVVwZGF0
ZXNEdXJpbmdSZXZlcmJLaWxsU3dpdGNoIik7Cit9CisKIGNvbnN0ZXhwciBzaXplX3Qga0Jsb2Nr
c1NpbmNlQ29udmVyZ2VuY2VkRmlsdGVySW5pdCA9IDEwMDAwOwogY29uc3RleHByIHNpemVfdCBr
QmxvY2tzU2luY2VDb25zaXN0ZW50RXN0aW1hdGVJbml0ID0gMTAwMDA7CiAKQEAgLTUyLDE4ICs2
OCwxMCBAQCB2b2lkIEFlY1N0YXRlOjpHZXRSZXNpZHVhbEVjaG9TY2FsaW5nKAogfQogCiBhYnNs
OjpvcHRpb25hbDxmbG9hdD4gQWVjU3RhdGU6OkVybGVVbmNlcnRhaW50eSgpIGNvbnN0IHsKLSAg
Ym9vbCBmaWx0ZXJfaGFzX2hhZF90aW1lX3RvX2NvbnZlcmdlOwotICBpZiAoY29uZmlnXy5maWx0
ZXIuY29uc2VydmF0aXZlX2luaXRpYWxfcGhhc2UpIHsKLSAgICBmaWx0ZXJfaGFzX2hhZF90aW1l
X3RvX2NvbnZlcmdlID0KLSAgICAgICAgc3Ryb25nX25vdF9zYXR1cmF0ZWRfcmVuZGVyX2Jsb2Nr
c18gPj0gMS41ZiAqIGtOdW1CbG9ja3NQZXJTZWNvbmQ7Ci0gIH0gZWxzZSB7Ci0gICAgZmlsdGVy
X2hhc19oYWRfdGltZV90b19jb252ZXJnZSA9Ci0gICAgICAgIHN0cm9uZ19ub3Rfc2F0dXJhdGVk
X3JlbmRlcl9ibG9ja3NfID49IDAuOGYgKiBrTnVtQmxvY2tzUGVyU2Vjb25kOwotICB9Ci0KLSAg
aWYgKCFmaWx0ZXJfaGFzX2hhZF90aW1lX3RvX2NvbnZlcmdlKSB7CisgIGlmIChTYXR1cmF0ZWRF
Y2hvKCkgJiYgdXNlX2xlZ2FjeV9zYXR1cmF0aW9uX2JlaGF2aW9yXykgewogICAgIHJldHVybiAx
LmY7CiAgIH0KKwogICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKIH0KIApAQCAtNzEsMjIgKzc5LDI0
IEBAIEFlY1N0YXRlOjpBZWNTdGF0ZShjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmln
KQogICAgIDogZGF0YV9kdW1wZXJfKAogICAgICAgICAgIG5ldyBBcG1EYXRhRHVtcGVyKHJ0Yzo6
QXRvbWljT3BzOjpJbmNyZW1lbnQoJmluc3RhbmNlX2NvdW50XykpKSwKICAgICAgIGNvbmZpZ18o
Y29uZmlnKSwKKyAgICAgIHVzZV9sZWdhY3lfc2F0dXJhdGlvbl9iZWhhdmlvcl8oRW5hYmxlTGVn
YWN5U2F0dXJhdGlvbkJlaGF2aW9yKCkpLAorICAgICAgZW5hYmxlX2VybGVfcmVzZXRzX2F0X2dh
aW5fY2hhbmdlc18oRW5hYmxlRXJsZVJlc2V0c0F0R2FpbkNoYW5nZXMoKSksCisgICAgICBlbmFi
bGVfZXJsZV91cGRhdGVzX2R1cmluZ19yZXZlcmJfKEVuYWJsZUVybGVVcGRhdGVzRHVyaW5nUmV2
ZXJiKCkpLAorICAgICAgdXNlX2xlZ2FjeV9maWx0ZXJfcXVhbGl0eV8oVXNlTGVnYWN5RmlsdGVy
UXVhbGl0eVN0YXRlKCkpLAorICAgICAgdXNlX3N1cHByZXNzb3JfZ2Fpbl9saW1pdGVyXyhVc2VT
dXBwcmVzc2lvbkdhaW5MaW1pdGVyKCkpLAogICAgICAgaW5pdGlhbF9zdGF0ZV8oY29uZmlnXyks
CiAgICAgICBkZWxheV9zdGF0ZV8oY29uZmlnXyksCiAgICAgICB0cmFuc3BhcmVudF9zdGF0ZV8o
Y29uZmlnXyksCiAgICAgICBmaWx0ZXJfcXVhbGl0eV9zdGF0ZV8oY29uZmlnXyksCi0gICAgICBz
YXR1cmF0aW9uX2RldGVjdG9yXyhjb25maWdfKSwKKyAgICAgIGxlZ2FjeV9maWx0ZXJfcXVhbGl0
eV9zdGF0ZV8oY29uZmlnXyksCisgICAgICBsZWdhY3lfc2F0dXJhdGlvbl9kZXRlY3Rvcl8oY29u
ZmlnXyksCiAgICAgICBlcmxfZXN0aW1hdG9yXygyICoga051bUJsb2Nrc1BlclNlY29uZCksCi0g
ICAgICBlcmxlX2VzdGltYXRvcl8oMiAqIGtOdW1CbG9ja3NQZXJTZWNvbmQsCi0gICAgICAgICAg
ICAgICAgICAgICAgY29uZmlnXy5lcmxlLm1pbiwKLSAgICAgICAgICAgICAgICAgICAgICBjb25m
aWdfLmVybGUubWF4X2wsCi0gICAgICAgICAgICAgICAgICAgICAgY29uZmlnXy5lcmxlLm1heF9o
KSwKKyAgICAgIGVybGVfZXN0aW1hdG9yXygyICoga051bUJsb2Nrc1BlclNlY29uZCwgY29uZmln
XyksCiAgICAgICBzdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXJfKGNvbmZpZ18pLAogICAgICAgZmls
dGVyX2FuYWx5emVyXyhjb25maWdfKSwKICAgICAgIGVjaG9fYXVkaWJpbGl0eV8oCiAgICAgICAg
ICAgY29uZmlnXy5lY2hvX2F1ZGliaWxpdHkudXNlX3N0YXRpb25hcml0eV9wcm9wZXJ0aWVzX2F0
X2luaXQpLAotICAgICAgcmV2ZXJiX21vZGVsX2VzdGltYXRvcl8oY29uZmlnXyksCi0gICAgICBl
bmFibGVfZXJsZV9yZXNldHNfYXRfZ2Fpbl9jaGFuZ2VzXyhFbmFibGVFcmxlUmVzZXRzQXRHYWlu
Q2hhbmdlcygpKSB7fQorICAgICAgcmV2ZXJiX21vZGVsX2VzdGltYXRvcl8oY29uZmlnXykge30K
IAogQWVjU3RhdGU6On5BZWNTdGF0ZSgpID0gZGVmYXVsdDsKIApAQCAtOTcsMTMgKzEwNywyMSBA
QCB2b2lkIEFlY1N0YXRlOjpIYW5kbGVFY2hvUGF0aENoYW5nZSgKICAgICBjYXB0dXJlX3NpZ25h
bF9zYXR1cmF0aW9uXyA9IGZhbHNlOwogICAgIHN0cm9uZ19ub3Rfc2F0dXJhdGVkX3JlbmRlcl9i
bG9ja3NfID0gMDsKICAgICBibG9ja3Nfd2l0aF9hY3RpdmVfcmVuZGVyXyA9IDA7Ci0gICAgc3Vw
cHJlc3Npb25fZ2Fpbl9saW1pdGVyXy5SZXNldCgpOworICAgIGlmICh1c2Vfc3VwcHJlc3Nvcl9n
YWluX2xpbWl0ZXJfKSB7CisgICAgICBzdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXJfLlJlc2V0KCk7
CisgICAgfQogICAgIGluaXRpYWxfc3RhdGVfLlJlc2V0KCk7CiAgICAgdHJhbnNwYXJlbnRfc3Rh
dGVfLlJlc2V0KCk7Ci0gICAgc2F0dXJhdGlvbl9kZXRlY3Rvcl8uUmVzZXQoKTsKKyAgICBpZiAo
dXNlX2xlZ2FjeV9zYXR1cmF0aW9uX2JlaGF2aW9yXykgeworICAgICAgbGVnYWN5X3NhdHVyYXRp
b25fZGV0ZWN0b3JfLlJlc2V0KCk7CisgICAgfQogICAgIGVybGVfZXN0aW1hdG9yXy5SZXNldCh0
cnVlKTsKICAgICBlcmxfZXN0aW1hdG9yXy5SZXNldCgpOwotICAgIGZpbHRlcl9xdWFsaXR5X3N0
YXRlXy5SZXNldCgpOworICAgIGlmICh1c2VfbGVnYWN5X2ZpbHRlcl9xdWFsaXR5XykgeworICAg
ICAgbGVnYWN5X2ZpbHRlcl9xdWFsaXR5X3N0YXRlXy5SZXNldCgpOworICAgIH0gZWxzZSB7Cisg
ICAgICBmaWx0ZXJfcXVhbGl0eV9zdGF0ZV8uUmVzZXQoKTsKKyAgICB9CiAgIH07CiAKICAgLy8g
VE9ETyhwZWFoKTogUmVmaW5lIHRoZSByZXNldCBzY2hlbWUgYWNjb3JkaW5nIHRvIHRoZSB0eXBl
IG9mIGdhaW4gYW5kCkBAIC0xNTUsMzUgKzE3Myw1NiBAQCB2b2lkIEFlY1N0YXRlOjpVcGRhdGUo
CiAgIHN0cm9uZ19ub3Rfc2F0dXJhdGVkX3JlbmRlcl9ibG9ja3NfICs9CiAgICAgICBhY3RpdmVf
cmVuZGVyICYmICFTYXR1cmF0ZWRDYXB0dXJlKCkgPyAxIDogMDsKIAotICAvLyBVcGRhdGUgdGhl
IGxpbWl0IG9uIHRoZSBlY2hvIHN1cHByIGVzc2lvbiBhZnRlciBhbiBlY2hvIHBhdGggY2hhbmdl
IHRvCi0gIC8vIGF2b2lkIGFuIGluaXRpYWwgZWNobyBidXJzdC4KLSAgc3VwcHJlc3Npb25fZ2Fp
bl9saW1pdGVyXy5VcGRhdGUocmVuZGVyX2J1ZmZlci5HZXRSZW5kZXJBY3Rpdml0eSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc3BhcmVudE1vZGUoKSk7Ci0gIGlm
IChzdWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl8uQ29udmVyZ2VkRmlsdGVyKCkpIHsKLSAgICBz
dXBwcmVzc2lvbl9nYWluX2xpbWl0ZXJfLkRlYWN0aXZhdGUoKTsKKyAgaWYgKHVzZV9zdXBwcmVz
c29yX2dhaW5fbGltaXRlcl8pIHsKKyAgICAvLyBVcGRhdGUgdGhlIGxpbWl0IG9uIHRoZSBlY2hv
IHN1cHByZXNzaW9uIGFmdGVyIGFuIGVjaG8gcGF0aCBjaGFuZ2UgdG8KKyAgICAvLyBhdm9pZCBh
biBpbml0aWFsIGVjaG8gYnVyc3QuCisgICAgc3VwcHJlc3Npb25fZ2Fpbl9saW1pdGVyXy5VcGRh
dGUocmVuZGVyX2J1ZmZlci5HZXRSZW5kZXJBY3Rpdml0eSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zcGFyZW50TW9kZSgpKTsKKworICAgIGlmIChzdWJ0cmFj
dG9yX291dHB1dF9hbmFseXplcl8uQ29udmVyZ2VkRmlsdGVyKCkpIHsKKyAgICAgIHN1cHByZXNz
aW9uX2dhaW5fbGltaXRlcl8uRGVhY3RpdmF0ZSgpOworICAgIH0KICAgfQogCisgIHN0ZDo6YXJy
YXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gWDJfcmV2ZXJiOworICByZW5kZXJfcmV2ZXJi
Xy5BcHBseSgKKyAgICAgIHJlbmRlcl9idWZmZXIuR2V0U3BlY3RydW1CdWZmZXIoKSwgZGVsYXlf
c3RhdGVfLkRpcmVjdFBhdGhGaWx0ZXJEZWxheSgpLAorICAgICAgY29uZmlnXy5lcF9zdHJlbmd0
aC5yZXZlcmJfYmFzZWRfb25fcmVuZGVyID8gUmV2ZXJiRGVjYXkoKSA6IDAuZiwKKyAgICAgIFgy
X3JldmVyYik7CisKICAgaWYgKGNvbmZpZ18uZWNob19hdWRpYmlsaXR5LnVzZV9zdGF0aW9uYXJ5
X3Byb3BlcnRpZXMpIHsKICAgICAvLyBVcGRhdGUgdGhlIGVjaG8gYXVkaWJpbGl0eSBldmFsdWF0
b3IuCi0gICAgZWNob19hdWRpYmlsaXR5Xy5VcGRhdGUoCi0gICAgICAgIHJlbmRlcl9idWZmZXIs
IGRlbGF5X3N0YXRlXy5EaXJlY3RQYXRoRmlsdGVyRGVsYXkoKSwKLSAgICAgICAgZGVsYXlfc3Rh
dGVfLkV4dGVybmFsRGVsYXlSZXBvcnRlZCgpLAotICAgICAgICBjb25maWdfLmVwX3N0cmVuZ3Ro
LnJldmVyYl9iYXNlZF9vbl9yZW5kZXIgPyBSZXZlcmJEZWNheSgpIDogMC5mKTsKKyAgICBlY2hv
X2F1ZGliaWxpdHlfLlVwZGF0ZShyZW5kZXJfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlbmRlcl9yZXZlcmJfLkdldFJldmVyYkNvbnRyaWJ1dGlvblBvd2VyU3BlY3RydW0o
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheV9zdGF0ZV8uRGlyZWN0UGF0aEZp
bHRlckRlbGF5KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXlfc3RhdGVfLkV4
dGVybmFsRGVsYXlSZXBvcnRlZCgpKTsKICAgfQogCiAgIC8vIFVwZGF0ZSB0aGUgRVJMIGFuZCBF
UkxFIG1lYXN1cmVzLgogICBpZiAoaW5pdGlhbF9zdGF0ZV8uVHJhbnNpdGlvblRyaWdnZXJlZCgp
KSB7CiAgICAgZXJsZV9lc3RpbWF0b3JfLlJlc2V0KGZhbHNlKTsKICAgfQorCiAgIGNvbnN0IGF1
dG8mIFgyID0gcmVuZGVyX2J1ZmZlci5TcGVjdHJ1bShkZWxheV9zdGF0ZV8uRGlyZWN0UGF0aEZp
bHRlckRlbGF5KCkpOwotICBlcmxlX2VzdGltYXRvcl8uVXBkYXRlKFgyLCBZMiwgRTJfbWFpbiwK
KyAgY29uc3QgYXV0byYgWDJfaW5wdXRfZXJsZSA9CisgICAgICBlbmFibGVfZXJsZV91cGRhdGVz
X2R1cmluZ19yZXZlcmJfID8gWDJfcmV2ZXJiIDogWDI7CisKKyAgZXJsZV9lc3RpbWF0b3JfLlVw
ZGF0ZShyZW5kZXJfYnVmZmVyLCBhZGFwdGl2ZV9maWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFgyX2lucHV0X2VybGUsIFkyLCBFMl9tYWluLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyXy5Db252ZXJn
ZWRGaWx0ZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfLmVybGUub25zZXRf
ZGV0ZWN0aW9uKTsKKwogICBlcmxfZXN0aW1hdG9yXy5VcGRhdGUoc3VidHJhY3Rvcl9vdXRwdXRf
YW5hbHl6ZXJfLkNvbnZlcmdlZEZpbHRlcigpLCBYMiwgWTIpOwogCiAgIC8vIERldGVjdCBhbmQg
ZmxhZyBlY2hvIHNhdHVyYXRpb24uCi0gIHNhdHVyYXRpb25fZGV0ZWN0b3JfLlVwZGF0ZShhbGln
bmVkX3JlbmRlcl9ibG9jaywgU2F0dXJhdGVkQ2FwdHVyZSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRWNob1BhdGhHYWluKCkpOworICBpZiAodXNlX2xlZ2FjeV9zYXR1cmF0aW9u
X2JlaGF2aW9yXykgeworICAgIGxlZ2FjeV9zYXR1cmF0aW9uX2RldGVjdG9yXy5VcGRhdGUoYWxp
Z25lZF9yZW5kZXJfYmxvY2ssIFNhdHVyYXRlZENhcHR1cmUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVjaG9QYXRoR2FpbigpKTsKKyAgfSBlbHNlIHsKKyAgICBz
YXR1cmF0aW9uX2RldGVjdG9yXy5VcGRhdGUoYWxpZ25lZF9yZW5kZXJfYmxvY2ssIFNhdHVyYXRl
ZENhcHR1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNhYmxlTGluZWFy
RXN0aW1hdGUoKSwgc3VidHJhY3Rvcl9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVjaG9QYXRoR2FpbigpKTsKKyAgfQogCiAgIC8vIFVwZGF0ZSB0aGUgZGVjaXNpb24g
b24gd2hldGhlciB0byB1c2UgdGhlIGluaXRpYWwgc3RhdGUgcGFyYW1ldGVyIHNldC4KICAgaW5p
dGlhbF9zdGF0ZV8uVXBkYXRlKGFjdGl2ZV9yZW5kZXIsIFNhdHVyYXRlZENhcHR1cmUoKSk7CkBA
IC0xOTYsMTEgKzIzNSwxNyBAQCB2b2lkIEFlY1N0YXRlOjpVcGRhdGUoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0aXZlX3JlbmRlciwgU2F0dXJhdGVkQ2FwdHVyZSgpKTsKIAogICAv
LyBBbmFseXplIHRoZSBxdWFsaXR5IG9mIHRoZSBmaWx0ZXIuCi0gIGZpbHRlcl9xdWFsaXR5X3N0
YXRlXy5VcGRhdGUoc2F0dXJhdGlvbl9kZXRlY3Rvcl8uU2F0dXJhdGVkRWNobygpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZV9yZW5kZXIsIFNhdHVyYXRlZENhcHR1cmUo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc3BhcmVudE1vZGUoKSwgZXh0
ZXJuYWxfZGVsYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHJhY3Rvcl9v
dXRwdXRfYW5hbHl6ZXJfLkNvbnZlcmdlZEZpbHRlcigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyXy5EaXZlcmdlZEZpbHRlcigpKTsK
KyAgaWYgKHVzZV9sZWdhY3lfZmlsdGVyX3F1YWxpdHlfKSB7CisgICAgbGVnYWN5X2ZpbHRlcl9x
dWFsaXR5X3N0YXRlXy5VcGRhdGUoCisgICAgICAgIFNhdHVyYXRlZEVjaG8oKSwgYWN0aXZlX3Jl
bmRlciwgU2F0dXJhdGVkQ2FwdHVyZSgpLCBUcmFuc3BhcmVudE1vZGUoKSwKKyAgICAgICAgZXh0
ZXJuYWxfZGVsYXksIHN1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyXy5Db252ZXJnZWRGaWx0ZXIo
KSwKKyAgICAgICAgc3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXJfLkRpdmVyZ2VkRmlsdGVyKCkp
OworICB9IGVsc2UgeworICAgIGZpbHRlcl9xdWFsaXR5X3N0YXRlXy5VcGRhdGUoYWN0aXZlX3Jl
bmRlciwgVHJhbnNwYXJlbnRNb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTYXR1cmF0ZWRDYXB0dXJlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
aWx0ZXJfYW5hbHl6ZXJfLkNvbnNpc3RlbnQoKSwgZXh0ZXJuYWxfZGVsYXksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl8uQ29udmVy
Z2VkRmlsdGVyKCkpOworICB9CiAKICAgLy8gVXBkYXRlIHRoZSByZXZlcmIgZXN0aW1hdGUuCiAg
IGNvbnN0IGJvb2wgc3RhdGlvbmFyeV9ibG9jayA9CkBAIC0yMjcsOCArMjcyLDcgQEAgdm9pZCBB
ZWNTdGF0ZTo6VXBkYXRlKAogICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfaW5pdGlhbF9z
dGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsX3N0YXRlXy5Jbml0aWFsU3Rh
dGVBY3RpdmUoKSk7CiAgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19jYXB0dXJlX3NhdHVy
YXRpb24iLCBTYXR1cmF0ZWRDYXB0dXJlKCkpOwotICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFl
YzNfZWNob19zYXR1cmF0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNhdHVyYXRpb25f
ZGV0ZWN0b3JfLlNhdHVyYXRlZEVjaG8oKSk7CisgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVj
M19lY2hvX3NhdHVyYXRpb24iLCBTYXR1cmF0ZWRFY2hvKCkpOwogICBkYXRhX2R1bXBlcl8tPkR1
bXBSYXcoImFlYzNfY29udmVyZ2VkX2ZpbHRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICBz
dWJ0cmFjdG9yX291dHB1dF9hbmFseXplcl8uQ29udmVyZ2VkRmlsdGVyKCkpOwogICBkYXRhX2R1
bXBlcl8tPkR1bXBSYXcoImFlYzNfZGl2ZXJnZWRfZmlsdGVyIiwKQEAgLTM4Miw2ICs0MjYsNTEg
QEAgdm9pZCBBZWNTdGF0ZTo6VHJhbnNwYXJlbnRNb2RlOjpVcGRhdGUoaW50IGZpbHRlcl9kZWxh
eV9ibG9ja3MsCiB9CiAKIEFlY1N0YXRlOjpGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXI6OkZpbHRl
cmluZ1F1YWxpdHlBbmFseXplcigKKyAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29u
ZmlnKSB7fQorCit2b2lkIEFlY1N0YXRlOjpGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXI6OlJlc2V0
KCkgeworICB1c2FibGVfbGluZWFyX2VzdGltYXRlXyA9IGZhbHNlOworICBmaWx0ZXJfdXBkYXRl
X2Jsb2Nrc19zaW5jZV9yZXNldF8gPSAwOworfQorCit2b2lkIEFlY1N0YXRlOjpGaWx0ZXJpbmdR
dWFsaXR5QW5hbHl6ZXI6OlVwZGF0ZSgKKyAgICBib29sIGFjdGl2ZV9yZW5kZXIsCisgICAgYm9v
bCB0cmFuc3BhcmVudF9tb2RlLAorICAgIGJvb2wgc2F0dXJhdGVkX2NhcHR1cmUsCisgICAgYm9v
bCBjb25zaXN0ZW50X2VzdGltYXRlXywKKyAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxEZWxheUVz
dGltYXRlPiYgZXh0ZXJuYWxfZGVsYXksCisgICAgYm9vbCBjb252ZXJnZWRfZmlsdGVyKSB7Cisg
IC8vIFVwZGF0ZSBibG9ja3MgY291bnRlci4KKyAgY29uc3QgYm9vbCBmaWx0ZXJfdXBkYXRlID0g
YWN0aXZlX3JlbmRlciAmJiAhc2F0dXJhdGVkX2NhcHR1cmU7CisgIGZpbHRlcl91cGRhdGVfYmxv
Y2tzX3NpbmNlX3Jlc2V0XyArPSBmaWx0ZXJfdXBkYXRlID8gMSA6IDA7CisgIGZpbHRlcl91cGRh
dGVfYmxvY2tzX3NpbmNlX3N0YXJ0XyArPSBmaWx0ZXJfdXBkYXRlID8gMSA6IDA7CisKKyAgLy8g
U3RvcmUgY29udmVyZ2VuY2UgZmxhZyB3aGVuIG9ic2VydmVkLgorICBjb252ZXJnZW5jZV9zZWVu
XyA9IGNvbnZlcmdlbmNlX3NlZW5fIHx8IGNvbnZlcmdlZF9maWx0ZXI7CisKKyAgLy8gVmVyaWZ5
IHJlcXVpcmVtZW50cyBmb3IgYWNoaWV2aW5nIGEgZGVjZW50IGZpbHRlci4gVGhlIHJlcXVpcmVt
ZW50cyBmb3IKKyAgLy8gZmlsdGVyIGFkYXB0YXRpb24gYXQgY2FsbCBzdGFydHVwIGFyZSBtb3Jl
IHJlc3RyaWN0aXZlIHRoYW4gYWZ0ZXIgYW4KKyAgLy8gaW4tY2FsbCByZXNldC4KKyAgY29uc3Qg
Ym9vbCBzdWZmaWNpZW50X2RhdGFfdG9fY29udmVyZ2VfYXRfc3RhcnR1cCA9CisgICAgICBmaWx0
ZXJfdXBkYXRlX2Jsb2Nrc19zaW5jZV9zdGFydF8gPiBrTnVtQmxvY2tzUGVyU2Vjb25kICogMC40
ZjsKKyAgY29uc3QgYm9vbCBzdWZmaWNpZW50X2RhdGFfdG9fY29udmVyZ2VfYXRfcmVzZXQgPQor
ICAgICAgc3VmZmljaWVudF9kYXRhX3RvX2NvbnZlcmdlX2F0X3N0YXJ0dXAgJiYKKyAgICAgIGZp
bHRlcl91cGRhdGVfYmxvY2tzX3NpbmNlX3Jlc2V0XyA+IGtOdW1CbG9ja3NQZXJTZWNvbmQgKiAw
LjJmOworCisgIC8vIFRoZSBsaW5lYXIgZmlsdGVyIGNhbiBvbmx5IGJlIHVzZWQgaXQgaGFzIGhh
ZCB0aW1lIHRvIGNvbnZlcmdlLgorICB1c2FibGVfbGluZWFyX2VzdGltYXRlXyA9IHN1ZmZpY2ll
bnRfZGF0YV90b19jb252ZXJnZV9hdF9zdGFydHVwICYmCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3VmZmljaWVudF9kYXRhX3RvX2NvbnZlcmdlX2F0X3Jlc2V0OworCisgIC8vIFRoZSBs
aW5lYXIgZmlsdGVyIGNhbiBvbmx5IGJlIHVzZWQgaWYgYW4gZXh0ZXJuYWwgZGVsYXkgb3IgY29u
dmVyZ2VuY2UgaGF2ZQorICAvLyBiZWVuIGlkZW50aWZpZWQKKyAgdXNhYmxlX2xpbmVhcl9lc3Rp
bWF0ZV8gPQorICAgICAgdXNhYmxlX2xpbmVhcl9lc3RpbWF0ZV8gJiYgKGV4dGVybmFsX2RlbGF5
IHx8IGNvbnZlcmdlbmNlX3NlZW5fKTsKKworICAvLyBJZiB0cmFuc3BhcmVudCBtb2RlIGlzIG9u
LCBkZWFjdGl2YXRlIHVzaWduIHRoZSBsaW5lYXIgZmlsdGVyLgorICB1c2FibGVfbGluZWFyX2Vz
dGltYXRlXyA9IHVzYWJsZV9saW5lYXJfZXN0aW1hdGVfICYmICF0cmFuc3BhcmVudF9tb2RlOwor
fQorCitBZWNTdGF0ZTo6TGVnYWN5RmlsdGVyaW5nUXVhbGl0eUFuYWx5emVyOjpMZWdhY3lGaWx0
ZXJpbmdRdWFsaXR5QW5hbHl6ZXIoCiAgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNv
bmZpZykKICAgICA6IGNvbnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlXyhjb25maWcuZmlsdGVyLmNv
bnNlcnZhdGl2ZV9pbml0aWFsX3BoYXNlKSwKICAgICAgIHJlcXVpcmVkX2Jsb2Nrc19mb3JfY29u
dmVyZ2VuY2VfKApAQCAtMzkwLDcgKzQ3OSw3IEBAIEFlY1N0YXRlOjpGaWx0ZXJpbmdRdWFsaXR5
QW5hbHl6ZXI6OkZpbHRlcmluZ1F1YWxpdHlBbmFseXplcigKICAgICAgICAgICBjb25maWcuZWNo
b19yZW1vdmFsX2NvbnRyb2wubGluZWFyX2FuZF9zdGFibGVfZWNob19wYXRoKSwKICAgICAgIG5v
bl9jb252ZXJnZWRfc2VxdWVuY2Vfc2l6ZV8oa0Jsb2Nrc1NpbmNlQ29udmVyZ2VuY2VkRmlsdGVy
SW5pdCkge30KIAotdm9pZCBBZWNTdGF0ZTo6RmlsdGVyaW5nUXVhbGl0eUFuYWx5emVyOjpSZXNl
dCgpIHsKK3ZvaWQgQWVjU3RhdGU6OkxlZ2FjeUZpbHRlcmluZ1F1YWxpdHlBbmFseXplcjo6UmVz
ZXQoKSB7CiAgIHVzYWJsZV9saW5lYXJfZXN0aW1hdGVfID0gZmFsc2U7CiAgIHN0cm9uZ19ub3Rf
c2F0dXJhdGVkX3JlbmRlcl9ibG9ja3NfID0gMDsKICAgaWYgKGxpbmVhcl9hbmRfc3RhYmxlX2Vj
aG9fcGF0aF8pIHsKQEAgLTQwMiw3ICs0OTEsNyBAQCB2b2lkIEFlY1N0YXRlOjpGaWx0ZXJpbmdR
dWFsaXR5QW5hbHl6ZXI6OlJlc2V0KCkgewogICByZWNlbnRfY29udmVyZ2VuY2VfID0gdHJ1ZTsK
IH0KIAotdm9pZCBBZWNTdGF0ZTo6RmlsdGVyaW5nUXVhbGl0eUFuYWx5emVyOjpVcGRhdGUoCit2
b2lkIEFlY1N0YXRlOjpMZWdhY3lGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXI6OlVwZGF0ZSgKICAg
ICBib29sIHNhdHVyYXRlZF9lY2hvLAogICAgIGJvb2wgYWN0aXZlX3JlbmRlciwKICAgICBib29s
IHNhdHVyYXRlZF9jYXB0dXJlLApAQCAtNDU0LDE4ICs1NDMsNDEgQEAgdm9pZCBBZWNTdGF0ZTo6
RmlsdGVyaW5nUXVhbGl0eUFuYWx5emVyOjpVcGRhdGUoCiAgIH0KIH0KIAotQWVjU3RhdGU6OlNh
dHVyYXRpb25EZXRlY3Rvcjo6U2F0dXJhdGlvbkRldGVjdG9yKAordm9pZCBBZWNTdGF0ZTo6U2F0
dXJhdGlvbkRldGVjdG9yOjpVcGRhdGUoCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+
IHgsCisgICAgYm9vbCBzYXR1cmF0ZWRfY2FwdHVyZSwKKyAgICBib29sIHVzYWJsZV9saW5lYXJf
ZXN0aW1hdGUsCisgICAgY29uc3QgU3VidHJhY3Rvck91dHB1dCYgc3VidHJhY3Rvcl9vdXRwdXQs
CisgICAgZmxvYXQgZWNob19wYXRoX2dhaW4pIHsKKyAgc2F0dXJhdGVkX2VjaG9fID0gc2F0dXJh
dGVkX2NhcHR1cmU7CisgIGlmICh1c2FibGVfbGluZWFyX2VzdGltYXRlKSB7CisgICAgY29uc3Rl
eHByIGZsb2F0IGtTYXR1cmF0aW9uVGhyZXNob2xkID0gMjAwMDAuZjsKKyAgICBzYXR1cmF0ZWRf
ZWNob18gPQorICAgICAgICBzYXR1cmF0ZWRfZWNob18gJiYKKyAgICAgICAgKHN1YnRyYWN0b3Jf
b3V0cHV0LnNfbWFpbl9tYXhfYWJzID4ga1NhdHVyYXRpb25UaHJlc2hvbGQgfHwKKyAgICAgICAg
IHN1YnRyYWN0b3Jfb3V0cHV0LnNfc2hhZG93X21heF9hYnMgPiBrU2F0dXJhdGlvblRocmVzaG9s
ZCk7CisgIH0gZWxzZSB7CisgICAgY29uc3QgZmxvYXQgbWF4X3NhbXBsZSA9IGZhYnMoKnN0ZDo6
bWF4X2VsZW1lbnQoCisgICAgICAgIHguYmVnaW4oKSwgeC5lbmQoKSwgW10oZmxvYXQgYSwgZmxv
YXQgYikgeyByZXR1cm4gYSAqIGEgPCBiICogYjsgfSkpOworCisgICAgY29uc3QgZmxvYXQga01h
cmdpbiA9IDEwLmY7CisgICAgZmxvYXQgcGVha19lY2hvX2FtcGxpdHVkZSA9IG1heF9zYW1wbGUg
KiBlY2hvX3BhdGhfZ2FpbiAqIGtNYXJnaW47CisgICAgc2F0dXJhdGVkX2VjaG9fID0gc2F0dXJh
dGVkX2VjaG9fICYmIHBlYWtfZWNob19hbXBsaXR1ZGUgPiAzMjAwMDsKKyAgfQorfQorCitBZWNT
dGF0ZTo6TGVnYWN5U2F0dXJhdGlvbkRldGVjdG9yOjpMZWdhY3lTYXR1cmF0aW9uRGV0ZWN0b3Io
CiAgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZykKICAgICA6IGVjaG9fY2Fu
X3NhdHVyYXRlXyhjb25maWcuZXBfc3RyZW5ndGguZWNob19jYW5fc2F0dXJhdGUpLAogICAgICAg
bm90X3NhdHVyYXRlZF9zZXF1ZW5jZV9zaXplXygxMDAwKSB7fQogCi12b2lkIEFlY1N0YXRlOjpT
YXR1cmF0aW9uRGV0ZWN0b3I6OlJlc2V0KCkgewordm9pZCBBZWNTdGF0ZTo6TGVnYWN5U2F0dXJh
dGlvbkRldGVjdG9yOjpSZXNldCgpIHsKICAgbm90X3NhdHVyYXRlZF9zZXF1ZW5jZV9zaXplXyA9
IDA7CiB9CiAKLXZvaWQgQWVjU3RhdGU6OlNhdHVyYXRpb25EZXRlY3Rvcjo6VXBkYXRlKHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBzYXR1cmF0ZWRfY2FwdHVyZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGVjaG9fcGF0aF9nYWluKSB7Cit2b2lkIEFlY1N0
YXRlOjpMZWdhY3lTYXR1cmF0aW9uRGV0ZWN0b3I6OlVwZGF0ZShydGM6OkFycmF5Vmlldzxjb25z
dCBmbG9hdD4geCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgc2F0dXJhdGVkX2NhcHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCBlY2hvX3BhdGhfZ2FpbikgewogICBpZiAoIWVjaG9f
Y2FuX3NhdHVyYXRlXykgewogICAgIHNhdHVyYXRlZF9lY2hvXyA9IGZhbHNlOwogICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlY19zdGF0ZS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvYWVjX3N0YXRlLmgKaW5kZXggY2E0NzY0MjhhNTRkODRhY2QyMjQwNjA4N2RmYmUyMzJkNjRi
NDVmYS4uYzlkOWNmM2YzYTBiZDI4YzRhYjZmNjYyMjc3MmM3ODU4YjIxNTdlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0
YXRlLmgKQEAgLTExLDkgKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5H
X0FFQzNfQUVDX1NUQVRFX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMz
X0FFQ19TVEFURV9IXwogCi0jaW5jbHVkZSA8bWF0aC5oPgotCi0jaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAgLTI4LDYgKzI3LDcgQEAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZpbHRlcl9hbmFseXplci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfcmV2ZXJiX21vZGVsLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsX2VzdGlt
YXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0
b3Jfb3V0cHV0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3Vi
dHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXIuaCIKQEAgLTQ2LDExICs0NiwxNyBAQCBjbGFzcyBBZWNT
dGF0ZSB7CiAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgZWNobyBzdWJ0cmFjdG9yIGNhbiBiZSB1
c2VkIHRvIGRldGVybWluZSB0aGUgcmVzaWR1YWwKICAgLy8gZWNoby4KICAgYm9vbCBVc2FibGVM
aW5lYXJFc3RpbWF0ZSgpIGNvbnN0IHsKKyAgICBpZiAodXNlX2xlZ2FjeV9maWx0ZXJfcXVhbGl0
eV8pIHsKKyAgICAgIHJldHVybiBsZWdhY3lfZmlsdGVyX3F1YWxpdHlfc3RhdGVfLkxpbmVhckZp
bHRlclVzYWJsZSgpOworICAgIH0KICAgICByZXR1cm4gZmlsdGVyX3F1YWxpdHlfc3RhdGVfLkxp
bmVhckZpbHRlclVzYWJsZSgpOwogICB9CiAKICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBlY2hv
IHN1YnRyYWN0b3Igb3V0cHV0IHNob3VsZCBiZSB1c2VkIGFzIG91dHB1dC4KICAgYm9vbCBVc2VM
aW5lYXJGaWx0ZXJPdXRwdXQoKSBjb25zdCB7CisgICAgaWYgKHVzZV9sZWdhY3lfZmlsdGVyX3F1
YWxpdHlfKSB7CisgICAgICByZXR1cm4gbGVnYWN5X2ZpbHRlcl9xdWFsaXR5X3N0YXRlXy5MaW5l
YXJGaWx0ZXJVc2FibGUoKTsKKyAgICB9CiAgICAgcmV0dXJuIGZpbHRlcl9xdWFsaXR5X3N0YXRl
Xy5MaW5lYXJGaWx0ZXJVc2FibGUoKTsKICAgfQogCkBAIC05OSw3ICsxMDUsMTEgQEAgY2xhc3Mg
QWVjU3RhdGUgewogICBib29sIFNhdHVyYXRlZENhcHR1cmUoKSBjb25zdCB7IHJldHVybiBjYXB0
dXJlX3NpZ25hbF9zYXR1cmF0aW9uXzsgfQogCiAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgZWNo
byBzaWduYWwgaXMgc2F0dXJhdGVkLgotICBib29sIFNhdHVyYXRlZEVjaG8oKSBjb25zdCB7IHJl
dHVybiBzYXR1cmF0aW9uX2RldGVjdG9yXy5TYXR1cmF0ZWRFY2hvKCk7IH0KKyAgYm9vbCBTYXR1
cmF0ZWRFY2hvKCkgY29uc3QgeworICAgIHJldHVybiB1c2VfbGVnYWN5X3NhdHVyYXRpb25fYmVo
YXZpb3JfCisgICAgICAgICAgICAgICA/IGxlZ2FjeV9zYXR1cmF0aW9uX2RldGVjdG9yXy5TYXR1
cmF0ZWRFY2hvKCkKKyAgICAgICAgICAgICAgIDogc2F0dXJhdGlvbl9kZXRlY3Rvcl8uU2F0dXJh
dGVkRWNobygpOworICB9CiAKICAgLy8gVXBkYXRlcyB0aGUgY2FwdHVyZSBzaWduYWwgc2F0dXJh
dGlvbi4KICAgdm9pZCBVcGRhdGVDYXB0dXJlU2F0dXJhdGlvbihib29sIGNhcHR1cmVfc2lnbmFs
X3NhdHVyYXRpb24pIHsKQEAgLTEyMiw3ICsxMzIsMTEgQEAgY2xhc3MgQWVjU3RhdGUgewogCiAg
IC8vIFJldHVybnMgdGhlIHVwcGVyIGxpbWl0IGZvciB0aGUgZWNobyBzdXBwcmVzc2lvbiBnYWlu
LgogICBmbG9hdCBTdXBwcmVzc2lvbkdhaW5MaW1pdCgpIGNvbnN0IHsKLSAgICByZXR1cm4gc3Vw
cHJlc3Npb25fZ2Fpbl9saW1pdGVyXy5MaW1pdCgpOworICAgIGlmICh1c2Vfc3VwcHJlc3Nvcl9n
YWluX2xpbWl0ZXJfKSB7CisgICAgICByZXR1cm4gc3VwcHJlc3Npb25fZ2Fpbl9saW1pdGVyXy5M
aW1pdCgpOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gMS5mOworICAgIH0KICAgfQogCiAg
IC8vIFJldHVybnMgd2hldGhlciB0aGUgc3VwcHJlc3Npb24gZ2FpbiBsaW1pdGVyIGlzIGFjdGl2
ZS4KQEAgLTE1MywxMyArMTY3LDE0IEBAIGNsYXNzIEFlY1N0YXRlIHsKICAgfQogCiAgcHJpdmF0
ZToKLSAgdm9pZCBVcGRhdGVTdXBwcmVzc29yR2FpbkxpbWl0KGJvb2wgcmVuZGVyX2FjdGl2aXR5
KTsKLSAgYm9vbCBEZXRlY3RFY2hvU2F0dXJhdGlvbihydGM6OkFycmF5Vmlldzxjb25zdCBmbG9h
dD4geCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBlY2hvX3BhdGhfZ2Fpbik7
Ci0KICAgc3RhdGljIGludCBpbnN0YW5jZV9jb3VudF87CiAgIHN0ZDo6dW5pcXVlX3B0cjxBcG1E
YXRhRHVtcGVyPiBkYXRhX2R1bXBlcl87CiAgIGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNv
bmZpZ187CisgIGNvbnN0IGJvb2wgdXNlX2xlZ2FjeV9zYXR1cmF0aW9uX2JlaGF2aW9yXzsKKyAg
Y29uc3QgYm9vbCBlbmFibGVfZXJsZV9yZXNldHNfYXRfZ2Fpbl9jaGFuZ2VzXzsKKyAgY29uc3Qg
Ym9vbCBlbmFibGVfZXJsZV91cGRhdGVzX2R1cmluZ19yZXZlcmJfOworICBjb25zdCBib29sIHVz
ZV9sZWdhY3lfZmlsdGVyX3F1YWxpdHlfOworICBjb25zdCBib29sIHVzZV9zdXBwcmVzc29yX2dh
aW5fbGltaXRlcl87CiAKICAgLy8gQ2xhc3MgZm9yIGNvbnRyb2xsaW5nIHRoZSB0cmFuc2l0aW9u
IGZyb20gdGhlIGludGlhbCBzdGF0ZSwgd2hpY2ggaW4gdHVybgogICAvLyBjb250cm9scyB3aGVu
IHRoZSBmaWx0ZXIgcGFyYW1ldGVycyBmb3IgdGhlIGluaXRpYWwgc3RhdGUgc2hvdWxkIGJlIHVz
ZWQuCkBAIC0yNTUsNyArMjcwLDM3IEBAIGNsYXNzIEFlY1N0YXRlIHsKICAgLy8gc3VwcHJlc3Nv
ci4KICAgY2xhc3MgRmlsdGVyaW5nUXVhbGl0eUFuYWx5emVyIHsKICAgIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXIoY29uc3QgRWNob0NhbmNlbGxlcjNDb25m
aWcmIGNvbmZpZyk7CisgICAgRmlsdGVyaW5nUXVhbGl0eUFuYWx5emVyKGNvbnN0IEVjaG9DYW5j
ZWxsZXIzQ29uZmlnJiBjb25maWcpOworCisgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSB0aGUg
bGluZWFyIGZpbHRlciBjYW4gYmUgdXNlZCBmb3IgdGhlIGVjaG8KKyAgICAvLyBjYW5jZWxsZXIg
b3V0cHV0LgorICAgIGJvb2wgTGluZWFyRmlsdGVyVXNhYmxlKCkgY29uc3QgeyByZXR1cm4gdXNh
YmxlX2xpbmVhcl9lc3RpbWF0ZV87IH0KKworICAgIC8vIFJlc2V0cyB0aGUgc3RhdGUgb2YgdGhl
IGFuYWx5emVyLgorICAgIHZvaWQgUmVzZXQoKTsKKworICAgIC8vIFVwZGF0ZXMgdGhlIGFuYWx5
c2lzIGJhc2VkIG9uIG5ldyBkYXRhLgorICAgIHZvaWQgVXBkYXRlKGJvb2wgYWN0aXZlX3JlbmRl
ciwKKyAgICAgICAgICAgICAgICBib29sIHRyYW5zcGFyZW50X21vZGUsCisgICAgICAgICAgICAg
ICAgYm9vbCBzYXR1cmF0ZWRfY2FwdHVyZSwKKyAgICAgICAgICAgICAgICBib29sIGNvbnNpc3Rl
bnRfZXN0aW1hdGVfLAorICAgICAgICAgICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPERlbGF5
RXN0aW1hdGU+JiBleHRlcm5hbF9kZWxheSwKKyAgICAgICAgICAgICAgICBib29sIGNvbnZlcmdl
ZF9maWx0ZXIpOworCisgICBwcml2YXRlOgorICAgIGJvb2wgdXNhYmxlX2xpbmVhcl9lc3RpbWF0
ZV8gPSBmYWxzZTsKKyAgICBzaXplX3QgZmlsdGVyX3VwZGF0ZV9ibG9ja3Nfc2luY2VfcmVzZXRf
ID0gMDsKKyAgICBzaXplX3QgZmlsdGVyX3VwZGF0ZV9ibG9ja3Nfc2luY2Vfc3RhcnRfID0gMDsK
KyAgICBib29sIGNvbnZlcmdlbmNlX3NlZW5fID0gZmFsc2U7CisgIH0gZmlsdGVyX3F1YWxpdHlf
c3RhdGVfOworCisgIC8vIENsYXNzIGNvbnRhaW5pbmcgdGhlIGxlZ2FjeSBmdW5jdGlvbmFsaXR5
IGZvciBhbmFseXppbmcgaG93IHdlbGwgdGhlIGxpbmVhcgorICAvLyBmaWx0ZXIgaXMsIGFuZCBj
YW4gYmUgZXhwZWN0ZWQgdG8gcGVyZm9ybSBvbiB0aGUgY3VycmVudCBzaWduYWxzLiBUaGUKKyAg
Ly8gcHVycG9zZSBvZiB0aGlzIGlzIGZvciB1c2luZyB0byBzZWxlY3QgdGhlIGVjaG8gc3VwcHJl
c3Npb24gZnVuY3Rpb25hbGl0eQorICAvLyBhcyB3ZWxsIGFzIHRoZSBpbnB1dCB0byB0aGUgZWNo
byBzdXBwcmVzc29yLgorICBjbGFzcyBMZWdhY3lGaWx0ZXJpbmdRdWFsaXR5QW5hbHl6ZXIgewor
ICAgcHVibGljOgorICAgIGV4cGxpY2l0IExlZ2FjeUZpbHRlcmluZ1F1YWxpdHlBbmFseXplcihj
b25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKTsKIAogICAgIC8vIFJldHVybnMgd2hl
dGhlciB0aGUgdGhlIGxpbmVhciBmaWx0ZXIgaXMgY2FuIGJlIHVzZWQgZm9yIHRoZSBlY2hvCiAg
ICAgLy8gY2FuY2VsbGVyIG91dHB1dC4KQEAgLTI4NCwxNCArMzI5LDMyIEBAIGNsYXNzIEFlY1N0
YXRlIHsKICAgICBzaXplX3QgYWN0aXZlX25vbl9jb252ZXJnZWRfc2VxdWVuY2Vfc2l6ZV8gPSAw
OwogICAgIGJvb2wgcmVjZW50X2NvbnZlcmdlbmNlX2R1cmluZ19hY3Rpdml0eV8gPSBmYWxzZTsK
ICAgICBib29sIHJlY2VudF9jb252ZXJnZW5jZV8gPSBmYWxzZTsKLSAgfSBmaWx0ZXJfcXVhbGl0
eV9zdGF0ZV87CisgIH0gbGVnYWN5X2ZpbHRlcl9xdWFsaXR5X3N0YXRlXzsKIAotICAvLyBDbGFz
cyBmb3IgZGV0ZWN0aW5nIHdoZXRoZXIgdGhlIGVjaG8gaXMgdG8gYmUgY29uc2lkZXJlZCB0byBi
ZSBzYXR1cmF0ZWQuCi0gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gYWxsb3cgY3VzdG9t
aXplZCBiZWhhdmlvciBpbiB0aGUgZWNobyBzdXBwcmVzc29yCi0gIC8vIGZvciB3aGVuIHRoZSBl
Y2hvIGlzIHNhdHVyYXRlZC4KKyAgLy8gQ2xhc3MgZm9yIGRldGVjdGluZyB3aGV0aGVyIHRoZSBl
Y2hvIGlzIHRvIGJlIGNvbnNpZGVyZWQgdG8gYmUKKyAgLy8gc2F0dXJhdGVkLgogICBjbGFzcyBT
YXR1cmF0aW9uRGV0ZWN0b3IgewogICAgcHVibGljOgotICAgIGV4cGxpY2l0IFNhdHVyYXRpb25E
ZXRlY3Rvcihjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnKTsKKyAgICAvLyBSZXR1
cm5zIHdoZXRoZXIgdGhlIGVjaG8gaXMgdG8gYmUgY29uc2lkZXJlZCBzYXR1cmF0ZWQuCisgICAg
Ym9vbCBTYXR1cmF0ZWRFY2hvKCkgY29uc3QgeyByZXR1cm4gc2F0dXJhdGVkX2VjaG9fOyB9Owor
CisgICAgLy8gVXBkYXRlcyB0aGUgZGV0ZWN0aW9uIGRlY2lzaW9uIGJhc2VkIG9uIG5ldyBkYXRh
LgorICAgIHZvaWQgVXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiB4LAorICAgICAg
ICAgICAgICAgIGJvb2wgc2F0dXJhdGVkX2NhcHR1cmUsCisgICAgICAgICAgICAgICAgYm9vbCB1
c2FibGVfbGluZWFyX2VzdGltYXRlLAorICAgICAgICAgICAgICAgIGNvbnN0IFN1YnRyYWN0b3JP
dXRwdXQmIHN1YnRyYWN0b3Jfb3V0cHV0LAorICAgICAgICAgICAgICAgIGZsb2F0IGVjaG9fcGF0
aF9nYWluKTsKKworICAgcHJpdmF0ZToKKyAgICBib29sIHNhdHVyYXRlZF9lY2hvXyA9IGZhbHNl
OworICB9IHNhdHVyYXRpb25fZGV0ZWN0b3JfOworCisgIC8vIExlZ2FjeSBjbGFzcyBmb3IgZGV0
ZWN0aW5nIHdoZXRoZXIgdGhlIGVjaG8gaXMgdG8gYmUgY29uc2lkZXJlZCB0byBiZQorICAvLyBz
YXR1cmF0ZWQuIFRoaXMgaXMga2VwdCBhcyBhIGZhbGxiYWNrIHNvbHV0aW9uIHRvIHVzZSBpbnN0
ZWFkIG9mIHRoZSBjbGFzcworICAvLyBTYXR1cmF0aW9uRGV0ZWN0b3IsCisgIGNsYXNzIExlZ2Fj
eVNhdHVyYXRpb25EZXRlY3RvciB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgTGVnYWN5U2F0
dXJhdGlvbkRldGVjdG9yKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpOwogCiAg
ICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBlY2hvIGlzIHRvIGJlIGNvbnNpZGVyZWQgc2F0dXJh
dGVkLgogICAgIGJvb2wgU2F0dXJhdGVkRWNobygpIGNvbnN0IHsgcmV0dXJuIHNhdHVyYXRlZF9l
Y2hvXzsgfTsKQEAgLTMwOCw3ICszNzEsNyBAQCBjbGFzcyBBZWNTdGF0ZSB7CiAgICAgY29uc3Qg
Ym9vbCBlY2hvX2Nhbl9zYXR1cmF0ZV87CiAgICAgc2l6ZV90IG5vdF9zYXR1cmF0ZWRfc2VxdWVu
Y2Vfc2l6ZV87CiAgICAgYm9vbCBzYXR1cmF0ZWRfZWNob18gPSBmYWxzZTsKLSAgfSBzYXR1cmF0
aW9uX2RldGVjdG9yXzsKKyAgfSBsZWdhY3lfc2F0dXJhdGlvbl9kZXRlY3Rvcl87CiAKICAgRXJs
RXN0aW1hdG9yIGVybF9lc3RpbWF0b3JfOwogICBFcmxlRXN0aW1hdG9yIGVybGVfZXN0aW1hdG9y
XzsKQEAgLTMyMSw4ICszODQsOCBAQCBjbGFzcyBBZWNTdGF0ZSB7CiAgIGFic2w6Om9wdGlvbmFs
PERlbGF5RXN0aW1hdGU+IGV4dGVybmFsX2RlbGF5XzsKICAgRWNob0F1ZGliaWxpdHkgZWNob19h
dWRpYmlsaXR5XzsKICAgUmV2ZXJiTW9kZWxFc3RpbWF0b3IgcmV2ZXJiX21vZGVsX2VzdGltYXRv
cl87CisgIFJlbmRlclJldmVyYk1vZGVsIHJlbmRlcl9yZXZlcmJfOwogICBTdWJ0cmFjdG9yT3V0
cHV0QW5hbHl6ZXIgc3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXJfOwotICBib29sIGVuYWJsZV9l
cmxlX3Jlc2V0c19hdF9nYWluX2NoYW5nZXNfID0gdHJ1ZTsKIH07CiAKIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlY19zdGF0ZV91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2FlY19zdGF0ZV91bml0dGVzdC5jYwppbmRleCBiZjMyYTBiNjA3
MjBlY2VlNzFmMzJlZjM0YTM1YjE1Mzc0ZmU3MDZkLi5hMzMxMDA2Mzc4MTYyMzE4YjZjMWM2ZTcx
YTkzMzJjZWVhYTBjY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGVfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlX3VuaXR0ZXN0LmNjCkBAIC0y
NSw3ICsyNSw3IEBAIFRFU1QoQWVjU3RhdGUsIE5vcm1hbFVzYWdlKSB7CiAgIGFic2w6Om9wdGlv
bmFsPERlbGF5RXN0aW1hdGU+IGRlbGF5X2VzdGltYXRlID0KICAgICAgIERlbGF5RXN0aW1hdGUo
RGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a1JlZmluZWQsIDEwKTsKICAgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVs
YXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpD
cmVhdGUyKGNvbmZpZywgMykpOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1
czE+IEUyX21haW4gPSB7fTsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMx
PiBZMiA9IHt9OwogICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IHgoMywgc3RkOjp2
ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUsIDAuZikpOwpAQCAtNTYsNyArNTYsNyBAQCBURVNUKEFl
Y1N0YXRlLCBOb3JtYWxVc2FnZSkgewogICBzdGQ6OmZpbGwoeFswXS5iZWdpbigpLCB4WzBdLmVu
ZCgpLCAxMDEuZik7CiAgIGZvciAoaW50IGsgPSAwOyBrIDwgMzAwMDsgKytrKSB7CiAgICAgcmVu
ZGVyX2RlbGF5X2J1ZmZlci0+SW5zZXJ0KHgpOwotICAgIG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7
CisgICAgb3V0cHV0LkNvbXB1dGVNZXRyaWNzKHkpOwogICAgIHN0YXRlLlVwZGF0ZShkZWxheV9l
c3RpbWF0ZSwgY29udmVyZ2VkX2ZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCiAgICAgICAgICAg
ICAgICAgIGltcHVsc2VfcmVzcG9uc2UsICpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJC
dWZmZXIoKSwKICAgICAgICAgICAgICAgICAgRTJfbWFpbiwgWTIsIG91dHB1dCwgeSk7CkBAIC02
NSw3ICs2NSw3IEBAIFRFU1QoQWVjU3RhdGUsIE5vcm1hbFVzYWdlKSB7CiAKICAgLy8gVmVyaWZ5
IHRoYXQgbGluZWFyIEFFQyB1c2FiaWxpdHkgYmVjb21lcyBmYWxzZSBhZnRlciBhbiBlY2hvIHBh
dGggY2hhbmdlIGlzCiAgIC8vIHJlcG9ydGVkCi0gIG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7Cisg
IG91dHB1dC5Db21wdXRlTWV0cmljcyh5KTsKICAgc3RhdGUuSGFuZGxlRWNob1BhdGhDaGFuZ2Uo
RWNob1BhdGhWYXJpYWJpbGl0eSgKICAgICAgIGZhbHNlLCBFY2hvUGF0aFZhcmlhYmlsaXR5OjpE
ZWxheUFkanVzdG1lbnQ6OmtCdWZmZXJSZWFkanVzdG1lbnQsIGZhbHNlKSk7CiAgIHN0YXRlLlVw
ZGF0ZShkZWxheV9lc3RpbWF0ZSwgY29udmVyZ2VkX2ZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2Us
CkBAIC03Niw3ICs3Niw3IEBAIFRFU1QoQWVjU3RhdGUsIE5vcm1hbFVzYWdlKSB7CiAgIC8vIFZl
cmlmeSB0aGF0IHRoZSBhY3RpdmUgcmVuZGVyIGRldGVjdGlvbiB3b3JrcyBhcyBpbnRlbmRlZC4K
ICAgc3RkOjpmaWxsKHhbMF0uYmVnaW4oKSwgeFswXS5lbmQoKSwgMTAxLmYpOwogICByZW5kZXJf
ZGVsYXlfYnVmZmVyLT5JbnNlcnQoeCk7Ci0gIG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7CisgIG91
dHB1dC5Db21wdXRlTWV0cmljcyh5KTsKICAgc3RhdGUuSGFuZGxlRWNob1BhdGhDaGFuZ2UoRWNo
b1BhdGhWYXJpYWJpbGl0eSgKICAgICAgIHRydWUsIEVjaG9QYXRoVmFyaWFiaWxpdHk6OkRlbGF5
QWRqdXN0bWVudDo6a05ld0RldGVjdGVkRGVsYXksIGZhbHNlKSk7CiAgIHN0YXRlLlVwZGF0ZShk
ZWxheV9lc3RpbWF0ZSwgY29udmVyZ2VkX2ZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsCkBAIC04
Niw3ICs4Niw3IEBAIFRFU1QoQWVjU3RhdGUsIE5vcm1hbFVzYWdlKSB7CiAKICAgZm9yIChpbnQg
ayA9IDA7IGsgPCAxMDAwOyArK2spIHsKICAgICByZW5kZXJfZGVsYXlfYnVmZmVyLT5JbnNlcnQo
eCk7Ci0gICAgb3V0cHV0LlVwZGF0ZVBvd2Vycyh5KTsKKyAgICBvdXRwdXQuQ29tcHV0ZU1ldHJp
Y3MoeSk7CiAgICAgc3RhdGUuVXBkYXRlKGRlbGF5X2VzdGltYXRlLCBjb252ZXJnZWRfZmlsdGVy
X2ZyZXF1ZW5jeV9yZXNwb25zZSwKICAgICAgICAgICAgICAgICAgaW1wdWxzZV9yZXNwb25zZSwg
KnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJlbmRlckJ1ZmZlcigpLAogICAgICAgICAgICAgICAg
ICBFMl9tYWluLCBZMiwgb3V0cHV0LCB5KTsKQEAgLTExMCw3ICsxMTAsNyBAQCBURVNUKEFlY1N0
YXRlLCBOb3JtYWxVc2FnZSkgewogCiAgIFkyLmZpbGwoMTAuZiAqIDEwMDAwLmYgKiAxMDAwMC5m
KTsKICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAxMDAwOyArK2spIHsKLSAgICBvdXRwdXQuVXBk
YXRlUG93ZXJzKHkpOworICAgIG91dHB1dC5Db21wdXRlTWV0cmljcyh5KTsKICAgICBzdGF0ZS5V
cGRhdGUoZGVsYXlfZXN0aW1hdGUsIGNvbnZlcmdlZF9maWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNl
LAogICAgICAgICAgICAgICAgICBpbXB1bHNlX3Jlc3BvbnNlLCAqcmVuZGVyX2RlbGF5X2J1ZmZl
ci0+R2V0UmVuZGVyQnVmZmVyKCksCiAgICAgICAgICAgICAgICAgIEUyX21haW4sIFkyLCBvdXRw
dXQsIHkpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIFRFU1QoQWVjU3RhdGUsIE5vcm1hbFVzYWdlKSB7
CiAgIEUyX21haW4uZmlsbCgxLmYgKiAxMDAwMC5mICogMTAwMDAuZik7CiAgIFkyLmZpbGwoMTAu
ZiAqIEUyX21haW5bMF0pOwogICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEwMDA7ICsraykgewot
ICAgIG91dHB1dC5VcGRhdGVQb3dlcnMoeSk7CisgICAgb3V0cHV0LkNvbXB1dGVNZXRyaWNzKHkp
OwogICAgIHN0YXRlLlVwZGF0ZShkZWxheV9lc3RpbWF0ZSwgY29udmVyZ2VkX2ZpbHRlcl9mcmVx
dWVuY3lfcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgIGltcHVsc2VfcmVzcG9uc2UsICpyZW5k
ZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZmZXIoKSwKICAgICAgICAgICAgICAgICAgRTJf
bWFpbiwgWTIsIG91dHB1dCwgeSk7CkBAIC0xNTIsNyArMTUyLDcgQEAgVEVTVChBZWNTdGF0ZSwg
Tm9ybWFsVXNhZ2UpIHsKICAgRTJfbWFpbi5maWxsKDEuZiAqIDEwMDAwLmYgKiAxMDAwMC5mKTsK
ICAgWTIuZmlsbCg1LmYgKiBFMl9tYWluWzBdKTsKICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAx
MDAwOyArK2spIHsKLSAgICBvdXRwdXQuVXBkYXRlUG93ZXJzKHkpOworICAgIG91dHB1dC5Db21w
dXRlTWV0cmljcyh5KTsKICAgICBzdGF0ZS5VcGRhdGUoZGVsYXlfZXN0aW1hdGUsIGNvbnZlcmdl
ZF9maWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAogICAgICAgICAgICAgICAgICBpbXB1bHNlX3Jl
c3BvbnNlLCAqcmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksCiAgICAgICAg
ICAgICAgICAgIEUyX21haW4sIFkyLCBvdXRwdXQsIHkpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIFRF
U1QoQWVjU3RhdGUsIENvbnZlcmdlZEZpbHRlckRlbGF5KSB7CiAgIEVjaG9DYW5jZWxsZXIzQ29u
ZmlnIGNvbmZpZzsKICAgQWVjU3RhdGUgc3RhdGUoY29uZmlnKTsKICAgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVs
YXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpD
cmVhdGUyKGNvbmZpZywgMykpOwogICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBkZWxh
eV9lc3RpbWF0ZTsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBFMl9t
YWluOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFkyOwpAQCAtMjA4
LDcgKzIwOCw3IEBAIFRFU1QoQWVjU3RhdGUsIENvbnZlcmdlZEZpbHRlckRlbGF5KSB7CiAgICAg
aW1wdWxzZV9yZXNwb25zZVtrICoga0Jsb2NrU2l6ZSArIDFdID0gMS5mOwogCiAgICAgc3RhdGUu
SGFuZGxlRWNob1BhdGhDaGFuZ2UoZWNob19wYXRoX3ZhcmlhYmlsaXR5KTsKLSAgICBvdXRwdXQu
VXBkYXRlUG93ZXJzKHkpOworICAgIG91dHB1dC5Db21wdXRlTWV0cmljcyh5KTsKICAgICBzdGF0
ZS5VcGRhdGUoZGVsYXlfZXN0aW1hdGUsIGZyZXF1ZW5jeV9yZXNwb25zZSwgaW1wdWxzZV9yZXNw
b25zZSwKICAgICAgICAgICAgICAgICAgKnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJlbmRlckJ1
ZmZlcigpLCBFMl9tYWluLCBZMiwgb3V0cHV0LAogICAgICAgICAgICAgICAgICB5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxsX2ppdHRlcl9tZXRyaWNzLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvYXBpX2NhbGxfaml0dGVyX21ldHJpY3MuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVmNTZhNWRj
ZTZmYWIxMzcxZjI0NGU4OWUyYzAyNWY3YTQ0MGM5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2FwaV9jYWxsX2ppdHRlcl9tZXRyaWNzLmNjCkBAIC0wLDAgKzEsMTIxIEBACisv
KgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2FwaV9jYWxsX2ppdHRlcl9tZXRyaWNzLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+
CisjaW5jbHVkZSA8bGltaXRzPgorCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9t
ZXRyaWNzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHsKKworYm9vbCBUaW1l
VG9SZXBvcnRNZXRyaWNzKGludCBmcmFtZXNfc2luY2VfbGFzdF9yZXBvcnQpIHsKKyAgY29uc3Rl
eHByIGludCBrTnVtRnJhbWVzUGVyU2Vjb25kID0gMTAwOworICBjb25zdGV4cHIgaW50IGtSZXBv
cnRpbmdJbnRlcnZhbEZyYW1lcyA9IDEwICoga051bUZyYW1lc1BlclNlY29uZDsKKyAgcmV0dXJu
IGZyYW1lc19zaW5jZV9sYXN0X3JlcG9ydCA9PSBrUmVwb3J0aW5nSW50ZXJ2YWxGcmFtZXM7Cit9
CisKK30gIC8vIG5hbWVzcGFjZQorCitBcGlDYWxsSml0dGVyTWV0cmljczo6Sml0dGVyOjpKaXR0
ZXIoKQorICAgIDogbWF4XygwKSwgbWluXyhzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
KSB7fQorCit2b2lkIEFwaUNhbGxKaXR0ZXJNZXRyaWNzOjpKaXR0ZXI6OlVwZGF0ZShpbnQgbnVt
X2FwaV9jYWxsc19pbl9hX3JvdykgeworICBtaW5fID0gc3RkOjptaW4obWluXywgbnVtX2FwaV9j
YWxsc19pbl9hX3Jvdyk7CisgIG1heF8gPSBzdGQ6Om1heChtYXhfLCBudW1fYXBpX2NhbGxzX2lu
X2Ffcm93KTsKK30KKwordm9pZCBBcGlDYWxsSml0dGVyTWV0cmljczo6Sml0dGVyOjpSZXNldCgp
IHsKKyAgbWluXyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgIG1heF8gPSAw
OworfQorCit2b2lkIEFwaUNhbGxKaXR0ZXJNZXRyaWNzOjpSZXNldCgpIHsKKyAgcmVuZGVyX2pp
dHRlcl8uUmVzZXQoKTsKKyAgY2FwdHVyZV9qaXR0ZXJfLlJlc2V0KCk7CisgIG51bV9hcGlfY2Fs
bHNfaW5fYV9yb3dfID0gMDsKKyAgZnJhbWVzX3NpbmNlX2xhc3RfcmVwb3J0XyA9IDA7CisgIGxh
c3RfY2FsbF93YXNfcmVuZGVyXyA9IGZhbHNlOworICBwcm9wZXJfY2FsbF9vYnNlcnZlZF8gPSBm
YWxzZTsKK30KKwordm9pZCBBcGlDYWxsSml0dGVyTWV0cmljczo6UmVwb3J0UmVuZGVyQ2FsbCgp
IHsKKyAgaWYgKCFsYXN0X2NhbGxfd2FzX3JlbmRlcl8pIHsKKyAgICAvLyBJZiB0aGUgcHJldmlv
dXMgY2FsbCB3YXMgYSBjYXB0dXJlIGFuZCBhIHByb3BlciBjYWxsIGhhcyBiZWVuIG9ic2VydmVk
CisgICAgLy8gKGNvbnRhaW5pbmcgYm90aCByZW5kZXIgYW5kIGNhcHR1cmUgZGF0YSksIHN0b3Jp
bmcgdGhlIGxhc3QgbnVtYmVyIG9mCisgICAgLy8gY2FwdHVyZSBjYWxscyBpbnRvIHRoZSBtZXRy
aWNzLgorICAgIGlmIChwcm9wZXJfY2FsbF9vYnNlcnZlZF8pIHsKKyAgICAgIGNhcHR1cmVfaml0
dGVyXy5VcGRhdGUobnVtX2FwaV9jYWxsc19pbl9hX3Jvd18pOworICAgIH0KKworICAgIC8vIFJl
c2V0IHRoZSBjYWxsIGNvdW50ZXIgdG8gc3RhcnQgY291bnRpbmcgcmVuZGVyIGNhbGxzLgorICAg
IG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfID0gMDsKKyAgfQorICArK251bV9hcGlfY2FsbHNfaW5f
YV9yb3dfOworICBsYXN0X2NhbGxfd2FzX3JlbmRlcl8gPSB0cnVlOworfQorCit2b2lkIEFwaUNh
bGxKaXR0ZXJNZXRyaWNzOjpSZXBvcnRDYXB0dXJlQ2FsbCgpIHsKKyAgaWYgKGxhc3RfY2FsbF93
YXNfcmVuZGVyXykgeworICAgIC8vIElmIHRoZSBwcmV2aW91cyBjYWxsIHdhcyBhIHJlbmRlciBh
bmQgYSBwcm9wZXIgY2FsbCBoYXMgYmVlbiBvYnNlcnZlZAorICAgIC8vIChjb250YWluaW5nIGJv
dGggcmVuZGVyIGFuZCBjYXB0dXJlIGRhdGEpLCBzdG9yaW5nIHRoZSBsYXN0IG51bWJlciBvZgor
ICAgIC8vIHJlbmRlciBjYWxscyBpbnRvIHRoZSBtZXRyaWNzLgorICAgIGlmIChwcm9wZXJfY2Fs
bF9vYnNlcnZlZF8pIHsKKyAgICAgIHJlbmRlcl9qaXR0ZXJfLlVwZGF0ZShudW1fYXBpX2NhbGxz
X2luX2Ffcm93Xyk7CisgICAgfQorICAgIC8vIFJlc2V0IHRoZSBjYWxsIGNvdW50ZXIgdG8gc3Rh
cnQgY291bnRpbmcgY2FwdHVyZSBjYWxscy4KKyAgICBudW1fYXBpX2NhbGxzX2luX2Ffcm93XyA9
IDA7CisKKyAgICAvLyBJZiB0aGlzIHN0YXRlbWVudCBpcyByZWFjaGVkLCBhdCBsZWFzdCBvbmUg
cmVuZGVyIGFuZCBvbmUgY2FwdHVyZSBjYWxsCisgICAgLy8gaGF2ZSBiZWVuIG9ic2VydmVkLgor
ICAgIHByb3Blcl9jYWxsX29ic2VydmVkXyA9IHRydWU7CisgIH0KKyAgKytudW1fYXBpX2NhbGxz
X2luX2Ffcm93XzsKKyAgbGFzdF9jYWxsX3dhc19yZW5kZXJfID0gZmFsc2U7CisKKyAgLy8gT25s
eSByZXBvcnQgYW5kIHVwZGF0ZSBqaXR0ZXIgbWV0cmljcyBmb3Igd2hlbiBhIHByb3BlciBjYWxs
LCBjb250YWluaW5nCisgIC8vIGJvdGggcmVuZGVyIGFuZCBjYXB0dXJlIGRhdGEsIGhhcyBiZWVu
IG9ic2VydmVkLgorICBpZiAocHJvcGVyX2NhbGxfb2JzZXJ2ZWRfICYmCisgICAgICBUaW1lVG9S
ZXBvcnRNZXRyaWNzKCsrZnJhbWVzX3NpbmNlX2xhc3RfcmVwb3J0XykpIHsKKyAgICAvLyBSZXBv
cnQgaml0dGVyLCB3aGVyZSB0aGUgYmFzZSBiYXNpYyB1bml0IGlzIGZyYW1lcy4KKyAgICBjb25z
dGV4cHIgaW50IGtNYXhKaXR0ZXJUb1JlcG9ydCA9IDUwOworCisgICAgLy8gUmVwb3J0IG1heCBh
bmQgbWluIGppdHRlciBmb3IgcmVuZGVyIGFuZCBjYXB0dXJlLCBpbiB1bml0cyBvZiAyMCBtcy4K
KyAgICBSVENfSElTVE9HUkFNX0NPVU5UU19MSU5FQVIoCisgICAgICAgICJXZWJSVEMuQXVkaW8u
RWNob0NhbmNlbGxlci5NYXhSZW5kZXJKaXR0ZXIiLAorICAgICAgICBzdGQ6Om1pbihrTWF4Sml0
dGVyVG9SZXBvcnQsIHJlbmRlcl9qaXR0ZXIoKS5tYXgoKSksIDEsCisgICAgICAgIGtNYXhKaXR0
ZXJUb1JlcG9ydCwga01heEppdHRlclRvUmVwb3J0KTsKKyAgICBSVENfSElTVE9HUkFNX0NPVU5U
U19MSU5FQVIoCisgICAgICAgICJXZWJSVEMuQXVkaW8uRWNob0NhbmNlbGxlci5NaW5SZW5kZXJK
aXR0ZXIiLAorICAgICAgICBzdGQ6Om1pbihrTWF4Sml0dGVyVG9SZXBvcnQsIHJlbmRlcl9qaXR0
ZXIoKS5taW4oKSksIDEsCisgICAgICAgIGtNYXhKaXR0ZXJUb1JlcG9ydCwga01heEppdHRlclRv
UmVwb3J0KTsKKworICAgIFJUQ19ISVNUT0dSQU1fQ09VTlRTX0xJTkVBUigKKyAgICAgICAgIldl
YlJUQy5BdWRpby5FY2hvQ2FuY2VsbGVyLk1heENhcHR1cmVKaXR0ZXIiLAorICAgICAgICBzdGQ6
Om1pbihrTWF4Sml0dGVyVG9SZXBvcnQsIGNhcHR1cmVfaml0dGVyKCkubWF4KCkpLCAxLAorICAg
ICAgICBrTWF4Sml0dGVyVG9SZXBvcnQsIGtNYXhKaXR0ZXJUb1JlcG9ydCk7CisgICAgUlRDX0hJ
U1RPR1JBTV9DT1VOVFNfTElORUFSKAorICAgICAgICAiV2ViUlRDLkF1ZGlvLkVjaG9DYW5jZWxs
ZXIuTWluQ2FwdHVyZUppdHRlciIsCisgICAgICAgIHN0ZDo6bWluKGtNYXhKaXR0ZXJUb1JlcG9y
dCwgY2FwdHVyZV9qaXR0ZXIoKS5taW4oKSksIDEsCisgICAgICAgIGtNYXhKaXR0ZXJUb1JlcG9y
dCwga01heEppdHRlclRvUmVwb3J0KTsKKworICAgIGZyYW1lc19zaW5jZV9sYXN0X3JlcG9ydF8g
PSAwOworICAgIFJlc2V0KCk7CisgIH0KK30KKworYm9vbCBBcGlDYWxsSml0dGVyTWV0cmljczo6
V2lsbFJlcG9ydE1ldHJpY3NBdE5leHRDYXB0dXJlKCkgY29uc3QgeworICByZXR1cm4gVGltZVRv
UmVwb3J0TWV0cmljcyhmcmFtZXNfc2luY2VfbGFzdF9yZXBvcnRfICsgMSk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxsX2pp
dHRlcl9tZXRyaWNzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRkMWZhODJlOTMyNDcwNzI5MmU4N2VlMmYzNzVjZjg1ZTcxN2YzZGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5o
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVM
RVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0FQSV9DQUxMX0pJVFRFUl9NRVRSSUNTX0hfCisjZGVm
aW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0FQSV9DQUxMX0pJVFRFUl9NRVRSSUNT
X0hfCisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBTdG9yZXMgZGF0YSBmb3IgcmVwb3J0aW5n
IG1ldHJpY3Mgb24gdGhlIEFQSSBjYWxsIGppdHRlci4KK2NsYXNzIEFwaUNhbGxKaXR0ZXJNZXRy
aWNzIHsKKyBwdWJsaWM6CisgIGNsYXNzIEppdHRlciB7CisgICBwdWJsaWM6CisgICAgSml0dGVy
KCk7CisgICAgdm9pZCBVcGRhdGUoaW50IG51bV9hcGlfY2FsbHNfaW5fYV9yb3cpOworICAgIHZv
aWQgUmVzZXQoKTsKKworICAgIGludCBtaW4oKSBjb25zdCB7IHJldHVybiBtaW5fOyB9CisgICAg
aW50IG1heCgpIGNvbnN0IHsgcmV0dXJuIG1heF87IH0KKworICAgcHJpdmF0ZToKKyAgICBpbnQg
bWF4XzsKKyAgICBpbnQgbWluXzsKKyAgfTsKKworICBBcGlDYWxsSml0dGVyTWV0cmljcygpIHsg
UmVzZXQoKTsgfQorCisgIC8vIFVwZGF0ZSBtZXRyaWNzIGZvciByZW5kZXIgQVBJIGNhbGwuCisg
IHZvaWQgUmVwb3J0UmVuZGVyQ2FsbCgpOworCisgIC8vIFVwZGF0ZSBhbmQgcGVyaW9kaWNhbGx5
IHJlcG9ydCBtZXRyaWNzIGZvciBjYXB0dXJlIEFQSSBjYWxsLgorICB2b2lkIFJlcG9ydENhcHR1
cmVDYWxsKCk7CisKKyAgLy8gTWV0aG9kcyB1c2VkIG9ubHkgZm9yIHRlc3RpbmcuCisgIGNvbnN0
IEppdHRlciYgcmVuZGVyX2ppdHRlcigpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcl9qaXR0ZXJfOyB9
CisgIGNvbnN0IEppdHRlciYgY2FwdHVyZV9qaXR0ZXIoKSBjb25zdCB7IHJldHVybiBjYXB0dXJl
X2ppdHRlcl87IH0KKyAgYm9vbCBXaWxsUmVwb3J0TWV0cmljc0F0TmV4dENhcHR1cmUoKSBjb25z
dDsKKworIHByaXZhdGU6CisgIHZvaWQgUmVzZXQoKTsKKworICBKaXR0ZXIgcmVuZGVyX2ppdHRl
cl87CisgIEppdHRlciBjYXB0dXJlX2ppdHRlcl87CisKKyAgaW50IG51bV9hcGlfY2FsbHNfaW5f
YV9yb3dfID0gMDsKKyAgaW50IGZyYW1lc19zaW5jZV9sYXN0X3JlcG9ydF8gPSAwOworICBib29s
IGxhc3RfY2FsbF93YXNfcmVuZGVyXyA9IGZhbHNlOworICBib29sIHByb3Blcl9jYWxsX29ic2Vy
dmVkXyA9IGZhbHNlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8v
IE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0FQSV9DQUxMX0pJVFRFUl9NRVRSSUNTX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljc191bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FwaV9jYWxsX2ppdHRlcl9tZXRyaWNzX3VuaXR0ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg2NjA4YWEzZTEwOTNmOTdiYzM3MGRjOWFhNmI5MWJiZmY0OTMzZDQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmlj
c191bml0dGVzdC5jYwpAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIw
MTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJf
bWV0cmljcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNf
Y29tbW9uLmgiCisKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCisvLyBWZXJpZnkgY29uc3RhbnQgaml0dGVyLgorVEVTVChBcGlDYWxsSml0dGVyTWV0cmlj
cywgQ29uc3RhbnRKaXR0ZXIpIHsKKyAgZm9yIChpbnQgaml0dGVyID0gMTsgaml0dGVyIDwgMjA7
ICsraml0dGVyKSB7CisgICAgQXBpQ2FsbEppdHRlck1ldHJpY3MgbWV0cmljczsKKyAgICBmb3Ig
KHNpemVfdCBrID0gMDsgayA8IDMwICoga051bUJsb2Nrc1BlclNlY29uZDsgKytrKSB7CisgICAg
ICBmb3IgKGludCBqID0gMDsgaiA8IGppdHRlcjsgKytqKSB7CisgICAgICAgIG1ldHJpY3MuUmVw
b3J0UmVuZGVyQ2FsbCgpOworICAgICAgfQorCisgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGpp
dHRlcjsgKytqKSB7CisgICAgICAgIG1ldHJpY3MuUmVwb3J0Q2FwdHVyZUNhbGwoKTsKKworICAg
ICAgICBpZiAobWV0cmljcy5XaWxsUmVwb3J0TWV0cmljc0F0TmV4dENhcHR1cmUoKSkgeworICAg
ICAgICAgIEVYUEVDVF9FUShqaXR0ZXIsIG1ldHJpY3MucmVuZGVyX2ppdHRlcigpLm1pbigpKTsK
KyAgICAgICAgICBFWFBFQ1RfRVEoaml0dGVyLCBtZXRyaWNzLnJlbmRlcl9qaXR0ZXIoKS5tYXgo
KSk7CisgICAgICAgICAgRVhQRUNUX0VRKGppdHRlciwgbWV0cmljcy5jYXB0dXJlX2ppdHRlcigp
Lm1pbigpKTsKKyAgICAgICAgICBFWFBFQ1RfRVEoaml0dGVyLCBtZXRyaWNzLmNhcHR1cmVfaml0
dGVyKCkubWF4KCkpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9CisKKy8vIFZl
cmlmeSBwZWFreSBqaXR0ZXIgZm9yIHRoZSByZW5kZXIuCitURVNUKEFwaUNhbGxKaXR0ZXJNZXRy
aWNzLCBKaXR0ZXJQZWFrUmVuZGVyKSB7CisgIGNvbnN0ZXhwciBpbnQga01pbkppdHRlciA9IDI7
CisgIGNvbnN0ZXhwciBpbnQga0ppdHRlclBlYWsgPSAxMDsKKyAgY29uc3RleHByIGludCBrUGVh
a0ludGVydmFsID0gMTAwOworCisgIEFwaUNhbGxKaXR0ZXJNZXRyaWNzIG1ldHJpY3M7CisgIGlu
dCByZW5kZXJfc3VycGx1cyA9IDA7CisKKyAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAzMCAqIGtO
dW1CbG9ja3NQZXJTZWNvbmQ7ICsraykgeworICAgIGNvbnN0IGludCBudW1fcmVuZGVyX2NhbGxz
ID0KKyAgICAgICAgayAlIGtQZWFrSW50ZXJ2YWwgPT0gMCA/IGtKaXR0ZXJQZWFrIDoga01pbkpp
dHRlcjsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bV9yZW5kZXJfY2FsbHM7ICsraikgewor
ICAgICAgbWV0cmljcy5SZXBvcnRSZW5kZXJDYWxsKCk7CisgICAgICArK3JlbmRlcl9zdXJwbHVz
OworICAgIH0KKworICAgIEFTU0VSVF9MRShrTWluSml0dGVyLCByZW5kZXJfc3VycGx1cyk7Cisg
ICAgY29uc3QgaW50IG51bV9jYXB0dXJlX2NhbGxzID0KKyAgICAgICAgcmVuZGVyX3N1cnBsdXMg
PT0ga01pbkppdHRlciA/IGtNaW5KaXR0ZXIgOiBrTWluSml0dGVyICsgMTsKKyAgICBmb3IgKGlu
dCBqID0gMDsgaiA8IG51bV9jYXB0dXJlX2NhbGxzOyArK2opIHsKKyAgICAgIG1ldHJpY3MuUmVw
b3J0Q2FwdHVyZUNhbGwoKTsKKworICAgICAgaWYgKG1ldHJpY3MuV2lsbFJlcG9ydE1ldHJpY3NB
dE5leHRDYXB0dXJlKCkpIHsKKyAgICAgICAgRVhQRUNUX0VRKGtNaW5KaXR0ZXIsIG1ldHJpY3Mu
cmVuZGVyX2ppdHRlcigpLm1pbigpKTsKKyAgICAgICAgRVhQRUNUX0VRKGtKaXR0ZXJQZWFrLCBt
ZXRyaWNzLnJlbmRlcl9qaXR0ZXIoKS5tYXgoKSk7CisgICAgICAgIEVYUEVDVF9FUShrTWluSml0
dGVyLCBtZXRyaWNzLmNhcHR1cmVfaml0dGVyKCkubWluKCkpOworICAgICAgICBFWFBFQ1RfRVEo
a01pbkppdHRlciArIDEsIG1ldHJpY3MuY2FwdHVyZV9qaXR0ZXIoKS5tYXgoKSk7CisgICAgICB9
CisgICAgICAtLXJlbmRlcl9zdXJwbHVzOworICAgIH0KKyAgfQorfQorCisvLyBWZXJpZnkgcGVh
a3kgaml0dGVyIGZvciB0aGUgY2FwdHVyZS4KK1RFU1QoQXBpQ2FsbEppdHRlck1ldHJpY3MsIEpp
dHRlclBlYWtDYXB0dXJlKSB7CisgIGNvbnN0ZXhwciBpbnQga01pbkppdHRlciA9IDI7CisgIGNv
bnN0ZXhwciBpbnQga0ppdHRlclBlYWsgPSAxMDsKKyAgY29uc3RleHByIGludCBrUGVha0ludGVy
dmFsID0gMTAwOworCisgIEFwaUNhbGxKaXR0ZXJNZXRyaWNzIG1ldHJpY3M7CisgIGludCBjYXB0
dXJlX3N1cnBsdXMgPSBrTWluSml0dGVyOworCisgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgMzAg
KiBrTnVtQmxvY2tzUGVyU2Vjb25kOyArK2spIHsKKyAgICBBU1NFUlRfTEUoa01pbkppdHRlciwg
Y2FwdHVyZV9zdXJwbHVzKTsKKyAgICBjb25zdCBpbnQgbnVtX3JlbmRlcl9jYWxscyA9CisgICAg
ICAgIGNhcHR1cmVfc3VycGx1cyA9PSBrTWluSml0dGVyID8ga01pbkppdHRlciA6IGtNaW5KaXR0
ZXIgKyAxOworICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtX3JlbmRlcl9jYWxsczsgKytqKSB7
CisgICAgICBtZXRyaWNzLlJlcG9ydFJlbmRlckNhbGwoKTsKKyAgICAgIC0tY2FwdHVyZV9zdXJw
bHVzOworICAgIH0KKworICAgIGNvbnN0IGludCBudW1fY2FwdHVyZV9jYWxscyA9CisgICAgICAg
IGsgJSBrUGVha0ludGVydmFsID09IDAgPyBrSml0dGVyUGVhayA6IGtNaW5KaXR0ZXI7CisgICAg
Zm9yIChpbnQgaiA9IDA7IGogPCBudW1fY2FwdHVyZV9jYWxsczsgKytqKSB7CisgICAgICBtZXRy
aWNzLlJlcG9ydENhcHR1cmVDYWxsKCk7CisKKyAgICAgIGlmIChtZXRyaWNzLldpbGxSZXBvcnRN
ZXRyaWNzQXROZXh0Q2FwdHVyZSgpKSB7CisgICAgICAgIEVYUEVDVF9FUShrTWluSml0dGVyLCBt
ZXRyaWNzLnJlbmRlcl9qaXR0ZXIoKS5taW4oKSk7CisgICAgICAgIEVYUEVDVF9FUShrTWluSml0
dGVyICsgMSwgbWV0cmljcy5yZW5kZXJfaml0dGVyKCkubWF4KCkpOworICAgICAgICBFWFBFQ1Rf
RVEoa01pbkppdHRlciwgbWV0cmljcy5jYXB0dXJlX2ppdHRlcigpLm1pbigpKTsKKyAgICAgICAg
RVhQRUNUX0VRKGtKaXR0ZXJQZWFrLCBtZXRyaWNzLmNhcHR1cmVfaml0dGVyKCkubWF4KCkpOwor
ICAgICAgfQorICAgICAgKytjYXB0dXJlX3N1cnBsdXM7CisgICAgfQorICB9Cit9CisKK30gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX2RlbGF5
X2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfZGVsYXlfYnVmZmVyLmgKaW5kZXggNmU1
ZmQ1YzA5ZDBkNDZlMjUwODJkNTY4MDVhYzJkY2YxZWI0ZDA4OC4uNjI0ZTkxMzlhMzg4OGM5MGEw
ODZkMjVmYzI1NWExNjZlZTM4OWNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tf
ZGVsYXlfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfZGVsYXlfYnVmZmVyLmgK
QEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNf
QkxPQ0tfREVMQVlfQlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19B
RUMzX0JMT0NLX0RFTEFZX0JVRkZFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1
ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfZnJhbWVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvYmxvY2tfZnJhbWVyLmNjCmluZGV4IDMxNjA2MjQ1MTVhYmFlOTljOTI0ODZi
N2NlMzA4Y2Y4MjhjMzgyZGIuLmNhNzY2N2MyNGY0NjI2ZjM0Y2I1OTc4ZTI2NzEwMzljOWQzN2Q3
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX2ZyYW1lci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9ibG9ja19mcmFtZXIuY2MKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUg
PGFsZ29yaXRobT4KIAorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Fl
YzNfY29tbW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yLmNjCmluZGV4IDFiYjY5NTg0Y2MzZmJmNzkz
MmMxYTY3MjIxN2QxZjVlMGQ1NjlhNzguLmVmMjVlN2MyM2JjNzU0ZWRjYzYwNDg4OGFhMDNjNmYy
YzliNzFmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3IuY2MKQEAgLTksMTIgKzksMTYgQEAK
ICAqLwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nl
c3Nvci5oIgogCisjaW5jbHVkZSA8dXRpbGl0eT4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0
aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2Nv
bW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3By
b2Nlc3Nvcl9tZXRyaWNzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZGVsYXlfZXN0aW1hdGUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9lY2hvX3BhdGhfdmFyaWFiaWxpdHkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9h
dG9taWNvcHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgog
CkBAIC0xMDQsNyArMTA4LDcgQEAgdm9pZCBCbG9ja1Byb2Nlc3NvckltcGw6OlByb2Nlc3NDYXB0
dXJlKAogICAgIGlmICghY2FwdHVyZV9wcm9wZXJseV9zdGFydGVkXykgewogICAgICAgY2FwdHVy
ZV9wcm9wZXJseV9zdGFydGVkXyA9IHRydWU7CiAgICAgICByZW5kZXJfYnVmZmVyXy0+UmVzZXQo
KTsKLSAgICAgIGRlbGF5X2NvbnRyb2xsZXJfLT5SZXNldCgpOworICAgICAgZGVsYXlfY29udHJv
bGxlcl8tPlJlc2V0KHRydWUpOwogICAgIH0KICAgfSBlbHNlIHsKICAgICAvLyBJZiBubyByZW5k
ZXIgZGF0YSBoYXMgeWV0IGFycml2ZWQsIGRvIG5vdCBwcm9jZXNzIHRoZSBjYXB0dXJlIHNpZ25h
bC4KQEAgLTExOSw3ICsxMjMsNyBAQCB2b2lkIEJsb2NrUHJvY2Vzc29ySW1wbDo6UHJvY2Vzc0Nh
cHR1cmUoCiAgICAgICByZW5kZXJfcHJvcGVybHlfc3RhcnRlZF8pIHsKICAgICBlY2hvX3BhdGhf
dmFyaWFiaWxpdHkuZGVsYXlfY2hhbmdlID0KICAgICAgICAgRWNob1BhdGhWYXJpYWJpbGl0eTo6
RGVsYXlBZGp1c3RtZW50OjprQnVmZmVyRmx1c2g7Ci0gICAgZGVsYXlfY29udHJvbGxlcl8tPlJl
c2V0KCk7CisgICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0KHRydWUpOwogICAgIFJUQ19MT0co
TFNfV0FSTklORykgPDwgIlJlc2V0IGR1ZSB0byByZW5kZXIgYnVmZmVyIG92ZXJydW4gYXQgYmxv
Y2sgICIKICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGNhcHR1cmVfY2FsbF9jb3VudGVyXzsK
ICAgfQpAQCAtMTM1LDExICsxMzksMTEgQEAgdm9pZCBCbG9ja1Byb2Nlc3NvckltcGw6OlByb2Nl
c3NDYXB0dXJlKAogICAgICAgICBlc3RpbWF0ZWRfZGVsYXlfLT5xdWFsaXR5ID09IERlbGF5RXN0
aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVkKSB7CiAgICAgICBlY2hvX3BhdGhfdmFyaWFiaWxpdHku
ZGVsYXlfY2hhbmdlID0KICAgICAgICAgICBFY2hvUGF0aFZhcmlhYmlsaXR5OjpEZWxheUFkanVz
dG1lbnQ6OmtEZWxheVJlc2V0OwotICAgICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0KCk7Cisg
ICAgICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQodHJ1ZSk7CiAgICAgICBjYXB0dXJlX3Byb3Bl
cmx5X3N0YXJ0ZWRfID0gZmFsc2U7CiAgICAgICByZW5kZXJfcHJvcGVybHlfc3RhcnRlZF8gPSBm
YWxzZTsKIAotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVzZXQgZHVlIHRvIHJlbmRl
ciBidWZmZXIgdW5kZXJycnVuIGF0IGJsb2NrICIKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIlJlc2V0IGR1ZSB0byByZW5kZXIgYnVmZmVyIHVuZGVycnVuIGF0IGJsb2NrICIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgY2FwdHVyZV9jYWxsX2NvdW50ZXJfOwogICAgIH0KICAg
fSBlbHNlIGlmIChyZW5kZXJfZXZlbnRfID09IFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdF
dmVudDo6a0FwaUNhbGxTa2V3KSB7CkBAIC0xNDcsNyArMTUxLDcgQEAgdm9pZCBCbG9ja1Byb2Nl
c3NvckltcGw6OlByb2Nlc3NDYXB0dXJlKAogICAgIC8vIGVjaG8uCiAgICAgZWNob19wYXRoX3Zh
cmlhYmlsaXR5LmRlbGF5X2NoYW5nZSA9CiAgICAgICAgIEVjaG9QYXRoVmFyaWFiaWxpdHk6OkRl
bGF5QWRqdXN0bWVudDo6a0RlbGF5UmVzZXQ7Ci0gICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0
KCk7CisgICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0KHRydWUpOwogICAgIGNhcHR1cmVfcHJv
cGVybHlfc3RhcnRlZF8gPSBmYWxzZTsKICAgICByZW5kZXJfcHJvcGVybHlfc3RhcnRlZF8gPSBm
YWxzZTsKICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJSZXNldCBkdWUgdG8gcmVuZGVyIGJ1
ZmZlciBhcGkgc2tldyBhdCBibG9jayAiCkBAIC0xODAsNyArMTg0LDcgQEAgdm9pZCBCbG9ja1By
b2Nlc3NvckltcGw6OlByb2Nlc3NDYXB0dXJlKAogICAgICAgaWYgKGVzdGltYXRlZF9kZWxheV8t
PnF1YWxpdHkgPT0gRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a1JlZmluZWQpIHsKICAgICAgICAg
ZWNob19wYXRoX3ZhcmlhYmlsaXR5LmRlbGF5X2NoYW5nZSA9CiAgICAgICAgICAgICBFY2hvUGF0
aFZhcmlhYmlsaXR5OjpEZWxheUFkanVzdG1lbnQ6OmtEZWxheVJlc2V0OwotICAgICAgICBkZWxh
eV9jb250cm9sbGVyXy0+UmVzZXQoKTsKKyAgICAgICAgZGVsYXlfY29udHJvbGxlcl8tPlJlc2V0
KHRydWUpOwogICAgICAgICByZW5kZXJfYnVmZmVyXy0+UmVzZXQoKTsKICAgICAgICAgY2FwdHVy
ZV9wcm9wZXJseV9zdGFydGVkXyA9IGZhbHNlOwogICAgICAgICByZW5kZXJfcHJvcGVybHlfc3Rh
cnRlZF8gPSBmYWxzZTsKQEAgLTE5MCw2ICsxOTQsOCBAQCB2b2lkIEJsb2NrUHJvY2Vzc29ySW1w
bDo6UHJvY2Vzc0NhcHR1cmUoCiAgICAgfQogICB9CiAKKyAgZWNob19wYXRoX3ZhcmlhYmlsaXR5
LmNsb2NrX2RyaWZ0ID0gZGVsYXlfY29udHJvbGxlcl8tPkhhc0Nsb2NrZHJpZnQoKTsKKwogICAv
LyBSZW1vdmUgdGhlIGVjaG8gZnJvbSB0aGUgY2FwdHVyZSBzaWduYWwuCiAgIGVjaG9fcmVtb3Zl
cl8tPlByb2Nlc3NDYXB0dXJlKAogICAgICAgZWNob19wYXRoX3ZhcmlhYmlsaXR5LCBjYXB0dXJl
X3NpZ25hbF9zYXR1cmF0aW9uLCBlc3RpbWF0ZWRfZGVsYXlfLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNz
b3IuaAppbmRleCBhMzk2N2VhN2U0YTQxZTU3NzE0NGU5YzIwNmIxNWYzOGE5ODRiNzlmLi41Zjdl
YzdjMTdjM2M4NmI3ODkyYjMwZjNiMWNiODVmYjBlMWRiNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9ibG9ja19wcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9j
ZXNzb3IuaApAQCAtMTEsOSArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX0FFQzNfQkxPQ0tfUFJPQ0VTU09SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BRUMzX0JMT0NLX1BST0NFU1NPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS9hdWRpby9l
Y2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY29udHJv
bC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zl
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxh
eV9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5k
ZXJfZGVsYXlfY29udHJvbGxlci5oIgpAQCAtMjMsMTkgKzI2LDMzIEBAIG5hbWVzcGFjZSB3ZWJy
dGMgewogLy8gQ2xhc3MgZm9yIHBlcmZvcm1pbmcgZWNobyBjYW5jZWxsYXRpb24gb24gNjQgc2Ft
cGxlIGJsb2NrcyBvZiBhdWRpbyBkYXRhLgogY2xhc3MgQmxvY2tQcm9jZXNzb3IgewogIHB1Ymxp
YzoKKyAgLy8gQ3JlYXRlIGEgYmxvY2sgcHJvY2Vzc29yIHdpdGggdGhlIGxlZ2FjeSByZW5kZXIg
YnVmZmVyaW5nLgogICBzdGF0aWMgQmxvY2tQcm9jZXNzb3IqIENyZWF0ZShjb25zdCBFY2hvQ2Fu
Y2VsbGVyM0NvbmZpZyYgY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2FtcGxlX3JhdGVfaHopOworICAvLyBDcmVhdGUgYSBibG9jayBwcm9jZXNzb3Igd2l0aCB0
aGUgbmV3IHJlbmRlciBidWZmZXJpbmcuCisgIHN0YXRpYyBCbG9ja1Byb2Nlc3NvciogQ3JlYXRl
Mihjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6KTsKICAgLy8gT25seSB1c2VkIGZvciB0
ZXN0aW5nIHB1cnBvc2VzLgogICBzdGF0aWMgQmxvY2tQcm9jZXNzb3IqIENyZWF0ZSgKICAgICAg
IGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAgICBpbnQgc2FtcGxlX3Jh
dGVfaHosCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9i
dWZmZXIpOworICBzdGF0aWMgQmxvY2tQcm9jZXNzb3IqIENyZWF0ZTIoCisgICAgICBjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgICAgaW50IHNhbXBsZV9yYXRlX2h6LAor
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyKTsK
ICAgc3RhdGljIEJsb2NrUHJvY2Vzc29yKiBDcmVhdGUoCiAgICAgICBjb25zdCBFY2hvQ2FuY2Vs
bGVyM0NvbmZpZyYgY29uZmlnLAogICAgICAgaW50IHNhbXBsZV9yYXRlX2h6LAogICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyLAogICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlciwKICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gZWNob19yZW1vdmVyKTsKKyAgc3RhdGlj
IEJsb2NrUHJvY2Vzc29yKiBDcmVhdGUyKAorICAgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25m
aWcmIGNvbmZpZywKKyAgICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKKyAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlciwKKyAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5X2NvbnRyb2xsZXIsCisgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RWNob1JlbW92ZXI+IGVjaG9fcmVtb3Zlcik7CiAKICAgdmlydHVhbCB+Qmxv
Y2tQcm9jZXNzb3IoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Js
b2NrX3Byb2Nlc3NvcjIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3IyLmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjMwYmQzZWU1Y2EyOTUyY2EyMjdlNDFiNjFjNDAyMDU2MzQwYjFkNGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3IyLmNjCkBAIC0wLDAg
KzEsMjU2IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNp
bmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisK
KyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2Vj
aG9fY2FuY2VsbGVyM19jb25maWcuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jb250cm9s
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24u
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNz
b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9j
ZXNzb3JfbWV0cmljcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2RlbGF5X2VzdGltYXRlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZWNob19wYXRoX3ZhcmlhYmlsaXR5LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25h
bWVzcGFjZSB7CisKK2VudW0gY2xhc3MgQmxvY2tQcm9jZXNzb3JBcGlDYWxsIHsga0NhcHR1cmUs
IGtSZW5kZXIgfTsKKworY2xhc3MgQmxvY2tQcm9jZXNzb3JJbXBsMiBmaW5hbCA6IHB1YmxpYyBC
bG9ja1Byb2Nlc3NvciB7CisgcHVibGljOgorICBCbG9ja1Byb2Nlc3NvckltcGwyKGNvbnN0IEVj
aG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgaW50IHNh
bXBsZV9yYXRlX2h6LAorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPiBkZWxheV9jb250cm9sbGVyLAorICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gZWNob19yZW1v
dmVyKTsKKworICBCbG9ja1Byb2Nlc3NvckltcGwyKCkgPSBkZWxldGU7CisKKyAgfkJsb2NrUHJv
Y2Vzc29ySW1wbDIoKSBvdmVycmlkZTsKKworICB2b2lkIFByb2Nlc3NDYXB0dXJlKGJvb2wgZWNo
b19wYXRoX2dhaW5fY2hhbmdlLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FwdHVyZV9z
aWduYWxfc2F0dXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6
OnZlY3RvcjxmbG9hdD4+KiBjYXB0dXJlX2Jsb2NrKSBvdmVycmlkZTsKKworICB2b2lkIEJ1ZmZl
clJlbmRlcihjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+JiBibG9jaykgb3Zl
cnJpZGU7CisKKyAgdm9pZCBVcGRhdGVFY2hvTGVha2FnZVN0YXR1cyhib29sIGxlYWthZ2VfZGV0
ZWN0ZWQpIG92ZXJyaWRlOworCisgIHZvaWQgR2V0TWV0cmljcyhFY2hvQ29udHJvbDo6TWV0cmlj
cyogbWV0cmljcykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgdm9pZCBTZXRBdWRpb0J1ZmZlckRlbGF5
KHNpemVfdCBkZWxheV9tcykgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorICBzdGF0aWMgaW50IGlu
c3RhbmNlX2NvdW50XzsKKyAgc3RkOjp1bmlxdWVfcHRyPEFwbURhdGFEdW1wZXI+IGRhdGFfZHVt
cGVyXzsKKyAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnXzsKKyAgYm9vbCBjYXB0
dXJlX3Byb3Blcmx5X3N0YXJ0ZWRfID0gZmFsc2U7CisgIGJvb2wgcmVuZGVyX3Byb3Blcmx5X3N0
YXJ0ZWRfID0gZmFsc2U7CisgIGNvbnN0IHNpemVfdCBzYW1wbGVfcmF0ZV9oel87CisgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2J1ZmZlcl87CisgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5X2NvbnRyb2xsZXJfOworICBzdGQ6
OnVuaXF1ZV9wdHI8RWNob1JlbW92ZXI+IGVjaG9fcmVtb3Zlcl87CisgIEJsb2NrUHJvY2Vzc29y
TWV0cmljcyBtZXRyaWNzXzsKKyAgUmVuZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50IHJl
bmRlcl9ldmVudF87CisgIHNpemVfdCBjYXB0dXJlX2NhbGxfY291bnRlcl8gPSAwOworICBhYnNs
OjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBlc3RpbWF0ZWRfZGVsYXlfOworICBhYnNsOjpvcHRp
b25hbDxpbnQ+IGVjaG9fcmVtb3Zlcl9kZWxheV87Cit9OworCitpbnQgQmxvY2tQcm9jZXNzb3JJ
bXBsMjo6aW5zdGFuY2VfY291bnRfID0gMDsKKworQmxvY2tQcm9jZXNzb3JJbXBsMjo6QmxvY2tQ
cm9jZXNzb3JJbXBsMigKKyAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAor
ICAgIGludCBzYW1wbGVfcmF0ZV9oeiwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlC
dWZmZXI+IHJlbmRlcl9idWZmZXIsCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29u
dHJvbGxlcj4gZGVsYXlfY29udHJvbGxlciwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RWNob1JlbW92
ZXI+IGVjaG9fcmVtb3ZlcikKKyAgICA6IGRhdGFfZHVtcGVyXygKKyAgICAgICAgICBuZXcgQXBt
RGF0YUR1bXBlcihydGM6OkF0b21pY09wczo6SW5jcmVtZW50KCZpbnN0YW5jZV9jb3VudF8pKSks
CisgICAgICBjb25maWdfKGNvbmZpZyksCisgICAgICBzYW1wbGVfcmF0ZV9oel8oc2FtcGxlX3Jh
dGVfaHopLAorICAgICAgcmVuZGVyX2J1ZmZlcl8oc3RkOjptb3ZlKHJlbmRlcl9idWZmZXIpKSwK
KyAgICAgIGRlbGF5X2NvbnRyb2xsZXJfKHN0ZDo6bW92ZShkZWxheV9jb250cm9sbGVyKSksCisg
ICAgICBlY2hvX3JlbW92ZXJfKHN0ZDo6bW92ZShlY2hvX3JlbW92ZXIpKSwKKyAgICAgIHJlbmRl
cl9ldmVudF8oUmVuZGVyRGVsYXlCdWZmZXI6OkJ1ZmZlcmluZ0V2ZW50OjprTm9uZSkgeworICBS
VENfRENIRUNLKFZhbGlkRnVsbEJhbmRSYXRlKHNhbXBsZV9yYXRlX2h6XykpOworfQorCitCbG9j
a1Byb2Nlc3NvckltcGwyOjp+QmxvY2tQcm9jZXNzb3JJbXBsMigpID0gZGVmYXVsdDsKKwordm9p
ZCBCbG9ja1Byb2Nlc3NvckltcGwyOjpQcm9jZXNzQ2FwdHVyZSgKKyAgICBib29sIGVjaG9fcGF0
aF9nYWluX2NoYW5nZSwKKyAgICBib29sIGNhcHR1cmVfc2lnbmFsX3NhdHVyYXRpb24sCisgICAg
c3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiogY2FwdHVyZV9ibG9jaykgeworICBSVENf
RENIRUNLKGNhcHR1cmVfYmxvY2spOworICBSVENfRENIRUNLX0VRKE51bUJhbmRzRm9yUmF0ZShz
YW1wbGVfcmF0ZV9oel8pLCBjYXB0dXJlX2Jsb2NrLT5zaXplKCkpOworICBSVENfRENIRUNLX0VR
KGtCbG9ja1NpemUsICgqY2FwdHVyZV9ibG9jaylbMF0uc2l6ZSgpKTsKKworICBjYXB0dXJlX2Nh
bGxfY291bnRlcl8rKzsKKworICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfcHJvY2Vzc2Js
b2NrX2NhbGxfb3JkZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
PihCbG9ja1Byb2Nlc3NvckFwaUNhbGw6OmtDYXB0dXJlKSk7CisgIGRhdGFfZHVtcGVyXy0+RHVt
cFdhdigiYWVjM19wcm9jZXNzYmxvY2tfY2FwdHVyZV9pbnB1dCIsIGtCbG9ja1NpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAmKCpjYXB0dXJlX2Jsb2NrKVswXVswXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIExvd2VzdEJhbmRSYXRlKHNhbXBsZV9yYXRlX2h6XyksIDEpOworCisgIGlm
IChyZW5kZXJfcHJvcGVybHlfc3RhcnRlZF8pIHsKKyAgICBpZiAoIWNhcHR1cmVfcHJvcGVybHlf
c3RhcnRlZF8pIHsKKyAgICAgIGNhcHR1cmVfcHJvcGVybHlfc3RhcnRlZF8gPSB0cnVlOworICAg
ICAgcmVuZGVyX2J1ZmZlcl8tPlJlc2V0KCk7CisgICAgICBkZWxheV9jb250cm9sbGVyXy0+UmVz
ZXQodHJ1ZSk7CisgICAgfQorICB9IGVsc2UgeworICAgIC8vIElmIG5vIHJlbmRlciBkYXRhIGhh
cyB5ZXQgYXJyaXZlZCwgZG8gbm90IHByb2Nlc3MgdGhlIGNhcHR1cmUgc2lnbmFsLgorICAgIHJl
dHVybjsKKyAgfQorCisgIEVjaG9QYXRoVmFyaWFiaWxpdHkgZWNob19wYXRoX3ZhcmlhYmlsaXR5
KAorICAgICAgZWNob19wYXRoX2dhaW5fY2hhbmdlLCBFY2hvUGF0aFZhcmlhYmlsaXR5OjpEZWxh
eUFkanVzdG1lbnQ6OmtOb25lLAorICAgICAgZmFsc2UpOworCisgIGlmIChyZW5kZXJfZXZlbnRf
ID09IFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVudDo6a1JlbmRlck92ZXJydW4gJiYK
KyAgICAgIHJlbmRlcl9wcm9wZXJseV9zdGFydGVkXykgeworICAgIGVjaG9fcGF0aF92YXJpYWJp
bGl0eS5kZWxheV9jaGFuZ2UgPQorICAgICAgICBFY2hvUGF0aFZhcmlhYmlsaXR5OjpEZWxheUFk
anVzdG1lbnQ6OmtCdWZmZXJGbHVzaDsKKyAgICBkZWxheV9jb250cm9sbGVyXy0+UmVzZXQodHJ1
ZSk7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVzZXQgZHVlIHRvIHJlbmRlciBidWZm
ZXIgb3ZlcnJ1biBhdCBibG9jayAgIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgY2FwdHVy
ZV9jYWxsX2NvdW50ZXJfOworICB9CisgIHJlbmRlcl9ldmVudF8gPSBSZW5kZXJEZWxheUJ1ZmZl
cjo6QnVmZmVyaW5nRXZlbnQ6OmtOb25lOworCisgIC8vIFVwZGF0ZSB0aGUgcmVuZGVyIGJ1ZmZl
cnMgd2l0aCBhbnkgbmV3bHkgYXJyaXZlZCByZW5kZXIgYmxvY2tzIGFuZCBwcmVwYXJlCisgIC8v
IHRoZSByZW5kZXIgYnVmZmVycyBmb3IgcmVhZGluZyB0aGUgcmVuZGVyIGRhdGEgY29ycmVzcG9u
ZGluZyB0byB0aGUgY3VycmVudAorICAvLyBjYXB0dXJlIGJsb2NrLgorICBSZW5kZXJEZWxheUJ1
ZmZlcjo6QnVmZmVyaW5nRXZlbnQgYnVmZmVyX2V2ZW50ID0KKyAgICAgIHJlbmRlcl9idWZmZXJf
LT5QcmVwYXJlQ2FwdHVyZVByb2Nlc3NpbmcoKTsKKyAgLy8gUmVzZXQgdGhlIGRlbGF5IGNvbnRy
b2xsZXIgYXQgcmVuZGVyIGJ1ZmZlciB1bmRlcnJ1bi4KKyAgaWYgKGJ1ZmZlcl9ldmVudCA9PSBS
ZW5kZXJEZWxheUJ1ZmZlcjo6QnVmZmVyaW5nRXZlbnQ6OmtSZW5kZXJVbmRlcnJ1bikgeworICAg
IGRlbGF5X2NvbnRyb2xsZXJfLT5SZXNldChmYWxzZSk7CisgIH0KKworICBkYXRhX2R1bXBlcl8t
PkR1bXBXYXYoImFlYzNfcHJvY2Vzc2Jsb2NrX2NhcHR1cmVfaW5wdXQyIiwga0Jsb2NrU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICYoKmNhcHR1cmVfYmxvY2spWzBdWzBdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgTG93ZXN0QmFuZFJhdGUoc2FtcGxlX3JhdGVfaHpfKSwgMSk7CisK
KyAgLy8gQ29tcHV0ZSBhbmQgYW5kIGFwcGx5IHRoZSByZW5kZXIgZGVsYXkgcmVxdWlyZWQgdG8g
YWNoaWV2ZSBwcm9wZXIgc2lnbmFsCisgIC8vIGFsaWdubWVudC4KKyAgZXN0aW1hdGVkX2RlbGF5
XyA9IGRlbGF5X2NvbnRyb2xsZXJfLT5HZXREZWxheSgKKyAgICAgIHJlbmRlcl9idWZmZXJfLT5H
ZXREb3duc2FtcGxlZFJlbmRlckJ1ZmZlcigpLCByZW5kZXJfYnVmZmVyXy0+RGVsYXkoKSwKKyAg
ICAgIGVjaG9fcmVtb3Zlcl9kZWxheV8sICgqY2FwdHVyZV9ibG9jaylbMF0pOworCisgIGlmIChl
c3RpbWF0ZWRfZGVsYXlfKSB7CisgICAgYm9vbCBkZWxheV9jaGFuZ2UgPSByZW5kZXJfYnVmZmVy
Xy0+U2V0RGVsYXkoZXN0aW1hdGVkX2RlbGF5Xy0+ZGVsYXkpOworICAgIGlmIChkZWxheV9jaGFu
Z2UpIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkRlbGF5IGNoYW5nZWQgdG8gIiA8
PCBlc3RpbWF0ZWRfZGVsYXlfLT5kZWxheQorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
IGF0IGJsb2NrICIgPDwgY2FwdHVyZV9jYWxsX2NvdW50ZXJfOworICAgICAgZWNob19wYXRoX3Zh
cmlhYmlsaXR5LmRlbGF5X2NoYW5nZSA9CisgICAgICAgICAgRWNob1BhdGhWYXJpYWJpbGl0eTo6
RGVsYXlBZGp1c3RtZW50OjprTmV3RGV0ZWN0ZWREZWxheTsKKyAgICB9CisgIH0KKworICBlY2hv
X3BhdGhfdmFyaWFiaWxpdHkuY2xvY2tfZHJpZnQgPSBkZWxheV9jb250cm9sbGVyXy0+SGFzQ2xv
Y2tkcmlmdCgpOworCisgIC8vIFJlbW92ZSB0aGUgZWNobyBmcm9tIHRoZSBjYXB0dXJlIHNpZ25h
bC4KKyAgZWNob19yZW1vdmVyXy0+UHJvY2Vzc0NhcHR1cmUoCisgICAgICBlY2hvX3BhdGhfdmFy
aWFiaWxpdHksIGNhcHR1cmVfc2lnbmFsX3NhdHVyYXRpb24sIGVzdGltYXRlZF9kZWxheV8sCisg
ICAgICByZW5kZXJfYnVmZmVyXy0+R2V0UmVuZGVyQnVmZmVyKCksIGNhcHR1cmVfYmxvY2spOwor
CisgIC8vIENoZWNrIHRvIHNlZSBpZiBhIHJlZmluZWQgZGVsYXkgZXN0aW1hdGUgaGFzIGJlZW4g
b2J0YWluZWQgZnJvbSB0aGUgZWNobworICAvLyByZW1vdmVyLgorICBlY2hvX3JlbW92ZXJfZGVs
YXlfID0gZWNob19yZW1vdmVyXy0+RGVsYXkoKTsKKworICAvLyBVcGRhdGUgdGhlIG1ldHJpY3Mu
CisgIG1ldHJpY3NfLlVwZGF0ZUNhcHR1cmUoZmFsc2UpOworfQorCit2b2lkIEJsb2NrUHJvY2Vz
c29ySW1wbDI6OkJ1ZmZlclJlbmRlcigKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rv
cjxmbG9hdD4+JiBibG9jaykgeworICBSVENfRENIRUNLX0VRKE51bUJhbmRzRm9yUmF0ZShzYW1w
bGVfcmF0ZV9oel8pLCBibG9jay5zaXplKCkpOworICBSVENfRENIRUNLX0VRKGtCbG9ja1NpemUs
IGJsb2NrWzBdLnNpemUoKSk7CisgIGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19wcm9jZXNz
YmxvY2tfY2FsbF9vcmRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQ+KEJsb2NrUHJvY2Vzc29yQXBpQ2FsbDo6a1JlbmRlcikpOworICBkYXRhX2R1bXBlcl8tPkR1
bXBXYXYoImFlYzNfcHJvY2Vzc2Jsb2NrX3JlbmRlcl9pbnB1dCIsIGtCbG9ja1NpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAmYmxvY2tbMF1bMF0sIExvd2VzdEJhbmRSYXRlKHNhbXBsZV9y
YXRlX2h6XyksIDEpOworICBkYXRhX2R1bXBlcl8tPkR1bXBXYXYoImFlYzNfcHJvY2Vzc2Jsb2Nr
X3JlbmRlcl9pbnB1dDIiLCBrQmxvY2tTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgJmJs
b2NrWzBdWzBdLCBMb3dlc3RCYW5kUmF0ZShzYW1wbGVfcmF0ZV9oel8pLCAxKTsKKworICByZW5k
ZXJfZXZlbnRfID0gcmVuZGVyX2J1ZmZlcl8tPkluc2VydChibG9jayk7CisKKyAgbWV0cmljc18u
VXBkYXRlUmVuZGVyKHJlbmRlcl9ldmVudF8gIT0KKyAgICAgICAgICAgICAgICAgICAgICAgIFJl
bmRlckRlbGF5QnVmZmVyOjpCdWZmZXJpbmdFdmVudDo6a05vbmUpOworCisgIHJlbmRlcl9wcm9w
ZXJseV9zdGFydGVkXyA9IHRydWU7CisgIGRlbGF5X2NvbnRyb2xsZXJfLT5Mb2dSZW5kZXJDYWxs
KCk7Cit9CisKK3ZvaWQgQmxvY2tQcm9jZXNzb3JJbXBsMjo6VXBkYXRlRWNob0xlYWthZ2VTdGF0
dXMoYm9vbCBsZWFrYWdlX2RldGVjdGVkKSB7CisgIGVjaG9fcmVtb3Zlcl8tPlVwZGF0ZUVjaG9M
ZWFrYWdlU3RhdHVzKGxlYWthZ2VfZGV0ZWN0ZWQpOworfQorCit2b2lkIEJsb2NrUHJvY2Vzc29y
SW1wbDI6OkdldE1ldHJpY3MoRWNob0NvbnRyb2w6Ok1ldHJpY3MqIG1ldHJpY3MpIGNvbnN0IHsK
KyAgZWNob19yZW1vdmVyXy0+R2V0TWV0cmljcyhtZXRyaWNzKTsKKyAgY29uc3QgaW50IGJsb2Nr
X3NpemVfbXMgPSBzYW1wbGVfcmF0ZV9oel8gPT0gODAwMCA/IDggOiA0OworICBhYnNsOjpvcHRp
b25hbDxzaXplX3Q+IGRlbGF5ID0gcmVuZGVyX2J1ZmZlcl8tPkRlbGF5KCk7CisgIG1ldHJpY3Mt
PmRlbGF5X21zID0gZGVsYXkgPyBzdGF0aWNfY2FzdDxpbnQ+KCpkZWxheSkgKiBibG9ja19zaXpl
X21zIDogMDsKK30KKwordm9pZCBCbG9ja1Byb2Nlc3NvckltcGwyOjpTZXRBdWRpb0J1ZmZlckRl
bGF5KHNpemVfdCBkZWxheV9tcykgeworICByZW5kZXJfYnVmZmVyXy0+U2V0QXVkaW9CdWZmZXJE
ZWxheShkZWxheV9tcyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitCbG9ja1Byb2Nlc3Nvciog
QmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZp
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3Jh
dGVfaHopIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVm
ZmVyKAorICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCBOdW1CYW5kc0Zv
clJhdGUoc2FtcGxlX3JhdGVfaHopKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNv
bnRyb2xsZXI+IGRlbGF5X2NvbnRyb2xsZXIoCisgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6
OkNyZWF0ZTIoY29uZmlnLCBzYW1wbGVfcmF0ZV9oeikpOworICBzdGQ6OnVuaXF1ZV9wdHI8RWNo
b1JlbW92ZXI+IGVjaG9fcmVtb3ZlcigKKyAgICAgIEVjaG9SZW1vdmVyOjpDcmVhdGUoY29uZmln
LCBzYW1wbGVfcmF0ZV9oeikpOworICByZXR1cm4gQ3JlYXRlMihjb25maWcsIHNhbXBsZV9yYXRl
X2h6LCBzdGQ6Om1vdmUocmVuZGVyX2J1ZmZlciksCisgICAgICAgICAgICAgICAgIHN0ZDo6bW92
ZShkZWxheV9jb250cm9sbGVyKSwgc3RkOjptb3ZlKGVjaG9fcmVtb3ZlcikpOworfQorCitCbG9j
a1Byb2Nlc3NvciogQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoCisgICAgY29uc3QgRWNob0NhbmNl
bGxlcjNDb25maWcmIGNvbmZpZywKKyAgICBpbnQgc2FtcGxlX3JhdGVfaHosCisgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyKSB7CisgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5X2NvbnRyb2xsZXIoCisgICAgICBS
ZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZTIoY29uZmlnLCBzYW1wbGVfcmF0ZV9oeikpOwor
ICBzdGQ6OnVuaXF1ZV9wdHI8RWNob1JlbW92ZXI+IGVjaG9fcmVtb3ZlcigKKyAgICAgIEVjaG9S
ZW1vdmVyOjpDcmVhdGUoY29uZmlnLCBzYW1wbGVfcmF0ZV9oeikpOworICByZXR1cm4gQ3JlYXRl
Mihjb25maWcsIHNhbXBsZV9yYXRlX2h6LCBzdGQ6Om1vdmUocmVuZGVyX2J1ZmZlciksCisgICAg
ICAgICAgICAgICAgIHN0ZDo6bW92ZShkZWxheV9jb250cm9sbGVyKSwgc3RkOjptb3ZlKGVjaG9f
cmVtb3ZlcikpOworfQorCitCbG9ja1Byb2Nlc3NvciogQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIo
CisgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKKyAgICBpbnQgc2FtcGxl
X3JhdGVfaHosCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJf
YnVmZmVyLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5
X2NvbnRyb2xsZXIsCisgICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9SZW1vdmVyPiBlY2hvX3JlbW92
ZXIpIHsKKyAgcmV0dXJuIG5ldyBCbG9ja1Byb2Nlc3NvckltcGwyKAorICAgICAgY29uZmlnLCBz
YW1wbGVfcmF0ZV9oeiwgc3RkOjptb3ZlKHJlbmRlcl9idWZmZXIpLAorICAgICAgc3RkOjptb3Zl
KGRlbGF5X2NvbnRyb2xsZXIpLCBzdGQ6Om1vdmUoZWNob19yZW1vdmVyKSk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nl
c3Nvcl9tZXRyaWNzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yX21ldHJpY3Mu
Y2MKaW5kZXggYzhiZGRhNzM4OThlYzA2MDFkNTY2OTc2MWY3N2I1MTUxNDFmN2FjMS4uZGVhYzFm
Y2QyMjFhMDVlNDIwZTUxZWFkZTM3M2I3N2I5MGUwMjA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYmxvY2tfcHJvY2Vzc29yX21ldHJpY3MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxv
Y2tfcHJvY2Vzc29yX21ldHJpY3MuY2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3JfbWV0cmljcy5oIgogCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5j
bHVkZS9tZXRyaWNzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxv
Y2tfcHJvY2Vzc29yX3VuaXR0ZXN0LmNjCmluZGV4IDcxNDU3ODY4YjI0YWRiZGJjZDYyMWJjZGFh
ZDNmMzIzYjhmZGE5ODYuLjhhYmE1YjU2NjFlNWQ1OTRmNmY2NWEyNzg2MGU1YTUxOTJiZmZkZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvcl91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9ibG9ja19wcm9jZXNzb3JfdW5pdHRlc3QuY2MKQEAgLTM3LDcg
KzM3LDcgQEAgdXNpbmcgdGVzdGluZzo6XzsKIC8vIG1ldGhvZHMgYXJlIGNhbGxhYmxlLgogdm9p
ZCBSdW5CYXNpY1NldHVwQW5kQXBpQ2FsbFRlc3QoaW50IHNhbXBsZV9yYXRlX2h6LCBpbnQgbnVt
X2l0ZXJhdGlvbnMpIHsKICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19w
cm9jZXNzb3IoCi0gICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29u
ZmlnKCksIHNhbXBsZV9yYXRlX2h6KSk7CisgICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMihF
Y2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBzYW1wbGVfcmF0ZV9oeikpOwogICBzdGQ6OnZlY3Rvcjxz
dGQ6OnZlY3RvcjxmbG9hdD4+IGJsb2NrKE51bUJhbmRzRm9yUmF0ZShzYW1wbGVfcmF0ZV9oeiks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Zmxv
YXQ+KGtCbG9ja1NpemUsIDEwMDAuZikpOwogCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgUnVuQmFz
aWNTZXR1cEFuZEFwaUNhbGxUZXN0KGludCBzYW1wbGVfcmF0ZV9oeiwgaW50IG51bV9pdGVyYXRp
b25zKSB7CiAjaWYgUlRDX0RDSEVDS19JU19PTiAmJiBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAh
ZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKIHZvaWQgUnVuUmVuZGVyQmxvY2tTaXplVmVyaWZpY2F0
aW9uVGVzdChpbnQgc2FtcGxlX3JhdGVfaHopIHsKICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJv
Y2Vzc29yPiBibG9ja19wcm9jZXNzb3IoCi0gICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlKEVj
aG9DYW5jZWxsZXIzQ29uZmlnKCksIHNhbXBsZV9yYXRlX2h6KSk7CisgICAgICBCbG9ja1Byb2Nl
c3Nvcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBzYW1wbGVfcmF0ZV9oeikpOwog
ICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IGJsb2NrKAogICAgICAgTnVtQmFuZHNG
b3JSYXRlKHNhbXBsZV9yYXRlX2h6KSwgc3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUgLSAx
LCAwLmYpKTsKIApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFJ1blJlbmRlckJsb2NrU2l6ZVZlcmlm
aWNhdGlvblRlc3QoaW50IHNhbXBsZV9yYXRlX2h6KSB7CiAKIHZvaWQgUnVuQ2FwdHVyZUJsb2Nr
U2l6ZVZlcmlmaWNhdGlvblRlc3QoaW50IHNhbXBsZV9yYXRlX2h6KSB7CiAgIHN0ZDo6dW5pcXVl
X3B0cjxCbG9ja1Byb2Nlc3Nvcj4gYmxvY2tfcHJvY2Vzc29yKAotICAgICAgQmxvY2tQcm9jZXNz
b3I6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBzYW1wbGVfcmF0ZV9oeikpOworICAg
ICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgc2FtcGxl
X3JhdGVfaHopKTsKICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiBibG9jaygKICAg
ICAgIE51bUJhbmRzRm9yUmF0ZShzYW1wbGVfcmF0ZV9oeiksIHN0ZDo6dmVjdG9yPGZsb2F0Pihr
QmxvY2tTaXplIC0gMSwgMC5mKSk7CiAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSdW5SZW5kZXJO
dW1CYW5kc1ZlcmlmaWNhdGlvblRlc3QoaW50IHNhbXBsZV9yYXRlX2h6KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOdW1CYW5kc0ZvclJhdGUoc2FtcGxlX3JhdGVf
aHopICsgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMTsKICAgc3Rk
Ojp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3IoCi0gICAgICBCbG9j
a1Byb2Nlc3Nvcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHNhbXBsZV9yYXRlX2h6
KSk7CisgICAgICBCbG9ja1Byb2Nlc3Nvcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygp
LCBzYW1wbGVfcmF0ZV9oeikpOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IGJs
b2NrKHdyb25nX251bV9iYW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMC5mKSk7CiAKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBSdW5DYXB0dXJlTnVtQmFuZHNWZXJpZmljYXRpb25UZXN0KGludCBzYW1wbGVf
cmF0ZV9oeikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTnVtQmFu
ZHNGb3JSYXRlKHNhbXBsZV9yYXRlX2h6KSArIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IDE7CiAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja1Byb2Nlc3Nvcj4gYmxvY2tf
cHJvY2Vzc29yKAotICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0Nv
bmZpZygpLCBzYW1wbGVfcmF0ZV9oeikpOworICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIo
RWNob0NhbmNlbGxlcjNDb25maWcoKSwgc2FtcGxlX3JhdGVfaHopKTsKICAgc3RkOjp2ZWN0b3I8
c3RkOjp2ZWN0b3I8ZmxvYXQ+PiBibG9jayh3cm9uZ19udW1fYmFuZHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1NpemUs
IDAuZikpOwogCkBAIC0xMjQsNyArMTI0LDcgQEAgVEVTVChCbG9ja1Byb2Nlc3NvciwgRElTQUJM
RURfRGVsYXlDb250cm9sbGVySW50ZWdyYXRpb24pIHsKICAgICBFWFBFQ1RfQ0FMTCgqcmVuZGVy
X2RlbGF5X2J1ZmZlcl9tb2NrLCBEZWxheSgpKQogICAgICAgICAuVGltZXMoa051bUJsb2NrcyAr
IDEpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMCkpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxCbG9ja1Byb2Nlc3Nvcj4gYmxvY2tfcHJvY2Vzc29yKEJsb2NrUHJvY2Vzc29yOjpDcmVh
dGUoCisgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3Io
QmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoCiAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKCks
IHJhdGUsIHN0ZDo6bW92ZShyZW5kZXJfZGVsYXlfYnVmZmVyX21vY2spKSk7CiAKICAgICBzdGQ6
OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IHJlbmRlcl9ibG9jaygKQEAgLTE3Myw3ICsxNzMs
NyBAQCBURVNUKEJsb2NrUHJvY2Vzc29yLCBESVNBQkxFRF9TdWJtb2R1bGVJbnRlZ3JhdGlvbikg
ewogICAgIEVYUEVDVF9DQUxMKCplY2hvX3JlbW92ZXJfbW9jaywgVXBkYXRlRWNob0xlYWthZ2VT
dGF0dXMoXykpCiAgICAgICAgIC5UaW1lcyhrTnVtQmxvY2tzKTsKIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxCbG9ja1Byb2Nlc3Nvcj4gYmxvY2tfcHJvY2Vzc29yKEJsb2NrUHJvY2Vzc29yOjpDcmVh
dGUoCisgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrUHJvY2Vzc29yPiBibG9ja19wcm9jZXNzb3Io
QmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoCiAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKCks
IHJhdGUsIHN0ZDo6bW92ZShyZW5kZXJfZGVsYXlfYnVmZmVyX21vY2spLAogICAgICAgICBzdGQ6
Om1vdmUocmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbW9jayksIHN0ZDo6bW92ZShlY2hvX3JlbW92
ZXJfbW9jaykpKTsKIApAQCAtMjM5LDcgKzIzOSw3IEBAIFRFU1QoQmxvY2tQcm9jZXNzb3IsIFZl
cmlmeUNhcHR1cmVOdW1CYW5kc0NoZWNrKSB7CiAvLyBWZXJpZmllcnMgdGhhdCB0aGUgdmVyaWZp
Y2F0aW9uIGZvciBudWxsIFByb2Nlc3NDYXB0dXJlIGlucHV0IHdvcmtzLgogVEVTVChCbG9ja1By
b2Nlc3NvciwgTnVsbFByb2Nlc3NDYXB0dXJlUGFyYW1ldGVyKSB7CiAgIEVYUEVDVF9ERUFUSChz
dGQ6OnVuaXF1ZV9wdHI8QmxvY2tQcm9jZXNzb3I+KAotICAgICAgICAgICAgICAgICAgIEJsb2Nr
UHJvY2Vzc29yOjpDcmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgODAwMCkpCisgICAgICAg
ICAgICAgICAgICAgQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoRWNob0NhbmNlbGxlcjNDb25maWco
KSwgODAwMCkpCiAgICAgICAgICAgICAgICAgICAgLT5Qcm9jZXNzQ2FwdHVyZShmYWxzZSwgZmFs
c2UsIG51bGxwdHIpLAogICAgICAgICAgICAgICAgIiIpOwogfQpAQCAtMjQ5LDcgKzI0OSw3IEBA
IFRFU1QoQmxvY2tQcm9jZXNzb3IsIE51bGxQcm9jZXNzQ2FwdHVyZVBhcmFtZXRlcikgewogLy8g
dGVzdHMgb24gdGVzdCBib3RzIGhhcyBiZWVuIGZpeGVkLgogVEVTVChCbG9ja1Byb2Nlc3Nvciwg
RElTQUJMRURfV3JvbmdTYW1wbGVSYXRlKSB7CiAgIEVYUEVDVF9ERUFUSChzdGQ6OnVuaXF1ZV9w
dHI8QmxvY2tQcm9jZXNzb3I+KAotICAgICAgICAgICAgICAgICAgIEJsb2NrUHJvY2Vzc29yOjpD
cmVhdGUoRWNob0NhbmNlbGxlcjNDb25maWcoKSwgODAwMSkpLAorICAgICAgICAgICAgICAgICAg
IEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDgwMDEpKSwK
ICAgICAgICAgICAgICAgICIiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2Fz
Y2FkZWRfYmlxdWFkX2ZpbHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nhc2NhZGVkX2JpcXVhZF9m
aWx0ZXIuY2MKaW5kZXggMzMzZDIyNjdhNDE4Y2ZiMTQxOWE2YTJhNmJmZThiYjU1NDYzZGZkZS4u
NWRmZDdjNTRlMmI0ZTRjZjc3YTI2MDA4MzljMzgyNzJkMDczYTkzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvY2FzY2FkZWRfYmlxdWFkX2ZpbHRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9jYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmNjCkBAIC05LDYgKzksOCBAQAogICovCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2FzY2FkZWRfYmlxdWFkX2ZpbHRlci5o
IgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2FzY2Fk
ZWRfYmlxdWFkX2ZpbHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2FzY2FkZWRfYmlxdWFkX2ZpbHRl
ci5oCmluZGV4IDFlMDlmYTZlNWE0MjA0NzYxYmMyNDExY2M5YjNhODdhOGFlZDk5NDguLjJhM2I2
ZDY1YzVhMGY3NTEwYzA2MGZmMDhlYjVhYjAwMDVmMDA1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2Nhc2NhZGVkX2JpcXVhZF9maWx0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jYXNj
YWRlZF9iaXF1YWRfZmlsdGVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0FFQzNfQ0FTQ0FERURfQklRVUFEX0ZJTFRFUl9IXwogI2RlZmluZSBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19DQVNDQURFRF9CSVFVQURfRklMVEVSX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxjb21wbGV4PgogI2luY2x1ZGUgPHZlY3Rv
cj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3IuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM0OWI3
OTVjNDNkYTUzNjNmZTI4NjcxNWY2MWI0ODM3MTIzYzRkNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3IuY2MKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworQ2xvY2tk
cmlmdERldGVjdG9yOjpDbG9ja2RyaWZ0RGV0ZWN0b3IoKQorICAgIDogbGV2ZWxfKExldmVsOjpr
Tm9uZSksIHN0YWJpbGl0eV9jb3VudGVyXygwKSB7CisgIGRlbGF5X2hpc3RvcnlfLmZpbGwoMCk7
Cit9CisKK0Nsb2NrZHJpZnREZXRlY3Rvcjo6fkNsb2NrZHJpZnREZXRlY3RvcigpID0gZGVmYXVs
dDsKKwordm9pZCBDbG9ja2RyaWZ0RGV0ZWN0b3I6OlVwZGF0ZShpbnQgZGVsYXlfZXN0aW1hdGUp
IHsKKyAgaWYgKGRlbGF5X2VzdGltYXRlID09IGRlbGF5X2hpc3RvcnlfWzBdKSB7CisgICAgLy8g
UmVzZXQgY2xvY2tkcmlmdCBsZXZlbCBpZiBkZWxheSBlc3RpbWF0ZSBpcyBzdGFibGUgZm9yIDc1
MDAgYmxvY2tzICgzMAorICAgIC8vIHNlY29uZHMpLgorICAgIGlmICgrK3N0YWJpbGl0eV9jb3Vu
dGVyXyA+IDc1MDApCisgICAgICBsZXZlbF8gPSBMZXZlbDo6a05vbmU7CisgICAgcmV0dXJuOwor
ICB9CisKKyAgc3RhYmlsaXR5X2NvdW50ZXJfID0gMDsKKyAgY29uc3QgaW50IGQxID0gZGVsYXlf
aGlzdG9yeV9bMF0gLSBkZWxheV9lc3RpbWF0ZTsKKyAgY29uc3QgaW50IGQyID0gZGVsYXlfaGlz
dG9yeV9bMV0gLSBkZWxheV9lc3RpbWF0ZTsKKyAgY29uc3QgaW50IGQzID0gZGVsYXlfaGlzdG9y
eV9bMl0gLSBkZWxheV9lc3RpbWF0ZTsKKworICAvLyBQYXR0ZXJucyByZWNvZ25pemVkIGFzIHBv
c2l0aXZlIGNsb2NrZHJpZnQ6CisgIC8vIFt4LTNdLCB4LTIsIHgtMSwgeC4KKyAgLy8gW3gtM10s
IHgtMSwgeC0yLCB4LgorICBjb25zdCBib29sIHByb2JhYmxlX2RyaWZ0X3VwID0KKyAgICAgIChk
MSA9PSAtMSAmJiBkMiA9PSAtMikgfHwgKGQxID09IC0yICYmIGQyID09IC0xKTsKKyAgY29uc3Qg
Ym9vbCBkcmlmdF91cCA9IHByb2JhYmxlX2RyaWZ0X3VwICYmIGQzID09IC0zOworCisgIC8vIFBh
dHRlcm5zIHJlY29nbml6ZWQgYXMgbmVnYXRpdmUgY2xvY2tkcmlmdDoKKyAgLy8gW3grM10sIHgr
MiwgeCsxLCB4LgorICAvLyBbeCszXSwgeCsxLCB4KzIsIHguCisgIGNvbnN0IGJvb2wgcHJvYmFi
bGVfZHJpZnRfZG93biA9IChkMSA9PSAxICYmIGQyID09IDIpIHx8IChkMSA9PSAyICYmIGQyID09
IDEpOworICBjb25zdCBib29sIGRyaWZ0X2Rvd24gPSBwcm9iYWJsZV9kcmlmdF9kb3duICYmIGQz
ID09IDM7CisKKyAgLy8gU2V0IGNsb2NrZHJpZnQgbGV2ZWwuCisgIGlmIChkcmlmdF91cCB8fCBk
cmlmdF9kb3duKSB7CisgICAgbGV2ZWxfID0gTGV2ZWw6OmtWZXJpZmllZDsKKyAgfSBlbHNlIGlm
ICgocHJvYmFibGVfZHJpZnRfdXAgfHwgcHJvYmFibGVfZHJpZnRfZG93bikgJiYKKyAgICAgICAg
ICAgICBsZXZlbF8gPT0gTGV2ZWw6OmtOb25lKSB7CisgICAgbGV2ZWxfID0gTGV2ZWw6OmtQcm9i
YWJsZTsKKyAgfQorCisgIC8vIFNoaWZ0IGRlbGF5IGhpc3Rvcnkgb25lIHN0ZXAuCisgIGRlbGF5
X2hpc3RvcnlfWzJdID0gZGVsYXlfaGlzdG9yeV9bMV07CisgIGRlbGF5X2hpc3RvcnlfWzFdID0g
ZGVsYXlfaGlzdG9yeV9bMF07CisgIGRlbGF5X2hpc3RvcnlfWzBdID0gZGVsYXlfZXN0aW1hdGU7
Cit9Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9j
bG9ja2RyaWZ0X2RldGVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjI1MjhjOTQ4OTIyYTgwY2RiOTRmYzM2NGE0MGE3OGE4YWJiMmZlNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3IuaApA
QCAtMCwwICsxLDM4IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUVDM19DTE9DS0RSSUZUX0RFVEVDVE9SX0hfCisjZGVmaW5lIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0NMT0NLRFJJRlRfREVURUNUT1JfSF8KKworI2lu
Y2x1ZGUgPGFycmF5PgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgQXBtRGF0YUR1bXBl
cjsKK3N0cnVjdCBEb3duc2FtcGxlZFJlbmRlckJ1ZmZlcjsKK3N0cnVjdCBFY2hvQ2FuY2VsbGVy
M0NvbmZpZzsKKworLy8gRGV0ZWN0cyBjbG9ja2RyaWZ0IGJ5IGFuYWx5emluZyB0aGUgZXN0aW1h
dGVkIGRlbGF5LgorY2xhc3MgQ2xvY2tkcmlmdERldGVjdG9yIHsKKyBwdWJsaWM6CisgIGVudW0g
Y2xhc3MgTGV2ZWwgeyBrTm9uZSwga1Byb2JhYmxlLCBrVmVyaWZpZWQsIGtOdW1DYXRlZ29yaWVz
IH07CisgIENsb2NrZHJpZnREZXRlY3RvcigpOworICB+Q2xvY2tkcmlmdERldGVjdG9yKCk7Cisg
IHZvaWQgVXBkYXRlKGludCBkZWxheV9lc3RpbWF0ZSk7CisgIExldmVsIENsb2NrZHJpZnRMZXZl
bCgpIGNvbnN0IHsgcmV0dXJuIGxldmVsXzsgfQorCisgcHJpdmF0ZToKKyAgc3RkOjphcnJheTxp
bnQsIDM+IGRlbGF5X2hpc3RvcnlfOworICBMZXZlbCBsZXZlbF87CisgIHNpemVfdCBzdGFiaWxp
dHlfY291bnRlcl87Cit9OworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1P
RFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0NMT0NLRFJJRlRfREVURUNUT1JfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3JfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9yX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBmOThiMDFkM2FhZTNlYmUxNjdjOWQ5YTQ1MjhhYjQzZjgwNjVkN2YKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9yX3VuaXR0ZXN0LmNjCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisg
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5oIgorCisjaW5jbHVkZSAi
dGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK1RFU1QoQ2xvY2tkcmlmdERldGVj
dG9yLCBDbG9ja2RyaWZ0RGV0ZWN0b3IpIHsKKyAgQ2xvY2tkcmlmdERldGVjdG9yIGM7CisgIC8v
IE5vIGNsb2NrZHJpZnQgYXQgc3RhcnQuCisgIEVYUEVDVF9UUlVFKGMuQ2xvY2tkcmlmdExldmVs
KCkgPT0gQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6a05vbmUpOworCisgIC8vIE1vbm90b25p
Y2FsbHkgaW5jcmVhc2luZyBkZWxheS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykK
KyAgICBjLlVwZGF0ZSgxMDAwKTsKKyAgRVhQRUNUX1RSVUUoYy5DbG9ja2RyaWZ0TGV2ZWwoKSA9
PSBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjprTm9uZSk7CisgIGZvciAoaW50IGkgPSAwOyBp
IDwgMTAwOyBpKyspCisgICAgYy5VcGRhdGUoMTAwMSk7CisgIEVYUEVDVF9UUlVFKGMuQ2xvY2tk
cmlmdExldmVsKCkgPT0gQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6a05vbmUpOworICBmb3Ig
KGludCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAgIGMuVXBkYXRlKDEwMDIpOworICAvLyBQcm9i
YWJsZSBjbG9ja2RyaWZ0LgorICBFWFBFQ1RfVFJVRShjLkNsb2NrZHJpZnRMZXZlbCgpID09IENs
b2NrZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtQcm9iYWJsZSk7CisgIGZvciAoaW50IGkgPSAwOyBp
IDwgMTAwOyBpKyspCisgICAgYy5VcGRhdGUoMTAwMyk7CisgIC8vIFZlcmlmaWVkIGNsb2NrZHJp
ZnQuCisgIEVYUEVDVF9UUlVFKGMuQ2xvY2tkcmlmdExldmVsKCkgPT0gQ2xvY2tkcmlmdERldGVj
dG9yOjpMZXZlbDo6a1ZlcmlmaWVkKTsKKworICAvLyBTdGFibGUgZGVsYXkuCisgIGZvciAoaW50
IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykKKyAgICBjLlVwZGF0ZSgxMDAzKTsKKyAgLy8gTm8gY2xv
Y2tkcmlmdC4KKyAgRVhQRUNUX1RSVUUoYy5DbG9ja2RyaWZ0TGV2ZWwoKSA9PSBDbG9ja2RyaWZ0
RGV0ZWN0b3I6OkxldmVsOjprTm9uZSk7CisKKyAgLy8gRGVjcmVhc2luZyBkZWxheS4KKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBjLlVwZGF0ZSgxMDAxKTsKKyAgZm9yIChp
bnQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICBjLlVwZGF0ZSg5OTkpOworICAvLyBQcm9iYWJs
ZSBjbG9ja2RyaWZ0LgorICBFWFBFQ1RfVFJVRShjLkNsb2NrZHJpZnRMZXZlbCgpID09IENsb2Nr
ZHJpZnREZXRlY3Rvcjo6TGV2ZWw6OmtQcm9iYWJsZSk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwg
MTAwOyBpKyspCisgICAgYy5VcGRhdGUoMTAwMCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAw
OyBpKyspCisgICAgYy5VcGRhdGUoOTk4KTsKKyAgLy8gVmVyaWZpZWQgY2xvY2tkcmlmdC4KKyAg
RVhQRUNUX1RSVUUoYy5DbG9ja2RyaWZ0TGV2ZWwoKSA9PSBDbG9ja2RyaWZ0RGV0ZWN0b3I6Okxl
dmVsOjprVmVyaWZpZWQpOworfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9jb21mb3J0X25vaXNlX2dlbmVyYXRvci5jYwppbmRleCA1NWZhZjRiNTI5MWExNzViYmU0YmRh
YjM1MTYxNGNkMDdiZWVjZjUxLi43NjZlNjU4NjM5ODFjYWZiYTA5ZGQ1MTA4NWRlZjZmMjZjMWY4
OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dlbmVyYXRvci5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jb21mb3J0X25vaXNlX2dlbmVyYXRvci5jYwpAQCAtMTYs
MTMgKzE2LDE2IEBACiAjaWYgZGVmaW5lZChXRUJSVENfQVJDSF9YODZfRkFNSUxZKQogI2luY2x1
ZGUgPGVtbWludHJpbi5oPgogI2VuZGlmCi0jaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxj
c3RkaW50PgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8bnVtZXJpYz4KIAogI2lu
Y2x1ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9j
ZXNzaW5nX2xpYnJhcnkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My92ZWN0b3JfbWF0aC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIApAQCAtMzgsNjQgKzQxLDEwIEBAIHZvaWQgVGFibGVSYW5kb21WYWx1ZShp
bnQxNl90KiB2ZWN0b3IsIGludDE2X3QgdmVjdG9yX2xlbmd0aCwgdWludDMyX3QqIHNlZWQpIHsK
IAogfSAgLy8gbmFtZXNwYWNlCiAKLW5hbWVzcGFjZSBhZWMzIHsKLQotI2lmIGRlZmluZWQoV0VC
UlRDX0FSQ0hfWDg2X0ZBTUlMWSkKLQotdm9pZCBFc3RpbWF0ZUNvbWZvcnROb2lzZV9TU0UyKGNv
bnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIE4yLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiBzZWVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZmdERhdGEqIGxvd2VyX2JhbmRfbm9pc2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmZ0RGF0YSogdXBwZXJfYmFuZF9ub2lzZSkgewotICBGZnREYXRhKiBO
X2xvdyA9IGxvd2VyX2JhbmRfbm9pc2U7Ci0gIEZmdERhdGEqIE5faGlnaCA9IHVwcGVyX2JhbmRf
bm9pc2U7Ci0KLSAgLy8gQ29tcHV0ZSBzcXVhcmUgcm9vdCBzcGVjdHJ1bS4KLSAgc3RkOjphcnJh
eTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBOOwotICBmb3IgKHNpemVfdCBrID0gMDsgayA8
IGtGZnRMZW5ndGhCeTI7IGsgKz0gNCkgewotICAgIF9fbTEyOCB2ID0gX21tX2xvYWR1X3BzKCZO
MltrXSk7Ci0gICAgdiA9IF9tbV9zcXJ0X3BzKHYpOwotICAgIF9tbV9zdG9yZXVfcHMoJk5ba10s
IHYpOwotICB9Ci0KLSAgTltrRmZ0TGVuZ3RoQnkyXSA9IHNxcnRmKE4yW2tGZnRMZW5ndGhCeTJd
KTsKLQotICAvLyBDb21wdXRlIHRoZSBub2lzZSBsZXZlbCBmb3IgdGhlIHVwcGVyIGJhbmRzLgot
ICBjb25zdGV4cHIgZmxvYXQga09uZUJ5TnVtQmFuZHMgPSAxLmYgLyAoa0ZmdExlbmd0aEJ5MlBs
dXMxIC8gMiArIDEpOwotICBjb25zdGV4cHIgaW50IGtGZnRMZW5ndGhCeTJQbHVzMUJ5MiA9IGtG
ZnRMZW5ndGhCeTJQbHVzMSAvIDI7Ci0gIGNvbnN0IGZsb2F0IGhpZ2hfYmFuZF9ub2lzZV9sZXZl
bCA9Ci0gICAgICBzdGQ6OmFjY3VtdWxhdGUoTi5iZWdpbigpICsga0ZmdExlbmd0aEJ5MlBsdXMx
QnkyLCBOLmVuZCgpLCAwLmYpICoKLSAgICAgIGtPbmVCeU51bUJhbmRzOwotCi0gIC8vIEdlbmVy
YXRlIGNvbXBsZXggbm9pc2UuCi0gIHN0ZDo6YXJyYXk8aW50MTZfdCwga0ZmdExlbmd0aEJ5MiAt
IDE+IHJhbmRvbV92YWx1ZXNfaW50OwotICBUYWJsZVJhbmRvbVZhbHVlKHJhbmRvbV92YWx1ZXNf
aW50LmRhdGEoKSwgcmFuZG9tX3ZhbHVlc19pbnQuc2l6ZSgpLCBzZWVkKTsKLQotICBzdGQ6OmFy
cmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyIC0gMT4gc2luOwotICBzdGQ6OmFycmF5PGZsb2F0LCBr
RmZ0TGVuZ3RoQnkyIC0gMT4gY29zOwotICBjb25zdGV4cHIgZmxvYXQga1NjYWxlID0gNi4yODMx
ODUzMDcxNzk1OWYgLyAzMjc2OC4wZjsKLSAgc3RkOjp0cmFuc2Zvcm0ocmFuZG9tX3ZhbHVlc19p
bnQuYmVnaW4oKSwgcmFuZG9tX3ZhbHVlc19pbnQuZW5kKCksCi0gICAgICAgICAgICAgICAgIHNp
bi5iZWdpbigpLCBbJl0oaW50MTZfdCBhKSB7IHJldHVybiAtc2luZihrU2NhbGUgKiBhKTsgfSk7
Ci0gIHN0ZDo6dHJhbnNmb3JtKHJhbmRvbV92YWx1ZXNfaW50LmJlZ2luKCksIHJhbmRvbV92YWx1
ZXNfaW50LmVuZCgpLAotICAgICAgICAgICAgICAgICBjb3MuYmVnaW4oKSwgWyZdKGludDE2X3Qg
YSkgeyByZXR1cm4gY29zZihrU2NhbGUgKiBhKTsgfSk7Ci0KLSAgLy8gRm9ybSBsb3ctZnJlcXVl
bmN5IG5vaXNlIHZpYSBzcGVjdHJhbCBzaGFwaW5nLgotICBOX2xvdy0+cmVbMF0gPSBOX2xvdy0+
cmVba0ZmdExlbmd0aEJ5Ml0gPSBOX2hpZ2gtPnJlWzBdID0KLSAgICAgIE5faGlnaC0+cmVba0Zm
dExlbmd0aEJ5Ml0gPSAwLmY7Ci0gIHN0ZDo6dHJhbnNmb3JtKGNvcy5iZWdpbigpLCBjb3MuZW5k
KCksIE4uYmVnaW4oKSArIDEsIE5fbG93LT5yZS5iZWdpbigpICsgMSwKLSAgICAgICAgICAgICAg
ICAgc3RkOjptdWx0aXBsaWVzPGZsb2F0PigpKTsKLSAgc3RkOjp0cmFuc2Zvcm0oc2luLmJlZ2lu
KCksIHNpbi5lbmQoKSwgTi5iZWdpbigpICsgMSwgTl9sb3ctPmltLmJlZ2luKCkgKyAxLAotICAg
ICAgICAgICAgICAgICBzdGQ6Om11bHRpcGxpZXM8ZmxvYXQ+KCkpOwotCi0gIC8vIEZvcm0gdGhl
IGhpZ2gtZnJlcXVlbmN5IG5vaXNlIHZpYSBzaW1wbGUgbGV2ZWxsaW5nLgotICBzdGQ6OnRyYW5z
Zm9ybShjb3MuYmVnaW4oKSwgY29zLmVuZCgpLCBOX2hpZ2gtPnJlLmJlZ2luKCkgKyAxLAotICAg
ICAgICAgICAgICAgICBbJl0oZmxvYXQgYSkgeyByZXR1cm4gaGlnaF9iYW5kX25vaXNlX2xldmVs
ICogYTsgfSk7Ci0gIHN0ZDo6dHJhbnNmb3JtKHNpbi5iZWdpbigpLCBzaW4uZW5kKCksIE5faGln
aC0+aW0uYmVnaW4oKSArIDEsCi0gICAgICAgICAgICAgICAgIFsmXShmbG9hdCBhKSB7IHJldHVy
biBoaWdoX2JhbmRfbm9pc2VfbGV2ZWwgKiBhOyB9KTsKLX0KLQotI2VuZGlmCituYW1lc3BhY2Ug
ewogCi12b2lkIEVzdGltYXRlQ29tZm9ydE5vaXNlKGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtG
ZnRMZW5ndGhCeTJQbHVzMT4mIE4yLAordm9pZCBHZW5lcmF0ZUNvbWZvcnROb2lzZShBZWMzT3B0
aW1pemF0aW9uIG9wdGltaXphdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgTjIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90KiBzZWVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBG
ZnREYXRhKiBsb3dlcl9iYW5kX25vaXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBGZnRE
YXRhKiB1cHBlcl9iYW5kX25vaXNlKSB7CkBAIC0xMDQsOCArNTMsOCBAQCB2b2lkIEVzdGltYXRl
Q29tZm9ydE5vaXNlKGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4m
IE4yLAogCiAgIC8vIENvbXB1dGUgc3F1YXJlIHJvb3Qgc3BlY3RydW0uCiAgIHN0ZDo6YXJyYXk8
ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gTjsKLSAgc3RkOjp0cmFuc2Zvcm0oTjIuYmVnaW4o
KSwgTjIuZW5kKCksIE4uYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgW10oZmxvYXQgYSkgeyBy
ZXR1cm4gc3FydGYoYSk7IH0pOworICBzdGQ6OmNvcHkoTjIuYmVnaW4oKSwgTjIuZW5kKCksIE4u
YmVnaW4oKSk7CisgIGFlYzM6OlZlY3Rvck1hdGgob3B0aW1pemF0aW9uKS5TcXJ0KE4pOwogCiAg
IC8vIENvbXB1dGUgdGhlIG5vaXNlIGxldmVsIGZvciB0aGUgdXBwZXIgYmFuZHMuCiAgIGNvbnN0
ZXhwciBmbG9hdCBrT25lQnlOdW1CYW5kcyA9IDEuZiAvIChrRmZ0TGVuZ3RoQnkyUGx1czEgLyAy
ICsgMSk7CkBAIC0xMTgsMTMgKzY3LDIxIEBAIHZvaWQgRXN0aW1hdGVDb21mb3J0Tm9pc2UoY29u
c3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgTjIsCiAgIHN0ZDo6YXJy
YXk8aW50MTZfdCwga0ZmdExlbmd0aEJ5MiAtIDE+IHJhbmRvbV92YWx1ZXNfaW50OwogICBUYWJs
ZVJhbmRvbVZhbHVlKHJhbmRvbV92YWx1ZXNfaW50LmRhdGEoKSwgcmFuZG9tX3ZhbHVlc19pbnQu
c2l6ZSgpLCBzZWVkKTsKIAorICAvLyBUaGUgYW5hbHlzaXMgYW5kIHN5bnRoZXNpcyB3aW5kb3dp
bmcgY2F1c2UgbG9zcyBvZiBwb3dlciB3aGVuCisgIC8vIGNyb3NzLWZhZGluZyB0aGUgbm9pc2Ug
d2hlcmUgZnJhbWVzIGFyZSBjb21wbGV0ZWx5IHVuY29ycmVsYXRlZAorICAvLyAoZ2VuZXJhdGVk
IHdpdGggcmFuZG9tIHBoYXNlKSwgaGVuY2UgdGhlIGZhY3RvciBzcXJ0KDIpLgorICAvLyBUaGlz
IGlzIG5vdCB0aGUgY2FzZSBmb3IgdGhlIHNwZWVjaCBzaWduYWwgd2hlcmUgdGhlIGlucHV0IGlz
IG92ZXJsYXBwaW5nCisgIC8vIChzdHJvbmcgY29ycmVsYXRpb24pLgogICBzdGQ6OmFycmF5PGZs
b2F0LCBrRmZ0TGVuZ3RoQnkyIC0gMT4gc2luOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVu
Z3RoQnkyIC0gMT4gY29zOwogICBjb25zdGV4cHIgZmxvYXQga1NjYWxlID0gNi4yODMxODUzMDcx
Nzk1OWYgLyAzMjc2OC4wZjsKKyAgY29uc3RleHByIGZsb2F0IGtTcXJ0MiA9IDEuNDE0MjEzNTYy
M2Y7CiAgIHN0ZDo6dHJhbnNmb3JtKHJhbmRvbV92YWx1ZXNfaW50LmJlZ2luKCksIHJhbmRvbV92
YWx1ZXNfaW50LmVuZCgpLAotICAgICAgICAgICAgICAgICBzaW4uYmVnaW4oKSwgWyZdKGludDE2
X3QgYSkgeyByZXR1cm4gLXNpbmYoa1NjYWxlICogYSk7IH0pOworICAgICAgICAgICAgICAgICBz
aW4uYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgWyZdKGludDE2X3QgYSkgeyByZXR1cm4gLXNp
bmYoa1NjYWxlICogYSkgKiBrU3FydDI7IH0pOwogICBzdGQ6OnRyYW5zZm9ybShyYW5kb21fdmFs
dWVzX2ludC5iZWdpbigpLCByYW5kb21fdmFsdWVzX2ludC5lbmQoKSwKLSAgICAgICAgICAgICAg
ICAgY29zLmJlZ2luKCksIFsmXShpbnQxNl90IGEpIHsgcmV0dXJuIGNvc2Yoa1NjYWxlICogYSk7
IH0pOworICAgICAgICAgICAgICAgICBjb3MuYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgWyZd
KGludDE2X3QgYSkgeyByZXR1cm4gY29zZihrU2NhbGUgKiBhKSAqIGtTcXJ0MjsgfSk7CiAKICAg
Ly8gRm9ybSBsb3ctZnJlcXVlbmN5IG5vaXNlIHZpYSBzcGVjdHJhbCBzaGFwaW5nLgogICBOX2xv
dy0+cmVbMF0gPSBOX2xvdy0+cmVba0ZmdExlbmd0aEJ5Ml0gPSBOX2hpZ2gtPnJlWzBdID0KQEAg
LTE0MSw3ICs5OCw3IEBAIHZvaWQgRXN0aW1hdGVDb21mb3J0Tm9pc2UoY29uc3Qgc3RkOjphcnJh
eTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgTjIsCiAgICAgICAgICAgICAgICAgIFsmXShm
bG9hdCBhKSB7IHJldHVybiBoaWdoX2JhbmRfbm9pc2VfbGV2ZWwgKiBhOyB9KTsKIH0KIAotfSAg
Ly8gbmFtZXNwYWNlIGFlYzMKK30gIC8vIG5hbWVzcGFjZQogCiBDb21mb3J0Tm9pc2VHZW5lcmF0
b3I6OkNvbWZvcnROb2lzZUdlbmVyYXRvcihBZWMzT3B0aW1pemF0aW9uIG9wdGltaXphdGlvbikK
ICAgICA6IG9wdGltaXphdGlvbl8ob3B0aW1pemF0aW9uKSwKQEAgLTIwNSwxNyArMTYyLDggQEAg
dm9pZCBDb21mb3J0Tm9pc2VHZW5lcmF0b3I6OkNvbXB1dGUoCiAgIGNvbnN0IHN0ZDo6YXJyYXk8
ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIE4yID0KICAgICAgIE4yX2luaXRpYWxfID8gKk4y
X2luaXRpYWxfIDogTjJfOwogCi0gIHN3aXRjaCAob3B0aW1pemF0aW9uXykgewotI2lmIGRlZmlu
ZWQoV0VCUlRDX0FSQ0hfWDg2X0ZBTUlMWSkKLSAgICBjYXNlIEFlYzNPcHRpbWl6YXRpb246OmtT
c2UyOgotICAgICAgYWVjMzo6RXN0aW1hdGVDb21mb3J0Tm9pc2VfU1NFMihOMiwgJnNlZWRfLCBs
b3dlcl9iYW5kX25vaXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
cHBlcl9iYW5kX25vaXNlKTsKLSAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgZGVmYXVsdDoKLSAg
ICAgIGFlYzM6OkVzdGltYXRlQ29tZm9ydE5vaXNlKE4yLCAmc2VlZF8sIGxvd2VyX2JhbmRfbm9p
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlcl9iYW5kX25vaXNlKTsK
LSAgfQorICBHZW5lcmF0ZUNvbWZvcnROb2lzZShvcHRpbWl6YXRpb25fLCBOMiwgJnNlZWRfLCBs
b3dlcl9iYW5kX25vaXNlLAorICAgICAgICAgICAgICAgICAgICAgICB1cHBlcl9iYW5kX25vaXNl
KTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2NvbWZvcnRfbm9p
c2VfZ2VuZXJhdG9yLmgKaW5kZXggNmE0Nzk4OTZlY2I5NzZmYjMwYWJkM2EzYTY5NzE5YzQ3YWMx
NjRiOS4uM2JlMzg2YmFiMWU3Njg3Y2MwZjRhZjI1Y2I4ZTQ3YzJkZTE1MzMzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9jb21mb3J0X25vaXNlX2dlbmVyYXRvci5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZu
ZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0NPTUZPUlRfTk9JU0VfR0VORVJBVE9S
X0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX0NPTUZPUlRfTk9JU0Vf
R0VORVJBVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxhcnJheT4KICNp
bmNsdWRlIDxtZW1vcnk+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2NvbWZvcnRfbm9p
c2VfZ2VuZXJhdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lzZV9n
ZW5lcmF0b3JfdW5pdHRlc3QuY2MKaW5kZXggNzdhMDllZGNkNmEwMzhlZmRmYjg4ZjlkNTM1NmQ4
ZGUxOWU4N2U0NC4uMTBiYTY5NjAzNjgxZmQzMGI1ZWRjZjEzMTA0ZTc4MmVhYjUzYzA3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3JfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0b3JfdW5pdHRlc3Qu
Y2MKQEAgLTUyLDQ1ICs1Miw2IEBAIFRFU1QoQ29tZm9ydE5vaXNlR2VuZXJhdG9yLCBOdWxsVXBw
ZXJCYW5kTm9pc2UpIHsKIAogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX1g4Nl9G
QU1JTFkpCi0vLyBWZXJpZmllcyB0aGF0IHRoZSBvcHRpbWl6ZWQgbWV0aG9kcyBhcmUgYml0ZXhh
Y3QgdG8gdGhlaXIgcmVmZXJlbmNlCi0vLyBjb3VudGVycGFydHMuCi1URVNUKENvbWZvcnROb2lz
ZUdlbmVyYXRvciwgVGVzdE9wdGltaXphdGlvbnMpIHsKLSAgaWYgKFdlYlJ0Y19HZXRDUFVJbmZv
KGtTU0UyKSAhPSAwKSB7Ci0gICAgUmFuZG9tIHJhbmRvbV9nZW5lcmF0b3IoNDJVKTsKLSAgICB1
aW50MzJfdCBzZWVkID0gNDI7Ci0gICAgdWludDMyX3Qgc2VlZF9TU0UyID0gNDI7Ci0gICAgc3Rk
OjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBOMjsKLSAgICBGZnREYXRhIGxvd2Vy
X2JhbmRfbm9pc2U7Ci0gICAgRmZ0RGF0YSB1cHBlcl9iYW5kX25vaXNlOwotICAgIEZmdERhdGEg
bG93ZXJfYmFuZF9ub2lzZV9TU0UyOwotICAgIEZmdERhdGEgdXBwZXJfYmFuZF9ub2lzZV9TU0Uy
OwotICAgIGZvciAoaW50IGsgPSAwOyBrIDwgMTA7ICsraykgewotICAgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBOMi5zaXplKCk7ICsraikgewotICAgICAgICBOMltqXSA9IHJhbmRvbV9nZW5l
cmF0b3IuUmFuZDxmbG9hdD4oKSAqIDEwMDAuZjsKLSAgICAgIH0KLQotICAgICAgRXN0aW1hdGVD
b21mb3J0Tm9pc2UoTjIsICZzZWVkLCAmbG93ZXJfYmFuZF9ub2lzZSwgJnVwcGVyX2JhbmRfbm9p
c2UpOwotICAgICAgRXN0aW1hdGVDb21mb3J0Tm9pc2VfU1NFMihOMiwgJnNlZWRfU1NFMiwgJmxv
d2VyX2JhbmRfbm9pc2VfU1NFMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVw
cGVyX2JhbmRfbm9pc2VfU1NFMik7Ci0gICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGxvd2Vy
X2JhbmRfbm9pc2UucmUuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgRVhQRUNUX05FQVIobG93ZXJf
YmFuZF9ub2lzZS5yZVtqXSwgbG93ZXJfYmFuZF9ub2lzZV9TU0UyLnJlW2pdLAotICAgICAgICAg
ICAgICAgICAgICAwLjAwMDAxZik7Ci0gICAgICAgIEVYUEVDVF9ORUFSKHVwcGVyX2JhbmRfbm9p
c2UucmVbal0sIHVwcGVyX2JhbmRfbm9pc2VfU1NFMi5yZVtqXSwKLSAgICAgICAgICAgICAgICAg
ICAgMC4wMDAwMWYpOwotICAgICAgfQotICAgICAgZm9yIChzaXplX3QgaiA9IDE7IGogPCBsb3dl
cl9iYW5kX25vaXNlLnJlLnNpemUoKSAtIDE7ICsraikgewotICAgICAgICBFWFBFQ1RfTkVBUihs
b3dlcl9iYW5kX25vaXNlLmltW2pdLCBsb3dlcl9iYW5kX25vaXNlX1NTRTIuaW1bal0sCi0gICAg
ICAgICAgICAgICAgICAgIDAuMDAwMDFmKTsKLSAgICAgICAgRVhQRUNUX05FQVIodXBwZXJfYmFu
ZF9ub2lzZS5pbVtqXSwgdXBwZXJfYmFuZF9ub2lzZV9TU0UyLmltW2pdLAotICAgICAgICAgICAg
ICAgICAgICAwLjAwMDAxZik7Ci0gICAgICB9Ci0gICAgfQotICB9Ci19Ci0KLSNlbmRpZgotCiBU
RVNUKENvbWZvcnROb2lzZUdlbmVyYXRvciwgQ29ycmVjdExldmVsKSB7CiAgIENvbWZvcnROb2lz
ZUdlbmVyYXRvciBjbmcoRGV0ZWN0T3B0aW1pemF0aW9uKCkpOwogICBBZWNTdGF0ZSBhZWNfc3Rh
dGUoRWNob0NhbmNlbGxlcjNDb25maWd7fSk7CkBAIC0xMTMsOCArNzQsOCBAQCBURVNUKENvbWZv
cnROb2lzZUdlbmVyYXRvciwgQ29ycmVjdExldmVsKSB7CiAgIGZvciAoaW50IGsgPSAwOyBrIDwg
MTAwMDA7ICsraykgewogICAgIGNuZy5Db21wdXRlKGFlY19zdGF0ZSwgTjIsICZuX2xvd2VyLCAm
bl91cHBlcik7CiAgIH0KLSAgRVhQRUNUX05FQVIoTjJbMF0sIFBvd2VyKG5fbG93ZXIpLCBOMlsw
XSAvIDEwLmYpOwotICBFWFBFQ1RfTkVBUihOMlswXSwgUG93ZXIobl91cHBlciksIE4yWzBdIC8g
MTAuZik7CisgIEVYUEVDVF9ORUFSKDIuZiAqIE4yWzBdLCBQb3dlcihuX2xvd2VyKSwgTjJbMF0g
LyAxMC5mKTsKKyAgRVhQRUNUX05FQVIoMi5mICogTjJbMF0sIFBvd2VyKG5fdXBwZXIpLCBOMlsw
XSAvIDEwLmYpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgYWVjMwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvZGVjaW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZGVjaW1hdG9yLmNjCmluZGV4
IGQ5ZmFhNjJkYzQ0Njk3NmExM2QzZWEwNmYwYjMyOTRkZGYzYWNkNjcuLmJkMDMyMzdjYTA4MGZi
NTM0MTQ1MmExZmFhMzllMTYwZWRlZWVlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rl
Y2ltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kZWNpbWF0b3IuY2MKQEAgLTksNiArOSwx
MCBAQAogICovCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZGVjaW1h
dG9yLmgiCiAKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9kb3duc2FtcGxlZF9yZW5kZXJfYnVmZmVyLmNjCmluZGV4IGRmMGFmNmUwZDg2MDAxNjBkMmI1
NzRhOTY5YzM4ODNhYTlmNTkwODEuLmMxMDU5MTFhYTg4MzRkZjIwNDlkMjgxYzg0NTc3ZmRmYTU1
OGVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZm
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5jYwpA
QCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogRG93bnNhbXBsZWRSZW5kZXJCdWZmZXI6OkRvd25zYW1w
bGVkUmVuZGVyQnVmZmVyKHNpemVfdCBkb3duc2FtcGxlZF9idWZmZXJfc2l6ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuaAppbmRleCA5NDM5NDk2NjZhMDY5ZjBl
NDQ3YmE5MzI1NzgwNGRjZGFlZDhkY2NkLi5jOTFlYTNiODM2ZjYwZTg1MjczYjk0YWJiNjgxMDhl
ZmJmNDUyNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2FtcGxlZF9yZW5kZXJf
YnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5o
CkBAIC0xMSw5ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMz
X0RPV05TQU1QTEVEX1JFTkRFUl9CVUZGRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FFQzNfRE9XTlNBTVBMRURfUkVOREVSX0JVRkZFUl9IXwogCisjaW5jbHVkZSA8c3Rk
ZGVmLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2F1
ZGliaWxpdHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2F1ZGliaWxpdHkuY2MKaW5kZXggZmEx
MjNkZTM1MWU1NDQ5ZGFhYWJhNjZmODk5YThlNzlhMjEwOGVlYS4uZTg1N2E3ZTQ1YTA4NDc2ZjAy
OGM3Y2ZlMzgwNGY4ZjhkMzI4NzYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19h
dWRpYmlsaXR5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fYXVkaWJpbGl0eS5jYwpAQCAt
MTIsOCArMTIsMTAgQEAKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4K
KyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCisjaW5jbHVkZSAiYXBpL2Fy
cmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRy
aXhfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3Rh
dGlvbmFyaXR5X2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3ZlY3Rvcl9idWZmZXIuaCIKQEAgLTI3LDE2ICsyOSwxOCBAQCBFY2hvQXVkaWJpbGl0
eTo6RWNob0F1ZGliaWxpdHkoYm9vbCB1c2VfcmVuZGVyX3N0YXRpb25hcml0eV9hdF9pbml0KQog
CiBFY2hvQXVkaWJpbGl0eTo6fkVjaG9BdWRpYmlsaXR5KCkgPSBkZWZhdWx0OwogCi12b2lkIEVj
aG9BdWRpYmlsaXR5OjpVcGRhdGUoY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWxheV9ibG9ja3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBleHRlcm5hbF9kZWxheV9zZWVuLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IHJldmVyYl9kZWNheSkgewordm9pZCBFY2hvQXVkaWJpbGl0
eTo6VXBkYXRlKAorICAgIGNvbnN0IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKKyAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmVuZGVyX3JldmVyYl9jb250cmlidXRpb25fc3Bl
Y3RydW0sCisgICAgaW50IGRlbGF5X2Jsb2NrcywKKyAgICBib29sIGV4dGVybmFsX2RlbGF5X3Nl
ZW4pIHsKICAgVXBkYXRlUmVuZGVyTm9pc2VFc3RpbWF0b3IocmVuZGVyX2J1ZmZlci5HZXRTcGVj
dHJ1bUJ1ZmZlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfYnVmZmVy
LkdldEJsb2NrQnVmZmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFs
X2RlbGF5X3NlZW4pOwogCiAgIGlmIChleHRlcm5hbF9kZWxheV9zZWVuIHx8IHVzZV9yZW5kZXJf
c3RhdGlvbmFyaXR5X2F0X2luaXRfKSB7Ci0gICAgVXBkYXRlUmVuZGVyU3RhdGlvbmFyaXR5Rmxh
Z3MocmVuZGVyX2J1ZmZlciwgZGVsYXlfYmxvY2tzLCByZXZlcmJfZGVjYXkpOworICAgIFVwZGF0
ZVJlbmRlclN0YXRpb25hcml0eUZsYWdzKAorICAgICAgICByZW5kZXJfYnVmZmVyLCByZW5kZXJf
cmV2ZXJiX2NvbnRyaWJ1dGlvbl9zcGVjdHJ1bSwgZGVsYXlfYmxvY2tzKTsKICAgfQogfQogCkBA
IC00OCw4ICs1Miw4IEBAIHZvaWQgRWNob0F1ZGliaWxpdHk6OlJlc2V0KCkgewogCiB2b2lkIEVj
aG9BdWRpYmlsaXR5OjpVcGRhdGVSZW5kZXJTdGF0aW9uYXJpdHlGbGFncygKICAgICBjb25zdCBS
ZW5kZXJCdWZmZXImIHJlbmRlcl9idWZmZXIsCi0gICAgaW50IGRlbGF5X2Jsb2NrcywKLSAgICBm
bG9hdCByZXZlcmJfZGVjYXkpIHsKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmVu
ZGVyX3JldmVyYl9jb250cmlidXRpb25fc3BlY3RydW0sCisgICAgaW50IGRlbGF5X2Jsb2Nrcykg
ewogICBjb25zdCBWZWN0b3JCdWZmZXImIHNwZWN0cnVtX2J1ZmZlciA9IHJlbmRlcl9idWZmZXIu
R2V0U3BlY3RydW1CdWZmZXIoKTsKICAgaW50IGlkeF9hdF9kZWxheSA9CiAgICAgICBzcGVjdHJ1
bV9idWZmZXIuT2Zmc2V0SW5kZXgoc3BlY3RydW1fYnVmZmVyLnJlYWQsIGRlbGF5X2Jsb2Nrcyk7
CkBAIC01Nyw4ICs2MSw5IEBAIHZvaWQgRWNob0F1ZGliaWxpdHk6OlVwZGF0ZVJlbmRlclN0YXRp
b25hcml0eUZsYWdzKAogICBpbnQgbnVtX2xvb2thaGVhZCA9IHJlbmRlcl9idWZmZXIuSGVhZHJv
b20oKSAtIGRlbGF5X2Jsb2NrcyArIDE7CiAgIG51bV9sb29rYWhlYWQgPSBzdGQ6Om1heCgwLCBu
dW1fbG9va2FoZWFkKTsKIAotICByZW5kZXJfc3RhdGlvbmFyaXR5Xy5VcGRhdGVTdGF0aW9uYXJp
dHlGbGFncyhzcGVjdHJ1bV9idWZmZXIsIGlkeF9hdF9kZWxheSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2xvb2thaGVhZCwgcmV2ZXJiX2RlY2F5
KTsKKyAgcmVuZGVyX3N0YXRpb25hcml0eV8uVXBkYXRlU3RhdGlvbmFyaXR5RmxhZ3MoCisgICAg
ICBzcGVjdHJ1bV9idWZmZXIsIHJlbmRlcl9yZXZlcmJfY29udHJpYnV0aW9uX3NwZWN0cnVtLCBp
ZHhfYXRfZGVsYXksCisgICAgICBudW1fbG9va2FoZWFkKTsKIH0KIAogdm9pZCBFY2hvQXVkaWJp
bGl0eTo6VXBkYXRlUmVuZGVyTm9pc2VFc3RpbWF0b3IoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9lY2hvX2F1ZGliaWxpdHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fYXVkaWJpbGl0eS5o
CmluZGV4IDNiMjUyZjNlYTJiN2U1Y2JkOTA2NTM3NmMyNzY5ODg3YTc2Mjk4YjcuLmI5MDNjYTBj
ZjFkNzllZmJhOGU0Yjc0ODUzOTJmNzUwMGY3NTUyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2VjaG9fYXVkaWJpbGl0eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fYXVkaWJpbGl0
eS5oCkBAIC0xMSwxMSArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdf
QUVDM19FQ0hPX0FVRElCSUxJVFlfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5H
X0FFQzNfRUNIT19BVURJQklMSVRZX0hfCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVk
ZSA8YXJyYXk+Ci0jaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRl
IDx2ZWN0b3I+CisjaW5jbHVkZSA8c3RkZGVmLmg+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKQEAgLTI3LDggKzIzLDYgQEAK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIEFwbURhdGFEdW1wZXI7Ci0KIGNsYXNzIEVj
aG9BdWRpYmlsaXR5IHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IEVjaG9BdWRpYmlsaXR5KGJvb2wg
dXNlX3JlbmRlcl9zdGF0aW9uYXJpdHlfYXRfaW5pdCk7CkBAIC0zNiw5ICszMCw5IEBAIGNsYXNz
IEVjaG9BdWRpYmlsaXR5IHsKIAogICAvLyBGZWVkIG5ldyByZW5kZXIgZGF0YSB0byB0aGUgZWNo
byBhdWRpYmlsaXR5IGVzdGltYXRvci4KICAgdm9pZCBVcGRhdGUoY29uc3QgUmVuZGVyQnVmZmVy
JiByZW5kZXJfYnVmZmVyLAorICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9h
dD4gcmVuZGVyX3JldmVyYl9jb250cmlidXRpb25fc3BlY3RydW0sCiAgICAgICAgICAgICAgIGlu
dCBkZWxheV9ibG9ja3MsCi0gICAgICAgICAgICAgIGJvb2wgZXh0ZXJuYWxfZGVsYXlfc2VlbiwK
LSAgICAgICAgICAgICAgZmxvYXQgcmV2ZXJiX2RlY2F5KTsKKyAgICAgICAgICAgICAgYm9vbCBl
eHRlcm5hbF9kZWxheV9zZWVuKTsKICAgLy8gR2V0IHRoZSByZXNpZHVhbCBlY2hvIHNjYWxpbmcu
CiAgIHZvaWQgR2V0UmVzaWR1YWxFY2hvU2NhbGluZyhib29sIGZpbHRlcl9oYXNfaGFkX3RpbWVf
dG9fY29udmVyZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmll
dzxmbG9hdD4gcmVzaWR1YWxfc2NhbGluZykgY29uc3QgewpAQCAtNjIsOSArNTYsMTAgQEAgY2xh
c3MgRWNob0F1ZGliaWxpdHkgewogICB2b2lkIFJlc2V0KCk7CiAKICAgLy8gVXBkYXRlcyB0aGUg
cmVuZGVyIHN0YXRpb25hcml0eSBmbGFncyBmb3IgdGhlIGN1cnJlbnQgZnJhbWUuCi0gIHZvaWQg
VXBkYXRlUmVuZGVyU3RhdGlvbmFyaXR5RmxhZ3MoY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJf
YnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWxheV9i
bG9ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmV2ZXJi
X2RlY2F5KTsKKyAgdm9pZCBVcGRhdGVSZW5kZXJTdGF0aW9uYXJpdHlGbGFncygKKyAgICAgIGNv
bnN0IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IGZsb2F0PiByZW5kZXJfcmV2ZXJiX2NvbnRyaWJ1dGlvbl9zcGVjdHJ1bSwKKyAgICAgIGlu
dCBkZWxheV9ibG9ja3MpOwogCiAgIC8vIFVwZGF0ZXMgdGhlIG5vaXNlIGVzdGltYXRvciB3aXRo
IHRoZSBuZXcgcmVuZGVyIGRhdGEgc2luY2UgdGhlIHByZXZpb3VzCiAgIC8vIGNhbGwgdG8gdGhp
cyBtZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2NhbmNlbGxlcjMuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2NhbmNlbGxlcjMuY2MKaW5kZXggZTUyMTljNzJhYjdmYWU5
YTllMGJmZTJlOGU1ZmY0NTMwNzZjOTc0MC4uZjA1ZWRiMTVjM2U1NmFmOThjYTZiZmNhOTAyNjIz
MTZmODZjYjM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19jYW5jZWxsZXIzLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5jYwpAQCAtOSw5ICs5LDEyIEBA
CiAgKi8KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX2NhbmNl
bGxlcjMuaCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC00MSwyNSArNDQsNDQgQEAgYm9vbCBFbmFibGVS
ZXZlcmJNb2RlbGxpbmcoKSB7CiAgIHJldHVybiAhZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2Vi
UlRDLUFlYzNSZXZlcmJNb2RlbGxpbmdLaWxsU3dpdGNoIik7CiB9CiAKLWJvb2wgRW5hYmxlU3Vw
cHJlc3Nvck5lYXJlbmRBdmVyYWdpbmcoKSB7Ci0gIHJldHVybiAhZmllbGRfdHJpYWw6OklzRW5h
YmxlZCgKLSAgICAgICJXZWJSVEMtQWVjM1N1cHByZXNzb3JOZWFyZW5kQXZlcmFnaW5nS2lsbFN3
aXRjaCIpOworYm9vbCBFbmFibGVVbml0eUluaXRpYWxSYW1wdXBHYWluKCkgeworICByZXR1cm4g
ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNFbmFibGVVbml0eUluaXRpYWxSYW1w
dXBHYWluIik7CiB9CiAKLWJvb2wgRW5hYmxlU2xvd0ZpbHRlckFkYXB0YXRpb24oKSB7Ci0gIHJl
dHVybiAhZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNTbG93RmlsdGVyQWRhcHRh
dGlvbktpbGxTd2l0Y2giKTsKK2Jvb2wgRW5hYmxlVW5pdHlOb25aZXJvUmFtcHVwR2FpbigpIHsK
KyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzRW5hYmxlVW5pdHlO
b25aZXJvUmFtcHVwR2FpbiIpOwogfQogCi1ib29sIEVuYWJsZVNoYWRvd0ZpbHRlckp1bXBzdGFy
dCgpIHsKLSAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM1NoYWRv
d0ZpbHRlckp1bXBzdGFydEtpbGxTd2l0Y2giKTsKK2Jvb2wgRW5hYmxlTG9uZ1JldmVyYigpIHsK
KyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzU2hvcnRSZXZlcmJL
aWxsU3dpdGNoIik7CiB9CiAKLWJvb2wgRW5hYmxlVW5pdHlJbml0aWFsUmFtcHVwR2FpbigpIHsK
LSAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzRW5hYmxlVW5pdHlJ
bml0aWFsUmFtcHVwR2FpbiIpOworYm9vbCBFbmFibGVOZXdGaWx0ZXJQYXJhbXMoKSB7CisgIHJl
dHVybiAhZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNOZXdGaWx0ZXJQYXJhbXNL
aWxsU3dpdGNoIik7CiB9CiAKLWJvb2wgRW5hYmxlVW5pdHlOb25aZXJvUmFtcHVwR2FpbigpIHsK
LSAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzRW5hYmxlVW5pdHlO
b25aZXJvUmFtcHVwR2FpbiIpOworYm9vbCBFbmFibGVMZWdhY3lEb21pbmFudE5lYXJlbmQoKSB7
CisgIHJldHVybiBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM0VuYWJsZUxlZ2Fj
eURvbWluYW50TmVhcmVuZCIpOworfQorCitib29sIFVzZUxlZ2FjeU5vcm1hbFN1cHByZXNzb3JU
dW5pbmcoKSB7CisgIHJldHVybiBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM1Vz
ZUxlZ2FjeU5vcm1hbFN1cHByZXNzb3JUdW5pbmciKTsKK30KKworYm9vbCBBY3RpdmF0ZVN0YXRp
b25hcml0eVByb3BlcnRpZXMoKSB7CisgIHJldHVybiBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJX
ZWJSVEMtQWVjM1VzZVN0YXRpb25hcml0eVByb3BlcnRpZXMiKTsKK30KKworYm9vbCBBY3RpdmF0
ZVN0YXRpb25hcml0eVByb3BlcnRpZXNBdEluaXQoKSB7CisgIHJldHVybiBmaWVsZF90cmlhbDo6
SXNFbmFibGVkKCJXZWJSVEMtQWVjM1VzZVN0YXRpb25hcml0eVByb3BlcnRpZXNBdEluaXQiKTsK
K30KKworYm9vbCBFbmFibGVOZXdSZW5kZXJCdWZmZXJpbmcoKSB7CisgIHJldHVybiAhZmllbGRf
dHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNOZXdSZW5kZXJCdWZmZXJpbmdLaWxsU3dpdGNo
Iik7Cit9CisKK2Jvb2wgVXNlRWFybHlEZWxheURldGVjdGlvbigpIHsKKyAgcmV0dXJuICFmaWVs
ZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQWVjM0Vhcmx5RGVsYXlEZXRlY3Rpb25LaWxsU3dp
dGNoIik7CiB9CiAKIC8vIE1ldGhvZCBmb3IgYWRqdXN0aW5nIGNvbmZpZyBwYXJhbWV0ZXIgZGVw
ZW5kZW5jaWVzLi4KQEAgLTcxLDY4ICs5MywyNyBAQCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBBZGp1
c3RDb25maWcoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZykgewogICAgIGFkanVz
dGVkX2NmZy5lcF9zdHJlbmd0aC5kZWZhdWx0X2xlbiA9IDAuZjsKICAgfQogCi0gIC8vIFVzZSBj
dXN0b21pemVkIHBhcmFtZXRlcnMgd2hlbiB0aGUgc3lzdGVtIGhhcyBjbG9jay1kcmlmdC4KLSAg
aWYgKGNvbmZpZy5lY2hvX3JlbW92YWxfY29udHJvbC5oYXNfY2xvY2tfZHJpZnQpIHsKLSAgICBS
VENfTE9HKExTX1dBUk5JTkcpCi0gICAgICAgIDw8ICJDdXN0b21pemluZyBwYXJhbWV0ZXJzIHRv
IHdvcmsgd2VsbCBmb3IgdGhlIGNsb2NrLWRyaWZ0IGNhc2UuIjsKLSAgICBpZiAoY29uZmlnLmVw
X3N0cmVuZ3RoLmJvdW5kZWRfZXJsKSB7Ci0gICAgICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGgu
ZGVmYXVsdF9sZW4gPSAwLjg1ZjsKLSAgICAgIGFkanVzdGVkX2NmZy5lcF9zdHJlbmd0aC5sZiA9
IDAuMDFmOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVwX3N0cmVuZ3RoLm1mID0gMC4wMWY7Ci0gICAg
ICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGguaGYgPSAwLjAxZjsKLSAgICAgIGFkanVzdGVkX2Nm
Zy5lY2hvX21vZGVsLnJlbmRlcl9wcmVfd2luZG93X3NpemUgPSAxOwotICAgICAgYWRqdXN0ZWRf
Y2ZnLmVjaG9fbW9kZWwucmVuZGVyX3Bvc3Rfd2luZG93X3NpemUgPSAxOwotICAgICAgYWRqdXN0
ZWRfY2ZnLmVjaG9fbW9kZWwubm9ubGluZWFyX2hvbGQgPSAzOwotICAgICAgYWRqdXN0ZWRfY2Zn
LmVjaG9fbW9kZWwubm9ubGluZWFyX3JlbGVhc2UgPSAwLjAwMWY7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgIGFkanVzdGVkX2NmZy5lcF9zdHJlbmd0aC5ib3VuZGVkX2VybCA9IHRydWU7Ci0gICAgICBh
ZGp1c3RlZF9jZmcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IgPSAyOwotICAgICAgYWRqdXN0
ZWRfY2ZnLmVwX3N0cmVuZ3RoLmRlZmF1bHRfbGVuID0gMC44ZjsKLSAgICAgIGFkanVzdGVkX2Nm
Zy5lcF9zdHJlbmd0aC5sZiA9IDAuMDFmOwotICAgICAgYWRqdXN0ZWRfY2ZnLmVwX3N0cmVuZ3Ro
Lm1mID0gMC4wMWY7Ci0gICAgICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGguaGYgPSAwLjAxZjsK
LSAgICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbiA9IHszMCwgMC4xZiwgMC44ZiwgMC4wMDFm
LCAyMDA3NTM0NC5mfTsKLSAgICAgIGFkanVzdGVkX2NmZy5maWx0ZXIuc2hhZG93ID0gezMwLCAw
LjdmLCAyMDA3NTM0NC5mfTsKLSAgICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbl9pbml0aWFs
ID0gezMwLCAwLjFmLCAxLjVmLCAwLjAwMWYsIDIwMDc1MzQ0LmZ9OwotICAgICAgYWRqdXN0ZWRf
Y2ZnLmZpbHRlci5zaGFkb3dfaW5pdGlhbCA9IHszMCwgMC45ZiwgMjAwNzUzNDQuZn07Ci0gICAg
ICBhZGp1c3RlZF9jZmcuZWNob19tb2RlbC5yZW5kZXJfcHJlX3dpbmRvd19zaXplID0gMjsKLSAg
ICAgIGFkanVzdGVkX2NmZy5lY2hvX21vZGVsLnJlbmRlcl9wb3N0X3dpbmRvd19zaXplID0gMjsK
LSAgICAgIGFkanVzdGVkX2NmZy5lY2hvX21vZGVsLm5vbmxpbmVhcl9ob2xkID0gMzsKLSAgICAg
IGFkanVzdGVkX2NmZy5lY2hvX21vZGVsLm5vbmxpbmVhcl9yZWxlYXNlID0gMC42ZjsKLSAgICB9
Ci0gIH0KLQogICBpZiAoVXNlU2hvcnREZWxheUVzdGltYXRvcldpbmRvdygpKSB7CiAgICAgYWRq
dXN0ZWRfY2ZnLmRlbGF5Lm51bV9maWx0ZXJzID0KICAgICAgICAgc3RkOjptaW4oYWRqdXN0ZWRf
Y2ZnLmRlbGF5Lm51bV9maWx0ZXJzLCBzdGF0aWNfY2FzdDxzaXplX3Q+KDUpKTsKICAgfQogCi0g
IGlmIChFbmFibGVSZXZlcmJCYXNlZE9uUmVuZGVyKCkgPT0gZmFsc2UpIHsKLSAgICBhZGp1c3Rl
ZF9jZmcuZXBfc3RyZW5ndGgucmV2ZXJiX2Jhc2VkX29uX3JlbmRlciA9IGZhbHNlOworICBib29s
IHVzZV9uZXdfcmVuZGVyX2J1ZmZlcmluZyA9CisgICAgICBFbmFibGVOZXdSZW5kZXJCdWZmZXJp
bmcoKSAmJiBjb25maWcuYnVmZmVyaW5nLnVzZV9uZXdfcmVuZGVyX2J1ZmZlcmluZzsKKyAgLy8g
T2xkIHJlbmRlciBidWZmZXJpbmcgbmVlZHMgb25lIG1vcmUgZmlsdGVyIHRvIGNvdmVyIHRoZSBz
YW1lIGRlbGF5LgorICBpZiAoIXVzZV9uZXdfcmVuZGVyX2J1ZmZlcmluZykgeworICAgIGFkanVz
dGVkX2NmZy5kZWxheS5udW1fZmlsdGVycyArPSAxOwogICB9CiAKLSAgaWYgKCFFbmFibGVTdXBw
cmVzc29yTmVhcmVuZEF2ZXJhZ2luZygpKSB7Ci0gICAgYWRqdXN0ZWRfY2ZnLnN1cHByZXNzb3Iu
bmVhcmVuZF9hdmVyYWdlX2Jsb2NrcyA9IDE7CisgIGlmIChFbmFibGVSZXZlcmJCYXNlZE9uUmVu
ZGVyKCkgPT0gZmFsc2UpIHsKKyAgICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGgucmV2ZXJiX2Jh
c2VkX29uX3JlbmRlciA9IGZhbHNlOwogICB9CiAKLSAgaWYgKCFFbmFibGVTbG93RmlsdGVyQWRh
cHRhdGlvbigpKSB7Ci0gICAgaWYgKCFFbmFibGVTaGFkb3dGaWx0ZXJKdW1wc3RhcnQoKSkgewot
ICAgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluLmxlYWthZ2VfY29udmVyZ2VkID0gMC4wMDVm
OwotICAgICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluLmxlYWthZ2VfZGl2ZXJnZWQgPSAwLjFm
OwotICAgIH0KLSAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1haW5faW5pdGlhbC5sZWFrYWdlX2Nv
bnZlcmdlZCA9IDAuMDVmOwotICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbl9pbml0aWFsLmxl
YWthZ2VfZGl2ZXJnZWQgPSA1LmY7Ci0gIH0KLQotICBpZiAoIUVuYWJsZVNoYWRvd0ZpbHRlckp1
bXBzdGFydCgpKSB7Ci0gICAgaWYgKEVuYWJsZVNsb3dGaWx0ZXJBZGFwdGF0aW9uKCkpIHsKLSAg
ICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbi5sZWFrYWdlX2NvbnZlcmdlZCA9IDAuMDAwNWY7
Ci0gICAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1haW4ubGVha2FnZV9kaXZlcmdlZCA9IDAuMDFm
OwotICAgIH0gZWxzZSB7Ci0gICAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1haW4ubGVha2FnZV9j
b252ZXJnZWQgPSAwLjAwNWY7Ci0gICAgICBhZGp1c3RlZF9jZmcuZmlsdGVyLm1haW4ubGVha2Fn
ZV9kaXZlcmdlZCA9IDAuMWY7Ci0gICAgfQotICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbi5l
cnJvcl9mbG9vciA9IDAuMDAxZjsKKyAgaWYgKCFFbmFibGVOZXdGaWx0ZXJQYXJhbXMoKSkgewor
ICAgIGFkanVzdGVkX2NmZy5maWx0ZXIubWFpbi5sZWFrYWdlX2RpdmVyZ2VkID0gMC4wMWY7Cisg
ICAgYWRqdXN0ZWRfY2ZnLmZpbHRlci5tYWluLmVycm9yX2Zsb29yID0gMC4xZjsKKyAgICBhZGp1
c3RlZF9jZmcuZmlsdGVyLm1haW4uZXJyb3JfY2VpbCA9IDFFMTBmOworICAgIGFkanVzdGVkX2Nm
Zy5maWx0ZXIubWFpbl9pbml0aWFsLmVycm9yX2NlaWwgPSAxRTEwZjsKICAgfQogCiAgIGlmIChF
bmFibGVVbml0eUluaXRpYWxSYW1wdXBHYWluKCkgJiYKQEAgLTE0Nyw2ICsxMjgsNDIgQEAgRWNo
b0NhbmNlbGxlcjNDb25maWcgQWRqdXN0Q29uZmlnKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmln
JiBjb25maWcpIHsKICAgICBhZGp1c3RlZF9jZmcuZWNob19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9y
YW1wdXAuZmlyc3Rfbm9uX3plcm9fZ2FpbiA9IDEuZjsKICAgfQogCisgIGlmIChFbmFibGVMb25n
UmV2ZXJiKCkpIHsKKyAgICBhZGp1c3RlZF9jZmcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4gPSAw
Ljg4ZjsKKyAgfQorCisgIGlmIChFbmFibGVMZWdhY3lEb21pbmFudE5lYXJlbmQoKSkgeworICAg
IGFkanVzdGVkX2NmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nID0KKyAgICAgICAgRWNob0Nh
bmNlbGxlcjNDb25maWc6OlN1cHByZXNzb3I6OlR1bmluZygKKyAgICAgICAgICAgIEVjaG9DYW5j
ZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpNYXNraW5nVGhyZXNob2xkcyguMmYsIC4zZiwgLjNm
KSwKKyAgICAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpNYXNraW5n
VGhyZXNob2xkcyguMDdmLCAuMWYsIC4zZiksCisgICAgICAgICAgICAyLjBmLCAwLjI1Zik7Cisg
IH0KKworICBpZiAoVXNlTGVnYWN5Tm9ybWFsU3VwcHJlc3NvclR1bmluZygpKSB7CisgICAgYWRq
dXN0ZWRfY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZyA9CisgICAgICAgIEVjaG9DYW5jZWxs
ZXIzQ29uZmlnOjpTdXBwcmVzc29yOjpUdW5pbmcoCisgICAgICAgICAgICBFY2hvQ2FuY2VsbGVy
M0NvbmZpZzo6U3VwcHJlc3Nvcjo6TWFza2luZ1RocmVzaG9sZHMoLjJmLCAuM2YsIC4zZiksCisg
ICAgICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6U3VwcHJlc3Nvcjo6TWFza2luZ1RocmVz
aG9sZHMoLjA3ZiwgLjFmLCAuM2YpLAorICAgICAgICAgICAgMi4wZiwgMC4yNWYpOworCisgICAg
YWRqdXN0ZWRfY2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uZW5yX3Ro
cmVzaG9sZCA9IDEwLmY7CisgICAgYWRqdXN0ZWRfY2ZnLnN1cHByZXNzb3IuZG9taW5hbnRfbmVh
cmVuZF9kZXRlY3Rpb24uc25yX3RocmVzaG9sZCA9IDEwLmY7CisgICAgYWRqdXN0ZWRfY2ZnLnN1
cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uaG9sZF9kdXJhdGlvbiA9IDI1Owor
ICB9CisKKyAgaWYgKEFjdGl2YXRlU3RhdGlvbmFyaXR5UHJvcGVydGllcygpKSB7CisgICAgYWRq
dXN0ZWRfY2ZnLmVjaG9fYXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVzID0gdHJ1
ZTsKKyAgfQorCisgIGlmIChBY3RpdmF0ZVN0YXRpb25hcml0eVByb3BlcnRpZXNBdEluaXQoKSkg
eworICAgIGFkanVzdGVkX2NmZy5lY2hvX2F1ZGliaWxpdHkudXNlX3N0YXRpb25hcml0eV9wcm9w
ZXJ0aWVzX2F0X2luaXQgPSB0cnVlOworICB9CisKKyAgaWYgKCFVc2VFYXJseURlbGF5RGV0ZWN0
aW9uKCkpIHsKKyAgICBhZGp1c3RlZF9jZmcuZGVsYXkuZGVsYXlfc2VsZWN0aW9uX3RocmVzaG9s
ZHMgPSB7MjUsIDI1fTsKKyAgfQorCiAgIHJldHVybiBhZGp1c3RlZF9jZmc7CiB9CiAKQEAgLTMz
MCwxMiArMzQ3LDE2IEBAIGludCBFY2hvQ2FuY2VsbGVyMzo6aW5zdGFuY2VfY291bnRfID0gMDsK
IEVjaG9DYW5jZWxsZXIzOjpFY2hvQ2FuY2VsbGVyMyhjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZp
ZyYgY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVfcmF0
ZV9oeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzZV9oaWdocGFzc19m
aWx0ZXIpCi0gICAgOiBFY2hvQ2FuY2VsbGVyMygKLSAgICAgICAgICBBZGp1c3RDb25maWcoY29u
ZmlnKSwKLSAgICAgICAgICBzYW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICB1c2VfaGlnaHBhc3Nf
ZmlsdGVyLAotICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja1Byb2Nlc3Nvcj4oCi0gICAg
ICAgICAgICAgIEJsb2NrUHJvY2Vzc29yOjpDcmVhdGUoQWRqdXN0Q29uZmlnKGNvbmZpZyksIHNh
bXBsZV9yYXRlX2h6KSkpIHt9CisgICAgOiBFY2hvQ2FuY2VsbGVyMyhBZGp1c3RDb25maWcoY29u
ZmlnKSwKKyAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9yYXRlX2h6LAorICAgICAgICAgICAg
ICAgICAgICAgdXNlX2hpZ2hwYXNzX2ZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxCbG9ja1Byb2Nlc3Nvcj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgRW5h
YmxlTmV3UmVuZGVyQnVmZmVyaW5nKCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbmZpZy5idWZmZXJpbmcudXNlX25ld19yZW5kZXJfYnVmZmVyaW5nCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID8gQmxvY2tQcm9jZXNzb3I6OkNyZWF0ZTIoQWRqdXN0Q29uZmln
KGNvbmZpZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2FtcGxlX3JhdGVfaHopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
QmxvY2tQcm9jZXNzb3I6OkNyZWF0ZShBZGp1c3RDb25maWcoY29uZmlnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9yYXRlX2h6
KSkpIHt9CiBFY2hvQ2FuY2VsbGVyMzo6RWNob0NhbmNlbGxlcjMoY29uc3QgRWNob0NhbmNlbGxl
cjNDb25maWcmIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Ft
cGxlX3JhdGVfaHosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VfaGln
aHBhc3NfZmlsdGVyLApAQCAtNDI1LDYgKzQ0NiwxMCBAQCB2b2lkIEVjaG9DYW5jZWxsZXIzOjpQ
cm9jZXNzQ2FwdHVyZShBdWRpb0J1ZmZlciogY2FwdHVyZSwgYm9vbCBsZXZlbF9jaGFuZ2UpIHsK
ICAgZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJhZWMzX2NhbGxfb3JkZXIiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihFY2hvQ2FuY2VsbGVyM0FwaUNhbGw6OmtDYXB0
dXJlKSk7CiAKKyAgLy8gUmVwb3J0IGNhcHR1cmUgY2FsbCBpbiB0aGUgbWV0cmljcyBhbmQgcGVy
aW9kaWNhbGx5IHVwZGF0ZSBBUEkgY2FsbAorICAvLyBtZXRyaWNzLgorICBhcGlfY2FsbF9tZXRy
aWNzXy5SZXBvcnRDYXB0dXJlQ2FsbCgpOworCiAgIC8vIE9wdGlvbmFsbHkgZGVsYXkgdGhlIGNh
cHR1cmUgc2lnbmFsLgogICBpZiAoY29uZmlnXy5kZWxheS5maXhlZF9jYXB0dXJlX2RlbGF5X3Nh
bXBsZXMgPiAwKSB7CiAgICAgYmxvY2tfZGVsYXlfYnVmZmVyXy5EZWxheVNpZ25hbChjYXB0dXJl
KTsKQEAgLTQ3OSw2ICs1MDQsOSBAQCB2b2lkIEVjaG9DYW5jZWxsZXIzOjpFbXB0eVJlbmRlclF1
ZXVlKCkgewogICBib29sIGZyYW1lX3RvX2J1ZmZlciA9CiAgICAgICByZW5kZXJfdHJhbnNmZXJf
cXVldWVfLlJlbW92ZSgmcmVuZGVyX3F1ZXVlX291dHB1dF9mcmFtZV8pOwogICB3aGlsZSAoZnJh
bWVfdG9fYnVmZmVyKSB7CisgICAgLy8gUmVwb3J0IHJlbmRlciBjYWxsIGluIHRoZSBtZXRyaWNz
LgorICAgIGFwaV9jYWxsX21ldHJpY3NfLlJlcG9ydFJlbmRlckNhbGwoKTsKKwogICAgIEJ1ZmZl
clJlbmRlckZyYW1lQ29udGVudCgmcmVuZGVyX3F1ZXVlX291dHB1dF9mcmFtZV8sIDAsICZyZW5k
ZXJfYmxvY2tlcl8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3Byb2Nlc3Nv
cl8uZ2V0KCksICZibG9ja18sICZzdWJfZnJhbWVfdmlld18pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9lY2hvX2NhbmNlbGxlcjMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fY2FuY2Vs
bGVyMy5oCmluZGV4IGY1NTIwYmEzYWNlNWMzNDkyYTZiMmEyNjg5NmM4ODMyNTVmODg1NWEuLjY3
MWQyNzE2NzY3NWM2NmM5OWMzZTIxZTI1NzJjNmJhZjczNGU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2VjaG9fY2FuY2VsbGVyMy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fY2Fu
Y2VsbGVyMy5oCkBAIC0xMSw3ICsxMSwxNCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NF
U1NJTkdfQUVDM19FQ0hPX0NBTkNFTExFUjNfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FFQzNfRUNIT19DQU5DRUxMRVIzX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNp
bmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYXBpL2FycmF5
X3ZpZXcuaCIKICNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgor
I2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NvbnRyb2wuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hcGlfY2FsbF9qaXR0ZXJfbWV0cmljcy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX2RlbGF5X2J1ZmZlci5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX2ZyYW1lci5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Jsb2NrX3Byb2Nlc3Nvci5oIgpA
QCAtMTksOSArMjYsMTEgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9mcmFtZV9ibG9ja2VyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1
ZGlvX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5n
L2FwbV9kYXRhX2R1bXBlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yYWNl
X2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zd2FwX3F1ZXVlLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBA
IC0xMzIsNiArMTQxLDcgQEAgY2xhc3MgRWNob0NhbmNlbGxlcjMgOiBwdWJsaWMgRWNob0NvbnRy
b2wgewogICBzdGQ6OnZlY3RvcjxydGM6OkFycmF5VmlldzxmbG9hdD4+IHN1Yl9mcmFtZV92aWV3
XwogICAgICAgUlRDX0dVQVJERURfQlkoY2FwdHVyZV9yYWNlX2NoZWNrZXJfKTsKICAgQmxvY2tE
ZWxheUJ1ZmZlciBibG9ja19kZWxheV9idWZmZXJfIFJUQ19HVUFSREVEX0JZKGNhcHR1cmVfcmFj
ZV9jaGVja2VyXyk7CisgIEFwaUNhbGxKaXR0ZXJNZXRyaWNzIGFwaV9jYWxsX21ldHJpY3NfIFJU
Q19HVUFSREVEX0JZKGNhcHR1cmVfcmFjZV9jaGVja2VyXyk7CiAKICAgUlRDX0RJU0FMTE9XX0lN
UExJQ0lUX0NPTlNUUlVDVE9SUyhFY2hvQ2FuY2VsbGVyMyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3IuY2MKaW5kZXggNjM4ZGRjNDQwODRlODVmMmFjNjcw
YzllZjUyMDIzZWNlNGY2YTM2Zi4uNjA2OWVkNmJlNjk3ZGJjODMxNTE3MDMwMzc2M2Y2ZjNjNWY5
OGU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRv
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9yLmNjCkBA
IC05LDMxICs5LDIxIEBACiAgKi8KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9lY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9yLmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+
CiAjaW5jbHVkZSA8YXJyYXk+CiAKICNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIz
X2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNf
Y29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZG93bnNh
bXBsZWRfcmVuZGVyX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIHsKLXNpemVfdCBHZXREb3duU2FtcGxpbmdGYWN0
b3IoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZykgewotICAvLyBEbyBub3QgdXNl
IGRvd24gc2FtcGxpbmcgZmFjdG9yIDggaWYga2lsbCBzd2l0Y2ggaXMgdHJpZ2dlcmVkLgotICBy
ZXR1cm4gKGNvbmZpZy5kZWxheS5kb3duX3NhbXBsaW5nX2ZhY3RvciA9PSA4ICYmCi0gICAgICAg
ICAgZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLUFlYzNEb3duU2FtcGxpbmdGYWN0b3I4
S2lsbFN3aXRjaCIpKQotICAgICAgICAgICAgID8gNAotICAgICAgICAgICAgIDogY29uZmlnLmRl
bGF5LmRvd25fc2FtcGxpbmdfZmFjdG9yOwotfQotfSAgLy8gbmFtZXNwYWNlCiAKIEVjaG9QYXRo
RGVsYXlFc3RpbWF0b3I6OkVjaG9QYXRoRGVsYXlFc3RpbWF0b3IoCiAgICAgQXBtRGF0YUR1bXBl
ciogZGF0YV9kdW1wZXIsCiAgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZykK
ICAgICA6IGRhdGFfZHVtcGVyXyhkYXRhX2R1bXBlciksCi0gICAgICBkb3duX3NhbXBsaW5nX2Zh
Y3Rvcl8oR2V0RG93blNhbXBsaW5nRmFjdG9yKGNvbmZpZykpLAorICAgICAgZG93bl9zYW1wbGlu
Z19mYWN0b3JfKGNvbmZpZy5kZWxheS5kb3duX3NhbXBsaW5nX2ZhY3RvciksCiAgICAgICBzdWJf
YmxvY2tfc2l6ZV8oZG93bl9zYW1wbGluZ19mYWN0b3JfICE9IDAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBrQmxvY2tTaXplIC8gZG93bl9zYW1wbGluZ19mYWN0b3JfCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDoga0Jsb2NrU2l6ZSksCkBAIC00NSw3ICszNSw3IEBAIEVjaG9QYXRo
RGVsYXlFc3RpbWF0b3I6OkVjaG9QYXRoRGVsYXlFc3RpbWF0b3IoCiAgICAgICAgICAga01hdGNo
ZWRGaWx0ZXJXaW5kb3dTaXplU3ViQmxvY2tzLAogICAgICAgICAgIGNvbmZpZy5kZWxheS5udW1f
ZmlsdGVycywKICAgICAgICAgICBrTWF0Y2hlZEZpbHRlckFsaWdubWVudFNoaWZ0U2l6ZVN1YkJs
b2NrcywKLSAgICAgICAgICBHZXREb3duU2FtcGxpbmdGYWN0b3IoY29uZmlnKSA9PSA4CisgICAg
ICAgICAgY29uZmlnLmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9yID09IDgKICAgICAgICAgICAg
ICAgPyBjb25maWcucmVuZGVyX2xldmVscy5wb29yX2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0X2Rz
OAogICAgICAgICAgICAgICA6IGNvbmZpZy5yZW5kZXJfbGV2ZWxzLnBvb3JfZXhjaXRhdGlvbl9y
ZW5kZXJfbGltaXQsCiAgICAgICAgICAgY29uZmlnLmRlbGF5LmRlbGF5X2VzdGltYXRlX3Ntb290
aGluZywKQEAgLTU5LDEzICs0OSw4IEBAIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3I6OkVjaG9QYXRo
RGVsYXlFc3RpbWF0b3IoCiAKIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3I6On5FY2hvUGF0aERlbGF5
RXN0aW1hdG9yKCkgPSBkZWZhdWx0OwogCi12b2lkIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3I6OlJl
c2V0KGJvb2wgc29mdF9yZXNldCkgewotICBpZiAoIXNvZnRfcmVzZXQpIHsKLSAgICBtYXRjaGVk
X2ZpbHRlcl9sYWdfYWdncmVnYXRvcl8uUmVzZXQoKTsKLSAgfQotICBtYXRjaGVkX2ZpbHRlcl8u
UmVzZXQoKTsKLSAgb2xkX2FnZ3JlZ2F0ZWRfbGFnXyA9IGFic2w6Om51bGxvcHQ7Ci0gIGNvbnNp
c3RlbnRfZXN0aW1hdGVfY291bnRlcl8gPSAwOwordm9pZCBFY2hvUGF0aERlbGF5RXN0aW1hdG9y
OjpSZXNldChib29sIHJlc2V0X2RlbGF5X2NvbmZpZGVuY2UpIHsKKyAgUmVzZXQodHJ1ZSwgcmVz
ZXRfZGVsYXlfY29uZmlkZW5jZSk7CiB9CiAKIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+
IEVjaG9QYXRoRGVsYXlFc3RpbWF0b3I6OkVzdGltYXRlRGVsYXkoCkBAIC04OCw2ICs3MywxMiBA
QCBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBFY2hvUGF0aERlbGF5RXN0aW1hdG9yOjpF
c3RpbWF0ZURlbGF5KAogICAgICAgbWF0Y2hlZF9maWx0ZXJfbGFnX2FnZ3JlZ2F0b3JfLkFnZ3Jl
Z2F0ZSgKICAgICAgICAgICBtYXRjaGVkX2ZpbHRlcl8uR2V0TGFnRXN0aW1hdGVzKCkpOwogCisg
IC8vIFJ1biBjbG9ja2RyaWZ0IGRldGVjdGlvbi4KKyAgaWYgKGFnZ3JlZ2F0ZWRfbWF0Y2hlZF9m
aWx0ZXJfbGFnICYmCisgICAgICAoKmFnZ3JlZ2F0ZWRfbWF0Y2hlZF9maWx0ZXJfbGFnKS5xdWFs
aXR5ID09CisgICAgICAgICAgRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a1JlZmluZWQpCisgICAg
Y2xvY2tkcmlmdF9kZXRlY3Rvcl8uVXBkYXRlKCgqYWdncmVnYXRlZF9tYXRjaGVkX2ZpbHRlcl9s
YWcpLmRlbGF5KTsKKwogICAvLyBUT0RPKHBlYWgpOiBNb3ZlIHRoaXMgbG9nZ2luZyBvdXRzaWRl
IG9mIHRoaXMgY2xhc3Mgb25jZSBFY2hvQ2FuY2VsbGVyMwogICAvLyBkZXZlbG9wbWVudCBpcyBk
b25lLgogICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoCkBAIC0xMTIsMTAgKzEwMywxOSBAQCBhYnNs
OjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBFY2hvUGF0aERlbGF5RXN0aW1hdG9yOjpFc3RpbWF0
ZURlbGF5KAogICBvbGRfYWdncmVnYXRlZF9sYWdfID0gYWdncmVnYXRlZF9tYXRjaGVkX2ZpbHRl
cl9sYWc7CiAgIGNvbnN0ZXhwciBzaXplX3Qga051bUJsb2Nrc1BlclNlY29uZEJ5MiA9IGtOdW1C
bG9ja3NQZXJTZWNvbmQgLyAyOwogICBpZiAoY29uc2lzdGVudF9lc3RpbWF0ZV9jb3VudGVyXyA+
IGtOdW1CbG9ja3NQZXJTZWNvbmRCeTIpIHsKLSAgICBSZXNldCh0cnVlKTsKKyAgICBSZXNldChm
YWxzZSwgZmFsc2UpOwogICB9CiAKICAgcmV0dXJuIGFnZ3JlZ2F0ZWRfbWF0Y2hlZF9maWx0ZXJf
bGFnOwogfQogCit2b2lkIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3I6OlJlc2V0KGJvb2wgcmVzZXRf
bGFnX2FnZ3JlZ2F0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
cmVzZXRfZGVsYXlfY29uZmlkZW5jZSkgeworICBpZiAocmVzZXRfbGFnX2FnZ3JlZ2F0b3IpIHsK
KyAgICBtYXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRvcl8uUmVzZXQocmVzZXRfZGVsYXlfY29u
ZmlkZW5jZSk7CisgIH0KKyAgbWF0Y2hlZF9maWx0ZXJfLlJlc2V0KCk7CisgIG9sZF9hZ2dyZWdh
dGVkX2xhZ18gPSBhYnNsOjpudWxsb3B0OworICBjb25zaXN0ZW50X2VzdGltYXRlX2NvdW50ZXJf
ID0gMDsKK30KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0
aF9kZWxheV9lc3RpbWF0b3IuaAppbmRleCBjZWE5YWJjYjUxNTE2OWNkN2JjMWZkZDNmNzcxZTUw
Mzk0YjY1YTcwLi4xZjE0NzM1ZDFhNTFhZmIwZDRkZmIzYWU2ODY2YjkyYTgyODA4NzJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9yLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvci5oCkBAIC0xMSwxMyArMTEs
MTMgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRUNIT19QQVRIX0RF
TEFZX0VTVElNQVRPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19F
Q0hPX1BBVEhfREVMQVlfRVNUSU1BVE9SX0hfCiAKLSNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVk
ZSA8c3RkZGVmLmg+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCi0jaW5jbHVk
ZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKKyNpbmNsdWRlICJhcGkvYXJy
YXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2Nr
ZHJpZnRfZGV0ZWN0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9kZWNpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9k
ZWxheV9lc3RpbWF0ZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgpAQCAtMjUsNiArMjUsOCBAQAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKIGNsYXNzIEFwbURhdGFEdW1wZXI7CitzdHJ1Y3QgRG93bnNhbXBsZWRS
ZW5kZXJCdWZmZXI7CitzdHJ1Y3QgRWNob0NhbmNlbGxlcjNDb25maWc7CiAKIC8vIEVzdGltYXRl
cyB0aGUgZGVsYXkgb2YgdGhlIGVjaG8gcGF0aC4KIGNsYXNzIEVjaG9QYXRoRGVsYXlFc3RpbWF0
b3IgewpAQCAtMzMsOSArMzUsOSBAQCBjbGFzcyBFY2hvUGF0aERlbGF5RXN0aW1hdG9yIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmln
KTsKICAgfkVjaG9QYXRoRGVsYXlFc3RpbWF0b3IoKTsKIAotICAvLyBSZXNldHMgdGhlIGVzdGlt
YXRpb24uIElmIHRoZSBzb2Z0LXJlc2V0IGlzIHNwZWNpZmllZCwgb25seSAgdGhlIG1hdGNoZWQK
LSAgLy8gZmlsdGVycyBhcmUgcmVzZXQuCi0gIHZvaWQgUmVzZXQoYm9vbCBzb2Z0X3Jlc2V0KTsK
KyAgLy8gUmVzZXRzIHRoZSBlc3RpbWF0aW9uLiBJZiB0aGUgZGVsYXkgY29uZmlkZW5jZSBpcyBy
ZXNldCwgdGhlIHJlc2V0IGJlaGF2aW9yCisgIC8vIGlzIGFzIGlmIHRoZSBjYWxsIGlzIHJlc3Rh
cnRlZC4KKyAgdm9pZCBSZXNldChib29sIHJlc2V0X2RlbGF5X2NvbmZpZGVuY2UpOwogCiAgIC8v
IFByb2R1Y2UgYSBkZWxheSBlc3RpbWF0ZSBpZiBzdWNoIGlzIGF2YWxpYWJsZS4KICAgYWJzbDo6
b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gRXN0aW1hdGVEZWxheSgKQEAgLTQ4LDYgKzUwLDExIEBA
IGNsYXNzIEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvd25fc2FtcGxpbmdfZmFjdG9yXyk7CiAgIH0KIAorICAvLyBSZXR1
cm5zIHRoZSBsZXZlbCBvZiBkZXRlY3RlZCBjbG9ja2RyaWZ0LgorICBDbG9ja2RyaWZ0RGV0ZWN0
b3I6OkxldmVsIENsb2NrZHJpZnQoKSBjb25zdCB7CisgICAgcmV0dXJuIGNsb2NrZHJpZnRfZGV0
ZWN0b3JfLkNsb2NrZHJpZnRMZXZlbCgpOworICB9CisKICBwcml2YXRlOgogICBBcG1EYXRhRHVt
cGVyKiBjb25zdCBkYXRhX2R1bXBlcl87CiAgIGNvbnN0IHNpemVfdCBkb3duX3NhbXBsaW5nX2Zh
Y3Rvcl87CkBAIC01Nyw2ICs2NCwxMCBAQCBjbGFzcyBFY2hvUGF0aERlbGF5RXN0aW1hdG9yIHsK
ICAgTWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3IgbWF0Y2hlZF9maWx0ZXJfbGFnX2FnZ3JlZ2F0
b3JfOwogICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBvbGRfYWdncmVnYXRlZF9sYWdf
OwogICBzaXplX3QgY29uc2lzdGVudF9lc3RpbWF0ZV9jb3VudGVyXyA9IDA7CisgIENsb2NrZHJp
ZnREZXRlY3RvciBjbG9ja2RyaWZ0X2RldGVjdG9yXzsKKworICAvLyBJbnRlcm5hbCByZXNldCBt
ZXRob2Qgd2l0aCBtb3JlIGdyYW51bGFyaXR5LgorICB2b2lkIFJlc2V0KGJvb2wgcmVzZXRfbGFn
X2FnZ3JlZ2F0b3IsIGJvb2wgcmVzZXRfZGVsYXlfY29uZmlkZW5jZSk7CiAKICAgUlRDX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihFY2hvUGF0aERlbGF5RXN0aW1hdG9yKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9yX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRvcl91bml0dGVzdC5jYwpp
bmRleCAzMTFhNGEyMmQ1ZjhlZTFlYzc2NDc3MTA1MGRkMjllYTFmNjQwZTNlLi5hNGUzMTMzYmI1
YmFhZTE4YjM2NWVmMzc1OGM0ZGJkNjExY2YwNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9lY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKQEAgLTM5LDcgKzM5LDcg
QEAgVEVTVChFY2hvUGF0aERlbGF5RXN0aW1hdG9yLCBCYXNpY0FwaUNhbGxzKSB7CiAgIEFwbURh
dGFEdW1wZXIgZGF0YV9kdW1wZXIoMCk7CiAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZzsK
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVy
KAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJl
bmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogICBFY2hvUGF0aERlbGF5RXN0
aW1hdG9yIGVzdGltYXRvcigmZGF0YV9kdW1wZXIsIGNvbmZpZyk7CiAgIHN0ZDo6dmVjdG9yPHN0
ZDo6dmVjdG9yPGZsb2F0Pj4gcmVuZGVyKDMsIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXpl
KSk7CiAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBjYXB0dXJlKGtCbG9ja1NpemUpOwpAQCAtNjQsMTIg
KzY0LDkgQEAgVEVTVChFY2hvUGF0aERlbGF5RXN0aW1hdG9yLCBEZWxheUVzdGltYXRpb24pIHsK
ICAgICBjb25maWcuZGVsYXkubnVtX2ZpbHRlcnMgPSAxMDsKICAgICBmb3IgKHNpemVfdCBkZWxh
eV9zYW1wbGVzIDogezMwLCA2NCwgMTUwLCAyMDAsIDgwMCwgNDAwMH0pIHsKICAgICAgIFNDT1BF
RF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KGRlbGF5X3NhbXBsZXMsIGRvd25fc2FtcGxpbmdfZmFj
dG9yKSk7Ci0KLSAgICAgIGNvbmZpZy5kZWxheS5hcGlfY2FsbF9qaXR0ZXJfYmxvY2tzID0gNTsK
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1
ZmZlcigKLSAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOwot
ICAgICAgRGVsYXlCdWZmZXI8ZmxvYXQ+IHNpZ25hbF9kZWxheV9idWZmZXIoCi0gICAgICAgICAg
ZGVsYXlfc2FtcGxlcyArIDIgKiBjb25maWcuZGVsYXkuYXBpX2NhbGxfaml0dGVyX2Jsb2NrcyAq
IDY0KTsKKyAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsK
KyAgICAgIERlbGF5QnVmZmVyPGZsb2F0PiBzaWduYWxfZGVsYXlfYnVmZmVyKGRlbGF5X3NhbXBs
ZXMpOwogICAgICAgRWNob1BhdGhEZWxheUVzdGltYXRvciBlc3RpbWF0b3IoJmRhdGFfZHVtcGVy
LCBjb25maWcpOwogCiAgICAgICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBlc3RpbWF0
ZWRfZGVsYXlfc2FtcGxlczsKQEAgLTk3LDkgKzk0LDcgQEAgVEVTVChFY2hvUGF0aERlbGF5RXN0
aW1hdG9yLCBEZWxheUVzdGltYXRpb24pIHsKICAgICAgICAgLy8gZG9tYWluLgogICAgICAgICBz
aXplX3QgZGVsYXlfZHMgPSBkZWxheV9zYW1wbGVzIC8gZG93bl9zYW1wbGluZ19mYWN0b3I7CiAg
ICAgICAgIHNpemVfdCBlc3RpbWF0ZWRfZGVsYXlfZHMgPQotICAgICAgICAgICAgKGVzdGltYXRl
ZF9kZWxheV9zYW1wbGVzLT5kZWxheSAtCi0gICAgICAgICAgICAgKGNvbmZpZy5kZWxheS5hcGlf
Y2FsbF9qaXR0ZXJfYmxvY2tzICsgMSkgKiA2NCkgLwotICAgICAgICAgICAgZG93bl9zYW1wbGlu
Z19mYWN0b3I7CisgICAgICAgICAgICBlc3RpbWF0ZWRfZGVsYXlfc2FtcGxlcy0+ZGVsYXkgLyBk
b3duX3NhbXBsaW5nX2ZhY3RvcjsKICAgICAgICAgRVhQRUNUX05FQVIoZGVsYXlfZHMsIGVzdGlt
YXRlZF9kZWxheV9kcywgMSk7CiAgICAgICB9IGVsc2UgewogICAgICAgICBBRERfRkFJTFVSRSgp
OwpAQCAtMTE4LDcgKzExMyw3IEBAIFRFU1QoRWNob1BhdGhEZWxheUVzdGltYXRvciwgTm9EZWxh
eUVzdGltYXRlc0Zvckxvd0xldmVsUmVuZGVyU2lnbmFscykgewogICBBcG1EYXRhRHVtcGVyIGRh
dGFfZHVtcGVyKDApOwogICBFY2hvUGF0aERlbGF5RXN0aW1hdG9yIGVzdGltYXRvcigmZGF0YV9k
dW1wZXIsIGNvbmZpZyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVu
ZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoRWNob0Nh
bmNlbGxlcjNDb25maWcoKSwgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIo
RWNob0NhbmNlbGxlcjNDb25maWcoKSwgMykpOwogICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEw
MDsgKytrKSB7CiAgICAgUmFuZG9taXplU2FtcGxlVmVjdG9yKCZyYW5kb21fZ2VuZXJhdG9yLCBy
ZW5kZXJbMF0pOwogICAgIGZvciAoYXV0byYgcmVuZGVyX2sgOiByZW5kZXJbMF0pIHsKQEAgLTE0
Miw3ICsxMzcsNyBAQCBURVNUKEVjaG9QYXRoRGVsYXlFc3RpbWF0b3IsIERJU0FCTEVEX1dyb25n
UmVuZGVyQmxvY2tTaXplKSB7CiAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZzsKICAgRWNo
b1BhdGhEZWxheUVzdGltYXRvciBlc3RpbWF0b3IoJmRhdGFfZHVtcGVyLCBjb25maWcpOwogICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0g
ICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgUmVuZGVy
RGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBj
YXB0dXJlKGtCbG9ja1NpemUpOwogICBFWFBFQ1RfREVBVEgoZXN0aW1hdG9yLkVzdGltYXRlRGVs
YXkoCiAgICAgICAgICAgICAgICAgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0RG93bnNhbXBs
ZWRSZW5kZXJCdWZmZXIoKSwgY2FwdHVyZSksCkBAIC0xNTcsNyArMTUyLDcgQEAgVEVTVChFY2hv
UGF0aERlbGF5RXN0aW1hdG9yLCBXcm9uZ0NhcHR1cmVCbG9ja1NpemUpIHsKICAgRWNob0NhbmNl
bGxlcjNDb25maWcgY29uZmlnOwogICBFY2hvUGF0aERlbGF5RXN0aW1hdG9yIGVzdGltYXRvcigm
ZGF0YV9kdW1wZXIsIGNvbmZpZyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZl
cj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUo
Y29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMp
KTsKICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGNhcHR1cmUoc3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9j
a1NpemUgLSAxKSk7CiAgIEVYUEVDVF9ERUFUSChlc3RpbWF0b3IuRXN0aW1hdGVEZWxheSgKICAg
ICAgICAgICAgICAgICAgICByZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXREb3duc2FtcGxlZFJlbmRl
ckJ1ZmZlcigpLCBjYXB0dXJlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVt
b3Zlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlci5jYwppbmRleCBhY2RhZjMxMDRi
OWZhZTI4MDk5YTAyZDFkNjY4NmM0ZTVmMjczMTU2Li5jZmI3Mzk1MTk5MmNkOTc4NGQzMzI4ZjU2
OThiZmI5Y2E3ZTI0M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyLmNjCkBAIC0xMCwyNiArMTAsMjkg
QEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXIu
aCIKIAogI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxh
bGdvcml0aG0+CisjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUg
PG51bWVyaWM+Ci0jaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfZmZ0LmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY29tZm9ydF9ub2lzZV9nZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhf
dmFyaWFiaWxpdHkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9l
Y2hvX3JlbW92ZXJfbWV0cmljcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2ZmdF9kYXRhLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmVuZGVyX2J1ZmZlci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5emVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNob19lc3RpbWF0b3IuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXQuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0ZXIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWlu
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFf
ZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9maWVsZF90cmlhbC5oIgpAQCAtMTc1LDcgKzE3OCw3IEBAIEVjaG9SZW1vdmVySW1w
bDo6RWNob1JlbW92ZXJJbXBsKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAg
ICAgICBzdWJ0cmFjdG9yXyhjb25maWcsIGRhdGFfZHVtcGVyXy5nZXQoKSwgb3B0aW1pemF0aW9u
XyksCiAgICAgICBzdXBwcmVzc2lvbl9nYWluXyhjb25maWdfLCBvcHRpbWl6YXRpb25fLCBzYW1w
bGVfcmF0ZV9oeiksCiAgICAgICBjbmdfKG9wdGltaXphdGlvbl8pLAotICAgICAgc3VwcHJlc3Np
b25fZmlsdGVyXyhzYW1wbGVfcmF0ZV9oel8pLAorICAgICAgc3VwcHJlc3Npb25fZmlsdGVyXyhv
cHRpbWl6YXRpb25fLCBzYW1wbGVfcmF0ZV9oel8pLAogICAgICAgcmVuZGVyX3NpZ25hbF9hbmFs
eXplcl8oY29uZmlnXyksCiAgICAgICByZXNpZHVhbF9lY2hvX2VzdGltYXRvcl8oY29uZmlnXyks
CiAgICAgICBhZWNfc3RhdGVfKGNvbmZpZ18pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L2VjaG9fcmVtb3Zlcl9tZXRyaWNzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21l
dHJpY3MuY2MKaW5kZXggYTA0MDI2YjRmNWY1NWJmYjRlNDJhOThiMzA2M2RkNDM3NzA3YzM2Ni4u
ZGE3YTIyNGU4NjNhNjQ2MzBiOGNlYTI5ODAxMDk3ZjlkY2U2OTY4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21ldHJpY3MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
ZWNob19yZW1vdmVyX21ldHJpY3MuY2MKQEAgLTExLDkgKzExLDExIEBACiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21ldHJpY3MuaCIKIAogI2lu
Y2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+
CiAjaW5jbHVkZSA8bnVtZXJpYz4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAic3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9lY2hvX3JlbW92ZXJfbWV0cmljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX21l
dHJpY3MuaAppbmRleCAxN2I4MDNhMWNmOTg4OGJkMGI0OWI4N2M3NTVjYmNkYTNlZjAxMzNkLi4w
NzA3YTVmMDMxZDlhZTYxOWIxM2QxZjE1MmU2OTAyYWI0M2ZhZDc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJfbWV0cmljcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Vj
aG9fcmVtb3Zlcl9tZXRyaWNzLmgKQEAgLTExLDYgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0FFQzNfRUNIT19SRU1PVkVSX01FVFJJQ1NfSF8KICNkZWZpbmUgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfRUNIT19SRU1PVkVSX01FVFJJQ1NfSF8KIAorI2lu
Y2x1ZGUgPGFycmF5PgorCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YWVjM19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9h
ZWNfc3RhdGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcmVtb3Zlcl91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2VjaG9fcmVtb3Zlcl91bml0dGVzdC5jYwppbmRleCBkYTAzZjRjOGU4ZGI3ZGY1
NjNhMWEyOGQwMjNhMGEzMzMzZGVhOTE3Li44YmY3NmM0MDYwZDYyMDQ1Yjg4OGI3NjRhNTRiMDhj
Yjk3YzZkOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3JlbW92ZXJfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19yZW1vdmVyX3VuaXR0ZXN0LmNjCkBAIC00
OCw3ICs0OCw3IEBAIFRFU1QoRWNob1JlbW92ZXIsIEJhc2ljQXBpQ2FsbHMpIHsKICAgICBTQ09Q
RURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChyYXRlKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVj
aG9SZW1vdmVyPiByZW1vdmVyKAogICAgICAgICBFY2hvUmVtb3Zlcjo6Q3JlYXRlKEVjaG9DYW5j
ZWxsZXIzQ29uZmlnKCksIHJhdGUpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlC
dWZmZXI+IHJlbmRlcl9idWZmZXIoUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZSgKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIoUmVuZGVyRGVsYXlC
dWZmZXI6OkNyZWF0ZTIoCiAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIE51bUJhbmRz
Rm9yUmF0ZShyYXRlKSkpOwogCiAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiBy
ZW5kZXIoTnVtQmFuZHNGb3JSYXRlKHJhdGUpLApAQCAtODksNyArODksNyBAQCBURVNUKEVjaG9S
ZW1vdmVyLCBXcm9uZ0NhcHR1cmVCbG9ja1NpemUpIHsKICAgICBTQ09QRURfVFJBQ0UoUHJvZHVj
ZURlYnVnVGV4dChyYXRlKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9SZW1vdmVyPiByZW1v
dmVyKAogICAgICAgICBFY2hvUmVtb3Zlcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCks
IHJhdGUpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9i
dWZmZXIoUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZSgKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9idWZmZXIoUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIo
CiAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkp
OwogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gY2FwdHVyZSgKICAgICAgICAg
TnVtQmFuZHNGb3JSYXRlKHJhdGUpLCBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSAtIDEs
IDAuZikpOwpAQCAtMTExLDcgKzExMSw3IEBAIFRFU1QoRWNob1JlbW92ZXIsIERJU0FCTEVEX1dy
b25nQ2FwdHVyZU51bUJhbmRzKSB7CiAgICAgU0NPUEVEX1RSQUNFKFByb2R1Y2VEZWJ1Z1RleHQo
cmF0ZSkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gcmVtb3ZlcigKICAgICAg
ICAgRWNob1JlbW92ZXI6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCByYXRlKSk7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfYnVmZmVyKFJlbmRl
ckRlbGF5QnVmZmVyOjpDcmVhdGUoCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVm
ZmVyPiByZW5kZXJfYnVmZmVyKFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKAogICAgICAgICBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZygpLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKICAgICBzdGQ6
OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IGNhcHR1cmUoCiAgICAgICAgIE51bUJhbmRzRm9y
UmF0ZShyYXRlID09IDQ4MDAwID8gMTYwMDAgOiByYXRlICsgMTYwMDApLApAQCAtMTMxLDcgKzEz
MSw3IEBAIFRFU1QoRWNob1JlbW92ZXIsIE51bGxDYXB0dXJlKSB7CiAgIHN0ZDo6dW5pcXVlX3B0
cjxFY2hvUmVtb3Zlcj4gcmVtb3ZlcigKICAgICAgIEVjaG9SZW1vdmVyOjpDcmVhdGUoRWNob0Nh
bmNlbGxlcjNDb25maWcoKSwgODAwMCkpOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlC
dWZmZXI+IHJlbmRlcl9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKEVj
aG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVh
dGUyKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKICAgRWNob1BhdGhWYXJpYWJpbGl0eSBl
Y2hvX3BhdGhfdmFyaWFiaWxpdHkoCiAgICAgICBmYWxzZSwgRWNob1BhdGhWYXJpYWJpbGl0eTo6
RGVsYXlBZGp1c3RtZW50OjprTm9uZSwgZmFsc2UpOwogICBFWFBFQ1RfREVBVEgoCkBAIC0xNjEs
NyArMTYxLDcgQEAgVEVTVChFY2hvUmVtb3ZlciwgQmFzaWNFY2hvUmVtb3ZhbCkgewogICAgICAg
Y29uZmlnLmRlbGF5Lm1pbl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tzID0gMDsKICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxFY2hvUmVtb3Zlcj4gcmVtb3ZlcihFY2hvUmVtb3Zlcjo6Q3JlYXRlKGNvbmZp
ZywgcmF0ZSkpOwogICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5k
ZXJfYnVmZmVyKAotICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCBO
dW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3Jl
YXRlMihjb25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOwogICAgICAgcmVuZGVyX2J1ZmZl
ci0+U2V0RGVsYXkoZGVsYXlfc2FtcGxlcyAvIGtCbG9ja1NpemUpOwogCiAgICAgICBzdGQ6OnZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGVsYXlCdWZmZXI8ZmxvYXQ+Pj4gZGVsYXlfYnVmZmVycyh4
LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxfZXN0aW1hdG9yLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvZXJsX2VzdGltYXRvci5jYwppbmRleCAyZGE5Y2Q4ODgzNTA0MDZiZjc4
OTAyODA2ZmU1NjQ5Njg5ZTQ0ZTEwLi44NWIxZTAyMmRhMmY4NzI2NmUwZTg1NzJhNzQxY2M4NGIx
MWM4NmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxfZXN0aW1hdG9yLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL2VybF9lc3RpbWF0b3IuY2MKQEAgLTEzLDYgKzEzLDggQEAKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bnVtZXJpYz4KIAorI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2VybF9lc3RpbWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybF9l
c3RpbWF0b3IuaAppbmRleCBkYWNkNTQ2YTZkZTczMmY2MjViNTk5YmQ2ZDA0MDMxYzkwYjAyMzMx
Li4yOTcxOGMzNzgzNmU4YThiZDE1NjI3OTM3MWQ4MjcyZjAwYzJkYjM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9lcmxfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsX2Vz
dGltYXRvci5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BRUMzX0VSTF9FU1RJTUFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX0FFQzNfRVJMX0VTVElNQVRPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVk
ZSA8YXJyYXk+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZXJsZV9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGlt
YXRvci5jYwppbmRleCA3MTEwODVmOTZmMDg5NGM3YzVjMjljODZlNzIyZTk3N2JiNmI0ZjVkLi42
NTZhOWM3ZmRmNTMwNjYxZTUyNmY1NWMwN2RlM2I5ZWE2ODBlZDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2Vz
dGltYXRvci5jYwpAQCAtMTAsMTkgKzEwLDE4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9lcmxlX2VzdGltYXRvci5oIgogCi0jaW5jbHVkZSAiYXBpL2FycmF5
X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2Nv
bW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9k
YXRhX2R1bXBlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIAogRXJsZUVzdGltYXRvcjo6RXJsZUVzdGltYXRvcihzaXplX3Qgc3RhcnR1cF9w
aGFzZV9sZW5ndGhfYmxvY2tzXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
bWluX2VybGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG1heF9lcmxlX2xm
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBtYXhfZXJsZV9oZikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZp
ZykKICAgICA6IHN0YXJ0dXBfcGhhc2VfbGVuZ3RoX2Jsb2Nrc19fKHN0YXJ0dXBfcGhhc2VfbGVu
Z3RoX2Jsb2Nrc18pLAotICAgICAgZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3JfKG1pbl9lcmxlLCBt
YXhfZXJsZV9sZiksCi0gICAgICBzdWJiYW5kX2VybGVfZXN0aW1hdG9yXyhtaW5fZXJsZSwgbWF4
X2VybGVfbGYsIG1heF9lcmxlX2hmKSB7CisgICAgICB1c2Vfc2lnbmFsX2RlcGVuZGVudF9lcmxl
Xyhjb25maWcuZXJsZS5udW1fc2VjdGlvbnMgPiAxKSwKKyAgICAgIGZ1bGxiYW5kX2VybGVfZXN0
aW1hdG9yXyhjb25maWcuZXJsZS5taW4sIGNvbmZpZy5lcmxlLm1heF9sKSwKKyAgICAgIHN1YmJh
bmRfZXJsZV9lc3RpbWF0b3JfKGNvbmZpZyksCisgICAgICBzaWduYWxfZGVwZW5kZW50X2VybGVf
ZXN0aW1hdG9yXyhjb25maWcpIHsKICAgUmVzZXQodHJ1ZSk7CiB9CiAKQEAgLTMxLDIwICszMCwy
NSBAQCBFcmxlRXN0aW1hdG9yOjp+RXJsZUVzdGltYXRvcigpID0gZGVmYXVsdDsKIHZvaWQgRXJs
ZUVzdGltYXRvcjo6UmVzZXQoYm9vbCBkZWxheV9jaGFuZ2UpIHsKICAgZnVsbGJhbmRfZXJsZV9l
c3RpbWF0b3JfLlJlc2V0KCk7CiAgIHN1YmJhbmRfZXJsZV9lc3RpbWF0b3JfLlJlc2V0KCk7Cisg
IHNpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3JfLlJlc2V0KCk7CiAgIGlmIChkZWxheV9j
aGFuZ2UpIHsKICAgICBibG9ja3Nfc2luY2VfcmVzZXRfID0gMDsKICAgfQogfQogCi12b2lkIEVy
bGVFc3RpbWF0b3I6OlVwZGF0ZShydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmVuZGVyX3Nw
ZWN0cnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qg
ZmxvYXQ+IGNhcHR1cmVfc3BlY3RydW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6
OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gc3VidHJhY3Rvcl9zcGVjdHJ1bSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgY29udmVyZ2VkX2ZpbHRlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgb25zZXRfZGV0ZWN0aW9uKSB7Ci0gIFJUQ19EQ0hFQ0tfRVEoa0ZmdExl
bmd0aEJ5MlBsdXMxLCByZW5kZXJfc3BlY3RydW0uc2l6ZSgpKTsKK3ZvaWQgRXJsZUVzdGltYXRv
cjo6VXBkYXRlKAorICAgIGNvbnN0IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKKyAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYK
KyAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwKKyAgICBydGM6OkFycmF5Vmlldzxj
b25zdCBmbG9hdD4gcmV2ZXJiX3JlbmRlcl9zcGVjdHJ1bSwKKyAgICBydGM6OkFycmF5Vmlldzxj
b25zdCBmbG9hdD4gY2FwdHVyZV9zcGVjdHJ1bSwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBm
bG9hdD4gc3VidHJhY3Rvcl9zcGVjdHJ1bSwKKyAgICBib29sIGNvbnZlcmdlZF9maWx0ZXIsCisg
ICAgYm9vbCBvbnNldF9kZXRlY3Rpb24pIHsKKyAgUlRDX0RDSEVDS19FUShrRmZ0TGVuZ3RoQnky
UGx1czEsIHJldmVyYl9yZW5kZXJfc3BlY3RydW0uc2l6ZSgpKTsKICAgUlRDX0RDSEVDS19FUShr
RmZ0TGVuZ3RoQnkyUGx1czEsIGNhcHR1cmVfc3BlY3RydW0uc2l6ZSgpKTsKICAgUlRDX0RDSEVD
S19FUShrRmZ0TGVuZ3RoQnkyUGx1czEsIHN1YnRyYWN0b3Jfc3BlY3RydW0uc2l6ZSgpKTsKLSAg
Y29uc3QgYXV0byYgWDIgPSByZW5kZXJfc3BlY3RydW07CisgIGNvbnN0IGF1dG8mIFgyX3JldmVy
YiA9IHJldmVyYl9yZW5kZXJfc3BlY3RydW07CiAgIGNvbnN0IGF1dG8mIFkyID0gY2FwdHVyZV9z
cGVjdHJ1bTsKICAgY29uc3QgYXV0byYgRTIgPSBzdWJ0cmFjdG9yX3NwZWN0cnVtOwogCkBAIC01
MiwxNCArNTYsMjMgQEAgdm9pZCBFcmxlRXN0aW1hdG9yOjpVcGRhdGUocnRjOjpBcnJheVZpZXc8
Y29uc3QgZmxvYXQ+IHJlbmRlcl9zcGVjdHJ1bSwKICAgICByZXR1cm47CiAgIH0KIAotICBzdWJi
YW5kX2VybGVfZXN0aW1hdG9yXy5VcGRhdGUoWDIsIFkyLCBFMiwgY29udmVyZ2VkX2ZpbHRlciwg
b25zZXRfZGV0ZWN0aW9uKTsKLSAgZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3JfLlVwZGF0ZShYMiwg
WTIsIEUyLCBjb252ZXJnZWRfZmlsdGVyKTsKKyAgc3ViYmFuZF9lcmxlX2VzdGltYXRvcl8uVXBk
YXRlKFgyX3JldmVyYiwgWTIsIEUyLCBjb252ZXJnZWRfZmlsdGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb25zZXRfZGV0ZWN0aW9uKTsKKworICBpZiAodXNlX3NpZ25hbF9k
ZXBlbmRlbnRfZXJsZV8pIHsKKyAgICBzaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yXy5V
cGRhdGUoCisgICAgICAgIHJlbmRlcl9idWZmZXIsIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2Us
IFgyX3JldmVyYiwgWTIsIEUyLAorICAgICAgICBzdWJiYW5kX2VybGVfZXN0aW1hdG9yXy5Fcmxl
KCksIGNvbnZlcmdlZF9maWx0ZXIpOworICB9CisKKyAgZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3Jf
LlVwZGF0ZShYMl9yZXZlcmIsIFkyLCBFMiwgY29udmVyZ2VkX2ZpbHRlcik7CiB9CiAKIHZvaWQg
RXJsZUVzdGltYXRvcjo6RHVtcCgKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8QXBtRGF0YUR1
bXBlcj4mIGRhdGFfZHVtcGVyKSBjb25zdCB7CiAgIGZ1bGxiYW5kX2VybGVfZXN0aW1hdG9yXy5E
dW1wKGRhdGFfZHVtcGVyKTsKICAgc3ViYmFuZF9lcmxlX2VzdGltYXRvcl8uRHVtcChkYXRhX2R1
bXBlcik7CisgIHNpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3JfLkR1bXAoZGF0YV9kdW1w
ZXIpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9lcmxlX2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsZV9lc3RpbWF0b3IuaApp
bmRleCA4Y2E2MDVmZjcxZDU4ZWI4Njc5Y2FhNmYwZDM2ZWMwZWEyNTY2ZDNjLi44MDM2YzIxOThi
NGUzMmJmNGU4ZGExMjAyNjg1YjlmNWE1MGQ0YjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9lcmxlX2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VybGVfZXN0aW1hdG9yLmgK
QEAgLTExLDEzICsxMSwxNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVD
M19FUkxFX0VTVElNQVRPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVD
M19FUkxFX0VTVElNQVRPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YXJy
YXk+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9f
Y2FuY2VsbGVyM19jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2Z1bGxiYW5kX2VybGVfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3NpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3IuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJiYW5kX2VybGVfZXN0aW1hdG9y
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFf
ZHVtcGVyLmgiCiAKQEAgLTI4LDE2ICszMiwxNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNz
IEVybGVFc3RpbWF0b3IgewogIHB1YmxpYzoKICAgRXJsZUVzdGltYXRvcihzaXplX3Qgc3RhcnR1
cF9waGFzZV9sZW5ndGhfYmxvY2tzXywKLSAgICAgICAgICAgICAgICBmbG9hdCBtaW5fZXJsZSwK
LSAgICAgICAgICAgICAgICBmbG9hdCBtYXhfZXJsZV9sZiwKLSAgICAgICAgICAgICAgICBmbG9h
dCBtYXhfZXJsZV9oZik7CisgICAgICAgICAgICAgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25m
aWcmIGNvbmZpZyk7CiAgIH5FcmxlRXN0aW1hdG9yKCk7CiAKICAgLy8gUmVzZXRzIHRoZSBmdWxs
YmFuZCBFUkxFIGVzdGltYXRvciBhbmQgdGhlIHN1YmJhbmRzIEVSTEUgZXN0aW1hdG9ycy4KICAg
dm9pZCBSZXNldChib29sIGRlbGF5X2NoYW5nZSk7CiAKICAgLy8gVXBkYXRlcyB0aGUgRVJMRSBl
c3RpbWF0ZXMuCi0gIHZvaWQgVXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZW5k
ZXJfc3BlY3RydW0sCisgIHZvaWQgVXBkYXRlKGNvbnN0IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1
ZmZlciwKKyAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwg
a0ZmdExlbmd0aEJ5MlBsdXMxPj4mCisgICAgICAgICAgICAgICAgICBmaWx0ZXJfZnJlcXVlbmN5
X3Jlc3BvbnNlLAorICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmV2
ZXJiX3JlbmRlcl9zcGVjdHJ1bSwKICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qg
ZmxvYXQ+IGNhcHR1cmVfc3BlY3RydW0sCiAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IGZsb2F0PiBzdWJ0cmFjdG9yX3NwZWN0cnVtLAogICAgICAgICAgICAgICBib29sIGNvbnZl
cmdlZF9maWx0ZXIsCkBAIC00NSwxMSArNTAsMTIgQEAgY2xhc3MgRXJsZUVzdGltYXRvciB7CiAK
ICAgLy8gUmV0dXJucyB0aGUgbW9zdCByZWNlbnQgc3ViYmFuZCBFUkxFIGVzdGltYXRlcy4KICAg
Y29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgRXJsZSgpIGNvbnN0
IHsKLSAgICByZXR1cm4gc3ViYmFuZF9lcmxlX2VzdGltYXRvcl8uRXJsZSgpOworICAgIHJldHVy
biB1c2Vfc2lnbmFsX2RlcGVuZGVudF9lcmxlXyA/IHNpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3Rp
bWF0b3JfLkVybGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHN1
YmJhbmRfZXJsZV9lc3RpbWF0b3JfLkVybGUoKTsKICAgfQogICAvLyBSZXR1cm5zIHRoZSBzdWJi
YW5kIEVSTEUgdGhhdCBhcmUgZXN0aW1hdGVkIGR1cmluZyBvbnNldHMuIFVzZWQKICAgLy8gZm9y
IGxvZ2dpbmcvdGVzdGluZy4KLSAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5
MlBsdXMxPiYgRXJsZU9uc2V0cygpIGNvbnN0IHsKKyAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxv
YXQ+IEVybGVPbnNldHMoKSBjb25zdCB7CiAgICAgcmV0dXJuIHN1YmJhbmRfZXJsZV9lc3RpbWF0
b3JfLkVybGVPbnNldHMoKTsKICAgfQogCkBAIC03MCw4ICs3NiwxMCBAQCBjbGFzcyBFcmxlRXN0
aW1hdG9yIHsKIAogIHByaXZhdGU6CiAgIGNvbnN0IHNpemVfdCBzdGFydHVwX3BoYXNlX2xlbmd0
aF9ibG9ja3NfXzsKKyAgY29uc3QgYm9vbCB1c2Vfc2lnbmFsX2RlcGVuZGVudF9lcmxlXzsKICAg
RnVsbEJhbmRFcmxlRXN0aW1hdG9yIGZ1bGxiYW5kX2VybGVfZXN0aW1hdG9yXzsKICAgU3ViYmFu
ZEVybGVFc3RpbWF0b3Igc3ViYmFuZF9lcmxlX2VzdGltYXRvcl87CisgIFNpZ25hbERlcGVuZGVu
dEVybGVFc3RpbWF0b3Igc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvcl87CiAgIHNpemVf
dCBibG9ja3Nfc2luY2VfcmVzZXRfID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2VybGVfZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsZV9lc3Rp
bWF0b3JfdW5pdHRlc3QuY2MKaW5kZXggMmNiMDUwYWYzYjNkYTExMmFlMmY5NzU4ODRkNTBkMWVk
ZGIzNThlYi4uNTlhNzQ3MTU5MzM3ZjM2ODk2MGU0OTdlMzBkOWMzNWJiYWU1NmY5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvZXJsZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZXJsZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKQEAgLTEyLDYgKzEyLDkgQEAK
IAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvZXJsZV9lc3RpbWF0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL3JhbmRvbS5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CkBAIC0xOSwxMSArMjIsOSBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CiAK
IGNvbnN0ZXhwciBpbnQga0xvd0ZyZXF1ZW5jeUxpbWl0ID0ga0ZmdExlbmd0aEJ5MiAvIDI7Ci1j
b25zdGV4cHIgZmxvYXQga01heEVybGVMZiA9IDguZjsKLWNvbnN0ZXhwciBmbG9hdCBrTWF4RXJs
ZUhmID0gMS41ZjsKLWNvbnN0ZXhwciBmbG9hdCBrTWluRXJsZSA9IDEuMGY7CiBjb25zdGV4cHIg
ZmxvYXQga1RydWVFcmxlID0gMTAuZjsKIGNvbnN0ZXhwciBmbG9hdCBrVHJ1ZUVybGVPbnNldHMg
PSAxLjBmOworY29uc3RleHByIGZsb2F0IGtFY2hvUGF0aEdhaW4gPSAzLmY7CiAKIHZvaWQgVmVy
aWZ5RXJsZUJhbmRzKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBlcmxlLAogICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgcmVmZXJlbmNlX2xmLApAQCAtNDQsODAgKzQ1LDE1NyBAQCB2b2lk
IFZlcmlmeUVybGUocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGVybGUsCiAgIEVYUEVDVF9O
RUFSKHJlZmVyZW5jZV9sZiwgZXJsZV90aW1lX2RvbWFpbiwgMC41KTsKIH0KIAotdm9pZCBGb3Jt
RmFyZW5kRnJhbWUoc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogWDIsCit2
b2lkIEZvcm1GYXJlbmRUaW1lRnJhbWUocnRjOjpBcnJheVZpZXc8ZmxvYXQ+IHgpIHsKKyAgY29u
c3Qgc3RkOjphcnJheTxmbG9hdCwga0Jsb2NrU2l6ZT4gZnJhbWUgPSB7CisgICAgICA3NDU5Ljg4
LCAxNzIwOS42LCAxNzM4MywgICAyMDc2OC45LCAxNjgxNi43LCAxODM4Ni4zLCA0NDkyLjgzLCA5
Njc1Ljg1LAorICAgICAgNjY2NS41MiwgMTQ4MDguNiwgOTM0Mi4zLCAgNzQ4My4yOCwgMTkyNjEu
NywgNDE0NS45OCwgMTYyMi4xOCwgMTM0NzUuMiwKKyAgICAgIDcxNjYuMzIsIDY4NTYuNjEsIDIx
OTM3LCAgIDcyNjMuMTQsIDk1NjkuMDcsIDE0OTE5LCAgIDg0MTMuMzIsIDc1NTEuODksCisgICAg
ICA3ODQ4LjY1LCA2MDExLjI3LCAxMzA4MC42LCAxNTg2NS4yLCAxMjY1NiwgICAxNzQ1OS42LCA0
MjYzLjkzLCA0NTAzLjAzLAorICAgICAgOTMxMS43OSwgMjEwOTUuOCwgMTI2NTcuOSwgMTM5MDYu
NiwgMTkyNjcuMiwgMTEzMzguMSwgMTY4MjguOSwgMTE1MDEuNiwKKyAgICAgIDExNDA1LCAgIDE1
MDMxLjQsIDE0NTQxLjYsIDE5NzY1LjUsIDE4MzQ2LjMsIDE5MzUwLjIsIDMxNTcuNDcsIDE4MDk1
LjgsCisgICAgICAxNzQzLjY4LCAyMTMyOC4yLCAxOTcyNy41LCA3Mjk1LjE2LCAxMDMzMi40LCAx
MTA1NS41LCAyMDEwNy40LCAxNDcwOC40LAorICAgICAgMTI0MTYuMiwgMTY0MzQsICAgMjQ1NC42
OSwgOTg0MC44LCAgNjg2Ny4yMywgMTYxNS43NSwgNjA1OS45LCAgODM5NC4xOX07CisgIFJUQ19E
Q0hFQ0tfR0UoeC5zaXplKCksIGZyYW1lLnNpemUoKSk7CisgIHN0ZDo6Y29weShmcmFtZS5iZWdp
bigpLCBmcmFtZS5lbmQoKSwgeC5iZWdpbigpKTsKK30KKwordm9pZCBGb3JtRmFyZW5kRnJhbWUo
Y29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiogWDIsCiAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+KiBFMiwKICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4qIFky
LAogICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZXJsZSkgewotICBYMi0+ZmlsbCg1MDAgKiAx
MDAwLmYgKiAxMDAwLmYpOwotICBFMi0+ZmlsbCgxMDAwLmYgKiAxMDAwLmYpOwotICBZMi0+Zmls
bChlcmxlICogKCpFMilbMF0pOwotfQorICBjb25zdCBhdXRvJiBzcGVjdHJ1bV9idWZmZXIgPSBy
ZW5kZXJfYnVmZmVyLkdldFNwZWN0cnVtQnVmZmVyKCk7CisgIGNvbnN0IGF1dG8mIFgyX2Zyb21f
YnVmZmVyID0gc3BlY3RydW1fYnVmZmVyLmJ1ZmZlcltzcGVjdHJ1bV9idWZmZXIud3JpdGVdOwor
ICBzdGQ6OmNvcHkoWDJfZnJvbV9idWZmZXIuYmVnaW4oKSwgWDJfZnJvbV9idWZmZXIuZW5kKCks
IFgyLT5iZWdpbigpKTsKKyAgc3RkOjp0cmFuc2Zvcm0oWDItPmJlZ2luKCksIFgyLT5lbmQoKSwg
WTItPmJlZ2luKCksCisgICAgICAgICAgICAgICAgIFtdKGZsb2F0IGEpIHsgcmV0dXJuIGEgKiBr
RWNob1BhdGhHYWluICoga0VjaG9QYXRoR2FpbjsgfSk7CisgIHN0ZDo6dHJhbnNmb3JtKFkyLT5i
ZWdpbigpLCBZMi0+ZW5kKCksIEUyLT5iZWdpbigpLAorICAgICAgICAgICAgICAgICBbZXJsZV0o
ZmxvYXQgYSkgeyByZXR1cm4gYSAvIGVybGU7IH0pOworCit9ICAvLyBuYW1lc3BhY2UKIAotdm9p
ZCBGb3JtTmVhcmVuZEZyYW1lKHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4q
IFgyLAordm9pZCBGb3JtTmVhcmVuZEZyYW1lKHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PiB4LAorICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4q
IFgyLAogICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhC
eTJQbHVzMT4qIEUyLAogICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtG
ZnRMZW5ndGhCeTJQbHVzMT4qIFkyKSB7CisgIHhbMF0gPSAwLmY7CiAgIFgyLT5maWxsKDAuZik7
CiAgIFkyLT5maWxsKDUwMC5mICogMTAwMC5mICogMTAwMC5mKTsKICAgRTItPmZpbGwoKCpZMilb
MF0pOwogfQogCit2b2lkIEdldEZpbHRlckZyZXEoc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9h
dCwga0ZmdExlbmd0aEJ5MlBsdXMxPj4mCisgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9m
cmVxdWVuY3lfcmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlbGF5X2hlYWRy
b29tX2Jsb2NrcykgeworICBSVENfRENIRUNLX0dFKGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2Uu
c2l6ZSgpLCBkZWxheV9oZWFkcm9vbV9ibG9ja3MpOworICBmb3IgKGF1dG8mIGJsb2NrX2ZyZXFf
cmVzcCA6IGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UpIHsKKyAgICBibG9ja19mcmVxX3Jlc3Au
ZmlsbCgwLmYpOworICB9CisKKyAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBrRmZ0TGVuZ3RoQnky
UGx1czE7ICsraykgeworICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2VbZGVsYXlfaGVhZHJv
b21fYmxvY2tzXVtrXSA9IGtFY2hvUGF0aEdhaW47CisgIH0KK30KKwogfSAgLy8gbmFtZXNwYWNl
CiAKIFRFU1QoRXJsZUVzdGltYXRvciwgVmVyaWZ5RXJsZUluY3JlYXNlQW5kSG9sZCkgewogICBz
dGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFgyOwogICBzdGQ6OmFycmF5PGZs
b2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IEUyOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVu
Z3RoQnkyUGx1czE+IFkyOworICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CisgIHN0ZDo6
dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4geCgzLCBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2Nr
U2l6ZSwgMC5mKSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhC
eTJQbHVzMT4+IGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UoCisgICAgICBjb25maWcuZmlsdGVy
Lm1haW4ubGVuZ3RoX2Jsb2Nrcyk7CisgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZl
cj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUy
KGNvbmZpZywgMykpOwogCi0gIEVybGVFc3RpbWF0b3IgZXN0aW1hdG9yKDAsIGtNaW5FcmxlLCBr
TWF4RXJsZUxmLCBrTWF4RXJsZUhmKTsKKyAgR2V0RmlsdGVyRnJlcShmaWx0ZXJfZnJlcXVlbmN5
X3Jlc3BvbnNlLCBjb25maWcuZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tzKTsKIAotICAvLyBW
ZXJpZmllcyB0aGF0IHRoZSBFUkxFIGVzdGltYXRlIGlzIHByb3Blcmx5IGluY3JlYXNlZCB0byBo
aWdoZXIgdmFsdWVzLgotICBGb3JtRmFyZW5kRnJhbWUoJlgyLCAmRTIsICZZMiwga1RydWVFcmxl
KTsKKyAgRXJsZUVzdGltYXRvciBlc3RpbWF0b3IoMCwgY29uZmlnKTsKIAorICBGb3JtRmFyZW5k
VGltZUZyYW1lKHhbMF0pOworICByZW5kZXJfZGVsYXlfYnVmZmVyLT5JbnNlcnQoeCk7CisgIHJl
bmRlcl9kZWxheV9idWZmZXItPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpOworICAvLyBWZXJp
ZmllcyB0aGF0IHRoZSBFUkxFIGVzdGltYXRlIGlzIHByb3Blcmx5IGluY3JlYXNlZCB0byBoaWdo
ZXIgdmFsdWVzLgorICBGb3JtRmFyZW5kRnJhbWUoKnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJl
bmRlckJ1ZmZlcigpLCAmWDIsICZFMiwgJlkyLAorICAgICAgICAgICAgICAgICAga1RydWVFcmxl
KTsKICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAyMDA7ICsraykgewotICAgIGVzdGltYXRvci5V
cGRhdGUoWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CisgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+
SW5zZXJ0KHgpOworICAgIHJlbmRlcl9kZWxheV9idWZmZXItPlByZXBhcmVDYXB0dXJlUHJvY2Vz
c2luZygpOworICAgIGVzdGltYXRvci5VcGRhdGUoKnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJl
bmRlckJ1ZmZlcigpLAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNw
b25zZSwgWDIsIFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CiAgIH0KICAgVmVyaWZ5RXJsZShlc3RpbWF0
b3IuRXJsZSgpLCBzdGQ6OnBvdygyLmYsIGVzdGltYXRvci5GdWxsYmFuZEVybGVMb2cyKCkpLAot
ICAgICAgICAgICAgIGtNYXhFcmxlTGYsIGtNYXhFcmxlSGYpOworICAgICAgICAgICAgIGNvbmZp
Zy5lcmxlLm1heF9sLCBjb25maWcuZXJsZS5tYXhfaCk7CiAKLSAgRm9ybU5lYXJlbmRGcmFtZSgm
WDIsICZFMiwgJlkyKTsKKyAgRm9ybU5lYXJlbmRGcmFtZSh4WzBdLCAmWDIsICZFMiwgJlkyKTsK
ICAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgRVJMRSBpcyBub3QgaW1tZWRpYXRlbHkgZGVjcmVhc2Vk
IGR1cmluZyBuZWFyZW5kCiAgIC8vIGFjdGl2aXR5LgogICBmb3IgKHNpemVfdCBrID0gMDsgayA8
IDUwOyArK2spIHsKLSAgICBlc3RpbWF0b3IuVXBkYXRlKFgyLCBZMiwgRTIsIHRydWUsIHRydWUp
OworICAgIHJlbmRlcl9kZWxheV9idWZmZXItPkluc2VydCh4KTsKKyAgICByZW5kZXJfZGVsYXlf
YnVmZmVyLT5QcmVwYXJlQ2FwdHVyZVByb2Nlc3NpbmcoKTsKKyAgICBlc3RpbWF0b3IuVXBkYXRl
KCpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZmZXIoKSwKKyAgICAgICAgICAgICAg
ICAgICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsIFgyLCBZMiwgRTIsIHRydWUsIHRydWUp
OwogICB9CiAgIFZlcmlmeUVybGUoZXN0aW1hdG9yLkVybGUoKSwgc3RkOjpwb3coMi5mLCBlc3Rp
bWF0b3IuRnVsbGJhbmRFcmxlTG9nMigpKSwKLSAgICAgICAgICAgICBrTWF4RXJsZUxmLCBrTWF4
RXJsZUhmKTsKKyAgICAgICAgICAgICBjb25maWcuZXJsZS5tYXhfbCwgY29uZmlnLmVybGUubWF4
X2gpOwogfQogCiBURVNUKEVybGVFc3RpbWF0b3IsIFZlcmlmeUVybGVUcmFja2luZ09uT25zZXRz
KSB7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gWDI7CiAgIHN0ZDo6
YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gRTI7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQs
IGtGZnRMZW5ndGhCeTJQbHVzMT4gWTI7CisgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNvbmZpZzsK
KyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiB4KDMsIHN0ZDo6dmVjdG9yPGZsb2F0
PihrQmxvY2tTaXplLCAwLmYpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwga0Zm
dExlbmd0aEJ5MlBsdXMxPj4gZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSgKKyAgICAgIGNvbmZp
Zy5maWx0ZXIubWFpbi5sZW5ndGhfYmxvY2tzKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
RGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCisgICAgICBSZW5kZXJEZWxheUJ1ZmZl
cjo6Q3JlYXRlMihjb25maWcsIDMpKTsKKworICBHZXRGaWx0ZXJGcmVxKGZpbHRlcl9mcmVxdWVu
Y3lfcmVzcG9uc2UsIGNvbmZpZy5kZWxheS5kZWxheV9oZWFkcm9vbV9ibG9ja3MpOworCisgIEVy
bGVFc3RpbWF0b3IgZXN0aW1hdG9yKDAsIGNvbmZpZyk7CiAKLSAgRXJsZUVzdGltYXRvciBlc3Rp
bWF0b3IoMCwga01pbkVybGUsIGtNYXhFcmxlTGYsIGtNYXhFcmxlSGYpOworICBGb3JtRmFyZW5k
VGltZUZyYW1lKHhbMF0pOworICByZW5kZXJfZGVsYXlfYnVmZmVyLT5JbnNlcnQoeCk7CisgIHJl
bmRlcl9kZWxheV9idWZmZXItPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpOwogCiAgIGZvciAo
c2l6ZV90IGJ1cnN0ID0gMDsgYnVyc3QgPCAyMDsgKytidXJzdCkgewotICAgIEZvcm1GYXJlbmRG
cmFtZSgmWDIsICZFMiwgJlkyLCBrVHJ1ZUVybGVPbnNldHMpOworICAgIEZvcm1GYXJlbmRGcmFt
ZSgqcmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksICZYMiwgJkUyLCAmWTIs
CisgICAgICAgICAgICAgICAgICAgIGtUcnVlRXJsZU9uc2V0cyk7CiAgICAgZm9yIChzaXplX3Qg
ayA9IDA7IGsgPCAxMDsgKytrKSB7Ci0gICAgICBlc3RpbWF0b3IuVXBkYXRlKFgyLCBZMiwgRTIs
IHRydWUsIHRydWUpOworICAgICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+SW5zZXJ0KHgpOworICAg
ICAgcmVuZGVyX2RlbGF5X2J1ZmZlci0+UHJlcGFyZUNhcHR1cmVQcm9jZXNzaW5nKCk7CisgICAg
ICBlc3RpbWF0b3IuVXBkYXRlKCpyZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXRSZW5kZXJCdWZmZXIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwgWDIs
IFkyLCBFMiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgfQotICAgIEZvcm1GYXJlbmRGcmFtZSgmWDIsICZF
MiwgJlkyLCBrVHJ1ZUVybGUpOworICAgIEZvcm1GYXJlbmRGcmFtZSgqcmVuZGVyX2RlbGF5X2J1
ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksICZYMiwgJkUyLCAmWTIsCisgICAgICAgICAgICAgICAg
ICAgIGtUcnVlRXJsZSk7CiAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAyMDA7ICsraykgewot
ICAgICAgZXN0aW1hdG9yLlVwZGF0ZShYMiwgWTIsIEUyLCB0cnVlLCB0cnVlKTsKKyAgICAgIHJl
bmRlcl9kZWxheV9idWZmZXItPkluc2VydCh4KTsKKyAgICAgIHJlbmRlcl9kZWxheV9idWZmZXIt
PlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpOworICAgICAgZXN0aW1hdG9yLlVwZGF0ZSgqcmVu
ZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksCisgICAgICAgICAgICAgICAgICAg
ICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsIFgyLCBZMiwgRTIsIHRydWUsIHRydWUpOwog
ICAgIH0KLSAgICBGb3JtTmVhcmVuZEZyYW1lKCZYMiwgJkUyLCAmWTIpOworICAgIEZvcm1OZWFy
ZW5kRnJhbWUoeFswXSwgJlgyLCAmRTIsICZZMik7CiAgICAgZm9yIChzaXplX3QgayA9IDA7IGsg
PCAzMDA7ICsraykgewotICAgICAgZXN0aW1hdG9yLlVwZGF0ZShYMiwgWTIsIEUyLCB0cnVlLCB0
cnVlKTsKKyAgICAgIHJlbmRlcl9kZWxheV9idWZmZXItPkluc2VydCh4KTsKKyAgICAgIHJlbmRl
cl9kZWxheV9idWZmZXItPlByZXBhcmVDYXB0dXJlUHJvY2Vzc2luZygpOworICAgICAgZXN0aW1h
dG9yLlVwZGF0ZSgqcmVuZGVyX2RlbGF5X2J1ZmZlci0+R2V0UmVuZGVyQnVmZmVyKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9uc2UsIFgyLCBZMiwgRTIs
IHRydWUsIHRydWUpOwogICAgIH0KICAgfQotICBWZXJpZnlFcmxlQmFuZHMoZXN0aW1hdG9yLkVy
bGVPbnNldHMoKSwga01pbkVybGUsIGtNaW5FcmxlKTsKLSAgRm9ybU5lYXJlbmRGcmFtZSgmWDIs
ICZFMiwgJlkyKTsKKyAgVmVyaWZ5RXJsZUJhbmRzKGVzdGltYXRvci5FcmxlT25zZXRzKCksIGNv
bmZpZy5lcmxlLm1pbiwgY29uZmlnLmVybGUubWluKTsKKyAgRm9ybU5lYXJlbmRGcmFtZSh4WzBd
LCAmWDIsICZFMiwgJlkyKTsKICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAxMDAwOyBrKyspIHsK
LSAgICBlc3RpbWF0b3IuVXBkYXRlKFgyLCBZMiwgRTIsIHRydWUsIHRydWUpOworICAgIGVzdGlt
YXRvci5VcGRhdGUoKnJlbmRlcl9kZWxheV9idWZmZXItPkdldFJlbmRlckJ1ZmZlcigpLAorICAg
ICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwgWDIsIFkyLCBFMiwg
dHJ1ZSwgdHJ1ZSk7CiAgIH0KICAgLy8gVmVyaWZpZXMgdGhhdCBkdXJpbmcgbmUgYWN0aXZpdHks
IEVybGUgY29udmVyZ2VzIHRvIHRoZSBFcmxlIGZvciBvbnNldHMuCiAgIFZlcmlmeUVybGUoZXN0
aW1hdG9yLkVybGUoKSwgc3RkOjpwb3coMi5mLCBlc3RpbWF0b3IuRnVsbGJhbmRFcmxlTG9nMigp
KSwKLSAgICAgICAgICAgICBrTWluRXJsZSwga01pbkVybGUpOworICAgICAgICAgICAgIGNvbmZp
Zy5lcmxlLm1pbiwgY29uZmlnLmVybGUubWluKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2J1ZmZlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZmZ0X2J1ZmZlci5oCmluZGV4IDQ3ZWRlNDE4MjVjZmMxYjYzNTVmOWIwOTVmMTUyZjY0YjIz
ZDQwM2IuLjlmODFhOTEwYThmYjcwOTRmODdkMDUxNWFhMmJhZjMwZTFkODA0MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9idWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRf
YnVmZmVyLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNT
SU5HX0FFQzNfRkZUX0JVRkZFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdf
QUVDM19GRlRfQlVGRkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfZGF0YS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmlsdGVyX2FuYWx5emVyLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvZmlsdGVyX2FuYWx5emVyLmNjCmluZGV4IDc5MGNiMWU4YjUyZDZiZmYxODdiNGJk
ZDQwMjAxOWNmN2ZhMWVkNjguLjViODkwZDc0NzQ2YzlkZTFiY2NmYzVmMmFlMzEzNDgwM2JjMzFi
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZpbHRlcl9hbmFseXplci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9maWx0ZXJfYW5hbHl6ZXIuY2MKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNs
dWRlIDxudW1lcmljPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9y
ZW5kZXJfYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dp
bmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9m
aWx0ZXJfYW5hbHl6ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZpbHRlcl9hbmFseXplci5oCmluZGV4
IDQ3ZTk1MzM2NjYyMWRjMjM4OTMyNzlmNWQ3ZWI0NWNjYTY2Njk4OGMuLjk5YTBlMjU5NzM3NzIz
NGFlMjE5MDgxYWE4ZDMzZTEwZjk3ODU1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Zp
bHRlcl9hbmFseXplci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZpbHRlcl9hbmFseXplci5oCkBA
IC0xMSwyMCArMTEsMjAgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNf
RklMVEVSX0FOQUxZWkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMz
X0ZJTFRFUl9BTkFMWVpFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YXJy
YXk+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImFi
c2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1
ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jYXNjYWRlZF9iaXF1YWRfZmlsdGVyLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1ZmZlci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
IGNsYXNzIEFwbURhdGFEdW1wZXI7CitjbGFzcyBSZW5kZXJCdWZmZXI7CiAKIC8vIENsYXNzIGZv
ciBhbmFseXppbmcgdGhlIHByb3BlcnRpZXMgb2YgYW4gYWRhcHRpdmUgZmlsdGVyLgogY2xhc3Mg
RmlsdGVyQW5hbHl6ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZnJhbWVfYmxvY2tl
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZyYW1lX2Jsb2NrZXIuY2MKaW5kZXggMGEwYzBlMmZhZWE1
OTkzMDg2Mzc2MzQyYWE4ZGYzZGU2OWM5YmVkOS4uY2ExMjJlNWViYmRlZThhNzlhYWI3N2JjYTBk
ZTU5OTE2NjU4NmIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZnJhbWVfYmxvY2tlci5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mcmFtZV9ibG9ja2VyLmNjCkBAIC0xMCw4ICsxMCw3IEBA
CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mcmFtZV9ibG9ja2Vy
LmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Z1bGxi
YW5kX2VybGVfZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZnVsbGJhbmRfZXJsZV9lc3Rp
bWF0b3IuY2MKaW5kZXggZGI5YmU3YzEwNGU5NjllNTBiMjgxMWRhYzYwMzMxNzRkMWJiZmFhNS4u
Nzg5M2I5N2IzYTI3YWVlNjY3M2E0M2EwOTQ4OWExMzdmNmQ1NjYzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvZnVsbGJhbmRfZXJsZV9lc3RpbWF0b3IuY2MKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRl
ICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xv
Z2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CkBAIC0yNSw3ICsyNiw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsK
IGNvbnN0ZXhwciBmbG9hdCBrRXBzaWxvbiA9IDFlLTNmOwogY29uc3RleHByIGZsb2F0IGtYMkJh
bmRFbmVyZ3lUaHJlc2hvbGQgPSA0NDAxNTA2OC4wZjsKLWNvbnN0ZXhwciBpbnQga0VybGVIb2xk
ID0gMTAwOworY29uc3RleHByIGludCBrQmxvY2tzVG9Ib2xkRXJsZSA9IDEwMDsKIGNvbnN0ZXhw
ciBpbnQga1BvaW50c1RvQWNjdW11bGF0ZSA9IDY7CiB9ICAvLyBuYW1lc3BhY2UKIApAQCAtNTQs
NyArNTUsNyBAQCB2b2lkIEZ1bGxCYW5kRXJsZUVzdGltYXRvcjo6VXBkYXRlKHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IGZsb2F0PiBYMiwKICAgICAgIGNvbnN0IGZsb2F0IFkyX3N1bSA9IHN0ZDo6YWNj
dW11bGF0ZShZMi5iZWdpbigpLCBZMi5lbmQoKSwgMC4wZik7CiAgICAgICBjb25zdCBmbG9hdCBF
Ml9zdW0gPSBzdGQ6OmFjY3VtdWxhdGUoRTIuYmVnaW4oKSwgRTIuZW5kKCksIDAuMGYpOwogICAg
ICAgaWYgKGluc3RhbnRhbmVvdXNfZXJsZV8uVXBkYXRlKFkyX3N1bSwgRTJfc3VtKSkgewotICAg
ICAgICBob2xkX2NvdW50ZXJfdGltZV9kb21haW5fID0ga0VybGVIb2xkOworICAgICAgICBob2xk
X2NvdW50ZXJfdGltZV9kb21haW5fID0ga0Jsb2Nrc1RvSG9sZEVybGU7CiAgICAgICAgIGVybGVf
dGltZV9kb21haW5fbG9nMl8gKz0KICAgICAgICAgICAgIDAuMWYgKiAoKGluc3RhbnRhbmVvdXNf
ZXJsZV8uR2V0SW5zdEVybGVMb2cyKCkudmFsdWUoKSkgLQogICAgICAgICAgICAgICAgICAgICBl
cmxlX3RpbWVfZG9tYWluX2xvZzJfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5f
ZmlsdGVyX3VwZGF0ZV9nYWluLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWFpbl9maWx0ZXJfdXBkYXRl
X2dhaW4uY2MKaW5kZXggNGY0OGNkNDc0ODBiMmI2MGYyOTczOGMwMGQ2NWM2OWVlYjFmYTA1YS4u
ZWY4N2QxNDJkYjFmYzUxOWI4YmE4NTg5NjQ3NzExN2NhZmVhMjI0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvbWFpbl9maWx0ZXJfdXBkYXRlX2dhaW4uY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvbWFpbl9maWx0ZXJfdXBkYXRlX2dhaW4uY2MKQEAgLTEzLDcgKzEzLDEyIEBACiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZGFwdGl2ZV9maXJfZmlsdGVyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfdmFyaWFiaWxpdHkuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfZGF0YS5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291
dHB1dC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9k
YXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgpAQCAtMTI3LDcgKzEzMiwxMCBAQCB2b2lkIE1haW5GaWx0ZXJV
cGRhdGVHYWluOjpDb21wdXRlKAogICAgICAgICAgICAgICAgICBIX2Vycm9yX2luY3JlYXNlLmJl
Z2luKCksIHN0ZDo6bXVsdGlwbGllczxmbG9hdD4oKSk7CiAgIHN0ZDo6dHJhbnNmb3JtKEhfZXJy
b3JfLmJlZ2luKCksIEhfZXJyb3JfLmVuZCgpLCBIX2Vycm9yX2luY3JlYXNlLmJlZ2luKCksCiAg
ICAgICAgICAgICAgICAgIEhfZXJyb3JfLmJlZ2luKCksIFsmXShmbG9hdCBhLCBmbG9hdCBiKSB7
Ci0gICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGEgKyBiLCBjdXJyZW50X2NvbmZp
Z18uZXJyb3JfZmxvb3IpOworICAgICAgICAgICAgICAgICAgIGZsb2F0IGVycm9yID0gYSArIGI7
CisgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzdGQ6Om1heChlcnJvciwgY3VycmVudF9jb25m
aWdfLmVycm9yX2Zsb29yKTsKKyAgICAgICAgICAgICAgICAgICBlcnJvciA9IHN0ZDo6bWluKGVy
cm9yLCBjdXJyZW50X2NvbmZpZ18uZXJyb3JfY2VpbCk7CisgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwogICAgICAgICAgICAgICAgICB9KTsKIAogICBkYXRhX2R1bXBlcl8tPkR1bXBS
YXcoImFlYzNfbWFpbl9nYWluX0hfZXJyb3IiLCBIX2Vycm9yXyk7CkBAIC0xNTMsNiArMTYxLDkg
QEAgdm9pZCBNYWluRmlsdGVyVXBkYXRlR2Fpbjo6VXBkYXRlQ3VycmVudENvbmZpZygpIHsKICAg
ICAgIGN1cnJlbnRfY29uZmlnXy5lcnJvcl9mbG9vciA9CiAgICAgICAgICAgYXZlcmFnZShvbGRf
dGFyZ2V0X2NvbmZpZ18uZXJyb3JfZmxvb3IsIHRhcmdldF9jb25maWdfLmVycm9yX2Zsb29yLAog
ICAgICAgICAgICAgICAgICAgY2hhbmdlX2ZhY3Rvcik7CisgICAgICBjdXJyZW50X2NvbmZpZ18u
ZXJyb3JfY2VpbCA9CisgICAgICAgICAgYXZlcmFnZShvbGRfdGFyZ2V0X2NvbmZpZ18uZXJyb3Jf
Y2VpbCwgdGFyZ2V0X2NvbmZpZ18uZXJyb3JfY2VpbCwKKyAgICAgICAgICAgICAgICAgIGNoYW5n
ZV9mYWN0b3IpOwogICAgICAgY3VycmVudF9jb25maWdfLm5vaXNlX2dhdGUgPQogICAgICAgICAg
IGF2ZXJhZ2Uob2xkX3RhcmdldF9jb25maWdfLm5vaXNlX2dhdGUsIHRhcmdldF9jb25maWdfLm5v
aXNlX2dhdGUsCiAgICAgICAgICAgICAgICAgICBjaGFuZ2VfZmFjdG9yKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3VwZGF0ZV9nYWluLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9tYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbi5oCmluZGV4IDUyNWI1MjI3OWM0NmFlNmIwZWU4MzIz
ZWZiNGU0YzE1YThhZTA3NWIuLjg5MmZmNjg5YTQ3MGQzMDQ0NWFmNjI4MTQwNDRjMjFhNmFlY2Q1
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3VwZGF0ZV9nYWluLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvbWFpbl9maWx0ZXJfdXBkYXRlX2dhaW4uaApAQCAtMTEsMjAg
KzExLDIyIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX01BSU5fRklM
VEVSX1VQREFURV9HQUlOX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMz
X01BSU5fRklMVEVSX1VQREFURV9HQUlOX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNs
dWRlIDxhcnJheT4KICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5j
bHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZGFwdGl2ZV9maXJfZmlsdGVyLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9lY2hvX3BhdGhfdmFyaWFiaWxpdHkuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2Fu
YWx5emVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJh
Y3Rvcl9vdXRwdXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBBZGFwdGl2ZUZpckZpbHRlcjsKIGNsYXNzIEFw
bURhdGFEdW1wZXI7CitzdHJ1Y3QgRWNob1BhdGhWYXJpYWJpbGl0eTsKK3N0cnVjdCBGZnREYXRh
OworY2xhc3MgUmVuZGVyU2lnbmFsQW5hbHl6ZXI7CitzdHJ1Y3QgU3VidHJhY3Rvck91dHB1dDsK
IAogLy8gUHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgIGNvbXB1dGluZyB0aGUgYWRhcHRpdmUg
Z2FpbiBmb3IgdGhlIG1haW4gZmlsdGVyLgogY2xhc3MgTWFpbkZpbHRlclVwZGF0ZUdhaW4gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWFpbl9maWx0ZXJfdXBkYXRlX2dhaW5fdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbl91bml0dGVzdC5j
YwppbmRleCA4YzQ0YWUwNjRlMjEyMmU5ZTEyOGE3ZWY1ZDg5ZWNkNDllNjgxY2U5Li4wOTNiMTk0
NzM2Zjg2ZGNhZjM1YzlhMzg3NTA2N2M1OGEyYjI0ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9tYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9tYWluX2ZpbHRlcl91cGRhdGVfZ2Fpbl91bml0dGVzdC5jYwpAQCAtNjYsNyArNjYsNyBA
QCB2b2lkIFJ1bkZpbHRlclVwZGF0ZVRlc3QoaW50IG51bV9ibG9ja3NfdG9fcHJvY2VzcywKICAg
Y29uZmlnLmRlbGF5Lm1pbl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tzID0gMDsKICAgY29uZmlnLmRl
bGF5LmRlZmF1bHRfZGVsYXkgPSAxOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZm
ZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRl
KGNvbmZpZywgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAz
KSk7CiAgIEFlY1N0YXRlIGFlY19zdGF0ZShjb25maWcpOwogICBSZW5kZXJTaWduYWxBbmFseXpl
ciByZW5kZXJfc2lnbmFsX2FuYWx5emVyKGNvbmZpZyk7CiAgIGFic2w6Om9wdGlvbmFsPERlbGF5
RXN0aW1hdGU+IGRlbGF5X2VzdGltYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0
Y2hlZF9maWx0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5jYwppbmRleCA2
NzQ0YmQ1ODEyYTBjNzVlM2RjMjUzNGU5NGU2MDA3MTgxOTQ1NGI4Li43NTcyMTlkNTJjMjJiMjJm
OTNiOWVkOTJkMDgyOTE4MzFiNDUwMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRj
aGVkX2ZpbHRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5jYwpAQCAt
MTksMTAgKzE5LDE0IEBACiAjaW5jbHVkZSA8ZW1taW50cmluLmg+CiAjZW5kaWYKICNpbmNsdWRl
IDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxpbml0aWFsaXplcl9s
aXN0PgorI2luY2x1ZGUgPGl0ZXJhdG9yPgogI2luY2x1ZGUgPG51bWVyaWM+CiAKLSNpbmNsdWRl
ICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0
Y2hlZF9maWx0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyLmgKaW5kZXggMmVm
NDgyODZkNzllZTYyMjk2NDJiMjFhMDgwZDk0MzMxNWMwZjYwOC4uMmE2NTMzOWE0Y2JmZWZlM2Qx
YjAyYjE4N2ZhMWQxYjBjMjgwODRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hl
ZF9maWx0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlci5oCkBAIC0xMSwx
OCArMTEsMTkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfTUFUQ0hF
RF9GSUxURVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfTUFUQ0hF
RF9GSUxURVJfSF8KIAotI2luY2x1ZGUgPGFycmF5PgotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNs
dWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Rvd25zYW1wbGVkX3JlbmRlcl9idWZmZXIuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
c3lzdGVtL2FyY2guaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIEFwbURhdGFEdW1w
ZXI7CitzdHJ1Y3QgRG93bnNhbXBsZWRSZW5kZXJCdWZmZXI7CisKIG5hbWVzcGFjZSBhZWMzIHsK
IAogI2lmIGRlZmluZWQoV0VCUlRDX0hBU19ORU9OKQpAQCAtNjUsNyArNjYsNiBAQCB2b2lkIE1h
dGNoZWRGaWx0ZXJDb3JlKHNpemVfdCB4X3N0YXJ0X2luZGV4LAogCiB9ICAvLyBuYW1lc3BhY2Ug
YWVjMwogCi1jbGFzcyBBcG1EYXRhRHVtcGVyOwogCiAvLyBQcm9kdWNlcyByZWN1cnNpdmVseSB1
cGRhdGVkIGNyb3NzLWNvcnJlbGF0aW9uIGVzdGltYXRlcyBmb3Igc2V2ZXJhbCBzaWduYWwKIC8v
IHNoaWZ0cyB3aGVyZSB0aGUgaW50cmEtc2hpZnQgc3BhY2luZyBpcyB1bmlmb3JtLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXJfbGFnX2FnZ3JlZ2F0b3IuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRvci5jYwppbmRleCA3YTAz
ZTYwZDhiZmQ5NDQyOGI0YTM1MDdkYzkyZjEwNzhiZGE0MDcxLi5mNTk1MjVlZWU5ZTkwMWVjM2Iy
YTQ0MDI4ODllYWYxMmFiODI4Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVk
X2ZpbHRlcl9sYWdfYWdncmVnYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2Zp
bHRlcl9sYWdfYWdncmVnYXRvci5jYwpAQCAtOSw3ICs5LDExIEBACiAgKi8KICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlcl9sYWdfYWdncmVnYXRv
ci5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgorCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBA
IC0yNywxMSArMzEsMTMgQEAgTWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3I6Ok1hdGNoZWRGaWx0
ZXJMYWdBZ2dyZWdhdG9yKAogCiBNYXRjaGVkRmlsdGVyTGFnQWdncmVnYXRvcjo6fk1hdGNoZWRG
aWx0ZXJMYWdBZ2dyZWdhdG9yKCkgPSBkZWZhdWx0OwogCi12b2lkIE1hdGNoZWRGaWx0ZXJMYWdB
Z2dyZWdhdG9yOjpSZXNldCgpIHsKK3ZvaWQgTWF0Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3I6OlJl
c2V0KGJvb2wgaGFyZF9yZXNldCkgewogICBzdGQ6OmZpbGwoaGlzdG9ncmFtXy5iZWdpbigpLCBo
aXN0b2dyYW1fLmVuZCgpLCAwKTsKICAgaGlzdG9ncmFtX2RhdGFfLmZpbGwoMCk7CiAgIGhpc3Rv
Z3JhbV9kYXRhX2luZGV4XyA9IDA7Ci0gIHNpZ25pZmljYW50X2NhbmRpZGF0ZV9mb3VuZF8gPSBm
YWxzZTsKKyAgaWYgKGhhcmRfcmVzZXQpIHsKKyAgICBzaWduaWZpY2FudF9jYW5kaWRhdGVfZm91
bmRfID0gZmFsc2U7CisgIH0KIH0KIAogYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gTWF0
Y2hlZEZpbHRlckxhZ0FnZ3JlZ2F0b3I6OkFnZ3JlZ2F0ZSgKQEAgLTc3LDkgKzgzLDEzIEBAIGFi
c2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IE1hdGNoZWRGaWx0ZXJMYWdBZ2dyZWdhdG9yOjpB
Z2dyZWdhdGUoCiAgICAgaWYgKGhpc3RvZ3JhbV9bY2FuZGlkYXRlXSA+IHRocmVzaG9sZHNfLmNv
bnZlcmdlZCB8fAogICAgICAgICAoaGlzdG9ncmFtX1tjYW5kaWRhdGVdID4gdGhyZXNob2xkc18u
aW5pdGlhbCAmJgogICAgICAgICAgIXNpZ25pZmljYW50X2NhbmRpZGF0ZV9mb3VuZF8pKSB7Ci0g
ICAgICByZXR1cm4gRGVsYXlFc3RpbWF0ZShEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprUmVmaW5l
ZCwgY2FuZGlkYXRlKTsKKyAgICAgIERlbGF5RXN0aW1hdGU6OlF1YWxpdHkgcXVhbGl0eSA9IHNp
Z25pZmljYW50X2NhbmRpZGF0ZV9mb3VuZF8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA/IERlbGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVkCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBEZWxheUVzdGltYXRlOjpRdWFs
aXR5OjprQ29hcnNlOworICAgICAgcmV0dXJuIERlbGF5RXN0aW1hdGUocXVhbGl0eSwgY2FuZGlk
YXRlKTsKICAgICB9CiAgIH0KKwogICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9maWx0ZXJfbGFnX2FnZ3JlZ2F0b3IuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX2xhZ19hZ2dyZWdhdG9yLmgKaW5kZXggYzU3MDUx
YWE2ODVmMzM3NGE0MDhlOWQ1MWMyZGY2ZjcxYTljMzhkOC4uZDdmMzRhZWQ2MDczNGJmNDE1MmJi
YzM3NmMyNmQ1YjdmOTIzMDY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0Y2hlZF9m
aWx0ZXJfbGFnX2FnZ3JlZ2F0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRl
cl9sYWdfYWdncmVnYXRvci5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIE1hdGNoZWRGaWx0ZXJM
YWdBZ2dyZWdhdG9yIHsKICAgfk1hdGNoZWRGaWx0ZXJMYWdBZ2dyZWdhdG9yKCk7CiAKICAgLy8g
UmVzZXRzIHRoZSBhZ2dyZWdhdG9yLgotICB2b2lkIFJlc2V0KCk7CisgIHZvaWQgUmVzZXQoYm9v
bCBoYXJkX3Jlc2V0KTsKIAogICAvLyBBZ2dyZWdhdGVzIHRoZSBwcm92aWRlZCBsYWcgZXN0aW1h
dGVzLgogICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBBZ2dyZWdhdGUoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRjaGVkX2ZpbHRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL21hdGNoZWRfZmlsdGVyX3VuaXR0ZXN0LmNjCmluZGV4IDE2YjYwM2ExM2ZlMzdkYWVj
NjkwZTljOTM5YmE1ZDJlY2Y0NjgxNGYuLjBjMTcxMTg5NGI0NGYyMTQ1OTlmNGFjMTFlYzVkN2Fm
ZTQzMDRmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdGNoZWRfZmlsdGVyX3VuaXR0ZXN0LmNjCkBA
IC0xNjUsNyArMTY1LDcgQEAgVEVTVChNYXRjaGVkRmlsdGVyLCBMYWdFc3RpbWF0aW9uKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGVsYXkuZGVsYXlfY2FuZGlkYXRlX2Rl
dGVjdGlvbl90aHJlc2hvbGQpOwogCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlC
dWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6
OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRl
Mihjb25maWcsIDMpKTsKIAogICAgICAgLy8gQW5hbHl6ZSB0aGUgY29ycmVsYXRpb24gYmV0d2Vl
biByZW5kZXIgYW5kIGNhcHR1cmUuCiAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8ICg2MDAg
KyBkZWxheV9zYW1wbGVzIC8gc3ViX2Jsb2NrX3NpemUpOyArK2spIHsKQEAgLTI2MSw3ICsyNjEs
NyBAQCBURVNUKE1hdGNoZWRGaWx0ZXIsIExhZ05vdFJlbGlhYmxlRm9yVW5jb3JyZWxhdGVkUmVu
ZGVyQW5kQ2FwdHVyZSkgewogICAgIHN0ZDo6ZmlsbChjYXB0dXJlLmJlZ2luKCksIGNhcHR1cmUu
ZW5kKCksIDAuZik7CiAgICAgQXBtRGF0YUR1bXBlciBkYXRhX2R1bXBlcigwKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAg
ICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7CisgICAgICAgIFJlbmRl
ckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgMykpOwogICAgIE1hdGNoZWRGaWx0ZXIgZmls
dGVyKCZkYXRhX2R1bXBlciwgRGV0ZWN0T3B0aW1pemF0aW9uKCksIHN1Yl9ibG9ja19zaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIGtXaW5kb3dTaXplU3ViQmxvY2tzLCBrTnVtTWF0Y2hl
ZEZpbHRlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAga0FsaWdubWVudFNoaWZ0U3ViQmxv
Y2tzLCAxNTAsCkBAIC0zMDYsNyArMzA2LDcgQEAgVEVTVChNYXRjaGVkRmlsdGVyLCBMYWdOb3RV
cGRhdGVkRm9yTG93TGV2ZWxSZW5kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25m
aWcuZGVsYXkuZGVsYXlfZXN0aW1hdGVfc21vb3RoaW5nLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbmZpZy5kZWxheS5kZWxheV9jYW5kaWRhdGVfZGV0ZWN0aW9uX3RocmVzaG9sZCk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVy
KAotICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAg
ICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCAzKSk7
CiAgICAgRGVjaW1hdG9yIGNhcHR1cmVfZGVjaW1hdG9yKGRvd25fc2FtcGxpbmdfZmFjdG9yKTsK
IAogICAgIC8vIEFuYWx5emUgdGhlIGNvcnJlbGF0aW9uIGJldHdlZW4gcmVuZGVyIGFuZCBjYXB0
dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL21hdHJpeF9idWZmZXIuY2MKaW5kZXggZjk1ZTdmNDY5MDJlMWYwNWUzMWEwNDVh
YTdiOTI3NDIyM2NhNWI4YS4uYmQ2ZGFlYTk1YzkwNWNhOWUxNzhmOGI1NjIyYzhiMGFjOThmYTdi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9tYXRyaXhfYnVmZmVyLmNjCkBAIC0xMCw3ICsxMCw3IEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tYXRyaXhfYnVmZmVyLmgiCiAKLSNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1
ZGUgPGFsZ29yaXRobT4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL21hdHJpeF9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIu
aAppbmRleCA2NGFhYzBhNGY2NWU1NzdiYjFlYmZkNzhhZjZlMjJiMmQxZTQ0ODJlLi5jYWUzNzU5
ZjkyMDg0YTNkOWUxYzgwNzYwNGRhOGYzOWE4YmYyMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9tYXRyaXhfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZlci5o
CkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMz
X01BVFJJWF9CVUZGRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNf
TUFUUklYX0JVRkZFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8dmVjdG9y
PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9tb2NrL21vY2tfcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L21vY2svbW9ja19yZW5kZXJfZGVsYXlfY29udHJvbGxlci5oCmluZGV4IGVkNTk3MWNkYTBkMzZj
Y2I2MTZmNjBlYWYyNmFhNmQ4MmM3ZjY5YzIuLjVmNjUyZTE5MmY5N2ExZDhlZGRlZjA1NTk3YmE0
NTk4MjkyYzljZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vY2svbW9ja19yZW5kZXJf
ZGVsYXlfY29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vY2svbW9ja19yZW5kZXJf
ZGVsYXlfY29udHJvbGxlci5oCkBAIC0yNSw3ICsyNSw3IEBAIGNsYXNzIE1vY2tSZW5kZXJEZWxh
eUNvbnRyb2xsZXIgOiBwdWJsaWMgUmVuZGVyRGVsYXlDb250cm9sbGVyIHsKICAgTW9ja1JlbmRl
ckRlbGF5Q29udHJvbGxlcigpOwogICB2aXJ0dWFsIH5Nb2NrUmVuZGVyRGVsYXlDb250cm9sbGVy
KCk7CiAKLSAgTU9DS19NRVRIT0QwKFJlc2V0LCB2b2lkKCkpOworICBNT0NLX01FVEhPRDEoUmVz
ZXQsIHZvaWQoYm9vbCByZXNldF9kZWxheV9zdGF0aXN0aWNzKSk7CiAgIE1PQ0tfTUVUSE9EMChM
b2dSZW5kZXJDYWxsLCB2b2lkKCkpOwogICBNT0NLX01FVEhPRDQoR2V0RGVsYXksCiAgICAgICAg
ICAgICAgICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPigKQEAgLTMzLDYgKzMzLDcgQEAg
Y2xhc3MgTW9ja1JlbmRlckRlbGF5Q29udHJvbGxlciA6IHB1YmxpYyBSZW5kZXJEZWxheUNvbnRy
b2xsZXIgewogICAgICAgICAgICAgICAgICAgIHNpemVfdCByZW5kZXJfZGVsYXlfYnVmZmVyX2Rl
bGF5LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIGVjaG9f
cmVtb3Zlcl9kZWxheSwKICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBm
bG9hdD4gY2FwdHVyZSkpOworICBNT0NLX0NPTlNUX01FVEhPRDAoSGFzQ2xvY2tkcmlmdCwgYm9v
bCgpKTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9tb3ZpbmdfYXZlcmFnZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vdmluZ19hdmVyYWdlLmNj
CmluZGV4IGU5ZDY0ZTZiMzI2MzI2NjBmNWEwNDUzMzUyMjM0MTk0ZWY4NzYxMzUuLjdhODFlZTg5
ZWE2N2UwZGM4ZTM5NjI2Y2I2MjU5MTkzYTQ3MzhmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL21vdmluZ19hdmVyYWdlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vdmluZ19hdmVyYWdl
LmNjCkBAIC0xNCw2ICsxNCw4IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CiAKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKwogbmFtZXNwYWNlIHdl
YnJ0YyB7CiBuYW1lc3BhY2UgYWVjMyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21v
dmluZ19hdmVyYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9tb3ZpbmdfYXZlcmFnZS5oCmluZGV4IDk0
NDk3ZDc4MmM4ZDlkMmFhNDBjMDliMzQ4MjM3Y2VlYTBiZDVlNmEuLjBmODU1YmVmZmIwZjUwZTJk
Mzk2ODAzNzQ4ZTQyZDU2MDE1MzE4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vdmlu
Z19hdmVyYWdlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbW92aW5nX2F2ZXJhZ2UuaApAQCAtMTEs
NiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19NT1ZJTkdf
QVZFUkFHRV9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19NT1ZJTkdf
QVZFUkFHRV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAj
aW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jl
bmRlcl9idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9idWZmZXIuaAppbmRleCBkZDY3
MjY4ZWZkNzFiYThhOThmZWQyY2Q5MDJmMTZmZTdkMzkyNTk0Li40YzdjNjBjZjg1N2Q3ZDgzZDQ5
YWUxZDMyNDMyZGRkNTIzNGUyZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJf
YnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1ZmZlci5oCkBAIC0xMSwxNCAr
MTEsMTcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfUkVOREVSX0JV
RkZFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRU5ERVJfQlVG
RkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRl
IDxtZW1vcnk+CisjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9idWZmZXIuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfZGF0YS5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3JfYnVmZmVyLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0
b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlf
YnVmZmVyLmNjCmluZGV4IDM3YTIzNzg3MzhjYzViZTMwNjBkM2M0NTYwYzVhZmQ2NDRhNjMyMTMu
LjFlYzI3NzkwYTg0MmRiOTVlZDk3OWRhN2E0YTI1NTliOTQ3MTljOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
cmVuZGVyX2RlbGF5X2J1ZmZlci5jYwpAQCAtMTAsMTcgKzEwLDIxIEBACiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyLmgiCiAKLSNp
bmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPG51bWVyaWM+CiAKKyNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfZmZ0LmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYmxvY2tfcHJvY2Vzc29yLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZGVjaW1hdG9yLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2J1ZmZlci5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9kYXRhLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbWF0cml4X2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9hdG9taWNvcHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCkBAIC0zNSwxNCArMzksNiBAQCBi
b29sIEVuYWJsZVplcm9FeHRlcm5hbERlbGF5SGVhZHJvb20oKSB7CiAgICAgICAiV2ViUlRDLUFl
YzNaZXJvRXh0ZXJuYWxEZWxheUhlYWRyb29tS2lsbFN3aXRjaCIpOwogfQogCi1zaXplX3QgR2V0
RG93blNhbXBsaW5nRmFjdG9yKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcpIHsK
LSAgLy8gRG8gbm90IHVzZSBkb3duIHNhbXBsaW5nIGZhY3RvciA4IGlmIGtpbGwgc3dpdGNoIGlz
IHRyaWdnZXJlZC4KLSAgcmV0dXJuIChjb25maWcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3Ig
PT0gOCAmJgotICAgICAgICAgIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1BZWMzRG93
blNhbXBsaW5nRmFjdG9yOEtpbGxTd2l0Y2giKSkKLSAgICAgICAgICAgICA/IDQKLSAgICAgICAg
ICAgICA6IGNvbmZpZy5kZWxheS5kb3duX3NhbXBsaW5nX2ZhY3RvcjsKLX0KLQogY2xhc3MgUmVu
ZGVyRGVsYXlCdWZmZXJJbXBsIGZpbmFsIDogcHVibGljIFJlbmRlckRlbGF5QnVmZmVyIHsKICBw
dWJsaWM6CiAgIFJlbmRlckRlbGF5QnVmZmVySW1wbChjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZp
ZyYgY29uZmlnLCBzaXplX3QgbnVtX2JhbmRzKTsKQEAgLTE3Nyw3ICsxNzMsNyBAQCBSZW5kZXJE
ZWxheUJ1ZmZlckltcGw6OlJlbmRlckRlbGF5QnVmZmVySW1wbChjb25zdCBFY2hvQ2FuY2VsbGVy
M0NvbmZpZyYgY29uZmlnLAogICAgICAgICAgIG5ldyBBcG1EYXRhRHVtcGVyKHJ0Yzo6QXRvbWlj
T3BzOjpJbmNyZW1lbnQoJmluc3RhbmNlX2NvdW50XykpKSwKICAgICAgIG9wdGltaXphdGlvbl8o
RGV0ZWN0T3B0aW1pemF0aW9uKCkpLAogICAgICAgY29uZmlnXyhjb25maWcpLAotICAgICAgZG93
bl9zYW1wbGluZ19mYWN0b3JfKEdldERvd25TYW1wbGluZ0ZhY3Rvcihjb25maWcpKSwKKyAgICAg
IGRvd25fc2FtcGxpbmdfZmFjdG9yXyhjb25maWcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3Ip
LAogICAgICAgdXNlX3plcm9fZXh0ZXJuYWxfZGVsYXlfaGVhZHJvb21fKEVuYWJsZVplcm9FeHRl
cm5hbERlbGF5SGVhZHJvb20oKSksCiAgICAgICBzdWJfYmxvY2tfc2l6ZV8oc3RhdGljX2Nhc3Q8
aW50Pihkb3duX3NhbXBsaW5nX2ZhY3Rvcl8gPiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPyBrQmxvY2tTaXplIC8gZG93bl9zYW1wbGluZ19mYWN0b3JfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVyLmgKaW5kZXggYTZkNjg3NGUzZTQ2OTZiMTA1ZGUw
NGE0MDJjMzMyNzE0MTM4NGEzZi4uYmQyNDJmNzQzZjliMmEyNDBkZGIyYzZkNzYzNTljODQyZWIz
M2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXIuaApAQCAtMTIsMTUgKzEyLDEw
IEBACiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1JFTkRFUl9ERUxBWV9C
VUZGRVJfSF8KIAogI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPGFycmF5PgogI2luY2x1
ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLSNpbmNsdWRl
ICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNf
Y29uZmlnLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19j
b21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9kb3duc2Ft
cGxlZF9yZW5kZXJfYnVmZmVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvZmZ0X2RhdGEuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZW5kZXJfYnVmZmVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMzMsMTIgKzI4LDEz
IEBAIGNsYXNzIFJlbmRlckRlbGF5QnVmZmVyIHsKICAgICBrTm9uZSwKICAgICBrUmVuZGVyVW5k
ZXJydW4sCiAgICAga1JlbmRlck92ZXJydW4sCi0gICAga0FwaUNhbGxTa2V3LAotICAgIGtSZW5k
ZXJEYXRhTG9zdAorICAgIGtBcGlDYWxsU2tldwogICB9OwogCiAgIHN0YXRpYyBSZW5kZXJEZWxh
eUJ1ZmZlciogQ3JlYXRlKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1fYmFuZHMpOworICBzdGF0
aWMgUmVuZGVyRGVsYXlCdWZmZXIqIENyZWF0ZTIoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcm
IGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1f
YmFuZHMpOwogICB2aXJ0dWFsIH5SZW5kZXJEZWxheUJ1ZmZlcigpID0gZGVmYXVsdDsKIAogICAv
LyBSZXNldHMgdGhlIGJ1ZmZlciBhbGlnbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZW5kZXJfZGVsYXlfYnVmZmVyMi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9i
dWZmZXIyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5OTJjNWI4OTg3NjVmMjUyOWQ5OWEzNTVhODgxY2RhNWY1
NmRiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVm
ZmVyMi5jYwpAQCAtMCwwICsxLDQ1MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAi
YXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfZmZ0LmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvZGVjaW1hdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2ZmdF9idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfZGF0YS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL21hdHJpeF9idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFt
ZXNwYWNlIHsKKworY2xhc3MgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMiBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJEZWxheUJ1ZmZlciB7CisgcHVibGljOgorICBSZW5kZXJEZWxheUJ1ZmZlckltcGwyKGNv
bnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcsIHNpemVfdCBudW1fYmFuZHMpOworICBS
ZW5kZXJEZWxheUJ1ZmZlckltcGwyKCkgPSBkZWxldGU7CisgIH5SZW5kZXJEZWxheUJ1ZmZlcklt
cGwyKCkgb3ZlcnJpZGU7CisKKyAgdm9pZCBSZXNldCgpIG92ZXJyaWRlOworICBCdWZmZXJpbmdF
dmVudCBJbnNlcnQoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiYgYmxvY2sp
IG92ZXJyaWRlOworICBCdWZmZXJpbmdFdmVudCBQcmVwYXJlQ2FwdHVyZVByb2Nlc3NpbmcoKSBv
dmVycmlkZTsKKyAgYm9vbCBTZXREZWxheShzaXplX3QgZGVsYXkpIG92ZXJyaWRlOworICBzaXpl
X3QgRGVsYXkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDb21wdXRlRGVsYXkoKTsgfQorICBz
aXplX3QgTWF4RGVsYXkoKSBjb25zdCBvdmVycmlkZSB7CisgICAgcmV0dXJuIGJsb2Nrc18uYnVm
ZmVyLnNpemUoKSAtIDEgLSBidWZmZXJfaGVhZHJvb21fOworICB9CisgIFJlbmRlckJ1ZmZlciog
R2V0UmVuZGVyQnVmZmVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gJmVjaG9fcmVtb3Zlcl9idWZmZXJf
OyB9CisKKyAgY29uc3QgRG93bnNhbXBsZWRSZW5kZXJCdWZmZXImIEdldERvd25zYW1wbGVkUmVu
ZGVyQnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgIHJldHVybiBsb3dfcmF0ZV87CisgIH0K
KworICBpbnQgQnVmZmVyTGF0ZW5jeSgpIGNvbnN0OworICBib29sIENhdXNhbERlbGF5KHNpemVf
dCBkZWxheSkgY29uc3Qgb3ZlcnJpZGU7CisgIHZvaWQgU2V0QXVkaW9CdWZmZXJEZWxheShzaXpl
X3QgZGVsYXlfbXMpIG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgc3RhdGljIGludCBpbnN0YW5j
ZV9jb3VudF87CisgIHN0ZDo6dW5pcXVlX3B0cjxBcG1EYXRhRHVtcGVyPiBkYXRhX2R1bXBlcl87
CisgIGNvbnN0IEFlYzNPcHRpbWl6YXRpb24gb3B0aW1pemF0aW9uXzsKKyAgY29uc3QgRWNob0Nh
bmNlbGxlcjNDb25maWcgY29uZmlnXzsKKyAgc2l6ZV90IGRvd25fc2FtcGxpbmdfZmFjdG9yXzsK
KyAgY29uc3QgaW50IHN1Yl9ibG9ja19zaXplXzsKKyAgTWF0cml4QnVmZmVyIGJsb2Nrc187Cisg
IFZlY3RvckJ1ZmZlciBzcGVjdHJhXzsKKyAgRmZ0QnVmZmVyIGZmdHNfOworICBhYnNsOjpvcHRp
b25hbDxzaXplX3Q+IGRlbGF5XzsKKyAgUmVuZGVyQnVmZmVyIGVjaG9fcmVtb3Zlcl9idWZmZXJf
OworICBEb3duc2FtcGxlZFJlbmRlckJ1ZmZlciBsb3dfcmF0ZV87CisgIERlY2ltYXRvciByZW5k
ZXJfZGVjaW1hdG9yXzsKKyAgY29uc3QgQWVjM0ZmdCBmZnRfOworICBzdGQ6OnZlY3RvcjxmbG9h
dD4gcmVuZGVyX2RzXzsKKyAgY29uc3QgaW50IGJ1ZmZlcl9oZWFkcm9vbV87CisgIGJvb2wgbGFz
dF9jYWxsX3dhc19yZW5kZXJfID0gZmFsc2U7CisgIGludCBudW1fYXBpX2NhbGxzX2luX2Ffcm93
XyA9IDA7CisgIGludCBtYXhfb2JzZXJ2ZWRfaml0dGVyXyA9IDE7CisgIHNpemVfdCBjYXB0dXJl
X2NhbGxfY291bnRlcl8gPSAwOworICBzaXplX3QgcmVuZGVyX2NhbGxfY291bnRlcl8gPSAwOwor
ICBib29sIHJlbmRlcl9hY3Rpdml0eV8gPSBmYWxzZTsKKyAgc2l6ZV90IHJlbmRlcl9hY3Rpdml0
eV9jb3VudGVyXyA9IDA7CisgIGFic2w6Om9wdGlvbmFsPHNpemVfdD4gZXh0ZXJuYWxfYXVkaW9f
YnVmZmVyX2RlbGF5XzsKKyAgYm9vbCBleHRlcm5hbF9hdWRpb19idWZmZXJfZGVsYXlfdmVyaWZp
ZWRfYWZ0ZXJfcmVzZXRfID0gZmFsc2U7CisgIHNpemVfdCBtaW5fbGF0ZW5jeV9ibG9ja3NfID0g
MDsKKyAgc2l6ZV90IGV4Y2Vzc19yZW5kZXJfZGV0ZWN0aW9uX2NvdW50ZXJfID0gMDsKKyAgc2l6
ZV90IG51bV9iYW5kc187CisKKyAgaW50IE1hcERlbGF5VG9Ub3RhbERlbGF5KHNpemVfdCBkZWxh
eSkgY29uc3Q7CisgIGludCBDb21wdXRlRGVsYXkoKSBjb25zdDsKKyAgdm9pZCBBcHBseVRvdGFs
RGVsYXkoaW50IGRlbGF5KTsKKyAgdm9pZCBJbnNlcnRCbG9jayhjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnZlY3RvcjxmbG9hdD4+JiBibG9jaywKKyAgICAgICAgICAgICAgICAgICBpbnQgcHJldmlv
dXNfd3JpdGUpOworICBib29sIERldGVjdEFjdGl2ZVJlbmRlcihydGM6OkFycmF5Vmlldzxjb25z
dCBmbG9hdD4geCkgY29uc3Q7CisgIGJvb2wgRGV0ZWN0RXhjZXNzUmVuZGVyQmxvY2tzKCk7Cisg
IHZvaWQgSW5jcmVtZW50V3JpdGVJbmRpY2VzKCk7CisgIHZvaWQgSW5jcmVtZW50TG93UmF0ZVJl
YWRJbmRpY2VzKCk7CisgIHZvaWQgSW5jcmVtZW50UmVhZEluZGljZXMoKTsKKyAgYm9vbCBSZW5k
ZXJPdmVycnVuKCk7CisgIGJvb2wgUmVuZGVyVW5kZXJydW4oKTsKK307CisKK2ludCBSZW5kZXJE
ZWxheUJ1ZmZlckltcGwyOjppbnN0YW5jZV9jb3VudF8gPSAwOworCitSZW5kZXJEZWxheUJ1ZmZl
ckltcGwyOjpSZW5kZXJEZWxheUJ1ZmZlckltcGwyKAorICAgIGNvbnN0IEVjaG9DYW5jZWxsZXIz
Q29uZmlnJiBjb25maWcsCisgICAgc2l6ZV90IG51bV9iYW5kcykKKyAgICA6IGRhdGFfZHVtcGVy
XygKKyAgICAgICAgICBuZXcgQXBtRGF0YUR1bXBlcihydGM6OkF0b21pY09wczo6SW5jcmVtZW50
KCZpbnN0YW5jZV9jb3VudF8pKSksCisgICAgICBvcHRpbWl6YXRpb25fKERldGVjdE9wdGltaXph
dGlvbigpKSwKKyAgICAgIGNvbmZpZ18oY29uZmlnKSwKKyAgICAgIGRvd25fc2FtcGxpbmdfZmFj
dG9yXyhjb25maWcuZGVsYXkuZG93bl9zYW1wbGluZ19mYWN0b3IpLAorICAgICAgc3ViX2Jsb2Nr
X3NpemVfKHN0YXRpY19jYXN0PGludD4oZG93bl9zYW1wbGluZ19mYWN0b3JfID4gMAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ga0Jsb2NrU2l6ZSAvIGRvd25f
c2FtcGxpbmdfZmFjdG9yXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDoga0Jsb2NrU2l6ZSkpLAorICAgICAgYmxvY2tzXyhHZXRSZW5kZXJEZWxheUJ1ZmZlclNp
emUoZG93bl9zYW1wbGluZ19mYWN0b3JfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uZmlnLmRlbGF5Lm51bV9maWx0ZXJzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uZmlnLmZpbHRlci5tYWluLmxlbmd0aF9ibG9ja3MpLAorICAg
ICAgICAgICAgICBudW1fYmFuZHMsCisgICAgICAgICAgICAgIGtCbG9ja1NpemUpLAorICAgICAg
c3BlY3RyYV8oYmxvY2tzXy5idWZmZXIuc2l6ZSgpLCBrRmZ0TGVuZ3RoQnkyUGx1czEpLAorICAg
ICAgZmZ0c18oYmxvY2tzXy5idWZmZXIuc2l6ZSgpKSwKKyAgICAgIGRlbGF5Xyhjb25maWdfLmRl
bGF5LmRlZmF1bHRfZGVsYXkpLAorICAgICAgZWNob19yZW1vdmVyX2J1ZmZlcl8oJmJsb2Nrc18s
ICZzcGVjdHJhXywgJmZmdHNfKSwKKyAgICAgIGxvd19yYXRlXyhHZXREb3duU2FtcGxlZEJ1ZmZl
clNpemUoZG93bl9zYW1wbGluZ19mYWN0b3JfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25maWcuZGVsYXkubnVtX2ZpbHRlcnMpKSwKKyAgICAgIHJlbmRlcl9k
ZWNpbWF0b3JfKGRvd25fc2FtcGxpbmdfZmFjdG9yXyksCisgICAgICBmZnRfKCksCisgICAgICBy
ZW5kZXJfZHNfKHN1Yl9ibG9ja19zaXplXywgMC5mKSwKKyAgICAgIGJ1ZmZlcl9oZWFkcm9vbV8o
Y29uZmlnLmZpbHRlci5tYWluLmxlbmd0aF9ibG9ja3MpLAorICAgICAgbnVtX2JhbmRzXyhudW1f
YmFuZHMpIHsKKyAgUlRDX0RDSEVDS19FUShibG9ja3NfLmJ1ZmZlci5zaXplKCksIGZmdHNfLmJ1
ZmZlci5zaXplKCkpOworICBSVENfRENIRUNLX0VRKHNwZWN0cmFfLmJ1ZmZlci5zaXplKCksIGZm
dHNfLmJ1ZmZlci5zaXplKCkpOworCisgIFJlc2V0KCk7Cit9CisKK1JlbmRlckRlbGF5QnVmZmVy
SW1wbDI6On5SZW5kZXJEZWxheUJ1ZmZlckltcGwyKCkgPSBkZWZhdWx0OworCisvLyBSZXNldHMg
dGhlIGJ1ZmZlciBkZWxheXMgYW5kIGNsZWFycyB0aGUgcmVwb3J0ZWQgZGVsYXlzLgordm9pZCBS
ZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpSZXNldCgpIHsKKyAgbGFzdF9jYWxsX3dhc19yZW5kZXJf
ID0gZmFsc2U7CisgIG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfID0gMTsKKyAgbWluX2xhdGVuY3lf
YmxvY2tzXyA9IDA7CisgIGV4Y2Vzc19yZW5kZXJfZGV0ZWN0aW9uX2NvdW50ZXJfID0gMDsKKwor
ICAvLyBJbml0aWFsaXplIHRoZSByZWFkIGluZGV4IHRvIG9uZSBzdWItYmxvY2sgYmVmb3JlIHRo
ZSB3cml0ZSBpbmRleC4KKyAgbG93X3JhdGVfLnJlYWQgPSBsb3dfcmF0ZV8uT2Zmc2V0SW5kZXgo
bG93X3JhdGVfLndyaXRlLCBzdWJfYmxvY2tfc2l6ZV8pOworCisgIC8vIENoZWNrIGZvciBhbnkg
ZXh0ZXJuYWwgYXVkaW8gYnVmZmVyIGRlbGF5IGFuZCB3aGV0aGVyIGl0IGlzIGZlYXNpYmxlLgor
ICBpZiAoZXh0ZXJuYWxfYXVkaW9fYnVmZmVyX2RlbGF5XykgeworICAgIGNvbnN0IHNpemVfdCBo
ZWFkcm9vbSA9IDI7CisgICAgc2l6ZV90IGF1ZGlvX2J1ZmZlcl9kZWxheV90b19zZXQ7CisgICAg
Ly8gTWluaW11bSBkZWxheSBpcyAxIChsaWtlIHRoZSBsb3ctcmF0ZSByZW5kZXIgYnVmZmVyKS4K
KyAgICBpZiAoKmV4dGVybmFsX2F1ZGlvX2J1ZmZlcl9kZWxheV8gPD0gaGVhZHJvb20pIHsKKyAg
ICAgIGF1ZGlvX2J1ZmZlcl9kZWxheV90b19zZXQgPSAxOworICAgIH0gZWxzZSB7CisgICAgICBh
dWRpb19idWZmZXJfZGVsYXlfdG9fc2V0ID0gKmV4dGVybmFsX2F1ZGlvX2J1ZmZlcl9kZWxheV8g
LSBoZWFkcm9vbTsKKyAgICB9CisKKyAgICBhdWRpb19idWZmZXJfZGVsYXlfdG9fc2V0ID0gc3Rk
OjptaW4oYXVkaW9fYnVmZmVyX2RlbGF5X3RvX3NldCwgTWF4RGVsYXkoKSk7CisKKyAgICAvLyBX
aGVuIGFuIGV4dGVybmFsIGRlbGF5IGVzdGltYXRlIGlzIGF2YWlsYWJsZSwgdXNlIHRoYXQgZGVs
YXkgYXMgdGhlCisgICAgLy8gaW5pdGlhbCByZW5kZXIgYnVmZmVyIGRlbGF5LgorICAgIEFwcGx5
VG90YWxEZWxheShhdWRpb19idWZmZXJfZGVsYXlfdG9fc2V0KTsKKyAgICBkZWxheV8gPSBDb21w
dXRlRGVsYXkoKTsKKworICAgIGV4dGVybmFsX2F1ZGlvX2J1ZmZlcl9kZWxheV92ZXJpZmllZF9h
ZnRlcl9yZXNldF8gPSBmYWxzZTsKKyAgfSBlbHNlIHsKKyAgICAvLyBJZiBhbiBleHRlcm5hbCBk
ZWxheSBlc3RpbWF0ZSBpcyBub3QgYXZhaWxhYmxlLCB1c2UgdGhhdCBkZWxheSBhcyB0aGUKKyAg
ICAvLyBpbml0aWFsIGRlbGF5LiBTZXQgdGhlIHJlbmRlciBidWZmZXIgZGVsYXlzIHRvIHRoZSBk
ZWZhdWx0IGRlbGF5LgorICAgIEFwcGx5VG90YWxEZWxheShjb25maWdfLmRlbGF5LmRlZmF1bHRf
ZGVsYXkpOworCisgICAgLy8gVW5zZXQgdGhlIGRlbGF5cyB3aGljaCBhcmUgc2V0IGJ5IFNldERl
bGF5LgorICAgIGRlbGF5XyA9IGFic2w6Om51bGxvcHQ7CisgIH0KK30KKworLy8gSW5zZXJ0cyBh
IG5ldyBibG9jayBpbnRvIHRoZSByZW5kZXIgYnVmZmVycy4KK1JlbmRlckRlbGF5QnVmZmVyOjpC
dWZmZXJpbmdFdmVudCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpJbnNlcnQoCisgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+PiYgYmxvY2spIHsKKyAgKytyZW5kZXJfY2Fs
bF9jb3VudGVyXzsKKyAgaWYgKGRlbGF5XykgeworICAgIGlmICghbGFzdF9jYWxsX3dhc19yZW5k
ZXJfKSB7CisgICAgICBsYXN0X2NhbGxfd2FzX3JlbmRlcl8gPSB0cnVlOworICAgICAgbnVtX2Fw
aV9jYWxsc19pbl9hX3Jvd18gPSAxOworICAgIH0gZWxzZSB7CisgICAgICBpZiAoKytudW1fYXBp
X2NhbGxzX2luX2Ffcm93XyA+IG1heF9vYnNlcnZlZF9qaXR0ZXJfKSB7CisgICAgICAgIG1heF9v
YnNlcnZlZF9qaXR0ZXJfID0gbnVtX2FwaV9jYWxsc19pbl9hX3Jvd187CisgICAgICAgIFJUQ19M
T0coTFNfV0FSTklORykKKyAgICAgICAgICAgIDw8ICJOZXcgbWF4IG51bWJlciBhcGkgaml0dGVy
IG9ic2VydmVkIGF0IHJlbmRlciBibG9jayAiCisgICAgICAgICAgICA8PCByZW5kZXJfY2FsbF9j
b3VudGVyXyA8PCAiOiAgIiA8PCBudW1fYXBpX2NhbGxzX2luX2Ffcm93XworICAgICAgICAgICAg
PDwgIiBibG9ja3MiOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8vIEluY3JlYXNlIHRoZSB3
cml0ZSBpbmRpY2VzIHRvIHdoZXJlIHRoZSBuZXcgYmxvY2tzIHNob3VsZCBiZSB3cml0dGVuLgor
ICBjb25zdCBpbnQgcHJldmlvdXNfd3JpdGUgPSBibG9ja3NfLndyaXRlOworICBJbmNyZW1lbnRX
cml0ZUluZGljZXMoKTsKKworICAvLyBBbGxvdyBvdmVycnVuIGFuZCBkbyBhIHJlc2V0IHdoZW4g
cmVuZGVyIG92ZXJydW4gb2NjdXJycyBkdWUgdG8gbW9yZSByZW5kZXIKKyAgLy8gZGF0YSBiZWlu
ZyBpbnNlcnRlZCB0aGFuIGNhcHR1cmUgZGF0YSBpcyByZWNlaXZlZC4KKyAgQnVmZmVyaW5nRXZl
bnQgZXZlbnQgPQorICAgICAgUmVuZGVyT3ZlcnJ1bigpID8gQnVmZmVyaW5nRXZlbnQ6OmtSZW5k
ZXJPdmVycnVuIDogQnVmZmVyaW5nRXZlbnQ6OmtOb25lOworCisgIC8vIERldGVjdCBhbmQgdXBk
YXRlIHJlbmRlciBhY3Rpdml0eS4KKyAgaWYgKCFyZW5kZXJfYWN0aXZpdHlfKSB7CisgICAgcmVu
ZGVyX2FjdGl2aXR5X2NvdW50ZXJfICs9IERldGVjdEFjdGl2ZVJlbmRlcihibG9ja1swXSkgPyAx
IDogMDsKKyAgICByZW5kZXJfYWN0aXZpdHlfID0gcmVuZGVyX2FjdGl2aXR5X2NvdW50ZXJfID49
IDIwOworICB9CisKKyAgLy8gSW5zZXJ0IHRoZSBuZXcgcmVuZGVyIGJsb2NrIGludG8gdGhlIHNw
ZWNpZmllZCBwb3NpdGlvbi4KKyAgSW5zZXJ0QmxvY2soYmxvY2ssIHByZXZpb3VzX3dyaXRlKTsK
KworICBpZiAoZXZlbnQgIT0gQnVmZmVyaW5nRXZlbnQ6OmtOb25lKSB7CisgICAgUmVzZXQoKTsK
KyAgfQorCisgIHJldHVybiBldmVudDsKK30KKworLy8gUHJlcGFyZXMgdGhlIHJlbmRlciBidWZm
ZXJzIGZvciBwcm9jZXNzaW5nIGFub3RoZXIgY2FwdHVyZSBibG9jay4KK1JlbmRlckRlbGF5QnVm
ZmVyOjpCdWZmZXJpbmdFdmVudAorUmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6UHJlcGFyZUNhcHR1
cmVQcm9jZXNzaW5nKCkgeworICBSZW5kZXJEZWxheUJ1ZmZlcjo6QnVmZmVyaW5nRXZlbnQgZXZl
bnQgPSBCdWZmZXJpbmdFdmVudDo6a05vbmU7CisgICsrY2FwdHVyZV9jYWxsX2NvdW50ZXJfOwor
CisgIGlmIChkZWxheV8pIHsKKyAgICBpZiAobGFzdF9jYWxsX3dhc19yZW5kZXJfKSB7CisgICAg
ICBsYXN0X2NhbGxfd2FzX3JlbmRlcl8gPSBmYWxzZTsKKyAgICAgIG51bV9hcGlfY2FsbHNfaW5f
YV9yb3dfID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKCsrbnVtX2FwaV9jYWxsc19pbl9h
X3Jvd18gPiBtYXhfb2JzZXJ2ZWRfaml0dGVyXykgeworICAgICAgICBtYXhfb2JzZXJ2ZWRfaml0
dGVyXyA9IG51bV9hcGlfY2FsbHNfaW5fYV9yb3dfOworICAgICAgICBSVENfTE9HKExTX1dBUk5J
TkcpCisgICAgICAgICAgICA8PCAiTmV3IG1heCBudW1iZXIgYXBpIGppdHRlciBvYnNlcnZlZCBh
dCBjYXB0dXJlIGJsb2NrICIKKyAgICAgICAgICAgIDw8IGNhcHR1cmVfY2FsbF9jb3VudGVyXyA8
PCAiOiAgIiA8PCBudW1fYXBpX2NhbGxzX2luX2Ffcm93XworICAgICAgICAgICAgPDwgIiBibG9j
a3MiOworICAgICAgfQorICAgIH0KKyAgfQorCisgIGlmIChEZXRlY3RFeGNlc3NSZW5kZXJCbG9j
a3MoKSkgeworICAgIC8vIFRvbyBtYW55IHJlbmRlciBibG9ja3MgY29tcGFyZWQgdG8gY2FwdHVy
ZSBibG9ja3MuIFJpc2sgb2YgZGVsYXkgZW5kaW5nCisgICAgLy8gdXAgYmVmb3JlIHRoZSBmaWx0
ZXIgdXNlZCBieSB0aGUgZGVsYXkgZXN0aW1hdG9yLgorICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIkV4Y2VzcyByZW5kZXIgYmxvY2tzIGRldGVjdGVkIGF0IGJsb2NrICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIDw8IGNhcHR1cmVfY2FsbF9jb3VudGVyXzsKKyAgICBSZXNldCgpOworICAg
IGV2ZW50ID0gQnVmZmVyaW5nRXZlbnQ6OmtSZW5kZXJPdmVycnVuOworICB9IGVsc2UgaWYgKFJl
bmRlclVuZGVycnVuKCkpIHsKKyAgICAvLyBEb24ndCBpbmNyZW1lbnQgdGhlIHJlYWQgaW5kaWNl
cyBvZiB0aGUgbG93IHJhdGUgYnVmZmVyIGlmIHRoZXJlIGlzIGEKKyAgICAvLyByZW5kZXIgdW5k
ZXJydW4uCisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVuZGVyIGJ1ZmZlciB1bmRlcnJ1
biBkZXRlY3RlZCBhdCBibG9jayAiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBjYXB0dXJl
X2NhbGxfY291bnRlcl87CisgICAgSW5jcmVtZW50UmVhZEluZGljZXMoKTsKKyAgICAvLyBJbmNy
ZW1lbnRpbmcgdGhlIGJ1ZmZlciBpbmRleCB3aXRob3V0IGluY3JlYXNpbmcgdGhlIGxvdyByYXRl
IGJ1ZmZlcgorICAgIC8vIGluZGV4IG1lYW5zIHRoYXQgdGhlIGRlbGF5IGlzIHJlZHVjZWQgYnkg
b25lLgorICAgIGlmIChkZWxheV8gJiYgKmRlbGF5XyA+IDApCisgICAgICBkZWxheV8gPSAqZGVs
YXlfIC0gMTsKKyAgICBldmVudCA9IEJ1ZmZlcmluZ0V2ZW50OjprUmVuZGVyVW5kZXJydW47Cisg
IH0gZWxzZSB7CisgICAgLy8gSW5jcmVtZW50IHRoZSByZWFkIGluZGljZXMgaW4gdGhlIHJlbmRl
ciBidWZmZXJzIHRvIHBvaW50IHRvIHRoZSBtb3N0CisgICAgLy8gcmVjZW50IGJsb2NrIHRvIHVz
ZSBpbiB0aGUgY2FwdHVyZSBwcm9jZXNzaW5nLgorICAgIEluY3JlbWVudExvd1JhdGVSZWFkSW5k
aWNlcygpOworICAgIEluY3JlbWVudFJlYWRJbmRpY2VzKCk7CisgIH0KKworICBlY2hvX3JlbW92
ZXJfYnVmZmVyXy5TZXRSZW5kZXJBY3Rpdml0eShyZW5kZXJfYWN0aXZpdHlfKTsKKyAgaWYgKHJl
bmRlcl9hY3Rpdml0eV8pIHsKKyAgICByZW5kZXJfYWN0aXZpdHlfY291bnRlcl8gPSAwOworICAg
IHJlbmRlcl9hY3Rpdml0eV8gPSBmYWxzZTsKKyAgfQorCisgIHJldHVybiBldmVudDsKK30KKwor
Ly8gU2V0cyB0aGUgZGVsYXkgYW5kIHJldHVybnMgYSBib29sIGluZGljYXRpbmcgd2hldGhlciB0
aGUgZGVsYXkgd2FzIGNoYW5nZWQuCitib29sIFJlbmRlckRlbGF5QnVmZmVySW1wbDI6OlNldERl
bGF5KHNpemVfdCBkZWxheSkgeworICBpZiAoIWV4dGVybmFsX2F1ZGlvX2J1ZmZlcl9kZWxheV92
ZXJpZmllZF9hZnRlcl9yZXNldF8gJiYKKyAgICAgIGV4dGVybmFsX2F1ZGlvX2J1ZmZlcl9kZWxh
eV8gJiYgZGVsYXlfKSB7CisgICAgaW50IGRpZmZlcmVuY2UgPSBzdGF0aWNfY2FzdDxpbnQ+KGRl
bGF5KSAtIHN0YXRpY19jYXN0PGludD4oKmRlbGF5Xyk7CisgICAgUlRDX0xPRyhMU19XQVJOSU5H
KSA8PCAiTWlzbWF0Y2ggYmV0d2VlbiBmaXJzdCBlc3RpbWF0ZWQgZGVsYXkgYWZ0ZXIgcmVzZXQg
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBleHRlcm5hbGx5IHJlcG9ydGVkIGF1
ZGlvIGJ1ZmZlciBkZWxheTogIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgZGlmZmVyZW5j
ZSA8PCAiIGJsb2NrcyI7CisgICAgZXh0ZXJuYWxfYXVkaW9fYnVmZmVyX2RlbGF5X3ZlcmlmaWVk
X2FmdGVyX3Jlc2V0XyA9IHRydWU7CisgIH0KKyAgaWYgKGRlbGF5XyAmJiAqZGVsYXlfID09IGRl
bGF5KSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGRlbGF5XyA9IGRlbGF5OworCisgIC8v
IENvbXB1dGUgdGhlIHRvdGFsIGRlbGF5IGFuZCBsaW1pdCB0aGUgZGVsYXkgdG8gdGhlIGFsbG93
ZWQgcmFuZ2UuCisgIGludCB0b3RhbF9kZWxheSA9IE1hcERlbGF5VG9Ub3RhbERlbGF5KCpkZWxh
eV8pOworICB0b3RhbF9kZWxheSA9CisgICAgICBzdGQ6Om1pbihNYXhEZWxheSgpLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHN0ZDo6bWF4KHRvdGFsX2RlbGF5LCAwKSkpOworCisgIC8vIEFwcGx5IHRo
ZSBkZWxheSB0byB0aGUgYnVmZmVycy4KKyAgQXBwbHlUb3RhbERlbGF5KHRvdGFsX2RlbGF5KTsK
KyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFJldHVybnMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGRl
bGF5IGlzIGNhdXNhbC4KK2Jvb2wgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6Q2F1c2FsRGVsYXko
c2l6ZV90IGRlbGF5KSBjb25zdCB7CisgIC8vIFRPRE8oZ3VzdGFmKTogUmVtb3ZlIHRoaXMgZnJv
bSBSZW5kZXJEZWxheUJ1ZmZlci4KKyAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVuZGVyRGVs
YXlCdWZmZXJJbXBsMjo6U2V0QXVkaW9CdWZmZXJEZWxheShzaXplX3QgZGVsYXlfbXMpIHsKKyAg
aWYgKCFleHRlcm5hbF9hdWRpb19idWZmZXJfZGVsYXlfKSB7CisgICAgUlRDX0xPRyhMU19XQVJO
SU5HKQorICAgICAgICA8PCAiUmVjZWl2aW5nIGEgZmlyc3QgZXh0ZXJuYWxseSByZXBvcnRlZCBh
dWRpbyBidWZmZXIgZGVsYXkgb2YgIgorICAgICAgICA8PCBkZWxheV9tcyA8PCAiIG1zLiI7Cisg
IH0KKworICAvLyBDb252ZXJ0IGRlbGF5IGZyb20gbWlsbGlzZWNvbmRzIHRvIGJsb2NrcyAocm91
bmRlZCBkb3duKS4KKyAgZXh0ZXJuYWxfYXVkaW9fYnVmZmVyX2RlbGF5XyA9IGRlbGF5X21zID4+
ICgobnVtX2JhbmRzXyA9PSAxKSA/IDEgOiAyKTsKK30KKworLy8gTWFwcyB0aGUgZXh0ZXJuYWxs
eSBjb21wdXRlZCBkZWxheSB0byB0aGUgZGVsYXkgdXNlZCBpbnRlcm5hbGx5LgoraW50IFJlbmRl
ckRlbGF5QnVmZmVySW1wbDI6Ok1hcERlbGF5VG9Ub3RhbERlbGF5KAorICAgIHNpemVfdCBleHRl
cm5hbF9kZWxheV9ibG9ja3MpIGNvbnN0IHsKKyAgY29uc3QgaW50IGxhdGVuY3lfYmxvY2tzID0g
QnVmZmVyTGF0ZW5jeSgpOworICByZXR1cm4gbGF0ZW5jeV9ibG9ja3MgKyBzdGF0aWNfY2FzdDxp
bnQ+KGV4dGVybmFsX2RlbGF5X2Jsb2Nrcyk7Cit9CisKKy8vIFJldHVybnMgdGhlIGRlbGF5IChu
b3QgaW5jbHVkaW5nIGNhbGwgaml0dGVyKS4KK2ludCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpD
b21wdXRlRGVsYXkoKSBjb25zdCB7CisgIGNvbnN0IGludCBsYXRlbmN5X2Jsb2NrcyA9IEJ1ZmZl
ckxhdGVuY3koKTsKKyAgaW50IGludGVybmFsX2RlbGF5ID0gc3BlY3RyYV8ucmVhZCA+PSBzcGVj
dHJhXy53cml0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzcGVjdHJhXy5yZWFkIC0g
c3BlY3RyYV8ud3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc3BlY3RyYV8uc2l6
ZSArIHNwZWN0cmFfLnJlYWQgLSBzcGVjdHJhXy53cml0ZTsKKworICByZXR1cm4gaW50ZXJuYWxf
ZGVsYXkgLSBsYXRlbmN5X2Jsb2NrczsKK30KKworLy8gU2V0IHRoZSByZWFkIGluZGljZXMgYWNj
b3JkaW5nIHRvIHRoZSBkZWxheS4KK3ZvaWQgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6QXBwbHlU
b3RhbERlbGF5KGludCBkZWxheSkgeworICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJBcHBseWlu
ZyB0b3RhbCBkZWxheSBvZiAiIDw8IGRlbGF5IDw8ICIgYmxvY2tzLiI7CisgIGJsb2Nrc18ucmVh
ZCA9IGJsb2Nrc18uT2Zmc2V0SW5kZXgoYmxvY2tzXy53cml0ZSwgLWRlbGF5KTsKKyAgc3BlY3Ry
YV8ucmVhZCA9IHNwZWN0cmFfLk9mZnNldEluZGV4KHNwZWN0cmFfLndyaXRlLCBkZWxheSk7Cisg
IGZmdHNfLnJlYWQgPSBmZnRzXy5PZmZzZXRJbmRleChmZnRzXy53cml0ZSwgZGVsYXkpOworfQor
CisvLyBJbnNlcnRzIGEgYmxvY2sgaW50byB0aGUgcmVuZGVyIGJ1ZmZlcnMuCit2b2lkIFJlbmRl
ckRlbGF5QnVmZmVySW1wbDI6Okluc2VydEJsb2NrKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6dmVjdG9yPGZsb2F0Pj4mIGJsb2NrLAorICAgIGludCBwcmV2aW91c193cml0ZSkgeworICBh
dXRvJiBiID0gYmxvY2tzXzsKKyAgYXV0byYgbHIgPSBsb3dfcmF0ZV87CisgIGF1dG8mIGRzID0g
cmVuZGVyX2RzXzsKKyAgYXV0byYgZiA9IGZmdHNfOworICBhdXRvJiBzID0gc3BlY3RyYV87Cisg
IFJUQ19EQ0hFQ0tfRVEoYmxvY2suc2l6ZSgpLCBiLmJ1ZmZlcltiLndyaXRlXS5zaXplKCkpOwor
ICBmb3IgKHNpemVfdCBrID0gMDsgayA8IGJsb2NrLnNpemUoKTsgKytrKSB7CisgICAgUlRDX0RD
SEVDS19FUShibG9ja1trXS5zaXplKCksIGIuYnVmZmVyW2Iud3JpdGVdW2tdLnNpemUoKSk7Cisg
ICAgc3RkOjpjb3B5KGJsb2NrW2tdLmJlZ2luKCksIGJsb2NrW2tdLmVuZCgpLCBiLmJ1ZmZlclti
LndyaXRlXVtrXS5iZWdpbigpKTsKKyAgfQorCisgIGRhdGFfZHVtcGVyXy0+RHVtcFdhdigiYWVj
M19yZW5kZXJfZGVjaW1hdG9yX2lucHV0IiwgYmxvY2tbMF0uc2l6ZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgYmxvY2tbMF0uZGF0YSgpLCAxNjAwMCwgMSk7CisgIHJlbmRlcl9kZWNpbWF0
b3JfLkRlY2ltYXRlKGJsb2NrWzBdLCBkcyk7CisgIGRhdGFfZHVtcGVyXy0+RHVtcFdhdigiYWVj
M19yZW5kZXJfZGVjaW1hdG9yX291dHB1dCIsIGRzLnNpemUoKSwgZHMuZGF0YSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgMTYwMDAgLyBkb3duX3NhbXBsaW5nX2ZhY3Rvcl8sIDEpOworICBz
dGQ6OmNvcHkoZHMucmJlZ2luKCksIGRzLnJlbmQoKSwgbHIuYnVmZmVyLmJlZ2luKCkgKyBsci53
cml0ZSk7CisgIGZmdF8uUGFkZGVkRmZ0KGJsb2NrWzBdLCBiLmJ1ZmZlcltwcmV2aW91c193cml0
ZV1bMF0sICZmLmJ1ZmZlcltmLndyaXRlXSk7CisgIGYuYnVmZmVyW2Yud3JpdGVdLlNwZWN0cnVt
KG9wdGltaXphdGlvbl8sIHMuYnVmZmVyW3Mud3JpdGVdKTsKK30KKworYm9vbCBSZW5kZXJEZWxh
eUJ1ZmZlckltcGwyOjpEZXRlY3RBY3RpdmVSZW5kZXIoCisgICAgcnRjOjpBcnJheVZpZXc8Y29u
c3QgZmxvYXQ+IHgpIGNvbnN0IHsKKyAgY29uc3QgZmxvYXQgeF9lbmVyZ3kgPSBzdGQ6OmlubmVy
X3Byb2R1Y3QoeC5iZWdpbigpLCB4LmVuZCgpLCB4LmJlZ2luKCksIDAuZik7CisgIHJldHVybiB4
X2VuZXJneSA+IChjb25maWdfLnJlbmRlcl9sZXZlbHMuYWN0aXZlX3JlbmRlcl9saW1pdCAqCisg
ICAgICAgICAgICAgICAgICAgICBjb25maWdfLnJlbmRlcl9sZXZlbHMuYWN0aXZlX3JlbmRlcl9s
aW1pdCkgKgorICAgICAgICAgICAgICAgICAgICAgICAga0ZmdExlbmd0aEJ5MjsKK30KKworYm9v
bCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpEZXRlY3RFeGNlc3NSZW5kZXJCbG9ja3MoKSB7Cisg
IGJvb2wgZXhjZXNzX3JlbmRlcl9kZXRlY3RlZCA9IGZhbHNlOworICBjb25zdCBzaXplX3QgbGF0
ZW5jeV9ibG9ja3MgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KEJ1ZmZlckxhdGVuY3koKSk7CisgIC8v
IFRoZSByZWNlbnRseSBzZWVuIG1pbmltdW0gbGF0ZW5jeSBpbiBibG9ja3MuIFNob3VsZCBiZSBj
bG9zZSB0byAwLgorICBtaW5fbGF0ZW5jeV9ibG9ja3NfID0gc3RkOjptaW4obWluX2xhdGVuY3lf
YmxvY2tzXywgbGF0ZW5jeV9ibG9ja3MpOworICAvLyBBZnRlciBwcm9jZXNzaW5nIGEgY29uZmln
dXJhYmxlIG51bWJlciBvZiBibG9ja3MgdGhlIG1pbmltdW0gbGF0ZW5jeSBpcworICAvLyBjaGVj
a2VkLgorICBpZiAoKytleGNlc3NfcmVuZGVyX2RldGVjdGlvbl9jb3VudGVyXyA+PQorICAgICAg
Y29uZmlnXy5idWZmZXJpbmcuZXhjZXNzX3JlbmRlcl9kZXRlY3Rpb25faW50ZXJ2YWxfYmxvY2tz
KSB7CisgICAgLy8gSWYgdGhlIG1pbmltdW0gbGF0ZW5jeSBpcyBub3QgbG93ZXIgdGhhbiB0aGUg
dGhyZXNob2xkIHRoZXJlIGhhdmUgYmVlbgorICAgIC8vIG1vcmUgcmVuZGVyIHRoYW4gY2FwdHVy
ZSBmcmFtZXMuCisgICAgZXhjZXNzX3JlbmRlcl9kZXRlY3RlZCA9IG1pbl9sYXRlbmN5X2Jsb2Nr
c18gPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfLmJ1ZmZlcmluZy5tYXhf
YWxsb3dlZF9leGNlc3NfcmVuZGVyX2Jsb2NrczsKKyAgICAvLyBSZXNldCB0aGUgY291bnRlciBh
bmQgbGV0IHRoZSBtaW5pbXVtIGxhdGVuY3kgYmUgdGhlIGN1cnJlbnQgbGF0ZW5jeS4KKyAgICBt
aW5fbGF0ZW5jeV9ibG9ja3NfID0gbGF0ZW5jeV9ibG9ja3M7CisgICAgZXhjZXNzX3JlbmRlcl9k
ZXRlY3Rpb25fY291bnRlcl8gPSAwOworICB9CisKKyAgZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJh
ZWMzX2xhdGVuY3lfYmxvY2tzIiwgbGF0ZW5jeV9ibG9ja3MpOworICBkYXRhX2R1bXBlcl8tPkR1
bXBSYXcoImFlYzNfbWluX2xhdGVuY3lfYmxvY2tzIiwgbWluX2xhdGVuY3lfYmxvY2tzXyk7Cisg
IGRhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWVjM19leGNlc3NfcmVuZGVyX2RldGVjdGVkIiwgZXhj
ZXNzX3JlbmRlcl9kZXRlY3RlZCk7CisgIHJldHVybiBleGNlc3NfcmVuZGVyX2RldGVjdGVkOwor
fQorCisvLyBDb21wdXRlcyB0aGUgbGF0ZW5jeSBpbiB0aGUgYnVmZmVyICh0aGUgbnVtYmVyIG9m
IHVucmVhZCBzdWItYmxvY2tzKS4KK2ludCBSZW5kZXJEZWxheUJ1ZmZlckltcGwyOjpCdWZmZXJM
YXRlbmN5KCkgY29uc3QgeworICBjb25zdCBEb3duc2FtcGxlZFJlbmRlckJ1ZmZlciYgbCA9IGxv
d19yYXRlXzsKKyAgaW50IGxhdGVuY3lfc2FtcGxlcyA9IChsLmJ1ZmZlci5zaXplKCkgKyBsLnJl
YWQgLSBsLndyaXRlKSAlIGwuYnVmZmVyLnNpemUoKTsKKyAgaW50IGxhdGVuY3lfYmxvY2tzID0g
bGF0ZW5jeV9zYW1wbGVzIC8gc3ViX2Jsb2NrX3NpemVfOworICByZXR1cm4gbGF0ZW5jeV9ibG9j
a3M7Cit9CisKKy8vIEluY3JlbWVudHMgdGhlIHdyaXRlIGluZGljZXMgZm9yIHRoZSByZW5kZXIg
YnVmZmVycy4KK3ZvaWQgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMjo6SW5jcmVtZW50V3JpdGVJbmRp
Y2VzKCkgeworICBsb3dfcmF0ZV8uVXBkYXRlV3JpdGVJbmRleCgtc3ViX2Jsb2NrX3NpemVfKTsK
KyAgYmxvY2tzXy5JbmNXcml0ZUluZGV4KCk7CisgIHNwZWN0cmFfLkRlY1dyaXRlSW5kZXgoKTsK
KyAgZmZ0c18uRGVjV3JpdGVJbmRleCgpOworfQorCisvLyBJbmNyZW1lbnRzIHRoZSByZWFkIGlu
ZGljZXMgb2YgdGhlIGxvdyByYXRlIHJlbmRlciBidWZmZXJzLgordm9pZCBSZW5kZXJEZWxheUJ1
ZmZlckltcGwyOjpJbmNyZW1lbnRMb3dSYXRlUmVhZEluZGljZXMoKSB7CisgIGxvd19yYXRlXy5V
cGRhdGVSZWFkSW5kZXgoLXN1Yl9ibG9ja19zaXplXyk7Cit9CisKKy8vIEluY3JlbWVudHMgdGhl
IHJlYWQgaW5kaWNlcyBmb3IgdGhlIHJlbmRlciBidWZmZXJzLgordm9pZCBSZW5kZXJEZWxheUJ1
ZmZlckltcGwyOjpJbmNyZW1lbnRSZWFkSW5kaWNlcygpIHsKKyAgaWYgKGJsb2Nrc18ucmVhZCAh
PSBibG9ja3NfLndyaXRlKSB7CisgICAgYmxvY2tzXy5JbmNSZWFkSW5kZXgoKTsKKyAgICBzcGVj
dHJhXy5EZWNSZWFkSW5kZXgoKTsKKyAgICBmZnRzXy5EZWNSZWFkSW5kZXgoKTsKKyAgfQorfQor
CisvLyBDaGVja3MgZm9yIGEgcmVuZGVyIGJ1ZmZlciBvdmVycnVuLgorYm9vbCBSZW5kZXJEZWxh
eUJ1ZmZlckltcGwyOjpSZW5kZXJPdmVycnVuKCkgeworICByZXR1cm4gbG93X3JhdGVfLnJlYWQg
PT0gbG93X3JhdGVfLndyaXRlIHx8IGJsb2Nrc18ucmVhZCA9PSBibG9ja3NfLndyaXRlOworfQor
CisvLyBDaGVja3MgZm9yIGEgcmVuZGVyIGJ1ZmZlciB1bmRlcnJ1bi4KK2Jvb2wgUmVuZGVyRGVs
YXlCdWZmZXJJbXBsMjo6UmVuZGVyVW5kZXJydW4oKSB7CisgIHJldHVybiBsb3dfcmF0ZV8ucmVh
ZCA9PSBsb3dfcmF0ZV8ud3JpdGU7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitSZW5kZXJEZWxh
eUJ1ZmZlciogUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoCisgICAgY29uc3QgRWNob0NhbmNl
bGxlcjNDb25maWcmIGNvbmZpZywKKyAgICBzaXplX3QgbnVtX2JhbmRzKSB7CisgIHJldHVybiBu
ZXcgUmVuZGVyRGVsYXlCdWZmZXJJbXBsMihjb25maWcsIG51bV9iYW5kcyk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxh
eV9idWZmZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfYnVmZmVy
X3VuaXR0ZXN0LmNjCmluZGV4IGVlODk1OTcyNjE5ZjQwNDE2ZDljZmYyYmMyOTFhMDg5ODcxZjQx
YzYuLmQxNTMwYzYxNDJjNGU5MGIzZDIxOWFkYTdkZjNkZmY4MThiYjVhYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9idWZmZXJfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlcl91bml0dGVzdC5jYwpAQCAtMzgsNyArMzgs
NyBAQCBURVNUKFJlbmRlckRlbGF5QnVmZmVyLCBCdWZmZXJPdmVyZmxvdykgewogICBmb3IgKGF1
dG8gcmF0ZSA6IHs4MDAwLCAxNjAwMCwgMzIwMDAsIDQ4MDAwfSkgewogICAgIFNDT1BFRF9UUkFD
RShQcm9kdWNlRGVidWdUZXh0KHJhdGUpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVs
YXlCdWZmZXI+IGRlbGF5X2J1ZmZlcigKLSAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0
ZShjb25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOworICAgICAgICBSZW5kZXJEZWxheUJ1
ZmZlcjo6Q3JlYXRlMihjb25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOwogICAgIHN0ZDo6
dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4gYmxvY2tfdG9faW5zZXJ0KAogICAgICAgICBOdW1C
YW5kc0ZvclJhdGUocmF0ZSksIHN0ZDo6dmVjdG9yPGZsb2F0PihrQmxvY2tTaXplLCAwLmYpKTsK
ICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEwOyArK2spIHsKQEAgLTYyLDcgKzYyLDcgQEAg
VEVTVChSZW5kZXJEZWxheUJ1ZmZlciwgQnVmZmVyT3ZlcmZsb3cpIHsKIFRFU1QoUmVuZGVyRGVs
YXlCdWZmZXIsIEF2YWlsYWJsZUJsb2NrKSB7CiAgIGNvbnN0ZXhwciBzaXplX3Qga051bUJhbmRz
ID0gMTsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiBkZWxheV9idWZmZXIo
Ci0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCks
IGtOdW1CYW5kcykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoRWNob0NhbmNl
bGxlcjNDb25maWcoKSwga051bUJhbmRzKSk7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZs
b2F0Pj4gaW5wdXRfYmxvY2soCiAgICAgICBrTnVtQmFuZHMsIHN0ZDo6dmVjdG9yPGZsb2F0Pihr
QmxvY2tTaXplLCAxLmYpKTsKICAgRVhQRUNUX0VRKFJlbmRlckRlbGF5QnVmZmVyOjpCdWZmZXJp
bmdFdmVudDo6a05vbmUsCkBAIC03NCw3ICs3NCw3IEBAIFRFU1QoUmVuZGVyRGVsYXlCdWZmZXIs
IEF2YWlsYWJsZUJsb2NrKSB7CiBURVNUKFJlbmRlckRlbGF5QnVmZmVyLCBTZXREZWxheSkgewog
ICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJE
ZWxheUJ1ZmZlcj4gZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0
ZShjb25maWcsIDEpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywg
MSkpOwogICBBU1NFUlRfVFJVRShkZWxheV9idWZmZXItPkRlbGF5KCkpOwogICBkZWxheV9idWZm
ZXItPlJlc2V0KCk7CiAgIHNpemVfdCBpbml0aWFsX2ludGVybmFsX2RlbGF5ID0gY29uZmlnLmRl
bGF5Lm1pbl9lY2hvX3BhdGhfZGVsYXlfYmxvY2tzICsKQEAgLTkzLDcgKzkzLDcgQEAgVEVTVChS
ZW5kZXJEZWxheUJ1ZmZlciwgU2V0RGVsYXkpIHsKIC8vIHRlc3RzIG9uIHRlc3QgYm90cyBoYXMg
YmVlbiBmaXhlZC4KIFRFU1QoUmVuZGVyRGVsYXlCdWZmZXIsIERJU0FCTEVEX1dyb25nRGVsYXkp
IHsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiBkZWxheV9idWZmZXIoCi0g
ICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDMp
KTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKEVjaG9DYW5jZWxsZXIzQ29uZmln
KCksIDMpKTsKICAgRVhQRUNUX0RFQVRIKGRlbGF5X2J1ZmZlci0+U2V0RGVsYXkoMjEpLCAiIik7
CiB9CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBURVNUKFJlbmRlckRlbGF5QnVmZmVyLCBESVNBQkxF
RF9Xcm9uZ0RlbGF5KSB7CiBURVNUKFJlbmRlckRlbGF5QnVmZmVyLCBXcm9uZ051bWJlck9mQmFu
ZHMpIHsKICAgZm9yIChhdXRvIHJhdGUgOiB7MTYwMDAsIDMyMDAwLCA0ODAwMH0pIHsKICAgICBT
Q09QRURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChyYXRlKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlckRlbGF5QnVmZmVyPiBkZWxheV9idWZmZXIoUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0
ZSgKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IGRlbGF5X2J1ZmZlcihS
ZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMigKICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWco
KSwgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8
ZmxvYXQ+PiBibG9ja190b19pbnNlcnQoCiAgICAgICAgIE51bUJhbmRzRm9yUmF0ZShyYXRlIDwg
NDgwMDAgPyByYXRlICsgMTYwMDAgOiAxNjAwMCksCkBAIC0xMTUsNyArMTE1LDcgQEAgVEVTVChS
ZW5kZXJEZWxheUJ1ZmZlciwgV3JvbmdCbG9ja0xlbmd0aCkgewogICBmb3IgKGF1dG8gcmF0ZSA6
IHs4MDAwLCAxNjAwMCwgMzIwMDAsIDQ4MDAwfSkgewogICAgIFNDT1BFRF9UUkFDRShQcm9kdWNl
RGVidWdUZXh0KHJhdGUpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+
IGRlbGF5X2J1ZmZlcigKLSAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShFY2hvQ2Fu
Y2VsbGVyM0NvbmZpZygpLCAzKSk7CisgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUy
KEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIDMpKTsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rv
cjxmbG9hdD4+IGJsb2NrX3RvX2luc2VydCgKICAgICAgICAgTnVtQmFuZHNGb3JSYXRlKHJhdGUp
LCBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSAtIDEsIDAuZikpOwogICAgIEVYUEVDVF9E
RUFUSChkZWxheV9idWZmZXItPkluc2VydChibG9ja190b19pbnNlcnQpLCAiIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmNjCmluZGV4IGYzMzZjMzkyYjRlZTcwMzk2
MjM2NjgyMjFkODRjODA1ZmI2YTk1ODguLmM0NjY1ZWFhMjI0ZGVjMWVkZDQzMjViMjI4MjYxMDRk
NDE1N2E5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9s
bGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmNjCkBA
IC05LDEwICs5LDkgQEAKICAqLwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPG51bWVyaWM+
Ci0jaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9h
dWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCkBAIC0yMCw3ICsxOSw5IEBACiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZWNob19wYXRoX2RlbGF5X2VzdGltYXRv
ci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxh
eV9jb250cm9sbGVyX21ldHJpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9za2V3X2VzdGltYXRvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21p
Y29wcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKQEAgLTQ0LDYgKzQ1
LDEwIEBAIGJvb2wgVXNlT2Zmc2V0QmxvY2tzKCkgewogICByZXR1cm4gZmllbGRfdHJpYWw6Oklz
RW5hYmxlZCgiV2ViUlRDLUFlYzNVc2VPZmZzZXRCbG9ja3MiKTsKIH0KIAorYm9vbCBVc2VFYXJs
eURlbGF5RGV0ZWN0aW9uKCkgeworICByZXR1cm4gIWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldl
YlJUQy1BZWMzRWFybHlEZWxheURldGVjdGlvbktpbGxTd2l0Y2giKTsKK30KKwogY29uc3RleHBy
IGludCBrU2tld0hpc3RvcnlTaXplTG9nMiA9IDg7CiAKIGNsYXNzIFJlbmRlckRlbGF5Q29udHJv
bGxlckltcGwgZmluYWwgOiBwdWJsaWMgUmVuZGVyRGVsYXlDb250cm9sbGVyIHsKQEAgLTUyLDE3
ICs1NywxOSBAQCBjbGFzcyBSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsIGZpbmFsIDogcHVibGlj
IFJlbmRlckRlbGF5Q29udHJvbGxlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IG5vbl9jYXVzYWxfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1w
bGVfcmF0ZV9oeik7CiAgIH5SZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsKCkgb3ZlcnJpZGU7Ci0g
IHZvaWQgUmVzZXQoKSBvdmVycmlkZTsKKyAgdm9pZCBSZXNldChib29sIHJlc2V0X2RlbGF5X2Nv
bmZpZGVuY2UpIG92ZXJyaWRlOwogICB2b2lkIExvZ1JlbmRlckNhbGwoKSBvdmVycmlkZTsKICAg
YWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gR2V0RGVsYXkoCiAgICAgICBjb25zdCBEb3du
c2FtcGxlZFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKICAgICAgIHNpemVfdCByZW5kZXJf
ZGVsYXlfYnVmZmVyX2RlbGF5LAogICAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiYgZWNo
b19yZW1vdmVyX2RlbGF5LAogICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNhcHR1
cmUpIG92ZXJyaWRlOworICBib29sIEhhc0Nsb2NrZHJpZnQoKSBjb25zdCBvdmVycmlkZTsKIAog
IHByaXZhdGU6CiAgIHN0YXRpYyBpbnQgaW5zdGFuY2VfY291bnRfOwogICBzdGQ6OnVuaXF1ZV9w
dHI8QXBtRGF0YUR1bXBlcj4gZGF0YV9kdW1wZXJfOworICBjb25zdCBib29sIHVzZV9lYXJseV9k
ZWxheV9kZXRlY3Rpb25fOwogICBjb25zdCBpbnQgZGVsYXlfaGVhZHJvb21fYmxvY2tzXzsKICAg
Y29uc3QgaW50IGh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3NfOwogICBjb25zdCBpbnQgaHlzdGVy
ZXNpc19saW1pdF8yX2Jsb2Nrc187CkBAIC04MSw2ICs4OCw3IEBAIGNsYXNzIFJlbmRlckRlbGF5
Q29udHJvbGxlckltcGwgZmluYWwgOiBwdWJsaWMgUmVuZGVyRGVsYXlDb250cm9sbGVyIHsKICAg
c2l6ZV90IGNhcHR1cmVfY2FsbF9jb3VudGVyXyA9IDA7CiAgIGludCBkZWxheV9jaGFuZ2VfY291
bnRlcl8gPSAwOwogICBzaXplX3Qgc29mdF9yZXNldF9jb3VudGVyXyA9IDA7CisgIERlbGF5RXN0
aW1hdGU6OlF1YWxpdHkgbGFzdF9kZWxheV9lc3RpbWF0ZV9xdWFsaXR5XzsKICAgUlRDX0RJU0FM
TE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsKTsKIH07
CiAKQEAgLTEyOSw2ICsxMzcsNyBAQCBSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsOjpSZW5kZXJE
ZWxheUNvbnRyb2xsZXJJbXBsKAogICAgIGludCBzYW1wbGVfcmF0ZV9oeikKICAgICA6IGRhdGFf
ZHVtcGVyXygKICAgICAgICAgICBuZXcgQXBtRGF0YUR1bXBlcihydGM6OkF0b21pY09wczo6SW5j
cmVtZW50KCZpbnN0YW5jZV9jb3VudF8pKSksCisgICAgICB1c2VfZWFybHlfZGVsYXlfZGV0ZWN0
aW9uXyhVc2VFYXJseURlbGF5RGV0ZWN0aW9uKCkpLAogICAgICAgZGVsYXlfaGVhZHJvb21fYmxv
Y2tzXygKICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGNvbmZpZy5kZWxheS5kZWxheV9oZWFk
cm9vbV9ibG9ja3MpKSwKICAgICAgIGh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3NfKApAQCAtMTM5
LDcgKzE0OCw4IEBAIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGw6OlJlbmRlckRlbGF5Q29udHJv
bGxlckltcGwoCiAgICAgICB1c2Vfb2Zmc2V0X2Jsb2Nrc18oVXNlT2Zmc2V0QmxvY2tzKCkpLAog
ICAgICAgZGVsYXlfZXN0aW1hdG9yXyhkYXRhX2R1bXBlcl8uZ2V0KCksIGNvbmZpZyksCiAgICAg
ICBkZWxheV9idWZfKGtCbG9ja1NpemUgKiBub25fY2F1c2FsX29mZnNldCwgMC5mKSwKLSAgICAg
IHNrZXdfZXN0aW1hdG9yXyhrU2tld0hpc3RvcnlTaXplTG9nMikgeworICAgICAgc2tld19lc3Rp
bWF0b3JfKGtTa2V3SGlzdG9yeVNpemVMb2cyKSwKKyAgICAgIGxhc3RfZGVsYXlfZXN0aW1hdGVf
cXVhbGl0eV8oRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a0NvYXJzZSkgewogICBSVENfRENIRUNL
KFZhbGlkRnVsbEJhbmRSYXRlKHNhbXBsZV9yYXRlX2h6KSk7CiAgIGRlbGF5X2VzdGltYXRvcl8u
TG9nRGVsYXlFc3RpbWF0aW9uUHJvcGVydGllcyhzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5X2J1Zl8uc2l6ZSgpKTsK
QEAgLTE0NywxNiArMTU3LDE5IEBAIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGw6OlJlbmRlckRl
bGF5Q29udHJvbGxlckltcGwoCiAKIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGw6On5SZW5kZXJE
ZWxheUNvbnRyb2xsZXJJbXBsKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbmRlckRlbGF5Q29udHJv
bGxlckltcGw6OlJlc2V0KCkgewordm9pZCBSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsOjpSZXNl
dChib29sIHJlc2V0X2RlbGF5X2NvbmZpZGVuY2UpIHsKICAgZGVsYXlfID0gYWJzbDo6bnVsbG9w
dDsKICAgZGVsYXlfc2FtcGxlc18gPSBhYnNsOjpudWxsb3B0OwogICBza2V3XyA9IGFic2w6Om51
bGxvcHQ7CiAgIHByZXZpb3VzX29mZnNldF9ibG9ja3NfID0gMDsKICAgc3RkOjpmaWxsKGRlbGF5
X2J1Zl8uYmVnaW4oKSwgZGVsYXlfYnVmXy5lbmQoKSwgMC5mKTsKLSAgZGVsYXlfZXN0aW1hdG9y
Xy5SZXNldChmYWxzZSk7CisgIGRlbGF5X2VzdGltYXRvcl8uUmVzZXQocmVzZXRfZGVsYXlfY29u
ZmlkZW5jZSk7CiAgIHNrZXdfZXN0aW1hdG9yXy5SZXNldCgpOwogICBkZWxheV9jaGFuZ2VfY291
bnRlcl8gPSAwOwogICBzb2Z0X3Jlc2V0X2NvdW50ZXJfID0gMDsKKyAgaWYgKHJlc2V0X2RlbGF5
X2NvbmZpZGVuY2UpIHsKKyAgICBsYXN0X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlfID0gRGVsYXlF
c3RpbWF0ZTo6UXVhbGl0eTo6a0NvYXJzZTsKKyAgfQogfQogCiB2b2lkIFJlbmRlckRlbGF5Q29u
dHJvbGxlckltcGw6OkxvZ1JlbmRlckNhbGwoKSB7CkBAIC0xOTQsOSArMjA3LDYgQEAgYWJzbDo6
b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDo6R2V0RGVs
YXkoCiAgIGFic2w6Om9wdGlvbmFsPGludD4gc2tldyA9IHNrZXdfZXN0aW1hdG9yXy5HZXRTa2V3
RnJvbUNhcHR1cmUoKTsKIAogICBpZiAoZGVsYXlfc2FtcGxlcykgewotICAgIC8vIFRPRE8ocGVh
aCk6IFJlZmFjdG9yIHRoZSByZXN0IG9mIHRoZSBjb2RlIHRvIGFzc3VtZSBhIGtSZWZpbmVkIGVz
dGltYXRlCi0gICAgLy8gcXVhbGl0eS4KLSAgICBSVENfRENIRUNLKERlbGF5RXN0aW1hdGU6OlF1
YWxpdHk6OmtSZWZpbmVkID09IGRlbGF5X3NhbXBsZXMtPnF1YWxpdHkpOwogICAgIGlmICghZGVs
YXlfc2FtcGxlc18gfHwgZGVsYXlfc2FtcGxlcy0+ZGVsYXkgIT0gZGVsYXlfc2FtcGxlc18tPmRl
bGF5KSB7CiAgICAgICBkZWxheV9jaGFuZ2VfY291bnRlcl8gPSAwOwogICAgIH0KQEAgLTIzOSw3
ICsyNDksNyBAQCBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBSZW5kZXJEZWxheUNvbnRy
b2xsZXJJbXBsOjpHZXREZWxheSgKICAgICB9IGVsc2UgaWYgKHNvZnRfcmVzZXRfY291bnRlcl8g
PiAxMCAqIGtOdW1CbG9ja3NQZXJTZWNvbmQpIHsKICAgICAgIC8vIFNvZnQgcmVzZXQgdGhlIGRl
bGF5IGVzdGltYXRvciBpZiB0aGVyZSBpcyBhIHNpZ25pZmljYW50IG9mZnNldAogICAgICAgLy8g
ZGV0ZWN0ZWQuCi0gICAgICBkZWxheV9lc3RpbWF0b3JfLlJlc2V0KHRydWUpOworICAgICAgZGVs
YXlfZXN0aW1hdG9yXy5SZXNldChmYWxzZSk7CiAgICAgICBzb2Z0X3Jlc2V0X2NvdW50ZXJfID0g
MDsKICAgICB9CiAgIH0KQEAgLTI2NCwxNCArMjc0LDIwIEBAIGFic2w6Om9wdGlvbmFsPERlbGF5
RXN0aW1hdGU+IFJlbmRlckRlbGF5Q29udHJvbGxlckltcGw6OkdldERlbGF5KAogCiAgIGlmIChk
ZWxheV9zYW1wbGVzXykgewogICAgIC8vIENvbXB1dGUgdGhlIHJlbmRlciBkZWxheSBidWZmZXIg
ZGVsYXkuCi0gICAgZGVsYXlfID0gQ29tcHV0ZUJ1ZmZlckRlbGF5KAotICAgICAgICBkZWxheV8s
IGRlbGF5X2hlYWRyb29tX2Jsb2Nrc18sIGh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3NfLAotICAg
ICAgICBoeXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzXywgb2Zmc2V0X2Jsb2NrcywgKmRlbGF5X3Nh
bXBsZXNfKTsKKyAgICBjb25zdCBib29sIHVzZV9oeXN0ZXJlc2lzID0KKyAgICAgICAgbGFzdF9k
ZWxheV9lc3RpbWF0ZV9xdWFsaXR5XyA9PSBEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprUmVmaW5l
ZCAmJgorICAgICAgICBkZWxheV9zYW1wbGVzXy0+cXVhbGl0eSA9PSBEZWxheUVzdGltYXRlOjpR
dWFsaXR5OjprUmVmaW5lZDsKKyAgICBkZWxheV8gPSBDb21wdXRlQnVmZmVyRGVsYXkoZGVsYXlf
LCBkZWxheV9oZWFkcm9vbV9ibG9ja3NfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1c2VfaHlzdGVyZXNpcyA/IGh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3NfIDogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2h5c3RlcmVzaXMgPyBoeXN0ZXJlc2lzX2xp
bWl0XzJfYmxvY2tzXyA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl
dF9ibG9ja3MsICpkZWxheV9zYW1wbGVzXyk7CisgICAgbGFzdF9kZWxheV9lc3RpbWF0ZV9xdWFs
aXR5XyA9IGRlbGF5X3NhbXBsZXNfLT5xdWFsaXR5OwogICB9CiAKICAgbWV0cmljc18uVXBkYXRl
KGRlbGF5X3NhbXBsZXNfID8gYWJzbDo6b3B0aW9uYWw8c2l6ZV90PihkZWxheV9zYW1wbGVzXy0+
ZGVsYXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6Om51bGxvcHQs
Ci0gICAgICAgICAgICAgICAgICBkZWxheV8gPyBkZWxheV8tPmRlbGF5IDogMCwgc2tld19zaGlm
dCk7CisgICAgICAgICAgICAgICAgICBkZWxheV8gPyBkZWxheV8tPmRlbGF5IDogMCwgc2tld19z
aGlmdCwKKyAgICAgICAgICAgICAgICAgIGRlbGF5X2VzdGltYXRvcl8uQ2xvY2tkcmlmdCgpKTsK
IAogICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJf
ZGVsYXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXlfc2FtcGxlcyA/IGRlbGF5X3Nh
bXBsZXMtPmRlbGF5IDogMCk7CkBAIC0yODcsNiArMzAzLDEwIEBAIGFic2w6Om9wdGlvbmFsPERl
bGF5RXN0aW1hdGU+IFJlbmRlckRlbGF5Q29udHJvbGxlckltcGw6OkdldERlbGF5KAogICByZXR1
cm4gZGVsYXlfOwogfQogCitib29sIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGw6Okhhc0Nsb2Nr
ZHJpZnQoKSBjb25zdCB7CisgIHJldHVybiBkZWxheV9lc3RpbWF0b3JfLkNsb2NrZHJpZnQoKSAh
PSBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjprTm9uZTsKK30KKwogfSAgLy8gbmFtZXNwYWNl
CiAKIFJlbmRlckRlbGF5Q29udHJvbGxlciogUmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUo
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIuaAppbmRleCBkZGQ5NTQ4MmZj
Y2UxOGI4YmJhOTJkYTlmNDY5ODUyNWVhMWMwODk0Li5iNDZlZDg5MjUyN2Y3OTI4ODFlZjU0OGMz
YjIxOTY5OGUyY2ViOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlf
Y29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVy
LmgKQEAgLTI3LDEwICsyNywxMyBAQCBjbGFzcyBSZW5kZXJEZWxheUNvbnRyb2xsZXIgewogICBz
dGF0aWMgUmVuZGVyRGVsYXlDb250cm9sbGVyKiBDcmVhdGUoY29uc3QgRWNob0NhbmNlbGxlcjND
b25maWcmIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBub25fY2F1c2FsX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzYW1wbGVfcmF0ZV9oeik7CisgIHN0YXRpYyBSZW5kZXJEZWxheUNvbnRyb2xsZXIq
IENyZWF0ZTIoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlX3JhdGVfaHopOwogICB2aXJ0
dWFsIH5SZW5kZXJEZWxheUNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CiAKLSAgLy8gUmVzZXRzIHRo
ZSBkZWxheSBjb250cm9sbGVyLgotICB2aXJ0dWFsIHZvaWQgUmVzZXQoKSA9IDA7CisgIC8vIFJl
c2V0cyB0aGUgZGVsYXkgY29udHJvbGxlci4gSWYgdGhlIGRlbGF5IGNvbmZpZGVuY2UgaXMgcmVz
ZXQsIHRoZSByZXNldAorICAvLyBiZWhhdmlvciBpcyBhcyBpZiB0aGUgY2FsbCBpcyByZXN0YXJ0
ZWQuCisgIHZpcnR1YWwgdm9pZCBSZXNldChib29sIHJlc2V0X2RlbGF5X2NvbmZpZGVuY2UpID0g
MDsKIAogICAvLyBMb2dzIGEgcmVuZGVyIGNhbGwuCiAgIHZpcnR1YWwgdm9pZCBMb2dSZW5kZXJD
YWxsKCkgPSAwOwpAQCAtNDEsNiArNDQsOSBAQCBjbGFzcyBSZW5kZXJEZWxheUNvbnRyb2xsZXIg
ewogICAgICAgc2l6ZV90IHJlbmRlcl9kZWxheV9idWZmZXJfZGVsYXksCiAgICAgICBjb25zdCBh
YnNsOjpvcHRpb25hbDxpbnQ+JiBlY2hvX3JlbW92ZXJfZGVsYXksCiAgICAgICBydGM6OkFycmF5
Vmlldzxjb25zdCBmbG9hdD4gY2FwdHVyZSkgPSAwOworCisgIC8vIFJldHVybnMgdHJ1ZSBpZiBj
bG9ja2RyaWZ0IGhhcyBiZWVuIGRldGVjdGVkLgorICB2aXJ0dWFsIGJvb2wgSGFzQ2xvY2tkcmlm
dCgpIGNvbnN0ID0gMDsKIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyMi5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyMi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGRhZjhmMmFmNzFj
MmRkYWJiMzc0YWNhZGZlZGI3OTY5OThlNDI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXIyLmNjCkBAIC0wLDAgKzEsMjE4IEBACisvKgor
ICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9f
Y2FuY2VsbGVyM19jb25maWcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL2RlbGF5X2VzdGltYXRlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvZG93bnNhbXBsZWRfcmVuZGVyX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF9kZWxheV9lc3RpbWF0b3IuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlci5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9j
b250cm9sbGVyX21ldHJpY3MuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
bG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRf
dHJpYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK25hbWVzcGFjZSB7CisKK2Jvb2wgVXNl
RWFybHlEZWxheURldGVjdGlvbigpIHsKKyAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVk
KCJXZWJSVEMtQWVjM0Vhcmx5RGVsYXlEZXRlY3Rpb25LaWxsU3dpdGNoIik7Cit9CisKK2NsYXNz
IFJlbmRlckRlbGF5Q29udHJvbGxlckltcGwyIGZpbmFsIDogcHVibGljIFJlbmRlckRlbGF5Q29u
dHJvbGxlciB7CisgcHVibGljOgorICBSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsMihjb25zdCBF
Y2hvQ2FuY2VsbGVyM0NvbmZpZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc2FtcGxlX3JhdGVfaHopOworICB+UmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDIoKSBv
dmVycmlkZTsKKyAgdm9pZCBSZXNldChib29sIHJlc2V0X2RlbGF5X2NvbmZpZGVuY2UpIG92ZXJy
aWRlOworICB2b2lkIExvZ1JlbmRlckNhbGwoKSBvdmVycmlkZTsKKyAgYWJzbDo6b3B0aW9uYWw8
RGVsYXlFc3RpbWF0ZT4gR2V0RGVsYXkoCisgICAgICBjb25zdCBEb3duc2FtcGxlZFJlbmRlckJ1
ZmZlciYgcmVuZGVyX2J1ZmZlciwKKyAgICAgIHNpemVfdCByZW5kZXJfZGVsYXlfYnVmZmVyX2Rl
bGF5LAorICAgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiYgZWNob19yZW1vdmVyX2RlbGF5
LAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNhcHR1cmUpIG92ZXJyaWRlOwor
ICBib29sIEhhc0Nsb2NrZHJpZnQoKSBjb25zdCBvdmVycmlkZTsKKworIHByaXZhdGU6CisgIHN0
YXRpYyBpbnQgaW5zdGFuY2VfY291bnRfOworICBzdGQ6OnVuaXF1ZV9wdHI8QXBtRGF0YUR1bXBl
cj4gZGF0YV9kdW1wZXJfOworICBjb25zdCBib29sIHVzZV9lYXJseV9kZWxheV9kZXRlY3Rpb25f
OworICBjb25zdCBpbnQgZGVsYXlfaGVhZHJvb21fYmxvY2tzXzsKKyAgY29uc3QgaW50IGh5c3Rl
cmVzaXNfbGltaXRfMV9ibG9ja3NfOworICBjb25zdCBpbnQgaHlzdGVyZXNpc19saW1pdF8yX2Js
b2Nrc187CisgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IGRlbGF5XzsKKyAgRWNob1Bh
dGhEZWxheUVzdGltYXRvciBkZWxheV9lc3RpbWF0b3JfOworICBSZW5kZXJEZWxheUNvbnRyb2xs
ZXJNZXRyaWNzIG1ldHJpY3NfOworICBhYnNsOjpvcHRpb25hbDxEZWxheUVzdGltYXRlPiBkZWxh
eV9zYW1wbGVzXzsKKyAgc2l6ZV90IGNhcHR1cmVfY2FsbF9jb3VudGVyXyA9IDA7CisgIGludCBk
ZWxheV9jaGFuZ2VfY291bnRlcl8gPSAwOworICBEZWxheUVzdGltYXRlOjpRdWFsaXR5IGxhc3Rf
ZGVsYXlfZXN0aW1hdGVfcXVhbGl0eV87CisgIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJV
Q1RPUlMoUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDIpOworfTsKKworRGVsYXlFc3RpbWF0ZSBD
b21wdXRlQnVmZmVyRGVsYXkoCisgICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0
ZT4mIGN1cnJlbnRfZGVsYXksCisgICAgaW50IGRlbGF5X2hlYWRyb29tX2Jsb2NrcywKKyAgICBp
bnQgaHlzdGVyZXNpc19saW1pdF8xX2Jsb2NrcywKKyAgICBpbnQgaHlzdGVyZXNpc19saW1pdF8y
X2Jsb2NrcywKKyAgICBEZWxheUVzdGltYXRlIGVzdGltYXRlZF9kZWxheSkgeworICAvLyBUaGUg
YmVsb3cgZGl2aXNpb24gaXMgbm90IGV4YWN0IGFuZCB0aGUgdHJ1bmNhdGlvbiBpcyBpbnRlbmRl
ZC4KKyAgY29uc3QgaW50IGVjaG9fcGF0aF9kZWxheV9ibG9ja3MgPSBlc3RpbWF0ZWRfZGVsYXku
ZGVsYXkgPj4ga0Jsb2NrU2l6ZUxvZzI7CisKKyAgLy8gQ29tcHV0ZSB0aGUgYnVmZmVyIGRlbGF5
IGluY3JlYXNlIHJlcXVpcmVkIHRvIGFjaGlldmUgdGhlIGRlc2lyZWQgbGF0ZW5jeS4KKyAgc2l6
ZV90IG5ld19kZWxheV9ibG9ja3MgPQorICAgICAgc3RkOjptYXgoZWNob19wYXRoX2RlbGF5X2Js
b2NrcyAtIGRlbGF5X2hlYWRyb29tX2Jsb2NrcywgMCk7CisKKyAgLy8gQWRkIGh5c3RlcmVzaXMu
CisgIGlmIChjdXJyZW50X2RlbGF5KSB7CisgICAgc2l6ZV90IGN1cnJlbnRfZGVsYXlfYmxvY2tz
ID0gY3VycmVudF9kZWxheS0+ZGVsYXk7CisgICAgaWYgKG5ld19kZWxheV9ibG9ja3MgPiBjdXJy
ZW50X2RlbGF5X2Jsb2NrcykgeworICAgICAgaWYgKG5ld19kZWxheV9ibG9ja3MgPD0KKyAgICAg
ICAgICBjdXJyZW50X2RlbGF5X2Jsb2NrcyArIGh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3MpIHsK
KyAgICAgICAgbmV3X2RlbGF5X2Jsb2NrcyA9IGN1cnJlbnRfZGVsYXlfYmxvY2tzOworICAgICAg
fQorICAgIH0gZWxzZSBpZiAobmV3X2RlbGF5X2Jsb2NrcyA8IGN1cnJlbnRfZGVsYXlfYmxvY2tz
KSB7CisgICAgICBzaXplX3QgaHlzdGVyZXNpc19saW1pdCA9IHN0ZDo6bWF4KAorICAgICAgICAg
IHN0YXRpY19jYXN0PGludD4oY3VycmVudF9kZWxheV9ibG9ja3MpIC0gaHlzdGVyZXNpc19saW1p
dF8yX2Jsb2NrcywKKyAgICAgICAgICAwKTsKKyAgICAgIGlmIChuZXdfZGVsYXlfYmxvY2tzID49
IGh5c3RlcmVzaXNfbGltaXQpIHsKKyAgICAgICAgbmV3X2RlbGF5X2Jsb2NrcyA9IGN1cnJlbnRf
ZGVsYXlfYmxvY2tzOworICAgICAgfQorICAgIH0KKyAgfQorCisgIERlbGF5RXN0aW1hdGUgbmV3
X2RlbGF5ID0gZXN0aW1hdGVkX2RlbGF5OworICBuZXdfZGVsYXkuZGVsYXkgPSBuZXdfZGVsYXlf
YmxvY2tzOworICByZXR1cm4gbmV3X2RlbGF5OworfQorCitpbnQgUmVuZGVyRGVsYXlDb250cm9s
bGVySW1wbDI6Omluc3RhbmNlX2NvdW50XyA9IDA7CisKK1JlbmRlckRlbGF5Q29udHJvbGxlcklt
cGwyOjpSZW5kZXJEZWxheUNvbnRyb2xsZXJJbXBsMigKKyAgICBjb25zdCBFY2hvQ2FuY2VsbGVy
M0NvbmZpZyYgY29uZmlnLAorICAgIGludCBzYW1wbGVfcmF0ZV9oeikKKyAgICA6IGRhdGFfZHVt
cGVyXygKKyAgICAgICAgICBuZXcgQXBtRGF0YUR1bXBlcihydGM6OkF0b21pY09wczo6SW5jcmVt
ZW50KCZpbnN0YW5jZV9jb3VudF8pKSksCisgICAgICB1c2VfZWFybHlfZGVsYXlfZGV0ZWN0aW9u
XyhVc2VFYXJseURlbGF5RGV0ZWN0aW9uKCkpLAorICAgICAgZGVsYXlfaGVhZHJvb21fYmxvY2tz
XygKKyAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGNvbmZpZy5kZWxheS5kZWxheV9oZWFkcm9v
bV9ibG9ja3MpKSwKKyAgICAgIGh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3NfKAorICAgICAgICAg
IHN0YXRpY19jYXN0PGludD4oY29uZmlnLmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMV9ibG9ja3Mp
KSwKKyAgICAgIGh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3NfKAorICAgICAgICAgIHN0YXRpY19j
YXN0PGludD4oY29uZmlnLmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3MpKSwKKyAgICAg
IGRlbGF5X2VzdGltYXRvcl8oZGF0YV9kdW1wZXJfLmdldCgpLCBjb25maWcpLAorICAgICAgbGFz
dF9kZWxheV9lc3RpbWF0ZV9xdWFsaXR5XyhEZWxheUVzdGltYXRlOjpRdWFsaXR5OjprQ29hcnNl
KSB7CisgIFJUQ19EQ0hFQ0soVmFsaWRGdWxsQmFuZFJhdGUoc2FtcGxlX3JhdGVfaHopKTsKKyAg
ZGVsYXlfZXN0aW1hdG9yXy5Mb2dEZWxheUVzdGltYXRpb25Qcm9wZXJ0aWVzKHNhbXBsZV9yYXRl
X2h6LCAwKTsKK30KKworUmVuZGVyRGVsYXlDb250cm9sbGVySW1wbDI6On5SZW5kZXJEZWxheUNv
bnRyb2xsZXJJbXBsMigpID0gZGVmYXVsdDsKKwordm9pZCBSZW5kZXJEZWxheUNvbnRyb2xsZXJJ
bXBsMjo6UmVzZXQoYm9vbCByZXNldF9kZWxheV9jb25maWRlbmNlKSB7CisgIGRlbGF5XyA9IGFi
c2w6Om51bGxvcHQ7CisgIGRlbGF5X3NhbXBsZXNfID0gYWJzbDo6bnVsbG9wdDsKKyAgZGVsYXlf
ZXN0aW1hdG9yXy5SZXNldChyZXNldF9kZWxheV9jb25maWRlbmNlKTsKKyAgZGVsYXlfY2hhbmdl
X2NvdW50ZXJfID0gMDsKKyAgaWYgKHJlc2V0X2RlbGF5X2NvbmZpZGVuY2UpIHsKKyAgICBsYXN0
X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlfID0gRGVsYXlFc3RpbWF0ZTo6UXVhbGl0eTo6a0NvYXJz
ZTsKKyAgfQorfQorCit2b2lkIFJlbmRlckRlbGF5Q29udHJvbGxlckltcGwyOjpMb2dSZW5kZXJD
YWxsKCkge30KKworYWJzbDo6b3B0aW9uYWw8RGVsYXlFc3RpbWF0ZT4gUmVuZGVyRGVsYXlDb250
cm9sbGVySW1wbDI6OkdldERlbGF5KAorICAgIGNvbnN0IERvd25zYW1wbGVkUmVuZGVyQnVmZmVy
JiByZW5kZXJfYnVmZmVyLAorICAgIHNpemVfdCByZW5kZXJfZGVsYXlfYnVmZmVyX2RlbGF5LAor
ICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPGludD4mIGVjaG9fcmVtb3Zlcl9kZWxheSwKKyAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY2FwdHVyZSkgeworICBSVENfRENIRUNLX0VRKGtC
bG9ja1NpemUsIGNhcHR1cmUuc2l6ZSgpKTsKKyAgKytjYXB0dXJlX2NhbGxfY291bnRlcl87CisK
KyAgYXV0byBkZWxheV9zYW1wbGVzID0gZGVsYXlfZXN0aW1hdG9yXy5Fc3RpbWF0ZURlbGF5KHJl
bmRlcl9idWZmZXIsIGNhcHR1cmUpOworCisgIC8vIE92ZXJydWxlIHRoZSBkZWxheSBlc3RpbWF0
b3IgZGVsYXkgaWYgdGhlIGVjaG8gcmVtb3ZlciByZXBvcnRzIGEgZGVsYXkuCisgIGlmIChlY2hv
X3JlbW92ZXJfZGVsYXkpIHsKKyAgICBpbnQgdG90YWxfZWNob19yZW1vdmVyX2RlbGF5X3NhbXBs
ZXMgPQorICAgICAgICAocmVuZGVyX2RlbGF5X2J1ZmZlcl9kZWxheSArICplY2hvX3JlbW92ZXJf
ZGVsYXkpICoga0Jsb2NrU2l6ZTsKKyAgICBkZWxheV9zYW1wbGVzID0gRGVsYXlFc3RpbWF0ZShE
ZWxheUVzdGltYXRlOjpRdWFsaXR5OjprUmVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b3RhbF9lY2hvX3JlbW92ZXJfZGVsYXlfc2FtcGxlcyk7CisgIH0KKworICBp
ZiAoZGVsYXlfc2FtcGxlcykgeworICAgIGlmICghZGVsYXlfc2FtcGxlc18gfHwgZGVsYXlfc2Ft
cGxlcy0+ZGVsYXkgIT0gZGVsYXlfc2FtcGxlc18tPmRlbGF5KSB7CisgICAgICBkZWxheV9jaGFu
Z2VfY291bnRlcl8gPSAwOworICAgIH0KKyAgICBpZiAoZGVsYXlfc2FtcGxlc18pIHsKKyAgICAg
IGRlbGF5X3NhbXBsZXNfLT5ibG9ja3Nfc2luY2VfbGFzdF9jaGFuZ2UgPQorICAgICAgICAgIGRl
bGF5X3NhbXBsZXNfLT5kZWxheSA9PSBkZWxheV9zYW1wbGVzLT5kZWxheQorICAgICAgICAgICAg
ICA/IGRlbGF5X3NhbXBsZXNfLT5ibG9ja3Nfc2luY2VfbGFzdF9jaGFuZ2UgKyAxCisgICAgICAg
ICAgICAgIDogMDsKKyAgICAgIGRlbGF5X3NhbXBsZXNfLT5ibG9ja3Nfc2luY2VfbGFzdF91cGRh
dGUgPSAwOworICAgICAgZGVsYXlfc2FtcGxlc18tPmRlbGF5ID0gZGVsYXlfc2FtcGxlcy0+ZGVs
YXk7CisgICAgICBkZWxheV9zYW1wbGVzXy0+cXVhbGl0eSA9IGRlbGF5X3NhbXBsZXMtPnF1YWxp
dHk7CisgICAgfSBlbHNlIHsKKyAgICAgIGRlbGF5X3NhbXBsZXNfID0gZGVsYXlfc2FtcGxlczsK
KyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKGRlbGF5X3NhbXBsZXNfKSB7CisgICAgICArK2Rl
bGF5X3NhbXBsZXNfLT5ibG9ja3Nfc2luY2VfbGFzdF9jaGFuZ2U7CisgICAgICArK2RlbGF5X3Nh
bXBsZXNfLT5ibG9ja3Nfc2luY2VfbGFzdF91cGRhdGU7CisgICAgfQorICB9CisKKyAgaWYgKGRl
bGF5X2NoYW5nZV9jb3VudGVyXyA8IDIgKiBrTnVtQmxvY2tzUGVyU2Vjb25kKSB7CisgICAgKytk
ZWxheV9jaGFuZ2VfY291bnRlcl87CisgIH0KKworICBpZiAoZGVsYXlfc2FtcGxlc18pIHsKKyAg
ICAvLyBDb21wdXRlIHRoZSByZW5kZXIgZGVsYXkgYnVmZmVyIGRlbGF5LgorICAgIGNvbnN0IGJv
b2wgdXNlX2h5c3RlcmVzaXMgPQorICAgICAgICBsYXN0X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlf
ID09IERlbGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVkICYmCisgICAgICAgIGRlbGF5X3Nh
bXBsZXNfLT5xdWFsaXR5ID09IERlbGF5RXN0aW1hdGU6OlF1YWxpdHk6OmtSZWZpbmVkOworICAg
IGRlbGF5XyA9IENvbXB1dGVCdWZmZXJEZWxheShkZWxheV8sIGRlbGF5X2hlYWRyb29tX2Jsb2Nr
c18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9oeXN0ZXJlc2lzID8gaHlz
dGVyZXNpc19saW1pdF8xX2Jsb2Nrc18gOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c2VfaHlzdGVyZXNpcyA/IGh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3NfIDogMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlbGF5X3NhbXBsZXNfKTsKKyAgICBsYXN0
X2RlbGF5X2VzdGltYXRlX3F1YWxpdHlfID0gZGVsYXlfc2FtcGxlc18tPnF1YWxpdHk7CisgIH0K
KworICBtZXRyaWNzXy5VcGRhdGUoZGVsYXlfc2FtcGxlc18gPyBhYnNsOjpvcHRpb25hbDxzaXpl
X3Q+KGRlbGF5X3NhbXBsZXNfLT5kZWxheSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogYWJzbDo6bnVsbG9wdCwKKyAgICAgICAgICAgICAgICAgIGRlbGF5XyA/IGRlbGF5Xy0+
ZGVsYXkgOiAwLCAwLCBkZWxheV9lc3RpbWF0b3JfLkNsb2NrZHJpZnQoKSk7CisKKyAgZGF0YV9k
dW1wZXJfLT5EdW1wUmF3KCJhZWMzX3JlbmRlcl9kZWxheV9jb250cm9sbGVyX2RlbGF5IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGF5X3NhbXBsZXMgPyBkZWxheV9zYW1wbGVzLT5kZWxh
eSA6IDApOworICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoImFlYzNfcmVuZGVyX2RlbGF5X2NvbnRy
b2xsZXJfYnVmZmVyX2RlbGF5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5XyA/IGRl
bGF5Xy0+ZGVsYXkgOiAwKTsKKworICByZXR1cm4gZGVsYXlfOworfQorCitib29sIFJlbmRlckRl
bGF5Q29udHJvbGxlckltcGwyOjpIYXNDbG9ja2RyaWZ0KCkgY29uc3QgeworICByZXR1cm4gZGVs
YXlfZXN0aW1hdG9yXy5DbG9ja2RyaWZ0KCkgIT0gQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbDo6
a05vbmU7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitSZW5kZXJEZWxheUNvbnRyb2xsZXIqIFJl
bmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlMigKKyAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0Nv
bmZpZyYgY29uZmlnLAorICAgIGludCBzYW1wbGVfcmF0ZV9oeikgeworICByZXR1cm4gbmV3IFJl
bmRlckRlbGF5Q29udHJvbGxlckltcGwyKGNvbmZpZywgc2FtcGxlX3JhdGVfaHopOworfQorCit9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJf
ZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5
X2NvbnRyb2xsZXJfbWV0cmljcy5jYwppbmRleCAwOWRiMzM5NjgzNDBlMTc1NjcwNTM3NjQzMzdj
YjlmZTI0YzVkNjQ2Li41ODJlMDMzNDgyOTdlYzM5NjU2Zjc2OTUzYTJiNGYzNWU2YWU4MDM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNz
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3Mu
Y2MKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJp
Y3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC00NSw3ICs0Niw4IEBAIFJlbmRlckRlbGF5
Q29udHJvbGxlck1ldHJpY3M6OlJlbmRlckRlbGF5Q29udHJvbGxlck1ldHJpY3MoKSA9IGRlZmF1
bHQ7CiB2b2lkIFJlbmRlckRlbGF5Q29udHJvbGxlck1ldHJpY3M6OlVwZGF0ZSgKICAgICBhYnNs
OjpvcHRpb25hbDxzaXplX3Q+IGRlbGF5X3NhbXBsZXMsCiAgICAgc2l6ZV90IGJ1ZmZlcl9kZWxh
eV9ibG9ja3MsCi0gICAgYWJzbDo6b3B0aW9uYWw8aW50PiBza2V3X3NoaWZ0X2Jsb2Nrcykgewor
ICAgIGFic2w6Om9wdGlvbmFsPGludD4gc2tld19zaGlmdF9ibG9ja3MsCisgICAgQ2xvY2tkcmlm
dERldGVjdG9yOjpMZXZlbCBjbG9ja2RyaWZ0KSB7CiAgICsrY2FsbF9jb3VudGVyXzsKIAogICBp
ZiAoIWluaXRpYWxfdXBkYXRlKSB7CkBAIC0xMTQsNiArMTE2LDEwIEBAIHZvaWQgUmVuZGVyRGVs
YXlDb250cm9sbGVyTWV0cmljczo6VXBkYXRlKAogICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGRl
bGF5X2NoYW5nZXMpLAogICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KERlbGF5Q2hhbmdlc0NhdGVn
b3J5OjprTnVtQ2F0ZWdvcmllcykpOwogCisgICAgUlRDX0hJU1RPR1JBTV9FTlVNRVJBVElPTigK
KyAgICAgICAgIldlYlJUQy5BdWRpby5FY2hvQ2FuY2VsbGVyLkNsb2NrZHJpZnQiLCBzdGF0aWNf
Y2FzdDxpbnQ+KGNsb2NrZHJpZnQpLAorICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KENsb2NrZHJp
ZnREZXRlY3Rvcjo6TGV2ZWw6OmtOdW1DYXRlZ29yaWVzKSk7CisKICAgICBtZXRyaWNzX3JlcG9y
dGVkXyA9IHRydWU7CiAgICAgY2FsbF9jb3VudGVyXyA9IDA7CiAgICAgUmVzZXRNZXRyaWNzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRy
aWNzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzLmgK
aW5kZXggMWNmZTg5OWI0ODg1Y2IzMDRiMjdhZmY1OTcxZWNhOTYyNzA1N2UyZi4uMjJjYzIwMmU3
M2E1MmQzMTZiMTI4ZWE0ODJiZDZkZGRjM2ZiMDA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvcmVuZGVyX2RlbGF5X2NvbnRyb2xsZXJfbWV0cmljcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JlbmRlcl9kZWxheV9jb250cm9sbGVyX21ldHJpY3MuaApAQCAtMTEsNyArMTEsMTAgQEAKICNp
Zm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfUkVOREVSX0RFTEFZX0NPTlRST0xM
RVJfTUVUUklDU19IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRU5E
RVJfREVMQVlfQ09OVFJPTExFUl9NRVRSSUNTX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwog
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9yLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTI0LDcgKzI3
LDggQEAgY2xhc3MgUmVuZGVyRGVsYXlDb250cm9sbGVyTWV0cmljcyB7CiAgIC8vIFVwZGF0ZXMg
dGhlIG1ldHJpYyB3aXRoIG5ldyBkYXRhLgogICB2b2lkIFVwZGF0ZShhYnNsOjpvcHRpb25hbDxz
aXplX3Q+IGRlbGF5X3NhbXBsZXMsCiAgICAgICAgICAgICAgIHNpemVfdCBidWZmZXJfZGVsYXlf
YmxvY2tzLAotICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IHNrZXdfc2hpZnRfYmxv
Y2tzKTsKKyAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBza2V3X3NoaWZ0X2Jsb2Nr
cywKKyAgICAgICAgICAgICAgQ2xvY2tkcmlmdERldGVjdG9yOjpMZXZlbCBjbG9ja2RyaWZ0KTsK
IAogICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIG1ldHJpY3MgaGF2ZSBqdXN0IGJlZW4gcmVwb3J0
ZWQsIG90aGVyd2lzZSBmYWxzZS4KICAgYm9vbCBNZXRyaWNzUmVwb3J0ZWQoKSB7IHJldHVybiBt
ZXRyaWNzX3JlcG9ydGVkXzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2Rl
bGF5X2NvbnRyb2xsZXJfbWV0cmljc191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRl
cl9kZWxheV9jb250cm9sbGVyX21ldHJpY3NfdW5pdHRlc3QuY2MKaW5kZXggZTg2N2RlNGRmNDI4
MjgwZGRjNmMxZDRmZWU0OTA0MGIxMzAwMWQwOC4uMjE2YjBlMjIwZDRiMjY1Nzc3YmQzNGJjYTky
MGZkOTU2YmNiYjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2Nv
bnRyb2xsZXJfbWV0cmljc191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJf
ZGVsYXlfY29udHJvbGxlcl9tZXRyaWNzX3VuaXR0ZXN0LmNjCkBAIC0yMiwxMCArMjIsMTIgQEAg
VEVTVChSZW5kZXJEZWxheUNvbnRyb2xsZXJNZXRyaWNzLCBOb3JtYWxVc2FnZSkgewogCiAgIGZv
ciAoaW50IGogPSAwOyBqIDwgMzsgKytqKSB7CiAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBrTWV0
cmljc1JlcG9ydGluZ0ludGVydmFsQmxvY2tzIC0gMTsgKytrKSB7Ci0gICAgICBtZXRyaWNzLlVw
ZGF0ZShhYnNsOjpudWxsb3B0LCAwLCBhYnNsOjpudWxsb3B0KTsKKyAgICAgIG1ldHJpY3MuVXBk
YXRlKGFic2w6Om51bGxvcHQsIDAsIGFic2w6Om51bGxvcHQsCisgICAgICAgICAgICAgICAgICAg
ICBDbG9ja2RyaWZ0RGV0ZWN0b3I6OkxldmVsOjprTm9uZSk7CiAgICAgICBFWFBFQ1RfRkFMU0Uo
bWV0cmljcy5NZXRyaWNzUmVwb3J0ZWQoKSk7CiAgICAgfQotICAgIG1ldHJpY3MuVXBkYXRlKGFi
c2w6Om51bGxvcHQsIDAsIGFic2w6Om51bGxvcHQpOworICAgIG1ldHJpY3MuVXBkYXRlKGFic2w6
Om51bGxvcHQsIDAsIGFic2w6Om51bGxvcHQsCisgICAgICAgICAgICAgICAgICAgQ2xvY2tkcmlm
dERldGVjdG9yOjpMZXZlbDo6a05vbmUpOwogICAgIEVYUEVDVF9UUlVFKG1ldHJpY3MuTWV0cmlj
c1JlcG9ydGVkKCkpOwogICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJf
ZGVsYXlfY29udHJvbGxlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxh
eV9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCmluZGV4IDkzYzY0OTk4ZTliZDQwODMzNTg0ZDkzN2Yy
NmRiMTEyZWZiYWU1MDcuLmU5ZjAyZDMyNGMxM2QzNGVkNGRjMmE0NDRlMDhhZTMzYmM3MGQ2NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9kZWxheV9jb250cm9sbGVyX3VuaXR0
ZXN0LmNjCkBAIC01NywxMCArNTcsOSBAQCBURVNUKFJlbmRlckRlbGF5Q29udHJvbGxlciwgTm9S
ZW5kZXJTaWduYWwpIHsKICAgICAgIGZvciAoYXV0byByYXRlIDogezgwMDAsIDE2MDAwLCAzMjAw
MCwgNDgwMDB9KSB7CiAgICAgICAgIFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUp
KTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiBkZWxheV9idWZm
ZXIoCi0gICAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFu
ZHNGb3JSYXRlKHJhdGUpKSk7CisgICAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRl
Mihjb25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPiBkZWxheV9jb250cm9sbGVyKAotICAgICAgICAgICAg
UmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUoCi0gICAgICAgICAgICAgICAgY29uZmlnLCBS
ZW5kZXJEZWxheUJ1ZmZlcjo6RGVsYXlFc3RpbWF0b3JPZmZzZXQoY29uZmlnKSwgcmF0ZSkpOwor
ICAgICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUyKGNvbmZpZywgcmF0ZSkp
OwogICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IDEwMDsgKytrKSB7CiAgICAgICAgICAg
YXV0byBkZWxheSA9IGRlbGF5X2NvbnRyb2xsZXItPkdldERlbGF5KAogICAgICAgICAgICAgICBk
ZWxheV9idWZmZXItPkdldERvd25zYW1wbGVkUmVuZGVyQnVmZmVyKCksIGRlbGF5X2J1ZmZlci0+
RGVsYXkoKSwKQEAgLTg3LDExICs4Niw5IEBAIFRFU1QoUmVuZGVyRGVsYXlDb250cm9sbGVyLCBC
YXNpY0FwaUNhbGxzKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4g
cmVuZGVyX2Jsb2NrKAogICAgICAgICAgICAgTnVtQmFuZHNGb3JSYXRlKHJhdGUpLCBzdGQ6OnZl
Y3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMC5mKSk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgICAgICAgIFJlbmRl
ckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0ZSkpKTsKKyAg
ICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JS
YXRlKHJhdGUpKSk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xs
ZXI+IGRlbGF5X2NvbnRyb2xsZXIoCi0gICAgICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6
OkNyZWF0ZSgKLSAgICAgICAgICAgICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLAotICAgICAg
ICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpEZWxheUVzdGltYXRvck9mZnNldChjb25maWcp
LCByYXRlKSk7CisgICAgICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZTIoRWNo
b0NhbmNlbGxlcjNDb25maWcoKSwgcmF0ZSkpOwogICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsg
ayA8IDEwOyArK2spIHsKICAgICAgICAgICByZW5kZXJfZGVsYXlfYnVmZmVyLT5JbnNlcnQocmVu
ZGVyX2Jsb2NrKTsKICAgICAgICAgICByZW5kZXJfZGVsYXlfYnVmZmVyLT5QcmVwYXJlQ2FwdHVy
ZVByb2Nlc3NpbmcoKTsKQEAgLTEyOCwxMSArMTI1LDkgQEAgVEVTVChSZW5kZXJEZWxheUNvbnRy
b2xsZXIsIEFsaWdubWVudCkgewogICAgICAgICAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1h
dGU+IGRlbGF5X2Jsb2NrczsKICAgICAgICAgICBTQ09QRURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4
dChyYXRlLCBkZWxheV9zYW1wbGVzKSk7CiAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
ckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgICAgICAgICBSZW5kZXJE
ZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CisgICAg
ICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JS
YXRlKHJhdGUpKSk7CiAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJv
bGxlcj4gZGVsYXlfY29udHJvbGxlcigKLSAgICAgICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9s
bGVyOjpDcmVhdGUoCi0gICAgICAgICAgICAgICAgICBjb25maWcsIFJlbmRlckRlbGF5QnVmZmVy
OjpEZWxheUVzdGltYXRvck9mZnNldChjb25maWcpLAotICAgICAgICAgICAgICAgICAgcmF0ZSkp
OworICAgICAgICAgICAgICBSZW5kZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZTIoY29uZmlnLCBy
YXRlKSk7CiAgICAgICAgICAgRGVsYXlCdWZmZXI8ZmxvYXQ+IHNpZ25hbF9kZWxheV9idWZmZXIo
ZGVsYXlfc2FtcGxlcyk7CiAgICAgICAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAoNDAwICsg
ZGVsYXlfc2FtcGxlcyAvIGtCbG9ja1NpemUpOyArK2spIHsKICAgICAgICAgICAgIFJhbmRvbWl6
ZVNhbXBsZVZlY3RvcigmcmFuZG9tX2dlbmVyYXRvciwgcmVuZGVyX2Jsb2NrWzBdKTsKQEAgLTE3
OSwxMSArMTc0LDkgQEAgVEVTVChSZW5kZXJEZWxheUNvbnRyb2xsZXIsIE5vbkNhdXNhbEFsaWdu
bWVudCkgewogICAgICAgICAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IGRlbGF5X2Js
b2NrczsKICAgICAgICAgICBTQ09QRURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChyYXRlLCAtZGVs
YXlfc2FtcGxlcykpOwogICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZl
cj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6
OkNyZWF0ZShjb25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOworICAgICAgICAgICAgICBS
ZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkp
OwogICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUNvbnRyb2xsZXI+IGRlbGF5
X2NvbnRyb2xsZXIoCi0gICAgICAgICAgICAgIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRl
KAotICAgICAgICAgICAgICAgICAgRWNob0NhbmNlbGxlcjNDb25maWcoKSwKLSAgICAgICAgICAg
ICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpEZWxheUVzdGltYXRvck9mZnNldChjb25maWcpLCBy
YXRlKSk7CisgICAgICAgICAgICAgIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlMihFY2hv
Q2FuY2VsbGVyM0NvbmZpZygpLCByYXRlKSk7CiAgICAgICAgICAgRGVsYXlCdWZmZXI8ZmxvYXQ+
IHNpZ25hbF9kZWxheV9idWZmZXIoLWRlbGF5X3NhbXBsZXMpOwogICAgICAgICAgIGZvciAoaW50
IGsgPSAwOwogICAgICAgICAgICAgICAgayA8ICg0MDAgLSBkZWxheV9zYW1wbGVzIC8gc3RhdGlj
X2Nhc3Q8aW50PihrQmxvY2tTaXplKSk7ICsraykgewpAQCAtMjIzLDExICsyMTYsOSBAQCBURVNU
KFJlbmRlckRlbGF5Q29udHJvbGxlciwgQWxpZ25tZW50V2l0aEppdHRlcikgewogICAgICAgICAg
IGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+IGRlbGF5X2Jsb2NrczsKICAgICAgICAgICBT
Q09QRURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChyYXRlLCBkZWxheV9zYW1wbGVzKSk7CiAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVm
ZmVyKAotICAgICAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVt
QmFuZHNGb3JSYXRlKHJhdGUpKSk7CisgICAgICAgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpD
cmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckRlbGF5Q29udHJvbGxlcj4gZGVsYXlfY29udHJvbGxlcigKLSAgICAg
ICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICBjb25maWcsIFJlbmRlckRlbGF5QnVmZmVyOjpEZWxheUVzdGltYXRvck9mZnNldChjb25maWcp
LAotICAgICAgICAgICAgICAgICAgcmF0ZSkpOworICAgICAgICAgICAgICBSZW5kZXJEZWxheUNv
bnRyb2xsZXI6OkNyZWF0ZTIoY29uZmlnLCByYXRlKSk7CiAgICAgICAgICAgRGVsYXlCdWZmZXI8
ZmxvYXQ+IHNpZ25hbF9kZWxheV9idWZmZXIoZGVsYXlfc2FtcGxlcyk7CiAgICAgICAgICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCAoMTAwMCArIGRlbGF5X3NhbXBsZXMgLyBrQmxvY2tTaXplKSAv
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kZWxheS5h
cGlfY2FsbF9qaXR0ZXJfYmxvY2tzICsKQEAgLTI4MCwxMSArMjcxLDEwIEBAIFRFU1QoUmVuZGVy
RGVsYXlDb250cm9sbGVyLCBJbml0aWFsSGVhZHJvb20pIHsKICAgICAgIGZvciAoYXV0byByYXRl
IDogezgwMDAsIDE2MDAwLCAzMjAwMCwgNDgwMDB9KSB7CiAgICAgICAgIFNDT1BFRF9UUkFDRShQ
cm9kdWNlRGVidWdUZXh0KHJhdGUpKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRl
bGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgICAgICAgUmVuZGVyRGVsYXlC
dWZmZXI6OkNyZWF0ZShjb25maWcsIE51bUJhbmRzRm9yUmF0ZShyYXRlKSkpOworICAgICAgICAg
ICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCBOdW1CYW5kc0ZvclJhdGUocmF0
ZSkpKTsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPiBk
ZWxheV9jb250cm9sbGVyKAotICAgICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVh
dGUoCi0gICAgICAgICAgICAgICAgY29uZmlnLCBSZW5kZXJEZWxheUJ1ZmZlcjo6RGVsYXlFc3Rp
bWF0b3JPZmZzZXQoY29uZmlnKSwgcmF0ZSkpOworICAgICAgICAgICAgUmVuZGVyRGVsYXlDb250
cm9sbGVyOjpDcmVhdGUyKGNvbmZpZywgcmF0ZSkpOwogICAgICAgfQogICAgIH0KICAgfQpAQCAt
MzAwLDEyICsyOTAsMTAgQEAgVEVTVChSZW5kZXJEZWxheUNvbnRyb2xsZXIsIFdyb25nQ2FwdHVy
ZVNpemUpIHsKICAgZm9yIChhdXRvIHJhdGUgOiB7ODAwMCwgMTYwMDAsIDMyMDAwLCA0ODAwMH0p
IHsKICAgICBTQ09QRURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChyYXRlKSk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAg
ICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUp
KSk7CisgICAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNG
b3JSYXRlKHJhdGUpKSk7CiAgICAgRVhQRUNUX0RFQVRIKAogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPigKLSAgICAgICAgICAgIFJlbmRlckRlbGF5Q29udHJv
bGxlcjo6Q3JlYXRlKAotICAgICAgICAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksCi0g
ICAgICAgICAgICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkRlbGF5RXN0aW1hdG9yT2Zmc2V0KGNv
bmZpZyksIHJhdGUpKQorICAgICAgICAgICAgUmVuZGVyRGVsYXlDb250cm9sbGVyOjpDcmVhdGUy
KEVjaG9DYW5jZWxsZXIzQ29uZmlnKCksIHJhdGUpKQogICAgICAgICAgICAgLT5HZXREZWxheShy
ZW5kZXJfZGVsYXlfYnVmZmVyLT5HZXREb3duc2FtcGxlZFJlbmRlckJ1ZmZlcigpLAogICAgICAg
ICAgICAgICAgICAgICAgICByZW5kZXJfZGVsYXlfYnVmZmVyLT5EZWxheSgpLCBlY2hvX3JlbW92
ZXJfZGVsYXksIGJsb2NrKSwKICAgICAgICAgIiIpOwpAQCAtMzIwLDExICszMDgsMTAgQEAgVEVT
VChSZW5kZXJEZWxheUNvbnRyb2xsZXIsIERJU0FCTEVEX1dyb25nU2FtcGxlUmF0ZSkgewogICAg
IFNDT1BFRF9UUkFDRShQcm9kdWNlRGVidWdUZXh0KHJhdGUpKTsKICAgICBFY2hvQ2FuY2VsbGVy
M0NvbmZpZyBjb25maWc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiBy
ZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNv
bmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CisgICAgICAgIFJlbmRlckRlbGF5QnVmZmVy
OjpDcmVhdGUyKGNvbmZpZywgTnVtQmFuZHNGb3JSYXRlKHJhdGUpKSk7CiAgICAgRVhQRUNUX0RF
QVRIKAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlDb250cm9sbGVyPihSZW5k
ZXJEZWxheUNvbnRyb2xsZXI6OkNyZWF0ZSgKLSAgICAgICAgICAgIEVjaG9DYW5jZWxsZXIzQ29u
ZmlnKCksCi0gICAgICAgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6RGVsYXlFc3RpbWF0b3JPZmZz
ZXQoY29uZmlnKSwgcmF0ZSkpLAorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlD
b250cm9sbGVyPigKKyAgICAgICAgICAgIFJlbmRlckRlbGF5Q29udHJvbGxlcjo6Q3JlYXRlMihF
Y2hvQ2FuY2VsbGVyM0NvbmZpZygpLCByYXRlKSksCiAgICAgICAgICIiKTsKICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3JldmVyYl9tb2RlbC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3JlbmRlcl9yZXZlcmJfbW9kZWwuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFkNTRjMGNjMzQ1ZjY1
ZDU2ZGYyZTdmMDRmYzM5OWRmYzU2YzMyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JlbmRlcl9yZXZlcmJfbW9kZWwuY2MKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5k
ZXJfcmV2ZXJiX21vZGVsLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKKyNpbmNsdWRlICJh
cGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3Bh
Y2Ugd2VicnRjIHsKKworUmVuZGVyUmV2ZXJiTW9kZWw6OlJlbmRlclJldmVyYk1vZGVsKCkgewor
ICBSZXNldCgpOworfQorCitSZW5kZXJSZXZlcmJNb2RlbDo6flJlbmRlclJldmVyYk1vZGVsKCkg
PSBkZWZhdWx0OworCit2b2lkIFJlbmRlclJldmVyYk1vZGVsOjpSZXNldCgpIHsKKyAgcmVuZGVy
X3JldmVyYl8uUmVzZXQoKTsKK30KKwordm9pZCBSZW5kZXJSZXZlcmJNb2RlbDo6QXBwbHkoY29u
c3QgVmVjdG9yQnVmZmVyJiBzcGVjdHJ1bV9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgZGVsYXlfYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgcmV2ZXJiX2RlY2F5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpB
cnJheVZpZXc8ZmxvYXQ+IHJldmVyYl9wb3dlcl9zcGVjdHJ1bSkgeworICBpbnQgaWR4X2F0X2Rl
bGF5ID0KKyAgICAgIHNwZWN0cnVtX2J1ZmZlci5PZmZzZXRJbmRleChzcGVjdHJ1bV9idWZmZXIu
cmVhZCwgZGVsYXlfYmxvY2tzKTsKKyAgaW50IGlkeF9wYXN0ID0gc3BlY3RydW1fYnVmZmVyLklu
Y0luZGV4KGlkeF9hdF9kZWxheSk7CisgIGNvbnN0IGF1dG8mIFgyID0gc3BlY3RydW1fYnVmZmVy
LmJ1ZmZlcltpZHhfYXRfZGVsYXldOworICBSVENfRENIRUNLX0VRKFgyLnNpemUoKSwgcmV2ZXJi
X3Bvd2VyX3NwZWN0cnVtLnNpemUoKSk7CisgIHN0ZDo6Y29weShYMi5iZWdpbigpLCBYMi5lbmQo
KSwgcmV2ZXJiX3Bvd2VyX3NwZWN0cnVtLmJlZ2luKCkpOworICByZW5kZXJfcmV2ZXJiXy5BZGRS
ZXZlcmJOb0ZyZXFTaGFwaW5nKHNwZWN0cnVtX2J1ZmZlci5idWZmZXJbaWR4X3Bhc3RdLCAxLjBm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyYl9kZWNheSwg
cmV2ZXJiX3Bvd2VyX3NwZWN0cnVtKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3JldmVyYl9tb2RlbC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvcmVuZGVyX3JldmVyYl9tb2RlbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0MDRhNjllY2QyZjIwYzA3
NTk3OWE4OWU1NGNlN2MzMTU0NDkxMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZW5kZXJfcmV2ZXJiX21vZGVsLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqICBDb3B5cmln
aHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfUkVOREVSX1JF
VkVSQl9NT0RFTF9IXworI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRU5E
RVJfUkVWRVJCX01PREVMX0hfCisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuaCIKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFRoZSBSZW5kZXJSZXZlcmJNb2RlbCBjbGFzcyBhcHBsaWVz
IGFuIGV4cG9uZW50aWFsIHJldmVyYmVyYW50IG1vZGVsIG92ZXIgdGhlCisvLyByZW5kZXIgc3Bl
Y3RydW0uCitjbGFzcyBSZW5kZXJSZXZlcmJNb2RlbCB7CisgcHVibGljOgorICBSZW5kZXJSZXZl
cmJNb2RlbCgpOworICB+UmVuZGVyUmV2ZXJiTW9kZWwoKTsKKworICAvLyBSZXNldHMgdGhlIHN0
YXRlLgorICB2b2lkIFJlc2V0KCk7CisKKyAgLy8gQXBwbGllcyB0aGUgcmV2ZXJiZXJhdGlvbiBt
b2RlbCBvdmVyIHRoZSByZW5kZXIgc3BlY3RydW0uIEl0IGFsc28gcmV0dXJucworICAvLyB0aGUg
cmV2ZXJiZXJhdGlvbiByZW5kZXIgcG93ZXIgc3BlY3RydW0gaW4gdGhlIGFycmF5IHJldmVyYl9w
b3dlcl9zcGVjdHJ1bS4KKyAgdm9pZCBBcHBseShjb25zdCBWZWN0b3JCdWZmZXImIHNwZWN0cnVt
X2J1ZmZlciwKKyAgICAgICAgICAgICBpbnQgZGVsYXlfYmxvY2tzLAorICAgICAgICAgICAgIGZs
b2F0IHJldmVyYl9kZWNheSwKKyAgICAgICAgICAgICBydGM6OkFycmF5VmlldzxmbG9hdD4gcmV2
ZXJiX3Bvd2VyX3NwZWN0cnVtKTsKKworICAvLyBHZXRzIHRoZSByZXZlcmJlcmF0aW9uIHNwZWN0
cnVtIHRoYXQgd2FzIGFkZGVkIHRvIHRoZSByZW5kZXIgc3BlY3RydW0gZm9yCisgIC8vIGNvbXB1
dGluZyB0aGUgcmV2ZXJiZXJhdGlvbiByZW5kZXIgc3BlY3RydW0uCisgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IGZsb2F0PiBHZXRSZXZlcmJDb250cmlidXRpb25Qb3dlclNwZWN0cnVtKCkgY29uc3Qg
eworICAgIHJldHVybiByZW5kZXJfcmV2ZXJiXy5HZXRQb3dlclNwZWN0cnVtKCk7CisgIH0KKwor
IHByaXZhdGU6CisgIFJldmVyYk1vZGVsIHJlbmRlcl9yZXZlcmJfOworfTsKKworfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0Yy4KKworI2VuZGlmICAvLyBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVD
M19SRU5ERVJfUkVWRVJCX01PREVMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5k
ZXJfc2lnbmFsX2FuYWx5emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFs
eXplci5jYwppbmRleCA1MGMzNGNlNDNmNjFhNTAyZWRmMjgxM2NjMDdiMDQ0MDY4ZjQxNDFjLi4z
M2IwNGJmNzBjOWZmODBkM2U5MDM5MTFlNzkzMTIxZjNjOTlkNTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuY2MKQEAgLTEyLDcgKzEyLDEwIEBACiAKICNpbmNsdWRl
IDxtYXRoLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5j
bHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5emVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5k
ZXJfc2lnbmFsX2FuYWx5emVyLmgKaW5kZXggYzYwM2M5MjE0NDdiOTA1Y2QwZjQyZTUxMDEzODkw
NTY2ODNmYmQ2ZS4uOGE0NDIzMmNmOWEwZDMxYzdmZDVhMmQ2MDU2YjQ3ZTAzYWRlMzg1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXIuaApAQCAtMTEsMTMgKzExLDE1IEBA
CiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1JFTkRFUl9TSUdOQUxfQU5B
TFlaRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfUkVOREVSX1NJ
R05BTF9BTkFMWVpFUl9IXwogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGFycmF5
PgotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxjc3RkZGVmPgogCiAjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNf
Y29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19j
b21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJf
YnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9zaWduYWxfYW5hbHl6ZXJfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5emVyX3VuaXR0ZXN0LmNjCmluZGV4IGY5YjE5
NTU4Mzg3NWYwMjk2ODkwMDMxNGEzMjZmYjY2MmQyOGU5YWMuLmE5OTNmOGY4YWNmODljZDliMDIz
NWMzODA0NDU3MWZjMzI1OTk4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9z
aWduYWxfYW5hbHl6ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3Np
Z25hbF9hbmFseXplcl91bml0dGVzdC5jYwpAQCAtNTksNyArNTksNyBAQCBURVNUKFJlbmRlclNp
Z25hbEFuYWx5emVyLCBOb0ZhbHNlRGV0ZWN0aW9uT2ZOYXJyb3dCYW5kcykgewogICBzdGQ6OnZl
Y3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4+IHgoMywgc3RkOjp2ZWN0b3I8ZmxvYXQ+KGtCbG9ja1Np
emUsIDAuZikpOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrQmxvY2tTaXplPiB4X29sZDsKICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAg
ICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZShFY2hvQ2FuY2VsbGVyM0NvbmZpZygpLCAzKSk7
CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihFY2hvQ2FuY2VsbGVyM0NvbmZpZygp
LCAzKSk7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gbWFzazsKICAg
eF9vbGQuZmlsbCgwLmYpOwogCkBAIC05Myw3ICs5Myw3IEBAIFRFU1QoUmVuZGVyU2lnbmFsQW5h
bHl6ZXIsIE5hcnJvd0JhbmREZXRlY3Rpb24pIHsKICAgRWNob0NhbmNlbGxlcjNDb25maWcgY29u
ZmlnOwogICBjb25maWcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3MgPSAwOwogICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0g
ICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgUmVuZGVy
RGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAKICAgc3RkOjphcnJheTxmbG9hdCwg
a0ZmdExlbmd0aEJ5MlBsdXMxPiBtYXNrOwogICB4X29sZC5maWxsKDAuZik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hvX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3Jlc2lkdWFsX2VjaG9fZXN0aW1hdG9yLmNjCmluZGV4IDJlM2FkOWZlYTcyN2UyOWVhNGNm
YzE3MDZmMjkzZGZmNjc4ZDgwOWEuLjYyN2RkOTAwYzRlODk1MGUwZGM2ODdiZWQ1NGQzYzVkNmQy
ZGJiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9fZXN0aW1hdG9y
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9fZXN0aW1hdG9yLmNjCkBAIC0x
MSw5ICsxMSwxMSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
cmVzaWR1YWxfZWNob19lc3RpbWF0b3IuaCIKIAotI2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAor
I2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsX2ZhbGxiYWNrLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCkBAIC0xMDUsOSArMTA3LDE1IEBAIHZvaWQgUmVzaWR1YWxFY2hvRXN0aW1hdG9y
OjpFc3RpbWF0ZSgKIAogICAvLyBFc3RpbWF0ZSB0aGUgcmVzaWR1YWwgZWNobyBwb3dlci4KICAg
aWYgKGFlY19zdGF0ZS5Vc2FibGVMaW5lYXJFc3RpbWF0ZSgpKSB7Ci0gICAgUlRDX0RDSEVDSygh
YWVjX3N0YXRlLlNhdHVyYXRlZEVjaG8oKSk7CiAgICAgTGluZWFyRXN0aW1hdGUoUzJfbGluZWFy
LCBhZWNfc3RhdGUuRXJsZSgpLCBhZWNfc3RhdGUuRXJsZVVuY2VydGFpbnR5KCksCiAgICAgICAg
ICAgICAgICAgICAgUjIpOworCisgICAgLy8gV2hlbiB0aGVyZSBpcyBzYXR1cmF0ZWQgZWNobywg
YXNzdW1lIHRoZSBzYW1lIHNwZWN0cmFsIGNvbnRlbnQgYXMgaXMKKyAgICAvLyBwcmVzZW50IGlu
IHRoZSBtaWNyb3BvbmUgc2lnbmFsLgorICAgIGlmIChhZWNfc3RhdGUuU2F0dXJhdGVkRWNobygp
KSB7CisgICAgICBzdGQ6OmNvcHkoWTIuYmVnaW4oKSwgWTIuZW5kKCksIFIyLT5iZWdpbigpKTsK
KyAgICB9CisKICAgICAvLyBBZGRzIHRoZSBlc3RpbWF0ZWQgdW5tb2RlbGxlZCBlY2hvIHBvd2Vy
IHRvIHRoZSByZXNpZHVhbCBlY2hvIHBvd2VyCiAgICAgLy8gZXN0aW1hdGUuCiAgICAgaWYgKGVj
aG9fcmV2ZXJiXykgewpAQCAtMTUxLDEwICsxNTksMTAgQEAgdm9pZCBSZXNpZHVhbEVjaG9Fc3Rp
bWF0b3I6OkVzdGltYXRlKAogICAgIH0KICAgICBOb25MaW5lYXJFc3RpbWF0ZShlY2hvX3BhdGhf
Z2FpbiwgWDIsIFkyLCBSMik7CiAKLSAgICAvLyBJZiB0aGUgZWNobyBpcyBzYXR1cmF0ZWQsIGVz
dGltYXRlIHRoZSBlY2hvIHBvd2VyIGFzIHRoZSBtYXhpbXVtIGVjaG8KLSAgICAvLyBwb3dlciB3
aXRoIGEgbGVha2FnZSBmYWN0b3IuCisgICAgLy8gV2hlbiB0aGVyZSBpcyBzYXR1cmF0ZWQgZWNo
bywgYXNzdW1lIHRoZSBzYW1lIHNwZWN0cmFsIGNvbnRlbnQgYXMgaXMKKyAgICAvLyBwcmVzZW50
IGluIHRoZSBtaWNyb3BvbmUgc2lnbmFsLgogICAgIGlmIChhZWNfc3RhdGUuU2F0dXJhdGVkRWNo
bygpKSB7Ci0gICAgICBSMi0+ZmlsbCgoKnN0ZDo6bWF4X2VsZW1lbnQoUjItPmJlZ2luKCksIFIy
LT5lbmQoKSkpICogMTAwLmYpOworICAgICAgc3RkOjpjb3B5KFkyLmJlZ2luKCksIFkyLmVuZCgp
LCBSMi0+YmVnaW4oKSk7CiAgICAgfQogCiAgICAgaWYgKCEoYWVjX3N0YXRlLlRyYW5zcGFyZW50
TW9kZSgpICYmIHNvZnRfdHJhbnNwYXJlbnRfbW9kZV8pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9yZXNpZHVhbF9lY2hvX2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1
YWxfZWNob19lc3RpbWF0b3IuaAppbmRleCA2ZGNmMjRmMDkwNzkwYjcyNGU4ZTJlNDc0MmNmMzNj
YTE0MjEzY2FlLi41Mjg4NWE1OGQ4NWEzMzgyNDIyY2RmOWNlMjJlZjIwM2JhMTI5ZmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXNpZHVhbF9lY2hvX2VzdGltYXRvci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9fZXN0aW1hdG9yLmgKQEAgLTExLDE4ICsxMSwxOCBA
QAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRVNJRFVBTF9FQ0hPX0VT
VElNQVRPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRVNJRFVB
TF9FQ0hPX0VTVElNQVRPUl9IXwogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGFy
cmF5PgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJh
cGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNs
dWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjX3N0YXRlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbF9mYWxsYmFjay5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2lj
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtMzksNyArMzksNyBAQCBjbGFzcyBSZXNpZHVh
bEVjaG9Fc3RpbWF0b3IgewogICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4qIFIyKTsKIAogICAvLyBSZXR1cm5zIHRoZSByZXZlcmJlcmFudCBwb3dl
ciBzcGVjdHJ1bSBjb250cmlidXRpb25zIHRvIHRoZSBlY2hvIHJlc2lkdWFsLgotICBjb25zdCBz
dGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBHZXRSZXZlcmJQb3dlclNwZWN0
cnVtKCkgY29uc3QgeworICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gR2V0UmV2ZXJiUG93
ZXJTcGVjdHJ1bSgpIGNvbnN0IHsKICAgICBpZiAoZWNob19yZXZlcmJfKSB7CiAgICAgICByZXR1
cm4gZWNob19yZXZlcmJfLT5HZXRQb3dlclNwZWN0cnVtKCk7CiAgICAgfSBlbHNlIHsKQEAgLTY2
LDcgKzY2LDYgQEAgY2xhc3MgUmVzaWR1YWxFY2hvRXN0aW1hdG9yIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBZ
MiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3Ro
QnkyUGx1czE+KiBSMik7CiAKLQogICAvLyBFc3RpbWF0ZXMgdGhlIGVjaG8gZ2VuZXJhdGluZyBz
aWduYWwgcG93ZXIgYXMgZ2F0ZWQgbWF4aW1hbCBwb3dlciBvdmVyIGEKICAgLy8gdGltZSB3aW5k
b3cuCiAgIHZvaWQgRWNob0dlbmVyYXRpbmdQb3dlcihjb25zdCBWZWN0b3JCdWZmZXImIHNwZWN0
cnVtX2J1ZmZlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Jlc2lkdWFsX2VjaG9fZXN0
aW1hdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNob19lc3RpbWF0
b3JfdW5pdHRlc3QuY2MKaW5kZXggODMyZDhjYTFkMzNiNjU3NjQ4OWFlMjFiODEwMjVhOWI2NjNj
MzIwNy4uMmU3M2E3ZTYxMTYxMDFmY2M2YmNjYTE3ZjJjNzA4MWE1MTFjOWFmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNob19lc3RpbWF0b3JfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvcmVzaWR1YWxfZWNob19lc3RpbWF0b3JfdW5pdHRlc3QuY2MKQEAg
LTI3LDcgKzI3LDcgQEAgVEVTVChSZXNpZHVhbEVjaG9Fc3RpbWF0b3IsIE51bGxSZXNpZHVhbEVj
aG9Qb3dlck91dHB1dCkgewogICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjb25maWc7CiAgIEFlY1N0
YXRlIGFlY19zdGF0ZShjb25maWcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZm
ZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRl
KGNvbmZpZywgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAz
KSk7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+
IEgyOwogICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFMyX2xpbmVhcjsK
ICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBZMjsKQEAgLTQ4LDcgKzQ4
LDcgQEAgVEVTVChSZXNpZHVhbEVjaG9Fc3RpbWF0b3IsIERJU0FCTEVEX0Jhc2ljVGVzdCkgewog
ICBSZXNpZHVhbEVjaG9Fc3RpbWF0b3IgZXN0aW1hdG9yKGNvbmZpZyk7CiAgIEFlY1N0YXRlIGFl
Y19zdGF0ZShjb25maWcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJl
bmRlcl9kZWxheV9idWZmZXIoCi0gICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZp
ZywgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAK
ICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBFMl9tYWluOwogICBzdGQ6
OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IEUyX3NoYWRvdzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JldmVyYl9kZWNheV9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZXZlcmJfZGVjYXlfZXN0aW1hdG9yLmNjCmluZGV4IGY4MGFmYTJkZmNiYTA5NjNmZTE5YzIw
OWQzMjAzZDE3N2MwYzhjNTkuLjk1ZmQxM2FmNTk2MjY5YWUxNTFhZmVhZjg3NDE0NmExNzNjM2Ex
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9kZWNheV9lc3RpbWF0b3IuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2RlY2F5X2VzdGltYXRvci5jYwpAQCAtMTAsMTEg
KzEwLDEzIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZl
cmJfZGVjYXlfZXN0aW1hdG9yLmgiCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8bnVtZXJpYz4KIAogI2luY2x1
ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVy
M19jb25maWcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9h
cG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRl
ICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvcmV2ZXJiX2RlY2F5X2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2
ZXJiX2RlY2F5X2VzdGltYXRvci5oCmluZGV4IDY3YTg0YWI4ZmNiZjUzM2Q5YzdhZjBkYThlOTky
ODg4M2E2MGE2ZDYuLjRjOGQwYzY0MzQ2MmZlYWU3N2VkYTlhNDVlNWUxYTE3NWUwNjE2MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9kZWNheV9lc3RpbWF0b3IuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9yZXZlcmJfZGVjYXlfZXN0aW1hdG9yLmgKQEAgLTE2LDEyICsxNiwxMiBA
QAogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJh
eV92aWV3LmgiCi0jaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiICAv
LyBrTWF4QWRhcHRpdmVGaWx0ZXIuLi4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNsYXNzIEFw
bURhdGFEdW1wZXI7CitzdHJ1Y3QgRWNob0NhbmNlbGxlcjNDb25maWc7CiAKIC8vIENsYXNzIGZv
ciBlc3RpbWF0aW5nIHRoZSBkZWNheSBvZiB0aGUgbGF0ZSByZXZlcmIuCiBjbGFzcyBSZXZlcmJE
ZWNheUVzdGltYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZnJlcXVl
bmN5X3Jlc3BvbnNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2ZyZXF1ZW5jeV9yZXNwb25z
ZS5jYwppbmRleCAwZDgyNTE1ZWM0YjI1Njg4ZDczNTRiZTEzMmE4MjIwOGE5NjVkYzZiLi5kMjEw
M2Q0NDJlNGI0NWZmODRlMTZhNzZkNjA0YzhhMDQ2NDliNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9yZXZlcmJfZnJlcXVlbmN5X3Jlc3BvbnNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JldmVyYl9mcmVxdWVuY3lfcmVzcG9uc2UuY2MKQEAgLTEwLDE0ICsxMCwxMiBAQAogCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2ZyZXF1ZW5jeV9yZXNw
b25zZS5oIgogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPGFycmF5PgotI2luY2x1ZGUgPGNtYXRoPgotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDxudW1lcmljPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJh
cGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9mcmVxdWVuY3lfcmVzcG9uc2UuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3JldmVyYl9mcmVxdWVuY3lfcmVzcG9uc2UuaAppbmRleCAyMzQ4NWUw
MDlmYmUzMGViNmQzMjczNjFiZTZhMTQwNzMwODFiMDJjLi5lYjYzYjhlNTJlODU0YmNjYTlmMTg0
ZWVmYTY1MTg3MzljZDhiOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfZnJl
cXVlbmN5X3Jlc3BvbnNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX2ZyZXF1ZW5jeV9y
ZXNwb25zZS5oCkBAIC0xMSwxMyArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FFQzNfUkVWRVJCX0ZSRVFVRU5DWV9SRVNQT05TRV9IXwogI2RlZmluZSBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUVDM19SRVZFUkJfRlJFUVVFTkNZX1JFU1BPTlNFX0hfCiAKLSNp
bmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAj
aW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24u
aCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9k
dW1wZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3JldmVyYl9tb2RlbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbC5jYwppbmRl
eCAwY2EyNDhmYzc1NDMxZWE2MzM3N2MyNGVkNjkzYzZiZWM2YjkwN2U2Li5mMGEyNGMwMjQ5ODIz
NDg1ZDk5NzM2MWI3NTY2ZGIxOTI2MzYzNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9y
ZXZlcmJfbW9kZWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmNjCkBAIC0x
MCwxMyArMTAsMTEgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3JldmVyYl9tb2RlbC5oIgogCi0jaW5jbHVkZSA8bWF0aC5oPgotCisjaW5jbHVkZSA8c3RkZGVm
Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKICNpbmNs
dWRlICJhcGkvYXJyYXlfdmlldy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL2FlYzNfY29tbW9uLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9t
b2RlbC5oCmluZGV4IGQzMDg3YTcyZDkxMDIzYTUzZDdjYTU5ZTZlNWZkMDU0OTI5NzM4ZDUuLjU2
ZTIyNjZlNTY5ZTc0NDdhMWZiMGZjMmY2Mjc5ODIwZDk5NzAzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3JldmVyYl9tb2RlbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2Rl
bC5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19B
RUMzX1JFVkVSQl9NT0RFTF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVD
M19SRVZFUkJfTU9ERUxfSF8KIAorI2luY2x1ZGUgPGFycmF5PgorCiAjaW5jbHVkZSAiYXBpL2Fy
cmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMz
X2NvbW1vbi5oIgogCkBAIC01MCw5ICs1Miw3IEBAIGNsYXNzIFJldmVyYk1vZGVsIHsKICAgICAg
IGZsb2F0IHJldmVyYl9kZWNheSk7CiAKICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBwb3dlciBz
cGVjdHJ1bSByZXZlcmJlcmF0aW9uIGNvbnRyaWJ1dGlvbnMuCi0gIGNvbnN0IHN0ZDo6YXJyYXk8
ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIEdldFBvd2VyU3BlY3RydW0oKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIHJldmVyYl87Ci0gIH0KKyAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEdl
dFBvd2VyU3BlY3RydW0oKSBjb25zdCB7IHJldHVybiByZXZlcmJfOyB9CiAKICBwcml2YXRlOgog
ICAvLyBVcGRhdGVzIHRoZSByZXZlcmJlcmF0aW9uIGNvbnRyaWJ1dGlvbnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWxfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9yZXZlcmJfbW9kZWxfZXN0aW1hdG9yLmgKaW5kZXggYjZhMzU5MWUwOTE5NzBiOTBjOGNlMDEy
YzAxZDdjYTM0OTY3Y2EwYy4uMTExMmY5M2E3MTkzNTRiYWFmYzNjOTg4NDRjYzBiOTQxYTVhY2Yx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsX2VzdGltYXRvci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9tb2RlbF9lc3RpbWF0b3IuaApAQCAtMTEsMTEgKzEx
LDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1JFVkVSQl9NT0RF
TF9FU1RJTUFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfUkVW
RVJCX01PREVMX0VTVElNQVRPUl9IXwogCisjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS9h
cnJheV92aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5o
IiAgLy8ga0ZmdExlbmd0aEJ5MlBsdXMxCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvcmV2ZXJiX2RlY2F5X2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3JldmVyYl9mcmVxdWVuY3lfcmVzcG9uc2UuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsX2ZhbGxiYWNrLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9yZXZlcmJfbW9kZWxfZmFsbGJhY2suaAppbmRleCAxYjJhOTUzZWE2NDE3YzJiZWU4MDZj
NjM3ZGU2ZjEyZTQ3M2I1NDUxLi4xYmQyYjU5NGUwNmFhYzBiYTUwOWQ2ZWNmNTE5MjUwMWM4YzZm
MWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWxfZmFsbGJhY2suaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZXZlcmJfbW9kZWxfZmFsbGJhY2suaApAQCAtMTEsNiArMTEs
NyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19SRVZFUkJfTU9ERUxf
RkFMTEJBQ0tfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfUkVWRVJC
X01PREVMX0ZBTExCQUNLX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhcnJh
eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NoYWRv
d19maWx0ZXJfdXBkYXRlX2dhaW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NoYWRvd19maWx0ZXJfdXBk
YXRlX2dhaW4uaAppbmRleCBhOTJiYzNiOGI3ZmEwMTdhODhhM2ViOTRlMGI3NWQyYjI2YmJiOGU2
Li4wNWU2MzJmYTc4Yjg3MzEzZTJlZjVkMWRiN2ZkNzc0YzVhMTY3MDU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9zaGFkb3dfZmlsdGVyX3VwZGF0ZV9nYWluLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbi5oCkBAIC0xMSwxMSArMTEsMTMgQEAKICNp
Zm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfU0hBRE9XX0ZJTFRFUl9VUERBVEVf
R0FJTl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TSEFET1dfRklM
VEVSX1VQREFURV9HQUlOX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxhcnJh
eT4KKwogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKLSNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCisjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2RhdGEuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfc2lnbmFsX2FuYWx5emVyLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2hhZG93X2ZpbHRlcl91cGRhdGVf
Z2Fpbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NoYWRvd19maWx0ZXJfdXBkYXRlX2dh
aW5fdW5pdHRlc3QuY2MKaW5kZXggYzA0MGJiZmY5MWYyYjdiYmJlZmE1OGQ1NDEyY2YzMDAwMDRm
ZTJkZS4uMDE3YzY3OTU4OGIxYjcyNWRlNzYzODYwZTYwOWNkYmFiZGM2YzBjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvc2hhZG93X2ZpbHRlcl91cGRhdGVfZ2Fpbl91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaGFkb3dfZmlsdGVyX3VwZGF0ZV9nYWluX3VuaXR0ZXN0LmNj
CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgUnVuRmlsdGVyVXBkYXRlVGVzdChpbnQgbnVtX2Jsb2Nr
c190b19wcm9jZXNzLAogICBjb25maWcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3Mg
PSAwOwogICBjb25maWcuZGVsYXkuZGVmYXVsdF9kZWxheSA9IDE7CiAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2RlbGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRl
bGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6
Q3JlYXRlMihjb25maWcsIDMpKTsKIAogICBzdGQ6OmFycmF5PGZsb2F0LCBrQmxvY2tTaXplPiB4
X29sZDsKICAgeF9vbGQuZmlsbCgwLmYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2ln
bmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NpZ25hbF9k
ZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3IuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJiMzZhYjIxNWE1NDcxYzFj
YjkwZDM5MDUxNWFmNzM4ZDk2NTBjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMz
L3NpZ25hbF9kZXBlbmRlbnRfZXJsZV9lc3RpbWF0b3IuY2MKQEAgLTAsMCArMSwzNjggQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvci5oIgorCisjaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8bnVtZXJpYz4KKworI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworbmFtZXNwYWNlIHsKKworY29uc3RleHByIHN0ZDo6YXJyYXk8c2l6ZV90LCBTaWdu
YWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjprU3ViYmFuZHMgKyAxPgorICAgIGtCYW5kQm91bmRh
cmllcyA9IHsxLCA4LCAxNiwgMjQsIDMyLCA0OCwga0ZmdExlbmd0aEJ5MlBsdXMxfTsKKworc3Rk
OjphcnJheTxzaXplX3QsIGtGZnRMZW5ndGhCeTJQbHVzMT4gRm9ybVN1YmJhbmRNYXAoKSB7Cisg
IHN0ZDo6YXJyYXk8c2l6ZV90LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IG1hcF9iYW5kX3RvX3N1YmJh
bmQ7CisgIHNpemVfdCBzdWJiYW5kID0gMTsKKyAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBtYXBf
YmFuZF90b19zdWJiYW5kLnNpemUoKTsgKytrKSB7CisgICAgUlRDX0RDSEVDS19MVChzdWJiYW5k
LCBrQmFuZEJvdW5kYXJpZXMuc2l6ZSgpKTsKKyAgICBpZiAoayA+PSBrQmFuZEJvdW5kYXJpZXNb
c3ViYmFuZF0pIHsKKyAgICAgIHN1YmJhbmQrKzsKKyAgICAgIFJUQ19EQ0hFQ0tfTFQoaywga0Jh
bmRCb3VuZGFyaWVzW3N1YmJhbmRdKTsKKyAgICB9CisgICAgbWFwX2JhbmRfdG9fc3ViYmFuZFtr
XSA9IHN1YmJhbmQgLSAxOworICB9CisgIHJldHVybiBtYXBfYmFuZF90b19zdWJiYW5kOworfQor
CisvLyBEZWZpbmVzIHRoZSBzaXplIGluIGJsb2NrcyBvZiB0aGUgc2VjdGlvbnMgdGhhdCBhcmUg
dXNlZCBmb3IgZGl2aWRpbmcgdGhlCisvLyBsaW5lYXIgZmlsdGVyLiBUaGUgc2VjdGlvbnMgYXJl
IHNwbGl0IGluIGEgbm9uLWxpbmVhciBtYW5uZXIgc28gdGhhdCBsb3dlcgorLy8gc2VjdGlvbnMg
dGhhdCB0eXBpY2FsbHkgcmVwcmVzZW50IHRoZSBkaXJlY3QgcGF0aCBoYXZlIGEgbGFyZ2VyIHJl
c29sdXRpb24KKy8vIHRoYW4gdGhlIGhpZ2hlciBzZWN0aW9ucyB3aGljaCB0eXBpY2FsbHkgcmVw
cmVzZW50IG1vcmUgcmV2ZXJiZXJhbnQgYWNvdXN0aWMKKy8vIHBhdGhzLgorc3RkOjp2ZWN0b3I8
c2l6ZV90PiBEZWZpbmVGaWx0ZXJTZWN0aW9uU2l6ZXMoc2l6ZV90IGRlbGF5X2hlYWRyb29tX2Js
b2NrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBudW1fYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG51bV9zZWN0aW9ucykgeworICBzaXplX3QgZmlsdGVyX2xlbmd0aF9ibG9ja3Mg
PSBudW1fYmxvY2tzIC0gZGVsYXlfaGVhZHJvb21fYmxvY2tzOworICBzdGQ6OnZlY3RvcjxzaXpl
X3Q+IHNlY3Rpb25fc2l6ZXMobnVtX3NlY3Rpb25zKTsKKyAgc2l6ZV90IHJlbWFpbmluZ19ibG9j
a3MgPSBmaWx0ZXJfbGVuZ3RoX2Jsb2NrczsKKyAgc2l6ZV90IHJlbWFpbmluZ19zZWN0aW9ucyA9
IG51bV9zZWN0aW9uczsKKyAgc2l6ZV90IGVzdGltYXRvcl9zaXplID0gMjsKKyAgc2l6ZV90IGlk
eCA9IDA7CisgIHdoaWxlIChyZW1haW5pbmdfc2VjdGlvbnMgPiAxICYmCisgICAgICAgICByZW1h
aW5pbmdfYmxvY2tzID4gZXN0aW1hdG9yX3NpemUgKiByZW1haW5pbmdfc2VjdGlvbnMpIHsKKyAg
ICBSVENfRENIRUNLX0xUKGlkeCwgc2VjdGlvbl9zaXplcy5zaXplKCkpOworICAgIHNlY3Rpb25f
c2l6ZXNbaWR4XSA9IGVzdGltYXRvcl9zaXplOworICAgIHJlbWFpbmluZ19ibG9ja3MgLT0gZXN0
aW1hdG9yX3NpemU7CisgICAgcmVtYWluaW5nX3NlY3Rpb25zLS07CisgICAgZXN0aW1hdG9yX3Np
emUgKj0gMjsKKyAgICBpZHgrKzsKKyAgfQorCisgIHNpemVfdCBsYXN0X2dyb3Vwc19zaXplID0g
cmVtYWluaW5nX2Jsb2NrcyAvIHJlbWFpbmluZ19zZWN0aW9uczsKKyAgZm9yICg7IGlkeCA8IG51
bV9zZWN0aW9uczsgaWR4KyspIHsKKyAgICBzZWN0aW9uX3NpemVzW2lkeF0gPSBsYXN0X2dyb3Vw
c19zaXplOworICB9CisgIHNlY3Rpb25fc2l6ZXNbbnVtX3NlY3Rpb25zIC0gMV0gKz0KKyAgICAg
IHJlbWFpbmluZ19ibG9ja3MgLSBsYXN0X2dyb3Vwc19zaXplICogcmVtYWluaW5nX3NlY3Rpb25z
OworICByZXR1cm4gc2VjdGlvbl9zaXplczsKK30KKworLy8gRm9ybXMgdGhlIGxpbWl0cyBpbiBi
bG9ja3MgZm9yIGVhY2ggZmlsdGVyIHNlY3Rpb24uIFRob3NlIHNlY3Rpb25zCisvLyBhcmUgdXNl
ZCBmb3IgYW5hbHl6aW5nIHRoZSBlY2hvIGVzdGltYXRlcyBhbmQgaW52ZXN0aWdhdGluZyB3aGlj
aAorLy8gbGluZWFyIGZpbHRlciBzZWN0aW9ucyBjb250cmlidXRlIG1vc3QgdG8gdGhlIGVjaG8g
ZXN0aW1hdGUgZW5lcmd5Lgorc3RkOjp2ZWN0b3I8c2l6ZV90PiBTZXRTZWN0aW9uc0JvdW5kYXJp
ZXMoc2l6ZV90IGRlbGF5X2hlYWRyb29tX2Jsb2NrcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1fYmxvY2tzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9zZWN0aW9ucykgeworICBzdGQ6OnZl
Y3RvcjxzaXplX3Q+IGVzdGltYXRvcl9ib3VuZGFyaWVzX2Jsb2NrcyhudW1fc2VjdGlvbnMgKyAx
KTsKKyAgaWYgKGVzdGltYXRvcl9ib3VuZGFyaWVzX2Jsb2Nrcy5zaXplKCkgPT0gMikgeworICAg
IGVzdGltYXRvcl9ib3VuZGFyaWVzX2Jsb2Nrc1swXSA9IDA7CisgICAgZXN0aW1hdG9yX2JvdW5k
YXJpZXNfYmxvY2tzWzFdID0gbnVtX2Jsb2NrczsKKyAgICByZXR1cm4gZXN0aW1hdG9yX2JvdW5k
YXJpZXNfYmxvY2tzOworICB9CisgIFJUQ19EQ0hFQ0tfR1QoZXN0aW1hdG9yX2JvdW5kYXJpZXNf
YmxvY2tzLnNpemUoKSwgMik7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4gc2VjdGlvbl9z
aXplcyA9CisgICAgICBEZWZpbmVGaWx0ZXJTZWN0aW9uU2l6ZXMoZGVsYXlfaGVhZHJvb21fYmxv
Y2tzLCBudW1fYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzdGltYXRv
cl9ib3VuZGFyaWVzX2Jsb2Nrcy5zaXplKCkgLSAxKTsKKworICBzaXplX3QgaWR4ID0gMDsKKyAg
c2l6ZV90IGN1cnJlbnRfc2l6ZV9ibG9jayA9IDA7CisgIFJUQ19EQ0hFQ0tfRVEoc2VjdGlvbl9z
aXplcy5zaXplKCkgKyAxLCBlc3RpbWF0b3JfYm91bmRhcmllc19ibG9ja3Muc2l6ZSgpKTsKKyAg
ZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzWzBdID0gZGVsYXlfaGVhZHJvb21fYmxvY2tzOwor
ICBmb3IgKHNpemVfdCBrID0gZGVsYXlfaGVhZHJvb21fYmxvY2tzOyBrIDwgbnVtX2Jsb2Nrczsg
KytrKSB7CisgICAgY3VycmVudF9zaXplX2Jsb2NrKys7CisgICAgaWYgKGN1cnJlbnRfc2l6ZV9i
bG9jayA+PSBzZWN0aW9uX3NpemVzW2lkeF0pIHsKKyAgICAgIGlkeCA9IGlkeCArIDE7CisgICAg
ICBpZiAoaWR4ID09IHNlY3Rpb25fc2l6ZXMuc2l6ZSgpKSB7CisgICAgICAgIGJyZWFrOworICAg
ICAgfQorICAgICAgZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzW2lkeF0gPSBrICsgMTsKKyAg
ICAgIGN1cnJlbnRfc2l6ZV9ibG9jayA9IDA7CisgICAgfQorICB9CisgIGVzdGltYXRvcl9ib3Vu
ZGFyaWVzX2Jsb2Nrc1tzZWN0aW9uX3NpemVzLnNpemUoKV0gPSBudW1fYmxvY2tzOworICByZXR1
cm4gZXN0aW1hdG9yX2JvdW5kYXJpZXNfYmxvY2tzOworfQorCitzdGQ6OmFycmF5PGZsb2F0LCBT
aWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjprU3ViYmFuZHM+CitTZXRNYXhFcmxlU3ViYmFu
ZHMoZmxvYXQgbWF4X2VybGVfbCwgZmxvYXQgbWF4X2VybGVfaCwgc2l6ZV90IGxpbWl0X3N1YmJh
bmRfbCkgeworICBzdGQ6OmFycmF5PGZsb2F0LCBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9y
OjprU3ViYmFuZHM+IG1heF9lcmxlOworICBzdGQ6OmZpbGwobWF4X2VybGUuYmVnaW4oKSwgbWF4
X2VybGUuYmVnaW4oKSArIGxpbWl0X3N1YmJhbmRfbCwgbWF4X2VybGVfbCk7CisgIHN0ZDo6Zmls
bChtYXhfZXJsZS5iZWdpbigpICsgbGltaXRfc3ViYmFuZF9sLCBtYXhfZXJsZS5lbmQoKSwgbWF4
X2VybGVfaCk7CisgIHJldHVybiBtYXhfZXJsZTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK1Np
Z25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OlNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3Io
CisgICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZpZykKKyAgICA6IG1pbl9lcmxl
Xyhjb25maWcuZXJsZS5taW4pLAorICAgICAgbnVtX3NlY3Rpb25zXyhjb25maWcuZXJsZS5udW1f
c2VjdGlvbnMpLAorICAgICAgbnVtX2Jsb2Nrc18oY29uZmlnLmZpbHRlci5tYWluLmxlbmd0aF9i
bG9ja3MpLAorICAgICAgZGVsYXlfaGVhZHJvb21fYmxvY2tzXyhjb25maWcuZGVsYXkuZGVsYXlf
aGVhZHJvb21fYmxvY2tzKSwKKyAgICAgIGJhbmRfdG9fc3ViYmFuZF8oRm9ybVN1YmJhbmRNYXAo
KSksCisgICAgICBtYXhfZXJsZV8oU2V0TWF4RXJsZVN1YmJhbmRzKGNvbmZpZy5lcmxlLm1heF9s
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZXJsZS5tYXhfaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFuZF90b19zdWJiYW5kX1trRmZ0
TGVuZ3RoQnkyIC8gMl0pKSwKKyAgICAgIHNlY3Rpb25fYm91bmRhcmllc19ibG9ja3NfKFNldFNl
Y3Rpb25zQm91bmRhcmllcyhkZWxheV9oZWFkcm9vbV9ibG9ja3NfLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9ibG9ja3NfLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9z
ZWN0aW9uc18pKSwKKyAgICAgIFMyX3NlY3Rpb25fYWNjdW1fKG51bV9zZWN0aW9uc18pLAorICAg
ICAgZXJsZV9lc3RpbWF0b3JzXyhudW1fc2VjdGlvbnNfKSwKKyAgICAgIGNvcnJlY3Rpb25fZmFj
dG9yc18obnVtX3NlY3Rpb25zXykgeworICBSVENfRENIRUNLX0xFKG51bV9zZWN0aW9uc18sIG51
bV9ibG9ja3NfKTsKKyAgUlRDX0RDSEVDS19HRShudW1fc2VjdGlvbnNfLCAxKTsKKworICBSZXNl
dCgpOworfQorCitTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjp+U2lnbmFsRGVwZW5kZW50
RXJsZUVzdGltYXRvcigpID0gZGVmYXVsdDsKKwordm9pZCBTaWduYWxEZXBlbmRlbnRFcmxlRXN0
aW1hdG9yOjpSZXNldCgpIHsKKyAgZXJsZV8uZmlsbChtaW5fZXJsZV8pOworICBmb3IgKGF1dG8m
IGVybGUgOiBlcmxlX2VzdGltYXRvcnNfKSB7CisgICAgZXJsZS5maWxsKG1pbl9lcmxlXyk7Cisg
IH0KKyAgZXJsZV9yZWZfLmZpbGwobWluX2VybGVfKTsKKyAgZm9yIChhdXRvJiBmYWN0b3IgOiBj
b3JyZWN0aW9uX2ZhY3RvcnNfKSB7CisgICAgZmFjdG9yLmZpbGwoMS4wZik7CisgIH0KKyAgbnVt
X3VwZGF0ZXNfLmZpbGwoMCk7Cit9CisKKy8vIFVwZGF0ZXMgdGhlIEVybGUgZXN0aW1hdGUgYnkg
YW5hbHl6aW5nIHRoZSBjdXJyZW50IGlucHV0IHNpZ25hbHMuIEl0IHRha2VzCisvLyB0aGUgcmVu
ZGVyIGJ1ZmZlciBhbmQgdGhlIGZpbHRlciBmcmVxdWVuY3kgcmVzcG9uc2UgaW4gb3JkZXIgdG8g
ZG8gYW4KKy8vIGVzdGltYXRpb24gb2YgdGhlIG51bWJlciBvZiBzZWN0aW9ucyBvZiB0aGUgbGlu
ZWFyIGZpbHRlciB0aGF0IGFyZSBuZWVkZWQKKy8vIGZvciBnZXR0aW5nIHRoZSBtYWpvcml0eSBv
ZiB0aGUgZW5lcmd5IGluIHRoZSBlY2hvIGVzdGltYXRlLiBCYXNlZCBvbiB0aGF0CisvLyBudW1i
ZXIgb2Ygc2VjdGlvbnMsIGl0IHVwZGF0ZXMgdGhlIGVybGUgZXN0aW1hdGlvbiBieSBpbnRyb2R1
Y2luZyBhCisvLyBjb3JyZWN0aW9uIGZhY3RvciB0byB0aGUgZXJsZSB0aGF0IGlzIGdpdmVuIGFz
IGFuIGlucHV0IHRvIHRoaXMgbWV0aG9kLgordm9pZCBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1h
dG9yOjpVcGRhdGUoCisgICAgY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+
JgorICAgICAgICBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAorICAgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IGZsb2F0PiBYMiwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWTIsCisg
ICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEUyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNv
bnN0IGZsb2F0PiBhdmVyYWdlX2VybGUsCisgICAgYm9vbCBjb252ZXJnZWRfZmlsdGVyKSB7Cisg
IFJUQ19EQ0hFQ0tfR1QobnVtX3NlY3Rpb25zXywgMSk7CisKKyAgLy8gR2V0cyB0aGUgbnVtYmVy
IG9mIGZpbHRlciBzZWN0aW9ucyB0aGF0IGFyZSBuZWVkZWQgZm9yIGFjaGlldmluZyA5MCAlCisg
IC8vIG9mIHRoZSBwb3dlciBzcGVjdHJ1bSBlbmVyZ3kgb2YgdGhlIGVjaG8gZXN0aW1hdGUuCisg
IHN0ZDo6YXJyYXk8c2l6ZV90LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IG5fYWN0aXZlX3NlY3Rpb25z
OworICBDb21wdXRlTnVtYmVyT2ZBY3RpdmVGaWx0ZXJTZWN0aW9ucyhyZW5kZXJfYnVmZmVyLCBm
aWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuX2FjdGl2ZV9zZWN0aW9ucyk7CisKKyAgaWYgKGNvbnZlcmdlZF9maWx0ZXIpIHsK
KyAgICAvLyBVcGRhdGVzIHRoZSBjb3JyZWN0aW9uIGZhY3RvciB0aGF0IGlzIHVzZWQgZm9yIGNv
cnJlY3RpbmcgdGhlIGVybGUgYW5kCisgICAgLy8gYWRhcHQgaXQgdG8gdGhlIHBhcnRpY3VsYXIg
Y2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBpbnB1dCBzaWduYWwuCisgICAgVXBkYXRlQ29ycmVjdGlv
bkZhY3RvcnMoWDIsIFkyLCBFMiwgbl9hY3RpdmVfc2VjdGlvbnMpOworICB9CisKKyAgLy8gQXBw
bGllcyB0aGUgY29ycmVjdGlvbiBmYWN0b3IgdG8gdGhlIGlucHV0IGVybGUgZm9yIGdldHRpbmcg
YSBtb3JlIHJlZmluZWQKKyAgLy8gZXJsZSBlc3RpbWF0aW9uIGZvciB0aGUgY3VycmVudCBpbnB1
dCBzaWduYWwuCisgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwga0ZmdExlbmd0aEJ5MjsgKytrKSB7
CisgICAgZmxvYXQgY29ycmVjdGlvbl9mYWN0b3IgPQorICAgICAgICBjb3JyZWN0aW9uX2ZhY3Rv
cnNfW25fYWN0aXZlX3NlY3Rpb25zW2tdXVtiYW5kX3RvX3N1YmJhbmRfW2tdXTsKKyAgICBlcmxl
X1trXSA9IHJ0Yzo6U2FmZUNsYW1wKGF2ZXJhZ2VfZXJsZVtrXSAqIGNvcnJlY3Rpb25fZmFjdG9y
LCBtaW5fZXJsZV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZXJsZV9bYmFu
ZF90b19zdWJiYW5kX1trXV0pOworICB9Cit9CisKK3ZvaWQgU2lnbmFsRGVwZW5kZW50RXJsZUVz
dGltYXRvcjo6RHVtcCgKKyAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8QXBtRGF0YUR1bXBlcj4m
IGRhdGFfZHVtcGVyKSBjb25zdCB7CisgIGZvciAoYXV0byYgZXJsZSA6IGVybGVfZXN0aW1hdG9y
c18pIHsKKyAgICBkYXRhX2R1bXBlci0+RHVtcFJhdygiYWVjM19hbGxfZXJsZSIsIGVybGUpOwor
ICB9CisgIGRhdGFfZHVtcGVyLT5EdW1wUmF3KCJhZWMzX3JlZl9lcmxlIiwgZXJsZV9yZWZfKTsK
KyAgZm9yIChhdXRvJiBmYWN0b3IgOiBjb3JyZWN0aW9uX2ZhY3RvcnNfKSB7CisgICAgZGF0YV9k
dW1wZXItPkR1bXBSYXcoImFlYzNfZXJsZV9jb3JyZWN0aW9uX2ZhY3RvciIsIGZhY3Rvcik7Cisg
IH0KKyAgZGF0YV9kdW1wZXItPkR1bXBSYXcoImFlYzNfZXJsZSIsIGVybGVfKTsKK30KKworLy8g
RXN0aW1hdGVzIGZvciBlYWNoIGJhbmQgdGhlIHNtYWxsZXN0IG51bWJlciBvZiBzZWN0aW9ucyBp
biB0aGUgZmlsdGVyIHRoYXQKKy8vIHRvZ2V0aGVyIGNvbnN0aXR1dGUgOTAlIG9mIHRoZSBlc3Rp
bWF0ZWQgZWNobyBlbmVyZ3kuCit2b2lkIFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3I6OkNv
bXB1dGVOdW1iZXJPZkFjdGl2ZUZpbHRlclNlY3Rpb25zKAorICAgIGNvbnN0IFJlbmRlckJ1ZmZl
ciYgcmVuZGVyX2J1ZmZlciwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OmFycmF5PGZsb2F0
LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25z
ZSwKKyAgICBydGM6OkFycmF5VmlldzxzaXplX3Q+IG5fYWN0aXZlX2ZpbHRlcl9zZWN0aW9ucykg
eworICBSVENfRENIRUNLX0dUKG51bV9zZWN0aW9uc18sIDEpOworICAvLyBDb21wdXRlcyBhbiBh
cHByb3hpbWF0aW9uIG9mIHRoZSBwb3dlciBzcGVjdHJ1bSBpZiB0aGUgZmlsdGVyIHdvdWxkIGhh
dmUKKyAgLy8gYmVlbiBsaW1pdGVkIHRvIGEgY2VydGFpbiBudW1iZXIgb2YgZmlsdGVyIHNlY3Rp
b25zLgorICBDb21wdXRlRWNob0VzdGltYXRlUGVyRmlsdGVyU2VjdGlvbihyZW5kZXJfYnVmZmVy
LCBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNlKTsKKyAgLy8gRm9yIGVhY2ggYmFuZCwgY29tcHV0
ZXMgdGhlIG51bWJlciBvZiBmaWx0ZXIgc2VjdGlvbnMgdGhhdCBhcmUgbmVlZGVkIGZvcgorICAv
LyBhY2hpZXZpbmcgdGhlIDkwICUgZW5lcmd5IGluIHRoZSBlY2hvIGVzdGltYXRlLgorICBDb21w
dXRlQWN0aXZlRmlsdGVyU2VjdGlvbnMobl9hY3RpdmVfZmlsdGVyX3NlY3Rpb25zKTsKK30KKwor
dm9pZCBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yOjpVcGRhdGVDb3JyZWN0aW9uRmFjdG9y
cygKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWDIsCisgICAgcnRjOjpBcnJheVZp
ZXc8Y29uc3QgZmxvYXQ+IFkyLAorICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBFMiwK
KyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBzaXplX3Q+IG5fYWN0aXZlX3NlY3Rpb25zKSB7Cisg
IGNvbnN0ZXhwciBmbG9hdCBrWDJCYW5kRW5lcmd5VGhyZXNob2xkID0gNDQwMTUwNjguMGY7Cisg
IGNvbnN0ZXhwciBmbG9hdCBrU210aENvbnN0YW50RGVjcmVhc2VzID0gMC4xZjsKKyAgY29uc3Rl
eHByIGZsb2F0IGtTbXRoQ29uc3RhbnRJbmNyZWFzZXMgPSBrU210aENvbnN0YW50RGVjcmVhc2Vz
IC8gMi5mOworICBhdXRvIHN1YmJhbmRfcG93ZXJzID0gW10ocnRjOjpBcnJheVZpZXc8Y29uc3Qg
ZmxvYXQ+IHBvd2VyX3NwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpB
cnJheVZpZXc8ZmxvYXQ+IHBvd2VyX3NwZWN0cnVtX3N1YmJhbmRzKSB7CisgICAgZm9yIChzaXpl
X3Qgc3ViYmFuZCA9IDA7IHN1YmJhbmQgPCBrU3ViYmFuZHM7ICsrc3ViYmFuZCkgeworICAgICAg
UlRDX0RDSEVDS19MRShrQmFuZEJvdW5kYXJpZXNbc3ViYmFuZCArIDFdLCBwb3dlcl9zcGVjdHJ1
bS5zaXplKCkpOworICAgICAgcG93ZXJfc3BlY3RydW1fc3ViYmFuZHNbc3ViYmFuZF0gPSBzdGQ6
OmFjY3VtdWxhdGUoCisgICAgICAgICAgcG93ZXJfc3BlY3RydW0uYmVnaW4oKSArIGtCYW5kQm91
bmRhcmllc1tzdWJiYW5kXSwKKyAgICAgICAgICBwb3dlcl9zcGVjdHJ1bS5iZWdpbigpICsga0Jh
bmRCb3VuZGFyaWVzW3N1YmJhbmQgKyAxXSwgMC5mKTsKKyAgICB9CisgIH07CisKKyAgc3RkOjph
cnJheTxmbG9hdCwga1N1YmJhbmRzPiBYMl9zdWJiYW5kcywgRTJfc3ViYmFuZHMsIFkyX3N1YmJh
bmRzOworICBzdWJiYW5kX3Bvd2VycyhYMiwgWDJfc3ViYmFuZHMpOworICBzdWJiYW5kX3Bvd2Vy
cyhFMiwgRTJfc3ViYmFuZHMpOworICBzdWJiYW5kX3Bvd2VycyhZMiwgWTJfc3ViYmFuZHMpOwor
ICBzdGQ6OmFycmF5PHNpemVfdCwga1N1YmJhbmRzPiBpZHhfc3ViYmFuZHM7CisgIGZvciAoc2l6
ZV90IHN1YmJhbmQgPSAwOyBzdWJiYW5kIDwga1N1YmJhbmRzOyArK3N1YmJhbmQpIHsKKyAgICAv
LyBXaGVuIGFnZ3JlZ2F0aW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHNlY3Rpb25zIGluIHRoZSBm
aWx0ZXIgZm9yCisgICAgLy8gZGlmZmVyZW50IGJhbmRzIHdlIGNob29zZSB0byB0YWtlIHRoZSBt
aW5pbXVtIG9mIGFsbCBvZiB0aGVtLiBBcyBhbgorICAgIC8vIGV4YW1wbGUsIGlmIGZvciBvbmUg
b2YgdGhlIGJhbmRzIGl0IGlzIHRoZSBkaXJlY3QgcGF0aCBpdHMgbWFpbgorICAgIC8vIGNvbnRy
aWJ1dG9yIHRvIHRoZSBmaW5hbCBlY2hvIGVzdGltYXRlLCB3ZSBjb25zaWRlciB0aGUgZGlyZWN0
IHBhdGggaXMKKyAgICAvLyBhcyB3ZWxsIHRoZSBtYWluIGNvbnRyaWJ1dG9yIGZvciB0aGUgc3Vi
YmFuZCB0aGF0IGNvbnRhaW5zIHRoYXQKKyAgICAvLyBwYXJ0aWN1bGFyIGJhbmQuIFRoYXQgYWdn
cmVnYXRlIG51bWJlciBvZiBzZWN0aW9ucyB3aWxsIGJlIGxhdGVyIHVzZWQgYXMKKyAgICAvLyB0
aGUgaWRlbnRpZmllciBvZiB0aGUgZXJsZSBlc3RpbWF0b3IgdGhhdCBuZWVkcyB0byBiZSB1cGRh
dGVkLgorICAgIFJUQ19EQ0hFQ0tfTEUoa0JhbmRCb3VuZGFyaWVzW3N1YmJhbmQgKyAxXSwgbl9h
Y3RpdmVfc2VjdGlvbnMuc2l6ZSgpKTsKKyAgICBpZHhfc3ViYmFuZHNbc3ViYmFuZF0gPSAqc3Rk
OjptaW5fZWxlbWVudCgKKyAgICAgICAgbl9hY3RpdmVfc2VjdGlvbnMuYmVnaW4oKSArIGtCYW5k
Qm91bmRhcmllc1tzdWJiYW5kXSwKKyAgICAgICAgbl9hY3RpdmVfc2VjdGlvbnMuYmVnaW4oKSAr
IGtCYW5kQm91bmRhcmllc1tzdWJiYW5kICsgMV0pOworICB9CisKKyAgc3RkOjphcnJheTxmbG9h
dCwga1N1YmJhbmRzPiBuZXdfZXJsZTsKKyAgc3RkOjphcnJheTxib29sLCBrU3ViYmFuZHM+IGlz
X2VybGVfdXBkYXRlZDsKKyAgaXNfZXJsZV91cGRhdGVkLmZpbGwoZmFsc2UpOworICBuZXdfZXJs
ZS5maWxsKDAuZik7CisgIGZvciAoc2l6ZV90IHN1YmJhbmQgPSAwOyBzdWJiYW5kIDwga1N1YmJh
bmRzOyArK3N1YmJhbmQpIHsKKyAgICBpZiAoWDJfc3ViYmFuZHNbc3ViYmFuZF0gPiBrWDJCYW5k
RW5lcmd5VGhyZXNob2xkICYmCisgICAgICAgIEUyX3N1YmJhbmRzW3N1YmJhbmRdID4gMCkgewor
ICAgICAgbmV3X2VybGVbc3ViYmFuZF0gPSBZMl9zdWJiYW5kc1tzdWJiYW5kXSAvIEUyX3N1YmJh
bmRzW3N1YmJhbmRdOworICAgICAgUlRDX0RDSEVDS19HVChuZXdfZXJsZVtzdWJiYW5kXSwgMCk7
CisgICAgICBpc19lcmxlX3VwZGF0ZWRbc3ViYmFuZF0gPSB0cnVlOworICAgICAgKytudW1fdXBk
YXRlc19bc3ViYmFuZF07CisgICAgfQorICB9CisKKyAgZm9yIChzaXplX3Qgc3ViYmFuZCA9IDA7
IHN1YmJhbmQgPCBrU3ViYmFuZHM7ICsrc3ViYmFuZCkgeworICAgIGNvbnN0IHNpemVfdCBpZHgg
PSBpZHhfc3ViYmFuZHNbc3ViYmFuZF07CisgICAgUlRDX0RDSEVDS19MVChpZHgsIGVybGVfZXN0
aW1hdG9yc18uc2l6ZSgpKTsKKyAgICBmbG9hdCBhbHBoYSA9IG5ld19lcmxlW3N1YmJhbmRdID4g
ZXJsZV9lc3RpbWF0b3JzX1tpZHhdW3N1YmJhbmRdCisgICAgICAgICAgICAgICAgICAgICAgPyBr
U210aENvbnN0YW50SW5jcmVhc2VzCisgICAgICAgICAgICAgICAgICAgICAgOiBrU210aENvbnN0
YW50RGVjcmVhc2VzOworICAgIGFscGhhID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGlzX2VybGVfdXBk
YXRlZFtzdWJiYW5kXSkgKiBhbHBoYTsKKyAgICBlcmxlX2VzdGltYXRvcnNfW2lkeF1bc3ViYmFu
ZF0gKz0KKyAgICAgICAgYWxwaGEgKiAobmV3X2VybGVbc3ViYmFuZF0gLSBlcmxlX2VzdGltYXRv
cnNfW2lkeF1bc3ViYmFuZF0pOworICAgIGVybGVfZXN0aW1hdG9yc19baWR4XVtzdWJiYW5kXSA9
IHJ0Yzo6U2FmZUNsYW1wKAorICAgICAgICBlcmxlX2VzdGltYXRvcnNfW2lkeF1bc3ViYmFuZF0s
IG1pbl9lcmxlXywgbWF4X2VybGVfW3N1YmJhbmRdKTsKKyAgfQorCisgIGZvciAoc2l6ZV90IHN1
YmJhbmQgPSAwOyBzdWJiYW5kIDwga1N1YmJhbmRzOyArK3N1YmJhbmQpIHsKKyAgICBmbG9hdCBh
bHBoYSA9IG5ld19lcmxlW3N1YmJhbmRdID4gZXJsZV9yZWZfW3N1YmJhbmRdCisgICAgICAgICAg
ICAgICAgICAgICAgPyBrU210aENvbnN0YW50SW5jcmVhc2VzCisgICAgICAgICAgICAgICAgICAg
ICAgOiBrU210aENvbnN0YW50RGVjcmVhc2VzOworICAgIGFscGhhID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGlzX2VybGVfdXBkYXRlZFtzdWJiYW5kXSkgKiBhbHBoYTsKKyAgICBlcmxlX3JlZl9bc3Vi
YmFuZF0gKz0gYWxwaGEgKiAobmV3X2VybGVbc3ViYmFuZF0gLSBlcmxlX3JlZl9bc3ViYmFuZF0p
OworICAgIGVybGVfcmVmX1tzdWJiYW5kXSA9CisgICAgICAgIHJ0Yzo6U2FmZUNsYW1wKGVybGVf
cmVmX1tzdWJiYW5kXSwgbWluX2VybGVfLCBtYXhfZXJsZV9bc3ViYmFuZF0pOworICB9CisKKyAg
Zm9yIChzaXplX3Qgc3ViYmFuZCA9IDA7IHN1YmJhbmQgPCBrU3ViYmFuZHM7ICsrc3ViYmFuZCkg
eworICAgIGNvbnN0ZXhwciBpbnQga051bVVwZGF0ZVRociA9IDUwOworICAgIGlmIChpc19lcmxl
X3VwZGF0ZWRbc3ViYmFuZF0gJiYgbnVtX3VwZGF0ZXNfW3N1YmJhbmRdID4ga051bVVwZGF0ZVRo
cikgeworICAgICAgY29uc3Qgc2l6ZV90IGlkeCA9IGlkeF9zdWJiYW5kc1tzdWJiYW5kXTsKKyAg
ICAgIFJUQ19EQ0hFQ0tfR1QoZXJsZV9yZWZfW3N1YmJhbmRdLCAwLmYpOworICAgICAgLy8gQ29t
cHV0ZXMgdGhlIHJhdGlvIGJldHdlZW4gdGhlIGVybGUgdGhhdCBpcyB1cGRhdGVkIHVzaW5nIGFs
bCB0aGUKKyAgICAgIC8vIHBvaW50cyBhbmQgdGhlIGVybGUgdGhhdCBpcyB1cGRhdGVkIG9ubHkg
b24gc2lnbmFscyB0aGF0IHNoYXJlIHRoZQorICAgICAgLy8gc2FtZSBudW1iZXIgb2YgYWN0aXZl
IGZpbHRlciBzZWN0aW9ucy4KKyAgICAgIGZsb2F0IG5ld19jb3JyZWN0aW9uX2ZhY3RvciA9Cisg
ICAgICAgICAgZXJsZV9lc3RpbWF0b3JzX1tpZHhdW3N1YmJhbmRdIC8gZXJsZV9yZWZfW3N1YmJh
bmRdOworCisgICAgICBjb3JyZWN0aW9uX2ZhY3RvcnNfW2lkeF1bc3ViYmFuZF0gKz0KKyAgICAg
ICAgICAwLjFmICogKG5ld19jb3JyZWN0aW9uX2ZhY3RvciAtIGNvcnJlY3Rpb25fZmFjdG9yc19b
aWR4XVtzdWJiYW5kXSk7CisgICAgfQorICB9Cit9CisKK3ZvaWQgU2lnbmFsRGVwZW5kZW50RXJs
ZUVzdGltYXRvcjo6Q29tcHV0ZUVjaG9Fc3RpbWF0ZVBlckZpbHRlclNlY3Rpb24oCisgICAgY29u
c3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4+JgorICAgICAgICBmaWx0ZXJfZnJl
cXVlbmN5X3Jlc3BvbnNlKSB7CisgIGNvbnN0IFZlY3RvckJ1ZmZlciYgc3BlY3RydW1fcmVuZGVy
X2J1ZmZlciA9CisgICAgICByZW5kZXJfYnVmZmVyLkdldFNwZWN0cnVtQnVmZmVyKCk7CisKKyAg
UlRDX0RDSEVDS19FUShTMl9zZWN0aW9uX2FjY3VtXy5zaXplKCkgKyAxLAorICAgICAgICAgICAg
ICAgIHNlY3Rpb25fYm91bmRhcmllc19ibG9ja3NfLnNpemUoKSk7CisgIHNpemVfdCBpZHhfcmVu
ZGVyID0gcmVuZGVyX2J1ZmZlci5Qb3NpdGlvbigpOworICBpZHhfcmVuZGVyID0gc3BlY3RydW1f
cmVuZGVyX2J1ZmZlci5PZmZzZXRJbmRleCgKKyAgICAgIGlkeF9yZW5kZXIsIHNlY3Rpb25fYm91
bmRhcmllc19ibG9ja3NfWzBdKTsKKworICBmb3IgKHNpemVfdCBzZWN0aW9uID0gMDsgc2VjdGlv
biA8IG51bV9zZWN0aW9uc187ICsrc2VjdGlvbikgeworICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtG
ZnRMZW5ndGhCeTJQbHVzMT4gWDJfc2VjdGlvbjsKKyAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0
TGVuZ3RoQnkyUGx1czE+IEgyX3NlY3Rpb247CisgICAgWDJfc2VjdGlvbi5maWxsKDAuZik7Cisg
ICAgSDJfc2VjdGlvbi5maWxsKDAuZik7CisgICAgZm9yIChzaXplX3QgYmxvY2sgPSBzZWN0aW9u
X2JvdW5kYXJpZXNfYmxvY2tzX1tzZWN0aW9uXTsKKyAgICAgICAgIGJsb2NrIDwgc2VjdGlvbl9i
b3VuZGFyaWVzX2Jsb2Nrc19bc2VjdGlvbiArIDFdOyArK2Jsb2NrKSB7CisgICAgICBzdGQ6OnRy
YW5zZm9ybShYMl9zZWN0aW9uLmJlZ2luKCksIFgyX3NlY3Rpb24uZW5kKCksCisgICAgICAgICAg
ICAgICAgICAgICBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVyLmJ1ZmZlcltpZHhfcmVuZGVyXS5iZWdp
bigpLAorICAgICAgICAgICAgICAgICAgICAgWDJfc2VjdGlvbi5iZWdpbigpLCBzdGQ6OnBsdXM8
ZmxvYXQ+KCkpOworICAgICAgc3RkOjp0cmFuc2Zvcm0oSDJfc2VjdGlvbi5iZWdpbigpLCBIMl9z
ZWN0aW9uLmVuZCgpLAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNw
b25zZVtibG9ja10uYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgIEgyX3NlY3Rpb24uYmVn
aW4oKSwgc3RkOjpwbHVzPGZsb2F0PigpKTsKKyAgICAgIGlkeF9yZW5kZXIgPSBzcGVjdHJ1bV9y
ZW5kZXJfYnVmZmVyLkluY0luZGV4KGlkeF9yZW5kZXIpOworICAgIH0KKworICAgIHN0ZDo6dHJh
bnNmb3JtKFgyX3NlY3Rpb24uYmVnaW4oKSwgWDJfc2VjdGlvbi5lbmQoKSwgSDJfc2VjdGlvbi5i
ZWdpbigpLAorICAgICAgICAgICAgICAgICAgIFMyX3NlY3Rpb25fYWNjdW1fW3NlY3Rpb25dLmJl
Z2luKCksCisgICAgICAgICAgICAgICAgICAgc3RkOjptdWx0aXBsaWVzPGZsb2F0PigpKTsKKyAg
fQorCisgIGZvciAoc2l6ZV90IHNlY3Rpb24gPSAxOyBzZWN0aW9uIDwgbnVtX3NlY3Rpb25zXzsg
KytzZWN0aW9uKSB7CisgICAgc3RkOjp0cmFuc2Zvcm0oUzJfc2VjdGlvbl9hY2N1bV9bc2VjdGlv
biAtIDFdLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgUzJfc2VjdGlvbl9hY2N1bV9bc2Vj
dGlvbiAtIDFdLmVuZCgpLAorICAgICAgICAgICAgICAgICAgIFMyX3NlY3Rpb25fYWNjdW1fW3Nl
Y3Rpb25dLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgUzJfc2VjdGlvbl9hY2N1bV9bc2Vj
dGlvbl0uYmVnaW4oKSwgc3RkOjpwbHVzPGZsb2F0PigpKTsKKyAgfQorfQorCit2b2lkIFNpZ25h
bERlcGVuZGVudEVybGVFc3RpbWF0b3I6OkNvbXB1dGVBY3RpdmVGaWx0ZXJTZWN0aW9ucygKKyAg
ICBydGM6OkFycmF5VmlldzxzaXplX3Q+IG51bWJlcl9hY3RpdmVfZmlsdGVyX3NlY3Rpb25zKSBj
b25zdCB7CisgIHN0ZDo6ZmlsbChudW1iZXJfYWN0aXZlX2ZpbHRlcl9zZWN0aW9ucy5iZWdpbigp
LAorICAgICAgICAgICAgbnVtYmVyX2FjdGl2ZV9maWx0ZXJfc2VjdGlvbnMuZW5kKCksIDApOwor
ICBmb3IgKHNpemVfdCBrID0gMDsgayA8IGtGZnRMZW5ndGhCeTJQbHVzMTsgKytrKSB7CisgICAg
c2l6ZV90IHNlY3Rpb24gPSBudW1fc2VjdGlvbnNfOworICAgIGZsb2F0IHRhcmdldCA9IDAuOWYg
KiBTMl9zZWN0aW9uX2FjY3VtX1tudW1fc2VjdGlvbnNfIC0gMV1ba107CisgICAgd2hpbGUgKHNl
Y3Rpb24gPiAwICYmIFMyX3NlY3Rpb25fYWNjdW1fW3NlY3Rpb24gLSAxXVtrXSA+PSB0YXJnZXQp
IHsKKyAgICAgIG51bWJlcl9hY3RpdmVfZmlsdGVyX3NlY3Rpb25zW2tdID0gLS1zZWN0aW9uOwor
ICAgIH0KKyAgfQorfQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2VzdGltYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4YjU2YzJi
MjBjMzgyZGQyMTljMGRkMjdhZDY1MzVjYmU0OTVjZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yLmgKQEAgLTAsMCArMSw5
MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FFQzNfU0lHTkFMX0RFUEVOREVOVF9FUkxFX0VTVElNQVRPUl9IXworI2RlZmluZSBN
T0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TSUdOQUxfREVQRU5ERU5UX0VSTEVfRVNUSU1B
VE9SX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVk
ZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIz
X2NvbmZpZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNf
Y29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVy
X2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2Fw
bV9kYXRhX2R1bXBlci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gVGhpcyBjbGFzcyBl
c3RpbWF0ZXMgdGhlIGRlcGVuZGVuY3kgb2YgdGhlIEVybGUgdG8gdGhlIGlucHV0IHNpZ25hbC4g
QnkKKy8vIGxvb2tpbmcgYXQgdGhlIGlucHV0IHNpZ25hbCwgYW4gZXN0aW1hdGlvbiBvbiB3aGV0
aGVyIHRoZSBjdXJyZW50IGVjaG8KKy8vIGVzdGltYXRlIGlzIGR1ZSB0byB0aGUgZGlyZWN0IHBh
dGggb3IgdG8gYSBtb3JlIHJldmVyYmVyYW50IG9uZSBpcyBwZXJmb3JtZWQuCisvLyBPbmNlIHRo
YXQgZXN0aW1hdGlvbiBpcyBkb25lLCBpdCBpcyBwb3NzaWJsZSB0byByZWZpbmUgdGhlIGF2ZXJh
Z2UgRXJsZSB0aGF0CisvLyB0aGlzIGNsYXNzIHJlY2VpdmUgYXMgYW4gaW5wdXQuCitjbGFzcyBT
aWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFNpZ25h
bERlcGVuZGVudEVybGVFc3RpbWF0b3IoY29uc3QgRWNob0NhbmNlbGxlcjNDb25maWcmIGNvbmZp
Zyk7CisKKyAgflNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3IoKTsKKworICB2b2lkIFJlc2V0
KCk7CisKKyAgLy8gUmV0dXJucyB0aGUgRXJsZSBwZXIgZnJlcXVlbmN5IHN1YmJhbmQuCisgIGNv
bnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIEVybGUoKSBjb25zdCB7
IHJldHVybiBlcmxlXzsgfQorCisgIC8vIFVwZGF0ZXMgdGhlIEVybGUgZXN0aW1hdGUuIFRoZSBF
cmxlIHRoYXQgaXMgcGFzc2VkIGFzIGFuIGlucHV0IGlzIHJlcXVpcmVkCisgIC8vIHRvIGJlIGFu
IGVzdGltYXRpb24gb2YgdGhlIGF2ZXJhZ2UgRXJsZSBhY2hpZXZlZCBieSB0aGUgbGluZWFyIGZp
bHRlci4KKyAgdm9pZCBVcGRhdGUoY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVyLAor
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVu
Z3RoQnkyUGx1czE+PiYKKyAgICAgICAgICAgICAgICAgIGZpbHRlcl9mcmVxdWVuY3lfcmVzcG9u
c2UsCisgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwKKyAgICAg
ICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFkyLAorICAgICAgICAgICAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gRTIsCisgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IGZsb2F0PiBhdmVyYWdlX2VybGUsCisgICAgICAgICAgICAgIGJvb2wgY29udmVy
Z2VkX2ZpbHRlcik7CisKKyAgdm9pZCBEdW1wKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxBcG1EYXRh
RHVtcGVyPiYgZGF0YV9kdW1wZXIpIGNvbnN0OworCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGtTdWJiYW5kcyA9IDY7CisKKyBwcml2YXRlOgorICB2b2lkIENvbXB1dGVOdW1iZXJPZkFjdGl2
ZUZpbHRlclNlY3Rpb25zKAorICAgICAgY29uc3QgUmVuZGVyQnVmZmVyJiByZW5kZXJfYnVmZmVy
LAorICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5
MlBsdXMxPj4mCisgICAgICAgICAgZmlsdGVyX2ZyZXF1ZW5jeV9yZXNwb25zZSwKKyAgICAgIHJ0
Yzo6QXJyYXlWaWV3PHNpemVfdD4gbl9hY3RpdmVfZmlsdGVyX3NlY3Rpb25zKTsKKworICB2b2lk
IFVwZGF0ZUNvcnJlY3Rpb25GYWN0b3JzKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9h
dD4gWTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29u
c3QgZmxvYXQ+IEUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IHNpemVfdD4gbl9hY3RpdmVfc2VjdGlvbnMpOworCisgIHZvaWQgQ29tcHV0ZUVj
aG9Fc3RpbWF0ZVBlckZpbHRlclNlY3Rpb24oCisgICAgICBjb25zdCBSZW5kZXJCdWZmZXImIHJl
bmRlcl9idWZmZXIsCisgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OmFycmF5PGZsb2F0LCBr
RmZ0TGVuZ3RoQnkyUGx1czE+PiYKKyAgICAgICAgICBmaWx0ZXJfZnJlcXVlbmN5X3Jlc3BvbnNl
KTsKKworICB2b2lkIENvbXB1dGVBY3RpdmVGaWx0ZXJTZWN0aW9ucygKKyAgICAgIHJ0Yzo6QXJy
YXlWaWV3PHNpemVfdD4gbnVtYmVyX2FjdGl2ZV9maWx0ZXJfc2VjdGlvbnMpIGNvbnN0OworCisg
IGNvbnN0IGZsb2F0IG1pbl9lcmxlXzsKKyAgY29uc3Qgc2l6ZV90IG51bV9zZWN0aW9uc187Cisg
IGNvbnN0IHNpemVfdCBudW1fYmxvY2tzXzsKKyAgY29uc3Qgc2l6ZV90IGRlbGF5X2hlYWRyb29t
X2Jsb2Nrc187CisgIGNvbnN0IHN0ZDo6YXJyYXk8c2l6ZV90LCBrRmZ0TGVuZ3RoQnkyUGx1czE+
IGJhbmRfdG9fc3ViYmFuZF87CisgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtTdWJiYW5kcz4g
bWF4X2VybGVfOworICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+IHNlY3Rpb25fYm91bmRhcmll
c19ibG9ja3NfOworICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IGVybGVf
OworICBzdGQ6OnZlY3RvcjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+PiBT
Ml9zZWN0aW9uX2FjY3VtXzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwga1N1YmJh
bmRzPj4gZXJsZV9lc3RpbWF0b3JzXzsKKyAgc3RkOjphcnJheTxmbG9hdCwga1N1YmJhbmRzPiBl
cmxlX3JlZl87CisgIHN0ZDo6dmVjdG9yPHN0ZDo6YXJyYXk8ZmxvYXQsIGtTdWJiYW5kcz4+IGNv
cnJlY3Rpb25fZmFjdG9yc187CisgIHN0ZDo6YXJyYXk8aW50LCBrU3ViYmFuZHM+IG51bV91cGRh
dGVzXzsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUVDM19TSUdOQUxfREVQRU5ERU5UX0VSTEVfRVNUSU1BVE9SX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1h
dG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2lnbmFsX2RlcGVuZGVudF9lcmxlX2Vz
dGltYXRvcl91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWM2MDVmN2FiZjAyODVkMDM1NTJiMmMx
MWZiM2E1MzIyNjk4YWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2lnbmFs
X2RlcGVuZGVudF9lcmxlX2VzdGltYXRvcl91bml0dGVzdC5jYwpAQCAtMCwwICsxLDE1NSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
CisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9zaWduYWxfZGVwZW5kZW50X2VybGVfZXN0aW1hdG9yLmgiCisKKyNpbmNsdWRlIDxh
bGdvcml0aG0+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5j
bHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVyM19jb25maWcuaCIKKyNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9yZW5kZXJfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2RlbGF5X2J1ZmZlci5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2d0
ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1lc3BhY2UgeworCit2b2lkIEdldEFj
dGl2ZUZyYW1lKHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PiB4KSB7CisgIGNvbnN0IHN0ZDo6YXJyYXk8
ZmxvYXQsIGtCbG9ja1NpemU+IGZyYW1lID0geworICAgICAgNzQ1OS44OCwgMTcyMDkuNiwgMTcz
ODMsICAgMjA3NjguOSwgMTY4MTYuNywgMTgzODYuMywgNDQ5Mi44MywgOTY3NS44NSwKKyAgICAg
IDY2NjUuNTIsIDE0ODA4LjYsIDkzNDIuMywgIDc0ODMuMjgsIDE5MjYxLjcsIDQxNDUuOTgsIDE2
MjIuMTgsIDEzNDc1LjIsCisgICAgICA3MTY2LjMyLCA2ODU2LjYxLCAyMTkzNywgICA3MjYzLjE0
LCA5NTY5LjA3LCAxNDkxOSwgICA4NDEzLjMyLCA3NTUxLjg5LAorICAgICAgNzg0OC42NSwgNjAx
MS4yNywgMTMwODAuNiwgMTU4NjUuMiwgMTI2NTYsICAgMTc0NTkuNiwgNDI2My45MywgNDUwMy4w
MywKKyAgICAgIDkzMTEuNzksIDIxMDk1LjgsIDEyNjU3LjksIDEzOTA2LjYsIDE5MjY3LjIsIDEx
MzM4LjEsIDE2ODI4LjksIDExNTAxLjYsCisgICAgICAxMTQwNSwgICAxNTAzMS40LCAxNDU0MS42
LCAxOTc2NS41LCAxODM0Ni4zLCAxOTM1MC4yLCAzMTU3LjQ3LCAxODA5NS44LAorICAgICAgMTc0
My42OCwgMjEzMjguMiwgMTk3MjcuNSwgNzI5NS4xNiwgMTAzMzIuNCwgMTEwNTUuNSwgMjAxMDcu
NCwgMTQ3MDguNCwKKyAgICAgIDEyNDE2LjIsIDE2NDM0LCAgIDI0NTQuNjksIDk4NDAuOCwgIDY4
NjcuMjMsIDE2MTUuNzUsIDYwNTkuOSwgIDgzOTQuMTl9OworICBSVENfRENIRUNLX0dFKHguc2l6
ZSgpLCBmcmFtZS5zaXplKCkpOworICBzdGQ6OmNvcHkoZnJhbWUuYmVnaW4oKSwgZnJhbWUuZW5k
KCksIHguYmVnaW4oKSk7Cit9CisKK2NsYXNzIFRlc3RJbnB1dHMgeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgVGVzdElucHV0cyhjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZyYgY2ZnKTsKKyAgflRl
c3RJbnB1dHMoKTsKKyAgY29uc3QgUmVuZGVyQnVmZmVyJiBHZXRSZW5kZXJCdWZmZXIoKSB7IHJl
dHVybiAqcmVuZGVyX2J1ZmZlcl87IH0KKyAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IEdl
dFgyKCkgeyByZXR1cm4gWDJfOyB9CisgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBHZXRZ
MigpIHsgcmV0dXJuIFkyXzsgfQorICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gR2V0RTIo
KSB7IHJldHVybiBFMl87IH0KKyAgc3RkOjp2ZWN0b3I8c3RkOjphcnJheTxmbG9hdCwga0ZmdExl
bmd0aEJ5MlBsdXMxPj4gR2V0SDIoKSB7IHJldHVybiBIMl87IH0KKyAgdm9pZCBVcGRhdGUoKTsK
KworIHByaXZhdGU6CisgIHZvaWQgVXBkYXRlQ3VycmVudFBvd2VyU3BlY3RyYSgpOworICBpbnQg
bl8gPSAwOworICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxh
eV9idWZmZXJfOworICBSZW5kZXJCdWZmZXIqIHJlbmRlcl9idWZmZXJfOworICBzdGQ6OmFycmF5
PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFgyXzsKKyAgc3RkOjphcnJheTxmbG9hdCwga0Zm
dExlbmd0aEJ5MlBsdXMxPiBZMl87CisgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQ
bHVzMT4gRTJfOworICBzdGQ6OnZlY3RvcjxzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnky
UGx1czE+PiBIMl87CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4geF87Cit9Owor
CitUZXN0SW5wdXRzOjpUZXN0SW5wdXRzKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjZmcp
CisgICAgOiByZW5kZXJfZGVsYXlfYnVmZmVyXyhSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihj
ZmcsIDEpKSwKKyAgICAgIEgyXyhjZmcuZmlsdGVyLm1haW4ubGVuZ3RoX2Jsb2NrcyksCisgICAg
ICB4XygxLCBzdGQ6OnZlY3RvcjxmbG9hdD4oa0Jsb2NrU2l6ZSwgMC5mKSkgeworICByZW5kZXJf
ZGVsYXlfYnVmZmVyXy0+U2V0RGVsYXkoNCk7CisgIHJlbmRlcl9idWZmZXJfID0gcmVuZGVyX2Rl
bGF5X2J1ZmZlcl8tPkdldFJlbmRlckJ1ZmZlcigpOworICBmb3IgKGF1dG8mIEggOiBIMl8pIHsK
KyAgICBILmZpbGwoMC5mKTsKKyAgfQorICBIMl9bMF0uZmlsbCgxLjBmKTsKK30KKworVGVzdElu
cHV0czo6flRlc3RJbnB1dHMoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgVGVzdElucHV0czo6VXBkYXRl
KCkgeworICBpZiAobl8gJSAyID09IDApIHsKKyAgICBzdGQ6OmZpbGwoeF9bMF0uYmVnaW4oKSwg
eF9bMF0uZW5kKCksIDAuZik7CisgIH0gZWxzZSB7CisgICAgR2V0QWN0aXZlRnJhbWUoeF9bMF0p
OworICB9CisKKyAgcmVuZGVyX2RlbGF5X2J1ZmZlcl8tPkluc2VydCh4Xyk7CisgIHJlbmRlcl9k
ZWxheV9idWZmZXJfLT5QcmVwYXJlQ2FwdHVyZVByb2Nlc3NpbmcoKTsKKyAgVXBkYXRlQ3VycmVu
dFBvd2VyU3BlY3RyYSgpOworICArK25fOworfQorCit2b2lkIFRlc3RJbnB1dHM6OlVwZGF0ZUN1
cnJlbnRQb3dlclNwZWN0cmEoKSB7CisgIGNvbnN0IFZlY3RvckJ1ZmZlciYgc3BlY3RydW1fcmVu
ZGVyX2J1ZmZlciA9CisgICAgICByZW5kZXJfYnVmZmVyXy0+R2V0U3BlY3RydW1CdWZmZXIoKTsK
KyAgc2l6ZV90IGlkeCA9IHJlbmRlcl9idWZmZXJfLT5Qb3NpdGlvbigpOworICBzaXplX3QgcHJl
dl9pZHggPSBzcGVjdHJ1bV9yZW5kZXJfYnVmZmVyLk9mZnNldEluZGV4KGlkeCwgMSk7CisgIGF1
dG8mIFgyID0gc3BlY3RydW1fcmVuZGVyX2J1ZmZlci5idWZmZXJbaWR4XTsKKyAgYXV0byYgWDJf
cHJldiA9IHNwZWN0cnVtX3JlbmRlcl9idWZmZXIuYnVmZmVyW3ByZXZfaWR4XTsKKyAgc3RkOjpj
b3B5KFgyLmJlZ2luKCksIFgyLmVuZCgpLCBYMl8uYmVnaW4oKSk7CisgIFJUQ19EQ0hFQ0tfRVEo
WDIuc2l6ZSgpLCBZMl8uc2l6ZSgpKTsKKyAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBYMi5zaXpl
KCk7ICsraykgeworICAgIEUyX1trXSA9IDAuMDFmICogWDJfcHJldltrXTsKKyAgICBZMl9ba10g
PSBYMltrXSArIEUyX1trXTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKKworVEVTVChTaWdu
YWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yLCBTd2VlcFNldHRpbmdzKSB7CisgIEVjaG9DYW5jZWxs
ZXIzQ29uZmlnIGNmZzsKKyAgc2l6ZV90IG1heF9sZW5ndGhfYmxvY2tzID0gNTA7CisgIGZvciAo
c2l6ZV90IGJsb2NrcyA9IDA7IGJsb2NrcyA8IG1heF9sZW5ndGhfYmxvY2tzOyBibG9ja3MgPSBi
bG9ja3MgKyAxMCkgeworICAgIGZvciAoc2l6ZV90IGRlbGF5X2hlYWRyb29tID0gMDsgZGVsYXlf
aGVhZHJvb20gPCA1OyArK2RlbGF5X2hlYWRyb29tKSB7CisgICAgICBmb3IgKHNpemVfdCBudW1f
c2VjdGlvbnMgPSAyOyBudW1fc2VjdGlvbnMgPCBtYXhfbGVuZ3RoX2Jsb2NrczsKKyAgICAgICAg
ICAgKytudW1fc2VjdGlvbnMpIHsKKyAgICAgICAgY2ZnLmZpbHRlci5tYWluLmxlbmd0aF9ibG9j
a3MgPSBibG9ja3M7CisgICAgICAgIGNmZy5maWx0ZXIubWFpbl9pbml0aWFsLmxlbmd0aF9ibG9j
a3MgPQorICAgICAgICAgICAgc3RkOjptaW4oY2ZnLmZpbHRlci5tYWluX2luaXRpYWwubGVuZ3Ro
X2Jsb2NrcywgYmxvY2tzKTsKKyAgICAgICAgY2ZnLmRlbGF5LmRlbGF5X2hlYWRyb29tX2Jsb2Nr
cyA9IGRlbGF5X2hlYWRyb29tOworICAgICAgICBjZmcuZXJsZS5udW1fc2VjdGlvbnMgPSBudW1f
c2VjdGlvbnM7CisgICAgICAgIGlmIChFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6VmFsaWRhdGUoJmNm
ZykpIHsKKyAgICAgICAgICBTaWduYWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yIHMoY2ZnKTsKKyAg
ICAgICAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IGF2ZXJhZ2VfZXJs
ZTsKKyAgICAgICAgICBhdmVyYWdlX2VybGUuZmlsbChjZmcuZXJsZS5tYXhfbCk7CisgICAgICAg
ICAgVGVzdElucHV0cyBpbnB1dHMoY2ZnKTsKKyAgICAgICAgICBmb3IgKHNpemVfdCBuID0gMDsg
biA8IDEwOyArK24pIHsKKyAgICAgICAgICAgIGlucHV0cy5VcGRhdGUoKTsKKyAgICAgICAgICAg
IHMuVXBkYXRlKGlucHV0cy5HZXRSZW5kZXJCdWZmZXIoKSwgaW5wdXRzLkdldEgyKCksIGlucHV0
cy5HZXRYMigpLAorICAgICAgICAgICAgICAgICAgICAgaW5wdXRzLkdldFkyKCksIGlucHV0cy5H
ZXRFMigpLCBhdmVyYWdlX2VybGUsIHRydWUpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgfQorICAgIH0KKyAgfQorfQorCitURVNUKFNpZ25hbERlcGVuZGVudEVybGVFc3RpbWF0b3Is
IExvbmdlclJ1bikgeworICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjZmc7CisgIGNmZy5maWx0ZXIu
bWFpbi5sZW5ndGhfYmxvY2tzID0gMjsKKyAgY2ZnLmZpbHRlci5tYWluX2luaXRpYWwubGVuZ3Ro
X2Jsb2NrcyA9IDE7CisgIGNmZy5kZWxheS5kZWxheV9oZWFkcm9vbV9ibG9ja3MgPSAwOworICBj
ZmcuZGVsYXkuaHlzdGVyZXNpc19saW1pdF8xX2Jsb2NrcyA9IDA7CisgIGNmZy5lcmxlLm51bV9z
ZWN0aW9ucyA9IDI7CisgIEVYUEVDVF9FUShFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6VmFsaWRhdGUo
JmNmZyksIHRydWUpOworICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IGF2
ZXJhZ2VfZXJsZTsKKyAgYXZlcmFnZV9lcmxlLmZpbGwoY2ZnLmVybGUubWF4X2wpOworICBTaWdu
YWxEZXBlbmRlbnRFcmxlRXN0aW1hdG9yIHMoY2ZnKTsKKyAgVGVzdElucHV0cyBpbnB1dHMoY2Zn
KTsKKyAgZm9yIChzaXplX3QgbiA9IDA7IG4gPCAyMDA7ICsrbikgeworICAgIGlucHV0cy5VcGRh
dGUoKTsKKyAgICBzLlVwZGF0ZShpbnB1dHMuR2V0UmVuZGVyQnVmZmVyKCksIGlucHV0cy5HZXRI
MigpLCBpbnB1dHMuR2V0WDIoKSwKKyAgICAgICAgICAgICBpbnB1dHMuR2V0WTIoKSwgaW5wdXRz
LkdldEUyKCksIGF2ZXJhZ2VfZXJsZSwgdHJ1ZSk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc2tld19lc3RpbWF0b3IuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9za2V3X2VzdGltYXRvci5jYwppbmRleCAzMTBlNGU5ZGQxZGEyMmM1NDFi
YTNhMDcwOGI0YTQ0ZmVmNGIwNWZiLi5hMjA5OWZjZDAxMzAxYzJiOTU4NDgzNjhhNzM0MWZjZDZk
OWU3NzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9za2V3X2VzdGltYXRvci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9za2V3X2VzdGltYXRvci5jYwpAQCAtMTAsNyArMTAsNiBAQAogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdfZXN0aW1hdG9yLmgiCiAK
ICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bnVtZXJpYz4KIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdfZXN0aW1hdG9yLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWVjMy9za2V3X2VzdGltYXRvci5oCmluZGV4IGZmMjUyNjAyNWE4N2ZhYWZhZmU2
N2RkMDljMzBiOWY3NDdjNTM1YmMuLmIwOTQ2ZDgzM2U1NDNhODcyYTZhYjIzYzdkZGYwMjhkOWVj
Y2E2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3NrZXdfZXN0aW1hdG9yLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvc2tld19lc3RpbWF0b3IuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRl
ZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TS0VXX0VTVElNQVRPUl9IXwogI2RlZmlu
ZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TS0VXX0VTVElNQVRPUl9IXwogCisjaW5j
bHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBl
cy9vcHRpb25hbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3RhdGlvbmFyaXR5X2Vz
dGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N0YXRpb25hcml0eV9lc3RpbWF0b3IuY2MKaW5k
ZXggZWZlYWJmMTExN2YyMDk4ZjQzNGY3Mjg5OTc2NTdhNjQ1MjllODhjNC4uMjUxMDBiZmQ0YWY1
NmU3NDVjOTVjZmQ2ZDg2Njc2ZGYzYzdjMjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
c3RhdGlvbmFyaXR5X2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdGF0aW9uYXJp
dHlfZXN0aW1hdG9yLmNjCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5j
bHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rvcl9idWZmZXIuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKQEAgLTQw
LDcgKzQxLDYgQEAgdm9pZCBTdGF0aW9uYXJpdHlFc3RpbWF0b3I6OlJlc2V0KCkgewogICBub2lz
ZV8uUmVzZXQoKTsKICAgaGFuZ292ZXJzXy5maWxsKDApOwogICBzdGF0aW9uYXJpdHlfZmxhZ3Nf
LmZpbGwoZmFsc2UpOwotICByZW5kZXJfcmV2ZXJiXy5SZXNldCgpOwogfQogCiAvLyBVcGRhdGUg
anVzdCB0aGUgbm9pc2UgZXN0aW1hdG9yLiBVc2VmdWxsIHVudGlsIHRoZSBkZWxheSBpcyBrbm93
bgpAQCAtNTQsOSArNTQsOSBAQCB2b2lkIFN0YXRpb25hcml0eUVzdGltYXRvcjo6VXBkYXRlTm9p
c2VFc3RpbWF0b3IoCiAKIHZvaWQgU3RhdGlvbmFyaXR5RXN0aW1hdG9yOjpVcGRhdGVTdGF0aW9u
YXJpdHlGbGFncygKICAgICBjb25zdCBWZWN0b3JCdWZmZXImIHNwZWN0cnVtX2J1ZmZlciwKKyAg
ICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmVuZGVyX3JldmVyYl9jb250cmlidXRpb25f
c3BlY3RydW0sCiAgICAgaW50IGlkeF9jdXJyZW50LAotICAgIGludCBudW1fbG9va2FoZWFkLAot
ICAgIGZsb2F0IHJldmVyYl9kZWNheSkgeworICAgIGludCBudW1fbG9va2FoZWFkKSB7CiAgIHN0
ZDo6YXJyYXk8aW50LCBrV2luZG93TGVuZ3RoPiBpbmRleGVzOwogICBpbnQgbnVtX2xvb2thaGVh
ZF9ib3VuZGVkID0gc3RkOjptaW4obnVtX2xvb2thaGVhZCwga1dpbmRvd0xlbmd0aCAtIDEpOwog
ICBpbnQgaWR4ID0gaWR4X2N1cnJlbnQ7CkBAIC03OSwxMiArNzksOSBAQCB2b2lkIFN0YXRpb25h
cml0eUVzdGltYXRvcjo6VXBkYXRlU3RhdGlvbmFyaXR5RmxhZ3MoCiAgICAgICBzcGVjdHJ1bV9i
dWZmZXIuRGVjSW5kZXgoaW5kZXhlc1trV2luZG93TGVuZ3RoIC0gMV0pLAogICAgICAgc3BlY3Ry
dW1fYnVmZmVyLk9mZnNldEluZGV4KGlkeF9jdXJyZW50LCAtKG51bV9sb29rYWhlYWRfYm91bmRl
ZCArIDEpKSk7CiAKLSAgaW50IGlkeF9wYXN0ID0gc3BlY3RydW1fYnVmZmVyLkluY0luZGV4KGlk
eF9jdXJyZW50KTsKLSAgcmVuZGVyX3JldmVyYl8uVXBkYXRlUmV2ZXJiQ29udHJpYnV0aW9uc05v
RnJlcVNoYXBpbmcoCi0gICAgICBzcGVjdHJ1bV9idWZmZXIuYnVmZmVyW2lkeF9wYXN0XSwgMS4w
ZiwgcmV2ZXJiX2RlY2F5KTsKICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBzdGF0aW9uYXJpdHlf
ZmxhZ3NfLnNpemUoKTsgKytrKSB7CiAgICAgc3RhdGlvbmFyaXR5X2ZsYWdzX1trXSA9IEVzdGlt
YXRlQmFuZFN0YXRpb25hcml0eSgKLSAgICAgICAgc3BlY3RydW1fYnVmZmVyLCByZW5kZXJfcmV2
ZXJiXy5HZXRQb3dlclNwZWN0cnVtKCksIGluZGV4ZXMsIGspOworICAgICAgICBzcGVjdHJ1bV9i
dWZmZXIsIHJlbmRlcl9yZXZlcmJfY29udHJpYnV0aW9uX3NwZWN0cnVtLCBpbmRleGVzLCBrKTsK
ICAgfQogICBVcGRhdGVIYW5nb3ZlcigpOwogICBTbW9vdGhTdGF0aW9uYXJ5UGVyRnJlcSgpOwpA
QCAtMTAyLDcgKzk5LDcgQEAgYm9vbCBTdGF0aW9uYXJpdHlFc3RpbWF0b3I6OklzQmxvY2tTdGF0
aW9uYXJ5KCkgY29uc3QgewogCiBib29sIFN0YXRpb25hcml0eUVzdGltYXRvcjo6RXN0aW1hdGVC
YW5kU3RhdGlvbmFyaXR5KAogICAgIGNvbnN0IFZlY3RvckJ1ZmZlciYgc3BlY3RydW1fYnVmZmVy
LAotICAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIHJldmVy
YiwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmV2ZXJiLAogICAgIGNvbnN0IHN0
ZDo6YXJyYXk8aW50LCBrV2luZG93TGVuZ3RoPiYgaW5kZXhlcywKICAgICBzaXplX3QgYmFuZCkg
Y29uc3QgewogICBjb25zdGV4cHIgZmxvYXQga1RoclN0YXRpb25hcml0eSA9IDEwLmY7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdGF0aW9uYXJpdHlfZXN0aW1hdG9yLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9zdGF0aW9uYXJpdHlfZXN0aW1hdG9yLmgKaW5kZXggZTJjNWE2MjUzNDcxZjg0ODZm
MTFiZWU3YzYxOTM3NzRjNTRhZTZkOS4uNzA0ODU5YTFmZTc4M2M1OWMxYjhlZWY3OTQ2MWM1NTBm
MTllNDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3RhdGlvbmFyaXR5X2VzdGltYXRv
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N0YXRpb25hcml0eV9lc3RpbWF0b3IuaApAQCAtMTEs
MTggKzExLDE5IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMzX1NUQVRJ
T05BUklUWV9FU1RJTUFUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FF
QzNfU1RBVElPTkFSSVRZX0VTVElNQVRPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5j
bHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lu
Y2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvYWVjM19jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy9hZWMzX2NvbW1vbi5oIiAgLy8ga0ZmdExlbmd0aEJ5MlBsdXMxLi4uCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmV2ZXJiX21vZGVsLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5oIgorI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgQXBt
RGF0YUR1bXBlcjsKK3N0cnVjdCBWZWN0b3JCdWZmZXI7CiAKIGNsYXNzIFN0YXRpb25hcml0eUVz
dGltYXRvciB7CiAgcHVibGljOgpAQCAtMzcsMTAgKzM4LDExIEBAIGNsYXNzIFN0YXRpb25hcml0
eUVzdGltYXRvciB7CiAKICAgLy8gVXBkYXRlIHRoZSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0
aGlzIGN1cnJlbnQgZnJhbWUgaXMgc3RhdGlvbmFyeS4gRm9yCiAgIC8vIGdldHRpbmcgYSBtb3Jl
IHJvYnVzdCBlc3RpbWF0aW9uLCBpdCBsb29rcyBhdCBmdXR1cmUgYW5kL29yIHBhc3QgZnJhbWVz
LgotICB2b2lkIFVwZGF0ZVN0YXRpb25hcml0eUZsYWdzKGNvbnN0IFZlY3RvckJ1ZmZlciYgc3Bl
Y3RydW1fYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZHhfY3Vy
cmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtX2xvb2thaGVhZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCByZXZlcmJfZGVjYXkpOworICB2
b2lkIFVwZGF0ZVN0YXRpb25hcml0eUZsYWdzKAorICAgICAgY29uc3QgVmVjdG9yQnVmZmVyJiBz
cGVjdHJ1bV9idWZmZXIsCisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmVuZGVy
X3JldmVyYl9jb250cmlidXRpb25fc3BlY3RydW0sCisgICAgICBpbnQgaWR4X2N1cnJlbnQsCisg
ICAgICBpbnQgbnVtX2xvb2thaGVhZCk7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJy
ZW50IGJhbmQgaXMgc3RhdGlvbmFyeS4KICAgYm9vbCBJc0JhbmRTdGF0aW9uYXJ5KHNpemVfdCBi
YW5kKSBjb25zdCB7CkBAIC01NywxMSArNTksMTAgQEAgY2xhc3MgU3RhdGlvbmFyaXR5RXN0aW1h
dG9yIHsKIAogICAvLyBHZXQgYW4gZXN0aW1hdGlvbiBvZiB0aGUgc3RhdGlvbmFyaXR5IGZvciB0
aGUgY3VycmVudCBiYW5kIGJ5IGxvb2tpbmcKICAgLy8gYXQgdGhlIHBhc3QvcHJlc2VudC9mdXR1
cmUgYXZhaWxhYmxlIGRhdGEuCi0gIGJvb2wgRXN0aW1hdGVCYW5kU3RhdGlvbmFyaXR5KAotICAg
ICAgY29uc3QgVmVjdG9yQnVmZmVyJiBzcGVjdHJ1bV9idWZmZXIsCi0gICAgICBjb25zdCBzdGQ6
OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiByZXZlcmIsCi0gICAgICBjb25zdCBz
dGQ6OmFycmF5PGludCwga1dpbmRvd0xlbmd0aD4mIGluZGV4ZXMsCi0gICAgICBzaXplX3QgYmFu
ZCkgY29uc3Q7CisgIGJvb2wgRXN0aW1hdGVCYW5kU3RhdGlvbmFyaXR5KGNvbnN0IFZlY3RvckJ1
ZmZlciYgc3BlY3RydW1fYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gcmV2ZXJiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OmFycmF5PGludCwga1dpbmRvd0xlbmd0aD4mIGluZGV4ZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBiYW5kKSBjb25zdDsKIAog
ICAvLyBUcnVlIGlmIGFsbCBiYW5kcyBhdCB0aGUgY3VycmVudCBwb2ludCBhcmUgc3RhdGlvbmFy
eS4KICAgYm9vbCBBcmVBbGxCYW5kc1N0YXRpb25hcnkoKTsKQEAgLTExMSw3ICsxMTIsNiBAQCBj
bGFzcyBTdGF0aW9uYXJpdHlFc3RpbWF0b3IgewogICBOb2lzZVNwZWN0cnVtIG5vaXNlXzsKICAg
c3RkOjphcnJheTxpbnQsIGtGZnRMZW5ndGhCeTJQbHVzMT4gaGFuZ292ZXJzXzsKICAgc3RkOjph
cnJheTxib29sLCBrRmZ0TGVuZ3RoQnkyUGx1czE+IHN0YXRpb25hcml0eV9mbGFnc187Ci0gIFJl
dmVyYk1vZGVsIHJlbmRlcl9yZXZlcmJfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3ViYmFuZF9lcmxlX2VzdGltYXRvci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3N1YmJhbmRfZXJsZV9lc3RpbWF0b3IuY2MKaW5kZXggZDhjYjdhNzYzMTVm
MjY2MjRhMTA2NTQwZDc1ZTY5YTM5Y2VjZDcyNS4uOTQ1M2U1NzM5ZjBkNmEzOTE0MzA4ODczOWIz
MTE4NzViMzU3OTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3ViYmFuZF9lcmxlX2Vz
dGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJiYW5kX2VybGVfZXN0aW1hdG9yLmNj
CkBAIC0xMSwzNSArMTEsMzggQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy9zdWJiYW5kX2VybGVfZXN0aW1hdG9yLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0j
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKLSNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCi0jaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWMzX2NvbW1vbi5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3Nh
ZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJp
YWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIG5hbWVzcGFjZSB7Ci1jb25zdGV4cHIgaW50
IGtQb2ludHNUb0FjY3VtdWxhdGUgPSA2OworCiBjb25zdGV4cHIgZmxvYXQga1gyQmFuZEVuZXJn
eVRocmVzaG9sZCA9IDQ0MDE1MDY4LjBmOwotY29uc3RleHByIGludCBrRXJsZUhvbGQgPSAxMDA7
Ci1jb25zdGV4cHIgaW50IGtCbG9ja3NGb3JPbnNldERldGVjdGlvbiA9IGtFcmxlSG9sZCArIDE1
MDsKK2NvbnN0ZXhwciBpbnQga0Jsb2Nrc1RvSG9sZEVybGUgPSAxMDA7Citjb25zdGV4cHIgaW50
IGtCbG9ja3NGb3JPbnNldERldGVjdGlvbiA9IGtCbG9ja3NUb0hvbGRFcmxlICsgMTUwOworY29u
c3RleHByIGludCBrUG9pbnRzVG9BY2N1bXVsYXRlID0gNjsKIAogYm9vbCBFbmFibGVBZGFwdEVy
bGVPbkxvd1JlbmRlcigpIHsKICAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJS
VEMtQWVjM0FkYXB0RXJsZU9uTG93UmVuZGVyS2lsbFN3aXRjaCIpOwogfQogCitzdGQ6OmFycmF5
PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFNldE1heEVybGVCYW5kcyhmbG9hdCBtYXhfZXJs
ZV9sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgbWF4X2VybGVfaCkgeworICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnky
UGx1czE+IG1heF9lcmxlOworICBzdGQ6OmZpbGwobWF4X2VybGUuYmVnaW4oKSwgbWF4X2VybGUu
YmVnaW4oKSArIGtGZnRMZW5ndGhCeTIgLyAyLCBtYXhfZXJsZV9sKTsKKyAgc3RkOjpmaWxsKG1h
eF9lcmxlLmJlZ2luKCkgKyBrRmZ0TGVuZ3RoQnkyIC8gMiwgbWF4X2VybGUuZW5kKCksIG1heF9l
cmxlX2gpOworICByZXR1cm4gbWF4X2VybGU7Cit9CisKIH0gIC8vIG5hbWVzcGFjZQogCi1TdWJi
YW5kRXJsZUVzdGltYXRvcjo6U3ViYmFuZEVybGVFc3RpbWF0b3IoZmxvYXQgbWluX2VybGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4X2VybGVf
bGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4
X2VybGVfaGYpCi0gICAgOiBtaW5fZXJsZV8obWluX2VybGUpLAotICAgICAgbWF4X2VybGVfbGZf
KG1heF9lcmxlX2xmKSwKLSAgICAgIG1heF9lcmxlX2hmXyhtYXhfZXJsZV9oZiksCitTdWJiYW5k
RXJsZUVzdGltYXRvcjo6U3ViYmFuZEVybGVFc3RpbWF0b3IoY29uc3QgRWNob0NhbmNlbGxlcjND
b25maWcmIGNvbmZpZykKKyAgICA6IG1pbl9lcmxlXyhjb25maWcuZXJsZS5taW4pLAorICAgICAg
bWF4X2VybGVfKFNldE1heEVybGVCYW5kcyhjb25maWcuZXJsZS5tYXhfbCwgY29uZmlnLmVybGUu
bWF4X2gpKSwKICAgICAgIGFkYXB0X29uX2xvd19yZW5kZXJfKEVuYWJsZUFkYXB0RXJsZU9uTG93
UmVuZGVyKCkpIHsKICAgUmVzZXQoKTsKIH0KQEAgLTQ5LDggKzUyLDkgQEAgU3ViYmFuZEVybGVF
c3RpbWF0b3I6On5TdWJiYW5kRXJsZUVzdGltYXRvcigpID0gZGVmYXVsdDsKIHZvaWQgU3ViYmFu
ZEVybGVFc3RpbWF0b3I6OlJlc2V0KCkgewogICBlcmxlXy5maWxsKG1pbl9lcmxlXyk7CiAgIGVy
bGVfb25zZXRzXy5maWxsKG1pbl9lcmxlXyk7Ci0gIGhvbGRfY291bnRlcnNfLmZpbGwoMCk7CiAg
IGNvbWluZ19vbnNldF8uZmlsbCh0cnVlKTsKKyAgaG9sZF9jb3VudGVyc18uZmlsbCgwKTsKKyAg
UmVzZXRBY2N1bXVsYXRlZFNwZWN0cmEoKTsKIH0KIAogdm9pZCBTdWJiYW5kRXJsZUVzdGltYXRv
cjo6VXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwKQEAgLTYyLDEwICs2Niw4
IEBAIHZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6OlVwZGF0ZShydGM6OkFycmF5Vmlldzxjb25z
dCBmbG9hdD4gWDIsCiAgICAgLy8gTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGNvbnZlcmdlZF9m
aWx0ZXIgZmxhZyBhbHJlYWR5IGltcG9zZWQKICAgICAvLyBhIG1pbmltdW0gb2YgdGhlIGVybGUg
dGhhdCBjYW4gYmUgZXN0aW1hdGVkIGFzIHRoYXQgZmxhZyB3b3VsZAogICAgIC8vIGJlIGZhbHNl
IGlmIHRoZSBmaWx0ZXIgaXMgcGVyZm9ybWluZyBwb29ybHkuCi0gICAgY29uc3RleHByIHNpemVf
dCBrRmZ0TGVuZ3RoQnk0ID0ga0ZmdExlbmd0aEJ5MiAvIDI7Ci0gICAgVXBkYXRlQmFuZHMoWDIs
IFkyLCBFMiwgMSwga0ZmdExlbmd0aEJ5NCwgbWF4X2VybGVfbGZfLCBvbnNldF9kZXRlY3Rpb24p
OwotICAgIFVwZGF0ZUJhbmRzKFgyLCBZMiwgRTIsIGtGZnRMZW5ndGhCeTQsIGtGZnRMZW5ndGhC
eTIsIG1heF9lcmxlX2hmXywKLSAgICAgICAgICAgICAgICBvbnNldF9kZXRlY3Rpb24pOworICAg
IFVwZGF0ZUFjY3VtdWxhdGVkU3BlY3RyYShYMiwgWTIsIEUyKTsKKyAgICBVcGRhdGVCYW5kcyhv
bnNldF9kZXRlY3Rpb24pOwogICB9CiAKICAgaWYgKG9uc2V0X2RldGVjdGlvbikgewpAQCAtNzgs
NTMgKzgwLDQ1IEBAIHZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6OlVwZGF0ZShydGM6OkFycmF5
Vmlldzxjb25zdCBmbG9hdD4gWDIsCiAKIHZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6OkR1bXAo
CiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEFwbURhdGFEdW1wZXI+JiBkYXRhX2R1bXBlcikg
Y29uc3QgewotICBkYXRhX2R1bXBlci0+RHVtcFJhdygiYWVjM19lcmxlIiwgRXJsZSgpKTsKICAg
ZGF0YV9kdW1wZXItPkR1bXBSYXcoImFlYzNfZXJsZV9vbnNldCIsIEVybGVPbnNldHMoKSk7CiB9
CiAKLXZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6OlVwZGF0ZUJhbmRzKHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IGZsb2F0PiBYMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBZMiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBFMiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzdGFydCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzdG9wLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4X2VybGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIG9uc2V0X2RldGVjdGlvbikgewotICBhdXRvIGVy
bGVfYmFuZF91cGRhdGUgPSBbXShmbG9hdCBlcmxlX2JhbmQsIGZsb2F0IG5ld19lcmxlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvd19yZW5kZXJfZW5lcmd5LCBmbG9hdCBh
bHBoYV9pbmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGFscGhhX2RlYywg
ZmxvYXQgbWluX2VybGUsIGZsb2F0IG1heF9lcmxlKSB7Ci0gICAgaWYgKG5ld19lcmxlIDwgZXJs
ZV9iYW5kICYmIGxvd19yZW5kZXJfZW5lcmd5KSB7Ci0gICAgICAvLyBEZWNyZWFzZXMgYXJlIG5v
dCBhbGxvd2VkIGlmIGxvdyByZW5kZXIgZW5lcmd5IHNpZ25hbHMgd2VyZSB1c2VkIGZvcgotICAg
ICAgLy8gdGhlIGVybGUgY29tcHV0YXRpb24uCi0gICAgICByZXR1cm4gZXJsZV9iYW5kOwordm9p
ZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6VXBkYXRlQmFuZHMoYm9vbCBvbnNldF9kZXRlY3Rpb24p
IHsKKyAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5Mj4gbmV3X2VybGU7CisgIHN0ZDo6
YXJyYXk8Ym9vbCwga0ZmdExlbmd0aEJ5Mj4gaXNfZXJsZV91cGRhdGVkOworICBpc19lcmxlX3Vw
ZGF0ZWQuZmlsbChmYWxzZSk7CisKKyAgZm9yIChzaXplX3QgayA9IDE7IGsgPCBrRmZ0TGVuZ3Ro
QnkyOyArK2spIHsKKyAgICBpZiAoYWNjdW1fc3BlY3RyYV8ubnVtX3BvaW50c19ba10gPT0ga1Bv
aW50c1RvQWNjdW11bGF0ZSAmJgorICAgICAgICBhY2N1bV9zcGVjdHJhXy5FMl9ba10gPiAwLmYp
IHsKKyAgICAgIG5ld19lcmxlW2tdID0gYWNjdW1fc3BlY3RyYV8uWTJfW2tdIC8gYWNjdW1fc3Bl
Y3RyYV8uRTJfW2tdOworICAgICAgaXNfZXJsZV91cGRhdGVkW2tdID0gdHJ1ZTsKICAgICB9Ci0g
ICAgZmxvYXQgYWxwaGEgPSBuZXdfZXJsZSA+IGVybGVfYmFuZCA/IGFscGhhX2luYyA6IGFscGhh
X2RlYzsKLSAgICBmbG9hdCBlcmxlX2JhbmRfb3V0ID0gZXJsZV9iYW5kOwotICAgIGVybGVfYmFu
ZF9vdXQgPSBlcmxlX2JhbmQgKyBhbHBoYSAqIChuZXdfZXJsZSAtIGVybGVfYmFuZCk7Ci0gICAg
ZXJsZV9iYW5kX291dCA9IHJ0Yzo6U2FmZUNsYW1wKGVybGVfYmFuZF9vdXQsIG1pbl9lcmxlLCBt
YXhfZXJsZSk7Ci0gICAgcmV0dXJuIGVybGVfYmFuZF9vdXQ7Ci0gIH07Ci0KLSAgZm9yIChzaXpl
X3QgayA9IHN0YXJ0OyBrIDwgc3RvcDsgKytrKSB7Ci0gICAgaWYgKGFkYXB0X29uX2xvd19yZW5k
ZXJfIHx8IFgyW2tdID4ga1gyQmFuZEVuZXJneVRocmVzaG9sZCkgewotICAgICAgYm9vbCBsb3df
cmVuZGVyX2VuZXJneSA9IGZhbHNlOwotICAgICAgYWJzbDo6b3B0aW9uYWw8ZmxvYXQ+IG5ld19l
cmxlID0gaW5zdGFudGFuZW91c19lcmxlXy5VcGRhdGUoCi0gICAgICAgICAgWDJba10sIFkyW2td
LCBFMltrXSwgaywgJmxvd19yZW5kZXJfZW5lcmd5KTsKLSAgICAgIGlmIChuZXdfZXJsZSkgewot
ICAgICAgICBSVENfRENIRUNLKGFkYXB0X29uX2xvd19yZW5kZXJfIHx8ICFsb3dfcmVuZGVyX2Vu
ZXJneSk7Ci0gICAgICAgIGlmIChvbnNldF9kZXRlY3Rpb24gJiYgIWxvd19yZW5kZXJfZW5lcmd5
KSB7Ci0gICAgICAgICAgaWYgKGNvbWluZ19vbnNldF9ba10pIHsKLSAgICAgICAgICAgIGNvbWlu
Z19vbnNldF9ba10gPSBmYWxzZTsKLSAgICAgICAgICAgIGVybGVfb25zZXRzX1trXSA9IGVybGVf
YmFuZF91cGRhdGUoCi0gICAgICAgICAgICAgICAgZXJsZV9vbnNldHNfW2tdLCBuZXdfZXJsZS52
YWx1ZSgpLCBsb3dfcmVuZGVyX2VuZXJneSwgMC4xNWYsCi0gICAgICAgICAgICAgICAgMC4zZiwg
bWluX2VybGVfLCBtYXhfZXJsZSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGhvbGRfY291bnRl
cnNfW2tdID0ga0Jsb2Nrc0Zvck9uc2V0RGV0ZWN0aW9uOworICB9CisKKyAgaWYgKG9uc2V0X2Rl
dGVjdGlvbikgeworICAgIGZvciAoc2l6ZV90IGsgPSAxOyBrIDwga0ZmdExlbmd0aEJ5MjsgKytr
KSB7CisgICAgICBpZiAoaXNfZXJsZV91cGRhdGVkW2tdICYmICFhY2N1bV9zcGVjdHJhXy5sb3df
cmVuZGVyX2VuZXJneV9ba10pIHsKKyAgICAgICAgaWYgKGNvbWluZ19vbnNldF9ba10pIHsKKyAg
ICAgICAgICBjb21pbmdfb25zZXRfW2tdID0gZmFsc2U7CisgICAgICAgICAgZmxvYXQgYWxwaGEg
PSBuZXdfZXJsZVtrXSA8IGVybGVfb25zZXRzX1trXSA/IDAuM2YgOiAwLjE1ZjsKKyAgICAgICAg
ICBlcmxlX29uc2V0c19ba10gPSBydGM6OlNhZmVDbGFtcCgKKyAgICAgICAgICAgICAgZXJsZV9v
bnNldHNfW2tdICsgYWxwaGEgKiAobmV3X2VybGVba10gLSBlcmxlX29uc2V0c19ba10pLAorICAg
ICAgICAgICAgICBtaW5fZXJsZV8sIG1heF9lcmxlX1trXSk7CiAgICAgICAgIH0KKyAgICAgICAg
aG9sZF9jb3VudGVyc19ba10gPSBrQmxvY2tzRm9yT25zZXREZXRlY3Rpb247CisgICAgICB9Cisg
ICAgfQorICB9CiAKLSAgICAgICAgZXJsZV9ba10gPQotICAgICAgICAgICAgZXJsZV9iYW5kX3Vw
ZGF0ZShlcmxlX1trXSwgbmV3X2VybGUudmFsdWUoKSwgbG93X3JlbmRlcl9lbmVyZ3ksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMDVmLCAwLjFmLCBtaW5fZXJsZV8sIG1heF9lcmxl
KTsKKyAgZm9yIChzaXplX3QgayA9IDE7IGsgPCBrRmZ0TGVuZ3RoQnkyOyArK2spIHsKKyAgICBp
ZiAoaXNfZXJsZV91cGRhdGVkW2tdKSB7CisgICAgICBmbG9hdCBhbHBoYSA9IDAuMDVmOworICAg
ICAgaWYgKG5ld19lcmxlW2tdIDwgZXJsZV9ba10pIHsKKyAgICAgICAgYWxwaGEgPSBhY2N1bV9z
cGVjdHJhXy5sb3dfcmVuZGVyX2VuZXJneV9ba10gPyAwLmYgOiAwLjFmOwogICAgICAgfQorICAg
ICAgZXJsZV9ba10gPSBydGM6OlNhZmVDbGFtcChlcmxlX1trXSArIGFscGhhICogKG5ld19lcmxl
W2tdIC0gZXJsZV9ba10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZXJs
ZV8sIG1heF9lcmxlX1trXSk7CiAgICAgfQogICB9CiB9CkBAIC0xMzIsNyArMTI2LDcgQEAgdm9p
ZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6VXBkYXRlQmFuZHMocnRjOjpBcnJheVZpZXc8Y29uc3Qg
ZmxvYXQ+IFgyLAogdm9pZCBTdWJiYW5kRXJsZUVzdGltYXRvcjo6RGVjcmVhc2VFcmxlUGVyQmFu
ZEZvckxvd1JlbmRlclNpZ25hbHMoKSB7CiAgIGZvciAoc2l6ZV90IGsgPSAxOyBrIDwga0ZmdExl
bmd0aEJ5MjsgKytrKSB7CiAgICAgaG9sZF9jb3VudGVyc19ba10tLTsKLSAgICBpZiAoaG9sZF9j
b3VudGVyc19ba10gPD0gKGtCbG9ja3NGb3JPbnNldERldGVjdGlvbiAtIGtFcmxlSG9sZCkpIHsK
KyAgICBpZiAoaG9sZF9jb3VudGVyc19ba10gPD0gKGtCbG9ja3NGb3JPbnNldERldGVjdGlvbiAt
IGtCbG9ja3NUb0hvbGRFcmxlKSkgewogICAgICAgaWYgKGVybGVfW2tdID4gZXJsZV9vbnNldHNf
W2tdKSB7CiAgICAgICAgIGVybGVfW2tdID0gc3RkOjptYXgoZXJsZV9vbnNldHNfW2tdLCAwLjk3
ZiAqIGVybGVfW2tdKTsKICAgICAgICAgUlRDX0RDSEVDS19MRShtaW5fZXJsZV8sIGVybGVfW2td
KTsKQEAgLTE0NSw0MyArMTM5LDU1IEBAIHZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6OkRlY3Jl
YXNlRXJsZVBlckJhbmRGb3JMb3dSZW5kZXJTaWduYWxzKCkgewogICB9CiB9CiAKLVN1YmJhbmRF
cmxlRXN0aW1hdG9yOjpFcmxlSW5zdGFudGFuZW91czo6RXJsZUluc3RhbnRhbmVvdXMoKSB7Ci0g
IFJlc2V0KCk7Cit2b2lkIFN1YmJhbmRFcmxlRXN0aW1hdG9yOjpSZXNldEFjY3VtdWxhdGVkU3Bl
Y3RyYSgpIHsKKyAgYWNjdW1fc3BlY3RyYV8uWTJfLmZpbGwoMC5mKTsKKyAgYWNjdW1fc3BlY3Ry
YV8uRTJfLmZpbGwoMC5mKTsKKyAgYWNjdW1fc3BlY3RyYV8ubnVtX3BvaW50c18uZmlsbCgwKTsK
KyAgYWNjdW1fc3BlY3RyYV8ubG93X3JlbmRlcl9lbmVyZ3lfLmZpbGwoZmFsc2UpOwogfQogCi1T
dWJiYW5kRXJsZUVzdGltYXRvcjo6RXJsZUluc3RhbnRhbmVvdXM6On5FcmxlSW5zdGFudGFuZW91
cygpID0gZGVmYXVsdDsKLQotYWJzbDo6b3B0aW9uYWw8ZmxvYXQ+IFN1YmJhbmRFcmxlRXN0aW1h
dG9yOjpFcmxlSW5zdGFudGFuZW91czo6VXBkYXRlKAotICAgIGZsb2F0IFgyLAotICAgIGZsb2F0
IFkyLAotICAgIGZsb2F0IEUyLAotICAgIHNpemVfdCBiYW5kLAotICAgIGJvb2wqIGxvd19yZW5k
ZXJfZW5lcmd5KSB7Ci0gIGFic2w6Om9wdGlvbmFsPGZsb2F0PiBlcmxlX2luc3RhbnRhbmVvdXMg
PSBhYnNsOjpudWxsb3B0OwotICBSVENfRENIRUNLX0xUKGJhbmQsIGtGZnRMZW5ndGhCeTJQbHVz
MSk7Ci0gIFkyX2FjdW1fW2JhbmRdICs9IFkyOwotICBFMl9hY3VtX1tiYW5kXSArPSBFMjsKLSAg
bG93X3JlbmRlcl9lbmVyZ3lfW2JhbmRdID0KLSAgICAgIGxvd19yZW5kZXJfZW5lcmd5X1tiYW5k
XSB8fCBYMiA8IGtYMkJhbmRFbmVyZ3lUaHJlc2hvbGQ7Ci0gIGlmICgrK251bV9wb2ludHNfW2Jh
bmRdID09IGtQb2ludHNUb0FjY3VtdWxhdGUpIHsKLSAgICBpZiAoRTJfYWN1bV9bYmFuZF0pIHsK
LSAgICAgIGVybGVfaW5zdGFudGFuZW91cyA9IFkyX2FjdW1fW2JhbmRdIC8gRTJfYWN1bV9bYmFu
ZF07Cit2b2lkIFN1YmJhbmRFcmxlRXN0aW1hdG9yOjpVcGRhdGVBY2N1bXVsYXRlZFNwZWN0cmEo
CisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFgyLAorICAgIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IGZsb2F0PiBZMiwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gRTIpIHsK
KyAgYXV0byYgc3QgPSBhY2N1bV9zcGVjdHJhXzsKKyAgaWYgKGFkYXB0X29uX2xvd19yZW5kZXJf
KSB7CisgICAgaWYgKHN0Lm51bV9wb2ludHNfWzBdID09IGtQb2ludHNUb0FjY3VtdWxhdGUpIHsK
KyAgICAgIHN0Lm51bV9wb2ludHNfWzBdID0gMDsKKyAgICAgIHN0LlkyXy5maWxsKDAuZik7Cisg
ICAgICBzdC5FMl8uZmlsbCgwLmYpOworICAgICAgc3QubG93X3JlbmRlcl9lbmVyZ3lfLmZpbGwo
ZmFsc2UpOworICAgIH0KKyAgICBzdGQ6OnRyYW5zZm9ybShZMi5iZWdpbigpLCBZMi5lbmQoKSwg
c3QuWTJfLmJlZ2luKCksIHN0LlkyXy5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6
cGx1czxmbG9hdD4oKSk7CisgICAgc3RkOjp0cmFuc2Zvcm0oRTIuYmVnaW4oKSwgRTIuZW5kKCks
IHN0LkUyXy5iZWdpbigpLCBzdC5FMl8uYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6
OnBsdXM8ZmxvYXQ+KCkpOworCisgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBYMi5zaXplKCk7
ICsraykgeworICAgICAgc3QubG93X3JlbmRlcl9lbmVyZ3lfW2tdID0KKyAgICAgICAgICBzdC5s
b3dfcmVuZGVyX2VuZXJneV9ba10gfHwgWDJba10gPCBrWDJCYW5kRW5lcmd5VGhyZXNob2xkOwor
ICAgIH0KKyAgICBzdC5udW1fcG9pbnRzX1swXSsrOworICAgIHN0Lm51bV9wb2ludHNfLmZpbGwo
c3QubnVtX3BvaW50c19bMF0pOworCisgIH0gZWxzZSB7CisgICAgLy8gVGhlIHVwZGF0ZSBpcyBh
bHdheXMgZG9uZSB1c2luZyBoaWdoIHJlbmRlciBlbmVyZ3kgc2lnbmFscyBhbmQKKyAgICAvLyB0
aGVyZWZvcmUgdGhlIGZpZWxkIGFjY3VtX3NwZWN0cmFfLmxvd19yZW5kZXJfZW5lcmd5XyBkb2Vz
IG5vdCBuZWVkIHRvCisgICAgLy8gYmUgbW9kaWZpZWQuCisgICAgZm9yIChzaXplX3QgayA9IDA7
IGsgPCBYMi5zaXplKCk7ICsraykgeworICAgICAgaWYgKFgyW2tdID4ga1gyQmFuZEVuZXJneVRo
cmVzaG9sZCkgeworICAgICAgICBpZiAoc3QubnVtX3BvaW50c19ba10gPT0ga1BvaW50c1RvQWNj
dW11bGF0ZSkgeworICAgICAgICAgIHN0LlkyX1trXSA9IDAuZjsKKyAgICAgICAgICBzdC5FMl9b
a10gPSAwLmY7CisgICAgICAgICAgc3QubnVtX3BvaW50c19ba10gPSAwOworICAgICAgICB9Cisg
ICAgICAgIHN0LlkyX1trXSArPSBZMltrXTsKKyAgICAgICAgc3QuRTJfW2tdICs9IEUyW2tdOwor
ICAgICAgICBzdC5udW1fcG9pbnRzX1trXSsrOworICAgICAgfQorICAgICAgUlRDX0RDSEVDS19F
UShzdC5sb3dfcmVuZGVyX2VuZXJneV9ba10sIGZhbHNlKTsKICAgICB9Ci0gICAgKmxvd19yZW5k
ZXJfZW5lcmd5ID0gbG93X3JlbmRlcl9lbmVyZ3lfW2JhbmRdOwotICAgIG51bV9wb2ludHNfW2Jh
bmRdID0gMDsKLSAgICBZMl9hY3VtX1tiYW5kXSA9IDAuZjsKLSAgICBFMl9hY3VtX1tiYW5kXSA9
IDAuZjsKLSAgICBsb3dfcmVuZGVyX2VuZXJneV9bYmFuZF0gPSBmYWxzZTsKICAgfQotCi0gIHJl
dHVybiBlcmxlX2luc3RhbnRhbmVvdXM7Ci19Ci0KLXZvaWQgU3ViYmFuZEVybGVFc3RpbWF0b3I6
OkVybGVJbnN0YW50YW5lb3VzOjpSZXNldCgpIHsKLSAgWTJfYWN1bV8uZmlsbCgwLmYpOwotICBF
Ml9hY3VtXy5maWxsKDAuZik7Ci0gIGxvd19yZW5kZXJfZW5lcmd5Xy5maWxsKGZhbHNlKTsKLSAg
bnVtX3BvaW50c18uZmlsbCgwKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc3ViYmFuZF9lcmxlX2VzdGltYXRvci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvc3ViYmFuZF9lcmxlX2VzdGltYXRvci5oCmluZGV4IGFhNWU1Y2NiMjQ4NjM2MjU1MzIx
OGE5YzU5OTBmMzdjMDNkY2Q2YjguLmI5ODYyZGJjNmRlZjFmMzE0YTg3ZWQ0NGVmZmUyNjMzYWQ0
N2JhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YmJhbmRfZXJsZV9lc3RpbWF0b3Iu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJiYW5kX2VybGVfZXN0aW1hdG9yLmgKQEAgLTExLDEx
ICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TVUJCQU5E
X0VSTEVfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BRUMz
X1NVQkJBTkRfRVJMRV9FU1RJTUFUT1JfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1
ZGUgPGFycmF5PgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIK
KyNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2NvbmZpZy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAKQEAg
LTI0LDcgKzI2LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyBFc3RpbWF0ZXMgdGhlIGVjaG8g
cmV0dXJuIGxvc3MgZW5oYW5jZW1lbnQgZm9yIGVhY2ggZnJlcXVlbmN5IHN1YmJhbmQuCiBjbGFz
cyBTdWJiYW5kRXJsZUVzdGltYXRvciB7CiAgcHVibGljOgotICBTdWJiYW5kRXJsZUVzdGltYXRv
cihmbG9hdCBtaW5fZXJsZSwgZmxvYXQgbWF4X2VybGVfbGYsIGZsb2F0IG1heF9lcmxlX2hmKTsK
KyAgZXhwbGljaXQgU3ViYmFuZEVybGVFc3RpbWF0b3IoY29uc3QgRWNob0NhbmNlbGxlcjNDb25m
aWcmIGNvbmZpZyk7CiAgIH5TdWJiYW5kRXJsZUVzdGltYXRvcigpOwogCiAgIC8vIFJlc2V0cyB0
aGUgRVJMRSBlc3RpbWF0b3IuCkBAIC00MSw1NSArNDMsMzUgQEAgY2xhc3MgU3ViYmFuZEVybGVF
c3RpbWF0b3IgewogICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+
JiBFcmxlKCkgY29uc3QgeyByZXR1cm4gZXJsZV87IH0KIAogICAvLyBSZXR1cm5zIHRoZSBFUkxF
IGVzdGltYXRlIGF0IG9uc2V0cy4KLSAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0
aEJ5MlBsdXMxPiYgRXJsZU9uc2V0cygpIGNvbnN0IHsKLSAgICByZXR1cm4gZXJsZV9vbnNldHNf
OwotICB9CisgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBFcmxlT25zZXRzKCkgY29uc3Qg
eyByZXR1cm4gZXJsZV9vbnNldHNfOyB9CiAKICAgdm9pZCBEdW1wKGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxBcG1EYXRhRHVtcGVyPiYgZGF0YV9kdW1wZXIpIGNvbnN0OwogCiAgcHJpdmF0ZToKLSAg
dm9pZCBVcGRhdGVCYW5kcyhydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gWDIsCi0gICAgICAg
ICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFkyLAotICAgICAgICAgICAg
ICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBFMiwKLSAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgc2l6ZV90IHN0b3AsCi0gICAgICAg
ICAgICAgICAgICAgZmxvYXQgbWF4X2VybGUsCi0gICAgICAgICAgICAgICAgICAgYm9vbCBvbnNl
dF9kZXRlY3Rpb24pOwotICB2b2lkIERlY3JlYXNlRXJsZVBlckJhbmRGb3JMb3dSZW5kZXJTaWdu
YWxzKCk7Ci0KLSAgY2xhc3MgRXJsZUluc3RhbnRhbmVvdXMgewotICAgcHVibGljOgotICAgIEVy
bGVJbnN0YW50YW5lb3VzKCk7Ci0gICAgfkVybGVJbnN0YW50YW5lb3VzKCk7Ci0gICAgLy8gVXBk
YXRlcyB0aGUgRVJMRSBmb3IgYSBiYW5kIHdpdGggYSBuZXcgYmxvY2suIFJldHVybnMgYWJzbDo6
bnVsbG9wdAotICAgIC8vIGlmIG5vdCBlbm91Z2ggcG9pbnRzIHdlcmUgYWNjdW11bGF0ZWQgZm9y
IGRvaW5nIHRoZSBlc3RpbWF0aW9uLAotICAgIC8vIG90aGVyd2lzZSwgaXQgcmV0dXJucyB0aGUg
RVJMRS4gV2hlbiB0aGUgRVJMRSBpcyByZXR1cm5lZCwgdGhlCi0gICAgLy8gbG93X3JlbmRlcl9l
bmVyZ3kgZmxhZyBjb250YWlucyBpbmZvcm1hdGlvbiBvbiB3aGV0aGVyIHRoZSBlc3RpbWF0aW9u
IHdhcwotICAgIC8vIGRvbmUgdXNpbmcgbG93IGxldmVsIHJlbmRlciBzaWduYWxzLgotICAgIGFi
c2w6Om9wdGlvbmFsPGZsb2F0PiBVcGRhdGUoZmxvYXQgWDIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBZMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IEUyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJhbmQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sKiBsb3dfcmVuZGVyX2VuZXJn
eSk7Ci0gICAgLy8gUmVzZXRzIHRoZSBFUkxFIGVzdGltYXRvciB0byBpdHMgaW5pdGlhbCBzdGF0
ZS4KLSAgICB2b2lkIFJlc2V0KCk7Ci0KLSAgIHByaXZhdGU6Ci0gICAgc3RkOjphcnJheTxmbG9h
dCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBZMl9hY3VtXzsKLSAgICBzdGQ6OmFycmF5PGZsb2F0LCBr
RmZ0TGVuZ3RoQnkyUGx1czE+IEUyX2FjdW1fOworICBzdHJ1Y3QgQWNjdW11bGF0ZWRTcGVjdHJh
IHsKKyAgICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IFkyXzsKKyAgICBz
dGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IEUyXzsKICAgICBzdGQ6OmFycmF5
PGJvb2wsIGtGZnRMZW5ndGhCeTJQbHVzMT4gbG93X3JlbmRlcl9lbmVyZ3lfOwogICAgIHN0ZDo6
YXJyYXk8aW50LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IG51bV9wb2ludHNfOwogICB9OwogCi0gIEVy
bGVJbnN0YW50YW5lb3VzIGluc3RhbnRhbmVvdXNfZXJsZV87CisgIHZvaWQgVXBkYXRlQWNjdW11
bGF0ZWRTcGVjdHJhKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBYMiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IFkyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4g
RTIpOworCisgIHZvaWQgUmVzZXRBY2N1bXVsYXRlZFNwZWN0cmEoKTsKKworICB2b2lkIFVwZGF0
ZUJhbmRzKGJvb2wgb25zZXRfZGV0ZWN0aW9uKTsKKyAgdm9pZCBEZWNyZWFzZUVybGVQZXJCYW5k
Rm9yTG93UmVuZGVyU2lnbmFscygpOworCisgIGNvbnN0IGZsb2F0IG1pbl9lcmxlXzsKKyAgY29u
c3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBtYXhfZXJsZV87CisgIGNv
bnN0IGJvb2wgYWRhcHRfb25fbG93X3JlbmRlcl87CisgIEFjY3VtdWxhdGVkU3BlY3RyYSBhY2N1
bV9zcGVjdHJhXzsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBlcmxl
XzsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBlcmxlX29uc2V0c187
CiAgIHN0ZDo6YXJyYXk8Ym9vbCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBjb21pbmdfb25zZXRfOwog
ICBzdGQ6OmFycmF5PGludCwga0ZmdExlbmd0aEJ5MlBsdXMxPiBob2xkX2NvdW50ZXJzXzsKLSAg
Y29uc3QgZmxvYXQgbWluX2VybGVfOwotICBjb25zdCBmbG9hdCBtYXhfZXJsZV9sZl87Ci0gIGNv
bnN0IGZsb2F0IG1heF9lcmxlX2hmXzsKLSAgY29uc3QgYm9vbCBhZGFwdF9vbl9sb3dfcmVuZGVy
XzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1YnRyYWN0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yLmNjCmluZGV4IDYw
OWU4YWM3ZWQxYjkyN2M3MjgwOWI5MTQyMWFmN2MyNjM4NTRiOGQuLjkwMDY5YzdhNzQ5ZmM1YmIx
NTIzZjc3OGY0OWQ3OWE1NzhiN2QxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRy
YWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvci5jYwpAQCAtMTEsMTIgKzEx
LDEyIEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rv
ci5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPG51bWVyaWM+CisjaW5jbHVk
ZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvZmZ0X2RhdGEuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKICNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBT
dWJ0cmFjdG9yOjpQcm9jZXNzKGNvbnN0IFJlbmRlckJ1ZmZlciYgcmVuZGVyX2J1ZmZlciwKICAg
ICAgICAgICAgICAgICAgIGFkYXB0YXRpb25fZHVyaW5nX3NhdHVyYXRpb25fLCAmc2hhZG93X3Nh
dHVyYXRpb24pOwogCiAgIC8vIENvbXB1dGUgdGhlIHNpZ25hbCBwb3dlcnMgaW4gdGhlIHN1YnRy
YWN0b3Igb3V0cHV0LgotICBvdXRwdXQtPlVwZGF0ZVBvd2Vycyh5KTsKKyAgb3V0cHV0LT5Db21w
dXRlTWV0cmljcyh5KTsKIAogICAvLyBBZGp1c3QgdGhlIGZpbHRlciBpZiBuZWVkZWQuCiAgIGJv
b2wgbWFpbl9maWx0ZXJfYWRqdXN0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1YnRyYWN0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3IuaAppbmRleCBjOTJh
OTcxZjExNzgzNzNiYTBhMzYyYzRjYTRmYjY2N2JjOTdkYmJkLi5iZWMwMTRkZWVjOTU3ZDNjY2Rl
ZTQ3MjJjZTFmYmRkNzg2YjIwNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFj
dG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvci5oCkBAIC0xMSwxMSArMTEsMTMg
QEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfU1VCVFJBQ1RPUl9IXwog
I2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TVUJUUkFDVE9SX0hfCiAKLSNp
bmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5o
PgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlICJtYXRoLmgi
CiAKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS9hdWRpby9lY2hv
X2NhbmNlbGxlcjNfY29uZmlnLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvYWRhcHRpdmVfZmlyX2ZpbHRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvYWVjM19mZnQuaCIKQEAgLTIzLDEwICsyNSwxMSBAQAogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2VjaG9fcGF0aF92YXJpYWJpbGl0eS5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21haW5fZmlsdGVyX3VwZGF0ZV9n
YWluLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX2J1
ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3JlbmRlcl9z
aWduYWxfYW5hbHl6ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9zaGFkb3dfZmlsdGVyX3VwZGF0ZV9nYWluLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnQuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rv
cl9vdXRwdXQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5jYwppbmRleCBh
ZmZhNGEzYTA2ZmEyNGRiMWNmM2U1MmIyN2MzNDM4MjEyYjBlZDc5Li45MjJjYzNkMWIzZjNlNDEz
ZTVmMjdmMGM0N2Q3NWViMjVjOTdhYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0
cmFjdG9yX291dHB1dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dC5j
YwpAQCAtMzMsNyArMzMsNyBAQCB2b2lkIFN1YnRyYWN0b3JPdXRwdXQ6OlJlc2V0KCkgewogICB5
MiA9IDAuZjsKIH0KIAotdm9pZCBTdWJ0cmFjdG9yT3V0cHV0OjpVcGRhdGVQb3dlcnMocnRjOjpB
cnJheVZpZXc8Y29uc3QgZmxvYXQ+IHkpIHsKK3ZvaWQgU3VidHJhY3Rvck91dHB1dDo6Q29tcHV0
ZU1ldHJpY3MocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHkpIHsKICAgY29uc3QgYXV0byBz
dW1fb2Zfc3F1YXJlcyA9IFtdKGZsb2F0IGEsIGZsb2F0IGIpIHsgcmV0dXJuIGEgKyBiICogYjsg
fTsKICAgeTIgPSBzdGQ6OmFjY3VtdWxhdGUoeS5iZWdpbigpLCB5LmVuZCgpLCAwLmYsIHN1bV9v
Zl9zcXVhcmVzKTsKICAgZTJfbWFpbiA9IHN0ZDo6YWNjdW11bGF0ZShlX21haW4uYmVnaW4oKSwg
ZV9tYWluLmVuZCgpLCAwLmYsIHN1bV9vZl9zcXVhcmVzKTsKQEAgLTQyLDYgKzQyLDE0IEBAIHZv
aWQgU3VidHJhY3Rvck91dHB1dDo6VXBkYXRlUG93ZXJzKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZs
b2F0PiB5KSB7CiAgIHMyX21haW4gPSBzdGQ6OmFjY3VtdWxhdGUoc19tYWluLmJlZ2luKCksIHNf
bWFpbi5lbmQoKSwgMC5mLCBzdW1fb2Zfc3F1YXJlcyk7CiAgIHMyX3NoYWRvdyA9CiAgICAgICBz
dGQ6OmFjY3VtdWxhdGUoc19zaGFkb3cuYmVnaW4oKSwgc19zaGFkb3cuZW5kKCksIDAuZiwgc3Vt
X29mX3NxdWFyZXMpOworCisgIHNfbWFpbl9tYXhfYWJzID0gKnN0ZDo6bWF4X2VsZW1lbnQoc19t
YWluLmJlZ2luKCksIHNfbWFpbi5lbmQoKSk7CisgIHNfbWFpbl9tYXhfYWJzID0gc3RkOjptYXgo
c19tYWluX21heF9hYnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSgqc3RkOjptaW5f
ZWxlbWVudChzX21haW4uYmVnaW4oKSwgc19tYWluLmVuZCgpKSkpOworCisgIHNfc2hhZG93X21h
eF9hYnMgPSAqc3RkOjptYXhfZWxlbWVudChzX3NoYWRvdy5iZWdpbigpLCBzX3NoYWRvdy5lbmQo
KSk7CisgIHNfc2hhZG93X21heF9hYnMgPSBzdGQ6Om1heCgKKyAgICAgIHNfc2hhZG93X21heF9h
YnMsIC0oKnN0ZDo6bWluX2VsZW1lbnQoc19zaGFkb3cuYmVnaW4oKSwgc19zaGFkb3cuZW5kKCkp
KSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1
dC5oCmluZGV4IDg5NzI3ZTkzOTZmMTIyYmFmMzZiZGY4OTVhYmQ0YmU0NzhlZjg4YjMuLjVmNmZk
M2VkNzEyMDdlNDE5YjQ3Njg4N2Y3NDczOWI2YWFhOGZhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rv
cl9vdXRwdXQuaApAQCAtMzYsMTIgKzM2LDE0IEBAIHN0cnVjdCBTdWJ0cmFjdG9yT3V0cHV0IHsK
ICAgZmxvYXQgZTJfbWFpbiA9IDAuZjsKICAgZmxvYXQgZTJfc2hhZG93ID0gMC5mOwogICBmbG9h
dCB5MiA9IDAuZjsKKyAgZmxvYXQgc19tYWluX21heF9hYnMgPSAwLmY7CisgIGZsb2F0IHNfc2hh
ZG93X21heF9hYnMgPSAwLmY7CiAKICAgLy8gUmVzZXQgdGhlIHN0cnVjdCBjb250ZW50LgogICB2
b2lkIFJlc2V0KCk7CiAKICAgLy8gVXBkYXRlcyB0aGUgcG93ZXJzIG9mIHRoZSBzaWduYWxzLgot
ICB2b2lkIFVwZGF0ZVBvd2VycyhydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4geSk7CisgIHZv
aWQgQ29tcHV0ZU1ldHJpY3MocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHkpOwogfTsKIAog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJh
Y3Rvcl9vdXRwdXRfYW5hbHl6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1
dF9hbmFseXplci5jYwppbmRleCAzY2FjYjQ1NjMwMTRhMzY1YTlhMWUyNzlmOTZjMDJhYzY0ZjFh
MWZiLi45Mzc0YjgwOTlmNDdiNmI0M2IxNzU4MmNmNDNmOGQ1M2NhM2Y4NjNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dF9hbmFseXplci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjMy9zdWJ0cmFjdG9yX291dHB1dF9hbmFseXplci5jYwpAQCAtMTAsOSArMTAsOSBA
QAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9v
dXRwdXRfYW5hbHl6ZXIuaCIKIAotI2luY2x1ZGUgPGFycmF5PgotI2luY2x1ZGUgPG51bWVyaWM+
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVk
ZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9z
dWJ0cmFjdG9yX291dHB1dF9hbmFseXplci5oCmluZGV4IGI1OWE2OGU1ZTYwYjE5NDUxZWFhNTAy
MzgxY2FlMmQ1YzIzZjE4NGEuLjBlMjNhZDVkZmFmMzliMGJiNDBkMmI1YTc1ZGRkZGFiMDczMDhh
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3Jfb3V0cHV0X2FuYWx5emVy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvc3VidHJhY3Rvcl9vdXRwdXRfYW5hbHl6ZXIuaApAQCAt
MTEsNyArMTEsNiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUVDM19TVUJU
UkFDVE9SX09VVFBVVF9BTkFMWVpFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJ
TkdfQUVDM19TVUJUUkFDVE9SX09VVFBVVF9BTkFMWVpFUl9IXwogCi0jaW5jbHVkZSAiYXBpL2Fy
cmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0
cmFjdG9yX291dHB1dC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL3N1YnRyYWN0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdWJ0cmFj
dG9yX3VuaXR0ZXN0LmNjCmluZGV4IGJhNzQ0YTZhODM5NjUzN2UyMTllODYxOTAyMDJhMmRjMTQw
ZmViNzguLjhkMTRjYzFhMDcyNTI3ODg3Nzc0YmRkNTc3MjhlMzU1YTMwNjgwODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3N1YnRyYWN0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FlYzMvc3VidHJhY3Rvcl91bml0dGVzdC5jYwpAQCAtNDQsNyArNDQsNyBAQCBmbG9hdCBSdW5T
dWJ0cmFjdG9yVGVzdChpbnQgbnVtX2Jsb2Nrc190b19wcm9jZXNzLAogICBjb25maWcuZGVsYXku
bWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3MgPSAwOwogICBjb25maWcuZGVsYXkuZGVmYXVsdF9k
ZWxheSA9IDE7CiAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJEZWxheUJ1ZmZlcj4gcmVuZGVyX2Rl
bGF5X2J1ZmZlcigKLSAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUoY29uZmlnLCAzKSk7
CisgICAgICBSZW5kZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlMihjb25maWcsIDMpKTsKICAgUmVuZGVy
U2lnbmFsQW5hbHl6ZXIgcmVuZGVyX3NpZ25hbF9hbmFseXplcihjb25maWcpOwogICBSYW5kb20g
cmFuZG9tX2dlbmVyYXRvcig0MlUpOwogICBBZWMzRmZ0IGZmdDsKQEAgLTEyNyw3ICsxMjcsNyBA
QCBURVNUKFN1YnRyYWN0b3IsIERJU0FCTEVEX051bGxPdXRwdXQpIHsKICAgRWNob0NhbmNlbGxl
cjNDb25maWcgY29uZmlnOwogICBTdWJ0cmFjdG9yIHN1YnRyYWN0b3IoY29uZmlnLCAmZGF0YV9k
dW1wZXIsIERldGVjdE9wdGltaXphdGlvbigpKTsKICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckRl
bGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVyRGVsYXlCdWZmZXI6
OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVyOjpDcmVhdGUyKGNv
bmZpZywgMykpOwogICBSZW5kZXJTaWduYWxBbmFseXplciByZW5kZXJfc2lnbmFsX2FuYWx5emVy
KGNvbmZpZyk7CiAgIHN0ZDo6dmVjdG9yPGZsb2F0PiB5KGtCbG9ja1NpemUsIDAuZik7CiAKQEAg
LTE0Myw3ICsxNDMsNyBAQCBURVNUKFN1YnRyYWN0b3IsIFdyb25nQ2FwdHVyZVNpemUpIHsKICAg
RWNob0NhbmNlbGxlcjNDb25maWcgY29uZmlnOwogICBTdWJ0cmFjdG9yIHN1YnRyYWN0b3IoY29u
ZmlnLCAmZGF0YV9kdW1wZXIsIERldGVjdE9wdGltaXphdGlvbigpKTsKICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlckRlbGF5QnVmZmVyPiByZW5kZXJfZGVsYXlfYnVmZmVyKAotICAgICAgUmVuZGVy
RGVsYXlCdWZmZXI6OkNyZWF0ZShjb25maWcsIDMpKTsKKyAgICAgIFJlbmRlckRlbGF5QnVmZmVy
OjpDcmVhdGUyKGNvbmZpZywgMykpOwogICBSZW5kZXJTaWduYWxBbmFseXplciByZW5kZXJfc2ln
bmFsX2FuYWx5emVyKGNvbmZpZyk7CiAgIHN0ZDo6dmVjdG9yPGZsb2F0PiB5KGtCbG9ja1NpemUg
LSAxLCAwLmYpOwogICBTdWJ0cmFjdG9yT3V0cHV0IG91dHB1dDsKQEAgLTIxMCwyMSArMjEwLDQg
QEAgVEVTVChTdWJ0cmFjdG9yLCBOb25Db252ZXJnZW5jZU9uVW5jb3JyZWxhdGVkU2lnbmFscykg
ewogICB9CiB9CiAKLS8vIFZlcmlmaWVzIHRoYXQgdGhlIHN1YnRyYWN0b3IgaXMgcHJvcGVybHkg
cmVzZXQgd2hlbiB0aGVyZSBpcyBhbiBlY2hvIHBhdGgKLS8vIGNoYW5nZS4KLVRFU1QoU3VidHJh
Y3RvciwgRWNob1BhdGhDaGFuZ2VSZXNldCkgewotICBzdGQ6OnZlY3RvcjxpbnQ+IGJsb2Nrc193
aXRoX2VjaG9fcGF0aF9jaGFuZ2VzOwotICBibG9ja3Nfd2l0aF9lY2hvX3BhdGhfY2hhbmdlcy5w
dXNoX2JhY2soOTkpOwotICBmb3IgKHNpemVfdCBmaWx0ZXJfbGVuZ3RoX2Jsb2NrcyA6IHsxMiwg
MjAsIDMwfSkgewotICAgIGZvciAoc2l6ZV90IGRlbGF5X3NhbXBsZXMgOiB7MCwgNjQsIDE1MCwg
MjAwLCAzMDF9KSB7Ci0gICAgICBTQ09QRURfVFJBQ0UoUHJvZHVjZURlYnVnVGV4dChkZWxheV9z
YW1wbGVzLCBmaWx0ZXJfbGVuZ3RoX2Jsb2NrcykpOwotCi0gICAgICBmbG9hdCBlY2hvX3RvX25l
YXJlbmRfcG93ZXIgPSBSdW5TdWJ0cmFjdG9yVGVzdCgKLSAgICAgICAgICAxMDAsIGRlbGF5X3Nh
bXBsZXMsIGZpbHRlcl9sZW5ndGhfYmxvY2tzLCBmaWx0ZXJfbGVuZ3RoX2Jsb2NrcywgZmFsc2Us
Ci0gICAgICAgICAgYmxvY2tzX3dpdGhfZWNob19wYXRoX2NoYW5nZXMpOwotICAgICAgRVhQRUNU
X05FQVIoMS5mLCBlY2hvX3RvX25lYXJlbmRfcG93ZXIsIDAuMDAwMDAwMWYpOwotICAgIH0KLSAg
fQotfQotCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9zdXBwcmVzc2lvbl9maWx0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0
ZXIuY2MKaW5kZXggODdlMzAwOGRjNzZhYWQ4YjI2YzcwOWE0NDY1MWZmM2Q2NzAzNzkyYy4uNmZl
Mjk2YzIxOWM2MzI0MDhkNDc5N2NiNDJhOTk2N2JmNTA0YmE0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FlYzMvc3VwcHJlc3Npb25fZmlsdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHBy
ZXNzaW9uX2ZpbHRlci5jYwpAQCAtMTAsMTMgKzEwLDE0IEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0ZXIuaCIKIAotI2luY2x1ZGUg
PG1hdGguaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVk
ZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPG51bWVyaWM+Cisj
aW5jbHVkZSA8aXRlcmF0b3I+CiAKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dXRpbGl0eS9vb3VyYV9mZnQuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWVjMy92ZWN0b3JfbWF0aC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpAQCAtNTksOCArNjAsMTAgQEAgY29uc3QgZmxvYXQga1NxcnRIYW5uaW5nW2tGZnRMZW5ndGhd
ID0gewogCiB9ICAvLyBuYW1lc3BhY2UKIAotU3VwcHJlc3Npb25GaWx0ZXI6OlN1cHByZXNzaW9u
RmlsdGVyKGludCBzYW1wbGVfcmF0ZV9oeikKLSAgICA6IHNhbXBsZV9yYXRlX2h6XyhzYW1wbGVf
cmF0ZV9oeiksCitTdXBwcmVzc2lvbkZpbHRlcjo6U3VwcHJlc3Npb25GaWx0ZXIoQWVjM09wdGlt
aXphdGlvbiBvcHRpbWl6YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNhbXBsZV9yYXRlX2h6KQorICAgIDogb3B0aW1pemF0aW9uXyhvcHRpbWl6YXRpb24p
LAorICAgICAgc2FtcGxlX3JhdGVfaHpfKHNhbXBsZV9yYXRlX2h6KSwKICAgICAgIGZmdF8oKSwK
ICAgICAgIGVfb3V0cHV0X29sZF8oTnVtQmFuZHNGb3JSYXRlKHNhbXBsZV9yYXRlX2h6XykpIHsK
ICAgUlRDX0RDSEVDSyhWYWxpZEZ1bGxCYW5kUmF0ZShzYW1wbGVfcmF0ZV9oel8pKTsKQEAgLTkw
LDE4ICs5MywxNyBAQCB2b2lkIFN1cHByZXNzaW9uRmlsdGVyOjpBcHBseUdhaW4oCiAgIHN0ZDo6
dHJhbnNmb3JtKHN1cHByZXNzaW9uX2dhaW4uYmVnaW4oKSwgc3VwcHJlc3Npb25fZ2Fpbi5lbmQo
KSwgRS5pbS5iZWdpbigpLAogICAgICAgICAgICAgICAgICBFLmltLmJlZ2luKCksIHN0ZDo6bXVs
dGlwbGllczxmbG9hdD4oKSk7CiAKLSAgLy8gQ29tcHV0ZSBhbmQgYWRkIHRoZSBjb21mb3J0IG5v
aXNlLgotICBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IHNjYWxlZF9jb21m
b3J0X25vaXNlOworICAvLyBDb21mb3J0IG5vaXNlIGdhaW4gaXMgc3FydCgxLWdeMiksIHdoZXJl
IGcgaXMgdGhlIHN1cHByZXNzaW9uIGdhaW4uCisgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5n
dGhCeTJQbHVzMT4gbm9pc2VfZ2FpbjsKICAgc3RkOjp0cmFuc2Zvcm0oc3VwcHJlc3Npb25fZ2Fp
bi5iZWdpbigpLCBzdXBwcmVzc2lvbl9nYWluLmVuZCgpLAotICAgICAgICAgICAgICAgICBjb21m
b3J0X25vaXNlLnJlLmJlZ2luKCksIHNjYWxlZF9jb21mb3J0X25vaXNlLmJlZ2luKCksCi0gICAg
ICAgICAgICAgICAgIFtdKGZsb2F0IGEsIGZsb2F0IGIpIHsgcmV0dXJuIHN0ZDo6bWF4KDEuZiAt
IGEsIDAuZikgKiBiOyB9KTsKLSAgc3RkOjp0cmFuc2Zvcm0oc2NhbGVkX2NvbWZvcnRfbm9pc2Uu
YmVnaW4oKSwgc2NhbGVkX2NvbWZvcnRfbm9pc2UuZW5kKCksCi0gICAgICAgICAgICAgICAgIEUu
cmUuYmVnaW4oKSwgRS5yZS5iZWdpbigpLCBzdGQ6OnBsdXM8ZmxvYXQ+KCkpOwotICBzdGQ6OnRy
YW5zZm9ybShzdXBwcmVzc2lvbl9nYWluLmJlZ2luKCksIHN1cHByZXNzaW9uX2dhaW4uZW5kKCks
Ci0gICAgICAgICAgICAgICAgIGNvbWZvcnRfbm9pc2UuaW0uYmVnaW4oKSwgc2NhbGVkX2NvbWZv
cnRfbm9pc2UuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgW10oZmxvYXQgYSwgZmxvYXQgYikg
eyByZXR1cm4gc3RkOjptYXgoMS5mIC0gYSwgMC5mKSAqIGI7IH0pOwotICBzdGQ6OnRyYW5zZm9y
bShzY2FsZWRfY29tZm9ydF9ub2lzZS5iZWdpbigpLCBzY2FsZWRfY29tZm9ydF9ub2lzZS5lbmQo
KSwKLSAgICAgICAgICAgICAgICAgRS5pbS5iZWdpbigpLCBFLmltLmJlZ2luKCksIHN0ZDo6cGx1
czxmbG9hdD4oKSk7CisgICAgICAgICAgICAgICAgIG5vaXNlX2dhaW4uYmVnaW4oKSwgW10oZmxv
YXQgZykgeyByZXR1cm4gMS5mIC0gZyAqIGc7IH0pOworICBhZWMzOjpWZWN0b3JNYXRoKG9wdGlt
aXphdGlvbl8pLlNxcnQobm9pc2VfZ2Fpbik7CisKKyAgLy8gU2NhbGUgYW5kIGFkZCB0aGUgY29t
Zm9ydCBub2lzZS4KKyAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBrRmZ0TGVuZ3RoQnkyUGx1czE7
IGsrKykgeworICAgIEUucmVba10gKz0gbm9pc2VfZ2FpbltrXSAqIGNvbWZvcnRfbm9pc2UucmVb
a107CisgICAgRS5pbVtrXSArPSBub2lzZV9nYWluW2tdICogY29tZm9ydF9ub2lzZS5pbVtrXTsK
KyAgfQogCiAgIC8vIFN5bnRoZXNpcyBmaWx0ZXJiYW5rLgogICBzdGQ6OmFycmF5PGZsb2F0LCBr
RmZ0TGVuZ3RoPiBlX2V4dGVuZGVkOwpAQCAtMTM1LDcgKzEzNyw3IEBAIHZvaWQgU3VwcHJlc3Np
b25GaWx0ZXI6OkFwcGx5R2FpbigKIAogICAgIC8vIFNjYWxlIGFuZCBhcHBseSB0aGUgbm9pc2Ug
dG8gdGhlIHNpZ25hbHMuCiAgICAgY29uc3QgZmxvYXQgaGlnaF9iYW5kc19ub2lzZV9zY2FsaW5n
ID0KLSAgICAgICAgMC40ZiAqIHN0ZDo6bWF4KDEuZiAtIGhpZ2hfYmFuZHNfZ2FpbiwgMC5mKTsK
KyAgICAgICAgMC40ZiAqIHN0ZDo6c3FydCgxLmYgLSBoaWdoX2JhbmRzX2dhaW4gKiBoaWdoX2Jh
bmRzX2dhaW4pOwogCiAgICAgc3RkOjp0cmFuc2Zvcm0oCiAgICAgICAgICgqZSlbMV0uYmVnaW4o
KSwgKCplKVsxXS5lbmQoKSwgdGltZV9kb21haW5faGlnaF9iYW5kX25vaXNlLmJlZ2luKCksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0ZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRlci5oCmluZGV4IDIzNzQwOGQ3ZjlkYzNlNTk4ZWUzOGVk
Y2Q4OTQyODJlZDdkNGIyMDYuLmVkZDEyOTAwMTRkMmE0YWI2MjM3M2EyYTc5NTVhOTA4MzgzZjNk
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRlci5oCkBAIC0xNiwxMyArMTYsMTUgQEAK
IAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2FlYzNfY29tbW9uLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19mZnQuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfZGF0YS5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdC5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
IGNsYXNzIFN1cHByZXNzaW9uRmlsdGVyIHsKICBwdWJsaWM6Ci0gIGV4cGxpY2l0IFN1cHByZXNz
aW9uRmlsdGVyKGludCBzYW1wbGVfcmF0ZV9oeik7CisgIFN1cHByZXNzaW9uRmlsdGVyKEFlYzNP
cHRpbWl6YXRpb24gb3B0aW1pemF0aW9uLCBpbnQgc2FtcGxlX3JhdGVfaHopOwogICB+U3VwcHJl
c3Npb25GaWx0ZXIoKTsKICAgdm9pZCBBcHBseUdhaW4oY29uc3QgRmZ0RGF0YSYgY29tZm9ydF9u
b2lzZSwKICAgICAgICAgICAgICAgICAgY29uc3QgRmZ0RGF0YSYgY29tZm9ydF9ub2lzZV9oaWdo
X2JhbmRzLApAQCAtMzIsNiArMzQsNyBAQCBjbGFzcyBTdXBwcmVzc2lvbkZpbHRlciB7CiAgICAg
ICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0Pj4qIGUpOwogCiAgcHJp
dmF0ZToKKyAgY29uc3QgQWVjM09wdGltaXphdGlvbiBvcHRpbWl6YXRpb25fOwogICBjb25zdCBp
bnQgc2FtcGxlX3JhdGVfaHpfOwogICBjb25zdCBPb3VyYUZmdCBvb3VyYV9mZnRfOwogICBjb25z
dCBBZWMzRmZ0IGZmdF87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9m
aWx0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9maWx0ZXJfdW5p
dHRlc3QuY2MKaW5kZXggZWFhNjA4ZWVkNWQ3ZmFhMDViMzQ2YjNiZDdlYzlhZmM1NGExM2U0YS4u
OWU0ZmY3YzI4YjRjODIzMTAzMDRiMjMyMWYwMTcyYjY3NWU4ZGZjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZmlsdGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3N1cHByZXNzaW9uX2ZpbHRlcl91bml0dGVzdC5jYwpAQCAtNDUsMjEgKzQ1LDIxIEBA
IFRFU1QoU3VwcHJlc3Npb25GaWx0ZXIsIE51bGxPdXRwdXQpIHsKICAgRmZ0RGF0YSBFOwogICBz
dGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IGdhaW47CiAKLSAgRVhQRUNUX0RF
QVRIKFN1cHByZXNzaW9uRmlsdGVyKDE2MDAwKS5BcHBseUdhaW4oY24sIGNuX2hpZ2hfYmFuZHMs
IGdhaW4sIDEuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEUsIG51bGxwdHIpLAorICBFWFBFQ1RfREVBVEgoU3VwcHJlc3Npb25GaWx0ZXIoQWVj
M09wdGltaXphdGlvbjo6a05vbmUsIDE2MDAwKQorICAgICAgICAgICAgICAgICAgIC5BcHBseUdh
aW4oY24sIGNuX2hpZ2hfYmFuZHMsIGdhaW4sIDEuMGYsIEUsIG51bGxwdHIpLAogICAgICAgICAg
ICAgICAgIiIpOwogfQogCiAvLyBWZXJpZmllcyB0aGUgY2hlY2sgZm9yIGFsbG93ZWQgc2FtcGxl
IHJhdGUuCiBURVNUKFN1cHByZXNzaW9uRmlsdGVyLCBQcm9wZXJTYW1wbGVSYXRlKSB7Ci0gIEVY
UEVDVF9ERUFUSChTdXBwcmVzc2lvbkZpbHRlcigxNjAwMSksICIiKTsKKyAgRVhQRUNUX0RFQVRI
KFN1cHByZXNzaW9uRmlsdGVyKEFlYzNPcHRpbWl6YXRpb246OmtOb25lLCAxNjAwMSksICIiKTsK
IH0KIAogI2VuZGlmCiAKIC8vIFZlcmlmaWVzIHRoYXQgbm8gY29tZm9ydCBub2lzZSBpcyBhZGRl
ZCB3aGVuIHRoZSBnYWluIGlzIDEuCiBURVNUKFN1cHByZXNzaW9uRmlsdGVyLCBDb21mb3J0Tm9p
c2VJblVuaXR5R2FpbikgewotICBTdXBwcmVzc2lvbkZpbHRlciBmaWx0ZXIoNDgwMDApOworICBT
dXBwcmVzc2lvbkZpbHRlciBmaWx0ZXIoQWVjM09wdGltaXphdGlvbjo6a05vbmUsIDQ4MDAwKTsK
ICAgRmZ0RGF0YSBjbjsKICAgRmZ0RGF0YSBjbl9oaWdoX2JhbmRzOwogICBzdGQ6OmFycmF5PGZs
b2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+IGdhaW47CkBAIC04OSw3ICs4OSw3IEBAIFRFU1QoU3Vw
cHJlc3Npb25GaWx0ZXIsIENvbWZvcnROb2lzZUluVW5pdHlHYWluKSB7CiAKIC8vIFZlcmlmaWVz
IHRoYXQgdGhlIHN1cHByZXNzb3IgaXMgYWJsZSB0byBzdXBwcmVzcyBhIHNpZ25hbC4KIFRFU1Qo
U3VwcHJlc3Npb25GaWx0ZXIsIFNpZ25hbFN1cHByZXNzaW9uKSB7Ci0gIFN1cHByZXNzaW9uRmls
dGVyIGZpbHRlcig0ODAwMCk7CisgIFN1cHByZXNzaW9uRmlsdGVyIGZpbHRlcihBZWMzT3B0aW1p
emF0aW9uOjprTm9uZSwgNDgwMDApOwogICBGZnREYXRhIGNuOwogICBGZnREYXRhIGNuX2hpZ2hf
YmFuZHM7CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTI+IGVfb2xkXzsKQEAgLTEz
MSw3ICsxMzEsNyBAQCBURVNUKFN1cHByZXNzaW9uRmlsdGVyLCBTaWduYWxTdXBwcmVzc2lvbikg
ewogLy8gVmVyaWZpZXMgdGhhdCB0aGUgc3VwcHJlc3NvciBpcyBhYmxlIHRvIHBhc3MgdGhyb3Vn
aCBhIGRlc2lyZWQgc2lnbmFsIHdoaWxlCiAvLyBhcHBseWluZyBzdXBwcmVzc2luZyBmb3Igc29t
ZSBmcmVxdWVuY2llcy4KIFRFU1QoU3VwcHJlc3Npb25GaWx0ZXIsIFNpZ25hbFRyYW5zcGFyZW5j
eSkgewotICBTdXBwcmVzc2lvbkZpbHRlciBmaWx0ZXIoNDgwMDApOworICBTdXBwcmVzc2lvbkZp
bHRlciBmaWx0ZXIoQWVjM09wdGltaXphdGlvbjo6a05vbmUsIDQ4MDAwKTsKICAgRmZ0RGF0YSBj
bjsKICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5Mj4gZV9vbGRfOwogICBBZWMzRmZ0
IGZmdDsKQEAgLTE3MSw3ICsxNzEsNyBAQCBURVNUKFN1cHByZXNzaW9uRmlsdGVyLCBTaWduYWxU
cmFuc3BhcmVuY3kpIHsKIAogLy8gVmVyaWZpZXMgdGhhdCB0aGUgc3VwcHJlc3NvciBkZWxheS4K
IFRFU1QoU3VwcHJlc3Npb25GaWx0ZXIsIERlbGF5KSB7Ci0gIFN1cHByZXNzaW9uRmlsdGVyIGZp
bHRlcig0ODAwMCk7CisgIFN1cHByZXNzaW9uRmlsdGVyIGZpbHRlcihBZWMzT3B0aW1pemF0aW9u
OjprTm9uZSwgNDgwMDApOwogICBGZnREYXRhIGNuOwogICBGZnREYXRhIGNuX2hpZ2hfYmFuZHM7
CiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTI+IGVfb2xkXzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBw
cmVzc2lvbl9nYWluLmNjCmluZGV4IDYxMzI1NjY3MzA2OWE1NmFkOTc2ZGQ5YWJkM2E1NWQwZTRm
OTg1NTUuLjg4Y2ZjMGEwMWU0ZTBkMTgzODVjNTliZmM2MTgwYzdjZTk3NzM2ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW4uY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
YzMvc3VwcHJlc3Npb25fZ2Fpbi5jYwpAQCAtMTEsOCArMTEsOCBAQAogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW4uaCIKIAogI2luY2x1ZGUg
PG1hdGguaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5j
bHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxudW1lcmljPgogCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvbW92aW5nX2F2ZXJhZ2UuaCIKQEAgLTIwLDE1ICsyMCwx
MCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRh
X2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29wcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxk
X3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKIAotYm9vbCBFbmFi
bGVOZXdTdXBwcmVzc2lvbigpIHsKLSAgcmV0dXJuICFmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJX
ZWJSVEMtQWVjM05ld1N1cHByZXNzaW9uS2lsbFN3aXRjaCIpOwotfQotCiAvLyBBZGp1c3QgdGhl
IGdhaW5zIGFjY29yZGluZyB0byB0aGUgcHJlc2VuY2Ugb2Yga25vd24gZXh0ZXJuYWwgZmlsdGVy
cy4KIHZvaWQgQWRqdXN0Rm9yRXh0ZXJuYWxGaWx0ZXJzKHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4qIGdhaW4pIHsKICAgLy8gTGltaXQgdGhlIGxvdyBmcmVxdWVuY3kgZ2Fp
bnMgdG8gYXZvaWQgdGhlIGltcGFjdCBvZiB0aGUgaGlnaC1wYXNzIGZpbHRlcgpAQCAtODMsNTcg
Kzc4LDYgQEAgdm9pZCBXZWlnaHRFY2hvRm9yQXVkaWJpbGl0eShjb25zdCBFY2hvQ2FuY2VsbGVy
M0NvbmZpZyYgY29uZmlnLAogICB3ZWlnaCh0aHJlc2hvbGQsIG5vcm1hbGl6ZXIsIDcsIGtGZnRM
ZW5ndGhCeTJQbHVzMSwgZWNobywgd2VpZ2h0ZWRfZWNobyk7CiB9CiAKLS8vIENvbXB1dGVzIHRo
ZSBnYWluIHRvIHJlZHVjZSB0aGUgZWNobyB0byBhIG5vbiBhdWRpYmxlIGxldmVsLgotdm9pZCBH
YWluVG9Ob0F1ZGlibGVFY2hvRmFsbGJhY2soCi0gICAgY29uc3QgRWNob0NhbmNlbGxlcjNDb25m
aWcmIGNvbmZpZywKLSAgICBib29sIGxvd19ub2lzZV9yZW5kZXIsCi0gICAgYm9vbCBzYXR1cmF0
ZWRfZWNobywKLSAgICBib29sIGxpbmVhcl9lY2hvX2VzdGltYXRlLAotICAgIGNvbnN0IHN0ZDo6
YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhCeTJQbHVzMT4mIG5lYXJlbmQsCi0gICAgY29uc3Qgc3Rk
OjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgd2VpZ2h0ZWRfZWNobywKLSAgICBj
b25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrRmZ0TGVuZ3RoQnkyUGx1czE+JiBtYXNrZXIsCi0gICAg
Y29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgbWluX2dhaW4sCi0g
ICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgbWF4X2dhaW4s
Ci0gICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMxPiYgb25lX2J5
X3dlaWdodGVkX2VjaG8sCi0gICAgc3RkOjphcnJheTxmbG9hdCwga0ZmdExlbmd0aEJ5MlBsdXMx
PiogZ2FpbikgewotICBmbG9hdCBuZWFyZW5kX21hc2tpbmdfbWFyZ2luID0gMC5mOwotICBpZiAo
bGluZWFyX2VjaG9fZXN0aW1hdGUpIHsKLSAgICBuZWFyZW5kX21hc2tpbmdfbWFyZ2luID0KLSAg
ICAgICAgbG93X25vaXNlX3JlbmRlcgotICAgICAgICAgICAgPyBjb25maWcuZ2Fpbl9tYXNrLm05
Ci0gICAgICAgICAgICA6IChzYXR1cmF0ZWRfZWNobyA/IGNvbmZpZy5nYWluX21hc2subTIgOiBj
b25maWcuZ2Fpbl9tYXNrLm0zKTsKLSAgfSBlbHNlIHsKLSAgICBuZWFyZW5kX21hc2tpbmdfbWFy
Z2luID0gY29uZmlnLmdhaW5fbWFzay5tNzsKLSAgfQotCi0gIFJUQ19EQ0hFQ0tfTEUoMC5mLCBu
ZWFyZW5kX21hc2tpbmdfbWFyZ2luKTsKLSAgUlRDX0RDSEVDS19HVCgxLmYsIG5lYXJlbmRfbWFz
a2luZ19tYXJnaW4pOwotCi0gIGNvbnN0IGZsb2F0IG1hc2tlcl9tYXJnaW4gPQotICAgICAgbGlu
ZWFyX2VjaG9fZXN0aW1hdGUgPyBjb25maWcuZ2Fpbl9tYXNrLm0wIDogY29uZmlnLmdhaW5fbWFz
ay5tODsKLQotICBmb3IgKHNpemVfdCBrID0gMDsgayA8IGdhaW4tPnNpemUoKTsgKytrKSB7Ci0g
ICAgLy8gVE9ETyhkZXZpY2VudGVwZW5hKTogRXhwZXJpbWVudCBieSByZW1vdmluZyB0aGUgcmV2
ZXJiZXJhdGlvbiBlc3RpbWF0aW9uCi0gICAgLy8gZnJvbSB0aGUgbmVhcmVuZCBzaWduYWwgYmVm
b3JlIGNvbXB1dGluZyB0aGUgZ2FpbnMuCi0gICAgY29uc3QgZmxvYXQgdW5pdHlfZ2Fpbl9tYXNr
ZXIgPSBzdGQ6Om1heChuZWFyZW5kW2tdLCBtYXNrZXJba10pOwotICAgIFJUQ19EQ0hFQ0tfTEUo
MC5mLCBuZWFyZW5kX21hc2tpbmdfbWFyZ2luICogdW5pdHlfZ2Fpbl9tYXNrZXIpOwotICAgIGlm
ICh3ZWlnaHRlZF9lY2hvW2tdIDw9IG5lYXJlbmRfbWFza2luZ19tYXJnaW4gKiB1bml0eV9nYWlu
X21hc2tlciB8fAotICAgICAgICB1bml0eV9nYWluX21hc2tlciA8PSAwLmYpIHsKLSAgICAgICgq
Z2Fpbilba10gPSAxLmY7Ci0gICAgfSBlbHNlIHsKLSAgICAgIFJUQ19EQ0hFQ0tfTFQoMC5mLCB1
bml0eV9nYWluX21hc2tlcik7Ci0gICAgICAoKmdhaW4pW2tdID0KLSAgICAgICAgICBzdGQ6Om1h
eCgwLmYsICgxLmYgLSBjb25maWcuZ2Fpbl9tYXNrLmdhaW5fY3VydmVfc2xvcGUgKgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHRlZF9lY2hvW2tdIC8gdW5pdHlfZ2Fp
bl9tYXNrZXIpICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZ2Fpbl9tYXNr
LmdhaW5fY3VydmVfb2Zmc2V0KTsKLSAgICAgICgqZ2Fpbilba10gPSBzdGQ6Om1heChtYXNrZXJf
bWFyZ2luICogbWFza2VyW2tdICogb25lX2J5X3dlaWdodGVkX2VjaG9ba10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCpnYWluKVtrXSk7Ci0gICAgfQotCi0gICAgKCpnYWluKVtrXSA9
IHN0ZDo6bWluKHN0ZDo6bWF4KCgqZ2Fpbilba10sIG1pbl9nYWluW2tdKSwgbWF4X2dhaW5ba10p
OwotICB9Ci19Ci0KIC8vIFRPRE8ocGVhaCk6IE1ha2UgYWRhcHRpdmUgdG8gdGFrZSB0aGUgYWN0
dWFsIGZpbHRlciBlcnJvciBpbnRvIGFjY291bnQuCiBjb25zdGV4cHIgc2l6ZV90IGtVcHBlckFj
Y3VyYXRlQmFuZFBsdXMxID0gMjk7CiAKQEAgLTMyMSwzMCArMjY1LDkgQEAgdm9pZCBTdXBwcmVz
c2lvbkdhaW46Okxvd2VyQmFuZEdhaW4oCiAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhC
eTJQbHVzMT4gbWF4X2dhaW47CiAgIEdldE1heEdhaW4obWF4X2dhaW4pOwogCi0gIC8vIEl0ZXJh
dGl2ZWx5IGNvbXB1dGUgdGhlIGdhaW4gcmVxdWlyZWQgdG8gYXR0ZW51YXRlIHRoZSBlY2hvIHRv
IGEgbm9uCi0gIC8vIG5vdGljZWFibGUgbGV2ZWwuCi0KLSAgaWYgKGVuYWJsZV9uZXdfc3VwcHJl
c3Npb25fKSB7CiAgICAgR2FpblRvTm9BdWRpYmxlRWNobyhuZWFyZW5kLCB3ZWlnaHRlZF9yZXNp
ZHVhbF9lY2hvLCBjb21mb3J0X25vaXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgbWluX2dh
aW4sIG1heF9nYWluLCBnYWluKTsKICAgICBBZGp1c3RGb3JFeHRlcm5hbEZpbHRlcnMoZ2Fpbik7
Ci0gIH0gZWxzZSB7Ci0gICAgY29uc3QgYm9vbCBsaW5lYXJfZWNob19lc3RpbWF0ZSA9IGFlY19z
dGF0ZS5Vc2FibGVMaW5lYXJFc3RpbWF0ZSgpOwotICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRM
ZW5ndGhCeTJQbHVzMT4gbWFza2VyOwotICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIGtGZnRMZW5ndGhC
eTJQbHVzMT4gb25lX2J5X3dlaWdodGVkX2VjaG87Ci0gICAgc3RkOjp0cmFuc2Zvcm0od2VpZ2h0
ZWRfcmVzaWR1YWxfZWNoby5iZWdpbigpLCB3ZWlnaHRlZF9yZXNpZHVhbF9lY2hvLmVuZCgpLAot
ICAgICAgICAgICAgICAgICAgIG9uZV9ieV93ZWlnaHRlZF9lY2hvLmJlZ2luKCksCi0gICAgICAg
ICAgICAgICAgICAgW10oZmxvYXQgZSkgeyByZXR1cm4gZSA+IDAuZiA/IDEuZiAvIGUgOiAxLmY7
IH0pOwotICAgIGdhaW4tPmZpbGwoMC5mKTsKLSAgICBmb3IgKGludCBrID0gMDsgayA8IDI7ICsr
aykgewotICAgICAgc3RkOjpjb3B5KGNvbWZvcnRfbm9pc2UuYmVnaW4oKSwgY29tZm9ydF9ub2lz
ZS5lbmQoKSwgbWFza2VyLmJlZ2luKCkpOwotICAgICAgR2FpblRvTm9BdWRpYmxlRWNob0ZhbGxi
YWNrKGNvbmZpZ18sIGxvd19ub2lzZV9yZW5kZXIsIHNhdHVyYXRlZF9lY2hvLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVhcl9lY2hvX2VzdGltYXRlLCBuZWFyZW5kLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodGVkX3Jlc2lkdWFsX2VjaG8s
IG1hc2tlciwgbWluX2dhaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4
X2dhaW4sIG9uZV9ieV93ZWlnaHRlZF9lY2hvLCBnYWluKTsKLSAgICAgIEFkanVzdEZvckV4dGVy
bmFsRmlsdGVycyhnYWluKTsKLSAgICB9Ci0gIH0KIAogICAvLyBBZGp1c3QgdGhlIGdhaW4gZm9y
IGZyZXF1ZW5jaWVzIHdoaWNoIGhhdmUgbm90IHlldCBjb252ZXJnZWQuCiAgIEFkanVzdE5vbkNv
bnZlcmdlZEZyZXF1ZW5jaWVzKGdhaW4pOwpAQCAtMzcyLDcgKzI5NSw2IEBAIFN1cHByZXNzaW9u
R2Fpbjo6U3VwcHJlc3Npb25HYWluKGNvbnN0IEVjaG9DYW5jZWxsZXIzQ29uZmlnJiBjb25maWcs
CiAgICAgICBjb25maWdfKGNvbmZpZyksCiAgICAgICBzdGF0ZV9jaGFuZ2VfZHVyYXRpb25fYmxv
Y2tzXygKICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGNvbmZpZ18uZmlsdGVyLmNvbmZpZ19j
aGFuZ2VfZHVyYXRpb25fYmxvY2tzKSksCi0gICAgICBlbmFibGVfbmV3X3N1cHByZXNzaW9uXyhF
bmFibGVOZXdTdXBwcmVzc2lvbigpKSwKICAgICAgIG1vdmluZ19hdmVyYWdlXyhrRmZ0TGVuZ3Ro
QnkyUGx1czEsCiAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnN1cHByZXNzb3IubmVhcmVu
ZF9hdmVyYWdlX2Jsb2NrcyksCiAgICAgICBuZWFyZW5kX3BhcmFtc18oY29uZmlnXy5zdXBwcmVz
c29yLm5lYXJlbmRfdHVuaW5nKSwKQEAgLTQxNiw3ICszMzgsNyBAQCB2b2lkIFN1cHByZXNzaW9u
R2Fpbjo6R2V0R2FpbigKIAogICAvLyBVcGRhdGUgdGhlIHN0YXRlIHNlbGVjdGlvbi4KICAgZG9t
aW5hbnRfbmVhcmVuZF9kZXRlY3Rvcl8uVXBkYXRlKG5lYXJlbmRfc3BlY3RydW0sIHJlc2lkdWFs
X2VjaG9fc3BlY3RydW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21m
b3J0X25vaXNlX3NwZWN0cnVtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbWZvcnRfbm9pc2Vfc3BlY3RydW0sIGluaXRpYWxfc3RhdGVfKTsKIAogICAvLyBDb21wdXRl
IGdhaW4gZm9yIHRoZSBsb3dlciBiYW5kLgogICBib29sIGxvd19ub2lzZV9yZW5kZXIgPSBsb3df
cmVuZGVyX2RldGVjdG9yXy5EZXRlY3QocmVuZGVyKTsKQEAgLTQ3NSwxNCArMzk3LDE3IEBAIGJv
b2wgU3VwcHJlc3Npb25HYWluOjpMb3dOb2lzZVJlbmRlckRldGVjdG9yOjpEZXRlY3QoCiBTdXBw
cmVzc2lvbkdhaW46OkRvbWluYW50TmVhcmVuZERldGVjdG9yOjpEb21pbmFudE5lYXJlbmREZXRl
Y3RvcigKICAgICBjb25zdCBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6U3VwcHJlc3Nvcjo6RG9taW5h
bnROZWFyZW5kRGV0ZWN0aW9uIGNvbmZpZykKICAgICA6IGVucl90aHJlc2hvbGRfKGNvbmZpZy5l
bnJfdGhyZXNob2xkKSwKKyAgICAgIGVucl9leGl0X3RocmVzaG9sZF8oY29uZmlnLmVucl9leGl0
X3RocmVzaG9sZCksCiAgICAgICBzbnJfdGhyZXNob2xkXyhjb25maWcuc25yX3RocmVzaG9sZCks
CiAgICAgICBob2xkX2R1cmF0aW9uXyhjb25maWcuaG9sZF9kdXJhdGlvbiksCi0gICAgICB0cmln
Z2VyX3RocmVzaG9sZF8oY29uZmlnLnRyaWdnZXJfdGhyZXNob2xkKSB7fQorICAgICAgdHJpZ2dl
cl90aHJlc2hvbGRfKGNvbmZpZy50cmlnZ2VyX3RocmVzaG9sZCksCisgICAgICB1c2VfZHVyaW5n
X2luaXRpYWxfcGhhc2VfKGNvbmZpZy51c2VfZHVyaW5nX2luaXRpYWxfcGhhc2UpIHt9CiAKIHZv
aWQgU3VwcHJlc3Npb25HYWluOjpEb21pbmFudE5lYXJlbmREZXRlY3Rvcjo6VXBkYXRlKAogICAg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBuZWFyZW5kX3NwZWN0cnVtLAogICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiByZXNpZHVhbF9lY2hvX3NwZWN0cnVtLAotICAgIHJ0Yzo6
QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBjb21mb3J0X25vaXNlX3NwZWN0cnVtKSB7CisgICAgcnRj
OjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IGNvbWZvcnRfbm9pc2Vfc3BlY3RydW0sCisgICAgYm9v
bCBpbml0aWFsX3N0YXRlKSB7CiAgIGF1dG8gbG93X2ZyZXF1ZW5jeV9lbmVyZ3kgPSBbXShydGM6
OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gc3BlY3RydW0pIHsKICAgICBSVENfRENIRUNLX0xFKDE2
LCBzcGVjdHJ1bS5zaXplKCkpOwogICAgIHJldHVybiBzdGQ6OmFjY3VtdWxhdGUoc3BlY3RydW0u
YmVnaW4oKSArIDEsIHNwZWN0cnVtLmJlZ2luKCkgKyAxNiwgMC5mKTsKQEAgLTQ5Myw3ICs0MTgs
OCBAQCB2b2lkIFN1cHByZXNzaW9uR2Fpbjo6RG9taW5hbnROZWFyZW5kRGV0ZWN0b3I6OlVwZGF0
ZSgKIAogICAvLyBEZXRlY3Qgc3Ryb25nIGFjdGl2ZSBuZWFyZW5kIGlmIHRoZSBuZWFyZW5kIGlz
IHN1ZmZpY2llbnRseSBzdHJvbmdlciB0aGFuCiAgIC8vIHRoZSBlY2hvIGFuZCB0aGUgbmVhcmVu
ZCBub2lzZS4KLSAgaWYgKG5lX3N1bSA+IGVucl90aHJlc2hvbGRfICogZWNob19zdW0gJiYKKyAg
aWYgKCghaW5pdGlhbF9zdGF0ZSB8fCB1c2VfZHVyaW5nX2luaXRpYWxfcGhhc2VfKSAmJgorICAg
ICAgbmVfc3VtID4gZW5yX3RocmVzaG9sZF8gKiBlY2hvX3N1bSAmJgogICAgICAgbmVfc3VtID4g
c25yX3RocmVzaG9sZF8gKiBub2lzZV9zdW0pIHsKICAgICBpZiAoKyt0cmlnZ2VyX2NvdW50ZXJf
ID49IHRyaWdnZXJfdGhyZXNob2xkXykgewogICAgICAgLy8gQWZ0ZXIgYSBwZXJpb2Qgb2Ygc3Ry
b25nIGFjdGl2ZSBuZWFyZW5kIGFjdGl2aXR5LCBmbGFnIG5lYXJlbmQgbW9kZS4KQEAgLTUwNSw2
ICs0MzEsMTIgQEAgdm9pZCBTdXBwcmVzc2lvbkdhaW46OkRvbWluYW50TmVhcmVuZERldGVjdG9y
OjpVcGRhdGUoCiAgICAgdHJpZ2dlcl9jb3VudGVyXyA9IHN0ZDo6bWF4KDAsIHRyaWdnZXJfY291
bnRlcl8gLSAxKTsKICAgfQogCisgIC8vIEV4aXQgbmVhcmVuZC1zdGF0ZSBlYXJseSBhdCBzdHJv
bmcgZWNoby4KKyAgaWYgKG5lX3N1bSA8IGVucl9leGl0X3RocmVzaG9sZF8gKiBlY2hvX3N1bSAm
JgorICAgICAgZWNob19zdW0gPiBzbnJfdGhyZXNob2xkXyAqIG5vaXNlX3N1bSkgeworICAgIGhv
bGRfY291bnRlcl8gPSAwOworICB9CisKICAgLy8gUmVtYWluIGluIGFueSBuZWFyZW5kIG1vZGUg
Zm9yIGEgY2VydGFpbiBkdXJhdGlvbi4KICAgaG9sZF9jb3VudGVyXyA9IHN0ZDo6bWF4KDAsIGhv
bGRfY291bnRlcl8gLSAxKTsKICAgbmVhcmVuZF9zdGF0ZV8gPSBob2xkX2NvdW50ZXJfID4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW4uaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3N1cHByZXNzaW9uX2dhaW4uaAppbmRleCA0ZWI4NTgxYTg2MmE2ZGNjYTMyMDJlMGMw
NmU2MDYzZDcyMzdmOWZkLi5lNzRjZDk2MzJiMTIzYWFkYjEwNDJiYTRiNDZiYjg3MWY3ZDJlOGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lvbl9nYWluLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbi5oCkBAIC0xMiwxMyArMTIsMTggQEAKICNkZWZp
bmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfU1VQUFJFU1NJT05fR0FJTl9IXwogCiAj
aW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAor
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmll
dy5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfY29uZmlnLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvYWVjM19jb21tb24uaCIKICNpbmNs
dWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9hZWNfc3RhdGUuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9mZnRfZGF0YS5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL21vdmluZ19hdmVyYWdlLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvcmVuZGVyX3NpZ25hbF9hbmFseXplci5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBl
ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CkBAIC0xMDIsMTMgKzEwNywxNiBAQCBjbGFzcyBTdXBwcmVzc2lvbkdhaW4gewog
ICAgIC8vIFVwZGF0ZXMgdGhlIHN0YXRlIHNlbGVjdGlvbiBiYXNlZCBvbiBsYXRlc3Qgc3BlY3Ry
YWwgZXN0aW1hdGVzLgogICAgIHZvaWQgVXBkYXRlKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0
PiBuZWFyZW5kX3NwZWN0cnVtLAogICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IGZsb2F0PiByZXNpZHVhbF9lY2hvX3NwZWN0cnVtLAotICAgICAgICAgICAgICAgIHJ0Yzo6QXJy
YXlWaWV3PGNvbnN0IGZsb2F0PiBjb21mb3J0X25vaXNlX3NwZWN0cnVtKTsKKyAgICAgICAgICAg
ICAgICBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gY29tZm9ydF9ub2lzZV9zcGVjdHJ1bSwK
KyAgICAgICAgICAgICAgICBib29sIGluaXRpYWxfc3RhdGUpOwogCiAgICBwcml2YXRlOgogICAg
IGNvbnN0IGZsb2F0IGVucl90aHJlc2hvbGRfOworICAgIGNvbnN0IGZsb2F0IGVucl9leGl0X3Ro
cmVzaG9sZF87CiAgICAgY29uc3QgZmxvYXQgc25yX3RocmVzaG9sZF87CiAgICAgY29uc3QgaW50
IGhvbGRfZHVyYXRpb25fOwogICAgIGNvbnN0IGludCB0cmlnZ2VyX3RocmVzaG9sZF87CisgICAg
Y29uc3QgYm9vbCB1c2VfZHVyaW5nX2luaXRpYWxfcGhhc2VfOwogCiAgICAgYm9vbCBuZWFyZW5k
X3N0YXRlXyA9IGZhbHNlOwogICAgIGludCB0cmlnZ2VyX2NvdW50ZXJfID0gMDsKQEAgLTEzNyw3
ICsxNDUsNiBAQCBjbGFzcyBTdXBwcmVzc2lvbkdhaW4gewogICBMb3dOb2lzZVJlbmRlckRldGVj
dG9yIGxvd19yZW5kZXJfZGV0ZWN0b3JfOwogICBib29sIGluaXRpYWxfc3RhdGVfID0gdHJ1ZTsK
ICAgaW50IGluaXRpYWxfc3RhdGVfY2hhbmdlX2NvdW50ZXJfID0gMDsKLSAgY29uc3QgYm9vbCBl
bmFibGVfbmV3X3N1cHByZXNzaW9uXzsKICAgYWVjMzo6TW92aW5nQXZlcmFnZSBtb3ZpbmdfYXZl
cmFnZV87CiAgIGNvbnN0IEdhaW5QYXJhbWV0ZXJzIG5lYXJlbmRfcGFyYW1zXzsKICAgY29uc3Qg
R2FpblBhcmFtZXRlcnMgbm9ybWFsX3BhcmFtc187CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVj
My9zdXBwcmVzc2lvbl9nYWluX2xpbWl0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVzc2lv
bl9nYWluX2xpbWl0ZXIuY2MKaW5kZXggZTNkN2E2NjBiZjA4NzkxOTMxNTVkMDA5ZThjODIyZGM3
OWFkYjdkMi4uNjYyNWE3NzljMjQ0YTg4OWZhNmFlZDNiMzBlZTI3MDkzZmFhNGQ2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbl9saW1pdGVyLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW5fbGltaXRlci5jYwpAQCAtMTQsNiArMTQsNyBA
QAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZWMzL2FlYzNfY29tbW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
ZWMzL3N1cHByZXNzaW9uX2dhaW5fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9zdXBwcmVz
c2lvbl9nYWluX3VuaXR0ZXN0LmNjCmluZGV4IDFmZjk2Y2E2ZTA1NTJkOGNkM2MzNTA4M2VhODBi
ZDE4Y2Y2MzdlNjYuLjY1MWZkMzY3NGJjMTNjOTZlZTNiMjEwZjkzMTY3M2UwMTJmMGMzYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3N1cHByZXNzaW9uX2dhaW5fdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FlYzMvc3VwcHJlc3Npb25fZ2Fpbl91bml0dGVzdC5jYwpAQCAtNzcsNyAr
NzcsNyBAQCBURVNUKFN1cHByZXNzaW9uR2FpbiwgQmFzaWNHYWluQ29tcHV0YXRpb24pIHsKICAg
QXBtRGF0YUR1bXBlciBkYXRhX2R1bXBlcig0Mik7CiAgIFN1YnRyYWN0b3Igc3VidHJhY3Rvcihj
b25maWcsICZkYXRhX2R1bXBlciwgRGV0ZWN0T3B0aW1pemF0aW9uKCkpOwogICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyRGVsYXlCdWZmZXI+IHJlbmRlcl9kZWxheV9idWZmZXIoCi0gICAgICBSZW5k
ZXJEZWxheUJ1ZmZlcjo6Q3JlYXRlKGNvbmZpZywgMykpOworICAgICAgUmVuZGVyRGVsYXlCdWZm
ZXI6OkNyZWF0ZTIoY29uZmlnLCAzKSk7CiAgIGFic2w6Om9wdGlvbmFsPERlbGF5RXN0aW1hdGU+
IGRlbGF5X2VzdGltYXRlOwogCiAgIC8vIEVuc3VyZSB0aGF0IGEgc3Ryb25nIG5vaXNlIGlzIGRl
dGVjdGVkIHRvIG1hc2sgYW55IGVjaG9lcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3Zl
Y3Rvcl9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3JfYnVmZmVyLmNjCmluZGV4IGY0
OTExNjhkOWExNDFhZTE3ODk3NzBlYTAxNjk2Yzc0MjMzYjRiZTQuLjA2ODI4ODVjMGM3MTA4ODgx
Y2M0MjY5MDc0YmI2YWEzMGNiMDM5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL3ZlY3Rv
cl9idWZmZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5jYwpAQCAtMTAs
NyArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVj
dG9yX2J1ZmZlci5oIgogCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMv
YWVjM19jb21tb24uaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy92ZWN0b3JfYnVmZmVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWVjMy92ZWN0b3JfYnVmZmVyLmgKaW5kZXggYzdkNGY2OGIyN2MzODg2ZjM5YmFjNGI5MTk4
ZWNhMDZkMGE1MzI4OC4uNGMwMjU3Y2NlYTRjZDBlODliNTM2NzM4MWFjYzg3OTczNDgzZTVjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvdmVjdG9yX2J1ZmZlci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWMzL3ZlY3Rvcl9idWZmZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfQUVDM19WRUNUT1JfQlVGRkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNf
QVVESU9fUFJPQ0VTU0lOR19BRUMzX1ZFQ1RPUl9CVUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY19k
dW1wL0JVSUxELmduCmluZGV4IGU1ZmVlM2U5NWY3MTU0YzlhMjA3NmY3YzYzYTE1YWUwZWJiMWNi
MDMuLmQ0MjYyY2E0ODU4MzVkYWQ1MTQ5N2EzNWM5NTEzODZiOWVmMmM3ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWNfZHVtcC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvQlVJ
TEQuZ24KQEAgLTE3LDYgKzE3LDcgQEAgcnRjX3NvdXJjZV9zZXQoImFlY19kdW1wIikgewogICBk
ZXBzID0gWwogICAgICIuLi8iLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHBy
b3ZlZCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgXQog
fQogCkBAIC00Miw2ICs0Myw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJtb2NrX2FlY19kdW1wX3VuaXR0
ZXN0cyIpIHsKIAogICBkZXBzID0gWwogICAgICI6bW9ja19hZWNfZHVtcCIsCisgICAgIi4uOmFw
aSIsCiAgICAgIi4uLyIsCiAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVk
IiwKICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVt
cC9hZWNfZHVtcF9mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvYWVjX2R1bXBfZmFjdG9y
eS5oCmluZGV4IGUzZjAwZjY3YTJlMjhlMGJjZWM0YTE1MDY2MWQxZTUwMjI5YTgwZTQuLjFlNTVk
NTk0ZWUzMTM0MGYyOTY1ODMxMzY5MDQwYjE3NmNlYzcxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWNfZHVtcC9hZWNfZHVtcF9mYWN0b3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wL2Fl
Y19kdW1wX2ZhY3RvcnkuaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1bXAuaCIKICNpbmNsdWRlICJydGNfYmFzZS9w
bGF0Zm9ybV9maWxlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIK
IAogbmFtZXNwYWNlIHJ0YyB7CiBjbGFzcyBUYXNrUXVldWU7CkBAIC0yMyw3ICsyNCw3IEBAIGNs
YXNzIFRhc2tRdWV1ZTsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNsYXNzIEFlY0R1bXBGYWN0
b3J5IHsKK2NsYXNzIFJUQ19FWFBPUlQgQWVjRHVtcEZhY3RvcnkgewogIHB1YmxpYzoKICAgLy8g
VGhlIHx3b3JrZXJfcXVldWV8IG1heSBub3QgYmUgbnVsbCBhbmQgbXVzdCBvdXRsaXZlIHRoZSBj
cmVhdGVkCiAgIC8vIEFlY0R1bXAgaW5zdGFuY2UuIHxtYXhfbG9nX3NpemVfYnl0ZXMgPT0gLTF8
IG1lYW5zIHRoZSBsb2cgc2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY19kdW1wL2FlY19k
dW1wX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvYWVjX2R1bXBfaW1wbC5jYwppbmRleCAy
NzMyOTM0MTQwNjg0ODg2OTU5ZWVlYTVhNTY2OTAxOTU2Mjg4MWE2Li45MDIwZjJiOWRjYTE0ZTYz
NWI4MzQxZjFkNjQ2OTJiMTAwYmY4YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAv
YWVjX2R1bXBfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvYWVjX2R1bXBfaW1wbC5j
YwpAQCAtNjUsNyArNjUsNyBAQCBBZWNEdW1wSW1wbDo6QWVjRHVtcEltcGwoc3RkOjp1bmlxdWVf
cHRyPEZpbGVXcmFwcGVyPiBkZWJ1Z19maWxlLAogCiBBZWNEdW1wSW1wbDo6fkFlY0R1bXBJbXBs
KCkgewogICAvLyBCbG9jayB1bnRpbCBhbGwgdGFza3MgaGF2ZSBmaW5pc2hlZCBydW5uaW5nLgot
ICBydGM6OkV2ZW50IHRocmVhZF9zeW5jX2V2ZW50KGZhbHNlIC8qIG1hbnVhbF9yZXNldCAqLywg
ZmFsc2UpOworICBydGM6OkV2ZW50IHRocmVhZF9zeW5jX2V2ZW50OwogICB3b3JrZXJfcXVldWVf
LT5Qb3N0VGFzayhbJnRocmVhZF9zeW5jX2V2ZW50XSB7IHRocmVhZF9zeW5jX2V2ZW50LlNldCgp
OyB9KTsKICAgLy8gV2FpdCB1bnRpbCB0aGUgZXZlbnQgaGFzIGJlZW4gc2lnbmFsZWQgd2l0aCAu
U2V0KCkuIEJ5IHRoZW4gYWxsCiAgIC8vIHBlbmRpbmcgdGFza3Mgd2lsbCBoYXZlIGZpbmlzaGVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY20vYWVjbV9jb3JlLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fl
Y20vYWVjbV9jb3JlLmNjCmluZGV4IDBlNTZiNTBjNWVmMzA2Yjg5YmI2ZTI4YTgzZmNkMDUxZDdk
NDAzYTIuLjY3YjcwYmZiMzY2NzBhNDM5OGVjOGQyMDAxOWM0M2U4MGZlMjE1NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZWNtL2FlY21fY29yZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjbS9hZWNt
X2NvcmUuY2MKQEAgLTEyLDE2ICsxMiwxNSBAQAogCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5j
bHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKIGV4dGVybiAiQyIgewogI2lu
Y2x1ZGUgImNvbW1vbl9hdWRpby9yaW5nX2J1ZmZlci5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRp
by9zaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3JlYWxfZmZ0LmgiCiB9CisjaW5jbHVkZSAiY29t
bW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGli
cmFyeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNtL2VjaG9fY29u
dHJvbF9tb2JpbGUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0
eS9kZWxheV9lc3RpbWF0b3Jfd3JhcHBlci5oIgotZXh0ZXJuICJDIiB7Ci0jaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2ZlYXR1cmVzX3dyYXBwZXIuaCIKLX0KIAogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVf
Y29udmVyc2lvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNtL2VjaG9fY29udHJvbF9t
b2JpbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjbS9lY2hvX2NvbnRyb2xfbW9iaWxlLmNjCmluZGV4IGM5
NDc1NjNiMjgwNWUyZTk3NzEyNDFmM2JkMWU1NDNjNmFmMmY4NDguLjI1N2RmYmY1NmU0ZTgxNjM0
Y2E4ODE2OTEzNDlhMTZkY2ZiNjg3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNtL2VjaG9f
Y29udHJvbF9tb2JpbGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY20vZWNob19jb250cm9sX21vYmls
ZS5jYwpAQCAtMTQsMTAgKzE0LDEyIEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNlbmRpZgogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogCiBleHRlcm4gIkMiIHsKICNp
bmNsdWRlICJjb21tb25fYXVkaW8vcmluZ19idWZmZXIuaCIKICNpbmNsdWRlICJjb21tb25fYXVk
aW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZS9zaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5Lmgi
CisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY20vYWVjbV9kZWZpbmVzLmgi
CiB9CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlY20vYWVjbV9jb3JlLmgi
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvYWdjLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2Mu
Y2MKaW5kZXggMTJjOGNmYjdmYmQxNzMxZDc4MmZmYzRkOTMxMmQ0ZTQ4OGQ5NzZkMi4uYzI0ZGIw
ZGQ1MjI1YmUyODIxNDM3YWY4NGY1OWRhNDNkODJlY2M2NyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYy9hZ2MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2MuY2MKQEAgLTEyLDggKzEyLDYgQEAK
IAogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPGNzdGRsaWI+Ci0KLSNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYy9sb3VkbmVzc19oaXN0b2dyYW0uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MvYWdjLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnYy5oCmluZGV4IDVkMzRjMjEyZjNhYmZmOThlZTZm
M2FhZmJkZjVkODAxZDk3ZDJkODQuLmFiZDY4ZDVlMzExZDgxZmE4ZDJhMjRiNWMxNGUzZDU0ZjMy
YWJlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvYWdjLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
Yy9hZ2MuaApAQCAtMTcsNyArMTcsNiBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3Mg
QXVkaW9GcmFtZTsKIGNsYXNzIExvdWRuZXNzSGlzdG9ncmFtOwogCiBjbGFzcyBBZ2MgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2NfbWFuYWdlcl9kaXJlY3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjL2FnY19tYW5hZ2VyX2RpcmVjdC5jYwppbmRleCBkYzZkNDUxMjFjZGQ2ZGJmZDBmOWZjYzAx
ODg3MGNhZmIxZWZlYzIyLi41YzRkZWVjY2JmMjljNWU5M2FiMDE3NDViZDY0M2QzYjdhNTg4MGFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2FnY19tYW5hZ2VyX2RpcmVjdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjL2FnY19tYW5hZ2VyX2RpcmVjdC5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2NfbWFuYWdlcl9kaXJlY3Qu
aCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KIAogI2lmZGVmIFdF
QlJUQ19BR0NfREVCVUdfRFVNUApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9sb3VkbmVzc19o
aXN0b2dyYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5jYwppbmRleCAw
ZWQ1ODUwZTcyZDU2NzUzM2EzMmJhZGFmMzJmNDQ4NWE0ZmIxM2I3Li5jZDU3YjgyYmNjNzI0NjVh
OTExYTdmMzY3YzE5NDE1ODQyMzllYWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xvdWRu
ZXNzX2hpc3RvZ3JhbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5j
YwpAQCAtMTAsOCArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYy9sb3VkbmVzc19oaXN0b2dyYW0uaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1
ZGUgPGNtYXRoPgotI2luY2x1ZGUgPGNzdHJpbmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9sb3VkbmVzc19oaXN0b2dyYW0uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MvbG91ZG5lc3NfaGlzdG9ncmFtLmgKaW5kZXggZDhhZDc1MTE3NjRhNWFh
MTg0NjU0MWY4Y2JlYmEwYThkODk2ZDczOS4uYjIxMGJlOTZlM2I5MWVhYTI4MmQxZGY1MzkzNzdj
ZmFiZDM5ZGNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9sb3VkbmVzc19oaXN0b2dyYW0u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjL2xvdWRuZXNzX2hpc3RvZ3JhbS5oCkBAIC0xMSw4ICsxMSw3
IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0NfTE9VRE5FU1NfSElTVE9H
UkFNX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0NfTE9VRE5FU1NfSElT
VE9HUkFNX0hfCiAKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQorI2luY2x1ZGUgPHN0ZGludC5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL0JVSUxELmduCmluZGV4IDE4NjVm
ZGUzZTkxZTRmYWJmNzc5Y2FlNmYxODBjMzI2YWQ5NWM2NWIuLjU0MzFhMTUwYzIzYzJiODBhOTg1
NTFhZGU2MzI0N2U3MGVjNmFmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL0JVSUxELmdu
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL0JVSUxELmduCkBAIC0yNyw2ICsyNyw3IEBAIHJ0Y19zb3Vy
Y2Vfc2V0KCJsZXZlbF9lc3RpbWF0aW9uX2FnYyIpIHsKICAgICAiOmdhaW5fYXBwbGllciIsCiAg
ICAgIjpub2lzZV9sZXZlbF9lc3RpbWF0b3IiLAogICAgICI6cm5uX3ZhZF93aXRoX2xldmVsIiwK
KyAgICAiLi46YXBpIiwKICAgICAiLi46YXBtX2xvZ2dpbmciLAogICAgICIuLjphdWRpb19mcmFt
ZV92aWV3IiwKICAgICAiLi4vLi4vLi4vYXBpOmFycmF5X3ZpZXciLApAQCAtNTgsNiArNTksNyBA
QCBydGNfc291cmNlX3NldCgiYWRhcHRpdmVfZGlnaXRhbCIpIHsKICAgICAiOmdhaW5fYXBwbGll
ciIsCiAgICAgIjpub2lzZV9sZXZlbF9lc3RpbWF0b3IiLAogICAgICI6cm5uX3ZhZF93aXRoX2xl
dmVsIiwKKyAgICAiLi46YXBpIiwKICAgICAiLi46YXBtX2xvZ2dpbmciLAogICAgICIuLjphdWRp
b19mcmFtZV92aWV3IiwKICAgICAiLi4vLi4vLi4vYXBpOmFycmF5X3ZpZXciLApAQCAtOTYsMTIg
Kzk4LDEwIEBAIHJ0Y19zb3VyY2Vfc2V0KCJmaXhlZF9kaWdpdGFsIikgewogICBzb3VyY2VzID0g
WwogICAgICJmaXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5jYyIsCiAgICAgImZpeGVkX2Rp
Z2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmgiLAotICAgICJmaXhlZF9nYWluX2NvbnRyb2xsZXIuY2Mi
LAotICAgICJmaXhlZF9nYWluX2NvbnRyb2xsZXIuaCIsCi0gICAgImdhaW5fY3VydmVfYXBwbGll
ci5jYyIsCi0gICAgImdhaW5fY3VydmVfYXBwbGllci5oIiwKICAgICAiaW50ZXJwb2xhdGVkX2dh
aW5fY3VydmUuY2MiLAogICAgICJpbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIiwKKyAgICAibGlt
aXRlci5jYyIsCisgICAgImxpbWl0ZXIuaCIsCiAgIF0KIAogICBjb25maWdzICs9IFsgIi4uOmFw
bV9kZWJ1Z19kdW1wIiBdCkBAIC0xMjgsNiArMTI4LDcgQEAgcnRjX3NvdXJjZV9zZXQoImdhaW5f
YXBwbGllciIpIHsKICAgZGVwcyA9IFsKICAgICAiOmNvbW1vbiIsCiAgICAgIi4uOmF1ZGlvX2Zy
YW1lX3ZpZXciLAorICAgICIuLi8uLi8uLi9hcGk6YXJyYXlfdmlldyIsCiAgICAgIi4uLy4uLy4u
L3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgXQogfQpAQCAtMTkxLDggKzE5Miw4IEBAIHJ0Y19z
b3VyY2Vfc2V0KCJhZGFwdGl2ZV9kaWdpdGFsX3VuaXR0ZXN0cyIpIHsKICAgICAiLi4vLi4vLi4v
YXBpOmFycmF5X3ZpZXciLAogICAgICIuLi8uLi8uLi9jb21tb25fYXVkaW8iLAogICAgICIuLi8u
Li8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZTpndW5pdF9oZWxw
ZXJzIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICIu
Li8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgIF0KIH0KIApAQCAtMjAz
LDcgKzIwNCw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJiaXF1YWRfZmlsdGVyX3VuaXR0ZXN0cyIpIHsK
ICAgXQogICBkZXBzID0gWwogICAgICI6YmlxdWFkX2ZpbHRlciIsCi0gICAgIi4uLy4uLy4uL3J0
Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKKyAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6Z3Vu
aXRfaGVscGVycyIsCiAgIF0KIH0KIApAQCAtMjE2LDExICsyMTcsMTAgQEAgcnRjX3NvdXJjZV9z
ZXQoImZpeGVkX2RpZ2l0YWxfdW5pdHRlc3RzIikgewogICAgICJjb21wdXRlX2ludGVycG9sYXRl
ZF9nYWluX2N1cnZlLmNjIiwKICAgICAiY29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5o
IiwKICAgICAiZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3JfdW5pdHRlc3QuY2MiLAotICAg
ICJmaXhlZF9nYWluX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MiLAotICAgICJnYWluX2N1cnZlX2Fw
cGxpZXJfdW5pdHRlc3QuY2MiLAogICAgICJpbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZV91bml0dGVz
dC5jYyIsCi0gICAgImxpbWl0ZXIuY2MiLAotICAgICJsaW1pdGVyLmgiLAorICAgICJsaW1pdGVy
X2RiX2dhaW5fY3VydmUuY2MiLAorICAgICJsaW1pdGVyX2RiX2dhaW5fY3VydmUuaCIsCisgICAg
ImxpbWl0ZXJfZGJfZ2Fpbl9jdXJ2ZV91bml0dGVzdC5jYyIsCiAgICAgImxpbWl0ZXJfdW5pdHRl
c3QuY2MiLAogICBdCiAgIGRlcHMgPSBbCkBAIC0yMzIsOCArMjMyLDggQEAgcnRjX3NvdXJjZV9z
ZXQoImZpeGVkX2RpZ2l0YWxfdW5pdHRlc3RzIikgewogICAgICIuLi8uLi8uLi9hcGk6YXJyYXlf
dmlldyIsCiAgICAgIi4uLy4uLy4uL2NvbW1vbl9hdWRpbyIsCiAgICAgIi4uLy4uLy4uL3J0Y19i
YXNlOmNoZWNrcyIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAg
ICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgIi4uLy4uLy4uL3J0
Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAiLi4vLi4vLi4vc3lzdGVtX3dyYXBw
ZXJzOm1ldHJpY3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnki
LAogICBdCkBAIC0yNTQsMTQgKzI1NCwyOSBAQCBydGNfc291cmNlX3NldCgibm9pc2VfZXN0aW1h
dG9yX3VuaXR0ZXN0cyIpIHsKICAgICAiLi46YXVkaW9fZnJhbWVfdmlldyIsCiAgICAgIi4uLy4u
Ly4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAg
ICAiLi4vLi4vLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgIi4uLy4uLy4uL3J0Y19i
YXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
dGVzdHNfdXRpbHMiLAorICBdCit9CisKK3J0Y19zb3VyY2Vfc2V0KCJybm5fdmFkX3dpdGhfbGV2
ZWxfdW5pdHRlc3RzIikgeworICB0ZXN0b25seSA9IHRydWUKKyAgc291cmNlcyA9IFsKKyAgICAi
dmFkX3dpdGhfbGV2ZWxfdW5pdHRlc3QuY2MiLAorICBdCisgIGRlcHMgPSBbCisgICAgIjpybm5f
dmFkX3dpdGhfbGV2ZWwiLAorICAgICIuLjphdWRpb19mcmFtZV92aWV3IiwKKyAgICAiLi4vLi4v
Li4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgIF0KIH0KIAogcnRjX3NvdXJjZV9zZXQoInRl
c3RfdXRpbHMiKSB7CiAgIHRlc3Rvbmx5ID0gdHJ1ZQotICB2aXNpYmlsaXR5ID0gWyAiOioiIF0K
KyAgdmlzaWJpbGl0eSA9IFsKKyAgICAiOioiLAorICAgICIuLjphdWRpb19wcm9jZXNzaW5nX3Vu
aXR0ZXN0cyIsCisgIF0KICAgc291cmNlcyA9IFsKICAgICAiYWdjMl90ZXN0aW5nX2NvbW1vbi5j
YyIsCiAgICAgImFnYzJfdGVzdGluZ19jb21tb24uaCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9hZGFwdGl2ZV9hZ2MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9hZ2MuY2MKaW5k
ZXggYzczNDZjNjA0Mjk5N2UwMDlkOTBkYjJjY2NkNTE4ODA0YzUxMzk1OC4uYTVkMzYwODljNDg0
OTY0ZGJjZmI1ZGYwMGMwYTI1YWNkNmYyNTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
YWRhcHRpdmVfYWdjLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5jYwpAQCAt
MTAsMTIgKzEwLDEwIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9hZGFwdGl2ZV9hZ2MuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxudW1l
cmljPgotCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVsLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVy
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
CkBAIC0yNyw2ICsyNSwxOSBAQCBBZGFwdGl2ZUFnYzo6QWRhcHRpdmVBZ2MoQXBtRGF0YUR1bXBl
ciogYXBtX2RhdGFfZHVtcGVyKQogICBSVENfRENIRUNLKGFwbV9kYXRhX2R1bXBlcik7CiB9CiAK
K0FkYXB0aXZlQWdjOjpBZGFwdGl2ZUFnYyhBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6
OkdhaW5Db250cm9sbGVyMiYgY29uZmlnKQorICAgIDogc3BlZWNoX2xldmVsX2VzdGltYXRvcl8o
CisgICAgICAgICAgYXBtX2RhdGFfZHVtcGVyLAorICAgICAgICAgIGNvbmZpZy5hZGFwdGl2ZV9k
aWdpdGFsLmxldmVsX2VzdGltYXRvciwKKyAgICAgICAgICBjb25maWcuYWRhcHRpdmVfZGlnaXRh
bC51c2Vfc2F0dXJhdGlvbl9wcm90ZWN0b3IsCisgICAgICAgICAgY29uZmlnLmFkYXB0aXZlX2Rp
Z2l0YWwuZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGIpLAorICAgICAgZ2Fpbl9hcHBsaWVyXyhh
cG1fZGF0YV9kdW1wZXIpLAorICAgICAgYXBtX2RhdGFfZHVtcGVyXyhhcG1fZGF0YV9kdW1wZXIp
LAorICAgICAgbm9pc2VfbGV2ZWxfZXN0aW1hdG9yXyhhcG1fZGF0YV9kdW1wZXIpIHsKKyAgUlRD
X0RDSEVDSyhhcG1fZGF0YV9kdW1wZXIpOworfQorCiBBZGFwdGl2ZUFnYzo6fkFkYXB0aXZlQWdj
KCkgPSBkZWZhdWx0OwogCiB2b2lkIEFkYXB0aXZlQWdjOjpQcm9jZXNzKEF1ZGlvRnJhbWVWaWV3
PGZsb2F0PiBmbG9hdF9mcmFtZSwKQEAgLTM3LDkgKzQ4LDkgQEAgdm9pZCBBZGFwdGl2ZUFnYzo6
UHJvY2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gZmxvYXRfZnJhbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2lnbmFsX3dpdGhfbGV2ZWxzLnZhZF9yZXN1bHQuc3BlZWNoX3Byb2Jh
YmlsaXR5KTsKICAgYXBtX2RhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWdjMl92YWRfcm1zX2RiZnMi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbF93aXRoX2xldmVscy52YWRfcmVz
dWx0LnNwZWVjaF9ybXNfZGJmcyk7Ci0KICAgYXBtX2RhdGFfZHVtcGVyXy0+RHVtcFJhdygiYWdj
Ml92YWRfcGVha19kYmZzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfd2l0
aF9sZXZlbHMudmFkX3Jlc3VsdC5zcGVlY2hfcGVha19kYmZzKTsKKwogICBzcGVlY2hfbGV2ZWxf
ZXN0aW1hdG9yXy5VcGRhdGVFc3RpbWF0aW9uKHNpZ25hbF93aXRoX2xldmVscy52YWRfcmVzdWx0
KTsKIAogICBzaWduYWxfd2l0aF9sZXZlbHMuaW5wdXRfbGV2ZWxfZGJmcyA9CkBAIC02MSw3ICs3
Miw2IEBAIHZvaWQgQWRhcHRpdmVBZ2M6OlByb2Nlc3MoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IGZs
b2F0X2ZyYW1lLAogCiAgIC8vIFRoZSBnYWluIGFwcGxpZXIgYXBwbGllcyB0aGUgZ2Fpbi4KICAg
Z2Fpbl9hcHBsaWVyXy5Qcm9jZXNzKHNpZ25hbF93aXRoX2xldmVscyk7Ci0gIDsKIH0KIAogdm9p
ZCBBZGFwdGl2ZUFnYzo6UmVzZXQoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFw
dGl2ZV9hZ2MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5oCmluZGV4IDc5MmIyYmM5
MTZkZTVhYjljNmZhY2Q5OTk2MWZiNDdiODE3MWUyMmUuLjE2YzAwODJlZDgxNjZkMmU0YTg3MzA0
MTkxM2IxOGVkNDQxNGFiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2Fn
Yy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5oCkBAIC0xMSwxMyArMTEsMTIg
QEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfQURBUFRJVkVfQUdDX0hf
CiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0FEQVBUSVZFX0FHQ19IXwog
Ci0jaW5jbHVkZSA8bWVtb3J5PgotCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL25vaXNlX2xldmVsX2VzdGlt
YXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRo
X2xldmVsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVk
aW9fZnJhbWVfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNs
dWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBBcG1E
YXRhRHVtcGVyOwpAQCAtMjUsNiArMjQsOCBAQCBjbGFzcyBBcG1EYXRhRHVtcGVyOwogY2xhc3Mg
QWRhcHRpdmVBZ2MgewogIHB1YmxpYzoKICAgZXhwbGljaXQgQWRhcHRpdmVBZ2MoQXBtRGF0YUR1
bXBlciogYXBtX2RhdGFfZHVtcGVyKTsKKyAgQWRhcHRpdmVBZ2MoQXBtRGF0YUR1bXBlciogYXBt
X2RhdGFfZHVtcGVyLAorICAgICAgICAgICAgICBjb25zdCBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZp
Zzo6R2FpbkNvbnRyb2xsZXIyJiBjb25maWcpOwogICB+QWRhcHRpdmVBZ2MoKTsKIAogICB2b2lk
IFByb2Nlc3MoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IGZsb2F0X2ZyYW1lLCBmbG9hdCBsYXN0X2F1
ZGlvX2xldmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2RpZ2l0YWxf
Z2Fpbl9hcHBsaWVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfZGlnaXRhbF9nYWluX2Fw
cGxpZXIuY2MKaW5kZXggZDQ1NjBjYWYxYTlkODQ3MWE3ZTI2ZTgxMjcyOTdkZjUxMzkzZDgyOS4u
NmVjZTgzYjIzOTI0MGZhOGUxMWFiZTRjMDU0NGE5ZTdjZTU3MjFlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MKQEAgLTE1LDYgKzE1LDcg
QEAKICNpbmNsdWRlICJjb21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191dGlsLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9z
YWZlX21pbm1heC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3Mu
aCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3Rp
bWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5j
YwppbmRleCBiNjcwZjRiNDY5MjA1NmM0MGFhYjdmZjhlOGU5N2Q4YTdmZGJiODA3Li44NjQwMzI0
YjU5M2ZmYjEyNmYxNWQ1NGIyMTc5MmVmZTQxNTVlNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5jYwpAQCAtMTIsMTMgKzEyLDI3IEBACiAK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBl
ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBBZGFwdGl2ZU1v
ZGVMZXZlbEVzdGltYXRvcjo6QWRhcHRpdmVNb2RlTGV2ZWxFc3RpbWF0b3IoCiAgICAgQXBtRGF0
YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyKQotICAgIDogc2F0dXJhdGlvbl9wcm90ZWN0b3JfKGFw
bV9kYXRhX2R1bXBlciksCisgICAgOiBsZXZlbF9lc3RpbWF0b3JfKAorICAgICAgICAgIEF1ZGlv
UHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yOjprUm1z
KSwKKyAgICAgIHVzZV9zYXR1cmF0aW9uX3Byb3RlY3Rvcl8odHJ1ZSksCisgICAgICBzYXR1cmF0
aW9uX3Byb3RlY3Rvcl8oYXBtX2RhdGFfZHVtcGVyKSwKKyAgICAgIGFwbV9kYXRhX2R1bXBlcl8o
YXBtX2RhdGFfZHVtcGVyKSB7fQorCitBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRvcjo6QWRhcHRp
dmVNb2RlTGV2ZWxFc3RpbWF0b3IoCisgICAgQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVy
LAorICAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjI6OkxldmVsRXN0
aW1hdG9yIGxldmVsX2VzdGltYXRvciwKKyAgICBib29sIHVzZV9zYXR1cmF0aW9uX3Byb3RlY3Rv
ciwKKyAgICBmbG9hdCBleHRyYV9zYXR1cmF0aW9uX21hcmdpbl9kYikKKyAgICA6IGxldmVsX2Vz
dGltYXRvcl8obGV2ZWxfZXN0aW1hdG9yKSwKKyAgICAgIHVzZV9zYXR1cmF0aW9uX3Byb3RlY3Rv
cl8odXNlX3NhdHVyYXRpb25fcHJvdGVjdG9yKSwKKyAgICAgIHNhdHVyYXRpb25fcHJvdGVjdG9y
XyhhcG1fZGF0YV9kdW1wZXIsIGV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2RiKSwKICAgICAgIGFw
bV9kYXRhX2R1bXBlcl8oYXBtX2RhdGFfZHVtcGVyKSB7fQogCiB2b2lkIEFkYXB0aXZlTW9kZUxl
dmVsRXN0aW1hdG9yOjpVcGRhdGVFc3RpbWF0aW9uKApAQCAtNDIsMjAgKzU2LDM4IEBAIHZvaWQg
QWRhcHRpdmVNb2RlTGV2ZWxFc3RpbWF0b3I6OlVwZGF0ZUVzdGltYXRpb24oCiAKICAgY29uc3Qg
ZmxvYXQgbGVha19mYWN0b3IgPSBidWZmZXJfaXNfZnVsbCA/IGtGdWxsQnVmZmVyTGVha0ZhY3Rv
ciA6IDEuZjsKIAorICAvLyBSZWFkIHNwZWVjaCBsZXZlbCBlc3RpbWF0aW9uLgorICBmbG9hdCBz
cGVlY2hfbGV2ZWxfZGJmcyA9IDAuZjsKKyAgdXNpbmcgTGV2ZWxFc3RpbWF0b3JUeXBlID0KKyAg
ICAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjI6OkxldmVsRXN0aW1h
dG9yOworICBzd2l0Y2ggKGxldmVsX2VzdGltYXRvcl8pIHsKKyAgICBjYXNlIExldmVsRXN0aW1h
dG9yVHlwZTo6a1JtczoKKyAgICAgIHNwZWVjaF9sZXZlbF9kYmZzID0gdmFkX2RhdGEuc3BlZWNo
X3Jtc19kYmZzOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMZXZlbEVzdGltYXRvclR5cGU6OmtQ
ZWFrOgorICAgICAgc3BlZWNoX2xldmVsX2RiZnMgPSB2YWRfZGF0YS5zcGVlY2hfcGVha19kYmZz
OworICAgICAgYnJlYWs7CisgIH0KKworICAvLyBVcGRhdGUgc3BlZWNoIGxldmVsIGVzdGltYXRp
b24uCiAgIGVzdGltYXRlX251bWVyYXRvcl8gPSBlc3RpbWF0ZV9udW1lcmF0b3JfICogbGVha19m
YWN0b3IgKwotICAgICAgICAgICAgICAgICAgICAgICAgdmFkX2RhdGEuc3BlZWNoX3Jtc19kYmZz
ICogdmFkX2RhdGEuc3BlZWNoX3Byb2JhYmlsaXR5OworICAgICAgICAgICAgICAgICAgICAgICAg
c3BlZWNoX2xldmVsX2RiZnMgKiB2YWRfZGF0YS5zcGVlY2hfcHJvYmFiaWxpdHk7CiAgIGVzdGlt
YXRlX2Rlbm9taW5hdG9yXyA9CiAgICAgICBlc3RpbWF0ZV9kZW5vbWluYXRvcl8gKiBsZWFrX2Zh
Y3RvciArIHZhZF9kYXRhLnNwZWVjaF9wcm9iYWJpbGl0eTsKLQogICBsYXN0X2VzdGltYXRlX3dp
dGhfb2Zmc2V0X2RiZnNfID0gZXN0aW1hdGVfbnVtZXJhdG9yXyAvIGVzdGltYXRlX2Rlbm9taW5h
dG9yXzsKIAotICBzYXR1cmF0aW9uX3Byb3RlY3Rvcl8uVXBkYXRlTWFyZ2luKHZhZF9kYXRhLCBs
YXN0X2VzdGltYXRlX3dpdGhfb2Zmc2V0X2RiZnNfKTsKLSAgRGVidWdEdW1wRXN0aW1hdGUoKTsK
KyAgaWYgKHVzZV9zYXR1cmF0aW9uX3Byb3RlY3Rvcl8pIHsKKyAgICBzYXR1cmF0aW9uX3Byb3Rl
Y3Rvcl8uVXBkYXRlTWFyZ2luKHZhZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGFzdF9lc3RpbWF0ZV93aXRoX29mZnNldF9kYmZzXyk7CisgICAgRGVidWdE
dW1wRXN0aW1hdGUoKTsKKyAgfQogfQogCiBmbG9hdCBBZGFwdGl2ZU1vZGVMZXZlbEVzdGltYXRv
cjo6TGF0ZXN0TGV2ZWxFc3RpbWF0ZSgpIGNvbnN0IHsKICAgcmV0dXJuIHJ0Yzo6U2FmZUNsYW1w
PGZsb2F0PigKLSAgICAgIGxhc3RfZXN0aW1hdGVfd2l0aF9vZmZzZXRfZGJmc18gKyBzYXR1cmF0
aW9uX3Byb3RlY3Rvcl8uTGFzdE1hcmdpbigpLAorICAgICAgbGFzdF9lc3RpbWF0ZV93aXRoX29m
ZnNldF9kYmZzXyArCisgICAgICAgICAgKHVzZV9zYXR1cmF0aW9uX3Byb3RlY3Rvcl8gPyBzYXR1
cmF0aW9uX3Byb3RlY3Rvcl8uTGFzdE1hcmdpbigpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAwLmYpLAogICAgICAgLTkwLmYsIDMwLmYpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3IuaAppbmRleCA0ZDQxODBjNDgw
Njg3MDAwNDEyMGFhM2M5MjFlZTc1NWU4YjFiNjE5Li42M2I5ZGUyYWVjNDRhMTI0ZGVhNzI1YTNh
NmZmYzRmNjAxNzA5YWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9tb2Rl
X2xldmVsX2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2
ZWxfZXN0aW1hdG9yLmgKQEAgLTExLDggKzExLDEyIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9f
UFJPQ0VTU0lOR19BR0MyX0FEQVBUSVZFX01PREVfTEVWRUxfRVNUSU1BVE9SX0hfCiAjZGVmaW5l
IE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0FEQVBUSVZFX01PREVfTEVWRUxfRVNUSU1B
VE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiICAvLyBrRnVsbEJ1ZmZlclNpemVNcy4uLgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3NhdHVyYXRpb25fcHJvdGVj
dG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhf
bGV2ZWwuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRp
b19wcm9jZXNzaW5nLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgQXBtRGF0YUR1bXBl
cjsKQEAgLTIwLDYgKzI0LDExIEBAIGNsYXNzIEFwbURhdGFEdW1wZXI7CiBjbGFzcyBBZGFwdGl2
ZU1vZGVMZXZlbEVzdGltYXRvciB7CiAgcHVibGljOgogICBleHBsaWNpdCBBZGFwdGl2ZU1vZGVM
ZXZlbEVzdGltYXRvcihBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIpOworICBBZGFwdGl2
ZU1vZGVMZXZlbEVzdGltYXRvcigKKyAgICAgIEFwbURhdGFEdW1wZXIqIGFwbV9kYXRhX2R1bXBl
ciwKKyAgICAgIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjI6OkxldmVs
RXN0aW1hdG9yIGxldmVsX2VzdGltYXRvciwKKyAgICAgIGJvb2wgdXNlX3NhdHVyYXRpb25fcHJv
dGVjdG9yLAorICAgICAgZmxvYXQgZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGIpOwogICB2b2lk
IFVwZGF0ZUVzdGltYXRpb24oY29uc3QgVmFkV2l0aExldmVsOjpMZXZlbEFuZFByb2JhYmlsaXR5
JiB2YWRfZGF0YSk7CiAgIGZsb2F0IExhdGVzdExldmVsRXN0aW1hdGUoKSBjb25zdDsKICAgdm9p
ZCBSZXNldCgpOwpAQCAtMzAsNiArMzksOSBAQCBjbGFzcyBBZGFwdGl2ZU1vZGVMZXZlbEVzdGlt
YXRvciB7CiAgcHJpdmF0ZToKICAgdm9pZCBEZWJ1Z0R1bXBFc3RpbWF0ZSgpOwogCisgIGNvbnN0
IEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9y
CisgICAgICBsZXZlbF9lc3RpbWF0b3JfOworICBjb25zdCBib29sIHVzZV9zYXR1cmF0aW9uX3By
b3RlY3Rvcl87CiAgIHNpemVfdCBidWZmZXJfc2l6ZV9tc18gPSAwOwogICBmbG9hdCBsYXN0X2Vz
dGltYXRlX3dpdGhfb2Zmc2V0X2RiZnNfID0ga0luaXRpYWxTcGVlY2hMZXZlbEVzdGltYXRlRGJm
czsKICAgZmxvYXQgZXN0aW1hdGVfbnVtZXJhdG9yXyA9IDAuZjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5jYwppbmRleCA0Y2VlOTYz
M2Y3Nzc4ZGFlZGEwNWYxMGZjZjA2NDliZmUyODQ0NjQxLi5iN2M2NDM3M2ZjOGEwMGE4MjkxMDQ2
ZTcxNzQxYzEzM2Y4NzM5ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2ZV9t
b2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVf
bW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmNjCkBAIC0xMCw2ICsxMCwxMCBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3Rp
bWF0b3JfYWdjLmgiCiAKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX2ZyYW1lX3ZpZXcu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFw
dGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZl
X21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5oCmluZGV4IDQ4NGIxMjg5MzMyNWEwMWVjZWNiZTZi
ZTZjYWU4NzQyZDBhOGM1NTcuLjZkMTIzMzk4ODhjMmU4NDAwNTEzYzNiZjRlMDIyMDJiNmJjMTgy
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1h
dG9yX2FnYy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1h
dG9yX2FnYy5oCkBAIC0xMSwxMCArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FHQzJfQURBUFRJVkVfTU9ERV9MRVZFTF9FU1RJTUFUT1JfQUdDX0hfCiAjZGVmaW5l
IE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0FEQVBUSVZFX01PREVfTEVWRUxfRVNUSU1B
VE9SX0FHQ19IXwogCi0jaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2lu
Y2x1ZGUgPHN0ZGludC5oPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
Yy9hZ2MuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZGFwdGl2
ZV9tb2RlX2xldmVsX2VzdGltYXRvci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL3NhdHVyYXRpb25fcHJvdGVjdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL2FnYzJfY29tbW9uLmNjCmluZGV4IDVkYTM1M2ZhOGZkMTM4ZmViNGZmN2IyM2M1NGM2MWM5
MjEyNDQ5N2IuLmFmOTQzZGY3OGZiYjgyOGY4M2MwYTBjZjZhZjE3MjhhYjI1MDVhNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2My
L2FnYzJfY29tbW9uLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgogCisjaW5jbHVkZSA8c3RkaW8uaD4K
ICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9m
aWVsZF90cmlhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgKaW5kZXggNzFkMzNlNTk0ZGEyM2JkZjI0OWM0
YjZiN2NiYjZmYzBmZmZmMDdiMC4uNTVkZDY0OGRiNDlhYjE2MWExZjk4NTBlZDRhODdlNjg5YzYx
ZTNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl9jb21tb24uaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oCkBAIC0xMyw4ICsxMyw2IEBACiAKICNpbmNsdWRlIDxz
dGRkZWYuaD4KIAotI2luY2x1ZGUgPGNtYXRoPgotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY29u
c3RleHByIGZsb2F0IGtNaW5GbG9hdFMxNlZhbHVlID0gLTMyNzY4LmY7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYmlxdWFkX2Zp
bHRlci5jYwppbmRleCA5ODU4ZDUwNTg0NjU5MWY4ODBlOTRkYjgxNzRhMzIxMTMxYTFmM2Y0Li5k
YTg1NTdjMTkwODJjMWNhMTgwOTFiM2I2ZjQ4NGFlNWViYjQ2ZWYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2JpcXVhZF9m
aWx0ZXIuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2JpcXVhZF9maWx0ZXIuaCIKIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gVHJhbnNwb3NlZCBkaXJlY3QgZm9ybSBJIGltcGxlbWVu
dGF0aW9uIG9mIGEgYmktcXVhZCBmaWx0ZXIgYXBwbGllZCB0byBhbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvYmlxdWFkX2ZpbHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYmlxdWFkX2ZpbHRl
ci5oCmluZGV4IDI4NDkzMGM1OTUyODMxYTBjN2YxMjU1MDEzNjUwOGI1NTA0ZTlhMWUuLjNkNzhj
MDc2MDc4ODg5MjI3NjBmYzA1YjY4MWFjNWVhNWNhYWMwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL2JpcXVhZF9maWx0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9iaXF1YWRfZmlsdGVy
LmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FH
QzJfQklRVUFEX0ZJTFRFUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdD
Ml9CSVFVQURfRklMVEVSX0hfCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKICNpbmNsdWRlICJh
cGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6ZS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL2NvbXB1dGVfaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9j
b21wdXRlX2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmNjCmluZGV4IGYzOTViY2VmZmExYmM3N2Nk
NjM3OWQwNmQ2MTlkZmI0NGI5YmVlMTIuLmJjOTI2MTNiNjk3ZTZmMWE0MDYyNGMyZDM1MmFhYWU1
MTBiMGM4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2NvbXB1dGVfaW50ZXJwb2xhdGVk
X2dhaW5fY3VydmUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvY29tcHV0ZV9pbnRlcnBvbGF0ZWRf
Z2Fpbl9jdXJ2ZS5jYwpAQCAtMTksMjMgKzE5LDI0IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfdGVzdGluZ19jb21tb24uaCIKLSNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWluX2N1cnZlLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKIAog
c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPiBDb21wdXRlTGluZWFyQXBwcm94aW1hdGlvblBhcmFt
cygKLSAgICBjb25zdCBMaW1pdGVyKiBsaW1pdGVyLAorICAgIGNvbnN0IExpbWl0ZXJEYkdhaW5D
dXJ2ZSogbGltaXRlciwKICAgICBjb25zdCBkb3VibGUgeCkgewogICBjb25zdCBkb3VibGUgbSA9
IGxpbWl0ZXItPkdldEdhaW5GaXJzdERlcml2YXRpdmVMaW5lYXIoeCk7CiAgIGNvbnN0IGRvdWJs
ZSBxID0gbGltaXRlci0+R2V0R2FpbkxpbmVhcih4KSAtIG0gKiB4OwogICByZXR1cm4ge20sIHF9
OwogfQogCi1kb3VibGUgQ29tcHV0ZUFyZWFVbmRlclBpZWNld2lzZUxpbmVhckFwcHJveGltYXRp
b24oY29uc3QgTGltaXRlciogbGltaXRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgxKSB7Citk
b3VibGUgQ29tcHV0ZUFyZWFVbmRlclBpZWNld2lzZUxpbmVhckFwcHJveGltYXRpb24oCisgICAg
Y29uc3QgTGltaXRlckRiR2FpbkN1cnZlKiBsaW1pdGVyLAorICAgIGNvbnN0IGRvdWJsZSB4MCwK
KyAgICBjb25zdCBkb3VibGUgeDEpIHsKICAgUlRDX0NIRUNLX0xUKHgwLCB4MSk7CiAKICAgLy8g
TGluZWFyIGFwcHJveGltYXRpb24gaW4geDAgYW5kIHgxLgpAQCAtNjAsNyArNjEsNyBAQCBkb3Vi
bGUgQ29tcHV0ZUFyZWFVbmRlclBpZWNld2lzZUxpbmVhckFwcHJveGltYXRpb24oY29uc3QgTGlt
aXRlciogbGltaXRlciwKIC8vIENvbXB1dGVzIHRoZSBhcHByb3hpbWF0aW9uIGVycm9yIGluIHRo
ZSBsaW1pdGVyIHJlZ2lvbiBmb3IgYSBnaXZlbiBpbnRlcnZhbC4KIC8vIFRoZSBlcnJvciBpcyBj
b21wdXRlZCBhcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBhcmVhcyBiZW5lYXRoIHRoZSBs
aW1pdGVyCiAvLyBjdXJ2ZSB0byBhcHByb3hpbWF0ZSBhbmQgaXRzIGxpbmVhciB1bmRlci1hcHBy
b3hpbWF0aW9uLgotZG91YmxlIExpbWl0ZXJVbmRlckFwcHJveGltYXRpb25OZWdhdGl2ZUVycm9y
KGNvbnN0IExpbWl0ZXIqIGxpbWl0ZXIsCitkb3VibGUgTGltaXRlclVuZGVyQXBwcm94aW1hdGlv
bk5lZ2F0aXZlRXJyb3IoY29uc3QgTGltaXRlckRiR2FpbkN1cnZlKiBsaW1pdGVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4MCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3Vi
bGUgeDEpIHsKICAgY29uc3QgZG91YmxlIGFyZWFfbGltaXRlciA9IGxpbWl0ZXItPkdldEdhaW5J
bnRlZ3JhbExpbmVhcih4MCwgeDEpOwpAQCAtNzcsNyArNzgsNyBAQCBkb3VibGUgTGltaXRlclVu
ZGVyQXBwcm94aW1hdGlvbk5lZ2F0aXZlRXJyb3IoY29uc3QgTGltaXRlciogbGltaXRlciwKIC8v
IGFyZSBhc3NpZ25lZCBieSBoYWx2aW5nIGludGVydmFscyAoc3RhcnRpbmcgd2l0aCB0aGUgd2hv
bGUgYmV5b25kLWtuZWUgcmVnaW9uCiAvLyBhcyBhIHNpbmdsZSBpbnRlcnZhbCkuIEhvd2V2ZXIs
IGV2ZW4gaWYgc3ViLW9wdGltYWwsIHRoaXMgYWxnb3JpdGhtIHdvcmtzCiAvLyB3ZWxsIGluIHBy
YWN0aWNlIGFuZCBpdCBpcyBlZmZpY2llbnRseSBpbXBsZW1lbnRlZCB1c2luZyBwcmlvcml0eSBx
dWV1ZXMuCi1zdGQ6OnZlY3Rvcjxkb3VibGU+IFNhbXBsZUxpbWl0ZXJSZWdpb24oY29uc3QgTGlt
aXRlciogbGltaXRlcikgeworc3RkOjp2ZWN0b3I8ZG91YmxlPiBTYW1wbGVMaW1pdGVyUmVnaW9u
KGNvbnN0IExpbWl0ZXJEYkdhaW5DdXJ2ZSogbGltaXRlcikgewogICBzdGF0aWNfYXNzZXJ0KGtJ
bnRlcnBvbGF0ZWRHYWluQ3VydmVCZXlvbmRLbmVlUG9pbnRzID4gMiwgIiIpOwogCiAgIHN0cnVj
dCBJbnRlcnZhbCB7CkBAIC0xMzEsNyArMTMyLDcgQEAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBTYW1w
bGVMaW1pdGVyUmVnaW9uKGNvbnN0IExpbWl0ZXIqIGxpbWl0ZXIpIHsKIC8vIENvbXB1dGUgdGhl
IHBhcmFtZXRlcnMgdG8gb3Zlci1hcHByb3hpbWF0ZSB0aGUga25lZSByZWdpb24gdmlhIGxpbmVh
cgogLy8gaW50ZXJwb2xhdGlvbi4gT3Zlci1hcHByb3hpbWF0aW5nIGlzIHNhdHVyYXRpb24tc2Fm
ZSBzaW5jZSB0aGUga25lZSByZWdpb24gaXMKIC8vIGNvbnZleC4KLXZvaWQgUHJlY29tcHV0ZUtu
ZWVBcHByb3hQYXJhbXMoY29uc3QgTGltaXRlciogbGltaXRlciwKK3ZvaWQgUHJlY29tcHV0ZUtu
ZWVBcHByb3hQYXJhbXMoY29uc3QgTGltaXRlckRiR2FpbkN1cnZlKiBsaW1pdGVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0OjpJbnRlcnBvbGF0ZWRQYXJhbWV0ZXJzKiBw
YXJhbWV0ZXJzKSB7CiAgIHN0YXRpY19hc3NlcnQoa0ludGVycG9sYXRlZEdhaW5DdXJ2ZUtuZWVQ
b2ludHMgPiAyLCAiIik7CiAgIC8vIEdldCB8a0ludGVycG9sYXRlZEdhaW5DdXJ2ZUtuZWVQb2lu
dHN8IC0gMSBlcXVhbGx5IHNwYWNlZCBwb2ludHMuCkBAIC0xNjUsNyArMTY2LDcgQEAgdm9pZCBQ
cmVjb21wdXRlS25lZUFwcHJveFBhcmFtcyhjb25zdCBMaW1pdGVyKiBsaW1pdGVyLAogLy8gaW50
ZXJwb2xhdGlvbiBhbmQgZ3JlZWR5IHNhbXBsaW5nLiBVbmRlci1hcHByb3hpbWF0aW5nIGlzIHNh
dHVyYXRpb24tc2FmZQogLy8gc2luY2UgdGhlIGJleW9uZC1rbmVlIHJlZ2lvbiBpcyBjb25jYXZl
Lgogdm9pZCBQcmVjb21wdXRlQmV5b25kS25lZUFwcHJveFBhcmFtcygKLSAgICBjb25zdCBMaW1p
dGVyKiBsaW1pdGVyLAorICAgIGNvbnN0IExpbWl0ZXJEYkdhaW5DdXJ2ZSogbGltaXRlciwKICAg
ICB0ZXN0OjpJbnRlcnBvbGF0ZWRQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKSB7CiAgIC8vIEZpbmQg
cG9pbnRzIG9uIHdoaWNoIHRoZSBsaW5lYXIgcGllY2VzIGFyZSB0YW5nZW50IHRvIHRoZSBnYWlu
IGN1cnZlLgogICBjb25zdCBhdXRvIHNhbXBsZXMgPSBTYW1wbGVMaW1pdGVyUmVnaW9uKGxpbWl0
ZXIpOwpAQCAtMjE2LDcgKzIxNyw3IEBAIG5hbWVzcGFjZSB0ZXN0IHsKIAogSW50ZXJwb2xhdGVk
UGFyYW1ldGVycyBDb21wdXRlSW50ZXJwb2xhdGVkR2FpbkN1cnZlQXBwcm94aW1hdGlvblBhcmFt
cygpIHsKICAgSW50ZXJwb2xhdGVkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICBMaW1pdGVyIGxp
bWl0ZXI7CisgIExpbWl0ZXJEYkdhaW5DdXJ2ZSBsaW1pdGVyOwogICBwYXJhbWV0ZXJzLmNvbXB1
dGVkX2FwcHJveGltYXRpb25fcGFyYW1zX3guZmlsbCgwLjBmKTsKICAgcGFyYW1ldGVycy5jb21w
dXRlZF9hcHByb3hpbWF0aW9uX3BhcmFtc19tLmZpbGwoMC4wZik7CiAgIHBhcmFtZXRlcnMuY29t
cHV0ZWRfYXBwcm94aW1hdGlvbl9wYXJhbXNfcS5maWxsKDAuMGYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9maXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5jYwppbmRleCAzOWNjNzY0MTg1YzFk
OGZiMTM1ZDRjYjg0M2U5MzY2NjEzZDgzY2M3Li45NzFmNGY2MmI3OTAxNTg4Yjc0MDZjY2Q4ZDVj
YmRlYzA1MjBiMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9kaWdpdGFsX2xl
dmVsX2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9maXhlZF9kaWdpdGFsX2xldmVs
X2VzdGltYXRvci5jYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDxjbWF0aD4KIAorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2Zp
eGVkX2dhaW5fY29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJv
bGxlci5jYwppbmRleCAwZDdlM2E2MWIxNWQzMGFjNTQ1MDY3ZDc2NzY5NWZlMmU3YzBlNTdlLi5l
ZjkwOGRjMzU4Mjg0OTRlNGQ2ZWFkZjkyYzA4YmM1ZjA4Y2VmM2RmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9maXhlZF9nYWluX2NvbnRyb2xsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
Zml4ZWRfZ2Fpbl9jb250cm9sbGVyLmNjCkBAIC0xMCwxMyArMTAsOSBAQAogCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmgiCiAK
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0KICNpbmNsdWRlICJhcGkv
YXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ludGVycG9sYXRlZF9n
YWluX2N1cnZlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcv
YXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgpAQCAtMzksNyArMzUsNyBAQCBGaXhlZEdhaW5Db250cm9s
bGVyOjpGaXhlZEdhaW5Db250cm9sbGVyKEFwbURhdGFEdW1wZXIqIGFwbV9kYXRhX2R1bXBlcikK
IEZpeGVkR2FpbkNvbnRyb2xsZXI6OkZpeGVkR2FpbkNvbnRyb2xsZXIoQXBtRGF0YUR1bXBlciog
YXBtX2RhdGFfZHVtcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZyBoaXN0b2dyYW1fbmFtZV9wcmVmaXgpCiAgICAgOiBhcG1fZGF0YV9kdW1w
ZXJfKGFwbV9kYXRhX2R1bXBlciksCi0gICAgICBnYWluX2N1cnZlX2FwcGxpZXJfKDQ4MDAwLCBh
cG1fZGF0YV9kdW1wZXJfLCBoaXN0b2dyYW1fbmFtZV9wcmVmaXgpIHsKKyAgICAgIGxpbWl0ZXJf
KDQ4MDAwLCBhcG1fZGF0YV9kdW1wZXJfLCBoaXN0b2dyYW1fbmFtZV9wcmVmaXgpIHsKICAgLy8g
RG8gdXBkYXRlIGhpc3RvZ3JhbXMueG1sIHdoZW4gYWRkaW5nIG5hbWUgcHJlZml4ZXMuCiAgIFJU
Q19EQ0hFQ0soaGlzdG9ncmFtX25hbWVfcHJlZml4ID09ICIiIHx8IGhpc3RvZ3JhbV9uYW1lX3By
ZWZpeCA9PSAiVGVzdCIgfHwKICAgICAgICAgICAgICBoaXN0b2dyYW1fbmFtZV9wcmVmaXggPT0g
IkF1ZGlvTWl4ZXIiIHx8CkBAIC02MSwxMiArNTcsMTIgQEAgdm9pZCBGaXhlZEdhaW5Db250cm9s
bGVyOjpTZXRHYWluKGZsb2F0IGdhaW5fdG9fYXBwbHlfZGIpIHsKICAgLy8gUmVzZXQgdGhlIGdh
aW4gY3VydmUgYXBwbGllciB0byBxdWlja2x5IHJlYWN0IG9uIGFicnVwdCBsZXZlbCBjaGFuZ2Vz
CiAgIC8vIGNhdXNlZCBieSBsYXJnZSBjaGFuZ2VzIG9mIHRoZSBhcHBsaWVkIGdhaW4uCiAgIGlm
IChwcmV2aW91c19hcHBsaWVkX2dhaW5lZCAhPSBnYWluX3RvX2FwcGx5XykgewotICAgIGdhaW5f
Y3VydmVfYXBwbGllcl8uUmVzZXQoKTsKKyAgICBsaW1pdGVyXy5SZXNldCgpOwogICB9CiB9CiAK
IHZvaWQgRml4ZWRHYWluQ29udHJvbGxlcjo6U2V0U2FtcGxlUmF0ZShzaXplX3Qgc2FtcGxlX3Jh
dGVfaHopIHsKLSAgZ2Fpbl9jdXJ2ZV9hcHBsaWVyXy5TZXRTYW1wbGVSYXRlKHNhbXBsZV9yYXRl
X2h6KTsKKyAgbGltaXRlcl8uU2V0U2FtcGxlUmF0ZShzYW1wbGVfcmF0ZV9oeik7CiB9CiAKIHZv
aWQgRml4ZWRHYWluQ29udHJvbGxlcjo6UHJvY2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2ln
bmFsKSB7CkBAIC04NCw3ICs4MCw3IEBAIHZvaWQgRml4ZWRHYWluQ29udHJvbGxlcjo6UHJvY2Vz
cyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFsKSB7CiAgIH0KIAogICAvLyBVc2UgdGhlIGxp
bWl0ZXIuCi0gIGdhaW5fY3VydmVfYXBwbGllcl8uUHJvY2VzcyhzaWduYWwpOworICBsaW1pdGVy
Xy5Qcm9jZXNzKHNpZ25hbCk7CiAKICAgLy8gRHVtcCBkYXRhIGZvciBkZWJ1Zy4KICAgY29uc3Qg
YXV0byBjaGFubmVsX3ZpZXcgPSBzaWduYWwuY2hhbm5lbCgwKTsKQEAgLTEwMCw2ICs5Niw2IEBA
IHZvaWQgRml4ZWRHYWluQ29udHJvbGxlcjo6UHJvY2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4g
c2lnbmFsKSB7CiB9CiAKIGZsb2F0IEZpeGVkR2FpbkNvbnRyb2xsZXI6Okxhc3RBdWRpb0xldmVs
KCkgY29uc3QgewotICByZXR1cm4gZ2Fpbl9jdXJ2ZV9hcHBsaWVyXy5MYXN0QXVkaW9MZXZlbCgp
OworICByZXR1cm4gbGltaXRlcl8uTGFzdEF1ZGlvTGV2ZWwoKTsKIH0KIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJvbGxl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZmNmFiODExNzI5NDk0ZWQ4NmRiZDg2MjZhNjMxOWJiYTYxYTRm
MWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BS
T0NFU1NJTkdfQUdDMl9GSVhFRF9HQUlOX0NPTlRST0xMRVJfSF8KLSNkZWZpbmUgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0FHQzJfRklYRURfR0FJTl9DT05UUk9MTEVSX0hfCi0KLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2N1cnZlX2FwcGxpZXIuaCIKLSNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19mcmFtZV92aWV3
LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgQXBtRGF0YUR1bXBlcjsKLQotY2xhc3Mg
Rml4ZWRHYWluQ29udHJvbGxlciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBGaXhlZEdhaW5Db250
cm9sbGVyKEFwbURhdGFEdW1wZXIqIGFwbV9kYXRhX2R1bXBlcik7Ci0gIEZpeGVkR2FpbkNvbnRy
b2xsZXIoQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyLAotICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIGhpc3RvZ3JhbV9uYW1lX3ByZWZpeCk7Ci0KLSAgdm9pZCBQcm9jZXNz
KEF1ZGlvRnJhbWVWaWV3PGZsb2F0PiBzaWduYWwpOwotCi0gIC8vIFJhdGUgYW5kIGdhaW4gbWF5
IGJlIGNoYW5nZWQgYXQgYW55IHRpbWUgKGJ1dCBub3QgY29uY3VycmVudGx5Ci0gIC8vIHdpdGgg
YW55IG90aGVyIG1ldGhvZCBjYWxsKS4KLSAgdm9pZCBTZXRHYWluKGZsb2F0IGdhaW5fdG9fYXBw
bHlfZGIpOwotICB2b2lkIFNldFNhbXBsZVJhdGUoc2l6ZV90IHNhbXBsZV9yYXRlX2h6KTsKLSAg
ZmxvYXQgTGFzdEF1ZGlvTGV2ZWwoKSBjb25zdDsKLQotIHByaXZhdGU6Ci0gIGZsb2F0IGdhaW5f
dG9fYXBwbHlfID0gMS5mOwotICBBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXJfID0gbnVs
bHB0cjsKLSAgR2FpbkN1cnZlQXBwbGllciBnYWluX2N1cnZlX2FwcGxpZXJfOwotfTsKLQotfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lO
R19BR0MyX0ZJWEVEX0dBSU5fQ09OVFJPTExFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvZml4ZWRfZ2Fpbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4
ZWRfZ2Fpbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkYjE3MzJhYTQ3NjQ4YWQxOTBlNjI2ZjY5NmNmZTQ5Mzg2ZDk1MmE0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVk
X2dhaW5fY29udHJvbGxlcl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCww
IEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29udHJvbGxlci5oIgotCi0jaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX3Rlc3RpbmdfY29tbW9uLmgiCi0jaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmVjdG9yX2Zsb2F0X2ZyYW1lLmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVt
cGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNl
IHsKLQotY29uc3RleHByIGZsb2F0IGtJbnB1dExldmVsTGluZWFyID0gMTUwMDAuZjsKLQotY29u
c3RleHByIGZsb2F0IGtHYWluVG9BcHBseURiID0gMTUuZjsKLQotZmxvYXQgUnVuRml4ZWRHYWlu
Q29udHJvbGxlcldpdGhDb25zdGFudElucHV0KEZpeGVkR2FpbkNvbnRyb2xsZXIqIGZpeGVkX2dj
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZs
b2F0IGlucHV0X2xldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHNpemVfdCBudW1fZnJhbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBzYW1wbGVfcmF0ZSkgewotICAvLyBHaXZl
IHRpbWUgdG8gdGhlIGxldmVsIGV0aW1hdG9yIHRvIGNvbnZlcmdlLgotICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bV9mcmFtZXM7ICsraSkgewotICAgIFZlY3RvckZsb2F0RnJhbWUgdmVjdG9y
c193aXRoX2Zsb2F0X2ZyYW1lKAotICAgICAgICAxLCBydGM6OkNoZWNrZWREaXZFeGFjdChzYW1w
bGVfcmF0ZSwgMTAwKSwgaW5wdXRfbGV2ZWwpOwotICAgIGZpeGVkX2djLT5Qcm9jZXNzKHZlY3Rv
cnNfd2l0aF9mbG9hdF9mcmFtZS5mbG9hdF9mcmFtZV92aWV3KCkpOwotICB9Ci0KLSAgLy8gUHJv
Y2VzcyB0aGUgbGFzdCBmcmFtZSB3aXRoIGNvbnN0YW50IGlucHV0IGxldmVsLgotICBWZWN0b3JG
bG9hdEZyYW1lIHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZV9sYXN0KAotICAgICAgMSwgcnRjOjpD
aGVja2VkRGl2RXhhY3Qoc2FtcGxlX3JhdGUsIDEwMCksIGlucHV0X2xldmVsKTsKLSAgZml4ZWRf
Z2MtPlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lX2xhc3QuZmxvYXRfZnJhbWVfdmll
dygpKTsKLQotICAvLyBSZXR1cm4gdGhlIGxhc3Qgc2FtcGxlIGZyb20gdGhlIGxhc3QgcHJvY2Vz
c2VkIGZyYW1lLgotICBjb25zdCBhdXRvIGNoYW5uZWwgPQotICAgICAgdmVjdG9yc193aXRoX2Zs
b2F0X2ZyYW1lX2xhc3QuZmxvYXRfZnJhbWVfdmlldygpLmNoYW5uZWwoMCk7Ci0gIHJldHVybiBj
aGFubmVsW2NoYW5uZWwuc2l6ZSgpIC0gMV07Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxBcG1EYXRh
RHVtcGVyPiBHZXRBcG1EYXRhRHVtcGVyKCkgewotICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8
QXBtRGF0YUR1bXBlcj4oMCk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxGaXhlZEdhaW5Db250cm9s
bGVyPiBDcmVhdGVGaXhlZEdhaW5Db250cm9sbGVyKAotICAgIGZsb2F0IGdhaW5fdG9fYXBwbHks
Ci0gICAgc2l6ZV90IHJhdGUsCi0gICAgc3RkOjpzdHJpbmcgaGlzdG9ncmFtX25hbWVfcHJlZml4
LAotICAgIEFwbURhdGFEdW1wZXIqIHRlc3RfZGF0YV9kdW1wZXIpIHsKLSAgc3RkOjp1bmlxdWVf
cHRyPEZpeGVkR2FpbkNvbnRyb2xsZXI+IGZnYyA9Ci0gICAgICBhYnNsOjptYWtlX3VuaXF1ZTxG
aXhlZEdhaW5Db250cm9sbGVyPih0ZXN0X2RhdGFfZHVtcGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9ncmFtX25hbWVfcHJlZml4KTsKLSAgZmdj
LT5TZXRHYWluKGdhaW5fdG9fYXBwbHkpOwotICBmZ2MtPlNldFNhbXBsZVJhdGUocmF0ZSk7Ci0g
IHJldHVybiBmZ2M7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxGaXhlZEdhaW5Db250cm9sbGVyPiBD
cmVhdGVGaXhlZEdhaW5Db250cm9sbGVyKAotICAgIGZsb2F0IGdhaW5fdG9fYXBwbHksCi0gICAg
c2l6ZV90IHJhdGUsCi0gICAgQXBtRGF0YUR1bXBlciogdGVzdF9kYXRhX2R1bXBlcikgewotICBy
ZXR1cm4gQ3JlYXRlRml4ZWRHYWluQ29udHJvbGxlcihnYWluX3RvX2FwcGx5LCByYXRlLCAiIiwg
dGVzdF9kYXRhX2R1bXBlcik7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1URVNUKEF1dG9tYXRp
Y0dhaW5Db250cm9sbGVyMkZpeGVkRGlnaXRhbCwgQ3JlYXRlVXNlKSB7Ci0gIGNvbnN0IGludCBr
U2FtcGxlUmF0ZSA9IDQ0MDAwOwotICBhdXRvIHRlc3RfZGF0YV9kdW1wZXIgPSBHZXRBcG1EYXRh
RHVtcGVyKCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxGaXhlZEdhaW5Db250cm9sbGVyPiBmaXhlZF9n
YyA9IENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIoCi0gICAgICBrR2FpblRvQXBwbHlEYiwga1Nh
bXBsZVJhdGUsIHRlc3RfZGF0YV9kdW1wZXIuZ2V0KCkpOwotICBWZWN0b3JGbG9hdEZyYW1lIHZl
Y3RvcnNfd2l0aF9mbG9hdF9mcmFtZSgKLSAgICAgIDEsIHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KGtT
YW1wbGVSYXRlLCAxMDApLCBrSW5wdXRMZXZlbExpbmVhcik7Ci0gIGF1dG8gZmxvYXRfZnJhbWUg
PSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUuZmxvYXRfZnJhbWVfdmlldygpOwotICBmaXhlZF9n
Yy0+UHJvY2VzcyhmbG9hdF9mcmFtZSk7Ci0gIGNvbnN0IGF1dG8gY2hhbm5lbCA9IGZsb2F0X2Zy
YW1lLmNoYW5uZWwoMCk7Ci0gIEVYUEVDVF9MVChrSW5wdXRMZXZlbExpbmVhciwgY2hhbm5lbFsw
XSk7Ci19Ci0KLVRFU1QoQXV0b21hdGljR2FpbkNvbnRyb2xsZXIyRml4ZWREaWdpdGFsLCBDaGVj
a1NhdHVyYXRpb25CZWhhdmlvcldpdGhMaW1pdGVyKSB7Ci0gIGNvbnN0IGZsb2F0IGtJbnB1dExl
dmVsID0gMzI3NjcuZjsKLSAgY29uc3Qgc2l6ZV90IGtOdW1GcmFtZXMgPSA1OwotICBjb25zdCBz
aXplX3Qga1NhbXBsZVJhdGUgPSA0MjAwMDsKLQotICBhdXRvIHRlc3RfZGF0YV9kdW1wZXIgPSBH
ZXRBcG1EYXRhRHVtcGVyKCk7Ci0KLSAgY29uc3QgYXV0byBnYWluc19ub19zYXR1cmF0aW9uID0K
LSAgICAgIHRlc3Q6OkxpblNwYWNlKDAuMSwgdGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJG
cyAtIDAuMDEsIDEwKTsKLSAgZm9yIChjb25zdCBhdXRvIGdhaW5fZGIgOiBnYWluc19ub19zYXR1
cmF0aW9uKSB7Ci0gICAgLy8gU2luY2UgfHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnN8
ID4gfGdhaW5fZGJ8LCB0aGUKLSAgICAvLyBsaW1pdGVyIHdpbGwgbm90IHNhdHVyYXRlIHRoZSBz
aWduYWwuCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZpeGVkR2FpbkNvbnRyb2xsZXI+IGZpeGVkX2dj
X25vX3NhdHVyYXRpb24gPQotICAgICAgICBDcmVhdGVGaXhlZEdhaW5Db250cm9sbGVyKGdhaW5f
ZGIsIGtTYW1wbGVSYXRlLCB0ZXN0X2RhdGFfZHVtcGVyLmdldCgpKTsKLQotICAgIC8vIFNhdHVy
YXRpb24gbm90IGV4cGVjdGVkLgotICAgIFNDT1BFRF9UUkFDRShzdGQ6OnRvX3N0cmluZyhnYWlu
X2RiKSk7Ci0gICAgRVhQRUNUX0xUKAotICAgICAgICBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0
aENvbnN0YW50SW5wdXQoCi0gICAgICAgICAgICBmaXhlZF9nY19ub19zYXR1cmF0aW9uLmdldCgp
LCBrSW5wdXRMZXZlbCwga051bUZyYW1lcywga1NhbXBsZVJhdGUpLAotICAgICAgICAzMjc2Ny5m
KTsKLSAgfQotCi0gIGNvbnN0IGF1dG8gZ2FpbnNfc2F0dXJhdGlvbiA9Ci0gICAgICB0ZXN0OjpM
aW5TcGFjZSh0ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzICsgMC4wMSwgMTAsIDEwKTsK
LSAgZm9yIChjb25zdCBhdXRvIGdhaW5fZGIgOiBnYWluc19zYXR1cmF0aW9uKSB7Ci0gICAgLy8g
U2luY2UgfHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnN8IDwgfGdhaW58LCB0aGUgbGlt
aXRlcgotICAgIC8vIHdpbGwgc2F0dXJhdGUgdGhlIHNpZ25hbC4KLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Rml4ZWRHYWluQ29udHJvbGxlcj4gZml4ZWRfZ2Nfc2F0dXJhdGlvbiA9Ci0gICAgICAgIENy
ZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIoZ2Fpbl9kYiwga1NhbXBsZVJhdGUsIHRlc3RfZGF0YV9k
dW1wZXIuZ2V0KCkpOwotCi0gICAgLy8gU2F0dXJhdGlvbiBleHBlY3RlZC4KLSAgICBTQ09QRURf
VFJBQ0Uoc3RkOjp0b19zdHJpbmcoZ2Fpbl9kYikpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgKLSAg
ICAgICAgUnVuRml4ZWRHYWluQ29udHJvbGxlcldpdGhDb25zdGFudElucHV0KAotICAgICAgICAg
ICAgZml4ZWRfZ2Nfc2F0dXJhdGlvbi5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtT
YW1wbGVSYXRlKSwKLSAgICAgICAgMzI3NjcuZik7Ci0gIH0KLX0KLQotVEVTVChBdXRvbWF0aWNH
YWluQ29udHJvbGxlcjJGaXhlZERpZ2l0YWwsCi0gICAgIENoZWNrU2F0dXJhdGlvbkJlaGF2aW9y
V2l0aExpbWl0ZXJTaW5nbGVTYW1wbGUpIHsKLSAgY29uc3QgZmxvYXQga0lucHV0TGV2ZWwgPSAz
Mjc2Ny5mOwotICBjb25zdCBzaXplX3Qga051bUZyYW1lcyA9IDU7Ci0gIGNvbnN0IHNpemVfdCBr
U2FtcGxlUmF0ZSA9IDgwMDA7Ci0KLSAgYXV0byB0ZXN0X2RhdGFfZHVtcGVyID0gR2V0QXBtRGF0
YUR1bXBlcigpOwotCi0gIGNvbnN0IGF1dG8gZ2FpbnNfbm9fc2F0dXJhdGlvbiA9Ci0gICAgICB0
ZXN0OjpMaW5TcGFjZSgwLjEsIHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnMgLSAwLjAx
LCAxMCk7Ci0gIGZvciAoY29uc3QgYXV0byBnYWluX2RiIDogZ2FpbnNfbm9fc2F0dXJhdGlvbikg
ewotICAgIC8vIFNpbmNlIHxnYWlufCA+IHx0ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZz
fCwgdGhlIGxpbWl0ZXIgd2lsbAotICAgIC8vIG5vdCBzYXR1cmF0ZSB0aGUgc2lnbmFsLgotICAg
IHN0ZDo6dW5pcXVlX3B0cjxGaXhlZEdhaW5Db250cm9sbGVyPiBmaXhlZF9nY19ub19zYXR1cmF0
aW9uID0KLSAgICAgICAgQ3JlYXRlRml4ZWRHYWluQ29udHJvbGxlcihnYWluX2RiLCBrU2FtcGxl
UmF0ZSwgdGVzdF9kYXRhX2R1bXBlci5nZXQoKSk7Ci0KLSAgICAvLyBTYXR1cmF0aW9uIG5vdCBl
eHBlY3RlZC4KLSAgICBTQ09QRURfVFJBQ0Uoc3RkOjp0b19zdHJpbmcoZ2Fpbl9kYikpOwotICAg
IEVYUEVDVF9MVCgKLSAgICAgICAgUnVuRml4ZWRHYWluQ29udHJvbGxlcldpdGhDb25zdGFudElu
cHV0KAotICAgICAgICAgICAgZml4ZWRfZ2Nfbm9fc2F0dXJhdGlvbi5nZXQoKSwga0lucHV0TGV2
ZWwsIGtOdW1GcmFtZXMsIGtTYW1wbGVSYXRlKSwKLSAgICAgICAgMzI3NjcuZik7Ci0gIH0KLQot
ICBjb25zdCBhdXRvIGdhaW5zX3NhdHVyYXRpb24gPQotICAgICAgdGVzdDo6TGluU3BhY2UodGVz
dDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGcyArIDAuMDEsIDEwLCAxMCk7Ci0gIGZvciAoY29u
c3QgYXV0byBnYWluX2RiIDogZ2FpbnNfc2F0dXJhdGlvbikgewotICAgIC8vIFNpbmdlIHxnYWlu
fCA8IHx0ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzfCwgdGhlIGxpbWl0ZXIgd2lsbAot
ICAgIC8vIHNhdHVyYXRlIHRoZSBzaWduYWwuCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZpeGVkR2Fp
bkNvbnRyb2xsZXI+IGZpeGVkX2djX3NhdHVyYXRpb24gPQotICAgICAgICBDcmVhdGVGaXhlZEdh
aW5Db250cm9sbGVyKGdhaW5fZGIsIGtTYW1wbGVSYXRlLCB0ZXN0X2RhdGFfZHVtcGVyLmdldCgp
KTsKLQotICAgIC8vIFNhdHVyYXRpb24gZXhwZWN0ZWQuCi0gICAgU0NPUEVEX1RSQUNFKHN0ZDo6
dG9fc3RyaW5nKGdhaW5fZGIpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoCi0gICAgICAgIFJ1bkZp
eGVkR2FpbkNvbnRyb2xsZXJXaXRoQ29uc3RhbnRJbnB1dCgKLSAgICAgICAgICAgIGZpeGVkX2dj
X3NhdHVyYXRpb24uZ2V0KCksIGtJbnB1dExldmVsLCBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0ZSks
Ci0gICAgICAgIDMyNzY3LmYpOwotICB9Ci19Ci0KLVRFU1QoQXV0b21hdGljR2FpbkNvbnRyb2xs
ZXIyRml4ZWREaWdpdGFsLCBHYWluU2hvdWxkQ2hhbmdlT25TZXRHYWluKSB7Ci0gIGNvbnN0ZXhw
ciBmbG9hdCBrSW5wdXRMZXZlbCA9IDEwMDAuZjsKLSAgY29uc3RleHByIHNpemVfdCBrTnVtRnJh
bWVzID0gNTsKLSAgY29uc3RleHByIHNpemVfdCBrU2FtcGxlUmF0ZSA9IDgwMDA7Ci0gIGNvbnN0
ZXhwciBmbG9hdCBrR2FpbkRiTm9DaGFuZ2UgPSAwLmY7Ci0gIGNvbnN0ZXhwciBmbG9hdCBrR2Fp
bkRiRmFjdG9yMTAgPSAyMC5mOwotCi0gIGF1dG8gdGVzdF9kYXRhX2R1bXBlciA9IEdldEFwbURh
dGFEdW1wZXIoKTsKLSAgc3RkOjp1bmlxdWVfcHRyPEZpeGVkR2FpbkNvbnRyb2xsZXI+IGZpeGVk
X2djX25vX3NhdHVyYXRpb24gPQotICAgICAgQ3JlYXRlRml4ZWRHYWluQ29udHJvbGxlcihrR2Fp
bkRiTm9DaGFuZ2UsIGtTYW1wbGVSYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2RhdGFfZHVtcGVyLmdldCgpKTsKLQotICAvLyBTaWduYWwgbGV2ZWwgaXMgdW5jaGFu
Z2VkIHdpdGggMCBkYiBnYWluLgotICBFWFBFQ1RfRkxPQVRfRVEoCi0gICAgICBSdW5GaXhlZEdh
aW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQoCi0gICAgICAgICAgZml4ZWRfZ2Nfbm9fc2F0
dXJhdGlvbi5nZXQoKSwga0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtTYW1wbGVSYXRlKSwKLSAg
ICAgIGtJbnB1dExldmVsKTsKLQotICBmaXhlZF9nY19ub19zYXR1cmF0aW9uLT5TZXRHYWluKGtH
YWluRGJGYWN0b3IxMCk7Ci0KLSAgLy8gKzIwZGIgc2hvdWxkIGluY3JlYXNlIHNpZ25hbCBieSBh
IGZhY3RvciBvZiAxMC4KLSAgRVhQRUNUX0ZMT0FUX0VRKAotICAgICAgUnVuRml4ZWRHYWluQ29u
dHJvbGxlcldpdGhDb25zdGFudElucHV0KAotICAgICAgICAgIGZpeGVkX2djX25vX3NhdHVyYXRp
b24uZ2V0KCksIGtJbnB1dExldmVsLCBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0ZSksCi0gICAgICBr
SW5wdXRMZXZlbCAqIDEwKTsKLX0KLQotVEVTVChBdXRvbWF0aWNHYWluQ29udHJvbGxlcjJGaXhl
ZERpZ2l0YWwsCi0gICAgIFNldEdhaW5TaG91bGRCZUZhc3RBbmRUaW1lSW52YXJpYW50KSB7Ci0g
IC8vIE51bWJlciBvZiBmcmFtZXMgcmVxdWlyZWQgZm9yIHRoZSBmaXhlZCBnYWluIGNvbnRyb2xs
ZXIgdG8gYWRhcHQgb24gdGhlCi0gIC8vIGlucHV0IHNpZ25hbCB3aGVuIHRoZSBnYWluIGNoYW5n
ZXMuCi0gIGNvbnN0ZXhwciBzaXplX3Qga051bUZyYW1lcyA9IDU7Ci0KLSAgY29uc3RleHByIGZs
b2F0IGtJbnB1dExldmVsID0gMTAwMC5mOwotICBjb25zdGV4cHIgc2l6ZV90IGtTYW1wbGVSYXRl
ID0gODAwMDsKLSAgY29uc3RleHByIGZsb2F0IGtHYWluRGJMb3cgPSAwLmY7Ci0gIGNvbnN0ZXhw
ciBmbG9hdCBrR2FpbkRiSGlnaCA9IDQwLmY7Ci0gIHN0YXRpY19hc3NlcnQoa0dhaW5EYkxvdyA8
IGtHYWluRGJIaWdoLCAiIik7Ci0KLSAgYXV0byB0ZXN0X2RhdGFfZHVtcGVyID0gR2V0QXBtRGF0
YUR1bXBlcigpOwotICBzdGQ6OnVuaXF1ZV9wdHI8Rml4ZWRHYWluQ29udHJvbGxlcj4gZml4ZWRf
Z2MgPSBDcmVhdGVGaXhlZEdhaW5Db250cm9sbGVyKAotICAgICAga0dhaW5EYkxvdywga1NhbXBs
ZVJhdGUsIHRlc3RfZGF0YV9kdW1wZXIuZ2V0KCkpOwotCi0gIGZpeGVkX2djLT5TZXRHYWluKGtH
YWluRGJMb3cpOwotICBjb25zdCBmbG9hdCBvdXRwdXRfbGV2ZWxfcHJlID0gUnVuRml4ZWRHYWlu
Q29udHJvbGxlcldpdGhDb25zdGFudElucHV0KAotICAgICAgZml4ZWRfZ2MuZ2V0KCksIGtJbnB1
dExldmVsLCBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0ZSk7Ci0KLSAgZml4ZWRfZ2MtPlNldEdhaW4o
a0dhaW5EYkhpZ2gpOwotICBSdW5GaXhlZEdhaW5Db250cm9sbGVyV2l0aENvbnN0YW50SW5wdXQo
Zml4ZWRfZ2MuZ2V0KCksIGtJbnB1dExldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga051bUZyYW1lcywga1NhbXBsZVJhdGUpOwotCi0gIGZpeGVkX2djLT5T
ZXRHYWluKGtHYWluRGJMb3cpOwotICBjb25zdCBmbG9hdCBvdXRwdXRfbGV2ZWxfcG9zdCA9IFJ1
bkZpeGVkR2FpbkNvbnRyb2xsZXJXaXRoQ29uc3RhbnRJbnB1dCgKLSAgICAgIGZpeGVkX2djLmdl
dCgpLCBrSW5wdXRMZXZlbCwga051bUZyYW1lcywga1NhbXBsZVJhdGUpOwotCi0gIEVYUEVDVF9F
UShvdXRwdXRfbGV2ZWxfcHJlLCBvdXRwdXRfbGV2ZWxfcG9zdCk7Ci19Ci0KLVRFU1QoQXV0b21h
dGljR2FpbkNvbnRyb2xsZXIyRml4ZWREaWdpdGFsLCBSZWdpb25IaXN0b2dyYW1Jc1VwZGF0ZWQp
IHsKLSAgY29uc3RleHByIHNpemVfdCBrU2FtcGxlUmF0ZSA9IDgwMDA7Ci0gIGNvbnN0ZXhwciBm
bG9hdCBrR2FpbkRiID0gMC5mOwotICBjb25zdGV4cHIgZmxvYXQga0lucHV0TGV2ZWwgPSAxMDAw
LmY7Ci0gIGNvbnN0ZXhwciBzaXplX3Qga051bUZyYW1lcyA9IDU7Ci0KLSAgbWV0cmljczo6UmVz
ZXQoKTsKLQotICBhdXRvIHRlc3RfZGF0YV9kdW1wZXIgPSBHZXRBcG1EYXRhRHVtcGVyKCk7Ci0g
IHN0ZDo6dW5pcXVlX3B0cjxGaXhlZEdhaW5Db250cm9sbGVyPiBmaXhlZF9nY19ub19zYXR1cmF0
aW9uID0KLSAgICAgIENyZWF0ZUZpeGVkR2FpbkNvbnRyb2xsZXIoa0dhaW5EYiwga1NhbXBsZVJh
dGUsICJUZXN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9kYXRhX2R1
bXBlci5nZXQoKSk7Ci0KLSAgc3RhdGljX2Nhc3Q8dm9pZD4oUnVuRml4ZWRHYWluQ29udHJvbGxl
cldpdGhDb25zdGFudElucHV0KAotICAgICAgZml4ZWRfZ2Nfbm9fc2F0dXJhdGlvbi5nZXQoKSwg
a0lucHV0TGV2ZWwsIGtOdW1GcmFtZXMsIGtTYW1wbGVSYXRlKSk7Ci0KLSAgLy8gRGVzdHJveWlu
ZyBGaXhlZEdhaW5Db250cm9sbGVyIHNob3VsZCBjYXVzZSB0aGUgbGFzdCBsaW1pdGVyIHJlZ2lv
biB0byBiZQotICAvLyBsb2dnZWQuCi0gIGZpeGVkX2djX25vX3NhdHVyYXRpb24ucmVzZXQoKTsK
LQotICBFWFBFQ1RfRVEoMSwgbWV0cmljczo6TnVtU2FtcGxlcygKLSAgICAgICAgICAgICAgICAg
ICAiV2ViUlRDLkF1ZGlvLlRlc3QuRml4ZWREaWdpdGFsR2FpbkN1cnZlUmVnaW9uLklkZW50aXR5
IikpOwotICBFWFBFQ1RfRVEoMCwgbWV0cmljczo6TnVtU2FtcGxlcygKLSAgICAgICAgICAgICAg
ICAgICAiV2ViUlRDLkF1ZGlvLlRlc3QuRml4ZWREaWdpdGFsR2FpbkN1cnZlUmVnaW9uLktuZWUi
KSk7Ci0gIEVYUEVDVF9FUSgwLCBtZXRyaWNzOjpOdW1TYW1wbGVzKAotICAgICAgICAgICAgICAg
ICAgICJXZWJSVEMuQXVkaW8uVGVzdC5GaXhlZERpZ2l0YWxHYWluQ3VydmVSZWdpb24uTGltaXRl
ciIpKTsKLSAgRVhQRUNUX0VRKDAsIG1ldHJpY3M6Ok51bVNhbXBsZXMoCi0gICAgICAgICAgICAg
ICAgICAgIldlYlJUQy5BdWRpby5UZXN0LkZpeGVkRGlnaXRhbEdhaW5DdXJ2ZVJlZ2lvbi5TYXR1
cmF0aW9uIikpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIu
Y2MKaW5kZXggMzhlYjFkZTAzZjk1ODliYmQ3ZmVkMDQ0YjgzMGU4OGZjMjhjMTQ3MC4uOGM0Mzcx
NzdlM2NiZmE2YmU1MDZhNmJkZjU2NzZhNzBmODliMWNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvZ2Fpbl9hcHBsaWVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fYXBwbGllci5j
YwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvZ2Fpbl9hcHBsaWVyLmgiCiAKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29tbW9uLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXguaCIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvZ2Fpbl9hcHBsaWVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIu
aAppbmRleCBlMjU2N2IxOWRiYmRjOWEzYmUxOGRiNDE0NmM2YTJhYjAwOWRiOWNhLi43ZjlmMDBl
MDc2MDBlMmM4MTg0ODllMmM2MTFlN2EzMjZiYzMwMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YWdjMi9nYWluX2FwcGxpZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2FwcGxpZXIuaApA
QCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9H
QUlOX0FQUExJRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfR0FJ
Tl9BUFBMSUVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX2ZyYW1lX3ZpZXcuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2N1cnZlX2FwcGxpZXIu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2N1cnZlX2FwcGxpZXIuY2MKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDFlY2EyMWI5OGU3MTgxNzg3MmEwNTQzYTBmMDllODg1OTFiZGFiNWUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmgiCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+
Ci0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0KLSNpbmNsdWRlICJhcGkvYXJy
YXlfdmlldy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2Fw
bV9kYXRhX2R1bXBlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotCi1uYW1lc3Bh
Y2Ugd2VicnRjIHsKLW5hbWVzcGFjZSB7Ci0KLS8vIFRoaXMgY29uc3RhbnQgYWZmZWN0cyB0aGUg
d2F5IHNjYWxpbmcgZmFjdG9ycyBhcmUgaW50ZXJwb2xhdGVkIGZvciB0aGUgZmlyc3QKLS8vIHN1
Yi1mcmFtZSBvZiBhIGZyYW1lLiBPbmx5IGluIHRoZSBjYXNlIGluIHdoaWNoIHRoZSBmaXJzdCBz
dWItZnJhbWUgaGFzIGFuCi0vLyBlc3RpbWF0ZWQgbGV2ZWwgd2hpY2ggaXMgZ3JlYXRlciB0aGFu
IHRoZSB0aGF0IG9mIHRoZSBwcmV2aW91cyBhbmFseXplZAotLy8gc3ViLWZyYW1lLCBsaW5lYXIg
aW50ZXJwb2xhdGlvbiBpcyByZXBsYWNlZCB3aXRoIGEgcG93ZXIgZnVuY3Rpb24gd2hpY2gKLS8v
IHJlZHVjZXMgdGhlIGNoYW5jZXMgb2Ygb3Zlci1zaG9vdGluZyAoYW5kIGhlbmNlIHNhdHVyYXRp
b24pLCBob3dldmVyIHJlZHVjaW5nCi0vLyB0aGUgZml4ZWQgZ2FpbiBlZmZlY3RpdmVuZXNzLgot
Y29uc3RleHByIGZsb2F0IGtBdHRhY2tGaXJzdFN1YmZyYW1lSW50ZXJwb2xhdGlvblBvd2VyID0g
OC5mOwotCi12b2lkIEludGVycG9sYXRlRmlyc3RTdWJmcmFtZShmbG9hdCBsYXN0X2ZhY3RvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGN1cnJlbnRfZmFjdG9yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpBcnJheVZpZXc8ZmxvYXQ+IHN1YmZyYW1l
KSB7Ci0gIGNvbnN0IGF1dG8gbiA9IHN1YmZyYW1lLnNpemUoKTsKLSAgY29uc3RleHByIGF1dG8g
cCA9IGtBdHRhY2tGaXJzdFN1YmZyYW1lSW50ZXJwb2xhdGlvblBvd2VyOwotICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG47ICsraSkgewotICAgIHN1YmZyYW1lW2ldID0gc3RkOjpwb3coMS5mIC0g
aSAvIG4sIHApICogKGxhc3RfZmFjdG9yIC0gY3VycmVudF9mYWN0b3IpICsKLSAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRfZmFjdG9yOwotICB9Ci19Ci0KLXZvaWQgQ29tcHV0ZVBlclNhbXBsZVN1
YmZyYW1lRmFjdG9ycygKLSAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCBrU3ViRnJhbWVzSW5G
cmFtZSArIDE+JiBzY2FsaW5nX2ZhY3RvcnMsCi0gICAgc2l6ZV90IHNhbXBsZXNfcGVyX2NoYW5u
ZWwsCi0gICAgcnRjOjpBcnJheVZpZXc8ZmxvYXQ+IHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3Jz
KSB7Ci0gIGNvbnN0IHNpemVfdCBudW1fc3ViZnJhbWVzID0gc2NhbGluZ19mYWN0b3JzLnNpemUo
KSAtIDE7Ci0gIGNvbnN0IHNpemVfdCBzdWJmcmFtZV9zaXplID0KLSAgICAgIHJ0Yzo6Q2hlY2tl
ZERpdkV4YWN0KHNhbXBsZXNfcGVyX2NoYW5uZWwsIG51bV9zdWJmcmFtZXMpOwotCi0gIC8vIEhh
bmRsZSBmaXJzdCBzdWItZnJhbWUgZGlmZmVyZW50bHkgaW4gY2FzZSBvZiBhdHRhY2suCi0gIGNv
bnN0IGJvb2wgaXNfYXR0YWNrID0gc2NhbGluZ19mYWN0b3JzWzBdID4gc2NhbGluZ19mYWN0b3Jz
WzFdOwotICBpZiAoaXNfYXR0YWNrKSB7Ci0gICAgSW50ZXJwb2xhdGVGaXJzdFN1YmZyYW1lKAot
ICAgICAgICBzY2FsaW5nX2ZhY3RvcnNbMF0sIHNjYWxpbmdfZmFjdG9yc1sxXSwKLSAgICAgICAg
cnRjOjpBcnJheVZpZXc8ZmxvYXQ+KAotICAgICAgICAgICAgcGVyX3NhbXBsZV9zY2FsaW5nX2Zh
Y3RvcnMuc3VidmlldygwLCBzdWJmcmFtZV9zaXplKSkpOwotICB9Ci0KLSAgZm9yIChzaXplX3Qg
aSA9IGlzX2F0dGFjayA/IDEgOiAwOyBpIDwgbnVtX3N1YmZyYW1lczsgKytpKSB7Ci0gICAgY29u
c3Qgc2l6ZV90IHN1YmZyYW1lX3N0YXJ0ID0gaSAqIHN1YmZyYW1lX3NpemU7Ci0gICAgY29uc3Qg
ZmxvYXQgc2NhbGluZ19zdGFydCA9IHNjYWxpbmdfZmFjdG9yc1tpXTsKLSAgICBjb25zdCBmbG9h
dCBzY2FsaW5nX2VuZCA9IHNjYWxpbmdfZmFjdG9yc1tpICsgMV07Ci0gICAgY29uc3QgZmxvYXQg
c2NhbGluZ19kaWZmID0gKHNjYWxpbmdfZW5kIC0gc2NhbGluZ19zdGFydCkgLyBzdWJmcmFtZV9z
aXplOwotICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgc3ViZnJhbWVfc2l6ZTsgKytqKSB7Ci0g
ICAgICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc1tzdWJmcmFtZV9zdGFydCArIGpdID0KLSAg
ICAgICAgICBzY2FsaW5nX3N0YXJ0ICsgc2NhbGluZ19kaWZmICogajsKLSAgICB9Ci0gIH0KLX0K
LQotdm9pZCBTY2FsZVNhbXBsZXMocnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+IHBlcl9zYW1w
bGVfc2NhbGluZ19mYWN0b3JzLAotICAgICAgICAgICAgICAgICAgQXVkaW9GcmFtZVZpZXc8Zmxv
YXQ+IHNpZ25hbCkgewotICBjb25zdCBzaXplX3Qgc2FtcGxlc19wZXJfY2hhbm5lbCA9IHNpZ25h
bC5zYW1wbGVzX3Blcl9jaGFubmVsKCk7Ci0gIFJUQ19EQ0hFQ0tfRVEoc2FtcGxlc19wZXJfY2hh
bm5lbCwgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMuc2l6ZSgpKTsKLSAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaWduYWwubnVtX2NoYW5uZWxzKCk7ICsraSkgewotICAgIGF1dG8gY2hhbm5l
bCA9IHNpZ25hbC5jaGFubmVsKGkpOwotICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgc2FtcGxl
c19wZXJfY2hhbm5lbDsgKytqKSB7Ci0gICAgICBjaGFubmVsW2pdICo9IHBlcl9zYW1wbGVfc2Nh
bGluZ19mYWN0b3JzW2pdOwotICAgIH0KLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotR2Fp
bkN1cnZlQXBwbGllcjo6R2FpbkN1cnZlQXBwbGllcihzaXplX3Qgc2FtcGxlX3JhdGVfaHosCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwbURhdGFEdW1wZXIqIGFwbV9kYXRh
X2R1bXBlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcg
aGlzdG9ncmFtX25hbWUpCi0gICAgOiBpbnRlcnBfZ2Fpbl9jdXJ2ZV8oYXBtX2RhdGFfZHVtcGVy
LCBoaXN0b2dyYW1fbmFtZSksCi0gICAgICBsZXZlbF9lc3RpbWF0b3JfKHNhbXBsZV9yYXRlX2h6
LCBhcG1fZGF0YV9kdW1wZXIpLAotICAgICAgYXBtX2RhdGFfZHVtcGVyXyhhcG1fZGF0YV9kdW1w
ZXIpIHt9Ci0KLUdhaW5DdXJ2ZUFwcGxpZXI6On5HYWluQ3VydmVBcHBsaWVyKCkgPSBkZWZhdWx0
OwotCi12b2lkIEdhaW5DdXJ2ZUFwcGxpZXI6OlByb2Nlc3MoQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+
IHNpZ25hbCkgewotICBjb25zdCBhdXRvIGxldmVsX2VzdGltYXRlID0gbGV2ZWxfZXN0aW1hdG9y
Xy5Db21wdXRlTGV2ZWwoc2lnbmFsKTsKLQotICBSVENfRENIRUNLX0VRKGxldmVsX2VzdGltYXRl
LnNpemUoKSArIDEsIHNjYWxpbmdfZmFjdG9yc18uc2l6ZSgpKTsKLSAgc2NhbGluZ19mYWN0b3Jz
X1swXSA9IGxhc3Rfc2NhbGluZ19mYWN0b3JfOwotICBzdGQ6OnRyYW5zZm9ybShsZXZlbF9lc3Rp
bWF0ZS5iZWdpbigpLCBsZXZlbF9lc3RpbWF0ZS5lbmQoKSwKLSAgICAgICAgICAgICAgICAgc2Nh
bGluZ19mYWN0b3JzXy5iZWdpbigpICsgMSwgW3RoaXNdKGZsb2F0IHgpIHsKLSAgICAgICAgICAg
ICAgICAgICByZXR1cm4gaW50ZXJwX2dhaW5fY3VydmVfLkxvb2tVcEdhaW5Ub0FwcGx5KHgpOwot
ICAgICAgICAgICAgICAgICB9KTsKLQotICBjb25zdCBzaXplX3Qgc2FtcGxlc19wZXJfY2hhbm5l
bCA9IHNpZ25hbC5zYW1wbGVzX3Blcl9jaGFubmVsKCk7Ci0gIFJUQ19EQ0hFQ0tfTEUoc2FtcGxl
c19wZXJfY2hhbm5lbCwga01heGltYWxOdW1iZXJPZlNhbXBsZXNQZXJDaGFubmVsKTsKLQotICBh
dXRvIHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzID0gcnRjOjpBcnJheVZpZXc8ZmxvYXQ+KAot
ICAgICAgJnBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzX1swXSwgc2FtcGxlc19wZXJfY2hhbm5l
bCk7Ci0gIENvbXB1dGVQZXJTYW1wbGVTdWJmcmFtZUZhY3RvcnMoc2NhbGluZ19mYWN0b3JzXywg
c2FtcGxlc19wZXJfY2hhbm5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
ZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9ycyk7Ci0gIFNjYWxlU2FtcGxlcyhwZXJfc2FtcGxlX3Nj
YWxpbmdfZmFjdG9ycywgc2lnbmFsKTsKLQotICBsYXN0X3NjYWxpbmdfZmFjdG9yXyA9IHNjYWxp
bmdfZmFjdG9yc18uYmFjaygpOwotCi0gIC8vIER1bXAgZGF0YSBmb3IgZGVidWcuCi0gIGFwbV9k
YXRhX2R1bXBlcl8tPkR1bXBSYXcoImFnYzJfZ2Fpbl9jdXJ2ZV9hcHBsaWVyX3NjYWxpbmdfZmFj
dG9ycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlc19wZXJfY2hhbm5lbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc18u
ZGF0YSgpKTsKLX0KLQotSW50ZXJwb2xhdGVkR2FpbkN1cnZlOjpTdGF0cyBHYWluQ3VydmVBcHBs
aWVyOjpHZXRHYWluQ3VydmVTdGF0cygpIGNvbnN0IHsKLSAgcmV0dXJuIGludGVycF9nYWluX2N1
cnZlXy5nZXRfc3RhdHMoKTsKLX0KLQotdm9pZCBHYWluQ3VydmVBcHBsaWVyOjpTZXRTYW1wbGVS
YXRlKHNpemVfdCBzYW1wbGVfcmF0ZV9oeikgewotICBsZXZlbF9lc3RpbWF0b3JfLlNldFNhbXBs
ZVJhdGUoc2FtcGxlX3JhdGVfaHopOwotICAvLyBDaGVjayB0aGF0IHBlcl9zYW1wbGVfc2NhbGlu
Z19mYWN0b3JzXyBpcyBsYXJnZSBlbm91Z2guCi0gIFJUQ19EQ0hFQ0tfTEUoc2FtcGxlX3JhdGVf
aHosCi0gICAgICAgICAgICAgICAga01heGltYWxOdW1iZXJPZlNhbXBsZXNQZXJDaGFubmVsICog
MTAwMCAvIGtGcmFtZUR1cmF0aW9uTXMpOwotfQotCi12b2lkIEdhaW5DdXJ2ZUFwcGxpZXI6OlJl
c2V0KCkgewotICBsZXZlbF9lc3RpbWF0b3JfLlJlc2V0KCk7Ci19Ci0KLWZsb2F0IEdhaW5DdXJ2
ZUFwcGxpZXI6Okxhc3RBdWRpb0xldmVsKCkgY29uc3QgewotICByZXR1cm4gbGV2ZWxfZXN0aW1h
dG9yXy5MYXN0QXVkaW9MZXZlbCgpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2N1cnZlX2FwcGxpZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL2dhaW5fY3VydmVfYXBwbGllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
MGJlMTllMDY5NDRjODNjMTJlZDY5NWNiYzUwMDcyZGQ4ZWJhMzRmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fY3VydmVf
YXBwbGllci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfR0FJTl9DVVJW
RV9BUFBMSUVSX0hfCi0jZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0dBSU5f
Q1VSVkVfQVBQTElFUl9IXwotCi0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fp
bl9jdXJ2ZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1
ZGlvX2ZyYW1lX3ZpZXcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgQXBtRGF0YUR1bXBlcjsKLQotY2xhc3MgR2Fp
bkN1cnZlQXBwbGllciB7Ci0gcHVibGljOgotICBHYWluQ3VydmVBcHBsaWVyKHNpemVfdCBzYW1w
bGVfcmF0ZV9oeiwKLSAgICAgICAgICAgICAgICAgICBBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9k
dW1wZXIsCi0gICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaGlzdG9ncmFtX25hbWVfcHJl
Zml4KTsKLQotICB+R2FpbkN1cnZlQXBwbGllcigpOwotCi0gIHZvaWQgUHJvY2VzcyhBdWRpb0Zy
YW1lVmlldzxmbG9hdD4gc2lnbmFsKTsKLSAgSW50ZXJwb2xhdGVkR2FpbkN1cnZlOjpTdGF0cyBH
ZXRHYWluQ3VydmVTdGF0cygpIGNvbnN0OwotCi0gIC8vIFN1cHBvcnRlZCByYXRlcyBtdXN0IGJl
Ci0gIC8vICogc3VwcG9ydGVkIGJ5IEZpeGVkRGlnaXRhbExldmVsRXN0aW1hdG9yCi0gIC8vICog
YmVsb3cga01heGltYWxOdW1iZXJPZlNhbXBsZXNQZXJDaGFubmVsKjEwMDAva0ZyYW1lRHVyYXRp
b25NcwotICAvLyAgIHNvIHRoYXQgc2FtcGxlc19wZXJfY2hhbm5lbCBmaXQgaW4gdGhlCi0gIC8v
ICAgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNfIGFycmF5LgotICB2b2lkIFNldFNhbXBsZVJh
dGUoc2l6ZV90IHNhbXBsZV9yYXRlX2h6KTsKLQotICAvLyBSZXNldHMgdGhlIGludGVybmFsIHN0
YXRlLgotICB2b2lkIFJlc2V0KCk7Ci0KLSAgZmxvYXQgTGFzdEF1ZGlvTGV2ZWwoKSBjb25zdDsK
LQotIHByaXZhdGU6Ci0gIGNvbnN0IEludGVycG9sYXRlZEdhaW5DdXJ2ZSBpbnRlcnBfZ2Fpbl9j
dXJ2ZV87Ci0gIEZpeGVkRGlnaXRhbExldmVsRXN0aW1hdG9yIGxldmVsX2VzdGltYXRvcl87Ci0g
IEFwbURhdGFEdW1wZXIqIGNvbnN0IGFwbV9kYXRhX2R1bXBlcl8gPSBudWxscHRyOwotCi0gIC8v
IFdvcmsgYXJyYXkgY29udGFpbmluZyB0aGUgc3ViLWZyYW1lIHNjYWxpbmcgZmFjdG9ycyB0byBi
ZSBpbnRlcnBvbGF0ZWQuCi0gIHN0ZDo6YXJyYXk8ZmxvYXQsIGtTdWJGcmFtZXNJbkZyYW1lICsg
MT4gc2NhbGluZ19mYWN0b3JzXyA9IHt9OwotICBzdGQ6OmFycmF5PGZsb2F0LCBrTWF4aW1hbE51
bWJlck9mU2FtcGxlc1BlckNoYW5uZWw+Ci0gICAgICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9y
c18gPSB7fTsKLSAgZmxvYXQgbGFzdF9zY2FsaW5nX2ZhY3Rvcl8gPSAxLmY7Ci0KLSAgUlRDX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihHYWluQ3VydmVBcHBsaWVyKTsKLX07Ci0KLX0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdD
Ml9HQUlOX0NVUlZFX0FQUExJRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5f
Y3VydmVfYXBwbGllcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5fY3VydmVfYXBw
bGllcl91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY3NWY2MmM0
MDdjYmIzZDk5MDQ4ZjQwODJiYmM3YzQ5YTFmZjBjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWluX2N1cnZlX2FwcGxpZXJf
dW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogIENvcHly
aWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5f
Y3VydmVfYXBwbGllci5oIgotCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9f
dXRpbC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FnYzJfY29t
bW9uLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl90ZXN0
aW5nX2NvbW1vbi5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Zl
Y3Rvcl9mbG9hdF9mcmFtZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9s
b2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0K
LW5hbWVzcGFjZSB3ZWJydGMgewotCi1URVNUKEdhaW5DdXJ2ZUFwcGxpZXIsIEdhaW5DdXJ2ZUFw
cGxpZXJTaG91bGRDb25zdHJ1Y3RBbmRSdW4pIHsKLSAgY29uc3QgaW50IHNhbXBsZV9yYXRlX2h6
ID0gNDgwMDA7Ci0gIEFwbURhdGFEdW1wZXIgYXBtX2RhdGFfZHVtcGVyKDApOwotCi0gIEdhaW5D
dXJ2ZUFwcGxpZXIgZ2Fpbl9jdXJ2ZV9hcHBsaWVyKHNhbXBsZV9yYXRlX2h6LCAmYXBtX2RhdGFf
ZHVtcGVyLCAiIik7Ci0KLSAgVmVjdG9yRmxvYXRGcmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJh
bWUoMSwgc2FtcGxlX3JhdGVfaHogLyAxMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtNYXhBYnNGbG9hdFMxNlZhbHVlKTsKLSAgZ2Fpbl9jdXJ2ZV9hcHBs
aWVyLlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lLmZsb2F0X2ZyYW1lX3ZpZXcoKSk7
Ci19Ci0KLVRFU1QoR2FpbkN1cnZlQXBwbGllciwgT3V0cHV0Vm9sdW1lQWJvdmVUaHJlc2hvbGQp
IHsKLSAgY29uc3QgaW50IHNhbXBsZV9yYXRlX2h6ID0gNDgwMDA7Ci0gIGNvbnN0IGZsb2F0IGlu
cHV0X2xldmVsID0KLSAgICAgIChrTWF4QWJzRmxvYXRTMTZWYWx1ZSArIERiZnNUb0Zsb2F0UzE2
KHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnMpKSAvCi0gICAgICAyLmY7Ci0gIEFwbURh
dGFEdW1wZXIgYXBtX2RhdGFfZHVtcGVyKDApOwotCi0gIEdhaW5DdXJ2ZUFwcGxpZXIgZ2Fpbl9j
dXJ2ZV9hcHBsaWVyKHNhbXBsZV9yYXRlX2h6LCAmYXBtX2RhdGFfZHVtcGVyLCAiIik7Ci0KLSAg
Ly8gR2l2ZSB0aGUgbGV2ZWwgZXN0aW1hdG9yIHRpbWUgdG8gYWRhcHQuCi0gIGZvciAoaW50IGkg
PSAwOyBpIDwgNTsgKytpKSB7Ci0gICAgVmVjdG9yRmxvYXRGcmFtZSB2ZWN0b3JzX3dpdGhfZmxv
YXRfZnJhbWUoMSwgc2FtcGxlX3JhdGVfaHogLyAxMDAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGV2ZWwpOwotICAgIGdhaW5fY3VydmVfYXBw
bGllci5Qcm9jZXNzKHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFtZS5mbG9hdF9mcmFtZV92aWV3KCkp
OwotICB9Ci0KLSAgVmVjdG9yRmxvYXRGcmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUoMSwg
c2FtcGxlX3JhdGVfaHogLyAxMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlucHV0X2xldmVsKTsKLSAgZ2Fpbl9jdXJ2ZV9hcHBsaWVyLlByb2Nlc3ModmVj
dG9yc193aXRoX2Zsb2F0X2ZyYW1lLmZsb2F0X2ZyYW1lX3ZpZXcoKSk7Ci0gIHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IGZsb2F0PiBjaGFubmVsID0KLSAgICAgIHZlY3RvcnNfd2l0aF9mbG9hdF9mcmFt
ZS5mbG9hdF9mcmFtZV92aWV3KCkuY2hhbm5lbCgwKTsKLQotICBmb3IgKGNvbnN0IGF1dG8mIHNh
bXBsZSA6IGNoYW5uZWwpIHsKLSAgICBFWFBFQ1RfTFQoMC45ZiAqIGtNYXhBYnNGbG9hdFMxNlZh
bHVlLCBzYW1wbGUpOwotICB9Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MKaW5kZXggNzNlNmE4ZWNjMzZmMTU2MGM4
MjUwOTc5N2ZmZDU1ODc1ZjhiZDBmNy4uZjVkNmI0NzE2OWMyMjI2ZDRkMWMyZGQxMjViMzk2ZDAw
Yjc5MmM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvaW50ZXJwb2xhdGVkX2dhaW5fY3Vy
dmUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MKQEAg
LTEwLDEwICsxMCwxMiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuaCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxpdGVyYXRvcj4KKwogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL2FnYzJfY29tbW9uLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xv
Z2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmVfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZV91bml0dGVzdC5jYwpp
bmRleCBkZDY5NjMxM2FlMjY2NTc0YTRiODUzMWVlOWZiYjk2NDUwY2MyYjBhLi5hOGUwZjIzNjFj
OTFhMTIxMzA2NzgwN2UwNDk1OGQwMWY1OGY3ODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZV91bml0dGVzdC5jYwpAQCAtOSw2ICs5LDcgQEAKICAq
LwogCiAjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKQEAgLTE2LDcgKzE3LDcgQEAK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2NvbXB1dGVfaW50ZXJwb2xh
dGVkX2dhaW5fY3VydmUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9pbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3VydmUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgpAQCAtMjcsNyArMjgsOCBA
QCBuYW1lc3BhY2UgewogY29uc3RleHByIGRvdWJsZSBrTGV2ZWxFcHNpbG9uID0gMWUtMiAqIGtN
YXhBYnNGbG9hdFMxNlZhbHVlOwogY29uc3RleHByIGZsb2F0IGtJbnRlcnBvbGF0ZWRHYWluQ3Vy
dmVUb2xlcmFuY2UgPSAxLmYgLyAzMjc2OC5mOwogQXBtRGF0YUR1bXBlciBhcG1fZGF0YV9kdW1w
ZXIoMCk7Ci1jb25zdCBMaW1pdGVyIGxpbWl0ZXI7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxMaW1pdGVyRGJHYWluQ3VydmU+Ojp2YWx1ZSwgIiIpOworY29u
c3QgTGltaXRlckRiR2FpbkN1cnZlIGxpbWl0ZXI7CiAKIH0gIC8vIG5hbWVzcGFjZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRl
ci5jYwppbmRleCBkMmI5ODc3YmUxMWVkNGEzNjFkZTkzZmE2ZGFkNzM1MjBhYTAwY2RmLi4xNTg5
ZjA3NDA0ZDk5MDAzOWRkYjkzZmUwNjNjNDFkYmVhNWVjZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYWdjMi9saW1pdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuY2MKQEAgLTEw
LDEyOCArMTAsMTQxIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9saW1pdGVyLmgiCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8YXJyYXk+CiAj
aW5jbHVkZSA8Y21hdGg+CiAKLSNpbmNsdWRlICJjb21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191
dGlsLmgiCisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4Lmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKIAotZG91YmxlIENvbXB1dGVLbmVl
U3RhcnQoZG91YmxlIG1heF9pbnB1dF9sZXZlbF9kYiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRvdWJsZSBrbmVlX3Ntb290aG5lc3NfZGIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgY29tcHJlc3Npb25fcmF0aW8pIHsKLSAgUlRDX0NIRUNLX0xUKChjb21wcmVzc2lvbl9yYXRp
byAtIDEuMCkgKiBrbmVlX3Ntb290aG5lc3NfZGIgLwotICAgICAgICAgICAgICAgICAgICgyLjAg
KiBjb21wcmVzc2lvbl9yYXRpbyksCi0gICAgICAgICAgICAgICBtYXhfaW5wdXRfbGV2ZWxfZGIp
OwotICByZXR1cm4gLWtuZWVfc21vb3RobmVzc19kYiAvIDIuMCAtCi0gICAgICAgICBtYXhfaW5w
dXRfbGV2ZWxfZGIgLyAoY29tcHJlc3Npb25fcmF0aW8gLSAxLjApOworLy8gVGhpcyBjb25zdGFu
dCBhZmZlY3RzIHRoZSB3YXkgc2NhbGluZyBmYWN0b3JzIGFyZSBpbnRlcnBvbGF0ZWQgZm9yIHRo
ZSBmaXJzdAorLy8gc3ViLWZyYW1lIG9mIGEgZnJhbWUuIE9ubHkgaW4gdGhlIGNhc2UgaW4gd2hp
Y2ggdGhlIGZpcnN0IHN1Yi1mcmFtZSBoYXMgYW4KKy8vIGVzdGltYXRlZCBsZXZlbCB3aGljaCBp
cyBncmVhdGVyIHRoYW4gdGhlIHRoYXQgb2YgdGhlIHByZXZpb3VzIGFuYWx5emVkCisvLyBzdWIt
ZnJhbWUsIGxpbmVhciBpbnRlcnBvbGF0aW9uIGlzIHJlcGxhY2VkIHdpdGggYSBwb3dlciBmdW5j
dGlvbiB3aGljaAorLy8gcmVkdWNlcyB0aGUgY2hhbmNlcyBvZiBvdmVyLXNob290aW5nIChhbmQg
aGVuY2Ugc2F0dXJhdGlvbiksIGhvd2V2ZXIgcmVkdWNpbmcKKy8vIHRoZSBmaXhlZCBnYWluIGVm
ZmVjdGl2ZW5lc3MuCitjb25zdGV4cHIgZmxvYXQga0F0dGFja0ZpcnN0U3ViZnJhbWVJbnRlcnBv
bGF0aW9uUG93ZXIgPSA4LmY7CisKK3ZvaWQgSW50ZXJwb2xhdGVGaXJzdFN1YmZyYW1lKGZsb2F0
IGxhc3RfZmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgY3VycmVu
dF9mYWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxm
bG9hdD4gc3ViZnJhbWUpIHsKKyAgY29uc3QgYXV0byBuID0gc3ViZnJhbWUuc2l6ZSgpOworICBj
b25zdGV4cHIgYXV0byBwID0ga0F0dGFja0ZpcnN0U3ViZnJhbWVJbnRlcnBvbGF0aW9uUG93ZXI7
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgc3ViZnJhbWVbaV0gPSBz
dGQ6OnBvdygxLmYgLSBpIC8gbiwgcCkgKiAobGFzdF9mYWN0b3IgLSBjdXJyZW50X2ZhY3Rvcikg
KworICAgICAgICAgICAgICAgICAgY3VycmVudF9mYWN0b3I7CisgIH0KIH0KIAotc3RkOjphcnJh
eTxkb3VibGUsIDM+IENvbXB1dGVLbmVlUmVnaW9uUG9seW5vbWlhbChkb3VibGUga25lZV9zdGFy
dF9kYmZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb3VibGUga25lZV9zbW9vdGhuZXNzX2RiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgY29tcHJlc3Npb25fcmF0aW8pIHsKLSAgY29u
c3QgZG91YmxlIGEgPSAoMS4wIC0gY29tcHJlc3Npb25fcmF0aW8pIC8KLSAgICAgICAgICAgICAg
ICAgICAoMi4wICoga25lZV9zbW9vdGhuZXNzX2RiICogY29tcHJlc3Npb25fcmF0aW8pOwotICBj
b25zdCBkb3VibGUgYiA9IDEuMCAtIDIuMCAqIGEgKiBrbmVlX3N0YXJ0X2RiZnM7Ci0gIGNvbnN0
IGRvdWJsZSBjID0gYSAqIGtuZWVfc3RhcnRfZGJmcyAqIGtuZWVfc3RhcnRfZGJmczsKLSAgcmV0
dXJuIHt7YSwgYiwgY319OwotfQordm9pZCBDb21wdXRlUGVyU2FtcGxlU3ViZnJhbWVGYWN0b3Jz
KAorICAgIGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIGtTdWJGcmFtZXNJbkZyYW1lICsgMT4mIHNj
YWxpbmdfZmFjdG9ycywKKyAgICBzaXplX3Qgc2FtcGxlc19wZXJfY2hhbm5lbCwKKyAgICBydGM6
OkFycmF5VmlldzxmbG9hdD4gcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMpIHsKKyAgY29uc3Qg
c2l6ZV90IG51bV9zdWJmcmFtZXMgPSBzY2FsaW5nX2ZhY3RvcnMuc2l6ZSgpIC0gMTsKKyAgY29u
c3Qgc2l6ZV90IHN1YmZyYW1lX3NpemUgPQorICAgICAgcnRjOjpDaGVja2VkRGl2RXhhY3Qoc2Ft
cGxlc19wZXJfY2hhbm5lbCwgbnVtX3N1YmZyYW1lcyk7CisKKyAgLy8gSGFuZGxlIGZpcnN0IHN1
Yi1mcmFtZSBkaWZmZXJlbnRseSBpbiBjYXNlIG9mIGF0dGFjay4KKyAgY29uc3QgYm9vbCBpc19h
dHRhY2sgPSBzY2FsaW5nX2ZhY3RvcnNbMF0gPiBzY2FsaW5nX2ZhY3RvcnNbMV07CisgIGlmIChp
c19hdHRhY2spIHsKKyAgICBJbnRlcnBvbGF0ZUZpcnN0U3ViZnJhbWUoCisgICAgICAgIHNjYWxp
bmdfZmFjdG9yc1swXSwgc2NhbGluZ19mYWN0b3JzWzFdLAorICAgICAgICBydGM6OkFycmF5Vmll
dzxmbG9hdD4oCisgICAgICAgICAgICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9ycy5zdWJ2aWV3
KDAsIHN1YmZyYW1lX3NpemUpKSk7CisgIH0KIAotZG91YmxlIENvbXB1dGVMaW1pdGVyRDEoZG91
YmxlIG1heF9pbnB1dF9sZXZlbF9kYiwgZG91YmxlIGNvbXByZXNzaW9uX3JhdGlvKSB7Ci0gIHJl
dHVybiAoc3RkOjpwb3coMTAuMCwgLW1heF9pbnB1dF9sZXZlbF9kYiAvICgyMC4wICogY29tcHJl
c3Npb25fcmF0aW8pKSAqCi0gICAgICAgICAgKDEuMCAtIGNvbXByZXNzaW9uX3JhdGlvKSAvIGNv
bXByZXNzaW9uX3JhdGlvKSAvCi0gICAgICAgICBrTWF4QWJzRmxvYXRTMTZWYWx1ZTsKKyAgZm9y
IChzaXplX3QgaSA9IGlzX2F0dGFjayA/IDEgOiAwOyBpIDwgbnVtX3N1YmZyYW1lczsgKytpKSB7
CisgICAgY29uc3Qgc2l6ZV90IHN1YmZyYW1lX3N0YXJ0ID0gaSAqIHN1YmZyYW1lX3NpemU7Cisg
ICAgY29uc3QgZmxvYXQgc2NhbGluZ19zdGFydCA9IHNjYWxpbmdfZmFjdG9yc1tpXTsKKyAgICBj
b25zdCBmbG9hdCBzY2FsaW5nX2VuZCA9IHNjYWxpbmdfZmFjdG9yc1tpICsgMV07CisgICAgY29u
c3QgZmxvYXQgc2NhbGluZ19kaWZmID0gKHNjYWxpbmdfZW5kIC0gc2NhbGluZ19zdGFydCkgLyBz
dWJmcmFtZV9zaXplOworICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgc3ViZnJhbWVfc2l6ZTsg
KytqKSB7CisgICAgICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc1tzdWJmcmFtZV9zdGFydCAr
IGpdID0KKyAgICAgICAgICBzY2FsaW5nX3N0YXJ0ICsgc2NhbGluZ19kaWZmICogajsKKyAgICB9
CisgIH0KIH0KIAotY29uc3RleHByIGRvdWJsZSBDb21wdXRlTGltaXRlckQyKGRvdWJsZSBjb21w
cmVzc2lvbl9yYXRpbykgewotICByZXR1cm4gKDEuMCAtIDIuMCAqIGNvbXByZXNzaW9uX3JhdGlv
KSAvIGNvbXByZXNzaW9uX3JhdGlvOwordm9pZCBTY2FsZVNhbXBsZXMocnRjOjpBcnJheVZpZXc8
Y29uc3QgZmxvYXQ+IHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0b3JzLAorICAgICAgICAgICAgICAg
ICAgQXVkaW9GcmFtZVZpZXc8ZmxvYXQ+IHNpZ25hbCkgeworICBjb25zdCBzaXplX3Qgc2FtcGxl
c19wZXJfY2hhbm5lbCA9IHNpZ25hbC5zYW1wbGVzX3Blcl9jaGFubmVsKCk7CisgIFJUQ19EQ0hF
Q0tfRVEoc2FtcGxlc19wZXJfY2hhbm5lbCwgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMuc2l6
ZSgpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaWduYWwubnVtX2NoYW5uZWxzKCk7ICsr
aSkgeworICAgIGF1dG8gY2hhbm5lbCA9IHNpZ25hbC5jaGFubmVsKGkpOworICAgIGZvciAoc2l6
ZV90IGogPSAwOyBqIDwgc2FtcGxlc19wZXJfY2hhbm5lbDsgKytqKSB7CisgICAgICBjaGFubmVs
W2pdID0gcnRjOjpTYWZlQ2xhbXAoY2hhbm5lbFtqXSAqIHBlcl9zYW1wbGVfc2NhbGluZ19mYWN0
b3JzW2pdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtNaW5GbG9hdFMxNlZh
bHVlLCBrTWF4RmxvYXRTMTZWYWx1ZSk7CisgICAgfQorICB9CiB9CiAKLWRvdWJsZSBDb21wdXRl
TGltaXRlckkyKGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfZGIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgY29tcHJlc3Npb25fcmF0aW8sCi0gICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxKSB7Ci0gIFJUQ19DSEVDS19ORShnYWluX2N1cnZl
X2xpbWl0ZXJfaTEsIDAuZik7Ci0gIHJldHVybiBzdGQ6OnBvdygxMC4wLCAtbWF4X2lucHV0X2xl
dmVsX2RiIC8gKDIwLjAgKiBjb21wcmVzc2lvbl9yYXRpbykpIC8KLSAgICAgICAgIGdhaW5fY3Vy
dmVfbGltaXRlcl9pMSAvCi0gICAgICAgICBzdGQ6OnBvdyhrTWF4QWJzRmxvYXRTMTZWYWx1ZSwg
Z2Fpbl9jdXJ2ZV9saW1pdGVyX2kxIC0gMSk7Cit2b2lkIENoZWNrTGltaXRlclNhbXBsZVJhdGUo
c2l6ZV90IHNhbXBsZV9yYXRlX2h6KSB7CisgIC8vIENoZWNrIHRoYXQgcGVyX3NhbXBsZV9zY2Fs
aW5nX2ZhY3RvcnNfIGlzIGxhcmdlIGVub3VnaC4KKyAgUlRDX0RDSEVDS19MRShzYW1wbGVfcmF0
ZV9oeiwKKyAgICAgICAgICAgICAgICBrTWF4aW1hbE51bWJlck9mU2FtcGxlc1BlckNoYW5uZWwg
KiAxMDAwIC8ga0ZyYW1lRHVyYXRpb25Ncyk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1MaW1p
dGVyOjpMaW1pdGVyKCkKLSAgICA6IG1heF9pbnB1dF9sZXZlbF9saW5lYXJfKERiZnNUb0Zsb2F0
UzE2KG1heF9pbnB1dF9sZXZlbF9kYl8pKSwKLSAgICAgIGtuZWVfc3RhcnRfZGJmc18oQ29tcHV0
ZUtuZWVTdGFydChtYXhfaW5wdXRfbGV2ZWxfZGJfLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtuZWVfc21vb3RobmVzc19kYl8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25fcmF0aW9fKSksCi0gICAgICBrbmVlX3N0
YXJ0X2xpbmVhcl8oRGJmc1RvRmxvYXRTMTYoa25lZV9zdGFydF9kYmZzXykpLAotICAgICAgbGlt
aXRlcl9zdGFydF9kYmZzXyhrbmVlX3N0YXJ0X2RiZnNfICsga25lZV9zbW9vdGhuZXNzX2RiXyks
Ci0gICAgICBsaW1pdGVyX3N0YXJ0X2xpbmVhcl8oRGJmc1RvRmxvYXRTMTYobGltaXRlcl9zdGFy
dF9kYmZzXykpLAotICAgICAga25lZV9yZWdpb25fcG9seW5vbWlhbF8oQ29tcHV0ZUtuZWVSZWdp
b25Qb2x5bm9taWFsKGtuZWVfc3RhcnRfZGJmc18sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga25lZV9zbW9vdGhuZXNzX2RiXywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b21wcmVzc2lvbl9yYXRpb18pKSwKLSAgICAgIGdhaW5fY3VydmVfbGltaXRlcl9kMV8oCi0gICAg
ICAgICAgQ29tcHV0ZUxpbWl0ZXJEMShtYXhfaW5wdXRfbGV2ZWxfZGJfLCBjb21wcmVzc2lvbl9y
YXRpb18pKSwKLSAgICAgIGdhaW5fY3VydmVfbGltaXRlcl9kMl8oQ29tcHV0ZUxpbWl0ZXJEMihj
b21wcmVzc2lvbl9yYXRpb18pKSwKLSAgICAgIGdhaW5fY3VydmVfbGltaXRlcl9pMV8oMS4wIC8g
Y29tcHJlc3Npb25fcmF0aW9fKSwKLSAgICAgIGdhaW5fY3VydmVfbGltaXRlcl9pMl8oQ29tcHV0
ZUxpbWl0ZXJJMihtYXhfaW5wdXRfbGV2ZWxfZGJfLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uX3JhdGlvXywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYWluX2N1cnZlX2xpbWl0ZXJfaTFfKSkg
ewotICBzdGF0aWNfYXNzZXJ0KGtuZWVfc21vb3RobmVzc19kYl8gPiAwLjBmLCAiIik7Ci0gIHN0
YXRpY19hc3NlcnQoY29tcHJlc3Npb25fcmF0aW9fID4gMS4wZiwgIiIpOwotICBSVENfQ0hFQ0tf
R0UobWF4X2lucHV0X2xldmVsX2RiXywga25lZV9zdGFydF9kYmZzXyArIGtuZWVfc21vb3RobmVz
c19kYl8pOworTGltaXRlcjo6TGltaXRlcihzaXplX3Qgc2FtcGxlX3JhdGVfaHosCisgICAgICAg
ICAgICAgICAgIEFwbURhdGFEdW1wZXIqIGFwbV9kYXRhX2R1bXBlciwKKyAgICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmcgaGlzdG9ncmFtX25hbWUpCisgICAgOiBpbnRlcnBfZ2Fpbl9jdXJ2ZV8o
YXBtX2RhdGFfZHVtcGVyLCBoaXN0b2dyYW1fbmFtZSksCisgICAgICBsZXZlbF9lc3RpbWF0b3Jf
KHNhbXBsZV9yYXRlX2h6LCBhcG1fZGF0YV9kdW1wZXIpLAorICAgICAgYXBtX2RhdGFfZHVtcGVy
XyhhcG1fZGF0YV9kdW1wZXIpIHsKKyAgQ2hlY2tMaW1pdGVyU2FtcGxlUmF0ZShzYW1wbGVfcmF0
ZV9oeik7CiB9CiAKLWNvbnN0ZXhwciBkb3VibGUgTGltaXRlcjo6bWF4X2lucHV0X2xldmVsX2Ri
XzsKLWNvbnN0ZXhwciBkb3VibGUgTGltaXRlcjo6a25lZV9zbW9vdGhuZXNzX2RiXzsKLWNvbnN0
ZXhwciBkb3VibGUgTGltaXRlcjo6Y29tcHJlc3Npb25fcmF0aW9fOworTGltaXRlcjo6fkxpbWl0
ZXIoKSA9IGRlZmF1bHQ7CiAKLWRvdWJsZSBMaW1pdGVyOjpHZXRPdXRwdXRMZXZlbERiZnMoZG91
YmxlIGlucHV0X2xldmVsX2RiZnMpIGNvbnN0IHsKLSAgaWYgKGlucHV0X2xldmVsX2RiZnMgPCBr
bmVlX3N0YXJ0X2RiZnNfKSB7Ci0gICAgcmV0dXJuIGlucHV0X2xldmVsX2RiZnM7Ci0gIH0gZWxz
ZSBpZiAoaW5wdXRfbGV2ZWxfZGJmcyA8IGxpbWl0ZXJfc3RhcnRfZGJmc18pIHsKLSAgICByZXR1
cm4gR2V0S25lZVJlZ2lvbk91dHB1dExldmVsRGJmcyhpbnB1dF9sZXZlbF9kYmZzKTsKLSAgfQot
ICByZXR1cm4gR2V0Q29tcHJlc3NvclJlZ2lvbk91dHB1dExldmVsRGJmcyhpbnB1dF9sZXZlbF9k
YmZzKTsKLX0KK3ZvaWQgTGltaXRlcjo6UHJvY2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2ln
bmFsKSB7CisgIGNvbnN0IGF1dG8gbGV2ZWxfZXN0aW1hdGUgPSBsZXZlbF9lc3RpbWF0b3JfLkNv
bXB1dGVMZXZlbChzaWduYWwpOwogCi1kb3VibGUgTGltaXRlcjo6R2V0R2FpbkxpbmVhcihkb3Vi
bGUgaW5wdXRfbGV2ZWxfbGluZWFyKSBjb25zdCB7Ci0gIGlmIChpbnB1dF9sZXZlbF9saW5lYXIg
PCBrbmVlX3N0YXJ0X2xpbmVhcl8pIHsKLSAgICByZXR1cm4gMS4wOwotICB9Ci0gIHJldHVybiBE
YmZzVG9GbG9hdFMxNigKLSAgICAgICAgICAgICBHZXRPdXRwdXRMZXZlbERiZnMoRmxvYXRTMTZU
b0RiZnMoaW5wdXRfbGV2ZWxfbGluZWFyKSkpIC8KLSAgICAgICAgIGlucHV0X2xldmVsX2xpbmVh
cjsKKyAgUlRDX0RDSEVDS19FUShsZXZlbF9lc3RpbWF0ZS5zaXplKCkgKyAxLCBzY2FsaW5nX2Zh
Y3RvcnNfLnNpemUoKSk7CisgIHNjYWxpbmdfZmFjdG9yc19bMF0gPSBsYXN0X3NjYWxpbmdfZmFj
dG9yXzsKKyAgc3RkOjp0cmFuc2Zvcm0obGV2ZWxfZXN0aW1hdGUuYmVnaW4oKSwgbGV2ZWxfZXN0
aW1hdGUuZW5kKCksCisgICAgICAgICAgICAgICAgIHNjYWxpbmdfZmFjdG9yc18uYmVnaW4oKSAr
IDEsIFt0aGlzXShmbG9hdCB4KSB7CisgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVycF9n
YWluX2N1cnZlXy5Mb29rVXBHYWluVG9BcHBseSh4KTsKKyAgICAgICAgICAgICAgICAgfSk7CisK
KyAgY29uc3Qgc2l6ZV90IHNhbXBsZXNfcGVyX2NoYW5uZWwgPSBzaWduYWwuc2FtcGxlc19wZXJf
Y2hhbm5lbCgpOworICBSVENfRENIRUNLX0xFKHNhbXBsZXNfcGVyX2NoYW5uZWwsIGtNYXhpbWFs
TnVtYmVyT2ZTYW1wbGVzUGVyQ2hhbm5lbCk7CisKKyAgYXV0byBwZXJfc2FtcGxlX3NjYWxpbmdf
ZmFjdG9ycyA9IHJ0Yzo6QXJyYXlWaWV3PGZsb2F0PigKKyAgICAgICZwZXJfc2FtcGxlX3NjYWxp
bmdfZmFjdG9yc19bMF0sIHNhbXBsZXNfcGVyX2NoYW5uZWwpOworICBDb21wdXRlUGVyU2FtcGxl
U3ViZnJhbWVGYWN0b3JzKHNjYWxpbmdfZmFjdG9yc18sIHNhbXBsZXNfcGVyX2NoYW5uZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3Rv
cnMpOworICBTY2FsZVNhbXBsZXMocGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnMsIHNpZ25hbCk7
CisKKyAgbGFzdF9zY2FsaW5nX2ZhY3Rvcl8gPSBzY2FsaW5nX2ZhY3RvcnNfLmJhY2soKTsKKwor
ICAvLyBEdW1wIGRhdGEgZm9yIGRlYnVnLgorICBhcG1fZGF0YV9kdW1wZXJfLT5EdW1wUmF3KCJh
Z2MyX2dhaW5fY3VydmVfYXBwbGllcl9zY2FsaW5nX2ZhY3RvcnMiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNhbXBsZXNfcGVyX2NoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNfLmRhdGEoKSk7CiB9CiAKLS8vIENvbXB1
dGVzIHRoZSBmaXJzdCBkZXJpdmF0aXZlIG9mIEdldEdhaW5MaW5lYXIoKSBpbiB8eHwuCi1kb3Vi
bGUgTGltaXRlcjo6R2V0R2FpbkZpcnN0RGVyaXZhdGl2ZUxpbmVhcihkb3VibGUgeCkgY29uc3Qg
ewotICAvLyBCZXlvbmQta25lZSByZWdpb24gb25seS4KLSAgUlRDX0NIRUNLX0dFKHgsIGxpbWl0
ZXJfc3RhcnRfbGluZWFyXyAtIDFlLTcgKiBrTWF4QWJzRmxvYXRTMTZWYWx1ZSk7Ci0gIHJldHVy
biBnYWluX2N1cnZlX2xpbWl0ZXJfZDFfICoKLSAgICAgICAgIHN0ZDo6cG93KHggLyBrTWF4QWJz
RmxvYXRTMTZWYWx1ZSwgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2QyXyk7CitJbnRlcnBvbGF0ZWRHYWlu
Q3VydmU6OlN0YXRzIExpbWl0ZXI6OkdldEdhaW5DdXJ2ZVN0YXRzKCkgY29uc3QgeworICByZXR1
cm4gaW50ZXJwX2dhaW5fY3VydmVfLmdldF9zdGF0cygpOwogfQogCi0vLyBDb21wdXRlcyB0aGUg
aW50ZWdyYWwgb2YgR2V0R2FpbkxpbmVhcigpIGluIHRoZSByYW5nZSBbeDAsIHgxXS4KLWRvdWJs
ZSBMaW1pdGVyOjpHZXRHYWluSW50ZWdyYWxMaW5lYXIoZG91YmxlIHgwLCBkb3VibGUgeDEpIGNv
bnN0IHsKLSAgUlRDX0NIRUNLX0xFKHgwLCB4MSk7ICAgICAgICAgICAgICAgICAgICAgLy8gVmFs
aWQgaW50ZXJ2YWwuCi0gIFJUQ19DSEVDS19HRSh4MCwgbGltaXRlcl9zdGFydF9saW5lYXJfKTsg
IC8vIEJleW9uZC1rbmVlIHJlZ2lvbiBvbmx5LgotICBhdXRvIGxpbWl0ZXJfaW50ZWdyYWwgPSBb
dGhpc10oY29uc3QgZG91YmxlJiB4KSB7Ci0gICAgcmV0dXJuIGdhaW5fY3VydmVfbGltaXRlcl9p
Ml8gKiBzdGQ6OnBvdyh4LCBnYWluX2N1cnZlX2xpbWl0ZXJfaTFfKTsKLSAgfTsKLSAgcmV0dXJu
IGxpbWl0ZXJfaW50ZWdyYWwoeDEpIC0gbGltaXRlcl9pbnRlZ3JhbCh4MCk7Cit2b2lkIExpbWl0
ZXI6OlNldFNhbXBsZVJhdGUoc2l6ZV90IHNhbXBsZV9yYXRlX2h6KSB7CisgIENoZWNrTGltaXRl
clNhbXBsZVJhdGUoc2FtcGxlX3JhdGVfaHopOworICBsZXZlbF9lc3RpbWF0b3JfLlNldFNhbXBs
ZVJhdGUoc2FtcGxlX3JhdGVfaHopOwogfQogCi1kb3VibGUgTGltaXRlcjo6R2V0S25lZVJlZ2lv
bk91dHB1dExldmVsRGJmcyhkb3VibGUgaW5wdXRfbGV2ZWxfZGJmcykgY29uc3QgewotICByZXR1
cm4ga25lZV9yZWdpb25fcG9seW5vbWlhbF9bMF0gKiBpbnB1dF9sZXZlbF9kYmZzICogaW5wdXRf
bGV2ZWxfZGJmcyArCi0gICAgICAgICBrbmVlX3JlZ2lvbl9wb2x5bm9taWFsX1sxXSAqIGlucHV0
X2xldmVsX2RiZnMgKwotICAgICAgICAga25lZV9yZWdpb25fcG9seW5vbWlhbF9bMl07Cit2b2lk
IExpbWl0ZXI6OlJlc2V0KCkgeworICBsZXZlbF9lc3RpbWF0b3JfLlJlc2V0KCk7CiB9CiAKLWRv
dWJsZSBMaW1pdGVyOjpHZXRDb21wcmVzc29yUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKAotICAgIGRv
dWJsZSBpbnB1dF9sZXZlbF9kYmZzKSBjb25zdCB7Ci0gIHJldHVybiAoaW5wdXRfbGV2ZWxfZGJm
cyAtIG1heF9pbnB1dF9sZXZlbF9kYl8pIC8gY29tcHJlc3Npb25fcmF0aW9fOworZmxvYXQgTGlt
aXRlcjo6TGFzdEF1ZGlvTGV2ZWwoKSBjb25zdCB7CisgIHJldHVybiBsZXZlbF9lc3RpbWF0b3Jf
Lkxhc3RBdWRpb0xldmVsKCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaApp
bmRleCBmMzUwYmFlZWYxMDVlM2I5YWNmZjQ3MmJmOTQ3ODcyZjgwZWIxZGI4Li4xZTBhYjcxYTE4
Mzc4NmRkMTYxNmJkOWUwMzA4NmQyZGY3YWUwMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9saW1pdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlci5oCkBAIC0xMSw2MiArMTEs
NTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfTElNSVRFUl9IXwog
I2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDMl9MSU1JVEVSX0hfCiAKLSNpbmNs
dWRlIDxhcnJheT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvYWdjMl90ZXN0aW5nX2NvbW1vbi5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2RpZ2l0YWxf
bGV2ZWxfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19mcmFtZV92aWV3LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIEFwbURhdGFE
dW1wZXI7CiAKLS8vIEEgY2xhc3MgZm9yIGNvbXB1dGluZyBnYWluIGN1cnZlIHBhcmFtZXRlcnMu
IFRoZSBnYWluIGN1cnZlIGlzCi0vLyBkZWZpbmVkIGJ5IGNvbnN0YW50cyBrTGltaXRlck1heElu
cHV0TGV2ZWxEYkZzLCBrTGltaXRlcktuZWVTbW9vdGhuZXNzRGIsCi0vLyBrTGltaXRlckNvbXBy
ZXNzaW9uUmF0aW8uIFRoZSBjdXJ2ZSBjb25zaW50cyBvZiBvbmUgbGluZWFyIHBhcnQsCi0vLyBv
bmUgcXVhZHJhdGljIHBvbHlub21pYWwgcGFydCBhbmQgYW5vdGhlciBsaW5lYXIgcGFydC4gVGhl
Ci0vLyBjb25zdGFudHMgZGVmaW5lIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBwYXJ0cy4KIGNsYXNz
IExpbWl0ZXIgewogIHB1YmxpYzoKLSAgTGltaXRlcigpOworICBMaW1pdGVyKHNpemVfdCBzYW1w
bGVfcmF0ZV9oeiwKKyAgICAgICAgICBBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIsCisg
ICAgICAgICAgc3RkOjpzdHJpbmcgaGlzdG9ncmFtX25hbWVfcHJlZml4KTsKKyAgTGltaXRlcihj
b25zdCBMaW1pdGVyJiBsaW1pdGVyKSA9IGRlbGV0ZTsKKyAgTGltaXRlciYgb3BlcmF0b3I9KGNv
bnN0IExpbWl0ZXImIGxpbWl0ZXIpID0gZGVsZXRlOworICB+TGltaXRlcigpOwogCi0gIGRvdWJs
ZSBtYXhfaW5wdXRfbGV2ZWxfZGIoKSBjb25zdCB7IHJldHVybiBtYXhfaW5wdXRfbGV2ZWxfZGJf
OyB9Ci0gIGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfbGluZWFyKCkgY29uc3QgeyByZXR1cm4gbWF4
X2lucHV0X2xldmVsX2xpbmVhcl87IH0KLSAgZG91YmxlIGtuZWVfc3RhcnRfbGluZWFyKCkgY29u
c3QgeyByZXR1cm4ga25lZV9zdGFydF9saW5lYXJfOyB9Ci0gIGRvdWJsZSBsaW1pdGVyX3N0YXJ0
X2xpbmVhcigpIGNvbnN0IHsgcmV0dXJuIGxpbWl0ZXJfc3RhcnRfbGluZWFyXzsgfQorICAvLyBB
cHBsaWVzIGxpbWl0ZXIgYW5kIGhhcmQtY2xpcHBpbmcgdG8gfHNpZ25hbHwuCisgIHZvaWQgUHJv
Y2VzcyhBdWRpb0ZyYW1lVmlldzxmbG9hdD4gc2lnbmFsKTsKKyAgSW50ZXJwb2xhdGVkR2FpbkN1
cnZlOjpTdGF0cyBHZXRHYWluQ3VydmVTdGF0cygpIGNvbnN0OwogCi0gIC8vIFRoZXNlIG1ldGhv
ZHMgY2FuIGJlIG1hcmtlZCAnY29uc3RleHByJyBpbiBDKysgMTQuCi0gIGRvdWJsZSBHZXRPdXRw
dXRMZXZlbERiZnMoZG91YmxlIGlucHV0X2xldmVsX2RiZnMpIGNvbnN0OwotICBkb3VibGUgR2V0
R2FpbkxpbmVhcihkb3VibGUgaW5wdXRfbGV2ZWxfbGluZWFyKSBjb25zdDsKLSAgZG91YmxlIEdl
dEdhaW5GaXJzdERlcml2YXRpdmVMaW5lYXIoZG91YmxlIHgpIGNvbnN0OwotICBkb3VibGUgR2V0
R2FpbkludGVncmFsTGluZWFyKGRvdWJsZSB4MCwgZG91YmxlIHgxKSBjb25zdDsKKyAgLy8gU3Vw
cG9ydGVkIHJhdGVzIG11c3QgYmUKKyAgLy8gKiBzdXBwb3J0ZWQgYnkgRml4ZWREaWdpdGFsTGV2
ZWxFc3RpbWF0b3IKKyAgLy8gKiBiZWxvdyBrTWF4aW1hbE51bWJlck9mU2FtcGxlc1BlckNoYW5u
ZWwqMTAwMC9rRnJhbWVEdXJhdGlvbk1zCisgIC8vICAgc28gdGhhdCBzYW1wbGVzX3Blcl9jaGFu
bmVsIGZpdCBpbiB0aGUKKyAgLy8gICBwZXJfc2FtcGxlX3NjYWxpbmdfZmFjdG9yc18gYXJyYXku
CisgIHZvaWQgU2V0U2FtcGxlUmF0ZShzaXplX3Qgc2FtcGxlX3JhdGVfaHopOwogCi0gcHJpdmF0
ZToKLSAgZG91YmxlIEdldEtuZWVSZWdpb25PdXRwdXRMZXZlbERiZnMoZG91YmxlIGlucHV0X2xl
dmVsX2RiZnMpIGNvbnN0OwotICBkb3VibGUgR2V0Q29tcHJlc3NvclJlZ2lvbk91dHB1dExldmVs
RGJmcyhkb3VibGUgaW5wdXRfbGV2ZWxfZGJmcykgY29uc3Q7Ci0KLSAgc3RhdGljIGNvbnN0ZXhw
ciBkb3VibGUgbWF4X2lucHV0X2xldmVsX2RiXyA9IHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZl
bERiRnM7Ci0gIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGtuZWVfc21vb3RobmVzc19kYl8gPSB0
ZXN0OjprTGltaXRlcktuZWVTbW9vdGhuZXNzRGI7Ci0gIHN0YXRpYyBjb25zdGV4cHIgZG91Ymxl
IGNvbXByZXNzaW9uX3JhdGlvXyA9IHRlc3Q6OmtMaW1pdGVyQ29tcHJlc3Npb25SYXRpbzsKLQot
ICBjb25zdCBkb3VibGUgbWF4X2lucHV0X2xldmVsX2xpbmVhcl87Ci0KLSAgLy8gRG8gbm90IG1v
ZGlmeSBzaWduYWwgd2l0aCBsZXZlbCA8PSBrbmVlX3N0YXJ0X2RiZnNfLgotICBjb25zdCBkb3Vi
bGUga25lZV9zdGFydF9kYmZzXzsKLSAgY29uc3QgZG91YmxlIGtuZWVfc3RhcnRfbGluZWFyXzsK
KyAgLy8gUmVzZXRzIHRoZSBpbnRlcm5hbCBzdGF0ZS4KKyAgdm9pZCBSZXNldCgpOwogCi0gIC8v
IFRoZSB1cHBlciBlbmQgb2YgdGhlIGtuZWUgcmVnaW9uLCB3aGljaCBpcyBiZXR3ZWVuIGtuZWVf
c3RhcnRfZGJmc18gYW5kCi0gIC8vIGxpbWl0ZXJfc3RhcnRfZGJmc18uCi0gIGNvbnN0IGRvdWJs
ZSBsaW1pdGVyX3N0YXJ0X2RiZnNfOwotICBjb25zdCBkb3VibGUgbGltaXRlcl9zdGFydF9saW5l
YXJfOworICBmbG9hdCBMYXN0QXVkaW9MZXZlbCgpIGNvbnN0OwogCi0gIC8vIENvZWZmaWNpZW50
cyB7YSwgYiwgY30gb2YgdGhlIGtuZWUgcmVnaW9uIHBvbHlub21pYWwKLSAgLy8gYXheMiArIGJ4
ICsgYyBpbiB0aGUgREIgc2NhbGUuCi0gIGNvbnN0IHN0ZDo6YXJyYXk8ZG91YmxlLCAzPiBrbmVl
X3JlZ2lvbl9wb2x5bm9taWFsXzsKLQotICAvLyBQYXJhbWV0ZXJzIGZvciB0aGUgY29tcHV0YXRp
b24gb2YgdGhlIGZpcnN0IGRlcml2YXRpdmUgb2YgR2V0R2FpbkxpbmVhcigpLgotICBjb25zdCBk
b3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2QxXzsKLSAgY29uc3QgZG91YmxlIGdhaW5fY3VydmVf
bGltaXRlcl9kMl87Ci0KLSAgLy8gUGFyYW1ldGVycyBmb3IgdGhlIGNvbXB1dGF0aW9uIG9mIHRo
ZSBpbnRlZ3JhbCBvZiBHZXRHYWluTGluZWFyKCkuCi0gIGNvbnN0IGRvdWJsZSBnYWluX2N1cnZl
X2xpbWl0ZXJfaTFfOwotICBjb25zdCBkb3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kyXzsKKyBw
cml2YXRlOgorICBjb25zdCBJbnRlcnBvbGF0ZWRHYWluQ3VydmUgaW50ZXJwX2dhaW5fY3VydmVf
OworICBGaXhlZERpZ2l0YWxMZXZlbEVzdGltYXRvciBsZXZlbF9lc3RpbWF0b3JfOworICBBcG1E
YXRhRHVtcGVyKiBjb25zdCBhcG1fZGF0YV9kdW1wZXJfID0gbnVsbHB0cjsKKworICAvLyBXb3Jr
IGFycmF5IGNvbnRhaW5pbmcgdGhlIHN1Yi1mcmFtZSBzY2FsaW5nIGZhY3RvcnMgdG8gYmUgaW50
ZXJwb2xhdGVkLgorICBzdGQ6OmFycmF5PGZsb2F0LCBrU3ViRnJhbWVzSW5GcmFtZSArIDE+IHNj
YWxpbmdfZmFjdG9yc18gPSB7fTsKKyAgc3RkOjphcnJheTxmbG9hdCwga01heGltYWxOdW1iZXJP
ZlNhbXBsZXNQZXJDaGFubmVsPgorICAgICAgcGVyX3NhbXBsZV9zY2FsaW5nX2ZhY3RvcnNfID0g
e307CisgIGZsb2F0IGxhc3Rfc2NhbGluZ19mYWN0b3JfID0gMS5mOwogfTsKIAogfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWlu
X2N1cnZlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWluX2N1cnZlLmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ1NWVkNWRmNThjMWFhNWRjMTgzNGY2MDE5YzAxMTMyMmQyZTM3YzIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dhaW5fY3VydmUuY2MKQEAgLTAs
MCArMSwxMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisg
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWluX2N1cnZlLmgiCisKKyNpbmNsdWRl
IDxjbWF0aD4KKworI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVz
cGFjZSB7CisKK2RvdWJsZSBDb21wdXRlS25lZVN0YXJ0KGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxf
ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUga25lZV9zbW9vdGhuZXNzX2RiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGNvbXByZXNzaW9uX3JhdGlvKSB7CisgIFJU
Q19DSEVDS19MVCgoY29tcHJlc3Npb25fcmF0aW8gLSAxLjApICoga25lZV9zbW9vdGhuZXNzX2Ri
IC8KKyAgICAgICAgICAgICAgICAgICAoMi4wICogY29tcHJlc3Npb25fcmF0aW8pLAorICAgICAg
ICAgICAgICAgbWF4X2lucHV0X2xldmVsX2RiKTsKKyAgcmV0dXJuIC1rbmVlX3Ntb290aG5lc3Nf
ZGIgLyAyLjAgLQorICAgICAgICAgbWF4X2lucHV0X2xldmVsX2RiIC8gKGNvbXByZXNzaW9uX3Jh
dGlvIC0gMS4wKTsKK30KKworc3RkOjphcnJheTxkb3VibGUsIDM+IENvbXB1dGVLbmVlUmVnaW9u
UG9seW5vbWlhbChkb3VibGUga25lZV9zdGFydF9kYmZzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUga25lZV9zbW9vdGhuZXNzX2RiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg
Y29tcHJlc3Npb25fcmF0aW8pIHsKKyAgY29uc3QgZG91YmxlIGEgPSAoMS4wIC0gY29tcHJlc3Np
b25fcmF0aW8pIC8KKyAgICAgICAgICAgICAgICAgICAoMi4wICoga25lZV9zbW9vdGhuZXNzX2Ri
ICogY29tcHJlc3Npb25fcmF0aW8pOworICBjb25zdCBkb3VibGUgYiA9IDEuMCAtIDIuMCAqIGEg
KiBrbmVlX3N0YXJ0X2RiZnM7CisgIGNvbnN0IGRvdWJsZSBjID0gYSAqIGtuZWVfc3RhcnRfZGJm
cyAqIGtuZWVfc3RhcnRfZGJmczsKKyAgcmV0dXJuIHt7YSwgYiwgY319OworfQorCitkb3VibGUg
Q29tcHV0ZUxpbWl0ZXJEMShkb3VibGUgbWF4X2lucHV0X2xldmVsX2RiLCBkb3VibGUgY29tcHJl
c3Npb25fcmF0aW8pIHsKKyAgcmV0dXJuIChzdGQ6OnBvdygxMC4wLCAtbWF4X2lucHV0X2xldmVs
X2RiIC8gKDIwLjAgKiBjb21wcmVzc2lvbl9yYXRpbykpICoKKyAgICAgICAgICAoMS4wIC0gY29t
cHJlc3Npb25fcmF0aW8pIC8gY29tcHJlc3Npb25fcmF0aW8pIC8KKyAgICAgICAgIGtNYXhBYnNG
bG9hdFMxNlZhbHVlOworfQorCitjb25zdGV4cHIgZG91YmxlIENvbXB1dGVMaW1pdGVyRDIoZG91
YmxlIGNvbXByZXNzaW9uX3JhdGlvKSB7CisgIHJldHVybiAoMS4wIC0gMi4wICogY29tcHJlc3Np
b25fcmF0aW8pIC8gY29tcHJlc3Npb25fcmF0aW87Cit9CisKK2RvdWJsZSBDb21wdXRlTGltaXRl
ckkyKGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxfZGIsCisgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgY29tcHJlc3Npb25fcmF0aW8sCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg
Z2Fpbl9jdXJ2ZV9saW1pdGVyX2kxKSB7CisgIFJUQ19DSEVDS19ORShnYWluX2N1cnZlX2xpbWl0
ZXJfaTEsIDAuZik7CisgIHJldHVybiBzdGQ6OnBvdygxMC4wLCAtbWF4X2lucHV0X2xldmVsX2Ri
IC8gKDIwLjAgKiBjb21wcmVzc2lvbl9yYXRpbykpIC8KKyAgICAgICAgIGdhaW5fY3VydmVfbGlt
aXRlcl9pMSAvCisgICAgICAgICBzdGQ6OnBvdyhrTWF4QWJzRmxvYXRTMTZWYWx1ZSwgZ2Fpbl9j
dXJ2ZV9saW1pdGVyX2kxIC0gMSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitMaW1pdGVyRGJH
YWluQ3VydmU6OkxpbWl0ZXJEYkdhaW5DdXJ2ZSgpCisgICAgOiBtYXhfaW5wdXRfbGV2ZWxfbGlu
ZWFyXyhEYmZzVG9GbG9hdFMxNihtYXhfaW5wdXRfbGV2ZWxfZGJfKSksCisgICAgICBrbmVlX3N0
YXJ0X2RiZnNfKENvbXB1dGVLbmVlU3RhcnQobWF4X2lucHV0X2xldmVsX2RiXywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbmVlX3Ntb290aG5lc3NfZGJfLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uX3JhdGlvXykp
LAorICAgICAga25lZV9zdGFydF9saW5lYXJfKERiZnNUb0Zsb2F0UzE2KGtuZWVfc3RhcnRfZGJm
c18pKSwKKyAgICAgIGxpbWl0ZXJfc3RhcnRfZGJmc18oa25lZV9zdGFydF9kYmZzXyArIGtuZWVf
c21vb3RobmVzc19kYl8pLAorICAgICAgbGltaXRlcl9zdGFydF9saW5lYXJfKERiZnNUb0Zsb2F0
UzE2KGxpbWl0ZXJfc3RhcnRfZGJmc18pKSwKKyAgICAgIGtuZWVfcmVnaW9uX3BvbHlub21pYWxf
KENvbXB1dGVLbmVlUmVnaW9uUG9seW5vbWlhbChrbmVlX3N0YXJ0X2RiZnNfLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtuZWVfc21v
b3RobmVzc19kYl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29tcHJlc3Npb25fcmF0aW9fKSksCisgICAgICBnYWluX2N1cnZlX2xp
bWl0ZXJfZDFfKAorICAgICAgICAgIENvbXB1dGVMaW1pdGVyRDEobWF4X2lucHV0X2xldmVsX2Ri
XywgY29tcHJlc3Npb25fcmF0aW9fKSksCisgICAgICBnYWluX2N1cnZlX2xpbWl0ZXJfZDJfKENv
bXB1dGVMaW1pdGVyRDIoY29tcHJlc3Npb25fcmF0aW9fKSksCisgICAgICBnYWluX2N1cnZlX2xp
bWl0ZXJfaTFfKDEuMCAvIGNvbXByZXNzaW9uX3JhdGlvXyksCisgICAgICBnYWluX2N1cnZlX2xp
bWl0ZXJfaTJfKENvbXB1dGVMaW1pdGVySTIobWF4X2lucHV0X2xldmVsX2RiXywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbl9yYXRpb18s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Fpbl9jdXJ2
ZV9saW1pdGVyX2kxXykpIHsKKyAgc3RhdGljX2Fzc2VydChrbmVlX3Ntb290aG5lc3NfZGJfID4g
MC4wZiwgIiIpOworICBzdGF0aWNfYXNzZXJ0KGNvbXByZXNzaW9uX3JhdGlvXyA+IDEuMGYsICIi
KTsKKyAgUlRDX0NIRUNLX0dFKG1heF9pbnB1dF9sZXZlbF9kYl8sIGtuZWVfc3RhcnRfZGJmc18g
KyBrbmVlX3Ntb290aG5lc3NfZGJfKTsKK30KKworY29uc3RleHByIGRvdWJsZSBMaW1pdGVyRGJH
YWluQ3VydmU6Om1heF9pbnB1dF9sZXZlbF9kYl87Citjb25zdGV4cHIgZG91YmxlIExpbWl0ZXJE
YkdhaW5DdXJ2ZTo6a25lZV9zbW9vdGhuZXNzX2RiXzsKK2NvbnN0ZXhwciBkb3VibGUgTGltaXRl
ckRiR2FpbkN1cnZlOjpjb21wcmVzc2lvbl9yYXRpb187CisKK2RvdWJsZSBMaW1pdGVyRGJHYWlu
Q3VydmU6OkdldE91dHB1dExldmVsRGJmcyhkb3VibGUgaW5wdXRfbGV2ZWxfZGJmcykgY29uc3Qg
eworICBpZiAoaW5wdXRfbGV2ZWxfZGJmcyA8IGtuZWVfc3RhcnRfZGJmc18pIHsKKyAgICByZXR1
cm4gaW5wdXRfbGV2ZWxfZGJmczsKKyAgfSBlbHNlIGlmIChpbnB1dF9sZXZlbF9kYmZzIDwgbGlt
aXRlcl9zdGFydF9kYmZzXykgeworICAgIHJldHVybiBHZXRLbmVlUmVnaW9uT3V0cHV0TGV2ZWxE
YmZzKGlucHV0X2xldmVsX2RiZnMpOworICB9CisgIHJldHVybiBHZXRDb21wcmVzc29yUmVnaW9u
T3V0cHV0TGV2ZWxEYmZzKGlucHV0X2xldmVsX2RiZnMpOworfQorCitkb3VibGUgTGltaXRlckRi
R2FpbkN1cnZlOjpHZXRHYWluTGluZWFyKGRvdWJsZSBpbnB1dF9sZXZlbF9saW5lYXIpIGNvbnN0
IHsKKyAgaWYgKGlucHV0X2xldmVsX2xpbmVhciA8IGtuZWVfc3RhcnRfbGluZWFyXykgeworICAg
IHJldHVybiAxLjA7CisgIH0KKyAgcmV0dXJuIERiZnNUb0Zsb2F0UzE2KAorICAgICAgICAgICAg
IEdldE91dHB1dExldmVsRGJmcyhGbG9hdFMxNlRvRGJmcyhpbnB1dF9sZXZlbF9saW5lYXIpKSkg
LworICAgICAgICAgaW5wdXRfbGV2ZWxfbGluZWFyOworfQorCisvLyBDb21wdXRlcyB0aGUgZmly
c3QgZGVyaXZhdGl2ZSBvZiBHZXRHYWluTGluZWFyKCkgaW4gfHh8LgorZG91YmxlIExpbWl0ZXJE
YkdhaW5DdXJ2ZTo6R2V0R2FpbkZpcnN0RGVyaXZhdGl2ZUxpbmVhcihkb3VibGUgeCkgY29uc3Qg
eworICAvLyBCZXlvbmQta25lZSByZWdpb24gb25seS4KKyAgUlRDX0NIRUNLX0dFKHgsIGxpbWl0
ZXJfc3RhcnRfbGluZWFyXyAtIDFlLTcgKiBrTWF4QWJzRmxvYXRTMTZWYWx1ZSk7CisgIHJldHVy
biBnYWluX2N1cnZlX2xpbWl0ZXJfZDFfICoKKyAgICAgICAgIHN0ZDo6cG93KHggLyBrTWF4QWJz
RmxvYXRTMTZWYWx1ZSwgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2QyXyk7Cit9CisKKy8vIENvbXB1dGVz
IHRoZSBpbnRlZ3JhbCBvZiBHZXRHYWluTGluZWFyKCkgaW4gdGhlIHJhbmdlIFt4MCwgeDFdLgor
ZG91YmxlIExpbWl0ZXJEYkdhaW5DdXJ2ZTo6R2V0R2FpbkludGVncmFsTGluZWFyKGRvdWJsZSB4
MCwgZG91YmxlIHgxKSBjb25zdCB7CisgIFJUQ19DSEVDS19MRSh4MCwgeDEpOyAgICAgICAgICAg
ICAgICAgICAgIC8vIFZhbGlkIGludGVydmFsLgorICBSVENfQ0hFQ0tfR0UoeDAsIGxpbWl0ZXJf
c3RhcnRfbGluZWFyXyk7ICAvLyBCZXlvbmQta25lZSByZWdpb24gb25seS4KKyAgYXV0byBsaW1p
dGVyX2ludGVncmFsID0gW3RoaXNdKGNvbnN0IGRvdWJsZSYgeCkgeworICAgIHJldHVybiBnYWlu
X2N1cnZlX2xpbWl0ZXJfaTJfICogc3RkOjpwb3coeCwgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2kxXyk7
CisgIH07CisgIHJldHVybiBsaW1pdGVyX2ludGVncmFsKHgxKSAtIGxpbWl0ZXJfaW50ZWdyYWwo
eDApOworfQorCitkb3VibGUgTGltaXRlckRiR2FpbkN1cnZlOjpHZXRLbmVlUmVnaW9uT3V0cHV0
TGV2ZWxEYmZzKAorICAgIGRvdWJsZSBpbnB1dF9sZXZlbF9kYmZzKSBjb25zdCB7CisgIHJldHVy
biBrbmVlX3JlZ2lvbl9wb2x5bm9taWFsX1swXSAqIGlucHV0X2xldmVsX2RiZnMgKiBpbnB1dF9s
ZXZlbF9kYmZzICsKKyAgICAgICAgIGtuZWVfcmVnaW9uX3BvbHlub21pYWxfWzFdICogaW5wdXRf
bGV2ZWxfZGJmcyArCisgICAgICAgICBrbmVlX3JlZ2lvbl9wb2x5bm9taWFsX1syXTsKK30KKwor
ZG91YmxlIExpbWl0ZXJEYkdhaW5DdXJ2ZTo6R2V0Q29tcHJlc3NvclJlZ2lvbk91dHB1dExldmVs
RGJmcygKKyAgICBkb3VibGUgaW5wdXRfbGV2ZWxfZGJmcykgY29uc3QgeworICByZXR1cm4gKGlu
cHV0X2xldmVsX2RiZnMgLSBtYXhfaW5wdXRfbGV2ZWxfZGJfKSAvIGNvbXByZXNzaW9uX3JhdGlv
XzsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvbGltaXRlcl9kYl9nYWluX2N1cnZlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9saW1pdGVyX2RiX2dh
aW5fY3VydmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDg2ZTI2NzM5YjdjZmMyMGZlNmE0YzM1M2E0ZDdiYzVh
YTA2ODg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWlu
X2N1cnZlLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5k
ZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfTElNSVRFUl9EQl9HQUlOX0NVUlZFX0hf
CisjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX0xJTUlURVJfREJfR0FJTl9D
VVJWRV9IXworCisjaW5jbHVkZSA8YXJyYXk+CisKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYWdjMi9hZ2MyX3Rlc3RpbmdfY29tbW9uLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCisvLyBBIGNsYXNzIGZvciBjb21wdXRpbmcgYSBsaW1pdGVyIGdhaW4gY3VydmUgKGluIGRC
IHNjYWxlKSBnaXZlbiBhIHNldCBvZgorLy8gaGFyZC1jb2RlZCBwYXJhbWV0ZXJzIChuYW1lbHks
IGtMaW1pdGVyRGJHYWluQ3VydmVNYXhJbnB1dExldmVsRGJGcywKKy8vIGtMaW1pdGVyRGJHYWlu
Q3VydmVLbmVlU21vb3RobmVzc0RiLCBhbmQKKy8vIGtMaW1pdGVyRGJHYWluQ3VydmVDb21wcmVz
c2lvblJhdGlvKS4gVGhlIGdlbmVyYXRlZCBjdXJ2ZSBjb25zaXN0cyBvZiBmb3VyCisvLyByZWdp
b25zOiBpZGVudGl0eSAobGluZWFyKSwga25lZSAocXVhZHJhdGljIHBvbHlub21pYWwpLCBjb21w
cmVzc2lvbgorLy8gKGxpbmVhciksIHNhdHVyYXRpb24gKGxpbmVhcikuIFRoZSBhZm9yZW1lbnRp
b25lZCBjb25zdGFudHMgYXJlIHVzZWQgdG8gc2hhcGUKKy8vIHRoZSBkaWZmZXJlbnQgcmVnaW9u
cy4KK2NsYXNzIExpbWl0ZXJEYkdhaW5DdXJ2ZSB7CisgcHVibGljOgorICBMaW1pdGVyRGJHYWlu
Q3VydmUoKTsKKworICBkb3VibGUgbWF4X2lucHV0X2xldmVsX2RiKCkgY29uc3QgeyByZXR1cm4g
bWF4X2lucHV0X2xldmVsX2RiXzsgfQorICBkb3VibGUgbWF4X2lucHV0X2xldmVsX2xpbmVhcigp
IGNvbnN0IHsgcmV0dXJuIG1heF9pbnB1dF9sZXZlbF9saW5lYXJfOyB9CisgIGRvdWJsZSBrbmVl
X3N0YXJ0X2xpbmVhcigpIGNvbnN0IHsgcmV0dXJuIGtuZWVfc3RhcnRfbGluZWFyXzsgfQorICBk
b3VibGUgbGltaXRlcl9zdGFydF9saW5lYXIoKSBjb25zdCB7IHJldHVybiBsaW1pdGVyX3N0YXJ0
X2xpbmVhcl87IH0KKworICAvLyBUaGVzZSBtZXRob2RzIGNhbiBiZSBtYXJrZWQgJ2NvbnN0ZXhw
cicgaW4gQysrIDE0LgorICBkb3VibGUgR2V0T3V0cHV0TGV2ZWxEYmZzKGRvdWJsZSBpbnB1dF9s
ZXZlbF9kYmZzKSBjb25zdDsKKyAgZG91YmxlIEdldEdhaW5MaW5lYXIoZG91YmxlIGlucHV0X2xl
dmVsX2xpbmVhcikgY29uc3Q7CisgIGRvdWJsZSBHZXRHYWluRmlyc3REZXJpdmF0aXZlTGluZWFy
KGRvdWJsZSB4KSBjb25zdDsKKyAgZG91YmxlIEdldEdhaW5JbnRlZ3JhbExpbmVhcihkb3VibGUg
eDAsIGRvdWJsZSB4MSkgY29uc3Q7CisKKyBwcml2YXRlOgorICBkb3VibGUgR2V0S25lZVJlZ2lv
bk91dHB1dExldmVsRGJmcyhkb3VibGUgaW5wdXRfbGV2ZWxfZGJmcykgY29uc3Q7CisgIGRvdWJs
ZSBHZXRDb21wcmVzc29yUmVnaW9uT3V0cHV0TGV2ZWxEYmZzKGRvdWJsZSBpbnB1dF9sZXZlbF9k
YmZzKSBjb25zdDsKKworICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBtYXhfaW5wdXRfbGV2ZWxf
ZGJfID0gdGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVsRGJGczsKKyAgc3RhdGljIGNvbnN0ZXhw
ciBkb3VibGUga25lZV9zbW9vdGhuZXNzX2RiXyA9IHRlc3Q6OmtMaW1pdGVyS25lZVNtb290aG5l
c3NEYjsKKyAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgY29tcHJlc3Npb25fcmF0aW9fID0gdGVz
dDo6a0xpbWl0ZXJDb21wcmVzc2lvblJhdGlvOworCisgIGNvbnN0IGRvdWJsZSBtYXhfaW5wdXRf
bGV2ZWxfbGluZWFyXzsKKworICAvLyBEbyBub3QgbW9kaWZ5IHNpZ25hbCB3aXRoIGxldmVsIDw9
IGtuZWVfc3RhcnRfZGJmc18uCisgIGNvbnN0IGRvdWJsZSBrbmVlX3N0YXJ0X2RiZnNfOworICBj
b25zdCBkb3VibGUga25lZV9zdGFydF9saW5lYXJfOworCisgIC8vIFRoZSB1cHBlciBlbmQgb2Yg
dGhlIGtuZWUgcmVnaW9uLCB3aGljaCBpcyBiZXR3ZWVuIGtuZWVfc3RhcnRfZGJmc18gYW5kCisg
IC8vIGxpbWl0ZXJfc3RhcnRfZGJmc18uCisgIGNvbnN0IGRvdWJsZSBsaW1pdGVyX3N0YXJ0X2Ri
ZnNfOworICBjb25zdCBkb3VibGUgbGltaXRlcl9zdGFydF9saW5lYXJfOworCisgIC8vIENvZWZm
aWNpZW50cyB7YSwgYiwgY30gb2YgdGhlIGtuZWUgcmVnaW9uIHBvbHlub21pYWwKKyAgLy8gYXhe
MiArIGJ4ICsgYyBpbiB0aGUgREIgc2NhbGUuCisgIGNvbnN0IHN0ZDo6YXJyYXk8ZG91YmxlLCAz
PiBrbmVlX3JlZ2lvbl9wb2x5bm9taWFsXzsKKworICAvLyBQYXJhbWV0ZXJzIGZvciB0aGUgY29t
cHV0YXRpb24gb2YgdGhlIGZpcnN0IGRlcml2YXRpdmUgb2YgR2V0R2FpbkxpbmVhcigpLgorICBj
b25zdCBkb3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2QxXzsKKyAgY29uc3QgZG91YmxlIGdhaW5f
Y3VydmVfbGltaXRlcl9kMl87CisKKyAgLy8gUGFyYW1ldGVycyBmb3IgdGhlIGNvbXB1dGF0aW9u
IG9mIHRoZSBpbnRlZ3JhbCBvZiBHZXRHYWluTGluZWFyKCkuCisgIGNvbnN0IGRvdWJsZSBnYWlu
X2N1cnZlX2xpbWl0ZXJfaTFfOworICBjb25zdCBkb3VibGUgZ2Fpbl9jdXJ2ZV9saW1pdGVyX2ky
XzsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0FV
RElPX1BST0NFU1NJTkdfQUdDMl9MSU1JVEVSX0RCX0dBSU5fQ1VSVkVfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXJfZGJfZ2Fpbl9jdXJ2ZV91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2xpbWl0ZXJfZGJfZ2Fpbl9jdXJ2ZV91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NDljOGQ1NjhlYTUwZjBjYWVmMjc5NTJmMWQ3YmZhNWVkMGQ1NGI2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWluX2N1cnZlX3VuaXR0ZXN0LmNjCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisg
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvbGltaXRlcl9kYl9nYWluX2N1cnZlLmgiCisKKyNpbmNsdWRl
ICJydGNfYmFzZS9ndW5pdC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworVEVTVChGaXhlZERp
Z2l0YWxHYWluQ29udHJvbGxlcjJMaW1pdGVyLCBDb25zdHJ1Y3REZXN0cnVjdCkgeworICBMaW1p
dGVyRGJHYWluQ3VydmUgbDsKK30KKworVEVTVChGaXhlZERpZ2l0YWxHYWluQ29udHJvbGxlcjJM
aW1pdGVyLCBHYWluQ3VydmVTaG91bGRCZU1vbm90b25lKSB7CisgIExpbWl0ZXJEYkdhaW5DdXJ2
ZSBsOworICBmbG9hdCBsYXN0X291dHB1dF9sZXZlbCA9IDAuZjsKKyAgYm9vbCBoYXNfbGFzdF9v
dXRwdXRfbGV2ZWwgPSBmYWxzZTsKKyAgZm9yIChmbG9hdCBsZXZlbCA9IC05MC5mOyBsZXZlbCA8
PSBsLm1heF9pbnB1dF9sZXZlbF9kYigpOyBsZXZlbCArPSAwLjVmKSB7CisgICAgY29uc3QgZmxv
YXQgY3VycmVudF9vdXRwdXRfbGV2ZWwgPSBsLkdldE91dHB1dExldmVsRGJmcyhsZXZlbCk7Cisg
ICAgaWYgKCFoYXNfbGFzdF9vdXRwdXRfbGV2ZWwpIHsKKyAgICAgIGxhc3Rfb3V0cHV0X2xldmVs
ID0gY3VycmVudF9vdXRwdXRfbGV2ZWw7CisgICAgICBoYXNfbGFzdF9vdXRwdXRfbGV2ZWwgPSB0
cnVlOworICAgIH0KKyAgICBFWFBFQ1RfTEUobGFzdF9vdXRwdXRfbGV2ZWwsIGN1cnJlbnRfb3V0
cHV0X2xldmVsKTsKKyAgICBsYXN0X291dHB1dF9sZXZlbCA9IGN1cnJlbnRfb3V0cHV0X2xldmVs
OworICB9Cit9CisKK1RFU1QoRml4ZWREaWdpdGFsR2FpbkNvbnRyb2xsZXIyTGltaXRlciwgR2Fp
bkN1cnZlU2hvdWxkQmVDb250aW51b3VzKSB7CisgIExpbWl0ZXJEYkdhaW5DdXJ2ZSBsOworICBm
bG9hdCBsYXN0X291dHB1dF9sZXZlbCA9IDAuZjsKKyAgYm9vbCBoYXNfbGFzdF9vdXRwdXRfbGV2
ZWwgPSBmYWxzZTsKKyAgY29uc3RleHByIGZsb2F0IGtNYXhEZWx0YSA9IDAuNWY7CisgIGZvciAo
ZmxvYXQgbGV2ZWwgPSAtOTAuZjsgbGV2ZWwgPD0gbC5tYXhfaW5wdXRfbGV2ZWxfZGIoKTsgbGV2
ZWwgKz0gMC41ZikgeworICAgIGNvbnN0IGZsb2F0IGN1cnJlbnRfb3V0cHV0X2xldmVsID0gbC5H
ZXRPdXRwdXRMZXZlbERiZnMobGV2ZWwpOworICAgIGlmICghaGFzX2xhc3Rfb3V0cHV0X2xldmVs
KSB7CisgICAgICBsYXN0X291dHB1dF9sZXZlbCA9IGN1cnJlbnRfb3V0cHV0X2xldmVsOworICAg
ICAgaGFzX2xhc3Rfb3V0cHV0X2xldmVsID0gdHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX0xFKGN1
cnJlbnRfb3V0cHV0X2xldmVsLCBsYXN0X291dHB1dF9sZXZlbCArIGtNYXhEZWx0YSk7CisgICAg
bGFzdF9vdXRwdXRfbGV2ZWwgPSBjdXJyZW50X291dHB1dF9sZXZlbDsKKyAgfQorfQorCitURVNU
KEZpeGVkRGlnaXRhbEdhaW5Db250cm9sbGVyMkxpbWl0ZXIsIE91dHB1dEdhaW5TaG91bGRCZUxl
c3NUaGFuRnVsbFNjYWxlKSB7CisgIExpbWl0ZXJEYkdhaW5DdXJ2ZSBsOworICBmb3IgKGZsb2F0
IGxldmVsID0gLTkwLmY7IGxldmVsIDw9IGwubWF4X2lucHV0X2xldmVsX2RiKCk7IGxldmVsICs9
IDAuNWYpIHsKKyAgICBjb25zdCBmbG9hdCBjdXJyZW50X291dHB1dF9sZXZlbCA9IGwuR2V0T3V0
cHV0TGV2ZWxEYmZzKGxldmVsKTsKKyAgICBFWFBFQ1RfTEUoY3VycmVudF9vdXRwdXRfbGV2ZWws
IDAuZik7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvbGltaXRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXJf
dW5pdHRlc3QuY2MKaW5kZXggNzA3OTgxMjYzNDc1YWEzYjlmMGViMzUxODkxNzU5ODViYjNhNzkz
Mi4uZTY2MmE3ZmM4OTA0NThlMzhiNThmNzgxMmY3MDI5OTM4N2ZkYWUyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2FnYzIvbGltaXRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9s
aW1pdGVyX3VuaXR0ZXN0LmNjCkBAIC0xMCw1MCArMTAsNTAgQEAKIAogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0ZXIuaCIKIAorI2luY2x1ZGUgImNvbW1vbl9h
dWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9hZ2MyX2NvbW1vbi5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9hZ2MyL2FnYzJfdGVzdGluZ19jb21tb24uaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi92ZWN0b3JfZmxvYXRfZnJhbWUuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9ndW5pdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotVEVTVChGaXhlZERpZ2l0
YWxHYWluQ29udHJvbGxlcjJMaW1pdGVyLCBDb25zdHJ1Y3REZXN0cnVjdCkgewotICBMaW1pdGVy
IGw7Ci19CitURVNUKExpbWl0ZXIsIExpbWl0ZXJTaG91bGRDb25zdHJ1Y3RBbmRSdW4pIHsKKyAg
Y29uc3QgaW50IHNhbXBsZV9yYXRlX2h6ID0gNDgwMDA7CisgIEFwbURhdGFEdW1wZXIgYXBtX2Rh
dGFfZHVtcGVyKDApOwogCi1URVNUKEZpeGVkRGlnaXRhbEdhaW5Db250cm9sbGVyMkxpbWl0ZXIs
IEdhaW5DdXJ2ZVNob3VsZEJlTW9ub3RvbmUpIHsKLSAgTGltaXRlciBsOwotICBmbG9hdCBsYXN0
X291dHB1dF9sZXZlbCA9IDAuZjsKLSAgYm9vbCBoYXNfbGFzdF9vdXRwdXRfbGV2ZWwgPSBmYWxz
ZTsKLSAgZm9yIChmbG9hdCBsZXZlbCA9IC05MC5mOyBsZXZlbCA8PSBsLm1heF9pbnB1dF9sZXZl
bF9kYigpOyBsZXZlbCArPSAwLjVmKSB7Ci0gICAgY29uc3QgZmxvYXQgY3VycmVudF9vdXRwdXRf
bGV2ZWwgPSBsLkdldE91dHB1dExldmVsRGJmcyhsZXZlbCk7Ci0gICAgaWYgKCFoYXNfbGFzdF9v
dXRwdXRfbGV2ZWwpIHsKLSAgICAgIGxhc3Rfb3V0cHV0X2xldmVsID0gY3VycmVudF9vdXRwdXRf
bGV2ZWw7Ci0gICAgICBoYXNfbGFzdF9vdXRwdXRfbGV2ZWwgPSB0cnVlOwotICAgIH0KLSAgICBF
WFBFQ1RfTEUobGFzdF9vdXRwdXRfbGV2ZWwsIGN1cnJlbnRfb3V0cHV0X2xldmVsKTsKLSAgICBs
YXN0X291dHB1dF9sZXZlbCA9IGN1cnJlbnRfb3V0cHV0X2xldmVsOwotICB9CisgIExpbWl0ZXIg
bGltaXRlcihzYW1wbGVfcmF0ZV9oeiwgJmFwbV9kYXRhX2R1bXBlciwgIiIpOworCisgIFZlY3Rv
ckZsb2F0RnJhbWUgdmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lKDEsIHNhbXBsZV9yYXRlX2h6IC8g
MTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTWF4QWJz
RmxvYXRTMTZWYWx1ZSk7CisgIGxpbWl0ZXIuUHJvY2Vzcyh2ZWN0b3JzX3dpdGhfZmxvYXRfZnJh
bWUuZmxvYXRfZnJhbWVfdmlldygpKTsKIH0KIAotVEVTVChGaXhlZERpZ2l0YWxHYWluQ29udHJv
bGxlcjJMaW1pdGVyLCBHYWluQ3VydmVTaG91bGRCZUNvbnRpbnVvdXMpIHsKLSAgTGltaXRlciBs
OwotICBmbG9hdCBsYXN0X291dHB1dF9sZXZlbCA9IDAuZjsKLSAgYm9vbCBoYXNfbGFzdF9vdXRw
dXRfbGV2ZWwgPSBmYWxzZTsKLSAgY29uc3RleHByIGZsb2F0IGtNYXhEZWx0YSA9IDAuNWY7Ci0g
IGZvciAoZmxvYXQgbGV2ZWwgPSAtOTAuZjsgbGV2ZWwgPD0gbC5tYXhfaW5wdXRfbGV2ZWxfZGIo
KTsgbGV2ZWwgKz0gMC41ZikgewotICAgIGNvbnN0IGZsb2F0IGN1cnJlbnRfb3V0cHV0X2xldmVs
ID0gbC5HZXRPdXRwdXRMZXZlbERiZnMobGV2ZWwpOwotICAgIGlmICghaGFzX2xhc3Rfb3V0cHV0
X2xldmVsKSB7Ci0gICAgICBsYXN0X291dHB1dF9sZXZlbCA9IGN1cnJlbnRfb3V0cHV0X2xldmVs
OwotICAgICAgaGFzX2xhc3Rfb3V0cHV0X2xldmVsID0gdHJ1ZTsKLSAgICB9Ci0gICAgRVhQRUNU
X0xFKGN1cnJlbnRfb3V0cHV0X2xldmVsLCBsYXN0X291dHB1dF9sZXZlbCArIGtNYXhEZWx0YSk7
Ci0gICAgbGFzdF9vdXRwdXRfbGV2ZWwgPSBjdXJyZW50X291dHB1dF9sZXZlbDsKK1RFU1QoTGlt
aXRlciwgT3V0cHV0Vm9sdW1lQWJvdmVUaHJlc2hvbGQpIHsKKyAgY29uc3QgaW50IHNhbXBsZV9y
YXRlX2h6ID0gNDgwMDA7CisgIGNvbnN0IGZsb2F0IGlucHV0X2xldmVsID0KKyAgICAgIChrTWF4
QWJzRmxvYXRTMTZWYWx1ZSArIERiZnNUb0Zsb2F0UzE2KHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRM
ZXZlbERiRnMpKSAvCisgICAgICAyLmY7CisgIEFwbURhdGFEdW1wZXIgYXBtX2RhdGFfZHVtcGVy
KDApOworCisgIExpbWl0ZXIgbGltaXRlcihzYW1wbGVfcmF0ZV9oeiwgJmFwbV9kYXRhX2R1bXBl
ciwgIiIpOworCisgIC8vIEdpdmUgdGhlIGxldmVsIGVzdGltYXRvciB0aW1lIHRvIGFkYXB0Lgor
ICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkgeworICAgIFZlY3RvckZsb2F0RnJhbWUgdmVj
dG9yc193aXRoX2Zsb2F0X2ZyYW1lKDEsIHNhbXBsZV9yYXRlX2h6IC8gMTAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2xldmVsKTsKKyAgICBs
aW1pdGVyLlByb2Nlc3ModmVjdG9yc193aXRoX2Zsb2F0X2ZyYW1lLmZsb2F0X2ZyYW1lX3ZpZXco
KSk7CiAgIH0KLX0KIAotVEVTVChGaXhlZERpZ2l0YWxHYWluQ29udHJvbGxlcjJMaW1pdGVyLCBP
dXRwdXRHYWluU2hvdWxkQmVMZXNzVGhhbkZ1bGxTY2FsZSkgewotICBMaW1pdGVyIGw7Ci0gIGZv
ciAoZmxvYXQgbGV2ZWwgPSAtOTAuZjsgbGV2ZWwgPD0gbC5tYXhfaW5wdXRfbGV2ZWxfZGIoKTsg
bGV2ZWwgKz0gMC41ZikgewotICAgIGNvbnN0IGZsb2F0IGN1cnJlbnRfb3V0cHV0X2xldmVsID0g
bC5HZXRPdXRwdXRMZXZlbERiZnMobGV2ZWwpOwotICAgIEVYUEVDVF9MRShjdXJyZW50X291dHB1
dF9sZXZlbCwgMC5mKTsKKyAgVmVjdG9yRmxvYXRGcmFtZSB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJh
bWUoMSwgc2FtcGxlX3JhdGVfaHogLyAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlucHV0X2xldmVsKTsKKyAgbGltaXRlci5Qcm9jZXNzKHZlY3RvcnNf
d2l0aF9mbG9hdF9mcmFtZS5mbG9hdF9mcmFtZV92aWV3KCkpOworICBydGM6OkFycmF5Vmlldzxj
b25zdCBmbG9hdD4gY2hhbm5lbCA9CisgICAgICB2ZWN0b3JzX3dpdGhfZmxvYXRfZnJhbWUuZmxv
YXRfZnJhbWVfdmlldygpLmNoYW5uZWwoMCk7CisKKyAgZm9yIChjb25zdCBhdXRvJiBzYW1wbGUg
OiBjaGFubmVsKSB7CisgICAgRVhQRUNUX0xUKDAuOWYgKiBrTWF4QWJzRmxvYXRTMTZWYWx1ZSwg
c2FtcGxlKTsKICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9sZXZl
bF9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9sZXZlbF9lc3RpbWF0b3IuY2MK
aW5kZXggZDlhYWYxZjliZDNmNjY4OWRlN2ZhZDA0N2I5MzM0YTNmMGY3MDZkMi4uNmU0MzY3MmNl
MDMxNmYyNzYyY2U5NjBlNjI2MDdiYzg1Yjk3MmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvbm9pc2VfbGV2ZWxfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL25vaXNlX2xl
dmVsX2VzdGltYXRvci5jYwpAQCAtMTAsMTMgKzEwLDE1IEBACiAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9sZXZlbF9lc3RpbWF0b3IuaCIKIAotI2luY2x1
ZGUgPG1hdGguaD4KLQorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxudW1lcmljPgogCisjaW5jbHVkZSAiYXBpL2Fy
cmF5X3ZpZXcuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191dGlsLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVt
cGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3Iu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuY2MKaW5kZXggOWUw
ODEyNmU4OTJlMzc1MmM2OWFiM2ZjODEyMGNlNjRkNTFhMmQxNy4uNTczNWZhZjNkMmNiZDM2NGQw
ZDUwYzhiNWFkMGI0YWJiMGQwMWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvbm9pc2Vf
c3BlY3RydW1fZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL25vaXNlX3NwZWN0cnVt
X2VzdGltYXRvci5jYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFf
ZHVtcGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVyZXNfZXh0cmFjdGlvbi5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVyZXNfZXh0cmFjdGlvbi5jYwppbmRleCA4YWI1Njcz
NmEyZjJiOGI5MTlmNDNmNjQxNWJmZjE0YjkwMjQyNjJhLi44ZjQ3MmE1NWVkNjQ5ZDI4MTIxYjll
YTRjMmJjMTU3NDVjMDk2ZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2Zl
YXR1cmVzX2V4dHJhY3Rpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZWF0dXJl
c19leHRyYWN0aW9uLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2ZlYXR1cmVzX2V4dHJhY3Rpb24uaCIKIAorI2lu
Y2x1ZGUgPGFycmF5PgorCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
cm5uX3ZhZC9scF9yZXNpZHVhbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL2ZlYXR1cmVzX2V4dHJhY3Rpb24uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVyZXNfZXh0cmFjdGlvbi5oCmluZGV4IDFmNjM4
ODVjNGU2ZDg3NzRjMmM0NGRjMDExMjVmNTk4YTc1M2E0MDIuLmNlNWNjZTE4NTdjZDQxN2JjYmVh
NGQ3OWQwMTE5NDRjYjg2ZTVlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQv
ZmVhdHVyZXNfZXh0cmFjdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVy
ZXNfZXh0cmFjdGlvbi5oCkBAIC0xMSwxMiArMTEsMTIgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJ
T19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9GRUFUVVJFU19FWFRSQUNUSU9OX0hfCiAjZGVmaW5l
IE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX1JOTl9WQURfRkVBVFVSRVNfRVhUUkFDVElP
Tl9IXwogCi0jaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUg
ImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvYmlxdWFkX2ZpbHRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL3Jubl92YWQvY29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2FnYzIvcm5uX3ZhZC9waXRjaF9pbmZvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFyY2guaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3NlcXVlbmNlX2J1ZmZlci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc3BlY3RyYWxfZmVhdHVyZXMu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmZ0X3V0aWwuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9ybm5fdmFkL2ZmdF91dGlsLmNjCmluZGV4IDEwMTc0MDBhMjgyNGQxYmJhMmM0
NjJjMDY3MzM0OGJjMTRhNWJhYTAuLmExYzVkYWM0Nzc3NGU0MGIxODk3MDhiNjU0NWQ1ZjlhZjkw
MWVlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmZ0X3V0aWwuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZnRfdXRpbC5jYwpAQCAtMTAsNiArMTAsNyBAQAog
CiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9mZnRfdXRp
bC5oIgogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8Y21hdGg+CiAKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQv
bHBfcmVzaWR1YWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvbHBfcmVzaWR1YWwuaAppbmRl
eCBiZmZhZmQyOTFmOTM2ZTc5YTQ5NjFiMWY3ZGRkYmI0YjVlMTU3ZjIxLi5jZGRlZGNhNWQ2MTRl
Yzk0YTBmMzY1NDRiNzNkOTMwOWU0ZThkZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9y
bm5fdmFkL2xwX3Jlc2lkdWFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9scF9yZXNp
ZHVhbC5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lO
R19BR0MyX1JOTl9WQURfTFBfUkVTSURVQUxfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX0FHQzJfUk5OX1ZBRF9MUF9SRVNJRFVBTF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+
CisKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvcGl0Y2hfc2VhcmNoLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFyY2guY2MKaW5kZXggMWY4ODU5ZDViMDRkNDUzNTA2
YmExODVlN2NjOTBlZThkNGFmOWFmMy4uYWEwYjc1MWQyOGExYWJkNWU0ZDcwY2Q1ZTJkMGM5MWU2
NDRmMDgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFyY2gu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFyY2guY2MKQEAgLTEwLDYg
KzEwLDExIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5f
dmFkL3BpdGNoX3NlYXJjaC5oIgogCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Y3N0ZGRl
Zj4KKworI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IG5hbWVzcGFjZSBybm5fdmFkIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3Zh
ZC9waXRjaF9zZWFyY2hfaW50ZXJuYWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNo
X3NlYXJjaF9pbnRlcm5hbC5jYwppbmRleCBiN2I0NGQyOTM3NjljMGFmOTMyNDE2OTIyYjc1ZWQ2
YWFlMDAyNTM0Li4zMmVlOGMwMGRmODQ5YjU2NDIxNzBhMDgwMzA0YzUxZGYzYzY3ZmQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaF9pbnRlcm5hbC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaF9pbnRlcm5hbC5jYwpAQCAt
MTAsMTAgKzEwLDEyIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdj
Mi9ybm5fdmFkL3BpdGNoX3NlYXJjaF9pbnRlcm5hbC5oIgogCisjaW5jbHVkZSA8c3RkbGliLmg+
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNvbXBs
ZXg+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxudW1lcmljPgotI2luY2x1ZGUgPHV0
aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFk
L2NvbW1vbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFyY2hfaW50ZXJuYWwuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL3Jubl92YWQvcGl0Y2hfc2VhcmNoX2ludGVybmFsLmgKaW5kZXggNzVmN2YxN2E0MmZjMjk2
OGYzYzI4N2VlMTQ2ZDI2NzMxYWU1ODY5My4uYmI3NDdiYjAzZTRjNWQ4OWMxMjJkZmM4MjQ0Nzc2
OTNkMzhmZmI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9waXRjaF9zZWFy
Y2hfaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3BpdGNoX3NlYXJjaF9p
bnRlcm5hbC5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VT
U0lOR19BR0MyX1JOTl9WQURfUElUQ0hfU0VBUkNIX0lOVEVSTkFMX0hfCiAjZGVmaW5lIE1PRFVM
RVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX1JOTl9WQURfUElUQ0hfU0VBUkNIX0lOVEVSTkFMX0hf
CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhcnJheT4KIAogI2luY2x1ZGUgImFw
aS9hcnJheV92aWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3Jubi5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9ybm4uaAppbmRleCBiM2EzYjljNDg1YzE3MmY2Mjc2
Y2I0OWEyYmI1NGQxN2EwM2M4YjE1Li5hN2QwNTdkNTc2OTU5MDAxYTQ0ZjdkM2IwYTc5Njk5NjA5
NzRjMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3Jubi5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL3Jubl92YWQvcm5uLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgTU9E
VUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9STk5fSF8KICNkZWZpbmUgTU9EVUxF
U19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5OX1ZBRF9STk5fSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPGFycmF5PgogCiAjaW5jbHVk
ZSAiYXBpL2FycmF5X3ZpZXcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQv
cm5uX3ZhZF90b29sLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9ybm5fdmFkX3Rvb2wuY2MK
aW5kZXggNWZiYTBiZmFjODc3YzRkYzZkZmFmODQyNjg3MDZjNjMwYmM2NzliZi4uYjY2ZGZkNjg0
ZDc0NDNjODM2NjlmMjM3YzU2MWQzYWNlOWYwNTg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Fn
YzIvcm5uX3ZhZC9ybm5fdmFkX3Rvb2wuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9y
bm5fdmFkX3Rvb2wuY2MKQEAgLTI1LDIyICsyNSwyMiBAQCBuYW1lc3BhY2Ugcm5uX3ZhZCB7CiBu
YW1lc3BhY2UgdGVzdCB7CiBuYW1lc3BhY2UgewogCi1ERUZJTkVfc3RyaW5nKGksICIiLCAiUGF0
aCB0byB0aGUgaW5wdXQgd2F2IGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGksICIiLCAi
UGF0aCB0byB0aGUgaW5wdXQgd2F2IGZpbGUiKTsKIHN0ZDo6c3RyaW5nIElucHV0V2F2RmlsZSgp
IHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2kpOwogfQogCi1ERUZJ
TkVfc3RyaW5nKGYsICIiLCAiUGF0aCB0byB0aGUgb3V0cHV0IGZlYXR1cmVzIGZpbGUiKTsKK1dF
QlJUQ19ERUZJTkVfc3RyaW5nKGYsICIiLCAiUGF0aCB0byB0aGUgb3V0cHV0IGZlYXR1cmVzIGZp
bGUiKTsKIHN0ZDo6c3RyaW5nIE91dHB1dEZlYXR1cmVzRmlsZSgpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2YpOwogfQogCi1ERUZJTkVfc3RyaW5nKG8sICIiLCAi
UGF0aCB0byB0aGUgb3V0cHV0IFZBRCBwcm9iYWJpbGl0aWVzIGZpbGUiKTsKK1dFQlJUQ19ERUZJ
TkVfc3RyaW5nKG8sICIiLCAiUGF0aCB0byB0aGUgb3V0cHV0IFZBRCBwcm9iYWJpbGl0aWVzIGZp
bGUiKTsKIHN0ZDo6c3RyaW5nIE91dHB1dFZhZFByb2JzRmlsZSgpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX28pOwogfQogCi1ERUZJTkVfYm9vbChoZWxwLCBmYWxz
ZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChoZWxwLCBmYWxz
ZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKIAogfSAgLy8gbmFtZXNwYWNlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc3BlY3RyYWxfZmVhdHVyZXMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZ2MyL3Jubl92YWQvc3BlY3RyYWxfZmVhdHVyZXMuaAppbmRleCBiZWRkN2FiM2Q3ZDFhZGE1
ODI0ZjE3NmE3YjU1YTk3OTdiM2I3NWI4Li41YzMzZGNkZDI0NTYxNmI4OTEzMWQwYjdmYzM2YmU3
MzFhYmE0ZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3NwZWN0cmFsX2Zl
YXR1cmVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJlcy5o
CkBAIC0xMyw2ICsxMyw3IEBACiAKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxjb21wbGV4
PgorI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc3BlY3Ry
YWxfZmVhdHVyZXNfaW50ZXJuYWwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3NwZWN0cmFs
X2ZlYXR1cmVzX2ludGVybmFsLmNjCmluZGV4IDlmNGUyMTg1MGY1Zjc2ZTljMGZiNmI3MWFhMjhm
NGY5ZDFhZGFlMTIuLjc0MjExZmU4MTRkYTg4NzE5NjlhM2FiMDYwMGU1YTc1NTJhOGM4M2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc3BlY3RyYWxfZmVhdHVyZXNfaW50ZXJu
YWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJlc19pbnRl
cm5hbC5jYwpAQCAtMTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGNzdGRkZWY+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0
dXJlc19pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvcm5uX3ZhZC9zcGVjdHJhbF9mZWF0dXJl
c19pbnRlcm5hbC5oCmluZGV4IDQ1YmIzODIwNzhlNjU3MjczNDJkODQ2MzNhYmI2NThkMGQ4OTE5
ZDguLmVkZmQxOGNjODUwNjNiMjhjNzJiZmNkNmE3MmM5Y2U4YjYzMzkxZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvc3BlY3RyYWxfZmVhdHVyZXNfaW50ZXJuYWwuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9ybm5fdmFkL3NwZWN0cmFsX2ZlYXR1cmVzX2ludGVybmFsLmgKQEAg
LTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQzJfUk5O
X1ZBRF9TUEVDVFJBTF9GRUFUVVJFU19JTlRFUk5BTF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElP
X1BST0NFU1NJTkdfQUdDMl9STk5fVkFEX1NQRUNUUkFMX0ZFQVRVUkVTX0lOVEVSTkFMX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxjb21wbGV4
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9zYXR1cmF0aW9uX3Byb3RlY3Rvci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL3NhdHVyYXRpb25fcHJvdGVjdG9yLmNjCmluZGV4IDA4OTU1ODNiODM5
NjJmZjM2MGFlNjAxM2UzYTZiYmRmNjZhY2Q3ZWQuLjk0YTUyZWFhY2FhZDg2Nzc3MGE0NzVkYmMx
YmIzM2FiZjJhODYwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3NhdHVyYXRpb25fcHJv
dGVjdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3NhdHVyYXRpb25fcHJvdGVjdG9yLmNjCkBA
IC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIv
c2F0dXJhdGlvbl9wcm90ZWN0b3IuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRl
IDxpdGVyYXRvcj4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5n
L2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlu
bWF4LmgiCkBAIC01Niw5ICs1NywxNCBAQCBmbG9hdCBTYXR1cmF0aW9uUHJvdGVjdG9yOjpQZWFr
RW52ZWxvcGVyOjpRdWVyeSgpIGNvbnN0IHsKIH0KIAogU2F0dXJhdGlvblByb3RlY3Rvcjo6U2F0
dXJhdGlvblByb3RlY3RvcihBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIpCisgICAgOiBT
YXR1cmF0aW9uUHJvdGVjdG9yKGFwbV9kYXRhX2R1bXBlciwgR2V0RXh0cmFTYXR1cmF0aW9uTWFy
Z2luT2Zmc2V0RGIoKSkgeworfQorCitTYXR1cmF0aW9uUHJvdGVjdG9yOjpTYXR1cmF0aW9uUHJv
dGVjdG9yKEFwbURhdGFEdW1wZXIqIGFwbV9kYXRhX2R1bXBlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGIp
CiAgICAgOiBhcG1fZGF0YV9kdW1wZXJfKGFwbV9kYXRhX2R1bXBlciksCiAgICAgICBsYXN0X21h
cmdpbl8oR2V0SW5pdGlhbFNhdHVyYXRpb25NYXJnaW5EYigpKSwKLSAgICAgIGV4dHJhX3NhdHVy
YXRpb25fbWFyZ2luX2RiXyhHZXRFeHRyYVNhdHVyYXRpb25NYXJnaW5PZmZzZXREYigpKSB7fQor
ICAgICAgZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGJfKGV4dHJhX3NhdHVyYXRpb25fbWFyZ2lu
X2RiKSB7fQogCiB2b2lkIFNhdHVyYXRpb25Qcm90ZWN0b3I6OlVwZGF0ZU1hcmdpbigKICAgICBj
b25zdCBWYWRXaXRoTGV2ZWw6OkxldmVsQW5kUHJvYmFiaWxpdHkmIHZhZF9kYXRhLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvc2F0dXJhdGlvbl9wcm90ZWN0b3IuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h
Z2MyL3NhdHVyYXRpb25fcHJvdGVjdG9yLmgKaW5kZXggMTcwNWY2YWM1ZmJiYmIwYTIxZmYxY2Vl
NDNiY2U5NzVmZWI1ZDY4Mi4uZTYzNzQ2OTA3MGVhYjYwMzJhMWY2NmU1ZmI1ZDkwNTljODVhYzFm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2F0dXJhdGlvbl9wcm90ZWN0b3IuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi9zYXR1cmF0aW9uX3Byb3RlY3Rvci5oCkBAIC0yNCw2ICsyNCw5IEBA
IGNsYXNzIFNhdHVyYXRpb25Qcm90ZWN0b3IgewogIHB1YmxpYzoKICAgZXhwbGljaXQgU2F0dXJh
dGlvblByb3RlY3RvcihBcG1EYXRhRHVtcGVyKiBhcG1fZGF0YV9kdW1wZXIpOwogCisgIFNhdHVy
YXRpb25Qcm90ZWN0b3IoQXBtRGF0YUR1bXBlciogYXBtX2RhdGFfZHVtcGVyLAorICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IGV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2RiKTsKKwogICAvLyBV
cGRhdGUgYW5kIHJldHVybiBtYXJnaW4gZXN0aW1hdGUuIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBj
YWxsZWQKICAgLy8gd2hlbmV2ZXIgYSBmcmFtZSBpcyByZWxpYWJseSBjbGFzc2lmaWVkIGFzICdz
cGVlY2gnLgogICAvLwpAQCAtNjAsNyArNjMsNyBAQCBjbGFzcyBTYXR1cmF0aW9uUHJvdGVjdG9y
IHsKIAogICBmbG9hdCBsYXN0X21hcmdpbl87CiAgIFBlYWtFbnZlbG9wZXIgcGVha19lbnZlbG9w
ZXJfOwotICBmbG9hdCBleHRyYV9zYXR1cmF0aW9uX21hcmdpbl9kYl87CisgIGNvbnN0IGZsb2F0
IGV4dHJhX3NhdHVyYXRpb25fbWFyZ2luX2RiXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3NpZ25hbF9jbGFzc2lmaWVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2FnYzIvc2lnbmFsX2NsYXNzaWZpZXIuY2MKaW5kZXggMGVjMzQxNDhiOTM1M2E4ODRl
MWMxYTIwOGYwNDNhZDk1ZmQ2MzZhZi4uODc3OGM0OTQyNjU3OTdhNGZmODhiNjIwZTc4MDRiOTQ0
YWY1M2Y1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvc2lnbmFsX2NsYXNzaWZpZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvc2lnbmFsX2NsYXNzaWZpZXIuY2MKQEAgLTE4LDcgKzE4LDcg
QEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9kb3duX3NhbXBsZXIu
aCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9ub2lzZV9zcGVjdHJ1
bV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2lu
Zy9hcG1fZGF0YV9kdW1wZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2lj
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
bmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVsLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuY2MKaW5kZXggZGVjZmFjZDBjMTgwMzc2
MDgzNTdjYjdkMTUzZDZkYzljY2Q4MTMxMi4uNTI5NzBkZmU2NzdjM2Q1ZTcxZWZjMmZkMmU4N2Fi
NGVjNGEzNTIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dpdGhfbGV2ZWwuY2MKQEAgLTExLDEwICsxMSwxMiBA
QAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVs
LmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8
Y21hdGg+CiAKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImNvbW1vbl9h
dWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWdjMi9ybm5fdmFkL2NvbW1vbi5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFk
X3dpdGhfbGV2ZWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVsLmgKaW5kZXggNjdh
MDBjZWQ2YzEwNjA5NjY5OTFkYjRiOGVjODNkNTljZGEwYTgyNS4uYjBhZDg2OGQ0Yjk3YzRhNmI1
MzYwZWNlMTM2M2FhMDU2YmUwNTE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYzIvdmFkX3dp
dGhfbGV2ZWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZlbC5oCkBAIC0xMSw3
ICsxMSw2IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX1ZBRF9XSVRI
X0xFVkVMX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19BR0MyX1ZBRF9XSVRI
X0xFVkVMX0hfCiAKLSNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgImNvbW1v
bl9hdWRpby9yZXNhbXBsZXIvaW5jbHVkZS9wdXNoX3Jlc2FtcGxlci5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvZmVhdHVyZXNfZXh0cmFjdGlvbi5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL3Jubl92YWQvcm5uLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZlbF91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVsX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5
YWVlNjJiYTlhYWI0MTBhZjFiZTJkMDE5NTg3ZmRjMmNmNTYzOWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYWdjMi92YWRfd2l0aF9sZXZlbF91bml0dGVzdC5jYwpAQCAtMCwwICsxLDQw
IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hZ2MyL3ZhZF93aXRoX2xldmVsLmgiCisKKyNpbmNsdWRlICJydGNfYmFzZS9ndW5p
dC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworVEVTVChBdXRv
bWF0aWNHYWluQ29udHJvbGxlcjJWYWRXaXRoTGV2ZWxFc3RpbWF0b3IsCisgICAgIFBlYWtMZXZl
bEdyZWF0ZXJUaGFuUm1zTGV2ZWwpIHsKKyAgY29uc3RleHByIHNpemVfdCBrU2FtcGxlUmF0ZUh6
ID0gODAwMDsKKworICAvLyAxMCBtcyBpbnB1dCBmcmFtZSwgY29uc3RhbnQgZXhjZXB0IGZvciBv
bmUgcGVhayB2YWx1ZS4KKyAgLy8gSGFuZGNyYWZ0ZWQgc28gdGhhdCB0aGUgYXZlcmFnZSBpcyBs
b3dlciB0aGFuIHRoZSBwZWFrIHZhbHVlLgorICBzdGQ6OmFycmF5PGZsb2F0LCBrU2FtcGxlUmF0
ZUh6IC8gMTAwPiBmcmFtZTsKKyAgZnJhbWUuZmlsbCgxMDAwLmYpOworICBmcmFtZVsxMF0gPSAy
MDAwLmY7CisgIGZsb2F0KiBjb25zdCBjaGFubmVsMCA9IGZyYW1lLmRhdGEoKTsKKyAgQXVkaW9G
cmFtZVZpZXc8ZmxvYXQ+IGZyYW1lX3ZpZXcoJmNoYW5uZWwwLCAxLCBmcmFtZS5zaXplKCkpOwor
CisgIC8vIENvbXB1dGUgYXVkaW8gZnJhbWUgbGV2ZWxzICh0aGUgVkFEIHJlc3VsdCBpcyBpZ25v
cmVkKS4KKyAgVmFkV2l0aExldmVsIHZhZF93aXRoX2xldmVsOworICBhdXRvIGxldmVsc19hbmRf
dmFkX3Byb2IgPSB2YWRfd2l0aF9sZXZlbC5BbmFseXplRnJhbWUoZnJhbWVfdmlldyk7CisKKyAg
Ly8gQ29tcGFyZSBwZWFrIGFuZCBSTVMgbGV2ZWxzLgorICBFWFBFQ1RfTFQobGV2ZWxzX2FuZF92
YWRfcHJvYi5zcGVlY2hfcm1zX2RiZnMsCisgICAgICAgICAgICBsZXZlbHNfYW5kX3ZhZF9wcm9i
LnNwZWVjaF9wZWFrX2RiZnMpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9hdWRpb19idWZmZXIuY2MKaW5kZXggZjE2M2Y1YTA3ZGVkMjg5MjMzZmU4ZmFhOGNh
MjlkZGEwNDFjYzZhNS4uMGMzOGE0ZmU4MmI4NTRkZTkwNmYwNmU2NzVmYzY5NDg0MmM5YjYxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVk
aW9fYnVmZmVyLmNjCkBAIC0xMCwxMSArMTAsMTMgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lu
Y2x1ZGUgPGNzdGRpbnQ+CisKICNpbmNsdWRlICJjb21tb25fYXVkaW8vY2hhbm5lbF9idWZmZXIu
aCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vaW5jbHVkZS9hdWRpb191dGlsLmgiCiAjaW5jbHVk
ZSAiY29tbW9uX2F1ZGlvL3Jlc2FtcGxlci9wdXNoX3NpbmNfcmVzYW1wbGVyLmgiCi0jaW5jbHVk
ZSAiY29tbW9uX2F1ZGlvL3NpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3Np
bmdfbGlicmFyeS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9jb21tb24u
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvc3BsaXR0aW5nX2ZpbHRlci5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZm
ZXIuaAppbmRleCBhZGUzZWVjMTNkYjJhMTczNzdkNGNlYmYwNzRiYTc3MmNjZmFjNTVhLi40Njk2
NDZlOGRiNGI2OGQ5ZmQ5NzQ4Mjg5ZjQ1YTNmMGRkZDM2NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYXVkaW9fYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5oCkBAIC0xMSwx
OCArMTEsMjEgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FVRElPX0JVRkZF
Ul9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQVVESU9fQlVGRkVSX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvL2F1ZGlvX2ZyYW1l
LmgiCiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2NoYW5uZWxfYnVmZmVyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9zcGxpdHRpbmdfZmlsdGVyLmgiCisjaW5j
bHVkZSAicnRjX2Jhc2UvZ3Rlc3RfcHJvZF91dGlsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
Ci1jbGFzcyBQdXNoU2luY1Jlc2FtcGxlcjsKIGNsYXNzIElGQ2hhbm5lbEJ1ZmZlcjsKK2NsYXNz
IFB1c2hTaW5jUmVzYW1wbGVyOworY2xhc3MgU3BsaXR0aW5nRmlsdGVyOwogCiBlbnVtIEJhbmQg
eyBrQmFuZDBUbzhrSHogPSAwLCBrQmFuZDhUbzE2a0h6ID0gMSwga0JhbmQxNlRvMjRrSHogPSAy
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGwuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ19pbXBsLmNjCmluZGV4IGI5MTUzZmEwOGI5MjA0MGE2
NmI4OGFiMmJmYWFiMjA5Yzk1ZWNiNzIuLjI5MzdjMDY4MGJmNWFjNjk5YjJjMjhmZjk2ODQxOTY4
ODM4MWYxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGwuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3NpbmdfaW1wbC5jYwpAQCAtMTAsMTUgKzEwLDE2
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2lu
Z19pbXBsLmgiCiAKLSNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2lu
Y2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
CisjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vYXVk
aW9fY29udmVydGVyLmgiCi0jaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2NoYW5uZWxfYnVmZmVyLmgi
CiAjaW5jbHVkZSAiY29tbW9uX2F1ZGlvL2luY2x1ZGUvYXVkaW9fdXRpbC5oIgotI2luY2x1ZGUg
ImNvbW1vbl9hdWRpby9zaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNzaW5n
X2xpYnJhcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjL2FlY19j
b3JlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FnYy9hZ2NfbWFuYWdl
cl9kaXJlY3QuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWdjMi9nYWlu
X2FwcGxpZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVm
ZmVyLmgiCkBAIC0yOCw2ICsyOSw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2dhaW5fY29udHJvbF9mb3JfZXhwZXJpbWVudGFsX2FnYy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xfaW1wbC5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyLmgiCisjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fZnJhbWVfdmlldy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sZXZlbF9lc3RpbWF0b3JfaW1wbC5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb3dfY3V0X2ZpbHRlci5oIgpAQCAt
MzcsMTAgKzM5LDkgQEAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2Vf
ZGV0ZWN0aW9uX2ltcGwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L3BsYXRmb3JtX2ZpbGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0Lmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCIKICNpbmNsdWRlICJydGNfYmFzZS90
aW1ldXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgogI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKQEAgLTExNSwyOSArMTE2LDYgQEAg
c3RhdGljIGNvbnN0IHNpemVfdCBrTWF4QWxsb3dlZFZhbHVlc09mU2FtcGxlc1BlckZyYW1lID0g
NDgwOwogLy8gVE9ETyhwZWFoKTogRGVjcmVhc2UgdGhpcyBvbmNlIHdlIHByb3Blcmx5IGhhbmRs
ZSBodWdlbHkgdW5iYWxhbmNlZAogLy8gcmV2ZXJzZSBhbmQgZm9yd2FyZCBjYWxsIG51bWJlcnMu
CiBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhOdW1GcmFtZXNUb0J1ZmZlciA9IDEwMDsKLQotY2xh
c3MgSGlnaFBhc3NGaWx0ZXJJbXBsIDogcHVibGljIEhpZ2hQYXNzRmlsdGVyIHsKLSBwdWJsaWM6
Ci0gIGV4cGxpY2l0IEhpZ2hQYXNzRmlsdGVySW1wbChBdWRpb1Byb2Nlc3NpbmdJbXBsKiBhcG0p
IDogYXBtXyhhcG0pIHt9Ci0gIH5IaWdoUGFzc0ZpbHRlckltcGwoKSBvdmVycmlkZSA9IGRlZmF1
bHQ7Ci0KLSAgLy8gSGlnaFBhc3NGaWx0ZXIgaW1wbGVtZW50YXRpb24uCi0gIGludCBFbmFibGUo
Ym9vbCBlbmFibGUpIG92ZXJyaWRlIHsKLSAgICBhcG1fLT5NdXRhdGVDb25maWcoW2VuYWJsZV0o
QXVkaW9Qcm9jZXNzaW5nOjpDb25maWcqIGNvbmZpZykgewotICAgICAgY29uZmlnLT5oaWdoX3Bh
c3NfZmlsdGVyLmVuYWJsZWQgPSBlbmFibGU7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gQXVkaW9Q
cm9jZXNzaW5nOjprTm9FcnJvcjsKLSAgfQotCi0gIGJvb2wgaXNfZW5hYmxlZCgpIGNvbnN0IG92
ZXJyaWRlIHsKLSAgICByZXR1cm4gYXBtXy0+R2V0Q29uZmlnKCkuaGlnaF9wYXNzX2ZpbHRlci5l
bmFibGVkOwotICB9Ci0KLSBwcml2YXRlOgotICBBdWRpb1Byb2Nlc3NpbmdJbXBsKiBhcG1fOwot
ICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNUT1JTKEhpZ2hQYXNzRmlsdGVySW1wbCk7
Ci19OwogfSAgLy8gbmFtZXNwYWNlCiAKIC8vIFRocm91Z2hvdXQgd2VicnRjLCBpdCdzIGFzc3Vt
ZWQgdGhhdCBzdWNjZXNzIGlzIHJlcHJlc2VudGVkIGJ5IHplcm8uCkBAIC0yNDksOCArMjI3LDYg
QEAgYm9vbCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpBcG1TdWJtb2R1bGVTdGF0ZXM6Okxvd0N1dEZp
bHRlcmluZ1JlcXVpcmVkKCkgY29uc3Qgewogc3RydWN0IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkFw
bVB1YmxpY1N1Ym1vZHVsZXMgewogICBBcG1QdWJsaWNTdWJtb2R1bGVzKCkge30KICAgLy8gQWNj
ZXNzZWQgZXh0ZXJuYWxseSBvZiBBUE0gd2l0aG91dCBhbnkgbG9jayBhY3F1aXJlZC4KLSAgc3Rk
Ojp1bmlxdWVfcHRyPEVjaG9DYW5jZWxsYXRpb25JbXBsPiBlY2hvX2NhbmNlbGxhdGlvbjsKLSAg
c3RkOjp1bmlxdWVfcHRyPEVjaG9Db250cm9sTW9iaWxlSW1wbD4gZWNob19jb250cm9sX21vYmls
ZTsKICAgc3RkOjp1bmlxdWVfcHRyPEdhaW5Db250cm9sSW1wbD4gZ2Fpbl9jb250cm9sOwogICBz
dGQ6OnVuaXF1ZV9wdHI8TGV2ZWxFc3RpbWF0b3JJbXBsPiBsZXZlbF9lc3RpbWF0b3I7CiAgIHN0
ZDo6dW5pcXVlX3B0cjxOb2lzZVN1cHByZXNzaW9uSW1wbD4gbm9pc2Vfc3VwcHJlc3Npb247CkBA
IC0yNzYsMTEgKzI1MiwxNCBAQCBzdHJ1Y3QgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6QXBtUHJpdmF0
ZVN1Ym1vZHVsZXMgewogICBzdGQ6OnVuaXF1ZV9wdHI8R2FpbkNvbnRyb2xsZXIyPiBnYWluX2Nv
bnRyb2xsZXIyOwogICBzdGQ6OnVuaXF1ZV9wdHI8TG93Q3V0RmlsdGVyPiBsb3dfY3V0X2ZpbHRl
cjsKICAgcnRjOjpzY29wZWRfcmVmcHRyPEVjaG9EZXRlY3Rvcj4gZWNob19kZXRlY3RvcjsKKyAg
c3RkOjp1bmlxdWVfcHRyPEVjaG9DYW5jZWxsYXRpb25JbXBsPiBlY2hvX2NhbmNlbGxhdGlvbjsK
ICAgc3RkOjp1bmlxdWVfcHRyPEVjaG9Db250cm9sPiBlY2hvX2NvbnRyb2xsZXI7CisgIHN0ZDo6
dW5pcXVlX3B0cjxFY2hvQ29udHJvbE1vYmlsZUltcGw+IGVjaG9fY29udHJvbF9tb2JpbGU7CiAg
IHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21Qcm9jZXNzaW5nPiBjYXB0dXJlX3Bvc3RfcHJvY2Vzc29y
OwogICBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tUHJvY2Vzc2luZz4gcmVuZGVyX3ByZV9wcm9jZXNz
b3I7CiAgIHN0ZDo6dW5pcXVlX3B0cjxHYWluQXBwbGllcj4gcHJlX2FtcGxpZmllcjsKICAgc3Rk
Ojp1bmlxdWVfcHRyPEN1c3RvbUF1ZGlvQW5hbHl6ZXI+IGNhcHR1cmVfYW5hbHl6ZXI7CisgIHN0
ZDo6dW5pcXVlX3B0cjxMZXZlbEVzdGltYXRvckltcGw+IG91dHB1dF9sZXZlbF9lc3RpbWF0b3I7
CiB9OwogCiBBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyOjpBdWRpb1Byb2Nlc3NpbmdCdWlsZGVyKCkg
PSBkZWZhdWx0OwpAQCAtMzUyLDcgKzMzMSw2IEBAIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkF1ZGlv
UHJvY2Vzc2luZ0ltcGwoCiAgICAgICByZW5kZXJfcnVudGltZV9zZXR0aW5nc18oa1J1bnRpbWVT
ZXR0aW5nUXVldWVTaXplKSwKICAgICAgIGNhcHR1cmVfcnVudGltZV9zZXR0aW5nc19lbnF1ZXVl
cl8oJmNhcHR1cmVfcnVudGltZV9zZXR0aW5nc18pLAogICAgICAgcmVuZGVyX3J1bnRpbWVfc2V0
dGluZ3NfZW5xdWV1ZXJfKCZyZW5kZXJfcnVudGltZV9zZXR0aW5nc18pLAotICAgICAgaGlnaF9w
YXNzX2ZpbHRlcl9pbXBsXyhuZXcgSGlnaFBhc3NGaWx0ZXJJbXBsKHRoaXMpKSwKICAgICAgIGVj
aG9fY29udHJvbF9mYWN0b3J5XyhzdGQ6Om1vdmUoZWNob19jb250cm9sX2ZhY3RvcnkpKSwKICAg
ICAgIHN1Ym1vZHVsZV9zdGF0ZXNfKCEhY2FwdHVyZV9wb3N0X3Byb2Nlc3NvciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICEhcmVuZGVyX3ByZV9wcm9jZXNzb3IsCkBAIC0zOTAsMTAgKzM2OCw2
IEBAIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkF1ZGlvUHJvY2Vzc2luZ0ltcGwoCiAgICAgY2FwdHVy
ZV9ub25sb2NrZWRfLmVjaG9fY29udHJvbGxlcl9lbmFibGVkID0KICAgICAgICAgc3RhdGljX2Nh
c3Q8Ym9vbD4oZWNob19jb250cm9sX2ZhY3RvcnlfKTsKIAotICAgIHB1YmxpY19zdWJtb2R1bGVz
Xy0+ZWNob19jYW5jZWxsYXRpb24ucmVzZXQoCi0gICAgICAgIG5ldyBFY2hvQ2FuY2VsbGF0aW9u
SW1wbCgmY3JpdF9yZW5kZXJfLCAmY3JpdF9jYXB0dXJlXykpOwotICAgIHB1YmxpY19zdWJtb2R1
bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS5yZXNldCgKLSAgICAgICAgbmV3IEVjaG9Db250cm9s
TW9iaWxlSW1wbCgmY3JpdF9yZW5kZXJfLCAmY3JpdF9jYXB0dXJlXykpOwogICAgIHB1YmxpY19z
dWJtb2R1bGVzXy0+Z2Fpbl9jb250cm9sLnJlc2V0KAogICAgICAgICBuZXcgR2FpbkNvbnRyb2xJ
bXBsKCZjcml0X3JlbmRlcl8sICZjcml0X2NhcHR1cmVfKSk7CiAgICAgcHVibGljX3N1Ym1vZHVs
ZXNfLT5sZXZlbF9lc3RpbWF0b3IucmVzZXQoCkBAIC00MTIsNiArMzg2LDggQEAgQXVkaW9Qcm9j
ZXNzaW5nSW1wbDo6QXVkaW9Qcm9jZXNzaW5nSW1wbCgKICAgICAgICAgICBuZXcgcnRjOjpSZWZD
b3VudGVkT2JqZWN0PFJlc2lkdWFsRWNob0RldGVjdG9yPigpOwogICAgIH0KIAorICAgIHByaXZh
dGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLnJlc2V0KG5ldyBFY2hvQ2FuY2VsbGF0
aW9uSW1wbCgpKTsKKyAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxl
LnJlc2V0KG5ldyBFY2hvQ29udHJvbE1vYmlsZUltcGwoKSk7CiAgICAgLy8gVE9ETyhhbGVzc2lv
Yik6IE1vdmUgdGhlIGluamVjdGVkIGdhaW4gY29udHJvbGxlciBvbmNlIGluamVjdGlvbiBpcwog
ICAgIC8vIGltcGxlbWVudGVkLgogICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmdhaW5fY29udHJv
bGxlcjIucmVzZXQobmV3IEdhaW5Db250cm9sbGVyMigpKTsKQEAgLTUzMCwxNiArNTA2LDE2IEBA
IGludCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpJbml0aWFsaXplTG9ja2VkKCkgewogICAgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdHNfLmFwaV9mb3JtYXQub3V0cHV0X3N0cmVhbSgpLm51bV9jaGFu
bmVscygpLAogICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHNfLmFwaV9mb3JtYXQub3V0cHV0
X3N0cmVhbSgpLm51bV9mcmFtZXMoKSkpOwogCi0gIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19j
YW5jZWxsYXRpb24tPkluaXRpYWxpemUoCisgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2Fu
Y2VsbGF0aW9uLT5Jbml0aWFsaXplKAogICAgICAgcHJvY19zYW1wbGVfcmF0ZV9oeigpLCBudW1f
cmV2ZXJzZV9jaGFubmVscygpLCBudW1fb3V0cHV0X2NoYW5uZWxzKCksCiAgICAgICBudW1fcHJv
Y19jaGFubmVscygpKTsKICAgQWxsb2NhdGVSZW5kZXJRdWV1ZSgpOwogCi0gIGludCBzdWNjZXNz
ID0gcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+ZW5hYmxlX21ldHJpY3Mo
dHJ1ZSk7CisgIGludCBzdWNjZXNzID0gcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxs
YXRpb24tPmVuYWJsZV9tZXRyaWNzKHRydWUpOwogICBSVENfRENIRUNLX0VRKDAsIHN1Y2Nlc3Mp
OwotICBzdWNjZXNzID0gcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+ZW5h
YmxlX2RlbGF5X2xvZ2dpbmcodHJ1ZSk7CisgIHN1Y2Nlc3MgPSBwcml2YXRlX3N1Ym1vZHVsZXNf
LT5lY2hvX2NhbmNlbGxhdGlvbi0+ZW5hYmxlX2RlbGF5X2xvZ2dpbmcodHJ1ZSk7CiAgIFJUQ19E
Q0hFQ0tfRVEoMCwgc3VjY2Vzcyk7Ci0gIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jb250cm9s
X21vYmlsZS0+SW5pdGlhbGl6ZSgKKyAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9s
X21vYmlsZS0+SW5pdGlhbGl6ZSgKICAgICAgIHByb2Nfc3BsaXRfc2FtcGxlX3JhdGVfaHooKSwg
bnVtX3JldmVyc2VfY2hhbm5lbHMoKSwKICAgICAgIG51bV9vdXRwdXRfY2hhbm5lbHMoKSk7CiAK
QEAgLTY2MiwxOCArNjM4LDE4IEBAIGludCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpJbml0aWFsaXpl
TG9ja2VkKGNvbnN0IFByb2Nlc3NpbmdDb25maWcmIGNvbmZpZykgewogfQogCiB2b2lkIEF1ZGlv
UHJvY2Vzc2luZ0ltcGw6OkFwcGx5Q29uZmlnKGNvbnN0IEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmln
JiBjb25maWcpIHsKLSAgY29uZmlnXyA9IGNvbmZpZzsKLQogICAvLyBSdW4gaW4gYSBzaW5nbGUt
dGhyZWFkZWQgbWFubmVyIHdoZW4gYXBwbHlpbmcgdGhlIHNldHRpbmdzLgogICBydGM6OkNyaXRT
Y29wZSBjc19yZW5kZXIoJmNyaXRfcmVuZGVyXyk7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1
cmUoJmNyaXRfY2FwdHVyZV8pOwogCi0gIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxs
YXRpb24tPkVuYWJsZSgKKyAgY29uZmlnXyA9IGNvbmZpZzsKKworICBwcml2YXRlX3N1Ym1vZHVs
ZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+RW5hYmxlKAogICAgICAgY29uZmlnXy5lY2hvX2NhbmNl
bGxlci5lbmFibGVkICYmICFjb25maWdfLmVjaG9fY2FuY2VsbGVyLm1vYmlsZV9tb2RlKTsKLSAg
cHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5FbmFibGUoCisgIHByaXZh
dGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUtPkVuYWJsZSgKICAgICAgIGNvbmZp
Z18uZWNob19jYW5jZWxsZXIuZW5hYmxlZCAmJiBjb25maWdfLmVjaG9fY2FuY2VsbGVyLm1vYmls
ZV9tb2RlKTsKIAotICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zZXRf
c3VwcHJlc3Npb25fbGV2ZWwoCisgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0
aW9uLT5zZXRfc3VwcHJlc3Npb25fbGV2ZWwoCiAgICAgICBjb25maWcuZWNob19jYW5jZWxsZXIu
bGVnYWN5X21vZGVyYXRlX3N1cHByZXNzaW9uX2xldmVsCiAgICAgICAgICAgPyBFY2hvQ2FuY2Vs
bGF0aW9uSW1wbDo6U3VwcHJlc3Npb25MZXZlbDo6a01vZGVyYXRlU3VwcHJlc3Npb24KICAgICAg
ICAgICA6IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpTdXBwcmVzc2lvbkxldmVsOjprSGlnaFN1cHBy
ZXNzaW9uKTsKQEAgLTY5OCw2ICs2NzQsMTMgQEAgdm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpB
cHBseUNvbmZpZyhjb25zdCBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZyYgY29uZmlnKSB7CiAgICAg
ICAgICAgICAgICAgICAgPDwgY29uZmlnXy5nYWluX2NvbnRyb2xsZXIyLmVuYWJsZWQ7CiAgIFJU
Q19MT0coTFNfSU5GTykgPDwgIlByZS1hbXBsaWZpZXIgYWN0aXZhdGVkOiAiCiAgICAgICAgICAg
ICAgICAgICAgPDwgY29uZmlnXy5wcmVfYW1wbGlmaWVyLmVuYWJsZWQ7CisKKyAgaWYgKGNvbmZp
Z18ubGV2ZWxfZXN0aW1hdGlvbi5lbmFibGVkICYmCisgICAgICAhcHJpdmF0ZV9zdWJtb2R1bGVz
Xy0+b3V0cHV0X2xldmVsX2VzdGltYXRvcikgeworICAgIHByaXZhdGVfc3VibW9kdWxlc18tPm91
dHB1dF9sZXZlbF9lc3RpbWF0b3IucmVzZXQoCisgICAgICAgIG5ldyBMZXZlbEVzdGltYXRvcklt
cGwoJmNyaXRfY2FwdHVyZV8pKTsKKyAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5vdXRwdXRfbGV2
ZWxfZXN0aW1hdG9yLT5FbmFibGUodHJ1ZSk7CisgIH0KIH0KIAogdm9pZCBBdWRpb1Byb2Nlc3Np
bmdJbXBsOjpTZXRFeHRyYU9wdGlvbnMoY29uc3Qgd2VicnRjOjpDb25maWcmIGNvbmZpZykgewpA
QCAtNzA1LDcgKzY4OCw3IEBAIHZvaWQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6U2V0RXh0cmFPcHRp
b25zKGNvbnN0IHdlYnJ0Yzo6Q29uZmlnJiBjb25maWcpIHsKICAgcnRjOjpDcml0U2NvcGUgY3Nf
cmVuZGVyKCZjcml0X3JlbmRlcl8pOwogICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKCZjcml0
X2NhcHR1cmVfKTsKIAotICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5T
ZXRFeHRyYU9wdGlvbnMoY29uZmlnKTsKKyAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5j
ZWxsYXRpb24tPlNldEV4dHJhT3B0aW9ucyhjb25maWcpOwogCiAgIGlmIChjYXB0dXJlXy50cmFu
c2llbnRfc3VwcHJlc3Nvcl9lbmFibGVkICE9CiAgICAgICBjb25maWcuR2V0PEV4cGVyaW1lbnRh
bE5zPigpLmVuYWJsZWQpIHsKQEAgLTEwODIsMTIgKzEwNjUsMTIgQEAgdm9pZCBBdWRpb1Byb2Nl
c3NpbmdJbXBsOjpBbGxvY2F0ZVJlbmRlclF1ZXVlKCkgewogdm9pZCBBdWRpb1Byb2Nlc3NpbmdJ
bXBsOjpFbXB0eVF1ZXVlZFJlbmRlckF1ZGlvKCkgewogICBydGM6OkNyaXRTY29wZSBjc19jYXB0
dXJlKCZjcml0X2NhcHR1cmVfKTsKICAgd2hpbGUgKGFlY19yZW5kZXJfc2lnbmFsX3F1ZXVlXy0+
UmVtb3ZlKCZhZWNfY2FwdHVyZV9xdWV1ZV9idWZmZXJfKSkgewotICAgIHB1YmxpY19zdWJtb2R1
bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPlByb2Nlc3NSZW5kZXJBdWRpbygKKyAgICBwcml2YXRl
X3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+UHJvY2Vzc1JlbmRlckF1ZGlvKAogICAg
ICAgICBhZWNfY2FwdHVyZV9xdWV1ZV9idWZmZXJfKTsKICAgfQogCiAgIHdoaWxlIChhZWNtX3Jl
bmRlcl9zaWduYWxfcXVldWVfLT5SZW1vdmUoJmFlY21fY2FwdHVyZV9xdWV1ZV9idWZmZXJfKSkg
ewotICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+UHJvY2Vzc1Jl
bmRlckF1ZGlvKAorICAgIHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUt
PlByb2Nlc3NSZW5kZXJBdWRpbygKICAgICAgICAgYWVjbV9jYXB0dXJlX3F1ZXVlX2J1ZmZlcl8p
OwogICB9CiAKQEAgLTExMDksOSArMTA5Miw2IEBAIGludCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpQ
cm9jZXNzU3RyZWFtKEF1ZGlvRnJhbWUqIGZyYW1lKSB7CiAgICAgLy8gQWNxdWlyZSB0aGUgY2Fw
dHVyZSBsb2NrIGluIG9yZGVyIHRvIHNhZmVseSBjYWxsIHRoZSBmdW5jdGlvbgogICAgIC8vIHRo
YXQgcmV0cmlldmVzIHRoZSByZW5kZXIgc2lkZSBkYXRhLiBUaGlzIGZ1bmN0aW9uIGFjY2Vzc2Vz
IEFQTQogICAgIC8vIGdldHRlcnMgdGhhdCBuZWVkIHRoZSBjYXB0dXJlIGxvY2sgaGVsZCB3aGVu
IGJlaW5nIGNhbGxlZC4KLSAgICAvLyBUaGUgbG9jayBuZWVkcyB0byBiZSByZWxlYXNlZCBhcwot
ICAgIC8vIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+aXNfZW5hYmxl
ZCgpIGFjcXVpcmVzIHRoaXMgbG9jawotICAgIC8vIGFzIHdlbGwuCiAgICAgcnRjOjpDcml0U2Nv
cGUgY3NfY2FwdHVyZSgmY3JpdF9jYXB0dXJlXyk7CiAgICAgRW1wdHlRdWV1ZWRSZW5kZXJBdWRp
bygpOwogICB9CkBAIC0xMTgwLDggKzExNjAsOCBAQCBpbnQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6
UHJvY2Vzc0NhcHR1cmVTdHJlYW1Mb2NrZWQoKSB7CiAgIC8vIEVuc3VyZSB0aGF0IG5vdCBib3Ro
IHRoZSBBRUMgYW5kIEFFQ00gYXJlIGFjdGl2ZSBhdCB0aGUgc2FtZSB0aW1lLgogICAvLyBUT0RP
KHBlYWgpOiBTaW1wbGlmeSBvbmNlIHRoZSBwdWJsaWMgQVBJIEVuYWJsZSBmdW5jdGlvbnMgZm9y
IHRoZXNlCiAgIC8vIGFyZSBtb3ZlZCB0byBBUE0uCi0gIFJUQ19EQ0hFQ0soIShwdWJsaWNfc3Vi
bW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCkgJiYKLSAgICAgICAgICAg
ICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+aXNfZW5hYmxlZCgp
KSk7CisgIFJUQ19EQ0hFQ0soIShwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlv
bi0+aXNfZW5hYmxlZCgpICYmCisgICAgICAgICAgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5l
Y2hvX2NvbnRyb2xfbW9iaWxlLT5pc19lbmFibGVkKCkpKTsKIAogICBNYXliZVVwZGF0ZUhpc3Rv
Z3JhbXMoKTsKIApAQCAtMTI2NSw3ICsxMjQ1LDcgQEAgaW50IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6
OlByb2Nlc3NDYXB0dXJlU3RyZWFtTG9ja2VkKCkgewogCiAgIC8vIEVuc3VyZSB0aGF0IHRoZSBz
dHJlYW0gZGVsYXkgd2FzIHNldCBiZWZvcmUgdGhlIGNhbGwgdG8gdGhlCiAgIC8vIEFFQyBQcm9j
ZXNzQ2FwdHVyZUF1ZGlvIGZ1bmN0aW9uLgotICBpZiAocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hv
X2NhbmNlbGxhdGlvbi0+aXNfZW5hYmxlZCgpICYmCisgIGlmIChwcml2YXRlX3N1Ym1vZHVsZXNf
LT5lY2hvX2NhbmNlbGxhdGlvbi0+aXNfZW5hYmxlZCgpICYmCiAgICAgICAhcHJpdmF0ZV9zdWJt
b2R1bGVzXy0+ZWNob19jb250cm9sbGVyICYmICF3YXNfc3RyZWFtX2RlbGF5X3NldCgpKSB7CiAg
ICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a1N0cmVhbVBhcmFtZXRlck5vdFNldEVycm9yOwog
ICB9CkBAIC0xMjgxLDExICsxMjYxLDExIEBAIGludCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpQcm9j
ZXNzQ2FwdHVyZVN0cmVhbUxvY2tlZCgpIHsKICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hv
X2NvbnRyb2xsZXItPlByb2Nlc3NDYXB0dXJlKAogICAgICAgICBjYXB0dXJlX2J1ZmZlciwgY2Fw
dHVyZV8uZWNob19wYXRoX2dhaW5fY2hhbmdlKTsKICAgfSBlbHNlIHsKLSAgICBSRVRVUk5fT05f
RVJSKHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPlByb2Nlc3NDYXB0dXJl
QXVkaW8oCisgICAgUkVUVVJOX09OX0VSUihwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNl
bGxhdGlvbi0+UHJvY2Vzc0NhcHR1cmVBdWRpbygKICAgICAgICAgY2FwdHVyZV9idWZmZXIsIHN0
cmVhbV9kZWxheV9tcygpKSk7CiAgIH0KIAotICBpZiAocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hv
X2NvbnRyb2xfbW9iaWxlLT5pc19lbmFibGVkKCkgJiYKKyAgaWYgKHByaXZhdGVfc3VibW9kdWxl
c18tPmVjaG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJsZWQoKSAmJgogICAgICAgcHVibGljX3N1
Ym1vZHVsZXNfLT5ub2lzZV9zdXBwcmVzc2lvbi0+aXNfZW5hYmxlZCgpKSB7CiAgICAgY2FwdHVy
ZV9idWZmZXItPkNvcHlMb3dQYXNzVG9SZWZlcmVuY2UoKTsKICAgfQpAQCAtMTI5MywxNCArMTI3
MywxNCBAQCBpbnQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6UHJvY2Vzc0NhcHR1cmVTdHJlYW1Mb2Nr
ZWQoKSB7CiAKICAgLy8gRW5zdXJlIHRoYXQgdGhlIHN0cmVhbSBkZWxheSB3YXMgc2V0IGJlZm9y
ZSB0aGUgY2FsbCB0byB0aGUKICAgLy8gQUVDTSBQcm9jZXNzQ2FwdHVyZUF1ZGlvIGZ1bmN0aW9u
LgotICBpZiAocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5pc19lbmFi
bGVkKCkgJiYKKyAgaWYgKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbF9tb2JpbGUt
PmlzX2VuYWJsZWQoKSAmJgogICAgICAgIXdhc19zdHJlYW1fZGVsYXlfc2V0KCkpIHsKICAgICBy
ZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprU3RyZWFtUGFyYW1ldGVyTm90U2V0RXJyb3I7CiAgIH0K
IAogICBpZiAoIShwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xsZXIgfHwKLSAgICAg
ICAgcHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+aXNfZW5hYmxlZCgpKSkg
ewotICAgIFJFVFVSTl9PTl9FUlIocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9i
aWxlLT5Qcm9jZXNzQ2FwdHVyZUF1ZGlvKAorICAgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5l
Y2hvX2NhbmNlbGxhdGlvbi0+aXNfZW5hYmxlZCgpKSkgeworICAgIFJFVFVSTl9PTl9FUlIocHJp
dmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+UHJvY2Vzc0NhcHR1cmVBdWRp
bygKICAgICAgICAgY2FwdHVyZV9idWZmZXIsIHN0cmVhbV9kZWxheV9tcygpKSk7CiAgIH0KIApA
QCAtMTMxNSw3ICsxMjk1LDcgQEAgaW50IEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OlByb2Nlc3NDYXB0
dXJlU3RyZWFtTG9ja2VkKCkgewogICB9CiAgIFJFVFVSTl9PTl9FUlIocHVibGljX3N1Ym1vZHVs
ZXNfLT5nYWluX2NvbnRyb2wtPlByb2Nlc3NDYXB0dXJlQXVkaW8oCiAgICAgICBjYXB0dXJlX2J1
ZmZlciwKLSAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPnN0cmVh
bV9oYXNfZWNobygpKSk7CisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxh
dGlvbi0+c3RyZWFtX2hhc19lY2hvKCkpKTsKIAogICBpZiAoc3VibW9kdWxlX3N0YXRlc18uQ2Fw
dHVyZU11bHRpQmFuZFByb2Nlc3NpbmdBY3RpdmUoKSAmJgogICAgICAgU2FtcGxlUmF0ZVN1cHBv
cnRzTXVsdGlCYW5kKApAQCAtMTM2NCw2ICsxMzQ0LDEzIEBAIGludCBBdWRpb1Byb2Nlc3NpbmdJ
bXBsOjpQcm9jZXNzQ2FwdHVyZVN0cmVhbUxvY2tlZCgpIHsKIAogICAvLyBUaGUgbGV2ZWwgZXN0
aW1hdG9yIG9wZXJhdGVzIG9uIHRoZSByZWNvbWJpbmVkIGRhdGEuCiAgIHB1YmxpY19zdWJtb2R1
bGVzXy0+bGV2ZWxfZXN0aW1hdG9yLT5Qcm9jZXNzU3RyZWFtKGNhcHR1cmVfYnVmZmVyKTsKKyAg
aWYgKGNvbmZpZ18ubGV2ZWxfZXN0aW1hdGlvbi5lbmFibGVkKSB7CisgICAgcHJpdmF0ZV9zdWJt
b2R1bGVzXy0+b3V0cHV0X2xldmVsX2VzdGltYXRvci0+UHJvY2Vzc1N0cmVhbShjYXB0dXJlX2J1
ZmZlcik7CisgICAgY2FwdHVyZV8uc3RhdHMub3V0cHV0X3Jtc19kYmZzID0KKyAgICAgICAgcHJp
dmF0ZV9zdWJtb2R1bGVzXy0+b3V0cHV0X2xldmVsX2VzdGltYXRvci0+Uk1TKCk7CisgIH0gZWxz
ZSB7CisgICAgY2FwdHVyZV8uc3RhdHMub3V0cHV0X3Jtc19kYmZzID0gYWJzbDo6bnVsbG9wdDsK
KyAgfQogCiAgIGNhcHR1cmVfb3V0cHV0X3Jtc18uQW5hbHl6ZShydGM6OkFycmF5Vmlldzxjb25z
dCBpbnQxNl90PigKICAgICAgIGNhcHR1cmVfYnVmZmVyLT5jaGFubmVsc19jb25zdCgpWzBdLApA
QCAtMTYxMywxMTIgKzE2MDAsNTIgQEAgdm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpEZXRhY2hQ
bGF5b3V0QXVkaW9HZW5lcmF0b3IoKSB7CiAgIC8vIERlbGV0ZSBhdWRpbyBnZW5lcmF0b3IsIGlm
IG9uZSBpcyBhdHRhY2hlZC4KIH0KIAotQXVkaW9Qcm9jZXNzaW5nOjpBdWRpb1Byb2Nlc3NpbmdT
dGF0aXN0aWNzOjpBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzKCkgewotICByZXNpZHVhbF9lY2hv
X3JldHVybl9sb3NzLlNldCgtMTAwLjBmLCAtMTAwLjBmLCAtMTAwLjBmLCAtMTAwLjBmKTsKLSAg
ZWNob19yZXR1cm5fbG9zcy5TZXQoLTEwMC4wZiwgLTEwMC4wZiwgLTEwMC4wZiwgLTEwMC4wZik7
Ci0gIGVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQuU2V0KC0xMDAuMGYsIC0xMDAuMGYsIC0x
MDAuMGYsIC0xMDAuMGYpOwotICBhX25scC5TZXQoLTEwMC4wZiwgLTEwMC4wZiwgLTEwMC4wZiwg
LTEwMC4wZik7Ci19Ci0KLUF1ZGlvUHJvY2Vzc2luZzo6QXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGlj
czo6QXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljcygKLSAgICBjb25zdCBBdWRpb1Byb2Nlc3NpbmdT
dGF0aXN0aWNzJiBvdGhlcikgPSBkZWZhdWx0OwotCi1BdWRpb1Byb2Nlc3Npbmc6OkF1ZGlvUHJv
Y2Vzc2luZ1N0YXRpc3RpY3M6On5BdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzKCkgPQotICAgIGRl
ZmF1bHQ7Ci0KLS8vIFRPRE8oaXZvYyk6IFJlbW92ZSB0aGlzIHdoZW4gR2V0U3RhdGlzdGljcygp
IGJlY29tZXMgcHVyZSB2aXJ0dWFsLgotQXVkaW9Qcm9jZXNzaW5nOjpBdWRpb1Byb2Nlc3NpbmdT
dGF0aXN0aWNzIEF1ZGlvUHJvY2Vzc2luZzo6R2V0U3RhdGlzdGljcygpCi0gICAgY29uc3Qgewot
ICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljcygpOwotfQotCi0vLyBUT0RPKGl2b2Mp
OiBSZW1vdmUgdGhpcyB3aGVuIEdldFN0YXRpc3RpY3MoKSBiZWNvbWVzIHB1cmUgdmlydHVhbC4K
LUF1ZGlvUHJvY2Vzc2luZ1N0YXRzIEF1ZGlvUHJvY2Vzc2luZzo6R2V0U3RhdGlzdGljcygKK0F1
ZGlvUHJvY2Vzc2luZ1N0YXRzIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkdldFN0YXRpc3RpY3MoCiAg
ICAgYm9vbCBoYXNfcmVtb3RlX3RyYWNrcykgY29uc3QgewotICByZXR1cm4gQXVkaW9Qcm9jZXNz
aW5nU3RhdHMoKTsKLX0KLQotQXVkaW9Qcm9jZXNzaW5nOjpBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0
aWNzIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkdldFN0YXRpc3RpY3MoKQotICAgIGNvbnN0IHsKLSAg
QXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljcyBzdGF0czsKKyAgcnRjOjpDcml0U2NvcGUgY3NfY2Fw
dHVyZSgmY3JpdF9jYXB0dXJlXyk7CisgIGlmICghaGFzX3JlbW90ZV90cmFja3MpIHsKKyAgICBy
ZXR1cm4gY2FwdHVyZV8uc3RhdHM7CisgIH0KKyAgQXVkaW9Qcm9jZXNzaW5nU3RhdHMgc3RhdHMg
PSBjYXB0dXJlXy5zdGF0czsKICAgRWNob0NhbmNlbGxhdGlvbkltcGw6Ok1ldHJpY3MgbWV0cmlj
czsKICAgaWYgKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbGxlcikgewotICAgIHJ0
Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoJmNyaXRfY2FwdHVyZV8pOwogICAgIGF1dG8gZWNfbWV0
cmljcyA9IHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY29udHJvbGxlci0+R2V0TWV0cmljcygp
OwotICAgIGZsb2F0IGVybCA9IHN0YXRpY19jYXN0PGZsb2F0PihlY19tZXRyaWNzLmVjaG9fcmV0
dXJuX2xvc3MpOwotICAgIGZsb2F0IGVybGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oZWNfbWV0cmlj
cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50KTsKLSAgICAvLyBJbnN0YW50IHZhbHVlIHdp
bGwgYWxzbyBiZSB1c2VkIGZvciBtaW4sIG1heCBhbmQgYXZlcmFnZS4KLSAgICBzdGF0cy5lY2hv
X3JldHVybl9sb3NzLlNldChlcmwsIGVybCwgZXJsLCBlcmwpOwotICAgIHN0YXRzLmVjaG9fcmV0
dXJuX2xvc3NfZW5oYW5jZW1lbnQuU2V0KGVybGUsIGVybGUsIGVybGUsIGVybGUpOwotICB9IGVs
c2UgaWYgKHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPkdldE1ldHJpY3Mo
Jm1ldHJpY3MpID09CisgICAgc3RhdHMuZWNob19yZXR1cm5fbG9zcyA9IGVjX21ldHJpY3MuZWNo
b19yZXR1cm5fbG9zczsKKyAgICBzdGF0cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50ID0K
KyAgICAgICAgZWNfbWV0cmljcy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50OworICAgIHN0
YXRzLmRlbGF5X21zID0gZWNfbWV0cmljcy5kZWxheV9tczsKKyAgfSBlbHNlIGlmIChwcml2YXRl
X3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+R2V0TWV0cmljcygmbWV0cmljcykgPT0K
ICAgICAgICAgICAgICBFcnJvcjo6a05vRXJyb3IpIHsKLSAgICBzdGF0cy5hX25scC5TZXQobWV0
cmljcy5hX25scCk7Ci0gICAgc3RhdHMuZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbiA9IG1ldHJp
Y3MuZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbjsKLSAgICBzdGF0cy5lY2hvX3JldHVybl9sb3Nz
LlNldChtZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3MpOwotICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xv
c3NfZW5oYW5jZW1lbnQuU2V0KAotICAgICAgICBtZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3NfZW5o
YW5jZW1lbnQpOwotICAgIHN0YXRzLnJlc2lkdWFsX2VjaG9fcmV0dXJuX2xvc3MuU2V0KG1ldHJp
Y3MucmVzaWR1YWxfZWNob19yZXR1cm5fbG9zcyk7CisgICAgaWYgKG1ldHJpY3MuZGl2ZXJnZW50
X2ZpbHRlcl9mcmFjdGlvbiAhPSAtMS4wZikgeworICAgICAgc3RhdHMuZGl2ZXJnZW50X2ZpbHRl
cl9mcmFjdGlvbiA9CisgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPihtZXRyaWNzLmRp
dmVyZ2VudF9maWx0ZXJfZnJhY3Rpb24pOworICAgIH0KKyAgICBpZiAobWV0cmljcy5lY2hvX3Jl
dHVybl9sb3NzLmluc3RhbnQgIT0gLTEwMCkgeworICAgICAgc3RhdHMuZWNob19yZXR1cm5fbG9z
cyA9CisgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPihtZXRyaWNzLmVjaG9fcmV0dXJu
X2xvc3MuaW5zdGFudCk7CisgICAgfQorICAgIGlmIChtZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3Nf
ZW5oYW5jZW1lbnQuaW5zdGFudCAhPSAtMTAwKSB7CisgICAgICBzdGF0cy5lY2hvX3JldHVybl9s
b3NzX2VuaGFuY2VtZW50ID0KKyAgICAgICAgICBhYnNsOjpvcHRpb25hbDxkb3VibGU+KG1ldHJp
Y3MuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudC5pbnN0YW50KTsKKyAgICB9CiAgIH0KLSAg
ewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoJmNyaXRfY2FwdHVyZV8pOworICBpZiAo
Y29uZmlnXy5yZXNpZHVhbF9lY2hvX2RldGVjdG9yLmVuYWJsZWQpIHsKICAgICBSVENfRENIRUNL
KHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fZGV0ZWN0b3IpOwogICAgIGF1dG8gZWRfbWV0cmlj
cyA9IHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fZGV0ZWN0b3ItPkdldE1ldHJpY3MoKTsKICAg
ICBzdGF0cy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2QgPSBlZF9tZXRyaWNzLmVjaG9fbGlrZWxp
aG9vZDsKICAgICBzdGF0cy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2RfcmVjZW50X21heCA9CiAg
ICAgICAgIGVkX21ldHJpY3MuZWNob19saWtlbGlob29kX3JlY2VudF9tYXg7CiAgIH0KLSAgcHVi
bGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+R2V0RGVsYXlNZXRyaWNzKAotICAg
ICAgJnN0YXRzLmRlbGF5X21lZGlhbiwgJnN0YXRzLmRlbGF5X3N0YW5kYXJkX2RldmlhdGlvbiwK
LSAgICAgICZzdGF0cy5mcmFjdGlvbl9wb29yX2RlbGF5cyk7Ci0gIHJldHVybiBzdGF0czsKLX0K
LQotQXVkaW9Qcm9jZXNzaW5nU3RhdHMgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6R2V0U3RhdGlzdGlj
cygKLSAgICBib29sIGhhc19yZW1vdGVfdHJhY2tzKSBjb25zdCB7Ci0gIEF1ZGlvUHJvY2Vzc2lu
Z1N0YXRzIHN0YXRzOwotICBpZiAoaGFzX3JlbW90ZV90cmFja3MpIHsKLSAgICBFY2hvQ2FuY2Vs
bGF0aW9uSW1wbDo6TWV0cmljcyBtZXRyaWNzOwotICAgIGlmIChwcml2YXRlX3N1Ym1vZHVsZXNf
LT5lY2hvX2NvbnRyb2xsZXIpIHsKLSAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoJmNy
aXRfY2FwdHVyZV8pOwotICAgICAgYXV0byBlY19tZXRyaWNzID0gcHJpdmF0ZV9zdWJtb2R1bGVz
Xy0+ZWNob19jb250cm9sbGVyLT5HZXRNZXRyaWNzKCk7Ci0gICAgICBzdGF0cy5lY2hvX3JldHVy
bl9sb3NzID0gZWNfbWV0cmljcy5lY2hvX3JldHVybl9sb3NzOwotICAgICAgc3RhdHMuZWNob19y
ZXR1cm5fbG9zc19lbmhhbmNlbWVudCA9Ci0gICAgICAgICAgZWNfbWV0cmljcy5lY2hvX3JldHVy
bl9sb3NzX2VuaGFuY2VtZW50OwotICAgICAgc3RhdHMuZGVsYXlfbXMgPSBlY19tZXRyaWNzLmRl
bGF5X21zOwotICAgIH0gZWxzZSBpZiAocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxh
dGlvbi0+R2V0TWV0cmljcygmbWV0cmljcykgPT0KLSAgICAgICAgICAgICAgIEVycm9yOjprTm9F
cnJvcikgewotICAgICAgaWYgKG1ldHJpY3MuZGl2ZXJnZW50X2ZpbHRlcl9mcmFjdGlvbiAhPSAt
MS4wZikgewotICAgICAgICBzdGF0cy5kaXZlcmdlbnRfZmlsdGVyX2ZyYWN0aW9uID0KLSAgICAg
ICAgICAgIGFic2w6Om9wdGlvbmFsPGRvdWJsZT4obWV0cmljcy5kaXZlcmdlbnRfZmlsdGVyX2Zy
YWN0aW9uKTsKLSAgICAgIH0KLSAgICAgIGlmIChtZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3MuaW5z
dGFudCAhPSAtMTAwKSB7Ci0gICAgICAgIHN0YXRzLmVjaG9fcmV0dXJuX2xvc3MgPQotICAgICAg
ICAgICAgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPihtZXRyaWNzLmVjaG9fcmV0dXJuX2xvc3MuaW5z
dGFudCk7Ci0gICAgICB9Ci0gICAgICBpZiAobWV0cmljcy5lY2hvX3JldHVybl9sb3NzX2VuaGFu
Y2VtZW50Lmluc3RhbnQgIT0gLTEwMCkgewotICAgICAgICBzdGF0cy5lY2hvX3JldHVybl9sb3Nz
X2VuaGFuY2VtZW50ID0gYWJzbDo6b3B0aW9uYWw8ZG91YmxlPigKLSAgICAgICAgICAgIG1ldHJp
Y3MuZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudC5pbnN0YW50KTsKLSAgICAgIH0KKyAgaW50
IGRlbGF5X21lZGlhbiwgZGVsYXlfc3RkOworICBmbG9hdCBmcmFjdGlvbl9wb29yX2RlbGF5czsK
KyAgaWYgKHByaXZhdGVfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5HZXREZWxheU1l
dHJpY3MoCisgICAgICAgICAgJmRlbGF5X21lZGlhbiwgJmRlbGF5X3N0ZCwgJmZyYWN0aW9uX3Bv
b3JfZGVsYXlzKSA9PQorICAgICAgRXJyb3I6OmtOb0Vycm9yKSB7CisgICAgaWYgKGRlbGF5X21l
ZGlhbiA+PSAwKSB7CisgICAgICBzdGF0cy5kZWxheV9tZWRpYW5fbXMgPSBhYnNsOjpvcHRpb25h
bDxpbnQzMl90PihkZWxheV9tZWRpYW4pOwogICAgIH0KLSAgICBpZiAoY29uZmlnXy5yZXNpZHVh
bF9lY2hvX2RldGVjdG9yLmVuYWJsZWQpIHsKLSAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1
cmUoJmNyaXRfY2FwdHVyZV8pOwotICAgICAgUlRDX0RDSEVDSyhwcml2YXRlX3N1Ym1vZHVsZXNf
LT5lY2hvX2RldGVjdG9yKTsKLSAgICAgIGF1dG8gZWRfbWV0cmljcyA9IHByaXZhdGVfc3VibW9k
dWxlc18tPmVjaG9fZGV0ZWN0b3ItPkdldE1ldHJpY3MoKTsKLSAgICAgIHN0YXRzLnJlc2lkdWFs
X2VjaG9fbGlrZWxpaG9vZCA9IGVkX21ldHJpY3MuZWNob19saWtlbGlob29kOwotICAgICAgc3Rh
dHMucmVzaWR1YWxfZWNob19saWtlbGlob29kX3JlY2VudF9tYXggPQotICAgICAgICAgIGVkX21l
dHJpY3MuZWNob19saWtlbGlob29kX3JlY2VudF9tYXg7Ci0gICAgfQotICAgIGludCBkZWxheV9t
ZWRpYW4sIGRlbGF5X3N0ZDsKLSAgICBmbG9hdCBmcmFjdGlvbl9wb29yX2RlbGF5czsKLSAgICBp
ZiAocHVibGljX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+R2V0RGVsYXlNZXRyaWNz
KAotICAgICAgICAgICAgJmRlbGF5X21lZGlhbiwgJmRlbGF5X3N0ZCwgJmZyYWN0aW9uX3Bvb3Jf
ZGVsYXlzKSA9PQotICAgICAgICBFcnJvcjo6a05vRXJyb3IpIHsKLSAgICAgIGlmIChkZWxheV9t
ZWRpYW4gPj0gMCkgewotICAgICAgICBzdGF0cy5kZWxheV9tZWRpYW5fbXMgPSBhYnNsOjpvcHRp
b25hbDxpbnQzMl90PihkZWxheV9tZWRpYW4pOwotICAgICAgfQotICAgICAgaWYgKGRlbGF5X3N0
ZCA+PSAwKSB7Ci0gICAgICAgIHN0YXRzLmRlbGF5X3N0YW5kYXJkX2RldmlhdGlvbl9tcyA9IGFi
c2w6Om9wdGlvbmFsPGludDMyX3Q+KGRlbGF5X3N0ZCk7Ci0gICAgICB9CisgICAgaWYgKGRlbGF5
X3N0ZCA+PSAwKSB7CisgICAgICBzdGF0cy5kZWxheV9zdGFuZGFyZF9kZXZpYXRpb25fbXMgPSBh
YnNsOjpvcHRpb25hbDxpbnQzMl90PihkZWxheV9zdGQpOwogICAgIH0KICAgfQogICByZXR1cm4g
c3RhdHM7CkBAIC0xNzMxLDEwICsxNjU4LDYgQEAgR2FpbkNvbnRyb2wqIEF1ZGlvUHJvY2Vzc2lu
Z0ltcGw6OmdhaW5fY29udHJvbCgpIGNvbnN0IHsKICAgcmV0dXJuIHB1YmxpY19zdWJtb2R1bGVz
Xy0+Z2Fpbl9jb250cm9sLmdldCgpOwogfQogCi1IaWdoUGFzc0ZpbHRlciogQXVkaW9Qcm9jZXNz
aW5nSW1wbDo6aGlnaF9wYXNzX2ZpbHRlcigpIGNvbnN0IHsKLSAgcmV0dXJuIGhpZ2hfcGFzc19m
aWx0ZXJfaW1wbF8uZ2V0KCk7Ci19Ci0KIExldmVsRXN0aW1hdG9yKiBBdWRpb1Byb2Nlc3NpbmdJ
bXBsOjpsZXZlbF9lc3RpbWF0b3IoKSBjb25zdCB7CiAgIHJldHVybiBwdWJsaWNfc3VibW9kdWxl
c18tPmxldmVsX2VzdGltYXRvci5nZXQoKTsKIH0KQEAgLTE3NjQsOCArMTY4Nyw4IEBAIEF1ZGlv
UHJvY2Vzc2luZzo6Q29uZmlnIEF1ZGlvUHJvY2Vzc2luZ0ltcGw6OkdldENvbmZpZygpIGNvbnN0
IHsKIGJvb2wgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6VXBkYXRlQWN0aXZlU3VibW9kdWxlU3RhdGVz
KCkgewogICByZXR1cm4gc3VibW9kdWxlX3N0YXRlc18uVXBkYXRlKAogICAgICAgY29uZmlnXy5o
aWdoX3Bhc3NfZmlsdGVyLmVuYWJsZWQsCi0gICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9f
Y2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCksCi0gICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVj
aG9fY29udHJvbF9tb2JpbGUtPmlzX2VuYWJsZWQoKSwKKyAgICAgIHByaXZhdGVfc3VibW9kdWxl
c18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCksCisgICAgICBwcml2YXRlX3N1Ym1v
ZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5pc19lbmFibGVkKCksCiAgICAgICBjb25maWdf
LnJlc2lkdWFsX2VjaG9fZGV0ZWN0b3IuZW5hYmxlZCwKICAgICAgIHB1YmxpY19zdWJtb2R1bGVz
Xy0+bm9pc2Vfc3VwcHJlc3Npb24tPmlzX2VuYWJsZWQoKSwKICAgICAgIHB1YmxpY19zdWJtb2R1
bGVzXy0+Z2Fpbl9jb250cm9sLT5pc19lbmFibGVkKCksCkBAIC0xODUyLDE1ICsxNzc1LDE1IEBA
IHZvaWQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6SW5pdGlhbGl6ZVByZVByb2Nlc3NvcigpIHsKIHZv
aWQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6TWF5YmVVcGRhdGVIaXN0b2dyYW1zKCkgewogICBzdGF0
aWMgY29uc3QgaW50IGtNaW5EaWZmRGVsYXlNcyA9IDYwOwogCi0gIGlmIChwdWJsaWNfc3VibW9k
dWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCkpIHsKKyAgaWYgKHByaXZhdGVf
c3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19lbmFibGVkKCkpIHsKICAgICAvLyBB
Y3RpdmF0ZSBkZWxheV9qdW1wc18gY291bnRlcnMgaWYgd2Uga25vdyBlY2hvX2NhbmNlbGxhdGlv
biBpcyBydW5uaW5nLgogICAgIC8vIElmIGEgc3RyZWFtIGhhcyBlY2hvIHdlIGtub3cgdGhhdCB0
aGUgZWNob19jYW5jZWxsYXRpb24gaXMgaW4gcHJvY2Vzcy4KICAgICBpZiAoY2FwdHVyZV8uc3Ry
ZWFtX2RlbGF5X2p1bXBzID09IC0xICYmCi0gICAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNo
b19jYW5jZWxsYXRpb24tPnN0cmVhbV9oYXNfZWNobygpKSB7CisgICAgICAgIHByaXZhdGVfc3Vi
bW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5zdHJlYW1faGFzX2VjaG8oKSkgewogICAgICAg
Y2FwdHVyZV8uc3RyZWFtX2RlbGF5X2p1bXBzID0gMDsKICAgICB9CiAgICAgaWYgKGNhcHR1cmVf
LmFlY19zeXN0ZW1fZGVsYXlfanVtcHMgPT0gLTEgJiYKLSAgICAgICAgcHVibGljX3N1Ym1vZHVs
ZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+c3RyZWFtX2hhc19lY2hvKCkpIHsKKyAgICAgICAgcHJp
dmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPnN0cmVhbV9oYXNfZWNobygpKSB7
CiAgICAgICBjYXB0dXJlXy5hZWNfc3lzdGVtX2RlbGF5X2p1bXBzID0gMDsKICAgICB9CiAKQEAg
LTE4ODMsNyArMTgwNiw3IEBAIHZvaWQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6TWF5YmVVcGRhdGVI
aXN0b2dyYW1zKCkgewogICAgICAgICBydGM6OkNoZWNrZWREaXZFeGFjdChjYXB0dXJlX25vbmxv
Y2tlZF8uc3BsaXRfcmF0ZSwgMTAwMCk7CiAgICAgUlRDX0RDSEVDS19MVCgwLCBzYW1wbGVzX3Bl
cl9tcyk7CiAgICAgY29uc3QgaW50IGFlY19zeXN0ZW1fZGVsYXlfbXMgPQotICAgICAgICBwdWJs
aWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5HZXRTeXN0ZW1EZWxheUluU2FtcGxl
cygpIC8KKyAgICAgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPkdl
dFN5c3RlbURlbGF5SW5TYW1wbGVzKCkgLwogICAgICAgICBzYW1wbGVzX3Blcl9tczsKICAgICBj
b25zdCBpbnQgZGlmZl9hZWNfc3lzdGVtX2RlbGF5X21zID0KICAgICAgICAgYWVjX3N5c3RlbV9k
ZWxheV9tcyAtIGNhcHR1cmVfLmxhc3RfYWVjX3N5c3RlbV9kZWxheV9tczsKQEAgLTE5MjcsNyAr
MTg1MCw3IEBAIHZvaWQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6V3JpdGVBZWNEdW1wQ29uZmlnTWVz
c2FnZShib29sIGZvcmNlZCkgewogICAgIHJldHVybjsKICAgfQogICBzdGQ6OnN0cmluZyBleHBl
cmltZW50c19kZXNjcmlwdGlvbiA9Ci0gICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2Fu
Y2VsbGF0aW9uLT5HZXRFeHBlcmltZW50c0Rlc2NyaXB0aW9uKCk7CisgICAgICBwcml2YXRlX3N1
Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+R2V0RXhwZXJpbWVudHNEZXNjcmlwdGlvbigp
OwogICAvLyBUT0RPKHBlYWgpOiBBZGQgc2VtaWNvbG9uLXNlcGFyYXRlZCBjb25jYXRlbmF0aW9u
cyBvZiBleHBlcmltZW50CiAgIC8vIGRlc2NyaXB0aW9ucyBmb3Igb3RoZXIgc3VibW9kdWxlcy4K
ICAgaWYgKGNvbnN0YW50c18uYWdjX2NsaXBwZWRfbGV2ZWxfbWluICE9IGtDbGlwcGVkTGV2ZWxN
aW4pIHsKQEAgLTE5NDIsMjIgKzE4NjUsMjIgQEAgdm9pZCBBdWRpb1Byb2Nlc3NpbmdJbXBsOjpX
cml0ZUFlY0R1bXBDb25maWdNZXNzYWdlKGJvb2wgZm9yY2VkKSB7CiAKICAgSW50ZXJuYWxBUE1D
b25maWcgYXBtX2NvbmZpZzsKIAotICBhcG1fY29uZmlnLmFlY19lbmFibGVkID0gcHVibGljX3N1
Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+aXNfZW5hYmxlZCgpOworICBhcG1fY29uZmln
LmFlY19lbmFibGVkID0gcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlz
X2VuYWJsZWQoKTsKICAgYXBtX2NvbmZpZy5hZWNfZGVsYXlfYWdub3N0aWNfZW5hYmxlZCA9Ci0g
ICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9fY2FuY2VsbGF0aW9uLT5pc19kZWxheV9hZ25v
c3RpY19lbmFibGVkKCk7CisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxh
dGlvbi0+aXNfZGVsYXlfYWdub3N0aWNfZW5hYmxlZCgpOwogICBhcG1fY29uZmlnLmFlY19kcmlm
dF9jb21wZW5zYXRpb25fZW5hYmxlZCA9Ci0gICAgICBwdWJsaWNfc3VibW9kdWxlc18tPmVjaG9f
Y2FuY2VsbGF0aW9uLT5pc19kcmlmdF9jb21wZW5zYXRpb25fZW5hYmxlZCgpOworICAgICAgcHJp
dmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2RyaWZ0X2NvbXBlbnNhdGlv
bl9lbmFibGVkKCk7CiAgIGFwbV9jb25maWcuYWVjX2V4dGVuZGVkX2ZpbHRlcl9lbmFibGVkID0K
LSAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPmlzX2V4dGVuZGVk
X2ZpbHRlcl9lbmFibGVkKCk7CisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNl
bGxhdGlvbi0+aXNfZXh0ZW5kZWRfZmlsdGVyX2VuYWJsZWQoKTsKICAgYXBtX2NvbmZpZy5hZWNf
c3VwcHJlc3Npb25fbGV2ZWwgPSBzdGF0aWNfY2FzdDxpbnQ+KAotICAgICAgcHVibGljX3N1Ym1v
ZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+c3VwcHJlc3Npb25fbGV2ZWwoKSk7CisgICAgICBw
cml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxhdGlvbi0+c3VwcHJlc3Npb25fbGV2ZWwo
KSk7CiAKICAgYXBtX2NvbmZpZy5hZWNtX2VuYWJsZWQgPQotICAgICAgcHVibGljX3N1Ym1vZHVs
ZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5pc19lbmFibGVkKCk7CisgICAgICBwcml2YXRlX3N1
Ym1vZHVsZXNfLT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5pc19lbmFibGVkKCk7CiAgIGFwbV9jb25m
aWcuYWVjbV9jb21mb3J0X25vaXNlX2VuYWJsZWQgPQotICAgICAgcHVibGljX3N1Ym1vZHVsZXNf
LT5lY2hvX2NvbnRyb2xfbW9iaWxlLT5pc19jb21mb3J0X25vaXNlX2VuYWJsZWQoKTsKLSAgYXBt
X2NvbmZpZy5hZWNtX3JvdXRpbmdfbW9kZSA9Ci0gICAgICBzdGF0aWNfY2FzdDxpbnQ+KHB1Ymxp
Y19zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+cm91dGluZ19tb2RlKCkpOworICAg
ICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmlsZS0+aXNfY29tZm9ydF9u
b2lzZV9lbmFibGVkKCk7CisgIGFwbV9jb25maWcuYWVjbV9yb3V0aW5nX21vZGUgPSBzdGF0aWNf
Y2FzdDxpbnQ+KAorICAgICAgcHJpdmF0ZV9zdWJtb2R1bGVzXy0+ZWNob19jb250cm9sX21vYmls
ZS0+cm91dGluZ19tb2RlKCkpOwogCiAgIGFwbV9jb25maWcuYWdjX2VuYWJsZWQgPSBwdWJsaWNf
c3VibW9kdWxlc18tPmdhaW5fY29udHJvbC0+aXNfZW5hYmxlZCgpOwogICBhcG1fY29uZmlnLmFn
Y19tb2RlID0KQEAgLTIwMzIsNyArMTk1NSw3IEBAIHZvaWQgQXVkaW9Qcm9jZXNzaW5nSW1wbDo6
UmVjb3JkQXVkaW9Qcm9jZXNzaW5nU3RhdGUoKSB7CiAgIEFlY0R1bXA6OkF1ZGlvUHJvY2Vzc2lu
Z1N0YXRlIGF1ZGlvX3Byb2Nfc3RhdGU7CiAgIGF1ZGlvX3Byb2Nfc3RhdGUuZGVsYXkgPSBjYXB0
dXJlX25vbmxvY2tlZF8uc3RyZWFtX2RlbGF5X21zOwogICBhdWRpb19wcm9jX3N0YXRlLmRyaWZ0
ID0KLSAgICAgIHB1YmxpY19zdWJtb2R1bGVzXy0+ZWNob19jYW5jZWxsYXRpb24tPnN0cmVhbV9k
cmlmdF9zYW1wbGVzKCk7CisgICAgICBwcml2YXRlX3N1Ym1vZHVsZXNfLT5lY2hvX2NhbmNlbGxh
dGlvbi0+c3RyZWFtX2RyaWZ0X3NhbXBsZXMoKTsKICAgYXVkaW9fcHJvY19zdGF0ZS5sZXZlbCA9
IGdhaW5fY29udHJvbCgpLT5zdHJlYW1fYW5hbG9nX2xldmVsKCk7CiAgIGF1ZGlvX3Byb2Nfc3Rh
dGUua2V5cHJlc3MgPSBjYXB0dXJlXy5rZXlfcHJlc3NlZDsKICAgYWVjX2R1bXBfLT5BZGRBdWRp
b1Byb2Nlc3NpbmdTdGF0ZShhdWRpb19wcm9jX3N0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hdWRpb19wcm9jZXNzaW5nX2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2lt
cGwuaAppbmRleCA1MGNiODJiZjEzYWUxNzUyZGY1MThlNDQxOTdhYzBlYjlmYjdhN2I4Li4yZjk0
NmM1ZTEzZDg5MjA0ZGY3NDYyMWJlYjQyYzQ4MDQ4ZDJiOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYXVkaW9fcHJvY2Vzc2luZ19pbXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3Np
bmdfaW1wbC5oCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2F1ZGlvX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9pbmNsdWRlL2FlY19kdW1wLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9yZW5kZXJfcXVldWVfaXRlbV92ZXJpZmllci5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ybXNfbGV2ZWwuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKQEAgLTEwOSw3ICsxMTAsNiBAQCBjbGFzcyBB
dWRpb1Byb2Nlc3NpbmdJbXBsIDogcHVibGljIEF1ZGlvUHJvY2Vzc2luZyB7CiAgIGJvb2wgd2Fz
X3N0cmVhbV9kZWxheV9zZXQoKSBjb25zdCBvdmVycmlkZQogICAgICAgUlRDX0VYQ0xVU0lWRV9M
T0NLU19SRVFVSVJFRChjcml0X2NhcHR1cmVfKTsKIAotICBBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0
aWNzIEdldFN0YXRpc3RpY3MoKSBjb25zdCBvdmVycmlkZTsKICAgQXVkaW9Qcm9jZXNzaW5nU3Rh
dHMgR2V0U3RhdGlzdGljcyhib29sIGhhc19yZW1vdGVfdHJhY2tzKSBjb25zdCBvdmVycmlkZTsK
IAogICAvLyBNZXRob2RzIHJldHVybmluZyBwb2ludGVycyB0byBBUE0gc3VibW9kdWxlcy4KQEAg
LTExOCw4ICsxMTgsNiBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NpbmdJbXBsIDogcHVibGljIEF1ZGlv
UHJvY2Vzc2luZyB7CiAgIC8vIGNyZWF0ZWQgb25seSBvbmNlIGluIGEgc2luZ2xlLXRyZWFkZWQg
bWFubmVyCiAgIC8vIGR1cmluZyBBUE0gY3JlYXRpb24pLgogICBHYWluQ29udHJvbCogZ2Fpbl9j
b250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIC8vIFRPRE8ocGVhaCk6IERlcHJlY2F0ZSB0aGlz
IEFQSSBjYWxsLgotICBIaWdoUGFzc0ZpbHRlciogaGlnaF9wYXNzX2ZpbHRlcigpIGNvbnN0IG92
ZXJyaWRlOwogICBMZXZlbEVzdGltYXRvciogbGV2ZWxfZXN0aW1hdG9yKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgIE5vaXNlU3VwcHJlc3Npb24qIG5vaXNlX3N1cHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgIFZvaWNlRGV0ZWN0aW9uKiB2b2ljZV9kZXRlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsK
QEAgLTE2NCw5ICsxNjIsNiBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NpbmdJbXBsIDogcHVibGljIEF1
ZGlvUHJvY2Vzc2luZyB7CiAgIFJ1bnRpbWVTZXR0aW5nRW5xdWV1ZXIgY2FwdHVyZV9ydW50aW1l
X3NldHRpbmdzX2VucXVldWVyXzsKICAgUnVudGltZVNldHRpbmdFbnF1ZXVlciByZW5kZXJfcnVu
dGltZV9zZXR0aW5nc19lbnF1ZXVlcl87CiAKLSAgLy8gU3VibW9kdWxlIGludGVyZmFjZSBpbXBs
ZW1lbnRhdGlvbnMuCi0gIHN0ZDo6dW5pcXVlX3B0cjxIaWdoUGFzc0ZpbHRlcj4gaGlnaF9wYXNz
X2ZpbHRlcl9pbXBsXzsKLQogICAvLyBFY2hvQ29udHJvbCBmYWN0b3J5LgogICBzdGQ6OnVuaXF1
ZV9wdHI8RWNob0NvbnRyb2xGYWN0b3J5PiBlY2hvX2NvbnRyb2xfZmFjdG9yeV87CiAKQEAgLTM5
Niw2ICszOTEsNyBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NpbmdJbXBsIDogcHVibGljIEF1ZGlvUHJv
Y2Vzc2luZyB7CiAgICAgYm9vbCBlY2hvX3BhdGhfZ2Fpbl9jaGFuZ2U7CiAgICAgaW50IHByZXZf
YW5hbG9nX21pY19sZXZlbDsKICAgICBmbG9hdCBwcmV2X3ByZV9hbXBfZ2FpbjsKKyAgICBBdWRp
b1Byb2Nlc3NpbmdTdGF0cyBzdGF0czsKICAgfSBjYXB0dXJlXyBSVENfR1VBUkRFRF9CWShjcml0
X2NhcHR1cmVfKTsKIAogICBzdHJ1Y3QgQXBtQ2FwdHVyZU5vbkxvY2tlZFN0YXRlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGxfbG9ja2luZ191bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX2ltcGxfbG9ja2luZ191bml0dGVzdC5jYwpp
bmRleCAwZTBhMzNmNTcwMDY5M2YxMzQyNzRkNzczN2FmYTNjNTQ0MDg5MWI3Li45Njg1ZWY5NWU5
Y2Y1NzFhZDYwYzJjODAwMWY3M2U4MWY0MzU5MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVk
aW9fcHJvY2Vzc2luZ19pbXBsX2xvY2tpbmdfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2F1
ZGlvX3Byb2Nlc3NpbmdfaW1wbF9sb2NraW5nX3VuaXR0ZXN0LmNjCkBAIC00ODcsMTAgKzQ4Nyw3
IEBAIHZvaWQgUG9wdWxhdGVBdWRpb0ZyYW1lKEF1ZGlvRnJhbWUqIGZyYW1lLAogfQogCiBBdWRp
b1Byb2Nlc3NpbmdJbXBsTG9ja1Rlc3Q6OkF1ZGlvUHJvY2Vzc2luZ0ltcGxMb2NrVGVzdCgpCi0g
ICAgOiB0ZXN0X2NvbXBsZXRlXyhmYWxzZSwgZmFsc2UpLAotICAgICAgcmVuZGVyX2NhbGxfZXZl
bnRfKGZhbHNlLCBmYWxzZSksCi0gICAgICBjYXB0dXJlX2NhbGxfZXZlbnRfKGZhbHNlLCBmYWxz
ZSksCi0gICAgICByZW5kZXJfdGhyZWFkXyhSZW5kZXJQcm9jZXNzb3JUaHJlYWRGdW5jLCB0aGlz
LCAicmVuZGVyIiksCisgICAgOiByZW5kZXJfdGhyZWFkXyhSZW5kZXJQcm9jZXNzb3JUaHJlYWRG
dW5jLCB0aGlzLCAicmVuZGVyIiksCiAgICAgICBjYXB0dXJlX3RocmVhZF8oQ2FwdHVyZVByb2Nl
c3NvclRocmVhZEZ1bmMsIHRoaXMsICJjYXB0dXJlIiksCiAgICAgICBzdGF0c190aHJlYWRfKFN0
YXRzUHJvY2Vzc29yVGhyZWFkRnVuYywgdGhpcywgInN0YXRzIiksCiAgICAgICBhcG1fKEF1ZGlv
UHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVk
aW9fcHJvY2Vzc2luZ19wZXJmb3JtYW5jZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19w
cm9jZXNzaW5nX3BlcmZvcm1hbmNlX3VuaXR0ZXN0LmNjCmluZGV4IDk1ZjczNmMyMmYxNjhiZmRi
ODcyNjc4MzlkN2IwNDJlYTNmZTk5MTYuLjg0Y2I1NzQzMDcyNzA2YjAxZjg4Y2MyMTQxOGU2ZTNl
MTdjYzlkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX3BlcmZvcm1h
bmNlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19wcm9jZXNzaW5nX3BlcmZvcm1h
bmNlX3VuaXR0ZXN0LmNjCkBAIC0xOCwxMSArMTgsMTEgQEAKICNpbmNsdWRlICJhcGkvYXJyYXlf
dmlldy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L3Rlc3RfdXRp
bHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hdG9taWNvcHMuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9yYW5kb20uaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5o
IgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCIKICNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9wZXJmX3Rl
c3QuaCIKIApAQCAtMzkxLDggKzM5MSw3IEBAIGNsYXNzIFRpbWVkVGhyZWFkQXBpUHJvY2Vzc29y
IHsKIGNsYXNzIENhbGxTaW11bGF0b3IgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFt
PFNpbXVsYXRpb25Db25maWc+IHsKICBwdWJsaWM6CiAgIENhbGxTaW11bGF0b3IoKQotICAgICAg
OiB0ZXN0X2NvbXBsZXRlXyhFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSwKLSAgICAgICAgcmVuZGVy
X3RocmVhZF8oCisgICAgICA6IHJlbmRlcl90aHJlYWRfKAogICAgICAgICAgICAgbmV3IHJ0Yzo6
UGxhdGZvcm1UaHJlYWQoUmVuZGVyUHJvY2Vzc29yVGhyZWFkRnVuYywgdGhpcywgInJlbmRlciIp
KSwKICAgICAgICAgY2FwdHVyZV90aHJlYWRfKG5ldyBydGM6OlBsYXRmb3JtVGhyZWFkKENhcHR1
cmVQcm9jZXNzb3JUaHJlYWRGdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcywKQEAgLTQwMSwxMCArNDAwLDEwIEBAIGNsYXNzIENhbGxTaW11
bGF0b3IgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFNpbXVsYXRpb25Db25maWc+
IHsKICAgICAgICAgc2ltdWxhdGlvbl9jb25maWdfKHN0YXRpY19jYXN0PFNpbXVsYXRpb25Db25m
aWc+KEdldFBhcmFtKCkpKSB7fQogCiAgIC8vIFJ1biB0aGUgY2FsbCBzaW11bGF0aW9uIHdpdGgg
YSB0aW1lb3V0LgotICBFdmVudFR5cGVXcmFwcGVyIFJ1bigpIHsKKyAgYm9vbCBSdW4oKSB7CiAg
ICAgU3RhcnRUaHJlYWRzKCk7CiAKLSAgICBFdmVudFR5cGVXcmFwcGVyIHJlc3VsdCA9IHRlc3Rf
Y29tcGxldGVfLT5XYWl0KGtUZXN0VGltZW91dCk7CisgICAgYm9vbCByZXN1bHQgPSB0ZXN0X2Nv
bXBsZXRlXy5XYWl0KGtUZXN0VGltZW91dCk7CiAKICAgICBTdG9wVGhyZWFkcygpOwogCkBAIC00
MjAsNyArNDE5LDcgQEAgY2xhc3MgQ2FsbFNpbXVsYXRvciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08U2ltdWxhdGlvbkNvbmZpZz4gewogICAvLyBkb25lLgogICBib29sIE1heWJl
RW5kVGVzdCgpIHsKICAgICBpZiAoZnJhbWVfY291bnRlcnNfLkJvdGhDb3VudGVyc0V4Y2VlZGVU
aHJlc2hvbGQoa01pbk51bUZyYW1lc1RvUHJvY2VzcykpIHsKLSAgICAgIHRlc3RfY29tcGxldGVf
LT5TZXQoKTsKKyAgICAgIHRlc3RfY29tcGxldGVfLlNldCgpOwogICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTU3MCw3ICs1NjksNyBAQCBjbGFzcyBDYWxs
U2ltdWxhdG9yIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxTaW11bGF0aW9uQ29u
ZmlnPiB7CiAgIH0KIAogICAvLyBFdmVudCBoYW5kbGVyIGZvciB0aGUgdGVzdC4KLSAgY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gdGVzdF9jb21wbGV0ZV87CisgIHJ0Yzo6RXZl
bnQgdGVzdF9jb21wbGV0ZV87CiAKICAgLy8gVGhyZWFkIHJlbGF0ZWQgdmFyaWFibGVzLgogICBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpQbGF0Zm9ybVRocmVhZD4gcmVuZGVyX3RocmVhZF87CkBAIC02
MTksNyArNjE4LDcgQEAgY29uc3QgZmxvYXQgQ2FsbFNpbXVsYXRvcjo6a0NhcHR1cmVJbnB1dEZs
b2F0TGV2ZWwgPSAwLjAzMTI1ZjsKIC8vIFRPRE8ocGVhaCk6IFJlYWN0aXZhdGUgb25jZSBpc3N1
ZSA3NzEyIGhhcyBiZWVuIHJlc29sdmVkLgogVEVTVF9QKENhbGxTaW11bGF0b3IsIERJU0FCTEVE
X0FwaUNhbGxEdXJhdGlvblRlc3QpIHsKICAgLy8gUnVuIHRlc3QgYW5kIHZlcmlmeSB0aGF0IGl0
IGRpZCBub3QgdGltZSBvdXQuCi0gIEVYUEVDVF9FUShrRXZlbnRTaWduYWxlZCwgUnVuKCkpOwor
ICBFWFBFQ1RfVFJVRShSdW4oKSk7CiB9CiAKIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2F1ZGlvX3Byb2Nlc3NpbmdfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvYXVkaW9fcHJvY2Vzc2luZ191bml0dGVzdC5jYwppbmRleCAzZjBkZWNjOTU3YTYzNDIxNGYz
ZDM5M2Y0MmM0NTE4ODE5Yjc5YjgxLi42ODA5YWI5ZGNkOWUzMTQwZTAyOTA2ZTQ3YzQ4YTI0MTBh
ZDE0YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ191bml0dGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fcHJvY2Vzc2luZ191bml0dGVzdC5jYwpAQCAtMTI3OCw3
ICsxMjc4LDYgQEAgVEVTVF9GKEFwbVRlc3QsIEFsbFByb2Nlc3NpbmdEaXNhYmxlZEJ5RGVmYXVs
dCkgewogICBFWFBFQ1RfRkFMU0UoY29uZmlnLmVjaG9fY2FuY2VsbGVyLmVuYWJsZWQpOwogICBF
WFBFQ1RfRkFMU0UoY29uZmlnLmhpZ2hfcGFzc19maWx0ZXIuZW5hYmxlZCk7CiAgIEVYUEVDVF9G
QUxTRShhcG1fLT5nYWluX2NvbnRyb2woKS0+aXNfZW5hYmxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNF
KGFwbV8tPmhpZ2hfcGFzc19maWx0ZXIoKS0+aXNfZW5hYmxlZCgpKTsKICAgRVhQRUNUX0ZBTFNF
KGFwbV8tPmxldmVsX2VzdGltYXRvcigpLT5pc19lbmFibGVkKCkpOwogICBFWFBFQ1RfRkFMU0Uo
YXBtXy0+bm9pc2Vfc3VwcHJlc3Npb24oKS0+aXNfZW5hYmxlZCgpKTsKICAgRVhQRUNUX0ZBTFNF
KGFwbV8tPnZvaWNlX2RldGVjdGlvbigpLT5pc19lbmFibGVkKCkpOwpAQCAtMjgwMiw0ICsyODAx
LDQyIEBAIFRFU1QoTUFZQkVfQXBtU3RhdGlzdGljcywgQUVDTUVuYWJsZWRUZXN0KSB7CiAgIEVY
UEVDVF9GQUxTRShzdGF0cy5kZWxheV9tZWRpYW5fbXMpOwogICBFWFBFQ1RfRkFMU0Uoc3RhdHMu
ZGVsYXlfc3RhbmRhcmRfZGV2aWF0aW9uX21zKTsKIH0KKworVEVTVChBcG1TdGF0aXN0aWNzLCBS
ZXBvcnRPdXRwdXRSbXNEYmZzKSB7CisgIFByb2Nlc3NpbmdDb25maWcgcHJvY2Vzc2luZ19jb25m
aWcgPSB7CisgICAgICB7ezMyMDAwLCAxfSwgezMyMDAwLCAxfSwgezMyMDAwLCAxfSwgezMyMDAw
LCAxfX19OworICBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZyBjb25maWc7CisKKyAgLy8gU2V0IHVw
IGFuIGF1ZGlvZnJhbWUuCisgIEF1ZGlvRnJhbWUgZnJhbWU7CisgIGZyYW1lLm51bV9jaGFubmVs
c18gPSAxOworICBTZXRGcmFtZVNhbXBsZVJhdGUoJmZyYW1lLCBBdWRpb1Byb2Nlc3Npbmc6Ok5h
dGl2ZVJhdGU6OmtTYW1wbGVSYXRlNDhrSHopOworCisgIC8vIEZpbGwgdGhlIGF1ZGlvIGZyYW1l
IHdpdGggYSBzYXd0b290aCBwYXR0ZXJuLgorICBpbnQxNl90KiBwdHIgPSBmcmFtZS5tdXRhYmxl
X2RhdGEoKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5rTWF4RGF0YVNpemVTYW1w
bGVzOyBpKyspIHsKKyAgICBwdHJbaV0gPSAxMDAwMCAqICgoaSAlIDMpIC0gMSk7CisgIH0KKwor
ICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Qcm9jZXNzaW5nPiBhcG0oQXVkaW9Qcm9jZXNzaW5nQnVp
bGRlcigpLkNyZWF0ZSgpKTsKKyAgYXBtLT5Jbml0aWFsaXplKHByb2Nlc3NpbmdfY29uZmlnKTsK
KworICAvLyBJZiBub3QgZW5hYmxlZCwgbm8gbWV0cmljIHNob3VsZCBiZSByZXBvcnRlZC4KKyAg
RVhQRUNUX0VRKGFwbS0+UHJvY2Vzc1N0cmVhbSgmZnJhbWUpLCAwKTsKKyAgRVhQRUNUX0ZBTFNF
KGFwbS0+R2V0U3RhdGlzdGljcyhmYWxzZSkub3V0cHV0X3Jtc19kYmZzKTsKKworICAvLyBJZiBl
bmFibGVkLCBtZXRyaWNzIHNob3VsZCBiZSByZXBvcnRlZC4KKyAgY29uZmlnLmxldmVsX2VzdGlt
YXRpb24uZW5hYmxlZCA9IHRydWU7CisgIGFwbS0+QXBwbHlDb25maWcoY29uZmlnKTsKKyAgRVhQ
RUNUX0VRKGFwbS0+UHJvY2Vzc1N0cmVhbSgmZnJhbWUpLCAwKTsKKyAgYXV0byBzdGF0cyA9IGFw
bS0+R2V0U3RhdGlzdGljcyhmYWxzZSk7CisgIEVYUEVDVF9UUlVFKHN0YXRzLm91dHB1dF9ybXNf
ZGJmcyk7CisgIEVYUEVDVF9HRSgqc3RhdHMub3V0cHV0X3Jtc19kYmZzLCAwKTsKKworICAvLyBJ
ZiByZS1kaXNhYmxlZCwgdGhlIHZhbHVlIGlzIGFnYWluIG5vdCByZXBvcnRlZC4KKyAgY29uZmln
LmxldmVsX2VzdGltYXRpb24uZW5hYmxlZCA9IGZhbHNlOworICBhcG0tPkFwcGx5Q29uZmlnKGNv
bmZpZyk7CisgIEVYUEVDVF9FUShhcG0tPlByb2Nlc3NTdHJlYW0oJmZyYW1lKSwgMCk7CisgIEVY
UEVDVF9GQUxTRShhcG0tPkdldFN0YXRpc3RpY3MoZmFsc2UpLm91dHB1dF9ybXNfZGJmcyk7Cit9
CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jYW5j
ZWxsYXRpb25fYml0X2V4YWN0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0
aW9uX2JpdF9leGFjdF91bml0dGVzdC5jYwppbmRleCA3ZjYwYzRiNWQ4Mzg4MWQ0NmU3ZmEyYTYz
ZDE4Y2YwMWE2OGI0ZWNjLi5hZjA3NDFlZTE3ODQ5NmExMzE5ZTljYTRiNTMxNzM1ZDViNzJiNzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jYW5jZWxsYXRpb25fYml0X2V4YWN0X3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlvbl9iaXRfZXhhY3RfdW5pdHRl
c3QuY2MKQEAgLTc0LDkgKzc0LDcgQEAgdm9pZCBSdW5CaXRleGFjdG5lc3NUZXN0KAogICAgIEVj
aG9DYW5jZWxsYXRpb25JbXBsOjpTdXBwcmVzc2lvbkxldmVsIHN1cHByZXNzaW9uX2xldmVsLAog
ICAgIGJvb2wgc3RyZWFtX2hhc19lY2hvX3JlZmVyZW5jZSwKICAgICBjb25zdCBydGM6OkFycmF5
Vmlldzxjb25zdCBmbG9hdD4mIG91dHB1dF9yZWZlcmVuY2UpIHsKLSAgcnRjOjpDcml0aWNhbFNl
Y3Rpb24gY3JpdF9yZW5kZXI7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfY2FwdHVyZTsK
LSAgRWNob0NhbmNlbGxhdGlvbkltcGwgZWNob19jYW5jZWxsZXIoJmNyaXRfcmVuZGVyLCAmY3Jp
dF9jYXB0dXJlKTsKKyAgRWNob0NhbmNlbGxhdGlvbkltcGwgZWNob19jYW5jZWxsZXI7CiAgIFNl
dHVwQ29tcG9uZW50KHNhbXBsZV9yYXRlX2h6LCBzdXBwcmVzc2lvbl9sZXZlbCwgZHJpZnRfY29t
cGVuc2F0aW9uX2VuYWJsZWQsCiAgICAgICAgICAgICAgICAgICZlY2hvX2NhbmNlbGxlcik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlvbl9pbXBsLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGwuY2MKaW5kZXggZTZmZTc2OTFjNDkwM2Q5Mjc5YWIw
MWJlNTM3OTZmZmM3MjQ2OTdlMi4uNzNmZTUxYjc1MmY2NmQyYzBmOGEyNTFjMjllZTZhZjE0YWEz
NDI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGwuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2ltcGwuY2MKQEAgLTEwLDExICsxMCwxMyBA
QAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9u
X2ltcGwuaCIKIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYy9hZWNfY29yZS5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMvZWNob19jYW5jZWxsYXRpb24uaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCisjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvY29uZmlnLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmll
bGRfdHJpYWwuaCIKIApAQCAtMTAzLDExICsxMDUsOCBAQCBjbGFzcyBFY2hvQ2FuY2VsbGF0aW9u
SW1wbDo6Q2FuY2VsbGVyIHsKICAgdm9pZCogc3RhdGVfOwogfTsKIAotRWNob0NhbmNlbGxhdGlv
bkltcGw6OkVjaG9DYW5jZWxsYXRpb25JbXBsKHJ0Yzo6Q3JpdGljYWxTZWN0aW9uKiBjcml0X3Jl
bmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNy
aXRpY2FsU2VjdGlvbiogY3JpdF9jYXB0dXJlKQotICAgIDogY3JpdF9yZW5kZXJfKGNyaXRfcmVu
ZGVyKSwKLSAgICAgIGNyaXRfY2FwdHVyZV8oY3JpdF9jYXB0dXJlKSwKLSAgICAgIGRyaWZ0X2Nv
bXBlbnNhdGlvbl9lbmFibGVkXyhmYWxzZSksCitFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6RWNob0Nh
bmNlbGxhdGlvbkltcGwoKQorICAgIDogZHJpZnRfY29tcGVuc2F0aW9uX2VuYWJsZWRfKGZhbHNl
KSwKICAgICAgIG1ldHJpY3NfZW5hYmxlZF8odHJ1ZSksCiAgICAgICBzdXBwcmVzc2lvbl9sZXZl
bF8oa0hpZ2hTdXBwcmVzc2lvbiksCiAgICAgICBzdHJlYW1fZHJpZnRfc2FtcGxlc18oMCksCkBA
IC0xMTYsMTYgKzExNSwxMiBAQCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6RWNob0NhbmNlbGxhdGlv
bkltcGwocnRjOjpDcml0aWNhbFNlY3Rpb24qIGNyaXRfcmVuZGVyLAogICAgICAgZGVsYXlfbG9n
Z2luZ19lbmFibGVkXyh0cnVlKSwKICAgICAgIGV4dGVuZGVkX2ZpbHRlcl9lbmFibGVkXyhmYWxz
ZSksCiAgICAgICBkZWxheV9hZ25vc3RpY19lbmFibGVkXyhmYWxzZSksCi0gICAgICBlbmZvcmNl
X3plcm9fc3RyZWFtX2RlbGF5XyhFbmZvcmNlWmVyb1N0cmVhbURlbGF5KCkpIHsKLSAgUlRDX0RD
SEVDSyhjcml0X3JlbmRlcik7Ci0gIFJUQ19EQ0hFQ0soY3JpdF9jYXB0dXJlKTsKLX0KKyAgICAg
IGVuZm9yY2VfemVyb19zdHJlYW1fZGVsYXlfKEVuZm9yY2VaZXJvU3RyZWFtRGVsYXkoKSkge30K
IAogRWNob0NhbmNlbGxhdGlvbkltcGw6On5FY2hvQ2FuY2VsbGF0aW9uSW1wbCgpID0gZGVmYXVs
dDsKIAogdm9pZCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6UHJvY2Vzc1JlbmRlckF1ZGlvKAogICAg
IHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGZsb2F0PiBwYWNrZWRfcmVuZGVyX2F1ZGlvKSB7Ci0gIHJ0
Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9jYXB0dXJlXyk7CiAgIGlmICghZW5hYmxlZF8p
IHsKICAgICByZXR1cm47CiAgIH0KQEAgLTE0OSw3ICsxNDQsNiBAQCB2b2lkIEVjaG9DYW5jZWxs
YXRpb25JbXBsOjpQcm9jZXNzUmVuZGVyQXVkaW8oCiAKIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1w
bDo6UHJvY2Vzc0NhcHR1cmVBdWRpbyhBdWRpb0J1ZmZlciogYXVkaW8sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0cmVhbV9kZWxheV9tcykgewot
ICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKGNyaXRfY2FwdHVyZV8pOwogICBpZiAoIWVuYWJs
ZWRfKSB7CiAgICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a05vRXJyb3I7CiAgIH0KQEAgLTIw
NiwxMCArMjAwLDYgQEAgaW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpQcm9jZXNzQ2FwdHVyZUF1
ZGlvKEF1ZGlvQnVmZmVyKiBhdWRpbywKIH0KIAogaW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpF
bmFibGUoYm9vbCBlbmFibGUpIHsKLSAgLy8gUnVuIGluIGEgc2luZ2xlLXRocmVhZGVkIG1hbm5l
ci4KLSAgcnRjOjpDcml0U2NvcGUgY3NfcmVuZGVyKGNyaXRfcmVuZGVyXyk7Ci0gIHJ0Yzo6Q3Jp
dFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9jYXB0dXJlXyk7Ci0KICAgaWYgKGVuYWJsZSAmJiAhZW5h
YmxlZF8pIHsKICAgICBlbmFibGVkXyA9IGVuYWJsZTsgIC8vIE11c3QgYmUgc2V0IGJlZm9yZSBJ
bml0aWFsaXplKCkgaXMgY2FsbGVkLgogCkBAIC0yMjcsNjggKzIxNyw1MiBAQCBpbnQgRWNob0Nh
bmNlbGxhdGlvbkltcGw6OkVuYWJsZShib29sIGVuYWJsZSkgewogfQogCiBib29sIEVjaG9DYW5j
ZWxsYXRpb25JbXBsOjppc19lbmFibGVkKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhj
cml0X2NhcHR1cmVfKTsKICAgcmV0dXJuIGVuYWJsZWRfOwogfQogCiBpbnQgRWNob0NhbmNlbGxh
dGlvbkltcGw6OnNldF9zdXBwcmVzc2lvbl9sZXZlbChTdXBwcmVzc2lvbkxldmVsIGxldmVsKSB7
Ci0gIHsKLSAgICBpZiAoTWFwU2V0dGluZyhsZXZlbCkgPT0gLTEpIHsKLSAgICAgIHJldHVybiBB
dWRpb1Byb2Nlc3Npbmc6OmtCYWRQYXJhbWV0ZXJFcnJvcjsKLSAgICB9Ci0gICAgcnRjOjpDcml0
U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7Ci0gICAgc3VwcHJlc3Npb25fbGV2ZWxfID0gbGV2ZWw7
CisgIGlmIChNYXBTZXR0aW5nKGxldmVsKSA9PSAtMSkgeworICAgIHJldHVybiBBdWRpb1Byb2Nl
c3Npbmc6OmtCYWRQYXJhbWV0ZXJFcnJvcjsKICAgfQorICBzdXBwcmVzc2lvbl9sZXZlbF8gPSBs
ZXZlbDsKICAgcmV0dXJuIENvbmZpZ3VyZSgpOwogfQogCiBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6
U3VwcHJlc3Npb25MZXZlbCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6c3VwcHJlc3Npb25fbGV2ZWwo
KQogICAgIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJl
dHVybiBzdXBwcmVzc2lvbl9sZXZlbF87CiB9CiAKIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6
ZW5hYmxlX2RyaWZ0X2NvbXBlbnNhdGlvbihib29sIGVuYWJsZSkgewotICB7Ci0gICAgcnRjOjpD
cml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7Ci0gICAgZHJpZnRfY29tcGVuc2F0aW9uX2VuYWJs
ZWRfID0gZW5hYmxlOwotICB9CisgIGRyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkXyA9IGVuYWJs
ZTsKICAgcmV0dXJuIENvbmZpZ3VyZSgpOwogfQogCiBib29sIEVjaG9DYW5jZWxsYXRpb25JbXBs
Ojppc19kcmlmdF9jb21wZW5zYXRpb25fZW5hYmxlZCgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2Nv
cGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVybiBkcmlmdF9jb21wZW5zYXRpb25fZW5hYmxl
ZF87CiB9CiAKIHZvaWQgRWNob0NhbmNlbGxhdGlvbkltcGw6OnNldF9zdHJlYW1fZHJpZnRfc2Ft
cGxlcyhpbnQgZHJpZnQpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAg
IHdhc19zdHJlYW1fZHJpZnRfc2V0XyA9IHRydWU7CiAgIHN0cmVhbV9kcmlmdF9zYW1wbGVzXyA9
IGRyaWZ0OwogfQogCiBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OnN0cmVhbV9kcmlmdF9zYW1w
bGVzKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2NhcHR1cmVfKTsKICAgcmV0
dXJuIHN0cmVhbV9kcmlmdF9zYW1wbGVzXzsKIH0KIAogaW50IEVjaG9DYW5jZWxsYXRpb25JbXBs
OjplbmFibGVfbWV0cmljcyhib29sIGVuYWJsZSkgewotICB7Ci0gICAgcnRjOjpDcml0U2NvcGUg
Y3MoY3JpdF9jYXB0dXJlXyk7Ci0gICAgbWV0cmljc19lbmFibGVkXyA9IGVuYWJsZTsKLSAgfQor
ICBtZXRyaWNzX2VuYWJsZWRfID0gZW5hYmxlOwogICByZXR1cm4gQ29uZmlndXJlKCk7CiB9CiAK
IGJvb2wgRWNob0NhbmNlbGxhdGlvbkltcGw6OmFyZV9tZXRyaWNzX2VuYWJsZWQoKSBjb25zdCB7
Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1cm4gZW5hYmxlZF8g
JiYgbWV0cmljc19lbmFibGVkXzsKIH0KIAogLy8gVE9ETyhham0pOiB3ZSBjdXJyZW50bHkganVz
dCB1c2UgdGhlIG1ldHJpY3MgZnJvbSB0aGUgZmlyc3QgQUVDLiBUaGluayBtb3JlCiAvLyAgICAg
ICAgICAgIGFib3VlIHRoZSBiZXN0IHdheSB0byBleHRlbmQgdGhpcyB0byBtdWx0aS1jaGFubmVs
LgogaW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpHZXRNZXRyaWNzKE1ldHJpY3MqIG1ldHJpY3Mp
IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIGlmIChtZXRyaWNzID09
IE5VTEwpIHsKICAgICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprTnVsbFBvaW50ZXJFcnJvcjsK
ICAgfQpAQCAtMzMxLDQ2ICszMDUsMzYgQEAgaW50IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpHZXRN
ZXRyaWNzKE1ldHJpY3MqIG1ldHJpY3MpIHsKIH0KIAogYm9vbCBFY2hvQ2FuY2VsbGF0aW9uSW1w
bDo6c3RyZWFtX2hhc19lY2hvKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcyhjcml0X2Nh
cHR1cmVfKTsKICAgcmV0dXJuIHN0cmVhbV9oYXNfZWNob187CiB9CiAKIGludCBFY2hvQ2FuY2Vs
bGF0aW9uSW1wbDo6ZW5hYmxlX2RlbGF5X2xvZ2dpbmcoYm9vbCBlbmFibGUpIHsKLSAgewotICAg
IHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwotICAgIGRlbGF5X2xvZ2dpbmdfZW5h
YmxlZF8gPSBlbmFibGU7Ci0gIH0KKyAgZGVsYXlfbG9nZ2luZ19lbmFibGVkXyA9IGVuYWJsZTsK
ICAgcmV0dXJuIENvbmZpZ3VyZSgpOwogfQogCiBib29sIEVjaG9DYW5jZWxsYXRpb25JbXBsOjpp
c19kZWxheV9sb2dnaW5nX2VuYWJsZWQoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNy
aXRfY2FwdHVyZV8pOwogICByZXR1cm4gZW5hYmxlZF8gJiYgZGVsYXlfbG9nZ2luZ19lbmFibGVk
XzsKIH0KIAogYm9vbCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6aXNfZGVsYXlfYWdub3N0aWNfZW5h
YmxlZCgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJl
dHVybiBkZWxheV9hZ25vc3RpY19lbmFibGVkXzsKIH0KIAogc3RkOjpzdHJpbmcgRWNob0NhbmNl
bGxhdGlvbkltcGw6OkdldEV4cGVyaW1lbnRzRGVzY3JpcHRpb24oKSB7Ci0gIHJ0Yzo6Q3JpdFNj
b3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1cm4gcmVmaW5lZF9hZGFwdGl2ZV9maWx0ZXJf
ZW5hYmxlZF8gPyAiUmVmaW5lZEFkYXB0aXZlRmlsdGVyOyIgOiAiIjsKIH0KIAogYm9vbCBFY2hv
Q2FuY2VsbGF0aW9uSW1wbDo6aXNfcmVmaW5lZF9hZGFwdGl2ZV9maWx0ZXJfZW5hYmxlZCgpIGNv
bnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVybiByZWZp
bmVkX2FkYXB0aXZlX2ZpbHRlcl9lbmFibGVkXzsKIH0KIAogYm9vbCBFY2hvQ2FuY2VsbGF0aW9u
SW1wbDo6aXNfZXh0ZW5kZWRfZmlsdGVyX2VuYWJsZWQoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNj
b3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1cm4gZXh0ZW5kZWRfZmlsdGVyX2VuYWJsZWRf
OwogfQogCiAvLyBUT0RPKGJqb3Judik6IEhvdyBzaG91bGQgd2UgaGFuZGxlIHRoZSBtdWx0aS1j
aGFubmVsIGNhc2U/CiBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OkdldERlbGF5TWV0cmljcyhp
bnQqIG1lZGlhbiwgaW50KiBzdGQpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJl
Xyk7CiAgIGZsb2F0IGZyYWN0aW9uX3Bvb3JfZGVsYXlzID0gMDsKICAgcmV0dXJuIEdldERlbGF5
TWV0cmljcyhtZWRpYW4sIHN0ZCwgJmZyYWN0aW9uX3Bvb3JfZGVsYXlzKTsKIH0KQEAgLTM3OCw3
ICszNDIsNiBAQCBpbnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OkdldERlbGF5TWV0cmljcyhpbnQq
IG1lZGlhbiwgaW50KiBzdGQpIHsKIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6R2V0RGVsYXlN
ZXRyaWNzKGludCogbWVkaWFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50KiBzdGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCogZnJhY3Rpb25fcG9vcl9kZWxheXMpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3Jp
dF9jYXB0dXJlXyk7CiAgIGlmIChtZWRpYW4gPT0gTlVMTCkgewogICAgIHJldHVybiBBdWRpb1By
b2Nlc3Npbmc6OmtOdWxsUG9pbnRlckVycm9yOwogICB9CkBAIC00MDAsNyArMzYzLDYgQEAgaW50
IEVjaG9DYW5jZWxsYXRpb25JbXBsOjpHZXREZWxheU1ldHJpY3MoaW50KiBtZWRpYW4sCiB9CiAK
IHN0cnVjdCBBZWNDb3JlKiBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6YWVjX2NvcmUoKSBjb25zdCB7
Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICBpZiAoIWVuYWJsZWRfKSB7
CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KQEAgLTQxMSw5ICszNzMsNiBAQCB2b2lkIEVjaG9DYW5j
ZWxsYXRpb25JbXBsOjpJbml0aWFsaXplKGludCBzYW1wbGVfcmF0ZV9oeiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9yZXZlcnNlX2NoYW5uZWxzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX291dHB1dF9j
aGFubmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51
bV9wcm9jX2NoYW5uZWxzKSB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX3JlbmRlcihjcml0X3JlbmRl
cl8pOwotICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKGNyaXRfY2FwdHVyZV8pOwotCiAgIHN0
cmVhbV9wcm9wZXJ0aWVzXy5yZXNldCgKICAgICAgIG5ldyBTdHJlYW1Qcm9wZXJ0aWVzKHNhbXBs
ZV9yYXRlX2h6LCBudW1fcmV2ZXJzZV9jaGFubmVscywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bV9vdXRwdXRfY2hhbm5lbHMsIG51bV9wcm9jX2NoYW5uZWxzKSk7CkBAIC00NDIsNyAr
NDAxLDYgQEAgdm9pZCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6SW5pdGlhbGl6ZShpbnQgc2FtcGxl
X3JhdGVfaHosCiB9CiAKIGludCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6R2V0U3lzdGVtRGVsYXlJ
blNhbXBsZXMoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwog
ICBSVENfRENIRUNLKGVuYWJsZWRfKTsKICAgLy8gUmVwb3J0IHRoZSBkZWxheSBmb3IgdGhlIGZp
cnN0IEFFQyBjb21wb25lbnQuCiAgIHJldHVybiBXZWJSdGNBZWNfc3lzdGVtX2RlbGF5KFdlYlJ0
Y0FlY19hZWNfY29yZShjYW5jZWxsZXJzX1swXS0+c3RhdGUoKSkpOwpAQCAtNDcxLDcgKzQyOSw2
IEBAIHZvaWQgRWNob0NhbmNlbGxhdGlvbkltcGw6OlBhY2tSZW5kZXJBdWRpb0J1ZmZlcigKIAog
dm9pZCBFY2hvQ2FuY2VsbGF0aW9uSW1wbDo6U2V0RXh0cmFPcHRpb25zKGNvbnN0IHdlYnJ0Yzo6
Q29uZmlnJiBjb25maWcpIHsKICAgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVy
ZV8pOwogICAgIGV4dGVuZGVkX2ZpbHRlcl9lbmFibGVkXyA9IGNvbmZpZy5HZXQ8RXh0ZW5kZWRG
aWx0ZXI+KCkuZW5hYmxlZDsKICAgICBkZWxheV9hZ25vc3RpY19lbmFibGVkXyA9IGNvbmZpZy5H
ZXQ8RGVsYXlBZ25vc3RpYz4oKS5lbmFibGVkOwogICAgIHJlZmluZWRfYWRhcHRpdmVfZmlsdGVy
X2VuYWJsZWRfID0KQEAgLTQ4MSw4ICs0MzgsNiBAQCB2b2lkIEVjaG9DYW5jZWxsYXRpb25JbXBs
OjpTZXRFeHRyYU9wdGlvbnMoY29uc3Qgd2VicnRjOjpDb25maWcmIGNvbmZpZykgewogfQogCiBp
bnQgRWNob0NhbmNlbGxhdGlvbkltcGw6OkNvbmZpZ3VyZSgpIHsKLSAgcnRjOjpDcml0U2NvcGUg
Y3NfcmVuZGVyKGNyaXRfcmVuZGVyXyk7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3Jp
dF9jYXB0dXJlXyk7CiAgIEFlY0NvbmZpZyBjb25maWc7CiAgIGNvbmZpZy5tZXRyaWNzTW9kZSA9
IG1ldHJpY3NfZW5hYmxlZF87CiAgIGNvbmZpZy5ubHBNb2RlID0gTWFwU2V0dGluZyhzdXBwcmVz
c2lvbl9sZXZlbF8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9uX2lt
cGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlvbl9pbXBsLmgKaW5kZXggMDkxYTdiNTEx
NmEyYWQ3ZTYxOGE5Y2ZlMTg0NzQxM2U3ZjQ0MmJhMi4uYThiNDNhOGNkNjJiOGVjMTUxYjgwZGUw
YjBhZTY0OTEzNjc3ZmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY2FuY2VsbGF0aW9u
X2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jYW5jZWxsYXRpb25faW1wbC5oCkBAIC0xMSwx
MiArMTEsMTYgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0VDSE9fQ0FOQ0VM
TEFUSU9OX0lNUExfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0VDSE9fQ0FO
Q0VMTEFUSU9OX0lNUExfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVk
ZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdp
Yy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAt
MjgsOCArMzIsNyBAQCBjbGFzcyBBdWRpb0J1ZmZlcjsKIC8vIGZvciBQQyBhbmQgSVAgcGhvbmUg
YXBwbGljYXRpb25zLgogY2xhc3MgRWNob0NhbmNlbGxhdGlvbkltcGwgewogIHB1YmxpYzoKLSAg
RWNob0NhbmNlbGxhdGlvbkltcGwocnRjOjpDcml0aWNhbFNlY3Rpb24qIGNyaXRfcmVuZGVyLAot
ICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNyaXRpY2FsU2VjdGlvbiogY3JpdF9jYXB0dXJl
KTsKKyAgZXhwbGljaXQgRWNob0NhbmNlbGxhdGlvbkltcGwoKTsKICAgfkVjaG9DYW5jZWxsYXRp
b25JbXBsKCk7CiAKICAgdm9pZCBQcm9jZXNzUmVuZGVyQXVkaW8ocnRjOjpBcnJheVZpZXc8Y29u
c3QgZmxvYXQ+IHBhY2tlZF9yZW5kZXJfYXVkaW8pOwpAQCAtODAsMTcgKzgzLDIzIEBAIGNsYXNz
IEVjaG9DYW5jZWxsYXRpb25JbXBsIHsKICAgLy8gUF9hOiAgICBJbnRlcm5hbCBzaWduYWwgcG93
ZXIgYXQgdGhlIHBvaW50IGJlZm9yZSB0aGUgQUVDJ3Mgbm9uLWxpbmVhcgogICAvLyAgICAgICAg
IHByb2Nlc3Nvci4KICAgc3RydWN0IE1ldHJpY3MgeworICAgIHN0cnVjdCBTdGF0aXN0aWMgewor
ICAgICAgaW50IGluc3RhbnQgPSAwOyAgLy8gSW5zdGFudGFuZW91cyB2YWx1ZS4KKyAgICAgIGlu
dCBhdmVyYWdlID0gMDsgIC8vIExvbmctdGVybSBhdmVyYWdlLgorICAgICAgaW50IG1heGltdW0g
PSAwOyAgLy8gTG9uZy10ZXJtIG1heGltdW0uCisgICAgICBpbnQgbWluaW11bSA9IDA7ICAvLyBM
b25nLXRlcm0gbWluaW11bS4KKyAgICB9OwogICAgIC8vIFJFUkwgPSBFUkwgKyBFUkxFCi0gICAg
QXVkaW9Qcm9jZXNzaW5nOjpTdGF0aXN0aWMgcmVzaWR1YWxfZWNob19yZXR1cm5fbG9zczsKKyAg
ICBTdGF0aXN0aWMgcmVzaWR1YWxfZWNob19yZXR1cm5fbG9zczsKIAogICAgIC8vIEVSTCA9IDEw
bG9nXzEwKFBfZmFyIC8gUF9lY2hvKQotICAgIEF1ZGlvUHJvY2Vzc2luZzo6U3RhdGlzdGljIGVj
aG9fcmV0dXJuX2xvc3M7CisgICAgU3RhdGlzdGljIGVjaG9fcmV0dXJuX2xvc3M7CiAKICAgICAv
LyBFUkxFID0gMTBsb2dfMTAoUF9lY2hvIC8gUF9vdXQpCi0gICAgQXVkaW9Qcm9jZXNzaW5nOjpT
dGF0aXN0aWMgZWNob19yZXR1cm5fbG9zc19lbmhhbmNlbWVudDsKKyAgICBTdGF0aXN0aWMgZWNo
b19yZXR1cm5fbG9zc19lbmhhbmNlbWVudDsKIAogICAgIC8vIChQcmUgbm9uLWxpbmVhciBwcm9j
ZXNzaW5nIHN1cHByZXNzaW9uKSBBX05MUCA9IDEwbG9nXzEwKFBfZWNobyAvIFBfYSkKLSAgICBB
dWRpb1Byb2Nlc3Npbmc6OlN0YXRpc3RpYyBhX25scDsKKyAgICBTdGF0aXN0aWMgYV9ubHA7CiAK
ICAgICAvLyBGcmFjdGlvbiBvZiB0aW1lIHRoYXQgdGhlIEFFQyBsaW5lYXIgZmlsdGVyIGlzIGRp
dmVyZ2VudCwgaW4gYSAxLXNlY29uZAogICAgIC8vIG5vbi1vdmVybGFwcGVkIGFnZ3JlZ2F0aW9u
IHdpbmRvdy4KQEAgLTE1MCwyOCArMTU5LDIzIEBAIGNsYXNzIEVjaG9DYW5jZWxsYXRpb25JbXBs
IHsKICAgdm9pZCBBbGxvY2F0ZVJlbmRlclF1ZXVlKCk7CiAgIGludCBDb25maWd1cmUoKTsKIAot
ICBydGM6OkNyaXRpY2FsU2VjdGlvbiogY29uc3QgY3JpdF9yZW5kZXJfIFJUQ19BQ1FVSVJFRF9C
RUZPUkUoY3JpdF9jYXB0dXJlXyk7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uKiBjb25zdCBjcml0
X2NhcHR1cmVfOwotCiAgIGJvb2wgZW5hYmxlZF8gPSBmYWxzZTsKLSAgYm9vbCBkcmlmdF9jb21w
ZW5zYXRpb25fZW5hYmxlZF8gUlRDX0dVQVJERURfQlkoY3JpdF9jYXB0dXJlXyk7Ci0gIGJvb2wg
bWV0cmljc19lbmFibGVkXyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAgU3VwcHJl
c3Npb25MZXZlbCBzdXBwcmVzc2lvbl9sZXZlbF8gUlRDX0dVQVJERURfQlkoY3JpdF9jYXB0dXJl
Xyk7Ci0gIGludCBzdHJlYW1fZHJpZnRfc2FtcGxlc18gUlRDX0dVQVJERURfQlkoY3JpdF9jYXB0
dXJlXyk7Ci0gIGJvb2wgd2FzX3N0cmVhbV9kcmlmdF9zZXRfIFJUQ19HVUFSREVEX0JZKGNyaXRf
Y2FwdHVyZV8pOwotICBib29sIHN0cmVhbV9oYXNfZWNob18gUlRDX0dVQVJERURfQlkoY3JpdF9j
YXB0dXJlXyk7Ci0gIGJvb2wgZGVsYXlfbG9nZ2luZ19lbmFibGVkXyBSVENfR1VBUkRFRF9CWShj
cml0X2NhcHR1cmVfKTsKLSAgYm9vbCBleHRlbmRlZF9maWx0ZXJfZW5hYmxlZF8gUlRDX0dVQVJE
RURfQlkoY3JpdF9jYXB0dXJlXyk7Ci0gIGJvb2wgZGVsYXlfYWdub3N0aWNfZW5hYmxlZF8gUlRD
X0dVQVJERURfQlkoY3JpdF9jYXB0dXJlXyk7Ci0gIGJvb2wgcmVmaW5lZF9hZGFwdGl2ZV9maWx0
ZXJfZW5hYmxlZF8gUlRDX0dVQVJERURfQlkoY3JpdF9jYXB0dXJlXykgPSBmYWxzZTsKKyAgYm9v
bCBkcmlmdF9jb21wZW5zYXRpb25fZW5hYmxlZF87CisgIGJvb2wgbWV0cmljc19lbmFibGVkXzsK
KyAgU3VwcHJlc3Npb25MZXZlbCBzdXBwcmVzc2lvbl9sZXZlbF87CisgIGludCBzdHJlYW1fZHJp
ZnRfc2FtcGxlc187CisgIGJvb2wgd2FzX3N0cmVhbV9kcmlmdF9zZXRfOworICBib29sIHN0cmVh
bV9oYXNfZWNob187CisgIGJvb2wgZGVsYXlfbG9nZ2luZ19lbmFibGVkXzsKKyAgYm9vbCBleHRl
bmRlZF9maWx0ZXJfZW5hYmxlZF87CisgIGJvb2wgZGVsYXlfYWdub3N0aWNfZW5hYmxlZF87Cisg
IGJvb2wgcmVmaW5lZF9hZGFwdGl2ZV9maWx0ZXJfZW5hYmxlZF8gPSBmYWxzZTsKIAogICAvLyBP
bmx5IGFjdGl2ZSBvbiBDaHJvbWUgT1MgZGV2aWNlcy4KLSAgY29uc3QgYm9vbCBlbmZvcmNlX3pl
cm9fc3RyZWFtX2RlbGF5XyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKKyAgY29uc3Qg
Ym9vbCBlbmZvcmNlX3plcm9fc3RyZWFtX2RlbGF5XzsKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Q2FuY2VsbGVyPj4gY2FuY2VsbGVyc187CiAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJl
YW1Qcm9wZXJ0aWVzPiBzdHJlYW1fcHJvcGVydGllc187Ci0KLSAgUlRDX0RJU0FMTE9XX0lNUExJ
Q0lUX0NPTlNUUlVDVE9SUyhFY2hvQ2FuY2VsbGF0aW9uSW1wbCk7CiB9OwogCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jYW5jZWxsYXRpb25faW1w
bF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlvbl9pbXBsX3VuaXR0ZXN0
LmNjCmluZGV4IGM1MGM1MmY4NTdiZjczNTFiNmI4MTUxNWM3Yjk3YmQ1NzU4ZGRhNWUuLjlkODFj
MWRmM2I3NmIyM2ExOWQwYWFhMTA2ZGNjNTJmMGM0ZDBjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9lY2hvX2NhbmNlbGxhdGlvbl9pbXBsX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hv
X2NhbmNlbGxhdGlvbl9pbXBsX3VuaXR0ZXN0LmNjCkBAIC0xOCw5ICsxOCw3IEBACiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogVEVTVChFY2hvQ2FuY2VsbGF0aW9uSW50ZXJuYWxUZXN0LCBFeHRlbmRl
ZEZpbHRlcikgewotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X3JlbmRlcjsKLSAgcnRjOjpD
cml0aWNhbFNlY3Rpb24gY3JpdF9jYXB0dXJlOwotICBFY2hvQ2FuY2VsbGF0aW9uSW1wbCBlY2hv
X2NhbmNlbGxlcigmY3JpdF9yZW5kZXIsICZjcml0X2NhcHR1cmUpOworICBFY2hvQ2FuY2VsbGF0
aW9uSW1wbCBlY2hvX2NhbmNlbGxlcjsKICAgZWNob19jYW5jZWxsZXIuSW5pdGlhbGl6ZShBdWRp
b1Byb2Nlc3Npbmc6OmtTYW1wbGVSYXRlMzJrSHosIDIsIDIsIDIpOwogCiAgIEVYUEVDVF9UUlVF
KGVjaG9fY2FuY2VsbGVyLmFlY19jb3JlKCkgPT0gbnVsbHB0cik7CkBAIC01MSw5ICs0OSw3IEBA
IFRFU1QoRWNob0NhbmNlbGxhdGlvbkludGVybmFsVGVzdCwgRXh0ZW5kZWRGaWx0ZXIpIHsKIH0K
IAogVEVTVChFY2hvQ2FuY2VsbGF0aW9uSW50ZXJuYWxUZXN0LCBEZWxheUFnbm9zdGljKSB7Ci0g
IHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfcmVuZGVyOwotICBydGM6OkNyaXRpY2FsU2VjdGlv
biBjcml0X2NhcHR1cmU7Ci0gIEVjaG9DYW5jZWxsYXRpb25JbXBsIGVjaG9fY2FuY2VsbGVyKCZj
cml0X3JlbmRlciwgJmNyaXRfY2FwdHVyZSk7CisgIEVjaG9DYW5jZWxsYXRpb25JbXBsIGVjaG9f
Y2FuY2VsbGVyOwogICBlY2hvX2NhbmNlbGxlci5Jbml0aWFsaXplKEF1ZGlvUHJvY2Vzc2luZzo6
a1NhbXBsZVJhdGUzMmtIeiwgMSwgMSwgMSk7CiAKICAgRVhQRUNUX1RSVUUoZWNob19jYW5jZWxs
ZXIuYWVjX2NvcmUoKSA9PSBOVUxMKTsKQEAgLTg1LDkgKzgxLDcgQEAgVEVTVChFY2hvQ2FuY2Vs
bGF0aW9uSW50ZXJuYWxUZXN0LCBEZWxheUFnbm9zdGljKSB7CiB9CiAKIFRFU1QoRWNob0NhbmNl
bGxhdGlvbkludGVybmFsVGVzdCwgSW50ZXJmYWNlQ29uZmlndXJhdGlvbikgewotICBydGM6OkNy
aXRpY2FsU2VjdGlvbiBjcml0X3JlbmRlcjsKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9j
YXB0dXJlOwotICBFY2hvQ2FuY2VsbGF0aW9uSW1wbCBlY2hvX2NhbmNlbGxlcigmY3JpdF9yZW5k
ZXIsICZjcml0X2NhcHR1cmUpOworICBFY2hvQ2FuY2VsbGF0aW9uSW1wbCBlY2hvX2NhbmNlbGxl
cjsKICAgZWNob19jYW5jZWxsZXIuSW5pdGlhbGl6ZShBdWRpb1Byb2Nlc3Npbmc6OmtTYW1wbGVS
YXRlMTZrSHosIDEsIDEsIDEpOwogCiAgIEVYUEVDVF9FUSgwLCBlY2hvX2NhbmNlbGxlci5lbmFi
bGVfZHJpZnRfY29tcGVuc2F0aW9uKHRydWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hv
X2NvbnRyb2xfbW9iaWxlX2JpdF9leGFjdF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2Nv
bnRyb2xfbW9iaWxlX2JpdF9leGFjdF91bml0dGVzdC5jYwppbmRleCA4YjgzNjkyNjBhNTU2NTFk
ZWMyMGU4OTFkOTYzOWU5MmFmMTdiNTFlLi43ODQ0ZGFmNTIyNTI2NmFjZmUwZGJjYzQ2MWQ5Yzhl
ZjBjN2UwZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV9iaXRf
ZXhhY3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfYml0
X2V4YWN0X3VuaXR0ZXN0LmNjCkBAIC02NCw5ICs2NCw3IEBAIHZvaWQgUnVuQml0ZXhhY3RuZXNz
VGVzdChpbnQgc2FtcGxlX3JhdGVfaHosCiAgICAgICAgICAgICAgICAgICAgICAgICAgRWNob0Nv
bnRyb2xNb2JpbGVJbXBsOjpSb3V0aW5nTW9kZSByb3V0aW5nX21vZGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBjb21mb3J0X25vaXNlX2VuYWJsZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpBcnJheVZpZXc8Y29uc3QgZmxvYXQ+JiBvdXRwdXRfcmVmZXJl
bmNlKSB7Ci0gIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRfcmVuZGVyOwotICBydGM6OkNyaXRp
Y2FsU2VjdGlvbiBjcml0X2NhcHR1cmU7Ci0gIEVjaG9Db250cm9sTW9iaWxlSW1wbCBlY2hvX2Nv
bnRyb2xfbW9iaWxlKCZjcml0X3JlbmRlciwgJmNyaXRfY2FwdHVyZSk7CisgIEVjaG9Db250cm9s
TW9iaWxlSW1wbCBlY2hvX2NvbnRyb2xfbW9iaWxlOwogICBTZXR1cENvbXBvbmVudChzYW1wbGVf
cmF0ZV9oeiwgcm91dGluZ19tb2RlLCBjb21mb3J0X25vaXNlX2VuYWJsZWQsCiAgICAgICAgICAg
ICAgICAgICZlY2hvX2NvbnRyb2xfbW9iaWxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2Vj
aG9fY29udHJvbF9tb2JpbGVfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NvbnRyb2xfbW9iaWxl
X2ltcGwuY2MKaW5kZXggYmQxMjVjNmUwZGUwOWE0NTdlYjI1YmE5YWRhNTlkZDJlM2U1ZWE3MS4u
YjlmYmY0MjA1Mjc5N2RmZmFhM2Q2MzllMTYyMDI2OGIwODU2MDgwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19j
b250cm9sX21vYmlsZV9pbXBsLmNjCkBAIC0xMSwxMSArMTEsMTMgQEAKICNpbmNsdWRlICJtb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV9pbXBsLmgiCiAKICNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgogCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2FlY20vZWNob19jb250cm9sX21vYmlsZS5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
QEAgLTU1LDEwICs1Nyw2IEBAIEF1ZGlvUHJvY2Vzc2luZzo6RXJyb3IgTWFwRXJyb3IoaW50IGVy
cikgewogfQogfSAgLy8gbmFtZXNwYWNlCiAKLXNpemVfdCBFY2hvQ29udHJvbE1vYmlsZUltcGw6
OmVjaG9fcGF0aF9zaXplX2J5dGVzKCkgewotICByZXR1cm4gV2ViUnRjQWVjbV9lY2hvX3BhdGhf
c2l6ZV9ieXRlcygpOwotfQotCiBzdHJ1Y3QgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpTdHJlYW1Q
cm9wZXJ0aWVzIHsKICAgU3RyZWFtUHJvcGVydGllcygpID0gZGVsZXRlOwogICBTdHJlYW1Qcm9w
ZXJ0aWVzKGludCBzYW1wbGVfcmF0ZV9oeiwKQEAgLTkwLDE3ICs4OCwxMCBAQCBjbGFzcyBFY2hv
Q29udHJvbE1vYmlsZUltcGw6OkNhbmNlbGxlciB7CiAgICAgcmV0dXJuIHN0YXRlXzsKICAgfQog
Ci0gIHZvaWQgSW5pdGlhbGl6ZShpbnQgc2FtcGxlX3JhdGVfaHosCi0gICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyKiBleHRlcm5hbF9lY2hvX3BhdGgsCi0gICAgICAgICAgICAgICAgICBz
aXplX3QgZWNob19wYXRoX3NpemVfYnl0ZXMpIHsKKyAgdm9pZCBJbml0aWFsaXplKGludCBzYW1w
bGVfcmF0ZV9oeikgewogICAgIFJUQ19EQ0hFQ0soc3RhdGVfKTsKICAgICBpbnQgZXJyb3IgPSBX
ZWJSdGNBZWNtX0luaXQoc3RhdGVfLCBzYW1wbGVfcmF0ZV9oeik7CiAgICAgUlRDX0RDSEVDS19F
UShBdWRpb1Byb2Nlc3Npbmc6OmtOb0Vycm9yLCBlcnJvcik7Ci0gICAgaWYgKGV4dGVybmFsX2Vj
aG9fcGF0aCAhPSBOVUxMKSB7Ci0gICAgICBlcnJvciA9IFdlYlJ0Y0FlY21fSW5pdEVjaG9QYXRo
KHN0YXRlXywgZXh0ZXJuYWxfZWNob19wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlY2hvX3BhdGhfc2l6ZV9ieXRlcyk7Ci0gICAgICBSVENfRENIRUNLX0VRKEF1
ZGlvUHJvY2Vzc2luZzo6a05vRXJyb3IsIGVycm9yKTsKLSAgICB9CiAgIH0KIAogIHByaXZhdGU6
CkBAIC0xMDgsMjcgKzk5LDEzIEBAIGNsYXNzIEVjaG9Db250cm9sTW9iaWxlSW1wbDo6Q2FuY2Vs
bGVyIHsKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihDYW5jZWxsZXIpOwogfTsKIAot
RWNob0NvbnRyb2xNb2JpbGVJbXBsOjpFY2hvQ29udHJvbE1vYmlsZUltcGwocnRjOjpDcml0aWNh
bFNlY3Rpb24qIGNyaXRfcmVuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnRjOjpDcml0aWNhbFNlY3Rpb24qIGNyaXRfY2FwdHVyZSkKLSAgICA6IGNy
aXRfcmVuZGVyXyhjcml0X3JlbmRlciksCi0gICAgICBjcml0X2NhcHR1cmVfKGNyaXRfY2FwdHVy
ZSksCi0gICAgICByb3V0aW5nX21vZGVfKGtTcGVha2VycGhvbmUpLAotICAgICAgY29tZm9ydF9u
b2lzZV9lbmFibGVkXyhmYWxzZSksCi0gICAgICBleHRlcm5hbF9lY2hvX3BhdGhfKE5VTEwpIHsK
LSAgUlRDX0RDSEVDSyhjcml0X3JlbmRlcik7Ci0gIFJUQ19EQ0hFQ0soY3JpdF9jYXB0dXJlKTsK
LX0KK0VjaG9Db250cm9sTW9iaWxlSW1wbDo6RWNob0NvbnRyb2xNb2JpbGVJbXBsKCkKKyAgICA6
IHJvdXRpbmdfbW9kZV8oa1NwZWFrZXJwaG9uZSksIGNvbWZvcnRfbm9pc2VfZW5hYmxlZF8oZmFs
c2UpIHt9CiAKLUVjaG9Db250cm9sTW9iaWxlSW1wbDo6fkVjaG9Db250cm9sTW9iaWxlSW1wbCgp
IHsKLSAgaWYgKGV4dGVybmFsX2VjaG9fcGF0aF8gIT0gTlVMTCkgewotICAgIGRlbGV0ZVtdIGV4
dGVybmFsX2VjaG9fcGF0aF87Ci0gICAgZXh0ZXJuYWxfZWNob19wYXRoXyA9IE5VTEw7Ci0gIH0K
LX0KK0VjaG9Db250cm9sTW9iaWxlSW1wbDo6fkVjaG9Db250cm9sTW9iaWxlSW1wbCgpIHt9CiAK
IHZvaWQgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpQcm9jZXNzUmVuZGVyQXVkaW8oCiAgICAgcnRj
OjpBcnJheVZpZXc8Y29uc3QgaW50MTZfdD4gcGFja2VkX3JlbmRlcl9hdWRpbykgewotICBydGM6
OkNyaXRTY29wZSBjc19jYXB0dXJlKGNyaXRfY2FwdHVyZV8pOwogICBpZiAoIWVuYWJsZWRfKSB7
CiAgICAgcmV0dXJuOwogICB9CkBAIC0xODEsNyArMTU4LDYgQEAgc2l6ZV90IEVjaG9Db250cm9s
TW9iaWxlSW1wbDo6TnVtQ2FuY2VsbGVyc1JlcXVpcmVkKAogCiBpbnQgRWNob0NvbnRyb2xNb2Jp
bGVJbXBsOjpQcm9jZXNzQ2FwdHVyZUF1ZGlvKEF1ZGlvQnVmZmVyKiBhdWRpbywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0cmVhbV9kZWxheV9t
cykgewotICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKGNyaXRfY2FwdHVyZV8pOwogICBpZiAo
IWVuYWJsZWRfKSB7CiAgICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a05vRXJyb3I7CiAgIH0K
QEAgLTIyOCw4ICsyMDQsNiBAQCBpbnQgRWNob0NvbnRyb2xNb2JpbGVJbXBsOjpQcm9jZXNzQ2Fw
dHVyZUF1ZGlvKEF1ZGlvQnVmZmVyKiBhdWRpbywKIAogaW50IEVjaG9Db250cm9sTW9iaWxlSW1w
bDo6RW5hYmxlKGJvb2wgZW5hYmxlKSB7CiAgIC8vIEVuc3VyZSBBRUMgYW5kIEFFQ00gYXJlIG5v
dCBib3RoIGVuYWJsZWQuCi0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX3JlbmRlcihjcml0X3JlbmRlcl8p
OwotICBydGM6OkNyaXRTY29wZSBjc19jYXB0dXJlKGNyaXRfY2FwdHVyZV8pOwogICBSVENfRENI
RUNLKHN0cmVhbV9wcm9wZXJ0aWVzXyk7CiAKICAgaWYgKGVuYWJsZSAmJgpAQCAtMjUyLDcgKzIy
Niw2IEBAIGludCBFY2hvQ29udHJvbE1vYmlsZUltcGw6OkVuYWJsZShib29sIGVuYWJsZSkgewog
fQogCiBib29sIEVjaG9Db250cm9sTW9iaWxlSW1wbDo6aXNfZW5hYmxlZCgpIGNvbnN0IHsKLSAg
cnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgIHJldHVybiBlbmFibGVkXzsKIH0K
IApAQCAtMjYwLDkwICsyMzMsMjYgQEAgaW50IEVjaG9Db250cm9sTW9iaWxlSW1wbDo6c2V0X3Jv
dXRpbmdfbW9kZShSb3V0aW5nTW9kZSBtb2RlKSB7CiAgIGlmIChNYXBTZXR0aW5nKG1vZGUpID09
IC0xKSB7CiAgICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFtZXRlckVycm9yOwog
ICB9Ci0KLSAgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICAgIHJv
dXRpbmdfbW9kZV8gPSBtb2RlOwotICB9CiAgIHJldHVybiBDb25maWd1cmUoKTsKIH0KIAogRWNo
b0NvbnRyb2xNb2JpbGVJbXBsOjpSb3V0aW5nTW9kZSBFY2hvQ29udHJvbE1vYmlsZUltcGw6OnJv
dXRpbmdfbW9kZSgpIGNvbnN0IHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7
CiAgIHJldHVybiByb3V0aW5nX21vZGVfOwogfQogCiBpbnQgRWNob0NvbnRyb2xNb2JpbGVJbXBs
OjplbmFibGVfY29tZm9ydF9ub2lzZShib29sIGVuYWJsZSkgewotICB7Ci0gICAgcnRjOjpDcml0
U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7CiAgICAgY29tZm9ydF9ub2lzZV9lbmFibGVkXyA9IGVu
YWJsZTsKLSAgfQogICByZXR1cm4gQ29uZmlndXJlKCk7CiB9CiAKIGJvb2wgRWNob0NvbnRyb2xN
b2JpbGVJbXBsOjppc19jb21mb3J0X25vaXNlX2VuYWJsZWQoKSBjb25zdCB7Ci0gIHJ0Yzo6Q3Jp
dFNjb3BlIGNzKGNyaXRfY2FwdHVyZV8pOwogICByZXR1cm4gY29tZm9ydF9ub2lzZV9lbmFibGVk
XzsKIH0KIAotaW50IEVjaG9Db250cm9sTW9iaWxlSW1wbDo6U2V0RWNob1BhdGgoY29uc3Qgdm9p
ZCogZWNob19wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHNpemVfYnl0ZXMpIHsKLSAgewotICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX3JlbmRlcihjcml0
X3JlbmRlcl8pOwotICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9jYXB0dXJlXyk7
Ci0gICAgaWYgKGVjaG9fcGF0aCA9PSBOVUxMKSB7Ci0gICAgICByZXR1cm4gQXVkaW9Qcm9jZXNz
aW5nOjprTnVsbFBvaW50ZXJFcnJvcjsKLSAgICB9Ci0gICAgaWYgKHNpemVfYnl0ZXMgIT0gZWNo
b19wYXRoX3NpemVfYnl0ZXMoKSkgewotICAgICAgLy8gU2l6ZSBtaXNtYXRjaAotICAgICAgcmV0
dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFtZXRlckVycm9yOwotICAgIH0KLQotICAgIGlm
IChleHRlcm5hbF9lY2hvX3BhdGhfID09IE5VTEwpIHsKLSAgICAgIGV4dGVybmFsX2VjaG9fcGF0
aF8gPSBuZXcgdW5zaWduZWQgY2hhcltzaXplX2J5dGVzXTsKLSAgICB9Ci0gICAgbWVtY3B5KGV4
dGVybmFsX2VjaG9fcGF0aF8sIGVjaG9fcGF0aCwgc2l6ZV9ieXRlcyk7Ci0gIH0KLQotICAvLyBU
T0RPKHBlYWgpOiBTaW1wbGlmeSBvbmNlIHRoZSBFbmFibGUgZnVuY3Rpb24gaGFzIGJlZW4gcmVt
b3ZlZCBmcm9tCi0gIC8vIHRoZSBwdWJsaWMgQVBNIEFQSS4KLSAgUlRDX0RDSEVDSyhzdHJlYW1f
cHJvcGVydGllc18pOwotICBJbml0aWFsaXplKHN0cmVhbV9wcm9wZXJ0aWVzXy0+c2FtcGxlX3Jh
dGVfaHosCi0gICAgICAgICAgICAgc3RyZWFtX3Byb3BlcnRpZXNfLT5udW1fcmV2ZXJzZV9jaGFu
bmVscywKLSAgICAgICAgICAgICBzdHJlYW1fcHJvcGVydGllc18tPm51bV9vdXRwdXRfY2hhbm5l
bHMpOwotICByZXR1cm4gQXVkaW9Qcm9jZXNzaW5nOjprTm9FcnJvcjsKLX0KLQotaW50IEVjaG9D
b250cm9sTW9iaWxlSW1wbDo6R2V0RWNob1BhdGgodm9pZCogZWNob19wYXRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemVfYnl0ZXMpIGNvbnN0IHsK
LSAgcnRjOjpDcml0U2NvcGUgY3MoY3JpdF9jYXB0dXJlXyk7Ci0gIGlmIChlY2hvX3BhdGggPT0g
TlVMTCkgewotICAgIHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtOdWxsUG9pbnRlckVycm9yOwot
ICB9Ci0gIGlmIChzaXplX2J5dGVzICE9IGVjaG9fcGF0aF9zaXplX2J5dGVzKCkpIHsKLSAgICAv
LyBTaXplIG1pc21hdGNoCi0gICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6a0JhZFBhcmFtZXRl
ckVycm9yOwotICB9Ci0gIGlmICghZW5hYmxlZF8pIHsKLSAgICByZXR1cm4gQXVkaW9Qcm9jZXNz
aW5nOjprTm90RW5hYmxlZEVycm9yOwotICB9Ci0KLSAgLy8gR2V0IHRoZSBlY2hvIHBhdGggZnJv
bSB0aGUgZmlyc3QgY2hhbm5lbAotICBpbnQzMl90IGVyciA9Ci0gICAgICBXZWJSdGNBZWNtX0dl
dEVjaG9QYXRoKGNhbmNlbGxlcnNfWzBdLT5zdGF0ZSgpLCBlY2hvX3BhdGgsIHNpemVfYnl0ZXMp
OwotICBpZiAoZXJyICE9IDApIHsKLSAgICByZXR1cm4gTWFwRXJyb3IoZXJyKTsKLSAgfQotCi0g
IHJldHVybiBBdWRpb1Byb2Nlc3Npbmc6OmtOb0Vycm9yOwotfQotCiB2b2lkIEVjaG9Db250cm9s
TW9iaWxlSW1wbDo6SW5pdGlhbGl6ZShpbnQgc2FtcGxlX3JhdGVfaHosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX3JldmVyc2VfY2hhbm5lbHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX291dHB1dF9j
aGFubmVscykgewotICBydGM6OkNyaXRTY29wZSBjc19yZW5kZXIoY3JpdF9yZW5kZXJfKTsKLSAg
cnRjOjpDcml0U2NvcGUgY3NfY2FwdHVyZShjcml0X2NhcHR1cmVfKTsKLQogICBzdHJlYW1fcHJv
cGVydGllc18ucmVzZXQobmV3IFN0cmVhbVByb3BlcnRpZXMoCiAgICAgICBzYW1wbGVfcmF0ZV9o
eiwgbnVtX3JldmVyc2VfY2hhbm5lbHMsIG51bV9vdXRwdXRfY2hhbm5lbHMpKTsKIApAQCAtMzYz
LDE2ICsyNzIsMTIgQEAgdm9pZCBFY2hvQ29udHJvbE1vYmlsZUltcGw6OkluaXRpYWxpemUoaW50
IHNhbXBsZV9yYXRlX2h6LAogICAgIGlmICghY2FuY2VsbGVyKSB7CiAgICAgICBjYW5jZWxsZXIu
cmVzZXQobmV3IENhbmNlbGxlcigpKTsKICAgICB9Ci0gICAgY2FuY2VsbGVyLT5Jbml0aWFsaXpl
KHNhbXBsZV9yYXRlX2h6LCBleHRlcm5hbF9lY2hvX3BhdGhfLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBlY2hvX3BhdGhfc2l6ZV9ieXRlcygpKTsKKyAgICBjYW5jZWxsZXItPkluaXRpYWxp
emUoc2FtcGxlX3JhdGVfaHopOwogICB9Ci0KICAgQ29uZmlndXJlKCk7CiB9CiAKIGludCBFY2hv
Q29udHJvbE1vYmlsZUltcGw6OkNvbmZpZ3VyZSgpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3NfcmVu
ZGVyKGNyaXRfcmVuZGVyXyk7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNzX2NhcHR1cmUoY3JpdF9jYXB0
dXJlXyk7CiAgIEFlY21Db25maWcgY29uZmlnOwogICBjb25maWcuY25nTW9kZSA9IGNvbWZvcnRf
bm9pc2VfZW5hYmxlZF87CiAgIGNvbmZpZy5lY2hvTW9kZSA9IE1hcFNldHRpbmcocm91dGluZ19t
b2RlXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV9pbXBsLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvZWNob19jb250cm9sX21vYmlsZV9pbXBsLmgKaW5kZXggYTViNjZjODMxMWI4
MDQ0N2E5MWQ1NTdhNzQ5ZmZlNzAyNzI3YWJiYi4uZDVhOGIwYjQ0NTE1NWU2NTVlNDJiMzcwMmYx
ZjM3NTIzZjdhMmYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVf
aW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NvbnRyb2xfbW9iaWxlX2ltcGwuaApAQCAtMTEs
MTQgKzExLDEyIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19FQ0hPX0NPTlRS
T0xfTU9CSUxFX0lNUExfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0VDSE9f
Q09OVFJPTF9NT0JJTEVfSU1QTF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8
c3RkaW50Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvcmVuZGVyX3F1ZXVlX2l0ZW1fdmVy
aWZpZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3dhcF9x
dWV1ZS5oIgorI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogCkBAIC0yOCw4ICsyNiw3IEBAIGNsYXNzIEF1ZGlvQnVmZmVyOwogLy8gcm9idXN0IG9wdGlv
biBpbnRlbmRlZCBmb3IgdXNlIG9uIG1vYmlsZSBkZXZpY2VzLgogY2xhc3MgRWNob0NvbnRyb2xN
b2JpbGVJbXBsIHsKICBwdWJsaWM6Ci0gIEVjaG9Db250cm9sTW9iaWxlSW1wbChydGM6OkNyaXRp
Y2FsU2VjdGlvbiogY3JpdF9yZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNy
aXRpY2FsU2VjdGlvbiogY3JpdF9jYXB0dXJlKTsKKyAgRWNob0NvbnRyb2xNb2JpbGVJbXBsKCk7
CiAKICAgfkVjaG9Db250cm9sTW9iaWxlSW1wbCgpOwogCkBAIC01NywyNiArNTQsNiBAQCBjbGFz
cyBFY2hvQ29udHJvbE1vYmlsZUltcGwgewogICBpbnQgZW5hYmxlX2NvbWZvcnRfbm9pc2UoYm9v
bCBlbmFibGUpOwogICBib29sIGlzX2NvbWZvcnRfbm9pc2VfZW5hYmxlZCgpIGNvbnN0OwogCi0g
IC8vIEEgdHlwaWNhbCB1c2UgY2FzZSBpcyB0byBpbml0aWFsaXplIHRoZSBjb21wb25lbnQgd2l0
aCBhbiBlY2hvIHBhdGggZnJvbSBhCi0gIC8vIHByZXZpb3VzIGNhbGwuIFRoZSBlY2hvIHBhdGgg
aXMgcmV0cmlldmVkIHVzaW5nIHxHZXRFY2hvUGF0aCgpfCwgdHlwaWNhbGx5Ci0gIC8vIGF0IHRo
ZSBlbmQgb2YgYSBjYWxsLiBUaGUgZGF0YSBjYW4gdGhlbiBiZSBzdG9yZWQgZm9yIGxhdGVyIHVz
ZSBhcyBhbgotICAvLyBpbml0aWFsaXplciBiZWZvcmUgdGhlIG5leHQgY2FsbCwgdXNpbmcgfFNl
dEVjaG9QYXRoKCl8LgotICAvLwotICAvLyBDb250cm9sbGluZyB0aGUgZWNobyBwYXRoIHRoaXMg
d2F5IHJlcXVpcmVzIHRoZSBkYXRhIHxzaXplX2J5dGVzfCB0byBtYXRjaAotICAvLyB0aGUgaW50
ZXJuYWwgZWNobyBwYXRoIHNpemUuIFRoaXMgc2l6ZSBjYW4gYmUgYWNxdWlyZWQgdXNpbmcKLSAg
Ly8gfGVjaG9fcGF0aF9zaXplX2J5dGVzKCl8LiB8U2V0RWNob1BhdGgoKXwgY2F1c2VzIGFuIGVu
dGlyZSByZXNldCwgd29ydGgKLSAgLy8gbm90aW5nIGlmIGl0IGlzIHRvIGJlIGNhbGxlZCBkdXJp
bmcgYW4gb25nb2luZyBjYWxsLgotICAvLwotICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHZlcnNp
b24gaW5jb21wYXRpYmlsaXRpZXMgbWF5IHJlc3VsdCBpbiBhIHN0b3JlZCBlY2hvCi0gIC8vIHBh
dGggb2YgdGhlIGluY29ycmVjdCBzaXplLiBJbiB0aGlzIGNhc2UsIHRoZSBzdG9yZWQgcGF0aCBz
aG91bGQgYmUKLSAgLy8gZGlzY2FyZGVkLgotICBpbnQgU2V0RWNob1BhdGgoY29uc3Qgdm9pZCog
ZWNob19wYXRoLCBzaXplX3Qgc2l6ZV9ieXRlcyk7Ci0gIGludCBHZXRFY2hvUGF0aCh2b2lkKiBl
Y2hvX3BhdGgsIHNpemVfdCBzaXplX2J5dGVzKSBjb25zdDsKLQotICAvLyBUaGUgcmV0dXJuZWQg
cGF0aCBzaXplIGlzIGd1YXJhbnRlZWQgbm90IHRvIGNoYW5nZSBmb3IgdGhlIGxpZmV0aW1lIG9m
Ci0gIC8vIHRoZSBhcHBsaWNhdGlvbi4KLSAgc3RhdGljIHNpemVfdCBlY2hvX3BhdGhfc2l6ZV9i
eXRlcygpOwotCiAgIHZvaWQgUHJvY2Vzc1JlbmRlckF1ZGlvKHJ0Yzo6QXJyYXlWaWV3PGNvbnN0
IGludDE2X3Q+IHBhY2tlZF9yZW5kZXJfYXVkaW8pOwogICBpbnQgUHJvY2Vzc0NhcHR1cmVBdWRp
byhBdWRpb0J1ZmZlciogYXVkaW8sIGludCBzdHJlYW1fZGVsYXlfbXMpOwogCkBAIC05OCwyMCAr
NzUsMTMgQEAgY2xhc3MgRWNob0NvbnRyb2xNb2JpbGVJbXBsIHsKIAogICBpbnQgQ29uZmlndXJl
KCk7CiAKLSAgcnRjOjpDcml0aWNhbFNlY3Rpb24qIGNvbnN0IGNyaXRfcmVuZGVyXyBSVENfQUNR
VUlSRURfQkVGT1JFKGNyaXRfY2FwdHVyZV8pOwotICBydGM6OkNyaXRpY2FsU2VjdGlvbiogY29u
c3QgY3JpdF9jYXB0dXJlXzsKLQogICBib29sIGVuYWJsZWRfID0gZmFsc2U7CiAKLSAgUm91dGlu
Z01vZGUgcm91dGluZ19tb2RlXyBSVENfR1VBUkRFRF9CWShjcml0X2NhcHR1cmVfKTsKLSAgYm9v
bCBjb21mb3J0X25vaXNlX2VuYWJsZWRfIFJUQ19HVUFSREVEX0JZKGNyaXRfY2FwdHVyZV8pOwot
ICB1bnNpZ25lZCBjaGFyKiBleHRlcm5hbF9lY2hvX3BhdGhfIFJUQ19HVUFSREVEX0JZKGNyaXRf
cmVuZGVyXykKLSAgICAgIFJUQ19HVUFSREVEX0JZKGNyaXRfY2FwdHVyZV8pOworICBSb3V0aW5n
TW9kZSByb3V0aW5nX21vZGVfOworICBib29sIGNvbWZvcnRfbm9pc2VfZW5hYmxlZF87CiAKICAg
c3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbmNlbGxlcj4+IGNhbmNlbGxlcnNfOwogICBz
dGQ6OnVuaXF1ZV9wdHI8U3RyZWFtUHJvcGVydGllcz4gc3RyZWFtX3Byb3BlcnRpZXNfOwotCi0g
IFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoRWNob0NvbnRyb2xNb2JpbGVJbXBs
KTsKIH07CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9l
Y2hvX2NvbnRyb2xfbW9iaWxlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9t
b2JpbGVfdW5pdHRlc3QuY2MKaW5kZXggZDdlNDcwY2ExMjBmOWNhZGRhN2ZlYjgxYTIxZmU0OTU3
MDkwNTMxMi4uZjBlNjA0ODNkNDExYTNlNGU0M2I1ZTViODhhYTc2MTZhYjQzOGNkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL2VjaG9fY29udHJvbF9tb2JpbGVfdW5pdHRlc3QuY2MKQEAgLTE4LDkgKzE4LDcgQEAK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBURVNUKEVjaG9Db250cm9sTW9iaWxlVGVzdCwgSW50ZXJm
YWNlQ29uZmlndXJhdGlvbikgewotICBydGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X3JlbmRlcjsK
LSAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9jYXB0dXJlOwotICBFY2hvQ29udHJvbE1vYmls
ZUltcGwgYWVjbSgmY3JpdF9yZW5kZXIsICZjcml0X2NhcHR1cmUpOworICBFY2hvQ29udHJvbE1v
YmlsZUltcGwgYWVjbTsKICAgYWVjbS5Jbml0aWFsaXplKEF1ZGlvUHJvY2Vzc2luZzo6a1NhbXBs
ZVJhdGUxNmtIeiwgMiwgMik7CiAKICAgLy8gVHVybiBBRUNNIG9uCkBAIC00NiwyOCArNDQsNiBA
QCBURVNUKEVjaG9Db250cm9sTW9iaWxlVGVzdCwgSW50ZXJmYWNlQ29uZmlndXJhdGlvbikgewog
ICBFWFBFQ1RfRVEoMCwgYWVjbS5lbmFibGVfY29tZm9ydF9ub2lzZSh0cnVlKSk7CiAgIEVYUEVD
VF9UUlVFKGFlY20uaXNfY29tZm9ydF9ub2lzZV9lbmFibGVkKCkpOwogCi0gIC8vIFNldCBhbmQg
Z2V0IGVjaG8gcGF0aAotICBjb25zdCBzaXplX3QgZWNob19wYXRoX3NpemUgPSBhZWNtLmVjaG9f
cGF0aF9zaXplX2J5dGVzKCk7Ci0gIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGVjaG9fcGF0aF9pbihl
Y2hvX3BhdGhfc2l6ZSk7Ci0gIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGVjaG9fcGF0aF9vdXQoZWNo
b19wYXRoX3NpemUpOwotICBFWFBFQ1RfRVEoQXVkaW9Qcm9jZXNzaW5nOjprTnVsbFBvaW50ZXJF
cnJvciwKLSAgICAgICAgICAgIGFlY20uU2V0RWNob1BhdGgobnVsbHB0ciwgZWNob19wYXRoX3Np
emUpKTsKLSAgRVhQRUNUX0VRKEF1ZGlvUHJvY2Vzc2luZzo6a051bGxQb2ludGVyRXJyb3IsCi0g
ICAgICAgICAgICBhZWNtLkdldEVjaG9QYXRoKG51bGxwdHIsIGVjaG9fcGF0aF9zaXplKSk7Ci0g
IEVYUEVDVF9FUShBdWRpb1Byb2Nlc3Npbmc6OmtCYWRQYXJhbWV0ZXJFcnJvciwKLSAgICAgICAg
ICAgIGFlY20uR2V0RWNob1BhdGgoZWNob19wYXRoX291dC5kYXRhKCksIDEpKTsKLSAgRVhQRUNU
X0VRKDAsIGFlY20uR2V0RWNob1BhdGgoZWNob19wYXRoX291dC5kYXRhKCksIGVjaG9fcGF0aF9z
aXplKSk7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWNob19wYXRoX3NpemU7IGkrKykgewot
ICAgIGVjaG9fcGF0aF9pbltpXSA9IGVjaG9fcGF0aF9vdXRbaV0gKyAxOwotICB9Ci0gIEVYUEVD
VF9FUShBdWRpb1Byb2Nlc3Npbmc6OmtCYWRQYXJhbWV0ZXJFcnJvciwKLSAgICAgICAgICAgIGFl
Y20uU2V0RWNob1BhdGgoZWNob19wYXRoX2luLmRhdGEoKSwgMSkpOwotICBFWFBFQ1RfRVEoMCwg
YWVjbS5TZXRFY2hvUGF0aChlY2hvX3BhdGhfaW4uZGF0YSgpLCBlY2hvX3BhdGhfc2l6ZSkpOwot
ICBFWFBFQ1RfRVEoMCwgYWVjbS5HZXRFY2hvUGF0aChlY2hvX3BhdGhfb3V0LmRhdGEoKSwgZWNo
b19wYXRoX3NpemUpKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlY2hvX3BhdGhfc2l6ZTsg
aSsrKSB7Ci0gICAgRVhQRUNUX0VRKGVjaG9fcGF0aF9pbltpXSwgZWNob19wYXRoX291dFtpXSk7
Ci0gIH0KLQogICAvLyBUdXJuIEFFQ00gb2ZmCiAgIEVYUEVDVF9FUSgwLCBhZWNtLkVuYWJsZShm
YWxzZSkpOwogICBFWFBFQ1RfRkFMU0UoYWVjbS5pc19lbmFibGVkKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2VjaG9fZGV0ZWN0b3IvY2lyY3VsYXJfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNo
b19kZXRlY3Rvci9jaXJjdWxhcl9idWZmZXIuaAppbmRleCA5ZjVjZGZhOTUzNjQzNTlkNmQzYWUz
ZDU2ZjY1OTBlMTQzNGI0NTQ4Li5jNTIzMTFmODYzYjQ4YjYyNzhmZjMzMGYxODNhZGY1ZDJkYmJl
NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19kZXRlY3Rvci9jaXJjdWxhcl9idWZmZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvZWNob19kZXRlY3Rvci9jaXJjdWxhcl9idWZmZXIuaApAQCAtMTEs
NiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfRUNIT19ERVRFQ1RP
Ul9DSVJDVUxBUl9CVUZGRVJfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0VD
SE9fREVURUNUT1JfQ0lSQ1VMQVJfQlVGRkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNp
bmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sX2Zvcl9leHBlcmltZW50YWxfYWdjLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2dhaW5fY29udHJvbF9mb3JfZXhwZXJpbWVudGFsX2FnYy5jYwppbmRleCA0YWI4
NTZjMmMzM2U1NzA5NDBmYWViOThjMGY3ZjM4OGQzNTk4NDBlLi4xNDc5ZDU4YjU0MzBjOThiYTcw
N2RjMjYzYTJmMmNkOWI4YmQxMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9s
X2Zvcl9leHBlcmltZW50YWxfYWdjLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xfZm9y
X2V4cGVyaW1lbnRhbF9hZ2MuY2MKQEAgLTEzLDcgKzEzLDYgQEAKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvYXRvbWljb3BzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9pbXBsLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2dhaW5fY29udHJvbF9pbXBsLmNjCmluZGV4IDY4NWEyN2ZmNjY4MTIwOWFiMmE0Yjg0MmJj
NzEyZTJiNDk0ZGJiOTAuLmQ1MTE4YmEwNzNkOTk0MGNmY2JhYjM1M2M4OGNlZmVjNzJhZDY4NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xfaW1wbC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvZ2Fpbl9jb250cm9sX2ltcGwuY2MKQEAgLTEwLDEwICsxMCwxNCBAQAogCiAjaW5jbHVkZSAi
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9pbXBsLmgiCiAKKyNpbmNsdWRl
IDxjc3RkaW50PgorCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MvbGVnYWN5L2dhaW5fY29udHJvbC5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVy
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29u
c3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9nYWluX2NvbnRyb2xfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9pbXBsLmgK
aW5kZXggOTU5NDIyZmI0NGMyMGVhMTM5Mzc4MTU3ZDZhMTIxYWMzMGE2N2I2ZS4uYzIxZDkxMTMy
NjJkNDc1YjgzZDU3Y2IyOTZlMjI1ZTlhZmQ3NzQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dh
aW5fY29udHJvbF9pbXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbF9pbXBsLmgKQEAg
LTExLDE0ICsxMSwxNiBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfR0FJTl9D
T05UUk9MX0lNUExfSF8KICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0dBSU5fQ09O
VFJPTF9JTVBMX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4K
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9yZW5kZXJfcXVldWVfaXRlbV92ZXJpZmllci5oIgor
I2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmll
dy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2dhaW5fY29u
dHJvbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zd2FwX3F1
ZXVlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbGxlcjIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5jYwppbmRleCAyOWFmOTYyZTc0NWZiNTA2MzE3
MjIyNDFiOWQ5NDkyOTljN2YxZTdkLi4yYTMyNzQ0OWRmMmUxNjQyODJiZDA2YzI4ZDNjZTk4MTJk
Zjc2MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29udHJvbGxlcjIuaCIKIAorI2luY2x1
ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fZnJhbWVfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgpAQCAtMjQsOCAr
MjUsMTAgQEAgaW50IEdhaW5Db250cm9sbGVyMjo6aW5zdGFuY2VfY291bnRfID0gMDsKIEdhaW5D
b250cm9sbGVyMjo6R2FpbkNvbnRyb2xsZXIyKCkKICAgICA6IGRhdGFfZHVtcGVyXygKICAgICAg
ICAgICBuZXcgQXBtRGF0YUR1bXBlcihydGM6OkF0b21pY09wczo6SW5jcmVtZW50KCZpbnN0YW5j
ZV9jb3VudF8pKSksCi0gICAgICBmaXhlZF9nYWluX2NvbnRyb2xsZXJfKGRhdGFfZHVtcGVyXy5n
ZXQoKSksCi0gICAgICBhZGFwdGl2ZV9hZ2NfKGRhdGFfZHVtcGVyXy5nZXQoKSkge30KKyAgICAg
IGdhaW5fYXBwbGllcl8oLypoYXJkX2NsaXBfc2FtcGxlcz0qL2ZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICAvKmluaXRpYWxfZ2Fpbl9mYWN0b3I9Ki8wLmYpLAorICAgICAgYWRhcHRpdmVfYWdj
XyhuZXcgQWRhcHRpdmVBZ2MoZGF0YV9kdW1wZXJfLmdldCgpKSksCisgICAgICBsaW1pdGVyXyhz
dGF0aWNfY2FzdDxzaXplX3Q+KDQ4MDAwKSwgZGF0YV9kdW1wZXJfLmdldCgpLCAiQWdjMiIpIHt9
CiAKIEdhaW5Db250cm9sbGVyMjo6fkdhaW5Db250cm9sbGVyMigpID0gZGVmYXVsdDsKIApAQCAt
MzQsNyArMzcsNyBAQCB2b2lkIEdhaW5Db250cm9sbGVyMjo6SW5pdGlhbGl6ZShpbnQgc2FtcGxl
X3JhdGVfaHopIHsKICAgICAgICAgICAgICBzYW1wbGVfcmF0ZV9oeiA9PSBBdWRpb1Byb2Nlc3Np
bmc6OmtTYW1wbGVSYXRlMTZrSHogfHwKICAgICAgICAgICAgICBzYW1wbGVfcmF0ZV9oeiA9PSBB
dWRpb1Byb2Nlc3Npbmc6OmtTYW1wbGVSYXRlMzJrSHogfHwKICAgICAgICAgICAgICBzYW1wbGVf
cmF0ZV9oeiA9PSBBdWRpb1Byb2Nlc3Npbmc6OmtTYW1wbGVSYXRlNDhrSHopOwotICBmaXhlZF9n
YWluX2NvbnRyb2xsZXJfLlNldFNhbXBsZVJhdGUoc2FtcGxlX3JhdGVfaHopOworICBsaW1pdGVy
Xy5TZXRTYW1wbGVSYXRlKHNhbXBsZV9yYXRlX2h6KTsKICAgZGF0YV9kdW1wZXJfLT5Jbml0aWF0
ZU5ld1NldE9mUmVjb3JkaW5ncygpOwogICBkYXRhX2R1bXBlcl8tPkR1bXBSYXcoInNhbXBsZV9y
YXRlX2h6Iiwgc2FtcGxlX3JhdGVfaHopOwogfQpAQCAtNDIsMzcgKzQ1LDcxIEBAIHZvaWQgR2Fp
bkNvbnRyb2xsZXIyOjpJbml0aWFsaXplKGludCBzYW1wbGVfcmF0ZV9oeikgewogdm9pZCBHYWlu
Q29udHJvbGxlcjI6OlByb2Nlc3MoQXVkaW9CdWZmZXIqIGF1ZGlvKSB7CiAgIEF1ZGlvRnJhbWVW
aWV3PGZsb2F0PiBmbG9hdF9mcmFtZShhdWRpby0+Y2hhbm5lbHNfZigpLCBhdWRpby0+bnVtX2No
YW5uZWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby0+bnVt
X2ZyYW1lcygpKTsKLSAgaWYgKGFkYXB0aXZlX2RpZ2l0YWxfbW9kZV8pIHsKLSAgICBhZGFwdGl2
ZV9hZ2NfLlByb2Nlc3MoZmxvYXRfZnJhbWUsIGZpeGVkX2dhaW5fY29udHJvbGxlcl8uTGFzdEF1
ZGlvTGV2ZWwoKSk7CisgIC8vIEFwcGx5IGZpeGVkIGdhaW4gZmlyc3QsIHRoZW4gdGhlIGFkYXB0
aXZlIG9uZS4KKyAgZ2Fpbl9hcHBsaWVyXy5BcHBseUdhaW4oZmxvYXRfZnJhbWUpOworICBpZiAo
Y29uZmlnXy5hZGFwdGl2ZV9kaWdpdGFsLmVuYWJsZWQpIHsKKyAgICBhZGFwdGl2ZV9hZ2NfLT5Q
cm9jZXNzKGZsb2F0X2ZyYW1lLCBsaW1pdGVyXy5MYXN0QXVkaW9MZXZlbCgpKTsKICAgfQotICBm
aXhlZF9nYWluX2NvbnRyb2xsZXJfLlByb2Nlc3MoZmxvYXRfZnJhbWUpOworICBsaW1pdGVyXy5Q
cm9jZXNzKGZsb2F0X2ZyYW1lKTsKIH0KIAogdm9pZCBHYWluQ29udHJvbGxlcjI6Ok5vdGlmeUFu
YWxvZ0xldmVsKGludCBsZXZlbCkgewotICBpZiAoYW5hbG9nX2xldmVsXyAhPSBsZXZlbCAmJiBh
ZGFwdGl2ZV9kaWdpdGFsX21vZGVfKSB7Ci0gICAgYWRhcHRpdmVfYWdjXy5SZXNldCgpOworICBp
ZiAoYW5hbG9nX2xldmVsXyAhPSBsZXZlbCAmJiBjb25maWdfLmFkYXB0aXZlX2RpZ2l0YWwuZW5h
YmxlZCkgeworICAgIGFkYXB0aXZlX2FnY18tPlJlc2V0KCk7CiAgIH0KICAgYW5hbG9nX2xldmVs
XyA9IGxldmVsOwogfQogCiB2b2lkIEdhaW5Db250cm9sbGVyMjo6QXBwbHlDb25maWcoCiAgICAg
Y29uc3QgQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMiYgY29uZmlnKSB7
Ci0gIFJUQ19EQ0hFQ0soVmFsaWRhdGUoY29uZmlnKSk7CisgIFJUQ19EQ0hFQ0soVmFsaWRhdGUo
Y29uZmlnKSkKKyAgICAgIDw8ICIgdGhlIGludmFsaWQgY29uZmlnIHdhcyAiIDw8IFRvU3RyaW5n
KGNvbmZpZyk7CisKICAgY29uZmlnXyA9IGNvbmZpZzsKLSAgZml4ZWRfZ2Fpbl9jb250cm9sbGVy
Xy5TZXRHYWluKGNvbmZpZ18uZml4ZWRfZ2Fpbl9kYik7Ci0gIGFkYXB0aXZlX2RpZ2l0YWxfbW9k
ZV8gPSBjb25maWdfLmFkYXB0aXZlX2RpZ2l0YWxfbW9kZTsKKyAgaWYgKGNvbmZpZy5maXhlZF9k
aWdpdGFsLmdhaW5fZGIgIT0gY29uZmlnXy5maXhlZF9kaWdpdGFsLmdhaW5fZGIpIHsKKyAgICAv
LyBSZXNldCB0aGUgbGltaXRlciB0byBxdWlja2x5IHJlYWN0IG9uIGFicnVwdCBsZXZlbCBjaGFu
Z2VzIGNhdXNlZCBieQorICAgIC8vIGxhcmdlIGNoYW5nZXMgb2YgdGhlIGZpeGVkIGdhaW4uCisg
ICAgbGltaXRlcl8uUmVzZXQoKTsKKyAgfQorICBnYWluX2FwcGxpZXJfLlNldEdhaW5GYWN0b3Io
RGJUb1JhdGlvKGNvbmZpZ18uZml4ZWRfZGlnaXRhbC5nYWluX2RiKSk7CisgIGFkYXB0aXZlX2Fn
Y18ucmVzZXQobmV3IEFkYXB0aXZlQWdjKGRhdGFfZHVtcGVyXy5nZXQoKSwgY29uZmlnXykpOwog
fQogCiBib29sIEdhaW5Db250cm9sbGVyMjo6VmFsaWRhdGUoCiAgICAgY29uc3QgQXVkaW9Qcm9j
ZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMiYgY29uZmlnKSB7Ci0gIHJldHVybiBjb25m
aWcuZml4ZWRfZ2Fpbl9kYiA+PSAwLmY7CisgIHJldHVybiBjb25maWcuZml4ZWRfZGlnaXRhbC5n
YWluX2RiID49IDAuZiAmJgorICAgICAgICAgY29uZmlnLmZpeGVkX2RpZ2l0YWwuZ2Fpbl9kYiA8
IDUwLmYgJiYKKyAgICAgICAgIGNvbmZpZy5hZGFwdGl2ZV9kaWdpdGFsLmV4dHJhX3NhdHVyYXRp
b25fbWFyZ2luX2RiID49IDAuZiAmJgorICAgICAgICAgY29uZmlnLmFkYXB0aXZlX2RpZ2l0YWwu
ZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGIgPD0gMTAwLmY7CiB9CiAKIHN0ZDo6c3RyaW5nIEdh
aW5Db250cm9sbGVyMjo6VG9TdHJpbmcoCiAgICAgY29uc3QgQXVkaW9Qcm9jZXNzaW5nOjpDb25m
aWc6OkdhaW5Db250cm9sbGVyMiYgY29uZmlnKSB7CiAgIHJ0Yzo6U3RyaW5nQnVpbGRlciBzczsK
LSAgc3MgPDwgIntlbmFibGVkOiAiIDw8IChjb25maWcuZW5hYmxlZCA/ICJ0cnVlIiA6ICJmYWxz
ZSIpIDw8ICIsICIKLSAgICAgPDwgImZpeGVkX2dhaW5fZEI6ICIgPDwgY29uZmlnLmZpeGVkX2dh
aW5fZGIgPDwgIn0iOworICBzdGQ6OnN0cmluZyBhZGFwdGl2ZV9kaWdpdGFsX2xldmVsX2VzdGlt
YXRvcjsKKyAgdXNpbmcgTGV2ZWxFc3RpbWF0b3JUeXBlID0KKyAgICAgIEF1ZGlvUHJvY2Vzc2lu
Zzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yOworICBzd2l0Y2ggKGNv
bmZpZy5hZGFwdGl2ZV9kaWdpdGFsLmxldmVsX2VzdGltYXRvcikgeworICAgIGNhc2UgTGV2ZWxF
c3RpbWF0b3JUeXBlOjprUm1zOgorICAgICAgYWRhcHRpdmVfZGlnaXRhbF9sZXZlbF9lc3RpbWF0
b3IgPSAiUk1TIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTGV2ZWxFc3RpbWF0b3JUeXBlOjpr
UGVhazoKKyAgICAgIGFkYXB0aXZlX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yID0gInBlYWsiOwor
ICAgICAgYnJlYWs7CisgIH0KKyAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAvLyBjbGFuZyBmb3Jt
YXR0aW5nIGRvZXNuJ3QgcmVzcGVjdCBjdXN0b20gbmVzdGVkIHN0eWxlLgorICBzcyA8PCAieyIK
KyAgICAgPDwgImVuYWJsZWQ6ICIgPDwgKGNvbmZpZy5lbmFibGVkID8gInRydWUiIDogImZhbHNl
IikgPDwgIiwgIgorICAgICA8PCAiZml4ZWRfZGlnaXRhbDoge2dhaW5fZGI6ICIgPDwgY29uZmln
LmZpeGVkX2RpZ2l0YWwuZ2Fpbl9kYiA8PCAifSwgIgorICAgICA8PCAiYWRhcHRpdmVfZGlnaXRh
bDogeyIKKyAgICAgIDw8ICJlbmFibGVkOiAiCisgICAgICAgIDw8IChjb25maWcuYWRhcHRpdmVf
ZGlnaXRhbC5lbmFibGVkID8gInRydWUiIDogImZhbHNlIikgPDwgIiwgIgorICAgICAgPDwgImxl
dmVsX2VzdGltYXRvcjogIiA8PCBhZGFwdGl2ZV9kaWdpdGFsX2xldmVsX2VzdGltYXRvciA8PCAi
LCAiCisgICAgICA8PCAiZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGI6IgorICAgICAgICA8PCBj
b25maWcuYWRhcHRpdmVfZGlnaXRhbC5leHRyYV9zYXR1cmF0aW9uX21hcmdpbl9kYiA8PCAifSIK
KyAgICAgIDw8ICJ9IjsKKyAgLy8gY2xhbmctZm9ybWF0IG9uCiAgIHJldHVybiBzcy5SZWxlYXNl
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvZ2Fpbl9jb250cm9sbGVyMi5oCmluZGV4IGI0NzI3ZDBlNzc3Njk1ZTcwZmQyNGQ0OWNl
YjdhZDhmYTc5NzlhOWMuLjNhMTE4MTBiYjU5ZDk1Mzk1NjZkOGM3NWUxMzAwMGUwOTgxMWM4YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9nYWluX2NvbnRyb2xsZXIyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2dhaW5fY29udHJvbGxlcjIuaApAQCAtMTUsNyArMTUsOCBAQAogI2luY2x1ZGUgPHN0cmluZz4K
IAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2FkYXB0aXZlX2FnYy5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2ZpeGVkX2dhaW5fY29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2dhaW5f
YXBwbGllci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2xpbWl0
ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19w
cm9jZXNzaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCkBA
IC00MywxMSArNDQsMTEgQEAgY2xhc3MgR2FpbkNvbnRyb2xsZXIyIHsKICBwcml2YXRlOgogICBz
dGF0aWMgaW50IGluc3RhbmNlX2NvdW50XzsKICAgc3RkOjp1bmlxdWVfcHRyPEFwbURhdGFEdW1w
ZXI+IGRhdGFfZHVtcGVyXzsKLSAgRml4ZWRHYWluQ29udHJvbGxlciBmaXhlZF9nYWluX2NvbnRy
b2xsZXJfOwogICBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIyIGNvbmZp
Z187Ci0gIEFkYXB0aXZlQWdjIGFkYXB0aXZlX2FnY187CisgIEdhaW5BcHBsaWVyIGdhaW5fYXBw
bGllcl87CisgIHN0ZDo6dW5pcXVlX3B0cjxBZGFwdGl2ZUFnYz4gYWRhcHRpdmVfYWdjXzsKKyAg
TGltaXRlciBsaW1pdGVyXzsKICAgaW50IGFuYWxvZ19sZXZlbF8gPSAtMTsKLSAgYm9vbCBhZGFw
dGl2ZV9kaWdpdGFsX21vZGVfID0gdHJ1ZTsKIAogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOKEdhaW5Db250cm9sbGVyMik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5fY29u
dHJvbGxlcjJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250cm9sbGVyMl91bml0dGVz
dC5jYwppbmRleCA1YmVkY2NkNjRhOGJlYTc2Y2NhNzlhMzY2M2FjNTA5ODBmZGFmNWM0Li4yN2Q1
NDBhMTk4OGU5ZTg5NjlmY2RiMDhjNzVlYTAyYmZjZTRmZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvZ2Fpbl9jb250cm9sbGVyMl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvZ2Fpbl9jb250
cm9sbGVyMl91bml0dGVzdC5jYwpAQCAtMTAsMjAgKzEwLDIwIEBACiAKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkv
YXJyYXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZ2MyL2Fn
YzJfdGVzdGluZ19jb21tb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
YXVkaW9fYnVmZmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2dhaW5f
Y29udHJvbGxlcjIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9h
dWRpb19idWZmZXJfdG9vbHMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dGVzdC9iaXRleGFjdG5lc3NfdG9vbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
ICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNl
IHRlc3QgewotCiBuYW1lc3BhY2UgewogCi1jb25zdGV4cHIgc2l6ZV90IGtGcmFtZVNpemVNcyA9
IDEwdTsKLWNvbnN0ZXhwciBzaXplX3Qga1N0ZXJlbyA9IDJ1OwotCiB2b2lkIFNldEF1ZGlvQnVm
ZmVyU2FtcGxlcyhmbG9hdCB2YWx1ZSwgQXVkaW9CdWZmZXIqIGFiKSB7CiAgIC8vIFNldHMgYWxs
IHRoZSBzYW1wbGVzIGluIHxhYnwgdG8gfHZhbHVlfC4KICAgZm9yIChzaXplX3QgayA9IDA7IGsg
PCBhYi0+bnVtX2NoYW5uZWxzKCk7ICsraykgewpAQCAtMzIsNiArMzIsNzUgQEAgdm9pZCBTZXRB
dWRpb0J1ZmZlclNhbXBsZXMoZmxvYXQgdmFsdWUsIEF1ZGlvQnVmZmVyKiBhYikgewogICB9CiB9
CiAKK2Zsb2F0IFJ1bkFnYzJXaXRoQ29uc3RhbnRJbnB1dChHYWluQ29udHJvbGxlcjIqIGFnYzIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgaW5wdXRfbGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9mcmFtZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlKSB7CisgIGNvbnN0IGludCBudW1f
c2FtcGxlcyA9IHJ0Yzo6Q2hlY2tlZERpdkV4YWN0KHNhbXBsZV9yYXRlLCAxMDApOworICBBdWRp
b0J1ZmZlciBhYihudW1fc2FtcGxlcywgMSwgbnVtX3NhbXBsZXMsIDEsIG51bV9zYW1wbGVzKTsK
KworICAvLyBHaXZlIHRpbWUgdG8gdGhlIGxldmVsIGVzdGltYXRvciB0byBjb252ZXJnZS4KKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fZnJhbWVzICsgMTsgKytpKSB7CisgICAgU2V0QXVk
aW9CdWZmZXJTYW1wbGVzKGlucHV0X2xldmVsLCAmYWIpOworICAgIGFnYzItPlByb2Nlc3MoJmFi
KTsKKyAgfQorCisgIC8vIFJldHVybiB0aGUgbGFzdCBzYW1wbGUgZnJvbSB0aGUgbGFzdCBwcm9j
ZXNzZWQgZnJhbWUuCisgIHJldHVybiBhYi5jaGFubmVsc19mKClbMF1bbnVtX3NhbXBsZXMgLSAx
XTsKK30KKworQXVkaW9Qcm9jZXNzaW5nOjpDb25maWc6OkdhaW5Db250cm9sbGVyMiBDcmVhdGVB
Z2MyRml4ZWREaWdpdGFsTW9kZUNvbmZpZygKKyAgICBmbG9hdCBmaXhlZF9nYWluX2RiKSB7Cisg
IEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjIgY29uZmlnOworICBjb25m
aWcuYWRhcHRpdmVfZGlnaXRhbC5lbmFibGVkID0gZmFsc2U7CisgIGNvbmZpZy5maXhlZF9kaWdp
dGFsLmdhaW5fZGIgPSBmaXhlZF9nYWluX2RiOworICAvLyBUT0RPKGFsZXNzaW9iKTogQ2hlY2sg
d2h5IEFTU0VSVF9UUlVFKCkgYmVsb3cgZG9lcyBub3QgY29tcGlsZS4KKyAgRVhQRUNUX1RSVUUo
R2FpbkNvbnRyb2xsZXIyOjpWYWxpZGF0ZShjb25maWcpKTsKKyAgcmV0dXJuIGNvbmZpZzsKK30K
Kworc3RkOjp1bmlxdWVfcHRyPEdhaW5Db250cm9sbGVyMj4gQ3JlYXRlQWdjMkZpeGVkRGlnaXRh
bE1vZGUoCisgICAgZmxvYXQgZml4ZWRfZ2Fpbl9kYiwKKyAgICBzaXplX3Qgc2FtcGxlX3JhdGVf
aHopIHsKKyAgYXV0byBhZ2MyID0gYWJzbDo6bWFrZV91bmlxdWU8R2FpbkNvbnRyb2xsZXIyPigp
OworICBhZ2MyLT5BcHBseUNvbmZpZyhDcmVhdGVBZ2MyRml4ZWREaWdpdGFsTW9kZUNvbmZpZyhm
aXhlZF9nYWluX2RiKSk7CisgIGFnYzItPkluaXRpYWxpemUoc2FtcGxlX3JhdGVfaHopOworICBy
ZXR1cm4gYWdjMjsKK30KKworZmxvYXQgR2FpbkFmdGVyUHJvY2Vzc2luZ0ZpbGUoR2FpbkNvbnRy
b2xsZXIyKiBnYWluX2NvbnRyb2xsZXIpIHsKKyAgLy8gU2V0IHVwIGFuIEF1ZGlvQnVmZmVyIHRv
IGJlIGZpbGxlZCBmcm9tIHRoZSBzcGVlY2ggZmlsZS4KKyAgY29uc3RleHByIHNpemVfdCBrU3Rl
cmVvID0gMnU7CisgIGNvbnN0IFN0cmVhbUNvbmZpZyBjYXB0dXJlX2NvbmZpZyhBdWRpb1Byb2Nl
c3Npbmc6OmtTYW1wbGVSYXRlNDhrSHosIGtTdGVyZW8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmYWxzZSk7CisgIEF1ZGlvQnVmZmVyIGFiKGNhcHR1cmVfY29uZmlnLm51
bV9mcmFtZXMoKSwgY2FwdHVyZV9jb25maWcubnVtX2NoYW5uZWxzKCksCisgICAgICAgICAgICAg
ICAgIGNhcHR1cmVfY29uZmlnLm51bV9mcmFtZXMoKSwgY2FwdHVyZV9jb25maWcubnVtX2NoYW5u
ZWxzKCksCisgICAgICAgICAgICAgICAgIGNhcHR1cmVfY29uZmlnLm51bV9mcmFtZXMoKSk7Cisg
IHRlc3Q6OklucHV0QXVkaW9GaWxlIGNhcHR1cmVfZmlsZSgKKyAgICAgIHRlc3Q6OkdldEFwbUNh
cHR1cmVUZXN0VmVjdG9yRmlsZU5hbWUoQXVkaW9Qcm9jZXNzaW5nOjprU2FtcGxlUmF0ZTQ4a0h6
KSk7CisgIHN0ZDo6dmVjdG9yPGZsb2F0PiBjYXB0dXJlX2lucHV0KGNhcHR1cmVfY29uZmlnLm51
bV9mcmFtZXMoKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVf
Y29uZmlnLm51bV9jaGFubmVscygpKTsKKworICAvLyBUaGUgZmlsZSBzaG91bGQgY29udGFpbiBh
dCBsZWFzdCB0aGlzIG1hbnkgZnJhbWVzLiBFdmVyeSBpdGVyYXRpb24sIHdlIHB1dAorICAvLyBh
IGZyYW1lIHRocm91Z2ggdGhlIGdhaW4gY29udHJvbGxlci4KKyAgY29uc3QgaW50IGtOdW1GcmFt
ZXNUb1Byb2Nlc3MgPSAxMDA7CisgIGZvciAoaW50IGZyYW1lX25vID0gMDsgZnJhbWVfbm8gPCBr
TnVtRnJhbWVzVG9Qcm9jZXNzOyArK2ZyYW1lX25vKSB7CisgICAgUmVhZEZsb2F0U2FtcGxlc0Zy
b21TdGVyZW9GaWxlKGNhcHR1cmVfY29uZmlnLm51bV9mcmFtZXMoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9jb25maWcubnVtX2NoYW5uZWxzKCksICZjYXB0
dXJlX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfaW5w
dXQpOworCisgICAgdGVzdDo6Q29weVZlY3RvclRvQXVkaW9CdWZmZXIoY2FwdHVyZV9jb25maWcs
IGNhcHR1cmVfaW5wdXQsICZhYik7CisgICAgZ2Fpbl9jb250cm9sbGVyLT5Qcm9jZXNzKCZhYik7
CisgIH0KKworICAvLyBTZW5kIGluIGEgbGFzdCBmcmFtZSB3aXRoIHZhbHVlcyBjb25zdGFudCAx
IChJdCdzIGxvdyBlbm91Z2ggdG8gZGV0ZWN0IGhpZ2gKKyAgLy8gZ2FpbiwgYW5kIGZvciBlYXNl
IG9mIGNvbXB1dGF0aW9uKS4gVGhlIGFwcGxpZWQgZ2FpbiBpcyB0aGUgcmVzdWx0LgorICBjb25z
dGV4cHIgZmxvYXQgc2FtcGxlX3ZhbHVlID0gMS5mOworICBTZXRBdWRpb0J1ZmZlclNhbXBsZXMo
c2FtcGxlX3ZhbHVlLCAmYWIpOworICBnYWluX2NvbnRyb2xsZXItPlByb2Nlc3MoJmFiKTsKKyAg
cmV0dXJuIGFiLmNoYW5uZWxzX2YoKVswXVswXTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIFRF
U1QoR2FpbkNvbnRyb2xsZXIyLCBDcmVhdGVBcHBseUNvbmZpZykgewpAQCAtNDQsNDcgKzExMywx
NzMgQEAgVEVTVChHYWluQ29udHJvbGxlcjIsIENyZWF0ZUFwcGx5Q29uZmlnKSB7CiAgIGdhaW5f
Y29udHJvbGxlcjItPkFwcGx5Q29uZmlnKGNvbmZpZyk7CiAKICAgLy8gQ2hlY2sgdGhhdCBhdHRl
bnVhdGlvbiBpcyBub3QgYWxsb3dlZC4KLSAgY29uZmlnLmZpeGVkX2dhaW5fZGIgPSAtNS5mOwor
ICBjb25maWcuZml4ZWRfZGlnaXRhbC5nYWluX2RiID0gLTUuZjsKICAgRVhQRUNUX0ZBTFNFKEdh
aW5Db250cm9sbGVyMjo6VmFsaWRhdGUoY29uZmlnKSk7CiAKICAgLy8gQ2hlY2sgdGhhdCB2YWxp
ZCBjb25maWd1cmF0aW9ucyBhcmUgYXBwbGllZC4KLSAgZm9yIChjb25zdCBmbG9hdCYgZml4ZWRf
Z2Fpbl9kYiA6IHswLmYsIDUuZiwgMTAuZiwgNTAuZn0pIHsKLSAgICBjb25maWcuZml4ZWRfZ2Fp
bl9kYiA9IGZpeGVkX2dhaW5fZGI7CisgIGZvciAoY29uc3QgZmxvYXQmIGZpeGVkX2dhaW5fZGIg
OiB7MC5mLCA1LmYsIDEwLmYsIDQwLmZ9KSB7CisgICAgY29uZmlnLmZpeGVkX2RpZ2l0YWwuZ2Fp
bl9kYiA9IGZpeGVkX2dhaW5fZGI7CiAgICAgRVhQRUNUX1RSVUUoR2FpbkNvbnRyb2xsZXIyOjpW
YWxpZGF0ZShjb25maWcpKTsKICAgICBnYWluX2NvbnRyb2xsZXIyLT5BcHBseUNvbmZpZyhjb25m
aWcpOwogICB9CiB9CiAKIFRFU1QoR2FpbkNvbnRyb2xsZXIyLCBUb1N0cmluZykgewotICAvLyBU
ZXN0cyBHYWluQ29udHJvbGxlcjI6OlRvU3RyaW5nKCkuCisgIC8vIFRlc3RzIEdhaW5Db250cm9s
bGVyMjo6VG9TdHJpbmcoKS4gT25seSB0ZXN0IHRoZSBlbmFibGVkIHByb3BlcnR5LgogICBBdWRp
b1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIyIGNvbmZpZzsKLSAgY29uZmlnLmZp
eGVkX2dhaW5fZGIgPSA1LmY7CiAKICAgY29uZmlnLmVuYWJsZWQgPSBmYWxzZTsKLSAgRVhQRUNU
X0VRKCJ7ZW5hYmxlZDogZmFsc2UsIGZpeGVkX2dhaW5fZEI6IDV9IiwKLSAgICAgICAgICAgIEdh
aW5Db250cm9sbGVyMjo6VG9TdHJpbmcoY29uZmlnKSk7CisgIEVYUEVDVF9FUSgie2VuYWJsZWQ6
IGZhbHNlIiwgR2FpbkNvbnRyb2xsZXIyOjpUb1N0cmluZyhjb25maWcpLnN1YnN0cigwLCAxNSkp
OwogCiAgIGNvbmZpZy5lbmFibGVkID0gdHJ1ZTsKLSAgRVhQRUNUX0VRKCJ7ZW5hYmxlZDogdHJ1
ZSwgZml4ZWRfZ2Fpbl9kQjogNX0iLAotICAgICAgICAgICAgR2FpbkNvbnRyb2xsZXIyOjpUb1N0
cmluZyhjb25maWcpKTsKKyAgRVhQRUNUX0VRKCJ7ZW5hYmxlZDogdHJ1ZSIsIEdhaW5Db250cm9s
bGVyMjo6VG9TdHJpbmcoY29uZmlnKS5zdWJzdHIoMCwgMTQpKTsKIH0KIAotVEVTVChHYWluQ29u
dHJvbGxlcjIsIFVzYWdlKSB7Ci0gIC8vIFRlc3RzIEdhaW5Db250cm9sbGVyMjo6UHJvY2Vzcygp
IG9uIGFuIEF1ZGlvQnVmZmVyIGluc3RhbmNlLgotICBzdGQ6OnVuaXF1ZV9wdHI8R2FpbkNvbnRy
b2xsZXIyPiBnYWluX2NvbnRyb2xsZXIyKG5ldyBHYWluQ29udHJvbGxlcjIoKSk7Ci0gIGdhaW5f
Y29udHJvbGxlcjItPkluaXRpYWxpemUoQXVkaW9Qcm9jZXNzaW5nOjprU2FtcGxlUmF0ZTQ4a0h6
KTsKLSAgY29uc3Qgc2l6ZV90IG51bV9mcmFtZXMgPSBydGM6OkNoZWNrZWREaXZFeGFjdDxzaXpl
X3Q+KAotICAgICAga0ZyYW1lU2l6ZU1zICogQXVkaW9Qcm9jZXNzaW5nOjprU2FtcGxlUmF0ZTQ4
a0h6LCAxMDAwKTsKLSAgQXVkaW9CdWZmZXIgYWIobnVtX2ZyYW1lcywga1N0ZXJlbywgbnVtX2Zy
YW1lcywga1N0ZXJlbywgbnVtX2ZyYW1lcyk7Ci0gIGNvbnN0ZXhwciBmbG9hdCBzYW1wbGVfdmFs
dWUgPSAxMDAwLmY7Ci0gIFNldEF1ZGlvQnVmZmVyU2FtcGxlcyhzYW1wbGVfdmFsdWUsICZhYik7
CitURVNUKEdhaW5Db250cm9sbGVyMkZpeGVkRGlnaXRhbCwgR2FpblNob3VsZENoYW5nZU9uU2V0
R2FpbikgeworICBjb25zdGV4cHIgZmxvYXQga0lucHV0TGV2ZWwgPSAxMDAwLmY7CisgIGNvbnN0
ZXhwciBzaXplX3Qga051bUZyYW1lcyA9IDU7CisgIGNvbnN0ZXhwciBzaXplX3Qga1NhbXBsZVJh
dGVIeiA9IDgwMDA7CisgIGNvbnN0ZXhwciBmbG9hdCBrR2FpbjBEYiA9IDAuZjsKKyAgY29uc3Rl
eHByIGZsb2F0IGtHYWluMjBEYiA9IDIwLmY7CisKKyAgYXV0byBhZ2MyX2ZpeGVkID0gQ3JlYXRl
QWdjMkZpeGVkRGlnaXRhbE1vZGUoa0dhaW4wRGIsIGtTYW1wbGVSYXRlSHopOworCisgIC8vIFNp
Z25hbCBsZXZlbCBpcyB1bmNoYW5nZWQgd2l0aCAwIGRiIGdhaW4uCisgIEVYUEVDVF9GTE9BVF9F
UShSdW5BZ2MyV2l0aENvbnN0YW50SW5wdXQoYWdjMl9maXhlZC5nZXQoKSwga0lucHV0TGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga051bUZyYW1lcywg
a1NhbXBsZVJhdGVIeiksCisgICAgICAgICAgICAgICAgICBrSW5wdXRMZXZlbCk7CisKKyAgLy8g
KzIwIGRiIHNob3VsZCBpbmNyZWFzZSBzaWduYWwgYnkgYSBmYWN0b3Igb2YgMTAuCisgIGFnYzJf
Zml4ZWQtPkFwcGx5Q29uZmlnKENyZWF0ZUFnYzJGaXhlZERpZ2l0YWxNb2RlQ29uZmlnKGtHYWlu
MjBEYikpOworICBFWFBFQ1RfRkxPQVRfRVEoUnVuQWdjMldpdGhDb25zdGFudElucHV0KGFnYzJf
Zml4ZWQuZ2V0KCksIGtJbnB1dExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtOdW1GcmFtZXMsIGtTYW1wbGVSYXRlSHopLAorICAgICAgICAgICAgICAg
ICAga0lucHV0TGV2ZWwgKiAxMCk7Cit9CisKK1RFU1QoR2FpbkNvbnRyb2xsZXIyRml4ZWREaWdp
dGFsLCBDaGFuZ2VGaXhlZEdhaW5TaG91bGRCZUZhc3RBbmRUaW1lSW52YXJpYW50KSB7CisgIC8v
IE51bWJlciBvZiBmcmFtZXMgcmVxdWlyZWQgZm9yIHRoZSBmaXhlZCBnYWluIGNvbnRyb2xsZXIg
dG8gYWRhcHQgb24gdGhlCisgIC8vIGlucHV0IHNpZ25hbCB3aGVuIHRoZSBnYWluIGNoYW5nZXMu
CisgIGNvbnN0ZXhwciBzaXplX3Qga051bUZyYW1lcyA9IDU7CisKKyAgY29uc3RleHByIGZsb2F0
IGtJbnB1dExldmVsID0gMTAwMC5mOworICBjb25zdGV4cHIgc2l6ZV90IGtTYW1wbGVSYXRlSHog
PSA4MDAwOworICBjb25zdGV4cHIgZmxvYXQga0dhaW5EYkxvdyA9IDAuZjsKKyAgY29uc3RleHBy
IGZsb2F0IGtHYWluRGJIaWdoID0gMjUuZjsKKyAgc3RhdGljX2Fzc2VydChrR2FpbkRiTG93IDwg
a0dhaW5EYkhpZ2gsICIiKTsKKworICBhdXRvIGFnYzJfZml4ZWQgPSBDcmVhdGVBZ2MyRml4ZWRE
aWdpdGFsTW9kZShrR2FpbkRiTG93LCBrU2FtcGxlUmF0ZUh6KTsKKworICAvLyBTdGFydCB3aXRo
IGEgbG93ZXIgZ2Fpbi4KKyAgY29uc3QgZmxvYXQgb3V0cHV0X2xldmVsX3ByZSA9IFJ1bkFnYzJX
aXRoQ29uc3RhbnRJbnB1dCgKKyAgICAgIGFnYzJfZml4ZWQuZ2V0KCksIGtJbnB1dExldmVsLCBr
TnVtRnJhbWVzLCBrU2FtcGxlUmF0ZUh6KTsKKworICAvLyBJbmNyZWFzZSBnYWluLgorICBhZ2My
X2ZpeGVkLT5BcHBseUNvbmZpZyhDcmVhdGVBZ2MyRml4ZWREaWdpdGFsTW9kZUNvbmZpZyhrR2Fp
bkRiSGlnaCkpOworICBzdGF0aWNfY2FzdDx2b2lkPihSdW5BZ2MyV2l0aENvbnN0YW50SW5wdXQo
YWdjMl9maXhlZC5nZXQoKSwga0lucHV0TGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0ZUh6KSk7CisKKyAgLy8g
QmFjayB0byB0aGUgbG93ZXIgZ2Fpbi4KKyAgYWdjMl9maXhlZC0+QXBwbHlDb25maWcoQ3JlYXRl
QWdjMkZpeGVkRGlnaXRhbE1vZGVDb25maWcoa0dhaW5EYkxvdykpOworICBjb25zdCBmbG9hdCBv
dXRwdXRfbGV2ZWxfcG9zdCA9IFJ1bkFnYzJXaXRoQ29uc3RhbnRJbnB1dCgKKyAgICAgIGFnYzJf
Zml4ZWQuZ2V0KCksIGtJbnB1dExldmVsLCBrTnVtRnJhbWVzLCBrU2FtcGxlUmF0ZUh6KTsKKwor
ICBFWFBFQ1RfRVEob3V0cHV0X2xldmVsX3ByZSwgb3V0cHV0X2xldmVsX3Bvc3QpOworfQorCitz
dHJ1Y3QgRml4ZWREaWdpdGFsVGVzdFBhcmFtcyB7CisgIEZpeGVkRGlnaXRhbFRlc3RQYXJhbXMo
ZmxvYXQgZ2Fpbl9kYl9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZ2Fpbl9k
Yl9tYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNhbXBsZV9yYXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2F0dXJhdGlvbl9leHBlY3RlZCkKKyAgICAgIDog
Z2Fpbl9kYl9taW4oZ2Fpbl9kYl9taW4pLAorICAgICAgICBnYWluX2RiX21heChnYWluX2RiX21h
eCksCisgICAgICAgIHNhbXBsZV9yYXRlKHNhbXBsZV9yYXRlKSwKKyAgICAgICAgc2F0dXJhdGlv
bl9leHBlY3RlZChzYXR1cmF0aW9uX2V4cGVjdGVkKSB7fQorICBmbG9hdCBnYWluX2RiX21pbjsK
KyAgZmxvYXQgZ2Fpbl9kYl9tYXg7CisgIHNpemVfdCBzYW1wbGVfcmF0ZTsKKyAgYm9vbCBzYXR1
cmF0aW9uX2V4cGVjdGVkOworfTsKKworY2xhc3MgRml4ZWREaWdpdGFsVGVzdAorICAgIDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QsCisgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJm
YWNlPEZpeGVkRGlnaXRhbFRlc3RQYXJhbXM+IHt9OworCitURVNUX1AoRml4ZWREaWdpdGFsVGVz
dCwgQ2hlY2tTYXR1cmF0aW9uQmVoYXZpb3JXaXRoTGltaXRlcikgeworICBjb25zdCBmbG9hdCBr
SW5wdXRMZXZlbCA9IDMyNzY3LmY7CisgIGNvbnN0IHNpemVfdCBrTnVtRnJhbWVzID0gNTsKKwor
ICBjb25zdCBhdXRvIHBhcmFtcyA9IEdldFBhcmFtKCk7CisKKyAgY29uc3QgYXV0byBnYWluc19k
YiA9CisgICAgICB0ZXN0OjpMaW5TcGFjZShwYXJhbXMuZ2Fpbl9kYl9taW4sIHBhcmFtcy5nYWlu
X2RiX21heCwgMTApOworICBmb3IgKGNvbnN0IGF1dG8gZ2Fpbl9kYiA6IGdhaW5zX2RiKSB7Cisg
ICAgU0NPUEVEX1RSQUNFKHN0ZDo6dG9fc3RyaW5nKGdhaW5fZGIpKTsKKyAgICBhdXRvIGFnYzJf
Zml4ZWQgPSBDcmVhdGVBZ2MyRml4ZWREaWdpdGFsTW9kZShnYWluX2RiLCBwYXJhbXMuc2FtcGxl
X3JhdGUpOworICAgIGNvbnN0IGZsb2F0IHByb2Nlc3NlZF9zYW1wbGUgPSBSdW5BZ2MyV2l0aENv
bnN0YW50SW5wdXQoCisgICAgICAgIGFnYzJfZml4ZWQuZ2V0KCksIGtJbnB1dExldmVsLCBrTnVt
RnJhbWVzLCBwYXJhbXMuc2FtcGxlX3JhdGUpOworICAgIGlmIChwYXJhbXMuc2F0dXJhdGlvbl9l
eHBlY3RlZCkgeworICAgICAgRVhQRUNUX0ZMT0FUX0VRKHByb2Nlc3NlZF9zYW1wbGUsIDMyNzY3
LmYpOworICAgIH0gZWxzZSB7CisgICAgICBFWFBFQ1RfTFQocHJvY2Vzc2VkX3NhbXBsZSwgMzI3
NjcuZik7CisgICAgfQorICB9Cit9CisKK3N0YXRpY19hc3NlcnQodGVzdDo6a0xpbWl0ZXJNYXhJ
bnB1dExldmVsRGJGcyA8IDEwLCAiIik7CitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgKKyAgICBH
YWluQ29udHJvbGxlcjIsCisgICAgRml4ZWREaWdpdGFsVGVzdCwKKyAgICA6OnRlc3Rpbmc6OlZh
bHVlcygKKyAgICAgICAgLy8gV2hlbiBnYWluIDwgfHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZl
bERiRnN8LCB0aGUgbGltaXRlciB3aWxsIG5vdAorICAgICAgICAvLyBzYXR1cmF0ZSB0aGUgc2ln
bmFsIChhdCBhbnkgc2FtcGxlIHJhdGUpLgorICAgICAgICBGaXhlZERpZ2l0YWxUZXN0UGFyYW1z
KDAuMWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdDo6a0xpbWl0ZXJNYXhJ
bnB1dExldmVsRGJGcyAtIDAuMDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgw
MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpLAorICAgICAgICBGaXhl
ZERpZ2l0YWxUZXN0UGFyYW1zKDAuMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzIC0gMC4wMWYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDgwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFs
c2UpLAorICAgICAgICAvLyBXaGVuIGdhaW4gPiB8dGVzdDo6a0xpbWl0ZXJNYXhJbnB1dExldmVs
RGJGc3wsIHRoZSBsaW1pdGVyIHdpbGwKKyAgICAgICAgLy8gc2F0dXJhdGUgdGhlIHNpZ25hbCAo
YXQgYW55IHNhbXBsZSByYXRlKS4KKyAgICAgICAgRml4ZWREaWdpdGFsVGVzdFBhcmFtcyh0ZXN0
OjprTGltaXRlck1heElucHV0TGV2ZWxEYkZzICsgMC4wMWYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTAuZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MDAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpLAorICAgICAgICBGaXhlZERpZ2l0
YWxUZXN0UGFyYW1zKHRlc3Q6OmtMaW1pdGVyTWF4SW5wdXRMZXZlbERiRnMgKyAwLjAxZiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC5mLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQ4MDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSk7
CisKK1RFU1QoR2FpbkNvbnRyb2xsZXIyLCBVc2FnZVNhdHVyYXRpb25NYXJnaW4pIHsKKyAgR2Fp
bkNvbnRyb2xsZXIyIGdhaW5fY29udHJvbGxlcjI7CisgIGdhaW5fY29udHJvbGxlcjIuSW5pdGlh
bGl6ZShBdWRpb1Byb2Nlc3Npbmc6OmtTYW1wbGVSYXRlNDhrSHopOworCiAgIEF1ZGlvUHJvY2Vz
c2luZzo6Q29uZmlnOjpHYWluQ29udHJvbGxlcjIgY29uZmlnOworICAvLyBDaGVjayB0aGF0IHNh
bXBsZXMgYXJlIG5vdCBhbXBsaWZpZWQgYXMgbXVjaCB3aGVuIGV4dHJhIG1hcmdpbiBpcworICAv
LyBoaWdoLiBUaGV5IHNob3VsZCBub3QgYmUgYW1wbGlmaWVkIGF0IGFsbCwgYnV0IG9ubHkgYWZ0
ZXIgY29udmVyZ2VuY2UuIEdDMgorICAvLyBzdGFydHMgd2l0aCBhIGdhaW4sIGFuZCBpdCB0YWtl
cyB0aW1lIHVudGlsIGl0J3MgZG93biB0byAwIGRCLgorICBjb25maWcuZml4ZWRfZGlnaXRhbC5n
YWluX2RiID0gMC5mOworICBjb25maWcuYWRhcHRpdmVfZGlnaXRhbC5lbmFibGVkID0gdHJ1ZTsK
KyAgY29uZmlnLmFkYXB0aXZlX2RpZ2l0YWwuZXh0cmFfc2F0dXJhdGlvbl9tYXJnaW5fZGIgPSA1
MC5mOworICBnYWluX2NvbnRyb2xsZXIyLkFwcGx5Q29uZmlnKGNvbmZpZyk7CiAKLSAgLy8gQ2hl
Y2sgdGhhdCBzYW1wbGVzIGFyZSBhbXBsaWZpZWQgd2hlbiB0aGUgZml4ZWQgZ2FpbiBpcyBncmVh
dGVyIHRoYW4gMCBkQi4KLSAgY29uZmlnLmZpeGVkX2dhaW5fZGIgPSA1LmY7Ci0gIGdhaW5fY29u
dHJvbGxlcjItPkFwcGx5Q29uZmlnKGNvbmZpZyk7Ci0gIGdhaW5fY29udHJvbGxlcjItPlByb2Nl
c3MoJmFiKTsKLSAgRVhQRUNUX0xUKHNhbXBsZV92YWx1ZSwgYWIuY2hhbm5lbHNfZigpWzBdWzBd
KTsKKyAgRVhQRUNUX0xUKEdhaW5BZnRlclByb2Nlc3NpbmdGaWxlKCZnYWluX2NvbnRyb2xsZXIy
KSwgMi5mKTsKK30KKworVEVTVChHYWluQ29udHJvbGxlcjIsIFVzYWdlTm9TYXR1cmF0aW9uTWFy
Z2luKSB7CisgIEdhaW5Db250cm9sbGVyMiBnYWluX2NvbnRyb2xsZXIyOworICBnYWluX2NvbnRy
b2xsZXIyLkluaXRpYWxpemUoQXVkaW9Qcm9jZXNzaW5nOjprU2FtcGxlUmF0ZTQ4a0h6KTsKKwor
ICBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIyIGNvbmZpZzsKKyAgLy8g
Q2hlY2sgdGhhdCBzb21lIGdhaW4gaXMgYXBwbGllZCBpZiB0aGVyZSBpcyBubyBtYXJnaW4uCisg
IGNvbmZpZy5maXhlZF9kaWdpdGFsLmdhaW5fZGIgPSAwLmY7CisgIGNvbmZpZy5hZGFwdGl2ZV9k
aWdpdGFsLmVuYWJsZWQgPSB0cnVlOworICBjb25maWcuYWRhcHRpdmVfZGlnaXRhbC5leHRyYV9z
YXR1cmF0aW9uX21hcmdpbl9kYiA9IDAuZjsKKyAgZ2Fpbl9jb250cm9sbGVyMi5BcHBseUNvbmZp
Zyhjb25maWcpOworCisgIEVYUEVDVF9HVChHYWluQWZ0ZXJQcm9jZXNzaW5nRmlsZSgmZ2Fpbl9j
b250cm9sbGVyMiksIDIuZik7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvaW5jbHVkZS9hZWNfZHVtcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1
bXAuaAppbmRleCAzMTNlOWQ3YjFkZTBiNjJlMWFiYjZjYTI1NGRlZDA0MTRjZmE4YjcyLi5iNzM0
YWRmYmJiYjM2YTc3N2UzZWM5YjZiYjk5ZjQ1MDVmZGNmMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvaW5jbHVkZS9hZWNfZHVtcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmgK
QEAgLTExLDE0ICsxMSwxMyBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfSU5D
TFVERV9BRUNfRFVNUF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfSU5DTFVE
RV9BRUNfRFVNUF9IXwogCi0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0ZGludC5oPgog
I2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJhcGkvYXJy
YXlfdmlldy5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9hdWRpb19mcmFtZS5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX2ZyYW1lX3ZpZXcuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5n
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZGVwcmVjYXRpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmNjCmluZGV4IDc1ZWVkYWZjMjky
Mzg3ZjJlOTkxNWYzMThkMDAyZWMxNTIwYWZlOTcuLjI3Y2Q4ODI0ZmVjMzA1YzViMzFmNWEzMzVl
ZjhkNjNlNmFmMzJlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nl
c3NpbmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5jYwpAQCAt
MTAsOCArMTAsNiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1
ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0K
IG5hbWVzcGFjZSB3ZWJydGMgewogCiB2b2lkIEN1c3RvbVByb2Nlc3Npbmc6OlNldFJ1bnRpbWVT
ZXR0aW5nKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oCmluZGV4IDI2ODgwZTM3NzYw
MjY0ZGRhYWM5NDA0ZWU4MGU3NDc5ZWMxMjYzNGQuLmRmNTEzMTMyMjlkYTI4YzEzOTE4NzhhYzM5
YThlOTQzNDNhYjE1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nl
c3NpbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0
ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCkBAIC00OCw3ICs0OSw2IEBAIGNsYXNzIFByb2Nlc3NpbmdDb25maWc7CiAK
IGNsYXNzIEVjaG9EZXRlY3RvcjsKIGNsYXNzIEdhaW5Db250cm9sOwotY2xhc3MgSGlnaFBhc3NG
aWx0ZXI7CiBjbGFzcyBMZXZlbEVzdGltYXRvcjsKIGNsYXNzIE5vaXNlU3VwcHJlc3Npb247CiBj
bGFzcyBDdXN0b21BdWRpb0FuYWx5emVyOwpAQCAtMjQwLDcgKzI0MCw2IEBAIGNsYXNzIEF1ZGlv
UHJvY2Vzc2luZyA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50ZXJmYWNlIHsKICAgLy8gYnkgY2hh
bmdpbmcgdGhlIGRlZmF1bHQgdmFsdWVzIGluIHRoZSBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZyBz
dHJ1Y3QuCiAgIC8vIFRoZSBjb25maWcgaXMgYXBwbGllZCBieSBwYXNzaW5nIHRoZSBzdHJ1Y3Qg
dG8gdGhlIEFwcGx5Q29uZmlnIG1ldGhvZC4KICAgc3RydWN0IENvbmZpZyB7Ci0gICAgLy8gVE9E
TyhidWdzLndlYnJ0Yy5vcmcvOTUzNSk6IEN1cnJlbnRseSB1bnVzZWQuIFVzZSB0aGlzIHRvIGRl
dGVybWluZSBBRUMuCiAgICAgc3RydWN0IEVjaG9DYW5jZWxsZXIgewogICAgICAgYm9vbCBlbmFi
bGVkID0gZmFsc2U7CiAgICAgICBib29sIG1vYmlsZV9tb2RlID0gZmFsc2U7CkBAIC0yNzEsMTEg
KzI3MCwyNCBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NpbmcgOiBwdWJsaWMgcnRjOjpSZWZDb3VudElu
dGVyZmFjZSB7CiAgICAgLy8gZmlyc3QgYXBwbGllcyBhIGZpeGVkIGdhaW4uIFRoZSBhZGFwdGl2
ZSBkaWdpdGFsIEFHQyBjYW4gYmUgdHVybmVkIG9mZiBieQogICAgIC8vIHNldHRpbmcgfGFkYXB0
aXZlX2RpZ2l0YWxfbW9kZT1mYWxzZXwuCiAgICAgc3RydWN0IEdhaW5Db250cm9sbGVyMiB7Cisg
ICAgICBlbnVtIExldmVsRXN0aW1hdG9yIHsga1Jtcywga1BlYWsgfTsKICAgICAgIGJvb2wgZW5h
YmxlZCA9IGZhbHNlOwotICAgICAgYm9vbCBhZGFwdGl2ZV9kaWdpdGFsX21vZGUgPSB0cnVlOwot
ICAgICAgZmxvYXQgZml4ZWRfZ2Fpbl9kYiA9IDAuZjsKKyAgICAgIHN0cnVjdCB7CisgICAgICAg
IGZsb2F0IGdhaW5fZGIgPSAwLmY7CisgICAgICB9IGZpeGVkX2RpZ2l0YWw7CisgICAgICBzdHJ1
Y3QgeworICAgICAgICBib29sIGVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgTGV2ZWxFc3RpbWF0
b3IgbGV2ZWxfZXN0aW1hdG9yID0ga1JtczsKKyAgICAgICAgYm9vbCB1c2Vfc2F0dXJhdGlvbl9w
cm90ZWN0b3IgPSB0cnVlOworICAgICAgICBmbG9hdCBleHRyYV9zYXR1cmF0aW9uX21hcmdpbl9k
YiA9IDIuZjsKKyAgICAgIH0gYWRhcHRpdmVfZGlnaXRhbDsKICAgICB9IGdhaW5fY29udHJvbGxl
cjI7CiAKKyAgICAvLyBFbmFibGVzIHJlcG9ydGluZyBvZiB8b3V0cHV0X3Jtc19kYmZzfCBpbiB3
ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZ1N0YXRzLgorICAgIHN0cnVjdCBMZXZlbEVzdGltYXRpb24g
eworICAgICAgYm9vbCBlbmFibGVkID0gZmFsc2U7CisgICAgfSBsZXZlbF9lc3RpbWF0aW9uOwor
CiAgICAgLy8gRXhwbGljaXQgY29weSBhc3NpZ25tZW50IGltcGxlbWVudGF0aW9uIHRvIGF2b2lk
IGlzc3VlcyB3aXRoIG1lbW9yeQogICAgIC8vIHNhbml0aXplciBjb21wbGFpbnRzIGluIGNhc2Ug
b2Ygc2VsZi1hc3NpZ25tZW50LgogICAgIC8vIFRPRE8ocGVhaCk6IEFkZCBidWlsZGZsYWcgdG8g
ZW5zdXJlIHRoYXQgdGhpcyBpcyBvbmx5IGluY2x1ZGVkIGZvciBtZW1vcnkKQEAgLTUyMCw4NSAr
NTMyLDE3IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc2luZyA6IHB1YmxpYyBydGM6OlJlZkNvdW50SW50
ZXJmYWNlIHsKICAgLy8gc3BlY2lmaWMgbWVtYmVyIHZhcmlhYmxlcyBhcmUgcmVzZXQuCiAgIHZp
cnR1YWwgdm9pZCBVcGRhdGVIaXN0b2dyYW1zT25DYWxsRW5kKCkgPSAwOwogCi0gIC8vIFRPRE8o
aXZvYyk6IFJlbW92ZSB3aGVuIHRoZSBjYWxsaW5nIGNvZGUgbm8gbG9uZ2VyIHVzZXMgdGhlIG9s
ZCBTdGF0aXN0aWNzCi0gIC8vICAgICAgICAgICAgIEFQSS4KLSAgc3RydWN0IFN0YXRpc3RpYyB7
Ci0gICAgaW50IGluc3RhbnQgPSAwOyAgLy8gSW5zdGFudGFuZW91cyB2YWx1ZS4KLSAgICBpbnQg
YXZlcmFnZSA9IDA7ICAvLyBMb25nLXRlcm0gYXZlcmFnZS4KLSAgICBpbnQgbWF4aW11bSA9IDA7
ICAvLyBMb25nLXRlcm0gbWF4aW11bS4KLSAgICBpbnQgbWluaW11bSA9IDA7ICAvLyBMb25nLXRl
cm0gbWluaW11bS4KLSAgfTsKLQotICBzdHJ1Y3QgU3RhdCB7Ci0gICAgdm9pZCBTZXQoY29uc3Qg
U3RhdGlzdGljJiBvdGhlcikgewotICAgICAgU2V0KG90aGVyLmluc3RhbnQsIG90aGVyLmF2ZXJh
Z2UsIG90aGVyLm1heGltdW0sIG90aGVyLm1pbmltdW0pOwotICAgIH0KLSAgICB2b2lkIFNldChm
bG9hdCBpbnN0YW50LCBmbG9hdCBhdmVyYWdlLCBmbG9hdCBtYXhpbXVtLCBmbG9hdCBtaW5pbXVt
KSB7Ci0gICAgICBpbnN0YW50XyA9IGluc3RhbnQ7Ci0gICAgICBhdmVyYWdlXyA9IGF2ZXJhZ2U7
Ci0gICAgICBtYXhpbXVtXyA9IG1heGltdW07Ci0gICAgICBtaW5pbXVtXyA9IG1pbmltdW07Ci0g
ICAgfQotICAgIGZsb2F0IGluc3RhbnQoKSBjb25zdCB7IHJldHVybiBpbnN0YW50XzsgfQotICAg
IGZsb2F0IGF2ZXJhZ2UoKSBjb25zdCB7IHJldHVybiBhdmVyYWdlXzsgfQotICAgIGZsb2F0IG1h
eGltdW0oKSBjb25zdCB7IHJldHVybiBtYXhpbXVtXzsgfQotICAgIGZsb2F0IG1pbmltdW0oKSBj
b25zdCB7IHJldHVybiBtaW5pbXVtXzsgfQotCi0gICBwcml2YXRlOgotICAgIGZsb2F0IGluc3Rh
bnRfID0gMC4wZjsgIC8vIEluc3RhbnRhbmVvdXMgdmFsdWUuCi0gICAgZmxvYXQgYXZlcmFnZV8g
PSAwLjBmOyAgLy8gTG9uZy10ZXJtIGF2ZXJhZ2UuCi0gICAgZmxvYXQgbWF4aW11bV8gPSAwLjBm
OyAgLy8gTG9uZy10ZXJtIG1heGltdW0uCi0gICAgZmxvYXQgbWluaW11bV8gPSAwLjBmOyAgLy8g
TG9uZy10ZXJtIG1pbmltdW0uCi0gIH07Ci0KLSAgc3RydWN0IEF1ZGlvUHJvY2Vzc2luZ1N0YXRp
c3RpY3MgewotICAgIEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MoKTsKLSAgICBBdWRpb1Byb2Nl
c3NpbmdTdGF0aXN0aWNzKGNvbnN0IEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MmIG90aGVyKTsK
LSAgICB+QXVkaW9Qcm9jZXNzaW5nU3RhdGlzdGljcygpOwotCi0gICAgLy8gQUVDIFN0YXRpc3Rp
Y3MuCi0gICAgLy8gUkVSTCA9IEVSTCArIEVSTEUKLSAgICBTdGF0IHJlc2lkdWFsX2VjaG9fcmV0
dXJuX2xvc3M7Ci0gICAgLy8gRVJMID0gMTBsb2dfMTAoUF9mYXIgLyBQX2VjaG8pCi0gICAgU3Rh
dCBlY2hvX3JldHVybl9sb3NzOwotICAgIC8vIEVSTEUgPSAxMGxvZ18xMChQX2VjaG8gLyBQX291
dCkKLSAgICBTdGF0IGVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQ7Ci0gICAgLy8gKFByZSBu
b24tbGluZWFyIHByb2Nlc3Npbmcgc3VwcHJlc3Npb24pIEFfTkxQID0gMTBsb2dfMTAoUF9lY2hv
IC8gUF9hKQotICAgIFN0YXQgYV9ubHA7Ci0gICAgLy8gRnJhY3Rpb24gb2YgdGltZSB0aGF0IHRo
ZSBBRUMgbGluZWFyIGZpbHRlciBpcyBkaXZlcmdlbnQsIGluIGEgMS1zZWNvbmQKLSAgICAvLyBu
b24tb3ZlcmxhcHBlZCBhZ2dyZWdhdGlvbiB3aW5kb3cuCi0gICAgZmxvYXQgZGl2ZXJnZW50X2Zp
bHRlcl9mcmFjdGlvbiA9IC0xLjBmOwotCi0gICAgLy8gVGhlIGRlbGF5IG1ldHJpY3MgY29uc2lz
dHMgb2YgdGhlIGRlbGF5IG1lZGlhbiBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uLiBJdAotICAgIC8v
IGFsc28gY29uc2lzdHMgb2YgdGhlIGZyYWN0aW9uIG9mIGRlbGF5IGVzdGltYXRlcyB0aGF0IGNh
biBtYWtlIHRoZSBlY2hvCi0gICAgLy8gY2FuY2VsbGF0aW9uIHBlcmZvcm0gcG9vcmx5LiBUaGUg
dmFsdWVzIGFyZSBhZ2dyZWdhdGVkIHVudGlsIHRoZSBmaXJzdAotICAgIC8vIGNhbGwgdG8gfEdl
dFN0YXRpc3RpY3MoKXwgYW5kIGFmdGVyd2FyZHMgYWdncmVnYXRlZCBhbmQgdXBkYXRlZCBldmVy
eQotICAgIC8vIHNlY29uZC4gTm90ZSB0aGF0IGlmIHRoZXJlIGFyZSBzZXZlcmFsIGNsaWVudHMg
cHVsbGluZyBtZXRyaWNzIGZyb20KLSAgICAvLyB8R2V0U3RhdGlzdGljcygpfCBkdXJpbmcgYSBz
ZXNzaW9uIHRoZSBmaXJzdCBjYWxsIGZyb20gYW55IG9mIHRoZW0gd2lsbAotICAgIC8vIGNoYW5n
ZSB0byBvbmUgc2Vjb25kIGFnZ3JlZ2F0aW9uIHdpbmRvdyBmb3IgYWxsLgotICAgIGludCBkZWxh
eV9tZWRpYW4gPSAtMTsKLSAgICBpbnQgZGVsYXlfc3RhbmRhcmRfZGV2aWF0aW9uID0gLTE7Ci0g
ICAgZmxvYXQgZnJhY3Rpb25fcG9vcl9kZWxheXMgPSAtMS4wZjsKLQotICAgIC8vIFJlc2lkdWFs
IGVjaG8gZGV0ZWN0b3IgbGlrZWxpaG9vZC4KLSAgICBmbG9hdCByZXNpZHVhbF9lY2hvX2xpa2Vs
aWhvb2QgPSAtMS4wZjsKLSAgICAvLyBNYXhpbXVtIHJlc2lkdWFsIGVjaG8gbGlrZWxpaG9vZCBm
cm9tIHRoZSBsYXN0IHRpbWUgcGVyaW9kLgotICAgIGZsb2F0IHJlc2lkdWFsX2VjaG9fbGlrZWxp
aG9vZF9yZWNlbnRfbWF4ID0gLTEuMGY7Ci0gIH07Ci0KLSAgLy8gVE9ETyhpdm9jKTogTWFrZSB0
aGlzIHB1cmUgdmlydHVhbCB3aGVuIGFsbCBzdWJjbGFzc2VzIGhhdmUgYmVlbiB1cGRhdGVkLgot
ICB2aXJ0dWFsIEF1ZGlvUHJvY2Vzc2luZ1N0YXRpc3RpY3MgR2V0U3RhdGlzdGljcygpIGNvbnN0
OwotCi0gIC8vIFRoaXMgcmV0dXJucyB0aGUgc3RhdHMgYXMgb3B0aW9uYWxzIGFuZCBpdCB3aWxs
IHJlcGxhY2UgdGhlIHJlZ3VsYXIKLSAgLy8gR2V0U3RhdGlzdGljcy4KLSAgdmlydHVhbCBBdWRp
b1Byb2Nlc3NpbmdTdGF0cyBHZXRTdGF0aXN0aWNzKGJvb2wgaGFzX3JlbW90ZV90cmFja3MpIGNv
bnN0OworICAvLyBHZXQgYXVkaW8gcHJvY2Vzc2luZyBzdGF0aXN0aWNzLiBUaGUgfGhhc19yZW1v
dGVfdHJhY2tzfCBhcmd1bWVudCBzaG91bGQgYmUKKyAgLy8gc2V0IGlmIHRoZXJlIGFyZSBhY3Rp
dmUgcmVtb3RlIHRyYWNrcyAodGhpcyB3b3VsZCB1c3VhbGx5IGJlIHRydWUgZHVyaW5nCisgIC8v
IGEgY2FsbCkuIElmIHRoZXJlIGFyZSBubyByZW1vdGUgdHJhY2tzIHNvbWUgb2YgdGhlIHN0YXRz
IHdpbGwgbm90IGJlIHNldCBieQorICAvLyBBdWRpb1Byb2Nlc3NpbmcsIGJlY2F1c2UgdGhleSBv
bmx5IG1ha2Ugc2Vuc2UgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lCisgIC8vIHJlbW90ZSB0cmFj
ay4KKyAgdmlydHVhbCBBdWRpb1Byb2Nlc3NpbmdTdGF0cyBHZXRTdGF0aXN0aWNzKGJvb2wgaGFz
X3JlbW90ZV90cmFja3MpIGNvbnN0ID0gMDsKIAogICAvLyBUaGVzZSBwcm92aWRlIGFjY2VzcyB0
byB0aGUgY29tcG9uZW50IGludGVyZmFjZXMgYW5kIHNob3VsZCBuZXZlciByZXR1cm4KICAgLy8g
TlVMTC4gVGhlIHBvaW50ZXJzIHdpbGwgYmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUg
QVBNIGluc3RhbmNlLgogICAvLyBUaGUgbWVtb3J5IGZvciB0aGVzZSBvYmplY3RzIGlzIGVudGly
ZWx5IG1hbmFnZWQgaW50ZXJuYWxseS4KICAgdmlydHVhbCBHYWluQ29udHJvbCogZ2Fpbl9jb250
cm9sKCkgY29uc3QgPSAwOwotICAvLyBUT0RPKHBlYWgpOiBEZXByZWNhdGUgdGhpcyBBUEkgY2Fs
bC4KLSAgdmlydHVhbCBIaWdoUGFzc0ZpbHRlciogaGlnaF9wYXNzX2ZpbHRlcigpIGNvbnN0ID0g
MDsKICAgdmlydHVhbCBMZXZlbEVzdGltYXRvciogbGV2ZWxfZXN0aW1hdG9yKCkgY29uc3QgPSAw
OwogICB2aXJ0dWFsIE5vaXNlU3VwcHJlc3Npb24qIG5vaXNlX3N1cHByZXNzaW9uKCkgY29uc3Qg
PSAwOwogICB2aXJ0dWFsIFZvaWNlRGV0ZWN0aW9uKiB2b2ljZV9kZXRlY3Rpb24oKSBjb25zdCA9
IDA7CkBAIC02NDgsNyArNTkyLDcgQEAgY2xhc3MgQXVkaW9Qcm9jZXNzaW5nIDogcHVibGljIHJ0
Yzo6UmVmQ291bnRJbnRlcmZhY2UgewogICBzdGF0aWMgY29uc3QgaW50IGtDaHVua1NpemVNcyA9
IDEwOwogfTsKIAotY2xhc3MgQXVkaW9Qcm9jZXNzaW5nQnVpbGRlciB7CitjbGFzcyBSVENfRVhQ
T1JUIEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIgewogIHB1YmxpYzoKICAgQXVkaW9Qcm9jZXNzaW5n
QnVpbGRlcigpOwogICB+QXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpOwpAQCAtNzg4LDE3ICs3MzIs
NiBAQCBjbGFzcyBQcm9jZXNzaW5nQ29uZmlnIHsKICAgU3RyZWFtQ29uZmlnIHN0cmVhbXNbU3Ry
ZWFtTmFtZTo6a051bVN0cmVhbU5hbWVzXTsKIH07CiAKLS8vIFRPRE8ocGVhaCk6IFJlbW92ZSB0
aGlzIGludGVyZmFjZS4KLS8vIEEgZmlsdGVyaW5nIGNvbXBvbmVudCB3aGljaCByZW1vdmVzIERD
IG9mZnNldCBhbmQgbG93LWZyZXF1ZW5jeSBub2lzZS4KLS8vIFJlY29tbWVuZGVkIHRvIGJlIGVu
YWJsZWQgb24gdGhlIGNsaWVudC1zaWRlLgotY2xhc3MgSGlnaFBhc3NGaWx0ZXIgewotIHB1Ymxp
YzoKLSAgdmlydHVhbCBpbnQgRW5hYmxlKGJvb2wgZW5hYmxlKSA9IDA7Ci0gIHZpcnR1YWwgYm9v
bCBpc19lbmFibGVkKCkgY29uc3QgPSAwOwotCi0gIHZpcnR1YWwgfkhpZ2hQYXNzRmlsdGVyKCkg
e30KLX07Ci0KIC8vIEFuIGVzdGltYXRpb24gY29tcG9uZW50IHVzZWQgdG8gcmV0cmlldmUgbGV2
ZWwgbWV0cmljcy4KIGNsYXNzIExldmVsRXN0aW1hdG9yIHsKICBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nX3N0YXRpc3RpY3MuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3Npbmdfc3RhdGlzdGljcy5oCmluZGV4IDIzN2QyM2M1
YmNlOGIyYmRhZGQ3Y2JhN2Y0Mjk4ZDFkNmU5MzczOWMuLjY4M2RiMDUyZTZjNmI3ZTY5ZTg3MDM1
ODQwZTFjYzZmMjkyYzcxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3By
b2Nlc3Npbmdfc3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nl
c3Npbmdfc3RhdGlzdGljcy5oCkBAIC0xMSwxNiArMTEsMjcgQEAKICNpZm5kZWYgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX0lOQ0xVREVfQVVESU9fUFJPQ0VTU0lOR19TVEFUSVNUSUNTX0hfCiAj
ZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19JTkNMVURFX0FVRElPX1BST0NFU1NJTkdf
U1RBVElTVElDU19IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5
cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyBUaGlzIHZlcnNpb24gb2YgdGhlIHN0YXRzIHVzZXMg
T3B0aW9uYWxzLCBpdCB3aWxsIHJlcGxhY2UgdGhlIHJlZ3VsYXIKIC8vIEF1ZGlvUHJvY2Vzc2lu
Z1N0YXRpc3RpY3Mgc3RydWN0Lgotc3RydWN0IEF1ZGlvUHJvY2Vzc2luZ1N0YXRzIHsKK3N0cnVj
dCBSVENfRVhQT1JUIEF1ZGlvUHJvY2Vzc2luZ1N0YXRzIHsKICAgQXVkaW9Qcm9jZXNzaW5nU3Rh
dHMoKTsKICAgQXVkaW9Qcm9jZXNzaW5nU3RhdHMoY29uc3QgQXVkaW9Qcm9jZXNzaW5nU3RhdHMm
IG90aGVyKTsKICAgfkF1ZGlvUHJvY2Vzc2luZ1N0YXRzKCk7CiAKKyAgLy8gVGhlIHJvb3QgbWVh
biBzcXVhcmUgKFJNUykgbGV2ZWwgaW4gZEJGUyAoZGVjaWJlbHMgZnJvbSBkaWdpdGFsCisgIC8v
IGZ1bGwtc2NhbGUpIG9mIHRoZSBsYXN0IGNhcHR1cmUgZnJhbWUsIGFmdGVyIHByb2Nlc3Npbmcu
IEl0IGlzCisgIC8vIGNvbnN0cmFpbmVkIHRvIFstMTI3LCAwXS4KKyAgLy8gVGhlIGNvbXB1dGF0
aW9uIGZvbGxvd3M6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDY1CisgIC8vIHdp
dGggdGhlIGludGVudCB0aGF0IGl0IGNhbiBwcm92aWRlIHRoZSBSVFAgYXVkaW8gbGV2ZWwgaW5k
aWNhdGlvbi4KKyAgLy8gT25seSByZXBvcnRlZCBpZiBsZXZlbCBlc3RpbWF0aW9uIGlzIGVuYWJs
ZWQgaW4gQXVkaW9Qcm9jZXNzaW5nOjpDb25maWcuCisgIGFic2w6Om9wdGlvbmFsPGludD4gb3V0
cHV0X3Jtc19kYmZzOworCiAgIC8vIEFFQyBTdGF0aXN0aWNzLgogICAvLyBFUkwgPSAxMGxvZ18x
MChQX2ZhciAvIFBfZWNobykKICAgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPiBlY2hvX3JldHVybl9s
b3NzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvY29uZmlnLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
aW5jbHVkZS9jb25maWcuaAppbmRleCAzOThhYWI2MWNmZmU2M2RkNTJmMDU4MWQ5ODBhYzBmNjdm
MTQ0ZGE5Li5lNzdkM2ZkMTZkN2I0MTk2M2RlMzdmYTc5YmY2MTA4M2RjZTkyZDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9jb25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9j
b25maWcuaApAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgPG1hcD4KIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRj
X2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtNTcsNyArNTgsNyBAQCBlbnVt
IGNsYXNzIENvbmZpZ09wdGlvbklEIHsKIC8vICAgIGNvbmZpZy5TZXQ8QWxnbzFfQ29zdEZ1bmN0
aW9uPihuZXcgU3FyQ29zdCgpKTsKIC8vCiAvLyBOb3RlOiBUaGlzIGNsYXNzIGlzIHRocmVhZC1j
b21wYXRpYmxlIChsaWtlIFNUTCBjb250YWluZXJzKS4KLWNsYXNzIENvbmZpZyB7CitjbGFzcyBS
VENfRVhQT1JUIENvbmZpZyB7CiAgcHVibGljOgogICAvLyBSZXR1cm5zIHRoZSBvcHRpb24gaWYg
c2V0IG9yIGEgZGVmYXVsdCBjb25zdHJ1Y3RlZCBvbmUuCiAgIC8vIENhbGxlcnMgdGhhdCBhY2Nl
c3Mgb3B0aW9ucyB0b28gb2Z0ZW4gYXJlIGVuY291cmFnZWQgdG8gY2FjaGUgdGhlIHJlc3VsdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL21vY2tfYXVkaW9fcHJvY2Vzc2luZy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2luY2x1ZGUvbW9ja19hdWRpb19wcm9jZXNzaW5nLmgKaW5kZXggNGExZmU2MjZi
ZDVkNThiMGI4NWUxOWU4ZDFiMjQyZjAwMzQxZDA0OC4uZjAwYTE2ZDVlMmQyNjEwYjE3MWI0MGM2
MmExM2RmYjgyY2FjMzRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvbW9ja19hdWRp
b19wcm9jZXNzaW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvbW9ja19hdWRpb19wcm9jZXNz
aW5nLmgKQEAgLTQyLDEzICs0Miw2IEBAIGNsYXNzIE1vY2tHYWluQ29udHJvbCA6IHB1YmxpYyBH
YWluQ29udHJvbCB7CiAgIE1PQ0tfQ09OU1RfTUVUSE9EMChzdHJlYW1faXNfc2F0dXJhdGVkLCBi
b29sKCkpOwogfTsKIAotY2xhc3MgTW9ja0hpZ2hQYXNzRmlsdGVyIDogcHVibGljIEhpZ2hQYXNz
RmlsdGVyIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfk1vY2tIaWdoUGFzc0ZpbHRlcigpIHt9Ci0g
IE1PQ0tfTUVUSE9EMShFbmFibGUsIGludChib29sIGVuYWJsZSkpOwotICBNT0NLX0NPTlNUX01F
VEhPRDAoaXNfZW5hYmxlZCwgYm9vbCgpKTsKLX07Ci0KIGNsYXNzIE1vY2tMZXZlbEVzdGltYXRv
ciA6IHB1YmxpYyBMZXZlbEVzdGltYXRvciB7CiAgcHVibGljOgogICB2aXJ0dWFsIH5Nb2NrTGV2
ZWxFc3RpbWF0b3IoKSB7fQpAQCAtMTE0LDcgKzEwNyw2IEBAIGNsYXNzIE1vY2tBdWRpb1Byb2Nl
c3NpbmcgOiBwdWJsaWMgdGVzdGluZzo6TmljZU1vY2s8QXVkaW9Qcm9jZXNzaW5nPiB7CiAgcHVi
bGljOgogICBNb2NrQXVkaW9Qcm9jZXNzaW5nKCkKICAgICAgIDogZ2Fpbl9jb250cm9sXyhuZXcg
dGVzdGluZzo6TmljZU1vY2s8TW9ja0dhaW5Db250cm9sPigpKSwKLSAgICAgICAgaGlnaF9wYXNz
X2ZpbHRlcl8obmV3IHRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tIaWdoUGFzc0ZpbHRlcj4oKSksCiAg
ICAgICAgIGxldmVsX2VzdGltYXRvcl8obmV3IHRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tMZXZlbEVz
dGltYXRvcj4oKSksCiAgICAgICAgIG5vaXNlX3N1cHByZXNzaW9uXyhuZXcgdGVzdGluZzo6Tmlj
ZU1vY2s8TW9ja05vaXNlU3VwcHJlc3Npb24+KCkpLAogICAgICAgICB2b2ljZV9kZXRlY3Rpb25f
KG5ldyB0ZXN0aW5nOjpOaWNlTW9jazxNb2NrVm9pY2VEZXRlY3Rpb24+KCkpIHt9CkBAIC0xODAs
MTIgKzE3Miw4IEBAIGNsYXNzIE1vY2tBdWRpb1Byb2Nlc3NpbmcgOiBwdWJsaWMgdGVzdGluZzo6
TmljZU1vY2s8QXVkaW9Qcm9jZXNzaW5nPiB7CiAgIE1PQ0tfTUVUSE9EMChEZXRhY2hQbGF5b3V0
QXVkaW9HZW5lcmF0b3IsIHZvaWQoKSk7CiAKICAgTU9DS19NRVRIT0QwKFVwZGF0ZUhpc3RvZ3Jh
bXNPbkNhbGxFbmQsIHZvaWQoKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRTdGF0aXN0aWNz
LCBBdWRpb1Byb2Nlc3NpbmdTdGF0aXN0aWNzKCkpOwogICBNT0NLX0NPTlNUX01FVEhPRDEoR2V0
U3RhdGlzdGljcywgQXVkaW9Qcm9jZXNzaW5nU3RhdHMoYm9vbCkpOwogICB2aXJ0dWFsIE1vY2tH
YWluQ29udHJvbCogZ2Fpbl9jb250cm9sKCkgY29uc3QgeyByZXR1cm4gZ2Fpbl9jb250cm9sXy5n
ZXQoKTsgfQotICB2aXJ0dWFsIE1vY2tIaWdoUGFzc0ZpbHRlciogaGlnaF9wYXNzX2ZpbHRlcigp
IGNvbnN0IHsKLSAgICByZXR1cm4gaGlnaF9wYXNzX2ZpbHRlcl8uZ2V0KCk7Ci0gIH0KICAgdmly
dHVhbCBNb2NrTGV2ZWxFc3RpbWF0b3IqIGxldmVsX2VzdGltYXRvcigpIGNvbnN0IHsKICAgICBy
ZXR1cm4gbGV2ZWxfZXN0aW1hdG9yXy5nZXQoKTsKICAgfQpAQCAtMjAwLDcgKzE4OCw2IEBAIGNs
YXNzIE1vY2tBdWRpb1Byb2Nlc3NpbmcgOiBwdWJsaWMgdGVzdGluZzo6TmljZU1vY2s8QXVkaW9Q
cm9jZXNzaW5nPiB7CiAKICBwcml2YXRlOgogICBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0dhaW5Db250
cm9sPiBnYWluX2NvbnRyb2xfOwotICBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0hpZ2hQYXNzRmlsdGVy
PiBoaWdoX3Bhc3NfZmlsdGVyXzsKICAgc3RkOjp1bmlxdWVfcHRyPE1vY2tMZXZlbEVzdGltYXRv
cj4gbGV2ZWxfZXN0aW1hdG9yXzsKICAgc3RkOjp1bmlxdWVfcHRyPE1vY2tOb2lzZVN1cHByZXNz
aW9uPiBub2lzZV9zdXBwcmVzc2lvbl87CiAgIHN0ZDo6dW5pcXVlX3B0cjxNb2NrVm9pY2VEZXRl
Y3Rpb24+IHZvaWNlX2RldGVjdGlvbl87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbGV2ZWxfZXN0
aW1hdG9yX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbGV2ZWxfZXN0aW1hdG9yX2ltcGwuY2MKaW5kZXgg
YzkzN2Y4NDUyNTM0Y2VhNzMzYjBjMWY2MjI4NThlN2VhNWViZTM3Mi4uNWI0OWIzNWZkY2M1NjUz
ODI0ZTA4NGFlNTQ0NDI1ZGRhMGYwNzIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xldmVsX2Vz
dGltYXRvcl9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sZXZlbF9lc3RpbWF0b3JfaW1wbC5jYwpA
QCAtMTAsOSArMTAsMTMgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9s
ZXZlbF9lc3RpbWF0b3JfaW1wbC5oIgogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8
c3RkaW50Lmg+CisKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3Npbmcvcm1zX2xldmVsLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9h
cG1fZGF0YV9kdW1wZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuY2MK
aW5kZXggZTJlODYwMmI5ODliMzY2YmMyYTYyZjY3NjgxYjUwOGVlNTNmYWM1Zi4uY2M4NzljOGIw
OGZkYzVkN2Q2Y2JmZjk5NDkxNjZlMmFkNjg5NDEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xv
Z2dpbmcvYXBtX2RhdGFfZHVtcGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRh
X2R1bXBlci5jYwpAQCAtMTEsNyArMTEsNiBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
c3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxz
LmgiCiAKIC8vIENoZWNrIHRvIHZlcmlmeSB0aGF0IHRoZSBkZWZpbmUgaXMgcHJvcGVybHkgc2V0
LgogI2lmICFkZWZpbmVkKFdFQlJUQ19BUE1fREVCVUdfRFVNUCkgfHwgXApAQCAtMjAsMTYgKzE5
LDMwIEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KIG5hbWVzcGFjZSB7CiAKICNp
ZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotc3RkOjpzdHJpbmcgRm9ybUZpbGVOYW1lKGNv
bnN0IGNoYXIqIG5hbWUsCisKKyNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCitjb25zdGV4cHIgY2hh
ciBrUGF0aERlbGltaXRlciA9ICdcXCc7CisjZWxzZQorY29uc3RleHByIGNoYXIga1BhdGhEZWxp
bWl0ZXIgPSAnLyc7CisjZW5kaWYKKworc3RkOjpzdHJpbmcgRm9ybUZpbGVOYW1lKGNvbnN0IGNo
YXIqIG91dHB1dF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zdGFuY2VfaW5kZXgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHJlaW5pdF9pbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3VmZml4KSB7CiAgIGNoYXIgYnVmWzEwMjRdOwogICBy
dGM6OlNpbXBsZVN0cmluZ0J1aWxkZXIgc3MoYnVmKTsKKyAgY29uc3Qgc2l6ZV90IG91dHB1dF9k
aXJfc2l6ZSA9IHN0cmxlbihvdXRwdXRfZGlyKTsKKyAgaWYgKG91dHB1dF9kaXJfc2l6ZSA+IDAp
IHsKKyAgICBzcyA8PCBvdXRwdXRfZGlyOworICAgIGlmIChvdXRwdXRfZGlyW291dHB1dF9kaXJf
c2l6ZSAtIDFdICE9IGtQYXRoRGVsaW1pdGVyKSB7CisgICAgICBzcyA8PCBrUGF0aERlbGltaXRl
cjsKKyAgICB9CisgIH0KICAgc3MgPDwgbmFtZSA8PCAiXyIgPDwgaW5zdGFuY2VfaW5kZXggPDwg
Ii0iIDw8IHJlaW5pdF9pbmRleCA8PCBzdWZmaXg7CiAgIHJldHVybiBzcy5zdHIoKTsKIH0KQEAg
LTQxLDE4ICs1NCwyMiBAQCBzdGQ6OnN0cmluZyBGb3JtRmlsZU5hbWUoY29uc3QgY2hhciogbmFt
ZSwKIEFwbURhdGFEdW1wZXI6OkFwbURhdGFEdW1wZXIoaW50IGluc3RhbmNlX2luZGV4KQogICAg
IDogaW5zdGFuY2VfaW5kZXhfKGluc3RhbmNlX2luZGV4KSB7fQogI2Vsc2UKLUFwbURhdGFEdW1w
ZXI6OkFwbURhdGFEdW1wZXIoaW50IGluc3RhbmNlX2luZGV4KSB7fQorQXBtRGF0YUR1bXBlcjo6
QXBtRGF0YUR1bXBlcihpbnQgaW5zdGFuY2VfaW5kZXgpe307CiAjZW5kaWYKIAotQXBtRGF0YUR1
bXBlcjo6fkFwbURhdGFEdW1wZXIoKSB7fQorQXBtRGF0YUR1bXBlcjo6fkFwbURhdGFEdW1wZXIo
KSA9IGRlZmF1bHQ7CiAKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQorYm9vbCBBcG1E
YXRhRHVtcGVyOjpyZWNvcmRpbmdfYWN0aXZhdGVkXyA9IGZhbHNlOworY2hhciBBcG1EYXRhRHVt
cGVyOjpvdXRwdXRfZGlyX1tdID0gIiI7CisKIEZJTEUqIEFwbURhdGFEdW1wZXI6OkdldFJhd0Zp
bGUoY29uc3QgY2hhciogbmFtZSkgewotICBzdGQ6OnN0cmluZyBmaWxlbmFtZSA9Ci0gICAgICBG
b3JtRmlsZU5hbWUobmFtZSwgaW5zdGFuY2VfaW5kZXhfLCByZWNvcmRpbmdfc2V0X2luZGV4Xywg
Ii5kYXQiKTsKKyAgc3RkOjpzdHJpbmcgZmlsZW5hbWUgPSBGb3JtRmlsZU5hbWUob3V0cHV0X2Rp
cl8sIG5hbWUsIGluc3RhbmNlX2luZGV4XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVjb3JkaW5nX3NldF9pbmRleF8sICIuZGF0Iik7CiAgIGF1dG8mIGYgPSByYXdf
ZmlsZXNfW2ZpbGVuYW1lXTsKICAgaWYgKCFmKSB7CiAgICAgZi5yZXNldChmb3BlbihmaWxlbmFt
ZS5jX3N0cigpLCAid2IiKSk7CisgICAgUlRDX0NIRUNLKGYuZ2V0KCkpIDw8ICJDYW5ub3Qgd3Jp
dGUgdG8gIiA8PCBmaWxlbmFtZSA8PCAiLiI7CiAgIH0KICAgcmV0dXJuIGYuZ2V0KCk7CiB9CkBA
IC02MCwxNSArNzcsMTQgQEAgRklMRSogQXBtRGF0YUR1bXBlcjo6R2V0UmF3RmlsZShjb25zdCBj
aGFyKiBuYW1lKSB7CiBXYXZXcml0ZXIqIEFwbURhdGFEdW1wZXI6OkdldFdhdkZpbGUoY29uc3Qg
Y2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Ft
cGxlX3JhdGVfaHosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51
bV9jaGFubmVscykgewotICBzdGQ6OnN0cmluZyBmaWxlbmFtZSA9Ci0gICAgICBGb3JtRmlsZU5h
bWUobmFtZSwgaW5zdGFuY2VfaW5kZXhfLCByZWNvcmRpbmdfc2V0X2luZGV4XywgIi53YXYiKTsK
KyAgc3RkOjpzdHJpbmcgZmlsZW5hbWUgPSBGb3JtRmlsZU5hbWUob3V0cHV0X2Rpcl8sIG5hbWUs
IGluc3RhbmNlX2luZGV4XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVjb3JkaW5nX3NldF9pbmRleF8sICIud2F2Iik7CiAgIGF1dG8mIGYgPSB3YXZfZmlsZXNfW2Zp
bGVuYW1lXTsKICAgaWYgKCFmKSB7CiAgICAgZi5yZXNldChuZXcgV2F2V3JpdGVyKGZpbGVuYW1l
LmNfc3RyKCksIHNhbXBsZV9yYXRlX2h6LCBudW1fY2hhbm5lbHMpKTsKICAgfQogICByZXR1cm4g
Zi5nZXQoKTsKIH0KLQogI2VuZGlmCiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dp
bmcvYXBtX2RhdGFfZHVtcGVyLmgKaW5kZXggZDA0NTAyN2IzNTQxNjVhMDI0MTliYTlkNDRiNzY4
ZjYzMTNlZmMyYS4uYjU0MWFlODRiOWI4NmE3NDk0YWVmNzNkNzk3MDc5NDE5OTYzYmMxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2xvZ2dpbmcvYXBtX2RhdGFfZHVtcGVyLmgKQEAgLTExLDE0ICsxMSwyMCBAQAogI2lmbmRl
ZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfTE9HR0lOR19BUE1fREFUQV9EVU1QRVJfSF8KICNk
ZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0xPR0dJTkdfQVBNX0RBVEFfRFVNUEVSX0hf
CiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0
cmluZy5oPgogCi0jaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KKyNpZiBXRUJS
VENfQVBNX0RFQlVHX0RVTVAgPT0gMQogI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CisjZW5kaWYK
IAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCisjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1Q
ID09IDEKICNpbmNsdWRlICJjb21tb25fYXVkaW8vd2F2X2ZpbGUuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKKyNlbmRpZgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFn
aWMuaCIKIAogLy8gQ2hlY2sgdG8gdmVyaWZ5IHRoYXQgdGhlIGRlZmluZSBpcyBwcm9wZXJseSBz
ZXQuCkBAIC00Nyw2ICs1MywyMSBAQCBjbGFzcyBBcG1EYXRhRHVtcGVyIHsKIAogICB+QXBtRGF0
YUR1bXBlcigpOwogCisgIC8vIEFjdGl2YXRlcyBvciBkZWFjdGl2YXRlIHRoZSBkdW1waW5nIGZ1
bmN0aW9uYWxpdHkuCisgIHN0YXRpYyB2b2lkIFNldEFjdGl2YXRlZChib29sIGFjdGl2YXRlZCkg
eworI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCisgICAgcmVjb3JkaW5nX2FjdGl2YXRl
ZF8gPSBhY3RpdmF0ZWQ7CisjZW5kaWYKKyAgfQorCisgIC8vIFNldCBhbiBvcHRpb25hbCBvdXRw
dXQgZGlyZWN0b3J5LgorICBzdGF0aWMgdm9pZCBTZXRPdXRwdXREaXJlY3RvcnkoY29uc3Qgc3Rk
OjpzdHJpbmcmIG91dHB1dF9kaXIpIHsKKyNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQor
ICAgIFJUQ19DSEVDS19MVChvdXRwdXRfZGlyLnNpemUoKSwga091dHB1dERpck1heExlbmd0aCk7
CisgICAgc3RybmNweShvdXRwdXRfZGlyXywgb3V0cHV0X2Rpci5jX3N0cigpLCBvdXRwdXRfZGly
LnNpemUoKSk7CisjZW5kaWYKKyAgfQorCiAgIC8vIFJlaW5pdGlhbGl6ZXMgdGhlIGRhdGEgZHVt
cGluZyBzdWNoIHRoYXQgbmV3IHZlcnNpb25zCiAgIC8vIG9mIGFsbCBmaWxlcyBiZWluZyBkdW1w
ZWQgdG8gYXJlIGNyZWF0ZWQuCiAgIHZvaWQgSW5pdGlhdGVOZXdTZXRPZlJlY29yZGluZ3MoKSB7
CkBAIC01OSwxMTUgKzgwLDE1NSBAQCBjbGFzcyBBcG1EYXRhRHVtcGVyIHsKICAgLy8gdmFyaW91
cyBmb3JtYXRzLgogICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFtZSwgZG91YmxlIHYpIHsK
ICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdG
aWxlKG5hbWUpOwotICAgIGZ3cml0ZSgmdiwgc2l6ZW9mKHYpLCAxLCBmaWxlKTsKKyAgICBpZiAo
cmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5h
bWUpOworICAgICAgZndyaXRlKCZ2LCBzaXplb2YodiksIDEsIGZpbGUpOworICAgIH0KICNlbmRp
ZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHNpemVfdCB2X2xlbmd0
aCwgY29uc3QgZG91YmxlKiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAg
ICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKLSAgICBmd3JpdGUodiwgc2l6ZW9mKHZb
MF0pLCB2X2xlbmd0aCwgZmlsZSk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7Cisg
ICAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKKyAgICAgIGZ3cml0ZSh2LCBzaXpl
b2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICB9CiAjZW5kaWYKICAgfQogCiAgIHZvaWQg
RHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBydGM6OkFycmF5Vmlldzxjb25zdCBkb3VibGU+IHYp
IHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAgIER1bXBSYXcobmFtZSwgdi5z
aXplKCksIHYuZGF0YSgpKTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAg
IER1bXBSYXcobmFtZSwgdi5zaXplKCksIHYuZGF0YSgpKTsKKyAgICB9CiAjZW5kaWYKICAgfQog
CiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBmbG9hdCB2KSB7CiAjaWYgV0VCUlRD
X0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsK
LSAgICBmd3JpdGUoJnYsIHNpemVvZih2KSwgMSwgZmlsZSk7CisgICAgaWYgKHJlY29yZGluZ19h
Y3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKKyAgICAg
IGZ3cml0ZSgmdiwgc2l6ZW9mKHYpLCAxLCBmaWxlKTsKKyAgICB9CiAjZW5kaWYKICAgfQogCiAg
IHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBzaXplX3Qgdl9sZW5ndGgsIGNvbnN0IGZs
b2F0KiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBGSUxFKiBmaWxl
ID0gR2V0UmF3RmlsZShuYW1lKTsKLSAgICBmd3JpdGUodiwgc2l6ZW9mKHZbMF0pLCB2X2xlbmd0
aCwgZmlsZSk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBGSUxFKiBm
aWxlID0gR2V0UmF3RmlsZShuYW1lKTsKKyAgICAgIGZ3cml0ZSh2LCBzaXplb2YodlswXSksIHZf
bGVuZ3RoLCBmaWxlKTsKKyAgICB9CiAjZW5kaWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25z
dCBjaGFyKiBuYW1lLCBydGM6OkFycmF5Vmlldzxjb25zdCBmbG9hdD4gdikgewogI2lmIFdFQlJU
Q19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRh
KCkpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRHVtcFJhdyhuYW1l
LCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAgIH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1w
UmF3KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVN
UCA9PSAxCi0gICAgRHVtcFJhdyhuYW1lLCBzdGF0aWNfY2FzdDxpbnQxNl90Pih2KSk7CisgICAg
aWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBEdW1wUmF3KG5hbWUsIHN0YXRpY19j
YXN0PGludDE2X3Q+KHYpKTsKKyAgICB9CiAjZW5kaWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhj
b25zdCBjaGFyKiBuYW1lLCBzaXplX3Qgdl9sZW5ndGgsIGNvbnN0IGJvb2wqIHYpIHsKICNpZiBX
RUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5h
bWUpOwotICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgdl9sZW5ndGg7ICsraykgewotICAgICAg
aW50MTZfdCB2YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KHZba10pOwotICAgICAgZndyaXRl
KCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgMSwgZmlsZSk7CisgICAgaWYgKHJlY29yZGluZ19hY3Rp
dmF0ZWRfKSB7CisgICAgICBGSUxFKiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKKyAgICAgIGZv
ciAoc2l6ZV90IGsgPSAwOyBrIDwgdl9sZW5ndGg7ICsraykgeworICAgICAgICBpbnQxNl90IHZh
bHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4odltrXSk7CisgICAgICAgIGZ3cml0ZSgmdmFsdWUs
IHNpemVvZih2YWx1ZSksIDEsIGZpbGUpOworICAgICAgfQogICAgIH0KICNlbmRpZgogICB9CiAK
ICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IGJv
b2w+IHYpIHsKICNpZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAgIER1bXBSYXcobmFt
ZSwgdi5zaXplKCksIHYuZGF0YSgpKTsKKyAgICBpZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsK
KyAgICAgIER1bXBSYXcobmFtZSwgdi5zaXplKCksIHYuZGF0YSgpKTsKKyAgICB9CiAjZW5kaWYK
ICAgfQogCiAgIHZvaWQgRHVtcFJhdyhjb25zdCBjaGFyKiBuYW1lLCBpbnQxNl90IHYpIHsKICNp
ZiBXRUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxl
KG5hbWUpOwotICAgIGZ3cml0ZSgmdiwgc2l6ZW9mKHYpLCAxLCBmaWxlKTsKKyAgICBpZiAocmVj
b3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5hbWUp
OworICAgICAgZndyaXRlKCZ2LCBzaXplb2YodiksIDEsIGZpbGUpOworICAgIH0KICNlbmRpZgog
ICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHNpemVfdCB2X2xlbmd0aCwg
Y29uc3QgaW50MTZfdCogdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAg
RklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7Ci0gICAgZndyaXRlKHYsIHNpemVvZih2WzBd
KSwgdl9sZW5ndGgsIGZpbGUpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAg
ICAgRklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7CisgICAgICBmd3JpdGUodiwgc2l6ZW9m
KHZbMF0pLCB2X2xlbmd0aCwgZmlsZSk7CisgICAgfQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1
bXBSYXcoY29uc3QgY2hhciogbmFtZSwgcnRjOjpBcnJheVZpZXc8Y29uc3QgaW50MTZfdD4gdikg
ewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRHVtcFJhdyhuYW1lLCB2LnNp
emUoKSwgdi5kYXRhKCkpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAg
RHVtcFJhdyhuYW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAgIH0KICNlbmRpZgogICB9CiAK
ICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIGludDMyX3QgdikgewogI2lmIFdFQlJU
Q19BUE1fREVCVUdfRFVNUCA9PSAxCi0gICAgRklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7
Ci0gICAgZndyaXRlKCZ2LCBzaXplb2YodiksIDEsIGZpbGUpOworICAgIGlmIChyZWNvcmRpbmdf
YWN0aXZhdGVkXykgeworICAgICAgRklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7CisgICAg
ICBmd3JpdGUoJnYsIHNpemVvZih2KSwgMSwgZmlsZSk7CisgICAgfQogI2VuZGlmCiAgIH0KIAog
ICB2b2lkIER1bXBSYXcoY29uc3QgY2hhciogbmFtZSwgc2l6ZV90IHZfbGVuZ3RoLCBjb25zdCBp
bnQzMl90KiB2KSB7CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBGSUxFKiBm
aWxlID0gR2V0UmF3RmlsZShuYW1lKTsKLSAgICBmd3JpdGUodiwgc2l6ZW9mKHZbMF0pLCB2X2xl
bmd0aCwgZmlsZSk7CisgICAgaWYgKHJlY29yZGluZ19hY3RpdmF0ZWRfKSB7CisgICAgICBGSUxF
KiBmaWxlID0gR2V0UmF3RmlsZShuYW1lKTsKKyAgICAgIGZ3cml0ZSh2LCBzaXplb2YodlswXSks
IHZfbGVuZ3RoLCBmaWxlKTsKKyAgICB9CiAjZW5kaWYKICAgfQogCiAgIHZvaWQgRHVtcFJhdyhj
b25zdCBjaGFyKiBuYW1lLCBzaXplX3QgdikgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9
PSAxCi0gICAgRklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7Ci0gICAgZndyaXRlKCZ2LCBz
aXplb2YodiksIDEsIGZpbGUpOworICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAg
ICAgRklMRSogZmlsZSA9IEdldFJhd0ZpbGUobmFtZSk7CisgICAgICBmd3JpdGUoJnYsIHNpemVv
Zih2KSwgMSwgZmlsZSk7CisgICAgfQogI2VuZGlmCiAgIH0KIAogICB2b2lkIER1bXBSYXcoY29u
c3QgY2hhciogbmFtZSwgc2l6ZV90IHZfbGVuZ3RoLCBjb25zdCBzaXplX3QqIHYpIHsKICNpZiBX
RUJSVENfQVBNX0RFQlVHX0RVTVAgPT0gMQotICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxlKG5h
bWUpOwotICAgIGZ3cml0ZSh2LCBzaXplb2YodlswXSksIHZfbGVuZ3RoLCBmaWxlKTsKKyAgICBp
ZiAocmVjb3JkaW5nX2FjdGl2YXRlZF8pIHsKKyAgICAgIEZJTEUqIGZpbGUgPSBHZXRSYXdGaWxl
KG5hbWUpOworICAgICAgZndyaXRlKHYsIHNpemVvZih2WzBdKSwgdl9sZW5ndGgsIGZpbGUpOwor
ICAgIH0KICNlbmRpZgogICB9CiAKICAgdm9pZCBEdW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHJ0
Yzo6QXJyYXlWaWV3PGNvbnN0IGludDMyX3Q+IHYpIHsKKyNpZiBXRUJSVENfQVBNX0RFQlVHX0RV
TVAgPT0gMQorICAgIGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgRHVtcFJhdyhu
YW1lLCB2LnNpemUoKSwgdi5kYXRhKCkpOworICAgIH0KKyNlbmRpZgorICB9CisKKyAgdm9pZCBE
dW1wUmF3KGNvbnN0IGNoYXIqIG5hbWUsIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHNpemVfdD4gdikg
ewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAxCiAgICAgRHVtcFJhdyhuYW1lLCB2LnNp
emUoKSwgdi5kYXRhKCkpOwogI2VuZGlmCkBAIC0xNzksOCArMjQwLDEwIEBAIGNsYXNzIEFwbURh
dGFEdW1wZXIgewogICAgICAgICAgICAgICAgaW50IHNhbXBsZV9yYXRlX2h6LAogICAgICAgICAg
ICAgICAgaW50IG51bV9jaGFubmVscykgewogI2lmIFdFQlJUQ19BUE1fREVCVUdfRFVNUCA9PSAx
Ci0gICAgV2F2V3JpdGVyKiBmaWxlID0gR2V0V2F2RmlsZShuYW1lLCBzYW1wbGVfcmF0ZV9oeiwg
bnVtX2NoYW5uZWxzKTsKLSAgICBmaWxlLT5Xcml0ZVNhbXBsZXModiwgdl9sZW5ndGgpOworICAg
IGlmIChyZWNvcmRpbmdfYWN0aXZhdGVkXykgeworICAgICAgV2F2V3JpdGVyKiBmaWxlID0gR2V0
V2F2RmlsZShuYW1lLCBzYW1wbGVfcmF0ZV9oeiwgbnVtX2NoYW5uZWxzKTsKKyAgICAgIGZpbGUt
PldyaXRlU2FtcGxlcyh2LCB2X2xlbmd0aCk7CisgICAgfQogI2VuZGlmCiAgIH0KIApAQCAtMTg5
LDEyICsyNTIsMTcgQEAgY2xhc3MgQXBtRGF0YUR1bXBlciB7CiAgICAgICAgICAgICAgICBpbnQg
c2FtcGxlX3JhdGVfaHosCiAgICAgICAgICAgICAgICBpbnQgbnVtX2NoYW5uZWxzKSB7CiAjaWYg
V0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKLSAgICBEdW1wV2F2KG5hbWUsIHYuc2l6ZSgpLCB2
LmRhdGEoKSwgc2FtcGxlX3JhdGVfaHosIG51bV9jaGFubmVscyk7CisgICAgaWYgKHJlY29yZGlu
Z19hY3RpdmF0ZWRfKSB7CisgICAgICBEdW1wV2F2KG5hbWUsIHYuc2l6ZSgpLCB2LmRhdGEoKSwg
c2FtcGxlX3JhdGVfaHosIG51bV9jaGFubmVscyk7CisgICAgfQogI2VuZGlmCiAgIH0KIAogIHBy
aXZhdGU6CiAjaWYgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEKKyAgc3RhdGljIGJvb2wgcmVj
b3JkaW5nX2FjdGl2YXRlZF87CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtPdXRwdXREaXJN
YXhMZW5ndGggPSAxMDI0OworICBzdGF0aWMgY2hhciBvdXRwdXRfZGlyX1trT3V0cHV0RGlyTWF4
TGVuZ3RoXTsKICAgY29uc3QgaW50IGluc3RhbmNlX2luZGV4XzsKICAgaW50IHJlY29yZGluZ19z
ZXRfaW5kZXhfID0gMDsKICAgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnVu
aXF1ZV9wdHI8RklMRSwgUmF3RmlsZUNsb3NlRnVuY3Rvcj4+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvbG93X2N1dF9maWx0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvbG93X2N1dF9maWx0ZXIuY2MKaW5kZXgg
NTI0NWM2OGQwMmE0MTllNmY2NTYwNTUwZTZlYmQwOWRlMWZmZGJiNC4uNTgxZDZiYzQyYTg4MDMw
ZjZhZjIwMDcxMzE4ZGFkOWFkNzY4MDdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2xvd19jdXRf
ZmlsdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb3dfY3V0X2ZpbHRlci5jYwpAQCAtMTAsOCArMTAs
MTMgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9sb3dfY3V0X2ZpbHRl
ci5oIgogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8Y3N0cmluZz4KKwogI2luY2x1
ZGUgImNvbW1vbl9hdWRpby9zaWduYWxfcHJvY2Vzc2luZy9pbmNsdWRlL3NpZ25hbF9wcm9jZXNz
aW5nX2xpYnJhcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYXVkaW9f
YnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVk
aW9fcHJvY2Vzc2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvbm9pc2Vfc3Vw
cHJlc3Npb25faW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ub2lzZV9zdXBwcmVzc2lvbl9pbXBsLmNjCmlu
ZGV4IDE1ZDQwNDMyM2MzNmY4OGVmZjFmMTYxOGUwNDIxYTBmNjVhYWMxY2YuLmQ4ZDllMzIzNDBi
MWNjZjEyZWVhN2Y3Y2NiZDM1NzVmMTQyZGRkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ub2lz
ZV9zdXBwcmVzc2lvbl9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ub2lzZV9zdXBwcmVzc2lvbl9p
bXBsLmNjCkBAIC0xMSw5ICsxMSwxMSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy9ub2lzZV9zdXBwcmVzc2lvbl9pbXBsLmgiCiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvYXVkaW9fYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2lmIGRlZmluZWQoV0VC
UlRDX05TX0ZMT0FUKQogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ucy9ub2lz
ZV9zdXBwcmVzc2lvbi5oIgorCiAjZGVmaW5lIE5TX0NSRUFURSBXZWJSdGNOc19DcmVhdGUKICNk
ZWZpbmUgTlNfRlJFRSBXZWJSdGNOc19GcmVlCiAjZGVmaW5lIE5TX0lOSVQgV2ViUnRjTnNfSW5p
dApAQCAtMjEsNiArMjMsNyBAQAogdHlwZWRlZiBOc0hhbmRsZSBOc1N0YXRlOwogI2VsaWYgZGVm
aW5lZChXRUJSVENfTlNfRklYRUQpCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L25zL25vaXNlX3N1cHByZXNzaW9uX3guaCIKKwogI2RlZmluZSBOU19DUkVBVEUgV2ViUnRjTnN4
X0NyZWF0ZQogI2RlZmluZSBOU19GUkVFIFdlYlJ0Y05zeF9GcmVlCiAjZGVmaW5lIE5TX0lOSVQg
V2ViUnRjTnN4X0luaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9yZXNpZHVhbF9lY2hvX2RldGVj
dG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3Jlc2lkdWFsX2VjaG9fZGV0ZWN0b3IuY2MKaW5kZXggZTgwNTAx
MzU4ZWFhYWZlMjQxMTE4YzdjYmZiYzgyNDhmOWQ0NjZlMS4uMzQ1NDIxNGZkNzM5ZDZkZDM2ZjBh
YWZjMGI4ZjI1MDNhZDViYTlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Jlc2lkdWFsX2VjaG9f
ZGV0ZWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Jlc2lkdWFsX2VjaG9fZGV0ZWN0b3IuY2MKQEAg
LTEzLDkgKzEzLDExIEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPG51bWVyaWM+
CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2F1ZGlvX2J1ZmZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9sb2dnaW5nL2FwbV9kYXRhX2R1bXBlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2F0b21pY29wcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRy
aWNzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9ybXNfbGV2ZWwuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9y
bXNfbGV2ZWwuaAppbmRleCA5YWE1NDlhNTdjMWUzMzZhNGVjNmQ3OTM0MzdlM2JmYWYzZWI0ODcw
Li5lNmI1ODQ5ZWFkOGJkZTg4ZGNjMmY3MTdjMzA2YjZiMjBiMjY2ZmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3Npbmcvcm1zX2xldmVsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Jtc19sZXZlbC5oCkBAIC0xMSw2
ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19STVNfTEVWRUxfSF8K
ICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX1JNU19MRVZFTF9IXwogCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3Rlc3QvYXVkaW9fcHJvY2Vzc2luZ19zaW11bGF0b3IuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dGVzdC9hdWRpb19wcm9jZXNzaW5nX3NpbXVsYXRvci5jYwppbmRleCA2NWYzYzg3NDk3Yzg1Y2Rh
NjM1YTRmMjZlODY4MDZjNTAwNGVjOGYzLi5kZjlmNDk3NmJlMjdkMGFlMDNjODA1M2IwMDUyY2Qw
ZGJlMzdlY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRpb19wcm9jZXNzaW5nX3Np
bXVsYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRpb19wcm9jZXNzaW5nX3NpbXVsYXRv
ci5jYwpAQCAtMTgsMTIgKzE4LDE0IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAi
YWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYXBpL2F1ZGlvL2VjaG9fY2FuY2VsbGVy
M19jb25maWdfanNvbi5oIgogI2luY2x1ZGUgImFwaS9hdWRpby9lY2hvX2NhbmNlbGxlcjNfZmFj
dG9yeS5oIgogI2luY2x1ZGUgImNvbW1vbl9hdWRpby9pbmNsdWRlL2F1ZGlvX3V0aWwuaCIKICNp
bmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvYWVjX2R1bXBfZmFjdG9y
eS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9lY2hvX2NhbmNlbGxhdGlv
bl9pbXBsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2VjaG9fY29udHJv
bF9tb2JpbGVfaW1wbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNs
dWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvbG9nZ2luZy9hcG1fZGF0YV9kdW1wZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvdGVzdC9mYWtlX3JlY29yZGluZ19kZXZpY2UuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCkBAIC0zNCw2MDMgKzM2
LDMyIEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIG5hbWVzcGFjZSB7
Ci0KLS8vIFByaW50cyBvdXQgdGhlIGN1cnJlbnRseSB1c2VkIEFFQzMgcGFyYW1ldGVyIHZhbHVl
cyBpbiBKU09OIGZvcm1hdC4KLXZvaWQgUHJpbnRBZWMzUGFyYW1ldGVyVmFsdWVzKGNvbnN0IEVj
aG9DYW5jZWxsZXIzQ29uZmlnJiBjZmcpIHsKLSAgc3RkOjpjb3V0IDw8ICJ7IjsKLSAgc3RkOjpj
b3V0IDw8ICJcImRlbGF5XCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwiZGVmYXVsdF9kZWxheVwi
OiAiIDw8IGNmZy5kZWxheS5kZWZhdWx0X2RlbGF5IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJc
ImRvd25fc2FtcGxpbmdfZmFjdG9yXCI6ICIgPDwgY2ZnLmRlbGF5LmRvd25fc2FtcGxpbmdfZmFj
dG9yCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJudW1fZmlsdGVyc1wi
OiAiIDw8IGNmZy5kZWxheS5udW1fZmlsdGVycyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJh
cGlfY2FsbF9qaXR0ZXJfYmxvY2tzXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5kZWxheS5hcGlf
Y2FsbF9qaXR0ZXJfYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1pbl9lY2hvX3Bh
dGhfZGVsYXlfYmxvY2tzXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5kZWxheS5taW5fZWNob19w
YXRoX2RlbGF5X2Jsb2NrcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJkZWxheV9oZWFkcm9v
bV9ibG9ja3NcIjogIiA8PCBjZmcuZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tzCi0gICAgICAg
ICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJoeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tz
XCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5kZWxheS5oeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tz
IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3NcIjog
IgotICAgICAgICAgICAgPDwgY2ZnLmRlbGF5Lmh5c3RlcmVzaXNfbGltaXRfMl9ibG9ja3MgPDwg
IiwiOwotICBzdGQ6OmNvdXQgPDwgIlwic2tld19oeXN0ZXJlc2lzX2Jsb2Nrc1wiOiAiCi0gICAg
ICAgICAgICA8PCBjZmcuZGVsYXkuc2tld19oeXN0ZXJlc2lzX2Jsb2NrcyA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJmaXhlZF9jYXB0dXJlX2RlbGF5X3NhbXBsZXNcIjogIgotICAgICAgICAg
ICAgPDwgY2ZnLmRlbGF5LmZpeGVkX2NhcHR1cmVfZGVsYXlfc2FtcGxlcyA8PCAiLCI7Ci0gIHN0
ZDo6Y291dCA8PCAiXCJkZWxheV9lc3RpbWF0ZV9zbW9vdGhpbmdcIjogIgotICAgICAgICAgICAg
PDwgY2ZnLmRlbGF5LmRlbGF5X2VzdGltYXRlX3Ntb290aGluZyA8PCAiLCI7Ci0gIHN0ZDo6Y291
dCA8PCAiXCJkZWxheV9jYW5kaWRhdGVfZGV0ZWN0aW9uX3RocmVzaG9sZFwiOiAiCi0gICAgICAg
ICAgICA8PCBjZmcuZGVsYXkuZGVsYXlfY2FuZGlkYXRlX2RldGVjdGlvbl90aHJlc2hvbGQgPDwg
IiwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJkZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkc1wiOiB7
IjsKLSAgc3RkOjpjb3V0IDw8ICJcImluaXRpYWxcIjogIiA8PCBjZmcuZGVsYXkuZGVsYXlfc2Vs
ZWN0aW9uX3RocmVzaG9sZHMuaW5pdGlhbAotICAgICAgICAgICAgPDwgIiwiOwotICBzdGQ6OmNv
dXQgPDwgIlwiY29udmVyZ2VkXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5kZWxheS5kZWxheV9z
ZWxlY3Rpb25fdGhyZXNob2xkcy5jb252ZXJnZWQ7Ci0gIHN0ZDo6Y291dCA8PCAifSI7Ci0KLSAg
c3RkOjpjb3V0IDw8ICJ9LCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcImZpbHRlclwiOiB7IjsKLSAg
c3RkOjpjb3V0IDw8ICJcIm1haW5cIjogWyI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuZmlsdGVyLm1h
aW4ubGVuZ3RoX2Jsb2NrcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuZmlsdGVyLm1haW4u
bGVha2FnZV9jb252ZXJnZWQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5tYWlu
LmxlYWthZ2VfZGl2ZXJnZWQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5tYWlu
LmVycm9yX2Zsb29yIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIubWFpbi5ub2lz
ZV9nYXRlOwotICBzdGQ6OmNvdXQgPDwgIl0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwic2hhZG93
XCI6IFsiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5zaGFkb3cubGVuZ3RoX2Jsb2NrcyA8
PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuZmlsdGVyLnNoYWRvdy5yYXRlIDw8ICIsIjsKLSAg
c3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIuc2hhZG93Lm5vaXNlX2dhdGU7Ci0gIHN0ZDo6Y291dCA8
PCAiXSwiOwotCi0gIHN0ZDo6Y291dCA8PCAiXCJtYWluX2luaXRpYWxcIjogWyI7Ci0gIHN0ZDo6
Y291dCA8PCBjZmcuZmlsdGVyLm1haW5faW5pdGlhbC5sZW5ndGhfYmxvY2tzIDw8ICIsIjsKLSAg
c3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIubWFpbl9pbml0aWFsLmxlYWthZ2VfY29udmVyZ2VkIDw8
ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIubWFpbl9pbml0aWFsLmxlYWthZ2VfZGl2
ZXJnZWQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5tYWluX2luaXRpYWwuZXJy
b3JfZmxvb3IgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5tYWluX2luaXRpYWwu
bm9pc2VfZ2F0ZTsKLSAgc3RkOjpjb3V0IDw8ICJdLCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcInNo
YWRvd19pbml0aWFsXCI6IFsiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLmZpbHRlci5zaGFkb3dfaW5p
dGlhbC5sZW5ndGhfYmxvY2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5maWx0ZXIuc2hh
ZG93X2luaXRpYWwucmF0ZSA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuZmlsdGVyLnNoYWRv
d19pbml0aWFsLm5vaXNlX2dhdGU7Ci0gIHN0ZDo6Y291dCA8PCAiXSwiOwotCi0gIHN0ZDo6Y291
dCA8PCAiXCJjb25maWdfY2hhbmdlX2R1cmF0aW9uX2Jsb2Nrc1wiOiAiCi0gICAgICAgICAgICA8
PCBjZmcuZmlsdGVyLmNvbmZpZ19jaGFuZ2VfZHVyYXRpb25fYmxvY2tzIDw8ICIsIjsKLSAgc3Rk
Ojpjb3V0IDw8ICJcImluaXRpYWxfc3RhdGVfc2Vjb25kc1wiOiAiIDw8IGNmZy5maWx0ZXIuaW5p
dGlhbF9zdGF0ZV9zZWNvbmRzCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAi
XCJjb25zZXJ2YXRpdmVfaW5pdGlhbF9waGFzZVwiOiAiCi0gICAgICAgICAgICA8PCAoY2ZnLmZp
bHRlci5jb25zZXJ2YXRpdmVfaW5pdGlhbF9waGFzZSA/ICJ0cnVlIiA6ICJmYWxzZSIpCi0gICAg
ICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJlbmFibGVfc2hhZG93X2ZpbHRlcl9v
dXRwdXRfdXNhZ2VcIjogIgotICAgICAgICAgICAgPDwgKGNmZy5maWx0ZXIuZW5hYmxlX3NoYWRv
d19maWx0ZXJfb3V0cHV0X3VzYWdlID8gInRydWUiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiZmFsc2UiKTsKLQotICBzdGQ6
OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwiZXJsZVwiOiB7IjsKLSAgc3RkOjpj
b3V0IDw8ICJcIm1pblwiOiAiIDw8IGNmZy5lcmxlLm1pbiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8
PCAiXCJtYXhfbFwiOiAiIDw8IGNmZy5lcmxlLm1heF9sIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8
ICJcIm1heF9oXCI6ICIgPDwgY2ZnLmVybGUubWF4X2ggPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwg
Ilwib25zZXRfZGV0ZWN0aW9uXCI6ICIKLSAgICAgICAgICAgIDw8IChjZmcuZXJsZS5vbnNldF9k
ZXRlY3Rpb24gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0KLSAg
c3RkOjpjb3V0IDw8ICJcImVwX3N0cmVuZ3RoXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibGZc
IjogIiA8PCBjZmcuZXBfc3RyZW5ndGgubGYgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibWZc
IjogIiA8PCBjZmcuZXBfc3RyZW5ndGgubWYgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiaGZc
IjogIiA8PCBjZmcuZXBfc3RyZW5ndGguaGYgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZGVm
YXVsdF9sZW5cIjogIiA8PCBjZmcuZXBfc3RyZW5ndGguZGVmYXVsdF9sZW4gPDwgIiwiOwotICBz
dGQ6OmNvdXQgPDwgIlwicmV2ZXJiX2Jhc2VkX29uX3JlbmRlclwiOiAiCi0gICAgICAgICAgICA8
PCAoY2ZnLmVwX3N0cmVuZ3RoLnJldmVyYl9iYXNlZF9vbl9yZW5kZXIgPyAidHJ1ZSIgOiAiZmFs
c2UiKQotICAgICAgICAgICAgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZWNob19jYW5fc2F0
dXJhdGVcIjogIgotICAgICAgICAgICAgPDwgKGNmZy5lcF9zdHJlbmd0aC5lY2hvX2Nhbl9zYXR1
cmF0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImJvdW5k
ZWRfZXJsXCI6ICIKLSAgICAgICAgICAgIDw8IChjZmcuZXBfc3RyZW5ndGguYm91bmRlZF9lcmwg
PyAidHJ1ZSIgOiAiZmFsc2UiKTsKLQotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNv
dXQgPDwgIlwiZ2Fpbl9tYXNrXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibTBcIjogIiA8PCBj
ZmcuZ2Fpbl9tYXNrLm0wIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm0xXCI6ICIgPDwgY2Zn
LmdhaW5fbWFzay5tMSA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJtMlwiOiAiIDw8IGNmZy5n
YWluX21hc2subTIgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibTNcIjogIiA8PCBjZmcuZ2Fp
bl9tYXNrLm0zIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm01XCI6ICIgPDwgY2ZnLmdhaW5f
bWFzay5tNSA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJtNlwiOiAiIDw8IGNmZy5nYWluX21h
c2subTYgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibTdcIjogIiA8PCBjZmcuZ2Fpbl9tYXNr
Lm03IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm04XCI6ICIgPDwgY2ZnLmdhaW5fbWFzay5t
OCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJtOVwiOiAiIDw8IGNmZy5nYWluX21hc2subTkg
PDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZ2Fpbl9jdXJ2ZV9vZmZzZXRcIjogIiA8PCBjZmcu
Z2Fpbl9tYXNrLmdhaW5fY3VydmVfb2Zmc2V0Ci0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6
Y291dCA8PCAiXCJnYWluX2N1cnZlX3Nsb3BlXCI6ICIgPDwgY2ZnLmdhaW5fbWFzay5nYWluX2N1
cnZlX3Nsb3BlCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJ0ZW1wb3Jh
bF9tYXNraW5nX2xmXCI6ICIgPDwgY2ZnLmdhaW5fbWFzay50ZW1wb3JhbF9tYXNraW5nX2xmCi0g
ICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJ0ZW1wb3JhbF9tYXNraW5nX2hm
XCI6ICIgPDwgY2ZnLmdhaW5fbWFzay50ZW1wb3JhbF9tYXNraW5nX2hmCi0gICAgICAgICAgICA8
PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJ0ZW1wb3JhbF9tYXNraW5nX2xmX2JhbmRzXCI6ICIK
LSAgICAgICAgICAgIDw8IGNmZy5nYWluX21hc2sudGVtcG9yYWxfbWFza2luZ19sZl9iYW5kczsK
LSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0KLSAgc3RkOjpjb3V0IDw8ICJcImVjaG9fYXVkaWJpbGl0
eVwiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcImxvd19yZW5kZXJfbGltaXRcIjogIiA8PCBjZmcu
ZWNob19hdWRpYmlsaXR5Lmxvd19yZW5kZXJfbGltaXQKLSAgICAgICAgICAgIDw8ICIsIjsKLSAg
c3RkOjpjb3V0IDw8ICJcIm5vcm1hbF9yZW5kZXJfbGltaXRcIjogIgotICAgICAgICAgICAgPDwg
Y2ZnLmVjaG9fYXVkaWJpbGl0eS5ub3JtYWxfcmVuZGVyX2xpbWl0IDw8ICIsIjsKLSAgc3RkOjpj
b3V0IDw8ICJcImZsb29yX3Bvd2VyXCI6ICIgPDwgY2ZnLmVjaG9fYXVkaWJpbGl0eS5mbG9vcl9w
b3dlciA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJhdWRpYmlsaXR5X3RocmVzaG9sZF9sZlwi
OiAiCi0gICAgICAgICAgICA8PCBjZmcuZWNob19hdWRpYmlsaXR5LmF1ZGliaWxpdHlfdGhyZXNo
b2xkX2xmIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImF1ZGliaWxpdHlfdGhyZXNob2xkX21m
XCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJl
c2hvbGRfbWYgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiYXVkaWJpbGl0eV90aHJlc2hvbGRf
aGZcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmVjaG9fYXVkaWJpbGl0eS5hdWRpYmlsaXR5X3Ro
cmVzaG9sZF9oZiA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJ1c2Vfc3RhdGlvbmFyeV9wcm9w
ZXJ0aWVzXCI6ICIKLSAgICAgICAgICAgIDw8IChjZmcuZWNob19hdWRpYmlsaXR5LnVzZV9zdGF0
aW9uYXJ5X3Byb3BlcnRpZXMgPyAidHJ1ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiZmFsc2UiKQotICAgICAgICAgICAg
PDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwidXNlX3N0YXRpb25hcml0eV9wcm9wZXJ0aWVzX2F0
X2luaXRcIjogIgotICAgICAgICAgICAgPDwgKGNmZy5lY2hvX2F1ZGliaWxpdHkudXNlX3N0YXRp
b25hcml0eV9wcm9wZXJ0aWVzX2F0X2luaXQKLSAgICAgICAgICAgICAgICAgICAgPyAidHJ1ZSIK
LSAgICAgICAgICAgICAgICAgICAgOiAiZmFsc2UiKTsKLSAgc3RkOjpjb3V0IDw8ICJ9LCI7Ci0K
LSAgc3RkOjpjb3V0IDw8ICJcInJlbmRlcl9sZXZlbHNcIjogeyI7Ci0gIHN0ZDo6Y291dCA8PCAi
XCJhY3RpdmVfcmVuZGVyX2xpbWl0XCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5yZW5kZXJfbGV2
ZWxzLmFjdGl2ZV9yZW5kZXJfbGltaXQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwicG9vcl9l
eGNpdGF0aW9uX3JlbmRlcl9saW1pdFwiOiAiCi0gICAgICAgICAgICA8PCBjZmcucmVuZGVyX2xl
dmVscy5wb29yX2V4Y2l0YXRpb25fcmVuZGVyX2xpbWl0IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8
ICJcInBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGltaXRfZHM4XCI6ICIKLSAgICAgICAgICAgIDw8
IGNmZy5yZW5kZXJfbGV2ZWxzLnBvb3JfZXhjaXRhdGlvbl9yZW5kZXJfbGltaXRfZHM4OwotICBz
dGQ6OmNvdXQgPDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwiZWNob19yZW1vdmFsX2NvbnRy
b2xcIjogeyI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJnYWluX3JhbXB1cFwiOiB7IjsKLSAgc3RkOjpj
b3V0IDw8ICJcImluaXRpYWxfZ2FpblwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZWNob19yZW1v
dmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAuaW5pdGlhbF9nYWluIDw8ICIsIjsKLSAgc3RkOjpjb3V0
IDw8ICJcImZpcnN0X25vbl96ZXJvX2dhaW5cIjogIgotICAgICAgICAgICAgPDwgY2ZnLmVjaG9f
cmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmZpcnN0X25vbl96ZXJvX2dhaW4gPDwgIiwiOwot
ICBzdGQ6OmNvdXQgPDwgIlwibm9uX3plcm9fZ2Fpbl9ibG9ja3NcIjogIgotICAgICAgICAgICAg
PDwgY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLm5vbl96ZXJvX2dhaW5fYmxv
Y2tzIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcImZ1bGxfZ2Fpbl9ibG9ja3NcIjogIgotICAg
ICAgICAgICAgPDwgY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmZ1bGxfZ2Fp
bl9ibG9ja3M7Ci0gIHN0ZDo6Y291dCA8PCAifSwiOwotICBzdGQ6OmNvdXQgPDwgIlwiaGFzX2Ns
b2NrX2RyaWZ0XCI6ICIKLSAgICAgICAgICAgIDw8IChjZmcuZWNob19yZW1vdmFsX2NvbnRyb2wu
aGFzX2Nsb2NrX2RyaWZ0ID8gInRydWUiIDogImZhbHNlIikKLSAgICAgICAgICAgIDw8ICIsIjsK
LSAgc3RkOjpjb3V0IDw8ICJcImxpbmVhcl9hbmRfc3RhYmxlX2VjaG9fcGF0aFwiOiAiCi0gICAg
ICAgICAgICA8PCAoY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmxpbmVhcl9hbmRfc3RhYmxlX2Vj
aG9fcGF0aCA/ICJ0cnVlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiZmFsc2UiKTsKLQotICBzdGQ6OmNvdXQg
PDwgIn0sIjsKLQotICBzdGQ6OmNvdXQgPDwgIlwiZWNob19tb2RlbFwiOiB7IjsKLSAgc3RkOjpj
b3V0IDw8ICJcIm5vaXNlX2Zsb29yX2hvbGRcIjogIiA8PCBjZmcuZWNob19tb2RlbC5ub2lzZV9m
bG9vcl9ob2xkCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJtaW5fbm9p
c2VfZmxvb3JfcG93ZXJcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmVjaG9fbW9kZWwubWluX25v
aXNlX2Zsb29yX3Bvd2VyIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcInN0YXRpb25hcnlfZ2F0
ZV9zbG9wZVwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuZWNob19tb2RlbC5zdGF0aW9uYXJ5X2dh
dGVfc2xvcGUgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwibm9pc2VfZ2F0ZV9wb3dlclwiOiAi
IDw8IGNmZy5lY2hvX21vZGVsLm5vaXNlX2dhdGVfcG93ZXIKLSAgICAgICAgICAgIDw8ICIsIjsK
LSAgc3RkOjpjb3V0IDw8ICJcIm5vaXNlX2dhdGVfc2xvcGVcIjogIiA8PCBjZmcuZWNob19tb2Rl
bC5ub2lzZV9nYXRlX3Nsb3BlCi0gICAgICAgICAgICA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAi
XCJyZW5kZXJfcHJlX3dpbmRvd19zaXplXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5lY2hvX21v
ZGVsLnJlbmRlcl9wcmVfd2luZG93X3NpemUgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwicmVu
ZGVyX3Bvc3Rfd2luZG93X3NpemVcIjogIgotICAgICAgICAgICAgPDwgY2ZnLmVjaG9fbW9kZWwu
cmVuZGVyX3Bvc3Rfd2luZG93X3NpemUgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwicmVuZGVy
X3ByZV93aW5kb3dfc2l6ZV9pbml0XCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5lY2hvX21vZGVs
LnJlbmRlcl9wcmVfd2luZG93X3NpemVfaW5pdCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJy
ZW5kZXJfcG9zdF93aW5kb3dfc2l6ZV9pbml0XCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5lY2hv
X21vZGVsLnJlbmRlcl9wb3N0X3dpbmRvd19zaXplX2luaXQgPDwgIiwiOwotICBzdGQ6OmNvdXQg
PDwgIlwibm9ubGluZWFyX2hvbGRcIjogIiA8PCBjZmcuZWNob19tb2RlbC5ub25saW5lYXJfaG9s
ZCA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJub25saW5lYXJfcmVsZWFzZVwiOiAiIDw8IGNm
Zy5lY2hvX21vZGVsLm5vbmxpbmVhcl9yZWxlYXNlOwotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLQot
ICBzdGQ6OmNvdXQgPDwgIlwic3VwcHJlc3NvclwiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcIm5l
YXJlbmRfYXZlcmFnZV9ibG9ja3NcIjogIgotICAgICAgICAgICAgPDwgY2ZnLnN1cHByZXNzb3Iu
bmVhcmVuZF9hdmVyYWdlX2Jsb2NrcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCAiXCJub3JtYWxf
dHVuaW5nXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwgIlwibWFza19sZlwiOiBbIjsKLSAgc3RkOjpj
b3V0IDw8IGNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19sZi5lbnJfdHJhbnNwYXJl
bnQgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5t
YXNrX2xmLmVucl9zdXBwcmVzcyA8PCAiLCI7Ci0gIHN0ZDo6Y291dCA8PCBjZmcuc3VwcHJlc3Nv
ci5ub3JtYWxfdHVuaW5nLm1hc2tfbGYuZW1yX3RyYW5zcGFyZW50OwotICBzdGQ6OmNvdXQgPDwg
Il0sIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1hc2tfaGZcIjogWyI7Ci0gIHN0ZDo6Y291dCA8PCBj
Zmcuc3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1hc2tfaGYuZW5yX3RyYW5zcGFyZW50IDw8ICIs
IjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWFza19oZi5l
bnJfc3VwcHJlc3MgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3Iubm9ybWFs
X3R1bmluZy5tYXNrX2hmLmVtcl90cmFuc3BhcmVudDsKLSAgc3RkOjpjb3V0IDw8ICJdLCI7Ci0g
IHN0ZDo6Y291dCA8PCAiXCJtYXhfaW5jX2ZhY3RvclwiOiAiCi0gICAgICAgICAgICA8PCBjZmcu
c3VwcHJlc3Nvci5ub3JtYWxfdHVuaW5nLm1heF9pbmNfZmFjdG9yIDw8ICIsIjsKLSAgc3RkOjpj
b3V0IDw8ICJcIm1heF9kZWNfZmFjdG9yX2xmXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5zdXBw
cmVzc29yLm5vcm1hbF90dW5pbmcubWF4X2RlY19mYWN0b3JfbGY7Ci0gIHN0ZDo6Y291dCA8PCAi
fSwiOwotICBzdGQ6OmNvdXQgPDwgIlwibmVhcmVuZF90dW5pbmdcIjogeyI7Ci0gIHN0ZDo6Y291
dCA8PCAiXCJtYXNrX2xmXCI6IFsiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3IubmVh
cmVuZF90dW5pbmcubWFza19sZi5lbnJfdHJhbnNwYXJlbnQgPDwgIiwiOwotICBzdGQ6OmNvdXQg
PDwgY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19sZi5lbnJfc3VwcHJlc3MgPDwg
IiwiOwotICBzdGQ6OmNvdXQgPDwgY2ZnLnN1cHByZXNzb3IubmVhcmVuZF90dW5pbmcubWFza19s
Zi5lbXJfdHJhbnNwYXJlbnQ7Ci0gIHN0ZDo6Y291dCA8PCAiXSwiOwotICBzdGQ6OmNvdXQgPDwg
IlwibWFza19oZlwiOiBbIjsKLSAgc3RkOjpjb3V0IDw8IGNmZy5zdXBwcmVzc29yLm5lYXJlbmRf
dHVuaW5nLm1hc2tfaGYuZW5yX3RyYW5zcGFyZW50IDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8IGNm
Zy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfaGYuZW5yX3N1cHByZXNzIDw8ICIsIjsK
LSAgc3RkOjpjb3V0IDw8IGNmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5nLm1hc2tfaGYuZW1y
X3RyYW5zcGFyZW50OwotICBzdGQ6OmNvdXQgPDwgIl0sIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1h
eF9pbmNfZmFjdG9yXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5zdXBwcmVzc29yLm5lYXJlbmRf
dHVuaW5nLm1heF9pbmNfZmFjdG9yIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1heF9kZWNf
ZmFjdG9yX2xmXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVu
aW5nLm1heF9kZWNfZmFjdG9yX2xmOwotICBzdGQ6OmNvdXQgPDwgIn0sIjsKLSAgc3RkOjpjb3V0
IDw8ICJcImRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uXCI6IHsiOwotICBzdGQ6OmNvdXQgPDwg
IlwiZW5yX3RocmVzaG9sZFwiOiAiCi0gICAgICAgICAgICA8PCBjZmcuc3VwcHJlc3Nvci5kb21p
bmFudF9uZWFyZW5kX2RldGVjdGlvbi5lbnJfdGhyZXNob2xkIDw8ICIsIjsKLSAgc3RkOjpjb3V0
IDw8ICJcInNucl90aHJlc2hvbGRcIjogIgotICAgICAgICAgICAgPDwgY2ZnLnN1cHByZXNzb3Iu
ZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24uc25yX3RocmVzaG9sZCA8PCAiLCI7Ci0gIHN0ZDo6
Y291dCA8PCAiXCJob2xkX2R1cmF0aW9uXCI6ICIKLSAgICAgICAgICAgIDw8IGNmZy5zdXBwcmVz
c29yLmRvbWluYW50X25lYXJlbmRfZGV0ZWN0aW9uLmhvbGRfZHVyYXRpb24gPDwgIiwiOwotICBz
dGQ6OmNvdXQgPDwgIlwidHJpZ2dlcl90aHJlc2hvbGRcIjogIgotICAgICAgICAgICAgPDwgY2Zn
LnN1cHByZXNzb3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24udHJpZ2dlcl90aHJlc2hvbGQ7
Ci0gIHN0ZDo6Y291dCA8PCAifSwiOwotICBzdGQ6OmNvdXQgPDwgIlwiaGlnaF9iYW5kc19zdXBw
cmVzc2lvblwiOiB7IjsKLSAgc3RkOjpjb3V0IDw8ICJcImVucl90aHJlc2hvbGRcIjogIgotICAg
ICAgICAgICAgPDwgY2ZnLnN1cHByZXNzb3IuaGlnaF9iYW5kc19zdXBwcmVzc2lvbi5lbnJfdGhy
ZXNob2xkIDw8ICIsIjsKLSAgc3RkOjpjb3V0IDw8ICJcIm1heF9nYWluX2R1cmluZ19lY2hvXCI6
ICIKLSAgICAgICAgICAgIDw8IGNmZy5zdXBwcmVzc29yLmhpZ2hfYmFuZHNfc3VwcHJlc3Npb24u
bWF4X2dhaW5fZHVyaW5nX2VjaG87Ci0gIHN0ZDo6Y291dCA8PCAifSwiOwotICBzdGQ6OmNvdXQg
PDwgIlwiZmxvb3JfZmlyc3RfaW5jcmVhc2VcIjogIgotICAgICAgICAgICAgPDwgY2ZnLnN1cHBy
ZXNzb3IuZmxvb3JfZmlyc3RfaW5jcmVhc2UgPDwgIiwiOwotICBzdGQ6OmNvdXQgPDwgIlwiZW5m
b3JjZV90cmFuc3BhcmVudFwiOiAiCi0gICAgICAgICAgICA8PCAoY2ZnLnN1cHByZXNzb3IuZW5m
b3JjZV90cmFuc3BhcmVudCA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8ICIsIjsKLSAgc3RkOjpjb3V0
IDw8ICJcImVuZm9yY2VfZW1wdHlfaGlnaGVyX2JhbmRzXCI6ICIKLSAgICAgICAgICAgIDw8IChj
Zmcuc3VwcHJlc3Nvci5lbmZvcmNlX2VtcHR5X2hpZ2hlcl9iYW5kcyA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOwotICBzdGQ6OmNvdXQgPDwgIn0iOwotICBzdGQ6OmNvdXQgPDwgIn0iOwotICBzdGQ6OmNv
dXQgPDwgc3RkOjplbmRsOworLy8gSGVscGVyIGZvciByZWFkaW5nIEpTT04gZnJvbSBhIGZpbGUg
YW5kIHBhcnNpbmcgaXQgdG8gYW4gQUVDMyBjb25maWd1cmF0aW9uLgorRWNob0NhbmNlbGxlcjND
b25maWcgUmVhZEFlYzNDb25maWdGcm9tSnNvbkZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVu
YW1lKSB7CisgIHN0ZDo6c3RyaW5nIGpzb25fc3RyaW5nOworICBzdGQ6OnN0cmluZyBzOworICBz
dGQ6Omlmc3RyZWFtIGYoZmlsZW5hbWUuY19zdHIoKSk7CisgIGlmIChmLmZhaWwoKSkgeworICAg
IHN0ZDo6Y291dCA8PCAiRmFpbGVkIHRvIG9wZW4gdGhlIGZpbGUgIiA8PCBmaWxlbmFtZSA8PCBz
dGQ6OmVuZGw7CisgICAgUlRDX0NIRUNLKGZhbHNlKTsKKyAgfQorICB3aGlsZSAoc3RkOjpnZXRs
aW5lKGYsIHMpKSB7CisgICAganNvbl9zdHJpbmcgKz0gczsKKyAgfQorCisgIGJvb2wgcGFyc2lu
Z19zdWNjZXNzZnVsOworICBFY2hvQ2FuY2VsbGVyM0NvbmZpZyBjZmc7CisgIEFlYzNDb25maWdG
cm9tSnNvblN0cmluZyhqc29uX3N0cmluZywgJmNmZywgJnBhcnNpbmdfc3VjY2Vzc2Z1bCk7Cisg
IGlmICghcGFyc2luZ19zdWNjZXNzZnVsKSB7CisgICAgc3RkOjpjb3V0IDw8ICJQYXJzaW5nIG9m
IGpzb24gc3RyaW5nIGZhaWxlZDogIiA8PCBzdGQ6OmVuZGwKKyAgICAgICAgICAgICAgPDwganNv
bl9zdHJpbmcgPDwgc3RkOjplbmRsOworICAgIFJUQ19DSEVDSyhmYWxzZSk7CisgIH0KKyAgUlRD
X0NIRUNLKEVjaG9DYW5jZWxsZXIzQ29uZmlnOjpWYWxpZGF0ZSgmY2ZnKSk7CisKKyAgcmV0dXJu
IGNmZzsKIH0KIAotLy8gQ2xhc3MgZm9yIHBhcnNpbmcgdGhlIEFFQzMgcGFyYW1ldGVycyBmcm9t
IGEgSlNPTiBmaWxlIGFuZCBwcm9kdWNpbmcgYSBjb25maWcKLS8vIHN0cnVjdC4KLWNsYXNzIEFl
YzNQYXJhbWV0ZXJzUGFyc2VyIHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBFY2hvQ2FuY2VsbGVyM0Nv
bmZpZyBQYXJzZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpIHsKLSAgICByZXR1cm4gQWVj
M1BhcmFtZXRlcnNQYXJzZXIoKS5QYXJzZUZpbGUoZmlsZW5hbWUpOwotICB9Ci0KLSBwcml2YXRl
OgotICBBZWMzUGFyYW1ldGVyc1BhcnNlcigpID0gZGVmYXVsdDsKLQotICB2b2lkIFJlYWRQYXJh
bShjb25zdCBKc29uOjpWYWx1ZSYgcm9vdCwKLSAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcg
cGFyYW1fbmFtZSwKLSAgICAgICAgICAgICAgICAgYm9vbCogcGFyYW0pIGNvbnN0IHsKLSAgICBS
VENfQ0hFQ0socGFyYW0pOwotICAgIGJvb2wgdjsKLSAgICBpZiAocnRjOjpHZXRCb29sRnJvbUpz
b25PYmplY3Qocm9vdCwgcGFyYW1fbmFtZSwgJnYpKSB7Ci0gICAgICAqcGFyYW0gPSB2OwotICAg
IH0KLSAgfQotCi0gIHZvaWQgUmVhZFBhcmFtKGNvbnN0IEpzb246OlZhbHVlJiByb290LAotICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLAotICAgICAgICAgICAgICAgICBz
aXplX3QqIHBhcmFtKSBjb25zdCB7Ci0gICAgUlRDX0NIRUNLKHBhcmFtKTsKLSAgICBpbnQgdjsK
LSAgICBpZiAocnRjOjpHZXRJbnRGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmdikp
IHsKLSAgICAgICpwYXJhbSA9IHY7Ci0gICAgfQotICB9Ci0KLSAgdm9pZCBSZWFkUGFyYW0oY29u
c3QgSnNvbjo6VmFsdWUmIHJvb3QsCi0gICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHBhcmFt
X25hbWUsCi0gICAgICAgICAgICAgICAgIGludCogcGFyYW0pIGNvbnN0IHsKLSAgICBSVENfQ0hF
Q0socGFyYW0pOwotICAgIGludCB2OwotICAgIGlmIChydGM6OkdldEludEZyb21Kc29uT2JqZWN0
KHJvb3QsIHBhcmFtX25hbWUsICZ2KSkgewotICAgICAgKnBhcmFtID0gdjsKLSAgICB9Ci0gIH0K
LQotICB2b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpWYWx1ZSYgcm9vdCwKLSAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwKLSAgICAgICAgICAgICAgICAgZmxvYXQqIHBh
cmFtKSBjb25zdCB7Ci0gICAgUlRDX0NIRUNLKHBhcmFtKTsKLSAgICBkb3VibGUgdjsKLSAgICBp
ZiAocnRjOjpHZXREb3VibGVGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmdikpIHsK
LSAgICAgICpwYXJhbSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2KTsKLSAgICB9Ci0gIH0KLQotICB2
b2lkIFJlYWRQYXJhbShjb25zdCBKc29uOjpWYWx1ZSYgcm9vdCwKLSAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgcGFyYW1fbmFtZSwKLSAgICAgICAgICAgICAgICAgRWNob0NhbmNlbGxlcjND
b25maWc6OkZpbHRlcjo6TWFpbkNvbmZpZ3VyYXRpb24qIHBhcmFtKSBjb25zdCB7Ci0gICAgUlRD
X0NIRUNLKHBhcmFtKTsKLSAgICBKc29uOjpWYWx1ZSBqc29uX2FycmF5OwotICAgIGlmIChydGM6
OkdldFZhbHVlRnJvbUpzb25PYmplY3Qocm9vdCwgcGFyYW1fbmFtZSwgJmpzb25fYXJyYXkpKSB7
Ci0gICAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHY7Ci0gICAgICBydGM6Okpzb25BcnJheVRvRG91
YmxlVmVjdG9yKGpzb25fYXJyYXksICZ2KTsKLSAgICAgIGlmICh2LnNpemUoKSAhPSA1KSB7Ci0g
ICAgICAgIHN0ZDo6Y291dCA8PCAiSW5jb3JyZWN0IGFycmF5IHNpemUgZm9yICIgPDwgcGFyYW1f
bmFtZSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIFJUQ19DSEVDSyhmYWxzZSk7Ci0gICAgICB9Ci0g
ICAgICBwYXJhbS0+bGVuZ3RoX2Jsb2NrcyA9IHN0YXRpY19jYXN0PHNpemVfdD4odlswXSk7Ci0g
ICAgICBwYXJhbS0+bGVha2FnZV9jb252ZXJnZWQgPSBzdGF0aWNfY2FzdDxmbG9hdD4odlsxXSk7
Ci0gICAgICBwYXJhbS0+bGVha2FnZV9kaXZlcmdlZCA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzJd
KTsKLSAgICAgIHBhcmFtLT5lcnJvcl9mbG9vciA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzNdKTsK
LSAgICAgIHBhcmFtLT5ub2lzZV9nYXRlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbNF0pOwotICAg
IH0KLSAgfQotCi0gIHZvaWQgUmVhZFBhcmFtKAotICAgICAgY29uc3QgSnNvbjo6VmFsdWUmIHJv
b3QsCi0gICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lLAotICAgICAgRWNob0NhbmNlbGxlcjND
b25maWc6OkZpbHRlcjo6U2hhZG93Q29uZmlndXJhdGlvbiogcGFyYW0pIGNvbnN0IHsKLSAgICBS
VENfQ0hFQ0socGFyYW0pOwotICAgIEpzb246OlZhbHVlIGpzb25fYXJyYXk7Ci0gICAgaWYgKHJ0
Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCBwYXJhbV9uYW1lLCAmanNvbl9hcnJheSkp
IHsKLSAgICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsKLSAgICAgIHJ0Yzo6SnNvbkFycmF5VG9E
b3VibGVWZWN0b3IoanNvbl9hcnJheSwgJnYpOwotICAgICAgaWYgKHYuc2l6ZSgpICE9IDMpIHsK
LSAgICAgICAgc3RkOjpjb3V0IDw8ICJJbmNvcnJlY3QgYXJyYXkgc2l6ZSBmb3IgIiA8PCBwYXJh
bV9uYW1lIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgUlRDX0NIRUNLKGZhbHNlKTsKLSAgICAgIH0K
LSAgICAgIHBhcmFtLT5sZW5ndGhfYmxvY2tzID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2WzBdKTsK
LSAgICAgIHBhcmFtLT5yYXRlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbMV0pOwotICAgICAgcGFy
YW0tPm5vaXNlX2dhdGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4odlsyXSk7Ci0gICAgfQotICB9Ci0K
LSAgdm9pZCBSZWFkUGFyYW0oCi0gICAgICBjb25zdCBKc29uOjpWYWx1ZSYgcm9vdCwKLSAgICAg
IHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUsCi0gICAgICBFY2hvQ2FuY2VsbGVyM0NvbmZpZzo6U3Vw
cHJlc3Nvcjo6TWFza2luZ1RocmVzaG9sZHMqIHBhcmFtKSBjb25zdCB7Ci0gICAgUlRDX0NIRUNL
KHBhcmFtKTsKLSAgICBKc29uOjpWYWx1ZSBqc29uX2FycmF5OwotICAgIGlmIChydGM6OkdldFZh
bHVlRnJvbUpzb25PYmplY3Qocm9vdCwgcGFyYW1fbmFtZSwgJmpzb25fYXJyYXkpKSB7Ci0gICAg
ICBzdGQ6OnZlY3Rvcjxkb3VibGU+IHY7Ci0gICAgICBydGM6Okpzb25BcnJheVRvRG91YmxlVmVj
dG9yKGpzb25fYXJyYXksICZ2KTsKLSAgICAgIGlmICh2LnNpemUoKSAhPSAzKSB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiSW5jb3JyZWN0IGFycmF5IHNpemUgZm9yICIgPDwgcGFyYW1fbmFtZSA8
PCBzdGQ6OmVuZGw7Ci0gICAgICAgIFJUQ19DSEVDSyhmYWxzZSk7Ci0gICAgICB9Ci0gICAgICBw
YXJhbS0+ZW5yX3RyYW5zcGFyZW50ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZbMF0pOwotICAgICAg
cGFyYW0tPmVucl9zdXBwcmVzcyA9IHN0YXRpY19jYXN0PGZsb2F0Pih2WzFdKTsKLSAgICAgIHBh
cmFtLT5lbXJfdHJhbnNwYXJlbnQgPSBzdGF0aWNfY2FzdDxmbG9hdD4odlsyXSk7Ci0gICAgfQot
ICB9Ci0KLSAgRWNob0NhbmNlbGxlcjNDb25maWcgUGFyc2VGaWxlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBmaWxlbmFtZSkgY29uc3QgewotICAgIEVjaG9DYW5jZWxsZXIzQ29uZmlnIGNmZzsKLSAgICBK
c29uOjpWYWx1ZSByb290OwotICAgIHN0ZDo6c3RyaW5nIHM7Ci0gICAgc3RkOjpzdHJpbmcganNv
bl9zdHJpbmc7Ci0gICAgc3RkOjppZnN0cmVhbSBmKGZpbGVuYW1lLmNfc3RyKCkpOwotCi0gICAg
aWYgKGYuZmFpbCgpKSB7Ci0gICAgICBzdGQ6OmNvdXQgPDwgIkZhaWxlZCB0byBvcGVuIHRoZSBm
aWxlICIgPDwgZmlsZW5hbWUgPDwgc3RkOjplbmRsOwotICAgICAgUlRDX0NIRUNLKGZhbHNlKTsK
LSAgICB9Ci0KLSAgICB3aGlsZSAoc3RkOjpnZXRsaW5lKGYsIHMpKSB7Ci0gICAgICBqc29uX3N0
cmluZyArPSBzOwotICAgIH0KLSAgICBib29sIHN1Y2Nlc3MgPSBKc29uOjpSZWFkZXIoKS5wYXJz
ZShqc29uX3N0cmluZywgcm9vdCk7Ci0gICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICBzdGQ6OmNv
dXQgPDwgIkluY29ycmVjdCBKU09OIGZvcm1hdDoiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIHN0ZDo6
Y291dCA8PCBqc29uX3N0cmluZyA8PCBzdGQ6OmVuZGw7Ci0gICAgICBSVENfQ0hFQ0soZmFsc2Up
OwotICAgIH0KLQotICAgIEpzb246OlZhbHVlIHNlY3Rpb247Ci0gICAgaWYgKHJ0Yzo6R2V0VmFs
dWVGcm9tSnNvbk9iamVjdChyb290LCAiZGVsYXkiLCAmc2VjdGlvbikpIHsKLSAgICAgIFJlYWRQ
YXJhbShzZWN0aW9uLCAiZGVmYXVsdF9kZWxheSIsICZjZmcuZGVsYXkuZGVmYXVsdF9kZWxheSk7
Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImRvd25fc2FtcGxpbmdfZmFjdG9yIiwKLSAgICAg
ICAgICAgICAgICAmY2ZnLmRlbGF5LmRvd25fc2FtcGxpbmdfZmFjdG9yKTsKLSAgICAgIFJlYWRQ
YXJhbShzZWN0aW9uLCAibnVtX2ZpbHRlcnMiLCAmY2ZnLmRlbGF5Lm51bV9maWx0ZXJzKTsKLSAg
ICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiYXBpX2NhbGxfaml0dGVyX2Jsb2NrcyIsCi0gICAgICAg
ICAgICAgICAgJmNmZy5kZWxheS5hcGlfY2FsbF9qaXR0ZXJfYmxvY2tzKTsKLSAgICAgIFJlYWRQ
YXJhbShzZWN0aW9uLCAibWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3MiLAotICAgICAgICAgICAg
ICAgICZjZmcuZGVsYXkubWluX2VjaG9fcGF0aF9kZWxheV9ibG9ja3MpOwotICAgICAgUmVhZFBh
cmFtKHNlY3Rpb24sICJkZWxheV9oZWFkcm9vbV9ibG9ja3MiLAotICAgICAgICAgICAgICAgICZj
ZmcuZGVsYXkuZGVsYXlfaGVhZHJvb21fYmxvY2tzKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9u
LCAiaHlzdGVyZXNpc19saW1pdF8xX2Jsb2NrcyIsCi0gICAgICAgICAgICAgICAgJmNmZy5kZWxh
eS5oeXN0ZXJlc2lzX2xpbWl0XzFfYmxvY2tzKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAi
aHlzdGVyZXNpc19saW1pdF8yX2Jsb2NrcyIsCi0gICAgICAgICAgICAgICAgJmNmZy5kZWxheS5o
eXN0ZXJlc2lzX2xpbWl0XzJfYmxvY2tzKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAic2tl
d19oeXN0ZXJlc2lzX2Jsb2NrcyIsCi0gICAgICAgICAgICAgICAgJmNmZy5kZWxheS5za2V3X2h5
c3RlcmVzaXNfYmxvY2tzKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZml4ZWRfY2FwdHVy
ZV9kZWxheV9zYW1wbGVzIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmRlbGF5LmZpeGVkX2NhcHR1
cmVfZGVsYXlfc2FtcGxlcyk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImRlbGF5X2VzdGlt
YXRlX3Ntb290aGluZyIsCi0gICAgICAgICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9lc3RpbWF0
ZV9zbW9vdGhpbmcpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJkZWxheV9jYW5kaWRhdGVf
ZGV0ZWN0aW9uX3RocmVzaG9sZCIsCi0gICAgICAgICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9j
YW5kaWRhdGVfZGV0ZWN0aW9uX3RocmVzaG9sZCk7Ci0KLSAgICAgIEpzb246OlZhbHVlIHN1YnNl
Y3Rpb247Ci0gICAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rpb24sICJk
ZWxheV9zZWxlY3Rpb25fdGhyZXNob2xkcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZzdWJzZWN0aW9uKSkgewotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwg
ImluaXRpYWwiLAotICAgICAgICAgICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9zZWxlY3Rpb25f
dGhyZXNob2xkcy5pbml0aWFsKTsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJjb252
ZXJnZWQiLAotICAgICAgICAgICAgICAgICAgJmNmZy5kZWxheS5kZWxheV9zZWxlY3Rpb25fdGhy
ZXNob2xkcy5jb252ZXJnZWQpOwotICAgICAgfQotICAgIH0KLQotICAgIGlmIChydGM6OkdldFZh
bHVlRnJvbUpzb25PYmplY3Qocm9vdCwgImZpbHRlciIsICZzZWN0aW9uKSkgewotICAgICAgUmVh
ZFBhcmFtKHNlY3Rpb24sICJtYWluIiwgJmNmZy5maWx0ZXIubWFpbik7Ci0gICAgICBSZWFkUGFy
YW0oc2VjdGlvbiwgInNoYWRvdyIsICZjZmcuZmlsdGVyLnNoYWRvdyk7Ci0gICAgICBSZWFkUGFy
YW0oc2VjdGlvbiwgIm1haW5faW5pdGlhbCIsICZjZmcuZmlsdGVyLm1haW5faW5pdGlhbCk7Ci0g
ICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInNoYWRvd19pbml0aWFsIiwgJmNmZy5maWx0ZXIuc2hh
ZG93X2luaXRpYWwpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJjb25maWdfY2hhbmdlX2R1
cmF0aW9uX2Jsb2NrcyIsCi0gICAgICAgICAgICAgICAgJmNmZy5maWx0ZXIuY29uZmlnX2NoYW5n
ZV9kdXJhdGlvbl9ibG9ja3MpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJpbml0aWFsX3N0
YXRlX3NlY29uZHMiLAotICAgICAgICAgICAgICAgICZjZmcuZmlsdGVyLmluaXRpYWxfc3RhdGVf
c2Vjb25kcyk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImNvbnNlcnZhdGl2ZV9pbml0aWFs
X3BoYXNlIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmZpbHRlci5jb25zZXJ2YXRpdmVfaW5pdGlh
bF9waGFzZSk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImVuYWJsZV9zaGFkb3dfZmlsdGVy
X291dHB1dF91c2FnZSIsCi0gICAgICAgICAgICAgICAgJmNmZy5maWx0ZXIuZW5hYmxlX3NoYWRv
d19maWx0ZXJfb3V0cHV0X3VzYWdlKTsKLSAgICB9Ci0KLSAgICBpZiAocnRjOjpHZXRWYWx1ZUZy
b21Kc29uT2JqZWN0KHJvb3QsICJlcmxlIiwgJnNlY3Rpb24pKSB7Ci0gICAgICBSZWFkUGFyYW0o
c2VjdGlvbiwgIm1pbiIsICZjZmcuZXJsZS5taW4pOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJtYXhfbCIsICZjZmcuZXJsZS5tYXhfbCk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm1h
eF9oIiwgJmNmZy5lcmxlLm1heF9oKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAib25zZXRf
ZGV0ZWN0aW9uIiwgJmNmZy5lcmxlLm9uc2V0X2RldGVjdGlvbik7Ci0gICAgfQotCi0gICAgaWYg
KHJ0Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCAiZXBfc3RyZW5ndGgiLCAmc2VjdGlv
bikpIHsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibGYiLCAmY2ZnLmVwX3N0cmVuZ3RoLmxm
KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibWYiLCAmY2ZnLmVwX3N0cmVuZ3RoLm1mKTsK
LSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiaGYiLCAmY2ZnLmVwX3N0cmVuZ3RoLmhmKTsKLSAg
ICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZGVmYXVsdF9sZW4iLCAmY2ZnLmVwX3N0cmVuZ3RoLmRl
ZmF1bHRfbGVuKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAicmV2ZXJiX2Jhc2VkX29uX3Jl
bmRlciIsCi0gICAgICAgICAgICAgICAgJmNmZy5lcF9zdHJlbmd0aC5yZXZlcmJfYmFzZWRfb25f
cmVuZGVyKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZWNob19jYW5fc2F0dXJhdGUiLAot
ICAgICAgICAgICAgICAgICZjZmcuZXBfc3RyZW5ndGguZWNob19jYW5fc2F0dXJhdGUpOwotICAg
ICAgUmVhZFBhcmFtKHNlY3Rpb24sICJib3VuZGVkX2VybCIsICZjZmcuZXBfc3RyZW5ndGguYm91
bmRlZF9lcmwpOwotICAgIH0KLQotICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qo
cm9vdCwgImdhaW5fbWFzayIsICZzZWN0aW9uKSkgewotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24s
ICJtMSIsICZjZmcuZ2Fpbl9tYXNrLm0xKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibTIi
LCAmY2ZnLmdhaW5fbWFzay5tMik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm0zIiwgJmNm
Zy5nYWluX21hc2subTMpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtNSIsICZjZmcuZ2Fp
bl9tYXNrLm01KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibTYiLCAmY2ZnLmdhaW5fbWFz
ay5tNik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm03IiwgJmNmZy5nYWluX21hc2subTcp
OwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJtOCIsICZjZmcuZ2Fpbl9tYXNrLm04KTsKLSAg
ICAgIFJlYWRQYXJhbShzZWN0aW9uLCAibTkiLCAmY2ZnLmdhaW5fbWFzay5tOSk7Ci0KLSAgICAg
IFJlYWRQYXJhbShzZWN0aW9uLCAiZ2Fpbl9jdXJ2ZV9vZmZzZXQiLCAmY2ZnLmdhaW5fbWFzay5n
YWluX2N1cnZlX29mZnNldCk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImdhaW5fY3VydmVf
c2xvcGUiLCAmY2ZnLmdhaW5fbWFzay5nYWluX2N1cnZlX3Nsb3BlKTsKLSAgICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAidGVtcG9yYWxfbWFza2luZ19sZiIsCi0gICAgICAgICAgICAgICAgJmNmZy5n
YWluX21hc2sudGVtcG9yYWxfbWFza2luZ19sZik7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwg
InRlbXBvcmFsX21hc2tpbmdfaGYiLAotICAgICAgICAgICAgICAgICZjZmcuZ2Fpbl9tYXNrLnRl
bXBvcmFsX21hc2tpbmdfaGYpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJ0ZW1wb3JhbF9t
YXNraW5nX2xmX2JhbmRzIiwKLSAgICAgICAgICAgICAgICAmY2ZnLmdhaW5fbWFzay50ZW1wb3Jh
bF9tYXNraW5nX2xmX2JhbmRzKTsKLSAgICB9Ci0KLSAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21K
c29uT2JqZWN0KHJvb3QsICJlY2hvX2F1ZGliaWxpdHkiLCAmc2VjdGlvbikpIHsKLSAgICAgIFJl
YWRQYXJhbShzZWN0aW9uLCAibG93X3JlbmRlcl9saW1pdCIsCi0gICAgICAgICAgICAgICAgJmNm
Zy5lY2hvX2F1ZGliaWxpdHkubG93X3JlbmRlcl9saW1pdCk7Ci0gICAgICBSZWFkUGFyYW0oc2Vj
dGlvbiwgIm5vcm1hbF9yZW5kZXJfbGltaXQiLAotICAgICAgICAgICAgICAgICZjZmcuZWNob19h
dWRpYmlsaXR5Lm5vcm1hbF9yZW5kZXJfbGltaXQpOwotCi0gICAgICBSZWFkUGFyYW0oc2VjdGlv
biwgImZsb29yX3Bvd2VyIiwgJmNmZy5lY2hvX2F1ZGliaWxpdHkuZmxvb3JfcG93ZXIpOwotICAg
ICAgUmVhZFBhcmFtKHNlY3Rpb24sICJhdWRpYmlsaXR5X3RocmVzaG9sZF9sZiIsCi0gICAgICAg
ICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfbGYpOwot
ICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJhdWRpYmlsaXR5X3RocmVzaG9sZF9tZiIsCi0gICAg
ICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRfbWYp
OwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJhdWRpYmlsaXR5X3RocmVzaG9sZF9oZiIsCi0g
ICAgICAgICAgICAgICAgJmNmZy5lY2hvX2F1ZGliaWxpdHkuYXVkaWJpbGl0eV90aHJlc2hvbGRf
aGYpOwotICAgICAgUmVhZFBhcmFtKHNlY3Rpb24sICJ1c2Vfc3RhdGlvbmFyeV9wcm9wZXJ0aWVz
IiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS51c2Vfc3RhdGlvbmFyeV9w
cm9wZXJ0aWVzKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAidXNlX3N0YXRpb25hcnlfcHJv
cGVydGllc19hdF9pbml0IiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fYXVkaWJpbGl0eS51
c2Vfc3RhdGlvbmFyaXR5X3Byb3BlcnRpZXNfYXRfaW5pdCk7Ci0gICAgfQotCi0gICAgaWYgKHJ0
Yzo6R2V0VmFsdWVGcm9tSnNvbk9iamVjdChyb290LCAiZWNob19yZW1vdmFsX2NvbnRyb2wiLCAm
c2VjdGlvbikpIHsKLSAgICAgIEpzb246OlZhbHVlIHN1YnNlY3Rpb247Ci0gICAgICBpZiAocnRj
OjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rpb24sICJnYWluX3JhbXB1cCIsICZzdWJzZWN0
aW9uKSkgewotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgImluaXRpYWxfZ2FpbiIsCi0g
ICAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdhaW5fcmFtcHVwLmlu
aXRpYWxfZ2Fpbik7Ci0gICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiZmlyc3Rfbm9uX3pl
cm9fZ2FpbiIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmdh
aW5fcmFtcHVwLmZpcnN0X25vbl96ZXJvX2dhaW4pOwotICAgICAgICBSZWFkUGFyYW0oc3Vic2Vj
dGlvbiwgIm5vbl96ZXJvX2dhaW5fYmxvY2tzIiwKLSAgICAgICAgICAgICAgICAgICZjZmcuZWNo
b19yZW1vdmFsX2NvbnRyb2wuZ2Fpbl9yYW1wdXAubm9uX3plcm9fZ2Fpbl9ibG9ja3MpOwotICAg
ICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgImZ1bGxfZ2Fpbl9ibG9ja3MiLAotICAgICAgICAg
ICAgICAgICAgJmNmZy5lY2hvX3JlbW92YWxfY29udHJvbC5nYWluX3JhbXB1cC5mdWxsX2dhaW5f
YmxvY2tzKTsKLSAgICAgIH0KLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiaGFzX2Nsb2NrX2Ry
aWZ0IiwKLSAgICAgICAgICAgICAgICAmY2ZnLmVjaG9fcmVtb3ZhbF9jb250cm9sLmhhc19jbG9j
a19kcmlmdCk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgImxpbmVhcl9hbmRfc3RhYmxlX2Vj
aG9fcGF0aCIsCi0gICAgICAgICAgICAgICAgJmNmZy5lY2hvX3JlbW92YWxfY29udHJvbC5saW5l
YXJfYW5kX3N0YWJsZV9lY2hvX3BhdGgpOwotICAgIH0KLQotICAgIGlmIChydGM6OkdldFZhbHVl
RnJvbUpzb25PYmplY3Qocm9vdCwgImVjaG9fbW9kZWwiLCAmc2VjdGlvbikpIHsKLSAgICAgIEpz
b246OlZhbHVlIHN1YnNlY3Rpb247Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5vaXNlX2Zs
b29yX2hvbGQiLCAmY2ZnLmVjaG9fbW9kZWwubm9pc2VfZmxvb3JfaG9sZCk7Ci0gICAgICBSZWFk
UGFyYW0oc2VjdGlvbiwgIm1pbl9ub2lzZV9mbG9vcl9wb3dlciIsCi0gICAgICAgICAgICAgICAg
JmNmZy5lY2hvX21vZGVsLm1pbl9ub2lzZV9mbG9vcl9wb3dlcik7Ci0gICAgICBSZWFkUGFyYW0o
c2VjdGlvbiwgInN0YXRpb25hcnlfZ2F0ZV9zbG9wZSIsCi0gICAgICAgICAgICAgICAgJmNmZy5l
Y2hvX21vZGVsLnN0YXRpb25hcnlfZ2F0ZV9zbG9wZSk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlv
biwgIm5vaXNlX2dhdGVfcG93ZXIiLCAmY2ZnLmVjaG9fbW9kZWwubm9pc2VfZ2F0ZV9wb3dlcik7
Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgIm5vaXNlX2dhdGVfc2xvcGUiLCAmY2ZnLmVjaG9f
bW9kZWwubm9pc2VfZ2F0ZV9zbG9wZSk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRl
cl9wcmVfd2luZG93X3NpemUiLAotICAgICAgICAgICAgICAgICZjZmcuZWNob19tb2RlbC5yZW5k
ZXJfcHJlX3dpbmRvd19zaXplKTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAicmVuZGVyX3Bv
c3Rfd2luZG93X3NpemUiLAotICAgICAgICAgICAgICAgICZjZmcuZWNob19tb2RlbC5yZW5kZXJf
cG9zdF93aW5kb3dfc2l6ZSk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRlcl9wcmVf
d2luZG93X3NpemVfaW5pdCIsCi0gICAgICAgICAgICAgICAgJmNmZy5lY2hvX21vZGVsLnJlbmRl
cl9wcmVfd2luZG93X3NpemVfaW5pdCk7Ci0gICAgICBSZWFkUGFyYW0oc2VjdGlvbiwgInJlbmRl
cl9wb3N0X3dpbmRvd19zaXplX2luaXQiLAotICAgICAgICAgICAgICAgICZjZmcuZWNob19tb2Rl
bC5yZW5kZXJfcG9zdF93aW5kb3dfc2l6ZV9pbml0KTsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9u
LCAibm9ubGluZWFyX2hvbGQiLCAmY2ZnLmVjaG9fbW9kZWwubm9ubGluZWFyX2hvbGQpOwotICAg
ICAgUmVhZFBhcmFtKHNlY3Rpb24sICJub25saW5lYXJfcmVsZWFzZSIsCi0gICAgICAgICAgICAg
ICAgJmNmZy5lY2hvX21vZGVsLm5vbmxpbmVhcl9yZWxlYXNlKTsKLSAgICB9Ci0KLSAgICBKc29u
OjpWYWx1ZSBzdWJzZWN0aW9uOwotICAgIGlmIChydGM6OkdldFZhbHVlRnJvbUpzb25PYmplY3Qo
cm9vdCwgInN1cHByZXNzb3IiLCAmc2VjdGlvbikpIHsKLSAgICAgIFJlYWRQYXJhbShzZWN0aW9u
LCAibmVhcmVuZF9hdmVyYWdlX2Jsb2NrcyIsCi0gICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVz
c29yLm5lYXJlbmRfYXZlcmFnZV9ibG9ja3MpOwotCi0gICAgICBpZiAocnRjOjpHZXRWYWx1ZUZy
b21Kc29uT2JqZWN0KHNlY3Rpb24sICJub3JtYWxfdHVuaW5nIiwgJnN1YnNlY3Rpb24pKSB7Ci0g
ICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWFza19sZiIsICZjZmcuc3VwcHJlc3Nvci5u
b3JtYWxfdHVuaW5nLm1hc2tfbGYpOwotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1h
c2tfaGYiLCAmY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXNrX2hmKTsKLSAgICAgICAg
UmVhZFBhcmFtKHN1YnNlY3Rpb24sICJtYXhfaW5jX2ZhY3RvciIsCi0gICAgICAgICAgICAgICAg
ICAmY2ZnLnN1cHByZXNzb3Iubm9ybWFsX3R1bmluZy5tYXhfaW5jX2ZhY3Rvcik7Ci0gICAgICAg
IFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWF4X2RlY19mYWN0b3JfbGYiLAotICAgICAgICAgICAg
ICAgICAgJmNmZy5zdXBwcmVzc29yLm5vcm1hbF90dW5pbmcubWF4X2RlY19mYWN0b3JfbGYpOwot
ICAgICAgfQotCi0gICAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rpb24s
ICJuZWFyZW5kX3R1bmluZyIsICZzdWJzZWN0aW9uKSkgewotICAgICAgICBSZWFkUGFyYW0oc3Vi
c2VjdGlvbiwgIm1hc2tfbGYiLAotICAgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLm5l
YXJlbmRfdHVuaW5nLm1hc2tfbGYpOwotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1h
c2tfaGYiLAotICAgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5n
Lm1hc2tfaGYpOwotICAgICAgICBSZWFkUGFyYW0oc3Vic2VjdGlvbiwgIm1heF9pbmNfZmFjdG9y
IiwKLSAgICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5uZWFyZW5kX3R1bmluZy5tYXhf
aW5jX2ZhY3Rvcik7Ci0gICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAibWF4X2RlY19mYWN0
b3JfbGYiLAotICAgICAgICAgICAgICAgICAgJmNmZy5zdXBwcmVzc29yLm5lYXJlbmRfdHVuaW5n
Lm1heF9kZWNfZmFjdG9yX2xmKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHJ0Yzo6R2V0VmFsdWVG
cm9tSnNvbk9iamVjdChzZWN0aW9uLCAiZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24iLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Vic2VjdGlvbikpIHsKLSAgICAg
ICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJlbnJfdGhyZXNob2xkIiwKLSAgICAgICAgICAgICAg
ICAgICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlvbi5lbnJfdGhyZXNo
b2xkKTsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJzbnJfdGhyZXNob2xkIiwKLSAg
ICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFyZW5kX2RldGVjdGlv
bi5zbnJfdGhyZXNob2xkKTsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24sICJob2xkX2R1
cmF0aW9uIiwKLSAgICAgICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5kb21pbmFudF9uZWFy
ZW5kX2RldGVjdGlvbi5ob2xkX2R1cmF0aW9uKTsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rp
b24sICJ0cmlnZ2VyX3RocmVzaG9sZCIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNz
b3IuZG9taW5hbnRfbmVhcmVuZF9kZXRlY3Rpb24udHJpZ2dlcl90aHJlc2hvbGQpOwotICAgICAg
fQotCi0gICAgICBpZiAocnRjOjpHZXRWYWx1ZUZyb21Kc29uT2JqZWN0KHNlY3Rpb24sICJoaWdo
X2JhbmRzX3N1cHByZXNzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnN1YnNlY3Rpb24pKSB7Ci0gICAgICAgIFJlYWRQYXJhbShzdWJzZWN0aW9uLCAiZW5yX3Ro
cmVzaG9sZCIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNzb3IuaGlnaF9iYW5kc19z
dXBwcmVzc2lvbi5lbnJfdGhyZXNob2xkKTsKLSAgICAgICAgUmVhZFBhcmFtKHN1YnNlY3Rpb24s
ICJtYXhfZ2Fpbl9kdXJpbmdfZWNobyIsCi0gICAgICAgICAgICAgICAgICAmY2ZnLnN1cHByZXNz
b3IuaGlnaF9iYW5kc19zdXBwcmVzc2lvbi5tYXhfZ2Fpbl9kdXJpbmdfZWNobyk7Ci0gICAgICB9
Ci0KLSAgICAgIFJlYWRQYXJhbShzZWN0aW9uLCAiZmxvb3JfZmlyc3RfaW5jcmVhc2UiLAotICAg
ICAgICAgICAgICAgICZjZmcuc3VwcHJlc3Nvci5mbG9vcl9maXJzdF9pbmNyZWFzZSk7Ci0gICAg
ICBSZWFkUGFyYW0oc2VjdGlvbiwgImVuZm9yY2VfdHJhbnNwYXJlbnQiLAotICAgICAgICAgICAg
ICAgICZjZmcuc3VwcHJlc3Nvci5lbmZvcmNlX3RyYW5zcGFyZW50KTsKLSAgICAgIFJlYWRQYXJh
bShzZWN0aW9uLCAiZW5mb3JjZV9lbXB0eV9oaWdoZXJfYmFuZHMiLAotICAgICAgICAgICAgICAg
ICZjZmcuc3VwcHJlc3Nvci5lbmZvcmNlX2VtcHR5X2hpZ2hlcl9iYW5kcyk7Ci0gICAgfQotCi0g
ICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKLSAgICByZXR1cm4gY2ZnOwotICB9Ci19OwotCiB2
b2lkIENvcHlGcm9tQXVkaW9GcmFtZShjb25zdCBBdWRpb0ZyYW1lJiBzcmMsIENoYW5uZWxCdWZm
ZXI8ZmxvYXQ+KiBkZXN0KSB7CiAgIFJUQ19DSEVDS19FUShzcmMubnVtX2NoYW5uZWxzXywgZGVz
dC0+bnVtX2NoYW5uZWxzKCkpOwogICBSVENfQ0hFQ0tfRVEoc3JjLnNhbXBsZXNfcGVyX2NoYW5u
ZWxfLCBkZXN0LT5udW1fZnJhbWVzKCkpOwpAQCAtNjk1LDYgKzEyNiwxMyBAQCBBdWRpb1Byb2Nl
c3NpbmdTaW11bGF0b3I6OkF1ZGlvUHJvY2Vzc2luZ1NpbXVsYXRvcigKICAgICAgICAgICBzZXR0
aW5ncy5pbml0aWFsX21pY19sZXZlbCwKICAgICAgICAgICBzZXR0aW5nc18uc2ltdWxhdGVfbWlj
X2dhaW4gPyAqc2V0dGluZ3Muc2ltdWxhdGVkX21pY19raW5kIDogMCksCiAgICAgICB3b3JrZXJf
cXVldWVfKCJmaWxlX3dyaXRlcl90YXNrX3F1ZXVlIikgeworICBSVENfQ0hFQ0soIXNldHRpbmdz
Xy5kdW1wX2ludGVybmFsX2RhdGEgfHwgV0VCUlRDX0FQTV9ERUJVR19EVU1QID09IDEpOworICBB
cG1EYXRhRHVtcGVyOjpTZXRBY3RpdmF0ZWQoc2V0dGluZ3NfLmR1bXBfaW50ZXJuYWxfZGF0YSk7
CisgIGlmIChzZXR0aW5nc18uZHVtcF9pbnRlcm5hbF9kYXRhX291dHB1dF9kaXIuaGFzX3ZhbHVl
KCkpIHsKKyAgICBBcG1EYXRhRHVtcGVyOjpTZXRPdXRwdXREaXJlY3RvcnkoCisgICAgICAgIHNl
dHRpbmdzXy5kdW1wX2ludGVybmFsX2RhdGFfb3V0cHV0X2Rpci52YWx1ZSgpKTsKKyAgfQorCiAg
IGlmIChzZXR0aW5nc18uZWRfZ3JhcGhfb3V0cHV0X2ZpbGVuYW1lICYmCiAgICAgICAhc2V0dGlu
Z3NfLmVkX2dyYXBoX291dHB1dF9maWxlbmFtZS0+ZW1wdHkoKSkgewogICAgIHJlc2lkdWFsX2Vj
aG9fbGlrZWxpaG9vZF9ncmFwaF93cml0ZXJfLm9wZW4oCkBAIC03NzYsOSArMjE0LDkgQEAgdm9p
ZCBBdWRpb1Byb2Nlc3NpbmdTaW11bGF0b3I6OlByb2Nlc3NTdHJlYW0oYm9vbCBmaXhlZF9pbnRl
cmZhY2UpIHsKICAgfQogCiAgIGlmIChyZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2RfZ3JhcGhfd3Jp
dGVyXy5pc19vcGVuKCkpIHsKLSAgICBhdXRvIHN0YXRzID0gYXBfLT5HZXRTdGF0aXN0aWNzKCk7
Ci0gICAgcmVzaWR1YWxfZWNob19saWtlbGlob29kX2dyYXBoX3dyaXRlcl8gPDwgc3RhdHMucmVz
aWR1YWxfZWNob19saWtlbGlob29kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgIiwgIjsKKyAgICBhdXRvIHN0YXRzID0gYXBfLT5HZXRTdGF0aXN0aWNzKHRy
dWUgLypoYXNfcmVtb3RlX3RyYWNrcyovKTsKKyAgICByZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2Rf
Z3JhcGhfd3JpdGVyXworICAgICAgICA8PCBzdGF0cy5yZXNpZHVhbF9lY2hvX2xpa2VsaWhvb2Qu
dmFsdWVfb3IoLTEuZikgPDwgIiwgIjsKICAgfQogCiAgICsrbnVtX3Byb2Nlc3Nfc3RyZWFtX2Nh
bGxzXzsKQEAgLTkxOCwxMCArMzU2LDEzIEBAIHZvaWQgQXVkaW9Qcm9jZXNzaW5nU2ltdWxhdG9y
OjpDcmVhdGVBdWRpb1Byb2Nlc3NvcigpIHsKICAgfQogICBpZiAoc2V0dGluZ3NfLnVzZV9hZ2My
KSB7CiAgICAgYXBtX2NvbmZpZy5nYWluX2NvbnRyb2xsZXIyLmVuYWJsZWQgPSAqc2V0dGluZ3Nf
LnVzZV9hZ2MyOwotICAgIGFwbV9jb25maWcuZ2Fpbl9jb250cm9sbGVyMi5maXhlZF9nYWluX2Ri
ID0gc2V0dGluZ3NfLmFnYzJfZml4ZWRfZ2Fpbl9kYjsKKyAgICBhcG1fY29uZmlnLmdhaW5fY29u
dHJvbGxlcjIuZml4ZWRfZGlnaXRhbC5nYWluX2RiID0KKyAgICAgICAgc2V0dGluZ3NfLmFnYzJf
Zml4ZWRfZ2Fpbl9kYjsKICAgICBpZiAoc2V0dGluZ3NfLmFnYzJfdXNlX2FkYXB0aXZlX2dhaW4p
IHsKLSAgICAgIGFwbV9jb25maWcuZ2Fpbl9jb250cm9sbGVyMi5hZGFwdGl2ZV9kaWdpdGFsX21v
ZGUgPQorICAgICAgYXBtX2NvbmZpZy5nYWluX2NvbnRyb2xsZXIyLmFkYXB0aXZlX2RpZ2l0YWwu
ZW5hYmxlZCA9CiAgICAgICAgICAgKnNldHRpbmdzXy5hZ2MyX3VzZV9hZGFwdGl2ZV9nYWluOwor
ICAgICAgYXBtX2NvbmZpZy5nYWluX2NvbnRyb2xsZXIyLmFkYXB0aXZlX2RpZ2l0YWwubGV2ZWxf
ZXN0aW1hdG9yID0KKyAgICAgICAgICBzZXR0aW5nc18uYWdjMl9hZGFwdGl2ZV9sZXZlbF9lc3Rp
bWF0b3I7CiAgICAgfQogICB9CiAgIGlmIChzZXR0aW5nc18udXNlX3ByZV9hbXBsaWZpZXIpIHsK
QEAgLTk0NCw3ICszODUsNyBAQCB2b2lkIEF1ZGlvUHJvY2Vzc2luZ1NpbXVsYXRvcjo6Q3JlYXRl
QXVkaW9Qcm9jZXNzb3IoKSB7CiAgICAgICBpZiAoc2V0dGluZ3NfLnVzZV92ZXJib3NlX2xvZ2dp
bmcpIHsKICAgICAgICAgc3RkOjpjb3V0IDw8ICJSZWFkaW5nIEFFQzMgUGFyYW1ldGVycyBmcm9t
IEpTT04gaW5wdXQuIiA8PCBzdGQ6OmVuZGw7CiAgICAgICB9Ci0gICAgICBjZmcgPSBBZWMzUGFy
YW1ldGVyc1BhcnNlcjo6UGFyc2UoKnNldHRpbmdzXy5hZWMzX3NldHRpbmdzX2ZpbGVuYW1lKTsK
KyAgICAgIGNmZyA9IFJlYWRBZWMzQ29uZmlnRnJvbUpzb25GaWxlKCpzZXR0aW5nc18uYWVjM19z
ZXR0aW5nc19maWxlbmFtZSk7CiAgICAgfQogICAgIGVjaG9fY29udHJvbF9mYWN0b3J5LnJlc2V0
KG5ldyBFY2hvQ2FuY2VsbGVyM0ZhY3RvcnkoY2ZnKSk7CiAKQEAgLTk1Miw3ICszOTMsNyBAQCB2
b2lkIEF1ZGlvUHJvY2Vzc2luZ1NpbXVsYXRvcjo6Q3JlYXRlQXVkaW9Qcm9jZXNzb3IoKSB7CiAg
ICAgICBpZiAoIXNldHRpbmdzXy51c2VfcXVpZXRfb3V0cHV0KSB7CiAgICAgICAgIHN0ZDo6Y291
dCA8PCAiQUVDMyBzZXR0aW5nczoiIDw8IHN0ZDo6ZW5kbDsKICAgICAgIH0KLSAgICAgIFByaW50
QWVjM1BhcmFtZXRlclZhbHVlcyhjZmcpOworICAgICAgc3RkOjpjb3V0IDw8IEFlYzNDb25maWdU
b0pzb25TdHJpbmcoY2ZnKSA8PCBzdGQ6OmVuZGw7CiAgICAgfQogICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy90ZXN0L2F1ZGlvX3Byb2Nlc3Npbmdfc2ltdWxhdG9yLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dGVzdC9hdWRpb19wcm9jZXNzaW5nX3NpbXVsYXRvci5oCmluZGV4IDRlNTgwYjRmY2VkOTU0OGQ1
OGFjMmQ1NTQ0M2Y0NDZmYmI1M2U3YzIuLjRiNjc1MzdiNDlhNWIwMGI2YTU3ZDI2MTA5MjQ1MjJl
MmZiODI2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2F1ZGlvX3Byb2Nlc3Npbmdfc2lt
dWxhdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvYXVkaW9fcHJvY2Vzc2luZ19zaW11bGF0b3Iu
aApAQCAtNzUsNiArNzUsOCBAQCBzdHJ1Y3QgU2ltdWxhdGlvblNldHRpbmdzIHsKICAgYWJzbDo6
b3B0aW9uYWw8aW50PiBhZ2NfY29tcHJlc3Npb25fZ2FpbjsKICAgYWJzbDo6b3B0aW9uYWw8Ym9v
bD4gYWdjMl91c2VfYWRhcHRpdmVfZ2FpbjsKICAgZmxvYXQgYWdjMl9maXhlZF9nYWluX2RiOwor
ICBBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZzo6R2FpbkNvbnRyb2xsZXIyOjpMZXZlbEVzdGltYXRv
cgorICAgICAgYWdjMl9hZGFwdGl2ZV9sZXZlbF9lc3RpbWF0b3I7CiAgIGZsb2F0IHByZV9hbXBs
aWZpZXJfZ2Fpbl9mYWN0b3I7CiAgIGFic2w6Om9wdGlvbmFsPGludD4gdmFkX2xpa2VsaWhvb2Q7
CiAgIGFic2w6Om9wdGlvbmFsPGludD4gbnNfbGV2ZWw7CkBAIC05Miw2ICs5NCw4IEBAIHN0cnVj
dCBTaW11bGF0aW9uU2V0dGluZ3MgewogICBib29sIGZpeGVkX2ludGVyZmFjZSA9IGZhbHNlOwog
ICBib29sIHN0b3JlX2ludGVybWVkaWF0ZV9vdXRwdXQgPSBmYWxzZTsKICAgYm9vbCBwcmludF9h
ZWMzX3BhcmFtZXRlcl92YWx1ZXMgPSBmYWxzZTsKKyAgYm9vbCBkdW1wX2ludGVybmFsX2RhdGEg
PSBmYWxzZTsKKyAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IGR1bXBfaW50ZXJuYWxfZGF0
YV9vdXRwdXRfZGlyOwogICBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gY3VzdG9tX2NhbGxf
b3JkZXJfZmlsZW5hbWU7CiAgIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBhZWMzX3NldHRp
bmdzX2ZpbGVuYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2F1ZGlvcHJvY19m
bG9hdF9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvYXVkaW9wcm9jX2Zsb2F0X2ltcGwuY2MKaW5k
ZXggM2E0NDg4NzdkODE5YWQxMTYwMTE3M2IwOTU3ZWNiM2RhZGIxMmM1MS4uMGZmMjgwNmU2ZDVk
ZWNiMDZkNjg3NzAwYjZkMjNjNDMyMGMxNTZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3Qv
YXVkaW9wcm9jX2Zsb2F0X2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvYXVkaW9wcm9jX2Zs
b2F0X2ltcGwuY2MKQEAgLTE0LDEzICsxNCwxNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNp
bmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRpb19wcm9jZXNzaW5nLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvYWVjX2R1bXBfYmFzZWRfc2ltdWxhdG9yLmgiCiAj
aW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvYXVkaW9fcHJvY2Vzc2luZ19z
aW11bGF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9hdWRp
b3Byb2NfZmxvYXRfaW1wbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90
ZXN0L3dhdl9iYXNlZF9zaW11bGF0b3IuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mv
c3RyaW5nX2J1aWxkZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7
CkBAIC0zNywxNTUgKzQxLDE4NSBAQCBjb25zdCBjaGFyIGtVc2FnZURlc2NyaXB0aW9uW10gPQog
ICAgICJwcm9jZXNzaW5nIG1vZHVsZSwgZWl0aGVyIGJhc2VkIG9uIHdhdiBmaWxlcyBvciAiCiAg
ICAgInByb3RvYnVmIGRlYnVnIGR1bXAgcmVjb3JkaW5ncy5cbiI7CiAKLURFRklORV9zdHJpbmco
ZHVtcF9pbnB1dCwgIiIsICJBZWMgZHVtcCBpbnB1dCBmaWxlbmFtZSIpOwotREVGSU5FX3N0cmlu
ZyhkdW1wX291dHB1dCwgIiIsICJBZWMgZHVtcCBvdXRwdXQgZmlsZW5hbWUiKTsKLURFRklORV9z
dHJpbmcoaSwgIiIsICJGb3J3YXJkIHN0cmVhbSBpbnB1dCB3YXYgZmlsZW5hbWUiKTsKLURFRklO
RV9zdHJpbmcobywgIiIsICJGb3J3YXJkIHN0cmVhbSBvdXRwdXQgd2F2IGZpbGVuYW1lIik7Ci1E
RUZJTkVfc3RyaW5nKHJpLCAiIiwgIlJldmVyc2Ugc3RyZWFtIGlucHV0IHdhdiBmaWxlbmFtZSIp
OwotREVGSU5FX3N0cmluZyhybywgIiIsICJSZXZlcnNlIHN0cmVhbSBvdXRwdXQgd2F2IGZpbGVu
YW1lIik7Ci1ERUZJTkVfc3RyaW5nKGFydGlmaWNpYWxfbmVhcmVuZCwgIiIsICJBcnRpZmljaWFs
IG5lYXJlbmQgd2F2IGZpbGVuYW1lIik7Ci1ERUZJTkVfaW50KG91dHB1dF9udW1fY2hhbm5lbHMs
Ci0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIk51
bWJlciBvZiBmb3J3YXJkIHN0cmVhbSBvdXRwdXQgY2hhbm5lbHMiKTsKLURFRklORV9pbnQocmV2
ZXJzZV9vdXRwdXRfbnVtX2NoYW5uZWxzLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lm
aWVkVmFsdWUsCi0gICAgICAgICAgICJOdW1iZXIgb2YgUmV2ZXJzZSBzdHJlYW0gb3V0cHV0IGNo
YW5uZWxzIik7Ci1ERUZJTkVfaW50KG91dHB1dF9zYW1wbGVfcmF0ZV9oeiwKLSAgICAgICAgICAg
a1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiRm9yd2FyZCBzdHJlYW0g
b3V0cHV0IHNhbXBsZSByYXRlIGluIEh6Iik7Ci1ERUZJTkVfaW50KHJldmVyc2Vfb3V0cHV0X3Nh
bXBsZV9yYXRlX2h6LAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0g
ICAgICAgICAgICJSZXZlcnNlIHN0cmVhbSBvdXRwdXQgc2FtcGxlIHJhdGUgaW4gSHoiKTsKLURF
RklORV9ib29sKGZpeGVkX2ludGVyZmFjZSwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAg
ICAgIlVzZSB0aGUgZml4ZWQgaW50ZXJmYWNlIHdoZW4gb3BlcmF0aW5nIG9uIHdhdiBmaWxlcyIp
OwotREVGSU5FX2ludChhZWMsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1
ZSwKLSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBlY2hvIGNh
bmNlbGxlciIpOwotREVGSU5FX2ludChhZWNtLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3Bl
Y2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0
aGUgbW9iaWxlIGVjaG8gY29udHJvbGxlciIpOwotREVGSU5FX2ludChlZCwKLSAgICAgICAgICAg
a1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9y
IGRlYWN0aXZhdGUgKDApIHRoZSByZXNpZHVhbCBlY2hvIGRldGVjdG9yIik7Ci1ERUZJTkVfc3Ry
aW5nKGVkX2dyYXBoLCAiIiwgIk91dHB1dCBmaWxlbmFtZSBmb3IgZ3JhcGggb2YgZWNobyBsaWtl
bGlob29kIik7Ci1ERUZJTkVfaW50KGFnYywKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNp
ZmllZFZhbHVlLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhl
IEFHQyIpOwotREVGSU5FX2ludChhZ2MyLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lm
aWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUg
QUdDMiIpOwotREVGSU5FX2ludChwcmVfYW1wbGlmaWVyLAotICAgICAgICAgICBrUGFyYW1ldGVy
Tm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0
ZSgwKSB0aGUgcHJlIGFtcGxpZmllciIpOwotREVGSU5FX2ludChocGYsCi0gICAgICAgICAgIGtQ
YXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBk
ZWFjdGl2YXRlKDApIHRoZSBoaWdoLXBhc3MgZmlsdGVyIik7Ci1ERUZJTkVfaW50KG5zLAotICAg
ICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0
ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgbm9pc2Ugc3VwcHJlc3NvciIpOwotREVGSU5FX2lu
dCh0cywKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAg
ICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIHRyYW5zaWVudCBzdXBwcmVzc29y
Iik7Ci1ERUZJTkVfaW50KHZhZCwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZh
bHVlLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIHZvaWNl
IGFjdGl2aXR5IGRldGVjdG9yIik7Ci1ERUZJTkVfaW50KGxlLAotICAgICAgICAgICBrUGFyYW1l
dGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3Rp
dmF0ZSgwKSB0aGUgbGV2ZWwgZXN0aW1hdG9yIik7Ci1ERUZJTkVfYm9vbChhbGxfZGVmYXVsdCwK
LSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIkFjdGl2YXRlIGFsbCBvZiB0aGUgZGVm
YXVsdCBjb21wb25lbnRzICh3aWxsIGJlIG92ZXJyaWRkZW4gYnkgYW55ICIKLSAgICAgICAgICAg
ICJvdGhlciBzZXR0aW5ncykiKTsKLURFRklORV9pbnQoYWVjX3N1cHByZXNzaW9uX2xldmVsLAot
ICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJTZXQg
dGhlIGFlYyBzdXBwcmVzc2lvbiBsZXZlbCAoMC0yKSIpOwotREVGSU5FX2ludChkZWxheV9hZ25v
c3RpYywKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAg
ICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIEFFQyBkZWxheSBhZ25vc3RpYyBt
b2RlIik7Ci1ERUZJTkVfaW50KGV4dGVuZGVkX2ZpbHRlciwKLSAgICAgICAgICAga1BhcmFtZXRl
ck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZh
dGUoMCkgdGhlIEFFQyBleHRlbmRlZCBmaWx0ZXIgbW9kZSIpOwotREVGSU5FX2ludChhZWMzLAot
ICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3Rp
dmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgZXhwZXJpbWVudGFsIEFFQyBtb2RlIEFFQzMi
KTsKLURFRklORV9pbnQoZXhwZXJpbWVudGFsX2FnYywKLSAgICAgICAgICAga1BhcmFtZXRlck5v
dFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUo
MCkgdGhlIGV4cGVyaW1lbnRhbCBBR0MiKTsKLURFRklORV9pbnQoZXhwZXJpbWVudGFsX2FnY19k
aXNhYmxlX2RpZ2l0YWxfYWRhcHRpdmUsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZp
ZWRWYWx1ZSwKLSAgICAgICAgICAgIkZvcmNlLWRlYWN0aXZhdGUgKDEpIGRpZ2l0YWwgYWRhcHRh
dGlvbiBpbiAiCi0gICAgICAgICAgICJleHBlcmltZW50YWwgQUdDLiBEaWdpdGFsIGFkYXB0YXRp
b24gaXMgYWN0aXZlIGJ5IGRlZmF1bHQgKDApLiIpOwotREVGSU5FX2ludChleHBlcmltZW50YWxf
YWdjX2FuYWx5emVfYmVmb3JlX2FlYywKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmll
ZFZhbHVlLAotICAgICAgICAgICAiTWFrZSBsZXZlbCBlc3RpbWF0aW9uIGhhcHBlbiBiZWZvcmUg
QUVDIgotICAgICAgICAgICAiIGluIHRoZSBleHBlcmltZW50YWwgQUdDLiBBZnRlciBBRUMgaXMg
dGhlIGRlZmF1bHQgKDApIik7Ci1ERUZJTkVfaW50KAorV0VCUlRDX0RFRklORV9zdHJpbmcoZHVt
cF9pbnB1dCwgIiIsICJBZWMgZHVtcCBpbnB1dCBmaWxlbmFtZSIpOworV0VCUlRDX0RFRklORV9z
dHJpbmcoZHVtcF9vdXRwdXQsICIiLCAiQWVjIGR1bXAgb3V0cHV0IGZpbGVuYW1lIik7CitXRUJS
VENfREVGSU5FX3N0cmluZyhpLCAiIiwgIkZvcndhcmQgc3RyZWFtIGlucHV0IHdhdiBmaWxlbmFt
ZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcobywgIiIsICJGb3J3YXJkIHN0cmVhbSBvdXRwdXQg
d2F2IGZpbGVuYW1lIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhyaSwgIiIsICJSZXZlcnNlIHN0
cmVhbSBpbnB1dCB3YXYgZmlsZW5hbWUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHJvLCAiIiwg
IlJldmVyc2Ugc3RyZWFtIG91dHB1dCB3YXYgZmlsZW5hbWUiKTsKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKGFydGlmaWNpYWxfbmVhcmVuZCwgIiIsICJBcnRpZmljaWFsIG5lYXJlbmQgd2F2IGZpbGVu
YW1lIik7CitXRUJSVENfREVGSU5FX2ludChvdXRwdXRfbnVtX2NoYW5uZWxzLAorICAgICAgICAg
ICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAg
Ik51bWJlciBvZiBmb3J3YXJkIHN0cmVhbSBvdXRwdXQgY2hhbm5lbHMiKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KHJldmVyc2Vfb3V0cHV0X251bV9jaGFubmVscywKKyAgICAgICAgICAgICAgICAgIGtQ
YXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJOdW1iZXIgb2Yg
UmV2ZXJzZSBzdHJlYW0gb3V0cHV0IGNoYW5uZWxzIik7CitXRUJSVENfREVGSU5FX2ludChvdXRw
dXRfc2FtcGxlX3JhdGVfaHosCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lm
aWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiRm9yd2FyZCBzdHJlYW0gb3V0cHV0IHNhbXBs
ZSByYXRlIGluIEh6Iik7CitXRUJSVENfREVGSU5FX2ludChyZXZlcnNlX291dHB1dF9zYW1wbGVf
cmF0ZV9oeiwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwK
KyAgICAgICAgICAgICAgICAgICJSZXZlcnNlIHN0cmVhbSBvdXRwdXQgc2FtcGxlIHJhdGUgaW4g
SHoiKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChmaXhlZF9pbnRlcmZhY2UsCisgICAgICAgICAgICAg
ICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlVzZSB0aGUgZml4ZWQgaW50ZXJmYWNl
IHdoZW4gb3BlcmF0aW5nIG9uIHdhdiBmaWxlcyIpOworV0VCUlRDX0RFRklORV9pbnQoYWVjLAor
ICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAg
ICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBlY2hvIGNhbmNlbGxl
ciIpOworV0VCUlRDX0RFRklORV9pbnQoYWVjbSwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0
ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3Ig
ZGVhY3RpdmF0ZSgwKSB0aGUgbW9iaWxlIGVjaG8gY29udHJvbGxlciIpOworV0VCUlRDX0RFRklO
RV9pbnQoZWQsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUs
CisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUgKDApIHRoZSBy
ZXNpZHVhbCBlY2hvIGRldGVjdG9yIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhlZF9ncmFwaCwK
KyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIk91dHB1dCBm
aWxlbmFtZSBmb3IgZ3JhcGggb2YgZWNobyBsaWtlbGlob29kIik7CitXRUJSVENfREVGSU5FX2lu
dChhZ2MsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisg
ICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIEFHQyIp
OworV0VCUlRDX0RFRklORV9pbnQoYWdjMiwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJO
b3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVh
Y3RpdmF0ZSgwKSB0aGUgQUdDMiIpOworV0VCUlRDX0RFRklORV9pbnQocHJlX2FtcGxpZmllciwK
KyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgcHJlIGFtcGxpZmll
ciIpOworV0VCUlRDX0RFRklORV9pbnQoaHBmLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRl
ck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBk
ZWFjdGl2YXRlKDApIHRoZSBoaWdoLXBhc3MgZmlsdGVyIik7CitXRUJSVENfREVGSU5FX2ludChu
cywKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAg
ICAgICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgbm9pc2Ugc3Vw
cHJlc3NvciIpOworV0VCUlRDX0RFRklORV9pbnQodHMsCisgICAgICAgICAgICAgICAgICBrUGFy
YW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEp
IG9yIGRlYWN0aXZhdGUoMCkgdGhlIHRyYW5zaWVudCBzdXBwcmVzc29yIik7CitXRUJSVENfREVG
SU5FX2ludCh2YWQsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFs
dWUsCisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhl
IHZvaWNlIGFjdGl2aXR5IGRldGVjdG9yIik7CitXRUJSVENfREVGSU5FX2ludChsZSwKKyAgICAg
ICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgbGV2ZWwgZXN0aW1hdG9yIik7
CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgYWxsX2RlZmF1bHQsCisgICAgZmFsc2UsCisgICAg
IkFjdGl2YXRlIGFsbCBvZiB0aGUgZGVmYXVsdCBjb21wb25lbnRzICh3aWxsIGJlIG92ZXJyaWRk
ZW4gYnkgYW55ICIKKyAgICAib3RoZXIgc2V0dGluZ3MpIik7CitXRUJSVENfREVGSU5FX2ludChh
ZWNfc3VwcHJlc3Npb25fbGV2ZWwsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3Bl
Y2lmaWVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAiU2V0IHRoZSBhZWMgc3VwcHJlc3Npb24g
bGV2ZWwgKDAtMikiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGRlbGF5X2Fnbm9zdGljLAorICAgICAg
ICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAg
ICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBBRUMgZGVsYXkgYWdub3N0aWMg
bW9kZSIpOworV0VCUlRDX0RFRklORV9pbnQoZXh0ZW5kZWRfZmlsdGVyLAorICAgICAgICAgICAg
ICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIkFj
dGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBBRUMgZXh0ZW5kZWQgZmlsdGVyIG1vZGUi
KTsKK1dFQlJUQ19ERUZJTkVfaW50KAorICAgIGFlYzMsCisgICAga1BhcmFtZXRlck5vdFNwZWNp
ZmllZFZhbHVlLAorICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgZXhwZXJp
bWVudGFsIEFFQyBtb2RlIEFFQzMiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGV4cGVyaW1lbnRhbF9h
Z2MsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAg
ICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIGV4cGVyaW1l
bnRhbCBBR0MiKTsKK1dFQlJUQ19ERUZJTkVfaW50KAorICAgIGV4cGVyaW1lbnRhbF9hZ2NfZGlz
YWJsZV9kaWdpdGFsX2FkYXB0aXZlLAorICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwK
KyAgICAiRm9yY2UtZGVhY3RpdmF0ZSAoMSkgZGlnaXRhbCBhZGFwdGF0aW9uIGluICIKKyAgICAi
ZXhwZXJpbWVudGFsIEFHQy4gRGlnaXRhbCBhZGFwdGF0aW9uIGlzIGFjdGl2ZSBieSBkZWZhdWx0
ICgwKS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGV4cGVyaW1lbnRhbF9hZ2NfYW5hbHl6ZV9iZWZv
cmVfYWVjLAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAor
ICAgICAgICAgICAgICAgICAgIk1ha2UgbGV2ZWwgZXN0aW1hdGlvbiBoYXBwZW4gYmVmb3JlIEFF
QyIKKyAgICAgICAgICAgICAgICAgICIgaW4gdGhlIGV4cGVyaW1lbnRhbCBBR0MuIEFmdGVyIEFF
QyBpcyB0aGUgZGVmYXVsdCAoMCkiKTsKK1dFQlJUQ19ERUZJTkVfaW50KAogICAgIGV4cGVyaW1l
bnRhbF9hZ2NfYWdjMl9sZXZlbF9lc3RpbWF0b3IsCiAgICAga1BhcmFtZXRlck5vdFNwZWNpZmll
ZFZhbHVlLAogICAgICJBR0MyIGxldmVsIGVzdGltYXRpb24iCiAgICAgIiBpbiB0aGUgZXhwZXJp
bWVudGFsIEFHQy4gQUdDMSBsZXZlbCBlc3RpbWF0aW9uIGlzIHRoZSBkZWZhdWx0ICgwKSIpOwot
REVGSU5FX2ludCgKK1dFQlJUQ19ERUZJTkVfaW50KAogICAgIHJlZmluZWRfYWRhcHRpdmVfZmls
dGVyLAogICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKICAgICAiQWN0aXZhdGUgKDEp
IG9yIGRlYWN0aXZhdGUoMCkgdGhlIHJlZmluZWQgYWRhcHRpdmUgZmlsdGVyIGZ1bmN0aW9uYWxp
dHkiKTsKLURFRklORV9pbnQoYWdjX21vZGUsIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwg
IlNwZWNpZnkgdGhlIEFHQyBtb2RlICgwLTIpIik7Ci1ERUZJTkVfaW50KGFnY190YXJnZXRfbGV2
ZWwsCi0gICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAg
IlNwZWNpZnkgdGhlIEFHQyB0YXJnZXQgbGV2ZWwgKDAtMzEpIik7Ci1ERUZJTkVfaW50KGFnY19s
aW1pdGVyLAotICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAg
ICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgbGV2ZWwgZXN0aW1hdG9yIik7
Ci1ERUZJTkVfaW50KGFnY19jb21wcmVzc2lvbl9nYWluLAotICAgICAgICAgICBrUGFyYW1ldGVy
Tm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJTcGVjaWZ5IHRoZSBBR0MgY29tcHJlc3Np
b24gZ2FpbiAoMC05MCkiKTsKLURFRklORV9mbG9hdChhZ2MyX2VuYWJsZV9hZGFwdGl2ZV9nYWlu
LAotICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAg
ICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIEFHQzIgYWRhcHRpdmUgZ2FpbiIp
OwotREVGSU5FX2Zsb2F0KGFnYzJfZml4ZWRfZ2Fpbl9kYiwgMC5mLCAiQUdDMiBmaXhlZCBnYWlu
IChkQikgdG8gYXBwbHkiKTsKLURFRklORV9mbG9hdChwcmVfYW1wbGlmaWVyX2dhaW5fZmFjdG9y
LAotICAgICAgICAgICAgIDEuZiwKLSAgICAgICAgICAgICAiUHJlLWFtcGxpZmllciBnYWluIGZh
Y3RvciAobGluZWFyKSB0byBhcHBseSIpOwotREVGSU5FX2ludCh2YWRfbGlrZWxpaG9vZCwKLSAg
ICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAgICAgICAgICAiU3BlY2lm
eSB0aGUgVkFEIGxpa2VsaWhvb2QgKDAtMykiKTsKLURFRklORV9pbnQobnNfbGV2ZWwsIGtQYXJh
bWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwgIlNwZWNpZnkgdGhlIE5TIGxldmVsICgwLTMpIik7Ci1E
RUZJTkVfaW50KHN0cmVhbV9kZWxheSwKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmll
ZFZhbHVlLAotICAgICAgICAgICAiU3BlY2lmeSB0aGUgc3RyZWFtIGRlbGF5IGluIG1zIHRvIHVz
ZSIpOwotREVGSU5FX2ludCh1c2Vfc3RyZWFtX2RlbGF5LAotICAgICAgICAgICBrUGFyYW1ldGVy
Tm90U3BlY2lmaWVkVmFsdWUsCi0gICAgICAgICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0
ZSgwKSByZXBvcnRpbmcgdGhlIHN0cmVhbSBkZWxheSIpOwotREVGSU5FX2ludChzdHJlYW1fZHJp
ZnRfc2FtcGxlcywKLSAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAotICAg
ICAgICAgICAiU3BlY2lmeSB0aGUgbnVtYmVyIG9mIHN0cmVhbSBkcmlmdCBzYW1wbGVzIHRvIHVz
ZSIpOwotREVGSU5FX2ludChpbml0aWFsX21pY19sZXZlbCwgMTAwLCAiSW5pdGlhbCBtaWMgbGV2
ZWwgKDAtMjU1KSIpOwotREVGSU5FX2ludChzaW11bGF0ZV9taWNfZ2FpbiwKLSAgICAgICAgICAg
MCwKLSAgICAgICAgICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBhbmFsb2cg
bWljIGdhaW4gc2ltdWxhdGlvbiIpOwotREVGSU5FX2ludChzaW11bGF0ZWRfbWljX2tpbmQsCi0g
ICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKLSAgICAgICAgICAgIlNwZWNp
Znkgd2hpY2ggbWljcm9waG9uZSBraW5kIHRvIHVzZSBmb3IgbWljcm9waG9uZSBzaW11bGF0aW9u
Iik7Ci1ERUZJTkVfYm9vbChwZXJmb3JtYW5jZV9yZXBvcnQsIGZhbHNlLCAiUmVwb3J0IHRoZSBB
UE0gcGVyZm9ybWFuY2UgIik7Ci1ERUZJTkVfYm9vbCh2ZXJib3NlLCBmYWxzZSwgIlByb2R1Y2Ug
dmVyYm9zZSBvdXRwdXQiKTsKLURFRklORV9ib29sKHF1aWV0LCBmYWxzZSwgIkF2b2lkIHByb2R1
Y2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvZ3Jlc3MuIik7Ci1ERUZJTkVfYm9vbChiaXRl
eGFjdG5lc3NfcmVwb3J0LAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUmVwb3J0
IGJpdGV4YWN0bmVzcyBmb3IgYWVjIGR1bXAgcmVzdWx0IHJlcHJvZHVjdGlvbiIpOwotREVGSU5F
X2Jvb2woZGlzY2FyZF9zZXR0aW5nc19pbl9hZWNkdW1wLAotICAgICAgICAgICAgZmFsc2UsCi0g
ICAgICAgICAgICAiRGlzY2FyZCBhbnkgY29uZmlnIHNldHRpbmdzIHNwZWNpZmllZCBpbiB0aGUg
YWVjIGR1bXAiKTsKLURFRklORV9ib29sKHN0b3JlX2ludGVybWVkaWF0ZV9vdXRwdXQsCi0gICAg
ICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJDcmVhdGVzIG5ldyBvdXRwdXQgZmlsZXMgYWZ0
ZXIgZWFjaCBpbml0Iik7Ci1ERUZJTkVfc3RyaW5nKGN1c3RvbV9jYWxsX29yZGVyX2ZpbGUsICIi
LCAiQ3VzdG9tIHByb2Nlc3MgQVBJIGNhbGwgb3JkZXIgZmlsZSIpOwotREVGSU5FX2Jvb2wocHJp
bnRfYWVjM19wYXJhbWV0ZXJfdmFsdWVzLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAg
ICAiUHJpbnQgcGFyYW1ldGVyIHZhbHVlcyB1c2VkIGluIEFFQzMgaW4gSlNPTi1mb3JtYXQiKTsK
LURFRklORV9zdHJpbmcoYWVjM19zZXR0aW5ncywKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAg
ICAgICAgICJGaWxlIGluIEpTT04tZm9ybWF0IHdpdGggY3VzdG9tIEFFQzMgc2V0dGluZ3MiKTsK
LURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlIik7CitXRUJSVENf
REVGSU5FX2ludChhZ2NfbW9kZSwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVj
aWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJTcGVjaWZ5IHRoZSBBR0MgbW9kZSAoMC0y
KSIpOworV0VCUlRDX0RFRklORV9pbnQoYWdjX3RhcmdldF9sZXZlbCwKKyAgICAgICAgICAgICAg
ICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICJTcGVj
aWZ5IHRoZSBBR0MgdGFyZ2V0IGxldmVsICgwLTMxKSIpOworV0VCUlRDX0RFRklORV9pbnQoYWdj
X2xpbWl0ZXIsCisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUs
CisgICAgICAgICAgICAgICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgdGhlIGxl
dmVsIGVzdGltYXRvciIpOworV0VCUlRDX0RFRklORV9pbnQoYWdjX2NvbXByZXNzaW9uX2dhaW4s
CisgICAgICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAg
ICAgICAgICAgICAiU3BlY2lmeSB0aGUgQUdDIGNvbXByZXNzaW9uIGdhaW4gKDAtOTApIik7CitX
RUJSVENfREVGSU5FX2Zsb2F0KGFnYzJfZW5hYmxlX2FkYXB0aXZlX2dhaW4sCisgICAgICAgICAg
ICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgIkFjdGl2YXRlICgxKSBvciBkZWFjdGl2YXRlKDApIHRoZSBBR0MyIGFkYXB0aXZlIGdhaW4i
KTsKK1dFQlJUQ19ERUZJTkVfZmxvYXQoYWdjMl9maXhlZF9nYWluX2RiLCAwLmYsICJBR0MyIGZp
eGVkIGdhaW4gKGRCKSB0byBhcHBseSIpOworCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0
QWdjMkFkYXB0aXZlTGV2ZWxFc3RpbWF0b3JOYW1lcygpIHsKKyAgcmV0dXJuIHsiUk1TIiwgInBl
YWsifTsKK30KK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIGFnYzJfYWRhcHRpdmVfbGV2ZWxf
ZXN0aW1hdG9yLAorICAgICJSTVMiLAorICAgICJBR0MyIGFkYXB0aXZlIGRpZ2l0YWwgbGV2ZWwg
ZXN0aW1hdG9yIHRvIHVzZSBbUk1TLCBwZWFrXSIpOworCitXRUJSVENfREVGSU5FX2Zsb2F0KHBy
ZV9hbXBsaWZpZXJfZ2Fpbl9mYWN0b3IsCisgICAgICAgICAgICAgICAgICAgIDEuZiwKKyAgICAg
ICAgICAgICAgICAgICAgIlByZS1hbXBsaWZpZXIgZ2FpbiBmYWN0b3IgKGxpbmVhcikgdG8gYXBw
bHkiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZhZF9saWtlbGlob29kLAorICAgICAgICAgICAgICAg
ICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIlNwZWNp
ZnkgdGhlIFZBRCBsaWtlbGlob29kICgwLTMpIik7CitXRUJSVENfREVGSU5FX2ludChuc19sZXZl
bCwKKyAgICAgICAgICAgICAgICAgIGtQYXJhbWV0ZXJOb3RTcGVjaWZpZWRWYWx1ZSwKKyAgICAg
ICAgICAgICAgICAgICJTcGVjaWZ5IHRoZSBOUyBsZXZlbCAoMC0zKSIpOworV0VCUlRDX0RFRklO
RV9pbnQoc3RyZWFtX2RlbGF5LAorICAgICAgICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNp
ZmllZFZhbHVlLAorICAgICAgICAgICAgICAgICAgIlNwZWNpZnkgdGhlIHN0cmVhbSBkZWxheSBp
biBtcyB0byB1c2UiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHVzZV9zdHJlYW1fZGVsYXksCisgICAg
ICAgICAgICAgICAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgICAgICAgICAg
ICAgICAiQWN0aXZhdGUgKDEpIG9yIGRlYWN0aXZhdGUoMCkgcmVwb3J0aW5nIHRoZSBzdHJlYW0g
ZGVsYXkiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHN0cmVhbV9kcmlmdF9zYW1wbGVzLAorICAgICAg
ICAgICAgICAgICAga1BhcmFtZXRlck5vdFNwZWNpZmllZFZhbHVlLAorICAgICAgICAgICAgICAg
ICAgIlNwZWNpZnkgdGhlIG51bWJlciBvZiBzdHJlYW0gZHJpZnQgc2FtcGxlcyB0byB1c2UiKTsK
K1dFQlJUQ19ERUZJTkVfaW50KGluaXRpYWxfbWljX2xldmVsLCAxMDAsICJJbml0aWFsIG1pYyBs
ZXZlbCAoMC0yNTUpIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICBzaW11bGF0ZV9taWNfZ2Fp
biwKKyAgICAwLAorICAgICJBY3RpdmF0ZSAoMSkgb3IgZGVhY3RpdmF0ZSgwKSB0aGUgYW5hbG9n
IG1pYyBnYWluIHNpbXVsYXRpb24iKTsKK1dFQlJUQ19ERUZJTkVfaW50KAorICAgIHNpbXVsYXRl
ZF9taWNfa2luZCwKKyAgICBrUGFyYW1ldGVyTm90U3BlY2lmaWVkVmFsdWUsCisgICAgIlNwZWNp
Znkgd2hpY2ggbWljcm9waG9uZSBraW5kIHRvIHVzZSBmb3IgbWljcm9waG9uZSBzaW11bGF0aW9u
Iik7CitXRUJSVENfREVGSU5FX2Jvb2wocGVyZm9ybWFuY2VfcmVwb3J0LCBmYWxzZSwgIlJlcG9y
dCB0aGUgQVBNIHBlcmZvcm1hbmNlICIpOworV0VCUlRDX0RFRklORV9ib29sKHZlcmJvc2UsIGZh
bHNlLCAiUHJvZHVjZSB2ZXJib3NlIG91dHB1dCIpOworV0VCUlRDX0RFRklORV9ib29sKHF1aWV0
LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJBdm9pZCBw
cm9kdWNpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2dyZXNzLiIpOworV0VCUlRDX0RFRklO
RV9ib29sKGJpdGV4YWN0bmVzc19yZXBvcnQsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgIlJlcG9ydCBiaXRleGFjdG5lc3MgZm9yIGFlYyBkdW1wIHJlc3Vs
dCByZXByb2R1Y3Rpb24iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChkaXNjYXJkX3NldHRpbmdzX2lu
X2FlY2R1bXAsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAg
IkRpc2NhcmQgYW55IGNvbmZpZyBzZXR0aW5ncyBzcGVjaWZpZWQgaW4gdGhlIGFlYyBkdW1wIik7
CitXRUJSVENfREVGSU5FX2Jvb2woc3RvcmVfaW50ZXJtZWRpYXRlX291dHB1dCwKKyAgICAgICAg
ICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiQ3JlYXRlcyBuZXcgb3V0cHV0
IGZpbGVzIGFmdGVyIGVhY2ggaW5pdCIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoY3VzdG9tX2Nh
bGxfb3JkZXJfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAg
ICAgICAgIkN1c3RvbSBwcm9jZXNzIEFQSSBjYWxsIG9yZGVyIGZpbGUiKTsKK1dFQlJUQ19ERUZJ
TkVfYm9vbChwcmludF9hZWMzX3BhcmFtZXRlcl92YWx1ZXMsCisgICAgICAgICAgICAgICAgICAg
ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlByaW50IHBhcmFtZXRlciB2YWx1ZXMgdXNlZCBp
biBBRUMzIGluIEpTT04tZm9ybWF0Iik7CitXRUJSVENfREVGSU5FX3N0cmluZyhhZWMzX3NldHRp
bmdzLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiRmls
ZSBpbiBKU09OLWZvcm1hdCB3aXRoIGN1c3RvbSBBRUMzIHNldHRpbmdzIik7CitXRUJSVENfREVG
SU5FX2Jvb2woZHVtcF9kYXRhLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAg
ICAgICAgICAgICJEdW1wIGludGVybmFsIGRhdGEgZHVyaW5nIHRoZSBjYWxsIChyZXF1aXJlcyBi
dWlsZCBmbGFnKSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoZHVtcF9kYXRhX291dHB1dF9kaXIs
CisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJJbnRlcm5h
bCBkYXRhIGR1bXAgb3V0cHV0IGRpcmVjdG9yeSIpOworV0VCUlRDX0RFRklORV9ib29sKGhlbHAs
IGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlIik7CiAKIHZvaWQgU2V0U2V0dGluZ0lmU3BlY2lm
aWVkKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiogcGFyYW1ldGVyKSB7CkBAIC0yMDgsNiArMjQy
LDI3IEBAIHZvaWQgU2V0U2V0dGluZ0lmRmxhZ1NldChpbnQzMl90IGZsYWcsIGFic2w6Om9wdGlv
bmFsPGJvb2w+KiBwYXJhbWV0ZXIpIHsKICAgfQogfQogCitBdWRpb1Byb2Nlc3Npbmc6OkNvbmZp
Zzo6R2FpbkNvbnRyb2xsZXIyOjpMZXZlbEVzdGltYXRvcgorTWFwQWdjMkFkYXB0aXZlTGV2ZWxF
c3RpbWF0b3IoYWJzbDo6c3RyaW5nX3ZpZXcgbmFtZSkgeworICBpZiAobmFtZS5jb21wYXJlKCJS
TVMiKSA9PSAwKSB7CisgICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWluQ29u
dHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yOjprUm1zOworICB9CisgIGlmIChuYW1lLmNvbXBhcmUo
InBlYWsiKSA9PSAwKSB7CisgICAgcmV0dXJuIEF1ZGlvUHJvY2Vzc2luZzo6Q29uZmlnOjpHYWlu
Q29udHJvbGxlcjI6OkxldmVsRXN0aW1hdG9yOjprUGVhazsKKyAgfQorICBhdXRvIGNvbmNhdF9z
dHJpbmdzID0KKyAgICAgIFtdKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgc3RyaW5n
cykgLT4gc3RkOjpzdHJpbmcgeworICAgIHJ0Yzo6U3RyaW5nQnVpbGRlciBzczsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIHMgOiBzdHJpbmdzKSB7CisgICAgICBzcyA8PCAiICIgPDwgczsKKyAgICB9
CisgICAgcmV0dXJuIHNzLlJlbGVhc2UoKTsKKyAgfTsKKyAgUlRDX0NIRUNLKGZhbHNlKQorICAg
ICAgPDwgIkludmFsaWQgdmFsdWUgZm9yIGFnYzJfYWRhcHRpdmVfbGV2ZWxfZXN0aW1hdG9yLCB2
YWxpZCBvcHRpb25zOiIKKyAgICAgIDw8IGNvbmNhdF9zdHJpbmdzKEdldEFnYzJBZGFwdGl2ZUxl
dmVsRXN0aW1hdG9yTmFtZXMoKSkgPDwgIi4iOworfQorCiBTaW11bGF0aW9uU2V0dGluZ3MgQ3Jl
YXRlU2V0dGluZ3MoKSB7CiAgIFNpbXVsYXRpb25TZXR0aW5ncyBzZXR0aW5nczsKICAgaWYgKEZM
QUdfYWxsX2RlZmF1bHQpIHsKQEAgLTI3NSw2ICszMzAsOCBAQCBTaW11bGF0aW9uU2V0dGluZ3Mg
Q3JlYXRlU2V0dGluZ3MoKSB7CiAgIFNldFNldHRpbmdJZkZsYWdTZXQoRkxBR19hZ2MyX2VuYWJs
ZV9hZGFwdGl2ZV9nYWluLAogICAgICAgICAgICAgICAgICAgICAgICZzZXR0aW5ncy5hZ2MyX3Vz
ZV9hZGFwdGl2ZV9nYWluKTsKICAgc2V0dGluZ3MuYWdjMl9maXhlZF9nYWluX2RiID0gRkxBR19h
Z2MyX2ZpeGVkX2dhaW5fZGI7CisgIHNldHRpbmdzLmFnYzJfYWRhcHRpdmVfbGV2ZWxfZXN0aW1h
dG9yID0KKyAgICAgIE1hcEFnYzJBZGFwdGl2ZUxldmVsRXN0aW1hdG9yKEZMQUdfYWdjMl9hZGFw
dGl2ZV9sZXZlbF9lc3RpbWF0b3IpOwogICBzZXR0aW5ncy5wcmVfYW1wbGlmaWVyX2dhaW5fZmFj
dG9yID0gRkxBR19wcmVfYW1wbGlmaWVyX2dhaW5fZmFjdG9yOwogICBTZXRTZXR0aW5nSWZTcGVj
aWZpZWQoRkxBR192YWRfbGlrZWxpaG9vZCwgJnNldHRpbmdzLnZhZF9saWtlbGlob29kKTsKICAg
U2V0U2V0dGluZ0lmU3BlY2lmaWVkKEZMQUdfbnNfbGV2ZWwsICZzZXR0aW5ncy5uc19sZXZlbCk7
CkBAIC0yOTYsNiArMzUzLDkgQEAgU2ltdWxhdGlvblNldHRpbmdzIENyZWF0ZVNldHRpbmdzKCkg
ewogICBzZXR0aW5ncy5maXhlZF9pbnRlcmZhY2UgPSBGTEFHX2ZpeGVkX2ludGVyZmFjZTsKICAg
c2V0dGluZ3Muc3RvcmVfaW50ZXJtZWRpYXRlX291dHB1dCA9IEZMQUdfc3RvcmVfaW50ZXJtZWRp
YXRlX291dHB1dDsKICAgc2V0dGluZ3MucHJpbnRfYWVjM19wYXJhbWV0ZXJfdmFsdWVzID0gRkxB
R19wcmludF9hZWMzX3BhcmFtZXRlcl92YWx1ZXM7CisgIHNldHRpbmdzLmR1bXBfaW50ZXJuYWxf
ZGF0YSA9IEZMQUdfZHVtcF9kYXRhOworICBTZXRTZXR0aW5nSWZTcGVjaWZpZWQoRkxBR19kdW1w
X2RhdGFfb3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICZzZXR0aW5ncy5kdW1w
X2ludGVybmFsX2RhdGFfb3V0cHV0X2Rpcik7CiAKICAgcmV0dXJuIHNldHRpbmdzOwogfQpAQCAt
NDQ2LDYgKzUwNiwxNSBAQCB2b2lkIFBlcmZvcm1CYXNpY1BhcmFtZXRlclNhbml0eUNoZWNrcyhj
b25zdCBTaW11bGF0aW9uU2V0dGluZ3MmIHNldHRpbmdzKSB7CiAgICAgICBzZXR0aW5ncy5hcnRp
ZmljaWFsX25lYXJlbmRfZmlsZW5hbWUgJiYKICAgICAgICAgICAhdmFsaWRfd2F2X25hbWUoKnNl
dHRpbmdzLmFydGlmaWNpYWxfbmVhcmVuZF9maWxlbmFtZSksCiAgICAgICAiRXJyb3I6IC0tYXJ0
aWZpY2FsX25lYXJlbmQgbXVzdCBiZSBhIHZhbGlkIC53YXYgZmlsZSBuYW1lLlxuIik7CisKKyAg
UmVwb3J0Q29uZGl0aW9uYWxFcnJvckFuZEV4aXQoCisgICAgICBXRUJSVENfQVBNX0RFQlVHX0RV
TVAgPT0gMCAmJiBzZXR0aW5ncy5kdW1wX2ludGVybmFsX2RhdGEsCisgICAgICAiRXJyb3I6IC0t
ZHVtcF9kYXRhIGNhbm5vdCBiZSBzZXQgd2l0aG91dCBwcm9wZXIgYnVpbGQgc3VwcG9ydC5cbiIp
OworCisgIFJlcG9ydENvbmRpdGlvbmFsRXJyb3JBbmRFeGl0KAorICAgICAgIXNldHRpbmdzLmR1
bXBfaW50ZXJuYWxfZGF0YSAmJgorICAgICAgICAgIHNldHRpbmdzLmR1bXBfaW50ZXJuYWxfZGF0
YV9vdXRwdXRfZGlyLmhhc192YWx1ZSgpLAorICAgICAgIkVycm9yOiAtLWR1bXBfZGF0YV9vdXRw
dXRfZGlyIGNhbm5vdCBiZSBzZXQgd2l0aG91dCAtLWR1bXBfZGF0YS5cbiIpOwogfQogCiB9ICAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3Nw
ZWVjaC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9CVUlM
RC5nbgppbmRleCA3MjFlYmM3ZWU1NjY5ZjU1MmExZWVjOTZiNDIxMWE4MjJhNjU4ZDc0Li41NTE3
ODFiOGJjOTBhNmJmYWQ1MzBhYTM4MTdlNThmOWE3OTRiOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rl
c3QvY29udmVyc2F0aW9uYWxfc3BlZWNoL0JVSUxELmduCkBAIC01MSw2ICs1MSw3IEBAIHJ0Y19z
dGF0aWNfbGlicmFyeSgibGliIikgewogICAgICIuLi8uLi8uLi8uLi9jb21tb25fYXVkaW8iLAog
ICAgICIuLi8uLi8uLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8uLi8uLi8uLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uLy4uLy4uL3Rlc3Q6ZmlsZXV0aWxz
IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQogICB2
aXNpYmlsaXR5ID0gWyAiOioiIF0gICMgT25seSB0YXJnZXRzIGluIHRoaXMgZmlsZSBjYW4gZGVw
ZW5kIG9uIHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9z
cGVlY2gvZ2VuZXJhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVyc2F0aW9uYWxfc3BlZWNo
L2dlbmVyYXRvci5jYwppbmRleCA3NDFhMWNhODZiYTIxMGJmNTgyOTBjODI4MDVhMTc1ZDJhYjkz
MmU1Li5mYTU2MWNmOGUwNTUxNmE4YzBmYWNjYmVjNTc3OGJhY2I0YjdhNTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvZ2VuZXJhdG9yLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9nZW5lcmF0b3IuY2MKQEAgLTMy
LDEwICszMiwxMCBAQCBjb25zdCBjaGFyIGtVc2FnZURlc2NyaXB0aW9uW10gPQogICAgICJDb21t
YW5kLWxpbmUgdG9vbCB0byBnZW5lcmF0ZSBtdWx0aXBsZS1lbmQgYXVkaW8gdHJhY2tzIHRvIHNp
bXVsYXRlICIKICAgICAiY29udmVyc2F0aW9uYWwgc3BlZWNoIHdpdGggdHdvIG9yIG1vcmUgcGFy
dGljaXBhbnRzLlxuIjsKIAotREVGSU5FX3N0cmluZyhpLCAiIiwgIkRpcmVjdG9yeSBjb250YWlu
aW5nIHRoZSBzcGVlY2ggdHVybiB3YXYgZmlsZXMiKTsKLURFRklORV9zdHJpbmcodCwgIiIsICJQ
YXRoIHRvIHRoZSB0aW1pbmcgdGV4dCBmaWxlIik7Ci1ERUZJTkVfc3RyaW5nKG8sICIiLCAiT3V0
cHV0IHdhdiBmaWxlcyBkZXN0aW5hdGlvbiBwYXRoIik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxz
ZSwgIlByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGksICIiLCAi
RGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHNwZWVjaCB0dXJuIHdhdiBmaWxlcyIpOworV0VCUlRD
X0RFRklORV9zdHJpbmcodCwgIiIsICJQYXRoIHRvIHRoZSB0aW1pbmcgdGV4dCBmaWxlIik7CitX
RUJSVENfREVGSU5FX3N0cmluZyhvLCAiIiwgIk91dHB1dCB3YXYgZmlsZXMgZGVzdGluYXRpb24g
cGF0aCIpOworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnRzIHRoaXMgbWVz
c2FnZSIpOwogCiB9ICAvLyBuYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3Qv
Y29udmVyc2F0aW9uYWxfc3BlZWNoL21vY2tfd2F2cmVhZGVyX2ZhY3RvcnkuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbW9ja193YXZyZWFkZXJfZmFjdG9yeS5jYwpp
bmRleCBlYjhlM2JlZDNjNTEwMTgxY2NjNDY5MzhhZDRiMzZjYWYxZjE3NGQ0Li5hNDVlM2JiZmE3
MmZiZWU1YzhhNjU5YjA2NWE2YThmOGYzMGQyOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVz
dC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbW9ja193YXZyZWFkZXJfZmFjdG9yeS5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvbW9ja193YXZyZWFkZXJfZmFjdG9y
eS5jYwpAQCAtMTIsNyArMTIsNiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL3Rlc3QvY29udmVyc2F0aW9uYWxfc3BlZWNoL21vY2tfd2F2cmVhZGVyLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3BhdGh1dGlscy5oIgog
I2luY2x1ZGUgInRlc3QvZ21vY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zOSw5ICsz
OCwxMCBAQCBNb2NrV2F2UmVhZGVyRmFjdG9yeTo6fk1vY2tXYXZSZWFkZXJGYWN0b3J5KCkgPSBk
ZWZhdWx0Owogc3RkOjp1bmlxdWVfcHRyPFdhdlJlYWRlckludGVyZmFjZT4gTW9ja1dhdlJlYWRl
ckZhY3Rvcnk6OkNyZWF0ZU1vY2soCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVwYXRoKSB7
CiAgIC8vIFNlYXJjaCB0aGUgcGFyYW1ldGVycyBjb3JyZXNwb25kaW5nIHRvIGZpbGVwYXRoLgot
ICBjb25zdCBydGM6OlBhdGhuYW1lIGF1ZGlvdHJhY2tfZmlsZV9wYXRoKGZpbGVwYXRoKTsKLSAg
Y29uc3QgYXV0byBpdCA9Ci0gICAgICBhdWRpb3RyYWNrX25hbWVzX3BhcmFtc18uZmluZChhdWRp
b3RyYWNrX2ZpbGVfcGF0aC5maWxlbmFtZSgpKTsKKyAgc2l6ZV90IGRlbGltaXRlciA9IGZpbGVw
YXRoLmZpbmRfbGFzdF9vZigiL1xcIik7ICAvLyBFaXRoZXIgd2luZG93cyBvciBwb3NpeAorICBz
dGQ6OnN0cmluZyBmaWxlbmFtZSA9CisgICAgICBmaWxlcGF0aC5zdWJzdHIoZGVsaW1pdGVyID09
IHN0ZDo6c3RyaW5nOjpucG9zID8gMCA6IGRlbGltaXRlciArIDEpOworICBjb25zdCBhdXRvIGl0
ID0gYXVkaW90cmFja19uYW1lc19wYXJhbXNfLmZpbmQoZmlsZW5hbWUpOwogCiAgIC8vIElmIG5v
dCBmb3VuZCwgdXNlIGRlZmF1bHQgcGFyYW1ldGVycy4KICAgaWYgKGl0ID09IGF1ZGlvdHJhY2tf
bmFtZXNfcGFyYW1zXy5lbmQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVy
c2F0aW9uYWxfc3BlZWNoL211bHRpZW5kX2NhbGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJz
YXRpb25hbF9zcGVlY2gvbXVsdGllbmRfY2FsbC5jYwppbmRleCBkNjMzZDkwZTljNDI2YTI3NjVm
NmFhZTIxOWM1YmM5MjA2NDY0OWM4Li40ZTJmNTRkMTUwOTU3OWQzZDUzZmExMTUyMmQ2YTRkYWMy
NzcxN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gv
bXVsdGllbmRfY2FsbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVl
Y2gvbXVsdGllbmRfY2FsbC5jYwpAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPGl0ZXJhdG9y
PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Bh
dGh1dGlscy5oIgorI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewpAQCAtNTAsMTMgKzUwLDEzIEBAIGJv
b2wgTXVsdGlFbmRDYWxsOjpDcmVhdGVBdWRpb1RyYWNrUmVhZGVycygpIHsKICAgICBpZiAoaXQg
IT0gYXVkaW90cmFja19yZWFkZXJzXy5lbmQoKSkKICAgICAgIGNvbnRpbnVlOwogCi0gICAgLy8g
SW5zdGFuY2UgUGF0aG5hbWUgdG8gcmV0cmlldmUgdGhlIGZ1bGwgcGF0aCB0byB0aGUgYXVkaW90
cmFjayBmaWxlLgotICAgIGNvbnN0IHJ0Yzo6UGF0aG5hbWUgYXVkaW90cmFja19maWxlX3BhdGgo
YXVkaW90cmFja3NfcGF0aF8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0dXJuLmF1ZGlvdHJhY2tfZmlsZV9uYW1lKTsKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBhdWRpb3RyYWNrX2ZpbGVfcGF0aCA9CisgICAgICAgIHRlc3Q6OkpvaW5GaWxlbmFtZShhdWRp
b3RyYWNrc19wYXRoXywgdHVybi5hdWRpb3RyYWNrX2ZpbGVfbmFtZSk7CiAKICAgICAvLyBNYXAg
dGhlIGF1ZGlvdHJhY2sgZmlsZSBuYW1lIHRvIGEgbmV3IGluc3RhbmNlIG9mIFdhdlJlYWRlcklu
dGVyZmFjZS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F2UmVhZGVySW50ZXJmYWNlPiB3YXZyZWFk
ZXIgPQotICAgICAgICB3YXZyZWFkZXJfYWJzdHJhY3RfZmFjdG9yeV8tPkNyZWF0ZShhdWRpb3Ry
YWNrX2ZpbGVfcGF0aC5wYXRobmFtZSgpKTsKKyAgICAgICAgd2F2cmVhZGVyX2Fic3RyYWN0X2Zh
Y3RvcnlfLT5DcmVhdGUoCisgICAgICAgICAgICB0ZXN0OjpKb2luRmlsZW5hbWUoYXVkaW90cmFj
a3NfcGF0aF8sIHR1cm4uYXVkaW90cmFja19maWxlX25hbWUpKTsKIAogICAgIGlmIChzYW1wbGVf
cmF0ZV9oel8gPT0gMCkgewogICAgICAgc2FtcGxlX3JhdGVfaHpfID0gd2F2cmVhZGVyLT5TYW1w
bGVSYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVl
Y2gvc2ltdWxhdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvY29udmVyc2F0aW9uYWxfc3BlZWNoL3Np
bXVsYXRvci5jYwppbmRleCBjMmZiNzgwOGUwOGU2MTAyNTcxNTU4ZmJhNjFmNTU3MmJjZmU5YzQ4
Li5jNDAwNDk5ZmQzNDEwMzAwNmM0ZDhhMjBlMDhhYTczZWYwOTQwNjg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvdGVzdC9jb252ZXJzYXRpb25hbF9zcGVlY2gvc2ltdWxhdG9yLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy90ZXN0L2NvbnZlcnNhdGlvbmFsX3NwZWVjaC9zaW11bGF0b3IuY2MKQEAgLTI1LDcg
KzI1LDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVf
Y29udmVyc2lvbnMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9wYXRodXRpbHMuaCIKKyNpbmNsdWRl
ICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5h
bWVzcGFjZSB0ZXN0IHsKQEAgLTQ2LDIxICs0NiwyMCBAQCBJbml0U3BlYWtlck91dHB1dEZpbGVQ
YXRocyhjb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4mIHNwZWFrZXJfbmFtZXMsCiAKICAgLy8g
QWRkIG5lYXItZW5kIGFuZCBmYXItZW5kIG91dHB1dCBwYXRocyBpbnRvIHRoZSBtYXAuCiAgIGZv
ciAoY29uc3QgYXV0byYgc3BlYWtlcl9uYW1lIDogc3BlYWtlcl9uYW1lcykgewotICAgIGNvbnN0
IHJ0Yzo6UGF0aG5hbWUgbmVhcl9lbmRfcGF0aChvdXRwdXRfcGF0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInNfIiArIHNwZWFrZXJfbmFtZSArICItbmVhcl9lbmQu
d2F2Iik7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgbmVhcl9lbmRfcGF0aCA9CisgICAgICAgIHRl
c3Q6OkpvaW5GaWxlbmFtZShvdXRwdXRfcGF0aCwgInNfIiArIHNwZWFrZXJfbmFtZSArICItbmVh
cl9lbmQud2F2Iik7CiAgICAgUlRDX0xPRyhMU19WRVJCT1NFKSA8PCAiVGhlIG5lYXItZW5kIGF1
ZGlvIHRyYWNrIHdpbGwgYmUgY3JlYXRlZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICA8
PCBuZWFyX2VuZF9wYXRoLnBhdGhuYW1lKCkgPDwgIi4iOworICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgbmVhcl9lbmRfcGF0aCA8PCAiLiI7CiAKLSAgICBjb25zdCBydGM6OlBhdGhuYW1lIGZh
cl9lbmRfcGF0aChvdXRwdXRfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAic18iICsgc3BlYWtlcl9uYW1lICsgIi1mYXJfZW5kLndhdiIpOworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIGZhcl9lbmRfcGF0aCA9CisgICAgICAgIHRlc3Q6OkpvaW5GaWxlbmFtZShvdXRw
dXRfcGF0aCwgInNfIiArIHNwZWFrZXJfbmFtZSArICItZmFyX2VuZC53YXYiKTsKICAgICBSVENf
TE9HKExTX1ZFUkJPU0UpIDw8ICJUaGUgZmFyLWVuZCBhdWRpbyB0cmFjayB3aWxsIGJlIGNyZWF0
ZWQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgPDwgZmFyX2VuZF9wYXRoLnBhdGhuYW1l
KCkgPDwgIi4iOworICAgICAgICAgICAgICAgICAgICAgICAgPDwgZmFyX2VuZF9wYXRoIDw8ICIu
IjsKIAogICAgIC8vIEFkZCB0byBtYXAuCiAgICAgc3BlYWtlcl9vdXRwdXRfZmlsZV9wYXRoc19t
YXAtPmVtcGxhY2UoCiAgICAgICAgIHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwgc3RkOjpmb3J3
YXJkX2FzX3R1cGxlKHNwZWFrZXJfbmFtZSksCi0gICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBs
ZShuZWFyX2VuZF9wYXRoLnBhdGhuYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmYXJfZW5kX3BhdGgucGF0aG5hbWUoKSkpOworICAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVw
bGUobmVhcl9lbmRfcGF0aCwgZmFyX2VuZF9wYXRoKSk7CiAgIH0KIAogICByZXR1cm4gc3BlYWtl
cl9vdXRwdXRfZmlsZV9wYXRoc19tYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9weV9x
dWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nlc3NtZW50L2FwbV92YWQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nlc3NtZW50L2FwbV92YWQu
Y2MKaW5kZXggYTYxODRiNWY5ZmRhMDExZmE3ZDY4YWU0YzdhN2VmNTI2NzE2NTE3ZS4uNGI2YWRh
MjdiNmE2ZjgyYzE3ZTg2ZjUwNzdmYzg4MTI4ZmY2YTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3Rlc3QvcHlfcXVhbGl0eV9hc3Nlc3NtZW50L3F1YWxpdHlfYXNzZXNzbWVudC9hcG1fdmFkLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vz
c21lbnQvYXBtX3ZhZC5jYwpAQCAtMjQsOSArMjQsOSBAQCBjb25zdGV4cHIgaW50IGtNYXhTYW1w
bGVSYXRlID0gNDgwMDA7CiBjb25zdGV4cHIgc2l6ZV90IGtNYXhGcmFtZUxlbiA9CiAgICAga0F1
ZGlvRnJhbWVMZW5ndGhNaWxsaXNlY29uZHMgKiBrTWF4U2FtcGxlUmF0ZSAvIDEwMDA7CiAKLURF
RklORV9zdHJpbmcoaSwgIiIsICJJbnB1dCB3YXYgZmlsZSIpOwotREVGSU5FX3N0cmluZyhvX3By
b2JzLCAiIiwgIlZBRCBwcm9iYWJpbGl0aWVzIG91dHB1dCBmaWxlIik7Ci1ERUZJTkVfc3RyaW5n
KG9fcm1zLCAiIiwgIlZBRCBvdXRwdXQgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoaSwg
IiIsICJJbnB1dCB3YXYgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob19wcm9icywgIiIs
ICJWQUQgcHJvYmFiaWxpdGllcyBvdXRwdXQgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmco
b19ybXMsICIiLCAiVkFEIG91dHB1dCBmaWxlIik7CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiBhcmd2W10pIHsKICAgaWYgKHJ0Yzo6RmxhZ0xpc3Q6OlNldEZsYWdzRnJvbUNvbW1hbmRMaW5l
KCZhcmdjLCBhcmd2LCB0cnVlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90ZXN0L3B5X3F1YWxp
dHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vzc21lbnQvc291bmRfbGV2ZWwuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdGVzdC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nlc3NtZW50L3NvdW5kX2xl
dmVsLmNjCmluZGV4IDk4Y2Y4NGM4ODhmN2I1YzEzZjg0YzBlM2ZiZTRlYjI1OTJiYzA2YWMuLjM1
YTJjMTFhZWIyMjc5Y2RmYjNlM2ZkMWNhZmMzMTU3ZWI2Mjc4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy90ZXN0L3B5X3F1YWxpdHlfYXNzZXNzbWVudC9xdWFsaXR5X2Fzc2Vzc21lbnQvc291bmRf
bGV2ZWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvcHlfcXVhbGl0eV9hc3Nlc3NtZW50L3F1YWxp
dHlfYXNzZXNzbWVudC9zb3VuZF9sZXZlbC5jYwpAQCAtMjYsMTMgKzI2LDEzIEBAIGNvbnN0ZXhw
ciBzaXplX3Qga01heEZyYW1lTGVuID0ga01heEZyYW1lTGVuTXMgKiBrTWF4U2FtcGxlUmF0ZSAv
IDEwMDA7CiAKIGNvbnN0IGRvdWJsZSBrT25lRGJSZWR1Y3Rpb24gPSBEYlRvUmF0aW8oLTEuMCk7
CiAKLURFRklORV9zdHJpbmcoaSwgIiIsICJJbnB1dCB3YXYgZmlsZSIpOwotREVGSU5FX3N0cmlu
ZyhvYywgIiIsICJDb25maWcgb3V0cHV0IGZpbGUiKTsKLURFRklORV9zdHJpbmcob2wsICIiLCAi
TGV2ZWxzIG91dHB1dCBmaWxlIik7Ci1ERUZJTkVfZmxvYXQoYSwgNS5mLCAiQXR0YWNrIChtcyki
KTsKLURFRklORV9mbG9hdChkLCAyMC5mLCAiRGVjYXkgKG1zKSIpOwotREVGSU5FX2ludChmLCAx
MCwgIkZyYW1lIGxlbmd0aCAobXMpIik7Ci1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgInByaW50
cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGksICIiLCAiSW5wdXQgd2F2
IGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKG9jLCAiIiwgIkNvbmZpZyBvdXRwdXQgZmls
ZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob2wsICIiLCAiTGV2ZWxzIG91dHB1dCBmaWxlIik7
CitXRUJSVENfREVGSU5FX2Zsb2F0KGEsIDUuZiwgIkF0dGFjayAobXMpIik7CitXRUJSVENfREVG
SU5FX2Zsb2F0KGQsIDIwLmYsICJEZWNheSAobXMpIik7CitXRUJSVENfREVGSU5FX2ludChmLCAx
MCwgIkZyYW1lIGxlbmd0aCAobXMpIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2Us
ICJwcmludHMgdGhpcyBtZXNzYWdlIik7CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2
W10pIHsKICAgaWYgKHJ0Yzo6RmxhZ0xpc3Q6OlNldEZsYWdzRnJvbUNvbW1hbmRMaW5lKCZhcmdj
LCBhcmd2LCB0cnVlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Rlc3QvcHlfcXVhbGl0eV9h
c3Nlc3NtZW50L3F1YWxpdHlfYXNzZXNzbWVudC92YWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9weV9x
dWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nlc3NtZW50L3ZhZC5jYwppbmRleCAxOTFjYjFl
OWZjZmQxNTJmOWUwOTQzNzY4ZjBmNWIzNmRmZTcyNTk4Li44YTEzNGVkMTg1ZDljZTk2MDNhZDdk
MWJjNTU5YzRhZmMzYmEzNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVzdC9weV9xdWFsaXR5
X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nlc3NtZW50L3ZhZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdGVz
dC9weV9xdWFsaXR5X2Fzc2Vzc21lbnQvcXVhbGl0eV9hc3Nlc3NtZW50L3ZhZC5jYwpAQCAtMjcs
OCArMjcsOCBAQCBjb25zdGV4cHIgc2l6ZV90IGtNYXhGcmFtZUxlbiA9CiAKIGNvbnN0ZXhwciB1
aW50OF90IGtCaXRtYXNrQnVmZlNpemUgPSA4OwogCi1ERUZJTkVfc3RyaW5nKGksICIiLCAiSW5w
dXQgd2F2IGZpbGUiKTsKLURFRklORV9zdHJpbmcobywgIiIsICJWQUQgb3V0cHV0IGZpbGUiKTsK
K1dFQlJUQ19ERUZJTkVfc3RyaW5nKGksICIiLCAiSW5wdXQgd2F2IGZpbGUiKTsKK1dFQlJUQ19E
RUZJTkVfc3RyaW5nKG8sICIiLCAiVkFEIG91dHB1dCBmaWxlIik7CiAKIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pIHsKICAgaWYgKHJ0Yzo6RmxhZ0xpc3Q6OlNldEZsYWdzRnJvbUNv
bW1hbmRMaW5lKCZhcmdjLCBhcmd2LCB0cnVlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFu
c2llbnQvbW92aW5nX21vbWVudHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L21vdmluZ19tb21l
bnRzLmNjCmluZGV4IGExOTliYjBjMWI5ZDNlMWMwN2JjZWExMjg3NTM0ZDFhZGUwOTE3NTIuLjgz
ODEwYmZlM2MyNzZlYjAwMjJkMGI4MzQ4ZmUwNzA4ODFmNmE0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy90cmFuc2llbnQvbW92aW5nX21vbWVudHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVu
dC9tb3ZpbmdfbW9tZW50cy5jYwpAQCAtMTAsNyArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC9tb3ZpbmdfbW9tZW50cy5oIgogCi0jaW5jbHVk
ZSA8Y21hdGg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvdHJhbnNpZW50X2RldGVj
dG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2llbnRfZGV0ZWN0b3IuY2MKaW5kZXgg
YzNiZjI4MmIwZTFmZjE3ZDFhZTdiNDg3ODliMTUxMjBiNTdmMjExYy4uODk5N2Q0YzA5MjA2ZmFh
ZTNhNWM0Y2E0MWQ0MjBlOWVlZWY1OGFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVu
dC90cmFuc2llbnRfZGV0ZWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2ll
bnRfZGV0ZWN0b3IuY2MKQEAgLTEzLDEyICsxMywxMiBAQAogI2luY2x1ZGUgPGZsb2F0Lmg+CiAj
aW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC9jb21t
b24uaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L2RhdWJl
Y2hpZXNfOF93YXZlbGV0X2NvZWZmcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy90cmFuc2llbnQvbW92aW5nX21vbWVudHMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdHJhbnNpZW50L3dwZF9ub2RlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3RyYW5zaWVudC93cGRfdHJlZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9kZXRl
Y3Rvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2llbnRfZGV0ZWN0b3IuaAppbmRleCAz
MjY3YjNhNmNkYzRhNWE2NjZiN2I0ZWQxYjg3ODQ1ZmVhY2E4MjlhLi4yM2I4OGY4MmIxMGNmMmU2
ZWMzNzcyOGIxMTYzMWM3YTJlMTc1YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50
L3RyYW5zaWVudF9kZXRlY3Rvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvdHJhbnNpZW50
X2RldGVjdG9yLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9D
RVNTSU5HX1RSQU5TSUVOVF9UUkFOU0lFTlRfREVURUNUT1JfSF8KICNkZWZpbmUgTU9EVUxFU19B
VURJT19QUk9DRVNTSU5HX1RSQU5TSUVOVF9UUkFOU0lFTlRfREVURUNUT1JfSF8KIAorI2luY2x1
ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2llbnRfc3VwcHJlc3Npb25fdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy90cmFuc2llbnQvdHJhbnNpZW50X3N1cHByZXNzaW9uX3Rlc3QuY2MKaW5k
ZXggOWU3ZWNkNTc4NjUyZTQ2YjQ0NjJmOTc3MzljNmE0Y2U2NTBhYjM0Mi4uZTE1ZjY5YzA0MjAx
NTUwZWExNjIyZTg0M2Q4YjdhMjUyYjk1MTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5z
aWVudC90cmFuc2llbnRfc3VwcHJlc3Npb25fdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNp
ZW50L3RyYW5zaWVudF9zdXBwcmVzc2lvbl90ZXN0LmNjCkBAIC0yMywyNiArMjMsMjggQEAKICNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRp
bHMuaCIKIAotREVGSU5FX3N0cmluZyhpbl9maWxlX25hbWUsICIiLCAiUENNIGZpbGUgdGhhdCBj
b250YWlucyB0aGUgc2lnbmFsLiIpOwotREVGSU5FX3N0cmluZyhkZXRlY3Rpb25fZmlsZV9uYW1l
LAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIlBDTSBmaWxlIHRoYXQgY29udGFp
bnMgdGhlIGRldGVjdGlvbiBzaWduYWwuIik7Ci1ERUZJTkVfc3RyaW5nKHJlZmVyZW5jZV9maWxl
X25hbWUsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiUENNIGZpbGUgdGhhdCBj
b250YWlucyB0aGUgcmVmZXJlbmNlIHNpZ25hbC4iKTsKLQotREVGSU5FX2ludChjaHVua19zaXpl
X21zLAotICAgICAgICAgICAxMCwKLSAgICAgICAgICAgIlRpbWUgYmV0d2VlbiBlYWNoIGNodW5r
IG9mIHNhbXBsZXMgaW4gbWlsbGlzZWNvbmRzLiIpOwotCi1ERUZJTkVfaW50KHNhbXBsZV9yYXRl
X2h6LCAxNjAwMCwgIlNhbXBsaW5nIGZyZXF1ZW5jeSBvZiB0aGUgc2lnbmFsIGluIEhlcnR6LiIp
OwotREVGSU5FX2ludChkZXRlY3Rpb25fcmF0ZV9oeiwKLSAgICAgICAgICAgMCwKLSAgICAgICAg
ICAgIlNhbXBsaW5nIGZyZXF1ZW5jeSBvZiB0aGUgZGV0ZWN0aW9uIHNpZ25hbCBpbiBIZXJ0ei4i
KTsKLQotREVGSU5FX2ludChudW1fY2hhbm5lbHMsIDEsICJOdW1iZXIgb2YgY2hhbm5lbHMuIik7
Ci0KLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlLiIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcoaW5fZmlsZV9uYW1lLCAiIiwgIlBDTSBmaWxlIHRoYXQgY29udGFp
bnMgdGhlIHNpZ25hbC4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGRldGVjdGlvbl9maWxlX25h
bWUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJQQ00g
ZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBkZXRlY3Rpb24gc2lnbmFsLiIpOworV0VCUlRDX0RFRklO
RV9zdHJpbmcocmVmZXJlbmNlX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAor
ICAgICAgICAgICAgICAgICAgICAgIlBDTSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHJlZmVyZW5j
ZSBzaWduYWwuIik7CisKK1dFQlJUQ19ERUZJTkVfaW50KGNodW5rX3NpemVfbXMsCisgICAgICAg
ICAgICAgICAgICAxMCwKKyAgICAgICAgICAgICAgICAgICJUaW1lIGJldHdlZW4gZWFjaCBjaHVu
ayBvZiBzYW1wbGVzIGluIG1pbGxpc2Vjb25kcy4iKTsKKworV0VCUlRDX0RFRklORV9pbnQoc2Ft
cGxlX3JhdGVfaHosCisgICAgICAgICAgICAgICAgICAxNjAwMCwKKyAgICAgICAgICAgICAgICAg
ICJTYW1wbGluZyBmcmVxdWVuY3kgb2YgdGhlIHNpZ25hbCBpbiBIZXJ0ei4iKTsKK1dFQlJUQ19E
RUZJTkVfaW50KGRldGVjdGlvbl9yYXRlX2h6LAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAg
ICAgICAgICAgICAgICJTYW1wbGluZyBmcmVxdWVuY3kgb2YgdGhlIGRldGVjdGlvbiBzaWduYWwg
aW4gSGVydHouIik7CisKK1dFQlJUQ19ERUZJTkVfaW50KG51bV9jaGFubmVscywgMSwgIk51bWJl
ciBvZiBjaGFubmVscy4iKTsKKworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAiUHJp
bnQgdGhpcyBtZXNzYWdlLiIpOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3RyYW5zaWVudC90cmFuc2llbnRfc3VwcHJlc3Nvci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3Ry
YW5zaWVudC90cmFuc2llbnRfc3VwcHJlc3Nvci5oCmluZGV4IDlhZTNmYzY2MGE4ODFlMmRmYzUx
ZjVmNzliNzNhNDZhYmVmODE5YTAuLmFlNTE5NjZhM2Q0ZWJiODUwYjYwY2Q0NjhjNTNlMmNmZjIw
NDFkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvdHJhbnNpZW50X3N1cHByZXNz
b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3RyYW5zaWVudF9zdXBwcmVzc29yLmgKQEAg
LTExLDkgKzExLDkgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX1RSQU5TSUVO
VF9UUkFOU0lFTlRfU1VQUFJFU1NPUl9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJ
TkdfVFJBTlNJRU5UX1RSQU5TSUVOVF9TVVBQUkVTU09SX0hfCiAKLSNpbmNsdWRlIDxkZXF1ZT4K
KyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1v
cnk+Ci0jaW5jbHVkZSA8c2V0PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3Rlc3RfcHJvZF91dGls
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX3RyZWUuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvdHJhbnNpZW50L3dwZF90cmVlLmNjCmluZGV4IDcyZjRkNzY4OTFmMzg2ZGUzZGMxMjcw
N2I3OWQxNjE0MWVkMDdkODUuLmM4YWE2MTU4ODE3YWZlZWNlYjljMjQ5YjA3MzdlMDdhYjdkZTZj
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX3RyZWUuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL3RyYW5zaWVudC93cGRfdHJlZS5jYwpAQCAtMTAsMTAgKzEwLDggQEAKIAogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX3RyZWUuaCIKIAotI2lu
Y2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIAotI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvZHlhZGljX2RlY2ltYXRvci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX25vZGUuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC93
cGRfdHJlZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3RyYW5zaWVudC93cGRfdHJlZS5oCmluZGV4IDcwN2E4OWQ0
NGFjMTZmZGIyNGFiZGY5OWU5YzE1ODk3YWQ2NDYxYTcuLmI2MjEzNWRhZmE4ZDdjZWQ4OTlhYzFh
NjcwMjNkYzFjN2U0MjYxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90cmFuc2llbnQvd3BkX3Ry
ZWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3dwZF90cmVlLmgKQEAgLTExLDYgKzExLDcg
QEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX1RSQU5TSUVOVF9XUERfVFJFRV9I
XwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfVFJBTlNJRU5UX1dQRF9UUkVFX0hf
CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJt
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdHJhbnNpZW50L3dwZF9ub2RlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmcvdHlwaW5nX2RldGVjdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3R5cGluZ19kZXRlY3Rp
b24uaAppbmRleCA3MGZkOTAzMzY2MTA5MjEzM2FlM2Y3MzZmOTMyMGM5ODE4OTlhMmI3Li5kOGZi
MzU5MmM5NjQ0ZDRkMmFiNjhjN2M5ZTQxOGVmYTY4NDM1N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdHlwaW5nX2RldGVjdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy90eXBpbmdfZGV0ZWN0aW9uLmgK
QEAgLTExLDkgKzExLDExIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19UWVBJ
TkdfREVURUNUSU9OX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19UWVBJTkdf
REVURUNUSU9OX0hfCiAKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgor
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3MgVHlwaW5nRGV0ZWN0aW9uIHsKK2NsYXNzIFJU
Q19FWFBPUlQgVHlwaW5nRGV0ZWN0aW9uIHsKICBwdWJsaWM6CiAgIFR5cGluZ0RldGVjdGlvbigp
OwogICB2aXJ0dWFsIH5UeXBpbmdEZXRlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91
dGlsaXR5L29vdXJhX2ZmdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdC5jYwppbmRl
eCBjMzMzM2NlYTViZWIwMDBhOWY1MjI2M2M0ZjFmNzhjOTkyYjQwN2Q4Li44NjI4YmQzOWYwYWVj
YzIxOTFjM2Q0YTI1MjExMmQ0ZDM0MjJmNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0
eS9vb3VyYV9mZnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvb291cmFfZmZ0LmNjCkBAIC0y
Myw4ICsyMyw2IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0
eS9vb3VyYV9mZnQuaCIKIAotI2luY2x1ZGUgPG1hdGguaD4KLQogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L29vdXJhX2ZmdF90YWJsZXNfY29tbW9uLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9jcHVfZmVhdHVyZXNfd3JhcHBlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0
aWxpdHkvb291cmFfZmZ0X3NzZTIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnRfc3Nl
Mi5jYwppbmRleCA5YjVkMGYzN2E0NDk3Yzc0NzZhZGEzODdiZmQ3YmI4NmZjMmRjODZjLi4wZTRh
NDRiZWNjZjQxZTYyMDNlNmYwNTgxMWFhZjNmOWFjYTUyNjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np
bmcvdXRpbGl0eS9vb3VyYV9mZnRfc3NlMi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3Vy
YV9mZnRfc3NlMi5jYwpAQCAtOCwxMCArOCwxMCBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKLSNpbmNsdWRl
ICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnQuaCIKLQogI2luY2x1
ZGUgPGVtbWludHJpbi5oPgorI2luY2x1ZGUgPHhtbWludHJpbi5oPgogCisjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvb291cmFfZmZ0LmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvb291cmFfZmZ0X3RhYmxlc19jb21tb24uaCIK
ICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9vb3VyYV9mZnRfdGFi
bGVzX25lb25fc3NlMi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9hcmNoLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL2dtbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvZ21tLmNjCmluZGV4
IGNkOGExYThhMzc1YzdlZGI4OWE4NTMwMmNhMGI3NTc3MWU2ODhhYjMuLjNiODc2NGM0ZDAyYTli
YjMxNzMzYWFlMWFjMTEyMTE5ZDJjZTU2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvZ21t
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvZ21tLmNjCkBAIC0xMSw3ICsxMSw2IEBACiAjaW5jbHVk
ZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9nbW0uaCIKIAogI2luY2x1ZGUgPG1hdGgu
aD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy92YWQvcGl0Y2hfYmFzZWRfdmFkLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRj
aF9iYXNlZF92YWQuY2MKaW5kZXggMDI1ZWYyMDU5ZDkxMmIzNmI4ZTg3ZjM2YjIxMDczNGVmNDdh
NGM5My4uNjhlNjBkYzY2YWU1MTc2YjI5YWNkMDQ3N2QxY2Q0MDU0NGUzZWVlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNlZF92YWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9w
aXRjaF9iYXNlZF92YWQuY2MKQEAgLTEwLDcgKzEwLDYgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy92YWQvcGl0Y2hfYmFzZWRfdmFkLmgiCiAKLSNpbmNsdWRlIDxtYXRo
Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvdmFkL2NvbW1vbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNl
ZF92YWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvcGl0Y2hfYmFzZWRfdmFkLmgKaW5kZXggNGQzMjc2NTJj
NjgwMTcyNzUyYjlmNjczMTAwMjRiMTU2ZTA1MDM1NS4uMjJiYzBmMjI2MzkwMTAwN2UyYWZkYTc4
YWFhMGM2NmJhNDRlNmNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9waXRjaF9iYXNlZF92
YWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BpdGNoX2Jhc2VkX3ZhZC5oCkBAIC0xOCw3ICsxOCw2
IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBBdWRpb0ZyYW1lOwogY2xhc3MgVmFk
Q2lyY3VsYXJCdWZmZXI7CiAKIC8vIENvbXB1dGVzIHRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgaW5w
dXQgYXVkaW8gZnJhbWUgdG8gYmUgYWN0aXZlIGdpdmVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcv
dmFkL3BvbGVfemVyb19maWx0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3BvbGVfemVyb19maWx0ZXIu
Y2MKaW5kZXggYjk5NjdkN2FlYTViZjQzOTQ0NjYyYzQzNjFjNWU1YzgyNWJlMDhmZC4uNDE1NmQ3
ZTc5NTJhOWYxYWU0ZTAxMDc4YjQzY2NkNjBjOWM1NWRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3ZhZC9wb2xlX3plcm9fZmlsdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvcG9sZV96ZXJvX2Zp
bHRlci5jYwpAQCAtMTAsNyArMTAsNiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nL3ZhZC9wb2xlX3plcm9fZmlsdGVyLmgiCiAKLSNpbmNsdWRlIDxzdGRsaWIuaD4KICNp
bmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJv
Y2Vzc2luZy92YWQvc3RhbmRhbG9uZV92YWQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3N0YW5kYWxvbmVf
dmFkLmNjCmluZGV4IDE5YTUyODJjM2Y3MTU4NGI4NDBmZDNjODVlMGJhOTU0ZmIwMWJkMjIuLjEz
OTc2NjhlYjRiY2JkMjQzMmZkMDNjNzI4NTZhMjlkNjQ4MTlkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy92YWQvc3RhbmRhbG9uZV92YWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9zdGFuZGFsb25l
X3ZhZC5jYwpAQCAtMTIsNyArMTIsNyBAQAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNs
dWRlICJhdWRpby91dGlsaXR5L2F1ZGlvX2ZyYW1lX29wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJj
b21tb25fYXVkaW8vdmFkL2luY2x1ZGUvd2VicnRjX3ZhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92
YWQvc3RhbmRhbG9uZV92YWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvc3RhbmRhbG9uZV92YWQuaAppbmRl
eCA3OTY1MGZiZThjNmNhZTFjM2FkZWQ5M2FjYzEyYWU5ZmZkMDMxNTlmLi4zZGZmNDE2M2MyMmU4
MWQzMjVlYTJiZWM1YTBiOTBlYjUyMDI5ZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3N0
YW5kYWxvbmVfdmFkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9zdGFuZGFsb25lX3ZhZC5oCkBAIC0x
MSwxMyArMTEsMTQgQEAKICNpZm5kZWYgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FHQ19TVEFO
REFMT05FX1ZBRF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfQUdDX1NUQU5E
QUxPTkVfVkFEX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4K
KwogI2luY2x1ZGUgImNvbW1vbl9hdWRpby92YWQvaW5jbHVkZS93ZWJydGNfdmFkLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC9jb21tb24uaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKLWNsYXNzIEF1ZGlvRnJhbWU7Ci0KIGNsYXNzIFN0YW5kYWxvbmVWYWQgewog
IHB1YmxpYzoKICAgc3RhdGljIFN0YW5kYWxvbmVWYWQqIENyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL3ZhZC92YWRfYXVkaW9fcHJvYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92YWRfYXVkaW9f
cHJvYy5oCmluZGV4IGUzNDA5MWJkYjZhYmQxZThhM2IzMWMxNTlmMWYwMjRlMzcwZDNiMTYuLjli
ZTM0NjdlZjg1MjMwODY0NzNiYjIwNDY4MThlZDI0MTEzZmM4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vz
c2luZy92YWQvdmFkX2F1ZGlvX3Byb2MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZhZF9hdWRpb19w
cm9jLmgKQEAgLTExLDEzICsxMSwxNCBAQAogI2lmbmRlZiBNT0RVTEVTX0FVRElPX1BST0NFU1NJ
TkdfVkFEX1ZBRF9BVURJT19QUk9DX0hfCiAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lO
R19WQURfVkFEX0FVRElPX1BST0NfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIAotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy92YWQvY29tbW9uLmgiCisjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL3ZhZC9jb21tb24uaCIgIC8vIEF1ZGlvRmVhdHVyZXMsIGtTYW1wbGVSLi4uCiAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCi1jbGFzcyBBdWRpb0ZyYW1lOwogY2xhc3MgUG9sZVplcm9GaWx0ZXI7
CiAKIGNsYXNzIFZhZEF1ZGlvUHJvYyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZvaWNl
X2FjdGl2aXR5X2RldGVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZvaWNlX2FjdGl2aXR5X2RldGVj
dG9yLmgKaW5kZXggZTQyNGFjMWEyODI3OGU1NDUyZTAyNTNiYzVlNTk3N2FhMDc0OTNjZS4uZDE0
MGZlMmFhM2E0MTQwMzYxY2RhMTA2NTUxZDc3YTk2NzljNjk0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL3ZhZC92b2ljZV9hY3Rpdml0eV9kZXRlY3Rvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvdm9p
Y2VfYWN0aXZpdHlfZGV0ZWN0b3IuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVT
X0FVRElPX1BST0NFU1NJTkdfVkFEX1ZPSUNFX0FDVElWSVRZX0RFVEVDVE9SX0hfCiAjZGVmaW5l
IE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19WQURfVk9JQ0VfQUNUSVZJVFlfREVURUNUT1JfSF8K
IAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92b2ljZV9k
ZXRlY3Rpb25faW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92b2ljZV9kZXRlY3Rpb25faW1wbC5jYwppbmRl
eCA5MjgwYmUxZWY5ZDBjMjRmNWVlYThmMTg1MDBhYzg4MGUyZWFhMTJmLi5jNTVjYTRhZWU4Nzcx
YWIxMGI5OGJhODBiMWY1OGU0NGI1NWY5YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2Vf
ZGV0ZWN0aW9uX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZvaWNlX2RldGVjdGlvbl9pbXBsLmNj
CkBAIC0xMCw4ICsxMCwxMCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L3ZvaWNlX2RldGVjdGlvbl9pbXBsLmgiCiAKKyNpbmNsdWRlICJhcGkvYXVkaW8vYXVkaW9fZnJh
bWUuaCIKICNpbmNsdWRlICJjb21tb25fYXVkaW8vdmFkL2luY2x1ZGUvd2VicnRjX3ZhZC5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hdWRpb19idWZmZXIuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZvaWNl
X2RldGVjdGlvbl9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2VfZGV0ZWN0aW9uX2ltcGwuaAppbmRl
eCA0YjcyNGJkZDI1NjQ3ZWMzZjFhZTUyNGNjNTdmZmVmMDQyNDhkYWI1Li5jNDM4NDczNjc5OWUw
MTA4M2Q0MzU4ZGFjZTJlYzUxMTgxN2VkZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2Vf
ZGV0ZWN0aW9uX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmcvdm9pY2VfZGV0ZWN0aW9uX2ltcGwuaApA
QCAtMTEsMTEgKzExLDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lOR19WT0lD
RV9ERVRFQ1RJT05fSU1QTF9IXwogI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NFU1NJTkdfVk9J
Q0VfREVURUNUSU9OX0lNUExfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlv
X3Byb2Nlc3NpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
dGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC00Miw2ICs0
NCw3IEBAIGNsYXNzIFZvaWNlRGV0ZWN0aW9uSW1wbCA6IHB1YmxpYyBWb2ljZURldGVjdGlvbiB7
CiAKICBwcml2YXRlOgogICBjbGFzcyBWYWQ7CisKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24qIGNv
bnN0IGNyaXRfOwogICBib29sIGVuYWJsZWRfIFJUQ19HVUFSREVEX0JZKGNyaXRfKSA9IGZhbHNl
OwogICBib29sIHN0cmVhbV9oYXNfdm9pY2VfIFJUQ19HVUFSREVEX0JZKGNyaXRfKSA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9CVUlMRC5n
bgppbmRleCA3MjA0NmYwYTAxNWUwMmE4MjcyZjk0MzAyOTRiYWQwZTQ4ODdhZGRkLi5iNTAxY2I0
NDU3ZjJmZTVmNDBkOTEwYmI1YzA2ZWFlM2ViZDYwMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxl
ci9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9CVUlMRC5nbgpAQCAtMTUsNiArMTUsOCBAQCBy
dGNfc3RhdGljX2xpYnJhcnkoImJpdHJhdGVfY29udHJvbGxlciIpIHsKICAgICAiYml0cmF0ZV9j
b250cm9sbGVyX2ltcGwuY2MiLAogICAgICJiaXRyYXRlX2NvbnRyb2xsZXJfaW1wbC5oIiwKICAg
ICAiaW5jbHVkZS9iaXRyYXRlX2NvbnRyb2xsZXIuaCIsCisgICAgImxvc3NfYmFzZWRfYmFuZHdp
ZHRoX2VzdGltYXRpb24uY2MiLAorICAgICJsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9u
LmgiLAogICAgICJzZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24uY2MiLAogICAgICJzZW5k
X3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24uaCIsCiAgIF0KQEAgLTMxLDEwICszMywxNiBAQCBy
dGNfc3RhdGljX2xpYnJhcnkoImJpdHJhdGVfY29udHJvbGxlciIpIHsKIAogICBkZXBzID0gWwog
ICAgICIuLjptb2R1bGVfYXBpIiwKKyAgICAiLi4vLi4vYXBpL3RyYW5zcG9ydDpuZXR3b3JrX2Nv
bnRyb2wiLAorICAgICIuLi8uLi9hcGkvdW5pdHM6ZGF0YV9yYXRlIiwKKyAgICAiLi4vLi4vYXBp
L3VuaXRzOnRpbWVfZGVsdGEiLAorICAgICIuLi8uLi9hcGkvdW5pdHM6dGltZXN0YW1wIiwKICAg
ICAiLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfYndlIiwKICAgICAiLi4vLi4vbG9nZ2luZzpydGNf
ZXZlbnRfbG9nX2FwaSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uLy4u
L3J0Y19iYXNlOmRlcHJlY2F0aW9uIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBw
cm92ZWQiLAorICAgICIuLi8uLi9ydGNfYmFzZS9leHBlcmltZW50czpmaWVsZF90cmlhbF9wYXJz
ZXIiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAogICAgICIuLi8uLi9zeXN0ZW1fd3Jh
cHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9iaXRyYXRlX2NvbnRyb2xsZXJfaW1wbC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9j
b250cm9sbGVyL2JpdHJhdGVfY29udHJvbGxlcl9pbXBsLmNjCmluZGV4IDkzMDQ1YjczYTM2YmIz
NDRhMzY1ZDdiY2FlYmY4YjM4YWQyMjM3OTEuLjU3Yzg1ZjZmNmZjNTdmZTEyMTdkNDhjNmMwZmY2
Nzc2OTIwMWY2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2JpdHJhdGVfY29udHJvbGxlcl9p
bXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2JpdHJhdGVfY29udHJvbGxlcl9pbXBsLmNjCkBAIC0y
MSwxMCArMjEsMTAgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewotYWJzbDo6
b3B0aW9uYWw8RGF0YVJhdGU+IFRvT3B0aW9uYWxEYXRhUmF0ZShpbnQgc3RhcnRfYml0cmF0ZV9i
cHMpIHsKLSAgaWYgKHN0YXJ0X2JpdHJhdGVfYnBzID09IC0xKQotICAgIHJldHVybiBhYnNsOjpu
dWxsb3B0OwotICByZXR1cm4gRGF0YVJhdGU6OmJwcyhzdGFydF9iaXRyYXRlX2Jwcyk7CithYnNs
OjpvcHRpb25hbDxEYXRhUmF0ZT4gVG9PcHRpb25hbERhdGFSYXRlKGludCBzZW5kX2JpdHJhdGVf
YnBzKSB7CisgIGlmIChzZW5kX2JpdHJhdGVfYnBzID4gMCkKKyAgICByZXR1cm4gRGF0YVJhdGU6
OmJwcyhzZW5kX2JpdHJhdGVfYnBzKTsKKyAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CiB9CiBEYXRh
UmF0ZSBNYXhSYXRlKGludCBtYXhfYml0cmF0ZV9icHMpIHsKICAgaWYgKG1heF9iaXRyYXRlX2Jw
cyA9PSAtMSkKQEAgLTE1MywxNCArMTUzLDEyIEBAIHZvaWQgQml0cmF0ZUNvbnRyb2xsZXJJbXBs
OjpPbkRlbGF5QmFzZWRCd2VSZXN1bHQoCiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRzZWN0
Xyk7CiAgICAgaWYgKHJlc3VsdC5wcm9iZSkgewogICAgICAgYmFuZHdpZHRoX2VzdGltYXRpb25f
LlNldFNlbmRCaXRyYXRlKAotICAgICAgICAgIERhdGFSYXRlOjpicHMocmVzdWx0LnRhcmdldF9i
aXRyYXRlX2JwcyksCi0gICAgICAgICAgVGltZXN0YW1wOjptcyhjbG9ja18tPlRpbWVJbk1pbGxp
c2Vjb25kcygpKSk7CisgICAgICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlLCBUaW1lc3RhbXA6
Om1zKGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpKTsKICAgICB9CiAgICAgLy8gU2luY2Ug
U2V0U2VuZEJpdHJhdGUgbm93IHJlc2V0cyB0aGUgZGVsYXktYmFzZWQgZXN0aW1hdGUsIHdlIGhh
dmUgdG8gY2FsbAogICAgIC8vIFVwZGF0ZURlbGF5QmFzZWRFc3RpbWF0ZSBhZnRlciBTZXRTZW5k
Qml0cmF0ZS4KICAgICBiYW5kd2lkdGhfZXN0aW1hdGlvbl8uVXBkYXRlRGVsYXlCYXNlZEVzdGlt
YXRlKAotICAgICAgICBUaW1lc3RhbXA6Om1zKGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkp
LAotICAgICAgICBEYXRhUmF0ZTo6YnBzKHJlc3VsdC50YXJnZXRfYml0cmF0ZV9icHMpKTsKKyAg
ICAgICAgVGltZXN0YW1wOjptcyhjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSwgcmVzdWx0
LnRhcmdldF9iaXRyYXRlKTsKICAgfQogICBNYXliZVRyaWdnZXJPbk5ldHdvcmtDaGFuZ2VkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9iaXRyYXRlX2NvbnRyb2xsZXJfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Jp
dHJhdGVfY29udHJvbGxlci9iaXRyYXRlX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKaW5kZXggOTZm
OGExZWYyNjZlYjllNjJlY2YwZjgwMWNjYzMxZDA4YzdlZGE4Yi4uY2YyODEyMTRhYTNjZmI0Njg1
ZTRiZThmMzk2NTMyM2I5YzkwY2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvYml0cmF0ZV9j
b250cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2JpdHJhdGVfY29udHJvbGxl
cl91bml0dGVzdC5jYwpAQCAtMTY5LDcgKzE2OSw3IEBAIFRFU1RfRihCaXRyYXRlQ29udHJvbGxl
clRlc3QsIE9uZUJpdHJhdGVPYnNlcnZlck9uZVJ0Y3BPYnNlcnZlcikgewogICBFWFBFQ1RfRVEo
MzAwMDAwLCBiaXRyYXRlX29ic2VydmVyXy5sYXN0X2JpdHJhdGVfKTsKIAogICAvLyBUZXN0IHRo
YXQgYSBsb3cgZGVsYXktYmFzZWQgZXN0aW1hdGUgbGltaXRzIHRoZSBjb21iaW5lZCBlc3RpbWF0
ZS4KLSAgd2VicnRjOjpEZWxheUJhc2VkQndlOjpSZXN1bHQgcmVzdWx0KGZhbHNlLCAyODAwMDAp
OworICB3ZWJydGM6OkRlbGF5QmFzZWRCd2U6OlJlc3VsdCByZXN1bHQoZmFsc2UsIHdlYnJ0Yzo6
RGF0YVJhdGU6OmticHMoMjgwKSk7CiAgIGNvbnRyb2xsZXJfLT5PbkRlbGF5QmFzZWRCd2VSZXN1
bHQocmVzdWx0KTsKICAgRVhQRUNUX0VRKDI4MDAwMCwgYml0cmF0ZV9vYnNlcnZlcl8ubGFzdF9i
aXRyYXRlXyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2luY2x1ZGUvYml0cmF0ZV9jb250
cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2JpdHJhdGVfY29udHJvbGxlci9pbmNsdWRlL2JpdHJhdGVfY29udHJvbGxlci5oCmluZGV4
IGY2NzYwMGQxOTA4Mzc4NGU0NjdkM2ZkMjJmNzI3ZDNmMGUzMzIzMTEuLjNlMTFmYTc2YTMyNDFk
ZTYwODllOGUyYTM0MTBjMGM4NjVmMDlkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2luY2x1
ZGUvYml0cmF0ZV9jb250cm9sbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvaW5jbHVkZS9iaXRyYXRl
X2NvbnRyb2xsZXIuaApAQCAtMTUsMTUgKzE1LDE3IEBACiAjaWZuZGVmIE1PRFVMRVNfQklUUkFU
RV9DT05UUk9MTEVSX0lOQ0xVREVfQklUUkFURV9DT05UUk9MTEVSX0hfCiAjZGVmaW5lIE1PRFVM
RVNfQklUUkFURV9DT05UUk9MTEVSX0lOQ0xVREVfQklUUkFURV9DT05UUk9MTEVSX0hfCiAKLSNp
bmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAK
ICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jh
c2VkX2J3ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGUuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJl
Y2F0aW9uLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBDbG9jazsKIGNsYXNzIFJ0
Y0V2ZW50TG9nOwogCiAvLyBEZXByZWNhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9sb3Nz
X2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNlZF9i
YW5kd2lkdGhfZXN0aW1hdGlvbi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDdmOGFhMmMzNmQ3ZmQ2NmQ1NjJh
YWNiODZkZTZjZTc2NjZjZTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19i
YXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5jYwpAQCAtMCwwICsxLDIxNSBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9sb3Nz
X2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImFwaS91bml0
cy9kYXRhX3JhdGUuaCIKKyNpbmNsdWRlICJhcGkvdW5pdHMvdGltZV9kZWx0YS5oIgorI2luY2x1
ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCisKK25hbWVzcGFjZSB3
ZWJydGMgeworbmFtZXNwYWNlIHsKK2NvbnN0IGNoYXIga0J3ZUxvc3NCYXNlZENvbnRyb2xbXSA9
ICJXZWJSVEMtQndlLUxvc3NCYXNlZENvbnRyb2wiOworCisvLyBJbmNyZWFzZSBzbG93ZXIgd2hl
biBSVFQgaXMgaGlnaC4KK2RvdWJsZSBHZXRJbmNyZWFzZUZhY3Rvcihjb25zdCBMb3NzQmFzZWRD
b250cm9sQ29uZmlnJiBjb25maWcsIFRpbWVEZWx0YSBydHQpIHsKKyAgLy8gQ2xhbXAgdGhlIFJU
VAorICBpZiAocnR0IDwgY29uZmlnLmluY3JlYXNlX2xvd19ydHQpIHsKKyAgICBydHQgPSBjb25m
aWcuaW5jcmVhc2VfbG93X3J0dDsKKyAgfSBlbHNlIGlmIChydHQgPiBjb25maWcuaW5jcmVhc2Vf
aGlnaF9ydHQpIHsKKyAgICBydHQgPSBjb25maWcuaW5jcmVhc2VfaGlnaF9ydHQ7CisgIH0KKyAg
YXV0byBydHRfcmFuZ2UgPSBjb25maWcuaW5jcmVhc2VfaGlnaF9ydHQuR2V0KCkgLSBjb25maWcu
aW5jcmVhc2VfbG93X3J0dDsKKyAgaWYgKHJ0dF9yYW5nZSA8PSBUaW1lRGVsdGE6Olplcm8oKSkg
eworICAgIFJUQ19EQ0hFQ0soZmFsc2UpOyAgLy8gT25seSBvbiBtaXNjb25maWd1cmF0aW9uLgor
ICAgIHJldHVybiBjb25maWcubWluX2luY3JlYXNlX2ZhY3RvcjsKKyAgfQorICBhdXRvIHJ0dF9v
ZmZzZXQgPSBydHQgLSBjb25maWcuaW5jcmVhc2VfbG93X3J0dDsKKyAgYXV0byByZWxhdGl2ZV9v
ZmZzZXQgPSBzdGQ6Om1heCgwLjAsIHN0ZDo6bWluKHJ0dF9vZmZzZXQgLyBydHRfcmFuZ2UsIDEu
MCkpOworICBhdXRvIGZhY3Rvcl9yYW5nZSA9IGNvbmZpZy5tYXhfaW5jcmVhc2VfZmFjdG9yIC0g
Y29uZmlnLm1pbl9pbmNyZWFzZV9mYWN0b3I7CisgIHJldHVybiBjb25maWcubWluX2luY3JlYXNl
X2ZhY3RvciArICgxIC0gcmVsYXRpdmVfb2Zmc2V0KSAqIGZhY3Rvcl9yYW5nZTsKK30KKworZG91
YmxlIExvc3NGcm9tQml0cmF0ZShEYXRhUmF0ZSBiaXRyYXRlLAorICAgICAgICAgICAgICAgICAg
ICAgICBEYXRhUmF0ZSBsb3NzX2JhbmR3aWR0aF9iYWxhbmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgZXhwb25lbnQpIHsKKyAgaWYgKGxvc3NfYmFuZHdpZHRoX2JhbGFuY2UgPj0g
Yml0cmF0ZSkKKyAgICByZXR1cm4gMS4wOworICByZXR1cm4gcG93KGxvc3NfYmFuZHdpZHRoX2Jh
bGFuY2UgLyBiaXRyYXRlLCBleHBvbmVudCk7Cit9CisKK0RhdGFSYXRlIEJpdHJhdGVGcm9tTG9z
cyhkb3VibGUgbG9zcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSBsb3NzX2Jh
bmR3aWR0aF9iYWxhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBleHBvbmVu
dCkgeworICBpZiAoZXhwb25lbnQgPD0gMCkgeworICAgIFJUQ19EQ0hFQ0soZmFsc2UpOworICAg
IHJldHVybiBEYXRhUmF0ZTo6SW5maW5pdHkoKTsKKyAgfQorICBpZiAobG9zcyA8IDFlLTUpCisg
ICAgcmV0dXJuIERhdGFSYXRlOjpJbmZpbml0eSgpOworICByZXR1cm4gbG9zc19iYW5kd2lkdGhf
YmFsYW5jZSAqIHBvdyhsb3NzLCAtMS4wIC8gZXhwb25lbnQpOworfQorCitkb3VibGUgRXhwb25l
bnRpYWxVcGRhdGUoVGltZURlbHRhIHdpbmRvdywgVGltZURlbHRhIGludGVydmFsKSB7CisgIC8v
IFVzZSB0aGUgY29udmVudGlvbiB0aGF0IGV4cG9uZW50aWFsIHdpbmRvdyBsZW5ndGggKHdoaWNo
IGlzIHJlYWxseQorICAvLyBpbmZpbml0ZSkgaXMgdGhlIHRpbWUgaXQgdGFrZXMgdG8gZGFtcGVu
IHRvIDEvZS4KKyAgaWYgKHdpbmRvdyA8PSBUaW1lRGVsdGE6Olplcm8oKSkgeworICAgIFJUQ19E
Q0hFQ0soZmFsc2UpOworICAgIHJldHVybiAxLjBmOworICB9CisgIHJldHVybiAxLjBmIC0gZXhw
KGludGVydmFsIC8gd2luZG93ICogLTEuMCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitMb3Nz
QmFzZWRDb250cm9sQ29uZmlnOjpMb3NzQmFzZWRDb250cm9sQ29uZmlnKCkKKyAgICA6IGVuYWJs
ZWQoZmllbGRfdHJpYWw6OklzRW5hYmxlZChrQndlTG9zc0Jhc2VkQ29udHJvbCkpLAorICAgICAg
bWluX2luY3JlYXNlX2ZhY3RvcigibWluX2luY3IiLCAxLjAyKSwKKyAgICAgIG1heF9pbmNyZWFz
ZV9mYWN0b3IoIm1heF9pbmNyIiwgMS4wOCksCisgICAgICBpbmNyZWFzZV9sb3dfcnR0KCJpbmNy
X2xvd19ydHQiLCBUaW1lRGVsdGE6Om1zKDIwMCkpLAorICAgICAgaW5jcmVhc2VfaGlnaF9ydHQo
ImluY3JfaGlnaF9ydHQiLCBUaW1lRGVsdGE6Om1zKDgwMCkpLAorICAgICAgZGVjcmVhc2VfZmFj
dG9yKCJkZWNyIiwgMC45OSksCisgICAgICBsb3NzX3dpbmRvdygibG9zc193aW4iLCBUaW1lRGVs
dGE6Om1zKDgwMCkpLAorICAgICAgbG9zc19tYXhfd2luZG93KCJsb3NzX21heF93aW4iLCBUaW1l
RGVsdGE6Om1zKDgwMCkpLAorICAgICAgYWNrbm93bGVkZ2VkX3JhdGVfbWF4X3dpbmRvdygiYWNr
cmF0ZV9tYXhfd2luIiwgVGltZURlbHRhOjptcyg4MDApKSwKKyAgICAgIGluY3JlYXNlX29mZnNl
dCgiaW5jcl9vZmZzZXQiLCBEYXRhUmF0ZTo6YnBzKDEwMDApKSwKKyAgICAgIGxvc3NfYmFuZHdp
ZHRoX2JhbGFuY2VfaW5jcmVhc2UoImJhbGFuY2VfaW5jciIsIERhdGFSYXRlOjprYnBzKDAuNSkp
LAorICAgICAgbG9zc19iYW5kd2lkdGhfYmFsYW5jZV9kZWNyZWFzZSgiYmFsYW5jZV9kZWNyIiwg
RGF0YVJhdGU6OmticHMoNCkpLAorICAgICAgbG9zc19iYW5kd2lkdGhfYmFsYW5jZV9leHBvbmVu
dCgiZXhwb25lbnQiLCAwLjUpLAorICAgICAgYWxsb3dfcmVzZXRzKCJyZXNldHMiLCBmYWxzZSks
CisgICAgICBkZWNyZWFzZV9pbnRlcnZhbCgiZGVjcl9pbnR2bCIsIFRpbWVEZWx0YTo6bXMoMzAw
KSksCisgICAgICBsb3NzX3JlcG9ydF90aW1lb3V0KCJ0aW1lb3V0IiwgVGltZURlbHRhOjptcyg2
MDAwKSkgeworICBzdGQ6OnN0cmluZyB0cmlhbF9zdHJpbmcgPSBmaWVsZF90cmlhbDo6RmluZEZ1
bGxOYW1lKGtCd2VMb3NzQmFzZWRDb250cm9sKTsKKyAgUGFyc2VGaWVsZFRyaWFsKAorICAgICAg
eyZtaW5faW5jcmVhc2VfZmFjdG9yLCAmbWF4X2luY3JlYXNlX2ZhY3RvciwgJmluY3JlYXNlX2xv
d19ydHQsCisgICAgICAgJmluY3JlYXNlX2hpZ2hfcnR0LCAmZGVjcmVhc2VfZmFjdG9yLCAmbG9z
c193aW5kb3csICZsb3NzX21heF93aW5kb3csCisgICAgICAgJmFja25vd2xlZGdlZF9yYXRlX21h
eF93aW5kb3csICZpbmNyZWFzZV9vZmZzZXQsCisgICAgICAgJmxvc3NfYmFuZHdpZHRoX2JhbGFu
Y2VfaW5jcmVhc2UsICZsb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2RlY3JlYXNlLAorICAgICAgICZs
b3NzX2JhbmR3aWR0aF9iYWxhbmNlX2V4cG9uZW50LCAmYWxsb3dfcmVzZXRzLCAmZGVjcmVhc2Vf
aW50ZXJ2YWwsCisgICAgICAgJmxvc3NfcmVwb3J0X3RpbWVvdXR9LAorICAgICAgdHJpYWxfc3Ry
aW5nKTsKK30KK0xvc3NCYXNlZENvbnRyb2xDb25maWc6Okxvc3NCYXNlZENvbnRyb2xDb25maWco
Y29uc3QgTG9zc0Jhc2VkQ29udHJvbENvbmZpZyYpID0KKyAgICBkZWZhdWx0OworTG9zc0Jhc2Vk
Q29udHJvbENvbmZpZzo6fkxvc3NCYXNlZENvbnRyb2xDb25maWcoKSA9IGRlZmF1bHQ7CisKK0xv
c3NCYXNlZEJhbmR3aWR0aEVzdGltYXRpb246Okxvc3NCYXNlZEJhbmR3aWR0aEVzdGltYXRpb24o
KQorICAgIDogY29uZmlnXyhMb3NzQmFzZWRDb250cm9sQ29uZmlnKCkpLAorICAgICAgYXZlcmFn
ZV9sb3NzXygwKSwKKyAgICAgIGF2ZXJhZ2VfbG9zc19tYXhfKDApLAorICAgICAgbG9zc19iYXNl
ZF9iaXRyYXRlXyhEYXRhUmF0ZTo6WmVybygpKSwKKyAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRl
X21heF8oRGF0YVJhdGU6Olplcm8oKSksCisgICAgICBhY2tub3dsZWRnZWRfYml0cmF0ZV9sYXN0
X3VwZGF0ZV8oVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCkpLAorICAgICAgdGltZV9sYXN0X2Rl
Y3JlYXNlXyhUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKSksCisgICAgICBoYXNfZGVjcmVhc2Vk
X3NpbmNlX2xhc3RfbG9zc19yZXBvcnRfKGZhbHNlKSwKKyAgICAgIGxhc3RfbG9zc19wYWNrZXRf
cmVwb3J0XyhUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKSksCisgICAgICBsYXN0X2xvc3NfcmF0
aW9fKDApIHt9CisKK3ZvaWQgTG9zc0Jhc2VkQmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRlTG9z
c1N0YXRpc3RpY3MoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiYgcGFja2V0
X3Jlc3VsdHMsCisgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKKyAgaWYgKHBhY2tldF9yZXN1bHRz
LmVtcHR5KCkpIHsKKyAgICBSVENfRENIRUNLKGZhbHNlKTsKKyAgICByZXR1cm47CisgIH0KKyAg
aW50IGxvc3NfY291bnQgPSAwOworICBmb3IgKGF1dG8gcGt0IDogcGFja2V0X3Jlc3VsdHMpIHsK
KyAgICBsb3NzX2NvdW50ICs9IHBrdC5yZWNlaXZlX3RpbWUuSXNJbmZpbml0ZSgpID8gMSA6IDA7
CisgIH0KKyAgbGFzdF9sb3NzX3JhdGlvXyA9IHN0YXRpY19jYXN0PGRvdWJsZT4obG9zc19jb3Vu
dCkgLyBwYWNrZXRfcmVzdWx0cy5zaXplKCk7CisgIGNvbnN0IFRpbWVEZWx0YSB0aW1lX3Bhc3Nl
ZCA9IGxhc3RfbG9zc19wYWNrZXRfcmVwb3J0Xy5Jc0Zpbml0ZSgpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA/IGF0X3RpbWUgLSBsYXN0X2xvc3NfcGFja2V0X3JlcG9ydF8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogVGltZURlbHRhOjpzZWNvbmRz
KDEpOworICBsYXN0X2xvc3NfcGFja2V0X3JlcG9ydF8gPSBhdF90aW1lOworICBoYXNfZGVjcmVh
c2VkX3NpbmNlX2xhc3RfbG9zc19yZXBvcnRfID0gZmFsc2U7CisKKyAgYXZlcmFnZV9sb3NzXyAr
PSBFeHBvbmVudGlhbFVwZGF0ZShjb25maWdfLmxvc3Nfd2luZG93LCB0aW1lX3Bhc3NlZCkgKgor
ICAgICAgICAgICAgICAgICAgIChsYXN0X2xvc3NfcmF0aW9fIC0gYXZlcmFnZV9sb3NzXyk7Cisg
IGlmIChhdmVyYWdlX2xvc3NfID4gYXZlcmFnZV9sb3NzX21heF8pIHsKKyAgICBhdmVyYWdlX2xv
c3NfbWF4XyA9IGF2ZXJhZ2VfbG9zc187CisgIH0gZWxzZSB7CisgICAgYXZlcmFnZV9sb3NzX21h
eF8gKz0KKyAgICAgICAgRXhwb25lbnRpYWxVcGRhdGUoY29uZmlnXy5sb3NzX21heF93aW5kb3cs
IHRpbWVfcGFzc2VkKSAqCisgICAgICAgIChhdmVyYWdlX2xvc3NfIC0gYXZlcmFnZV9sb3NzX21h
eF8pOworICB9Cit9CisKK3ZvaWQgTG9zc0Jhc2VkQmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRl
QWNrbm93bGVkZ2VkQml0cmF0ZSgKKyAgICBEYXRhUmF0ZSBhY2tub3dsZWRnZWRfYml0cmF0ZSwK
KyAgICBUaW1lc3RhbXAgYXRfdGltZSkgeworICBjb25zdCBUaW1lRGVsdGEgdGltZV9wYXNzZWQg
PQorICAgICAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfbGFzdF91cGRhdGVfLklzRmluaXRlKCkKKyAg
ICAgICAgICA/IGF0X3RpbWUgLSBhY2tub3dsZWRnZWRfYml0cmF0ZV9sYXN0X3VwZGF0ZV8KKyAg
ICAgICAgICA6IFRpbWVEZWx0YTo6c2Vjb25kcygxKTsKKyAgYWNrbm93bGVkZ2VkX2JpdHJhdGVf
bGFzdF91cGRhdGVfID0gYXRfdGltZTsKKyAgaWYgKGFja25vd2xlZGdlZF9iaXRyYXRlID4gYWNr
bm93bGVkZ2VkX2JpdHJhdGVfbWF4XykgeworICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX21heF8g
PSBhY2tub3dsZWRnZWRfYml0cmF0ZTsKKyAgfSBlbHNlIHsKKyAgICBhY2tub3dsZWRnZWRfYml0
cmF0ZV9tYXhfICs9CisgICAgICAgIEV4cG9uZW50aWFsVXBkYXRlKGNvbmZpZ18uYWNrbm93bGVk
Z2VkX3JhdGVfbWF4X3dpbmRvdywgdGltZV9wYXNzZWQpICoKKyAgICAgICAgKGFja25vd2xlZGdl
ZF9iaXRyYXRlIC0gYWNrbm93bGVkZ2VkX2JpdHJhdGVfbWF4Xyk7CisgIH0KK30KKwordm9pZCBM
b3NzQmFzZWRCYW5kd2lkdGhFc3RpbWF0aW9uOjpVcGRhdGUoVGltZXN0YW1wIGF0X3RpbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSBtaW5fYml0
cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVEZWx0
YSBsYXN0X3JvdW5kX3RyaXBfdGltZSkgeworICAvLyBPbmx5IGluY3JlYXNlIGlmIGxvc3MgaGFz
IGJlZW4gbG93IGZvciBzb21lIHRpbWUuCisgIGNvbnN0IGRvdWJsZSBsb3NzX2VzdGltYXRlX2Zv
cl9pbmNyZWFzZSA9IGF2ZXJhZ2VfbG9zc19tYXhfOworICAvLyBBdm9pZCBtdWx0aXBsZSBkZWNy
ZWFzZXMgZnJvbSBhdmVyYWdpbmcgb3ZlciBvbmUgbG9zcyBzcGlrZS4KKyAgY29uc3QgZG91Ymxl
IGxvc3NfZXN0aW1hdGVfZm9yX2RlY3JlYXNlID0KKyAgICAgIHN0ZDo6bWluKGF2ZXJhZ2VfbG9z
c18sIGxhc3RfbG9zc19yYXRpb18pOworCisgIGNvbnN0IGRvdWJsZSBsb3NzX2luY3JlYXNlX3Ro
cmVzaG9sZCA9IExvc3NGcm9tQml0cmF0ZSgKKyAgICAgIGxvc3NfYmFzZWRfYml0cmF0ZV8sIGNv
bmZpZ18ubG9zc19iYW5kd2lkdGhfYmFsYW5jZV9pbmNyZWFzZSwKKyAgICAgIGNvbmZpZ18ubG9z
c19iYW5kd2lkdGhfYmFsYW5jZV9leHBvbmVudCk7CisgIGNvbnN0IGRvdWJsZSBsb3NzX2RlY3Jl
YXNlX3RocmVzaG9sZCA9IExvc3NGcm9tQml0cmF0ZSgKKyAgICAgIGxvc3NfYmFzZWRfYml0cmF0
ZV8sIGNvbmZpZ18ubG9zc19iYW5kd2lkdGhfYmFsYW5jZV9kZWNyZWFzZSwKKyAgICAgIGNvbmZp
Z18ubG9zc19iYW5kd2lkdGhfYmFsYW5jZV9leHBvbmVudCk7CisgIGNvbnN0IGJvb2wgYWxsb3df
ZGVjcmVhc2UgPQorICAgICAgIWhhc19kZWNyZWFzZWRfc2luY2VfbGFzdF9sb3NzX3JlcG9ydF8g
JiYKKyAgICAgIChhdF90aW1lIC0gdGltZV9sYXN0X2RlY3JlYXNlXyA+PQorICAgICAgIGxhc3Rf
cm91bmRfdHJpcF90aW1lICsgY29uZmlnXy5kZWNyZWFzZV9pbnRlcnZhbCk7CisKKyAgaWYgKGxv
c3NfZXN0aW1hdGVfZm9yX2luY3JlYXNlIDwgbG9zc19pbmNyZWFzZV90aHJlc2hvbGQpIHsKKyAg
ICAvLyBJbmNyZWFzZSBiaXRyYXRlIGJ5IFJUVC1hZGFwdGl2ZSByYXRpby4KKyAgICBEYXRhUmF0
ZSBuZXdfaW5jcmVhc2VkX2JpdHJhdGUgPQorICAgICAgICBtaW5fYml0cmF0ZSAqIEdldEluY3Jl
YXNlRmFjdG9yKGNvbmZpZ18sIGxhc3Rfcm91bmRfdHJpcF90aW1lKSArCisgICAgICAgIGNvbmZp
Z18uaW5jcmVhc2Vfb2Zmc2V0OworICAgIC8vIFRoZSBiaXRyYXRlIHRoYXQgd291bGQgbWFrZSB0
aGUgbG9zcyAianVzdCBoaWdoIGVub3VnaCIuCisgICAgY29uc3QgRGF0YVJhdGUgbmV3X2luY3Jl
YXNlZF9iaXRyYXRlX2NhcCA9IEJpdHJhdGVGcm9tTG9zcygKKyAgICAgICAgbG9zc19lc3RpbWF0
ZV9mb3JfaW5jcmVhc2UsIGNvbmZpZ18ubG9zc19iYW5kd2lkdGhfYmFsYW5jZV9pbmNyZWFzZSwK
KyAgICAgICAgY29uZmlnXy5sb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2V4cG9uZW50KTsKKyAgICBu
ZXdfaW5jcmVhc2VkX2JpdHJhdGUgPQorICAgICAgICBzdGQ6Om1pbihuZXdfaW5jcmVhc2VkX2Jp
dHJhdGUsIG5ld19pbmNyZWFzZWRfYml0cmF0ZV9jYXApOworICAgIGxvc3NfYmFzZWRfYml0cmF0
ZV8gPSBzdGQ6Om1heChuZXdfaW5jcmVhc2VkX2JpdHJhdGUsIGxvc3NfYmFzZWRfYml0cmF0ZV8p
OworICB9IGVsc2UgaWYgKGxvc3NfZXN0aW1hdGVfZm9yX2RlY3JlYXNlID4gbG9zc19kZWNyZWFz
ZV90aHJlc2hvbGQgJiYKKyAgICAgICAgICAgICBhbGxvd19kZWNyZWFzZSkgeworICAgIERhdGFS
YXRlIG5ld19kZWNyZWFzZWRfYml0cmF0ZSA9CisgICAgICAgIGNvbmZpZ18uZGVjcmVhc2VfZmFj
dG9yICogYWNrbm93bGVkZ2VkX2JpdHJhdGVfbWF4XzsKKyAgICAvLyBUaGUgYml0cmF0ZSB0aGF0
IHdvdWxkIG1ha2UgdGhlIGxvc3MgImp1c3QgYWNjZXB0YWJsZSIuCisgICAgY29uc3QgRGF0YVJh
dGUgbmV3X2RlY3JlYXNlZF9iaXRyYXRlX2Zsb29yID0gQml0cmF0ZUZyb21Mb3NzKAorICAgICAg
ICBsb3NzX2VzdGltYXRlX2Zvcl9kZWNyZWFzZSwgY29uZmlnXy5sb3NzX2JhbmR3aWR0aF9iYWxh
bmNlX2RlY3JlYXNlLAorICAgICAgICBjb25maWdfLmxvc3NfYmFuZHdpZHRoX2JhbGFuY2VfZXhw
b25lbnQpOworICAgIG5ld19kZWNyZWFzZWRfYml0cmF0ZSA9CisgICAgICAgIHN0ZDo6bWF4KG5l
d19kZWNyZWFzZWRfYml0cmF0ZSwgbmV3X2RlY3JlYXNlZF9iaXRyYXRlX2Zsb29yKTsKKyAgICBp
ZiAobmV3X2RlY3JlYXNlZF9iaXRyYXRlIDwgbG9zc19iYXNlZF9iaXRyYXRlXykgeworICAgICAg
dGltZV9sYXN0X2RlY3JlYXNlXyA9IGF0X3RpbWU7CisgICAgICBoYXNfZGVjcmVhc2VkX3NpbmNl
X2xhc3RfbG9zc19yZXBvcnRfID0gdHJ1ZTsKKyAgICAgIGxvc3NfYmFzZWRfYml0cmF0ZV8gPSBu
ZXdfZGVjcmVhc2VkX2JpdHJhdGU7CisgICAgfQorICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2xvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGlt
YXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYml0cmF0ZV9jb250cm9sbGVyL2xvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZjU2MDc2OWJhNDNjNWQ4MjNmZDU2ZmJiYzA4OWU2MjdjOTVlNmY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlv
bi5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1P
RFVMRVNfQklUUkFURV9DT05UUk9MTEVSX0xPU1NfQkFTRURfQkFORFdJRFRIX0VTVElNQVRJT05f
SF8KKyNkZWZpbmUgTU9EVUxFU19CSVRSQVRFX0NPTlRST0xMRVJfTE9TU19CQVNFRF9CQU5EV0lE
VEhfRVNUSU1BVElPTl9IXworCisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYXBpL3Vu
aXRzL2RhdGFfcmF0ZS5oIgorI2luY2x1ZGUgImFwaS91bml0cy90aW1lX2RlbHRhLmgiCisjaW5j
bHVkZSAiYXBpL3VuaXRzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVu
dHMvZmllbGRfdHJpYWxfcGFyc2VyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitzdHJ1Y3Qg
TG9zc0Jhc2VkQ29udHJvbENvbmZpZyB7CisgIExvc3NCYXNlZENvbnRyb2xDb25maWcoKTsKKyAg
TG9zc0Jhc2VkQ29udHJvbENvbmZpZyhjb25zdCBMb3NzQmFzZWRDb250cm9sQ29uZmlnJik7Cisg
IExvc3NCYXNlZENvbnRyb2xDb25maWcmIG9wZXJhdG9yPShjb25zdCBMb3NzQmFzZWRDb250cm9s
Q29uZmlnJikgPSBkZWZhdWx0OworICB+TG9zc0Jhc2VkQ29udHJvbENvbmZpZygpOworICBib29s
IGVuYWJsZWQ7CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8ZG91YmxlPiBtaW5faW5jcmVhc2VfZmFj
dG9yOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPGRvdWJsZT4gbWF4X2luY3JlYXNlX2ZhY3RvcjsK
KyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+IGluY3JlYXNlX2xvd19ydHQ7CisgIEZp
ZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiBpbmNyZWFzZV9oaWdoX3J0dDsKKyAgRmllbGRU
cmlhbFBhcmFtZXRlcjxkb3VibGU+IGRlY3JlYXNlX2ZhY3RvcjsKKyAgRmllbGRUcmlhbFBhcmFt
ZXRlcjxUaW1lRGVsdGE+IGxvc3Nfd2luZG93OworICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVE
ZWx0YT4gbG9zc19tYXhfd2luZG93OworICBGaWVsZFRyaWFsUGFyYW1ldGVyPFRpbWVEZWx0YT4g
YWNrbm93bGVkZ2VkX3JhdGVfbWF4X3dpbmRvdzsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxEYXRh
UmF0ZT4gaW5jcmVhc2Vfb2Zmc2V0OworICBGaWVsZFRyaWFsUGFyYW1ldGVyPERhdGFSYXRlPiBs
b3NzX2JhbmR3aWR0aF9iYWxhbmNlX2luY3JlYXNlOworICBGaWVsZFRyaWFsUGFyYW1ldGVyPERh
dGFSYXRlPiBsb3NzX2JhbmR3aWR0aF9iYWxhbmNlX2RlY3JlYXNlOworICBGaWVsZFRyaWFsUGFy
YW1ldGVyPGRvdWJsZT4gbG9zc19iYW5kd2lkdGhfYmFsYW5jZV9leHBvbmVudDsKKyAgRmllbGRU
cmlhbFBhcmFtZXRlcjxib29sPiBhbGxvd19yZXNldHM7CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8
VGltZURlbHRhPiBkZWNyZWFzZV9pbnRlcnZhbDsKKyAgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1l
RGVsdGE+IGxvc3NfcmVwb3J0X3RpbWVvdXQ7Cit9OworCitjbGFzcyBMb3NzQmFzZWRCYW5kd2lk
dGhFc3RpbWF0aW9uIHsKKyBwdWJsaWM6CisgIExvc3NCYXNlZEJhbmR3aWR0aEVzdGltYXRpb24o
KTsKKyAgdm9pZCBVcGRhdGUoVGltZXN0YW1wIGF0X3RpbWUsCisgICAgICAgICAgICAgIERhdGFS
YXRlIG1pbl9iaXRyYXRlLAorICAgICAgICAgICAgICBUaW1lRGVsdGEgbGFzdF9yb3VuZF90cmlw
X3RpbWUpOworICB2b2lkIFVwZGF0ZUFja25vd2xlZGdlZEJpdHJhdGUoRGF0YVJhdGUgYWNrbm93
bGVkZ2VkX2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3Rh
bXAgYXRfdGltZSk7CisgIHZvaWQgTWF5YmVSZXNldChEYXRhUmF0ZSBiaXRyYXRlKSB7CisgICAg
aWYgKGNvbmZpZ18uYWxsb3dfcmVzZXRzKQorICAgICAgbG9zc19iYXNlZF9iaXRyYXRlXyA9IGJp
dHJhdGU7CisgIH0KKyAgdm9pZCBTZXRJbml0aWFsQml0cmF0ZShEYXRhUmF0ZSBiaXRyYXRlKSB7
IGxvc3NfYmFzZWRfYml0cmF0ZV8gPSBiaXRyYXRlOyB9CisgIGJvb2wgRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIGNvbmZpZ18uZW5hYmxlZDsgfQorICB2b2lkIFVwZGF0ZUxvc3NTdGF0aXN0aWNz
KGNvbnN0IHN0ZDo6dmVjdG9yPFBhY2tldFJlc3VsdD4mIHBhY2tldF9yZXN1bHRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgRGF0YVJhdGUgR2V0
RXN0aW1hdGUoKSBjb25zdCB7IHJldHVybiBsb3NzX2Jhc2VkX2JpdHJhdGVfOyB9CisKKyBwcml2
YXRlOgorICBMb3NzQmFzZWRDb250cm9sQ29uZmlnIGNvbmZpZ187CisgIGRvdWJsZSBhdmVyYWdl
X2xvc3NfOworICBkb3VibGUgYXZlcmFnZV9sb3NzX21heF87CisgIERhdGFSYXRlIGxvc3NfYmFz
ZWRfYml0cmF0ZV87CisgIERhdGFSYXRlIGFja25vd2xlZGdlZF9iaXRyYXRlX21heF87CisgIFRp
bWVzdGFtcCBhY2tub3dsZWRnZWRfYml0cmF0ZV9sYXN0X3VwZGF0ZV87CisgIFRpbWVzdGFtcCB0
aW1lX2xhc3RfZGVjcmVhc2VfOworICBib29sIGhhc19kZWNyZWFzZWRfc2luY2VfbGFzdF9sb3Nz
X3JlcG9ydF87CisgIFRpbWVzdGFtcCBsYXN0X2xvc3NfcGFja2V0X3JlcG9ydF87CisgIGRvdWJs
ZSBsYXN0X2xvc3NfcmF0aW9fOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5k
aWYgIC8vIE1PRFVMRVNfQklUUkFURV9DT05UUk9MTEVSX0xPU1NfQkFTRURfQkFORFdJRFRIX0VT
VElNQVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRfc2lkZV9iYW5kd2lkdGhf
ZXN0aW1hdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL3NlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlv
bi5jYwppbmRleCBjYzEwOGE5NWIwOGZjYjlmNTkzNzY0MjFlMDYyZjZlNDE1NWI4MmQxLi4zOTRj
MTQ3NDdiN2FjYjJhZDAxNGE1NDAwNWQ0OGE1NTdmMDNiNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2JpdHJhdGVfY29udHJv
bGxlci9zZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24uY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIv
c2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjCkBAIC0xMSwxMiArMTEsMTIgQEAKICNp
bmNsdWRlICJtb2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVfYmFuZHdpZHRoX2Vz
dGltYXRpb24uaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjbWF0aD4KICNp
bmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmluZz4KIAog
I2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2
ZW50X2xvZy9ldmVudHMvcnRjX2V2ZW50LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRf
bG9nL2V2ZW50cy9ydGNfZXZlbnRfYndlX3VwZGF0ZV9sb3NzX2Jhc2VkLmgiCiAjaW5jbHVkZSAi
bG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVzLmgiCkBAIC0xMDQs
NiArMTA0LDgzIEBAIGJvb2wgUmVhZEJ3ZUxvc3NFeHBlcmltZW50UGFyYW1ldGVycyhmbG9hdCog
bG93X2xvc3NfdGhyZXNob2xkLAogfQogfSAgLy8gbmFtZXNwYWNlCiAKK0xpbmtDYXBhY2l0eVRy
YWNrZXI6OkxpbmtDYXBhY2l0eVRyYWNrZXIoKQorICAgIDogdHJhY2tpbmdfcmF0ZSgicmF0ZSIs
IFRpbWVEZWx0YTo6c2Vjb25kcygxMCkpIHsKKyAgUGFyc2VGaWVsZFRyaWFsKHsmdHJhY2tpbmdf
cmF0ZX0sCisgICAgICAgICAgICAgICAgICBmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJXZWJS
VEMtQndlLUxpbmtDYXBhY2l0eSIpKTsKK30KKworTGlua0NhcGFjaXR5VHJhY2tlcjo6fkxpbmtD
YXBhY2l0eVRyYWNrZXIoKSB7fQorCit2b2lkIExpbmtDYXBhY2l0eVRyYWNrZXI6Ok9uT3ZlcnVz
ZShEYXRhUmF0ZSBhY2tub3dsZWRnZWRfcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CisgIGNhcGFjaXR5X2VzdGltYXRlX2Jwc18g
PQorICAgICAgc3RkOjptaW4oY2FwYWNpdHlfZXN0aW1hdGVfYnBzXywgYWNrbm93bGVkZ2VkX3Jh
dGUuYnBzPGRvdWJsZT4oKSk7CisgIGxhc3RfbGlua19jYXBhY2l0eV91cGRhdGVfID0gYXRfdGlt
ZTsKK30KKwordm9pZCBMaW5rQ2FwYWNpdHlUcmFja2VyOjpPblN0YXJ0aW5nUmF0ZShEYXRhUmF0
ZSBzdGFydF9yYXRlKSB7CisgIGlmIChsYXN0X2xpbmtfY2FwYWNpdHlfdXBkYXRlXy5Jc0luZmlu
aXRlKCkpCisgICAgY2FwYWNpdHlfZXN0aW1hdGVfYnBzXyA9IHN0YXJ0X3JhdGUuYnBzPGRvdWJs
ZT4oKTsKK30KKwordm9pZCBMaW5rQ2FwYWNpdHlUcmFja2VyOjpPblJhdGVVcGRhdGUoRGF0YVJh
dGUgYWNrbm93bGVkZ2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGltZXN0YW1wIGF0X3RpbWUpIHsKKyAgaWYgKGFja25vd2xlZGdlZC5icHMoKSA+IGNhcGFjaXR5
X2VzdGltYXRlX2Jwc18pIHsKKyAgICBUaW1lRGVsdGEgZGVsdGEgPSBhdF90aW1lIC0gbGFzdF9s
aW5rX2NhcGFjaXR5X3VwZGF0ZV87CisgICAgZG91YmxlIGFscGhhID0gZGVsdGEuSXNGaW5pdGUo
KSA/IGV4cCgtKGRlbHRhIC8gdHJhY2tpbmdfcmF0ZS5HZXQoKSkpIDogMDsKKyAgICBjYXBhY2l0
eV9lc3RpbWF0ZV9icHNfID0gYWxwaGEgKiBjYXBhY2l0eV9lc3RpbWF0ZV9icHNfICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKDEgLSBhbHBoYSkgKiBhY2tub3dsZWRnZWQuYnBzPGRv
dWJsZT4oKTsKKyAgfQorICBsYXN0X2xpbmtfY2FwYWNpdHlfdXBkYXRlXyA9IGF0X3RpbWU7Cit9
CisKK3ZvaWQgTGlua0NhcGFjaXR5VHJhY2tlcjo6T25SdHRCYWNrb2ZmKERhdGFSYXRlIGJhY2tv
ZmZfcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFt
cCBhdF90aW1lKSB7CisgIGNhcGFjaXR5X2VzdGltYXRlX2Jwc18gPQorICAgICAgc3RkOjptaW4o
Y2FwYWNpdHlfZXN0aW1hdGVfYnBzXywgYmFja29mZl9yYXRlLmJwczxkb3VibGU+KCkpOworICBs
YXN0X2xpbmtfY2FwYWNpdHlfdXBkYXRlXyA9IGF0X3RpbWU7Cit9CisKK0RhdGFSYXRlIExpbmtD
YXBhY2l0eVRyYWNrZXI6OmVzdGltYXRlKCkgY29uc3QgeworICByZXR1cm4gRGF0YVJhdGU6OmJw
cyhjYXBhY2l0eV9lc3RpbWF0ZV9icHNfKTsKK30KKworUnR0QmFzZWRCYWNrb2ZmOjpSdHRCYXNl
ZEJhY2tvZmYoKQorICAgIDogcnR0X2xpbWl0XygibGltaXQiLCBUaW1lRGVsdGE6OlBsdXNJbmZp
bml0eSgpKSwKKyAgICAgIGRyb3BfZnJhY3Rpb25fKCJmcmFjdGlvbiIsIDAuNSksCisgICAgICBk
cm9wX2ludGVydmFsXygiaW50ZXJ2YWwiLCBUaW1lRGVsdGE6Om1zKDMwMCkpLAorICAgICAgcGVy
c2lzdF9vbl9yb3V0ZV9jaGFuZ2VfKCJwZXJzaXN0IiksCisgICAgICAvLyBCeSBpbml0aWFsaXpp
bmcgdGhpcyB0byBwbHVzIGluZmluaXR5LCB3ZSBtYWtlIHN1cmUgdGhhdCB3ZSBuZXZlcgorICAg
ICAgLy8gdHJpZ2dlciBydHQgYmFja29mZiB1bmxlc3MgcGFja2V0IGZlZWRiYWNrIGlzIGVuYWJs
ZWQuCisgICAgICBsYXN0X3Byb3BhZ2F0aW9uX3J0dF91cGRhdGVfKFRpbWVzdGFtcDo6UGx1c0lu
ZmluaXR5KCkpLAorICAgICAgbGFzdF9wcm9wYWdhdGlvbl9ydHRfKFRpbWVEZWx0YTo6WmVybygp
KSB7CisgIFBhcnNlRmllbGRUcmlhbCh7JnJ0dF9saW1pdF8sICZkcm9wX2ZyYWN0aW9uXywgJmRy
b3BfaW50ZXJ2YWxfLAorICAgICAgICAgICAgICAgICAgICZwZXJzaXN0X29uX3JvdXRlX2NoYW5n
ZV99LAorICAgICAgICAgICAgICAgICAgZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZSgiV2ViUlRD
LUJ3ZS1NYXhSdHRMaW1pdCIpKTsKK30KKwordm9pZCBSdHRCYXNlZEJhY2tvZmY6Ok9uUm91dGVD
aGFuZ2UoKSB7CisgIGlmICghcGVyc2lzdF9vbl9yb3V0ZV9jaGFuZ2VfKSB7CisgICAgbGFzdF9w
cm9wYWdhdGlvbl9ydHRfdXBkYXRlXyA9IFRpbWVzdGFtcDo6UGx1c0luZmluaXR5KCk7CisgICAg
bGFzdF9wcm9wYWdhdGlvbl9ydHRfID0gVGltZURlbHRhOjpaZXJvKCk7CisgIH0KK30KKwordm9p
ZCBSdHRCYXNlZEJhY2tvZmY6OlVwZGF0ZVByb3BhZ2F0aW9uUnR0KFRpbWVzdGFtcCBhdF90aW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVEZWx0YSBw
cm9wYWdhdGlvbl9ydHQpIHsKKyAgbGFzdF9wcm9wYWdhdGlvbl9ydHRfdXBkYXRlXyA9IGF0X3Rp
bWU7CisgIGxhc3RfcHJvcGFnYXRpb25fcnR0XyA9IHByb3BhZ2F0aW9uX3J0dDsKK30KKworVGlt
ZURlbHRhIFJ0dEJhc2VkQmFja29mZjo6UnR0TG93ZXJCb3VuZChUaW1lc3RhbXAgYXRfdGltZSkg
Y29uc3QgeworICAvLyBUT0RPKHNydGUpOiBVc2UgdGltZSBzaW5jZSBsYXN0IHVuYWNrbm93bGVk
Z2VkIHBhY2tldCBmb3IgdGhpcy4KKyAgVGltZURlbHRhIHRpbWVfc2luY2VfcnR0ID0gYXRfdGlt
ZSAtIGxhc3RfcHJvcGFnYXRpb25fcnR0X3VwZGF0ZV87CisgIHJldHVybiB0aW1lX3NpbmNlX3J0
dCArIGxhc3RfcHJvcGFnYXRpb25fcnR0XzsKK30KKworUnR0QmFzZWRCYWNrb2ZmOjp+UnR0QmFz
ZWRCYWNrb2ZmKCkgPSBkZWZhdWx0OworCiBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlNl
bmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbihSdGNFdmVudExvZyogZXZlbnRfbG9nKQogICAgIDog
bG9zdF9wYWNrZXRzX3NpbmNlX2xhc3RfbG9zc191cGRhdGVfKDApLAogICAgICAgZXhwZWN0ZWRf
cGFja2V0c19zaW5jZV9sYXN0X2xvc3NfdXBkYXRlXygwKSwKQEAgLTE1MSwxNCArMjI4LDQ0IEBA
IFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6U2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9u
KFJ0Y0V2ZW50TG9nKiBldmVudF9sb2cpCiAKIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6
flNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbigpIHt9CiAKK3ZvaWQgU2VuZFNpZGVCYW5kd2lk
dGhFc3RpbWF0aW9uOjpPblJvdXRlQ2hhbmdlKCkgeworICBsb3N0X3BhY2tldHNfc2luY2VfbGFz
dF9sb3NzX3VwZGF0ZV8gPSAwOworICBleHBlY3RlZF9wYWNrZXRzX3NpbmNlX2xhc3RfbG9zc191
cGRhdGVfID0gMDsKKyAgY3VycmVudF9iaXRyYXRlXyA9IERhdGFSYXRlOjpaZXJvKCk7CisgIG1p
bl9iaXRyYXRlX2NvbmZpZ3VyZWRfID0KKyAgICAgIERhdGFSYXRlOjpicHMoY29uZ2VzdGlvbl9j
b250cm9sbGVyOjpHZXRNaW5CaXRyYXRlQnBzKCkpOworICBtYXhfYml0cmF0ZV9jb25maWd1cmVk
XyA9IGtEZWZhdWx0TWF4Qml0cmF0ZTsKKyAgbGFzdF9sb3dfYml0cmF0ZV9sb2dfID0gVGltZXN0
YW1wOjpNaW51c0luZmluaXR5KCk7CisgIGhhc19kZWNyZWFzZWRfc2luY2VfbGFzdF9mcmFjdGlv
bl9sb3NzXyA9IGZhbHNlOworICBsYXN0X2xvc3NfZmVlZGJhY2tfID0gVGltZXN0YW1wOjpNaW51
c0luZmluaXR5KCk7CisgIGxhc3RfbG9zc19wYWNrZXRfcmVwb3J0XyA9IFRpbWVzdGFtcDo6TWlu
dXNJbmZpbml0eSgpOworICBsYXN0X3RpbWVvdXRfID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5
KCk7CisgIGxhc3RfZnJhY3Rpb25fbG9zc18gPSAwOworICBsYXN0X2xvZ2dlZF9mcmFjdGlvbl9s
b3NzXyA9IDA7CisgIGxhc3Rfcm91bmRfdHJpcF90aW1lXyA9IFRpbWVEZWx0YTo6WmVybygpOwor
ICBid2VfaW5jb21pbmdfID0gRGF0YVJhdGU6Olplcm8oKTsKKyAgZGVsYXlfYmFzZWRfYml0cmF0
ZV8gPSBEYXRhUmF0ZTo6WmVybygpOworICB0aW1lX2xhc3RfZGVjcmVhc2VfID0gVGltZXN0YW1w
OjpNaW51c0luZmluaXR5KCk7CisgIGZpcnN0X3JlcG9ydF90aW1lXyA9IFRpbWVzdGFtcDo6TWlu
dXNJbmZpbml0eSgpOworICBpbml0aWFsbHlfbG9zdF9wYWNrZXRzXyA9IDA7CisgIGJpdHJhdGVf
YXRfMl9zZWNvbmRzXyA9IERhdGFSYXRlOjpaZXJvKCk7CisgIHVtYV91cGRhdGVfc3RhdGVfID0g
a05vVXBkYXRlOworICB1bWFfcnR0X3N0YXRlXyA9IGtOb1VwZGF0ZTsKKyAgbGFzdF9ydGNfZXZl
bnRfbG9nXyA9IFRpbWVzdGFtcDo6TWludXNJbmZpbml0eSgpOworCisgIHJ0dF9iYWNrb2ZmXy5P
blJvdXRlQ2hhbmdlKCk7Cit9CisKIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpT
ZXRCaXRyYXRlcygKICAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gc2VuZF9iaXRyYXRlLAog
ICAgIERhdGFSYXRlIG1pbl9iaXRyYXRlLAogICAgIERhdGFSYXRlIG1heF9iaXRyYXRlLAogICAg
IFRpbWVzdGFtcCBhdF90aW1lKSB7CiAgIFNldE1pbk1heEJpdHJhdGUobWluX2JpdHJhdGUsIG1h
eF9iaXRyYXRlKTsKLSAgaWYgKHNlbmRfYml0cmF0ZSkKKyAgaWYgKHNlbmRfYml0cmF0ZSkgewor
ICAgIGxpbmtfY2FwYWNpdHlfLk9uU3RhcnRpbmdSYXRlKCpzZW5kX2JpdHJhdGUpOwogICAgIFNl
dFNlbmRCaXRyYXRlKCpzZW5kX2JpdHJhdGUsIGF0X3RpbWUpOworICB9CiB9CiAKIHZvaWQgU2Vu
ZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpTZXRTZW5kQml0cmF0ZShEYXRhUmF0ZSBiaXRyYXRl
LApAQCAtMTY2LDYgKzI3Myw5IEBAIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpT
ZXRTZW5kQml0cmF0ZShEYXRhUmF0ZSBiaXRyYXRlLAogICBSVENfRENIRUNLKGJpdHJhdGUgPiBE
YXRhUmF0ZTo6WmVybygpKTsKICAgLy8gUmVzZXQgdG8gYXZvaWQgYmVpbmcgY2FwcGVkIGJ5IHRo
ZSBlc3RpbWF0ZS4KICAgZGVsYXlfYmFzZWRfYml0cmF0ZV8gPSBEYXRhUmF0ZTo6WmVybygpOwor
ICBpZiAobG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uRW5hYmxlZCgpKSB7CisgICAg
bG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uTWF5YmVSZXNldChiaXRyYXRlKTsKKyAg
fQogICBDYXBCaXRyYXRlVG9UaHJlc2hvbGRzKGF0X3RpbWUsIGJpdHJhdGUpOwogICAvLyBDbGVh
ciBsYXN0IHNlbnQgYml0cmF0ZSBoaXN0b3J5IHNvIHRoZSBuZXcgdmFsdWUgY2FuIGJlIHVzZWQg
ZGlyZWN0bHkKICAgLy8gYW5kIG5vdCBjYXBwZWQuCkBAIC0xOTUsNiArMzA1LDEwIEBAIHZvaWQg
U2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpDdXJyZW50RXN0aW1hdGUoaW50KiBiaXRyYXRl
LAogICAqcnR0ID0gbGFzdF9yb3VuZF90cmlwX3RpbWVfLm1zPGludDY0X3Q+KCk7CiB9CiAKK0Rh
dGFSYXRlIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6R2V0RXN0aW1hdGVkTGlua0NhcGFj
aXR5KCkgY29uc3QgeworICByZXR1cm4gbGlua19jYXBhY2l0eV8uZXN0aW1hdGUoKTsKK30KKwog
dm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZVJlY2VpdmVyRXN0aW1hdGUo
VGltZXN0YW1wIGF0X3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSBiYW5kd2lkdGgpIHsKICAgYndlX2luY29taW5n
XyA9IGJhbmR3aWR0aDsKQEAgLTIwMywxMCArMzE3LDMzIEBAIHZvaWQgU2VuZFNpZGVCYW5kd2lk
dGhFc3RpbWF0aW9uOjpVcGRhdGVSZWNlaXZlckVzdGltYXRlKFRpbWVzdGFtcCBhdF90aW1lLAog
CiB2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6VXBkYXRlRGVsYXlCYXNlZEVzdGlt
YXRlKFRpbWVzdGFtcCBhdF90aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSBiaXRyYXRlKSB7CisgIGlmIChhY2tu
b3dsZWRnZWRfcmF0ZV8pIHsKKyAgICBpZiAoYml0cmF0ZSA8IGRlbGF5X2Jhc2VkX2JpdHJhdGVf
KSB7CisgICAgICBsaW5rX2NhcGFjaXR5Xy5Pbk92ZXJ1c2UoKmFja25vd2xlZGdlZF9yYXRlXywg
YXRfdGltZSk7CisgICAgfQorICB9CiAgIGRlbGF5X2Jhc2VkX2JpdHJhdGVfID0gYml0cmF0ZTsK
ICAgQ2FwQml0cmF0ZVRvVGhyZXNob2xkcyhhdF90aW1lLCBjdXJyZW50X2JpdHJhdGVfKTsKIH0K
IAordm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlNldEFja25vd2xlZGdlZFJhdGUo
CisgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGFja25vd2xlZGdlZF9yYXRlLAorICAgIFRp
bWVzdGFtcCBhdF90aW1lKSB7CisgIGFja25vd2xlZGdlZF9yYXRlXyA9IGFja25vd2xlZGdlZF9y
YXRlOworICBpZiAoYWNrbm93bGVkZ2VkX3JhdGUgJiYgbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0
aW1hdGlvbl8uRW5hYmxlZCgpKSB7CisgICAgbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlv
bl8uVXBkYXRlQWNrbm93bGVkZ2VkQml0cmF0ZSgKKyAgICAgICAgKmFja25vd2xlZGdlZF9yYXRl
LCBhdF90aW1lKTsKKyAgfQorfQorCit2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6
SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKKyAgICBjb25zdCBUcmFuc3BvcnRQYWNrZXRz
RmVlZGJhY2smIHJlcG9ydCkgeworICBpZiAobG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlv
bl8uRW5hYmxlZCgpKSB7CisgICAgbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uVXBk
YXRlTG9zc1N0YXRpc3RpY3MoCisgICAgICAgIHJlcG9ydC5wYWNrZXRfZmVlZGJhY2tzLCByZXBv
cnQuZmVlZGJhY2tfdGltZSk7CisgIH0KK30KKwogdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGlt
YXRpb246OlVwZGF0ZVJlY2VpdmVyQmxvY2sodWludDhfdCBmcmFjdGlvbl9sb3NzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZURlbHRh
IHJ0dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBudW1iZXJfb2ZfcGFja2V0cywKQEAgLTI5NSwxMSArNDMyLDI0IEBAIHZvaWQgU2Vu
ZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpVcGRhdGVSdHQoVGltZURlbHRhIHJ0dCwgVGltZXN0
YW1wIGF0X3RpbWUpIHsKIAogdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVwZGF0
ZUVzdGltYXRlKFRpbWVzdGFtcCBhdF90aW1lKSB7CiAgIERhdGFSYXRlIG5ld19iaXRyYXRlID0g
Y3VycmVudF9iaXRyYXRlXzsKKyAgaWYgKHJ0dF9iYWNrb2ZmXy5SdHRMb3dlckJvdW5kKGF0X3Rp
bWUpID4gcnR0X2JhY2tvZmZfLnJ0dF9saW1pdF8pIHsKKyAgICBpZiAoYXRfdGltZSAtIHRpbWVf
bGFzdF9kZWNyZWFzZV8gPj0gcnR0X2JhY2tvZmZfLmRyb3BfaW50ZXJ2YWxfKSB7CisgICAgICB0
aW1lX2xhc3RfZGVjcmVhc2VfID0gYXRfdGltZTsKKyAgICAgIG5ld19iaXRyYXRlID0gY3VycmVu
dF9iaXRyYXRlXyAqIHJ0dF9iYWNrb2ZmXy5kcm9wX2ZyYWN0aW9uXzsKKyAgICAgIGxpbmtfY2Fw
YWNpdHlfLk9uUnR0QmFja29mZihuZXdfYml0cmF0ZSwgYXRfdGltZSk7CisgICAgfQorICAgIENh
cEJpdHJhdGVUb1RocmVzaG9sZHMoYXRfdGltZSwgbmV3X2JpdHJhdGUpOworICAgIHJldHVybjsK
KyAgfQorCiAgIC8vIFdlIHRydXN0IHRoZSBSRU1CIGFuZC9vciBkZWxheS1iYXNlZCBlc3RpbWF0
ZSBkdXJpbmcgdGhlIGZpcnN0IDIgc2Vjb25kcyBpZgogICAvLyB3ZSBoYXZlbid0IGhhZCBhbnkg
cGFja2V0IGxvc3MgcmVwb3J0ZWQsIHRvIGFsbG93IHN0YXJ0dXAgYml0cmF0ZSBwcm9iaW5nLgog
ICBpZiAobGFzdF9mcmFjdGlvbl9sb3NzXyA9PSAwICYmIElzSW5TdGFydFBoYXNlKGF0X3RpbWUp
KSB7CiAgICAgbmV3X2JpdHJhdGUgPSBzdGQ6Om1heChid2VfaW5jb21pbmdfLCBuZXdfYml0cmF0
ZSk7CiAgICAgbmV3X2JpdHJhdGUgPSBzdGQ6Om1heChkZWxheV9iYXNlZF9iaXRyYXRlXywgbmV3
X2JpdHJhdGUpOworICAgIGlmIChsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5FbmFi
bGVkKCkpIHsKKyAgICAgIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb25fLlNldEluaXRp
YWxCaXRyYXRlKG5ld19iaXRyYXRlKTsKKyAgICB9CiAKICAgICBpZiAobmV3X2JpdHJhdGUgIT0g
Y3VycmVudF9iaXRyYXRlXykgewogICAgICAgbWluX2JpdHJhdGVfaGlzdG9yeV8uY2xlYXIoKTsK
QEAgLTMxNCw2ICs0NjQsMTUgQEAgdm9pZCBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246OlVw
ZGF0ZUVzdGltYXRlKFRpbWVzdGFtcCBhdF90aW1lKSB7CiAgICAgQ2FwQml0cmF0ZVRvVGhyZXNo
b2xkcyhhdF90aW1lLCBjdXJyZW50X2JpdHJhdGVfKTsKICAgICByZXR1cm47CiAgIH0KKworICBp
ZiAobG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uRW5hYmxlZCgpKSB7CisgICAgbG9z
c19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbl8uVXBkYXRlKAorICAgICAgICBhdF90aW1lLCBt
aW5fYml0cmF0ZV9oaXN0b3J5Xy5mcm9udCgpLnNlY29uZCwgbGFzdF9yb3VuZF90cmlwX3RpbWVf
KTsKKyAgICBuZXdfYml0cmF0ZSA9IE1heWJlUmFtcHVwT3JCYWNrb2ZmKG5ld19iaXRyYXRlLCBh
dF90aW1lKTsKKyAgICBDYXBCaXRyYXRlVG9UaHJlc2hvbGRzKGF0X3RpbWUsIG5ld19iaXRyYXRl
KTsKKyAgICByZXR1cm47CisgIH0KKwogICBUaW1lRGVsdGEgdGltZV9zaW5jZV9sb3NzX3BhY2tl
dF9yZXBvcnQgPSBhdF90aW1lIC0gbGFzdF9sb3NzX3BhY2tldF9yZXBvcnRfOwogICBUaW1lRGVs
dGEgdGltZV9zaW5jZV9sb3NzX2ZlZWRiYWNrID0gYXRfdGltZSAtIGxhc3RfbG9zc19mZWVkYmFj
a187CiAgIGlmICh0aW1lX3NpbmNlX2xvc3NfcGFja2V0X3JlcG9ydCA8IDEuMiAqIGtNYXhSdGNw
RmVlZGJhY2tJbnRlcnZhbCkgewpAQCAtMzI4LDcgKzQ4Nyw3IEBAIHZvaWQgU2VuZFNpZGVCYW5k
d2lkdGhFc3RpbWF0aW9uOjpVcGRhdGVFc3RpbWF0ZShUaW1lc3RhbXAgYXRfdGltZSkgewogICAg
ICAgLy8gTm90ZSB0aGF0IGJ5IHJlbWVtYmVyaW5nIHRoZSBiaXRyYXRlIG92ZXIgdGhlIGxhc3Qg
c2Vjb25kIG9uZSBjYW4KICAgICAgIC8vIHJhbXB1cCB1cCBvbmUgc2Vjb25kIGZhc3RlciB0aGFu
IGlmIG9ubHkgYWxsb3dlZCB0byBzdGFydCByYW1waW5nCiAgICAgICAvLyBhdCA4JSBwZXIgc2Vj
b25kIHJhdGUgbm93LiBFLmcuOgotICAgICAgLy8gICBJZiBzZW5kaW5nIGEgY29uc3RhbnQgMTAw
a2JwcyBpdCBjYW4gcmFtcHVwIGltbWVkaWF0bHkgdG8gMTA4a2JwcworICAgICAgLy8gICBJZiBz
ZW5kaW5nIGEgY29uc3RhbnQgMTAwa2JwcyBpdCBjYW4gcmFtcHVwIGltbWVkaWF0ZWx5IHRvIDEw
OGticHMKICAgICAgIC8vICAgd2hlbmV2ZXIgYSByZWNlaXZlciByZXBvcnQgaXMgcmVjZWl2ZWQg
d2l0aCBsb3dlciBwYWNrZXQgbG9zcy4KICAgICAgIC8vICAgSWYgaW5zdGVhZCBvbmUgd291bGQg
ZG86IGN1cnJlbnRfYml0cmF0ZV8gKj0gMS4wOF4oZGVsdGEgdGltZSksCiAgICAgICAvLyAgIGl0
IHdvdWxkIHRha2Ugb3ZlciBvbmUgc2Vjb25kIHNpbmNlIHRoZSBsb3dlciBwYWNrZXQgbG9zcyB0
byBhY2hpZXZlCkBAIC0zODIsNiArNTQxLDEyIEBAIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3Rp
bWF0aW9uOjpVcGRhdGVFc3RpbWF0ZShUaW1lc3RhbXAgYXRfdGltZSkgewogICBDYXBCaXRyYXRl
VG9UaHJlc2hvbGRzKGF0X3RpbWUsIG5ld19iaXRyYXRlKTsKIH0KIAordm9pZCBTZW5kU2lkZUJh
bmR3aWR0aEVzdGltYXRpb246OlVwZGF0ZVByb3BhZ2F0aW9uUnR0KAorICAgIFRpbWVzdGFtcCBh
dF90aW1lLAorICAgIFRpbWVEZWx0YSBwcm9wYWdhdGlvbl9ydHQpIHsKKyAgcnR0X2JhY2tvZmZf
LlVwZGF0ZVByb3BhZ2F0aW9uUnR0KGF0X3RpbWUsIHByb3BhZ2F0aW9uX3J0dCk7Cit9CisKIGJv
b2wgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpJc0luU3RhcnRQaGFzZShUaW1lc3RhbXAg
YXRfdGltZSkgY29uc3QgewogICByZXR1cm4gZmlyc3RfcmVwb3J0X3RpbWVfLklzSW5maW5pdGUo
KSB8fAogICAgICAgICAgYXRfdGltZSAtIGZpcnN0X3JlcG9ydF90aW1lXyA8IGtTdGFydFBoYXNl
OwpAQCAtNDA3LDYgKzU3MiwzNSBAQCB2b2lkIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6
VXBkYXRlTWluSGlzdG9yeShUaW1lc3RhbXAgYXRfdGltZSkgewogICBtaW5fYml0cmF0ZV9oaXN0
b3J5Xy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXRfdGltZSwgY3VycmVudF9iaXRyYXRlXykp
OwogfQogCitEYXRhUmF0ZSBTZW5kU2lkZUJhbmR3aWR0aEVzdGltYXRpb246Ok1heWJlUmFtcHVw
T3JCYWNrb2ZmKERhdGFSYXRlIG5ld19iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSkgewor
ICAvLyBUT0RPKGNyb2Ricm8pOiByZXVzZSB0aGlzIGNvZGUgaW4gVXBkYXRlRXN0aW1hdGUgaW5z
dGVhZCBvZiBjdXJyZW50CisgIC8vIGlubGluaW5nIG9mIHZlcnkgc2ltaWxhciBmdW5jdGlvbmFs
aXR5LgorICBjb25zdCBUaW1lRGVsdGEgdGltZV9zaW5jZV9sb3NzX3BhY2tldF9yZXBvcnQgPQor
ICAgICAgYXRfdGltZSAtIGxhc3RfbG9zc19wYWNrZXRfcmVwb3J0XzsKKyAgY29uc3QgVGltZURl
bHRhIHRpbWVfc2luY2VfbG9zc19mZWVkYmFjayA9IGF0X3RpbWUgLSBsYXN0X2xvc3NfZmVlZGJh
Y2tfOworICBpZiAodGltZV9zaW5jZV9sb3NzX3BhY2tldF9yZXBvcnQgPCAxLjIgKiBrTWF4UnRj
cEZlZWRiYWNrSW50ZXJ2YWwpIHsKKyAgICBuZXdfYml0cmF0ZSA9IG1pbl9iaXRyYXRlX2hpc3Rv
cnlfLmZyb250KCkuc2Vjb25kICogMS4wODsKKyAgICBuZXdfYml0cmF0ZSArPSBEYXRhUmF0ZTo6
YnBzKDEwMDApOworICB9IGVsc2UgaWYgKHRpbWVfc2luY2VfbG9zc19mZWVkYmFjayA+CisgICAg
ICAgICAgICAgICAgIGtGZWVkYmFja1RpbWVvdXRJbnRlcnZhbHMgKiBrTWF4UnRjcEZlZWRiYWNr
SW50ZXJ2YWwgJiYKKyAgICAgICAgICAgICAobGFzdF90aW1lb3V0Xy5Jc0luZmluaXRlKCkgfHwK
KyAgICAgICAgICAgICAgYXRfdGltZSAtIGxhc3RfdGltZW91dF8gPiBrVGltZW91dEludGVydmFs
KSkgeworICAgIGlmIChpbl90aW1lb3V0X2V4cGVyaW1lbnRfKSB7CisgICAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJGZWVkYmFjayB0aW1lZCBvdXQgKCIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgVG9TdHJpbmcodGltZV9zaW5jZV9sb3NzX2ZlZWRiYWNrKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCAiKSwgcmVkdWNpbmcgYml0cmF0ZS4iOworICAgICAgbmV3X2JpdHJh
dGUgPSBuZXdfYml0cmF0ZSAqIDAuODsKKyAgICAgIC8vIFJlc2V0IGFjY3VtdWxhdG9ycyBzaW5j
ZSB3ZSd2ZSBhbHJlYWR5IGFjdGVkIG9uIG1pc3NpbmcgZmVlZGJhY2sgYW5kCisgICAgICAvLyBz
aG91bGRuJ3QgdG8gYWN0IGFnYWluIG9uIHRoZXNlIG9sZCBsb3N0IHBhY2tldHMuCisgICAgICBs
b3N0X3BhY2tldHNfc2luY2VfbGFzdF9sb3NzX3VwZGF0ZV8gPSAwOworICAgICAgZXhwZWN0ZWRf
cGFja2V0c19zaW5jZV9sYXN0X2xvc3NfdXBkYXRlXyA9IDA7CisgICAgICBsYXN0X3RpbWVvdXRf
ID0gYXRfdGltZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIG5ld19iaXRyYXRlOworfQorCiB2b2lk
IFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbjo6Q2FwQml0cmF0ZVRvVGhyZXNob2xkcyhUaW1l
c3RhbXAgYXRfdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERhdGFSYXRlIGJpdHJhdGUpIHsKICAgaWYgKGJ3ZV9pbmNvbWluZ18g
PiBEYXRhUmF0ZTo6WmVybygpICYmIGJpdHJhdGUgPiBid2VfaW5jb21pbmdfKSB7CkBAIC00MTYs
NiArNjEwLDEwIEBAIHZvaWQgU2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0aW9uOjpDYXBCaXRyYXRl
VG9UaHJlc2hvbGRzKFRpbWVzdGFtcCBhdF90aW1lLAogICAgICAgYml0cmF0ZSA+IGRlbGF5X2Jh
c2VkX2JpdHJhdGVfKSB7CiAgICAgYml0cmF0ZSA9IGRlbGF5X2Jhc2VkX2JpdHJhdGVfOwogICB9
CisgIGlmIChsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uXy5FbmFibGVkKCkgJiYKKyAg
ICAgIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb25fLkdldEVzdGltYXRlKCkgPiBEYXRh
UmF0ZTo6WmVybygpKSB7CisgICAgYml0cmF0ZSA9IHN0ZDo6bWluKGJpdHJhdGUsIGxvc3NfYmFz
ZWRfYmFuZHdpZHRoX2VzdGltYXRpb25fLkdldEVzdGltYXRlKCkpOworICB9CiAgIGlmIChiaXRy
YXRlID4gbWF4X2JpdHJhdGVfY29uZmlndXJlZF8pIHsKICAgICBiaXRyYXRlID0gbWF4X2JpdHJh
dGVfY29uZmlndXJlZF87CiAgIH0KQEAgLTQ0MSw1ICs2MzksMTAgQEAgdm9pZCBTZW5kU2lkZUJh
bmR3aWR0aEVzdGltYXRpb246OkNhcEJpdHJhdGVUb1RocmVzaG9sZHMoVGltZXN0YW1wIGF0X3Rp
bWUsCiAgICAgbGFzdF9ydGNfZXZlbnRfbG9nXyA9IGF0X3RpbWU7CiAgIH0KICAgY3VycmVudF9i
aXRyYXRlXyA9IGJpdHJhdGU7CisKKyAgaWYgKGFja25vd2xlZGdlZF9yYXRlXykgeworICAgIGxp
bmtfY2FwYWNpdHlfLk9uUmF0ZVVwZGF0ZShzdGQ6Om1pbihjdXJyZW50X2JpdHJhdGVfLCAqYWNr
bm93bGVkZ2VkX3JhdGVfKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRfdGlt
ZSk7CisgIH0KIH0KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0cmF0ZV9jb250cm9s
bGVyL3NlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9z
aWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgKaW5kZXggMmM4YjRlZTNkNWFiYTA0NjMzMjlkN2My
NGI4MjAwMzIzYjZlNDliNy4uYjAxNmZhYmEyZWUzZjk4Nzk1MTQ1MmZhYTFlYTc5MDQ4ZGUxNTY3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9u
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9iaXRyYXRlX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgKQEAg
LTEzLDI3ICsxMyw3MSBAQAogI2lmbmRlZiBNT0RVTEVTX0JJVFJBVEVfQ09OVFJPTExFUl9TRU5E
X1NJREVfQkFORFdJRFRIX0VTVElNQVRJT05fSF8KICNkZWZpbmUgTU9EVUxFU19CSVRSQVRFX0NP
TlRST0xMRVJfU0VORF9TSURFX0JBTkRXSURUSF9FU1RJTUFUSU9OX0hfCiAKKyNpbmNsdWRlIDxz
dGRpbnQuaD4KICNpbmNsdWRlIDxkZXF1ZT4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJh
cGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuaCIKKyNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9y
YXRlLmgiCisjaW5jbHVkZSAiYXBpL3VuaXRzL3RpbWVfZGVsdGEuaCIKKyNpbmNsdWRlICJhcGkv
dW5pdHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAibW9kdWxlcy9iaXRyYXRlX2NvbnRyb2xsZXIv
bG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhw
ZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBj
bGFzcyBSdGNFdmVudExvZzsKIAorY2xhc3MgTGlua0NhcGFjaXR5VHJhY2tlciB7CisgcHVibGlj
OgorICBMaW5rQ2FwYWNpdHlUcmFja2VyKCk7CisgIH5MaW5rQ2FwYWNpdHlUcmFja2VyKCk7Cisg
IHZvaWQgT25PdmVydXNlKERhdGFSYXRlIGFja25vd2xlZGdlZF9yYXRlLCBUaW1lc3RhbXAgYXRf
dGltZSk7CisgIHZvaWQgT25TdGFydGluZ1JhdGUoRGF0YVJhdGUgc3RhcnRfcmF0ZSk7CisgIHZv
aWQgT25SYXRlVXBkYXRlKERhdGFSYXRlIGFja25vd2xlZGdlZCwgVGltZXN0YW1wIGF0X3RpbWUp
OworICB2b2lkIE9uUnR0QmFja29mZihEYXRhUmF0ZSBiYWNrb2ZmX3JhdGUsIFRpbWVzdGFtcCBh
dF90aW1lKTsKKyAgRGF0YVJhdGUgZXN0aW1hdGUoKSBjb25zdDsKKworIHByaXZhdGU6CisgIEZp
ZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiB0cmFja2luZ19yYXRlOworICBkb3VibGUgY2Fw
YWNpdHlfZXN0aW1hdGVfYnBzXyA9IDA7CisgIFRpbWVzdGFtcCBsYXN0X2xpbmtfY2FwYWNpdHlf
dXBkYXRlXyA9IFRpbWVzdGFtcDo6TWludXNJbmZpbml0eSgpOworfTsKKworY2xhc3MgUnR0QmFz
ZWRCYWNrb2ZmIHsKKyBwdWJsaWM6CisgIFJ0dEJhc2VkQmFja29mZigpOworICB+UnR0QmFzZWRC
YWNrb2ZmKCk7CisgIHZvaWQgT25Sb3V0ZUNoYW5nZSgpOworICB2b2lkIFVwZGF0ZVByb3BhZ2F0
aW9uUnR0KFRpbWVzdGFtcCBhdF90aW1lLCBUaW1lRGVsdGEgcHJvcGFnYXRpb25fcnR0KTsKKyAg
VGltZURlbHRhIFJ0dExvd2VyQm91bmQoVGltZXN0YW1wIGF0X3RpbWUpIGNvbnN0OworCisgIEZp
ZWxkVHJpYWxQYXJhbWV0ZXI8VGltZURlbHRhPiBydHRfbGltaXRfOworICBGaWVsZFRyaWFsUGFy
YW1ldGVyPGRvdWJsZT4gZHJvcF9mcmFjdGlvbl87CisgIEZpZWxkVHJpYWxQYXJhbWV0ZXI8VGlt
ZURlbHRhPiBkcm9wX2ludGVydmFsXzsKKyAgRmllbGRUcmlhbEZsYWcgcGVyc2lzdF9vbl9yb3V0
ZV9jaGFuZ2VfOworCisgcHVibGljOgorICBUaW1lc3RhbXAgbGFzdF9wcm9wYWdhdGlvbl9ydHRf
dXBkYXRlXzsKKyAgVGltZURlbHRhIGxhc3RfcHJvcGFnYXRpb25fcnR0XzsKK307CisKIGNsYXNz
IFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbiB7CiAgcHVibGljOgogICBTZW5kU2lkZUJhbmR3
aWR0aEVzdGltYXRpb24oKSA9IGRlbGV0ZTsKICAgZXhwbGljaXQgU2VuZFNpZGVCYW5kd2lkdGhF
c3RpbWF0aW9uKFJ0Y0V2ZW50TG9nKiBldmVudF9sb2cpOwotICB2aXJ0dWFsIH5TZW5kU2lkZUJh
bmR3aWR0aEVzdGltYXRpb24oKTsKKyAgflNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbigpOwog
CisgIHZvaWQgT25Sb3V0ZUNoYW5nZSgpOwogICB2b2lkIEN1cnJlbnRFc3RpbWF0ZShpbnQqIGJp
dHJhdGUsIHVpbnQ4X3QqIGxvc3MsIGludDY0X3QqIHJ0dCkgY29uc3Q7Ci0KKyAgRGF0YVJhdGUg
R2V0RXN0aW1hdGVkTGlua0NhcGFjaXR5KCkgY29uc3Q7CiAgIC8vIENhbGwgcGVyaW9kaWNhbGx5
IHRvIHVwZGF0ZSBlc3RpbWF0ZS4KICAgdm9pZCBVcGRhdGVFc3RpbWF0ZShUaW1lc3RhbXAgYXRf
dGltZSk7CisgIHZvaWQgT25TZW50UGFja2V0KFNlbnRQYWNrZXQgc2VudF9wYWNrZXQpOworICB2
b2lkIFVwZGF0ZVByb3BhZ2F0aW9uUnR0KFRpbWVzdGFtcCBhdF90aW1lLCBUaW1lRGVsdGEgcHJv
cGFnYXRpb25fcnR0KTsKIAogICAvLyBDYWxsIHdoZW4gd2UgcmVjZWl2ZSBhIFJUQ1AgbWVzc2Fn
ZSB3aXRoIFRNTUJSIG9yIFJFTUIuCiAgIHZvaWQgVXBkYXRlUmVjZWl2ZXJFc3RpbWF0ZShUaW1l
c3RhbXAgYXRfdGltZSwgRGF0YVJhdGUgYmFuZHdpZHRoKTsKQEAgLTYyLDYgKzEwNiw5IEBAIGNs
YXNzIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbiB7CiAgIHZvaWQgU2V0U2VuZEJpdHJhdGUo
RGF0YVJhdGUgYml0cmF0ZSwgVGltZXN0YW1wIGF0X3RpbWUpOwogICB2b2lkIFNldE1pbk1heEJp
dHJhdGUoRGF0YVJhdGUgbWluX2JpdHJhdGUsIERhdGFSYXRlIG1heF9iaXRyYXRlKTsKICAgaW50
IEdldE1pbkJpdHJhdGUoKSBjb25zdDsKKyAgdm9pZCBTZXRBY2tub3dsZWRnZWRSYXRlKGFic2w6
Om9wdGlvbmFsPERhdGFSYXRlPiBhY2tub3dsZWRnZWRfcmF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgdm9pZCBJbmNvbWluZ1BhY2tldEZlZWRi
YWNrVmVjdG9yKGNvbnN0IFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayYgcmVwb3J0KTsKIAogIHBy
aXZhdGU6CiAgIGVudW0gVW1hU3RhdGUgeyBrTm9VcGRhdGUsIGtGaXJzdERvbmUsIGtEb25lIH07
CkBAIC03NSwxNiArMTIyLDIyIEBAIGNsYXNzIFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbiB7
CiAgIC8vIG1pbiBiaXRyYXRlIHVzZWQgZHVyaW5nIGxhc3Qga0J3ZUluY3JlYXNlSW50ZXJ2YWxN
cy4KICAgdm9pZCBVcGRhdGVNaW5IaXN0b3J5KFRpbWVzdGFtcCBhdF90aW1lKTsKIAorICBEYXRh
UmF0ZSBNYXliZVJhbXB1cE9yQmFja29mZihEYXRhUmF0ZSBuZXdfYml0cmF0ZSwgVGltZXN0YW1w
IGF0X3RpbWUpOworCiAgIC8vIENhcCB8Yml0cmF0ZXwgdG8gW21pbl9iaXRyYXRlX2NvbmZpZ3Vy
ZWRfLCBtYXhfYml0cmF0ZV9jb25maWd1cmVkX10gYW5kCiAgIC8vIHNldCB8Y3VycmVudF9iaXRy
YXRlX3wgdG8gdGhlIGNhcHBlZCB2YWx1ZSBhbmQgdXBkYXRlcyB0aGUgZXZlbnQgbG9nLgogICB2
b2lkIENhcEJpdHJhdGVUb1RocmVzaG9sZHMoVGltZXN0YW1wIGF0X3RpbWUsIERhdGFSYXRlIGJp
dHJhdGUpOwogCisgIFJ0dEJhc2VkQmFja29mZiBydHRfYmFja29mZl87CisgIExpbmtDYXBhY2l0
eVRyYWNrZXIgbGlua19jYXBhY2l0eV87CisKICAgc3RkOjpkZXF1ZTxzdGQ6OnBhaXI8VGltZXN0
YW1wLCBEYXRhUmF0ZT4gPiBtaW5fYml0cmF0ZV9oaXN0b3J5XzsKIAogICAvLyBpbmNvbWluZyBm
aWx0ZXJzCiAgIGludCBsb3N0X3BhY2tldHNfc2luY2VfbGFzdF9sb3NzX3VwZGF0ZV87CiAgIGlu
dCBleHBlY3RlZF9wYWNrZXRzX3NpbmNlX2xhc3RfbG9zc191cGRhdGVfOwogCisgIGFic2w6Om9w
dGlvbmFsPERhdGFSYXRlPiBhY2tub3dsZWRnZWRfcmF0ZV87CiAgIERhdGFSYXRlIGN1cnJlbnRf
Yml0cmF0ZV87CiAgIERhdGFSYXRlIG1pbl9iaXRyYXRlX2NvbmZpZ3VyZWRfOwogICBEYXRhUmF0
ZSBtYXhfYml0cmF0ZV9jb25maWd1cmVkXzsKQEAgLTExMyw2ICsxNjYsNyBAQCBjbGFzcyBTZW5k
U2lkZUJhbmR3aWR0aEVzdGltYXRpb24gewogICBmbG9hdCBsb3dfbG9zc190aHJlc2hvbGRfOwog
ICBmbG9hdCBoaWdoX2xvc3NfdGhyZXNob2xkXzsKICAgRGF0YVJhdGUgYml0cmF0ZV90aHJlc2hv
bGRfOworICBMb3NzQmFzZWRCYW5kd2lkdGhFc3RpbWF0aW9uIGxvc3NfYmFzZWRfYmFuZHdpZHRo
X2VzdGltYXRpb25fOwogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKICNlbmRpZiAgLy8gTU9E
VUxFU19CSVRSQVRFX0NPTlRST0xMRVJfU0VORF9TSURFX0JBTkRXSURUSF9FU1RJTUFUSU9OX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb25f
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2JpdHJhdGVfY29udHJvbGxlci9zZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb25f
dW5pdHRlc3QuY2MKaW5kZXggYmVjYzYxNmNmMzE1NjFiM2I0ZTg2OTE1OGUzZTBkNDgyNDZiNzRh
Zi4uY2NmYmQ4NTUwMzI3ZTg2ZmExNzU3MjQ4Zjc0MDliNWJlMWI0NmZiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9iaXRyYXRl
X2NvbnRyb2xsZXIvc2VuZF9zaWRlX2JhbmR3aWR0aF9lc3RpbWF0aW9uX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYml0
cmF0ZV9jb250cm9sbGVyL3NlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbl91bml0dGVzdC5j
YwpAQCAtMjMsNyArMjMsNyBAQCBNQVRDSEVSKExvc3NCYXNlZEJ3ZVVwZGF0ZVdpdGhCaXRyYXRl
T25seSwgIiIpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICAgYXV0byBid2VfZXZlbnQgPSBz
dGF0aWNfY2FzdDxSdGNFdmVudEJ3ZVVwZGF0ZUxvc3NCYXNlZCo+KGFyZyk7Ci0gIHJldHVybiBi
d2VfZXZlbnQtPmJpdHJhdGVfYnBzXyA+IDAgJiYgYndlX2V2ZW50LT5mcmFjdGlvbl9sb3NzXyA9
PSAwOworICByZXR1cm4gYndlX2V2ZW50LT5iaXRyYXRlX2JwcygpID4gMCAmJiBid2VfZXZlbnQt
PmZyYWN0aW9uX2xvc3MoKSA9PSAwOwogfQogCiBNQVRDSEVSKExvc3NCYXNlZEJ3ZVVwZGF0ZVdp
dGhCaXRyYXRlQW5kTG9zc0ZyYWN0aW9uLCAiIikgewpAQCAtMzEsNyArMzEsNyBAQCBNQVRDSEVS
KExvc3NCYXNlZEJ3ZVVwZGF0ZVdpdGhCaXRyYXRlQW5kTG9zc0ZyYWN0aW9uLCAiIikgewogICAg
IHJldHVybiBmYWxzZTsKICAgfQogICBhdXRvIGJ3ZV9ldmVudCA9IHN0YXRpY19jYXN0PFJ0Y0V2
ZW50QndlVXBkYXRlTG9zc0Jhc2VkKj4oYXJnKTsKLSAgcmV0dXJuIGJ3ZV9ldmVudC0+Yml0cmF0
ZV9icHNfID4gMCAmJiBid2VfZXZlbnQtPmZyYWN0aW9uX2xvc3NfID4gMDsKKyAgcmV0dXJuIGJ3
ZV9ldmVudC0+Yml0cmF0ZV9icHMoKSA+IDAgJiYgYndlX2V2ZW50LT5mcmFjdGlvbl9sb3NzKCkg
PiAwOwogfQogCiB2b2lkIFRlc3RQcm9iaW5nKGJvb2wgdXNlX2RlbGF5X2Jhc2VkKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL0JVSUxELmdu
CmluZGV4IDJmY2I3MTIxMmY1MjQ3Y2RhYjgwMGIyMjU3MWYwMTg2YTA1ZTk4ZjcuLjczZDgxZjE2
ZWMyN2NiMDIxYWI5ZjE2ZjczZDk4OThjNmQ5NzczODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL0JVSUxELmduCkBAIC0yMCw4ICsyMCw2
IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiY29uZ2VzdGlvbl9jb250cm9sbGVyIikgewogICB2aXNp
YmlsaXR5ID0gWyAiKiIgXQogICBjb25maWdzICs9IFsgIjpid2VfdGVzdF9sb2dnaW5nIiBdCiAg
IHNvdXJjZXMgPSBbCi0gICAgImNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIu
Y2MiLAotICAgICJjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmgiLAogICAg
ICJpbmNsdWRlL25ldHdvcmtfY2hhbmdlZF9vYnNlcnZlci5oIiwKICAgICAiaW5jbHVkZS9yZWNl
aXZlX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmgiLAogICAgICJpbmNsdWRlL3NlbmRfc2lk
ZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaCIsCkBAIC00Myw2ICs0MSw3IEBAIHJ0Y19zdGF0aWNf
bGlicmFyeSgiY29uZ2VzdGlvbl9jb250cm9sbGVyIikgewogICAgICIuLi8uLi9ydGNfYmFzZTpj
aGVja3MiLAogICAgICIuLi8uLi9ydGNfYmFzZTpwdHJfdXRpbCIsCiAgICAgIi4uLy4uL3J0Y19i
YXNlOnJhdGVfbGltaXRlciIsCisgICAgIi4uLy4uL3J0Y19iYXNlL25ldHdvcms6c2VudF9wYWNr
ZXQiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAogICAgICIuLi8uLi9zeXN0ZW1fd3Jh
cHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIuLi9iaXRyYXRlX2NvbnRyb2xsZXIiLApAQCAtNTIs
NiArNTEsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoImNvbmdlc3Rpb25fY29udHJvbGxlciIpIHsK
ICAgICAiZ29vZ19jYzpkZWxheV9iYXNlZF9id2UiLAogICAgICJnb29nX2NjOmVzdGltYXRvcnMi
LAogICAgICJnb29nX2NjOnByb2JlX2NvbnRyb2xsZXIiLAorICAgICJnb29nX2NjOnB1c2hiYWNr
X2NvbnRyb2xsZXIiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnki
LAogICBdCiAKQEAgLTk4LDcgKzk4LDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAg
dGVzdG9ubHkgPSB0cnVlCiAKICAgICBzb3VyY2VzID0gWwotICAgICAgImNvbmdlc3Rpb25fd2lu
ZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MiLAogICAgICAgInJlY2VpdmVfc2lk
ZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MiLAogICAgICAgInNlbmRfc2lkZV9j
b25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MiLAogICAgICAgInRyYW5zcG9ydF9mZWVk
YmFja19hZGFwdGVyX3VuaXR0ZXN0LmNjIiwKQEAgLTExMSw3ICsxMTAsNyBAQCBpZiAocnRjX2lu
Y2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICAgIi4u
Ly4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9h
cHByb3ZlZCIsCi0gICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAor
ICAgICAgIi4uLy4uL3J0Y19iYXNlL25ldHdvcms6c2VudF9wYWNrZXQiLAogICAgICAgIi4uLy4u
L3N5c3RlbV93cmFwcGVycyIsCiAgICAgICAiLi4vLi4vdGVzdDpmaWVsZF90cmlhbCIsCiAgICAg
ICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
YmJyL2Jicl9uZXR3b3JrX2NvbnRyb2xsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9iYnIvYmJyX25l
dHdvcmtfY29udHJvbGxlci5jYwppbmRleCBiODJkZWQ0MjIwMmNjNDc0MGVhZjk5M2MwNWFhN2U3
NDNjYjhhYzBmLi44NjNjZTRiZjk4ZDk2OTIyOTJjZjhmZWE0OTBjMjdjNGI2MzA0NGY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9iYnIvYmJyX25ldHdvcmtfY29udHJvbGxlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9iYnIvYmJyX25ldHdvcmtfY29udHJvbGxlci5jYwpAQCAtNDAxLDE2
ICs0MDEsMTUgQEAgYm9vbCBCYnJOZXR3b3JrQ29udHJvbGxlcjo6SXNQcm9iaW5nRm9yTW9yZUJh
bmR3aWR0aCgpIGNvbnN0IHsKIAogTmV0d29ya0NvbnRyb2xVcGRhdGUgQmJyTmV0d29ya0NvbnRy
b2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKAogICAgIFRyYW5zcG9ydFBhY2tldHNG
ZWVkYmFjayBtc2cpIHsKKyAgaWYgKG1zZy5wYWNrZXRfZmVlZGJhY2tzLmVtcHR5KCkpCisgICAg
cmV0dXJuIE5ldHdvcmtDb250cm9sVXBkYXRlKCk7CisKICAgVGltZXN0YW1wIGZlZWRiYWNrX3Jl
Y3ZfdGltZSA9IG1zZy5mZWVkYmFja190aW1lOwotICBhYnNsOjpvcHRpb25hbDxTZW50UGFja2V0
PiBsYXN0X3NlbnRfcGFja2V0ID0KLSAgICAgIG1zZy5QYWNrZXRzV2l0aEZlZWRiYWNrKCkuYmFj
aygpLnNlbnRfcGFja2V0OwotICBpZiAoIWxhc3Rfc2VudF9wYWNrZXQuaGFzX3ZhbHVlKCkpIHsK
LSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJMYXN0IGFjayBwYWNrZXQgbm90IGluIGhpc3Rv
cnksIG5vIFJUVCB1cGRhdGUiOwotICB9IGVsc2UgewotICAgIFRpbWVzdGFtcCBzZW5kX3RpbWUg
PSBsYXN0X3NlbnRfcGFja2V0LT5zZW5kX3RpbWU7Ci0gICAgVGltZURlbHRhIHNlbmRfZGVsdGEg
PSBmZWVkYmFja19yZWN2X3RpbWUgLSBzZW5kX3RpbWU7Ci0gICAgcnR0X3N0YXRzXy5VcGRhdGVS
dHQoc2VuZF9kZWx0YSwgVGltZURlbHRhOjpaZXJvKCksIGZlZWRiYWNrX3JlY3ZfdGltZSk7Ci0g
IH0KKyAgU2VudFBhY2tldCBsYXN0X3NlbnRfcGFja2V0ID0gbXNnLlBhY2tldHNXaXRoRmVlZGJh
Y2soKS5iYWNrKCkuc2VudF9wYWNrZXQ7CisKKyAgVGltZXN0YW1wIHNlbmRfdGltZSA9IGxhc3Rf
c2VudF9wYWNrZXQuc2VuZF90aW1lOworICBUaW1lRGVsdGEgc2VuZF9kZWx0YSA9IGZlZWRiYWNr
X3JlY3ZfdGltZSAtIHNlbmRfdGltZTsKKyAgcnR0X3N0YXRzXy5VcGRhdGVSdHQoc2VuZF9kZWx0
YSwgVGltZURlbHRhOjpaZXJvKCksIGZlZWRiYWNrX3JlY3ZfdGltZSk7CiAKICAgY29uc3QgRGF0
YVNpemUgdG90YWxfZGF0YV9hY2tlZF9iZWZvcmUgPSBzYW1wbGVyXy0+dG90YWxfZGF0YV9hY2tl
ZCgpOwogCkBAIC00MzEsNyArNDMwLDcgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgQmJyTmV0d29y
a0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKAogICAvLyBJbnB1dCB0aGUg
bmV3IGRhdGEgaW50byB0aGUgQkJSIG1vZGVsIG9mIHRoZSBjb25uZWN0aW9uLgogICBpZiAoIWFj
a2VkX3BhY2tldHMuZW1wdHkoKSkgewogICAgIGludDY0X3QgbGFzdF9hY2tlZF9wYWNrZXQgPQot
ICAgICAgICBhY2tlZF9wYWNrZXRzLnJiZWdpbigpLT5zZW50X3BhY2tldC0+c2VxdWVuY2VfbnVt
YmVyOworICAgICAgICBhY2tlZF9wYWNrZXRzLnJiZWdpbigpLT5zZW50X3BhY2tldC5zZXF1ZW5j
ZV9udW1iZXI7CiAKICAgICBpc19yb3VuZF9zdGFydCA9IFVwZGF0ZVJvdW5kVHJpcENvdW50ZXIo
bGFzdF9hY2tlZF9wYWNrZXQpOwogICAgIG1pbl9ydHRfZXhwaXJlZCA9CkBAIC00NzIsNyArNDcx
LDcgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgQmJyTmV0d29ya0NvbnRyb2xsZXI6Ok9uVHJhbnNw
b3J0UGFja2V0c0ZlZWRiYWNrKAogICBEYXRhU2l6ZSBkYXRhX2Fja2VkID0gc2FtcGxlcl8tPnRv
dGFsX2RhdGFfYWNrZWQoKSAtIHRvdGFsX2RhdGFfYWNrZWRfYmVmb3JlOwogICBEYXRhU2l6ZSBk
YXRhX2xvc3QgPSBEYXRhU2l6ZTo6WmVybygpOwogICBmb3IgKGNvbnN0IFBhY2tldFJlc3VsdCYg
cGFja2V0IDogbG9zdF9wYWNrZXRzKSB7Ci0gICAgZGF0YV9sb3N0ICs9IHBhY2tldC5zZW50X3Bh
Y2tldC0+c2l6ZTsKKyAgICBkYXRhX2xvc3QgKz0gcGFja2V0LnNlbnRfcGFja2V0LnNpemU7CiAg
IH0KIAogICAvLyBBZnRlciB0aGUgbW9kZWwgaXMgdXBkYXRlZCwgcmVjYWxjdWxhdGUgdGhlIHBh
Y2luZyByYXRlIGFuZCBjb25nZXN0aW9uCkBAIC00ODMsNyArNDgyLDcgQEAgTmV0d29ya0NvbnRy
b2xVcGRhdGUgQmJyTmV0d29ya0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNr
KAogICAvLyBDbGVhbnVwIGludGVybmFsIHN0YXRlLgogICBpZiAoIWFja2VkX3BhY2tldHMuZW1w
dHkoKSkgewogICAgIHNhbXBsZXJfLT5SZW1vdmVPYnNvbGV0ZVBhY2tldHMoCi0gICAgICAgIGFj
a2VkX3BhY2tldHMuYmFjaygpLnNlbnRfcGFja2V0LT5zZXF1ZW5jZV9udW1iZXIpOworICAgICAg
ICBhY2tlZF9wYWNrZXRzLmJhY2soKS5zZW50X3BhY2tldC5zZXF1ZW5jZV9udW1iZXIpOwogICB9
CiAgIHJldHVybiBDcmVhdGVSYXRlVXBkYXRlKG1zZy5mZWVkYmFja190aW1lKTsKIH0KQEAgLTU1
MCw3ICs1NDksNyBAQCB2b2lkIEJick5ldHdvcmtDb250cm9sbGVyOjpFbnRlclByb2JlQmFuZHdp
ZHRoTW9kZShUaW1lc3RhbXAgbm93KSB7CiB2b2lkIEJick5ldHdvcmtDb250cm9sbGVyOjpEaXNj
YXJkTG9zdFBhY2tldHMoCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiYgbG9z
dF9wYWNrZXRzKSB7CiAgIGZvciAoY29uc3QgUGFja2V0UmVzdWx0JiBwYWNrZXQgOiBsb3N0X3Bh
Y2tldHMpIHsKLSAgICBzYW1wbGVyXy0+T25QYWNrZXRMb3N0KHBhY2tldC5zZW50X3BhY2tldC0+
c2VxdWVuY2VfbnVtYmVyKTsKKyAgICBzYW1wbGVyXy0+T25QYWNrZXRMb3N0KHBhY2tldC5zZW50
X3BhY2tldC5zZXF1ZW5jZV9udW1iZXIpOwogICB9CiB9CiAKQEAgLTU2OSw4ICs1NjgsOCBAQCBi
b29sIEJick5ldHdvcmtDb250cm9sbGVyOjpVcGRhdGVCYW5kd2lkdGhBbmRNaW5SdHQoCiAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiYgYWNrZWRfcGFja2V0cykgewogICBUaW1l
RGVsdGEgc2FtcGxlX3J0dCA9IFRpbWVEZWx0YTo6UGx1c0luZmluaXR5KCk7CiAgIGZvciAoY29u
c3QgYXV0byYgcGFja2V0IDogYWNrZWRfcGFja2V0cykgewotICAgIEJhbmR3aWR0aFNhbXBsZSBi
YW5kd2lkdGhfc2FtcGxlID0gc2FtcGxlcl8tPk9uUGFja2V0QWNrbm93bGVkZ2VkKAotICAgICAg
ICBub3csIHBhY2tldC5zZW50X3BhY2tldC0+c2VxdWVuY2VfbnVtYmVyKTsKKyAgICBCYW5kd2lk
dGhTYW1wbGUgYmFuZHdpZHRoX3NhbXBsZSA9CisgICAgICAgIHNhbXBsZXJfLT5PblBhY2tldEFj
a25vd2xlZGdlZChub3csIHBhY2tldC5zZW50X3BhY2tldC5zZXF1ZW5jZV9udW1iZXIpOwogICAg
IGxhc3Rfc2FtcGxlX2lzX2FwcF9saW1pdGVkXyA9IGJhbmR3aWR0aF9zYW1wbGUuaXNfYXBwX2xp
bWl0ZWQ7CiAgICAgaWYgKCFiYW5kd2lkdGhfc2FtcGxlLnJ0dC5Jc1plcm8oKSkgewogICAgICAg
c2FtcGxlX3J0dCA9IHN0ZDo6bWluKHNhbXBsZV9ydHQsIGJhbmR3aWR0aF9zYW1wbGUucnR0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2Nv
bnRyb2xsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19j
b250cm9sbGVyLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWE1MWJkZGQzMDk3
Nzk5MmQ4YWQwZTlmODUyOTM3N2JlNmQzYWU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hi
YWNrX2NvbnRyb2xsZXIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxhbGdvcml0aG0+
Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dp
bmRvd19wdXNoYmFja19jb250cm9sbGVyLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2lu
Y2x1ZGUvZmllbGRfdHJpYWwuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFdoZW4gQ29u
Z2VzdGlvbldpbmRvd1B1c2hiYWNrIGlzIGVuYWJsZWQsIHRoZSBwYWNlciBpcyBvYmxpdmlvdXMg
dG8KLS8vIHRoZSBjb25nZXN0aW9uIHdpbmRvdy4gVGhlIHJlbGF0aW9uIGJldHdlZW4gb3V0c3Rh
bmRpbmcgZGF0YSBhbmQKLS8vIHRoZSBjb25nZXN0aW9uIHdpbmRvdyBhZmZlY3RzIGVuY29kZXIg
YWxsb2NhdGlvbnMgZGlyZWN0bHkuCi0vLyBUaGlzIGV4cGVyaW1lbnQgaXMgYnVpbGQgb24gdG9w
IG9mIGNvbmdlc3Rpb24gd2luZG93IGV4cGVyaW1lbnQuCi1jb25zdCBjaGFyIGtDb25nZXN0aW9u
UHVzaGJhY2tFeHBlcmltZW50W10gPSAiV2ViUlRDLUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFjayI7
Ci1jb25zdCB1aW50MzJfdCBrRGVmYXVsdE1pblB1c2hiYWNrVGFyZ2V0Qml0cmF0ZUJwcyA9IDMw
MDAwOwotCi1ib29sIFJlYWRDb25nZXN0aW9uV2luZG93UHVzaGJhY2tFeHBlcmltZW50UGFyYW1l
dGVyKAotICAgIHVpbnQzMl90KiBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzKSB7Ci0g
IFJUQ19EQ0hFQ0sobWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwcyk7Ci0gIHN0ZDo6c3Ry
aW5nIGV4cGVyaW1lbnRfc3RyaW5nID0KLSAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRG
dWxsTmFtZShrQ29uZ2VzdGlvblB1c2hiYWNrRXhwZXJpbWVudCk7Ci0gIGludCBwYXJzZWRfdmFs
dWVzID0gc3NjYW5mKGV4cGVyaW1lbnRfc3RyaW5nLmNfc3RyKCksICJFbmFibGVkLSUiIFBSSXUz
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRy
YXRlX2Jwcyk7Ci0gIGlmIChwYXJzZWRfdmFsdWVzID09IDEpIHsKLSAgICBSVENfQ0hFQ0tfR0Uo
Km1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHMsIDApCi0gICAgICAgIDw8ICJNaW4gcHVz
aGJhY2sgdGFyZ2V0IGJpdHJhdGUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4i
OwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotQ29uZ2VzdGlv
bldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJv
bGxlcigpIHsKLSAgaWYgKCFSZWFkQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrRXhwZXJpbWVudFBh
cmFtZXRlcigKLSAgICAgICAgICAmbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc18pKSB7
Ci0gICAgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc18gPSBrRGVmYXVsdE1pblB1c2hi
YWNrVGFyZ2V0Qml0cmF0ZUJwczsKLSAgfQotfQotCi12b2lkIENvbmdlc3Rpb25XaW5kb3dQdXNo
YmFja0NvbnRyb2xsZXI6OlVwZGF0ZU91dHN0YW5kaW5nRGF0YSgKLSAgICBzaXplX3Qgb3V0c3Rh
bmRpbmdfYnl0ZXMpIHsKLSAgb3V0c3RhbmRpbmdfYnl0ZXNfID0gb3V0c3RhbmRpbmdfYnl0ZXM7
Ci19Ci0KLXZvaWQgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6VXBkYXRlTWF4
T3V0c3RhbmRpbmdEYXRhKAotICAgIHNpemVfdCBtYXhfb3V0c3RhbmRpbmdfYnl0ZXMpIHsKLSAg
RGF0YVNpemUgZGF0YV93aW5kb3cgPSBEYXRhU2l6ZTo6Ynl0ZXMobWF4X291dHN0YW5kaW5nX2J5
dGVzKTsKLSAgaWYgKGN1cnJlbnRfZGF0YV93aW5kb3dfKSB7Ci0gICAgZGF0YV93aW5kb3cgPSAo
ZGF0YV93aW5kb3cgKyBjdXJyZW50X2RhdGFfd2luZG93Xy52YWx1ZSgpKSAvIDI7Ci0gIH0KLSAg
Y3VycmVudF9kYXRhX3dpbmRvd18gPSBkYXRhX3dpbmRvdzsKLX0KLQotdm9pZCBDb25nZXN0aW9u
V2luZG93UHVzaGJhY2tDb250cm9sbGVyOjpTZXREYXRhV2luZG93KERhdGFTaXplIGRhdGFfd2lu
ZG93KSB7Ci0gIGN1cnJlbnRfZGF0YV93aW5kb3dfID0gZGF0YV93aW5kb3c7Ci19Ci0KLXVpbnQz
Ml90IENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI6OlVwZGF0ZVRhcmdldEJpdHJh
dGUoCi0gICAgdWludDMyX3QgYml0cmF0ZV9icHMpIHsKLSAgaWYgKCFjdXJyZW50X2RhdGFfd2lu
ZG93XyB8fCBjdXJyZW50X2RhdGFfd2luZG93Xy0+SXNaZXJvKCkpCi0gICAgcmV0dXJuIGJpdHJh
dGVfYnBzOwotICBkb3VibGUgZmlsbF9yYXRpbyA9Ci0gICAgICBvdXRzdGFuZGluZ19ieXRlc18g
LyBzdGF0aWNfY2FzdDxkb3VibGU+KGN1cnJlbnRfZGF0YV93aW5kb3dfLT5ieXRlcygpKTsKLSAg
aWYgKGZpbGxfcmF0aW8gPiAxLjUpIHsKLSAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyAqPSAwLjk7
Ci0gIH0gZWxzZSBpZiAoZmlsbF9yYXRpbyA+IDEpIHsKLSAgICBlbmNvZGluZ19yYXRlX3JhdGlv
XyAqPSAwLjk1OwotICB9IGVsc2UgaWYgKGZpbGxfcmF0aW8gPCAwLjEpIHsKLSAgICBlbmNvZGlu
Z19yYXRlX3JhdGlvXyA9IDEuMDsKLSAgfSBlbHNlIHsKLSAgICBlbmNvZGluZ19yYXRlX3JhdGlv
XyAqPSAxLjA1OwotICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gc3RkOjptaW4oZW5jb2Rpbmdf
cmF0ZV9yYXRpb18sIDEuMCk7Ci0gIH0KLSAgdWludDMyX3QgYWRqdXN0ZWRfdGFyZ2V0X2JpdHJh
dGVfYnBzID0KLSAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihiaXRyYXRlX2JwcyAqIGVuY29k
aW5nX3JhdGVfcmF0aW9fKTsKLQotICAvLyBEbyBub3QgYWRqdXN0IGJlbG93IHRoZSBtaW5pbXVt
IHB1c2hiYWNrIGJpdHJhdGUgYnV0IGRvIG9iZXkgaWYgdGhlCi0gIC8vIG9yaWdpbmFsIGVzdGlt
YXRlIGlzIGJlbG93IGl0LgotICBiaXRyYXRlX2JwcyA9IGFkanVzdGVkX3RhcmdldF9iaXRyYXRl
X2JwcyA8IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfCi0gICAgICAgICAgICAgICAg
ICAgID8gc3RkOjptaW4oYml0cmF0ZV9icHMsIG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9i
cHNfKQotICAgICAgICAgICAgICAgICAgICA6IGFkanVzdGVkX3RhcmdldF9iaXRyYXRlX2JwczsK
LSAgcmV0dXJuIGJpdHJhdGVfYnBzOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9s
bGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9s
bGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2MDg1OTA1ODNiZGI4MTFmODQ2
YTQzY2E5ZTM1ODg3NDUzOTI0ODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29u
dHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfQ09OR0VTVElP
Tl9XSU5ET1dfUFVTSEJBQ0tfQ09OVFJPTExFUl9IXwotI2RlZmluZSBNT0RVTEVTX0NPTkdFU1RJ
T05fQ09OVFJPTExFUl9DT05HRVNUSU9OX1dJTkRPV19QVVNIQkFDS19DT05UUk9MTEVSX0hfCi0K
LSNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuaCIKLSNpbmNsdWRlICJjb21t
b25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgInJ0Y19iYXNl
L2NyaXRpY2Fsc2VjdGlvbi5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIK
LQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFRoaXMgY2xhc3MgZW5hYmxlcyBwdXNoYmFjayBm
cm9tIGNvbmdlc3Rpb24gd2luZG93IGRpcmVjdGx5IHRvIHZpZGVvIGVuY29kZXIuCi0vLyBXaGVu
IHRoZSBjb25nZXN0aW9uIHdpbmRvdyBpcyBmaWxsaW5nIHVwLCB0aGUgdmlkZW8gZW5jb2RlciB0
YXJnZXQgYml0cmF0ZQotLy8gd2lsbCBiZSByZWR1Y2VkIGFjY29yZGluZ2x5IHRvIGFjY29tbW9k
YXRlIHRoZSBuZXR3b3JrIGNoYW5nZXMuIFRvIGF2b2lkCi0vLyBwYXVzaW5nIHZpZGVvIHRvbyBm
cmVxdWVudGx5LCBhIG1pbmltdW0gZW5jb2RlciB0YXJnZXQgYml0cmF0ZSB0aHJlc2hvbGQgaXMK
LS8vIHVzZWQgdG8gcHJldmVudCB2aWRlbyBwYXVzZSBkdWUgdG8gYSBmdWxsIGNvbmdlc3Rpb24g
d2luZG93LgotY2xhc3MgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlciB7Ci0gcHVi
bGljOgotICBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyKCk7Ci0gIHZvaWQgVXBk
YXRlT3V0c3RhbmRpbmdEYXRhKHNpemVfdCBvdXRzdGFuZGluZ19ieXRlcyk7Ci0gIHZvaWQgVXBk
YXRlTWF4T3V0c3RhbmRpbmdEYXRhKHNpemVfdCBtYXhfb3V0c3RhbmRpbmdfYnl0ZXMpOwotICB1
aW50MzJfdCBVcGRhdGVUYXJnZXRCaXRyYXRlKHVpbnQzMl90IGJpdHJhdGVfYnBzKTsKLSAgdm9p
ZCBTZXREYXRhV2luZG93KERhdGFTaXplIGRhdGFfd2luZG93KTsKLQotIHByaXZhdGU6Ci0gIGFi
c2w6Om9wdGlvbmFsPERhdGFTaXplPiBjdXJyZW50X2RhdGFfd2luZG93XzsKLSAgc2l6ZV90IG91
dHN0YW5kaW5nX2J5dGVzXyA9IDA7Ci0gIHVpbnQzMl90IG1pbl9wdXNoYmFja190YXJnZXRfYml0
cmF0ZV9icHNfOwotICBkb3VibGUgZW5jb2RpbmdfcmF0ZV9yYXRpb18gPSAxLjA7Ci19OwotCi19
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxFU19DT05HRVNUSU9OX0NP
TlRST0xMRVJfQ09OR0VTVElPTl9XSU5ET1dfUFVTSEJBQ0tfQ09OVFJPTExFUl9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxl
cl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNr
X2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5
ZDZhNzlkNjJmZmJjNjBiZGQ4YTU1OGQ1ZTAxYjk1MjRiNTRmMWQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvY29uZ2VzdGlvbl93
aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0x
LDY1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxl
ci5oIgotI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCi0K
LXVzaW5nIHRlc3Rpbmc6Ol87Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNwYWNlIHRlc3Qg
ewotCi1jbGFzcyBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgQ29uZ2VzdGlvbldpbmRvd1B1c2hi
YWNrQ29udHJvbGxlciBjd25kX2NvbnRyb2xsZXJfOwotfTsKLQotVEVTVF9GKENvbmdlc3Rpb25X
aW5kb3dQdXNoYmFja0NvbnRyb2xsZXJUZXN0LCBGdWxsQ29uZ2VzdGlvbldpbmRvdykgewotICBj
d25kX2NvbnRyb2xsZXJfLlVwZGF0ZU91dHN0YW5kaW5nRGF0YSgxMDAwMDApOwotICBjd25kX2Nv
bnRyb2xsZXJfLlVwZGF0ZU1heE91dHN0YW5kaW5nRGF0YSg1MDAwMCk7Ci0KLSAgdWludDMyX3Qg
Yml0cmF0ZV9icHMgPSA4MDAwMDsKLSAgYml0cmF0ZV9icHMgPSBjd25kX2NvbnRyb2xsZXJfLlVw
ZGF0ZVRhcmdldEJpdHJhdGUoYml0cmF0ZV9icHMpOwotICBFWFBFQ1RfRVEoNzIwMDB1LCBiaXRy
YXRlX2Jwcyk7Ci0KLSAgY3duZF9jb250cm9sbGVyXy5VcGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEo
NTAwMDApOwotICBiaXRyYXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0
cmF0ZShiaXRyYXRlX2Jwcyk7Ci0gIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1aW50MzJfdD4oNzIw
MDAgKiAwLjkgKiAwLjkpLCBiaXRyYXRlX2Jwcyk7Ci19Ci0KLVRFU1RfRihDb25nZXN0aW9uV2lu
ZG93UHVzaGJhY2tDb250cm9sbGVyVGVzdCwgTm9ybWFsQ29uZ2VzdGlvbldpbmRvdykgewotICBj
d25kX2NvbnRyb2xsZXJfLlVwZGF0ZU91dHN0YW5kaW5nRGF0YSgxMDAwMDApOwotICBjd25kX2Nv
bnRyb2xsZXJfLlNldERhdGFXaW5kb3coRGF0YVNpemU6OmJ5dGVzKDIwMDAwMCkpOwotCi0gIHVp
bnQzMl90IGJpdHJhdGVfYnBzID0gODAwMDA7Ci0gIGJpdHJhdGVfYnBzID0gY3duZF9jb250cm9s
bGVyXy5VcGRhdGVUYXJnZXRCaXRyYXRlKGJpdHJhdGVfYnBzKTsKLSAgRVhQRUNUX0VRKDgwMDAw
dSwgYml0cmF0ZV9icHMpOwotCi0gIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlTWF4T3V0c3RhbmRp
bmdEYXRhKDIwMDAwKTsKLSAgYml0cmF0ZV9icHMgPSBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZVRh
cmdldEJpdHJhdGUoYml0cmF0ZV9icHMpOwotICBFWFBFQ1RfRVEoODAwMDB1LCBiaXRyYXRlX2Jw
cyk7Ci19Ci0KLVRFU1RfRihDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyVGVzdCwg
TG93Qml0cmF0ZSkgewotICBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZU91dHN0YW5kaW5nRGF0YSgx
MDAwMDApOwotICBjd25kX2NvbnRyb2xsZXJfLlNldERhdGFXaW5kb3coRGF0YVNpemU6OmJ5dGVz
KDUwMDAwKSk7Ci0KLSAgdWludDMyX3QgYml0cmF0ZV9icHMgPSAzNTAwMDsKLSAgYml0cmF0ZV9i
cHMgPSBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZVRhcmdldEJpdHJhdGUoYml0cmF0ZV9icHMpOwot
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDM1MDAwICogMC45KSwgYml0cmF0ZV9i
cHMpOwotCi0gIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlTWF4T3V0c3RhbmRpbmdEYXRhKDIwMDAw
KTsKLSAgYml0cmF0ZV9icHMgPSBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZVRhcmdldEJpdHJhdGUo
Yml0cmF0ZV9icHMpOwotICBFWFBFQ1RfRVEoMzAwMDB1LCBiaXRyYXRlX2Jwcyk7Ci19Ci0KLX0g
IC8vIG5hbWVzcGFjZSB0ZXN0Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9nb29nX2NjL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9C
VUlMRC5nbgppbmRleCBiMTI2OTBiODE3ZTEzY2NjYjVlMDA2M2M5MzczMjNjYTc1YjBhZWMyLi4z
ODE2OWJiYjRkMDI5YTNlODU3MDZjYTZiOWM0ZDc5YjdhNzQ1ZTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2Mv
QlVJTEQuZ24KQEAgLTE5LDEwICsxOSw4IEBAIGNvbmZpZygiYndlX3Rlc3RfbG9nZ2luZyIpIHsK
IHJ0Y19zdGF0aWNfbGlicmFyeSgiZ29vZ19jYyIpIHsKICAgY29uZmlncyArPSBbICI6YndlX3Rl
c3RfbG9nZ2luZyIgXQogICBzb3VyY2VzID0gWwotICAgICJnb29nX2NjX2ZhY3RvcnkuY2MiLAog
ICAgICJnb29nX2NjX25ldHdvcmtfY29udHJvbC5jYyIsCiAgICAgImdvb2dfY2NfbmV0d29ya19j
b250cm9sLmgiLAotICAgICJpbmNsdWRlL2dvb2dfY2NfZmFjdG9yeS5oIiwKICAgXQogCiAgIGRl
cHMgPSBbCkBAIC0zMCw2ICsyOCw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgiZ29vZ19jYyIpIHsK
ICAgICAiOmRlbGF5X2Jhc2VkX2J3ZSIsCiAgICAgIjplc3RpbWF0b3JzIiwKICAgICAiOnByb2Jl
X2NvbnRyb2xsZXIiLAorICAgICI6cHVzaGJhY2tfY29udHJvbGxlciIsCiAgICAgIi4uLy4uOm1v
ZHVsZV9hcGkiLAogICAgICIuLi8uLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vLi4v
YXBpL3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLApAQCAtNDksNiArNDgsMjAgQEAgcnRjX3N0
YXRpY19saWJyYXJ5KCJnb29nX2NjIikgewogICBdCiB9CiAKK3J0Y19zb3VyY2Vfc2V0KCJwdXNo
YmFja19jb250cm9sbGVyIikgeworICBzb3VyY2VzID0gWworICAgICJjb25nZXN0aW9uX3dpbmRv
d19wdXNoYmFja19jb250cm9sbGVyLmNjIiwKKyAgICAiY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJh
Y2tfY29udHJvbGxlci5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi8uLi8uLi9hcGkvdHJh
bnNwb3J0Om5ldHdvcmtfY29udHJvbCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIs
CisgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4v
Li4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICBdCit9CisKIHJ0Y19zb3VyY2Vfc2V0KCJh
bHJfZGV0ZWN0b3IiKSB7CiAgIHNvdXJjZXMgPSBbCiAgICAgImFscl9kZXRlY3Rvci5jYyIsCkBA
IC04NCw2ICs5Nyw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJlc3RpbWF0b3JzIikgewogICBdCiAKICAg
ZGVwcyA9IFsKKyAgICAiLi4vLi4vLi4vYXBpL3VuaXRzOmRhdGFfcmF0ZSIsCiAgICAgIi4uLy4u
Ly4uL2xvZ2dpbmc6cnRjX2V2ZW50X2J3ZSIsCiAgICAgIi4uLy4uLy4uL2xvZ2dpbmc6cnRjX2V2
ZW50X2xvZ19hcGkiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpjaGVja3MiLApAQCAtMTA3LDYg
KzEyMSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJkZWxheV9iYXNlZF9id2UiKSB7CiAKICAgZGVwcyA9
IFsKICAgICAiOmVzdGltYXRvcnMiLAorICAgICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Om5ldHdv
cmtfY29udHJvbCIsCiAgICAgIi4uLy4uLy4uL2xvZ2dpbmc6cnRjX2V2ZW50X2J3ZSIsCiAgICAg
Ii4uLy4uLy4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAogICAgICIuLi8uLi8uLi9ydGNf
YmFzZTpjaGVja3MiLApAQCAtMTE1LDcgKzEzMCw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJkZWxheV9i
YXNlZF9id2UiKSB7CiAgICAgIi4uLy4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKICAg
ICAiLi4vLi4vcGFjaW5nIiwKICAgICAiLi4vLi4vcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yIiwK
KyAgICAiLi4vLi4vcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiB9CiAKQEAgLTE0OSw2ICsxNjYsNyBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6ZXN0aW1hdG9ycyIsCiAgICAgICAiOmdvb2df
Y2MiLAogICAgICAgIi4uOnRlc3RfY29udHJvbGxlcl9wcmludGVyIiwKKyAgICAgICIuLi8uLi8u
Li9hcGkvdHJhbnNwb3J0Omdvb2dfY2MiLAogICAgIF0KICAgfQogICBydGNfc291cmNlX3NldCgi
Z29vZ19jY191bml0dGVzdHMiKSB7CkBAIC0xNTcsNiArMTc1LDcgQEAgaWYgKHJ0Y19pbmNsdWRl
X3Rlc3RzKSB7CiAgICAgc291cmNlcyA9IFsKICAgICAgICJhY2tub3dsZWRnZWRfYml0cmF0ZV9l
c3RpbWF0b3JfdW5pdHRlc3QuY2MiLAogICAgICAgImFscl9kZXRlY3Rvcl91bml0dGVzdC5jYyIs
CisgICAgICAiY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl91bml0dGVzdC5j
YyIsCiAgICAgICAiZGVsYXlfYmFzZWRfYndlX3VuaXR0ZXN0LmNjIiwKICAgICAgICJkZWxheV9i
YXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmNjIiwKICAgICAgICJkZWxheV9iYXNlZF9id2VfdW5p
dHRlc3RfaGVscGVyLmgiLApAQCAtMTc1LDYgKzE5NCw4IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0
cykgewogICAgICAgIjplc3RpbWF0b3JzIiwKICAgICAgICI6Z29vZ19jYyIsCiAgICAgICAiOnBy
b2JlX2NvbnRyb2xsZXIiLAorICAgICAgIjpwdXNoYmFja19jb250cm9sbGVyIiwKKyAgICAgICIu
Li8uLi8uLi9hcGkvdHJhbnNwb3J0Omdvb2dfY2MiLAogICAgICAgIi4uLy4uLy4uL2FwaS90cmFu
c3BvcnQ6bmV0d29ya19jb250cm9sIiwKICAgICAgICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Om5l
dHdvcmtfY29udHJvbF90ZXN0IiwKICAgICAgICIuLi8uLi8uLi9sb2dnaW5nOm1vY2tzIiwKQEAg
LTE5NCw0ICsyMTUsMzkgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgICBdCiAgIH0KKyAgcnRjX3NvdXJj
ZV9zZXQoImdvb2dfY2Nfc2xvd190ZXN0cyIpIHsKKyAgICB0ZXN0b25seSA9IHRydWUKKworICAg
IHNvdXJjZXMgPSBbCisgICAgICAiZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfc2xvd3Rlc3QuY2Mi
LAorICAgIF0KKyAgICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYgaXNfY2xhbmcpIHsKKyAg
ICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2Jh
ZF9jb25zdHJ1Y3RzIiBdCisgICAgfQorICAgIGRlcHMgPSBbCisgICAgICAiOmFscl9kZXRlY3Rv
ciIsCisgICAgICAiOmRlbGF5X2Jhc2VkX2J3ZSIsCisgICAgICAiOmVzdGltYXRvcnMiLAorICAg
ICAgIjpnb29nX2NjIiwKKyAgICAgICI6cHJvYmVfY29udHJvbGxlciIsCisgICAgICAiOnB1c2hi
YWNrX2NvbnRyb2xsZXIiLAorICAgICAgIi4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6Z29vZ19jYyIs
CisgICAgICAiLi4vLi4vLi4vYXBpL3RyYW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAorICAgICAg
Ii4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6bmV0d29ya19jb250cm9sX3Rlc3QiLAorICAgICAgIi4u
Ly4uLy4uL2xvZ2dpbmc6bW9ja3MiLAorICAgICAgIi4uLy4uLy4uL3J0Y19iYXNlOmNoZWNrcyIs
CisgICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICAgIi4u
Ly4uLy4uL3J0Y19iYXNlL2V4cGVyaW1lbnRzOmFscl9leHBlcmltZW50IiwKKyAgICAgICIuLi8u
Li8uLi9zeXN0ZW1fd3JhcHBlcnMiLAorICAgICAgIi4uLy4uLy4uL3N5c3RlbV93cmFwcGVyczpm
aWVsZF90cmlhbCIsCisgICAgICAiLi4vLi4vLi4vdGVzdDpmaWVsZF90cmlhbCIsCisgICAgICAi
Li4vLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAorICAgICAgIi4uLy4uLy4uL3Rlc3Qvc2NlbmFy
aW8iLAorICAgICAgIi4uLy4uL3BhY2luZyIsCisgICAgICAiLi4vLi4vcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yIiwKKyAgICAgICIuLi8uLi9ydHBfcnRjcDpydHBfcnRjcF9mb3JtYXQiLAorICAg
ICAgIi8vdGVzdGluZy9nbW9jayIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWVtb3J5IiwKKyAgICBdCisgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dv
b2dfY2MvYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
Z29vZ19jYy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuY2MKaW5kZXggMDcyMmIyMjE4
YmQ1OTdmNzg3M2Y4YTE3ODc2NmRlNjk3NTU3OTczNS4uOTM5ZGE0Y2MzM2NlYWZkMGI2YjYyZDQ0
ZjdmYzZjZTY0MmFiN2M4YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tu
b3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9hY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuY2MKQEAgLTEwLDExICsxMCwxNSBAQAog
CiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3ds
ZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCIKIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1
ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJzbC9tZW1v
cnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNw
X2RlZmluZXMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTMx
LDcgKzM1LDkgQEAgQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcjo6fkFja25vd2xlZGdlZEJp
dHJhdGVFc3RpbWF0b3IoKSB7fQogCiBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yOjpBY2tu
b3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxCaXRyYXRlRXN0
aW1hdG9yPiBiaXRyYXRlX2VzdGltYXRvcikKLSAgICA6IGJpdHJhdGVfZXN0aW1hdG9yXyhzdGQ6
Om1vdmUoYml0cmF0ZV9lc3RpbWF0b3IpKSB7fQorICAgIDogYWNjb3VudF9mb3JfdW5hY2tub3ds
ZWRnZWRfdHJhZmZpY18oCisgICAgICAgICAgZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRD
LUJ3ZS1BY2NvdW50Rm9yVW5hY2tlZCIpKSwKKyAgICAgIGJpdHJhdGVfZXN0aW1hdG9yXyhzdGQ6
Om1vdmUoYml0cmF0ZV9lc3RpbWF0b3IpKSB7fQogCiB2b2lkIEFja25vd2xlZGdlZEJpdHJhdGVF
c3RpbWF0b3I6OkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoCiAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8UGFja2V0RmVlZGJhY2s+JiBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yKSB7CkBAIC00MSwx
OCArNDcsNDEgQEAgdm9pZCBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yOjpJbmNvbWluZ1Bh
Y2tldEZlZWRiYWNrVmVjdG9yKAogICBmb3IgKGNvbnN0IGF1dG8mIHBhY2tldCA6IHBhY2tldF9m
ZWVkYmFja192ZWN0b3IpIHsKICAgICBpZiAoSXNJblNlbmRUaW1lSGlzdG9yeShwYWNrZXQpKSB7
CiAgICAgICBNYXliZUV4cGVjdEZhc3RSYXRlQ2hhbmdlKHBhY2tldC5zZW5kX3RpbWVfbXMpOwot
ICAgICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5VcGRhdGUocGFja2V0LmFycml2YWxfdGltZV9tcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ+
KHBhY2tldC5wYXlsb2FkX3NpemUpKTsKKyAgICAgIGludCBhY2tub3dsZWRnZWRfZXN0aW1hdGUg
PSBydGM6OmRjaGVja2VkX2Nhc3Q8aW50PihwYWNrZXQucGF5bG9hZF9zaXplKTsKKyAgICAgIGlm
IChhY2NvdW50X2Zvcl91bmFja25vd2xlZGdlZF90cmFmZmljXykKKyAgICAgICAgYWNrbm93bGVk
Z2VkX2VzdGltYXRlICs9IHBhY2tldC51bmFja25vd2xlZGdlZF9kYXRhOworICAgICAgYml0cmF0
ZV9lc3RpbWF0b3JfLT5VcGRhdGUocGFja2V0LmFycml2YWxfdGltZV9tcywgYWNrbm93bGVkZ2Vk
X2VzdGltYXRlKTsKICAgICB9CiAgIH0KIH0KIAogYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IEFj
a25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I6OmJpdHJhdGVfYnBzKCkgY29uc3QgewogICBhdXRv
IGVzdGltYXRlZF9iaXRyYXRlID0gYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRyYXRlX2JwcygpOwot
ICByZXR1cm4gZXN0aW1hdGVkX2JpdHJhdGUKLSAgICAgICAgICAgICA/ICplc3RpbWF0ZWRfYml0
cmF0ZSArCi0gICAgICAgICAgICAgICAgICAgYWxsb2NhdGVkX2JpdHJhdGVfd2l0aG91dF9mZWVk
YmFja19icHNfLnZhbHVlX29yKDApCi0gICAgICAgICAgICAgOiBlc3RpbWF0ZWRfYml0cmF0ZTsK
KyAgLy8gSWYgd2UgYWNjb3VudCBmb3IgdW5hY2tub3dsZWRnZWQgdHJhZmZpYywgd2Ugc2hvdWxk
IG5vdCBhZGQgdGhlIGFsbG9jYXRlZAorICAvLyBiaXRyYXRlIGZvciB1bmFsbG9jYXRlZCBzdHJl
YW0gYXMgd2UgZXhwZWN0IGl0IHRvIGJlIGluY2x1ZGVkIGFscmVhZHkuCisgIGlmIChhY2NvdW50
X2Zvcl91bmFja25vd2xlZGdlZF90cmFmZmljXykgeworICAgIHJldHVybiBlc3RpbWF0ZWRfYml0
cmF0ZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZXN0aW1hdGVkX2JpdHJhdGUKKyAgICAgICAg
ICAgICAgID8gKmVzdGltYXRlZF9iaXRyYXRlICsgYWxsb2NhdGVkX2JpdHJhdGVfd2l0aG91dF9m
ZWVkYmFja19icHNfCisgICAgICAgICAgICAgICA6IGVzdGltYXRlZF9iaXRyYXRlOworICB9Cit9
CisKK2Fic2w6Om9wdGlvbmFsPHVpbnQzMl90PiBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9y
OjpQZWVrQnBzKCkgY29uc3QgeworICByZXR1cm4gYml0cmF0ZV9lc3RpbWF0b3JfLT5QZWVrQnBz
KCk7Cit9CisKK2Fic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBBY2tub3dsZWRnZWRCaXRyYXRlRXN0
aW1hdG9yOjpiaXRyYXRlKCkgY29uc3QgeworICBpZiAoYml0cmF0ZV9icHMoKSkKKyAgICByZXR1
cm4gRGF0YVJhdGU6OmJwcygqYml0cmF0ZV9icHMoKSk7CisgIHJldHVybiBhYnNsOjpudWxsb3B0
OworfQorCithYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGlt
YXRvcjo6UGVla1JhdGUoKSBjb25zdCB7CisgIGlmIChQZWVrQnBzKCkpCisgICAgcmV0dXJuIERh
dGFSYXRlOjpicHMoKlBlZWtCcHMoKSk7CisgIHJldHVybiBhYnNsOjpudWxsb3B0OwogfQogCiB2
b2lkIEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I6OlNldEFsckVuZGVkVGltZU1zKApAQCAt
NjIsNyArOTEsNyBAQCB2b2lkIEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I6OlNldEFsckVu
ZGVkVGltZU1zKAogCiB2b2lkIEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I6OlNldEFsbG9j
YXRlZEJpdHJhdGVXaXRob3V0RmVlZGJhY2soCiAgICAgdWludDMyX3QgYml0cmF0ZV9icHMpIHsK
LSAgYWxsb2NhdGVkX2JpdHJhdGVfd2l0aG91dF9mZWVkYmFja19icHNfLmVtcGxhY2UoYml0cmF0
ZV9icHMpOworICBhbGxvY2F0ZWRfYml0cmF0ZV93aXRob3V0X2ZlZWRiYWNrX2Jwc18gPSBiaXRy
YXRlX2JwczsKIH0KIAogdm9pZCBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9yOjpNYXliZUV4
cGVjdEZhc3RSYXRlQ2hhbmdlKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9h
Y2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2Mv
YWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmgKaW5kZXggY2NiOTcxOGIyNTA5ZTZhYzc4
M2ZlNjkzNTQ3Mzk2M2FmMjk0MmVhNy4uNjQ1YzBiOTEzYTdlMDRlNmI3YTBkNTE2MDBiNzMzODhl
OWQyYTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hY2tub3dsZWRnZWRf
Yml0cmF0ZV9lc3RpbWF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fja25vd2xl
ZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oCkBAIC0xNyw2ICsxNyw4IEBACiAjaW5jbHVkZSAiYWJz
bC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3IuaCIKIAorI2luY2x1ZGUgImFwaS91bml0cy9k
YXRhX3JhdGUuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIHN0cnVjdCBQYWNrZXRGZWVkYmFj
azsKQEAgLTMyLDE0ICszNCwxOCBAQCBjbGFzcyBBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1hdG9y
IHsKICAgdm9pZCBJbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAogICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+JiBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yKTsKICAgYWJz
bDo6b3B0aW9uYWw8dWludDMyX3Q+IGJpdHJhdGVfYnBzKCkgY29uc3Q7CisgIGFic2w6Om9wdGlv
bmFsPHVpbnQzMl90PiBQZWVrQnBzKCkgY29uc3Q7CisgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRl
PiBiaXRyYXRlKCkgY29uc3Q7CisgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBQZWVrUmF0ZSgp
IGNvbnN0OwogICB2b2lkIFNldEFsckVuZGVkVGltZU1zKGludDY0X3QgYWxyX2VuZGVkX3RpbWVf
bXMpOwogICB2b2lkIFNldEFsbG9jYXRlZEJpdHJhdGVXaXRob3V0RmVlZGJhY2sodWludDMyX3Qg
Yml0cmF0ZV9icHMpOwogCiAgcHJpdmF0ZToKICAgdm9pZCBNYXliZUV4cGVjdEZhc3RSYXRlQ2hh
bmdlKGludDY0X3QgcGFja2V0X2Fycml2YWxfdGltZV9tcyk7CisgIGNvbnN0IGJvb2wgYWNjb3Vu
dF9mb3JfdW5hY2tub3dsZWRnZWRfdHJhZmZpY187CiAgIGFic2w6Om9wdGlvbmFsPGludDY0X3Q+
IGFscl9lbmRlZF90aW1lX21zXzsKICAgc3RkOjp1bmlxdWVfcHRyPEJpdHJhdGVFc3RpbWF0b3I+
IGJpdHJhdGVfZXN0aW1hdG9yXzsKLSAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGFsbG9jYXRl
ZF9iaXRyYXRlX3dpdGhvdXRfZmVlZGJhY2tfYnBzXzsKKyAgdWludDMyX3QgYWxsb2NhdGVkX2Jp
dHJhdGVfd2l0aG91dF9mZWVkYmFja19icHNfID0gMDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWxyX2RldGVjdG9yLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuY2MKaW5kZXggZWQ4ZjNhNjZm
NDEyOGM4YzRiZWY4MWE0ZWU3NTY0Mzg5YmNkYmY3Zi4uZGI2Njk0MjhmMDIyMTIzYzU1MWY3NzA0
ZjdmYTU0ZDY4YTZkNGU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJf
ZGV0ZWN0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuY2MK
QEAgLTEwLDIwICsxMCwxNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxzdHJpbmc+CiAK
ICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJsb2dnaW5nL3J0Y19l
dmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudC5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50
X2xvZy9ldmVudHMvcnRjX2V2ZW50X2Fscl9zdGF0ZS5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRj
X2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2lu
Zy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNp
bmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKLSNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIEFsckRldGVjdG9y
OjpBbHJEZXRlY3RvcigpIDogQWxyRGV0ZWN0b3IobnVsbHB0cikge30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvYWxyX2RldGVjdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL2Fscl9kZXRlY3Rvci5oCmluZGV4IDg3NDM1NGJjNTgwZDlmMjBjZWQyOGMxZjFmODBiZmFi
NmI5ODczNjYuLmMzMGJhMWQwOTMyZDE3YjUxY2UzZWE4M2NmYjI0ZDg0M2Y4NGY0ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWxyX2RldGVjdG9yLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9hbHJfZGV0ZWN0b3IuaApAQCAtMTEsMTAgKzExLDExIEBACiAjaWZu
ZGVmIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX0dPT0dfQ0NfQUxSX0RFVEVDVE9SX0hf
CiAjZGVmaW5lIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX0dPT0dfQ0NfQUxSX0RFVEVD
VE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2lu
Y2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIg
IC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL2ludGVy
dmFsX2J1ZGdldC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3JhdGVfc3RhdGlzdGljcy5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9h
bHJfZGV0ZWN0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRl
Y3Rvcl91bml0dGVzdC5jYwppbmRleCAzYTNkMDAyYzIzYmUwODFlNTExZDEyZDJkYmQ3ZWUwMjcx
NzdmOGRmLi40MjUyNjg1MTRkOGIzYTM0NTEwYThjN2ZjM2Y5NWQzNjA5NDU3MGZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvcl91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Fscl9kZXRlY3Rvcl91bml0dGVzdC5jYwpAQCAtMTAs
NiArMTAsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy9hbHJfZGV0ZWN0b3IuaCIKIAorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2Fscl9leHBlcmltZW50LmgiCiAjaW5jbHVkZSAi
dGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2Vz
dGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJv
bGxlci9nb29nX2NjL2JpdHJhdGVfZXN0aW1hdG9yLmNjCmluZGV4IGM3NzY4Mjc4MDJjOWVjMDU4
NzAyYjY4ZGI4OTBjNTliNzAxNDE3YmYuLjBhNDAzOTI3NDI5ZmM5YTIwN2IwM2ZlZjAyMTk0NzZk
ZTEyMTBkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3Rp
bWF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9iaXRyYXRlX2VzdGltYXRvci5j
YwpAQCAtMTAsMTEgKzEwLDExIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9nb29nX2NjL2JpdHJhdGVfZXN0aW1hdG9yLmgiCiAKKyNpbmNsdWRlIDxzdGRpby5o
PgogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgIm1vZHVs
ZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3QvYndlX3Rlc3RfbG9nZ2luZy5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNs
dWRlL2ZpZWxkX3RyaWFsLmgiCiAKQEAgLTEzMiw2ICsxMzIsMTIgQEAgYWJzbDo6b3B0aW9uYWw8
dWludDMyX3Q+IEJpdHJhdGVFc3RpbWF0b3I6OmJpdHJhdGVfYnBzKCkgY29uc3QgewogICByZXR1
cm4gYml0cmF0ZV9lc3RpbWF0ZV8gKiAxMDAwOwogfQogCithYnNsOjpvcHRpb25hbDx1aW50MzJf
dD4gQml0cmF0ZUVzdGltYXRvcjo6UGVla0JwcygpIGNvbnN0IHsKKyAgaWYgKGN1cnJlbnRfd2lu
ZG93X21zXyA+IDApCisgICAgcmV0dXJuIHN1bV8gKiA4MDAwIC8gY3VycmVudF93aW5kb3dfbXNf
OworICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKK30KKwogdm9pZCBCaXRyYXRlRXN0aW1hdG9yOjpF
eHBlY3RGYXN0UmF0ZUNoYW5nZSgpIHsKICAgLy8gQnkgc2V0dGluZyB0aGUgYml0cmF0ZS1lc3Rp
bWF0ZSB2YXJpYW5jZSB0byBhIGhpZ2hlciB2YWx1ZSB3ZSBhbGxvdyB0aGUKICAgLy8gYml0cmF0
ZSB0byBjaGFuZ2UgZmFzdCBmb3IgdGhlIG5leHQgZmV3IHNhbXBsZXMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9nb29nX2NjL2JpdHJhdGVfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2JpdHJhdGVfZXN0aW1hdG9yLmgKaW5kZXggNjEwZmEyMTRlN2E5MDBjOTk5MmI4
YzIyMTU4NTYzZDI5YzM5NzhjMi4uZDNkZjJiNTEwNDcyZDBhODE1MTFhOGM3ODE5YzRkNmUwZWY5
ZGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9iaXRyYXRlX2VzdGltYXRv
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYml0cmF0ZV9lc3RpbWF0b3IuaApAQCAt
MTEsNyArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9HT09H
X0NDX0JJVFJBVEVfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVMRVNfQ09OR0VTVElPTl9DT05U
Uk9MTEVSX0dPT0dfQ0NfQklUUkFURV9FU1RJTUFUT1JfSF8KIAotI2luY2x1ZGUgPHZlY3Rvcj4K
KyNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
IApAQCAtMjksNiArMjksNyBAQCBjbGFzcyBCaXRyYXRlRXN0aW1hdG9yIHsKICAgdmlydHVhbCB2
b2lkIFVwZGF0ZShpbnQ2NF90IG5vd19tcywgaW50IGJ5dGVzKTsKIAogICB2aXJ0dWFsIGFic2w6
Om9wdGlvbmFsPHVpbnQzMl90PiBiaXRyYXRlX2JwcygpIGNvbnN0OworICBhYnNsOjpvcHRpb25h
bDx1aW50MzJfdD4gUGVla0JwcygpIGNvbnN0OwogCiAgIHZpcnR1YWwgdm9pZCBFeHBlY3RGYXN0
UmF0ZUNoYW5nZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nvbmdl
c3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWU1OWNiNWI0ZGZlMTAyMTQ0ZTBlNmIzOThlNTFlY2Q2NmE2MjljMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29u
dHJvbGxlci5jYwpAQCAtMCwwICsxLDk5IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJtb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNr
X2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9mb3JtYXRfbWFjcm9zLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1
ZGUvZmllbGRfdHJpYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFdoZW4gQ29uZ2Vz
dGlvbldpbmRvd1B1c2hiYWNrIGlzIGVuYWJsZWQsIHRoZSBwYWNlciBpcyBvYmxpdmlvdXMgdG8K
Ky8vIHRoZSBjb25nZXN0aW9uIHdpbmRvdy4gVGhlIHJlbGF0aW9uIGJldHdlZW4gb3V0c3RhbmRp
bmcgZGF0YSBhbmQKKy8vIHRoZSBjb25nZXN0aW9uIHdpbmRvdyBhZmZlY3RzIGVuY29kZXIgYWxs
b2NhdGlvbnMgZGlyZWN0bHkuCisvLyBUaGlzIGV4cGVyaW1lbnQgaXMgYnVpbGQgb24gdG9wIG9m
IGNvbmdlc3Rpb24gd2luZG93IGV4cGVyaW1lbnQuCitjb25zdCBjaGFyIGtDb25nZXN0aW9uUHVz
aGJhY2tFeHBlcmltZW50W10gPSAiV2ViUlRDLUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFjayI7Citj
b25zdCB1aW50MzJfdCBrRGVmYXVsdE1pblB1c2hiYWNrVGFyZ2V0Qml0cmF0ZUJwcyA9IDMwMDAw
OworCitib29sIFJlYWRDb25nZXN0aW9uV2luZG93UHVzaGJhY2tFeHBlcmltZW50UGFyYW1ldGVy
KAorICAgIHVpbnQzMl90KiBtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzKSB7CisgIFJU
Q19EQ0hFQ0sobWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwcyk7CisgIHN0ZDo6c3RyaW5n
IGV4cGVyaW1lbnRfc3RyaW5nID0KKyAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxs
TmFtZShrQ29uZ2VzdGlvblB1c2hiYWNrRXhwZXJpbWVudCk7CisgIGludCBwYXJzZWRfdmFsdWVz
ID0gc3NjYW5mKGV4cGVyaW1lbnRfc3RyaW5nLmNfc3RyKCksICJFbmFibGVkLSUiIFBSSXUzMiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRl
X2Jwcyk7CisgIGlmIChwYXJzZWRfdmFsdWVzID09IDEpIHsKKyAgICBSVENfQ0hFQ0tfR0UoKm1p
bl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHMsIDApCisgICAgICAgIDw8ICJNaW4gcHVzaGJh
Y2sgdGFyZ2V0IGJpdHJhdGUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4iOwor
ICAgIHJldHVybiB0cnVlOworICB9CisgIHJldHVybiBmYWxzZTsKK30KKworQ29uZ2VzdGlvbldp
bmRvd1B1c2hiYWNrQ29udHJvbGxlcjo6Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxl
cigpIHsKKyAgaWYgKCFSZWFkQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrRXhwZXJpbWVudFBhcmFt
ZXRlcigKKyAgICAgICAgICAmbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc18pKSB7Cisg
ICAgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc18gPSBrRGVmYXVsdE1pblB1c2hiYWNr
VGFyZ2V0Qml0cmF0ZUJwczsKKyAgfQorfQorCitDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250
cm9sbGVyOjpDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyKAorICAgIHVpbnQzMl90
IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHMpCisgICAgOiBtaW5fcHVzaGJhY2tfdGFy
Z2V0X2JpdHJhdGVfYnBzXyhtaW5fcHVzaGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzKSB7fQorCit2
b2lkIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI6OlVwZGF0ZU91dHN0YW5kaW5n
RGF0YSgKKyAgICBzaXplX3Qgb3V0c3RhbmRpbmdfYnl0ZXMpIHsKKyAgb3V0c3RhbmRpbmdfYnl0
ZXNfID0gb3V0c3RhbmRpbmdfYnl0ZXM7Cit9CisKK3ZvaWQgQ29uZ2VzdGlvbldpbmRvd1B1c2hi
YWNrQ29udHJvbGxlcjo6VXBkYXRlTWF4T3V0c3RhbmRpbmdEYXRhKAorICAgIHNpemVfdCBtYXhf
b3V0c3RhbmRpbmdfYnl0ZXMpIHsKKyAgRGF0YVNpemUgZGF0YV93aW5kb3cgPSBEYXRhU2l6ZTo6
Ynl0ZXMobWF4X291dHN0YW5kaW5nX2J5dGVzKTsKKyAgaWYgKGN1cnJlbnRfZGF0YV93aW5kb3df
KSB7CisgICAgZGF0YV93aW5kb3cgPSAoZGF0YV93aW5kb3cgKyBjdXJyZW50X2RhdGFfd2luZG93
Xy52YWx1ZSgpKSAvIDI7CisgIH0KKyAgY3VycmVudF9kYXRhX3dpbmRvd18gPSBkYXRhX3dpbmRv
dzsKK30KKwordm9pZCBDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyOjpTZXREYXRh
V2luZG93KERhdGFTaXplIGRhdGFfd2luZG93KSB7CisgIGN1cnJlbnRfZGF0YV93aW5kb3dfID0g
ZGF0YV93aW5kb3c7Cit9CisKK3VpbnQzMl90IENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRy
b2xsZXI6OlVwZGF0ZVRhcmdldEJpdHJhdGUoCisgICAgdWludDMyX3QgYml0cmF0ZV9icHMpIHsK
KyAgaWYgKCFjdXJyZW50X2RhdGFfd2luZG93XyB8fCBjdXJyZW50X2RhdGFfd2luZG93Xy0+SXNa
ZXJvKCkpCisgICAgcmV0dXJuIGJpdHJhdGVfYnBzOworICBkb3VibGUgZmlsbF9yYXRpbyA9Cisg
ICAgICBvdXRzdGFuZGluZ19ieXRlc18gLyBzdGF0aWNfY2FzdDxkb3VibGU+KGN1cnJlbnRfZGF0
YV93aW5kb3dfLT5ieXRlcygpKTsKKyAgaWYgKGZpbGxfcmF0aW8gPiAxLjUpIHsKKyAgICBlbmNv
ZGluZ19yYXRlX3JhdGlvXyAqPSAwLjk7CisgIH0gZWxzZSBpZiAoZmlsbF9yYXRpbyA+IDEpIHsK
KyAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyAqPSAwLjk1OworICB9IGVsc2UgaWYgKGZpbGxfcmF0
aW8gPCAwLjEpIHsKKyAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyA9IDEuMDsKKyAgfSBlbHNlIHsK
KyAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyAqPSAxLjA1OworICAgIGVuY29kaW5nX3JhdGVfcmF0
aW9fID0gc3RkOjptaW4oZW5jb2RpbmdfcmF0ZV9yYXRpb18sIDEuMCk7CisgIH0KKyAgdWludDMy
X3QgYWRqdXN0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzID0KKyAgICAgIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihiaXRyYXRlX2JwcyAqIGVuY29kaW5nX3JhdGVfcmF0aW9fKTsKKworICAvLyBEbyBub3Qg
YWRqdXN0IGJlbG93IHRoZSBtaW5pbXVtIHB1c2hiYWNrIGJpdHJhdGUgYnV0IGRvIG9iZXkgaWYg
dGhlCisgIC8vIG9yaWdpbmFsIGVzdGltYXRlIGlzIGJlbG93IGl0LgorICBiaXRyYXRlX2JwcyA9
IGFkanVzdGVkX3RhcmdldF9iaXRyYXRlX2JwcyA8IG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0
ZV9icHNfCisgICAgICAgICAgICAgICAgICAgID8gc3RkOjptaW4oYml0cmF0ZV9icHMsIG1pbl9w
dXNoYmFja190YXJnZXRfYml0cmF0ZV9icHNfKQorICAgICAgICAgICAgICAgICAgICA6IGFkanVz
dGVkX3RhcmdldF9iaXRyYXRlX2JwczsKKyAgcmV0dXJuIGJpdHJhdGVfYnBzOworfQorCit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nv
bmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dv
b2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdlZjA5NzRjY2UzNDU5NjExZDkwYTc0YjJhZDY5NjljZmY3YWFmMzgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2Nv
bnRyb2xsZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lm
bmRlZiBNT0RVTEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9HT09HX0NDX0NPTkdFU1RJT05fV0lO
RE9XX1BVU0hCQUNLX0NPTlRST0xMRVJfSF8KKyNkZWZpbmUgTU9EVUxFU19DT05HRVNUSU9OX0NP
TlRST0xMRVJfR09PR19DQ19DT05HRVNUSU9OX1dJTkRPV19QVVNIQkFDS19DT05UUk9MTEVSX0hf
CisKKyNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuaCIKKworbmFtZXNwYWNl
IHdlYnJ0YyB7CisKKy8vIFRoaXMgY2xhc3MgZW5hYmxlcyBwdXNoYmFjayBmcm9tIGNvbmdlc3Rp
b24gd2luZG93IGRpcmVjdGx5IHRvIHZpZGVvIGVuY29kZXIuCisvLyBXaGVuIHRoZSBjb25nZXN0
aW9uIHdpbmRvdyBpcyBmaWxsaW5nIHVwLCB0aGUgdmlkZW8gZW5jb2RlciB0YXJnZXQgYml0cmF0
ZQorLy8gd2lsbCBiZSByZWR1Y2VkIGFjY29yZGluZ2x5IHRvIGFjY29tbW9kYXRlIHRoZSBuZXR3
b3JrIGNoYW5nZXMuIFRvIGF2b2lkCisvLyBwYXVzaW5nIHZpZGVvIHRvbyBmcmVxdWVudGx5LCBh
IG1pbmltdW0gZW5jb2RlciB0YXJnZXQgYml0cmF0ZSB0aHJlc2hvbGQgaXMKKy8vIHVzZWQgdG8g
cHJldmVudCB2aWRlbyBwYXVzZSBkdWUgdG8gYSBmdWxsIGNvbmdlc3Rpb24gd2luZG93LgorY2xh
c3MgQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlciB7CisgcHVibGljOgorICBDb25n
ZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyKCk7CisgIGV4cGxpY2l0IENvbmdlc3Rpb25X
aW5kb3dQdXNoYmFja0NvbnRyb2xsZXIoCisgICAgICB1aW50MzJfdCBtaW5fcHVzaGJhY2tfdGFy
Z2V0X2JpdHJhdGVfYnBzKTsKKyAgdm9pZCBVcGRhdGVPdXRzdGFuZGluZ0RhdGEoc2l6ZV90IG91
dHN0YW5kaW5nX2J5dGVzKTsKKyAgdm9pZCBVcGRhdGVNYXhPdXRzdGFuZGluZ0RhdGEoc2l6ZV90
IG1heF9vdXRzdGFuZGluZ19ieXRlcyk7CisgIHVpbnQzMl90IFVwZGF0ZVRhcmdldEJpdHJhdGUo
dWludDMyX3QgYml0cmF0ZV9icHMpOworICB2b2lkIFNldERhdGFXaW5kb3coRGF0YVNpemUgZGF0
YV93aW5kb3cpOworCisgcHJpdmF0ZToKKyAgYWJzbDo6b3B0aW9uYWw8RGF0YVNpemU+IGN1cnJl
bnRfZGF0YV93aW5kb3dfOworICBzaXplX3Qgb3V0c3RhbmRpbmdfYnl0ZXNfID0gMDsKKyAgdWlu
dDMyX3QgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2Jwc187CisgIGRvdWJsZSBlbmNvZGlu
Z19yYXRlX3JhdGlvXyA9IDEuMDsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2Vu
ZGlmICAvLyBNT0RVTEVTX0NPTkdFU1RJT05fQ09OVFJPTExFUl9HT09HX0NDX0NPTkdFU1RJT05f
V0lORE9XX1BVU0hCQUNLX0NPTlRST0xMRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29u
dHJvbGxlcl91bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDYxN2VlYmI1MmNjZTk4M2IyMGI4ZWQ0
Zjc5OGIyNWM4NjZjNmE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyX3VuaXR0ZXN0LmNjCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisg
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19j
b250cm9sbGVyLmgiCisjaW5jbHVkZSAidGVzdC9nbW9jay5oIgorI2luY2x1ZGUgInRlc3QvZ3Rl
c3QuaCIKKwordXNpbmcgdGVzdGluZzo6XzsKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3Bh
Y2UgdGVzdCB7CisKK2NsYXNzIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXJUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBDb25nZXN0aW9uV2lu
ZG93UHVzaGJhY2tDb250cm9sbGVyIGN3bmRfY29udHJvbGxlcl87Cit9OworCitURVNUX0YoQ29u
Z2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJvbGxlclRlc3QsIEZ1bGxDb25nZXN0aW9uV2luZG93
KSB7CisgIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlT3V0c3RhbmRpbmdEYXRhKDEwMDAwMCk7Cisg
IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlTWF4T3V0c3RhbmRpbmdEYXRhKDUwMDAwKTsKKworICB1
aW50MzJfdCBiaXRyYXRlX2JwcyA9IDgwMDAwOworICBiaXRyYXRlX2JwcyA9IGN3bmRfY29udHJv
bGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7CisgIEVYUEVDVF9FUSg3MjAw
MHUsIGJpdHJhdGVfYnBzKTsKKworICBjd25kX2NvbnRyb2xsZXJfLlVwZGF0ZU1heE91dHN0YW5k
aW5nRGF0YSg1MDAwMCk7CisgIGJpdHJhdGVfYnBzID0gY3duZF9jb250cm9sbGVyXy5VcGRhdGVU
YXJnZXRCaXRyYXRlKGJpdHJhdGVfYnBzKTsKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHVpbnQz
Ml90Pig3MjAwMCAqIDAuOSAqIDAuOSksIGJpdHJhdGVfYnBzKTsKK30KKworVEVTVF9GKENvbmdl
c3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXJUZXN0LCBOb3JtYWxDb25nZXN0aW9uV2luZG93
KSB7CisgIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlT3V0c3RhbmRpbmdEYXRhKDEwMDAwMCk7Cisg
IGN3bmRfY29udHJvbGxlcl8uU2V0RGF0YVdpbmRvdyhEYXRhU2l6ZTo6Ynl0ZXMoMjAwMDAwKSk7
CisKKyAgdWludDMyX3QgYml0cmF0ZV9icHMgPSA4MDAwMDsKKyAgYml0cmF0ZV9icHMgPSBjd25k
X2NvbnRyb2xsZXJfLlVwZGF0ZVRhcmdldEJpdHJhdGUoYml0cmF0ZV9icHMpOworICBFWFBFQ1Rf
RVEoODAwMDB1LCBiaXRyYXRlX2Jwcyk7CisKKyAgY3duZF9jb250cm9sbGVyXy5VcGRhdGVNYXhP
dXRzdGFuZGluZ0RhdGEoMjAwMDApOworICBiaXRyYXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8u
VXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRlX2Jwcyk7CisgIEVYUEVDVF9FUSg4MDAwMHUsIGJp
dHJhdGVfYnBzKTsKK30KKworVEVTVF9GKENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xs
ZXJUZXN0LCBMb3dCaXRyYXRlKSB7CisgIGN3bmRfY29udHJvbGxlcl8uVXBkYXRlT3V0c3RhbmRp
bmdEYXRhKDEwMDAwMCk7CisgIGN3bmRfY29udHJvbGxlcl8uU2V0RGF0YVdpbmRvdyhEYXRhU2l6
ZTo6Ynl0ZXMoNTAwMDApKTsKKworICB1aW50MzJfdCBiaXRyYXRlX2JwcyA9IDM1MDAwOworICBi
aXRyYXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0Qml0cmF0ZShiaXRyYXRl
X2Jwcyk7CisgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1aW50MzJfdD4oMzUwMDAgKiAwLjkpLCBi
aXRyYXRlX2Jwcyk7CisKKyAgY3duZF9jb250cm9sbGVyXy5VcGRhdGVNYXhPdXRzdGFuZGluZ0Rh
dGEoMjAwMDApOworICBiaXRyYXRlX2JwcyA9IGN3bmRfY29udHJvbGxlcl8uVXBkYXRlVGFyZ2V0
Qml0cmF0ZShiaXRyYXRlX2Jwcyk7CisgIEVYUEVDVF9FUSgzMDAwMHUsIGJpdHJhdGVfYnBzKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2UuY2MKaW5kZXggYzIxOTY2Y2Y3ZjU0NDRk
ZTg3MTI2YTJkYzY4ZWFiYjM1MGEzNGYxMS4uNDg5NGM5ODYzYjY4MzYxMTNjNWUxM2JiYWMzOWQ0
ODkyY2U3MDllOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNl
ZF9id2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2UuY2MK
QEAgLTExLDI2ICsxMSwyNSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0j
aW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxjc3RkaW8+CiAj
aW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5j
bHVkZSAiYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmgiICAvLyBGb3IgUGFjZWRQYWNrZXRJ
bmZvCisjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNfZXZlbnQuaCIK
ICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9id2VfdXBk
YXRlX2RlbGF5X2Jhc2VkLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19l
dmVudF9sb2cuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL3RyZW5kbGluZV9lc3RpbWF0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNl
ZF9zZW5kZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9p
bmNsdWRlL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3QvYndlX3Rlc3RfbG9nZ2luZy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhy
ZWFkX2Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmll
bGRfdHJpYWwuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgi
CiAKK25hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKLXN0YXRpYyBjb25zdCBpbnQ2NF90
IGtTdHJlYW1UaW1lT3V0TXMgPSAyMDAwOworY29uc3RleHByIFRpbWVEZWx0YSBrU3RyZWFtVGlt
ZU91dCA9IFRpbWVEZWx0YTo6U2Vjb25kczwyPigpOwogY29uc3RleHByIGludCBrVGltZXN0YW1w
R3JvdXBMZW5ndGhNcyA9IDU7CiBjb25zdGV4cHIgaW50IGtBYnNTZW5kVGltZUZyYWN0aW9uID0g
MTg7CiBjb25zdGV4cHIgaW50IGtBYnNTZW5kVGltZUludGVyQXJyaXZhbFVwc2hpZnQgPSA4OwpA
QCAtNjMsMjQgKzYyLDIyIEBAIHNpemVfdCBSZWFkVHJlbmRsaW5lRmlsdGVyV2luZG93U2l6ZSgp
IHsKICAgICAgIHJldHVybiB3aW5kb3dfc2l6ZTsKICAgICBSVENfTE9HKFdBUk5JTkcpIDw8ICJX
aW5kb3cgc2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxLiI7CiAgIH0KLSAgUlRDX0xPRyhMU19X
QVJOSU5HKSA8PCAiRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlcnMgZm9yIEJ3ZVRyZW5kbGluZUZp
bHRlciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVyaW1lbnQgZnJvbSBmaWVsZCB0
cmlhbCBzdHJpbmcuIFVzaW5nIGRlZmF1bHQuIjsKKyAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
RmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlcnMgZm9yIEJ3ZVdpbmRvd1NpemVJblBhY2tldHMiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIiBleHBlcmltZW50IGZyb20gZmllbGQgdHJpYWwgc3Ry
aW5nLiBVc2luZyBkZWZhdWx0LiI7CiAgIHJldHVybiBrRGVmYXVsdFRyZW5kbGluZVdpbmRvd1Np
emU7CiB9CiB9ICAvLyBuYW1lc3BhY2UKIAotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KIERlbGF5QmFz
ZWRCd2U6OlJlc3VsdDo6UmVzdWx0KCkKICAgICA6IHVwZGF0ZWQoZmFsc2UpLAogICAgICAgcHJv
YmUoZmFsc2UpLAotICAgICAgdGFyZ2V0X2JpdHJhdGVfYnBzKDApLAorICAgICAgdGFyZ2V0X2Jp
dHJhdGUoRGF0YVJhdGU6Olplcm8oKSksCiAgICAgICByZWNvdmVyZWRfZnJvbV9vdmVydXNlKGZh
bHNlKSB7fQogCi1EZWxheUJhc2VkQndlOjpSZXN1bHQ6OlJlc3VsdChib29sIHByb2JlLCB1aW50
MzJfdCB0YXJnZXRfYml0cmF0ZV9icHMpCitEZWxheUJhc2VkQndlOjpSZXN1bHQ6OlJlc3VsdChi
b29sIHByb2JlLCBEYXRhUmF0ZSB0YXJnZXRfYml0cmF0ZSkKICAgICA6IHVwZGF0ZWQodHJ1ZSks
CiAgICAgICBwcm9iZShwcm9iZSksCi0gICAgICB0YXJnZXRfYml0cmF0ZV9icHModGFyZ2V0X2Jp
dHJhdGVfYnBzKSwKKyAgICAgIHRhcmdldF9iaXRyYXRlKHRhcmdldF9iaXRyYXRlKSwKICAgICAg
IHJlY292ZXJlZF9mcm9tX292ZXJ1c2UoZmFsc2UpIHt9CiAKIERlbGF5QmFzZWRCd2U6OlJlc3Vs
dDo6flJlc3VsdCgpIHt9CkBAIC04OSw5ICs4Niw4IEBAIERlbGF5QmFzZWRCd2U6OkRlbGF5QmFz
ZWRCd2UoUnRjRXZlbnRMb2cqIGV2ZW50X2xvZykKICAgICA6IGV2ZW50X2xvZ18oZXZlbnRfbG9n
KSwKICAgICAgIGludGVyX2Fycml2YWxfKCksCiAgICAgICBkZWxheV9kZXRlY3Rvcl8oKSwKLSAg
ICAgIGxhc3Rfc2Vlbl9wYWNrZXRfbXNfKC0xKSwKKyAgICAgIGxhc3Rfc2Vlbl9wYWNrZXRfKFRp
bWVzdGFtcDo6TWludXNJbmZpbml0eSgpKSwKICAgICAgIHVtYV9yZWNvcmRlZF8oZmFsc2UpLAot
ICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfKGV2ZW50X2xvZyksCiAgICAgICB0cmVuZGxp
bmVfd2luZG93X3NpemVfKAogICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxl
ZChrQndlV2luZG93U2l6ZUluUGFja2V0c0V4cGVyaW1lbnQpCiAgICAgICAgICAgICAgID8gUmVh
ZFRyZW5kbGluZUZpbHRlcldpbmRvd1NpemUoKQpAQCAtOTksNyArOTUsNyBAQCBEZWxheUJhc2Vk
QndlOjpEZWxheUJhc2VkQndlKFJ0Y0V2ZW50TG9nKiBldmVudF9sb2cpCiAgICAgICB0cmVuZGxp
bmVfc21vb3RoaW5nX2NvZWZmXyhrRGVmYXVsdFRyZW5kbGluZVNtb290aGluZ0NvZWZmKSwKICAg
ICAgIHRyZW5kbGluZV90aHJlc2hvbGRfZ2Fpbl8oa0RlZmF1bHRUcmVuZGxpbmVUaHJlc2hvbGRH
YWluKSwKICAgICAgIGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXygwKSwKLSAgICAgIHBy
ZXZfYml0cmF0ZV8oMCksCisgICAgICBwcmV2X2JpdHJhdGVfKERhdGFSYXRlOjpaZXJvKCkpLAog
ICAgICAgcHJldl9zdGF0ZV8oQmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1hbCkgewogICBSVENfTE9H
KExTX0lORk8pCiAgICAgICA8PCAiVXNpbmcgVHJlbmRsaW5lIGZpbHRlciBmb3IgZGVsYXkgY2hh
bmdlIGVzdGltYXRpb24gd2l0aCB3aW5kb3cgc2l6ZSAiCkBAIC0xMTMsOCArMTA5LDkgQEAgRGVs
YXlCYXNlZEJ3ZTo6fkRlbGF5QmFzZWRCd2UoKSB7fQogCiBEZWxheUJhc2VkQndlOjpSZXN1bHQg
RGVsYXlCYXNlZEJ3ZTo6SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4mIHBhY2tldF9mZWVkYmFja192ZWN0b3IsCi0gICAg
YWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGFja2VkX2JpdHJhdGVfYnBzLAotICAgIGludDY0X3Qg
YXRfdGltZV9tcykgeworICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBhY2tlZF9iaXRyYXRl
LAorICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBwcm9iZV9iaXRyYXRlLAorICAgIFRpbWVz
dGFtcCBhdF90aW1lKSB7CiAgIFJUQ19EQ0hFQ0soc3RkOjppc19zb3J0ZWQocGFja2V0X2ZlZWRi
YWNrX3ZlY3Rvci5iZWdpbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9m
ZWVkYmFja192ZWN0b3IuZW5kKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0
RmVlZGJhY2tDb21wYXJhdG9yKCkpKTsKQEAgLTE0MSw3ICsxMzgsNyBAQCBEZWxheUJhc2VkQndl
OjpSZXN1bHQgRGVsYXlCYXNlZEJ3ZTo6SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKICAg
ICBpZiAocGFja2V0X2ZlZWRiYWNrLnNlbmRfdGltZV9tcyA8IDApCiAgICAgICBjb250aW51ZTsK
ICAgICBkZWxheWVkX2ZlZWRiYWNrID0gZmFsc2U7Ci0gICAgSW5jb21pbmdQYWNrZXRGZWVkYmFj
ayhwYWNrZXRfZmVlZGJhY2ssIGF0X3RpbWVfbXMpOworICAgIEluY29taW5nUGFja2V0RmVlZGJh
Y2socGFja2V0X2ZlZWRiYWNrLCBhdF90aW1lKTsKICAgICBpZiAocHJldl9kZXRlY3Rvcl9zdGF0
ZSA9PSBCYW5kd2lkdGhVc2FnZTo6a0J3VW5kZXJ1c2luZyAmJgogICAgICAgICBkZWxheV9kZXRl
Y3Rvcl8tPlN0YXRlKCkgPT0gQmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1hbCkgewogICAgICAgcmVj
b3ZlcmVkX2Zyb21fb3ZlcnVzZSA9IHRydWU7CkBAIC0xNTAsNDMgKzE0Nyw1MSBAQCBEZWxheUJh
c2VkQndlOjpSZXN1bHQgRGVsYXlCYXNlZEJ3ZTo6SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3Rv
cigKICAgfQogCiAgIGlmIChkZWxheWVkX2ZlZWRiYWNrKSB7Ci0gICAgKytjb25zZWN1dGl2ZV9k
ZWxheWVkX2ZlZWRiYWNrc187Ci0gICAgaWYgKGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tz
XyA+PSBrTWF4Q29uc2VjdXRpdmVGYWlsZWRMb29rdXBzKSB7Ci0gICAgICBjb25zZWN1dGl2ZV9k
ZWxheWVkX2ZlZWRiYWNrc18gPSAwOwotICAgICAgcmV0dXJuIE9uTG9uZ0ZlZWRiYWNrRGVsYXko
cGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5iYWNrKCkuYXJyaXZhbF90aW1lX21zKTsKLSAgICB9Cisg
ICAgVGltZXN0YW1wIGFycml2YWxfdGltZSA9IFRpbWVzdGFtcDo6UGx1c0luZmluaXR5KCk7Cisg
ICAgaWYgKHBhY2tldF9mZWVkYmFja192ZWN0b3IuYmFjaygpLmFycml2YWxfdGltZV9tcyA+IDAp
CisgICAgICBhcnJpdmFsX3RpbWUgPQorICAgICAgICAgIFRpbWVzdGFtcDo6bXMocGFja2V0X2Zl
ZWRiYWNrX3ZlY3Rvci5iYWNrKCkuYXJyaXZhbF90aW1lX21zKTsKKyAgICByZXR1cm4gT25EZWxh
eWVkRmVlZGJhY2soYXJyaXZhbF90aW1lKTsKKwogICB9IGVsc2UgewogICAgIGNvbnNlY3V0aXZl
X2RlbGF5ZWRfZmVlZGJhY2tzXyA9IDA7Ci0gICAgcmV0dXJuIE1heWJlVXBkYXRlRXN0aW1hdGUo
YWNrZWRfYml0cmF0ZV9icHMsIHJlY292ZXJlZF9mcm9tX292ZXJ1c2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXRfdGltZV9tcyk7CisgICAgcmV0dXJuIE1heWJlVXBkYXRlRXN0
aW1hdGUoYWNrZWRfYml0cmF0ZSwgcHJvYmVfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWNvdmVyZWRfZnJvbV9vdmVydXNlLCBhdF90aW1lKTsKKyAgfQorICByZXR1
cm4gUmVzdWx0KCk7Cit9CisKK0RlbGF5QmFzZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndlOjpP
bkRlbGF5ZWRGZWVkYmFjayhUaW1lc3RhbXAgcmVjZWl2ZV90aW1lKSB7CisgICsrY29uc2VjdXRp
dmVfZGVsYXllZF9mZWVkYmFja3NfOworICBpZiAoY29uc2VjdXRpdmVfZGVsYXllZF9mZWVkYmFj
a3NfID49IGtNYXhDb25zZWN1dGl2ZUZhaWxlZExvb2t1cHMpIHsKKyAgICBjb25zZWN1dGl2ZV9k
ZWxheWVkX2ZlZWRiYWNrc18gPSAwOworICAgIHJldHVybiBPbkxvbmdGZWVkYmFja0RlbGF5KHJl
Y2VpdmVfdGltZSk7CiAgIH0KICAgcmV0dXJuIFJlc3VsdCgpOwogfQogCiBEZWxheUJhc2VkQndl
OjpSZXN1bHQgRGVsYXlCYXNlZEJ3ZTo6T25Mb25nRmVlZGJhY2tEZWxheSgKLSAgICBpbnQ2NF90
IGFycml2YWxfdGltZV9tcykgeworICAgIFRpbWVzdGFtcCBhcnJpdmFsX3RpbWUpIHsKICAgLy8g
RXN0aW1hdGUgc2hvdWxkIGFsd2F5cyBiZSB2YWxpZCBzaW5jZSBhIHN0YXJ0IGJpdHJhdGUgYWx3
YXlzIGlzIHNldCBpbiB0aGUKICAgLy8gQ2FsbCBjb25zdHJ1Y3Rvci4gQW4gYWx0ZXJuYXRpdmUg
d291bGQgYmUgdG8gcmV0dXJuIGFuIGVtcHR5IFJlc3VsdCBoZXJlLAogICAvLyBvciB0byBlc3Rp
bWF0ZSB0aGUgdGhyb3VnaHB1dCBiYXNlZCBvbiB0aGUgZmVlZGJhY2sgd2UgcmVjZWl2ZWQuCiAg
IFJUQ19EQ0hFQ0socmF0ZV9jb250cm9sXy5WYWxpZEVzdGltYXRlKCkpOwotICByYXRlX2NvbnRy
b2xfLlNldEVzdGltYXRlKHJhdGVfY29udHJvbF8uTGF0ZXN0RXN0aW1hdGUoKSAvIDIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJyaXZhbF90aW1lX21zKTsKKyAgcmF0ZV9jb250cm9s
Xy5TZXRFc3RpbWF0ZShyYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCkgLyAyLCBhcnJpdmFs
X3RpbWUpOwogICBSZXN1bHQgcmVzdWx0OwogICByZXN1bHQudXBkYXRlZCA9IHRydWU7CiAgIHJl
c3VsdC5wcm9iZSA9IGZhbHNlOwotICByZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBzID0gcmF0ZV9j
b250cm9sXy5MYXRlc3RFc3RpbWF0ZSgpOworICByZXN1bHQudGFyZ2V0X2JpdHJhdGUgPSByYXRl
X2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7CiAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkxv
bmcgZmVlZGJhY2sgZGVsYXkgZGV0ZWN0ZWQsIHJlZHVjaW5nIEJXRSB0byAiCi0gICAgICAgICAg
ICAgICAgICAgICAgPDwgcmVzdWx0LnRhcmdldF9iaXRyYXRlX2JwczsKKyAgICAgICAgICAgICAg
ICAgICAgICA8PCBUb1N0cmluZyhyZXN1bHQudGFyZ2V0X2JpdHJhdGUpOwogICByZXR1cm4gcmVz
dWx0OwogfQogCiB2b2lkIERlbGF5QmFzZWRCd2U6OkluY29taW5nUGFja2V0RmVlZGJhY2soCiAg
ICAgY29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tldF9mZWVkYmFjaywKLSAgICBpbnQ2NF90IGF0
X3RpbWVfbXMpIHsKLSAgaW50NjRfdCBub3dfbXMgPSBhdF90aW1lX21zOworICAgIFRpbWVzdGFt
cCBhdF90aW1lKSB7CiAgIC8vIFJlc2V0IGlmIHRoZSBzdHJlYW0gaGFzIHRpbWVkIG91dC4KLSAg
aWYgKGxhc3Rfc2Vlbl9wYWNrZXRfbXNfID09IC0xIHx8Ci0gICAgICBub3dfbXMgLSBsYXN0X3Nl
ZW5fcGFja2V0X21zXyA+IGtTdHJlYW1UaW1lT3V0TXMpIHsKKyAgaWYgKGxhc3Rfc2Vlbl9wYWNr
ZXRfLklzSW5maW5pdGUoKSB8fAorICAgICAgYXRfdGltZSAtIGxhc3Rfc2Vlbl9wYWNrZXRfID4g
a1N0cmVhbVRpbWVPdXQpIHsKICAgICBpbnRlcl9hcnJpdmFsXy5yZXNldCgKICAgICAgICAgbmV3
IEludGVyQXJyaXZhbCgoa1RpbWVzdGFtcEdyb3VwTGVuZ3RoTXMgPDwga0ludGVyQXJyaXZhbFNo
aWZ0KSAvIDEwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAga1RpbWVzdGFtcFRvTXMsIHRy
dWUpKTsKQEAgLTE5NCw3ICsxOTksNyBAQCB2b2lkIERlbGF5QmFzZWRCd2U6OkluY29taW5nUGFj
a2V0RmVlZGJhY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJlbmRsaW5lX3Ntb290aGluZ19jb2VmZl8sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlbmRsaW5lX3RocmVzaG9sZF9nYWluXykpOwog
ICB9Ci0gIGxhc3Rfc2Vlbl9wYWNrZXRfbXNfID0gbm93X21zOworICBsYXN0X3NlZW5fcGFja2V0
XyA9IGF0X3RpbWU7CiAKICAgdWludDMyX3Qgc2VuZF90aW1lXzI0Yml0cyA9CiAgICAgICBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oCkBAIC0yMTEsMTE1ICsyMTYsMTA5IEBAIHZvaWQgRGVsYXlCYXNl
ZEJ3ZTo6SW5jb21pbmdQYWNrZXRGZWVkYmFjaygKICAgaW50NjRfdCB0X2RlbHRhID0gMDsKICAg
aW50IHNpemVfZGVsdGEgPSAwOwogICBpZiAoaW50ZXJfYXJyaXZhbF8tPkNvbXB1dGVEZWx0YXMo
dGltZXN0YW1wLCBwYWNrZXRfZmVlZGJhY2suYXJyaXZhbF90aW1lX21zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm93X21zLCBwYWNrZXRfZmVlZGJhY2sucGF5bG9hZF9z
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRfdGltZS5tcygpLCBw
YWNrZXRfZmVlZGJhY2sucGF5bG9hZF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnRzX2RlbHRhLCAmdF9kZWx0YSwgJnNpemVfZGVsdGEpKSB7CiAgICAgZG91Ymxl
IHRzX2RlbHRhX21zID0gKDEwMDAuMCAqIHRzX2RlbHRhKSAvICgxIDw8IGtJbnRlckFycml2YWxT
aGlmdCk7CiAgICAgZGVsYXlfZGV0ZWN0b3JfLT5VcGRhdGUodF9kZWx0YSwgdHNfZGVsdGFfbXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X2ZlZWRiYWNrLmFycml2YWxfdGlt
ZV9tcyk7CiAgIH0KLSAgaWYgKHBhY2tldF9mZWVkYmFjay5wYWNpbmdfaW5mby5wcm9iZV9jbHVz
dGVyX2lkICE9Ci0gICAgICBQYWNlZFBhY2tldEluZm86OmtOb3RBUHJvYmUpIHsKLSAgICBwcm9i
ZV9iaXRyYXRlX2VzdGltYXRvcl8uSGFuZGxlUHJvYmVBbmRFc3RpbWF0ZUJpdHJhdGUocGFja2V0
X2ZlZWRiYWNrKTsKLSAgfQogfQogCiBEZWxheUJhc2VkQndlOjpSZXN1bHQgRGVsYXlCYXNlZEJ3
ZTo6TWF5YmVVcGRhdGVFc3RpbWF0ZSgKLSAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gYWNr
ZWRfYml0cmF0ZV9icHMsCisgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGFja2VkX2JpdHJh
dGUsCisgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IHByb2JlX2JpdHJhdGUsCiAgICAgYm9v
bCByZWNvdmVyZWRfZnJvbV9vdmVydXNlLAotICAgIGludDY0X3QgYXRfdGltZV9tcykgeworICAg
IFRpbWVzdGFtcCBhdF90aW1lKSB7CiAgIFJlc3VsdCByZXN1bHQ7Ci0gIGludDY0X3Qgbm93X21z
ID0gYXRfdGltZV9tczsKIAotICBhYnNsOjpvcHRpb25hbDxpbnQ+IHByb2JlX2JpdHJhdGVfYnBz
ID0KLSAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy5GZXRjaEFuZFJlc2V0TGFzdEVzdGlt
YXRlZEJpdHJhdGVCcHMoKTsKICAgLy8gQ3VycmVudGx5IG92ZXJ1c2luZyB0aGUgYmFuZHdpZHRo
LgogICBpZiAoZGVsYXlfZGV0ZWN0b3JfLT5TdGF0ZSgpID09IEJhbmR3aWR0aFVzYWdlOjprQndP
dmVydXNpbmcpIHsKLSAgICBpZiAoYWNrZWRfYml0cmF0ZV9icHMgJiYKLSAgICAgICAgcmF0ZV9j
b250cm9sXy5UaW1lVG9SZWR1Y2VGdXJ0aGVyKG5vd19tcywgKmFja2VkX2JpdHJhdGVfYnBzKSkg
eworICAgIGlmIChhY2tlZF9iaXRyYXRlICYmCisgICAgICAgIHJhdGVfY29udHJvbF8uVGltZVRv
UmVkdWNlRnVydGhlcihhdF90aW1lLCAqYWNrZWRfYml0cmF0ZSkpIHsKICAgICAgIHJlc3VsdC51
cGRhdGVkID0KLSAgICAgICAgICBVcGRhdGVFc3RpbWF0ZShub3dfbXMsIGFja2VkX2JpdHJhdGVf
YnBzLCAmcmVzdWx0LnRhcmdldF9iaXRyYXRlX2Jwcyk7Ci0gICAgfSBlbHNlIGlmICghYWNrZWRf
Yml0cmF0ZV9icHMgJiYgcmF0ZV9jb250cm9sXy5WYWxpZEVzdGltYXRlKCkgJiYKLSAgICAgICAg
ICAgICAgIHJhdGVfY29udHJvbF8uSW5pdGlhbFRpbWVUb1JlZHVjZUZ1cnRoZXIobm93X21zKSkg
eworICAgICAgICAgIFVwZGF0ZUVzdGltYXRlKGF0X3RpbWUsIGFja2VkX2JpdHJhdGUsICZyZXN1
bHQudGFyZ2V0X2JpdHJhdGUpOworICAgIH0gZWxzZSBpZiAoIWFja2VkX2JpdHJhdGUgJiYgcmF0
ZV9jb250cm9sXy5WYWxpZEVzdGltYXRlKCkgJiYKKyAgICAgICAgICAgICAgIHJhdGVfY29udHJv
bF8uSW5pdGlhbFRpbWVUb1JlZHVjZUZ1cnRoZXIoYXRfdGltZSkpIHsKICAgICAgIC8vIE92ZXJ1
c2luZyBiZWZvcmUgd2UgaGF2ZSBhIG1lYXN1cmVkIGFja25vd2xlZGdlZCBiaXRyYXRlLiBSZWR1
Y2Ugc2VuZAogICAgICAgLy8gcmF0ZSBieSA1MCUgZXZlcnkgMjAwIG1zLgogICAgICAgLy8gVE9E
Tyh0c2NodW1pbSk6IEltcHJvdmUgdGhpcyBhbmQvb3IgdGhlIGFja25vd2xlZGdlZCBiaXRyYXRl
IGVzdGltYXRvcgogICAgICAgLy8gc28gdGhhdCB3ZSAoYWxtb3N0KSBhbHdheXMgaGF2ZSBhIGJp
dHJhdGUgZXN0aW1hdGUuCi0gICAgICByYXRlX2NvbnRyb2xfLlNldEVzdGltYXRlKHJhdGVfY29u
dHJvbF8uTGF0ZXN0RXN0aW1hdGUoKSAvIDIsIG5vd19tcyk7CisgICAgICByYXRlX2NvbnRyb2xf
LlNldEVzdGltYXRlKHJhdGVfY29udHJvbF8uTGF0ZXN0RXN0aW1hdGUoKSAvIDIsIGF0X3RpbWUp
OwogICAgICAgcmVzdWx0LnVwZGF0ZWQgPSB0cnVlOwogICAgICAgcmVzdWx0LnByb2JlID0gZmFs
c2U7Ci0gICAgICByZXN1bHQudGFyZ2V0X2JpdHJhdGVfYnBzID0gcmF0ZV9jb250cm9sXy5MYXRl
c3RFc3RpbWF0ZSgpOworICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlID0gcmF0ZV9jb250cm9s
Xy5MYXRlc3RFc3RpbWF0ZSgpOwogICAgIH0KICAgfSBlbHNlIHsKLSAgICBpZiAocHJvYmVfYml0
cmF0ZV9icHMpIHsKKyAgICBpZiAocHJvYmVfYml0cmF0ZSkgewogICAgICAgcmVzdWx0LnByb2Jl
ID0gdHJ1ZTsKICAgICAgIHJlc3VsdC51cGRhdGVkID0gdHJ1ZTsKLSAgICAgIHJlc3VsdC50YXJn
ZXRfYml0cmF0ZV9icHMgPSAqcHJvYmVfYml0cmF0ZV9icHM7Ci0gICAgICByYXRlX2NvbnRyb2xf
LlNldEVzdGltYXRlKCpwcm9iZV9iaXRyYXRlX2Jwcywgbm93X21zKTsKKyAgICAgIHJlc3VsdC50
YXJnZXRfYml0cmF0ZSA9ICpwcm9iZV9iaXRyYXRlOworICAgICAgcmF0ZV9jb250cm9sXy5TZXRF
c3RpbWF0ZSgqcHJvYmVfYml0cmF0ZSwgYXRfdGltZSk7CiAgICAgfSBlbHNlIHsKICAgICAgIHJl
c3VsdC51cGRhdGVkID0KLSAgICAgICAgICBVcGRhdGVFc3RpbWF0ZShub3dfbXMsIGFja2VkX2Jp
dHJhdGVfYnBzLCAmcmVzdWx0LnRhcmdldF9iaXRyYXRlX2Jwcyk7CisgICAgICAgICAgVXBkYXRl
RXN0aW1hdGUoYXRfdGltZSwgYWNrZWRfYml0cmF0ZSwgJnJlc3VsdC50YXJnZXRfYml0cmF0ZSk7
CiAgICAgICByZXN1bHQucmVjb3ZlcmVkX2Zyb21fb3ZlcnVzZSA9IHJlY292ZXJlZF9mcm9tX292
ZXJ1c2U7CiAgICAgfQogICB9CiAgIEJhbmR3aWR0aFVzYWdlIGRldGVjdG9yX3N0YXRlID0gZGVs
YXlfZGV0ZWN0b3JfLT5TdGF0ZSgpOwotICBpZiAoKHJlc3VsdC51cGRhdGVkICYmIHByZXZfYml0
cmF0ZV8gIT0gcmVzdWx0LnRhcmdldF9iaXRyYXRlX2JwcykgfHwKKyAgaWYgKChyZXN1bHQudXBk
YXRlZCAmJiBwcmV2X2JpdHJhdGVfICE9IHJlc3VsdC50YXJnZXRfYml0cmF0ZSkgfHwKICAgICAg
IGRldGVjdG9yX3N0YXRlICE9IHByZXZfc3RhdGVfKSB7Ci0gICAgdWludDMyX3QgYml0cmF0ZV9i
cHMgPQotICAgICAgICByZXN1bHQudXBkYXRlZCA/IHJlc3VsdC50YXJnZXRfYml0cmF0ZV9icHMg
OiBwcmV2X2JpdHJhdGVfOworICAgIERhdGFSYXRlIGJpdHJhdGUgPSByZXN1bHQudXBkYXRlZCA/
IHJlc3VsdC50YXJnZXRfYml0cmF0ZSA6IHByZXZfYml0cmF0ZV87CiAKLSAgICBCV0VfVEVTVF9M
T0dHSU5HX1BMT1QoMSwgInRhcmdldF9iaXRyYXRlX2JwcyIsIG5vd19tcywgYml0cmF0ZV9icHMp
OworICAgIEJXRV9URVNUX0xPR0dJTkdfUExPVCgxLCAidGFyZ2V0X2JpdHJhdGVfYnBzIiwgYXRf
dGltZS5tcygpLCBiaXRyYXRlLmJwcygpKTsKIAogICAgIGlmIChldmVudF9sb2dfKSB7CiAgICAg
ICBldmVudF9sb2dfLT5Mb2coYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRCd2VVcGRhdGVEZWxh
eUJhc2VkPigKLSAgICAgICAgICBiaXRyYXRlX2JwcywgZGV0ZWN0b3Jfc3RhdGUpKTsKKyAgICAg
ICAgICBiaXRyYXRlLmJwcygpLCBkZXRlY3Rvcl9zdGF0ZSkpOwogICAgIH0KIAotICAgIHByZXZf
Yml0cmF0ZV8gPSBiaXRyYXRlX2JwczsKKyAgICBwcmV2X2JpdHJhdGVfID0gYml0cmF0ZTsKICAg
ICBwcmV2X3N0YXRlXyA9IGRldGVjdG9yX3N0YXRlOwogICB9CiAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLWJvb2wgRGVsYXlCYXNlZEJ3ZTo6VXBkYXRlRXN0aW1hdGUoaW50NjRfdCBub3dfbXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQzMl90
PiBhY2tlZF9iaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QqIHRhcmdldF9iaXRyYXRlX2JwcykgewotICBjb25zdCBSYXRlQ29udHJvbElucHV0
IGlucHV0KGRlbGF5X2RldGVjdG9yXy0+U3RhdGUoKSwgYWNrZWRfYml0cmF0ZV9icHMpOwotICAq
dGFyZ2V0X2JpdHJhdGVfYnBzID0gcmF0ZV9jb250cm9sXy5VcGRhdGUoJmlucHV0LCBub3dfbXMp
OworYm9vbCBEZWxheUJhc2VkQndlOjpVcGRhdGVFc3RpbWF0ZShUaW1lc3RhbXAgYXRfdGltZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJh
dGU+IGFja2VkX2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERh
dGFSYXRlKiB0YXJnZXRfcmF0ZSkgeworICBjb25zdCBSYXRlQ29udHJvbElucHV0IGlucHV0KGRl
bGF5X2RldGVjdG9yXy0+U3RhdGUoKSwgYWNrZWRfYml0cmF0ZSk7CisgICp0YXJnZXRfcmF0ZSA9
IHJhdGVfY29udHJvbF8uVXBkYXRlKCZpbnB1dCwgYXRfdGltZSk7CiAgIHJldHVybiByYXRlX2Nv
bnRyb2xfLlZhbGlkRXN0aW1hdGUoKTsKIH0KIAotdm9pZCBEZWxheUJhc2VkQndlOjpPblJ0dFVw
ZGF0ZShpbnQ2NF90IGF2Z19ydHRfbXMpIHsKLSAgcmF0ZV9jb250cm9sXy5TZXRSdHQoYXZnX3J0
dF9tcyk7Cit2b2lkIERlbGF5QmFzZWRCd2U6Ok9uUnR0VXBkYXRlKFRpbWVEZWx0YSBhdmdfcnR0
KSB7CisgIHJhdGVfY29udHJvbF8uU2V0UnR0KGF2Z19ydHQpOwogfQogCiBib29sIERlbGF5QmFz
ZWRCd2U6OkxhdGVzdEVzdGltYXRlKHN0ZDo6dmVjdG9yPHVpbnQzMl90Piogc3NyY3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiBiaXRyYXRlX2JwcykgY29u
c3QgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSogYml0cmF0
ZSkgY29uc3QgewogICAvLyBDdXJyZW50bHkgYWNjZXNzZWQgZnJvbSBib3RoIHRoZSBwcm9jZXNz
IHRocmVhZCAoc2VlCiAgIC8vIE1vZHVsZVJ0cFJ0Y3BJbXBsOjpQcm9jZXNzKCkpIGFuZCB0aGUg
Y29uZmlndXJhdGlvbiB0aHJlYWQgKHNlZQogICAvLyBDYWxsOjpHZXRTdGF0cygpKS4gU2hvdWxk
IGluIHRoZSBmdXR1cmUgb25seSBiZSBhY2Nlc3NlZCBmcm9tIGEgc2luZ2xlCiAgIC8vIHRocmVh
ZC4KICAgUlRDX0RDSEVDSyhzc3Jjcyk7Ci0gIFJUQ19EQ0hFQ0soYml0cmF0ZV9icHMpOworICBS
VENfRENIRUNLKGJpdHJhdGUpOwogICBpZiAoIXJhdGVfY29udHJvbF8uVmFsaWRFc3RpbWF0ZSgp
KQogICAgIHJldHVybiBmYWxzZTsKIAogICAqc3NyY3MgPSB7a0ZpeGVkU3NyY307Ci0gICpiaXRy
YXRlX2JwcyA9IHJhdGVfY29udHJvbF8uTGF0ZXN0RXN0aW1hdGUoKTsKKyAgKmJpdHJhdGUgPSBy
YXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7CiAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IERlbGF5QmFzZWRCd2U6OlNldFN0YXJ0Qml0cmF0ZShpbnQgc3RhcnRfYml0cmF0ZV9icHMpIHsK
LSAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQldFIFNldHRpbmcgc3RhcnQgYml0cmF0ZSB0bzogIiA8
PCBzdGFydF9iaXRyYXRlX2JwczsKLSAgcmF0ZV9jb250cm9sXy5TZXRTdGFydEJpdHJhdGUoc3Rh
cnRfYml0cmF0ZV9icHMpOwordm9pZCBEZWxheUJhc2VkQndlOjpTZXRTdGFydEJpdHJhdGUoRGF0
YVJhdGUgc3RhcnRfYml0cmF0ZSkgeworICBSVENfTE9HKExTX0lORk8pIDw8ICJCV0UgU2V0dGlu
ZyBzdGFydCBiaXRyYXRlIHRvOiAiCisgICAgICAgICAgICAgICAgICAgPDwgVG9TdHJpbmcoc3Rh
cnRfYml0cmF0ZSk7CisgIHJhdGVfY29udHJvbF8uU2V0U3RhcnRCaXRyYXRlKHN0YXJ0X2JpdHJh
dGUpOwogfQogCi12b2lkIERlbGF5QmFzZWRCd2U6OlNldE1pbkJpdHJhdGUoaW50IG1pbl9iaXRy
YXRlX2Jwcykgewordm9pZCBEZWxheUJhc2VkQndlOjpTZXRNaW5CaXRyYXRlKERhdGFSYXRlIG1p
bl9iaXRyYXRlKSB7CiAgIC8vIENhbGxlZCBmcm9tIGJvdGggdGhlIGNvbmZpZ3VyYXRpb24gdGhy
ZWFkIGFuZCB0aGUgbmV0d29yayB0aHJlYWQuIFNob3VsZG4ndAogICAvLyBiZSBjYWxsZWQgZnJv
bSB0aGUgbmV0d29yayB0aHJlYWQgaW4gdGhlIGZ1dHVyZS4KLSAgcmF0ZV9jb250cm9sXy5TZXRN
aW5CaXRyYXRlKG1pbl9iaXRyYXRlX2Jwcyk7CisgIHJhdGVfY29udHJvbF8uU2V0TWluQml0cmF0
ZShtaW5fYml0cmF0ZSk7CiB9CiAKLWludDY0X3QgRGVsYXlCYXNlZEJ3ZTo6R2V0RXhwZWN0ZWRC
d2VQZXJpb2RNcygpIGNvbnN0IHsKLSAgcmV0dXJuIHJhdGVfY29udHJvbF8uR2V0RXhwZWN0ZWRC
YW5kd2lkdGhQZXJpb2RNcygpOworVGltZURlbHRhIERlbGF5QmFzZWRCd2U6OkdldEV4cGVjdGVk
QndlUGVyaW9kKCkgY29uc3QgeworICByZXR1cm4gcmF0ZV9jb250cm9sXy5HZXRFeHBlY3RlZEJh
bmR3aWR0aFBlcmlvZCgpOwogfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2UuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlLmgKaW5kZXggNDIxNjRiYWFkNGFjNzFjMjBlOTc2ODQz
MmMxYWRmZjZkNDRkZGI0Ny4uNjE2YzViMDg5NmJkZjJmZTAzNDkwYjc0OGVhMGNlMzQxOWU4ZGFj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2UuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5oCkBAIC0xMSwxNiAr
MTEsMTggQEAKICNpZm5kZWYgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfR09PR19DQ19E
RUxBWV9CQVNFRF9CV0VfSF8KICNkZWZpbmUgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJf
R09PR19DQ19ERUxBWV9CQVNFRF9CV0VfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1
ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx1dGlsaXR5PgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNs
dWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2luY3JlYXNl
X2RldGVjdG9yX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2dvb2dfY2MvcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbC5oIgotI2luY2x1
ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvcmVtb3RlX2JpdHJh
dGVfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJh
dGVfZXN0aW1hdG9yL2ludGVyX2Fycml2YWwuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3Mu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5o
IiAgLy8gRm9yIFBhY2tldEZlZWRiYWNrCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhY2VfY2hlY2tlci5oIgogCkBAIC0zMSwxMSAr
MzMsMTEgQEAgY2xhc3MgRGVsYXlCYXNlZEJ3ZSB7CiAgcHVibGljOgogICBzdHJ1Y3QgUmVzdWx0
IHsKICAgICBSZXN1bHQoKTsKLSAgICBSZXN1bHQoYm9vbCBwcm9iZSwgdWludDMyX3QgdGFyZ2V0
X2JpdHJhdGVfYnBzKTsKKyAgICBSZXN1bHQoYm9vbCBwcm9iZSwgRGF0YVJhdGUgdGFyZ2V0X2Jp
dHJhdGUpOwogICAgIH5SZXN1bHQoKTsKICAgICBib29sIHVwZGF0ZWQ7CiAgICAgYm9vbCBwcm9i
ZTsKLSAgICB1aW50MzJfdCB0YXJnZXRfYml0cmF0ZV9icHM7CisgICAgRGF0YVJhdGUgdGFyZ2V0
X2JpdHJhdGUgPSBEYXRhUmF0ZTo6WmVybygpOwogICAgIGJvb2wgcmVjb3ZlcmVkX2Zyb21fb3Zl
cnVzZTsKICAgfTsKIApAQCAtNDQsNDIgKzQ2LDQzIEBAIGNsYXNzIERlbGF5QmFzZWRCd2Ugewog
CiAgIFJlc3VsdCBJbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAogICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+JiBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLAotICAgICAg
YWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGFja2VkX2JpdHJhdGVfYnBzLAotICAgICAgaW50NjRf
dCBhdF90aW1lX21zKTsKLSAgdm9pZCBPblJ0dFVwZGF0ZShpbnQ2NF90IGF2Z19ydHRfbXMpOwot
ICBib29sIExhdGVzdEVzdGltYXRlKHN0ZDo6dmVjdG9yPHVpbnQzMl90Piogc3NyY3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QqIGJpdHJhdGVfYnBzKSBjb25zdDsKLSAgdm9pZCBT
ZXRTdGFydEJpdHJhdGUoaW50IHN0YXJ0X2JpdHJhdGVfYnBzKTsKLSAgdm9pZCBTZXRNaW5CaXRy
YXRlKGludCBtaW5fYml0cmF0ZV9icHMpOwotICBpbnQ2NF90IEdldEV4cGVjdGVkQndlUGVyaW9k
TXMoKSBjb25zdDsKKyAgICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBhY2tlZF9iaXRyYXRl
LAorICAgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IHByb2JlX2JpdHJhdGUsCisgICAgICBU
aW1lc3RhbXAgYXRfdGltZSk7CisgIFJlc3VsdCBPbkRlbGF5ZWRGZWVkYmFjayhUaW1lc3RhbXAg
cmVjZWl2ZV90aW1lKTsKKyAgdm9pZCBPblJ0dFVwZGF0ZShUaW1lRGVsdGEgYXZnX3J0dCk7Cisg
IGJvb2wgTGF0ZXN0RXN0aW1hdGUoc3RkOjp2ZWN0b3I8dWludDMyX3Q+KiBzc3JjcywgRGF0YVJh
dGUqIGJpdHJhdGUpIGNvbnN0OworICB2b2lkIFNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZSBzdGFy
dF9iaXRyYXRlKTsKKyAgdm9pZCBTZXRNaW5CaXRyYXRlKERhdGFSYXRlIG1pbl9iaXRyYXRlKTsK
KyAgVGltZURlbHRhIEdldEV4cGVjdGVkQndlUGVyaW9kKCkgY29uc3Q7CiAKICBwcml2YXRlOgog
ICBmcmllbmQgY2xhc3MgR29vZ0NjU3RhdGVQcmludGVyOwogICB2b2lkIEluY29taW5nUGFja2V0
RmVlZGJhY2soY29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tldF9mZWVkYmFjaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgYXRfdGltZV9tcyk7Ci0gIFJlc3VsdCBPbkxv
bmdGZWVkYmFja0RlbGF5KGludDY0X3QgYXJyaXZhbF90aW1lX21zKTsKLSAgUmVzdWx0IE1heWJl
VXBkYXRlRXN0aW1hdGUoYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGFja2VkX2JpdHJhdGVfYnBz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpOworICBS
ZXN1bHQgT25Mb25nRmVlZGJhY2tEZWxheShUaW1lc3RhbXAgYXJyaXZhbF90aW1lKTsKKyAgUmVz
dWx0IE1heWJlVXBkYXRlRXN0aW1hdGUoYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGFja2VkX2Jp
dHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPERhdGFS
YXRlPiBwcm9iZV9iaXRyYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJl
cXVlc3RfcHJvYmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgYXRfdGlt
ZV9tcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKTsK
ICAgLy8gVXBkYXRlcyB0aGUgY3VycmVudCByZW1vdGUgcmF0ZSBlc3RpbWF0ZSBhbmQgcmV0dXJu
cyB0cnVlIGlmIGEgdmFsaWQKICAgLy8gZXN0aW1hdGUgZXhpc3RzLgotICBib29sIFVwZGF0ZUVz
dGltYXRlKGludDY0X3Qgbm93X21zLAotICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlv
bmFsPHVpbnQzMl90PiBhY2tlZF9iaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCogdGFyZ2V0X2JpdHJhdGVfYnBzKTsKKyAgYm9vbCBVcGRhdGVFc3RpbWF0ZShUaW1l
c3RhbXAgbm93LAorICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRl
PiBhY2tlZF9iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRlKiB0YXJnZXRf
Yml0cmF0ZSk7CiAKICAgcnRjOjpSYWNlQ2hlY2tlciBuZXR3b3JrX3JhY2VfOwogICBSdGNFdmVu
dExvZyogY29uc3QgZXZlbnRfbG9nXzsKICAgc3RkOjp1bmlxdWVfcHRyPEludGVyQXJyaXZhbD4g
aW50ZXJfYXJyaXZhbF87CiAgIHN0ZDo6dW5pcXVlX3B0cjxEZWxheUluY3JlYXNlRGV0ZWN0b3JJ
bnRlcmZhY2U+IGRlbGF5X2RldGVjdG9yXzsKLSAgaW50NjRfdCBsYXN0X3NlZW5fcGFja2V0X21z
XzsKKyAgVGltZXN0YW1wIGxhc3Rfc2Vlbl9wYWNrZXRfOwogICBib29sIHVtYV9yZWNvcmRlZF87
CiAgIEFpbWRSYXRlQ29udHJvbCByYXRlX2NvbnRyb2xfOwotICBQcm9iZUJpdHJhdGVFc3RpbWF0
b3IgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfOwogICBzaXplX3QgdHJlbmRsaW5lX3dpbmRvd19z
aXplXzsKICAgZG91YmxlIHRyZW5kbGluZV9zbW9vdGhpbmdfY29lZmZfOwogICBkb3VibGUgdHJl
bmRsaW5lX3RocmVzaG9sZF9nYWluXzsKICAgaW50IGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJh
Y2tzXzsKLSAgdWludDMyX3QgcHJldl9iaXRyYXRlXzsKKyAgRGF0YVJhdGUgcHJldl9iaXRyYXRl
XzsKICAgQmFuZHdpZHRoVXNhZ2UgcHJldl9zdGF0ZV87CiAKICAgUlRDX0RJU0FMTE9XX0lNUExJ
Q0lUX0NPTlNUUlVDVE9SUyhEZWxheUJhc2VkQndlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
Z29vZ19jYy9kZWxheV9iYXNlZF9id2VfdW5pdHRlc3QuY2MKaW5kZXggYjJhZGQzZTZlOTRhOGY1
MDI3ODAwNzZiYzM3N2M5MjY3N2YxMjNjNi4uN2RlMTFiMTY4NDBmMDBhZmFkOGU3MGFmZDU5Zjcz
MmU0MDc5YjIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNl
ZF9id2VfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNl
ZF9id2VfdW5pdHRlc3QuY2MKQEAgLTI1LDEzICsyNSwxMyBAQCBjb25zdGV4cHIgaW50IGtOdW1Q
cm9iZXNDbHVzdGVyMSA9IDg7CiBjb25zdCBQYWNlZFBhY2tldEluZm8ga1BhY2luZ0luZm8wKDAs
IGtOdW1Qcm9iZXNDbHVzdGVyMCwgMjAwMCk7CiBjb25zdCBQYWNlZFBhY2tldEluZm8ga1BhY2lu
Z0luZm8xKDEsIGtOdW1Qcm9iZXNDbHVzdGVyMSwgNDAwMCk7CiBjb25zdGV4cHIgZmxvYXQga1Rh
cmdldFV0aWxpemF0aW9uRnJhY3Rpb24gPSAwLjk1ZjsKLWNvbnN0ZXhwciBpbnQ2NF90IGtEdW1t
eVRpbWVzdGFtcCA9IDEwMDA7Citjb25zdGV4cHIgVGltZXN0YW1wIGtEdW1teVRpbWVzdGFtcCA9
IFRpbWVzdGFtcDo6U2Vjb25kczwxMDAwPigpOwogfSAgLy8gbmFtZXNwYWNlCiAKIFRFU1RfRihE
ZWxheUJhc2VkQndlVGVzdCwgTm9DcmFzaEVtcHR5RmVlZGJhY2spIHsKICAgc3RkOjp2ZWN0b3I8
UGFja2V0RmVlZGJhY2s+IHBhY2tldF9mZWVkYmFja192ZWN0b3I7CiAgIGJpdHJhdGVfZXN0aW1h
dG9yXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3RvcigKLSAgICAgIHBhY2tldF9mZWVkYmFj
a192ZWN0b3IsIGFic2w6Om51bGxvcHQsIGtEdW1teVRpbWVzdGFtcCk7CisgICAgICBwYWNrZXRf
ZmVlZGJhY2tfdmVjdG9yLCBhYnNsOjpudWxsb3B0LCBhYnNsOjpudWxsb3B0LCBrRHVtbXlUaW1l
c3RhbXApOwogfQogCiBURVNUX0YoRGVsYXlCYXNlZEJ3ZVRlc3QsIE5vQ3Jhc2hPbmx5TG9zdEZl
ZWRiYWNrKSB7CkBAIC00Myw3ICs0Myw3IEBAIFRFU1RfRihEZWxheUJhc2VkQndlVGVzdCwgTm9D
cmFzaE9ubHlMb3N0RmVlZGJhY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGFja2V0RmVlZGJhY2s6OmtOb1NlbmRUaW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxNTAwLCBQYWNlZFBh
Y2tldEluZm8oKSkpOwogICBiaXRyYXRlX2VzdGltYXRvcl8tPkluY29taW5nUGFja2V0RmVlZGJh
Y2tWZWN0b3IoCi0gICAgICBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLCBhYnNsOjpudWxsb3B0LCBr
RHVtbXlUaW1lc3RhbXApOworICAgICAgcGFja2V0X2ZlZWRiYWNrX3ZlY3RvciwgYWJzbDo6bnVs
bG9wdCwgYWJzbDo6bnVsbG9wdCwga0R1bW15VGltZXN0YW1wKTsKIH0KIAogVEVTVF9GKERlbGF5
QmFzZWRCd2VUZXN0LCBQcm9iZURldGVjdGlvbikgewpAQCAtMTQ0LDEyICsxNDQsMTIgQEAgVEVT
VF9GKERlbGF5QmFzZWRCd2VUZXN0LCBQcm9iZURldGVjdGlvblNsb3dlckFycml2YWxIaWdoQml0
cmF0ZSkgewogfQogCiBURVNUX0YoRGVsYXlCYXNlZEJ3ZVRlc3QsIEdldEV4cGVjdGVkQndlUGVy
aW9kTXMpIHsKLSAgaW50NjRfdCBkZWZhdWx0X2ludGVydmFsX21zID0gYml0cmF0ZV9lc3RpbWF0
b3JfLT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZE1zKCk7Ci0gIEVYUEVDVF9HVChkZWZhdWx0X2ludGVy
dmFsX21zLCAwKTsKKyAgYXV0byBkZWZhdWx0X2ludGVydmFsID0gYml0cmF0ZV9lc3RpbWF0b3Jf
LT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZCgpOworICBFWFBFQ1RfR1QoZGVmYXVsdF9pbnRlcnZhbC5t
cygpLCAwKTsKICAgQ2FwYWNpdHlEcm9wVGVzdEhlbHBlcigxLCB0cnVlLCAzMzMsIDApOwotICBp
bnQ2NF90IGludGVydmFsX21zID0gYml0cmF0ZV9lc3RpbWF0b3JfLT5HZXRFeHBlY3RlZEJ3ZVBl
cmlvZE1zKCk7Ci0gIEVYUEVDVF9HVChpbnRlcnZhbF9tcywgMCk7Ci0gIEVYUEVDVF9ORShpbnRl
cnZhbF9tcywgZGVmYXVsdF9pbnRlcnZhbF9tcyk7CisgIGF1dG8gaW50ZXJ2YWwgPSBiaXRyYXRl
X2VzdGltYXRvcl8tPkdldEV4cGVjdGVkQndlUGVyaW9kKCk7CisgIEVYUEVDVF9HVChpbnRlcnZh
bC5tcygpLCAwKTsKKyAgRVhQRUNUX05FKGludGVydmFsLm1zKCksIGRlZmF1bHRfaW50ZXJ2YWwu
bXMoKSk7CiB9CiAKIFRFU1RfRihEZWxheUJhc2VkQndlVGVzdCwgSW5pdGlhbEJlaGF2aW9yKSB7
CkBAIC0xOTksMjAgKzE5OSwyMCBAQCBURVNUX0YoRGVsYXlCYXNlZEJ3ZVRlc3QsIFRlc3RMb25n
VGltZW91dEFuZFdyYXApIHsKIH0KIAogVEVTVF9GKERlbGF5QmFzZWRCd2VUZXN0LCBUZXN0SW5p
dGlhbE92ZXJ1c2UpIHsKLSAgY29uc3QgdWludDMyX3Qga1N0YXJ0Qml0cmF0ZSA9IDMwMGUzOwot
ICBjb25zdCB1aW50MzJfdCBrSW5pdGlhbENhcGFjaXR5QnBzID0gMjAwZTM7CisgIGNvbnN0IERh
dGFSYXRlIGtTdGFydEJpdHJhdGUgPSBEYXRhUmF0ZTo6a2JwcygzMDApOworICBjb25zdCBEYXRh
UmF0ZSBrSW5pdGlhbENhcGFjaXR5ID0gRGF0YVJhdGU6OmticHMoMjAwKTsKICAgY29uc3QgdWlu
dDMyX3Qga0R1bW15U3NyYyA9IDA7CiAgIC8vIEhpZ2ggRlBTIHRvIGVuc3VyZSB0aGF0IHdlIHNl
bmQgYSBsb3Qgb2YgcGFja2V0cyBpbiBhIHNob3J0IHRpbWUuCiAgIGNvbnN0IGludCBrRnBzID0g
OTA7CiAKLSAgc3RyZWFtX2dlbmVyYXRvcl8tPkFkZFN0cmVhbShuZXcgdGVzdDo6UnRwU3RyZWFt
KGtGcHMsIGtTdGFydEJpdHJhdGUpKTsKLSAgc3RyZWFtX2dlbmVyYXRvcl8tPnNldF9jYXBhY2l0
eV9icHMoa0luaXRpYWxDYXBhY2l0eUJwcyk7CisgIHN0cmVhbV9nZW5lcmF0b3JfLT5BZGRTdHJl
YW0obmV3IHRlc3Q6OlJ0cFN0cmVhbShrRnBzLCBrU3RhcnRCaXRyYXRlLmJwcygpKSk7CisgIHN0
cmVhbV9nZW5lcmF0b3JfLT5zZXRfY2FwYWNpdHlfYnBzKGtJbml0aWFsQ2FwYWNpdHkuYnBzKCkp
OwogCiAgIC8vIE5lZWRlZCB0byBpbml0aWFsaXplIHRoZSBBaW1kUmF0ZUNvbnRyb2wuCiAgIGJp
dHJhdGVfZXN0aW1hdG9yXy0+U2V0U3RhcnRCaXRyYXRlKGtTdGFydEJpdHJhdGUpOwogCiAgIC8v
IFByb2R1Y2UgMzAgZnJhbWVzIChpbiAxLzMgc2Vjb25kKSBhbmQgZ2l2ZSB0aGVtIHRvIHRoZSBl
c3RpbWF0b3IuCi0gIHVpbnQzMl90IGJpdHJhdGVfYnBzID0ga1N0YXJ0Qml0cmF0ZTsKKyAgaW50
NjRfdCBiaXRyYXRlX2JwcyA9IGtTdGFydEJpdHJhdGUuYnBzKCk7CiAgIGJvb2wgc2Vlbl9vdmVy
dXNlID0gZmFsc2U7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzA7ICsraSkgewogICAgIGJvb2wg
b3ZlcnVzZSA9IEdlbmVyYXRlQW5kUHJvY2Vzc0ZyYW1lKGtEdW1teVNzcmMsIGJpdHJhdGVfYnBz
KTsKQEAgLTIyMiw3ICsyMjIsOCBAQCBURVNUX0YoRGVsYXlCYXNlZEJ3ZVRlc3QsIFRlc3RJbml0
aWFsT3ZlcnVzZSkgewogICAgIEVYUEVDVF9GQUxTRShhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3Rp
bWF0b3JfLT5iaXRyYXRlX2JwcygpLmhhc192YWx1ZSgpKTsKICAgICBpZiAob3ZlcnVzZSkgewog
ICAgICAgRVhQRUNUX1RSVUUoYml0cmF0ZV9vYnNlcnZlcl8udXBkYXRlZCgpKTsKLSAgICAgIEVY
UEVDVF9ORUFSKGJpdHJhdGVfb2JzZXJ2ZXJfLmxhdGVzdF9iaXRyYXRlKCksIGtTdGFydEJpdHJh
dGUgLyAyLCAxNTAwMCk7CisgICAgICBFWFBFQ1RfTkVBUihiaXRyYXRlX29ic2VydmVyXy5sYXRl
c3RfYml0cmF0ZSgpLCBrU3RhcnRCaXRyYXRlLmJwcygpIC8gMiwKKyAgICAgICAgICAgICAgICAg
IDE1MDAwKTsKICAgICAgIGJpdHJhdGVfYnBzID0gYml0cmF0ZV9vYnNlcnZlcl8ubGF0ZXN0X2Jp
dHJhdGUoKTsKICAgICAgIHNlZW5fb3ZlcnVzZSA9IHRydWU7CiAgICAgICBicmVhazsKQEAgLTIz
Miw3ICsyMzMsOCBAQCBURVNUX0YoRGVsYXlCYXNlZEJ3ZVRlc3QsIFRlc3RJbml0aWFsT3ZlcnVz
ZSkgewogICAgIH0KICAgfQogICBFWFBFQ1RfVFJVRShzZWVuX292ZXJ1c2UpOwotICBFWFBFQ1Rf
TkVBUihiaXRyYXRlX29ic2VydmVyXy5sYXRlc3RfYml0cmF0ZSgpLCBrU3RhcnRCaXRyYXRlIC8g
MiwgMTUwMDApOworICBFWFBFQ1RfTkVBUihiaXRyYXRlX29ic2VydmVyXy5sYXRlc3RfYml0cmF0
ZSgpLCBrU3RhcnRCaXRyYXRlLmJwcygpIC8gMiwKKyAgICAgICAgICAgICAgMTUwMDApOwogfQog
CiBjbGFzcyBEZWxheUJhc2VkQndlVGVzdFdpdGhCYWNrb2ZmVGltZW91dEV4cGVyaW1lbnQgOiBw
dWJsaWMgRGVsYXlCYXNlZEJ3ZVRlc3QgewpAQCAtMjQzLDIwICsyNDUsMjAgQEAgY2xhc3MgRGVs
YXlCYXNlZEJ3ZVRlc3RXaXRoQmFja29mZlRpbWVvdXRFeHBlcmltZW50IDogcHVibGljIERlbGF5
QmFzZWRCd2VUZXN0IHsKIAogLy8gVGhpcyB0ZXN0IHN1YnN1bWVzIGFuZCBpbXByb3ZlcyBEZWxh
eUJhc2VkQndlVGVzdC5UZXN0SW5pdGlhbE92ZXJ1c2UgYWJvdmUuCiBURVNUX0YoRGVsYXlCYXNl
ZEJ3ZVRlc3RXaXRoQmFja29mZlRpbWVvdXRFeHBlcmltZW50LCBUZXN0SW5pdGlhbE92ZXJ1c2Up
IHsKLSAgY29uc3QgdWludDMyX3Qga1N0YXJ0Qml0cmF0ZSA9IDMwMGUzOwotICBjb25zdCB1aW50
MzJfdCBrSW5pdGlhbENhcGFjaXR5QnBzID0gMjAwZTM7CisgIGNvbnN0IERhdGFSYXRlIGtTdGFy
dEJpdHJhdGUgPSBEYXRhUmF0ZTo6a2JwcygzMDApOworICBjb25zdCBEYXRhUmF0ZSBrSW5pdGlh
bENhcGFjaXR5ID0gRGF0YVJhdGU6OmticHMoMjAwKTsKICAgY29uc3QgdWludDMyX3Qga0R1bW15
U3NyYyA9IDA7CiAgIC8vIEhpZ2ggRlBTIHRvIGVuc3VyZSB0aGF0IHdlIHNlbmQgYSBsb3Qgb2Yg
cGFja2V0cyBpbiBhIHNob3J0IHRpbWUuCiAgIGNvbnN0IGludCBrRnBzID0gOTA7CiAKLSAgc3Ry
ZWFtX2dlbmVyYXRvcl8tPkFkZFN0cmVhbShuZXcgdGVzdDo6UnRwU3RyZWFtKGtGcHMsIGtTdGFy
dEJpdHJhdGUpKTsKLSAgc3RyZWFtX2dlbmVyYXRvcl8tPnNldF9jYXBhY2l0eV9icHMoa0luaXRp
YWxDYXBhY2l0eUJwcyk7CisgIHN0cmVhbV9nZW5lcmF0b3JfLT5BZGRTdHJlYW0obmV3IHRlc3Q6
OlJ0cFN0cmVhbShrRnBzLCBrU3RhcnRCaXRyYXRlLmJwcygpKSk7CisgIHN0cmVhbV9nZW5lcmF0
b3JfLT5zZXRfY2FwYWNpdHlfYnBzKGtJbml0aWFsQ2FwYWNpdHkuYnBzKCkpOwogCiAgIC8vIE5l
ZWRlZCB0byBpbml0aWFsaXplIHRoZSBBaW1kUmF0ZUNvbnRyb2wuCiAgIGJpdHJhdGVfZXN0aW1h
dG9yXy0+U2V0U3RhcnRCaXRyYXRlKGtTdGFydEJpdHJhdGUpOwogCiAgIC8vIFByb2R1Y2UgMzAg
ZnJhbWVzIChpbiAxLzMgc2Vjb25kKSBhbmQgZ2l2ZSB0aGVtIHRvIHRoZSBlc3RpbWF0b3IuCi0g
IHVpbnQzMl90IGJpdHJhdGVfYnBzID0ga1N0YXJ0Qml0cmF0ZTsKKyAgaW50NjRfdCBiaXRyYXRl
X2JwcyA9IGtTdGFydEJpdHJhdGUuYnBzKCk7CiAgIGJvb2wgc2Vlbl9vdmVydXNlID0gZmFsc2U7
CiAgIGZvciAoaW50IGZyYW1lcyA9IDA7IGZyYW1lcyA8IDMwICYmICFzZWVuX292ZXJ1c2U7ICsr
ZnJhbWVzKSB7CiAgICAgYm9vbCBvdmVydXNlID0gR2VuZXJhdGVBbmRQcm9jZXNzRnJhbWUoa0R1
bW15U3NyYywgYml0cmF0ZV9icHMpOwpAQCAtMjY2LDcgKzI2OCw4IEBAIFRFU1RfRihEZWxheUJh
c2VkQndlVGVzdFdpdGhCYWNrb2ZmVGltZW91dEV4cGVyaW1lbnQsIFRlc3RJbml0aWFsT3ZlcnVz
ZSkgewogICAgIEVYUEVDVF9GQUxTRShhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5i
aXRyYXRlX2JwcygpLmhhc192YWx1ZSgpKTsKICAgICBpZiAob3ZlcnVzZSkgewogICAgICAgRVhQ
RUNUX1RSVUUoYml0cmF0ZV9vYnNlcnZlcl8udXBkYXRlZCgpKTsKLSAgICAgIEVYUEVDVF9ORUFS
KGJpdHJhdGVfb2JzZXJ2ZXJfLmxhdGVzdF9iaXRyYXRlKCksIGtTdGFydEJpdHJhdGUgLyAyLCAx
NTAwMCk7CisgICAgICBFWFBFQ1RfTkVBUihiaXRyYXRlX29ic2VydmVyXy5sYXRlc3RfYml0cmF0
ZSgpLCBrU3RhcnRCaXRyYXRlLmJwcygpIC8gMiwKKyAgICAgICAgICAgICAgICAgIDE1MDAwKTsK
ICAgICAgIGJpdHJhdGVfYnBzID0gYml0cmF0ZV9vYnNlcnZlcl8ubGF0ZXN0X2JpdHJhdGUoKTsK
ICAgICAgIHNlZW5fb3ZlcnVzZSA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChiaXRyYXRlX29ic2Vy
dmVyXy51cGRhdGVkKCkpIHsKQEAgLTI4Miw4ICsyODUsOCBAQCBURVNUX0YoRGVsYXlCYXNlZEJ3
ZVRlc3RXaXRoQmFja29mZlRpbWVvdXRFeHBlcmltZW50LCBUZXN0SW5pdGlhbE92ZXJ1c2UpIHsK
ICAgICBFWFBFQ1RfRkFMU0Uob3ZlcnVzZSk7CiAgICAgaWYgKGJpdHJhdGVfb2JzZXJ2ZXJfLnVw
ZGF0ZWQoKSkgewogICAgICAgYml0cmF0ZV9icHMgPSBiaXRyYXRlX29ic2VydmVyXy5sYXRlc3Rf
Yml0cmF0ZSgpOwotICAgICAgRVhQRUNUX0dFKGJpdHJhdGVfYnBzLCBrU3RhcnRCaXRyYXRlIC8g
MiAtIDE1MDAwKTsKLSAgICAgIEVYUEVDVF9MRShiaXRyYXRlX2Jwcywga0luaXRpYWxDYXBhY2l0
eUJwcyArIDE1MDAwKTsKKyAgICAgIEVYUEVDVF9HRShiaXRyYXRlX2Jwcywga1N0YXJ0Qml0cmF0
ZS5icHMoKSAvIDIgLSAxNTAwMCk7CisgICAgICBFWFBFQ1RfTEUoYml0cmF0ZV9icHMsIGtJbml0
aWFsQ2FwYWNpdHkuYnBzKCkgKyAxNTAwMCk7CiAgICAgICBiaXRyYXRlX29ic2VydmVyXy5SZXNl
dCgpOwogICAgIH0KICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxh
eV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9k
ZWxheV9iYXNlZF9id2VfdW5pdHRlc3RfaGVscGVyLmNjCmluZGV4IDJhMDA4MDFlYjFjNmNkNjg2
NDMyNDc5YTcyOTg3YzRlYmEzNTE4MTIuLjQ3Mjg4ZTVmYmM2NGZjYWQzYTkyNGEyMjc2OTk0Y2Y2
MDQwMDUwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRf
YndlX3VuaXR0ZXN0X2hlbHBlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5
X2Jhc2VkX2J3ZV91bml0dGVzdF9oZWxwZXIuY2MKQEAgLTE1NCw2ICsxNTQsNyBAQCBEZWxheUJh
c2VkQndlVGVzdDo6RGVsYXlCYXNlZEJ3ZVRlc3QoKQogICAgICAgY2xvY2tfKDEwMDAwMDAwMCks
CiAgICAgICBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfKAogICAgICAgICAgIGFic2w6
Om1ha2VfdW5pcXVlPEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I+KCkpLAorICAgICAgcHJv
YmVfYml0cmF0ZV9lc3RpbWF0b3JfKG5ldyBQcm9iZUJpdHJhdGVFc3RpbWF0b3IobnVsbHB0cikp
LAogICAgICAgYml0cmF0ZV9lc3RpbWF0b3JfKG5ldyBEZWxheUJhc2VkQndlKG51bGxwdHIpKSwK
ICAgICAgIHN0cmVhbV9nZW5lcmF0b3JfKG5ldyB0ZXN0OjpTdHJlYW1HZW5lcmF0b3IoMWU2LCAg
Ly8gQ2FwYWNpdHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsb2NrXy5UaW1lSW5NaWNyb3NlY29uZHMoKSkpLApAQCAtMTY2LDYgKzE2Nyw3IEBA
IERlbGF5QmFzZWRCd2VUZXN0OjpEZWxheUJhc2VkQndlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYg
ZmllbGRfdHJpYWxfc3RyaW5nKQogICAgICAgY2xvY2tfKDEwMDAwMDAwMCksCiAgICAgICBhY2tu
b3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfKAogICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PEFja25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I+KCkpLAorICAgICAgcHJvYmVfYml0cmF0ZV9l
c3RpbWF0b3JfKG5ldyBQcm9iZUJpdHJhdGVFc3RpbWF0b3IobnVsbHB0cikpLAogICAgICAgYml0
cmF0ZV9lc3RpbWF0b3JfKG5ldyBEZWxheUJhc2VkQndlKG51bGxwdHIpKSwKICAgICAgIHN0cmVh
bV9nZW5lcmF0b3JfKG5ldyB0ZXN0OjpTdHJlYW1HZW5lcmF0b3IoMWU2LCAgLy8gQ2FwYWNpdHku
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2Nr
Xy5UaW1lSW5NaWNyb3NlY29uZHMoKSkpLApAQCAtMTk4LDE1ICsyMDAsMjAgQEAgdm9pZCBEZWxh
eUJhc2VkQndlVGVzdDo6SW5jb21pbmdGZWVkYmFjayhpbnQ2NF90IGFycml2YWxfdGltZV9tcywK
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlciwgcGF5bG9hZF9zaXplLCBw
YWNpbmdfaW5mbyk7CiAgIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBwYWNrZXRzOwogICBw
YWNrZXRzLnB1c2hfYmFjayhwYWNrZXQpOworICBpZiAocGFja2V0LnNlbmRfdGltZV9tcyAhPSBQ
YWNrZXRGZWVkYmFjazo6a05vU2VuZFRpbWUgJiYKKyAgICAgIHBhY2tldC5wYWNpbmdfaW5mby5w
cm9iZV9jbHVzdGVyX2lkICE9IFBhY2VkUGFja2V0SW5mbzo6a05vdEFQcm9iZSkKKyAgICBwcm9i
ZV9iaXRyYXRlX2VzdGltYXRvcl8tPkhhbmRsZVByb2JlQW5kRXN0aW1hdGVCaXRyYXRlKHBhY2tl
dCk7CisKICAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+SW5jb21pbmdQYWNrZXRG
ZWVkYmFja1ZlY3RvcihwYWNrZXRzKTsKICAgRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0IHJlc3VsdCA9
CiAgICAgICBiaXRyYXRlX2VzdGltYXRvcl8tPkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3Io
Ci0gICAgICAgICAgcGFja2V0cywgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+Yml0
cmF0ZV9icHMoKSwKLSAgICAgICAgICBjbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOworICAg
ICAgICAgIHBhY2tldHMsIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGUo
KSwKKyAgICAgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8tPkZldGNoQW5kUmVzZXRMYXN0
RXN0aW1hdGVkQml0cmF0ZSgpLAorICAgICAgICAgIFRpbWVzdGFtcDo6bXMoY2xvY2tfLlRpbWVJ
bk1pbGxpc2Vjb25kcygpKSk7CiAgIGNvbnN0IHVpbnQzMl90IGtEdW1teVNzcmMgPSAwOwogICBp
ZiAocmVzdWx0LnVwZGF0ZWQpIHsKICAgICBiaXRyYXRlX29ic2VydmVyXy5PblJlY2VpdmVCaXRy
YXRlQ2hhbmdlZCh7a0R1bW15U3NyY30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlX2Jwcyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlLmJw
cygpKTsKICAgfQogfQogCkBAIC0yMzIsMTggKzIzOSwyMyBAQCBib29sIERlbGF5QmFzZWRCd2VU
ZXN0OjpHZW5lcmF0ZUFuZFByb2Nlc3NGcmFtZSh1aW50MzJfdCBzc3JjLAogICBmb3IgKGF1dG8m
IHBhY2tldCA6IHBhY2tldHMpIHsKICAgICBSVENfQ0hFQ0tfR0UocGFja2V0LmFycml2YWxfdGlt
ZV9tcyArIGFycml2YWxfdGltZV9vZmZzZXRfbXNfLCAwKTsKICAgICBwYWNrZXQuYXJyaXZhbF90
aW1lX21zICs9IGFycml2YWxfdGltZV9vZmZzZXRfbXNfOworCisgICAgaWYgKHBhY2tldC5zZW5k
X3RpbWVfbXMgIT0gUGFja2V0RmVlZGJhY2s6OmtOb1NlbmRUaW1lICYmCisgICAgICAgIHBhY2tl
dC5wYWNpbmdfaW5mby5wcm9iZV9jbHVzdGVyX2lkICE9IFBhY2VkUGFja2V0SW5mbzo6a05vdEFQ
cm9iZSkKKyAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy0+SGFuZGxlUHJvYmVBbmRFc3Rp
bWF0ZUJpdHJhdGUocGFja2V0KTsKICAgfQogCiAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGlt
YXRvcl8tPkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IocGFja2V0cyk7CiAgIERlbGF5QmFz
ZWRCd2U6OlJlc3VsdCByZXN1bHQgPQogICAgICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5JbmNvbWlu
Z1BhY2tldEZlZWRiYWNrVmVjdG9yKAotICAgICAgICAgIHBhY2tldHMsIGFja25vd2xlZGdlZF9i
aXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGVfYnBzKCksCi0gICAgICAgICAgY2xvY2tfLlRpbWVJ
bk1pbGxpc2Vjb25kcygpKTsKKyAgICAgICAgICBwYWNrZXRzLCBhY2tub3dsZWRnZWRfYml0cmF0
ZV9lc3RpbWF0b3JfLT5iaXRyYXRlKCksCisgICAgICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0
b3JfLT5GZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGUoKSwKKyAgICAgICAgICBUaW1l
c3RhbXA6Om1zKGNsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMoKSkpOwogICBjb25zdCB1aW50MzJf
dCBrRHVtbXlTc3JjID0gMDsKICAgaWYgKHJlc3VsdC51cGRhdGVkKSB7CiAgICAgYml0cmF0ZV9v
YnNlcnZlcl8uT25SZWNlaXZlQml0cmF0ZUNoYW5nZWQoe2tEdW1teVNzcmN9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50YXJnZXRfYml0cmF0
ZV9icHMpOwotICAgIGlmICghZmlyc3RfdXBkYXRlXyAmJiByZXN1bHQudGFyZ2V0X2JpdHJhdGVf
YnBzIDwgYml0cmF0ZV9icHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LnRhcmdldF9iaXRyYXRlLmJwcygpKTsKKyAgICBpZiAoIWZpcnN0X3Vw
ZGF0ZV8gJiYgcmVzdWx0LnRhcmdldF9iaXRyYXRlLmJwcygpIDwgYml0cmF0ZV9icHMpCiAgICAg
ICBvdmVydXNlID0gdHJ1ZTsKICAgICBmaXJzdF91cGRhdGVfID0gZmFsc2U7CiAgIH0KQEAgLTI4
OSwxNCArMzAxLDE0IEBAIHZvaWQgRGVsYXlCYXNlZEJ3ZVRlc3Q6OkluaXRpYWxCZWhhdmlvclRl
c3RIZWxwZXIoCiAgIGNvbnN0IGludCBrRnJhbWVyYXRlID0gNTA7ICAvLyA1MCBmcHMgdG8gYXZv
aWQgcm91bmRpbmcgZXJyb3JzLgogICBjb25zdCBpbnQga0ZyYW1lSW50ZXJ2YWxNcyA9IDEwMDAg
LyBrRnJhbWVyYXRlOwogICBjb25zdCBQYWNlZFBhY2tldEluZm8ga1BhY2luZ0luZm8oMCwgNSwg
NTAwMCk7Ci0gIHVpbnQzMl90IGJpdHJhdGVfYnBzID0gMDsKKyAgRGF0YVJhdGUgYml0cmF0ZSA9
IERhdGFSYXRlOjpaZXJvKCk7CiAgIGludDY0X3Qgc2VuZF90aW1lX21zID0gMDsKICAgdWludDE2
X3Qgc2VxdWVuY2VfbnVtYmVyID0gMDsKICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHNzcmNzOwot
ICBFWFBFQ1RfRkFMU0UoYml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0ZSgmc3NyY3Ms
ICZiaXRyYXRlX2JwcykpOworICBFWFBFQ1RfRkFMU0UoYml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRl
c3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlKSk7CiAgIEVYUEVDVF9FUSgwdSwgc3NyY3Muc2l6
ZSgpKTsKICAgY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDApOwotICBFWFBFQ1Rf
RkFMU0UoYml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRl
X2JwcykpOworICBFWFBFQ1RfRkFMU0UoYml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0
ZSgmc3NyY3MsICZiaXRyYXRlKSk7CiAgIEVYUEVDVF9GQUxTRShiaXRyYXRlX29ic2VydmVyXy51
cGRhdGVkKCkpOwogICBiaXRyYXRlX29ic2VydmVyXy5SZXNldCgpOwogICBjbG9ja18uQWR2YW5j
ZVRpbWVNaWxsaXNlY29uZHMoMTAwMCk7CkBAIC0zMDgsNyArMzIwLDcgQEAgdm9pZCBEZWxheUJh
c2VkQndlVGVzdDo6SW5pdGlhbEJlaGF2aW9yVGVzdEhlbHBlcigKICAgICAgICAgaSA8IGtJbml0
aWFsUHJvYmluZ1BhY2tldHMgPyBrUGFjaW5nSW5mbyA6IFBhY2VkUGFja2V0SW5mbygpOwogCiAg
ICAgaWYgKGkgPT0ga051bUluaXRpYWxQYWNrZXRzKSB7Ci0gICAgICBFWFBFQ1RfRkFMU0UoYml0
cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlX2JwcykpOwor
ICAgICAgRVhQRUNUX0ZBTFNFKGJpdHJhdGVfZXN0aW1hdG9yXy0+TGF0ZXN0RXN0aW1hdGUoJnNz
cmNzLCAmYml0cmF0ZSkpOwogICAgICAgRVhQRUNUX0VRKDB1LCBzc3Jjcy5zaXplKCkpOwogICAg
ICAgRVhQRUNUX0ZBTFNFKGJpdHJhdGVfb2JzZXJ2ZXJfLnVwZGF0ZWQoKSk7CiAgICAgICBiaXRy
YXRlX29ic2VydmVyXy5SZXNldCgpOwpAQCAtMzE4LDEzICszMzAsMTQgQEAgdm9pZCBEZWxheUJh
c2VkQndlVGVzdDo6SW5pdGlhbEJlaGF2aW9yVGVzdEhlbHBlcigKICAgICBjbG9ja18uQWR2YW5j
ZVRpbWVNaWxsaXNlY29uZHMoMTAwMCAvIGtGcmFtZXJhdGUpOwogICAgIHNlbmRfdGltZV9tcyAr
PSBrRnJhbWVJbnRlcnZhbE1zOwogICB9Ci0gIEVYUEVDVF9UUlVFKGJpdHJhdGVfZXN0aW1hdG9y
Xy0+TGF0ZXN0RXN0aW1hdGUoJnNzcmNzLCAmYml0cmF0ZV9icHMpKTsKKyAgRVhQRUNUX1RSVUUo
Yml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0ZSgmc3NyY3MsICZiaXRyYXRlKSk7CiAg
IEFTU0VSVF9FUSgxdSwgc3NyY3Muc2l6ZSgpKTsKICAgRVhQRUNUX0VRKGtEZWZhdWx0U3NyYywg
c3NyY3MuZnJvbnQoKSk7Ci0gIEVYUEVDVF9ORUFSKGV4cGVjdGVkX2NvbnZlcmdlX2JpdHJhdGUs
IGJpdHJhdGVfYnBzLCBrQWNjZXB0ZWRCaXRyYXRlRXJyb3JCcHMpOworICBFWFBFQ1RfTkVBUihl
eHBlY3RlZF9jb252ZXJnZV9iaXRyYXRlLCBiaXRyYXRlLmJwcygpLAorICAgICAgICAgICAgICBr
QWNjZXB0ZWRCaXRyYXRlRXJyb3JCcHMpOwogICBFWFBFQ1RfVFJVRShiaXRyYXRlX29ic2VydmVy
Xy51cGRhdGVkKCkpOwogICBiaXRyYXRlX29ic2VydmVyXy5SZXNldCgpOwotICBFWFBFQ1RfRVEo
Yml0cmF0ZV9vYnNlcnZlcl8ubGF0ZXN0X2JpdHJhdGUoKSwgYml0cmF0ZV9icHMpOworICBFWFBF
Q1RfRVEoYml0cmF0ZV9vYnNlcnZlcl8ubGF0ZXN0X2JpdHJhdGUoKSwgYml0cmF0ZS5icHMoKSk7
CiB9CiAKIHZvaWQgRGVsYXlCYXNlZEJ3ZVRlc3Q6OlJhdGVJbmNyZWFzZVJlb3JkZXJpbmdUZXN0
SGVscGVyKApAQCAtNTA5LDcgKzUyMiw3IEBAIHZvaWQgRGVsYXlCYXNlZEJ3ZVRlc3Q6OlRlc3RX
cmFwcGluZ0hlbHBlcihpbnQgc2lsZW5jZV90aW1lX3MpIHsKICAgICBjbG9ja18uQWR2YW5jZVRp
bWVNaWxsaXNlY29uZHMoa0ZyYW1lSW50ZXJ2YWxNcyk7CiAgICAgc2VuZF90aW1lX21zICs9IGtG
cmFtZUludGVydmFsTXM7CiAgIH0KLSAgdWludDMyX3QgYml0cmF0ZV9iZWZvcmUgPSAwOworICBE
YXRhUmF0ZSBiaXRyYXRlX2JlZm9yZSA9IERhdGFSYXRlOjpaZXJvKCk7CiAgIHN0ZDo6dmVjdG9y
PHVpbnQzMl90PiBzc3JjczsKICAgYml0cmF0ZV9lc3RpbWF0b3JfLT5MYXRlc3RFc3RpbWF0ZSgm
c3NyY3MsICZiaXRyYXRlX2JlZm9yZSk7CiAKQEAgLTUyMiw3ICs1MzUsNyBAQCB2b2lkIERlbGF5
QmFzZWRCd2VUZXN0OjpUZXN0V3JhcHBpbmdIZWxwZXIoaW50IHNpbGVuY2VfdGltZV9zKSB7CiAg
ICAgY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDIgKiBrRnJhbWVJbnRlcnZhbE1zKTsK
ICAgICBzZW5kX3RpbWVfbXMgKz0ga0ZyYW1lSW50ZXJ2YWxNczsKICAgfQotICB1aW50MzJfdCBi
aXRyYXRlX2FmdGVyID0gMDsKKyAgRGF0YVJhdGUgYml0cmF0ZV9hZnRlciA9IERhdGFSYXRlOjpa
ZXJvKCk7CiAgIGJpdHJhdGVfZXN0aW1hdG9yXy0+TGF0ZXN0RXN0aW1hdGUoJnNzcmNzLCAmYml0
cmF0ZV9hZnRlcik7CiAgIEVYUEVDVF9MVChiaXRyYXRlX2FmdGVyLCBiaXRyYXRlX2JlZm9yZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZV91
bml0dGVzdF9oZWxwZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndl
X3VuaXR0ZXN0X2hlbHBlci5oCmluZGV4IDdiYTE4YzM2NzUyN2JiNzI2MzU0ZTRjNzQxMjQ0M2U0
ZWQ0MDY2YjEuLjQ0NGUwY2Q2N2RmNGZiNDY4NWUzMzlmYzUzMjhhNTFmMjg1ODUxOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlX3VuaXR0ZXN0X2hl
bHBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlX3VuaXR0
ZXN0X2hlbHBlci5oCkBAIC0xNzIsNiArMTcyLDcgQEAgY2xhc3MgRGVsYXlCYXNlZEJ3ZVRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgU2ltdWxhdGVkQ2xvY2sgY2xvY2tfOyAgLy8g
VGltZSBhdCB0aGUgcmVjZWl2ZXIuCiAgIHRlc3Q6OlRlc3RCaXRyYXRlT2JzZXJ2ZXIgYml0cmF0
ZV9vYnNlcnZlcl87CiAgIHN0ZDo6dW5pcXVlX3B0cjxBY2tub3dsZWRnZWRCaXRyYXRlRXN0aW1h
dG9yPiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfOworICBjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8UHJvYmVCaXRyYXRlRXN0aW1hdG9yPiBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl87CiAg
IHN0ZDo6dW5pcXVlX3B0cjxEZWxheUJhc2VkQndlPiBiaXRyYXRlX2VzdGltYXRvcl87CiAgIHN0
ZDo6dW5pcXVlX3B0cjx0ZXN0OjpTdHJlYW1HZW5lcmF0b3I+IHN0cmVhbV9nZW5lcmF0b3JfOwog
ICBpbnQ2NF90IGFycml2YWxfdGltZV9vZmZzZXRfbXNfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvZ29vZ19jYy9nb29nX2NjX2ZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2Nj
L2dvb2dfY2NfZmFjdG9yeS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUwY2Nj
MTdjYTRiM2EzYjgxODZiZmU2M2ExNmU5NmFkNTE5YWQxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2Nf
ZmFjdG9yeS5jYworKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9pbmNsdWRlL2dvb2dfY2NfZmFjdG9yeS5oIgotCi0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVt
b3J5LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9n
b29nX2NjX25ldHdvcmtfY29udHJvbC5oIgotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1Hb29nQ2NOZXR3
b3JrQ29udHJvbGxlckZhY3Rvcnk6Okdvb2dDY05ldHdvcmtDb250cm9sbGVyRmFjdG9yeSgKLSAg
ICBSdGNFdmVudExvZyogZXZlbnRfbG9nKQotICAgIDogZXZlbnRfbG9nXyhldmVudF9sb2cpIHt9
Ci0KLXN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckludGVyZmFjZT4KLUdvb2dDY05l
dHdvcmtDb250cm9sbGVyRmFjdG9yeTo6Q3JlYXRlKE5ldHdvcmtDb250cm9sbGVyQ29uZmlnIGNv
bmZpZykgewotICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8R29vZ0NjTmV0d29ya0NvbnRyb2xs
ZXI+KGV2ZW50X2xvZ18sIGNvbmZpZywgZmFsc2UpOwotfQotCi1UaW1lRGVsdGEgR29vZ0NjTmV0
d29ya0NvbnRyb2xsZXJGYWN0b3J5OjpHZXRQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdCB7Ci0gIGNv
bnN0IGludDY0X3Qga1VwZGF0ZUludGVydmFsTXMgPSAyNTsKLSAgcmV0dXJuIFRpbWVEZWx0YTo6
bXMoa1VwZGF0ZUludGVydmFsTXMpOwotfQotCi1Hb29nQ2NGZWVkYmFja05ldHdvcmtDb250cm9s
bGVyRmFjdG9yeTo6R29vZ0NjRmVlZGJhY2tOZXR3b3JrQ29udHJvbGxlckZhY3RvcnkoCi0gICAg
UnRjRXZlbnRMb2cqIGV2ZW50X2xvZykKLSAgICA6IGV2ZW50X2xvZ18oZXZlbnRfbG9nKSB7fQot
Ci1zdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRyb2xsZXJJbnRlcmZhY2U+Ci1Hb29nQ2NGZWVk
YmFja05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6Q3JlYXRlKE5ldHdvcmtDb250cm9sbGVyQ29u
ZmlnIGNvbmZpZykgewotICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8R29vZ0NjTmV0d29ya0Nv
bnRyb2xsZXI+KGV2ZW50X2xvZ18sIGNvbmZpZywgdHJ1ZSk7Ci19Ci0KLVRpbWVEZWx0YSBHb29n
Q2NGZWVkYmFja05ldHdvcmtDb250cm9sbGVyRmFjdG9yeTo6R2V0UHJvY2Vzc0ludGVydmFsKCkg
Y29uc3QgewotICBjb25zdCBpbnQ2NF90IGtVcGRhdGVJbnRlcnZhbE1zID0gMjU7Ci0gIHJldHVy
biBUaW1lRGVsdGE6Om1zKGtVcGRhdGVJbnRlcnZhbE1zKTsKLX0KLX0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3Jr
X2NvbnRyb2wuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250
cm9sLmNjCmluZGV4IDRhYjk2OTRmMzdiYzAzN2U0Yzk1ZTI2YWM0MzliNWYyYzE1YTFmNmQuLjQz
NzY5NTNiN2NjMWNmNDkzNWMyMmFiMmE4N2RlOTBlZmMwZTllMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5jYwpAQCAtMjIsNyArMjIs
NiBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1h
dG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9h
bHJfZGV0ZWN0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL2luY2x1ZGUvZ29vZ19jY19mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9jb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3QvYndlX3Rlc3Rf
bG9nZ2luZy5oIgpAQCAtMzYsNiArMzUsMTEgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3Bh
Y2UgewogCiBjb25zdCBjaGFyIGtDd25kRXhwZXJpbWVudFtdID0gIldlYlJUQy1Dd25kRXhwZXJp
bWVudCI7CisvLyBXaGVuIENvbmdlc3Rpb25XaW5kb3dQdXNoYmFjayBpcyBlbmFibGVkLCB0aGUg
cGFjZXIgaXMgb2JsaXZpb3VzIHRvCisvLyB0aGUgY29uZ2VzdGlvbiB3aW5kb3cuIFRoZSByZWxh
dGlvbiBiZXR3ZWVuIG91dHN0YW5kaW5nIGRhdGEgYW5kCisvLyB0aGUgY29uZ2VzdGlvbiB3aW5k
b3cgYWZmZWN0cyBlbmNvZGVyIGFsbG9jYXRpb25zIGRpcmVjdGx5LgorY29uc3QgY2hhciBrQ29u
Z2VzdGlvblB1c2hiYWNrRXhwZXJpbWVudFtdID0gIldlYlJUQy1Db25nZXN0aW9uV2luZG93UHVz
aGJhY2siOworCiBjb25zdCBpbnQ2NF90IGtEZWZhdWx0QWNjZXB0ZWRRdWV1ZU1zID0gMjUwOwog
CiAvLyBGcm9tIFJUQ1BTZW5kZXIgdmlkZW8gcmVwb3J0IGludGVydmFsLgpAQCAtNDgsNiArNTIs
MTggQEAgY29uc3RleHByIFRpbWVEZWx0YSBrTG9zc1VwZGF0ZUludGVydmFsID0gVGltZURlbHRh
OjpNaWxsaXM8MTAwMD4oKTsKIC8vIG92ZXJzaG9vdHMgZnJvbSB0aGUgZW5jb2Rlci4KIGNvbnN0
IGZsb2F0IGtEZWZhdWx0UGFjZU11bHRpcGxpZXIgPSAyLjVmOwogCitib29sIElzQ29uZ2VzdGlv
bldpbmRvd1B1c2hiYWNrRXhwZXJpbWVudEVuYWJsZWQoKSB7CisgIHJldHVybiB3ZWJydGM6OmZp
ZWxkX3RyaWFsOjpJc0VuYWJsZWQoa0Nvbmdlc3Rpb25QdXNoYmFja0V4cGVyaW1lbnQpICYmCisg
ICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa0N3bmRFeHBlcmltZW50KTsK
K30KKworc3RkOjp1bmlxdWVfcHRyPENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI+
CitNYXliZUluaXRhbGl6ZUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXIoKSB7Cisg
IHJldHVybiBJc0Nvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0V4cGVyaW1lbnRFbmFibGVkKCkKKyAg
ICAgICAgICAgICA/IGFic2w6Om1ha2VfdW5pcXVlPENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0Nv
bnRyb2xsZXI+KCkKKyAgICAgICAgICAgICA6IG51bGxwdHI7Cit9CisKIGJvb2wgQ3duZEV4cGVy
aW1lbnRFbmFibGVkKCkgewogICBzdGQ6OnN0cmluZyBleHBlcmltZW50X3N0cmluZyA9CiAgICAg
ICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoa0N3bmRFeHBlcmltZW50KTsKQEAg
LTkwLDEzICsxMDYsMTAgQEAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IFJlY2VpdmVkUGFj
a2V0c0ZlZWRiYWNrQXNSdHAoCiAgICAgaWYgKGZiLnJlY2VpdmVfdGltZS5Jc0Zpbml0ZSgpKSB7
CiAgICAgICBQYWNrZXRGZWVkYmFjayBwZihmYi5yZWNlaXZlX3RpbWUubXMoKSwgMCk7CiAgICAg
ICBwZi5jcmVhdGlvbl90aW1lX21zID0gcmVwb3J0LmZlZWRiYWNrX3RpbWUubXMoKTsKLSAgICAg
IGlmIChmYi5zZW50X3BhY2tldC5oYXNfdmFsdWUoKSkgewotICAgICAgICBwZi5wYXlsb2FkX3Np
emUgPSBmYi5zZW50X3BhY2tldC0+c2l6ZS5ieXRlcygpOwotICAgICAgICBwZi5wYWNpbmdfaW5m
byA9IGZiLnNlbnRfcGFja2V0LT5wYWNpbmdfaW5mbzsKLSAgICAgICAgcGYuc2VuZF90aW1lX21z
ID0gZmIuc2VudF9wYWNrZXQtPnNlbmRfdGltZS5tcygpOwotICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgcGYuc2VuZF90aW1lX21zID0gUGFja2V0RmVlZGJhY2s6OmtOb1NlbmRUaW1lOwotICAgICAg
fQorICAgICAgcGYucGF5bG9hZF9zaXplID0gZmIuc2VudF9wYWNrZXQuc2l6ZS5ieXRlcygpOwor
ICAgICAgcGYucGFjaW5nX2luZm8gPSBmYi5zZW50X3BhY2tldC5wYWNpbmdfaW5mbzsKKyAgICAg
IHBmLnNlbmRfdGltZV9tcyA9IGZiLnNlbnRfcGFja2V0LnNlbmRfdGltZS5tcygpOworICAgICAg
cGYudW5hY2tub3dsZWRnZWRfZGF0YSA9IGZiLnNlbnRfcGFja2V0LnByaW9yX3VuYWNrZWRfZGF0
YS5ieXRlcygpOwogICAgICAgcGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5wdXNoX2JhY2socGYpOwog
ICAgIH0KICAgfQpAQCAtMTE0LDIxICsxMjcsMjcgQEAgaW50NjRfdCBHZXRCcHNPckRlZmF1bHQo
Y29uc3QgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+JiByYXRlLAogCiB9ICAvLyBuYW1lc3BhY2UK
IAotCiBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6R29vZ0NjTmV0d29ya0NvbnRyb2xsZXIoUnRj
RXZlbnRMb2cqIGV2ZW50X2xvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOZXR3b3JrQ29udHJvbGxlckNvbmZpZyBjb25maWcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmZWVkYmFja19vbmx5
KQogICAgIDogZXZlbnRfbG9nXyhldmVudF9sb2cpLAogICAgICAgcGFja2V0X2ZlZWRiYWNrX29u
bHlfKGZlZWRiYWNrX29ubHkpLAorICAgICAgc2FmZV9yZXNldF9vbl9yb3V0ZV9jaGFuZ2VfKCJF
bmFibGVkIiksCisgICAgICBzYWZlX3Jlc2V0X2Fja25vd2xlZGdlZF9yYXRlXygiYWNrIiksCisg
ICAgICB1c2Vfc3RhYmxlX2JhbmR3aWR0aF9lc3RpbWF0ZV8oCisgICAgICAgICAgZmllbGRfdHJp
YWw6OklzRW5hYmxlZCgiV2ViUlRDLUJ3ZS1TdGFibGVCYW5kd2lkdGhFc3RpbWF0ZSIpKSwKICAg
ICAgIHByb2JlX2NvbnRyb2xsZXJfKG5ldyBQcm9iZUNvbnRyb2xsZXIoKSksCisgICAgICBjb25n
ZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXygKKyAgICAgICAgICBNYXliZUluaXRh
bGl6ZUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXIoKSksCiAgICAgICBiYW5kd2lk
dGhfZXN0aW1hdGlvbl8oCiAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2VuZFNpZGVCYW5k
d2lkdGhFc3RpbWF0aW9uPihldmVudF9sb2dfKSksCiAgICAgICBhbHJfZGV0ZWN0b3JfKGFic2w6
Om1ha2VfdW5pcXVlPEFsckRldGVjdG9yPigpKSwKKyAgICAgIHByb2JlX2JpdHJhdGVfZXN0aW1h
dG9yXyhuZXcgUHJvYmVCaXRyYXRlRXN0aW1hdG9yKGV2ZW50X2xvZykpLAogICAgICAgZGVsYXlf
YmFzZWRfYndlXyhuZXcgRGVsYXlCYXNlZEJ3ZShldmVudF9sb2dfKSksCiAgICAgICBhY2tub3ds
ZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfKAogICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEFj
a25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I+KCkpLAogICAgICAgaW5pdGlhbF9jb25maWdfKGNv
bmZpZyksCi0gICAgICBsYXN0X2JhbmR3aWR0aF8oKmNvbmZpZy5jb25zdHJhaW50cy5zdGFydGlu
Z19yYXRlKSwKKyAgICAgIGxhc3RfdGFyZ2V0X3JhdGVfKCpjb25maWcuY29uc3RyYWludHMuc3Rh
cnRpbmdfcmF0ZSksCiAgICAgICBwYWNpbmdfZmFjdG9yXyhjb25maWcuc3RyZWFtX2Jhc2VkX2Nv
bmZpZy5wYWNpbmdfZmFjdG9yLnZhbHVlX29yKAogICAgICAgICAgIGtEZWZhdWx0UGFjZU11bHRp
cGxpZXIpKSwKICAgICAgIG1pbl9wYWNpbmdfcmF0ZV8oY29uZmlnLnN0cmVhbV9iYXNlZF9jb25m
aWcubWluX3BhY2luZ19yYXRlLnZhbHVlX29yKApAQCAtMTM4LDcgKzE1NywxMiBAQCBHb29nQ2NO
ZXR3b3JrQ29udHJvbGxlcjo6R29vZ0NjTmV0d29ya0NvbnRyb2xsZXIoUnRjRXZlbnRMb2cqIGV2
ZW50X2xvZywKICAgICAgIG1heF90b3RhbF9hbGxvY2F0ZWRfYml0cmF0ZV8oRGF0YVJhdGU6Olpl
cm8oKSksCiAgICAgICBpbl9jd25kX2V4cGVyaW1lbnRfKEN3bmRFeHBlcmltZW50RW5hYmxlZCgp
KSwKICAgICAgIGFjY2VwdGVkX3F1ZXVlX21zXyhrRGVmYXVsdEFjY2VwdGVkUXVldWVNcykgewot
ICBkZWxheV9iYXNlZF9id2VfLT5TZXRNaW5CaXRyYXRlKGNvbmdlc3Rpb25fY29udHJvbGxlcjo6
R2V0TWluQml0cmF0ZUJwcygpKTsKKyAgUlRDX0RDSEVDSyhjb25maWcuY29uc3RyYWludHMuYXRf
dGltZS5Jc0Zpbml0ZSgpKTsKKyAgUGFyc2VGaWVsZFRyaWFsKAorICAgICAgeyZzYWZlX3Jlc2V0
X29uX3JvdXRlX2NoYW5nZV8sICZzYWZlX3Jlc2V0X2Fja25vd2xlZGdlZF9yYXRlX30sCisgICAg
ICBmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJXZWJSVEMtQndlLVNhZmVSZXNldE9uUm91dGVD
aGFuZ2UiKSk7CisKKyAgZGVsYXlfYmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShjb25nZXN0aW9u
X2NvbnRyb2xsZXI6OkdldE1pbkJpdHJhdGUoKSk7CiAgIGlmIChpbl9jd25kX2V4cGVyaW1lbnRf
ICYmCiAgICAgICAhUmVhZEN3bmRFeHBlcmltZW50UGFyYW1ldGVyKCZhY2NlcHRlZF9xdWV1ZV9t
c18pKSB7CiAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIHBhcnNlIHBhcmFt
ZXRlcnMgZm9yIEN3bmRFeHBlcmltZW50ICIKQEAgLTE2NSwxNiArMTg5LDM5IEBAIE5ldHdvcmtD
b250cm9sVXBkYXRlIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpPbk5ldHdvcmtSb3V0ZUNoYW5n
ZSgKIAogICBDbGFtcEJpdHJhdGVzKCZzdGFydF9iaXRyYXRlX2JwcywgJm1pbl9iaXRyYXRlX2Jw
cywgJm1heF9iaXRyYXRlX2Jwcyk7CiAKLSAgYmFuZHdpZHRoX2VzdGltYXRpb25fID0KLSAgICAg
IGFic2w6Om1ha2VfdW5pcXVlPFNlbmRTaWRlQmFuZHdpZHRoRXN0aW1hdGlvbj4oZXZlbnRfbG9n
Xyk7CisgIGlmIChzYWZlX3Jlc2V0X29uX3JvdXRlX2NoYW5nZV8pIHsKKyAgICBhYnNsOjpvcHRp
b25hbDx1aW50MzJfdD4gZXN0aW1hdGVkX2JpdHJhdGVfYnBzOworICAgIGlmIChzYWZlX3Jlc2V0
X2Fja25vd2xlZGdlZF9yYXRlXykgeworICAgICAgZXN0aW1hdGVkX2JpdHJhdGVfYnBzID0gYWNr
bm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+Yml0cmF0ZV9icHMoKTsKKyAgICAgIGlmICgh
ZXN0aW1hdGVkX2JpdHJhdGVfYnBzKQorICAgICAgICBlc3RpbWF0ZWRfYml0cmF0ZV9icHMgPSBh
Y2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5QZWVrQnBzKCk7CisgICAgfSBlbHNlIHsK
KyAgICAgIGludDMyX3QgdGFyZ2V0X2JpdHJhdGVfYnBzOworICAgICAgdWludDhfdCBmcmFjdGlv
bl9sb3NzOworICAgICAgaW50NjRfdCBydHRfbXM7CisgICAgICBiYW5kd2lkdGhfZXN0aW1hdGlv
bl8tPkN1cnJlbnRFc3RpbWF0ZSgmdGFyZ2V0X2JpdHJhdGVfYnBzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyYWN0aW9uX2xvc3MsICZydHRfbXMpOwor
ICAgICAgZXN0aW1hdGVkX2JpdHJhdGVfYnBzID0gdGFyZ2V0X2JpdHJhdGVfYnBzOworICAgIH0K
KyAgICBpZiAoZXN0aW1hdGVkX2JpdHJhdGVfYnBzICYmICghbXNnLmNvbnN0cmFpbnRzLnN0YXJ0
aW5nX3JhdGUgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc3RpbWF0ZWRf
Yml0cmF0ZV9icHMgPCBzdGFydF9iaXRyYXRlX2JwcykpIHsKKyAgICAgIHN0YXJ0X2JpdHJhdGVf
YnBzID0gKmVzdGltYXRlZF9iaXRyYXRlX2JwczsKKyAgICAgIG1zZy5jb25zdHJhaW50cy5zdGFy
dGluZ19yYXRlID0gRGF0YVJhdGU6OmJwcyhzdGFydF9iaXRyYXRlX2Jwcyk7CisgICAgfQorICB9
CisKKyAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy5yZXNldChuZXcgQWNrbm93bGVk
Z2VkQml0cmF0ZUVzdGltYXRvcigpKTsKKyAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfLnJlc2V0
KG5ldyBQcm9iZUJpdHJhdGVFc3RpbWF0b3IoZXZlbnRfbG9nXykpOworICBkZWxheV9iYXNlZF9i
d2VfLnJlc2V0KG5ldyBEZWxheUJhc2VkQndlKGV2ZW50X2xvZ18pKTsKKyAgaWYgKG1zZy5jb25z
dHJhaW50cy5zdGFydGluZ19yYXRlKQorICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldFN0YXJ0Qml0
cmF0ZSgqbXNnLmNvbnN0cmFpbnRzLnN0YXJ0aW5nX3JhdGUpOworICAvLyBUT0RPKHNydGUpOiBV
c2Ugb3JpZ2luYWwgdmFsdWVzIGluc3RlYWQgb2YgY29udmVydGVkLgorICBkZWxheV9iYXNlZF9i
d2VfLT5TZXRNaW5CaXRyYXRlKERhdGFSYXRlOjpicHMobWluX2JpdHJhdGVfYnBzKSk7CisgIGJh
bmR3aWR0aF9lc3RpbWF0aW9uXy0+T25Sb3V0ZUNoYW5nZSgpOwogICBiYW5kd2lkdGhfZXN0aW1h
dGlvbl8tPlNldEJpdHJhdGVzKAogICAgICAgbXNnLmNvbnN0cmFpbnRzLnN0YXJ0aW5nX3JhdGUs
IERhdGFSYXRlOjpicHMobWluX2JpdHJhdGVfYnBzKSwKICAgICAgIG1zZy5jb25zdHJhaW50cy5t
YXhfZGF0YV9yYXRlLnZhbHVlX29yKERhdGFSYXRlOjpJbmZpbml0eSgpKSwKICAgICAgIG1zZy5h
dF90aW1lKTsKLSAgZGVsYXlfYmFzZWRfYndlXy5yZXNldChuZXcgRGVsYXlCYXNlZEJ3ZShldmVu
dF9sb2dfKSk7Ci0gIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8ucmVzZXQobmV3IEFj
a25vd2xlZGdlZEJpdHJhdGVFc3RpbWF0b3IoKSk7Ci0gIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldFN0
YXJ0Qml0cmF0ZShzdGFydF9iaXRyYXRlX2Jwcyk7Ci0gIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1p
bkJpdHJhdGUobWluX2JpdHJhdGVfYnBzKTsKIAogICBwcm9iZV9jb250cm9sbGVyXy0+UmVzZXQo
bXNnLmF0X3RpbWUubXMoKSk7CiAgIE5ldHdvcmtDb250cm9sVXBkYXRlIHVwZGF0ZTsKQEAgLTIz
OSw3ICsyODYsNyBAQCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBHb29nQ2NOZXR3b3JrQ29udHJvbGxl
cjo6T25Sb3VuZFRyaXBUaW1lVXBkYXRlKAogICBpZiAocGFja2V0X2ZlZWRiYWNrX29ubHlfKQog
ICAgIHJldHVybiBOZXR3b3JrQ29udHJvbFVwZGF0ZSgpOwogICBpZiAobXNnLnNtb290aGVkKSB7
Ci0gICAgZGVsYXlfYmFzZWRfYndlXy0+T25SdHRVcGRhdGUobXNnLnJvdW5kX3RyaXBfdGltZS5t
cygpKTsKKyAgICBkZWxheV9iYXNlZF9id2VfLT5PblJ0dFVwZGF0ZShtc2cucm91bmRfdHJpcF90
aW1lKTsKICAgfSBlbHNlIHsKICAgICBiYW5kd2lkdGhfZXN0aW1hdGlvbl8tPlVwZGF0ZVJ0dCht
c2cucm91bmRfdHJpcF90aW1lLCBtc2cucmVjZWl2ZV90aW1lKTsKICAgfQpAQCAtMjUwLDcgKzI5
NywyMiBAQCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6T25T
ZW50UGFja2V0KAogICAgIFNlbnRQYWNrZXQgc2VudF9wYWNrZXQpIHsKICAgYWxyX2RldGVjdG9y
Xy0+T25CeXRlc1NlbnQoc2VudF9wYWNrZXQuc2l6ZS5ieXRlcygpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZW50X3BhY2tldC5zZW5kX3RpbWUubXMoKSk7Ci0gIHJldHVybiBOZXR3
b3JrQ29udHJvbFVwZGF0ZSgpOworICBpZiAoIWZpcnN0X3BhY2tldF9zZW50XykgeworICAgIGZp
cnN0X3BhY2tldF9zZW50XyA9IHRydWU7CisgICAgLy8gSW5pdGlhbGl6ZSBmZWVkYmFjayB0aW1l
IHRvIHNlbmQgdGltZSB0byBhbGxvdyBlc3RpbWF0aW9uIG9mIFJUVCB1bnRpbAorICAgIC8vIGZp
cnN0IGZlZWRiYWNrIGlzIHJlY2VpdmVkLgorICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+VXBk
YXRlUHJvcGFnYXRpb25SdHQoc2VudF9wYWNrZXQuc2VuZF90aW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZURlbHRhOjpaZXJvKCkpOworICB9
CisgIGlmIChjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXykgeworICAgIGNv
bmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0Rh
dGEoCisgICAgICAgIHNlbnRfcGFja2V0LmRhdGFfaW5fZmxpZ2h0LmJ5dGVzKCkpOworICAgIE5l
dHdvcmtDb250cm9sVXBkYXRlIHVwZGF0ZTsKKyAgICBNYXliZVRyaWdnZXJPbk5ldHdvcmtDaGFu
Z2VkKCZ1cGRhdGUsIHNlbnRfcGFja2V0LnNlbmRfdGltZSk7CisgICAgcmV0dXJuIHVwZGF0ZTsK
KyAgfSBlbHNlIHsKKyAgICByZXR1cm4gTmV0d29ya0NvbnRyb2xVcGRhdGUoKTsKKyAgfQogfQog
CiBOZXR3b3JrQ29udHJvbFVwZGF0ZSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6T25TdHJlYW1z
Q29uZmlnKApAQCAtMzEyLDkgKzM3NCw5IEBAIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpVcGRh
dGVCaXRyYXRlQ29uc3RyYWludHMoCiAgICAgICBzdGFydGluZ19yYXRlLCBEYXRhUmF0ZTo6YnBz
KG1pbl9iaXRyYXRlX2JwcyksCiAgICAgICBjb25zdHJhaW50cy5tYXhfZGF0YV9yYXRlLnZhbHVl
X29yKERhdGFSYXRlOjpJbmZpbml0eSgpKSwKICAgICAgIGNvbnN0cmFpbnRzLmF0X3RpbWUpOwot
ICBpZiAoc3RhcnRfYml0cmF0ZV9icHMgPiAwKQotICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldFN0
YXJ0Qml0cmF0ZShzdGFydF9iaXRyYXRlX2Jwcyk7Ci0gIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1p
bkJpdHJhdGUobWluX2JpdHJhdGVfYnBzKTsKKyAgaWYgKHN0YXJ0aW5nX3JhdGUpCisgICAgZGVs
YXlfYmFzZWRfYndlXy0+U2V0U3RhcnRCaXRyYXRlKCpzdGFydGluZ19yYXRlKTsKKyAgZGVsYXlf
YmFzZWRfYndlXy0+U2V0TWluQml0cmF0ZShEYXRhUmF0ZTo6YnBzKG1pbl9iaXRyYXRlX2Jwcykp
OwogICByZXR1cm4gcHJvYmVzOwogfQogCkBAIC0zMzEsMzggKzM5Myw2MSBAQCBOZXR3b3JrQ29u
dHJvbFVwZGF0ZSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6T25UcmFuc3BvcnRMb3NzUmVwb3J0
KAogCiBOZXR3b3JrQ29udHJvbFVwZGF0ZSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6T25UcmFu
c3BvcnRQYWNrZXRzRmVlZGJhY2soCiAgICAgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrIHJlcG9y
dCkgewotICBUaW1lRGVsdGEgZmVlZGJhY2tfbWF4X3J0dCA9IFRpbWVEZWx0YTo6TWludXNJbmZp
bml0eSgpOworICBpZiAocmVwb3J0LnBhY2tldF9mZWVkYmFja3MuZW1wdHkoKSkgeworICAgIERl
bGF5QmFzZWRCd2U6OlJlc3VsdCByZXN1bHQgPSBkZWxheV9iYXNlZF9id2VfLT5PbkRlbGF5ZWRG
ZWVkYmFjaygKKyAgICAgICAgcmVwb3J0LnNlbmRsZXNzX2Fycml2YWxfdGltZXMuYmFjaygpKTsK
KyAgICBOZXR3b3JrQ29udHJvbFVwZGF0ZSB1cGRhdGU7CisgICAgaWYgKHJlc3VsdC51cGRhdGVk
KSB7CisgICAgICBiYW5kd2lkdGhfZXN0aW1hdGlvbl8tPlVwZGF0ZURlbGF5QmFzZWRFc3RpbWF0
ZShyZXBvcnQuZmVlZGJhY2tfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50YXJnZXRfYml0cmF0ZSk7CisgICAgICBNYXli
ZVRyaWdnZXJPbk5ldHdvcmtDaGFuZ2VkKCZ1cGRhdGUsIHJlcG9ydC5mZWVkYmFja190aW1lKTsK
KyAgICB9CisgICAgcmV0dXJuIHVwZGF0ZTsKKyAgfQorCisgIGlmIChjb25nZXN0aW9uX3dpbmRv
d19wdXNoYmFja19jb250cm9sbGVyXykgeworICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNr
X2NvbnRyb2xsZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoCisgICAgICAgIHJlcG9ydC5kYXRh
X2luX2ZsaWdodC5ieXRlcygpKTsKKyAgfQorICBUaW1lRGVsdGEgbWF4X2ZlZWRiYWNrX3J0dCA9
IFRpbWVEZWx0YTo6TWludXNJbmZpbml0eSgpOworICBUaW1lRGVsdGEgbWluX3Byb3BhZ2F0aW9u
X3J0dCA9IFRpbWVEZWx0YTo6UGx1c0luZmluaXR5KCk7CiAgIFRpbWVzdGFtcCBtYXhfcmVjdl90
aW1lID0gVGltZXN0YW1wOjpNaW51c0luZmluaXR5KCk7Ci0gIGZvciAoY29uc3QgYXV0byYgcGFj
a2V0X2ZlZWRiYWNrIDogcmVwb3J0LlJlY2VpdmVkV2l0aFNlbmRJbmZvKCkpIHsKLSAgICBUaW1l
RGVsdGEgcnR0ID0KLSAgICAgICAgcmVwb3J0LmZlZWRiYWNrX3RpbWUgLSBwYWNrZXRfZmVlZGJh
Y2suc2VudF9wYWNrZXQtPnNlbmRfdGltZTsKLSAgICAvLyBtYXgoKSBpcyB1c2VkIHRvIGFjY291
bnQgZm9yIGZlZWRiYWNrIGJlaW5nIGRlbGF5ZWQgYnkgdGhlCi0gICAgLy8gcmVjZWl2ZXIuCi0g
ICAgZmVlZGJhY2tfbWF4X3J0dCA9IHN0ZDo6bWF4KGZlZWRiYWNrX21heF9ydHQsIHJ0dCk7Ci0g
ICAgbWF4X3JlY3ZfdGltZSA9IHN0ZDo6bWF4KG1heF9yZWN2X3RpbWUsIHBhY2tldF9mZWVkYmFj
ay5yZWNlaXZlX3RpbWUpOworCisgIHN0ZDo6dmVjdG9yPFBhY2tldFJlc3VsdD4gZmVlZGJhY2tz
ID0gcmVwb3J0LlJlY2VpdmVkV2l0aFNlbmRJbmZvKCk7CisgIGZvciAoY29uc3QgYXV0byYgZmVl
ZGJhY2sgOiBmZWVkYmFja3MpCisgICAgbWF4X3JlY3ZfdGltZSA9IHN0ZDo6bWF4KG1heF9yZWN2
X3RpbWUsIGZlZWRiYWNrLnJlY2VpdmVfdGltZSk7CisKKyAgZm9yIChjb25zdCBhdXRvJiBmZWVk
YmFjayA6IGZlZWRiYWNrcykgeworICAgIFRpbWVEZWx0YSBmZWVkYmFja19ydHQgPQorICAgICAg
ICByZXBvcnQuZmVlZGJhY2tfdGltZSAtIGZlZWRiYWNrLnNlbnRfcGFja2V0LnNlbmRfdGltZTsK
KyAgICBUaW1lRGVsdGEgbWluX3BlbmRpbmdfdGltZSA9IGZlZWRiYWNrLnJlY2VpdmVfdGltZSAt
IG1heF9yZWN2X3RpbWU7CisgICAgVGltZURlbHRhIHByb3BhZ2F0aW9uX3J0dCA9IGZlZWRiYWNr
X3J0dCAtIG1pbl9wZW5kaW5nX3RpbWU7CisgICAgbWF4X2ZlZWRiYWNrX3J0dCA9IHN0ZDo6bWF4
KG1heF9mZWVkYmFja19ydHQsIGZlZWRiYWNrX3J0dCk7CisgICAgbWluX3Byb3BhZ2F0aW9uX3J0
dCA9IHN0ZDo6bWluKG1pbl9wcm9wYWdhdGlvbl9ydHQsIHByb3BhZ2F0aW9uX3J0dCk7CiAgIH0K
LSAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbWluX2ZlZWRiYWNrX21heF9ydHRfbXM7Ci0gIGlm
IChmZWVkYmFja19tYXhfcnR0LklzRmluaXRlKCkpIHsKLSAgICBmZWVkYmFja19tYXhfcnR0c18u
cHVzaF9iYWNrKGZlZWRiYWNrX21heF9ydHQubXMoKSk7CisKKyAgaWYgKG1heF9mZWVkYmFja19y
dHQuSXNGaW5pdGUoKSkgeworICAgIGZlZWRiYWNrX21heF9ydHRzXy5wdXNoX2JhY2sobWF4X2Zl
ZWRiYWNrX3J0dC5tcygpKTsKICAgICBjb25zdCBzaXplX3Qga01heEZlZWRiYWNrUnR0V2luZG93
ID0gMzI7CiAgICAgaWYgKGZlZWRiYWNrX21heF9ydHRzXy5zaXplKCkgPiBrTWF4RmVlZGJhY2tS
dHRXaW5kb3cpCiAgICAgICBmZWVkYmFja19tYXhfcnR0c18ucG9wX2Zyb250KCk7Ci0gICAgbWlu
X2ZlZWRiYWNrX21heF9ydHRfbXMuZW1wbGFjZSgqc3RkOjptaW5fZWxlbWVudCgKLSAgICAgICAg
ZmVlZGJhY2tfbWF4X3J0dHNfLmJlZ2luKCksIGZlZWRiYWNrX21heF9ydHRzXy5lbmQoKSkpOwor
ICAgIC8vIFRPRE8oc3J0ZSk6IFVzZSB0aW1lIHNpbmNlIGxhc3QgdW5hY2tub3dsZWRnZWQgcGFj
a2V0LgorICAgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+VXBkYXRlUHJvcGFnYXRpb25SdHQocmVw
b3J0LmZlZWRiYWNrX3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtaW5fcHJvcGFnYXRpb25fcnR0KTsKICAgfQogICBpZiAocGFja2V0X2ZlZWRi
YWNrX29ubHlfKSB7CiAgICAgaWYgKCFmZWVkYmFja19tYXhfcnR0c18uZW1wdHkoKSkgewogICAg
ICAgaW50NjRfdCBzdW1fcnR0X21zID0gc3RkOjphY2N1bXVsYXRlKGZlZWRiYWNrX21heF9ydHRz
Xy5iZWdpbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZl
ZWRiYWNrX21heF9ydHRzXy5lbmQoKSwgMCk7CiAgICAgICBpbnQ2NF90IG1lYW5fcnR0X21zID0g
c3VtX3J0dF9tcyAvIGZlZWRiYWNrX21heF9ydHRzXy5zaXplKCk7Ci0gICAgICBkZWxheV9iYXNl
ZF9id2VfLT5PblJ0dFVwZGF0ZShtZWFuX3J0dF9tcyk7CisgICAgICBkZWxheV9iYXNlZF9id2Vf
LT5PblJ0dFVwZGF0ZShUaW1lRGVsdGE6Om1zKG1lYW5fcnR0X21zKSk7CiAgICAgfQogCiAgICAg
VGltZURlbHRhIGZlZWRiYWNrX21pbl9ydHQgPSBUaW1lRGVsdGE6OlBsdXNJbmZpbml0eSgpOwot
ICAgIGZvciAoY29uc3QgYXV0byYgcGFja2V0X2ZlZWRiYWNrIDogcmVwb3J0LlJlY2VpdmVkV2l0
aFNlbmRJbmZvKCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhY2tldF9mZWVkYmFjayA6IGZl
ZWRiYWNrcykgewogICAgICAgVGltZURlbHRhIHBlbmRpbmdfdGltZSA9IHBhY2tldF9mZWVkYmFj
ay5yZWNlaXZlX3RpbWUgLSBtYXhfcmVjdl90aW1lOwogICAgICAgVGltZURlbHRhIHJ0dCA9IHJl
cG9ydC5mZWVkYmFja190aW1lIC0KLSAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfZmVlZGJh
Y2suc2VudF9wYWNrZXQtPnNlbmRfdGltZSAtIHBlbmRpbmdfdGltZTsKKyAgICAgICAgICAgICAg
ICAgICAgICBwYWNrZXRfZmVlZGJhY2suc2VudF9wYWNrZXQuc2VuZF90aW1lIC0gcGVuZGluZ190
aW1lOwogICAgICAgLy8gVmFsdWUgdXNlZCBmb3IgcHJlZGljdGluZyBOQUNLIHJvdW5kIHRyaXAg
dGltZSBpbiBGRUMgY29udHJvbGxlci4KICAgICAgIGZlZWRiYWNrX21pbl9ydHQgPSBzdGQ6Om1p
bihydHQsIGZlZWRiYWNrX21pbl9ydHQpOwogICAgIH0KQEAgLTQwMCwyMiArNDg1LDMzIEBAIE5l
dHdvcmtDb250cm9sVXBkYXRlIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpPblRyYW5zcG9ydFBh
Y2tldHNGZWVkYmFjaygKICAgcHJldmlvdXNseV9pbl9hbHIgPSBhbHJfc3RhcnRfdGltZS5oYXNf
dmFsdWUoKTsKICAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+SW5jb21pbmdQYWNr
ZXRGZWVkYmFja1ZlY3RvcigKICAgICAgIHJlY2VpdmVkX2ZlZWRiYWNrX3ZlY3Rvcik7Ci0gIGF1
dG8gYWNrbm93bGVkZ2VkX2JpdHJhdGUgPSBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3Jf
LT5iaXRyYXRlX2JwcygpOworICBhdXRvIGFja25vd2xlZGdlZF9iaXRyYXRlID0gYWNrbm93bGVk
Z2VkX2JpdHJhdGVfZXN0aW1hdG9yXy0+Yml0cmF0ZSgpOworICBiYW5kd2lkdGhfZXN0aW1hdGlv
bl8tPlNldEFja25vd2xlZGdlZFJhdGUoYWNrbm93bGVkZ2VkX2JpdHJhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuZmVlZGJhY2tfdGltZSk7
CisgIGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+SW5jb21pbmdQYWNrZXRGZWVkYmFja1ZlY3Rvcihy
ZXBvcnQpOworICBmb3IgKGNvbnN0IGF1dG8mIGZlZWRiYWNrIDogcmVjZWl2ZWRfZmVlZGJhY2tf
dmVjdG9yKSB7CisgICAgaWYgKGZlZWRiYWNrLnBhY2luZ19pbmZvLnByb2JlX2NsdXN0ZXJfaWQg
IT0gUGFjZWRQYWNrZXRJbmZvOjprTm90QVByb2JlKSB7CisgICAgICBwcm9iZV9iaXRyYXRlX2Vz
dGltYXRvcl8tPkhhbmRsZVByb2JlQW5kRXN0aW1hdGVCaXRyYXRlKGZlZWRiYWNrKTsKKyAgICB9
CisgIH0KKyAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IHByb2JlX2JpdHJhdGUgPQorICAgICAg
cHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfLT5GZXRjaEFuZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJh
dGUoKTsKKwogICBEZWxheUJhc2VkQndlOjpSZXN1bHQgcmVzdWx0OwogICByZXN1bHQgPSBkZWxh
eV9iYXNlZF9id2VfLT5JbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAotICAgICAgcmVjZWl2
ZWRfZmVlZGJhY2tfdmVjdG9yLCBhY2tub3dsZWRnZWRfYml0cmF0ZSwKLSAgICAgIHJlcG9ydC5m
ZWVkYmFja190aW1lLm1zKCkpOworICAgICAgcmVjZWl2ZWRfZmVlZGJhY2tfdmVjdG9yLCBhY2tu
b3dsZWRnZWRfYml0cmF0ZSwgcHJvYmVfYml0cmF0ZSwKKyAgICAgIHJlcG9ydC5mZWVkYmFja190
aW1lKTsKIAogICBOZXR3b3JrQ29udHJvbFVwZGF0ZSB1cGRhdGU7CiAgIGlmIChyZXN1bHQudXBk
YXRlZCkgewogICAgIGlmIChyZXN1bHQucHJvYmUpIHsKLSAgICAgIGJhbmR3aWR0aF9lc3RpbWF0
aW9uXy0+U2V0U2VuZEJpdHJhdGUoCi0gICAgICAgICAgRGF0YVJhdGU6OmJwcyhyZXN1bHQudGFy
Z2V0X2JpdHJhdGVfYnBzKSwgcmVwb3J0LmZlZWRiYWNrX3RpbWUpOworICAgICAgYmFuZHdpZHRo
X2VzdGltYXRpb25fLT5TZXRTZW5kQml0cmF0ZShyZXN1bHQudGFyZ2V0X2JpdHJhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5mZWVkYmFja190
aW1lKTsKICAgICB9CiAgICAgLy8gU2luY2UgU2V0U2VuZEJpdHJhdGUgbm93IHJlc2V0cyB0aGUg
ZGVsYXktYmFzZWQgZXN0aW1hdGUsIHdlIGhhdmUgdG8gY2FsbAogICAgIC8vIFVwZGF0ZURlbGF5
QmFzZWRFc3RpbWF0ZSBhZnRlciBTZXRTZW5kQml0cmF0ZS4KLSAgICBiYW5kd2lkdGhfZXN0aW1h
dGlvbl8tPlVwZGF0ZURlbGF5QmFzZWRFc3RpbWF0ZSgKLSAgICAgICAgcmVwb3J0LmZlZWRiYWNr
X3RpbWUsIERhdGFSYXRlOjpicHMocmVzdWx0LnRhcmdldF9iaXRyYXRlX2JwcykpOworICAgIGJh
bmR3aWR0aF9lc3RpbWF0aW9uXy0+VXBkYXRlRGVsYXlCYXNlZEVzdGltYXRlKHJlcG9ydC5mZWVk
YmFja190aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC50YXJnZXRfYml0cmF0ZSk7CiAgICAgLy8gVXBkYXRlIHRoZSBlc3RpbWF0
ZSBpbiB0aGUgUHJvYmVDb250cm9sbGVyLCBpbiBjYXNlIHdlIHdhbnQgdG8gcHJvYmUuCiAgICAg
TWF5YmVUcmlnZ2VyT25OZXR3b3JrQ2hhbmdlZCgmdXBkYXRlLCByZXBvcnQuZmVlZGJhY2tfdGlt
ZSk7CiAgIH0KQEAgLTQyOCwxMSArNTI0LDE0IEBAIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dD
Y05ldHdvcmtDb250cm9sbGVyOjpPblRyYW5zcG9ydFBhY2tldHNGZWVkYmFjaygKIAogICAvLyBO
byB2YWxpZCBSVFQgY291bGQgYmUgYmVjYXVzZSBzZW5kLXNpZGUgQldFIGlzbid0IHVzZWQsIGlu
IHdoaWNoIGNhc2UKICAgLy8gd2UgZG9uJ3QgdHJ5IHRvIGxpbWl0IHRoZSBvdXRzdGFuZGluZyBw
YWNrZXRzLgotICBpZiAoaW5fY3duZF9leHBlcmltZW50XyAmJiBtaW5fZmVlZGJhY2tfbWF4X3J0
dF9tcykgeworICBpZiAoaW5fY3duZF9leHBlcmltZW50XyAmJiBtYXhfZmVlZGJhY2tfcnR0Lklz
RmluaXRlKCkpIHsKKyAgICBpbnQ2NF90IG1pbl9mZWVkYmFja19tYXhfcnR0X21zID0KKyAgICAg
ICAgKnN0ZDo6bWluX2VsZW1lbnQoZmVlZGJhY2tfbWF4X3J0dHNfLmJlZ2luKCksIGZlZWRiYWNr
X21heF9ydHRzXy5lbmQoKSk7CisKICAgICBjb25zdCBEYXRhU2l6ZSBrTWluQ3duZCA9IERhdGFT
aXplOjpieXRlcygyICogMTUwMCk7CiAgICAgVGltZURlbHRhIHRpbWVfd2luZG93ID0KLSAgICAg
ICAgVGltZURlbHRhOjptcygqbWluX2ZlZWRiYWNrX21heF9ydHRfbXMgKyBhY2NlcHRlZF9xdWV1
ZV9tc18pOwotICAgIERhdGFTaXplIGRhdGFfd2luZG93ID0gbGFzdF9iYW5kd2lkdGhfICogdGlt
ZV93aW5kb3c7CisgICAgICAgIFRpbWVEZWx0YTo6bXMobWluX2ZlZWRiYWNrX21heF9ydHRfbXMg
KyBhY2NlcHRlZF9xdWV1ZV9tc18pOworICAgIERhdGFTaXplIGRhdGFfd2luZG93ID0gbGFzdF90
YXJnZXRfcmF0ZV8gKiB0aW1lX3dpbmRvdzsKICAgICBpZiAoY3VycmVudF9kYXRhX3dpbmRvd18p
IHsKICAgICAgIGRhdGFfd2luZG93ID0KICAgICAgICAgICBzdGQ6Om1heChrTWluQ3duZCwgKGRh
dGFfd2luZG93ICsgY3VycmVudF9kYXRhX3dpbmRvd18udmFsdWUoKSkgLyAyKTsKQEAgLTQ0MCwx
MCArNTM5LDEzIEBAIE5ldHdvcmtDb250cm9sVXBkYXRlIEdvb2dDY05ldHdvcmtDb250cm9sbGVy
OjpPblRyYW5zcG9ydFBhY2tldHNGZWVkYmFjaygKICAgICAgIGRhdGFfd2luZG93ID0gc3RkOjpt
YXgoa01pbkN3bmQsIGRhdGFfd2luZG93KTsKICAgICB9CiAgICAgY3VycmVudF9kYXRhX3dpbmRv
d18gPSBkYXRhX3dpbmRvdzsKLSAgICBSVENfTE9HKExTX0lORk8pIDw8ICJGZWVkYmFjayBydHQ6
ICIgPDwgKm1pbl9mZWVkYmFja19tYXhfcnR0X21zCi0gICAgICAgICAgICAgICAgICAgICA8PCAi
IEJpdHJhdGU6ICIgPDwgbGFzdF9iYW5kd2lkdGhfLmJwcygpOwogICB9Ci0gIHVwZGF0ZS5jb25n
ZXN0aW9uX3dpbmRvdyA9IGN1cnJlbnRfZGF0YV93aW5kb3dfOworICBpZiAoY29uZ2VzdGlvbl93
aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8gJiYgY3VycmVudF9kYXRhX3dpbmRvd18pIHsKKyAg
ICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXy0+U2V0RGF0YVdpbmRvdygK
KyAgICAgICAgKmN1cnJlbnRfZGF0YV93aW5kb3dfKTsKKyAgfSBlbHNlIHsKKyAgICB1cGRhdGUu
Y29uZ2VzdGlvbl93aW5kb3cgPSBjdXJyZW50X2RhdGFfd2luZG93XzsKKyAgfQogCiAgIHJldHVy
biB1cGRhdGU7CiB9CkBAIC00NjAsNyArNTYyLDcgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgR29v
Z0NjTmV0d29ya0NvbnRyb2xsZXI6OkdldE5ldHdvcmtTdGF0ZSgKICAgICAgIGxhc3RfZXN0aW1h
dGVkX2ZyYWN0aW9uX2xvc3NfIC8gMjU1LjA7CiAgIHVwZGF0ZS50YXJnZXRfcmF0ZS0+bmV0d29y
a19lc3RpbWF0ZS5yb3VuZF90cmlwX3RpbWUgPSBydHQ7CiAgIHVwZGF0ZS50YXJnZXRfcmF0ZS0+
bmV0d29ya19lc3RpbWF0ZS5id2VfcGVyaW9kID0KLSAgICAgIFRpbWVEZWx0YTo6bXMoZGVsYXlf
YmFzZWRfYndlXy0+R2V0RXhwZWN0ZWRCd2VQZXJpb2RNcygpKTsKKyAgICAgIGRlbGF5X2Jhc2Vk
X2J3ZV8tPkdldEV4cGVjdGVkQndlUGVyaW9kKCk7CiAgIHVwZGF0ZS50YXJnZXRfcmF0ZS0+YXRf
dGltZSA9IGF0X3RpbWU7CiAgIHVwZGF0ZS50YXJnZXRfcmF0ZS0+dGFyZ2V0X3JhdGUgPSBiYW5k
d2lkdGg7CiAgIHVwZGF0ZS5wYWNlcl9jb25maWcgPSBHZXRQYWNpbmdSYXRlcyhhdF90aW1lKTsK
QEAgLTQ5NiwyNyArNTk4LDM4IEBAIHZvaWQgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXI6Ok1heWJl
VHJpZ2dlck9uTmV0d29ya0NoYW5nZWQoCiAKICAgICBhbHJfZGV0ZWN0b3JfLT5TZXRFc3RpbWF0
ZWRCaXRyYXRlKGVzdGltYXRlZF9iaXRyYXRlX2Jwcyk7CiAKLSAgICBEYXRhUmF0ZSBiYW5kd2lk
dGggPSBEYXRhUmF0ZTo6YnBzKGVzdGltYXRlZF9iaXRyYXRlX2Jwcyk7Ci0gICAgbGFzdF9iYW5k
d2lkdGhfID0gYmFuZHdpZHRoOworICAgIGxhc3RfdGFyZ2V0X3JhdGVfID0gRGF0YVJhdGU6OmJw
cyhlc3RpbWF0ZWRfYml0cmF0ZV9icHMpOworICAgIERhdGFSYXRlIGJhbmR3aWR0aCA9IHVzZV9z
dGFibGVfYmFuZHdpZHRoX2VzdGltYXRlXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/
IGJhbmR3aWR0aF9lc3RpbWF0aW9uXy0+R2V0RXN0aW1hdGVkTGlua0NhcGFjaXR5KCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBsYXN0X3RhcmdldF9yYXRlXzsKIAotICAgIFRpbWVE
ZWx0YSBid2VfcGVyaW9kID0KLSAgICAgICAgVGltZURlbHRhOjptcyhkZWxheV9iYXNlZF9id2Vf
LT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZE1zKCkpOworICAgIFRpbWVEZWx0YSBid2VfcGVyaW9kID0g
ZGVsYXlfYmFzZWRfYndlXy0+R2V0RXhwZWN0ZWRCd2VQZXJpb2QoKTsKIAotICAgIFRhcmdldFRy
YW5zZmVyUmF0ZSB0YXJnZXRfcmF0ZTsKLSAgICB0YXJnZXRfcmF0ZS5hdF90aW1lID0gYXRfdGlt
ZTsKICAgICAvLyBTZXQgdGhlIHRhcmdldCByYXRlIHRvIHRoZSBmdWxsIGVzdGltYXRlZCBiYW5k
d2lkdGggc2luY2UgdGhlIGVzdGltYXRpb24KICAgICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMgaW5j
bHVkZXMgdGFyZ2V0IHJhdGUgY29uc3RyYWludHMuCi0gICAgdGFyZ2V0X3JhdGUudGFyZ2V0X3Jh
dGUgPSBiYW5kd2lkdGg7CisgICAgRGF0YVJhdGUgdGFyZ2V0X3JhdGUgPSBsYXN0X3RhcmdldF9y
YXRlXzsKKyAgICBpZiAoY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8pIHsK
KyAgICAgIGludDY0X3QgcHVzaGJhY2tfcmF0ZSA9CisgICAgICAgICAgY29uZ2VzdGlvbl93aW5k
b3dfcHVzaGJhY2tfY29udHJvbGxlcl8tPlVwZGF0ZVRhcmdldEJpdHJhdGUoCisgICAgICAgICAg
ICAgIHRhcmdldF9yYXRlLmJwcygpKTsKKyAgICAgIHB1c2hiYWNrX3JhdGUgPSBzdGQ6Om1heDxp
bnQ2NF90PihiYW5kd2lkdGhfZXN0aW1hdGlvbl8tPkdldE1pbkJpdHJhdGUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoYmFja19yYXRlKTsKKyAgICAgIHRh
cmdldF9yYXRlID0gRGF0YVJhdGU6OmJwcyhwdXNoYmFja19yYXRlKTsKKyAgICB9CisKKyAgICBU
YXJnZXRUcmFuc2ZlclJhdGUgdGFyZ2V0X3JhdGVfbXNnOworICAgIHRhcmdldF9yYXRlX21zZy5h
dF90aW1lID0gYXRfdGltZTsKKyAgICB0YXJnZXRfcmF0ZV9tc2cudGFyZ2V0X3JhdGUgPSB0YXJn
ZXRfcmF0ZTsKKyAgICB0YXJnZXRfcmF0ZV9tc2cubmV0d29ya19lc3RpbWF0ZS5hdF90aW1lID0g
YXRfdGltZTsKKyAgICB0YXJnZXRfcmF0ZV9tc2cubmV0d29ya19lc3RpbWF0ZS5yb3VuZF90cmlw
X3RpbWUgPSBUaW1lRGVsdGE6Om1zKHJ0dF9tcyk7CisgICAgdGFyZ2V0X3JhdGVfbXNnLm5ldHdv
cmtfZXN0aW1hdGUuYmFuZHdpZHRoID0gYmFuZHdpZHRoOworICAgIHRhcmdldF9yYXRlX21zZy5u
ZXR3b3JrX2VzdGltYXRlLmxvc3NfcmF0ZV9yYXRpbyA9IGZyYWN0aW9uX2xvc3MgLyAyNTUuMGY7
CisgICAgdGFyZ2V0X3JhdGVfbXNnLm5ldHdvcmtfZXN0aW1hdGUuYndlX3BlcmlvZCA9IGJ3ZV9w
ZXJpb2Q7CiAKLSAgICB0YXJnZXRfcmF0ZS5uZXR3b3JrX2VzdGltYXRlLmF0X3RpbWUgPSBhdF90
aW1lOwotICAgIHRhcmdldF9yYXRlLm5ldHdvcmtfZXN0aW1hdGUucm91bmRfdHJpcF90aW1lID0g
VGltZURlbHRhOjptcyhydHRfbXMpOwotICAgIHRhcmdldF9yYXRlLm5ldHdvcmtfZXN0aW1hdGUu
YmFuZHdpZHRoID0gYmFuZHdpZHRoOwotICAgIHRhcmdldF9yYXRlLm5ldHdvcmtfZXN0aW1hdGUu
bG9zc19yYXRlX3JhdGlvID0gZnJhY3Rpb25fbG9zcyAvIDI1NS4wZjsKLSAgICB0YXJnZXRfcmF0
ZS5uZXR3b3JrX2VzdGltYXRlLmJ3ZV9wZXJpb2QgPSBid2VfcGVyaW9kOwotICAgIHVwZGF0ZS0+
dGFyZ2V0X3JhdGUgPSB0YXJnZXRfcmF0ZTsKKyAgICB1cGRhdGUtPnRhcmdldF9yYXRlID0gdGFy
Z2V0X3JhdGVfbXNnOwogCi0gICAgYXV0byBwcm9iZXMgPQotICAgICAgICBwcm9iZV9jb250cm9s
bGVyXy0+U2V0RXN0aW1hdGVkQml0cmF0ZShiYW5kd2lkdGguYnBzKCksIGF0X3RpbWUubXMoKSk7
CisgICAgYXV0byBwcm9iZXMgPSBwcm9iZV9jb250cm9sbGVyXy0+U2V0RXN0aW1hdGVkQml0cmF0
ZSgKKyAgICAgICAgbGFzdF90YXJnZXRfcmF0ZV8uYnBzKCksIGF0X3RpbWUubXMoKSk7CiAgICAg
dXBkYXRlLT5wcm9iZV9jbHVzdGVyX2NvbmZpZ3MuaW5zZXJ0KHVwZGF0ZS0+cHJvYmVfY2x1c3Rl
cl9jb25maWdzLmVuZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9iZXMuYmVnaW4oKSwgcHJvYmVzLmVuZCgpKTsKICAgICB1cGRhdGUtPnBhY2VyX2NvbmZp
ZyA9IEdldFBhY2luZ1JhdGVzKGF0X3RpbWUpOwpAQCAtNTI1LDggKzYzOCw4IEBAIHZvaWQgR29v
Z0NjTmV0d29ya0NvbnRyb2xsZXI6Ok1heWJlVHJpZ2dlck9uTmV0d29ya0NoYW5nZWQoCiAKIFBh
Y2VyQ29uZmlnIEdvb2dDY05ldHdvcmtDb250cm9sbGVyOjpHZXRQYWNpbmdSYXRlcyhUaW1lc3Rh
bXAgYXRfdGltZSkgY29uc3QgewogICBEYXRhUmF0ZSBwYWNpbmdfcmF0ZSA9Ci0gICAgICBzdGQ6
Om1heChtaW5fcGFjaW5nX3JhdGVfLCBsYXN0X2JhbmR3aWR0aF8pICogcGFjaW5nX2ZhY3Rvcl87
Ci0gIERhdGFSYXRlIHBhZGRpbmdfcmF0ZSA9IHN0ZDo6bWluKG1heF9wYWRkaW5nX3JhdGVfLCBs
YXN0X2JhbmR3aWR0aF8pOworICAgICAgc3RkOjptYXgobWluX3BhY2luZ19yYXRlXywgbGFzdF90
YXJnZXRfcmF0ZV8pICogcGFjaW5nX2ZhY3Rvcl87CisgIERhdGFSYXRlIHBhZGRpbmdfcmF0ZSA9
IHN0ZDo6bWluKG1heF9wYWRkaW5nX3JhdGVfLCBsYXN0X3RhcmdldF9yYXRlXyk7CiAgIFBhY2Vy
Q29uZmlnIG1zZzsKICAgbXNnLmF0X3RpbWUgPSBhdF90aW1lOwogICBtc2cudGltZV93aW5kb3cg
PSBUaW1lRGVsdGE6OnNlY29uZHMoMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dv
b2dfY2NfbmV0d29ya19jb250cm9sLmgKaW5kZXggZjdlZmRhMzk2Mjc3ZTRlNjMzYzNkYTFmODA1
MDllY2FjOWJlOWY0Ny4uYTYyZjU5YmI0NGJjMGUwZTVjM2I4YTEyYWIyNDRlMDUwOThiNDlhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJv
bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wu
aApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVy
L3NlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oIgogI2luY2x1ZGUgIm1vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9y
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9hbHJf
ZGV0ZWN0b3IuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL2Nvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJt
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVfY29u
dHJvbGxlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKQEAgLTYz
LDI0ICs2NCwzMSBAQCBjbGFzcyBHb29nQ2NOZXR3b3JrQ29udHJvbGxlciA6IHB1YmxpYyBOZXR3
b3JrQ29udHJvbGxlckludGVyZmFjZSB7CiAKICAgUnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xv
Z187CiAgIGNvbnN0IGJvb2wgcGFja2V0X2ZlZWRiYWNrX29ubHlfOworICBGaWVsZFRyaWFsRmxh
ZyBzYWZlX3Jlc2V0X29uX3JvdXRlX2NoYW5nZV87CisgIEZpZWxkVHJpYWxGbGFnIHNhZmVfcmVz
ZXRfYWNrbm93bGVkZ2VkX3JhdGVfOworICBjb25zdCBib29sIHVzZV9zdGFibGVfYmFuZHdpZHRo
X2VzdGltYXRlXzsKIAogICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UHJvYmVDb250cm9sbGVyPiBw
cm9iZV9jb250cm9sbGVyXzsKKyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENvbmdlc3Rpb25XaW5k
b3dQdXNoYmFja0NvbnRyb2xsZXI+CisgICAgICBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19j
b250cm9sbGVyXzsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8U2VuZFNpZGVCYW5kd2lkdGhFc3RpbWF0
aW9uPiBiYW5kd2lkdGhfZXN0aW1hdGlvbl87CiAgIHN0ZDo6dW5pcXVlX3B0cjxBbHJEZXRlY3Rv
cj4gYWxyX2RldGVjdG9yXzsKKyAgc3RkOjp1bmlxdWVfcHRyPFByb2JlQml0cmF0ZUVzdGltYXRv
cj4gcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfOwogICBzdGQ6OnVuaXF1ZV9wdHI8RGVsYXlCYXNl
ZEJ3ZT4gZGVsYXlfYmFzZWRfYndlXzsKICAgc3RkOjp1bmlxdWVfcHRyPEFja25vd2xlZGdlZEJp
dHJhdGVFc3RpbWF0b3I+IGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl87CiAKICAgYWJz
bDo6b3B0aW9uYWw8TmV0d29ya0NvbnRyb2xsZXJDb25maWc+IGluaXRpYWxfY29uZmlnXzsKIAor
ICBib29sIGZpcnN0X3BhY2tldF9zZW50XyA9IGZhbHNlOworCiAgIFRpbWVzdGFtcCBuZXh0X2xv
c3NfdXBkYXRlXyA9IFRpbWVzdGFtcDo6TWludXNJbmZpbml0eSgpOwogICBpbnQgbG9zdF9wYWNr
ZXRzX3NpbmNlX2xhc3RfbG9zc191cGRhdGVfID0gMDsKICAgaW50IGV4cGVjdGVkX3BhY2tldHNf
c2luY2VfbGFzdF9sb3NzX3VwZGF0ZV8gPSAwOwogCiAgIHN0ZDo6ZGVxdWU8aW50NjRfdD4gZmVl
ZGJhY2tfbWF4X3J0dHNfOwogCi0gIERhdGFSYXRlIGxhc3RfYmFuZHdpZHRoXzsKLSAgYWJzbDo6
b3B0aW9uYWw8VGFyZ2V0VHJhbnNmZXJSYXRlPiBsYXN0X3RhcmdldF9yYXRlXzsKKyAgRGF0YVJh
dGUgbGFzdF90YXJnZXRfcmF0ZV87CiAKICAgaW50MzJfdCBsYXN0X2VzdGltYXRlZF9iaXRyYXRl
X2Jwc18gPSAwOwogICB1aW50OF90IGxhc3RfZXN0aW1hdGVkX2ZyYWN0aW9uX2xvc3NfID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRy
b2xfc2xvd3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19j
b250cm9sX3Nsb3d0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmYTBkMWMwOTZkZGEzZjZhMzVhNmY4YzRh
YTYwYjNlZDViY2VjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2Nj
L2dvb2dfY2NfbmV0d29ya19jb250cm9sX3Nsb3d0ZXN0LmNjCkBAIC0wLDAgKzEsMTI5IEBACisv
KgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvZ29vZ19jY19m
YWN0b3J5LmgiCisjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgorI2luY2x1ZGUgInRlc3Qv
Z3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmgiCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCitURVNUKEdvb2dDY05ldHdvcmtDb250cm9s
bGVyVGVzdCwgTWFpbnRhaW5zTG93UmF0ZUluU2FmZVJlc2V0VHJpYWwpIHsKKyAgY29uc3QgRGF0
YVJhdGUga0xpbmtDYXBhY2l0eSA9IERhdGFSYXRlOjprYnBzKDIwMCk7CisgIGNvbnN0IERhdGFS
YXRlIGtTdGFydFJhdGUgPSBEYXRhUmF0ZTo6a2JwcygzMDApOworCisgIFNjb3BlZEZpZWxkVHJp
YWxzIHRyaWFsKCJXZWJSVEMtQndlLVNhZmVSZXNldE9uUm91dGVDaGFuZ2UvRW5hYmxlZC8iKTsK
KyAgU2NlbmFyaW8gcygiZ29vZ2NjX3VuaXQvc2FmZV9yZXNldF9sb3ciLCB0cnVlKTsKKyAgYXV0
byogc2VuZF9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKFsmXShOZXR3b3JrTm9kZUNvbmZp
ZyogYykgeworICAgIGMtPnNpbXVsYXRpb24uYmFuZHdpZHRoID0ga0xpbmtDYXBhY2l0eTsKKyAg
ICBjLT5zaW11bGF0aW9uLmRlbGF5ID0gVGltZURlbHRhOjptcygxMCk7CisgIH0pOworICAvLyBU
T0RPKHNydGUpOiByZXBsYWNlIHdpdGggU2ltdWxhdGVkVGltZUNsaWVudCB3aGVuIGl0IHN1cHBv
cnRzIHByb2JpbmcuCisgIGF1dG8qIGNsaWVudCA9IHMuQ3JlYXRlQ2xpZW50KCJzZW5kIiwgWyZd
KENhbGxDbGllbnRDb25maWcqIGMpIHsKKyAgICBjLT50cmFuc3BvcnQuY2MgPSBUcmFuc3BvcnRD
b250cm9sbGVyQ29uZmlnOjpDb25nZXN0aW9uQ29udHJvbGxlcjo6a0dvb2dDYzsKKyAgICBjLT50
cmFuc3BvcnQucmF0ZXMuc3RhcnRfcmF0ZSA9IGtTdGFydFJhdGU7CisgIH0pOworICBhdXRvKiBy
b3V0ZSA9IHMuQ3JlYXRlUm91dGVzKGNsaWVudCwge3NlbmRfbmV0fSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLkNyZWF0ZUNsaWVudCgicmV0dXJuIiwgQ2FsbENsaWVudENvbmZp
ZygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy5DcmVhdGVTaW11bGF0aW9u
Tm9kZShOZXR3b3JrTm9kZUNvbmZpZygpKX0pOworICBzLkNyZWF0ZVZpZGVvU3RyZWFtKHJvdXRl
LT5mb3J3YXJkKCksIFZpZGVvU3RyZWFtQ29uZmlnKCkpOworICAvLyBUcmlnZ2VyIHJlcm91dGUg
bWVzc2FnZSwgYnV0IGtlZXAgdHJhbnNwb3J0IHVuY2hhbmdlZC4KKyAgcy5DaGFuZ2VSb3V0ZShy
b3V0ZS0+Zm9yd2FyZCgpLCB7c2VuZF9uZXR9KTsKKworICAvLyBBbGxvdyB0aGUgY29udHJvbGxl
ciB0byBzdGFiaWxpemUuCisgIHMuUnVuRm9yKFRpbWVEZWx0YTo6bXMoNTAwKSk7CisgIEVYUEVD
VF9ORUFSKGNsaWVudC0+c2VuZF9iYW5kd2lkdGgoKS5rYnBzKCksIGtMaW5rQ2FwYWNpdHkua2Jw
cygpLCA1MCk7CisgIHMuQ2hhbmdlUm91dGUocm91dGUtPmZvcndhcmQoKSwge3NlbmRfbmV0fSk7
CisgIC8vIEFsbG93IG5ldyBzZXR0aW5ncyB0byBwcm9wYWdhdGUuCisgIHMuUnVuRm9yKFRpbWVE
ZWx0YTo6bXMoMTAwKSk7CisgIC8vIFVuZGVyIHRoZSB0cmlhbCwgdGhlIHRhcmdldCBzaG91bGQg
YmUgdW5jaGFuZ2VkIGZvciBsb3cgcmF0ZXMuCisgIEVYUEVDVF9ORUFSKGNsaWVudC0+c2VuZF9i
YW5kd2lkdGgoKS5rYnBzKCksIGtMaW5rQ2FwYWNpdHkua2JwcygpLCA1MCk7Cit9CisKK1RFU1Qo
R29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBDdXRzSGlnaFJhdGVJblNhZmVSZXNldFRyaWFs
KSB7CisgIGNvbnN0IERhdGFSYXRlIGtMaW5rQ2FwYWNpdHkgPSBEYXRhUmF0ZTo6a2JwcygxMDAw
KTsKKyAgY29uc3QgRGF0YVJhdGUga1N0YXJ0UmF0ZSA9IERhdGFSYXRlOjprYnBzKDMwMCk7CisK
KyAgU2NvcGVkRmllbGRUcmlhbHMgdHJpYWwoIldlYlJUQy1Cd2UtU2FmZVJlc2V0T25Sb3V0ZUNo
YW5nZS9FbmFibGVkLyIpOworICBTY2VuYXJpbyBzKCJnb29nY2NfdW5pdC9zYWZlX3Jlc2V0X2hp
Z2hfY3V0IiwgdHJ1ZSk7CisgIGF1dG8gc2VuZF9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2Rl
KFsmXShOZXR3b3JrTm9kZUNvbmZpZyogYykgeworICAgIGMtPnNpbXVsYXRpb24uYmFuZHdpZHRo
ID0ga0xpbmtDYXBhY2l0eTsKKyAgICBjLT5zaW11bGF0aW9uLmRlbGF5ID0gVGltZURlbHRhOjpt
cyg1MCk7CisgIH0pOworICAvLyBUT0RPKHNydGUpOiByZXBsYWNlIHdpdGggU2ltdWxhdGVkVGlt
ZUNsaWVudCB3aGVuIGl0IHN1cHBvcnRzIHByb2JpbmcuCisgIGF1dG8qIGNsaWVudCA9IHMuQ3Jl
YXRlQ2xpZW50KCJzZW5kIiwgWyZdKENhbGxDbGllbnRDb25maWcqIGMpIHsKKyAgICBjLT50cmFu
c3BvcnQuY2MgPSBUcmFuc3BvcnRDb250cm9sbGVyQ29uZmlnOjpDb25nZXN0aW9uQ29udHJvbGxl
cjo6a0dvb2dDYzsKKyAgICBjLT50cmFuc3BvcnQucmF0ZXMuc3RhcnRfcmF0ZSA9IGtTdGFydFJh
dGU7CisgIH0pOworICBhdXRvKiByb3V0ZSA9IHMuQ3JlYXRlUm91dGVzKGNsaWVudCwge3NlbmRf
bmV0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLkNyZWF0ZUNsaWVudCgicmV0
dXJuIiwgQ2FsbENsaWVudENvbmZpZygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7cy5DcmVhdGVTaW11bGF0aW9uTm9kZShOZXR3b3JrTm9kZUNvbmZpZygpKX0pOworICBzLkNy
ZWF0ZVZpZGVvU3RyZWFtKHJvdXRlLT5mb3J3YXJkKCksIFZpZGVvU3RyZWFtQ29uZmlnKCkpOwor
CisgIHMuQ2hhbmdlUm91dGUocm91dGUtPmZvcndhcmQoKSwge3NlbmRfbmV0fSk7CisgIC8vIEFs
bG93IHRoZSBjb250cm9sbGVyIHRvIHN0YWJpbGl6ZS4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjpt
cyg1MDApKTsKKyAgRVhQRUNUX05FQVIoY2xpZW50LT5zZW5kX2JhbmR3aWR0aCgpLmticHMoKSwg
a0xpbmtDYXBhY2l0eS5rYnBzKCksIDMwMCk7CisgIHMuQ2hhbmdlUm91dGUocm91dGUtPmZvcndh
cmQoKSwge3NlbmRfbmV0fSk7CisgIC8vIEFsbG93IG5ldyBzZXR0aW5ncyB0byBwcm9wYWdhdGUu
CisgIHMuUnVuRm9yKFRpbWVEZWx0YTo6bXMoNTApKTsKKyAgLy8gVW5kZXIgdGhlIHRyaWFsLCB0
aGUgdGFyZ2V0IHNob3VsZCBiZSByZXNldCBmcm9tIGhpZ2ggdmFsdWVzLgorICBFWFBFQ1RfTkVB
UihjbGllbnQtPnNlbmRfYmFuZHdpZHRoKCkua2JwcygpLCBrU3RhcnRSYXRlLmticHMoKSwgMzAp
OworfQorCisjaWZkZWYgV0VCUlRDX0xJTlVYICAvLyBidWdzLndlYnJ0Yy5vcmcvMTAwMzYKKyNk
ZWZpbmUgTUFZQkVfRGV0ZWN0c0hpZ2hSYXRlSW5TYWZlUmVzZXRUcmlhbCBcCisgIERJU0FCTEVE
X0RldGVjdHNIaWdoUmF0ZUluU2FmZVJlc2V0VHJpYWwKKyNlbHNlCisjZGVmaW5lIE1BWUJFX0Rl
dGVjdHNIaWdoUmF0ZUluU2FmZVJlc2V0VHJpYWwgRGV0ZWN0c0hpZ2hSYXRlSW5TYWZlUmVzZXRU
cmlhbAorI2VuZGlmCitURVNUKEdvb2dDY05ldHdvcmtDb250cm9sbGVyVGVzdCwgTUFZQkVfRGV0
ZWN0c0hpZ2hSYXRlSW5TYWZlUmVzZXRUcmlhbCkgeworICBTY29wZWRGaWVsZFRyaWFscyB0cmlh
bCgiV2ViUlRDLUJ3ZS1TYWZlUmVzZXRPblJvdXRlQ2hhbmdlL0VuYWJsZWQvIik7CisgIGNvbnN0
IERhdGFSYXRlIGtJbml0aWFsTGlua0NhcGFjaXR5ID0gRGF0YVJhdGU6OmticHMoMjAwKTsKKyAg
Y29uc3QgRGF0YVJhdGUga05ld0xpbmtDYXBhY2l0eSA9IERhdGFSYXRlOjprYnBzKDgwMCk7Cisg
IGNvbnN0IERhdGFSYXRlIGtTdGFydFJhdGUgPSBEYXRhUmF0ZTo6a2JwcygzMDApOworCisgIFNj
ZW5hcmlvIHMoImdvb2djY191bml0L3NhZmVfcmVzZXRfaGlnaF9kZXRlY3QiLCB0cnVlKTsKKyAg
YXV0byogaW5pdGlhbF9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKFsmXShOZXR3b3JrTm9k
ZUNvbmZpZyogYykgeworICAgIGMtPnNpbXVsYXRpb24uYmFuZHdpZHRoID0ga0luaXRpYWxMaW5r
Q2FwYWNpdHk7CisgICAgYy0+c2ltdWxhdGlvbi5kZWxheSA9IFRpbWVEZWx0YTo6bXMoNTApOwor
ICB9KTsKKyAgYXV0byogbmV3X25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUoWyZdKE5ldHdv
cmtOb2RlQ29uZmlnKiBjKSB7CisgICAgYy0+c2ltdWxhdGlvbi5iYW5kd2lkdGggPSBrTmV3TGlu
a0NhcGFjaXR5OworICAgIGMtPnNpbXVsYXRpb24uZGVsYXkgPSBUaW1lRGVsdGE6Om1zKDUwKTsK
KyAgfSk7CisgIC8vIFRPRE8oc3J0ZSk6IHJlcGxhY2Ugd2l0aCBTaW11bGF0ZWRUaW1lQ2xpZW50
IHdoZW4gaXQgc3VwcG9ydHMgcHJvYmluZy4KKyAgYXV0byogY2xpZW50ID0gcy5DcmVhdGVDbGll
bnQoInNlbmQiLCBbJl0oQ2FsbENsaWVudENvbmZpZyogYykgeworICAgIGMtPnRyYW5zcG9ydC5j
YyA9IFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWc6OkNvbmdlc3Rpb25Db250cm9sbGVyOjprR29v
Z0NjOworICAgIGMtPnRyYW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlID0ga1N0YXJ0UmF0ZTsKKyAg
fSk7CisgIGF1dG8qIHJvdXRlID0gcy5DcmVhdGVSb3V0ZXMoY2xpZW50LCB7aW5pdGlhbF9uZXR9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuQ3JlYXRlQ2xpZW50KCJyZXR1cm4i
LCBDYWxsQ2xpZW50Q29uZmlnKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtz
LkNyZWF0ZVNpbXVsYXRpb25Ob2RlKE5ldHdvcmtOb2RlQ29uZmlnKCkpfSk7CisgIHMuQ3JlYXRl
VmlkZW9TdHJlYW0ocm91dGUtPmZvcndhcmQoKSwgVmlkZW9TdHJlYW1Db25maWcoKSk7CisgIHMu
Q2hhbmdlUm91dGUocm91dGUtPmZvcndhcmQoKSwge2luaXRpYWxfbmV0fSk7CisKKyAgLy8gQWxs
b3cgdGhlIGNvbnRyb2xsZXIgdG8gc3RhYmlsaXplLgorICBzLlJ1bkZvcihUaW1lRGVsdGE6Om1z
KDEwMDApKTsKKyAgRVhQRUNUX05FQVIoY2xpZW50LT5zZW5kX2JhbmR3aWR0aCgpLmticHMoKSwg
a0luaXRpYWxMaW5rQ2FwYWNpdHkua2JwcygpLCA1MCk7CisgIHMuQ2hhbmdlUm91dGUocm91dGUt
PmZvcndhcmQoKSwge25ld19uZXR9KTsKKyAgLy8gQWxsb3cgbmV3IHNldHRpbmdzIHRvIHByb3Bh
Z2F0ZS4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjptcygxMDApKTsKKyAgLy8gVW5kZXIgdGhlIGZp
ZWxkIHRyaWFsLCB0aGUgdGFyZ2V0IHJhdGUgc2hvdWxkIGJlIHVuY2hhbmdlZCBzaW5jZSBpdCdz
IGxvd2VyCisgIC8vIHRoYW4gdGhlIHN0YXJ0aW5nIHJhdGUuCisgIEVYUEVDVF9ORUFSKGNsaWVu
dC0+c2VuZF9iYW5kd2lkdGgoKS5rYnBzKCksIGtJbml0aWFsTGlua0NhcGFjaXR5LmticHMoKSwg
NTApOworICAvLyBIb3dldmVyLCBwcm9iaW5nIHNob3VsZCBoYXZlIG1hZGUgdXMgZGV0ZWN0IHRo
ZSBoaWdoZXIgcmF0ZS4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjptcygyMDAwKSk7CisgIEVYUEVD
VF9ORUFSKGNsaWVudC0+c2VuZF9iYW5kd2lkdGgoKS5rYnBzKCksIGtOZXdMaW5rQ2FwYWNpdHku
a2JwcygpLCAyMDApOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdv
cmtfY29udHJvbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19u
ZXR3b3JrX2NvbnRyb2xfdW5pdHRlc3QuY2MKaW5kZXggZTNmM2FiZjJiMTFlYmUxMTY0ZmMzZmQ2
Y2FlYzQ5ZjllZjhjNGMzNy4uZmVjZDFiMzJkNDY0YmNhYjA0YWFmMzdhY2JmMGU0OWI0MGExM2Fi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29u
dHJvbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0
d29ya19jb250cm9sX3VuaXR0ZXN0LmNjCkBAIC04LDEyICs4LDEyIEBACiAgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8K
IAorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvZ29vZ19jY19mYWN0b3J5LmgiCiAjaW5jbHVkZSAi
YXBpL3RyYW5zcG9ydC90ZXN0L25ldHdvcmtfY29udHJvbF90ZXN0ZXIuaCIKICNpbmNsdWRlICJs
b2dnaW5nL3J0Y19ldmVudF9sb2cvbW9jay9tb2NrX3J0Y19ldmVudF9sb2cuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2luY2x1ZGUvZ29vZ19jY19m
YWN0b3J5LmgiCi0jaW5jbHVkZSAidGVzdC9zY2VuYXJpby9zY2VuYXJpby5oIgotCisjaW5jbHVk
ZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRl
ICJ0ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmgiCiAKIHVzaW5nIHRlc3Rpbmc6OkZpZWxkOwogdXNp
bmcgdGVzdGluZzo6TWF0Y2hlcjsKQEAgLTg0LDkgKzg0LDkgQEAgY2xhc3MgR29vZ0NjTmV0d29y
a0NvbnRyb2xsZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFjZWRQYWNrZXRJbmZvIHBhY2luZ19pbmZvKSB7CiAgICAgUGFja2V0
UmVzdWx0IHBhY2tldF9yZXN1bHQ7CiAgICAgcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldCA9IFNl
bnRQYWNrZXQoKTsKLSAgICBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LT5zZW5kX3RpbWUgPSBU
aW1lc3RhbXA6Om1zKHNlbmRfdGltZV9tcyk7Ci0gICAgcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tl
dC0+c2l6ZSA9IERhdGFTaXplOjpieXRlcyhwYXlsb2FkX3NpemUpOwotICAgIHBhY2tldF9yZXN1
bHQuc2VudF9wYWNrZXQtPnBhY2luZ19pbmZvID0gcGFjaW5nX2luZm87CisgICAgcGFja2V0X3Jl
c3VsdC5zZW50X3BhY2tldC5zZW5kX3RpbWUgPSBUaW1lc3RhbXA6Om1zKHNlbmRfdGltZV9tcyk7
CisgICAgcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC5zaXplID0gRGF0YVNpemU6OmJ5dGVzKHBh
eWxvYWRfc2l6ZSk7CisgICAgcGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC5wYWNpbmdfaW5mbyA9
IHBhY2luZ19pbmZvOwogICAgIHBhY2tldF9yZXN1bHQucmVjZWl2ZV90aW1lID0gVGltZXN0YW1w
OjptcyhhcnJpdmFsX3RpbWVfbXMpOwogICAgIHJldHVybiBwYWNrZXRfcmVzdWx0OwogICB9CkBA
IC0xMjIsNyArMTIyLDcgQEAgY2xhc3MgR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgQ3JlYXRlUmVzdWx0KGN1cnJlbnRfdGlt
ZV8ubXMoKSArIGRlbGF5X2J1aWxkdXAsIGN1cnJlbnRfdGltZV8ubXMoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAga1BheWxvYWRTaXplLCBQYWNlZFBhY2tldEluZm8oKSk7CiAgICAgICBkZWxh
eV9idWlsZHVwICs9IGRlbGF5OwotICAgICAgY29udHJvbGxlcl8tPk9uU2VudFBhY2tldCgqcGFj
a2V0LnNlbnRfcGFja2V0KTsKKyAgICAgIGNvbnRyb2xsZXJfLT5PblNlbnRQYWNrZXQocGFja2V0
LnNlbnRfcGFja2V0KTsKICAgICAgIFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayBmZWVkYmFjazsK
ICAgICAgIGZlZWRiYWNrLmZlZWRiYWNrX3RpbWUgPSBwYWNrZXQucmVjZWl2ZV90aW1lOwogICAg
ICAgZmVlZGJhY2sucGFja2V0X2ZlZWRiYWNrcy5wdXNoX2JhY2socGFja2V0KTsKQEAgLTIxMywx
NiArMjEzLDEzIEBAIFRFU1RfRihHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIExvbmdGZWVk
YmFja0RlbGF5cykgewogICAgIHBhY2tldHMucHVzaF9iYWNrKAogICAgICAgICBDcmVhdGVSZXN1
bHQoaSAqIDEwMCArIDQwLCAyICogaSAqIDEwMCArIDQwLCAxNTAwLCBrUGFjaW5nSW5mbzEpKTsK
IAorICAgIFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayBmZWVkYmFjazsKICAgICBmb3IgKFBhY2tl
dFJlc3VsdCYgcGFja2V0IDogcGFja2V0cykgewotICAgICAgY29udHJvbGxlcl8tPk9uU2VudFBh
Y2tldCgqcGFja2V0LnNlbnRfcGFja2V0KTsKLSAgICAgIC8vIFNpbXVsYXRlIHBhY2tldCB0aW1l
b3V0Ci0gICAgICBwYWNrZXQuc2VudF9wYWNrZXQgPSBhYnNsOjpudWxsb3B0OworICAgICAgY29u
dHJvbGxlcl8tPk9uU2VudFBhY2tldChwYWNrZXQuc2VudF9wYWNrZXQpOworICAgICAgZmVlZGJh
Y2suc2VuZGxlc3NfYXJyaXZhbF90aW1lcy5wdXNoX2JhY2socGFja2V0LnJlY2VpdmVfdGltZSk7
CiAgICAgfQogCi0gICAgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrIGZlZWRiYWNrOwogICAgIGZl
ZWRiYWNrLmZlZWRiYWNrX3RpbWUgPSBwYWNrZXRzWzBdLnJlY2VpdmVfdGltZTsKLSAgICBmZWVk
YmFjay5wYWNrZXRfZmVlZGJhY2tzID0gcGFja2V0czsKLQogICAgIEFkdmFuY2VUaW1lTWlsbGlz
ZWNvbmRzKGtGZWVkYmFja1RpbWVvdXRNcyk7CiAgICAgU2VudFBhY2tldCBsYXRlcl9wYWNrZXQ7
CiAgICAgbGF0ZXJfcGFja2V0LnNlbmRfdGltZSA9IFRpbWVzdGFtcDo6bXMoa0ZlZWRiYWNrVGlt
ZW91dE1zICsgaSAqIDIwMCArIDQwKTsKQEAgLTI0Niw3ICsyNDMsNyBAQCBURVNUX0YoR29vZ0Nj
TmV0d29ya0NvbnRyb2xsZXJUZXN0LCBMb25nRmVlZGJhY2tEZWxheXMpIHsKICAgICBwYWNrZXRz
LnB1c2hfYmFjayhDcmVhdGVSZXN1bHQoMTQwLCAyNDAsIDE1MDAsIGtQYWNpbmdJbmZvMSkpOwog
CiAgICAgZm9yIChjb25zdCBQYWNrZXRSZXN1bHQmIHBhY2tldCA6IHBhY2tldHMpCi0gICAgICBj
b250cm9sbGVyXy0+T25TZW50UGFja2V0KCpwYWNrZXQuc2VudF9wYWNrZXQpOworICAgICAgY29u
dHJvbGxlcl8tPk9uU2VudFBhY2tldChwYWNrZXQuc2VudF9wYWNrZXQpOwogCiAgICAgVHJhbnNw
b3J0UGFja2V0c0ZlZWRiYWNrIGZlZWRiYWNrOwogICAgIGZlZWRiYWNrLmZlZWRiYWNrX3RpbWUg
PSBwYWNrZXRzWzBdLnJlY2VpdmVfdGltZTsKQEAgLTMwOCw4ICszMDUsNTEgQEAgVEVTVF9GKEdv
b2dDY05ldHdvcmtDb250cm9sbGVyVGVzdCwKICAgICAgICAgICAgICAgMjApOwogfQogCi1URVNU
X0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBTY2VuYXJpb1F1aWNrVGVzdCkgewotICBT
Y2VuYXJpbyBzKCJnb29nY2NfdW5pdC9zY2VuYXJpb19xdWljayIsIGZhbHNlKTsKK1RFU1RfRihH
b29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIExpbWl0c1RvTWluUmF0ZUlmUnR0SXNIaWdoSW5U
cmlhbCkgeworICAvLyBUaGUgZmllbGQgdHJpYWwgbGltaXRzIG1heGltdW0gUlRUIHRvIDIgc2Vj
b25kcywgaGlnaGVyIFJUVCBtZWFucyB0aGF0IHRoZQorICAvLyBjb250cm9sbGVyIGJhY2tzIG9m
ZiB1bnRpbCBpdCByZWFjaGVzIHRoZSBtaW5pbXVtIGNvbmZpZ3VyZWQgYml0cmF0ZS4gVGhpcwor
ICAvLyBhbGxvd3MgdGhlIFJUVCB0byByZWNvdmVyIGZhc3RlciB0aGFuIHRoZSByZWd1bGFyIGNv
bnRyb2wgbWVjaGFuaXNtIHdvdWxkCisgIC8vIGFjaGlldmUuCisgIFNjb3BlZEZpZWxkVHJpYWxz
IHRyaWFsKCJXZWJSVEMtQndlLU1heFJ0dExpbWl0L2xpbWl0OjJzLyIpOworICAvLyBJbiB0aGUg
dGVzdCBjYXNlLCB3ZSBsaW1pdCB0aGUgY2FwYWNpdHkgYW5kIGFkZCBhIGNyb3NzIHRyYWZmaWMg
cGFja2V0CisgIC8vIGJ1cnN0IHRoYXQgYmxvY2tzIG1lZGlhIGZyb20gYmVpbmcgc2VudC4gVGhp
cyBjYXVzZXMgdGhlIFJUVCB0byBxdWlja2x5CisgIC8vIGluY3JlYXNlIGFib3ZlIHRoZSB0aHJl
c2hvbGQgaW4gdGhlIHRyaWFsLgorICBjb25zdCBEYXRhUmF0ZSBrTGlua0NhcGFjaXR5ID0gRGF0
YVJhdGU6OmticHMoMTAwKTsKKyAgY29uc3QgRGF0YVJhdGUga01pblJhdGUgPSBEYXRhUmF0ZTo6
a2JwcygyMCk7CisgIGNvbnN0IFRpbWVEZWx0YSBrQnVmZmVyQmxvYXREdXJhdGlvbiA9IFRpbWVE
ZWx0YTo6c2Vjb25kcygxMCk7CisgIFNjZW5hcmlvIHMoImdvb2djY191bml0L2xpbWl0X3RyaWFs
IiwgZmFsc2UpOworICBOZXR3b3JrTm9kZUNvbmZpZyBuZXRfY29uZjsKKyAgYXV0byBzZW5kX25l
dCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUoWz1dKE5ldHdvcmtOb2RlQ29uZmlnKiBjKSB7Cisg
ICAgYy0+c2ltdWxhdGlvbi5iYW5kd2lkdGggPSBrTGlua0NhcGFjaXR5OworICAgIGMtPnNpbXVs
YXRpb24uZGVsYXkgPSBUaW1lRGVsdGE6Om1zKDEwMCk7CisgICAgYy0+dXBkYXRlX2ZyZXF1ZW5j
eSA9IFRpbWVEZWx0YTo6bXMoNSk7CisgIH0pOworICBhdXRvIHJldF9uZXQgPSBzLkNyZWF0ZVNp
bXVsYXRpb25Ob2RlKFtdKE5ldHdvcmtOb2RlQ29uZmlnKiBjKSB7CisgICAgYy0+c2ltdWxhdGlv
bi5kZWxheSA9IFRpbWVEZWx0YTo6bXMoMTAwKTsKKyAgICBjLT51cGRhdGVfZnJlcXVlbmN5ID0g
VGltZURlbHRhOjptcyg1KTsKKyAgfSk7CisgIFNpbXVsYXRlZFRpbWVDbGllbnRDb25maWcgY29u
ZmlnOworICBjb25maWcudHJhbnNwb3J0LmNjID0KKyAgICAgIFRyYW5zcG9ydENvbnRyb2xsZXJD
b25maWc6OkNvbmdlc3Rpb25Db250cm9sbGVyOjprR29vZ0NjOworICBjb25maWcudHJhbnNwb3J0
LnJhdGVzLm1pbl9yYXRlID0ga01pblJhdGU7CisgIGNvbmZpZy50cmFuc3BvcnQucmF0ZXMuc3Rh
cnRfcmF0ZSA9IGtMaW5rQ2FwYWNpdHk7CisgIFNpbXVsYXRlZFRpbWVDbGllbnQqIGNsaWVudCA9
IHMuQ3JlYXRlU2ltdWxhdGVkVGltZUNsaWVudCgKKyAgICAgICJzZW5kIiwgY29uZmlnLCB7UGFj
a2V0U3RyZWFtQ29uZmlnKCl9LCB7c2VuZF9uZXR9LCB7cmV0X25ldH0pOworICAvLyBSdW4gZm9y
IGEgZmV3IHNlY29uZHMgdG8gYWxsb3cgdGhlIGNvbnRyb2xsZXIgdG8gc3RhYmlsaXplLgorICBz
LlJ1bkZvcihUaW1lRGVsdGE6OnNlY29uZHMoMTApKTsKKyAgY29uc3QgRGF0YVNpemUga0Jsb2F0
UGFja2V0U2l6ZSA9IERhdGFTaXplOjpieXRlcygxMDAwKTsKKyAgY29uc3QgaW50IGtCbG9hdFBh
Y2tldENvdW50ID0KKyAgICAgIHN0YXRpY19jYXN0PGludD4oa0J1ZmZlckJsb2F0RHVyYXRpb24g
KiBrTGlua0NhcGFjaXR5IC8ga0Jsb2F0UGFja2V0U2l6ZSk7CisgIC8vIFRoaXMgd2lsbCBjYXVz
ZSB0aGUgUlRUIHRvIGJlIGxhcmdlIGZvciBhIHdoaWxlLgorICBzLlRyaWdnZXJQYWNrZXRCdXJz
dCh7c2VuZF9uZXR9LCBrQmxvYXRQYWNrZXRDb3VudCwga0Jsb2F0UGFja2V0U2l6ZS5ieXRlcygp
KTsKKyAgLy8gV2FpdCB0byBhbGxvdyB0aGUgaGlnaCBSVFQgdG8gYmUgZGV0ZWN0ZWQgYW5kIGFj
dGVkIHVwb24uCisgIHMuUnVuRm9yKFRpbWVEZWx0YTo6c2Vjb25kcyg0KSk7CisgIC8vIEJ5IG5v
dyB0aGUgdGFyZ2V0IHJhdGUgc2hvdWxkIGhhdmUgZHJvcHBlZCB0byB0aGUgbWluaW11bSBjb25m
aWd1cmVkIHJhdGUuCisgIEVYUEVDVF9ORUFSKGNsaWVudC0+dGFyZ2V0X3JhdGVfa2JwcygpLCBr
TWluUmF0ZS5rYnBzKCksIDEpOworfQorCitURVNUX0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJU
ZXN0LCBVcGRhdGVzVGFyZ2V0UmF0ZUJhc2VkT25MaW5rQ2FwYWNpdHkpIHsKKyAgU2NlbmFyaW8g
cygiZ29vZ2NjX3VuaXQvdGFyZ2V0X2NhcGFjaXR5IiwgZmFsc2UpOwogICBTaW11bGF0ZWRUaW1l
Q2xpZW50Q29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnRyYW5zcG9ydC5jYyA9CiAgICAgICBUcmFu
c3BvcnRDb250cm9sbGVyQ29uZmlnOjpDb25nZXN0aW9uQ29udHJvbGxlcjo6a0dvb2dDY0ZlZWRi
YWNrOwpAQCAtMzU5LDUgKzM5OSw2MSBAQCBURVNUX0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJU
ZXN0LCBTY2VuYXJpb1F1aWNrVGVzdCkgewogICBFWFBFQ1RfTkVBUihjbGllbnQtPnRhcmdldF9y
YXRlX2ticHMoKSwgOTAsIDIwKTsKIH0KIAorVEVTVF9GKEdvb2dDY05ldHdvcmtDb250cm9sbGVy
VGVzdCwgRGVmYXVsdEVzdGltYXRlVmFyaWVzSW5TdGVhZHlTdGF0ZSkgeworICBTY29wZWRGaWVs
ZFRyaWFscyB0cmlhbCgiV2ViUlRDLUJ3ZS1TdGFibGVCYW5kd2lkdGhFc3RpbWF0ZS9EaXNhYmxl
ZC8iKTsKKyAgU2NlbmFyaW8gcygiZ29vZ2NjX3VuaXQvbm9fc3RhYmxlX3ZhcmllcyIsIGZhbHNl
KTsKKyAgU2ltdWxhdGVkVGltZUNsaWVudENvbmZpZyBjb25maWc7CisgIGNvbmZpZy50cmFuc3Bv
cnQuY2MgPQorICAgICAgVHJhbnNwb3J0Q29udHJvbGxlckNvbmZpZzo6Q29uZ2VzdGlvbkNvbnRy
b2xsZXI6OmtHb29nQ2NGZWVkYmFjazsKKyAgTmV0d29ya05vZGVDb25maWcgbmV0X2NvbmY7Cisg
IG5ldF9jb25mLnNpbXVsYXRpb24uYmFuZHdpZHRoID0gRGF0YVJhdGU6OmticHMoNTAwKTsKKyAg
bmV0X2NvbmYuc2ltdWxhdGlvbi5kZWxheSA9IFRpbWVEZWx0YTo6bXMoMTAwKTsKKyAgbmV0X2Nv
bmYudXBkYXRlX2ZyZXF1ZW5jeSA9IFRpbWVEZWx0YTo6bXMoNSk7CisgIGF1dG8gc2VuZF9uZXQg
PSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2RlKG5ldF9jb25mKTsKKyAgYXV0byByZXRfbmV0ID0gcy5D
cmVhdGVTaW11bGF0aW9uTm9kZShuZXRfY29uZik7CisgIFNpbXVsYXRlZFRpbWVDbGllbnQqIGNs
aWVudCA9IHMuQ3JlYXRlU2ltdWxhdGVkVGltZUNsaWVudCgKKyAgICAgICJzZW5kIiwgY29uZmln
LCB7UGFja2V0U3RyZWFtQ29uZmlnKCl9LCB7c2VuZF9uZXR9LCB7cmV0X25ldH0pOworICAvLyBS
dW4gZm9yIGEgd2hpbGUgdG8gYWxsb3cgdGhlIGVzdGltYXRlIHRvIHN0YWJpbGl6ZS4KKyAgcy5S
dW5Gb3IoVGltZURlbHRhOjpzZWNvbmRzKDIwKSk7CisgIERhdGFSYXRlIG1pbl9lc3RpbWF0ZSA9
IERhdGFSYXRlOjpQbHVzSW5maW5pdHkoKTsKKyAgRGF0YVJhdGUgbWF4X2VzdGltYXRlID0gRGF0
YVJhdGU6Ok1pbnVzSW5maW5pdHkoKTsKKyAgLy8gTWVhc3VyZSB2YXJpYXRpb24gaW4gc3RlYWR5
IHN0YXRlLgorICBmb3IgKGludCBpID0gMDsgaSA8IDIwOyArK2kpIHsKKyAgICBtaW5fZXN0aW1h
dGUgPSBzdGQ6Om1pbihtaW5fZXN0aW1hdGUsIGNsaWVudC0+bGlua19jYXBhY2l0eSgpKTsKKyAg
ICBtYXhfZXN0aW1hdGUgPSBzdGQ6Om1heChtYXhfZXN0aW1hdGUsIGNsaWVudC0+bGlua19jYXBh
Y2l0eSgpKTsKKyAgICBzLlJ1bkZvcihUaW1lRGVsdGE6OnNlY29uZHMoMSkpOworICB9CisgIC8v
IFdlIHNob3VsZCBleHBlY3QgZHJvcHMgYnkgYXQgbGVhc3QgMTUlIChkZWZhdWx0IGJhY2tvZmYu
KQorICBFWFBFQ1RfTFQobWluX2VzdGltYXRlIC8gbWF4X2VzdGltYXRlLCAwLjg1KTsKK30KKwor
VEVTVF9GKEdvb2dDY05ldHdvcmtDb250cm9sbGVyVGVzdCwgU3RhYmxlRXN0aW1hdGVEb2VzTm90
VmFyeUluU3RlYWR5U3RhdGUpIHsKKyAgU2NvcGVkRmllbGRUcmlhbHMgdHJpYWwoIldlYlJUQy1C
d2UtU3RhYmxlQmFuZHdpZHRoRXN0aW1hdGUvRW5hYmxlZC8iKTsKKyAgU2NlbmFyaW8gcygiZ29v
Z2NjX3VuaXQvc3RhYmxlX2lzX3N0YWJsZSIsIGZhbHNlKTsKKyAgU2ltdWxhdGVkVGltZUNsaWVu
dENvbmZpZyBjb25maWc7CisgIGNvbmZpZy50cmFuc3BvcnQuY2MgPQorICAgICAgVHJhbnNwb3J0
Q29udHJvbGxlckNvbmZpZzo6Q29uZ2VzdGlvbkNvbnRyb2xsZXI6OmtHb29nQ2NGZWVkYmFjazsK
KyAgTmV0d29ya05vZGVDb25maWcgbmV0X2NvbmY7CisgIG5ldF9jb25mLnNpbXVsYXRpb24uYmFu
ZHdpZHRoID0gRGF0YVJhdGU6OmticHMoNTAwKTsKKyAgbmV0X2NvbmYuc2ltdWxhdGlvbi5kZWxh
eSA9IFRpbWVEZWx0YTo6bXMoMTAwKTsKKyAgbmV0X2NvbmYudXBkYXRlX2ZyZXF1ZW5jeSA9IFRp
bWVEZWx0YTo6bXMoNSk7CisgIGF1dG8gc2VuZF9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRpb25Ob2Rl
KG5ldF9jb25mKTsKKyAgYXV0byByZXRfbmV0ID0gcy5DcmVhdGVTaW11bGF0aW9uTm9kZShuZXRf
Y29uZik7CisgIFNpbXVsYXRlZFRpbWVDbGllbnQqIGNsaWVudCA9IHMuQ3JlYXRlU2ltdWxhdGVk
VGltZUNsaWVudCgKKyAgICAgICJzZW5kIiwgY29uZmlnLCB7UGFja2V0U3RyZWFtQ29uZmlnKCl9
LCB7c2VuZF9uZXR9LCB7cmV0X25ldH0pOworICAvLyBSdW4gZm9yIGEgd2hpbGUgdG8gYWxsb3cg
dGhlIGVzdGltYXRlIHRvIHN0YWJpbGl6ZS4KKyAgcy5SdW5Gb3IoVGltZURlbHRhOjpzZWNvbmRz
KDIwKSk7CisgIERhdGFSYXRlIG1pbl9lc3RpbWF0ZSA9IERhdGFSYXRlOjpQbHVzSW5maW5pdHko
KTsKKyAgRGF0YVJhdGUgbWF4X2VzdGltYXRlID0gRGF0YVJhdGU6Ok1pbnVzSW5maW5pdHkoKTsK
KyAgLy8gTWVhc3VyZSB2YXJpYXRpb24gaW4gc3RlYWR5IHN0YXRlLgorICBmb3IgKGludCBpID0g
MDsgaSA8IDIwOyArK2kpIHsKKyAgICBtaW5fZXN0aW1hdGUgPSBzdGQ6Om1pbihtaW5fZXN0aW1h
dGUsIGNsaWVudC0+bGlua19jYXBhY2l0eSgpKTsKKyAgICBtYXhfZXN0aW1hdGUgPSBzdGQ6Om1h
eChtYXhfZXN0aW1hdGUsIGNsaWVudC0+bGlua19jYXBhY2l0eSgpKTsKKyAgICBzLlJ1bkZvcihU
aW1lRGVsdGE6OnNlY29uZHMoMSkpOworICB9CisgIC8vIFdlIGV4cGVjdCBubyB2YXJpYXRpb24g
dW5kZXIgdGhlIHRyaWFsIGluIHN0ZWFkeSBzdGF0ZS4KKyAgRVhQRUNUX0dUKG1pbl9lc3RpbWF0
ZSAvIG1heF9lc3RpbWF0ZSwgMC45NSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiB9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2lu
Y2x1ZGUvZ29vZ19jY19mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2luY2x1ZGUv
Z29vZ19jY19mYWN0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkOTFmZmY2
NWZhOTZkOGE1Y2FjMjUxZmFiZTgwMzI2NjA0NjRhZDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9pbmNsdWRlL2dv
b2dfY2NfZmFjdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQot
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19DT05HRVNUSU9OX0NPTlRST0xMRVJfR09P
R19DQ19JTkNMVURFX0dPT0dfQ0NfRkFDVE9SWV9IXwotI2RlZmluZSBNT0RVTEVTX0NPTkdFU1RJ
T05fQ09OVFJPTExFUl9HT09HX0NDX0lOQ0xVREVfR09PR19DQ19GQUNUT1JZX0hfCi0jaW5jbHVk
ZSA8bWVtb3J5PgotCi0jaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9uZXR3b3JrX2NvbnRyb2wuaCIK
LQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBDbG9jazsKLWNsYXNzIFJ0Y0V2ZW50TG9nOwot
Ci1jbGFzcyBHb29nQ2NOZXR3b3JrQ29udHJvbGxlckZhY3RvcnkKLSAgICA6IHB1YmxpYyBOZXR3
b3JrQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgR29v
Z0NjTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KFJ0Y0V2ZW50TG9nKik7Ci0gIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrQ29udHJvbGxlckludGVyZmFjZT4gQ3JlYXRlKAotICAgICAgTmV0d29ya0Nv
bnRyb2xsZXJDb25maWcgY29uZmlnKSBvdmVycmlkZTsKLSAgVGltZURlbHRhIEdldFByb2Nlc3NJ
bnRlcnZhbCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gcHJpdmF0ZToKLSAgUnRjRXZlbnRMb2cqIGNv
bnN0IGV2ZW50X2xvZ187Ci19OwotCi0vLyBGYWN0b3J5IHRvIGNyZWF0ZSBwYWNrZXQgZmVlZGJh
Y2sgb25seSBHb29nQ0MsIHRoaXMgY2FuIGJlIHVzZWQgZm9yCi0vLyBjb25uZWN0aW9ucyBwcm92
aWRpbmcgcGFja2V0IHJlY2VpdmUgdGltZSBmZWVkYmFjayBidXQgbm8gb3RoZXIgcmVwb3J0cy4K
LWNsYXNzIEdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5Ci0gICAgOiBwdWJs
aWMgTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIGV4cGxp
Y2l0IEdvb2dDY0ZlZWRiYWNrTmV0d29ya0NvbnRyb2xsZXJGYWN0b3J5KFJ0Y0V2ZW50TG9nKik7
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckludGVyZmFjZT4gQ3JlYXRlKAot
ICAgICAgTmV0d29ya0NvbnRyb2xsZXJDb25maWcgY29uZmlnKSBvdmVycmlkZTsKLSAgVGltZURl
bHRhIEdldFByb2Nlc3NJbnRlcnZhbCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gcHJpdmF0ZToKLSAg
UnRjRXZlbnRMb2cqIGNvbnN0IGV2ZW50X2xvZ187Ci19OwotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwotCi0jZW5kaWYgIC8vIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX0dPT0dfQ0NfSU5D
TFVERV9HT09HX0NDX0ZBQ1RPUllfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2df
Y2MvbWVkaWFuX3Nsb3BlX2VzdGltYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvbWVk
aWFuX3Nsb3BlX2VzdGltYXRvci5jYwppbmRleCAwYWQ3NzI4MzAyZWMyMDg3OGY5YWE1MDRhNWJl
Y2Q4YzU5YmU2MTJmLi40NWQyZmUzMjExNGVkZWE1OWZlNDFmZWRiNzhjMmQ5OWQ3YWVhZDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL21lZGlhbl9zbG9wZV9lc3RpbWF0b3Iu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9tZWRpYW5fc2xvcGVfZXN0aW1hdG9yLmNj
CkBAIC0xMCwxMiArMTAsMTAgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2dvb2dfY2MvbWVkaWFuX3Nsb3BlX2VzdGltYXRvci5oIgogCi0jaW5jbHVkZSA8YWxn
b3JpdGhtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2Jp
dHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90ZXN0L2J3ZV90ZXN0X2xvZ2dpbmcuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2Nj
L3Byb2JlX2JpdHJhdGVfZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9i
ZV9iaXRyYXRlX2VzdGltYXRvci5jYwppbmRleCAwZjBkMTdlYTQ4ZGIwNjIyMWU0Y2JkZjE3ZjUz
Yjc3ZWYzY2I1NzUzLi43YmEyZmI1YTEzYmM5NGQyODRlZTY1N2VjZTQ4MjgwMTg4NmRiN2Q3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1hdG9y
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3Iu
Y2MKQEAgLTE3MCwxMSArMTcwLDEzIEBAIGludCBQcm9iZUJpdHJhdGVFc3RpbWF0b3I6OkhhbmRs
ZVByb2JlQW5kRXN0aW1hdGVCaXRyYXRlKAogICByZXR1cm4gKmVzdGltYXRlZF9iaXRyYXRlX2Jw
c187CiB9CiAKLWFic2w6Om9wdGlvbmFsPGludD4KLVByb2JlQml0cmF0ZUVzdGltYXRvcjo6RmV0
Y2hBbmRSZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRlQnBzKCkgeworYWJzbDo6b3B0aW9uYWw8RGF0
YVJhdGU+CitQcm9iZUJpdHJhdGVFc3RpbWF0b3I6OkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVk
Qml0cmF0ZSgpIHsKICAgYWJzbDo6b3B0aW9uYWw8aW50PiBlc3RpbWF0ZWRfYml0cmF0ZV9icHMg
PSBlc3RpbWF0ZWRfYml0cmF0ZV9icHNfOwogICBlc3RpbWF0ZWRfYml0cmF0ZV9icHNfLnJlc2V0
KCk7Ci0gIHJldHVybiBlc3RpbWF0ZWRfYml0cmF0ZV9icHM7CisgIGlmIChlc3RpbWF0ZWRfYml0
cmF0ZV9icHMpCisgICAgcmV0dXJuIERhdGFSYXRlOjpicHMoKmVzdGltYXRlZF9iaXRyYXRlX2Jw
cyk7CisgIHJldHVybiBhYnNsOjpudWxsb3B0OwogfQogCiB2b2lkIFByb2JlQml0cmF0ZUVzdGlt
YXRvcjo6RXJhc2VPbGRDbHVzdGVycyhpbnQ2NF90IHRpbWVzdGFtcF9tcykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9iaXRyYXRlX2VzdGltYXRvci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9iaXRyYXRlX2VzdGltYXRvci5oCmluZGV4IGVkOTI1
MjEzN2ZlYTFhZmUzZmNmYjZhNzdjYTRhNDQxNTg4YjZiZWEuLmFlODNlZDM4MGZlYjg3NWM2Yzk0
ZWE0MjVhYjk2ZDhhZWNkOTk4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2Mv
cHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3By
b2JlX2JpdHJhdGVfZXN0aW1hdG9yLmgKQEAgLTI4LDcgKzI4LDcgQEAgY2xhc3MgUHJvYmVCaXRy
YXRlRXN0aW1hdG9yIHsKICAgLy8gUmV0dXJucyB0aGUgZXN0aW1hdGVkIGJpdHJhdGUgaWYgdGhl
IHByb2JlIGNvbXBsZXRlcyBhIHZhbGlkIGNsdXN0ZXIuCiAgIGludCBIYW5kbGVQcm9iZUFuZEVz
dGltYXRlQml0cmF0ZShjb25zdCBQYWNrZXRGZWVkYmFjayYgcGFja2V0X2ZlZWRiYWNrKTsKIAot
ICBhYnNsOjpvcHRpb25hbDxpbnQ+IEZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZUJw
cygpOworICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gRmV0Y2hBbmRSZXNldExhc3RFc3RpbWF0
ZWRCaXRyYXRlKCk7CiAKICBwcml2YXRlOgogICBzdHJ1Y3QgQWdncmVnYXRlZENsdXN0ZXIgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9iaXRyYXRlX2VzdGltYXRv
cl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVfYml0cmF0ZV9lc3Rp
bWF0b3JfdW5pdHRlc3QuY2MKaW5kZXggZjhhNDBmODM5ZjM4NWEzMDA1YjRhNjY1NzcyMjkyZDAy
MGFiODU1NS4uZmNmNTU1OTI0NTM3YWI4NmFkOTNkZTM0ODMxZWJiNjZkODJjMDM5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9iaXRyYXRlX2VzdGltYXRvcl91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL3Byb2JlX2JpdHJhdGVfZXN0aW1h
dG9yX3VuaXR0ZXN0LmNjCkBAIC0yMDIsNyArMjAyLDcgQEAgVEVTVF9GKFRlc3RQcm9iZUJpdHJh
dGVFc3RpbWF0b3IsIElnbm9yZVNpemVGaXJzdFJlY2VpdmVQYWNrZXQpIHsKIH0KIAogVEVTVF9G
KFRlc3RQcm9iZUJpdHJhdGVFc3RpbWF0b3IsIE5vTGFzdEVzdGltYXRlZEJpdHJhdGVCcHMpIHsK
LSAgRVhQRUNUX0ZBTFNFKHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy5GZXRjaEFuZFJlc2V0TGFz
dEVzdGltYXRlZEJpdHJhdGVCcHMoKSk7CisgIEVYUEVDVF9GQUxTRShwcm9iZV9iaXRyYXRlX2Vz
dGltYXRvcl8uRmV0Y2hBbmRSZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRlKCkpOwogfQogCiBURVNU
X0YoVGVzdFByb2JlQml0cmF0ZUVzdGltYXRvciwgRmV0Y2hMYXN0RXN0aW1hdGVkQml0cmF0ZUJw
cykgewpAQCAtMjExLDExICsyMTEsMTEgQEAgVEVTVF9GKFRlc3RQcm9iZUJpdHJhdGVFc3RpbWF0
b3IsIEZldGNoTGFzdEVzdGltYXRlZEJpdHJhdGVCcHMpIHsKICAgQWRkUGFja2V0RmVlZGJhY2so
MCwgMTAwMCwgMjAsIDMwKTsKICAgQWRkUGFja2V0RmVlZGJhY2soMCwgMTAwMCwgMzAsIDQwKTsK
IAotICBhdXRvIGVzdGltYXRlZF9iaXRyYXRlX2JwcyA9Ci0gICAgICBwcm9iZV9iaXRyYXRlX2Vz
dGltYXRvcl8uRmV0Y2hBbmRSZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRlQnBzKCk7Ci0gIEVYUEVD
VF9UUlVFKGVzdGltYXRlZF9iaXRyYXRlX2Jwcyk7Ci0gIEVYUEVDVF9ORUFSKCplc3RpbWF0ZWRf
Yml0cmF0ZV9icHMsIDgwMDAwMCwgMTApOwotICBFWFBFQ1RfRkFMU0UocHJvYmVfYml0cmF0ZV9l
c3RpbWF0b3JfLkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZUJwcygpKTsKKyAgYXV0
byBlc3RpbWF0ZWRfYml0cmF0ZSA9CisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8uRmV0
Y2hBbmRSZXNldExhc3RFc3RpbWF0ZWRCaXRyYXRlKCk7CisgIEVYUEVDVF9UUlVFKGVzdGltYXRl
ZF9iaXRyYXRlKTsKKyAgRVhQRUNUX05FQVIoZXN0aW1hdGVkX2JpdHJhdGUtPmJwcygpLCA4MDAw
MDAsIDEwKTsKKyAgRVhQRUNUX0ZBTFNFKHByb2JlX2JpdHJhdGVfZXN0aW1hdG9yXy5GZXRjaEFu
ZFJlc2V0TGFzdEVzdGltYXRlZEJpdHJhdGUoKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVfY29udHJvbGxlci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvcHJvYmVfY29udHJvbGxlci5jYwppbmRleCBjMmE4
ZTAyM2Q3ZDQwZWI3OGVlNTJjOTI0M2I1MWY2MDdjZTRiOTA0Li43YmJlOGU3MTM4YTRlNjI3Njc5
ZjZjNDg1NmIyZTg0MWUzN2YyZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2Nj
L3Byb2JlX2NvbnRyb2xsZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9j
b250cm9sbGVyLmNjCkBAIC0xNDYsNiArMTQ2LDcgQEAgc3RkOjp2ZWN0b3I8UHJvYmVDbHVzdGVy
Q29uZmlnPiBQcm9iZUNvbnRyb2xsZXI6Ok9uTWF4VG90YWxBbGxvY2F0ZWRCaXRyYXRlKAogICAg
IG1heF90b3RhbF9hbGxvY2F0ZWRfYml0cmF0ZV8gPSBtYXhfdG90YWxfYWxsb2NhdGVkX2JpdHJh
dGU7CiAgICAgcmV0dXJuIEluaXRpYXRlUHJvYmluZyhhdF90aW1lX21zLCB7bWF4X3RvdGFsX2Fs
bG9jYXRlZF9iaXRyYXRlfSwgZmFsc2UpOwogICB9CisgIG1heF90b3RhbF9hbGxvY2F0ZWRfYml0
cmF0ZV8gPSBtYXhfdG90YWxfYWxsb2NhdGVkX2JpdHJhdGU7CiAgIHJldHVybiBzdGQ6OnZlY3Rv
cjxQcm9iZUNsdXN0ZXJDb25maWc+KCk7CiB9CiAKQEAgLTI2MCw2ICsyNjEsMTYgQEAgc3RkOjp2
ZWN0b3I8UHJvYmVDbHVzdGVyQ29uZmlnPiBQcm9iZUNvbnRyb2xsZXI6OlJlcXVlc3RQcm9iZSgK
ICAgcmV0dXJuIHN0ZDo6dmVjdG9yPFByb2JlQ2x1c3RlckNvbmZpZz4oKTsKIH0KIAorc3RkOjp2
ZWN0b3I8UHJvYmVDbHVzdGVyQ29uZmlnPiBQcm9iZUNvbnRyb2xsZXI6OkluaXRpYXRlQ2FwYWNp
dHlQcm9iaW5nKAorICAgIGludDY0X3QgYml0cmF0ZV9icHMsCisgICAgaW50NjRfdCBhdF90aW1l
X21zKSB7CisgIGlmIChzdGF0ZV8gIT0gU3RhdGU6OmtXYWl0aW5nRm9yUHJvYmluZ1Jlc3VsdCkg
eworICAgIFJUQ19EQ0hFQ0sobmV0d29ya19hdmFpbGFibGVfKTsKKyAgICByZXR1cm4gSW5pdGlh
dGVQcm9iaW5nKGF0X3RpbWVfbXMsIHsyICogYml0cmF0ZV9icHN9LCB0cnVlKTsKKyAgfQorICBy
ZXR1cm4gc3RkOjp2ZWN0b3I8UHJvYmVDbHVzdGVyQ29uZmlnPigpOworfQorCiB2b2lkIFByb2Jl
Q29udHJvbGxlcjo6UmVzZXQoaW50NjRfdCBhdF90aW1lX21zKSB7CiAgIG5ldHdvcmtfYXZhaWxh
YmxlXyA9IHRydWU7CiAgIHN0YXRlXyA9IFN0YXRlOjprSW5pdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL2dvb2dfY2MvcHJvYmVfY29udHJvbGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29v
Z19jYy9wcm9iZV9jb250cm9sbGVyLmgKaW5kZXggNmI2ZDRhZThiNGI1MmE4MTVhYTdlOGU0ZWU5
MjE2MWI3ZTVkNjZiMy4uNGRkZDc3Zjc1YzM3YjZkYmQ5YjUzODkzZDNjMGI1ZTkzOTQ0YzdmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9jb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9jb250cm9sbGVyLmgKQEAgLTYwLDYgKzYw
LDkgQEAgY2xhc3MgUHJvYmVDb250cm9sbGVyIHsKICAgUlRDX1dBUk5fVU5VU0VEX1JFU1VMVCBz
dGQ6OnZlY3RvcjxQcm9iZUNsdXN0ZXJDb25maWc+IFJlcXVlc3RQcm9iZSgKICAgICAgIGludDY0
X3QgYXRfdGltZV9tcyk7CiAKKyAgUlRDX1dBUk5fVU5VU0VEX1JFU1VMVCBzdGQ6OnZlY3RvcjxQ
cm9iZUNsdXN0ZXJDb25maWc+CisgIEluaXRpYXRlQ2FwYWNpdHlQcm9iaW5nKGludDY0X3QgYml0
cmF0ZV9icHMsIGludDY0X3QgYXRfdGltZV9tcyk7CisKICAgLy8gUmVzZXRzIHRoZSBQcm9iZUNv
bnRyb2xsZXIgdG8gYSBzdGF0ZSBlcXVpdmFsZW50IHRvIGFzIGlmIGl0IHdhcyBqdXN0CiAgIC8v
IGNyZWF0ZWQgRVhDRVBUIGZvciB8ZW5hYmxlX3BlcmlvZGljX2Fscl9wcm9iaW5nX3wuCiAgIHZv
aWQgUmVzZXQoaW50NjRfdCBhdF90aW1lX21zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvdGVzdC9nb29nX2NjX3ByaW50ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2Nj
L3Rlc3QvZ29vZ19jY19wcmludGVyLmNjCmluZGV4IDMyNjRiMzdlNmRkYzBlNDYzOGI1NzgxOWIw
ZGU4N2VkMGNkODc2OGQuLjU5YWFkNTExYzAwOGIwODBjZGVmNWM1ZTJjM2IwNTQzYmZjYmNiNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvdGVzdC9nb29nX2NjX3ByaW50ZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90ZXN0L2dvb2dfY2NfcHJpbnRlci5jYwpA
QCAtOCw2ICs4LDkgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvdGVzdC9nb29nX2NjX3ByaW50ZXIuaCIKKworI2luY2x1ZGUg
PG1hdGguaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2df
Y2MvdHJlbmRsaW5lX2VzdGltYXRvci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTMzLDkg
KzM2LDExIEBAIHZvaWQgR29vZ0NjU3RhdGVQcmludGVyOjpQcmludFZhbHVlcyhGSUxFKiBvdXQp
IHsKICAgUlRDX0NIRUNLKGNvbnRyb2xsZXJfKTsKICAgYXV0byogZGV0ZWN0b3IgPSBjb250cm9s
bGVyXy0+ZGVsYXlfYmFzZWRfYndlXy0+ZGVsYXlfZGV0ZWN0b3JfLmdldCgpOwogICBhdXRvKiB0
cmVuZGxpbmVfZXN0aW1hdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUcmVuZGxpbmVFc3RpbWF0b3Iq
PihkZXRlY3Rvcik7Ci0gIGZwcmludGYob3V0LCAiJWkgJWkgJWkgJS42bGYgJS42bGYgJS42bGYi
LAorICBmcHJpbnRmKG91dCwgIiVpICVmICVpICUuNmxmICUuNmxmICUuNmxmIiwKICAgICAgICAg
ICBjb250cm9sbGVyXy0+ZGVsYXlfYmFzZWRfYndlXy0+cmF0ZV9jb250cm9sXy5yYXRlX2NvbnRy
b2xfc3RhdGVfLAotICAgICAgICAgIGNvbnRyb2xsZXJfLT5kZWxheV9iYXNlZF9id2VfLT5yYXRl
X2NvbnRyb2xfLnJhdGVfY29udHJvbF9yZWdpb25fLAorICAgICAgICAgIGNvbnRyb2xsZXJfLT5k
ZWxheV9iYXNlZF9id2VfLT5yYXRlX2NvbnRyb2xfCisgICAgICAgICAgICAgICAgICAubGlua19j
YXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy52YWx1ZV9vcihOQU4pICoKKyAgICAgICAgICAgICAgMTAw
MCAvIDgsCiAgICAgICAgICAgY29udHJvbGxlcl8tPmFscl9kZXRlY3Rvcl8tPmFscl9zdGFydGVk
X3RpbWVfbXNfLmhhc192YWx1ZSgpLAogICAgICAgICAgIHRyZW5kbGluZV9lc3RpbWF0b3ItPnBy
ZXZfdHJlbmRfLAogICAgICAgICAgIHRyZW5kbGluZV9lc3RpbWF0b3ItPnByZXZfbW9kaWZpZWRf
dHJlbmRfLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90ZXN0L2dvb2dfY2Nf
cHJpbnRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90ZXN0L2dvb2dfY2NfcHJpbnRlci5o
CmluZGV4IDRkZmMwNTliNDc5YTk0NzVhYmViOTYxZjUzOWI1OGNkZTA0MGQyYzQuLjVkNGYyYzE4
NDBmNGM5N2E4MzA3NWYyOWNjOWRjYzZjNmU1NTdhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvdGVzdC9nb29nX2NjX3ByaW50ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9n
b29nX2NjL3Rlc3QvZ29vZ19jY19wcmludGVyLmgKQEAgLTEyLDggKzEyLDggQEAKIAogI2luY2x1
ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvZ29vZ19jY19mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2Nj
X25ldHdvcmtfY29udHJvbC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvaW5jbHVkZS9nb29nX2NjX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci90ZXN0L2NvbnRyb2xsZXJfcHJpbnRlci5oIgogCiBuYW1l
c3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvdHJlbmRs
aW5lX2VzdGltYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy90cmVuZGxpbmVfZXN0aW1h
dG9yLmgKaW5kZXggYTdkMjJhOTUwZWZhZDAyZGMzODc1NjlhN2ViMjQwMGFlODFiZmM5Ny4uMTgy
NmQ4MTI0ODBlNDcyMDcwMWI4Njk2MWE1NmU1MTA0MWExOTA4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy90cmVuZGxpbmVfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy90cmVuZGxpbmVfZXN0aW1hdG9yLmgKQEAgLTEyLDExICsxMiwxMSBAQAogCiAj
aW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0KICNpbmNsdWRlIDxkZXF1
ZT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9kZWxheV9pbmNyZWFzZV9kZXRlY3Rvcl9pbnRlcmZhY2UuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZp
bmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2luY2x1ZGUvc2VuZF9zaWRl
X2Nvbmdlc3Rpb25fY29udHJvbGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvaW5jbHVkZS9zZW5kX3Np
ZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmgKaW5kZXggYmEyNjI3MmU2ZmI0N2I0YzIwZGY1M2E1
MWY4ZjllODNhYzE2MTQ0Zi4uNzQ2ZTU5MGE1OWY0MWU3YWJjNDQ1MmYzYzM1ZTEzYjljYjk5OTdh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvaW5jbHVkZS9zZW5kX3NpZGVfY29uZ2VzdGlv
bl9jb250cm9sbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvaW5jbHVkZS9zZW5kX3NpZGVfY29u
Z2VzdGlvbl9jb250cm9sbGVyLmgKQEAgLTExMyw2ICsxMTMsOSBAQCBjbGFzcyBTZW5kU2lkZUNv
bmdlc3Rpb25Db250cm9sbGVyCiAKICAgdm9pZCBTZXRBbGxvY2F0ZWRCaXRyYXRlV2l0aG91dEZl
ZWRiYWNrKHVpbnQzMl90IGJpdHJhdGVfYnBzKSBvdmVycmlkZTsKIAorICB2b2lkIEVuYWJsZUNv
bmdlc3Rpb25XaW5kb3dQdXNoYmFjayhpbnQ2NF90IGFjY2VwdGVkX3F1ZXVlX21zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBtaW5fcHVzaGJhY2tfdGFy
Z2V0X2JpdHJhdGVfYnBzKTsKKwogIHByaXZhdGU6CiAgIHZvaWQgTWF5YmVUcmlnZ2VyT25OZXR3
b3JrQ2hhbmdlZCgpOwogCkBAIC0xMzYsNyArMTM5LDcgQEAgY2xhc3MgU2VuZFNpZGVDb25nZXN0
aW9uQ29udHJvbGxlcgogICAgICAgUlRDX0dVQVJERURfQlkocHJvYmVfbG9ja18pOwogCiAgIGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxSYXRlTGltaXRlcj4gcmV0cmFuc21pc3Npb25fcmF0ZV9saW1p
dGVyXzsKLSAgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyIHRyYW5zcG9ydF9mZWVkYmFja19hZGFw
dGVyXzsKKyAgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyIHRyYW5zcG9ydF9mZWVkYmFj
a19hZGFwdGVyXzsKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gbmV0d29ya19zdGF0ZV9sb2NrXzsK
ICAgdWludDMyX3QgbGFzdF9yZXBvcnRlZF9iaXRyYXRlX2Jwc18gUlRDX0dVQVJERURfQlkobmV0
d29ya19zdGF0ZV9sb2NrXyk7CiAgIHVpbnQ4X3QgbGFzdF9yZXBvcnRlZF9mcmFjdGlvbl9sb3Nz
XyBSVENfR1VBUkRFRF9CWShuZXR3b3JrX3N0YXRlX2xvY2tfKTsKQEAgLTE0OSw2ICsxNTIsOCBA
QCBjbGFzcyBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyCiAgIGJvb2wgcGFjZXJfcGF1c2Vk
XzsKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gYndlX2xvY2tfOwogICBpbnQgbWluX2JpdHJhdGVf
YnBzXyBSVENfR1VBUkRFRF9CWShid2VfbG9ja18pOworICBzdGQ6OnVuaXF1ZV9wdHI8UHJvYmVC
aXRyYXRlRXN0aW1hdG9yPiBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8KKyAgICAgIFJUQ19HVUFS
REVEX0JZKGJ3ZV9sb2NrXyk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxEZWxheUJhc2VkQndlPiBkZWxh
eV9iYXNlZF9id2VfIFJUQ19HVUFSREVEX0JZKGJ3ZV9sb2NrXyk7CiAgIGJvb2wgaW5fY3duZF9l
eHBlcmltZW50XzsKICAgaW50NjRfdCBhY2NlcHRlZF9xdWV1ZV9tc187CkBAIC0xNjEsNyArMTY2
LDcgQEAgY2xhc3MgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcgogICBib29sIHBhY2VyX3B1
c2hiYWNrX2V4cGVyaW1lbnRfID0gZmFsc2U7CiAgIGZsb2F0IGVuY29kaW5nX3JhdGVfID0gMS4w
OwogCi0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250
cm9sbGVyPgorICBzdGQ6OnVuaXF1ZV9wdHI8Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrQ29udHJv
bGxlcj4KICAgICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfOwogCiAg
IFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoU2VuZFNpZGVDb25nZXN0aW9uQ29u
dHJvbGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9wY2MvbW9uaXRvcl9pbnRlcnZh
bC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
Y29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9tb25pdG9yX2ludGVydmFsLmNjCmluZGV4IGQ0MzBi
N2YxNzkwYTdhMzhmZWJkNDBhZGM2MTUyYTU5ZjU0NjU1NGQuLjI4MWI5MjI0ZjBjM2JlYjA1MDNm
MzUzMzYxNTdmZjA1MTA0YzQ4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9tb25p
dG9yX2ludGVydmFsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9tb25pdG9yX2ludGVydmFs
LmNjCkBAIC0zMSwyNSArMzEsMjQgQEAgUGNjTW9uaXRvckludGVydmFsOjpQY2NNb25pdG9ySW50
ZXJ2YWwoY29uc3QgUGNjTW9uaXRvckludGVydmFsJiBvdGhlcikgPQogdm9pZCBQY2NNb25pdG9y
SW50ZXJ2YWw6Ok9uUGFja2V0c0ZlZWRiYWNrKAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFBhY2tl
dFJlc3VsdD4mIHBhY2tldHNfcmVzdWx0cykgewogICBmb3IgKGNvbnN0IFBhY2tldFJlc3VsdCYg
cGFja2V0X3Jlc3VsdCA6IHBhY2tldHNfcmVzdWx0cykgewotICAgIGlmICghcGFja2V0X3Jlc3Vs
dC5zZW50X3BhY2tldC5oYXNfdmFsdWUoKSB8fAotICAgICAgICBwYWNrZXRfcmVzdWx0LnNlbnRf
cGFja2V0LT5zZW5kX3RpbWUgPD0gc3RhcnRfdGltZV8pIHsKKyAgICBpZiAocGFja2V0X3Jlc3Vs
dC5zZW50X3BhY2tldC5zZW5kX3RpbWUgPD0gc3RhcnRfdGltZV8pIHsKICAgICAgIGNvbnRpbnVl
OwogICAgIH0KICAgICAvLyBIZXJlIHdlIGFzc3VtZSB0aGF0IGlmIHNvbWUgcGFja2V0cyBhcmUg
cmVvcmRlcmVkIHdpdGggcGFja2V0cyBzZW50CiAgICAgLy8gYWZ0ZXIgdGhlIGVuZCBvZiB0aGUg
bW9uaXRvciBpbnRlcnZhbCwgdGhlbiB0aGV5IGFyZSBsb3N0LiAoT3RoZXJ3aXNlCiAgICAgLy8g
aXQgaXMgbm90IGNsZWFyIGhvdyBsb25nIHNob3VsZCB3ZSB3YWl0IGZvciBwYWNrZXRzIGZlZWRi
YWNrIHRvIGFycml2ZSkuCi0gICAgaWYgKHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQtPnNlbmRf
dGltZSA+CisgICAgaWYgKHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQuc2VuZF90aW1lID4KICAg
ICAgICAgc3RhcnRfdGltZV8gKyBpbnRlcnZhbF9kdXJhdGlvbl8pIHsKICAgICAgIGZlZWRiYWNr
X2NvbGxlY3Rpb25fZG9uZV8gPSB0cnVlOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAo
cGFja2V0X3Jlc3VsdC5yZWNlaXZlX3RpbWUuSXNJbmZpbml0ZSgpKSB7Ci0gICAgICBsb3N0X3Bh
Y2tldHNfc2VudF90aW1lXy5wdXNoX2JhY2socGFja2V0X3Jlc3VsdC5zZW50X3BhY2tldC0+c2Vu
ZF90aW1lKTsKKyAgICAgIGxvc3RfcGFja2V0c19zZW50X3RpbWVfLnB1c2hfYmFjayhwYWNrZXRf
cmVzdWx0LnNlbnRfcGFja2V0LnNlbmRfdGltZSk7CiAgICAgfSBlbHNlIHsKICAgICAgIHJlY2Vp
dmVkX3BhY2tldHNfLnB1c2hfYmFjaygKLSAgICAgICAgICB7cGFja2V0X3Jlc3VsdC5yZWNlaXZl
X3RpbWUgLSBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LT5zZW5kX3RpbWUsCi0gICAgICAgICAg
IHBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQtPnNlbmRfdGltZX0pOwotICAgICAgcmVjZWl2ZWRf
cGFja2V0c19zaXplXyArPSBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LT5zaXplOworICAgICAg
ICAgIHtwYWNrZXRfcmVzdWx0LnJlY2VpdmVfdGltZSAtIHBhY2tldF9yZXN1bHQuc2VudF9wYWNr
ZXQuc2VuZF90aW1lLAorICAgICAgICAgICBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LnNlbmRf
dGltZX0pOworICAgICAgcmVjZWl2ZWRfcGFja2V0c19zaXplXyArPSBwYWNrZXRfcmVzdWx0LnNl
bnRfcGFja2V0LnNpemU7CiAgICAgfQogICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9wY2MvcGNjX25ldHdvcmtfY29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9wY2Nf
bmV0d29ya19jb250cm9sbGVyLmNjCmluZGV4IDk4Y2RhNzQwOWJkMWZiNDIyNzE0OTQxOWMwNTI3
YThiOGIzNDQ5YjUuLjQ3YWQzM2VhYzIyN2JkMDUzMjIxNTg5MTY2ZTczNjMzYTA2ZDY2NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9wY2NfbmV0d29ya19jb250cm9sbGVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29u
Z2VzdGlvbl9jb250cm9sbGVyL3BjYy9wY2NfbmV0d29ya19jb250cm9sbGVyLmNjCkBAIC0xNDgs
NyArMTQ4LDcgQEAgTmV0d29ya0NvbnRyb2xVcGRhdGUgUGNjTmV0d29ya0NvbnRyb2xsZXI6Ok9u
U2VudFBhY2tldChTZW50UGFja2V0IG1zZykgewogICBpZiAoSXNUaW1lb3V0RXhwaXJlZChtc2cu
c2VuZF90aW1lKSkgewogICAgIERhdGFTaXplIHJlY2VpdmVkX3NpemUgPSBEYXRhU2l6ZTo6WmVy
bygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbGFzdF9yZWNlaXZlZF9wYWNrZXRzXy5z
aXplKCk7ICsraSkgewotICAgICAgcmVjZWl2ZWRfc2l6ZSArPSBsYXN0X3JlY2VpdmVkX3BhY2tl
dHNfW2ldLnNlbnRfcGFja2V0LT5zaXplOworICAgICAgcmVjZWl2ZWRfc2l6ZSArPSBsYXN0X3Jl
Y2VpdmVkX3BhY2tldHNfW2ldLnNlbnRfcGFja2V0LnNpemU7CiAgICAgfQogICAgIFRpbWVEZWx0
YSBzZW5kaW5nX3RpbWUgPSBUaW1lRGVsdGE6Olplcm8oKTsKICAgICBpZiAobGFzdF9yZWNlaXZl
ZF9wYWNrZXRzXy5zaXplKCkgPiAwKQpAQCAtMTY2LDcgKzE2Niw3IEBAIE5ldHdvcmtDb250cm9s
VXBkYXRlIFBjY05ldHdvcmtDb250cm9sbGVyOjpPblNlbnRQYWNrZXQoU2VudFBhY2tldCBtc2cp
IHsKICAgICAgIG1zZy5zZW5kX3RpbWUgLSBzdGFydF90aW1lXyA+PSBrU3RhcnR1cER1cmF0aW9u
KSB7CiAgICAgRGF0YVNpemUgcmVjZWl2ZWRfc2l6ZSA9IERhdGFTaXplOjpaZXJvKCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDE7IGkgPCBsYXN0X3JlY2VpdmVkX3BhY2tldHNfLnNpemUoKTsgKytp
KSB7Ci0gICAgICByZWNlaXZlZF9zaXplICs9IGxhc3RfcmVjZWl2ZWRfcGFja2V0c19baV0uc2Vu
dF9wYWNrZXQtPnNpemU7CisgICAgICByZWNlaXZlZF9zaXplICs9IGxhc3RfcmVjZWl2ZWRfcGFj
a2V0c19baV0uc2VudF9wYWNrZXQuc2l6ZTsKICAgICB9CiAgICAgVGltZURlbHRhIHNlbmRpbmdf
dGltZSA9IFRpbWVEZWx0YTo6WmVybygpOwogICAgIGlmIChsYXN0X3JlY2VpdmVkX3BhY2tldHNf
LnNpemUoKSA+IDApCkBAIC0yNjAsNiArMjYwLDggQEAgYm9vbCBQY2NOZXR3b3JrQ29udHJvbGxl
cjo6SXNGZWVkYmFja0NvbGxlY3Rpb25Eb25lKCkgY29uc3QgewogCiBOZXR3b3JrQ29udHJvbFVw
ZGF0ZSBQY2NOZXR3b3JrQ29udHJvbGxlcjo6T25UcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2soCiAg
ICAgVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrIG1zZykgeworICBpZiAobXNnLnBhY2tldF9mZWVk
YmFja3MuZW1wdHkoKSkKKyAgICByZXR1cm4gTmV0d29ya0NvbnRyb2xVcGRhdGUoKTsKICAgLy8g
U2F2ZSBwYWNrZXRzIHRvIGxhc3RfcmVjZWl2ZWRfcGFja2V0c18gYXJyYXkuCiAgIGZvciAoY29u
c3QgUGFja2V0UmVzdWx0JiBwYWNrZXRfcmVzdWx0IDogbXNnLlJlY2VpdmVkV2l0aFNlbmRJbmZv
KCkpIHsKICAgICBsYXN0X3JlY2VpdmVkX3BhY2tldHNfLnB1c2hfYmFjayhwYWNrZXRfcmVzdWx0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3BjYy9ydHRfdHJhY2tlci5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9j
b250cm9sbGVyL3BjYy9ydHRfdHJhY2tlci5jYwppbmRleCBhMDU0NTc1OWY5ZjEyMDhlZDkxNjFh
YWRhNGQ2YTU2ZDRmZmU1NWIxLi41MzNhNTczYTdhYzhkNGJiNDA3N2E2N2QzNzkxNjMzZDNhZTA0
ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9wY2MvcnR0X3RyYWNrZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvcGNjL3J0dF90cmFja2VyLmNjCkBAIC0yMywxMiArMjMsMTEgQEAgdm9p
ZCBSdHRUcmFja2VyOjpPblBhY2tldHNGZWVkYmFjaygKICAgICBUaW1lc3RhbXAgZmVlZGJhY2tf
cmVjZWl2ZWRfdGltZSkgewogICBUaW1lRGVsdGEgcGFja2V0X3J0dCA9IFRpbWVEZWx0YTo6TWlu
dXNJbmZpbml0eSgpOwogICBmb3IgKGNvbnN0IFBhY2tldFJlc3VsdCYgcGFja2V0X3Jlc3VsdCA6
IHBhY2tldF9mZWVkYmFja3MpIHsKLSAgICBpZiAoIXBhY2tldF9yZXN1bHQuc2VudF9wYWNrZXQu
aGFzX3ZhbHVlKCkgfHwKLSAgICAgICAgcGFja2V0X3Jlc3VsdC5yZWNlaXZlX3RpbWUuSXNJbmZp
bml0ZSgpKQorICAgIGlmIChwYWNrZXRfcmVzdWx0LnJlY2VpdmVfdGltZS5Jc0luZmluaXRlKCkp
CiAgICAgICBjb250aW51ZTsKICAgICBwYWNrZXRfcnR0ID0gc3RkOjptYXg8VGltZURlbHRhPigK
ICAgICAgICAgcGFja2V0X3J0dCwKLSAgICAgICAgZmVlZGJhY2tfcmVjZWl2ZWRfdGltZSAtIHBh
Y2tldF9yZXN1bHQuc2VudF9wYWNrZXQtPnNlbmRfdGltZSk7CisgICAgICAgIGZlZWRiYWNrX3Jl
Y2VpdmVkX3RpbWUgLSBwYWNrZXRfcmVzdWx0LnNlbnRfcGFja2V0LnNlbmRfdGltZSk7CiAgIH0K
ICAgaWYgKHBhY2tldF9ydHQuSXNGaW5pdGUoKSkKICAgICBydHRfZXN0aW1hdGVfID0gKDEgLSBh
bHBoYV8pICogcnR0X2VzdGltYXRlXyArIGFscGhhXyAqIHBhY2tldF9ydHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9ydHAvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvQlVJTEQu
Z24KaW5kZXggMTM0ZmI5NDBmZGQ2NTI4ZTY1YmEzMzJkODI5NGIxNzVkMTA3NDU0Mi4uYmZmZTFm
ODkzZWI1NGJhNWJhY2RjOTgwNTQ1YmE1OGNjYThkNjc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvcnRwL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9CVUlMRC5nbgpAQCAt
MjEsOCArMjEsNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoImNvbmdlc3Rpb25fY29udHJvbGxlciIp
IHsKICAgY29uZmlncyArPSBbICI6YndlX3Rlc3RfbG9nZ2luZyIgXQogICBzb3VyY2VzID0gWwog
ICAgICJpbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaCIsCi0gICAgInBh
Y2VyX2NvbnRyb2xsZXIuY2MiLAotICAgICJwYWNlcl9jb250cm9sbGVyLmgiLAogICAgICJzZW5k
X3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjIiwKICAgXQogCkBAIC0zMiwxMCArMzAsMTIg
QEAgcnRjX3N0YXRpY19saWJyYXJ5KCJjb25nZXN0aW9uX2NvbnRyb2xsZXIiKSB7CiAgIH0KIAog
ICBkZXBzID0gWworICAgICI6Y29udHJvbF9oYW5kbGVyIiwKICAgICAiOnRyYW5zcG9ydF9mZWVk
YmFjayIsCiAgICAgIi4uLzpjb25nZXN0aW9uX2NvbnRyb2xsZXIiLAogICAgICIuLi8uLjptb2R1
bGVfYXBpIiwKICAgICAiLi4vLi4vLi46d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uLy4uL2Fw
aS90cmFuc3BvcnQ6Z29vZ19jYyIsCiAgICAgIi4uLy4uLy4uL2FwaS90cmFuc3BvcnQ6bmV0d29y
a19jb250cm9sIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4v
Li4vcnRjX2Jhc2U6cmF0ZV9saW1pdGVyIiwKQEAgLTQzLDEyICs0MywxMiBAQCBydGNfc3RhdGlj
X2xpYnJhcnkoImNvbmdlc3Rpb25fY29udHJvbGxlciIpIHsKICAgICAiLi4vLi4vLi4vcnRjX2Jh
c2U6c2FmZV9taW5tYXgiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpzZXF1ZW5jZWRfdGFza19j
aGVja2VyIiwKICAgICAiLi4vLi4vLi4vcnRjX2Jhc2UvZXhwZXJpbWVudHM6Y29uZ2VzdGlvbl9j
b250cm9sbGVyX2V4cGVyaW1lbnQiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9uZXR3b3JrOnNl
bnRfcGFja2V0IiwKICAgICAiLi4vLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAiLi4vLi4v
Li4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAiLi4vLi4vcGFjaW5nIiwKICAg
ICAiLi4vLi4vcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yIiwKICAgICAiLi4vLi4vcnRwX3J0Y3A6
cnRwX3J0Y3BfZm9ybWF0IiwKLSAgICAiLi4vZ29vZ19jYyIsCiAgICAgIi8vdGhpcmRfcGFydHkv
YWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCiAgIF0KIApAQCAtNTcsNiArNTcsMzggQEAgcnRjX3N0
YXRpY19saWJyYXJ5KCJjb25nZXN0aW9uX2NvbnRyb2xsZXIiKSB7CiAgIH0KIH0KIAorcnRjX3Nv
dXJjZV9zZXQoImNvbnRyb2xfaGFuZGxlciIpIHsKKyAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAg
c291cmNlcyA9IFsKKyAgICAiY29udHJvbF9oYW5kbGVyLmNjIiwKKyAgICAiY29udHJvbF9oYW5k
bGVyLmgiLAorICBdCisKKyAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7
CisgICAgIyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4g
KGJ1Z3Mud2VicnRjLm9yZy8xNjMpLgorICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1
aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCisgIH0KKworICBkZXBzID0g
WworICAgICIuLi86Y29uZ2VzdGlvbl9jb250cm9sbGVyIiwKKyAgICAiLi4vLi4vLi4vYXBpL3Ry
YW5zcG9ydDpuZXR3b3JrX2NvbnRyb2wiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZTpjaGVja3Mi
LAorICAgICIuLi8uLi8uLi9ydGNfYmFzZTpyYXRlX2xpbWl0ZXIiLAorICAgICIuLi8uLi8uLi9y
dGNfYmFzZTpzYWZlX21pbm1heCIsCisgICAgIi4uLy4uLy4uL3J0Y19iYXNlOnNlcXVlbmNlZF90
YXNrX2NoZWNrZXIiLAorICAgICIuLi8uLi8uLi9ydGNfYmFzZS9leHBlcmltZW50czpjb25nZXN0
aW9uX2NvbnRyb2xsZXJfZXhwZXJpbWVudCIsCisgICAgIi4uLy4uLy4uL3N5c3RlbV93cmFwcGVy
cyIsCisgICAgIi4uLy4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCisgICAgIi4u
Ly4uL3BhY2luZyIsCisgICAgIi4uLy4uL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvciIsCisgICAg
Ii4uLy4uL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgIF0KKworICBpZiAoIWJ1aWxkX3dpdGhfbW96aWxsYSkg
eworICAgIGRlcHMgKz0gWyAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiIF0KKyAgfQorfQog
cnRjX3N0YXRpY19saWJyYXJ5KCJ0cmFuc3BvcnRfZmVlZGJhY2siKSB7CiAgIHZpc2liaWxpdHkg
PSBbICIqIiBdCiAgIHNvdXJjZXMgPSBbCkBAIC02OSw4ICsxMDEsMTAgQEAgcnRjX3N0YXRpY19s
aWJyYXJ5KCJ0cmFuc3BvcnRfZmVlZGJhY2siKSB7CiAgIGRlcHMgPSBbCiAgICAgIi4uLy4uOm1v
ZHVsZV9hcGkiLAogICAgICIuLi8uLi8uLi9hcGkvdHJhbnNwb3J0Om5ldHdvcmtfY29udHJvbCIs
CisgICAgIi4uLy4uLy4uL2FwaS91bml0czpkYXRhX3NpemUiLAogICAgICIuLi8uLi8uLi9ydGNf
YmFzZTpjaGVja3MiLAogICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIs
CisgICAgIi4uLy4uLy4uL3J0Y19iYXNlL25ldHdvcms6c2VudF9wYWNrZXQiLAogICAgICIuLi8u
Li8uLi9zeXN0ZW1fd3JhcHBlcnMiLAogICAgICIuLi8uLi9ydHBfcnRjcDpydHBfcnRjcF9mb3Jt
YXQiLAogICBdCkBAIC05Nyw3ICsxMzEsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAg
ICAgICIuLi8uLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICAgIi4uLy4uLy4uL3J0Y19iYXNl
OnJ0Y19iYXNlIiwKICAgICAgICIuLi8uLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIs
Ci0gICAgICAiLi4vLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAorICAgICAg
Ii4uLy4uLy4uL3J0Y19iYXNlL25ldHdvcms6c2VudF9wYWNrZXQiLAogICAgICAgIi4uLy4uLy4u
L3N5c3RlbV93cmFwcGVycyIsCiAgICAgICAiLi4vLi4vLi4vdGVzdDpmaWVsZF90cmlhbCIsCiAg
ICAgICAiLi4vLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9jb250cm9s
X2hhbmRsZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZjYWRiNzIwZTljMGIxY2NhNWEyNmY1ZTIyMzI1Zjk0
N2U1ZDY5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9jb250cm9sX2hh
bmRsZXIuY2MKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
CisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5j
bHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5o
IgorCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCisjaW5j
bHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKKworbmFtZXNwYWNl
IHdlYnJ0YyB7CituYW1lc3BhY2UgeworCisvLyBXaGVuIFBhY2VyUHVzaGJhY2tFeHBlcmltZW50
IGlzIGVuYWJsZWQsIGJ1aWxkLXVwIGluIHRoZSBwYWNlciBkdWUgdG8KKy8vIHRoZSBjb25nZXN0
aW9uIHdpbmRvdyBhbmQvb3IgZGF0YSBzcGlrZXMgcmVkdWNlcyBlbmNvZGVyIGFsbG9jYXRpb25z
LgorYm9vbCBJc1BhY2VyUHVzaGJhY2tFeHBlcmltZW50RW5hYmxlZCgpIHsKKyAgcmV0dXJuIGZp
ZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1QYWNlclB1c2hiYWNrRXhwZXJpbWVudCIpOwor
fQorCisvLyBCeSBkZWZhdWx0LCBwYWNlciBlbWVyZ2VuY3kgc3RvcHMgZW5jb2RlciB3aGVuIGJ1
ZmZlciByZWFjaGVzIGEgaGlnaCBsZXZlbC4KK2Jvb2wgSXNQYWNlckVtZXJnZW5jeVN0b3BEaXNh
YmxlZCgpIHsKKyAgcmV0dXJuIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1EaXNhYmxl
UGFjZXJFbWVyZ2VuY3lTdG9wIik7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorQ29uZ2VzdGlvbkNv
bnRyb2xIYW5kbGVyOjpDb25nZXN0aW9uQ29udHJvbEhhbmRsZXIoCisgICAgTmV0d29ya0NoYW5n
ZWRPYnNlcnZlciogb2JzZXJ2ZXIsCisgICAgUGFjZWRTZW5kZXIqIHBhY2VyKQorICAgIDogb2Jz
ZXJ2ZXJfKG9ic2VydmVyKSwKKyAgICAgIHBhY2VyXyhwYWNlciksCisgICAgICBwYWNlcl9wdXNo
YmFja19leHBlcmltZW50XyhJc1BhY2VyUHVzaGJhY2tFeHBlcmltZW50RW5hYmxlZCgpKSwKKyAg
ICAgIGRpc2FibGVfcGFjZXJfZW1lcmdlbmN5X3N0b3BfKElzUGFjZXJFbWVyZ2VuY3lTdG9wRGlz
YWJsZWQoKSkgeworICBzZXF1ZW5jZWRfY2hlY2tlcl8uRGV0YWNoKCk7Cit9CisKK0Nvbmdlc3Rp
b25Db250cm9sSGFuZGxlcjo6fkNvbmdlc3Rpb25Db250cm9sSGFuZGxlcigpIHt9CisKK3ZvaWQg
Q29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyOjpQb3N0VXBkYXRlcyhOZXR3b3JrQ29udHJvbFVwZGF0
ZSB1cGRhdGUpIHsKKyAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRf
Y2hlY2tlcl8pOworICBpZiAodXBkYXRlLmNvbmdlc3Rpb25fd2luZG93KSB7CisgICAgaWYgKHVw
ZGF0ZS5jb25nZXN0aW9uX3dpbmRvdy0+SXNGaW5pdGUoKSkKKyAgICAgIHBhY2VyXy0+U2V0Q29u
Z2VzdGlvbldpbmRvdyh1cGRhdGUuY29uZ2VzdGlvbl93aW5kb3ctPmJ5dGVzKCkpOworICAgIGVs
c2UKKyAgICAgIHBhY2VyXy0+U2V0Q29uZ2VzdGlvbldpbmRvdyhQYWNlZFNlbmRlcjo6a05vQ29u
Z2VzdGlvbldpbmRvdyk7CisgIH0KKyAgaWYgKHVwZGF0ZS5wYWNlcl9jb25maWcpIHsKKyAgICBw
YWNlcl8tPlNldFBhY2luZ1JhdGVzKHVwZGF0ZS5wYWNlcl9jb25maWctPmRhdGFfcmF0ZSgpLmJw
cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlLnBhY2VyX2NvbmZpZy0+cGFk
X3JhdGUoKS5icHMoKSk7CisgIH0KKyAgZm9yIChjb25zdCBhdXRvJiBwcm9iZSA6IHVwZGF0ZS5w
cm9iZV9jbHVzdGVyX2NvbmZpZ3MpIHsKKyAgICBpbnQ2NF90IGJpdHJhdGVfYnBzID0gcHJvYmUu
dGFyZ2V0X2RhdGFfcmF0ZS5icHMoKTsKKyAgICBwYWNlcl8tPkNyZWF0ZVByb2JlQ2x1c3Rlcihi
aXRyYXRlX2Jwcyk7CisgIH0KKyAgaWYgKHVwZGF0ZS50YXJnZXRfcmF0ZSkgeworICAgIGN1cnJl
bnRfdGFyZ2V0X3JhdGVfbXNnXyA9ICp1cGRhdGUudGFyZ2V0X3JhdGU7CisgICAgT25OZXR3b3Jr
SW52YWxpZGF0aW9uKCk7CisgIH0KK30KKwordm9pZCBDb25nZXN0aW9uQ29udHJvbEhhbmRsZXI6
Ok9uTmV0d29ya0F2YWlsYWJpbGl0eShOZXR3b3JrQXZhaWxhYmlsaXR5IG1zZykgeworICBSVENf
RENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7CisgIGlmIChu
ZXR3b3JrX2F2YWlsYWJsZV8gIT0gbXNnLm5ldHdvcmtfYXZhaWxhYmxlKSB7CisgICAgbmV0d29y
a19hdmFpbGFibGVfID0gbXNnLm5ldHdvcmtfYXZhaWxhYmxlOworICAgIHBhY2VyXy0+VXBkYXRl
T3V0c3RhbmRpbmdEYXRhKDApOworICAgIFNldFBhY2VyU3RhdGUoIW1zZy5uZXR3b3JrX2F2YWls
YWJsZSk7CisgICAgT25OZXR3b3JrSW52YWxpZGF0aW9uKCk7CisgIH0KK30KKwordm9pZCBDb25n
ZXN0aW9uQ29udHJvbEhhbmRsZXI6Ok9uT3V0c3RhbmRpbmdEYXRhKERhdGFTaXplIGluX2ZsaWdo
dF9kYXRhKSB7CisgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2No
ZWNrZXJfKTsKKyAgcGFjZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoaW5fZmxpZ2h0X2RhdGEu
Ynl0ZXMoKSk7CisgIE9uTmV0d29ya0ludmFsaWRhdGlvbigpOworfQorCit2b2lkIENvbmdlc3Rp
b25Db250cm9sSGFuZGxlcjo6T25QYWNlclF1ZXVlVXBkYXRlKAorICAgIFRpbWVEZWx0YSBleHBl
Y3RlZF9xdWV1ZV90aW1lKSB7CisgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2Vx
dWVuY2VkX2NoZWNrZXJfKTsKKyAgcGFjZXJfZXhwZWN0ZWRfcXVldWVfbXNfID0gZXhwZWN0ZWRf
cXVldWVfdGltZS5tcygpOworICBPbk5ldHdvcmtJbnZhbGlkYXRpb24oKTsKK30KKwordm9pZCBD
b25nZXN0aW9uQ29udHJvbEhhbmRsZXI6OlNldFBhY2VyU3RhdGUoYm9vbCBwYXVzZWQpIHsKKyAg
aWYgKHBhdXNlZCAmJiAhcGFjZXJfcGF1c2VkXykKKyAgICBwYWNlcl8tPlBhdXNlKCk7CisgIGVs
c2UgaWYgKCFwYXVzZWQgJiYgcGFjZXJfcGF1c2VkXykKKyAgICBwYWNlcl8tPlJlc3VtZSgpOwor
ICBwYWNlcl9wYXVzZWRfID0gcGF1c2VkOworfQorCit2b2lkIENvbmdlc3Rpb25Db250cm9sSGFu
ZGxlcjo6T25OZXR3b3JrSW52YWxpZGF0aW9uKCkgeworICBpZiAoIWN1cnJlbnRfdGFyZ2V0X3Jh
dGVfbXNnXy5oYXNfdmFsdWUoKSkKKyAgICByZXR1cm47CisKKyAgdWludDMyX3QgdGFyZ2V0X2Jp
dHJhdGVfYnBzID0gY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfLT50YXJnZXRfcmF0ZS5icHMoKTsK
KyAgaW50NjRfdCBydHRfbXMgPQorICAgICAgY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfLT5uZXR3
b3JrX2VzdGltYXRlLnJvdW5kX3RyaXBfdGltZS5tcygpOworICBmbG9hdCBsb3NzX3JhdGVfcmF0
aW8gPQorICAgICAgY3VycmVudF90YXJnZXRfcmF0ZV9tc2dfLT5uZXR3b3JrX2VzdGltYXRlLmxv
c3NfcmF0ZV9yYXRpbzsKKworICBpbnQgbG9zc19yYXRpb18yNTUgPSBsb3NzX3JhdGVfcmF0aW8g
KiAyNTU7CisgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcyA9CisgICAgICBydGM6OmRjaGVja2VkX2Nh
c3Q8dWludDhfdD4ocnRjOjpTYWZlQ2xhbXAobG9zc19yYXRpb18yNTUsIDAsIDI1NSkpOworCisg
IGludDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcyA9CisgICAgICBjdXJyZW50X3RhcmdldF9yYXRl
X21zZ18tPm5ldHdvcmtfZXN0aW1hdGUuYndlX3BlcmlvZC5tcygpOworCisgIGlmICghbmV0d29y
a19hdmFpbGFibGVfKSB7CisgICAgdGFyZ2V0X2JpdHJhdGVfYnBzID0gMDsKKyAgfSBlbHNlIGlm
IChwYWNlcl9wdXNoYmFja19leHBlcmltZW50XykgeworICAgIGludDY0X3QgcXVldWVfbGVuZ3Ro
X21zID0gcGFjZXJfZXhwZWN0ZWRfcXVldWVfbXNfOworCisgICAgaWYgKHF1ZXVlX2xlbmd0aF9t
cyA9PSAwKSB7CisgICAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyA9IDEuMDsKKyAgICB9IGVsc2Ug
aWYgKHF1ZXVlX2xlbmd0aF9tcyA+IDUwKSB7CisgICAgICBkb3VibGUgZW5jb2RpbmdfcmF0aW8g
PSAxLjAgLSBxdWV1ZV9sZW5ndGhfbXMgLyAxMDAwLjA7CisgICAgICBlbmNvZGluZ19yYXRlX3Jh
dGlvXyA9IHN0ZDo6bWluKGVuY29kaW5nX3JhdGVfcmF0aW9fLCBlbmNvZGluZ19yYXRpbyk7Cisg
ICAgICBlbmNvZGluZ19yYXRlX3JhdGlvXyA9IHN0ZDo6bWF4KGVuY29kaW5nX3JhdGVfcmF0aW9f
LCAwLjApOworICAgIH0KKworICAgIHRhcmdldF9iaXRyYXRlX2JwcyAqPSBlbmNvZGluZ19yYXRl
X3JhdGlvXzsKKyAgICB0YXJnZXRfYml0cmF0ZV9icHMgPSB0YXJnZXRfYml0cmF0ZV9icHMgPCA1
MDAwMCA/IDAgOiB0YXJnZXRfYml0cmF0ZV9icHM7CisgIH0gZWxzZSBpZiAoIWRpc2FibGVfcGFj
ZXJfZW1lcmdlbmN5X3N0b3BfKSB7CisgICAgdGFyZ2V0X2JpdHJhdGVfYnBzID0gSXNTZW5kUXVl
dWVGdWxsKCkgPyAwIDogdGFyZ2V0X2JpdHJhdGVfYnBzOworICB9CisKKyAgaWYgKEhhc05ldHdv
cmtQYXJhbWV0ZXJzVG9SZXBvcnRDaGFuZ2VkKHRhcmdldF9iaXRyYXRlX2JwcywgZnJhY3Rpb25f
bG9zcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0dF9tcykp
IHsKKyAgICBvYnNlcnZlcl8tPk9uTmV0d29ya0NoYW5nZWQodGFyZ2V0X2JpdHJhdGVfYnBzLCBm
cmFjdGlvbl9sb3NzLCBydHRfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2JpbmdfaW50ZXJ2YWxfbXMpOworICB9Cit9Citib29sIENvbmdlc3Rpb25Db250cm9sSGFuZGxl
cjo6SGFzTmV0d29ya1BhcmFtZXRlcnNUb1JlcG9ydENoYW5nZWQoCisgICAgaW50NjRfdCB0YXJn
ZXRfYml0cmF0ZV9icHMsCisgICAgdWludDhfdCBmcmFjdGlvbl9sb3NzLAorICAgIGludDY0X3Qg
cnR0X21zKSB7CisgIGJvb2wgY2hhbmdlZCA9IGxhc3RfcmVwb3J0ZWRfdGFyZ2V0X2JpdHJhdGVf
YnBzXyAhPSB0YXJnZXRfYml0cmF0ZV9icHMgfHwKKyAgICAgICAgICAgICAgICAgKHRhcmdldF9i
aXRyYXRlX2JwcyA+IDAgJiYKKyAgICAgICAgICAgICAgICAgIChsYXN0X3JlcG9ydGVkX2ZyYWN0
aW9uX2xvc3NfICE9IGZyYWN0aW9uX2xvc3MgfHwKKyAgICAgICAgICAgICAgICAgICBsYXN0X3Jl
cG9ydGVkX3J0dF9tc18gIT0gcnR0X21zKSk7CisgIGlmIChjaGFuZ2VkICYmCisgICAgICAobGFz
dF9yZXBvcnRlZF90YXJnZXRfYml0cmF0ZV9icHNfID09IDAgfHwgdGFyZ2V0X2JpdHJhdGVfYnBz
ID09IDApKSB7CisgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQml0cmF0ZSBlc3RpbWF0ZSBzdGF0
ZSBjaGFuZ2VkLCBCV0U6ICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IHRhcmdldF9iaXRyYXRl
X2JwcyA8PCAiIGJwcy4iOworICB9CisgIGxhc3RfcmVwb3J0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBz
XyA9IHRhcmdldF9iaXRyYXRlX2JwczsKKyAgbGFzdF9yZXBvcnRlZF9mcmFjdGlvbl9sb3NzXyA9
IGZyYWN0aW9uX2xvc3M7CisgIGxhc3RfcmVwb3J0ZWRfcnR0X21zXyA9IHJ0dF9tczsKKyAgcmV0
dXJuIGNoYW5nZWQ7Cit9CisKK2Jvb2wgQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyOjpJc1NlbmRR
dWV1ZUZ1bGwoKSBjb25zdCB7CisgIHJldHVybiBwYWNlcl9leHBlY3RlZF9xdWV1ZV9tc18gPiBQ
YWNlZFNlbmRlcjo6a01heFF1ZXVlTGVuZ3RoTXM7Cit9CisKK2Fic2w6Om9wdGlvbmFsPFRhcmdl
dFRyYW5zZmVyUmF0ZT4KK0Nvbmdlc3Rpb25Db250cm9sSGFuZGxlcjo6bGFzdF90cmFuc2Zlcl9y
YXRlKCkgeworICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNlcXVlbmNlZF9jaGVj
a2VyXyk7CisgIHJldHVybiBjdXJyZW50X3RhcmdldF9yYXRlX21zZ187Cit9CisKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9jb250cm9sX2hh
bmRsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9jb250cm9sX2hhbmRsZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NTZjMmE5ZTI3MTI4NDA2ZjViYjgwNDBhNTZkZDQ0Y2Q4OTA1NjAwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9j
b25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL2NvbnRyb2xfaGFuZGxlci5oCkBAIC0wLDAgKzEsNzIg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIE1PRFVMRVNfQ09OR0VTVElPTl9D
T05UUk9MTEVSX1JUUF9DT05UUk9MX0hBTkRMRVJfSF8KKyNkZWZpbmUgTU9EVUxFU19DT05HRVNU
SU9OX0NPTlRST0xMRVJfUlRQX0NPTlRST0xfSEFORExFUl9IXworCisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPG1lbW9yeT4KKworI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29y
a19jb250cm9sLmgiCisjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvaW5j
bHVkZS9uZXR3b3JrX2NoYW5nZWRfb2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3BhY2lu
Zy9wYWNlZF9zZW5kZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVj
a2VyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworLy8gVGhpcyBpcyB1c2VkIHRvIG9ic2VydmUg
dGhlIG5ldHdvcmsgY29udHJvbGxlciBzdGF0ZSBhbmQgcm91dGUgY2FsbHMgdG8KKy8vIHRoZSBw
cm9wZXIgaGFuZGxlci4gSXQgYWxzbyBrZWVwcyBjYWNoZWQgdmFsdWVzIGZvciBzYWZlIGFzeW5j
aHJvbm91cyB1c2UuCisvLyBUaGlzIG1ha2VzIHN1cmUgdGhhdCB0aGluZ3MgcnVubmluZyBvbiB0
aGUgd29ya2VyIHF1ZXVlIGNhbid0IGFjY2VzcyBzdGF0ZQorLy8gaW4gU2VuZFNpZGVDb25nZXN0
aW9uQ29udHJvbGxlciwgd2hpY2ggd291bGQgcmlzayBjYXVzaW5nIGRhdGEgcmFjZSBvbgorLy8g
ZGVzdHJ1Y3Rpb24gdW5sZXNzIG1lbWJlcnMgYXJlIHByb3Blcmx5IG9yZGVyZWQuCitjbGFzcyBD
b25nZXN0aW9uQ29udHJvbEhhbmRsZXIgeworIHB1YmxpYzoKKyAgQ29uZ2VzdGlvbkNvbnRyb2xI
YW5kbGVyKE5ldHdvcmtDaGFuZ2VkT2JzZXJ2ZXIqIG9ic2VydmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFjZWRTZW5kZXIqIHBhY2VyKTsKKyAgfkNvbmdlc3Rpb25Db250cm9sSGFu
ZGxlcigpOworCisgIHZvaWQgUG9zdFVwZGF0ZXMoTmV0d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRl
KTsKKworICB2b2lkIE9uTmV0d29ya0F2YWlsYWJpbGl0eShOZXR3b3JrQXZhaWxhYmlsaXR5IG1z
Zyk7CisgIHZvaWQgT25PdXRzdGFuZGluZ0RhdGEoRGF0YVNpemUgaW5fZmxpZ2h0X2RhdGEpOwor
ICB2b2lkIE9uUGFjZXJRdWV1ZVVwZGF0ZShUaW1lRGVsdGEgZXhwZWN0ZWRfcXVldWVfdGltZSk7
CisKKyAgYWJzbDo6b3B0aW9uYWw8VGFyZ2V0VHJhbnNmZXJSYXRlPiBsYXN0X3RyYW5zZmVyX3Jh
dGUoKTsKKworIHByaXZhdGU6CisgIHZvaWQgU2V0UGFjZXJTdGF0ZShib29sIHBhdXNlZCk7Cisg
IHZvaWQgT25OZXR3b3JrSW52YWxpZGF0aW9uKCk7CisgIGJvb2wgSXNTZW5kUXVldWVGdWxsKCkg
Y29uc3Q7CisgIGJvb2wgSGFzTmV0d29ya1BhcmFtZXRlcnNUb1JlcG9ydENoYW5nZWQoaW50NjRf
dCBiaXRyYXRlX2JwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBsb3NzX3JhdGVfcmF0aW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGltZURlbHRhIHJ0dCk7CisKKyAgYm9vbCBIYXNOZXR3b3JrUGFyYW1ldGVy
c1RvUmVwb3J0Q2hhbmdlZChpbnQ2NF90IGJpdHJhdGVfYnBzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJ0dCk7CisgIE5ldHdv
cmtDaGFuZ2VkT2JzZXJ2ZXIqIG9ic2VydmVyXyA9IG51bGxwdHI7CisgIFBhY2VkU2VuZGVyKiBj
b25zdCBwYWNlcl87CisKKyAgYWJzbDo6b3B0aW9uYWw8VGFyZ2V0VHJhbnNmZXJSYXRlPiBjdXJy
ZW50X3RhcmdldF9yYXRlX21zZ187CisgIGJvb2wgbmV0d29ya19hdmFpbGFibGVfID0gdHJ1ZTsK
KyAgYm9vbCBwYWNlcl9wYXVzZWRfID0gZmFsc2U7CisgIGludDY0X3QgbGFzdF9yZXBvcnRlZF90
YXJnZXRfYml0cmF0ZV9icHNfID0gMDsKKyAgdWludDhfdCBsYXN0X3JlcG9ydGVkX2ZyYWN0aW9u
X2xvc3NfID0gMDsKKyAgaW50NjRfdCBsYXN0X3JlcG9ydGVkX3J0dF9tc18gPSAwOworICBjb25z
dCBib29sIHBhY2VyX3B1c2hiYWNrX2V4cGVyaW1lbnRfOworICBjb25zdCBib29sIGRpc2FibGVf
cGFjZXJfZW1lcmdlbmN5X3N0b3BfOworICB1aW50MzJfdCBtaW5fcHVzaGJhY2tfdGFyZ2V0X2Jp
dHJhdGVfYnBzXzsKKyAgaW50NjRfdCBwYWNlcl9leHBlY3RlZF9xdWV1ZV9tc18gPSAwOworICBk
b3VibGUgZW5jb2RpbmdfcmF0ZV9yYXRpb18gPSAxLjA7CisKKyAgcnRjOjpTZXF1ZW5jZWRUYXNr
Q2hlY2tlciBzZXF1ZW5jZWRfY2hlY2tlcl87CisgIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05T
VFJVQ1RPUlMoQ29uZ2VzdGlvbkNvbnRyb2xIYW5kbGVyKTsKK307Cit9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCisjZW5kaWYgIC8vIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX1JUUF9DT05U
Uk9MX0hBTkRMRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9pbmNsdWRlL3Nl
bmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9pbmNs
dWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaAppbmRleCBlZmU0ZDJmZjQ3NzU2
YjQ0MWY1MmQ2NGYxNDliZjhhMmVjYWMyODU0Li41NTQ2NWNiNzVmODhmNjk1Y2VjOTg2Njk3ZGZl
YmRkZWI5MTFmMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvaW5jbHVkZS9zZW5k
X3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL2lu
Y2x1ZGUvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5oCkBAIC0yMSw3ICsyMSw3IEBA
CiAjaW5jbHVkZSAiYXBpL3RyYW5zcG9ydC9uZXR3b3JrX3R5cGVzLmgiCiAjaW5jbHVkZSAiY29t
bW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9pbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRy
b2xsZXJfaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvcnRwL3BhY2VyX2NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9ydHAvY29udHJvbF9oYW5kbGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25n
ZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVk
ZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCkBAIC00MCwxOCArNDAsMTEgQEAgc3RydWN0IFNlbnRQ
YWNrZXQ7CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgQ2xvY2s7Ci1jbGFzcyBSYXRlTGlt
aXRlcjsKIGNsYXNzIFJ0Y0V2ZW50TG9nOwogCiBuYW1lc3BhY2Ugd2VicnRjX2NjIHsKIAogbmFt
ZXNwYWNlIHNlbmRfc2lkZV9jY19pbnRlcm5hbCB7Ci0vLyBUaGlzIGlzIHVzZWQgdG8gb2JzZXJ2
ZSB0aGUgbmV0d29yayBjb250cm9sbGVyIHN0YXRlIGFuZCByb3V0ZSBjYWxscyB0bwotLy8gdGhl
IHByb3BlciBoYW5kbGVyLiBJdCBhbHNvIGtlZXBzIGNhY2hlZCB2YWx1ZXMgZm9yIHNhZmUgYXN5
bmNocm9ub3VzIHVzZS4KLS8vIFRoaXMgbWFrZXMgc3VyZSB0aGF0IHRoaW5ncyBydW5uaW5nIG9u
IHRoZSB3b3JrZXIgcXVldWUgY2FuJ3QgYWNjZXNzIHN0YXRlCi0vLyBpbiBTZW5kU2lkZUNvbmdl
c3Rpb25Db250cm9sbGVyLCB3aGljaCB3b3VsZCByaXNrIGNhdXNpbmcgZGF0YSByYWNlIG9uCi0v
LyBkZXN0cnVjdGlvbiB1bmxlc3MgbWVtYmVycyBhcmUgcHJvcGVybHkgb3JkZXJlZC4KLWNsYXNz
IENvbnRyb2xIYW5kbGVyOwogCiAvLyBUT0RPKHNydGUpOiBNYWtlIHN1cmUgdGhlIFBlcmlvZGlj
VGFzayBpbXBsZW1lbnRhdGlvbiBpcyByZXVzYWJsZSBhbmQgbW92ZSBpdAogLy8gdG8gdGFza19x
dWV1ZS5oLgpAQCAtMTgyLDEwICsxNzUsNyBAQCBjbGFzcyBTZW5kU2lkZUNvbmdlc3Rpb25Db250
cm9sbGVyCiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckZhY3RvcnlJ
bnRlcmZhY2U+CiAgICAgICBjb250cm9sbGVyX2ZhY3RvcnlfZmFsbGJhY2tfIFJUQ19HVUFSREVE
X0JZKHRhc2tfcXVldWVfKTsKIAotICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UGFjZXJDb250cm9s
bGVyPiBwYWNlcl9jb250cm9sbGVyXwotICAgICAgUlRDX0dVQVJERURfQlkodGFza19xdWV1ZV8p
OwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxzZW5kX3NpZGVfY2NfaW50ZXJuYWw6OkNvbnRyb2xIYW5k
bGVyPiBjb250cm9sX2hhbmRsZXJfCisgIHN0ZDo6dW5pcXVlX3B0cjxDb25nZXN0aW9uQ29udHJv
bEhhbmRsZXI+IGNvbnRyb2xfaGFuZGxlcl8KICAgICAgIFJUQ19HVUFSREVEX0JZKHRhc2tfcXVl
dWVfKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NvbnRyb2xsZXJJbnRlcmZhY2U+IGNv
bnRyb2xsZXJfCkBAIC0yMDEsNiArMTkxLDcgQEAgY2xhc3MgU2VuZFNpZGVDb25nZXN0aW9uQ29u
dHJvbGxlcgogICBOZXR3b3JrQ29udHJvbGxlckNvbmZpZyBpbml0aWFsX2NvbmZpZ18gUlRDX0dV
QVJERURfQlkodGFza19xdWV1ZV8pOwogICBTdHJlYW1zQ29uZmlnIHN0cmVhbXNfY29uZmlnXyBS
VENfR1VBUkRFRF9CWSh0YXNrX3F1ZXVlXyk7CiAKKyAgY29uc3QgYm9vbCByZXNldF9mZWVkYmFj
a19vbl9yb3V0ZV9jaGFuZ2VfOwogICBjb25zdCBib29sIHNlbmRfc2lkZV9id2Vfd2l0aF9vdmVy
aGVhZF87CiAgIC8vIFRyYW5zcG9ydCBvdmVyaGVhZCBpcyB3cml0dGVuIGJ5IE9uTmV0d29ya1Jv
dXRlQ2hhbmdlZCBhbmQgcmVhZCBieQogICAvLyBBZGRQYWNrZXQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9ydHAvcGFjZXJfY29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9w
YWNlcl9jb250cm9sbGVyLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjA2MmU4
ODFlZWVmMjA4MDBiZTAwNzdiY2M5Nzc0MzMzMzdjZDU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9wYWNlcl9jb250cm9s
bGVyLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
KGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
ICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvcGFjZXJf
Y29udHJvbGxlci5oIgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotUGFjZXJDb250cm9s
bGVyOjpQYWNlckNvbnRyb2xsZXIoUGFjZWRTZW5kZXIqIHBhY2VyKSA6IHBhY2VyXyhwYWNlcikg
ewotICBzZXF1ZW5jZWRfY2hlY2tlcl8uRGV0YWNoKCk7Ci19Ci0KLVBhY2VyQ29udHJvbGxlcjo6
flBhY2VyQ29udHJvbGxlcigpID0gZGVmYXVsdDsKLQotdm9pZCBQYWNlckNvbnRyb2xsZXI6Ok9u
Q29uZ2VzdGlvbldpbmRvdyhEYXRhU2l6ZSBjb25nZXN0aW9uX3dpbmRvdykgewotICBSVENfRENI
RUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNlcXVlbmNlZF9jaGVja2VyXyk7Ci0gIGlmIChjb25n
ZXN0aW9uX3dpbmRvdy5Jc0Zpbml0ZSgpKQotICAgIHBhY2VyXy0+U2V0Q29uZ2VzdGlvbldpbmRv
dyhjb25nZXN0aW9uX3dpbmRvdy5ieXRlcygpKTsKLSAgZWxzZQotICAgIHBhY2VyXy0+U2V0Q29u
Z2VzdGlvbldpbmRvdyhQYWNlZFNlbmRlcjo6a05vQ29uZ2VzdGlvbldpbmRvdyk7Ci19Ci0KLXZv
aWQgUGFjZXJDb250cm9sbGVyOjpPbk5ldHdvcmtBdmFpbGFiaWxpdHkoTmV0d29ya0F2YWlsYWJp
bGl0eSBtc2cpIHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRf
Y2hlY2tlcl8pOwotICBuZXR3b3JrX2F2YWlsYWJsZV8gPSBtc2cubmV0d29ya19hdmFpbGFibGU7
Ci0gIHBhY2VyXy0+VXBkYXRlT3V0c3RhbmRpbmdEYXRhKDApOwotICBTZXRQYWNlclN0YXRlKCFt
c2cubmV0d29ya19hdmFpbGFibGUpOwotfQotCi12b2lkIFBhY2VyQ29udHJvbGxlcjo6T25OZXR3
b3JrUm91dGVDaGFuZ2UoTmV0d29ya1JvdXRlQ2hhbmdlKSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVE
X1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKLSAgcGFjZXJfLT5VcGRhdGVPdXRz
dGFuZGluZ0RhdGEoMCk7Ci19Ci0KLXZvaWQgUGFjZXJDb250cm9sbGVyOjpPblBhY2VyQ29uZmln
KFBhY2VyQ29uZmlnIG1zZykgewotICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJnNl
cXVlbmNlZF9jaGVja2VyXyk7Ci0gIERhdGFSYXRlIHBhY2luZ19yYXRlID0gbXNnLmRhdGFfd2lu
ZG93IC8gbXNnLnRpbWVfd2luZG93OwotICBEYXRhUmF0ZSBwYWRkaW5nX3JhdGUgPSBtc2cucGFk
X3dpbmRvdyAvIG1zZy50aW1lX3dpbmRvdzsKLSAgcGFjZXJfLT5TZXRQYWNpbmdSYXRlcyhwYWNp
bmdfcmF0ZS5icHMoKSwgcGFkZGluZ19yYXRlLmJwcygpKTsKLX0KLQotdm9pZCBQYWNlckNvbnRy
b2xsZXI6Ok9uUHJvYmVDbHVzdGVyQ29uZmlnKFByb2JlQ2x1c3RlckNvbmZpZyBjb25maWcpIHsK
LSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwot
ICBpbnQ2NF90IGJpdHJhdGVfYnBzID0gY29uZmlnLnRhcmdldF9kYXRhX3JhdGUuYnBzKCk7Ci0g
IHBhY2VyXy0+Q3JlYXRlUHJvYmVDbHVzdGVyKGJpdHJhdGVfYnBzKTsKLX0KLQotdm9pZCBQYWNl
ckNvbnRyb2xsZXI6Ok9uT3V0c3RhbmRpbmdEYXRhKERhdGFTaXplIGluX2ZsaWdodF9kYXRhKSB7
Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsK
LSAgcGFjZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoaW5fZmxpZ2h0X2RhdGEuYnl0ZXMoKSk7
Ci19Ci0KLXZvaWQgUGFjZXJDb250cm9sbGVyOjpTZXRQYWNlclN0YXRlKGJvb2wgcGF1c2VkKSB7
Ci0gIGlmIChwYXVzZWQgJiYgIXBhY2VyX3BhdXNlZF8pCi0gICAgcGFjZXJfLT5QYXVzZSgpOwot
ICBlbHNlIGlmICghcGF1c2VkICYmIHBhY2VyX3BhdXNlZF8pCi0gICAgcGFjZXJfLT5SZXN1bWUo
KTsKLSAgcGFjZXJfcGF1c2VkXyA9IHBhdXNlZDsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3BhY2VyX2NvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL3J0cC9wYWNlcl9jb250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI3NzhiNzg0ODkwMzU1NDkxNDc0YWVlZWU1NjMxMmJlMzc0OTgxMDMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIv
cnRwL3BhY2VyX2NvbnRyb2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8q
Ci0gKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAot
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9M
TEVSX1JUUF9QQUNFUl9DT05UUk9MTEVSX0hfCi0jZGVmaW5lIE1PRFVMRVNfQ09OR0VTVElPTl9D
T05UUk9MTEVSX1JUUF9QQUNFUl9DT05UUk9MTEVSX0hfCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0K
LSNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zZXF1ZW5jZWRf
dGFza19jaGVja2VyLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgQ2xvY2s7Ci0KLS8v
IFdyYXBwZXIgY2xhc3MgdG8gY29udHJvbCBwYWNlciB1c2luZyB0YXNrIHF1ZXVlcy4gTm90ZSB0
aGF0IHRoaXMgY2xhc3MgaXMKLS8vIG9ubHkgZGVzaWduZWQgdG8gYmUgdXNlZCBmcm9tIGEgc2lu
Z2xlIHRhc2sgcXVldWUgYW5kIGhhcyBubyBidWlsdCBpbgotLy8gY29uY3VycmVuY3kgc2FmZXR5
LgotLy8gVE9ETyhzcnRlKTogSW50ZWdyYXRlIHRoaXMgaW50ZXJmYWNlIGRpcmVjdGx5IGludG8g
UGFjZWRTZW5kZXIuCi1jbGFzcyBQYWNlckNvbnRyb2xsZXIgewotIHB1YmxpYzoKLSAgZXhwbGlj
aXQgUGFjZXJDb250cm9sbGVyKFBhY2VkU2VuZGVyKiBwYWNlcik7Ci0gIH5QYWNlckNvbnRyb2xs
ZXIoKTsKLSAgdm9pZCBPbkNvbmdlc3Rpb25XaW5kb3coRGF0YVNpemUgbXNnKTsKLSAgdm9pZCBP
bk5ldHdvcmtBdmFpbGFiaWxpdHkoTmV0d29ya0F2YWlsYWJpbGl0eSBtc2cpOwotICB2b2lkIE9u
TmV0d29ya1JvdXRlQ2hhbmdlKE5ldHdvcmtSb3V0ZUNoYW5nZSBtc2cpOwotICB2b2lkIE9uT3V0
c3RhbmRpbmdEYXRhKERhdGFTaXplIGluX2ZsaWdodF9kYXRhKTsKLSAgdm9pZCBPblBhY2VyQ29u
ZmlnKFBhY2VyQ29uZmlnIG1zZyk7Ci0gIHZvaWQgT25Qcm9iZUNsdXN0ZXJDb25maWcoUHJvYmVD
bHVzdGVyQ29uZmlnIG1zZyk7Ci0KLSBwcml2YXRlOgotICB2b2lkIFNldFBhY2VyU3RhdGUoYm9v
bCBwYXVzZWQpOwotICBQYWNlZFNlbmRlciogY29uc3QgcGFjZXJfOwotCi0gIGFic2w6Om9wdGlv
bmFsPFBhY2VyQ29uZmlnPiBjdXJyZW50X3BhY2VyX2NvbmZpZ187Ci0gIGJvb2wgcGFjZXJfcGF1
c2VkXyA9IGZhbHNlOwotICBib29sIG5ldHdvcmtfYXZhaWxhYmxlXyA9IHRydWU7Ci0KLSAgcnRj
OjpTZXF1ZW5jZWRUYXNrQ2hlY2tlciBzZXF1ZW5jZWRfY2hlY2tlcl87Ci0gIFJUQ19ESVNBTExP
V19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoUGFjZXJDb250cm9sbGVyKTsKLX07Ci19ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCi0jZW5kaWYgIC8vIE1PRFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX1JU
UF9QQUNFUl9DT05UUk9MTEVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvc2Vu
ZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5k
X3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjCmluZGV4IDI2NmE1ZGM3NDAwY2JkMTEwNzky
OTRmNTk4MDljYWQ4N2JjNTE1ODQuLjk4MjM4MGY0NTdhZWQzYzg0ZmUzZGQwOTdiMWY1NGRiYjc3
NjE1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29uZ2VzdGlv
bl9jb250cm9sbGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29uZ2Vz
dGlvbl9jb250cm9sbGVyLmNjCkBAIC0xNSwxOSArMTUsMTkgQEAKICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8dmVjdG9yPgogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2lu
Y2x1ZGUgImFwaS90cmFuc3BvcnQvZ29vZ19jY19mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3Ry
YW5zcG9ydC9uZXR3b3JrX3R5cGVzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oIgotI2luY2x1
ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvaW5jbHVkZS9nb29nX2Nj
X2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9p
bmNsdWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYmluZC5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvZm9ybWF0X21hY3Jvcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dp
bmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZV9saW1p
dGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tlci5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL3NvY2tldC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5o
IgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKQEAg
LTM3LDcwICszNyw4IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHdlYnJ0Y19jYyB7
CiBuYW1lc3BhY2UgewogdXNpbmcgc2VuZF9zaWRlX2NjX2ludGVybmFsOjpQZXJpb2RpY1Rhc2s7
Ci0KLWNvbnN0IGNoYXIga0N3bmRFeHBlcmltZW50W10gPSAiV2ViUlRDLUN3bmRFeHBlcmltZW50
IjsKLQotLy8gV2hlbiBDb25nZXN0aW9uV2luZG93UHVzaGJhY2sgaXMgZW5hYmxlZCwgdGhlIHBh
Y2VyIGlzIG9ibGl2aW91cyB0bwotLy8gdGhlIGNvbmdlc3Rpb24gd2luZG93LiBUaGUgcmVsYXRp
b24gYmV0d2VlbiBvdXRzdGFuZGluZyBkYXRhIGFuZAotLy8gdGhlIGNvbmdlc3Rpb24gd2luZG93
IGFmZmVjdHMgZW5jb2RlciBhbGxvY2F0aW9ucyBkaXJlY3RseS4KLWNvbnN0IGNoYXIga0Nvbmdl
c3Rpb25QdXNoYmFja0V4cGVyaW1lbnRbXSA9ICJXZWJSVEMtQ29uZ2VzdGlvbldpbmRvd1B1c2hi
YWNrIjsKLQotLy8gV2hlbiBQYWNlclB1c2hiYWNrRXhwZXJpbWVudCBpcyBlbmFibGVkLCBidWls
ZC11cCBpbiB0aGUgcGFjZXIgZHVlIHRvCi0vLyB0aGUgY29uZ2VzdGlvbiB3aW5kb3cgYW5kL29y
IGRhdGEgc3Bpa2VzIHJlZHVjZXMgZW5jb2RlciBhbGxvY2F0aW9ucy4KLWNvbnN0IGNoYXIga1Bh
Y2VyUHVzaGJhY2tFeHBlcmltZW50W10gPSAiV2ViUlRDLVBhY2VyUHVzaGJhY2tFeHBlcmltZW50
IjsKIGNvbnN0IGludDY0X3QgUGFjZXJRdWV1ZVVwZGF0ZUludGVydmFsTXMgPSAyNTsKIAotYm9v
bCBJc1BhY2VyUHVzaGJhY2tFeHBlcmltZW50RW5hYmxlZCgpIHsKLSAgcmV0dXJuIHdlYnJ0Yzo6
ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrUGFjZXJQdXNoYmFja0V4cGVyaW1lbnQpOwotfQotCi1i
b29sIElzQ29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrRXhwZXJpbWVudEVuYWJsZWQoKSB7Ci0gIHJl
dHVybiB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa0Nvbmdlc3Rpb25QdXNoYmFja0V4
cGVyaW1lbnQpICYmCi0gICAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa0N3
bmRFeHBlcmltZW50KTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPENvbmdlc3Rpb25XaW5kb3dQdXNo
YmFja0NvbnRyb2xsZXI+Ci1NYXliZUluaXRhbGl6ZUNvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0Nv
bnRyb2xsZXIoKSB7Ci0gIHJldHVybiBJc0Nvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0V4cGVyaW1l
bnRFbmFibGVkKCkKLSAgICAgICAgICAgICA/IGFic2w6Om1ha2VfdW5pcXVlPENvbmdlc3Rpb25X
aW5kb3dQdXNoYmFja0NvbnRyb2xsZXI+KCkKLSAgICAgICAgICAgICA6IG51bGxwdHI7Ci19Ci0K
LXZvaWQgU29ydFBhY2tldEZlZWRiYWNrVmVjdG9yKHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6UGFja2V0
RmVlZGJhY2s+KiBpbnB1dCkgewotICBzdGQ6OnNvcnQoaW5wdXQtPmJlZ2luKCksIGlucHV0LT5l
bmQoKSwgUGFja2V0RmVlZGJhY2tDb21wYXJhdG9yKCkpOwotfQotCi1QYWNrZXRSZXN1bHQgTmV0
d29ya1BhY2tldEZlZWRiYWNrRnJvbVJ0cFBhY2tldEZlZWRiYWNrKAotICAgIGNvbnN0IHdlYnJ0
Yzo6UGFja2V0RmVlZGJhY2smIHBmKSB7Ci0gIFBhY2tldFJlc3VsdCBmZWVkYmFjazsKLSAgaWYg
KHBmLmFycml2YWxfdGltZV9tcyA9PSB3ZWJydGM6OlBhY2tldEZlZWRiYWNrOjprTm90UmVjZWl2
ZWQpCi0gICAgZmVlZGJhY2sucmVjZWl2ZV90aW1lID0gVGltZXN0YW1wOjpQbHVzSW5maW5pdHko
KTsKLSAgZWxzZQotICAgIGZlZWRiYWNrLnJlY2VpdmVfdGltZSA9IFRpbWVzdGFtcDo6bXMocGYu
YXJyaXZhbF90aW1lX21zKTsKLSAgaWYgKHBmLnNlbmRfdGltZV9tcyAhPSB3ZWJydGM6OlBhY2tl
dEZlZWRiYWNrOjprTm9TZW5kVGltZSkgewotICAgIGZlZWRiYWNrLnNlbnRfcGFja2V0ID0gU2Vu
dFBhY2tldCgpOwotICAgIGZlZWRiYWNrLnNlbnRfcGFja2V0LT5zZXF1ZW5jZV9udW1iZXIgPSBw
Zi5sb25nX3NlcXVlbmNlX251bWJlcjsKLSAgICBmZWVkYmFjay5zZW50X3BhY2tldC0+c2VuZF90
aW1lID0gVGltZXN0YW1wOjptcyhwZi5zZW5kX3RpbWVfbXMpOwotICAgIGZlZWRiYWNrLnNlbnRf
cGFja2V0LT5zaXplID0gRGF0YVNpemU6OmJ5dGVzKHBmLnBheWxvYWRfc2l6ZSk7Ci0gICAgZmVl
ZGJhY2suc2VudF9wYWNrZXQtPnBhY2luZ19pbmZvID0gcGYucGFjaW5nX2luZm87Ci0gIH0KLSAg
cmV0dXJuIGZlZWRiYWNrOwotfQotCi1zdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+IFBhY2tldFJl
c3VsdHNGcm9tUnRwRmVlZGJhY2tWZWN0b3IoCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2V0
RmVlZGJhY2s+JiBmZWVkYmFja192ZWN0b3IpIHsKLSAgUlRDX0RDSEVDSyhzdGQ6OmlzX3NvcnRl
ZChmZWVkYmFja192ZWN0b3IuYmVnaW4oKSwgZmVlZGJhY2tfdmVjdG9yLmVuZCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhY2tldEZlZWRiYWNrQ29tcGFyYXRvcigpKSk7Ci0KLSAg
c3RkOjp2ZWN0b3I8UGFja2V0UmVzdWx0PiBwYWNrZXRfZmVlZGJhY2tzOwotICBwYWNrZXRfZmVl
ZGJhY2tzLnJlc2VydmUoZmVlZGJhY2tfdmVjdG9yLnNpemUoKSk7Ci0gIGZvciAoY29uc3QgUGFj
a2V0RmVlZGJhY2smIHJ0cF9mZWVkYmFjayA6IGZlZWRiYWNrX3ZlY3RvcikgewotICAgIGF1dG8g
ZmVlZGJhY2sgPSBOZXR3b3JrUGFja2V0RmVlZGJhY2tGcm9tUnRwUGFja2V0RmVlZGJhY2socnRw
X2ZlZWRiYWNrKTsKLSAgICBwYWNrZXRfZmVlZGJhY2tzLnB1c2hfYmFjayhmZWVkYmFjayk7Ci0g
IH0KLSAgcmV0dXJuIHBhY2tldF9mZWVkYmFja3M7Ci19Ci0KIFRhcmdldFJhdGVDb25zdHJhaW50
cyBDb252ZXJ0Q29uc3RyYWludHMoaW50IG1pbl9iaXRyYXRlX2JwcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heF9iaXRyYXRlX2JwcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0X2JpdHJhdGVfYnBzLApA
QCAtMTY2LDE3NyArMTA0LDYgQEAgc3RhdGljIFBlcmlvZGljVGFzayogU3RhcnRQZXJpb2RpY1Rh
c2socnRjOjpUYXNrUXVldWUqIHRhc2tfcXVldWUsCiAKIH0gIC8vIG5hbWVzcGFjZQogCi1uYW1l
c3BhY2Ugc2VuZF9zaWRlX2NjX2ludGVybmFsIHsKLWNsYXNzIENvbnRyb2xIYW5kbGVyIHsKLSBw
dWJsaWM6Ci0gIENvbnRyb2xIYW5kbGVyKE5ldHdvcmtDaGFuZ2VkT2JzZXJ2ZXIqIG9ic2VydmVy
LAotICAgICAgICAgICAgICAgICBQYWNlckNvbnRyb2xsZXIqIHBhY2VyX2NvbnRyb2xsZXIsCi0g
ICAgICAgICAgICAgICAgIGNvbnN0IENsb2NrKiBjbG9jayk7Ci0KLSAgdm9pZCBQb3N0VXBkYXRl
cyhOZXR3b3JrQ29udHJvbFVwZGF0ZSB1cGRhdGUpOwotCi0gIHZvaWQgT25OZXR3b3JrQXZhaWxh
YmlsaXR5KE5ldHdvcmtBdmFpbGFiaWxpdHkgbXNnKTsKLSAgdm9pZCBPbk91dHN0YW5kaW5nRGF0
YShEYXRhU2l6ZSBpbl9mbGlnaHRfZGF0YSk7Ci0gIHZvaWQgT25QYWNlclF1ZXVlVXBkYXRlKFRp
bWVEZWx0YSBleHBlY3RlZF9xdWV1ZV90aW1lKTsKLQotICBhYnNsOjpvcHRpb25hbDxUYXJnZXRU
cmFuc2ZlclJhdGU+IGxhc3RfdHJhbnNmZXJfcmF0ZSgpOwotCi0gcHJpdmF0ZToKLSAgdm9pZCBP
bk5ldHdvcmtJbnZhbGlkYXRpb24oKTsKLSAgYm9vbCBHZXROZXR3b3JrUGFyYW1ldGVycyhpbnQz
Ml90KiBlc3RpbWF0ZWRfYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDhfdCogZnJhY3Rpb25fbG9zcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2
NF90KiBydHRfbXMpOwotICBib29sIElzU2VuZFF1ZXVlRnVsbCgpIGNvbnN0OwotICBib29sIEhh
c05ldHdvcmtQYXJhbWV0ZXJzVG9SZXBvcnRDaGFuZ2VkKGludDY0X3QgYml0cmF0ZV9icHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmcmFjdGlv
bl9sb3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgcnR0KTsKLSAgTmV0d29ya0NoYW5nZWRPYnNlcnZlciogb2JzZXJ2ZXJfID0gbnVsbHB0cjsK
LSAgUGFjZXJDb250cm9sbGVyKiBwYWNlcl9jb250cm9sbGVyXzsKLQotICBhYnNsOjpvcHRpb25h
bDxUYXJnZXRUcmFuc2ZlclJhdGU+IGN1cnJlbnRfdGFyZ2V0X3JhdGVfbXNnXzsKLSAgYm9vbCBu
ZXR3b3JrX2F2YWlsYWJsZV8gPSB0cnVlOwotICBpbnQ2NF90IGxhc3RfcmVwb3J0ZWRfdGFyZ2V0
X2JpdHJhdGVfYnBzXyA9IDA7Ci0gIHVpbnQ4X3QgbGFzdF9yZXBvcnRlZF9mcmFjdGlvbl9sb3Nz
XyA9IDA7Ci0gIGludDY0X3QgbGFzdF9yZXBvcnRlZF9ydHRfbXNfID0gMDsKLSAgY29uc3QgYm9v
bCBwYWNlcl9wdXNoYmFja19leHBlcmltZW50XyA9IGZhbHNlOwotICB1aW50MzJfdCBtaW5fcHVz
aGJhY2tfdGFyZ2V0X2JpdHJhdGVfYnBzXzsKLSAgaW50NjRfdCBwYWNlcl9leHBlY3RlZF9xdWV1
ZV9tc18gPSAwOwotICBkb3VibGUgZW5jb2RpbmdfcmF0ZV9yYXRpb18gPSAxLjA7Ci0gIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxDb25nZXN0aW9uV2luZG93UHVzaGJhY2tDb250cm9sbGVyPgotICAg
ICAgY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl87Ci0KLSAgcnRjOjpTZXF1
ZW5jZWRUYXNrQ2hlY2tlciBzZXF1ZW5jZWRfY2hlY2tlcl87Ci0gIFJUQ19ESVNBTExPV19JTVBM
SUNJVF9DT05TVFJVQ1RPUlMoQ29udHJvbEhhbmRsZXIpOwotfTsKLQotQ29udHJvbEhhbmRsZXI6
OkNvbnRyb2xIYW5kbGVyKE5ldHdvcmtDaGFuZ2VkT2JzZXJ2ZXIqIG9ic2VydmVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2VyQ29udHJvbGxlciogcGFjZXJfY29udHJvbGxl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDbG9jayogY2xvY2spCi0g
ICAgOiBvYnNlcnZlcl8ob2JzZXJ2ZXIpLAotICAgICAgcGFjZXJfY29udHJvbGxlcl8ocGFjZXJf
Y29udHJvbGxlciksCi0gICAgICBwYWNlcl9wdXNoYmFja19leHBlcmltZW50XyhJc1BhY2VyUHVz
aGJhY2tFeHBlcmltZW50RW5hYmxlZCgpKSwKLSAgICAgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hi
YWNrX2NvbnRyb2xsZXJfKAotICAgICAgICAgIE1heWJlSW5pdGFsaXplQ29uZ2VzdGlvbldpbmRv
d1B1c2hiYWNrQ29udHJvbGxlcigpKSB7Ci0gIHNlcXVlbmNlZF9jaGVja2VyXy5EZXRhY2goKTsK
LX0KLQotdm9pZCBDb250cm9sSGFuZGxlcjo6UG9zdFVwZGF0ZXMoTmV0d29ya0NvbnRyb2xVcGRh
dGUgdXBkYXRlKSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxMWSgmc2VxdWVuY2Vk
X2NoZWNrZXJfKTsKLSAgaWYgKHVwZGF0ZS5jb25nZXN0aW9uX3dpbmRvdykgewotICAgIGlmIChj
b25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXykgewotICAgICAgY29uZ2VzdGlv
bl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8tPlNldERhdGFXaW5kb3coCi0gICAgICAgICAg
dXBkYXRlLmNvbmdlc3Rpb25fd2luZG93LnZhbHVlKCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICBw
YWNlcl9jb250cm9sbGVyXy0+T25Db25nZXN0aW9uV2luZG93KCp1cGRhdGUuY29uZ2VzdGlvbl93
aW5kb3cpOwotICAgIH0KLSAgfQotICBpZiAodXBkYXRlLnBhY2VyX2NvbmZpZykgewotICAgIHBh
Y2VyX2NvbnRyb2xsZXJfLT5PblBhY2VyQ29uZmlnKCp1cGRhdGUucGFjZXJfY29uZmlnKTsKLSAg
fQotICBmb3IgKGNvbnN0IGF1dG8mIHByb2JlIDogdXBkYXRlLnByb2JlX2NsdXN0ZXJfY29uZmln
cykgewotICAgIHBhY2VyX2NvbnRyb2xsZXJfLT5PblByb2JlQ2x1c3RlckNvbmZpZyhwcm9iZSk7
Ci0gIH0KLSAgaWYgKHVwZGF0ZS50YXJnZXRfcmF0ZSkgewotICAgIGN1cnJlbnRfdGFyZ2V0X3Jh
dGVfbXNnXyA9ICp1cGRhdGUudGFyZ2V0X3JhdGU7Ci0gICAgT25OZXR3b3JrSW52YWxpZGF0aW9u
KCk7Ci0gIH0KLX0KLQotdm9pZCBDb250cm9sSGFuZGxlcjo6T25OZXR3b3JrQXZhaWxhYmlsaXR5
KE5ldHdvcmtBdmFpbGFiaWxpdHkgbXNnKSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJ
QUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKLSAgbmV0d29ya19hdmFpbGFibGVfID0gbXNnLm5l
dHdvcmtfYXZhaWxhYmxlOwotICBPbk5ldHdvcmtJbnZhbGlkYXRpb24oKTsKLX0KLQotdm9pZCBD
b250cm9sSGFuZGxlcjo6T25PdXRzdGFuZGluZ0RhdGEoRGF0YVNpemUgaW5fZmxpZ2h0X2RhdGEp
IHsKLSAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8p
OwotICBpZiAoY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8pIHsKLSAgICBj
b25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXy0+VXBkYXRlT3V0c3RhbmRpbmdE
YXRhKAotICAgICAgICBpbl9mbGlnaHRfZGF0YS5ieXRlcygpKTsKLSAgfQotICBPbk5ldHdvcmtJ
bnZhbGlkYXRpb24oKTsKLX0KLQotdm9pZCBDb250cm9sSGFuZGxlcjo6T25QYWNlclF1ZXVlVXBk
YXRlKFRpbWVEZWx0YSBleHBlY3RlZF9xdWV1ZV90aW1lKSB7Ci0gIFJUQ19EQ0hFQ0tfQ0FMTEVE
X1NFUVVFTlRJQUxMWSgmc2VxdWVuY2VkX2NoZWNrZXJfKTsKLSAgcGFjZXJfZXhwZWN0ZWRfcXVl
dWVfbXNfID0gZXhwZWN0ZWRfcXVldWVfdGltZS5tcygpOwotICBPbk5ldHdvcmtJbnZhbGlkYXRp
b24oKTsKLX0KLQotdm9pZCBDb250cm9sSGFuZGxlcjo6T25OZXR3b3JrSW52YWxpZGF0aW9uKCkg
ewotICBpZiAoIWN1cnJlbnRfdGFyZ2V0X3JhdGVfbXNnXy5oYXNfdmFsdWUoKSkKLSAgICByZXR1
cm47Ci0KLSAgdWludDMyX3QgdGFyZ2V0X2JpdHJhdGVfYnBzID0gY3VycmVudF90YXJnZXRfcmF0
ZV9tc2dfLT50YXJnZXRfcmF0ZS5icHMoKTsKLSAgaW50NjRfdCBydHRfbXMgPQotICAgICAgY3Vy
cmVudF90YXJnZXRfcmF0ZV9tc2dfLT5uZXR3b3JrX2VzdGltYXRlLnJvdW5kX3RyaXBfdGltZS5t
cygpOwotICBmbG9hdCBsb3NzX3JhdGVfcmF0aW8gPQotICAgICAgY3VycmVudF90YXJnZXRfcmF0
ZV9tc2dfLT5uZXR3b3JrX2VzdGltYXRlLmxvc3NfcmF0ZV9yYXRpbzsKLQotICBpbnQgbG9zc19y
YXRpb18yNTUgPSBsb3NzX3JhdGVfcmF0aW8gKiAyNTU7Ci0gIHVpbnQ4X3QgZnJhY3Rpb25fbG9z
cyA9Ci0gICAgICBydGM6OmRjaGVja2VkX2Nhc3Q8dWludDhfdD4ocnRjOjpTYWZlQ2xhbXAobG9z
c19yYXRpb18yNTUsIDAsIDI1NSkpOwotCi0gIGludDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcyA9
Ci0gICAgICBjdXJyZW50X3RhcmdldF9yYXRlX21zZ18tPm5ldHdvcmtfZXN0aW1hdGUuYndlX3Bl
cmlvZC5tcygpOwotCi0gIGlmICghbmV0d29ya19hdmFpbGFibGVfKSB7Ci0gICAgdGFyZ2V0X2Jp
dHJhdGVfYnBzID0gMDsKLSAgfSBlbHNlIGlmIChjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19j
b250cm9sbGVyXykgewotICAgIHRhcmdldF9iaXRyYXRlX2JwcyA9Ci0gICAgICAgIGNvbmdlc3Rp
b25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfLT5VcGRhdGVUYXJnZXRCaXRyYXRlKAotICAg
ICAgICAgICAgdGFyZ2V0X2JpdHJhdGVfYnBzKTsKLSAgfSBlbHNlIGlmICghcGFjZXJfcHVzaGJh
Y2tfZXhwZXJpbWVudF8pIHsKLSAgICB0YXJnZXRfYml0cmF0ZV9icHMgPSBJc1NlbmRRdWV1ZUZ1
bGwoKSA/IDAgOiB0YXJnZXRfYml0cmF0ZV9icHM7Ci0gIH0gZWxzZSB7Ci0gICAgaW50NjRfdCBx
dWV1ZV9sZW5ndGhfbXMgPSBwYWNlcl9leHBlY3RlZF9xdWV1ZV9tc187Ci0KLSAgICBpZiAocXVl
dWVfbGVuZ3RoX21zID09IDApIHsKLSAgICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gMS4wOwot
ICAgIH0gZWxzZSBpZiAocXVldWVfbGVuZ3RoX21zID4gNTApIHsKLSAgICAgIGRvdWJsZSBlbmNv
ZGluZ19yYXRpbyA9IDEuMCAtIHF1ZXVlX2xlbmd0aF9tcyAvIDEwMDAuMDsKLSAgICAgIGVuY29k
aW5nX3JhdGVfcmF0aW9fID0gc3RkOjptaW4oZW5jb2RpbmdfcmF0ZV9yYXRpb18sIGVuY29kaW5n
X3JhdGlvKTsKLSAgICAgIGVuY29kaW5nX3JhdGVfcmF0aW9fID0gc3RkOjptYXgoZW5jb2Rpbmdf
cmF0ZV9yYXRpb18sIDAuMCk7Ci0gICAgfQotCi0gICAgdGFyZ2V0X2JpdHJhdGVfYnBzICo9IGVu
Y29kaW5nX3JhdGVfcmF0aW9fOwotICAgIHRhcmdldF9iaXRyYXRlX2JwcyA9IHRhcmdldF9iaXRy
YXRlX2JwcyA8IDUwMDAwID8gMCA6IHRhcmdldF9iaXRyYXRlX2JwczsKLSAgfQotICBpZiAoSGFz
TmV0d29ya1BhcmFtZXRlcnNUb1JlcG9ydENoYW5nZWQodGFyZ2V0X2JpdHJhdGVfYnBzLCBmcmFj
dGlvbl9sb3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnR0
X21zKSkgewotICAgIG9ic2VydmVyXy0+T25OZXR3b3JrQ2hhbmdlZCh0YXJnZXRfYml0cmF0ZV9i
cHMsIGZyYWN0aW9uX2xvc3MsIHJ0dF9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvYmluZ19pbnRlcnZhbF9tcyk7Ci0gIH0KLX0KLWJvb2wgQ29udHJvbEhhbmRsZXI6Okhh
c05ldHdvcmtQYXJhbWV0ZXJzVG9SZXBvcnRDaGFuZ2VkKAotICAgIGludDY0X3QgdGFyZ2V0X2Jp
dHJhdGVfYnBzLAotICAgIHVpbnQ4X3QgZnJhY3Rpb25fbG9zcywKLSAgICBpbnQ2NF90IHJ0dF9t
cykgewotICBib29sIGNoYW5nZWQgPSBsYXN0X3JlcG9ydGVkX3RhcmdldF9iaXRyYXRlX2Jwc18g
IT0gdGFyZ2V0X2JpdHJhdGVfYnBzIHx8Ci0gICAgICAgICAgICAgICAgICh0YXJnZXRfYml0cmF0
ZV9icHMgPiAwICYmCi0gICAgICAgICAgICAgICAgICAobGFzdF9yZXBvcnRlZF9mcmFjdGlvbl9s
b3NzXyAhPSBmcmFjdGlvbl9sb3NzIHx8Ci0gICAgICAgICAgICAgICAgICAgbGFzdF9yZXBvcnRl
ZF9ydHRfbXNfICE9IHJ0dF9tcykpOwotICBpZiAoY2hhbmdlZCAmJgotICAgICAgKGxhc3RfcmVw
b3J0ZWRfdGFyZ2V0X2JpdHJhdGVfYnBzXyA9PSAwIHx8IHRhcmdldF9iaXRyYXRlX2JwcyA9PSAw
KSkgewotICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkJpdHJhdGUgZXN0aW1hdGUgc3RhdGUgY2hh
bmdlZCwgQldFOiAiCi0gICAgICAgICAgICAgICAgICAgICA8PCB0YXJnZXRfYml0cmF0ZV9icHMg
PDwgIiBicHMuIjsKLSAgfQotICBsYXN0X3JlcG9ydGVkX3RhcmdldF9iaXRyYXRlX2Jwc18gPSB0
YXJnZXRfYml0cmF0ZV9icHM7Ci0gIGxhc3RfcmVwb3J0ZWRfZnJhY3Rpb25fbG9zc18gPSBmcmFj
dGlvbl9sb3NzOwotICBsYXN0X3JlcG9ydGVkX3J0dF9tc18gPSBydHRfbXM7Ci0gIHJldHVybiBj
aGFuZ2VkOwotfQotCi1ib29sIENvbnRyb2xIYW5kbGVyOjpJc1NlbmRRdWV1ZUZ1bGwoKSBjb25z
dCB7Ci0gIHJldHVybiBwYWNlcl9leHBlY3RlZF9xdWV1ZV9tc18gPiBQYWNlZFNlbmRlcjo6a01h
eFF1ZXVlTGVuZ3RoTXM7Ci19Ci0KLWFic2w6Om9wdGlvbmFsPFRhcmdldFRyYW5zZmVyUmF0ZT4g
Q29udHJvbEhhbmRsZXI6Omxhc3RfdHJhbnNmZXJfcmF0ZSgpIHsKLSAgUlRDX0RDSEVDS19DQUxM
RURfU0VRVUVOVElBTExZKCZzZXF1ZW5jZWRfY2hlY2tlcl8pOwotICByZXR1cm4gY3VycmVudF90
YXJnZXRfcmF0ZV9tc2dfOwotfQotfSAgLy8gbmFtZXNwYWNlIHNlbmRfc2lkZV9jY19pbnRlcm5h
bAotCiBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpTZW5kU2lkZUNvbmdlc3Rpb25Db250
cm9sbGVyKAogICAgIGNvbnN0IENsb2NrKiBjbG9jaywKICAgICBydGM6OlRhc2tRdWV1ZSogdGFz
a19xdWV1ZSwKQEAgLTM1MiwxMCArMTE5LDExIEBAIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xs
ZXI6OlNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXIoCiAgICAgICBjb250cm9sbGVyX2ZhY3Rv
cnlfd2l0aF9mZWVkYmFja18oY29udHJvbGxlcl9mYWN0b3J5KSwKICAgICAgIGNvbnRyb2xsZXJf
ZmFjdG9yeV9mYWxsYmFja18oCiAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8R29vZ0NjTmV0
d29ya0NvbnRyb2xsZXJGYWN0b3J5PihldmVudF9sb2cpKSwKLSAgICAgIHBhY2VyX2NvbnRyb2xs
ZXJfKGFic2w6Om1ha2VfdW5pcXVlPFBhY2VyQ29udHJvbGxlcj4ocGFjZXJfKSksCiAgICAgICBw
cm9jZXNzX2ludGVydmFsXyhjb250cm9sbGVyX2ZhY3RvcnlfZmFsbGJhY2tfLT5HZXRQcm9jZXNz
SW50ZXJ2YWwoKSksCiAgICAgICBsYXN0X3JlcG9ydF9ibG9ja190aW1lXyhUaW1lc3RhbXA6Om1z
KGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpKSwKICAgICAgIG9ic2VydmVyXyhudWxscHRy
KSwKKyAgICAgIHJlc2V0X2ZlZWRiYWNrX29uX3JvdXRlX2NoYW5nZV8oCisgICAgICAgICAgIWZp
ZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1Cd2UtTm9GZWVkYmFja1Jlc2V0IikpLAogICAg
ICAgc2VuZF9zaWRlX2J3ZV93aXRoX292ZXJoZWFkXygKICAgICAgICAgICB3ZWJydGM6OmZpZWxk
X3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1TZW5kU2lkZUJ3ZS1XaXRoT3ZlcmhlYWQiKSksCiAg
ICAgICB0cmFuc3BvcnRfb3ZlcmhlYWRfYnl0ZXNfcGVyX3BhY2tldF8oMCksCkBAIC0zOTgsOCAr
MTY2LDggQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpNYXliZVJlY3JlYXRl
Q29udHJvbGxlcnMoKSB7CiAgIGlmICghbmV0d29ya19hdmFpbGFibGVfIHx8ICFvYnNlcnZlcl8p
CiAgICAgcmV0dXJuOwogICBpZiAoIWNvbnRyb2xfaGFuZGxlcl8pIHsKLSAgICBjb250cm9sX2hh
bmRsZXJfID0gYWJzbDo6bWFrZV91bmlxdWU8c2VuZF9zaWRlX2NjX2ludGVybmFsOjpDb250cm9s
SGFuZGxlcj4oCi0gICAgICAgIG9ic2VydmVyXywgcGFjZXJfY29udHJvbGxlcl8uZ2V0KCksIGNs
b2NrXyk7CisgICAgY29udHJvbF9oYW5kbGVyXyA9CisgICAgICAgIGFic2w6Om1ha2VfdW5pcXVl
PENvbmdlc3Rpb25Db250cm9sSGFuZGxlcj4ob2JzZXJ2ZXJfLCBwYWNlcl8pOwogICB9CiAKICAg
aW5pdGlhbF9jb25maWdfLmNvbnN0cmFpbnRzLmF0X3RpbWUgPQpAQCAtNDg5LDggKzI1Nyw5IEBA
IHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6T25OZXR3b3JrUm91dGVDaGFuZ2Vk
KAogICAgIGludCBzdGFydF9iaXRyYXRlX2JwcywKICAgICBpbnQgbWluX2JpdHJhdGVfYnBzLAog
ICAgIGludCBtYXhfYml0cmF0ZV9icHMpIHsKLSAgdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJf
LlNldE5ldHdvcmtJZHMobmV0d29ya19yb3V0ZS5sb2NhbF9uZXR3b3JrX2lkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3JvdXRlLnJlbW90ZV9u
ZXR3b3JrX2lkKTsKKyAgaWYgKHJlc2V0X2ZlZWRiYWNrX29uX3JvdXRlX2NoYW5nZV8pCisgICAg
dHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXJfLlNldE5ldHdvcmtJZHMobmV0d29ya19yb3V0ZS5s
b2NhbF9uZXR3b3JrX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ldHdvcmtfcm91dGUucmVtb3RlX25ldHdvcmtfaWQpOwogICB0cmFuc3BvcnRfb3Zl
cmhlYWRfYnl0ZXNfcGVyX3BhY2tldF8gPSBuZXR3b3JrX3JvdXRlLnBhY2tldF9vdmVyaGVhZDsK
IAogICBOZXR3b3JrUm91dGVDaGFuZ2UgbXNnOwpAQCAtNTA1LDcgKzI3NCw3IEBAIHZvaWQgU2Vu
ZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6T25OZXR3b3JrUm91dGVDaGFuZ2VkKAogICAgIH0g
ZWxzZSB7CiAgICAgICBVcGRhdGVJbml0aWFsQ29uc3RyYWludHMobXNnLmNvbnN0cmFpbnRzKTsK
ICAgICB9Ci0gICAgcGFjZXJfY29udHJvbGxlcl8tPk9uTmV0d29ya1JvdXRlQ2hhbmdlKG1zZyk7
CisgICAgcGFjZXJfLT5VcGRhdGVPdXRzdGFuZGluZ0RhdGEoMCk7CiAgIH0pOwogfQogCkBAIC01
NzIsNyArMzQxLDYgQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpTaWduYWxO
ZXR3b3JrU3RhdGUoTmV0d29ya1N0YXRlIHN0YXRlKSB7CiAgICAgbmV0d29ya19hdmFpbGFibGVf
ID0gbXNnLm5ldHdvcmtfYXZhaWxhYmxlOwogICAgIGlmIChjb250cm9sbGVyXykgewogICAgICAg
Y29udHJvbF9oYW5kbGVyXy0+UG9zdFVwZGF0ZXMoY29udHJvbGxlcl8tPk9uTmV0d29ya0F2YWls
YWJpbGl0eShtc2cpKTsKLSAgICAgIHBhY2VyX2NvbnRyb2xsZXJfLT5Pbk5ldHdvcmtBdmFpbGFi
aWxpdHkobXNnKTsKICAgICAgIGNvbnRyb2xfaGFuZGxlcl8tPk9uTmV0d29ya0F2YWlsYWJpbGl0
eShtc2cpOwogICAgIH0gZWxzZSB7CiAgICAgICBNYXliZUNyZWF0ZUNvbnRyb2xsZXJzKCk7CkBA
IC01ODIsMjcgKzM1MCwxNiBAQCB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6OlNp
Z25hbE5ldHdvcmtTdGF0ZShOZXR3b3JrU3RhdGUgc3RhdGUpIHsKIAogdm9pZCBTZW5kU2lkZUNv
bmdlc3Rpb25Db250cm9sbGVyOjpPblNlbnRQYWNrZXQoCiAgICAgY29uc3QgcnRjOjpTZW50UGFj
a2V0JiBzZW50X3BhY2tldCkgewotICAvLyBXZSdyZSBub3QgaW50ZXJlc3RlZCBpbiBwYWNrZXRz
IHdpdGhvdXQgYW4gaWQsIHdoaWNoIG1heSBiZSBzdHVuIHBhY2tldHMsCi0gIC8vIGV0Yywgc2Vu
dCBvbiB0aGUgc2FtZSB0cmFuc3BvcnQuCi0gIGlmIChzZW50X3BhY2tldC5wYWNrZXRfaWQgPT0g
LTEpCi0gICAgcmV0dXJuOwotICB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl8uT25TZW50UGFj
a2V0KHNlbnRfcGFja2V0LnBhY2tldF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZW50X3BhY2tldC5zZW5kX3RpbWVfbXMpOwotICBNYXliZVVwZGF0ZU91
dHN0YW5kaW5nRGF0YSgpOwotICBhdXRvIHBhY2tldCA9IHRyYW5zcG9ydF9mZWVkYmFja19hZGFw
dGVyXy5HZXRQYWNrZXQoc2VudF9wYWNrZXQucGFja2V0X2lkKTsKLSAgaWYgKHBhY2tldC5oYXNf
dmFsdWUoKSkgewotICAgIFNlbnRQYWNrZXQgbXNnOwotICAgIG1zZy5zaXplID0gRGF0YVNpemU6
OmJ5dGVzKHBhY2tldC0+cGF5bG9hZF9zaXplKTsKLSAgICBtc2cuc2VuZF90aW1lID0gVGltZXN0
YW1wOjptcyhwYWNrZXQtPnNlbmRfdGltZV9tcyk7Ci0gICAgbXNnLnNlcXVlbmNlX251bWJlciA9
IHBhY2tldC0+bG9uZ19zZXF1ZW5jZV9udW1iZXI7Ci0gICAgbXNnLmRhdGFfaW5fZmxpZ2h0ID0K
LSAgICAgICAgRGF0YVNpemU6OmJ5dGVzKHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5HZXRP
dXRzdGFuZGluZ0J5dGVzKCkpOwotICAgIHRhc2tfcXVldWVfLT5Qb3N0VGFzayhbdGhpcywgbXNn
XSgpIHsKKyAgYWJzbDo6b3B0aW9uYWw8U2VudFBhY2tldD4gcGFja2V0X21zZyA9CisgICAgICB0
cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl8uUHJvY2Vzc1NlbnRQYWNrZXQoc2VudF9wYWNrZXQp
OworICBpZiAocGFja2V0X21zZykgeworICAgIHRhc2tfcXVldWVfLT5Qb3N0VGFzayhbdGhpcywg
cGFja2V0X21zZ10oKSB7CiAgICAgICBSVENfRENIRUNLX1JVTl9PTih0YXNrX3F1ZXVlXyk7CiAg
ICAgICBpZiAoY29udHJvbGxlcl8pCi0gICAgICAgIGNvbnRyb2xfaGFuZGxlcl8tPlBvc3RVcGRh
dGVzKGNvbnRyb2xsZXJfLT5PblNlbnRQYWNrZXQobXNnKSk7CisgICAgICAgIGNvbnRyb2xfaGFu
ZGxlcl8tPlBvc3RVcGRhdGVzKGNvbnRyb2xsZXJfLT5PblNlbnRQYWNrZXQoKnBhY2tldF9tc2cp
KTsKICAgICB9KTsKICAgfQorICBNYXliZVVwZGF0ZU91dHN0YW5kaW5nRGF0YSgpOwogfQogCiB2
b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6Ok9uUnR0VXBkYXRlKGludDY0X3QgYXZn
X3J0dF9tcywKQEAgLTY4NywzOSArNDQ0LDI0IEBAIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29u
dHJvbGxlcjo6QWRkUGFja2V0KAogdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpP
blRyYW5zcG9ydEZlZWRiYWNrKAogICAgIGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiBm
ZWVkYmFjaykgewogICBSVENfRENIRUNLX1JVTlNfU0VSSUFMSVpFRCgmd29ya2VyX3JhY2VfKTsK
LSAgaW50NjRfdCBmZWVkYmFja190aW1lX21zID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMo
KTsKIAotICBEYXRhU2l6ZSBwcmlvcl9pbl9mbGlnaHQgPQotICAgICAgRGF0YVNpemU6OmJ5dGVz
KHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5HZXRPdXRzdGFuZGluZ0J5dGVzKCkpOwotICB0
cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl8uT25UcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7
Ci0gIE1heWJlVXBkYXRlT3V0c3RhbmRpbmdEYXRhKCk7Ci0KLSAgc3RkOjp2ZWN0b3I8UGFja2V0
RmVlZGJhY2s+IGZlZWRiYWNrX3ZlY3RvciA9Ci0gICAgICB0cmFuc3BvcnRfZmVlZGJhY2tfYWRh
cHRlcl8uR2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKTsKLSAgU29ydFBhY2tldEZlZWRiYWNr
VmVjdG9yKCZmZWVkYmFja192ZWN0b3IpOwotCi0gIGlmICghZmVlZGJhY2tfdmVjdG9yLmVtcHR5
KCkpIHsKLSAgICBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2sgbXNnOwotICAgIG1zZy5wYWNrZXRf
ZmVlZGJhY2tzID0gUGFja2V0UmVzdWx0c0Zyb21SdHBGZWVkYmFja1ZlY3RvcihmZWVkYmFja192
ZWN0b3IpOwotICAgIG1zZy5mZWVkYmFja190aW1lID0gVGltZXN0YW1wOjptcyhmZWVkYmFja190
aW1lX21zKTsKLSAgICBtc2cucHJpb3JfaW5fZmxpZ2h0ID0gcHJpb3JfaW5fZmxpZ2h0OwotICAg
IG1zZy5kYXRhX2luX2ZsaWdodCA9Ci0gICAgICAgIERhdGFTaXplOjpieXRlcyh0cmFuc3BvcnRf
ZmVlZGJhY2tfYWRhcHRlcl8uR2V0T3V0c3RhbmRpbmdCeXRlcygpKTsKLSAgICB0YXNrX3F1ZXVl
Xy0+UG9zdFRhc2soW3RoaXMsIG1zZ10oKSB7CisgIGFic2w6Om9wdGlvbmFsPFRyYW5zcG9ydFBh
Y2tldHNGZWVkYmFjaz4gZmVlZGJhY2tfbXNnID0KKyAgICAgIHRyYW5zcG9ydF9mZWVkYmFja19h
ZGFwdGVyXy5Qcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2soZmVlZGJhY2spOworICBpZiAoZmVlZGJh
Y2tfbXNnKSB7CisgICAgdGFza19xdWV1ZV8tPlBvc3RUYXNrKFt0aGlzLCBmZWVkYmFja19tc2dd
KCkgewogICAgICAgUlRDX0RDSEVDS19SVU5fT04odGFza19xdWV1ZV8pOwogICAgICAgaWYgKGNv
bnRyb2xsZXJfKQogICAgICAgICBjb250cm9sX2hhbmRsZXJfLT5Qb3N0VXBkYXRlcygKLSAgICAg
ICAgICAgIGNvbnRyb2xsZXJfLT5PblRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayhtc2cpKTsKKyAg
ICAgICAgICAgIGNvbnRyb2xsZXJfLT5PblRyYW5zcG9ydFBhY2tldHNGZWVkYmFjaygqZmVlZGJh
Y2tfbXNnKSk7CiAgICAgfSk7CiAgIH0KKyAgTWF5YmVVcGRhdGVPdXRzdGFuZGluZ0RhdGEoKTsK
IH0KIAogdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpNYXliZVVwZGF0ZU91dHN0
YW5kaW5nRGF0YSgpIHsKLSAgRGF0YVNpemUgaW5fZmxpZ2h0X2RhdGEgPQotICAgICAgRGF0YVNp
emU6OmJ5dGVzKHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyXy5HZXRPdXRzdGFuZGluZ0J5dGVz
KCkpOworICBEYXRhU2l6ZSBpbl9mbGlnaHRfZGF0YSA9IHRyYW5zcG9ydF9mZWVkYmFja19hZGFw
dGVyXy5HZXRPdXRzdGFuZGluZ0RhdGEoKTsKICAgdGFza19xdWV1ZV8tPlBvc3RUYXNrKFt0aGlz
LCBpbl9mbGlnaHRfZGF0YV0oKSB7CiAgICAgUlRDX0RDSEVDS19SVU5fT04odGFza19xdWV1ZV8p
OwotICAgIHBhY2VyX2NvbnRyb2xsZXJfLT5Pbk91dHN0YW5kaW5nRGF0YShpbl9mbGlnaHRfZGF0
YSk7CiAgICAgaWYgKGNvbnRyb2xfaGFuZGxlcl8pCiAgICAgICBjb250cm9sX2hhbmRsZXJfLT5P
bk91dHN0YW5kaW5nRGF0YShpbl9mbGlnaHRfZGF0YSk7CiAgIH0pOwpAQCAtNzQwLDcgKzQ4Miw3
IEBAIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6UG9zdFBlcmlvZGljVGFza3NG
b3JUZXN0KCkgewogfQogCiB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6OldhaXRP
blRhc2tzRm9yVGVzdCgpIHsKLSAgcnRjOjpFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBy
dGM6OkV2ZW50IGV2ZW50OwogICB0YXNrX3F1ZXVlXy0+UG9zdFRhc2soWyZldmVudF0oKSB7IGV2
ZW50LlNldCgpOyB9KTsKICAgZXZlbnQuV2FpdChydGM6OkV2ZW50OjprRm9yZXZlcik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJv
bGxlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29uZ2VzdGlv
bl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCmluZGV4IGQ2MTBhZmUxM2QwZjNlMjE0NTE4NzA2Mjc4
OGE2OTNmNmY0ZDdkZTYuLjZlZDdhNDk1NTNmMTkyNDM3OGFiMmU3ODAwMGQyMjVjMTk1MWY4NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250
cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3NpZGVfY29u
Z2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVk
ZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdHJhbnNwb3J0
X2ZlZWRiYWNrLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0LmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL2Nsb2NrLmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUg
InRlc3QvZ21vY2suaCIKQEAgLTEwOCw4ICsxMDgsMTEgQEAgY2xhc3MgU2VuZFNpZGVDb25nZXN0
aW9uQ29udHJvbGxlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICBjb250cm9s
bGVyXy0+QWRkUGFja2V0KHNzcmMsIHBhY2tldF9mZWVkYmFjay5zZXF1ZW5jZV9udW1iZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfZmVlZGJhY2sucGF5bG9hZF9zaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X2ZlZWRiYWNrLnBhY2luZ19pbmZvKTsK
KyAgICBydGM6OlBhY2tldEluZm8gcGFja2V0X2luZm87CisgICAgcGFja2V0X2luZm8uaW5jbHVk
ZWRfaW5fZmVlZGJhY2sgPSB0cnVlOwogICAgIGNvbnRyb2xsZXJfLT5PblNlbnRQYWNrZXQocnRj
OjpTZW50UGFja2V0KHBhY2tldF9mZWVkYmFjay5zZXF1ZW5jZV9udW1iZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X2ZlZWRiYWNrLnNlbmRf
dGltZV9tcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhY2tldF9mZWVkYmFjay5zZW5kX3RpbWVfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFja2V0X2luZm8pKTsKICAgfQogCiAgIC8vIEFsbG93cyB1
cyB0byB0cmFjayB0aGUgdGFyZ2V0IGJpdHJhdGUsIHdpdGhvdXQgcHJlc2NyaWJpbmcgdGhlIGV4
YWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvc2VuZF90aW1lX2hpc3RvcnkuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9ydHAvc2VuZF90aW1lX2hpc3RvcnkuY2MKaW5kZXggNzM2ODJjZDVi
MjQyNjU0NWNhZWI1MTM0NjhiNGRlM2E5OTA4YzUyNS4uMTEwZGFjMzk5MzIxMjQ4ODY5ZTFhOWY4
MTUwMmE2ZmQ0MTMyZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3NlbmRfdGlt
ZV9oaXN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5j
YwpAQCAtMTUsNiArMTUsNyBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRl
L3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1
ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC00MSw4ICs0MiwxOSBAQCB2b2lk
IFNlbmRUaW1lSGlzdG9yeTo6QWRkQW5kUmVtb3ZlT2xkKGNvbnN0IFBhY2tldEZlZWRiYWNrJiBw
YWNrZXQpIHsKICAgUGFja2V0RmVlZGJhY2sgcGFja2V0X2NvcHkgPSBwYWNrZXQ7CiAgIHBhY2tl
dF9jb3B5Lmxvbmdfc2VxdWVuY2VfbnVtYmVyID0gdW53cmFwcGVkX3NlcV9udW07CiAgIGhpc3Rv
cnlfLmluc2VydChzdGQ6Om1ha2VfcGFpcih1bndyYXBwZWRfc2VxX251bSwgcGFja2V0X2NvcHkp
KTsKLSAgaWYgKHBhY2tldC5zZW5kX3RpbWVfbXMgPj0gMCkKKyAgaWYgKHBhY2tldC5zZW5kX3Rp
bWVfbXMgPj0gMCkgewogICAgIEFkZFBhY2tldEJ5dGVzKHBhY2tldF9jb3B5KTsKKyAgICBsYXN0
X3NlbmRfdGltZV9tc18gPSBzdGQ6Om1heChsYXN0X3NlbmRfdGltZV9tc18sIHBhY2tldC5zZW5k
X3RpbWVfbXMpOworICB9Cit9CisKK3ZvaWQgU2VuZFRpbWVIaXN0b3J5OjpBZGRVbnRyYWNrZWQo
c2l6ZV90IHBhY2tldF9zaXplLCBpbnQ2NF90IHNlbmRfdGltZV9tcykgeworICBpZiAoc2VuZF90
aW1lX21zIDwgbGFzdF9zZW5kX3RpbWVfbXNfKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8
PCAiaWdub3JpbmcgdW50cmFja2VkIGRhdGEgZm9yIG91dCBvZiBvcmRlciBwYWNrZXQuIjsKKyAg
fQorICBwZW5kaW5nX3VudHJhY2tlZF9zaXplXyArPSBwYWNrZXRfc2l6ZTsKKyAgbGFzdF91bnRy
YWNrZWRfc2VuZF90aW1lX21zXyA9CisgICAgICBzdGQ6Om1heChsYXN0X3VudHJhY2tlZF9zZW5k
X3RpbWVfbXNfLCBzZW5kX3RpbWVfbXMpOwogfQogCiBib29sIFNlbmRUaW1lSGlzdG9yeTo6T25T
ZW50UGFja2V0KHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwKQEAgLTUzLDggKzY1LDE3IEBAIGJv
b2wgU2VuZFRpbWVIaXN0b3J5OjpPblNlbnRQYWNrZXQodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVy
LAogICAgIHJldHVybiBmYWxzZTsKICAgYm9vbCBwYWNrZXRfcmV0cmFuc21pdCA9IGl0LT5zZWNv
bmQuc2VuZF90aW1lX21zID49IDA7CiAgIGl0LT5zZWNvbmQuc2VuZF90aW1lX21zID0gc2VuZF90
aW1lX21zOworICBsYXN0X3NlbmRfdGltZV9tc18gPSBzdGQ6Om1heChsYXN0X3NlbmRfdGltZV9t
c18sIHNlbmRfdGltZV9tcyk7CiAgIGlmICghcGFja2V0X3JldHJhbnNtaXQpCiAgICAgQWRkUGFj
a2V0Qnl0ZXMoaXQtPnNlY29uZCk7CisgIGlmIChwZW5kaW5nX3VudHJhY2tlZF9zaXplXyA+IDAp
IHsKKyAgICBpZiAoc2VuZF90aW1lX21zIDwgbGFzdF91bnRyYWNrZWRfc2VuZF90aW1lX21zXykK
KyAgICAgIFJUQ19MT0coTFNfV0FSTklORykKKyAgICAgICAgICA8PCAiYXBwZW5kaW5nIGFja25v
d2xlZGdlZCBkYXRhIGZvciBvdXQgb2Ygb3JkZXIgcGFja2V0LiAoRGlmZjogIgorICAgICAgICAg
IDw8IGxhc3RfdW50cmFja2VkX3NlbmRfdGltZV9tc18gLSBzZW5kX3RpbWVfbXMgPDwgIiBtcy4p
IjsKKyAgICBpdC0+c2Vjb25kLnVuYWNrbm93bGVkZ2VkX2RhdGEgKz0gcGVuZGluZ191bnRyYWNr
ZWRfc2l6ZV87CisgICAgcGVuZGluZ191bnRyYWNrZWRfc2l6ZV8gPSAwOworICB9CiAgIHJldHVy
biB0cnVlOwogfQogCkBAIC05MCwxMyArMTExLDEzIEBAIGJvb2wgU2VuZFRpbWVIaXN0b3J5OjpH
ZXRGZWVkYmFjayhQYWNrZXRGZWVkYmFjayogcGFja2V0X2ZlZWRiYWNrLAogICByZXR1cm4gdHJ1
ZTsKIH0KIAotc2l6ZV90IFNlbmRUaW1lSGlzdG9yeTo6R2V0T3V0c3RhbmRpbmdCeXRlcyh1aW50
MTZfdCBsb2NhbF9uZXRfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQxNl90IHJlbW90ZV9uZXRfaWQpIGNvbnN0IHsKK0RhdGFTaXplIFNlbmRUaW1l
SGlzdG9yeTo6R2V0T3V0c3RhbmRpbmdEYXRhKHVpbnQxNl90IGxvY2FsX25ldF9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9u
ZXRfaWQpIGNvbnN0IHsKICAgYXV0byBpdCA9IGluX2ZsaWdodF9ieXRlc18uZmluZCh7bG9jYWxf
bmV0X2lkLCByZW1vdGVfbmV0X2lkfSk7CiAgIGlmIChpdCAhPSBpbl9mbGlnaHRfYnl0ZXNfLmVu
ZCgpKSB7Ci0gICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgcmV0dXJuIERhdGFTaXplOjpieXRl
cyhpdC0+c2Vjb25kKTsKICAgfSBlbHNlIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gRGF0
YVNpemU6Olplcm8oKTsKICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAv
c2VuZF90aW1lX2hpc3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9y
eS5oCmluZGV4IDdjYzZhZDc2NDE0ODgwNDkxMTc4ZTU1ZDZiNjY0YjFmMWQ4MTc4OTQuLjY1NmI3
ZTE2YTM0YjFkZmRhYjg3NzI4N2QyMTE3OWZmZDFmYzJiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9z
ZW5kX3RpbWVfaGlzdG9yeS5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8bWFwPgogI2lu
Y2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhcGkvdW5pdHMvZGF0YV9zaXplLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAKQEAgLTI5LDYgKzMwLDggQEAgY2xhc3MgU2Vu
ZFRpbWVIaXN0b3J5IHsKICAgLy8gQ2xlYW51cCBvbGQgZW50cmllcywgdGhlbiBhZGQgbmV3IHBh
Y2tldCBpbmZvIHdpdGggcHJvdmlkZWQgcGFyYW1ldGVycy4KICAgdm9pZCBBZGRBbmRSZW1vdmVP
bGQoY29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tldCk7CiAKKyAgdm9pZCBBZGRVbnRyYWNrZWQo
c2l6ZV90IHBhY2tldF9zaXplLCBpbnQ2NF90IHNlbmRfdGltZV9tcyk7CisKICAgLy8gVXBkYXRl
cyBwYWNrZXQgaW5mbyBpZGVudGlmaWVkIGJ5IHxzZXF1ZW5jZV9udW1iZXJ8IHdpdGggfHNlbmRf
dGltZV9tc3wuCiAgIC8vIFJldHVybiBmYWxzZSBpZiBub3QgZm91bmQuCiAgIGJvb2wgT25TZW50
UGFja2V0KHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwgaW50NjRfdCBzZW5kX3RpbWVfbXMpOwpA
QCAtNDEsOCArNDQsOCBAQCBjbGFzcyBTZW5kVGltZUhpc3RvcnkgewogICAvLyB0aHVzIGJlIG5v
bi1udWxsIGFuZCBoYXZlIHRoZSBzZXF1ZW5jZV9udW1iZXIgZmllbGQgc2V0LgogICBib29sIEdl
dEZlZWRiYWNrKFBhY2tldEZlZWRiYWNrKiBwYWNrZXRfZmVlZGJhY2ssIGJvb2wgcmVtb3ZlKTsK
IAotICBzaXplX3QgR2V0T3V0c3RhbmRpbmdCeXRlcyh1aW50MTZfdCBsb2NhbF9uZXRfaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9uZXRfaWQpIGNvbnN0
OworICBEYXRhU2l6ZSBHZXRPdXRzdGFuZGluZ0RhdGEodWludDE2X3QgbG9jYWxfbmV0X2lkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgcmVtb3RlX25ldF9pZCkgY29u
c3Q7CiAKICBwcml2YXRlOgogICB1c2luZyBSZW1vdGVBbmRMb2NhbE5ldHdvcmtJZCA9IHN0ZDo6
cGFpcjx1aW50MTZfdCwgdWludDE2X3Q+OwpAQCAtNTIsNiArNTUsOSBAQCBjbGFzcyBTZW5kVGlt
ZUhpc3RvcnkgewogICB2b2lkIFVwZGF0ZUFja2VkU2VxTnVtKGludDY0X3QgYWNrZWRfc2VxX251
bSk7CiAgIGNvbnN0IENsb2NrKiBjb25zdCBjbG9ja187CiAgIGNvbnN0IGludDY0X3QgcGFja2V0
X2FnZV9saW1pdF9tc187CisgIHNpemVfdCBwZW5kaW5nX3VudHJhY2tlZF9zaXplXyA9IDA7Cisg
IGludDY0X3QgbGFzdF9zZW5kX3RpbWVfbXNfID0gLTE7CisgIGludDY0X3QgbGFzdF91bnRyYWNr
ZWRfc2VuZF90aW1lX21zXyA9IC0xOwogICBTZXF1ZW5jZU51bWJlclVud3JhcHBlciBzZXFfbnVt
X3Vud3JhcHBlcl87CiAgIHN0ZDo6bWFwPGludDY0X3QsIFBhY2tldEZlZWRiYWNrPiBoaXN0b3J5
XzsKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9hY2tfc2VxX251bV87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nv
bmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rp
b25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MKaW5kZXggZDFi
NDg1NWUzNjlkNGQwMjZhM2M5ZDUzZjMzYWUzMjEwNzQ1Yjc4NC4uNzNkOTUyMzE4NDNiNzRkYjRl
NjUzNzllMjU1ZTBiYjZmMjQxNjk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3Ry
YW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFu
c3BvcnRfZmVlZGJhY2tfYWRhcHRlci5jYwpAQCAtMTksOCArMTksMjggQEAKICNpbmNsdWRlICJy
dGNfYmFzZS9udW1lcmljcy9tb2Rfb3BzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotbmFtZXNw
YWNlIHdlYnJ0Y19jYyB7CituYW1lc3BhY2Ugewordm9pZCBTb3J0UGFja2V0RmVlZGJhY2tWZWN0
b3Ioc3RkOjp2ZWN0b3I8d2VicnRjOjpQYWNrZXRGZWVkYmFjaz4qIGlucHV0KSB7CisgIHN0ZDo6
c29ydChpbnB1dC0+YmVnaW4oKSwgaW5wdXQtPmVuZCgpLCBQYWNrZXRGZWVkYmFja0NvbXBhcmF0
b3IoKSk7Cit9CiAKK1BhY2tldFJlc3VsdCBOZXR3b3JrUGFja2V0RmVlZGJhY2tGcm9tUnRwUGFj
a2V0RmVlZGJhY2soCisgICAgY29uc3Qgd2VicnRjOjpQYWNrZXRGZWVkYmFjayYgcGYpIHsKKyAg
UGFja2V0UmVzdWx0IGZlZWRiYWNrOworICBpZiAocGYuYXJyaXZhbF90aW1lX21zID09IHdlYnJ0
Yzo6UGFja2V0RmVlZGJhY2s6OmtOb3RSZWNlaXZlZCkgeworICAgIGZlZWRiYWNrLnJlY2VpdmVf
dGltZSA9IFRpbWVzdGFtcDo6UGx1c0luZmluaXR5KCk7CisgIH0gZWxzZSB7CisgICAgZmVlZGJh
Y2sucmVjZWl2ZV90aW1lID0gVGltZXN0YW1wOjptcyhwZi5hcnJpdmFsX3RpbWVfbXMpOworICB9
CisgIGZlZWRiYWNrLnNlbnRfcGFja2V0LnNlcXVlbmNlX251bWJlciA9IHBmLmxvbmdfc2VxdWVu
Y2VfbnVtYmVyOworICBmZWVkYmFjay5zZW50X3BhY2tldC5zZW5kX3RpbWUgPSBUaW1lc3RhbXA6
Om1zKHBmLnNlbmRfdGltZV9tcyk7CisgIGZlZWRiYWNrLnNlbnRfcGFja2V0LnNpemUgPSBEYXRh
U2l6ZTo6Ynl0ZXMocGYucGF5bG9hZF9zaXplKTsKKyAgZmVlZGJhY2suc2VudF9wYWNrZXQucGFj
aW5nX2luZm8gPSBwZi5wYWNpbmdfaW5mbzsKKyAgZmVlZGJhY2suc2VudF9wYWNrZXQucHJpb3Jf
dW5hY2tlZF9kYXRhID0KKyAgICAgIERhdGFTaXplOjpieXRlcyhwZi51bmFja25vd2xlZGdlZF9k
YXRhKTsKKyAgcmV0dXJuIGZlZWRiYWNrOworfQorfSAgLy8gbmFtZXNwYWNlCiBjb25zdCBpbnQ2
NF90IGtOb1RpbWVzdGFtcCA9IC0xOwogY29uc3QgaW50NjRfdCBrU2VuZFRpbWVIaXN0b3J5V2lu
ZG93TXMgPSA2MDAwMDsKIGNvbnN0IGludDY0X3Qga0Jhc2VUaW1lc3RhbXBTY2FsZUZhY3RvciA9
CkBAIC03NywxNiArOTcsNTkgQEAgdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkFkZFBh
Y2tldCh1aW50MzJfdCBzc3JjLAogICB9CiB9CiAKLXZvaWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFw
dGVyOjpPblNlbnRQYWNrZXQodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNlbmRfdGltZV9tcykgewor
YWJzbDo6b3B0aW9uYWw8U2VudFBhY2tldD4gVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpQcm9j
ZXNzU2VudFBhY2tldCgKKyAgICBjb25zdCBydGM6OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KSB7
CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7Ci0gIHNlbmRfdGltZV9oaXN0b3J5Xy5PblNl
bnRQYWNrZXQoc2VxdWVuY2VfbnVtYmVyLCBzZW5kX3RpbWVfbXMpOworICAvLyBUT0RPKHNydGUp
OiBPbmx5IHVzZSBvbmUgd2F5IHRvIGluZGljYXRlIHRoYXQgcGFja2V0IGZlZWRiYWNrIGlzIHVz
ZWQuCisgIGlmIChzZW50X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2ZlZWRiYWNrIHx8IHNlbnRf
cGFja2V0LnBhY2tldF9pZCAhPSAtMSkgeworICAgIHNlbmRfdGltZV9oaXN0b3J5Xy5PblNlbnRQ
YWNrZXQoc2VudF9wYWNrZXQucGFja2V0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VudF9wYWNrZXQuc2VuZF90aW1lX21zKTsKKyAgICBhYnNsOjpvcHRpb25hbDxQ
YWNrZXRGZWVkYmFjaz4gcGFja2V0ID0KKyAgICAgICAgc2VuZF90aW1lX2hpc3RvcnlfLkdldFBh
Y2tldChzZW50X3BhY2tldC5wYWNrZXRfaWQpOworICAgIGlmIChwYWNrZXQpIHsKKyAgICAgIFNl
bnRQYWNrZXQgbXNnOworICAgICAgbXNnLnNpemUgPSBEYXRhU2l6ZTo6Ynl0ZXMocGFja2V0LT5w
YXlsb2FkX3NpemUpOworICAgICAgbXNnLnNlbmRfdGltZSA9IFRpbWVzdGFtcDo6bXMocGFja2V0
LT5zZW5kX3RpbWVfbXMpOworICAgICAgbXNnLnNlcXVlbmNlX251bWJlciA9IHBhY2tldC0+bG9u
Z19zZXF1ZW5jZV9udW1iZXI7CisgICAgICBtc2cucHJpb3JfdW5hY2tlZF9kYXRhID0gRGF0YVNp
emU6OmJ5dGVzKHBhY2tldC0+dW5hY2tub3dsZWRnZWRfZGF0YSk7CisgICAgICBtc2cuZGF0YV9p
bl9mbGlnaHQgPQorICAgICAgICAgIHNlbmRfdGltZV9oaXN0b3J5Xy5HZXRPdXRzdGFuZGluZ0Rh
dGEobG9jYWxfbmV0X2lkXywgcmVtb3RlX25ldF9pZF8pOworICAgICAgcmV0dXJuIG1zZzsKKyAg
ICB9CisgIH0gZWxzZSBpZiAoc2VudF9wYWNrZXQuaW5mby5pbmNsdWRlZF9pbl9hbGxvY2F0aW9u
KSB7CisgICAgc2VuZF90aW1lX2hpc3RvcnlfLkFkZFVudHJhY2tlZChzZW50X3BhY2tldC5pbmZv
LnBhY2tldF9zaXplX2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VudF9wYWNrZXQuc2VuZF90aW1lX21zKTsKKyAgfQorICByZXR1cm4gYWJzbDo6bnVsbG9wdDsK
IH0KIAotYWJzbDo6b3B0aW9uYWw8UGFja2V0RmVlZGJhY2s+IFRyYW5zcG9ydEZlZWRiYWNrQWRh
cHRlcjo6R2V0UGFja2V0KAotICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlcikgY29uc3Qgewot
ICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwotICByZXR1cm4gc2VuZF90aW1lX2hpc3Rvcnlf
LkdldFBhY2tldChzZXF1ZW5jZV9udW1iZXIpOworYWJzbDo6b3B0aW9uYWw8VHJhbnNwb3J0UGFj
a2V0c0ZlZWRiYWNrPgorVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpQcm9jZXNzVHJhbnNwb3J0
RmVlZGJhY2soCisgICAgY29uc3QgcnRjcDo6VHJhbnNwb3J0RmVlZGJhY2smIGZlZWRiYWNrKSB7
CisgIGludDY0X3QgZmVlZGJhY2tfdGltZV9tcyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRz
KCk7CisgIERhdGFTaXplIHByaW9yX2luX2ZsaWdodCA9IEdldE91dHN0YW5kaW5nRGF0YSgpOwor
ICBPblRyYW5zcG9ydEZlZWRiYWNrKGZlZWRiYWNrKTsKKyAgc3RkOjp2ZWN0b3I8UGFja2V0RmVl
ZGJhY2s+IGZlZWRiYWNrX3ZlY3RvciA9IGxhc3RfcGFja2V0X2ZlZWRiYWNrX3ZlY3Rvcl87Cisg
IGlmIChmZWVkYmFja192ZWN0b3IuZW1wdHkoKSkKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsK
KworICBTb3J0UGFja2V0RmVlZGJhY2tWZWN0b3IoJmZlZWRiYWNrX3ZlY3Rvcik7CisgIFRyYW5z
cG9ydFBhY2tldHNGZWVkYmFjayBtc2c7CisgIGZvciAoY29uc3QgUGFja2V0RmVlZGJhY2smIHJ0
cF9mZWVkYmFjayA6IGZlZWRiYWNrX3ZlY3RvcikgeworICAgIGlmIChydHBfZmVlZGJhY2suc2Vu
ZF90aW1lX21zICE9IFBhY2tldEZlZWRiYWNrOjprTm9TZW5kVGltZSkgeworICAgICAgYXV0byBm
ZWVkYmFjayA9IE5ldHdvcmtQYWNrZXRGZWVkYmFja0Zyb21SdHBQYWNrZXRGZWVkYmFjayhydHBf
ZmVlZGJhY2spOworICAgICAgbXNnLnBhY2tldF9mZWVkYmFja3MucHVzaF9iYWNrKGZlZWRiYWNr
KTsKKyAgICB9IGVsc2UgaWYgKHJ0cF9mZWVkYmFjay5hcnJpdmFsX3RpbWVfbXMgPT0gUGFja2V0
RmVlZGJhY2s6OmtOb3RSZWNlaXZlZCkgeworICAgICAgbXNnLnNlbmRsZXNzX2Fycml2YWxfdGlt
ZXMucHVzaF9iYWNrKFRpbWVzdGFtcDo6UGx1c0luZmluaXR5KCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICBtc2cuc2VuZGxlc3NfYXJyaXZhbF90aW1lcy5wdXNoX2JhY2soCisgICAgICAgICAgVGlt
ZXN0YW1wOjptcyhydHBfZmVlZGJhY2suYXJyaXZhbF90aW1lX21zKSk7CisgICAgfQorICB9Cisg
IG1zZy5mZWVkYmFja190aW1lID0gVGltZXN0YW1wOjptcyhmZWVkYmFja190aW1lX21zKTsKKyAg
bXNnLnByaW9yX2luX2ZsaWdodCA9IHByaW9yX2luX2ZsaWdodDsKKyAgbXNnLmRhdGFfaW5fZmxp
Z2h0ID0gR2V0T3V0c3RhbmRpbmdEYXRhKCk7CisgIHJldHVybiBtc2c7CiB9CiAKIHZvaWQgVHJh
bnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpTZXROZXR3b3JrSWRzKHVpbnQxNl90IGxvY2FsX2lkLApA
QCAtOTYsNiArMTU5LDExIEBAIHZvaWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpTZXROZXR3
b3JrSWRzKHVpbnQxNl90IGxvY2FsX2lkLAogICByZW1vdGVfbmV0X2lkXyA9IHJlbW90ZV9pZDsK
IH0KIAorRGF0YVNpemUgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpHZXRPdXRzdGFuZGluZ0Rh
dGEoKSBjb25zdCB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7CisgIHJldHVybiBzZW5k
X3RpbWVfaGlzdG9yeV8uR2V0T3V0c3RhbmRpbmdEYXRhKGxvY2FsX25ldF9pZF8sIHJlbW90ZV9u
ZXRfaWRfKTsKK30KKwogc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IFRyYW5zcG9ydEZlZWRi
YWNrQWRhcHRlcjo6R2V0UGFja2V0RmVlZGJhY2tWZWN0b3IoCiAgICAgY29uc3QgcnRjcDo6VHJh
bnNwb3J0RmVlZGJhY2smIGZlZWRiYWNrKSB7CiAgIGludDY0X3QgdGltZXN0YW1wX3VzID0gZmVl
ZGJhY2suR2V0QmFzZVRpbWVVcygpOwpAQCAtMTg0LDEwICsyNTIsNCBAQCBzdGQ6OnZlY3RvcjxQ
YWNrZXRGZWVkYmFjaz4KIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6R2V0VHJhbnNwb3J0RmVl
ZGJhY2tWZWN0b3IoKSBjb25zdCB7CiAgIHJldHVybiBsYXN0X3BhY2tldF9mZWVkYmFja192ZWN0
b3JfOwogfQotCi1zaXplX3QgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpHZXRPdXRzdGFuZGlu
Z0J5dGVzKCkgY29uc3QgewotICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwotICByZXR1cm4g
c2VuZF90aW1lX2hpc3RvcnlfLkdldE91dHN0YW5kaW5nQnl0ZXMobG9jYWxfbmV0X2lkXywgcmVt
b3RlX25ldF9pZF8pOwotfQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Y19jYwogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3RyYW5zcG9ydF9mZWVk
YmFja19hZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2Fk
YXB0ZXIuaAppbmRleCBlMjQ3N2NhMzFmMzQ0M2ZhYTFkMjM0MWIwMmIyOTBlMzFhMWIzMDhmLi4x
NzQxZDZkNjZhMGM0MTNhZDA1NjA1YmZmOTVhMDE2MmRhMDQxMDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29u
dHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaApAQCAtMTcsNiArMTcsNyBA
QAogI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya190eXBlcy5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC9zZW5kX3RpbWVfaGlzdG9yeS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL25l
dHdvcmsvc2VudF9wYWNrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlv
bnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfY2hlY2tlci5oIgogI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCkBAIC0yOSw3ICszMCw2IEBAIG5hbWVzcGFj
ZSBydGNwIHsKIGNsYXNzIFRyYW5zcG9ydEZlZWRiYWNrOwogfSAgLy8gbmFtZXNwYWNlIHJ0Y3AK
IAotbmFtZXNwYWNlIHdlYnJ0Y19jYyB7CiBjbGFzcyBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIg
ewogIHB1YmxpYzoKICAgZXhwbGljaXQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyKGNvbnN0IENs
b2NrKiBjbG9jayk7CkBAIC00MiwyMiArNDIsMjIgQEAgY2xhc3MgVHJhbnNwb3J0RmVlZGJhY2tB
ZGFwdGVyIHsKICAgICAgICAgICAgICAgICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAogICAg
ICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgICBjb25zdCBQYWNl
ZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKTsKLSAgdm9pZCBPblNlbnRQYWNrZXQodWludDE2X3Qg
c2VxdWVuY2VfbnVtYmVyLCBpbnQ2NF90IHNlbmRfdGltZV9tcyk7CiAKLSAgLy8gVE9ETyhob2xt
ZXIpOiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIERlbGF5QmFzZWRCd2U6OlJlc3VsdCBzbyB0
aGF0IHdlCi0gIC8vIGNhbiBnZXQgcmlkIG9mIHRoZSBkZXBlbmRlbmN5IG9uIEJpdHJhdGVDb250
cm9sbGVyLiBSZXF1aXJlcyBjaGFuZ2VzCi0gIC8vIHRvIHRoZSBDb25nZXN0aW9uQ29udHJvbGxl
ciBpbnRlcmZhY2UuCi0gIHZvaWQgT25UcmFuc3BvcnRGZWVkYmFjayhjb25zdCBydGNwOjpUcmFu
c3BvcnRGZWVkYmFjayYgZmVlZGJhY2spOwotICBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4g
R2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSBjb25zdDsKLSAgYWJzbDo6b3B0aW9uYWw8UGFj
a2V0RmVlZGJhY2s+IEdldFBhY2tldCh1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIpIGNvbnN0Owor
ICBhYnNsOjpvcHRpb25hbDxTZW50UGFja2V0PiBQcm9jZXNzU2VudFBhY2tldCgKKyAgICAgIGNv
bnN0IHJ0Yzo6U2VudFBhY2tldCYgc2VudF9wYWNrZXQpOwogCi0gIHZvaWQgU2V0VHJhbnNwb3J0
T3ZlcmhlYWQoaW50IHRyYW5zcG9ydF9vdmVyaGVhZF9ieXRlc19wZXJfcGFja2V0KTsKKyAgYWJz
bDo6b3B0aW9uYWw8VHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrPiBQcm9jZXNzVHJhbnNwb3J0RmVl
ZGJhY2soCisgICAgICBjb25zdCBydGNwOjpUcmFuc3BvcnRGZWVkYmFjayYgZmVlZGJhY2spOwor
CisgIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBHZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3Rv
cigpIGNvbnN0OwogCiAgIHZvaWQgU2V0TmV0d29ya0lkcyh1aW50MTZfdCBsb2NhbF9pZCwgdWlu
dDE2X3QgcmVtb3RlX2lkKTsKIAotICBzaXplX3QgR2V0T3V0c3RhbmRpbmdCeXRlcygpIGNvbnN0
OworICBEYXRhU2l6ZSBHZXRPdXRzdGFuZGluZ0RhdGEoKSBjb25zdDsKIAogIHByaXZhdGU6Cisg
IHZvaWQgT25UcmFuc3BvcnRGZWVkYmFjayhjb25zdCBydGNwOjpUcmFuc3BvcnRGZWVkYmFjayYg
ZmVlZGJhY2spOworCiAgIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBHZXRQYWNrZXRGZWVk
YmFja1ZlY3RvcigKICAgICAgIGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNrJiBmZWVkYmFj
ayk7CiAKQEAgLTc1LDcgKzc1LDYgQEAgY2xhc3MgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyIHsK
ICAgICAgIFJUQ19HVUFSREVEX0JZKCZvYnNlcnZlcnNfbG9ja18pOwogfTsKIAotfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0Y19jYwogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCiAjZW5kaWYgIC8vIE1P
RFVMRVNfQ09OR0VTVElPTl9DT05UUk9MTEVSX1JUUF9UUkFOU1BPUlRfRkVFREJBQ0tfQURBUFRF
Ul9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3RyYW5zcG9ydF9mZWVkYmFja19h
ZGFwdGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvcnRwL3RyYW5zcG9ydF9mZWVkYmFj
a19hZGFwdGVyX3VuaXR0ZXN0LmNjCmluZGV4IDcwMDg3Njc4YTIzOWRhMzliMTcxNjgwMmYyZTkz
NTNiZmM5MGZmNTAuLmQxNDA0ZGY2M2Y0MThkNzIxMzdlYmQ0ZTZhNmNjNDExNzk1YTJmMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3J0cC90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0X2ZlZWRiYWNrX2Fk
YXB0ZXJfdW5pdHRlc3QuY2MKQEAgLTY5LDggKzY5LDkgQEAgY2xhc3MgVHJhbnNwb3J0RmVlZGJh
Y2tBZGFwdGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIGFkYXB0ZXJfLT5B
ZGRQYWNrZXQoa1NzcmMsIHBhY2tldF9mZWVkYmFjay5zZXF1ZW5jZV9udW1iZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBwYWNrZXRfZmVlZGJhY2sucGF5bG9hZF9zaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X2ZlZWRiYWNrLnBhY2luZ19pbmZvKTsKLSAgICBhZGFwdGVy
Xy0+T25TZW50UGFja2V0KHBhY2tldF9mZWVkYmFjay5zZXF1ZW5jZV9udW1iZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYWNrZXRfZmVlZGJhY2suc2VuZF90aW1lX21zKTsKKyAgICBh
ZGFwdGVyXy0+UHJvY2Vzc1NlbnRQYWNrZXQocnRjOjpTZW50UGFja2V0KHBhY2tldF9mZWVkYmFj
ay5zZXF1ZW5jZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfZmVlZGJhY2suc2VuZF90aW1lX21zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRJbmZvKCkpKTsKICAg
fQogCiAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qga1NzcmMgPSA4NDkyOwpAQCAtMTAwLDcg
KzEwMSw3IEBAIFRFU1RfRihUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0LCBPYnNlcnZlclNh
bml0eSkgewogICB9CiAKICAgRVhQRUNUX0NBTEwobW9jaywgT25QYWNrZXRGZWVkYmFja1ZlY3Rv
cihfKSkuVGltZXMoMSk7Ci0gIGFkYXB0ZXJfLT5PblRyYW5zcG9ydEZlZWRiYWNrKGZlZWRiYWNr
KTsKKyAgYWRhcHRlcl8tPlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7CiAKICAg
YWRhcHRlcl8tPkRlUmVnaXN0ZXJQYWNrZXRGZWVkYmFja09ic2VydmVyKCZtb2NrKTsKIApAQCAt
MTE1LDcgKzExNiw3IEBAIFRFU1RfRihUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0LCBPYnNl
cnZlclNhbml0eSkgewogICBFWFBFQ1RfVFJVRShmZWVkYmFjay5BZGRSZWNlaXZlZFBhY2tldChu
ZXdfcGFja2V0LnNlcXVlbmNlX251bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3X3BhY2tldC5hcnJpdmFsX3RpbWVfbXMgKiAxMDAwKSk7CiAgIEVYUEVD
VF9DQUxMKG1vY2ssIE9uUGFja2V0RmVlZGJhY2tWZWN0b3IoXykpLlRpbWVzKDApOwotICBhZGFw
dGVyXy0+T25UcmFuc3BvcnRGZWVkYmFjayhzZWNvbmRfZmVlZGJhY2spOworICBhZGFwdGVyXy0+
UHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNrKHNlY29uZF9mZWVkYmFjayk7CiB9CiAKICNpZiBSVENf
RENIRUNLX0lTX09OICYmIEdURVNUX0hBU19ERUFUSF9URVNUICYmICFkZWZpbmVkKFdFQlJUQ19B
TkRST0lEKQpAQCAtMTU2LDcgKzE1Nyw3IEBAIFRFU1RfRihUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXJUZXN0LCBBZGFwdHNGZWVkYmFja0FuZFBvcHVsYXRlc1NlbmRUaW1lcykgewogCiAgIGZlZWRi
YWNrLkJ1aWxkKCk7CiAKLSAgYWRhcHRlcl8tPk9uVHJhbnNwb3J0RmVlZGJhY2soZmVlZGJhY2sp
OworICBhZGFwdGVyXy0+UHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNrKGZlZWRiYWNrKTsKICAgQ29t
cGFyZVBhY2tldEZlZWRiYWNrVmVjdG9ycyhwYWNrZXRzLCBhZGFwdGVyXy0+R2V0VHJhbnNwb3J0
RmVlZGJhY2tWZWN0b3IoKSk7CiB9CiAKQEAgLTE4OSw3ICsxOTAsNyBAQCBURVNUX0YoVHJhbnNw
b3J0RmVlZGJhY2tBZGFwdGVyVGVzdCwgRmVlZGJhY2tWZWN0b3JSZXBvcnRzVW5yZWNlaXZlZCkg
ewogCiAgIGZlZWRiYWNrLkJ1aWxkKCk7CiAKLSAgYWRhcHRlcl8tPk9uVHJhbnNwb3J0RmVlZGJh
Y2soZmVlZGJhY2spOworICBhZGFwdGVyXy0+UHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNrKGZlZWRi
YWNrKTsKICAgQ29tcGFyZVBhY2tldEZlZWRiYWNrVmVjdG9ycyhzZW50X3BhY2tldHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRlcl8tPkdldFRyYW5zcG9ydEZlZWRiYWNr
VmVjdG9yKCkpOwogfQpAQCAtMjMzLDcgKzIzNCw3IEBAIFRFU1RfRihUcmFuc3BvcnRGZWVkYmFj
a0FkYXB0ZXJUZXN0LCBIYW5kbGVzRHJvcHBlZFBhY2tldHMpIHsKICAgICBleHBlY3RlZF9wYWNr
ZXRzW2ldLnBhY2luZ19pbmZvID0gUGFjZWRQYWNrZXRJbmZvKCk7CiAgIH0KIAotICBhZGFwdGVy
Xy0+T25UcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7CisgIGFkYXB0ZXJfLT5Qcm9jZXNzVHJh
bnNwb3J0RmVlZGJhY2soZmVlZGJhY2spOwogICBDb21wYXJlUGFja2V0RmVlZGJhY2tWZWN0b3Jz
KGV4cGVjdGVkX3BhY2tldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRl
cl8tPkdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCkpOwogfQpAQCAtMjY5LDcgKzI3MCw3IEBA
IFRFU1RfRihUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJUZXN0LCBTZW5kVGltZVdyYXBzQm90aFdh
eXMpIHsKICAgICBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gZXhwZWN0ZWRfcGFja2V0czsK
ICAgICBleHBlY3RlZF9wYWNrZXRzLnB1c2hfYmFjayhwYWNrZXRzW2ldKTsKIAotICAgIGFkYXB0
ZXJfLT5PblRyYW5zcG9ydEZlZWRiYWNrKCpmZWVkYmFjay5nZXQoKSk7CisgICAgYWRhcHRlcl8t
PlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjaygqZmVlZGJhY2suZ2V0KCkpOwogICAgIENvbXBhcmVQ
YWNrZXRGZWVkYmFja1ZlY3RvcnMoZXhwZWN0ZWRfcGFja2V0cywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFkYXB0ZXJfLT5HZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3RvcigpKTsK
ICAgfQpAQCAtMjk4LDcgKzI5OSw3IEBAIFRFU1RfRihUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXJU
ZXN0LCBIYW5kbGVzQXJyaXZhbFJlb3JkZXJpbmcpIHsKICAgLy8gQWRhcHRlciBrZWVwcyB0aGUg
cGFja2V0cyBvcmRlcmVkIGJ5IHNlcXVlbmNlIG51bWJlciAod2hpY2ggaXMgaXRzZWxmCiAgIC8v
IGFzc2lnbmVkIGJ5IHRoZSBvcmRlciBvZiB0cmFuc21pc3Npb24pLiBSZW9yZGVyaW5nIGJ5IHNv
bWUgb3RoZXIgY3JpdGVyaWEsCiAgIC8vIGVnLiBhcnJpdmFsIHRpbWUsIGlzIHVwIHRvIHRoZSBv
YnNlcnZlcnMuCi0gIGFkYXB0ZXJfLT5PblRyYW5zcG9ydEZlZWRiYWNrKGZlZWRiYWNrKTsKKyAg
YWRhcHRlcl8tPlByb2Nlc3NUcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7CiAgIENvbXBhcmVQ
YWNrZXRGZWVkYmFja1ZlY3RvcnMocGFja2V0cywgYWRhcHRlcl8tPkdldFRyYW5zcG9ydEZlZWRi
YWNrVmVjdG9yKCkpOwogfQogCkBAIC0zNjIsNyArMzYzLDcgQEAgVEVTVF9GKFRyYW5zcG9ydEZl
ZWRiYWNrQWRhcHRlclRlc3QsIFRpbWVzdGFtcERlbHRhcykgewogICBzdGQ6OnZlY3RvcjxQYWNr
ZXRGZWVkYmFjaz4gcmVjZWl2ZWRfZmVlZGJhY2s7CiAKICAgRVhQRUNUX1RSVUUoZmVlZGJhY2su
Z2V0KCkgIT0gbnVsbHB0cik7Ci0gIGFkYXB0ZXJfLT5PblRyYW5zcG9ydEZlZWRiYWNrKCpmZWVk
YmFjay5nZXQoKSk7CisgIGFkYXB0ZXJfLT5Qcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2soKmZlZWRi
YWNrLmdldCgpKTsKICAgQ29tcGFyZVBhY2tldEZlZWRiYWNrVmVjdG9ycyhzZW50X3BhY2tldHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRlcl8tPkdldFRyYW5zcG9ydEZl
ZWRiYWNrVmVjdG9yKCkpOwogCkBAIC0zNzcsNyArMzc4LDcgQEAgVEVTVF9GKFRyYW5zcG9ydEZl
ZWRiYWNrQWRhcHRlclRlc3QsIFRpbWVzdGFtcERlbHRhcykgewogICAgICAgcnRjcDo6VHJhbnNw
b3J0RmVlZGJhY2s6OlBhcnNlRnJvbShyYXdfcGFja2V0LmRhdGEoKSwgcmF3X3BhY2tldC5zaXpl
KCkpOwogCiAgIEVYUEVDVF9UUlVFKGZlZWRiYWNrLmdldCgpICE9IG51bGxwdHIpOwotICBhZGFw
dGVyXy0+T25UcmFuc3BvcnRGZWVkYmFjaygqZmVlZGJhY2suZ2V0KCkpOworICBhZGFwdGVyXy0+
UHJvY2Vzc1RyYW5zcG9ydEZlZWRiYWNrKCpmZWVkYmFjay5nZXQoKSk7CiAgIHsKICAgICBzdGQ6
OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gZXhwZWN0ZWRfcGFja2V0czsKICAgICBleHBlY3RlZF9w
YWNrZXRzLnB1c2hfYmFjayhwYWNrZXRfZmVlZGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2MKaW5kZXggZjhiMzE1NWJmOWRjNjZk
OTBkNDE1NzI5NmVkYmE3NWNmZmIyNTYzYy4uMTQ3ZjEwM2U3ODY5NzcxZDI2ZTk5ZjNjNWYxYWY2
N2ZkMTZjMTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rp
b25fY29udHJvbGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9zZW5kX3NpZGVfY29uZ2VzdGlv
bl9jb250cm9sbGVyLmNjCkBAIC0xOCwxNiArMTgsMTYgQEAKIAogI2luY2x1ZGUgImFic2wvbWVt
b3J5L21lbW9yeS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyL2luY2x1
ZGUvYml0cmF0ZV9jb250cm9sbGVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWNrbm93bGVkZ2VkX2Jp
dHJhdGVfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvZ29vZ19jYy9jb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9wcm9iZV9jb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVk
ZS9id2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9y
YXRlX2xpbWl0ZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9m
aWVsZF90cmlhbC5oIgogCkBAIC0xNDMsNiArMTQzLDcgQEAgU2VuZFNpZGVDb25nZXN0aW9uQ29u
dHJvbGxlcjo6U2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcigKICAgICAgIHBhdXNlX3BhY2Vy
XyhmYWxzZSksCiAgICAgICBwYWNlcl9wYXVzZWRfKGZhbHNlKSwKICAgICAgIG1pbl9iaXRyYXRl
X2Jwc18oY29uZ2VzdGlvbl9jb250cm9sbGVyOjpHZXRNaW5CaXRyYXRlQnBzKCkpLAorICAgICAg
cHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfKG5ldyBQcm9iZUJpdHJhdGVFc3RpbWF0b3IoZXZlbnRf
bG9nXykpLAogICAgICAgZGVsYXlfYmFzZWRfYndlXyhuZXcgRGVsYXlCYXNlZEJ3ZShldmVudF9s
b2dfKSksCiAgICAgICBpbl9jd25kX2V4cGVyaW1lbnRfKEN3bmRFeHBlcmltZW50RW5hYmxlZCgp
KSwKICAgICAgIGFjY2VwdGVkX3F1ZXVlX21zXyhrRGVmYXVsdEFjY2VwdGVkUXVldWVNcyksCkBA
IC0xNTMsNyArMTU0LDcgQEAgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6U2VuZFNpZGVD
b25nZXN0aW9uQ29udHJvbGxlcigKICAgICAgIHBhY2VyX3B1c2hiYWNrX2V4cGVyaW1lbnRfKElz
UGFjZXJQdXNoYmFja0V4cGVyaW1lbnRFbmFibGVkKCkpLAogICAgICAgY29uZ2VzdGlvbl93aW5k
b3dfcHVzaGJhY2tfY29udHJvbGxlcl8oCiAgICAgICAgICAgTWF5YmVDcmVhdGVDb25nZXN0aW9u
V2luZG93UHVzaGJhY2tDb250cm9sbGVyKCkpIHsKLSAgZGVsYXlfYmFzZWRfYndlXy0+U2V0TWlu
Qml0cmF0ZShtaW5fYml0cmF0ZV9icHNfKTsKKyAgZGVsYXlfYmFzZWRfYndlXy0+U2V0TWluQml0
cmF0ZShEYXRhUmF0ZTo6YnBzKG1pbl9iaXRyYXRlX2Jwc18pKTsKICAgaWYgKGluX2N3bmRfZXhw
ZXJpbWVudF8gJiYKICAgICAgICFSZWFkQ3duZEV4cGVyaW1lbnRQYXJhbWV0ZXIoJmFjY2VwdGVk
X3F1ZXVlX21zXykpIHsKICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gcGFy
c2UgcGFyYW1ldGVycyBmb3IgQ3duZEV4cGVyaW1lbnQgIgpAQCAtMTY0LDYgKzE2NSwyMyBAQCBT
ZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVy
KAogCiBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjp+U2VuZFNpZGVDb25nZXN0aW9uQ29u
dHJvbGxlcigpIHt9CiAKK3ZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6RW5hYmxl
Q29uZ2VzdGlvbldpbmRvd1B1c2hiYWNrKAorICAgIGludDY0X3QgYWNjZXB0ZWRfcXVldWVfbXMs
CisgICAgdWludDMyX3QgbWluX3B1c2hiYWNrX3RhcmdldF9iaXRyYXRlX2JwcykgeworICBSVENf
RENIRUNLKCFjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9sbGVyXykKKyAgICAgIDw8
ICJUaGUgY29uZ2VzdGlvbiBwdXNoYmFjayBpcyBhbHJlYWR5IGVuYWJsZWQuIjsKKyAgUlRDX0NI
RUNLX0dFKGFjY2VwdGVkX3F1ZXVlX21zLCAwKQorICAgICAgPDwgIkFjY2VwdGVkIG11c3QgYmUg
Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuIjsKKyAgUlRDX0NIRUNLX0dFKG1pbl9wdXNoYmFj
a190YXJnZXRfYml0cmF0ZV9icHMsIDApCisgICAgICA8PCAiTWluIHB1c2hiYWNrIHRhcmdldCBi
aXRyYXRlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuIjsKKworICBpbl9jd25k
X2V4cGVyaW1lbnRfID0gdHJ1ZTsKKyAgYWNjZXB0ZWRfcXVldWVfbXNfID0gYWNjZXB0ZWRfcXVl
dWVfbXM7CisgIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXJfID0KKyAgICAg
IGFic2w6Om1ha2VfdW5pcXVlPENvbmdlc3Rpb25XaW5kb3dQdXNoYmFja0NvbnRyb2xsZXI+KAor
ICAgICAgICAgIG1pbl9wdXNoYmFja190YXJnZXRfYml0cmF0ZV9icHMpOworfQorCiB2b2lkIFNl
bmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6OlJlZ2lzdGVyUGFja2V0RmVlZGJhY2tPYnNlcnZl
cigKICAgICBQYWNrZXRGZWVkYmFja09ic2VydmVyKiBvYnNlcnZlcikgewogICB0cmFuc3BvcnRf
ZmVlZGJhY2tfYWRhcHRlcl8uUmVnaXN0ZXJQYWNrZXRGZWVkYmFja09ic2VydmVyKG9ic2VydmVy
KTsKQEAgLTIwNCw5ICsyMjIsOSBAQCB2b2lkIFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6
OlNldEJ3ZUJpdHJhdGVzKGludCBtaW5fYml0cmF0ZV9icHMsCiAgIHsKICAgICBydGM6OkNyaXRT
Y29wZSBjcygmYndlX2xvY2tfKTsKICAgICBpZiAoc3RhcnRfYml0cmF0ZV9icHMgPiAwKQotICAg
ICAgZGVsYXlfYmFzZWRfYndlXy0+U2V0U3RhcnRCaXRyYXRlKHN0YXJ0X2JpdHJhdGVfYnBzKTsK
KyAgICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZTo6YnBzKHN0
YXJ0X2JpdHJhdGVfYnBzKSk7CiAgICAgbWluX2JpdHJhdGVfYnBzXyA9IG1pbl9iaXRyYXRlX2Jw
czsKLSAgICBkZWxheV9iYXNlZF9id2VfLT5TZXRNaW5CaXRyYXRlKG1pbl9iaXRyYXRlX2Jwc18p
OworICAgIGRlbGF5X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJhdGUoRGF0YVJhdGU6OmJwcyhtaW5f
Yml0cmF0ZV9icHNfKSk7CiAgIH0KICAgTWF5YmVUcmlnZ2VyT25OZXR3b3JrQ2hhbmdlZCgpOwog
fQpAQCAtMjQxLDEwICsyNTksMTMgQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVy
OjpPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJmJ3ZV9sb2Nr
Xyk7CiAgICAgdHJhbnNwb3J0X292ZXJoZWFkX2J5dGVzX3Blcl9wYWNrZXRfID0gbmV0d29ya19y
b3V0ZS5wYWNrZXRfb3ZlcmhlYWQ7CiAgICAgbWluX2JpdHJhdGVfYnBzXyA9IG1pbl9iaXRyYXRl
X2JwczsKKyAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8ucmVzZXQobmV3IFByb2JlQml0cmF0
ZUVzdGltYXRvcihldmVudF9sb2dfKSk7CiAgICAgZGVsYXlfYmFzZWRfYndlXy5yZXNldChuZXcg
RGVsYXlCYXNlZEJ3ZShldmVudF9sb2dfKSk7CiAgICAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0
aW1hdG9yXy5yZXNldChuZXcgQWNrbm93bGVkZ2VkQml0cmF0ZUVzdGltYXRvcigpKTsKLSAgICBk
ZWxheV9iYXNlZF9id2VfLT5TZXRTdGFydEJpdHJhdGUoYml0cmF0ZV9icHMpOwotICAgIGRlbGF5
X2Jhc2VkX2J3ZV8tPlNldE1pbkJpdHJhdGUobWluX2JpdHJhdGVfYnBzKTsKKyAgICBpZiAoYml0
cmF0ZV9icHMgPiAwKSB7CisgICAgICBkZWxheV9iYXNlZF9id2VfLT5TZXRTdGFydEJpdHJhdGUo
RGF0YVJhdGU6OmJwcyhiaXRyYXRlX2JwcykpOworICAgIH0KKyAgICBkZWxheV9iYXNlZF9id2Vf
LT5TZXRNaW5CaXRyYXRlKERhdGFSYXRlOjpicHMobWluX2JpdHJhdGVfYnBzKSk7CiAgIH0KICAg
ewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZwcm9iZV9sb2NrXyk7CkBAIC0zMjEsNyArMzQyLDcg
QEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpPblNlbnRQYWNrZXQoCiB2b2lk
IFNlbmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXI6Ok9uUnR0VXBkYXRlKGludDY0X3QgYXZnX3J0
dF9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCBtYXhfcnR0X21zKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZid2VfbG9ja18pOwotICBk
ZWxheV9iYXNlZF9id2VfLT5PblJ0dFVwZGF0ZShhdmdfcnR0X21zKTsKKyAgZGVsYXlfYmFzZWRf
YndlXy0+T25SdHRVcGRhdGUoVGltZURlbHRhOjptcyhhdmdfcnR0X21zKSk7CiB9CiAKIGludDY0
X3QgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6VGltZVVudGlsTmV4dFByb2Nlc3MoKSB7
CkBAIC0zOTcsOSArNDE4LDE2IEBAIHZvaWQgU2VuZFNpZGVDb25nZXN0aW9uQ29udHJvbGxlcjo6
T25UcmFuc3BvcnRGZWVkYmFjaygKICAgRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0IHJlc3VsdDsKICAg
ewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZid2VfbG9ja18pOworICAgIGZvciAoY29uc3QgYXV0
byYgcGFja2V0IDogZmVlZGJhY2tfdmVjdG9yKSB7CisgICAgICBpZiAocGFja2V0LnNlbmRfdGlt
ZV9tcyAhPSBQYWNrZXRGZWVkYmFjazo6a05vU2VuZFRpbWUgJiYKKyAgICAgICAgICBwYWNrZXQu
cGFjaW5nX2luZm8ucHJvYmVfY2x1c3Rlcl9pZCAhPSBQYWNlZFBhY2tldEluZm86OmtOb3RBUHJv
YmUpIHsKKyAgICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfLT5IYW5kbGVQcm9iZUFuZEVz
dGltYXRlQml0cmF0ZShwYWNrZXQpOworICAgICAgfQorICAgIH0KICAgICByZXN1bHQgPSBkZWxh
eV9iYXNlZF9id2VfLT5JbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAotICAgICAgICBmZWVk
YmFja192ZWN0b3IsIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGVfYnBz
KCksCi0gICAgICAgIGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkpOworICAgICAgICBmZWVk
YmFja192ZWN0b3IsIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl8tPmJpdHJhdGUoKSwK
KyAgICAgICAgcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3JfLT5GZXRjaEFuZFJlc2V0TGFzdEVzdGlt
YXRlZEJpdHJhdGUoKSwKKyAgICAgICAgVGltZXN0YW1wOjptcyhjbG9ja18tPlRpbWVJbk1pbGxp
c2Vjb25kcygpKSk7CiAgIH0KICAgaWYgKHJlc3VsdC51cGRhdGVkKSB7CiAgICAgYml0cmF0ZV9j
b250cm9sbGVyXy0+T25EZWxheUJhc2VkQndlUmVzdWx0KHJlc3VsdCk7CkBAIC01MDEsNyArNTI5
LDcgQEAgdm9pZCBTZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyOjpNYXliZVRyaWdnZXJPbk5l
dHdvcmtDaGFuZ2VkKCkgewogICAgIGludDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tczsKICAgICB7
CiAgICAgICBydGM6OkNyaXRTY29wZSBjcygmYndlX2xvY2tfKTsKLSAgICAgIHByb2JpbmdfaW50
ZXJ2YWxfbXMgPSBkZWxheV9iYXNlZF9id2VfLT5HZXRFeHBlY3RlZEJ3ZVBlcmlvZE1zKCk7Cisg
ICAgICBwcm9iaW5nX2ludGVydmFsX21zID0gZGVsYXlfYmFzZWRfYndlXy0+R2V0RXhwZWN0ZWRC
d2VQZXJpb2QoKS5tcygpOwogICAgIH0KICAgICB7CiAgICAgICBydGM6OkNyaXRTY29wZSBjcygm
b2JzZXJ2ZXJfbG9ja18pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2Nv
bmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3NlbmRfc2lk
ZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKaW5kZXggMzY1M2I4YzIyZjZjYzdh
N2FjNTcyMDQ1YjcwMTNiYWE2MTkxZGMwYy4uNWY1OGYyMWNkZjg5NDZjNGFjOGZhODg1NDU0NjA2
YzRiNzU2M2VmOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rp
b25fY29udHJvbGxlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9zZW5kX3NpZGVf
Y29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjCkBAIC0xOCw3ICsxOCw3IEBACiAjaW5j
bHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5l
cy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVz
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdHJhbnNw
b3J0X2ZlZWRiYWNrLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0LmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVy
cy9pbmNsdWRlL2Nsb2NrLmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1
ZGUgInRlc3QvZ21vY2suaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3RyYW5zcG9ydF9m
ZWVkYmFja19hZGFwdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2Fk
YXB0ZXIuY2MKaW5kZXggM2JhYTNhZDVhNTNjOWFlMmQ1ODk1NmNhMjRhODQyMjMxNzg0ZTg0Mi4u
YjhiNjIwZDAwOGIzMDJmM2E1MTg3M2E0OWJmMWVmZGRhZTU3MmFhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MKQEAgLTI2LDcgKzI2LDggQEAgY29u
c3QgaW50NjRfdCBrQmFzZVRpbWVzdGFtcFNjYWxlRmFjdG9yID0KICAgICBydGNwOjpUcmFuc3Bv
cnRGZWVkYmFjazo6a0RlbHRhU2NhbGVGYWN0b3IgKiAoMSA8PCA4KTsKIGNvbnN0IGludDY0X3Qg
a0Jhc2VUaW1lc3RhbXBSYW5nZVNpemVVcyA9IGtCYXNlVGltZXN0YW1wU2NhbGVGYWN0b3IgKiAo
MSA8PCAyNCk7CiAKLVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6VHJhbnNwb3J0RmVlZGJhY2tB
ZGFwdGVyKGNvbnN0IENsb2NrKiBjbG9jaykKK0xlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRl
cjo6TGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyKAorICAgIGNvbnN0IENsb2NrKiBjbG9j
aykKICAgICA6IHNlbmRfdGltZV9oaXN0b3J5XyhjbG9jaywga1NlbmRUaW1lSGlzdG9yeVdpbmRv
d01zKSwKICAgICAgIGNsb2NrXyhjbG9jayksCiAgICAgICBjdXJyZW50X29mZnNldF9tc18oa05v
VGltZXN0YW1wKSwKQEAgLTM0LDExICszNSwxMSBAQCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6
OlRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcihjb25zdCBDbG9jayogY2xvY2spCiAgICAgICBsb2Nh
bF9uZXRfaWRfKDApLAogICAgICAgcmVtb3RlX25ldF9pZF8oMCkge30KIAotVHJhbnNwb3J0RmVl
ZGJhY2tBZGFwdGVyOjp+VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyKCkgeworTGVnYWN5VHJhbnNw
b3J0RmVlZGJhY2tBZGFwdGVyOjp+TGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyKCkgewog
ICBSVENfRENIRUNLKG9ic2VydmVyc18uZW1wdHkoKSk7CiB9CiAKLXZvaWQgVHJhbnNwb3J0RmVl
ZGJhY2tBZGFwdGVyOjpSZWdpc3RlclBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIoCit2b2lkIExlZ2Fj
eVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6UmVnaXN0ZXJQYWNrZXRGZWVkYmFja09ic2VydmVy
KAogICAgIFBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIqIG9ic2VydmVyKSB7CiAgIHJ0Yzo6Q3JpdFNj
b3BlIGNzKCZvYnNlcnZlcnNfbG9ja18pOwogICBSVENfRENIRUNLKG9ic2VydmVyKTsKQEAgLTQ3
LDcgKzQ4LDcgQEAgdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OlJlZ2lzdGVyUGFja2V0
RmVlZGJhY2tPYnNlcnZlcigKICAgb2JzZXJ2ZXJzXy5wdXNoX2JhY2sob2JzZXJ2ZXIpOwogfQog
Ci12b2lkIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6RGVSZWdpc3RlclBhY2tldEZlZWRiYWNr
T2JzZXJ2ZXIoCit2b2lkIExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6RGVSZWdpc3Rl
clBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIoCiAgICAgUGFja2V0RmVlZGJhY2tPYnNlcnZlciogb2Jz
ZXJ2ZXIpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJm9ic2VydmVyc19sb2NrXyk7CiAgIFJUQ19E
Q0hFQ0sob2JzZXJ2ZXIpOwpAQCAtNTYsMTAgKzU3LDExIEBAIHZvaWQgVHJhbnNwb3J0RmVlZGJh
Y2tBZGFwdGVyOjpEZVJlZ2lzdGVyUGFja2V0RmVlZGJhY2tPYnNlcnZlcigKICAgb2JzZXJ2ZXJz
Xy5lcmFzZShpdCk7CiB9CiAKLXZvaWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpBZGRQYWNr
ZXQodWludDMyX3Qgc3NyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKSB7Cit2b2lk
IExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6QWRkUGFja2V0KAorICAgIHVpbnQzMl90
IHNzcmMsCisgICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAorICAgIHNpemVfdCBsZW5ndGgs
CisgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbykgewogICB7CiAgICAgcnRj
OjpDcml0U2NvcGUgY3MoJmxvY2tfKTsKICAgICBjb25zdCBpbnQ2NF90IGNyZWF0aW9uX3RpbWVf
bXMgPSBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpOwpAQCAtNzYsMjAgKzc4LDIxIEBAIHZv
aWQgVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpBZGRQYWNrZXQodWludDMyX3Qgc3NyYywKICAg
fQogfQogCi12b2lkIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcjo6T25TZW50UGFja2V0KHVpbnQx
Nl90IHNlcXVlbmNlX251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50NjRfdCBzZW5kX3RpbWVfbXMpIHsKK3ZvaWQgTGVnYWN5VHJhbnNwb3J0RmVl
ZGJhY2tBZGFwdGVyOjpPblNlbnRQYWNrZXQodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHNl
bmRfdGltZV9tcykgewogICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwogICBzZW5kX3RpbWVf
aGlzdG9yeV8uT25TZW50UGFja2V0KHNlcXVlbmNlX251bWJlciwgc2VuZF90aW1lX21zKTsKIH0K
IAotdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OlNldE5ldHdvcmtJZHModWludDE2X3Qg
bG9jYWxfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MTZfdCByZW1vdGVfaWQpIHsKK3ZvaWQgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVy
OjpTZXROZXR3b3JrSWRzKHVpbnQxNl90IGxvY2FsX2lkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgcmVtb3RlX2lkKSB7CiAgIHJ0
Yzo6Q3JpdFNjb3BlIGNzKCZsb2NrXyk7CiAgIGxvY2FsX25ldF9pZF8gPSBsb2NhbF9pZDsKICAg
cmVtb3RlX25ldF9pZF8gPSByZW1vdGVfaWQ7CiB9CiAKLXN0ZDo6dmVjdG9yPFBhY2tldEZlZWRi
YWNrPiBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkdldFBhY2tldEZlZWRiYWNrVmVjdG9yKAor
c3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+CitMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0
ZXI6OkdldFBhY2tldEZlZWRiYWNrVmVjdG9yKAogICAgIGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZl
ZWRiYWNrJiBmZWVkYmFjaykgewogICBpbnQ2NF90IHRpbWVzdGFtcF91cyA9IGZlZWRiYWNrLkdl
dEJhc2VUaW1lVXMoKTsKICAgaW50NjRfdCBub3dfbXMgPSBjbG9ja18tPlRpbWVJbk1pbGxpc2Vj
b25kcygpOwpAQCAtMTc3LDcgKzE4MCw3IEBAIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBU
cmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkdldFBhY2tldEZlZWRiYWNrVmVjdG9yKAogICByZXR1
cm4gcGFja2V0X2ZlZWRiYWNrX3ZlY3RvcjsKIH0KIAotdm9pZCBUcmFuc3BvcnRGZWVkYmFja0Fk
YXB0ZXI6Ok9uVHJhbnNwb3J0RmVlZGJhY2soCit2b2lkIExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNr
QWRhcHRlcjo6T25UcmFuc3BvcnRGZWVkYmFjaygKICAgICBjb25zdCBydGNwOjpUcmFuc3BvcnRG
ZWVkYmFjayYgZmVlZGJhY2spIHsKICAgbGFzdF9wYWNrZXRfZmVlZGJhY2tfdmVjdG9yXyA9IEdl
dFBhY2tldEZlZWRiYWNrVmVjdG9yKGZlZWRiYWNrKTsKICAgewpAQCAtMTg5LDE4ICsxOTIsMTkg
QEAgdm9pZCBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6Ok9uVHJhbnNwb3J0RmVlZGJhY2soCiB9
CiAKIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPgotVHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVy
OjpHZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3RvcigpIGNvbnN0IHsKK0xlZ2FjeVRyYW5zcG9ydEZl
ZWRiYWNrQWRhcHRlcjo6R2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKSBjb25zdCB7CiAgIHJl
dHVybiBsYXN0X3BhY2tldF9mZWVkYmFja192ZWN0b3JfOwogfQogCi1hYnNsOjpvcHRpb25hbDxp
bnQ2NF90PiBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6OkdldE1pbkZlZWRiYWNrTG9vcFJ0dCgp
CithYnNsOjpvcHRpb25hbDxpbnQ2NF90PiBMZWdhY3lUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXI6
OkdldE1pbkZlZWRiYWNrTG9vcFJ0dCgpCiAgICAgY29uc3QgewogICBydGM6OkNyaXRTY29wZSBj
cygmbG9ja18pOwogICByZXR1cm4gbWluX2ZlZWRiYWNrX3J0dF87CiB9CiAKLXNpemVfdCBUcmFu
c3BvcnRGZWVkYmFja0FkYXB0ZXI6OkdldE91dHN0YW5kaW5nQnl0ZXMoKSBjb25zdCB7CitzaXpl
X3QgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyOjpHZXRPdXRzdGFuZGluZ0J5dGVzKCkg
Y29uc3QgewogICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwotICByZXR1cm4gc2VuZF90aW1l
X2hpc3RvcnlfLkdldE91dHN0YW5kaW5nQnl0ZXMobG9jYWxfbmV0X2lkXywgcmVtb3RlX25ldF9p
ZF8pOworICByZXR1cm4gc2VuZF90aW1lX2hpc3RvcnlfLkdldE91dHN0YW5kaW5nRGF0YShsb2Nh
bF9uZXRfaWRfLCByZW1vdGVfbmV0X2lkXykKKyAgICAgIC5ieXRlcygpOwogfQogfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvdHJhbnNwb3J0X2ZlZWRi
YWNrX2FkYXB0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVy
LmgKaW5kZXggMjA2MjM2Y2U4YmE3ZDJkOTJkMTY5NjBjN2M3NjFjZTQwNmE0ZDJhNy4uYzZhYzJh
ZDlhZDRiYWU5YjJkMjU0ODMyZTk2NTM1YTA3ZjYwZGZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRy
b2xsZXIvdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci90
cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oCkBAIC0yOSwxMCArMjksMTIgQEAgbmFtZXNwYWNl
IHJ0Y3AgewogY2xhc3MgVHJhbnNwb3J0RmVlZGJhY2s7CiB9ICAvLyBuYW1lc3BhY2UgcnRjcAog
Ci1jbGFzcyBUcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIgeworLy8gRGVwcmVjYXRlZCwgdXNlIHZl
cnNpb24gaW4KKy8vIG1vZHVsZXMvY29uZ2Vlc3Rpb25fY29udHJvbGxlci9ydHAvdHJhbnNwb3J0
X2ZlZWRiYWNrX2FkYXB0ZXIuaAorY2xhc3MgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVy
IHsKICBwdWJsaWM6Ci0gIGV4cGxpY2l0IFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcihjb25zdCBD
bG9jayogY2xvY2spOwotICB2aXJ0dWFsIH5UcmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIoKTsKKyAg
ZXhwbGljaXQgTGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyKGNvbnN0IENsb2NrKiBjbG9j
ayk7CisgIHZpcnR1YWwgfkxlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlcigpOwogCiAgIHZv
aWQgUmVnaXN0ZXJQYWNrZXRGZWVkYmFja09ic2VydmVyKFBhY2tldEZlZWRiYWNrT2JzZXJ2ZXIq
IG9ic2VydmVyKTsKICAgdm9pZCBEZVJlZ2lzdGVyUGFja2V0RmVlZGJhY2tPYnNlcnZlcihQYWNr
ZXRGZWVkYmFja09ic2VydmVyKiBvYnNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci90cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L3RyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyX3VuaXR0ZXN0LmNjCmluZGV4IDM5YWE3MmU4MTY3
ZTdhYjhjNzQ0YzQ3NTJlMmU0NzUzNWZlYTZjYjkuLmRjNGVhYjEzZDY1MTA4MGMyYzhiZDJkMjVi
MWM1OWUxODJlOGU2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3RyYW5zcG9ydF9mZWVk
YmFja19hZGFwdGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL3RyYW5zcG9ydF9m
ZWVkYmFja19hZGFwdGVyX3VuaXR0ZXN0LmNjCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIExlZ2Fj
eVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsK
ICAgdmlydHVhbCB+TGVnYWN5VHJhbnNwb3J0RmVlZGJhY2tBZGFwdGVyVGVzdCgpIHt9CiAKICAg
dmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIGFkYXB0ZXJfLnJlc2V0KG5ldyBUcmFuc3BvcnRG
ZWVkYmFja0FkYXB0ZXIoJmNsb2NrXykpOworICAgIGFkYXB0ZXJfLnJlc2V0KG5ldyBMZWdhY3lU
cmFuc3BvcnRGZWVkYmFja0FkYXB0ZXIoJmNsb2NrXykpOwogICB9CiAKICAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgeyBhZGFwdGVyXy5yZXNldCgpOyB9CkBAIC03NSw3ICs3NSw3IEBAIGNsYXNz
IExlZ2FjeVRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBrU3NyYyA9IDg0OTI7CiAKICAgU2lt
dWxhdGVkQ2xvY2sgY2xvY2tfOwotICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RmVlZGJhY2tB
ZGFwdGVyPiBhZGFwdGVyXzsKKyAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeVRyYW5zcG9ydEZlZWRi
YWNrQWRhcHRlcj4gYWRhcHRlcl87CiB9OwogCiBURVNUX0YoTGVnYWN5VHJhbnNwb3J0RmVlZGJh
Y2tBZGFwdGVyVGVzdCwgT2JzZXJ2ZXJTYW5pdHkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL0JV
SUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvQlVJTEQuZ24KaW5kZXggNzRkZTE3NDdhZmQzYzA0Yjg3MTU5N2Rj
ODNiMWJhMjBlZTMwMjg2Ni4uMzkwZmMwYTA1MWIyNjQwNThjZDBjNmM2ZmViZDljNzIwN2EwMTU0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvQlVJTEQuZ24K
QEAgLTYsNiArNiw3IEBACiAjIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKICMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAKK2ltcG9ydCgiLy9idWlsZC9jb25maWcvbGlu
dXgvcGtnX2NvbmZpZy5nbmkiKQogaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy91aS5nbmkiKQogaW1w
b3J0KCIuLi8uLi93ZWJydGMuZ25pIikKIApAQCAtMjgsOCArMjksOCBAQCBydGNfc3RhdGljX2xp
YnJhcnkoInByaW1pdGl2ZXMiKSB7CiAgIF0KIAogICBkZXBzID0gWwotICAgICIuLi8uLjp3ZWJy
dGNfY29tbW9uIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKKyAgICAiLi4vLi4vcnRj
X2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnkiLAogICBdCiAKQEAgLTk1LDcgKzk2LDYgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rl
c3RzKSB7CiAgICAgICAiOmRlc2t0b3BfY2FwdHVyZSIsCiAgICAgICAiOmRlc2t0b3BfY2FwdHVy
ZV9tb2NrIiwKICAgICAgICI6cHJpbWl0aXZlcyIsCi0gICAgICAiLi4vLi46d2VicnRjX2NvbW1v
biIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAgICIuLi8uLi9ydGNfYmFz
ZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmNwdV9m
ZWF0dXJlc19hcGkiLApAQCAtMTY0LDYgKzE2NCwyMyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMp
IHsKICAgfQogfQogCitpZiAoaXNfbGludXgpIHsKKyAgaWYgKHJ0Y191c2VfcGlwZXdpcmUpIHsK
KyAgICBwa2dfY29uZmlnKCJwaXBld2lyZSIpIHsKKyAgICAgIHBhY2thZ2VzID0gWyAibGlicGlw
ZXdpcmUtMC4yIiBdCisKKyAgICAgIGRlZmluZXMgPSBbICJXRUJSVENfVVNFX1BJUEVXSVJFIiBd
CisgICAgfQorCisgICAgcGtnX2NvbmZpZygiZ2lvIikgeworICAgICAgcGFja2FnZXMgPSBbCisg
ICAgICAgICJnaW8tMi4wIiwKKyAgICAgICAgImdpby11bml4LTIuMCIsCisgICAgICBdCisgICAg
fQorICB9Cit9CisKIHJ0Y19zb3VyY2Vfc2V0KCJkZXNrdG9wX2NhcHR1cmUiKSB7CiAgIHZpc2li
aWxpdHkgPSBbICIqIiBdCiAgIHB1YmxpY19kZXBzID0gWwpAQCAtMzIxLDM5ICszMzgsNjkgQEAg
cnRjX3N0YXRpY19saWJyYXJ5KCJkZXNrdG9wX2NhcHR1cmVfZ2VuZXJpYyIpIHsKICAgICBdCiAg
IH0KIAorICBpZiAocnRjX3VzZV94MTEgfHwgcnRjX3VzZV9waXBld2lyZSkgeworICAgIHNvdXJj
ZXMgKz0gWworICAgICAgIm1vdXNlX2N1cnNvcl9tb25pdG9yX2xpbnV4LmNjIiwKKyAgICAgICJz
Y3JlZW5fY2FwdHVyZXJfbGludXguY2MiLAorICAgICAgIndpbmRvd19jYXB0dXJlcl9saW51eC5j
YyIsCisgICAgXQorCisgICAgaWYgKGJ1aWxkX3dpdGhfbW96aWxsYSkgeworICAgICAgc291cmNl
cyArPSBbICJhcHBfY2FwdHVyZXJfbGludXguY2MiIF0KKyAgICB9CisgIH0KKwogICBpZiAocnRj
X3VzZV94MTEpIHsKICAgICBzb3VyY2VzICs9IFsKLSAgICAgICJtb3VzZV9jdXJzb3JfbW9uaXRv
cl94MTEuY2MiLAotICAgICAgInNjcmVlbl9jYXB0dXJlcl94MTEuY2MiLAotICAgICAgIndpbmRv
d19jYXB0dXJlcl94MTEuY2MiLAotICAgICAgIndpbmRvd19maW5kZXJfeDExLmNjIiwKLSAgICAg
ICJ3aW5kb3dfZmluZGVyX3gxMS5oIiwKLSAgICAgICJ4MTEvc2hhcmVkX3hfZGlzcGxheS5jYyIs
Ci0gICAgICAieDExL3NoYXJlZF94X2Rpc3BsYXkuaCIsCi0gICAgICAieDExL3dpbmRvd19saXN0
X3V0aWxzLmNjIiwKLSAgICAgICJ4MTEvd2luZG93X2xpc3RfdXRpbHMuaCIsCi0gICAgICAieDEx
L3hfYXRvbV9jYWNoZS5jYyIsCi0gICAgICAieDExL3hfYXRvbV9jYWNoZS5oIiwKLSAgICAgICJ4
MTEveF9lcnJvcl90cmFwLmNjIiwKLSAgICAgICJ4MTEveF9lcnJvcl90cmFwLmgiLAotICAgICAg
IngxMS94X3NlcnZlcl9waXhlbF9idWZmZXIuY2MiLAotICAgICAgIngxMS94X3NlcnZlcl9waXhl
bF9idWZmZXIuaCIsCisgICAgICAibGludXgvbW91c2VfY3Vyc29yX21vbml0b3JfeDExLmNjIiwK
KyAgICAgICJsaW51eC9tb3VzZV9jdXJzb3JfbW9uaXRvcl94MTEuaCIsCisgICAgICAibGludXgv
c2NyZWVuX2NhcHR1cmVyX3gxMS5jYyIsCisgICAgICAibGludXgvc2NyZWVuX2NhcHR1cmVyX3gx
MS5oIiwKKyAgICAgICJsaW51eC9zaGFyZWRfeF9kaXNwbGF5LmNjIiwKKyAgICAgICJsaW51eC9z
aGFyZWRfeF9kaXNwbGF5LmgiLAorICAgICAgImxpbnV4L3dpbmRvd19jYXB0dXJlcl94MTEuY2Mi
LAorICAgICAgImxpbnV4L3dpbmRvd19jYXB0dXJlcl94MTEuaCIsCisgICAgICAibGludXgvd2lu
ZG93X2ZpbmRlcl94MTEuY2MiLAorICAgICAgImxpbnV4L3dpbmRvd19maW5kZXJfeDExLmgiLAor
ICAgICAgImxpbnV4L3dpbmRvd19saXN0X3V0aWxzLmNjIiwKKyAgICAgICJsaW51eC93aW5kb3df
bGlzdF91dGlscy5oIiwKKyAgICAgICJsaW51eC94X2F0b21fY2FjaGUuY2MiLAorICAgICAgImxp
bnV4L3hfYXRvbV9jYWNoZS5oIiwKKyAgICAgICJsaW51eC94X2Vycm9yX3RyYXAuY2MiLAorICAg
ICAgImxpbnV4L3hfZXJyb3JfdHJhcC5oIiwKKyAgICAgICJsaW51eC94X3NlcnZlcl9waXhlbF9i
dWZmZXIuY2MiLAorICAgICAgImxpbnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIiwKICAgICBd
CiAgICAgY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9saW51eDp4MTEiIF0KIAogICAgIGlm
IChidWlsZF93aXRoX21vemlsbGEpIHsKICAgICAgIHNvdXJjZXMgKz0gWwotICAgICAgICAiYXBw
X2NhcHR1cmVyX3gxMS5jYyIsCi0gICAgICAgICJhcHBfY2FwdHVyZXJfeDExLmgiLAotICAgICAg
ICAieDExL2Rlc2t0b3BfZGV2aWNlX2luZm9feDExLmNjIiwKLSAgICAgICAgIngxMS9kZXNrdG9w
X2RldmljZV9pbmZvX3gxMS5oIiwKLSAgICAgICAgIngxMS9zaGFyZWRfeF91dGlsLmNjIiwKLSAg
ICAgICAgIngxMS9zaGFyZWRfeF91dGlsLmgiLAorICAgICAgICAibGludXgvYXBwX2NhcHR1cmVy
X3gxMS5jYyIsCisgICAgICAgICJsaW51eC9kZXNrdG9wX2RldmljZV9pbmZvX2xpbnV4LmNjIiwK
KyAgICAgICAgImxpbnV4L2Rlc2t0b3BfZGV2aWNlX2luZm9fbGludXguaCIsCisgICAgICAgICJs
aW51eC9zaGFyZWRfeF91dGlsLmNjIiwKKyAgICAgICAgImxpbnV4L3NoYXJlZF94X3V0aWwuaCIs
CiAgICAgICBdCiAgICAgfQogICB9CiAKLSAgaWYgKCFpc193aW4gJiYgIWlzX21hYyAmJiAhcnRj
X3VzZV94MTEpIHsKKyAgaWYgKHJ0Y191c2VfcGlwZXdpcmUpIHsKKyAgICBzb3VyY2VzICs9IFsK
KyAgICAgICJsaW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmNjIiwKKyAgICAgICJsaW51eC9i
YXNlX2NhcHR1cmVyX3BpcGV3aXJlLmgiLAorICAgICAgImxpbnV4L3NjcmVlbl9jYXB0dXJlcl9w
aXBld2lyZS5jYyIsCisgICAgICAibGludXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmgiLAor
ICAgICAgImxpbnV4L3dpbmRvd19jYXB0dXJlcl9waXBld2lyZS5jYyIsCisgICAgICAibGludXgv
d2luZG93X2NhcHR1cmVyX3BpcGV3aXJlLmgiLAorICAgIF0KKworICAgIGNvbmZpZ3MgKz0gWwor
ICAgICAgIjpnaW8iLAorICAgICAgIjpwaXBld2lyZSIsCisgICAgXQorICB9CisKKyAgaWYgKCFp
c193aW4gJiYgIWlzX21hYyAmJiAhcnRjX3VzZV94MTEgJiYgIXJ0Y191c2VfcGlwZXdpcmUpIHsK
ICAgICBzb3VyY2VzICs9IFsKICAgICAgICJtb3VzZV9jdXJzb3JfbW9uaXRvcl9udWxsLmNjIiwK
ICAgICAgICJzY3JlZW5fY2FwdHVyZXJfbnVsbC5jYyIsCkBAIC0zNzAsMTIgKzQxNywxMiBAQCBy
dGNfc3RhdGljX2xpYnJhcnkoImRlc2t0b3BfY2FwdHVyZV9nZW5lcmljIikgewogCiAgIGRlcHMg
PSBbCiAgICAgIjpwcmltaXRpdmVzIiwKLSAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAg
Ii4uLy4uL2FwaTpyZWZjb3VudGVkYmFzZSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIs
CiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwgICMgVE9ETyhramVsbGFuZGVyKTogQ2xl
YW51cCBpbiBidWdzLndlYnJ0Yy5vcmcvMzgwNi4KICAgICAiLi4vLi4vcnRjX2Jhc2Uvc3luY2hy
b25pemF0aW9uOnJ3X2xvY2tfd3JhcHBlciIsCiAgICAgIi4uLy4uL3J0Y19iYXNlL3N5c3RlbTph
cmNoIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIuLi8u
Li9zeXN0ZW1fd3JhcHBlcnMiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6Y3B1X2ZlYXR1
cmVzX2FwaSIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL2Nyb3BwZWRfZGVza3RvcF9mcmFtZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBlZF9k
ZXNrdG9wX2ZyYW1lLmgKaW5kZXggNTlkY2VkNDAxNzliZGQ5M2Q4MWMzYjQ3YWU3M2E1ZjcxOTlj
NmEzYy4uNjc4MjM5OGE2YWIxZTIxZDM1ZTExNWJjNDgwMWE2YWNmMzI4MTRjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvY3JvcHBlZF9kZXNrdG9wX2ZyYW1lLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBl
ZF9kZXNrdG9wX2ZyYW1lLmgKQEAgLTEyLDYgKzEyLDcgQEAKICNkZWZpbmUgTU9EVUxFU19ERVNL
VE9QX0NBUFRVUkVfQ1JPUFBFRF9ERVNLVE9QX0ZSQU1FX0hfCiAKICNpbmNsdWRlICJtb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lz
dGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTIwLDkgKzIxLDkg
QEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAvLyB8ZnJhbWV8IHNob3VsZCBub3QgYmUgbnVsbHB0ci4g
fHJlY3R8IGlzIGluIHxmcmFtZXwgY29vcmRpbmF0ZSwgaS5lLgogLy8gfGZyYW1lfC0+dG9wX2xl
ZnQoKSBkb2VzIG5vdCBpbXBhY3QgdGhlIGFyZWEgb2YgfHJlY3R8LgogLy8gUmV0dXJucyBudWxs
cHRyIGZyYW1lIGlmIHxyZWN0fCBpcyBub3QgY29udGFpbmVkIGJ5IHRoZSBib3VuZHMgb2YgfGZy
YW1lfC4KLXN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IENyZWF0ZUNyb3BwZWREZXNrdG9w
RnJhbWUoCi0gICAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gZnJhbWUsCi0gICAgY29u
c3QgRGVza3RvcFJlY3QmIHJlY3QpOworc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gUlRD
X0VYUE9SVAorQ3JlYXRlQ3JvcHBlZERlc2t0b3BGcmFtZShzdGQ6OnVuaXF1ZV9wdHI8RGVza3Rv
cEZyYW1lPiBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGVza3RvcFJl
Y3QmIHJlY3QpOwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL2Nyb3BwaW5nX3dpbmRvd19jYXB0dXJlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBpbmdfd2luZG93
X2NhcHR1cmVyLmgKaW5kZXggYzg4OTgwMWRhM2M1YmJmZWI1Yzg0OWNiNzZlMGZjNWM4NmY0Yjcw
Zi4uMjI0MTk4ZmE2MTUxMTBiMTQyMTZkYzUwZTNmY2MwMzE4MWFmN2ZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvY3JvcHBpbmdfd2luZG93X2NhcHR1cmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvY3JvcHBp
bmdfd2luZG93X2NhcHR1cmVyLmgKQEAgLTE1LDE0ICsxNSwxNSBAQAogCiAjaW5jbHVkZSAibW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8v
IFdpbmRvd0NhcHR1cmVyIGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcyBhIHNjcmVlbiBjYXB0dXJl
ciB0byBjYXB0dXJlIHRoZQogLy8gd2hvbGUgc2NyZWVuIGFuZCBjcm9wcyB0aGUgdmlkZW8gZnJh
bWUgdG8gdGhlIHdpbmRvdyBhcmVhIHdoZW4gdGhlIGNhcHR1cmVkCiAvLyB3aW5kb3cgaXMgb24g
dG9wLgotY2xhc3MgQ3JvcHBpbmdXaW5kb3dDYXB0dXJlciA6IHB1YmxpYyBEZXNrdG9wQ2FwdHVy
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIERlc2t0b3BDYXB0dXJl
cjo6Q2FsbGJhY2sgeworY2xhc3MgUlRDX0VYUE9SVCBDcm9wcGluZ1dpbmRvd0NhcHR1cmVyIDog
cHVibGljIERlc2t0b3BDYXB0dXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBEZXNrdG9wQ2FwdHVyZXI6OkNhbGxiYWNrIHsKICBwdWJsaWM6CiAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBDcmVhdGVDYXB0dXJlcigK
ICAgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9kZXNrdG9wX2FuZF9jdXJzb3JfY29tcG9zZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0
b3BfYW5kX2N1cnNvcl9jb21wb3Nlci5oCmluZGV4IDdkZmY3MTAxZjM1ZDgzM2M2OTMzMWY2NmI3
YjdhNmZiM2MzMzAwODkuLmZhNWQxNWM5MmY2MDE4ZjhmZmJhZjBjNDRlY2RmYzQzM2E5NGRmOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfYW5kX2N1cnNvcl9jb21wb3Nlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL2Rlc2t0b3BfYW5kX2N1cnNvcl9jb21wb3Nlci5oCkBAIC0xNywxNCArMTcsMTYg
QEAKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2VfY3Vyc29yX21vbml0b3Iu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIC8vIEEg
d3JhcHBlciBmb3IgRGVza3RvcENhcHR1cmVyIHRoYXQgYWxzbyBjYXB0dXJlcyBtb3VzZSB1c2lu
ZyBzcGVjaWZpZWQKIC8vIE1vdXNlQ3Vyc29yTW9uaXRvciBhbmQgcmVuZGVycyBpdCBvbiB0aGUg
Z2VuZXJhdGVkIHN0cmVhbXMuCi1jbGFzcyBEZXNrdG9wQW5kQ3Vyc29yQ29tcG9zZXIgOiBwdWJs
aWMgRGVza3RvcENhcHR1cmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIERlc2t0b3BDYXB0dXJlcjo6Q2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgTW91c2VDdXJzb3JNb25pdG9yOjpDYWxsYmFjayB7CitjbGFzcyBSVENf
RVhQT1JUIERlc2t0b3BBbmRDdXJzb3JDb21wb3NlcgorICAgIDogcHVibGljIERlc2t0b3BDYXB0
dXJlciwKKyAgICAgIHB1YmxpYyBEZXNrdG9wQ2FwdHVyZXI6OkNhbGxiYWNrLAorICAgICAgcHVi
bGljIE1vdXNlQ3Vyc29yTW9uaXRvcjo6Q2FsbGJhY2sgewogIHB1YmxpYzoKICAgLy8gQ3JlYXRl
cyBhIG5ldyBibGVuZGVyIHRoYXQgY2FwdHVyZXMgbW91c2UgY3Vyc29yIHVzaW5nCiAgIC8vIE1v
dXNlQ3Vyc29yTW9uaXRvcjo6Q3JlYXRlKG9wdGlvbnMpIGFuZCByZW5kZXJzIGl0IGludG8gdGhl
IGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgKaW5kZXggNjBhYTA1YzNmZDMzMjlk
Mjc0NzgxMmYwZjQ4Mzg1MTRlNzlkM2Y4Mi4uZTk1ODdhM2Y1MGMzMWIwODUzNWQ4ZDdhMDViZmQ0
NjlmZjM3NzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVfb3B0aW9ucy5oCkBAIC0xMiw5ICsxMiwx
MCBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0
Y19leHBvcnQuaCIKIAogI2lmIGRlZmluZWQoVVNFX1gxMSkKLSNpbmNsdWRlICJtb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hfZGlzcGxheS5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJlZF94X2Rpc3BsYXkuaCIKICNlbmRpZgogCiAjaWYg
ZGVmaW5lZChXRUJSVENfTUFDKSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQpAQCAtMjYsNyArMjcs
NyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gQW4gb2JqZWN0IHRoYXQgc3RvcmVzIGluaXRp
YWxpemF0aW9uIHBhcmFtZXRlcnMgZm9yIHNjcmVlbiBhbmQgd2luZG93CiAvLyBjYXB0dXJlcnMu
Ci1jbGFzcyBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMgeworY2xhc3MgUlRDX0VYUE9SVCBEZXNrdG9w
Q2FwdHVyZU9wdGlvbnMgewogIHB1YmxpYzoKICAgLy8gUmV0dXJucyBpbnN0YW5jZSBvZiBEZXNr
dG9wQ2FwdHVyZU9wdGlvbnMgd2l0aCBkZWZhdWx0IHBhcmFtZXRlcnMuIE9uIExpbnV4CiAgIC8v
IGFsc28gaW5pdGlhbGl6ZXMgWCB3aW5kb3cgY29ubmVjdGlvbi4geF9kaXNwbGF5KCkgd2lsbCBi
ZSBzZXQgdG8gbnVsbCBpZgpAQCAtMTE0LDYgKzExNSwxMSBAQCBjbGFzcyBEZXNrdG9wQ2FwdHVy
ZU9wdGlvbnMgewogICB9CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lS
RSkKKyAgYm9vbCBhbGxvd19waXBld2lyZSgpIGNvbnN0IHsgcmV0dXJuIGFsbG93X3BpcGV3aXJl
XzsgfQorICB2b2lkIHNldF9hbGxvd19waXBld2lyZShib29sIGFsbG93KSB7IGFsbG93X3BpcGV3
aXJlXyA9IGFsbG93OyB9CisjZW5kaWYKKwogIHByaXZhdGU6CiAjaWYgZGVmaW5lZChVU0VfWDEx
KQogICBydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVkWERpc3BsYXk+IHhfZGlzcGxheV87CkBAIC0x
MzcsNiArMTQzLDkgQEAgY2xhc3MgRGVza3RvcENhcHR1cmVPcHRpb25zIHsKICNlbmRpZgogICBi
b29sIGRpc2FibGVfZWZmZWN0c18gPSB0cnVlOwogICBib29sIGRldGVjdF91cGRhdGVkX3JlZ2lv
bl8gPSBmYWxzZTsKKyNpZiBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpCisgIGJvb2wgYWxs
b3dfcGlwZXdpcmVfID0gZmFsc2U7CisjZW5kaWYKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9k
ZXNrdG9wX2NhcHR1cmVyLmNjCmluZGV4IDE2NmQ5N2NjNTJhZjY5OTc3ZTNkYTFlYjliMWI5NGM1
NzBiODEwNWUuLjE5MGY2MWU4MTc1NWEzMjZmZmEwNDZhZWVmM2EwM2JjMjc5MmM0NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3Rv
cF9jYXB0dXJlci5jYwpAQCAtOCw2ICs4LDggQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCisjaW5jbHVkZSA8
Y3N0cmluZz4KKwogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2Fw
dHVyZXIuaCIKIAogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2Fw
dHVyZV9vcHRpb25zLmgiCkBAIC02MCw0ICs2MiwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVza3Rv
cENhcHR1cmVyPiBEZXNrdG9wQ2FwdHVyZXI6OkNyZWF0ZVNjcmVlbkNhcHR1cmVyKAogICByZXR1
cm4gY2FwdHVyZXI7CiB9CiAKKyNpZiBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpIHx8IGRl
ZmluZWQoVVNFX1gxMSkKK2Jvb2wgRGVza3RvcENhcHR1cmVyOjpJc1J1bm5pbmdVbmRlcldheWxh
bmQoKSB7CisgIGNvbnN0IGNoYXIqIHhkZ19zZXNzaW9uX3R5cGUgPSBnZXRlbnYoIlhER19TRVNT
SU9OX1RZUEUiKTsKKyAgaWYgKCF4ZGdfc2Vzc2lvbl90eXBlIHx8IHN0cm5jbXAoeGRnX3Nlc3Np
b25fdHlwZSwgIndheWxhbmQiLCA3KSAhPSAwKQorICAgIHJldHVybiBmYWxzZTsKKworICBpZiAo
IShnZXRlbnYoIldBWUxBTkRfRElTUExBWSIpKSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgcmV0
dXJuIHRydWU7Cit9CisjZW5kaWYgIC8vIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkgfHwg
ZGVmaW5lZChVU0VfWDExKQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgK
aW5kZXggNDcxOTZjZmU0OTEwODNkNjY2OTMwZWI5NTU2YjM5YTFjM2Q3MjkyZi4uZjlkYWNjMWY3
YTM4NDc3ZjdlMzI4M2VlYjYyZDgzYTkxM2FiZjBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVz
a3RvcF9jYXB0dXJlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuaApAQCAtMjIs
NiArMjIsNyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2Fw
dHVyZV90eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3Bf
ZnJhbWUuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zaGFyZWRfbWVtb3J5
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKQEAgLTI5LDcgKzMwLDcgQEAgY2xhc3MgRGVza3RvcENhcHR1cmVPcHRpb25z
OwogY2xhc3MgRGVza3RvcEZyYW1lOwogCiAvLyBBYnN0cmFjdCBpbnRlcmZhY2UgZm9yIHNjcmVl
biBhbmQgd2luZG93IGNhcHR1cmVycy4KLWNsYXNzIERlc2t0b3BDYXB0dXJlciB7CitjbGFzcyBS
VENfRVhQT1JUIERlc2t0b3BDYXB0dXJlciB7CiAgcHVibGljOgogICBlbnVtIGNsYXNzIFJlc3Vs
dCB7CiAgICAgLy8gVGhlIGZyYW1lIHdhcyBjYXB0dXJlZCBzdWNjZXNzZnVsbHkuCkBAIC0xMzQs
NiArMTM1LDEwIEBAIGNsYXNzIERlc2t0b3BDYXB0dXJlciB7CiAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBDcmVhdGVTY3JlZW5DYXB0dXJlcigKICAgICAgIGNvbnN0
IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7CiAKKyNpZiBkZWZpbmVkKFdFQlJUQ19V
U0VfUElQRVdJUkUpIHx8IGRlZmluZWQoVVNFX1gxMSkKKyAgc3RhdGljIGJvb2wgSXNSdW5uaW5n
VW5kZXJXYXlsYW5kKCk7CisjZW5kaWYgIC8vIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkg
fHwgZGVmaW5lZChVU0VfWDExKQorCiAgcHJvdGVjdGVkOgogICAvLyBDcm9wcGluZ1dpbmRvd0Nh
cHR1cmVyIG5lZWRzIHRvIGNyZWF0ZSByYXcgY2FwdHVyZXJzIHdpdGhvdXQgd3JhcHBlcnMsIHNv
CiAgIC8vIHRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgcHJvdGVjdGVkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5o
CmluZGV4IDZmN2VkZmNjNGY3MDk1ZTFlZjIzNjZlODA4OGU0Njk0YjUzODkyMTguLjI5Yjg0Yjcx
ODM3MmNmMGQyMjc1NzI5NDg0YzU5NjE0MDg5MjY0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rl
c2t0b3BfZnJhbWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgKQEAgLTE4LDEzICsx
OCwxNCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfcmVnaW9u
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2hhcmVkX21lbW9yeS5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY29uc3QgaW50
IGtTdGFuZGFyZERQSSA9IDk2OwogCiAvLyBEZXNrdG9wRnJhbWUgcmVwcmVzZW50cyBhIHZpZGVv
IGZyYW1lIGNhcHR1cmVkIGZyb20gdGhlIHNjcmVlbi4KLWNsYXNzIERlc2t0b3BGcmFtZSB7Citj
bGFzcyBSVENfRVhQT1JUIERlc2t0b3BGcmFtZSB7CiAgcHVibGljOgogICAvLyBEZXNrdG9wRnJh
bWUgb2JqZWN0cyBhbHdheXMgaG9sZCBSR0JBIGRhdGEuCiAgIHN0YXRpYyBjb25zdCBpbnQga0J5
dGVzUGVyUGl4ZWwgPSA0OwpAQCAtMTM1LDcgKzEzNiw3IEBAIGNsYXNzIERlc2t0b3BGcmFtZSB7
CiB9OwogCiAvLyBBIERlc2t0b3BGcmFtZSB0aGF0IHN0b3JlcyBkYXRhIGluIHRoZSBoZWFwLgot
Y2xhc3MgQmFzaWNEZXNrdG9wRnJhbWUgOiBwdWJsaWMgRGVza3RvcEZyYW1lIHsKK2NsYXNzIFJU
Q19FWFBPUlQgQmFzaWNEZXNrdG9wRnJhbWUgOiBwdWJsaWMgRGVza3RvcEZyYW1lIHsKICBwdWJs
aWM6CiAgIGV4cGxpY2l0IEJhc2ljRGVza3RvcEZyYW1lKERlc2t0b3BTaXplIHNpemUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2dlb21ldHJ5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9w
X2dlb21ldHJ5LmgKaW5kZXggMDlhZDU1YmI0YmYxNTZkM2NhOTlmODEzNmNiYzVmNjY4NmZhYzM5
OC4uNjIzYTQ1NTVmOWY0OGQ2YzYxMDgzMWQyZDAzMzVhMTc5YmQ2YTdlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvZGVza3RvcF9nZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0
cnkuaApAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgPHN0ZGludC5oPgogCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9y
dGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC03NCw3ICs3NSw3IEBAIGNs
YXNzIERlc2t0b3BTaXplIHsKIH07CiAKIC8vIFJlcHJlc2VudHMgYSByZWN0YW5nbGUgb24gdGhl
IHNjcmVlbi4KLWNsYXNzIERlc2t0b3BSZWN0IHsKK2NsYXNzIFJUQ19FWFBPUlQgRGVza3RvcFJl
Y3QgewogIHB1YmxpYzoKICAgc3RhdGljIERlc2t0b3BSZWN0IE1ha2VTaXplKGNvbnN0IERlc2t0
b3BTaXplJiBzaXplKSB7CiAgICAgcmV0dXJuIERlc2t0b3BSZWN0KDAsIDAsIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX3JlZ2lvbi5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvZGVza3RvcF9yZWdpb24uaAppbmRleCBmNGI5MjA5ZTJkY2FmZmM1ZDIxMjdm
ZWJmZjI3NmQzNDAzN2UzMzkwLi5jYmIyZDhjNDhiNTMwM2RhNzMxYTViN2U0N2UxN2YwMGRhZTc3
MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX3JlZ2lvbi5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2Rlc2t0b3BfcmVnaW9uLmgKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0cnkuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
b25zdHJ1Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTIzLDcgKzI0LDcgQEAgbmFtZXNwYWNlIHdl
YnJ0YyB7CiAvLwogLy8gSW50ZXJuYWxseSBlYWNoIHJlZ2lvbiBpcyBzdG9yZWQgYXMgYSBzZXQg
b2Ygcm93cyB3aGVyZSBlYWNoIHJvdyBjb250YWlucyBvbmUKIC8vIG9yIG1vcmUgcmVjdGFuZ2xl
cyBhbGlnbmVkIHZlcnRpY2FsbHkuCi1jbGFzcyBEZXNrdG9wUmVnaW9uIHsKK2NsYXNzIFJUQ19F
WFBPUlQgRGVza3RvcFJlZ2lvbiB7CiAgcHJpdmF0ZToKICAgLy8gVGhlIGZvbGxvd2luZyBwcml2
YXRlIHR5cGVzIG5lZWQgdG8gYmUgZGVjbGFyZWQgZmlyc3QgYmVjYXVzZSB0aGV5IGFyZSB1c2Vk
CiAgIC8vIGluIHRoZSBwdWJsaWMgSXRlcmF0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9mYWtl
X2Rlc2t0b3BfY2FwdHVyZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Zha2VfZGVza3RvcF9jYXB0dXJlci5oCmlu
ZGV4IDgyYzA1M2NiZTA5OGI5OTFiYmExMDk2M2JiYWIxM2Y1N2Y0ODUyNjEuLmZkODY3ZTMzNWRh
MTkyM2EyMjZkZjYyYzUwYjEzZmMzZDUyNDk5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Zha2Vf
ZGVza3RvcF9jYXB0dXJlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Zha2VfZGVza3RvcF9jYXB0dXJlci5o
CkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVz
a3RvcF9jYXB0dXJlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0
b3BfZnJhbWVfZ2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
c2hhcmVkX21lbW9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0Lmgi
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0zMSw3ICszMiw3IEBAIG5hbWVzcGFjZSB3ZWJy
dGMgewogLy8gRG91YmxlIGJ1ZmZlcmluZyBpcyBndWFyYW50ZWVkIGJ5IHRoZSBGcmFtZUdlbmVy
YXRvci4gRnJhbWVHZW5lcmF0b3IKIC8vIGltcGxlbWVudHMgaW4gZGVza3RvcF9mcmFtZV9nZW5l
cmF0b3IuaCBndWFyYW50ZWUgZG91YmxlIGJ1ZmZlcmluZywgdGhleQogLy8gY3JlYXRlcyBhIG5l
dyBpbnN0YW5jZSBvZiBEZXNrdG9wRnJhbWUgZWFjaCB0aW1lLgotY2xhc3MgRmFrZURlc2t0b3BD
YXB0dXJlciA6IHB1YmxpYyBEZXNrdG9wQ2FwdHVyZXIgeworY2xhc3MgUlRDX0VYUE9SVCBGYWtl
RGVza3RvcENhcHR1cmVyIDogcHVibGljIERlc2t0b3BDYXB0dXJlciB7CiAgcHVibGljOgogICBG
YWtlRGVza3RvcENhcHR1cmVyKCk7CiAgIH5GYWtlRGVza3RvcENhcHR1cmVyKCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvbGludXgvYmFzZV9jYXB0dXJlcl9waXBld2lyZS5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmQ5
OTk0ZDMyYTUyNWVlOWUwZmU1OWIyZWRlNmFlM2NjNDEzMTBiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvbGludXgvYmFzZV9jYXB0dXJlcl9waXBld2lyZS5jYwpAQCAtMCwwICsxLDg0MyBA
QAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUuaCIKKworI2luY2x1ZGUgPGdpby9ndW5peGZk
bGlzdC5oPgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKKyNpbmNsdWRlIDxzcGEvcGFyYW0v
Zm9ybWF0LXV0aWxzLmg+CisjaW5jbHVkZSA8c3BhL3BhcmFtL3Byb3BzLmg+CisjaW5jbHVkZSA8
c3BhL3BhcmFtL3ZpZGVvL3Jhdy11dGlscy5oPgorI2luY2x1ZGUgPHNwYS9zdXBwb3J0L3R5cGUt
bWFwLmg+CisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1
ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisK
K2NvbnN0IGNoYXIga0Rlc2t0b3BCdXNOYW1lW10gPSAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5E
ZXNrdG9wIjsKK2NvbnN0IGNoYXIga0Rlc2t0b3BPYmplY3RQYXRoW10gPSAiL29yZy9mcmVlZGVz
a3RvcC9wb3J0YWwvZGVza3RvcCI7Citjb25zdCBjaGFyIGtEZXNrdG9wUmVxdWVzdE9iamVjdFBh
dGhbXSA9CisgICAgIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AvcmVxdWVzdCI7Citj
b25zdCBjaGFyIGtTZXNzaW9uSW50ZXJmYWNlTmFtZVtdID0gIm9yZy5mcmVlZGVza3RvcC5wb3J0
YWwuU2Vzc2lvbiI7Citjb25zdCBjaGFyIGtSZXF1ZXN0SW50ZXJmYWNlTmFtZVtdID0gIm9yZy5m
cmVlZGVza3RvcC5wb3J0YWwuUmVxdWVzdCI7Citjb25zdCBjaGFyIGtTY3JlZW5DYXN0SW50ZXJm
YWNlTmFtZVtdID0gIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuQ2FzdCI7CisKK2NvbnN0
IGludCBrQnl0ZXNQZXJQaXhlbCA9IDQ7CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQ
aXBlV2lyZTo6T25TdGF0ZUNoYW5nZWQodm9pZCogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB3X3JlbW90ZV9zdGF0ZSBvbGRfc3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwd19yZW1vdGVfc3RhdGUgc3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
cnJvcl9tZXNzYWdlKSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nh
c3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPihkYXRhKTsKKyAgUlRDX0RDSEVDSyh0aGF0KTsKKwor
ICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBQV19SRU1PVEVfU1RBVEVfRVJST1I6CisgICAg
ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiUGlwZVdpcmUgcmVtb3RlIHN0YXRlIGVycm9yOiAiIDw8
IGVycm9yX21lc3NhZ2U7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBXX1JFTU9URV9TVEFURV9D
T05ORUNURUQ6CisgICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJQaXBlV2lyZSByZW1vdGUgc3Rh
dGU6IGNvbm5lY3RlZC4iOworICAgICAgdGhhdC0+Q3JlYXRlUmVjZWl2aW5nU3RyZWFtKCk7Cisg
ICAgICBicmVhazsKKyAgICBjYXNlIFBXX1JFTU9URV9TVEFURV9DT05ORUNUSU5HOgorICAgICAg
UlRDX0xPRyhMU19JTkZPKSA8PCAiUGlwZVdpcmUgcmVtb3RlIHN0YXRlOiBjb25uZWN0aW5nLiI7
CisgICAgICBicmVhazsKKyAgICBjYXNlIFBXX1JFTU9URV9TVEFURV9VTkNPTk5FQ1RFRDoKKyAg
ICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlBpcGVXaXJlIHJlbW90ZSBzdGF0ZTogdW5jb25uZWN0
ZWQuIjsKKyAgICAgIGJyZWFrOworICB9Cit9CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVy
ZXJQaXBlV2lyZTo6T25TdHJlYW1TdGF0ZUNoYW5nZWQodm9pZCogZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3X3N0cmVhbV9zdGF0ZSBvbGRf
c3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
d19zdHJlYW1fc3RhdGUgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJvcl9tZXNzYWdlKSB7CisgIEJhc2VDYXB0dXJl
clBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPihkYXRh
KTsKKyAgUlRDX0RDSEVDSyh0aGF0KTsKKworICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBQ
V19TVFJFQU1fU1RBVEVfRVJST1I6CisgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiUGlwZVdp
cmUgc3RyZWFtIHN0YXRlIGVycm9yOiAiIDw8IGVycm9yX21lc3NhZ2U7CisgICAgICBicmVhazsK
KyAgICBjYXNlIFBXX1NUUkVBTV9TVEFURV9DT05GSUdVUkU6CisgICAgICBwd19zdHJlYW1fc2V0
X2FjdGl2ZSh0aGF0LT5wd19zdHJlYW1fLCB0cnVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFdfU1RSRUFNX1NUQVRFX1VOQ09OTkVDVEVEOgorICAgIGNhc2UgUFdfU1RSRUFNX1NUQVRFX0NP
Tk5FQ1RJTkc6CisgICAgY2FzZSBQV19TVFJFQU1fU1RBVEVfUkVBRFk6CisgICAgY2FzZSBQV19T
VFJFQU1fU1RBVEVfUEFVU0VEOgorICAgIGNhc2UgUFdfU1RSRUFNX1NUQVRFX1NUUkVBTUlORzoK
KyAgICAgIGJyZWFrOworICB9Cit9CisKKy8vIHN0YXRpYwordm9pZCBCYXNlQ2FwdHVyZXJQaXBl
V2lyZTo6T25TdHJlYW1Gb3JtYXRDaGFuZ2VkKHZvaWQqIGRhdGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNwYV9wb2QqIGZv
cm1hdCkgeworICBCYXNlQ2FwdHVyZXJQaXBlV2lyZSogdGhhdCA9IHN0YXRpY19jYXN0PEJhc2VD
YXB0dXJlclBpcGVXaXJlKj4oZGF0YSk7CisgIFJUQ19EQ0hFQ0sodGhhdCk7CisKKyAgUlRDX0xP
RyhMU19JTkZPKSA8PCAiUGlwZVdpcmUgc3RyZWFtIGZvcm1hdCBjaGFuZ2VkLiI7CisKKyAgaWYg
KCFmb3JtYXQpIHsKKyAgICBwd19zdHJlYW1fZmluaXNoX2Zvcm1hdCh0aGF0LT5wd19zdHJlYW1f
LCAvKnJlcz0qLzAsIC8qcGFyYW1zPSovbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKm5fcGFyYW1zPSovMCk7CisgICAgcmV0dXJuOworICB9CisKKyAgdGhhdC0+c3BhX3Zp
ZGVvX2Zvcm1hdF8gPSBuZXcgc3BhX3ZpZGVvX2luZm9fcmF3KCk7CisgIHNwYV9mb3JtYXRfdmlk
ZW9fcmF3X3BhcnNlKGZvcm1hdCwgdGhhdC0+c3BhX3ZpZGVvX2Zvcm1hdF8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ0aGF0LT5wd190eXBlXy0+Zm9ybWF0X3ZpZGVvKTsKKworICBh
dXRvIHdpZHRoID0gdGhhdC0+c3BhX3ZpZGVvX2Zvcm1hdF8tPnNpemUud2lkdGg7CisgIGF1dG8g
aGVpZ2h0ID0gdGhhdC0+c3BhX3ZpZGVvX2Zvcm1hdF8tPnNpemUuaGVpZ2h0OworICBhdXRvIHN0
cmlkZSA9IFNQQV9ST1VORF9VUF9OKHdpZHRoICoga0J5dGVzUGVyUGl4ZWwsIDQpOworICBhdXRv
IHNpemUgPSBoZWlnaHQgKiBzdHJpZGU7CisKKyAgdWludDhfdCBidWZmZXJbMTAyNF0gPSB7fTsK
KyAgYXV0byBidWlsZGVyID0gc3BhX3BvZF9idWlsZGVye2J1ZmZlciwgc2l6ZW9mKGJ1ZmZlcil9
OworCisgIC8vIFNldHVwIGJ1ZmZlcnMgYW5kIG1ldGEgaGVhZGVyIGZvciBuZXcgZm9ybWF0Lgor
ICBjb25zdCBzdHJ1Y3Qgc3BhX3BvZCogcGFyYW1zWzJdOworICBwYXJhbXNbMF0gPSByZWludGVy
cHJldF9jYXN0PHNwYV9wb2QqPihzcGFfcG9kX2J1aWxkZXJfb2JqZWN0KAorICAgICAgJmJ1aWxk
ZXIsCisgICAgICAvLyBpZCB0byBlbnVtZXJhdGUgYnVmZmVyIHJlcXVpcmVtZW50cworICAgICAg
dGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW0uaWRCdWZmZXJzLAorICAgICAgdGhhdC0+cHdfY29y
ZV90eXBlXy0+cGFyYW1fYnVmZmVycy5CdWZmZXJzLAorICAgICAgLy8gU2l6ZTogc3BlY2lmaWVk
IGFzIGludGVnZXIgKGkpIGFuZCBzZXQgdG8gc3BlY2lmaWVkIHNpemUKKyAgICAgICI6IiwgdGhh
dC0+cHdfY29yZV90eXBlXy0+cGFyYW1fYnVmZmVycy5zaXplLCAiaSIsIHNpemUsCisgICAgICAv
LyBTdHJpZGU6IHNwZWNpZmllZCBhcyBpbnRlZ2VyIChpKSBhbmQgc2V0IHRvIHNwZWNpZmllZCBz
dHJpZGUKKyAgICAgICI6IiwgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW1fYnVmZmVycy5zdHJp
ZGUsICJpIiwgc3RyaWRlLAorICAgICAgLy8gQnVmZmVyczogc3BlY2lmaWVzIGhvdyBtYW55IGJ1
ZmZlcnMgd2Ugd2FudCB0byBkZWFsIHdpdGgsIHNldCBhcworICAgICAgLy8gaW50ZWdlciAoaSkg
d2hlcmUgcHJlZmVycmVkIG51bWJlciBpcyA4LCB0aGVuIGFsbG93ZWQgbnVtYmVyIGlzIGRlZmlu
ZWQKKyAgICAgIC8vIGFzIHJhbmdlIChyKSBmcm9tIG1pbiBhbmQgbWF4IHZhbHVlcyBhbmQgaXQg
aXMgdW5kZWNpZGVkICh1KSB0byBhbGxvdworICAgICAgLy8gbmVnb3RpYXRpb24KKyAgICAgICI6
IiwgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW1fYnVmZmVycy5idWZmZXJzLCAiaXJ1IiwgOCwK
KyAgICAgIFNQQV9QT0RfUFJPUF9NSU5fTUFYKDEsIDMyKSwKKyAgICAgIC8vIEFsaWduOiBtZW1v
cnkgYWxpZ25tZW50IG9mIHRoZSBidWZmZXIsIHNldCBhcyBpbnRlZ2VyIChpKSB0byBzcGVjaWZp
ZWQKKyAgICAgIC8vIHZhbHVlCisgICAgICAiOiIsIHRoYXQtPnB3X2NvcmVfdHlwZV8tPnBhcmFt
X2J1ZmZlcnMuYWxpZ24sICJpIiwgMTYpKTsKKyAgcGFyYW1zWzFdID0gcmVpbnRlcnByZXRfY2Fz
dDxzcGFfcG9kKj4oc3BhX3BvZF9idWlsZGVyX29iamVjdCgKKyAgICAgICZidWlsZGVyLAorICAg
ICAgLy8gaWQgdG8gZW51bWVyYXRlIHN1cHBvcnRlZCBtZXRhZGF0YQorICAgICAgdGhhdC0+cHdf
Y29yZV90eXBlXy0+cGFyYW0uaWRNZXRhLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9tZXRh
Lk1ldGEsCisgICAgICAvLyBUeXBlOiBzcGVjaWZpZWQgYXMgaWQgb3IgZW51bSAoSSkKKyAgICAg
ICI6IiwgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW1fbWV0YS50eXBlLCAiSSIsCisgICAgICB0
aGF0LT5wd19jb3JlX3R5cGVfLT5tZXRhLkhlYWRlciwKKyAgICAgIC8vIFNpemU6IHNpemUgb2Yg
dGhlIG1ldGFkYXRhLCBzcGVjaWZpZWQgYXMgaW50ZWdlciAoaSkKKyAgICAgICI6IiwgdGhhdC0+
cHdfY29yZV90eXBlXy0+cGFyYW1fbWV0YS5zaXplLCAiaSIsCisgICAgICBzaXplb2Yoc3RydWN0
IHNwYV9tZXRhX2hlYWRlcikpKTsKKworICBwd19zdHJlYW1fZmluaXNoX2Zvcm1hdCh0aGF0LT5w
d19zdHJlYW1fLCAvKnJlcz0qLzAsIHBhcmFtcywgLypuX3BhcmFtcz0qLzIpOworfQorCisvLyBz
dGF0aWMKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU3RyZWFtUHJvY2Vzcyh2b2lkKiBk
YXRhKSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNh
cHR1cmVyUGlwZVdpcmUqPihkYXRhKTsKKyAgUlRDX0RDSEVDSyh0aGF0KTsKKworICBwd19idWZm
ZXIqIGJ1ZiA9IG51bGxwdHI7CisKKyAgaWYgKCEoYnVmID0gcHdfc3RyZWFtX2RlcXVldWVfYnVm
ZmVyKHRoYXQtPnB3X3N0cmVhbV8pKSkgeworICAgIHJldHVybjsKKyAgfQorCisgIHRoYXQtPkhh
bmRsZUJ1ZmZlcihidWYpOworCisgIHB3X3N0cmVhbV9xdWV1ZV9idWZmZXIodGhhdC0+cHdfc3Ry
ZWFtXywgYnVmKTsKK30KKworQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkJhc2VDYXB0dXJlclBpcGVX
aXJlKENhcHR1cmVTb3VyY2VUeXBlIHNvdXJjZV90eXBlKQorICAgIDogY2FwdHVyZV9zb3VyY2Vf
dHlwZV8oc291cmNlX3R5cGUpIHt9CisKK0Jhc2VDYXB0dXJlclBpcGVXaXJlOjp+QmFzZUNhcHR1
cmVyUGlwZVdpcmUoKSB7CisgIGlmIChwd19tYWluX2xvb3BfKSB7CisgICAgcHdfdGhyZWFkX2xv
b3Bfc3RvcChwd19tYWluX2xvb3BfKTsKKyAgfQorCisgIGlmIChwd190eXBlXykgeworICAgIGRl
bGV0ZSBwd190eXBlXzsKKyAgfQorCisgIGlmIChzcGFfdmlkZW9fZm9ybWF0XykgeworICAgIGRl
bGV0ZSBzcGFfdmlkZW9fZm9ybWF0XzsKKyAgfQorCisgIGlmIChwd19zdHJlYW1fKSB7CisgICAg
cHdfc3RyZWFtX2Rlc3Ryb3kocHdfc3RyZWFtXyk7CisgIH0KKworICBpZiAocHdfcmVtb3RlXykg
eworICAgIHB3X3JlbW90ZV9kZXN0cm95KHB3X3JlbW90ZV8pOworICB9CisKKyAgaWYgKHB3X2Nv
cmVfKSB7CisgICAgcHdfY29yZV9kZXN0cm95KHB3X2NvcmVfKTsKKyAgfQorCisgIGlmIChwd19t
YWluX2xvb3BfKSB7CisgICAgcHdfdGhyZWFkX2xvb3BfZGVzdHJveShwd19tYWluX2xvb3BfKTsK
KyAgfQorCisgIGlmIChwd19sb29wXykgeworICAgIHB3X2xvb3BfZGVzdHJveShwd19sb29wXyk7
CisgIH0KKworICBpZiAoY3VycmVudF9mcmFtZV8pIHsKKyAgICBmcmVlKGN1cnJlbnRfZnJhbWVf
KTsKKyAgfQorCisgIGlmIChzdGFydF9yZXF1ZXN0X3NpZ25hbF9pZF8pIHsKKyAgICBnX2RidXNf
Y29ubmVjdGlvbl9zaWduYWxfdW5zdWJzY3JpYmUoY29ubmVjdGlvbl8sIHN0YXJ0X3JlcXVlc3Rf
c2lnbmFsX2lkXyk7CisgIH0KKyAgaWYgKHNvdXJjZXNfcmVxdWVzdF9zaWduYWxfaWRfKSB7Cisg
ICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3Vuc3Vic2NyaWJlKGNvbm5lY3Rpb25fLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzX3JlcXVlc3Rfc2ln
bmFsX2lkXyk7CisgIH0KKyAgaWYgKHNlc3Npb25fcmVxdWVzdF9zaWduYWxfaWRfKSB7CisgICAg
Z19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3Vuc3Vic2NyaWJlKGNvbm5lY3Rpb25fLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX3JlcXVlc3Rfc2lnbmFs
X2lkXyk7CisgIH0KKworICBpZiAoc2Vzc2lvbl9oYW5kbGVfKSB7CisgICAgR0RCdXNNZXNzYWdl
KiBtZXNzYWdlID0gZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9jYWxsKAorICAgICAgICBrRGVz
a3RvcEJ1c05hbWUsIHNlc3Npb25faGFuZGxlXywga1Nlc3Npb25JbnRlcmZhY2VOYW1lLCAiQ2xv
c2UiKTsKKyAgICBpZiAobWVzc2FnZSkgeworICAgICAgR0Vycm9yKiBlcnJvciA9IG51bGxwdHI7
CisgICAgICBnX2RidXNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbl8sIG1lc3Nh
Z2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19EQlVTX1NFTkRfTUVT
U0FHRV9GTEFHU19OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
b3V0X3NlcmlhbD0qL251bGxwdHIsICZlcnJvcik7CisgICAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBjbG9zZSB0aGUgc2Vzc2lvbjogIiA8
PCBlcnJvci0+bWVzc2FnZTsKKyAgICAgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAgICAgIH0K
KyAgICAgIGdfb2JqZWN0X3VucmVmKG1lc3NhZ2UpOworICAgIH0KKyAgfQorCisgIGdfZnJlZShz
dGFydF9oYW5kbGVfKTsKKyAgZ19mcmVlKHNvdXJjZXNfaGFuZGxlXyk7CisgIGdfZnJlZShzZXNz
aW9uX2hhbmRsZV8pOworICBnX2ZyZWUocG9ydGFsX2hhbmRsZV8pOworCisgIGlmIChwcm94eV8p
IHsKKyAgICBnX2NsZWFyX29iamVjdCgmcHJveHlfKTsKKyAgfQorfQorCit2b2lkIEJhc2VDYXB0
dXJlclBpcGVXaXJlOjpJbml0UG9ydGFsKCkgeworICBnX2RidXNfcHJveHlfbmV3X2Zvcl9idXMo
CisgICAgICBHX0JVU19UWVBFX1NFU1NJT04sIEdfREJVU19QUk9YWV9GTEFHU19OT05FLCAvKmlu
Zm89Ki9udWxscHRyLAorICAgICAga0Rlc2t0b3BCdXNOYW1lLCBrRGVza3RvcE9iamVjdFBhdGgs
IGtTY3JlZW5DYXN0SW50ZXJmYWNlTmFtZSwKKyAgICAgIC8qY2FuY2VsbGFibGU9Ki9udWxscHRy
LAorICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihPblByb3h5UmVx
dWVzdGVkKSwgdGhpcyk7Cit9CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkluaXRQaXBl
V2lyZSgpIHsKKyAgcHdfaW5pdCgvKmFyZ2M9Ki9udWxscHRyLCAvKmFyZ2M9Ki9udWxscHRyKTsK
KworICBwd19sb29wXyA9IHB3X2xvb3BfbmV3KC8qcHJvcGVydGllcz0qL251bGxwdHIpOworICBw
d19tYWluX2xvb3BfID0gcHdfdGhyZWFkX2xvb3BfbmV3KHB3X2xvb3BfLCAicGlwZXdpcmUtbWFp
bi1sb29wIik7CisKKyAgcHdfY29yZV8gPSBwd19jb3JlX25ldyhwd19sb29wXywgLypwcm9wZXJ0
aWVzPSovbnVsbHB0cik7CisgIHB3X2NvcmVfdHlwZV8gPSBwd19jb3JlX2dldF90eXBlKHB3X2Nv
cmVfKTsKKyAgcHdfcmVtb3RlXyA9IHB3X3JlbW90ZV9uZXcocHdfY29yZV8sIG51bGxwdHIsIC8q
dXNlcl9kYXRhX3NpemU9Ki8wKTsKKworICBJbml0UGlwZVdpcmVUeXBlcygpOworCisgIC8vIElu
aXRpYWxpemUgZXZlbnQgaGFuZGxlcnMsIHJlbW90ZSBlbmQgYW5kIHN0cmVhbS1yZWxhdGVkLgor
ICBwd19yZW1vdGVfZXZlbnRzXy52ZXJzaW9uID0gUFdfVkVSU0lPTl9SRU1PVEVfRVZFTlRTOwor
ICBwd19yZW1vdGVfZXZlbnRzXy5zdGF0ZV9jaGFuZ2VkID0gJk9uU3RhdGVDaGFuZ2VkOworCisg
IHB3X3N0cmVhbV9ldmVudHNfLnZlcnNpb24gPSBQV19WRVJTSU9OX1NUUkVBTV9FVkVOVFM7Cisg
IHB3X3N0cmVhbV9ldmVudHNfLnN0YXRlX2NoYW5nZWQgPSAmT25TdHJlYW1TdGF0ZUNoYW5nZWQ7
CisgIHB3X3N0cmVhbV9ldmVudHNfLmZvcm1hdF9jaGFuZ2VkID0gJk9uU3RyZWFtRm9ybWF0Q2hh
bmdlZDsKKyAgcHdfc3RyZWFtX2V2ZW50c18ucHJvY2VzcyA9ICZPblN0cmVhbVByb2Nlc3M7CisK
KyAgcHdfcmVtb3RlX2FkZF9saXN0ZW5lcihwd19yZW1vdGVfLCAmc3BhX3JlbW90ZV9saXN0ZW5l
cl8sICZwd19yZW1vdGVfZXZlbnRzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKTsK
KyAgcHdfcmVtb3RlX2Nvbm5lY3RfZmQocHdfcmVtb3RlXywgcHdfZmRfKTsKKworICBpZiAocHdf
dGhyZWFkX2xvb3Bfc3RhcnQocHdfbWFpbl9sb29wXykgPCAwKSB7CisgICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIkZhaWxlZCB0byBzdGFydCBtYWluIFBpcGVXaXJlIGxvb3AiOworICAgIHBvcnRh
bF9pbml0X2ZhaWxlZF8gPSB0cnVlOworICB9Cit9CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdp
cmU6OkluaXRQaXBlV2lyZVR5cGVzKCkgeworICBzcGFfdHlwZV9tYXAqIG1hcCA9IHB3X2NvcmVf
dHlwZV8tPm1hcDsKKyAgcHdfdHlwZV8gPSBuZXcgUGlwZVdpcmVUeXBlKCk7CisKKyAgc3BhX3R5
cGVfbWVkaWFfdHlwZV9tYXAobWFwLCAmcHdfdHlwZV8tPm1lZGlhX3R5cGUpOworICBzcGFfdHlw
ZV9tZWRpYV9zdWJ0eXBlX21hcChtYXAsICZwd190eXBlXy0+bWVkaWFfc3VidHlwZSk7CisgIHNw
YV90eXBlX2Zvcm1hdF92aWRlb19tYXAobWFwLCAmcHdfdHlwZV8tPmZvcm1hdF92aWRlbyk7Cisg
IHNwYV90eXBlX3ZpZGVvX2Zvcm1hdF9tYXAobWFwLCAmcHdfdHlwZV8tPnZpZGVvX2Zvcm1hdCk7
Cit9CisKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJlY2VpdmluZ1N0cmVhbSgp
IHsKKyAgc3BhX3JlY3RhbmdsZSBwd01pblNjcmVlbkJvdW5kcyA9IHNwYV9yZWN0YW5nbGV7MSwg
MX07CisgIHNwYV9yZWN0YW5nbGUgcHdTY3JlZW5Cb3VuZHMgPQorICAgICAgc3BhX3JlY3Rhbmds
ZXtzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGVza3RvcF9zaXplXy53aWR0aCgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRlc2t0b3Bfc2l6ZV8uaGVpZ2h0KCkp
fTsKKworICBzcGFfZnJhY3Rpb24gcHdGcmFtZVJhdGVNaW4gPSBzcGFfZnJhY3Rpb257MCwgMX07
CisgIHNwYV9mcmFjdGlvbiBwd0ZyYW1lUmF0ZU1heCA9IHNwYV9mcmFjdGlvbns2MCwgMX07CisK
KyAgcHdfcHJvcGVydGllcyogcmV1c2VQcm9wcyA9IHB3X3Byb3BlcnRpZXNfbmV3KCJwaXBld2ly
ZS5jbGllbnQucmV1c2UiLCAiMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKmVuZCBvZiB2YXJhcmdzKi8gbnVsbHB0cik7CisgIHB3X3N0cmVhbV8g
PSBwd19zdHJlYW1fbmV3KHB3X3JlbW90ZV8sICJ3ZWJydGMtY29uc3VtZS1zdHJlYW0iLCByZXVz
ZVByb3BzKTsKKworICB1aW50OF90IGJ1ZmZlclsxMDI0XSA9IHt9OworICBjb25zdCBzcGFfcG9k
KiBwYXJhbXNbMV07CisgIHNwYV9wb2RfYnVpbGRlciBidWlsZGVyID0gc3BhX3BvZF9idWlsZGVy
e2J1ZmZlciwgc2l6ZW9mKGJ1ZmZlcil9OworICBwYXJhbXNbMF0gPSByZWludGVycHJldF9jYXN0
PHNwYV9wb2QqPihzcGFfcG9kX2J1aWxkZXJfb2JqZWN0KAorICAgICAgJmJ1aWxkZXIsCisgICAg
ICAvLyBpZCB0byBlbnVtZXJhdGUgZm9ybWF0cworICAgICAgcHdfY29yZV90eXBlXy0+cGFyYW0u
aWRFbnVtRm9ybWF0LCBwd19jb3JlX3R5cGVfLT5zcGFfZm9ybWF0LCAiSSIsCisgICAgICBwd190
eXBlXy0+bWVkaWFfdHlwZS52aWRlbywgIkkiLCBwd190eXBlXy0+bWVkaWFfc3VidHlwZS5yYXcs
CisgICAgICAvLyBWaWRlbyBmb3JtYXQ6IHNwZWNpZmllZCBhcyBpZCBvciBlbnVtIChJKSwgcHJl
ZmVycmVkIGZvcm1hdCBpcyBCR1J4LAorICAgICAgLy8gdGhlbiBhbGxvd2VkIGZvcm1hdHMgYXJl
IGVudW1lcmF0ZWQgKGUpIGFuZCB0aGUgZm9ybWF0IGlzIHVuZGVjaWRlZCAodSkKKyAgICAgIC8v
IHRvIGFsbG93IG5lZ290aWF0aW9uCisgICAgICAiOiIsIHB3X3R5cGVfLT5mb3JtYXRfdmlkZW8u
Zm9ybWF0LCAiSWV1IiwgcHdfdHlwZV8tPnZpZGVvX2Zvcm1hdC5CR1J4LAorICAgICAgU1BBX1BP
RF9QUk9QX0VOVU0oMiwgcHdfdHlwZV8tPnZpZGVvX2Zvcm1hdC5SR0J4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgcHdfdHlwZV8tPnZpZGVvX2Zvcm1hdC5CR1J4KSwKKyAgICAgIC8vIFZpZGVv
IHNpemU6IHNwZWNpZmllZCBhcyByZWN0YW5nbGUgKFIpLCBwcmVmZXJyZWQgc2l6ZSBpcyBzcGVj
aWZpZWQgYXMKKyAgICAgIC8vIGZpcnN0IHBhcmFtZXRlciwgdGhlbiBhbGxvd2VkIHNpemUgaXMg
ZGVmaW5lZCBhcyByYW5nZSAocikgZnJvbSBtaW4gYW5kCisgICAgICAvLyBtYXggdmFsdWVzIGFu
ZCB0aGUgZm9ybWF0IGlzIHVuZGVjaWRlZCAodSkgdG8gYWxsb3cgbmVnb3RpYXRpb24KKyAgICAg
ICI6IiwgcHdfdHlwZV8tPmZvcm1hdF92aWRlby5zaXplLCAiUnJ1IiwgJnB3U2NyZWVuQm91bmRz
LCAyLAorICAgICAgJnB3TWluU2NyZWVuQm91bmRzLCAmcHdTY3JlZW5Cb3VuZHMsCisgICAgICAv
LyBGcmFtZSByYXRlOiBzcGVjaWZpZWQgYXMgZnJhY3Rpb24gKEYpIGFuZCBzZXQgdG8gbWluaW11
bSBmcmFtZSByYXRlCisgICAgICAvLyB2YWx1ZQorICAgICAgIjoiLCBwd190eXBlXy0+Zm9ybWF0
X3ZpZGVvLmZyYW1lcmF0ZSwgIkYiLCAmcHdGcmFtZVJhdGVNaW4sCisgICAgICAvLyBNYXggZnJh
bWUgcmF0ZTogc3BlY2lmaWVkIGFzIGZyYWN0aW9uIChGKSwgcHJlZmVycmVkIGZyYW1lIHJhdGUg
aXMgc2V0CisgICAgICAvLyB0byBtYXhpbXVtIHZhbHVlLCB0aGVuIGFsbG93ZWQgZnJhbWUgcmF0
ZSBpcyBkZWZpbmVkIGFzIHJhbmdlIChyKSBmcm9tCisgICAgICAvLyBtaW4gYW5kIG1heCB2YWx1
ZXMgYW5kIGl0IGlzIHVuZGVjaWRlZCAodSkgdG8gYWxsb3cgbmVnb3RpYXRpb24KKyAgICAgICI6
IiwgcHdfdHlwZV8tPmZvcm1hdF92aWRlby5tYXhfZnJhbWVyYXRlLCAiRnJ1IiwgJnB3RnJhbWVS
YXRlTWF4LCAyLAorICAgICAgJnB3RnJhbWVSYXRlTWluLCAmcHdGcmFtZVJhdGVNYXgpKTsKKwor
ICBwd19zdHJlYW1fYWRkX2xpc3RlbmVyKHB3X3N0cmVhbV8sICZzcGFfc3RyZWFtX2xpc3RlbmVy
XywgJnB3X3N0cmVhbV9ldmVudHNfLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMpOwor
ICBwd19zdHJlYW1fZmxhZ3MgZmxhZ3MgPSBzdGF0aWNfY2FzdDxwd19zdHJlYW1fZmxhZ3M+KAor
ICAgICAgUFdfU1RSRUFNX0ZMQUdfQVVUT0NPTk5FQ1QgfCBQV19TVFJFQU1fRkxBR19JTkFDVElW
RSB8CisgICAgICBQV19TVFJFQU1fRkxBR19NQVBfQlVGRkVSUyk7CisgIGlmIChwd19zdHJlYW1f
Y29ubmVjdChwd19zdHJlYW1fLCBQV19ESVJFQ1RJT05fSU5QVVQsIC8qcG9ydF9wYXRoPSovbnVs
bHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLCBwYXJhbXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAvKm5fcGFyYW1zPSovMSkgIT0gMCkgeworICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJDb3VsZCBub3QgY29ubmVjdCByZWNlaXZpbmcgc3RyZWFtLiI7CisgICAgcG9ydGFs
X2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9Cit9CisKK3ZvaWQgQmFzZUNh
cHR1cmVyUGlwZVdpcmU6OkhhbmRsZUJ1ZmZlcihwd19idWZmZXIqIGJ1ZmZlcikgeworICBzcGFf
YnVmZmVyKiBzcGFCdWZmZXIgPSBidWZmZXItPmJ1ZmZlcjsKKyAgdm9pZCogc3JjID0gbnVsbHB0
cjsKKworICBpZiAoIShzcmMgPSBzcGFCdWZmZXItPmRhdGFzWzBdLmRhdGEpKSB7CisgICAgcmV0
dXJuOworICB9CisKKyAgdWludDMyX3QgbWF4U2l6ZSA9IHNwYUJ1ZmZlci0+ZGF0YXNbMF0ubWF4
c2l6ZTsKKyAgaW50MzJfdCBzcmNTdHJpZGUgPSBzcGFCdWZmZXItPmRhdGFzWzBdLmNodW5rLT5z
dHJpZGU7CisgIGlmIChzcmNTdHJpZGUgIT0gKGRlc2t0b3Bfc2l6ZV8ud2lkdGgoKSAqIGtCeXRl
c1BlclBpeGVsKSkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJHb3QgYnVmZmVyIHdpdGgg
c3RyaWRlIGRpZmZlcmVudCBmcm9tIHNjcmVlbiBzdHJpZGU6ICIKKyAgICAgICAgICAgICAgICAg
ICAgICA8PCBzcmNTdHJpZGUKKyAgICAgICAgICAgICAgICAgICAgICA8PCAiICE9ICIgPDwgKGRl
c2t0b3Bfc2l6ZV8ud2lkdGgoKSAqIGtCeXRlc1BlclBpeGVsKTsKKyAgICBwb3J0YWxfaW5pdF9m
YWlsZWRfID0gdHJ1ZTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoIWN1cnJlbnRfZnJhbWVf
KSB7CisgICAgY3VycmVudF9mcmFtZV8gPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWFsbG9jKG1h
eFNpemUpKTsKKyAgfQorICBSVENfRENIRUNLKGN1cnJlbnRfZnJhbWVfICE9IG51bGxwdHIpOwor
CisgIC8vIElmIGJvdGggc2lkZXMgZGVjaWRlZCB0byBnbyB3aXRoIHRoZSBSR0J4IGZvcm1hdCB3
ZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8KKyAgLy8gQkdSeCB0byBtYXRjaCBjb2xvciBmb3JtYXQg
ZXhwZWN0ZWQgYnkgV2ViUlRDLgorICBpZiAoc3BhX3ZpZGVvX2Zvcm1hdF8tPmZvcm1hdCA9PSBw
d190eXBlXy0+dmlkZW9fZm9ybWF0LlJHQngpIHsKKyAgICB1aW50OF90KiB0ZW1wRnJhbWUgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4obWFsbG9jKG1heFNpemUpKTsKKyAgICBzdGQ6Om1lbWNweSh0
ZW1wRnJhbWUsIHNyYywgbWF4U2l6ZSk7CisgICAgQ29udmVydFJHQnhUb0JHUngodGVtcEZyYW1l
LCBtYXhTaXplKTsKKyAgICBzdGQ6Om1lbWNweShjdXJyZW50X2ZyYW1lXywgdGVtcEZyYW1lLCBt
YXhTaXplKTsKKyAgICBmcmVlKHRlbXBGcmFtZSk7CisgIH0gZWxzZSB7CisgICAgc3RkOjptZW1j
cHkoY3VycmVudF9mcmFtZV8sIHNyYywgbWF4U2l6ZSk7CisgIH0KK30KKwordm9pZCBCYXNlQ2Fw
dHVyZXJQaXBlV2lyZTo6Q29udmVydFJHQnhUb0JHUngodWludDhfdCogZnJhbWUsIHVpbnQzMl90
IHNpemUpIHsKKyAgLy8gQ2hhbmdlIGNvbG9yIGZvcm1hdCBmb3IgS0RFIEtXaW4gd2hpY2ggdXNl
cyBSR0J4IGFuZCBub3QgQkdSeAorICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgaSAr
PSA0KSB7CisgICAgdWludDhfdCB0ZW1wUiA9IGZyYW1lW2ldOworICAgIHVpbnQ4X3QgdGVtcEIg
PSBmcmFtZVtpICsgMl07CisgICAgZnJhbWVbaV0gPSB0ZW1wQjsKKyAgICBmcmFtZVtpICsgMl0g
PSB0ZW1wUjsKKyAgfQorfQorCitndWludCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6U2V0dXBSZXF1
ZXN0UmVzcG9uc2VTaWduYWwoCisgICAgY29uc3QgZ2NoYXIqIG9iamVjdF9wYXRoLAorICAgIEdE
QnVzU2lnbmFsQ2FsbGJhY2sgY2FsbGJhY2spIHsKKyAgcmV0dXJuIGdfZGJ1c19jb25uZWN0aW9u
X3NpZ25hbF9zdWJzY3JpYmUoCisgICAgICBjb25uZWN0aW9uXywga0Rlc2t0b3BCdXNOYW1lLCBr
UmVxdWVzdEludGVyZmFjZU5hbWUsICJSZXNwb25zZSIsCisgICAgICBvYmplY3RfcGF0aCwgLyph
cmcwPSovbnVsbHB0ciwgR19EQlVTX1NJR05BTF9GTEFHU19OT19NQVRDSF9SVUxFLAorICAgICAg
Y2FsbGJhY2ssIHRoaXMsIC8qdXNlcl9kYXRhX2ZyZWVfZnVuYz0qL251bGxwdHIpOworfQorCisv
LyBzdGF0aWMKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uUHJveHlSZXF1ZXN0ZWQoR09i
amVjdCogLypvYmplY3QqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSkgeworICBCYXNlQ2FwdHVyZXJQaXBl
V2lyZSogdGhhdCA9IHN0YXRpY19jYXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4odXNlcl9kYXRh
KTsKKyAgUlRDX0RDSEVDSyh0aGF0KTsKKworICBHRXJyb3IqIGVycm9yID0gbnVsbHB0cjsKKyAg
dGhhdC0+cHJveHlfID0gZ19kYnVzX3Byb3h5X25ld19maW5pc2gocmVzdWx0LCAmZXJyb3IpOwor
ICBpZiAoIXRoYXQtPnByb3h5XykgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQg
dG8gY3JlYXRlIGEgcHJveHkgZm9yIHRoZSBzY3JlZW4gY2FzdCBwb3J0YWw6ICIKKyAgICAgICAg
ICAgICAgICAgICAgICA8PCBlcnJvci0+bWVzc2FnZTsKKyAgICBnX2Vycm9yX2ZyZWUoZXJyb3Ip
OworICAgIHRoYXQtPnBvcnRhbF9pbml0X2ZhaWxlZF8gPSB0cnVlOworICAgIHJldHVybjsKKyAg
fQorICB0aGF0LT5jb25uZWN0aW9uXyA9IGdfZGJ1c19wcm94eV9nZXRfY29ubmVjdGlvbih0aGF0
LT5wcm94eV8pOworCisgIFJUQ19MT0coTFNfSU5GTykgPDwgIkNyZWF0ZWQgcHJveHkgZm9yIHRo
ZSBzY3JlZW4gY2FzdCBwb3J0YWwuIjsKKyAgdGhhdC0+U2Vzc2lvblJlcXVlc3QoKTsKK30KKwor
Ly8gc3RhdGljCitnY2hhciogQmFzZUNhcHR1cmVyUGlwZVdpcmU6OlByZXBhcmVTaWduYWxIYW5k
bGUoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiB0b2tlbikgeworICBnY2hhciog
c2VuZGVyID0gZ19zdHJkdXAoZ19kYnVzX2Nvbm5lY3Rpb25fZ2V0X3VuaXF1ZV9uYW1lKGNvbm5l
Y3Rpb24pICsgMSk7CisgIGZvciAoaW50IGkgPSAwOyBzZW5kZXJbaV07IGkrKykgeworICAgIGlm
IChzZW5kZXJbaV0gPT0gJy4nKSB7CisgICAgICBzZW5kZXJbaV0gPSAnXyc7CisgICAgfQorICB9
CisKKyAgZ2NoYXIqIGhhbmRsZSA9IGdfc3RyY29uY2F0KGtEZXNrdG9wUmVxdWVzdE9iamVjdFBh
dGgsICIvIiwgc2VuZGVyLCAiLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tl
biwgLyplbmQgb2YgdmFyYXJncyovIG51bGxwdHIpOworICBnX2ZyZWUoc2VuZGVyKTsKKworICBy
ZXR1cm4gaGFuZGxlOworfQorCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpTZXNzaW9uUmVx
dWVzdCgpIHsKKyAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7CisgIGdjaGFyKiB2YXJpYW50X3N0
cmluZzsKKworICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQ
RV9WQVJESUNUKTsKKyAgdmFyaWFudF9zdHJpbmcgPQorICAgICAgZ19zdHJkdXBfcHJpbnRmKCJ3
ZWJydGNfc2Vzc2lvbiVkIiwgZ19yYW5kb21faW50X3JhbmdlKDAsIEdfTUFYSU5UKSk7CisgIGdf
dmFyaWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwgIntzdn0iLCAic2Vzc2lvbl9oYW5kbGVfdG9r
ZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ld19zdHJpbmcodmFyaWFu
dF9zdHJpbmcpKTsKKyAgZ19mcmVlKHZhcmlhbnRfc3RyaW5nKTsKKyAgdmFyaWFudF9zdHJpbmcg
PSBnX3N0cmR1cF9wcmludGYoIndlYnJ0YyVkIiwgZ19yYW5kb21faW50X3JhbmdlKDAsIEdfTUFY
SU5UKSk7CisgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwgIntzdn0iLCAiaGFuZGxl
X3Rva2VuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXdfc3RyaW5nKHZh
cmlhbnRfc3RyaW5nKSk7CisKKyAgcG9ydGFsX2hhbmRsZV8gPSBQcmVwYXJlU2lnbmFsSGFuZGxl
KGNvbm5lY3Rpb25fLCB2YXJpYW50X3N0cmluZyk7CisgIHNlc3Npb25fcmVxdWVzdF9zaWduYWxf
aWRfID0gU2V0dXBSZXF1ZXN0UmVzcG9uc2VTaWduYWwoCisgICAgICBwb3J0YWxfaGFuZGxlXywg
T25TZXNzaW9uUmVxdWVzdFJlc3BvbnNlU2lnbmFsKTsKKyAgZ19mcmVlKHZhcmlhbnRfc3RyaW5n
KTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJTY3JlZW4gY2FzdCBzZXNzaW9uIHJlcXVlc3Rl
ZC4iOworICBnX2RidXNfcHJveHlfY2FsbCgKKyAgICAgIHByb3h5XywgIkNyZWF0ZVNlc3Npb24i
LCBnX3ZhcmlhbnRfbmV3KCIoYXtzdn0pIiwgJmJ1aWxkZXIpLAorICAgICAgR19EQlVTX0NBTExf
RkxBR1NfTk9ORSwgLyp0aW1lb3V0PSovLTEsIC8qY2FuY2VsbGFibGU9Ki9udWxscHRyLAorICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihPblNlc3Npb25SZXF1ZXN0
ZWQpLCB0aGlzKTsKK30KKworLy8gc3RhdGljCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpP
blNlc3Npb25SZXF1ZXN0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCogcmVzdWx0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVy
IHVzZXJfZGF0YSkgeworICBCYXNlQ2FwdHVyZXJQaXBlV2lyZSogdGhhdCA9IHN0YXRpY19jYXN0
PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4odXNlcl9kYXRhKTsKKyAgUlRDX0RDSEVDSyh0aGF0KTsK
KworICBHRXJyb3IqIGVycm9yID0gbnVsbHB0cjsKKyAgR1ZhcmlhbnQqIHZhcmlhbnQgPSBnX2Ri
dXNfcHJveHlfY2FsbF9maW5pc2godGhhdC0+cHJveHlfLCByZXN1bHQsICZlcnJvcik7CisgIGlm
ICghdmFyaWFudCkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRl
IGEgc2NyZWVuIGNhc3Qgc2Vzc2lvbjogIgorICAgICAgICAgICAgICAgICAgICAgIDw8IGVycm9y
LT5tZXNzYWdlOworICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAgdGhhdC0+cG9ydGFsX2lu
aXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9CisgIFJUQ19MT0coTFNfSU5GTykg
PDwgIkluaXRpYWxpemluZyB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworCisgIGdjaGFyKiBo
YW5kbGUgPSBudWxscHRyOworICBnX3ZhcmlhbnRfZ2V0X2NoaWxkKHZhcmlhbnQsIDAsICJvIiwg
JmhhbmRsZSk7CisgIGdfdmFyaWFudF91bnJlZih2YXJpYW50KTsKKyAgaWYgKCFoYW5kbGUpIHsK
KyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIHNjcmVl
biBjYXN0IHNlc3Npb24uIjsKKyAgICBpZiAodGhhdC0+c2Vzc2lvbl9yZXF1ZXN0X3NpZ25hbF9p
ZF8pIHsKKyAgICAgIGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF91bnN1YnNjcmliZShjb25uZWN0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQtPnNl
c3Npb25fcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAgICAgIHRoYXQtPnNlc3Npb25fcmVxdWVzdF9z
aWduYWxfaWRfID0gMDsKKyAgICB9CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRy
dWU7CisgICAgcmV0dXJuOworICB9CisKKyAgZ19mcmVlKGhhbmRsZSk7CisKKyAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiU3Vic2NyaWJpbmcgdG8gdGhlIHNjcmVlbiBjYXN0IHNlc3Npb24uIjsKK30K
KworLy8gc3RhdGljCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblNlc3Npb25SZXF1ZXN0
UmVzcG9uc2VTaWduYWwoCisgICAgR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLAorICAgIGNv
bnN0IGdjaGFyKiBzZW5kZXJfbmFtZSwKKyAgICBjb25zdCBnY2hhciogb2JqZWN0X3BhdGgsCisg
ICAgY29uc3QgZ2NoYXIqIGludGVyZmFjZV9uYW1lLAorICAgIGNvbnN0IGdjaGFyKiBzaWduYWxf
bmFtZSwKKyAgICBHVmFyaWFudCogcGFyYW1ldGVycywKKyAgICBncG9pbnRlciB1c2VyX2RhdGEp
IHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVy
ZXJQaXBlV2lyZSo+KHVzZXJfZGF0YSk7CisgIFJUQ19EQ0hFQ0sodGhhdCk7CisKKyAgUlRDX0xP
RyhMU19JTkZPKQorICAgICAgPDwgIlJlY2VpdmVkIHJlc3BvbnNlIGZvciB0aGUgc2NyZWVuIGNh
c3Qgc2Vzc2lvbiBzdWJzY3JpcHRpb24uIjsKKworICBndWludDMyIHBvcnRhbF9yZXNwb25zZTsK
KyAgR1ZhcmlhbnQqIHJlc3BvbnNlX2RhdGE7CisgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywg
Iih1QGF7c3Z9KSIsICZwb3J0YWxfcmVzcG9uc2UsICZyZXNwb25zZV9kYXRhKTsKKyAgZ192YXJp
YW50X2xvb2t1cChyZXNwb25zZV9kYXRhLCAic2Vzc2lvbl9oYW5kbGUiLCAicyIsCisgICAgICAg
ICAgICAgICAgICAgJnRoYXQtPnNlc3Npb25faGFuZGxlXyk7CisgIGdfdmFyaWFudF91bnJlZihy
ZXNwb25zZV9kYXRhKTsKKworICBpZiAoIXRoYXQtPnNlc3Npb25faGFuZGxlXyB8fCBwb3J0YWxf
cmVzcG9uc2UpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKQorICAgICAgICA8PCAiRmFpbGVkIHRv
IHJlcXVlc3QgdGhlIHNjcmVlbiBjYXN0IHNlc3Npb24gc3Vic2NyaXB0aW9uLiI7CisgICAgdGhh
dC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9CisKKyAgdGhh
dC0+U291cmNlc1JlcXVlc3QoKTsKK30KKwordm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6U291
cmNlc1JlcXVlc3QoKSB7CisgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOworICBnY2hhciogdmFy
aWFudF9zdHJpbmc7CisKKyAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJ
QU5UX1RZUEVfVkFSRElDVCk7CisgIC8vIFdlIHdhbnQgdG8gcmVjb3JkIG1vbml0b3IgY29udGVu
dC4KKyAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJ0eXBlcyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3X3VpbnQzMihjYXB0dXJlX3NvdXJj
ZV90eXBlXykpOworICAvLyBXZSBkb24ndCB3YW50IHRvIGFsbG93IHNlbGVjdGlvbiBvZiBtdWx0
aXBsZSBzb3VyY2VzLgorICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9Iiwg
Im11bHRpcGxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXdfYm9vbGVh
bihmYWxzZSkpOworICB2YXJpYW50X3N0cmluZyA9IGdfc3RyZHVwX3ByaW50Zigid2VicnRjJWQi
LCBnX3JhbmRvbV9pbnRfcmFuZ2UoMCwgR19NQVhJTlQpKTsKKyAgZ192YXJpYW50X2J1aWxkZXJf
YWRkKCZidWlsZGVyLCAie3N2fSIsICJoYW5kbGVfdG9rZW4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZ192YXJpYW50X25ld19zdHJpbmcodmFyaWFudF9zdHJpbmcpKTsKKworICBzb3VyY2Vz
X2hhbmRsZV8gPSBQcmVwYXJlU2lnbmFsSGFuZGxlKGNvbm5lY3Rpb25fLCB2YXJpYW50X3N0cmlu
Zyk7CisgIHNvdXJjZXNfcmVxdWVzdF9zaWduYWxfaWRfID0gU2V0dXBSZXF1ZXN0UmVzcG9uc2VT
aWduYWwoCisgICAgICBzb3VyY2VzX2hhbmRsZV8sIE9uU291cmNlc1JlcXVlc3RSZXNwb25zZVNp
Z25hbCk7CisgIGdfZnJlZSh2YXJpYW50X3N0cmluZyk7CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8
PCAiUmVxdWVzdGluZyBzb3VyY2VzIGZyb20gdGhlIHNjcmVlbiBjYXN0IHNlc3Npb24uIjsKKyAg
Z19kYnVzX3Byb3h5X2NhbGwoCisgICAgICBwcm94eV8sICJTZWxlY3RTb3VyY2VzIiwKKyAgICAg
IGdfdmFyaWFudF9uZXcoIihvYXtzdn0pIiwgc2Vzc2lvbl9oYW5kbGVfLCAmYnVpbGRlciksCisg
ICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLCAvKnRpbWVvdXQ9Ki8tMSwgLypjYW5jZWxsYWJs
ZT0qL251bGxwdHIsCisgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+
KE9uU291cmNlc1JlcXVlc3RlZCksIHRoaXMpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFzZUNh
cHR1cmVyUGlwZVdpcmU6Ok9uU291cmNlc1JlcXVlc3RlZChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKSB7CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0
aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPih1c2VyX2RhdGEpOworICBS
VENfRENIRUNLKHRoYXQpOworCisgIEdFcnJvciogZXJyb3IgPSBudWxscHRyOworICBHVmFyaWFu
dCogdmFyaWFudCA9IGdfZGJ1c19wcm94eV9jYWxsX2ZpbmlzaCh0aGF0LT5wcm94eV8sIHJlc3Vs
dCwgJmVycm9yKTsKKyAgaWYgKCF2YXJpYW50KSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IkZhaWxlZCB0byByZXF1ZXN0IHRoZSBzb3VyY2VzOiAiIDw8IGVycm9yLT5tZXNzYWdlOworICAg
IGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRy
dWU7CisgICAgcmV0dXJuOworICB9CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU291cmNlcyBy
ZXF1ZXN0ZWQgZnJvbSB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworCisgIGdjaGFyKiBoYW5k
bGUgPSBudWxscHRyOworICBnX3ZhcmlhbnRfZ2V0X2NoaWxkKHZhcmlhbnQsIDAsICJvIiwgJmhh
bmRsZSk7CisgIGdfdmFyaWFudF91bnJlZih2YXJpYW50KTsKKyAgaWYgKCFoYW5kbGUpIHsKKyAg
ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIHNjcmVlbiBj
YXN0IHNlc3Npb24uIjsKKyAgICBpZiAodGhhdC0+c291cmNlc19yZXF1ZXN0X3NpZ25hbF9pZF8p
IHsKKyAgICAgIGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF91bnN1YnNjcmliZShjb25uZWN0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQtPnNvdXJj
ZXNfcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAgICAgIHRoYXQtPnNvdXJjZXNfcmVxdWVzdF9zaWdu
YWxfaWRfID0gMDsKKyAgICB9CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7
CisgICAgcmV0dXJuOworICB9CisKKyAgZ19mcmVlKGhhbmRsZSk7CisKKyAgUlRDX0xPRyhMU19J
TkZPKSA8PCAiU3Vic2NyaWJlZCB0byBzb3VyY2VzIHNpZ25hbC4iOworfQorCisvLyBzdGF0aWMK
K3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU291cmNlc1JlcXVlc3RSZXNwb25zZVNpZ25h
bCgKKyAgICBHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCisgICAgY29uc3QgZ2NoYXIqIHNl
bmRlcl9uYW1lLAorICAgIGNvbnN0IGdjaGFyKiBvYmplY3RfcGF0aCwKKyAgICBjb25zdCBnY2hh
ciogaW50ZXJmYWNlX25hbWUsCisgICAgY29uc3QgZ2NoYXIqIHNpZ25hbF9uYW1lLAorICAgIEdW
YXJpYW50KiBwYXJhbWV0ZXJzLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkgeworICBCYXNlQ2Fw
dHVyZXJQaXBlV2lyZSogdGhhdCA9IHN0YXRpY19jYXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4o
dXNlcl9kYXRhKTsKKyAgUlRDX0RDSEVDSyh0aGF0KTsKKworICBSVENfTE9HKExTX0lORk8pIDw8
ICJSZWNlaXZlZCBzb3VyY2VzIHNpZ25hbCBmcm9tIHNlc3Npb24uIjsKKworICBndWludDMyIHBv
cnRhbF9yZXNwb25zZTsKKyAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHVAYXtzdn0pIiwg
JnBvcnRhbF9yZXNwb25zZSwgbnVsbHB0cik7CisgIGlmIChwb3J0YWxfcmVzcG9uc2UpIHsKKyAg
ICBSVENfTE9HKExTX0VSUk9SKQorICAgICAgICA8PCAiRmFpbGVkIHRvIHNlbGVjdCBzb3VyY2Vz
IGZvciB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworICAgIHRoYXQtPnBvcnRhbF9pbml0X2Zh
aWxlZF8gPSB0cnVlOworICAgIHJldHVybjsKKyAgfQorCisgIHRoYXQtPlN0YXJ0UmVxdWVzdCgp
OworfQorCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpTdGFydFJlcXVlc3QoKSB7CisgIEdW
YXJpYW50QnVpbGRlciBidWlsZGVyOworICBnY2hhciogdmFyaWFudF9zdHJpbmc7CisKKyAgZ192
YXJpYW50X2J1aWxkZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7Cisg
IHZhcmlhbnRfc3RyaW5nID0gZ19zdHJkdXBfcHJpbnRmKCJ3ZWJydGMlZCIsIGdfcmFuZG9tX2lu
dF9yYW5nZSgwLCBHX01BWElOVCkpOworICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIs
ICJ7c3Z9IiwgImhhbmRsZV90b2tlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBnX3Zhcmlh
bnRfbmV3X3N0cmluZyh2YXJpYW50X3N0cmluZykpOworCisgIHN0YXJ0X2hhbmRsZV8gPSBQcmVw
YXJlU2lnbmFsSGFuZGxlKGNvbm5lY3Rpb25fLCB2YXJpYW50X3N0cmluZyk7CisgIHN0YXJ0X3Jl
cXVlc3Rfc2lnbmFsX2lkXyA9CisgICAgICBTZXR1cFJlcXVlc3RSZXNwb25zZVNpZ25hbChzdGFy
dF9oYW5kbGVfLCBPblN0YXJ0UmVxdWVzdFJlc3BvbnNlU2lnbmFsKTsKKyAgZ19mcmVlKHZhcmlh
bnRfc3RyaW5nKTsKKworICAvLyAiSWRlbnRpZmllciBmb3IgdGhlIGFwcGxpY2F0aW9uIHdpbmRv
dyIsIHRoaXMgaXMgV2F5bGFuZCwgc28gbm90ICJ4MTE6Li4uIi4KKyAgY29uc3QgZ2NoYXIgcGFy
ZW50X3dpbmRvd1tdID0gIiI7CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU3RhcnRpbmcgdGhl
IHNjcmVlbiBjYXN0IHNlc3Npb24uIjsKKyAgZ19kYnVzX3Byb3h5X2NhbGwoCisgICAgICBwcm94
eV8sICJTdGFydCIsCisgICAgICBnX3ZhcmlhbnRfbmV3KCIob3Nhe3N2fSkiLCBzZXNzaW9uX2hh
bmRsZV8sIHBhcmVudF93aW5kb3csICZidWlsZGVyKSwKKyAgICAgIEdfREJVU19DQUxMX0ZMQUdT
X05PTkUsIC8qdGltZW91dD0qLy0xLCAvKmNhbmNlbGxhYmxlPSovbnVsbHB0ciwKKyAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oT25TdGFydFJlcXVlc3RlZCksIHRo
aXMpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU3RhcnRS
ZXF1ZXN0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQqIHJlc3VsdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKSB7
CisgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVy
UGlwZVdpcmUqPih1c2VyX2RhdGEpOworICBSVENfRENIRUNLKHRoYXQpOworCisgIEdFcnJvciog
ZXJyb3IgPSBudWxscHRyOworICBHVmFyaWFudCogdmFyaWFudCA9IGdfZGJ1c19wcm94eV9jYWxs
X2ZpbmlzaCh0aGF0LT5wcm94eV8sIHJlc3VsdCwgJmVycm9yKTsKKyAgaWYgKCF2YXJpYW50KSB7
CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBzdGFydCB0aGUgc2NyZWVuIGNh
c3Qgc2Vzc2lvbjogIgorICAgICAgICAgICAgICAgICAgICAgIDw8IGVycm9yLT5tZXNzYWdlOwor
ICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9
IHRydWU7CisgICAgcmV0dXJuOworICB9CisKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiSW5pdGlh
bGl6aW5nIHRoZSBzdGFydCBvZiB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworCisgIGdjaGFy
KiBoYW5kbGUgPSBudWxscHRyOworICBnX3ZhcmlhbnRfZ2V0X2NoaWxkKHZhcmlhbnQsIDAsICJv
IiwgJmhhbmRsZSk7CisgIGdfdmFyaWFudF91bnJlZih2YXJpYW50KTsKKyAgaWYgKCFoYW5kbGUp
IHsKKyAgICBSVENfTE9HKExTX0VSUk9SKQorICAgICAgICA8PCAiRmFpbGVkIHRvIGluaXRpYWxp
emUgdGhlIHN0YXJ0IG9mIHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9uLiI7CisgICAgaWYgKHRoYXQt
PnN0YXJ0X3JlcXVlc3Rfc2lnbmFsX2lkXykgeworICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2ln
bmFsX3Vuc3Vic2NyaWJlKGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhhdC0+c3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAgICAgIHRo
YXQtPnN0YXJ0X3JlcXVlc3Rfc2lnbmFsX2lkXyA9IDA7CisgICAgfQorICAgIHRoYXQtPnBvcnRh
bF9pbml0X2ZhaWxlZF8gPSB0cnVlOworICAgIHJldHVybjsKKyAgfQorCisgIGdfZnJlZShoYW5k
bGUpOworCisgIFJUQ19MT0coTFNfSU5GTykgPDwgIlN1YnNjcmliZWQgdG8gdGhlIHN0YXJ0IHNp
Z25hbC4iOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU3Rh
cnRSZXF1ZXN0UmVzcG9uc2VTaWduYWwoCisgICAgR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9u
LAorICAgIGNvbnN0IGdjaGFyKiBzZW5kZXJfbmFtZSwKKyAgICBjb25zdCBnY2hhciogb2JqZWN0
X3BhdGgsCisgICAgY29uc3QgZ2NoYXIqIGludGVyZmFjZV9uYW1lLAorICAgIGNvbnN0IGdjaGFy
KiBzaWduYWxfbmFtZSwKKyAgICBHVmFyaWFudCogcGFyYW1ldGVycywKKyAgICBncG9pbnRlciB1
c2VyX2RhdGEpIHsKKyAgQmFzZUNhcHR1cmVyUGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2FzdDxC
YXNlQ2FwdHVyZXJQaXBlV2lyZSo+KHVzZXJfZGF0YSk7CisgIFJUQ19EQ0hFQ0sodGhhdCk7CisK
KyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU3RhcnQgc2lnbmFsIHJlY2VpdmVkLiI7CisgIGd1aW50
MzIgcG9ydGFsX3Jlc3BvbnNlOworICBHVmFyaWFudCogcmVzcG9uc2VfZGF0YTsKKyAgR1Zhcmlh
bnRJdGVyKiBpdGVyID0gbnVsbHB0cjsKKyAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHVA
YXtzdn0pIiwgJnBvcnRhbF9yZXNwb25zZSwgJnJlc3BvbnNlX2RhdGEpOworICBpZiAocG9ydGFs
X3Jlc3BvbnNlIHx8ICFyZXNwb25zZV9kYXRhKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IkZhaWxlZCB0byBzdGFydCB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworICAgIHRoYXQtPnBv
cnRhbF9pbml0X2ZhaWxlZF8gPSB0cnVlOworICAgIHJldHVybjsKKyAgfQorCisgIC8vIEFycmF5
IG9mIFBpcGVXaXJlIHN0cmVhbXMuIFNlZQorICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxhdHBh
ay94ZGctZGVza3RvcC1wb3J0YWwvYmxvYi9tYXN0ZXIvZGF0YS9vcmcuZnJlZWRlc2t0b3AucG9y
dGFsLlNjcmVlbkNhc3QueG1sCisgIC8vIGRvY3VtZW50YXRpb24gZm9yIDxtZXRob2QgbmFtZT0i
U3RhcnQiPi4KKyAgaWYgKGdfdmFyaWFudF9sb29rdXAocmVzcG9uc2VfZGF0YSwgInN0cmVhbXMi
LCAiYSh1YXtzdn0pIiwgJml0ZXIpKSB7CisgICAgR1ZhcmlhbnQqIHZhcmlhbnQ7CisKKyAgICB3
aGlsZSAoZ192YXJpYW50X2l0ZXJfbmV4dChpdGVyLCAiQCh1YXtzdn0pIiwgJnZhcmlhbnQpKSB7
CisgICAgICBndWludDMyIHN0cmVhbV9pZDsKKyAgICAgIGdpbnQzMiB3aWR0aDsKKyAgICAgIGdp
bnQzMiBoZWlnaHQ7CisgICAgICBHVmFyaWFudCogb3B0aW9uczsKKworICAgICAgZ192YXJpYW50
X2dldCh2YXJpYW50LCAiKHVAYXtzdn0pIiwgJnN0cmVhbV9pZCwgJm9wdGlvbnMpOworICAgICAg
UlRDX0RDSEVDSyhvcHRpb25zICE9IG51bGxwdHIpOworCisgICAgICBnX3ZhcmlhbnRfbG9va3Vw
KG9wdGlvbnMsICJzaXplIiwgIihpaSkiLCAmd2lkdGgsICZoZWlnaHQpOworCisgICAgICB0aGF0
LT5kZXNrdG9wX3NpemVfLnNldCh3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgZ192YXJpYW50X3Vu
cmVmKG9wdGlvbnMpOworICAgICAgZ192YXJpYW50X3VucmVmKHZhcmlhbnQpOworICAgIH0KKyAg
fQorICBnX3ZhcmlhbnRfaXRlcl9mcmVlKGl0ZXIpOworICBnX3ZhcmlhbnRfdW5yZWYocmVzcG9u
c2VfZGF0YSk7CisKKyAgdGhhdC0+T3BlblBpcGVXaXJlUmVtb3RlKCk7Cit9CisKK3ZvaWQgQmFz
ZUNhcHR1cmVyUGlwZVdpcmU6Ok9wZW5QaXBlV2lyZVJlbW90ZSgpIHsKKyAgR1ZhcmlhbnRCdWls
ZGVyIGJ1aWxkZXI7CisgIGdfdmFyaWFudF9idWlsZGVyX2luaXQoJmJ1aWxkZXIsIEdfVkFSSUFO
VF9UWVBFX1ZBUkRJQ1QpOworCisgIFJUQ19MT0coTFNfSU5GTykgPDwgIk9wZW5pbmcgdGhlIFBp
cGVXaXJlIHJlbW90ZS4iOworCisgIGdfZGJ1c19wcm94eV9jYWxsX3dpdGhfdW5peF9mZF9saXN0
KAorICAgICAgcHJveHlfLCAiT3BlblBpcGVXaXJlUmVtb3RlIiwKKyAgICAgIGdfdmFyaWFudF9u
ZXcoIihvYXtzdn0pIiwgc2Vzc2lvbl9oYW5kbGVfLCAmYnVpbGRlciksCisgICAgICBHX0RCVVNf
Q0FMTF9GTEFHU19OT05FLCAvKnRpbWVvdXQ9Ki8tMSwgLypmZF9saXN0PSovbnVsbHB0ciwKKyAg
ICAgIC8qY2FuY2VsbGFibGU9Ki9udWxscHRyLAorICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5
bmNSZWFkeUNhbGxiYWNrPihPbk9wZW5QaXBlV2lyZVJlbW90ZVJlcXVlc3RlZCksCisgICAgICB0
aGlzKTsKK30KKworLy8gc3RhdGljCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPbk9wZW5Q
aXBlV2lyZVJlbW90ZVJlcXVlc3RlZCgKKyAgICBHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24s
CisgICAgR0FzeW5jUmVzdWx0KiByZXN1bHQsCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKSB7Cisg
IEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlw
ZVdpcmUqPih1c2VyX2RhdGEpOworICBSVENfRENIRUNLKHRoYXQpOworCisgIEdFcnJvciogZXJy
b3IgPSBudWxscHRyOworICBHVW5peEZETGlzdCogb3V0bGlzdCA9IG51bGxwdHI7CisgIEdWYXJp
YW50KiB2YXJpYW50ID0gZ19kYnVzX3Byb3h5X2NhbGxfd2l0aF91bml4X2ZkX2xpc3RfZmluaXNo
KAorICAgICAgdGhhdC0+cHJveHlfLCAmb3V0bGlzdCwgcmVzdWx0LCAmZXJyb3IpOworICBpZiAo
IXZhcmlhbnQpIHsKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIG9wZW4gdGhl
IFBpcGVXaXJlIHJlbW90ZTogIgorICAgICAgICAgICAgICAgICAgICAgIDw8IGVycm9yLT5tZXNz
YWdlOworICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFp
bGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9CisKKyAgZ2ludDMyIGluZGV4OworICBnX3Zh
cmlhbnRfZ2V0KHZhcmlhbnQsICIoaCkiLCAmaW5kZXgpOworCisgIGlmICgodGhhdC0+cHdfZmRf
ID0gZ191bml4X2ZkX2xpc3RfZ2V0KG91dGxpc3QsIGluZGV4LCAmZXJyb3IpKSA9PSAtMSkgewor
ICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gZ2V0IGZpbGUgZGVzY3JpcHRvciBm
cm9tIHRoZSBsaXN0OiAiCisgICAgICAgICAgICAgICAgICAgICAgPDwgZXJyb3ItPm1lc3NhZ2U7
CisgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAgICBnX3ZhcmlhbnRfdW5yZWYodmFyaWFudCk7
CisgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgcmV0dXJuOworICB9
CisKKyAgZ192YXJpYW50X3VucmVmKHZhcmlhbnQpOworICBnX29iamVjdF91bnJlZihvdXRsaXN0
KTsKKworICB0aGF0LT5Jbml0UGlwZVdpcmUoKTsKKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUGlw
ZVdpcmUgcmVtb3RlIG9wZW5lZC4iOworfQorCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpT
dGFydChDYWxsYmFjayogY2FsbGJhY2spIHsKKyAgUlRDX0RDSEVDSyghY2FsbGJhY2tfKTsKKyAg
UlRDX0RDSEVDSyhjYWxsYmFjayk7CisKKyAgSW5pdFBvcnRhbCgpOworCisgIGNhbGxiYWNrXyA9
IGNhbGxiYWNrOworfQorCit2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDYXB0dXJlRnJhbWUo
KSB7CisgIGlmIChwb3J0YWxfaW5pdF9mYWlsZWRfKSB7CisgICAgY2FsbGJhY2tfLT5PbkNhcHR1
cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9QRVJNQU5FTlQsIG51bGxwdHIpOworICAgIHJldHVybjsK
KyAgfQorCisgIGlmICghY3VycmVudF9mcmFtZV8pIHsKKyAgICBjYWxsYmFja18tPk9uQ2FwdHVy
ZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1RFTVBPUkFSWSwgbnVsbHB0cik7CisgICAgcmV0dXJuOwor
ICB9CisKKyAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gcmVzdWx0KG5ldyBCYXNpY0Rl
c2t0b3BGcmFtZShkZXNrdG9wX3NpemVfKSk7CisgIHJlc3VsdC0+Q29weVBpeGVsc0Zyb20oCisg
ICAgICBjdXJyZW50X2ZyYW1lXywgKGRlc2t0b3Bfc2l6ZV8ud2lkdGgoKSAqIGtCeXRlc1BlclBp
eGVsKSwKKyAgICAgIERlc2t0b3BSZWN0OjpNYWtlV0goZGVza3RvcF9zaXplXy53aWR0aCgpLCBk
ZXNrdG9wX3NpemVfLmhlaWdodCgpKSk7CisgIGlmICghcmVzdWx0KSB7CisgICAgY2FsbGJhY2tf
LT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9URU1QT1JBUlksIG51bGxwdHIpOworICAg
IHJldHVybjsKKyAgfQorICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OlNVQ0NF
U1MsIHN0ZDo6bW92ZShyZXN1bHQpKTsKK30KKworYm9vbCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6
R2V0U291cmNlTGlzdChTb3VyY2VMaXN0KiBzb3VyY2VzKSB7CisgIFJUQ19EQ0hFQ0soc291cmNl
cy0+c2l6ZSgpID09IDApOworICAvLyBMaXN0IG9mIGF2YWlsYWJsZSBzY3JlZW5zIGlzIGFscmVh
ZHkgcHJlc2VudGVkIGJ5IHRoZSB4ZGctZGVza3RvcC1wb3J0YWwuCisgIC8vIEJ1dCB3ZSBoYXZl
IHRvIGFkZCBhbiBlbXB0eSBzb3VyY2UgYXMgdGhlIGNvZGUgZXhwZWN0cyBpdC4KKyAgc291cmNl
cy0+cHVzaF9iYWNrKHswfSk7CisgIHJldHVybiB0cnVlOworfQorCitib29sIEJhc2VDYXB0dXJl
clBpcGVXaXJlOjpTZWxlY3RTb3VyY2UoU291cmNlSWQgaWQpIHsKKyAgLy8gU2NyZWVuIHNlbGVj
dGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSB4ZGctZGVza3RvcC1wb3J0YWwuCisgIHJldHVybiB0cnVl
OworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51
eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVy
X3BpcGV3aXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZiMTAxYWNiYWE2MDFiODNmODFjN2I0ODg5MGM3OWYz
Y2I2Njc1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJf
cGlwZXdpcmUuaApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRl
ZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9CQVNFX0NBUFRVUkVSX1BJUEVXSVJFX0hf
CisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX0JBU0VfQ0FQVFVSRVJfUElQ
RVdJUkVfSF8KKworI2luY2x1ZGUgPGdpby9naW8uaD4KKyNkZWZpbmUgdHlwZW9mIF9fdHlwZW9m
X18KKyNpbmNsdWRlIDxwaXBld2lyZS9waXBld2lyZS5oPgorI2luY2x1ZGUgPHNwYS9wYXJhbS92
aWRlby9mb3JtYXQtdXRpbHMuaD4KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvZGVza3RvcF9jYXB0dXJlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIFBpcGVXaXJlVHlwZSB7Cisg
cHVibGljOgorICBzcGFfdHlwZV9tZWRpYV90eXBlIG1lZGlhX3R5cGU7CisgIHNwYV90eXBlX21l
ZGlhX3N1YnR5cGUgbWVkaWFfc3VidHlwZTsKKyAgc3BhX3R5cGVfZm9ybWF0X3ZpZGVvIGZvcm1h
dF92aWRlbzsKKyAgc3BhX3R5cGVfdmlkZW9fZm9ybWF0IHZpZGVvX2Zvcm1hdDsKK307CisKK2Ns
YXNzIEJhc2VDYXB0dXJlclBpcGVXaXJlIDogcHVibGljIERlc2t0b3BDYXB0dXJlciB7CisgcHVi
bGljOgorICBlbnVtIENhcHR1cmVTb3VyY2VUeXBlIHsgU2NyZWVuID0gMSwgV2luZG93IH07CisK
KyAgZXhwbGljaXQgQmFzZUNhcHR1cmVyUGlwZVdpcmUoQ2FwdHVyZVNvdXJjZVR5cGUgc291cmNl
X3R5cGUpOworICB+QmFzZUNhcHR1cmVyUGlwZVdpcmUoKSBvdmVycmlkZTsKKworICAvLyBEZXNr
dG9wQ2FwdHVyZXIgaW50ZXJmYWNlLgorICB2b2lkIFN0YXJ0KENhbGxiYWNrKiBkZWxlZ2F0ZSkg
b3ZlcnJpZGU7CisgIHZvaWQgQ2FwdHVyZUZyYW1lKCkgb3ZlcnJpZGU7CisgIGJvb2wgR2V0U291
cmNlTGlzdChTb3VyY2VMaXN0KiBzb3VyY2VzKSBvdmVycmlkZTsKKyAgYm9vbCBTZWxlY3RTb3Vy
Y2UoU291cmNlSWQgaWQpIG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgLy8gUGlwZVdpcmUgdHlw
ZXMgLS0+CisgIHB3X2NvcmUqIHB3X2NvcmVfID0gbnVsbHB0cjsKKyAgcHdfdHlwZSogcHdfY29y
ZV90eXBlXyA9IG51bGxwdHI7CisgIHB3X3N0cmVhbSogcHdfc3RyZWFtXyA9IG51bGxwdHI7Cisg
IHB3X3JlbW90ZSogcHdfcmVtb3RlXyA9IG51bGxwdHI7CisgIHB3X2xvb3AqIHB3X2xvb3BfID0g
bnVsbHB0cjsKKyAgcHdfdGhyZWFkX2xvb3AqIHB3X21haW5fbG9vcF8gPSBudWxscHRyOworICBQ
aXBlV2lyZVR5cGUqIHB3X3R5cGVfID0gbnVsbHB0cjsKKworICBzcGFfaG9vayBzcGFfc3RyZWFt
X2xpc3RlbmVyXyA9IHt9OworICBzcGFfaG9vayBzcGFfcmVtb3RlX2xpc3RlbmVyXyA9IHt9Owor
CisgIHB3X3N0cmVhbV9ldmVudHMgcHdfc3RyZWFtX2V2ZW50c18gPSB7fTsKKyAgcHdfcmVtb3Rl
X2V2ZW50cyBwd19yZW1vdGVfZXZlbnRzXyA9IHt9OworCisgIHNwYV92aWRlb19pbmZvX3Jhdyog
c3BhX3ZpZGVvX2Zvcm1hdF8gPSBudWxscHRyOworCisgIGdpbnQzMiBwd19mZF8gPSAtMTsKKwor
ICBDYXB0dXJlU291cmNlVHlwZSBjYXB0dXJlX3NvdXJjZV90eXBlXyA9CisgICAgICBCYXNlQ2Fw
dHVyZXJQaXBlV2lyZTo6Q2FwdHVyZVNvdXJjZVR5cGU6OlNjcmVlbjsKKworICAvLyA8LS0gZW5k
IG9mIFBpcGVXaXJlIHR5cGVzCisKKyAgR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uXyA9IG51
bGxwdHI7CisgIEdEQnVzUHJveHkqIHByb3h5XyA9IG51bGxwdHI7CisgIGdjaGFyKiBwb3J0YWxf
aGFuZGxlXyA9IG51bGxwdHI7CisgIGdjaGFyKiBzZXNzaW9uX2hhbmRsZV8gPSBudWxscHRyOwor
ICBnY2hhciogc291cmNlc19oYW5kbGVfID0gbnVsbHB0cjsKKyAgZ2NoYXIqIHN0YXJ0X2hhbmRs
ZV8gPSBudWxscHRyOworICBndWludCBzZXNzaW9uX3JlcXVlc3Rfc2lnbmFsX2lkXyA9IDA7Cisg
IGd1aW50IHNvdXJjZXNfcmVxdWVzdF9zaWduYWxfaWRfID0gMDsKKyAgZ3VpbnQgc3RhcnRfcmVx
dWVzdF9zaWduYWxfaWRfID0gMDsKKworICBEZXNrdG9wU2l6ZSBkZXNrdG9wX3NpemVfID0ge307
CisgIERlc2t0b3BDYXB0dXJlT3B0aW9ucyBvcHRpb25zXyA9IHt9OworCisgIHVpbnQ4X3QqIGN1
cnJlbnRfZnJhbWVfID0gbnVsbHB0cjsKKyAgQ2FsbGJhY2sqIGNhbGxiYWNrXyA9IG51bGxwdHI7
CisKKyAgYm9vbCBwb3J0YWxfaW5pdF9mYWlsZWRfID0gZmFsc2U7CisKKyAgdm9pZCBJbml0UG9y
dGFsKCk7CisgIHZvaWQgSW5pdFBpcGVXaXJlKCk7CisgIHZvaWQgSW5pdFBpcGVXaXJlVHlwZXMo
KTsKKworICB2b2lkIENyZWF0ZVJlY2VpdmluZ1N0cmVhbSgpOworICB2b2lkIEhhbmRsZUJ1ZmZl
cihwd19idWZmZXIqIGJ1ZmZlcik7CisKKyAgdm9pZCBDb252ZXJ0UkdCeFRvQkdSeCh1aW50OF90
KiBmcmFtZSwgdWludDMyX3Qgc2l6ZSk7CisKKyAgc3RhdGljIHZvaWQgT25TdGF0ZUNoYW5nZWQo
dm9pZCogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdfcmVtb3RlX3N0YXRl
IG9sZF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdfcmVtb3RlX3N0YXRl
IHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJvcik7
CisgIHN0YXRpYyB2b2lkIE9uU3RyZWFtU3RhdGVDaGFuZ2VkKHZvaWQqIGRhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3X3N0cmVhbV9zdGF0ZSBvbGRfc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3X3N0cmVhbV9zdGF0ZSBzdGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJyb3JfbWVz
c2FnZSk7CisKKyAgc3RhdGljIHZvaWQgT25TdHJlYW1Gb3JtYXRDaGFuZ2VkKHZvaWQqIGRhdGEs
IGNvbnN0IHN0cnVjdCBzcGFfcG9kKiBmb3JtYXQpOworICBzdGF0aWMgdm9pZCBPblN0cmVhbVBy
b2Nlc3Modm9pZCogZGF0YSk7CisgIHN0YXRpYyB2b2lkIE9uTmV3QnVmZmVyKHZvaWQqIGRhdGEs
IHVpbnQzMl90IGlkKTsKKworICBndWludCBTZXR1cFJlcXVlc3RSZXNwb25zZVNpZ25hbChjb25z
dCBnY2hhciogb2JqZWN0X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdEQnVzU2lnbmFsQ2FsbGJhY2sgY2FsbGJhY2spOworCisgIHN0YXRpYyB2b2lkIE9uUHJveHlS
ZXF1ZXN0ZWQoR09iamVjdCogb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdBc3luY1Jlc3VsdCogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdw
b2ludGVyIHVzZXJfZGF0YSk7CisKKyAgc3RhdGljIGdjaGFyKiBQcmVwYXJlU2lnbmFsSGFuZGxl
KEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdjaGFyKiB0b2tlbik7CisKKyAgdm9pZCBTZXNzaW9uUmVxdWVzdCgp
OworICBzdGF0aWMgdm9pZCBPblNlc3Npb25SZXF1ZXN0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2Rh
dGEpOworICBzdGF0aWMgdm9pZCBPblNlc3Npb25SZXF1ZXN0UmVzcG9uc2VTaWduYWwoR0RCdXND
b25uZWN0aW9uKiBjb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2NoYXIqIHNlbmRlcl9uYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIG9iamVjdF9wYXRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGlu
dGVyZmFjZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2NoYXIqIHNpZ25hbF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQqIHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworCisgIHZv
aWQgU291cmNlc1JlcXVlc3QoKTsKKyAgc3RhdGljIHZvaWQgT25Tb3VyY2VzUmVxdWVzdGVkKEdE
QnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdBc3luY1Jlc3VsdCogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKyAgc3RhdGljIHZvaWQgT25Tb3VyY2VzUmVxdWVzdFJl
c3BvbnNlU2lnbmFsKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBzZW5kZXJfbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFy
KiBvYmplY3RfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdjaGFyKiBpbnRlcmZhY2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBzaWduYWxfbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50KiBwYXJhbWV0ZXJz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIg
dXNlcl9kYXRhKTsKKworICB2b2lkIFN0YXJ0UmVxdWVzdCgpOworICBzdGF0aWMgdm9pZCBPblN0
YXJ0UmVxdWVzdGVkKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQqIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworICBzdGF0aWMgdm9pZCBPblN0YXJ0
UmVxdWVzdFJlc3BvbnNlU2lnbmFsKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogc2VuZGVy
X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2NoYXIqIG9iamVjdF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyKiBpbnRlcmZhY2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogc2lnbmFsX25hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQqIHBhcmFtZXRlcnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNl
cl9kYXRhKTsKKworICB2b2lkIE9wZW5QaXBlV2lyZVJlbW90ZSgpOworICBzdGF0aWMgdm9pZCBP
bk9wZW5QaXBlV2lyZVJlbW90ZVJlcXVlc3RlZChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3Vs
dCogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
cG9pbnRlciB1c2VyX2RhdGEpOworCisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oQmFz
ZUNhcHR1cmVyUGlwZVdpcmUpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5k
aWYgIC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX0JBU0VfQ0FQVFVSRVJfUElQRVdJ
UkVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L21vdXNlX2N1cnNvcl9tb25pdG9yX3gx
MS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2xpbnV4L21vdXNlX2N1cnNvcl9tb25pdG9yX3gxMS5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNzUwMzgyMmJjZWQ4YmJkYmU0N2YzY2QxMDVhYmQ4ZjEwMzJmMzUwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbGludXgvbW91c2VfY3Vyc29yX21vbml0b3JfeDExLmNjCkBAIC0w
LDAgKzEsMjQ3IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2xpbnV4L21vdXNlX2N1cnNvcl9tb25pdG9yX3gxMS5oIgorCisjaW5j
bHVkZSA8WDExL1h1dGlsLmg+CisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGZpeGVzLmg+CisK
KyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAibW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVfdHlwZXMuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9lcnJvcl90cmFwLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2VfY3Vyc29yLmgiCisjaW5jbHVkZSAibW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbW91c2VfY3Vyc29yX21vbml0b3IuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCisKK25hbWVzcGFjZSB7CisKKy8vIFdpbmRvd0NhcHR1cmVyIHJldHVy
bnMgd2luZG93IElEcyBvZiBYMTEgd2luZG93cyB3aXRoIFdNX1NUQVRFIGF0dHJpYnV0ZS4KKy8v
IFRoZXNlIHdpbmRvd3MgbWF5IG5vdCBiZSBpbW1lZGlhdGUgY2hpbGRyZW4gb2YgdGhlIHJvb3Qg
d2luZG93LCBiZWNhdXNlCisvLyB3aW5kb3cgbWFuYWdlcnMgbWF5IHJlLXBhcmVudCB0aGVtIHRv
IGFkZCBkZWNvcmF0aW9ucy4gSG93ZXZlciwKKy8vIFhRdWVyeVBvaW50ZXIoKSBleHBlY3RzIHRv
IGJlIHBhc3NlZCBjaGlsZHJlbiBvZiB0aGUgcm9vdC4gVGhpcyBmdW5jdGlvbgorLy8gc2VhcmNo
ZXMgdXAgdGhlIGxpc3Qgb2YgdGhlIHdpbmRvd3MgdG8gZmluZCB0aGUgcm9vdCBjaGlsZCB0aGF0
IGNvcnJlc3BvbmRzCisvLyB0byB8d2luZG93fC4KK1dpbmRvdyBHZXRUb3BMZXZlbFdpbmRvdyhE
aXNwbGF5KiBkaXNwbGF5LCBXaW5kb3cgd2luZG93KSB7CisgIHdoaWxlICh0cnVlKSB7CisgICAg
Ly8gSWYgdGhlIHdpbmRvdyBpcyBpbiBXaXRoZHJhd25TdGF0ZSB0aGVuIGxvb2sgYXQgYWxsIG9m
IGl0cyBjaGlsZHJlbi4KKyAgICA6OldpbmRvdyByb290LCBwYXJlbnQ7CisgICAgOjpXaW5kb3cq
IGNoaWxkcmVuOworICAgIHVuc2lnbmVkIGludCBudW1fY2hpbGRyZW47CisgICAgaWYgKCFYUXVl
cnlUcmVlKGRpc3BsYXksIHdpbmRvdywgJnJvb3QsICZwYXJlbnQsICZjaGlsZHJlbiwKKyAgICAg
ICAgICAgICAgICAgICAgJm51bV9jaGlsZHJlbikpIHsKKyAgICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJGYWlsZWQgdG8gcXVlcnkgZm9yIGNoaWxkIHdpbmRvd3MgYWx0aG91Z2ggd2luZG93Igor
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgImRvZXMgbm90IGhhdmUgYSB2YWxpZCBXTV9TVEFU
RS4iOworICAgICAgcmV0dXJuIE5vbmU7CisgICAgfQorICAgIGlmIChjaGlsZHJlbikKKyAgICAg
IFhGcmVlKGNoaWxkcmVuKTsKKworICAgIGlmIChwYXJlbnQgPT0gcm9vdCkKKyAgICAgIGJyZWFr
OworCisgICAgd2luZG93ID0gcGFyZW50OworICB9CisKKyAgcmV0dXJuIHdpbmRvdzsKK30KKwor
fSAgLy8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitNb3VzZUN1cnNvck1vbml0
b3JYMTE6Ok1vdXNlQ3Vyc29yTW9uaXRvclgxMSgKKyAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9w
dGlvbnMmIG9wdGlvbnMsCisgICAgV2luZG93IHdpbmRvdykKKyAgICA6IHhfZGlzcGxheV8ob3B0
aW9ucy54X2Rpc3BsYXkoKSksCisgICAgICBjYWxsYmFja18oTlVMTCksCisgICAgICBtb2RlXyhT
SEFQRV9BTkRfUE9TSVRJT04pLAorICAgICAgd2luZG93Xyh3aW5kb3cpLAorICAgICAgaGF2ZV94
Zml4ZXNfKGZhbHNlKSwKKyAgICAgIHhmaXhlc19ldmVudF9iYXNlXygtMSksCisgICAgICB4Zml4
ZXNfZXJyb3JfYmFzZV8oLTEpIHsKKyAgLy8gU2V0IGEgZGVmYXVsdCBpbml0aWFsIGN1cnNvciBz
aGFwZSBpbiBjYXNlIFhGaXhlcyBpcyBub3QgcHJlc2VudC4KKyAgY29uc3QgaW50IGtTaXplID0g
NTsKKyAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gZGVmYXVsdF9jdXJzb3IoCisgICAg
ICBuZXcgQmFzaWNEZXNrdG9wRnJhbWUoRGVza3RvcFNpemUoa1NpemUsIGtTaXplKSkpOworICBj
b25zdCB1aW50OF90IHBpeGVsc1trU2l6ZSAqIGtTaXplXSA9IHsKKyAgICAgIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisgICAgICAweDAwLCAw
eDAwLCAweGZmLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweGZmLCAweGZmLAorICAgICAgMHhm
ZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH07CisgIHVpbnQ4X3QqIHB0ciA9
IGRlZmF1bHRfY3Vyc29yLT5kYXRhKCk7CisgIGZvciAoaW50IHkgPSAwOyB5IDwga1NpemU7ICsr
eSkgeworICAgIGZvciAoaW50IHggPSAwOyB4IDwga1NpemU7ICsreCkgeworICAgICAgKnB0cisr
ID0gcGl4ZWxzW2tTaXplICogeSArIHhdOworICAgICAgKnB0cisrID0gcGl4ZWxzW2tTaXplICog
eSArIHhdOworICAgICAgKnB0cisrID0gcGl4ZWxzW2tTaXplICogeSArIHhdOworICAgICAgKnB0
cisrID0gMHhmZjsKKyAgICB9CisgIH0KKyAgRGVza3RvcFZlY3RvciBob3RzcG90KDIsIDIpOwor
ICBjdXJzb3Jfc2hhcGVfLnJlc2V0KG5ldyBNb3VzZUN1cnNvcihkZWZhdWx0X2N1cnNvci5yZWxl
YXNlKCksIGhvdHNwb3QpKTsKK30KKworTW91c2VDdXJzb3JNb25pdG9yWDExOjp+TW91c2VDdXJz
b3JNb25pdG9yWDExKCkgeworICBpZiAoaGF2ZV94Zml4ZXNfKSB7CisgICAgeF9kaXNwbGF5Xy0+
UmVtb3ZlRXZlbnRIYW5kbGVyKHhmaXhlc19ldmVudF9iYXNlXyArIFhGaXhlc0N1cnNvck5vdGlm
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyk7CisgIH0KK30KKwor
dm9pZCBNb3VzZUN1cnNvck1vbml0b3JYMTE6OkluaXQoQ2FsbGJhY2sqIGNhbGxiYWNrLCBNb2Rl
IG1vZGUpIHsKKyAgLy8gSW5pdCBjYW4gYmUgY2FsbGVkIG9ubHkgb25jZSBwZXIgaW5zdGFuY2Ug
b2YgTW91c2VDdXJzb3JNb25pdG9yLgorICBSVENfRENIRUNLKCFjYWxsYmFja18pOworICBSVENf
RENIRUNLKGNhbGxiYWNrKTsKKworICBjYWxsYmFja18gPSBjYWxsYmFjazsKKyAgbW9kZV8gPSBt
b2RlOworCisgIGhhdmVfeGZpeGVzXyA9CisgICAgICBYRml4ZXNRdWVyeUV4dGVuc2lvbihkaXNw
bGF5KCksICZ4Zml4ZXNfZXZlbnRfYmFzZV8sICZ4Zml4ZXNfZXJyb3JfYmFzZV8pOworCisgIGlm
IChoYXZlX3hmaXhlc18pIHsKKyAgICAvLyBSZWdpc3RlciBmb3IgY2hhbmdlcyB0byB0aGUgY3Vy
c29yIHNoYXBlLgorICAgIFhGaXhlc1NlbGVjdEN1cnNvcklucHV0KGRpc3BsYXkoKSwgd2luZG93
XywgWEZpeGVzRGlzcGxheUN1cnNvck5vdGlmeU1hc2spOworICAgIHhfZGlzcGxheV8tPkFkZEV2
ZW50SGFuZGxlcih4Zml4ZXNfZXZlbnRfYmFzZV8gKyBYRml4ZXNDdXJzb3JOb3RpZnksIHRoaXMp
OworCisgICAgQ2FwdHVyZUN1cnNvcigpOworICB9IGVsc2UgeworICAgIFJUQ19MT0coTFNfSU5G
TykgPDwgIlggc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgWEZpeGVzLiI7CisgIH0KK30KKwordm9p
ZCBNb3VzZUN1cnNvck1vbml0b3JYMTE6OkNhcHR1cmUoKSB7CisgIFJUQ19EQ0hFQ0soY2FsbGJh
Y2tfKTsKKworICAvLyBQcm9jZXNzIFgxMSBldmVudHMgaW4gY2FzZSBYRml4ZXMgaGFzIHNlbnQg
Y3Vyc29yIG5vdGlmaWNhdGlvbi4KKyAgeF9kaXNwbGF5Xy0+UHJvY2Vzc1BlbmRpbmdYRXZlbnRz
KCk7CisKKyAgLy8gY3Vyc29yX3NoYXBlX3wgaXMgc2V0IG9ubHkgaWYgd2Ugd2VyZSBub3RpZmll
ZCBvZiBhIGN1cnNvciBzaGFwZSBjaGFuZ2UuCisgIGlmIChjdXJzb3Jfc2hhcGVfLmdldCgpKQor
ICAgIGNhbGxiYWNrXy0+T25Nb3VzZUN1cnNvcihjdXJzb3Jfc2hhcGVfLnJlbGVhc2UoKSk7CisK
KyAgLy8gR2V0IGN1cnNvciBwb3NpdGlvbiBpZiBuZWNlc3NhcnkuCisgIGlmIChtb2RlXyA9PSBT
SEFQRV9BTkRfUE9TSVRJT04pIHsKKyAgICBpbnQgcm9vdF94OworICAgIGludCByb290X3k7Cisg
ICAgaW50IHdpbl94OworICAgIGludCB3aW5feTsKKyAgICBXaW5kb3cgcm9vdF93aW5kb3c7Cisg
ICAgV2luZG93IGNoaWxkX3dpbmRvdzsKKyAgICB1bnNpZ25lZCBpbnQgbWFzazsKKworICAgIFhF
cnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KCkpOworICAgIEJvb2wgcmVzdWx0ID0gWFF1ZXJ5
UG9pbnRlcihkaXNwbGF5KCksIHdpbmRvd18sICZyb290X3dpbmRvdywgJmNoaWxkX3dpbmRvdywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJvb3RfeCwgJnJvb3RfeSwgJndpbl94
LCAmd2luX3ksICZtYXNrKTsKKyAgICBDdXJzb3JTdGF0ZSBzdGF0ZTsKKyAgICBpZiAoIXJlc3Vs
dCB8fCBlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKSB7CisgICAgICBz
dGF0ZSA9IE9VVFNJREU7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIEluIHNjcmVlbiBtb2RlICh3
aW5kb3dfID09IHJvb3Rfd2luZG93KSB0aGUgbW91c2UgaXMgYWx3YXlzIGluc2lkZS4KKyAgICAg
IC8vIFhRdWVyeVBvaW50ZXIoKSBzZXRzIHxjaGlsZF93aW5kb3d8IHRvIE5vbmUgaWYgdGhlIGN1
cnNvciBpcyBvdXRzaWRlCisgICAgICAvLyB8d2luZG93X3wuCisgICAgICBzdGF0ZSA9CisgICAg
ICAgICAgKHdpbmRvd18gPT0gcm9vdF93aW5kb3cgfHwgY2hpbGRfd2luZG93ICE9IE5vbmUpID8g
SU5TSURFIDogT1VUU0lERTsKKyAgICB9CisKKyAgICAvLyBBcyB0aGUgY29tbWVudHMgdG8gR2V0
VG9wTGV2ZWxXaW5kb3coKSBhYm92ZSBpbmRpY2F0ZSwgaW4gd2luZG93IGNhcHR1cmUsCisgICAg
Ly8gdGhlIGN1cnNvciBwb3NpdGlvbiBjYXB0dXJlIGhhcHBlbnMgaW4gfHdpbmRvd198LCB3aGls
ZSB0aGUgZnJhbWUgY2F0cHVyZQorICAgIC8vIGhhcHBlbnMgaW4gfGNoaWxkX3dpbmRvd3wuIFRo
ZXNlIHR3byB3aW5kb3dzIGFyZSBub3QgYWx3eWFzIHNhbWUsIGFzCisgICAgLy8gd2luZG93IG1h
bmFnZXIgbWF5IGFkZCBzb21lIGRlY29yYXRpb25zIHRvIHRoZSB8d2luZG93X3wuIFNvIHRyYW5z
bGF0ZQorICAgIC8vIHRoZSBjb29yZGluYXRlIGluIHx3aW5kb3dffCB0byB0aGUgY29vcmRpbmF0
ZSBzcGFjZSBvZiB8Y2hpbGRfd2luZG93fC4KKyAgICBpZiAod2luZG93XyAhPSByb290X3dpbmRv
dyAmJiBzdGF0ZSA9PSBJTlNJREUpIHsKKyAgICAgIGludCB0cmFuc2xhdGVkX3gsIHRyYW5zbGF0
ZWRfeTsKKyAgICAgIFdpbmRvdyB1bnVzZWQ7CisgICAgICBpZiAoWFRyYW5zbGF0ZUNvb3JkaW5h
dGVzKGRpc3BsYXkoKSwgd2luZG93XywgY2hpbGRfd2luZG93LCB3aW5feCwgd2luX3ksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFuc2xhdGVkX3gsICZ0cmFuc2xhdGVkX3ks
ICZ1bnVzZWQpKSB7CisgICAgICAgIHdpbl94ID0gdHJhbnNsYXRlZF94OworICAgICAgICB3aW5f
eSA9IHRyYW5zbGF0ZWRfeTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBYMTEgYWx3YXlzIHN0
YXJ0cyB0aGUgY29vcmRpbmF0ZSBmcm9tICgwLCAwKSwgc28gd2UgZG8gbm90IG5lZWQgdG8KKyAg
ICAvLyB0cmFuc2xhdGUgaGVyZS4KKyAgICBjYWxsYmFja18tPk9uTW91c2VDdXJzb3JQb3NpdGlv
bihEZXNrdG9wVmVjdG9yKHJvb3RfeCwgcm9vdF95KSk7CisgIH0KK30KKworYm9vbCBNb3VzZUN1
cnNvck1vbml0b3JYMTE6OkhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSB7CisgIGlm
IChoYXZlX3hmaXhlc18gJiYgZXZlbnQudHlwZSA9PSB4Zml4ZXNfZXZlbnRfYmFzZV8gKyBYRml4
ZXNDdXJzb3JOb3RpZnkpIHsKKyAgICBjb25zdCBYRml4ZXNDdXJzb3JOb3RpZnlFdmVudCogY3Vy
c29yX2V2ZW50ID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBYRml4ZXNDdXJzb3JO
b3RpZnlFdmVudCo+KCZldmVudCk7CisgICAgaWYgKGN1cnNvcl9ldmVudC0+c3VidHlwZSA9PSBY
Rml4ZXNEaXNwbGF5Q3Vyc29yTm90aWZ5KSB7CisgICAgICBDYXB0dXJlQ3Vyc29yKCk7CisgICAg
fQorICAgIC8vIFJldHVybiBmYWxzZSwgZXZlbiBpZiB0aGUgZXZlbnQgaGFzIGJlZW4gaGFuZGxl
ZCwgYmVjYXVzZSB0aGVyZSBtaWdodCBiZQorICAgIC8vIG90aGVyIGxpc3RlbmVycyBmb3IgY3Vy
c29yIG5vdGlmaWNhdGlvbnMuCisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1vdXNl
Q3Vyc29yTW9uaXRvclgxMTo6Q2FwdHVyZUN1cnNvcigpIHsKKyAgUlRDX0RDSEVDSyhoYXZlX3hm
aXhlc18pOworCisgIFhGaXhlc0N1cnNvckltYWdlKiBpbWc7CisgIHsKKyAgICBYRXJyb3JUcmFw
IGVycm9yX3RyYXAoZGlzcGxheSgpKTsKKyAgICBpbWcgPSBYRml4ZXNHZXRDdXJzb3JJbWFnZShk
aXNwbGF5KCkpOworICAgIGlmICghaW1nIHx8IGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlz
YWJsZSgpICE9IDApCisgICAgICByZXR1cm47CisgIH0KKworICBzdGQ6OnVuaXF1ZV9wdHI8RGVz
a3RvcEZyYW1lPiBpbWFnZSgKKyAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShEZXNrdG9wU2l6
ZShpbWctPndpZHRoLCBpbWctPmhlaWdodCkpKTsKKworICB1aW50NjRfdCogc3JjID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50NjRfdCo+KGltZy0+cGl4ZWxzKTsKKyAgdWludDMyX3QqIGRzdCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihpbWFnZS0+ZGF0YSgpKTsKKyAgdWludDMyX3QqIGRz
dF9lbmQgPSBkc3QgKyAoaW1nLT53aWR0aCAqIGltZy0+aGVpZ2h0KTsKKyAgd2hpbGUgKGRzdCA8
IGRzdF9lbmQpIHsKKyAgICAqZHN0KysgPSAqc3JjKys7CisgIH0KKworICBEZXNrdG9wVmVjdG9y
IGhvdHNwb3Qoc3RkOjptaW4oaW1nLT53aWR0aCwgaW1nLT54aG90KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bWluKGltZy0+aGVpZ2h0LCBpbWctPnlob3QpKTsKKworICBYRnJlZShp
bWcpOworCisgIGN1cnNvcl9zaGFwZV8ucmVzZXQobmV3IE1vdXNlQ3Vyc29yKGltYWdlLnJlbGVh
c2UoKSwgaG90c3BvdCkpOworfQorCisvLyBzdGF0aWMKK01vdXNlQ3Vyc29yTW9uaXRvciogTW91
c2VDdXJzb3JNb25pdG9yWDExOjpDcmVhdGVGb3JXaW5kb3coCisgICAgY29uc3QgRGVza3RvcENh
cHR1cmVPcHRpb25zJiBvcHRpb25zLAorICAgIFdpbmRvd0lkIHdpbmRvdykgeworICBpZiAoIW9w
dGlvbnMueF9kaXNwbGF5KCkpCisgICAgcmV0dXJuIE5VTEw7CisgIHdpbmRvdyA9IEdldFRvcExl
dmVsV2luZG93KG9wdGlvbnMueF9kaXNwbGF5KCktPmRpc3BsYXkoKSwgd2luZG93KTsKKyAgaWYg
KHdpbmRvdyA9PSBOb25lKQorICAgIHJldHVybiBOVUxMOworICByZXR1cm4gbmV3IE1vdXNlQ3Vy
c29yTW9uaXRvclgxMShvcHRpb25zLCB3aW5kb3cpOworfQorCitNb3VzZUN1cnNvck1vbml0b3Iq
IE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6Q3JlYXRlRm9yU2NyZWVuKAorICAgIGNvbnN0IERlc2t0
b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucywKKyAgICBTY3JlZW5JZCBzY3JlZW4pIHsKKyAgaWYg
KCFvcHRpb25zLnhfZGlzcGxheSgpKQorICAgIHJldHVybiBOVUxMOworICByZXR1cm4gbmV3IE1v
dXNlQ3Vyc29yTW9uaXRvclgxMSgKKyAgICAgIG9wdGlvbnMsIERlZmF1bHRSb290V2luZG93KG9w
dGlvbnMueF9kaXNwbGF5KCktPmRpc3BsYXkoKSkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TW91
c2VDdXJzb3JNb25pdG9yPiBNb3VzZUN1cnNvck1vbml0b3JYMTE6OkNyZWF0ZSgKKyAgICBjb25z
dCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKKyAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxNb3VzZUN1cnNvck1vbml0b3I+KAorICAgICAgQ3JlYXRlRm9yU2NyZWVuKG9wdGlvbnMs
IGtGdWxsRGVza3RvcFNjcmVlbklkKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L21vdXNlX2N1cnNvcl9tb25pdG9yX3gxMS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvbGludXgvbW91c2VfY3Vyc29yX21vbml0b3JfeDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U4ZTBj
YTc4YzMyNGRlNDUxYjZlOTRhMTE0MTU2ZDVhMzQyZWFhYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2xpbnV4L21vdXNlX2N1cnNvcl9tb25pdG9yX3gxMS5oCkBAIC0wLDAgKzEsNjQgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElO
VVhfTU9VU0VfQ1VSU09SX01PTklUT1JfWDExX0hfCisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9D
QVBUVVJFX0xJTlVYX01PVVNFX0NVUlNPUl9NT05JVE9SX1gxMV9IXworCisjaW5jbHVkZSA8WDEx
L1hsaWIuaD4KKworI2luY2x1ZGUgPG1lbW9yeT4KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL2xpbnV4L3NoYXJlZF94X2Rpc3BsYXkuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3JfbW9uaXRvci5oIgorCituYW1lc3BhY2Ugd2VicnRj
IHsKKworY2xhc3MgTW91c2VDdXJzb3JNb25pdG9yWDExIDogcHVibGljIE1vdXNlQ3Vyc29yTW9u
aXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTaGFyZWRYRGlzcGxh
eTo6WEV2ZW50SGFuZGxlciB7CisgcHVibGljOgorICBNb3VzZUN1cnNvck1vbml0b3JYMTEoY29u
c3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zLCBXaW5kb3cgd2luZG93KTsKKyAgfk1v
dXNlQ3Vyc29yTW9uaXRvclgxMSgpIG92ZXJyaWRlOworCisgIHN0YXRpYyBNb3VzZUN1cnNvck1v
bml0b3IqIENyZWF0ZUZvcldpbmRvdygKKyAgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9u
cyYgb3B0aW9ucywKKyAgICAgIFdpbmRvd0lkIHdpbmRvdyk7CisgIHN0YXRpYyBNb3VzZUN1cnNv
ck1vbml0b3IqIENyZWF0ZUZvclNjcmVlbigKKyAgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0
aW9ucyYgb3B0aW9ucywKKyAgICAgIFNjcmVlbklkIHNjcmVlbik7CisgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8TW91c2VDdXJzb3JNb25pdG9yPiBDcmVhdGUoCisgICAgICBjb25zdCBEZXNrdG9w
Q2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpOworCisgIHZvaWQgSW5pdChDYWxsYmFjayogY2FsbGJh
Y2ssIE1vZGUgbW9kZSkgb3ZlcnJpZGU7CisgIHZvaWQgQ2FwdHVyZSgpIG92ZXJyaWRlOworCisg
cHJpdmF0ZToKKyAgLy8gU2hhcmVkWERpc3BsYXk6OlhFdmVudEhhbmRsZXIgaW50ZXJmYWNlLgor
ICBib29sIEhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSBvdmVycmlkZTsKKworICBE
aXNwbGF5KiBkaXNwbGF5KCkgeyByZXR1cm4geF9kaXNwbGF5Xy0+ZGlzcGxheSgpOyB9CisKKyAg
Ly8gQ2FwdHVyZXMgY3VycmVudCBjdXJzb3Igc2hhcGUgYW5kIHN0b3JlcyBpdCBpbiB8Y3Vyc29y
X3NoYXBlX3wuCisgIHZvaWQgQ2FwdHVyZUN1cnNvcigpOworCisgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxTaGFyZWRYRGlzcGxheT4geF9kaXNwbGF5XzsKKyAgQ2FsbGJhY2sqIGNhbGxiYWNrXzsKKyAg
TW9kZSBtb2RlXzsKKyAgV2luZG93IHdpbmRvd187CisKKyAgYm9vbCBoYXZlX3hmaXhlc187Cisg
IGludCB4Zml4ZXNfZXZlbnRfYmFzZV87CisgIGludCB4Zml4ZXNfZXJyb3JfYmFzZV87CisKKyAg
c3RkOjp1bmlxdWVfcHRyPE1vdXNlQ3Vyc29yPiBjdXJzb3Jfc2hhcGVfOworfTsKKworfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJ
TlVYX01PVVNFX0NVUlNPUl9NT05JVE9SX1gxMV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2Nh
cHR1cmVyX3BpcGV3aXJlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNGQ4NTM3ZDMxMTc4ZGY0MGFkMzI0MDc0
YzMwZjVjY2VkMDA5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5f
Y2FwdHVyZXJfcGlwZXdpcmUuY2MKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqICBDb3B5cmlnaHQg
MjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8K
KworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJl
cl9waXBld2lyZS5oIgorCisjaW5jbHVkZSA8bWVtb3J5PgorCisjaW5jbHVkZSAiYWJzbC9tZW1v
cnkvbWVtb3J5LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitTY3JlZW5DYXB0dXJlclBpcGVX
aXJlOjpTY3JlZW5DYXB0dXJlclBpcGVXaXJlKCkKKyAgICA6IEJhc2VDYXB0dXJlclBpcGVXaXJl
KEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDYXB0dXJlU291cmNlVHlwZTo6U2NyZWVuKSB7fQorU2Ny
ZWVuQ2FwdHVyZXJQaXBlV2lyZTo6flNjcmVlbkNhcHR1cmVyUGlwZVdpcmUoKSB7fQorCisvLyBz
dGF0aWMKK3N0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+CitTY3JlZW5DYXB0dXJlclBp
cGVXaXJlOjpDcmVhdGVSYXdTY3JlZW5DYXB0dXJlcigKKyAgICBjb25zdCBEZXNrdG9wQ2FwdHVy
ZU9wdGlvbnMmIG9wdGlvbnMpIHsKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFNjcmVlbkNh
cHR1cmVyUGlwZVdpcmU+KCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl9waXBld2lyZS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
bGludXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjZkY2Q2ODBlMDZh
MzIwZmEzN2FjZmJmMGJhZmI3MmI1NjcwZWVmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2xpbnV4L3NjcmVlbl9jYXB0dXJlcl9waXBld2lyZS5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfU0NS
RUVOX0NBUFRVUkVSX1BJUEVXSVJFX0hfCisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJF
X0xJTlVYX1NDUkVFTl9DQVBUVVJFUl9QSVBFV0lSRV9IXworCisjaW5jbHVkZSA8bWVtb3J5Pgor
CisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvYmFzZV9jYXB0dXJlcl9w
aXBld2lyZS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgU2NyZWVuQ2FwdHVyZXJQ
aXBlV2lyZSA6IHB1YmxpYyBCYXNlQ2FwdHVyZXJQaXBlV2lyZSB7CisgcHVibGljOgorICBTY3Jl
ZW5DYXB0dXJlclBpcGVXaXJlKCk7CisgIH5TY3JlZW5DYXB0dXJlclBpcGVXaXJlKCkgb3ZlcnJp
ZGU7CisKKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+IENyZWF0ZVJh
d1NjcmVlbkNhcHR1cmVyKAorICAgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRp
b25zKTsKKworICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNjcmVlbkNhcHR1cmVyUGlw
ZVdpcmUpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIE1PRFVM
RVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1NDUkVFTl9DQVBUVVJFUl9QSVBFV0lSRV9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3gxMS5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2xpbnV4L3NjcmVlbl9jYXB0dXJlcl94MTEuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQ2YTA4NWI2NWNjZmFh
ZjNmMGUyODUzZDc5NzM3N2M0NjhhOWE3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L3NjcmVlbl9jYXB0dXJlcl94MTEuY2MKQEAgLTAsMCArMSwzMzcgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2Ny
ZWVuX2NhcHR1cmVyX3gxMS5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxY
MTEvWGxpYi5oPgorI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgorI2luY2x1ZGUgPFgxMS9leHRlbnNp
b25zL1hkYW1hZ2UuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZml4ZXMuaD4KKworI2lu
Y2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5oIgor
I2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZnJhbWUuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X3NlcnZlcl9waXhlbF9idWZmZXIu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fY2FwdHVyZV9mcmFt
ZV9xdWV1ZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9jYXB0
dXJlcl9oZWxwZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zaGFyZWRf
ZGVza3RvcF9mcmFtZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKwor
U2NyZWVuQ2FwdHVyZXJYMTE6OlNjcmVlbkNhcHR1cmVyWDExKCkgeworICBoZWxwZXJfLlNldExv
Z0dyaWRTaXplKDQpOworfQorCitTY3JlZW5DYXB0dXJlclgxMTo6flNjcmVlbkNhcHR1cmVyWDEx
KCkgeworICBvcHRpb25zXy54X2Rpc3BsYXkoKS0+UmVtb3ZlRXZlbnRIYW5kbGVyKENvbmZpZ3Vy
ZU5vdGlmeSwgdGhpcyk7CisgIGlmICh1c2VfZGFtYWdlXykgeworICAgIG9wdGlvbnNfLnhfZGlz
cGxheSgpLT5SZW1vdmVFdmVudEhhbmRsZXIoZGFtYWdlX2V2ZW50X2Jhc2VfICsgWERhbWFnZU5v
dGlmeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMp
OworICB9CisgIERlaW5pdFhsaWIoKTsKK30KKworYm9vbCBTY3JlZW5DYXB0dXJlclgxMTo6SW5p
dChjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKKyAgVFJBQ0VfRVZFTlQw
KCJ3ZWJydGMiLCAiU2NyZWVuQ2FwdHVyZXJYMTE6OkluaXQiKTsKKyAgb3B0aW9uc18gPSBvcHRp
b25zOworCisgIHJvb3Rfd2luZG93XyA9IFJvb3RXaW5kb3coZGlzcGxheSgpLCBEZWZhdWx0U2Ny
ZWVuKGRpc3BsYXkoKSkpOworICBpZiAocm9vdF93aW5kb3dfID09IEJhZFZhbHVlKSB7CisgICAg
UlRDX0xPRyhMU19FUlJPUikgPDwgIlVuYWJsZSB0byBnZXQgdGhlIHJvb3Qgd2luZG93IjsKKyAg
ICBEZWluaXRYbGliKCk7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgZ2NfID0gWENyZWF0
ZUdDKGRpc3BsYXkoKSwgcm9vdF93aW5kb3dfLCAwLCBOVUxMKTsKKyAgaWYgKGdjXyA9PSBOVUxM
KSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVuYWJsZSB0byBnZXQgZ3JhcGhpY3MgY29u
dGV4dCI7CisgICAgRGVpbml0WGxpYigpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIG9w
dGlvbnNfLnhfZGlzcGxheSgpLT5BZGRFdmVudEhhbmRsZXIoQ29uZmlndXJlTm90aWZ5LCB0aGlz
KTsKKworICAvLyBDaGVjayBmb3IgWEZpeGVzIGV4dGVuc2lvbi4gVGhpcyBpcyByZXF1aXJlZCBm
b3IgY3Vyc29yIHNoYXBlCisgIC8vIG5vdGlmaWNhdGlvbnMsIGFuZCBmb3Igb3VyIHVzZSBvZiBY
RGFtYWdlLgorICBpZiAoWEZpeGVzUXVlcnlFeHRlbnNpb24oZGlzcGxheSgpLCAmeGZpeGVzX2V2
ZW50X2Jhc2VfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnhmaXhlc19lcnJvcl9iYXNl
XykpIHsKKyAgICBoYXNfeGZpeGVzXyA9IHRydWU7CisgIH0gZWxzZSB7CisgICAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiWCBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBYRml4ZXMuIjsKKyAgfQorCisg
IC8vIFJlZ2lzdGVyIGZvciBjaGFuZ2VzIHRvIHRoZSBkaW1lbnNpb25zIG9mIHRoZSByb290IHdp
bmRvdy4KKyAgWFNlbGVjdElucHV0KGRpc3BsYXkoKSwgcm9vdF93aW5kb3dfLCBTdHJ1Y3R1cmVO
b3RpZnlNYXNrKTsKKworICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uSW5pdChkaXNwbGF5
KCksIERlZmF1bHRSb290V2luZG93KGRpc3BsYXkoKSkpKSB7CisgICAgUlRDX0xPRyhMU19FUlJP
UikgPDwgIkZhaWxlZCB0byBpbml0aWFsaXplIHBpeGVsIGJ1ZmZlci4iOworICAgIHJldHVybiBm
YWxzZTsKKyAgfQorCisgIGlmIChvcHRpb25zXy51c2VfdXBkYXRlX25vdGlmaWNhdGlvbnMoKSkg
eworICAgIEluaXRYRGFtYWdlKCk7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBT
Y3JlZW5DYXB0dXJlclgxMTo6SW5pdFhEYW1hZ2UoKSB7CisgIC8vIE91ciB1c2Ugb2YgWERhbWFn
ZSByZXF1aXJlcyBYRml4ZXMuCisgIGlmICghaGFzX3hmaXhlc18pIHsKKyAgICByZXR1cm47Cisg
IH0KKworICAvLyBDaGVjayBmb3IgWERhbWFnZSBleHRlbnNpb24uCisgIGlmICghWERhbWFnZVF1
ZXJ5RXh0ZW5zaW9uKGRpc3BsYXkoKSwgJmRhbWFnZV9ldmVudF9iYXNlXywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmRhbWFnZV9lcnJvcl9iYXNlXykpIHsKKyAgICBSVENfTE9HKExT
X0lORk8pIDw8ICJYIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IFhEYW1hZ2UuIjsKKyAgICByZXR1
cm47CisgIH0KKworICAvLyBUT0RPKGxhbWJyb3NsYW1icm91KTogRGlzYWJsZSBEQU1BR0UgaW4g
c2l0dWF0aW9ucyB3aGVyZSBpdCBpcyBrbm93bgorICAvLyB0byBmYWlsLCBzdWNoIGFzIHdoZW4g
RGVza3RvcCBFZmZlY3RzIGFyZSBlbmFibGVkLCB3aXRoIGdyYXBoaWNzCisgIC8vIGRyaXZlcnMg
KG5WaWRpYSwgQVRJKSB0aGF0IGZhaWwgdG8gcmVwb3J0IERBTUFHRSBub3RpZmljYXRpb25zCisg
IC8vIHByb3Blcmx5LgorCisgIC8vIFJlcXVlc3Qgbm90aWZpY2F0aW9ucyBldmVyeSB0aW1lIHRo
ZSBzY3JlZW4gYmVjb21lcyBkYW1hZ2VkLgorICBkYW1hZ2VfaGFuZGxlXyA9CisgICAgICBYRGFt
YWdlQ3JlYXRlKGRpc3BsYXkoKSwgcm9vdF93aW5kb3dfLCBYRGFtYWdlUmVwb3J0Tm9uRW1wdHkp
OworICBpZiAoIWRhbWFnZV9oYW5kbGVfKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVu
YWJsZSB0byBpbml0aWFsaXplIFhEYW1hZ2UuIjsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBD
cmVhdGUgYW4gWEZpeGVzIHNlcnZlci1zaWRlIHJlZ2lvbiB0byBjb2xsYXRlIGRhbWFnZSBpbnRv
LgorICBkYW1hZ2VfcmVnaW9uXyA9IFhGaXhlc0NyZWF0ZVJlZ2lvbihkaXNwbGF5KCksIDAsIDAp
OworICBpZiAoIWRhbWFnZV9yZWdpb25fKSB7CisgICAgWERhbWFnZURlc3Ryb3koZGlzcGxheSgp
LCBkYW1hZ2VfaGFuZGxlXyk7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVuYWJsZSB0byBj
cmVhdGUgWEZpeGVzIHJlZ2lvbi4iOworICAgIHJldHVybjsKKyAgfQorCisgIG9wdGlvbnNfLnhf
ZGlzcGxheSgpLT5BZGRFdmVudEhhbmRsZXIoZGFtYWdlX2V2ZW50X2Jhc2VfICsgWERhbWFnZU5v
dGlmeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKTsKKwor
ICB1c2VfZGFtYWdlXyA9IHRydWU7CisgIFJUQ19MT0coTFNfSU5GTykgPDwgIlVzaW5nIFhEYW1h
Z2UgZXh0ZW5zaW9uLiI7Cit9CisKK3ZvaWQgU2NyZWVuQ2FwdHVyZXJYMTE6OlN0YXJ0KENhbGxi
YWNrKiBjYWxsYmFjaykgeworICBSVENfRENIRUNLKCFjYWxsYmFja18pOworICBSVENfRENIRUNL
KGNhbGxiYWNrKTsKKworICBjYWxsYmFja18gPSBjYWxsYmFjazsKK30KKwordm9pZCBTY3JlZW5D
YXB0dXJlclgxMTo6Q2FwdHVyZUZyYW1lKCkgeworICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIsICJT
Y3JlZW5DYXB0dXJlclgxMTo6Q2FwdHVyZUZyYW1lIik7CisgIGludDY0X3QgY2FwdHVyZV9zdGFy
dF90aW1lX25hbm9zID0gcnRjOjpUaW1lTmFub3MoKTsKKworICBxdWV1ZV8uTW92ZVRvTmV4dEZy
YW1lKCk7CisgIFJUQ19EQ0hFQ0soIXF1ZXVlXy5jdXJyZW50X2ZyYW1lKCkgfHwgIXF1ZXVlXy5j
dXJyZW50X2ZyYW1lKCktPklzU2hhcmVkKCkpOworCisgIC8vIFByb2Nlc3MgWEV2ZW50cyBmb3Ig
WERhbWFnZSBhbmQgY3Vyc29yIHNoYXBlIHRyYWNraW5nLgorICBvcHRpb25zXy54X2Rpc3BsYXko
KS0+UHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCk7CisKKyAgLy8gUHJvY2Vzc1BlbmRpbmdYRXZlbnRz
KCkgbWF5IGNhbGwgU2NyZWVuQ29uZmlndXJhdGlvbkNoYW5nZWQoKSB3aGljaAorICAvLyByZWlu
aXRpYWxpemVzIHx4X3NlcnZlcl9waXhlbF9idWZmZXJffC4gQ2hlY2sgaWYgdGhlIHBpeGVsIGJ1
ZmZlciBpcyBzdGlsbAorICAvLyBpbiBhIGdvb2Qgc2hhcGUuCisgIGlmICgheF9zZXJ2ZXJfcGl4
ZWxfYnVmZmVyXy5pc19pbml0aWFsaXplZCgpKSB7CisgICAgLy8gV2UgZmFpbGVkIHRvIGluaXRp
YWxpemUgcGl4ZWwgYnVmZmVyLgorICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJQaXhlbCBidWZm
ZXIgaXMgbm90IGluaXRpYWxpemVkLiI7CisgICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQo
UmVzdWx0OjpFUlJPUl9QRVJNQU5FTlQsIG51bGxwdHIpOworICAgIHJldHVybjsKKyAgfQorCisg
IC8vIElmIHRoZSBjdXJyZW50IGZyYW1lIGlzIGZyb20gYW4gb2xkZXIgZ2VuZXJhdGlvbiB0aGVu
IGFsbG9jYXRlIGEgbmV3IG9uZS4KKyAgLy8gTm90ZSB0aGF0IHdlIGNhbid0IHJlYWxsb2NhdGUg
b3RoZXIgYnVmZmVycyBhdCB0aGlzIHBvaW50LCBzaW5jZSB0aGUgY2FsbGVyCisgIC8vIG1heSBz
dGlsbCBiZSByZWFkaW5nIGZyb20gdGhlbS4KKyAgaWYgKCFxdWV1ZV8uY3VycmVudF9mcmFtZSgp
KSB7CisgICAgcXVldWVfLlJlcGxhY2VDdXJyZW50RnJhbWUoCisgICAgICAgIFNoYXJlZERlc2t0
b3BGcmFtZTo6V3JhcChzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPigKKyAgICAgICAgICAg
IG5ldyBCYXNpY0Rlc2t0b3BGcmFtZSh4X3NlcnZlcl9waXhlbF9idWZmZXJfLndpbmRvd19zaXpl
KCkpKSkpOworICB9CisKKyAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gcmVzdWx0ID0g
Q2FwdHVyZVNjcmVlbigpOworICBpZiAoIXJlc3VsdCkgeworICAgIFJUQ19MT0coTFNfV0FSTklO
RykgPDwgIlRlbXBvcmFyaWx5IGZhaWxlZCB0byBjYXB0dXJlIHNjcmVlbi4iOworICAgIGNhbGxi
YWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfVEVNUE9SQVJZLCBudWxscHRyKTsK
KyAgICByZXR1cm47CisgIH0KKworICBsYXN0X2ludmFsaWRfcmVnaW9uXyA9IHJlc3VsdC0+dXBk
YXRlZF9yZWdpb24oKTsKKyAgcmVzdWx0LT5zZXRfY2FwdHVyZV90aW1lX21zKChydGM6OlRpbWVO
YW5vcygpIC0gY2FwdHVyZV9zdGFydF90aW1lX25hbm9zKSAvCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OmtOdW1OYW5vc2Vjc1Blck1pbGxpc2VjKTsKKyAgY2FsbGJhY2tfLT5P
bkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpTVUNDRVNTLCBzdGQ6Om1vdmUocmVzdWx0KSk7Cit9CisK
K2Jvb2wgU2NyZWVuQ2FwdHVyZXJYMTE6OkdldFNvdXJjZUxpc3QoU291cmNlTGlzdCogc291cmNl
cykgeworICBSVENfRENIRUNLKHNvdXJjZXMtPnNpemUoKSA9PSAwKTsKKyAgLy8gVE9ETyhqaWF5
bCk6IGltcGxlbWVudCBzY3JlZW4gZW51bWVyYXRpb24uCisgIHNvdXJjZXMtPnB1c2hfYmFjayh7
MH0pOworICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTY3JlZW5DYXB0dXJlclgxMTo6U2VsZWN0
U291cmNlKFNvdXJjZUlkIGlkKSB7CisgIC8vIFRPRE8oamlheWwpOiBpbXBsZW1lbnQgc2NyZWVu
IHNlbGVjdGlvbi4KKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU2NyZWVuQ2FwdHVyZXJYMTE6
OkhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSB7CisgIGlmICh1c2VfZGFtYWdlXyAm
JiAoZXZlbnQudHlwZSA9PSBkYW1hZ2VfZXZlbnRfYmFzZV8gKyBYRGFtYWdlTm90aWZ5KSkgewor
ICAgIGNvbnN0IFhEYW1hZ2VOb3RpZnlFdmVudCogZGFtYWdlX2V2ZW50ID0KKyAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBYRGFtYWdlTm90aWZ5RXZlbnQqPigmZXZlbnQpOworICAgIGlm
IChkYW1hZ2VfZXZlbnQtPmRhbWFnZSAhPSBkYW1hZ2VfaGFuZGxlXykKKyAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBSVENfRENIRUNLKGRhbWFnZV9ldmVudC0+bGV2ZWwgPT0gWERhbWFnZVJlcG9y
dE5vbkVtcHR5KTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSBlbHNlIGlmIChldmVudC50eXBlID09
IENvbmZpZ3VyZU5vdGlmeSkgeworICAgIFNjcmVlbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7Cisg
ICAgcmV0dXJuIHRydWU7CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8RGVza3RvcEZyYW1lPiBTY3JlZW5DYXB0dXJlclgxMTo6Q2FwdHVyZVNjcmVlbigpIHsKKyAg
c3RkOjp1bmlxdWVfcHRyPFNoYXJlZERlc2t0b3BGcmFtZT4gZnJhbWUgPSBxdWV1ZV8uY3VycmVu
dF9mcmFtZSgpLT5TaGFyZSgpOworICBSVENfRENIRUNLKHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8u
d2luZG93X3NpemUoKS5lcXVhbHMoZnJhbWUtPnNpemUoKSkpOworCisgIC8vIFBhc3MgdGhlIHNj
cmVlbiBzaXplIHRvIHRoZSBoZWxwZXIsIHNvIGl0IGNhbiBjbGlwIHRoZSBpbnZhbGlkIHJlZ2lv
biBpZiBpdAorICAvLyBleHBhbmRzIHRoYXQgcmVnaW9uIHRvIGEgZ3JpZC4KKyAgaGVscGVyXy5z
ZXRfc2l6ZV9tb3N0X3JlY2VudChmcmFtZS0+c2l6ZSgpKTsKKworICAvLyBJbiB0aGUgREFNQUdF
IGNhc2UsIGVuc3VyZSB0aGUgZnJhbWUgaXMgdXAtdG8tZGF0ZSB3aXRoIHRoZSBwcmV2aW91cyBm
cmFtZQorICAvLyBpZiBhbnkuICBJZiB0aGVyZSBpc24ndCBhIHByZXZpb3VzIGZyYW1lLCB0aGF0
IG1lYW5zIGEgc2NyZWVuLXJlc29sdXRpb24KKyAgLy8gY2hhbmdlIG9jY3VycmVkLCBhbmQgfGlu
dmFsaWRfcmVjdHN8IHdpbGwgYmUgdXBkYXRlZCB0byBpbmNsdWRlIHRoZSB3aG9sZQorICAvLyBz
Y3JlZW4uCisgIGlmICh1c2VfZGFtYWdlXyAmJiBxdWV1ZV8ucHJldmlvdXNfZnJhbWUoKSkKKyAg
ICBTeW5jaHJvbml6ZUZyYW1lKCk7CisKKyAgRGVza3RvcFJlZ2lvbiogdXBkYXRlZF9yZWdpb24g
PSBmcmFtZS0+bXV0YWJsZV91cGRhdGVkX3JlZ2lvbigpOworCisgIHhfc2VydmVyX3BpeGVsX2J1
ZmZlcl8uU3luY2hyb25pemUoKTsKKyAgaWYgKHVzZV9kYW1hZ2VfICYmIHF1ZXVlXy5wcmV2aW91
c19mcmFtZSgpKSB7CisgICAgLy8gQXRvbWljYWxseSBmZXRjaCBhbmQgY2xlYXIgdGhlIGRhbWFn
ZSByZWdpb24uCisgICAgWERhbWFnZVN1YnRyYWN0KGRpc3BsYXkoKSwgZGFtYWdlX2hhbmRsZV8s
IE5vbmUsIGRhbWFnZV9yZWdpb25fKTsKKyAgICBpbnQgcmVjdHNfbnVtID0gMDsKKyAgICBYUmVj
dGFuZ2xlIGJvdW5kczsKKyAgICBYUmVjdGFuZ2xlKiByZWN0cyA9IFhGaXhlc0ZldGNoUmVnaW9u
QW5kQm91bmRzKGRpc3BsYXkoKSwgZGFtYWdlX3JlZ2lvbl8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVjdHNfbnVtLCAmYm91bmRzKTsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3RzX251bTsgKytpKSB7CisgICAgICB1cGRhdGVkX3Jl
Z2lvbi0+QWRkUmVjdChEZXNrdG9wUmVjdDo6TWFrZVhZV0goCisgICAgICAgICAgcmVjdHNbaV0u
eCwgcmVjdHNbaV0ueSwgcmVjdHNbaV0ud2lkdGgsIHJlY3RzW2ldLmhlaWdodCkpOworICAgIH0K
KyAgICBYRnJlZShyZWN0cyk7CisgICAgaGVscGVyXy5JbnZhbGlkYXRlUmVnaW9uKCp1cGRhdGVk
X3JlZ2lvbik7CisKKyAgICAvLyBDYXB0dXJlIHRoZSBkYW1hZ2VkIHBvcnRpb25zIG9mIHRoZSBk
ZXNrdG9wLgorICAgIGhlbHBlcl8uVGFrZUludmFsaWRSZWdpb24odXBkYXRlZF9yZWdpb24pOwor
CisgICAgLy8gQ2xpcCB0aGUgZGFtYWdlZCBwb3J0aW9ucyB0byB0aGUgY3VycmVudCBzY3JlZW4g
c2l6ZSwganVzdCBpbiBjYXNlIHNvbWUKKyAgICAvLyBzcHVyaW91cyBYRGFtYWdlIG5vdGlmaWNh
dGlvbnMgd2VyZSByZWNlaXZlZCBmb3IgYSBwcmV2aW91cyAobGFyZ2VyKQorICAgIC8vIHNjcmVl
biBzaXplLgorICAgIHVwZGF0ZWRfcmVnaW9uLT5JbnRlcnNlY3RXaXRoKAorICAgICAgICBEZXNr
dG9wUmVjdDo6TWFrZVNpemUoeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy53aW5kb3dfc2l6ZSgpKSk7
CisKKyAgICBmb3IgKERlc2t0b3BSZWdpb246Okl0ZXJhdG9yIGl0KCp1cGRhdGVkX3JlZ2lvbik7
ICFpdC5Jc0F0RW5kKCk7CisgICAgICAgICBpdC5BZHZhbmNlKCkpIHsKKyAgICAgIGlmICgheF9z
ZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5DYXB0dXJlUmVjdChpdC5yZWN0KCksIGZyYW1lLmdldCgpKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICB9IGVsc2UgeworICAgIC8vIERvaW5n
IGZ1bGwtc2NyZWVuIHBvbGxpbmcsIG9yIHRoaXMgaXMgdGhlIGZpcnN0IGNhcHR1cmUgYWZ0ZXIg
YQorICAgIC8vIHNjcmVlbi1yZXNvbHV0aW9uIGNoYW5nZS4gIEluIGVpdGhlciBjYXNlLCBuZWVk
IGEgZnVsbC1zY3JlZW4gY2FwdHVyZS4KKyAgICBEZXNrdG9wUmVjdCBzY3JlZW5fcmVjdCA9IERl
c2t0b3BSZWN0OjpNYWtlU2l6ZShmcmFtZS0+c2l6ZSgpKTsKKyAgICBpZiAoIXhfc2VydmVyX3Bp
eGVsX2J1ZmZlcl8uQ2FwdHVyZVJlY3Qoc2NyZWVuX3JlY3QsIGZyYW1lLmdldCgpKSkKKyAgICAg
IHJldHVybiBudWxscHRyOworICAgIHVwZGF0ZWRfcmVnaW9uLT5TZXRSZWN0KHNjcmVlbl9yZWN0
KTsKKyAgfQorCisgIHJldHVybiBzdGQ6Om1vdmUoZnJhbWUpOworfQorCit2b2lkIFNjcmVlbkNh
cHR1cmVyWDExOjpTY3JlZW5Db25maWd1cmF0aW9uQ2hhbmdlZCgpIHsKKyAgVFJBQ0VfRVZFTlQw
KCJ3ZWJydGMiLCAiU2NyZWVuQ2FwdHVyZXJYMTE6OlNjcmVlbkNvbmZpZ3VyYXRpb25DaGFuZ2Vk
Iik7CisgIC8vIE1ha2Ugc3VyZSB0aGUgZnJhbWUgYnVmZmVycyB3aWxsIGJlIHJlYWxsb2NhdGVk
LgorICBxdWV1ZV8uUmVzZXQoKTsKKworICBoZWxwZXJfLkNsZWFySW52YWxpZFJlZ2lvbigpOwor
ICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uSW5pdChkaXNwbGF5KCksIERlZmF1bHRSb290
V2luZG93KGRpc3BsYXkoKSkpKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0
byBpbml0aWFsaXplIHBpeGVsIGJ1ZmZlciBhZnRlciBzY3JlZW4gIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICJjb25maWd1cmF0aW9uIGNoYW5nZS4iOworICB9Cit9CisKK3ZvaWQgU2NyZWVu
Q2FwdHVyZXJYMTE6OlN5bmNocm9uaXplRnJhbWUoKSB7CisgIC8vIFN5bmNocm9uaXplIHRoZSBj
dXJyZW50IGJ1ZmZlciB3aXRoIHRoZSBwcmV2aW91cyBvbmUgc2luY2Ugd2UgZG8gbm90CisgIC8v
IGNhcHR1cmUgdGhlIGVudGlyZSBkZXNrdG9wLiBOb3RlIHRoYXQgZW5jb2RlciBtYXkgYmUgcmVh
ZGluZyBmcm9tIHRoZQorICAvLyBwcmV2aW91cyBidWZmZXIgYXQgdGhpcyB0aW1lIHNvIHRocmVh
ZCBhY2Nlc3MgY29tcGxhaW50cyBhcmUgZmFsc2UKKyAgLy8gcG9zaXRpdmVzLgorCisgIC8vIFRP
RE8oaGNsYW0pOiBXZSBjYW4gcmVkdWNlIHRoZSBhbW91bnQgb2YgY29weWluZyBoZXJlIGJ5IHN1
YnRyYWN0aW5nCisgIC8vIHxjYXB0dXJlcl9oZWxwZXJffHMgcmVnaW9uIGZyb20gfGxhc3RfaW52
YWxpZF9yZWdpb25ffC4KKyAgLy8gaHR0cDovL2NyYnVnLmNvbS85MjM1NAorICBSVENfRENIRUNL
KHF1ZXVlXy5wcmV2aW91c19mcmFtZSgpKTsKKworICBEZXNrdG9wRnJhbWUqIGN1cnJlbnQgPSBx
dWV1ZV8uY3VycmVudF9mcmFtZSgpOworICBEZXNrdG9wRnJhbWUqIGxhc3QgPSBxdWV1ZV8ucHJl
dmlvdXNfZnJhbWUoKTsKKyAgUlRDX0RDSEVDSyhjdXJyZW50ICE9IGxhc3QpOworICBmb3IgKERl
c2t0b3BSZWdpb246Okl0ZXJhdG9yIGl0KGxhc3RfaW52YWxpZF9yZWdpb25fKTsgIWl0LklzQXRF
bmQoKTsKKyAgICAgICBpdC5BZHZhbmNlKCkpIHsKKyAgICBjdXJyZW50LT5Db3B5UGl4ZWxzRnJv
bSgqbGFzdCwgaXQucmVjdCgpLnRvcF9sZWZ0KCksIGl0LnJlY3QoKSk7CisgIH0KK30KKwordm9p
ZCBTY3JlZW5DYXB0dXJlclgxMTo6RGVpbml0WGxpYigpIHsKKyAgaWYgKGdjXykgeworICAgIFhG
cmVlR0MoZGlzcGxheSgpLCBnY18pOworICAgIGdjXyA9IG51bGxwdHI7CisgIH0KKworICB4X3Nl
cnZlcl9waXhlbF9idWZmZXJfLlJlbGVhc2UoKTsKKworICBpZiAoZGlzcGxheSgpKSB7CisgICAg
aWYgKGRhbWFnZV9oYW5kbGVfKSB7CisgICAgICBYRGFtYWdlRGVzdHJveShkaXNwbGF5KCksIGRh
bWFnZV9oYW5kbGVfKTsKKyAgICAgIGRhbWFnZV9oYW5kbGVfID0gMDsKKyAgICB9CisKKyAgICBp
ZiAoZGFtYWdlX3JlZ2lvbl8pIHsKKyAgICAgIFhGaXhlc0Rlc3Ryb3lSZWdpb24oZGlzcGxheSgp
LCBkYW1hZ2VfcmVnaW9uXyk7CisgICAgICBkYW1hZ2VfcmVnaW9uXyA9IDA7CisgICAgfQorICB9
Cit9CisKKy8vIHN0YXRpYworc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0dXJlcj4gU2NyZWVu
Q2FwdHVyZXJYMTE6OkNyZWF0ZVJhd1NjcmVlbkNhcHR1cmVyKAorICAgIGNvbnN0IERlc2t0b3BD
YXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgeworICBpZiAoIW9wdGlvbnMueF9kaXNwbGF5KCkpCisg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgc3RkOjp1bmlxdWVfcHRyPFNjcmVlbkNhcHR1cmVyWDEx
PiBjYXB0dXJlcihuZXcgU2NyZWVuQ2FwdHVyZXJYMTEoKSk7CisgIGlmICghY2FwdHVyZXIuZ2V0
KCktPkluaXQob3B0aW9ucykpIHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisgIHJldHVy
biBzdGQ6Om1vdmUoY2FwdHVyZXIpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfeDExLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9s
aW51eC9zY3JlZW5fY2FwdHVyZXJfeDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYzYjYwYzNkODdlNWIxN2Rk
NTk0OTc3Nzg1MWZiOWNjNDliOThlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4
L3NjcmVlbl9jYXB0dXJlcl94MTEuaApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqICBDb3B5cmln
aHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9TQ1JFRU5fQ0FQVFVS
RVJfWDExX0hfCisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1NDUkVFTl9D
QVBUVVJFUl9YMTFfSF8KKworI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL2V4
dGVuc2lvbnMvWGRhbWFnZS5oPgorCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHNldD4K
KyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
ZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1
cmUvZGVza3RvcF9mcmFtZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL3NjcmVlbl9jYXB0dXJlX2ZyYW1lX3F1ZXVlLmgiCisjaW5jbHVkZSAibW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVyX2hlbHBlci5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL3NoYXJlZF9kZXNrdG9wX2ZyYW1lLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8gQSBj
bGFzcyB0byBwZXJmb3JtIHZpZGVvIGZyYW1lIGNhcHR1cmluZyBmb3IgTGludXggb24gWDExLgor
Ly8KKy8vIElmIFhEYW1hZ2UgaXMgdXNlZCwgdGhpcyBjbGFzcyBzZXRzIERlc2t0b3BGcmFtZTo6
dXBkYXRlZF9yZWdpb24oKSBhY2NvcmRpbmcKKy8vIHRvIHRoZSBhcmVhcyByZXBvcnRlZCBieSBY
RGFtYWdlLiBPdGhlcndpc2UgdGhpcyBjbGFzcyBkb2VzIG5vdCBkZXRlY3QKKy8vIERlc2t0b3BG
cmFtZTo6dXBkYXRlZF9yZWdpb24oKSwgdGhlIGZpZWxkIGlzIGFsd2F5cyBzZXQgdG8gdGhlIGVu
dGlyZSBmcmFtZQorLy8gcmVjdGFuZ2xlLiBTY3JlZW5DYXB0dXJlckRpZmZlcldyYXBwZXIgc2hv
dWxkIGJlIHVzZWQgaWYgdGhhdCBmdW5jdGlvbmFsaXR5CisvLyBpcyBuZWNlc3NhcnkuCitjbGFz
cyBTY3JlZW5DYXB0dXJlclgxMSA6IHB1YmxpYyBEZXNrdG9wQ2FwdHVyZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTaGFyZWRYRGlzcGxheTo6WEV2ZW50SGFuZGxlciB7Cisg
cHVibGljOgorICBTY3JlZW5DYXB0dXJlclgxMSgpOworICB+U2NyZWVuQ2FwdHVyZXJYMTEoKSBv
dmVycmlkZTsKKworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0dXJlcj4gQ3Jl
YXRlUmF3U2NyZWVuQ2FwdHVyZXIoCisgICAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMm
IG9wdGlvbnMpOworCisgIC8vIFRPRE8oYWp3b25nKTogRG8gd2UgcmVhbGx5IHdhbnQgdGhpcyB0
byBiZSBzeW5jaHJvbm91cz8KKyAgYm9vbCBJbml0KGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9u
cyYgb3B0aW9ucyk7CisKKyAgLy8gRGVza3RvcENhcHR1cmVyIGludGVyZmFjZS4KKyAgdm9pZCBT
dGFydChDYWxsYmFjayogZGVsZWdhdGUpIG92ZXJyaWRlOworICB2b2lkIENhcHR1cmVGcmFtZSgp
IG92ZXJyaWRlOworICBib29sIEdldFNvdXJjZUxpc3QoU291cmNlTGlzdCogc291cmNlcykgb3Zl
cnJpZGU7CisgIGJvb2wgU2VsZWN0U291cmNlKFNvdXJjZUlkIGlkKSBvdmVycmlkZTsKKworIHBy
aXZhdGU6CisgIERpc3BsYXkqIGRpc3BsYXkoKSB7IHJldHVybiBvcHRpb25zXy54X2Rpc3BsYXko
KS0+ZGlzcGxheSgpOyB9CisKKyAgLy8gU2hhcmVkWERpc3BsYXk6OlhFdmVudEhhbmRsZXIgaW50
ZXJmYWNlLgorICBib29sIEhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSBvdmVycmlk
ZTsKKworICB2b2lkIEluaXRYRGFtYWdlKCk7CisKKyAgLy8gQ2FwdHVyZSBzY3JlZW4gcGl4ZWxz
IHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBpbiB0aGUgcXVldWUuIEluIHRoZSBEQU1BR0UKKyAgLy8g
Y2FzZSwgdGhlIFNjcmVlbkNhcHR1cmVySGVscGVyIGFscmVhZHkgaG9sZHMgdGhlIGxpc3Qgb2Yg
aW52YWxpZCByZWN0YW5nbGVzCisgIC8vIGZyb20gSGFuZGxlWEV2ZW50KCkuIEluIHRoZSBub24t
REFNQUdFIGNhc2UsIHRoaXMgY2FwdHVyZXMgdGhlCisgIC8vIHdob2xlIHNjcmVlbiwgdGhlbiBj
YWxjdWxhdGVzIHNvbWUgaW52YWxpZCByZWN0YW5nbGVzIHRoYXQgaW5jbHVkZSBhbnkKKyAgLy8g
ZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGFuZCB0aGUgcHJldmlvdXMgY2FwdHVyZS4KKyAgc3Rk
Ojp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gQ2FwdHVyZVNjcmVlbigpOworCisgIC8vIENhbGxl
ZCB3aGVuIHRoZSBzY3JlZW4gY29uZmlndXJhdGlvbiBpcyBjaGFuZ2VkLgorICB2b2lkIFNjcmVl
bkNvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7CisKKyAgLy8gU3luY2hyb25pemUgdGhlIGN1cnJlbnQg
YnVmZmVyIHdpdGggfGxhc3RfYnVmZmVyX3wsIGJ5IGNvcHlpbmcgcGl4ZWxzIGZyb20KKyAgLy8g
dGhlIGFyZWEgb2YgfGxhc3RfaW52YWxpZF9yZWN0c3wuCisgIC8vIE5vdGUgdGhpcyBvbmx5IHdv
cmtzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQga051bUJ1ZmZlcnMgPT0gMiwgYXMKKyAgLy8gfGxh
c3RfaW52YWxpZF9yZWN0c3wgaG9sZHMgdGhlIGRpZmZlcmVuY2VzIGZyb20gdGhlIHByZXZpb3Vz
IGJ1ZmZlciBhbmQKKyAgLy8gdGhlIG9uZSBwcmlvciB0byB0aGF0ICh3aGljaCB3aWxsIHRoZW4g
YmUgdGhlIGN1cnJlbnQgYnVmZmVyKS4KKyAgdm9pZCBTeW5jaHJvbml6ZUZyYW1lKCk7CisKKyAg
dm9pZCBEZWluaXRYbGliKCk7CisKKyAgRGVza3RvcENhcHR1cmVPcHRpb25zIG9wdGlvbnNfOwor
CisgIENhbGxiYWNrKiBjYWxsYmFja18gPSBudWxscHRyOworCisgIC8vIFgxMSBncmFwaGljcyBj
b250ZXh0LgorICBHQyBnY18gPSBudWxscHRyOworICBXaW5kb3cgcm9vdF93aW5kb3dfID0gQmFk
VmFsdWU7CisKKyAgLy8gWEZpeGVzLgorICBib29sIGhhc194Zml4ZXNfID0gZmFsc2U7CisgIGlu
dCB4Zml4ZXNfZXZlbnRfYmFzZV8gPSAtMTsKKyAgaW50IHhmaXhlc19lcnJvcl9iYXNlXyA9IC0x
OworCisgIC8vIFhEYW1hZ2UgaW5mb3JtYXRpb24uCisgIGJvb2wgdXNlX2RhbWFnZV8gPSBmYWxz
ZTsKKyAgRGFtYWdlIGRhbWFnZV9oYW5kbGVfID0gMDsKKyAgaW50IGRhbWFnZV9ldmVudF9iYXNl
XyA9IC0xOworICBpbnQgZGFtYWdlX2Vycm9yX2Jhc2VfID0gLTE7CisgIFhzZXJ2ZXJSZWdpb24g
ZGFtYWdlX3JlZ2lvbl8gPSAwOworCisgIC8vIEFjY2VzcyB0byB0aGUgWCBTZXJ2ZXIncyBwaXhl
bCBidWZmZXIuCisgIFhTZXJ2ZXJQaXhlbEJ1ZmZlciB4X3NlcnZlcl9waXhlbF9idWZmZXJfOwor
CisgIC8vIEEgdGhyZWFkLXNhZmUgbGlzdCBvZiBpbnZhbGlkIHJlY3RhbmdsZXMsIGFuZCB0aGUg
c2l6ZSBvZiB0aGUgbW9zdAorICAvLyByZWNlbnRseSBjYXB0dXJlZCBzY3JlZW4uCisgIFNjcmVl
bkNhcHR1cmVySGVscGVyIGhlbHBlcl87CisKKyAgLy8gUXVldWUgb2YgdGhlIGZyYW1lcyBidWZm
ZXJzLgorICBTY3JlZW5DYXB0dXJlRnJhbWVRdWV1ZTxTaGFyZWREZXNrdG9wRnJhbWU+IHF1ZXVl
XzsKKworICAvLyBJbnZhbGlkIHJlZ2lvbiBmcm9tIHRoZSBwcmV2aW91cyBjYXB0dXJlLiBUaGlz
IGlzIHVzZWQgdG8gc3luY2hyb25pemUgdGhlCisgIC8vIGN1cnJlbnQgd2l0aCB0aGUgbGFzdCBi
dWZmZXIgdXNlZC4KKyAgRGVza3RvcFJlZ2lvbiBsYXN0X2ludmFsaWRfcmVnaW9uXzsKKworICBS
VENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNjcmVlbkNhcHR1cmVyWDExKTsKK307CisKK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVS
RV9MSU5VWF9TQ1JFRU5fQ0FQVFVSRVJfWDExX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51
eC9zaGFyZWRfeF9kaXNwbGF5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxheS5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNDc1ZGI2ZTc4NzU5YjUzYWJiZWU5NzdmMDliNjBlNDA1NmFjMDU1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxheS5jYwpAQCAt
MCwwICsxLDg5IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJlZF94X2Rpc3BsYXkuaCIKKworI2luY2x1ZGUgPFgx
MS9YbGliLmg+CisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKKyNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisKK25hbWVzcGFjZSB3ZWJy
dGMgeworCitTaGFyZWRYRGlzcGxheTo6U2hhcmVkWERpc3BsYXkoRGlzcGxheSogZGlzcGxheSkg
OiBkaXNwbGF5XyhkaXNwbGF5KSB7CisgIFJUQ19EQ0hFQ0soZGlzcGxheV8pOworfQorCitTaGFy
ZWRYRGlzcGxheTo6flNoYXJlZFhEaXNwbGF5KCkgeworICBSVENfRENIRUNLKGV2ZW50X2hhbmRs
ZXJzXy5lbXB0eSgpKTsKKyAgWENsb3NlRGlzcGxheShkaXNwbGF5Xyk7Cit9CisKKy8vIHN0YXRp
YworcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiBTaGFyZWRYRGlzcGxheTo6Q3Jl
YXRlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXNwbGF5X25hbWUpIHsKKyAgRGlzcGxheSog
ZGlzcGxheSA9CisgICAgICBYT3BlbkRpc3BsYXkoZGlzcGxheV9uYW1lLmVtcHR5KCkgPyBOVUxM
IDogZGlzcGxheV9uYW1lLmNfc3RyKCkpOworICBpZiAoIWRpc3BsYXkpIHsKKyAgICBSVENfTE9H
KExTX0VSUk9SKSA8PCAiVW5hYmxlIHRvIG9wZW4gZGlzcGxheSI7CisgICAgcmV0dXJuIE5VTEw7
CisgIH0KKyAgcmV0dXJuIG5ldyBTaGFyZWRYRGlzcGxheShkaXNwbGF5KTsKK30KKworLy8gc3Rh
dGljCitydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVkWERpc3BsYXk+IFNoYXJlZFhEaXNwbGF5OjpD
cmVhdGVEZWZhdWx0KCkgeworICByZXR1cm4gQ3JlYXRlKHN0ZDo6c3RyaW5nKCkpOworfQorCit2
b2lkIFNoYXJlZFhEaXNwbGF5OjpBZGRFdmVudEhhbmRsZXIoaW50IHR5cGUsIFhFdmVudEhhbmRs
ZXIqIGhhbmRsZXIpIHsKKyAgZXZlbnRfaGFuZGxlcnNfW3R5cGVdLnB1c2hfYmFjayhoYW5kbGVy
KTsKK30KKwordm9pZCBTaGFyZWRYRGlzcGxheTo6UmVtb3ZlRXZlbnRIYW5kbGVyKGludCB0eXBl
LCBYRXZlbnRIYW5kbGVyKiBoYW5kbGVyKSB7CisgIEV2ZW50SGFuZGxlcnNNYXA6Oml0ZXJhdG9y
IGhhbmRsZXJzID0gZXZlbnRfaGFuZGxlcnNfLmZpbmQodHlwZSk7CisgIGlmIChoYW5kbGVycyA9
PSBldmVudF9oYW5kbGVyc18uZW5kKCkpCisgICAgcmV0dXJuOworCisgIHN0ZDo6dmVjdG9yPFhF
dmVudEhhbmRsZXIqPjo6aXRlcmF0b3IgbmV3X2VuZCA9CisgICAgICBzdGQ6OnJlbW92ZShoYW5k
bGVycy0+c2Vjb25kLmJlZ2luKCksIGhhbmRsZXJzLT5zZWNvbmQuZW5kKCksIGhhbmRsZXIpOwor
ICBoYW5kbGVycy0+c2Vjb25kLmVyYXNlKG5ld19lbmQsIGhhbmRsZXJzLT5zZWNvbmQuZW5kKCkp
OworCisgIC8vIENoZWNrIGlmIG5vIGhhbmRsZXJzIGxlZnQgZm9yIHRoaXMgZXZlbnQuCisgIGlm
IChoYW5kbGVycy0+c2Vjb25kLmVtcHR5KCkpCisgICAgZXZlbnRfaGFuZGxlcnNfLmVyYXNlKGhh
bmRsZXJzKTsKK30KKwordm9pZCBTaGFyZWRYRGlzcGxheTo6UHJvY2Vzc1BlbmRpbmdYRXZlbnRz
KCkgeworICAvLyBIb2xkIHJlZmVyZW5jZSB0byB8dGhpc3wgdG8gcHJldmVudCBpdCBmcm9tIGJl
aW5nIGRlc3Ryb3llZCB3aGlsZQorICAvLyBwcm9jZXNzaW5nIGV2ZW50cy4KKyAgcnRjOjpzY29w
ZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiBzZWxmKHRoaXMpOworCisgIC8vIEZpbmQgdGhlIG51
bWJlciBvZiBldmVudHMgdGhhdCBhcmUgb3V0c3RhbmRpbmcgIm5vdy4iICBXZSBkb24ndCBqdXN0
IGxvb3AKKyAgLy8gb24gWFBlbmRpbmcgYmVjYXVzZSB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGlz
IHRlcm1pbmF0ZXMuCisgIGludCBldmVudHNfdG9fcHJvY2VzcyA9IFhQZW5kaW5nKGRpc3BsYXko
KSk7CisgIFhFdmVudCBlOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgZXZlbnRzX3RvX3Byb2Nl
c3M7IGkrKykgeworICAgIFhOZXh0RXZlbnQoZGlzcGxheSgpLCAmZSk7CisgICAgRXZlbnRIYW5k
bGVyc01hcDo6aXRlcmF0b3IgaGFuZGxlcnMgPSBldmVudF9oYW5kbGVyc18uZmluZChlLnR5cGUp
OworICAgIGlmIChoYW5kbGVycyA9PSBldmVudF9oYW5kbGVyc18uZW5kKCkpCisgICAgICBjb250
aW51ZTsKKyAgICBmb3IgKHN0ZDo6dmVjdG9yPFhFdmVudEhhbmRsZXIqPjo6aXRlcmF0b3IgaXQg
PSBoYW5kbGVycy0+c2Vjb25kLmJlZ2luKCk7CisgICAgICAgICBpdCAhPSBoYW5kbGVycy0+c2Vj
b25kLmVuZCgpOyArK2l0KSB7CisgICAgICBpZiAoKCppdCktPkhhbmRsZVhFdmVudChlKSkKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJlZF94X2Rpc3BsYXkuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L3NoYXJlZF94X2Rpc3BsYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTRmNDFmYWI4YTNiNzMyNDE3Nzc0
MDViMWFjNDc2MTg4ZWExNzIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hh
cmVkX3hfZGlzcGxheS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAy
MDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1NIQVJFRF9YX0RJU1BMQVlf
SF8KKyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfU0hBUkVEX1hfRElTUExB
WV9IXworCisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgPHN0
cmluZz4KKworI2luY2x1ZGUgImFwaS9yZWZjb3VudGVkYmFzZS5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0
ci5oIgorCisvLyBJbmNsdWRpbmcgWGxpYi5oIHdpbGwgaW52b2x2ZSBldmlsIGRlZmluZXMgKEJv
b2wsIFN0YXR1cywgVHJ1ZSwgRmFsc2UpLCB3aGljaAorLy8gZWFzaWx5IGNvbmZsaWN0IHdpdGgg
b3RoZXIgaGVhZGVycy4KK3R5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5OwordHlwZWRl
ZiB1bmlvbiBfWEV2ZW50IFhFdmVudDsKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEEgcmVm
LWNvdW50ZWQgb2JqZWN0IHRvIHN0b3JlIFhEaXNwbGF5IGNvbm5lY3Rpb24uCitjbGFzcyBTaGFy
ZWRYRGlzcGxheSA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRCYXNlIHsKKyBwdWJsaWM6CisgIGNs
YXNzIFhFdmVudEhhbmRsZXIgeworICAgcHVibGljOgorICAgIHZpcnR1YWwgflhFdmVudEhhbmRs
ZXIoKSB7fQorCisgICAgLy8gUHJvY2Vzc2VzIFhFdmVudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBl
dmVudCBoYXMgYmVlbiBoYW5kbGVkLgorICAgIHZpcnR1YWwgYm9vbCBIYW5kbGVYRXZlbnQoY29u
c3QgWEV2ZW50JiBldmVudCkgPSAwOworICB9OworCisgIC8vIFRha2VzIG93bmVyc2hpcCBvZiB8
ZGlzcGxheXwuCisgIGV4cGxpY2l0IFNoYXJlZFhEaXNwbGF5KERpc3BsYXkqIGRpc3BsYXkpOwor
CisgIC8vIENyZWF0ZXMgYSBuZXcgWDExIERpc3BsYXkgZm9yIHRoZSB8ZGlzcGxheV9uYW1lfC4g
TlVMTCBpcyByZXR1cm5lZCBpZiBYMTEKKyAgLy8gY29ubmVjdGlvbiBmYWlsZWQuIEVxdWl2YWxl
bnQgdG8gQ3JlYXRlRGVmYXVsdCgpIHdoZW4gfGRpc3BsYXlfbmFtZXwgaXMKKyAgLy8gZW1wdHku
CisgIHN0YXRpYyBydGM6OnNjb3BlZF9yZWZwdHI8U2hhcmVkWERpc3BsYXk+IENyZWF0ZSgKKyAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXNwbGF5X25hbWUpOworCisgIC8vIENyZWF0ZXMgWDEx
IERpc3BsYXkgY29ubmVjdGlvbiBmb3IgdGhlIGRlZmF1bHQgZGlzcGxheSAoZS5nLiBzcGVjaWZp
ZWQgaW4KKyAgLy8gRElTUExBWSkuIE5VTEwgaXMgcmV0dXJuZWQgaWYgWDExIGNvbm5lY3Rpb24g
ZmFpbGVkLgorICBzdGF0aWMgcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiBDcmVh
dGVEZWZhdWx0KCk7CisKKyAgRGlzcGxheSogZGlzcGxheSgpIHsgcmV0dXJuIGRpc3BsYXlfOyB9
CisKKyAgLy8gQWRkcyBhIG5ldyBldmVudCB8aGFuZGxlcnwgZm9yIFhFdmVudCdzIG9mIHx0eXBl
fC4KKyAgdm9pZCBBZGRFdmVudEhhbmRsZXIoaW50IHR5cGUsIFhFdmVudEhhbmRsZXIqIGhhbmRs
ZXIpOworCisgIC8vIFJlbW92ZXMgZXZlbnQgfGhhbmRsZXJ8IGFkZGVkIHVzaW5nIHxBZGRFdmVu
dEhhbmRsZXJ8LiBEb2Vzbid0IGRvIGFueXRoaW5nCisgIC8vIGlmIHxoYW5kbGVyfCBpcyBub3Qg
cmVnaXN0ZXJlZC4KKyAgdm9pZCBSZW1vdmVFdmVudEhhbmRsZXIoaW50IHR5cGUsIFhFdmVudEhh
bmRsZXIqIGhhbmRsZXIpOworCisgIC8vIFByb2Nlc3NlcyBwZW5kaW5nIFhFdmVudHMsIGNhbGxp
bmcgY29ycmVzcG9uZGluZyBldmVudCBoYW5kbGVycy4KKyAgdm9pZCBQcm9jZXNzUGVuZGluZ1hF
dmVudHMoKTsKKworIHByb3RlY3RlZDoKKyAgflNoYXJlZFhEaXNwbGF5KCkgb3ZlcnJpZGU7CisK
KyBwcml2YXRlOgorICB0eXBlZGVmIHN0ZDo6bWFwPGludCwgc3RkOjp2ZWN0b3I8WEV2ZW50SGFu
ZGxlcio+ID4gRXZlbnRIYW5kbGVyc01hcDsKKworICBEaXNwbGF5KiBkaXNwbGF5XzsKKworICBF
dmVudEhhbmRsZXJzTWFwIGV2ZW50X2hhbmRsZXJzXzsKKworICBSVENfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOKFNoYXJlZFhEaXNwbGF5KTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMK
KworI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9TSEFSRURfWF9ESVNQ
TEFZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdp
cmUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWMxOTVhYWY0YTAxNDIzNDA3YzcyN2NiNjAyYzU0ZWQ3NmU5ZDllYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl9waXBld2lyZS5jYwpAQCAt
MCwwICsxLDMwIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAibW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3BpcGV3aXJlLmgiCisKKyNpbmNsdWRl
IDxtZW1vcnk+CisKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKworbmFtZXNwYWNl
IHdlYnJ0YyB7CisKK1dpbmRvd0NhcHR1cmVyUGlwZVdpcmU6OldpbmRvd0NhcHR1cmVyUGlwZVdp
cmUoKQorICAgIDogQmFzZUNhcHR1cmVyUGlwZVdpcmUoQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNh
cHR1cmVTb3VyY2VUeXBlOjpXaW5kb3cpIHt9CitXaW5kb3dDYXB0dXJlclBpcGVXaXJlOjp+V2lu
ZG93Q2FwdHVyZXJQaXBlV2lyZSgpIHt9CisKKy8vIHN0YXRpYworc3RkOjp1bmlxdWVfcHRyPERl
c2t0b3BDYXB0dXJlcj4KK1dpbmRvd0NhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJhd1dpbmRvd0Nh
cHR1cmVyKAorICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgeworICBy
ZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8V2luZG93Q2FwdHVyZXJQaXBlV2lyZT4oKTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93
X2NhcHR1cmVyX3BpcGV3aXJlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlw
ZXdpcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZjE4NGVmMjk5OTJkZmNiNzg4NGNlZmUzMmViYTU5MWQ3MTZm
NDU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3Bp
cGV3aXJlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBN
T0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfQ0FQVFVSRVJfUElQRVdJUkVfSF8K
KyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfV0lORE9XX0NBUFRVUkVSX1BJ
UEVXSVJFX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmgiCisKK25hbWVzcGFjZSB3
ZWJydGMgeworCitjbGFzcyBXaW5kb3dDYXB0dXJlclBpcGVXaXJlIDogcHVibGljIEJhc2VDYXB0
dXJlclBpcGVXaXJlIHsKKyBwdWJsaWM6CisgIFdpbmRvd0NhcHR1cmVyUGlwZVdpcmUoKTsKKyAg
fldpbmRvd0NhcHR1cmVyUGlwZVdpcmUoKSBvdmVycmlkZTsKKworICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPERlc2t0b3BDYXB0dXJlcj4gQ3JlYXRlUmF3V2luZG93Q2FwdHVyZXIoCisgICAgICBj
b25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpOworCisgIFJUQ19ESVNBTExPV19D
T1BZX0FORF9BU1NJR04oV2luZG93Q2FwdHVyZXJQaXBlV2lyZSk7Cit9OworCit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhf
V0lORE9XX0NBUFRVUkVSX1BJUEVXSVJFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93
aW5kb3dfY2FwdHVyZXJfeDExLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3gx
MS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZWY3YzVjYjM4ODJlZWJmNGEzMjViMDE2NjRmOTM1ZDU2YjM0MmIx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3gxMS5j
YwpAQCAtMCwwICsxLDI0NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJU
QyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdo
dHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250
cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JT
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJt
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfeDExLmgiCisKKyNp
bmNsdWRlIDxYMTEvWHV0aWwuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRl
Lmg+CisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWHJlbmRlci5oPgorCisjaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAi
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oIgorI2luY2x1ZGUgIm1vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NoYXJlZF94X2Rpc3BsYXkuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfZmluZGVyX3gxMS5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvdHJhY2VfZXZlbnQuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK1dpbmRvd0NhcHR1cmVy
WDExOjpXaW5kb3dDYXB0dXJlclgxMShjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlv
bnMpCisgICAgOiB4X2Rpc3BsYXlfKG9wdGlvbnMueF9kaXNwbGF5KCkpLAorICAgICAgYXRvbV9j
YWNoZV8oZGlzcGxheSgpKSwKKyAgICAgIHdpbmRvd19maW5kZXJfKCZhdG9tX2NhY2hlXykgewor
ICBpbnQgZXZlbnRfYmFzZSwgZXJyb3JfYmFzZSwgbWFqb3JfdmVyc2lvbiwgbWlub3JfdmVyc2lv
bjsKKyAgaWYgKFhDb21wb3NpdGVRdWVyeUV4dGVuc2lvbihkaXNwbGF5KCksICZldmVudF9iYXNl
LCAmZXJyb3JfYmFzZSkgJiYKKyAgICAgIFhDb21wb3NpdGVRdWVyeVZlcnNpb24oZGlzcGxheSgp
LCAmbWFqb3JfdmVyc2lvbiwgJm1pbm9yX3ZlcnNpb24pICYmCisgICAgICAvLyBYQ29tcG9zaXRl
TmFtZVdpbmRvd1BpeG1hcCgpIHJlcXVpcmVzIHZlcnNpb24gMC4yCisgICAgICAobWFqb3JfdmVy
c2lvbiA+IDAgfHwgbWlub3JfdmVyc2lvbiA+PSAyKSkgeworICAgIGhhc19jb21wb3NpdGVfZXh0
ZW5zaW9uXyA9IHRydWU7CisgIH0gZWxzZSB7CisgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiWGNv
bXBvc2l0ZSBleHRlbnNpb24gbm90IGF2YWlsYWJsZSBvciB0b28gb2xkLiI7CisgIH0KKworICB4
X2Rpc3BsYXlfLT5BZGRFdmVudEhhbmRsZXIoQ29uZmlndXJlTm90aWZ5LCB0aGlzKTsKK30KKwor
V2luZG93Q2FwdHVyZXJYMTE6On5XaW5kb3dDYXB0dXJlclgxMSgpIHsKKyAgeF9kaXNwbGF5Xy0+
UmVtb3ZlRXZlbnRIYW5kbGVyKENvbmZpZ3VyZU5vdGlmeSwgdGhpcyk7Cit9CisKK2Jvb2wgV2lu
ZG93Q2FwdHVyZXJYMTE6OkdldFNvdXJjZUxpc3QoU291cmNlTGlzdCogc291cmNlcykgeworICBy
ZXR1cm4gR2V0V2luZG93TGlzdCgmYXRvbV9jYWNoZV8sIFt0aGlzLCBzb3VyY2VzXSg6OldpbmRv
dyB3aW5kb3cpIHsKKyAgICBTb3VyY2UgdzsKKyAgICB3LmlkID0gd2luZG93OworICAgIGlmICh0
aGlzLT5HZXRXaW5kb3dUaXRsZSh3aW5kb3csICZ3LnRpdGxlKSkgeworICAgICAgc291cmNlcy0+
cHVzaF9iYWNrKHcpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSk7Cit9CisKK2Jvb2wg
V2luZG93Q2FwdHVyZXJYMTE6OlNlbGVjdFNvdXJjZShTb3VyY2VJZCBpZCkgeworICBpZiAoIXhf
c2VydmVyX3BpeGVsX2J1ZmZlcl8uSW5pdChkaXNwbGF5KCksIGlkKSkKKyAgICByZXR1cm4gZmFs
c2U7CisKKyAgLy8gVGVsbCB0aGUgWCBzZXJ2ZXIgdG8gc2VuZCB1cyB3aW5kb3cgcmVzaXppbmcg
ZXZlbnRzLgorICBYU2VsZWN0SW5wdXQoZGlzcGxheSgpLCBpZCwgU3RydWN0dXJlTm90aWZ5TWFz
ayk7CisKKyAgc2VsZWN0ZWRfd2luZG93XyA9IGlkOworCisgIC8vIEluIGFkZGl0aW9uIHRvIG5l
ZWRpbmcgWDExIHNlcnZlci1zaWRlIHN1cHBvcnQgZm9yIFhjb21wb3NpdGUsIGl0IGFjdHVhbGx5
CisgIC8vIG5lZWRzIHRvIGJlIHR1cm5lZCBvbiBmb3IgdGhlIHdpbmRvdy4gSWYgdGhlIHVzZXIg
aGFzIG1vZGVybgorICAvLyBoYXJkd2FyZS9kcml2ZXJzIGJ1dCBpc24ndCB1c2luZyBhIGNvbXBv
c2l0aW5nIHdpbmRvdyBtYW5hZ2VyLCB0aGF0IHdvbid0CisgIC8vIGJlIHRoZSBjYXNlLiBIZXJl
IHdlIGF1dG9tYXRpY2FsbHkgdHVybiBpdCBvbi4KKworICAvLyBSZWRpcmVjdCBkcmF3aW5nIHRv
IGFuIG9mZnNjcmVlbiBidWZmZXIgKGllLCB0dXJuIG9uIGNvbXBvc2l0aW5nKS4gWDExCisgIC8v
IHJlbWVtYmVycyB3aG8gaGFzIHJlcXVlc3RlZCB0aGlzIGFuZCB3aWxsIHR1cm4gaXQgb2ZmIGZv
ciB1cyB3aGVuIHdlIGV4aXQuCisgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhkaXNwbGF5KCks
IGlkLCBDb21wb3NpdGVSZWRpcmVjdEF1dG9tYXRpYyk7CisKKyAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgV2luZG93Q2FwdHVyZXJYMTE6OkZvY3VzT25TZWxlY3RlZFNvdXJjZSgpIHsKKyAgaWYg
KCFzZWxlY3RlZF93aW5kb3dfKQorICAgIHJldHVybiBmYWxzZTsKKworICB1bnNpZ25lZCBpbnQg
bnVtX2NoaWxkcmVuOworICA6OldpbmRvdyogY2hpbGRyZW47CisgIDo6V2luZG93IHBhcmVudDsK
KyAgOjpXaW5kb3cgcm9vdDsKKyAgLy8gRmluZCB0aGUgcm9vdCB3aW5kb3cgdG8gcGFzcyBldmVu
dCB0by4KKyAgaW50IHN0YXR1cyA9IFhRdWVyeVRyZWUoZGlzcGxheSgpLCBzZWxlY3RlZF93aW5k
b3dfLCAmcm9vdCwgJnBhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoaWxkcmVu
LCAmbnVtX2NoaWxkcmVuKTsKKyAgaWYgKHN0YXR1cyA9PSAwKSB7CisgICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIkZhaWxlZCB0byBxdWVyeSBmb3IgdGhlIHJvb3Qgd2luZG93LiI7CisgICAgcmV0
dXJuIGZhbHNlOworICB9CisKKyAgaWYgKGNoaWxkcmVuKQorICAgIFhGcmVlKGNoaWxkcmVuKTsK
KworICBYUmFpc2VXaW5kb3coZGlzcGxheSgpLCBzZWxlY3RlZF93aW5kb3dfKTsKKworICAvLyBT
b21lIHdpbmRvdyBtYW5hZ2VycyAoZS5nLiwgbWV0YWNpdHkgaW4gR05PTUUpIGNvbnNpZGVyIGl0
IGlsbGVnYWwgdG8KKyAgLy8gcmFpc2UgYSB3aW5kb3cgd2l0aG91dCBhbHNvIGdpdmluZyBpdCBp
bnB1dCBmb2N1cyB3aXRoCisgIC8vIF9ORVRfQUNUSVZFX1dJTkRPVywgc28gWFJhaXNlV2luZG93
KCkgb24gaXRzIG93biBpc24ndCBlbm91Z2guCisgIEF0b20gYXRvbSA9IFhJbnRlcm5BdG9tKGRp
c3BsYXkoKSwgIl9ORVRfQUNUSVZFX1dJTkRPVyIsIFRydWUpOworICBpZiAoYXRvbSAhPSBOb25l
KSB7CisgICAgWEV2ZW50IHhldjsKKyAgICB4ZXYueGNsaWVudC50eXBlID0gQ2xpZW50TWVzc2Fn
ZTsKKyAgICB4ZXYueGNsaWVudC5zZXJpYWwgPSAwOworICAgIHhldi54Y2xpZW50LnNlbmRfZXZl
bnQgPSBUcnVlOworICAgIHhldi54Y2xpZW50LndpbmRvdyA9IHNlbGVjdGVkX3dpbmRvd187Cisg
ICAgeGV2LnhjbGllbnQubWVzc2FnZV90eXBlID0gYXRvbTsKKworICAgIC8vIFRoZSBmb3JtYXQg
bWVtYmVyIGlzIHNldCB0byA4LCAxNiwgb3IgMzIgYW5kIHNwZWNpZmllcyB3aGV0aGVyIHRoZQor
ICAgIC8vIGRhdGEgc2hvdWxkIGJlIHZpZXdlZCBhcyBhIGxpc3Qgb2YgYnl0ZXMsIHNob3J0cywg
b3IgbG9uZ3MuCisgICAgeGV2LnhjbGllbnQuZm9ybWF0ID0gMzI7CisKKyAgICBtZW1zZXQoeGV2
LnhjbGllbnQuZGF0YS5sLCAwLCBzaXplb2YoeGV2LnhjbGllbnQuZGF0YS5sKSk7CisKKyAgICBY
U2VuZEV2ZW50KGRpc3BsYXkoKSwgcm9vdCwgRmFsc2UsCisgICAgICAgICAgICAgICBTdWJzdHJ1
Y3R1cmVSZWRpcmVjdE1hc2sgfCBTdWJzdHJ1Y3R1cmVOb3RpZnlNYXNrLCAmeGV2KTsKKyAgfQor
ICBYRmx1c2goZGlzcGxheSgpKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2luZG93Q2Fw
dHVyZXJYMTE6OlN0YXJ0KENhbGxiYWNrKiBjYWxsYmFjaykgeworICBSVENfRENIRUNLKCFjYWxs
YmFja18pOworICBSVENfRENIRUNLKGNhbGxiYWNrKTsKKworICBjYWxsYmFja18gPSBjYWxsYmFj
azsKK30KKwordm9pZCBXaW5kb3dDYXB0dXJlclgxMTo6Q2FwdHVyZUZyYW1lKCkgeworICBUUkFD
RV9FVkVOVDAoIndlYnJ0YyIsICJXaW5kb3dDYXB0dXJlclgxMTo6Q2FwdHVyZUZyYW1lIik7CisK
KyAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLklzV2luZG93VmFsaWQoKSkgeworICAgIFJU
Q19MT0coTFNfRVJST1IpIDw8ICJUaGUgd2luZG93IGlzIG5vIGxvbmdlciB2YWxpZC4iOworICAg
IGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfUEVSTUFORU5ULCBudWxs
cHRyKTsKKyAgICByZXR1cm47CisgIH0KKworICB4X2Rpc3BsYXlfLT5Qcm9jZXNzUGVuZGluZ1hF
dmVudHMoKTsKKworICBpZiAoIWhhc19jb21wb3NpdGVfZXh0ZW5zaW9uXykgeworICAgIC8vIFdp
dGhvdXQgdGhlIFhjb21wb3NpdGUgZXh0ZW5zaW9uIHdlIGNhcHR1cmUgd2hlbiB0aGUgd2hvbGUg
d2luZG93IGlzCisgICAgLy8gdmlzaWJsZSBvbiBzY3JlZW4gYW5kIG5vdCBjb3ZlcmVkIGJ5IGFu
eSBvdGhlciB3aW5kb3cuIFRoaXMgaXMgbm90CisgICAgLy8gc29tZXRoaW5nIHdlIHdhbnQgc28g
aW5zdGVhZCwganVzdCBiYWlsIG91dC4KKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiTm8gWGNv
bXBvc2l0ZSBleHRlbnNpb24gZGV0ZWN0ZWQuIjsKKyAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJl
c3VsdChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVOVCwgbnVsbHB0cik7CisgICAgcmV0dXJuOworICB9
CisKKyAgaWYgKEdldFdpbmRvd1N0YXRlKCZhdG9tX2NhY2hlXywgc2VsZWN0ZWRfd2luZG93Xykg
PT0gSWNvbmljU3RhdGUpIHsKKyAgICAvLyBXaW5kb3cgaXMgaW4gbWluaW1pemVkLiBSZXR1cm4g
YSAxeDEgZnJhbWUgYXMgc2FtZSBhcyBPU1gvV2luIGRvZXMuCisgICAgc3RkOjp1bmlxdWVfcHRy
PERlc2t0b3BGcmFtZT4gZnJhbWUoCisgICAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShEZXNr
dG9wU2l6ZSgxLCAxKSkpOworICAgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6
U1VDQ0VTUywgc3RkOjptb3ZlKGZyYW1lKSk7CisgICAgcmV0dXJuOworICB9CisKKyAgc3RkOjp1
bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gZnJhbWUoCisgICAgICBuZXcgQmFzaWNEZXNrdG9wRnJh
bWUoeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy53aW5kb3dfc2l6ZSgpKSk7CisKKyAgeF9zZXJ2ZXJf
cGl4ZWxfYnVmZmVyXy5TeW5jaHJvbml6ZSgpOworICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZl
cl8uQ2FwdHVyZVJlY3QoRGVza3RvcFJlY3Q6Ok1ha2VTaXplKGZyYW1lLT5zaXplKCkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUuZ2V0KCkpKSB7Cisg
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVGVtcG9yYXJpbHkgZmFpbGVkIHRvIGNhcHR1cmUg
d2lub2R3LiI7CisgICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9U
RU1QT1JBUlksIG51bGxwdHIpOworICAgIHJldHVybjsKKyAgfQorCisgIGZyYW1lLT5tdXRhYmxl
X3VwZGF0ZWRfcmVnaW9uKCktPlNldFJlY3QoCisgICAgICBEZXNrdG9wUmVjdDo6TWFrZVNpemUo
ZnJhbWUtPnNpemUoKSkpOworICBmcmFtZS0+c2V0X3RvcF9sZWZ0KHhfc2VydmVyX3BpeGVsX2J1
ZmZlcl8ud2luZG93X3JlY3QoKS50b3BfbGVmdCgpKTsKKworICBjYWxsYmFja18tPk9uQ2FwdHVy
ZVJlc3VsdChSZXN1bHQ6OlNVQ0NFU1MsIHN0ZDo6bW92ZShmcmFtZSkpOworfQorCitib29sIFdp
bmRvd0NhcHR1cmVyWDExOjpJc09jY2x1ZGVkKGNvbnN0IERlc2t0b3BWZWN0b3ImIHBvcykgewor
ICByZXR1cm4gd2luZG93X2ZpbmRlcl8uR2V0V2luZG93VW5kZXJQb2ludChwb3MpICE9CisgICAg
ICAgICBzdGF0aWNfY2FzdDxXaW5kb3dJZD4oc2VsZWN0ZWRfd2luZG93Xyk7Cit9CisKK2Jvb2wg
V2luZG93Q2FwdHVyZXJYMTE6OkhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSB7Cisg
IGlmIChldmVudC50eXBlID09IENvbmZpZ3VyZU5vdGlmeSkgeworICAgIFhDb25maWd1cmVFdmVu
dCB4Y2UgPSBldmVudC54Y29uZmlndXJlOworICAgIGlmICh4Y2Uud2luZG93ID09IHNlbGVjdGVk
X3dpbmRvd18pIHsKKyAgICAgIGlmICghRGVza3RvcFJlY3RGcm9tWEF0dHJpYnV0ZXMoeGNlKS5l
cXVhbHMoCisgICAgICAgICAgICAgIHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8ud2luZG93X3JlY3Qo
KSkpIHsKKyAgICAgICAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLkluaXQoZGlzcGxheSgp
LCBzZWxlY3RlZF93aW5kb3dfKSkgeworICAgICAgICAgIFJUQ19MT0coTFNfRVJST1IpCisgICAg
ICAgICAgICAgIDw8ICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBwaXhlbCBidWZmZXIgYWZ0ZXIgcmVz
aXppbmcuIjsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIC8vIEFsd2F5cyBy
ZXR1cm5zIGZhbHNlLCBzbyBvdGhlciBvYnNlcnZlcnMgY2FuIHN0aWxsIHJlY2VpdmUgdGhlIGV2
ZW50cy4KKyAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdpbmRvd0NhcHR1cmVyWDExOjpHZXRX
aW5kb3dUaXRsZSg6OldpbmRvdyB3aW5kb3csIHN0ZDo6c3RyaW5nKiB0aXRsZSkgeworICBpbnQg
c3RhdHVzOworICBib29sIHJlc3VsdCA9IGZhbHNlOworICBYVGV4dFByb3BlcnR5IHdpbmRvd19u
YW1lOworICB3aW5kb3dfbmFtZS52YWx1ZSA9IG51bGxwdHI7CisgIGlmICh3aW5kb3cpIHsKKyAg
ICBzdGF0dXMgPSBYR2V0V01OYW1lKGRpc3BsYXkoKSwgd2luZG93LCAmd2luZG93X25hbWUpOwor
ICAgIGlmIChzdGF0dXMgJiYgd2luZG93X25hbWUudmFsdWUgJiYgd2luZG93X25hbWUubml0ZW1z
KSB7CisgICAgICBpbnQgY250OworICAgICAgY2hhcioqIGxpc3QgPSBudWxscHRyOworICAgICAg
c3RhdHVzID0KKyAgICAgICAgICBYdXRmOFRleHRQcm9wZXJ0eVRvVGV4dExpc3QoZGlzcGxheSgp
LCAmd2luZG93X25hbWUsICZsaXN0LCAmY250KTsKKyAgICAgIGlmIChzdGF0dXMgPj0gU3VjY2Vz
cyAmJiBjbnQgJiYgKmxpc3QpIHsKKyAgICAgICAgaWYgKGNudCA+IDEpIHsKKyAgICAgICAgICBS
VENfTE9HKExTX0lORk8pIDw8ICJXaW5kb3cgaGFzICIgPDwgY250CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiIHRleHQgcHJvcGVydGllcywgb25seSB1c2luZyB0aGUgZmlyc3Qgb25l
LiI7CisgICAgICAgIH0KKyAgICAgICAgKnRpdGxlID0gKmxpc3Q7CisgICAgICAgIHJlc3VsdCA9
IHRydWU7CisgICAgICB9CisgICAgICBpZiAobGlzdCkKKyAgICAgICAgWEZyZWVTdHJpbmdMaXN0
KGxpc3QpOworICAgIH0KKyAgICBpZiAod2luZG93X25hbWUudmFsdWUpCisgICAgICBYRnJlZSh3
aW5kb3dfbmFtZS52YWx1ZSk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gc3RhdGlj
CitzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBXaW5kb3dDYXB0dXJlclgxMTo6Q3Jl
YXRlUmF3V2luZG93Q2FwdHVyZXIoCisgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBv
cHRpb25zKSB7CisgIGlmICghb3B0aW9ucy54X2Rpc3BsYXkoKSkKKyAgICByZXR1cm4gbnVsbHB0
cjsKKyAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+KG5ldyBXaW5kb3dD
YXB0dXJlclgxMShvcHRpb25zKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl94MTEuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp
bnV4L3dpbmRvd19jYXB0dXJlcl94MTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Y2QyYzk3Y2I5ZmRkZWE1YTc4
NzVmZGUyMzY0OTVjMTdmNTU5MWI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgv
d2luZG93X2NhcHR1cmVyX3gxMS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiAgQ29weXJpZ2h0
IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKKyNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfV0lORE9XX0NBUFRVUkVS
X1gxMV9IXworI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfQ0FQ
VFVSRVJfWDExX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RyaW5nPgorCisj
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgi
CisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2ZpbmRlcl94
MTEuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2F0b21fY2Fj
aGUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X3NlcnZlcl9w
aXhlbF9idWZmZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBXaW5kb3dDYXB0dXJlclgxMSA6IHB1YmxpYyBE
ZXNrdG9wQ2FwdHVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTaGFyZWRY
RGlzcGxheTo6WEV2ZW50SGFuZGxlciB7CisgcHVibGljOgorICBleHBsaWNpdCBXaW5kb3dDYXB0
dXJlclgxMShjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpOworICB+V2luZG93
Q2FwdHVyZXJYMTEoKSBvdmVycmlkZTsKKworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlc2t0
b3BDYXB0dXJlcj4gQ3JlYXRlUmF3V2luZG93Q2FwdHVyZXIoCisgICAgICBjb25zdCBEZXNrdG9w
Q2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpOworCisgIC8vIERlc2t0b3BDYXB0dXJlciBpbnRlcmZh
Y2UuCisgIHZvaWQgU3RhcnQoQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKKyAgdm9pZCBD
YXB0dXJlRnJhbWUoKSBvdmVycmlkZTsKKyAgYm9vbCBHZXRTb3VyY2VMaXN0KFNvdXJjZUxpc3Qq
IHNvdXJjZXMpIG92ZXJyaWRlOworICBib29sIFNlbGVjdFNvdXJjZShTb3VyY2VJZCBpZCkgb3Zl
cnJpZGU7CisgIGJvb2wgRm9jdXNPblNlbGVjdGVkU291cmNlKCkgb3ZlcnJpZGU7CisgIGJvb2wg
SXNPY2NsdWRlZChjb25zdCBEZXNrdG9wVmVjdG9yJiBwb3MpIG92ZXJyaWRlOworCisgIC8vIFNo
YXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIGludGVyZmFjZS4KKyAgYm9vbCBIYW5kbGVYRXZl
bnQoY29uc3QgWEV2ZW50JiBldmVudCkgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorICBEaXNwbGF5
KiBkaXNwbGF5KCkgeyByZXR1cm4geF9kaXNwbGF5Xy0+ZGlzcGxheSgpOyB9CisKKyAgLy8gUmV0
dXJucyB3aW5kb3cgdGl0bGUgZm9yIHRoZSBzcGVjaWZpZWQgWCB8d2luZG93fC4KKyAgYm9vbCBH
ZXRXaW5kb3dUaXRsZSg6OldpbmRvdyB3aW5kb3csIHN0ZDo6c3RyaW5nKiB0aXRsZSk7CisKKyAg
Q2FsbGJhY2sqIGNhbGxiYWNrXyA9IG51bGxwdHI7CisKKyAgcnRjOjpzY29wZWRfcmVmcHRyPFNo
YXJlZFhEaXNwbGF5PiB4X2Rpc3BsYXlfOworCisgIGJvb2wgaGFzX2NvbXBvc2l0ZV9leHRlbnNp
b25fID0gZmFsc2U7CisKKyAgOjpXaW5kb3cgc2VsZWN0ZWRfd2luZG93XyA9IDA7CisgIFhTZXJ2
ZXJQaXhlbEJ1ZmZlciB4X3NlcnZlcl9waXhlbF9idWZmZXJfOworICBYQXRvbUNhY2hlIGF0b21f
Y2FjaGVfOworICBXaW5kb3dGaW5kZXJYMTEgd2luZG93X2ZpbmRlcl87CisKKyAgUlRDX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihXaW5kb3dDYXB0dXJlclgxMSk7Cit9OworCit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhf
V0lORE9XX0NBUFRVUkVSX1gxMV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93
X2ZpbmRlcl94MTEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfZmluZGVyX3gxMS5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NmZhZGMyYzZmYjQzMjkyZGJhNjEzNzA2YmRjMzAyZmU5YzgxOWUzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2ZpbmRlcl94MTEuY2MKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9saW51eC93aW5kb3dfZmluZGVyX3gxMS5oIgorCisjaW5jbHVkZSA8bWVtb3J5
PgorCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAibW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2xpc3RfdXRpbHMuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK1dpbmRvd0ZpbmRlclgxMTo6
V2luZG93RmluZGVyWDExKFhBdG9tQ2FjaGUqIGNhY2hlKSA6IGNhY2hlXyhjYWNoZSkgeworICBS
VENfRENIRUNLKGNhY2hlXyk7Cit9CisKK1dpbmRvd0ZpbmRlclgxMTo6fldpbmRvd0ZpbmRlclgx
MSgpID0gZGVmYXVsdDsKKworV2luZG93SWQgV2luZG93RmluZGVyWDExOjpHZXRXaW5kb3dVbmRl
clBvaW50KERlc2t0b3BWZWN0b3IgcG9pbnQpIHsKKyAgV2luZG93SWQgaWQgPSBrTnVsbFdpbmRv
d0lkOworICBHZXRXaW5kb3dMaXN0KGNhY2hlXywgWyZpZCwgdGhpcywgcG9pbnRdKDo6V2luZG93
IHdpbmRvdykgeworICAgIERlc2t0b3BSZWN0IHJlY3Q7CisgICAgaWYgKEdldFdpbmRvd1JlY3Qo
dGhpcy0+Y2FjaGVfLT5kaXNwbGF5KCksIHdpbmRvdywgJnJlY3QpICYmCisgICAgICAgIHJlY3Qu
Q29udGFpbnMocG9pbnQpKSB7CisgICAgICBpZCA9IHdpbmRvdzsKKyAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH0pOworICByZXR1cm4gaWQ7Cit9CisKKy8v
IHN0YXRpYworc3RkOjp1bmlxdWVfcHRyPFdpbmRvd0ZpbmRlcj4gV2luZG93RmluZGVyOjpDcmVh
dGUoCisgICAgY29uc3QgV2luZG93RmluZGVyOjpPcHRpb25zJiBvcHRpb25zKSB7CisgIGlmIChv
cHRpb25zLmNhY2hlID09IG51bGxwdHIpIHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCisg
IHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxXaW5kb3dGaW5kZXJYMTE+KG9wdGlvbnMuY2FjaGUp
OworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51
eC93aW5kb3dfZmluZGVyX3gxMS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2ZpbmRlcl94MTEu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMGJiYTg2OTdiNWY3NTQ0ZDRkNmNjY2RlNmYxMmNlNTZhOWNlNDg4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2ZpbmRlcl94MTEuaApAQCAt
MCwwICsxLDM1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0RF
U0tUT1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfRklOREVSX1gxMV9IXworI2RlZmluZSBNT0RVTEVT
X0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfRklOREVSX1gxMV9IXworCisjaW5jbHVkZSAi
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlci5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworY2xhc3MgWEF0b21DYWNoZTsKKworLy8gVGhlIGltcGxlbWVudGF0aW9uIG9mIFdp
bmRvd0ZpbmRlciBmb3IgWDExLgorY2xhc3MgV2luZG93RmluZGVyWDExIGZpbmFsIDogcHVibGlj
IFdpbmRvd0ZpbmRlciB7CisgcHVibGljOgorICBleHBsaWNpdCBXaW5kb3dGaW5kZXJYMTEoWEF0
b21DYWNoZSogY2FjaGUpOworICB+V2luZG93RmluZGVyWDExKCkgb3ZlcnJpZGU7CisKKyAgLy8g
V2luZG93RmluZGVyIGltcGxlbWVudGF0aW9uLgorICBXaW5kb3dJZCBHZXRXaW5kb3dVbmRlclBv
aW50KERlc2t0b3BWZWN0b3IgcG9pbnQpIG92ZXJyaWRlOworCisgcHJpdmF0ZToKKyAgWEF0b21D
YWNoZSogY29uc3QgY2FjaGVfOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5k
aWYgIC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRPV19GSU5ERVJfWDExX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfbGlzdF91dGlscy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkOGY1ZjcyY2Q1ZTVl
NWUwNTEyOTA5Zjc5N2EzMDIyOWRlMGRjOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9s
aW51eC93aW5kb3dfbGlzdF91dGlscy5jYwpAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5k
b3dfbGlzdF91dGlscy5oIgorCisjaW5jbHVkZSA8WDExL1hhdG9tLmg+CisjaW5jbHVkZSA8WDEx
L1hsaWIuaD4KKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwor
I2luY2x1ZGUgPGFsZ29yaXRobT4KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2xpbnV4L3hfZXJyb3JfdHJhcC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1lc3BhY2UgeworCitjbGFzcyBE
ZWZlclhGcmVlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERlZmVyWEZyZWUodm9pZCogZGF0YSkg
OiBkYXRhXyhkYXRhKSB7fQorICB+RGVmZXJYRnJlZSgpOworCisgcHJpdmF0ZToKKyAgdm9pZCog
Y29uc3QgZGF0YV87Cit9OworCitEZWZlclhGcmVlOjp+RGVmZXJYRnJlZSgpIHsKKyAgaWYgKGRh
dGFfKQorICAgIFhGcmVlKGRhdGFfKTsKK30KKworLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBmb3Ig
WEdldFdpbmRvd1Byb3BlcnR5KCkgcmVzdWx0cy4KK3RlbXBsYXRlIDxjbGFzcyBQcm9wZXJ0eVR5
cGU+CitjbGFzcyBYV2luZG93UHJvcGVydHkgeworIHB1YmxpYzoKKyAgWFdpbmRvd1Byb3BlcnR5
KERpc3BsYXkqIGRpc3BsYXksIFdpbmRvdyB3aW5kb3csIEF0b20gcHJvcGVydHkpIHsKKyAgICBj
b25zdCBpbnQga0JpdHNQZXJCeXRlID0gODsKKyAgICBBdG9tIGFjdHVhbF90eXBlOworICAgIGlu
dCBhY3R1YWxfZm9ybWF0OworICAgIHVuc2lnbmVkIGxvbmcgYnl0ZXNfYWZ0ZXI7ICAvLyBOT0xJ
TlQ6IHR5cGUgcmVxdWlyZWQgYnkgWEdldFdpbmRvd1Byb3BlcnR5CisgICAgaW50IHN0YXR1cyA9
IFhHZXRXaW5kb3dQcm9wZXJ0eSgKKyAgICAgICAgZGlzcGxheSwgd2luZG93LCBwcm9wZXJ0eSwg
MEwsIH4wTCwgRmFsc2UsIEFueVByb3BlcnR5VHlwZSwKKyAgICAgICAgJmFjdHVhbF90eXBlLCAm
YWN0dWFsX2Zvcm1hdCwgJnNpemVfLCAmYnl0ZXNfYWZ0ZXIsICZkYXRhXyk7CisgICAgaWYgKHN0
YXR1cyAhPSBTdWNjZXNzKSB7CisgICAgICBkYXRhXyA9IG51bGxwdHI7CisgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChzaXplb2YoUHJvcGVydHlUeXBlKSAqIGtCaXRzUGVyQnl0ZSAhPSBh
Y3R1YWxfZm9ybWF0KSB7CisgICAgICBzaXplXyA9IDA7CisgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaXNfdmFsaWRfID0gdHJ1ZTsKKyAgfQorCisgIH5YV2luZG93UHJvcGVydHkoKSB7Cisg
ICAgaWYgKGRhdGFfKQorICAgICAgWEZyZWUoZGF0YV8pOworICB9CisKKyAgLy8gVHJ1ZSBpZiB3
ZSBnb3QgcHJvcGVybHkgdmFsdWUgc3VjY2Vzc2Z1bGx5LgorICBib29sIGlzX3ZhbGlkKCkgY29u
c3QgeyByZXR1cm4gaXNfdmFsaWRfOyB9CisKKyAgLy8gU2l6ZSBhbmQgdmFsdWUgb2YgdGhlIHBy
b3BlcnR5LgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVfOyB9CisgIGNvbnN0
IFByb3BlcnR5VHlwZSogZGF0YSgpIGNvbnN0IHsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxQcm9wZXJ0eVR5cGUqPihkYXRhXyk7CisgIH0KKyAgUHJvcGVydHlUeXBlKiBkYXRhKCkgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQcm9wZXJ0eVR5cGUqPihkYXRhXyk7IH0KKworIHByaXZh
dGU6CisgIGJvb2wgaXNfdmFsaWRfID0gZmFsc2U7CisgIHVuc2lnbmVkIGxvbmcgc2l6ZV8gPSAw
OyAgLy8gTk9MSU5UOiB0eXBlIHJlcXVpcmVkIGJ5IFhHZXRXaW5kb3dQcm9wZXJ0eQorICB1bnNp
Z25lZCBjaGFyKiBkYXRhXyA9IG51bGxwdHI7CisKKyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTihYV2luZG93UHJvcGVydHkpOworfTsKKworLy8gSXRlcmF0ZXMgdGhyb3VnaCB8d2luZG93
fCBoaWVyYXJjaHkgdG8gZmluZCBmaXJzdCB2aXNpYmxlIHdpbmRvdywgaS5lLiBvbmUKKy8vIHRo
YXQgaGFzIFdNX1NUQVRFIHByb3BlcnR5IHNldCB0byBOb3JtYWxTdGF0ZS4KKy8vIFNlZSBodHRw
Oi8vdHJvbmNoZS5jb20vZ3VpL3gvaWNjY20vc2VjLTQuaHRtbCNzLTQuMS4zLjEgLgorOjpXaW5k
b3cgR2V0QXBwbGljYXRpb25XaW5kb3coWEF0b21DYWNoZSogY2FjaGUsIDo6V2luZG93IHdpbmRv
dykgeworICBpbnQzMl90IHN0YXRlID0gR2V0V2luZG93U3RhdGUoY2FjaGUsIHdpbmRvdyk7Cisg
IGlmIChzdGF0ZSA9PSBOb3JtYWxTdGF0ZSkgeworICAgIC8vIFdpbmRvdyBoYXMgV01fU1RBVEU9
PU5vcm1hbFN0YXRlLiBSZXR1cm4gaXQuCisgICAgcmV0dXJuIHdpbmRvdzsKKyAgfSBlbHNlIGlm
IChzdGF0ZSA9PSBJY29uaWNTdGF0ZSkgeworICAgIC8vIFdpbmRvdyBpcyBpbiBtaW5pbWl6ZWQu
IFNraXAgaXQuCisgICAgcmV0dXJuIDA7CisgIH0KKworICBSVENfRENIRUNLX0VRKHN0YXRlLCBX
aXRoZHJhd25TdGF0ZSk7CisgIC8vIElmIHRoZSB3aW5kb3cgaXMgaW4gV2l0aGRyYXduU3RhdGUg
dGhlbiBsb29rIGF0IGFsbCBvZiBpdHMgY2hpbGRyZW4uCisgIDo6V2luZG93IHJvb3QsIHBhcmVu
dDsKKyAgOjpXaW5kb3cqIGNoaWxkcmVuOworICB1bnNpZ25lZCBpbnQgbnVtX2NoaWxkcmVuOwor
ICBpZiAoIVhRdWVyeVRyZWUoY2FjaGUtPmRpc3BsYXkoKSwgd2luZG93LCAmcm9vdCwgJnBhcmVu
dCwgJmNoaWxkcmVuLAorICAgICAgICAgICAgICAgICAgJm51bV9jaGlsZHJlbikpIHsKKyAgICBS
VENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHF1ZXJ5IGZvciBjaGlsZCB3aW5kb3dzIGFs
dGhvdWdoIHdpbmRvdyIKKyAgICAgICAgICAgICAgICAgICAgICA8PCAiZG9lcyBub3QgaGF2ZSBh
IHZhbGlkIFdNX1NUQVRFLiI7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgOjpXaW5kb3cgYXBwX3dp
bmRvdyA9IDA7CisgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtX2NoaWxkcmVuOyAr
K2kpIHsKKyAgICBhcHBfd2luZG93ID0gR2V0QXBwbGljYXRpb25XaW5kb3coY2FjaGUsIGNoaWxk
cmVuW2ldKTsKKyAgICBpZiAoYXBwX3dpbmRvdykKKyAgICAgIGJyZWFrOworICB9CisKKyAgaWYg
KGNoaWxkcmVuKQorICAgIFhGcmVlKGNoaWxkcmVuKTsKKyAgcmV0dXJuIGFwcF93aW5kb3c7Cit9
CisKKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgfHdpbmRvd3wgaXMgYSBkZXNrdG9wIGVsZW1lbnQu
Citib29sIElzRGVza3RvcEVsZW1lbnQoWEF0b21DYWNoZSogY2FjaGUsIDo6V2luZG93IHdpbmRv
dykgeworICBSVENfRENIRUNLKGNhY2hlKTsKKyAgaWYgKHdpbmRvdyA9PSAwKQorICAgIHJldHVy
biBmYWxzZTsKKworICAvLyBGaXJzdCBsb29rIGZvciBfTkVUX1dNX1dJTkRPV19UWVBFLiBUaGUg
c3RhbmRhcmQKKyAgLy8gKGh0dHA6Ly9zdGFuZGFyZHMuZnJlZWRlc2t0b3Aub3JnL3dtLXNwZWMv
bGF0ZXN0L2FyMDFzMDUuaHRtbCNpZDI3NjAzMDYpCisgIC8vIHNheXMgdGhpcyBoaW50ICpzaG91
bGQqIGJlIHByZXNlbnQgb24gYWxsIHdpbmRvd3MsIGFuZCB3ZSB1c2UgdGhlIGV4aXN0ZW5jZQor
ICAvLyBvZiBfTkVUX1dNX1dJTkRPV19UWVBFX05PUk1BTCBpbiB0aGUgcHJvcGVydHkgdG8gaW5k
aWNhdGUgYSB3aW5kb3cgaXMgbm90CisgIC8vIGEgZGVza3RvcCBlbGVtZW50ICh0aGF0IGlzLCBv
bmx5ICJub3JtYWwiIHdpbmRvd3Mgc2hvdWxkIGJlIHNoYXJlYWJsZSkuCisgIFhXaW5kb3dQcm9w
ZXJ0eTx1aW50MzJfdD4gd2luZG93X3R5cGUoY2FjaGUtPmRpc3BsYXkoKSwgd2luZG93LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLT5XaW5kb3dUeXBlKCkp
OworICBpZiAod2luZG93X3R5cGUuaXNfdmFsaWQoKSAmJiB3aW5kb3dfdHlwZS5zaXplKCkgPiAw
KSB7CisgICAgdWludDMyX3QqIGVuZCA9IHdpbmRvd190eXBlLmRhdGEoKSArIHdpbmRvd190eXBl
LnNpemUoKTsKKyAgICBib29sIGlzX25vcm1hbCA9CisgICAgICAgIChlbmQgIT0gc3RkOjpmaW5k
KHdpbmRvd190eXBlLmRhdGEoKSwgZW5kLCBjYWNoZS0+V2luZG93VHlwZU5vcm1hbCgpKSk7Cisg
ICAgcmV0dXJuICFpc19ub3JtYWw7CisgIH0KKworICAvLyBGYWxsIGJhY2sgb24gdXNpbmcgdGhl
IGhpbnQuCisgIFhDbGFzc0hpbnQgY2xhc3NfaGludDsKKyAgU3RhdHVzIHN0YXR1cyA9IFhHZXRD
bGFzc0hpbnQoY2FjaGUtPmRpc3BsYXkoKSwgd2luZG93LCAmY2xhc3NfaGludCk7CisgIGlmIChz
dGF0dXMgPT0gMCkgeworICAgIC8vIE5vIGhpbnRzLCBhc3N1bWUgdGhpcyBpcyBhIG5vcm1hbCBh
cHBsaWNhdGlvbiB3aW5kb3cuCisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgRGVmZXJYRnJl
ZSBmcmVlX3Jlc19uYW1lKGNsYXNzX2hpbnQucmVzX25hbWUpOworICBEZWZlclhGcmVlIGZyZWVf
cmVzX2NsYXNzKGNsYXNzX2hpbnQucmVzX2NsYXNzKTsKKyAgcmV0dXJuIHN0cmNtcCgiZ25vbWUt
cGFuZWwiLCBjbGFzc19oaW50LnJlc19uYW1lKSA9PSAwIHx8CisgICAgICAgICBzdHJjbXAoImRl
c2t0b3Bfd2luZG93IiwgY2xhc3NfaGludC5yZXNfbmFtZSkgPT0gMDsKK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKK2ludDMyX3QgR2V0V2luZG93U3RhdGUoWEF0b21DYWNoZSogY2FjaGUsIDo6V2lu
ZG93IHdpbmRvdykgeworICAvLyBHZXQgV01fU1RBVEUgcHJvcGVydHkgb2YgdGhlIHdpbmRvdy4K
KyAgWFdpbmRvd1Byb3BlcnR5PHVpbnQzMl90PiB3aW5kb3dfc3RhdGUoY2FjaGUtPmRpc3BsYXko
KSwgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNo
ZS0+V21TdGF0ZSgpKTsKKworICAvLyBXTV9TVEFURSBpcyBjb25zaWRlcmVkIHRvIGJlIHNldCB0
byBXaXRoZHJhd25TdGF0ZSB3aGVuIGl0IG1pc3NpbmcuCisgIHJldHVybiB3aW5kb3dfc3RhdGUu
aXNfdmFsaWQoKSA/ICp3aW5kb3dfc3RhdGUuZGF0YSgpIDogV2l0aGRyYXduU3RhdGU7Cit9CisK
K2Jvb2wgR2V0V2luZG93TGlzdChYQXRvbUNhY2hlKiBjYWNoZSwKKyAgICAgICAgICAgICAgICAg
ICBydGM6OkZ1bmN0aW9uVmlldzxib29sKDo6V2luZG93KT4gb25fd2luZG93KSB7CisgIFJUQ19E
Q0hFQ0soY2FjaGUpOworICBSVENfRENIRUNLKG9uX3dpbmRvdyk7CisgIDo6RGlzcGxheSogY29u
c3QgZGlzcGxheSA9IGNhY2hlLT5kaXNwbGF5KCk7CisKKyAgaW50IGZhaWxlZF9zY3JlZW5zID0g
MDsKKyAgY29uc3QgaW50IG51bV9zY3JlZW5zID0gWFNjcmVlbkNvdW50KGRpc3BsYXkpOworICBm
b3IgKGludCBzY3JlZW4gPSAwOyBzY3JlZW4gPCBudW1fc2NyZWVuczsgc2NyZWVuKyspIHsKKyAg
ICA6OldpbmRvdyByb290X3dpbmRvdyA9IFhSb290V2luZG93KGRpc3BsYXksIHNjcmVlbik7Cisg
ICAgOjpXaW5kb3cgcGFyZW50OworICAgIDo6V2luZG93KiBjaGlsZHJlbjsKKyAgICB1bnNpZ25l
ZCBpbnQgbnVtX2NoaWxkcmVuOworICAgIHsKKyAgICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChk
aXNwbGF5KTsKKyAgICAgIGlmIChYUXVlcnlUcmVlKGRpc3BsYXksIHJvb3Rfd2luZG93LCAmcm9v
dF93aW5kb3csICZwYXJlbnQsICZjaGlsZHJlbiwKKyAgICAgICAgICAgICAgICAgICAgICZudW1f
Y2hpbGRyZW4pID09IDAgfHwKKyAgICAgICAgICBlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERp
c2FibGUoKSAhPSAwKSB7CisgICAgICAgIGZhaWxlZF9zY3JlZW5zKys7CisgICAgICAgIFJUQ19M
T0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gcXVlcnkgZm9yIGNoaWxkIHdpbmRvd3MgZm9yIHNj
cmVlbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHNjcmVlbjsKKyAgICAgICAgY29u
dGludWU7CisgICAgICB9CisgICAgfQorCisgICAgRGVmZXJYRnJlZSBmcmVlX2NoaWxkcmVuKGNo
aWxkcmVuKTsKKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtX2NoaWxkcmVu
OyBpKyspIHsKKyAgICAgIC8vIEl0ZXJhdGVzIGluIHJldmVyc2Ugb3JkZXIgdG8gcmV0dXJuIHdp
bmRvd3MgZnJvbSBmcm9udCB0byBiYWNrLgorICAgICAgOjpXaW5kb3cgYXBwX3dpbmRvdyA9Cisg
ICAgICAgICAgR2V0QXBwbGljYXRpb25XaW5kb3coY2FjaGUsIGNoaWxkcmVuW251bV9jaGlsZHJl
biAtIDEgLSBpXSk7CisgICAgICBpZiAoYXBwX3dpbmRvdyAmJiAhSXNEZXNrdG9wRWxlbWVudChj
YWNoZSwgYXBwX3dpbmRvdykpIHsKKyAgICAgICAgaWYgKCFvbl93aW5kb3coYXBwX3dpbmRvdykp
IHsKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAg
fQorCisgIHJldHVybiBmYWlsZWRfc2NyZWVucyA8IG51bV9zY3JlZW5zOworfQorCitib29sIEdl
dFdpbmRvd1JlY3QoOjpEaXNwbGF5KiBkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgIDo6V2lu
ZG93IHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICBEZXNrdG9wUmVjdCogcmVjdCwKKyAgICAg
ICAgICAgICAgICAgICBYV2luZG93QXR0cmlidXRlcyogYXR0cmlidXRlcyAvKiA9IG51bGxwdHIg
Ki8pIHsKKyAgWFdpbmRvd0F0dHJpYnV0ZXMgbG9jYWxfYXR0cmlidXRlczsKKyAgaW50IG9mZnNl
dF94OworICBpbnQgb2Zmc2V0X3k7CisgIGlmIChhdHRyaWJ1dGVzID09IG51bGxwdHIpIHsKKyAg
ICBhdHRyaWJ1dGVzID0gJmxvY2FsX2F0dHJpYnV0ZXM7CisgIH0KKworICB7CisgICAgWEVycm9y
VHJhcCBlcnJvcl90cmFwKGRpc3BsYXkpOworICAgIGlmICghWEdldFdpbmRvd0F0dHJpYnV0ZXMo
ZGlzcGxheSwgd2luZG93LCBhdHRyaWJ1dGVzKSB8fAorICAgICAgICBlcnJvcl90cmFwLkdldExh
c3RFcnJvckFuZERpc2FibGUoKSAhPSAwKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICB9CisgICpyZWN0ID0gRGVza3RvcFJlY3RGcm9tWEF0dHJpYnV0ZXMoKmF0dHJpYnV0ZXMpOwor
CisgIHsKKyAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheSk7CisgICAgOjpXaW5kb3cg
Y2hpbGQ7CisgICAgaWYgKCFYVHJhbnNsYXRlQ29vcmRpbmF0ZXMoZGlzcGxheSwgd2luZG93LCBh
dHRyaWJ1dGVzLT5yb290LCAtcmVjdC0+bGVmdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC1yZWN0LT50b3AoKSwgJm9mZnNldF94LCAmb2Zmc2V0X3ksICZjaGlsZCkgfHwKKyAg
ICAgICAgZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgeworICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorICByZWN0LT5UcmFuc2xhdGUob2Zmc2V0X3gsIG9m
ZnNldF95KTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0aWxzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9s
aW51eC93aW5kb3dfbGlzdF91dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwNTdjOTliODRjMjNlNDc3MmZj
NTZhY2MzNTRhZmI0ZWUxZWJhODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93
aW5kb3dfbGlzdF91dGlscy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChj
KSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRPV19MSVNUX1VU
SUxTX0hfCisjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRPV19MSVNU
X1VUSUxTX0hfCisKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorCisjaW5jbHVkZSAibW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9nZW9tZXRyeS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL2xpbnV4L3hfYXRvbV9jYWNoZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2Z1
bmN0aW9uX3ZpZXcuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIFN5bmNocm9ub3VzbHkg
aXRlcmF0ZXMgYWxsIG9uLXNjcmVlbiB3aW5kb3dzIGluIHxjYWNoZXwuZGlzcGxheSgpIGluCisv
LyBkZWNyZWFzaW5nIHotb3JkZXIgYW5kIHNlbmRzIHRoZW0gb25lLWJ5LW9uZSB0byB8b25fd2lu
ZG93fCBmdW5jdGlvbiBiZWZvcmUKKy8vIEdldFdpbmRvd0xpc3QoKSByZXR1cm5zLiBJZiB8b25f
d2luZG93fCByZXR1cm5zIGZhbHNlLCB0aGlzIGZ1bmN0aW9uIGlnbm9yZXMKKy8vIG90aGVyIHdp
bmRvd3MgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkuIEdldFdpbmRvd0xpc3QoKSByZXR1cm5zIGZh
bHNlIGlmCisvLyBuYXRpdmUgQVBJcyBmYWlsZWQuIElmIG11bHRpcGxlIHNjcmVlbnMgYXJlIGF0
dGFjaGVkIHRvIHRoZSB8ZGlzcGxheXwsIHRoaXMKKy8vIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ug
b25seSB3aGVuIG5hdGl2ZSBBUElzIGZhaWxlZCBvbiBhbGwgc2NyZWVucy4gTWVudXMsCisvLyBw
YW5lbHMgYW5kIG1pbmltaXplZCB3aW5kb3dzIHdpbGwgYmUgaWdub3JlZC4KK2Jvb2wgR2V0V2lu
ZG93TGlzdChYQXRvbUNhY2hlKiBjYWNoZSwKKyAgICAgICAgICAgICAgICAgICBydGM6OkZ1bmN0
aW9uVmlldzxib29sKDo6V2luZG93KT4gb25fd2luZG93KTsKKworLy8gUmV0dXJucyBXTV9TVEFU
RSBwcm9wZXJ0eSBvZiB0aGUgfHdpbmRvd3wuIFRoaXMgZnVuY3Rpb24gcmV0dXJucworLy8gV2l0
aGRyYXduU3RhdGUgaWYgdGhlIHx3aW5kb3d8IGlzIG1pc3NpbmcuCitpbnQzMl90IEdldFdpbmRv
d1N0YXRlKFhBdG9tQ2FjaGUqIGNhY2hlLCA6OldpbmRvdyB3aW5kb3cpOworCisvLyBSZXR1cm5z
IHRoZSByZWN0YW5nbGUgb2YgdGhlIHx3aW5kb3d8IGluIHRoZSBjb29yZGluYXRlcyBvZiB8ZGlz
cGxheXwuIFRoaXMKKy8vIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgaWYgbmF0aXZlIEFQSXMgZmFp
bGVkLiBJZiB8YXR0cmlidXRlc3wgaXMgcHJvdmlkZWQsIGl0CisvLyB3aWxsIGJlIGZpbGxlZCB3
aXRoIHRoZSBhdHRyaWJ1dGVzIG9mIHx3aW5kb3d8LiBUaGUgfHJlY3R8IGlzIGluIHN5c3RlbQor
Ly8gY29vcmRpbmF0ZSwgaS5lLiB0aGUgcHJpbWFyeSBtb25pdG9yIGFsd2F5cyBzdGFydHMgZnJv
bSAoMCwgMCkuCitib29sIEdldFdpbmRvd1JlY3QoOjpEaXNwbGF5KiBkaXNwbGF5LAorICAgICAg
ICAgICAgICAgICAgIDo6V2luZG93IHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICBEZXNrdG9w
UmVjdCogcmVjdCwKKyAgICAgICAgICAgICAgICAgICBYV2luZG93QXR0cmlidXRlcyogYXR0cmli
dXRlcyA9IG51bGxwdHIpOworCisvLyBDcmVhdGVzIGEgRGVza3RvcFJlY3QgZnJvbSB8YXR0cmli
dXRlc3wuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0Rlc2t0b3BSZWN0IERlc2t0b3BSZWN0RnJv
bVhBdHRyaWJ1dGVzKGNvbnN0IFQmIGF0dHJpYnV0ZXMpIHsKKyAgcmV0dXJuIERlc2t0b3BSZWN0
OjpNYWtlWFlXSChhdHRyaWJ1dGVzLngsIGF0dHJpYnV0ZXMueSwgYXR0cmlidXRlcy53aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLmhlaWdodCk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQ
VFVSRV9MSU5VWF9XSU5ET1dfTElTVF9VVElMU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGlu
dXgveF9hdG9tX2NhY2hlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9hdG9tX2NhY2hlLmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgzMmU2MTY2Y2I0MzVjZGE4N2UzYTlkMWI0NmY0ZWE0OWFhNmMwYjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2F0b21fY2FjaGUuY2MKQEAgLTAsMCArMSw0NyBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9saW51eC94X2F0b21fY2FjaGUuaCIKKworI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworWEF0b21DYWNoZTo6WEF0b21DYWNoZSg6OkRpc3Bs
YXkqIGRpc3BsYXkpIDogZGlzcGxheV8oZGlzcGxheSkgeworICBSVENfRENIRUNLKGRpc3BsYXlf
KTsKK30KKworWEF0b21DYWNoZTo6flhBdG9tQ2FjaGUoKSA9IGRlZmF1bHQ7CisKKzo6RGlzcGxh
eSogWEF0b21DYWNoZTo6ZGlzcGxheSgpIGNvbnN0IHsKKyAgcmV0dXJuIGRpc3BsYXlfOworfQor
CitBdG9tIFhBdG9tQ2FjaGU6OldtU3RhdGUoKSB7CisgIHJldHVybiBDcmVhdGVJZk5vdEV4aXN0
KCZ3bV9zdGF0ZV8sICJXTV9TVEFURSIpOworfQorCitBdG9tIFhBdG9tQ2FjaGU6OldpbmRvd1R5
cGUoKSB7CisgIHJldHVybiBDcmVhdGVJZk5vdEV4aXN0KCZ3aW5kb3dfdHlwZV8sICJfTkVUX1dN
X1dJTkRPV19UWVBFIik7Cit9CisKK0F0b20gWEF0b21DYWNoZTo6V2luZG93VHlwZU5vcm1hbCgp
IHsKKyAgcmV0dXJuIENyZWF0ZUlmTm90RXhpc3QoJndpbmRvd190eXBlX25vcm1hbF8sICJfTkVU
X1dNX1dJTkRPV19UWVBFX05PUk1BTCIpOworfQorCitBdG9tIFhBdG9tQ2FjaGU6OkNyZWF0ZUlm
Tm90RXhpc3QoQXRvbSogYXRvbSwgY29uc3QgY2hhciogbmFtZSkgeworICBSVENfRENIRUNLKGF0
b20pOworICBpZiAoKmF0b20gPT0gTm9uZSkgeworICAgICphdG9tID0gWEludGVybkF0b20oZGlz
cGxheSgpLCBuYW1lLCBUcnVlKTsKKyAgfQorICByZXR1cm4gKmF0b207Cit9CisKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfYXRvbV9jYWNoZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvbGludXgveF9hdG9tX2NhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzE3ODlmMDUxMjRl
MTAxMDBiZmEwZDI5MDg4M2JhODJmMWMzNjJlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L2xpbnV4L3hfYXRvbV9jYWNoZS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1hfQVRPTV9DQUNI
RV9IXworI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9YX0FUT01fQ0FDSEVf
SF8KKworI2luY2x1ZGUgPFgxMS9YYXRvbS5oPgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisKK25h
bWVzcGFjZSB3ZWJydGMgeworCisvLyBBIGNhY2hlIG9mIEF0b20uIEVhY2ggQXRvbSBvYmplY3Qg
aXMgY3JlYXRlZCBvbiBkZW1hbmQuCitjbGFzcyBYQXRvbUNhY2hlIGZpbmFsIHsKKyBwdWJsaWM6
CisgIGV4cGxpY2l0IFhBdG9tQ2FjaGUoOjpEaXNwbGF5KiBkaXNwbGF5KTsKKyAgflhBdG9tQ2Fj
aGUoKTsKKworICA6OkRpc3BsYXkqIGRpc3BsYXkoKSBjb25zdDsKKworICBBdG9tIFdtU3RhdGUo
KTsKKyAgQXRvbSBXaW5kb3dUeXBlKCk7CisgIEF0b20gV2luZG93VHlwZU5vcm1hbCgpOworCisg
cHJpdmF0ZToKKyAgLy8gSWYgfCphdG9tfCBpcyBOb25lLCB0aGlzIGZ1bmN0aW9uIHVzZXMgWElu
dGVybkF0b20oKSB0byByZXRyaWV2ZSBhbiBBdG9tLgorICBBdG9tIENyZWF0ZUlmTm90RXhpc3Qo
QXRvbSogYXRvbSwgY29uc3QgY2hhciogbmFtZSk7CisKKyAgOjpEaXNwbGF5KiBjb25zdCBkaXNw
bGF5XzsKKyAgQXRvbSB3bV9zdGF0ZV8gPSBOb25lOworICBBdG9tIHdpbmRvd190eXBlXyA9IE5v
bmU7CisgIEF0b20gd2luZG93X3R5cGVfbm9ybWFsXyA9IE5vbmU7Cit9OworCit9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhf
WF9BVE9NX0NBQ0hFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2Vycm9yX3RyYXAu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9saW51eC94X2Vycm9yX3RyYXAuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI1Y2E0NTEy
ZGM2MmEyODI1MzIyOGE3ZjYwMzExM2ZjYWExZDk5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL2xpbnV4L3hfZXJyb3JfdHJhcC5jYwpAQCAtMCwwICsxLDY4IEBACisvKgorICogIENvcHly
aWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfZXJy
b3JfdHJhcC5oIgorCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKKyNpZiBkZWZpbmVkKFRPT0xLSVRf
R1RLKQorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNlbmRpZiAgLy8gIWRlZmluZWQoVE9PTEtJVF9H
VEspCisKK25hbWVzcGFjZSB3ZWJydGMgeworCituYW1lc3BhY2UgeworCisjaWYgIWRlZmluZWQo
VE9PTEtJVF9HVEspCisKKy8vIFRPRE8oc2VyZ2V5dSk6IFRoaXMgY29kZSBpcyBub3QgdGhyZWFk
IHNhZmUuIEZpeCBpdC4gQnVnIDIyMDIuCitzdGF0aWMgYm9vbCBnX3hzZXJ2ZXJfZXJyb3JfdHJh
cF9lbmFibGVkID0gZmFsc2U7CitzdGF0aWMgaW50IGdfbGFzdF94c2VydmVyX2Vycm9yX2NvZGUg
PSAwOworCitpbnQgWFNlcnZlckVycm9ySGFuZGxlcihEaXNwbGF5KiBkaXNwbGF5LCBYRXJyb3JF
dmVudCogZXJyb3JfZXZlbnQpIHsKKyAgYXNzZXJ0KGdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJs
ZWQpOworICBnX2xhc3RfeHNlcnZlcl9lcnJvcl9jb2RlID0gZXJyb3JfZXZlbnQtPmVycm9yX2Nv
ZGU7CisgIHJldHVybiAwOworfQorCisjZW5kaWYgIC8vICFkZWZpbmVkKFRPT0xLSVRfR1RLKQor
Cit9ICAvLyBuYW1lc3BhY2UKKworWEVycm9yVHJhcDo6WEVycm9yVHJhcChEaXNwbGF5KiBkaXNw
bGF5KQorICAgIDogb3JpZ2luYWxfZXJyb3JfaGFuZGxlcl8oTlVMTCksIGVuYWJsZWRfKHRydWUp
IHsKKyNpZiBkZWZpbmVkKFRPT0xLSVRfR1RLKQorICBnZGtfZXJyb3JfdHJhcF9wdXNoKCk7Cisj
ZWxzZSAgIC8vICFkZWZpbmVkKFRPT0xLSVRfR1RLKQorICBhc3NlcnQoIWdfeHNlcnZlcl9lcnJv
cl90cmFwX2VuYWJsZWQpOworICBvcmlnaW5hbF9lcnJvcl9oYW5kbGVyXyA9IFhTZXRFcnJvckhh
bmRsZXIoJlhTZXJ2ZXJFcnJvckhhbmRsZXIpOworICBnX3hzZXJ2ZXJfZXJyb3JfdHJhcF9lbmFi
bGVkID0gdHJ1ZTsKKyAgZ19sYXN0X3hzZXJ2ZXJfZXJyb3JfY29kZSA9IDA7CisjZW5kaWYgIC8v
ICFkZWZpbmVkKFRPT0xLSVRfR1RLKQorfQorCitpbnQgWEVycm9yVHJhcDo6R2V0TGFzdEVycm9y
QW5kRGlzYWJsZSgpIHsKKyAgZW5hYmxlZF8gPSBmYWxzZTsKKyNpZiBkZWZpbmVkKFRPT0xLSVRf
R1RLKQorICByZXR1cm4gZ2RrX2Vycm9yX3RyYXBfcHVzaCgpOworI2Vsc2UgICAvLyAhZGVmaW5l
ZChUT09MS0lUX0dUSykKKyAgYXNzZXJ0KGdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJsZWQpOwor
ICBYU2V0RXJyb3JIYW5kbGVyKG9yaWdpbmFsX2Vycm9yX2hhbmRsZXJfKTsKKyAgZ194c2VydmVy
X2Vycm9yX3RyYXBfZW5hYmxlZCA9IGZhbHNlOworICByZXR1cm4gZ19sYXN0X3hzZXJ2ZXJfZXJy
b3JfY29kZTsKKyNlbmRpZiAgLy8gIWRlZmluZWQoVE9PTEtJVF9HVEspCit9CisKK1hFcnJvclRy
YXA6On5YRXJyb3JUcmFwKCkgeworICBpZiAoZW5hYmxlZF8pCisgICAgR2V0TGFzdEVycm9yQW5k
RGlzYWJsZSgpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS9saW51eC94X2Vycm9yX3RyYXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfZXJyb3JfdHJhcC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE5ZDA1OWEwYmMzNjA4ZTZkMTVlNmU5Njc0ZWFlYjg5ZTM5NmJkM2QKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC94X2Vycm9yX3RyYXAuaApAQCAtMCwwICsx
LDM5IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1Bf
Q0FQVFVSRV9MSU5VWF9YX0VSUk9SX1RSQVBfSF8KKyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NB
UFRVUkVfTElOVVhfWF9FUlJPUl9UUkFQX0hfCisKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorCisj
aW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorCituYW1lc3BhY2Ugd2VicnRj
IHsKKworLy8gSGVscGVyIGNsYXNzIHRoYXQgcmVnaXN0ZXJzIFggV2luZG93IGVycm9yIGhhbmRs
ZXIuIENhbGxlciBjYW4gdXNlCisvLyBHZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgdG8gZ2V0IHRo
ZSBsYXN0IGVycm9yIHRoYXQgd2FzIGNhdWdodCwgaWYgYW55LgorY2xhc3MgWEVycm9yVHJhcCB7
CisgcHVibGljOgorICBleHBsaWNpdCBYRXJyb3JUcmFwKERpc3BsYXkqIGRpc3BsYXkpOworICB+
WEVycm9yVHJhcCgpOworCisgIC8vIFJldHVybnMgbGFzdCBlcnJvciBhbmQgcmVtb3ZlcyB1bnJl
Z2lzdGVycyB0aGUgZXJyb3IgaGFuZGxlci4KKyAgaW50IEdldExhc3RFcnJvckFuZERpc2FibGUo
KTsKKworIHByaXZhdGU6CisgIFhFcnJvckhhbmRsZXIgb3JpZ2luYWxfZXJyb3JfaGFuZGxlcl87
CisgIGJvb2wgZW5hYmxlZF87CisKKyAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihYRXJy
b3JUcmFwKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RV
TEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9YX0VSUk9SX1RSQVBfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j
YXB0dXJlL2xpbnV4L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hf
c2VydmVyX3BpeGVsX2J1ZmZlci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWRkMTM5OGM5Y2IwZjZjNjQwMDlj
NTc1ZWYwZmM1MTE1YzFkYjViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9z
ZXJ2ZXJfcGl4ZWxfYnVmZmVyLmNjCkBAIC0wLDAgKzEsMzUxIEBACisvKgorICogIENvcHlyaWdo
dCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfc2VydmVy
X3BpeGVsX2J1ZmZlci5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3No
bS5oPgorCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5o
IgorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19saXN0X3V0
aWxzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9lcnJvcl90
cmFwLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
bG9nZ2luZy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworbmFtZXNwYWNlIHsKKworLy8gUmV0
dXJucyB0aGUgbnVtYmVyIG9mIGJpdHMgfG1hc2t8IGhhcyB0byBiZSBzaGlmdGVkIGxlZnQgc28g
aXRzIGxhc3QKKy8vIChtb3N0LXNpZ25pZmljYW50KSBiaXQgc2V0IGJlY29tZXMgdGhlIG1vc3Qt
c2lnbmlmaWNhbnQgYml0IG9mIHRoZSB3b3JkLgorLy8gV2hlbiB8bWFza3wgaXMgMCB0aGUgZnVu
Y3Rpb24gcmV0dXJucyAzMS4KK3VpbnQzMl90IE1hc2tUb1NoaWZ0KHVpbnQzMl90IG1hc2spIHsK
KyAgaW50IHNoaWZ0ID0gMDsKKyAgaWYgKChtYXNrICYgMHhmZmZmMDAwMHUpID09IDApIHsKKyAg
ICBtYXNrIDw8PSAxNjsKKyAgICBzaGlmdCArPSAxNjsKKyAgfQorICBpZiAoKG1hc2sgJiAweGZm
MDAwMDAwdSkgPT0gMCkgeworICAgIG1hc2sgPDw9IDg7CisgICAgc2hpZnQgKz0gODsKKyAgfQor
ICBpZiAoKG1hc2sgJiAweGYwMDAwMDAwdSkgPT0gMCkgeworICAgIG1hc2sgPDw9IDQ7CisgICAg
c2hpZnQgKz0gNDsKKyAgfQorICBpZiAoKG1hc2sgJiAweGMwMDAwMDAwdSkgPT0gMCkgeworICAg
IG1hc2sgPDw9IDI7CisgICAgc2hpZnQgKz0gMjsKKyAgfQorICBpZiAoKG1hc2sgJiAweDgwMDAw
MDAwdSkgPT0gMCkKKyAgICBzaGlmdCArPSAxOworCisgIHJldHVybiBzaGlmdDsKK30KKworLy8g
UmV0dXJucyB0cnVlIGlmIHxpbWFnZXwgaXMgaW4gUkdCIGZvcm1hdC4KK2Jvb2wgSXNYSW1hZ2VS
R0JGb3JtYXQoWEltYWdlKiBpbWFnZSkgeworICByZXR1cm4gaW1hZ2UtPmJpdHNfcGVyX3BpeGVs
ID09IDMyICYmIGltYWdlLT5yZWRfbWFzayA9PSAweGZmMDAwMCAmJgorICAgICAgICAgaW1hZ2Ut
PmdyZWVuX21hc2sgPT0gMHhmZjAwICYmIGltYWdlLT5ibHVlX21hc2sgPT0gMHhmZjsKK30KKwor
Ly8gV2UgZXhwb3NlIHR3byBmb3JtcyBvZiBibGl0dGluZyB0byBoYW5kbGUgdmFyaWF0aW9ucyBp
biB0aGUgcGl4ZWwgZm9ybWF0LgorLy8gSW4gRmFzdEJsaXQoKSwgdGhlIG9wZXJhdGlvbiBpcyBl
ZmZlY3RpdmVseSBhIG1lbWNweS4KK3ZvaWQgRmFzdEJsaXQoWEltYWdlKiB4X2ltYWdlLAorICAg
ICAgICAgICAgICB1aW50OF90KiBzcmNfcG9zLAorICAgICAgICAgICAgICBjb25zdCBEZXNrdG9w
UmVjdCYgcmVjdCwKKyAgICAgICAgICAgICAgRGVza3RvcEZyYW1lKiBmcmFtZSkgeworICBpbnQg
c3JjX3N0cmlkZSA9IHhfaW1hZ2UtPmJ5dGVzX3Blcl9saW5lOworICBpbnQgZHN0X3ggPSByZWN0
LmxlZnQoKSwgZHN0X3kgPSByZWN0LnRvcCgpOworCisgIHVpbnQ4X3QqIGRzdF9wb3MgPSBmcmFt
ZS0+ZGF0YSgpICsgZnJhbWUtPnN0cmlkZSgpICogZHN0X3k7CisgIGRzdF9wb3MgKz0gZHN0X3gg
KiBEZXNrdG9wRnJhbWU6OmtCeXRlc1BlclBpeGVsOworCisgIGludCBoZWlnaHQgPSByZWN0Lmhl
aWdodCgpOworICBpbnQgcm93X2J5dGVzID0gcmVjdC53aWR0aCgpICogRGVza3RvcEZyYW1lOjpr
Qnl0ZXNQZXJQaXhlbDsKKyAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgeworICAg
IG1lbWNweShkc3RfcG9zLCBzcmNfcG9zLCByb3dfYnl0ZXMpOworICAgIHNyY19wb3MgKz0gc3Jj
X3N0cmlkZTsKKyAgICBkc3RfcG9zICs9IGZyYW1lLT5zdHJpZGUoKTsKKyAgfQorfQorCit2b2lk
IFNsb3dCbGl0KFhJbWFnZSogeF9pbWFnZSwKKyAgICAgICAgICAgICAgdWludDhfdCogc3JjX3Bv
cywKKyAgICAgICAgICAgICAgY29uc3QgRGVza3RvcFJlY3QmIHJlY3QsCisgICAgICAgICAgICAg
IERlc2t0b3BGcmFtZSogZnJhbWUpIHsKKyAgaW50IHNyY19zdHJpZGUgPSB4X2ltYWdlLT5ieXRl
c19wZXJfbGluZTsKKyAgaW50IGRzdF94ID0gcmVjdC5sZWZ0KCksIGRzdF95ID0gcmVjdC50b3Ao
KTsKKyAgaW50IHdpZHRoID0gcmVjdC53aWR0aCgpLCBoZWlnaHQgPSByZWN0LmhlaWdodCgpOwor
CisgIHVpbnQzMl90IHJlZF9tYXNrID0geF9pbWFnZS0+cmVkX21hc2s7CisgIHVpbnQzMl90IGdy
ZWVuX21hc2sgPSB4X2ltYWdlLT5yZWRfbWFzazsKKyAgdWludDMyX3QgYmx1ZV9tYXNrID0geF9p
bWFnZS0+Ymx1ZV9tYXNrOworCisgIHVpbnQzMl90IHJlZF9zaGlmdCA9IE1hc2tUb1NoaWZ0KHJl
ZF9tYXNrKTsKKyAgdWludDMyX3QgZ3JlZW5fc2hpZnQgPSBNYXNrVG9TaGlmdChncmVlbl9tYXNr
KTsKKyAgdWludDMyX3QgYmx1ZV9zaGlmdCA9IE1hc2tUb1NoaWZ0KGJsdWVfbWFzayk7CisKKyAg
aW50IGJpdHNfcGVyX3BpeGVsID0geF9pbWFnZS0+Yml0c19wZXJfcGl4ZWw7CisKKyAgdWludDhf
dCogZHN0X3BvcyA9IGZyYW1lLT5kYXRhKCkgKyBmcmFtZS0+c3RyaWRlKCkgKiBkc3RfeTsKKyAg
ZHN0X3BvcyArPSBkc3RfeCAqIERlc2t0b3BGcmFtZTo6a0J5dGVzUGVyUGl4ZWw7CisgIC8vIFRP
RE8oaGNsYW0pOiBPcHRpbWl6ZSwgcGVyaGFwcyB1c2luZyBNTVggY29kZSBvciBieSBjb252ZXJ0
aW5nIHRvCisgIC8vIFlVViBkaXJlY3RseS4KKyAgLy8gVE9ETyhzZXJnZXl1KTogVGhpcyBjb2Rl
IGRvZXNuJ3QgaGFuZGxlIFhJbWFnZSBieXRlIG9yZGVyIHByb3Blcmx5IGFuZAorICAvLyB3b24n
dCB3b3JrIHdpdGggMjRicHAgaW1hZ2VzLiBGaXggaXQuCisgIGZvciAoaW50IHkgPSAwOyB5IDwg
aGVpZ2h0OyB5KyspIHsKKyAgICB1aW50MzJfdCogZHN0X3Bvc18zMiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihkc3RfcG9zKTsKKyAgICB1aW50MzJfdCogc3JjX3Bvc18zMiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihzcmNfcG9zKTsKKyAgICB1aW50MTZfdCogc3JjX3Bvc18x
NiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihzcmNfcG9zKTsKKyAgICBmb3IgKGludCB4
ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKyAgICAgIC8vIERlcmVmZXJlbmNlIHRocm91Z2ggYW4g
YXBwcm9wcmlhdGVseS1hbGlnbmVkIHBvaW50ZXIuCisgICAgICB1aW50MzJfdCBwaXhlbDsKKyAg
ICAgIGlmIChiaXRzX3Blcl9waXhlbCA9PSAzMikgeworICAgICAgICBwaXhlbCA9IHNyY19wb3Nf
MzJbeF07CisgICAgICB9IGVsc2UgaWYgKGJpdHNfcGVyX3BpeGVsID09IDE2KSB7CisgICAgICAg
IHBpeGVsID0gc3JjX3Bvc18xNlt4XTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHBpeGVsID0g
c3JjX3Bvc1t4XTsKKyAgICAgIH0KKyAgICAgIHVpbnQzMl90IHIgPSAocGl4ZWwgJiByZWRfbWFz
aykgPDwgcmVkX3NoaWZ0OworICAgICAgdWludDMyX3QgZyA9IChwaXhlbCAmIGdyZWVuX21hc2sp
IDw8IGdyZWVuX3NoaWZ0OworICAgICAgdWludDMyX3QgYiA9IChwaXhlbCAmIGJsdWVfbWFzaykg
PDwgYmx1ZV9zaGlmdDsKKyAgICAgIC8vIFdyaXRlIGFzIDMyLWJpdCBSR0IuCisgICAgICBkc3Rf
cG9zXzMyW3hdID0KKyAgICAgICAgICAoKHIgPj4gOCkgJiAweGZmMDAwMCkgfCAoKGcgPj4gMTYp
ICYgMHhmZjAwKSB8ICgoYiA+PiAyNCkgJiAweGZmKTsKKyAgICB9CisgICAgZHN0X3BvcyArPSBm
cmFtZS0+c3RyaWRlKCk7CisgICAgc3JjX3BvcyArPSBzcmNfc3RyaWRlOworICB9Cit9CisKK30g
IC8vIG5hbWVzcGFjZQorCitYU2VydmVyUGl4ZWxCdWZmZXI6OlhTZXJ2ZXJQaXhlbEJ1ZmZlcigp
IHt9CisKK1hTZXJ2ZXJQaXhlbEJ1ZmZlcjo6flhTZXJ2ZXJQaXhlbEJ1ZmZlcigpIHsKKyAgUmVs
ZWFzZSgpOworfQorCit2b2lkIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6UmVsZWFzZSgpIHsKKyAgaWYg
KHhfaW1hZ2VfKSB7CisgICAgWERlc3Ryb3lJbWFnZSh4X2ltYWdlXyk7CisgICAgeF9pbWFnZV8g
PSBudWxscHRyOworICB9CisgIGlmICh4X3NobV9pbWFnZV8pIHsKKyAgICBYRGVzdHJveUltYWdl
KHhfc2htX2ltYWdlXyk7CisgICAgeF9zaG1faW1hZ2VfID0gbnVsbHB0cjsKKyAgfQorICBpZiAo
c2htX3BpeG1hcF8pIHsKKyAgICBYRnJlZVBpeG1hcChkaXNwbGF5Xywgc2htX3BpeG1hcF8pOwor
ICAgIHNobV9waXhtYXBfID0gMDsKKyAgfQorICBpZiAoc2htX2djXykgeworICAgIFhGcmVlR0Mo
ZGlzcGxheV8sIHNobV9nY18pOworICAgIHNobV9nY18gPSBudWxscHRyOworICB9CisKKyAgUmVs
ZWFzZVNoYXJlZE1lbW9yeVNlZ21lbnQoKTsKKworICB3aW5kb3dfID0gMDsKK30KKwordm9pZCBY
U2VydmVyUGl4ZWxCdWZmZXI6OlJlbGVhc2VTaGFyZWRNZW1vcnlTZWdtZW50KCkgeworICBpZiAo
IXNobV9zZWdtZW50X2luZm9fKQorICAgIHJldHVybjsKKyAgaWYgKHNobV9zZWdtZW50X2luZm9f
LT5zaG1hZGRyICE9IG51bGxwdHIpCisgICAgc2htZHQoc2htX3NlZ21lbnRfaW5mb18tPnNobWFk
ZHIpOworICBpZiAoc2htX3NlZ21lbnRfaW5mb18tPnNobWlkICE9IC0xKQorICAgIHNobWN0bChz
aG1fc2VnbWVudF9pbmZvXy0+c2htaWQsIElQQ19STUlELCAwKTsKKyAgZGVsZXRlIHNobV9zZWdt
ZW50X2luZm9fOworICBzaG1fc2VnbWVudF9pbmZvXyA9IG51bGxwdHI7Cit9CisKK2Jvb2wgWFNl
cnZlclBpeGVsQnVmZmVyOjpJbml0KERpc3BsYXkqIGRpc3BsYXksIFdpbmRvdyB3aW5kb3cpIHsK
KyAgUmVsZWFzZSgpOworICBkaXNwbGF5XyA9IGRpc3BsYXk7CisKKyAgWFdpbmRvd0F0dHJpYnV0
ZXMgYXR0cmlidXRlczsKKyAgaWYgKCFHZXRXaW5kb3dSZWN0KGRpc3BsYXlfLCB3aW5kb3csICZ3
aW5kb3dfcmVjdF8sICZhdHRyaWJ1dGVzKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisg
IHdpbmRvd18gPSB3aW5kb3c7CisgIEluaXRTaG0oYXR0cmlidXRlcyk7CisKKyAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgWFNlcnZlclBpeGVsQnVmZmVyOjpJbml0U2htKGNvbnN0IFhXaW5kb3dB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSB7CisgIFZpc3VhbCogZGVmYXVsdF92aXN1YWwgPSBhdHRy
aWJ1dGVzLnZpc3VhbDsKKyAgaW50IGRlZmF1bHRfZGVwdGggPSBhdHRyaWJ1dGVzLmRlcHRoOwor
CisgIGludCBtYWpvciwgbWlub3I7CisgIEJvb2wgaGF2ZV9waXhtYXBzOworICBpZiAoIVhTaG1R
dWVyeVZlcnNpb24oZGlzcGxheV8sICZtYWpvciwgJm1pbm9yLCAmaGF2ZV9waXhtYXBzKSkgewor
ICAgIC8vIFNoYXJlZCBtZW1vcnkgbm90IHN1cHBvcnRlZC4gQ2FwdHVyZVJlY3Qgd2lsbCB1c2Ug
dGhlIFhJbWFnZSBBUEkgaW5zdGVhZC4KKyAgICByZXR1cm47CisgIH0KKworICBib29sIHVzaW5n
X3NobSA9IGZhbHNlOworICBzaG1fc2VnbWVudF9pbmZvXyA9IG5ldyBYU2htU2VnbWVudEluZm87
CisgIHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCA9IC0xOworICBzaG1fc2VnbWVudF9pbmZvXy0+
c2htYWRkciA9IG51bGxwdHI7CisgIHNobV9zZWdtZW50X2luZm9fLT5yZWFkT25seSA9IEZhbHNl
OworICB4X3NobV9pbWFnZV8gPSBYU2htQ3JlYXRlSW1hZ2UoZGlzcGxheV8sIGRlZmF1bHRfdmlz
dWFsLCBkZWZhdWx0X2RlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWlBp
eG1hcCwgMCwgc2htX3NlZ21lbnRfaW5mb18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aW5kb3dfcmVjdF8ud2lkdGgoKSwgd2luZG93X3JlY3RfLmhlaWdodCgpKTsKKyAgaWYg
KHhfc2htX2ltYWdlXykgeworICAgIHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCA9CisgICAgICAg
IHNobWdldChJUENfUFJJVkFURSwgeF9zaG1faW1hZ2VfLT5ieXRlc19wZXJfbGluZSAqIHhfc2ht
X2ltYWdlXy0+aGVpZ2h0LAorICAgICAgICAgICAgICAgSVBDX0NSRUFUIHwgMDYwMCk7CisgICAg
aWYgKHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCAhPSAtMSkgeworICAgICAgdm9pZCogc2htYXRf
cmVzdWx0ID0gc2htYXQoc2htX3NlZ21lbnRfaW5mb18tPnNobWlkLCAwLCAwKTsKKyAgICAgIGlm
IChzaG1hdF9yZXN1bHQgIT0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSB7CisgICAgICAg
IHNobV9zZWdtZW50X2luZm9fLT5zaG1hZGRyID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2ht
YXRfcmVzdWx0KTsKKyAgICAgICAgeF9zaG1faW1hZ2VfLT5kYXRhID0gc2htX3NlZ21lbnRfaW5m
b18tPnNobWFkZHI7CisKKyAgICAgICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXlfKTsK
KyAgICAgICAgdXNpbmdfc2htID0gWFNobUF0dGFjaChkaXNwbGF5Xywgc2htX3NlZ21lbnRfaW5m
b18pOworICAgICAgICBYU3luYyhkaXNwbGF5XywgRmFsc2UpOworICAgICAgICBpZiAoZXJyb3Jf
dHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkKKyAgICAgICAgICB1c2luZ19zaG0g
PSBmYWxzZTsKKyAgICAgICAgaWYgKHVzaW5nX3NobSkgeworICAgICAgICAgIFJUQ19MT0coTFNf
VkVSQk9TRSkKKyAgICAgICAgICAgICAgPDwgIlVzaW5nIFggc2hhcmVkIG1lbW9yeSBzZWdtZW50
ICIgPDwgc2htX3NlZ21lbnRfaW5mb18tPnNobWlkOworICAgICAgICB9CisgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZhaWxlZCB0byBnZXQgc2hh
cmVkIG1lbW9yeSBzZWdtZW50LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQZXJm
b3JtYW5jZSBtYXkgYmUgZGVncmFkZWQuIjsKKyAgICB9CisgIH0KKworICBpZiAoIXVzaW5nX3No
bSkgeworICAgIFJUQ19MT0coTFNfV0FSTklORykKKyAgICAgICAgPDwgIk5vdCB1c2luZyBzaGFy
ZWQgbWVtb3J5LiBQZXJmb3JtYW5jZSBtYXkgYmUgZGVncmFkZWQuIjsKKyAgICBSZWxlYXNlU2hh
cmVkTWVtb3J5U2VnbWVudCgpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChoYXZlX3BpeG1h
cHMpCisgICAgaGF2ZV9waXhtYXBzID0gSW5pdFBpeG1hcHMoZGVmYXVsdF9kZXB0aCk7CisKKyAg
c2htY3RsKHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCwgSVBDX1JNSUQsIDApOworICBzaG1fc2Vn
bWVudF9pbmZvXy0+c2htaWQgPSAtMTsKKworICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICJVc2lu
ZyBYIHNoYXJlZCBtZW1vcnkgZXh0ZW5zaW9uIHYiIDw8IG1ham9yIDw8ICIuIgorICAgICAgICAg
ICAgICAgICAgICAgIDw8IG1pbm9yIDw8ICIgd2l0aCIgPDwgKGhhdmVfcGl4bWFwcyA/ICIiIDog
Im91dCIpCisgICAgICAgICAgICAgICAgICAgICAgPDwgIiBwaXhtYXBzLiI7Cit9CisKK2Jvb2wg
WFNlcnZlclBpeGVsQnVmZmVyOjpJbml0UGl4bWFwcyhpbnQgZGVwdGgpIHsKKyAgaWYgKFhTaG1Q
aXhtYXBGb3JtYXQoZGlzcGxheV8pICE9IFpQaXhtYXApCisgICAgcmV0dXJuIGZhbHNlOworCisg
IHsKKyAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheV8pOworICAgIHNobV9waXhtYXBf
ID0gWFNobUNyZWF0ZVBpeG1hcCgKKyAgICAgICAgZGlzcGxheV8sIHdpbmRvd18sIHNobV9zZWdt
ZW50X2luZm9fLT5zaG1hZGRyLCBzaG1fc2VnbWVudF9pbmZvXywKKyAgICAgICAgd2luZG93X3Jl
Y3RfLndpZHRoKCksIHdpbmRvd19yZWN0Xy5oZWlnaHQoKSwgZGVwdGgpOworICAgIFhTeW5jKGRp
c3BsYXlfLCBGYWxzZSk7CisgICAgaWYgKGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJs
ZSgpICE9IDApIHsKKyAgICAgIC8vIHxzaG1fcGl4bWFwX3wgaXMgbm90IG5vdCB2YWxpZCBiZWNh
dXNlIHRoZSByZXF1ZXN0IHdhcyBub3QgcHJvY2Vzc2VkCisgICAgICAvLyBieSB0aGUgWCBTZXJ2
ZXIsIHNvIHplcm8gaXQuCisgICAgICBzaG1fcGl4bWFwXyA9IDA7CisgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICB9CisKKyAgeworICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5
Xyk7CisgICAgWEdDVmFsdWVzIHNobV9nY192YWx1ZXM7CisgICAgc2htX2djX3ZhbHVlcy5zdWJ3
aW5kb3dfbW9kZSA9IEluY2x1ZGVJbmZlcmlvcnM7CisgICAgc2htX2djX3ZhbHVlcy5ncmFwaGlj
c19leHBvc3VyZXMgPSBGYWxzZTsKKyAgICBzaG1fZ2NfID0gWENyZWF0ZUdDKGRpc3BsYXlfLCB3
aW5kb3dfLAorICAgICAgICAgICAgICAgICAgICAgICAgR0NTdWJ3aW5kb3dNb2RlIHwgR0NHcmFw
aGljc0V4cG9zdXJlcywgJnNobV9nY192YWx1ZXMpOworICAgIFhTeW5jKGRpc3BsYXlfLCBGYWxz
ZSk7CisgICAgaWYgKGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApIHsK
KyAgICAgIFhGcmVlUGl4bWFwKGRpc3BsYXlfLCBzaG1fcGl4bWFwXyk7CisgICAgICBzaG1fcGl4
bWFwXyA9IDA7CisgICAgICBzaG1fZ2NfID0gMDsgIC8vIFNlZSBzaG1fcGl4bWFwXyBjb21tZW50
IGFib3ZlLgorICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVl
OworfQorCitib29sIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6SXNXaW5kb3dWYWxpZCgpIGNvbnN0IHsK
KyAgWFdpbmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgeworICAgIFhFcnJvclRyYXAgZXJy
b3JfdHJhcChkaXNwbGF5Xyk7CisgICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyhkaXNwbGF5
Xywgd2luZG93XywgJmF0dHJpYnV0ZXMpIHx8CisgICAgICAgIGVycm9yX3RyYXAuR2V0TGFzdEVy
cm9yQW5kRGlzYWJsZSgpICE9IDApIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0K
KyAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgWFNlcnZlclBpeGVsQnVmZmVyOjpTeW5jaHJvbml6
ZSgpIHsKKyAgaWYgKHNobV9zZWdtZW50X2luZm9fICYmICFzaG1fcGl4bWFwXykgeworICAgIC8v
IFhTaG1HZXRJbWFnZSBjYW4gZmFpbCBpZiB0aGUgZGlzcGxheSBpcyBiZWluZyByZWNvbmZpZ3Vy
ZWQuCisgICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXlfKTsKKyAgICAvLyBYU2htR2V0
SW1hZ2UgZmFpbHMgaWYgdGhlIHdpbmRvdyBpcyBwYXJ0aWFsbHkgb3V0IG9mIHNjcmVlbi4KKyAg
ICB4c2htX2dldF9pbWFnZV9zdWNjZWVkZWRfID0KKyAgICAgICAgWFNobUdldEltYWdlKGRpc3Bs
YXlfLCB3aW5kb3dfLCB4X3NobV9pbWFnZV8sIDAsIDAsIEFsbFBsYW5lcyk7CisgIH0KK30KKwor
Ym9vbCBYU2VydmVyUGl4ZWxCdWZmZXI6OkNhcHR1cmVSZWN0KGNvbnN0IERlc2t0b3BSZWN0JiBy
ZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2t0b3BGcmFtZSog
ZnJhbWUpIHsKKyAgUlRDX0RDSEVDS19MRShyZWN0LnJpZ2h0KCksIHdpbmRvd19yZWN0Xy53aWR0
aCgpKTsKKyAgUlRDX0RDSEVDS19MRShyZWN0LmJvdHRvbSgpLCB3aW5kb3dfcmVjdF8uaGVpZ2h0
KCkpOworCisgIFhJbWFnZSogaW1hZ2U7CisgIHVpbnQ4X3QqIGRhdGE7CisKKyAgaWYgKHNobV9z
ZWdtZW50X2luZm9fICYmIChzaG1fcGl4bWFwXyB8fCB4c2htX2dldF9pbWFnZV9zdWNjZWVkZWRf
KSkgeworICAgIGlmIChzaG1fcGl4bWFwXykgeworICAgICAgWENvcHlBcmVhKGRpc3BsYXlfLCB3
aW5kb3dfLCBzaG1fcGl4bWFwXywgc2htX2djXywgcmVjdC5sZWZ0KCksCisgICAgICAgICAgICAg
ICAgcmVjdC50b3AoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCByZWN0LmxlZnQoKSwK
KyAgICAgICAgICAgICAgICByZWN0LnRvcCgpKTsKKyAgICAgIFhTeW5jKGRpc3BsYXlfLCBGYWxz
ZSk7CisgICAgfQorCisgICAgaW1hZ2UgPSB4X3NobV9pbWFnZV87CisgICAgZGF0YSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGltYWdlLT5kYXRhKSArCisgICAgICAgICAgIHJlY3QudG9w
KCkgKiBpbWFnZS0+Ynl0ZXNfcGVyX2xpbmUgKworICAgICAgICAgICByZWN0LmxlZnQoKSAqIGlt
YWdlLT5iaXRzX3Blcl9waXhlbCAvIDg7CisKKyAgfSBlbHNlIHsKKyAgICBpZiAoeF9pbWFnZV8p
CisgICAgICBYRGVzdHJveUltYWdlKHhfaW1hZ2VfKTsKKyAgICB4X2ltYWdlXyA9IFhHZXRJbWFn
ZShkaXNwbGF5Xywgd2luZG93XywgcmVjdC5sZWZ0KCksIHJlY3QudG9wKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBBbGxQbGFuZXMsIFpQ
aXhtYXApOworICAgIGlmICgheF9pbWFnZV8pCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
bWFnZSA9IHhfaW1hZ2VfOworICAgIGRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihp
bWFnZS0+ZGF0YSk7CisgIH0KKworICBpZiAoSXNYSW1hZ2VSR0JGb3JtYXQoaW1hZ2UpKSB7Cisg
ICAgRmFzdEJsaXQoaW1hZ2UsIGRhdGEsIHJlY3QsIGZyYW1lKTsKKyAgfSBlbHNlIHsKKyAgICBT
bG93QmxpdChpbWFnZSwgZGF0YSwgcmVjdCwgZnJhbWUpOworICB9CisKKyAgcmV0dXJuIHRydWU7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4
L3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgveF9zZXJ2ZXJfcGl4ZWxf
YnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkzOThkYWM5OTY4MDE2OTgxZjNlM2ZlYTU3YTNlODZlNWJk
NDlmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfc2VydmVyX3BpeGVsX2J1
ZmZlci5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisvLyBEb24n
dCBpbmNsdWRlIHRoaXMgZmlsZSBpbiBhbnkgLmggZmlsZXMgYmVjYXVzZSBpdCBwdWxscyBpbiBz
b21lIFggaGVhZGVycy4KKworI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9Y
X1NFUlZFUl9QSVhFTF9CVUZGRVJfSF8KKyNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVf
TElOVVhfWF9TRVJWRVJfUElYRUxfQlVGRkVSX0hfCisKKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4K
KyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YU2htLmg+CisKKyNpbmNsdWRlICJtb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9kZXNrdG9wX2dlb21ldHJ5LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY29u
c3RydWN0b3JtYWdpYy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgRGVza3RvcEZy
YW1lOworCisvLyBBIGNsYXNzIHRvIGFsbG93IHRoZSBYIHNlcnZlcidzIHBpeGVsIGJ1ZmZlciB0
byBiZSBhY2Nlc3NlZCBhcyBlZmZpY2llbnRseQorLy8gYXMgcG9zc2libGUuCitjbGFzcyBYU2Vy
dmVyUGl4ZWxCdWZmZXIgeworIHB1YmxpYzoKKyAgWFNlcnZlclBpeGVsQnVmZmVyKCk7CisgIH5Y
U2VydmVyUGl4ZWxCdWZmZXIoKTsKKworICB2b2lkIFJlbGVhc2UoKTsKKworICAvLyBBbGxvY2F0
ZSAob3IgcmVhbGxvY2F0ZSkgdGhlIHBpeGVsIGJ1ZmZlciBmb3IgfHdpbmRvd3wuIFJldHVybnMg
ZmFsc2UgaW4KKyAgLy8gY2FzZSBvZiBhbiBlcnJvciAoZS5nLiB3aW5kb3cgZG9lc24ndCBleGlz
dCkuCisgIGJvb2wgSW5pdChEaXNwbGF5KiBkaXNwbGF5LCBXaW5kb3cgd2luZG93KTsKKworICBi
b29sIGlzX2luaXRpYWxpemVkKCkgeyByZXR1cm4gd2luZG93XyAhPSAwOyB9CisKKyAgLy8gUmV0
dXJucyB0aGUgc2l6ZSBvZiB0aGUgd2luZG93IHRoZSBidWZmZXIgd2FzIGluaXRpYWxpemVkIGZv
ci4KKyAgRGVza3RvcFNpemUgd2luZG93X3NpemUoKSB7IHJldHVybiB3aW5kb3dfcmVjdF8uc2l6
ZSgpOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgcmVjdGFuZ2xlIG9mIHRoZSB3aW5kb3cgdGhlIGJ1
ZmZlciB3YXMgaW5pdGlhbGl6ZWQgZm9yLgorICBjb25zdCBEZXNrdG9wUmVjdCYgd2luZG93X3Jl
Y3QoKSB7IHJldHVybiB3aW5kb3dfcmVjdF87IH0KKworICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IHdpbmRvdyBjYW4gYmUgZm91bmQuCisgIGJvb2wgSXNXaW5kb3dWYWxpZCgpIGNvbnN0OworCisg
IC8vIElmIHNoYXJlZCBtZW1vcnkgaXMgYmVpbmcgdXNlZCB3aXRob3V0IHBpeG1hcHMsIHN5bmNo
cm9uaXplIHRoaXMgcGl4ZWwKKyAgLy8gYnVmZmVyIHdpdGggdGhlIHJvb3Qgd2luZG93IGNvbnRl
bnRzIChvdGhlcndpc2UsIHRoaXMgaXMgYSBuby1vcCkuCisgIC8vIFRoaXMgaXMgdG8gYXZvaWQg
ZG9pbmcgYSBmdWxsLXNjcmVlbiBjYXB0dXJlIGZvciBlYWNoIGluZGl2aWR1YWwKKyAgLy8gcmVj
dGFuZ2xlIGluIHRoZSBjYXB0dXJlIGxpc3QsIHdoZW4gaXQgb25seSBuZWVkcyB0byBiZSBkb25l
IG9uY2UgYXQgdGhlCisgIC8vIGJlZ2lubmluZy4KKyAgdm9pZCBTeW5jaHJvbml6ZSgpOworCisg
IC8vIENhcHR1cmUgdGhlIHNwZWNpZmllZCByZWN0YW5nbGUgYW5kIHN0b3JlcyBpdCBpbiB0aGUg
fGZyYW1lfC4gSW4gdGhlIGNhc2UKKyAgLy8gd2hlcmUgdGhlIGZ1bGwtc2NyZWVuIGRhdGEgaXMg
Y2FwdHVyZWQgYnkgU3luY2hyb25pemUoKSwgdGhpcyBzaW1wbHkKKyAgLy8gcmV0dXJucyB0aGUg
cG9pbnRlciB3aXRob3V0IGRvaW5nIGFueSBtb3JlIHdvcmsuIFRoZSBjYWxsZXIgbXVzdCBlbnN1
cmUKKyAgLy8gdGhhdCB8cmVjdHwgaXMgbm90IGxhcmdlciB0aGFuIHdpbmRvd19zaXplKCkuCisg
IGJvb2wgQ2FwdHVyZVJlY3QoY29uc3QgRGVza3RvcFJlY3QmIHJlY3QsIERlc2t0b3BGcmFtZSog
ZnJhbWUpOworCisgcHJpdmF0ZToKKyAgdm9pZCBSZWxlYXNlU2hhcmVkTWVtb3J5U2VnbWVudCgp
OworCisgIHZvaWQgSW5pdFNobShjb25zdCBYV2luZG93QXR0cmlidXRlcyYgYXR0cmlidXRlcyk7
CisgIGJvb2wgSW5pdFBpeG1hcHMoaW50IGRlcHRoKTsKKworICBEaXNwbGF5KiBkaXNwbGF5XyA9
IG51bGxwdHI7CisgIFdpbmRvdyB3aW5kb3dfID0gMDsKKyAgRGVza3RvcFJlY3Qgd2luZG93X3Jl
Y3RfOworICBYSW1hZ2UqIHhfaW1hZ2VfID0gbnVsbHB0cjsKKyAgWFNobVNlZ21lbnRJbmZvKiBz
aG1fc2VnbWVudF9pbmZvXyA9IG51bGxwdHI7CisgIFhJbWFnZSogeF9zaG1faW1hZ2VfID0gbnVs
bHB0cjsKKyAgUGl4bWFwIHNobV9waXhtYXBfID0gMDsKKyAgR0Mgc2htX2djXyA9IG51bGxwdHI7
CisgIGJvb2wgeHNobV9nZXRfaW1hZ2Vfc3VjY2VlZGVkXyA9IGZhbHNlOworCisgIFJUQ19ESVNB
TExPV19DT1BZX0FORF9BU1NJR04oWFNlcnZlclBpeGVsQnVmZmVyKTsKK307CisKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5V
WF9YX1NFUlZFUl9QSVhFTF9CVUZGRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21hYy9kZXNr
dG9wX2NvbmZpZ3VyYXRpb25fbW9uaXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21hYy9kZXNrdG9wX2NvbmZp
Z3VyYXRpb25fbW9uaXRvci5jYwppbmRleCBkNDM2NGJlZGMyYmU1ZTNkNmZkY2I1NWRiM2ZhNzNl
MWIyNDk3MWFhLi45YTMyZjYzOGQ4ZmRiOWYzYWJjMWVjNDM0NDI5MjgwMjE0MTZiNjJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9tYWMvZGVza3RvcF9jb25maWd1cmF0aW9uX21vbml0b3IuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvbWFjL2Rlc2t0b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmNjCkBAIC0xNywx
OSArMTcsMTIgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLS8vIFRoZSBhbW91bnQgb2YgdGlt
ZSBhbGxvd2VkIGZvciBkaXNwbGF5cyB0byByZWNvbmZpZ3VyZS4KLXN0YXRpYyBjb25zdCBpbnQ2
NF90IGtEaXNwbGF5Q29uZmlndXJhdGlvbkV2ZW50VGltZW91dE1zID0gMTAgKiAxMDAwOwotCi1E
ZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3I6OkRlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcigp
Ci0gICAgOiBkaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2FwdHVyZV9ldmVudF8oRXZlbnRXcmFwcGVy
OjpDcmVhdGUoKSkgeworRGVza3RvcENvbmZpZ3VyYXRpb25Nb25pdG9yOjpEZXNrdG9wQ29uZmln
dXJhdGlvbk1vbml0b3IoKSB7CiAgIENHRXJyb3IgZXJyID0gQ0dEaXNwbGF5UmVnaXN0ZXJSZWNv
bmZpZ3VyYXRpb25DYWxsYmFjaygKICAgICAgIERlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcjo6
RGlzcGxheXNSZWNvbmZpZ3VyZWRDYWxsYmFjaywgdGhpcyk7Ci0gIGlmIChlcnIgIT0ga0NHRXJy
b3JTdWNjZXNzKSB7CisgIGlmIChlcnIgIT0ga0NHRXJyb3JTdWNjZXNzKQogICAgIFJUQ19MT0co
TFNfRVJST1IpIDw8ICJDR0Rpc3BsYXlSZWdpc3RlclJlY29uZmlndXJhdGlvbkNhbGxiYWNrICIg
PDwgZXJyOwotICAgIGFib3J0KCk7Ci0gIH0KLSAgZGlzcGxheV9jb25maWd1cmF0aW9uX2NhcHR1
cmVfZXZlbnRfLT5TZXQoKTsKLQorICBydGM6OkNyaXRTY29wZSBjcygmZGVza3RvcF9jb25maWd1
cmF0aW9uX2xvY2tfKTsKICAgZGVza3RvcF9jb25maWd1cmF0aW9uXyA9IE1hY0Rlc2t0b3BDb25m
aWd1cmF0aW9uOjpHZXRDdXJyZW50KAogICAgICAgTWFjRGVza3RvcENvbmZpZ3VyYXRpb246OlRv
cExlZnRPcmlnaW4pOwogfQpAQCAtNDEsMTkgKzM0LDEzIEBAIERlc2t0b3BDb25maWd1cmF0aW9u
TW9uaXRvcjo6fkRlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcigpIHsKICAgICBSVENfTE9HKExT
X0VSUk9SKSA8PCAiQ0dEaXNwbGF5UmVtb3ZlUmVjb25maWd1cmF0aW9uQ2FsbGJhY2sgIiA8PCBl
cnI7CiB9CiAKLXZvaWQgRGVza3RvcENvbmZpZ3VyYXRpb25Nb25pdG9yOjpMb2NrKCkgewotICBp
ZiAoIWRpc3BsYXlfY29uZmlndXJhdGlvbl9jYXB0dXJlX2V2ZW50Xy0+V2FpdCgKLSAgICAgICAg
ICBrRGlzcGxheUNvbmZpZ3VyYXRpb25FdmVudFRpbWVvdXRNcykpIHsKLSAgICBSVENfTE9HX0Yo
TFNfRVJST1IpIDw8ICJFdmVudCB3YWl0IHRpbWVkIG91dC4iOwotICAgIGFib3J0KCk7Ci0gIH0K
LX0KLQotdm9pZCBEZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3I6OlVubG9jaygpIHsKLSAgZGlz
cGxheV9jb25maWd1cmF0aW9uX2NhcHR1cmVfZXZlbnRfLT5TZXQoKTsKK01hY0Rlc2t0b3BDb25m
aWd1cmF0aW9uIERlc2t0b3BDb25maWd1cmF0aW9uTW9uaXRvcjo6ZGVza3RvcF9jb25maWd1cmF0
aW9uKCkgeworICBydGM6OkNyaXRTY29wZSBjcml0KCZkZXNrdG9wX2NvbmZpZ3VyYXRpb25fbG9j
a18pOworICByZXR1cm4gZGVza3RvcF9jb25maWd1cmF0aW9uXzsKIH0KIAogLy8gc3RhdGljCisv
LyBUaGlzIG1ldGhvZCBtYXkgYmUgY2FsbGVkIG9uIGFueSBzeXN0ZW0gdGhyZWFkLgogdm9pZCBE
ZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3I6OkRpc3BsYXlzUmVjb25maWd1cmVkQ2FsbGJhY2so
CiAgICAgQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSwKICAgICBDR0Rpc3BsYXlDaGFuZ2VTdW1t
YXJ5RmxhZ3MgZmxhZ3MsCkBAIC03MiwyNCArNTksMTUgQEAgdm9pZCBEZXNrdG9wQ29uZmlndXJh
dGlvbk1vbml0b3I6OkRpc3BsYXlzUmVjb25maWd1cmVkKAogICAgICAgICAgICAgICAgICAgIDw8
IGZsYWdzOwogCiAgIGlmIChmbGFncyAmIGtDR0Rpc3BsYXlCZWdpbkNvbmZpZ3VyYXRpb25GbGFn
KSB7Ci0gICAgaWYgKHJlY29uZmlndXJpbmdfZGlzcGxheXNfLmVtcHR5KCkpIHsKLSAgICAgIC8v
IElmIHRoaXMgaXMgdGhlIGZpcnN0IGRpc3BsYXkgdG8gc3RhcnQgcmVjb25maWd1cmluZyB0aGVu
IHdhaXQgb24KLSAgICAgIC8vIHxkaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2FwdHVyZV9ldmVudF98
IHRvIGJsb2NrIHRoZSBjYXB0dXJlIHRocmVhZAotICAgICAgLy8gZnJvbSBhY2Nlc3NpbmcgZGlz
cGxheSBtZW1vcnkgdW50aWwgdGhlIHJlY29uZmlndXJhdGlvbiBjb21wbGV0ZXMuCi0gICAgICBp
ZiAoIWRpc3BsYXlfY29uZmlndXJhdGlvbl9jYXB0dXJlX2V2ZW50Xy0+V2FpdCgKLSAgICAgICAg
ICAgICAga0Rpc3BsYXlDb25maWd1cmF0aW9uRXZlbnRUaW1lb3V0TXMpKSB7Ci0gICAgICAgIFJU
Q19MT0dfRihMU19FUlJPUikgPDwgIkV2ZW50IHdhaXQgdGltZWQgb3V0LiI7Ci0gICAgICAgIGFi
b3J0KCk7Ci0gICAgICB9Ci0gICAgfQogICAgIHJlY29uZmlndXJpbmdfZGlzcGxheXNfLmluc2Vy
dChkaXNwbGF5KTsKLSAgfSBlbHNlIHsKLSAgICByZWNvbmZpZ3VyaW5nX2Rpc3BsYXlzXy5lcmFz
ZShkaXNwbGF5KTsKLSAgICBpZiAocmVjb25maWd1cmluZ19kaXNwbGF5c18uZW1wdHkoKSkgewot
ICAgICAgZGVza3RvcF9jb25maWd1cmF0aW9uXyA9IE1hY0Rlc2t0b3BDb25maWd1cmF0aW9uOjpH
ZXRDdXJyZW50KAotICAgICAgICAgIE1hY0Rlc2t0b3BDb25maWd1cmF0aW9uOjpUb3BMZWZ0T3Jp
Z2luKTsKLSAgICAgIGRpc3BsYXlfY29uZmlndXJhdGlvbl9jYXB0dXJlX2V2ZW50Xy0+U2V0KCk7
Ci0gICAgfQorICAgIHJldHVybjsKKyAgfQorCisgIHJlY29uZmlndXJpbmdfZGlzcGxheXNfLmVy
YXNlKGRpc3BsYXkpOworICBpZiAocmVjb25maWd1cmluZ19kaXNwbGF5c18uZW1wdHkoKSkgewor
ICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZkZXNrdG9wX2NvbmZpZ3VyYXRpb25fbG9ja18pOworICAg
IGRlc2t0b3BfY29uZmlndXJhdGlvbl8gPSBNYWNEZXNrdG9wQ29uZmlndXJhdGlvbjo6R2V0Q3Vy
cmVudCgKKyAgICAgICAgTWFjRGVza3RvcENvbmZpZ3VyYXRpb246OlRvcExlZnRPcmlnaW4pOwog
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21hYy9kZXNrdG9wX2NvbmZpZ3VyYXRpb25f
bW9uaXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvbWFjL2Rlc2t0b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmgK
aW5kZXggNTIxNWU1NDk2YWRlOGQyYjAxMmNiMGM1ODJmOTU1YmI0ZDAyYjYzNC4uY2JmNTgwYjIz
NTMwMWY2YTM3ZmQzODllZmFkOWQ3NWExZGI3OTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbWFj
L2Rlc2t0b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbWFjL2Rlc2t0
b3BfY29uZmlndXJhdGlvbl9tb25pdG9yLmgKQEAgLTE5LDI1ICsxOSwxNyBAQAogI2luY2x1ZGUg
ImFwaS9yZWZjb3VudGVkYmFzZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L21hYy9kZXNrdG9wX2NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1
Y3Rvcm1hZ2ljLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBFdmVudFdyYXBwZXI7Ci0KIC8vIFRoZSBjbGFzcyBw
cm92aWRlcyBmdW5jdGlvbnMgdG8gc3luY2hyb25pemUgY2FwdHVyaW5nIGFuZCBkaXNwbGF5CiAv
LyByZWNvbmZpZ3VyaW5nIGFjcm9zcyB0aHJlYWRzLCBhbmQgdGhlIHVwLXRvLWRhdGUgTWFjRGVz
a3RvcENvbmZpZ3VyYXRpb24uCiBjbGFzcyBEZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3IgOiBw
dWJsaWMgcnRjOjpSZWZDb3VudGVkQmFzZSB7CiAgcHVibGljOgogICBEZXNrdG9wQ29uZmlndXJh
dGlvbk1vbml0b3IoKTsKLSAgLy8gQWNxdWlyZXMgYSBsb2NrIG9uIHRoZSBjdXJyZW50IGNvbmZp
Z3VyYXRpb24uCi0gIHZvaWQgTG9jaygpOwotICAvLyBSZWxlYXNlcyB0aGUgbG9jayBwcmV2aW91
c2x5IGFjcXVpcmVkLgotICB2b2lkIFVubG9jaygpOwotICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50
IGRlc2t0b3AgY29uZmlndXJhdGlvbi4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlCi0g
IC8vIGxvY2sgaGFzIGJlZW4gYWNxdWlyZWQuCi0gIGNvbnN0IE1hY0Rlc2t0b3BDb25maWd1cmF0
aW9uJiBkZXNrdG9wX2NvbmZpZ3VyYXRpb24oKSB7Ci0gICAgcmV0dXJuIGRlc2t0b3BfY29uZmln
dXJhdGlvbl87Ci0gIH0KKyAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBkZXNrdG9wIGNvbmZpZ3Vy
YXRpb24uCisgIE1hY0Rlc2t0b3BDb25maWd1cmF0aW9uIGRlc2t0b3BfY29uZmlndXJhdGlvbigp
OwogCiAgcHJvdGVjdGVkOgogICB+RGVza3RvcENvbmZpZ3VyYXRpb25Nb25pdG9yKCkgb3ZlcnJp
ZGU7CkBAIC00OSw5ICs0MSwxMCBAQCBjbGFzcyBEZXNrdG9wQ29uZmlndXJhdGlvbk1vbml0b3Ig
OiBwdWJsaWMgcnRjOjpSZWZDb3VudGVkQmFzZSB7CiAgIHZvaWQgRGlzcGxheXNSZWNvbmZpZ3Vy
ZWQoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MgZmxhZ3MpOwogCisgIHJ0Yzo6Q3JpdGljYWxT
ZWN0aW9uIGRlc2t0b3BfY29uZmlndXJhdGlvbl9sb2NrXzsKKyAgTWFjRGVza3RvcENvbmZpZ3Vy
YXRpb24gZGVza3RvcF9jb25maWd1cmF0aW9uXworICAgICAgUlRDX0dVQVJERURfQlkoJmRlc2t0
b3BfY29uZmlndXJhdGlvbl9sb2NrXyk7CiAgIHN0ZDo6c2V0PENHRGlyZWN0RGlzcGxheUlEPiBy
ZWNvbmZpZ3VyaW5nX2Rpc3BsYXlzXzsKLSAgTWFjRGVza3RvcENvbmZpZ3VyYXRpb24gZGVza3Rv
cF9jb25maWd1cmF0aW9uXzsKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gZGlzcGxh
eV9jb25maWd1cmF0aW9uX2NhcHR1cmVfZXZlbnRfOwogCiAgIFJUQ19ESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oRGVza3RvcENvbmZpZ3VyYXRpb25Nb25pdG9yKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9tYWMvc2NyZWVuX2NhcHR1cmVyX21hYy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21hYy9zY3JlZW5f
Y2FwdHVyZXJfbWFjLm1tCmluZGV4IDBkNGZhMDcyYjVmNjQzM2FmMDA4MjJlMmEzNzYzNzhmNTFm
NDNmMjguLjU0MmQxYzVmNDNmZTc0ZmE4MGQ1ZmE1MmYzOWU3MDRkOWE0Mzg3NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL21hYy9zY3JlZW5fY2FwdHVyZXJfbWFjLm1tCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21h
Yy9zY3JlZW5fY2FwdHVyZXJfbWFjLm1tCkBAIC0xNjcsMTEgKzE2Nyw3IEBAIFNjcmVlbkNhcHR1
cmVyTWFjOjp+U2NyZWVuQ2FwdHVyZXJNYWMoKSB7CiAKIGJvb2wgU2NyZWVuQ2FwdHVyZXJNYWM6
OkluaXQoKSB7CiAgIFRSQUNFX0VWRU5UMCgid2VicnRjIiwgIlNjcmVlbkNhcHR1cmVyTWFjOjpJ
bml0Iik7Ci0KLSAgZGVza3RvcF9jb25maWdfbW9uaXRvcl8tPkxvY2soKTsKICAgZGVza3RvcF9j
b25maWdfID0gZGVza3RvcF9jb25maWdfbW9uaXRvcl8tPmRlc2t0b3BfY29uZmlndXJhdGlvbigp
OwotICBkZXNrdG9wX2NvbmZpZ19tb25pdG9yXy0+VW5sb2NrKCk7Ci0KICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTIwNyw3ICsyMDMsNiBAQCB2b2lkIFNjcmVlbkNhcHR1cmVyTWFjOjpDYXB0dXJl
RnJhbWUoKSB7CiAgIHF1ZXVlXy5Nb3ZlVG9OZXh0RnJhbWUoKTsKICAgUlRDX0RDSEVDSyghcXVl
dWVfLmN1cnJlbnRfZnJhbWUoKSB8fCAhcXVldWVfLmN1cnJlbnRfZnJhbWUoKS0+SXNTaGFyZWQo
KSk7CiAKLSAgZGVza3RvcF9jb25maWdfbW9uaXRvcl8tPkxvY2soKTsKICAgTWFjRGVza3RvcENv
bmZpZ3VyYXRpb24gbmV3X2NvbmZpZyA9IGRlc2t0b3BfY29uZmlnX21vbml0b3JfLT5kZXNrdG9w
X2NvbmZpZ3VyYXRpb24oKTsKICAgaWYgKCFkZXNrdG9wX2NvbmZpZ18uRXF1YWxzKG5ld19jb25m
aWcpKSB7CiAgICAgZGVza3RvcF9jb25maWdfID0gbmV3X2NvbmZpZzsKQEAgLTIzNCw3ICsyMjks
NiBAQCB2b2lkIFNjcmVlbkNhcHR1cmVyTWFjOjpDYXB0dXJlRnJhbWUoKSB7CiAgIERlc2t0b3BG
cmFtZSogY3VycmVudF9mcmFtZSA9IHF1ZXVlXy5jdXJyZW50X2ZyYW1lKCk7CiAKICAgaWYgKCFD
Z0JsaXQoKmN1cnJlbnRfZnJhbWUsIHJlZ2lvbikpIHsKLSAgICBkZXNrdG9wX2NvbmZpZ19tb25p
dG9yXy0+VW5sb2NrKCk7CiAgICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpF
UlJPUl9QRVJNQU5FTlQsIG51bGxwdHIpOwogICAgIHJldHVybjsKICAgfQpAQCAtMjU2LDEwICsy
NTAsNiBAQCB2b2lkIFNjcmVlbkNhcHR1cmVyTWFjOjpDYXB0dXJlRnJhbWUoKSB7CiAKICAgaGVs
cGVyXy5zZXRfc2l6ZV9tb3N0X3JlY2VudChuZXdfZnJhbWUtPnNpemUoKSk7CiAKLSAgLy8gU2ln
bmFsIHRoYXQgd2UgYXJlIGRvbmUgY2FwdHVyaW5nIGRhdGEgZnJvbSB0aGUgZGlzcGxheSBmcmFt
ZWJ1ZmZlciwKLSAgLy8gYW5kIGFjY2Vzc2luZyBkaXNwbGF5IHN0cnVjdHVyZXMuCi0gIGRlc2t0
b3BfY29uZmlnX21vbml0b3JfLT5VbmxvY2soKTsKLQogICBuZXdfZnJhbWUtPnNldF9jYXB0dXJl
X3RpbWVfbXMoKHJ0Yzo6VGltZU5hbm9zKCkgLSBjYXB0dXJlX3N0YXJ0X3RpbWVfbmFub3MpIC8K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6a051bU5hbm9zZWNzUGVyTWls
bGlzZWMpOwogICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OlNVQ0NFU1MsIHN0
ZDo6bW92ZShuZXdfZnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9t
b25pdG9yX2xpbnV4LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2VfY3Vyc29yX21vbml0b3JfbGludXguY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGVmMzQ0ZWY0MDhhNjk2MjcwNmMxZTk0MDg0ZDIwN2RhYTY4N2NiYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25pdG9yX2xpbnV4LmNjCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJtb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3JfbW9uaXRvci5oIgorCisjaWYgZGVmaW5lZChVU0Vf
WDExKQorI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L21vdXNlX2N1cnNv
cl9tb25pdG9yX3gxMS5oIgorI2VuZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCisKK25hbWVzcGFj
ZSB3ZWJydGMgeworCisvLyBzdGF0aWMKK01vdXNlQ3Vyc29yTW9uaXRvciogTW91c2VDdXJzb3JN
b25pdG9yOjpDcmVhdGVGb3JXaW5kb3coCisgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25z
JiBvcHRpb25zLAorICAgIFdpbmRvd0lkIHdpbmRvdykgeworI2lmIGRlZmluZWQoVVNFX1gxMSkK
KyAgcmV0dXJuIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6Q3JlYXRlRm9yV2luZG93KG9wdGlvbnMs
IHdpbmRvdyk7CisjZWxzZQorICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAgLy8gZGVmaW5lZChV
U0VfWDExKQorfQorCisvLyBzdGF0aWMKK01vdXNlQ3Vyc29yTW9uaXRvciogTW91c2VDdXJzb3JN
b25pdG9yOjpDcmVhdGVGb3JTY3JlZW4oCisgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25z
JiBvcHRpb25zLAorICAgIFNjcmVlbklkIHNjcmVlbikgeworI2lmIGRlZmluZWQoVVNFX1gxMSkK
KyAgcmV0dXJuIE1vdXNlQ3Vyc29yTW9uaXRvclgxMTo6Q3JlYXRlRm9yU2NyZWVuKG9wdGlvbnMs
IHNjcmVlbik7CisjZWxzZQorICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAgLy8gZGVmaW5lZChV
U0VfWDExKQorfQorCisvLyBzdGF0aWMKK3N0ZDo6dW5pcXVlX3B0cjxNb3VzZUN1cnNvck1vbml0
b3I+IE1vdXNlQ3Vyc29yTW9uaXRvcjo6Q3JlYXRlKAorICAgIGNvbnN0IERlc2t0b3BDYXB0dXJl
T3B0aW9ucyYgb3B0aW9ucykgeworI2lmIGRlZmluZWQoVVNFX1gxMSkKKyAgcmV0dXJuIE1vdXNl
Q3Vyc29yTW9uaXRvclgxMTo6Q3JlYXRlKG9wdGlvbnMpOworI2Vsc2UKKyAgcmV0dXJuIG51bGxw
dHI7CisjZW5kaWYgIC8vIGRlZmluZWQoVVNFX1gxMSkKK30KKworfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbW91c2VfY3Vyc29yX21vbml0b3JfbWFjLm1tIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvbW91c2VfY3Vyc29yX21vbml0b3JfbWFjLm1tCmluZGV4IGRlODg3NjQzOGY4YTk4
NjBlOWI1NDBjZTllOGZkZDE2NWM3ODVmYjcuLjM0MDJhNWZmYmJjYmUwNDBkZDE1M2JhZjRmNGNk
ZGNiZmM2ZTM5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25pdG9yX21h
Yy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3JfbW9uaXRvcl9tYWMubW0KQEAgLTExNywx
MCArMTE3LDggQEAgdm9pZCBNb3VzZUN1cnNvck1vbml0b3JNYWM6OkNhcHR1cmUoKSB7CiAKICAg
RGVza3RvcFZlY3RvciBwb3NpdGlvbihnY19wb3NpdGlvbi54LCBnY19wb3NpdGlvbi55KTsKIAot
ICBjb25maWd1cmF0aW9uX21vbml0b3JfLT5Mb2NrKCk7CiAgIE1hY0Rlc2t0b3BDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24gPQogICAgICAgY29uZmlndXJhdGlvbl9tb25pdG9yXy0+ZGVza3Rv
cF9jb25maWd1cmF0aW9uKCk7Ci0gIGNvbmZpZ3VyYXRpb25fbW9uaXRvcl8tPlVubG9jaygpOwog
ICBmbG9hdCBzY2FsZSA9IEdldFNjYWxlRmFjdG9yQXRQb3NpdGlvbihjb25maWd1cmF0aW9uLCBw
b3NpdGlvbik7CiAKICAgQ2FwdHVyZUltYWdlKHNjYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L21vdXNlX2N1cnNvcl9tb25pdG9yX3gxMS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvcl9tb25p
dG9yX3gxMS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE3NDliZDI4NDFiYjVm
NmFhZGIyNzZiYjQyOWU1MGE0ODRiNmE0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3VzZV9jdXJzb3JfbW9uaXRvcl94MTEuY2MKKysr
IC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTMg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNp
bmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9tb3Vz
ZV9jdXJzb3JfbW9uaXRvci5oIgotCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLSNpbmNsdWRlIDxY
MTEvWHV0aWwuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZml4ZXMuaD4KLQotI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgiCi0j
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX3R5cGVzLmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oIgotI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL21vdXNlX2N1cnNvci5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2Vycm9yX3RyYXAuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSB7Ci0KLS8vIFdpbmRvd0NhcHR1cmVyIHJl
dHVybnMgd2luZG93IElEcyBvZiBYMTEgd2luZG93cyB3aXRoIFdNX1NUQVRFIGF0dHJpYnV0ZS4K
LS8vIFRoZXNlIHdpbmRvd3MgbWF5IG5vdCBiZSBpbW1lZGlhdGUgY2hpbGRyZW4gb2YgdGhlIHJv
b3Qgd2luZG93LCBiZWNhdXNlCi0vLyB3aW5kb3cgbWFuYWdlcnMgbWF5IHJlLXBhcmVudCB0aGVt
IHRvIGFkZCBkZWNvcmF0aW9ucy4gSG93ZXZlciwKLS8vIFhRdWVyeVBvaW50ZXIoKSBleHBlY3Rz
IHRvIGJlIHBhc3NlZCBjaGlsZHJlbiBvZiB0aGUgcm9vdC4gVGhpcyBmdW5jdGlvbgotLy8gc2Vh
cmNoZXMgdXAgdGhlIGxpc3Qgb2YgdGhlIHdpbmRvd3MgdG8gZmluZCB0aGUgcm9vdCBjaGlsZCB0
aGF0IGNvcnJlc3BvbmRzCi0vLyB0byB8d2luZG93fC4KLVdpbmRvdyBHZXRUb3BMZXZlbFdpbmRv
dyhEaXNwbGF5KiBkaXNwbGF5LCBXaW5kb3cgd2luZG93KSB7Ci0gIHdoaWxlICh0cnVlKSB7Ci0g
ICAgLy8gSWYgdGhlIHdpbmRvdyBpcyBpbiBXaXRoZHJhd25TdGF0ZSB0aGVuIGxvb2sgYXQgYWxs
IG9mIGl0cyBjaGlsZHJlbi4KLSAgICA6OldpbmRvdyByb290LCBwYXJlbnQ7Ci0gICAgOjpXaW5k
b3cqIGNoaWxkcmVuOwotICAgIHVuc2lnbmVkIGludCBudW1fY2hpbGRyZW47Ci0gICAgaWYgKCFY
UXVlcnlUcmVlKGRpc3BsYXksIHdpbmRvdywgJnJvb3QsICZwYXJlbnQsICZjaGlsZHJlbiwKLSAg
ICAgICAgICAgICAgICAgICAgJm51bV9jaGlsZHJlbikpIHsKLSAgICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJGYWlsZWQgdG8gcXVlcnkgZm9yIGNoaWxkIHdpbmRvd3MgYWx0aG91Z2ggd2luZG93
IgotICAgICAgICAgICAgICAgICAgICAgICAgPDwgImRvZXMgbm90IGhhdmUgYSB2YWxpZCBXTV9T
VEFURS4iOwotICAgICAgcmV0dXJuIE5vbmU7Ci0gICAgfQotICAgIGlmIChjaGlsZHJlbikKLSAg
ICAgIFhGcmVlKGNoaWxkcmVuKTsKLQotICAgIGlmIChwYXJlbnQgPT0gcm9vdCkKLSAgICAgIGJy
ZWFrOwotCi0gICAgd2luZG93ID0gcGFyZW50OwotICB9Ci0KLSAgcmV0dXJuIHdpbmRvdzsKLX0K
LQotfSAgLy8gbmFtZXNwYWNlCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1jbGFzcyBNb3VzZUN1
cnNvck1vbml0b3JYMTEgOiBwdWJsaWMgTW91c2VDdXJzb3JNb25pdG9yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIHsK
LSBwdWJsaWM6Ci0gIE1vdXNlQ3Vyc29yTW9uaXRvclgxMShjb25zdCBEZXNrdG9wQ2FwdHVyZU9w
dGlvbnMmIG9wdGlvbnMsIFdpbmRvdyB3aW5kb3cpOwotICB+TW91c2VDdXJzb3JNb25pdG9yWDEx
KCkgb3ZlcnJpZGU7Ci0KLSAgdm9pZCBJbml0KENhbGxiYWNrKiBjYWxsYmFjaywgTW9kZSBtb2Rl
KSBvdmVycmlkZTsKLSAgdm9pZCBDYXB0dXJlKCkgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICAv
LyBTaGFyZWRYRGlzcGxheTo6WEV2ZW50SGFuZGxlciBpbnRlcmZhY2UuCi0gIGJvb2wgSGFuZGxl
WEV2ZW50KGNvbnN0IFhFdmVudCYgZXZlbnQpIG92ZXJyaWRlOwotCi0gIERpc3BsYXkqIGRpc3Bs
YXkoKSB7IHJldHVybiB4X2Rpc3BsYXlfLT5kaXNwbGF5KCk7IH0KLQotICAvLyBDYXB0dXJlcyBj
dXJyZW50IGN1cnNvciBzaGFwZSBhbmQgc3RvcmVzIGl0IGluIHxjdXJzb3Jfc2hhcGVffC4KLSAg
dm9pZCBDYXB0dXJlQ3Vyc29yKCk7Ci0KLSAgcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNw
bGF5PiB4X2Rpc3BsYXlfOwotICBDYWxsYmFjayogY2FsbGJhY2tfOwotICBNb2RlIG1vZGVfOwot
ICBXaW5kb3cgd2luZG93XzsKLQotICBib29sIGhhdmVfeGZpeGVzXzsKLSAgaW50IHhmaXhlc19l
dmVudF9iYXNlXzsKLSAgaW50IHhmaXhlc19lcnJvcl9iYXNlXzsKLQotICBzdGQ6OnVuaXF1ZV9w
dHI8TW91c2VDdXJzb3I+IGN1cnNvcl9zaGFwZV87Ci19OwotCi1Nb3VzZUN1cnNvck1vbml0b3JY
MTE6Ok1vdXNlQ3Vyc29yTW9uaXRvclgxMSgKLSAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlv
bnMmIG9wdGlvbnMsCi0gICAgV2luZG93IHdpbmRvdykKLSAgICA6IHhfZGlzcGxheV8ob3B0aW9u
cy54X2Rpc3BsYXkoKSksCi0gICAgICBjYWxsYmFja18oTlVMTCksCi0gICAgICBtb2RlXyhTSEFQ
RV9BTkRfUE9TSVRJT04pLAotICAgICAgd2luZG93Xyh3aW5kb3cpLAotICAgICAgaGF2ZV94Zml4
ZXNfKGZhbHNlKSwKLSAgICAgIHhmaXhlc19ldmVudF9iYXNlXygtMSksCi0gICAgICB4Zml4ZXNf
ZXJyb3JfYmFzZV8oLTEpIHsKLSAgLy8gU2V0IGEgZGVmYXVsdCBpbml0aWFsIGN1cnNvciBzaGFw
ZSBpbiBjYXNlIFhGaXhlcyBpcyBub3QgcHJlc2VudC4KLSAgY29uc3QgaW50IGtTaXplID0gNTsK
LSAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gZGVmYXVsdF9jdXJzb3IoCi0gICAgICBu
ZXcgQmFzaWNEZXNrdG9wRnJhbWUoRGVza3RvcFNpemUoa1NpemUsIGtTaXplKSkpOwotICBjb25z
dCB1aW50OF90IHBpeGVsc1trU2l6ZSAqIGtTaXplXSA9IHsKLSAgICAgIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsCi0gICAgICAweDAwLCAweDAw
LCAweGZmLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweGZmLCAweGZmLAotICAgICAgMHhmZiwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH07Ci0gIHVpbnQ4X3QqIHB0ciA9IGRl
ZmF1bHRfY3Vyc29yLT5kYXRhKCk7Ci0gIGZvciAoaW50IHkgPSAwOyB5IDwga1NpemU7ICsreSkg
ewotICAgIGZvciAoaW50IHggPSAwOyB4IDwga1NpemU7ICsreCkgewotICAgICAgKnB0cisrID0g
cGl4ZWxzW2tTaXplICogeSArIHhdOwotICAgICAgKnB0cisrID0gcGl4ZWxzW2tTaXplICogeSAr
IHhdOwotICAgICAgKnB0cisrID0gcGl4ZWxzW2tTaXplICogeSArIHhdOwotICAgICAgKnB0cisr
ID0gMHhmZjsKLSAgICB9Ci0gIH0KLSAgRGVza3RvcFZlY3RvciBob3RzcG90KDIsIDIpOwotICBj
dXJzb3Jfc2hhcGVfLnJlc2V0KG5ldyBNb3VzZUN1cnNvcihkZWZhdWx0X2N1cnNvci5yZWxlYXNl
KCksIGhvdHNwb3QpKTsKLX0KLQotTW91c2VDdXJzb3JNb25pdG9yWDExOjp+TW91c2VDdXJzb3JN
b25pdG9yWDExKCkgewotICBpZiAoaGF2ZV94Zml4ZXNfKSB7Ci0gICAgeF9kaXNwbGF5Xy0+UmVt
b3ZlRXZlbnRIYW5kbGVyKHhmaXhlc19ldmVudF9iYXNlXyArIFhGaXhlc0N1cnNvck5vdGlmeSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyk7Ci0gIH0KLX0KLQotdm9p
ZCBNb3VzZUN1cnNvck1vbml0b3JYMTE6OkluaXQoQ2FsbGJhY2sqIGNhbGxiYWNrLCBNb2RlIG1v
ZGUpIHsKLSAgLy8gSW5pdCBjYW4gYmUgY2FsbGVkIG9ubHkgb25jZSBwZXIgaW5zdGFuY2Ugb2Yg
TW91c2VDdXJzb3JNb25pdG9yLgotICBSVENfRENIRUNLKCFjYWxsYmFja18pOwotICBSVENfRENI
RUNLKGNhbGxiYWNrKTsKLQotICBjYWxsYmFja18gPSBjYWxsYmFjazsKLSAgbW9kZV8gPSBtb2Rl
OwotCi0gIGhhdmVfeGZpeGVzXyA9Ci0gICAgICBYRml4ZXNRdWVyeUV4dGVuc2lvbihkaXNwbGF5
KCksICZ4Zml4ZXNfZXZlbnRfYmFzZV8sICZ4Zml4ZXNfZXJyb3JfYmFzZV8pOwotCi0gIGlmICho
YXZlX3hmaXhlc18pIHsKLSAgICAvLyBSZWdpc3RlciBmb3IgY2hhbmdlcyB0byB0aGUgY3Vyc29y
IHNoYXBlLgotICAgIFhGaXhlc1NlbGVjdEN1cnNvcklucHV0KGRpc3BsYXkoKSwgd2luZG93Xywg
WEZpeGVzRGlzcGxheUN1cnNvck5vdGlmeU1hc2spOwotICAgIHhfZGlzcGxheV8tPkFkZEV2ZW50
SGFuZGxlcih4Zml4ZXNfZXZlbnRfYmFzZV8gKyBYRml4ZXNDdXJzb3JOb3RpZnksIHRoaXMpOwot
Ci0gICAgQ2FwdHVyZUN1cnNvcigpOwotICB9IGVsc2UgewotICAgIFJUQ19MT0coTFNfSU5GTykg
PDwgIlggc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgWEZpeGVzLiI7Ci0gIH0KLX0KLQotdm9pZCBN
b3VzZUN1cnNvck1vbml0b3JYMTE6OkNhcHR1cmUoKSB7Ci0gIFJUQ19EQ0hFQ0soY2FsbGJhY2tf
KTsKLQotICAvLyBQcm9jZXNzIFgxMSBldmVudHMgaW4gY2FzZSBYRml4ZXMgaGFzIHNlbnQgY3Vy
c29yIG5vdGlmaWNhdGlvbi4KLSAgeF9kaXNwbGF5Xy0+UHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCk7
Ci0KLSAgLy8gY3Vyc29yX3NoYXBlX3wgaXMgc2V0IG9ubHkgaWYgd2Ugd2VyZSBub3RpZmllZCBv
ZiBhIGN1cnNvciBzaGFwZSBjaGFuZ2UuCi0gIGlmIChjdXJzb3Jfc2hhcGVfLmdldCgpKQotICAg
IGNhbGxiYWNrXy0+T25Nb3VzZUN1cnNvcihjdXJzb3Jfc2hhcGVfLnJlbGVhc2UoKSk7Ci0KLSAg
Ly8gR2V0IGN1cnNvciBwb3NpdGlvbiBpZiBuZWNlc3NhcnkuCi0gIGlmIChtb2RlXyA9PSBTSEFQ
RV9BTkRfUE9TSVRJT04pIHsKLSAgICBpbnQgcm9vdF94OwotICAgIGludCByb290X3k7Ci0gICAg
aW50IHdpbl94OwotICAgIGludCB3aW5feTsKLSAgICBXaW5kb3cgcm9vdF93aW5kb3c7Ci0gICAg
V2luZG93IGNoaWxkX3dpbmRvdzsKLSAgICB1bnNpZ25lZCBpbnQgbWFzazsKLQotICAgIFhFcnJv
clRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KCkpOwotICAgIEJvb2wgcmVzdWx0ID0gWFF1ZXJ5UG9p
bnRlcihkaXNwbGF5KCksIHdpbmRvd18sICZyb290X3dpbmRvdywgJmNoaWxkX3dpbmRvdywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJvb3RfeCwgJnJvb3RfeSwgJndpbl94LCAm
d2luX3ksICZtYXNrKTsKLSAgICBDdXJzb3JTdGF0ZSBzdGF0ZTsKLSAgICBpZiAoIXJlc3VsdCB8
fCBlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKSB7Ci0gICAgICBzdGF0
ZSA9IE9VVFNJREU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8vIEluIHNjcmVlbiBtb2RlICh3aW5k
b3dfID09IHJvb3Rfd2luZG93KSB0aGUgbW91c2UgaXMgYWx3YXlzIGluc2lkZS4KLSAgICAgIC8v
IFhRdWVyeVBvaW50ZXIoKSBzZXRzIHxjaGlsZF93aW5kb3d8IHRvIE5vbmUgaWYgdGhlIGN1cnNv
ciBpcyBvdXRzaWRlCi0gICAgICAvLyB8d2luZG93X3wuCi0gICAgICBzdGF0ZSA9Ci0gICAgICAg
ICAgKHdpbmRvd18gPT0gcm9vdF93aW5kb3cgfHwgY2hpbGRfd2luZG93ICE9IE5vbmUpID8gSU5T
SURFIDogT1VUU0lERTsKLSAgICB9Ci0KLSAgICAvLyBBcyB0aGUgY29tbWVudHMgdG8gR2V0VG9w
TGV2ZWxXaW5kb3coKSBhYm92ZSBpbmRpY2F0ZSwgaW4gd2luZG93IGNhcHR1cmUsCi0gICAgLy8g
dGhlIGN1cnNvciBwb3NpdGlvbiBjYXB0dXJlIGhhcHBlbnMgaW4gfHdpbmRvd198LCB3aGlsZSB0
aGUgZnJhbWUgY2F0cHVyZQotICAgIC8vIGhhcHBlbnMgaW4gfGNoaWxkX3dpbmRvd3wuIFRoZXNl
IHR3byB3aW5kb3dzIGFyZSBub3QgYWx3eWFzIHNhbWUsIGFzCi0gICAgLy8gd2luZG93IG1hbmFn
ZXIgbWF5IGFkZCBzb21lIGRlY29yYXRpb25zIHRvIHRoZSB8d2luZG93X3wuIFNvIHRyYW5zbGF0
ZQotICAgIC8vIHRoZSBjb29yZGluYXRlIGluIHx3aW5kb3dffCB0byB0aGUgY29vcmRpbmF0ZSBz
cGFjZSBvZiB8Y2hpbGRfd2luZG93fC4KLSAgICBpZiAod2luZG93XyAhPSByb290X3dpbmRvdyAm
JiBzdGF0ZSA9PSBJTlNJREUpIHsKLSAgICAgIGludCB0cmFuc2xhdGVkX3gsIHRyYW5zbGF0ZWRf
eTsKLSAgICAgIFdpbmRvdyB1bnVzZWQ7Ci0gICAgICBpZiAoWFRyYW5zbGF0ZUNvb3JkaW5hdGVz
KGRpc3BsYXkoKSwgd2luZG93XywgY2hpbGRfd2luZG93LCB3aW5feCwgd2luX3ksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFuc2xhdGVkX3gsICZ0cmFuc2xhdGVkX3ksICZ1
bnVzZWQpKSB7Ci0gICAgICAgIHdpbl94ID0gdHJhbnNsYXRlZF94OwotICAgICAgICB3aW5feSA9
IHRyYW5zbGF0ZWRfeTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBYMTEgYWx3YXlzIHN0YXJ0
cyB0aGUgY29vcmRpbmF0ZSBmcm9tICgwLCAwKSwgc28gd2UgZG8gbm90IG5lZWQgdG8KLSAgICAv
LyB0cmFuc2xhdGUgaGVyZS4KLSAgICBjYWxsYmFja18tPk9uTW91c2VDdXJzb3JQb3NpdGlvbihE
ZXNrdG9wVmVjdG9yKHJvb3RfeCwgcm9vdF95KSk7Ci0gIH0KLX0KLQotYm9vbCBNb3VzZUN1cnNv
ck1vbml0b3JYMTE6OkhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSB7Ci0gIGlmICho
YXZlX3hmaXhlc18gJiYgZXZlbnQudHlwZSA9PSB4Zml4ZXNfZXZlbnRfYmFzZV8gKyBYRml4ZXND
dXJzb3JOb3RpZnkpIHsKLSAgICBjb25zdCBYRml4ZXNDdXJzb3JOb3RpZnlFdmVudCogY3Vyc29y
X2V2ZW50ID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBYRml4ZXNDdXJzb3JOb3Rp
ZnlFdmVudCo+KCZldmVudCk7Ci0gICAgaWYgKGN1cnNvcl9ldmVudC0+c3VidHlwZSA9PSBYRml4
ZXNEaXNwbGF5Q3Vyc29yTm90aWZ5KSB7Ci0gICAgICBDYXB0dXJlQ3Vyc29yKCk7Ci0gICAgfQot
ICAgIC8vIFJldHVybiBmYWxzZSwgZXZlbiBpZiB0aGUgZXZlbnQgaGFzIGJlZW4gaGFuZGxlZCwg
YmVjYXVzZSB0aGVyZSBtaWdodCBiZQotICAgIC8vIG90aGVyIGxpc3RlbmVycyBmb3IgY3Vyc29y
IG5vdGlmaWNhdGlvbnMuCi0gIH0KLSAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1vdXNlQ3Vy
c29yTW9uaXRvclgxMTo6Q2FwdHVyZUN1cnNvcigpIHsKLSAgUlRDX0RDSEVDSyhoYXZlX3hmaXhl
c18pOwotCi0gIFhGaXhlc0N1cnNvckltYWdlKiBpbWc7Ci0gIHsKLSAgICBYRXJyb3JUcmFwIGVy
cm9yX3RyYXAoZGlzcGxheSgpKTsKLSAgICBpbWcgPSBYRml4ZXNHZXRDdXJzb3JJbWFnZShkaXNw
bGF5KCkpOwotICAgIGlmICghaW1nIHx8IGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5kRGlzYWJs
ZSgpICE9IDApCi0gICAgICByZXR1cm47Ci0gIH0KLQotICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3Rv
cEZyYW1lPiBpbWFnZSgKLSAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShEZXNrdG9wU2l6ZShp
bWctPndpZHRoLCBpbWctPmhlaWdodCkpKTsKLQotICAvLyBYbGliIHN0b3JlcyAzMi1iaXQgZGF0
YSBpbiBsb25ncywgZXZlbiBpZiBsb25ncyBhcmUgNjQtYml0cyBsb25nLgotICB1bnNpZ25lZCBs
b25nKiBzcmMgPSBpbWctPnBpeGVsczsKLSAgdWludDMyX3QqIGRzdCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihpbWFnZS0+ZGF0YSgpKTsKLSAgdWludDMyX3QqIGRzdF9lbmQgPSBkc3Qg
KyAoaW1nLT53aWR0aCAqIGltZy0+aGVpZ2h0KTsKLSAgd2hpbGUgKGRzdCA8IGRzdF9lbmQpIHsK
LSAgICAqZHN0KysgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKnNyYysrKTsKLSAgfQotCi0gIERl
c2t0b3BWZWN0b3IgaG90c3BvdChzdGQ6Om1pbihpbWctPndpZHRoLCBpbWctPnhob3QpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptaW4oaW1nLT5oZWlnaHQsIGltZy0+eWhvdCkpOwot
Ci0gIFhGcmVlKGltZyk7Ci0KLSAgY3Vyc29yX3NoYXBlXy5yZXNldChuZXcgTW91c2VDdXJzb3Io
aW1hZ2UucmVsZWFzZSgpLCBob3RzcG90KSk7Ci19Ci0KLS8vIHN0YXRpYwotTW91c2VDdXJzb3JN
b25pdG9yKiBNb3VzZUN1cnNvck1vbml0b3I6OkNyZWF0ZUZvcldpbmRvdygKLSAgICBjb25zdCBE
ZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMsCi0gICAgV2luZG93SWQgd2luZG93KSB7Ci0g
IGlmICghb3B0aW9ucy54X2Rpc3BsYXkoKSkKLSAgICByZXR1cm4gTlVMTDsKLSAgd2luZG93ID0g
R2V0VG9wTGV2ZWxXaW5kb3cob3B0aW9ucy54X2Rpc3BsYXkoKS0+ZGlzcGxheSgpLCB3aW5kb3cp
OwotICBpZiAod2luZG93ID09IE5vbmUpCi0gICAgcmV0dXJuIE5VTEw7Ci0gIHJldHVybiBuZXcg
TW91c2VDdXJzb3JNb25pdG9yWDExKG9wdGlvbnMsIHdpbmRvdyk7Ci19Ci0KLU1vdXNlQ3Vyc29y
TW9uaXRvciogTW91c2VDdXJzb3JNb25pdG9yOjpDcmVhdGVGb3JTY3JlZW4oCi0gICAgY29uc3Qg
RGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zLAotICAgIFNjcmVlbklkIHNjcmVlbikgewot
ICBpZiAoIW9wdGlvbnMueF9kaXNwbGF5KCkpCi0gICAgcmV0dXJuIE5VTEw7Ci0gIHJldHVybiBu
ZXcgTW91c2VDdXJzb3JNb25pdG9yWDExKAotICAgICAgb3B0aW9ucywgRGVmYXVsdFJvb3RXaW5k
b3cob3B0aW9ucy54X2Rpc3BsYXkoKS0+ZGlzcGxheSgpKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0
cjxNb3VzZUN1cnNvck1vbml0b3I+IE1vdXNlQ3Vyc29yTW9uaXRvcjo6Q3JlYXRlKAotICAgIGNv
bnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgewotICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPE1vdXNlQ3Vyc29yTW9uaXRvcj4oCi0gICAgICBDcmVhdGVGb3JTY3JlZW4ob3B0aW9u
cywga0Z1bGxEZXNrdG9wU2NyZWVuSWQpKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVyX2xpbnV4LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
c2NyZWVuX2NhcHR1cmVyX2xpbnV4LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmOGE5ZGQwZTBkYjQwMDhlMTdm
NDNhYTI1MDdlNzQ5MTA2NzJiNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5f
Y2FwdHVyZXJfbGludXguY2MKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKwor
I2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25z
LmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5o
IgorCisjaWYgZGVmaW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQorI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl9waXBld2lyZS5oIgorI2VuZGlm
ICAvLyBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpCisKKyNpZiBkZWZpbmVkKFVTRV9YMTEp
CisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVy
X3gxMS5oIgorI2VuZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCisvLyBzdGF0aWMKK3N0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+IERlc2t0b3BD
YXB0dXJlcjo6Q3JlYXRlUmF3U2NyZWVuQ2FwdHVyZXIoCisgICAgY29uc3QgRGVza3RvcENhcHR1
cmVPcHRpb25zJiBvcHRpb25zKSB7CisjaWYgZGVmaW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQor
ICBpZiAob3B0aW9ucy5hbGxvd19waXBld2lyZSgpICYmIERlc2t0b3BDYXB0dXJlcjo6SXNSdW5u
aW5nVW5kZXJXYXlsYW5kKCkpIHsKKyAgICByZXR1cm4gU2NyZWVuQ2FwdHVyZXJQaXBlV2lyZTo6
Q3JlYXRlUmF3U2NyZWVuQ2FwdHVyZXIob3B0aW9ucyk7CisgIH0KKyNlbmRpZiAgLy8gZGVmaW5l
ZChXRUJSVENfVVNFX1BJUEVXSVJFKQorCisjaWYgZGVmaW5lZChVU0VfWDExKQorICByZXR1cm4g
U2NyZWVuQ2FwdHVyZXJYMTE6OkNyZWF0ZVJhd1NjcmVlbkNhcHR1cmVyKG9wdGlvbnMpOworI2Vu
ZGlmICAvLyBkZWZpbmVkKFVTRV9YMTEpCisKKyAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9jYXB0dXJlcl94
MTEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5fY2FwdHVyZXJfeDExLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlOTVmY2NjMjA4MmE5NzA0MmFhZmZiOGRkZDZjMjQzNGRmNDk3ZTcwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3Nj
cmVlbl9jYXB0dXJlcl94MTEuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0MjUgKzAsMCBAQAotLyoK
LSAqICBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0g
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPG1l
bW9yeT4KLSNpbmNsdWRlIDxzZXQ+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotI2luY2x1ZGUgPFgx
MS9YbGliLmg+Ci0jaW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lv
bnMvWGRhbWFnZS5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hmaXhlcy5oPgotCi0jaW5j
bHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlX29wdGlvbnMuaCIK
LSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCi0j
aW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9mcmFtZS5oIgotI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9jYXB0dXJlX2ZyYW1lX3F1ZXVlLmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVyX2hlbHBl
ci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NoYXJlZF9kZXNrdG9wX2Zy
YW1lLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfc2VydmVyX3Bp
eGVsX2J1ZmZlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdHJh
Y2VfZXZlbnQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2UgewotCi0vLyBBIGNs
YXNzIHRvIHBlcmZvcm0gdmlkZW8gZnJhbWUgY2FwdHVyaW5nIGZvciBMaW51eC4KLS8vCi0vLyBJ
ZiBYRGFtYWdlIGlzIHVzZWQsIHRoaXMgY2xhc3Mgc2V0cyBEZXNrdG9wRnJhbWU6OnVwZGF0ZWRf
cmVnaW9uKCkgYWNjb3JkaW5nCi0vLyB0byB0aGUgYXJlYXMgcmVwb3J0ZWQgYnkgWERhbWFnZS4g
T3RoZXJ3aXNlIHRoaXMgY2xhc3MgZG9lcyBub3QgZGV0ZWN0Ci0vLyBEZXNrdG9wRnJhbWU6OnVw
ZGF0ZWRfcmVnaW9uKCksIHRoZSBmaWVsZCBpcyBhbHdheXMgc2V0IHRvIHRoZSBlbnRpcmUgZnJh
bWUKLS8vIHJlY3RhbmdsZS4gU2NyZWVuQ2FwdHVyZXJEaWZmZXJXcmFwcGVyIHNob3VsZCBiZSB1
c2VkIGlmIHRoYXQgZnVuY3Rpb25hbGl0eQotLy8gaXMgbmVjZXNzYXJ5LgotY2xhc3MgU2NyZWVu
Q2FwdHVyZXJMaW51eCA6IHB1YmxpYyBEZXNrdG9wQ2FwdHVyZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIHsKLSBwdWJs
aWM6Ci0gIFNjcmVlbkNhcHR1cmVyTGludXgoKTsKLSAgflNjcmVlbkNhcHR1cmVyTGludXgoKSBv
dmVycmlkZTsKLQotICAvLyBUT0RPKGFqd29uZyk6IERvIHdlIHJlYWxseSB3YW50IHRoaXMgdG8g
YmUgc3luY2hyb25vdXM/Ci0gIGJvb2wgSW5pdChjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMm
IG9wdGlvbnMpOwotCi0gIC8vIERlc2t0b3BDYXB0dXJlciBpbnRlcmZhY2UuCi0gIHZvaWQgU3Rh
cnQoQ2FsbGJhY2sqIGRlbGVnYXRlKSBvdmVycmlkZTsKLSAgdm9pZCBDYXB0dXJlRnJhbWUoKSBv
dmVycmlkZTsKLSAgYm9vbCBHZXRTb3VyY2VMaXN0KFNvdXJjZUxpc3QqIHNvdXJjZXMpIG92ZXJy
aWRlOwotICBib29sIFNlbGVjdFNvdXJjZShTb3VyY2VJZCBpZCkgb3ZlcnJpZGU7Ci0KLSBwcml2
YXRlOgotICBEaXNwbGF5KiBkaXNwbGF5KCkgeyByZXR1cm4gb3B0aW9uc18ueF9kaXNwbGF5KCkt
PmRpc3BsYXkoKTsgfQotCi0gIC8vIFNoYXJlZFhEaXNwbGF5OjpYRXZlbnRIYW5kbGVyIGludGVy
ZmFjZS4KLSAgYm9vbCBIYW5kbGVYRXZlbnQoY29uc3QgWEV2ZW50JiBldmVudCkgb3ZlcnJpZGU7
Ci0KLSAgdm9pZCBJbml0WERhbWFnZSgpOwotCi0gIC8vIENhcHR1cmUgc2NyZWVuIHBpeGVscyB0
byB0aGUgY3VycmVudCBidWZmZXIgaW4gdGhlIHF1ZXVlLiBJbiB0aGUgREFNQUdFCi0gIC8vIGNh
c2UsIHRoZSBTY3JlZW5DYXB0dXJlckhlbHBlciBhbHJlYWR5IGhvbGRzIHRoZSBsaXN0IG9mIGlu
dmFsaWQgcmVjdGFuZ2xlcwotICAvLyBmcm9tIEhhbmRsZVhFdmVudCgpLiBJbiB0aGUgbm9uLURB
TUFHRSBjYXNlLCB0aGlzIGNhcHR1cmVzIHRoZQotICAvLyB3aG9sZSBzY3JlZW4sIHRoZW4gY2Fs
Y3VsYXRlcyBzb21lIGludmFsaWQgcmVjdGFuZ2xlcyB0aGF0IGluY2x1ZGUgYW55Ci0gIC8vIGRp
ZmZlcmVuY2VzIGJldHdlZW4gdGhpcyBhbmQgdGhlIHByZXZpb3VzIGNhcHR1cmUuCi0gIHN0ZDo6
dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IENhcHR1cmVTY3JlZW4oKTsKLQotICAvLyBDYWxsZWQg
d2hlbiB0aGUgc2NyZWVuIGNvbmZpZ3VyYXRpb24gaXMgY2hhbmdlZC4KLSAgdm9pZCBTY3JlZW5D
b25maWd1cmF0aW9uQ2hhbmdlZCgpOwotCi0gIC8vIFN5bmNocm9uaXplIHRoZSBjdXJyZW50IGJ1
ZmZlciB3aXRoIHxsYXN0X2J1ZmZlcl98LCBieSBjb3B5aW5nIHBpeGVscyBmcm9tCi0gIC8vIHRo
ZSBhcmVhIG9mIHxsYXN0X2ludmFsaWRfcmVjdHN8LgotICAvLyBOb3RlIHRoaXMgb25seSB3b3Jr
cyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGtOdW1CdWZmZXJzID09IDIsIGFzCi0gIC8vIHxsYXN0
X2ludmFsaWRfcmVjdHN8IGhvbGRzIHRoZSBkaWZmZXJlbmNlcyBmcm9tIHRoZSBwcmV2aW91cyBi
dWZmZXIgYW5kCi0gIC8vIHRoZSBvbmUgcHJpb3IgdG8gdGhhdCAod2hpY2ggd2lsbCB0aGVuIGJl
IHRoZSBjdXJyZW50IGJ1ZmZlcikuCi0gIHZvaWQgU3luY2hyb25pemVGcmFtZSgpOwotCi0gIHZv
aWQgRGVpbml0WGxpYigpOwotCi0gIERlc2t0b3BDYXB0dXJlT3B0aW9ucyBvcHRpb25zXzsKLQot
ICBDYWxsYmFjayogY2FsbGJhY2tfID0gbnVsbHB0cjsKLQotICAvLyBYMTEgZ3JhcGhpY3MgY29u
dGV4dC4KLSAgR0MgZ2NfID0gbnVsbHB0cjsKLSAgV2luZG93IHJvb3Rfd2luZG93XyA9IEJhZFZh
bHVlOwotCi0gIC8vIFhGaXhlcy4KLSAgYm9vbCBoYXNfeGZpeGVzXyA9IGZhbHNlOwotICBpbnQg
eGZpeGVzX2V2ZW50X2Jhc2VfID0gLTE7Ci0gIGludCB4Zml4ZXNfZXJyb3JfYmFzZV8gPSAtMTsK
LQotICAvLyBYRGFtYWdlIGluZm9ybWF0aW9uLgotICBib29sIHVzZV9kYW1hZ2VfID0gZmFsc2U7
Ci0gIERhbWFnZSBkYW1hZ2VfaGFuZGxlXyA9IDA7Ci0gIGludCBkYW1hZ2VfZXZlbnRfYmFzZV8g
PSAtMTsKLSAgaW50IGRhbWFnZV9lcnJvcl9iYXNlXyA9IC0xOwotICBYc2VydmVyUmVnaW9uIGRh
bWFnZV9yZWdpb25fID0gMDsKLQotICAvLyBBY2Nlc3MgdG8gdGhlIFggU2VydmVyJ3MgcGl4ZWwg
YnVmZmVyLgotICBYU2VydmVyUGl4ZWxCdWZmZXIgeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXzsKLQot
ICAvLyBBIHRocmVhZC1zYWZlIGxpc3Qgb2YgaW52YWxpZCByZWN0YW5nbGVzLCBhbmQgdGhlIHNp
emUgb2YgdGhlIG1vc3QKLSAgLy8gcmVjZW50bHkgY2FwdHVyZWQgc2NyZWVuLgotICBTY3JlZW5D
YXB0dXJlckhlbHBlciBoZWxwZXJfOwotCi0gIC8vIFF1ZXVlIG9mIHRoZSBmcmFtZXMgYnVmZmVy
cy4KLSAgU2NyZWVuQ2FwdHVyZUZyYW1lUXVldWU8U2hhcmVkRGVza3RvcEZyYW1lPiBxdWV1ZV87
Ci0KLSAgLy8gSW52YWxpZCByZWdpb24gZnJvbSB0aGUgcHJldmlvdXMgY2FwdHVyZS4gVGhpcyBp
cyB1c2VkIHRvIHN5bmNocm9uaXplIHRoZQotICAvLyBjdXJyZW50IHdpdGggdGhlIGxhc3QgYnVm
ZmVyIHVzZWQuCi0gIERlc2t0b3BSZWdpb24gbGFzdF9pbnZhbGlkX3JlZ2lvbl87Ci0KLSAgUlRD
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTY3JlZW5DYXB0dXJlckxpbnV4KTsKLX07Ci0KLVNj
cmVlbkNhcHR1cmVyTGludXg6OlNjcmVlbkNhcHR1cmVyTGludXgoKSB7Ci0gIGhlbHBlcl8uU2V0
TG9nR3JpZFNpemUoNCk7Ci19Ci0KLVNjcmVlbkNhcHR1cmVyTGludXg6On5TY3JlZW5DYXB0dXJl
ckxpbnV4KCkgewotICBvcHRpb25zXy54X2Rpc3BsYXkoKS0+UmVtb3ZlRXZlbnRIYW5kbGVyKENv
bmZpZ3VyZU5vdGlmeSwgdGhpcyk7Ci0gIGlmICh1c2VfZGFtYWdlXykgewotICAgIG9wdGlvbnNf
LnhfZGlzcGxheSgpLT5SZW1vdmVFdmVudEhhbmRsZXIoZGFtYWdlX2V2ZW50X2Jhc2VfICsgWERh
bWFnZU5vdGlmeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMpOwotICB9Ci0gIERlaW5pdFhsaWIoKTsKLX0KLQotYm9vbCBTY3JlZW5DYXB0dXJlckxp
bnV4OjpJbml0KGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgewotICBUUkFD
RV9FVkVOVDAoIndlYnJ0YyIsICJTY3JlZW5DYXB0dXJlckxpbnV4OjpJbml0Iik7Ci0gIG9wdGlv
bnNfID0gb3B0aW9uczsKLQotICByb290X3dpbmRvd18gPSBSb290V2luZG93KGRpc3BsYXkoKSwg
RGVmYXVsdFNjcmVlbihkaXNwbGF5KCkpKTsKLSAgaWYgKHJvb3Rfd2luZG93XyA9PSBCYWRWYWx1
ZSkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJVbmFibGUgdG8gZ2V0IHRoZSByb290IHdp
bmRvdyI7Ci0gICAgRGVpbml0WGxpYigpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGdj
XyA9IFhDcmVhdGVHQyhkaXNwbGF5KCksIHJvb3Rfd2luZG93XywgMCwgTlVMTCk7Ci0gIGlmIChn
Y18gPT0gTlVMTCkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJVbmFibGUgdG8gZ2V0IGdy
YXBoaWNzIGNvbnRleHQiOwotICAgIERlaW5pdFhsaWIoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0g
IH0KLQotICBvcHRpb25zXy54X2Rpc3BsYXkoKS0+QWRkRXZlbnRIYW5kbGVyKENvbmZpZ3VyZU5v
dGlmeSwgdGhpcyk7Ci0KLSAgLy8gQ2hlY2sgZm9yIFhGaXhlcyBleHRlbnNpb24uIFRoaXMgaXMg
cmVxdWlyZWQgZm9yIGN1cnNvciBzaGFwZQotICAvLyBub3RpZmljYXRpb25zLCBhbmQgZm9yIG91
ciB1c2Ugb2YgWERhbWFnZS4KLSAgaWYgKFhGaXhlc1F1ZXJ5RXh0ZW5zaW9uKGRpc3BsYXkoKSwg
JnhmaXhlc19ldmVudF9iYXNlXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4Zml4ZXNf
ZXJyb3JfYmFzZV8pKSB7Ci0gICAgaGFzX3hmaXhlc18gPSB0cnVlOwotICB9IGVsc2UgewotICAg
IFJUQ19MT0coTFNfSU5GTykgPDwgIlggc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgWEZpeGVzLiI7
Ci0gIH0KLQotICAvLyBSZWdpc3RlciBmb3IgY2hhbmdlcyB0byB0aGUgZGltZW5zaW9ucyBvZiB0
aGUgcm9vdCB3aW5kb3cuCi0gIFhTZWxlY3RJbnB1dChkaXNwbGF5KCksIHJvb3Rfd2luZG93Xywg
U3RydWN0dXJlTm90aWZ5TWFzayk7Ci0KLSAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLklu
aXQoZGlzcGxheSgpLCBEZWZhdWx0Um9vdFdpbmRvdyhkaXNwbGF5KCkpKSkgewotICAgIFJUQ19M
T0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBwaXhlbCBidWZmZXIuIjsKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBpZiAob3B0aW9uc18udXNlX3VwZGF0ZV9ub3RpZmlj
YXRpb25zKCkpIHsKLSAgICBJbml0WERhbWFnZSgpOwotICB9Ci0KLSAgcmV0dXJuIHRydWU7Ci19
Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZXJMaW51eDo6SW5pdFhEYW1hZ2UoKSB7Ci0gIC8vIE91ciB1
c2Ugb2YgWERhbWFnZSByZXF1aXJlcyBYRml4ZXMuCi0gIGlmICghaGFzX3hmaXhlc18pIHsKLSAg
ICByZXR1cm47Ci0gIH0KLQotICAvLyBDaGVjayBmb3IgWERhbWFnZSBleHRlbnNpb24uCi0gIGlm
ICghWERhbWFnZVF1ZXJ5RXh0ZW5zaW9uKGRpc3BsYXkoKSwgJmRhbWFnZV9ldmVudF9iYXNlXywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhbWFnZV9lcnJvcl9iYXNlXykpIHsKLSAg
ICBSVENfTE9HKExTX0lORk8pIDw8ICJYIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IFhEYW1hZ2Uu
IjsKLSAgICByZXR1cm47Ci0gIH0KLQotICAvLyBUT0RPKGxhbWJyb3NsYW1icm91KTogRGlzYWJs
ZSBEQU1BR0UgaW4gc2l0dWF0aW9ucyB3aGVyZSBpdCBpcyBrbm93bgotICAvLyB0byBmYWlsLCBz
dWNoIGFzIHdoZW4gRGVza3RvcCBFZmZlY3RzIGFyZSBlbmFibGVkLCB3aXRoIGdyYXBoaWNzCi0g
IC8vIGRyaXZlcnMgKG5WaWRpYSwgQVRJKSB0aGF0IGZhaWwgdG8gcmVwb3J0IERBTUFHRSBub3Rp
ZmljYXRpb25zCi0gIC8vIHByb3Blcmx5LgotCi0gIC8vIFJlcXVlc3Qgbm90aWZpY2F0aW9ucyBl
dmVyeSB0aW1lIHRoZSBzY3JlZW4gYmVjb21lcyBkYW1hZ2VkLgotICBkYW1hZ2VfaGFuZGxlXyA9
Ci0gICAgICBYRGFtYWdlQ3JlYXRlKGRpc3BsYXkoKSwgcm9vdF93aW5kb3dfLCBYRGFtYWdlUmVw
b3J0Tm9uRW1wdHkpOwotICBpZiAoIWRhbWFnZV9oYW5kbGVfKSB7Ci0gICAgUlRDX0xPRyhMU19F
UlJPUikgPDwgIlVuYWJsZSB0byBpbml0aWFsaXplIFhEYW1hZ2UuIjsKLSAgICByZXR1cm47Ci0g
IH0KLQotICAvLyBDcmVhdGUgYW4gWEZpeGVzIHNlcnZlci1zaWRlIHJlZ2lvbiB0byBjb2xsYXRl
IGRhbWFnZSBpbnRvLgotICBkYW1hZ2VfcmVnaW9uXyA9IFhGaXhlc0NyZWF0ZVJlZ2lvbihkaXNw
bGF5KCksIDAsIDApOwotICBpZiAoIWRhbWFnZV9yZWdpb25fKSB7Ci0gICAgWERhbWFnZURlc3Ry
b3koZGlzcGxheSgpLCBkYW1hZ2VfaGFuZGxlXyk7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IlVuYWJsZSB0byBjcmVhdGUgWEZpeGVzIHJlZ2lvbi4iOwotICAgIHJldHVybjsKLSAgfQotCi0g
IG9wdGlvbnNfLnhfZGlzcGxheSgpLT5BZGRFdmVudEhhbmRsZXIoZGFtYWdlX2V2ZW50X2Jhc2Vf
ICsgWERhbWFnZU5vdGlmeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzKTsKLQotICB1c2VfZGFtYWdlXyA9IHRydWU7Ci0gIFJUQ19MT0coTFNfSU5GTykgPDwg
IlVzaW5nIFhEYW1hZ2UgZXh0ZW5zaW9uLiI7Ci19Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZXJMaW51
eDo6U3RhcnQoQ2FsbGJhY2sqIGNhbGxiYWNrKSB7Ci0gIFJUQ19EQ0hFQ0soIWNhbGxiYWNrXyk7
Ci0gIFJUQ19EQ0hFQ0soY2FsbGJhY2spOwotCi0gIGNhbGxiYWNrXyA9IGNhbGxiYWNrOwotfQot
Ci12b2lkIFNjcmVlbkNhcHR1cmVyTGludXg6OkNhcHR1cmVGcmFtZSgpIHsKLSAgVFJBQ0VfRVZF
TlQwKCJ3ZWJydGMiLCAiU2NyZWVuQ2FwdHVyZXJMaW51eDo6Q2FwdHVyZUZyYW1lIik7Ci0gIGlu
dDY0X3QgY2FwdHVyZV9zdGFydF90aW1lX25hbm9zID0gcnRjOjpUaW1lTmFub3MoKTsKLQotICBx
dWV1ZV8uTW92ZVRvTmV4dEZyYW1lKCk7Ci0gIFJUQ19EQ0hFQ0soIXF1ZXVlXy5jdXJyZW50X2Zy
YW1lKCkgfHwgIXF1ZXVlXy5jdXJyZW50X2ZyYW1lKCktPklzU2hhcmVkKCkpOwotCi0gIC8vIFBy
b2Nlc3MgWEV2ZW50cyBmb3IgWERhbWFnZSBhbmQgY3Vyc29yIHNoYXBlIHRyYWNraW5nLgotICBv
cHRpb25zXy54X2Rpc3BsYXkoKS0+UHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCk7Ci0KLSAgLy8gUHJv
Y2Vzc1BlbmRpbmdYRXZlbnRzKCkgbWF5IGNhbGwgU2NyZWVuQ29uZmlndXJhdGlvbkNoYW5nZWQo
KSB3aGljaAotICAvLyByZWluaXRpYWxpemVzIHx4X3NlcnZlcl9waXhlbF9idWZmZXJffC4gQ2hl
Y2sgaWYgdGhlIHBpeGVsIGJ1ZmZlciBpcyBzdGlsbAotICAvLyBpbiBhIGdvb2Qgc2hhcGUuCi0g
IGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5pc19pbml0aWFsaXplZCgpKSB7Ci0gICAgLy8g
V2UgZmFpbGVkIHRvIGluaXRpYWxpemUgcGl4ZWwgYnVmZmVyLgotICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJQaXhlbCBidWZmZXIgaXMgbm90IGluaXRpYWxpemVkLiI7Ci0gICAgY2FsbGJhY2tf
LT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9QRVJNQU5FTlQsIG51bGxwdHIpOwotICAg
IHJldHVybjsKLSAgfQotCi0gIC8vIElmIHRoZSBjdXJyZW50IGZyYW1lIGlzIGZyb20gYW4gb2xk
ZXIgZ2VuZXJhdGlvbiB0aGVuIGFsbG9jYXRlIGEgbmV3IG9uZS4KLSAgLy8gTm90ZSB0aGF0IHdl
IGNhbid0IHJlYWxsb2NhdGUgb3RoZXIgYnVmZmVycyBhdCB0aGlzIHBvaW50LCBzaW5jZSB0aGUg
Y2FsbGVyCi0gIC8vIG1heSBzdGlsbCBiZSByZWFkaW5nIGZyb20gdGhlbS4KLSAgaWYgKCFxdWV1
ZV8uY3VycmVudF9mcmFtZSgpKSB7Ci0gICAgcXVldWVfLlJlcGxhY2VDdXJyZW50RnJhbWUoCi0g
ICAgICAgIFNoYXJlZERlc2t0b3BGcmFtZTo6V3JhcChzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZy
YW1lPigKLSAgICAgICAgICAgIG5ldyBCYXNpY0Rlc2t0b3BGcmFtZSh4X3NlcnZlcl9waXhlbF9i
dWZmZXJfLndpbmRvd19zaXplKCkpKSkpOwotICB9Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPERlc2t0
b3BGcmFtZT4gcmVzdWx0ID0gQ2FwdHVyZVNjcmVlbigpOwotICBpZiAoIXJlc3VsdCkgewotICAg
IFJUQ19MT0coTFNfV0FSTklORykgPDwgIlRlbXBvcmFyaWx5IGZhaWxlZCB0byBjYXB0dXJlIHNj
cmVlbi4iOwotICAgIGNhbGxiYWNrXy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfVEVN
UE9SQVJZLCBudWxscHRyKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBsYXN0X2ludmFsaWRfcmVn
aW9uXyA9IHJlc3VsdC0+dXBkYXRlZF9yZWdpb24oKTsKLSAgcmVzdWx0LT5zZXRfY2FwdHVyZV90
aW1lX21zKChydGM6OlRpbWVOYW5vcygpIC0gY2FwdHVyZV9zdGFydF90aW1lX25hbm9zKSAvCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OmtOdW1OYW5vc2Vjc1Blck1pbGxpc2Vj
KTsKLSAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpTVUNDRVNTLCBzdGQ6Om1v
dmUocmVzdWx0KSk7Ci19Ci0KLWJvb2wgU2NyZWVuQ2FwdHVyZXJMaW51eDo6R2V0U291cmNlTGlz
dChTb3VyY2VMaXN0KiBzb3VyY2VzKSB7Ci0gIFJUQ19EQ0hFQ0soc291cmNlcy0+c2l6ZSgpID09
IDApOwotICAvLyBUT0RPKGppYXlsKTogaW1wbGVtZW50IHNjcmVlbiBlbnVtZXJhdGlvbi4KLSAg
c291cmNlcy0+cHVzaF9iYWNrKHswfSk7Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIFNjcmVl
bkNhcHR1cmVyTGludXg6OlNlbGVjdFNvdXJjZShTb3VyY2VJZCBpZCkgewotICAvLyBUT0RPKGpp
YXlsKTogaW1wbGVtZW50IHNjcmVlbiBzZWxlY3Rpb24uCi0gIHJldHVybiB0cnVlOwotfQotCi1i
b29sIFNjcmVlbkNhcHR1cmVyTGludXg6OkhhbmRsZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50
KSB7Ci0gIGlmICh1c2VfZGFtYWdlXyAmJiAoZXZlbnQudHlwZSA9PSBkYW1hZ2VfZXZlbnRfYmFz
ZV8gKyBYRGFtYWdlTm90aWZ5KSkgewotICAgIGNvbnN0IFhEYW1hZ2VOb3RpZnlFdmVudCogZGFt
YWdlX2V2ZW50ID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBYRGFtYWdlTm90aWZ5
RXZlbnQqPigmZXZlbnQpOwotICAgIGlmIChkYW1hZ2VfZXZlbnQtPmRhbWFnZSAhPSBkYW1hZ2Vf
aGFuZGxlXykKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICBSVENfRENIRUNLKGRhbWFnZV9ldmVu
dC0+bGV2ZWwgPT0gWERhbWFnZVJlcG9ydE5vbkVtcHR5KTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAg
fSBlbHNlIGlmIChldmVudC50eXBlID09IENvbmZpZ3VyZU5vdGlmeSkgewotICAgIFNjcmVlbkNv
bmZpZ3VyYXRpb25DaGFuZ2VkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgcmV0dXJuIGZh
bHNlOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcEZyYW1lPiBTY3JlZW5DYXB0dXJlckxp
bnV4OjpDYXB0dXJlU2NyZWVuKCkgewotICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkRGVza3RvcEZy
YW1lPiBmcmFtZSA9IHF1ZXVlXy5jdXJyZW50X2ZyYW1lKCktPlNoYXJlKCk7Ci0gIFJUQ19EQ0hF
Q0soeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy53aW5kb3dfc2l6ZSgpLmVxdWFscyhmcmFtZS0+c2l6
ZSgpKSk7Ci0KLSAgLy8gUGFzcyB0aGUgc2NyZWVuIHNpemUgdG8gdGhlIGhlbHBlciwgc28gaXQg
Y2FuIGNsaXAgdGhlIGludmFsaWQgcmVnaW9uIGlmIGl0Ci0gIC8vIGV4cGFuZHMgdGhhdCByZWdp
b24gdG8gYSBncmlkLgotICBoZWxwZXJfLnNldF9zaXplX21vc3RfcmVjZW50KGZyYW1lLT5zaXpl
KCkpOwotCi0gIC8vIEluIHRoZSBEQU1BR0UgY2FzZSwgZW5zdXJlIHRoZSBmcmFtZSBpcyB1cC10
by1kYXRlIHdpdGggdGhlIHByZXZpb3VzIGZyYW1lCi0gIC8vIGlmIGFueS4gIElmIHRoZXJlIGlz
bid0IGEgcHJldmlvdXMgZnJhbWUsIHRoYXQgbWVhbnMgYSBzY3JlZW4tcmVzb2x1dGlvbgotICAv
LyBjaGFuZ2Ugb2NjdXJyZWQsIGFuZCB8aW52YWxpZF9yZWN0c3wgd2lsbCBiZSB1cGRhdGVkIHRv
IGluY2x1ZGUgdGhlIHdob2xlCi0gIC8vIHNjcmVlbi4KLSAgaWYgKHVzZV9kYW1hZ2VfICYmIHF1
ZXVlXy5wcmV2aW91c19mcmFtZSgpKQotICAgIFN5bmNocm9uaXplRnJhbWUoKTsKLQotICBEZXNr
dG9wUmVnaW9uKiB1cGRhdGVkX3JlZ2lvbiA9IGZyYW1lLT5tdXRhYmxlX3VwZGF0ZWRfcmVnaW9u
KCk7Ci0KLSAgeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5TeW5jaHJvbml6ZSgpOwotICBpZiAodXNl
X2RhbWFnZV8gJiYgcXVldWVfLnByZXZpb3VzX2ZyYW1lKCkpIHsKLSAgICAvLyBBdG9taWNhbGx5
IGZldGNoIGFuZCBjbGVhciB0aGUgZGFtYWdlIHJlZ2lvbi4KLSAgICBYRGFtYWdlU3VidHJhY3Qo
ZGlzcGxheSgpLCBkYW1hZ2VfaGFuZGxlXywgTm9uZSwgZGFtYWdlX3JlZ2lvbl8pOwotICAgIGlu
dCByZWN0c19udW0gPSAwOwotICAgIFhSZWN0YW5nbGUgYm91bmRzOwotICAgIFhSZWN0YW5nbGUq
IHJlY3RzID0gWEZpeGVzRmV0Y2hSZWdpb25BbmRCb3VuZHMoZGlzcGxheSgpLCBkYW1hZ2VfcmVn
aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZyZWN0c19udW0sICZib3VuZHMpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjdHNfbnVt
OyArK2kpIHsKLSAgICAgIHVwZGF0ZWRfcmVnaW9uLT5BZGRSZWN0KERlc2t0b3BSZWN0OjpNYWtl
WFlXSCgKLSAgICAgICAgICByZWN0c1tpXS54LCByZWN0c1tpXS55LCByZWN0c1tpXS53aWR0aCwg
cmVjdHNbaV0uaGVpZ2h0KSk7Ci0gICAgfQotICAgIFhGcmVlKHJlY3RzKTsKLSAgICBoZWxwZXJf
LkludmFsaWRhdGVSZWdpb24oKnVwZGF0ZWRfcmVnaW9uKTsKLQotICAgIC8vIENhcHR1cmUgdGhl
IGRhbWFnZWQgcG9ydGlvbnMgb2YgdGhlIGRlc2t0b3AuCi0gICAgaGVscGVyXy5UYWtlSW52YWxp
ZFJlZ2lvbih1cGRhdGVkX3JlZ2lvbik7Ci0KLSAgICAvLyBDbGlwIHRoZSBkYW1hZ2VkIHBvcnRp
b25zIHRvIHRoZSBjdXJyZW50IHNjcmVlbiBzaXplLCBqdXN0IGluIGNhc2Ugc29tZQotICAgIC8v
IHNwdXJpb3VzIFhEYW1hZ2Ugbm90aWZpY2F0aW9ucyB3ZXJlIHJlY2VpdmVkIGZvciBhIHByZXZp
b3VzIChsYXJnZXIpCi0gICAgLy8gc2NyZWVuIHNpemUuCi0gICAgdXBkYXRlZF9yZWdpb24tPklu
dGVyc2VjdFdpdGgoCi0gICAgICAgIERlc2t0b3BSZWN0OjpNYWtlU2l6ZSh4X3NlcnZlcl9waXhl
bF9idWZmZXJfLndpbmRvd19zaXplKCkpKTsKLQotICAgIGZvciAoRGVza3RvcFJlZ2lvbjo6SXRl
cmF0b3IgaXQoKnVwZGF0ZWRfcmVnaW9uKTsgIWl0LklzQXRFbmQoKTsKLSAgICAgICAgIGl0LkFk
dmFuY2UoKSkgewotICAgICAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLkNhcHR1cmVSZWN0
KGl0LnJlY3QoKSwgZnJhbWUuZ2V0KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0gIH0gZWxzZSB7Ci0gICAgLy8gRG9pbmcgZnVsbC1zY3JlZW4gcG9sbGluZywgb3IgdGhpcyBp
cyB0aGUgZmlyc3QgY2FwdHVyZSBhZnRlciBhCi0gICAgLy8gc2NyZWVuLXJlc29sdXRpb24gY2hh
bmdlLiAgSW4gZWl0aGVyIGNhc2UsIG5lZWQgYSBmdWxsLXNjcmVlbiBjYXB0dXJlLgotICAgIERl
c2t0b3BSZWN0IHNjcmVlbl9yZWN0ID0gRGVza3RvcFJlY3Q6Ok1ha2VTaXplKGZyYW1lLT5zaXpl
KCkpOwotICAgIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5DYXB0dXJlUmVjdChzY3JlZW5f
cmVjdCwgZnJhbWUuZ2V0KCkpKQotICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgdXBkYXRlZF9y
ZWdpb24tPlNldFJlY3Qoc2NyZWVuX3JlY3QpOwotICB9Ci0KLSAgcmV0dXJuIHN0ZDo6bW92ZShm
cmFtZSk7Ci19Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZXJMaW51eDo6U2NyZWVuQ29uZmlndXJhdGlv
bkNoYW5nZWQoKSB7Ci0gIFRSQUNFX0VWRU5UMCgid2VicnRjIiwgIlNjcmVlbkNhcHR1cmVyTGlu
dXg6OlNjcmVlbkNvbmZpZ3VyYXRpb25DaGFuZ2VkIik7Ci0gIC8vIE1ha2Ugc3VyZSB0aGUgZnJh
bWUgYnVmZmVycyB3aWxsIGJlIHJlYWxsb2NhdGVkLgotICBxdWV1ZV8uUmVzZXQoKTsKLQotICBo
ZWxwZXJfLkNsZWFySW52YWxpZFJlZ2lvbigpOwotICBpZiAoIXhfc2VydmVyX3BpeGVsX2J1ZmZl
cl8uSW5pdChkaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KGRpc3BsYXkoKSkpKSB7Ci0gICAg
UlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBpbml0aWFsaXplIHBpeGVsIGJ1ZmZlciBh
ZnRlciBzY3JlZW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJjb25maWd1cmF0aW9uIGNo
YW5nZS4iOwotICB9Ci19Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZXJMaW51eDo6U3luY2hyb25pemVG
cmFtZSgpIHsKLSAgLy8gU3luY2hyb25pemUgdGhlIGN1cnJlbnQgYnVmZmVyIHdpdGggdGhlIHBy
ZXZpb3VzIG9uZSBzaW5jZSB3ZSBkbyBub3QKLSAgLy8gY2FwdHVyZSB0aGUgZW50aXJlIGRlc2t0
b3AuIE5vdGUgdGhhdCBlbmNvZGVyIG1heSBiZSByZWFkaW5nIGZyb20gdGhlCi0gIC8vIHByZXZp
b3VzIGJ1ZmZlciBhdCB0aGlzIHRpbWUgc28gdGhyZWFkIGFjY2VzcyBjb21wbGFpbnRzIGFyZSBm
YWxzZQotICAvLyBwb3NpdGl2ZXMuCi0KLSAgLy8gVE9ETyhoY2xhbSk6IFdlIGNhbiByZWR1Y2Ug
dGhlIGFtb3VudCBvZiBjb3B5aW5nIGhlcmUgYnkgc3VidHJhY3RpbmcKLSAgLy8gfGNhcHR1cmVy
X2hlbHBlcl98cyByZWdpb24gZnJvbSB8bGFzdF9pbnZhbGlkX3JlZ2lvbl98LgotICAvLyBodHRw
Oi8vY3JidWcuY29tLzkyMzU0Ci0gIFJUQ19EQ0hFQ0socXVldWVfLnByZXZpb3VzX2ZyYW1lKCkp
OwotCi0gIERlc2t0b3BGcmFtZSogY3VycmVudCA9IHF1ZXVlXy5jdXJyZW50X2ZyYW1lKCk7Ci0g
IERlc2t0b3BGcmFtZSogbGFzdCA9IHF1ZXVlXy5wcmV2aW91c19mcmFtZSgpOwotICBSVENfRENI
RUNLKGN1cnJlbnQgIT0gbGFzdCk7Ci0gIGZvciAoRGVza3RvcFJlZ2lvbjo6SXRlcmF0b3IgaXQo
bGFzdF9pbnZhbGlkX3JlZ2lvbl8pOyAhaXQuSXNBdEVuZCgpOwotICAgICAgIGl0LkFkdmFuY2Uo
KSkgewotICAgIGN1cnJlbnQtPkNvcHlQaXhlbHNGcm9tKCpsYXN0LCBpdC5yZWN0KCkudG9wX2xl
ZnQoKSwgaXQucmVjdCgpKTsKLSAgfQotfQotCi12b2lkIFNjcmVlbkNhcHR1cmVyTGludXg6OkRl
aW5pdFhsaWIoKSB7Ci0gIGlmIChnY18pIHsKLSAgICBYRnJlZUdDKGRpc3BsYXkoKSwgZ2NfKTsK
LSAgICBnY18gPSBudWxscHRyOwotICB9Ci0KLSAgeF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5SZWxl
YXNlKCk7Ci0KLSAgaWYgKGRpc3BsYXkoKSkgewotICAgIGlmIChkYW1hZ2VfaGFuZGxlXykgewot
ICAgICAgWERhbWFnZURlc3Ryb3koZGlzcGxheSgpLCBkYW1hZ2VfaGFuZGxlXyk7Ci0gICAgICBk
YW1hZ2VfaGFuZGxlXyA9IDA7Ci0gICAgfQotCi0gICAgaWYgKGRhbWFnZV9yZWdpb25fKSB7Ci0g
ICAgICBYRml4ZXNEZXN0cm95UmVnaW9uKGRpc3BsYXkoKSwgZGFtYWdlX3JlZ2lvbl8pOwotICAg
ICAgZGFtYWdlX3JlZ2lvbl8gPSAwOwotICAgIH0KLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2UK
LQotLy8gc3RhdGljCi1zdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBEZXNrdG9wQ2Fw
dHVyZXI6OkNyZWF0ZVJhd1NjcmVlbkNhcHR1cmVyKAotICAgIGNvbnN0IERlc2t0b3BDYXB0dXJl
T3B0aW9ucyYgb3B0aW9ucykgewotICBpZiAoIW9wdGlvbnMueF9kaXNwbGF5KCkpCi0gICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPFNjcmVlbkNhcHR1cmVyTGludXg+IGNh
cHR1cmVyKG5ldyBTY3JlZW5DYXB0dXJlckxpbnV4KCkpOwotICBpZiAoIWNhcHR1cmVyLmdldCgp
LT5Jbml0KG9wdGlvbnMpKSB7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0gIH0KLQotICByZXR1cm4g
c3RkOjptb3ZlKGNhcHR1cmVyKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2RyYXdlcl9saW51eC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9k
cmF3ZXJfbGludXguY2MKaW5kZXggMzljZWNhN2RjNjE3OTljNDZiNzMyMjUxOGU2NjUxYTM1NmQ1
MTAxNy4uMmFiNWU3NDg5MWM2MmFmOTA3NGU2ZWRhNDg2Mzk3ZDY3ZjgyZTcyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUvc2NyZWVuX2RyYXdlcl9saW51eC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9zY3JlZW5f
ZHJhd2VyX2xpbnV4LmNjCkBAIC0xNCw5ICsxNCw5IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAj
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxheS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL3NjcmVlbl9kcmF3ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9zY3JlZW5fZHJhd2VyX2xvY2tfcG9zaXguaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hfZGlzcGxheS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL3NsZWVwLmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9kcmF3ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS9zY3JlZW5fZHJhd2VyX3VuaXR0ZXN0LmNjCmluZGV4IDVmMGYzY2M1NzMzNTE4ZDU3YWJjOWE4
NmVkMGQ3Y2I0ZWIyZmJkM2EuLmQ0OGZhODljMGI1YmMwYTYyMWVlZjY5OTJhNTg4N2UyZjFjNGY5
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9kcmF3ZXJfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvc2NyZWVuX2RyYXdlcl91bml0dGVzdC5jYwpAQCAtMTQwLDcgKzE0MCwxMiBAQCBU
RVNUKFNjcmVlbkRyYXdlclRlc3QsIERJU0FCTEVEX0RyYXdSZWN0YW5nbGVzKSB7CiAgIFNsZWVw
TXMoMTAwMDApOwogfQogCi1URVNUKFNjcmVlbkRyYXdlclRlc3QsIFR3b1NjcmVlbkRyYXdlckxv
Y2tzKSB7CisjaWYgZGVmaW5lZChUSFJFQURfU0FOSVRJWkVSKSAgLy8gYnVncy53ZWJydGMub3Jn
LzEwMDE5CisjZGVmaW5lIE1BWUJFX1R3b1NjcmVlbkRyYXdlckxvY2tzIERJU0FCTEVEX1R3b1Nj
cmVlbkRyYXdlckxvY2tzCisjZWxzZQorI2RlZmluZSBNQVlCRV9Ud29TY3JlZW5EcmF3ZXJMb2Nr
cyBUd29TY3JlZW5EcmF3ZXJMb2NrcworI2VuZGlmCitURVNUKFNjcmVlbkRyYXdlclRlc3QsIE1B
WUJFX1R3b1NjcmVlbkRyYXdlckxvY2tzKSB7CiAjaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCiAg
IC8vIFNjcmVlbkRyYXdlckxvY2tQb3NpeCB3b24ndCBiZSBhYmxlIHRvIHVubGluayB0aGUgbmFt
ZWQgc2VtYXBob3JlLiBTbyB1c2UgYQogICAvLyBkaWZmZXJlbnQgc2VtYXBob3JlIG5hbWUgaGVy
ZSB0byBhdm9pZCBkZWFkbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NoYXJlZF9kZXNrdG9w
X2ZyYW1lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS9zaGFyZWRfZGVza3RvcF9mcmFtZS5oCmluZGV4IGY3MDUwOGNl
ZTE1YjY5MDZjMjRlNmQxMzY2MzJlM2IzYTUyNGMwZmQuLmVhMTJjMDAwZjJhNjQ1MjhmNWMwOGZj
NzNjMjdkMTJlMTk4YmI5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3NoYXJlZF9kZXNrdG9wX2Zy
YW1lLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvc2hhcmVkX2Rlc2t0b3BfZnJhbWUuaApAQCAtMTYsMTIgKzE2
LDEzIEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9yZWZjb3VudGVkb2JqZWN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKIAogLy8gU2hhcmVkRGVza3RvcEZyYW1lIGlzIGEgRGVza3RvcEZyYW1lIHRoYXQg
bWF5IGhhdmUgbXVsdGlwbGUgaW5zdGFuY2VzIGFsbAogLy8gc2hhcmluZyB0aGUgc2FtZSBidWZm
ZXIuCi1jbGFzcyBTaGFyZWREZXNrdG9wRnJhbWUgOiBwdWJsaWMgRGVza3RvcEZyYW1lIHsKK2Ns
YXNzIFJUQ19FWFBPUlQgU2hhcmVkRGVza3RvcEZyYW1lIDogcHVibGljIERlc2t0b3BGcmFtZSB7
CiAgcHVibGljOgogICB+U2hhcmVkRGVza3RvcEZyYW1lKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL3dpbmRvd19jYXB0dXJlcl9saW51eC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19j
YXB0dXJlcl9saW51eC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjM1OWU1MGMyZGIxOWM3NDhlNDE3YmNlZWM2
YjU4OGU0ZWQxMDM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2NhcHR1cmVy
X2xpbnV4LmNjCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRl
ICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVfb3B0aW9ucy5oIgorI2lu
Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZXIuaCIKKworI2lm
IGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkKKyNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3Bf
Y2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuaCIKKyNlbmRpZiAgLy8gZGVm
aW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQorCisjaWYgZGVmaW5lZChVU0VfWDExKQorI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl94MTEuaCIK
KyNlbmRpZiAgLy8gZGVmaW5lZChVU0VfWDExKQorCituYW1lc3BhY2Ugd2VicnRjIHsKKworLy8g
c3RhdGljCitzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBEZXNrdG9wQ2FwdHVyZXI6
OkNyZWF0ZVJhd1dpbmRvd0NhcHR1cmVyKAorICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9u
cyYgb3B0aW9ucykgeworI2lmIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkKKyAgaWYgKG9w
dGlvbnMuYWxsb3dfcGlwZXdpcmUoKSAmJiBEZXNrdG9wQ2FwdHVyZXI6OklzUnVubmluZ1VuZGVy
V2F5bGFuZCgpKSB7CisgICAgcmV0dXJuIFdpbmRvd0NhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJh
d1dpbmRvd0NhcHR1cmVyKG9wdGlvbnMpOworICB9CisjZW5kaWYgIC8vIGRlZmluZWQoV0VCUlRD
X1VTRV9QSVBFV0lSRSkKKworI2lmIGRlZmluZWQoVVNFX1gxMSkKKyAgcmV0dXJuIFdpbmRvd0Nh
cHR1cmVyWDExOjpDcmVhdGVSYXdXaW5kb3dDYXB0dXJlcihvcHRpb25zKTsKKyNlbmRpZiAgLy8g
ZGVmaW5lZChVU0VfWDExKQorCisgIHJldHVybiBudWxscHRyOworfQorCit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfbWFjLm1tIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX21hYy5tbQppbmRleCA5NWU2MjJhNzdhMWMzY2JjMWI5
MGIyNjcyMmI3ZDc3MTA4NjZjM2VlLi5iMDY0N2YwNDFiNmQ4NjA4NTE3NWRlMGU3NWI4MjQyMGEx
ZmI0YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfbWFjLm1tCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL3dpbmRvd19jYXB0dXJlcl9tYWMubW0KQEAgLTE0MCw5ICsxNDAsNyBAQCBib29s
IFdpbmRvd0NhcHR1cmVyTWFjOjpGb2N1c09uU2VsZWN0ZWRTb3VyY2UoKSB7CiBib29sIFdpbmRv
d0NhcHR1cmVyTWFjOjpJc09jY2x1ZGVkKGNvbnN0IERlc2t0b3BWZWN0b3ImIHBvcykgewogICBE
ZXNrdG9wVmVjdG9yIHN5c19wb3MgPSBwb3M7CiAgIGlmIChjb25maWd1cmF0aW9uX21vbml0b3Jf
KSB7Ci0gICAgY29uZmlndXJhdGlvbl9tb25pdG9yXy0+TG9jaygpOwogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25fbW9uaXRvcl8tPmRlc2t0b3BfY29uZmlndXJhdGlvbigp
OwotICAgIGNvbmZpZ3VyYXRpb25fbW9uaXRvcl8tPlVubG9jaygpOwogICAgIHN5c19wb3MgPSBw
b3MuYWRkKGNvbmZpZ3VyYXRpb24uYm91bmRzLnRvcF9sZWZ0KCkpOwogICB9CiAgIHJldHVybiB3
aW5kb3dfZmluZGVyXy5HZXRXaW5kb3dVbmRlclBvaW50KHN5c19wb3MpICE9IHdpbmRvd19pZF87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfeDExLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv
d2luZG93X2NhcHR1cmVyX3gxMS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRj
YTNhZTVlOGM0MDA5NmE5NDVlOWYxMjBmZmM5YmJiYTU4NDY1Yi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfeDEx
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChj
KSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAq
LwotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KLSNpbmNs
dWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRlLmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lv
bnMvWHJlbmRlci5oPgotCi0jaW5jbHVkZSA8dXRpbGl0eT4KLQotI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgiCi0jaW5jbHVkZSAibW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9jYXB0dXJlci5oIgotI2luY2x1ZGUgIm1vZHVs
ZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZnJhbWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2Rl
c2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyX3gxMS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVz
a3RvcF9jYXB0dXJlL3gxMS9zaGFyZWRfeF9kaXNwbGF5LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUveDExL3dpbmRvd19saXN0X3V0aWxzLmgiCi0jaW5jbHVkZSAibW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUveDExL3hfYXRvbV9jYWNoZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMv
ZGVza3RvcF9jYXB0dXJlL3gxMS94X3NlcnZlcl9waXhlbF9idWZmZXIuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3Bl
ZF9yZWZfcHRyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdHJhY2VfZXZlbnQuaCIKLQotbmFtZXNw
YWNlIHdlYnJ0YyB7Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIFdpbmRvd0NhcHR1cmVyTGludXgg
OiBwdWJsaWMgRGVza3RvcENhcHR1cmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBTaGFyZWRYRGlzcGxheTo6WEV2ZW50SGFuZGxlciB7Ci0gcHVibGljOgotICBXaW5kb3dD
YXB0dXJlckxpbnV4KGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7Ci0gIH5X
aW5kb3dDYXB0dXJlckxpbnV4KCkgb3ZlcnJpZGU7Ci0KLSAgLy8gRGVza3RvcENhcHR1cmVyIGlu
dGVyZmFjZS4KLSAgdm9pZCBTdGFydChDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwotICB2
b2lkIENhcHR1cmVGcmFtZSgpIG92ZXJyaWRlOwotICBib29sIEdldFNvdXJjZUxpc3QoU291cmNl
TGlzdCogc291cmNlcykgb3ZlcnJpZGU7Ci0gIGJvb2wgU2VsZWN0U291cmNlKFNvdXJjZUlkIGlk
KSBvdmVycmlkZTsKLSAgYm9vbCBGb2N1c09uU2VsZWN0ZWRTb3VyY2UoKSBvdmVycmlkZTsKLSAg
Ym9vbCBJc09jY2x1ZGVkKGNvbnN0IERlc2t0b3BWZWN0b3ImIHBvcykgb3ZlcnJpZGU7Ci0KLSAg
Ly8gU2hhcmVkWERpc3BsYXk6OlhFdmVudEhhbmRsZXIgaW50ZXJmYWNlLgotICBib29sIEhhbmRs
ZVhFdmVudChjb25zdCBYRXZlbnQmIGV2ZW50KSBvdmVycmlkZTsKLQotIHByaXZhdGU6Ci0gIERp
c3BsYXkqIGRpc3BsYXkoKSB7IHJldHVybiB4X2Rpc3BsYXlfLT5kaXNwbGF5KCk7IH0KLQotICAv
LyBSZXR1cm5zIHdpbmRvdyB0aXRsZSBmb3IgdGhlIHNwZWNpZmllZCBYIHx3aW5kb3d8LgotICBi
b29sIEdldFdpbmRvd1RpdGxlKDo6V2luZG93IHdpbmRvdywgc3RkOjpzdHJpbmcqIHRpdGxlKTsK
LQotICBDYWxsYmFjayogY2FsbGJhY2tfID0gbnVsbHB0cjsKLQotICBydGM6OnNjb3BlZF9yZWZw
dHI8U2hhcmVkWERpc3BsYXk+IHhfZGlzcGxheV87Ci0KLSAgYm9vbCBoYXNfY29tcG9zaXRlX2V4
dGVuc2lvbl8gPSBmYWxzZTsKLQotICA6OldpbmRvdyBzZWxlY3RlZF93aW5kb3dfID0gMDsKLSAg
WFNlcnZlclBpeGVsQnVmZmVyIHhfc2VydmVyX3BpeGVsX2J1ZmZlcl87Ci0gIFhBdG9tQ2FjaGUg
YXRvbV9jYWNoZV87Ci0gIFdpbmRvd0ZpbmRlclgxMSB3aW5kb3dfZmluZGVyXzsKLQotICBSVENf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFdpbmRvd0NhcHR1cmVyTGludXgpOwotfTsKLQotV2lu
ZG93Q2FwdHVyZXJMaW51eDo6V2luZG93Q2FwdHVyZXJMaW51eChjb25zdCBEZXNrdG9wQ2FwdHVy
ZU9wdGlvbnMmIG9wdGlvbnMpCi0gICAgOiB4X2Rpc3BsYXlfKG9wdGlvbnMueF9kaXNwbGF5KCkp
LAotICAgICAgYXRvbV9jYWNoZV8oZGlzcGxheSgpKSwKLSAgICAgIHdpbmRvd19maW5kZXJfKCZh
dG9tX2NhY2hlXykgewotICBpbnQgZXZlbnRfYmFzZSwgZXJyb3JfYmFzZSwgbWFqb3JfdmVyc2lv
biwgbWlub3JfdmVyc2lvbjsKLSAgaWYgKFhDb21wb3NpdGVRdWVyeUV4dGVuc2lvbihkaXNwbGF5
KCksICZldmVudF9iYXNlLCAmZXJyb3JfYmFzZSkgJiYKLSAgICAgIFhDb21wb3NpdGVRdWVyeVZl
cnNpb24oZGlzcGxheSgpLCAmbWFqb3JfdmVyc2lvbiwgJm1pbm9yX3ZlcnNpb24pICYmCi0gICAg
ICAvLyBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcCgpIHJlcXVpcmVzIHZlcnNpb24gMC4yCi0g
ICAgICAobWFqb3JfdmVyc2lvbiA+IDAgfHwgbWlub3JfdmVyc2lvbiA+PSAyKSkgewotICAgIGhh
c19jb21wb3NpdGVfZXh0ZW5zaW9uXyA9IHRydWU7Ci0gIH0gZWxzZSB7Ci0gICAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiWGNvbXBvc2l0ZSBleHRlbnNpb24gbm90IGF2YWlsYWJsZSBvciB0b28gb2xk
LiI7Ci0gIH0KLQotICB4X2Rpc3BsYXlfLT5BZGRFdmVudEhhbmRsZXIoQ29uZmlndXJlTm90aWZ5
LCB0aGlzKTsKLX0KLQotV2luZG93Q2FwdHVyZXJMaW51eDo6fldpbmRvd0NhcHR1cmVyTGludXgo
KSB7Ci0gIHhfZGlzcGxheV8tPlJlbW92ZUV2ZW50SGFuZGxlcihDb25maWd1cmVOb3RpZnksIHRo
aXMpOwotfQotCi1ib29sIFdpbmRvd0NhcHR1cmVyTGludXg6OkdldFNvdXJjZUxpc3QoU291cmNl
TGlzdCogc291cmNlcykgewotICByZXR1cm4gR2V0V2luZG93TGlzdCgmYXRvbV9jYWNoZV8sIFt0
aGlzLCBzb3VyY2VzXSg6OldpbmRvdyB3aW5kb3cpIHsKLSAgICBTb3VyY2UgdzsKLSAgICB3Lmlk
ID0gd2luZG93OwotICAgIGlmICh0aGlzLT5HZXRXaW5kb3dUaXRsZSh3aW5kb3csICZ3LnRpdGxl
KSkgewotICAgICAgc291cmNlcy0+cHVzaF9iYWNrKHcpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1
ZTsKLSAgfSk7Ci19Ci0KLWJvb2wgV2luZG93Q2FwdHVyZXJMaW51eDo6U2VsZWN0U291cmNlKFNv
dXJjZUlkIGlkKSB7Ci0gIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy5Jbml0KGRpc3BsYXko
KSwgaWQpKQotICAgIHJldHVybiBmYWxzZTsKLQotICAvLyBUZWxsIHRoZSBYIHNlcnZlciB0byBz
ZW5kIHVzIHdpbmRvdyByZXNpemluZyBldmVudHMuCi0gIFhTZWxlY3RJbnB1dChkaXNwbGF5KCks
IGlkLCBTdHJ1Y3R1cmVOb3RpZnlNYXNrKTsKLQotICBzZWxlY3RlZF93aW5kb3dfID0gaWQ7Ci0K
LSAgLy8gSW4gYWRkaXRpb24gdG8gbmVlZGluZyBYMTEgc2VydmVyLXNpZGUgc3VwcG9ydCBmb3Ig
WGNvbXBvc2l0ZSwgaXQgYWN0dWFsbHkKLSAgLy8gbmVlZHMgdG8gYmUgdHVybmVkIG9uIGZvciB0
aGUgd2luZG93LiBJZiB0aGUgdXNlciBoYXMgbW9kZXJuCi0gIC8vIGhhcmR3YXJlL2RyaXZlcnMg
YnV0IGlzbid0IHVzaW5nIGEgY29tcG9zaXRpbmcgd2luZG93IG1hbmFnZXIsIHRoYXQgd29uJ3QK
LSAgLy8gYmUgdGhlIGNhc2UuIEhlcmUgd2UgYXV0b21hdGljYWxseSB0dXJuIGl0IG9uLgotCi0g
IC8vIFJlZGlyZWN0IGRyYXdpbmcgdG8gYW4gb2Zmc2NyZWVuIGJ1ZmZlciAoaWUsIHR1cm4gb24g
Y29tcG9zaXRpbmcpLiBYMTEKLSAgLy8gcmVtZW1iZXJzIHdobyBoYXMgcmVxdWVzdGVkIHRoaXMg
YW5kIHdpbGwgdHVybiBpdCBvZmYgZm9yIHVzIHdoZW4gd2UgZXhpdC4KLSAgWENvbXBvc2l0ZVJl
ZGlyZWN0V2luZG93KGRpc3BsYXkoKSwgaWQsIENvbXBvc2l0ZVJlZGlyZWN0QXV0b21hdGljKTsK
LQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBXaW5kb3dDYXB0dXJlckxpbnV4OjpGb2N1c09u
U2VsZWN0ZWRTb3VyY2UoKSB7Ci0gIGlmICghc2VsZWN0ZWRfd2luZG93XykKLSAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgdW5zaWduZWQgaW50IG51bV9jaGlsZHJlbjsKLSAgOjpXaW5kb3cqIGNoaWxk
cmVuOwotICA6OldpbmRvdyBwYXJlbnQ7Ci0gIDo6V2luZG93IHJvb3Q7Ci0gIC8vIEZpbmQgdGhl
IHJvb3Qgd2luZG93IHRvIHBhc3MgZXZlbnQgdG8uCi0gIGludCBzdGF0dXMgPSBYUXVlcnlUcmVl
KGRpc3BsYXkoKSwgc2VsZWN0ZWRfd2luZG93XywgJnJvb3QsICZwYXJlbnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICZjaGlsZHJlbiwgJm51bV9jaGlsZHJlbik7Ci0gIGlmIChzdGF0dXMg
PT0gMCkgewotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gcXVlcnkgZm9yIHRo
ZSByb290IHdpbmRvdy4iOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGlmIChjaGlsZHJl
bikKLSAgICBYRnJlZShjaGlsZHJlbik7Ci0KLSAgWFJhaXNlV2luZG93KGRpc3BsYXkoKSwgc2Vs
ZWN0ZWRfd2luZG93Xyk7Ci0KLSAgLy8gU29tZSB3aW5kb3cgbWFuYWdlcnMgKGUuZy4sIG1ldGFj
aXR5IGluIEdOT01FKSBjb25zaWRlciBpdCBpbGxlZ2FsIHRvCi0gIC8vIHJhaXNlIGEgd2luZG93
IHdpdGhvdXQgYWxzbyBnaXZpbmcgaXQgaW5wdXQgZm9jdXMgd2l0aAotICAvLyBfTkVUX0FDVElW
RV9XSU5ET1csIHNvIFhSYWlzZVdpbmRvdygpIG9uIGl0cyBvd24gaXNuJ3QgZW5vdWdoLgotICBB
dG9tIGF0b20gPSBYSW50ZXJuQXRvbShkaXNwbGF5KCksICJfTkVUX0FDVElWRV9XSU5ET1ciLCBU
cnVlKTsKLSAgaWYgKGF0b20gIT0gTm9uZSkgewotICAgIFhFdmVudCB4ZXY7Ci0gICAgeGV2Lnhj
bGllbnQudHlwZSA9IENsaWVudE1lc3NhZ2U7Ci0gICAgeGV2LnhjbGllbnQuc2VyaWFsID0gMDsK
LSAgICB4ZXYueGNsaWVudC5zZW5kX2V2ZW50ID0gVHJ1ZTsKLSAgICB4ZXYueGNsaWVudC53aW5k
b3cgPSBzZWxlY3RlZF93aW5kb3dfOwotICAgIHhldi54Y2xpZW50Lm1lc3NhZ2VfdHlwZSA9IGF0
b207Ci0KLSAgICAvLyBUaGUgZm9ybWF0IG1lbWJlciBpcyBzZXQgdG8gOCwgMTYsIG9yIDMyIGFu
ZCBzcGVjaWZpZXMgd2hldGhlciB0aGUKLSAgICAvLyBkYXRhIHNob3VsZCBiZSB2aWV3ZWQgYXMg
YSBsaXN0IG9mIGJ5dGVzLCBzaG9ydHMsIG9yIGxvbmdzLgotICAgIHhldi54Y2xpZW50LmZvcm1h
dCA9IDMyOwotCi0gICAgbWVtc2V0KHhldi54Y2xpZW50LmRhdGEubCwgMCwgc2l6ZW9mKHhldi54
Y2xpZW50LmRhdGEubCkpOwotCi0gICAgWFNlbmRFdmVudChkaXNwbGF5KCksIHJvb3QsIEZhbHNl
LAotICAgICAgICAgICAgICAgU3Vic3RydWN0dXJlUmVkaXJlY3RNYXNrIHwgU3Vic3RydWN0dXJl
Tm90aWZ5TWFzaywgJnhldik7Ci0gIH0KLSAgWEZsdXNoKGRpc3BsYXkoKSk7Ci0gIHJldHVybiB0
cnVlOwotfQotCi12b2lkIFdpbmRvd0NhcHR1cmVyTGludXg6OlN0YXJ0KENhbGxiYWNrKiBjYWxs
YmFjaykgewotICBSVENfRENIRUNLKCFjYWxsYmFja18pOwotICBSVENfRENIRUNLKGNhbGxiYWNr
KTsKLQotICBjYWxsYmFja18gPSBjYWxsYmFjazsKLX0KLQotdm9pZCBXaW5kb3dDYXB0dXJlckxp
bnV4OjpDYXB0dXJlRnJhbWUoKSB7Ci0gIFRSQUNFX0VWRU5UMCgid2VicnRjIiwgIldpbmRvd0Nh
cHR1cmVyTGludXg6OkNhcHR1cmVGcmFtZSIpOwotCi0gIGlmICgheF9zZXJ2ZXJfcGl4ZWxfYnVm
ZmVyXy5Jc1dpbmRvd1ZhbGlkKCkpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVGhlIHdp
bmRvdyBpcyBubyBsb25nZXIgdmFsaWQuIjsKLSAgICBjYWxsYmFja18tPk9uQ2FwdHVyZVJlc3Vs
dChSZXN1bHQ6OkVSUk9SX1BFUk1BTkVOVCwgbnVsbHB0cik7Ci0gICAgcmV0dXJuOwotICB9Ci0K
LSAgeF9kaXNwbGF5Xy0+UHJvY2Vzc1BlbmRpbmdYRXZlbnRzKCk7Ci0KLSAgaWYgKCFoYXNfY29t
cG9zaXRlX2V4dGVuc2lvbl8pIHsKLSAgICAvLyBXaXRob3V0IHRoZSBYY29tcG9zaXRlIGV4dGVu
c2lvbiB3ZSBjYXB0dXJlIHdoZW4gdGhlIHdob2xlIHdpbmRvdyBpcwotICAgIC8vIHZpc2libGUg
b24gc2NyZWVuIGFuZCBub3QgY292ZXJlZCBieSBhbnkgb3RoZXIgd2luZG93LiBUaGlzIGlzIG5v
dAotICAgIC8vIHNvbWV0aGluZyB3ZSB3YW50IHNvIGluc3RlYWQsIGp1c3QgYmFpbCBvdXQuCi0g
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIk5vIFhjb21wb3NpdGUgZXh0ZW5zaW9uIGRldGVjdGVk
LiI7Ci0gICAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9QRVJNQU5F
TlQsIG51bGxwdHIpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChHZXRXaW5kb3dTdGF0ZSgm
YXRvbV9jYWNoZV8sIHNlbGVjdGVkX3dpbmRvd18pID09IEljb25pY1N0YXRlKSB7Ci0gICAgLy8g
V2luZG93IGlzIGluIG1pbmltaXplZC4gUmV0dXJuIGEgMXgxIGZyYW1lIGFzIHNhbWUgYXMgT1NY
L1dpbiBkb2VzLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IGZyYW1lKAotICAg
ICAgICBuZXcgQmFzaWNEZXNrdG9wRnJhbWUoRGVza3RvcFNpemUoMSwgMSkpKTsKLSAgICBjYWxs
YmFja18tPk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OlNVQ0NFU1MsIHN0ZDo6bW92ZShmcmFtZSkp
OwotICAgIHJldHVybjsKLSAgfQotCi0gIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IGZy
YW1lKAotICAgICAgbmV3IEJhc2ljRGVza3RvcEZyYW1lKHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8u
d2luZG93X3NpemUoKSkpOwotCi0gIHhfc2VydmVyX3BpeGVsX2J1ZmZlcl8uU3luY2hyb25pemUo
KTsKLSAgaWYgKCF4X3NlcnZlcl9waXhlbF9idWZmZXJfLkNhcHR1cmVSZWN0KERlc2t0b3BSZWN0
OjpNYWtlU2l6ZShmcmFtZS0+c2l6ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLmdldCgpKSkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwg
IlRlbXBvcmFyaWx5IGZhaWxlZCB0byBjYXB0dXJlIHdpbm9kdy4iOwotICAgIGNhbGxiYWNrXy0+
T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfVEVNUE9SQVJZLCBudWxscHRyKTsKLSAgICBy
ZXR1cm47Ci0gIH0KLQotICBmcmFtZS0+bXV0YWJsZV91cGRhdGVkX3JlZ2lvbigpLT5TZXRSZWN0
KAotICAgICAgRGVza3RvcFJlY3Q6Ok1ha2VTaXplKGZyYW1lLT5zaXplKCkpKTsKLSAgZnJhbWUt
PnNldF90b3BfbGVmdCh4X3NlcnZlcl9waXhlbF9idWZmZXJfLndpbmRvd19yZWN0KCkudG9wX2xl
ZnQoKSk7Ci0KLSAgY2FsbGJhY2tfLT5PbkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpTVUNDRVNTLCBz
dGQ6Om1vdmUoZnJhbWUpKTsKLX0KLQotYm9vbCBXaW5kb3dDYXB0dXJlckxpbnV4OjpJc09jY2x1
ZGVkKGNvbnN0IERlc2t0b3BWZWN0b3ImIHBvcykgewotICByZXR1cm4gd2luZG93X2ZpbmRlcl8u
R2V0V2luZG93VW5kZXJQb2ludChwb3MpICE9Ci0gICAgICAgICBzdGF0aWNfY2FzdDxXaW5kb3dJ
ZD4oc2VsZWN0ZWRfd2luZG93Xyk7Ci19Ci0KLWJvb2wgV2luZG93Q2FwdHVyZXJMaW51eDo6SGFu
ZGxlWEV2ZW50KGNvbnN0IFhFdmVudCYgZXZlbnQpIHsKLSAgaWYgKGV2ZW50LnR5cGUgPT0gQ29u
ZmlndXJlTm90aWZ5KSB7Ci0gICAgWENvbmZpZ3VyZUV2ZW50IHhjZSA9IGV2ZW50Lnhjb25maWd1
cmU7Ci0gICAgaWYgKHhjZS53aW5kb3cgPT0gc2VsZWN0ZWRfd2luZG93XykgewotICAgICAgaWYg
KCFEZXNrdG9wUmVjdEZyb21YQXR0cmlidXRlcyh4Y2UpLmVxdWFscygKLSAgICAgICAgICAgICAg
eF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyXy53aW5kb3dfcmVjdCgpKSkgewotICAgICAgICBpZiAoIXhf
c2VydmVyX3BpeGVsX2J1ZmZlcl8uSW5pdChkaXNwbGF5KCksIHNlbGVjdGVkX3dpbmRvd18pKSB7
Ci0gICAgICAgICAgUlRDX0xPRyhMU19FUlJPUikKLSAgICAgICAgICAgICAgPDwgIkZhaWxlZCB0
byBpbml0aWFsaXplIHBpeGVsIGJ1ZmZlciBhZnRlciByZXNpemluZy4iOwotICAgICAgICB9Ci0g
ICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLy8gQWx3YXlzIHJldHVybnMgZmFsc2UsIHNvIG90aGVy
IG9ic2VydmVycyBjYW4gc3RpbGwgcmVjZWl2ZSB0aGUgZXZlbnRzLgotICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgV2luZG93Q2FwdHVyZXJMaW51eDo6R2V0V2luZG93VGl0bGUoOjpXaW5kb3cg
d2luZG93LCBzdGQ6OnN0cmluZyogdGl0bGUpIHsKLSAgaW50IHN0YXR1czsKLSAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKLSAgWFRleHRQcm9wZXJ0eSB3aW5kb3dfbmFtZTsKLSAgd2luZG93X25hbWUu
dmFsdWUgPSBudWxscHRyOwotICBpZiAod2luZG93KSB7Ci0gICAgc3RhdHVzID0gWEdldFdNTmFt
ZShkaXNwbGF5KCksIHdpbmRvdywgJndpbmRvd19uYW1lKTsKLSAgICBpZiAoc3RhdHVzICYmIHdp
bmRvd19uYW1lLnZhbHVlICYmIHdpbmRvd19uYW1lLm5pdGVtcykgewotICAgICAgaW50IGNudDsK
LSAgICAgIGNoYXIqKiBsaXN0ID0gbnVsbHB0cjsKLSAgICAgIHN0YXR1cyA9Ci0gICAgICAgICAg
WHV0ZjhUZXh0UHJvcGVydHlUb1RleHRMaXN0KGRpc3BsYXkoKSwgJndpbmRvd19uYW1lLCAmbGlz
dCwgJmNudCk7Ci0gICAgICBpZiAoc3RhdHVzID49IFN1Y2Nlc3MgJiYgY250ICYmICpsaXN0KSB7
Ci0gICAgICAgIGlmIChjbnQgPiAxKSB7Ci0gICAgICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAi
V2luZG93IGhhcyAiIDw8IGNudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiB0ZXh0
IHByb3BlcnRpZXMsIG9ubHkgdXNpbmcgdGhlIGZpcnN0IG9uZS4iOwotICAgICAgICB9Ci0gICAg
ICAgICp0aXRsZSA9ICpsaXN0OwotICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgfQotICAg
ICAgaWYgKGxpc3QpCi0gICAgICAgIFhGcmVlU3RyaW5nTGlzdChsaXN0KTsKLSAgICB9Ci0gICAg
aWYgKHdpbmRvd19uYW1lLnZhbHVlKQotICAgICAgWEZyZWUod2luZG93X25hbWUudmFsdWUpOwot
ICB9Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi0vLyBzdGF0aWMK
LXN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+IERlc2t0b3BDYXB0dXJlcjo6Q3JlYXRl
UmF3V2luZG93Q2FwdHVyZXIoCi0gICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRp
b25zKSB7Ci0gIGlmICghb3B0aW9ucy54X2Rpc3BsYXkoKSkKLSAgICByZXR1cm4gbnVsbHB0cjsK
LSAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+KG5ldyBXaW5kb3dDYXB0
dXJlckxpbnV4KG9wdGlvbnMpKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRv
d19maW5kZXJfdW5pdHRlc3QuY2MKaW5kZXggODgzMjdhYWFjNTQ4M2FkOTUxOTk4MTAxNzdlODc1
ZTJmNjgzODEyMC4uZGY5MDY3ZWYyY2I1OTczMzU3MzJhZWZlNDkxY2VhMjRhNGUzOGI3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS93aW5kb3dfZmluZGVyX3VuaXR0ZXN0LmNjCkBAIC0yMSw4ICsyMSw4IEBACiAKICNpZiBkZWZp
bmVkKFVTRV9YMTEpCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3NoYXJlZF94X2Rpc3BsYXkuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9hdG9tX2NhY2hlLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2hhcmVkX3hfZGlzcGxheS5oIgorI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3hfYXRvbV9jYWNoZS5oIgogI2VuZGlm
CiAKICNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS93aW5kb3df
ZmluZGVyX3gxMS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5kZXJfeDExLmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMzY5NDMyNmQyZmQ4NDBmYjRlOTMyYTI5MGU4ZGFkYTE3YWVk
NTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL3dpbmRvd19maW5kZXJfeDExLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAot
LyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
Ci0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS93aW5kb3dfZmluZGVyX3gxMS5oIgotCi0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5Lmgi
Ci0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3dpbmRvd19saXN0X3V0aWxz
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewot
Ci1XaW5kb3dGaW5kZXJYMTE6OldpbmRvd0ZpbmRlclgxMShYQXRvbUNhY2hlKiBjYWNoZSkgOiBj
YWNoZV8oY2FjaGUpIHsKLSAgUlRDX0RDSEVDSyhjYWNoZV8pOwotfQotCi1XaW5kb3dGaW5kZXJY
MTE6On5XaW5kb3dGaW5kZXJYMTEoKSA9IGRlZmF1bHQ7Ci0KLVdpbmRvd0lkIFdpbmRvd0ZpbmRl
clgxMTo6R2V0V2luZG93VW5kZXJQb2ludChEZXNrdG9wVmVjdG9yIHBvaW50KSB7Ci0gIFdpbmRv
d0lkIGlkID0ga051bGxXaW5kb3dJZDsKLSAgR2V0V2luZG93TGlzdChjYWNoZV8sIFsmaWQsIHRo
aXMsIHBvaW50XSg6OldpbmRvdyB3aW5kb3cpIHsKLSAgICBEZXNrdG9wUmVjdCByZWN0OwotICAg
IGlmIChHZXRXaW5kb3dSZWN0KHRoaXMtPmNhY2hlXy0+ZGlzcGxheSgpLCB3aW5kb3csICZyZWN0
KSAmJgotICAgICAgICByZWN0LkNvbnRhaW5zKHBvaW50KSkgewotICAgICAgaWQgPSB3aW5kb3c7
Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9KTsKLSAg
cmV0dXJuIGlkOwotfQotCi0vLyBzdGF0aWMKLXN0ZDo6dW5pcXVlX3B0cjxXaW5kb3dGaW5kZXI+
IFdpbmRvd0ZpbmRlcjo6Q3JlYXRlKAotICAgIGNvbnN0IFdpbmRvd0ZpbmRlcjo6T3B0aW9ucyYg
b3B0aW9ucykgewotICBpZiAob3B0aW9ucy5jYWNoZSA9PSBudWxscHRyKSB7Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci0gIH0KLQotICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8V2luZG93RmluZGVy
WDExPihvcHRpb25zLmNhY2hlKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl94MTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3dpbmRvd19maW5k
ZXJfeDExLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4YzMwYzQ2NzBiYWM4MmUz
OTk1YzllMTE3N2NhMTRjYmE2ZDdlZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2ZpbmRlcl94MTEuaAorKysgL2Rldi9udWxs
CkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE1PRFVM
RVNfREVTS1RPUF9DQVBUVVJFX1dJTkRPV19GSU5ERVJfWDExX0hfCi0jZGVmaW5lIE1PRFVMRVNf
REVTS1RPUF9DQVBUVVJFX1dJTkRPV19GSU5ERVJfWDExX0hfCi0KLSNpbmNsdWRlICJtb2R1bGVz
L2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfZmluZGVyLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewot
Ci1jbGFzcyBYQXRvbUNhY2hlOwotCi0vLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgV2luZG93Rmlu
ZGVyIGZvciBYMTEuCi1jbGFzcyBXaW5kb3dGaW5kZXJYMTEgZmluYWwgOiBwdWJsaWMgV2luZG93
RmluZGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFdpbmRvd0ZpbmRlclgxMShYQXRvbUNhY2hl
KiBjYWNoZSk7Ci0gIH5XaW5kb3dGaW5kZXJYMTEoKSBvdmVycmlkZTsKLQotICAvLyBXaW5kb3dG
aW5kZXIgaW1wbGVtZW50YXRpb24uCi0gIFdpbmRvd0lkIEdldFdpbmRvd1VuZGVyUG9pbnQoRGVz
a3RvcFZlY3RvciBwb2ludCkgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICBYQXRvbUNhY2hlKiBj
b25zdCBjYWNoZV87Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8g
TU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfV0lORE9XX0ZJTkRFUl9YMTFfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL3gxMS9zaGFyZWRfeF9kaXNwbGF5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3NoYXJlZF94
X2Rpc3BsYXkuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiNmE2NGI4MWQ5Yjc1
MWJhOTVhM2NhZjJiZTliMmU4NzE5YWExZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3NoYXJlZF94X2Rpc3BsYXkuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQot
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1
ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS9zaGFyZWRfeF9kaXNwbGF5LmgiCi0KLSNp
bmNsdWRlIDxYMTEvWGxpYi5oPgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotCi1uYW1l
c3BhY2Ugd2VicnRjIHsKLQotU2hhcmVkWERpc3BsYXk6OlNoYXJlZFhEaXNwbGF5KERpc3BsYXkq
IGRpc3BsYXkpIDogZGlzcGxheV8oZGlzcGxheSkgewotICBSVENfRENIRUNLKGRpc3BsYXlfKTsK
LX0KLQotU2hhcmVkWERpc3BsYXk6On5TaGFyZWRYRGlzcGxheSgpIHsKLSAgUlRDX0RDSEVDSyhl
dmVudF9oYW5kbGVyc18uZW1wdHkoKSk7Ci0gIFhDbG9zZURpc3BsYXkoZGlzcGxheV8pOwotfQot
Ci0vLyBzdGF0aWMKLXJ0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRYRGlzcGxheT4gU2hhcmVkWERp
c3BsYXk6OkNyZWF0ZSgKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGlzcGxheV9uYW1lKSB7Ci0g
IERpc3BsYXkqIGRpc3BsYXkgPQotICAgICAgWE9wZW5EaXNwbGF5KGRpc3BsYXlfbmFtZS5lbXB0
eSgpID8gTlVMTCA6IGRpc3BsYXlfbmFtZS5jX3N0cigpKTsKLSAgaWYgKCFkaXNwbGF5KSB7Ci0g
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlVuYWJsZSB0byBvcGVuIGRpc3BsYXkiOwotICAgIHJl
dHVybiBOVUxMOwotICB9Ci0gIHJldHVybiBuZXcgU2hhcmVkWERpc3BsYXkoZGlzcGxheSk7Ci19
Ci0KLS8vIHN0YXRpYwotcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiBTaGFyZWRY
RGlzcGxheTo6Q3JlYXRlRGVmYXVsdCgpIHsKLSAgcmV0dXJuIENyZWF0ZShzdGQ6OnN0cmluZygp
KTsKLX0KLQotdm9pZCBTaGFyZWRYRGlzcGxheTo6QWRkRXZlbnRIYW5kbGVyKGludCB0eXBlLCBY
RXZlbnRIYW5kbGVyKiBoYW5kbGVyKSB7Ci0gIGV2ZW50X2hhbmRsZXJzX1t0eXBlXS5wdXNoX2Jh
Y2soaGFuZGxlcik7Ci19Ci0KLXZvaWQgU2hhcmVkWERpc3BsYXk6OlJlbW92ZUV2ZW50SGFuZGxl
cihpbnQgdHlwZSwgWEV2ZW50SGFuZGxlciogaGFuZGxlcikgewotICBFdmVudEhhbmRsZXJzTWFw
OjppdGVyYXRvciBoYW5kbGVycyA9IGV2ZW50X2hhbmRsZXJzXy5maW5kKHR5cGUpOwotICBpZiAo
aGFuZGxlcnMgPT0gZXZlbnRfaGFuZGxlcnNfLmVuZCgpKQotICAgIHJldHVybjsKLQotICBzdGQ6
OnZlY3RvcjxYRXZlbnRIYW5kbGVyKj46Oml0ZXJhdG9yIG5ld19lbmQgPQotICAgICAgc3RkOjpy
ZW1vdmUoaGFuZGxlcnMtPnNlY29uZC5iZWdpbigpLCBoYW5kbGVycy0+c2Vjb25kLmVuZCgpLCBo
YW5kbGVyKTsKLSAgaGFuZGxlcnMtPnNlY29uZC5lcmFzZShuZXdfZW5kLCBoYW5kbGVycy0+c2Vj
b25kLmVuZCgpKTsKLQotICAvLyBDaGVjayBpZiBubyBoYW5kbGVycyBsZWZ0IGZvciB0aGlzIGV2
ZW50LgotICBpZiAoaGFuZGxlcnMtPnNlY29uZC5lbXB0eSgpKQotICAgIGV2ZW50X2hhbmRsZXJz
Xy5lcmFzZShoYW5kbGVycyk7Ci19Ci0KLXZvaWQgU2hhcmVkWERpc3BsYXk6OlByb2Nlc3NQZW5k
aW5nWEV2ZW50cygpIHsKLSAgLy8gSG9sZCByZWZlcmVuY2UgdG8gfHRoaXN8IHRvIHByZXZlbnQg
aXQgZnJvbSBiZWluZyBkZXN0cm95ZWQgd2hpbGUKLSAgLy8gcHJvY2Vzc2luZyBldmVudHMuCi0g
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRYRGlzcGxheT4gc2VsZih0aGlzKTsKLQotICAvLyBG
aW5kIHRoZSBudW1iZXIgb2YgZXZlbnRzIHRoYXQgYXJlIG91dHN0YW5kaW5nICJub3cuIiAgV2Ug
ZG9uJ3QganVzdCBsb29wCi0gIC8vIG9uIFhQZW5kaW5nIGJlY2F1c2Ugd2Ugd2FudCB0byBndWFy
YW50ZWUgdGhpcyB0ZXJtaW5hdGVzLgotICBpbnQgZXZlbnRzX3RvX3Byb2Nlc3MgPSBYUGVuZGlu
ZyhkaXNwbGF5KCkpOwotICBYRXZlbnQgZTsKLQotICBmb3IgKGludCBpID0gMDsgaSA8IGV2ZW50
c190b19wcm9jZXNzOyBpKyspIHsKLSAgICBYTmV4dEV2ZW50KGRpc3BsYXkoKSwgJmUpOwotICAg
IEV2ZW50SGFuZGxlcnNNYXA6Oml0ZXJhdG9yIGhhbmRsZXJzID0gZXZlbnRfaGFuZGxlcnNfLmZp
bmQoZS50eXBlKTsKLSAgICBpZiAoaGFuZGxlcnMgPT0gZXZlbnRfaGFuZGxlcnNfLmVuZCgpKQot
ICAgICAgY29udGludWU7Ci0gICAgZm9yIChzdGQ6OnZlY3RvcjxYRXZlbnRIYW5kbGVyKj46Oml0
ZXJhdG9yIGl0ID0gaGFuZGxlcnMtPnNlY29uZC5iZWdpbigpOwotICAgICAgICAgaXQgIT0gaGFu
ZGxlcnMtPnNlY29uZC5lbmQoKTsgKytpdCkgewotICAgICAgaWYgKCgqaXQpLT5IYW5kbGVYRXZl
bnQoZSkpCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hfZGlzcGxheS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUveDExL3NoYXJlZF94X2Rpc3BsYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNGQ5M2IzYjE3NTE0NGQxNGM3ZDM2M2I0YzFiM2M2Mjc4N2M0OGNlZi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvc2hhcmVkX3hf
ZGlzcGxheS5oCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgKGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgotICovCi0KLSNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDExX1NIQVJFRF9YX0RJ
U1BMQVlfSF8KLSNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDExX1NIQVJFRF9YX0RJ
U1BMQVlfSF8KLQotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRl
IDxzdHJpbmc+Ci0KLSNpbmNsdWRlICJhcGkvcmVmY291bnRlZGJhc2UuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3Jl
Zl9wdHIuaCIKLQotLy8gSW5jbHVkaW5nIFhsaWIuaCB3aWxsIGludm9sdmUgZXZpbCBkZWZpbmVz
IChCb29sLCBTdGF0dXMsIFRydWUsIEZhbHNlKSwgd2hpY2gKLS8vIGVhc2lseSBjb25mbGljdCB3
aXRoIG90aGVyIGhlYWRlcnMuCi10eXBlZGVmIHN0cnVjdCBfWERpc3BsYXkgRGlzcGxheTsKLXR5
cGVkZWYgdW5pb24gX1hFdmVudCBYRXZlbnQ7Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBB
IHJlZi1jb3VudGVkIG9iamVjdCB0byBzdG9yZSBYRGlzcGxheSBjb25uZWN0aW9uLgotY2xhc3Mg
U2hhcmVkWERpc3BsYXkgOiBwdWJsaWMgcnRjOjpSZWZDb3VudGVkQmFzZSB7Ci0gcHVibGljOgot
ICBjbGFzcyBYRXZlbnRIYW5kbGVyIHsKLSAgIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5YRXZlbnRI
YW5kbGVyKCkge30KLQotICAgIC8vIFByb2Nlc3NlcyBYRXZlbnQuIFJldHVybnMgdHJ1ZSBpZiB0
aGUgZXZlbnQgaGFzIGJlZW4gaGFuZGxlZC4KLSAgICB2aXJ0dWFsIGJvb2wgSGFuZGxlWEV2ZW50
KGNvbnN0IFhFdmVudCYgZXZlbnQpID0gMDsKLSAgfTsKLQotICAvLyBUYWtlcyBvd25lcnNoaXAg
b2YgfGRpc3BsYXl8LgotICBleHBsaWNpdCBTaGFyZWRYRGlzcGxheShEaXNwbGF5KiBkaXNwbGF5
KTsKLQotICAvLyBDcmVhdGVzIGEgbmV3IFgxMSBEaXNwbGF5IGZvciB0aGUgfGRpc3BsYXlfbmFt
ZXwuIE5VTEwgaXMgcmV0dXJuZWQgaWYgWDExCi0gIC8vIGNvbm5lY3Rpb24gZmFpbGVkLiBFcXVp
dmFsZW50IHRvIENyZWF0ZURlZmF1bHQoKSB3aGVuIHxkaXNwbGF5X25hbWV8IGlzCi0gIC8vIGVt
cHR5LgotICBzdGF0aWMgcnRjOjpzY29wZWRfcmVmcHRyPFNoYXJlZFhEaXNwbGF5PiBDcmVhdGUo
Ci0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGlzcGxheV9uYW1lKTsKLQotICAvLyBDcmVhdGVz
IFgxMSBEaXNwbGF5IGNvbm5lY3Rpb24gZm9yIHRoZSBkZWZhdWx0IGRpc3BsYXkgKGUuZy4gc3Bl
Y2lmaWVkIGluCi0gIC8vIERJU1BMQVkpLiBOVUxMIGlzIHJldHVybmVkIGlmIFgxMSBjb25uZWN0
aW9uIGZhaWxlZC4KLSAgc3RhdGljIHJ0Yzo6c2NvcGVkX3JlZnB0cjxTaGFyZWRYRGlzcGxheT4g
Q3JlYXRlRGVmYXVsdCgpOwotCi0gIERpc3BsYXkqIGRpc3BsYXkoKSB7IHJldHVybiBkaXNwbGF5
XzsgfQotCi0gIC8vIEFkZHMgYSBuZXcgZXZlbnQgfGhhbmRsZXJ8IGZvciBYRXZlbnQncyBvZiB8
dHlwZXwuCi0gIHZvaWQgQWRkRXZlbnRIYW5kbGVyKGludCB0eXBlLCBYRXZlbnRIYW5kbGVyKiBo
YW5kbGVyKTsKLQotICAvLyBSZW1vdmVzIGV2ZW50IHxoYW5kbGVyfCBhZGRlZCB1c2luZyB8QWRk
RXZlbnRIYW5kbGVyfC4gRG9lc24ndCBkbyBhbnl0aGluZwotICAvLyBpZiB8aGFuZGxlcnwgaXMg
bm90IHJlZ2lzdGVyZWQuCi0gIHZvaWQgUmVtb3ZlRXZlbnRIYW5kbGVyKGludCB0eXBlLCBYRXZl
bnRIYW5kbGVyKiBoYW5kbGVyKTsKLQotICAvLyBQcm9jZXNzZXMgcGVuZGluZyBYRXZlbnRzLCBj
YWxsaW5nIGNvcnJlc3BvbmRpbmcgZXZlbnQgaGFuZGxlcnMuCi0gIHZvaWQgUHJvY2Vzc1BlbmRp
bmdYRXZlbnRzKCk7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIH5TaGFyZWRYRGlzcGxheSgpIG92ZXJyaWRl
OwotCi0gcHJpdmF0ZToKLSAgdHlwZWRlZiBzdGQ6Om1hcDxpbnQsIHN0ZDo6dmVjdG9yPFhFdmVu
dEhhbmRsZXIqPiA+IEV2ZW50SGFuZGxlcnNNYXA7Ci0KLSAgRGlzcGxheSogZGlzcGxheV87Ci0K
LSAgRXZlbnRIYW5kbGVyc01hcCBldmVudF9oYW5kbGVyc187Ci0KLSAgUlRDX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihTaGFyZWRYRGlzcGxheSk7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCi0KLSNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDExX1NIQVJFRF9YX0RJ
U1BMQVlfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS93aW5kb3dfbGlzdF91dGlscy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3Rv
cF9jYXB0dXJlL3gxMS93aW5kb3dfbGlzdF91dGlscy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmUwNzBkODg3ODI0YzBhZjY1YTlmNjU3OTE3ZWU5Mjg2Y2JhY2E1Yy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvd2lu
ZG93X2xpc3RfdXRpbHMuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBAQAotLyoKLSAq
ICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEv
d2luZG93X2xpc3RfdXRpbHMuaCIKLQotI2luY2x1ZGUgPFgxMS9YYXRvbS5oPgotI2luY2x1ZGUg
PFgxMS9YbGliLmg+Ci0jaW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+
Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw
dHVyZS94MTEveF9lcnJvcl90cmFwLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNz
IERlZmVyWEZyZWUgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgRGVmZXJYRnJlZSh2b2lkKiBkYXRh
KSA6IGRhdGFfKGRhdGEpIHt9Ci0gIH5EZWZlclhGcmVlKCk7Ci0KLSBwcml2YXRlOgotICB2b2lk
KiBjb25zdCBkYXRhXzsKLX07Ci0KLURlZmVyWEZyZWU6On5EZWZlclhGcmVlKCkgewotICBpZiAo
ZGF0YV8pCi0gICAgWEZyZWUoZGF0YV8pOwotfQotCi0vLyBDb252ZW5pZW5jZSB3cmFwcGVyIGZv
ciBYR2V0V2luZG93UHJvcGVydHkoKSByZXN1bHRzLgotdGVtcGxhdGUgPGNsYXNzIFByb3BlcnR5
VHlwZT4KLWNsYXNzIFhXaW5kb3dQcm9wZXJ0eSB7Ci0gcHVibGljOgotICBYV2luZG93UHJvcGVy
dHkoRGlzcGxheSogZGlzcGxheSwgV2luZG93IHdpbmRvdywgQXRvbSBwcm9wZXJ0eSkgewotICAg
IGNvbnN0IGludCBrQml0c1BlckJ5dGUgPSA4OwotICAgIEF0b20gYWN0dWFsX3R5cGU7Ci0gICAg
aW50IGFjdHVhbF9mb3JtYXQ7Ci0gICAgdW5zaWduZWQgbG9uZyBieXRlc19hZnRlcjsgIC8vIE5P
TElOVDogdHlwZSByZXF1aXJlZCBieSBYR2V0V2luZG93UHJvcGVydHkKLSAgICBpbnQgc3RhdHVz
ID0gWEdldFdpbmRvd1Byb3BlcnR5KAotICAgICAgICBkaXNwbGF5LCB3aW5kb3csIHByb3BlcnR5
LCAwTCwgfjBMLCBGYWxzZSwgQW55UHJvcGVydHlUeXBlLAotICAgICAgICAmYWN0dWFsX3R5cGUs
ICZhY3R1YWxfZm9ybWF0LCAmc2l6ZV8sICZieXRlc19hZnRlciwgJmRhdGFfKTsKLSAgICBpZiAo
c3RhdHVzICE9IFN1Y2Nlc3MpIHsKLSAgICAgIGRhdGFfID0gbnVsbHB0cjsKLSAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKHNpemVvZihQcm9wZXJ0eVR5cGUpICoga0JpdHNQZXJCeXRlICE9
IGFjdHVhbF9mb3JtYXQpIHsKLSAgICAgIHNpemVfID0gMDsKLSAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpc192YWxpZF8gPSB0cnVlOwotICB9Ci0KLSAgflhXaW5kb3dQcm9wZXJ0eSgpIHsK
LSAgICBpZiAoZGF0YV8pCi0gICAgICBYRnJlZShkYXRhXyk7Ci0gIH0KLQotICAvLyBUcnVlIGlm
IHdlIGdvdCBwcm9wZXJseSB2YWx1ZSBzdWNjZXNzZnVsbHkuCi0gIGJvb2wgaXNfdmFsaWQoKSBj
b25zdCB7IHJldHVybiBpc192YWxpZF87IH0KLQotICAvLyBTaXplIGFuZCB2YWx1ZSBvZiB0aGUg
cHJvcGVydHkuCi0gIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0KLSAgY29u
c3QgUHJvcGVydHlUeXBlKiBkYXRhKCkgY29uc3QgewotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFByb3BlcnR5VHlwZSo+KGRhdGFfKTsKLSAgfQotICBQcm9wZXJ0eVR5cGUqIGRhdGEoKSB7
IHJldHVybiByZWludGVycHJldF9jYXN0PFByb3BlcnR5VHlwZSo+KGRhdGFfKTsgfQotCi0gcHJp
dmF0ZToKLSAgYm9vbCBpc192YWxpZF8gPSBmYWxzZTsKLSAgdW5zaWduZWQgbG9uZyBzaXplXyA9
IDA7ICAvLyBOT0xJTlQ6IHR5cGUgcmVxdWlyZWQgYnkgWEdldFdpbmRvd1Byb3BlcnR5Ci0gIHVu
c2lnbmVkIGNoYXIqIGRhdGFfID0gbnVsbHB0cjsKLQotICBSVENfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOKFhXaW5kb3dQcm9wZXJ0eSk7Ci19OwotCi0vLyBJdGVyYXRlcyB0aHJvdWdoIHx3aW5k
b3d8IGhpZXJhcmNoeSB0byBmaW5kIGZpcnN0IHZpc2libGUgd2luZG93LCBpLmUuIG9uZQotLy8g
dGhhdCBoYXMgV01fU1RBVEUgcHJvcGVydHkgc2V0IHRvIE5vcm1hbFN0YXRlLgotLy8gU2VlIGh0
dHA6Ly90cm9uY2hlLmNvbS9ndWkveC9pY2NjbS9zZWMtNC5odG1sI3MtNC4xLjMuMSAuCi06Oldp
bmRvdyBHZXRBcHBsaWNhdGlvbldpbmRvdyhYQXRvbUNhY2hlKiBjYWNoZSwgOjpXaW5kb3cgd2lu
ZG93KSB7Ci0gIGludDMyX3Qgc3RhdGUgPSBHZXRXaW5kb3dTdGF0ZShjYWNoZSwgd2luZG93KTsK
LSAgaWYgKHN0YXRlID09IE5vcm1hbFN0YXRlKSB7Ci0gICAgLy8gV2luZG93IGhhcyBXTV9TVEFU
RT09Tm9ybWFsU3RhdGUuIFJldHVybiBpdC4KLSAgICByZXR1cm4gd2luZG93OwotICB9IGVsc2Ug
aWYgKHN0YXRlID09IEljb25pY1N0YXRlKSB7Ci0gICAgLy8gV2luZG93IGlzIGluIG1pbmltaXpl
ZC4gU2tpcCBpdC4KLSAgICByZXR1cm4gMDsKLSAgfQotCi0gIFJUQ19EQ0hFQ0tfRVEoc3RhdGUs
IFdpdGhkcmF3blN0YXRlKTsKLSAgLy8gSWYgdGhlIHdpbmRvdyBpcyBpbiBXaXRoZHJhd25TdGF0
ZSB0aGVuIGxvb2sgYXQgYWxsIG9mIGl0cyBjaGlsZHJlbi4KLSAgOjpXaW5kb3cgcm9vdCwgcGFy
ZW50OwotICA6OldpbmRvdyogY2hpbGRyZW47Ci0gIHVuc2lnbmVkIGludCBudW1fY2hpbGRyZW47
Ci0gIGlmICghWFF1ZXJ5VHJlZShjYWNoZS0+ZGlzcGxheSgpLCB3aW5kb3csICZyb290LCAmcGFy
ZW50LCAmY2hpbGRyZW4sCi0gICAgICAgICAgICAgICAgICAmbnVtX2NoaWxkcmVuKSkgewotICAg
IFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gcXVlcnkgZm9yIGNoaWxkIHdpbmRvd3Mg
YWx0aG91Z2ggd2luZG93IgotICAgICAgICAgICAgICAgICAgICAgIDw8ICJkb2VzIG5vdCBoYXZl
IGEgdmFsaWQgV01fU1RBVEUuIjsKLSAgICByZXR1cm4gMDsKLSAgfQotICA6OldpbmRvdyBhcHBf
d2luZG93ID0gMDsKLSAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1fY2hpbGRyZW47
ICsraSkgewotICAgIGFwcF93aW5kb3cgPSBHZXRBcHBsaWNhdGlvbldpbmRvdyhjYWNoZSwgY2hp
bGRyZW5baV0pOwotICAgIGlmIChhcHBfd2luZG93KQotICAgICAgYnJlYWs7Ci0gIH0KLQotICBp
ZiAoY2hpbGRyZW4pCi0gICAgWEZyZWUoY2hpbGRyZW4pOwotICByZXR1cm4gYXBwX3dpbmRvdzsK
LX0KLQotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB8d2luZG93fCBpcyBhIGRlc2t0b3AgZWxlbWVu
dC4KLWJvb2wgSXNEZXNrdG9wRWxlbWVudChYQXRvbUNhY2hlKiBjYWNoZSwgOjpXaW5kb3cgd2lu
ZG93KSB7Ci0gIFJUQ19EQ0hFQ0soY2FjaGUpOwotICBpZiAod2luZG93ID09IDApCi0gICAgcmV0
dXJuIGZhbHNlOwotCi0gIC8vIEZpcnN0IGxvb2sgZm9yIF9ORVRfV01fV0lORE9XX1RZUEUuIFRo
ZSBzdGFuZGFyZAotICAvLyAoaHR0cDovL3N0YW5kYXJkcy5mcmVlZGVza3RvcC5vcmcvd20tc3Bl
Yy9sYXRlc3QvYXIwMXMwNS5odG1sI2lkMjc2MDMwNikKLSAgLy8gc2F5cyB0aGlzIGhpbnQgKnNo
b3VsZCogYmUgcHJlc2VudCBvbiBhbGwgd2luZG93cywgYW5kIHdlIHVzZSB0aGUgZXhpc3RlbmNl
Ci0gIC8vIG9mIF9ORVRfV01fV0lORE9XX1RZUEVfTk9STUFMIGluIHRoZSBwcm9wZXJ0eSB0byBp
bmRpY2F0ZSBhIHdpbmRvdyBpcyBub3QKLSAgLy8gYSBkZXNrdG9wIGVsZW1lbnQgKHRoYXQgaXMs
IG9ubHkgIm5vcm1hbCIgd2luZG93cyBzaG91bGQgYmUgc2hhcmVhYmxlKS4KLSAgWFdpbmRvd1By
b3BlcnR5PHVpbnQzMl90PiB3aW5kb3dfdHlwZShjYWNoZS0+ZGlzcGxheSgpLCB3aW5kb3csCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUtPldpbmRvd1R5cGUo
KSk7Ci0gIGlmICh3aW5kb3dfdHlwZS5pc192YWxpZCgpICYmIHdpbmRvd190eXBlLnNpemUoKSA+
IDApIHsKLSAgICB1aW50MzJfdCogZW5kID0gd2luZG93X3R5cGUuZGF0YSgpICsgd2luZG93X3R5
cGUuc2l6ZSgpOwotICAgIGJvb2wgaXNfbm9ybWFsID0KLSAgICAgICAgKGVuZCAhPSBzdGQ6OmZp
bmQod2luZG93X3R5cGUuZGF0YSgpLCBlbmQsIGNhY2hlLT5XaW5kb3dUeXBlTm9ybWFsKCkpKTsK
LSAgICByZXR1cm4gIWlzX25vcm1hbDsKLSAgfQotCi0gIC8vIEZhbGwgYmFjayBvbiB1c2luZyB0
aGUgaGludC4KLSAgWENsYXNzSGludCBjbGFzc19oaW50OwotICBTdGF0dXMgc3RhdHVzID0gWEdl
dENsYXNzSGludChjYWNoZS0+ZGlzcGxheSgpLCB3aW5kb3csICZjbGFzc19oaW50KTsKLSAgaWYg
KHN0YXR1cyA9PSAwKSB7Ci0gICAgLy8gTm8gaGludHMsIGFzc3VtZSB0aGlzIGlzIGEgbm9ybWFs
IGFwcGxpY2F0aW9uIHdpbmRvdy4KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBEZWZlclhG
cmVlIGZyZWVfcmVzX25hbWUoY2xhc3NfaGludC5yZXNfbmFtZSk7Ci0gIERlZmVyWEZyZWUgZnJl
ZV9yZXNfY2xhc3MoY2xhc3NfaGludC5yZXNfY2xhc3MpOwotICByZXR1cm4gc3RyY21wKCJnbm9t
ZS1wYW5lbCIsIGNsYXNzX2hpbnQucmVzX25hbWUpID09IDAgfHwKLSAgICAgICAgIHN0cmNtcCgi
ZGVza3RvcF93aW5kb3ciLCBjbGFzc19oaW50LnJlc19uYW1lKSA9PSAwOwotfQotCi19ICAvLyBu
YW1lc3BhY2UKLQotaW50MzJfdCBHZXRXaW5kb3dTdGF0ZShYQXRvbUNhY2hlKiBjYWNoZSwgOjpX
aW5kb3cgd2luZG93KSB7Ci0gIC8vIEdldCBXTV9TVEFURSBwcm9wZXJ0eSBvZiB0aGUgd2luZG93
LgotICBYV2luZG93UHJvcGVydHk8dWludDMyX3Q+IHdpbmRvd19zdGF0ZShjYWNoZS0+ZGlzcGxh
eSgpLCB3aW5kb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
Y2hlLT5XbVN0YXRlKCkpOwotCi0gIC8vIFdNX1NUQVRFIGlzIGNvbnNpZGVyZWQgdG8gYmUgc2V0
IHRvIFdpdGhkcmF3blN0YXRlIHdoZW4gaXQgbWlzc2luZy4KLSAgcmV0dXJuIHdpbmRvd19zdGF0
ZS5pc192YWxpZCgpID8gKndpbmRvd19zdGF0ZS5kYXRhKCkgOiBXaXRoZHJhd25TdGF0ZTsKLX0K
LQotYm9vbCBHZXRXaW5kb3dMaXN0KFhBdG9tQ2FjaGUqIGNhY2hlLAotICAgICAgICAgICAgICAg
ICAgIHJ0Yzo6RnVuY3Rpb25WaWV3PGJvb2woOjpXaW5kb3cpPiBvbl93aW5kb3cpIHsKLSAgUlRD
X0RDSEVDSyhjYWNoZSk7Ci0gIFJUQ19EQ0hFQ0sob25fd2luZG93KTsKLSAgOjpEaXNwbGF5KiBj
b25zdCBkaXNwbGF5ID0gY2FjaGUtPmRpc3BsYXkoKTsKLQotICBpbnQgZmFpbGVkX3NjcmVlbnMg
PSAwOwotICBjb25zdCBpbnQgbnVtX3NjcmVlbnMgPSBYU2NyZWVuQ291bnQoZGlzcGxheSk7Ci0g
IGZvciAoaW50IHNjcmVlbiA9IDA7IHNjcmVlbiA8IG51bV9zY3JlZW5zOyBzY3JlZW4rKykgewot
ICAgIDo6V2luZG93IHJvb3Rfd2luZG93ID0gWFJvb3RXaW5kb3coZGlzcGxheSwgc2NyZWVuKTsK
LSAgICA6OldpbmRvdyBwYXJlbnQ7Ci0gICAgOjpXaW5kb3cqIGNoaWxkcmVuOwotICAgIHVuc2ln
bmVkIGludCBudW1fY2hpbGRyZW47Ci0gICAgewotICAgICAgWEVycm9yVHJhcCBlcnJvcl90cmFw
KGRpc3BsYXkpOwotICAgICAgaWYgKFhRdWVyeVRyZWUoZGlzcGxheSwgcm9vdF93aW5kb3csICZy
b290X3dpbmRvdywgJnBhcmVudCwgJmNoaWxkcmVuLAotICAgICAgICAgICAgICAgICAgICAgJm51
bV9jaGlsZHJlbikgPT0gMCB8fAotICAgICAgICAgIGVycm9yX3RyYXAuR2V0TGFzdEVycm9yQW5k
RGlzYWJsZSgpICE9IDApIHsKLSAgICAgICAgZmFpbGVkX3NjcmVlbnMrKzsKLSAgICAgICAgUlRD
X0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBxdWVyeSBmb3IgY2hpbGQgd2luZG93cyBmb3Ig
c2NyZWVuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc2NyZWVuOwotICAgICAgICBj
b250aW51ZTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBEZWZlclhGcmVlIGZyZWVfY2hpbGRyZW4o
Y2hpbGRyZW4pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1fY2hpbGRy
ZW47IGkrKykgewotICAgICAgLy8gSXRlcmF0ZXMgaW4gcmV2ZXJzZSBvcmRlciB0byByZXR1cm4g
d2luZG93cyBmcm9tIGZyb250IHRvIGJhY2suCi0gICAgICA6OldpbmRvdyBhcHBfd2luZG93ID0K
LSAgICAgICAgICBHZXRBcHBsaWNhdGlvbldpbmRvdyhjYWNoZSwgY2hpbGRyZW5bbnVtX2NoaWxk
cmVuIC0gMSAtIGldKTsKLSAgICAgIGlmIChhcHBfd2luZG93ICYmICFJc0Rlc2t0b3BFbGVtZW50
KGNhY2hlLCBhcHBfd2luZG93KSkgewotICAgICAgICBpZiAoIW9uX3dpbmRvdyhhcHBfd2luZG93
KSkgewotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQot
ICB9Ci0KLSAgcmV0dXJuIGZhaWxlZF9zY3JlZW5zIDwgbnVtX3NjcmVlbnM7Ci19Ci0KLWJvb2wg
R2V0V2luZG93UmVjdCg6OkRpc3BsYXkqIGRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgOjpX
aW5kb3cgd2luZG93LAotICAgICAgICAgICAgICAgICAgIERlc2t0b3BSZWN0KiByZWN0LAotICAg
ICAgICAgICAgICAgICAgIFhXaW5kb3dBdHRyaWJ1dGVzKiBhdHRyaWJ1dGVzIC8qID0gbnVsbHB0
ciAqLykgewotICBYV2luZG93QXR0cmlidXRlcyBsb2NhbF9hdHRyaWJ1dGVzOwotICBpbnQgb2Zm
c2V0X3g7Ci0gIGludCBvZmZzZXRfeTsKLSAgaWYgKGF0dHJpYnV0ZXMgPT0gbnVsbHB0cikgewot
ICAgIGF0dHJpYnV0ZXMgPSAmbG9jYWxfYXR0cmlidXRlczsKLSAgfQotCi0gIHsKLSAgICBYRXJy
b3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheSk7Ci0gICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRl
cyhkaXNwbGF5LCB3aW5kb3csIGF0dHJpYnV0ZXMpIHx8Ci0gICAgICAgIGVycm9yX3RyYXAuR2V0
TGFzdEVycm9yQW5kRGlzYWJsZSgpICE9IDApIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gIH0KLSAgKnJlY3QgPSBEZXNrdG9wUmVjdEZyb21YQXR0cmlidXRlcygqYXR0cmlidXRlcyk7
Ci0KLSAgewotICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5KTsKLSAgICA6OldpbmRv
dyBjaGlsZDsKLSAgICBpZiAoIVhUcmFuc2xhdGVDb29yZGluYXRlcyhkaXNwbGF5LCB3aW5kb3cs
IGF0dHJpYnV0ZXMtPnJvb3QsIC1yZWN0LT5sZWZ0KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLXJlY3QtPnRvcCgpLCAmb2Zmc2V0X3gsICZvZmZzZXRfeSwgJmNoaWxkKSB8fAot
ICAgICAgICBlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKSB7Ci0gICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0gIHJlY3QtPlRyYW5zbGF0ZShvZmZzZXRfeCwg
b2Zmc2V0X3kpOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3dpbmRvd19saXN0X3V0aWxzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94
MTEvd2luZG93X2xpc3RfdXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJk
MmE3MGQyMTA3ZGRkYTkxOWRiNzhkOTExMzBkZTJkNDgxM2UyZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEvd2luZG93X2xpc3RfdXRp
bHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChj
KSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAq
LwotCi0jaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX1gxMV9XSU5ET1dfTElTVF9VVElM
U19IXwotI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9YMTFfV0lORE9XX0xJU1RfVVRJ
TFNfSF8KLQotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS9kZXNrdG9wX2dlb21ldHJ5LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUveDExL3hfYXRvbV9jYWNoZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2Z1bmN0aW9u
X3ZpZXcuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFN5bmNocm9ub3VzbHkgaXRlcmF0
ZXMgYWxsIG9uLXNjcmVlbiB3aW5kb3dzIGluIHxjYWNoZXwuZGlzcGxheSgpIGluCi0vLyBkZWNy
ZWFzaW5nIHotb3JkZXIgYW5kIHNlbmRzIHRoZW0gb25lLWJ5LW9uZSB0byB8b25fd2luZG93fCBm
dW5jdGlvbiBiZWZvcmUKLS8vIEdldFdpbmRvd0xpc3QoKSByZXR1cm5zLiBJZiB8b25fd2luZG93
fCByZXR1cm5zIGZhbHNlLCB0aGlzIGZ1bmN0aW9uIGlnbm9yZXMKLS8vIG90aGVyIHdpbmRvd3Mg
YW5kIHJldHVybnMgaW1tZWRpYXRlbHkuIEdldFdpbmRvd0xpc3QoKSByZXR1cm5zIGZhbHNlIGlm
Ci0vLyBuYXRpdmUgQVBJcyBmYWlsZWQuIElmIG11bHRpcGxlIHNjcmVlbnMgYXJlIGF0dGFjaGVk
IHRvIHRoZSB8ZGlzcGxheXwsIHRoaXMKLS8vIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugb25seSB3
aGVuIG5hdGl2ZSBBUElzIGZhaWxlZCBvbiBhbGwgc2NyZWVucy4gTWVudXMsCi0vLyBwYW5lbHMg
YW5kIG1pbmltaXplZCB3aW5kb3dzIHdpbGwgYmUgaWdub3JlZC4KLWJvb2wgR2V0V2luZG93TGlz
dChYQXRvbUNhY2hlKiBjYWNoZSwKLSAgICAgICAgICAgICAgICAgICBydGM6OkZ1bmN0aW9uVmll
dzxib29sKDo6V2luZG93KT4gb25fd2luZG93KTsKLQotLy8gUmV0dXJucyBXTV9TVEFURSBwcm9w
ZXJ0eSBvZiB0aGUgfHdpbmRvd3wuIFRoaXMgZnVuY3Rpb24gcmV0dXJucwotLy8gV2l0aGRyYXdu
U3RhdGUgaWYgdGhlIHx3aW5kb3d8IGlzIG1pc3NpbmcuCi1pbnQzMl90IEdldFdpbmRvd1N0YXRl
KFhBdG9tQ2FjaGUqIGNhY2hlLCA6OldpbmRvdyB3aW5kb3cpOwotCi0vLyBSZXR1cm5zIHRoZSBy
ZWN0YW5nbGUgb2YgdGhlIHx3aW5kb3d8IGluIHRoZSBjb29yZGluYXRlcyBvZiB8ZGlzcGxheXwu
IFRoaXMKLS8vIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgaWYgbmF0aXZlIEFQSXMgZmFpbGVkLiBJ
ZiB8YXR0cmlidXRlc3wgaXMgcHJvdmlkZWQsIGl0Ci0vLyB3aWxsIGJlIGZpbGxlZCB3aXRoIHRo
ZSBhdHRyaWJ1dGVzIG9mIHx3aW5kb3d8LiBUaGUgfHJlY3R8IGlzIGluIHN5c3RlbQotLy8gY29v
cmRpbmF0ZSwgaS5lLiB0aGUgcHJpbWFyeSBtb25pdG9yIGFsd2F5cyBzdGFydHMgZnJvbSAoMCwg
MCkuCi1ib29sIEdldFdpbmRvd1JlY3QoOjpEaXNwbGF5KiBkaXNwbGF5LAotICAgICAgICAgICAg
ICAgICAgIDo6V2luZG93IHdpbmRvdywKLSAgICAgICAgICAgICAgICAgICBEZXNrdG9wUmVjdCog
cmVjdCwKLSAgICAgICAgICAgICAgICAgICBYV2luZG93QXR0cmlidXRlcyogYXR0cmlidXRlcyA9
IG51bGxwdHIpOwotCi0vLyBDcmVhdGVzIGEgRGVza3RvcFJlY3QgZnJvbSB8YXR0cmlidXRlc3wu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLURlc2t0b3BSZWN0IERlc2t0b3BSZWN0RnJvbVhBdHRy
aWJ1dGVzKGNvbnN0IFQmIGF0dHJpYnV0ZXMpIHsKLSAgcmV0dXJuIERlc2t0b3BSZWN0OjpNYWtl
WFlXSChhdHRyaWJ1dGVzLngsIGF0dHJpYnV0ZXMueSwgYXR0cmlidXRlcy53aWR0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLmhlaWdodCk7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9Y
MTFfV0lORE9XX0xJU1RfVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2F0b21f
Y2FjaGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9hdG9tX2NhY2hlLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmYTNhMWZkZWJkZGQ1ZDkxYmI5OWE4N2E4ZDBkYzZiMTZjM2Q1OGE3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gx
MS94X2F0b21fY2FjaGUuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9u
YWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBp
biB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5
Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94
X2F0b21fY2FjaGUuaCIKLQotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotCi1uYW1lc3Bh
Y2Ugd2VicnRjIHsKLQotWEF0b21DYWNoZTo6WEF0b21DYWNoZSg6OkRpc3BsYXkqIGRpc3BsYXkp
IDogZGlzcGxheV8oZGlzcGxheSkgewotICBSVENfRENIRUNLKGRpc3BsYXlfKTsKLX0KLQotWEF0
b21DYWNoZTo6flhBdG9tQ2FjaGUoKSA9IGRlZmF1bHQ7Ci0KLTo6RGlzcGxheSogWEF0b21DYWNo
ZTo6ZGlzcGxheSgpIGNvbnN0IHsKLSAgcmV0dXJuIGRpc3BsYXlfOwotfQotCi1BdG9tIFhBdG9t
Q2FjaGU6OldtU3RhdGUoKSB7Ci0gIHJldHVybiBDcmVhdGVJZk5vdEV4aXN0KCZ3bV9zdGF0ZV8s
ICJXTV9TVEFURSIpOwotfQotCi1BdG9tIFhBdG9tQ2FjaGU6OldpbmRvd1R5cGUoKSB7Ci0gIHJl
dHVybiBDcmVhdGVJZk5vdEV4aXN0KCZ3aW5kb3dfdHlwZV8sICJfTkVUX1dNX1dJTkRPV19UWVBF
Iik7Ci19Ci0KLUF0b20gWEF0b21DYWNoZTo6V2luZG93VHlwZU5vcm1hbCgpIHsKLSAgcmV0dXJu
IENyZWF0ZUlmTm90RXhpc3QoJndpbmRvd190eXBlX25vcm1hbF8sICJfTkVUX1dNX1dJTkRPV19U
WVBFX05PUk1BTCIpOwotfQotCi1BdG9tIFhBdG9tQ2FjaGU6OkNyZWF0ZUlmTm90RXhpc3QoQXRv
bSogYXRvbSwgY29uc3QgY2hhciogbmFtZSkgewotICBSVENfRENIRUNLKGF0b20pOwotICBpZiAo
KmF0b20gPT0gTm9uZSkgewotICAgICphdG9tID0gWEludGVybkF0b20oZGlzcGxheSgpLCBuYW1l
LCBUcnVlKTsKLSAgfQotICByZXR1cm4gKmF0b207Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2F0b21fY2FjaGUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gx
MS94X2F0b21fY2FjaGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI0NmMyYmI1
YzlhODZiOGIwZGIxYzY2ZTk1YjZlMjQxNWQ3ZTY4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9hdG9tX2NhY2hlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQot
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRl
ZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9YMTFfWF9BVE9NX0NBQ0hFX0hfCi0jZGVmaW5lIE1P
RFVMRVNfREVTS1RPUF9DQVBUVVJFX1gxMV9YX0FUT01fQ0FDSEVfSF8KLQotI2luY2x1ZGUgPFgx
MS9YYXRvbS5oPgotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewot
Ci0vLyBBIGNhY2hlIG9mIEF0b20uIEVhY2ggQXRvbSBvYmplY3QgaXMgY3JlYXRlZCBvbiBkZW1h
bmQuCi1jbGFzcyBYQXRvbUNhY2hlIGZpbmFsIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFhBdG9t
Q2FjaGUoOjpEaXNwbGF5KiBkaXNwbGF5KTsKLSAgflhBdG9tQ2FjaGUoKTsKLQotICA6OkRpc3Bs
YXkqIGRpc3BsYXkoKSBjb25zdDsKLQotICBBdG9tIFdtU3RhdGUoKTsKLSAgQXRvbSBXaW5kb3dU
eXBlKCk7Ci0gIEF0b20gV2luZG93VHlwZU5vcm1hbCgpOwotCi0gcHJpdmF0ZToKLSAgLy8gSWYg
fCphdG9tfCBpcyBOb25lLCB0aGlzIGZ1bmN0aW9uIHVzZXMgWEludGVybkF0b20oKSB0byByZXRy
aWV2ZSBhbiBBdG9tLgotICBBdG9tIENyZWF0ZUlmTm90RXhpc3QoQXRvbSogYXRvbSwgY29uc3Qg
Y2hhciogbmFtZSk7Ci0KLSAgOjpEaXNwbGF5KiBjb25zdCBkaXNwbGF5XzsKLSAgQXRvbSB3bV9z
dGF0ZV8gPSBOb25lOwotICBBdG9tIHdpbmRvd190eXBlXyA9IE5vbmU7Ci0gIEF0b20gd2luZG93
X3R5cGVfbm9ybWFsXyA9IE5vbmU7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNl
bmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDExX1hfQVRPTV9DQUNIRV9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9kZXNrdG9wX2NhcHR1cmUveDExL3hfZXJyb3JfdHJhcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X2Vy
cm9yX3RyYXAuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NTljM2RiZTlmNTE2
NjU2NGFlOGFiYjYwOGJjMmVlMjc3YjM5ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfZXJyb3JfdHJhcC5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAi
bW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfZXJyb3JfdHJhcC5oIgotCi0jaW5jbHVkZSA8
YXNzZXJ0Lmg+Ci0KLSNpZiBkZWZpbmVkKFRPT0xLSVRfR1RLKQotI2luY2x1ZGUgPGdkay9nZGsu
aD4KLSNlbmRpZiAgLy8gIWRlZmluZWQoVE9PTEtJVF9HVEspCi0KLW5hbWVzcGFjZSB3ZWJydGMg
ewotCi1uYW1lc3BhY2UgewotCi0jaWYgIWRlZmluZWQoVE9PTEtJVF9HVEspCi0KLS8vIFRPRE8o
c2VyZ2V5dSk6IFRoaXMgY29kZSBpcyBub3QgdGhyZWFkIHNhZmUuIEZpeCBpdC4gQnVnIDIyMDIu
Ci1zdGF0aWMgYm9vbCBnX3hzZXJ2ZXJfZXJyb3JfdHJhcF9lbmFibGVkID0gZmFsc2U7Ci1zdGF0
aWMgaW50IGdfbGFzdF94c2VydmVyX2Vycm9yX2NvZGUgPSAwOwotCi1pbnQgWFNlcnZlckVycm9y
SGFuZGxlcihEaXNwbGF5KiBkaXNwbGF5LCBYRXJyb3JFdmVudCogZXJyb3JfZXZlbnQpIHsKLSAg
YXNzZXJ0KGdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJsZWQpOwotICBnX2xhc3RfeHNlcnZlcl9l
cnJvcl9jb2RlID0gZXJyb3JfZXZlbnQtPmVycm9yX2NvZGU7Ci0gIHJldHVybiAwOwotfQotCi0j
ZW5kaWYgIC8vICFkZWZpbmVkKFRPT0xLSVRfR1RLKQotCi19ICAvLyBuYW1lc3BhY2UKLQotWEVy
cm9yVHJhcDo6WEVycm9yVHJhcChEaXNwbGF5KiBkaXNwbGF5KQotICAgIDogb3JpZ2luYWxfZXJy
b3JfaGFuZGxlcl8oTlVMTCksIGVuYWJsZWRfKHRydWUpIHsKLSNpZiBkZWZpbmVkKFRPT0xLSVRf
R1RLKQotICBnZGtfZXJyb3JfdHJhcF9wdXNoKCk7Ci0jZWxzZSAgIC8vICFkZWZpbmVkKFRPT0xL
SVRfR1RLKQotICBhc3NlcnQoIWdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJsZWQpOwotICBvcmln
aW5hbF9lcnJvcl9oYW5kbGVyXyA9IFhTZXRFcnJvckhhbmRsZXIoJlhTZXJ2ZXJFcnJvckhhbmRs
ZXIpOwotICBnX3hzZXJ2ZXJfZXJyb3JfdHJhcF9lbmFibGVkID0gdHJ1ZTsKLSAgZ19sYXN0X3hz
ZXJ2ZXJfZXJyb3JfY29kZSA9IDA7Ci0jZW5kaWYgIC8vICFkZWZpbmVkKFRPT0xLSVRfR1RLKQot
fQotCi1pbnQgWEVycm9yVHJhcDo6R2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpIHsKLSAgZW5hYmxl
ZF8gPSBmYWxzZTsKLSNpZiBkZWZpbmVkKFRPT0xLSVRfR1RLKQotICByZXR1cm4gZ2RrX2Vycm9y
X3RyYXBfcHVzaCgpOwotI2Vsc2UgICAvLyAhZGVmaW5lZChUT09MS0lUX0dUSykKLSAgYXNzZXJ0
KGdfeHNlcnZlcl9lcnJvcl90cmFwX2VuYWJsZWQpOwotICBYU2V0RXJyb3JIYW5kbGVyKG9yaWdp
bmFsX2Vycm9yX2hhbmRsZXJfKTsKLSAgZ194c2VydmVyX2Vycm9yX3RyYXBfZW5hYmxlZCA9IGZh
bHNlOwotICByZXR1cm4gZ19sYXN0X3hzZXJ2ZXJfZXJyb3JfY29kZTsKLSNlbmRpZiAgLy8gIWRl
ZmluZWQoVE9PTEtJVF9HVEspCi19Ci0KLVhFcnJvclRyYXA6On5YRXJyb3JUcmFwKCkgewotICBp
ZiAoZW5hYmxlZF8pCi0gICAgR2V0TGFzdEVycm9yQW5kRGlzYWJsZSgpOwotfQotCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9lcnJvcl90cmFwLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0
b3BfY2FwdHVyZS94MTEveF9lcnJvcl90cmFwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGVhOWViZjY3MGI3ZWExMGZlNzUyOGE2MjA3YTE0ZjE5YTZmZWM5MGYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hfZXJyb3Jf
dHJhcC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
KGMpIDIwMTMgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
ICovCi0KLSNpZm5kZWYgTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfWDExX1hfRVJST1JfVFJBUF9I
XwotI2RlZmluZSBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9YMTFfWF9FUlJPUl9UUkFQX0hfCi0K
LSNpbmNsdWRlIDxYMTEvWGxpYi5oPgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gSGVscGVyIGNsYXNzIHRoYXQgcmVn
aXN0ZXJzIFggV2luZG93IGVycm9yIGhhbmRsZXIuIENhbGxlciBjYW4gdXNlCi0vLyBHZXRMYXN0
RXJyb3JBbmREaXNhYmxlKCkgdG8gZ2V0IHRoZSBsYXN0IGVycm9yIHRoYXQgd2FzIGNhdWdodCwg
aWYgYW55LgotY2xhc3MgWEVycm9yVHJhcCB7Ci0gcHVibGljOgotICBleHBsaWNpdCBYRXJyb3JU
cmFwKERpc3BsYXkqIGRpc3BsYXkpOwotICB+WEVycm9yVHJhcCgpOwotCi0gIC8vIFJldHVybnMg
bGFzdCBlcnJvciBhbmQgcmVtb3ZlcyB1bnJlZ2lzdGVycyB0aGUgZXJyb3IgaGFuZGxlci4KLSAg
aW50IEdldExhc3RFcnJvckFuZERpc2FibGUoKTsKLQotIHByaXZhdGU6Ci0gIFhFcnJvckhhbmRs
ZXIgb3JpZ2luYWxfZXJyb3JfaGFuZGxlcl87Ci0gIGJvb2wgZW5hYmxlZF87Ci0KLSAgUlRDX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihYRXJyb3JUcmFwKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKLQotI2VuZGlmICAvLyBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9YMTFfWF9FUlJP
Ul9UUkFQX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9k
ZXNrdG9wX2NhcHR1cmUveDExL3hfc2VydmVyX3BpeGVsX2J1ZmZlci5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTMyN2QzZmM3ZGRlMmEyMTI4Mzk4N2VhNDg4MjIxM2RkNTE0ZDBj
Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy
ZS94MTEveF9zZXJ2ZXJfcGl4ZWxfYnVmZmVyLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzUxICsw
LDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9w
X2NhcHR1cmUveDExL3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIgotCi0jaW5jbHVkZSA8c3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8c3lzL3NobS5oPgotCi0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2Nh
cHR1cmUvZGVza3RvcF9mcmFtZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJl
L3gxMS93aW5kb3dfbGlzdF91dGlscy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0
dXJlL3gxMS94X2Vycm9yX3RyYXAuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1uYW1l
c3BhY2UgewotCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyB8bWFza3wgaGFzIHRvIGJl
IHNoaWZ0ZWQgbGVmdCBzbyBpdHMgbGFzdAotLy8gKG1vc3Qtc2lnbmlmaWNhbnQpIGJpdCBzZXQg
YmVjb21lcyB0aGUgbW9zdC1zaWduaWZpY2FudCBiaXQgb2YgdGhlIHdvcmQuCi0vLyBXaGVuIHxt
YXNrfCBpcyAwIHRoZSBmdW5jdGlvbiByZXR1cm5zIDMxLgotdWludDMyX3QgTWFza1RvU2hpZnQo
dWludDMyX3QgbWFzaykgewotICBpbnQgc2hpZnQgPSAwOwotICBpZiAoKG1hc2sgJiAweGZmZmYw
MDAwdSkgPT0gMCkgewotICAgIG1hc2sgPDw9IDE2OwotICAgIHNoaWZ0ICs9IDE2OwotICB9Ci0g
IGlmICgobWFzayAmIDB4ZmYwMDAwMDB1KSA9PSAwKSB7Ci0gICAgbWFzayA8PD0gODsKLSAgICBz
aGlmdCArPSA4OwotICB9Ci0gIGlmICgobWFzayAmIDB4ZjAwMDAwMDB1KSA9PSAwKSB7Ci0gICAg
bWFzayA8PD0gNDsKLSAgICBzaGlmdCArPSA0OwotICB9Ci0gIGlmICgobWFzayAmIDB4YzAwMDAw
MDB1KSA9PSAwKSB7Ci0gICAgbWFzayA8PD0gMjsKLSAgICBzaGlmdCArPSAyOwotICB9Ci0gIGlm
ICgobWFzayAmIDB4ODAwMDAwMDB1KSA9PSAwKQotICAgIHNoaWZ0ICs9IDE7Ci0KLSAgcmV0dXJu
IHNoaWZ0OwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgfGltYWdlfCBpcyBpbiBSR0IgZm9ybWF0
LgotYm9vbCBJc1hJbWFnZVJHQkZvcm1hdChYSW1hZ2UqIGltYWdlKSB7Ci0gIHJldHVybiBpbWFn
ZS0+Yml0c19wZXJfcGl4ZWwgPT0gMzIgJiYgaW1hZ2UtPnJlZF9tYXNrID09IDB4ZmYwMDAwICYm
Ci0gICAgICAgICBpbWFnZS0+Z3JlZW5fbWFzayA9PSAweGZmMDAgJiYgaW1hZ2UtPmJsdWVfbWFz
ayA9PSAweGZmOwotfQotCi0vLyBXZSBleHBvc2UgdHdvIGZvcm1zIG9mIGJsaXR0aW5nIHRvIGhh
bmRsZSB2YXJpYXRpb25zIGluIHRoZSBwaXhlbCBmb3JtYXQuCi0vLyBJbiBGYXN0QmxpdCgpLCB0
aGUgb3BlcmF0aW9uIGlzIGVmZmVjdGl2ZWx5IGEgbWVtY3B5Lgotdm9pZCBGYXN0QmxpdChYSW1h
Z2UqIHhfaW1hZ2UsCi0gICAgICAgICAgICAgIHVpbnQ4X3QqIHNyY19wb3MsCi0gICAgICAgICAg
ICAgIGNvbnN0IERlc2t0b3BSZWN0JiByZWN0LAotICAgICAgICAgICAgICBEZXNrdG9wRnJhbWUq
IGZyYW1lKSB7Ci0gIGludCBzcmNfc3RyaWRlID0geF9pbWFnZS0+Ynl0ZXNfcGVyX2xpbmU7Ci0g
IGludCBkc3RfeCA9IHJlY3QubGVmdCgpLCBkc3RfeSA9IHJlY3QudG9wKCk7Ci0KLSAgdWludDhf
dCogZHN0X3BvcyA9IGZyYW1lLT5kYXRhKCkgKyBmcmFtZS0+c3RyaWRlKCkgKiBkc3RfeTsKLSAg
ZHN0X3BvcyArPSBkc3RfeCAqIERlc2t0b3BGcmFtZTo6a0J5dGVzUGVyUGl4ZWw7Ci0KLSAgaW50
IGhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7Ci0gIGludCByb3dfYnl0ZXMgPSByZWN0LndpZHRoKCkg
KiBEZXNrdG9wRnJhbWU6OmtCeXRlc1BlclBpeGVsOwotICBmb3IgKGludCB5ID0gMDsgeSA8IGhl
aWdodDsgKyt5KSB7Ci0gICAgbWVtY3B5KGRzdF9wb3MsIHNyY19wb3MsIHJvd19ieXRlcyk7Ci0g
ICAgc3JjX3BvcyArPSBzcmNfc3RyaWRlOwotICAgIGRzdF9wb3MgKz0gZnJhbWUtPnN0cmlkZSgp
OwotICB9Ci19Ci0KLXZvaWQgU2xvd0JsaXQoWEltYWdlKiB4X2ltYWdlLAotICAgICAgICAgICAg
ICB1aW50OF90KiBzcmNfcG9zLAotICAgICAgICAgICAgICBjb25zdCBEZXNrdG9wUmVjdCYgcmVj
dCwKLSAgICAgICAgICAgICAgRGVza3RvcEZyYW1lKiBmcmFtZSkgewotICBpbnQgc3JjX3N0cmlk
ZSA9IHhfaW1hZ2UtPmJ5dGVzX3Blcl9saW5lOwotICBpbnQgZHN0X3ggPSByZWN0LmxlZnQoKSwg
ZHN0X3kgPSByZWN0LnRvcCgpOwotICBpbnQgd2lkdGggPSByZWN0LndpZHRoKCksIGhlaWdodCA9
IHJlY3QuaGVpZ2h0KCk7Ci0KLSAgdWludDMyX3QgcmVkX21hc2sgPSB4X2ltYWdlLT5yZWRfbWFz
azsKLSAgdWludDMyX3QgZ3JlZW5fbWFzayA9IHhfaW1hZ2UtPnJlZF9tYXNrOwotICB1aW50MzJf
dCBibHVlX21hc2sgPSB4X2ltYWdlLT5ibHVlX21hc2s7Ci0KLSAgdWludDMyX3QgcmVkX3NoaWZ0
ID0gTWFza1RvU2hpZnQocmVkX21hc2spOwotICB1aW50MzJfdCBncmVlbl9zaGlmdCA9IE1hc2tU
b1NoaWZ0KGdyZWVuX21hc2spOwotICB1aW50MzJfdCBibHVlX3NoaWZ0ID0gTWFza1RvU2hpZnQo
Ymx1ZV9tYXNrKTsKLQotICBpbnQgYml0c19wZXJfcGl4ZWwgPSB4X2ltYWdlLT5iaXRzX3Blcl9w
aXhlbDsKLQotICB1aW50OF90KiBkc3RfcG9zID0gZnJhbWUtPmRhdGEoKSArIGZyYW1lLT5zdHJp
ZGUoKSAqIGRzdF95OwotICBkc3RfcG9zICs9IGRzdF94ICogRGVza3RvcEZyYW1lOjprQnl0ZXNQ
ZXJQaXhlbDsKLSAgLy8gVE9ETyhoY2xhbSk6IE9wdGltaXplLCBwZXJoYXBzIHVzaW5nIE1NWCBj
b2RlIG9yIGJ5IGNvbnZlcnRpbmcgdG8KLSAgLy8gWVVWIGRpcmVjdGx5LgotICAvLyBUT0RPKHNl
cmdleXUpOiBUaGlzIGNvZGUgZG9lc24ndCBoYW5kbGUgWEltYWdlIGJ5dGUgb3JkZXIgcHJvcGVy
bHkgYW5kCi0gIC8vIHdvbid0IHdvcmsgd2l0aCAyNGJwcCBpbWFnZXMuIEZpeCBpdC4KLSAgZm9y
IChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgewotICAgIHVpbnQzMl90KiBkc3RfcG9zXzMy
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGRzdF9wb3MpOwotICAgIHVpbnQzMl90KiBz
cmNfcG9zXzMyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHNyY19wb3MpOwotICAgIHVp
bnQxNl90KiBzcmNfcG9zXzE2ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KHNyY19wb3Mp
OwotICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewotICAgICAgLy8gRGVyZWZl
cmVuY2UgdGhyb3VnaCBhbiBhcHByb3ByaWF0ZWx5LWFsaWduZWQgcG9pbnRlci4KLSAgICAgIHVp
bnQzMl90IHBpeGVsOwotICAgICAgaWYgKGJpdHNfcGVyX3BpeGVsID09IDMyKSB7Ci0gICAgICAg
IHBpeGVsID0gc3JjX3Bvc18zMlt4XTsKLSAgICAgIH0gZWxzZSBpZiAoYml0c19wZXJfcGl4ZWwg
PT0gMTYpIHsKLSAgICAgICAgcGl4ZWwgPSBzcmNfcG9zXzE2W3hdOwotICAgICAgfSBlbHNlIHsK
LSAgICAgICAgcGl4ZWwgPSBzcmNfcG9zW3hdOwotICAgICAgfQotICAgICAgdWludDMyX3QgciA9
IChwaXhlbCAmIHJlZF9tYXNrKSA8PCByZWRfc2hpZnQ7Ci0gICAgICB1aW50MzJfdCBnID0gKHBp
eGVsICYgZ3JlZW5fbWFzaykgPDwgZ3JlZW5fc2hpZnQ7Ci0gICAgICB1aW50MzJfdCBiID0gKHBp
eGVsICYgYmx1ZV9tYXNrKSA8PCBibHVlX3NoaWZ0OwotICAgICAgLy8gV3JpdGUgYXMgMzItYml0
IFJHQi4KLSAgICAgIGRzdF9wb3NfMzJbeF0gPQotICAgICAgICAgICgociA+PiA4KSAmIDB4ZmYw
MDAwKSB8ICgoZyA+PiAxNikgJiAweGZmMDApIHwgKChiID4+IDI0KSAmIDB4ZmYpOwotICAgIH0K
LSAgICBkc3RfcG9zICs9IGZyYW1lLT5zdHJpZGUoKTsKLSAgICBzcmNfcG9zICs9IHNyY19zdHJp
ZGU7Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLVhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6WFNl
cnZlclBpeGVsQnVmZmVyKCkge30KLQotWFNlcnZlclBpeGVsQnVmZmVyOjp+WFNlcnZlclBpeGVs
QnVmZmVyKCkgewotICBSZWxlYXNlKCk7Ci19Ci0KLXZvaWQgWFNlcnZlclBpeGVsQnVmZmVyOjpS
ZWxlYXNlKCkgewotICBpZiAoeF9pbWFnZV8pIHsKLSAgICBYRGVzdHJveUltYWdlKHhfaW1hZ2Vf
KTsKLSAgICB4X2ltYWdlXyA9IG51bGxwdHI7Ci0gIH0KLSAgaWYgKHhfc2htX2ltYWdlXykgewot
ICAgIFhEZXN0cm95SW1hZ2UoeF9zaG1faW1hZ2VfKTsKLSAgICB4X3NobV9pbWFnZV8gPSBudWxs
cHRyOwotICB9Ci0gIGlmIChzaG1fcGl4bWFwXykgewotICAgIFhGcmVlUGl4bWFwKGRpc3BsYXlf
LCBzaG1fcGl4bWFwXyk7Ci0gICAgc2htX3BpeG1hcF8gPSAwOwotICB9Ci0gIGlmIChzaG1fZ2Nf
KSB7Ci0gICAgWEZyZWVHQyhkaXNwbGF5Xywgc2htX2djXyk7Ci0gICAgc2htX2djXyA9IG51bGxw
dHI7Ci0gIH0KLQotICBSZWxlYXNlU2hhcmVkTWVtb3J5U2VnbWVudCgpOwotCi0gIHdpbmRvd18g
PSAwOwotfQotCi12b2lkIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6UmVsZWFzZVNoYXJlZE1lbW9yeVNl
Z21lbnQoKSB7Ci0gIGlmICghc2htX3NlZ21lbnRfaW5mb18pCi0gICAgcmV0dXJuOwotICBpZiAo
c2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIgIT0gbnVsbHB0cikKLSAgICBzaG1kdChzaG1fc2Vn
bWVudF9pbmZvXy0+c2htYWRkcik7Ci0gIGlmIChzaG1fc2VnbWVudF9pbmZvXy0+c2htaWQgIT0g
LTEpCi0gICAgc2htY3RsKHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCwgSVBDX1JNSUQsIDApOwot
ICBkZWxldGUgc2htX3NlZ21lbnRfaW5mb187Ci0gIHNobV9zZWdtZW50X2luZm9fID0gbnVsbHB0
cjsKLX0KLQotYm9vbCBYU2VydmVyUGl4ZWxCdWZmZXI6OkluaXQoRGlzcGxheSogZGlzcGxheSwg
V2luZG93IHdpbmRvdykgewotICBSZWxlYXNlKCk7Ci0gIGRpc3BsYXlfID0gZGlzcGxheTsKLQot
ICBYV2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwotICBpZiAoIUdldFdpbmRvd1JlY3QoZGlz
cGxheV8sIHdpbmRvdywgJndpbmRvd19yZWN0XywgJmF0dHJpYnV0ZXMpKSB7Ci0gICAgcmV0dXJu
IGZhbHNlOwotICB9Ci0KLSAgd2luZG93XyA9IHdpbmRvdzsKLSAgSW5pdFNobShhdHRyaWJ1dGVz
KTsKLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBYU2VydmVyUGl4ZWxCdWZmZXI6OkluaXRT
aG0oY29uc3QgWFdpbmRvd0F0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIHsKLSAgVmlzdWFsKiBkZWZh
dWx0X3Zpc3VhbCA9IGF0dHJpYnV0ZXMudmlzdWFsOwotICBpbnQgZGVmYXVsdF9kZXB0aCA9IGF0
dHJpYnV0ZXMuZGVwdGg7Ci0KLSAgaW50IG1ham9yLCBtaW5vcjsKLSAgQm9vbCBoYXZlX3BpeG1h
cHM7Ci0gIGlmICghWFNobVF1ZXJ5VmVyc2lvbihkaXNwbGF5XywgJm1ham9yLCAmbWlub3IsICZo
YXZlX3BpeG1hcHMpKSB7Ci0gICAgLy8gU2hhcmVkIG1lbW9yeSBub3Qgc3VwcG9ydGVkLiBDYXB0
dXJlUmVjdCB3aWxsIHVzZSB0aGUgWEltYWdlIEFQSSBpbnN0ZWFkLgotICAgIHJldHVybjsKLSAg
fQotCi0gIGJvb2wgdXNpbmdfc2htID0gZmFsc2U7Ci0gIHNobV9zZWdtZW50X2luZm9fID0gbmV3
IFhTaG1TZWdtZW50SW5mbzsKLSAgc2htX3NlZ21lbnRfaW5mb18tPnNobWlkID0gLTE7Ci0gIHNo
bV9zZWdtZW50X2luZm9fLT5zaG1hZGRyID0gbnVsbHB0cjsKLSAgc2htX3NlZ21lbnRfaW5mb18t
PnJlYWRPbmx5ID0gRmFsc2U7Ci0gIHhfc2htX2ltYWdlXyA9IFhTaG1DcmVhdGVJbWFnZShkaXNw
bGF5XywgZGVmYXVsdF92aXN1YWwsIGRlZmF1bHRfZGVwdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBaUGl4bWFwLCAwLCBzaG1fc2VnbWVudF9pbmZvXywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd19yZWN0Xy53aWR0aCgpLCB3aW5kb3dfcmVjdF8u
aGVpZ2h0KCkpOwotICBpZiAoeF9zaG1faW1hZ2VfKSB7Ci0gICAgc2htX3NlZ21lbnRfaW5mb18t
PnNobWlkID0KLSAgICAgICAgc2htZ2V0KElQQ19QUklWQVRFLCB4X3NobV9pbWFnZV8tPmJ5dGVz
X3Blcl9saW5lICogeF9zaG1faW1hZ2VfLT5oZWlnaHQsCi0gICAgICAgICAgICAgICBJUENfQ1JF
QVQgfCAwNjAwKTsKLSAgICBpZiAoc2htX3NlZ21lbnRfaW5mb18tPnNobWlkICE9IC0xKSB7Ci0g
ICAgICB2b2lkKiBzaG1hdF9yZXN1bHQgPSBzaG1hdChzaG1fc2VnbWVudF9pbmZvXy0+c2htaWQs
IDAsIDApOwotICAgICAgaWYgKHNobWF0X3Jlc3VsdCAhPSByZWludGVycHJldF9jYXN0PHZvaWQq
PigtMSkpIHsKLSAgICAgICAgc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIgPSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihzaG1hdF9yZXN1bHQpOwotICAgICAgICB4X3NobV9pbWFnZV8tPmRhdGEg
PSBzaG1fc2VnbWVudF9pbmZvXy0+c2htYWRkcjsKLQotICAgICAgICBYRXJyb3JUcmFwIGVycm9y
X3RyYXAoZGlzcGxheV8pOwotICAgICAgICB1c2luZ19zaG0gPSBYU2htQXR0YWNoKGRpc3BsYXlf
LCBzaG1fc2VnbWVudF9pbmZvXyk7Ci0gICAgICAgIFhTeW5jKGRpc3BsYXlfLCBGYWxzZSk7Ci0g
ICAgICAgIGlmIChlcnJvcl90cmFwLkdldExhc3RFcnJvckFuZERpc2FibGUoKSAhPSAwKQotICAg
ICAgICAgIHVzaW5nX3NobSA9IGZhbHNlOwotICAgICAgICBpZiAodXNpbmdfc2htKSB7Ci0gICAg
ICAgICAgUlRDX0xPRyhMU19WRVJCT1NFKQotICAgICAgICAgICAgICA8PCAiVXNpbmcgWCBzaGFy
ZWQgbWVtb3J5IHNlZ21lbnQgIiA8PCBzaG1fc2VnbWVudF9pbmZvXy0+c2htaWQ7Ci0gICAgICAg
IH0KLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
RmFpbGVkIHRvIGdldCBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlBlcmZvcm1hbmNlIG1heSBiZSBkZWdyYWRlZC4iOwotICAgIH0KLSAgfQot
Ci0gIGlmICghdXNpbmdfc2htKSB7Ci0gICAgUlRDX0xPRyhMU19XQVJOSU5HKQotICAgICAgICA8
PCAiTm90IHVzaW5nIHNoYXJlZCBtZW1vcnkuIFBlcmZvcm1hbmNlIG1heSBiZSBkZWdyYWRlZC4i
OwotICAgIFJlbGVhc2VTaGFyZWRNZW1vcnlTZWdtZW50KCk7Ci0gICAgcmV0dXJuOwotICB9Ci0K
LSAgaWYgKGhhdmVfcGl4bWFwcykKLSAgICBoYXZlX3BpeG1hcHMgPSBJbml0UGl4bWFwcyhkZWZh
dWx0X2RlcHRoKTsKLQotICBzaG1jdGwoc2htX3NlZ21lbnRfaW5mb18tPnNobWlkLCBJUENfUk1J
RCwgMCk7Ci0gIHNobV9zZWdtZW50X2luZm9fLT5zaG1pZCA9IC0xOwotCi0gIFJUQ19MT0coTFNf
VkVSQk9TRSkgPDwgIlVzaW5nIFggc2hhcmVkIG1lbW9yeSBleHRlbnNpb24gdiIgPDwgbWFqb3Ig
PDwgIi4iCi0gICAgICAgICAgICAgICAgICAgICAgPDwgbWlub3IgPDwgIiB3aXRoIiA8PCAoaGF2
ZV9waXhtYXBzID8gIiIgOiAib3V0IikKLSAgICAgICAgICAgICAgICAgICAgICA8PCAiIHBpeG1h
cHMuIjsKLX0KLQotYm9vbCBYU2VydmVyUGl4ZWxCdWZmZXI6OkluaXRQaXhtYXBzKGludCBkZXB0
aCkgewotICBpZiAoWFNobVBpeG1hcEZvcm1hdChkaXNwbGF5XykgIT0gWlBpeG1hcCkKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgewotICAgIFhFcnJvclRyYXAgZXJyb3JfdHJhcChkaXNwbGF5Xyk7
Ci0gICAgc2htX3BpeG1hcF8gPSBYU2htQ3JlYXRlUGl4bWFwKAotICAgICAgICBkaXNwbGF5Xywg
d2luZG93Xywgc2htX3NlZ21lbnRfaW5mb18tPnNobWFkZHIsIHNobV9zZWdtZW50X2luZm9fLAot
ICAgICAgICB3aW5kb3dfcmVjdF8ud2lkdGgoKSwgd2luZG93X3JlY3RfLmhlaWdodCgpLCBkZXB0
aCk7Ci0gICAgWFN5bmMoZGlzcGxheV8sIEZhbHNlKTsKLSAgICBpZiAoZXJyb3JfdHJhcC5HZXRM
YXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgewotICAgICAgLy8gfHNobV9waXhtYXBffCBpcyBu
b3Qgbm90IHZhbGlkIGJlY2F1c2UgdGhlIHJlcXVlc3Qgd2FzIG5vdCBwcm9jZXNzZWQKLSAgICAg
IC8vIGJ5IHRoZSBYIFNlcnZlciwgc28gemVybyBpdC4KLSAgICAgIHNobV9waXhtYXBfID0gMDsK
LSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLQotICB7Ci0gICAgWEVycm9yVHJhcCBl
cnJvcl90cmFwKGRpc3BsYXlfKTsKLSAgICBYR0NWYWx1ZXMgc2htX2djX3ZhbHVlczsKLSAgICBz
aG1fZ2NfdmFsdWVzLnN1YndpbmRvd19tb2RlID0gSW5jbHVkZUluZmVyaW9yczsKLSAgICBzaG1f
Z2NfdmFsdWVzLmdyYXBoaWNzX2V4cG9zdXJlcyA9IEZhbHNlOwotICAgIHNobV9nY18gPSBYQ3Jl
YXRlR0MoZGlzcGxheV8sIHdpbmRvd18sCi0gICAgICAgICAgICAgICAgICAgICAgICBHQ1N1Yndp
bmRvd01vZGUgfCBHQ0dyYXBoaWNzRXhwb3N1cmVzLCAmc2htX2djX3ZhbHVlcyk7Ci0gICAgWFN5
bmMoZGlzcGxheV8sIEZhbHNlKTsKLSAgICBpZiAoZXJyb3JfdHJhcC5HZXRMYXN0RXJyb3JBbmRE
aXNhYmxlKCkgIT0gMCkgewotICAgICAgWEZyZWVQaXhtYXAoZGlzcGxheV8sIHNobV9waXhtYXBf
KTsKLSAgICAgIHNobV9waXhtYXBfID0gMDsKLSAgICAgIHNobV9nY18gPSAwOyAgLy8gU2VlIHNo
bV9waXhtYXBfIGNvbW1lbnQgYWJvdmUuCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9
Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgWFNlcnZlclBpeGVsQnVmZmVyOjpJc1dpbmRv
d1ZhbGlkKCkgY29uc3QgewotICBYV2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwotICB7Ci0g
ICAgWEVycm9yVHJhcCBlcnJvcl90cmFwKGRpc3BsYXlfKTsKLSAgICBpZiAoIVhHZXRXaW5kb3dB
dHRyaWJ1dGVzKGRpc3BsYXlfLCB3aW5kb3dfLCAmYXR0cmlidXRlcykgfHwKLSAgICAgICAgZXJy
b3JfdHJhcC5HZXRMYXN0RXJyb3JBbmREaXNhYmxlKCkgIT0gMCkgewotICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBYU2VydmVyUGl4ZWxC
dWZmZXI6OlN5bmNocm9uaXplKCkgewotICBpZiAoc2htX3NlZ21lbnRfaW5mb18gJiYgIXNobV9w
aXhtYXBfKSB7Ci0gICAgLy8gWFNobUdldEltYWdlIGNhbiBmYWlsIGlmIHRoZSBkaXNwbGF5IGlz
IGJlaW5nIHJlY29uZmlndXJlZC4KLSAgICBYRXJyb3JUcmFwIGVycm9yX3RyYXAoZGlzcGxheV8p
OwotICAgIC8vIFhTaG1HZXRJbWFnZSBmYWlscyBpZiB0aGUgd2luZG93IGlzIHBhcnRpYWxseSBv
dXQgb2Ygc2NyZWVuLgotICAgIHhzaG1fZ2V0X2ltYWdlX3N1Y2NlZWRlZF8gPQotICAgICAgICBY
U2htR2V0SW1hZ2UoZGlzcGxheV8sIHdpbmRvd18sIHhfc2htX2ltYWdlXywgMCwgMCwgQWxsUGxh
bmVzKTsKLSAgfQotfQotCi1ib29sIFhTZXJ2ZXJQaXhlbEJ1ZmZlcjo6Q2FwdHVyZVJlY3QoY29u
c3QgRGVza3RvcFJlY3QmIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGVza3RvcEZyYW1lKiBmcmFtZSkgewotICBSVENfRENIRUNLX0xFKHJlY3QucmlnaHQoKSwg
d2luZG93X3JlY3RfLndpZHRoKCkpOwotICBSVENfRENIRUNLX0xFKHJlY3QuYm90dG9tKCksIHdp
bmRvd19yZWN0Xy5oZWlnaHQoKSk7Ci0KLSAgWEltYWdlKiBpbWFnZTsKLSAgdWludDhfdCogZGF0
YTsKLQotICBpZiAoc2htX3NlZ21lbnRfaW5mb18gJiYgKHNobV9waXhtYXBfIHx8IHhzaG1fZ2V0
X2ltYWdlX3N1Y2NlZWRlZF8pKSB7Ci0gICAgaWYgKHNobV9waXhtYXBfKSB7Ci0gICAgICBYQ29w
eUFyZWEoZGlzcGxheV8sIHdpbmRvd18sIHNobV9waXhtYXBfLCBzaG1fZ2NfLCByZWN0LmxlZnQo
KSwKLSAgICAgICAgICAgICAgICByZWN0LnRvcCgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCksIHJlY3QubGVmdCgpLAotICAgICAgICAgICAgICAgIHJlY3QudG9wKCkpOwotICAgICAgWFN5
bmMoZGlzcGxheV8sIEZhbHNlKTsKLSAgICB9Ci0KLSAgICBpbWFnZSA9IHhfc2htX2ltYWdlXzsK
LSAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW1hZ2UtPmRhdGEpICsKLSAg
ICAgICAgICAgcmVjdC50b3AoKSAqIGltYWdlLT5ieXRlc19wZXJfbGluZSArCi0gICAgICAgICAg
IHJlY3QubGVmdCgpICogaW1hZ2UtPmJpdHNfcGVyX3BpeGVsIC8gODsKLQotICB9IGVsc2Ugewot
ICAgIGlmICh4X2ltYWdlXykKLSAgICAgIFhEZXN0cm95SW1hZ2UoeF9pbWFnZV8pOwotICAgIHhf
aW1hZ2VfID0gWEdldEltYWdlKGRpc3BsYXlfLCB3aW5kb3dfLCByZWN0LmxlZnQoKSwgcmVjdC50
b3AoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCksIEFsbFBsYW5lcywgWlBpeG1hcCk7Ci0gICAgaWYgKCF4X2ltYWdlXykKLSAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGltYWdlID0geF9pbWFnZV87Ci0gICAgZGF0YSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGltYWdlLT5kYXRhKTsKLSAgfQotCi0gIGlmIChJc1hJbWFnZVJHQkZv
cm1hdChpbWFnZSkpIHsKLSAgICBGYXN0QmxpdChpbWFnZSwgZGF0YSwgcmVjdCwgZnJhbWUpOwot
ICB9IGVsc2UgewotICAgIFNsb3dCbGl0KGltYWdlLCBkYXRhLCByZWN0LCBmcmFtZSk7Ci0gIH0K
LQotICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNr
dG9wX2NhcHR1cmUveDExL3hfc2VydmVyX3BpeGVsX2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUveDExL3hf
c2VydmVyX3BpeGVsX2J1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTIw
OTQ1ZjNkNTI5Y2FmZWUwYmUzNjU2MDRhNGZmMzVlYjk5ZTQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL3gxMS94X3NlcnZlcl9waXhlbF9i
dWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IChjKSAyMDEzIFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
LSAqLwotCi0vLyBEb24ndCBpbmNsdWRlIHRoaXMgZmlsZSBpbiBhbnkgLmggZmlsZXMgYmVjYXVz
ZSBpdCBwdWxscyBpbiBzb21lIFggaGVhZGVycy4KLQotI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1Bf
Q0FQVFVSRV9YMTFfWF9TRVJWRVJfUElYRUxfQlVGRkVSX0hfCi0jZGVmaW5lIE1PRFVMRVNfREVT
S1RPUF9DQVBUVVJFX1gxMV9YX1NFUlZFUl9QSVhFTF9CVUZGRVJfSF8KLQotI2luY2x1ZGUgIm1v
ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfZ2VvbWV0cnkuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0KLSNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KLSNpbmNs
dWRlIDxYMTEvZXh0ZW5zaW9ucy9YU2htLmg+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1jbGFz
cyBEZXNrdG9wRnJhbWU7Ci0KLS8vIEEgY2xhc3MgdG8gYWxsb3cgdGhlIFggc2VydmVyJ3MgcGl4
ZWwgYnVmZmVyIHRvIGJlIGFjY2Vzc2VkIGFzIGVmZmljaWVudGx5Ci0vLyBhcyBwb3NzaWJsZS4K
LWNsYXNzIFhTZXJ2ZXJQaXhlbEJ1ZmZlciB7Ci0gcHVibGljOgotICBYU2VydmVyUGl4ZWxCdWZm
ZXIoKTsKLSAgflhTZXJ2ZXJQaXhlbEJ1ZmZlcigpOwotCi0gIHZvaWQgUmVsZWFzZSgpOwotCi0g
IC8vIEFsbG9jYXRlIChvciByZWFsbG9jYXRlKSB0aGUgcGl4ZWwgYnVmZmVyIGZvciB8d2luZG93
fC4gUmV0dXJucyBmYWxzZSBpbgotICAvLyBjYXNlIG9mIGFuIGVycm9yIChlLmcuIHdpbmRvdyBk
b2Vzbid0IGV4aXN0KS4KLSAgYm9vbCBJbml0KERpc3BsYXkqIGRpc3BsYXksIFdpbmRvdyB3aW5k
b3cpOwotCi0gIGJvb2wgaXNfaW5pdGlhbGl6ZWQoKSB7IHJldHVybiB3aW5kb3dfICE9IDA7IH0K
LQotICAvLyBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cgdGhlIGJ1ZmZlciB3YXMgaW5p
dGlhbGl6ZWQgZm9yLgotICBEZXNrdG9wU2l6ZSB3aW5kb3dfc2l6ZSgpIHsgcmV0dXJuIHdpbmRv
d19yZWN0Xy5zaXplKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSByZWN0YW5nbGUgb2YgdGhlIHdp
bmRvdyB0aGUgYnVmZmVyIHdhcyBpbml0aWFsaXplZCBmb3IuCi0gIGNvbnN0IERlc2t0b3BSZWN0
JiB3aW5kb3dfcmVjdCgpIHsgcmV0dXJuIHdpbmRvd19yZWN0XzsgfQotCi0gIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgd2luZG93IGNhbiBiZSBmb3VuZC4KLSAgYm9vbCBJc1dpbmRvd1ZhbGlkKCkg
Y29uc3Q7Ci0KLSAgLy8gSWYgc2hhcmVkIG1lbW9yeSBpcyBiZWluZyB1c2VkIHdpdGhvdXQgcGl4
bWFwcywgc3luY2hyb25pemUgdGhpcyBwaXhlbAotICAvLyBidWZmZXIgd2l0aCB0aGUgcm9vdCB3
aW5kb3cgY29udGVudHMgKG90aGVyd2lzZSwgdGhpcyBpcyBhIG5vLW9wKS4KLSAgLy8gVGhpcyBp
cyB0byBhdm9pZCBkb2luZyBhIGZ1bGwtc2NyZWVuIGNhcHR1cmUgZm9yIGVhY2ggaW5kaXZpZHVh
bAotICAvLyByZWN0YW5nbGUgaW4gdGhlIGNhcHR1cmUgbGlzdCwgd2hlbiBpdCBvbmx5IG5lZWRz
IHRvIGJlIGRvbmUgb25jZSBhdCB0aGUKLSAgLy8gYmVnaW5uaW5nLgotICB2b2lkIFN5bmNocm9u
aXplKCk7Ci0KLSAgLy8gQ2FwdHVyZSB0aGUgc3BlY2lmaWVkIHJlY3RhbmdsZSBhbmQgc3RvcmVz
IGl0IGluIHRoZSB8ZnJhbWV8LiBJbiB0aGUgY2FzZQotICAvLyB3aGVyZSB0aGUgZnVsbC1zY3Jl
ZW4gZGF0YSBpcyBjYXB0dXJlZCBieSBTeW5jaHJvbml6ZSgpLCB0aGlzIHNpbXBseQotICAvLyBy
ZXR1cm5zIHRoZSBwb2ludGVyIHdpdGhvdXQgZG9pbmcgYW55IG1vcmUgd29yay4gVGhlIGNhbGxl
ciBtdXN0IGVuc3VyZQotICAvLyB0aGF0IHxyZWN0fCBpcyBub3QgbGFyZ2VyIHRoYW4gd2luZG93
X3NpemUoKS4KLSAgYm9vbCBDYXB0dXJlUmVjdChjb25zdCBEZXNrdG9wUmVjdCYgcmVjdCwgRGVz
a3RvcEZyYW1lKiBmcmFtZSk7Ci0KLSBwcml2YXRlOgotICB2b2lkIFJlbGVhc2VTaGFyZWRNZW1v
cnlTZWdtZW50KCk7Ci0KLSAgdm9pZCBJbml0U2htKGNvbnN0IFhXaW5kb3dBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzKTsKLSAgYm9vbCBJbml0UGl4bWFwcyhpbnQgZGVwdGgpOwotCi0gIERpc3BsYXkq
IGRpc3BsYXlfID0gbnVsbHB0cjsKLSAgV2luZG93IHdpbmRvd18gPSAwOwotICBEZXNrdG9wUmVj
dCB3aW5kb3dfcmVjdF87Ci0gIFhJbWFnZSogeF9pbWFnZV8gPSBudWxscHRyOwotICBYU2htU2Vn
bWVudEluZm8qIHNobV9zZWdtZW50X2luZm9fID0gbnVsbHB0cjsKLSAgWEltYWdlKiB4X3NobV9p
bWFnZV8gPSBudWxscHRyOwotICBQaXhtYXAgc2htX3BpeG1hcF8gPSAwOwotICBHQyBzaG1fZ2Nf
ID0gbnVsbHB0cjsKLSAgYm9vbCB4c2htX2dldF9pbWFnZV9zdWNjZWVkZWRfID0gZmFsc2U7Ci0K
LSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihYU2VydmVyUGl4ZWxCdWZmZXIpOwotfTsK
LQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE1PRFVMRVNfREVTS1RPUF9D
QVBUVVJFX1gxMV9YX1NFUlZFUl9QSVhFTF9CVUZGRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvaW5jbHVkZS9tb2R1bGVf
Y29tbW9uX3R5cGVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuY2MKaW5kZXggNGFkNWQxNDQ0
ZTljNTdhNzEyMTViNTk2OTAzN2FmMzcyZDVlMjVhNy4uODBlYmEyZTMwNTFjZDJkMWZkZjBhYTUx
ZjYyZjUwNDhkYTA1ZWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9pbmNs
dWRlL21vZHVsZV9jb21tb25fdHlwZXMuY2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJt
b2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgogCiAjaW5jbHVkZSA8c3RyaW5n
Lmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9pbmNsdWRlL21vZHVs
ZV9jb21tb25fdHlwZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgKaW5kZXggOThmZjc2NzMx
MTBjZDAzOWVjNmNkMzI1NDdhZTcxOGQ5Y2JkZGE3Yy4uZTA1OGNjODRlNjZmZjc5NTQ1YWZlMGUw
ODNiMzExMjQ2YTg5ZjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2luY2x1
ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibW9k
dWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXNfcHVibGljLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9pbmNsdWRlL21vZHVsZV9mZWNfdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfdmlkZW9faGVhZGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVt
L3J0Y19leHBvcnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTMzLDcgKzM0LDcgQEAg
c3RydWN0IFdlYlJ0Y1JUUEhlYWRlciB7CiAgIGludDY0X3QgbnRwX3RpbWVfbXM7CiB9OwogCi1j
bGFzcyBSVFBGcmFnbWVudGF0aW9uSGVhZGVyIHsKK2NsYXNzIFJUQ19FWFBPUlQgUlRQRnJhZ21l
bnRhdGlvbkhlYWRlciB7CiAgcHVibGljOgogICBSVFBGcmFnbWVudGF0aW9uSGVhZGVyKCk7CiAg
IFJUUEZyYWdtZW50YXRpb25IZWFkZXIoY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciYpID0g
ZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9wYWNpbmcvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9CVUlMRC5nbgppbmRleCBhMDYyMzNhZDkw
MTMxYjQwN2IwMTk2ODRlYWQ4MWZkNzMzMGQwYWE0Li45YmM2MTkzNmYxNjgyMmI3ZDhlYWIzN2E1
MGZhNTViZjhmYTM2NWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9CVUlMRC5nbgpAQCAt
MjksNyArMjksNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoInBhY2luZyIpIHsKICAgZGVwcyA9IFsK
ICAgICAiOmludGVydmFsX2J1ZGdldCIsCiAgICAgIi4uOm1vZHVsZV9hcGkiLAotICAgICIuLi8u
Li86d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL2FwaS90cmFuc3BvcnQ6bmV0d29ya19jb250
cm9sIiwKICAgICAiLi4vLi4vbG9nZ2luZzpydGNfZXZlbnRfYndlIiwKICAgICAiLi4vLi4vbG9n
Z2luZzpydGNfZXZlbnRfbG9nX2FwaSIsCkBAIC01Niw3ICs1NSw2IEBAIHJ0Y19zb3VyY2Vfc2V0
KCJpbnRlcnZhbF9idWRnZXQiKSB7CiAgIF0KIAogICBkZXBzID0gWwotICAgICIuLi8uLi86d2Vi
cnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0
Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvYml0cmF0ZV9wcm9i
ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3BhY2luZy9iaXRyYXRlX3Byb2Jlci5jYwppbmRleCBjYmYxZDJiOTdlZmI5MjcyZWIyNTljYWVi
MGRjM2NkZTkzMjA1ZmEwLi40ZmY3YzBkNTgzZGQxZDcwOGRkOTAwMzRmMTAwOGUwMTNlZDFhYjUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5jYwpA
QCAtMTMsOSArMTMsOSBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50LmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL2V2ZW50cy9ydGNf
ZXZlbnRfcHJvYmVfY2x1c3Rlcl9jcmVhdGVkLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZl
bnRfbG9nL3J0Y19ldmVudF9sb2cuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNlZF9z
ZW5kZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCiAKQEAgLTk2LDggKzk2LDkgQEAgdm9pZCBCaXRyYXRlUHJvYmVyOjpDcmVh
dGVQcm9iZUNsdXN0ZXIoaW50IGJpdHJhdGVfYnBzLCBpbnQ2NF90IG5vd19tcykgewogICBQcm9i
ZUNsdXN0ZXIgY2x1c3RlcjsKICAgY2x1c3Rlci50aW1lX2NyZWF0ZWRfbXMgPSBub3dfbXM7CiAg
IGNsdXN0ZXIucGFjZV9pbmZvLnByb2JlX2NsdXN0ZXJfbWluX3Byb2JlcyA9IGtNaW5Qcm9iZVBh
Y2tldHNTZW50OwotICBjbHVzdGVyLnBhY2VfaW5mby5wcm9iZV9jbHVzdGVyX21pbl9ieXRlcyA9
Ci0gICAgICBiaXRyYXRlX2JwcyAqIGtNaW5Qcm9iZUR1cmF0aW9uTXMgLyA4MDAwOworICBjbHVz
dGVyLnBhY2VfaW5mby5wcm9iZV9jbHVzdGVyX21pbl9ieXRlcyA9IHN0YXRpY19jYXN0PGludDMy
X3Q+KAorICAgICAgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYml0cmF0ZV9icHMpICoga01pblByb2Jl
RHVyYXRpb25NcyAvIDgwMDApOworICBSVENfRENIRUNLX0dFKGNsdXN0ZXIucGFjZV9pbmZvLnBy
b2JlX2NsdXN0ZXJfbWluX2J5dGVzLCAwKTsKICAgY2x1c3Rlci5wYWNlX2luZm8uc2VuZF9iaXRy
YXRlX2JwcyA9IGJpdHJhdGVfYnBzOwogICBjbHVzdGVyLnBhY2VfaW5mby5wcm9iZV9jbHVzdGVy
X2lkID0gbmV4dF9jbHVzdGVyX2lkXysrOwogICBjbHVzdGVyc18ucHVzaChjbHVzdGVyKTsKQEAg
LTEyNiw5ICsxMjcsOSBAQCBpbnQgQml0cmF0ZVByb2Jlcjo6VGltZVVudGlsTmV4dFByb2JlKGlu
dDY0X3Qgbm93X21zKSB7CiAgIGlmIChuZXh0X3Byb2JlX3RpbWVfbXNfID49IDApIHsKICAgICB0
aW1lX3VudGlsX3Byb2JlX21zID0gbmV4dF9wcm9iZV90aW1lX21zXyAtIG5vd19tczsKICAgICBp
ZiAodGltZV91bnRpbF9wcm9iZV9tcyA8IC1rTWF4UHJvYmVEZWxheU1zKSB7Ci0gICAgICBSVENf
TE9HKExTX1dBUk5JTkcpIDw8ICJQcm9iZSBkZWxheSB0b28gaGlnaCIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgIiAobmV4dF9tczoiIDw8IG5leHRfcHJvYmVfdGltZV9tc18KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgIiwgbm93X21zOiAiIDw8IG5vd19tcyA8PCAiKSI7Cisg
ICAgICBSVENfRExPRyhMU19XQVJOSU5HKSA8PCAiUHJvYmUgZGVsYXkgdG9vIGhpZ2giCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiIChuZXh0X21zOiIgPDwgbmV4dF9wcm9iZV90aW1l
X21zXworICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgbm93X21zOiAiIDw8IG5vd19t
cyA8PCAiKSI7CiAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRy
YXRlX3Byb2Jlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9wYWNpbmcvYml0cmF0ZV9wcm9iZXIuaAppbmRleCBiMjU0OGMwMDZkZTgzZjVlNTk3
ZDM2NTJkZjQ4ZmViMjBjMjVjNjdjLi5iYjk4MTAwZGZhYzVjNmM3NDk2NmNlYzYwNThjNzIzNDc5
YWQ1NjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL2JpdHJhdGVfcHJvYmVy
LmgKQEAgLTExLDEwICsxMSwxMSBAQAogI2lmbmRlZiBNT0RVTEVTX1BBQ0lOR19CSVRSQVRFX1BS
T0JFUl9IXwogI2RlZmluZSBNT0RVTEVTX1BBQ0lOR19CSVRSQVRFX1BST0JFUl9IXwogCisjaW5j
bHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8cXVldWU+CiAK
ICNpbmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IGNsYXNzIFJ0Y0V2ZW50TG9nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvYml0cmF0ZV9wcm9iZXJfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Bh
Y2luZy9iaXRyYXRlX3Byb2Jlcl91bml0dGVzdC5jYwppbmRleCBkYzU5Njk4MmRiMDIyYjNhOTMz
NGExZWNiYjlhMDM4NWJjZjEwMjQ3Li45NWQyNjU5M2NiZGRiOTFmYzYzMjVmNTJmNDAyNDc5YThm
OTAzODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlcl91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9iaXRy
YXRlX3Byb2Jlcl91bml0dGVzdC5jYwpAQCAtMTQ3LDYgKzE0NywyNCBAQCBURVNUKEJpdHJhdGVQ
cm9iZXJUZXN0LCBTY2FsZUJ5dGVzVXNlZEZvclByb2JpbmcpIHsKICAgRVhQRUNUX0ZBTFNFKHBy
b2Jlci5Jc1Byb2JpbmcoKSk7CiB9CiAKK1RFU1QoQml0cmF0ZVByb2JlclRlc3QsIEhpZ2hCaXRy
YXRlUHJvYmluZykgeworICBCaXRyYXRlUHJvYmVyIHByb2JlcjsKKyAgY29uc3RleHByIGludCBr
Qml0cmF0ZUJwcyA9IDEwMDAwMDAwMDA7ICAvLyAxIEdicHMuCisgIGNvbnN0ZXhwciBpbnQga1Bh
Y2tldFNpemVCeXRlcyA9IDEwMDA7CisgIGNvbnN0ZXhwciBpbnQga0V4cGVjdGVkQnl0ZXNTZW50
ID0gKGtCaXRyYXRlQnBzIC8gODAwMCkgKiAxNTsKKworICBwcm9iZXIuQ3JlYXRlUHJvYmVDbHVz
dGVyKGtCaXRyYXRlQnBzLCAwKTsKKyAgcHJvYmVyLk9uSW5jb21pbmdQYWNrZXQoa1BhY2tldFNp
emVCeXRlcyk7CisgIGludCBieXRlc19zZW50ID0gMDsKKyAgd2hpbGUgKGJ5dGVzX3NlbnQgPCBr
RXhwZWN0ZWRCeXRlc1NlbnQpIHsKKyAgICBBU1NFUlRfVFJVRShwcm9iZXIuSXNQcm9iaW5nKCkp
OworICAgIHByb2Jlci5Qcm9iZVNlbnQoMCwga1BhY2tldFNpemVCeXRlcyk7CisgICAgYnl0ZXNf
c2VudCArPSBrUGFja2V0U2l6ZUJ5dGVzOworICB9CisKKyAgRVhQRUNUX0ZBTFNFKHByb2Jlci5J
c1Byb2JpbmcoKSk7Cit9CisKIFRFU1QoQml0cmF0ZVByb2JlclRlc3QsIFByb2JlQ2x1c3RlclRp
bWVvdXQpIHsKICAgQml0cmF0ZVByb2JlciBwcm9iZXI7CiAgIGNvbnN0ZXhwciBpbnQga0JpdHJh
dGVCcHMgPSAzMDAwMDA7ICAvLyAzMDAga2JwcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvaW50ZXJ2YWxfYnVkZ2V0
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Bh
Y2luZy9pbnRlcnZhbF9idWRnZXQuaAppbmRleCA4ODBmZTc4NGJhNzRmMDdlZTgxMmU5NGRmZWE5
Y2FkNWVmM2Q1Y2UzLi5kMDliMDZlMzQwMzRhZTI0M2Y2YmYxYTEwYzJmZGRjNjQ1Y2ZjMTA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3BhY2luZy9pbnRlcnZhbF9idWRnZXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9pbnRlcnZhbF9idWRnZXQuaApAQCAt
MTEsNyArMTEsOCBAQAogI2lmbmRlZiBNT0RVTEVTX1BBQ0lOR19JTlRFUlZBTF9CVURHRVRfSF8K
ICNkZWZpbmUgTU9EVUxFU19QQUNJTkdfSU5URVJWQUxfQlVER0VUX0hfCiAKLSNpbmNsdWRlICJj
b21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9w
YWNpbmcvcGFjZWRfc2VuZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcGFjZWRfc2VuZGVyLmNjCmluZGV4IDhjYzQ0MmMyMjhl
ODQ5ZmRmYmYyZGQ2YjhlYmZiMzNlZmQxNzMwN2UuLjdlMGFjNzgxZTJiNzg0Y2I3ZTlhNjhhMTU5
OTI2MDk3MWNkYTM1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNlZF9z
ZW5kZXIuY2MKQEAgLTExLDE1ICsxMSwxMSBAQAogI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3Bh
Y2VkX3NlbmRlci5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPG1hcD4KLSNp
bmNsdWRlIDxxdWV1ZT4KLSNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNs
dWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvYWxyX2RldGVjdG9yLmgiCi0jaW5jbHVk
ZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3BhY2luZy9iaXRyYXRlX3Byb2Jlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL2lu
dGVydmFsX2J1ZGdldC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nl
c3NfdGhyZWFkLmgiCkBAIC01OCw5ICs1NCw5IEBAIFBhY2VkU2VuZGVyOjpQYWNlZFNlbmRlcihj
b25zdCBDbG9jayogY2xvY2ssCiAgICAgICB2aWRlb19ibG9ja3NfYXVkaW9fKCFmaWVsZF90cmlh
bDo6SXNEaXNhYmxlZCgiV2ViUlRDLVBhY2VyLUJsb2NrQXVkaW8iKSksCiAgICAgICBsYXN0X3Rp
bWVzdGFtcF9tc18oY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSksCiAgICAgICBwYXVzZWRf
KGZhbHNlKSwKLSAgICAgIG1lZGlhX2J1ZGdldF8oYWJzbDo6bWFrZV91bmlxdWU8SW50ZXJ2YWxC
dWRnZXQ+KDApKSwKLSAgICAgIHBhZGRpbmdfYnVkZ2V0XyhhYnNsOjptYWtlX3VuaXF1ZTxJbnRl
cnZhbEJ1ZGdldD4oMCkpLAotICAgICAgcHJvYmVyXyhhYnNsOjptYWtlX3VuaXF1ZTxCaXRyYXRl
UHJvYmVyPihldmVudF9sb2cpKSwKKyAgICAgIG1lZGlhX2J1ZGdldF8oMCksCisgICAgICBwYWRk
aW5nX2J1ZGdldF8oMCksCisgICAgICBwcm9iZXJfKGV2ZW50X2xvZyksCiAgICAgICBwcm9iaW5n
X3NlbmRfZmFpbHVyZV8oZmFsc2UpLAogICAgICAgZXN0aW1hdGVkX2JpdHJhdGVfYnBzXygwKSwK
ICAgICAgIG1pbl9zZW5kX2JpdHJhdGVfa2Jwc18oMHUpLApAQCAtNjksNyArNjUsNyBAQCBQYWNl
ZFNlbmRlcjo6UGFjZWRTZW5kZXIoY29uc3QgQ2xvY2sqIGNsb2NrLAogICAgICAgdGltZV9sYXN0
X3Byb2Nlc3NfdXNfKGNsb2NrLT5UaW1lSW5NaWNyb3NlY29uZHMoKSksCiAgICAgICBsYXN0X3Nl
bmRfdGltZV91c18oY2xvY2stPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSwKICAgICAgIGZpcnN0X3Nl
bnRfcGFja2V0X21zXygtMSksCi0gICAgICBwYWNrZXRzXyhjbG9jayksCisgICAgICBwYWNrZXRz
XyhjbG9jay0+VGltZUluTWljcm9zZWNvbmRzKCkpLAogICAgICAgcGFja2V0X2NvdW50ZXJfKDAp
LAogICAgICAgcGFjaW5nX2ZhY3Rvcl8oa0RlZmF1bHRQYWNlTXVsdGlwbGllciksCiAgICAgICBx
dWV1ZV90aW1lX2xpbWl0KGtNYXhRdWV1ZUxlbmd0aE1zKSwKQEAgLTg0LDcgKzgwLDcgQEAgUGFj
ZWRTZW5kZXI6On5QYWNlZFNlbmRlcigpIHt9CiAKIHZvaWQgUGFjZWRTZW5kZXI6OkNyZWF0ZVBy
b2JlQ2x1c3RlcihpbnQgYml0cmF0ZV9icHMpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRz
ZWN0Xyk7Ci0gIHByb2Jlcl8tPkNyZWF0ZVByb2JlQ2x1c3RlcihiaXRyYXRlX2JwcywgVGltZU1p
bGxpc2Vjb25kcygpKTsKKyAgcHJvYmVyXy5DcmVhdGVQcm9iZUNsdXN0ZXIoYml0cmF0ZV9icHMs
IFRpbWVNaWxsaXNlY29uZHMoKSk7CiB9CiAKIHZvaWQgUGFjZWRTZW5kZXI6OlBhdXNlKCkgewpA
QCAtMTQ5LDcgKzE0NSw3IEBAIGludDY0X3QgUGFjZWRTZW5kZXI6OlRpbWVNaWxsaXNlY29uZHMo
KSBjb25zdCB7CiB2b2lkIFBhY2VkU2VuZGVyOjpTZXRQcm9iaW5nRW5hYmxlZChib29sIGVuYWJs
ZWQpIHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRzZWN0Xyk7CiAgIFJUQ19DSEVDS19FUSgw
LCBwYWNrZXRfY291bnRlcl8pOwotICBwcm9iZXJfLT5TZXRFbmFibGVkKGVuYWJsZWQpOworICBw
cm9iZXJfLlNldEVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIHZvaWQgUGFjZWRTZW5kZXI6OlNldEVz
dGltYXRlZEJpdHJhdGUodWludDMyX3QgYml0cmF0ZV9icHMpIHsKQEAgLTE1Nyw3ICsxNTMsNyBA
QCB2b2lkIFBhY2VkU2VuZGVyOjpTZXRFc3RpbWF0ZWRCaXRyYXRlKHVpbnQzMl90IGJpdHJhdGVf
YnBzKSB7CiAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlBhY2VkU2VuZGVyIGlzIG5vdCBkZXNp
Z25lZCB0byBoYW5kbGUgMCBiaXRyYXRlLiI7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0c2Vj
dF8pOwogICBlc3RpbWF0ZWRfYml0cmF0ZV9icHNfID0gYml0cmF0ZV9icHM7Ci0gIHBhZGRpbmdf
YnVkZ2V0Xy0+c2V0X3RhcmdldF9yYXRlX2ticHMoCisgIHBhZGRpbmdfYnVkZ2V0Xy5zZXRfdGFy
Z2V0X3JhdGVfa2JwcygKICAgICAgIHN0ZDo6bWluKGVzdGltYXRlZF9iaXRyYXRlX2Jwc18gLyAx
MDAwLCBtYXhfcGFkZGluZ19iaXRyYXRlX2ticHNfKSk7CiAgIHBhY2luZ19iaXRyYXRlX2ticHNf
ID0KICAgICAgIHN0ZDo6bWF4KG1pbl9zZW5kX2JpdHJhdGVfa2Jwc18sIGVzdGltYXRlZF9iaXRy
YXRlX2Jwc18gLyAxMDAwKSAqCkBAIC0xNzMsNyArMTY5LDcgQEAgdm9pZCBQYWNlZFNlbmRlcjo6
U2V0U2VuZEJpdHJhdGVMaW1pdHMoaW50IG1pbl9zZW5kX2JpdHJhdGVfYnBzLAogICAgICAgc3Rk
OjptYXgobWluX3NlbmRfYml0cmF0ZV9rYnBzXywgZXN0aW1hdGVkX2JpdHJhdGVfYnBzXyAvIDEw
MDApICoKICAgICAgIHBhY2luZ19mYWN0b3JfOwogICBtYXhfcGFkZGluZ19iaXRyYXRlX2ticHNf
ID0gcGFkZGluZ19iaXRyYXRlIC8gMTAwMDsKLSAgcGFkZGluZ19idWRnZXRfLT5zZXRfdGFyZ2V0
X3JhdGVfa2JwcygKKyAgcGFkZGluZ19idWRnZXRfLnNldF90YXJnZXRfcmF0ZV9rYnBzKAogICAg
ICAgc3RkOjptaW4oZXN0aW1hdGVkX2JpdHJhdGVfYnBzXyAvIDEwMDAsIG1heF9wYWRkaW5nX2Jp
dHJhdGVfa2Jwc18pKTsKIH0KIApAQCAtMTgyLDcgKzE3OCw3IEBAIHZvaWQgUGFjZWRTZW5kZXI6
OlNldFBhY2luZ1JhdGVzKHVpbnQzMl90IHBhY2luZ19yYXRlX2JwcywKICAgcnRjOjpDcml0U2Nv
cGUgY3MoJmNyaXRzZWN0Xyk7CiAgIFJUQ19EQ0hFQ0socGFjaW5nX3JhdGVfYnBzID4gMCk7CiAg
IHBhY2luZ19iaXRyYXRlX2ticHNfID0gcGFjaW5nX3JhdGVfYnBzIC8gMTAwMDsKLSAgcGFkZGlu
Z19idWRnZXRfLT5zZXRfdGFyZ2V0X3JhdGVfa2JwcyhwYWRkaW5nX3JhdGVfYnBzIC8gMTAwMCk7
CisgIHBhZGRpbmdfYnVkZ2V0Xy5zZXRfdGFyZ2V0X3JhdGVfa2JwcyhwYWRkaW5nX3JhdGVfYnBz
IC8gMTAwMCk7CiB9CiAKIHZvaWQgUGFjZWRTZW5kZXI6Okluc2VydFBhY2tldChSdHBQYWNrZXRT
ZW5kZXI6OlByaW9yaXR5IHByaW9yaXR5LApAQCAtMTk2LDcgKzE5Miw3IEBAIHZvaWQgUGFjZWRT
ZW5kZXI6Okluc2VydFBhY2tldChSdHBQYWNrZXRTZW5kZXI6OlByaW9yaXR5IHByaW9yaXR5LAog
ICAgICAgPDwgIlNldFBhY2luZ1JhdGUgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIEluc2VydFBhY2tl
dC4iOwogCiAgIGludDY0X3Qgbm93X21zID0gVGltZU1pbGxpc2Vjb25kcygpOwotICBwcm9iZXJf
LT5PbkluY29taW5nUGFja2V0KGJ5dGVzKTsKKyAgcHJvYmVyXy5PbkluY29taW5nUGFja2V0KGJ5
dGVzKTsKIAogICBpZiAoY2FwdHVyZV90aW1lX21zIDwgMCkKICAgICBjYXB0dXJlX3RpbWVfbXMg
PSBub3dfbXM7CkBAIC0yNTQsMTcgKzI1MCwxNSBAQCBpbnQ2NF90IFBhY2VkU2VuZGVyOjpUaW1l
VW50aWxOZXh0UHJvY2VzcygpIHsKICAgaWYgKHBhdXNlZF8pCiAgICAgcmV0dXJuIHN0ZDo6bWF4
PGludDY0X3Q+KGtQYXVzZWRQcm9jZXNzSW50ZXJ2YWxNcyAtIGVsYXBzZWRfdGltZV9tcywgMCk7
CiAKLSAgaWYgKHByb2Jlcl8tPklzUHJvYmluZygpKSB7Ci0gICAgaW50NjRfdCByZXQgPSBwcm9i
ZXJfLT5UaW1lVW50aWxOZXh0UHJvYmUoVGltZU1pbGxpc2Vjb25kcygpKTsKKyAgaWYgKHByb2Jl
cl8uSXNQcm9iaW5nKCkpIHsKKyAgICBpbnQ2NF90IHJldCA9IHByb2Jlcl8uVGltZVVudGlsTmV4
dFByb2JlKFRpbWVNaWxsaXNlY29uZHMoKSk7CiAgICAgaWYgKHJldCA+IDAgfHwgKHJldCA9PSAw
ICYmICFwcm9iaW5nX3NlbmRfZmFpbHVyZV8pKQogICAgICAgcmV0dXJuIHJldDsKICAgfQogICBy
ZXR1cm4gc3RkOjptYXg8aW50NjRfdD4oa01pblBhY2tldExpbWl0TXMgLSBlbGFwc2VkX3RpbWVf
bXMsIDApOwogfQogCi12b2lkIFBhY2VkU2VuZGVyOjpQcm9jZXNzKCkgewotICBpbnQ2NF90IG5v
d191cyA9IGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCk7Ci0gIHJ0Yzo6Q3JpdFNjb3BlIGNz
KCZjcml0c2VjdF8pOworaW50NjRfdCBQYWNlZFNlbmRlcjo6VXBkYXRlVGltZUFuZEdldEVsYXBz
ZWRNcyhpbnQ2NF90IG5vd191cykgewogICBpbnQ2NF90IGVsYXBzZWRfdGltZV9tcyA9IChub3df
dXMgLSB0aW1lX2xhc3RfcHJvY2Vzc191c18gKyA1MDApIC8gMTAwMDsKICAgdGltZV9sYXN0X3By
b2Nlc3NfdXNfID0gbm93X3VzOwogICBpZiAoZWxhcHNlZF90aW1lX21zID4ga01heEVsYXBzZWRU
aW1lTXMpIHsKQEAgLTI3Myw2ICsyNjcsMTAgQEAgdm9pZCBQYWNlZFNlbmRlcjo6UHJvY2Vzcygp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGtNYXhFbGFwc2VkVGltZU1zIDw8ICIgbXMi
OwogICAgIGVsYXBzZWRfdGltZV9tcyA9IGtNYXhFbGFwc2VkVGltZU1zOwogICB9CisgIHJldHVy
biBlbGFwc2VkX3RpbWVfbXM7Cit9CisKK2Jvb2wgUGFjZWRTZW5kZXI6OlNob3VsZFNlbmRLZWVw
YWxpdmUoaW50NjRfdCBub3dfdXMpIGNvbnN0IHsKICAgaWYgKHNlbmRfcGFkZGluZ19pZl9zaWxl
bnRfIHx8IHBhdXNlZF8gfHwgQ29uZ2VzdGVkKCkpIHsKICAgICAvLyBXZSBzZW5kIGEgcGFkZGlu
ZyBwYWNrZXQgZXZlcnkgNTAwIG1zIHRvIGVuc3VyZSB3ZSB3b24ndCBnZXQgc3R1Y2sgaW4KICAg
ICAvLyBjb25nZXN0ZWQgc3RhdGUgZHVlIHRvIG5vIGZlZWRiYWNrIGJlaW5nIHJlY2VpdmVkLgpA
QCAtMjgxLDEyICsyNzksMjUgQEAgdm9pZCBQYWNlZFNlbmRlcjo6UHJvY2VzcygpIHsKICAgICAg
IC8vIFdlIGNhbiBub3Qgc2VuZCBwYWRkaW5nIHVubGVzcyBhIG5vcm1hbCBwYWNrZXQgaGFzIGZp
cnN0IGJlZW4gc2VudC4gSWYKICAgICAgIC8vIHdlIGRvLCB0aW1lc3RhbXBzIGdldCBtZXNzZWQg
dXAuCiAgICAgICBpZiAocGFja2V0X2NvdW50ZXJfID4gMCkgewotICAgICAgICBQYWNlZFBhY2tl
dEluZm8gcGFjaW5nX2luZm87Ci0gICAgICAgIHNpemVfdCBieXRlc19zZW50ID0gU2VuZFBhZGRp
bmcoMSwgcGFjaW5nX2luZm8pOwotICAgICAgICBhbHJfZGV0ZWN0b3JfLT5PbkJ5dGVzU2VudChi
eXRlc19zZW50LCBub3dfdXMgLyAxMDAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICB9
CiAgICAgfQogICB9CisgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBQYWNlZFNlbmRlcjo6UHJv
Y2VzcygpIHsKKyAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRzZWN0Xyk7CisgIGludDY0X3Qgbm93
X3VzID0gY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsKKyAgaW50NjRfdCBlbGFwc2VkX3Rp
bWVfbXMgPSBVcGRhdGVUaW1lQW5kR2V0RWxhcHNlZE1zKG5vd191cyk7CisgIGlmIChTaG91bGRT
ZW5kS2VlcGFsaXZlKG5vd191cykpIHsKKyAgICBjcml0c2VjdF8uTGVhdmUoKTsKKyAgICBzaXpl
X3QgYnl0ZXNfc2VudCA9IHBhY2tldF9zZW5kZXJfLT5UaW1lVG9TZW5kUGFkZGluZygxLCBQYWNl
ZFBhY2tldEluZm8oKSk7CisgICAgY3JpdHNlY3RfLkVudGVyKCk7CisgICAgT25QYWRkaW5nU2Vu
dChieXRlc19zZW50KTsKKyAgICBhbHJfZGV0ZWN0b3JfLT5PbkJ5dGVzU2VudChieXRlc19zZW50
LCBub3dfdXMgLyAxMDAwKTsKKyAgfQorCiAgIGlmIChwYXVzZWRfKQogICAgIHJldHVybjsKIApA
QCAtMzA4LDM1ICszMTksMzkgQEAgdm9pZCBQYWNlZFNlbmRlcjo6UHJvY2VzcygpIHsKICAgICAg
IH0KICAgICB9CiAKLSAgICBtZWRpYV9idWRnZXRfLT5zZXRfdGFyZ2V0X3JhdGVfa2Jwcyh0YXJn
ZXRfYml0cmF0ZV9rYnBzKTsKKyAgICBtZWRpYV9idWRnZXRfLnNldF90YXJnZXRfcmF0ZV9rYnBz
KHRhcmdldF9iaXRyYXRlX2ticHMpOwogICAgIFVwZGF0ZUJ1ZGdldFdpdGhFbGFwc2VkVGltZShl
bGFwc2VkX3RpbWVfbXMpOwogICB9CiAKLSAgYm9vbCBpc19wcm9iaW5nID0gcHJvYmVyXy0+SXNQ
cm9iaW5nKCk7CisgIGJvb2wgaXNfcHJvYmluZyA9IHByb2Jlcl8uSXNQcm9iaW5nKCk7CiAgIFBh
Y2VkUGFja2V0SW5mbyBwYWNpbmdfaW5mbzsKICAgc2l6ZV90IGJ5dGVzX3NlbnQgPSAwOwogICBz
aXplX3QgcmVjb21tZW5kZWRfcHJvYmVfc2l6ZSA9IDA7CiAgIGlmIChpc19wcm9iaW5nKSB7Ci0g
ICAgcGFjaW5nX2luZm8gPSBwcm9iZXJfLT5DdXJyZW50Q2x1c3RlcigpOwotICAgIHJlY29tbWVu
ZGVkX3Byb2JlX3NpemUgPSBwcm9iZXJfLT5SZWNvbW1lbmRlZE1pblByb2JlU2l6ZSgpOworICAg
IHBhY2luZ19pbmZvID0gcHJvYmVyXy5DdXJyZW50Q2x1c3RlcigpOworICAgIHJlY29tbWVuZGVk
X3Byb2JlX3NpemUgPSBwcm9iZXJfLlJlY29tbWVuZGVkTWluUHJvYmVTaXplKCk7CiAgIH0KLSAg
Ly8gVGhlIHBhdXNlZCBzdGF0ZSBpcyBjaGVja2VkIGluIHRoZSBsb29wIHNpbmNlIFNlbmRQYWNr
ZXQgbGVhdmVzIHRoZQotICAvLyBjcml0aWNhbCBzZWN0aW9uIGFsbG93aW5nIHRoZSBwYXVzZWQg
c3RhdGUgdG8gYmUgY2hhbmdlZCBmcm9tIG90aGVyIGNvZGUuCisgIC8vIFRoZSBwYXVzZWQgc3Rh
dGUgaXMgY2hlY2tlZCBpbiB0aGUgbG9vcCBzaW5jZSBpdCBsZWF2ZXMgdGhlIGNyaXRpY2FsCisg
IC8vIHNlY3Rpb24gYWxsb3dpbmcgdGhlIHBhdXNlZCBzdGF0ZSB0byBiZSBjaGFuZ2VkIGZyb20g
b3RoZXIgY29kZS4KICAgd2hpbGUgKCFwYWNrZXRzXy5FbXB0eSgpICYmICFwYXVzZWRfKSB7Ci0g
ICAgLy8gU2luY2Ugd2UgbmVlZCB0byByZWxlYXNlIHRoZSBsb2NrIGluIG9yZGVyIHRvIHNlbmQs
IHdlIGZpcnN0IHBvcCB0aGUKLSAgICAvLyBlbGVtZW50IGZyb20gdGhlIHByaW9yaXR5IHF1ZXVl
IGJ1dCBrZWVwIGl0IGluIHN0b3JhZ2UsIHNvIHRoYXQgd2UgY2FuCi0gICAgLy8gcmVpbnNlcnQg
aXQgaWYgc2VuZCBmYWlscy4KLSAgICBjb25zdCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlBhY2tl
dCYgcGFja2V0ID0gcGFja2V0c18uQmVnaW5Qb3AoKTsKKyAgICBjb25zdCBhdXRvKiBwYWNrZXQg
PSBHZXRQZW5kaW5nUGFja2V0KHBhY2luZ19pbmZvKTsKKyAgICBpZiAocGFja2V0ID09IG51bGxw
dHIpCisgICAgICBicmVhazsKIAotICAgIGlmIChTZW5kUGFja2V0KHBhY2tldCwgcGFjaW5nX2lu
Zm8pKSB7Ci0gICAgICBieXRlc19zZW50ICs9IHBhY2tldC5ieXRlczsKKyAgICBjcml0c2VjdF8u
TGVhdmUoKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBwYWNrZXRfc2VuZGVyXy0+VGltZVRvU2VuZFBh
Y2tldCgKKyAgICAgICAgcGFja2V0LT5zc3JjLCBwYWNrZXQtPnNlcXVlbmNlX251bWJlciwgcGFj
a2V0LT5jYXB0dXJlX3RpbWVfbXMsCisgICAgICAgIHBhY2tldC0+cmV0cmFuc21pc3Npb24sIHBh
Y2luZ19pbmZvKTsKKyAgICBjcml0c2VjdF8uRW50ZXIoKTsKKyAgICBpZiAoc3VjY2Vzcykgewor
ICAgICAgYnl0ZXNfc2VudCArPSBwYWNrZXQtPmJ5dGVzOwogICAgICAgLy8gU2VuZCBzdWNjZWVk
ZWQsIHJlbW92ZSBpdCBmcm9tIHRoZSBxdWV1ZS4KLSAgICAgIHBhY2tldHNfLkZpbmFsaXplUG9w
KHBhY2tldCk7CisgICAgICBPblBhY2tldFNlbnQoc3RkOjptb3ZlKHBhY2tldCkpOwogICAgICAg
aWYgKGlzX3Byb2JpbmcgJiYgYnl0ZXNfc2VudCA+IHJlY29tbWVuZGVkX3Byb2JlX3NpemUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0gZWxzZSB7CiAgICAgICAvLyBTZW5kIGZhaWxlZCwgcHV0IGl0
IGJhY2sgaW50byB0aGUgcXVldWUuCi0gICAgICBwYWNrZXRzXy5DYW5jZWxQb3AocGFja2V0KTsK
KyAgICAgIHBhY2tldHNfLkNhbmNlbFBvcCgqcGFja2V0KTsKICAgICAgIGJyZWFrOwogICAgIH0K
ICAgfQpAQCAtMzQ3LDE2ICszNjIsMjEgQEAgdm9pZCBQYWNlZFNlbmRlcjo6UHJvY2VzcygpIHsK
ICAgICBpZiAocGFja2V0X2NvdW50ZXJfID4gMCkgewogICAgICAgaW50IHBhZGRpbmdfbmVlZGVk
ID0KICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGlzX3Byb2JpbmcgPyAocmVjb21tZW5kZWRf
cHJvYmVfc2l6ZSAtIGJ5dGVzX3NlbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogcGFkZGluZ19idWRnZXRfLT5ieXRlc19yZW1haW5pbmcoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcGFkZGluZ19idWRnZXRfLmJ5dGVzX3JlbWFp
bmluZygpKTsKICAgICAgIGlmIChwYWRkaW5nX25lZWRlZCA+IDApIHsKLSAgICAgICAgYnl0ZXNf
c2VudCArPSBTZW5kUGFkZGluZyhwYWRkaW5nX25lZWRlZCwgcGFjaW5nX2luZm8pOworICAgICAg
ICBjcml0c2VjdF8uTGVhdmUoKTsKKyAgICAgICAgc2l6ZV90IHBhZGRpbmdfc2VudCA9CisgICAg
ICAgICAgICBwYWNrZXRfc2VuZGVyXy0+VGltZVRvU2VuZFBhZGRpbmcocGFkZGluZ19uZWVkZWQs
IHBhY2luZ19pbmZvKTsKKyAgICAgICAgY3JpdHNlY3RfLkVudGVyKCk7CisgICAgICAgIGJ5dGVz
X3NlbnQgKz0gcGFkZGluZ19zZW50OworICAgICAgICBPblBhZGRpbmdTZW50KHBhZGRpbmdfc2Vu
dCk7CiAgICAgICB9CiAgICAgfQogICB9CiAgIGlmIChpc19wcm9iaW5nKSB7CiAgICAgcHJvYmlu
Z19zZW5kX2ZhaWx1cmVfID0gYnl0ZXNfc2VudCA9PSAwOwogICAgIGlmICghcHJvYmluZ19zZW5k
X2ZhaWx1cmVfKQotICAgICAgcHJvYmVyXy0+UHJvYmVTZW50KFRpbWVNaWxsaXNlY29uZHMoKSwg
Ynl0ZXNfc2VudCk7CisgICAgICBwcm9iZXJfLlByb2JlU2VudChUaW1lTWlsbGlzZWNvbmRzKCks
IGJ5dGVzX3NlbnQpOwogICB9CiAgIGFscl9kZXRlY3Rvcl8tPk9uQnl0ZXNTZW50KGJ5dGVzX3Nl
bnQsIG5vd191cyAvIDEwMDApOwogfQpAQCAtMzY3LDY2ICszODcsNTggQEAgdm9pZCBQYWNlZFNl
bmRlcjo6UHJvY2Vzc1RocmVhZEF0dGFjaGVkKFByb2Nlc3NUaHJlYWQqIHByb2Nlc3NfdGhyZWFk
KSB7CiAgIHByb2Nlc3NfdGhyZWFkXyA9IHByb2Nlc3NfdGhyZWFkOwogfQogCi1ib29sIFBhY2Vk
U2VuZGVyOjpTZW5kUGFja2V0KGNvbnN0IFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6UGFja2V0JiBw
YWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5m
byYgcGFjaW5nX2luZm8pIHsKLSAgUlRDX0RDSEVDSyghcGF1c2VkXyk7Ci0gIGJvb2wgYXVkaW9f
cGFja2V0ID0gcGFja2V0LnByaW9yaXR5ID09IGtIaWdoUHJpb3JpdHk7Citjb25zdCBSb3VuZFJv
YmluUGFja2V0UXVldWU6OlBhY2tldCogUGFjZWRTZW5kZXI6OkdldFBlbmRpbmdQYWNrZXQoCisg
ICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbykgeworICAvLyBTaW5jZSB3ZSBu
ZWVkIHRvIHJlbGVhc2UgdGhlIGxvY2sgaW4gb3JkZXIgdG8gc2VuZCwgd2UgZmlyc3QgcG9wIHRo
ZQorICAvLyBlbGVtZW50IGZyb20gdGhlIHByaW9yaXR5IHF1ZXVlIGJ1dCBrZWVwIGl0IGluIHN0
b3JhZ2UsIHNvIHRoYXQgd2UgY2FuCisgIC8vIHJlaW5zZXJ0IGl0IGlmIHNlbmQgZmFpbHMuCisg
IGNvbnN0IFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6UGFja2V0KiBwYWNrZXQgPSAmcGFja2V0c18u
QmVnaW5Qb3AoKTsKKyAgYm9vbCBhdWRpb19wYWNrZXQgPSBwYWNrZXQtPnByaW9yaXR5ID09IGtI
aWdoUHJpb3JpdHk7CiAgIGJvb2wgYXBwbHlfcGFjaW5nID0KICAgICAgICFhdWRpb19wYWNrZXQg
fHwgYWNjb3VudF9mb3JfYXVkaW9fIHx8IHZpZGVvX2Jsb2Nrc19hdWRpb187Ci0gIGlmIChhcHBs
eV9wYWNpbmcgJiYgKENvbmdlc3RlZCgpIHx8IChtZWRpYV9idWRnZXRfLT5ieXRlc19yZW1haW5p
bmcoKSA9PSAwICYmCisgIGlmIChhcHBseV9wYWNpbmcgJiYgKENvbmdlc3RlZCgpIHx8IChtZWRp
YV9idWRnZXRfLmJ5dGVzX3JlbWFpbmluZygpID09IDAgJiYKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhY2luZ19pbmZvLnByb2JlX2NsdXN0ZXJfaWQgPT0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNlZFBhY2tldEluZm86OmtO
b3RBUHJvYmUpKSkgewotICAgIHJldHVybiBmYWxzZTsKKyAgICBwYWNrZXRzXy5DYW5jZWxQb3Ao
KnBhY2tldCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KKyAgcmV0dXJuIHBhY2tldDsKK30K
IAotICBjcml0c2VjdF8uTGVhdmUoKTsKLSAgY29uc3QgYm9vbCBzdWNjZXNzID0gcGFja2V0X3Nl
bmRlcl8tPlRpbWVUb1NlbmRQYWNrZXQoCi0gICAgICBwYWNrZXQuc3NyYywgcGFja2V0LnNlcXVl
bmNlX251bWJlciwgcGFja2V0LmNhcHR1cmVfdGltZV9tcywKLSAgICAgIHBhY2tldC5yZXRyYW5z
bWlzc2lvbiwgcGFjaW5nX2luZm8pOwotICBjcml0c2VjdF8uRW50ZXIoKTsKLQotICBpZiAoc3Vj
Y2VzcykgewotICAgIGlmIChmaXJzdF9zZW50X3BhY2tldF9tc18gPT0gLTEpCi0gICAgICBmaXJz
dF9zZW50X3BhY2tldF9tc18gPSBUaW1lTWlsbGlzZWNvbmRzKCk7Ci0gICAgaWYgKCFhdWRpb19w
YWNrZXQgfHwgYWNjb3VudF9mb3JfYXVkaW9fKSB7Ci0gICAgICAvLyBVcGRhdGUgbWVkaWEgYnl0
ZXMgc2VudC4KLSAgICAgIC8vIFRPRE8oZWxhZGFsb24pOiBUaW1lVG9TZW5kUGFja2V0KCkgY2Fu
IGFsc28gcmV0dXJuIHx0cnVlfCBpbiBzb21lCi0gICAgICAvLyBzaXR1YXRpb25zIHdoZXJlIG5v
dGhpbmcgYWN0dWFsbHkgZW5kZWQgdXAgYmVpbmcgc2VudCB0byB0aGUgbmV0d29yaywKLSAgICAg
IC8vIGFuZCB3ZSBwcm9iYWJseSBkb24ndCB3YW50IHRvIHVwZGF0ZSB0aGUgYnVkZ2V0IGluIHN1
Y2ggY2FzZXMuCi0gICAgICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Avd2VicnRjL2lz
c3Vlcy9kZXRhaWw/aWQ9ODA1MgotICAgICAgVXBkYXRlQnVkZ2V0V2l0aEJ5dGVzU2VudChwYWNr
ZXQuYnl0ZXMpOwotICAgICAgbGFzdF9zZW5kX3RpbWVfdXNfID0gY2xvY2tfLT5UaW1lSW5NaWNy
b3NlY29uZHMoKTsKLSAgICB9Cit2b2lkIFBhY2VkU2VuZGVyOjpPblBhY2tldFNlbnQoY29uc3Qg
Um91bmRSb2JpblBhY2tldFF1ZXVlOjpQYWNrZXQqIHBhY2tldCkgeworICBpZiAoZmlyc3Rfc2Vu
dF9wYWNrZXRfbXNfID09IC0xKQorICAgIGZpcnN0X3NlbnRfcGFja2V0X21zXyA9IFRpbWVNaWxs
aXNlY29uZHMoKTsKKyAgYm9vbCBhdWRpb19wYWNrZXQgPSBwYWNrZXQtPnByaW9yaXR5ID09IGtI
aWdoUHJpb3JpdHk7CisgIGlmICghYXVkaW9fcGFja2V0IHx8IGFjY291bnRfZm9yX2F1ZGlvXykg
eworICAgIC8vIFVwZGF0ZSBtZWRpYSBieXRlcyBzZW50LgorICAgIC8vIFRPRE8oZWxhZGFsb24p
OiBUaW1lVG9TZW5kUGFja2V0KCkgY2FuIGFsc28gcmV0dXJuIHx0cnVlfCBpbiBzb21lCisgICAg
Ly8gc2l0dWF0aW9ucyB3aGVyZSBub3RoaW5nIGFjdHVhbGx5IGVuZGVkIHVwIGJlaW5nIHNlbnQg
dG8gdGhlIG5ldHdvcmssCisgICAgLy8gYW5kIHdlIHByb2JhYmx5IGRvbid0IHdhbnQgdG8gdXBk
YXRlIHRoZSBidWRnZXQgaW4gc3VjaCBjYXNlcy4KKyAgICAvLyBodHRwczovL2J1Z3MuY2hyb21p
dW0ub3JnL3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9ODA1MgorICAgIFVwZGF0ZUJ1ZGdldFdp
dGhCeXRlc1NlbnQocGFja2V0LT5ieXRlcyk7CisgICAgbGFzdF9zZW5kX3RpbWVfdXNfID0gY2xv
Y2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsKICAgfQotCi0gIHJldHVybiBzdWNjZXNzOworICAv
LyBTZW5kIHN1Y2NlZWRlZCwgcmVtb3ZlIGl0IGZyb20gdGhlIHF1ZXVlLgorICBwYWNrZXRzXy5G
aW5hbGl6ZVBvcCgqcGFja2V0KTsKIH0KIAotc2l6ZV90IFBhY2VkU2VuZGVyOjpTZW5kUGFkZGlu
ZyhzaXplX3QgcGFkZGluZ19uZWVkZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2luZm8pIHsKLSAgUlRDX0RDSEVDS19HVChw
YWNrZXRfY291bnRlcl8sIDApOwotICBjcml0c2VjdF8uTGVhdmUoKTsKLSAgc2l6ZV90IGJ5dGVz
X3NlbnQgPQotICAgICAgcGFja2V0X3NlbmRlcl8tPlRpbWVUb1NlbmRQYWRkaW5nKHBhZGRpbmdf
bmVlZGVkLCBwYWNpbmdfaW5mbyk7Ci0gIGNyaXRzZWN0Xy5FbnRlcigpOwotCit2b2lkIFBhY2Vk
U2VuZGVyOjpPblBhZGRpbmdTZW50KHNpemVfdCBieXRlc19zZW50KSB7CiAgIGlmIChieXRlc19z
ZW50ID4gMCkgewogICAgIFVwZGF0ZUJ1ZGdldFdpdGhCeXRlc1NlbnQoYnl0ZXNfc2VudCk7CiAg
IH0KICAgbGFzdF9zZW5kX3RpbWVfdXNfID0gY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMoKTsK
LSAgcmV0dXJuIGJ5dGVzX3NlbnQ7CiB9CiAKIHZvaWQgUGFjZWRTZW5kZXI6OlVwZGF0ZUJ1ZGdl
dFdpdGhFbGFwc2VkVGltZShpbnQ2NF90IGRlbHRhX3RpbWVfbXMpIHsKICAgZGVsdGFfdGltZV9t
cyA9IHN0ZDo6bWluKGtNYXhJbnRlcnZhbFRpbWVNcywgZGVsdGFfdGltZV9tcyk7Ci0gIG1lZGlh
X2J1ZGdldF8tPkluY3JlYXNlQnVkZ2V0KGRlbHRhX3RpbWVfbXMpOwotICBwYWRkaW5nX2J1ZGdl
dF8tPkluY3JlYXNlQnVkZ2V0KGRlbHRhX3RpbWVfbXMpOworICBtZWRpYV9idWRnZXRfLkluY3Jl
YXNlQnVkZ2V0KGRlbHRhX3RpbWVfbXMpOworICBwYWRkaW5nX2J1ZGdldF8uSW5jcmVhc2VCdWRn
ZXQoZGVsdGFfdGltZV9tcyk7CiB9CiAKIHZvaWQgUGFjZWRTZW5kZXI6OlVwZGF0ZUJ1ZGdldFdp
dGhCeXRlc1NlbnQoc2l6ZV90IGJ5dGVzX3NlbnQpIHsKICAgb3V0c3RhbmRpbmdfYnl0ZXNfICs9
IGJ5dGVzX3NlbnQ7Ci0gIG1lZGlhX2J1ZGdldF8tPlVzZUJ1ZGdldChieXRlc19zZW50KTsKLSAg
cGFkZGluZ19idWRnZXRfLT5Vc2VCdWRnZXQoYnl0ZXNfc2VudCk7CisgIG1lZGlhX2J1ZGdldF8u
VXNlQnVkZ2V0KGJ5dGVzX3NlbnQpOworICBwYWRkaW5nX2J1ZGdldF8uVXNlQnVkZ2V0KGJ5dGVz
X3NlbnQpOwogfQogCiB2b2lkIFBhY2VkU2VuZGVyOjpTZXRQYWNpbmdGYWN0b3IoZmxvYXQgcGFj
aW5nX2ZhY3RvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcGFjZWRfc2VuZGVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIu
aAppbmRleCBmMTI5MTc0MDhhNmI0MTY4NDIyOGZiMDQwOTgzZDI5YjNmODM4MTIwLi40NTg2ZDI5
Y2NhOTdlNzZlMDViNzYxNWVkZjA3ZjJiMmRhNzYzNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNlZF9zZW5k
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3BhY2luZy9wYWNlZF9zZW5kZXIuaApAQCAtMTEsMjAgKzExLDI1IEBACiAjaWZuZGVmIE1P
RFVMRVNfUEFDSU5HX1BBQ0VEX1NFTkRFUl9IXwogI2RlZmluZSBNT0RVTEVTX1BBQ0lOR19QQUNF
RF9TRU5ERVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNp
bmNsdWRlICJhcGkvdHJhbnNwb3J0L25ldHdvcmtfdHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVz
L3BhY2luZy9iaXRyYXRlX3Byb2Jlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL2ludGVy
dmFsX2J1ZGdldC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2VyLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmgiCisjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKKyNpbmNsdWRlICJt
b2R1bGVzL3V0aWxpdHkvaW5jbHVkZS9wcm9jZXNzX3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0
aW9ucy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEFsckRldGVjdG9yOwotY2xhc3Mg
Qml0cmF0ZVByb2JlcjsKIGNsYXNzIENsb2NrOwogY2xhc3MgUnRjRXZlbnRMb2c7Ci1jbGFzcyBJ
bnRlcnZhbEJ1ZGdldDsKIAogY2xhc3MgUGFjZWRTZW5kZXIgOiBwdWJsaWMgUGFjZXIgewogIHB1
YmxpYzoKQEAgLTEzOCwxOSArMTQzLDI1IEBAIGNsYXNzIFBhY2VkU2VuZGVyIDogcHVibGljIFBh
Y2VyIHsKICAgdm9pZCBTZXRRdWV1ZVRpbWVMaW1pdChpbnQgbGltaXRfbXMpOwogCiAgcHJpdmF0
ZToKKyAgaW50NjRfdCBVcGRhdGVUaW1lQW5kR2V0RWxhcHNlZE1zKGludDY0X3Qgbm93X3VzKQor
ICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChjcml0c2VjdF8pOworICBib29sIFNo
b3VsZFNlbmRLZWVwYWxpdmUoaW50NjRfdCBhdF90aW1lX3VzKSBjb25zdAorICAgICAgUlRDX0VY
Q0xVU0lWRV9MT0NLU19SRVFVSVJFRChjcml0c2VjdF8pOworCiAgIC8vIFVwZGF0ZXMgdGhlIG51
bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSBzZW50IGZvciB0aGUgbmV4dCB0aW1lIGludGVydmFs
LgogICB2b2lkIFVwZGF0ZUJ1ZGdldFdpdGhFbGFwc2VkVGltZShpbnQ2NF90IGRlbHRhX3RpbWVf
aW5fbXMpCiAgICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7CiAg
IHZvaWQgVXBkYXRlQnVkZ2V0V2l0aEJ5dGVzU2VudChzaXplX3QgYnl0ZXMpCiAgICAgICBSVENf
RVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7CiAKLSAgYm9vbCBTZW5kUGFja2V0
KGNvbnN0IFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6UGFja2V0JiBwYWNrZXQsCi0gICAgICAgICAg
ICAgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIGNsdXN0ZXJfaW5mbykKKyAgY29uc3QgUm91
bmRSb2JpblBhY2tldFF1ZXVlOjpQYWNrZXQqIEdldFBlbmRpbmdQYWNrZXQoCisgICAgICBjb25z
dCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKQorICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NL
U19SRVFVSVJFRChjcml0c2VjdF8pOworICB2b2lkIE9uUGFja2V0U2VudChjb25zdCBSb3VuZFJv
YmluUGFja2V0UXVldWU6OlBhY2tldCogcGFja2V0KQogICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NL
U19SRVFVSVJFRChjcml0c2VjdF8pOwotICBzaXplX3QgU2VuZFBhZGRpbmcoc2l6ZV90IHBhZGRp
bmdfbmVlZGVkLCBjb25zdCBQYWNlZFBhY2tldEluZm8mIGNsdXN0ZXJfaW5mbykKKyAgdm9pZCBP
blBhZGRpbmdTZW50KHNpemVfdCBwYWRkaW5nX3NlbnQpCiAgICAgICBSVENfRVhDTFVTSVZFX0xP
Q0tTX1JFUVVJUkVEKGNyaXRzZWN0Xyk7CiAKLSAgdm9pZCBPbkJ5dGVzU2VudChzaXplX3QgYnl0
ZXNfc2VudCkgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChjcml0c2VjdF8pOwogICBib29s
IENvbmdlc3RlZCgpIGNvbnN0IFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoY3JpdHNlY3Rf
KTsKICAgaW50NjRfdCBUaW1lTWlsbGlzZWNvbmRzKCkgY29uc3QgUlRDX0VYQ0xVU0lWRV9MT0NL
U19SRVFVSVJFRChjcml0c2VjdF8pOwogCkBAIC0xNjksMTUgKzE4MCwxMyBAQCBjbGFzcyBQYWNl
ZFNlbmRlciA6IHB1YmxpYyBQYWNlciB7CiAgIGJvb2wgcGF1c2VkXyBSVENfR1VBUkRFRF9CWShj
cml0c2VjdF8pOwogICAvLyBUaGlzIGlzIHRoZSBtZWRpYSBidWRnZXQsIGtlZXBpbmcgdHJhY2sg
b2YgaG93IG1hbnkgYml0cyBvZiBtZWRpYQogICAvLyB3ZSBjYW4gcGFjZSBvdXQgZHVyaW5nIHRo
ZSBjdXJyZW50IGludGVydmFsLgotICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJ2YWxCdWRn
ZXQ+IG1lZGlhX2J1ZGdldF8KLSAgICAgIFJUQ19QVF9HVUFSREVEX0JZKGNyaXRzZWN0Xyk7Cisg
IEludGVydmFsQnVkZ2V0IG1lZGlhX2J1ZGdldF8gUlRDX0dVQVJERURfQlkoY3JpdHNlY3RfKTsK
ICAgLy8gVGhpcyBpcyB0aGUgcGFkZGluZyBidWRnZXQsIGtlZXBpbmcgdHJhY2sgb2YgaG93IG1h
bnkgYml0cyBvZiBwYWRkaW5nIHdlJ3JlCiAgIC8vIGFsbG93ZWQgdG8gc2VuZCBvdXQgZHVyaW5n
IHRoZSBjdXJyZW50IGludGVydmFsLiBUaGlzIGJ1ZGdldCB3aWxsIGJlCiAgIC8vIHV0aWxpemVk
IHdoZW4gdGhlcmUncyBubyBtZWRpYSB0byBzZW5kLgotICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
SW50ZXJ2YWxCdWRnZXQ+IHBhZGRpbmdfYnVkZ2V0XwotICAgICAgUlRDX1BUX0dVQVJERURfQlko
Y3JpdHNlY3RfKTsKKyAgSW50ZXJ2YWxCdWRnZXQgcGFkZGluZ19idWRnZXRfIFJUQ19HVUFSREVE
X0JZKGNyaXRzZWN0Xyk7CiAKLSAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEJpdHJhdGVQcm9iZXI+
IHByb2Jlcl8gUlRDX1BUX0dVQVJERURfQlkoY3JpdHNlY3RfKTsKKyAgQml0cmF0ZVByb2JlciBw
cm9iZXJfIFJUQ19HVUFSREVEX0JZKGNyaXRzZWN0Xyk7CiAgIGJvb2wgcHJvYmluZ19zZW5kX2Zh
aWx1cmVfIFJUQ19HVUFSREVEX0JZKGNyaXRzZWN0Xyk7CiAgIC8vIEFjdHVhbCBjb25maWd1cmVk
IGJpdHJhdGVzIChtZWRpYV9idWRnZXRfIG1heSB0ZW1wb3JhcmlseSBiZSBoaWdoZXIgaW4KICAg
Ly8gb3JkZXIgdG8gbWVldCBwYWNlIHRpbWUgY29uc3RyYWludCkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNr
ZXRfcm91dGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9wYWNpbmcvcGFja2V0X3JvdXRlci5jYwppbmRleCBiMjdjNzNjMmYwYzdlN2U3NmJh
ODZmYmViODAzZDM2NTk2YzhjN2E4Li4yNGJlN2VlYmYyYTllMzJkYjc3Mjg2YzY4N2FmNDFhZGY5
ZjRhNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2tldF9yb3V0ZXIu
Y2MKQEAgLTExLDggKzExLDEwIEBACiAjaW5jbHVkZSAibW9kdWxlcy9wYWNpbmcvcGFja2V0X3Jv
dXRlci5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5j
bHVkZSA8bGltaXRzPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdHJhbnNwb3J0X2ZlZWRiYWNrLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3BhY2luZy9wYWNrZXRfcm91dGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmgKaW5kZXggZjAxZTllZjQ5
MzM5NjU0MWE2Zjg4M2YyZDg0YzhlNjhhZTM3YjlhNy4uYjdjYzVmZjE5NjY4N2RhMmJjOGE0OTBi
ZjhmMjgzNmIxMzIzZDE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcGFja2V0X3JvdXRlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3BhY2tl
dF9yb3V0ZXIuaApAQCAtMTEsMTYgKzExLDE3IEBACiAjaWZuZGVmIE1PRFVMRVNfUEFDSU5HX1BB
Q0tFVF9ST1VURVJfSF8KICNkZWZpbmUgTU9EVUxFU19QQUNJTkdfUEFDS0VUX1JPVVRFUl9IXwog
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bGlz
dD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5P
TElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgImFwaS90cmFuc3BvcnQvbmV0d29ya190eXBl
cy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcGFjaW5nL3BhY2VkX3NlbmRlci5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNw
X2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcmFj
ZV9jaGVja2VyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVl
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9w
YWNpbmcvcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmNjCmluZGV4IGU4OTJkZGI0ZWEyYjUwODY0
ODFiZDkwMjEzZTU2MGJkYmFhYjVkZDEuLmU2MWQ2ODIxNWFjYThhNzQ3NmJhYmUzNDg3OGI2ZGU2
MDQ2YWIzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcGFjaW5nL3JvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9y
b3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuY2MKQEAgLTExLDkgKzExLDEwIEBACiAjaW5jbHVkZSAi
bW9kdWxlcy9wYWNpbmcvcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmgiCiAKICNpbmNsdWRlIDxh
bGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1
ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTUzLDggKzU0LDggQEAgUm91
bmRSb2JpblBhY2tldFF1ZXVlOjpTdHJlYW06OlN0cmVhbSgpIDogYnl0ZXMoMCksIHNzcmMoMCkg
e30KIFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6U3RyZWFtOjpTdHJlYW0oY29uc3QgU3RyZWFtJiBz
dHJlYW0pID0gZGVmYXVsdDsKIFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6U3RyZWFtOjp+U3RyZWFt
KCkge30KIAotUm91bmRSb2JpblBhY2tldFF1ZXVlOjpSb3VuZFJvYmluUGFja2V0UXVldWUoY29u
c3QgQ2xvY2sqIGNsb2NrKQotICAgIDogdGltZV9sYXN0X3VwZGF0ZWRfKGNsb2NrLT5UaW1lSW5N
aWxsaXNlY29uZHMoKSkge30KK1JvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6Um91bmRSb2JpblBhY2tl
dFF1ZXVlKGludDY0X3Qgc3RhcnRfdGltZV91cykKKyAgICA6IHRpbWVfbGFzdF91cGRhdGVkX21z
XyhzdGFydF90aW1lX3VzIC8gMTAwMCkge30KIAogUm91bmRSb2JpblBhY2tldFF1ZXVlOjp+Um91
bmRSb2JpblBhY2tldFF1ZXVlKCkge30KIApAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgUm91bmRS
b2JpblBhY2tldFF1ZXVlOjpGaW5hbGl6ZVBvcChjb25zdCBQYWNrZXQmIHBhY2tldCkgewogICAg
IC8vIGJ5IHN1YnRyYWN0aW5nIGl0IG5vdyB3ZSBlZmZlY3RpdmVseSByZW1vdmUgdGhlIHRpbWUg
c3BlbnQgaW4gaW4gdGhlCiAgICAgLy8gcXVldWUgd2hpbGUgaW4gYSBwYXVzZWQgc3RhdGUuCiAg
ICAgaW50NjRfdCB0aW1lX2luX25vbl9wYXVzZWRfc3RhdGVfbXMgPQotICAgICAgICB0aW1lX2xh
c3RfdXBkYXRlZF8gLSBwYWNrZXQuZW5xdWV1ZV90aW1lX21zIC0gcGF1c2VfdGltZV9zdW1fbXNf
OworICAgICAgICB0aW1lX2xhc3RfdXBkYXRlZF9tc18gLSBwYWNrZXQuZW5xdWV1ZV90aW1lX21z
IC0gcGF1c2VfdGltZV9zdW1fbXNfOwogICAgIHF1ZXVlX3RpbWVfc3VtX21zXyAtPSB0aW1lX2lu
X25vbl9wYXVzZWRfc3RhdGVfbXM7CiAKICAgICBSVENfQ0hFQ0socGFja2V0LmVucXVldWVfdGlt
ZV9pdCAhPSBlbnF1ZXVlX3RpbWVzXy5lbmQoKSk7CkBAIC0xODksMTEgKzE5MCwxMSBAQCBpbnQ2
NF90IFJvdW5kUm9iaW5QYWNrZXRRdWV1ZTo6T2xkZXN0RW5xdWV1ZVRpbWVNcygpIGNvbnN0IHsK
IH0KIAogdm9pZCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlVwZGF0ZVF1ZXVlVGltZShpbnQ2NF90
IHRpbWVzdGFtcF9tcykgewotICBSVENfQ0hFQ0tfR0UodGltZXN0YW1wX21zLCB0aW1lX2xhc3Rf
dXBkYXRlZF8pOwotICBpZiAodGltZXN0YW1wX21zID09IHRpbWVfbGFzdF91cGRhdGVkXykKKyAg
UlRDX0NIRUNLX0dFKHRpbWVzdGFtcF9tcywgdGltZV9sYXN0X3VwZGF0ZWRfbXNfKTsKKyAgaWYg
KHRpbWVzdGFtcF9tcyA9PSB0aW1lX2xhc3RfdXBkYXRlZF9tc18pCiAgICAgcmV0dXJuOwogCi0g
IGludDY0X3QgZGVsdGFfbXMgPSB0aW1lc3RhbXBfbXMgLSB0aW1lX2xhc3RfdXBkYXRlZF87Cisg
IGludDY0X3QgZGVsdGFfbXMgPSB0aW1lc3RhbXBfbXMgLSB0aW1lX2xhc3RfdXBkYXRlZF9tc187
CiAKICAgaWYgKHBhdXNlZF8pIHsKICAgICBwYXVzZV90aW1lX3N1bV9tc18gKz0gZGVsdGFfbXM7
CkBAIC0yMDEsNyArMjAyLDcgQEAgdm9pZCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlVwZGF0ZVF1
ZXVlVGltZShpbnQ2NF90IHRpbWVzdGFtcF9tcykgewogICAgIHF1ZXVlX3RpbWVfc3VtX21zXyAr
PSBkZWx0YV9tcyAqIHNpemVfcGFja2V0c187CiAgIH0KIAotICB0aW1lX2xhc3RfdXBkYXRlZF8g
PSB0aW1lc3RhbXBfbXM7CisgIHRpbWVfbGFzdF91cGRhdGVkX21zXyA9IHRpbWVzdGFtcF9tczsK
IH0KIAogdm9pZCBSb3VuZFJvYmluUGFja2V0UXVldWU6OlNldFBhdXNlU3RhdGUoYm9vbCBwYXVz
ZWQsIGludDY0X3QgdGltZXN0YW1wX21zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3BhY2luZy9yb3VuZF9yb2Jpbl9wYWNr
ZXRfcXVldWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcGFjaW5nL3JvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5oCmluZGV4IGVlOTFlMmVmYzBj
OTM0NDRmYjY5NTk1NTFmOWZjYjEwZDA3Y2NmMzguLjc0Yjg1NWE0ODNkNTVlMTU3YmEwYTA5ZjY2
MjA0YjJhYzc5OThiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcGFjaW5nL3JvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcGFj
aW5nL3JvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5oCkBAIC0xMSwxOCArMTEsMjIgQEAKICNpZm5k
ZWYgTU9EVUxFU19QQUNJTkdfUk9VTkRfUk9CSU5fUEFDS0VUX1FVRVVFX0hfCiAjZGVmaW5lIE1P
RFVMRVNfUEFDSU5HX1JPVU5EX1JPQklOX1BBQ0tFVF9RVUVVRV9IXwogCisjaW5jbHVkZSA8c3Rk
ZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxt
YXA+CiAjaW5jbHVkZSA8cXVldWU+CiAjaW5jbHVkZSA8c2V0PgogCisjaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBf
cnRjcF9kZWZpbmVzLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2su
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNsYXNzIFJvdW5kUm9iaW5QYWNrZXRRdWV1ZSB7
CiAgcHVibGljOgotICBleHBsaWNpdCBSb3VuZFJvYmluUGFja2V0UXVldWUoY29uc3QgQ2xvY2sq
IGNsb2NrKTsKKyAgZXhwbGljaXQgUm91bmRSb2JpblBhY2tldFF1ZXVlKGludDY0X3Qgc3RhcnRf
dGltZV91cyk7CiAgIH5Sb3VuZFJvYmluUGFja2V0UXVldWUoKTsKIAogICBzdHJ1Y3QgUGFja2V0
IHsKQEAgLTEwNSw3ICsxMDksNyBAQCBjbGFzcyBSb3VuZFJvYmluUGFja2V0UXVldWUgewogICAv
LyBKdXN0IHVzZWQgdG8gdmVyaWZ5IGNvcnJlY3RuZXNzLgogICBib29sIElzU3NyY1NjaGVkdWxl
ZCh1aW50MzJfdCBzc3JjKSBjb25zdDsKIAotICBpbnQ2NF90IHRpbWVfbGFzdF91cGRhdGVkXzsK
KyAgaW50NjRfdCB0aW1lX2xhc3RfdXBkYXRlZF9tc187CiAgIGFic2w6Om9wdGlvbmFsPFBhY2tl
dD4gcG9wX3BhY2tldF87CiAgIGFic2w6Om9wdGlvbmFsPFN0cmVhbSo+IHBvcF9zdHJlYW1fOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yL0JVSUxELmduCmluZGV4IGE4ZDY4NTA3NDljYzkwODFmOTNjY2Q5M2I1ZTkyMzExNmZlNmFk
MTQuLmY2OTkxZWE2OWQ0MDNjZmQ3ZDUwZDFiY2E5ZTYxNjNiODM3YTcwZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3Rl
X2JpdHJhdGVfZXN0aW1hdG9yL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL0JVSUxE
LmduCkBAIC00Miw3ICs0Miw5IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yIikgewogICBkZXBzID0gWwogICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAg
ICAiLi4vLi4vYXBpL3VuaXRzOmRhdGFfcmF0ZSIsCisgICAgIi4uLy4uL2FwaS91bml0czp0aW1l
c3RhbXAiLAogICAgICIuLi8uLi9tb2R1bGVzOm1vZHVsZV9hcGkiLAorICAgICIuLi8uLi9tb2R1
bGVzOm1vZHVsZV9hcGlfcHVibGljIiwKICAgICAiLi4vLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBf
cnRjcF9mb3JtYXQiLAogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi8uLi9y
dGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCkBAIC0yMjcsNiArMjI5LDcgQEAgaWYgKHJ0Y19p
bmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAogICAgICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3Rf
bWFpbiIsCisgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAgICAgIi8vdGVzdGlu
Zy9ndGVzdCIsCiAgICAgXQogICAgIGRhdGEgPSBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci9haW1kX3JhdGVfY29udHJvbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9j
b250cm9sLmNjCmluZGV4IGE2ZTY0MzY4OTc3ZjVhYjA2YjAwNGJhOGE2ZTlkMjE2ZTg4ZjE5OTcu
LmIyY2E4MDEyODg5YzZkOTUzZTM1OTllZmJkMjdjYmViYTVmNzQzYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2Jp
dHJhdGVfZXN0aW1hdG9yL2FpbWRfcmF0ZV9jb250cm9sLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yL2FpbWRfcmF0ZV9jb250cm9sLmNjCkBAIC0xMSw3ICsxMSw2IEBACiAjaW5jbHVkZSAibW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRyb2wuaCIKIAogI2lu
Y2x1ZGUgPGludHR5cGVzLmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y2Fz
c2VydD4KICNpbmNsdWRlIDxjbWF0aD4KQEAgLTE5LDkgKzE4LDcgQEAKICNpbmNsdWRlIDxzdHJp
bmc+CiAKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRl
L2J3ZV9kZWZpbmVzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3IvaW5jbHVkZS9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2RldGVjdG9yLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9id2VfdGVzdF9sb2dnaW5nLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2lu
Zy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCkBAIC0yOSwy
NSArMjYsMjQgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLXN0YXRpYyBjb25zdCBpbnQ2NF90
IGtEZWZhdWx0UnR0TXMgPSAyMDA7Ci1zdGF0aWMgY29uc3QgaW50NjRfdCBrTWF4RmVlZGJhY2tJ
bnRlcnZhbE1zID0gMTAwMDsKLXN0YXRpYyBjb25zdCBmbG9hdCBrRGVmYXVsdEJhY2tvZmZGYWN0
b3IgPSAwLjg1ZjsKLXN0YXRpYyBjb25zdCBpbnQ2NF90IGtEZWZhdWx0SW5pdGlhbEJhY2tPZmZJ
bnRlcnZhbE1zID0gMjAwOworY29uc3RleHByIFRpbWVEZWx0YSBrRGVmYXVsdFJ0dCA9IFRpbWVE
ZWx0YTo6TWlsbGlzPDIwMD4oKTsKK2NvbnN0ZXhwciBkb3VibGUga0RlZmF1bHRCYWNrb2ZmRmFj
dG9yID0gMC44NTsKK2NvbnN0ZXhwciBUaW1lRGVsdGEga0RlZmF1bHRJbml0aWFsQmFja09mZklu
dGVydmFsID0gVGltZURlbHRhOjpNaWxsaXM8MjAwPigpOwogCiBjb25zdCBjaGFyIGtCd2VCYWNr
T2ZmRmFjdG9yRXhwZXJpbWVudFtdID0gIldlYlJUQy1Cd2VCYWNrT2ZmRmFjdG9yIjsKIGNvbnN0
IGNoYXIga0J3ZUluaXRpYWxCYWNrT2ZmSW50ZXJ2YWxFeHBlcmltZW50W10gPQogICAgICJXZWJS
VEMtQndlSW5pdGlhbEJhY2tPZmZJbnRlcnZhbCI7CiAKLWZsb2F0IFJlYWRCYWNrb2ZmRmFjdG9y
KCkgeworZG91YmxlIFJlYWRCYWNrb2ZmRmFjdG9yKCkgewogICBzdGQ6OnN0cmluZyBleHBlcmlt
ZW50X3N0cmluZyA9CiAgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoa0J3
ZUJhY2tPZmZGYWN0b3JFeHBlcmltZW50KTsKLSAgZmxvYXQgYmFja29mZl9mYWN0b3I7CisgIGRv
dWJsZSBiYWNrb2ZmX2ZhY3RvcjsKICAgaW50IHBhcnNlZF92YWx1ZXMgPQotICAgICAgc3NjYW5m
KGV4cGVyaW1lbnRfc3RyaW5nLmNfc3RyKCksICJFbmFibGVkLSVmIiwgJmJhY2tvZmZfZmFjdG9y
KTsKKyAgICAgIHNzY2FuZihleHBlcmltZW50X3N0cmluZy5jX3N0cigpLCAiRW5hYmxlZC0lbGYi
LCAmYmFja29mZl9mYWN0b3IpOwogICBpZiAocGFyc2VkX3ZhbHVlcyA9PSAxKSB7Ci0gICAgaWYg
KGJhY2tvZmZfZmFjdG9yID49IDEuMGYpIHsKKyAgICBpZiAoYmFja29mZl9mYWN0b3IgPj0gMS4w
KSB7CiAgICAgICBSVENfTE9HKFdBUk5JTkcpIDw8ICJCYWNrLW9mZiBmYWN0b3IgbXVzdCBiZSBs
ZXNzIHRoYW4gMS4iOwotICAgIH0gZWxzZSBpZiAoYmFja29mZl9mYWN0b3IgPD0gMC4wZikgewor
ICAgIH0gZWxzZSBpZiAoYmFja29mZl9mYWN0b3IgPD0gMC4wKSB7CiAgICAgICBSVENfTE9HKFdB
Uk5JTkcpIDw8ICJCYWNrLW9mZiBmYWN0b3IgbXVzdCBiZSBncmVhdGVyIHRoYW4gMC4iOwogICAg
IH0gZWxzZSB7CiAgICAgICByZXR1cm4gYmFja29mZl9mYWN0b3I7CkBAIC01OCw3ICs1NCw3IEBA
IGZsb2F0IFJlYWRCYWNrb2ZmRmFjdG9yKCkgewogICByZXR1cm4ga0RlZmF1bHRCYWNrb2ZmRmFj
dG9yOwogfQogCi1pbnQ2NF90IFJlYWRJbml0aWFsQmFja29mZkludGVydmFsTXMoKSB7CitUaW1l
RGVsdGEgUmVhZEluaXRpYWxCYWNrb2ZmSW50ZXJ2YWwoKSB7CiAgIHN0ZDo6c3RyaW5nIGV4cGVy
aW1lbnRfc3RyaW5nID0KICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZShr
QndlSW5pdGlhbEJhY2tPZmZJbnRlcnZhbEV4cGVyaW1lbnQpOwogICBpbnQ2NF90IGJhY2tvZmZf
aW50ZXJ2YWw7CkBAIC02Niw3ICs2Miw3IEBAIGludDY0X3QgUmVhZEluaXRpYWxCYWNrb2ZmSW50
ZXJ2YWxNcygpIHsKICAgICAgIHNzY2FuZihleHBlcmltZW50X3N0cmluZy5jX3N0cigpLCAiRW5h
YmxlZC0lIiBTQ05kNjQsICZiYWNrb2ZmX2ludGVydmFsKTsKICAgaWYgKHBhcnNlZF92YWx1ZXMg
PT0gMSkgewogICAgIGlmICgxMCA8PSBiYWNrb2ZmX2ludGVydmFsICYmIGJhY2tvZmZfaW50ZXJ2
YWwgPD0gMjAwKSB7Ci0gICAgICByZXR1cm4gYmFja29mZl9pbnRlcnZhbDsKKyAgICAgIHJldHVy
biBUaW1lRGVsdGE6Om1zKGJhY2tvZmZfaW50ZXJ2YWwpOwogICAgIH0KICAgICBSVENfTE9HKFdB
Uk5JTkcpCiAgICAgICAgIDw8ICJJbml0aWFsIGJhY2stb2ZmIGludGVydmFsIG11c3QgYmUgYmV0
d2VlbiAxMCBhbmQgMjAwIG1zLiI7CkBAIC03NCwzMzQgKzcwLDM0NyBAQCBpbnQ2NF90IFJlYWRJ
bml0aWFsQmFja29mZkludGVydmFsTXMoKSB7CiAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkZh
aWxlZCB0byBwYXJzZSBwYXJhbWV0ZXJzIGZvciAiCiAgICAgICAgICAgICAgICAgICAgICAgPDwg
a0J3ZUluaXRpYWxCYWNrT2ZmSW50ZXJ2YWxFeHBlcmltZW50CiAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiBleHBlcmltZW50LiBVc2luZyBkZWZhdWx0LiI7Ci0gIHJldHVybiBrRGVmYXVsdElu
aXRpYWxCYWNrT2ZmSW50ZXJ2YWxNczsKKyAgcmV0dXJuIGtEZWZhdWx0SW5pdGlhbEJhY2tPZmZJ
bnRlcnZhbDsKIH0KIAogQWltZFJhdGVDb250cm9sOjpBaW1kUmF0ZUNvbnRyb2woKQotICAgIDog
bWluX2NvbmZpZ3VyZWRfYml0cmF0ZV9icHNfKGNvbmdlc3Rpb25fY29udHJvbGxlcjo6R2V0TWlu
Qml0cmF0ZUJwcygpKSwKLSAgICAgIG1heF9jb25maWd1cmVkX2JpdHJhdGVfYnBzXygzMDAwMDAw
MCksCi0gICAgICBjdXJyZW50X2JpdHJhdGVfYnBzXyhtYXhfY29uZmlndXJlZF9iaXRyYXRlX2Jw
c18pLAotICAgICAgbGF0ZXN0X2VzdGltYXRlZF90aHJvdWdocHV0X2Jwc18oY3VycmVudF9iaXRy
YXRlX2Jwc18pLAotICAgICAgYXZnX21heF9iaXRyYXRlX2ticHNfKC0xLjBmKSwKLSAgICAgIHZh
cl9tYXhfYml0cmF0ZV9rYnBzXygwLjRmKSwKKyAgICA6IG1pbl9jb25maWd1cmVkX2JpdHJhdGVf
KGNvbmdlc3Rpb25fY29udHJvbGxlcjo6R2V0TWluQml0cmF0ZSgpKSwKKyAgICAgIG1heF9jb25m
aWd1cmVkX2JpdHJhdGVfKERhdGFSYXRlOjprYnBzKDMwMDAwKSksCisgICAgICBjdXJyZW50X2Jp
dHJhdGVfKG1heF9jb25maWd1cmVkX2JpdHJhdGVfKSwKKyAgICAgIGxhdGVzdF9lc3RpbWF0ZWRf
dGhyb3VnaHB1dF8oY3VycmVudF9iaXRyYXRlXyksCisgICAgICBsaW5rX2NhcGFjaXR5X2VzdGlt
YXRlX2ticHNfKCksCisgICAgICB2YXJfbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXygwLjQp
LAogICAgICAgcmF0ZV9jb250cm9sX3N0YXRlXyhrUmNIb2xkKSwKLSAgICAgIHJhdGVfY29udHJv
bF9yZWdpb25fKGtSY01heFVua25vd24pLAotICAgICAgdGltZV9sYXN0X2JpdHJhdGVfY2hhbmdl
XygtMSksCi0gICAgICB0aW1lX2xhc3RfYml0cmF0ZV9kZWNyZWFzZV8oLTEpLAotICAgICAgdGlt
ZV9maXJzdF90aHJvdWdocHV0X2VzdGltYXRlXygtMSksCisgICAgICB0aW1lX2xhc3RfYml0cmF0
ZV9jaGFuZ2VfKFRpbWVzdGFtcDo6TWludXNJbmZpbml0eSgpKSwKKyAgICAgIHRpbWVfbGFzdF9i
aXRyYXRlX2RlY3JlYXNlXyhUaW1lc3RhbXA6Ok1pbnVzSW5maW5pdHkoKSksCisgICAgICB0aW1l
X2ZpcnN0X3Rocm91Z2hwdXRfZXN0aW1hdGVfKFRpbWVzdGFtcDo6TWludXNJbmZpbml0eSgpKSwK
ICAgICAgIGJpdHJhdGVfaXNfaW5pdGlhbGl6ZWRfKGZhbHNlKSwKICAgICAgIGJldGFfKHdlYnJ0
Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChrQndlQmFja09mZkZhY3RvckV4cGVyaW1lbnQpCiAg
ICAgICAgICAgICAgICAgPyBSZWFkQmFja29mZkZhY3RvcigpCiAgICAgICAgICAgICAgICAgOiBr
RGVmYXVsdEJhY2tvZmZGYWN0b3IpLAotICAgICAgcnR0XyhrRGVmYXVsdFJ0dE1zKSwKKyAgICAg
IHJ0dF8oa0RlZmF1bHRSdHQpLAogICAgICAgaW5fZXhwZXJpbWVudF8oIUFkYXB0aXZlVGhyZXNo
b2xkRXhwZXJpbWVudElzRGlzYWJsZWQoKSksCiAgICAgICBzbW9vdGhpbmdfZXhwZXJpbWVudF8o
CiAgICAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtQXVkaW8t
QmFuZHdpZHRoU21vb3RoaW5nIikpLAogICAgICAgaW5faW5pdGlhbF9iYWNrb2ZmX2ludGVydmFs
X2V4cGVyaW1lbnRfKAogICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZChr
QndlSW5pdGlhbEJhY2tPZmZJbnRlcnZhbEV4cGVyaW1lbnQpKSwKLSAgICAgIGluaXRpYWxfYmFj
a29mZl9pbnRlcnZhbF9tc18oa0RlZmF1bHRJbml0aWFsQmFja09mZkludGVydmFsTXMpIHsKKyAg
ICAgIGluaXRpYWxfYmFja29mZl9pbnRlcnZhbF8oa0RlZmF1bHRJbml0aWFsQmFja09mZkludGVy
dmFsKSB7CiAgIGlmIChpbl9pbml0aWFsX2JhY2tvZmZfaW50ZXJ2YWxfZXhwZXJpbWVudF8pIHsK
LSAgICBpbml0aWFsX2JhY2tvZmZfaW50ZXJ2YWxfbXNfID0gUmVhZEluaXRpYWxCYWNrb2ZmSW50
ZXJ2YWxNcygpOworICAgIGluaXRpYWxfYmFja29mZl9pbnRlcnZhbF8gPSBSZWFkSW5pdGlhbEJh
Y2tvZmZJbnRlcnZhbCgpOwogICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlVzaW5nIGFpbWQgcmF0
ZSBjb250cm9sIHdpdGggaW5pdGlhbCBiYWNrLW9mZiBpbnRlcnZhbCIKLSAgICAgICAgICAgICAg
ICAgICAgIDw8ICIgIiA8PCBpbml0aWFsX2JhY2tvZmZfaW50ZXJ2YWxfbXNfIDw8ICIgbXMuIjsK
KyAgICAgICAgICAgICAgICAgICAgIDw8ICIgIiA8PCBUb1N0cmluZyhpbml0aWFsX2JhY2tvZmZf
aW50ZXJ2YWxfKSA8PCAiLiI7CiAgIH0KICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiVXNpbmcgYWlt
ZCByYXRlIGNvbnRyb2wgd2l0aCBiYWNrIG9mZiBmYWN0b3IgIiA8PCBiZXRhXzsKIH0KIAogQWlt
ZFJhdGVDb250cm9sOjp+QWltZFJhdGVDb250cm9sKCkge30KIAotdm9pZCBBaW1kUmF0ZUNvbnRy
b2w6OlNldFN0YXJ0Qml0cmF0ZShpbnQgc3RhcnRfYml0cmF0ZV9icHMpIHsKLSAgY3VycmVudF9i
aXRyYXRlX2Jwc18gPSBzdGFydF9iaXRyYXRlX2JwczsKLSAgbGF0ZXN0X2VzdGltYXRlZF90aHJv
dWdocHV0X2Jwc18gPSBjdXJyZW50X2JpdHJhdGVfYnBzXzsKK3ZvaWQgQWltZFJhdGVDb250cm9s
OjpTZXRTdGFydEJpdHJhdGUoRGF0YVJhdGUgc3RhcnRfYml0cmF0ZSkgeworICBjdXJyZW50X2Jp
dHJhdGVfID0gc3RhcnRfYml0cmF0ZTsKKyAgbGF0ZXN0X2VzdGltYXRlZF90aHJvdWdocHV0XyA9
IGN1cnJlbnRfYml0cmF0ZV87CiAgIGJpdHJhdGVfaXNfaW5pdGlhbGl6ZWRfID0gdHJ1ZTsKIH0K
IAotdm9pZCBBaW1kUmF0ZUNvbnRyb2w6OlNldE1pbkJpdHJhdGUoaW50IG1pbl9iaXRyYXRlX2Jw
cykgewotICBtaW5fY29uZmlndXJlZF9iaXRyYXRlX2Jwc18gPSBtaW5fYml0cmF0ZV9icHM7Ci0g
IGN1cnJlbnRfYml0cmF0ZV9icHNfID0gc3RkOjptYXg8aW50PihtaW5fYml0cmF0ZV9icHMsIGN1
cnJlbnRfYml0cmF0ZV9icHNfKTsKK3ZvaWQgQWltZFJhdGVDb250cm9sOjpTZXRNaW5CaXRyYXRl
KERhdGFSYXRlIG1pbl9iaXRyYXRlKSB7CisgIG1pbl9jb25maWd1cmVkX2JpdHJhdGVfID0gbWlu
X2JpdHJhdGU7CisgIGN1cnJlbnRfYml0cmF0ZV8gPSBzdGQ6Om1heChtaW5fYml0cmF0ZSwgY3Vy
cmVudF9iaXRyYXRlXyk7CiB9CiAKIGJvb2wgQWltZFJhdGVDb250cm9sOjpWYWxpZEVzdGltYXRl
KCkgY29uc3QgewogICByZXR1cm4gYml0cmF0ZV9pc19pbml0aWFsaXplZF87CiB9CiAKLWludDY0
X3QgQWltZFJhdGVDb250cm9sOjpHZXRGZWVkYmFja0ludGVydmFsKCkgY29uc3QgeworVGltZURl
bHRhIEFpbWRSYXRlQ29udHJvbDo6R2V0RmVlZGJhY2tJbnRlcnZhbCgpIGNvbnN0IHsKICAgLy8g
RXN0aW1hdGUgaG93IG9mdGVuIHdlIGNhbiBzZW5kIFJUQ1AgaWYgd2UgYWxsb2NhdGUgdXAgdG8g
NSUgb2YgYmFuZHdpZHRoCiAgIC8vIHRvIGZlZWRiYWNrLgotICBzdGF0aWMgY29uc3QgaW50IGtS
dGNwU2l6ZSA9IDgwOwotICBjb25zdCBpbnQ2NF90IGludGVydmFsID0gc3RhdGljX2Nhc3Q8aW50
NjRfdD4oCi0gICAgICBrUnRjcFNpemUgKiA4LjAgKiAxMDAwLjAgLyAoMC4wNSAqIGN1cnJlbnRf
Yml0cmF0ZV9icHNfKSArIDAuNSk7Ci0gIGNvbnN0IGludDY0X3Qga01pbkZlZWRiYWNrSW50ZXJ2
YWxNcyA9IDIwMDsKLSAgcmV0dXJuIHJ0Yzo6U2FmZUNsYW1wKGludGVydmFsLCBrTWluRmVlZGJh
Y2tJbnRlcnZhbE1zLAotICAgICAgICAgICAgICAgICAgICAgICAga01heEZlZWRiYWNrSW50ZXJ2
YWxNcyk7CisgIGNvbnN0IERhdGFTaXplIGtSdGNwU2l6ZSA9IERhdGFTaXplOjpieXRlcyg4MCk7
CisgIGNvbnN0IERhdGFSYXRlIHJ0Y3BfYml0cmF0ZSA9IGN1cnJlbnRfYml0cmF0ZV8gKiAwLjA1
OworICBjb25zdCBUaW1lRGVsdGEgaW50ZXJ2YWwgPSBrUnRjcFNpemUgLyBydGNwX2JpdHJhdGU7
CisgIGNvbnN0IFRpbWVEZWx0YSBrTWluRmVlZGJhY2tJbnRlcnZhbCA9IFRpbWVEZWx0YTo6bXMo
MjAwKTsKKyAgY29uc3QgVGltZURlbHRhIGtNYXhGZWVkYmFja0ludGVydmFsID0gVGltZURlbHRh
OjptcygxMDAwKTsKKyAgcmV0dXJuIGludGVydmFsLkNsYW1wZWQoa01pbkZlZWRiYWNrSW50ZXJ2
YWwsIGtNYXhGZWVkYmFja0ludGVydmFsKTsKIH0KIAotYm9vbCBBaW1kUmF0ZUNvbnRyb2w6OlRp
bWVUb1JlZHVjZUZ1cnRoZXIoCi0gICAgaW50NjRfdCBub3dfbXMsCi0gICAgdWludDMyX3QgZXN0
aW1hdGVkX3Rocm91Z2hwdXRfYnBzKSBjb25zdCB7Ci0gIGNvbnN0IGludDY0X3QgYml0cmF0ZV9y
ZWR1Y3Rpb25faW50ZXJ2YWwgPQotICAgICAgc3RkOjptYXg8aW50NjRfdD4oc3RkOjptaW48aW50
NjRfdD4ocnR0XywgMjAwKSwgMTApOwotICBpZiAobm93X21zIC0gdGltZV9sYXN0X2JpdHJhdGVf
Y2hhbmdlXyA+PSBiaXRyYXRlX3JlZHVjdGlvbl9pbnRlcnZhbCkgeworYm9vbCBBaW1kUmF0ZUNv
bnRyb2w6OlRpbWVUb1JlZHVjZUZ1cnRoZXIoVGltZXN0YW1wIGF0X3RpbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhUmF0ZSBlc3RpbWF0ZWRfdGhyb3Vn
aHB1dCkgY29uc3QgeworICBjb25zdCBUaW1lRGVsdGEgYml0cmF0ZV9yZWR1Y3Rpb25faW50ZXJ2
YWwgPQorICAgICAgcnR0Xy5DbGFtcGVkKFRpbWVEZWx0YTo6bXMoMTApLCBUaW1lRGVsdGE6Om1z
KDIwMCkpOworICBpZiAoYXRfdGltZSAtIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8gPj0gYml0
cmF0ZV9yZWR1Y3Rpb25faW50ZXJ2YWwpIHsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogICBpZiAo
VmFsaWRFc3RpbWF0ZSgpKSB7CiAgICAgLy8gVE9ETyh0ZXJlbGl1cy9ob2xtZXIpOiBJbnZlc3Rp
Z2F0ZSBjb25zZXF1ZW5jZXMgb2YgaW5jcmVhc2luZwogICAgIC8vIHRoZSB0aHJlc2hvbGQgdG8g
MC45NSAqIExhdGVzdEVzdGltYXRlKCkuCi0gICAgY29uc3QgdWludDMyX3QgdGhyZXNob2xkID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KDAuNSAqIExhdGVzdEVzdGltYXRlKCkpOwotICAgIHJldHVy
biBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMgPCB0aHJlc2hvbGQ7CisgICAgY29uc3QgRGF0YVJh
dGUgdGhyZXNob2xkID0gMC41ICogTGF0ZXN0RXN0aW1hdGUoKTsKKyAgICByZXR1cm4gZXN0aW1h
dGVkX3Rocm91Z2hwdXQgPCB0aHJlc2hvbGQ7CiAgIH0KICAgcmV0dXJuIGZhbHNlOwogfQogCi1i
b29sIEFpbWRSYXRlQ29udHJvbDo6SW5pdGlhbFRpbWVUb1JlZHVjZUZ1cnRoZXIoaW50NjRfdCBu
b3dfbXMpIGNvbnN0IHsKK2Jvb2wgQWltZFJhdGVDb250cm9sOjpJbml0aWFsVGltZVRvUmVkdWNl
RnVydGhlcihUaW1lc3RhbXAgYXRfdGltZSkgY29uc3QgewogICBpZiAoIWluX2luaXRpYWxfYmFj
a29mZl9pbnRlcnZhbF9leHBlcmltZW50XykgewogICAgIHJldHVybiBWYWxpZEVzdGltYXRlKCkg
JiYKLSAgICAgICAgICAgVGltZVRvUmVkdWNlRnVydGhlcihub3dfbXMsIExhdGVzdEVzdGltYXRl
KCkgLyAyIC0gMSk7CisgICAgICAgICAgIFRpbWVUb1JlZHVjZUZ1cnRoZXIoYXRfdGltZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXRlc3RFc3RpbWF0ZSgpIC8gMiAtIERhdGFS
YXRlOjpicHMoMSkpOwogICB9CiAgIC8vIFRPRE8odGVyZWxpdXMpOiBXZSBjb3VsZCB1c2UgdGhl
IFJUVCAoY2xhbXBlZCB0byBzdWl0YWJsZSBsaW1pdHMpIGluc3RlYWQKICAgLy8gb2YgYSBmaXhl
ZCBiaXRyYXRlX3JlZHVjdGlvbl9pbnRlcnZhbC4KLSAgaWYgKHRpbWVfbGFzdF9iaXRyYXRlX2Rl
Y3JlYXNlXyA9PSAtMSB8fAotICAgICAgbm93X21zIC0gdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVh
c2VfID49IGluaXRpYWxfYmFja29mZl9pbnRlcnZhbF9tc18pIHsKKyAgaWYgKHRpbWVfbGFzdF9i
aXRyYXRlX2RlY3JlYXNlXy5Jc0luZmluaXRlKCkgfHwKKyAgICAgIGF0X3RpbWUgLSB0aW1lX2xh
c3RfYml0cmF0ZV9kZWNyZWFzZV8gPj0gaW5pdGlhbF9iYWNrb2ZmX2ludGVydmFsXykgewogICAg
IHJldHVybiB0cnVlOwogICB9CiAgIHJldHVybiBmYWxzZTsKIH0KIAotdWludDMyX3QgQWltZFJh
dGVDb250cm9sOjpMYXRlc3RFc3RpbWF0ZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGN1cnJlbnRfYml0
cmF0ZV9icHNfOworRGF0YVJhdGUgQWltZFJhdGVDb250cm9sOjpMYXRlc3RFc3RpbWF0ZSgpIGNv
bnN0IHsKKyAgcmV0dXJuIGN1cnJlbnRfYml0cmF0ZV87CiB9CiAKLXZvaWQgQWltZFJhdGVDb250
cm9sOjpTZXRSdHQoaW50NjRfdCBydHQpIHsKK3ZvaWQgQWltZFJhdGVDb250cm9sOjpTZXRSdHQo
VGltZURlbHRhIHJ0dCkgewogICBydHRfID0gcnR0OwogfQogCi11aW50MzJfdCBBaW1kUmF0ZUNv
bnRyb2w6OlVwZGF0ZShjb25zdCBSYXRlQ29udHJvbElucHV0KiBpbnB1dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qgbm93X21zKSB7CitEYXRhUmF0ZSBBaW1kUmF0
ZUNvbnRyb2w6OlVwZGF0ZShjb25zdCBSYXRlQ29udHJvbElucHV0KiBpbnB1dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CiAgIFJUQ19DSEVD
SyhpbnB1dCk7CiAKICAgLy8gU2V0IHRoZSBpbml0aWFsIGJpdCByYXRlIHZhbHVlIHRvIHdoYXQg
d2UncmUgcmVjZWl2aW5nIHRoZSBmaXJzdCBoYWxmCiAgIC8vIHNlY29uZC4KICAgLy8gVE9ETyhi
dWdzLndlYnJ0Yy5vcmcvOTM3OSk6IFRoZSBjb21tZW50IGFib3ZlIGRvZXNuJ3QgbWF0Y2ggdG8g
dGhlIGNvZGUuCiAgIGlmICghYml0cmF0ZV9pc19pbml0aWFsaXplZF8pIHsKLSAgICBjb25zdCBp
bnQ2NF90IGtJbml0aWFsaXphdGlvblRpbWVNcyA9IDUwMDA7Ci0gICAgUlRDX0RDSEVDS19MRShr
Qml0cmF0ZVdpbmRvd01zLCBrSW5pdGlhbGl6YXRpb25UaW1lTXMpOwotICAgIGlmICh0aW1lX2Zp
cnN0X3Rocm91Z2hwdXRfZXN0aW1hdGVfIDwgMCkgewotICAgICAgaWYgKGlucHV0LT5lc3RpbWF0
ZWRfdGhyb3VnaHB1dF9icHMpCi0gICAgICAgIHRpbWVfZmlyc3RfdGhyb3VnaHB1dF9lc3RpbWF0
ZV8gPSBub3dfbXM7Ci0gICAgfSBlbHNlIGlmIChub3dfbXMgLSB0aW1lX2ZpcnN0X3Rocm91Z2hw
dXRfZXN0aW1hdGVfID4KLSAgICAgICAgICAgICAgICAgICBrSW5pdGlhbGl6YXRpb25UaW1lTXMg
JiYKLSAgICAgICAgICAgICAgIGlucHV0LT5lc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpIHsKLSAg
ICAgIGN1cnJlbnRfYml0cmF0ZV9icHNfID0gKmlucHV0LT5lc3RpbWF0ZWRfdGhyb3VnaHB1dF9i
cHM7CisgICAgY29uc3QgVGltZURlbHRhIGtJbml0aWFsaXphdGlvblRpbWUgPSBUaW1lRGVsdGE6
OnNlY29uZHMoNSk7CisgICAgUlRDX0RDSEVDS19MRShrQml0cmF0ZVdpbmRvd01zLCBrSW5pdGlh
bGl6YXRpb25UaW1lLm1zKCkpOworICAgIGlmICh0aW1lX2ZpcnN0X3Rocm91Z2hwdXRfZXN0aW1h
dGVfLklzSW5maW5pdGUoKSkgeworICAgICAgaWYgKGlucHV0LT5lc3RpbWF0ZWRfdGhyb3VnaHB1
dCkKKyAgICAgICAgdGltZV9maXJzdF90aHJvdWdocHV0X2VzdGltYXRlXyA9IGF0X3RpbWU7Cisg
ICAgfSBlbHNlIGlmIChhdF90aW1lIC0gdGltZV9maXJzdF90aHJvdWdocHV0X2VzdGltYXRlXyA+
CisgICAgICAgICAgICAgICAgICAga0luaXRpYWxpemF0aW9uVGltZSAmJgorICAgICAgICAgICAg
ICAgaW5wdXQtPmVzdGltYXRlZF90aHJvdWdocHV0KSB7CisgICAgICBjdXJyZW50X2JpdHJhdGVf
ID0gKmlucHV0LT5lc3RpbWF0ZWRfdGhyb3VnaHB1dDsKICAgICAgIGJpdHJhdGVfaXNfaW5pdGlh
bGl6ZWRfID0gdHJ1ZTsKICAgICB9CiAgIH0KIAotICBjdXJyZW50X2JpdHJhdGVfYnBzXyA9IENo
YW5nZUJpdHJhdGUoY3VycmVudF9iaXRyYXRlX2Jwc18sICppbnB1dCwgbm93X21zKTsKLSAgcmV0
dXJuIGN1cnJlbnRfYml0cmF0ZV9icHNfOworICBjdXJyZW50X2JpdHJhdGVfID0gQ2hhbmdlQml0
cmF0ZShjdXJyZW50X2JpdHJhdGVfLCAqaW5wdXQsIGF0X3RpbWUpOworICByZXR1cm4gY3VycmVu
dF9iaXRyYXRlXzsKIH0KIAotdm9pZCBBaW1kUmF0ZUNvbnRyb2w6OlNldEVzdGltYXRlKGludCBi
aXRyYXRlX2JwcywgaW50NjRfdCBub3dfbXMpIHsKK3ZvaWQgQWltZFJhdGVDb250cm9sOjpTZXRF
c3RpbWF0ZShEYXRhUmF0ZSBiaXRyYXRlLCBUaW1lc3RhbXAgYXRfdGltZSkgewogICBiaXRyYXRl
X2lzX2luaXRpYWxpemVkXyA9IHRydWU7Ci0gIHVpbnQzMl90IHByZXZfYml0cmF0ZV9icHMgPSBj
dXJyZW50X2JpdHJhdGVfYnBzXzsKLSAgY3VycmVudF9iaXRyYXRlX2Jwc18gPSBDbGFtcEJpdHJh
dGUoYml0cmF0ZV9icHMsIGJpdHJhdGVfYnBzKTsKLSAgdGltZV9sYXN0X2JpdHJhdGVfY2hhbmdl
XyA9IG5vd19tczsKLSAgaWYgKGN1cnJlbnRfYml0cmF0ZV9icHNfIDwgcHJldl9iaXRyYXRlX2Jw
cykgewotICAgIHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNlXyA9IG5vd19tczsKKyAgRGF0YVJh
dGUgcHJldl9iaXRyYXRlID0gY3VycmVudF9iaXRyYXRlXzsKKyAgY3VycmVudF9iaXRyYXRlXyA9
IENsYW1wQml0cmF0ZShiaXRyYXRlLCBiaXRyYXRlKTsKKyAgdGltZV9sYXN0X2JpdHJhdGVfY2hh
bmdlXyA9IGF0X3RpbWU7CisgIGlmIChjdXJyZW50X2JpdHJhdGVfIDwgcHJldl9iaXRyYXRlKSB7
CisgICAgdGltZV9sYXN0X2JpdHJhdGVfZGVjcmVhc2VfID0gYXRfdGltZTsKICAgfQogfQogCi1p
bnQgQWltZFJhdGVDb250cm9sOjpHZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzKCkgY29uc3Qgewot
ICBSVENfRENIRUNLX0dUKGN1cnJlbnRfYml0cmF0ZV9icHNfLCAwKTsKLSAgZG91YmxlIGJpdHNf
cGVyX2ZyYW1lID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihjdXJyZW50X2JpdHJhdGVfYnBzXykgLyAz
MC4wOwotICBkb3VibGUgcGFja2V0c19wZXJfZnJhbWUgPSBzdGQ6OmNlaWwoYml0c19wZXJfZnJh
bWUgLyAoOC4wICogMTIwMC4wKSk7Ci0gIGRvdWJsZSBhdmdfcGFja2V0X3NpemVfYml0cyA9IGJp
dHNfcGVyX2ZyYW1lIC8gcGFja2V0c19wZXJfZnJhbWU7Citkb3VibGUgQWltZFJhdGVDb250cm9s
OjpHZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzUGVyU2Vjb25kKCkgY29uc3QgeworICBSVENfRENI
RUNLKCFjdXJyZW50X2JpdHJhdGVfLklzWmVybygpKTsKKyAgY29uc3QgVGltZURlbHRhIGtGcmFt
ZUludGVydmFsID0gVGltZURlbHRhOjpzZWNvbmRzKDEpIC8gMzA7CisgIERhdGFTaXplIGZyYW1l
X3NpemUgPSBjdXJyZW50X2JpdHJhdGVfICoga0ZyYW1lSW50ZXJ2YWw7CisgIGNvbnN0IERhdGFT
aXplIGtQYWNrZXRTaXplID0gRGF0YVNpemU6OmJ5dGVzKDEyMDApOworICBkb3VibGUgcGFja2V0
c19wZXJfZnJhbWUgPSBzdGQ6OmNlaWwoZnJhbWVfc2l6ZSAvIGtQYWNrZXRTaXplKTsKKyAgRGF0
YVNpemUgYXZnX3BhY2tldF9zaXplID0gZnJhbWVfc2l6ZSAvIHBhY2tldHNfcGVyX2ZyYW1lOwog
CiAgIC8vIEFwcHJveGltYXRlIHRoZSBvdmVyLXVzZSBlc3RpbWF0b3IgZGVsYXkgdG8gMTAwIG1z
LgotICBjb25zdCBpbnQ2NF90IHJlc3BvbnNlX3RpbWUgPSBpbl9leHBlcmltZW50XyA/IChydHRf
ICsgMTAwKSAqIDIgOiBydHRfICsgMTAwOwotICBjb25zdGV4cHIgZG91YmxlIGtNaW5JbmNyZWFz
ZVJhdGVCcHMgPSA0MDAwOwotICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1heCgKLSAg
ICAgIGtNaW5JbmNyZWFzZVJhdGVCcHMsIChhdmdfcGFja2V0X3NpemVfYml0cyAqIDEwMDApIC8g
cmVzcG9uc2VfdGltZSkpOworICBUaW1lRGVsdGEgcmVzcG9uc2VfdGltZSA9IHJ0dF8gKyBUaW1l
RGVsdGE6Om1zKDEwMCk7CisgIGlmIChpbl9leHBlcmltZW50XykKKyAgICByZXNwb25zZV90aW1l
ID0gcmVzcG9uc2VfdGltZSAqIDI7CisgIGRvdWJsZSBpbmNyZWFzZV9yYXRlX2Jwc19wZXJfc2Vj
b25kID0KKyAgICAgIChhdmdfcGFja2V0X3NpemUgLyByZXNwb25zZV90aW1lKS5icHM8ZG91Ymxl
PigpOworICBkb3VibGUga01pbkluY3JlYXNlUmF0ZUJwc1BlclNlY29uZCA9IDQwMDA7CisgIHJl
dHVybiBzdGQ6Om1heChrTWluSW5jcmVhc2VSYXRlQnBzUGVyU2Vjb25kLCBpbmNyZWFzZV9yYXRl
X2Jwc19wZXJfc2Vjb25kKTsKIH0KIAotaW50IEFpbWRSYXRlQ29udHJvbDo6R2V0RXhwZWN0ZWRC
YW5kd2lkdGhQZXJpb2RNcygpIGNvbnN0IHsKLSAgY29uc3QgaW50IGtNaW5QZXJpb2RNcyA9IHNt
b290aGluZ19leHBlcmltZW50XyA/IDUwMCA6IDIwMDA7Ci0gIGNvbnN0ZXhwciBpbnQga0RlZmF1
bHRQZXJpb2RNcyA9IDMwMDA7Ci0gIGNvbnN0ZXhwciBpbnQga01heFBlcmlvZE1zID0gNTAwMDA7
CitUaW1lRGVsdGEgQWltZFJhdGVDb250cm9sOjpHZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZCgp
IGNvbnN0IHsKKyAgY29uc3QgVGltZURlbHRhIGtNaW5QZXJpb2QgPQorICAgICAgc21vb3RoaW5n
X2V4cGVyaW1lbnRfID8gVGltZURlbHRhOjptcyg1MDApIDogVGltZURlbHRhOjpzZWNvbmRzKDIp
OworICBjb25zdCBUaW1lRGVsdGEga0RlZmF1bHRQZXJpb2QgPSBUaW1lRGVsdGE6OnNlY29uZHMo
Myk7CisgIGNvbnN0IFRpbWVEZWx0YSBrTWF4UGVyaW9kID0gVGltZURlbHRhOjpzZWNvbmRzKDUw
KTsKIAotICBpbnQgaW5jcmVhc2VfcmF0ZSA9IEdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHMoKTsK
KyAgZG91YmxlIGluY3JlYXNlX3JhdGVfYnBzX3Blcl9zZWNvbmQgPSBHZXROZWFyTWF4SW5jcmVh
c2VSYXRlQnBzUGVyU2Vjb25kKCk7CiAgIGlmICghbGFzdF9kZWNyZWFzZV8pCi0gICAgcmV0dXJu
IHNtb290aGluZ19leHBlcmltZW50XyA/IGtNaW5QZXJpb2RNcyA6IGtEZWZhdWx0UGVyaW9kTXM7
Ci0KLSAgcmV0dXJuIHN0ZDo6bWluKGtNYXhQZXJpb2RNcywKLSAgICAgICAgICAgICAgICAgIHN0
ZDo6bWF4PGludD4oMTAwMCAqIHN0YXRpY19jYXN0PGludDY0X3Q+KCpsYXN0X2RlY3JlYXNlXykg
LwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VfcmF0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01pblBlcmlvZE1zKSk7CisgICAgcmV0dXJu
IHNtb290aGluZ19leHBlcmltZW50XyA/IGtNaW5QZXJpb2QgOiBrRGVmYXVsdFBlcmlvZDsKKyAg
ZG91YmxlIHRpbWVfdG9fcmVjb3Zlcl9kZWNyZWFzZV9zZWNvbmRzID0KKyAgICAgIGxhc3RfZGVj
cmVhc2VfLT5icHMoKSAvIGluY3JlYXNlX3JhdGVfYnBzX3Blcl9zZWNvbmQ7CisgIFRpbWVEZWx0
YSBwZXJpb2QgPSBUaW1lRGVsdGE6OnNlY29uZHModGltZV90b19yZWNvdmVyX2RlY3JlYXNlX3Nl
Y29uZHMpOworICByZXR1cm4gcGVyaW9kLkNsYW1wZWQoa01pblBlcmlvZCwga01heFBlcmlvZCk7
CiB9CiAKLXVpbnQzMl90IEFpbWRSYXRlQ29udHJvbDo6Q2hhbmdlQml0cmF0ZSh1aW50MzJfdCBu
ZXdfYml0cmF0ZV9icHMsCitEYXRhUmF0ZSBBaW1kUmF0ZUNvbnRyb2w6OkNoYW5nZUJpdHJhdGUo
RGF0YVJhdGUgbmV3X2JpdHJhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUmF0ZUNvbnRyb2xJbnB1dCYgaW5wdXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBub3dfbXMpIHsKLSAgdWludDMyX3QgZXN0aW1h
dGVkX3Rocm91Z2hwdXRfYnBzID0KLSAgICAgIGlucHV0LmVzdGltYXRlZF90aHJvdWdocHV0X2Jw
cy52YWx1ZV9vcihsYXRlc3RfZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzXyk7Ci0gIGlmIChpbnB1
dC5lc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpCi0gICAgbGF0ZXN0X2VzdGltYXRlZF90aHJvdWdo
cHV0X2Jwc18gPSAqaW5wdXQuZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7CisgIERhdGFS
YXRlIGVzdGltYXRlZF90aHJvdWdocHV0ID0KKyAgICAgIGlucHV0LmVzdGltYXRlZF90aHJvdWdo
cHV0LnZhbHVlX29yKGxhdGVzdF9lc3RpbWF0ZWRfdGhyb3VnaHB1dF8pOworICBpZiAoaW5wdXQu
ZXN0aW1hdGVkX3Rocm91Z2hwdXQpCisgICAgbGF0ZXN0X2VzdGltYXRlZF90aHJvdWdocHV0XyA9
ICppbnB1dC5lc3RpbWF0ZWRfdGhyb3VnaHB1dDsKIAogICAvLyBBbiBvdmVyLXVzZSBzaG91bGQg
YWx3YXlzIHRyaWdnZXIgdXMgdG8gcmVkdWNlIHRoZSBiaXRyYXRlLCBldmVuIHRob3VnaAogICAv
LyB3ZSBoYXZlIG5vdCB5ZXQgZXN0YWJsaXNoZWQgb3VyIGZpcnN0IGVzdGltYXRlLiBCeSBhY3Rp
bmcgb24gdGhlIG92ZXItdXNlLAogICAvLyB3ZSB3aWxsIGVuZCB1cCB3aXRoIGEgdmFsaWQgZXN0
aW1hdGUuCiAgIGlmICghYml0cmF0ZV9pc19pbml0aWFsaXplZF8gJiYKICAgICAgIGlucHV0LmJ3
X3N0YXRlICE9IEJhbmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmcpCi0gICAgcmV0dXJuIGN1cnJl
bnRfYml0cmF0ZV9icHNfOworICAgIHJldHVybiBjdXJyZW50X2JpdHJhdGVfOwogCi0gIENoYW5n
ZVN0YXRlKGlucHV0LCBub3dfbXMpOworICBDaGFuZ2VTdGF0ZShpbnB1dCwgYXRfdGltZSk7CiAg
IC8vIENhbGN1bGF0ZWQgaGVyZSBiZWNhdXNlIGl0J3MgdXNlZCBpbiBtdWx0aXBsZSBwbGFjZXMu
Ci0gIGNvbnN0IGZsb2F0IGVzdGltYXRlZF90aHJvdWdocHV0X2ticHMgPSBlc3RpbWF0ZWRfdGhy
b3VnaHB1dF9icHMgLyAxMDAwLjBmOworICBjb25zdCBkb3VibGUgZXN0aW1hdGVkX3Rocm91Z2hw
dXRfa2JwcyA9IGVzdGltYXRlZF90aHJvdWdocHV0LmticHM8ZG91YmxlPigpOworCiAgIC8vIENh
bGN1bGF0ZSB0aGUgbWF4IGJpdCByYXRlIHN0ZCBkZXYgZ2l2ZW4gdGhlIG5vcm1hbGl6ZWQKLSAg
Ly8gdmFyaWFuY2UgYW5kIHRoZSBjdXJyZW50IHRocm91Z2hwdXQgYml0cmF0ZS4KLSAgY29uc3Qg
ZmxvYXQgc3RkX21heF9iaXRfcmF0ZSA9Ci0gICAgICBzcXJ0KHZhcl9tYXhfYml0cmF0ZV9rYnBz
XyAqIGF2Z19tYXhfYml0cmF0ZV9rYnBzXyk7CisgIC8vIHZhcmlhbmNlIGFuZCB0aGUgY3VycmVu
dCB0aHJvdWdocHV0IGJpdHJhdGUuIFRoZSBzdGFuZGFyZCBkZXZpYXRpb24gd2lsbAorICAvLyBv
bmx5IGJlIHVzZWQgaWYgbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXyBoYXMgYSB2YWx1ZS4K
KyAgY29uc3QgZG91YmxlIHN0ZF9saW5rX2NhcGFjaXR5X2ticHMgPQorICAgICAgc3FydCh2YXJf
bGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXyAqCisgICAgICAgICAgIGxpbmtfY2FwYWNpdHlf
ZXN0aW1hdGVfa2Jwc18udmFsdWVfb3IoMCkpOwogICBzd2l0Y2ggKHJhdGVfY29udHJvbF9zdGF0
ZV8pIHsKICAgICBjYXNlIGtSY0hvbGQ6CiAgICAgICBicmVhazsKIAogICAgIGNhc2Uga1JjSW5j
cmVhc2U6Ci0gICAgICBpZiAoYXZnX21heF9iaXRyYXRlX2ticHNfID49IDAgJiYKLSAgICAgICAg
ICBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzID4KLSAgICAgICAgICAgICAgYXZnX21heF9iaXRy
YXRlX2ticHNfICsgMyAqIHN0ZF9tYXhfYml0X3JhdGUpIHsKLSAgICAgICAgcmF0ZV9jb250cm9s
X3JlZ2lvbl8gPSBrUmNNYXhVbmtub3duOwotCi0gICAgICAgIGF2Z19tYXhfYml0cmF0ZV9rYnBz
XyA9IC0xLjA7CisgICAgICBpZiAobGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy5oYXNfdmFs
dWUoKSAmJgorICAgICAgICAgIGVzdGltYXRlZF90aHJvdWdocHV0X2ticHMgPiBsaW5rX2NhcGFj
aXR5X2VzdGltYXRlX2ticHNfLnZhbHVlKCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMyAqIHN0ZF9saW5rX2NhcGFjaXR5X2ticHMpIHsKKyAgICAgICAgLy8g
VGhlIGxpbmsgY2FwYWNpdHkgYXBwZWFycyB0byBoYXZlIGNoYW5nZWQuIEZvcmdldCB0aGUgcHJl
dmlvdXMKKyAgICAgICAgLy8gZXN0aW1hdGUgYW5kIHVzZSBtdWx0aXBsaWNhdGl2ZSBpbmNyZWFz
ZSB0byBxdWlja2x5IGRpc2NvdmVyIG5ldworICAgICAgICAvLyBjYXBhY2l0eS4KKyAgICAgICAg
bGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy5yZXNldCgpOwogICAgICAgfQotICAgICAgaWYg
KHJhdGVfY29udHJvbF9yZWdpb25fID09IGtSY05lYXJNYXgpIHsKLSAgICAgICAgdWludDMyX3Qg
YWRkaXRpdmVfaW5jcmVhc2VfYnBzID0KLSAgICAgICAgICAgIEFkZGl0aXZlUmF0ZUluY3JlYXNl
KG5vd19tcywgdGltZV9sYXN0X2JpdHJhdGVfY2hhbmdlXyk7Ci0gICAgICAgIG5ld19iaXRyYXRl
X2JwcyArPSBhZGRpdGl2ZV9pbmNyZWFzZV9icHM7CisgICAgICBpZiAobGlua19jYXBhY2l0eV9l
c3RpbWF0ZV9rYnBzXy5oYXNfdmFsdWUoKSkgeworICAgICAgICAvLyBUaGUgbGlua19jYXBhY2l0
eV9lc3RpbWF0ZV9rYnBzXyBpcyByZXNldCBpZiB0aGUgbWVhc3VyZWQgdGhyb3VnaHB1dAorICAg
ICAgICAvLyBpcyB0b28gZmFyIGZyb20gdGhlIGVzdGltYXRlLiBXZSBjYW4gdGhlcmVmb3JlIGFz
c3VtZSB0aGF0IG91ciB0YXJnZXQKKyAgICAgICAgLy8gcmF0ZSBpcyByZWFzb25hYmx5IGNsb3Nl
IHRvIGxpbmsgY2FwYWNpdHkgYW5kIHVzZSBhZGRpdGl2ZSBpbmNyZWFzZS4KKyAgICAgICAgRGF0
YVJhdGUgYWRkaXRpdmVfaW5jcmVhc2UgPQorICAgICAgICAgICAgQWRkaXRpdmVSYXRlSW5jcmVh
c2UoYXRfdGltZSwgdGltZV9sYXN0X2JpdHJhdGVfY2hhbmdlXyk7CisgICAgICAgIG5ld19iaXRy
YXRlICs9IGFkZGl0aXZlX2luY3JlYXNlOwogICAgICAgfSBlbHNlIHsKLSAgICAgICAgdWludDMy
X3QgbXVsdGlwbGljYXRpdmVfaW5jcmVhc2VfYnBzID0gTXVsdGlwbGljYXRpdmVSYXRlSW5jcmVh
c2UoCi0gICAgICAgICAgICBub3dfbXMsIHRpbWVfbGFzdF9iaXRyYXRlX2NoYW5nZV8sIG5ld19i
aXRyYXRlX2Jwcyk7Ci0gICAgICAgIG5ld19iaXRyYXRlX2JwcyArPSBtdWx0aXBsaWNhdGl2ZV9p
bmNyZWFzZV9icHM7CisgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYW4gZXN0aW1hdGUgb2Yg
dGhlIGxpbmsgY2FwYWNpdHksIHVzZSBmYXN0ZXIgcmFtcCB1cAorICAgICAgICAvLyB0byBkaXNj
b3ZlciB0aGUgY2FwYWNpdHkuCisgICAgICAgIERhdGFSYXRlIG11bHRpcGxpY2F0aXZlX2luY3Jl
YXNlID0gTXVsdGlwbGljYXRpdmVSYXRlSW5jcmVhc2UoCisgICAgICAgICAgICBhdF90aW1lLCB0
aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfLCBuZXdfYml0cmF0ZSk7CisgICAgICAgIG5ld19iaXRy
YXRlICs9IG11bHRpcGxpY2F0aXZlX2luY3JlYXNlOwogICAgICAgfQogCi0gICAgICB0aW1lX2xh
c3RfYml0cmF0ZV9jaGFuZ2VfID0gbm93X21zOworICAgICAgdGltZV9sYXN0X2JpdHJhdGVfY2hh
bmdlXyA9IGF0X3RpbWU7CiAgICAgICBicmVhazsKIAogICAgIGNhc2Uga1JjRGVjcmVhc2U6Ci0g
ICAgICAvLyBTZXQgYml0IHJhdGUgdG8gc29tZXRoaW5nIHNsaWdodGx5IGxvd2VyIHRoYW4gbWF4
CisgICAgICAvLyBTZXQgYml0IHJhdGUgdG8gc29tZXRoaW5nIHNsaWdodGx5IGxvd2VyIHRoYW4g
dGhlIG1lYXN1cmVkIHRocm91Z2hwdXQKICAgICAgIC8vIHRvIGdldCByaWQgb2YgYW55IHNlbGYt
aW5kdWNlZCBkZWxheS4KLSAgICAgIG5ld19iaXRyYXRlX2JwcyA9Ci0gICAgICAgICAgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGJldGFfICogZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzICsgMC41KTsK
LSAgICAgIGlmIChuZXdfYml0cmF0ZV9icHMgPiBjdXJyZW50X2JpdHJhdGVfYnBzXykgeworICAg
ICAgbmV3X2JpdHJhdGUgPSBlc3RpbWF0ZWRfdGhyb3VnaHB1dCAqIGJldGFfOworICAgICAgaWYg
KG5ld19iaXRyYXRlID4gY3VycmVudF9iaXRyYXRlXykgewogICAgICAgICAvLyBBdm9pZCBpbmNy
ZWFzaW5nIHRoZSByYXRlIHdoZW4gb3Zlci11c2luZy4KLSAgICAgICAgaWYgKHJhdGVfY29udHJv
bF9yZWdpb25fICE9IGtSY01heFVua25vd24pIHsKLSAgICAgICAgICBuZXdfYml0cmF0ZV9icHMg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oCi0gICAgICAgICAgICAgIGJldGFfICogYXZnX21heF9i
aXRyYXRlX2ticHNfICogMTAwMCArIDAuNWYpOworICAgICAgICBpZiAobGlua19jYXBhY2l0eV9l
c3RpbWF0ZV9rYnBzXy5oYXNfdmFsdWUoKSkgeworICAgICAgICAgIG5ld19iaXRyYXRlID0KKyAg
ICAgICAgICAgICAgRGF0YVJhdGU6OmticHMoYmV0YV8gKiBsaW5rX2NhcGFjaXR5X2VzdGltYXRl
X2ticHNfLnZhbHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIG5ld19iaXRyYXRlX2JwcyA9IHN0
ZDo6bWluKG5ld19iaXRyYXRlX2JwcywgY3VycmVudF9iaXRyYXRlX2Jwc18pOworICAgICAgICBu
ZXdfYml0cmF0ZSA9IHN0ZDo6bWluKG5ld19iaXRyYXRlLCBjdXJyZW50X2JpdHJhdGVfKTsKICAg
ICAgIH0KLSAgICAgIHJhdGVfY29udHJvbF9yZWdpb25fID0ga1JjTmVhck1heDsKIAotICAgICAg
aWYgKGJpdHJhdGVfaXNfaW5pdGlhbGl6ZWRfICYmCi0gICAgICAgICAgZXN0aW1hdGVkX3Rocm91
Z2hwdXRfYnBzIDwgY3VycmVudF9iaXRyYXRlX2Jwc18pIHsKLSAgICAgICAgY29uc3RleHByIGZs
b2F0IGtEZWdyYWRhdGlvbkZhY3RvciA9IDAuOWY7CisgICAgICBpZiAoYml0cmF0ZV9pc19pbml0
aWFsaXplZF8gJiYgZXN0aW1hdGVkX3Rocm91Z2hwdXQgPCBjdXJyZW50X2JpdHJhdGVfKSB7Cisg
ICAgICAgIGNvbnN0ZXhwciBkb3VibGUga0RlZ3JhZGF0aW9uRmFjdG9yID0gMC45OwogICAgICAg
ICBpZiAoc21vb3RoaW5nX2V4cGVyaW1lbnRfICYmCi0gICAgICAgICAgICBuZXdfYml0cmF0ZV9i
cHMgPAotICAgICAgICAgICAgICAgIGtEZWdyYWRhdGlvbkZhY3RvciAqIGJldGFfICogY3VycmVu
dF9iaXRyYXRlX2Jwc18pIHsKKyAgICAgICAgICAgIG5ld19iaXRyYXRlIDwga0RlZ3JhZGF0aW9u
RmFjdG9yICogYmV0YV8gKiBjdXJyZW50X2JpdHJhdGVfKSB7CiAgICAgICAgICAgLy8gSWYgYml0
cmF0ZSBkZWNyZWFzZXMgbW9yZSB0aGFuIGEgbm9ybWFsIGJhY2sgb2ZmIGFmdGVyIG92ZXJ1c2Us
IGl0CiAgICAgICAgICAgLy8gaW5kaWNhdGVzIGEgcmVhbCBuZXR3b3JrIGRlZ3JhZGF0aW9uLiBX
ZSBkbyBub3QgbGV0IHN1Y2ggYSBkZWNyZWFzZQogICAgICAgICAgIC8vIHRvIGRldGVybWluZSB0
aGUgYmFuZHdpZHRoIGVzdGltYXRpb24gcGVyaW9kLgogICAgICAgICAgIGxhc3RfZGVjcmVhc2Vf
ID0gYWJzbDo6bnVsbG9wdDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBsYXN0X2RlY3Jl
YXNlXyA9IGN1cnJlbnRfYml0cmF0ZV9icHNfIC0gbmV3X2JpdHJhdGVfYnBzOworICAgICAgICAg
IGxhc3RfZGVjcmVhc2VfID0gY3VycmVudF9iaXRyYXRlXyAtIG5ld19iaXRyYXRlOwogICAgICAg
ICB9CiAgICAgICB9Ci0gICAgICBpZiAoZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwcyA8Ci0gICAg
ICAgICAgYXZnX21heF9iaXRyYXRlX2ticHNfIC0gMyAqIHN0ZF9tYXhfYml0X3JhdGUpIHsKLSAg
ICAgICAgYXZnX21heF9iaXRyYXRlX2ticHNfID0gLTEuMGY7CisgICAgICBpZiAobGlua19jYXBh
Y2l0eV9lc3RpbWF0ZV9rYnBzXy5oYXNfdmFsdWUoKSAmJgorICAgICAgICAgIGVzdGltYXRlZF90
aHJvdWdocHV0X2ticHMgPCBsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlKCkgLQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyAqIHN0ZF9saW5rX2Nh
cGFjaXR5X2ticHMpIHsKKyAgICAgICAgLy8gVGhlIGN1cnJlbnQgdGhyb3VnaHB1dCBpcyBmYXIg
ZnJvbSB0aGUgZXN0aW1hdGVkIGxpbmsgY2FwYWNpdHkuIENsZWFyCisgICAgICAgIC8vIHRoZSBl
c3RpbWF0ZSB0byBhbGxvdyBhbiBmYXN0IHVwZGF0ZSBpbiBVcGRhdGVMaW5rQ2FwYWNpdHlFc3Rp
bWF0ZS4KKyAgICAgICAgbGlua19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXy5yZXNldCgpOwogICAg
ICAgfQogCiAgICAgICBiaXRyYXRlX2lzX2luaXRpYWxpemVkXyA9IHRydWU7Ci0gICAgICBVcGRh
dGVNYXhUaHJvdWdocHV0RXN0aW1hdGUoZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2Jwcyk7CisgICAg
ICBVcGRhdGVMaW5rQ2FwYWNpdHlFc3RpbWF0ZShlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzKTsK
ICAgICAgIC8vIFN0YXkgb24gaG9sZCB1bnRpbCB0aGUgcGlwZXMgYXJlIGNsZWFyZWQuCiAgICAg
ICByYXRlX2NvbnRyb2xfc3RhdGVfID0ga1JjSG9sZDsKLSAgICAgIHRpbWVfbGFzdF9iaXRyYXRl
X2NoYW5nZV8gPSBub3dfbXM7Ci0gICAgICB0aW1lX2xhc3RfYml0cmF0ZV9kZWNyZWFzZV8gPSBu
b3dfbXM7CisgICAgICB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfID0gYXRfdGltZTsKKyAgICAg
IHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNlXyA9IGF0X3RpbWU7CiAgICAgICBicmVhazsKIAog
ICAgIGRlZmF1bHQ6CiAgICAgICBhc3NlcnQoZmFsc2UpOwogICB9Ci0gIHJldHVybiBDbGFtcEJp
dHJhdGUobmV3X2JpdHJhdGVfYnBzLCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpOworICByZXR1
cm4gQ2xhbXBCaXRyYXRlKG5ld19iaXRyYXRlLCBlc3RpbWF0ZWRfdGhyb3VnaHB1dCk7CiB9CiAK
LXVpbnQzMl90IEFpbWRSYXRlQ29udHJvbDo6Q2xhbXBCaXRyYXRlKAotICAgIHVpbnQzMl90IG5l
d19iaXRyYXRlX2JwcywKLSAgICB1aW50MzJfdCBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHMpIGNv
bnN0IHsKK0RhdGFSYXRlIEFpbWRSYXRlQ29udHJvbDo6Q2xhbXBCaXRyYXRlKERhdGFSYXRlIG5l
d19iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVJh
dGUgZXN0aW1hdGVkX3Rocm91Z2hwdXQpIGNvbnN0IHsKICAgLy8gRG9uJ3QgY2hhbmdlIHRoZSBi
aXQgcmF0ZSBpZiB0aGUgc2VuZCBzaWRlIGlzIHRvbyBmYXIgb2ZmLgogICAvLyBXZSBhbGxvdyBh
IGJpdCBtb3JlIGxhZyBhdCB2ZXJ5IGxvdyByYXRlcyB0byBub3QgdG9vIGVhc2lseSBnZXQgc3R1
Y2sgaWYKICAgLy8gdGhlIGVuY29kZXIgcHJvZHVjZXMgdW5ldmVuIG91dHB1dHMuCi0gIGNvbnN0
IHVpbnQzMl90IG1heF9iaXRyYXRlX2JwcyA9Ci0gICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
MS41ZiAqIGVzdGltYXRlZF90aHJvdWdocHV0X2JwcykgKyAxMDAwMDsKLSAgaWYgKG5ld19iaXRy
YXRlX2JwcyA+IGN1cnJlbnRfYml0cmF0ZV9icHNfICYmCi0gICAgICBuZXdfYml0cmF0ZV9icHMg
PiBtYXhfYml0cmF0ZV9icHMpIHsKLSAgICBuZXdfYml0cmF0ZV9icHMgPSBzdGQ6Om1heChjdXJy
ZW50X2JpdHJhdGVfYnBzXywgbWF4X2JpdHJhdGVfYnBzKTsKKyAgY29uc3QgRGF0YVJhdGUgbWF4
X2JpdHJhdGUgPSAxLjUgKiBlc3RpbWF0ZWRfdGhyb3VnaHB1dCArIERhdGFSYXRlOjprYnBzKDEw
KTsKKyAgaWYgKG5ld19iaXRyYXRlID4gY3VycmVudF9iaXRyYXRlXyAmJiBuZXdfYml0cmF0ZSA+
IG1heF9iaXRyYXRlKSB7CisgICAgbmV3X2JpdHJhdGUgPSBzdGQ6Om1heChjdXJyZW50X2JpdHJh
dGVfLCBtYXhfYml0cmF0ZSk7CiAgIH0KLSAgbmV3X2JpdHJhdGVfYnBzID0gc3RkOjptYXgobmV3
X2JpdHJhdGVfYnBzLCBtaW5fY29uZmlndXJlZF9iaXRyYXRlX2Jwc18pOwotICByZXR1cm4gbmV3
X2JpdHJhdGVfYnBzOworICBuZXdfYml0cmF0ZSA9IHN0ZDo6bWF4KG5ld19iaXRyYXRlLCBtaW5f
Y29uZmlndXJlZF9iaXRyYXRlXyk7CisgIHJldHVybiBuZXdfYml0cmF0ZTsKIH0KIAotdWludDMy
X3QgQWltZFJhdGVDb250cm9sOjpNdWx0aXBsaWNhdGl2ZVJhdGVJbmNyZWFzZSgKLSAgICBpbnQ2
NF90IG5vd19tcywKLSAgICBpbnQ2NF90IGxhc3RfbXMsCi0gICAgdWludDMyX3QgY3VycmVudF9i
aXRyYXRlX2JwcykgY29uc3QgeworRGF0YVJhdGUgQWltZFJhdGVDb250cm9sOjpNdWx0aXBsaWNh
dGl2ZVJhdGVJbmNyZWFzZSgKKyAgICBUaW1lc3RhbXAgYXRfdGltZSwKKyAgICBUaW1lc3RhbXAg
bGFzdF90aW1lLAorICAgIERhdGFSYXRlIGN1cnJlbnRfYml0cmF0ZSkgY29uc3QgewogICBkb3Vi
bGUgYWxwaGEgPSAxLjA4OwotICBpZiAobGFzdF9tcyA+IC0xKSB7Ci0gICAgYXV0byB0aW1lX3Np
bmNlX2xhc3RfdXBkYXRlX21zID0KLSAgICAgICAgcnRjOjpTYWZlTWluPGludDY0X3Q+KG5vd19t
cyAtIGxhc3RfbXMsIDEwMDApOwotICAgIGFscGhhID0gcG93KGFscGhhLCB0aW1lX3NpbmNlX2xh
c3RfdXBkYXRlX21zIC8gMTAwMC4wKTsKKyAgaWYgKGxhc3RfdGltZS5Jc0Zpbml0ZSgpKSB7Cisg
ICAgYXV0byB0aW1lX3NpbmNlX2xhc3RfdXBkYXRlID0gYXRfdGltZSAtIGxhc3RfdGltZTsKKyAg
ICBhbHBoYSA9IHBvdyhhbHBoYSwgc3RkOjptaW4odGltZV9zaW5jZV9sYXN0X3VwZGF0ZS5zZWNv
bmRzPGRvdWJsZT4oKSwgMS4wKSk7CiAgIH0KLSAgdWludDMyX3QgbXVsdGlwbGljYXRpdmVfaW5j
cmVhc2VfYnBzID0KLSAgICAgIHN0ZDo6bWF4KGN1cnJlbnRfYml0cmF0ZV9icHMgKiAoYWxwaGEg
LSAxLjApLCAxMDAwLjApOwotICByZXR1cm4gbXVsdGlwbGljYXRpdmVfaW5jcmVhc2VfYnBzOwor
ICBEYXRhUmF0ZSBtdWx0aXBsaWNhdGl2ZV9pbmNyZWFzZSA9CisgICAgICBzdGQ6Om1heChjdXJy
ZW50X2JpdHJhdGUgKiAoYWxwaGEgLSAxLjApLCBEYXRhUmF0ZTo6YnBzKDEwMDApKTsKKyAgcmV0
dXJuIG11bHRpcGxpY2F0aXZlX2luY3JlYXNlOwogfQogCi11aW50MzJfdCBBaW1kUmF0ZUNvbnRy
b2w6OkFkZGl0aXZlUmF0ZUluY3JlYXNlKGludDY0X3Qgbm93X21zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGxhc3RfbXMpIGNvbnN0IHsK
LSAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90Pigobm93X21zIC0gbGFzdF9tcykgKgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHMoKSAv
IDEwMDApOworRGF0YVJhdGUgQWltZFJhdGVDb250cm9sOjpBZGRpdGl2ZVJhdGVJbmNyZWFzZShU
aW1lc3RhbXAgYXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGltZXN0YW1wIGxhc3RfdGltZSkgY29uc3QgeworICBkb3VibGUgdGltZV9wZXJp
b2Rfc2Vjb25kcyA9IChhdF90aW1lIC0gbGFzdF90aW1lKS5zZWNvbmRzPGRvdWJsZT4oKTsKKyAg
ZG91YmxlIGRhdGFfcmF0ZV9pbmNyZWFzZV9icHMgPQorICAgICAgR2V0TmVhck1heEluY3JlYXNl
UmF0ZUJwc1BlclNlY29uZCgpICogdGltZV9wZXJpb2Rfc2Vjb25kczsKKyAgcmV0dXJuIERhdGFS
YXRlOjpicHMoZGF0YV9yYXRlX2luY3JlYXNlX2Jwcyk7CiB9CiAKLXZvaWQgQWltZFJhdGVDb250
cm9sOjpVcGRhdGVNYXhUaHJvdWdocHV0RXN0aW1hdGUoCi0gICAgZmxvYXQgZXN0aW1hdGVkX3Ro
cm91Z2hwdXRfa2JwcykgewotICBjb25zdCBmbG9hdCBhbHBoYSA9IDAuMDVmOwotICBpZiAoYXZn
X21heF9iaXRyYXRlX2ticHNfID09IC0xLjBmKSB7Ci0gICAgYXZnX21heF9iaXRyYXRlX2ticHNf
ID0gZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwczsKK3ZvaWQgQWltZFJhdGVDb250cm9sOjpVcGRh
dGVMaW5rQ2FwYWNpdHlFc3RpbWF0ZSgKKyAgICBkb3VibGUgZXN0aW1hdGVkX3Rocm91Z2hwdXRf
a2JwcykgeworICBjb25zdCBkb3VibGUgYWxwaGEgPSAwLjA1OworICBpZiAoIWxpbmtfY2FwYWNp
dHlfZXN0aW1hdGVfa2Jwc18uaGFzX3ZhbHVlKCkpIHsKKyAgICBsaW5rX2NhcGFjaXR5X2VzdGlt
YXRlX2ticHNfID0gZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwczsKICAgfSBlbHNlIHsKLSAgICBh
dmdfbWF4X2JpdHJhdGVfa2Jwc18gPQotICAgICAgICAoMSAtIGFscGhhKSAqIGF2Z19tYXhfYml0
cmF0ZV9rYnBzXyArIGFscGhhICogZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwczsKKyAgICBsaW5r
X2NhcGFjaXR5X2VzdGltYXRlX2ticHNfID0KKyAgICAgICAgKDEgLSBhbHBoYSkgKiBsaW5rX2Nh
cGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlKCkgKworICAgICAgICBhbHBoYSAqIGVzdGltYXRl
ZF90aHJvdWdocHV0X2ticHM7CiAgIH0KLSAgLy8gRXN0aW1hdGUgdGhlIG1heCBiaXQgcmF0ZSB2
YXJpYW5jZSBhbmQgbm9ybWFsaXplIHRoZSB2YXJpYW5jZQotICAvLyB3aXRoIHRoZSBhdmVyYWdl
IG1heCBiaXQgcmF0ZS4KLSAgY29uc3QgZmxvYXQgbm9ybSA9IHN0ZDo6bWF4KGF2Z19tYXhfYml0
cmF0ZV9rYnBzXywgMS4wZik7Ci0gIHZhcl9tYXhfYml0cmF0ZV9rYnBzXyA9Ci0gICAgICAoMSAt
IGFscGhhKSAqIHZhcl9tYXhfYml0cmF0ZV9rYnBzXyArCi0gICAgICBhbHBoYSAqIChhdmdfbWF4
X2JpdHJhdGVfa2Jwc18gLSBlc3RpbWF0ZWRfdGhyb3VnaHB1dF9rYnBzKSAqCi0gICAgICAgICAg
KGF2Z19tYXhfYml0cmF0ZV9rYnBzXyAtIGVzdGltYXRlZF90aHJvdWdocHV0X2ticHMpIC8gbm9y
bTsKKyAgLy8gRXN0aW1hdGUgdGhlIHZhcmlhbmNlIG9mIHRoZSBsaW5rIGNhcGFjaXR5IGVzdGlt
YXRlIGFuZCBub3JtYWxpemUgdGhlCisgIC8vIHZhcmlhbmNlIHdpdGggdGhlIGxpbmsgY2FwYWNp
dHkgZXN0aW1hdGUuCisgIGNvbnN0IGRvdWJsZSBub3JtID0gc3RkOjptYXgobGlua19jYXBhY2l0
eV9lc3RpbWF0ZV9rYnBzXy52YWx1ZSgpLCAxLjApOworICB2YXJfbGlua19jYXBhY2l0eV9lc3Rp
bWF0ZV9rYnBzXyA9CisgICAgICAoMSAtIGFscGhhKSAqIHZhcl9saW5rX2NhcGFjaXR5X2VzdGlt
YXRlX2ticHNfICsKKyAgICAgIGFscGhhICoKKyAgICAgICAgICAobGlua19jYXBhY2l0eV9lc3Rp
bWF0ZV9rYnBzXy52YWx1ZSgpIC0gZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2JwcykgKgorICAgICAg
ICAgIChsaW5rX2NhcGFjaXR5X2VzdGltYXRlX2ticHNfLnZhbHVlKCkgLSBlc3RpbWF0ZWRfdGhy
b3VnaHB1dF9rYnBzKSAvCisgICAgICAgICAgbm9ybTsKICAgLy8gMC40IH49IDE0IGtiaXQvcyBh
dCA1MDAga2JpdC9zCi0gIGlmICh2YXJfbWF4X2JpdHJhdGVfa2Jwc18gPCAwLjRmKSB7Ci0gICAg
dmFyX21heF9iaXRyYXRlX2ticHNfID0gMC40ZjsKKyAgaWYgKHZhcl9saW5rX2NhcGFjaXR5X2Vz
dGltYXRlX2ticHNfIDwgMC40KSB7CisgICAgdmFyX2xpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jw
c18gPSAwLjQ7CiAgIH0KLSAgLy8gMi41ZiB+PSAzNSBrYml0L3MgYXQgNTAwIGtiaXQvcwotICBp
ZiAodmFyX21heF9iaXRyYXRlX2ticHNfID4gMi41ZikgewotICAgIHZhcl9tYXhfYml0cmF0ZV9r
YnBzXyA9IDIuNWY7CisgIC8vIDIuNSB+PSAzNSBrYml0L3MgYXQgNTAwIGtiaXQvcworICBpZiAo
dmFyX2xpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc18gPiAyLjUpIHsKKyAgICB2YXJfbGlua19j
YXBhY2l0eV9lc3RpbWF0ZV9rYnBzXyA9IDIuNTsKICAgfQogfQogCiB2b2lkIEFpbWRSYXRlQ29u
dHJvbDo6Q2hhbmdlU3RhdGUoY29uc3QgUmF0ZUNvbnRyb2xJbnB1dCYgaW5wdXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBub3dfbXMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSkgewogICBzd2l0Y2ggKGlu
cHV0LmJ3X3N0YXRlKSB7CiAgICAgY2FzZSBCYW5kd2lkdGhVc2FnZTo6a0J3Tm9ybWFsOgogICAg
ICAgaWYgKHJhdGVfY29udHJvbF9zdGF0ZV8gPT0ga1JjSG9sZCkgewotICAgICAgICB0aW1lX2xh
c3RfYml0cmF0ZV9jaGFuZ2VfID0gbm93X21zOworICAgICAgICB0aW1lX2xhc3RfYml0cmF0ZV9j
aGFuZ2VfID0gYXRfdGltZTsKICAgICAgICAgcmF0ZV9jb250cm9sX3N0YXRlXyA9IGtSY0luY3Jl
YXNlOwogICAgICAgfQogICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRv
ci9haW1kX3JhdGVfY29udHJvbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRy
b2wuaAppbmRleCAyYTNmNzFkOThhZThhNzU1OGExNTJmZDc1NGViODE3YjQxOTYwOTQ2Li5hZGI5
NTlhMTRiOWMzOGIwNThlNWUwNjFhZmI5ZWRhY2U1ZmZiZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2Fp
bWRfcmF0ZV9jb250cm9sLmgKQEAgLTExLDggKzExLDEzIEBACiAjaWZuZGVmIE1PRFVMRVNfUkVN
T1RFX0JJVFJBVEVfRVNUSU1BVE9SX0FJTURfUkFURV9DT05UUk9MX0hfCiAjZGVmaW5lIE1PRFVM
RVNfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX0FJTURfUkFURV9DT05UUk9MX0hfCiAKKyNpbmNs
dWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL2J3ZV9kZWZpbmVz
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorCisjaW5jbHVkZSAi
YXBpL3VuaXRzL2RhdGFfcmF0ZS5oIgorI2luY2x1ZGUgImFwaS91bml0cy90aW1lc3RhbXAuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTMwLDI4ICszNSwyOCBAQCBjbGFzcyBBaW1kUmF0
ZUNvbnRyb2wgewogICAvLyBlaXRoZXIgaWYgaXQgaGFzIGJlZW4gZXhwbGljaXRseSBzZXQgdmlh
IFNldFN0YXJ0Qml0cmF0ZS9TZXRFc3RpbWF0ZSwgb3IgaWYKICAgLy8gd2UgaGF2ZSBtZWFzdXJl
ZCBhIHRocm91Z2hwdXQuCiAgIGJvb2wgVmFsaWRFc3RpbWF0ZSgpIGNvbnN0OwotICB2b2lkIFNl
dFN0YXJ0Qml0cmF0ZShpbnQgc3RhcnRfYml0cmF0ZV9icHMpOwotICB2b2lkIFNldE1pbkJpdHJh
dGUoaW50IG1pbl9iaXRyYXRlX2Jwcyk7Ci0gIGludDY0X3QgR2V0RmVlZGJhY2tJbnRlcnZhbCgp
IGNvbnN0OworICB2b2lkIFNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZSBzdGFydF9iaXRyYXRlKTsK
KyAgdm9pZCBTZXRNaW5CaXRyYXRlKERhdGFSYXRlIG1pbl9iaXRyYXRlKTsKKyAgVGltZURlbHRh
IEdldEZlZWRiYWNrSW50ZXJ2YWwoKSBjb25zdDsKIAogICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGJpdHJhdGUgZXN0aW1hdGUgaGFzbid0IGJlZW4gY2hhbmdlZCBmb3IgbW9yZSB0aGFuCiAgIC8v
IGFuIFJUVCwgb3IgaWYgdGhlIGVzdGltYXRlZF90aHJvdWdocHV0IGlzIGxlc3MgdGhhbiBoYWxm
IG9mIHRoZSBjdXJyZW50CiAgIC8vIGVzdGltYXRlLiBTaG91bGQgYmUgdXNlZCB0byBkZWNpZGUg
aWYgd2Ugc2hvdWxkIHJlZHVjZSB0aGUgcmF0ZSBmdXJ0aGVyCiAgIC8vIHdoZW4gb3Zlci11c2lu
Zy4KLSAgYm9vbCBUaW1lVG9SZWR1Y2VGdXJ0aGVyKGludDY0X3Qgbm93X21zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgZXN0aW1hdGVkX3Rocm91Z2hwdXRfYnBzKSBjb25z
dDsKKyAgYm9vbCBUaW1lVG9SZWR1Y2VGdXJ0aGVyKFRpbWVzdGFtcCBhdF90aW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGF0YVJhdGUgZXN0aW1hdGVkX3Rocm91Z2hwdXQpIGNvbnN0
OwogICAvLyBBcyBhYm92ZS4gVG8gYmUgdXNlZCBpZiBvdmVydXNpbmcgYmVmb3JlIHdlIGhhdmUg
bWVhc3VyZWQgYSB0aHJvdWdocHV0LgotICBib29sIEluaXRpYWxUaW1lVG9SZWR1Y2VGdXJ0aGVy
KGludDY0X3Qgbm93X21zKSBjb25zdDsKKyAgYm9vbCBJbml0aWFsVGltZVRvUmVkdWNlRnVydGhl
cihUaW1lc3RhbXAgYXRfdGltZSkgY29uc3Q7CiAKLSAgdWludDMyX3QgTGF0ZXN0RXN0aW1hdGUo
KSBjb25zdDsKLSAgdm9pZCBTZXRSdHQoaW50NjRfdCBydHQpOwotICB1aW50MzJfdCBVcGRhdGUo
Y29uc3QgUmF0ZUNvbnRyb2xJbnB1dCogaW5wdXQsIGludDY0X3Qgbm93X21zKTsKLSAgdm9pZCBT
ZXRFc3RpbWF0ZShpbnQgYml0cmF0ZV9icHMsIGludDY0X3Qgbm93X21zKTsKKyAgRGF0YVJhdGUg
TGF0ZXN0RXN0aW1hdGUoKSBjb25zdDsKKyAgdm9pZCBTZXRSdHQoVGltZURlbHRhIHJ0dCk7Cisg
IERhdGFSYXRlIFVwZGF0ZShjb25zdCBSYXRlQ29udHJvbElucHV0KiBpbnB1dCwgVGltZXN0YW1w
IGF0X3RpbWUpOworICB2b2lkIFNldEVzdGltYXRlKERhdGFSYXRlIGJpdHJhdGUsIFRpbWVzdGFt
cCBhdF90aW1lKTsKIAogICAvLyBSZXR1cm5zIHRoZSBpbmNyZWFzZSByYXRlIHdoZW4gdXNlZCBi
YW5kd2lkdGggaXMgbmVhciB0aGUgbGluayBjYXBhY2l0eS4KLSAgaW50IEdldE5lYXJNYXhJbmNy
ZWFzZVJhdGVCcHMoKSBjb25zdDsKKyAgZG91YmxlIEdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQ
ZXJTZWNvbmQoKSBjb25zdDsKICAgLy8gUmV0dXJucyB0aGUgZXhwZWN0ZWQgdGltZSBiZXR3ZWVu
IG92ZXJ1c2Ugc2lnbmFscyAoYXNzdW1pbmcgc3RlYWR5IHN0YXRlKS4KLSAgaW50IEdldEV4cGVj
dGVkQmFuZHdpZHRoUGVyaW9kTXMoKSBjb25zdDsKKyAgVGltZURlbHRhIEdldEV4cGVjdGVkQmFu
ZHdpZHRoUGVyaW9kKCkgY29uc3Q7CiAKICBwcml2YXRlOgogICBmcmllbmQgY2xhc3MgR29vZ0Nj
U3RhdGVQcmludGVyOwpAQCAtNjIsNDEgKzY3LDQwIEBAIGNsYXNzIEFpbWRSYXRlQ29udHJvbCB7
CiAgIC8vIGluIHRoZSAiZGVjcmVhc2UiIHN0YXRlIHRoZSBiaXRyYXRlIHdpbGwgYmUgZGVjcmVh
c2VkIHRvIHNsaWdodGx5IGJlbG93IHRoZQogICAvLyBjdXJyZW50IHRocm91Z2hwdXQuIFdoZW4g
aW4gdGhlICJob2xkIiBzdGF0ZSB0aGUgYml0cmF0ZSB3aWxsIGJlIGtlcHQKICAgLy8gY29uc3Rh
bnQgdG8gYWxsb3cgYnVpbHQgdXAgcXVldWVzIHRvIGRyYWluLgotICB1aW50MzJfdCBDaGFuZ2VC
aXRyYXRlKHVpbnQzMl90IGN1cnJlbnRfYml0cmF0ZSwKKyAgRGF0YVJhdGUgQ2hhbmdlQml0cmF0
ZShEYXRhUmF0ZSBjdXJyZW50X2JpdHJhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUmF0ZUNvbnRyb2xJbnB1dCYgaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCBub3dfbXMpOwotICAvLyBDbGFtcHMgbmV3X2JpdHJhdGVfYnBzIHRvIHdpdGhpbiB0aGUg
Y29uZmlndXJlZCBtaW4gYml0cmF0ZSBhbmQgYSBsaW5lYXIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBUaW1lc3RhbXAgYXRfdGltZSk7CisgIC8vIENsYW1wcyBuZXdfYml0cmF0ZSB0byB3aXRo
aW4gdGhlIGNvbmZpZ3VyZWQgbWluIGJpdHJhdGUgYW5kIGEgbGluZWFyCiAgIC8vIGZ1bmN0aW9u
IG9mIHRoZSB0aHJvdWdocHV0LCBzbyB0aGF0IHRoZSBuZXcgYml0cmF0ZSBjYW4ndCBncm93IHRv
bwogICAvLyBsYXJnZSBjb21wYXJlZCB0byB0aGUgYml0cmF0ZSBhY3R1YWxseSBiZWluZyByZWNl
aXZlZCBieSB0aGUgb3RoZXIgZW5kLgotICB1aW50MzJfdCBDbGFtcEJpdHJhdGUodWludDMyX3Qg
bmV3X2JpdHJhdGVfYnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZXN0aW1h
dGVkX3Rocm91Z2hwdXRfYnBzKSBjb25zdDsKLSAgdWludDMyX3QgTXVsdGlwbGljYXRpdmVSYXRl
SW5jcmVhc2UoaW50NjRfdCBub3dfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDY0X3QgbGFzdF9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgY3VycmVudF9iaXRyYXRlX2JwcykgY29uc3Q7Ci0gIHVpbnQzMl90IEFk
ZGl0aXZlUmF0ZUluY3JlYXNlKGludDY0X3Qgbm93X21zLCBpbnQ2NF90IGxhc3RfbXMpIGNvbnN0
OwotICB2b2lkIFVwZGF0ZUNoYW5nZVBlcmlvZChpbnQ2NF90IG5vd19tcyk7Ci0gIHZvaWQgVXBk
YXRlTWF4VGhyb3VnaHB1dEVzdGltYXRlKGZsb2F0IGVzdGltYXRlZF90aHJvdWdocHV0X2ticHMp
OwotICB2b2lkIENoYW5nZVN0YXRlKGNvbnN0IFJhdGVDb250cm9sSW5wdXQmIGlucHV0LCBpbnQ2
NF90IG5vd19tcyk7CisgIERhdGFSYXRlIENsYW1wQml0cmF0ZShEYXRhUmF0ZSBuZXdfYml0cmF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRlIGVzdGltYXRlZF90aHJvdWdocHV0
KSBjb25zdDsKKyAgRGF0YVJhdGUgTXVsdGlwbGljYXRpdmVSYXRlSW5jcmVhc2UoVGltZXN0YW1w
IGF0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFt
cCBsYXN0X21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhUmF0
ZSBjdXJyZW50X2JpdHJhdGUpIGNvbnN0OworICBEYXRhUmF0ZSBBZGRpdGl2ZVJhdGVJbmNyZWFz
ZShUaW1lc3RhbXAgYXRfdGltZSwgVGltZXN0YW1wIGxhc3RfdGltZSkgY29uc3Q7CisgIHZvaWQg
VXBkYXRlQ2hhbmdlUGVyaW9kKFRpbWVzdGFtcCBhdF90aW1lKTsKKyAgdm9pZCBVcGRhdGVMaW5r
Q2FwYWNpdHlFc3RpbWF0ZShkb3VibGUgZXN0aW1hdGVkX3Rocm91Z2hwdXRfa2Jwcyk7CisgIHZv
aWQgQ2hhbmdlU3RhdGUoY29uc3QgUmF0ZUNvbnRyb2xJbnB1dCYgaW5wdXQsIFRpbWVzdGFtcCBh
dF90aW1lKTsKIAotICB1aW50MzJfdCBtaW5fY29uZmlndXJlZF9iaXRyYXRlX2Jwc187Ci0gIHVp
bnQzMl90IG1heF9jb25maWd1cmVkX2JpdHJhdGVfYnBzXzsKLSAgdWludDMyX3QgY3VycmVudF9i
aXRyYXRlX2Jwc187Ci0gIHVpbnQzMl90IGxhdGVzdF9lc3RpbWF0ZWRfdGhyb3VnaHB1dF9icHNf
OwotICBmbG9hdCBhdmdfbWF4X2JpdHJhdGVfa2Jwc187Ci0gIGZsb2F0IHZhcl9tYXhfYml0cmF0
ZV9rYnBzXzsKKyAgRGF0YVJhdGUgbWluX2NvbmZpZ3VyZWRfYml0cmF0ZV87CisgIERhdGFSYXRl
IG1heF9jb25maWd1cmVkX2JpdHJhdGVfOworICBEYXRhUmF0ZSBjdXJyZW50X2JpdHJhdGVfOwor
ICBEYXRhUmF0ZSBsYXRlc3RfZXN0aW1hdGVkX3Rocm91Z2hwdXRfOworICBhYnNsOjpvcHRpb25h
bDxkb3VibGU+IGxpbmtfY2FwYWNpdHlfZXN0aW1hdGVfa2Jwc187CisgIGRvdWJsZSB2YXJfbGlu
a19jYXBhY2l0eV9lc3RpbWF0ZV9rYnBzXzsKICAgUmF0ZUNvbnRyb2xTdGF0ZSByYXRlX2NvbnRy
b2xfc3RhdGVfOwotICBSYXRlQ29udHJvbFJlZ2lvbiByYXRlX2NvbnRyb2xfcmVnaW9uXzsKLSAg
aW50NjRfdCB0aW1lX2xhc3RfYml0cmF0ZV9jaGFuZ2VfOwotICBpbnQ2NF90IHRpbWVfbGFzdF9i
aXRyYXRlX2RlY3JlYXNlXzsKLSAgaW50NjRfdCB0aW1lX2ZpcnN0X3Rocm91Z2hwdXRfZXN0aW1h
dGVfOworICBUaW1lc3RhbXAgdGltZV9sYXN0X2JpdHJhdGVfY2hhbmdlXzsKKyAgVGltZXN0YW1w
IHRpbWVfbGFzdF9iaXRyYXRlX2RlY3JlYXNlXzsKKyAgVGltZXN0YW1wIHRpbWVfZmlyc3RfdGhy
b3VnaHB1dF9lc3RpbWF0ZV87CiAgIGJvb2wgYml0cmF0ZV9pc19pbml0aWFsaXplZF87Ci0gIGZs
b2F0IGJldGFfOwotICBpbnQ2NF90IHJ0dF87CisgIGRvdWJsZSBiZXRhXzsKKyAgVGltZURlbHRh
IHJ0dF87CiAgIGNvbnN0IGJvb2wgaW5fZXhwZXJpbWVudF87CiAgIGNvbnN0IGJvb2wgc21vb3Ro
aW5nX2V4cGVyaW1lbnRfOwogICBjb25zdCBib29sIGluX2luaXRpYWxfYmFja29mZl9pbnRlcnZh
bF9leHBlcmltZW50XzsKLSAgaW50NjRfdCBpbml0aWFsX2JhY2tvZmZfaW50ZXJ2YWxfbXNfOwot
ICBhYnNsOjpvcHRpb25hbDxpbnQ+IGxhc3RfZGVjcmVhc2VfOworICBUaW1lRGVsdGEgaW5pdGlh
bF9iYWNrb2ZmX2ludGVydmFsXzsKKyAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGxhc3RfZGVj
cmVhc2VfOwogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0
ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2NvbnRyb2xfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci9haW1kX3JhdGVfY29udHJvbF91bml0dGVzdC5jYwppbmRleCA1Y2RlN2NlZGFmNDkyZGJk
YTVhM2YzYmIwZjMwZDdlMTFlNWUwMDcyLi40YmVjOWU4ZmY1MDA3ODFkMjUzZjVjZDM0NzVhNjI3
YjIwMmQ0YjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9haW1kX3JhdGVfY29udHJv
bF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9haW1kX3JhdGVfY29udHJvbF91
bml0dGVzdC5jYwpAQCAtNDAsMTMgKzQwLDI2IEBAIEFpbWRSYXRlQ29udHJvbFN0YXRlcyBDcmVh
dGVBaW1kUmF0ZUNvbnRyb2xTdGF0ZXMoKSB7CiAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2sucmVz
ZXQobmV3IFNpbXVsYXRlZENsb2NrKGtDbG9ja0luaXRpYWxUaW1lKSk7CiAgIHJldHVybiBzdGF0
ZXM7CiB9Ci0KK2Fic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBPcHRpb25hbFJhdGVGcm9tT3B0aW9u
YWxCcHMoCisgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBiaXRyYXRlX2JwcykgeworICBpZiAoYml0
cmF0ZV9icHMpIHsKKyAgICByZXR1cm4gRGF0YVJhdGU6OmJwcygqYml0cmF0ZV9icHMpOworICB9
IGVsc2UgeworICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworICB9Cit9CiB2b2lkIFVwZGF0ZVJh
dGVDb250cm9sKGNvbnN0IEFpbWRSYXRlQ29udHJvbFN0YXRlcyYgc3RhdGVzLAogICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBCYW5kd2lkdGhVc2FnZSYgYmFuZHdpZHRoX3VzYWdlLAogICAg
ICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4gdGhyb3VnaHB1dF9l
c3RpbWF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBub3dfbXMpIHsKLSAgUmF0
ZUNvbnRyb2xJbnB1dCBpbnB1dChiYW5kd2lkdGhfdXNhZ2UsIHRocm91Z2hwdXRfZXN0aW1hdGUp
OwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlVwZGF0ZSgmaW5wdXQsIG5vd19tcyk7Cisg
IFJhdGVDb250cm9sSW5wdXQgaW5wdXQoYmFuZHdpZHRoX3VzYWdlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIE9wdGlvbmFsUmF0ZUZyb21PcHRpb25hbEJwcyh0aHJvdWdocHV0X2VzdGltYXRl
KSk7CisgIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+VXBkYXRlKCZpbnB1dCwgVGltZXN0YW1w
Ojptcyhub3dfbXMpKTsKK30KK3ZvaWQgU2V0RXN0aW1hdGUoY29uc3QgQWltZFJhdGVDb250cm9s
U3RhdGVzJiBzdGF0ZXMsIGludCBiaXRyYXRlX2JwcykgeworICBzdGF0ZXMuYWltZF9yYXRlX2Nv
bnRyb2wtPlNldEVzdGltYXRlKAorICAgICAgRGF0YVJhdGU6OmJwcyhiaXRyYXRlX2JwcyksCisg
ICAgICBUaW1lc3RhbXA6Om1zKHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vj
b25kcygpKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZQpAQCAtNTQsNDAgKzY3LDQwIEBAIHZvaWQg
VXBkYXRlUmF0ZUNvbnRyb2woY29uc3QgQWltZFJhdGVDb250cm9sU3RhdGVzJiBzdGF0ZXMsCiBU
RVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIE1pbk5lYXJNYXhJbmNyZWFzZVJhdGVPbkxvd0JhbmR3
aXRoKSB7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAg
IGNvbnN0ZXhwciBpbnQga0JpdHJhdGUgPSAzMDAwMDsKLSAgc3RhdGVzLmFpbWRfcmF0ZV9jb250
cm9sLT5TZXRFc3RpbWF0ZSgKLSAgICAgIGtCaXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2Nr
LT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Ci0gIEVYUEVDVF9FUSg0MDAwLCBzdGF0ZXMuYWltZF9y
YXRlX2NvbnRyb2wtPkdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHMoKSk7CisgIFNldEVzdGltYXRl
KHN0YXRlcywga0JpdHJhdGUpOworICBFWFBFQ1RfRVEoNDAwMCwKKyAgICAgICAgICAgIHN0YXRl
cy5haW1kX3JhdGVfY29udHJvbC0+R2V0TmVhck1heEluY3JlYXNlUmF0ZUJwc1BlclNlY29uZCgp
KTsKIH0KIAogVEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBOZWFyTWF4SW5jcmVhc2VSYXRlSXM1
a2Jwc09uOTBrYnBzQW5kMjAwbXNSdHQpIHsKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVBaW1kUmF0
ZUNvbnRyb2xTdGF0ZXMoKTsKICAgY29uc3RleHByIGludCBrQml0cmF0ZSA9IDkwMDAwOwotICBz
dGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAgICAga0JpdHJhdGUsIHN0
YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKLSAgRVhQRUNUX0VR
KDUwMDAsIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0TmVhck1heEluY3JlYXNlUmF0ZUJw
cygpKTsKKyAgU2V0RXN0aW1hdGUoc3RhdGVzLCBrQml0cmF0ZSk7CisgIEVYUEVDVF9FUSg1MDAw
LAorICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXROZWFyTWF4SW5jcmVh
c2VSYXRlQnBzUGVyU2Vjb25kKCkpOwogfQogCiBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIE5l
YXJNYXhJbmNyZWFzZVJhdGVJczVrYnBzT242MGticHNBbmQxMDBtc1J0dCkgewogICBhdXRvIHN0
YXRlcyA9IENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0YXRlcygpOwogICBjb25zdGV4cHIgaW50IGtC
aXRyYXRlID0gNjAwMDA7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUo
Ci0gICAgICBrQml0cmF0ZSwgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNv
bmRzKCkpOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldFJ0dCgxMDApOwotICBFWFBF
Q1RfRVEoNTAwMCwgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXROZWFyTWF4SW5jcmVhc2VS
YXRlQnBzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0ZXMsIGtCaXRyYXRlKTsKKyAgc3RhdGVzLmFp
bWRfcmF0ZV9jb250cm9sLT5TZXRSdHQoVGltZURlbHRhOjptcygxMDApKTsKKyAgRVhQRUNUX0VR
KDUwMDAsCisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldE5lYXJNYXhJ
bmNyZWFzZVJhdGVCcHNQZXJTZWNvbmQoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9sVGVz
dCwgR2V0SW5jcmVhc2VSYXRlQW5kQmFuZHdpZHRoUGVyaW9kKSB7CiAgIC8vIFNtb290aGluZyBl
eHBlcmltZW50IGRpc2FibGVkCiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9s
U3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0JpdHJhdGUgPSAzMDAwMDA7Ci0gIHN0YXRlcy5h
aW1kX3JhdGVfY29udHJvbC0+U2V0RXN0aW1hdGUoCi0gICAgICBrQml0cmF0ZSwgc3RhdGVzLnNp
bXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0
ZXMsIGtCaXRyYXRlKTsKICAgVXBkYXRlUmF0ZUNvbnRyb2woc3RhdGVzLCBCYW5kd2lkdGhVc2Fn
ZTo6a0J3T3ZlcnVzaW5nLCBrQml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgc3RhdGVzLnNp
bXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwotICBFWFBFQ1RfTkVBUigxNDAw
MCwgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzKCks
CisgIEVYUEVDVF9ORUFSKDE0MDAwLAorICAgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2Nv
bnRyb2wtPkdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJTZWNvbmQoKSwKICAgICAgICAgICAg
ICAgMTAwMCk7CiAgIEVYUEVDVF9FUShrRGVmYXVsdFBlcmlvZE1zTm9TbW9vdGhpbmdFeHAsCi0g
ICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRo
UGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4
cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9s
VGVzdCwgR2V0SW5jcmVhc2VSYXRlQW5kQmFuZHdpZHRoUGVyaW9kU21vb3RoaW5nRXhwKSB7CkBA
IC05NSwyMSArMTA4LDIwIEBAIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgR2V0SW5jcmVhc2VS
YXRlQW5kQmFuZHdpZHRoUGVyaW9kU21vb3RoaW5nRXhwKSB7CiAgIHRlc3Q6OlNjb3BlZEZpZWxk
VHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscyhrU21vb3RoaW5nRXhwRmllbGRUcmlhbCk7CiAg
IGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhw
ciBpbnQga0JpdHJhdGUgPSAzMDAwMDA7Ci0gIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0
RXN0aW1hdGUoCi0gICAgICBrQml0cmF0ZSwgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUlu
TWlsbGlzZWNvbmRzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0ZXMsIGtCaXRyYXRlKTsKICAgVXBk
YXRlUmF0ZUNvbnRyb2woc3RhdGVzLCBCYW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5nLCBrQml0
cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUlu
TWlsbGlzZWNvbmRzKCkpOwotICBFWFBFQ1RfTkVBUigxNDAwMCwgc3RhdGVzLmFpbWRfcmF0ZV9j
b250cm9sLT5HZXROZWFyTWF4SW5jcmVhc2VSYXRlQnBzKCksCisgIEVYUEVDVF9ORUFSKDE0MDAw
LAorICAgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldE5lYXJNYXhJbmNy
ZWFzZVJhdGVCcHNQZXJTZWNvbmQoKSwKICAgICAgICAgICAgICAgMTAwMCk7CiAgIEVYUEVDVF9F
UShrTWluQndlUGVyaW9kTXNTbW9vdGhpbmdFeHAsCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9y
YXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAg
ICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCku
bXMoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgQndlTGltaXRlZEJ5QWNrZWRC
aXRyYXRlKSB7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7
CiAgIGNvbnN0ZXhwciBpbnQga0Fja2VkQml0cmF0ZSA9IDEwMDAwOwotICBzdGF0ZXMuYWltZF9y
YXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAgICAga0Fja2VkQml0cmF0ZSwgc3RhdGVzLnNp
bXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0
ZXMsIGtBY2tlZEJpdHJhdGUpOwogICB3aGlsZSAoc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGlt
ZUluTWlsbGlzZWNvbmRzKCkgLSBrQ2xvY2tJbml0aWFsVGltZSA8CiAgICAgICAgICAyMDAwMCkg
ewogICAgIFVwZGF0ZVJhdGVDb250cm9sKHN0YXRlcywgQmFuZHdpZHRoVXNhZ2U6OmtCd05vcm1h
bCwga0Fja2VkQml0cmF0ZSwKQEAgLTExOCwxNCArMTMwLDEzIEBAIFRFU1QoQWltZFJhdGVDb250
cm9sVGVzdCwgQndlTGltaXRlZEJ5QWNrZWRCaXRyYXRlKSB7CiAgIH0KICAgQVNTRVJUX1RSVUUo
c3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5WYWxpZEVzdGltYXRlKCkpOwogICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEuNSAqIGtBY2tlZEJpdHJhdGUgKyAxMDAwMCksCi0gICAg
ICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkxhdGVzdEVzdGltYXRlKCkpOworICAg
ICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5MYXRlc3RFc3RpbWF0ZSgpLmJwcygp
KTsKIH0KIAogVEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBCd2VOb3RMaW1pdGVkQnlEZWNyZWFz
aW5nQWNrZWRCaXRyYXRlKSB7CiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9s
U3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0Fja2VkQml0cmF0ZSA9IDEwMDAwMDsKLSAgc3Rh
dGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRFc3RpbWF0ZSgKLSAgICAgIGtBY2tlZEJpdHJhdGUs
IHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgU2V0RXN0
aW1hdGUoc3RhdGVzLCBrQWNrZWRCaXRyYXRlKTsKICAgd2hpbGUgKHN0YXRlcy5zaW11bGF0ZWRf
Y2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpIC0ga0Nsb2NrSW5pdGlhbFRpbWUgPAogICAgICAg
ICAgMjAwMDApIHsKICAgICBVcGRhdGVSYXRlQ29udHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdl
OjprQndOb3JtYWwsIGtBY2tlZEJpdHJhdGUsCkBAIC0xMzUsMTAgKzE0NiwxMCBAQCBURVNUKEFp
bWRSYXRlQ29udHJvbFRlc3QsIEJ3ZU5vdExpbWl0ZWRCeURlY3JlYXNpbmdBY2tlZEJpdHJhdGUp
IHsKICAgQVNTRVJUX1RSVUUoc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5WYWxpZEVzdGltYXRl
KCkpOwogICAvLyBJZiB0aGUgYWNrZWQgYml0cmF0ZSBkZWNyZWFzZXMgdGhlIEJXRSBzaG91bGRu
J3QgYmUgcmVkdWNlZCB0byAxLjV4CiAgIC8vIHdoYXQncyBiZWluZyBhY2tlZCwgYnV0IGFsc28g
c2hvdWxkbid0IGdldCB0byBpbmNyZWFzZSBtb3JlLgotICB1aW50MzJfdCBwcmV2X2VzdGltYXRl
ID0gc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5MYXRlc3RFc3RpbWF0ZSgpOworICB1aW50MzJf
dCBwcmV2X2VzdGltYXRlID0gc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5MYXRlc3RFc3RpbWF0
ZSgpLmJwcygpOwogICBVcGRhdGVSYXRlQ29udHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdlOjpr
QndOb3JtYWwsIGtBY2tlZEJpdHJhdGUgLyAyLAogICAgICAgICAgICAgICAgICAgICBzdGF0ZXMu
c2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7Ci0gIHVpbnQzMl90IG5ld19l
c3RpbWF0ZSA9IHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+TGF0ZXN0RXN0aW1hdGUoKTsKKyAg
dWludDMyX3QgbmV3X2VzdGltYXRlID0gc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5MYXRlc3RF
c3RpbWF0ZSgpLmJwcygpOwogICBFWFBFQ1RfTkVBUihuZXdfZXN0aW1hdGUsIHN0YXRpY19jYXN0
PHVpbnQzMl90PigxLjUgKiBrQWNrZWRCaXRyYXRlICsgMTAwMDApLAogICAgICAgICAgICAgICAy
MDAwKTsKICAgRVhQRUNUX0VRKG5ld19lc3RpbWF0ZSwgcHJldl9lc3RpbWF0ZSk7CkBAIC0xNDcs
MzUgKzE1OCwzNCBAQCBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIEJ3ZU5vdExpbWl0ZWRCeURl
Y3JlYXNpbmdBY2tlZEJpdHJhdGUpIHsKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgRGVmYXVs
dFBlcmlvZFVudGlsRmlyc3RPdmVydXNlKSB7CiAgIC8vIFNtb290aGluZyBleHBlcmltZW50IGRp
c2FibGVkCiAgIGF1dG8gc3RhdGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7Ci0g
IHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0U3RhcnRCaXRyYXRlKDMwMDAwMCk7CisgIHN0
YXRlcy5haW1kX3JhdGVfY29udHJvbC0+U2V0U3RhcnRCaXRyYXRlKERhdGFSYXRlOjprYnBzKDMw
MCkpOwogICBFWFBFQ1RfRVEoa0RlZmF1bHRQZXJpb2RNc05vU21vb3RoaW5nRXhwLAotICAgICAg
ICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlv
ZE1zKCkpOworICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3Rl
ZEJhbmR3aWR0aFBlcmlvZCgpLm1zKCkpOwogICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5BZHZh
bmNlVGltZU1pbGxpc2Vjb25kcygxMDApOwogICBVcGRhdGVSYXRlQ29udHJvbChzdGF0ZXMsIEJh
bmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmcsIDI4MDAwMCwKICAgICAgICAgICAgICAgICAgICAg
c3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwogICBFWFBFQ1Rf
TkUoa0RlZmF1bHRQZXJpb2RNc05vU21vb3RoaW5nRXhwLAotICAgICAgICAgICAgc3RhdGVzLmFp
bWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZE1zKCkpOworICAgICAg
ICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlv
ZCgpLm1zKCkpOwogfQogCiBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIE1pblBlcmlvZFVudGls
Rmlyc3RPdmVydXNlU21vb3RoaW5nRXhwKSB7CiAgIC8vIFNtb290aGluZyBleHBlcmltZW50IGVu
YWJsZWQKICAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKGtT
bW9vdGhpbmdFeHBGaWVsZFRyaWFsKTsKICAgYXV0byBzdGF0ZXMgPSBDcmVhdGVBaW1kUmF0ZUNv
bnRyb2xTdGF0ZXMoKTsKLSAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRTdGFydEJpdHJh
dGUoMzAwMDAwKTsKKyAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5TZXRTdGFydEJpdHJhdGUo
RGF0YVJhdGU6OmticHMoMzAwKSk7CiAgIEVYUEVDVF9FUShrTWluQndlUGVyaW9kTXNTbW9vdGhp
bmdFeHAsCi0gICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVk
QmFuZHdpZHRoUGVyaW9kTXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRy
b2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiAgIHN0YXRlcy5zaW11bGF0
ZWRfY2xvY2stPkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMCk7CiAgIFVwZGF0ZVJhdGVDb250
cm9sKHN0YXRlcywgQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZywgMjgwMDAwLAogICAgICAg
ICAgICAgICAgICAgICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMo
KSk7CiAgIEVYUEVDVF9ORShrTWluQndlUGVyaW9kTXNTbW9vdGhpbmdFeHAsCi0gICAgICAgICAg
ICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9kTXMo
KSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFu
ZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgRXhw
ZWN0ZWRQZXJpb2RBZnRlcjIwa2Jwc0Ryb3BBbmQ1a2Jwc0luY3JlYXNlKSB7CiAgIGF1dG8gc3Rh
dGVzID0gQ3JlYXRlQWltZFJhdGVDb250cm9sU3RhdGVzKCk7CiAgIGNvbnN0ZXhwciBpbnQga0lu
aXRpYWxCaXRyYXRlID0gMTEwMDAwOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVz
dGltYXRlKAotICAgICAga0luaXRpYWxCaXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5U
aW1lSW5NaWxsaXNlY29uZHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRlcywga0luaXRpYWxCaXRy
YXRlKTsKICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMo
MTAwKTsKICAgLy8gTWFrZSB0aGUgYml0cmF0ZSBkcm9wIGJ5IDIwIGticHMgdG8gZ2V0IHRvIDkw
IGticHMuCiAgIC8vIFRoZSByYXRlIGluY3JlYXNlIGF0IDkwIGticHMgc2hvdWxkIGJlIDUga2Jw
cywgc28gdGhlIHBlcmlvZCBzaG91bGQgYmUgNCBzLgpAQCAtMTgzLDggKzE5Myw5IEBAIFRFU1Qo
QWltZFJhdGVDb250cm9sVGVzdCwgRXhwZWN0ZWRQZXJpb2RBZnRlcjIwa2Jwc0Ryb3BBbmQ1a2Jw
c0luY3JlYXNlKSB7CiAgICAgICAoa0luaXRpYWxCaXRyYXRlIC0gMjAwMDApIC8ga0ZyYWN0aW9u
QWZ0ZXJPdmVydXNlOwogICBVcGRhdGVSYXRlQ29udHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdl
OjprQndPdmVydXNpbmcsIGtBY2tlZEJpdHJhdGUsCiAgICAgICAgICAgICAgICAgICAgIHN0YXRl
cy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKLSAgRVhQRUNUX0VRKDUw
MDAsIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0TmVhck1heEluY3JlYXNlUmF0ZUJwcygp
KTsKLSAgRVhQRUNUX0VRKDQwMDAsIHN0YXRlcy5haW1kX3JhdGVfY29udHJvbC0+R2V0RXhwZWN0
ZWRCYW5kd2lkdGhQZXJpb2RNcygpKTsKKyAgRVhQRUNUX0VRKDUwMDAsCisgICAgICAgICAgICBz
dGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldE5lYXJNYXhJbmNyZWFzZVJhdGVCcHNQZXJTZWNv
bmQoKSk7CisgIEVYUEVDVF9FUSg0MDAwLCBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4
cGVjdGVkQmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9s
VGVzdCwgTWluUGVyaW9kQWZ0ZXJMYXJnZUJpdHJhdGVEZWNyZWFzZVNtb290aGluZ0V4cCkgewpA
QCAtMTkyLDggKzIwMyw3IEBAIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgTWluUGVyaW9kQWZ0
ZXJMYXJnZUJpdHJhdGVEZWNyZWFzZVNtb290aGluZ0V4cCkgewogICB0ZXN0OjpTY29wZWRGaWVs
ZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlhbHMoa1Ntb290aGluZ0V4cEZpZWxkVHJpYWwpOwog
ICBhdXRvIHN0YXRlcyA9IENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0YXRlcygpOwogICBjb25zdGV4
cHIgaW50IGtJbml0aWFsQml0cmF0ZSA9IDExMDAwMDsKLSAgc3RhdGVzLmFpbWRfcmF0ZV9jb250
cm9sLT5TZXRFc3RpbWF0ZSgKLSAgICAgIGtJbml0aWFsQml0cmF0ZSwgc3RhdGVzLnNpbXVsYXRl
ZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOworICBTZXRFc3RpbWF0ZShzdGF0ZXMsIGtJ
bml0aWFsQml0cmF0ZSk7CiAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2stPkFkdmFuY2VUaW1lTWls
bGlzZWNvbmRzKDEwMCk7CiAgIC8vIE1ha2Ugc3VjaCBhIGxhcmdlIGRyb3AgaW4gYml0cmF0ZSB0
aGF0IHNob3VsZCBiZSB0cmVhdGVkIGFzIG5ldHdvcmsKICAgLy8gZGVncmFkYXRpb24uCkBAIC0y
MDEsMjAgKzIxMSwxOSBAQCBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIE1pblBlcmlvZEFmdGVy
TGFyZ2VCaXRyYXRlRGVjcmVhc2VTbW9vdGhpbmdFeHApIHsKICAgVXBkYXRlUmF0ZUNvbnRyb2wo
c3RhdGVzLCBCYW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5nLCBrQWNrZWRCaXRyYXRlLAogICAg
ICAgICAgICAgICAgICAgICBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29u
ZHMoKSk7CiAgIEVYUEVDVF9FUShrTWluQndlUGVyaW9kTXNTbW9vdGhpbmdFeHAsCi0gICAgICAg
ICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVkQmFuZHdpZHRoUGVyaW9k
TXMoKSk7CisgICAgICAgICAgICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkdldEV4cGVjdGVk
QmFuZHdpZHRoUGVyaW9kKCkubXMoKSk7CiB9CiAKIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwg
QmFuZHdpZHRoUGVyaW9kSXNOb3RCZWxvd01pbikgewogICBhdXRvIHN0YXRlcyA9IENyZWF0ZUFp
bWRSYXRlQ29udHJvbFN0YXRlcygpOwogICBjb25zdGV4cHIgaW50IGtJbml0aWFsQml0cmF0ZSA9
IDEwMDAwOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAgICAg
a0luaXRpYWxCaXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29u
ZHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRlcywga0luaXRpYWxCaXRyYXRlKTsKICAgc3RhdGVz
LnNpbXVsYXRlZF9jbG9jay0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwKTsKICAgLy8gTWFr
ZSBhIHNtYWxsICgxLjUga2JwcykgYml0cmF0ZSBkcm9wIHRvIDguNSBrYnBzLgogICBVcGRhdGVS
YXRlQ29udHJvbChzdGF0ZXMsIEJhbmR3aWR0aFVzYWdlOjprQndPdmVydXNpbmcsIGtJbml0aWFs
Qml0cmF0ZSAtIDEsCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlcy5zaW11bGF0ZWRfY2xvY2st
PlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKICAgRVhQRUNUX0VRKGtNaW5Cd2VQZXJpb2RNc05vU21v
b3RoaW5nRXhwLAotICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXRFeHBl
Y3RlZEJhbmR3aWR0aFBlcmlvZE1zKCkpOworICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9j
b250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZCgpLm1zKCkpOwogfQogCiBURVNUKEFp
bWRSYXRlQ29udHJvbFRlc3QsIEJhbmR3aWR0aFBlcmlvZElzTm90QWJvdmVNYXhTbW9vdGhpbmdF
eHApIHsKQEAgLTIyMiwyOSArMjMxLDI3IEBAIFRFU1QoQWltZFJhdGVDb250cm9sVGVzdCwgQmFu
ZHdpZHRoUGVyaW9kSXNOb3RBYm92ZU1heFNtb290aGluZ0V4cCkgewogICB0ZXN0OjpTY29wZWRG
aWVsZFRyaWFscyBvdmVycmlkZV9maWVsZF90cmlhbHMoa1Ntb290aGluZ0V4cEZpZWxkVHJpYWwp
OwogICBhdXRvIHN0YXRlcyA9IENyZWF0ZUFpbWRSYXRlQ29udHJvbFN0YXRlcygpOwogICBjb25z
dGV4cHIgaW50IGtJbml0aWFsQml0cmF0ZSA9IDUwMDAwMDAwOwotICBzdGF0ZXMuYWltZF9yYXRl
X2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAgICAga0luaXRpYWxCaXRyYXRlLCBzdGF0ZXMuc2lt
dWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CisgIFNldEVzdGltYXRlKHN0YXRl
cywga0luaXRpYWxCaXRyYXRlKTsKICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+QWR2YW5jZVRp
bWVNaWxsaXNlY29uZHMoMTAwKTsKICAgLy8gTWFrZSBhIGxhcmdlICgxMCBNYnBzKSBiaXRyYXRl
IGRyb3AgdG8gMTAga2Jwcy4KICAgY29uc3RleHByIGludCBrQWNrZWRCaXRyYXRlID0gNDAwMDAw
MDAgLyBrRnJhY3Rpb25BZnRlck92ZXJ1c2U7CiAgIFVwZGF0ZVJhdGVDb250cm9sKHN0YXRlcywg
QmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZywga0Fja2VkQml0cmF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGltZUluTWlsbGlzZWNvbmRzKCkpOwog
ICBFWFBFQ1RfRVEoa01heEJ3ZVBlcmlvZE1zLAotICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0
ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZE1zKCkpOworICAgICAgICAgICAg
c3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlvZCgpLm1z
KCkpOwogfQogCiBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3QsIEJhbmR3aWR0aFBlcmlvZElzTm90
QWJvdmVNYXhOb1Ntb290aGluZ0V4cCkgewogICBhdXRvIHN0YXRlcyA9IENyZWF0ZUFpbWRSYXRl
Q29udHJvbFN0YXRlcygpOwogICBjb25zdGV4cHIgaW50IGtJbml0aWFsQml0cmF0ZSA9IDEwMDEw
MDAwOwotICBzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPlNldEVzdGltYXRlKAotICAgICAga0lu
aXRpYWxCaXRyYXRlLCBzdGF0ZXMuc2ltdWxhdGVkX2Nsb2NrLT5UaW1lSW5NaWxsaXNlY29uZHMo
KSk7CisgIFNldEVzdGltYXRlKHN0YXRlcywga0luaXRpYWxCaXRyYXRlKTsKICAgc3RhdGVzLnNp
bXVsYXRlZF9jbG9jay0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwKTsKICAgLy8gTWFrZSBh
IGxhcmdlICgxMCBNYnBzKSBiaXRyYXRlIGRyb3AgdG8gMTAga2Jwcy4KICAgY29uc3RleHByIGlu
dCBrQWNrZWRCaXRyYXRlID0gMTAwMDAgLyBrRnJhY3Rpb25BZnRlck92ZXJ1c2U7CiAgIFVwZGF0
ZVJhdGVDb250cm9sKHN0YXRlcywgQmFuZHdpZHRoVXNhZ2U6OmtCd092ZXJ1c2luZywga0Fja2Vk
Qml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgc3RhdGVzLnNpbXVsYXRlZF9jbG9jay0+VGlt
ZUluTWlsbGlzZWNvbmRzKCkpOwogICBFWFBFQ1RfRVEoa01heEJ3ZVBlcmlvZE1zLAotICAgICAg
ICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3RlZEJhbmR3aWR0aFBlcmlv
ZE1zKCkpOworICAgICAgICAgICAgc3RhdGVzLmFpbWRfcmF0ZV9jb250cm9sLT5HZXRFeHBlY3Rl
ZEJhbmR3aWR0aFBlcmlvZCgpLm1zKCkpOwogfQogCiBURVNUKEFpbWRSYXRlQ29udHJvbFRlc3Qs
IFNlbmRpbmdSYXRlQm91bmRlZFdoZW5UaHJvdWdocHV0Tm90RXN0aW1hdGVkKSB7CkBAIC0yNjUs
NyArMjcyLDcgQEAgVEVTVChBaW1kUmF0ZUNvbnRyb2xUZXN0LCBTZW5kaW5nUmF0ZUJvdW5kZWRX
aGVuVGhyb3VnaHB1dE5vdEVzdGltYXRlZCkgewogICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
cy5zaW11bGF0ZWRfY2xvY2stPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKICAgICBzdGF0ZXMuc2lt
dWxhdGVkX2Nsb2NrLT5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDApOwogICB9Ci0gIEVYUEVD
VF9MRShzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkxhdGVzdEVzdGltYXRlKCksCisgIEVYUEVD
VF9MRShzdGF0ZXMuYWltZF9yYXRlX2NvbnRyb2wtPkxhdGVzdEVzdGltYXRlKCkuYnBzKCksCiAg
ICAgICAgICAgICBrSW5pdGlhbEJpdHJhdGVCcHMgKiAxLjUgKyAxMDAwMCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2J3ZV9kZWZpbmVzLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3IvYndlX2RlZmluZXMuY2MKaW5kZXggNmNiZTQ2ODM0ODk2NzcxODYzYTM4YTA3M2Q1ZDE5MGM1
NDViM2IzYy4uOTFmM2NkNDA1MGI3OGYwZmY3MmQyNDZmMDVmYjM4MzE3Zjc0YTJlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
ZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYndlX2RlZmluZXMuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3Rp
bWF0b3IvYndlX2RlZmluZXMuY2MKQEAgLTM0LDggKzM0LDggQEAgRGF0YVJhdGUgR2V0TWluQml0
cmF0ZSgpIHsKIAogUmF0ZUNvbnRyb2xJbnB1dDo6UmF0ZUNvbnRyb2xJbnB1dCgKICAgICBCYW5k
d2lkdGhVc2FnZSBid19zdGF0ZSwKLSAgICBjb25zdCBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4m
IGVzdGltYXRlZF90aHJvdWdocHV0X2JwcykKLSAgICA6IGJ3X3N0YXRlKGJ3X3N0YXRlKSwgZXN0
aW1hdGVkX3Rocm91Z2hwdXRfYnBzKGVzdGltYXRlZF90aHJvdWdocHV0X2Jwcykge30KKyAgICBj
b25zdCBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4mIGVzdGltYXRlZF90aHJvdWdocHV0KQorICAg
IDogYndfc3RhdGUoYndfc3RhdGUpLCBlc3RpbWF0ZWRfdGhyb3VnaHB1dChlc3RpbWF0ZWRfdGhy
b3VnaHB1dCkge30KIAogUmF0ZUNvbnRyb2xJbnB1dDo6flJhdGVDb250cm9sSW5wdXQoKSA9IGRl
ZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmlu
ZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL2luY2x1ZGUvYndlX2RlZmluZXMuaAppbmRleCBkOTE4
NWRlOTljYWRiMGYwYzQ0MzQ1ODZjZTY0NzY4YjNmOGJmZDFjLi41MjIzYTZiNDI0YjFhMDA1N2Vl
YWVjZDJhY2M1NWExYTQxZjQ3OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNs
dWRlL2J3ZV9kZWZpbmVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVm
aW5lcy5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIE1PRFVMRVNfUkVNT1RFX0JJVFJBVEVf
RVNUSU1BVE9SX0lOQ0xVREVfQldFX0RFRklORVNfSF8KICNkZWZpbmUgTU9EVUxFU19SRU1PVEVf
QklUUkFURV9FU1RJTUFUT1JfSU5DTFVERV9CV0VfREVGSU5FU19IXwogCisjaW5jbHVkZSA8c3Rk
aW50Lmg+CisKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBp
L3VuaXRzL2RhdGFfcmF0ZS5oIgogCkBAIC00NSwxNSArNDcsMTMgQEAgZW51bSBjbGFzcyBCYW5k
d2lkdGhVc2FnZSB7CiAKIGVudW0gUmF0ZUNvbnRyb2xTdGF0ZSB7IGtSY0hvbGQsIGtSY0luY3Jl
YXNlLCBrUmNEZWNyZWFzZSB9OwogCi1lbnVtIFJhdGVDb250cm9sUmVnaW9uIHsga1JjTmVhck1h
eCwga1JjQWJvdmVNYXgsIGtSY01heFVua25vd24gfTsKLQogc3RydWN0IFJhdGVDb250cm9sSW5w
dXQgewogICBSYXRlQ29udHJvbElucHV0KEJhbmR3aWR0aFVzYWdlIGJ3X3N0YXRlLAotICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPHVpbnQzMl90PiYgZXN0aW1hdGVkX3Ro
cm91Z2hwdXRfYnBzKTsKKyAgICAgICAgICAgICAgICAgICBjb25zdCBhYnNsOjpvcHRpb25hbDxE
YXRhUmF0ZT4mIGVzdGltYXRlZF90aHJvdWdocHV0KTsKICAgflJhdGVDb250cm9sSW5wdXQoKTsK
IAogICBCYW5kd2lkdGhVc2FnZSBid19zdGF0ZTsKLSAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+
IGVzdGltYXRlZF90aHJvdWdocHV0X2JwczsKKyAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGVz
dGltYXRlZF90aHJvdWdocHV0OwogfTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
ZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW50ZXJfYXJyaXZhbC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yL2ludGVyX2Fycml2YWwuY2MKaW5kZXggM2EwZjU3OTA1MmY5MGY0ZDkwNDk5YzUxNjk0MTcx
OGZhNzQwZGJjZC4uYjhlNjgzYjg5YTZmMmVmYzJmMzk1ODAzOTRjMTM2MzA5ZGQ2NzVhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW50ZXJfYXJyaXZhbC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci9pbnRlcl9hcnJpdmFsLmNjCkBAIC0xMCwxMCArMTAsOSBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW50ZXJfYXJyaXZhbC5oIgogCi0j
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNhc3NlcnQ+CiAKLSNpbmNsdWRlICJtb2R1
bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlcy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5j
bHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Z2dpbmcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGlt
YXRvci9vdmVydXNlX2RldGVjdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9kZXRl
Y3Rvci5jYwppbmRleCA3NzZjYTQyYTU2ZmYyMjAzMjYyYjAxNDlhNjI5NThlMmI3NDFjMWU2Li5m
M2RiZTFlOTk4ODI5NTgwMDQ3ZDk1MTUxM2NkZDY3M2Q5YjkzYzg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvci9vdmVydXNlX2RldGVjdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L292ZXJ1c2VfZGV0ZWN0b3IuY2MKQEAgLTEyLDE1ICsxMiwxMiBAQAogCiAjaW5jbHVkZSA8bWF0
aC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3Rlc3QvYndlX3Rlc3RfbG9nZ2luZy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1heC5oIgogI2luY2x1ZGUg
InN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2Jp
dHJhdGVfZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL292
ZXJ1c2VfZGV0ZWN0b3IuaAppbmRleCBmMzIyYzMwNDk2MDk3ZmMxNWI2MzAyODM1MWFkZTZlMGVm
ZDdmMjgzLi42MWQxYzNmNzA3ZTMyMDZhMTM5ZGZmMzNlMDc0MjE2MDEzNjljNDAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2RldGVjdG9yLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9l
c3RpbWF0b3Ivb3ZlcnVzZV9kZXRlY3Rvci5oCkBAIC0xMCw5ICsxMCw4IEBACiAjaWZuZGVmIE1P
RFVMRVNfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX09WRVJVU0VfREVURUNUT1JfSF8KICNkZWZp
bmUgTU9EVUxFU19SRU1PVEVfQklUUkFURV9FU1RJTUFUT1JfT1ZFUlVTRV9ERVRFQ1RPUl9IXwog
Ci0jaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KIAotI2luY2x1ZGUgIm1vZHVs
ZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3Ivb3ZlcnVzZV9lc3RpbWF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGlt
YXRvci5jYwppbmRleCAwOWRlNWM2ZTdjMWM2Mjc5Y2ViZDEzNWRiMWM0MWNlNDc1YzhkZDY2Li4y
MDZjZWJhODRjMjQ2OGU2ZjgzNTliNmI5MDA0ZTk2MmYwYWI1YjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRy
YXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGltYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRv
ci9vdmVydXNlX2VzdGltYXRvci5jYwpAQCAtMTIsOSArMTIsNyBAQAogCiAjaW5jbHVkZSA8YXNz
ZXJ0Lmg+CiAjaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUg
PHN0cmluZy5oPgotCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAjaW5jbHVkZSAibW9kdWxlcy9y
ZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9lc3RpbWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yL292ZXJ1c2VfZXN0aW1hdG9yLmgKaW5kZXggNGM5MjQ5MzhhYTBiODY0YzA4MTg4YzY0NjRh
ZmY1MjhkMjZmNWE0ZC4uM2Q3YmQxNmJlNDdlNzM3OTkyMzA0MGRjNWE4Njg1OTJmZjc2MTQ1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Ivb3ZlcnVzZV9lc3RpbWF0b3IuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9i
aXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGltYXRvci5oCkBAIC0xMCw2ICsxMCw3IEBACiAj
aWZuZGVmIE1PRFVMRVNfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX09WRVJVU0VfRVNUSU1BVE9S
X0hfCiAjZGVmaW5lIE1PRFVMRVNfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX09WRVJVU0VfRVNU
SU1BVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxkZXF1ZT4KIAogI2lu
Y2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3JfYWJzX3NlbmRf
dGltZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9hYnNf
c2VuZF90aW1lLmNjCmluZGV4IGE3Y2ZlNGM5MGFjYzZiYjBmMDBiMGE3YTI0MmM5M2U4OTZiZDJm
NzUuLjFhZDM1YzdiZjBkYjc0MWJkNmE3MjUzZjY4NThhN2ZhMjhkYWJiNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3Rl
X2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9hYnNfc2VuZF90aW1l
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9hYnNf
c2VuZF90aW1lLmNjCkBAIC0yMiw2ICsyMiwxNiBAQAogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVy
cy9pbmNsdWRlL21ldHJpY3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2Ugewor
YWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IE9wdGlvbmFsUmF0ZUZyb21PcHRpb25hbEJwcygKKyAg
ICBhYnNsOjpvcHRpb25hbDxpbnQ+IGJpdHJhdGVfYnBzKSB7CisgIGlmIChiaXRyYXRlX2Jwcykg
eworICAgIHJldHVybiBEYXRhUmF0ZTo6YnBzKCpiaXRyYXRlX2Jwcyk7CisgIH0gZWxzZSB7Cisg
ICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KK30KK30gIC8vIG5hbWVzcGFjZQogCiBlbnVt
IHsKICAga1RpbWVzdGFtcEdyb3VwTGVuZ3RoTXMgPSA1LApAQCAtMTg4LDcgKzE5OCw4IEBAIFJl
bW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGltZTo6UHJvY2Vzc0NsdXN0ZXJzKGludDY0X3Qg
bm93X21zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgYnBzLiBNZWFuIHNlbmQgZGVs
dGE6ICIgPDwgYmVzdF9pdC0+c2VuZF9tZWFuX21zCiAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICIgbXMsIG1lYW4gcmVjdiBkZWx0YTogIiA8PCBiZXN0X2l0LT5yZWN2X21lYW5fbXMKICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIiBtcywgbnVtIHByb2JlczogIiA8PCBiZXN0X2l0LT5jb3Vu
dDsKLSAgICAgIHJlbW90ZV9yYXRlXy5TZXRFc3RpbWF0ZShwcm9iZV9iaXRyYXRlX2Jwcywgbm93
X21zKTsKKyAgICAgIHJlbW90ZV9yYXRlXy5TZXRFc3RpbWF0ZShEYXRhUmF0ZTo6YnBzKHByb2Jl
X2JpdHJhdGVfYnBzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXA6
Om1zKG5vd19tcykpOwogICAgICAgcmV0dXJuIFByb2JlUmVzdWx0OjprQml0cmF0ZVVwZGF0ZWQ7
CiAgICAgfQogICB9CkBAIC0yMDUsNyArMjE2LDcgQEAgYm9vbCBSZW1vdGVCaXRyYXRlRXN0aW1h
dG9yQWJzU2VuZFRpbWU6OklzQml0cmF0ZUltcHJvdmluZygKICAgYm9vbCBpbml0aWFsX3Byb2Jl
ID0gIXJlbW90ZV9yYXRlXy5WYWxpZEVzdGltYXRlKCkgJiYgbmV3X2JpdHJhdGVfYnBzID4gMDsK
ICAgYm9vbCBiaXRyYXRlX2Fib3ZlX2VzdGltYXRlID0KICAgICAgIHJlbW90ZV9yYXRlXy5WYWxp
ZEVzdGltYXRlKCkgJiYKLSAgICAgIG5ld19iaXRyYXRlX2JwcyA+IHN0YXRpY19jYXN0PGludD4o
cmVtb3RlX3JhdGVfLkxhdGVzdEVzdGltYXRlKCkpOworICAgICAgbmV3X2JpdHJhdGVfYnBzID4g
cmVtb3RlX3JhdGVfLkxhdGVzdEVzdGltYXRlKCkuYnBzPGludD4oKTsKICAgcmV0dXJuIGluaXRp
YWxfcHJvYmUgfHwgYml0cmF0ZV9hYm92ZV9lc3RpbWF0ZTsKIH0KIApAQCAtMzE2LDEzICszMjcs
MTQgQEAgdm9pZCBSZW1vdGVCaXRyYXRlRXN0aW1hdG9yQWJzU2VuZFRpbWU6OkluY29taW5nUGFj
a2V0SW5mbygKICAgICAgIC8vIENoZWNrIGlmIGl0J3MgdGltZSBmb3IgYSBwZXJpb2RpYyB1cGRh
dGUgb3IgaWYgd2Ugc2hvdWxkIHVwZGF0ZSBiZWNhdXNlCiAgICAgICAvLyBvZiBhbiBvdmVyLXVz
ZS4KICAgICAgIGlmIChsYXN0X3VwZGF0ZV9tc18gPT0gLTEgfHwKLSAgICAgICAgICBub3dfbXMg
LSBsYXN0X3VwZGF0ZV9tc18gPiByZW1vdGVfcmF0ZV8uR2V0RmVlZGJhY2tJbnRlcnZhbCgpKSB7
CisgICAgICAgICAgbm93X21zIC0gbGFzdF91cGRhdGVfbXNfID4gcmVtb3RlX3JhdGVfLkdldEZl
ZWRiYWNrSW50ZXJ2YWwoKS5tcygpKSB7CiAgICAgICAgIHVwZGF0ZV9lc3RpbWF0ZSA9IHRydWU7
CiAgICAgICB9IGVsc2UgaWYgKGRldGVjdG9yXy5TdGF0ZSgpID09IEJhbmR3aWR0aFVzYWdlOjpr
QndPdmVydXNpbmcpIHsKICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGluY29taW5n
X3JhdGUgPQogICAgICAgICAgICAgaW5jb21pbmdfYml0cmF0ZV8uUmF0ZShhcnJpdmFsX3RpbWVf
bXMpOwogICAgICAgICBpZiAoaW5jb21pbmdfcmF0ZSAmJgotICAgICAgICAgICAgcmVtb3RlX3Jh
dGVfLlRpbWVUb1JlZHVjZUZ1cnRoZXIobm93X21zLCAqaW5jb21pbmdfcmF0ZSkpIHsKKyAgICAg
ICAgICAgIHJlbW90ZV9yYXRlXy5UaW1lVG9SZWR1Y2VGdXJ0aGVyKFRpbWVzdGFtcDo6bXMobm93
X21zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFS
YXRlOjpicHMoKmluY29taW5nX3JhdGUpKSkgewogICAgICAgICAgIHVwZGF0ZV9lc3RpbWF0ZSA9
IHRydWU7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTMzMiw5ICszNDQsMTEgQEAgdm9pZCBSZW1v
dGVCaXRyYXRlRXN0aW1hdG9yQWJzU2VuZFRpbWU6OkluY29taW5nUGFja2V0SW5mbygKICAgICAg
IC8vIFRoZSBmaXJzdCBvdmVydXNlIHNob3VsZCBpbW1lZGlhdGVseSB0cmlnZ2VyIGEgbmV3IGVz
dGltYXRlLgogICAgICAgLy8gV2UgYWxzbyBoYXZlIHRvIHVwZGF0ZSB0aGUgZXN0aW1hdGUgaW1t
ZWRpYXRlbHkgaWYgd2UgYXJlIG92ZXJ1c2luZwogICAgICAgLy8gYW5kIHRoZSB0YXJnZXQgYml0
cmF0ZSBpcyB0b28gaGlnaCBjb21wYXJlZCB0byB3aGF0IHdlIGFyZSByZWNlaXZpbmcuCi0gICAg
ICBjb25zdCBSYXRlQ29udHJvbElucHV0IGlucHV0KGRldGVjdG9yXy5TdGF0ZSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZ19iaXRyYXRlXy5SYXRlKGFycml2
YWxfdGltZV9tcykpOwotICAgICAgdGFyZ2V0X2JpdHJhdGVfYnBzID0gcmVtb3RlX3JhdGVfLlVw
ZGF0ZSgmaW5wdXQsIG5vd19tcyk7CisgICAgICBjb25zdCBSYXRlQ29udHJvbElucHV0IGlucHV0
KAorICAgICAgICAgIGRldGVjdG9yXy5TdGF0ZSgpLAorICAgICAgICAgIE9wdGlvbmFsUmF0ZUZy
b21PcHRpb25hbEJwcyhpbmNvbWluZ19iaXRyYXRlXy5SYXRlKGFycml2YWxfdGltZV9tcykpKTsK
KyAgICAgIHRhcmdldF9iaXRyYXRlX2JwcyA9CisgICAgICAgICAgcmVtb3RlX3JhdGVfLlVwZGF0
ZSgmaW5wdXQsIFRpbWVzdGFtcDo6bXMobm93X21zKSkuYnBzPHVpbnQzMl90PigpOwogICAgICAg
dXBkYXRlX2VzdGltYXRlID0gcmVtb3RlX3JhdGVfLlZhbGlkRXN0aW1hdGUoKTsKICAgICAgIHNz
cmNzID0gS2V5cyhzc3Jjc18pOwogICAgIH0KQEAgLTM3NCw3ICszODgsNyBAQCB2b2lkIFJlbW90
ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGltZTo6VGltZW91dFN0cmVhbXMoaW50NjRfdCBub3df
bXMpIHsKIHZvaWQgUmVtb3RlQml0cmF0ZUVzdGltYXRvckFic1NlbmRUaW1lOjpPblJ0dFVwZGF0
ZShpbnQ2NF90IGF2Z19ydHRfbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBtYXhfcnR0X21zKSB7CiAgIHJ0Yzo6Q3JpdFNjb3Bl
IGxvY2soJmNyaXRfKTsKLSAgcmVtb3RlX3JhdGVfLlNldFJ0dChhdmdfcnR0X21zKTsKKyAgcmVt
b3RlX3JhdGVfLlNldFJ0dChUaW1lRGVsdGE6Om1zKGF2Z19ydHRfbXMpKTsKIH0KIAogdm9pZCBS
ZW1vdGVCaXRyYXRlRXN0aW1hdG9yQWJzU2VuZFRpbWU6OlJlbW92ZVN0cmVhbSh1aW50MzJfdCBz
c3JjKSB7CkBAIC0zOTksNyArNDEzLDcgQEAgYm9vbCBSZW1vdGVCaXRyYXRlRXN0aW1hdG9yQWJz
U2VuZFRpbWU6OkxhdGVzdEVzdGltYXRlKAogICBpZiAoc3NyY3NfLmVtcHR5KCkpIHsKICAgICAq
Yml0cmF0ZV9icHMgPSAwOwogICB9IGVsc2UgewotICAgICpiaXRyYXRlX2JwcyA9IHJlbW90ZV9y
YXRlXy5MYXRlc3RFc3RpbWF0ZSgpOworICAgICpiaXRyYXRlX2JwcyA9IHJlbW90ZV9yYXRlXy5M
YXRlc3RFc3RpbWF0ZSgpLmJwczx1aW50MzJfdD4oKTsKICAgfQogICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTQwOCw2ICs0MjIsNiBAQCB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JBYnNTZW5kVGlt
ZTo6U2V0TWluQml0cmF0ZShpbnQgbWluX2JpdHJhdGVfYnBzKSB7CiAgIC8vIENhbGxlZCBmcm9t
IGJvdGggdGhlIGNvbmZpZ3VyYXRpb24gdGhyZWFkIGFuZCB0aGUgbmV0d29yayB0aHJlYWQuIFNo
b3VsZG4ndAogICAvLyBiZSBjYWxsZWQgZnJvbSB0aGUgbmV0d29yayB0aHJlYWQgaW4gdGhlIGZ1
dHVyZS4KICAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF8pOwotICByZW1vdGVfcmF0ZV8uU2V0
TWluQml0cmF0ZShtaW5fYml0cmF0ZV9icHMpOworICByZW1vdGVfcmF0ZV8uU2V0TWluQml0cmF0
ZShEYXRhUmF0ZTo6YnBzKG1pbl9iaXRyYXRlX2JwcykpOwogfQogfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yX3NpbmdsZV9zdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9l
c3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5jYwppbmRleCAzZDc5MWY3ODQ4N2Q5YjRkYTg3N2IwZGNl
YTAxZDVlOTFmNWE2OTY0Li5hMjY3MDUxOTQ0YjEwZjE5YjhhMTBkZWRkNTIyZWI3YjcyM2U5ZGE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jf
c2luZ2xlX3N0cmVhbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9l
c3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5jYwpAQCAtMTAsMTcgKzEwLDMzIEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3Jfc2luZ2xlX3N0cmVhbS5oIgogCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8Y3N0
ZGludD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25h
bC5oIgorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
CiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvYWltZF9yYXRlX2Nv
bnRyb2wuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNs
dWRlL2J3ZV9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3Rp
bWF0b3IvaW50ZXJfYXJyaXZhbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcmVtb3RlX2JpdHJhdGVf
ZXN0aW1hdG9yL292ZXJ1c2VfZGV0ZWN0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9i
aXRyYXRlX2VzdGltYXRvci9vdmVydXNlX2VzdGltYXRvci5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL21ldHJpY3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworYWJz
bDo6b3B0aW9uYWw8RGF0YVJhdGU+IE9wdGlvbmFsUmF0ZUZyb21PcHRpb25hbEJwcygKKyAgICBh
YnNsOjpvcHRpb25hbDxpbnQ+IGJpdHJhdGVfYnBzKSB7CisgIGlmIChiaXRyYXRlX2Jwcykgewor
ICAgIHJldHVybiBEYXRhUmF0ZTo6YnBzKCpiaXRyYXRlX2Jwcyk7CisgIH0gZWxzZSB7CisgICAg
cmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KK30KK30gIC8vIG5hbWVzcGFjZQogCiBlbnVtIHsg
a1RpbWVzdGFtcEdyb3VwTGVuZ3RoTXMgPSA1IH07CiBzdGF0aWMgY29uc3QgZG91YmxlIGtUaW1l
c3RhbXBUb01zID0gMS4wIC8gOTAuMDsKQEAgLTEyNyw3ICsxNDMsOCBAQCB2b2lkIFJlbW90ZUJp
dHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJlYW06OkluY29taW5nUGFja2V0KAogICAgICAgICBpbmNv
bWluZ19iaXRyYXRlXy5SYXRlKG5vd19tcyk7CiAgICAgaWYgKGluY29taW5nX2JpdHJhdGVfYnBz
ICYmCiAgICAgICAgIChwcmlvcl9zdGF0ZSAhPSBCYW5kd2lkdGhVc2FnZTo6a0J3T3ZlcnVzaW5n
IHx8Ci0gICAgICAgICBHZXRSZW1vdGVSYXRlKCktPlRpbWVUb1JlZHVjZUZ1cnRoZXIobm93X21z
LCAqaW5jb21pbmdfYml0cmF0ZV9icHMpKSkgeworICAgICAgICAgR2V0UmVtb3RlUmF0ZSgpLT5U
aW1lVG9SZWR1Y2VGdXJ0aGVyKAorICAgICAgICAgICAgIFRpbWVzdGFtcDo6bXMobm93X21zKSwg
RGF0YVJhdGU6OmJwcygqaW5jb21pbmdfYml0cmF0ZV9icHMpKSkpIHsKICAgICAgIC8vIFRoZSBm
aXJzdCBvdmVydXNlIHNob3VsZCBpbW1lZGlhdGVseSB0cmlnZ2VyIGEgbmV3IGVzdGltYXRlLgog
ICAgICAgLy8gV2UgYWxzbyBoYXZlIHRvIHVwZGF0ZSB0aGUgZXN0aW1hdGUgaW1tZWRpYXRlbHkg
aWYgd2UgYXJlIG92ZXJ1c2luZwogICAgICAgLy8gYW5kIHRoZSB0YXJnZXQgYml0cmF0ZSBpcyB0
b28gaGlnaCBjb21wYXJlZCB0byB3aGF0IHdlIGFyZSByZWNlaXZpbmcuCkBAIC0xODEsMTAgKzE5
OCwxMiBAQCB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJlYW06OlVwZGF0ZUVz
dGltYXRlKGludDY0X3Qgbm93X21zKSB7CiAgIH0KICAgQWltZFJhdGVDb250cm9sKiByZW1vdGVf
cmF0ZSA9IEdldFJlbW90ZVJhdGUoKTsKIAotICBjb25zdCBSYXRlQ29udHJvbElucHV0IGlucHV0
KGJ3X3N0YXRlLCBpbmNvbWluZ19iaXRyYXRlXy5SYXRlKG5vd19tcykpOwotICB1aW50MzJfdCB0
YXJnZXRfYml0cmF0ZSA9IHJlbW90ZV9yYXRlLT5VcGRhdGUoJmlucHV0LCBub3dfbXMpOworICBj
b25zdCBSYXRlQ29udHJvbElucHV0IGlucHV0KAorICAgICAgYndfc3RhdGUsIE9wdGlvbmFsUmF0
ZUZyb21PcHRpb25hbEJwcyhpbmNvbWluZ19iaXRyYXRlXy5SYXRlKG5vd19tcykpKTsKKyAgdWlu
dDMyX3QgdGFyZ2V0X2JpdHJhdGUgPQorICAgICAgcmVtb3RlX3JhdGUtPlVwZGF0ZSgmaW5wdXQs
IFRpbWVzdGFtcDo6bXMobm93X21zKSkuYnBzPHVpbnQzMl90PigpOwogICBpZiAocmVtb3RlX3Jh
dGUtPlZhbGlkRXN0aW1hdGUoKSkgewotICAgIHByb2Nlc3NfaW50ZXJ2YWxfbXNfID0gcmVtb3Rl
X3JhdGUtPkdldEZlZWRiYWNrSW50ZXJ2YWwoKTsKKyAgICBwcm9jZXNzX2ludGVydmFsX21zXyA9
IHJlbW90ZV9yYXRlLT5HZXRGZWVkYmFja0ludGVydmFsKCkubXMoKTsKICAgICBSVENfRENIRUNL
X0dUKHByb2Nlc3NfaW50ZXJ2YWxfbXNfLCAwKTsKICAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4g
c3NyY3M7CiAgICAgR2V0U3NyY3MoJnNzcmNzKTsKQEAgLTE5Niw3ICsyMTUsNyBAQCB2b2lkIFJl
bW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJlYW06OlVwZGF0ZUVzdGltYXRlKGludDY0X3Qg
bm93X21zKSB7CiB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJlYW06Ok9uUnR0
VXBkYXRlKGludDY0X3QgYXZnX3J0dF9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBtYXhfcnR0X21zKSB7CiAgIHJ0Yzo6Q3Jp
dFNjb3BlIGNzKCZjcml0X3NlY3RfKTsKLSAgR2V0UmVtb3RlUmF0ZSgpLT5TZXRSdHQoYXZnX3J0
dF9tcyk7CisgIEdldFJlbW90ZVJhdGUoKS0+U2V0UnR0KFRpbWVEZWx0YTo6bXMoYXZnX3J0dF9t
cykpOwogfQogCiB2b2lkIFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJlYW06OlJlbW92
ZVN0cmVhbSh1bnNpZ25lZCBpbnQgc3NyYykgewpAQCAtMjIwLDcgKzIzOSw3IEBAIGJvb2wgUmVt
b3RlQml0cmF0ZUVzdGltYXRvclNpbmdsZVN0cmVhbTo6TGF0ZXN0RXN0aW1hdGUoCiAgIGlmIChz
c3Jjcy0+ZW1wdHkoKSkKICAgICAqYml0cmF0ZV9icHMgPSAwOwogICBlbHNlCi0gICAgKmJpdHJh
dGVfYnBzID0gcmVtb3RlX3JhdGVfLT5MYXRlc3RFc3RpbWF0ZSgpOworICAgICpiaXRyYXRlX2Jw
cyA9IHJlbW90ZV9yYXRlXy0+TGF0ZXN0RXN0aW1hdGUoKS5icHM8dWludDMyX3Q+KCk7CiAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0yNDMsNyArMjYyLDcgQEAgQWltZFJhdGVDb250cm9sKiBSZW1v
dGVCaXRyYXRlRXN0aW1hdG9yU2luZ2xlU3RyZWFtOjpHZXRSZW1vdGVSYXRlKCkgewogCiB2b2lk
IFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVTdHJlYW06OlNldE1pbkJpdHJhdGUoaW50IG1p
bl9iaXRyYXRlX2JwcykgewogICBydGM6OkNyaXRTY29wZSBjcygmY3JpdF9zZWN0Xyk7Ci0gIHJl
bW90ZV9yYXRlXy0+U2V0TWluQml0cmF0ZShtaW5fYml0cmF0ZV9icHMpOworICByZW1vdGVfcmF0
ZV8tPlNldE1pbkJpdHJhdGUoRGF0YVJhdGU6OmJwcyhtaW5fYml0cmF0ZV9icHMpKTsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVt
b3RlX2JpdHJhdGVfZXN0aW1hdG9yX3NpbmdsZV9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9y
L3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9zaW5nbGVfc3RyZWFtLmgKaW5kZXggMThiNDM1YWZm
ZGQwOTQ5MzFhMzMxZjJmNGZjZjFmMzJkZWM2ZjYxZS4uNjM4ZjBkNjgwMjdhYmM1NTA4YzFjOGEw
MWE2OWQ2ZGZjMDBmZjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvcmVtb3RlX2Jp
dHJhdGVfZXN0aW1hdG9yX3NpbmdsZV9zdHJlYW0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9y
ZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0cmVhbS5oCkBAIC0xMSw2ICsxMSw4IEBA
CiAjaWZuZGVmIE1PRFVMRVNfUkVNT1RFX0JJVFJBVEVfRVNUSU1BVE9SX1JFTU9URV9CSVRSQVRF
X0VTVElNQVRPUl9TSU5HTEVfU1RSRUFNX0hfCiAjZGVmaW5lIE1PRFVMRVNfUkVNT1RFX0JJVFJB
VEVfRVNUSU1BVE9SX1JFTU9URV9CSVRSQVRFX0VTVElNQVRPUl9TSU5HTEVfU1RSRUFNX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtYXA+
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KQEAgLTIwLDkgKzIyLDEzIEBA
CiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhdGVfc3RhdGlzdGlj
cy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKIAorY2xhc3MgQ2xvY2s7CitzdHJ1Y3QgUlRQSGVhZGVyOworCiBjbGFzcyBS
ZW1vdGVCaXRyYXRlRXN0aW1hdG9yU2luZ2xlU3RyZWFtIDogcHVibGljIFJlbW90ZUJpdHJhdGVF
c3RpbWF0b3IgewogIHB1YmxpYzoKICAgUmVtb3RlQml0cmF0ZUVzdGltYXRvclNpbmdsZVN0cmVh
bShSZW1vdGVCaXRyYXRlT2JzZXJ2ZXIqIG9ic2VydmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9l
c3RpbWF0b3IvcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yX3NpbmdsZV9zdHJlYW1fdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0
cmVhbV91bml0dGVzdC5jYwppbmRleCAxMjBkYjEzYzdmMjg1NGQ3NjMxMzQyNGVmOWFiYjRjN2I1
NzBkZjU3Li4yYTRlZjA2NDczNzNiNjY1MTg2ZGI1Zjc4MzFjMzU0ZDBkY2E3NjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Jl
bW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3Jfc2luZ2xlX3N0
cmVhbV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9yZW1vdGVfYml0cmF0ZV9l
c3RpbWF0b3Jfc2luZ2xlX3N0cmVhbV91bml0dGVzdC5jYwpAQCAtNTUsNyArNTUsNyBAQCBURVNU
X0YoUmVtb3RlQml0cmF0ZUVzdGltYXRvclNpbmdsZVRlc3QsIENhcGFjaXR5RHJvcFRocmVlU3Ry
ZWFtc1dyYXApIHsKIH0KIAogVEVTVF9GKFJlbW90ZUJpdHJhdGVFc3RpbWF0b3JTaW5nbGVUZXN0
LCBDYXBhY2l0eURyb3BUaGlydGVlblN0cmVhbXNXcmFwKSB7Ci0gIENhcGFjaXR5RHJvcFRlc3RI
ZWxwZXIoMTMsIHRydWUsIDczMywgMCk7CisgIENhcGFjaXR5RHJvcFRlc3RIZWxwZXIoMTMsIHRy
dWUsIDU2NywgMCk7CiB9CiAKIFRFU1RfRihSZW1vdGVCaXRyYXRlRXN0aW1hdG9yU2luZ2xlVGVz
dCwgQ2FwYWNpdHlEcm9wTmluZXRlZW5TdHJlYW1zV3JhcCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0
ZV9lc3RpbWF0b3IvdGVzdC9lc3RpbWF0b3JzL3NlbmRfc2lkZS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yL3Rlc3QvZXN0aW1hdG9ycy9zZW5kX3NpZGUuY2MKaW5kZXggYTQ0NDQzNzU4MDViNGJlNmU1
MjY4OGQ0ZGJiZTdkYzBlYWEyNDZjNC4uMjg5ZmY3MGVlMjE1N2VjZTMxNWUwYTIzMTFjMDk0YjU3
ZTcwNDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9lc3RpbWF0b3JzL3Nl
bmRfc2lkZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90ZXN0L2VzdGltYXRvcnMvc2VuZF9z
aWRlLmNjCkBAIC0zMiw2ICszMiw3IEBAIFNlbmRTaWRlQndlU2VuZGVyOjpTZW5kU2lkZUJ3ZVNl
bmRlcihpbnQga2JwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmV2ZW50X2xvZ18pKSwKICAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2Vz
dGltYXRvcl8oCiAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8QWNrbm93bGVkZ2VkQml0cmF0
ZUVzdGltYXRvcj4oKSksCisgICAgICBwcm9iZV9iaXRyYXRlX2VzdGltYXRvcl8obmV3IFByb2Jl
Qml0cmF0ZUVzdGltYXRvcihudWxscHRyKSksCiAgICAgICBid2VfKG5ldyBEZWxheUJhc2VkQndl
KG51bGxwdHIpKSwKICAgICAgIGZlZWRiYWNrX29ic2VydmVyXyhiaXRyYXRlX2NvbnRyb2xsZXJf
LmdldCgpKSwKICAgICAgIGNsb2NrXyhjbG9jayksCkBAIC00NCw3ICs0NSw3IEBAIFNlbmRTaWRl
QndlU2VuZGVyOjpTZW5kU2lkZUJ3ZVNlbmRlcihpbnQga2JwcywKICAgYml0cmF0ZV9jb250cm9s
bGVyXy0+U2V0U3RhcnRCaXRyYXRlKDEwMDAgKiBrYnBzKTsKICAgYml0cmF0ZV9jb250cm9sbGVy
Xy0+U2V0TWluTWF4Qml0cmF0ZSgxMDAwICoga01pbkJpdHJhdGVLYnBzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAgKiBrTWF4Qml0cmF0ZUticHMpOwotICBi
d2VfLT5TZXRNaW5CaXRyYXRlKDEwMDAgKiBrTWluQml0cmF0ZUticHMpOworICBid2VfLT5TZXRN
aW5CaXRyYXRlKERhdGFSYXRlOjprYnBzKGtNaW5CaXRyYXRlS2JwcykpOwogfQogCiBTZW5kU2lk
ZUJ3ZVNlbmRlcjo6flNlbmRTaWRlQndlU2VuZGVyKCkge30KQEAgLTcyLDE2ICs3MywyMiBAQCB2
b2lkIFNlbmRTaWRlQndlU2VuZGVyOjpHaXZlRmVlZGJhY2soY29uc3QgRmVlZGJhY2tQYWNrZXQm
IGZlZWRiYWNrKSB7CiAKICAgaW50NjRfdCBydHRfbXMgPQogICAgICAgY2xvY2tfLT5UaW1lSW5N
aWxsaXNlY29uZHMoKSAtIGZlZWRiYWNrLmxhdGVzdF9zZW5kX3RpbWVfbXMoKTsKLSAgYndlXy0+
T25SdHRVcGRhdGUocnR0X21zKTsKKyAgYndlXy0+T25SdHRVcGRhdGUoVGltZURlbHRhOjptcyhy
dHRfbXMpKTsKICAgQldFX1RFU1RfTE9HR0lOR19QTE9UKDEsICJSVFQiLCBjbG9ja18tPlRpbWVJ
bk1pbGxpc2Vjb25kcygpLCBydHRfbXMpOwogCiAgIHN0ZDo6c29ydChwYWNrZXRfZmVlZGJhY2tf
dmVjdG9yLmJlZ2luKCksIHBhY2tldF9mZWVkYmFja192ZWN0b3IuZW5kKCksCiAgICAgICAgICAg
ICBQYWNrZXRGZWVkYmFja0NvbXBhcmF0b3IoKSk7CiAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2Vz
dGltYXRvcl8tPkluY29taW5nUGFja2V0RmVlZGJhY2tWZWN0b3IoCiAgICAgICBwYWNrZXRfZmVl
ZGJhY2tfdmVjdG9yKTsKKyAgZm9yIChQYWNrZXRGZWVkYmFjayYgcGFja2V0IDogcGFja2V0X2Zl
ZWRiYWNrX3ZlY3RvcikgeworICAgIGlmIChwYWNrZXQuc2VuZF90aW1lX21zICE9IFBhY2tldEZl
ZWRiYWNrOjprTm9TZW5kVGltZSAmJgorICAgICAgICBwYWNrZXQucGFjaW5nX2luZm8ucHJvYmVf
Y2x1c3Rlcl9pZCAhPSBQYWNlZFBhY2tldEluZm86OmtOb3RBUHJvYmUpCisgICAgICBwcm9iZV9i
aXRyYXRlX2VzdGltYXRvcl8tPkhhbmRsZVByb2JlQW5kRXN0aW1hdGVCaXRyYXRlKHBhY2tldCk7
CisgIH0KICAgRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0IHJlc3VsdCA9IGJ3ZV8tPkluY29taW5nUGFj
a2V0RmVlZGJhY2tWZWN0b3IoCi0gICAgICBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLCBhY2tub3ds
ZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRyYXRlX2JwcygpLAotICAgICAgY2xvY2tfLT5U
aW1lSW5NaWxsaXNlY29uZHMoKSk7CisgICAgICBwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLCBhY2tu
b3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3JfLT5iaXRyYXRlKCksCisgICAgICBwcm9iZV9iaXRy
YXRlX2VzdGltYXRvcl8tPkZldGNoQW5kUmVzZXRMYXN0RXN0aW1hdGVkQml0cmF0ZSgpLAorICAg
ICAgVGltZXN0YW1wOjptcyhjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSk7CiAgIGlmIChy
ZXN1bHQudXBkYXRlZCkKICAgICBiaXRyYXRlX2NvbnRyb2xsZXJfLT5PbkRlbGF5QmFzZWRCd2VS
ZXN1bHQocmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9lc3Rp
bWF0b3JzL3NlbmRfc2lkZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdGVzdC9lc3RpbWF0b3JzL3Nl
bmRfc2lkZS5oCmluZGV4IDZlOTM5YzFmMDM1NzA2YWRkY2QzNWYyMDYzNzE4MWViNzc5NGU1MGIu
LjViNDVlNjZmYmNhNzU0Yjg5Mzg0N2Q0ODUxYzY0ODMzMGU0N2RmNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2Jp
dHJhdGVfZXN0aW1hdG9yL3Rlc3QvZXN0aW1hdG9ycy9zZW5kX3NpZGUuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9iaXRyYXRl
X2VzdGltYXRvci90ZXN0L2VzdGltYXRvcnMvc2VuZF9zaWRlLmgKQEAgLTM5LDYgKzM5LDcgQEAg
Y2xhc3MgU2VuZFNpZGVCd2VTZW5kZXIgOiBwdWJsaWMgQndlU2VuZGVyLCBwdWJsaWMgUmVtb3Rl
Qml0cmF0ZU9ic2VydmVyIHsKICBwcm90ZWN0ZWQ6CiAgIHN0ZDo6dW5pcXVlX3B0cjxCaXRyYXRl
Q29udHJvbGxlcj4gYml0cmF0ZV9jb250cm9sbGVyXzsKICAgc3RkOjp1bmlxdWVfcHRyPEFja25v
d2xlZGdlZEJpdHJhdGVFc3RpbWF0b3I+IGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcl87
CisgIHN0ZDo6dW5pcXVlX3B0cjxQcm9iZUJpdHJhdGVFc3RpbWF0b3I+IHByb2JlX2JpdHJhdGVf
ZXN0aW1hdG9yXzsKICAgc3RkOjp1bmlxdWVfcHRyPERlbGF5QmFzZWRCd2U+IGJ3ZV87CiAgIFJ0
Y3BCYW5kd2lkdGhPYnNlcnZlciogZmVlZGJhY2tfb2JzZXJ2ZXJfOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90ZV9i
aXRyYXRlX2VzdGltYXRvci90b29scy9id2VfcnRwLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvdG9v
bHMvYndlX3J0cC5jYwppbmRleCAwMjMwZGIxN2RjMDFjMmRkYzE1OTI4N2UyMzIwNTE5YTJhN2I5
NTBjLi5kN2NkYjU0ZDkyODc5YTQyYzg3YWE3YmQ2ZjVmMjA3MmNlOGZhZDQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3JlbW90
ZV9iaXRyYXRlX2VzdGltYXRvci90b29scy9id2VfcnRwLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcmVtb3RlX2JpdHJhdGVfZXN0aW1h
dG9yL3Rvb2xzL2J3ZV9ydHAuY2MKQEAgLTI0LDI4ICsyNCwzMCBAQAogCiBuYW1lc3BhY2UgZmxh
Z3MgewogCi1ERUZJTkVfc3RyaW5nKGV4dGVuc2lvbl90eXBlLAotICAgICAgICAgICAgICAiYWJz
IiwKLSAgICAgICAgICAgICAgIkV4dGVuc2lvbiB0eXBlLCBlaXRoZXIgYWJzIGZvciBhYnNvbHV0
ZSBzZW5kIHRpbWUgb3IgdHNvZmZzZXQgIgotICAgICAgICAgICAgICAiZm9yIHRpbWVzdGFtcCBv
ZmZzZXQuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBleHRlbnNpb25fdHlwZSwKKyAg
ICAiYWJzIiwKKyAgICAiRXh0ZW5zaW9uIHR5cGUsIGVpdGhlciBhYnMgZm9yIGFic29sdXRlIHNl
bmQgdGltZSBvciB0c29mZnNldCAiCisgICAgImZvciB0aW1lc3RhbXAgb2Zmc2V0LiIpOwogc3Rk
OjpzdHJpbmcgRXh0ZW5zaW9uVHlwZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3Ry
aW5nPihGTEFHX2V4dGVuc2lvbl90eXBlKTsKIH0KIAotREVGSU5FX2ludChleHRlbnNpb25faWQs
IDMsICJFeHRlbnNpb24gaWQuIik7CitXRUJSVENfREVGSU5FX2ludChleHRlbnNpb25faWQsIDMs
ICJFeHRlbnNpb24gaWQuIik7CiBpbnQgRXh0ZW5zaW9uSWQoKSB7CiAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KEZMQUdfZXh0ZW5zaW9uX2lkKTsKIH0KIAotREVGSU5FX3N0cmluZyhpbnB1dF9m
aWxlLCAiIiwgIklucHV0IGZpbGUuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhpbnB1dF9maWxl
LCAiIiwgIklucHV0IGZpbGUuIik7CiBzdGQ6OnN0cmluZyBJbnB1dEZpbGUoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19pbnB1dF9maWxlKTsKIH0KIAotREVGSU5F
X3N0cmluZyhzc3JjX2ZpbHRlciwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJD
b21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBTU1JDcyBpbiBoZXhhZGVjaW1hbCB3aGljaCBhcmUgdG8g
YmUgIgotICAgICAgICAgICAgICAidXNlZCBhcyBpbnB1dCB0byB0aGUgQldFIChvbmx5IGFwcGxp
Y2FibGUgdG8gcGNhcCBmaWxlcykuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzc3Jj
X2ZpbHRlciwKKyAgICAiIiwKKyAgICAiQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgU1NSQ3MgaW4g
aGV4YWRlY2ltYWwgd2hpY2ggYXJlIHRvIGJlICIKKyAgICAidXNlZCBhcyBpbnB1dCB0byB0aGUg
QldFIChvbmx5IGFwcGxpY2FibGUgdG8gcGNhcCBmaWxlcykuIik7CiBzdGQ6OnNldDx1aW50MzJf
dD4gU3NyY0ZpbHRlcigpIHsKICAgc3RkOjpzdHJpbmcgc3NyY19maWx0ZXJfc3RyaW5nID0gc3Rh
dGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc3NyY19maWx0ZXIpOwogICBpZiAoc3NyY19maWx0
ZXJfc3RyaW5nLmVtcHR5KCkpCkBAIC02NCw3ICs2Niw3IEBAIHN0ZDo6c2V0PHVpbnQzMl90PiBT
c3JjRmlsdGVyKCkgewogICByZXR1cm4gc3NyY3M7CiB9CiAKLURFRklORV9ib29sKGhlbHAsIGZh
bHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlLiIpOworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZh
bHNlLCAiUHJpbnQgdGhpcyBtZXNzYWdlLiIpOwogfSAgLy8gbmFtZXNwYWNlIGZsYWdzCiAKIGJv
b2wgUGFyc2VBcmdzQW5kU2V0dXBFc3RpbWF0b3IoaW50IGFyZ2MsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL0JV
SUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9CVUlMRC5nbgppbmRleCA0YjM3MjkwNzY1MjczZWZjNjkzYzFhMTRhYTdhMTA1
NjkyMzM3MWZmLi5lZGI5ODFiYzY3ZWRjMTcyZDFhZDg1OGI1OTQzNWE0MGEwYjY1ODM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvQlVJTEQuZ24KQEAgLTExLDYgKzExLDcgQEAgaW1w
b3J0KCIuLi8uLi93ZWJydGMuZ25pIikKIHJ0Y19zb3VyY2Vfc2V0KCJydHBfcnRjcF9mb3JtYXQi
KSB7CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAgIHB1YmxpYyA9IFsKKyAgICAiaW5jbHVkZS9y
dGNwX3N0YXRpc3RpY3MuaCIsCiAgICAgImluY2x1ZGUvcnRwX2N2by5oIiwKICAgICAiaW5jbHVk
ZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIsCiAgICAgImluY2x1ZGUvcnRwX3J0Y3BfZGVm
aW5lcy5oIiwKQEAgLTg1LDYgKzg2LDcgQEAgcnRjX3NvdXJjZV9zZXQoInJ0cF9ydGNwX2Zvcm1h
dCIpIHsKIAogICBkZXBzID0gWwogICAgICIuLjptb2R1bGVfYXBpIiwKKyAgICAiLi46bW9kdWxl
X2FwaV9wdWJsaWMiLAogICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4vLi4vYXBp
OmFycmF5X3ZpZXciLAogICAgICIuLi8uLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2Fw
aSIsCkBAIC05Niw2ICs5OCw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJydHBfcnRjcF9mb3JtYXQiKSB7
CiAgICAgIi4uLy4uL3J0Y19iYXNlOmRlcHJlY2F0aW9uIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6
cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAorICAgICIu
Li92aWRlb19jb2Rpbmc6Y29kZWNfZ2xvYmFsc19oZWFkZXJzIiwKICAgICAiLy90aGlyZF9wYXJ0
eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlczp2YXJpYW50IiwKICAgXQpAQCAtMTg2LDcgKzE4OSwxMCBAQCBy
dGNfc3RhdGljX2xpYnJhcnkoInJ0cF9ydGNwIikgewogCiAgIGRlcHMgPSBbCiAgICAgIjpydHBf
cnRjcF9mb3JtYXQiLAorICAgICI6cnRwX3ZpZGVvX2hlYWRlciIsCiAgICAgIi4uOm1vZHVsZV9h
cGkiLAorICAgICIuLjptb2R1bGVfYXBpX3B1YmxpYyIsCisgICAgIi4uOm1vZHVsZV9mZWNfYXBp
IiwKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4uL2FwaTphcnJheV92aWV3
IiwKICAgICAiLi4vLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLApAQCAtMjE3
LDkgKzIyMywxMiBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0cF9ydGNwIikgewogICAgICIuLi8u
Li9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgIi4uL2F1ZGlvX2NvZGluZzphdWRpb19m
b3JtYXRfY29udmVyc2lvbiIsCiAgICAgIi4uL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvciIsCisg
ICAgIi4uL3ZpZGVvX2NvZGluZzpjb2RlY19nbG9iYWxzX2hlYWRlcnMiLAogICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9jb250YWluZXI6aW5saW5lZF92ZWN0b3IiLAogICAgICIv
L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlczp2YXJpYW50IiwKICAgXQogfQogCkBAIC0yNjQsNiArMjczLDcgQEAgcnRjX3NvdXJj
ZV9zZXQoInJ0cF92aWRlb19oZWFkZXIiKSB7CiAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19m
cmFtZSIsCiAgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOmNvZGVjX2dsb2JhbHNfaGVh
ZGVycyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2NvbnRhaW5lcjppbmxp
bmVkX3ZlY3RvciIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9w
dGlvbmFsIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6dmFyaWFu
dCIsCiAgIF0KIH0KQEAgLTMyMiw2ICszMzIsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsK
ICAgICAgICI6cnRwX3J0Y3AiLAogICAgICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAg
ICIuLi8uLi90ZXN0OnRlc3RfbWFpbiIsCisgICAgICAiLi4vLi4vdGVzdDp0ZXN0X3N1cHBvcnQi
LAogICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCiAgICAgXQogICB9ICAjIHRlc3RfcGFja2V0X21h
c2tzX21ldHJpY3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3JlY2VpdmVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvZmxleGZlY19yZWNlaXZlci5oCmluZGV4IGYwMDYxMTFlMTE3YjYyZmIzZGU5OTRh
ZTBjMjA4OWEyYWU4NjkyNTguLmYwZWQ1NzZjODc1NjA3OTNjMzliMzc5MzMzOGNiMDRiODhlZDE1
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3JlY2VpdmVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL2ZsZXhmZWNfcmVjZWl2ZXIuaApAQCAtMTEsMTYgKzExLDIwIEBACiAjaWZuZGVmIE1PRFVM
RVNfUlRQX1JUQ1BfSU5DTFVERV9GTEVYRkVDX1JFQ0VJVkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNf
UlRQX1JUQ1BfSU5DTFVERV9GTEVYRkVDX1JFQ0VJVkVSX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQu
aD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1
ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVk
ZS91bHBmZWNfcmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9m
b3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2VxdWVuY2Vk
X3Rhc2tfY2hlY2tlci5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2Nr
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFj
ZSB3ZWJydGMgewogCitjbGFzcyBDbG9jazsKKwogY2xhc3MgRmxleGZlY1JlY2VpdmVyIHsKICBw
dWJsaWM6CiAgIEZsZXhmZWNSZWNlaXZlcih1aW50MzJfdCBzc3JjLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9p
bmNsdWRlL2ZsZXhmZWNfc2VuZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZlY19zZW5kZXIuaAppbmRl
eCAxMjI3N2UxMjhmNTU1NDkxOWZmMjk3NjNkMmYzYWRmODM2NzdkODUwLi5hY2VlMTE3NjRjMGFh
ZjE1YWI2NzIzNGJiMDI4ODM1M2ZlYzRmNTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZl
Y19zZW5kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZlY19zZW5kZXIuaApAQCAtMTgsMTcgKzE4
LDE1IEBACiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJhcGkvcnRwcGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVz
LmgiCi0jaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL2ZsZXhmZWNfc2VuZGVyLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfZXh0ZW5zaW9u
X21hcC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZp
bmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRl
bnNpb25fc2l6ZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNr
ZXRfdG9fc2VuZC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19n
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yYW5kb20uaCIKLSNpbmNsdWRlICJzeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAorY2xh
c3MgQ2xvY2s7CiBjbGFzcyBSdHBQYWNrZXRUb1NlbmQ7CiAKIC8vIE5vdGUgdGhhdCB0aGlzIGNs
YXNzIGlzIG5vdCB0aHJlYWQgc2FmZSwgYW5kIHRodXMgcmVxdWlyZXMgZXh0ZXJuYWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3AvaW5jbHVkZS9yZWNlaXZlX3N0YXRpc3RpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZWNlaXZl
X3N0YXRpc3RpY3MuaAppbmRleCAyNGQ2ZjgxMjM3YTViNmVlZmJkMjY0ODA2NjUwZjAxNDNjYjk5
NGI0Li5jMjk5ZWE2OWQ2NmVjMDNiZDQ4MWRjNzllODZjNTM5NzM0NTQxZGIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL2luY2x1ZGUvcmVjZWl2ZV9zdGF0aXN0aWNzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlY2VpdmVf
c3RhdGlzdGljcy5oCkBAIC0xMiwxMSArMTIsMTMgQEAKICNkZWZpbmUgTU9EVUxFU19SVFBfUlRD
UF9JTkNMVURFX1JFQ0VJVkVfU1RBVElTVElDU19IXwogCiAjaW5jbHVkZSA8bWFwPgorI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJjYWxsL3J0cF9wYWNr
ZXRfc2lua19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRjcF9zdGF0aXN0aWNzLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9yZXBvcnRfYmxvY2suaCIKICNp
bmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgpAQCAtNTQsMTQgKzU2LDE0IEBAIGNsYXNz
IFJlY2VpdmVTdGF0aXN0aWNzIDogcHVibGljIFJlY2VpdmVTdGF0aXN0aWNzUHJvdmlkZXIsCiAg
cHVibGljOgogICB+UmVjZWl2ZVN0YXRpc3RpY3MoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAKLSAg
c3RhdGljIFJlY2VpdmVTdGF0aXN0aWNzKiBDcmVhdGUoQ2xvY2sqIGNsb2NrKTsKKyAgc3RhdGlj
IFJlY2VpdmVTdGF0aXN0aWNzKiBDcmVhdGUoQ2xvY2sqIGNsb2NrKSB7CisgICAgcmV0dXJuIENy
ZWF0ZShjbG9jaywgbnVsbHB0ciwgbnVsbHB0cikucmVsZWFzZSgpOworICB9CiAKLSAgLy8gVXBk
YXRlcyB0aGUgcmVjZWl2ZSBzdGF0aXN0aWNzIHdpdGggdGhpcyBwYWNrZXQuCi0gIC8vIFRPRE8o
YnVncy53ZWJydGMub3JnLzgwMTYpOiBEZXByZWNhdGVkLiBEZWxldGUgYXMgc29vbiBhcwotICAv
LyBkb3duc3RyZWFtIGNvZGUgaXMgdXBkYXRlZCB0byB1c2UgT25SdHBQYWNrZXQuCi0gIFJUQ19E
RVBSRUNBVEVECi0gIHZpcnR1YWwgdm9pZCBJbmNvbWluZ1BhY2tldChjb25zdCBSVFBIZWFkZXIm
IHJ0cF9oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFja2V0
X2xlbmd0aCkgPSAwOworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlY2VpdmVTdGF0aXN0aWNz
PiBDcmVhdGUoCisgICAgICBDbG9jayogY2xvY2ssCisgICAgICBSdGNwU3RhdGlzdGljc0NhbGxi
YWNrKiBydGNwX2NhbGxiYWNrLAorICAgICAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIHJ0
cF9jYWxsYmFjayk7CiAKICAgLy8gSW5jcmVtZW50IGNvdW50ZXIgZm9yIG51bWJlciBvZiBGRUMg
cGFja2V0cyByZWNlaXZlZC4KICAgdmlydHVhbCB2b2lkIEZlY1BhY2tldFJlY2VpdmVkKGNvbnN0
IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpID0gMDsKQEAgLTc0LDE0ICs3Niw2IEBAIGNsYXNz
IFJlY2VpdmVTdGF0aXN0aWNzIDogcHVibGljIFJlY2VpdmVTdGF0aXN0aWNzUHJvdmlkZXIsCiAg
IC8vIERldGVjdCByZXRyYW5zbWlzc2lvbnMsIGVuYWJsaW5nIHVwZGF0ZXMgb2YgdGhlIHJldHJh
bnNtaXR0ZWQgY291bnRlcnMuIFRoZQogICAvLyBkZWZhdWx0IGlzIGZhbHNlLgogICB2aXJ0dWFs
IHZvaWQgRW5hYmxlUmV0cmFuc21pdERldGVjdGlvbih1aW50MzJfdCBzc3JjLCBib29sIGVuYWJs
ZSkgPSAwOwotCi0gIC8vIENhbGxlZCBvbiBuZXcgUlRDUCBzdGF0cyBjcmVhdGlvbi4KLSAgdmly
dHVhbCB2b2lkIFJlZ2lzdGVyUnRjcFN0YXRpc3RpY3NDYWxsYmFjaygKLSAgICAgIFJ0Y3BTdGF0
aXN0aWNzQ2FsbGJhY2sqIGNhbGxiYWNrKSA9IDA7Ci0KLSAgLy8gQ2FsbGVkIG9uIG5ldyBSVFAg
c3RhdHMgY3JlYXRpb24uCi0gIHZpcnR1YWwgdm9pZCBSZWdpc3RlclJ0cFN0YXRpc3RpY3NDYWxs
YmFjaygKLSAgICAgIFN0cmVhbURhdGFDb3VudGVyc0NhbGxiYWNrKiBjYWxsYmFjaykgPSAwOwog
fTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3JlbW90
ZV9udHBfdGltZV9lc3RpbWF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1h
dG9yLmgKaW5kZXggNTE5NWU4YWI3ZTMxNmM5ZWRlZjc0MTBjZGFhNjViMWRmMWIwNGIxYS4uZTZk
MjY5YzRkZGFiYjFiOWI1M2JhODhlMzVlZjc2NzU0MmQ1MzgzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcmVtb3RlX250
cF90aW1lX2VzdGltYXRvci5oCkBAIC0xMSw3ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQ
X1JUQ1BfSU5DTFVERV9SRU1PVEVfTlRQX1RJTUVfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIE1PRFVM
RVNfUlRQX1JUQ1BfSU5DTFVERV9SRU1PVEVfTlRQX1RJTUVfRVNUSU1BVE9SX0hfCiAKLSNpbmNs
dWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9j
b25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX21l
ZGlhbl9maWx0ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydGNwX3N0YXRpc3RpY3MuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3AvaW5jbHVkZS9ydGNwX3N0YXRpc3RpY3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWQ1NzZkZTJkODZmYThl
ODUyMjZiYmZiNTlmNWE2YjM4NzRiZjYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0
Y3Bfc3RhdGlzdGljcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAy
MDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfSU5DTFVERV9SVENQX1NUQVRJU1RJQ1NfSF8KKyNk
ZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JUQ1BfU1RBVElTVElDU19IXworCisjaW5j
bHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSB3ZWJydGMgeworCisvLyBTdGF0aXN0aWNzIGZv
ciBhbiBSVENQIGNoYW5uZWwKK3N0cnVjdCBSdGNwU3RhdGlzdGljcyB7CisgIHVpbnQ4X3QgZnJh
Y3Rpb25fbG9zdCA9IDA7CisgIGludDMyX3QgcGFja2V0c19sb3N0ID0gMDsgIC8vIERlZmluZWQg
YXMgYSAyNCBiaXQgc2lnbmVkIGludGVnZXIgaW4gUlRDUAorICB1aW50MzJfdCBleHRlbmRlZF9o
aWdoZXN0X3NlcXVlbmNlX251bWJlciA9IDA7CisgIHVpbnQzMl90IGppdHRlciA9IDA7Cit9Owor
CitjbGFzcyBSdGNwU3RhdGlzdGljc0NhbGxiYWNrIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgflJ0
Y3BTdGF0aXN0aWNzQ2FsbGJhY2soKSB7fQorCisgIHZpcnR1YWwgdm9pZCBTdGF0aXN0aWNzVXBk
YXRlZChjb25zdCBSdGNwU3RhdGlzdGljcyYgc3RhdGlzdGljcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IHNzcmMpID0gMDsKKyAgdmlydHVhbCB2b2lkIENOYW1l
Q2hhbmdlZChjb25zdCBjaGFyKiBjbmFtZSwgdWludDMyX3Qgc3NyYykgPSAwOworfTsKKworfSAg
Ly8gbmFtZXNwYWNlIHdlYnJ0YworI2VuZGlmICAvLyBNT0RVTEVTX1JUUF9SVENQX0lOQ0xVREVf
UlRDUF9TVEFUSVNUSUNTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9leHRl
bnNpb25fbWFwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmgKaW5kZXgg
YjhmMjdhMTMxMjQ1MzJlNWI0MmVlYzYyNjA2M2U5YjMxYzk4YzgyZC4uMzkxYzViZWFhNWE2MmJj
YjA3OWQxOTEyMzFhNjI1YmEyYTgzMmFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFk
ZXJfZXh0ZW5zaW9uX21hcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9t
YXAuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX0lOQ0xVREVf
UlRQX0hFQURFUl9FWFRFTlNJT05fTUFQX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfSU5D
TFVERV9SVFBfSEVBREVSX0VYVEVOU0lPTl9NQVBfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgog
I2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCkBAIC0yNiw2
ICsyNyw3IEBAIGNsYXNzIFJ0cEhlYWRlckV4dGVuc2lvbk1hcCB7CiAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IGtJbnZhbGlkSWQgPSAwOwogCiAgIFJ0cEhlYWRlckV4dGVuc2lvbk1hcCgpOworICBl
eHBsaWNpdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpOwog
ICBleHBsaWNpdCBSdHBIZWFkZXJFeHRlbnNpb25NYXAocnRjOjpBcnJheVZpZXc8Y29uc3QgUnRw
RXh0ZW5zaW9uPiBleHRlbnNpb25zKTsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXh0ZW5zaW9u
PgpAQCAtNTMsMTggKzU1LDE5IEBAIGNsYXNzIFJ0cEhlYWRlckV4dGVuc2lvbk1hcCB7CiAgIH0K
ICAgaW50MzJfdCBEZXJlZ2lzdGVyKFJUUEV4dGVuc2lvblR5cGUgdHlwZSk7CiAKLSAgYm9vbCBJ
c01peGVkT25lVHdvQnl0ZUhlYWRlclN1cHBvcnRlZCgpIGNvbnN0IHsKLSAgICByZXR1cm4gbWl4
ZWRfb25lX3R3b19ieXRlX2hlYWRlcl9zdXBwb3J0ZWRfOwotICB9Ci0gIHZvaWQgU2V0TWl4ZWRP
bmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKGJvb2wgc3VwcG9ydGVkKSB7Ci0gICAgbWl4ZWRfb25l
X3R3b19ieXRlX2hlYWRlcl9zdXBwb3J0ZWRfID0gc3VwcG9ydGVkOworICAvLyBDb3JyZXNwb25k
cyB0byB0aGUgU0RQIGF0dHJpYnV0ZSBleHRtYXAtYWxsb3ctbWl4ZWQsIHNlZSBSRkM4Mjg1Lgor
ICAvLyBTZXQgdG8gdHJ1ZSBpZiBpdCdzIGFsbG93ZWQgdG8gbWl4IG9uZS0gYW5kIHR3by1ieXRl
IFJUUCBoZWFkZXIgZXh0ZW5zaW9ucworICAvLyBpbiB0aGUgc2FtZSBzdHJlYW0uCisgIGJvb2wg
RXh0bWFwQWxsb3dNaXhlZCgpIGNvbnN0IHsgcmV0dXJuIGV4dG1hcF9hbGxvd19taXhlZF87IH0K
KyAgdm9pZCBTZXRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSB7Cisg
ICAgZXh0bWFwX2FsbG93X21peGVkXyA9IGV4dG1hcF9hbGxvd19taXhlZDsKICAgfQogCiAgcHJp
dmF0ZToKICAgYm9vbCBSZWdpc3RlcihpbnQgaWQsIFJUUEV4dGVuc2lvblR5cGUgdHlwZSwgY29u
c3QgY2hhciogdXJpKTsKIAogICB1aW50OF90IGlkc19ba1J0cEV4dGVuc2lvbk51bWJlck9mRXh0
ZW5zaW9uc107Ci0gIGJvb2wgbWl4ZWRfb25lX3R3b19ieXRlX2hlYWRlcl9zdXBwb3J0ZWRfOwor
ICBib29sIGV4dG1hcF9hbGxvd19taXhlZF87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9wYXJzZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9y
dHBfaGVhZGVyX3BhcnNlci5oCmluZGV4IDJkODRmYzFlNjkwMzkyMGY5OTdkZjQ0YjZkZjA4ODYz
ZGJmMDU3ZDguLjg1ZWFiOTBhNzNhY2Q1MjE0N2ExN2NiZTU5NDQ0NWMzMjYzNTIzNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX3BhcnNlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBf
aGVhZGVyX3BhcnNlci5oCkBAIC0xMCw2ICsxMCw3IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JU
Q1BfSU5DTFVERV9SVFBfSEVBREVSX1BBUlNFUl9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQ
X0lOQ0xVREVfUlRQX0hFQURFUl9QQVJTRVJfSF8KIAorI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmlu
ZXMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zNiw4ICszNywxNCBAQCBjbGFzcyBSdHBI
ZWFkZXJQYXJzZXIgewogICB2aXJ0dWFsIGJvb2wgUmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24o
UlRQRXh0ZW5zaW9uVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCBpZCkgPSAwOwogCisgIC8vIFJlZ2lzdGVycyBhbiBSVFAgaGVhZGVy
IGV4dGVuc2lvbi4KKyAgdmlydHVhbCBib29sIFJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJ0
cEV4dGVuc2lvbiBleHRlbnNpb24pID0gMDsKKwogICAvLyBEZS1yZWdpc3RlcnMgYW4gUlRQIGhl
YWRlciBleHRlbnNpb24uCiAgIHZpcnR1YWwgYm9vbCBEZXJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5z
aW9uKFJUUEV4dGVuc2lvblR5cGUgdHlwZSkgPSAwOworCisgIC8vIERlLXJlZ2lzdGVycyBhbiBS
VFAgaGVhZGVyIGV4dGVuc2lvbi4KKyAgdmlydHVhbCBib29sIERlcmVnaXN0ZXJSdHBIZWFkZXJF
eHRlbnNpb24oUnRwRXh0ZW5zaW9uIGV4dGVuc2lvbikgPSAwOwogfTsKIH0gIC8vIG5hbWVzcGFj
ZSB3ZWJydGMKICNlbmRpZiAgLy8gTU9EVUxFU19SVFBfUlRDUF9JTkNMVURFX1JUUF9IRUFERVJf
UEFSU0VSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3AuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9y
dHBfcnRjcC5oCmluZGV4IDliMjlmNzYyMmUyZmYxMzQyMzBjYTA1NmIxZDhhNjU1NTNkNmUyYzUu
LmQxMzZhNWU2ZTlhM2JhNzYyM2NjYjNjNGM3MzIxMzEyMTI3MTRkNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
aW5jbHVkZS9ydHBfcnRjcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcC5oCkBAIC0xOCw5ICsx
OCw5IEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBp
L3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBl
cy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRl
L21vZHVsZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3Nl
bmRlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9yZWNlaXZlX3N0YXRp
c3RpY3MuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVm
aW5lcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiAKIC8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgorY2xhc3MgRnJhbWVFbmNyeXB0b3JJ
bnRlcmZhY2U7CiBjbGFzcyBPdmVyaGVhZE9ic2VydmVyOwogY2xhc3MgUmF0ZUxpbWl0ZXI7CiBj
bGFzcyBSZWNlaXZlU3RhdGlzdGljc1Byb3ZpZGVyOwpAQCAtOTIsMTEgKzkzLDIwIEBAIGNsYXNz
IFJ0cFJ0Y3AgOiBwdWJsaWMgTW9kdWxlLCBwdWJsaWMgUnRjcEZlZWRiYWNrU2VuZGVySW50ZXJm
YWNlIHsKICAgICBSYXRlTGltaXRlciogcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyID0gbnVs
bHB0cjsKICAgICBPdmVyaGVhZE9ic2VydmVyKiBvdmVyaGVhZF9vYnNlcnZlciA9IG51bGxwdHI7
CiAgICAgUnRwS2VlcEFsaXZlQ29uZmlnIGtlZXBhbGl2ZV9jb25maWc7Ci0gICAgUnRjcEludGVy
dmFsQ29uZmlnIHJ0Y3BfaW50ZXJ2YWxfY29uZmlnOworCisgICAgaW50IHJ0Y3BfcmVwb3J0X2lu
dGVydmFsX21zID0gMDsKIAogICAgIC8vIFVwZGF0ZSBuZXR3b3JrMiBpbnN0ZWFkIG9mIHBhY2Vy
X2V4aXQgZmllbGQgb2YgdmlkZW8gdGltaW5nIGV4dGVuc2lvbi4KICAgICBib29sIHBvcHVsYXRl
X25ldHdvcmsyX3RpbWVzdGFtcCA9IGZhbHNlOwogCisgICAgLy8gRTJFRSBDdXN0b20gVmlkZW8g
RnJhbWUgRW5jcnlwdGlvbgorICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNy
eXB0b3IgPSBudWxscHRyOworICAgIC8vIFJlcXVpcmUgYWxsIG91dGdvaW5nIGZyYW1lcyB0byBi
ZSBlbmNyeXB0ZWQgd2l0aCBhIEZyYW1lRW5jcnlwdG9yLgorICAgIGJvb2wgcmVxdWlyZV9mcmFt
ZV9lbmNyeXB0aW9uID0gZmFsc2U7CisKKyAgICAvLyBDb3JyZXNwb25kcyB0byBleHRtYXAtYWxs
b3ctbWl4ZWQgaW4gU0RQIG5lZ290aWF0aW9uLgorICAgIGJvb2wgZXh0bWFwX2FsbG93X21peGVk
ID0gZmFsc2U7CisKICAgIHByaXZhdGU6CiAgICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihDb25maWd1cmF0aW9uKTsKICAgfTsKQEAgLTEzNiw2ICsxNDYsOCBAQCBjbGFzcyBSdHBSdGNw
IDogcHVibGljIE1vZHVsZSwgcHVibGljIFJ0Y3BGZWVkYmFja1NlbmRlckludGVyZmFjZSB7CiAg
IC8vIFJldHVybnMgLTEgb24gZmFpbHVyZSBlbHNlIDAuCiAgIHZpcnR1YWwgaW50MzJfdCBEZVJl
Z2lzdGVyU2VuZFBheWxvYWQoaW50OF90IHBheWxvYWRfdHlwZSkgPSAwOwogCisgIHZpcnR1YWwg
dm9pZCBTZXRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSA9IDA7CisK
ICAgLy8gKERlKXJlZ2lzdGVycyBSVFAgaGVhZGVyIGV4dGVuc2lvbiB0eXBlIGFuZCBpZC4KICAg
Ly8gUmV0dXJucyAtMSBvbiBmYWlsdXJlIGVsc2UgMC4KICAgdmlydHVhbCBpbnQzMl90IFJlZ2lz
dGVyU2VuZFJ0cEhlYWRlckV4dGVuc2lvbihSVFBFeHRlbnNpb25UeXBlIHR5cGUsCkBAIC0yMTMs
NiArMjI1LDEwIEBAIGNsYXNzIFJ0cFJ0Y3AgOiBwdWJsaWMgTW9kdWxlLCBwdWJsaWMgUnRjcEZl
ZWRiYWNrU2VuZGVySW50ZXJmYWNlIHsKICAgLy8gUmV0dXJucyBjdXJyZW50IG1lZGlhIHNlbmRp
bmcgc3RhdHVzLgogICB2aXJ0dWFsIGJvb2wgU2VuZGluZ01lZGlhKCkgY29uc3QgPSAwOwogCisg
IC8vIEluZGljYXRlIHRoYXQgdGhlIHBhY2tldHMgc2VudCBieSB0aGlzIG1vZHVsZSBzaG91bGQg
YmUgY291bnRlZCB0b3dhcmRzIHRoZQorICAvLyBiaXRyYXRlIGVzdGltYXRlIHNpbmNlIHRoZSBz
dHJlYW0gcGFydGljaXBhdGVzIGluIHRoZSBiaXRyYXRlIGFsbG9jYXRpb24uCisgIHZpcnR1YWwg
dm9pZCBTZXRBc1BhcnRPZkFsbG9jYXRpb24oYm9vbCBwYXJ0X29mX2FsbG9jYXRpb24pID0gMDsK
KwogICAvLyBSZXR1cm5zIGN1cnJlbnQgYml0cmF0ZSBpbiBLYml0L3MuCiAgIHZpcnR1YWwgdm9p
ZCBCaXRyYXRlU2VudCh1aW50MzJfdCogdG90YWxfcmF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90KiB2aWRlb19yYXRlLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9y
dGNwX2RlZmluZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5jYwppbmRleCBmODZi
MjM4YjdkYWViZTYzMmYxZmU0ZGFkMjNhNDQ4MzQ0NGE4YzljLi5kNzQzZjUyZjdlNmRmM2VhMjY4
MzIxMjAwYzMzNzU4NTE2ZjI5ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVm
aW5lcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5jYwpAQCAtOSw2ICs5LDE0
IEBACiAgKi8KIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9k
ZWZpbmVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldC5o
IgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxh
bGdvcml0aG0+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlf
dmlldy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtNTQsNCArNjIsODAgQEAgUGF5bG9h
ZFVuaW9uOjp+UGF5bG9hZFVuaW9uKCkgPSBkZWZhdWx0OwogUGF5bG9hZFVuaW9uJiBQYXlsb2Fk
VW5pb246Om9wZXJhdG9yPShjb25zdCBQYXlsb2FkVW5pb24mKSA9IGRlZmF1bHQ7CiBQYXlsb2Fk
VW5pb24mIFBheWxvYWRVbmlvbjo6b3BlcmF0b3I9KFBheWxvYWRVbmlvbiYmKSA9IGRlZmF1bHQ7
CiAKK1BhY2tldEZlZWRiYWNrOjpQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGFycml2YWxfdGltZV9t
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1i
ZXIpCisgICAgOiBQYWNrZXRGZWVkYmFjaygtMSwKKyAgICAgICAgICAgICAgICAgICAgIGFycml2
YWxfdGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgIGtOb1NlbmRUaW1lLAorICAgICAgICAg
ICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgMCwKKyAg
ICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgICAgICAgICAgUGFjZWRQYWNrZXRJbmZvKCkpIHt9CisKK1BhY2tldEZlZWRiYWNrOjpQYWNr
ZXRGZWVkYmFjayhpbnQ2NF90IGFycml2YWxfdGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90IHNlbmRfdGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKQorICAgIDogUGFja2V0RmVl
ZGJhY2soLTEsCisgICAgICAgICAgICAgICAgICAgICBhcnJpdmFsX3RpbWVfbXMsCisgICAgICAg
ICAgICAgICAgICAgICBzZW5kX3RpbWVfbXMsCisgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5j
ZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkX3NpemUsCisgICAgICAgICAg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAg
ICAgIHBhY2luZ19pbmZvKSB7fQorCitQYWNrZXRGZWVkYmFjazo6UGFja2V0RmVlZGJhY2soaW50
NjRfdCBjcmVhdGlvbl90aW1lX21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQxNl90IHNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgcGF5bG9hZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQx
Nl90IGxvY2FsX25ldF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZf
dCByZW1vdGVfbmV0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBh
Y2VkUGFja2V0SW5mbyYgcGFjaW5nX2luZm8pCisgICAgOiBQYWNrZXRGZWVkYmFjayhjcmVhdGlv
bl90aW1lX21zLAorICAgICAgICAgICAgICAgICAgICAga05vdFJlY2VpdmVkLAorICAgICAgICAg
ICAgICAgICAgICAga05vU2VuZFRpbWUsCisgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9u
dW1iZXIsCisgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkX3NpemUsCisgICAgICAgICAgICAg
ICAgICAgICBsb2NhbF9uZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICByZW1vdGVfbmV0X2lk
LAorICAgICAgICAgICAgICAgICAgICAgcGFjaW5nX2luZm8pIHt9CisKK1BhY2tldEZlZWRiYWNr
OjpQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGNyZWF0aW9uX3RpbWVfbXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBhcnJpdmFsX3RpbWVfbXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBzZW5kX3RpbWVfbXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkX3NpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDE2X3QgbG9jYWxfbmV0X2lkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQxNl90IHJlbW90ZV9uZXRfaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbykKKyAgICA6IGNyZWF0
aW9uX3RpbWVfbXMoY3JlYXRpb25fdGltZV9tcyksCisgICAgICBhcnJpdmFsX3RpbWVfbXMoYXJy
aXZhbF90aW1lX21zKSwKKyAgICAgIHNlbmRfdGltZV9tcyhzZW5kX3RpbWVfbXMpLAorICAgICAg
c2VxdWVuY2VfbnVtYmVyKHNlcXVlbmNlX251bWJlciksCisgICAgICBwYXlsb2FkX3NpemUocGF5
bG9hZF9zaXplKSwKKyAgICAgIHVuYWNrbm93bGVkZ2VkX2RhdGEoMCksCisgICAgICBsb2NhbF9u
ZXRfaWQobG9jYWxfbmV0X2lkKSwKKyAgICAgIHJlbW90ZV9uZXRfaWQocmVtb3RlX25ldF9pZCks
CisgICAgICBwYWNpbmdfaW5mbyhwYWNpbmdfaW5mbykge30KKworUGFja2V0RmVlZGJhY2s6OlBh
Y2tldEZlZWRiYWNrKGNvbnN0IFBhY2tldEZlZWRiYWNrJikgPSBkZWZhdWx0OworUGFja2V0RmVl
ZGJhY2smIFBhY2tldEZlZWRiYWNrOjpvcGVyYXRvcj0oY29uc3QgUGFja2V0RmVlZGJhY2smKSA9
IGRlZmF1bHQ7CitQYWNrZXRGZWVkYmFjazo6flBhY2tldEZlZWRiYWNrKCkgPSBkZWZhdWx0Owor
Citib29sIFBhY2tldEZlZWRiYWNrOjpvcGVyYXRvcj09KGNvbnN0IFBhY2tldEZlZWRiYWNrJiBy
aHMpIGNvbnN0IHsKKyAgcmV0dXJuIGFycml2YWxfdGltZV9tcyA9PSByaHMuYXJyaXZhbF90aW1l
X21zICYmCisgICAgICAgICBzZW5kX3RpbWVfbXMgPT0gcmhzLnNlbmRfdGltZV9tcyAmJgorICAg
ICAgICAgc2VxdWVuY2VfbnVtYmVyID09IHJocy5zZXF1ZW5jZV9udW1iZXIgJiYKKyAgICAgICAg
IHBheWxvYWRfc2l6ZSA9PSByaHMucGF5bG9hZF9zaXplICYmIHBhY2luZ19pbmZvID09IHJocy5w
YWNpbmdfaW5mbzsKK30KKwordm9pZCBSdHBQYWNrZXRDb3VudGVyOjpBZGRQYWNrZXQoY29uc3Qg
UnRwUGFja2V0JiBwYWNrZXQpIHsKKyAgKytwYWNrZXRzOworICBoZWFkZXJfYnl0ZXMgKz0gcGFj
a2V0LmhlYWRlcnNfc2l6ZSgpOworICBwYWRkaW5nX2J5dGVzICs9IHBhY2tldC5wYWRkaW5nX3Np
emUoKTsKKyAgcGF5bG9hZF9ieXRlcyArPSBwYWNrZXQucGF5bG9hZF9zaXplKCk7Cit9CisKIH0g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZp
bmVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oCmluZGV4IDY1MDNiNGVkY2MzYTNi
ODhkN2ZlMGNlNjU3YjAzZWY3Yjc4MGFkNmMuLmFiNGZjYWVjYzc5YTQ4MTA3MWJjMTY2ZGM3OWE1
MmZlYjBhNjI1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaApAQCAtMjcsMjggKzI3LDIwIEBACiAjZGVm
aW5lIElQX1BBQ0tFVF9TSVpFIDE1MDAgIC8vIHdlIGFzc3VtZSBldGhlcm5ldAogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKK2NsYXNzIFJ0cFBhY2tldDsKIG5hbWVzcGFjZSBydGNwIHsKIGNsYXNzIFRy
YW5zcG9ydEZlZWRiYWNrOwogfQogCiBjb25zdCBpbnQga1ZpZGVvUGF5bG9hZFR5cGVGcmVxdWVu
Y3kgPSA5MDAwMDsKLS8vIFRPRE8oc29sZW5iZXJnKTogUlRQIHRpbWUgc3RhbXAgcmF0ZSBmb3Ig
UlRDUCBpcyBmaXhlZCBhdCA4aywgdGhpcyBpcyBsZWdhY3kKLS8vIGFuZCBzaG91bGQgYmUgZml4
ZWQuCi0vLyBTZWU6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC93ZWJydGMvaXNzdWVzL2Rl
dGFpbD9pZD02NDU4CisKKy8vIFRPRE8oYnVncy53ZWJydGMub3JnLzY0NTgpOiBSZW1vdmUgdGhp
cyB3aGVuIGFsbCB0aGUgZGVwZW5kaW5nIHByb2plY3RzIGFyZQorLy8gdXBkYXRlZCB0byBjb3Jy
ZWN0bHkgc2V0IHJ0cCByYXRlIGZvciBSdGNwU2VuZGVyLgogY29uc3QgaW50IGtCb2d1c1J0cFJh
dGVGb3JBdWRpb1J0Y3AgPSA4MDAwOwogCiAvLyBNaW5pbXVtIFJUUCBoZWFkZXIgc2l6ZSBpbiBi
eXRlcy4KIGNvbnN0IHVpbnQ4X3Qga1J0cEhlYWRlclNpemUgPSAxMjsKIAotc3RydWN0IFJ0Y3BJ
bnRlcnZhbENvbmZpZyBmaW5hbCB7Ci0gIFJ0Y3BJbnRlcnZhbENvbmZpZygpID0gZGVmYXVsdDsK
LSAgUnRjcEludGVydmFsQ29uZmlnKGludDY0X3QgdmlkZW9faW50ZXJ2YWxfbXMsIGludDY0X3Qg
YXVkaW9faW50ZXJ2YWxfbXMpCi0gICAgICA6IHZpZGVvX2ludGVydmFsX21zKHZpZGVvX2ludGVy
dmFsX21zKSwKLSAgICAgICAgYXVkaW9faW50ZXJ2YWxfbXMoYXVkaW9faW50ZXJ2YWxfbXMpIHt9
Ci0gIGludDY0X3QgdmlkZW9faW50ZXJ2YWxfbXMgPSAxMDAwOwotICBpbnQ2NF90IGF1ZGlvX2lu
dGVydmFsX21zID0gNTAwMDsKLX07Ci0KIHN0cnVjdCBBdWRpb1BheWxvYWQgewogICBTZHBBdWRp
b0Zvcm1hdCBmb3JtYXQ7CiAgIHVpbnQzMl90IHJhdGU7CkBAIC0xMTIsNiArMTA0LDcgQEAgZW51
bSBSVFBFeHRlbnNpb25UeXBlIDogaW50IHsKICAga1J0cEV4dGVuc2lvblJlcGFpcmVkUnRwU3Ry
ZWFtSWQsCiAgIGtSdHBFeHRlbnNpb25NaWQsCiAgIGtSdHBFeHRlbnNpb25HZW5lcmljRnJhbWVE
ZXNjcmlwdG9yLAorICBrUnRwRXh0ZW5zaW9uQ29sb3JTcGFjZSwKICAga1J0cEV4dGVuc2lvbk51
bWJlck9mRXh0ZW5zaW9ucyAgLy8gTXVzdCBiZSB0aGUgbGFzdCBlbnRpdHkgaW4gdGhlIGVudW0u
CiB9OwogCkBAIC0yMjIsMTUgKzIxNSw2IEBAIHN0cnVjdCBSdHBTdGF0ZSB7CiAgIGJvb2wgbWVk
aWFfaGFzX2JlZW5fc2VudDsKIH07CiAKLWNsYXNzIFJ0cERhdGEgewotIHB1YmxpYzoKLSAgdmly
dHVhbCB+UnRwRGF0YSgpIHt9Ci0KLSAgdmlydHVhbCBpbnQzMl90IE9uUmVjZWl2ZWRQYXlsb2Fk
RGF0YShjb25zdCB1aW50OF90KiBwYXlsb2FkX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSdGNSVFBIZWFkZXIqIHJ0cF9oZWFkZXIp
ID0gMDsKLX07Ci0KIC8vIENhbGxiYWNrIGludGVyZmFjZSBmb3IgcGFja2V0cyByZWNvdmVyZWQg
YnkgRmxleEZFQyBvciBVTFBGRUMuIEluCiAvLyB0aGUgRmxleEZFQyBjYXNlLCB0aGUgaW1wbGVt
ZW50YXRpb24gc2hvdWxkIGJlIGFibGUgdG8gZGVtdWx0aXBsZXgKIC8vIHRoZSByZWNvdmVyZWQg
UlRQIHBhY2tldHMgYmFzZWQgb24gU1NSQy4KQEAgLTI2Myw0NCArMjQ3LDIwIEBAIGNsYXNzIFJ0
Y3BCYW5kd2lkdGhPYnNlcnZlciB7CiB9OwogCiBzdHJ1Y3QgUGFja2V0RmVlZGJhY2sgewotICBQ
YWNrZXRGZWVkYmFjayhpbnQ2NF90IGFycml2YWxfdGltZV9tcywgdWludDE2X3Qgc2VxdWVuY2Vf
bnVtYmVyKQotICAgICAgOiBQYWNrZXRGZWVkYmFjaygtMSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgYXJyaXZhbF90aW1lX21zLAotICAgICAgICAgICAgICAgICAgICAgICBrTm9TZW5kVGltZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAg
ICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICBQYWNlZFBhY2tldEluZm8oKSkge30KKyAg
UGFja2V0RmVlZGJhY2soaW50NjRfdCBhcnJpdmFsX3RpbWVfbXMsIHVpbnQxNl90IHNlcXVlbmNl
X251bWJlcik7CiAKICAgUGFja2V0RmVlZGJhY2soaW50NjRfdCBhcnJpdmFsX3RpbWVfbXMsCiAg
ICAgICAgICAgICAgICAgIGludDY0X3Qgc2VuZF90aW1lX21zLAogICAgICAgICAgICAgICAgICB1
aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsCiAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXlsb2Fk
X3NpemUsCi0gICAgICAgICAgICAgICAgIGNvbnN0IFBhY2VkUGFja2V0SW5mbyYgcGFjaW5nX2lu
Zm8pCi0gICAgICA6IFBhY2tldEZlZWRiYWNrKC0xLAotICAgICAgICAgICAgICAgICAgICAgICBh
cnJpdmFsX3RpbWVfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgIHNlbmRfdGltZV9tcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVyLAotICAgICAgICAgICAgICAgICAg
ICAgICBwYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgIHBhY2luZ19pbmZvKSB7fQor
ICAgICAgICAgICAgICAgICBjb25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKTsKIAog
ICBQYWNrZXRGZWVkYmFjayhpbnQ2NF90IGNyZWF0aW9uX3RpbWVfbXMsCiAgICAgICAgICAgICAg
ICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlciwKICAgICAgICAgICAgICAgICAgc2l6ZV90IHBh
eWxvYWRfc2l6ZSwKICAgICAgICAgICAgICAgICAgdWludDE2X3QgbG9jYWxfbmV0X2lkLAogICAg
ICAgICAgICAgICAgICB1aW50MTZfdCByZW1vdGVfbmV0X2lkLAotICAgICAgICAgICAgICAgICBj
b25zdCBQYWNlZFBhY2tldEluZm8mIHBhY2luZ19pbmZvKQotICAgICAgOiBQYWNrZXRGZWVkYmFj
ayhjcmVhdGlvbl90aW1lX21zLAotICAgICAgICAgICAgICAgICAgICAgICBrTm90UmVjZWl2ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGtOb1NlbmRUaW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICBzZXF1ZW5jZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRfc2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfbmV0X2lkLAotICAgICAgICAgICAgICAg
ICAgICAgICByZW1vdGVfbmV0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICBwYWNpbmdfaW5m
bykge30KKyAgICAgICAgICAgICAgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5m
byk7CiAKICAgUGFja2V0RmVlZGJhY2soaW50NjRfdCBjcmVhdGlvbl90aW1lX21zLAogICAgICAg
ICAgICAgICAgICBpbnQ2NF90IGFycml2YWxfdGltZV9tcywKQEAgLTMwOSwxNSArMjY5LDEwIEBA
IHN0cnVjdCBQYWNrZXRGZWVkYmFjayB7CiAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXlsb2Fk
X3NpemUsCiAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGxvY2FsX25ldF9pZCwKICAgICAgICAg
ICAgICAgICAgdWludDE2X3QgcmVtb3RlX25ldF9pZCwKLSAgICAgICAgICAgICAgICAgY29uc3Qg
UGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5mbykKLSAgICAgIDogY3JlYXRpb25fdGltZV9tcyhj
cmVhdGlvbl90aW1lX21zKSwKLSAgICAgICAgYXJyaXZhbF90aW1lX21zKGFycml2YWxfdGltZV9t
cyksCi0gICAgICAgIHNlbmRfdGltZV9tcyhzZW5kX3RpbWVfbXMpLAotICAgICAgICBzZXF1ZW5j
ZV9udW1iZXIoc2VxdWVuY2VfbnVtYmVyKSwKLSAgICAgICAgcGF5bG9hZF9zaXplKHBheWxvYWRf
c2l6ZSksCi0gICAgICAgIGxvY2FsX25ldF9pZChsb2NhbF9uZXRfaWQpLAotICAgICAgICByZW1v
dGVfbmV0X2lkKHJlbW90ZV9uZXRfaWQpLAotICAgICAgICBwYWNpbmdfaW5mbyhwYWNpbmdfaW5m
bykge30KKyAgICAgICAgICAgICAgICAgY29uc3QgUGFjZWRQYWNrZXRJbmZvJiBwYWNpbmdfaW5m
byk7CisgIFBhY2tldEZlZWRiYWNrKGNvbnN0IFBhY2tldEZlZWRiYWNrJik7CisgIFBhY2tldEZl
ZWRiYWNrJiBvcGVyYXRvcj0oY29uc3QgUGFja2V0RmVlZGJhY2smKTsKKyAgflBhY2tldEZlZWRi
YWNrKCk7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBpbnQga05vdEFQcm9iZSA9IC0xOwogICBzdGF0
aWMgY29uc3RleHByIGludDY0X3Qga05vdFJlY2VpdmVkID0gLTE7CkBAIC0zMjgsMTIgKzI4Myw3
IEBAIHN0cnVjdCBQYWNrZXRGZWVkYmFjayB7CiAgIC8vICAgICAgIGZvciBib29rLWtlZXBpbmcs
IGFuZCBpcyBvZiBubyBpbnRlcmVzdCBvdXRzaWRlIHRoYXQgY2xhc3MuCiAgIC8vIFRPRE8ocGhp
bGlwZWwpOiBSZW1vdmUgfGNyZWF0aW9uX3RpbWVfbXN8IGZyb20gUGFja2V0RmVlZGJhY2sgd2hl
biBjbGVhbmluZwogICAvLyAgICAgICAgICAgICAgICAgdXAgU2VuZFRpbWVIaXN0b3J5LgotICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUGFja2V0RmVlZGJhY2smIHJocykgY29uc3QgewotICAgIHJl
dHVybiBhcnJpdmFsX3RpbWVfbXMgPT0gcmhzLmFycml2YWxfdGltZV9tcyAmJgotICAgICAgICAg
ICBzZW5kX3RpbWVfbXMgPT0gcmhzLnNlbmRfdGltZV9tcyAmJgotICAgICAgICAgICBzZXF1ZW5j
ZV9udW1iZXIgPT0gcmhzLnNlcXVlbmNlX251bWJlciAmJgotICAgICAgICAgICBwYXlsb2FkX3Np
emUgPT0gcmhzLnBheWxvYWRfc2l6ZSAmJiBwYWNpbmdfaW5mbyA9PSByaHMucGFjaW5nX2luZm87
Ci0gIH0KKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhY2tldEZlZWRiYWNrJiByaHMpIGNvbnN0
OwogCiAgIC8vIFRpbWUgY29ycmVzcG9uZGluZyB0byB3aGVuIHRoaXMgb2JqZWN0IHdhcyBjcmVh
dGVkLgogICBpbnQ2NF90IGNyZWF0aW9uX3RpbWVfbXM7CkBAIC0zNTIsNiArMzAyLDggQEAgc3Ry
dWN0IFBhY2tldEZlZWRiYWNrIHsKICAgaW50NjRfdCBsb25nX3NlcXVlbmNlX251bWJlcjsKICAg
Ly8gU2l6ZSBvZiB0aGUgcGFja2V0IGV4Y2x1ZGluZyBSVFAgaGVhZGVycy4KICAgc2l6ZV90IHBh
eWxvYWRfc2l6ZTsKKyAgLy8gU2l6ZSBvZiBwcmVjZWVkaW5nIHBhY2tldHMgdGhhdCBhcmUgbm90
IHBhcnQgb2YgZmVlZGJhY2suCisgIHNpemVfdCB1bmFja25vd2xlZGdlZF9kYXRhOwogICAvLyBU
aGUgbmV0d29yayByb3V0ZSBpZHMgdGhhdCB0aGlzIHBhY2tldCBpcyBhc3NvY2lhdGVkIHdpdGgu
CiAgIHVpbnQxNl90IGxvY2FsX25ldF9pZDsKICAgdWludDE2X3QgcmVtb3RlX25ldF9pZDsKQEAg
LTQ4OSwxMyArNDQxLDggQEAgc3RydWN0IFJ0cFBhY2tldENvdW50ZXIgewogICAgIHBhY2tldHMg
LT0gb3RoZXIucGFja2V0czsKICAgfQogCi0gIHZvaWQgQWRkUGFja2V0KHNpemVfdCBwYWNrZXRf
bGVuZ3RoLCBjb25zdCBSVFBIZWFkZXImIGhlYWRlcikgewotICAgICsrcGFja2V0czsKLSAgICBo
ZWFkZXJfYnl0ZXMgKz0gaGVhZGVyLmhlYWRlckxlbmd0aDsKLSAgICBwYWRkaW5nX2J5dGVzICs9
IGhlYWRlci5wYWRkaW5nTGVuZ3RoOwotICAgIHBheWxvYWRfYnl0ZXMgKz0KLSAgICAgICAgcGFj
a2V0X2xlbmd0aCAtIChoZWFkZXIuaGVhZGVyTGVuZ3RoICsgaGVhZGVyLnBhZGRpbmdMZW5ndGgp
OwotICB9CisgIC8vIE5vdCBpbmxpbmVkLCBzaW5jZSB1c2Ugb2YgUnRwUGFja2V0IHdvdWxkIHJl
c3VsdCBpbiBjaXJjdWxhciBpbmNsdWRlcy4KKyAgdm9pZCBBZGRQYWNrZXQoY29uc3QgUnRwUGFj
a2V0JiBwYWNrZXQpOwogCiAgIHNpemVfdCBUb3RhbEJ5dGVzKCkgY29uc3QgewogICAgIHJldHVy
biBoZWFkZXJfYnl0ZXMgKyBwYXlsb2FkX2J5dGVzICsgcGFkZGluZ19ieXRlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5jYwpp
bmRleCBkMjRjMWIwOTRjNTFmOTk4ZWRhYjY1ZDZkZWY5ZTM3OTM3YThiZmUzLi4wNjFmODI3NjVj
Yzc1YmFhM2NhMDRjZGQ0M2M2NGYxOTkyZGQ1ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL21vY2tzL21vY2tf
cnRwX3J0Y3AuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9tb2Nrcy9tb2NrX3J0cF9ydGNwLmNjCkBAIC0xMiw5ICsxMiw2
IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1Nb2NrUnRwRGF0YTo6TW9ja1J0cERhdGEoKSA9
IGRlZmF1bHQ7Ci1Nb2NrUnRwRGF0YTo6fk1vY2tSdHBEYXRhKCkgPSBkZWZhdWx0OwotCiBNb2Nr
UnRwUnRjcDo6TW9ja1J0cFJ0Y3AoKSA9IGRlZmF1bHQ7CiBNb2NrUnRwUnRjcDo6fk1vY2tSdHBS
dGNwKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL21vY2tzL21vY2tfcnRwX3J0Y3AuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5oCmluZGV4IDZkNWJkZTQ3ODhmNGE2YWU0OGZmNmE4ZGRj
MDg0Zjc2NjM0NGZhZGUuLjNiOWI5NDNjNDUzOTUwNDEzMGQyNmQ1NWJjNGVjZjM0YTljY2I1YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19ydHBfcnRjcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3AvbW9ja3MvbW9ja19y
dHBfcnRjcC5oCkBAIC0yNywxNyArMjcsNiBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xh
c3MgTW9ja1J0cERhdGEgOiBwdWJsaWMgUnRwRGF0YSB7Ci0gcHVibGljOgotICBNb2NrUnRwRGF0
YSgpOwotICB+TW9ja1J0cERhdGEoKTsKLQotICBNT0NLX01FVEhPRDMoT25SZWNlaXZlZFBheWxv
YWREYXRhLAotICAgICAgICAgICAgICAgaW50MzJfdChjb25zdCB1aW50OF90KiBwYXlsb2FkX2Rh
dGEsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkX3NpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciogcnRwX2hlYWRlcikpOwotfTsK
LQogY2xhc3MgTW9ja1J0cFJ0Y3AgOiBwdWJsaWMgUnRwUnRjcCB7CiAgcHVibGljOgogICBNb2Nr
UnRwUnRjcCgpOwpAQCAtNTIsNiArNDEsNyBAQCBjbGFzcyBNb2NrUnRwUnRjcCA6IHB1YmxpYyBS
dHBSdGNwIHsKICAgTU9DS19NRVRIT0QyKFJlZ2lzdGVyVmlkZW9TZW5kUGF5bG9hZCwKICAgICAg
ICAgICAgICAgIHZvaWQoaW50IHBheWxvYWRfdHlwZSwgY29uc3QgY2hhciogcGF5bG9hZF9uYW1l
KSk7CiAgIE1PQ0tfTUVUSE9EMShEZVJlZ2lzdGVyU2VuZFBheWxvYWQsIGludDMyX3QoaW50OF90
IHBheWxvYWRfdHlwZSkpOworICBNT0NLX01FVEhPRDEoU2V0RXh0bWFwQWxsb3dNaXhlZCwgdm9p
ZChib29sIGV4dG1hcF9hbGxvd19taXhlZCkpOwogICBNT0NLX01FVEhPRDIoUmVnaXN0ZXJTZW5k
UnRwSGVhZGVyRXh0ZW5zaW9uLAogICAgICAgICAgICAgICAgaW50MzJfdChSVFBFeHRlbnNpb25U
eXBlIHR5cGUsIHVpbnQ4X3QgaWQpKTsKICAgTU9DS19NRVRIT0QyKFJlZ2lzdGVyUnRwSGVhZGVy
RXh0ZW5zaW9uLApAQCAtODMsNiArNzMsNyBAQCBjbGFzcyBNb2NrUnRwUnRjcCA6IHB1YmxpYyBS
dHBSdGNwIHsKICAgTU9DS19DT05TVF9NRVRIT0QwKFNlbmRpbmcsIGJvb2woKSk7CiAgIE1PQ0tf
TUVUSE9EMShTZXRTZW5kaW5nTWVkaWFTdGF0dXMsIHZvaWQoYm9vbCBzZW5kaW5nKSk7CiAgIE1P
Q0tfQ09OU1RfTUVUSE9EMChTZW5kaW5nTWVkaWEsIGJvb2woKSk7CisgIE1PQ0tfTUVUSE9EMShT
ZXRBc1BhcnRPZkFsbG9jYXRpb24sIHZvaWQoYm9vbCkpOwogICBNT0NLX0NPTlNUX01FVEhPRDQo
Qml0cmF0ZVNlbnQsCiAgICAgICAgICAgICAgICAgICAgICB2b2lkKHVpbnQzMl90KiB0b3RhbF9y
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCogdmlkZW9fcmF0ZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1dGluZ19zb3VyY2VzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29u
dHJpYnV0aW5nX3NvdXJjZXMuY2MKaW5kZXggODUzNzA2YzRmNWRjMTQwOTA5ZWUyMmM5ZTI2YzAy
ZDQ3ZmFjMWI5NC4uNjRkYzQ0M2UyOTVmNWM0NmQ4YTcwYTBkNzFkZjNmZmNmNWM4MzczNiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXMuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
Y29udHJpYnV0aW5nX3NvdXJjZXMuY2MKQEAgLTI1LDkgKzI1LDExIEBAIENvbnRyaWJ1dGluZ1Nv
dXJjZXM6OkNvbnRyaWJ1dGluZ1NvdXJjZXMoKSA9IGRlZmF1bHQ7CiBDb250cmlidXRpbmdTb3Vy
Y2VzOjp+Q29udHJpYnV0aW5nU291cmNlcygpID0gZGVmYXVsdDsKIAogdm9pZCBDb250cmlidXRp
bmdTb3VyY2VzOjpVcGRhdGUoaW50NjRfdCBub3dfbXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50MzJfdD4gY3NyY3MpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQzMl90
PiBjc3JjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFs
PHVpbnQ4X3Q+IGF1ZGlvX2xldmVsKSB7CisgIEVudHJ5IGVudHJ5ID0geyBub3dfbXMsIGF1ZGlv
X2xldmVsIH07CiAgIGZvciAodWludDMyX3QgY3NyYyA6IGNzcmNzKSB7Ci0gICAgbGFzdF9zZWVu
X21zX1tjc3JjXSA9IG5vd19tczsKKyAgICBhY3RpdmVfY3NyY3NfW2NzcmNdID0gZW50cnk7CiAg
IH0KICAgaWYgKCFuZXh0X3BydW5pbmdfbXNfKSB7CiAgICAgbmV4dF9wcnVuaW5nX21zXyA9IG5v
d19tcyArIGtQcnVuaW5nSW50ZXJ2YWxNczsKQEAgLTQzLDkgKzQ1LDE2IEBAIHZvaWQgQ29udHJp
YnV0aW5nU291cmNlczo6VXBkYXRlKGludDY0X3Qgbm93X21zLAogLy8gbm9uLWNvbnN0Lgogc3Rk
Ojp2ZWN0b3I8UnRwU291cmNlPiBDb250cmlidXRpbmdTb3VyY2VzOjpHZXRTb3VyY2VzKGludDY0
X3Qgbm93X21zKSBjb25zdCB7CiAgIHN0ZDo6dmVjdG9yPFJ0cFNvdXJjZT4gc291cmNlczsKLSAg
Zm9yIChhdXRvJiByZWNvcmQgOiBsYXN0X3NlZW5fbXNfKSB7Ci0gICAgaWYgKHJlY29yZC5zZWNv
bmQgPj0gbm93X21zIC0ga0hpc3RvcnlNcykgewotICAgICAgc291cmNlcy5lbXBsYWNlX2JhY2so
cmVjb3JkLnNlY29uZCwgcmVjb3JkLmZpcnN0LCBSdHBTb3VyY2VUeXBlOjpDU1JDKTsKKyAgZm9y
IChhdXRvJiByZWNvcmQgOiBhY3RpdmVfY3NyY3NfKSB7CisgICAgaWYgKHJlY29yZC5zZWNvbmQu
bGFzdF9zZWVuX21zID49IG5vd19tcyAtIGtIaXN0b3J5TXMpIHsKKyAgICAgIGlmIChyZWNvcmQu
c2Vjb25kLmF1ZGlvX2xldmVsLmhhc192YWx1ZSgpKSB7CisgICAgICAgIHNvdXJjZXMuZW1wbGFj
ZV9iYWNrKHJlY29yZC5zZWNvbmQubGFzdF9zZWVuX21zLCByZWNvcmQuZmlyc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJ0cFNvdXJjZVR5cGU6OkNTUkMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpyZWNvcmQuc2Vjb25kLmF1ZGlvX2xldmVsKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHNvdXJjZXMuZW1wbGFjZV9iYWNrKHJlY29yZC5zZWNvbmQubGFzdF9zZWVu
X21zLCByZWNvcmQuZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFNvdXJj
ZVR5cGU6OkNTUkMpOworICAgICAgfQogICAgIH0KICAgfQogCkBAIC01NCwxNSArNjMsMjAgQEAg
c3RkOjp2ZWN0b3I8UnRwU291cmNlPiBDb250cmlidXRpbmdTb3VyY2VzOjpHZXRTb3VyY2VzKGlu
dDY0X3Qgbm93X21zKSBjb25zdCB7CiAKIC8vIERlbGV0ZSBzdGFsZSBlbnRyaWVzLgogdm9pZCBD
b250cmlidXRpbmdTb3VyY2VzOjpEZWxldGVPbGRFbnRyaWVzKGludDY0X3Qgbm93X21zKSB7Ci0g
IGZvciAoYXV0byBpdCA9IGxhc3Rfc2Vlbl9tc18uYmVnaW4oKTsgaXQgIT0gbGFzdF9zZWVuX21z
Xy5lbmQoKTspIHsKLSAgICBpZiAoaXQtPnNlY29uZCA+PSBub3dfbXMgLSBrSGlzdG9yeU1zKSB7
CisgIGZvciAoYXV0byBpdCA9IGFjdGl2ZV9jc3Jjc18uYmVnaW4oKTsgaXQgIT0gYWN0aXZlX2Nz
cmNzXy5lbmQoKTspIHsKKyAgICBpZiAoaXQtPnNlY29uZC5sYXN0X3NlZW5fbXMgPj0gbm93X21z
IC0ga0hpc3RvcnlNcykgewogICAgICAgLy8gU3RpbGwgcmVsZXZhbnQuCiAgICAgICArK2l0Owog
ICAgIH0gZWxzZSB7Ci0gICAgICBpdCA9IGxhc3Rfc2Vlbl9tc18uZXJhc2UoaXQpOworICAgICAg
aXQgPSBhY3RpdmVfY3NyY3NfLmVyYXNlKGl0KTsKICAgICB9CiAgIH0KICAgbmV4dF9wcnVuaW5n
X21zXyA9IG5vd19tcyArIGtQcnVuaW5nSW50ZXJ2YWxNczsKIH0KIAorQ29udHJpYnV0aW5nU291
cmNlczo6RW50cnk6OkVudHJ5KCkgPSBkZWZhdWx0OworQ29udHJpYnV0aW5nU291cmNlczo6RW50
cnk6OkVudHJ5KGludDY0X3QgdGltZXN0YW1wX21zLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+IGF1ZGlvX2xldmVsX2FyZykKKyAgICA6
IGxhc3Rfc2Vlbl9tcyh0aW1lc3RhbXBfbXMpLCBhdWRpb19sZXZlbChhdWRpb19sZXZlbF9hcmcp
IHt9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRy
aWJ1dGluZ19zb3VyY2VzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9jb250cmlidXRpbmdfc291cmNlcy5oCmluZGV4
IDFhNGE1NzJkOGY1NDQzMWJhNmE1MjNlNDBmNWQzM2FmMDFmOGZiMjIuLjVlMzQ1MzljZTQ3N2Uw
YjdiZWRhZjgwZDA5OWE3NDQ3MzUxMTRlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1
dGluZ19zb3VyY2VzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvY29udHJpYnV0aW5nX3NvdXJjZXMuaApAQCAt
MTgsNyArMTgsOCBAQAogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1
ZGUgImFwaS9hcnJheV92aWV3LmgiCi0jaW5jbHVkZSAiYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNl
LmgiCisjaW5jbHVkZSAiYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgiICAvLyBGb3IgUnRwU291
cmNlCisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiICAgICAgICAvLyBGb3Iga051bU1p
bGxpc2Vjc1BlclNlYwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMzEsMTggKzMyLDI1IEBA
IGNsYXNzIENvbnRyaWJ1dGluZ1NvdXJjZXMgewogICBDb250cmlidXRpbmdTb3VyY2VzKCk7CiAg
IH5Db250cmlidXRpbmdTb3VyY2VzKCk7CiAKLSAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvMzMz
Myk6IE5lZWRzIHRvIGJlIGV4dGVuZGVkIHdpdGggYXVkaW8tbGV2ZWwsIHRvCi0gIC8vIHN1cHBv
cnQgUkZDNjQ2NS4KLSAgdm9pZCBVcGRhdGUoaW50NjRfdCBub3dfbXMsIHJ0Yzo6QXJyYXlWaWV3
PGNvbnN0IHVpbnQzMl90PiBjc3Jjcyk7CisgIHZvaWQgVXBkYXRlKGludDY0X3Qgbm93X21zLCBy
dGM6OkFycmF5Vmlldzxjb25zdCB1aW50MzJfdD4gY3NyY3MsCisgICAgICAgICAgICAgIGFic2w6
Om9wdGlvbmFsPHVpbnQ4X3Q+IGF1ZGlvX2xldmVsKTsKIAogICAvLyBSZXR1cm5zIGNvbnRyaWJ1
dGluZyBzb3VyY2VzIHNlZW4gdGhlIGxhc3QgMTAgcy4KICAgc3RkOjp2ZWN0b3I8UnRwU291cmNl
PiBHZXRTb3VyY2VzKGludDY0X3Qgbm93X21zKSBjb25zdDsKIAogIHByaXZhdGU6CisgIHN0cnVj
dCBFbnRyeSB7CisgICAgRW50cnkoKTsKKyAgICBFbnRyeShpbnQ2NF90IHRpbWVzdGFtcF9tcywg
YWJzbDo6b3B0aW9uYWw8dWludDhfdD4gYXVkaW9fbGV2ZWwpOworCisgICAgaW50NjRfdCBsYXN0
X3NlZW5fbXM7CisgICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gYXVkaW9fbGV2ZWw7CisgIH07
CisKICAgdm9pZCBEZWxldGVPbGRFbnRyaWVzKGludDY0X3Qgbm93X21zKTsKIAogICAvLyBJbmRl
eGVkIGJ5IGNzcmMuCi0gIHN0ZDo6bWFwPHVpbnQzMl90LCBpbnQ2NF90PiBsYXN0X3NlZW5fbXNf
OworICBzdGQ6Om1hcDx1aW50MzJfdCwgRW50cnk+IGFjdGl2ZV9jc3Jjc187CiAgIGFic2w6Om9w
dGlvbmFsPGludDY0X3Q+IG5leHRfcHJ1bmluZ19tc187CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9jb250cmlidXRpbmdfc291cmNlc191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1
dGluZ19zb3VyY2VzX3VuaXR0ZXN0LmNjCmluZGV4IDhiMjJkMjZjOTQ4MDRjZjQ0MjJjMGRiNjFk
NjU4NzNjMThlNGJjZDIuLjVmMWQ4ZDNkMTEyMDQyYzg5NDI0MTU2NzliZDdkYmI5MmU2ZmMxZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL2NvbnRyaWJ1dGluZ19zb3VyY2VzX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL2NvbnRyaWJ1dGluZ19zb3VyY2VzX3VuaXR0ZXN0LmNjCkBAIC0zMCw3ICsz
MCw3IEBAIFRFU1QoQ29udHJpYnV0aW5nU291cmNlc1Rlc3QsIFJlY29yZFNvdXJjZXMpIHsKICAg
Q29udHJpYnV0aW5nU291cmNlcyBjc3JjczsKICAgY29uc3RleHByIHVpbnQzMl90IGtDc3Jjc1td
ID0ge2tDc3JjMSwga0NzcmMyfTsKICAgY29uc3RleHByIGludDY0X3Qga1RpbWUxID0gMTA7Ci0g
IGNzcmNzLlVwZGF0ZShrVGltZTEsIGtDc3Jjcyk7CisgIGNzcmNzLlVwZGF0ZShrVGltZTEsIGtD
c3JjcywgYWJzbDo6bnVsbG9wdCk7CiAgIEVYUEVDVF9USEFUKAogICAgICAgY3NyY3MuR2V0U291
cmNlcyhrVGltZTEpLAogICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoUnRwU291cmNlKGtUaW1l
MSwga0NzcmMxLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSwKQEAgLTQ1LDEyICs0NSwxMiBAQCBURVNU
KENvbnRyaWJ1dGluZ1NvdXJjZXNUZXN0LCBVcGRhdGVTb3VyY2VzKSB7CiAgIGNvbnN0ZXhwciB1
aW50MzJfdCBrQ3NyY3MyW10gPSB7a0NzcmMyLCBrQ3NyYzN9OwogICBjb25zdGV4cHIgaW50NjRf
dCBrVGltZTEgPSAxMDsKICAgY29uc3RleHByIGludDY0X3Qga1RpbWUyID0ga1RpbWUxICsgNSAq
IHJ0Yzo6a051bU1pbGxpc2Vjc1BlclNlYzsKLSAgY3NyY3MuVXBkYXRlKGtUaW1lMSwga0NzcmNz
MSk7CisgIGNzcmNzLlVwZGF0ZShrVGltZTEsIGtDc3JjczEsIGFic2w6Om51bGxvcHQpOwogICBF
WFBFQ1RfVEhBVCgKICAgICAgIGNzcmNzLkdldFNvdXJjZXMoa1RpbWUxKSwKICAgICAgIFVub3Jk
ZXJlZEVsZW1lbnRzQXJlKFJ0cFNvdXJjZShrVGltZTEsIGtDc3JjMSwgUnRwU291cmNlVHlwZTo6
Q1NSQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBTb3VyY2Uoa1RpbWUxLCBrQ3Ny
YzIsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpKSk7Ci0gIGNzcmNzLlVwZGF0ZShrVGltZTIsIGtDc3Jj
czIpOworICBjc3Jjcy5VcGRhdGUoa1RpbWUyLCBrQ3NyY3MyLCBhYnNsOjpudWxsb3B0KTsKICAg
RVhQRUNUX1RIQVQoCiAgICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtUaW1lMiksCiAgICAgICBVbm9y
ZGVyZWRFbGVtZW50c0FyZShSdHBTb3VyY2Uoa1RpbWUxLCBrQ3NyYzEsIFJ0cFNvdXJjZVR5cGU6
OkNTUkMpLApAQCAtNjUsMTIgKzY1LDEyIEBAIFRFU1QoQ29udHJpYnV0aW5nU291cmNlc1Rlc3Qs
IFJldHVyblJlY2VudE9ubHkpIHsKICAgY29uc3RleHByIGludDY0X3Qga1RpbWUxID0gMTA7CiAg
IGNvbnN0ZXhwciBpbnQ2NF90IGtUaW1lMiA9IGtUaW1lMSArIDUgKiBydGM6OmtOdW1NaWxsaXNl
Y3NQZXJTZWM7CiAgIGNvbnN0ZXhwciBpbnQ2NF90IGtUaW1lMyA9IGtUaW1lMSArIDEyICogcnRj
OjprTnVtTWlsbGlzZWNzUGVyU2VjOwotICBjc3Jjcy5VcGRhdGUoa1RpbWUxLCBrQ3NyY3MxKTsK
KyAgY3NyY3MuVXBkYXRlKGtUaW1lMSwga0NzcmNzMSwgYWJzbDo6bnVsbG9wdCk7CiAgIEVYUEVD
VF9USEFUKAogICAgICAgY3NyY3MuR2V0U291cmNlcyhrVGltZTEpLAogICAgICAgVW5vcmRlcmVk
RWxlbWVudHNBcmUoUnRwU291cmNlKGtUaW1lMSwga0NzcmMxLCBSdHBTb3VyY2VUeXBlOjpDU1JD
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFNvdXJjZShrVGltZTEsIGtDc3JjMiwg
UnRwU291cmNlVHlwZTo6Q1NSQykpKTsKLSAgY3NyY3MuVXBkYXRlKGtUaW1lMiwga0NzcmNzMik7
CisgIGNzcmNzLlVwZGF0ZShrVGltZTIsIGtDc3JjczIsIGFic2w6Om51bGxvcHQpOwogICBFWFBF
Q1RfVEhBVCgKICAgICAgIGNzcmNzLkdldFNvdXJjZXMoa1RpbWUzKSwKICAgICAgIFVub3JkZXJl
ZEVsZW1lbnRzQXJlKFJ0cFNvdXJjZShrVGltZTIsIGtDc3JjMiwgUnRwU291cmNlVHlwZTo6Q1NS
QyksCkBAIC04NCwxOCArODQsMTggQEAgVEVTVChDb250cmlidXRpbmdTb3VyY2VzVGVzdCwgUHVy
Z2VPbGRTb3VyY2VzKSB7CiAgIGNvbnN0ZXhwciBpbnQ2NF90IGtUaW1lMSA9IDEwOwogICBjb25z
dGV4cHIgaW50NjRfdCBrVGltZTIgPSBrVGltZTEgKyAxMCAqIHJ0Yzo6a051bU1pbGxpc2Vjc1Bl
clNlYzsKICAgY29uc3RleHByIGludDY0X3Qga1RpbWUzID0ga1RpbWUxICsgMjAgKiBydGM6OmtO
dW1NaWxsaXNlY3NQZXJTZWM7Ci0gIGNzcmNzLlVwZGF0ZShrVGltZTEsIGtDc3JjczEpOworICBj
c3Jjcy5VcGRhdGUoa1RpbWUxLCBrQ3NyY3MxLCBhYnNsOjpudWxsb3B0KTsKICAgRVhQRUNUX1RI
QVQoCiAgICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtUaW1lMiksCiAgICAgICBVbm9yZGVyZWRFbGVt
ZW50c0FyZShSdHBTb3VyY2Uoa1RpbWUxLCBrQ3NyYzEsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwU291cmNlKGtUaW1lMSwga0NzcmMyLCBSdHBT
b3VyY2VUeXBlOjpDU1JDKSkpOwotICBjc3Jjcy5VcGRhdGUoa1RpbWUyLCBrQ3NyY3MyKTsKKyAg
Y3NyY3MuVXBkYXRlKGtUaW1lMiwga0NzcmNzMiwgYWJzbDo6bnVsbG9wdCk7CiAgIEVYUEVDVF9U
SEFUKAogICAgICAgY3NyY3MuR2V0U291cmNlcyhrVGltZTIpLAogICAgICAgVW5vcmRlcmVkRWxl
bWVudHNBcmUoUnRwU291cmNlKGtUaW1lMSwga0NzcmMxLCBSdHBTb3VyY2VUeXBlOjpDU1JDKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFNvdXJjZShrVGltZTIsIGtDc3JjMiwgUnRw
U291cmNlVHlwZTo6Q1NSQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBTb3VyY2Uo
a1RpbWUyLCBrQ3NyYzMsIFJ0cFNvdXJjZVR5cGU6OkNTUkMpKSk7Ci0gIGNzcmNzLlVwZGF0ZShr
VGltZTMsIGtDc3JjczIpOworICBjc3Jjcy5VcGRhdGUoa1RpbWUzLCBrQ3NyY3MyLCBhYnNsOjpu
dWxsb3B0KTsKICAgRVhQRUNUX1RIQVQoCiAgICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtUaW1lMyks
CiAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShSdHBTb3VyY2Uoa1RpbWUzLCBrQ3NyYzIsIFJ0
cFNvdXJjZVR5cGU6OkNTUkMpLApAQCAtMTA4LDQgKzEwOCwyMiBAQCBURVNUKENvbnRyaWJ1dGlu
Z1NvdXJjZXNUZXN0LCBQdXJnZU9sZFNvdXJjZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJ0cFNvdXJjZShrVGltZTMsIGtDc3JjMywgUnRwU291cmNlVHlwZTo6Q1NSQykpKTsKIH0K
IAorVEVTVChDb250cmlidXRpbmdTb3VyY2VzVGVzdCwgQXVkaW9MZXZlbCkgeworICBDb250cmli
dXRpbmdTb3VyY2VzIGNzcmNzOworICBjb25zdGV4cHIgdWludDMyX3Qga0NzcmNzW10gPSB7a0Nz
cmMxLCBrQ3NyYzJ9OworICBjb25zdGV4cHIgaW50NjRfdCBrVGltZTEgPSAxMDsKKyAgY3NyY3Mu
VXBkYXRlKGtUaW1lMSwga0NzcmNzLCA0Nyk7CisgIEVYUEVDVF9USEFUKAorICAgICAgY3NyY3Mu
R2V0U291cmNlcyhrVGltZTEpLAorICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoUnRwU291cmNl
KGtUaW1lMSwga0NzcmMxLCBSdHBTb3VyY2VUeXBlOjpDU1JDLCA0NyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSdHBTb3VyY2Uoa1RpbWUxLCBrQ3NyYzIsIFJ0cFNvdXJjZVR5cGU6OkNT
UkMsIDQ3KSkpOworCisgIGNvbnN0ZXhwciB1aW50MzJfdCBrQ3NyY3NTdWJzZXRbXSA9IHtrQ3Ny
YzF9OworICBjc3Jjcy5VcGRhdGUoa1RpbWUxICsgMSwga0NzcmNzU3Vic2V0LCBhYnNsOjpudWxs
b3B0KTsKKyAgRVhQRUNUX1RIQVQoCisgICAgICBjc3Jjcy5HZXRTb3VyY2VzKGtUaW1lMSArIDEp
LAorICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoUnRwU291cmNlKGtUaW1lMSArIDEsIGtDc3Jj
MSwgUnRwU291cmNlVHlwZTo6Q1NSQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBT
b3VyY2Uoa1RpbWUxLCBrQ3NyYzIsIFJ0cFNvdXJjZVR5cGU6OkNTUkMsIDQ3KSkpOworfQorCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9kdG1mX3F1ZXVlLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvZHRtZl9xdWV1ZS5jYwppbmRleCA4NmRkYjEwNWY5MjRlOTk4ZjE5ZGVlMjk2
YjBlMTljMGM1YTE4NGUxLi4xMGU2NzQ3ODlhNGJhMGZjZjY3NjFiN2ZjMzNiYjVhOWQ5NWE4ZjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9kdG1mX3F1ZXVlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZf
cXVldWUuY2MKQEAgLTEwLDYgKzEwLDEwIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9kdG1mX3F1ZXVlLmgiCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgorCiBuYW1lc3BhY2UgewogY29uc3RleHByIHNpemVfdCBrRHRt
Zk91dGJhbmRNYXggPSAyMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZfcXVldWUuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL2R0bWZfcXVldWUuaAppbmRleCBkYjcwYzk3NTA4MDAyODZmYTdlMzgxZjIyOWQy
ZTUxOTNlNDA2OTYxLi5lNTk1NWExMjk3YzQ0MzgzZGExOWM1NWQ0MTM4ODVhZDNmZDIxZmYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9kdG1mX3F1ZXVlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZHRtZl9xdWV1
ZS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX0RU
TUZfUVVFVUVfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfRFRNRl9RVUVVRV9I
XwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bGlzdD4KIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19o
ZWFkZXJfcmVhZGVyX3dyaXRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfaGVhZGVyX3JlYWRlcl93
cml0ZXIuY2MKaW5kZXggZDc2NjZlMTE5MmEzMzljYWZiMTkyNTE2NzM1MzA5ZmFjNjNiOGFkZC4u
YjgxMzM0MGVhNjhkODU1NWU0NTM5Njg3YWVjODVmNWZiZjU5OTU1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvZmxleGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mbGV4
ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmNjCkBAIC0xMiwxMiArMTIsMTEgQEAKIAogI2luY2x1
ZGUgPHN0cmluZy5oPgogCi0jaW5jbHVkZSA8dXRpbGl0eT4KLQogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L2ZsZXhmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuaAppbmRleCAxZDZkZGRhNGI0MDk4NWY0YjYx
MjE2NmE0NTExMjlkYjM3OTZjOTMwLi5kMzA1YzRjMjg4ZGUxNGZkYjg0MGI3YWNjYTJlYWQ4M2Nm
MWMyMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mbGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5oCkBAIC0xMSw2
ICsxMSw5IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX0ZMRVhGRUNfSEVBREVS
X1JFQURFUl9XUklURVJfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfRkxFWEZF
Q19IRUFERVJfUkVBREVSX1dSSVRFUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVk
ZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJk
X2Vycm9yX2NvcnJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9mbGV4ZmVjX3JlY2VpdmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZmxleGZlY19yZWNlaXZlci5j
YwppbmRleCBjM2VkNGQ1M2IyYTQzZmY5ZTZkZWM5MDljZmRlNGIxNjU5NTFkM2E5Li4xYTYyYmNl
ZDY4YTRkMmYyMmZiMWE2ZTIzMGY3MjhjNTEyYjRmMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9m
bGV4ZmVjX3JlY2VpdmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfcmVjZWl2ZXIuY2MKQEAg
LTEwLDYgKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4
ZmVjX3JlY2VpdmVyLmgiCiAKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImFwaS9h
cnJheV92aWV3LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9mbGV4ZmVjX3NlbmRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNf
c2VuZGVyLmNjCmluZGV4IDI4NmY0N2M1ZmU4MDhkMjY3NDlmNWFiZjBmYWZhZTU0MmVhMWUxYmYu
LjEyMDRiMmQ5NzhjNDRjZmYxZGJiNzA5ZjUxYmMyYWQ4ODAwNmRlYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Av
c291cmNlL2ZsZXhmZWNfc2VuZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZsZXhmZWNfc2VuZGVyLmNj
CkBAIC0xMCwxMSArMTAsMTUgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVk
ZS9mbGV4ZmVjX3NlbmRlci5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8bGlz
dD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNs
dWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmNjCmluZGV4IGI3NDMxMTBiMmQ2MDI0ZWYw
MTUwYWE3OTM0ODdmY2Q1ZWExZWRjYmIuLmE1MmZlY2FkMThlNzBmM2MzNzJjOGNlOWQwODhkMTY4
ZjYwNDk2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb24uY2MKQEAgLTExLDExICsx
MSwxMCBAQAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3Jf
Y29ycmVjdGlvbi5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0
aG0+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUg
Im1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL2ZsZXhmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9l
cnJvcl9jb3JyZWN0aW9uLmgKaW5kZXggODE5ZjZiY2VjNTZhMTZlYTcwNzhiNDVmY2JhZGQzMDNm
MDFmYTM2NC4uYWRiNzU3MmFlNjcwYTk2NGVlZjVjMGZiMTEwOWFmY2RiZDMxMGQxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
Zm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmgKQEAgLTExLDE2ICsxMSwxNSBAQAogI2lmbmRlZiBN
T0RVTEVTX1JUUF9SVENQX1NPVVJDRV9GT1JXQVJEX0VSUk9SX0NPUlJFQ1RJT05fSF8KICNkZWZp
bmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfRk9SV0FSRF9FUlJPUl9DT1JSRUNUSU9OX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KLQogI2luY2x1ZGUgPGxp
c3Q+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgIm1v
ZHVsZXMvaW5jbHVkZS9tb2R1bGVfZmVjX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291
bnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9p
bnRlcm5hbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRlcm5hbC5j
YwppbmRleCA3ZTVmZDkxZTAzNTY0NGUwMWI2ZDE5M2UyNDExOWJhMzhhNjgwMzg3Li45YjAyMDI2
YTc3YzUwNWYzOGY4Njc3YzU1ZTU4NmJiY2VmOGM4YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9m
b3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50ZXJuYWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2Fy
ZF9lcnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25faW50
ZXJuYWwuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZlY19wcml2YXRlX3RhYmxlc19idXJz
dHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRl
cm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmgKaW5k
ZXggMmU4YTIwMjExM2FmOTQ4NjdiMWIxYTU4NjhkNjBiZTVmMGFlYzMwYy4uZWQ5M2Y1MjBlNTI2
ZmM3ODhiYzYyZWVlM2NkN2UyZTA0YzE0NGJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2Fy
ZF9lcnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJv
cl9jb3JyZWN0aW9uX2ludGVybmFsLmgKQEAgLTExLDkgKzExLDExIEBACiAjaWZuZGVmIE1PRFVM
RVNfUlRQX1JUQ1BfU09VUkNFX0ZPUldBUkRfRVJST1JfQ09SUkVDVElPTl9JTlRFUk5BTF9IXwog
I2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9GT1JXQVJEX0VSUk9SX0NPUlJFQ1RJT05f
SU5URVJOQUxfSF8KIAotI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5
cGVzLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKICNpbmNs
dWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVf
ZmVjX3R5cGVzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9wYWNrZXRfbG9zc19zdGF0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3BhY2tldF9sb3NzX3N0YXRzLmNjCmlu
ZGV4IDA3NjM0OGQyZGEzZTA4OTNlMWIwNTQ5MGNmNjBkYTgyNzlkNzg0ZDYuLjM2ZjBhNjNkNTk2
NjU3YmU2NDMzOTFmZGQ0YmRlMGRjOGMwZWZkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3BhY2tl
dF9sb3NzX3N0YXRzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3BhY2tldF9sb3NzX3N0YXRzLmNjCkBAIC0x
MCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9wYWNrZXRf
bG9zc19zdGF0cy5oIgogCisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxpdGVyYXRvcj4K
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3BsYXlvdXRfZGVsYXlfb3JhY2xlLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGxheW91
dF9kZWxheV9vcmFjbGUuY2MKaW5kZXggZDNhNzVkZDEzYWEzNGE5OWYxZGZjOTAwYzA3ZjQ0MjMy
MzM4MDZmNS4uZGMzM2ZhZDUzNmRlZDNkMDY3Zjc1MjUwMDIwOWQxMjliM2QyODQzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcGxheW91dF9kZWxheV9vcmFjbGUuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcGxh
eW91dF9kZWxheV9vcmFjbGUuY2MKQEAgLTEzLDcgKzEzLDYgQEAKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3BsYXlvdXRfZGVsYXlfb3JhY2xlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9wbGF5b3V0X2RlbGF5X29yYWNsZS5oCmluZGV4IDZlNmUyNTNjOGM3NmU1NmQ5
MmQ4YWI1YWUxYzI2M2YyNWZmODM2ODEuLjBlM2JkMzlhN2VmNWVlMWFlODVkZmYyNTZhYmJiNzk0
MzI2OGVlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3BsYXlvdXRfZGVsYXlfb3JhY2xlLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcGxheW91dF9kZWxheV9vcmFjbGUuaApAQCAtMTMsOCArMTMsMTAgQEAKIAog
I2luY2x1ZGUgPHN0ZGludC5oPgogCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9j
b21tb25fdHlwZXMuaCIKKyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWls
ZC9pbmNsdWRlKQorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVz
X3B1YmxpYy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9k
ZWZpbmVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVh
ZF9hbm5vdGF0aW9ucy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZWNlaXZlX3N0YXRpc3Rp
Y3NfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmNjCmluZGV4IGFi
ZTAyOGQ2NzAyMzdhODkyMWE2M2QwM2UyM2UwMGJmN2RhNzA5ZjkuLmJjNzQyZDFlYTYzZmY3YmQ0
Nzk0Y2NlYWMzZGRiZDgzM2QxMmM0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3Rh
dGlzdGljc19pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlzdGljc19pbXBsLmNj
CkBAIC0xMSwxMCArMTEsMTEgQEAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
ZWNlaXZlX3N0YXRpc3RpY3NfaW1wbC5oIgogCiAjaW5jbHVkZSA8bWF0aC5oPgotCiAjaW5jbHVk
ZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5j
bHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0
cmF0ZV9lc3RpbWF0b3IvdGVzdC9id2VfdGVzdF9sb2dnaW5nLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2NvbmZpZy5oIgpAQCAtMzMsMTMgKzM0LDE0IEBA
IFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OlN0cmVhbVN0YXRpc3RpY2lhbkltcGwoCiAgICAgdWlu
dDMyX3Qgc3NyYywKICAgICBDbG9jayogY2xvY2ssCiAgICAgYm9vbCBlbmFibGVfcmV0cmFuc21p
dF9kZXRlY3Rpb24sCisgICAgaW50IG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZCwKICAgICBSdGNw
U3RhdGlzdGljc0NhbGxiYWNrKiBydGNwX2NhbGxiYWNrLAogICAgIFN0cmVhbURhdGFDb3VudGVy
c0NhbGxiYWNrKiBydHBfY2FsbGJhY2spCiAgICAgOiBzc3JjXyhzc3JjKSwKICAgICAgIGNsb2Nr
XyhjbG9jayksCiAgICAgICBpbmNvbWluZ19iaXRyYXRlXyhrU3RhdGlzdGljc1Byb2Nlc3NJbnRl
cnZhbE1zLAogICAgICAgICAgICAgICAgICAgICAgICAgUmF0ZVN0YXRpc3RpY3M6OmtCcHNTY2Fs
ZSksCi0gICAgICBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGRfKGtEZWZhdWx0TWF4UmVvcmRlcmlu
Z1RocmVzaG9sZCksCisgICAgICBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGRfKG1heF9yZW9yZGVy
aW5nX3RocmVzaG9sZCksCiAgICAgICBlbmFibGVfcmV0cmFuc21pdF9kZXRlY3Rpb25fKGVuYWJs
ZV9yZXRyYW5zbWl0X2RldGVjdGlvbiksCiAgICAgICBqaXR0ZXJfcTRfKDApLAogICAgICAgY3Vt
dWxhdGl2ZV9sb3NzXygwKSwKQEAgLTQ4LDcgKzUwLDYgQEAgU3RyZWFtU3RhdGlzdGljaWFuSW1w
bDo6U3RyZWFtU3RhdGlzdGljaWFuSW1wbCgKICAgICAgIHJlY2VpdmVkX3NlcV9maXJzdF8oMCks
CiAgICAgICByZWNlaXZlZF9zZXFfbWF4XygwKSwKICAgICAgIHJlY2VpdmVkX3NlcV93cmFwc18o
MCksCi0gICAgICByZWNlaXZlZF9wYWNrZXRfb3ZlcmhlYWRfKDEyKSwKICAgICAgIGxhc3RfcmVw
b3J0X2lub3JkZXJfcGFja2V0c18oMCksCiAgICAgICBsYXN0X3JlcG9ydF9vbGRfcGFja2V0c18o
MCksCiAgICAgICBsYXN0X3JlcG9ydF9zZXFfbWF4XygwKSwKQEAgLTU3LDc5ICs1OCw3MSBAQCBT
dHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpTdHJlYW1TdGF0aXN0aWNpYW5JbXBsKAogCiBTdHJlYW1T
dGF0aXN0aWNpYW5JbXBsOjp+U3RyZWFtU3RhdGlzdGljaWFuSW1wbCgpID0gZGVmYXVsdDsKIAot
dm9pZCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpJbmNvbWluZ1BhY2tldChjb25zdCBSVFBIZWFk
ZXImIGhlYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHBhY2tldF9sZW5ndGgpIHsKLSAgU3RyZWFtRGF0YUNvdW50ZXJzIGNvdW50ZXJzOwot
ICB7Ci0gICAgcnRjOjpDcml0U2NvcGUgY3MoJnN0cmVhbV9sb2NrXyk7Ci0KLSAgICBib29sIHJl
dHJhbnNtaXR0ZWQgPQotICAgICAgICBlbmFibGVfcmV0cmFuc21pdF9kZXRlY3Rpb25fICYmIElz
UmV0cmFuc21pdE9mT2xkUGFja2V0KGhlYWRlcik7Ci0gICAgY291bnRlcnMgPSBVcGRhdGVDb3Vu
dGVycyhoZWFkZXIsIHBhY2tldF9sZW5ndGgsIHJldHJhbnNtaXR0ZWQpOwotICB9Ci0gIHJ0cF9j
YWxsYmFja18tPkRhdGFDb3VudGVyc1VwZGF0ZWQoY291bnRlcnMsIHNzcmNfKTsKK3ZvaWQgU3Ry
ZWFtU3RhdGlzdGljaWFuSW1wbDo6T25SdHBQYWNrZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQm
IHBhY2tldCkgeworICBTdHJlYW1EYXRhQ291bnRlcnMgY291bnRlcnMgPSBVcGRhdGVDb3VudGVy
cyhwYWNrZXQpOworICBpZiAocnRwX2NhbGxiYWNrXykKKyAgICBydHBfY2FsbGJhY2tfLT5EYXRh
Q291bnRlcnNVcGRhdGVkKGNvdW50ZXJzLCBzc3JjXyk7CiB9CiAKIFN0cmVhbURhdGFDb3VudGVy
cyBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpVcGRhdGVDb3VudGVycygKLSAgICBjb25zdCBSVFBI
ZWFkZXImIGhlYWRlciwKLSAgICBzaXplX3QgcGFja2V0X2xlbmd0aCwKLSAgICBib29sIHJldHJh
bnNtaXR0ZWQpIHsKLSAgYm9vbCBpbl9vcmRlciA9IEluT3JkZXJQYWNrZXRJbnRlcm5hbChoZWFk
ZXIuc2VxdWVuY2VOdW1iZXIpOwotICBSVENfRENIRUNLX0VRKHNzcmNfLCBoZWFkZXIuc3NyYyk7
Ci0gIGluY29taW5nX2JpdHJhdGVfLlVwZGF0ZShwYWNrZXRfbGVuZ3RoLCBjbG9ja18tPlRpbWVJ
bk1pbGxpc2Vjb25kcygpKTsKLSAgcmVjZWl2ZV9jb3VudGVyc18udHJhbnNtaXR0ZWQuQWRkUGFj
a2V0KHBhY2tldF9sZW5ndGgsIGhlYWRlcik7Ci0gIGlmICghaW5fb3JkZXIgJiYgcmV0cmFuc21p
dHRlZCkgewotICAgIHJlY2VpdmVfY291bnRlcnNfLnJldHJhbnNtaXR0ZWQuQWRkUGFja2V0KHBh
Y2tldF9sZW5ndGgsIGhlYWRlcik7CisgICAgY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tl
dCkgeworICBydGM6OkNyaXRTY29wZSBjcygmc3RyZWFtX2xvY2tfKTsKKyAgUlRDX0RDSEVDS19F
UShzc3JjXywgcGFja2V0LlNzcmMoKSk7CisgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlciA9IHBh
Y2tldC5TZXF1ZW5jZU51bWJlcigpOworICBib29sIGluX29yZGVyID0KKyAgICAgIC8vIEZpcnN0
IHBhY2tldCBpcyBhbHdheXMgaW4gb3JkZXIuCisgICAgICBsYXN0X3JlY2VpdmVfdGltZV9tc18g
PT0gMCB8fAorICAgICAgSXNOZXdlclNlcXVlbmNlTnVtYmVyKHNlcXVlbmNlX251bWJlciwgcmVj
ZWl2ZWRfc2VxX21heF8pIHx8CisgICAgICAvLyBJZiB3ZSBoYXZlIGEgcmVzdGFydCBvZiB0aGUg
cmVtb3RlIHNpZGUgdGhpcyBwYWNrZXQgaXMgc3RpbGwgaW4gb3JkZXIuCisgICAgICAhSXNOZXdl
clNlcXVlbmNlTnVtYmVyKHNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVjZWl2ZWRfc2VxX21heF8gLSBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGRfKTsKKyAg
aW50NjRfdCBub3dfbXMgPSBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpOworCisgIGluY29t
aW5nX2JpdHJhdGVfLlVwZGF0ZShwYWNrZXQuc2l6ZSgpLCBub3dfbXMpOworICByZWNlaXZlX2Nv
dW50ZXJzXy50cmFuc21pdHRlZC5BZGRQYWNrZXQocGFja2V0KTsKKyAgaWYgKCFpbl9vcmRlciAm
JiBlbmFibGVfcmV0cmFuc21pdF9kZXRlY3Rpb25fICYmCisgICAgICBJc1JldHJhbnNtaXRPZk9s
ZFBhY2tldChwYWNrZXQsIG5vd19tcykpIHsKKyAgICByZWNlaXZlX2NvdW50ZXJzXy5yZXRyYW5z
bWl0dGVkLkFkZFBhY2tldChwYWNrZXQpOwogICB9CiAKICAgaWYgKHJlY2VpdmVfY291bnRlcnNf
LnRyYW5zbWl0dGVkLnBhY2tldHMgPT0gMSkgewotICAgIHJlY2VpdmVkX3NlcV9maXJzdF8gPSBo
ZWFkZXIuc2VxdWVuY2VOdW1iZXI7Ci0gICAgcmVjZWl2ZV9jb3VudGVyc18uZmlyc3RfcGFja2V0
X3RpbWVfbXMgPSBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpOworICAgIHJlY2VpdmVkX3Nl
cV9maXJzdF8gPSBwYWNrZXQuU2VxdWVuY2VOdW1iZXIoKTsKKyAgICByZWNlaXZlX2NvdW50ZXJz
Xy5maXJzdF9wYWNrZXRfdGltZV9tcyA9IG5vd19tczsKICAgfQogCiAgIC8vIENvdW50IG9ubHkg
dGhlIG5ldyBwYWNrZXRzIHJlY2VpdmVkLiBUaGF0IGlzLCBpZiBwYWNrZXRzIDEsIDIsIDMsIDUs
IDQsIDYKICAgLy8gYXJlIHJlY2VpdmVkLCA0IHdpbGwgYmUgaWdub3JlZC4KICAgaWYgKGluX29y
ZGVyKSB7Ci0gICAgLy8gQ3VycmVudCB0aW1lIGluIHNhbXBsZXMuCi0gICAgTnRwVGltZSByZWNl
aXZlX3RpbWUgPSBjbG9ja18tPkN1cnJlbnROdHBUaW1lKCk7Ci0KICAgICAvLyBXcm9uZyBpZiB3
ZSB1c2UgUmV0cmFuc21pdE9mT2xkUGFja2V0LgogICAgIGlmIChyZWNlaXZlX2NvdW50ZXJzXy50
cmFuc21pdHRlZC5wYWNrZXRzID4gMSAmJgotICAgICAgICByZWNlaXZlZF9zZXFfbWF4XyA+IGhl
YWRlci5zZXF1ZW5jZU51bWJlcikgeworICAgICAgICByZWNlaXZlZF9zZXFfbWF4XyA+IHBhY2tl
dC5TZXF1ZW5jZU51bWJlcigpKSB7CiAgICAgICAvLyBXcmFwIGFyb3VuZCBkZXRlY3RlZC4KICAg
ICAgIHJlY2VpdmVkX3NlcV93cmFwc18rKzsKICAgICB9CiAgICAgLy8gTmV3IG1heC4KLSAgICBy
ZWNlaXZlZF9zZXFfbWF4XyA9IGhlYWRlci5zZXF1ZW5jZU51bWJlcjsKKyAgICByZWNlaXZlZF9z
ZXFfbWF4XyA9IHBhY2tldC5TZXF1ZW5jZU51bWJlcigpOwogCiAgICAgLy8gSWYgbmV3IHRpbWUg
c3RhbXAgYW5kIG1vcmUgdGhhbiBvbmUgaW4tb3JkZXIgcGFja2V0IHJlY2VpdmVkLCBjYWxjdWxh
dGUKICAgICAvLyBuZXcgaml0dGVyIHN0YXRpc3RpY3MuCi0gICAgaWYgKGhlYWRlci50aW1lc3Rh
bXAgIT0gbGFzdF9yZWNlaXZlZF90aW1lc3RhbXBfICYmCisgICAgaWYgKHBhY2tldC5UaW1lc3Rh
bXAoKSAhPSBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF8gJiYKICAgICAgICAgKHJlY2VpdmVfY291
bnRlcnNfLnRyYW5zbWl0dGVkLnBhY2tldHMgLQogICAgICAgICAgcmVjZWl2ZV9jb3VudGVyc18u
cmV0cmFuc21pdHRlZC5wYWNrZXRzKSA+IDEpIHsKLSAgICAgIFVwZGF0ZUppdHRlcihoZWFkZXIs
IHJlY2VpdmVfdGltZSk7CisgICAgICBVcGRhdGVKaXR0ZXIocGFja2V0LCBub3dfbXMpOwogICAg
IH0KLSAgICBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF8gPSBoZWFkZXIudGltZXN0YW1wOwotICAg
IGxhc3RfcmVjZWl2ZV90aW1lX250cF8gPSByZWNlaXZlX3RpbWU7Ci0gICAgbGFzdF9yZWNlaXZl
X3RpbWVfbXNfID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKTsKKyAgICBsYXN0X3JlY2Vp
dmVkX3RpbWVzdGFtcF8gPSBwYWNrZXQuVGltZXN0YW1wKCk7CisgICAgbGFzdF9yZWNlaXZlX3Rp
bWVfbXNfID0gbm93X21zOwogICB9Ci0KLSAgc2l6ZV90IHBhY2tldF9vaCA9IGhlYWRlci5oZWFk
ZXJMZW5ndGggKyBoZWFkZXIucGFkZGluZ0xlbmd0aDsKLQotICAvLyBPdXIgbWVhc3VyZWQgb3Zl
cmhlYWQuIEZpbHRlciBmcm9tIFJGQyA1MTA0IDQuMi4xLjI6Ci0gIC8vIGF2Z19PSCAobmV3KSA9
IDE1LzE2KmF2Z19PSCAob2xkKSArIDEvMTYqcGNrdF9PSCwKLSAgcmVjZWl2ZWRfcGFja2V0X292
ZXJoZWFkXyA9ICgxNSAqIHJlY2VpdmVkX3BhY2tldF9vdmVyaGVhZF8gKyBwYWNrZXRfb2gpID4+
IDQ7CiAgIHJldHVybiByZWNlaXZlX2NvdW50ZXJzXzsKIH0KIAotdm9pZCBTdHJlYW1TdGF0aXN0
aWNpYW5JbXBsOjpVcGRhdGVKaXR0ZXIoY29uc3QgUlRQSGVhZGVyJiBoZWFkZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdHBUaW1lIHJlY2VpdmVfdGltZSkg
ewotICB1aW50MzJfdCByZWNlaXZlX3RpbWVfcnRwID0KLSAgICAgIE50cFRvUnRwKHJlY2VpdmVf
dGltZSwgaGVhZGVyLnBheWxvYWRfdHlwZV9mcmVxdWVuY3kpOwotICB1aW50MzJfdCBsYXN0X3Jl
Y2VpdmVfdGltZV9ydHAgPQotICAgICAgTnRwVG9SdHAobGFzdF9yZWNlaXZlX3RpbWVfbnRwXywg
aGVhZGVyLnBheWxvYWRfdHlwZV9mcmVxdWVuY3kpOwotICBpbnQzMl90IHRpbWVfZGlmZl9zYW1w
bGVzID0gKHJlY2VpdmVfdGltZV9ydHAgLSBsYXN0X3JlY2VpdmVfdGltZV9ydHApIC0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChoZWFkZXIudGltZXN0YW1wIC0gbGFzdF9yZWNlaXZl
ZF90aW1lc3RhbXBfKTsKK3ZvaWQgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6VXBkYXRlSml0dGVy
KGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJlY2VpdmVfdGltZV9tcykgeworICBpbnQ2NF90
IHJlY2VpdmVfZGlmZl9tcyA9IHJlY2VpdmVfdGltZV9tcyAtIGxhc3RfcmVjZWl2ZV90aW1lX21z
XzsKKyAgUlRDX0RDSEVDS19HRShyZWNlaXZlX2RpZmZfbXMsIDApOworICB1aW50MzJfdCByZWNl
aXZlX2RpZmZfcnRwID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KAorICAgICAgKHJlY2VpdmVfZGlm
Zl9tcyAqIHBhY2tldC5wYXlsb2FkX3R5cGVfZnJlcXVlbmN5KCkpIC8gMTAwMCk7CisgIGludDMy
X3QgdGltZV9kaWZmX3NhbXBsZXMgPQorICAgICAgcmVjZWl2ZV9kaWZmX3J0cCAtIChwYWNrZXQu
VGltZXN0YW1wKCkgLSBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF8pOwogCiAgIHRpbWVfZGlmZl9z
YW1wbGVzID0gc3RkOjphYnModGltZV9kaWZmX3NhbXBsZXMpOwogCkBAIC0xNDMsMTUgKzEzNiwx
NiBAQCB2b2lkIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OlVwZGF0ZUppdHRlcihjb25zdCBSVFBI
ZWFkZXImIGhlYWRlciwKICAgfQogfQogCi12b2lkIFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6OkZl
Y1BhY2tldFJlY2VpdmVkKGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFja2V0X2xlbmd0aCkgewor
dm9pZCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpGZWNQYWNrZXRSZWNlaXZlZCgKKyAgICBjb25z
dCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgIFN0cmVhbURhdGFDb3VudGVycyBjb3Vu
dGVyczsKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZzdHJlYW1fbG9ja18pOwotICAgIHJl
Y2VpdmVfY291bnRlcnNfLmZlYy5BZGRQYWNrZXQocGFja2V0X2xlbmd0aCwgaGVhZGVyKTsKKyAg
ICByZWNlaXZlX2NvdW50ZXJzXy5mZWMuQWRkUGFja2V0KHBhY2tldCk7CiAgICAgY291bnRlcnMg
PSByZWNlaXZlX2NvdW50ZXJzXzsKICAgfQotICBydHBfY2FsbGJhY2tfLT5EYXRhQ291bnRlcnNV
cGRhdGVkKGNvdW50ZXJzLCBzc3JjXyk7CisgIGlmIChydHBfY2FsbGJhY2tfKQorICAgIHJ0cF9j
YWxsYmFja18tPkRhdGFDb3VudGVyc1VwZGF0ZWQoY291bnRlcnMsIHNzcmNfKTsKIH0KIAogdm9p
ZCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpTZXRNYXhSZW9yZGVyaW5nVGhyZXNob2xkKApAQCAt
MTg4LDcgKzE4Miw4IEBAIGJvb2wgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6R2V0U3RhdGlzdGlj
cyhSdGNwU3RhdGlzdGljcyogc3RhdGlzdGljcywKICAgICAqc3RhdGlzdGljcyA9IENhbGN1bGF0
ZVJ0Y3BTdGF0aXN0aWNzKCk7CiAgIH0KIAotICBydGNwX2NhbGxiYWNrXy0+U3RhdGlzdGljc1Vw
ZGF0ZWQoKnN0YXRpc3RpY3MsIHNzcmNfKTsKKyAgaWYgKHJ0Y3BfY2FsbGJhY2tfKQorICAgIHJ0
Y3BfY2FsbGJhY2tfLT5TdGF0aXN0aWNzVXBkYXRlZCgqc3RhdGlzdGljcywgc3NyY18pOwogICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTk2LDcgKzE5MSw3IEBAIGJvb2wgU3RyZWFtU3RhdGlzdGlj
aWFuSW1wbDo6R2V0QWN0aXZlU3RhdGlzdGljc0FuZFJlc2V0KAogICAgIFJ0Y3BTdGF0aXN0aWNz
KiBzdGF0aXN0aWNzKSB7CiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBjcygmc3RyZWFtX2xvY2tf
KTsKLSAgICBpZiAoY2xvY2tfLT5DdXJyZW50TnRwSW5NaWxsaXNlY29uZHMoKSAtIGxhc3RfcmVj
ZWl2ZV90aW1lX250cF8uVG9NcygpID49CisgICAgaWYgKGNsb2NrXy0+VGltZUluTWlsbGlzZWNv
bmRzKCkgLSBsYXN0X3JlY2VpdmVfdGltZV9tc18gPj0KICAgICAgICAga1N0YXRpc3RpY3NUaW1l
b3V0TXMpIHsKICAgICAgIC8vIE5vdCBhY3RpdmUuCiAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
MTAsNyArMjA1LDggQEAgYm9vbCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsOjpHZXRBY3RpdmVTdGF0
aXN0aWNzQW5kUmVzZXQoCiAgICAgKnN0YXRpc3RpY3MgPSBDYWxjdWxhdGVSdGNwU3RhdGlzdGlj
cygpOwogICB9CiAKLSAgcnRjcF9jYWxsYmFja18tPlN0YXRpc3RpY3NVcGRhdGVkKCpzdGF0aXN0
aWNzLCBzc3JjXyk7CisgIGlmIChydGNwX2NhbGxiYWNrXykKKyAgICBydGNwX2NhbGxiYWNrXy0+
U3RhdGlzdGljc1VwZGF0ZWQoKnN0YXRpc3RpY3MsIHNzcmNfKTsKICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTMxMiwxNyArMzA4LDE1IEBAIHVpbnQzMl90IFN0cmVhbVN0YXRpc3RpY2lhbkltcGw6
OkJpdHJhdGVSZWNlaXZlZCgpIGNvbnN0IHsKIH0KIAogYm9vbCBTdHJlYW1TdGF0aXN0aWNpYW5J
bXBsOjpJc1JldHJhbnNtaXRPZk9sZFBhY2tldCgKLSAgICBjb25zdCBSVFBIZWFkZXImIGhlYWRl
cikgY29uc3QgewotICBpZiAoSW5PcmRlclBhY2tldEludGVybmFsKGhlYWRlci5zZXF1ZW5jZU51
bWJlcikpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgdWludDMyX3QgZnJlcXVlbmN5X2to
eiA9IGhlYWRlci5wYXlsb2FkX3R5cGVfZnJlcXVlbmN5IC8gMTAwMDsKLSAgYXNzZXJ0KGZyZXF1
ZW5jeV9raHogPiAwKTsKKyAgICBjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0LAorICAg
IGludDY0X3Qgbm93X21zKSBjb25zdCB7CisgIHVpbnQzMl90IGZyZXF1ZW5jeV9raHogPSBwYWNr
ZXQucGF5bG9hZF90eXBlX2ZyZXF1ZW5jeSgpIC8gMTAwMDsKKyAgUlRDX0RDSEVDS19HVChmcmVx
dWVuY3lfa2h6LCAwKTsKIAotICBpbnQ2NF90IHRpbWVfZGlmZl9tcyA9IGNsb2NrXy0+VGltZUlu
TWlsbGlzZWNvbmRzKCkgLSBsYXN0X3JlY2VpdmVfdGltZV9tc187CisgIGludDY0X3QgdGltZV9k
aWZmX21zID0gbm93X21zIC0gbGFzdF9yZWNlaXZlX3RpbWVfbXNfOwogCiAgIC8vIERpZmYgaW4g
dGltZSBzdGFtcCBzaW5jZSBsYXN0IHJlY2VpdmVkIGluIG9yZGVyLgotICB1aW50MzJfdCB0aW1l
c3RhbXBfZGlmZiA9IGhlYWRlci50aW1lc3RhbXAgLSBsYXN0X3JlY2VpdmVkX3RpbWVzdGFtcF87
CisgIHVpbnQzMl90IHRpbWVzdGFtcF9kaWZmID0gcGFja2V0LlRpbWVzdGFtcCgpIC0gbGFzdF9y
ZWNlaXZlZF90aW1lc3RhbXBfOwogICB1aW50MzJfdCBydHBfdGltZV9zdGFtcF9kaWZmX21zID0g
dGltZXN0YW1wX2RpZmYgLyBmcmVxdWVuY3lfa2h6OwogCiAgIGludDY0X3QgbWF4X2RlbGF5X21z
ID0gMDsKQEAgLTM0MSwzMCArMzM1LDIzIEBAIGJvb2wgU3RyZWFtU3RhdGlzdGljaWFuSW1wbDo6
SXNSZXRyYW5zbWl0T2ZPbGRQYWNrZXQoCiAgIHJldHVybiB0aW1lX2RpZmZfbXMgPiBydHBfdGlt
ZV9zdGFtcF9kaWZmX21zICsgbWF4X2RlbGF5X21zOwogfQogCi1ib29sIFN0cmVhbVN0YXRpc3Rp
Y2lhbkltcGw6OkluT3JkZXJQYWNrZXRJbnRlcm5hbCgKLSAgICB1aW50MTZfdCBzZXF1ZW5jZV9u
dW1iZXIpIGNvbnN0IHsKLSAgLy8gRmlyc3QgcGFja2V0IGlzIGFsd2F5cyBpbiBvcmRlci4KLSAg
aWYgKGxhc3RfcmVjZWl2ZV90aW1lX21zXyA9PSAwKQotICAgIHJldHVybiB0cnVlOwotCi0gIGlm
IChJc05ld2VyU2VxdWVuY2VOdW1iZXIoc2VxdWVuY2VfbnVtYmVyLCByZWNlaXZlZF9zZXFfbWF4
XykpIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfSBlbHNlIHsKLSAgICAvLyBJZiB3ZSBoYXZlIGEg
cmVzdGFydCBvZiB0aGUgcmVtb3RlIHNpZGUgdGhpcyBwYWNrZXQgaXMgc3RpbGwgaW4gb3JkZXIu
Ci0gICAgcmV0dXJuICFJc05ld2VyU2VxdWVuY2VOdW1iZXIoCi0gICAgICAgIHNlcXVlbmNlX251
bWJlciwgcmVjZWl2ZWRfc2VxX21heF8gLSBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGRfKTsKLSAg
fQotfQotCi1SZWNlaXZlU3RhdGlzdGljcyogUmVjZWl2ZVN0YXRpc3RpY3M6OkNyZWF0ZShDbG9j
ayogY2xvY2spIHsKLSAgcmV0dXJuIG5ldyBSZWNlaXZlU3RhdGlzdGljc0ltcGwoY2xvY2spOwor
c3RkOjp1bmlxdWVfcHRyPFJlY2VpdmVTdGF0aXN0aWNzPiBSZWNlaXZlU3RhdGlzdGljczo6Q3Jl
YXRlKAorICAgIENsb2NrKiBjbG9jaywKKyAgICBSdGNwU3RhdGlzdGljc0NhbGxiYWNrKiBydGNw
X2NhbGxiYWNrLAorICAgIFN0cmVhbURhdGFDb3VudGVyc0NhbGxiYWNrKiBydHBfY2FsbGJhY2sp
IHsKKyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFJlY2VpdmVTdGF0aXN0aWNzSW1wbD4oY2xv
Y2ssIHJ0Y3BfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ0cF9jYWxsYmFjayk7CiB9CiAKLVJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6
UmVjZWl2ZVN0YXRpc3RpY3NJbXBsKENsb2NrKiBjbG9jaykKK1JlY2VpdmVTdGF0aXN0aWNzSW1w
bDo6UmVjZWl2ZVN0YXRpc3RpY3NJbXBsKAorICAgIENsb2NrKiBjbG9jaywKKyAgICBSdGNwU3Rh
dGlzdGljc0NhbGxiYWNrKiBydGNwX2NhbGxiYWNrLAorICAgIFN0cmVhbURhdGFDb3VudGVyc0Nh
bGxiYWNrKiBydHBfY2FsbGJhY2spCiAgICAgOiBjbG9ja18oY2xvY2spLAogICAgICAgbGFzdF9y
ZXR1cm5lZF9zc3JjXygwKSwKLSAgICAgIHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfKE5VTEwpLAotICAg
ICAgcnRwX3N0YXRzX2NhbGxiYWNrXyhOVUxMKSB7fQorICAgICAgbWF4X3Jlb3JkZXJpbmdfdGhy
ZXNob2xkXyhrRGVmYXVsdE1heFJlb3JkZXJpbmdUaHJlc2hvbGQpLAorICAgICAgcnRjcF9zdGF0
c19jYWxsYmFja18ocnRjcF9jYWxsYmFjayksCisgICAgICBydHBfc3RhdHNfY2FsbGJhY2tfKHJ0
cF9jYWxsYmFjaykge30KIAogUmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjp+UmVjZWl2ZVN0YXRpc3Rp
Y3NJbXBsKCkgewogICB3aGlsZSAoIXN0YXRpc3RpY2lhbnNfLmVtcHR5KCkpIHsKQEAgLTM3NCwz
MSArMzYxLDI0IEBAIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6flJlY2VpdmVTdGF0aXN0aWNzSW1w
bCgpIHsKIH0KIAogdm9pZCBSZWNlaXZlU3RhdGlzdGljc0ltcGw6Ok9uUnRwUGFja2V0KGNvbnN0
IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQpIHsKLSAgUlRQSGVhZGVyIGhlYWRlcjsKLSAgcGFj
a2V0LkdldEhlYWRlcigmaGVhZGVyKTsKLSAgSW5jb21pbmdQYWNrZXQoaGVhZGVyLCBwYWNrZXQu
c2l6ZSgpKTsKLX0KLQotdm9pZCBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OkluY29taW5nUGFja2V0
KGNvbnN0IFJUUEhlYWRlciYgaGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBwYWNrZXRfbGVuZ3RoKSB7CiAgIFN0cmVhbVN0YXRpc3RpY2lh
bkltcGwqIGltcGw7CiAgIHsKICAgICBydGM6OkNyaXRTY29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0
aWNzX2xvY2tfKTsKLSAgICBhdXRvIGl0ID0gc3RhdGlzdGljaWFuc18uZmluZChoZWFkZXIuc3Ny
Yyk7CisgICAgYXV0byBpdCA9IHN0YXRpc3RpY2lhbnNfLmZpbmQocGFja2V0LlNzcmMoKSk7CiAg
ICAgaWYgKGl0ICE9IHN0YXRpc3RpY2lhbnNfLmVuZCgpKSB7CiAgICAgICBpbXBsID0gaXQtPnNl
Y29uZDsKICAgICB9IGVsc2UgewogICAgICAgaW1wbCA9IG5ldyBTdHJlYW1TdGF0aXN0aWNpYW5J
bXBsKAotICAgICAgICAgIGhlYWRlci5zc3JjLCBjbG9ja18sIC8qIGVuYWJsZV9yZXRyYW5zbWl0
X2RldGVjdGlvbiA9ICovIGZhbHNlLCB0aGlzLAotICAgICAgICAgIHRoaXMpOwotICAgICAgc3Rh
dGlzdGljaWFuc19baGVhZGVyLnNzcmNdID0gaW1wbDsKKyAgICAgICAgICBwYWNrZXQuU3NyYygp
LCBjbG9ja18sIC8qIGVuYWJsZV9yZXRyYW5zbWl0X2RldGVjdGlvbiA9ICovIGZhbHNlLAorICAg
ICAgICAgIG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZF8sIHJ0Y3Bfc3RhdHNfY2FsbGJhY2tfLCBy
dHBfc3RhdHNfY2FsbGJhY2tfKTsKKyAgICAgIHN0YXRpc3RpY2lhbnNfW3BhY2tldC5Tc3JjKCld
ID0gaW1wbDsKICAgICB9CiAgIH0KICAgLy8gU3RyZWFtU3RhdGlzdGljaWFuSW1wbCBpbnN0YW5j
ZSBpcyBjcmVhdGVkIG9uY2UgYW5kIG9ubHkgZGVzdHJveWVkIHdoZW4KICAgLy8gdGhpcyB3aG9s
ZSBSZWNlaXZlU3RhdGlzdGljc0ltcGwgaXMgZGVzdHJveWVkLiBTdHJlYW1TdGF0aXN0aWNpYW5J
bXBsIGhhcwogICAvLyBpdCdzIG93biBsb2NraW5nIHNvIGRvbid0IGhvbGQgcmVjZWl2ZV9zdGF0
aXN0aWNzX2xvY2tfIChwb3RlbnRpYWwKICAgLy8gZGVhZGxvY2spLgotICBpbXBsLT5JbmNvbWlu
Z1BhY2tldChoZWFkZXIsIHBhY2tldF9sZW5ndGgpOworICBpbXBsLT5PblJ0cFBhY2tldChwYWNr
ZXQpOwogfQogCiB2b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6RmVjUGFja2V0UmVjZWl2ZWQo
Y29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkgewpAQCAtNDExLDkgKzM5MSw3IEBAIHZv
aWQgUmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjpGZWNQYWNrZXRSZWNlaXZlZChjb25zdCBSdHBQYWNr
ZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgICAgICByZXR1cm47CiAgICAgaW1wbCA9IGl0LT5zZWNv
bmQ7CiAgIH0KLSAgUlRQSGVhZGVyIGhlYWRlcjsKLSAgcGFja2V0LkdldEhlYWRlcigmaGVhZGVy
KTsKLSAgaW1wbC0+RmVjUGFja2V0UmVjZWl2ZWQoaGVhZGVyLCBwYWNrZXQuc2l6ZSgpKTsKKyAg
aW1wbC0+RmVjUGFja2V0UmVjZWl2ZWQocGFja2V0KTsKIH0KIAogU3RyZWFtU3RhdGlzdGljaWFu
KiBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OkdldFN0YXRpc3RpY2lhbigKQEAgLTQyNyw4ICs0MDUs
MTMgQEAgU3RyZWFtU3RhdGlzdGljaWFuKiBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OkdldFN0YXRp
c3RpY2lhbigKIAogdm9pZCBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OlNldE1heFJlb3JkZXJpbmdU
aHJlc2hvbGQoCiAgICAgaW50IG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZCkgewotICBydGM6OkNy
aXRTY29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKLSAgZm9yIChhdXRvJiBzdGF0
aXN0aWNpYW4gOiBzdGF0aXN0aWNpYW5zXykgeworICBzdGQ6Om1hcDx1aW50MzJfdCwgU3RyZWFt
U3RhdGlzdGljaWFuSW1wbCo+IHN0YXRpc3RpY2lhbnM7CisgIHsKKyAgICBydGM6OkNyaXRTY29w
ZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKKyAgICBtYXhfcmVvcmRlcmluZ190aHJl
c2hvbGRfID0gbWF4X3Jlb3JkZXJpbmdfdGhyZXNob2xkOworICAgIHN0YXRpc3RpY2lhbnMgPSBz
dGF0aXN0aWNpYW5zXzsKKyAgfQorICBmb3IgKGF1dG8mIHN0YXRpc3RpY2lhbiA6IHN0YXRpc3Rp
Y2lhbnMpIHsKICAgICBzdGF0aXN0aWNpYW4uc2Vjb25kLT5TZXRNYXhSZW9yZGVyaW5nVGhyZXNo
b2xkKG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZCk7CiAgIH0KIH0KQEAgLTQ0MCw3ICs0MjMsOSBA
QCB2b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6RW5hYmxlUmV0cmFuc21pdERldGVjdGlvbih1
aW50MzJfdCBzc3JjLAogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZyZWNlaXZlX3N0YXRpc3RpY3Nf
bG9ja18pOwogICAgIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwqJiBpbXBsX3JlZiA9IHN0YXRpc3Rp
Y2lhbnNfW3NzcmNdOwogICAgIGlmIChpbXBsX3JlZiA9PSBudWxscHRyKSB7ICAvLyBuZXcgZWxl
bWVudAotICAgICAgaW1wbF9yZWYgPSBuZXcgU3RyZWFtU3RhdGlzdGljaWFuSW1wbChzc3JjLCBj
bG9ja18sIGVuYWJsZSwgdGhpcywgdGhpcyk7CisgICAgICBpbXBsX3JlZiA9IG5ldyBTdHJlYW1T
dGF0aXN0aWNpYW5JbXBsKAorICAgICAgICAgIHNzcmMsIGNsb2NrXywgZW5hYmxlLCBtYXhfcmVv
cmRlcmluZ190aHJlc2hvbGRfLCBydGNwX3N0YXRzX2NhbGxiYWNrXywKKyAgICAgICAgICBydHBf
c3RhdHNfY2FsbGJhY2tfKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaW1wbCA9IGltcGxf
cmVmOwpAQCAtNDQ4LDQzICs0MzMsNiBAQCB2b2lkIFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6RW5h
YmxlUmV0cmFuc21pdERldGVjdGlvbih1aW50MzJfdCBzc3JjLAogICBpbXBsLT5FbmFibGVSZXRy
YW5zbWl0RGV0ZWN0aW9uKGVuYWJsZSk7CiB9CiAKLXZvaWQgUmVjZWl2ZVN0YXRpc3RpY3NJbXBs
OjpSZWdpc3RlclJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2soCi0gICAgUnRjcFN0YXRpc3RpY3NDYWxs
YmFjayogY2FsbGJhY2spIHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoJnJlY2VpdmVfc3RhdGlzdGlj
c19sb2NrXyk7Ci0gIGlmIChjYWxsYmFjayAhPSBOVUxMKQotICAgIGFzc2VydChydGNwX3N0YXRz
X2NhbGxiYWNrXyA9PSBOVUxMKTsKLSAgcnRjcF9zdGF0c19jYWxsYmFja18gPSBjYWxsYmFjazsK
LX0KLQotdm9pZCBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OlN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0
IFJ0Y3BTdGF0aXN0aWNzJiBzdGF0aXN0aWNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNzcmMpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3Mo
JnJlY2VpdmVfc3RhdGlzdGljc19sb2NrXyk7Ci0gIGlmIChydGNwX3N0YXRzX2NhbGxiYWNrXykK
LSAgICBydGNwX3N0YXRzX2NhbGxiYWNrXy0+U3RhdGlzdGljc1VwZGF0ZWQoc3RhdGlzdGljcywg
c3NyYyk7Ci19Ci0KLXZvaWQgUmVjZWl2ZVN0YXRpc3RpY3NJbXBsOjpDTmFtZUNoYW5nZWQoY29u
c3QgY2hhciogY25hbWUsIHVpbnQzMl90IHNzcmMpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoJnJl
Y2VpdmVfc3RhdGlzdGljc19sb2NrXyk7Ci0gIGlmIChydGNwX3N0YXRzX2NhbGxiYWNrXykKLSAg
ICBydGNwX3N0YXRzX2NhbGxiYWNrXy0+Q05hbWVDaGFuZ2VkKGNuYW1lLCBzc3JjKTsKLX0KLQot
dm9pZCBSZWNlaXZlU3RhdGlzdGljc0ltcGw6OlJlZ2lzdGVyUnRwU3RhdGlzdGljc0NhbGxiYWNr
KAotICAgIFN0cmVhbURhdGFDb3VudGVyc0NhbGxiYWNrKiBjYWxsYmFjaykgewotICBydGM6OkNy
aXRTY29wZSBjcygmcmVjZWl2ZV9zdGF0aXN0aWNzX2xvY2tfKTsKLSAgaWYgKGNhbGxiYWNrICE9
IE5VTEwpCi0gICAgYXNzZXJ0KHJ0cF9zdGF0c19jYWxsYmFja18gPT0gTlVMTCk7Ci0gIHJ0cF9z
dGF0c19jYWxsYmFja18gPSBjYWxsYmFjazsKLX0KLQotdm9pZCBSZWNlaXZlU3RhdGlzdGljc0lt
cGw6OkRhdGFDb3VudGVyc1VwZGF0ZWQoY29uc3QgU3RyZWFtRGF0YUNvdW50ZXJzJiBzdGF0cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IHNzcmMpIHsKLSAgcnRjOjpDcml0U2NvcGUgY3MoJnJlY2VpdmVfc3RhdGlzdGljc19sb2NrXyk7
Ci0gIGlmIChydHBfc3RhdHNfY2FsbGJhY2tfKSB7Ci0gICAgcnRwX3N0YXRzX2NhbGxiYWNrXy0+
RGF0YUNvdW50ZXJzVXBkYXRlZChzdGF0cywgc3NyYyk7Ci0gIH0KLX0KLQogc3RkOjp2ZWN0b3I8
cnRjcDo6UmVwb3J0QmxvY2s+IFJlY2VpdmVTdGF0aXN0aWNzSW1wbDo6UnRjcFJlcG9ydEJsb2Nr
cygKICAgICBzaXplX3QgbWF4X2Jsb2NrcykgewogICBzdGQ6Om1hcDx1aW50MzJfdCwgU3RyZWFt
U3RhdGlzdGljaWFuSW1wbCo+IHN0YXRpc3RpY2lhbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
ZWNlaXZlX3N0YXRpc3RpY3NfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVjZWl2ZV9zdGF0aXN0aWNzX2lt
cGwuaAppbmRleCA1NmJmZDJiNGE0MDVjZTZkMTc4NjU2NmJkZDY5YTFiOWMwMzUwMTBkLi44MTUz
YzQ0MDBkNDBiY2Y1OTVmZGI4MjBkYjgyOWE1YWFkNzJmZDljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9yZWNlaXZlX3N0YXRpc3RpY3NfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlY2VpdmVfc3RhdGlz
dGljc19pbXBsLmgKQEAgLTE5LDE1ICsxOSwxNyBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3Jp
dGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZV9zdGF0aXN0aWNzLmgiCi0j
aW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbnRwX3RpbWUuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKLWNs
YXNzIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwgOiBwdWJsaWMgU3RyZWFtU3RhdGlzdGljaWFuIHsK
K2NsYXNzIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwgOiBwdWJsaWMgU3RyZWFtU3RhdGlzdGljaWFu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBSdHBQYWNrZXRTaW5rSW50
ZXJmYWNlIHsKICBwdWJsaWM6CiAgIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwodWludDMyX3Qgc3Ny
YywKICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9jayogY2xvY2ssCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBlbmFibGVfcmV0cmFuc21pdF9kZXRlY3Rpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG1heF9yZW9yZGVyaW5nX3RocmVzaG9sZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBSdGNwU3RhdGlzdGljc0NhbGxiYWNrKiBydGNwX2NhbGxiYWNrLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbURhdGFDb3VudGVyc0NhbGxiYWNrKiBydHBfY2Fs
bGJhY2spOwogICB+U3RyZWFtU3RhdGlzdGljaWFuSW1wbCgpIG92ZXJyaWRlOwpAQCAtNDEsMjQg
KzQzLDIyIEBAIGNsYXNzIFN0cmVhbVN0YXRpc3RpY2lhbkltcGwgOiBwdWJsaWMgU3RyZWFtU3Rh
dGlzdGljaWFuIHsKICAgICAgIFN0cmVhbURhdGFDb3VudGVycyogZGF0YV9jb3VudGVycykgY29u
c3Qgb3ZlcnJpZGU7CiAgIHVpbnQzMl90IEJpdHJhdGVSZWNlaXZlZCgpIGNvbnN0IG92ZXJyaWRl
OwogCi0gIHZvaWQgSW5jb21pbmdQYWNrZXQoY29uc3QgUlRQSGVhZGVyJiBydHBfaGVhZGVyLCBz
aXplX3QgcGFja2V0X2xlbmd0aCk7Ci0gIHZvaWQgRmVjUGFja2V0UmVjZWl2ZWQoY29uc3QgUlRQ
SGVhZGVyJiBoZWFkZXIsIHNpemVfdCBwYWNrZXRfbGVuZ3RoKTsKKyAgLy8gSW1wbGVtZW50cyBS
dHBQYWNrZXRTaW5rSW50ZXJmYWNlCisgIHZvaWQgT25SdHBQYWNrZXQoY29uc3QgUnRwUGFja2V0
UmVjZWl2ZWQmIHBhY2tldCkgb3ZlcnJpZGU7CisKKyAgdm9pZCBGZWNQYWNrZXRSZWNlaXZlZChj
b25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KTsKICAgdm9pZCBTZXRNYXhSZW9yZGVyaW5n
VGhyZXNob2xkKGludCBtYXhfcmVvcmRlcmluZ190aHJlc2hvbGQpOwogICB2b2lkIEVuYWJsZVJl
dHJhbnNtaXREZXRlY3Rpb24oYm9vbCBlbmFibGUpOwogCiAgcHJpdmF0ZToKLSAgYm9vbCBJc1Jl
dHJhbnNtaXRPZk9sZFBhY2tldChjb25zdCBSVFBIZWFkZXImIGhlYWRlcikgY29uc3QKLSAgICAg
IFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoc3RyZWFtX2xvY2tfKTsKLSAgYm9vbCBJbk9y
ZGVyUGFja2V0SW50ZXJuYWwodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyKSBjb25zdAorICBib29s
IElzUmV0cmFuc21pdE9mT2xkUGFja2V0KGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBub3dfbXMpIGNvbnN0CiAg
ICAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKHN0cmVhbV9sb2NrXyk7CiAgIFJ0Y3BT
dGF0aXN0aWNzIENhbGN1bGF0ZVJ0Y3BTdGF0aXN0aWNzKCkKICAgICAgIFJUQ19FWENMVVNJVkVf
TE9DS1NfUkVRVUlSRUQoc3RyZWFtX2xvY2tfKTsKLSAgdm9pZCBVcGRhdGVKaXR0ZXIoY29uc3Qg
UlRQSGVhZGVyJiBoZWFkZXIsIE50cFRpbWUgcmVjZWl2ZV90aW1lKQotICAgICAgUlRDX0VYQ0xV
U0lWRV9MT0NLU19SRVFVSVJFRChzdHJlYW1fbG9ja18pOwotICBTdHJlYW1EYXRhQ291bnRlcnMg
VXBkYXRlQ291bnRlcnMoY29uc3QgUlRQSGVhZGVyJiBydHBfaGVhZGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhY2tldF9sZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJldHJhbnNtaXR0ZWQpCisgIHZvaWQgVXBk
YXRlSml0dGVyKGNvbnN0IFJ0cFBhY2tldFJlY2VpdmVkJiBwYWNrZXQsIGludDY0X3QgcmVjZWl2
ZV90aW1lX21zKQogICAgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChzdHJlYW1fbG9j
a18pOworICBTdHJlYW1EYXRhQ291bnRlcnMgVXBkYXRlQ291bnRlcnMoY29uc3QgUnRwUGFja2V0
UmVjZWl2ZWQmIHBhY2tldCk7CiAKICAgY29uc3QgdWludDMyX3Qgc3NyY187CiAgIENsb2NrKiBj
b25zdCBjbG9ja187CkBAIC03MywxNCArNzMsMTIgQEAgY2xhc3MgU3RyZWFtU3RhdGlzdGljaWFu
SW1wbCA6IHB1YmxpYyBTdHJlYW1TdGF0aXN0aWNpYW4gewogICB1aW50MzJfdCBjdW11bGF0aXZl
X2xvc3NfIFJUQ19HVUFSREVEX0JZKCZzdHJlYW1fbG9ja18pOwogCiAgIGludDY0X3QgbGFzdF9y
ZWNlaXZlX3RpbWVfbXNfIFJUQ19HVUFSREVEX0JZKCZzdHJlYW1fbG9ja18pOwotICBOdHBUaW1l
IGxhc3RfcmVjZWl2ZV90aW1lX250cF8gUlRDX0dVQVJERURfQlkoJnN0cmVhbV9sb2NrXyk7CiAg
IHVpbnQzMl90IGxhc3RfcmVjZWl2ZWRfdGltZXN0YW1wXyBSVENfR1VBUkRFRF9CWSgmc3RyZWFt
X2xvY2tfKTsKICAgdWludDE2X3QgcmVjZWl2ZWRfc2VxX2ZpcnN0XyBSVENfR1VBUkRFRF9CWSgm
c3RyZWFtX2xvY2tfKTsKICAgdWludDE2X3QgcmVjZWl2ZWRfc2VxX21heF8gUlRDX0dVQVJERURf
QlkoJnN0cmVhbV9sb2NrXyk7CiAgIHVpbnQxNl90IHJlY2VpdmVkX3NlcV93cmFwc18gUlRDX0dV
QVJERURfQlkoJnN0cmVhbV9sb2NrXyk7CiAKICAgLy8gQ3VycmVudCBjb3VudGVyIHZhbHVlcy4K
LSAgc2l6ZV90IHJlY2VpdmVkX3BhY2tldF9vdmVyaGVhZF8gUlRDX0dVQVJERURfQlkoJnN0cmVh
bV9sb2NrXyk7CiAgIFN0cmVhbURhdGFDb3VudGVycyByZWNlaXZlX2NvdW50ZXJzXyBSVENfR1VB
UkRFRF9CWSgmc3RyZWFtX2xvY2tfKTsKIAogICAvLyBDb3VudGVyIHZhbHVlcyB3aGVuIHdlIHNl
bnQgdGhlIGxhc3QgcmVwb3J0LgpAQCAtOTQsNDcgKzkyLDM2IEBAIGNsYXNzIFN0cmVhbVN0YXRp
c3RpY2lhbkltcGwgOiBwdWJsaWMgU3RyZWFtU3RhdGlzdGljaWFuIHsKICAgU3RyZWFtRGF0YUNv
dW50ZXJzQ2FsbGJhY2sqIGNvbnN0IHJ0cF9jYWxsYmFja187CiB9OwogCi1jbGFzcyBSZWNlaXZl
U3RhdGlzdGljc0ltcGwgOiBwdWJsaWMgUmVjZWl2ZVN0YXRpc3RpY3MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgUnRjcFN0YXRpc3RpY3NDYWxsYmFjaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTdHJlYW1EYXRhQ291bnRlcnNDYWxsYmFjayB7
CitjbGFzcyBSZWNlaXZlU3RhdGlzdGljc0ltcGwgOiBwdWJsaWMgUmVjZWl2ZVN0YXRpc3RpY3Mg
ewogIHB1YmxpYzoKLSAgZXhwbGljaXQgUmVjZWl2ZVN0YXRpc3RpY3NJbXBsKENsb2NrKiBjbG9j
ayk7CisgIFJlY2VpdmVTdGF0aXN0aWNzSW1wbChDbG9jayogY2xvY2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICBSdGNwU3RhdGlzdGljc0NhbGxiYWNrKiBydGNwX2NhbGxiYWNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIHJ0cF9jYWxsYmFj
ayk7CiAKICAgflJlY2VpdmVTdGF0aXN0aWNzSW1wbCgpIG92ZXJyaWRlOwogCi0gIC8vIEltcGxl
bWVudCBSZWNlaXZlU3RhdGlzdGljc1Byb3ZpZGVyLgorICAvLyBJbXBsZW1lbnRzIFJlY2VpdmVT
dGF0aXN0aWNzUHJvdmlkZXIuCiAgIHN0ZDo6dmVjdG9yPHJ0Y3A6OlJlcG9ydEJsb2NrPiBSdGNw
UmVwb3J0QmxvY2tzKHNpemVfdCBtYXhfYmxvY2tzKSBvdmVycmlkZTsKIAotICAvLyBJbXBsZW1l
bnQgUnRwUGFja2V0U2lua0ludGVyZmFjZQorICAvLyBJbXBsZW1lbnRzIFJ0cFBhY2tldFNpbmtJ
bnRlcmZhY2UKICAgdm9pZCBPblJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFj
a2V0KSBvdmVycmlkZTsKIAotICAvLyBJbXBsZW1lbnQgUmVjZWl2ZVN0YXRpc3RpY3MuCi0gIHZv
aWQgSW5jb21pbmdQYWNrZXQoY29uc3QgUlRQSGVhZGVyJiBoZWFkZXIsIHNpemVfdCBwYWNrZXRf
bGVuZ3RoKSBvdmVycmlkZTsKKyAgLy8gSW1wbGVtZW50cyBSZWNlaXZlU3RhdGlzdGljcy4KICAg
dm9pZCBGZWNQYWNrZXRSZWNlaXZlZChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSBv
dmVycmlkZTsKICAgU3RyZWFtU3RhdGlzdGljaWFuKiBHZXRTdGF0aXN0aWNpYW4odWludDMyX3Qg
c3NyYykgY29uc3Qgb3ZlcnJpZGU7CiAgIHZvaWQgU2V0TWF4UmVvcmRlcmluZ1RocmVzaG9sZChp
bnQgbWF4X3Jlb3JkZXJpbmdfdGhyZXNob2xkKSBvdmVycmlkZTsKICAgdm9pZCBFbmFibGVSZXRy
YW5zbWl0RGV0ZWN0aW9uKHVpbnQzMl90IHNzcmMsIGJvb2wgZW5hYmxlKSBvdmVycmlkZTsKIAot
ICB2b2lkIFJlZ2lzdGVyUnRjcFN0YXRpc3RpY3NDYWxsYmFjaygKLSAgICAgIFJ0Y3BTdGF0aXN0
aWNzQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKLQotICB2b2lkIFJlZ2lzdGVyUnRwU3Rh
dGlzdGljc0NhbGxiYWNrKAotICAgICAgU3RyZWFtRGF0YUNvdW50ZXJzQ2FsbGJhY2sqIGNhbGxi
YWNrKSBvdmVycmlkZTsKLQogIHByaXZhdGU6Ci0gIHZvaWQgU3RhdGlzdGljc1VwZGF0ZWQoY29u
c3QgUnRjcFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3Qgc3NyYykgb3ZlcnJpZGU7Ci0gIHZvaWQgQ05hbWVDaGFuZ2VkKGNvbnN0IGNoYXIq
IGNuYW1lLCB1aW50MzJfdCBzc3JjKSBvdmVycmlkZTsKLSAgdm9pZCBEYXRhQ291bnRlcnNVcGRh
dGVkKGNvbnN0IFN0cmVhbURhdGFDb3VudGVycyYgY291bnRlcnMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBzc3JjKSBvdmVycmlkZTsKLQogICBDbG9jayogY29uc3QgY2xv
Y2tfOwogICBydGM6OkNyaXRpY2FsU2VjdGlvbiByZWNlaXZlX3N0YXRpc3RpY3NfbG9ja187CiAg
IHVpbnQzMl90IGxhc3RfcmV0dXJuZWRfc3NyY187Ci0gIHN0ZDo6bWFwPHVpbnQzMl90LCBTdHJl
YW1TdGF0aXN0aWNpYW5JbXBsKj4gc3RhdGlzdGljaWFuc187CisgIGludCBtYXhfcmVvcmRlcmlu
Z190aHJlc2hvbGRfIFJUQ19HVUFSREVEX0JZKHJlY2VpdmVfc3RhdGlzdGljc19sb2NrXyk7Cisg
IHN0ZDo6bWFwPHVpbnQzMl90LCBTdHJlYW1TdGF0aXN0aWNpYW5JbXBsKj4gc3RhdGlzdGljaWFu
c18KKyAgICAgIFJUQ19HVUFSREVEX0JZKHJlY2VpdmVfc3RhdGlzdGljc19sb2NrXyk7CiAKLSAg
UnRjcFN0YXRpc3RpY3NDYWxsYmFjayogcnRjcF9zdGF0c19jYWxsYmFja187Ci0gIFN0cmVhbURh
dGFDb3VudGVyc0NhbGxiYWNrKiBydHBfc3RhdHNfY2FsbGJhY2tfOworICBSdGNwU3RhdGlzdGlj
c0NhbGxiYWNrKiBjb25zdCBydGNwX3N0YXRzX2NhbGxiYWNrXzsKKyAgU3RyZWFtRGF0YUNvdW50
ZXJzQ2FsbGJhY2sqIGNvbnN0IHJ0cF9zdGF0c19jYWxsYmFja187CiB9OwogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwogI2VuZGlmICAvLyBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SRUNFSVZFX1NU
QVRJU1RJQ1NfSU1QTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVjZWl2ZV9zdGF0aXN0aWNz
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVjZWl2ZV9zdGF0aXN0aWNzX3VuaXR0ZXN0LmNjCmlu
ZGV4IDE4NDQ4Y2I3N2VjNmU1NTUxYjkyZDgxZDlkZWEyZDU1YWFiZmY4ZTcuLjI1MzkzNjMxZGY5
Yjg5YmNlMWQ3MTk3OTFiM2RiMDZkODQ4MjY1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlY2Vp
dmVfc3RhdGlzdGljc191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZWNlaXZlX3N0YXRpc3Rp
Y3NfdW5pdHRlc3QuY2MKQEAgLTQ4LDEwICs0OCw3IEBAIFJ0cFBhY2tldFJlY2VpdmVkIENyZWF0
ZVJ0cFBhY2tldCh1aW50MzJfdCBzc3JjLAogICAgIHBhY2tldC5TZXRDc3Jjcyhjc3Jjcyk7CiAg
IH0KICAgcGFja2V0LlNldFBheWxvYWRTaXplKHBheWxvYWRfc2l6ZSk7Ci0gIGlmIChwYWRkaW5n
X3NpemUgPiAwKSB7Ci0gICAgUmFuZG9tIHJhbmRvbSgxNyk7Ci0gICAgcGFja2V0LlNldFBhZGRp
bmcocGFkZGluZ19zaXplLCAmcmFuZG9tKTsKLSAgfQorICBwYWNrZXQuU2V0UGFkZGluZyhwYWRk
aW5nX3NpemUpOwogICByZXR1cm4gcGFja2V0OwogfQogCkBAIC03NCw3ICs3MSw5IEBAIHZvaWQg
SW5jcmVtZW50VGltZXN0YW1wKFJ0cFBhY2tldFJlY2VpdmVkKiBwYWNrZXQsIHVpbnQzMl90IGlu
Y3IpIHsKIGNsYXNzIFJlY2VpdmVTdGF0aXN0aWNzVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgewogIHB1YmxpYzoKICAgUmVjZWl2ZVN0YXRpc3RpY3NUZXN0KCkKLSAgICAgIDogY2xvY2tf
KDApLCByZWNlaXZlX3N0YXRpc3RpY3NfKFJlY2VpdmVTdGF0aXN0aWNzOjpDcmVhdGUoJmNsb2Nr
XykpIHsKKyAgICAgIDogY2xvY2tfKDApLAorICAgICAgICByZWNlaXZlX3N0YXRpc3RpY3NfKAor
ICAgICAgICAgICAgUmVjZWl2ZVN0YXRpc3RpY3M6OkNyZWF0ZSgmY2xvY2tfLCBudWxscHRyLCBu
dWxscHRyKSkgewogICAgIHBhY2tldDFfID0gQ3JlYXRlUnRwUGFja2V0KGtTc3JjMSwga1BhY2tl
dFNpemUxKTsKICAgICBwYWNrZXQyXyA9IENyZWF0ZVJ0cFBhY2tldChrU3NyYzIsIGtQYWNrZXRT
aXplMik7CiAgIH0KQEAgLTI1NCw3ICsyNTMsNyBAQCBURVNUX0YoUmVjZWl2ZVN0YXRpc3RpY3NU
ZXN0LCBSdGNwQ2FsbGJhY2tzKSB7CiAgICAgUnRjcFN0YXRpc3RpY3Mgc3RhdHNfOwogICB9IGNh
bGxiYWNrOwogCi0gIHJlY2VpdmVfc3RhdGlzdGljc18tPlJlZ2lzdGVyUnRjcFN0YXRpc3RpY3ND
YWxsYmFjaygmY2FsbGJhY2spOworICByZWNlaXZlX3N0YXRpc3RpY3NfID0gUmVjZWl2ZVN0YXRp
c3RpY3M6OkNyZWF0ZSgmY2xvY2tfLCAmY2FsbGJhY2ssIG51bGxwdHIpOwogICByZWNlaXZlX3N0
YXRpc3RpY3NfLT5FbmFibGVSZXRyYW5zbWl0RGV0ZWN0aW9uKGtTc3JjMSwgdHJ1ZSk7CiAKICAg
Ly8gQWRkIHNvbWUgYXJiaXRyYXJ5IGRhdGEsIHdpdGggbG9zcyBhbmQgaml0dGVyLgpAQCAtMjk0
LDMzICsyOTMsNiBAQCBURVNUX0YoUmVjZWl2ZVN0YXRpc3RpY3NUZXN0LCBSdGNwQ2FsbGJhY2tz
KSB7CiAgIEVYUEVDVF9FUSgxLCBzdGF0aXN0aWNzLnBhY2tldHNfbG9zdCk7CiAgIEVYUEVDVF9F
USg1dSwgc3RhdGlzdGljcy5leHRlbmRlZF9oaWdoZXN0X3NlcXVlbmNlX251bWJlcik7CiAgIEVY
UEVDVF9FUSgxNzd1LCBzdGF0aXN0aWNzLmppdHRlcik7Ci0KLSAgcmVjZWl2ZV9zdGF0aXN0aWNz
Xy0+UmVnaXN0ZXJSdGNwU3RhdGlzdGljc0NhbGxiYWNrKE5VTEwpOwotCi0gIC8vIEFkZCBzb21l
IG1vcmUgZGF0YS4KLSAgcGFja2V0MV8uU2V0U2VxdWVuY2VOdW1iZXIoMSk7Ci0gIGNsb2NrXy5B
ZHZhbmNlVGltZU1pbGxpc2Vjb25kcyg3KTsKLSAgSW5jcmVtZW50VGltZXN0YW1wKCZwYWNrZXQx
XywgMyk7Ci0gIHJlY2VpdmVfc3RhdGlzdGljc18tPk9uUnRwUGFja2V0KHBhY2tldDFfKTsKLSAg
SW5jcmVtZW50U2VxdWVuY2VOdW1iZXIoJnBhY2tldDFfLCAyKTsKLSAgY2xvY2tfLkFkdmFuY2VU
aW1lTWlsbGlzZWNvbmRzKDkpOwotICBJbmNyZW1lbnRUaW1lc3RhbXAoJnBhY2tldDFfLCA5KTsK
LSAgcmVjZWl2ZV9zdGF0aXN0aWNzXy0+T25SdHBQYWNrZXQocGFja2V0MV8pOwotICBJbmNyZW1l
bnRTZXF1ZW5jZU51bWJlcigmcGFja2V0MV8sIC0xKTsKLSAgY2xvY2tfLkFkdmFuY2VUaW1lTWls
bGlzZWNvbmRzKDEzKTsKLSAgSW5jcmVtZW50VGltZXN0YW1wKCZwYWNrZXQxXywgNDcpOwotICBy
ZWNlaXZlX3N0YXRpc3RpY3NfLT5PblJ0cFBhY2tldChwYWNrZXQxXyk7Ci0gIEluY3JlbWVudFNl
cXVlbmNlTnVtYmVyKCZwYWNrZXQxXywgMyk7Ci0gIGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vj
b25kcygxMSk7Ci0gIEluY3JlbWVudFRpbWVzdGFtcCgmcGFja2V0MV8sIDE3KTsKLSAgcmVjZWl2
ZV9zdGF0aXN0aWNzXy0+T25SdHBQYWNrZXQocGFja2V0MV8pOwotICBJbmNyZW1lbnRTZXF1ZW5j
ZU51bWJlcigmcGFja2V0MV8pOwotCi0gIHJlY2VpdmVfc3RhdGlzdGljc18tPkdldFN0YXRpc3Rp
Y2lhbihrU3NyYzEpLT5HZXRTdGF0aXN0aWNzKCZzdGF0aXN0aWNzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKLQot
ICAvLyBTaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWZ0ZXIgZGVyZWdpc3Rlci4KLSAgRVhQ
RUNUX0VRKDF1LCBjYWxsYmFjay5udW1fY2FsbHNfKTsKIH0KIAogY2xhc3MgUnRwVGVzdENhbGxi
YWNrIDogcHVibGljIFN0cmVhbURhdGFDb3VudGVyc0NhbGxiYWNrIHsKQEAgLTM2MSw3ICszMzMs
NyBAQCBjbGFzcyBSdHBUZXN0Q2FsbGJhY2sgOiBwdWJsaWMgU3RyZWFtRGF0YUNvdW50ZXJzQ2Fs
bGJhY2sgewogCiBURVNUX0YoUmVjZWl2ZVN0YXRpc3RpY3NUZXN0LCBSdHBDYWxsYmFja3MpIHsK
ICAgUnRwVGVzdENhbGxiYWNrIGNhbGxiYWNrOwotICByZWNlaXZlX3N0YXRpc3RpY3NfLT5SZWdp
c3RlclJ0cFN0YXRpc3RpY3NDYWxsYmFjaygmY2FsbGJhY2spOworICByZWNlaXZlX3N0YXRpc3Rp
Y3NfID0gUmVjZWl2ZVN0YXRpc3RpY3M6OkNyZWF0ZSgmY2xvY2tfLCBudWxscHRyLCAmY2FsbGJh
Y2spOwogICByZWNlaXZlX3N0YXRpc3RpY3NfLT5FbmFibGVSZXRyYW5zbWl0RGV0ZWN0aW9uKGtT
c3JjMSwgdHJ1ZSk7CiAKICAgY29uc3Qgc2l6ZV90IGtIZWFkZXJMZW5ndGggPSAyMDsKQEAgLTQy
MCwxOSArMzkyLDExIEBAIFRFU1RfRihSZWNlaXZlU3RhdGlzdGljc1Rlc3QsIFJ0cENhbGxiYWNr
cykgewogICBleHBlY3RlZC5mZWMuaGVhZGVyX2J5dGVzID0ga0hlYWRlckxlbmd0aDsKICAgZXhw
ZWN0ZWQuZmVjLnBhY2tldHMgPSAxOwogICBjYWxsYmFjay5NYXRjaGVzKDUsIGtTc3JjMSwgZXhw
ZWN0ZWQpOwotCi0gIHJlY2VpdmVfc3RhdGlzdGljc18tPlJlZ2lzdGVyUnRwU3RhdGlzdGljc0Nh
bGxiYWNrKE5VTEwpOwotCi0gIC8vIE5ldyBzdGF0cywgYnV0IGNhbGxiYWNrIHNob3VsZCBub3Qg
YmUgY2FsbGVkLgotICBJbmNyZW1lbnRTZXF1ZW5jZU51bWJlcigmcGFja2V0MSk7Ci0gIGNsb2Nr
Xy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyg1KTsKLSAgcmVjZWl2ZV9zdGF0aXN0aWNzXy0+T25S
dHBQYWNrZXQocGFja2V0MSk7Ci0gIGNhbGxiYWNrLk1hdGNoZXMoNSwga1NzcmMxLCBleHBlY3Rl
ZCk7CiB9CiAKIFRFU1RfRihSZWNlaXZlU3RhdGlzdGljc1Rlc3QsIFJ0cENhbGxiYWNrc0ZlY0Zp
cnN0KSB7CiAgIFJ0cFRlc3RDYWxsYmFjayBjYWxsYmFjazsKLSAgcmVjZWl2ZV9zdGF0aXN0aWNz
Xy0+UmVnaXN0ZXJSdHBTdGF0aXN0aWNzQ2FsbGJhY2soJmNhbGxiYWNrKTsKKyAgcmVjZWl2ZV9z
dGF0aXN0aWNzXyA9IFJlY2VpdmVTdGF0aXN0aWNzOjpDcmVhdGUoJmNsb2NrXywgbnVsbHB0ciwg
JmNhbGxiYWNrKTsKIAogICBjb25zdCB1aW50MzJfdCBrSGVhZGVyTGVuZ3RoID0gMjA7CiAgIFJ0
cFBhY2tldFJlY2VpdmVkIHBhY2tldCA9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZW1vdGVfbnRw
X3RpbWVfZXN0aW1hdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVtb3RlX250cF90aW1lX2VzdGltYXRvci5j
YwppbmRleCBmYzg2N2E0OTFhMzc0OTg5NjYyMGZjZjg3NjMwYmVhZjFmMTgyMDhlLi5mZDE5YjEz
ODNhNDRlM2M4ZTlmYWViNjgzN2IzZGJkM2YyMDhlMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
ZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3JlbW90ZV9udHBfdGlt
ZV9lc3RpbWF0b3IuY2MKQEAgLTEwLDggKzEwLDkgQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yLmgiCiAKKyNpbmNsdWRlIDxj
c3RkaW50PgorCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3RpbWUvdGltZXN0YW1wX2V4dHJhcG9sYXRvci5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFw
cGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcmVtb3RlX250cF90aW1lX2VzdGltYXRvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3JlbW90ZV9udHBfdGltZV9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKaW5kZXggNTI1NGNkNTdiYjkz
M2I0MTA4OTRkMTJmYWM3NzE1ZWFmOTFkMmYwZi4uYjMwMTQ2MTQyN2I2OTdjOTUwNDk2MTliMGJh
NWI3ZGE4YzNlODg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcmVtb3RlX250cF90aW1lX2VzdGlt
YXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9yZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9y
X3VuaXR0ZXN0LmNjCkBAIC01Niw3ICs1Niw4IEBAIGNsYXNzIFJlbW90ZU50cFRpbWVFc3RpbWF0
b3JUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IG5ldHdvcmtpbmdfZGVsYXlfbXMpIHsKICAgICB1aW50MzJfdCBydGNw
X3RpbWVzdGFtcCA9IEdldFJlbW90ZVRpbWVzdGFtcCgpOwogICAgIGludDY0X3QgbnRwX2Vycm9y
X2ZyYWN0aW9ucyA9Ci0gICAgICAgIG50cF9lcnJvcl9tcyAqIE50cFRpbWU6OmtGcmFjdGlvbnNQ
ZXJTZWNvbmQgLyAxMDAwOworICAgICAgICBudHBfZXJyb3JfbXMgKiBzdGF0aWNfY2FzdDxpbnQ2
NF90PihOdHBUaW1lOjprRnJhY3Rpb25zUGVyU2Vjb25kKSAvCisgICAgICAgIDEwMDA7CiAgICAg
TnRwVGltZSBudHAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlbW90ZV9jbG9ja18uQ3VycmVudE50
cFRpbWUoKSkgKwogICAgICAgICAgICAgICAgIG50cF9lcnJvcl9mcmFjdGlvbnMpOwogICAgIEFk
dmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtUZXN0UnR0IC8gMiArIG5ldHdvcmtpbmdfZGVsYXlfbXMp
OwpAQCAtMTEwLDcgKzExMSwxNyBAQCBURVNUX0YoUmVtb3RlTnRwVGltZUVzdGltYXRvclRlc3Qs
IEVzdGltYXRlKSB7CiB9CiAKIFRFU1RfRihSZW1vdGVOdHBUaW1lRXN0aW1hdG9yVGVzdCwgQXZl
cmFnZXNFcnJvcnNPdXQpIHsKLSAgLy8gUmVtb3RlIHBlZXIgc2VuZHMgZmlyc3QgNSBSVENQIFNS
IHdpdGhvdXQgZXJyb3JzLgorICAvLyBSZW1vdGUgcGVlciBzZW5kcyBmaXJzdCAxMCBSVENQIFNS
IHdpdGhvdXQgZXJyb3JzLgorICBBZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKKyAgU2Vu
ZFJ0Y3BTcigpOworICBBZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKKyAgU2VuZFJ0Y3BT
cigpOworICBBZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKKyAgU2VuZFJ0Y3BTcigpOwor
ICBBZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKKyAgU2VuZFJ0Y3BTcigpOworICBBZHZh
bmNlVGltZU1pbGxpc2Vjb25kcygxMDAwKTsKKyAgU2VuZFJ0Y3BTcigpOwogICBBZHZhbmNlVGlt
ZU1pbGxpc2Vjb25kcygxMDAwKTsKICAgU2VuZFJ0Y3BTcigpOwogICBBZHZhbmNlVGltZU1pbGxp
c2Vjb25kcygxMDAwKTsKQEAgLTEyMiwxOCArMTMzLDE3IEBAIFRFU1RfRihSZW1vdGVOdHBUaW1l
RXN0aW1hdG9yVGVzdCwgQXZlcmFnZXNFcnJvcnNPdXQpIHsKICAgQWR2YW5jZVRpbWVNaWxsaXNl
Y29uZHMoMTAwMCk7CiAgIFNlbmRSdGNwU3IoKTsKIAotICBBZHZhbmNlVGltZU1pbGxpc2Vjb25k
cygxNSk7CisgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDE1MCk7CiAgIHVpbnQzMl90IHJ0cF90
aW1lc3RhbXAgPSBHZXRSZW1vdGVUaW1lc3RhbXAoKTsKICAgaW50NjRfdCBjYXB0dXJlX250cF90
aW1lX21zID0gbG9jYWxfY2xvY2tfLkN1cnJlbnROdHBJbk1pbGxpc2Vjb25kcygpOwotCiAgIC8v
IExvY2FsIHBlZXIgZ2V0cyBlbm91Z2ggUlRDUCBTUiB0byBjYWxjdWxhdGUgdGhlIGNhcHR1cmUg
dGltZS4KICAgRVhQRUNUX0VRKGNhcHR1cmVfbnRwX3RpbWVfbXMsIGVzdGltYXRvcl8tPkVzdGlt
YXRlKHJ0cF90aW1lc3RhbXApKTsKIAogICAvLyBSZW1vdGUgc2VuZHMgY29ycnVwdGVkIFJUQ1Ag
U1JzCiAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMDApOwotICBTZW5kUnRjcFNySW5hY2N1
cmF0ZWx5KDEwLCAxMCk7CisgIFNlbmRSdGNwU3JJbmFjY3VyYXRlbHkoLypudHBfZXJyb3JfbXM9
Ki8yLCAvKm5ldHdvcmtpbmdfZGVsYXlfbXM9Ki8tMSk7CiAgIEFkdmFuY2VUaW1lTWlsbGlzZWNv
bmRzKDEwMDApOwotICBTZW5kUnRjcFNySW5hY2N1cmF0ZWx5KC0yMCwgNSk7CisgIFNlbmRSdGNw
U3JJbmFjY3VyYXRlbHkoLypudHBfZXJyb3JfbXM9Ki8tMiwgLypuZXR3b3JraW5nX2RlbGF5X21z
PSovMSk7CiAKICAgLy8gTmV3IFJUUCBwYWNrZXQgdG8gZXN0aW1hdGUgdGltZXN0YW1wLgogICBB
ZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxNTApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9u
YWNrX3N0YXRzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9uYWNrX3N0YXRzLmNjCmluZGV4IDI0YjcwODUw
MmVlNmMyNzUxYWVlYjBjMWI0MWQ0M2RjMDMxNjY0NGQuLjFkNjUyZDBiNWJhN2JjNzU4MWJlMGJm
OTIwYWE1MTRhNjhlMmJlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfbmFja19zdGF0cy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX25hY2tfc3RhdHMuY2MKQEAgLTEwLDcgKzEwLDcgQEAKIAog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfbmFja19zdGF0cy5oIgogCi0j
aW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlc19wdWJsaWMuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC5oCmluZGV4IDExMDM3Y2JkODJkNjI3Mzc2YmNkYWFiNDk3OTI0ZGQ1
M2RiYTU2ZDUuLjQwZTUxZTg3YWQzM2Q2ZjBhMDA0MTdhY2U4MGIyZDBiMGUxZWJkYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQu
aApAQCAtMTEsNiArMTEsMTAgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRD
UF9QQUNLRVRfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRf
SF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVk
ZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9mdW5jdGlvbl92aWV3LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcGFja2V0L2FwcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2FwcC5jYwppbmRleCA0ZTIx
YmM5M2U0ODc5OTAwYTc5ODkzNDQ3NjQ2N2M0MjEzZWU5OWUwLi5lYWRkNGQ5YzM1MmY4ZmZmNDcz
ZmEzNmQxNDU1OGIzMzVkYTg4MmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9h
cHAuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYXBwLmNjCkBAIC0xMCw2ICsxMCw5IEBA
CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9hcHAuaCIK
IAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisKICNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvY29tbW9uX2hlYWRlci5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NoZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYXBwLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3BhY2tldC9hcHAuaAppbmRleCAxOWE5N2UwZWQ5MjBhMzFhNTRhZTI1ZDM3
YjY0MzVkZTFiOTA2NWZmLi5hOTYwMmE4MGNmYjVhODc4YjhiNWJjZDM2OWYwNDViODA5ODQ2MTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9hcHAuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3BhY2tldC9hcHAuaApAQCAtMTEsNiArMTEsOSBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9S
VENQX1NPVVJDRV9SVENQX1BBQ0tFVF9BUFBfSF8KICNkZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9T
T1VSQ0VfUlRDUF9QQUNLRVRfQVBQX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFj
a2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfcGFja2V0L2J5ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2J5ZS5jYwppbmRl
eCAwZTJlYjllNDFhM2UxZDJjMjc2NTJjNWUxMDU4MGY2MTk5OTk3M2E0Li4yM2FjMzVmODU2YjUz
ODkxMzNkZDBmYjU0ZDhmN2U1OTcxM2UzZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3Bh
Y2tldC9ieWUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvYnllLmNjCkBAIC0xMCw2ICsx
MCw4IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9i
eWUuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVk
ZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2V4dGVuZGVkX2ppdHRlcl9yZXBv
cnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRlZF9qaXR0ZXJfcmVwb3J0LmNjCmlu
ZGV4IDI3ZWQ0Y2NlZjRmNjMyMWFhMjNlODYxZmQzZGYyYzNjYzRkOTI2NTQuLjVlN2RhZGQxZjQ4
MmExMWQzOGRlYTBiYTdmMTRiMWU0YWQ2YzU5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bf
cGFja2V0L2V4dGVuZGVkX2ppdHRlcl9yZXBvcnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNr
ZXQvZXh0ZW5kZWRfaml0dGVyX3JlcG9ydC5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvZXh0ZW5kZWRfaml0dGVyX3Jl
cG9ydC5oIgogCisjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9wYWNrZXQvZXh0ZW5kZWRfcmVwb3J0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFj
a2V0L2V4dGVuZGVkX3JlcG9ydHMuY2MKaW5kZXggNTUxM2YzN2RiYTBiMWYzNzRiN2MxM2EyM2Y5
YWEyYzc2YWY3NDBhYy4uMmI1ZjljYWNkNzI4MjEzOTJiYjg4YjJlMzkxOTE3YzliMzJmOGMxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvZXh0ZW5kZWRfcmVwb3J0cy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRlbmRlZF9yZXBvcnRzLmNjCkBAIC0xMCw2ICsxMCw4
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9leHRl
bmRlZF9yZXBvcnRzLmgiCiAKKyNpbmNsdWRlIDx2ZWN0b3I+CisKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRjcF9wYWNrZXQvY29tbW9uX2hlYWRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvbmFjay5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfcGFja2V0L25hY2suY2MKaW5kZXggNmE0YTBiZGMwZTQzYmE3YzM0OGVmZjc1YzA5
ZmEzOWY5ODIxZDU2YS4uNmZlN2VhZGU2MmI2NDc4MDk2YjJkYmJhZGUyM2NiMzI4MzVkOTFmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvbmFjay5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3BhY2tldC9uYWNrLmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvbmFjay5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
Y3BfcGFja2V0L3BzZmIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3BzZmIuaAppbmRleCBhZTY2
YTE3MjM4N2VjYzg2ZTE3N2YxMzU3YzE2NmUxMjMzOWRhZWM2Li40NmVlMjkxMjg1MDQ2MDg1YmY0
MzM2M2NmZTVmOTY1YmMxNjI4N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9w
c2ZiLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcHNmYi5oCkBAIC0xMiw2ICsxMiw5IEBA
CiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfUEFDS0VUX1BTRkJfSF8KICNk
ZWZpbmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRfUFNGQl9IXwogCisjaW5j
bHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3JlY2VpdmVyX3JlcG9ydC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9wYWNrZXQvcmVjZWl2ZXJfcmVwb3J0LmgKaW5kZXggOGYxNDNkYTcyYzA5MDFlZjYz
YzBhYWRhMmMyODlkZWM5NDA1N2E4Mi4uNzQ3MGQxZDJlMTBhYmI3MmNkYjdkYWY1MzA0YmYzNDQx
MmE4MjkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVjZWl2ZXJfcmVwb3J0
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVjZWl2ZXJfcmVwb3J0LmgKQEAgLTExLDYg
KzExLDggQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRfUkVD
RUlWRVJfUkVQT1JUX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfUEFD
S0VUX1JFQ0VJVkVSX1JFUE9SVF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8
c3RkaW50Lmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF9wYWNrZXQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0
L3JlbWIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9yZW1iLmNjCmluZGV4IDAyNDA2MTE2ZjZl
NzkzZTZiMDJiNjQ2NmZhODkzOTAyMjE2NWI5YzkuLjNlZDFmYmRiODAzZTY0MzRhMWYyNTU4NWJh
YmJlNGE1OWU2YWVjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3JlbWIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVtYi5jYwpAQCAtMTAsNiArMTAsNyBAQAogCiAj
aW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcmVtYi5oIgogCisj
aW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9w
YWNrZXQvcnJ0ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcnJ0ci5oCmluZGV4IGE0NzBiMWEy
MTdjNTU2YjUzMDQ4NmU4YTgwNWY0YjJiZWJkODFjMzMuLjhlYjRjZTYyYWRlZjhiODZhOGFkNmQ5
ZmQ1ZDdjZDc1NjY4MTFiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3JydHIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ycnRyLmgKQEAgLTEyLDYgKzEyLDkgQEAKICNp
Zm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRDUF9QQUNLRVRfUlJUUl9IXwogI2RlZmlu
ZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVENQX1BBQ0tFVF9SUlRSX0hfCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgInN5c3RlbV93cmFw
cGVycy9pbmNsdWRlL250cF90aW1lLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvcnRwZmIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3J0
cGZiLmgKaW5kZXggYTA0MDc0MTFhYjM4ODAwYzA5NmJiYjE2YTE4MmZhNjg1OTRkMTRkZi4uMjE5
Nzc3MzZiNjE5ZTQ4N2JlOGQ5ZTljMGRhZmMyOWVkNjU3NjZjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9wYWNrZXQvcnRwZmIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9ydHBmYi5o
CkBAIC0xMiw2ICsxMiw5IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1Bf
UEFDS0VUX1JUUEZCX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUQ1BfUEFD
S0VUX1JUUEZCX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4K
KwogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0LmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvc2Rlcy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3NkZXMuY2MKaW5kZXggMzM3YzhiMDRhODQ4NzA5MmU0
NmNlMGEzNjgyOGU0M2Y0NDJjZWQ3Yi4uMGVmNDMyOTAzZGI1NWVmZjQ3MjE2MzI0NTViMDgzYzk0
MTdlYTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvc2Rlcy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3BhY2tldC9zZGVzLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9zZGVzLmgiCiAKKyNpbmNsdWRl
IDxzdHJpbmcuaD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvYnl0ZV9pby5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
dG1tYm4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1ibi5jYwppbmRleCA0ZDM4YjNiNmRi
YjMwOTFkNWQyOWY4Y2YwMWVhNWQ1YzNkM2I2ZTI4Li5mNTdlNTc0OWMyZGVkMDVhOWNhMWJjMmY4
NjIwYzdhZTIzMWZjY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1ibi5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1ibi5jYwpAQCAtMTAsNyArMTAsNiBAQAog
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdG1tYm4uaCIK
IAotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC9jb21tb25faGVhZGVyLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdG1tYnIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3BhY2tldC90bW1ici5jYwppbmRleCBkOGYwNzNiODdmMzA5ZGY0NjQ5YjU2OWQzOTU4Yjk3
ZDk3NTU0YTk3Li45ZGM3NDVlNTA5YzQ4YTA5MGU4MWY5MmU5ODMwODMzOWExZjM1YTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90bW1ici5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3BhY2tldC90bW1ici5jYwpAQCAtMTAsNyArMTAsNiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQvdG1tYnIuaCIKIAotI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL2J5dGVfaW8uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC9jb21tb25faGVhZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9wYWNrZXQvdHJhbnNwb3J0X2ZlZWRiYWNrLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNr
ZXQvdHJhbnNwb3J0X2ZlZWRiYWNrLmNjCmluZGV4IDQ3MDNkMzEzMmVlODcyYjNiODkxN2RhZDYw
ODUxYzNiNDg5M2EzNTQuLjI4MTY1NTk0YmVjNGM5OTVlMDkwYWFiZWNkY2JhYmI2NjQ3Nzg2ZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L3RyYW5zcG9ydF9mZWVkYmFjay5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydGNwX3BhY2tldC90cmFuc3BvcnRfZmVlZGJhY2suY2MKQEAgLTExLDkg
KzExLDEwIEBACiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNrZXQv
dHJhbnNwb3J0X2ZlZWRiYWNrLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8
Y3N0ZGludD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRl
L21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxl
X2NvbW1vbl90eXBlc19wdWJsaWMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9wYWNr
ZXQvY29tbW9uX2hlYWRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVjZWl2ZXIu
Y2MKaW5kZXggNDk2Njc1NDk3YWQyM2UzYjVjZWNjNDQxMThmOWJjNDdjNjgyMjY4Yy4uMzgzZjc4
NWRmZWE4MjA2MjI1MWQwYTRmY2E3MWU2ZmFiOWEyNzhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRjcF9yZWNlaXZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyLmNjCkBAIC0xMzEs
NiArMTMxLDcgQEAgUlRDUFJlY2VpdmVyOjpSVENQUmVjZWl2ZXIoCiAgICAgUnRjcEludHJhRnJh
bWVPYnNlcnZlciogcnRjcF9pbnRyYV9mcmFtZV9vYnNlcnZlciwKICAgICBUcmFuc3BvcnRGZWVk
YmFja09ic2VydmVyKiB0cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2ZXIsCiAgICAgVmlkZW9CaXRy
YXRlQWxsb2NhdGlvbk9ic2VydmVyKiBiaXRyYXRlX2FsbG9jYXRpb25fb2JzZXJ2ZXIsCisgICAg
aW50IHJlcG9ydF9pbnRlcnZhbF9tcywKICAgICBNb2R1bGVSdHBSdGNwKiBvd25lcikKICAgICA6
IGNsb2NrXyhjbG9jayksCiAgICAgICByZWNlaXZlcl9vbmx5XyhyZWNlaXZlcl9vbmx5KSwKQEAg
LTEzOSw2ICsxNDAsNyBAQCBSVENQUmVjZWl2ZXI6OlJUQ1BSZWNlaXZlcigKICAgICAgIHJ0Y3Bf
aW50cmFfZnJhbWVfb2JzZXJ2ZXJfKHJ0Y3BfaW50cmFfZnJhbWVfb2JzZXJ2ZXIpLAogICAgICAg
dHJhbnNwb3J0X2ZlZWRiYWNrX29ic2VydmVyXyh0cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2ZXIp
LAogICAgICAgYml0cmF0ZV9hbGxvY2F0aW9uX29ic2VydmVyXyhiaXRyYXRlX2FsbG9jYXRpb25f
b2JzZXJ2ZXIpLAorICAgICAgcmVwb3J0X2ludGVydmFsX21zXyhyZXBvcnRfaW50ZXJ2YWxfbXMp
LAogICAgICAgbWFpbl9zc3JjXygwKSwKICAgICAgIHJlbW90ZV9zc3JjXygwKSwKICAgICAgIHJl
bW90ZV9zZW5kZXJfcnRwX3RpbWVfKDApLApAQCAtMjgwLDcgKzI4Miw4IEBAIFJUQ1BSZWNlaXZl
cjo6Q29uc3VtZVJlY2VpdmVkWHJSZWZlcmVuY2VUaW1lSW5mbygpIHsKICAgc3RkOjp2ZWN0b3I8
cnRjcDo6UmVjZWl2ZVRpbWVJbmZvPiBsYXN0X3hyX3J0aXM7CiAgIGxhc3RfeHJfcnRpcy5yZXNl
cnZlKGxhc3RfeHJfcnRpc19zaXplKTsKIAotICBjb25zdCB1aW50MzJfdCBub3dfbnRwID0gQ29t
cGFjdE50cChjbG9ja18tPkN1cnJlbnROdHBUaW1lKCkpOworICBjb25zdCB1aW50MzJfdCBub3df
bnRwID0KKyAgICAgIENvbXBhY3ROdHAoVGltZU1pY3Jvc1RvTnRwKGNsb2NrXy0+VGltZUluTWlj
cm9zZWNvbmRzKCkpKTsKIAogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxhc3RfeHJfcnRpc19z
aXplOyArK2kpIHsKICAgICBScnRySW5mb3JtYXRpb24mIHJydHIgPSByZWNlaXZlZF9ycnRyc18u
ZnJvbnQoKTsKQEAgLTQyNyw3ICs0MzAsNyBAQCB2b2lkIFJUQ1BSZWNlaXZlcjo6SGFuZGxlU2Vu
ZGVyUmVwb3J0KGNvbnN0IENvbW1vbkhlYWRlciYgcnRjcF9ibG9jaywKIAogICAgIHJlbW90ZV9z
ZW5kZXJfbnRwX3RpbWVfID0gc2VuZGVyX3JlcG9ydC5udHAoKTsKICAgICByZW1vdGVfc2VuZGVy
X3J0cF90aW1lXyA9IHNlbmRlcl9yZXBvcnQucnRwX3RpbWVzdGFtcCgpOwotICAgIGxhc3RfcmVj
ZWl2ZWRfc3JfbnRwXyA9IGNsb2NrXy0+Q3VycmVudE50cFRpbWUoKTsKKyAgICBsYXN0X3JlY2Vp
dmVkX3NyX250cF8gPSBUaW1lTWljcm9zVG9OdHAoY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMo
KSk7CiAgIH0gZWxzZSB7CiAgICAgLy8gV2Ugd2lsbCBvbmx5IHN0b3JlIHRoZSBzZW5kIHJlcG9y
dCBmcm9tIG9uZSBzb3VyY2UsIGJ1dAogICAgIC8vIHdlIHdpbGwgc3RvcmUgYWxsIHRoZSByZWNl
aXZlIGJsb2Nrcy4KQEAgLTUwMywxMCArNTA2LDE4IEBAIHZvaWQgUlRDUFJlY2VpdmVyOjpIYW5k
bGVSZXBvcnRCbG9jayhjb25zdCBSZXBvcnRCbG9jayYgcmVwb3J0X2Jsb2NrLAogICAvLyBJZiBu
byBTUiBoYXMgYmVlbiByZWNlaXZlZCB5ZXQsIHRoZSBmaWVsZCBpcyBzZXQgdG8gemVyby4KICAg
Ly8gUmVjZWl2ZXIgcnRwX3J0Y3AgbW9kdWxlIGlzIG5vdCBleHBlY3RlZCB0byBjYWxjdWxhdGUg
cnR0IHVzaW5nCiAgIC8vIFNlbmRlciBSZXBvcnRzIGV2ZW4gaWYgaXQgYWNjaWRlbnRhbGx5IGNh
bi4KLSAgaWYgKCFyZWNlaXZlcl9vbmx5XyAmJiBzZW5kX3RpbWVfbnRwICE9IDApIHsKKworICAv
LyBUT0RPKG5pc3NlKTogVXNlIHRoaXMgd2F5IHRvIGRldGVybWluZSB0aGUgUlRUIG9ubHkgd2hl
biB8cmVjZWl2ZXJfb25seV98CisgIC8vIGlzIGZhbHNlLiBIb3dldmVyLCB0aGF0IGN1cnJlbnRs
eSBicmVha3MgdGhlIHRlc3RzIG9mIHRoZQorICAvLyBnb29nQ2FwdHVyZVN0YXJ0TnRwVGltZU1z
IHN0YXQgZm9yIGF1ZGlvIHJlY2VpdmUgc3RyZWFtcy4gVG8gZml4LCBlaXRoZXIKKyAgLy8gZGVs
ZXRlIGFsbCBkZXBlbmRlbmNpZXMgb24gUlRUIG1lYXN1cmVtZW50cyBmb3IgYXVkaW8gcmVjZWl2
ZSBzdHJlYW1zLCBvcgorICAvLyBlbnN1cmUgdGhhdCBhdWRpbyByZWNlaXZlIHN0cmVhbXMgdGhh
dCBuZWVkIFJUVCBhbmQgc3RhdHMgdGhhdCBkZXBlbmQgb24gaXQKKyAgLy8gYXJlIGNvbmZpZ3Vy
ZWQgd2l0aCBhbiBhc3NvY2lhdGVkIGF1ZGlvIHNlbmQgc3RyZWFtLgorICBpZiAoc2VuZF90aW1l
X250cCAhPSAwKSB7CiAgICAgdWludDMyX3QgZGVsYXlfbnRwID0gcmVwb3J0X2Jsb2NrLmRlbGF5
X3NpbmNlX2xhc3Rfc3IoKTsKICAgICAvLyBMb2NhbCBOVFAgdGltZS4KLSAgICB1aW50MzJfdCBy
ZWNlaXZlX3RpbWVfbnRwID0gQ29tcGFjdE50cChjbG9ja18tPkN1cnJlbnROdHBUaW1lKCkpOwor
ICAgIHVpbnQzMl90IHJlY2VpdmVfdGltZV9udHAgPQorICAgICAgICBDb21wYWN0TnRwKFRpbWVN
aWNyb3NUb050cChjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSk7CiAKICAgICAvLyBSVFQg
aW4gMS8oMl4xNikgc2Vjb25kcy4KICAgICB1aW50MzJfdCBydHRfbnRwID0gcmVjZWl2ZV90aW1l
X250cCAtIGRlbGF5X250cCAtIHNlbmRfdGltZV9udHA7CkBAIC01NTIsMTIgKzU2MywxMiBAQCBS
VENQUmVjZWl2ZXI6OlRtbWJySW5mb3JtYXRpb24qIFJUQ1BSZWNlaXZlcjo6R2V0VG1tYnJJbmZv
cm1hdGlvbigKICAgcmV0dXJuICZpdC0+c2Vjb25kOwogfQogCi1ib29sIFJUQ1BSZWNlaXZlcjo6
UnRjcFJyVGltZW91dChpbnQ2NF90IHJ0Y3BfaW50ZXJ2YWxfbXMpIHsKK2Jvb2wgUlRDUFJlY2Vp
dmVyOjpSdGNwUnJUaW1lb3V0KCkgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZydGNwX3JlY2Vp
dmVyX2xvY2tfKTsKICAgaWYgKGxhc3RfcmVjZWl2ZWRfcmJfbXNfID09IDApCiAgICAgcmV0dXJu
IGZhbHNlOwogCi0gIGludDY0X3QgdGltZV9vdXRfbXMgPSBrUnJUaW1lb3V0SW50ZXJ2YWxzICog
cnRjcF9pbnRlcnZhbF9tczsKKyAgaW50NjRfdCB0aW1lX291dF9tcyA9IGtSclRpbWVvdXRJbnRl
cnZhbHMgKiByZXBvcnRfaW50ZXJ2YWxfbXNfOwogICBpZiAoY2xvY2tfLT5UaW1lSW5NaWxsaXNl
Y29uZHMoKSA+IGxhc3RfcmVjZWl2ZWRfcmJfbXNfICsgdGltZV9vdXRfbXMpIHsKICAgICAvLyBS
ZXNldCB0aGUgdGltZXIgdG8gb25seSB0cmlnZ2VyIG9uZSBsb2cuCiAgICAgbGFzdF9yZWNlaXZl
ZF9yYl9tc18gPSAwOwpAQCAtNTY2LDEyICs1NzcsMTIgQEAgYm9vbCBSVENQUmVjZWl2ZXI6OlJ0
Y3BSclRpbWVvdXQoaW50NjRfdCBydGNwX2ludGVydmFsX21zKSB7CiAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBSVENQUmVjZWl2ZXI6OlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dChpbnQ2
NF90IHJ0Y3BfaW50ZXJ2YWxfbXMpIHsKK2Jvb2wgUlRDUFJlY2VpdmVyOjpSdGNwUnJTZXF1ZW5j
ZU51bWJlclRpbWVvdXQoKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJnJ0Y3BfcmVjZWl2ZXJf
bG9ja18pOwogICBpZiAobGFzdF9pbmNyZWFzZWRfc2VxdWVuY2VfbnVtYmVyX21zXyA9PSAwKQog
ICAgIHJldHVybiBmYWxzZTsKIAotICBpbnQ2NF90IHRpbWVfb3V0X21zID0ga1JyVGltZW91dElu
dGVydmFscyAqIHJ0Y3BfaW50ZXJ2YWxfbXM7CisgIGludDY0X3QgdGltZV9vdXRfbXMgPSBrUnJU
aW1lb3V0SW50ZXJ2YWxzICogcmVwb3J0X2ludGVydmFsX21zXzsKICAgaWYgKGNsb2NrXy0+VGlt
ZUluTWlsbGlzZWNvbmRzKCkgPgogICAgICAgbGFzdF9pbmNyZWFzZWRfc2VxdWVuY2VfbnVtYmVy
X21zXyArIHRpbWVfb3V0X21zKSB7CiAgICAgLy8gUmVzZXQgdGhlIHRpbWVyIHRvIG9ubHkgdHJp
Z2dlciBvbmUgbG9nLgpAQCAtNzIwLDcgKzczMSw4IEBAIHZvaWQgUlRDUFJlY2VpdmVyOjpIYW5k
bGVYcihjb25zdCBDb21tb25IZWFkZXImIHJ0Y3BfYmxvY2ssCiB2b2lkIFJUQ1BSZWNlaXZlcjo6
SGFuZGxlWHJSZWNlaXZlUmVmZXJlbmNlVGltZSh1aW50MzJfdCBzZW5kZXJfc3NyYywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Y3A6OlJy
dHImIHJydHIpIHsKICAgdWludDMyX3QgcmVjZWl2ZWRfcmVtb3RlX21pZF9udHBfdGltZSA9IENv
bXBhY3ROdHAocnJ0ci5udHAoKSk7Ci0gIHVpbnQzMl90IGxvY2FsX3JlY2VpdmVfbWlkX250cF90
aW1lID0gQ29tcGFjdE50cChjbG9ja18tPkN1cnJlbnROdHBUaW1lKCkpOworICB1aW50MzJfdCBs
b2NhbF9yZWNlaXZlX21pZF9udHBfdGltZSA9CisgICAgICBDb21wYWN0TnRwKFRpbWVNaWNyb3NU
b050cChjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSk7CiAKICAgYXV0byBpdCA9IHJlY2Vp
dmVkX3JydHJzX3NzcmNfaXRfLmZpbmQoc2VuZGVyX3NzcmMpOwogICBpZiAoaXQgIT0gcmVjZWl2
ZWRfcnJ0cnNfc3NyY19pdF8uZW5kKCkpIHsKQEAgLTc1NCw3ICs3NjYsNyBAQCB2b2lkIFJUQ1BS
ZWNlaXZlcjo6SGFuZGxlWHJEbHJyUmVwb3J0QmxvY2soY29uc3QgcnRjcDo6UmVjZWl2ZVRpbWVJ
bmZvJiBydGkpIHsKICAgICByZXR1cm47CiAKICAgdWludDMyX3QgZGVsYXlfbnRwID0gcnRpLmRl
bGF5X3NpbmNlX2xhc3RfcnI7Ci0gIHVpbnQzMl90IG5vd19udHAgPSBDb21wYWN0TnRwKGNsb2Nr
Xy0+Q3VycmVudE50cFRpbWUoKSk7CisgIHVpbnQzMl90IG5vd19udHAgPSBDb21wYWN0TnRwKFRp
bWVNaWNyb3NUb050cChjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKSk7CiAKICAgdWludDMy
X3QgcnR0X250cCA9IG5vd19udHAgLSBkZWxheV9udHAgLSBzZW5kX3RpbWVfbnRwOwogICB4cl9y
cl9ydHRfbXNfID0gQ29tcGFjdE50cFJ0dFRvTXMocnR0X250cCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3JlY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyLmgKaW5kZXggYTg2
M2NhZWZmN2I2OWU2Yzk3YjAzNGViNzMwNjAxM2UxODcxM2IzMS4uYmU0YzcwZTNjZWE0OTE4NmUw
MDliZDE3ZjZkMGNkNGUxYjQ0ODY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZl
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVjZWl2ZXIuaApAQCAtMTcsNiArMTcsNyBAQAogI2lu
Y2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL2luY2x1ZGUvcnRjcF9zdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydGNwX25hY2tfc3RhdHMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3BhY2tldC9kbHJyLmgiCkBAIC01Niw2ICs1Nyw3IEBAIGNsYXNzIFJUQ1BS
ZWNlaXZlciB7CiAgICAgICAgICAgICAgICBSdGNwSW50cmFGcmFtZU9ic2VydmVyKiBydGNwX2lu
dHJhX2ZyYW1lX29ic2VydmVyLAogICAgICAgICAgICAgICAgVHJhbnNwb3J0RmVlZGJhY2tPYnNl
cnZlciogdHJhbnNwb3J0X2ZlZWRiYWNrX29ic2VydmVyLAogICAgICAgICAgICAgICAgVmlkZW9C
aXRyYXRlQWxsb2NhdGlvbk9ic2VydmVyKiBiaXRyYXRlX2FsbG9jYXRpb25fb2JzZXJ2ZXIsCisg
ICAgICAgICAgICAgICBpbnQgcmVwb3J0X2ludGVydmFsX21zLAogICAgICAgICAgICAgICAgTW9k
dWxlUnRwUnRjcCogb3duZXIpOwogICB2aXJ0dWFsIH5SVENQUmVjZWl2ZXIoKTsKIApAQCAtOTQs
MTMgKzk2LDEzIEBAIGNsYXNzIFJUQ1BSZWNlaXZlciB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlm
IHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW4gUlRDUCBSUiBmb3Igc2V2ZXJhbCBSVENQCiAgIC8vIGlu
dGVydmFscywgYnV0IG9ubHkgdHJpZ2dlcnMgdHJ1ZSBvbmNlLgotICBib29sIFJ0Y3BSclRpbWVv
dXQoaW50NjRfdCBydGNwX2ludGVydmFsX21zKTsKKyAgYm9vbCBSdGNwUnJUaW1lb3V0KCk7CiAK
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW4gUlRDUCBSUiB0ZWxs
aW5nIHRoZSByZWNlaXZlIHNpZGUKICAgLy8gaGFzIG5vdCByZWNlaXZlZCBSVFAgcGFja2V0cyBm
b3IgdG9vIGxvbmcsIGkuZS4gZXh0ZW5kZWQgaGlnaGVzdCBzZXF1ZW5jZQogICAvLyBudW1iZXIg
aGFzbid0IGluY3JlYXNlZCBmb3Igc2V2ZXJhbCBSVENQIGludGVydmFscy4gVGhlIGZ1bmN0aW9u
IG9ubHkKICAgLy8gcmV0dXJucyB0cnVlIG9uY2UgdW50aWwgYSBuZXcgUlIgaXMgcmVjZWl2ZWQu
Ci0gIGJvb2wgUnRjcFJyU2VxdWVuY2VOdW1iZXJUaW1lb3V0KGludDY0X3QgcnRjcF9pbnRlcnZh
bF9tcyk7CisgIGJvb2wgUnRjcFJyU2VxdWVuY2VOdW1iZXJUaW1lb3V0KCk7CiAKICAgc3RkOjp2
ZWN0b3I8cnRjcDo6VG1tYkl0ZW0+IFRtbWJyUmVjZWl2ZWQoKTsKICAgLy8gUmV0dXJuIHRydWUg
aWYgbmV3IGJhbmR3aWR0aCBzaG91bGQgYmUgc2V0LgpAQCAtMjE1LDYgKzIxNyw3IEBAIGNsYXNz
IFJUQ1BSZWNlaXZlciB7CiAgIFJ0Y3BJbnRyYUZyYW1lT2JzZXJ2ZXIqIGNvbnN0IHJ0Y3BfaW50
cmFfZnJhbWVfb2JzZXJ2ZXJfOwogICBUcmFuc3BvcnRGZWVkYmFja09ic2VydmVyKiBjb25zdCB0
cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2ZXJfOwogICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2Jz
ZXJ2ZXIqIGNvbnN0IGJpdHJhdGVfYWxsb2NhdGlvbl9vYnNlcnZlcl87CisgIGNvbnN0IGludCBy
ZXBvcnRfaW50ZXJ2YWxfbXNfOwogCiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIHJ0Y3BfcmVjZWl2
ZXJfbG9ja187CiAgIHVpbnQzMl90IG1haW5fc3NyY18gUlRDX0dVQVJERURfQlkocnRjcF9yZWNl
aXZlcl9sb2NrXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF9yZWNlaXZlcl91bml0dGVzdC5jYwppbmRleCBjNzcwOGYwYmRk
ZDk3Y2FhNGJiZDY0ZGY0ODM2MGY2ODY2MmZmMDRhLi5hNTc2ZmRjNWU5YTU3NjM5MTk4NWZlODQz
NzlkOGMxNDMyMDRkYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3JlY2VpdmVyX3VuaXR0
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfcmVjZWl2ZXJfdW5pdHRlc3QuY2MKQEAgLTEwNyw2
ICsxMDcsOCBAQCBjb25zdGV4cHIgdWludDMyX3Qga1JlY2VpdmVyRXh0cmFTc3JjID0gMHgxMjM0
NTY3OwogY29uc3RleHByIHVpbnQzMl90IGtOb3RUb1VzU3NyYyA9IDB4NjU0MzIxOwogY29uc3Rl
eHByIHVpbnQzMl90IGtVbmtub3duU2VuZGVyU3NyYyA9IDB4NTQzMjE7CiAKK2NvbnN0ZXhwciBp
bnQ2NF90IGtSdGNwSW50ZXJ2YWxNcyA9IDEwMDA7CisKIH0gIC8vIG5hbWVzcGFjZQogCiBjbGFz
cyBSdGNwUmVjZWl2ZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CkBAIC0xMjAsNiAr
MTIyLDcgQEAgY2xhc3MgUnRjcFJlY2VpdmVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICAmaW50cmFfZnJhbWVfb2JzZXJ2ZXJfLAogICAgICAg
ICAgICAgICAgICAgICAgICAmdHJhbnNwb3J0X2ZlZWRiYWNrX29ic2VydmVyXywKICAgICAgICAg
ICAgICAgICAgICAgICAgJmJpdHJhdGVfYWxsb2NhdGlvbl9vYnNlcnZlcl8sCisgICAgICAgICAg
ICAgICAgICAgICAgIGtSdGNwSW50ZXJ2YWxNcywKICAgICAgICAgICAgICAgICAgICAgICAgJnJ0
cF9ydGNwX2ltcGxfKSB7fQogICB2b2lkIFNldFVwKCkgewogICAgIHN0ZDo6c2V0PHVpbnQzMl90
PiBzc3JjcyA9IHtrUmVjZWl2ZXJNYWluU3NyYywga1JlY2VpdmVyRXh0cmFTc3JjfTsKQEAgLTIw
OCw3ICsyMTEsOCBAQCBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgSW5qZWN0U3JQYWNrZXRDYWxj
dWxhdGVzUlRUKSB7CiAgIEVYUEVDVF9FUSgKICAgICAgIC0xLCBydGNwX3JlY2VpdmVyXy5SVFQo
a1NlbmRlclNzcmMsICZydHRfbXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpKTsKIAotICB1
aW50MzJfdCBzZW50X250cCA9IENvbXBhY3ROdHAoc3lzdGVtX2Nsb2NrXy5DdXJyZW50TnRwVGlt
ZSgpKTsKKyAgdWludDMyX3Qgc2VudF9udHAgPQorICAgICAgQ29tcGFjdE50cChUaW1lTWljcm9z
VG9OdHAoc3lzdGVtX2Nsb2NrXy5UaW1lSW5NaWNyb3NlY29uZHMoKSkpOwogICBzeXN0ZW1fY2xv
Y2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtSdHRNcyArIGtEZWxheU1zKTsKIAogICBydGNw
OjpTZW5kZXJSZXBvcnQgc3I7CkBAIC0yMzgsNyArMjQyLDggQEAgVEVTVF9GKFJ0Y3BSZWNlaXZl
clRlc3QsIEluamVjdFNyUGFja2V0Q2FsY3VsYXRlc05lZ2F0aXZlUlRUQXNPbmUpIHsKICAgRVhQ
RUNUX0VRKAogICAgICAgLTEsIHJ0Y3BfcmVjZWl2ZXJfLlJUVChrU2VuZGVyU3NyYywgJnJ0dF9t
cywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpOwogCi0gIHVpbnQzMl90IHNlbnRfbnRwID0g
Q29tcGFjdE50cChzeXN0ZW1fY2xvY2tfLkN1cnJlbnROdHBUaW1lKCkpOworICB1aW50MzJfdCBz
ZW50X250cCA9CisgICAgICBDb21wYWN0TnRwKFRpbWVNaWNyb3NUb050cChzeXN0ZW1fY2xvY2tf
LlRpbWVJbk1pY3Jvc2Vjb25kcygpKSk7CiAgIHN5c3RlbV9jbG9ja18uQWR2YW5jZVRpbWVNaWxs
aXNlY29uZHMoa1J0dE1zICsga0RlbGF5TXMpOwogCiAgIHJ0Y3A6OlNlbmRlclJlcG9ydCBzcjsK
QEAgLTI2Niw3ICsyNzEsOCBAQCBURVNUX0YoCiAgIGNvbnN0IHVpbnQzMl90IGtEZWxheU50cCA9
IDEyMzAwMDsKICAgY29uc3QgaW50NjRfdCBrRGVsYXlNcyA9IENvbXBhY3ROdHBSdHRUb01zKGtE
ZWxheU50cCk7CiAKLSAgdWludDMyX3Qgc2VudF9udHAgPSBDb21wYWN0TnRwKHN5c3RlbV9jbG9j
a18uQ3VycmVudE50cFRpbWUoKSk7CisgIHVpbnQzMl90IHNlbnRfbnRwID0KKyAgICAgIENvbXBh
Y3ROdHAoVGltZU1pY3Jvc1RvTnRwKHN5c3RlbV9jbG9ja18uVGltZUluTWljcm9zZWNvbmRzKCkp
KTsKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrUnR0TXMgKyBrRGVs
YXlNcyk7CiAKICAgcnRjcDo6U2VuZGVyUmVwb3J0IHNyOwpAQCAtNzM3LDcgKzc0Myw4IEBAIFRF
U1RfRihSdGNwUmVjZWl2ZXJUZXN0LCBJbmplY3RFeHRlbmRlZFJlcG9ydHNEbHJyUGFja2V0V2l0
aFN1YkJsb2NrKSB7CiAKICAgSW5qZWN0UnRjcFBhY2tldCh4cik7CiAKLSAgdWludDMyX3QgY29t
cGFjdF9udHBfbm93ID0gQ29tcGFjdE50cChzeXN0ZW1fY2xvY2tfLkN1cnJlbnROdHBUaW1lKCkp
OworICB1aW50MzJfdCBjb21wYWN0X250cF9ub3cgPQorICAgICAgQ29tcGFjdE50cChUaW1lTWlj
cm9zVG9OdHAoc3lzdGVtX2Nsb2NrXy5UaW1lSW5NaWNyb3NlY29uZHMoKSkpOwogICBFWFBFQ1Rf
VFJVRShydGNwX3JlY2VpdmVyXy5HZXRBbmRSZXNldFhyUnJSdHQoJnJ0dF9tcykpOwogICB1aW50
MzJfdCBydHRfbnRwID0gY29tcGFjdF9udHBfbm93IC0ga0RlbGF5IC0ga0xhc3RSUjsKICAgRVhQ
RUNUX05FQVIoQ29tcGFjdE50cFJ0dFRvTXMocnR0X250cCksIHJ0dF9tcywgMSk7CkBAIC03NTYs
NyArNzYzLDggQEAgVEVTVF9GKFJ0Y3BSZWNlaXZlclRlc3QsIEluamVjdEV4dGVuZGVkUmVwb3J0
c0RscnJQYWNrZXRXaXRoTXVsdGlwbGVTdWJCbG9ja3MpIHsKIAogICBJbmplY3RSdGNwUGFja2V0
KHhyKTsKIAotICB1aW50MzJfdCBjb21wYWN0X250cF9ub3cgPSBDb21wYWN0TnRwKHN5c3RlbV9j
bG9ja18uQ3VycmVudE50cFRpbWUoKSk7CisgIHVpbnQzMl90IGNvbXBhY3RfbnRwX25vdyA9Cisg
ICAgICBDb21wYWN0TnRwKFRpbWVNaWNyb3NUb050cChzeXN0ZW1fY2xvY2tfLlRpbWVJbk1pY3Jv
c2Vjb25kcygpKSk7CiAgIGludDY0X3QgcnR0X21zID0gMDsKICAgRVhQRUNUX1RSVUUocnRjcF9y
ZWNlaXZlcl8uR2V0QW5kUmVzZXRYclJyUnR0KCZydHRfbXMpKTsKICAgdWludDMyX3QgcnR0X250
cCA9IGNvbXBhY3RfbnRwX25vdyAtIGtEZWxheSAtIGtMYXN0UlI7CkBAIC04MTgsNyArODI2LDcg
QEAgVEVTVF9GKFJ0Y3BSZWNlaXZlclRlc3QsIFJ0dENhbGN1bGF0ZWRBZnRlckV4dGVuZGVkUmVw
b3J0c0RscnIpIHsKICAgY29uc3QgdWludDMyX3Qga0RlbGF5TnRwID0gcmFuZC5SYW5kKDAsIDB4
N2ZmZmZmZmYpOwogICBjb25zdCBpbnQ2NF90IGtEZWxheU1zID0gQ29tcGFjdE50cFJ0dFRvTXMo
a0RlbGF5TnRwKTsKICAgcnRjcF9yZWNlaXZlcl8uU2V0UnRjcFhyUnJ0clN0YXR1cyh0cnVlKTsK
LSAgTnRwVGltZSBub3cgPSBzeXN0ZW1fY2xvY2tfLkN1cnJlbnROdHBUaW1lKCk7CisgIE50cFRp
bWUgbm93ID0gVGltZU1pY3Jvc1RvTnRwKHN5c3RlbV9jbG9ja18uVGltZUluTWljcm9zZWNvbmRz
KCkpOwogICB1aW50MzJfdCBzZW50X250cCA9IENvbXBhY3ROdHAobm93KTsKICAgc3lzdGVtX2Ns
b2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrUnR0TXMgKyBrRGVsYXlNcyk7CiAKQEAgLTgz
OCw3ICs4NDYsNyBAQCBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgWHJEbHJyQ2FsY3VsYXRlc05l
Z2F0aXZlUnR0QXNPbmUpIHsKICAgY29uc3QgaW50NjRfdCBrUnR0TXMgPSByYW5kLlJhbmQoLTM2
MDAgKiAxMDAwLCAtMSk7CiAgIGNvbnN0IHVpbnQzMl90IGtEZWxheU50cCA9IHJhbmQuUmFuZCgw
LCAweDdmZmZmZmZmKTsKICAgY29uc3QgaW50NjRfdCBrRGVsYXlNcyA9IENvbXBhY3ROdHBSdHRU
b01zKGtEZWxheU50cCk7Ci0gIE50cFRpbWUgbm93ID0gc3lzdGVtX2Nsb2NrXy5DdXJyZW50TnRw
VGltZSgpOworICBOdHBUaW1lIG5vdyA9IFRpbWVNaWNyb3NUb050cChzeXN0ZW1fY2xvY2tfLlRp
bWVJbk1pY3Jvc2Vjb25kcygpKTsKICAgdWludDMyX3Qgc2VudF9udHAgPSBDb21wYWN0TnRwKG5v
dyk7CiAgIHN5c3RlbV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa1J0dE1zICsga0Rl
bGF5TXMpOwogICBydGNwX3JlY2VpdmVyXy5TZXRSdGNwWHJScnRyU3RhdHVzKHRydWUpOwpAQCAt
OTM2LDEzICs5NDQsMTIgQEAgVEVTVF9GKFJ0Y3BSZWNlaXZlclRlc3QsIFN0b3Jlc0xhc3RSZWNl
aXZlZFJydHJQZXJTc3JjKSB7CiB9CiAKIFRFU1RfRihSdGNwUmVjZWl2ZXJUZXN0LCBSZWNlaXZl
UmVwb3J0VGltZW91dCkgewotICBjb25zdCBpbnQ2NF90IGtSdGNwSW50ZXJ2YWxNcyA9IDEwMDA7
CiAgIGNvbnN0IHVpbnQxNl90IGtTZXF1ZW5jZU51bWJlciA9IDEyMzQ7CiAgIHN5c3RlbV9jbG9j
a18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMyAqIGtSdGNwSW50ZXJ2YWxNcyk7CiAKICAgLy8g
Tm8gUlIgcmVjZWl2ZWQsIHNob3VsZG4ndCB0cmlnZ2VyIGEgdGltZW91dC4KLSAgRVhQRUNUX0ZB
TFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoa1J0Y3BJbnRlcnZhbE1zKSk7Ci0gIEVY
UEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoa1J0
Y3BJbnRlcnZhbE1zKSk7CisgIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1l
b3V0KCkpOworICBFWFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRjcFJyU2VxdWVuY2VOdW1i
ZXJUaW1lb3V0KCkpOwogCiAgIC8vIEFkZCBhIFJSIGFuZCBhZHZhbmNlIHRoZSBjbG9jayBqdXN0
IGVub3VnaCB0byBub3QgdHJpZ2dlciBhIHRpbWVvdXQuCiAgIHJ0Y3A6OlJlcG9ydEJsb2NrIHJi
MTsKQEAgLTk1Nyw4ICs5NjQsOCBAQCBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgUmVjZWl2ZVJl
cG9ydFRpbWVvdXQpIHsKICAgSW5qZWN0UnRjcFBhY2tldChycjEpOwogCiAgIHN5c3RlbV9jbG9j
a18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMyAqIGtSdGNwSW50ZXJ2YWxNcyAtIDEpOwotICBF
WFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dChrUnRjcEludGVydmFsTXMp
KTsKLSAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGlt
ZW91dChrUnRjcEludGVydmFsTXMpKTsKKyAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0
Y3BSclRpbWVvdXQoKSk7CisgIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1
ZW5jZU51bWJlclRpbWVvdXQoKSk7CiAKICAgLy8gQWRkIGEgUlIgd2l0aCB0aGUgc2FtZSBleHRl
bmRlZCBtYXggYXMgdGhlIHByZXZpb3VzIFJSIHRvIHRyaWdnZXIgYQogICAvLyBzZXF1ZW5jZSBu
dW1iZXIgdGltZW91dCwgYnV0IG5vdCBhIFJSIHRpbWVvdXQuCkBAIC05NjcsMTcgKzk3NCwxNyBA
QCBURVNUX0YoUnRjcFJlY2VpdmVyVGVzdCwgUmVjZWl2ZVJlcG9ydFRpbWVvdXQpIHsKICAgSW5q
ZWN0UnRjcFBhY2tldChycjEpOwogCiAgIHN5c3RlbV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNl
Y29uZHMoMik7Ci0gIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KGtS
dGNwSW50ZXJ2YWxNcykpOwotICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1
ZW5jZU51bWJlclRpbWVvdXQoa1J0Y3BJbnRlcnZhbE1zKSk7CisgIEVYUEVDVF9GQUxTRShydGNw
X3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KCkpOworICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVy
Xy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoKSk7CiAKICAgLy8gQWR2YW5jZSBjbG9jayBl
bm91Z2ggdG8gdHJpZ2dlciBhbiBSUiB0aW1lb3V0IHRvby4KICAgc3lzdGVtX2Nsb2NrXy5BZHZh
bmNlVGltZU1pbGxpc2Vjb25kcygzICoga1J0Y3BJbnRlcnZhbE1zKTsKLSAgRVhQRUNUX1RSVUUo
cnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKKyAgRVhQRUNU
X1RSVUUocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dCgpKTsKIAogICAvLyBXZSBzaG91bGQg
b25seSBnZXQgb25lIHRpbWVvdXQgZXZlbiB0aG91Z2ggd2Ugc3RpbGwgaGF2ZW4ndCByZWNlaXZl
ZCBhIG5ldwogICAvLyBSUi4KLSAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRp
bWVvdXQoa1J0Y3BJbnRlcnZhbE1zKSk7Ci0gIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5S
dGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoa1J0Y3BJbnRlcnZhbE1zKSk7CisgIEVYUEVDVF9G
QUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KCkpOworICBFWFBFQ1RfRkFMU0UocnRj
cF9yZWNlaXZlcl8uUnRjcFJyU2VxdWVuY2VOdW1iZXJUaW1lb3V0KCkpOwogCiAgIC8vIEFkZCBh
IG5ldyBSUiB3aXRoIGluY3JlYXNlIHNlcXVlbmNlIG51bWJlciB0byByZXNldCB0aW1lcnMuCiAg
IHJ0Y3A6OlJlcG9ydEJsb2NrIHJiMjsKQEAgLTk5MSw4ICs5OTgsOCBAQCBURVNUX0YoUnRjcFJl
Y2VpdmVyVGVzdCwgUmVjZWl2ZVJlcG9ydFRpbWVvdXQpIHsKICAgRVhQRUNUX0NBTEwoYmFuZHdp
ZHRoX29ic2VydmVyXywgT25SZWNlaXZlZFJ0Y3BSZWNlaXZlclJlcG9ydChfLCBfLCBfKSk7CiAg
IEluamVjdFJ0Y3BQYWNrZXQocnIyKTsKIAotICBFWFBFQ1RfRkFMU0UocnRjcF9yZWNlaXZlcl8u
UnRjcFJyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKLSAgRVhQRUNUX0ZBTFNFKHJ0Y3BfcmVj
ZWl2ZXJfLlJ0Y3BSclNlcXVlbmNlTnVtYmVyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKKyAg
RVhQRUNUX0ZBTFNFKHJ0Y3BfcmVjZWl2ZXJfLlJ0Y3BSclRpbWVvdXQoKSk7CisgIEVYUEVDVF9G
QUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoKSk7CiAKICAg
Ly8gVmVyaWZ5IHdlIGNhbiBnZXQgYSB0aW1lb3V0IGFnYWluIG9uY2Ugd2UndmUgcmVjZWl2ZWQg
bmV3IFJSLgogICBzeXN0ZW1fY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDIgKiBrUnRj
cEludGVydmFsTXMpOwpAQCAtMTAwMSwxMSArMTAwOCwxMSBAQCBURVNUX0YoUnRjcFJlY2VpdmVy
VGVzdCwgUmVjZWl2ZVJlcG9ydFRpbWVvdXQpIHsKICAgSW5qZWN0UnRjcFBhY2tldChycjIpOwog
CiAgIHN5c3RlbV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa1J0Y3BJbnRlcnZhbE1z
ICsgMSk7Ci0gIEVYUEVDVF9GQUxTRShydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KGtSdGNw
SW50ZXJ2YWxNcykpOwotICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5j
ZU51bWJlclRpbWVvdXQoa1J0Y3BJbnRlcnZhbE1zKSk7CisgIEVYUEVDVF9GQUxTRShydGNwX3Jl
Y2VpdmVyXy5SdGNwUnJUaW1lb3V0KCkpOworICBFWFBFQ1RfVFJVRShydGNwX3JlY2VpdmVyXy5S
dGNwUnJTZXF1ZW5jZU51bWJlclRpbWVvdXQoKSk7CiAKICAgc3lzdGVtX2Nsb2NrXy5BZHZhbmNl
VGltZU1pbGxpc2Vjb25kcygyICoga1J0Y3BJbnRlcnZhbE1zKTsKLSAgRVhQRUNUX1RSVUUocnRj
cF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dChrUnRjcEludGVydmFsTXMpKTsKKyAgRVhQRUNUX1RS
VUUocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dCgpKTsKIH0KIAogVEVTVF9GKFJ0Y3BSZWNl
aXZlclRlc3QsIFRtbWJyUmVjZWl2ZWRXaXRoTm9JbmNvbWluZ1BhY2tldCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF9zZW5kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlci5jYwppbmRl
eCBiZmRkYzQyMmYwMTI4YmUyN2ZjY2QxODg2OTBhMThiMmMwZmQ0MjVjLi4yNTgxNDg3OTI3YmY4
NDA5NGViZmNmMGRlNmRlYjU5NDMyOTJmYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3Nl
bmRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlci5jYwpAQCAtMTAsNyArMTAsOCBAQAog
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9zZW5kZXIuaCIKIAotI2lu
Y2x1ZGUgPHN0cmluZy5oPiAgLy8gbWVtY3B5CisjaW5jbHVkZSA8c3RyaW5nLmg+ICAgLy8gbWVt
Y3B5CisjaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gc3RkOjptaW4KIAogI2luY2x1ZGUgPHV0aWxp
dHk+CiAKQEAgLTk5LDE2ICsxMDAsMTYgQEAgY2xhc3MgUlRDUFNlbmRlcjo6UnRjcENvbnRleHQg
ewogICBSdGNwQ29udGV4dChjb25zdCBGZWVkYmFja1N0YXRlJiBmZWVkYmFja19zdGF0ZSwKICAg
ICAgICAgICAgICAgaW50MzJfdCBuYWNrX3NpemUsCiAgICAgICAgICAgICAgIGNvbnN0IHVpbnQx
Nl90KiBuYWNrX2xpc3QsCi0gICAgICAgICAgICAgIE50cFRpbWUgbm93KQorICAgICAgICAgICAg
ICBpbnQ2NF90IG5vd191cykKICAgICAgIDogZmVlZGJhY2tfc3RhdGVfKGZlZWRiYWNrX3N0YXRl
KSwKICAgICAgICAgbmFja19zaXplXyhuYWNrX3NpemUpLAogICAgICAgICBuYWNrX2xpc3RfKG5h
Y2tfbGlzdCksCi0gICAgICAgIG5vd18obm93KSB7fQorICAgICAgICBub3dfdXNfKG5vd191cykg
e30KIAogICBjb25zdCBGZWVkYmFja1N0YXRlJiBmZWVkYmFja19zdGF0ZV87CiAgIGNvbnN0IGlu
dDMyX3QgbmFja19zaXplXzsKICAgY29uc3QgdWludDE2X3QqIG5hY2tfbGlzdF87Ci0gIGNvbnN0
IE50cFRpbWUgbm93XzsKKyAgY29uc3QgaW50NjRfdCBub3dfdXNfOwogfTsKIAogUlRDUFNlbmRl
cjo6UlRDUFNlbmRlcigKQEAgLTExOCwxNSArMTE5LDE0IEBAIFJUQ1BTZW5kZXI6OlJUQ1BTZW5k
ZXIoCiAgICAgUnRjcFBhY2tldFR5cGVDb3VudGVyT2JzZXJ2ZXIqIHBhY2tldF90eXBlX2NvdW50
ZXJfb2JzZXJ2ZXIsCiAgICAgUnRjRXZlbnRMb2cqIGV2ZW50X2xvZywKICAgICBUcmFuc3BvcnQq
IG91dGdvaW5nX3RyYW5zcG9ydCwKLSAgICBSdGNwSW50ZXJ2YWxDb25maWcgaW50ZXJ2YWxfY29u
ZmlnKQorICAgIGludCByZXBvcnRfaW50ZXJ2YWxfbXMpCiAgICAgOiBhdWRpb18oYXVkaW8pLAog
ICAgICAgY2xvY2tfKGNsb2NrKSwKICAgICAgIHJhbmRvbV8oY2xvY2tfLT5UaW1lSW5NaWNyb3Nl
Y29uZHMoKSksCiAgICAgICBtZXRob2RfKFJ0Y3BNb2RlOjprT2ZmKSwKICAgICAgIGV2ZW50X2xv
Z18oZXZlbnRfbG9nKSwKICAgICAgIHRyYW5zcG9ydF8ob3V0Z29pbmdfdHJhbnNwb3J0KSwKLSAg
ICAgIGludGVydmFsX2NvbmZpZ18oaW50ZXJ2YWxfY29uZmlnKSwKLSAgICAgIHVzaW5nX25hY2tf
KGZhbHNlKSwKKyAgICAgIHJlcG9ydF9pbnRlcnZhbF9tc18ocmVwb3J0X2ludGVydmFsX21zKSwK
ICAgICAgIHNlbmRpbmdfKGZhbHNlKSwKICAgICAgIG5leHRfdGltZV90b19zZW5kX3J0Y3BfKDAp
LAogICAgICAgdGltZXN0YW1wX29mZnNldF8oMCksCkBAIC0xNTEsNyArMTUxLDggQEAgUlRDUFNl
bmRlcjo6UlRDUFNlbmRlcigKIAogICAgICAgeHJfc2VuZF9yZWNlaXZlcl9yZWZlcmVuY2VfdGlt
ZV9lbmFibGVkXyhmYWxzZSksCiAgICAgICBwYWNrZXRfdHlwZV9jb3VudGVyX29ic2VydmVyXyhw
YWNrZXRfdHlwZV9jb3VudGVyX29ic2VydmVyKSwKLSAgICAgIHNlbmRfdmlkZW9fYml0cmF0ZV9h
bGxvY2F0aW9uXyhmYWxzZSkgeworICAgICAgc2VuZF92aWRlb19iaXRyYXRlX2FsbG9jYXRpb25f
KGZhbHNlKSwKKyAgICAgIGxhc3RfcGF5bG9hZF90eXBlXygtMSkgewogICBSVENfRENIRUNLKHRy
YW5zcG9ydF8gIT0gbnVsbHB0cik7CiAKICAgYnVpbGRlcnNfW2tSdGNwU3JdID0gJlJUQ1BTZW5k
ZXI6OkJ1aWxkU1I7CkBAIC0xODAsOSArMTgxLDggQEAgdm9pZCBSVENQU2VuZGVyOjpTZXRSVENQ
U3RhdHVzKFJ0Y3BNb2RlIG5ld19tZXRob2QpIHsKIAogICBpZiAobWV0aG9kXyA9PSBSdGNwTW9k
ZTo6a09mZiAmJiBuZXdfbWV0aG9kICE9IFJ0Y3BNb2RlOjprT2ZmKSB7CiAgICAgLy8gV2hlbiBz
d2l0Y2hpbmcgb24sIHJlc2NoZWR1bGUgdGhlIG5leHQgcGFja2V0Ci0gICAgaW50NjRfdCBpbnRl
cnZhbF9tcyA9IGF1ZGlvXyA/IGludGVydmFsX2NvbmZpZ18uYXVkaW9faW50ZXJ2YWxfbXMKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZXJ2YWxfY29uZmlnXy52aWRlb19p
bnRlcnZhbF9tczsKLSAgICBuZXh0X3RpbWVfdG9fc2VuZF9ydGNwXyA9IGNsb2NrXy0+VGltZUlu
TWlsbGlzZWNvbmRzKCkgKyAoaW50ZXJ2YWxfbXMgLyAyKTsKKyAgICBuZXh0X3RpbWVfdG9fc2Vu
ZF9ydGNwXyA9CisgICAgICAgIGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkgKyAocmVwb3J0
X2ludGVydmFsX21zXyAvIDIpOwogICB9CiAgIG1ldGhvZF8gPSBuZXdfbWV0aG9kOwogfQpAQCAt
MjU0LDggKzI1NCwxNCBAQCB2b2lkIFJUQ1BTZW5kZXI6OlNldFRpbWVzdGFtcE9mZnNldCh1aW50
MzJfdCB0aW1lc3RhbXBfb2Zmc2V0KSB7CiB9CiAKIHZvaWQgUlRDUFNlbmRlcjo6U2V0TGFzdFJ0
cFRpbWUodWludDMyX3QgcnRwX3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50NjRfdCBjYXB0dXJlX3RpbWVfbXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50NjRfdCBjYXB0dXJlX3RpbWVfbXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDhfdCBwYXlsb2FkX3R5cGUpIHsKICAgcnRjOjpDcml0U2NvcGUgbG9jaygm
Y3JpdGljYWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8pOworICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3
aXRoIGNsaWVudHMgd2hvIGRvbid0IHNldCBwYXlsb2FkIHR5cGUgY29ycmVjdGx5IG9uIGFsbAor
ICAvLyBjYWxscy4KKyAgaWYgKHBheWxvYWRfdHlwZSAhPSAtMSkgeworICAgIGxhc3RfcGF5bG9h
ZF90eXBlXyA9IHBheWxvYWRfdHlwZTsKKyAgfQogICBsYXN0X3J0cF90aW1lc3RhbXBfID0gcnRw
X3RpbWVzdGFtcDsKICAgaWYgKGNhcHR1cmVfdGltZV9tcyA8IDApIHsKICAgICAvLyBXZSBkb24n
dCBjdXJyZW50bHkgZ2V0IGEgY2FwdHVyZSB0aW1lIGZyb20gVm9pY2VFbmdpbmUuCkBAIC0yNjUs
NiArMjcxLDExIEBAIHZvaWQgUlRDUFNlbmRlcjo6U2V0TGFzdFJ0cFRpbWUodWludDMyX3QgcnRw
X3RpbWVzdGFtcCwKICAgfQogfQogCit2b2lkIFJUQ1BTZW5kZXI6OlNldFJ0cENsb2NrUmF0ZShp
bnQ4X3QgcGF5bG9hZF90eXBlLCBpbnQgcnRwX2Nsb2NrX3JhdGVfaHopIHsKKyAgcnRjOjpDcml0
U2NvcGUgbG9jaygmY3JpdGljYWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8pOworICBydHBfY2xvY2tf
cmF0ZXNfa2h6X1twYXlsb2FkX3R5cGVdID0gcnRwX2Nsb2NrX3JhdGVfaHogLyAxMDAwOworfQor
CiB1aW50MzJfdCBSVENQU2VuZGVyOjpTU1JDKCkgY29uc3QgewogICBydGM6OkNyaXRTY29wZSBs
b2NrKCZjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2VuZGVyXyk7CiAgIHJldHVybiBzc3JjXzsKQEAg
LTQxMSwxNSArNDIyLDIxIEBAIHN0ZDo6dW5pcXVlX3B0cjxydGNwOjpSdGNwUGFja2V0PiBSVENQ
U2VuZGVyOjpCdWlsZFNSKGNvbnN0IFJ0Y3BDb250ZXh0JiBjdHgpIHsKICAgLy8gdGhlIGZyYW1l
IGJlaW5nIGNhcHR1cmVkIGF0IHRoaXMgbW9tZW50LiBXZSBhcmUgY2FsY3VsYXRpbmcgdGhhdAog
ICAvLyB0aW1lc3RhbXAgYXMgdGhlIGxhc3QgZnJhbWUncyB0aW1lc3RhbXAgKyB0aGUgdGltZSBz
aW5jZSB0aGUgbGFzdCBmcmFtZQogICAvLyB3YXMgY2FwdHVyZWQuCi0gIHVpbnQzMl90IHJ0cF9y
YXRlID0KLSAgICAgIChhdWRpb18gPyBrQm9ndXNSdHBSYXRlRm9yQXVkaW9SdGNwIDoga1ZpZGVv
UGF5bG9hZFR5cGVGcmVxdWVuY3kpIC8gMTAwMDsKKyAgaW50IHJ0cF9yYXRlID0gcnRwX2Nsb2Nr
X3JhdGVzX2toel9bbGFzdF9wYXlsb2FkX3R5cGVfXTsKKyAgaWYgKHJ0cF9yYXRlIDw9IDApIHsK
KyAgICBydHBfcmF0ZSA9CisgICAgICAgIChhdWRpb18gPyBrQm9ndXNSdHBSYXRlRm9yQXVkaW9S
dGNwIDoga1ZpZGVvUGF5bG9hZFR5cGVGcmVxdWVuY3kpIC8KKyAgICAgICAgMTAwMDsKKyAgfQor
ICAvLyBSb3VuZCBub3dfdXNfIHRvIHRoZSBjbG9zZXN0IG1pbGxpc2Vjb25kLCBiZWNhdXNlIE50
cCB0aW1lIGlzIHJvdW5kZWQKKyAgLy8gd2hlbiBjb252ZXJ0ZWQgdG8gbWlsbGlzZWNvbmRzLAog
ICB1aW50MzJfdCBydHBfdGltZXN0YW1wID0KICAgICAgIHRpbWVzdGFtcF9vZmZzZXRfICsgbGFz
dF9ydHBfdGltZXN0YW1wXyArCi0gICAgICAoY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSAt
IGxhc3RfZnJhbWVfY2FwdHVyZV90aW1lX21zXykgKiBydHBfcmF0ZTsKKyAgICAgICgoY3R4Lm5v
d191c18gKyA1MDApIC8gMTAwMCAtIGxhc3RfZnJhbWVfY2FwdHVyZV90aW1lX21zXykgKiBydHBf
cmF0ZTsKIAogICBydGNwOjpTZW5kZXJSZXBvcnQqIHJlcG9ydCA9IG5ldyBydGNwOjpTZW5kZXJS
ZXBvcnQoKTsKICAgcmVwb3J0LT5TZXRTZW5kZXJTc3JjKHNzcmNfKTsKLSAgcmVwb3J0LT5TZXRO
dHAoY3R4Lm5vd18pOworICByZXBvcnQtPlNldE50cChUaW1lTWljcm9zVG9OdHAoY3R4Lm5vd191
c18pKTsKICAgcmVwb3J0LT5TZXRSdHBUaW1lc3RhbXAocnRwX3RpbWVzdGFtcCk7CiAgIHJlcG9y
dC0+U2V0UGFja2V0Q291bnQoY3R4LmZlZWRiYWNrX3N0YXRlXy5wYWNrZXRzX3NlbnQpOwogICBy
ZXBvcnQtPlNldE9jdGV0Q291bnQoY3R4LmZlZWRiYWNrX3N0YXRlXy5tZWRpYV9ieXRlc19zZW50
KTsKQEAgLTYwMCw3ICs2MTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8cnRjcDo6UnRjcFBhY2tldD4g
UlRDUFNlbmRlcjo6QnVpbGRFeHRlbmRlZFJlcG9ydHMoCiAKICAgaWYgKCFzZW5kaW5nXyAmJiB4
cl9zZW5kX3JlY2VpdmVyX3JlZmVyZW5jZV90aW1lX2VuYWJsZWRfKSB7CiAgICAgcnRjcDo6UnJ0
ciBycnRyOwotICAgIHJydHIuU2V0TnRwKGN0eC5ub3dfKTsKKyAgICBycnRyLlNldE50cChUaW1l
TWljcm9zVG9OdHAoY3R4Lm5vd191c18pKTsKICAgICB4ci0+U2V0UnJ0cihycnRyKTsKICAgfQog
CkBAIC02NzUsNyArNjkyLDcgQEAgaW50MzJfdCBSVENQU2VuZGVyOjpTZW5kQ29tcG91bmRSVENQ
KAogCiAgICAgLy8gV2UgbmVlZCB0byBzZW5kIG91ciBOVFAgZXZlbiBpZiB3ZSBoYXZlbid0IHJl
Y2VpdmVkIGFueSByZXBvcnRzLgogICAgIFJ0Y3BDb250ZXh0IGNvbnRleHQoZmVlZGJhY2tfc3Rh
dGUsIG5hY2tfc2l6ZSwgbmFja19saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tf
LT5DdXJyZW50TnRwVGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrXy0+VGlt
ZUluTWljcm9zZWNvbmRzKCkpOwogCiAgICAgUHJlcGFyZVJlcG9ydChmZWVkYmFja19zdGF0ZSk7
CiAKQEAgLTc0OCwyOCArNzY1LDI0IEBAIHZvaWQgUlRDUFNlbmRlcjo6UHJlcGFyZVJlcG9ydChj
b25zdCBGZWVkYmFja1N0YXRlJiBmZWVkYmFja19zdGF0ZSkgewogICAgIH0KIAogICAgIC8vIGdl
bmVyYXRlIG5leHQgdGltZSB0byBzZW5kIGFuIFJUQ1AgcmVwb3J0Ci0gICAgdWludDMyX3QgbWlu
SW50ZXJ2YWxNcyA9Ci0gICAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50MzJfdD4oaW50ZXJ2
YWxfY29uZmlnXy5hdWRpb19pbnRlcnZhbF9tcyk7Ci0KLSAgICBpZiAoIWF1ZGlvXykgewotICAg
ICAgaWYgKHNlbmRpbmdfKSB7Ci0gICAgICAgIC8vIENhbGN1bGF0ZSBiYW5kd2lkdGggZm9yIHZp
ZGVvOyAzNjAgLyBzZW5kIGJhbmR3aWR0aCBpbiBrYml0L3MuCi0gICAgICAgIHVpbnQzMl90IHNl
bmRfYml0cmF0ZV9rYml0ID0gZmVlZGJhY2tfc3RhdGUuc2VuZF9iaXRyYXRlIC8gMTAwMDsKLSAg
ICAgICAgaWYgKHNlbmRfYml0cmF0ZV9rYml0ICE9IDApCi0gICAgICAgICAgbWluSW50ZXJ2YWxN
cyA9IDM2MDAwMCAvIHNlbmRfYml0cmF0ZV9rYml0OwotICAgICAgfQotICAgICAgaWYgKG1pbklu
dGVydmFsTXMgPgotICAgICAgICAgIHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50MzJfdD4oaW50ZXJ2
YWxfY29uZmlnXy52aWRlb19pbnRlcnZhbF9tcykpIHsKLSAgICAgICAgbWluSW50ZXJ2YWxNcyA9
Ci0gICAgICAgICAgICBydGM6OmRjaGVja2VkX2Nhc3Q8dWludDMyX3Q+KGludGVydmFsX2NvbmZp
Z18udmlkZW9faW50ZXJ2YWxfbXMpOworICAgIGludCBtaW5faW50ZXJ2YWxfbXMgPSByZXBvcnRf
aW50ZXJ2YWxfbXNfOworCisgICAgaWYgKCFhdWRpb18gJiYgc2VuZGluZ18pIHsKKyAgICAgIC8v
IENhbGN1bGF0ZSBiYW5kd2lkdGggZm9yIHZpZGVvOyAzNjAgLyBzZW5kIGJhbmR3aWR0aCBpbiBr
Yml0L3MuCisgICAgICBpbnQgc2VuZF9iaXRyYXRlX2tiaXQgPSBmZWVkYmFja19zdGF0ZS5zZW5k
X2JpdHJhdGUgLyAxMDAwOworICAgICAgaWYgKHNlbmRfYml0cmF0ZV9rYml0ICE9IDApIHsKKyAg
ICAgICAgbWluX2ludGVydmFsX21zID0gMzYwMDAwIC8gc2VuZF9iaXRyYXRlX2tiaXQ7CisgICAg
ICAgIG1pbl9pbnRlcnZhbF9tcyA9IHN0ZDo6bWluKG1pbl9pbnRlcnZhbF9tcywgcmVwb3J0X2lu
dGVydmFsX21zXyk7CiAgICAgICB9CiAgICAgfQogCiAgICAgLy8gVGhlIGludGVydmFsIGJldHdl
ZW4gUlRDUCBwYWNrZXRzIGlzIHZhcmllZCByYW5kb21seSBvdmVyIHRoZQogICAgIC8vIHJhbmdl
IFsxLzIsMy8yXSB0aW1lcyB0aGUgY2FsY3VsYXRlZCBpbnRlcnZhbC4KLSAgICB1aW50MzJfdCB0
aW1lVG9OZXh0ID0KLSAgICAgICAgcmFuZG9tXy5SYW5kKG1pbkludGVydmFsTXMgKiAxIC8gMiwg
bWluSW50ZXJ2YWxNcyAqIDMgLyAyKTsKLSAgICBuZXh0X3RpbWVfdG9fc2VuZF9ydGNwXyA9IGNs
b2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCkgKyB0aW1lVG9OZXh0OworICAgIGludCB0aW1lX3Rv
X25leHQgPQorICAgICAgICByYW5kb21fLlJhbmQobWluX2ludGVydmFsX21zICogMSAvIDIsIG1p
bl9pbnRlcnZhbF9tcyAqIDMgLyAyKTsKKworICAgIFJUQ19EQ0hFQ0tfR1QodGltZV90b19uZXh0
LCAwKTsKKyAgICBuZXh0X3RpbWVfdG9fc2VuZF9ydGNwXyA9IGNsb2NrXy0+VGltZUluTWlsbGlz
ZWNvbmRzKCkgKyB0aW1lX3RvX25leHQ7CiAKICAgICAvLyBSdGNwU2VuZGVyIGV4cGVjdGVkIHRv
IGJlIHVzZWQgZm9yIHNlbmRpbmcgZWl0aGVyIGp1c3Qgc2VuZGVyIHJlcG9ydHMKICAgICAvLyBv
ciBqdXN0IHJlY2VpdmVyIHJlcG9ydHMuCkBAIC03OTEsNyArODA0LDcgQEAgc3RkOjp2ZWN0b3I8
cnRjcDo6UmVwb3J0QmxvY2s+IFJUQ1BTZW5kZXI6OkNyZWF0ZVJlcG9ydEJsb2NrcygKICAgaWYg
KCFyZXN1bHQuZW1wdHkoKSAmJiAoKGZlZWRiYWNrX3N0YXRlLmxhc3RfcnJfbnRwX3NlY3MgIT0g
MCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZlZWRiYWNrX3N0YXRlLmxhc3RfcnJf
bnRwX2ZyYWMgIT0gMCkpKSB7CiAgICAgLy8gR2V0IG91ciBOVFAgYXMgbGF0ZSBhcyBwb3NzaWJs
ZSB0byBhdm9pZCBhIHJhY2UuCi0gICAgdWludDMyX3Qgbm93ID0gQ29tcGFjdE50cChjbG9ja18t
PkN1cnJlbnROdHBUaW1lKCkpOworICAgIHVpbnQzMl90IG5vdyA9IENvbXBhY3ROdHAoVGltZU1p
Y3Jvc1RvTnRwKGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkpKTsKIAogICAgIHVpbnQzMl90
IHJlY2VpdmVfdGltZSA9IGZlZWRiYWNrX3N0YXRlLmxhc3RfcnJfbnRwX3NlY3MgJiAweDAwMDBG
RkZGOwogICAgIHJlY2VpdmVfdGltZSA8PD0gMTY7CkBAIC05NDksMTIgKzk2Miw0IEBAIGJvb2wg
UlRDUFNlbmRlcjo6U2VuZEZlZWRiYWNrUGFja2V0KGNvbnN0IHJ0Y3A6OlRyYW5zcG9ydEZlZWRi
YWNrJiBwYWNrZXQpIHsKICAgcmV0dXJuIHBhY2tldC5CdWlsZChtYXhfcGFja2V0X3NpemUsIGNh
bGxiYWNrKSAmJiAhc2VuZF9mYWlsdXJlOwogfQogCi1pbnQ2NF90IFJUQ1BTZW5kZXI6OlJ0Y3BB
dWRpb1JlcG9ydEludmVydmFsKCkgY29uc3QgewotICByZXR1cm4gaW50ZXJ2YWxfY29uZmlnXy5h
dWRpb19pbnRlcnZhbF9tczsKLX0KLQotaW50NjRfdCBSVENQU2VuZGVyOjpSdGNwVmlkZW9SZXBv
cnRJbnZlcnZhbCgpIGNvbnN0IHsKLSAgcmV0dXJuIGludGVydmFsX2NvbmZpZ18udmlkZW9faW50
ZXJ2YWxfbXM7Ci19Ci0KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3Bfc2VuZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlci5oCmluZGV4IGM5MjIwZGQz
NWM3YTlkZmEwMGFkMmFjNWQwOTcxYjVkMzM1NzM3ZjkuLjA4NDUzOTdkYTNiZjZkMjI0NTc4ZjUx
YjA1N2FjY2M4MTNhYzI0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3Bfc2VuZGVyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF9zZW5kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBSVENQU2Vu
ZGVyIHsKICAgICAgICAgICAgICBSdGNwUGFja2V0VHlwZUNvdW50ZXJPYnNlcnZlciogcGFja2V0
X3R5cGVfY291bnRlcl9vYnNlcnZlciwKICAgICAgICAgICAgICBSdGNFdmVudExvZyogZXZlbnRf
bG9nLAogICAgICAgICAgICAgIFRyYW5zcG9ydCogb3V0Z29pbmdfdHJhbnNwb3J0LAotICAgICAg
ICAgICAgIFJ0Y3BJbnRlcnZhbENvbmZpZyBpbnRlcnZhbF9jb25maWcpOworICAgICAgICAgICAg
IGludCByZXBvcnRfaW50ZXJ2YWxfbXMpOwogICB2aXJ0dWFsIH5SVENQU2VuZGVyKCk7CiAKICAg
UnRjcE1vZGUgU3RhdHVzKCkgY29uc3Q7CkBAIC04Miw3ICs4MiwxMyBAQCBjbGFzcyBSVENQU2Vu
ZGVyIHsKIAogICB2b2lkIFNldFRpbWVzdGFtcE9mZnNldCh1aW50MzJfdCB0aW1lc3RhbXBfb2Zm
c2V0KTsKIAotICB2b2lkIFNldExhc3RSdHBUaW1lKHVpbnQzMl90IHJ0cF90aW1lc3RhbXAsIGlu
dDY0X3QgY2FwdHVyZV90aW1lX21zKTsKKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvNjQ1OCk6
IFJlbW92ZSBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSB3aGVuIGFsbCB0aGUKKyAgLy8gZGVwZW5k
aW5nIHByb2plY3RzIGFyZSB1cGRhdGVkIHRvIGNvcnJlY3RseSBzZXQgcGF5bG9hZCB0eXBlLgor
ICB2b2lkIFNldExhc3RSdHBUaW1lKHVpbnQzMl90IHJ0cF90aW1lc3RhbXAsCisgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBjYXB0dXJlX3RpbWVfbXMsCisgICAgICAgICAgICAgICAgICAg
ICAgaW50OF90IHBheWxvYWRfdHlwZSA9IC0xKTsKKworICB2b2lkIFNldFJ0cENsb2NrUmF0ZShp
bnQ4X3QgcGF5bG9hZF90eXBlLCBpbnQgcnRwX2Nsb2NrX3JhdGVfaHopOwogCiAgIHVpbnQzMl90
IFNTUkMoKSBjb25zdDsKIApAQCAtMTM1LDkgKzE0MSw2IEBAIGNsYXNzIFJUQ1BTZW5kZXIgewog
ICB2b2lkIFNldFZpZGVvQml0cmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2Nh
dGlvbiYgYml0cmF0ZSk7CiAgIGJvb2wgU2VuZEZlZWRiYWNrUGFja2V0KGNvbnN0IHJ0Y3A6OlRy
YW5zcG9ydEZlZWRiYWNrJiBwYWNrZXQpOwogCi0gIGludDY0X3QgUnRjcEF1ZGlvUmVwb3J0SW52
ZXJ2YWwoKSBjb25zdDsKLSAgaW50NjRfdCBSdGNwVmlkZW9SZXBvcnRJbnZlcnZhbCgpIGNvbnN0
OwotCiAgcHJpdmF0ZToKICAgY2xhc3MgUnRjcENvbnRleHQ7CiAKQEAgLTE4NCwxMCArMTg3LDkg
QEAgY2xhc3MgUlRDUFNlbmRlciB7CiAgIFJ0Y0V2ZW50TG9nKiBjb25zdCBldmVudF9sb2dfOwog
ICBUcmFuc3BvcnQqIGNvbnN0IHRyYW5zcG9ydF87CiAKLSAgY29uc3QgUnRjcEludGVydmFsQ29u
ZmlnIGludGVydmFsX2NvbmZpZ187CisgIGNvbnN0IGludCByZXBvcnRfaW50ZXJ2YWxfbXNfOwog
CiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRpY2FsX3NlY3Rpb25fcnRjcF9zZW5kZXJfOwot
ICBib29sIHVzaW5nX25hY2tfIFJUQ19HVUFSREVEX0JZKGNyaXRpY2FsX3NlY3Rpb25fcnRjcF9z
ZW5kZXJfKTsKICAgYm9vbCBzZW5kaW5nXyBSVENfR1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9u
X3J0Y3Bfc2VuZGVyXyk7CiAKICAgaW50NjRfdCBuZXh0X3RpbWVfdG9fc2VuZF9ydGNwXyBSVENf
R1VBUkRFRF9CWShjcml0aWNhbF9zZWN0aW9uX3J0Y3Bfc2VuZGVyXyk7CkBAIC0yNDQsNiArMjQ2
LDExIEBAIGNsYXNzIFJUQ1BTZW5kZXIgewogICAgICAgUlRDX0dVQVJERURfQlkoY3JpdGljYWxf
c2VjdGlvbl9ydGNwX3NlbmRlcl8pOwogICBib29sIHNlbmRfdmlkZW9fYml0cmF0ZV9hbGxvY2F0
aW9uXwogICAgICAgUlRDX0dVQVJERURfQlkoY3JpdGljYWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8p
OworCisgIHN0ZDo6bWFwPGludDhfdCwgaW50PiBydHBfY2xvY2tfcmF0ZXNfa2h6XworICAgICAg
UlRDX0dVQVJERURfQlkoY3JpdGljYWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8pOworICBpbnQ4X3Qg
bGFzdF9wYXlsb2FkX3R5cGVfIFJUQ19HVUFSREVEX0JZKGNyaXRpY2FsX3NlY3Rpb25fcnRjcF9z
ZW5kZXJfKTsKKwogICBhYnNsOjpvcHRpb25hbDxWaWRlb0JpdHJhdGVBbGxvY2F0aW9uPiBDaGVj
a0FuZFVwZGF0ZUxheWVyU3RydWN0dXJlKAogICAgICAgY29uc3QgVmlkZW9CaXRyYXRlQWxsb2Nh
dGlvbiYgYml0cmF0ZSkgY29uc3QKICAgICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQo
Y3JpdGljYWxfc2VjdGlvbl9ydGNwX3NlbmRlcl8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF9zZW5kZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlcl91bml0dGVzdC5jYwpp
bmRleCBiY2ZmYzgxMjEzZDlmMTI0OWM4MzM0MzM4ODNlNjU1ZjM1OTIyM2JlLi5lMWE0MzZiODQ1
MmZmNzI5MWM5NGI4ZmY3MTgwZWRiNWYxYzNiODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNw
X3NlbmRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlcl91bml0dGVzdC5j
YwpAQCAtMTEsMTEgKzExLDEzIEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaW5jbHVkZSAiY29t
bW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKKyNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2J5ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0Y3BfcGFja2V0L2NvbW1vbl9oZWFkZXIuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3NlbmRlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvdGltZV91dGlsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmgi
CiAjaW5jbHVkZSAidGVzdC9nbW9jay5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKQEAgLTQz
LDcgKzQ1LDcgQEAgY2xhc3MgUnRjcFBhY2tldFR5cGVDb3VudGVyT2JzZXJ2ZXJJbXBsIDogcHVi
bGljIFJ0Y3BQYWNrZXRUeXBlQ291bnRlck9ic2VydmVyIHsKICAgUnRjcFBhY2tldFR5cGVDb3Vu
dGVyIGNvdW50ZXJfOwogfTsKIAotY2xhc3MgVGVzdFRyYW5zcG9ydCA6IHB1YmxpYyBUcmFuc3Bv
cnQsIHB1YmxpYyBSdHBEYXRhIHsKK2NsYXNzIFRlc3RUcmFuc3BvcnQgOiBwdWJsaWMgVHJhbnNw
b3J0IHsKICBwdWJsaWM6CiAgIFRlc3RUcmFuc3BvcnQoKSB7fQogCkBAIC01NiwxMSArNTgsNiBA
QCBjbGFzcyBUZXN0VHJhbnNwb3J0IDogcHVibGljIFRyYW5zcG9ydCwgcHVibGljIFJ0cERhdGEg
ewogICAgIHBhcnNlcl8uUGFyc2UoZGF0YSwgbGVuKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQot
ICBpbnQgT25SZWNlaXZlZFBheWxvYWREYXRhKGNvbnN0IHVpbnQ4X3QqIHBheWxvYWRfZGF0YSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGF5bG9hZF9zaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciogcnRwX2hlYWRlcikg
b3ZlcnJpZGUgewotICAgIHJldHVybiAwOwotICB9CiAgIHRlc3Q6OlJ0Y3BQYWNrZXRQYXJzZXIg
cGFyc2VyXzsKIH07CiAKQEAgLTgyLDE1ICs3OSwxNyBAQCBjbGFzcyBSdGNwU2VuZGVyVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIGNvbmZpZ3VyYXRpb24uY2xvY2sgPSAmY2xv
Y2tfOwogICAgIGNvbmZpZ3VyYXRpb24ub3V0Z29pbmdfdHJhbnNwb3J0ID0gJnRlc3RfdHJhbnNw
b3J0XzsKICAgICBjb25maWd1cmF0aW9uLnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlciA9ICZy
ZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfOworICAgIGNvbmZpZ3VyYXRpb24ucnRjcF9yZXBv
cnRfaW50ZXJ2YWxfbXMgPSAxMDAwOwogCiAgICAgcnRwX3J0Y3BfaW1wbF8ucmVzZXQobmV3IE1v
ZHVsZVJ0cFJ0Y3BJbXBsKGNvbmZpZ3VyYXRpb24pKTsKICAgICBydGNwX3NlbmRlcl8ucmVzZXQo
bmV3IFJUQ1BTZW5kZXIoZmFsc2UsICZjbG9ja18sIHJlY2VpdmVfc3RhdGlzdGljc18uZ2V0KCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIs
ICZ0ZXN0X3RyYW5zcG9ydF8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb24ucnRjcF9pbnRlcnZhbF9jb25maWcpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5ydGNwX3JlcG9ydF9pbnRlcnZhbF9t
cykpOwogICAgIHJ0Y3Bfc2VuZGVyXy0+U2V0U1NSQyhrU2VuZGVyU3NyYyk7CiAgICAgcnRjcF9z
ZW5kZXJfLT5TZXRSZW1vdGVTU1JDKGtSZW1vdGVTc3JjKTsKICAgICBydGNwX3NlbmRlcl8tPlNl
dFRpbWVzdGFtcE9mZnNldChrU3RhcnRSdHBUaW1lc3RhbXApOwotICAgIHJ0Y3Bfc2VuZGVyXy0+
U2V0TGFzdFJ0cFRpbWUoa1J0cFRpbWVzdGFtcCwgY2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygp
KTsKKyAgICBydGNwX3NlbmRlcl8tPlNldExhc3RSdHBUaW1lKGtSdHBUaW1lc3RhbXAsIGNsb2Nr
Xy5UaW1lSW5NaWxsaXNlY29uZHMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qcGF5bHBhZF90eXBlPSovMCk7CiAgIH0KIAogICB2b2lkIEluc2VydEluY29taW5nUGFja2V0
KHVpbnQzMl90IHJlbW90ZV9zc3JjLCB1aW50MTZfdCBzZXFfbnVtKSB7CkBAIC0xNDEsNyArMTQw
LDcgQEAgVEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBTZW5kU3IpIHsKICAgcnRjcF9zZW5kZXJfLT5T
ZXRTZW5kaW5nU3RhdHVzKGZlZWRiYWNrX3N0YXRlLCB0cnVlKTsKICAgZmVlZGJhY2tfc3RhdGUu
cGFja2V0c19zZW50ID0ga1BhY2tldENvdW50OwogICBmZWVkYmFja19zdGF0ZS5tZWRpYV9ieXRl
c19zZW50ID0ga09jdGV0Q291bnQ7Ci0gIE50cFRpbWUgbnRwID0gY2xvY2tfLkN1cnJlbnROdHBU
aW1lKCk7CisgIE50cFRpbWUgbnRwID0gVGltZU1pY3Jvc1RvTnRwKGNsb2NrXy5UaW1lSW5NaWNy
b3NlY29uZHMoKSk7CiAgIEVYUEVDVF9FUSgwLCBydGNwX3NlbmRlcl8tPlNlbmRSVENQKGZlZWRi
YWNrX3N0YXRlLCBrUnRjcFNyKSk7CiAgIEVYUEVDVF9FUSgxLCBwYXJzZXIoKS0+c2VuZGVyX3Jl
cG9ydCgpLT5udW1fcGFja2V0cygpKTsKICAgRVhQRUNUX0VRKGtTZW5kZXJTc3JjLCBwYXJzZXIo
KS0+c2VuZGVyX3JlcG9ydCgpLT5zZW5kZXJfc3NyYygpKTsKQEAgLTE1MywxMCArMTUyLDQyIEBA
IFRFU1RfRihSdGNwU2VuZGVyVGVzdCwgU2VuZFNyKSB7CiAgIEVYUEVDVF9FUSgwVSwgcGFyc2Vy
KCktPnNlbmRlcl9yZXBvcnQoKS0+cmVwb3J0X2Jsb2NrcygpLnNpemUoKSk7CiB9CiAKK1RFU1Rf
RihSdGNwU2VuZGVyVGVzdCwgU2VuZENvbnNlY3V0aXZlU3JXaXRoRXhhY3RTbG9wZSkgeworICBj
b25zdCB1aW50MzJfdCBrUGFja2V0Q291bnQgPSAweDEyMzQ1OworICBjb25zdCB1aW50MzJfdCBr
T2N0ZXRDb3VudCA9IDB4MjM0NTY7CisgIGNvbnN0IGludCBrVGltZUJldHdlZW5TUnNVcyA9IDEw
MDQzOyAgLy8gTm90IGV4YWN0IHZhbHVlIGluIG1pbGxpc2Vjb25kcy4KKyAgY29uc3QgaW50IGtF
eHRyYVBhY2tldHMgPSAzMDsKKyAgLy8gTWFrZSBzdXJlIGNsb2NrIGlzIG5vdCBleGFjdGx5IGF0
IHNvbWUgbWlsbGlzZWNvbmRzIHBvaW50LgorICBjbG9ja18uQWR2YW5jZVRpbWVNaWNyb3NlY29u
ZHMoa1RpbWVCZXR3ZWVuU1JzVXMpOworICBydGNwX3NlbmRlcl8tPlNldFJUQ1BTdGF0dXMoUnRj
cE1vZGU6OmtSZWR1Y2VkU2l6ZSk7CisgIFJUQ1BTZW5kZXI6OkZlZWRiYWNrU3RhdGUgZmVlZGJh
Y2tfc3RhdGUgPSBydHBfcnRjcF9pbXBsXy0+R2V0RmVlZGJhY2tTdGF0ZSgpOworICBydGNwX3Nl
bmRlcl8tPlNldFNlbmRpbmdTdGF0dXMoZmVlZGJhY2tfc3RhdGUsIHRydWUpOworICBmZWVkYmFj
a19zdGF0ZS5wYWNrZXRzX3NlbnQgPSBrUGFja2V0Q291bnQ7CisgIGZlZWRiYWNrX3N0YXRlLm1l
ZGlhX2J5dGVzX3NlbnQgPSBrT2N0ZXRDb3VudDsKKworICBFWFBFQ1RfRVEoMCwgcnRjcF9zZW5k
ZXJfLT5TZW5kUlRDUChmZWVkYmFja19zdGF0ZSwga1J0Y3BTcikpOworICBFWFBFQ1RfRVEoMSwg
cGFyc2VyKCktPnNlbmRlcl9yZXBvcnQoKS0+bnVtX3BhY2tldHMoKSk7CisgIE50cFRpbWUgbnRw
MSA9IHBhcnNlcigpLT5zZW5kZXJfcmVwb3J0KCktPm50cCgpOworICB1aW50MzJfdCBydHAxID0g
cGFyc2VyKCktPnNlbmRlcl9yZXBvcnQoKS0+cnRwX3RpbWVzdGFtcCgpOworCisgIC8vIFNlbmQg
bW9yZSBTUnMgdG8gZW5zdXJlIHNsb3BlIGlzIGFsd2F5cyBleGFjdCBmb3IgZGlmZmVyZW50IG9m
ZnNldHMKKyAgZm9yIChpbnQgcGFja2V0cyA9IDE7IHBhY2tldHMgPD0ga0V4dHJhUGFja2V0czsg
KytwYWNrZXRzKSB7CisgICAgY2xvY2tfLkFkdmFuY2VUaW1lTWljcm9zZWNvbmRzKGtUaW1lQmV0
d2VlblNSc1VzKTsKKyAgICBFWFBFQ1RfRVEoMCwgcnRjcF9zZW5kZXJfLT5TZW5kUlRDUChmZWVk
YmFja19zdGF0ZSwga1J0Y3BTcikpOworICAgIEVYUEVDVF9FUShwYWNrZXRzICsgMSwgcGFyc2Vy
KCktPnNlbmRlcl9yZXBvcnQoKS0+bnVtX3BhY2tldHMoKSk7CisKKyAgICBOdHBUaW1lIG50cDIg
PSBwYXJzZXIoKS0+c2VuZGVyX3JlcG9ydCgpLT5udHAoKTsKKyAgICB1aW50MzJfdCBydHAyID0g
cGFyc2VyKCktPnNlbmRlcl9yZXBvcnQoKS0+cnRwX3RpbWVzdGFtcCgpOworCisgICAgdWludDMy
X3QgbnRwX2RpZmZfaW5fcnRwX3VuaXRzID0KKyAgICAgICAgKG50cDIuVG9NcygpIC0gbnRwMS5U
b01zKCkpICogKGtWaWRlb1BheWxvYWRUeXBlRnJlcXVlbmN5IC8gMTAwMCk7CisgICAgRVhQRUNU
X0VRKHJ0cDIgLSBydHAxLCBudHBfZGlmZl9pbl9ydHBfdW5pdHMpOworICB9Cit9CisKIFRFU1Rf
RihSdGNwU2VuZGVyVGVzdCwgRG9Ob3RTZW5kU3JCZWZvcmVSdHApIHsKICAgcnRjcF9zZW5kZXJf
LnJlc2V0KG5ldyBSVENQU2VuZGVyKGZhbHNlLCAmY2xvY2tfLCByZWNlaXZlX3N0YXRpc3RpY3Nf
LmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVs
bHB0ciwgJnRlc3RfdHJhbnNwb3J0XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJ0Y3BJbnRlcnZhbENvbmZpZ3t9KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLCBudWxscHRyLCAmdGVzdF90cmFuc3BvcnRfLCAxMDAwKSk7CiAgIHJ0
Y3Bfc2VuZGVyXy0+U2V0U1NSQyhrU2VuZGVyU3NyYyk7CiAgIHJ0Y3Bfc2VuZGVyXy0+U2V0UmVt
b3RlU1NSQyhrUmVtb3RlU3NyYyk7CiAgIHJ0Y3Bfc2VuZGVyXy0+U2V0UlRDUFN0YXR1cyhSdGNw
TW9kZTo6a1JlZHVjZWRTaXplKTsKQEAgLTE3NCw4ICsyMDUsNyBAQCBURVNUX0YoUnRjcFNlbmRl
clRlc3QsIERvTm90U2VuZFNyQmVmb3JlUnRwKSB7CiAKIFRFU1RfRihSdGNwU2VuZGVyVGVzdCwg
RG9Ob3RTZW5kQ29tcHVuZEJlZm9yZVJ0cCkgewogICBydGNwX3NlbmRlcl8ucmVzZXQobmV3IFJU
Q1BTZW5kZXIoZmFsc2UsICZjbG9ja18sIHJlY2VpdmVfc3RhdGlzdGljc18uZ2V0KCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCAmdGVzdF90
cmFuc3BvcnRfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEludGVy
dmFsQ29uZmlne30pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsIG51bGxwdHIsICZ0ZXN0X3RyYW5zcG9ydF8sIDEwMDApKTsKICAgcnRjcF9zZW5kZXJfLT5T
ZXRTU1JDKGtTZW5kZXJTc3JjKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRSZW1vdGVTU1JDKGtSZW1v
dGVTc3JjKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprQ29tcG91
bmQpOwpAQCAtNDQ3LDcgKzQ3Nyw3IEBAIFRFU1RfRihSdGNwU2VuZGVyVGVzdCwgU2VuZFhyV2l0
aFJydHIpIHsKICAgcnRjcF9zZW5kZXJfLT5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprQ29tcG91
bmQpOwogICBFWFBFQ1RfRVEoMCwgcnRjcF9zZW5kZXJfLT5TZXRTZW5kaW5nU3RhdHVzKGZlZWRi
YWNrX3N0YXRlKCksIGZhbHNlKSk7CiAgIHJ0Y3Bfc2VuZGVyXy0+U2VuZFJ0Y3BYclJlY2VpdmVy
UmVmZXJlbmNlVGltZSh0cnVlKTsKLSAgTnRwVGltZSBudHAgPSBjbG9ja18uQ3VycmVudE50cFRp
bWUoKTsKKyAgTnRwVGltZSBudHAgPSBUaW1lTWljcm9zVG9OdHAoY2xvY2tfLlRpbWVJbk1pY3Jv
c2Vjb25kcygpKTsKICAgRVhQRUNUX0VRKDAsIHJ0Y3Bfc2VuZGVyXy0+U2VuZFJUQ1AoZmVlZGJh
Y2tfc3RhdGUoKSwga1J0Y3BSZXBvcnQpKTsKICAgRVhQRUNUX0VRKDEsIHBhcnNlcigpLT54cigp
LT5udW1fcGFja2V0cygpKTsKICAgRVhQRUNUX0VRKGtTZW5kZXJTc3JjLCBwYXJzZXIoKS0+eHIo
KS0+c2VuZGVyX3NzcmMoKSk7CkBAIC00NzYsNyArNTA2LDcgQEAgVEVTVF9GKFJ0Y3BTZW5kZXJU
ZXN0LCBUZXN0UmVnaXN0ZXJSdGNwUGFja2V0VHlwZU9ic2VydmVyKSB7CiAgIFJ0Y3BQYWNrZXRU
eXBlQ291bnRlck9ic2VydmVySW1wbCBvYnNlcnZlcjsKICAgcnRjcF9zZW5kZXJfLnJlc2V0KG5l
dyBSVENQU2VuZGVyKGZhbHNlLCAmY2xvY2tfLCByZWNlaXZlX3N0YXRpc3RpY3NfLmdldCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9ic2VydmVyLCBudWxscHRyLCAm
dGVzdF90cmFuc3BvcnRfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRj
cEludGVydmFsQ29uZmlne30pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEwMDApKTsKICAgcnRjcF9zZW5kZXJfLT5TZXRSZW1vdGVTU1JDKGtSZW1vdGVTc3JjKTsKICAg
cnRjcF9zZW5kZXJfLT5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprUmVkdWNlZFNpemUpOwogICBF
WFBFQ1RfRVEoMCwgcnRjcF9zZW5kZXJfLT5TZW5kUlRDUChmZWVkYmFja19zdGF0ZSgpLCBrUnRj
cFBsaSkpOwpAQCAtNTk4LDEyICs2MjgsMTIgQEAgVEVTVF9GKFJ0Y3BTZW5kZXJUZXN0LCBCeWVN
dXN0QmVMYXN0KSB7CiAKICAgLy8gUmUtY29uZmlndXJlIHJ0Y3Bfc2VuZGVyXyB3aXRoIG1vY2tf
dHJhbnNwb3J0XwogICBydGNwX3NlbmRlcl8ucmVzZXQobmV3IFJUQ1BTZW5kZXIoZmFsc2UsICZj
bG9ja18sIHJlY2VpdmVfc3RhdGlzdGljc18uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCAmbW9ja190cmFuc3BvcnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNwSW50ZXJ2YWxDb25maWd7fSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgJm1vY2tf
dHJhbnNwb3J0LCAxMDAwKSk7CiAgIHJ0Y3Bfc2VuZGVyXy0+U2V0U1NSQyhrU2VuZGVyU3NyYyk7
CiAgIHJ0Y3Bfc2VuZGVyXy0+U2V0UmVtb3RlU1NSQyhrUmVtb3RlU3NyYyk7CiAgIHJ0Y3Bfc2Vu
ZGVyXy0+U2V0VGltZXN0YW1wT2Zmc2V0KGtTdGFydFJ0cFRpbWVzdGFtcCk7Ci0gIHJ0Y3Bfc2Vu
ZGVyXy0+U2V0TGFzdFJ0cFRpbWUoa1J0cFRpbWVzdGFtcCwgY2xvY2tfLlRpbWVJbk1pbGxpc2Vj
b25kcygpKTsKKyAgcnRjcF9zZW5kZXJfLT5TZXRMYXN0UnRwVGltZShrUnRwVGltZXN0YW1wLCBj
bG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLypwYXlscGFkX3R5cGU9Ki8wKTsKIAogICAvLyBTZXQgdXAgUkVNQiBpbmZvIHRvIGJlIGlu
Y2x1ZGVkIHdpdGggQllFLgogICBydGNwX3NlbmRlcl8tPlNldFJUQ1BTdGF0dXMoUnRjcE1vZGU6
OmtDb21wb3VuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlci5jYwppbmRleCA3N2IxMGNhMDUyZDk4NjQ5OTNmZGEx
YmVhZTRhZGUwYzcxYjIyMzQ2Li41N2QyMTQyZmZhZDRmZmYxZTE3Mjk1NWZjNmYzMWQ2Y2U4OWRl
OWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0Y3BfdHJhbnNjZWl2ZXIuY2MKQEAgLTM5LDEwICszOSwxMCBAQCBSdGNwVHJhbnNjZWl2
ZXI6On5SdGNwVHJhbnNjZWl2ZXIoKSB7CiAgIFJUQ19EQ0hFQ0soIXJ0Y3BfdHJhbnNjZWl2ZXJf
KTsKIH0KIAotdm9pZCBSdGNwVHJhbnNjZWl2ZXI6OlN0b3Aoc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6
UXVldWVkVGFzaz4gb25fZGVzdHJveWVkKSB7Cit2b2lkIFJ0Y3BUcmFuc2NlaXZlcjo6U3RvcChz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gb25fZGVzdHJveWVkKSB7CiAgIFJUQ19EQ0hFQ0socnRjcF90
cmFuc2NlaXZlcl8pOwotICB0YXNrX3F1ZXVlXy0+UG9zdFRhc2tBbmRSZXBseShEZXN0cnVjdG9y
e3N0ZDo6bW92ZShydGNwX3RyYW5zY2VpdmVyXyl9LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1vdmUob25fZGVzdHJveWVkKSk7CisgIHRhc2tfcXVldWVfLT5Qb3N0VGFz
ayhydGM6Ok5ld0Nsb3N1cmUoCisgICAgICBEZXN0cnVjdG9ye3N0ZDo6bW92ZShydGNwX3RyYW5z
Y2VpdmVyXyl9LCBzdGQ6Om1vdmUob25fZGVzdHJveWVkKSkpOwogICBSVENfRENIRUNLKCFydGNw
X3RyYW5zY2VpdmVyXyk7CiB9CiAKQEAgLTU5LDEzICs1OSwxNCBAQCB2b2lkIFJ0Y3BUcmFuc2Nl
aXZlcjo6QWRkTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlcigKIHZvaWQgUnRjcFRyYW5zY2VpdmVy
OjpSZW1vdmVNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKAogICAgIHVpbnQzMl90IHJlbW90ZV9z
c3JjLAogICAgIE1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIqIG9ic2VydmVyLAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OlF1ZXVlZFRhc2s+IG9uX3JlbW92ZWQpIHsKKyAgICBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gb25fcmVtb3ZlZCkgewogICBSVENfQ0hFQ0socnRjcF90cmFuc2NlaXZlcl8p
OwogICBSdGNwVHJhbnNjZWl2ZXJJbXBsKiBwdHIgPSBydGNwX3RyYW5zY2VpdmVyXy5nZXQoKTsK
ICAgYXV0byByZW1vdmUgPSBbcHRyLCByZW1vdGVfc3NyYywgb2JzZXJ2ZXJdIHsKICAgICBwdHIt
PlJlbW92ZU1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIocmVtb3RlX3NzcmMsIG9ic2VydmVyKTsK
ICAgfTsKLSAgdGFza19xdWV1ZV8tPlBvc3RUYXNrQW5kUmVwbHkoc3RkOjptb3ZlKHJlbW92ZSks
IHN0ZDo6bW92ZShvbl9yZW1vdmVkKSk7CisgIHRhc2tfcXVldWVfLT5Qb3N0VGFzaygKKyAgICAg
IHJ0Yzo6TmV3Q2xvc3VyZShzdGQ6Om1vdmUocmVtb3ZlKSwgc3RkOjptb3ZlKG9uX3JlbW92ZWQp
KSk7CiB9CiAKIHZvaWQgUnRjcFRyYW5zY2VpdmVyOjpTZXRSZWFkeVRvU2VuZChib29sIHJlYWR5
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3RyYW5zY2VpdmVyLmgKaW5kZXggZmM5NDg4YzRhYmQ2NDBjNTA3ZjVmY2U0MzlmMzdiOGIz
ZTU1YmJlYS4uOWM5Njc1MTEwZmE2MGUzOTVmNTEyNTAzNDFmMWIwZTBjOTBjOThiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJh
bnNjZWl2ZXIuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NP
VVJDRV9SVENQX1RSQU5TQ0VJVkVSX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNF
X1JUQ1BfVFJBTlNDRUlWRVJfSF8KIAorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CkBAIC00MiwxOCAr
NDMsMTcgQEAgY2xhc3MgUnRjcFRyYW5zY2VpdmVyIDogcHVibGljIFJ0Y3BGZWVkYmFja1NlbmRl
ckludGVyZmFjZSB7CiAgIC8vIE5vdGUgdGhhdCBpbnRlcmZhY2VzIHByb3ZpZGVkIGluIGNvbnN0
cnVjdG9yIG9yIHJlZ2lzdGVyZWQgd2l0aCBBZGRPYnNlcnZlcgogICAvLyBzdGlsbCBtaWdodCBi
ZSB1c2VkIGJ5IHRoZSB0cmFuc2NlaXZlciBvbiB0aGUgdGFzayBxdWV1ZQogICAvLyB1bnRpbCB8
b25fZGVzdHJveWVkfCBydW5zLgotICB2b2lkIFN0b3Aoc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6UXVl
dWVkVGFzaz4gb25fZGVzdHJveWVkKTsKKyAgdm9pZCBTdG9wKHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiBvbl9kZXN0cm95ZWQpOwogCiAgIC8vIFJlZ2lzdGVycyBvYnNlcnZlciB0byBiZSBub3RpZmll
ZCBhYm91dCBpbmNvbWluZyBydGNwIHBhY2tldHMuCiAgIC8vIENhbGxzIHRvIG9ic2VydmVyIHdp
bGwgYmUgZG9uZSBvbiB0aGUgfGNvbmZpZy50YXNrX3F1ZXVlfC4KICAgdm9pZCBBZGRNZWRpYVJl
Y2VpdmVyUnRjcE9ic2VydmVyKHVpbnQzMl90IHJlbW90ZV9zc3JjLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlciogb2JzZXJ2ZXIp
OwogICAvLyBEZXJlZ2lzdGVycyB0aGUgb2JzZXJ2ZXIuIE1pZ2h0IHJldHVybiBiZWZvcmUgb2Jz
ZXJ2ZXIgaXMgZGVyZWdpc3RlcmVkLgotICAvLyBQb3N0cyB8b25fcmVtb3ZlZHwgdGFzayB3aGVu
IG9ic2VydmVyIGlzIGRlcmVnaXN0ZXJlZC4KLSAgdm9pZCBSZW1vdmVNZWRpYVJlY2VpdmVyUnRj
cE9ic2VydmVyKAotICAgICAgdWludDMyX3QgcmVtb3RlX3NzcmMsCi0gICAgICBNZWRpYVJlY2Vp
dmVyUnRjcE9ic2VydmVyKiBvYnNlcnZlciwKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlF1
ZXVlZFRhc2s+IG9uX3JlbW92ZWQpOworICAvLyBSdW5zIHxvbl9yZW1vdmVkfCB3aGVuIG9ic2Vy
dmVyIGlzIGRlcmVnaXN0ZXJlZC4KKyAgdm9pZCBSZW1vdmVNZWRpYVJlY2VpdmVyUnRjcE9ic2Vy
dmVyKHVpbnQzMl90IHJlbW90ZV9zc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlciogb2JzZXJ2ZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gb25fcmVt
b3ZlZCk7CiAKICAgLy8gRW5hYmxlcy9kaXNhYmxlcyBzZW5kaW5nIHJ0Y3AgcGFja2V0cyBldmVu
dHVhbGx5LgogICAvLyBQYWNrZXRzIG1heSBiZSBzZW50IGFmdGVyIHRoZSBTZXRSZWFkeVRvU2Vu
ZChmYWxzZSkgcmV0dXJucywgYnV0IG5vIG5ldwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90
cmFuc2NlaXZlcl9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXJfY29uZmlnLmgK
aW5kZXggMGRhMThlMmNjMWIxMjhhM2ZkM2JmMjcwMzI1NWE4YmZmMGM4ZmZkZi4uMDEzMzBkMGJj
N2RmYjBhZmYxNjQ5NzYwZmFmYjVlN2YxZjZmZjJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRj
cF90cmFuc2NlaXZlcl9jb25maWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2Nv
bmZpZy5oCkBAIC05NywxMSArOTcsNiBAQCBzdHJ1Y3QgUnRjcFRyYW5zY2VpdmVyQ29uZmlnIHsK
ICAgLy8gRXN0aW1hdGUgUlRUIGFzIG5vbi1zZW5kZXIgYXMgZGVzY3JpYmVkIGluCiAgIC8vIGh0
dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNjExI3NlY3Rpb24tNC40IGFuZCAjc2VjdGlv
bi00LjUKICAgYm9vbCBub25fc2VuZGVyX3J0dF9tZWFzdXJlbWVudCA9IGZhbHNlOwotICAvLyBD
b3BpZXMgTGFzdFNSL0RlbGF5U2luY2VMYXN0U1IgZm9yIHByZXZpb3VzIHJlcG9ydCBibG9jayB0
byBhdm9pZAotICAvLyB0cmlnZ2VyaW5nIGJ1ZyBpbiBvbGRlciB2ZXJzaW9uIG9mIFJ0Y3BSZWNl
aXZlci4KLSAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvODgwNSk6IENoYW5nZSB0byBmYWxzZSBi
eSBkZWZhdWx0IHRoZW4gcmVtb3ZlIHdoZW4KLSAgLy8gYWxsIG1ham9yIHdlYnJ0YyBjbGllbnRz
IHVwZGF0ZWQgd2l0aCB0aGUgZml4IGluIFJ0Y3BSZWNlaXZlci4KLSAgYm9vbCBhdm9pZF96ZXJv
X2xhc3Rfc3JfaW5fbGFzdF9yZXBvcnRfYmxvY2sgPSB0cnVlOwogfTsKIAogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlcl9pbXBsLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlcl9pbXBsLmNjCmluZGV4IDJjNmMzYWNjMzkxMzY1
Y2E1OGY2NmUzZGM3ZTc1Njk2MzAyNzRjYzkuLjk3YzJhYzAxOGIzMWQwYTU2ZjIyMmEwZDA4NDQy
ZTVmM2NiN2FkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXJfaW1wbC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX2ltcGwuY2MKQEAgLTQyMSwxMiArNDIx
LDYgQEAgc3RkOjp2ZWN0b3I8cnRjcDo6UmVwb3J0QmxvY2s+IFJ0Y3BUcmFuc2NlaXZlckltcGw6
OkNyZWF0ZVJlcG9ydEJsb2NrcygKICAgICBhdXRvIGl0ID0gcmVtb3RlX3NlbmRlcnNfLmZpbmQo
cmVwb3J0X2Jsb2NrLnNvdXJjZV9zc3JjKCkpOwogICAgIGlmIChpdCA9PSByZW1vdGVfc2VuZGVy
c18uZW5kKCkgfHwKICAgICAgICAgIWl0LT5zZWNvbmQubGFzdF9yZWNlaXZlZF9zZW5kZXJfcmVw
b3J0KSB7Ci0gICAgICBpZiAoY29uZmlnXy5hdm9pZF96ZXJvX2xhc3Rfc3JfaW5fbGFzdF9yZXBv
cnRfYmxvY2sgJiYgbGFzdF9zciAhPSAwKSB7Ci0gICAgICAgIC8vIFNpbXVsYXRlIGJlaGF2aW91
ciBvZiB0aGUgUnRjcFNlbmRlciB0byBhdm9pZCBoaXR0aW5nIGJ1ZyBpbgotICAgICAgICAvLyBS
dGNwUmVjZWl2ZXIuCi0gICAgICAgIHJlcG9ydF9ibG9jay5TZXRMYXN0U3IobGFzdF9zcik7Ci0g
ICAgICAgIHJlcG9ydF9ibG9jay5TZXREZWxheUxhc3RTcihsYXN0X2RlbGF5KTsKLSAgICAgIH0K
ICAgICAgIGNvbnRpbnVlOwogICAgIH0KICAgICBjb25zdCBTZW5kZXJSZXBvcnRUaW1lcyYgbGFz
dF9zZW5kZXJfcmVwb3J0ID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXJf
aW1wbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXJfaW1wbF91bml0dGVz
dC5jYwppbmRleCBlNWRiMDg2MmNjNDc2MTA5YmNjOTNiMmFiYjRiMWRmNmVlZTc2NWRjLi5lODZk
NjdmNTc5MGM3ZjJjY2VhMmRiMjcxZmZkZTc5YzE1ZWY5Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydGNwX3RyYW5zY2VpdmVyX2ltcGxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90
cmFuc2NlaXZlcl9pbXBsX3VuaXR0ZXN0LmNjCkBAIC03Nyw3ICs3Nyw2IEBAIGNvbnN0ZXhwciBp
bnQga0FsbW9zdEZvcmV2ZXJNcyA9IDEwMDA7CiAvLyBIZWxwZXIgdG8gd2FpdCBmb3IgYW4gcnRj
cCBwYWNrZXQgcHJvZHVjZWQgb24gYSBkaWZmZXJlbnQgdGhyZWFkL3Rhc2sgcXVldWUuCiBjbGFz
cyBGYWtlUnRjcFRyYW5zcG9ydCA6IHB1YmxpYyB3ZWJydGM6OlRyYW5zcG9ydCB7CiAgcHVibGlj
OgotICBGYWtlUnRjcFRyYW5zcG9ydCgpIDogc2VudF9ydGNwXyhmYWxzZSwgZmFsc2UpIHt9CiAg
IGJvb2wgU2VuZFJ0Y3AoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIG92ZXJyaWRl
IHsKICAgICBzZW50X3J0Y3BfLlNldCgpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTQ4LDcgKzE0
Nyw3IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVySW1wbFRlc3QsIENhbkRlc3Ryb3lPblRhc2tRdWV1
ZSkgewogICAvLyBXYWl0IGZvciBhIHBlcmlvZGljIHBhY2tldC4KICAgRVhQRUNUX1RSVUUodHJh
bnNwb3J0LldhaXRQYWNrZXQoKSk7CiAKLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7
CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgcXVldWUuUG9zdFRhc2soW3J0Y3BfdHJhbnNjZWl2ZXIs
ICZkb25lXSB7CiAgICAgZGVsZXRlIHJ0Y3BfdHJhbnNjZWl2ZXI7CiAgICAgZG9uZS5TZXQoKTsK
QEAgLTE4Nyw3ICsxODYsNyBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlckltcGxUZXN0LCBEZWxheXNT
ZW5kaW5nRmlyc3RDb21wb25kUGFja2V0KSB7CiAgIEVYUEVDVF9HRShydGM6OlRpbWVNaWxsaXMo
KSAtIHN0YXJ0ZWRfbXMsIGNvbmZpZy5pbml0aWFsX3JlcG9ydF9kZWxheV9tcyk7CiAKICAgLy8g
Q2xlYW51cC4KLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQg
ZG9uZTsKICAgcXVldWUuUG9zdFRhc2soWyZdIHsKICAgICBydGNwX3RyYW5zY2VpdmVyLnJlc2V0
KCk7CiAgICAgZG9uZS5TZXQoKTsKQEAgLTIyMCw3ICsyMTksNyBAQCBURVNUKFJ0Y3BUcmFuc2Nl
aXZlckltcGxUZXN0LCBQZXJpb2RpY2FsbHlTZW5kc1BhY2tldHMpIHsKICAgICAgICAgICAgIGNv
bmZpZy5yZXBvcnRfcGVyaW9kX21zIC0gMSk7CiAKICAgLy8gQ2xlYW51cC4KLSAgcnRjOjpFdmVu
dCBkb25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgcXVldWUuUG9zdFRh
c2soWyZdIHsKICAgICBydGNwX3RyYW5zY2VpdmVyLnJlc2V0KCk7CiAgICAgZG9uZS5TZXQoKTsK
QEAgLTI0Miw3ICsyNDEsNyBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlckltcGxUZXN0LCBTZW5kQ29t
cG91bmRQYWNrZXREZWxheXNQZXJpb2RpY1NlbmRQYWNrZXRzKSB7CiAgIC8vIFdhaXQgZm9yIGZp
cnN0IHBhY2tldC4KICAgRVhQRUNUX1RSVUUodHJhbnNwb3J0LldhaXRQYWNrZXQoKSk7CiAgIC8v
IFNlbmQgbm9uIHBlcmlvZGljIG9uZSBhZnRlciBoYWxmIHBlcmlvZC4KLSAgcnRjOjpFdmVudCBu
b25fcGVyaW9kaWMoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBub25fcGVyaW9kaWM7CiAg
IGludDY0X3QgdGltZV9vZl9ub25fcGVyaW9kaWNfcGFja2V0X21zID0gMDsKICAgcXVldWUuUG9z
dERlbGF5ZWRUYXNrKAogICAgICAgWyZdIHsKQEAgLTI2NSw3ICsyNjQsNyBAQCBURVNUKFJ0Y3BU
cmFuc2NlaXZlckltcGxUZXN0LCBTZW5kQ29tcG91bmRQYWNrZXREZWxheXNQZXJpb2RpY1NlbmRQ
YWNrZXRzKSB7CiAgICAgICAgICAgICBjb25maWcucmVwb3J0X3BlcmlvZF9tcyAtIDEpOwogCiAg
IC8vIENsZWFudXAuCi0gIHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFsc2UpOworICBydGM6OkV2
ZW50IGRvbmU7CiAgIHF1ZXVlLlBvc3RUYXNrKFsmXSB7CiAgICAgcnRjcF90cmFuc2NlaXZlci5y
ZXNldCgpOwogICAgIGRvbmUuU2V0KCk7CkBAIC0zMjksNyArMzI4LDcgQEAgVEVTVChSdGNwVHJh
bnNjZWl2ZXJJbXBsVGVzdCwgU2VuZHNQZXJpb2RpY1J0Y3BXaGVuTmV0d29ya1N0YXRlSXNVcCkg
ewogICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnQuV2FpdFBhY2tldCgpKTsKIAogICAvLyBDbGVhbnVw
LgotICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwog
ICBxdWV1ZS5Qb3N0VGFzayhbJl0gewogICAgIHJ0Y3BfdHJhbnNjZWl2ZXIucmVzZXQoKTsKICAg
ICBkb25lLlNldCgpOwpAQCAtNjcxLDcgKzY3MCw2IEBAIFRFU1QoUnRjcFRyYW5zY2VpdmVySW1w
bFRlc3QsCiAKICAgUnRjcFRyYW5zY2VpdmVyQ29uZmlnIGNvbmZpZzsKICAgY29uZmlnLnNjaGVk
dWxlX3BlcmlvZGljX2NvbXBvdW5kX3BhY2tldHMgPSBmYWxzZTsKLSAgY29uZmlnLmF2b2lkX3pl
cm9fbGFzdF9zcl9pbl9sYXN0X3JlcG9ydF9ibG9jayA9IGZhbHNlOwogICBSdGNwUGFja2V0UGFy
c2VyIHJ0Y3BfcGFyc2VyOwogICBSdGNwUGFyc2VyVHJhbnNwb3J0IHRyYW5zcG9ydCgmcnRjcF9w
YXJzZXIpOwogICBjb25maWcub3V0Z29pbmdfdHJhbnNwb3J0ID0gJnRyYW5zcG9ydDsKQEAgLTcw
Myw1MiArNzAxLDYgQEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJJbXBsVGVzdCwKICAgRVhQRUNUX0VR
KHJlcG9ydF9ibG9ja3NbMV0ubGFzdF9zcigpLCAwdSk7CiB9CiAKLVRFU1QoUnRjcFRyYW5zY2Vp
dmVySW1wbFRlc3QsIEF2b2lkTGFzdFJlcG9ydEJsb2NrVG9IYXZlWmVyb0xhc3RTckZpZWxkKSB7
Ci0gIGNvbnN0IHVpbnQzMl90IGtSZW1vdGVTc3JjMSA9IDU0MzIxOwotICBjb25zdCB1aW50MzJf
dCBrUmVtb3RlU3NyYzIgPSA1NDMyMzsKLSAgTW9ja1JlY2VpdmVTdGF0aXN0aWNzUHJvdmlkZXIg
cmVjZWl2ZV9zdGF0aXN0aWNzOwotICBzdGQ6OnZlY3RvcjxSZXBvcnRCbG9jaz4gc3RhdGlzdGlj
c19yZXBvcnRfYmxvY2tzKDIpOwotICBzdGF0aXN0aWNzX3JlcG9ydF9ibG9ja3NbMF0uU2V0TWVk
aWFTc3JjKGtSZW1vdGVTc3JjMSk7Ci0gIHN0YXRpc3RpY3NfcmVwb3J0X2Jsb2Nrc1sxXS5TZXRN
ZWRpYVNzcmMoa1JlbW90ZVNzcmMyKTsKLSAgT05fQ0FMTChyZWNlaXZlX3N0YXRpc3RpY3MsIFJ0
Y3BSZXBvcnRCbG9ja3MoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oc3RhdGlzdGlj
c19yZXBvcnRfYmxvY2tzKSk7Ci0KLSAgUnRjcFRyYW5zY2VpdmVyQ29uZmlnIGNvbmZpZzsKLSAg
Y29uZmlnLnNjaGVkdWxlX3BlcmlvZGljX2NvbXBvdW5kX3BhY2tldHMgPSBmYWxzZTsKLSAgY29u
ZmlnLmF2b2lkX3plcm9fbGFzdF9zcl9pbl9sYXN0X3JlcG9ydF9ibG9jayA9IHRydWU7Ci0gIFJ0
Y3BQYWNrZXRQYXJzZXIgcnRjcF9wYXJzZXI7Ci0gIFJ0Y3BQYXJzZXJUcmFuc3BvcnQgdHJhbnNw
b3J0KCZydGNwX3BhcnNlcik7Ci0gIGNvbmZpZy5vdXRnb2luZ190cmFuc3BvcnQgPSAmdHJhbnNw
b3J0OwotICBjb25maWcucmVjZWl2ZV9zdGF0aXN0aWNzID0gJnJlY2VpdmVfc3RhdGlzdGljczsK
LSAgUnRjcFRyYW5zY2VpdmVySW1wbCBydGNwX3RyYW5zY2VpdmVyKGNvbmZpZyk7Ci0KLSAgY29u
c3QgTnRwVGltZSBrUmVtb3RlTnRwKDB4OTg3NjU0MzIxMSk7Ci0gIC8vIFJlY2VpdmUgU2VuZGVy
UmVwb3J0IGZvciBSZW1vdGVTc3JjMSwgYnV0IG5vIHJlcG9ydCBmb3IgUmVtb3RlU3NyYzIuCi0g
IFNlbmRlclJlcG9ydCBzcjsKLSAgc3IuU2V0U2VuZGVyU3NyYyhrUmVtb3RlU3NyYzEpOwotICBz
ci5TZXROdHAoa1JlbW90ZU50cCk7Ci0gIGF1dG8gcmF3X3BhY2tldCA9IHNyLkJ1aWxkKCk7Ci0g
IHJ0Y3BfdHJhbnNjZWl2ZXIuUmVjZWl2ZVBhY2tldChyYXdfcGFja2V0LCAvKm5vd191cz0qLzAp
OwotCi0gIC8vIFRyaWdnZXIgc2VuZGluZyBSZWNlaXZlclJlcG9ydC4KLSAgcnRjcF90cmFuc2Nl
aXZlci5TZW5kQ29tcG91bmRQYWNrZXQoKTsKLQotICBFWFBFQ1RfR1QocnRjcF9wYXJzZXIucmVj
ZWl2ZXJfcmVwb3J0KCktPm51bV9wYWNrZXRzKCksIDApOwotICBjb25zdCBhdXRvJiByZXBvcnRf
YmxvY2tzID0gcnRjcF9wYXJzZXIucmVjZWl2ZXJfcmVwb3J0KCktPnJlcG9ydF9ibG9ja3MoKTsK
LSAgQVNTRVJUX0VRKHJlcG9ydF9ibG9ja3Muc2l6ZSgpLCAydSk7Ci0gIC8vIFJ0Y3BUcmFuc2Nl
aXZlckltcGwgZG9lc24ndCBndWFyYW50ZWUgb3JkZXIgb2YgdGhlIHJlcG9ydCBibG9ja3MKLSAg
Ly8gbWF0Y2ggcmVzdWx0IG9mIFJlY2VpdmVTdGF0aXN0aWNzUHJvdmlkZXI6OlJ0Y3BSZXBvcnRC
bG9ja3MgY2FsbGJhY2ssCi0gIC8vIGJ1dCBmb3Igc2ltcGxpY2l0eSBvZiB0aGUgdGVzdCBhc3Vt
ZSBpdCBpcyB0aGUgc2FtZS4KLSAgQVNTRVJUX0VRKHJlcG9ydF9ibG9ja3NbMF0uc291cmNlX3Nz
cmMoKSwga1JlbW90ZVNzcmMxKTsKLSAgRVhQRUNUX05FKHJlcG9ydF9ibG9ja3NbMF0ubGFzdF9z
cigpLCAwdSk7Ci0KLSAgQVNTRVJUX0VRKHJlcG9ydF9ibG9ja3NbMV0uc291cmNlX3NzcmMoKSwg
a1JlbW90ZVNzcmMyKTsKLSAgLy8gTm8gU2VuZGVyIFJlcG9ydCBmb3Iga1JlbW90ZVNzcmMyLCB1
c2Ugc2FtZSBMYXN0U1IgYXMgZm9yIGtSZW1vdGVTc3JjMQotICBFWFBFQ1RfRVEocmVwb3J0X2Js
b2Nrc1sxXS5sYXN0X3NyKCksIHJlcG9ydF9ibG9ja3NbMF0ubGFzdF9zcigpKTsKLSAgRVhQRUNU
X0VRKHJlcG9ydF9ibG9ja3NbMV0uZGVsYXlfc2luY2VfbGFzdF9zcigpLAotICAgICAgICAgICAg
cmVwb3J0X2Jsb2Nrc1swXS5kZWxheV9zaW5jZV9sYXN0X3NyKCkpOwotfQotCiBURVNUKFJ0Y3BU
cmFuc2NlaXZlckltcGxUZXN0LAogICAgICBXaGVuU2VuZHNSZWNlaXZlclJlcG9ydENhbGN1bGF0
ZXNEZWxheVNpbmNlTGFzdFNlbmRlclJlcG9ydCkgewogICBjb25zdCB1aW50MzJfdCBrUmVtb3Rl
U3NyYzEgPSA0MzIxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2NlaXZlcl91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0Y3BfdHJhbnNjZWl2ZXJfdW5pdHRlc3QuY2MKaW5kZXggMmVh
NWJjOWI1Mzc3ZDIxMmM4N2UzMTkwYmE1MDczNDI5NTM2ZDcwYi4uZDcxOTE4ZGIwM2I0ZjdhNTZj
MzM4Yzc2YjVkNDhhYzBlMTJhYWJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF90cmFuc2Nl
aXZlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydGNwX3RyYW5zY2VpdmVyX3VuaXR0ZXN0
LmNjCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIE1vY2tNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVy
IDogcHVibGljIHdlYnJ0Yzo6TWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlciB7CiBjb25zdGV4cHIg
aW50IGtUaW1lb3V0TXMgPSAxMDAwOwogCiB2b2lkIFdhaXRQb3N0ZWRUYXNrcyhydGM6OlRhc2tR
dWV1ZSogcXVldWUpIHsKLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6
RXZlbnQgZG9uZTsKICAgcXVldWUtPlBvc3RUYXNrKFsmZG9uZV0geyBkb25lLlNldCgpOyB9KTsK
ICAgQVNTRVJUX1RSVUUoZG9uZS5XYWl0KGtUaW1lb3V0TXMpKTsKIH0KQEAgLTEwOCw4ICsxMDgs
OCBAQCBURVNUKFJ0Y3BUcmFuc2NlaXZlclRlc3QsIENhbkJlRGVzdHJveWVkV2l0aG91dEJsb2Nr
aW5nKSB7CiAgIGF1dG8qIHJ0Y3BfdHJhbnNjZWl2ZXIgPSBuZXcgUnRjcFRyYW5zY2VpdmVyKGNv
bmZpZyk7CiAgIHJ0Y3BfdHJhbnNjZWl2ZXItPlNlbmRDb21wb3VuZFBhY2tldCgpOwogCi0gIHJ0
Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFsc2UpOwotICBydGM6OkV2ZW50IGhlYXZ5X3Rhc2soZmFs
c2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOworICBydGM6OkV2ZW50IGhlYXZ5X3Rhc2s7
CiAgIHF1ZXVlLlBvc3RUYXNrKFsmXSB7CiAgICAgRVhQRUNUX1RSVUUoaGVhdnlfdGFzay5XYWl0
KGtUaW1lb3V0TXMpKTsKICAgICBkb25lLlNldCgpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIFRFU1Qo
UnRjcFRyYW5zY2VpdmVyVGVzdCwgTWF5U2VuZFBhY2tldHNBZnRlckRlc3RydWN0b3IpIHsgIC8v
IGkuZS4gQmUgY2FyZWZ1bCEKICAgY29uZmlnLnRhc2tfcXVldWUgPSAmcXVldWU7CiAgIGF1dG8q
IHJ0Y3BfdHJhbnNjZWl2ZXIgPSBuZXcgUnRjcFRyYW5zY2VpdmVyKGNvbmZpZyk7CiAKLSAgcnRj
OjpFdmVudCBoZWF2eV90YXNrKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgaGVhdnlfdGFz
azsKICAgcXVldWUuUG9zdFRhc2soWyZdIHsgRVhQRUNUX1RSVUUoaGVhdnlfdGFzay5XYWl0KGtU
aW1lb3V0TXMpKTsgfSk7CiAgIHJ0Y3BfdHJhbnNjZWl2ZXItPlNlbmRDb21wb3VuZFBhY2tldCgp
OwogICBkZWxldGUgcnRjcF90cmFuc2NlaXZlcjsKQEAgLTE1OCw3ICsxNTgsNyBAQCBURVNUKFJ0
Y3BUcmFuc2NlaXZlclRlc3QsIERvZXNudFBvc3RUb1J0Y3BPYnNlcnZlckFmdGVyQ2FsbFRvUmVt
b3ZlKSB7CiAgIGNvbmZpZy5vdXRnb2luZ190cmFuc3BvcnQgPSAmbnVsbF90cmFuc3BvcnQ7CiAg
IGNvbmZpZy50YXNrX3F1ZXVlID0gJnF1ZXVlOwogICBSdGNwVHJhbnNjZWl2ZXIgcnRjcF90cmFu
c2NlaXZlcihjb25maWcpOwotICBydGM6OkV2ZW50IG9ic2VydmVyX2RlbGV0ZWQoZmFsc2UsIGZh
bHNlKTsKKyAgcnRjOjpFdmVudCBvYnNlcnZlcl9kZWxldGVkOwogCiAgIGF1dG8gb2JzZXJ2ZXIg
PSBhYnNsOjptYWtlX3VuaXF1ZTxNb2NrTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlcj4oKTsKICAg
RVhQRUNUX0NBTEwoKm9ic2VydmVyLCBPblNlbmRlclJlcG9ydChrUmVtb3RlU3NyYywgXywgMSkp
OwpAQCAtMTY2LDEyICsxNjYsMTEgQEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJUZXN0LCBEb2VzbnRQ
b3N0VG9SdGNwT2JzZXJ2ZXJBZnRlckNhbGxUb1JlbW92ZSkgewogCiAgIHJ0Y3BfdHJhbnNjZWl2
ZXIuQWRkTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlcihrUmVtb3RlU3NyYywgb2JzZXJ2ZXIuZ2V0
KCkpOwogICBydGNwX3RyYW5zY2VpdmVyLlJlY2VpdmVQYWNrZXQoQ3JlYXRlU2VuZGVyUmVwb3J0
KGtSZW1vdGVTc3JjLCAxKSk7Ci0gIHJ0Y3BfdHJhbnNjZWl2ZXIuUmVtb3ZlTWVkaWFSZWNlaXZl
clJ0Y3BPYnNlcnZlcigKLSAgICAgIGtSZW1vdGVTc3JjLCBvYnNlcnZlci5nZXQoKSwKLSAgICAg
IC8qb25fcmVtb3ZlZD0qL3J0Yzo6TmV3Q2xvc3VyZShbJl0gewotICAgICAgICBvYnNlcnZlci5y
ZXNldCgpOwotICAgICAgICBvYnNlcnZlcl9kZWxldGVkLlNldCgpOwotICAgICAgfSkpOworICBy
dGNwX3RyYW5zY2VpdmVyLlJlbW92ZU1lZGlhUmVjZWl2ZXJSdGNwT2JzZXJ2ZXIoa1JlbW90ZVNz
cmMsIG9ic2VydmVyLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLypvbl9yZW1vdmVkPSovWyZdIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIucmVzZXQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJf
ZGVsZXRlZC5TZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOwogICBydGNwX3RyYW5zY2VpdmVyLlJlY2VpdmVQYWNrZXQoQ3JlYXRlU2Vu
ZGVyUmVwb3J0KGtSZW1vdGVTc3JjLCAyKSk7CiAKICAgRVhQRUNUX1RSVUUob2JzZXJ2ZXJfZGVs
ZXRlZC5XYWl0KGtUaW1lb3V0TXMpKTsKQEAgLTE4OSwxNSArMTg4LDE0IEBAIFRFU1QoUnRjcFRy
YW5zY2VpdmVyVGVzdCwgUmVtb3ZlTWVkaWFSZWNlaXZlclJ0Y3BPYnNlcnZlcklzTm9uQmxvY2tp
bmcpIHsKICAgYXV0byBvYnNlcnZlciA9IGFic2w6Om1ha2VfdW5pcXVlPE1vY2tNZWRpYVJlY2Vp
dmVyUnRjcE9ic2VydmVyPigpOwogICBydGNwX3RyYW5zY2VpdmVyLkFkZE1lZGlhUmVjZWl2ZXJS
dGNwT2JzZXJ2ZXIoa1JlbW90ZVNzcmMsIG9ic2VydmVyLmdldCgpKTsKIAotICBydGM6OkV2ZW50
IHF1ZXVlX2Jsb2NrZXIoZmFsc2UsIGZhbHNlKTsKLSAgcnRjOjpFdmVudCBvYnNlcnZlcl9kZWxl
dGVkKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgcXVldWVfYmxvY2tlcjsKKyAgcnRjOjpF
dmVudCBvYnNlcnZlcl9kZWxldGVkOwogICBxdWV1ZS5Qb3N0VGFzayhbJl0geyBFWFBFQ1RfVFJV
RShxdWV1ZV9ibG9ja2VyLldhaXQoa1RpbWVvdXRNcykpOyB9KTsKLSAgcnRjcF90cmFuc2NlaXZl
ci5SZW1vdmVNZWRpYVJlY2VpdmVyUnRjcE9ic2VydmVyKAotICAgICAga1JlbW90ZVNzcmMsIG9i
c2VydmVyLmdldCgpLAotICAgICAgLypvbl9yZW1vdmVkPSovcnRjOjpOZXdDbG9zdXJlKFsmXSB7
Ci0gICAgICAgIG9ic2VydmVyLnJlc2V0KCk7Ci0gICAgICAgIG9ic2VydmVyX2RlbGV0ZWQuU2V0
KCk7Ci0gICAgICB9KSk7CisgIHJ0Y3BfdHJhbnNjZWl2ZXIuUmVtb3ZlTWVkaWFSZWNlaXZlclJ0
Y3BPYnNlcnZlcihrUmVtb3RlU3NyYywgb2JzZXJ2ZXIuZ2V0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm9uX3JlbW92ZWQ9Ki9bJl0gewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNl
cnZlci5yZXNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvYnNlcnZlcl9kZWxldGVkLlNldCgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAKICAgRVhQRUNUX1RIQVQob2JzZXJ2
ZXIsIE5vdChJc051bGwoKSkpOwogICBxdWV1ZV9ibG9ja2VyLlNldCgpOwpAQCAtMjQyLDEyICsy
NDAsMTIgQEAgVEVTVChSdGNwVHJhbnNjZWl2ZXJUZXN0LCBEb2VzbnRTZW5kUGFja2V0c0FmdGVy
U3RvcENhbGxiYWNrKSB7CiAgIGNvbmZpZy5zY2hlZHVsZV9wZXJpb2RpY19jb21wb3VuZF9wYWNr
ZXRzID0gdHJ1ZTsKIAogICBhdXRvIHJ0Y3BfdHJhbnNjZWl2ZXIgPSBhYnNsOjptYWtlX3VuaXF1
ZTxSdGNwVHJhbnNjZWl2ZXI+KGNvbmZpZyk7Ci0gIHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFs
c2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIHJ0Y3BfdHJhbnNjZWl2ZXItPlNlbmRDb21wb3Vu
ZFBhY2tldCgpOwotICBydGNwX3RyYW5zY2VpdmVyLT5TdG9wKHJ0Yzo6TmV3Q2xvc3VyZShbJl0g
eworICBydGNwX3RyYW5zY2VpdmVyLT5TdG9wKFsmXSB7CiAgICAgRVhQRUNUX0NBTEwob3V0Z29p
bmdfdHJhbnNwb3J0LCBTZW5kUnRjcCkuVGltZXMoMCk7CiAgICAgZG9uZS5TZXQoKTsKLSAgfSkp
OworICB9KTsKICAgcnRjcF90cmFuc2NlaXZlciA9IG51bGxwdHI7CiAgIEVYUEVDVF9UUlVFKGRv
bmUuV2FpdChrVGltZW91dE1zKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5jYwppbmRleCAxM2VjMGFmZTlmN2JkNjc1YWM5ODQx
YmU0MWNiOTk4YjllZjE1MWIwLi4wMDEwZDkwNzUwZjI5ZWZkMDAxYThhNWQyYjgxMTM2YmVmZTlj
Mzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9mb3JtYXQuY2MKQEAgLTEwLDEzICsxMCwxNSBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2Zvcm1hdC5oIgogCi0jaW5jbHVkZSA8dXRpbGl0eT4KLQogI2luY2x1
ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvdmFyaWFudC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfaDI2NC5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdmlkZW9fZ2VuZXJp
Yy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA4Lmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDkuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9pbmNsdWRlL2gyNjRfZ2xv
YmFscy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVk
ZS92cDhfZ2xvYmFscy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDkvaW5jbHVkZS92cDlfZ2xvYmFscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTYzLDYgKzY1LDExIEBAIHN0ZDo6dmVjdG9yPGludD4g
UnRwUGFja2V0aXplcjo6U3BsaXRBYm91dEVxdWFsbHkoCiAgIFJUQ19EQ0hFQ0tfR0UobGltaXRz
Lmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4sIDApOwogCiAgIHN0ZDo6dmVjdG9yPGludD4gcmVz
dWx0OworICBpZiAobGltaXRzLm1heF9wYXlsb2FkX2xlbiA+PQorICAgICAgbGltaXRzLnNpbmds
ZV9wYWNrZXRfcmVkdWN0aW9uX2xlbiArIHBheWxvYWRfbGVuKSB7CisgICAgcmVzdWx0LnB1c2hf
YmFjayhwYXlsb2FkX2xlbik7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQogICBpZiAobGltaXRz
Lm1heF9wYXlsb2FkX2xlbiAtIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA8IDEg
fHwKICAgICAgIGxpbWl0cy5tYXhfcGF5bG9hZF9sZW4gLSBsaW1pdHMubGFzdF9wYWNrZXRfcmVk
dWN0aW9uX2xlbiA8IDEpIHsKICAgICAvLyBDYXBhY2l0eSBpcyBub3QgZW5vdWdoIHRvIHB1dCBh
IHNpbmdsZSBieXRlIGludG8gb25lIG9mIHRoZSBwYWNrZXRzLgpAQCAtNzcsNiArODQsMTAgQEAg
c3RkOjp2ZWN0b3I8aW50PiBSdHBQYWNrZXRpemVyOjpTcGxpdEFib3V0RXF1YWxseSgKICAgLy8g
SW50ZWdlciBkaXZpc2lvbnMgd2l0aCByb3VuZGluZyB1cC4KICAgaW50IG51bV9wYWNrZXRzX2xl
ZnQgPQogICAgICAgKHRvdGFsX2J5dGVzICsgbGltaXRzLm1heF9wYXlsb2FkX2xlbiAtIDEpIC8g
bGltaXRzLm1heF9wYXlsb2FkX2xlbjsKKyAgaWYgKG51bV9wYWNrZXRzX2xlZnQgPT0gMSkgewor
ICAgIC8vIFNpbmdsZSBwYWNrZXQgaXMgYSBzcGVjaWFsIGNhc2UgaGFuZGxlZCBhYm92ZS4KKyAg
ICBudW1fcGFja2V0c19sZWZ0ID0gMjsKKyAgfQogCiAgIGlmIChwYXlsb2FkX2xlbiA8IG51bV9w
YWNrZXRzX2xlZnQpIHsKICAgICAvLyBFZGdlIGNhc2Ugd2hlcmUgbGltaXRzIGZvcmNlIHRvIGhh
dmUgbW9yZSBwYWNrZXRzIHRoYW4gdGhlcmUgYXJlIHBheWxvYWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9mb3JtYXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXQuaAppbmRleCA5ZmFkNGNmOGY5
NzYxY2FjYmYzYzg3Y2E0MDUxZDViNGJlNjIxZTRkLi43MWM3ZGM1ZTBlY2Q4ZDRmYTgwYTA3OWIx
OTFhNzhmNDIzY2ZiNDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX2Zvcm1hdC5oCkBAIC0xMSwxNyArMTEsMTcgQEAKICNpZm5kZWYgTU9EVUxF
U19SVFBfUlRDUF9TT1VSQ0VfUlRQX0ZPUk1BVF9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQ
X1NPVVJDRV9SVFBfRk9STUFUX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxt
ZW1vcnk+Ci0jaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUg
ImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQo
YnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90
eXBlcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9kZWZp
bmVzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CisKIGNsYXNzIFJ0cFBhY2tldFRvU2VuZDsKIAogY2xhc3MgUnRwUGFja2V0aXpl
ciB7CkBAIC0zMCw2ICszMCw4IEBAIGNsYXNzIFJ0cFBhY2tldGl6ZXIgewogICAgIGludCBtYXhf
cGF5bG9hZF9sZW4gPSAxMjAwOwogICAgIGludCBmaXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9
IDA7CiAgICAgaW50IGxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSAwOworICAgIC8vIFJlZHVj
dGlvbiBsZW4gZm9yIHBhY2tldCB0aGF0IGlzIGZpcnN0ICYgbGFzdCBhdCB0aGUgc2FtZSB0aW1l
LgorICAgIGludCBzaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSAwOwogICB9OwogICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldGl6ZXI+IENyZWF0ZSgKICAgICAgIFZpZGVvQ29k
ZWNUeXBlIHR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gyNjQuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfZm9ybWF0X2gyNjQuY2MKaW5kZXggOTc5M2ViYWUyNTkxMzFkZGZlYzgxZTMx
NzZlMjc4OGZhMjQ4ZTA3ZC4uN2E3YmNkZmJiODljODc0ODkxZmEyY2UyMjAyMmVjNWM5ZTcxYWY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF9mb3JtYXRfaDI2NC5jYwpAQCAtMTEsMTAgKzExLDE2IEBACiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0LmgiCiAKICNpbmNsdWRlIDxzdHJpbmcu
aD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8aXRl
cmF0b3I+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFi
c2wvdHlwZXMvdmFyaWFudC5oIgorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5U
KGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24u
aCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9wcHNfcGFyc2VyLmgiCiAjaW5jbHVkZSAi
Y29tbW9uX3ZpZGVvL2gyNjQvc3BzX3BhcnNlci5oIgpAQCAtMTg2LDkgKzE5MiwxMSBAQCBib29s
IFJ0cFBhY2tldGl6ZXJIMjY0OjpHZW5lcmF0ZVBhY2tldHMoCiAgICAgICBjYXNlIEgyNjRQYWNr
ZXRpemF0aW9uTW9kZTo6Tm9uSW50ZXJsZWF2ZWQ6CiAgICAgICAgIGludCBmcmFnbWVudF9sZW4g
PSBpbnB1dF9mcmFnbWVudHNfW2ldLmxlbmd0aDsKICAgICAgICAgaW50IHNpbmdsZV9wYWNrZXRf
Y2FwYWNpdHkgPSBsaW1pdHNfLm1heF9wYXlsb2FkX2xlbjsKLSAgICAgICAgaWYgKGkgPT0gMCkK
KyAgICAgICAgaWYgKGlucHV0X2ZyYWdtZW50c18uc2l6ZSgpID09IDEpCisgICAgICAgICAgc2lu
Z2xlX3BhY2tldF9jYXBhY2l0eSAtPSBsaW1pdHNfLnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xl
bjsKKyAgICAgICAgZWxzZSBpZiAoaSA9PSAwKQogICAgICAgICAgIHNpbmdsZV9wYWNrZXRfY2Fw
YWNpdHkgLT0gbGltaXRzXy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbjsKLSAgICAgICAgaWYg
KGkgKyAxID09IGlucHV0X2ZyYWdtZW50c18uc2l6ZSgpKQorICAgICAgICBlbHNlIGlmIChpICsg
MSA9PSBpbnB1dF9mcmFnbWVudHNfLnNpemUoKSkKICAgICAgICAgICBzaW5nbGVfcGFja2V0X2Nh
cGFjaXR5IC09IGxpbWl0c18ubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbjsKIAogICAgICAgICBp
ZiAoZnJhZ21lbnRfbGVuID4gc2luZ2xlX3BhY2tldF9jYXBhY2l0eSkgewpAQCAtMjExLDcgKzIx
OSwxMCBAQCBib29sIFJ0cFBhY2tldGl6ZXJIMjY0OjpQYWNrZXRpemVGdUEoc2l6ZV90IGZyYWdt
ZW50X2luZGV4KSB7CiAgIFBheWxvYWRTaXplTGltaXRzIGxpbWl0cyA9IGxpbWl0c187CiAgIC8v
IExlYXZlIHJvb20gZm9yIHRoZSBGVS1BIGhlYWRlci4KICAgbGltaXRzLm1heF9wYXlsb2FkX2xl
biAtPSBrRnVBSGVhZGVyU2l6ZTsKLSAgLy8gSWdub3JlIGZpcnN0L2xhc3QgcGFja2V0IHJlZHVj
dGlvbnMgdW5sZXNzIGl0IGlzIGZpcnN0L2xhc3QgZnJhZ21lbnQuCisgIC8vIElnbm9yZSBzaW5n
bGUvZmlyc3QvbGFzdCBwYWNrZXQgcmVkdWN0aW9ucyB1bmxlc3MgaXQgaXMgc2luZ2xlL2ZpcnN0
L2xhc3QKKyAgLy8gZnJhZ21lbnQuCisgIGlmIChpbnB1dF9mcmFnbWVudHNfLnNpemUoKSAhPSAx
KQorICAgIGxpbWl0cy5zaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSAwOwogICBpZiAoZnJh
Z21lbnRfaW5kZXggIT0gMCkKICAgICBsaW1pdHMuZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4g
PSAwOwogICBpZiAoZnJhZ21lbnRfaW5kZXggIT0gaW5wdXRfZnJhZ21lbnRzXy5zaXplKCkgLSAx
KQpAQCAtMjQzLDE3ICsyNTQsMzEgQEAgYm9vbCBSdHBQYWNrZXRpemVySDI2NDo6UGFja2V0aXpl
RnVBKHNpemVfdCBmcmFnbWVudF9pbmRleCkgewogc2l6ZV90IFJ0cFBhY2tldGl6ZXJIMjY0OjpQ
YWNrZXRpemVTdGFwQShzaXplX3QgZnJhZ21lbnRfaW5kZXgpIHsKICAgLy8gQWdncmVnYXRlIGZy
YWdtZW50cyBpbnRvIG9uZSBwYWNrZXQgKFNUQVAtQSkuCiAgIHNpemVfdCBwYXlsb2FkX3NpemVf
bGVmdCA9IGxpbWl0c18ubWF4X3BheWxvYWRfbGVuOwotICBpZiAoZnJhZ21lbnRfaW5kZXggPT0g
MCkKKyAgaWYgKGlucHV0X2ZyYWdtZW50c18uc2l6ZSgpID09IDEpCisgICAgcGF5bG9hZF9zaXpl
X2xlZnQgLT0gbGltaXRzXy5zaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW47CisgIGVsc2UgaWYg
KGZyYWdtZW50X2luZGV4ID09IDApCiAgICAgcGF5bG9hZF9zaXplX2xlZnQgLT0gbGltaXRzXy5m
aXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbjsKICAgaW50IGFnZ3JlZ2F0ZWRfZnJhZ21lbnRzID0g
MDsKICAgc2l6ZV90IGZyYWdtZW50X2hlYWRlcnNfbGVuZ3RoID0gMDsKICAgY29uc3QgRnJhZ21l
bnQqIGZyYWdtZW50ID0gJmlucHV0X2ZyYWdtZW50c19bZnJhZ21lbnRfaW5kZXhdOwogICBSVENf
Q0hFQ0tfR0UocGF5bG9hZF9zaXplX2xlZnQsIGZyYWdtZW50LT5sZW5ndGgpOwogICArK251bV9w
YWNrZXRzX2xlZnRfOwotICB3aGlsZSAocGF5bG9hZF9zaXplX2xlZnQgPj0gZnJhZ21lbnQtPmxl
bmd0aCArIGZyYWdtZW50X2hlYWRlcnNfbGVuZ3RoICYmCi0gICAgICAgICAoZnJhZ21lbnRfaW5k
ZXggKyAxIDwgaW5wdXRfZnJhZ21lbnRzXy5zaXplKCkgfHwKLSAgICAgICAgICBwYXlsb2FkX3Np
emVfbGVmdCA+PSBmcmFnbWVudC0+bGVuZ3RoICsgZnJhZ21lbnRfaGVhZGVyc19sZW5ndGggKwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHNfLmxhc3RfcGFja2V0X3Jl
ZHVjdGlvbl9sZW4pKSB7CisKKyAgYXV0byBwYXlsb2FkX3NpemVfbmVlZGVkID0gWyZdIHsKKyAg
ICBzaXplX3QgZnJhZ21lbnRfc2l6ZSA9IGZyYWdtZW50LT5sZW5ndGggKyBmcmFnbWVudF9oZWFk
ZXJzX2xlbmd0aDsKKyAgICBpZiAoaW5wdXRfZnJhZ21lbnRzXy5zaXplKCkgPT0gMSkgeworICAg
ICAgLy8gU2luZ2xlIGZyYWdtZW50LCBzaW5nbGUgcGFja2V0LCBwYXlsb2FkX3NpemVfbGVmdCBh
bHJlYWR5IGFkanVzdGVkCisgICAgICAvLyB3aXRoIGxpbWl0c18uc2luZ2xlX3BhY2tldF9yZWR1
Y3Rpb25fbGVuLgorICAgICAgcmV0dXJuIGZyYWdtZW50X3NpemU7CisgICAgfQorICAgIGlmIChm
cmFnbWVudF9pbmRleCA9PSBpbnB1dF9mcmFnbWVudHNfLnNpemUoKSAtIDEpIHsKKyAgICAgIC8v
IExhc3QgZnJhZ21lbnQsIHNvIFN0cmFwQSBtaWdodCBiZSB0aGUgbGFzdCBwYWNrZXQuCisgICAg
ICByZXR1cm4gZnJhZ21lbnRfc2l6ZSArIGxpbWl0c18ubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xl
bjsKKyAgICB9CisgICAgcmV0dXJuIGZyYWdtZW50X3NpemU7CisgIH07CisKKyAgd2hpbGUgKHBh
eWxvYWRfc2l6ZV9sZWZ0ID49IHBheWxvYWRfc2l6ZV9uZWVkZWQoKSkgewogICAgIFJUQ19DSEVD
S19HVChmcmFnbWVudC0+bGVuZ3RoLCAwKTsKICAgICBwYWNrZXRzXy5wdXNoKFBhY2tldFVuaXQo
KmZyYWdtZW50LCBhZ2dyZWdhdGVkX2ZyYWdtZW50cyA9PSAwLCBmYWxzZSwgdHJ1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQtPmJ1ZmZlclswXSkpOwpAQCAtMjgyLDkg
KzMwNywxMSBAQCBzaXplX3QgUnRwUGFja2V0aXplckgyNjQ6OlBhY2tldGl6ZVN0YXBBKHNpemVf
dCBmcmFnbWVudF9pbmRleCkgewogYm9vbCBSdHBQYWNrZXRpemVySDI2NDo6UGFja2V0aXplU2lu
Z2xlTmFsdShzaXplX3QgZnJhZ21lbnRfaW5kZXgpIHsKICAgLy8gQWRkIGEgc2luZ2xlIE5BTFUg
dG8gdGhlIHF1ZXVlLCBubyBhZ2dyZWdhdGlvbi4KICAgc2l6ZV90IHBheWxvYWRfc2l6ZV9sZWZ0
ID0gbGltaXRzXy5tYXhfcGF5bG9hZF9sZW47Ci0gIGlmIChmcmFnbWVudF9pbmRleCA9PSAwKQor
ICBpZiAoaW5wdXRfZnJhZ21lbnRzXy5zaXplKCkgPT0gMSkKKyAgICBwYXlsb2FkX3NpemVfbGVm
dCAtPSBsaW1pdHNfLnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbjsKKyAgZWxzZSBpZiAoZnJh
Z21lbnRfaW5kZXggPT0gMCkKICAgICBwYXlsb2FkX3NpemVfbGVmdCAtPSBsaW1pdHNfLmZpcnN0
X3BhY2tldF9yZWR1Y3Rpb25fbGVuOwotICBpZiAoZnJhZ21lbnRfaW5kZXggKyAxID09IGlucHV0
X2ZyYWdtZW50c18uc2l6ZSgpKQorICBlbHNlIGlmIChmcmFnbWVudF9pbmRleCArIDEgPT0gaW5w
dXRfZnJhZ21lbnRzXy5zaXplKCkpCiAgICAgcGF5bG9hZF9zaXplX2xlZnQgLT0gbGltaXRzXy5s
YXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuOwogICBjb25zdCBGcmFnbWVudCogZnJhZ21lbnQgPSAm
aW5wdXRfZnJhZ21lbnRzX1tmcmFnbWVudF9pbmRleF07CiAgIGlmIChwYXlsb2FkX3NpemVfbGVm
dCA8IGZyYWdtZW50LT5sZW5ndGgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRf
aDI2NC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0LmgKaW5kZXggNzNlNDA4NzhhMThiZDll
ZGQxZDUwMTZmMGJmNmI5MzAzYjBjZWFhMS4uZmJkNGZkOTUwOTA3NWQ4ZmI4NTJlMzNkNDUyNmJi
MzJlMzM4ZDM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0LmgKQEAgLTExLDEyICsxMSwxNyBAQAogI2lmbmRlZiBN
T0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfRk9STUFUX0gyNjRfSF8KICNkZWZpbmUgTU9EVUxF
U19SVFBfUlRDUF9TT1VSQ0VfUlRQX0ZPUk1BVF9IMjY0X0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxkZXF1ZT4KICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8cXVldWU+Ci0jaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAiYXBp
L2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90
eXBlcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXQuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9pbmNsdWRlL2gyNjRf
Z2xvYmFscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1h
dF9oMjY0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF9oMjY0X3VuaXR0ZXN0LmNj
CmluZGV4IGVkZjkwN2FhYzg1OWNmNDdlZjEwZjA2YTliZTBhZjg2Y2M5ZDlmZjguLmFlYWI4MTNi
NTNlMjY1MWM0ZGViMDIwOTQ0NzQ2NTRhY2ZiNTRiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9mb3JtYXRfaDI2NF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X2gyNjRf
dW5pdHRlc3QuY2MKQEAgLTM5MCw3ICszOTAsNyBAQCBzdGQ6OnZlY3RvcjxpbnQ+IFRlc3RGdWEo
c2l6ZV90IGZyYW1lX3BheWxvYWRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOb0ZyYWdtZW50YXRpb24oZnJhbWUpKTsKICAgc3RkOjp2ZWN0b3I8UnRwUGFja2V0VG9TZW5k
PiBwYWNrZXRzID0gRmV0Y2hBbGxQYWNrZXRzKCZwYWNrZXRpemVyKTsKIAotICBSVENfQ0hFQ0tf
R0UocGFja2V0cy5zaXplKCksIDIpOyAgLy8gU2luZ2xlIHBhY2tldCBpbmRpY2F0ZXMgaXQgaXMg
bm90IEZ1QS4KKyAgRVhQRUNUX0dFKHBhY2tldHMuc2l6ZSgpLCAydSk7ICAvLyBTaW5nbGUgcGFj
a2V0IGluZGljYXRlcyBpdCBpcyBub3QgRnVBLgogICBzdGQ6OnZlY3Rvcjx1aW50MTZfdD4gZnVh
X2hlYWRlcjsKICAgc3RkOjp2ZWN0b3I8aW50PiBwYXlsb2FkX3NpemVzOwogCkBAIC00MjIsNiAr
NDIyLDcgQEAgVEVTVChSdHBQYWNrZXRpemVySDI2NFRlc3QsIEZVQVdpdGhGaXJzdFBhY2tldFJl
ZHVjdGlvbikgewogICBSdHBQYWNrZXRpemVyOjpQYXlsb2FkU2l6ZUxpbWl0cyBsaW1pdHM7CiAg
IGxpbWl0cy5tYXhfcGF5bG9hZF9sZW4gPSAxMjAwOwogICBsaW1pdHMuZmlyc3RfcGFja2V0X3Jl
ZHVjdGlvbl9sZW4gPSA0OworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0g
NDsKICAgRVhQRUNUX1RIQVQoVGVzdEZ1YSgxMTk4LCBsaW1pdHMpLCBFbGVtZW50c0FyZSg1OTcs
IDYwMSkpOwogfQogCkBAIC00MjksMTQgKzQzMCwxNCBAQCBURVNUKFJ0cFBhY2tldGl6ZXJIMjY0
VGVzdCwgRlVBV2l0aExhc3RQYWNrZXRSZWR1Y3Rpb24pIHsKICAgUnRwUGFja2V0aXplcjo6UGF5
bG9hZFNpemVMaW1pdHMgbGltaXRzOwogICBsaW1pdHMubWF4X3BheWxvYWRfbGVuID0gMTIwMDsK
ICAgbGltaXRzLmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA0OworICBsaW1pdHMuc2luZ2xl
X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNDsKICAgRVhQRUNUX1RIQVQoVGVzdEZ1YSgxMTk4LCBs
aW1pdHMpLCBFbGVtZW50c0FyZSg2MDEsIDU5NykpOwogfQogCi1URVNUKFJ0cFBhY2tldGl6ZXJI
MjY0VGVzdCwgRlVBV2l0aEZpcnN0QW5kTGFzdFBhY2tldFJlZHVjdGlvbikgeworVEVTVChSdHBQ
YWNrZXRpemVySDI2NFRlc3QsIEZVQVdpdGhTaW5nbGVQYWNrZXRSZWR1Y3Rpb24pIHsKICAgUnRw
UGFja2V0aXplcjo6UGF5bG9hZFNpemVMaW1pdHMgbGltaXRzOwogICBsaW1pdHMubWF4X3BheWxv
YWRfbGVuID0gMTE5OTsKLSAgbGltaXRzLmZpcnN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMTAw
OwotICBsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDEwMDsKKyAgbGltaXRzLnNp
bmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDIwMDsKICAgRVhQRUNUX1RIQVQoVGVzdEZ1YSgx
MDAwLCBsaW1pdHMpLCBFbGVtZW50c0FyZSg1MDAsIDUwMCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfZm9ybWF0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF91bml0
dGVzdC5jYwppbmRleCBhNzljNDM0YjYyOWYzMjViMWVmNjQyNGEyNjViZTM2MzBjNzkxODNjLi5h
ZTFiNWIwNTRhZGZhM2U0ZTIxNTBlYWI0MTg3MWViNTAxOThmM2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfZm9ybWF0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdW5p
dHRlc3QuY2MKQEAgLTE5OSwyMSArMTk5LDMyIEBAIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJv
dXRFcXVhbGx5LCBHaXZlc05vblplcm9QYXlsb2FkTGVuZ3RoRWFjaFBhY2tldCkgewogfQogCiBU
RVNUKFJ0cFBhY2tldGl6ZXJTcGxpdEFib3V0RXF1YWxseSwKLSAgICAgT25lUGFja2V0V2hlbkV4
dHJhU3BhY2VJc0Vub3VnaEZvclN1bU9mRmlyc3RBbmRMYXN0UGFja2V0UmVkdWN0aW9ucykgewor
ICAgICBJZ25vcmVzRmlyc3RBbmRMYXN0UGFja2V0UmVkdWN0aW9uV2hlblBheWxvYWRGaXRzSW50
b1NpbmdsZVBhY2tldCkgewogICBSdHBQYWNrZXRpemVyOjpQYXlsb2FkU2l6ZUxpbWl0cyBsaW1p
dHM7CiAgIGxpbWl0cy5tYXhfcGF5bG9hZF9sZW4gPSAzMDsKLSAgbGltaXRzLmZpcnN0X3BhY2tl
dF9yZWR1Y3Rpb25fbGVuID0gNjsKLSAgbGltaXRzLmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4g
PSA0OworICBsaW1pdHMuZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSAyOTsKKyAgbGltaXRz
Lmxhc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSAyOTsKKyAgbGltaXRzLnNpbmdsZV9wYWNrZXRf
cmVkdWN0aW9uX2xlbiA9IDEwOwogCiAgIEVYUEVDVF9USEFUKFJ0cFBhY2tldGl6ZXI6OlNwbGl0
QWJvdXRFcXVhbGx5KDIwLCBsaW1pdHMpLCBFbGVtZW50c0FyZSgyMCkpOwogfQogCiBURVNUKFJ0
cFBhY2tldGl6ZXJTcGxpdEFib3V0RXF1YWxseSwKLSAgICAgVHdvUGFja2V0c1doZW5FeHRyYVNw
YWNlSXNUb29TbWFsbEZvclN1bU9mRmlyc3RBbmRMYXN0UGFja2V0UmVkdWN0aW9ucykgeworICAg
ICBPbmVQYWNrZXRXaGVuRXh0cmFTcGFjZUlzRW5vdWdoRm9yU2luZ2xlUGFja2V0UmVkdWN0aW9u
KSB7CisgIFJ0cFBhY2tldGl6ZXI6OlBheWxvYWRTaXplTGltaXRzIGxpbWl0czsKKyAgbGltaXRz
Lm1heF9wYXlsb2FkX2xlbiA9IDMwOworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25f
bGVuID0gMTA7CisKKyAgRVhQRUNUX1RIQVQoUnRwUGFja2V0aXplcjo6U3BsaXRBYm91dEVxdWFs
bHkoMjAsIGxpbWl0cyksIEVsZW1lbnRzQXJlKDIwKSk7Cit9CisKK1RFU1QoUnRwUGFja2V0aXpl
clNwbGl0QWJvdXRFcXVhbGx5LAorICAgICBUd29QYWNrZXRzV2hlbkV4dHJhU3BhY2VJc1Rvb1Nt
YWxsRm9yU2luZ2xlUGFja2V0UmVkdWN0aW9uKSB7CiAgIFJ0cFBhY2tldGl6ZXI6OlBheWxvYWRT
aXplTGltaXRzIGxpbWl0czsKICAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiA9IDI5OwotICBsaW1p
dHMuZmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA2OwotICBsaW1pdHMubGFzdF9wYWNrZXRf
cmVkdWN0aW9uX2xlbiA9IDQ7CisgIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9
IDM7CisgIGxpbWl0cy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMTsKKyAgbGltaXRzLnNp
bmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDEwOwogCiAgIC8vIEZpcnN0IHBhY2tldCBuZWVk
cyB0d28gbW9yZSBleHRyYSBieXRlcyBjb21wYXJlZCB0byBsYXN0IG9uZSwKICAgLy8gc28gc2hv
dWxkIGhhdmUgdHdvIGxlc3MgcGF5bG9hZCBieXRlcy4KQEAgLTI0Niw4ICsyNTcsNyBAQCBURVNU
KFJ0cFBhY2tldGl6ZXJTcGxpdEFib3V0RXF1YWxseSwgUmVqZWN0c1plcm9MYXN0UGFja2V0TGVu
KSB7CiBURVNUKFJ0cFBhY2tldGl6ZXJTcGxpdEFib3V0RXF1YWxseSwgQ2FudFB1dFNpbmdsZVBh
eWxvYWRCeXRlSW5Ud29QYWNrZXRzKSB7CiAgIFJ0cFBhY2tldGl6ZXI6OlBheWxvYWRTaXplTGlt
aXRzIGxpbWl0czsKICAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiA9IDEwOwotICBsaW1pdHMuZmly
c3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSA2OwotICBsaW1pdHMubGFzdF9wYWNrZXRfcmVkdWN0
aW9uX2xlbiA9IDQ7CisgIGxpbWl0cy5zaW5nbGVfcGFja2V0X3JlZHVjdGlvbl9sZW4gPSAxMDsK
IAogICBFWFBFQ1RfVEhBVChSdHBQYWNrZXRpemVyOjpTcGxpdEFib3V0RXF1YWxseSgxLCBsaW1p
dHMpLCBJc0VtcHR5KCkpOwogfQpAQCAtMjU1LDggKzI2NSw3IEBAIFRFU1QoUnRwUGFja2V0aXpl
clNwbGl0QWJvdXRFcXVhbGx5LCBDYW50UHV0U2luZ2xlUGF5bG9hZEJ5dGVJblR3b1BhY2tldHMp
IHsKIFRFU1QoUnRwUGFja2V0aXplclNwbGl0QWJvdXRFcXVhbGx5LCBDYW5QdXRUd29QYXlsb2Fk
Qnl0ZXNJblR3b1BhY2tldHMpIHsKICAgUnRwUGFja2V0aXplcjo6UGF5bG9hZFNpemVMaW1pdHMg
bGltaXRzOwogICBsaW1pdHMubWF4X3BheWxvYWRfbGVuID0gMTA7Ci0gIGxpbWl0cy5maXJzdF9w
YWNrZXRfcmVkdWN0aW9uX2xlbiA9IDY7Ci0gIGxpbWl0cy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25f
bGVuID0gNDsKKyAgbGltaXRzLnNpbmdsZV9wYWNrZXRfcmVkdWN0aW9uX2xlbiA9IDEwOwogCiAg
IEVYUEVDVF9USEFUKFJ0cFBhY2tldGl6ZXI6OlNwbGl0QWJvdXRFcXVhbGx5KDIsIGxpbWl0cyks
IEVsZW1lbnRzQXJlKDEsIDEpKTsKIH0KQEAgLTI2NCw4ICsyNzMsNyBAQCBURVNUKFJ0cFBhY2tl
dGl6ZXJTcGxpdEFib3V0RXF1YWxseSwgQ2FuUHV0VHdvUGF5bG9hZEJ5dGVzSW5Ud29QYWNrZXRz
KSB7CiBURVNUKFJ0cFBhY2tldGl6ZXJTcGxpdEFib3V0RXF1YWxseSwgQ2FuUHV0U2luZ2xlUGF5
bG9hZEJ5dGVJbk9uZVBhY2tldCkgewogICBSdHBQYWNrZXRpemVyOjpQYXlsb2FkU2l6ZUxpbWl0
cyBsaW1pdHM7CiAgIGxpbWl0cy5tYXhfcGF5bG9hZF9sZW4gPSAxMTsKLSAgbGltaXRzLmZpcnN0
X3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gNjsKLSAgbGltaXRzLmxhc3RfcGFja2V0X3JlZHVjdGlv
bl9sZW4gPSA0OworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0gMTA7CiAK
ICAgRVhQRUNUX1RIQVQoUnRwUGFja2V0aXplcjo6U3BsaXRBYm91dEVxdWFsbHkoMSwgbGltaXRz
KSwgRWxlbWVudHNBcmUoMSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92
aWRlb19nZW5lcmljLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmNjCmlu
ZGV4IGVkZDFlM2M1MzA1MTYzNTQzNWI4YzBlMTFhODUxMTNjYWNiMzg0MjUuLjkyYWFkYTQ2ODhh
ODVmYTVjYmNjNzU4NzIwYTc4NTY5MWQ1MDk4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9m
b3JtYXRfdmlkZW9fZ2VuZXJpYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZpZGVvX2dl
bmVyaWMuY2MKQEAgLTgsMTEgKzgsMTMgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCi0jaW5jbHVkZSA8c3Ry
aW5nPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogCi0jaW5jbHVk
ZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXMuaCIKKyNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2Zvcm1hdF92aWRlb19nZW5lcmljLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX3BhY2tldF90b19zZW5kLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdmlkZW9fZ2VuZXJpYy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2Zvcm1hdF92aWRlb19nZW5lcmljLmgKaW5kZXggMDM1MDlmNTA0MWRmNmY3Y2Y2ZDQ4YWU3ODhi
ODg5NTY1ZTMyZGNiMC4uMzQ1OGQ0OTQyMzI5YTE1YzEyMGRjZmY1OWUzMGZmN2NiMTI2ZGIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmgKQEAgLTEwLDYgKzEwLDcgQEAKICNpZm5k
ZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX0ZPUk1BVF9WSURFT19HRU5FUklDX0hfCiAj
ZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9GT1JNQVRfVklERU9fR0VORVJJQ19I
XwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAi
YXBpL2FycmF5X3ZpZXcuaCIKQEAgLTE4LDYgKzE5LDEwIEBACiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgUnRwUGFj
a2V0VG9TZW5kOworc3RydWN0IFJUUFZpZGVvSGVhZGVyOworCiBuYW1lc3BhY2UgUnRwRm9ybWF0
VmlkZW9HZW5lcmljIHsKIHN0YXRpYyBjb25zdCB1aW50OF90IGtLZXlGcmFtZUJpdCA9IDB4MDE7
CiBzdGF0aWMgY29uc3QgdWludDhfdCBrRmlyc3RQYWNrZXRCaXQgPSAweDAyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOC5j
YwppbmRleCBmNDA0MzRlN2UwMzFmNzI5ZjBkNDMxMjI4NTVjOTViYzkyM2RjMjAwLi5hMTI0OGNm
MDQwYjE3M2M1YzA3YWQ0Yjc0ZmRkZGMxNzk0MjU4ZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfZm9ybWF0X3ZwOC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOC5jYwpAQCAtMTAs
MTMgKzEwLDEzIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9y
bWF0X3ZwOC5oIgogCisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+ICAv
LyBtZW1jcHkKLQotI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1
ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxk
L2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90
b19zZW5kLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2ludGVyZmFj
ZS9jb21tb25fY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9y
bWF0X3ZwOC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDguaAppbmRleCBlNGJjMzZlM2YzZjRl
ZTI1ZjYzNmM5YzFlZTc4NWNhN2I4NDdiNjM2Li40NDQyOThmYmJmODA5ZDU1NWJiY2Q0MDhmNjJk
NWM4ZTY3NGI1NmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0
Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA4LmgKQEAgLTI1LDEzICsyNSwxNSBAQAogI2lmbmRlZiBN
T0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfRk9STUFUX1ZQOF9IXwogI2RlZmluZSBNT0RVTEVT
X1JUUF9SVENQX1NPVVJDRV9SVFBfRk9STUFUX1ZQOF9IXwogCi0jaW5jbHVkZSA8c3RyaW5nPgor
I2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8dmVjdG9y
PgogCiAjaW5jbHVkZSAiYWJzbC9jb250YWluZXIvaW5saW5lZF92ZWN0b3IuaCIKICNpbmNsdWRl
ICJhcGkvYXJyYXlfdmlldy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29t
bW9uX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1h
dC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2Vu
ZC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92
cDhfZ2xvYmFscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOS5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA5LmNjCmluZGV4IDQ0MTlkMWEzMGMwYjVmOTgzYjU0
MjQyOGFiNDk4ZTNjNmFkODBlMTcuLjljZDc1MTQzYjhjMjk3MWFmMzJhYWI1NDBhNDhmYzY0M2Q1
NGVlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA5LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9mb3JtYXRfdnA5LmNjCkBAIC0xMiw5ICsxMiw5IEBACiAKICNpbmNsdWRlIDxzdHJp
bmcuaD4KIAotI2luY2x1ZGUgPGNtYXRoPgotCisjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAv
LyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfcGFja2V0X3RvX3NlbmQuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvaW50ZXJmYWNlL2NvbW1vbl9jb25zdGFudHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9i
aXRidWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCkBAIC00NTEsNiArNDUxLDcgQEAgUnRwUGFja2V0aXplclZwOTo6UnRw
UGFja2V0aXplclZwOShydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBwYXlsb2FkLAogICAg
ICAgcmVtYWluaW5nX3BheWxvYWRfKHBheWxvYWQpIHsKICAgbGltaXRzLm1heF9wYXlsb2FkX2xl
biAtPSBoZWFkZXJfc2l6ZV87CiAgIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9uX2xlbiAr
PSBmaXJzdF9wYWNrZXRfZXh0cmFfaGVhZGVyX3NpemVfOworICBsaW1pdHMuc2luZ2xlX3BhY2tl
dF9yZWR1Y3Rpb25fbGVuICs9IGZpcnN0X3BhY2tldF9leHRyYV9oZWFkZXJfc2l6ZV87CiAKICAg
cGF5bG9hZF9zaXplc18gPSBTcGxpdEFib3V0RXF1YWxseShwYXlsb2FkLnNpemUoKSwgbGltaXRz
KTsKICAgY3VycmVudF9wYWNrZXRfID0gcGF5bG9hZF9zaXplc18uYmVnaW4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9mb3JtYXRfdnA5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZm9ybWF0X3ZwOS5o
CmluZGV4IDhhMmEyYTYwNGM4MTRkMzIyNTU1ODkzNDM0MTllZmRiOTI2ZTllYTkuLmMzYjhmMTdh
NGIwOTgxYmFjMTQ4MWM5NjRlNTMzODQ3NGU0YWU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9mb3JtYXRfdnA5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92cDkuaApAQCAtMjEsMTIg
KzIxLDE0IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9GT1JNQVRfVlA5
X0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9GT1JNQVRfVlA5X0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvaW5j
bHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX2Zvcm1hdC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9wYWNrZXRfdG9fc2VuZC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDkvaW5jbHVkZS92cDlfZ2xvYmFscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVj
dG9ybWFnaWMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJh
bWVfZGVzY3JpcHRvci5jYwppbmRleCAxYjkzMTMyN2JhZDFmOGE3OTEyOTc0MjBiNjM1NzYzODM2
Y2UxZDk0Li5jMjdmYjZlM2Y2Zjg1ZmI5MWRhOTQwOWU4NjMyNmVkOGM4MzMzZGRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2Ny
aXB0b3IuaCIKIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC01Niw2ICs1OCwxNiBAQCB2b2lkIFJ0cEdl
bmVyaWNGcmFtZURlc2NyaXB0b3I6OlNldFNwYXRpYWxMYXllcnNCaXRtYXNrKAogICBzcGF0aWFs
X2xheWVyc18gPSBzcGF0aWFsX2xheWVyczsKIH0KIAordm9pZCBSdHBHZW5lcmljRnJhbWVEZXNj
cmlwdG9yOjpTZXRSZXNvbHV0aW9uKGludCB3aWR0aCwgaW50IGhlaWdodCkgeworICBSVENfRENI
RUNLKEZpcnN0UGFja2V0SW5TdWJGcmFtZSgpKTsKKyAgUlRDX0RDSEVDS19HRSh3aWR0aCwgMCk7
CisgIFJUQ19EQ0hFQ0tfTEUod2lkdGgsIDB4RkZGRik7CisgIFJUQ19EQ0hFQ0tfR0UoaGVpZ2h0
LCAwKTsKKyAgUlRDX0RDSEVDS19MRShoZWlnaHQsIDB4RkZGRik7CisgIHdpZHRoXyA9IHdpZHRo
OworICBoZWlnaHRfID0gaGVpZ2h0OworfQorCiB1aW50MTZfdCBSdHBHZW5lcmljRnJhbWVEZXNj
cmlwdG9yOjpGcmFtZUlkKCkgY29uc3QgewogICBSVENfRENIRUNLKEZpcnN0UGFja2V0SW5TdWJG
cmFtZSgpKTsKICAgcmV0dXJuIGZyYW1lX2lkXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9n
ZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rl
c2NyaXB0b3IuaAppbmRleCAxYmRlNGZhNTZkY2M3ODlmOGY2Y2MzYjZjN2ViYTFmODYxZTQyOWUz
Li4zYTZjMzRkNTlmZjI2MzBmYTE0MzZkZTU3ZjRmY2U2OTY4YTEwNDljIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvci5oCkBAIC01MCw2ICs1MCwxMCBAQCBjbGFzcyBSdHBH
ZW5lcmljRnJhbWVEZXNjcmlwdG9yIHsKICAgdWludDhfdCBTcGF0aWFsTGF5ZXJzQml0bWFzaygp
IGNvbnN0OwogICB2b2lkIFNldFNwYXRpYWxMYXllcnNCaXRtYXNrKHVpbnQ4X3Qgc3BhdGlhbF9s
YXllcnMpOwogCisgIGludCBXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHdpZHRoXzsgfQorICBpbnQg
SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaGVpZ2h0XzsgfQorICB2b2lkIFNldFJlc29sdXRpb24o
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKwogICB1aW50MTZfdCBGcmFtZUlkKCkgY29uc3Q7CiAg
IHZvaWQgU2V0RnJhbWVJZCh1aW50MTZfdCBmcmFtZV9pZCk7CiAKQEAgLTcyLDYgKzc2LDkgQEAg
Y2xhc3MgUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvciB7CiAgIHVpbnQ4X3QgdGVtcG9yYWxfbGF5
ZXJfID0gMDsKICAgc2l6ZV90IG51bV9mcmFtZV9kZXBzXyA9IDA7CiAgIHVpbnQxNl90IGZyYW1l
X2RlcHNfaWRfZGlmZnNfW2tNYXhOdW1GcmFtZURlcGVuZGVuY2llc107CisgIGludCB3aWR0aF8g
PSAwOworICBpbnQgaGVpZ2h0XyA9IDA7CisKICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gYnl0ZV9y
ZXByZXNlbnRhdGlvbl87CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19m
cmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1l
X2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLmNjCmluZGV4IGM3YjUyZDViYTY4MGQxNGZkODY1NjJmYTRh
ODViYjEwZjA5MDI3OGMuLjdjZDEyMGQ5ZjQ1YzM5NTcwNmU3NTE5MzUwZDk1OTFmODJjMzIyOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5z
aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5z
aW9uLmNjCkBAIC0zNiw2ICszNiwxNCBAQCBjb25zdGV4cHIgdWludDhfdCBrRmxhZ2VYdGVuZGVk
T2Zmc2V0ID0gMHgwMjsKIC8vIEI6ICAgKyAgICAgIEZJRCAgICAgICsKIC8vICAgICAgfCAgICAg
ICAgICAgICAgIHwKIC8vICAgICAgKy0rLSstKy0rLSstKy0rLSsKKy8vICAgICAgfCAgICAgICAg
ICAgICAgIHwKKy8vICAgICAgKyAgICAgV2lkdGggICAgICsKKy8vIEI9MSAgfCAgICAgICAgICAg
ICAgIHwKKy8vIGFuZCAgKy0rLSstKy0rLSstKy0rLSsKKy8vIEQ9MCAgfCAgICAgICAgICAgICAg
IHwKKy8vICAgICAgKyAgICAgSGVpZ2h0ICAgICsKKy8vICAgICAgfCAgICAgICAgICAgICAgIHwK
Ky8vICAgICAgKy0rLSstKy0rLSstKy0rLSsKIC8vIEQ6ICAgfCAgICBGRElGRiAgfFh8TXwKIC8v
ICAgICAgKy0tLS0tLS0tLS0tLS0tLSsKIC8vIFg6ICAgfCAgICAgIC4uLiAgICAgIHwKQEAgLTc1
LDYgKzgzLDEyIEBAIGJvb2wgUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbjo6UGFy
c2UoCiAgIGRlc2NyaXB0b3ItPkNsZWFyRnJhbWVEZXBlbmRlbmNpZXMoKTsKICAgc2l6ZV90IG9m
ZnNldCA9IDQ7CiAgIGJvb2wgaGFzX21vcmVfZGVwZW5kZW5jaWVzID0gKGRhdGFbMF0gJiBrRmxh
Z0RlcGVuZGVuY2llcykgIT0gMDsKKyAgaWYgKCFoYXNfbW9yZV9kZXBlbmRlbmNpZXMgJiYgZGF0
YS5zaXplKCkgPj0gb2Zmc2V0ICsgNCkgeworICAgIHVpbnQxNl90IHdpZHRoID0gKGRhdGFbb2Zm
c2V0XSA8PCA4KSB8IGRhdGFbb2Zmc2V0ICsgMV07CisgICAgdWludDE2X3QgaGVpZ2h0ID0gKGRh
dGFbb2Zmc2V0ICsgMl0gPDwgOCkgfCBkYXRhW29mZnNldCArIDNdOworICAgIGRlc2NyaXB0b3It
PlNldFJlc29sdXRpb24od2lkdGgsIGhlaWdodCk7CisgICAgb2Zmc2V0ICs9IDQ7CisgIH0KICAg
d2hpbGUgKGhhc19tb3JlX2RlcGVuZGVuY2llcykgewogICAgIGlmIChkYXRhLnNpemUoKSA9PSBv
ZmZzZXQpCiAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MSw3ICsxMDUsNyBAQCBib29sIFJ0cEdl
bmVyaWNGcmFtZURlc2NyaXB0b3JFeHRlbnNpb246OlBhcnNlKAogICAgIGlmICghZGVzY3JpcHRv
ci0+QWRkRnJhbWVEZXBlbmRlbmN5RGlmZihmZGlmZikpCiAgICAgICByZXR1cm4gZmFsc2U7CiAg
IH0KLSAgcmV0dXJuIGRhdGEuc2l6ZSgpID09IG9mZnNldDsKKyAgcmV0dXJuIHRydWU7CiB9CiAK
IHNpemVfdCBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uOjpWYWx1ZVNpemUoCkBA
IC0xMDMsNiArMTE3LDExIEBAIHNpemVfdCBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5z
aW9uOjpWYWx1ZVNpemUoCiAgIGZvciAodWludDE2X3QgZmRpZmYgOiBkZXNjcmlwdG9yLkZyYW1l
RGVwZW5kZW5jaWVzRGlmZnMoKSkgewogICAgIHNpemUgKz0gKGZkaWZmID49ICgxIDw8IDYpKSA/
IDIgOiAxOwogICB9CisgIGlmIChkZXNjcmlwdG9yLkZpcnN0UGFja2V0SW5TdWJGcmFtZSgpICYm
CisgICAgICBkZXNjcmlwdG9yLkZyYW1lRGVwZW5kZW5jaWVzRGlmZnMoKS5lbXB0eSgpICYmIGRl
c2NyaXB0b3IuV2lkdGgoKSA+IDAgJiYKKyAgICAgIGRlc2NyaXB0b3IuSGVpZ2h0KCkgPiAwKSB7
CisgICAgc2l6ZSArPSA0OworICB9CiAgIHJldHVybiBzaXplOwogfQogCkBAIC0xMjksNiArMTQ4
LDEzIEBAIGJvb2wgUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbjo6V3JpdGUoCiAg
IGRhdGFbM10gPSBmcmFtZV9pZCA+PiA4OwogICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50MTZf
dD4gZmRpZmZzID0gZGVzY3JpcHRvci5GcmFtZURlcGVuZGVuY2llc0RpZmZzKCk7CiAgIHNpemVf
dCBvZmZzZXQgPSA0OworICBpZiAoZGVzY3JpcHRvci5GaXJzdFBhY2tldEluU3ViRnJhbWUoKSAm
JiBmZGlmZnMuZW1wdHkoKSAmJgorICAgICAgZGVzY3JpcHRvci5XaWR0aCgpID4gMCAmJiBkZXNj
cmlwdG9yLkhlaWdodCgpID4gMCkgeworICAgIGRhdGFbb2Zmc2V0KytdID0gKGRlc2NyaXB0b3Iu
V2lkdGgoKSA+PiA4KTsKKyAgICBkYXRhW29mZnNldCsrXSA9IChkZXNjcmlwdG9yLldpZHRoKCkg
JiAweEZGKTsKKyAgICBkYXRhW29mZnNldCsrXSA9IChkZXNjcmlwdG9yLkhlaWdodCgpID4+IDgp
OworICAgIGRhdGFbb2Zmc2V0KytdID0gKGRlc2NyaXB0b3IuSGVpZ2h0KCkgJiAweEZGKTsKKyAg
fQogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZkaWZmcy5zaXplKCk7IGkrKykgewogICAgIGJv
b2wgZXh0ZW5kZWQgPSBmZGlmZnNbaV0gPj0gKDEgPDwgNik7CiAgICAgYm9vbCBtb3JlID0gaSA8
IGZkaWZmcy5zaXplKCkgLSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJh
bWVfZGVzY3JpcHRvcl9leHRlbnNpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5lcmljX2ZyYW1lX2Rl
c2NyaXB0b3JfZXh0ZW5zaW9uLmgKaW5kZXggMmRkOWRkNDllYmUxMmUwMmE5YzA1ZmUyNmMzYmRi
NDMxZTE4MmVlMC4uMGQ2NzNlMDYwMTk4ZDgxZGMwZmFmMzc4Y2ZlOGU4NTNiYjI4MGEyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb24u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yX2V4dGVuc2lvbi5o
CkBAIC0yMSw2ICsyMSw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBjbGFzcyBSdHBHZW5lcmlj
RnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uIHsKICBwdWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUg
PSBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yOwogICBzdGF0aWMgY29uc3RleHByIFJUUEV4dGVu
c2lvblR5cGUga0lkID0ga1J0cEV4dGVuc2lvbkdlbmVyaWNGcmFtZURlc2NyaXB0b3I7CiAgIHN0
YXRpYyBjb25zdGV4cHIgY2hhciBrVXJpW10gPQogICAgICAgImh0dHA6Ly93d3cud2VicnRjLm9y
Zy9leHBlcmltZW50cy9ydHAtaGRyZXh0LyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9nZW5l
cmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb25fdW5pdHRlc3QuY2MKaW5kZXggYmI2
OWUxNDU1ZGQ5NDBjYWY1N2JiMTUyODBiYzMxOTVmNWNlNzQ3My4uN2Y4ZmEyZjVhNDFlNDQ3ZmNk
OTM1YzU5YzRlNTUwNDZmOGU3MjRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2dlbmVyaWNf
ZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb25fdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb25fdW5pdHRlc3QuY2MKQEAgLTI3OSw1
ICsyNzksMzIgQEAgVEVTVChSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uVGVzdCwg
V3JpdGVUd29GcmFtZURlcGVuZGVuY2llcykgewogICBFWFBFQ1RfVEhBVChidWZmZXIsIEVsZW1l
bnRzQXJlQXJyYXkoa1JhdykpOwogfQogCitURVNUKFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3JF
eHRlbnNpb25UZXN0LAorICAgICBQYXJzZVJlc29sdXRpb25PbkluZGVwZW5kZW50RnJhbWUpIHsK
KyAgY29uc3RleHByIGludCBrV2lkdGggPSAweDI0Njg7CisgIGNvbnN0ZXhwciBpbnQga0hlaWdo
dCA9IDB4NjU0MzsKKyAgY29uc3RleHByIHVpbnQ4X3Qga1Jhd1tdID0gezB4ODAsIDB4MDEsIDB4
MDAsIDB4MDAsIDB4MjQsIDB4NjgsIDB4NjUsIDB4NDN9OworICBSdHBHZW5lcmljRnJhbWVEZXNj
cmlwdG9yIGRlc2NyaXB0b3I7CisKKyAgQVNTRVJUX1RSVUUoUnRwR2VuZXJpY0ZyYW1lRGVzY3Jp
cHRvckV4dGVuc2lvbjo6UGFyc2Uoa1JhdywgJmRlc2NyaXB0b3IpKTsKKyAgRVhQRUNUX0VRKGRl
c2NyaXB0b3IuV2lkdGgoKSwga1dpZHRoKTsKKyAgRVhQRUNUX0VRKGRlc2NyaXB0b3IuSGVpZ2h0
KCksIGtIZWlnaHQpOworfQorCitURVNUKFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3JFeHRlbnNp
b25UZXN0LAorICAgICBXcml0ZVJlc29sdXRpb25PbkluZGVwZW5kZW50RnJhbWUpIHsKKyAgY29u
c3RleHByIGludCBrV2lkdGggPSAweDI0Njg7CisgIGNvbnN0ZXhwciBpbnQga0hlaWdodCA9IDB4
NjU0MzsKKyAgY29uc3RleHByIHVpbnQ4X3Qga1Jhd1tdID0gezB4ODAsIDB4MDEsIDB4MDAsIDB4
MDAsIDB4MjQsIDB4NjgsIDB4NjUsIDB4NDN9OworICBSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9y
IGRlc2NyaXB0b3I7CisgIGRlc2NyaXB0b3IuU2V0Rmlyc3RQYWNrZXRJblN1YkZyYW1lKHRydWUp
OworICBkZXNjcmlwdG9yLlNldFJlc29sdXRpb24oa1dpZHRoLCBrSGVpZ2h0KTsKKworICBBU1NF
UlRfRVEoUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbjo6VmFsdWVTaXplKGRlc2Ny
aXB0b3IpLAorICAgICAgICAgICAgc2l6ZW9mKGtSYXcpKTsKKyAgdWludDhfdCBidWZmZXJbc2l6
ZW9mKGtSYXcpXTsKKyAgRVhQRUNUX1RSVUUoUnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVu
c2lvbjo6V3JpdGUoYnVmZmVyLCBkZXNjcmlwdG9yKSk7CisgIEVYUEVDVF9USEFUKGJ1ZmZlciwg
RWxlbWVudHNBcmVBcnJheShrUmF3KSk7Cit9CiB9ICAvLyBuYW1lc3BhY2UKIH0gIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21h
cC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5jYwppbmRleCAxNjg2NjVh
ZmM0NTMyZGViNGQ5ZTg2MzVhMmQ3ZTBhYjMyMDg0MmFiLi44ZTBhNDg0ZDk3NzRlNjA2ZWFkODQ1
Y2RhNDZlNDA4NzI2NmNjNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVu
c2lvbl9tYXAuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmNjCkBA
IC00Myw2ICs0Myw3IEBAIGNvbnN0ZXhwciBFeHRlbnNpb25JbmZvIGtFeHRlbnNpb25zW10gPSB7
CiAgICAgQ3JlYXRlRXh0ZW5zaW9uSW5mbzxSZXBhaXJlZFJ0cFN0cmVhbUlkPigpLAogICAgIENy
ZWF0ZUV4dGVuc2lvbkluZm88UnRwTWlkPigpLAogICAgIENyZWF0ZUV4dGVuc2lvbkluZm88UnRw
R2VuZXJpY0ZyYW1lRGVzY3JpcHRvckV4dGVuc2lvbj4oKSwKKyAgICBDcmVhdGVFeHRlbnNpb25J
bmZvPENvbG9yU3BhY2VFeHRlbnNpb24+KCksCiB9OwogCiAvLyBCZWNhdXNlIG9mIGtSdHBFeHRl
bnNpb25Ob25lLCBOdW1iZXJPZkV4dGVuc2lvbiBpcyAxIGJpZ2dlciB0aGFuIHRoZSBhY3R1YWwK
QEAgLTU2LDE1ICs1NywxNyBAQCBzdGF0aWNfYXNzZXJ0KGFycmF5c2l6ZShrRXh0ZW5zaW9ucykg
PT0KIGNvbnN0ZXhwciBSVFBFeHRlbnNpb25UeXBlIFJ0cEhlYWRlckV4dGVuc2lvbk1hcDo6a0lu
dmFsaWRUeXBlOwogY29uc3RleHByIGludCBSdHBIZWFkZXJFeHRlbnNpb25NYXA6OmtJbnZhbGlk
SWQ7CiAKLVJ0cEhlYWRlckV4dGVuc2lvbk1hcDo6UnRwSGVhZGVyRXh0ZW5zaW9uTWFwKCkKLSAg
ICA6IG1peGVkX29uZV90d29fYnl0ZV9oZWFkZXJfc3VwcG9ydGVkXyhmYWxzZSkgeworUnRwSGVh
ZGVyRXh0ZW5zaW9uTWFwOjpSdHBIZWFkZXJFeHRlbnNpb25NYXAoKSA6IFJ0cEhlYWRlckV4dGVu
c2lvbk1hcChmYWxzZSkge30KKworUnRwSGVhZGVyRXh0ZW5zaW9uTWFwOjpSdHBIZWFkZXJFeHRl
bnNpb25NYXAoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpCisgICAgOiBleHRtYXBfYWxsb3dfbWl4
ZWRfKGV4dG1hcF9hbGxvd19taXhlZCkgewogICBmb3IgKGF1dG8mIGlkIDogaWRzXykKICAgICBp
ZCA9IGtJbnZhbGlkSWQ7CiB9CiAKIFJ0cEhlYWRlckV4dGVuc2lvbk1hcDo6UnRwSGVhZGVyRXh0
ZW5zaW9uTWFwKAogICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IFJ0cEV4dGVuc2lvbj4gZXh0ZW5z
aW9ucykKLSAgICA6IFJ0cEhlYWRlckV4dGVuc2lvbk1hcCgpIHsKKyAgICA6IFJ0cEhlYWRlckV4
dGVuc2lvbk1hcChmYWxzZSkgewogICBmb3IgKGNvbnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9u
IDogZXh0ZW5zaW9ucykKICAgICBSZWdpc3RlckJ5VXJpKGV4dGVuc2lvbi5pZCwgZXh0ZW5zaW9u
LnVyaSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9y
dGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbnMuY2MKaW5kZXggZmM0YjdjZWI5MjgxYWY1
YzEyMmU1YjQ5YmRhNTBkNTRjY2FmZTc1OS4uOTI2OTRjZDVhM2E0NjZhMzI4ZDgxYzQzNzdmMDQ1
NjFiMjhiMjA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5jYwpAQCAtMTAsMTAgKzEwLDE0
IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVu
c2lvbnMuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGNtYXRoPgorCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9jdm8uaCIKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCisvLyBUT0RPKGJ1Zzo5ODU1KSBNb3ZlIGtO
b1NwYXRpYWxJZHggZnJvbSB2cDlfZ2xvYmFscy5oIHRvIGNvbW1vbl9jb25zdGFudHMKKyNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaW50ZXJmYWNlL2NvbW1vbl9jb25zdGFu
dHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogLy8gQWJzb2x1dGUgc2VuZCB0aW1lIGlu
IFJUUCBzdHJlYW1zLgpAQCAtNDMwLDYgKzQzNCwxNzIgQEAgYm9vbCBGcmFtZU1hcmtpbmdFeHRl
bnNpb246OldyaXRlKHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4X3Q+IGRhdGEsCiAgIHJldHVybiB0cnVl
OwogfQogCisvLyBDb2xvciBzcGFjZSBpbmNsdWRpbmcgSERSIG1ldGFkYXRhIGFzIGFuIG9wdGlv
bmFsIGZpZWxkLgorLy8KKy8vIFJUUCBoZWFkZXIgZXh0ZW5zaW9uIHRvIGNhcnJ5IEhEUiBtZXRh
ZGF0YS4KKy8vIEZsb2F0IHZhbHVlcyBhcmUgdXBzY2FsZWQgYnkgYSBzdGF0aWMgZmFjdG9yIGFu
ZCB0cmFuc21pdHRlZCBhcyBpbnRlZ2Vycy4KKy8vCisvLyBEYXRhIGxheW91dCB3aXRoIEhEUiBt
ZXRhZGF0YQorLy8gICAgMCAgICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgIDIg
ICAgICAgICAgICAgICAgICAgMworLy8gICAgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQg
NSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIKKy8vICAgKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKworLy8g
ICB8ICAgICAgIElEICAgICAgfCAgIGxlbmd0aD0zMCAgICB8ICAgUHJpbWFyaWVzICAgfCAgICBU
cmFuc2ZlciAgICB8CisvLyAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKKy8vICAgfCAgICAgTWF0cml4ICAgIHwgICAg
ICBSYW5nZSAgICAgfCAgICAgICAgICAgICAgICAgbHVtaW5hbmNlX21heCAgfAorLy8gICArLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rCisvLyAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgbHVtaW5hbmNl
X21pbiAgICAgICAgICAgICAgICAgIHwKKy8vICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKworLy8gICB8ICAgICAgICAg
ICAgICBtYXN0ZXJpbmdfbWV0YWRhdGEucHJpbWFyeV9yLnggYW5kIC55ICAgICAgICAgICAgICB8
CisvLyAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSsKKy8vICAgfCAgICAgICAgICAgICAgbWFzdGVyaW5nX21ldGFkYXRh
LnByaW1hcnlfZy54IGFuZCAueSAgICAgICAgICAgICAgfAorLy8gICArLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCisvLyAg
IHwgICAgICAgICAgICAgIG1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2IueCBhbmQgLnkgICAg
ICAgICAgICAgIHwKKy8vICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKworLy8gICB8ICAgICAgICAgICAgICAgIG1hc3Rl
cmluZ19tZXRhZGF0YS53aGl0ZS54IGFuZCAueSAgICAgICAgICAgICAgICB8CisvLyAgICstKy0r
LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSsKKy8vICAgfCAgICAgbWF4X2NvbnRlbnRfbGlnaHRfbGV2ZWwgICAgfCBtYXhfZnJhbWVf
YXZlcmFnZV9saWdodF9sZXZlbCAgfAorLy8gICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCisvLworLy8gRGF0YSBsYXlv
dXQgd2l0aG91dCBIRFIgbWV0YWRhdGEKKy8vICAgIDAgICAgICAgICAgICAgICAgICAgMSAgICAg
ICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgIDMKKy8vICAgIDAgMSAyIDMgNCA1IDYg
NyA4IDkgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyCisvLyAg
ICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSsKKy8vICAgfCAgICAgICBJRCAgICAgIHwgICAgbGVuZ3RoPTQgICAgfCAgIFBy
aW1hcmllcyAgIHwgICAgVHJhbnNmZXIgICAgfAorLy8gICArLSstKy0rLSstKy0rLSstKy0rLSst
Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCisvLyAgIHwgICAg
IE1hdHJpeCAgICB8ICAgICAgUmFuZ2UgICAgIHwKKy8vICAgKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLQorCitjb25zdGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBDb2xvclNwYWNlRXh0
ZW5zaW9uOjprSWQ7Citjb25zdGV4cHIgdWludDhfdCBDb2xvclNwYWNlRXh0ZW5zaW9uOjprVmFs
dWVTaXplQnl0ZXM7Citjb25zdGV4cHIgY29uc3QgY2hhciBDb2xvclNwYWNlRXh0ZW5zaW9uOjpr
VXJpW107CisKK2Jvb2wgQ29sb3JTcGFjZUV4dGVuc2lvbjo6UGFyc2UocnRjOjpBcnJheVZpZXc8
Y29uc3QgdWludDhfdD4gZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29s
b3JTcGFjZSogY29sb3Jfc3BhY2UpIHsKKyAgUlRDX0RDSEVDSyhjb2xvcl9zcGFjZSk7CisgIGlm
IChkYXRhLnNpemUoKSAhPSBrVmFsdWVTaXplQnl0ZXMgJiYKKyAgICAgIGRhdGEuc2l6ZSgpICE9
IGtWYWx1ZVNpemVCeXRlc1dpdGhvdXRIZHJNZXRhZGF0YSkKKyAgICByZXR1cm4gZmFsc2U7CisK
KyAgc2l6ZV90IG9mZnNldCA9IDA7CisgIC8vIFJlYWQgY29sb3Igc3BhY2UgaW5mb3JtYXRpb24u
CisgIGlmICghY29sb3Jfc3BhY2UtPnNldF9wcmltYXJpZXNfZnJvbV91aW50OChkYXRhLmRhdGEo
KVtvZmZzZXQrK10pKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKCFjb2xvcl9zcGFjZS0+c2V0
X3RyYW5zZmVyX2Zyb21fdWludDgoZGF0YS5kYXRhKClbb2Zmc2V0KytdKSkKKyAgICByZXR1cm4g
ZmFsc2U7CisgIGlmICghY29sb3Jfc3BhY2UtPnNldF9tYXRyaXhfZnJvbV91aW50OChkYXRhLmRh
dGEoKVtvZmZzZXQrK10pKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKCFjb2xvcl9zcGFjZS0+
c2V0X3JhbmdlX2Zyb21fdWludDgoZGF0YS5kYXRhKClbb2Zmc2V0KytdKSkKKyAgICByZXR1cm4g
ZmFsc2U7CisKKyAgLy8gUmVhZCBIRFIgbWV0YWRhdGEgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2Ug
Y2xlYXIgaXQuCisgIGlmIChkYXRhLnNpemUoKSA9PSBrVmFsdWVTaXplQnl0ZXNXaXRob3V0SGRy
TWV0YWRhdGEpIHsKKyAgICBjb2xvcl9zcGFjZS0+c2V0X2hkcl9tZXRhZGF0YShudWxscHRyKTsK
KyAgfSBlbHNlIHsKKyAgICBIZHJNZXRhZGF0YSBoZHJfbWV0YWRhdGE7CisgICAgb2Zmc2V0ICs9
IFBhcnNlTHVtaW5hbmNlKGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5sdW1pbmFuY2VfbWF4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTHVtaW5hbmNlTWF4RGVub21pbmF0b3Ip
OworICAgIG9mZnNldCArPSBQYXJzZUx1bWluYW5jZShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRh
dGEubHVtaW5hbmNlX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0x1bWluYW5j
ZU1pbkRlbm9taW5hdG9yKTsKKyAgICBvZmZzZXQgKz0gUGFyc2VDaHJvbWF0aWNpdHkoZGF0YS5k
YXRhKCkgKyBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoZHJfbWV0
YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1hcnlfcik7CisgICAgb2Zmc2V0ICs9IFBhcnNl
Q2hyb21hdGljaXR5KGRhdGEuZGF0YSgpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2cpOwor
ICAgIG9mZnNldCArPSBQYXJzZUNocm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0
YWRhdGEucHJpbWFyeV9iKTsKKyAgICBvZmZzZXQgKz0gUGFyc2VDaHJvbWF0aWNpdHkoZGF0YS5k
YXRhKCkgKyBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoZHJfbWV0
YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLndoaXRlX3BvaW50KTsKKyAgICBoZHJfbWV0YWRhdGEu
bWF4X2NvbnRlbnRfbGlnaHRfbGV2ZWwgPQorICAgICAgICBCeXRlUmVhZGVyPHVpbnQxNl90Pjo6
UmVhZEJpZ0VuZGlhbihkYXRhLmRhdGEoKSArIG9mZnNldCk7CisgICAgb2Zmc2V0ICs9IDI7Cisg
ICAgaGRyX21ldGFkYXRhLm1heF9mcmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVsID0KKyAgICAgICAg
Qnl0ZVJlYWRlcjx1aW50MTZfdD46OlJlYWRCaWdFbmRpYW4oZGF0YS5kYXRhKCkgKyBvZmZzZXQp
OworICAgIG9mZnNldCArPSAyOworICAgIGNvbG9yX3NwYWNlLT5zZXRfaGRyX21ldGFkYXRhKCZo
ZHJfbWV0YWRhdGEpOworICB9CisgIFJUQ19EQ0hFQ0tfRVEoVmFsdWVTaXplKCpjb2xvcl9zcGFj
ZSksIG9mZnNldCk7CisgIHJldHVybiB0cnVlOworfQorCitib29sIENvbG9yU3BhY2VFeHRlbnNp
b246OldyaXRlKHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4X3Q+IGRhdGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENvbG9yU3BhY2UmIGNvbG9yX3NwYWNlKSB7CisgIFJUQ19E
Q0hFQ0soZGF0YS5zaXplKCkgPj0gVmFsdWVTaXplKGNvbG9yX3NwYWNlKSk7CisgIHNpemVfdCBv
ZmZzZXQgPSAwOworICAvLyBXcml0ZSBjb2xvciBzcGFjZSBpbmZvcm1hdGlvbi4KKyAgZGF0YS5k
YXRhKClbb2Zmc2V0KytdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oY29sb3Jfc3BhY2UucHJpbWFy
aWVzKCkpOworICBkYXRhLmRhdGEoKVtvZmZzZXQrK10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihj
b2xvcl9zcGFjZS50cmFuc2ZlcigpKTsKKyAgZGF0YS5kYXRhKClbb2Zmc2V0KytdID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oY29sb3Jfc3BhY2UubWF0cml4KCkpOworICBkYXRhLmRhdGEoKVtvZmZz
ZXQrK10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihjb2xvcl9zcGFjZS5yYW5nZSgpKTsKKworICAv
LyBXcml0ZSBIRFIgbWV0YWRhdGEgaWYgaXQgZXhpc3RzLgorICBpZiAoY29sb3Jfc3BhY2UuaGRy
X21ldGFkYXRhKCkpIHsKKyAgICBjb25zdCBIZHJNZXRhZGF0YSYgaGRyX21ldGFkYXRhID0gKmNv
bG9yX3NwYWNlLmhkcl9tZXRhZGF0YSgpOworICAgIG9mZnNldCArPSBXcml0ZUx1bWluYW5jZShk
YXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyX21l
dGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5sdW1pbmFuY2VfbWF4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrTHVtaW5hbmNlTWF4RGVub21pbmF0b3IpOworICAgIG9mZnNldCArPSBX
cml0ZUx1bWluYW5jZShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5sdW1pbmFuY2VfbWluLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTHVtaW5hbmNlTWluRGVub21pbmF0b3IpOwor
ICAgIG9mZnNldCArPSBXcml0ZUNocm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRh
ZGF0YS5wcmltYXJ5X3IpOworICAgIG9mZnNldCArPSBXcml0ZUNocm9tYXRpY2l0eShkYXRhLmRh
dGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyX21ldGFk
YXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2cpOworICAgIG9mZnNldCArPSBXcml0ZUNo
cm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2IpOworICAg
IG9mZnNldCArPSBXcml0ZUNocm9tYXRpY2l0eShkYXRhLmRhdGEoKSArIG9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0
YS53aGl0ZV9wb2ludCk7CisKKyAgICBCeXRlV3JpdGVyPHVpbnQxNl90Pjo6V3JpdGVCaWdFbmRp
YW4oZGF0YS5kYXRhKCkgKyBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhkcl9tZXRhZGF0YS5tYXhfY29udGVudF9saWdodF9sZXZlbCk7CisgICAgb2Zm
c2V0ICs9IDI7CisgICAgQnl0ZVdyaXRlcjx1aW50MTZfdD46OldyaXRlQmlnRW5kaWFuKAorICAg
ICAgICBkYXRhLmRhdGEoKSArIG9mZnNldCwgaGRyX21ldGFkYXRhLm1heF9mcmFtZV9hdmVyYWdl
X2xpZ2h0X2xldmVsKTsKKyAgICBvZmZzZXQgKz0gMjsKKyAgfQorICBSVENfRENIRUNLX0VRKFZh
bHVlU2l6ZShjb2xvcl9zcGFjZSksIG9mZnNldCk7CisgIHJldHVybiB0cnVlOworfQorCitzaXpl
X3QgQ29sb3JTcGFjZUV4dGVuc2lvbjo6UGFyc2VDaHJvbWF0aWNpdHkoCisgICAgY29uc3QgdWlu
dDhfdCogZGF0YSwKKyAgICBIZHJNYXN0ZXJpbmdNZXRhZGF0YTo6Q2hyb21hdGljaXR5KiBwKSB7
CisgIHVpbnQxNl90IGNocm9tYXRpY2l0eV94X3NjYWxlZCA9IEJ5dGVSZWFkZXI8dWludDE2X3Q+
OjpSZWFkQmlnRW5kaWFuKGRhdGEpOworICB1aW50MTZfdCBjaHJvbWF0aWNpdHlfeV9zY2FsZWQg
PQorICAgICAgQnl0ZVJlYWRlcjx1aW50MTZfdD46OlJlYWRCaWdFbmRpYW4oZGF0YSArIDIpOwor
ICBwLT54ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNocm9tYXRpY2l0eV94X3NjYWxlZCkgLyBrQ2hy
b21hdGljaXR5RGVub21pbmF0b3I7CisgIHAtPnkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY2hyb21h
dGljaXR5X3lfc2NhbGVkKSAvIGtDaHJvbWF0aWNpdHlEZW5vbWluYXRvcjsKKyAgcmV0dXJuIDQ7
ICAvLyBSZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCit9CisKK3NpemVfdCBDb2xvclNwYWNl
RXh0ZW5zaW9uOjpQYXJzZUx1bWluYW5jZShjb25zdCB1aW50OF90KiBkYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBmLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZW5vbWluYXRvcikgeworICB1aW50
MzJfdCBsdW1pbmFuY2Vfc2NhbGVkID0gQnl0ZVJlYWRlcjx1aW50MzJfdCwgMz46OlJlYWRCaWdF
bmRpYW4oZGF0YSk7CisgICpmID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGx1bWluYW5jZV9zY2FsZWQp
IC8gZGVub21pbmF0b3I7CisgIHJldHVybiAzOyAgLy8gUmV0dXJuIG51bWJlciBvZiBieXRlcyBy
ZWFkLgorfQorCitzaXplX3QgQ29sb3JTcGFjZUV4dGVuc2lvbjo6V3JpdGVDaHJvbWF0aWNpdHko
CisgICAgdWludDhfdCogZGF0YSwKKyAgICBjb25zdCBIZHJNYXN0ZXJpbmdNZXRhZGF0YTo6Q2hy
b21hdGljaXR5JiBwKSB7CisgIFJUQ19EQ0hFQ0tfR0UocC54LCAwLjBmKTsKKyAgUlRDX0RDSEVD
S19HRShwLnksIDAuMGYpOworICBCeXRlV3JpdGVyPHVpbnQxNl90Pjo6V3JpdGVCaWdFbmRpYW4o
CisgICAgICBkYXRhLCBzdGQ6OnJvdW5kKHAueCAqIGtDaHJvbWF0aWNpdHlEZW5vbWluYXRvcikp
OworICBCeXRlV3JpdGVyPHVpbnQxNl90Pjo6V3JpdGVCaWdFbmRpYW4oCisgICAgICBkYXRhICsg
Miwgc3RkOjpyb3VuZChwLnkgKiBrQ2hyb21hdGljaXR5RGVub21pbmF0b3IpKTsKKyAgcmV0dXJu
IDQ7ICAvLyBSZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCit9CisKK3NpemVfdCBDb2xv
clNwYWNlRXh0ZW5zaW9uOjpXcml0ZUx1bWluYW5jZSh1aW50OF90KiBkYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlbm9taW5hdG9yKSB7CisgIFJUQ19E
Q0hFQ0tfR0UoZiwgMC4wZik7CisgIEJ5dGVXcml0ZXI8dWludDMyX3QsIDM+OjpXcml0ZUJpZ0Vu
ZGlhbihkYXRhLCBzdGQ6OnJvdW5kKGYgKiBkZW5vbWluYXRvcikpOworICByZXR1cm4gMzsgIC8v
IFJldHVybiBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KK30KKwogYm9vbCBCYXNlUnRwU3RyaW5n
RXh0ZW5zaW9uOjpQYXJzZShydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBkYXRhLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSdHBIZWFkZXJFeHRlbnNpb24q
IHN0cikgewogICBpZiAoZGF0YS5lbXB0eSgpIHx8IGRhdGFbMF0gPT0gMCkgIC8vIFZhbGlkIHN0
cmluZyBleHRlbnNpb24gY2FuJ3QgYmUgZW1wdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
aGVhZGVyX2V4dGVuc2lvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oCmlu
ZGV4IDg0ZTk4MzE0NzlkYjNlOTRlOTk1YjZmYjY1ZmE0MDNhM2ZjY2UxYjAuLjQyYTYyMTZjN2I1
Mjk4OTJmNWJkNThkMjdjZDk0MGM4OTUwMTJkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9o
ZWFkZXJfZXh0ZW5zaW9ucy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5o
CkBAIC0xMCwxOSArMTAsMjUgQEAKICNpZm5kZWYgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQ
X0hFQURFUl9FWFRFTlNJT05TX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JU
UF9IRUFERVJfRVhURU5TSU9OU19IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8
c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcu
aCIKKyNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vY29s
b3Jfc3BhY2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29udGVudF90eXBlLmgiCisj
aW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lX21hcmtpbmcuaCIKICNpbmNsdWRlICJhcGkv
dmlkZW8vdmlkZW9fcm90YXRpb24uaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fdGltaW5n
LmgiCisjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgQWJzb2x1dGVTZW5kVGltZSB7CiAgcHVibGlj
OgorICB1c2luZyB2YWx1ZV90eXBlID0gdWludDMyX3Q7CiAgIHN0YXRpYyBjb25zdGV4cHIgUlRQ
RXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0ZW5zaW9uQWJzb2x1dGVTZW5kVGltZTsKICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRlcyA9IDM7CiAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciBrVXJpW10gPQpAQCAtNTcsNiArNjMsNyBAQCBjbGFzcyBBdWRpb0xl
dmVsIHsKIAogY2xhc3MgVHJhbnNtaXNzaW9uT2Zmc2V0IHsKICBwdWJsaWM6CisgIHVzaW5nIHZh
bHVlX3R5cGUgPSBpbnQzMl90OwogICBzdGF0aWMgY29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUg
a0lkID0ga1J0cEV4dGVuc2lvblRyYW5zbWlzc2lvblRpbWVPZmZzZXQ7CiAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDhfdCBrVmFsdWVTaXplQnl0ZXMgPSAzOwogICBzdGF0aWMgY29uc3RleHByIGNv
bnN0IGNoYXIga1VyaVtdID0gInVybjppZXRmOnBhcmFtczpydHAtaGRyZXh0OnRvZmZzZXQiOwpA
QCAtNjgsNiArNzUsNyBAQCBjbGFzcyBUcmFuc21pc3Npb25PZmZzZXQgewogCiBjbGFzcyBUcmFu
c3BvcnRTZXF1ZW5jZU51bWJlciB7CiAgcHVibGljOgorICB1c2luZyB2YWx1ZV90eXBlID0gdWlu
dDE2X3Q7CiAgIHN0YXRpYyBjb25zdGV4cHIgUlRQRXh0ZW5zaW9uVHlwZSBrSWQgPSBrUnRwRXh0
ZW5zaW9uVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXI7CiAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhf
dCBrVmFsdWVTaXplQnl0ZXMgPSAyOwogICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIga1Vy
aVtdID0KQEAgLTgwLDYgKzg4LDcgQEAgY2xhc3MgVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIgewog
CiBjbGFzcyBWaWRlb09yaWVudGF0aW9uIHsKICBwdWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUg
PSBWaWRlb1JvdGF0aW9uOwogICBzdGF0aWMgY29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUga0lk
ID0ga1J0cEV4dGVuc2lvblZpZGVvUm90YXRpb247CiAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhf
dCBrVmFsdWVTaXplQnl0ZXMgPSAxOwogICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIga1Vy
aVtdID0gInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIjsKQEAgLTk0LDYgKzEwMyw3IEBAIGNs
YXNzIFZpZGVvT3JpZW50YXRpb24gewogCiBjbGFzcyBQbGF5b3V0RGVsYXlMaW1pdHMgewogIHB1
YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IFBsYXlvdXREZWxheTsKICAgc3RhdGljIGNvbnN0
ZXhwciBSVFBFeHRlbnNpb25UeXBlIGtJZCA9IGtSdHBFeHRlbnNpb25QbGF5b3V0RGVsYXk7CiAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrVmFsdWVTaXplQnl0ZXMgPSAzOwogICBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IGNoYXIga1VyaVtdID0KQEAgLTExNyw2ICsxMjcsNyBAQCBjbGFzcyBQ
bGF5b3V0RGVsYXlMaW1pdHMgewogCiBjbGFzcyBWaWRlb0NvbnRlbnRUeXBlRXh0ZW5zaW9uIHsK
ICBwdWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUgPSBWaWRlb0NvbnRlbnRUeXBlOwogICBzdGF0
aWMgY29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUga0lkID0ga1J0cEV4dGVuc2lvblZpZGVvQ29u
dGVudFR5cGU7CiAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrVmFsdWVTaXplQnl0ZXMgPSAx
OwogICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIga1VyaVtdID0KQEAgLTEzMyw2ICsxNDQs
NyBAQCBjbGFzcyBWaWRlb0NvbnRlbnRUeXBlRXh0ZW5zaW9uIHsKIAogY2xhc3MgVmlkZW9UaW1p
bmdFeHRlbnNpb24gewogIHB1YmxpYzoKKyAgdXNpbmcgdmFsdWVfdHlwZSA9IFZpZGVvU2VuZFRp
bWluZzsKICAgc3RhdGljIGNvbnN0ZXhwciBSVFBFeHRlbnNpb25UeXBlIGtJZCA9IGtSdHBFeHRl
bnNpb25WaWRlb1RpbWluZzsKICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVC
eXRlcyA9IDEzOwogICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIga1VyaVtdID0KQEAgLTE1
NSw2ICsxNjcsNyBAQCBjbGFzcyBWaWRlb1RpbWluZ0V4dGVuc2lvbiB7CiAKIGNsYXNzIEZyYW1l
TWFya2luZ0V4dGVuc2lvbiB7CiAgcHVibGljOgorICB1c2luZyB2YWx1ZV90eXBlID0gRnJhbWVN
YXJraW5nOwogICBzdGF0aWMgY29uc3RleHByIFJUUEV4dGVuc2lvblR5cGUga0lkID0ga1J0cEV4
dGVuc2lvbkZyYW1lTWFya2luZzsKICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyIGtVcmlb
XSA9CiAgICAgICAiaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1hdnRleHQt
ZnJhbWVtYXJraW5nLTA3IjsKQEAgLTE2OSwxMCArMTgyLDQxIEBAIGNsYXNzIEZyYW1lTWFya2lu
Z0V4dGVuc2lvbiB7CiAgIHN0YXRpYyBib29sIElzU2NhbGFibGUodWludDhfdCB0ZW1wb3JhbF9p
ZCwgdWludDhfdCBsYXllcl9pZCk7CiB9OwogCitjbGFzcyBDb2xvclNwYWNlRXh0ZW5zaW9uIHsK
KyBwdWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUgPSBDb2xvclNwYWNlOworICBzdGF0aWMgY29u
c3RleHByIFJUUEV4dGVuc2lvblR5cGUga0lkID0ga1J0cEV4dGVuc2lvbkNvbG9yU3BhY2U7Cisg
IHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrVmFsdWVTaXplQnl0ZXMgPSAzMDsKKyAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50OF90IGtWYWx1ZVNpemVCeXRlc1dpdGhvdXRIZHJNZXRhZGF0YSA9IDQ7
CisgIC8vIFRPRE8od2VicnRjOjg2NTEpOiBDaGFuZ2UgdG8gYSB2YWxpZCB1cmkuCisgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgY2hhciBrVXJpW10gPSAicnRwLWNvbG9yc3BhY2UtdXJpLXBsYWNl
aG9sZGVyIjsKKworICBzdGF0aWMgYm9vbCBQYXJzZShydGM6OkFycmF5Vmlldzxjb25zdCB1aW50
OF90PiBkYXRhLAorICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlKiBjb2xvcl9zcGFjZSk7
CisgIHN0YXRpYyBzaXplX3QgVmFsdWVTaXplKGNvbnN0IENvbG9yU3BhY2UmIGNvbG9yX3NwYWNl
KSB7CisgICAgcmV0dXJuIGNvbG9yX3NwYWNlLmhkcl9tZXRhZGF0YSgpID8ga1ZhbHVlU2l6ZUJ5
dGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoga1ZhbHVlU2l6ZUJ5
dGVzV2l0aG91dEhkck1ldGFkYXRhOworICB9CisgIHN0YXRpYyBib29sIFdyaXRlKHJ0Yzo6QXJy
YXlWaWV3PHVpbnQ4X3Q+IGRhdGEsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbG9yU3Bh
Y2UmIGNvbG9yX3NwYWNlKTsKKworIHByaXZhdGU6CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtD
aHJvbWF0aWNpdHlEZW5vbWluYXRvciA9IDEwMDAwOyAgLy8gMC4wMDAxIHJlc29sdXRpb24uCisg
IHN0YXRpYyBjb25zdGV4cHIgaW50IGtMdW1pbmFuY2VNYXhEZW5vbWluYXRvciA9IDEwMDsgICAg
Ly8gMC4wMSByZXNvbHV0aW9uLgorICBzdGF0aWMgY29uc3RleHByIGludCBrTHVtaW5hbmNlTWlu
RGVub21pbmF0b3IgPSAxMDAwMDsgIC8vIDAuMDAwMSByZXNvbHV0aW9uLgorICBzdGF0aWMgc2l6
ZV90IFBhcnNlQ2hyb21hdGljaXR5KGNvbnN0IHVpbnQ4X3QqIGRhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSGRyTWFzdGVyaW5nTWV0YWRhdGE6OkNocm9tYXRpY2l0eSog
cCk7CisgIHN0YXRpYyBzaXplX3QgUGFyc2VMdW1pbmFuY2UoY29uc3QgdWludDhfdCogZGF0YSwg
ZmxvYXQqIGYsIGludCBkZW5vbWluYXRvcik7CisgIHN0YXRpYyBzaXplX3QgV3JpdGVDaHJvbWF0
aWNpdHkodWludDhfdCogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBIZHJNYXN0ZXJpbmdNZXRhZGF0YTo6Q2hyb21hdGljaXR5JiBwKTsKKyAgc3RhdGljIHNp
emVfdCBXcml0ZUx1bWluYW5jZSh1aW50OF90KiBkYXRhLCBmbG9hdCBmLCBpbnQgZGVub21pbmF0
b3IpOworfTsKKwogLy8gQmFzZSBleHRlbnNpb24gY2xhc3MgZm9yIFJUUCBoZWFkZXIgZXh0ZW5z
aW9ucyB3aGljaCBhcmUgc3RyaW5ncy4KIC8vIFN1YmNsYXNzZXMgbXVzdCBkZWZpbmVkIGtJZCBh
bmQga1VyaSBzdGF0aWMgY29uc3RleHByIG1lbWJlcnMuCiBjbGFzcyBCYXNlUnRwU3RyaW5nRXh0
ZW5zaW9uIHsKICBwdWJsaWM6CisgIHVzaW5nIHZhbHVlX3R5cGUgPSBzdGQ6OnN0cmluZzsKICAg
Ly8gU3RyaW5nIFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyBhcmUgbGltaXRlZCB0byAxNiBieXRlcyBi
ZWNhdXNlIGl0IGlzIHRoZQogICAvLyBtYXhpbXVtIGxlbmd0aCB0aGF0IGNhbiBiZSBlbmNvZGVk
IHdpdGggb25lLWJ5dGUgaGVhZGVyIGV4dGVuc2lvbnMuCiAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDhfdCBrTWF4VmFsdWVTaXplQnl0ZXMgPSAxNjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9o
ZWFkZXJfcGFyc2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9wYXJzZXIuY2MKaW5kZXggZGY2
OGY3NGRkOTM3NzIyMjMxOWQ2ZmUwYTMwZmMxYWE4MzI3Y2NiZi4uNjQ4MWE0MDNhMDQzNmEzZDNl
NDZmNDVjYzc3YjJlMmNiMTRhMTJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9w
YXJzZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9wYXJzZXIuY2MKQEAgLTksOSArOSwx
MiBAQAogICovCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJf
cGFyc2VyLmgiCiAKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwogI2luY2x1ZGUgIm1vZHVsZXMvcnRw
X3J0Y3AvaW5jbHVkZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXAuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Ny
aXRpY2Fsc2VjdGlvbi5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMjUsOCArMjgsMTAgQEAgY2xhc3MgUnRwSGVh
ZGVyUGFyc2VySW1wbCA6IHB1YmxpYyBSdHBIZWFkZXJQYXJzZXIgewogICAgICAgICAgICAgIFJU
UEhlYWRlciogaGVhZGVyKSBjb25zdCBvdmVycmlkZTsKIAogICBib29sIFJlZ2lzdGVyUnRwSGVh
ZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUgdHlwZSwgdWludDhfdCBpZCkgb3ZlcnJpZGU7
CisgIGJvb2wgUmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oUnRwRXh0ZW5zaW9uIGV4dGVuc2lv
bikgb3ZlcnJpZGU7CiAKICAgYm9vbCBEZXJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4
dGVuc2lvblR5cGUgdHlwZSkgb3ZlcnJpZGU7CisgIGJvb2wgRGVyZWdpc3RlclJ0cEhlYWRlckV4
dGVuc2lvbihSdHBFeHRlbnNpb24gZXh0ZW5zaW9uKSBvdmVycmlkZTsKIAogIHByaXZhdGU6CiAg
IHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNyaXRpY2FsX3NlY3Rpb25fOwpAQCAtNjMsNiArNjgsMTAg
QEAgYm9vbCBSdHBIZWFkZXJQYXJzZXJJbXBsOjpQYXJzZShjb25zdCB1aW50OF90KiBwYWNrZXQs
CiAgIH0KICAgcmV0dXJuIHRydWU7CiB9Citib29sIFJ0cEhlYWRlclBhcnNlckltcGw6OlJlZ2lz
dGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJ0cEV4dGVuc2lvbiBleHRlbnNpb24pIHsKKyAgcnRjOjpD
cml0U2NvcGUgY3MoJmNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgcmV0dXJuIHJ0cF9oZWFkZXJfZXh0
ZW5zaW9uX21hcF8uUmVnaXN0ZXJCeVVyaShleHRlbnNpb24uaWQsIGV4dGVuc2lvbi51cmkpOwor
fQogCiBib29sIFJ0cEhlYWRlclBhcnNlckltcGw6OlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9u
KFJUUEV4dGVuc2lvblR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBpZCkgewpAQCAtNzAsNiArNzksMTIgQEAgYm9v
bCBSdHBIZWFkZXJQYXJzZXJJbXBsOjpSZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihSVFBFeHRl
bnNpb25UeXBlIHR5cGUsCiAgIHJldHVybiBydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXBfLlJlZ2lz
dGVyQnlUeXBlKGlkLCB0eXBlKTsKIH0KIAorYm9vbCBSdHBIZWFkZXJQYXJzZXJJbXBsOjpEZXJl
Z2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJ0cEV4dGVuc2lvbiBleHRlbnNpb24pIHsKKyAgcnRj
OjpDcml0U2NvcGUgY3MoJmNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgcmV0dXJuIHJ0cF9oZWFkZXJf
ZXh0ZW5zaW9uX21hcF8uRGVyZWdpc3RlcigKKyAgICAgIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX21h
cF8uR2V0VHlwZShleHRlbnNpb24uaWQpKTsKK30KKwogYm9vbCBSdHBIZWFkZXJQYXJzZXJJbXBs
OjpEZXJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUgdHlwZSkgewog
ICBydGM6OkNyaXRTY29wZSBjcygmY3JpdGljYWxfc2VjdGlvbl8pOwogICByZXR1cm4gcnRwX2hl
YWRlcl9leHRlbnNpb25fbWFwXy5EZXJlZ2lzdGVyKHR5cGUpID09IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfcGFja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldC5jYwppbmRleCAwYjll
ZDgwYWY1NmVkODY3YTU0Yzk1ODBmY2JjYzYzNDRiM2VjZGM4Li45ZDRkY2U0ZGVhMjdlNGRiMDQ5
NTFmZmM0ZjE0ZDdmNWIwMDRmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXQuY2MKQEAgLTEwLDE2ICsxMCwxNSBAQAogCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldC5oIgogCisjaW5jbHVkZSA8
Y3N0ZGludD4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNs
dWRlICJhcGkvcnRwcGFyYW1ldGVycy5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8g
Tk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
Ynl0ZV9pby5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNp
b25zLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcmFuZG9tLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewogbmFtZXNwYWNlIHsKQEAgLTIxMiw4ICsyMTEsNyBAQCBydGM6OkFycmF5Vmlldzx1aW50OF90
PiBSdHBQYWNrZXQ6OkFsbG9jYXRlUmF3RXh0ZW5zaW9uKGludCBpZCwgc2l6ZV90IGxlbmd0aCkg
ewogICBjb25zdCBib29sIHR3b19ieXRlX2hlYWRlcl9yZXF1aXJlZCA9CiAgICAgICBpZCA+IFJ0
cEV4dGVuc2lvbjo6a09uZUJ5dGVIZWFkZXJFeHRlbnNpb25NYXhJZCB8fAogICAgICAgbGVuZ3Ro
ID4gUnRwRXh0ZW5zaW9uOjprT25lQnl0ZUhlYWRlckV4dGVuc2lvbk1heFZhbHVlU2l6ZSB8fCBs
ZW5ndGggPT0gMDsKLSAgUlRDX0NIRUNLKCF0d29fYnl0ZV9oZWFkZXJfcmVxdWlyZWQgfHwKLSAg
ICAgICAgICAgIGV4dGVuc2lvbnNfLklzTWl4ZWRPbmVUd29CeXRlSGVhZGVyU3VwcG9ydGVkKCkp
OworICBSVENfQ0hFQ0soIXR3b19ieXRlX2hlYWRlcl9yZXF1aXJlZCB8fCBleHRlbnNpb25zXy5F
eHRtYXBBbGxvd01peGVkKCkpOwogCiAgIHVpbnQxNl90IHByb2ZpbGVfaWQ7CiAgIGlmIChleHRl
bnNpb25zX3NpemVfID4gMCkgewpAQCAtMzU5LDIyICszNTcsMjAgQEAgdWludDhfdCogUnRwUGFj
a2V0OjpTZXRQYXlsb2FkU2l6ZShzaXplX3Qgc2l6ZV9ieXRlcykgewogICByZXR1cm4gV3JpdGVB
dChwYXlsb2FkX29mZnNldF8pOwogfQogCi1ib29sIFJ0cFBhY2tldDo6U2V0UGFkZGluZyh1aW50
OF90IHNpemVfYnl0ZXMsIFJhbmRvbSogcmFuZG9tKSB7Ci0gIFJUQ19EQ0hFQ0socmFuZG9tKTsK
LSAgaWYgKHBheWxvYWRfb2Zmc2V0XyArIHBheWxvYWRfc2l6ZV8gKyBzaXplX2J5dGVzID4gY2Fw
YWNpdHkoKSkgewotICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIkNhbm5vdCBzZXQgcGFkZGlu
ZyBzaXplICIgPDwgc2l6ZV9ieXRlcyA8PCAiLCBvbmx5ICIKK2Jvb2wgUnRwUGFja2V0OjpTZXRQ
YWRkaW5nKHNpemVfdCBwYWRkaW5nX2J5dGVzKSB7CisgIGlmIChwYXlsb2FkX29mZnNldF8gKyBw
YXlsb2FkX3NpemVfICsgcGFkZGluZ19ieXRlcyA+IGNhcGFjaXR5KCkpIHsKKyAgICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJDYW5ub3Qgc2V0IHBhZGRpbmcgc2l6ZSAiIDw8IHBhZGRpbmdfYnl0
ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsIG9ubHkgIgogICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgKGNhcGFjaXR5KCkgLSBwYXlsb2FkX29mZnNldF8gLSBwYXlsb2FkX3NpemVf
KQogICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBieXRlcyBsZWZ0IGluIGJ1ZmZlci4iOwog
ICAgIHJldHVybiBmYWxzZTsKICAgfQotICBwYWRkaW5nX3NpemVfID0gc2l6ZV9ieXRlczsKKyAg
cGFkZGluZ19zaXplXyA9IHJ0Yzo6ZGNoZWNrZWRfY2FzdDx1aW50OF90PihwYWRkaW5nX2J5dGVz
KTsKICAgYnVmZmVyXy5TZXRTaXplKHBheWxvYWRfb2Zmc2V0XyArIHBheWxvYWRfc2l6ZV8gKyBw
YWRkaW5nX3NpemVfKTsKICAgaWYgKHBhZGRpbmdfc2l6ZV8gPiAwKSB7CiAgICAgc2l6ZV90IHBh
ZGRpbmdfb2Zmc2V0ID0gcGF5bG9hZF9vZmZzZXRfICsgcGF5bG9hZF9zaXplXzsKICAgICBzaXpl
X3QgcGFkZGluZ19lbmQgPSBwYWRkaW5nX29mZnNldCArIHBhZGRpbmdfc2l6ZV87Ci0gICAgZm9y
IChzaXplX3Qgb2Zmc2V0ID0gcGFkZGluZ19vZmZzZXQ7IG9mZnNldCA8IHBhZGRpbmdfZW5kIC0g
MTsgKytvZmZzZXQpIHsKLSAgICAgIFdyaXRlQXQob2Zmc2V0LCByYW5kb20tPlJhbmQ8dWludDhf
dD4oKSk7Ci0gICAgfQorICAgIG1lbXNldChXcml0ZUF0KHBhZGRpbmdfb2Zmc2V0KSwgMCwgcGFk
ZGluZ19zaXplXyAtIDEpOwogICAgIFdyaXRlQXQocGFkZGluZ19lbmQgLSAxLCBwYWRkaW5nX3Np
emVfKTsKICAgICBXcml0ZUF0KDAsIGRhdGEoKVswXSB8IDB4MjApOyAgLy8gU2V0IHBhZGRpbmcg
Yml0LgogICB9IGVsc2UgewpAQCAtNTU2LDcgKzU1Miw3IEBAIHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4
X3Q+IFJ0cFBhY2tldDo6QWxsb2NhdGVFeHRlbnNpb24oRXh0ZW5zaW9uVHlwZSB0eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGVuZ3RoKSB7CiAgIC8vIFRPRE8od2VicnRjOjc5OTApOiBBZGQgc3VwcG9ydCBmb3IgZW1wdHkg
ZXh0ZW5zaW9ucyAobGVuZ3RoPT0wKS4KICAgaWYgKGxlbmd0aCA9PSAwIHx8IGxlbmd0aCA+IFJ0
cEV4dGVuc2lvbjo6a01heFZhbHVlU2l6ZSB8fAotICAgICAgKCFleHRlbnNpb25zXy5Jc01peGVk
T25lVHdvQnl0ZUhlYWRlclN1cHBvcnRlZCgpICYmCisgICAgICAoIWV4dGVuc2lvbnNfLkV4dG1h
cEFsbG93TWl4ZWQoKSAmJgogICAgICAgIGxlbmd0aCA+IFJ0cEV4dGVuc2lvbjo6a09uZUJ5dGVI
ZWFkZXJFeHRlbnNpb25NYXhWYWx1ZVNpemUpKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0K
QEAgLTU2Niw3ICs1NjIsNyBAQCBydGM6OkFycmF5Vmlldzx1aW50OF90PiBSdHBQYWNrZXQ6OkFs
bG9jYXRlRXh0ZW5zaW9uKEV4dGVuc2lvblR5cGUgdHlwZSwKICAgICAvLyBFeHRlbnNpb24gbm90
IHJlZ2lzdGVyZWQuCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KLSAgaWYgKCFleHRlbnNpb25z
Xy5Jc01peGVkT25lVHdvQnl0ZUhlYWRlclN1cHBvcnRlZCgpICYmCisgIGlmICghZXh0ZW5zaW9u
c18uRXh0bWFwQWxsb3dNaXhlZCgpICYmCiAgICAgICBpZCA+IFJ0cEV4dGVuc2lvbjo6a09uZUJ5
dGVIZWFkZXJFeHRlbnNpb25NYXhJZCkgewogICAgIHJldHVybiBudWxscHRyOwogICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0LmgKaW5k
ZXggMTVjMzg2NWIzNTk0ZGM4NzZlNDE4MDZhNDc4M2YxNzQ2MjUzZGQ3NC4uNzY2NjZiN2YxMmQ3
NjM3NTE5ZjA1MjMzOTMwOTEyM2NlMjE1ZTdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3Bh
Y2tldC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXQuaApAQCAtMTIsMTAgKzEyLDEyIEBACiAK
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAj
aW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2lu
Y2x1ZGUvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb3B5
b253cml0ZWJ1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogY2xhc3MgUmFuZG9tOwpAQCAtOTQsOCArOTYsMTEgQEAgY2xhc3Mg
UnRwUGFja2V0IHsKICAgdGVtcGxhdGUgPHR5cGVuYW1lIEV4dGVuc2lvbj4KICAgYm9vbCBIYXNF
eHRlbnNpb24oKSBjb25zdDsKIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXh0ZW5zaW9uLCB0eXBl
bmFtZS4uLiBWYWx1ZXM+Ci0gIGJvb2wgR2V0RXh0ZW5zaW9uKFZhbHVlcy4uLikgY29uc3Q7Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBFeHRlbnNpb24sIHR5cGVuYW1lIEZpcnN0VmFsdWUsIHR5cGVu
YW1lLi4uIFZhbHVlcz4KKyAgYm9vbCBHZXRFeHRlbnNpb24oRmlyc3RWYWx1ZSwgVmFsdWVzLi4u
KSBjb25zdDsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXh0ZW5zaW9uPgorICBhYnNsOjpvcHRp
b25hbDx0eXBlbmFtZSBFeHRlbnNpb246OnZhbHVlX3R5cGU+IEdldEV4dGVuc2lvbigpIGNvbnN0
OwogCiAgIC8vIFJldHVybnMgdmlldyBvZiB0aGUgcmF3IGV4dGVuc2lvbiBvciBlbXB0eSB2aWV3
IG9uIGZhaWx1cmUuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBFeHRlbnNpb24+CkBAIC0xMTEsNyAr
MTE2LDEyIEBAIGNsYXNzIFJ0cFBhY2tldCB7CiAgIHVpbnQ4X3QqIFNldFBheWxvYWRTaXplKHNp
emVfdCBzaXplX2J5dGVzKTsKICAgLy8gU2FtZSBhcyBTZXRQYXlsb2FkU2l6ZSBidXQgZG9lc24n
dCBndWFyYW50ZWUgdG8ga2VlcCBjdXJyZW50IHBheWxvYWQuCiAgIHVpbnQ4X3QqIEFsbG9jYXRl
UGF5bG9hZChzaXplX3Qgc2l6ZV9ieXRlcyk7Ci0gIGJvb2wgU2V0UGFkZGluZyh1aW50OF90IHNp
emVfYnl0ZXMsIFJhbmRvbSogcmFuZG9tKTsKKyAgUlRDX0RFUFJFQ0FURUQKKyAgYm9vbCBTZXRQ
YWRkaW5nKHVpbnQ4X3Qgc2l6ZV9ieXRlcywgUmFuZG9tKiByYW5kb20pIHsKKyAgICByZXR1cm4g
U2V0UGFkZGluZyhzaXplX2J5dGVzKTsKKyAgfQorCisgIGJvb2wgU2V0UGFkZGluZyhzaXplX3Qg
cGFkZGluZ19zaXplKTsKIAogIHByaXZhdGU6CiAgIHN0cnVjdCBFeHRlbnNpb25JbmZvIHsKQEAg
LTE3NywxMiArMTg3LDIxIEBAIGJvb2wgUnRwUGFja2V0OjpIYXNFeHRlbnNpb24oKSBjb25zdCB7
CiAgIHJldHVybiAhRmluZEV4dGVuc2lvbihFeHRlbnNpb246OmtJZCkuZW1wdHkoKTsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEV4dGVuc2lvbiwgdHlwZW5hbWUuLi4gVmFsdWVzPgotYm9vbCBS
dHBQYWNrZXQ6OkdldEV4dGVuc2lvbihWYWx1ZXMuLi4gdmFsdWVzKSBjb25zdCB7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRXh0ZW5zaW9uLCB0eXBlbmFtZSBGaXJzdFZhbHVlLCB0eXBlbmFtZS4uLiBW
YWx1ZXM+Citib29sIFJ0cFBhY2tldDo6R2V0RXh0ZW5zaW9uKEZpcnN0VmFsdWUgZmlyc3QsIFZh
bHVlcy4uLiB2YWx1ZXMpIGNvbnN0IHsKICAgYXV0byByYXcgPSBGaW5kRXh0ZW5zaW9uKEV4dGVu
c2lvbjo6a0lkKTsKICAgaWYgKHJhdy5lbXB0eSgpKQogICAgIHJldHVybiBmYWxzZTsKLSAgcmV0
dXJuIEV4dGVuc2lvbjo6UGFyc2UocmF3LCB2YWx1ZXMuLi4pOworICByZXR1cm4gRXh0ZW5zaW9u
OjpQYXJzZShyYXcsIGZpcnN0LCB2YWx1ZXMuLi4pOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RXh0ZW5zaW9uPgorYWJzbDo6b3B0aW9uYWw8dHlwZW5hbWUgRXh0ZW5zaW9uOjp2YWx1ZV90eXBl
PiBSdHBQYWNrZXQ6OkdldEV4dGVuc2lvbigpIGNvbnN0IHsKKyAgYWJzbDo6b3B0aW9uYWw8dHlw
ZW5hbWUgRXh0ZW5zaW9uOjp2YWx1ZV90eXBlPiByZXN1bHQ7CisgIGF1dG8gcmF3ID0gRmluZEV4
dGVuc2lvbihFeHRlbnNpb246OmtJZCk7CisgIGlmIChyYXcuZW1wdHkoKSB8fCAhRXh0ZW5zaW9u
OjpQYXJzZShyYXcsICZyZXN1bHQuZW1wbGFjZSgpKSkKKyAgICByZXN1bHQgPSBhYnNsOjpudWxs
b3B0OworICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXh0ZW5zaW9u
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX3BhY2tldF9oaXN0b3J5LmNjCmluZGV4IGUxMzc0ZmViNTdmY2Q5OTYxMjE1MTI4ZTExMWYy
MzM3ZWM2OGZhZTAuLjhjMWM4ZWJiYmZhZTkxY2FiNmVhMDRjNTI4YTM2ZDljOTk3NGI5Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfaGlzdG9yeS5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dHBfcGFja2V0X2hpc3RvcnkuY2MKQEAgLTk3LDYgKzk3LDE1IEBAIHZvaWQgUnRwUGFja2V0SGlz
dG9yeTo6UHV0UnRwUGFja2V0KHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tl
dCwKICAgY29uc3QgdWludDE2X3QgcnRwX3NlcV9ubyA9IHBhY2tldC0+U2VxdWVuY2VOdW1iZXIo
KTsKICAgU3RvcmVkUGFja2V0JiBzdG9yZWRfcGFja2V0ID0gcGFja2V0X2hpc3RvcnlfW3J0cF9z
ZXFfbm9dOwogICBSVENfRENIRUNLKHN0b3JlZF9wYWNrZXQucGFja2V0ID09IG51bGxwdHIpOwor
ICBpZiAoc3RvcmVkX3BhY2tldC5wYWNrZXQpIHsKKyAgICAvLyBJdCBpcyBhbiBlcnJvciBpZiB0
aGlzIGhhcHBlbi4gQnV0IGl0IGNhbiBoYXBwZW4gaWYgdGhlIHNlcXVlbmNlIG51bWJlcnMKKyAg
ICAvLyBmb3Igc29tZSByZWFzb24gcmVzdGFydCB3aXRob3V0IHRoYXQgdGhlIGhpc3RvcnkgaGFz
IGJlZW4gcmVzZXQuCisgICAgYXV0byBzaXplX2l0ZXJhdG9yID0gcGFja2V0X3NpemVfLmZpbmQo
c3RvcmVkX3BhY2tldC5wYWNrZXQtPnNpemUoKSk7CisgICAgaWYgKHNpemVfaXRlcmF0b3IgIT0g
cGFja2V0X3NpemVfLmVuZCgpICYmCisgICAgICAgIHNpemVfaXRlcmF0b3ItPnNlY29uZCA9PSBz
dG9yZWRfcGFja2V0LnBhY2tldC0+U2VxdWVuY2VOdW1iZXIoKSkgeworICAgICAgcGFja2V0X3Np
emVfLmVyYXNlKHNpemVfaXRlcmF0b3IpOworICAgIH0KKyAgfQogICBzdG9yZWRfcGFja2V0LnBh
Y2tldCA9IHN0ZDo6bW92ZShwYWNrZXQpOwogCiAgIGlmIChzdG9yZWRfcGFja2V0LnBhY2tldC0+
Y2FwdHVyZV90aW1lX21zKCkgPD0gMCkgewpAQCAtMTE2LDggKzEyNSw3IEBAIHZvaWQgUnRwUGFj
a2V0SGlzdG9yeTo6UHV0UnRwUGFja2V0KHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+
IHBhY2tldCwKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gUnRwUGFja2V0
SGlzdG9yeTo6R2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoCi0gICAgdWludDE2X3Qgc2VxdWVuY2Vf
bnVtYmVyLAotICAgIGJvb2wgdmVyaWZ5X3J0dCkgeworICAgIHVpbnQxNl90IHNlcXVlbmNlX251
bWJlcikgewogICBydGM6OkNyaXRTY29wZSBjcygmbG9ja18pOwogICBpZiAobW9kZV8gPT0gU3Rv
cmFnZU1vZGU6OmtEaXNhYmxlZCkgewogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTMwLDcgKzEz
OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IFJ0cFBhY2tldEhpc3Rvcnk6
OkdldFBhY2tldEFuZFNldFNlbmRUaW1lKAogICB9CiAKICAgU3RvcmVkUGFja2V0JiBwYWNrZXQg
PSBydHBfaXQtPnNlY29uZDsKLSAgaWYgKHZlcmlmeV9ydHQgJiYgIVZlcmlmeVJ0dChydHBfaXQt
PnNlY29uZCwgbm93X21zKSkgeworICBpZiAoIVZlcmlmeVJ0dChydHBfaXQtPnNlY29uZCwgbm93
X21zKSkgewogICAgIHJldHVybiBudWxscHRyOwogICB9CiAKQEAgLTE1MCw4ICsxNTgsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBSdHBQYWNrZXRIaXN0b3J5OjpHZXRQYWNr
ZXRBbmRTZXRTZW5kVGltZSgKIH0KIAogYWJzbDo6b3B0aW9uYWw8UnRwUGFja2V0SGlzdG9yeTo6
UGFja2V0U3RhdGU+IFJ0cFBhY2tldEhpc3Rvcnk6OkdldFBhY2tldFN0YXRlKAotICAgIHVpbnQx
Nl90IHNlcXVlbmNlX251bWJlciwKLSAgICBib29sIHZlcmlmeV9ydHQpIGNvbnN0IHsKKyAgICB1
aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIpIGNvbnN0IHsKICAgcnRjOjpDcml0U2NvcGUgY3MoJmxv
Y2tfKTsKICAgaWYgKG1vZGVfID09IFN0b3JhZ2VNb2RlOjprRGlzYWJsZWQpIHsKICAgICByZXR1
cm4gYWJzbDo6bnVsbG9wdDsKQEAgLTE2Miw3ICsxNjksNyBAQCBhYnNsOjpvcHRpb25hbDxSdHBQ
YWNrZXRIaXN0b3J5OjpQYWNrZXRTdGF0ZT4gUnRwUGFja2V0SGlzdG9yeTo6R2V0UGFja2V0U3Rh
dGUoCiAgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CiAgIH0KIAotICBpZiAodmVyaWZ5X3J0dCAm
JiAhVmVyaWZ5UnR0KHJ0cF9pdC0+c2Vjb25kLCBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygp
KSkgeworICBpZiAoIVZlcmlmeVJ0dChydHBfaXQtPnNlY29uZCwgY2xvY2tfLT5UaW1lSW5NaWxs
aXNlY29uZHMoKSkpIHsKICAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKICAgfQogCkBAIC0yMDks
OCArMjE2LDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IFJ0cFBhY2tldEhp
c3Rvcnk6OkdldEJlc3RGaXR0aW5nUGFja2V0KAogICBjb25zdCB1aW50MTZfdCBzZXFfbm8gPSB1
cHBlcl9ib3VuZF9kaWZmIDwgbG93ZXJfYm91bmRfZGlmZgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBzaXplX2l0ZXJfdXBwZXItPnNlY29uZAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiBzaXplX2l0ZXJfbG93ZXItPnNlY29uZDsKLSAgUnRwUGFja2V0VG9TZW5kKiBi
ZXN0X3BhY2tldCA9Ci0gICAgICBwYWNrZXRfaGlzdG9yeV8uZmluZChzZXFfbm8pLT5zZWNvbmQu
cGFja2V0LmdldCgpOworICBhdXRvIGhpc3RvcnlfaXQgPSBwYWNrZXRfaGlzdG9yeV8uZmluZChz
ZXFfbm8pOworICBpZiAoaGlzdG9yeV9pdCA9PSBwYWNrZXRfaGlzdG9yeV8uZW5kKCkpIHsKKyAg
ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ2FuJ3QgZmluZCBwYWNrZXQgaW4gaGlzdG9yeSB3aXRo
IHNlcV9ubyIgPDwgc2VxX25vOworICAgIFJUQ19EQ0hFQ0soZmFsc2UpOworICAgIHJldHVybiBu
dWxscHRyOworICB9CisgIGlmICghaGlzdG9yeV9pdC0+c2Vjb25kLnBhY2tldCkgeworICAgIFJU
Q19MT0coTFNfRVJST1IpIDw8ICJQYWNrZXQgcG9pbnRlciBpcyBudWxsIGluIGhpc3RvcnkgZm9y
IHNlcV9ubyIKKyAgICAgICAgICAgICAgICAgICAgICA8PCBzZXFfbm87CisgICAgUlRDX0RDSEVD
SyhmYWxzZSk7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKyAgUnRwUGFja2V0VG9TZW5kKiBi
ZXN0X3BhY2tldCA9IGhpc3RvcnlfaXQtPnNlY29uZC5wYWNrZXQuZ2V0KCk7CiAgIHJldHVybiBh
YnNsOjptYWtlX3VuaXF1ZTxSdHBQYWNrZXRUb1NlbmQ+KCpiZXN0X3BhY2tldCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfaGlzdG9yeS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3Bh
Y2tldF9oaXN0b3J5LmgKaW5kZXggMTY0NmJhN2M3NmYzYWZhNWU5MjY1ZTI2MzA5MjlhNzZmZjNk
YTA3Mi4uMDk1NDI0ZTNkNzEzMTIzYzljM2JiM2I3MDk2ZGJjZGQ1ZWE1MDc2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0b3J5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tl
dF9oaXN0b3J5LmgKQEAgLTc2LDE2ICs3NiwxMyBAQCBjbGFzcyBSdHBQYWNrZXRIaXN0b3J5IHsK
ICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gc2VuZF90aW1lX21z
KTsKIAogICAvLyBHZXRzIHN0b3JlZCBSVFAgcGFja2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGlu
cHV0IHxzZXF1ZW5jZSBudW1iZXJ8LgotICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgcGFja2V0IGlz
IG5vdCBmb3VuZC4gSWYgfHZlcmlmeV9ydHR8IGlzIHRydWUsIGRvZXNuJ3QKLSAgLy8gcmV0dXJu
IHBhY2tldCB0aGF0IHdhcyAocmUpc2VudCB0b28gcmVjZW50bHkuCisgIC8vIFJldHVybnMgbnVs
bHB0ciBpZiBwYWNrZXQgaXMgbm90IGZvdW5kIG9yIHdhcyAocmUpc2VudCB0b28gcmVjZW50bHku
CiAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IEdldFBhY2tldEFuZFNldFNlbmRU
aW1lKAotICAgICAgdWludDE2X3Qgc2VxdWVuY2VfbnVtYmVyLAotICAgICAgYm9vbCB2ZXJpZnlf
cnR0KTsKKyAgICAgIHVpbnQxNl90IHNlcXVlbmNlX251bWJlcik7CiAKICAgLy8gU2ltaWxhciB0
byBHZXRQYWNrZXRBbmRTZXRTZW5kVGltZSgpLCBidXQgb25seSByZXR1cm5zIGEgc25hcHNob3Qg
b2YgdGhlCiAgIC8vIGN1cnJlbnQgc3RhdGUgZm9yIHBhY2tldCwgYW5kIG5ldmVyIHVwZGF0ZXMg
aW50ZXJuYWwgc3RhdGUuCi0gIGFic2w6Om9wdGlvbmFsPFBhY2tldFN0YXRlPiBHZXRQYWNrZXRT
dGF0ZSh1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHZlcmlmeV9ydHQpIGNvbnN0OworICBhYnNsOjpvcHRp
b25hbDxQYWNrZXRTdGF0ZT4gR2V0UGFja2V0U3RhdGUodWludDE2X3Qgc2VxdWVuY2VfbnVtYmVy
KSBjb25zdDsKIAogICAvLyBHZXQgdGhlIHBhY2tldCAoaWYgYW55KSBmcm9tIHRoZSBoaXN0b3J5
LCB3aXRoIHNpemUgY2xvc2VzdCB0bwogICAvLyB8cGFja2V0X3NpemV8LiBUaGUgZXhhY3Qgc2l6
ZSBvZiB0aGUgcGFja2V0IGlzIG5vdCBndWFyYW50ZWVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX3BhY2tldF9oaXN0b3J5X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9oaXN0
b3J5X3VuaXR0ZXN0LmNjCmluZGV4IDg1ZTllYjI4Y2Q3NDUzYTQ2MmQyODdhNjEwZDNkNDZlNDI2
YzkwMjAuLjE0MDQzNGNiYmRlNzlhNmQxYTI1OTQyZmY4MDFlYWYxZjZkOTkzNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfaGlzdG9yeV91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfcGFja2V0X2hpc3RvcnlfdW5pdHRlc3QuY2MKQEAgLTYzLDExICs2MywxMSBAQCBURVNU
X0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIENsZWFyc0hpc3RvcnlBZnRlclNldFN0b3JlU3RhdHVz
KSB7CiAgIC8vIFN0b3JlIGEgcGFja2V0LCBidXQgd2l0aCBzZW5kLXRpbWUuIEl0IHNob3VsZCB0
aGVuIG5vdCBiZSByZW1vdmVkLgogICBoaXN0Xy5QdXRSdHBQYWNrZXQoQ3JlYXRlUnRwUGFja2V0
KGtTdGFydFNlcU51bSksIGtBbGxvd1JldHJhbnNtaXNzaW9uLAogICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6bnVsbG9wdCk7Ci0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtT
dGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUo
a1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQ2hhbmdpbmcgc3RvcmUgc3RhdHVzLCBldmVuIHRvIHRo
ZSBjdXJyZW50IG9uZSwgd2lsbCBjbGVhciB0aGUgaGlzdG9yeS4KICAgaGlzdF8uU2V0U3RvcmVQ
YWNrZXRzU3RhdHVzKFN0b3JhZ2VNb2RlOjprU3RvcmUsIDEwKTsKLSAgRVhQRUNUX0ZBTFNFKGhp
c3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNF
KGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOwogfQogCiBURVNUX0YoUnRwUGFj
a2V0SGlzdG9yeVRlc3QsIFN0YXJ0U2VxUmVzZXRBZnRlclJlc2V0KSB7CkBAIC03NSwxNiArNzUs
MTYgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBTdGFydFNlcVJlc2V0QWZ0ZXJSZXNl
dCkgewogICAvLyBTdG9yZSBhIHBhY2tldCwgYnV0IHdpdGggc2VuZC10aW1lLiBJdCBzaG91bGQg
dGhlbiBub3QgYmUgcmVtb3ZlZC4KICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tl
dChrU3RhcnRTZXFOdW0pLCBrQWxsb3dSZXRyYW5zbWlzc2lvbiwKICAgICAgICAgICAgICAgICAg
ICAgIGFic2w6Om51bGxvcHQpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShr
U3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRl
KGtTdGFydFNlcU51bSkpOwogCiAgIC8vIENoYW5naW5nIHN0b3JlIHN0YXR1cywgdG8gY2xlYXIg
dGhlIGhpc3RvcnkuCiAgIGhpc3RfLlNldFN0b3JlUGFja2V0c1N0YXR1cyhTdG9yYWdlTW9kZTo6
a1N0b3JlQW5kQ3VsbCwgMTApOwotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUo
a1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3Rh
dGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQWRkIGEgbmV3IHBhY2tldC4KICAgaGlzdF8uUHV0
UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChrU3RhcnRTZXFOdW0gKyAxKSwga0FsbG93UmV0cmFu
c21pc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpudWxsb3B0KTsKLSAgRVhQRUNU
X1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtICsgMSwgZmFsc2UpKTsKKyAg
RVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtICsgMSkpOwogCiAg
IC8vIEFkdmFuY2UgdGltZSBwYXN0IHdoZXJlIHBhY2tldCBleHBpcmVzLgogICBmYWtlX2Nsb2Nr
Xy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygKQEAgLTk0LDkgKzk0LDkgQEAgVEVTVF9GKFJ0cFBh
Y2tldEhpc3RvcnlUZXN0LCBTdGFydFNlcVJlc2V0QWZ0ZXJSZXNldCkgewogICAvLyBBZGQgb25l
IG1vcmUgcGFja2V0IGFuZCB2ZXJpZnkgbm8gc3RhdGUgbGVmdCBmcm9tIHBhY2tldCBiZWZvcmUg
cmVzZXQuCiAgIGhpc3RfLlB1dFJ0cFBhY2tldChDcmVhdGVSdHBQYWNrZXQoVG8xNnUoa1N0YXJ0
U2VxTnVtICsgMikpLAogICAgICAgICAgICAgICAgICAgICAga0FsbG93UmV0cmFuc21pc3Npb24s
IGFic2w6Om51bGxvcHQpOwotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0
YXJ0U2VxTnVtLCBmYWxzZSkpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShr
U3RhcnRTZXFOdW0gKyAxLCBmYWxzZSkpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRT
dGF0ZShUbzE2dShrU3RhcnRTZXFOdW0gKyAyKSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhp
c3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5H
ZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAxKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdl
dFBhY2tldFN0YXRlKFRvMTZ1KGtTdGFydFNlcU51bSArIDIpKSk7CiB9CiAKIFRFU1RfRihSdHBQ
YWNrZXRIaXN0b3J5VGVzdCwgTm9TdG9yZVN0YXR1cykgewpAQCAtMTA0LDIxICsxMDQsMjEgQEAg
VEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBOb1N0b3JlU3RhdHVzKSB7CiAgIHN0ZDo6dW5p
cXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tldCA9IENyZWF0ZVJ0cFBhY2tldChrU3RhcnRT
ZXFOdW0pOwogICBoaXN0Xy5QdXRSdHBQYWNrZXQoc3RkOjptb3ZlKHBhY2tldCksIGtBbGxvd1Jl
dHJhbnNtaXNzaW9uLCBhYnNsOjpudWxsb3B0KTsKICAgLy8gUGFja2V0IHNob3VsZCBub3QgYmUg
c3RvcmVkLgotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVt
LCBmYWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2Vx
TnVtKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgR2V0UnRwUGFja2V0X05v
dFN0b3JlZCkgewogICBoaXN0Xy5TZXRTdG9yZVBhY2tldHNTdGF0dXMoU3RvcmFnZU1vZGU6OmtT
dG9yZSwgMTApOwotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoMCwgZmFsc2Up
KTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKDApKTsKIH0KIAogVEVTVF9G
KFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBQdXRSdHBQYWNrZXQpIHsKICAgaGlzdF8uU2V0U3RvcmVQ
YWNrZXRzU3RhdHVzKFN0b3JhZ2VNb2RlOjprU3RvcmUsIDEwKTsKICAgc3RkOjp1bmlxdWVfcHRy
PFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0ID0gQ3JlYXRlUnRwUGFja2V0KGtTdGFydFNlcU51bSk7
CiAKLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFs
c2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkp
OwogICBoaXN0Xy5QdXRSdHBQYWNrZXQoc3RkOjptb3ZlKHBhY2tldCksIGtBbGxvd1JldHJhbnNt
aXNzaW9uLCBhYnNsOjpudWxsb3B0KTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3Rh
dGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRT
dGF0ZShrU3RhcnRTZXFOdW0pKTsKIH0KIAogVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBH
ZXRSdHBQYWNrZXQpIHsKQEAgLTEzMCw3ICsxMzAsNyBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9y
eVRlc3QsIEdldFJ0cFBhY2tldCkgewogICBoaXN0Xy5QdXRSdHBQYWNrZXQoc3RkOjptb3ZlKHBh
Y2tldCksIGtBbGxvd1JldHJhbnNtaXNzaW9uLCBhYnNsOjpudWxsb3B0KTsKIAogICBzdGQ6OnVu
aXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXRfb3V0ID0KLSAgICAgIGhpc3RfLkdldFBh
Y2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSwgZmFsc2UpOworICAgICAgaGlzdF8uR2V0
UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKTsKICAgRVhQRUNUX1RSVUUocGFja2V0
X291dCk7CiAgIEVYUEVDVF9FUShidWZmZXIsIHBhY2tldF9vdXQtPkJ1ZmZlcigpKTsKICAgRVhQ
RUNUX0VRKGNhcHR1cmVfdGltZV9tcywgcGFja2V0X291dC0+Y2FwdHVyZV90aW1lX21zKCkpOwpA
QCAtMTQ2LDcgKzE0Niw3IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgTm9DYXB0dXJl
VGltZSkgewogICBoaXN0Xy5QdXRSdHBQYWNrZXQoc3RkOjptb3ZlKHBhY2tldCksIGtBbGxvd1Jl
dHJhbnNtaXNzaW9uLCBhYnNsOjpudWxsb3B0KTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFj
a2V0VG9TZW5kPiBwYWNrZXRfb3V0ID0KLSAgICAgIGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRU
aW1lKGtTdGFydFNlcU51bSwgZmFsc2UpOworICAgICAgaGlzdF8uR2V0UGFja2V0QW5kU2V0U2Vu
ZFRpbWUoa1N0YXJ0U2VxTnVtKTsKICAgRVhQRUNUX1RSVUUocGFja2V0X291dCk7CiAgIEVYUEVD
VF9FUShidWZmZXIsIHBhY2tldF9vdXQtPkJ1ZmZlcigpKTsKICAgRVhQRUNUX0VRKGNhcHR1cmVf
dGltZV9tcywgcGFja2V0X291dC0+Y2FwdHVyZV90aW1lX21zKCkpOwpAQCAtMTYxLDE5ICsxNjEs
MjEgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBEb250UmV0cmFuc21pdCkgewogCiAg
IC8vIEdldCB0aGUgcGFja2V0IGFuZCB2ZXJpZnkgZGF0YS4KICAgc3RkOjp1bmlxdWVfcHRyPFJ0
cFBhY2tldFRvU2VuZD4gcGFja2V0X291dDsKLSAgcGFja2V0X291dCA9IGhpc3RfLkdldFBhY2tl
dEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSwgZmFsc2UpOworICBwYWNrZXRfb3V0ID0gaGlz
dF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKTsKICAgQVNTRVJUX1RSVUUo
cGFja2V0X291dCk7CiAgIEVYUEVDVF9FUShidWZmZXIuc2l6ZSgpLCBwYWNrZXRfb3V0LT5zaXpl
KCkpOwogICBFWFBFQ1RfRVEoY2FwdHVyZV90aW1lX21zLCBwYWNrZXRfb3V0LT5jYXB0dXJlX3Rp
bWVfbXMoKSk7CiAKICAgLy8gTm9uLXJldHJhbnNtaXR0YWJsZSBwYWNrZXRzIGFyZSBpbW1lZGlh
dGVseSByZW1vdmVkLCBzbyBnZXR0aW5nIGluIGFnYWluCiAgIC8vIHNob3VsZCBmYWlsLgotICBF
WFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCBm
YWxzZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0
YXJ0U2VxTnVtKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgUGFja2V0U3Rh
dGVJc0NvcnJlY3QpIHsKICAgY29uc3QgdWludDMyX3Qga1NzcmMgPSA5MjM4NDc2MjsKKyAgY29u
c3QgaW50NjRfdCBrUnR0TXMgPSAxMDA7CiAgIGhpc3RfLlNldFN0b3JlUGFja2V0c1N0YXR1cyhT
dG9yYWdlTW9kZTo6a1N0b3JlQW5kQ3VsbCwgMTApOworICBoaXN0Xy5TZXRSdHQoa1J0dE1zKTsK
ICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0ID0gQ3JlYXRlUnRwUGFj
a2V0KGtTdGFydFNlcU51bSk7CiAgIHBhY2tldC0+U2V0U3NyYyhrU3NyYyk7CiAgIHBhY2tldC0+
U2V0UGF5bG9hZFNpemUoMTIzNCk7CkBAIC0xODMsNyArMTg1LDcgQEAgVEVTVF9GKFJ0cFBhY2tl
dEhpc3RvcnlUZXN0LCBQYWNrZXRTdGF0ZUlzQ29ycmVjdCkgewogICAgICAgICAgICAgICAgICAg
ICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwogCiAgIGFic2w6Om9wdGlvbmFs
PFJ0cFBhY2tldEhpc3Rvcnk6OlBhY2tldFN0YXRlPiBzdGF0ZSA9Ci0gICAgICBoaXN0Xy5HZXRQ
YWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKTsKKyAgICAgIGhpc3RfLkdldFBhY2tldFN0
YXRlKGtTdGFydFNlcU51bSk7CiAgIEFTU0VSVF9UUlVFKHN0YXRlKTsKICAgRVhQRUNUX0VRKHN0
YXRlLT5ydHBfc2VxdWVuY2VfbnVtYmVyLCBrU3RhcnRTZXFOdW0pOwogICBFWFBFQ1RfRVEoc3Rh
dGUtPnNlbmRfdGltZV9tcywgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwpAQCAt
MTkzLDkgKzE5NSwxMCBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFBhY2tldFN0YXRl
SXNDb3JyZWN0KSB7CiAgIEVYUEVDVF9FUShzdGF0ZS0+dGltZXNfcmV0cmFuc21pdHRlZCwgMHUp
OwogCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEpOwotICBFWFBFQ1Rf
VFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7
CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51
bSkpOworICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrUnR0TXMgKyAxKTsK
IAotICBzdGF0ZSA9IGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpOwor
ICBzdGF0ZSA9IGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSk7CiAgIEFTU0VSVF9U
UlVFKHN0YXRlKTsKICAgRVhQRUNUX0VRKHN0YXRlLT50aW1lc19yZXRyYW5zbWl0dGVkLCAxdSk7
CiB9CkBAIC0yMTEsNyArMjE0LDcgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBNaW5S
ZXNlbmRUaW1lV2l0aFBhY2VyKSB7CiAgIGhpc3RfLlB1dFJ0cFBhY2tldChzdGQ6Om1vdmUocGFj
a2V0KSwga0FsbG93UmV0cmFuc21pc3Npb24sIGFic2w6Om51bGxvcHQpOwogCiAgIC8vIEZpcnN0
IHRyYW5zbWlzc2lvbjogVGltZVRvU2VuZFBhY2tldCgpIGNhbGwgZnJvbSBwYWNlci4KLSAgRVhQ
RUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCBmYWxz
ZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRT
ZXFOdW0pKTsKIAogICAvLyBGaXJzdCByZXRyYW5zbWlzc2lvbiAtIGFsbG93IGVhcmx5IHJldHJh
bnNtaXNzaW9uLgogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcygxKTsKQEAg
LTIyMSwyNiArMjI0LDI0IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgTWluUmVzZW5k
VGltZVdpdGhQYWNlcikgewogICAvLyAgICBwYWNrZXQgaXMgdGhlcmUgYW5kIHZlcmlmeSBSVFQg
Y29uc3RyYWludHMuIFRoZW4gd2UgdXNlIHRoZSBzc3JjCiAgIC8vICAgIGFuZCBzZXF1ZW5jZSBu
dW1iZXIgdG8gZW5xdWV1ZSB0aGUgcmV0cmFuc21pc3Npb24gaW4gdGhlIHBhY2VyCiAgIC8vIDIp
IFdoZW4gdGhlIHBhY2VyIGRldGVybWluZXMgdGhhdCBpdCBpcyB0aW1lIHRvIHNlbmQgdGhlIHBh
Y2tldCwgaXQgY2FsbHMKLSAgLy8gICAgR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoKS4gVGhpcyB0
aW1lIHdlIGRvIG5vdCBuZWVkIHRvIHZlcmlmeSBSVFQgYXMKLSAgLy8gICAgaGFzIHRoYXQgaGFz
IGFscmVhZHkgYmVlbiBkb25lLgorICAvLyAgICBHZXRQYWNrZXRBbmRTZXRTZW5kVGltZSgpLgog
ICBhYnNsOjpvcHRpb25hbDxSdHBQYWNrZXRIaXN0b3J5OjpQYWNrZXRTdGF0ZT4gcGFja2V0X3N0
YXRlID0KLSAgICAgIGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgLyp2ZXJpZnlf
cnR0PSovdHJ1ZSk7CisgICAgICBoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pOwog
ICBFWFBFQ1RfVFJVRShwYWNrZXRfc3RhdGUpOwogICBFWFBFQ1RfRVEobGVuLCBwYWNrZXRfc3Rh
dGUtPnBheWxvYWRfc2l6ZSk7CiAgIEVYUEVDVF9FUShjYXB0dXJlX3RpbWVfbXMsIHBhY2tldF9z
dGF0ZS0+Y2FwdHVyZV90aW1lX21zKTsKIAogICAvLyBSZXRyYW5zbWlzc2lvbiB3YXMgYWxsb3dl
ZCwgbmV4dCBzZW5kIGl0IGZyb20gcGFjZXIuCi0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tl
dEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyp2ZXJpZnlfcnR0PSovZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUo
aGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gU2Vj
b25kIHJldHJhbnNtaXNzaW9uIC0gYWR2YW5jZSB0aW1lIHRvIGp1c3QgYmVmb3JlIHJldHJhbnNt
aXNzaW9uIE9LLgogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrTWluUmV0
cmFuc21pdEludGVydmFsTXMgLSAxKTsKLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0
YXRlKGtTdGFydFNlcU51bSwgLyp2ZXJpZnlfcnR0PSovdHJ1ZSkpOworICBFWFBFQ1RfRkFMU0Uo
aGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQWR2YW5jZSB0aW1l
IHRvIGp1c3QgYWZ0ZXIgcmV0cmFuc21pc3Npb24gT0suCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VU
aW1lTWlsbGlzZWNvbmRzKDEpOwotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShr
U3RhcnRTZXFOdW0sIC8qdmVyaWZ5X3J0dD0qL3RydWUpKTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8u
R2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1Rf
VFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKKyAgRVhQRUNUX1RSVUUo
aGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtKSk7CiB9CiAKIFRFU1Rf
RihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgTWluUmVzZW5kVGltZVdpdGhvdXRQYWNlcikgewpAQCAt
MjU2LDE4ICsyNTcsMTggQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBNaW5SZXNlbmRU
aW1lV2l0aG91dFBhY2VyKSB7CiAKICAgLy8gRmlyc3QgcmV0cmFuc21pc3Npb24gLSBhbGxvdyBl
YXJseSByZXRyYW5zbWlzc2lvbi4KICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29u
ZHMoMSk7Ci0gIHBhY2tldCA9IGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNl
cU51bSwgdHJ1ZSk7CisgIHBhY2tldCA9IGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtT
dGFydFNlcU51bSk7CiAgIEVYUEVDVF9UUlVFKHBhY2tldCk7CiAgIEVYUEVDVF9FUShsZW4sIHBh
Y2tldC0+c2l6ZSgpKTsKICAgRVhQRUNUX0VRKGNhcHR1cmVfdGltZV9tcywgcGFja2V0LT5jYXB0
dXJlX3RpbWVfbXMoKSk7CiAKICAgLy8gU2Vjb25kIHJldHJhbnNtaXNzaW9uIC0gYWR2YW5jZSB0
aW1lIHRvIGp1c3QgYmVmb3JlIHJldHJhbnNtaXNzaW9uIE9LLgogICBmYWtlX2Nsb2NrXy5BZHZh
bmNlVGltZU1pbGxpc2Vjb25kcyhrTWluUmV0cmFuc21pdEludGVydmFsTXMgLSAxKTsKLSAgRVhQ
RUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSwgdHJ1
ZSkpOworICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0
U2VxTnVtKSk7CiAKICAgLy8gQWR2YW5jZSB0aW1lIHRvIGp1c3QgYWZ0ZXIgcmV0cmFuc21pc3Np
b24gT0suCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEpOwotICBFWFBF
Q1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0sIHRydWUp
KTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2Vx
TnVtKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgUmVtb3Zlc09sZGVzdFNl
bnRQYWNrZXRXaGVuQXRNYXhTaXplKSB7CkBAIC0yODksNyArMjkwLDcgQEAgVEVTVF9GKFJ0cFBh
Y2tldEhpc3RvcnlUZXN0LCBSZW1vdmVzT2xkZXN0U2VudFBhY2tldFdoZW5BdE1heFNpemUpIHsK
ICAgfQogCiAgIC8vIEZpcnN0IHBhY2tldCBzaG91bGQgc3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVD
VF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQ
RUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gSGlz
dG9yeSBpcyBmdWxsLCBvbGRlc3Qgb25lIHNob3VsZCBiZSBvdmVyd3JpdHRlbi4KICAgc3RkOjp1
bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gcGFja2V0ID0KQEAgLTI5OCw4ICsyOTksOCBAQCBU
RVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFJlbW92ZXNPbGRlc3RTZW50UGFja2V0V2hlbkF0
TWF4U2l6ZSkgewogICAgICAgICAgICAgICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlz
ZWNvbmRzKCkpOwogCiAgIC8vIE9sZGVzdCBwYWNrZXQgc2hvdWxkIGJlIGdvbmUsIGJ1dCBwYWNr
ZXQgYWZ0ZXIgdGhhbiBvbmUgc3RpbGwgcHJlc2VudC4KLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdl
dFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8u
R2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtICsgMSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNF
KGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOworICBFWFBFQ1RfVFJVRShoaXN0
Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAxKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNr
ZXRIaXN0b3J5VGVzdCwgUmVtb3Zlc09sZGVzdFBhY2tldFdoZW5BdE1heENhcGFjaXR5KSB7CkBA
IC0zMTcsNyArMzE4LDcgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBSZW1vdmVzT2xk
ZXN0UGFja2V0V2hlbkF0TWF4Q2FwYWNpdHkpIHsKICAgfQogCiAgIC8vIEZpcnN0IHBhY2tldCBz
aG91bGQgc3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRl
KGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3Rh
dGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gSGlzdG9yeSBpcyBmdWxsLCBvbGRlc3Qgb25lIHNo
b3VsZCBiZSBvdmVyd3JpdHRlbi4KICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4g
cGFja2V0ID0KQEAgLTMyNiw4ICszMjcsOCBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3Qs
IFJlbW92ZXNPbGRlc3RQYWNrZXRXaGVuQXRNYXhDYXBhY2l0eSkgewogICAgICAgICAgICAgICAg
ICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwogCiAgIC8vIE9sZGVzdCBw
YWNrZXQgc2hvdWxkIGJlIGdvbmUsIGJ1dCBwYWNrZXQgYWZ0ZXIgdGhhbiBvbmUgc3RpbGwgcHJl
c2VudC4KLSAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwg
ZmFsc2UpKTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVt
ICsgMSwgZmFsc2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFy
dFNlcU51bSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFO
dW0gKyAxKSk7CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgRG9udFJlbW92ZVVu
c2VudFBhY2tldHMpIHsKQEAgLTM0MywyNSArMzQ0LDI1IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0
b3J5VGVzdCwgRG9udFJlbW92ZVVuc2VudFBhY2tldHMpIHsKICAgZmFrZV9jbG9ja18uQWR2YW5j
ZVRpbWVNaWxsaXNlY29uZHMoUnRwUGFja2V0SGlzdG9yeTo6a01pblBhY2tldER1cmF0aW9uTXMp
OwogCiAgIC8vIEZpcnN0IHBhY2tldCBzaG91bGQgc3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVDVF9U
UlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNU
X1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gSGlzdG9y
eSBpcyBmdWxsLCBidXQgb2xkIHBhY2tldHMgbm90IHNlbnQsIHNvIGFsbG93IGV4cGFuc2lvbi4K
ICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChUbzE2dShrU3RhcnRTZXFOdW0g
KyBrTWF4TnVtUGFja2V0cykpLAogICAgICAgICAgICAgICAgICAgICAga0FsbG93UmV0cmFuc21p
c3Npb24sIGZha2VfY2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKLSAgRVhQRUNUX1RSVUUo
aGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfVFJV
RShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIAogICAvLyBTZXQgYWxsIHBh
Y2tldCBhcyBzZW50IGFuZCBhZHZhbmNlIHRpbWUgcGFzdCBtaW4gcGFja2V0IGR1cmF0aW9uIHRp
bWUsCiAgIC8vIG90aGVyd2lzZSBwYWNrZXRzIHRpbGwgc3RpbGwgYmUgcHJldmVudGVkIGZyb20g
YmVpbmcgcmVtb3ZlZC4KICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPD0ga01heE51bVBhY2tldHM7
ICsraSkgewotICAgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKFRv
MTZ1KGtTdGFydFNlcU51bSArIGkpLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVFKGhpc3RfLkdl
dFBhY2tldEFuZFNldFNlbmRUaW1lKFRvMTZ1KGtTdGFydFNlcU51bSArIGkpKSk7CiAgIH0KICAg
ZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoUnRwUGFja2V0SGlzdG9yeTo6a01p
blBhY2tldER1cmF0aW9uTXMpOwogICAvLyBBZGQgYSBuZXcgcGFja2V0LCB0aGlzIG1lYW5zIHRo
ZSB0d28gb2xkZXN0IG9uZXMgd2lsbCBiZSBjdWxsZWQuCiAgIGhpc3RfLlB1dFJ0cFBhY2tldChD
cmVhdGVSdHBQYWNrZXQoVG8xNnUoa1N0YXJ0U2VxTnVtICsga01heE51bVBhY2tldHMgKyAxKSks
CiAgICAgICAgICAgICAgICAgICAgICBrQWxsb3dSZXRyYW5zbWlzc2lvbiwgZmFrZV9jbG9ja18u
VGltZUluTWlsbGlzZWNvbmRzKCkpOwotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0U3Rh
dGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOwotICBFWFBFQ1RfRkFMU0UoaGlzdF8uR2V0UGFja2V0
U3RhdGUoa1N0YXJ0U2VxTnVtICsgMSwgZmFsc2UpKTsKLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0
UGFja2V0U3RhdGUoVG8xNnUoa1N0YXJ0U2VxTnVtICsgMiksIGZhbHNlKSk7CisgIEVYUEVDVF9G
QUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKKyAgRVhQRUNUX0ZBTFNF
KGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSArIDEpKTsKKyAgRVhQRUNUX1RSVUUo
aGlzdF8uR2V0UGFja2V0U3RhdGUoVG8xNnUoa1N0YXJ0U2VxTnVtICsgMikpKTsKIH0KIAogVEVT
VF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBEb250UmVtb3ZlVG9vUmVjZW50bHlUcmFuc21pdHRl
ZFBhY2tldHMpIHsKQEAgLTM3OCwxNSArMzc5LDE1IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5
VGVzdCwgRG9udFJlbW92ZVRvb1JlY2VudGx5VHJhbnNtaXR0ZWRQYWNrZXRzKSB7CiAgIGhpc3Rf
LlB1dFJ0cFBhY2tldChDcmVhdGVSdHBQYWNrZXQoa1N0YXJ0U2VxTnVtICsgMSksIGtBbGxvd1Jl
dHJhbnNtaXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWls
bGlzZWNvbmRzKCkpOwogICAvLyBGaXJzdCBwYWNrZXQgc2hvdWxkIHN0aWxsIGJlIHRoZXJlLgot
ICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7
CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOwogCiAg
IC8vIEFkdmFuY2UgdGltZSB0byB3aGVyZSBwYWNrZXQgd2lsbCBiZSBlbGlnaWJsZSBmb3IgcmVt
b3ZhbCBhbmQgdHJ5IGFnYWluLgogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25k
cygxKTsKICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChUbzE2dShrU3RhcnRT
ZXFOdW0gKyAyKSksCiAgICAgICAgICAgICAgICAgICAgICBrQWxsb3dSZXRyYW5zbWlzc2lvbiwg
ZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwogICAvLyBGaXJzdCBwYWNrZXQgc2hv
dWxkIG5vIGJlIGdvbmUsIGJ1dCBuZXh0IG9uZSBzdGlsbCB0aGVyZS4KLSAgRVhQRUNUX0ZBTFNF
KGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKLSAgRVhQRUNUX1RS
VUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtICsgMSwgZmFsc2UpKTsKKyAgRVhQ
RUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOworICBFWFBFQ1Rf
VFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAxKSk7CiB9CiAKIFRFU1Rf
RihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgRG9udFJlbW92ZVRvb1JlY2VudGx5VHJhbnNtaXR0ZWRQ
YWNrZXRzSGlnaFJ0dCkgewpAQCAtNDA3LDE1ICs0MDgsMTUgQEAgVEVTVF9GKFJ0cFBhY2tldEhp
c3RvcnlUZXN0LCBEb250UmVtb3ZlVG9vUmVjZW50bHlUcmFuc21pdHRlZFBhY2tldHNIaWdoUnR0
KSB7CiAgIGhpc3RfLlB1dFJ0cFBhY2tldChDcmVhdGVSdHBQYWNrZXQoa1N0YXJ0U2VxTnVtICsg
MSksIGtBbGxvd1JldHJhbnNtaXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgZmFrZV9jbG9j
a18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwogICAvLyBGaXJzdCBwYWNrZXQgc2hvdWxkIHN0aWxs
IGJlIHRoZXJlLgotICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFO
dW0sIGZhbHNlKSk7CisgIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNl
cU51bSkpOwogCiAgIC8vIEFkdmFuY2UgdGltZSB0byB3aGVyZSBwYWNrZXQgd2lsbCBiZSBlbGln
aWJsZSBmb3IgcmVtb3ZhbCBhbmQgdHJ5IGFnYWluLgogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGlt
ZU1pbGxpc2Vjb25kcygxKTsKICAgaGlzdF8uUHV0UnRwUGFja2V0KENyZWF0ZVJ0cFBhY2tldChU
bzE2dShrU3RhcnRTZXFOdW0gKyAyKSksCiAgICAgICAgICAgICAgICAgICAgICBrQWxsb3dSZXRy
YW5zbWlzc2lvbiwgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwogICAvLyBGaXJz
dCBwYWNrZXQgc2hvdWxkIG5vIGJlIGdvbmUsIGJ1dCBuZXh0IG9uZSBzdGlsbCB0aGVyZS4KLSAg
RVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsK
LSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtICsgMSwgZmFs
c2UpKTsKKyAgRVhQRUNUX0ZBTFNFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkp
OworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0gKyAxKSk7
CiB9CiAKIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwgUmVtb3Zlc09sZFdpdGhDdWxsaW5n
KSB7CkBAIC00MzEsMTQgKzQzMiwxNCBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsIFJl
bW92ZXNPbGRXaXRoQ3VsbGluZykgewogICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vj
b25kcyhrTWF4UGFja2V0RHVyYXRpb25NcyAtIDEpOwogCiAgIC8vIEZpcnN0IHBhY2tldCBzaG91
bGQgc3RpbGwgYmUgdGhlcmUuCi0gIEVYUEVDVF9UUlVFKGhpc3RfLkdldFBhY2tldFN0YXRlKGtT
dGFydFNlcU51bSwgZmFsc2UpKTsKKyAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUo
a1N0YXJ0U2VxTnVtKSk7CiAKICAgLy8gQWR2YW5jZSB0byB3aGVyZSBwYWNrZXQgY2FuIGJlIGN1
bGxlZCwgZXZlbiBpZiBidWZmZXIgaXMgbm90IGZ1bGwuCiAgIGZha2VfY2xvY2tfLkFkdmFuY2VU
aW1lTWlsbGlzZWNvbmRzKDEpOwogICBoaXN0Xy5QdXRSdHBQYWNrZXQoQ3JlYXRlUnRwUGFja2V0
KGtTdGFydFNlcU51bSArIDEpLCBrQWxsb3dSZXRyYW5zbWlzc2lvbiwKICAgICAgICAgICAgICAg
ICAgICAgIGZha2VfY2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKIAotICBFWFBFQ1RfRkFM
U0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1Rf
RkFMU0UoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0YXJ0U2VxTnVtKSk7CiB9CiAKIFRFU1RfRihS
dHBQYWNrZXRIaXN0b3J5VGVzdCwgUmVtb3Zlc09sZFdpdGhDdWxsaW5nSGlnaFJ0dCkgewpAQCAt
NDU3LDE0ICs0NTgsMTQgQEAgVEVTVF9GKFJ0cFBhY2tldEhpc3RvcnlUZXN0LCBSZW1vdmVzT2xk
V2l0aEN1bGxpbmdIaWdoUnR0KSB7CiAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNv
bmRzKGtNYXhQYWNrZXREdXJhdGlvbk1zIC0gMSk7CiAKICAgLy8gRmlyc3QgcGFja2V0IHNob3Vs
ZCBzdGlsbCBiZSB0aGVyZS4KLSAgRVhQRUNUX1RSVUUoaGlzdF8uR2V0UGFja2V0U3RhdGUoa1N0
YXJ0U2VxTnVtLCBmYWxzZSkpOworICBFWFBFQ1RfVFJVRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShr
U3RhcnRTZXFOdW0pKTsKIAogICAvLyBBZHZhbmNlIHRvIHdoZXJlIHBhY2tldCBjYW4gYmUgY3Vs
bGVkLCBldmVuIGlmIGJ1ZmZlciBpcyBub3QgZnVsbC4KICAgZmFrZV9jbG9ja18uQWR2YW5jZVRp
bWVNaWxsaXNlY29uZHMoMSk7CiAgIGhpc3RfLlB1dFJ0cFBhY2tldChDcmVhdGVSdHBQYWNrZXQo
a1N0YXJ0U2VxTnVtICsgMSksIGtBbGxvd1JldHJhbnNtaXNzaW9uLAogICAgICAgICAgICAgICAg
ICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwogCi0gIEVYUEVDVF9GQUxT
RShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0sIGZhbHNlKSk7CisgIEVYUEVDVF9G
QUxTRShoaXN0Xy5HZXRQYWNrZXRTdGF0ZShrU3RhcnRTZXFOdW0pKTsKIH0KIAogVEVTVF9GKFJ0
cFBhY2tldEhpc3RvcnlUZXN0LCBHZXRCZXN0Rml0dGluZ1BhY2tldCkgewpAQCAtNTAzLDcgKzUw
NCw3IEBAIFRFU1RfRihSdHBQYWNrZXRIaXN0b3J5VGVzdCwKICAgQVNTRVJUX1RIQVQocGFja2V0
LCA6OnRlc3Rpbmc6Ok5vdE51bGwoKSk7CiAKICAgLy8gU2VuZCB0aGUgcGFja2V0IGFuZCBhZHZh
bmNlIHRpbWUgcGFzdCB3aGVyZSBwYWNrZXQgZXhwaXJlcy4KLSAgQVNTRVJUX1RIQVQoaGlzdF8u
R2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0YXJ0U2VxTnVtLCBmYWxzZSksCisgIEFTU0VSVF9U
SEFUKGhpc3RfLkdldFBhY2tldEFuZFNldFNlbmRUaW1lKGtTdGFydFNlcU51bSksCiAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6Tm90TnVsbCgpKTsKICAgZmFrZV9jbG9ja18uQWR2YW5jZVRpbWVN
aWxsaXNlY29uZHMoCiAgICAgICBSdHBQYWNrZXRIaXN0b3J5OjprUGFja2V0Q3VsbGluZ0RlbGF5
RmFjdG9yICoKQEAgLTUxMyw3ICs1MTQsNyBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3Qs
CiAgIHBhY2tldC0+U2V0UGF5bG9hZFNpemUoMTAwKTsKICAgaGlzdF8uUHV0UnRwUGFja2V0KHN0
ZDo6bW92ZShwYWNrZXQpLCBrQWxsb3dSZXRyYW5zbWlzc2lvbiwKICAgICAgICAgICAgICAgICAg
ICAgIGZha2VfY2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKLSAgQVNTRVJUX0ZBTFNFKGhp
c3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSwgZmFsc2UpKTsKKyAgQVNTRVJUX0ZBTFNF
KGhpc3RfLkdldFBhY2tldFN0YXRlKGtTdGFydFNlcU51bSkpOwogCiAgIGF1dG8gYmVzdF9wYWNr
ZXQgPSBoaXN0Xy5HZXRCZXN0Rml0dGluZ1BhY2tldCh0YXJnZXRfcGFja2V0X3NpemUgKyAyKTsK
ICAgQVNTRVJUX1RIQVQoYmVzdF9wYWNrZXQsIDo6dGVzdGluZzo6Tm90TnVsbCgpKTsKQEAgLTU3
Myw3ICs1NzQsNyBAQCBURVNUX0YoUnRwUGFja2V0SGlzdG9yeVRlc3QsCiAgIGhpc3RfLlB1dFJ0
cFBhY2tldChzdGQ6Om1vdmUocGFja2V0KSwga0RvbnRSZXRyYW5zbWl0LAogICAgICAgICAgICAg
ICAgICAgICAgZmFrZV9jbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkpOwogICBFWFBFQ1RfVEhB
VChoaXN0Xy5HZXRCZXN0Rml0dGluZ1BhY2tldCg1MCksIDo6dGVzdGluZzo6SXNOdWxsKCkpOwot
ICBFWFBFQ1RfVEhBVChoaXN0Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShrU3RhcnRTZXFOdW0s
IGZhbHNlKSwKKyAgRVhQRUNUX1RIQVQoaGlzdF8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUoa1N0
YXJ0U2VxTnVtKSwKICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpOb3ROdWxsKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X3BhY2tldF9yZWNlaXZlZC5jYwppbmRleCBjOGRlYjk5ZDkwZTU1ODZmYTRjNDE1MjVkZjRhZGY3
Zjk1NTI0ZGQzLi5mODBmYWQ2OGUwZDMyNmQ2ZWZmZWI1NTk1YTI0MGYyNDE3M2E5ODBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3JlY2VpdmVkLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9wYWNrZXRfcmVjZWl2ZWQuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaCIKIAorI2luY2x1ZGUgPHN0
ZGRlZi5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX2hlYWRlcl9leHRlbnNpb25zLmgiCkBAIC02
Nyw2ICs2OSw3IEBAIHZvaWQgUnRwUGFja2V0UmVjZWl2ZWQ6OkdldEhlYWRlcihSVFBIZWFkZXIq
IGhlYWRlcikgY29uc3QgewogICBHZXRFeHRlbnNpb248UmVwYWlyZWRSdHBTdHJlYW1JZD4oJmhl
YWRlci0+ZXh0ZW5zaW9uLnJlcGFpcmVkX3N0cmVhbV9pZCk7CiAgIEdldEV4dGVuc2lvbjxSdHBN
aWQ+KCZoZWFkZXItPmV4dGVuc2lvbi5taWQpOwogICBHZXRFeHRlbnNpb248UGxheW91dERlbGF5
TGltaXRzPigmaGVhZGVyLT5leHRlbnNpb24ucGxheW91dF9kZWxheSk7CisgIGhlYWRlci0+ZXh0
ZW5zaW9uLmNvbG9yX3NwYWNlID0gR2V0RXh0ZW5zaW9uPENvbG9yU3BhY2VFeHRlbnNpb24+KCk7
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9w
YWNrZXRfcmVjZWl2ZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfcmVjZWl2ZWQuaAppbmRleCA4
NjkwMDMxMGU0OWUzMTk4ZTllNDkxMjVkMzViMzhhNjcwODU4ODUxLi41NjZiMTE2YTEwYTYxM2My
NDYwOTNmMzc5MjliZGZkM2Q2MTU5ZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0
X3JlY2VpdmVkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF9yZWNlaXZlZC5oCkBAIC0xMCw5
ICsxMCwxMSBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfUEFDS0VUX1JF
Q0VJVkVEX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9QQUNLRVRfUkVD
RUlWRURfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2lu
Y2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCisjaW5jbHVk
ZSAiYXBpL2FycmF5X3ZpZXcuaCIKKyNpbmNsdWRlICJhcGkvcnRwX2hlYWRlcnMuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0LmgiCiAjaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvbnRwX3RpbWUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
cnRwX3BhY2tldF90b19zZW5kLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3BhY2tldF90b19zZW5kLmNjCmlu
ZGV4IDAxNTNiYmU3M2FjMjI5ZWQzNDAwNzI4ZjVjMGJlMDYyYjJkMDFkOTMuLmI1NWU3NGFhZjAx
ZjgwN2RkMjk3NTg1MjFhMjNlOGRlOWUzMGZkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9w
YWNrZXRfdG9fc2VuZC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3NlbmQuY2MKQEAg
LTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9w
YWNrZXRfdG9fc2VuZC5oIgogCisjaW5jbHVkZSA8Y3N0ZGludD4KKwogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKIFJ0cFBhY2tldFRvU2VuZDo6UnRwUGFja2V0VG9TZW5kKGNvbnN0IEV4dGVuc2lvbk1h
bmFnZXIqIGV4dGVuc2lvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3Nl
bmQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oCmluZGV4IDFlZDdkZGE0NzgyNjk3
NzIwNDdlYjY3MGYzYTg3YjQzZDI5ZWY3ZWEuLjU2YjEwMjRhMDU5ZDdhYzViZGFhZTFkM2QwYjIy
MzAzZjRjY2RmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdG9fc2VuZC5oCkBAIC0xMCw5ICsxMCwxMiBAQAogI2lm
bmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfUEFDS0VUX1RPX1NFTkRfSF8KICNkZWZp
bmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX1BBQ0tFVF9UT19TRU5EX0hfCiAKKyNpbmNs
dWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAK
ICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb190
aW1pbmcuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4
dGVuc2lvbnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydHBfcGFja2V0X3VuaXR0ZXN0LmNjCmluZGV4IDEyNTAwMGQyZGM5NGVkNGJlMTc4NjJl
MDRiMjQ0MDZiZjNkMjc0N2MuLmIxYzBlNDI1MjVlYWU1MjY3N2MwZjgwYTBjY2Y2NDE3MTQ1OWU0
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNrZXRfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX3BhY2tldF91bml0dGVzdC5jYwpAQCAtMTksNiArMTksNyBAQAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogCit1c2luZyA6OnRlc3Rpbmc6OkVhY2g7CiB1c2luZyA6
OnRlc3Rpbmc6OkVsZW1lbnRzQXJlOwogdXNpbmcgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZUFycmF5
OwogdXNpbmcgOjp0ZXN0aW5nOjpJc0VtcHR5OwpAQCAtMTg0LDYgKzE4NSw1MiBAQCBjb25zdGV4
cHIgdWludDhfdCBrUGFja2V0V2l0aExlZ2FjeVRpbWluZ0V4dGVuc2lvbltdID0gewogICAgIDB4
MDQsIDB4MDAsIDB4MDAsIDB4MDAsCiAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH07CiAvLyBj
bGFuZy1mb3JtYXQgb24KKworSGRyTWV0YWRhdGEgQ3JlYXRlVGVzdEhkck1ldGFkYXRhKCkgewor
ICAvLyBSYW5kb20gYnV0IHJlYXNvbmFibGUgSERSIG1ldGFkYXRhLgorICBIZHJNZXRhZGF0YSBo
ZHJfbWV0YWRhdGE7CisgIGhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEubHVtaW5hbmNl
X21heCA9IDIwMDAuMDsKKyAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5sdW1pbmFu
Y2VfbWluID0gMi4wMDAxOworICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1h
cnlfci54ID0gMC4zMDAzOworICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1h
cnlfci55ID0gMC40MDA0OworICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1h
cnlfZy54ID0gMC4zMjAxOworICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1h
cnlfZy55ID0gMC40NjA0OworICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1h
cnlfYi54ID0gMC4zNDA5OworICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLnByaW1h
cnlfYi55ID0gMC40OTA3OworICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLndoaXRl
X3BvaW50LnggPSAwLjQxMDM7CisgIGhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEud2hp
dGVfcG9pbnQueSA9IDAuNDgwNjsKKyAgaGRyX21ldGFkYXRhLm1heF9jb250ZW50X2xpZ2h0X2xl
dmVsID0gMjM0NTsKKyAgaGRyX21ldGFkYXRhLm1heF9mcmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVs
ID0gMTc4OTsKKyAgcmV0dXJuIGhkcl9tZXRhZGF0YTsKK30KKworQ29sb3JTcGFjZSBDcmVhdGVU
ZXN0Q29sb3JTcGFjZShib29sIHdpdGhfaGRyX21ldGFkYXRhKSB7CisgIENvbG9yU3BhY2UgY29s
b3Jfc3BhY2UoCisgICAgICBDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OmtCVDcwOSwgQ29sb3JTcGFj
ZTo6VHJhbnNmZXJJRDo6a0dBTU1BMjIsCisgICAgICBDb2xvclNwYWNlOjpNYXRyaXhJRDo6a1NN
UFRFMjA4NSwgQ29sb3JTcGFjZTo6UmFuZ2VJRDo6a0Z1bGwpOworICBpZiAod2l0aF9oZHJfbWV0
YWRhdGEpIHsKKyAgICBIZHJNZXRhZGF0YSBoZHJfbWV0YWRhdGEgPSBDcmVhdGVUZXN0SGRyTWV0
YWRhdGEoKTsKKyAgICBjb2xvcl9zcGFjZS5zZXRfaGRyX21ldGFkYXRhKCZoZHJfbWV0YWRhdGEp
OworICB9CisgIHJldHVybiBjb2xvcl9zcGFjZTsKK30KKwordm9pZCBUZXN0Q3JlYXRlQW5kUGFy
c2VDb2xvclNwYWNlRXh0ZW5zaW9uKGJvb2wgd2l0aF9oZHJfbWV0YWRhdGEpIHsKKyAgLy8gQ3Jl
YXRlIHBhY2tldCB3aXRoIGV4dGVuc2lvbi4KKyAgUnRwUGFja2V0OjpFeHRlbnNpb25NYW5hZ2Vy
IGV4dGVuc2lvbnMoLypleHRtYXAtYWxsb3ctbWl4ZWQ9Ki90cnVlKTsKKyAgZXh0ZW5zaW9ucy5S
ZWdpc3RlcjxDb2xvclNwYWNlRXh0ZW5zaW9uPigxKTsKKyAgUnRwUGFja2V0IHBhY2tldCgmZXh0
ZW5zaW9ucyk7CisgIGNvbnN0IENvbG9yU3BhY2Uga0NvbG9yU3BhY2UgPSBDcmVhdGVUZXN0Q29s
b3JTcGFjZSh3aXRoX2hkcl9tZXRhZGF0YSk7CisgIEVYUEVDVF9UUlVFKHBhY2tldC5TZXRFeHRl
bnNpb248Q29sb3JTcGFjZUV4dGVuc2lvbj4oa0NvbG9yU3BhY2UpKTsKKyAgcGFja2V0LlNldFBh
eWxvYWRTaXplKDQyKTsKKworICAvLyBSZWFkIHBhY2tldCB3aXRoIHRoZSBleHRlbnNpb24uCisg
IFJ0cFBhY2tldFJlY2VpdmVkIHBhcnNlZCgmZXh0ZW5zaW9ucyk7CisgIEVYUEVDVF9UUlVFKHBh
cnNlZC5QYXJzZShwYWNrZXQuQnVmZmVyKCkpKTsKKyAgQ29sb3JTcGFjZSBwYXJzZWRfY29sb3Jf
c3BhY2U7CisgIEVYUEVDVF9UUlVFKHBhcnNlZC5HZXRFeHRlbnNpb248Q29sb3JTcGFjZUV4dGVu
c2lvbj4oJnBhcnNlZF9jb2xvcl9zcGFjZSkpOworICBFWFBFQ1RfRVEoa0NvbG9yU3BhY2UsIHBh
cnNlZF9jb2xvcl9zcGFjZSk7Cit9CiB9ICAvLyBuYW1lc3BhY2UKIAogVEVTVChSdHBQYWNrZXRU
ZXN0LCBDcmVhdGVNaW5pbXVtKSB7CkBAIC0yMjUsOCArMjcyLDcgQEAgVEVTVChSdHBQYWNrZXRU
ZXN0LCBDcmVhdGVXaXRoMkV4dGVuc2lvbnMpIHsKIH0KIAogVEVTVChSdHBQYWNrZXRUZXN0LCBD
cmVhdGVXaXRoVHdvQnl0ZUhlYWRlckV4dGVuc2lvbkZpcnN0KSB7Ci0gIFJ0cFBhY2tldFRvU2Vu
ZDo6RXh0ZW5zaW9uTWFuYWdlciBleHRlbnNpb25zOwotICBleHRlbnNpb25zLlNldE1peGVkT25l
VHdvQnl0ZUhlYWRlclN1cHBvcnRlZCh0cnVlKTsKKyAgUnRwUGFja2V0VG9TZW5kOjpFeHRlbnNp
b25NYW5hZ2VyIGV4dGVuc2lvbnModHJ1ZSk7CiAgIGV4dGVuc2lvbnMuUmVnaXN0ZXIoa1J0cEV4
dGVuc2lvblRyYW5zbWlzc2lvblRpbWVPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAga1Ry
YW5zbWlzc2lvbk9mZnNldEV4dGVuc2lvbklkKTsKICAgZXh0ZW5zaW9ucy5SZWdpc3RlcihrUnRw
RXh0ZW5zaW9uQXVkaW9MZXZlbCwga0F1ZGlvTGV2ZWxFeHRlbnNpb25JZCk7CkBAIC0yNDcsOCAr
MjkzLDcgQEAgVEVTVChSdHBQYWNrZXRUZXN0LCBDcmVhdGVXaXRoVHdvQnl0ZUhlYWRlckV4dGVu
c2lvbkZpcnN0KSB7CiAKIFRFU1QoUnRwUGFja2V0VGVzdCwgQ3JlYXRlV2l0aFR3b0J5dGVIZWFk
ZXJFeHRlbnNpb25MYXN0KSB7CiAgIC8vIFRoaXMgdGVzdCB3aWxsIHRyaWdnZXIgUnRwUGFja2V0
OjpQcm9tb3RlVG9Ud29CeXRlSGVhZGVyRXh0ZW5zaW9uKCkuCi0gIFJ0cFBhY2tldFRvU2VuZDo6
RXh0ZW5zaW9uTWFuYWdlciBleHRlbnNpb25zOwotICBleHRlbnNpb25zLlNldE1peGVkT25lVHdv
Qnl0ZUhlYWRlclN1cHBvcnRlZCh0cnVlKTsKKyAgUnRwUGFja2V0VG9TZW5kOjpFeHRlbnNpb25N
YW5hZ2VyIGV4dGVuc2lvbnModHJ1ZSk7CiAgIGV4dGVuc2lvbnMuUmVnaXN0ZXIoa1J0cEV4dGVu
c2lvblRyYW5zbWlzc2lvblRpbWVPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAga1RyYW5z
bWlzc2lvbk9mZnNldEV4dGVuc2lvbklkKTsKICAgZXh0ZW5zaW9ucy5SZWdpc3RlcihrUnRwRXh0
ZW5zaW9uQXVkaW9MZXZlbCwga0F1ZGlvTGV2ZWxFeHRlbnNpb25JZCk7CkBAIC0zNjcsMTEgKzQx
MiwxMCBAQCBURVNUKFJ0cFBhY2tldFRlc3QsIENyZWF0ZVB1cmVQYWRkaW5nKSB7CiAgIHBhY2tl
dC5TZXRTZXF1ZW5jZU51bWJlcihrU2VxTnVtKTsKICAgcGFja2V0LlNldFRpbWVzdGFtcChrVGlt
ZXN0YW1wKTsKICAgcGFja2V0LlNldFNzcmMoa1NzcmMpOwotICBSYW5kb20gcmFuZG9tKDB4MTIz
NDU2Nzg5KTsKIAogICBFWFBFQ1RfTFQocGFja2V0LnNpemUoKSwgcGFja2V0LmNhcGFjaXR5KCkp
OwotICBFWFBFQ1RfRkFMU0UocGFja2V0LlNldFBhZGRpbmcoa1BhZGRpbmdTaXplICsgMSwgJnJh
bmRvbSkpOwotICBFWFBFQ1RfVFJVRShwYWNrZXQuU2V0UGFkZGluZyhrUGFkZGluZ1NpemUsICZy
YW5kb20pKTsKKyAgRVhQRUNUX0ZBTFNFKHBhY2tldC5TZXRQYWRkaW5nKGtQYWRkaW5nU2l6ZSAr
IDEpKTsKKyAgRVhQRUNUX1RSVUUocGFja2V0LlNldFBhZGRpbmcoa1BhZGRpbmdTaXplKSk7CiAg
IEVYUEVDVF9FUShwYWNrZXQuc2l6ZSgpLCBwYWNrZXQuY2FwYWNpdHkoKSk7CiB9CiAKQEAgLTM4
MywxMyArNDI3LDQ4IEBAIFRFU1QoUnRwUGFja2V0VGVzdCwgQ3JlYXRlVW5hbGlnbmVkUGFkZGlu
ZykgewogICBwYWNrZXQuU2V0VGltZXN0YW1wKGtUaW1lc3RhbXApOwogICBwYWNrZXQuU2V0U3Ny
YyhrU3NyYyk7CiAgIHBhY2tldC5TZXRQYXlsb2FkU2l6ZShrUGF5bG9hZFNpemUpOwotICBSYW5k
b20gcigweDEyMzQ1Njc4OSk7CiAKICAgRVhQRUNUX0xUKHBhY2tldC5zaXplKCksIHBhY2tldC5j
YXBhY2l0eSgpKTsKLSAgRVhQRUNUX1RSVUUocGFja2V0LlNldFBhZGRpbmcoa01heFBhZGRpbmdT
aXplLCAmcikpOworICBFWFBFQ1RfVFJVRShwYWNrZXQuU2V0UGFkZGluZyhrTWF4UGFkZGluZ1Np
emUpKTsKICAgRVhQRUNUX0VRKHBhY2tldC5zaXplKCksIHBhY2tldC5jYXBhY2l0eSgpKTsKIH0K
IAorVEVTVChSdHBQYWNrZXRUZXN0LCBXcml0ZXNQYWRkaW5nU2l6ZVRvTGFzdEJ5dGUpIHsKKyAg
Y29uc3Qgc2l6ZV90IGtQYWRkaW5nU2l6ZSA9IDU7CisgIFJ0cFBhY2tldCBwYWNrZXQ7CisKKyAg
RVhQRUNUX1RSVUUocGFja2V0LlNldFBhZGRpbmcoa1BhZGRpbmdTaXplKSk7CisgIEVYUEVDVF9F
UShwYWNrZXQuZGF0YSgpW3BhY2tldC5zaXplKCkgLSAxXSwga1BhZGRpbmdTaXplKTsKK30KKwor
VEVTVChSdHBQYWNrZXRUZXN0LCBVc2VzWmVyb3NGb3JQYWRkaW5nKSB7CisgIGNvbnN0IHNpemVf
dCBrUGFkZGluZ1NpemUgPSA1OworICBSdHBQYWNrZXQgcGFja2V0OworCisgIEVYUEVDVF9UUlVF
KHBhY2tldC5TZXRQYWRkaW5nKGtQYWRkaW5nU2l6ZSkpOworICBFWFBFQ1RfVEhBVChydGM6Ok1h
a2VBcnJheVZpZXcocGFja2V0LmRhdGEoKSArIDEyLCBrUGFkZGluZ1NpemUgLSAxKSwKKyAgICAg
ICAgICAgICAgRWFjaCgwKSk7Cit9CisKK1RFU1QoUnRwUGFja2V0VGVzdCwgQ3JlYXRlT25lQnl0
ZVBhZGRpbmcpIHsKKyAgc2l6ZV90IGtQYXlsb2FkU2l6ZSA9IDEyMzsKKyAgUnRwUGFja2V0IHBh
Y2tldChudWxscHRyLCAxMiArIGtQYXlsb2FkU2l6ZSArIDEpOworICBwYWNrZXQuU2V0UGF5bG9h
ZFNpemUoa1BheWxvYWRTaXplKTsKKworICBFWFBFQ1RfVFJVRShwYWNrZXQuU2V0UGFkZGluZygx
KSk7CisKKyAgRVhQRUNUX0VRKHBhY2tldC5zaXplKCksIDEyICsga1BheWxvYWRTaXplICsgMSk7
CisgIEVYUEVDVF9FUShwYWNrZXQucGFkZGluZ19zaXplKCksIDF1KTsKK30KKworVEVTVChSdHBQ
YWNrZXRUZXN0LCBGYWlsc1RvQWRkUGFkZGluZ1dpdGhvdXRDYXBhY2l0eSkgeworICBzaXplX3Qg
a1BheWxvYWRTaXplID0gMTIzOworICBSdHBQYWNrZXQgcGFja2V0KG51bGxwdHIsIDEyICsga1Bh
eWxvYWRTaXplKTsKKyAgcGFja2V0LlNldFBheWxvYWRTaXplKGtQYXlsb2FkU2l6ZSk7CisKKyAg
RVhQRUNUX0ZBTFNFKHBhY2tldC5TZXRQYWRkaW5nKDEpKTsKK30KKwogVEVTVChSdHBQYWNrZXRU
ZXN0LCBQYXJzZU1pbmltdW0pIHsKICAgUnRwUGFja2V0UmVjZWl2ZWQgcGFja2V0OwogICBFWFBF
Q1RfVFJVRShwYWNrZXQuUGFyc2Uoa01pbmltdW1QYWNrZXQsIHNpemVvZihrTWluaW11bVBhY2tl
dCkpKTsKQEAgLTQzMyw2ICs1MTIsMjMgQEAgVEVTVChSdHBQYWNrZXRUZXN0LCBQYXJzZVdpdGhF
eHRlbnNpb24pIHsKICAgRVhQRUNUX0VRKDB1LCBwYWNrZXQucGFkZGluZ19zaXplKCkpOwogfQog
CitURVNUKFJ0cFBhY2tldFRlc3QsIEdldEV4dGVuc2lvbldpdGhvdXRQYXJhbWV0ZXJzUmV0dXJu
c09wdGlvbmFsVmFsdWUpIHsKKyAgUnRwUGFja2V0OjpFeHRlbnNpb25NYW5hZ2VyIGV4dGVuc2lv
bnM7CisgIGV4dGVuc2lvbnMuUmVnaXN0ZXI8VHJhbnNtaXNzaW9uT2Zmc2V0PihrVHJhbnNtaXNz
aW9uT2Zmc2V0RXh0ZW5zaW9uSWQpOworICBleHRlbnNpb25zLlJlZ2lzdGVyPFJ0cFN0cmVhbUlk
PihrUnRwU3RyZWFtSWRFeHRlbnNpb25JZCk7CisKKyAgUnRwUGFja2V0UmVjZWl2ZWQgcGFja2V0
KCZleHRlbnNpb25zKTsKKyAgRVhQRUNUX1RSVUUocGFja2V0LlBhcnNlKGtQYWNrZXRXaXRoVE8s
IHNpemVvZihrUGFja2V0V2l0aFRPKSkpOworCisgIGF1dG8gdGltZV9vZmZzZXQgPSBwYWNrZXQu
R2V0RXh0ZW5zaW9uPFRyYW5zbWlzc2lvbk9mZnNldD4oKTsKKyAgc3RhdGljX2Fzc2VydCgKKyAg
ICAgIHN0ZDo6aXNfc2FtZTxkZWNsdHlwZSh0aW1lX29mZnNldCksCisgICAgICAgICAgICAgICAg
ICAgYWJzbDo6b3B0aW9uYWw8VHJhbnNtaXNzaW9uT2Zmc2V0Ojp2YWx1ZV90eXBlPj46OnZhbHVl
LAorICAgICAgIiIpOworICBFWFBFQ1RfRVEodGltZV9vZmZzZXQsIGtUaW1lT2Zmc2V0KTsKKyAg
RVhQRUNUX0ZBTFNFKHBhY2tldC5HZXRFeHRlbnNpb248UnRwU3RyZWFtSWQ+KCkuaGFzX3ZhbHVl
KCkpOworfQorCiBURVNUKFJ0cFBhY2tldFRlc3QsIEdldFJhd0V4dGVuc2lvbldoZW5QcmVzZW50
KSB7CiAgIGNvbnN0ZXhwciB1aW50OF90IGtSYXdQYWNrZXRbXSA9IHsKICAgICAgIC8vIGNvbW1l
bnQgZm9yIGNsYW5nLWZvcm1hdCB0byBhbGlnbiBrUmF3UGFja2V0IG5pY2VyLgpAQCAtNzUxLDQg
Kzg0NywxMiBAQCBURVNUKFJ0cFBhY2tldFRlc3QsIFBhcnNlTGVnYWN5VGltaW5nRnJhbWVFeHRl
bnNpb24pIHsKICAgRVhQRUNUX0VRKHJlY2VpdmllZF90aW1pbmcuZmxhZ3MsIDApOwogfQogCitU
RVNUKFJ0cFBhY2tldFRlc3QsIENyZWF0ZUFuZFBhcnNlQ29sb3JTcGFjZUV4dGVuc2lvbikgewor
ICBUZXN0Q3JlYXRlQW5kUGFyc2VDb2xvclNwYWNlRXh0ZW5zaW9uKC8qd2l0aF9oZHJfbWV0YWRh
dGE9Ki90cnVlKTsKK30KKworVEVTVChSdHBQYWNrZXRUZXN0LCBDcmVhdGVBbmRQYXJzZUNvbG9y
U3BhY2VFeHRlbnNpb25XaXRob3V0SGRyTWV0YWRhdGEpIHsKKyAgVGVzdENyZWF0ZUFuZFBhcnNl
Q29sb3JTcGFjZUV4dGVuc2lvbigvKndpdGhfaGRyX21ldGFkYXRhPSovZmFsc2UpOworfQorCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBs
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbC5jYwppbmRleCAxNzVhOTRiZTgwMjE2MWVmMDc3
OTk2MGM1OGFkZjMwZjBlNDZjYmQxLi4wZDBjYTk2MTg4ODAzNzNiZDRlZjEwNjg3NDM5ZGJlYTI3
YjY1OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9ydGNwX2ltcGwuY2MKQEAgLTExLDEyICsxMSwxNCBAQAogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2ltcGwuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5o
PgotCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8
c2V0PgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaW5jbHVkZSAi
YXBpL3J0cHBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9y
dGNwX3BhY2tldC9kbHJyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRw
X3J0Y3BfY29uZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbG9nZ2luZy5oIgogCkBAIC0zMSw2ICszMyw4IEBAIGNvbnN0IGludDY0X3Qga1J0
cFJ0Y3BNYXhJZGxlVGltZVByb2Nlc3NNcyA9IDU7CiBjb25zdCBpbnQ2NF90IGtSdHBSdGNwUnR0
UHJvY2Vzc1RpbWVNcyA9IDEwMDA7CiBjb25zdCBpbnQ2NF90IGtSdHBSdGNwQml0cmF0ZVByb2Nl
c3NUaW1lTXMgPSAxMDsKIGNvbnN0IGludDY0X3Qga0RlZmF1bHRFeHBlY3RlZFJldHJhbnNtaXNz
aW9uVGltZU1zID0gMTI1OworY29uc3RleHByIGludDMyX3Qga0RlZmF1bHRWaWRlb1JlcG9ydElu
dGVydmFsID0gMTAwMDsKK2NvbnN0ZXhwciBpbnQzMl90IGtEZWZhdWx0QXVkaW9SZXBvcnRJbnRl
cnZhbCA9IDUwMDA7CiB9ICAvLyBuYW1lc3BhY2UKIAogUnRwUnRjcDo6Q29uZmlndXJhdGlvbjo6
Q29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKQEAgLTYyLDcgKzY2LDEwIEBAIE1vZHVsZVJ0cFJ0
Y3BJbXBsOjpNb2R1bGVSdHBSdGNwSW1wbChjb25zdCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucnRjcF9wYWNrZXRfdHlwZV9j
b3VudGVyX29ic2VydmVyLAogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uZXZlbnRf
bG9nLAogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ub3V0Z29pbmdfdHJhbnNwb3J0
LAotICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucnRjcF9pbnRlcnZhbF9jb25maWcp
LAorICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucnRjcF9yZXBvcnRfaW50ZXJ2YWxf
bXMgPiAwCisgICAgICAgICAgICAgICAgICAgICAgID8gY29uZmlndXJhdGlvbi5ydGNwX3JlcG9y
dF9pbnRlcnZhbF9tcworICAgICAgICAgICAgICAgICAgICAgICA6IChjb25maWd1cmF0aW9uLmF1
ZGlvID8ga0RlZmF1bHRBdWRpb1JlcG9ydEludGVydmFsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBrRGVmYXVsdFZpZGVvUmVwb3J0SW50ZXJ2YWwpKSwK
ICAgICAgIHJ0Y3BfcmVjZWl2ZXJfKGNvbmZpZ3VyYXRpb24uY2xvY2ssCiAgICAgICAgICAgICAg
ICAgICAgICBjb25maWd1cmF0aW9uLnJlY2VpdmVyX29ubHksCiAgICAgICAgICAgICAgICAgICAg
ICBjb25maWd1cmF0aW9uLnJ0Y3BfcGFja2V0X3R5cGVfY291bnRlcl9vYnNlcnZlciwKQEAgLTcw
LDYgKzc3LDEwIEBAIE1vZHVsZVJ0cFJ0Y3BJbXBsOjpNb2R1bGVSdHBSdGNwSW1wbChjb25zdCBD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgY29uZmln
dXJhdGlvbi5pbnRyYV9mcmFtZV9jYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb24udHJhbnNwb3J0X2ZlZWRiYWNrX2NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAg
ICAgY29uZmlndXJhdGlvbi5iaXRyYXRlX2FsbG9jYXRpb25fb2JzZXJ2ZXIsCisgICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uLnJ0Y3BfcmVwb3J0X2ludGVydmFsX21zID4gMAorICAg
ICAgICAgICAgICAgICAgICAgICAgID8gY29uZmlndXJhdGlvbi5ydGNwX3JlcG9ydF9pbnRlcnZh
bF9tcworICAgICAgICAgICAgICAgICAgICAgICAgIDogKGNvbmZpZ3VyYXRpb24uYXVkaW8gPyBr
RGVmYXVsdEF1ZGlvUmVwb3J0SW50ZXJ2YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDoga0RlZmF1bHRWaWRlb1JlcG9ydEludGVydmFsKSwKICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMpLAogICAgICAgY2xvY2tfKGNvbmZpZ3VyYXRpb24uY2xvY2sp
LAogICAgICAgYXVkaW9fKGNvbmZpZ3VyYXRpb24uYXVkaW8pLApAQCAtOTksNyArMTEwLDkgQEAg
TW9kdWxlUnRwUnRjcEltcGw6Ok1vZHVsZVJ0cFJ0Y3BJbXBsKGNvbnN0IENvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pCiAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2VuZF9wYWNrZXRfb2JzZXJ2
ZXIsCiAgICAgICAgIGNvbmZpZ3VyYXRpb24ucmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyLAog
ICAgICAgICBjb25maWd1cmF0aW9uLm92ZXJoZWFkX29ic2VydmVyLAotICAgICAgICBjb25maWd1
cmF0aW9uLnBvcHVsYXRlX25ldHdvcmsyX3RpbWVzdGFtcCkpOworICAgICAgICBjb25maWd1cmF0
aW9uLnBvcHVsYXRlX25ldHdvcmsyX3RpbWVzdGFtcCwKKyAgICAgICAgY29uZmlndXJhdGlvbi5m
cmFtZV9lbmNyeXB0b3IsIGNvbmZpZ3VyYXRpb24ucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uLAor
ICAgICAgICBjb25maWd1cmF0aW9uLmV4dG1hcF9hbGxvd19taXhlZCkpOwogICAgIC8vIE1ha2Ug
c3VyZSBydGNwIHNlbmRlciB1c2Ugc2FtZSB0aW1lc3RhbXAgb2Zmc2V0IGFzIHJ0cCBzZW5kZXIu
CiAgICAgcnRjcF9zZW5kZXJfLlNldFRpbWVzdGFtcE9mZnNldChydHBfc2VuZGVyXy0+VGltZXN0
YW1wT2Zmc2V0KCkpOwogCkBAIC0xNzUsMTAgKzE4OCw5IEBAIHZvaWQgTW9kdWxlUnRwUnRjcElt
cGw6OlByb2Nlc3MoKSB7CiAKICAgICAvLyBWZXJpZnkgcmVjZWl2ZXIgcmVwb3J0cyBhcmUgZGVs
aXZlcmVkIGFuZCB0aGUgcmVwb3J0ZWQgc2VxdWVuY2UgbnVtYmVyCiAgICAgLy8gaXMgaW5jcmVh
c2luZy4KLSAgICBpbnQ2NF90IHJ0Y3BfaW50ZXJ2YWwgPSBSdGNwUmVwb3J0SW50ZXJ2YWwoKTsK
LSAgICBpZiAocnRjcF9yZWNlaXZlcl8uUnRjcFJyVGltZW91dChydGNwX2ludGVydmFsKSkgewor
ICAgIGlmIChydGNwX3JlY2VpdmVyXy5SdGNwUnJUaW1lb3V0KCkpIHsKICAgICAgIFJUQ19MT0df
RihMU19XQVJOSU5HKSA8PCAiVGltZW91dDogTm8gUlRDUCBSUiByZWNlaXZlZC4iOwotICAgIH0g
ZWxzZSBpZiAocnRjcF9yZWNlaXZlcl8uUnRjcFJyU2VxdWVuY2VOdW1iZXJUaW1lb3V0KHJ0Y3Bf
aW50ZXJ2YWwpKSB7CisgICAgfSBlbHNlIGlmIChydGNwX3JlY2VpdmVyXy5SdGNwUnJTZXF1ZW5j
ZU51bWJlclRpbWVvdXQoKSkgewogICAgICAgUlRDX0xPR19GKExTX1dBUk5JTkcpIDw8ICJUaW1l
b3V0OiBObyBpbmNyZWFzZSBpbiBSVENQIFJSIGV4dGVuZGVkICIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaGlnaGVzdCBzZXF1ZW5jZSBudW1iZXIuIjsKICAgICB9CkBAIC0yNTMs
NiArMjY1LDcgQEAgdm9pZCBNb2R1bGVSdHBSdGNwSW1wbDo6SW5jb21pbmdSdGNwUGFja2V0KGNv
bnN0IHVpbnQ4X3QqIHJ0Y3BfcGFja2V0LAogfQogCiBpbnQzMl90IE1vZHVsZVJ0cFJ0Y3BJbXBs
OjpSZWdpc3RlclNlbmRQYXlsb2FkKGNvbnN0IENvZGVjSW5zdCYgdm9pY2VfY29kZWMpIHsKKyAg
cnRjcF9zZW5kZXJfLlNldFJ0cENsb2NrUmF0ZSh2b2ljZV9jb2RlYy5wbHR5cGUsIHZvaWNlX2Nv
ZGVjLnBsZnJlcSk7CiAgIHJldHVybiBydHBfc2VuZGVyXy0+UmVnaXN0ZXJQYXlsb2FkKAogICAg
ICAgdm9pY2VfY29kZWMucGxuYW1lLCB2b2ljZV9jb2RlYy5wbHR5cGUsIHZvaWNlX2NvZGVjLnBs
ZnJlcSwKICAgICAgIHZvaWNlX2NvZGVjLmNoYW5uZWxzLCAodm9pY2VfY29kZWMucmF0ZSA8IDAp
ID8gMCA6IHZvaWNlX2NvZGVjLnJhdGUpOwpAQCAtMjYwLDggKzI3MywxMCBAQCBpbnQzMl90IE1v
ZHVsZVJ0cFJ0Y3BJbXBsOjpSZWdpc3RlclNlbmRQYXlsb2FkKGNvbnN0IENvZGVjSW5zdCYgdm9p
Y2VfY29kZWMpIHsKIAogdm9pZCBNb2R1bGVSdHBSdGNwSW1wbDo6UmVnaXN0ZXJWaWRlb1NlbmRQ
YXlsb2FkKGludCBwYXlsb2FkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcGF5bG9hZF9uYW1lKSB7Ci0gIFJUQ19DSEVD
S19FUSgKLSAgICAgIDAsIHJ0cF9zZW5kZXJfLT5SZWdpc3RlclBheWxvYWQocGF5bG9hZF9uYW1l
LCBwYXlsb2FkX3R5cGUsIDkwMDAwLCAwLCAwKSk7CisgIHJ0Y3Bfc2VuZGVyXy5TZXRSdHBDbG9j
a1JhdGUocGF5bG9hZF90eXBlLCBrVmlkZW9QYXlsb2FkVHlwZUZyZXF1ZW5jeSk7CisgIFJUQ19D
SEVDS19FUSgwLAorICAgICAgICAgICAgICAgcnRwX3NlbmRlcl8tPlJlZ2lzdGVyUGF5bG9hZChw
YXlsb2FkX25hbWUsIHBheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga1ZpZGVvUGF5bG9hZFR5cGVGcmVxdWVuY3ksIDAsIDApKTsKIH0KIAog
aW50MzJfdCBNb2R1bGVSdHBSdGNwSW1wbDo6RGVSZWdpc3RlclNlbmRQYXlsb2FkKGNvbnN0IGlu
dDhfdCBwYXlsb2FkX3R5cGUpIHsKQEAgLTM5Miw2ICs0MDcsMTEgQEAgYm9vbCBNb2R1bGVSdHBS
dGNwSW1wbDo6U2VuZGluZ01lZGlhKCkgY29uc3QgewogICByZXR1cm4gcnRwX3NlbmRlcl8gPyBy
dHBfc2VuZGVyXy0+U2VuZGluZ01lZGlhKCkgOiBmYWxzZTsKIH0KIAordm9pZCBNb2R1bGVSdHBS
dGNwSW1wbDo6U2V0QXNQYXJ0T2ZBbGxvY2F0aW9uKGJvb2wgcGFydF9vZl9hbGxvY2F0aW9uKSB7
CisgIFJUQ19DSEVDSyhydHBfc2VuZGVyXyk7CisgIHJ0cF9zZW5kZXJfLT5TZXRBc1BhcnRPZkFs
bG9jYXRpb24ocGFydF9vZl9hbGxvY2F0aW9uKTsKK30KKwogYm9vbCBNb2R1bGVSdHBSdGNwSW1w
bDo6U2VuZE91dGdvaW5nRGF0YSgKICAgICBGcmFtZVR5cGUgZnJhbWVfdHlwZSwKICAgICBpbnQ4
X3QgcGF5bG9hZF90eXBlLApAQCAtNDAyLDcgKzQyMiw3IEBAIGJvb2wgTW9kdWxlUnRwUnRjcElt
cGw6OlNlbmRPdXRnb2luZ0RhdGEoCiAgICAgY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciog
ZnJhZ21lbnRhdGlvbiwKICAgICBjb25zdCBSVFBWaWRlb0hlYWRlciogcnRwX3ZpZGVvX2hlYWRl
ciwKICAgICB1aW50MzJfdCogdHJhbnNwb3J0X2ZyYW1lX2lkX291dCkgewotICBydGNwX3NlbmRl
cl8uU2V0TGFzdFJ0cFRpbWUodGltZV9zdGFtcCwgY2FwdHVyZV90aW1lX21zKTsKKyAgcnRjcF9z
ZW5kZXJfLlNldExhc3RSdHBUaW1lKHRpbWVfc3RhbXAsIGNhcHR1cmVfdGltZV9tcywgcGF5bG9h
ZF90eXBlKTsKICAgLy8gTWFrZSBzdXJlIGFuIFJUQ1AgcmVwb3J0IGlzbid0IHF1ZXVlZCBiZWhp
bmQgYSBrZXkgZnJhbWUuCiAgIGlmIChydGNwX3NlbmRlcl8uVGltZVRvU2VuZFJUQ1BSZXBvcnQo
a1ZpZGVvRnJhbWVLZXkgPT0gZnJhbWVfdHlwZSkpIHsKICAgICBydGNwX3NlbmRlcl8uU2VuZFJU
Q1AoR2V0RmVlZGJhY2tTdGF0ZSgpLCBrUnRjcFJlcG9ydCk7CkBAIC02MDQsNiArNjI0LDEwIEBA
IHZvaWQgTW9kdWxlUnRwUnRjcEltcGw6OlVuc2V0UmVtYigpIHsKICAgcnRjcF9zZW5kZXJfLlVu
c2V0UmVtYigpOwogfQogCit2b2lkIE1vZHVsZVJ0cFJ0Y3BJbXBsOjpTZXRFeHRtYXBBbGxvd01p
eGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKSB7CisgIHJ0cF9zZW5kZXJfLT5TZXRFeHRtYXBB
bGxvd01peGVkKGV4dG1hcF9hbGxvd19taXhlZCk7Cit9CisKIGludDMyX3QgTW9kdWxlUnRwUnRj
cEltcGw6OlJlZ2lzdGVyU2VuZFJ0cEhlYWRlckV4dGVuc2lvbigKICAgICBjb25zdCBSVFBFeHRl
bnNpb25UeXBlIHR5cGUsCiAgICAgY29uc3QgdWludDhfdCBpZCkgewpAQCAtODQzLDEzICs4Njcs
NiBAQCBzdGQ6OnZlY3RvcjxydGNwOjpUbW1iSXRlbT4gTW9kdWxlUnRwUnRjcEltcGw6OkJvdW5k
aW5nU2V0KGJvb2wqIHRtbWJyX293bmVyKSB7CiAgIHJldHVybiBydGNwX3JlY2VpdmVyXy5Cb3Vu
ZGluZ1NldCh0bW1icl9vd25lcik7CiB9CiAKLWludDY0X3QgTW9kdWxlUnRwUnRjcEltcGw6OlJ0
Y3BSZXBvcnRJbnRlcnZhbCgpIHsKLSAgaWYgKGF1ZGlvXykKLSAgICByZXR1cm4gcnRjcF9zZW5k
ZXJfLlJ0Y3BBdWRpb1JlcG9ydEludmVydmFsKCk7Ci0gIGVsc2UKLSAgICByZXR1cm4gcnRjcF9z
ZW5kZXJfLlJ0Y3BWaWRlb1JlcG9ydEludmVydmFsKCk7Ci19Ci0KIHZvaWQgTW9kdWxlUnRwUnRj
cEltcGw6OlNldFJ0Y3BSZWNlaXZlclNzcmNzKHVpbnQzMl90IG1haW5fc3NyYykgewogICBzdGQ6
OnNldDx1aW50MzJfdD4gc3NyY3M7CiAgIHNzcmNzLmluc2VydChtYWluX3NzcmMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbC5o
CmluZGV4IDYwNDQxNGFkZjJmZjQ1NDExODUyOThhMTU1MGUzNDJhZGVjZWVkODQuLjhlOTc1MWRj
YzFmMGIyMzc5NjBlNGZkNTQ5NmNhNzM5MjEwMzAyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0
cF9ydGNwX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9pbXBsLmgKQEAgLTExLDE3ICsx
MSwyNCBAQAogI2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfUlRDUF9JTVBMX0hf
CiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9SVENQX0lNUExfSF8KIAorI2lu
Y2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+CiAj
aW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2lu
Y2x1ZGUgImFwaS9ydHBfaGVhZGVycy5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19iaXRy
YXRlX2FsbG9jYXRpb24uaCIKKyNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChi
dWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5
cGVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9mZWNfdHlwZXMuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci9pbmNsdWRlL3JlbW90ZV9i
aXRyYXRlX2VzdGltYXRvci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9y
dHBfcnRjcC5oIgotI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfcnRjcF9k
ZWZpbmVzLmgiCisjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2Rl
ZmluZXMuaCIgIC8vIFJUQ1BQYWNrZXRUeXBlCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcGFja2V0X2xvc3Nfc3RhdHMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS9ydGNwX3BhY2tldC90bW1iX2l0ZW0uaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydGNwX3JlY2VpdmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRjcF9zZW5kZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
c2VuZGVyLmgiCkBAIC0zMCw2ICszNywxMCBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAorY2xh
c3MgQ2xvY2s7CitzdHJ1Y3QgUGFjZWRQYWNrZXRJbmZvOworc3RydWN0IFJUUFZpZGVvSGVhZGVy
OworCiBjbGFzcyBNb2R1bGVSdHBSdGNwSW1wbCA6IHB1YmxpYyBSdHBSdGNwLCBwdWJsaWMgUlRD
UFJlY2VpdmVyOjpNb2R1bGVSdHBSdGNwIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IE1vZHVsZVJ0
cFJ0Y3BJbXBsKGNvbnN0IFJ0cFJ0Y3A6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pOwpA
QCAtNTksNiArNzAsOCBAQCBjbGFzcyBNb2R1bGVSdHBSdGNwSW1wbCA6IHB1YmxpYyBSdHBSdGNw
LCBwdWJsaWMgUlRDUFJlY2VpdmVyOjpNb2R1bGVSdHBSdGNwIHsKIAogICBpbnQzMl90IERlUmVn
aXN0ZXJTZW5kUGF5bG9hZChpbnQ4X3QgcGF5bG9hZF90eXBlKSBvdmVycmlkZTsKIAorICB2b2lk
IFNldEV4dG1hcEFsbG93TWl4ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIG92ZXJyaWRlOwor
CiAgIC8vIFJlZ2lzdGVyIFJUUCBoZWFkZXIgZXh0ZW5zaW9uLgogICBpbnQzMl90IFJlZ2lzdGVy
U2VuZFJ0cEhlYWRlckV4dGVuc2lvbihSVFBFeHRlbnNpb25UeXBlIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgaWQpIG92ZXJyaWRlOwpAQCAt
MTE1LDYgKzEyOCw4IEBAIGNsYXNzIE1vZHVsZVJ0cFJ0Y3BJbXBsIDogcHVibGljIFJ0cFJ0Y3As
IHB1YmxpYyBSVENQUmVjZWl2ZXI6Ok1vZHVsZVJ0cFJ0Y3AgewogCiAgIGJvb2wgU2VuZGluZ01l
ZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgdm9pZCBTZXRBc1BhcnRPZkFsbG9jYXRpb24oYm9v
bCBwYXJ0X29mX2FsbG9jYXRpb24pIG92ZXJyaWRlOworCiAgIC8vIFVzZWQgYnkgdGhlIGNvZGVj
IG1vZHVsZSB0byBkZWxpdmVyIGEgdmlkZW8gb3IgYXVkaW8gZnJhbWUgZm9yCiAgIC8vIHBhY2tl
dGl6YXRpb24uCiAgIGJvb2wgU2VuZE91dGdvaW5nRGF0YShGcmFtZVR5cGUgZnJhbWVfdHlwZSwK
QEAgLTMxMSw3ICszMjYsNiBAQCBjbGFzcyBNb2R1bGVSdHBSdGNwSW1wbCA6IHB1YmxpYyBSdHBS
dGNwLCBwdWJsaWMgUlRDUFJlY2VpdmVyOjpNb2R1bGVSdHBSdGNwIHsKICBwcml2YXRlOgogICBG
UklFTkRfVEVTVF9BTExfUFJFRklYRVMoUnRwUnRjcEltcGxUZXN0LCBSdHQpOwogICBGUklFTkRf
VEVTVF9BTExfUFJFRklYRVMoUnRwUnRjcEltcGxUZXN0LCBSdHRGb3JSZWNlaXZlck9ubHkpOwot
ICBpbnQ2NF90IFJ0Y3BSZXBvcnRJbnRlcnZhbCgpOwogICB2b2lkIFNldFJ0Y3BSZWNlaXZlclNz
cmNzKHVpbnQzMl90IG1haW5fc3NyYyk7CiAKICAgdm9pZCBzZXRfcnR0X21zKGludDY0X3QgcnR0
X21zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2ltcGxfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfcnRjcF9pbXBsX3VuaXR0ZXN0LmNjCmluZGV4IDUxNjBhNjRiZTczZDg5MjI3
MGVjM2NlODExZWFkODAzZWFiNjdkMjQuLjYzMmE1MzdlODAyOTEwMWI1MDY5ZmQyNjkxM2RjNzQ0
NWY5MGE0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9ydGNwX2ltcGxfdW5pdHRlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvcnRwX3J0Y3BfaW1wbF91bml0dGVzdC5jYwpAQCAtNDksNyArNDksNyBA
QCBjbGFzcyBSdGNwUnR0U3RhdHNUZXN0SW1wbCA6IHB1YmxpYyBSdGNwUnR0U3RhdHMgewogICBp
bnQ2NF90IHJ0dF9tc187CiB9OwogCi1jbGFzcyBTZW5kVHJhbnNwb3J0IDogcHVibGljIFRyYW5z
cG9ydCwgcHVibGljIFJ0cERhdGEgeworY2xhc3MgU2VuZFRyYW5zcG9ydCA6IHB1YmxpYyBUcmFu
c3BvcnQgewogIHB1YmxpYzoKICAgU2VuZFRyYW5zcG9ydCgpCiAgICAgICA6IHJlY2VpdmVyXyhu
dWxscHRyKSwKQEAgLTkwLDExICs5MCw2IEBAIGNsYXNzIFNlbmRUcmFuc3BvcnQgOiBwdWJsaWMg
VHJhbnNwb3J0LCBwdWJsaWMgUnRwRGF0YSB7CiAgICAgKytydGNwX3BhY2tldHNfc2VudF87CiAg
ICAgcmV0dXJuIHRydWU7CiAgIH0KLSAgaW50MzJfdCBPblJlY2VpdmVkUGF5bG9hZERhdGEoY29u
c3QgdWludDhfdCogcGF5bG9hZF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgcGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJSdGNSVFBIZWFkZXIqIHJ0cF9oZWFkZXIpIG92ZXJyaWRlIHsKLSAgICByZXR1cm4g
MDsKLSAgfQogICB2b2lkIFNldEtlZXBhbGl2ZVBheWxvYWRUeXBlKHVpbnQ4X3QgcGF5bG9hZF90
eXBlKSB7CiAgICAga2VlcGFsaXZlX3BheWxvYWRfdHlwZV8gPSBwYXlsb2FkX3R5cGU7CiAgIH0K
QEAgLTEyOSw3ICsxMjQsNyBAQCBjbGFzcyBSdHBSdGNwTW9kdWxlIDogcHVibGljIFJ0Y3BQYWNr
ZXRUeXBlQ291bnRlck9ic2VydmVyIHsKICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVJ0cFJ0Y3BJ
bXBsPiBpbXBsXzsKICAgdWludDMyX3QgcmVtb3RlX3NzcmNfOwogICBSdHBLZWVwQWxpdmVDb25m
aWcga2VlcGFsaXZlX2NvbmZpZ187Ci0gIFJ0Y3BJbnRlcnZhbENvbmZpZyBydGNwX2ludGVydmFs
X2NvbmZpZ187CisgIGludCBydGNwX3JlcG9ydF9pbnRlcnZhbF9tc18gPSAwOwogCiAgIHZvaWQg
U2V0UmVtb3RlU3NyYyh1aW50MzJfdCBzc3JjKSB7CiAgICAgcmVtb3RlX3NzcmNfID0gc3NyYzsK
QEAgLTE2NCw4ICsxNTksOCBAQCBjbGFzcyBSdHBSdGNwTW9kdWxlIDogcHVibGljIFJ0Y3BQYWNr
ZXRUeXBlQ291bnRlck9ic2VydmVyIHsKICAgICBDcmVhdGVNb2R1bGVJbXBsKCk7CiAgICAgdHJh
bnNwb3J0Xy5TZXRLZWVwYWxpdmVQYXlsb2FkVHlwZShjb25maWcucGF5bG9hZF90eXBlKTsKICAg
fQotICB2b2lkIFNldFJ0Y3BJbnRlcnZhbENvbmZpZ0FuZFJlc2V0KGNvbnN0IFJ0Y3BJbnRlcnZh
bENvbmZpZyYgY29uZmlnKSB7Ci0gICAgcnRjcF9pbnRlcnZhbF9jb25maWdfID0gY29uZmlnOwor
ICB2b2lkIFNldFJ0Y3BSZXBvcnRJbnRlcnZhbEFuZFJlc2V0KGludCBydGNwX3JlcG9ydF9pbnRl
cnZhbF9tcykgeworICAgIHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zXyA9IHJ0Y3BfcmVwb3J0X2lu
dGVydmFsX21zOwogICAgIENyZWF0ZU1vZHVsZUltcGwoKTsKICAgfQogCkBAIC0xNzksNyArMTc0
LDcgQEAgY2xhc3MgUnRwUnRjcE1vZHVsZSA6IHB1YmxpYyBSdGNwUGFja2V0VHlwZUNvdW50ZXJP
YnNlcnZlciB7CiAgICAgY29uZmlnLnJ0Y3BfcGFja2V0X3R5cGVfY291bnRlcl9vYnNlcnZlciA9
IHRoaXM7CiAgICAgY29uZmlnLnJ0dF9zdGF0cyA9ICZydHRfc3RhdHNfOwogICAgIGNvbmZpZy5r
ZWVwYWxpdmVfY29uZmlnID0ga2VlcGFsaXZlX2NvbmZpZ187Ci0gICAgY29uZmlnLnJ0Y3BfaW50
ZXJ2YWxfY29uZmlnID0gcnRjcF9pbnRlcnZhbF9jb25maWdfOworICAgIGNvbmZpZy5ydGNwX3Jl
cG9ydF9pbnRlcnZhbF9tcyA9IHJ0Y3BfcmVwb3J0X2ludGVydmFsX21zXzsKIAogICAgIGltcGxf
LnJlc2V0KG5ldyBNb2R1bGVSdHBSdGNwSW1wbChjb25maWcpKTsKICAgICBpbXBsXy0+U2V0UlRD
UFN0YXR1cyhSdGNwTW9kZTo6a0NvbXBvdW5kKTsKQEAgLTY0OCwxMSArNjQzLDggQEAgVEVTVF9G
KFJ0cFJ0Y3BJbXBsVGVzdCwgU2VuZHNLZWVwYWxpdmVBZnRlclRpbW91dCkgewogVEVTVF9GKFJ0
cFJ0Y3BJbXBsVGVzdCwgQ29uZmlndXJhYmxlUnRjcFJlcG9ydEludGVydmFsKSB7CiAgIGNvbnN0
IGludCBrVmlkZW9SZXBvcnRJbnRlcnZhbCA9IDMwMDA7CiAKLSAgUnRjcEludGVydmFsQ29uZmln
IGNvbmZpZzsKLSAgY29uZmlnLnZpZGVvX2ludGVydmFsX21zID0ga1ZpZGVvUmVwb3J0SW50ZXJ2
YWw7Ci0KICAgLy8gUmVjcmVhdGUgc2VuZGVyIGltcGwgd2l0aCBuZXcgY29uZmlndXJhdGlvbiwg
YW5kIHJlZG8gc2V0dXAuCi0gIHNlbmRlcl8uU2V0UnRjcEludGVydmFsQ29uZmlnQW5kUmVzZXQo
Y29uZmlnKTsKKyAgc2VuZGVyXy5TZXRSdGNwUmVwb3J0SW50ZXJ2YWxBbmRSZXNldChrVmlkZW9S
ZXBvcnRJbnRlcnZhbCk7CiAgIFNldFVwKCk7CiAKICAgU2VuZEZyYW1lKCZzZW5kZXJfLCBrQmFz
ZUxheWVyVGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfc2VuZGVyLmNjCmluZGV4IDlmMTBjNDBlNTc1NDAyNjk1NTIzNDg1MjAwNzE5N2UxNzVi
ZDczNjkuLmRkZjkxZjVmNWEyZDU4MGQ1Zjk5ZmY3ZjkyZTc3N2Y0MDQzNmUwNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9zZW5kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlci5jYwpA
QCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRl
ICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvZXZlbnRzL3J0Y19ldmVudF9ydHBfcGFja2V0X291dGdv
aW5nLmgiCiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19ldmVudF9sb2cuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvci90ZXN0L2J3ZV90ZXN0
X2xvZ2dpbmcuaCIKQEAgLTk0LDE0ICs5NSw2IEBAIGNvbnN0IGNoYXIqIEZyYW1lVHlwZVRvU3Ry
aW5nKEZyYW1lVHlwZSBmcmFtZV90eXBlKSB7CiAgIH0KICAgcmV0dXJuICIiOwogfQotCi12b2lk
IENvdW50UGFja2V0KFJ0cFBhY2tldENvdW50ZXIqIGNvdW50ZXIsIGNvbnN0IFJ0cFBhY2tldFRv
U2VuZCYgcGFja2V0KSB7Ci0gICsrY291bnRlci0+cGFja2V0czsKLSAgY291bnRlci0+aGVhZGVy
X2J5dGVzICs9IHBhY2tldC5oZWFkZXJzX3NpemUoKTsKLSAgY291bnRlci0+cGFkZGluZ19ieXRl
cyArPSBwYWNrZXQucGFkZGluZ19zaXplKCk7Ci0gIGNvdW50ZXItPnBheWxvYWRfYnl0ZXMgKz0g
cGFja2V0LnBheWxvYWRfc2l6ZSgpOwotfQotCiB9ICAvLyBuYW1lc3BhY2UKIAogUlRQU2VuZGVy
OjpSVFBTZW5kZXIoCkBAIC0xMTksMjQgKzExMiwzMyBAQCBSVFBTZW5kZXI6OlJUUFNlbmRlcigK
ICAgICBTZW5kUGFja2V0T2JzZXJ2ZXIqIHNlbmRfcGFja2V0X29ic2VydmVyLAogICAgIFJhdGVM
aW1pdGVyKiByZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXIsCiAgICAgT3ZlcmhlYWRPYnNlcnZl
ciogb3ZlcmhlYWRfb2JzZXJ2ZXIsCi0gICAgYm9vbCBwb3B1bGF0ZV9uZXR3b3JrMl90aW1lc3Rh
bXApCisgICAgYm9vbCBwb3B1bGF0ZV9uZXR3b3JrMl90aW1lc3RhbXAsCisgICAgRnJhbWVFbmNy
eXB0b3JJbnRlcmZhY2UqIGZyYW1lX2VuY3J5cHRvciwKKyAgICBib29sIHJlcXVpcmVfZnJhbWVf
ZW5jcnlwdGlvbiwKKyAgICBib29sIGV4dG1hcF9hbGxvd19taXhlZCkKICAgICA6IGNsb2NrXyhj
bG9jayksCiAgICAgICAvLyBUT0RPKGhvbG1lcik6IFJlbW92ZSB0aGlzIGNvbnZlcnNpb24/CiAg
ICAgICBjbG9ja19kZWx0YV9tc18oY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSAtIHJ0Yzo6
VGltZU1pbGxpcygpKSwKICAgICAgIHJhbmRvbV8oY2xvY2tfLT5UaW1lSW5NaWNyb3NlY29uZHMo
KSksCiAgICAgICBhdWRpb19jb25maWd1cmVkXyhhdWRpbyksCiAgICAgICBhdWRpb18oYXVkaW8g
PyBuZXcgUlRQU2VuZGVyQXVkaW8oY2xvY2ssIHRoaXMpIDogbnVsbHB0ciksCi0gICAgICB2aWRl
b18oYXVkaW8gPyBudWxscHRyIDogbmV3IFJUUFNlbmRlclZpZGVvKGNsb2NrLCB0aGlzLCBmbGV4
ZmVjX3NlbmRlcikpLAorICAgICAgdmlkZW9fKGF1ZGlvID8gbnVsbHB0cgorICAgICAgICAgICAg
ICAgICAgIDogbmV3IFJUUFNlbmRlclZpZGVvKGNsb2NrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxleGZlY19zZW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWVfZW5jcnlwdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbikpLAogICAgICAgcGFjZWRfc2VuZGVy
XyhwYWNlZF9zZW5kZXIpLAogICAgICAgdHJhbnNwb3J0X3NlcXVlbmNlX251bWJlcl9hbGxvY2F0
b3JfKHNlcXVlbmNlX251bWJlcl9hbGxvY2F0b3IpLAogICAgICAgdHJhbnNwb3J0X2ZlZWRiYWNr
X29ic2VydmVyXyh0cmFuc3BvcnRfZmVlZGJhY2tfb2JzZXJ2ZXIpLAogICAgICAgbGFzdF9jYXB0
dXJlX3RpbWVfbXNfc2VudF8oMCksCiAgICAgICB0cmFuc3BvcnRfKHRyYW5zcG9ydCksCi0gICAg
ICBzZW5kaW5nX21lZGlhXyh0cnVlKSwgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBz
ZW5kaW5nIG1lZGlhLgorICAgICAgc2VuZGluZ19tZWRpYV8odHJ1ZSksICAvLyBEZWZhdWx0IHRv
IHNlbmRpbmcgbWVkaWEuCisgICAgICBmb3JjZV9wYXJ0X29mX2FsbG9jYXRpb25fKGZhbHNlKSwK
ICAgICAgIG1heF9wYWNrZXRfc2l6ZV8oSVBfUEFDS0VUX1NJWkUgLSAyOCksICAvLyBEZWZhdWx0
IGlzIElQLXY0L1VEUC4KICAgICAgIGxhc3RfcGF5bG9hZF90eXBlXygtMSksCiAgICAgICBwYXls
b2FkX3R5cGVfbWFwXygpLAotICAgICAgcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXygpLAorICAg
ICAgcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXyhleHRtYXBfYWxsb3dfbWl4ZWQpLAogICAgICAg
cGFja2V0X2hpc3RvcnlfKGNsb2NrKSwKICAgICAgIGZsZXhmZWNfcGFja2V0X2hpc3RvcnlfKGNs
b2NrKSwKICAgICAgIC8vIFN0YXRpc3RpY3MKQEAgLTE2Nyw5ICsxNjksNyBAQCBSVFBTZW5kZXI6
OlJUUFNlbmRlcigKICAgICAgIG92ZXJoZWFkX29ic2VydmVyXyhvdmVyaGVhZF9vYnNlcnZlciks
CiAgICAgICBwb3B1bGF0ZV9uZXR3b3JrMl90aW1lc3RhbXBfKHBvcHVsYXRlX25ldHdvcmsyX3Rp
bWVzdGFtcCksCiAgICAgICBzZW5kX3NpZGVfYndlX3dpdGhfb3ZlcmhlYWRfKAotICAgICAgICAg
IHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxlZCgiV2ViUlRDLVNlbmRTaWRlQndlLVdpdGhP
dmVyaGVhZCIpKSwKLSAgICAgIHVubGltaXRlZF9yZXRyYW5zbWlzc2lvbl9leHBlcmltZW50XygK
LSAgICAgICAgICBmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtVW5saW1pdGVkU2NyZWVu
c2hhcmVSZXRyYW5zbWlzc2lvbiIpKSB7CisgICAgICAgICAgd2VicnRjOjpmaWVsZF90cmlhbDo6
SXNFbmFibGVkKCJXZWJSVEMtU2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikpIHsKICAgLy8gVGhp
cyByYW5kb20gaW5pdGlhbGl6YXRpb24gaXMgbm90IGludGVuZGVkIHRvIGJlIGNyeXB0b2dyYXBo
aWMgc3Ryb25nLgogICB0aW1lc3RhbXBfb2Zmc2V0XyA9IHJhbmRvbV8uUmFuZDx1aW50MzJfdD4o
KTsKICAgLy8gUmFuZG9tIHN0YXJ0LCAxNiBiaXRzLiBDYW4ndCBiZSAwLgpAQCAtMjM5LDYgKzIz
OSwxMSBAQCB1aW50MzJfdCBSVFBTZW5kZXI6Ok5hY2tPdmVyaGVhZFJhdGUoKSBjb25zdCB7CiAg
IHJldHVybiBuYWNrX2JpdHJhdGVfc2VudF8uUmF0ZShjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25k
cygpKS52YWx1ZV9vcigwKTsKIH0KIAordm9pZCBSVFBTZW5kZXI6OlNldEV4dG1hcEFsbG93TWl4
ZWQoYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgcnRjOjpDcml0U2NvcGUgbG9jaygmc2Vu
ZF9jcml0c2VjdF8pOworICBydHBfaGVhZGVyX2V4dGVuc2lvbl9tYXBfLlNldEV4dG1hcEFsbG93
TWl4ZWQoZXh0bWFwX2FsbG93X21peGVkKTsKK30KKwogaW50MzJfdCBSVFBTZW5kZXI6OlJlZ2lz
dGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lvblR5cGUgdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGlkKSB7CiAgIHJ0Yzo6
Q3JpdFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsKQEAgLTI2MCwxMyArMjY1LDEyIEBAIGlu
dDMyX3QgUlRQU2VuZGVyOjpEZXJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKFJUUEV4dGVuc2lv
blR5cGUgdHlwZSkgewogICByZXR1cm4gcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwXy5EZXJlZ2lz
dGVyKHR5cGUpOwogfQogCi1pbnQzMl90IFJUUFNlbmRlcjo6UmVnaXN0ZXJQYXlsb2FkKAotICAg
IGNvbnN0IGNoYXIgcGF5bG9hZF9uYW1lW1JUUF9QQVlMT0FEX05BTUVfU0laRV0sCi0gICAgaW50
OF90IHBheWxvYWRfbnVtYmVyLAotICAgIHVpbnQzMl90IGZyZXF1ZW5jeSwKLSAgICBzaXplX3Qg
Y2hhbm5lbHMsCi0gICAgdWludDMyX3QgcmF0ZSkgewotICBSVENfRENIRUNLX0xUKHN0cmxlbihw
YXlsb2FkX25hbWUpLCBSVFBfUEFZTE9BRF9OQU1FX1NJWkUpOworaW50MzJfdCBSVFBTZW5kZXI6
OlJlZ2lzdGVyUGF5bG9hZChhYnNsOjpzdHJpbmdfdmlldyBwYXlsb2FkX25hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDhfdCBwYXlsb2FkX251bWJlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJlcXVlbmN5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2hhbm5lbHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJhdGUpIHsKKyAgUlRDX0RDSEVDS19M
VChwYXlsb2FkX25hbWUuc2l6ZSgpLCBSVFBfUEFZTE9BRF9OQU1FX1NJWkUpOwogICBydGM6OkNy
aXRTY29wZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7CiAKICAgc3RkOjptYXA8aW50OF90LCBSdHBV
dGlsaXR5OjpQYXlsb2FkKj46Oml0ZXJhdG9yIGl0ID0KQEAgLTI3OCw4ICsyODIsNyBAQCBpbnQz
Ml90IFJUUFNlbmRlcjo6UmVnaXN0ZXJQYXlsb2FkKAogICAgIFJUQ19EQ0hFQ0socGF5bG9hZCk7
CiAKICAgICAvLyBDaGVjayBpZiBpdCdzIHRoZSBzYW1lIGFzIHdlIGFscmVhZHkgaGF2ZS4KLSAg
ICBpZiAoUnRwVXRpbGl0eTo6U3RyaW5nQ29tcGFyZShwYXlsb2FkLT5uYW1lLCBwYXlsb2FkX25h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRQX1BBWUxPQURfTkFNRV9T
SVpFIC0gMSkpIHsKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkLT5uYW1l
LCBwYXlsb2FkX25hbWUpKSB7CiAgICAgICBpZiAoYXVkaW9fY29uZmlndXJlZF8gJiYgcGF5bG9h
ZC0+dHlwZVNwZWNpZmljLmlzX2F1ZGlvKCkpIHsKICAgICAgICAgYXV0byYgcCA9IHBheWxvYWQt
PnR5cGVTcGVjaWZpYy5hdWRpb19wYXlsb2FkKCk7CiAgICAgICAgIGlmIChydGM6OlNhZmVFcShw
LmZvcm1hdC5jbG9ja3JhdGVfaHosIGZyZXF1ZW5jeSkgJiYKQEAgLTQyNiwxMSArNDI5LDYgQEAg
Ym9vbCBSVFBTZW5kZXI6OlNlbmRPdXRnb2luZ0RhdGEoRnJhbWVUeXBlIGZyYW1lX3R5cGUsCiAg
ICAgICAqdHJhbnNwb3J0X2ZyYW1lX2lkX291dCA9IHJ0cF90aW1lc3RhbXA7CiAgICAgaWYgKCFz
ZW5kaW5nX21lZGlhXykKICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gQ2FjaGUgdmlkZW8g
Y29udGVudCB0eXBlLgotICAgIGlmICghYXVkaW9fY29uZmlndXJlZF8gJiYgcnRwX2hlYWRlcikg
ewotICAgICAgdmlkZW9fY29udGVudF90eXBlXyA9IHJ0cF9oZWFkZXItPmNvbnRlbnRfdHlwZTsK
LSAgICB9CiAgIH0KICAgVmlkZW9Db2RlY1R5cGUgdmlkZW9fdHlwZSA9IGtWaWRlb0NvZGVjR2Vu
ZXJpYzsKICAgaWYgKENoZWNrUGF5bG9hZFR5cGUocGF5bG9hZF90eXBlLCAmdmlkZW9fdHlwZSkg
IT0gMCkgewpAQCAtNjE5LDEwICs2MTcsMTYgQEAgc2l6ZV90IFJUUFNlbmRlcjo6U2VuZFBhZERh
dGEoc2l6ZV90IGJ5dGVzLAogICAgIFBhY2tldE9wdGlvbnMgb3B0aW9uczsKICAgICAvLyBQYWRk
aW5nIHBhY2tldHMgYXJlIG5ldmVyIHJldHJhbnNtaXNzaW9ucy4KICAgICBvcHRpb25zLmlzX3Jl
dHJhbnNtaXQgPSBmYWxzZTsKLSAgICBib29sIGhhc190cmFuc3BvcnRfc2VxX251bSA9Ci0gICAg
ICAgIFVwZGF0ZVRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyKCZwYWRkaW5nX3BhY2tldCwgJm9wdGlv
bnMucGFja2V0X2lkKTsKLSAgICBwYWRkaW5nX3BhY2tldC5TZXRQYWRkaW5nKHBhZGRpbmdfYnl0
ZXNfaW5fcGFja2V0LCAmcmFuZG9tXyk7Ci0KKyAgICBib29sIGhhc190cmFuc3BvcnRfc2VxX251
bTsKKyAgICB7CisgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7Cisg
ICAgICBoYXNfdHJhbnNwb3J0X3NlcV9udW0gPQorICAgICAgICAgIFVwZGF0ZVRyYW5zcG9ydFNl
cXVlbmNlTnVtYmVyKCZwYWRkaW5nX3BhY2tldCwgJm9wdGlvbnMucGFja2V0X2lkKTsKKyAgICAg
IG9wdGlvbnMuaW5jbHVkZWRfaW5fYWxsb2NhdGlvbiA9CisgICAgICAgICAgaGFzX3RyYW5zcG9y
dF9zZXFfbnVtIHx8IGZvcmNlX3BhcnRfb2ZfYWxsb2NhdGlvbl87CisgICAgICBvcHRpb25zLmlu
Y2x1ZGVkX2luX2ZlZWRiYWNrID0gaGFzX3RyYW5zcG9ydF9zZXFfbnVtOworICAgIH0KKyAgICBw
YWRkaW5nX3BhY2tldC5TZXRQYWRkaW5nKHBhZGRpbmdfYnl0ZXNfaW5fcGFja2V0KTsKICAgICBp
ZiAoaGFzX3RyYW5zcG9ydF9zZXFfbnVtKSB7CiAgICAgICBBZGRQYWNrZXRUb1RyYW5zcG9ydEZl
ZWRiYWNrKG9wdGlvbnMucGFja2V0X2lkLCBwYWRkaW5nX3BhY2tldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFjaW5nX2luZm8pOwpAQCAtNjU0LDcgKzY1OCw3IEBAIGlu
dDMyX3QgUlRQU2VuZGVyOjpSZVNlbmRQYWNrZXQodWludDE2X3QgcGFja2V0X2lkKSB7CiAgIC8v
IFRyeSB0byBmaW5kIHBhY2tldCBpbiBSVFAgcGFja2V0IGhpc3RvcnkuIEFsc28gdmVyaWZ5IFJU
VCBoZXJlLCBzbyB0aGF0IHdlCiAgIC8vIGRvbid0IHJldHJhbnNtaXQgdG9vIG9mdGVuLgogICBh
YnNsOjpvcHRpb25hbDxSdHBQYWNrZXRIaXN0b3J5OjpQYWNrZXRTdGF0ZT4gc3RvcmVkX3BhY2tl
dCA9Ci0gICAgICBwYWNrZXRfaGlzdG9yeV8uR2V0UGFja2V0U3RhdGUocGFja2V0X2lkLCB0cnVl
KTsKKyAgICAgIHBhY2tldF9oaXN0b3J5Xy5HZXRQYWNrZXRTdGF0ZShwYWNrZXRfaWQpOwogICBp
ZiAoIXN0b3JlZF9wYWNrZXQpIHsKICAgICAvLyBQYWNrZXQgbm90IGZvdW5kLgogICAgIHJldHVy
biAwOwpAQCAtNjY0LDIwICs2NjgsOSBAQCBpbnQzMl90IFJUUFNlbmRlcjo6UmVTZW5kUGFja2V0
KHVpbnQxNl90IHBhY2tldF9pZCkgewogCiAgIC8vIFNraXAgcmV0cmFuc21pc3Npb24gcmF0ZSBj
aGVjayBpZiBub3QgY29uZmlndXJlZC4KICAgaWYgKHJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRl
cl8pIHsKLSAgICAvLyBTa2lwIHJldHJhbnNtaXNzaW9uIHJhdGUgY2hlY2sgaWYgc2VuZGluZyBz
Y3JlZW5zaGFyZSBhbmQgdGhlIGV4cGVyaW1lbnQKLSAgICAvLyBpcyBvbi4KLSAgICBib29sIHNr
aXBfcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdCA9IGZhbHNlOwotICAgIGlmICh1bmxpbWl0ZWRf
cmV0cmFuc21pc3Npb25fZXhwZXJpbWVudF8pIHsKLSAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2so
JnNlbmRfY3JpdHNlY3RfKTsKLSAgICAgIHNraXBfcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdCA9
Ci0gICAgICAgICAgdmlkZW9fY29udGVudF90eXBlXyAmJgotICAgICAgICAgIHZpZGVvY29udGVu
dHR5cGVoZWxwZXJzOjpJc1NjcmVlbnNoYXJlKCp2aWRlb19jb250ZW50X3R5cGVfKTsKLSAgICB9
Ci0KICAgICAvLyBDaGVjayBpZiB3ZSdyZSBvdmVydXNpbmcgcmV0cmFuc21pc3Npb24gYml0cmF0
ZS4KICAgICAvLyBUT0RPKHNwcmFuZyk6IEFkZCBoaXN0b2dyYW1zIGZvciBuYWNrIHN1Y2Nlc3Mg
b3IgZmFpbHVyZSByZWFzb25zLgotICAgIGlmICghc2tpcF9yZXRyYW5zbWlzc2lvbl9yYXRlX2xp
bWl0ICYmCi0gICAgICAgICFyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLT5UcnlVc2VSYXRl
KHBhY2tldF9zaXplKSkgeworICAgIGlmICghcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXy0+
VHJ5VXNlUmF0ZShwYWNrZXRfc2l6ZSkpIHsKICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgIH0K
QEAgLTY5Niw3ICs2ODksNyBAQCBpbnQzMl90IFJUUFNlbmRlcjo6UmVTZW5kUGFja2V0KHVpbnQx
Nl90IHBhY2tldF9pZCkgewogICB9CiAKICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2Vu
ZD4gcGFja2V0ID0KLSAgICAgIHBhY2tldF9oaXN0b3J5Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGlt
ZShwYWNrZXRfaWQsIHRydWUpOworICAgICAgcGFja2V0X2hpc3RvcnlfLkdldFBhY2tldEFuZFNl
dFNlbmRUaW1lKHBhY2tldF9pZCk7CiAgIGlmICghcGFja2V0KSB7CiAgICAgLy8gUGFja2V0IGNv
dWxkIHRoZW9yZXRpY2FsbHkgdGltZSBvdXQgYmV0d2VlbiB0aGUgZmlyc3QgY2hlY2sgYW5kIHRo
aXMgb25lLgogICAgIHJldHVybiAwOwpAQCAtNzc0LDE3ICs3NjcsMTQgQEAgYm9vbCBSVFBTZW5k
ZXI6OlRpbWVUb1NlbmRQYWNrZXQodWludDMyX3Qgc3NyYywKICAgICByZXR1cm4gdHJ1ZTsKIAog
ICBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBwYWNrZXQ7Ci0gIC8vIE5vIG5lZWQg
dG8gdmVyaWZ5IFJUVCBoZXJlLCBpdCBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQgYmVmb3JlIHB1
dHRpbmcgdGhlCi0gIC8vIHBhY2tldCBpbnRvIHRoZSBwYWNlci4gQnV0IF9kb18gdXBkYXRlIHRo
ZSBzZW5kIHRpbWUuCiAgIGlmIChzc3JjID09IFNTUkMoKSkgewotICAgIHBhY2tldCA9IHBhY2tl
dF9oaXN0b3J5Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShzZXF1ZW5jZV9udW1iZXIsIGZhbHNl
KTsKKyAgICBwYWNrZXQgPSBwYWNrZXRfaGlzdG9yeV8uR2V0UGFja2V0QW5kU2V0U2VuZFRpbWUo
c2VxdWVuY2VfbnVtYmVyKTsKICAgfSBlbHNlIGlmIChzc3JjID09IEZsZXhmZWNTc3JjKCkpIHsK
LSAgICBwYWNrZXQgPQotICAgICAgICBmbGV4ZmVjX3BhY2tldF9oaXN0b3J5Xy5HZXRQYWNrZXRB
bmRTZXRTZW5kVGltZShzZXF1ZW5jZV9udW1iZXIsIGZhbHNlKTsKKyAgICBwYWNrZXQgPSBmbGV4
ZmVjX3BhY2tldF9oaXN0b3J5Xy5HZXRQYWNrZXRBbmRTZXRTZW5kVGltZShzZXF1ZW5jZV9udW1i
ZXIpOwogICB9CiAKICAgaWYgKCFwYWNrZXQpIHsKLSAgICAvLyBQYWNrZXQgY2Fubm90IGJlIGZv
dW5kLgorICAgIC8vIFBhY2tldCBjYW5ub3QgYmUgZm91bmQgb3Igd2FzIHJlc2VuZCB0b28gcmVj
ZW50bHkuCiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIApAQCAtODM4LDcgKzgyOCwxNiBAQCBib29s
IFJUUFNlbmRlcjo6UHJlcGFyZUFuZFNlbmRQYWNrZXQoc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tl
dFRvU2VuZD4gcGFja2V0LAogICAvLyBFLmcuIFJUUFNlbmRlcjo6VHJ5U2VuZFJlZHVuZGFudFBh
eWxvYWRzIGNhbGxzIFByZXBhcmVBbmRTZW5kUGFja2V0IHdpdGgKICAgLy8gc2VuZF9vdmVyX3J0
eCA9IHRydWUgYnV0IGlzX3JldHJhbnNtaXQgPSBmYWxzZS4KICAgb3B0aW9ucy5pc19yZXRyYW5z
bWl0ID0gaXNfcmV0cmFuc21pdCB8fCBzZW5kX292ZXJfcnR4OwotICBpZiAoVXBkYXRlVHJhbnNw
b3J0U2VxdWVuY2VOdW1iZXIocGFja2V0X3RvX3NlbmQsICZvcHRpb25zLnBhY2tldF9pZCkpIHsK
KyAgYm9vbCBoYXNfdHJhbnNwb3J0X3NlcV9udW07CisgIHsKKyAgICBydGM6OkNyaXRTY29wZSBs
b2NrKCZzZW5kX2NyaXRzZWN0Xyk7CisgICAgaGFzX3RyYW5zcG9ydF9zZXFfbnVtID0KKyAgICAg
ICAgVXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIocGFja2V0X3RvX3NlbmQsICZvcHRpb25z
LnBhY2tldF9pZCk7CisgICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uID0KKyAgICAg
ICAgaGFzX3RyYW5zcG9ydF9zZXFfbnVtIHx8IGZvcmNlX3BhcnRfb2ZfYWxsb2NhdGlvbl87Cisg
ICAgb3B0aW9ucy5pbmNsdWRlZF9pbl9mZWVkYmFjayA9IGhhc190cmFuc3BvcnRfc2VxX251bTsK
KyAgfQorICBpZiAoaGFzX3RyYW5zcG9ydF9zZXFfbnVtKSB7CiAgICAgQWRkUGFja2V0VG9UcmFu
c3BvcnRGZWVkYmFjayhvcHRpb25zLnBhY2tldF9pZCwgKnBhY2tldF90b19zZW5kLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFjaW5nX2luZm8pOwogICB9CkBAIC04NzYsMTMg
Kzg3NSwxMyBAQCB2b2lkIFJUUFNlbmRlcjo6VXBkYXRlUnRwU3RhdHMoY29uc3QgUnRwUGFja2V0
VG9TZW5kJiBwYWNrZXQsCiAgICAgY291bnRlcnMtPmZpcnN0X3BhY2tldF90aW1lX21zID0gbm93
X21zOwogCiAgIGlmIChJc0ZlY1BhY2tldChwYWNrZXQpKQotICAgIENvdW50UGFja2V0KCZjb3Vu
dGVycy0+ZmVjLCBwYWNrZXQpOworICAgIGNvdW50ZXJzLT5mZWMuQWRkUGFja2V0KHBhY2tldCk7
CiAKICAgaWYgKGlzX3JldHJhbnNtaXQpIHsKLSAgICBDb3VudFBhY2tldCgmY291bnRlcnMtPnJl
dHJhbnNtaXR0ZWQsIHBhY2tldCk7CisgICAgY291bnRlcnMtPnJldHJhbnNtaXR0ZWQuQWRkUGFj
a2V0KHBhY2tldCk7CiAgICAgbmFja19iaXRyYXRlX3NlbnRfLlVwZGF0ZShwYWNrZXQuc2l6ZSgp
LCBub3dfbXMpOwogICB9Ci0gIENvdW50UGFja2V0KCZjb3VudGVycy0+dHJhbnNtaXR0ZWQsIHBh
Y2tldCk7CisgIGNvdW50ZXJzLT50cmFuc21pdHRlZC5BZGRQYWNrZXQocGFja2V0KTsKIAogICBp
ZiAocnRwX3N0YXRzX2NhbGxiYWNrXykKICAgICBydHBfc3RhdHNfY2FsbGJhY2tfLT5EYXRhQ291
bnRlcnNVcGRhdGVkKCpjb3VudGVycywgcGFja2V0LlNzcmMoKSk7CkBAIC05MjAsMTUgKzkxOSw2
IEBAIGJvb2wgUlRQU2VuZGVyOjpTZW5kVG9OZXR3b3JrKHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNr
ZXRUb1NlbmQ+IHBhY2tldCwKICAgUlRDX0RDSEVDSyhwYWNrZXQpOwogICBpbnQ2NF90IG5vd19t
cyA9IGNsb2NrXy0+VGltZUluTWlsbGlzZWNvbmRzKCk7CiAKLSAgLy8gfGNhcHR1cmVfdGltZV9t
c3wgPD0gMCBpcyBjb25zaWRlcmVkIGludmFsaWQuCi0gIC8vIFRPRE8oaG9sbWVyKTogVGhpcyBz
aG91bGQgYmUgY2hhbmdlZCBhbGwgb3ZlciBWaWRlbyBFbmdpbmUgc28gdGhhdCBuZWdhdGl2ZQot
ICAvLyB0aW1lIGlzIGNvbnNpZGVyIGludmFsaWQsIHdoaWxlIDAgaXMgY29uc2lkZXJlZCBhIHZh
bGlkIHRpbWUuCi0gIGlmIChwYWNrZXQtPmNhcHR1cmVfdGltZV9tcygpID4gMCkgewotICAgIHBh
Y2tldC0+U2V0RXh0ZW5zaW9uPFRyYW5zbWlzc2lvbk9mZnNldD4oCi0gICAgICAgIGtUaW1lc3Rh
bXBUaWNrc1Blck1zICogKG5vd19tcyAtIHBhY2tldC0+Y2FwdHVyZV90aW1lX21zKCkpKTsKLSAg
fQotICBwYWNrZXQtPlNldEV4dGVuc2lvbjxBYnNvbHV0ZVNlbmRUaW1lPihBYnNvbHV0ZVNlbmRU
aW1lOjpNc1RvMjRCaXRzKG5vd19tcykpOwotCiAgIGlmICh2aWRlb18pIHsKICAgICBCV0VfVEVT
VF9MT0dHSU5HX1BMT1RfV0lUSF9TU1JDKDEsICJWaWRlb1RvdEJpdHJhdGVfa2JwcyIsIG5vd19t
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdHVhbFNlbmRCaXRyYXRl
S2JpdCgpLCBwYWNrZXQtPlNzcmMoKSk7CkBAIC05NzEsNyArOTYxLDMxIEBAIGJvb2wgUlRQU2Vu
ZGVyOjpTZW5kVG9OZXR3b3JrKHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBhY2tl
dCwKIAogICBQYWNrZXRPcHRpb25zIG9wdGlvbnM7CiAgIG9wdGlvbnMuaXNfcmV0cmFuc21pdCA9
IGZhbHNlOwotICBpZiAoVXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIocGFja2V0LmdldCgp
LCAmb3B0aW9ucy5wYWNrZXRfaWQpKSB7CisKKyAgLy8gfGNhcHR1cmVfdGltZV9tc3wgPD0gMCBp
cyBjb25zaWRlcmVkIGludmFsaWQuCisgIC8vIFRPRE8oaG9sbWVyKTogVGhpcyBzaG91bGQgYmUg
Y2hhbmdlZCBhbGwgb3ZlciBWaWRlbyBFbmdpbmUgc28gdGhhdCBuZWdhdGl2ZQorICAvLyB0aW1l
IGlzIGNvbnNpZGVyIGludmFsaWQsIHdoaWxlIDAgaXMgY29uc2lkZXJlZCBhIHZhbGlkIHRpbWUu
CisgIGlmIChwYWNrZXQtPmNhcHR1cmVfdGltZV9tcygpID4gMCkgeworICAgIHBhY2tldC0+U2V0
RXh0ZW5zaW9uPFRyYW5zbWlzc2lvbk9mZnNldD4oCisgICAgICAgIGtUaW1lc3RhbXBUaWNrc1Bl
ck1zICogKG5vd19tcyAtIHBhY2tldC0+Y2FwdHVyZV90aW1lX21zKCkpKTsKKworICAgIGlmIChw
b3B1bGF0ZV9uZXR3b3JrMl90aW1lc3RhbXBfICYmCisgICAgICAgIHBhY2tldC0+SGFzRXh0ZW5z
aW9uPFZpZGVvVGltaW5nRXh0ZW5zaW9uPigpKSB7CisgICAgICBwYWNrZXQtPnNldF9uZXR3b3Jr
Ml90aW1lX21zKG5vd19tcyk7CisgICAgfQorICB9CisgIHBhY2tldC0+U2V0RXh0ZW5zaW9uPEFi
c29sdXRlU2VuZFRpbWU+KEFic29sdXRlU2VuZFRpbWU6Ok1zVG8yNEJpdHMobm93X21zKSk7CisK
KyAgYm9vbCBoYXNfdHJhbnNwb3J0X3NlcV9udW07CisgIHsKKyAgICBydGM6OkNyaXRTY29wZSBs
b2NrKCZzZW5kX2NyaXRzZWN0Xyk7CisgICAgaGFzX3RyYW5zcG9ydF9zZXFfbnVtID0KKyAgICAg
ICAgVXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIocGFja2V0LmdldCgpLCAmb3B0aW9ucy5w
YWNrZXRfaWQpOworICAgIG9wdGlvbnMuaW5jbHVkZWRfaW5fYWxsb2NhdGlvbiA9CisgICAgICAg
IGhhc190cmFuc3BvcnRfc2VxX251bSB8fCBmb3JjZV9wYXJ0X29mX2FsbG9jYXRpb25fOworICAg
IG9wdGlvbnMuaW5jbHVkZWRfaW5fZmVlZGJhY2sgPSBoYXNfdHJhbnNwb3J0X3NlcV9udW07Cisg
IH0KKyAgaWYgKGhhc190cmFuc3BvcnRfc2VxX251bSkgewogICAgIEFkZFBhY2tldFRvVHJhbnNw
b3J0RmVlZGJhY2sob3B0aW9ucy5wYWNrZXRfaWQsICpwYWNrZXQuZ2V0KCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYWNlZFBhY2tldEluZm8oKSk7CiAgIH0KQEAgLTExNDEs
OCArMTE1NSwxNSBAQCB2b2lkIFJUUFNlbmRlcjo6R2V0RGF0YUNvdW50ZXJzKFN0cmVhbURhdGFD
b3VudGVycyogcnRwX3N0YXRzLAogCiBzdGQ6OnVuaXF1ZV9wdHI8UnRwUGFja2V0VG9TZW5kPiBS
VFBTZW5kZXI6OkFsbG9jYXRlUGFja2V0KCkgY29uc3QgewogICBydGM6OkNyaXRTY29wZSBsb2Nr
KCZzZW5kX2NyaXRzZWN0Xyk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBQYWNrZXRUb1NlbmQ+IHBh
Y2tldCgKLSAgICAgIG5ldyBSdHBQYWNrZXRUb1NlbmQoJnJ0cF9oZWFkZXJfZXh0ZW5zaW9uX21h
cF8sIG1heF9wYWNrZXRfc2l6ZV8pKTsKKyAgLy8gVE9ETyhkYW5pbGNoYXApOiBGaW5kIGJldHRl
ciBtb3RpdmF0b3IgYW5kIHZhbHVlIGZvciBleHRyYSBjYXBhY2l0eS4KKyAgLy8gUnRwUGFja2V0
aXplciBtaWdodCBzbGlnaHRseSBtaXNjYWx1bGF0ZSBuZWVkZWQgc2l6ZSwKKyAgLy8gU1JUUCBt
YXkgYmVuZWZpdCBmcm9tIGV4dHJhIHNwYWNlIGluIHRoZSBidWZmZXIgYW5kIGRvIGVuY3J5cHRp
b24gaW4gcGxhY2UKKyAgLy8gc2F2aW5nIHJlYWxsb2NhdGlvbi4KKyAgLy8gV2hpbGUgc2VuZGlu
ZyBzbGlnaHRseSBvdmVyc2l6ZWQgcGFja2V0IGluY3JlYXNlIGNoYW5jZSBvZiBkcm9wcGVkIHBh
Y2tldCwKKyAgLy8gaXQgaXMgYmV0dGVyIHRoYW4gY3Jhc2ggb24gZHJvcCBwYWNrZXQgd2l0aG91
dCB0cnlpbmcgdG8gc2VuZCBpdC4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQga0V4dHJhQ2FwYWNp
dHkgPSAxNjsKKyAgYXV0byBwYWNrZXQgPSBhYnNsOjptYWtlX3VuaXF1ZTxSdHBQYWNrZXRUb1Nl
bmQ+KAorICAgICAgJnJ0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcF8sIG1heF9wYWNrZXRfc2l6ZV8g
KyBrRXh0cmFDYXBhY2l0eSk7CiAgIFJUQ19EQ0hFQ0soc3NyY18pOwogICBwYWNrZXQtPlNldFNz
cmMoKnNzcmNfKTsKICAgcGFja2V0LT5TZXRDc3Jjcyhjc3Jjc18pOwpAQCAtMTE4MSwxMCArMTIw
Miw5IEBAIGJvb2wgUlRQU2VuZGVyOjpBc3NpZ25TZXF1ZW5jZU51bWJlcihSdHBQYWNrZXRUb1Nl
bmQqIHBhY2tldCkgewogfQogCiBib29sIFJUUFNlbmRlcjo6VXBkYXRlVHJhbnNwb3J0U2VxdWVu
Y2VOdW1iZXIoUnRwUGFja2V0VG9TZW5kKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBwYWNrZXRfaWQpIGNvbnN0IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHBhY2tldF9pZCkgewog
ICBSVENfRENIRUNLKHBhY2tldCk7CiAgIFJUQ19EQ0hFQ0socGFja2V0X2lkKTsKLSAgcnRjOjpD
cml0U2NvcGUgbG9jaygmc2VuZF9jcml0c2VjdF8pOwogICBpZiAoIXJ0cF9oZWFkZXJfZXh0ZW5z
aW9uX21hcF8uSXNSZWdpc3RlcmVkKFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyOjprSWQpKQogICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMTIwOSw2ICsxMjI5LDExIEBAIGJvb2wgUlRQU2VuZGVyOjpT
ZW5kaW5nTWVkaWEoKSBjb25zdCB7CiAgIHJldHVybiBzZW5kaW5nX21lZGlhXzsKIH0KIAordm9p
ZCBSVFBTZW5kZXI6OlNldEFzUGFydE9mQWxsb2NhdGlvbihib29sIHBhcnRfb2ZfYWxsb2NhdGlv
bikgeworICBydGM6OkNyaXRTY29wZSBsb2NrKCZzZW5kX2NyaXRzZWN0Xyk7CisgIGZvcmNlX3Bh
cnRfb2ZfYWxsb2NhdGlvbl8gPSBwYXJ0X29mX2FsbG9jYXRpb247Cit9CisKIHZvaWQgUlRQU2Vu
ZGVyOjpTZXRUaW1lc3RhbXBPZmZzZXQodWludDMyX3QgdGltZXN0YW1wKSB7CiAgIHJ0Yzo6Q3Jp
dFNjb3BlIGxvY2soJnNlbmRfY3JpdHNlY3RfKTsKICAgdGltZXN0YW1wX29mZnNldF8gPSB0aW1l
c3RhbXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
c2VuZGVyLmgKaW5kZXggNWE5M2Q3YTUyMDIxZTE0YzUwOGQ3NTRkMzA2ZTBhMmQ4ODRlYmYxYi4u
ZjliYmJkZDllMjJhMjNkZjAxZDIyYzE5ZDg3Y2M3MmI2OWM2ZGNkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX3NlbmRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXIuaApAQCAtMTcsMTAg
KzE3LDEwIEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNs
dWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKICNpbmNsdWRlICJhYnNsL3R5cGVzL29w
dGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKICNpbmNsdWRlICJhcGkvY2Fs
bC90cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29udGVudF90eXBlLmgi
CiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvZmxleGZlY19zZW5kZXIuaCIKICNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9leHRlbnNpb25fbWFwLmgi
CkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCitjbGFzcyBGcmFtZUVu
Y3J5cHRvckludGVyZmFjZTsKIGNsYXNzIE92ZXJoZWFkT2JzZXJ2ZXI7CiBjbGFzcyBSYXRlTGlt
aXRlcjsKIGNsYXNzIFJ0Y0V2ZW50TG9nOwpAQCAtNjMsNyArNjQsMTAgQEAgY2xhc3MgUlRQU2Vu
ZGVyIHsKICAgICAgICAgICAgIFNlbmRQYWNrZXRPYnNlcnZlciogc2VuZF9wYWNrZXRfb2JzZXJ2
ZXIsCiAgICAgICAgICAgICBSYXRlTGltaXRlciogbmFja19yYXRlX2xpbWl0ZXIsCiAgICAgICAg
ICAgICBPdmVyaGVhZE9ic2VydmVyKiBvdmVyaGVhZF9vYnNlcnZlciwKLSAgICAgICAgICAgIGJv
b2wgcG9wdWxhdGVfbmV0d29yazJfdGltZXN0YW1wKTsKKyAgICAgICAgICAgIGJvb2wgcG9wdWxh
dGVfbmV0d29yazJfdGltZXN0YW1wLAorICAgICAgICAgICAgRnJhbWVFbmNyeXB0b3JJbnRlcmZh
Y2UqIGZyYW1lX2VuY3J5cHRvciwKKyAgICAgICAgICAgIGJvb2wgcmVxdWlyZV9mcmFtZV9lbmNy
eXB0aW9uLAorICAgICAgICAgICAgYm9vbCBleHRtYXBfYWxsb3dfbWl4ZWQpOwogCiAgIH5SVFBT
ZW5kZXIoKTsKIApAQCAtNzUsNyArNzksNyBAQCBjbGFzcyBSVFBTZW5kZXIgewogICB1aW50MzJf
dCBGZWNPdmVyaGVhZFJhdGUoKSBjb25zdDsKICAgdWludDMyX3QgTmFja092ZXJoZWFkUmF0ZSgp
IGNvbnN0OwogCi0gIGludDMyX3QgUmVnaXN0ZXJQYXlsb2FkKGNvbnN0IGNoYXIqIHBheWxvYWRf
bmFtZSwKKyAgaW50MzJfdCBSZWdpc3RlclBheWxvYWQoYWJzbDo6c3RyaW5nX3ZpZXcgcGF5bG9h
ZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ4X3QgcGF5bG9hZF90
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBmcmVxdWVuY3ks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBjaGFubmVscywKQEAgLTg2
LDYgKzkwLDggQEAgY2xhc3MgUlRQU2VuZGVyIHsKICAgdm9pZCBTZXRTZW5kaW5nTWVkaWFTdGF0
dXMoYm9vbCBlbmFibGVkKTsKICAgYm9vbCBTZW5kaW5nTWVkaWEoKSBjb25zdDsKIAorICB2b2lk
IFNldEFzUGFydE9mQWxsb2NhdGlvbihib29sIHBhcnRfb2ZfYWxsb2NhdGlvbik7CisKICAgdm9p
ZCBHZXREYXRhQ291bnRlcnMoU3RyZWFtRGF0YUNvdW50ZXJzKiBydHBfc3RhdHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgIFN0cmVhbURhdGFDb3VudGVycyogcnR4X3N0YXRzKSBjb25zdDsKIApA
QCAtMTE0LDYgKzEyMCw4IEBAIGNsYXNzIFJUUFNlbmRlciB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCogdHJhbnNwb3J0X2ZyYW1lX2lkX291dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDY0X3QgZXhwZWN0ZWRfcmV0cmFuc21pc3Npb25fdGltZV9tcyk7CiAKKyAgdm9p
ZCBTZXRFeHRtYXBBbGxvd01peGVkKGJvb2wgZXh0bWFwX2FsbG93X21peGVkKTsKKwogICAvLyBS
VFAgaGVhZGVyIGV4dGVuc2lvbgogICBpbnQzMl90IFJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9u
KFJUUEV4dGVuc2lvblR5cGUgdHlwZSwgdWludDhfdCBpZCk7CiAgIGJvb2wgUmVnaXN0ZXJSdHBI
ZWFkZXJFeHRlbnNpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHVyaSwgaW50IGlkKTsKQEAgLTI0Nyw4
ICsyNTUsOCBAQCBjbGFzcyBSVFBTZW5kZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90IGNhcHR1cmVfdGltZV9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3Qgc3NyYyk7CiAKLSAgYm9vbCBVcGRhdGVUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcihSdHBQYWNr
ZXRUb1NlbmQqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQqIHBhY2tldF9pZCkgY29uc3Q7CisgIGJvb2wgVXBkYXRlVHJhbnNwb3J0U2VxdWVuY2VOdW1i
ZXIoUnRwUGFja2V0VG9TZW5kKiBwYWNrZXQsIGludCogcGFja2V0X2lkKQorICAgICAgUlRDX0VY
Q0xVU0lWRV9MT0NLU19SRVFVSVJFRChzZW5kX2NyaXRzZWN0Xyk7CiAKICAgdm9pZCBVcGRhdGVS
dHBTdGF0cyhjb25zdCBSdHBQYWNrZXRUb1NlbmQmIHBhY2tldCwKICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzX3J0eCwKQEAgLTI3Nyw3ICsyODUsNyBAQCBjbGFzcyBSVFBTZW5kZXIgewog
CiAgIFRyYW5zcG9ydCogdHJhbnNwb3J0XzsKICAgYm9vbCBzZW5kaW5nX21lZGlhXyBSVENfR1VB
UkRFRF9CWShzZW5kX2NyaXRzZWN0Xyk7Ci0KKyAgYm9vbCBmb3JjZV9wYXJ0X29mX2FsbG9jYXRp
b25fIFJUQ19HVUFSREVEX0JZKHNlbmRfY3JpdHNlY3RfKTsKICAgc2l6ZV90IG1heF9wYWNrZXRf
c2l6ZV87CiAKICAgaW50OF90IGxhc3RfcGF5bG9hZF90eXBlXyBSVENfR1VBUkRFRF9CWShzZW5k
X2NyaXRzZWN0Xyk7CkBAIC0zNDMsMTEgKzM1MSw2IEBAIGNsYXNzIFJUUFNlbmRlciB7CiAKICAg
Y29uc3QgYm9vbCBzZW5kX3NpZGVfYndlX3dpdGhfb3ZlcmhlYWRfOwogCi0gIGNvbnN0IGJvb2wg
dW5saW1pdGVkX3JldHJhbnNtaXNzaW9uX2V4cGVyaW1lbnRfOwotCi0gIGFic2w6Om9wdGlvbmFs
PFZpZGVvQ29udGVudFR5cGU+IHZpZGVvX2NvbnRlbnRfdHlwZV8KLSAgICAgIFJUQ19HVUFSREVE
X0JZKHNlbmRfY3JpdHNlY3RfKTsKLQogICBSVENfRElTQUxMT1dfSU1QTElDSVRfQ09OU1RSVUNU
T1JTKFJUUFNlbmRlcik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX2F1
ZGlvLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl9hdWRpby5jYwppbmRleCBiZjg2YTM5MzM5YmU3
M2Y5MDc4MzU5Yzc3NTViZGVkODc3NDFlYzQ2Li42MzZjY2NjZjBkOWI3ZmY5MGEwZGFkNGQzZDUy
OWFhYjZmZGIwZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX2F1ZGlvLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfYXVkaW8uY2MKQEAgLTExLDE2ICsxMSwxOCBAQAogI2lu
Y2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfYXVkaW8uaCIKIAogI2lu
Y2x1ZGUgPHN0cmluZy5oPgotCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+
CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2F1ZGlvX2Zvcm1hdC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVk
ZS9ydHBfcnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
Ynl0ZV9pby5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJf
ZXh0ZW5zaW9ucy5oIgorI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9wYWNr
ZXQuaCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcGFja2V0X3RvX3Nl
bmQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvdHJhY2VfZXZlbnQuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zMCwxNCArMzIs
MTMgQEAgUlRQU2VuZGVyQXVkaW86OlJUUFNlbmRlckF1ZGlvKENsb2NrKiBjbG9jaywgUlRQU2Vu
ZGVyKiBydHBfc2VuZGVyKQogCiBSVFBTZW5kZXJBdWRpbzo6flJUUFNlbmRlckF1ZGlvKCkge30K
IAotaW50MzJfdCBSVFBTZW5kZXJBdWRpbzo6UmVnaXN0ZXJBdWRpb1BheWxvYWQoCi0gICAgY29u
c3QgY2hhciBwYXlsb2FkTmFtZVtSVFBfUEFZTE9BRF9OQU1FX1NJWkVdLAotICAgIGNvbnN0IGlu
dDhfdCBwYXlsb2FkX3R5cGUsCi0gICAgY29uc3QgdWludDMyX3QgZnJlcXVlbmN5LAotICAgIGNv
bnN0IHNpemVfdCBjaGFubmVscywKLSAgICBjb25zdCB1aW50MzJfdCByYXRlLAotICAgIFJ0cFV0
aWxpdHk6OlBheWxvYWQqKiBwYXlsb2FkKSB7Ci0gIGlmIChSdHBVdGlsaXR5OjpTdHJpbmdDb21w
YXJlKHBheWxvYWROYW1lLCAiY24iLCAyKSkgeworaW50MzJfdCBSVFBTZW5kZXJBdWRpbzo6UmVn
aXN0ZXJBdWRpb1BheWxvYWQoYWJzbDo6c3RyaW5nX3ZpZXcgcGF5bG9hZF9uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50OF90IHBheWxv
YWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQzMl90IGZyZXF1ZW5jeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBjaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHJhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBVdGlsaXR5OjpQYXlsb2FkKiog
cGF5bG9hZCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25hbWUsICJj
biIpKSB7CiAgICAgcnRjOjpDcml0U2NvcGUgY3MoJnNlbmRfYXVkaW9fY3JpdHNlY3RfKTsKICAg
ICAvLyAgd2UgY2FuIGhhdmUgbXVsdGlwbGUgQ05HIHBheWxvYWQgdHlwZXMKICAgICBzd2l0Y2gg
KGZyZXF1ZW5jeSkgewpAQCAtNTYsNyArNTcsNyBAQCBpbnQzMl90IFJUUFNlbmRlckF1ZGlvOjpS
ZWdpc3RlckF1ZGlvUGF5bG9hZCgKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiAtMTsK
ICAgICB9Ci0gIH0gZWxzZSBpZiAoUnRwVXRpbGl0eTo6U3RyaW5nQ29tcGFyZShwYXlsb2FkTmFt
ZSwgInRlbGVwaG9uZS1ldmVudCIsIDE1KSkgeworICB9IGVsc2UgaWYgKGFic2w6OkVxdWFsc0ln
bm9yZUNhc2UocGF5bG9hZF9uYW1lLCAidGVsZXBob25lLWV2ZW50IikpIHsKICAgICBydGM6OkNy
aXRTY29wZSBjcygmc2VuZF9hdWRpb19jcml0c2VjdF8pOwogICAgIC8vIERvbid0IGFkZCBpdCB0
byB0aGUgbGlzdAogICAgIC8vIHdlIGRvbnQgd2FudCB0byBhbGxvdyBzZW5kIHdpdGggYSBEVE1G
IHBheWxvYWR0eXBlCkBAIC02NSw5ICs2Niw5IEBAIGludDMyX3QgUlRQU2VuZGVyQXVkaW86OlJl
Z2lzdGVyQXVkaW9QYXlsb2FkKAogICAgIHJldHVybiAwOwogICB9CiAgICpwYXlsb2FkID0gbmV3
IFJ0cFV0aWxpdHk6OlBheWxvYWQoCi0gICAgICBwYXlsb2FkTmFtZSwKKyAgICAgIHBheWxvYWRf
bmFtZSwKICAgICAgIFBheWxvYWRVbmlvbihBdWRpb1BheWxvYWR7Ci0gICAgICAgICAgU2RwQXVk
aW9Gb3JtYXQocGF5bG9hZE5hbWUsIGZyZXF1ZW5jeSwgY2hhbm5lbHMpLCByYXRlfSkpOworICAg
ICAgICAgIFNkcEF1ZGlvRm9ybWF0KHBheWxvYWRfbmFtZSwgZnJlcXVlbmN5LCBjaGFubmVscyks
IHJhdGV9KSk7CiAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2Vu
ZGVyX2F1ZGlvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX2F1ZGlvLmgKaW5kZXggNjNkZmMyYjk5
YzM5Mzg1Mjc4M2Q2YzgwZjc5N2E0YTUwZDNjYTJjZC4uMWRiZTViNTgxN2NjM2QxNjc0NjI5NzEx
YjEwNjM0MzQ0NWIxMDBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl9hdWRpby5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
cnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfYXVkaW8uaApAQCAtMTEsMTQgKzExLDE5IEBACiAj
aWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9TRU5ERVJfQVVESU9fSF8KICNkZWZp
bmUgTU9EVUxFU19SVFBfUlRDUF9TT1VSQ0VfUlRQX1NFTkRFUl9BVURJT19IXwogCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJhYnNsL3N0cmlu
Z3Mvc3RyaW5nX3ZpZXcuaCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChi
dWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2R0bWZfcXVl
dWUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9jb25maWcu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3V0aWxpdHkuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxz
ZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvb25ldGltZWV2ZW50LmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJz
L2luY2x1ZGUvY2xvY2suaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTI3LDcgKzMyLDcg
QEAgY2xhc3MgUlRQU2VuZGVyQXVkaW8gewogICBSVFBTZW5kZXJBdWRpbyhDbG9jayogY2xvY2ss
IFJUUFNlbmRlciogcnRwX3NlbmRlcik7CiAgIH5SVFBTZW5kZXJBdWRpbygpOwogCi0gIGludDMy
X3QgUmVnaXN0ZXJBdWRpb1BheWxvYWQoY29uc3QgY2hhciBwYXlsb2FkTmFtZVtSVFBfUEFZTE9B
RF9OQU1FX1NJWkVdLAorICBpbnQzMl90IFJlZ2lzdGVyQXVkaW9QYXlsb2FkKGFic2w6OnN0cmlu
Z192aWV3IHBheWxvYWRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ4
X3QgcGF5bG9hZF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGZyZXF1ZW5jeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2hhbm5l
bHMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvcnRwX3NlbmRlcl91bml0dGVzdC5jYwppbmRleCA4NmI5MmRhMmUwMGI5Y2QxNGNiZDM2MDZj
MzU1NWI4YmI0MWY3ODE2Li5hNjg3YmNiYjM1YjI3YWRjNzNiNjdlY2ZhMDgyMDQ0YjgyMjkxNmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3J0cF9zZW5kZXJfdW5pdHRlc3QuY2MKQEAgLTE4NCw3ICsxODQsOCBAQCBjbGFzcyBSdHBT
ZW5kZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxib29sPiB7CiAgICAg
ICAgIGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRfLCBwYWNlciA/ICZtb2NrX3BhY2Vk
X3NlbmRlcl8gOiBudWxscHRyLAogICAgICAgICBudWxscHRyLCAmc2VxX251bV9hbGxvY2F0b3Jf
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAogICAgICAgICAmbW9ja19ydGNf
ZXZlbnRfbG9nXywgJnNlbmRfcGFja2V0X29ic2VydmVyXywKLSAgICAgICAgJnJldHJhbnNtaXNz
aW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIHBvcHVsYXRlX25ldHdvcmsyKSk7CisgICAgICAg
ICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBwb3B1bGF0ZV9uZXR3b3Jr
MiwgbnVsbHB0ciwKKyAgICAgICAgZmFsc2UsIGZhbHNlKSk7CiAgICAgcnRwX3NlbmRlcl8tPlNl
dFNlcXVlbmNlTnVtYmVyKGtTZXFOdW0pOwogICAgIHJ0cF9zZW5kZXJfLT5TZXRUaW1lc3RhbXBP
ZmZzZXQoMCk7CiAgICAgcnRwX3NlbmRlcl8tPlNldFNTUkMoa1NzcmMpOwpAQCAtMjc2LDcgKzI3
Nyw3IEBAIGNsYXNzIFRlc3RSdHBTZW5kZXJWaWRlbyA6IHB1YmxpYyBSVFBTZW5kZXJWaWRlbyB7
CiAgIFRlc3RSdHBTZW5kZXJWaWRlbyhDbG9jayogY2xvY2ssCiAgICAgICAgICAgICAgICAgICAg
ICBSVFBTZW5kZXIqIHJ0cF9zZW5kZXIsCiAgICAgICAgICAgICAgICAgICAgICBGbGV4ZmVjU2Vu
ZGVyKiBmbGV4ZmVjX3NlbmRlcikKLSAgICAgIDogUlRQU2VuZGVyVmlkZW8oY2xvY2ssIHJ0cF9z
ZW5kZXIsIGZsZXhmZWNfc2VuZGVyKSB7fQorICAgICAgOiBSVFBTZW5kZXJWaWRlbyhjbG9jaywg
cnRwX3NlbmRlciwgZmxleGZlY19zZW5kZXIsIG51bGxwdHIsIGZhbHNlKSB7fQogICB+VGVzdFJ0
cFNlbmRlclZpZGVvKCkgb3ZlcnJpZGUge30KIAogICBTdG9yYWdlVHlwZSBHZXRTdG9yYWdlVHlw
ZShjb25zdCBSVFBWaWRlb0hlYWRlciYgaGVhZGVyLApAQCAtMzgyLDcgKzM4Myw4IEBAIFRFU1Rf
UChSdHBTZW5kZXJUZXN0LCBBc3NpZ25TZXF1ZW5jZU51bWJlckFsbG93c1BhZGRpbmdPbkF1ZGlv
KSB7CiAgIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIoCiAgICAgICBrRW5hYmxlQXVk
aW8sICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydCwgJm1vY2tfcGFjZWRfc2VuZGVyXywgbnVsbHB0
ciwKICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsICZt
b2NrX3J0Y19ldmVudF9sb2dfLAotICAgICAgbnVsbHB0ciwgJnJldHJhbnNtaXNzaW9uX3JhdGVf
bGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgICAgICBudWxscHRyLCAmcmV0cmFuc21pc3Np
b25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZhbHNlLAorICAgICAg
ZmFsc2UpKTsKICAgcnRwX3NlbmRlcl8tPlNldFRpbWVzdGFtcE9mZnNldCgwKTsKICAgcnRwX3Nl
bmRlcl8tPlNldFNTUkMoa1NzcmMpOwogCkBAIC00MjgsNyArNDMwLDggQEAgVEVTVF9QKFJ0cFNl
bmRlclRlc3RXaXRob3V0UGFjZXIsCiAgIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5kZXIo
CiAgICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVsbHB0
ciwgJnNlcV9udW1fYWxsb2NhdG9yXywKICAgICAgICZmZWVkYmFja19vYnNlcnZlcl8sIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsICZtb2NrX3J0Y19ldmVudF9sb2dfLAotICAgICAgbnVsbHB0
ciwgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sICZtb2NrX292ZXJoZWFkX29ic2VydmVy
LCBmYWxzZSkpOworICAgICAgbnVsbHB0ciwgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8s
ICZtb2NrX292ZXJoZWFkX29ic2VydmVyLCBmYWxzZSwKKyAgICAgIG51bGxwdHIsIGZhbHNlLCBm
YWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7CiAgIEVYUEVDVF9FUSgwLCBy
dHBfc2VuZGVyXy0+UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oCiAgICAgICAgICAgICAgICAg
ICAga1J0cEV4dGVuc2lvblRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyLApAQCAtNDU1LDcgKzQ1OCw4
IEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLCBTZW5kc1BhY2tldHNXaXRoVHJh
bnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKICAgcnRwX3NlbmRlcl8ucmVzZXQobmV3IFJUUFNlbmRl
cigKICAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRfLCBudWxscHRyLCBudWxs
cHRyLCAmc2VxX251bV9hbGxvY2F0b3JfLAogICAgICAgJmZlZWRiYWNrX29ic2VydmVyXywgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJm1vY2tfcnRjX2V2ZW50X2xvZ18sCi0gICAgICAmc2Vu
ZF9wYWNrZXRfb2JzZXJ2ZXJfLCAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0
ciwgZmFsc2UpKTsKKyAgICAgICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sICZyZXRyYW5zbWlzc2lv
bl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwKKyAgICAgIG51bGxwdHIsIGZhbHNlLCBm
YWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7CiAgIEVYUEVDVF9FUSgwLCBy
dHBfc2VuZGVyXy0+UmVnaXN0ZXJSdHBIZWFkZXJFeHRlbnNpb24oCiAgICAgICAgICAgICAgICAg
ICAga1J0cEV4dGVuc2lvblRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyLApAQCAtNDc5LDEzICs0ODMs
MTUgQEAgVEVTVF9QKFJ0cFNlbmRlclRlc3RXaXRob3V0UGFjZXIsIFNlbmRzUGFja2V0c1dpdGhU
cmFuc3BvcnRTZXF1ZW5jZU51bWJlcikgewogICBBU1NFUlRfVFJVRShwYWNrZXQuR2V0RXh0ZW5z
aW9uPFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyPigmdHJhbnNwb3J0X3NlcV9ubykpOwogICBFWFBF
Q1RfRVEoa1RyYW5zcG9ydFNlcXVlbmNlTnVtYmVyLCB0cmFuc3BvcnRfc2VxX25vKTsKICAgRVhQ
RUNUX0VRKHRyYW5zcG9ydF8ubGFzdF9vcHRpb25zXy5wYWNrZXRfaWQsIHRyYW5zcG9ydF9zZXFf
bm8pOworICBFWFBFQ1RfVFJVRSh0cmFuc3BvcnRfLmxhc3Rfb3B0aW9uc18uaW5jbHVkZWRfaW5f
YWxsb2NhdGlvbik7CiB9CiAKIFRFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBhY2VyLCBQYWNr
ZXRPcHRpb25zTm9SZXRyYW5zbWlzc2lvbikgewogICBydHBfc2VuZGVyXy5yZXNldChuZXcgUlRQ
U2VuZGVyKAogICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIs
IG51bGxwdHIsICZzZXFfbnVtX2FsbG9jYXRvcl8sCiAgICAgICAmZmVlZGJhY2tfb2JzZXJ2ZXJf
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAmbW9ja19ydGNfZXZlbnRfbG9nXywKLSAgICAg
ICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBu
dWxscHRyLCBmYWxzZSkpOworICAgICAgJnNlbmRfcGFja2V0X29ic2VydmVyXywgJnJldHJhbnNt
aXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlLAorICAgICAgbnVsbHB0ciwgZmFs
c2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsKIAogICBTZW5kR2Vu
ZXJpY1BheWxvYWQoKTsKQEAgLTQ5MywxNiArNDk5LDUzIEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0
V2l0aG91dFBhY2VyLCBQYWNrZXRPcHRpb25zTm9SZXRyYW5zbWlzc2lvbikgewogICBFWFBFQ1Rf
RkFMU0UodHJhbnNwb3J0Xy5sYXN0X29wdGlvbnNfLmlzX3JldHJhbnNtaXQpOwogfQogCi1URVNU
X1AoUnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwgTm9BbGxvY2F0aW9uSWZOb3RSZWdpc3RlcmVk
KSB7CitURVNUX1AoUnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwKKyAgICAgICBTZXRzSW5jbHVk
ZWRJbkZlZWRiYWNrV2hlblRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyRXh0ZW5zaW9uSXNSZWdpc3Rl
cmVkKSB7CisgIFNldFVwUnRwU2VuZGVyKGZhbHNlLCBmYWxzZSk7CisgIHJ0cF9zZW5kZXJfLT5S
ZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihrUnRwRXh0ZW5zaW9uVHJhbnNwb3J0U2VxdWVuY2VO
dW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVHJhbnNw
b3J0U2VxdWVuY2VOdW1iZXJFeHRlbnNpb25JZCk7CisgIEVYUEVDVF9DQUxMKHNlcV9udW1fYWxs
b2NhdG9yXywgQWxsb2NhdGVTZXF1ZW5jZU51bWJlcigpKQorICAgICAgLldpbGxPbmNlKHRlc3Rp
bmc6OlJldHVybihrVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpKTsKKyAgRVhQRUNUX0NBTEwoc2Vu
ZF9wYWNrZXRfb2JzZXJ2ZXJfLCBPblNlbmRQYWNrZXQpLlRpbWVzKDEpOworICBTZW5kR2VuZXJp
Y1BheWxvYWQoKTsKKyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0Xy5sYXN0X29wdGlvbnNfLmluY2x1
ZGVkX2luX2ZlZWRiYWNrKTsKK30KKworVEVTVF9QKAorICAgIFJ0cFNlbmRlclRlc3RXaXRob3V0
UGFjZXIsCisgICAgU2V0c0luY2x1ZGVkSW5BbGxvY2F0aW9uV2hlblRyYW5zcG9ydFNlcXVlbmNl
TnVtYmVyRXh0ZW5zaW9uSXNSZWdpc3RlcmVkKSB7CisgIFNldFVwUnRwU2VuZGVyKGZhbHNlLCBm
YWxzZSk7CisgIHJ0cF9zZW5kZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbihrUnRwRXh0
ZW5zaW9uVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJFeHRlbnNpb25JZCk7Cisg
IEVYUEVDVF9DQUxMKHNlcV9udW1fYWxsb2NhdG9yXywgQWxsb2NhdGVTZXF1ZW5jZU51bWJlcigp
KQorICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihrVHJhbnNwb3J0U2VxdWVuY2VOdW1i
ZXIpKTsKKyAgRVhQRUNUX0NBTEwoc2VuZF9wYWNrZXRfb2JzZXJ2ZXJfLCBPblNlbmRQYWNrZXQp
LlRpbWVzKDEpOwogICBTZW5kR2VuZXJpY1BheWxvYWQoKTsKKyAgRVhQRUNUX1RSVUUodHJhbnNw
b3J0Xy5sYXN0X29wdGlvbnNfLmluY2x1ZGVkX2luX2FsbG9jYXRpb24pOworfQorCitURVNUX1Ao
UnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwKKyAgICAgICBTZXRzSW5jbHVkZWRJbkFsbG9jYXRp
b25XaGVuRm9yY2VkQXNQYXJ0T2ZBbGxvY2F0aW9uKSB7CisgIFNldFVwUnRwU2VuZGVyKGZhbHNl
LCBmYWxzZSk7CisgIHJ0cF9zZW5kZXJfLT5TZXRBc1BhcnRPZkFsbG9jYXRpb24odHJ1ZSk7Cisg
IFNlbmRHZW5lcmljUGF5bG9hZCgpOworICBFWFBFQ1RfRkFMU0UodHJhbnNwb3J0Xy5sYXN0X29w
dGlvbnNfLmluY2x1ZGVkX2luX2ZlZWRiYWNrKTsKKyAgRVhQRUNUX1RSVUUodHJhbnNwb3J0Xy5s
YXN0X29wdGlvbnNfLmluY2x1ZGVkX2luX2FsbG9jYXRpb24pOworfQorCitURVNUX1AoUnRwU2Vu
ZGVyVGVzdFdpdGhvdXRQYWNlciwgRG9lc25TZXRJbmNsdWRlZEluQWxsb2NhdGlvbkJ5RGVmYXVs
dCkgeworICBTZXRVcFJ0cFNlbmRlcihmYWxzZSwgZmFsc2UpOworICBTZW5kR2VuZXJpY1BheWxv
YWQoKTsKKyAgRVhQRUNUX0ZBTFNFKHRyYW5zcG9ydF8ubGFzdF9vcHRpb25zXy5pbmNsdWRlZF9p
bl9mZWVkYmFjayk7CisgIEVYUEVDVF9GQUxTRSh0cmFuc3BvcnRfLmxhc3Rfb3B0aW9uc18uaW5j
bHVkZWRfaW5fYWxsb2NhdGlvbik7CiB9CiAKIFRFU1RfUChSdHBTZW5kZXJUZXN0V2l0aG91dFBh
Y2VyLCBPblNlbmRTaWRlRGVsYXlVcGRhdGVkKSB7CiAgIHRlc3Rpbmc6OlN0cmljdE1vY2s8TW9j
a1NlbmRTaWRlRGVsYXlPYnNlcnZlcj4gc2VuZF9zaWRlX2RlbGF5X29ic2VydmVyXzsKLSAgcnRw
X3NlbmRlcl8ucmVzZXQoCi0gICAgICBuZXcgUlRQU2VuZGVyKGZhbHNlLCAmZmFrZV9jbG9ja18s
ICZ0cmFuc3BvcnRfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAmc2VuZF9zaWRlX2RlbGF5X29ic2VydmVy
XywKLSAgICAgICAgICAgICAgICAgICAgJm1vY2tfcnRjX2V2ZW50X2xvZ18sIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIGZhbHNlKSk7CisgIHJ0cF9zZW5kZXJfLnJlc2V0KG5ldyBSVFBTZW5k
ZXIoCisgICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgIG51bGxwdHIsIG51bGxwdHIsICZzZW5kX3Np
ZGVfZGVsYXlfb2JzZXJ2ZXJfLCAmbW9ja19ydGNfZXZlbnRfbG9nXywKKyAgICAgIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIGZhbHNlLCBudWxscHRyLCBmYWxzZSwgZmFsc2UpKTsKICAgcnRw
X3NlbmRlcl8tPlNldFNTUkMoa1NzcmMpOwogCiAgIGNvbnN0IHVpbnQ4X3Qga1BheWxvYWRUeXBl
ID0gMTI3OwpAQCAtNTgwLDcgKzYyMyw3IEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBTZW5kc1Bh
Y2tldHNXaXRoVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpIHsKICAgICAgIGZhbHNlLCAmZmFrZV9j
bG9ja18sICZ0cmFuc3BvcnRfLCAmbW9ja19wYWNlZF9zZW5kZXJfLCBudWxscHRyLAogICAgICAg
JnNlcV9udW1fYWxsb2NhdG9yXywgJmZlZWRiYWNrX29ic2VydmVyXywgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwKICAgICAgICZtb2NrX3J0Y19ldmVudF9sb2dfLCAmc2VuZF9wYWNrZXRfb2Jz
ZXJ2ZXJfLAotICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZh
bHNlKSk7CisgICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFs
c2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VO
dW1iZXIoa1NlcU51bSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsKICAgcnRwX3Nl
bmRlcl8tPlNldFN0b3JlUGFja2V0c1N0YXR1cyh0cnVlLCAxMCk7CkBAIC02NDcsOCArNjkwLDgg
QEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIFdyaXRlc1BhY2VyRXhpdFRvVGltaW5nRXh0ZW5zaW9u
KSB7CiAgIEVYUEVDVF9FUShrU3RvcmVkVGltZUluTXMsIHZpZGVvX3RpbWluZy5wYWNlcl9leGl0
X2RlbHRhX21zKTsKIH0KIAotVEVTVF9QKFJ0cFNlbmRlclRlc3QsIFdyaXRlc05ldHdvcmsyVG9U
aW1pbmdFeHRlbnNpb24pIHsKLSAgU2V0VXBSdHBTZW5kZXIodHJ1ZSwgdHJ1ZSk7CitURVNUX1Ao
UnRwU2VuZGVyVGVzdCwgV3JpdGVzTmV0d29yazJUb1RpbWluZ0V4dGVuc2lvbldpdGhQYWNlcikg
eworICBTZXRVcFJ0cFNlbmRlcigvKnBhY2VyPSovdHJ1ZSwgLypwb3B1bGF0ZV9uZXR3b3JrMj0q
L3RydWUpOwogICBydHBfc2VuZGVyXy0+U2V0U3RvcmVQYWNrZXRzU3RhdHVzKHRydWUsIDEwKTsK
ICAgRVhQRUNUX0VRKDAsIHJ0cF9zZW5kZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbigK
ICAgICAgICAgICAgICAgICAgICBrUnRwRXh0ZW5zaW9uVmlkZW9UaW1pbmcsIGtWaWRlb1RpbWlu
Z0V4dGVuc2lvbklkKSk7CkBAIC02ODYsNiArNzI5LDMxIEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0
LCBXcml0ZXNOZXR3b3JrMlRvVGltaW5nRXh0ZW5zaW9uKSB7CiAgIEVYUEVDVF9FUShrUGFjZXJF
eGl0TXMsIHZpZGVvX3RpbWluZy5wYWNlcl9leGl0X2RlbHRhX21zKTsKIH0KIAorVEVTVF9QKFJ0
cFNlbmRlclRlc3QsIFdyaXRlc05ldHdvcmsyVG9UaW1pbmdFeHRlbnNpb25XaXRob3V0UGFjZXIp
IHsKKyAgU2V0VXBSdHBTZW5kZXIoLypwYWNlcj0qL2ZhbHNlLCAvKnBvcHVsYXRlX25ldHdvcmsy
PSovdHJ1ZSk7CisgIEVYUEVDVF9FUSgwLCBydHBfc2VuZGVyXy0+UmVnaXN0ZXJSdHBIZWFkZXJF
eHRlbnNpb24oCisgICAgICAgICAgICAgICAgICAga1J0cEV4dGVuc2lvblZpZGVvVGltaW5nLCBr
VmlkZW9UaW1pbmdFeHRlbnNpb25JZCkpOworICBhdXRvIHBhY2tldCA9IHJ0cF9zZW5kZXJfLT5B
bGxvY2F0ZVBhY2tldCgpOworICBwYWNrZXQtPlNldE1hcmtlcih0cnVlKTsKKyAgcGFja2V0LT5z
ZXRfY2FwdHVyZV90aW1lX21zKGZha2VfY2xvY2tfLlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAg
Y29uc3QgVmlkZW9TZW5kVGltaW5nIGtWaWRlb1RpbWluZyA9IHswdSwgMHUsIDB1LCAwdSwgMHUs
IDB1LCB0cnVlfTsKKyAgcGFja2V0LT5TZXRFeHRlbnNpb248VmlkZW9UaW1pbmdFeHRlbnNpb24+
KGtWaWRlb1RpbWluZyk7CisgIEVYUEVDVF9UUlVFKHJ0cF9zZW5kZXJfLT5Bc3NpZ25TZXF1ZW5j
ZU51bWJlcihwYWNrZXQuZ2V0KCkpKTsKKworICBjb25zdCBpbnQga1Byb3BhZ2F0ZVRpbWVNcyA9
IDEwOworICBmYWtlX2Nsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrUHJvcGFnYXRlVGlt
ZU1zKTsKKworICBFWFBFQ1RfVFJVRShydHBfc2VuZGVyXy0+U2VuZFRvTmV0d29yayhzdGQ6Om1v
dmUocGFja2V0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0Fs
bG93UmV0cmFuc21pc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJ0cFBhY2tldFNlbmRlcjo6a05vcm1hbFByaW9yaXR5KSk7CisKKyAgRVhQRUNUX0VRKDEs
IHRyYW5zcG9ydF8ucGFja2V0c19zZW50KCkpOworICBhYnNsOjpvcHRpb25hbDxWaWRlb1NlbmRU
aW1pbmc+IHZpZGVvX3RpbWluZyA9CisgICAgICB0cmFuc3BvcnRfLmxhc3Rfc2VudF9wYWNrZXQo
KS5HZXRFeHRlbnNpb248VmlkZW9UaW1pbmdFeHRlbnNpb24+KCk7CisgIEFTU0VSVF9UUlVFKHZp
ZGVvX3RpbWluZyk7CisgIEVYUEVDVF9FUShrUHJvcGFnYXRlVGltZU1zLCB2aWRlb190aW1pbmct
Pm5ldHdvcmsyX3RpbWVzdGFtcF9kZWx0YV9tcyk7Cit9CisKIFRFU1RfUChSdHBTZW5kZXJUZXN0
LCBUcmFmZmljU21vb3RoaW5nV2l0aEV4dGVuc2lvbnMpIHsKICAgRVhQRUNUX0NBTEwobW9ja19w
YWNlZF9zZW5kZXJfLCBJbnNlcnRQYWNrZXQoUnRwUGFja2V0U2VuZGVyOjprTm9ybWFsUHJpb3Jp
dHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtTc3Jj
LCBrU2VxTnVtLCBfLCBfLCBfKSk7CkBAIC05NDAsNyArMTAwOCw3IEBAIFRFU1RfUChSdHBTZW5k
ZXJUZXN0LCBPblNlbmRQYWNrZXROb3RVcGRhdGVkV2l0aG91dFNlcU51bUFsbG9jYXRvcikgewog
ICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sICZtb2NrX3BhY2VkX3NlbmRl
cl8sIG51bGxwdHIsCiAgICAgICBudWxscHRyIC8qIFRyYW5zcG9ydFNlcXVlbmNlTnVtYmVyQWxs
b2NhdG9yICovLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAogICAgICAgbnVsbHB0ciwgbnVs
bHB0ciwgJnNlbmRfcGFja2V0X29ic2VydmVyXywgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRl
cl8sCi0gICAgICBudWxscHRyLCBmYWxzZSkpOworICAgICAgbnVsbHB0ciwgZmFsc2UsIG51bGxw
dHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1Nl
cU51bSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsKICAgRVhQRUNUX0VRKDAsIHJ0
cF9zZW5kZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lvbigKQEAgLTk2Niw3ICsxMDM0LDcg
QEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIFNlbmRSZWR1bmRhbnRQYXlsb2FkcykgewogICBydHBf
c2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAogICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywg
JnRyYW5zcG9ydCwgJm1vY2tfcGFjZWRfc2VuZGVyXywgbnVsbHB0ciwgbnVsbHB0ciwKICAgICAg
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsICZtb2NrX3J0Y19ldmVudF9sb2df
LCBudWxscHRyLAotICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIs
IGZhbHNlKSk7CisgICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwg
ZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U2VxdWVu
Y2VOdW1iZXIoa1NlcU51bSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsKICAgcnRw
X3NlbmRlcl8tPlNldFJ0eFBheWxvYWRUeXBlKGtSdHhQYXlsb2FkLCBrUGF5bG9hZCk7CkBAIC0x
MDkwLDcgKzExNTgsNyBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdCwgU2VuZEZsZXhmZWNQYWNrZXRz
KSB7CiAgICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgJm1vY2tfcGFjZWRf
c2VuZGVyXywgJmZsZXhmZWNfc2VuZGVyLAogICAgICAgJnNlcV9udW1fYWxsb2NhdG9yXywgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKICAgICAgICZtb2NrX3J0Y19ldmVudF9s
b2dfLCAmc2VuZF9wYWNrZXRfb2JzZXJ2ZXJfLAotICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVf
bGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9s
aW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBf
c2VuZGVyXy0+U2V0U1NSQyhrTWVkaWFTc3JjKTsKICAgcnRwX3NlbmRlcl8tPlNldFNlcXVlbmNl
TnVtYmVyKGtTZXFOdW0pOwogICBydHBfc2VuZGVyXy0+U2V0U3RvcmVQYWNrZXRzU3RhdHVzKHRy
dWUsIDEwKTsKQEAgLTExNTAsNyArMTIxOCw3IEBAIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBOb0Zs
ZXhmZWNGb3JUaW1pbmdGcmFtZXMpIHsKICAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFu
c3BvcnRfLCAmbW9ja19wYWNlZF9zZW5kZXJfLCAmZmxleGZlY19zZW5kZXIsCiAgICAgICAmc2Vx
X251bV9hbGxvY2F0b3JfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAogICAg
ICAgJm1vY2tfcnRjX2V2ZW50X2xvZ18sICZzZW5kX3BhY2tldF9vYnNlcnZlcl8sCi0gICAgICAm
cmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgICAgICZy
ZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgZmFs
c2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtNZWRpYVNzcmMpOwogICBydHBf
c2VuZGVyXy0+U2V0U2VxdWVuY2VOdW1iZXIoa1NlcU51bSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRT
dG9yZVBhY2tldHNTdGF0dXModHJ1ZSwgMTApOwpAQCAtMTI0NSwxMSArMTMxMywxMSBAQCBURVNU
X1AoUnRwU2VuZGVyVGVzdFdpdGhvdXRQYWNlciwgU2VuZEZsZXhmZWNQYWNrZXRzKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciAvKiBydHBfc3RhdGUgKi8sICZmYWtl
X2Nsb2NrXyk7CiAKICAgLy8gUmVzZXQgfHJ0cF9zZW5kZXJffCB0byB1c2UgRmxleEZFQy4KLSAg
cnRwX3NlbmRlcl8ucmVzZXQoCi0gICAgICBuZXcgUlRQU2VuZGVyKGZhbHNlLCAmZmFrZV9jbG9j
a18sICZ0cmFuc3BvcnRfLCBudWxscHRyLCAmZmxleGZlY19zZW5kZXIsCi0gICAgICAgICAgICAg
ICAgICAgICZzZXFfbnVtX2FsbG9jYXRvcl8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICZtb2NrX3J0Y19ldmVudF9sb2dfLCAmc2VuZF9w
YWNrZXRfb2JzZXJ2ZXJfLAotICAgICAgICAgICAgICAgICAgICAmcmV0cmFuc21pc3Npb25fcmF0
ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgcnRwX3NlbmRlcl8ucmVzZXQobmV3IFJU
UFNlbmRlcigKKyAgICAgIGZhbHNlLCAmZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRfLCBudWxscHRy
LCAmZmxleGZlY19zZW5kZXIsCisgICAgICAmc2VxX251bV9hbGxvY2F0b3JfLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLAorICAgICAgJm1vY2tfcnRjX2V2ZW50X2xvZ18sICZz
ZW5kX3BhY2tldF9vYnNlcnZlcl8sCisgICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVy
XywgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVy
Xy0+U2V0U1NSQyhrTWVkaWFTc3JjKTsKICAgcnRwX3NlbmRlcl8tPlNldFNlcXVlbmNlTnVtYmVy
KGtTZXFOdW0pOwogCkBAIC0xMzEzLDcgKzEzODEsNyBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdCwg
RmVjT3ZlcmhlYWRSYXRlKSB7CiAgICAgICBmYWxzZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0
XywgJm1vY2tfcGFjZWRfc2VuZGVyXywgJmZsZXhmZWNfc2VuZGVyLAogICAgICAgJnNlcV9udW1f
YWxsb2NhdG9yXywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKICAgICAgICZt
b2NrX3J0Y19ldmVudF9sb2dfLCAmc2VuZF9wYWNrZXRfb2JzZXJ2ZXJfLAotICAgICAgJnJldHJh
bnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgICAgICAmcmV0cmFu
c21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBm
YWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrTWVkaWFTc3JjKTsKICAgcnRwX3NlbmRl
cl8tPlNldFNlcXVlbmNlTnVtYmVyKGtTZXFOdW0pOwogCkBAIC0xMzY1LDcgKzE0MzMsNyBAQCBU
RVNUX1AoUnRwU2VuZGVyVGVzdCwgRnJhbWVDb3VudENhbGxiYWNrcykgewogICBydHBfc2VuZGVy
Xy5yZXNldChuZXcgUlRQU2VuZGVyKAogICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5z
cG9ydF8sICZtb2NrX3BhY2VkX3NlbmRlcl8sIG51bGxwdHIsIG51bGxwdHIsCiAgICAgICBudWxs
cHRyLCBudWxscHRyLCAmY2FsbGJhY2ssIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAg
ICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVyXywgbnVsbHB0ciwgZmFsc2UpKTsKKyAgICAg
ICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwg
ZmFsc2UsIGZhbHNlKSk7CiAgIHJ0cF9zZW5kZXJfLT5TZXRTU1JDKGtTc3JjKTsKICAgY2hhciBw
YXlsb2FkX25hbWVbUlRQX1BBWUxPQURfTkFNRV9TSVpFXSA9ICJHRU5FUklDIjsKICAgY29uc3Qg
dWludDhfdCBwYXlsb2FkX3R5cGUgPSAxMjc7CkBAIC0xNDI1LDEwICsxNDkzLDEwIEBAIFRFU1Rf
UChSdHBTZW5kZXJUZXN0LCBCaXRyYXRlQ2FsbGJhY2tzKSB7CiAgICAgdWludDMyX3QgdG90YWxf
Yml0cmF0ZV87CiAgICAgdWludDMyX3QgcmV0cmFuc21pdF9iaXRyYXRlXzsKICAgfSBjYWxsYmFj
azsKLSAgcnRwX3NlbmRlcl8ucmVzZXQoCi0gICAgICBuZXcgUlRQU2VuZGVyKGZhbHNlLCAmZmFr
ZV9jbG9ja18sICZ0cmFuc3BvcnRfLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAotICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLCAmY2FsbGJhY2ssIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xp
bWl0ZXJfLCBudWxscHRyLCBmYWxzZSkpOworICBydHBfc2VuZGVyXy5yZXNldChuZXcgUlRQU2Vu
ZGVyKAorICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAmY2FsbGJhY2ssIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAmcmV0cmFuc21pc3Npb25fcmF0ZV9saW1pdGVy
XywgbnVsbHB0ciwgZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVy
Xy0+U2V0U1NSQyhrU3NyYyk7CiAKICAgLy8gU2ltdWxhdGUga051bVBhY2tldHMgc2VudCB3aXRo
IGtQYWNrZXRJbnRlcnZhbCBtcyBpbnRlcnZhbHMsIHdpdGggdGhlCkBAIC0xNDg1LDEwICsxNTUz
LDEwIEBAIGNsYXNzIFJ0cFNlbmRlckF1ZGlvVGVzdCA6IHB1YmxpYyBSdHBTZW5kZXJUZXN0IHsK
IAogICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgewogICAgIHBheWxvYWRfID0ga0F1ZGlvUGF5bG9h
ZDsKLSAgICBydHBfc2VuZGVyXy5yZXNldCgKLSAgICAgICAgbmV3IFJUUFNlbmRlcih0cnVlLCAm
ZmFrZV9jbG9ja18sICZ0cmFuc3BvcnRfLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgJnJldHJhbnNtaXNzaW9uX3Jh
dGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlKSk7CisgICAgcnRwX3NlbmRlcl8ucmVzZXQobmV3
IFJUUFNlbmRlcigKKyAgICAgICAgdHJ1ZSwgJmZha2VfY2xvY2tfLCAmdHJhbnNwb3J0XywgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgJnJldHJhbnNtaXNzaW9uX3Jh
dGVfbGltaXRlcl8sIG51bGxwdHIsIGZhbHNlLCBudWxscHRyLCBmYWxzZSwgZmFsc2UpKTsKICAg
ICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7CiAgICAgcnRwX3NlbmRlcl8tPlNldFNlcXVl
bmNlTnVtYmVyKGtTZXFOdW0pOwogICB9CkBAIC0yMTUxLDEwICsyMjE5LDExIEBAIFRFU1RfUChS
dHBTZW5kZXJWaWRlb1Rlc3QsCiAKIFRFU1RfUChSdHBTZW5kZXJUZXN0LCBPbk92ZXJoZWFkQ2hh
bmdlZCkgewogICBNb2NrT3ZlcmhlYWRPYnNlcnZlciBtb2NrX292ZXJoZWFkX29ic2VydmVyOwot
ICBydHBfc2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVyKAotICAgICAgZmFsc2UsICZmYWtlX2Ns
b2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0g
ICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAotICAgICAg
JnJldHJhbnNtaXNzaW9uX3JhdGVfbGltaXRlcl8sICZtb2NrX292ZXJoZWFkX29ic2VydmVyLCBm
YWxzZSkpOworICBydHBfc2VuZGVyXy5yZXNldCgKKyAgICAgIG5ldyBSVFBTZW5kZXIoZmFsc2Us
ICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRl
X2xpbWl0ZXJfLCAmbW9ja19vdmVyaGVhZF9vYnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAg
ZmFsc2UsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhr
U3NyYyk7CiAKICAgLy8gUlRQIG92ZXJoZWFkIGlzIDEyQi4KQEAgLTIxNzIsMTAgKzIyNDEsMTEg
QEAgVEVTVF9QKFJ0cFNlbmRlclRlc3QsIE9uT3ZlcmhlYWRDaGFuZ2VkKSB7CiAKIFRFU1RfUChS
dHBTZW5kZXJUZXN0LCBEb2VzTm90VXBkYXRlT3ZlcmhlYWRPbkVxdWFsU2l6ZSkgewogICBNb2Nr
T3ZlcmhlYWRPYnNlcnZlciBtb2NrX292ZXJoZWFkX29ic2VydmVyOwotICBydHBfc2VuZGVyXy5y
ZXNldChuZXcgUlRQU2VuZGVyKAotICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9y
dF8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAotICAgICAgJnJldHJhbnNtaXNzaW9u
X3JhdGVfbGltaXRlcl8sICZtb2NrX292ZXJoZWFkX29ic2VydmVyLCBmYWxzZSkpOworICBydHBf
c2VuZGVyXy5yZXNldCgKKyAgICAgIG5ldyBSVFBTZW5kZXIoZmFsc2UsICZmYWtlX2Nsb2NrXywg
JnRyYW5zcG9ydF8sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
CisgICAgICAgICAgICAgICAgICAgICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0ZXJfLCAmbW9j
a19vdmVyaGVhZF9vYnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgZmFsc2UsIG51bGxwdHIs
IGZhbHNlLCBmYWxzZSkpOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7CiAKICAgRVhQ
RUNUX0NBTEwobW9ja19vdmVyaGVhZF9vYnNlcnZlciwgT25PdmVyaGVhZENoYW5nZWQoXykpLlRp
bWVzKDEpOwpAQCAtMjE4NSwxMCArMjI1NSwxMCBAQCBURVNUX1AoUnRwU2VuZGVyVGVzdCwgRG9l
c05vdFVwZGF0ZU92ZXJoZWFkT25FcXVhbFNpemUpIHsKIAogVEVTVF9QKFJ0cFNlbmRlclRlc3Qs
IFNlbmRzS2VlcEFsaXZlKSB7CiAgIE1vY2tUcmFuc3BvcnQgdHJhbnNwb3J0OwotICBydHBfc2Vu
ZGVyXy5yZXNldCgKLSAgICAgIG5ldyBSVFBTZW5kZXIoZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRy
YW5zcG9ydCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJm1vY2tfcnRjX2V2ZW50X2xvZ18s
Ci0gICAgICAgICAgICAgICAgICAgIG51bGxwdHIsICZyZXRyYW5zbWlzc2lvbl9yYXRlX2xpbWl0
ZXJfLCBudWxscHRyLCBmYWxzZSkpOworICBydHBfc2VuZGVyXy5yZXNldChuZXcgUlRQU2VuZGVy
KAorICAgICAgZmFsc2UsICZmYWtlX2Nsb2NrXywgJnRyYW5zcG9ydCwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsICZt
b2NrX3J0Y19ldmVudF9sb2dfLCBudWxscHRyLAorICAgICAgJnJldHJhbnNtaXNzaW9uX3JhdGVf
bGltaXRlcl8sIG51bGxwdHIsIGZhbHNlLCBudWxscHRyLCBmYWxzZSwgZmFsc2UpKTsKICAgcnRw
X3NlbmRlcl8tPlNldFNlcXVlbmNlTnVtYmVyKGtTZXFOdW0pOwogICBydHBfc2VuZGVyXy0+U2V0
VGltZXN0YW1wT2Zmc2V0KDApOwogICBydHBfc2VuZGVyXy0+U2V0U1NSQyhrU3NyYyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3ZpZGVvLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRl
cl92aWRlby5jYwppbmRleCBlOGYwZWE1YzhkZTA3MTgwYWNiZjE5MzBjNjUyYTI4YWExZGI4NjM1
Li5jYjBiNjY1NjA4NDU1NzQ1Y2NkMDVjYjdhNWNhOWU5YjUwYjcxMjJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNw
L3NvdXJjZS9ydHBfc2VuZGVyX3ZpZGVvLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9zZW5kZXJfdmlk
ZW8uY2MKQEAgLTE5LDYgKzE5LDggQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJh
YnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKKyNp
bmNsdWRlICJhcGkvY3J5cHRvL2ZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX2Zvcm1hdF92aWRlb19nZW5lcmljLmgiCkBAIC05MSw2ICs5MywxMSBA
QCB2b2lkIEFkZFJ0cEhlYWRlckV4dGVuc2lvbnMoY29uc3QgUlRQVmlkZW9IZWFkZXImIHZpZGVv
X2hlYWRlciwKICAgICAgIGdlbmVyaWNfZGVzY3JpcHRvci5TZXRTcGF0aWFsTGF5ZXJzQml0bWFz
ayhzcGF0aWFsX2JpbWFzayk7CiAKICAgICAgIGdlbmVyaWNfZGVzY3JpcHRvci5TZXRUZW1wb3Jh
bExheWVyKHZpZGVvX2hlYWRlci5nZW5lcmljLT50ZW1wb3JhbF9pbmRleCk7CisKKyAgICAgIGlm
IChmcmFtZV90eXBlID09IGtWaWRlb0ZyYW1lS2V5KSB7CisgICAgICAgIGdlbmVyaWNfZGVzY3Jp
cHRvci5TZXRSZXNvbHV0aW9uKHZpZGVvX2hlYWRlci53aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9faGVhZGVyLmhlaWdodCk7CisgICAgICB9CiAg
ICAgfQogICAgIHBhY2tldC0+U2V0RXh0ZW5zaW9uPFJ0cEdlbmVyaWNGcmFtZURlc2NyaXB0b3JF
eHRlbnNpb24+KAogICAgICAgICBnZW5lcmljX2Rlc2NyaXB0b3IpOwpAQCAtMTE1LDcgKzEyMiw5
IEBAIGJvb2wgTWluaW1pemVEZXNjcmlwdG9yKGNvbnN0IFJUUFZpZGVvSGVhZGVyJiBmdWxsLCBS
VFBWaWRlb0hlYWRlciogbWluaW1pemVkKSB7CiAKIFJUUFNlbmRlclZpZGVvOjpSVFBTZW5kZXJW
aWRlbyhDbG9jayogY2xvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRQU2Vu
ZGVyKiBydHBfc2VuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsZXhmZWNT
ZW5kZXIqIGZsZXhmZWNfc2VuZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZs
ZXhmZWNTZW5kZXIqIGZsZXhmZWNfc2VuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlKiBmcmFtZV9lbmNyeXB0b3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24pCiAgICAg
OiBydHBfc2VuZGVyXyhydHBfc2VuZGVyKSwKICAgICAgIGNsb2NrXyhjbG9jayksCiAgICAgICB2
aWRlb190eXBlXyhrVmlkZW9Db2RlY0dlbmVyaWMpLApAQCAtMTI4LDcgKzEzNyw5IEBAIFJUUFNl
bmRlclZpZGVvOjpSVFBTZW5kZXJWaWRlbyhDbG9jayogY2xvY2ssCiAgICAgICBkZWx0YV9mZWNf
cGFyYW1zX3swLCAxLCBrRmVjTWFza1JhbmRvbX0sCiAgICAgICBrZXlfZmVjX3BhcmFtc197MCwg
MSwga0ZlY01hc2tSYW5kb219LAogICAgICAgZmVjX2JpdHJhdGVfKDEwMDAsIFJhdGVTdGF0aXN0
aWNzOjprQnBzU2NhbGUpLAotICAgICAgdmlkZW9fYml0cmF0ZV8oMTAwMCwgUmF0ZVN0YXRpc3Rp
Y3M6OmtCcHNTY2FsZSkge30KKyAgICAgIHZpZGVvX2JpdHJhdGVfKDEwMDAsIFJhdGVTdGF0aXN0
aWNzOjprQnBzU2NhbGUpLAorICAgICAgZnJhbWVfZW5jcnlwdG9yXyhmcmFtZV9lbmNyeXB0b3Ip
LAorICAgICAgcmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uXyhyZXF1aXJlX2ZyYW1lX2VuY3J5cHRp
b24pIHt9CiAKIFJUUFNlbmRlclZpZGVvOjp+UlRQU2VuZGVyVmlkZW8oKSB7fQogCkBAIC0xNDIs
MTggKzE1MywxOCBAQCBWaWRlb0NvZGVjVHlwZSBSVFBTZW5kZXJWaWRlbzo6VmlkZW9Db2RlY1R5
cGUoKSBjb25zdCB7CiAKIC8vIFN0YXRpYy4KIFJ0cFV0aWxpdHk6OlBheWxvYWQqIFJUUFNlbmRl
clZpZGVvOjpDcmVhdGVWaWRlb1BheWxvYWQoCi0gICAgY29uc3QgY2hhciBwYXlsb2FkX25hbWVb
UlRQX1BBWUxPQURfTkFNRV9TSVpFXSwKKyAgICBhYnNsOjpzdHJpbmdfdmlldyBwYXlsb2FkX25h
bWUsCiAgICAgaW50OF90IHBheWxvYWRfdHlwZSkgewogICBlbnVtIFZpZGVvQ29kZWNUeXBlIHZp
ZGVvX3R5cGUgPSBrVmlkZW9Db2RlY0dlbmVyaWM7Ci0gIGlmIChSdHBVdGlsaXR5OjpTdHJpbmdD
b21wYXJlKHBheWxvYWRfbmFtZSwgIlZQOCIsIDMpKSB7CisgIGlmIChhYnNsOjpFcXVhbHNJZ25v
cmVDYXNlKHBheWxvYWRfbmFtZSwgIlZQOCIpKSB7CiAgICAgdmlkZW9fdHlwZSA9IGtWaWRlb0Nv
ZGVjVlA4OwotICB9IGVsc2UgaWYgKFJ0cFV0aWxpdHk6OlN0cmluZ0NvbXBhcmUocGF5bG9hZF9u
YW1lLCAiVlA5IiwgMykpIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBh
eWxvYWRfbmFtZSwgIlZQOSIpKSB7CiAgICAgdmlkZW9fdHlwZSA9IGtWaWRlb0NvZGVjVlA5Owot
ICB9IGVsc2UgaWYgKFJ0cFV0aWxpdHk6OlN0cmluZ0NvbXBhcmUocGF5bG9hZF9uYW1lLCAiSDI2
NCIsIDQpKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25h
bWUsICJIMjY0IikpIHsKICAgICB2aWRlb190eXBlID0ga1ZpZGVvQ29kZWNIMjY0OwotICB9IGVs
c2UgaWYgKFJ0cFV0aWxpdHk6OlN0cmluZ0NvbXBhcmUocGF5bG9hZF9uYW1lLCAiSTQyMCIsIDQp
KSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShwYXlsb2FkX25hbWUsICJJ
NDIwIikpIHsKICAgICB2aWRlb190eXBlID0ga1ZpZGVvQ29kZWNHZW5lcmljOwotICB9IGVsc2Ug
aWYgKFJ0cFV0aWxpdHk6OlN0cmluZ0NvbXBhcmUocGF5bG9hZF9uYW1lLCAic3RlcmVvIiwgNikp
IHsKKyAgfSBlbHNlIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKHBheWxvYWRfbmFtZSwgInN0
ZXJlbyIpKSB7CiAgICAgdmlkZW9fdHlwZSA9IGtWaWRlb0NvZGVjR2VuZXJpYzsKICAgfSBlbHNl
IHsKICAgICB2aWRlb190eXBlID0ga1ZpZGVvQ29kZWNHZW5lcmljOwpAQCAtMzg3LDIwICszOTgs
MTkgQEAgYm9vbCBSVFBTZW5kZXJWaWRlbzo6U2VuZFZpZGVvKGVudW0gVmlkZW9Db2RlY1R5cGUg
dmlkZW9fdHlwZSwKICAgaW50IHBhY2tldF9jYXBhY2l0eSA9IHJ0cF9zZW5kZXJfLT5NYXhSdHBQ
YWNrZXRTaXplKCkgLSBmZWNfcGFja2V0X292ZXJoZWFkIC0KICAgICAgICAgICAgICAgICAgICAg
ICAgIChydHBfc2VuZGVyXy0+UnR4U3RhdHVzKCkgPyBrUnR4SGVhZGVyU2l6ZSA6IDApOwogCi0g
IGF1dG8gY3JlYXRlX3BhY2tldCA9IFsmXSB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tl
dFRvU2VuZD4gcnRwX3BhY2tldCA9IHJ0cF9zZW5kZXJfLT5BbGxvY2F0ZVBhY2tldCgpOwotICAg
IFJUQ19EQ0hFQ0tfTEUocGFja2V0X2NhcGFjaXR5LCBydHBfcGFja2V0LT5jYXBhY2l0eSgpKTsK
LQotICAgIHJ0cF9wYWNrZXQtPlNldFBheWxvYWRUeXBlKHBheWxvYWRfdHlwZSk7Ci0gICAgcnRw
X3BhY2tldC0+U2V0VGltZXN0YW1wKHJ0cF90aW1lc3RhbXApOwotICAgIHJ0cF9wYWNrZXQtPnNl
dF9jYXB0dXJlX3RpbWVfbXMoY2FwdHVyZV90aW1lX21zKTsKLSAgICByZXR1cm4gcnRwX3BhY2tl
dDsKLSAgfTsKKyAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldFRvU2VuZD4gc2luZ2xlX3BhY2tl
dCA9CisgICAgICBydHBfc2VuZGVyXy0+QWxsb2NhdGVQYWNrZXQoKTsKKyAgUlRDX0RDSEVDS19M
RShwYWNrZXRfY2FwYWNpdHksIHNpbmdsZV9wYWNrZXQtPmNhcGFjaXR5KCkpOworICBzaW5nbGVf
cGFja2V0LT5TZXRQYXlsb2FkVHlwZShwYXlsb2FkX3R5cGUpOworICBzaW5nbGVfcGFja2V0LT5T
ZXRUaW1lc3RhbXAocnRwX3RpbWVzdGFtcCk7CisgIHNpbmdsZV9wYWNrZXQtPnNldF9jYXB0dXJl
X3RpbWVfbXMoY2FwdHVyZV90aW1lX21zKTsKIAotICBhdXRvIGZpcnN0X3BhY2tldCA9IGNyZWF0
ZV9wYWNrZXQoKTsKLSAgYXV0byBtaWRkbGVfcGFja2V0ID0gYWJzbDo6bWFrZV91bmlxdWU8UnRw
UGFja2V0VG9TZW5kPigqZmlyc3RfcGFja2V0KTsKLSAgYXV0byBsYXN0X3BhY2tldCA9IGFic2w6
Om1ha2VfdW5pcXVlPFJ0cFBhY2tldFRvU2VuZD4oKmZpcnN0X3BhY2tldCk7CisgIGF1dG8gZmly
c3RfcGFja2V0ID0gYWJzbDo6bWFrZV91bmlxdWU8UnRwUGFja2V0VG9TZW5kPigqc2luZ2xlX3Bh
Y2tldCk7CisgIGF1dG8gbWlkZGxlX3BhY2tldCA9IGFic2w6Om1ha2VfdW5pcXVlPFJ0cFBhY2tl
dFRvU2VuZD4oKnNpbmdsZV9wYWNrZXQpOworICBhdXRvIGxhc3RfcGFja2V0ID0gYWJzbDo6bWFr
ZV91bmlxdWU8UnRwUGFja2V0VG9TZW5kPigqc2luZ2xlX3BhY2tldCk7CiAgIC8vIFNpbXBsZXN0
IHdheSB0byBlc3RpbWF0ZSBob3cgbXVjaCBleHRlbnNpb25zIHdvdWxkIG9jY3VweSBpcyB0byBz
ZXQgdGhlbS4KKyAgQWRkUnRwSGVhZGVyRXh0ZW5zaW9ucygqdmlkZW9faGVhZGVyLCBmcmFtZV90
eXBlLCBzZXRfdmlkZW9fcm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgLypmaXJz
dD0qL3RydWUsIC8qbGFzdD0qL3RydWUsIHNpbmdsZV9wYWNrZXQuZ2V0KCkpOwogICBBZGRSdHBI
ZWFkZXJFeHRlbnNpb25zKCp2aWRlb19oZWFkZXIsIGZyYW1lX3R5cGUsIHNldF92aWRlb19yb3Rh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAvKmZpcnN0PSovdHJ1ZSwgLypsYXN0PSov
ZmFsc2UsIGZpcnN0X3BhY2tldC5nZXQoKSk7CiAgIEFkZFJ0cEhlYWRlckV4dGVuc2lvbnMoKnZp
ZGVvX2hlYWRlciwgZnJhbWVfdHlwZSwgc2V0X3ZpZGVvX3JvdGF0aW9uLApAQCAtNDA4LDEyICs0
MTgsMTcgQEAgYm9vbCBSVFBTZW5kZXJWaWRlbzo6U2VuZFZpZGVvKGVudW0gVmlkZW9Db2RlY1R5
cGUgdmlkZW9fdHlwZSwKICAgQWRkUnRwSGVhZGVyRXh0ZW5zaW9ucygqdmlkZW9faGVhZGVyLCBm
cmFtZV90eXBlLCBzZXRfdmlkZW9fcm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
LypmaXJzdD0qL2ZhbHNlLCAvKmxhc3Q9Ki90cnVlLCBsYXN0X3BhY2tldC5nZXQoKSk7CiAKKyAg
UlRDX0RDSEVDS19HVChwYWNrZXRfY2FwYWNpdHksIHNpbmdsZV9wYWNrZXQtPmhlYWRlcnNfc2l6
ZSgpKTsKICAgUlRDX0RDSEVDS19HVChwYWNrZXRfY2FwYWNpdHksIGZpcnN0X3BhY2tldC0+aGVh
ZGVyc19zaXplKCkpOwogICBSVENfRENIRUNLX0dUKHBhY2tldF9jYXBhY2l0eSwgbWlkZGxlX3Bh
Y2tldC0+aGVhZGVyc19zaXplKCkpOwogICBSVENfRENIRUNLX0dUKHBhY2tldF9jYXBhY2l0eSwg
bGFzdF9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpKTsKICAgUnRwUGFja2V0aXplcjo6UGF5bG9hZFNp
emVMaW1pdHMgbGltaXRzOwogICBsaW1pdHMubWF4X3BheWxvYWRfbGVuID0gcGFja2V0X2NhcGFj
aXR5IC0gbWlkZGxlX3BhY2tldC0+aGVhZGVyc19zaXplKCk7CiAKKyAgUlRDX0RDSEVDS19HRShz
aW5nbGVfcGFja2V0LT5oZWFkZXJzX3NpemUoKSwgbWlkZGxlX3BhY2tldC0+aGVhZGVyc19zaXpl
KCkpOworICBsaW1pdHMuc2luZ2xlX3BhY2tldF9yZWR1Y3Rpb25fbGVuID0KKyAgICAgIHNpbmds
ZV9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpIC0gbWlkZGxlX3BhY2tldC0+aGVhZGVyc19zaXplKCk7
CisKICAgUlRDX0RDSEVDS19HRShmaXJzdF9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpLCBtaWRkbGVf
cGFja2V0LT5oZWFkZXJzX3NpemUoKSk7CiAgIGxpbWl0cy5maXJzdF9wYWNrZXRfcmVkdWN0aW9u
X2xlbiA9CiAgICAgICBmaXJzdF9wYWNrZXQtPmhlYWRlcnNfc2l6ZSgpIC0gbWlkZGxlX3BhY2tl
dC0+aGVhZGVyc19zaXplKCk7CkBAIC00MjQsOSArNDM5LDQyIEBAIGJvb2wgUlRQU2VuZGVyVmlk
ZW86OlNlbmRWaWRlbyhlbnVtIFZpZGVvQ29kZWNUeXBlIHZpZGVvX3R5cGUsCiAKICAgUlRQVmlk
ZW9IZWFkZXIgbWluaW1pemVkX3ZpZGVvX2hlYWRlcjsKICAgY29uc3QgUlRQVmlkZW9IZWFkZXIq
IHBhY2tldGl6ZV92aWRlb19oZWFkZXIgPSB2aWRlb19oZWFkZXI7Ci0gIGlmIChmaXJzdF9wYWNr
ZXQtPkhhc0V4dGVuc2lvbjxSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9uPigpICYm
Ci0gICAgICBNaW5pbWl6ZURlc2NyaXB0b3IoKnZpZGVvX2hlYWRlciwgJm1pbmltaXplZF92aWRl
b19oZWFkZXIpKSB7Ci0gICAgcGFja2V0aXplX3ZpZGVvX2hlYWRlciA9ICZtaW5pbWl6ZWRfdmlk
ZW9faGVhZGVyOworICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBnZW5lcmljX2Rlc2Ny
aXB0b3JfcmF3ID0KKyAgICAgIGZpcnN0X3BhY2tldC0+R2V0UmF3RXh0ZW5zaW9uPFJ0cEdlbmVy
aWNGcmFtZURlc2NyaXB0b3JFeHRlbnNpb24+KCk7CisgIGlmICghZ2VuZXJpY19kZXNjcmlwdG9y
X3Jhdy5lbXB0eSgpKSB7CisgICAgaWYgKE1pbmltaXplRGVzY3JpcHRvcigqdmlkZW9faGVhZGVy
LCAmbWluaW1pemVkX3ZpZGVvX2hlYWRlcikpIHsKKyAgICAgIHBhY2tldGl6ZV92aWRlb19oZWFk
ZXIgPSAmbWluaW1pemVkX3ZpZGVvX2hlYWRlcjsKKyAgICB9CisgIH0KKworICAvLyBUT0RPKGJl
bndyaWdodEB3ZWJydGMub3JnKSAtIEFsbG9jYXRlIGVub3VnaCB0byBhbHdheXMgZW5jcnlwdCBp
bmxpbmUuCisgIHJ0Yzo6QnVmZmVyIGVuY3J5cHRlZF92aWRlb19wYXlsb2FkOworICBpZiAoZnJh
bWVfZW5jcnlwdG9yXyAhPSBudWxscHRyKSB7CisgICAgaWYgKGdlbmVyaWNfZGVzY3JpcHRvcl9y
YXcuZW1wdHkoKSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IHNp
emVfdCBtYXhfY2lwaGVydGV4dF9zaXplID0KKyAgICAgICAgZnJhbWVfZW5jcnlwdG9yXy0+R2V0
TWF4Q2lwaGVydGV4dEJ5dGVTaXplKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkX3NpemUp
OworICAgIGVuY3J5cHRlZF92aWRlb19wYXlsb2FkLlNldFNpemUobWF4X2NpcGhlcnRleHRfc2l6
ZSk7CisKKyAgICBzaXplX3QgYnl0ZXNfd3JpdHRlbiA9IDA7CisgICAgaWYgKGZyYW1lX2VuY3J5
cHRvcl8tPkVuY3J5cHQoCisgICAgICAgICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBm
aXJzdF9wYWNrZXQtPlNzcmMoKSwKKyAgICAgICAgICAgIC8qYWRkaXRpb25hbF9kYXRhPSovbnVs
bHB0ciwKKyAgICAgICAgICAgIHJ0Yzo6TWFrZUFycmF5VmlldyhwYXlsb2FkX2RhdGEsIHBheWxv
YWRfc2l6ZSksCisgICAgICAgICAgICBlbmNyeXB0ZWRfdmlkZW9fcGF5bG9hZCwgJmJ5dGVzX3dy
aXR0ZW4pICE9IDApIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBlbmNyeXB0
ZWRfdmlkZW9fcGF5bG9hZC5TZXRTaXplKGJ5dGVzX3dyaXR0ZW4pOworICAgIHBheWxvYWRfZGF0
YSA9IGVuY3J5cHRlZF92aWRlb19wYXlsb2FkLmRhdGEoKTsKKyAgICBwYXlsb2FkX3NpemUgPSBl
bmNyeXB0ZWRfdmlkZW9fcGF5bG9hZC5zaXplKCk7CisgIH0gZWxzZSBpZiAocmVxdWlyZV9mcmFt
ZV9lbmNyeXB0aW9uXykgeworICAgIFJUQ19MT0coTFNfV0FSTklORykKKyAgICAgICAgPDwgIk5v
IEZyYW1lRW5jcnlwdG9yIGlzIGF0dGFjaGVkIHRvIHRoaXMgdmlkZW8gc2VuZGluZyBzdHJlYW0g
YnV0ICIKKyAgICAgICAgPDwgIm9uZSBpcyByZXF1aXJlZCBzaW5jZSByZXF1aXJlX2ZyYW1lX2Vu
Y3J5cHRvciBpcyBzZXQiOwogICB9CiAKICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFBhY2tldGl6ZXI+
IHBhY2tldGl6ZXIgPSBSdHBQYWNrZXRpemVyOjpDcmVhdGUoCkBAIC00NDcsMTYgKzQ5NSw5IEBA
IGJvb2wgUlRQU2VuZGVyVmlkZW86OlNlbmRWaWRlbyhlbnVtIFZpZGVvQ29kZWNUeXBlIHZpZGVv
X3R5cGUsCiAgICAgaW50IGV4cGVjdGVkX3BheWxvYWRfY2FwYWNpdHk7CiAgICAgLy8gQ2hvb3Nl
IHJpZ2h0IHBhY2tldCB0ZW1wbGF0ZToKICAgICBpZiAobnVtX3BhY2tldHMgPT0gMSkgewotICAg
ICAgLy8gTm8gcHJlcGFyZWQgdGVtcGxhdGUsIGNyZWF0ZSBhIG5ldyBwYWNrZXQuCi0gICAgICBw
YWNrZXQgPSBjcmVhdGVfcGFja2V0KCk7Ci0gICAgICBBZGRSdHBIZWFkZXJFeHRlbnNpb25zKCp2
aWRlb19oZWFkZXIsIGZyYW1lX3R5cGUsIHNldF92aWRlb19yb3RhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLypmaXJzdD0qL3RydWUsIC8qbGFzdD0qL3RydWUsIHBhY2tldC5n
ZXQoKSk7Ci0gICAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy83OTkwKTogUmV2aXNpdCB0aGlz
IGNhc2Ugd2hlbiB0d28gYnl0ZSBoZWFkZXIKLSAgICAgIC8vIGV4dGVuc2lvbiBhcmUgaW1wbGVt
ZW50ZWQgYmVjYXVzZSB0aGVuIHNpbmdsZSBwYWNrZXQgbWlnaHQgbmVlZCBtb3JlCi0gICAgICAv
LyBzcGFjZSBmb3IgZXh0ZW5zaW9ucyB0aGFuIHN1bSBvZiBmaXJzdCBhbmQgbGFzdCBwYWNrZXQg
cmVkdWN0aW9ucy4KLSAgICAgIGV4cGVjdGVkX3BheWxvYWRfY2FwYWNpdHkgPSBsaW1pdHMubWF4
X3BheWxvYWRfbGVuIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMu
Zmlyc3RfcGFja2V0X3JlZHVjdGlvbl9sZW4gLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbWl0cy5sYXN0X3BhY2tldF9yZWR1Y3Rpb25fbGVuOworICAgICAgcGFja2V0ID0g
c3RkOjptb3ZlKHNpbmdsZV9wYWNrZXQpOworICAgICAgZXhwZWN0ZWRfcGF5bG9hZF9jYXBhY2l0
eSA9CisgICAgICAgICAgbGltaXRzLm1heF9wYXlsb2FkX2xlbiAtIGxpbWl0cy5zaW5nbGVfcGFj
a2V0X3JlZHVjdGlvbl9sZW47CiAgICAgfSBlbHNlIGlmIChpID09IDApIHsKICAgICAgIHBhY2tl
dCA9IHN0ZDo6bW92ZShmaXJzdF9wYWNrZXQpOwogICAgICAgZXhwZWN0ZWRfcGF5bG9hZF9jYXBh
Y2l0eSA9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfc2VuZGVyX3ZpZGVvLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS9ydHBfc2VuZGVyX3ZpZGVvLmgKaW5kZXggY2U3YmUxNjE0OWMzYjM3YTQ0ZDc0NjkzMTE3ZDRk
YzRlYTYzOWM5YS4uZDNhODk4YjQwYTMwNmE3ZGJjNDEwNjAyOWM5OWRlNjFmZWE1MzllOSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlcl92aWRlby5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9z
ZW5kZXJfdmlkZW8uaApAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRl
IDxtZW1vcnk+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKICNpbmNs
dWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAv
LyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1
ZGUvZmxleGZlY19zZW5kZXIuaCIKQEAgLTI5LDYgKzMwLDggQEAKICNpbmNsdWRlICJydGNfYmFz
ZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIEZy
YW1lRW5jcnlwdG9ySW50ZXJmYWNlOwogY2xhc3MgUnRwUGFja2V0aXplcjsKIGNsYXNzIFJ0cFBh
Y2tldFRvU2VuZDsKIApAQCAtMzgsMTQgKzQxLDE1IEBAIGNsYXNzIFJUUFNlbmRlclZpZGVvIHsK
IAogICBSVFBTZW5kZXJWaWRlbyhDbG9jayogY2xvY2ssCiAgICAgICAgICAgICAgICAgIFJUUFNl
bmRlciogcnRwU2VuZGVyLAotICAgICAgICAgICAgICAgICBGbGV4ZmVjU2VuZGVyKiBmbGV4ZmVj
X3NlbmRlcik7CisgICAgICAgICAgICAgICAgIEZsZXhmZWNTZW5kZXIqIGZsZXhmZWNfc2VuZGVy
LAorICAgICAgICAgICAgICAgICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogZnJhbWVfZW5jcnlw
dG9yLAorICAgICAgICAgICAgICAgICBib29sIHJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbik7CiAg
IHZpcnR1YWwgflJUUFNlbmRlclZpZGVvKCk7CiAKICAgdmlydHVhbCBlbnVtIFZpZGVvQ29kZWNU
eXBlIFZpZGVvQ29kZWNUeXBlKCkgY29uc3Q7CiAKLSAgc3RhdGljIFJ0cFV0aWxpdHk6OlBheWxv
YWQqIENyZWF0ZVZpZGVvUGF5bG9hZCgKLSAgICAgIGNvbnN0IGNoYXIgcGF5bG9hZF9uYW1lW1JU
UF9QQVlMT0FEX05BTUVfU0laRV0sCi0gICAgICBpbnQ4X3QgcGF5bG9hZF90eXBlKTsKKyAgc3Rh
dGljIFJ0cFV0aWxpdHk6OlBheWxvYWQqIENyZWF0ZVZpZGVvUGF5bG9hZChhYnNsOjpzdHJpbmdf
dmlldyBwYXlsb2FkX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50OF90IHBheWxvYWRfdHlwZSk7CiAKICAgYm9vbCBTZW5kVmlkZW8oZW51
bSBWaWRlb0NvZGVjVHlwZSB2aWRlb190eXBlLAogICAgICAgICAgICAgICAgICBGcmFtZVR5cGUg
ZnJhbWVfdHlwZSwKQEAgLTE1OCw2ICsxNjIsMTMgQEAgY2xhc3MgUlRQU2VuZGVyVmlkZW8gewog
ICAgICAgUlRDX0dVQVJERURfQlkoc3RhdHNfY3JpdF8pOwogCiAgIE9uZVRpbWVFdmVudCBmaXJz
dF9mcmFtZV9zZW50XzsKKworICAvLyBFMkVFIEN1c3RvbSBWaWRlbyBGcmFtZSBFbmNyeXB0b3Ig
KG9wdGlvbmFsKQorICBGcmFtZUVuY3J5cHRvckludGVyZmFjZSogY29uc3QgZnJhbWVfZW5jcnlw
dG9yXyA9IG51bGxwdHI7CisgIC8vIElmIHNldCB0byB0cnVlIHdpbGwgcmVxdWlyZSBhbGwgb3V0
Z29pbmcgZnJhbWVzIHRvIHBhc3MgdGhyb3VnaCBhbgorICAvLyBpbml0aWFsaXplZCBmcmFtZV9l
bmNyeXB0b3JfIGJlZm9yZSBiZWluZyBzZW50IG91dCBvZiB0aGUgbmV0d29yay4KKyAgLy8gT3Ro
ZXJ3aXNlIHRoZXNlIHBheWxvYWRzIHdpbGwgYmUgZHJvcHBlZC4KKyAgYm9vbCByZXF1aXJlX2Zy
YW1lX2VuY3J5cHRpb25fOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvcnRwX3V0aWxpdHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5jYwppbmRl
eCAyMjg1NzJmOGQxNjljMjFjYjBiNzZkNmJhMDQ1MzljZWU0NjQ3Y2YzLi40NGM2NzFmNTA2N2Vh
ZjM3YmZhZGY4Zjk2MGFmYjhmYzhjNTNjZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRp
bGl0eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5jYwpAQCAtMTAsOSArMTAsMTkgQEAK
IAogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91dGlsaXR5LmgiCiAKKyNp
bmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2luY2x1ZGUgImFwaS9h
cnJheV92aWV3LmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5oIgor
I2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZV9tYXJraW5nLmgiCisjaW5jbHVkZSAiYXBp
L3ZpZGVvL3ZpZGVvX3JvdGF0aW9uLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX3RpbWlu
Zy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBfY3ZvLmgiCiAjaW5j
bHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3J0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9pbnRlcmZhY2UvY29tbW9uX2NvbnN0YW50cy5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCkBAIC0zMywxMCArNDMsNiBA
QCBlbnVtIHsKICAqIE1pc2MgdXRpbGl0eSByb3V0aW5lcwogICovCiAKLWJvb2wgU3RyaW5nQ29t
cGFyZShjb25zdCBjaGFyKiBzdHIxLCBjb25zdCBjaGFyKiBzdHIyLCBjb25zdCB1aW50MzJfdCBs
ZW5ndGgpIHsKLSAgcmV0dXJuIF9zdHJuaWNtcChzdHIxLCBzdHIyLCBsZW5ndGgpID09IDA7Ci19
Ci0KIHNpemVfdCBXb3JkMzJBbGlnbihzaXplX3Qgc2l6ZSkgewogICB1aW50MzJfdCByZW1haW5k
ZXIgPSBzaXplICUgNDsKICAgaWYgKHJlbWFpbmRlciAhPSAwKQpAQCAtNTAxLDYgKzUwNywxMCBA
QCB2b2lkIFJ0cEhlYWRlclBhcnNlcjo6UGFyc2VPbmVCeXRlRXh0ZW5zaW9uSGVhZGVyKAogICAg
ICAgICAgIFJUQ19MT0coV0FSTklORykKICAgICAgICAgICAgICAgPDwgIlJ0cEdlbmVyaWNGcmFt
ZURlc2NyaXB0b3IgdW5zdXBwb3J0ZWQgYnkgcnRwIGhlYWRlciBwYXJzZXIuIjsKICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBrUnRwRXh0ZW5zaW9uQ29sb3JTcGFjZToKKyAgICAgICAg
ICBSVENfTE9HKFdBUk5JTkcpCisgICAgICAgICAgICAgIDw8ICJSdHBFeHRlbnNpb25Db2xvclNw
YWNlIHVuc3VwcG9ydGVkIGJ5IHJ0cCBoZWFkZXIgcGFyc2VyLiI7CisgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2Uga1J0cEV4dGVuc2lvbk5vbmU6CiAgICAgICAgIGNhc2Uga1J0cEV4dGVu
c2lvbk51bWJlck9mRXh0ZW5zaW9uczogewogICAgICAgICAgIFJUQ19OT1RSRUFDSEVEKCkgPDwg
IkludmFsaWQgZXh0ZW5zaW9uIHR5cGU6ICIgPDwgdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF91dGlsaXR5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5oCmluZGV4IDc2MmY5NjRhMmUy
ZjMxZWFhY2UxNTQ4NTk2MGYzODkxZTNkYjk2YmYuLjQwODUxNzQ4MWJiNDk1ZTU0MjRlYjY2Y2Yw
ZDA3OGU1ZDI0Y2I4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF91dGlsaXR5LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRj
cC9zb3VyY2UvcnRwX3V0aWxpdHkuaApAQCAtMTEsMTQgKzExLDE0IEBACiAjaWZuZGVmIE1PRFVM
RVNfUlRQX1JUQ1BfU09VUkNFX1JUUF9VVElMSVRZX0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JU
Q1BfU09VUkNFX1JUUF9VVElMSVRZX0hfCiAKLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUg
PG1hcD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKLSNpbmNs
dWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcmVjZWl2ZV9zdGF0aXN0aWNzLmgiCisjaW5j
bHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAiYXBpL3J0cF9oZWFk
ZXJzLmgiCisjaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVk
ZSkKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX2hlYWRlcl9leHRlbnNp
b25fbWFwLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2Rl
ZmluZXMuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfcnRjcF9jb25m
aWcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKIApAQCAtMjcsMTYgKzI3LDE1IEBAIGNvbnN0IHVpbnQ4X3Qga1J0cE1hcmtlckJpdE1h
c2sgPSAweDgwOwogbmFtZXNwYWNlIFJ0cFV0aWxpdHkgewogCiBzdHJ1Y3QgUGF5bG9hZCB7Ci0g
IFBheWxvYWQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgUGF5bG9hZFVuaW9uJiBwdSkgOiB0eXBl
U3BlY2lmaWMocHUpIHsKLSAgICBzdGQ6OnN0cm5jcHkodGhpcy0+bmFtZSwgbmFtZSwgc2l6ZW9m
KHRoaXMtPm5hbWUpIC0gMSk7Ci0gICAgdGhpcy0+bmFtZVtzaXplb2YodGhpcy0+bmFtZSkgLSAx
XSA9ICdcMCc7CisgIFBheWxvYWQoYWJzbDo6c3RyaW5nX3ZpZXcgcGF5bG9hZF9uYW1lLCBjb25z
dCBQYXlsb2FkVW5pb24mIHB1KQorICAgICAgOiB0eXBlU3BlY2lmaWMocHUpIHsKKyAgICBzaXpl
X3QgY2xpcHBlZF9zaXplID0gcGF5bG9hZF9uYW1lLmNvcHkobmFtZSwgc2l6ZW9mKG5hbWUpIC0g
MSk7CisgICAgbmFtZVtjbGlwcGVkX3NpemVdID0gJ1wwJzsKICAgfQogICBjaGFyIG5hbWVbUlRQ
X1BBWUxPQURfTkFNRV9TSVpFXTsKICAgUGF5bG9hZFVuaW9uIHR5cGVTcGVjaWZpYzsKIH07CiAK
LWJvb2wgU3RyaW5nQ29tcGFyZShjb25zdCBjaGFyKiBzdHIxLCBjb25zdCBjaGFyKiBzdHIyLCBj
b25zdCB1aW50MzJfdCBsZW5ndGgpOwotCiAvLyBSb3VuZCB1cCB0byB0aGUgbmVhcmVzdCBzaXpl
IHRoYXQgaXMgYSBtdWx0aXBsZSBvZiA0Lgogc2l6ZV90IFdvcmQzMkFsaWduKHNpemVfdCBzaXpl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3ZpZGVvX2hlYWRlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0cF92aWRlb19oZWFkZXIuY2MKaW5kZXggYTNlZThiYWE4M2UxM2FmYmQ1NWY1Mjg5MDFjMjkw
M2JmY2Y4ZmFmNy4uYmI5NDEzZGRkNWUyOGE4OWYzOWQ3N2MzNDUyYWIxYmUzYmE2MTY1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRwX3ZpZGVvX2hlYWRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBf
dmlkZW9faGVhZGVyLmNjCkBAIC0xMiw3ICsxMiw3IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
Ci1SVFBWaWRlb0hlYWRlcjo6UlRQVmlkZW9IZWFkZXIoKSA6IHBsYXlvdXRfZGVsYXkoKSwgdmlk
ZW9fdGltaW5nKCkge30KK1JUUFZpZGVvSGVhZGVyOjpSVFBWaWRlb0hlYWRlcigpIDogdmlkZW9f
dGltaW5nKCkge30KIFJUUFZpZGVvSGVhZGVyOjpSVFBWaWRlb0hlYWRlcihjb25zdCBSVFBWaWRl
b0hlYWRlciYgb3RoZXIpID0gZGVmYXVsdDsKIFJUUFZpZGVvSGVhZGVyOjp+UlRQVmlkZW9IZWFk
ZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3J0cF92aWRlb19oZWFkZXIuaAppbmRleCAyODhiN2QwM2EwMjYwZTUyZjNk
ZTBlMTI1OTdjNDQ2NWVjNjZkMGNlLi4xYzc1ZjUzOWExZTg2YmI2M2ZmMWE3MTdlMGUxYWIyNTZk
YTQ3M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdmlkZW9faGVhZGVyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9z
b3VyY2UvcnRwX3ZpZGVvX2hlYWRlci5oCkBAIC0xMCw4ICsxMCwxMiBAQAogI2lmbmRlZiBNT0RV
TEVTX1JUUF9SVENQX1NPVVJDRV9SVFBfVklERU9fSEVBREVSX0hfCiAjZGVmaW5lIE1PRFVMRVNf
UlRQX1JUQ1BfU09VUkNFX1JUUF9WSURFT19IRUFERVJfSF8KIAorI2luY2x1ZGUgPGNzdGRpbnQ+
CisKICNpbmNsdWRlICJhYnNsL2NvbnRhaW5lci9pbmxpbmVkX3ZlY3Rvci5oIgorI2luY2x1ZGUg
ImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJhYnNsL3R5cGVzL3ZhcmlhbnQuaCIK
KyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oIgogI2luY2x1ZGUgImFwaS92
aWRlby92aWRlb19jb250ZW50X3R5cGUuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJh
bWVfbWFya2luZy5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19yb3RhdGlvbi5oIgpAQCAt
NTYsNyArNjAsNyBAQCBzdHJ1Y3QgUlRQVmlkZW9IZWFkZXIgewogICB1aW50OF90IHNpbXVsY2Fz
dElkeCA9IDA7CiAgIFZpZGVvQ29kZWNUeXBlIGNvZGVjID0gVmlkZW9Db2RlY1R5cGU6OmtWaWRl
b0NvZGVjR2VuZXJpYzsKIAotICBQbGF5b3V0RGVsYXkgcGxheW91dF9kZWxheTsKKyAgUGxheW91
dERlbGF5IHBsYXlvdXRfZGVsYXkgPSB7LTEsIC0xfTsKICAgVmlkZW9TZW5kVGltaW5nIHZpZGVv
X3RpbWluZzsKICAgRnJhbWVNYXJraW5nIGZyYW1lX21hcmtpbmc7CiAgIFJUUFZpZGVvVHlwZUhl
YWRlciB2aWRlb190eXBlX2hlYWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RpbWVfdXRpbC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3RpbWVfdXRpbC5jYwppbmRleCA2YWMyODBhNjFkYjdlOTNlNzU3YThjZjdh
NWQyY2U4MDBjYTg1OGQ1Li5lNjUzMjlkMDZiNzgwNTJiMjA0MDUzYjJmZDlkYTQ1NzE2MGRlMDNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90aW1lX3V0aWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdGltZV91
dGlsLmNjCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKKyNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIK
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0yMiwyMCArMjMsMjcgQEAgaW5saW5lIGludDY0X3Qg
RGl2aWRlUm91bmRUb05lYXJlc3QoaW50NjRfdCB4LCB1aW50MzJfdCB5KSB7CiAgIHJldHVybiAo
eCArIHkgLyAyKSAvIHk7CiB9CiAKLWludDY0X3QgTnRwT2Zmc2V0VXMoKSB7CitpbnQ2NF90IE50
cE9mZnNldE1zQ2FsbGVkT25jZSgpIHsKICAgY29uc3RleHByIGludDY0X3Qga050cEphbjE5NzBT
ZWMgPSAyMjA4OTg4ODAwOwotICBpbnQ2NF90IGNsb2NrX3RpbWUgPSBydGM6OlRpbWVNaWNyb3Mo
KTsKLSAgaW50NjRfdCB1dGNfdGltZSA9IHJ0Yzo6VGltZVVUQ01pY3JvcygpOwotICByZXR1cm4g
dXRjX3RpbWUgLSBjbG9ja190aW1lICsga050cEphbjE5NzBTZWMgKiBydGM6OmtOdW1NaWNyb3Nl
Y3NQZXJTZWM7CisgIGludDY0X3QgY2xvY2tfdGltZSA9IHJ0Yzo6VGltZU1pbGxpcygpOworICBp
bnQ2NF90IHV0Y190aW1lID0gcnRjOjpUaW1lVVRDTWlsbGlzKCk7CisgIHJldHVybiB1dGNfdGlt
ZSAtIGNsb2NrX3RpbWUgKyBrTnRwSmFuMTk3MFNlYyAqIHJ0Yzo6a051bU1pbGxpc2Vjc1BlclNl
YzsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCiAKLU50cFRpbWUgVGltZU1pY3Jvc1RvTnRwKGludDY0
X3QgdGltZV91cykgeworaW50NjRfdCBOdHBPZmZzZXRNcygpIHsKICAgLy8gQ2FsY3VsYXRlIHRo
ZSBvZmZzZXQgb25jZS4KLSAgc3RhdGljIGludDY0X3QgbnRwX29mZnNldF91cyA9IE50cE9mZnNl
dFVzKCk7CisgIHN0YXRpYyBpbnQ2NF90IG50cF9vZmZzZXRfbXMgPSBOdHBPZmZzZXRNc0NhbGxl
ZE9uY2UoKTsKKyAgcmV0dXJuIG50cF9vZmZzZXRfbXM7Cit9CiAKLSAgaW50NjRfdCB0aW1lX250
cF91cyA9IHRpbWVfdXMgKyBudHBfb2Zmc2V0X3VzOworTnRwVGltZSBUaW1lTWljcm9zVG9OdHAo
aW50NjRfdCB0aW1lX3VzKSB7CisgIC8vIFNpbmNlIHRoaXMgZG9lc24ndCByZXR1cm4gYSB3YWxs
Y2xvY2sgdGltZSwgYnV0IG9ubHkgTlRQIHJlcHJlc2VudGF0aW9uCisgIC8vIG9mIHJ0Yzo6VGlt
ZU1pbGxpcygpIGNsb2NrLCB0aGUgZXhhY3Qgb2Zmc2V0IGRvZXNuJ3QgbWF0dGVyLgorICAvLyBU
byBzaW1wbGlmeSBjb252ZXJzaW9ucyBiZXR3ZWVuIE5UUCBhbmQgUlRQIHRpbWUsIHRoaXMgb2Zm
c2V0IGlzCisgIC8vIGxpbWl0ZWQgdG8gbWlsbGlzZWNvbmRzIGluIHJlc29sdXRpb24uCisgIGlu
dDY0X3QgdGltZV9udHBfdXMgPSB0aW1lX3VzICsgTnRwT2Zmc2V0TXMoKSAqIDEwMDA7CiAgIFJU
Q19EQ0hFQ0tfR0UodGltZV9udHBfdXMsIDApOyAgLy8gVGltZSBiZWZvcmUgeWVhciAxOTAwIGlz
IHVuc3VwcG9ydGVkLgogCiAgIC8vIFRPRE8oZGFuaWxjaGFwKTogQ29udmVydCBib3RoIHNlY29u
ZHMgYW5kIGZyYWN0aW9uIHRvZ2V0aGVyIHVzaW5nIGludDEyOApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3Vy
Y2UvdGltZV91dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90aW1lX3V0aWwuaAppbmRleCA2NzI3MjJjMDdmOTlh
YzBmYjcyNzczMTc3NjAwZTI3YTUwOWUwMTk0Li45NGI5MTQzMTBjY2YyMGRjYWI2Y2E2MDQ0OGIy
OWE5YWUxZjM5MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90aW1lX3V0aWwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS90aW1lX3V0aWwuaApAQCAtMjIsMTMgKzIyLDE0IEBAIG5hbWVzcGFjZSB3ZWJydGMgewog
Ly8gZGlmZmVyZW5jZSBvZiB0aGUgcGFzc2VkIHZhbHVlcy4KIC8vIEFzIGEgcmVzdWx0IFRpbWVN
aWNyb3NUb050cChydGM6OlRpbWVNaWNyb3MoKSkgZG9lc24ndCBndWFyYW50ZWUgdG8gbWF0Y2gK
IC8vIHN5c3RlbSB0aW1lLgorLy8gSG93ZXZlciwgVGltZU1pY3Jvc1RvTnRwIEd1YXJhbnRlZXMg
dGhhdCByZXR1cm5lZCBOdHBUaW1lIHdpbGwgYmUgb2Zmc2V0dGVkCisvLyBmcm9tIHJ0Yzo6VGlt
ZU1pY3JvcygpIGJ5IGludGVncmFsIG51bWJlciBvZiBtaWxsaXNlY29uZHMuCisvLyBVc2UgTnRw
T2Zmc2V0TXMoKSB0byBnZXQgdGhhdCBvZmZzZXQgdmFsdWUuCiBOdHBUaW1lIFRpbWVNaWNyb3NU
b050cChpbnQ2NF90IHRpbWVfdXMpOwogCi0vLyBDb252ZXJ0cyBOVFAgdGltZXN0YW1wIHRvIFJU
UCB0aW1lc3RhbXAuCi1pbmxpbmUgdWludDMyX3QgTnRwVG9SdHAoTnRwVGltZSBudHAsIHVpbnQz
Ml90IGZyZXEpIHsKLSAgdWludDMyX3QgdG1wID0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihudHAu
ZnJhY3Rpb25zKCkpICogZnJlcSkgPj4gMzI7Ci0gIHJldHVybiBudHAuc2Vjb25kcygpICogZnJl
cSArIHRtcDsKLX0KKy8vIERpZmZlcmVuY2UgYmV0d2VlbiBOdHAgdGltZSBhbmQgbG9jYWwgcmVs
YXRpdmUgdGltZSByZXR1cm5lZCBieQorLy8gcnRjOjpUaW1lTWljcm9zKCkKK2ludDY0X3QgTnRw
T2Zmc2V0TXMoKTsKIAogLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBjb21wYWN0IG50cCByZXByZXNl
bnRhdGlvbjoKIC8vIFJGQyAzNTUwLCBTZWN0aW9uIDQuIFRpbWUgRm9ybWF0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBf
cnRjcC9zb3VyY2UvdG1tYnJfaGVscC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RtbWJyX2hlbHAuY2MKaW5kZXgg
OGFhNDUzMDIxMTM1M2M1YWQ1ODRiNGE5YzJmZjc5NWE0OWNhYjBhNi4uMzE1YTRjMjEyMDllYWRi
ZTJiYWY4MjM2M2QzOGY0OWExNDMxOGVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdG1tYnJfaGVs
cC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS90bW1icl9oZWxwLmNjCkBAIC0xMCw2ICsxMCw3IEBACiAKICNp
bmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90bW1icl9oZWxwLmgiCiAKKyNpbmNsdWRl
IDxzdGRkZWYuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3J0cF9ydGNwL3NvdXJjZS90bW1icl9oZWxwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS90bW1icl9oZWxwLmgK
aW5kZXggOTFhZWFmNDY0MTAxYzJjZmMwYjM2YTgzMmU5MDkxOGQwNzRhN2UwNi4uYmY4NmY2NTIy
MmM3ZTA5MmNjODQ4YjQ2ZTQyYzBjYjQ2NjVkMTdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdG1t
YnJfaGVscC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3RtbWJyX2hlbHAuaApAQCAtMTEsNyArMTEsOSBAQAog
I2lmbmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9UTU1CUl9IRUxQX0hfCiAjZGVmaW5lIE1P
RFVMRVNfUlRQX1JUQ1BfU09VUkNFX1RNTUJSX0hFTFBfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPHZlY3Rvcj4KKwogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNl
L3J0Y3BfcGFja2V0L3RtbWJfaXRlbS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3VscGZlY19nZW5lcmF0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfZ2VuZXJh
dG9yLmNjCmluZGV4IGU1Nzc3ZWRhYjg1MDRiMTc0MGIxNjRhNmIxOWRmZjlhYjg0ZDYwYzUuLjU2
ZGFlMjk0NTBlOTUwZWRkNTZhNzVmMzMwZTNiMDU5ODU5Y2EzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291
cmNlL3VscGZlY19nZW5lcmF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2dlbmVyYXRvci5j
YwpAQCAtMTAsMTIgKzEwLDE1IEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJj
ZS91bHBmZWNfZ2VuZXJhdG9yLmgiCiAKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxj
c3RkaW50PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmgiCisjaW5jbHVkZSAibW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uX2ludGVybmFsLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3V0aWxpdHkuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2dl
bmVyYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2dlbmVyYXRvci5oCmluZGV4IGVmYzc1M2Y0Yzc0
MTMyMzMxYWU2YzUzNTdjY2NjYzJiOWVjZTk2MzQuLjc0YTFkODAyNTZlYTljOWMzYjk2NTY0Y2Iz
MGQ3YWJhYWYxOTc4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19nZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS91bHBmZWNfZ2VuZXJhdG9yLmgKQEAgLTExLDEwICsxMSwxMyBAQAogI2lm
bmRlZiBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9VTFBGRUNfR0VORVJBVE9SX0hfCiAjZGVmaW5l
IE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1VMUEZFQ19HRU5FUkFUT1JfSF8KIAorI2luY2x1ZGUg
PHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVk
ZS9tb2R1bGVfZmVjX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
Zm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9y
dHBfcnRjcC9zb3VyY2UvdWxwZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
dWxwZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVyLmNjCmluZGV4IGM1NGQzY2RkOGY5MGIxZjM0MTI0
YzlmZDQ4OWU0YjE4M2EwYWIxODEuLjIyYWY3ZTc3MzY5MDRiYjI0ZDliODM3NjdjYmI0NWJiYzk3
M2M5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuY2MKQEAgLTEwLDEx
ICsxMCwxMiBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX2hl
YWRlcl9yZWFkZXJfd3JpdGVyLmgiCiAKLSNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHN0
cmluZy5oPgogCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvYnl0ZV9pby5oIgog
I2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3Avc291cmNlL2ZvcndhcmRfZXJyb3JfY29ycmVjdGlv
bl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS91bHBmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3Vs
cGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5oCmluZGV4IGZjODNhZmRmMGNjMDI1YTkyOTY2YmEz
NTVmNmRlNmE2Y2I3NDRiYzEuLmE4YmI3MzdkYmI1OGRhMDVlYjJkZWE2OGUxZTVmMjY4NTdjMjBm
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvcnRw
X3J0Y3Avc291cmNlL3VscGZlY19oZWFkZXJfcmVhZGVyX3dyaXRlci5oCkBAIC0xMSw2ICsxMSw5
IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1VMUEZFQ19IRUFERVJfUkVBREVS
X1dSSVRFUl9IXwogI2RlZmluZSBNT0RVTEVTX1JUUF9SVENQX1NPVVJDRV9VTFBGRUNfSEVBREVS
X1JFQURFUl9XUklURVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGlu
dC5oPgorCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9j
b3JyZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9ydHBfcnRjcC9zb3VyY2Uv
dWxwZmVjX3JlY2VpdmVyX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1wbC5j
YwppbmRleCBlYjA5Yzk1ODEzNDEzZDU3NTk1ZWJkOTRhYjg5OTY4NGFiODM4ZGQ0Li43ZGE2Yjg4
YTAwN2NmNWRkZWZkY2E4YzIxOGViYjE5NzVmODZmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91
bHBmZWNfcmVjZWl2ZXJfaW1wbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1w
bC5jYwpAQCAtMTAsMTIgKzEwLDEzIEBACiAKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3Nv
dXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1wbC5oIgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJtb2R1bGVzL3J0
cF9ydGNwL3NvdXJjZS9ieXRlX2lvLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9y
ZWZfcHRyLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJf
aW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvdWxwZmVjX3JlY2VpdmVyX2ltcGwuaAppbmRleCA5NjM2N2RjN2Fh
ODIxZWRjYzg1NmU3ZWRhNjFlZTNjMzU0MzlmYWY4Li4wOTQzMjY2MTYxODAyYzc4NDJkZDI0NjA4
NGE2ZjljNTA3ODg3MjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS91bHBmZWNfcmVjZWl2ZXJfaW1w
bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvcnRwX3J0Y3Avc291cmNlL3VscGZlY19yZWNlaXZlcl9pbXBsLmgKQEAgLTExLDkgKzExLDEy
IEBACiAjaWZuZGVmIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1VMUEZFQ19SRUNFSVZFUl9JTVBM
X0hfCiAjZGVmaW5lIE1PRFVMRVNfUlRQX1JUQ1BfU09VUkNFX1VMUEZFQ19SRUNFSVZFUl9JTVBM
X0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL3J0cF9oZWFkZXJz
LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwX2RlZmluZXMu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvdWxwZmVjX3JlY2VpdmVyLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvZm9yd2FyZF9lcnJvcl9jb3JyZWN0
aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3V0aWxpdHkvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvQlVJTEQuZ24KaW5kZXggMzJkYTEwOTUw
ZjI5M2U2MjZhOTJmOTdmNjhmMGFmNTVmN2FkYzAyOC4uMWQ3ODBiMGU0YTc3MGZkMWVmZjM1NjVl
ZjExZTY0NDk1NzJmNjhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy91dGlsaXR5L0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9CVUlMRC5nbgpA
QCAtMjYsNyArMjYsNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoInV0aWxpdHkiKSB7CiAKICAgZGVw
cyA9IFsKICAgICAiLi46bW9kdWxlX2FwaSIsCi0gICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAog
ICAgICIuLi8uLi9jb21tb25fYXVkaW8iLAogICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAog
ICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291
cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwu
Y2MKaW5kZXggOTcyNzJkYTJiZjEwYTc2ZTMyYmFmMTA1ZTM0YWI3Y2UzZjUxOGU5MC4uMjBmMjZk
OTI3YTM5NDYzODk4NTcyYmE5ZjVmODc3MTI2YTU0ZDc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy91dGlsaXR5L3NvdXJjZS9w
cm9jZXNzX3RocmVhZF9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJvY2Vzc190aHJlYWRfaW1wbC5j
YwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy91dGlsaXR5L3NvdXJjZS9w
cm9jZXNzX3RocmVhZF9pbXBsLmgiCiAKKyNpbmNsdWRlIDxzdHJpbmc+CisKICNpbmNsdWRlICJt
b2R1bGVzL2luY2x1ZGUvbW9kdWxlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgpAQCAtNDIsOSArNDQsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UHJvY2Vzc1RocmVhZD4gUHJvY2Vzc1RocmVhZDo6Q3JlYXRlKGNvbnN0IGNoYXIq
IHRocmVhZF9uYW1lKSB7CiB9CiAKIFByb2Nlc3NUaHJlYWRJbXBsOjpQcm9jZXNzVGhyZWFkSW1w
bChjb25zdCBjaGFyKiB0aHJlYWRfbmFtZSkKLSAgICA6IHdha2VfdXBfKEV2ZW50V3JhcHBlcjo6
Q3JlYXRlKCkpLAotICAgICAgc3RvcF8oZmFsc2UpLAotICAgICAgdGhyZWFkX25hbWVfKHRocmVh
ZF9uYW1lKSB7fQorICAgIDogc3RvcF8oZmFsc2UpLCB0aHJlYWRfbmFtZV8odGhyZWFkX25hbWUp
IHt9CiAKIFByb2Nlc3NUaHJlYWRJbXBsOjp+UHJvY2Vzc1RocmVhZEltcGwoKSB7CiAgIFJUQ19E
Q0hFQ0sodGhyZWFkX2NoZWNrZXJfLkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7CkBAIC04Myw3ICs4
Myw3IEBAIHZvaWQgUHJvY2Vzc1RocmVhZEltcGw6OlN0b3AoKSB7CiAgICAgc3RvcF8gPSB0cnVl
OwogICB9CiAKLSAgd2FrZV91cF8tPlNldCgpOworICB3YWtlX3VwXy5TZXQoKTsKIAogICB0aHJl
YWRfLT5TdG9wKCk7CiAgIHN0b3BfID0gZmFsc2U7CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBQ
cm9jZXNzVGhyZWFkSW1wbDo6V2FrZVVwKE1vZHVsZSogbW9kdWxlKSB7CiAgICAgICAgIG0ubmV4
dF9jYWxsYmFjayA9IGtDYWxsUHJvY2Vzc0ltbWVkaWF0ZWx5OwogICAgIH0KICAgfQotICB3YWtl
X3VwXy0+U2V0KCk7CisgIHdha2VfdXBfLlNldCgpOwogfQogCiB2b2lkIFByb2Nlc3NUaHJlYWRJ
bXBsOjpQb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpRdWV1ZWRUYXNrPiB0YXNrKSB7CkBA
IC0xMTEsNyArMTExLDcgQEAgdm9pZCBQcm9jZXNzVGhyZWFkSW1wbDo6UG9zdFRhc2soc3RkOjp1
bmlxdWVfcHRyPHJ0Yzo6UXVldWVkVGFzaz4gdGFzaykgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGxv
Y2soJmxvY2tfKTsKICAgICBxdWV1ZV8ucHVzaCh0YXNrLnJlbGVhc2UoKSk7CiAgIH0KLSAgd2Fr
ZV91cF8tPlNldCgpOworICB3YWtlX3VwXy5TZXQoKTsKIH0KIAogdm9pZCBQcm9jZXNzVGhyZWFk
SW1wbDo6UmVnaXN0ZXJNb2R1bGUoTW9kdWxlKiBtb2R1bGUsCkBAIC0xNDUsNyArMTQ1LDcgQEAg
dm9pZCBQcm9jZXNzVGhyZWFkSW1wbDo6UmVnaXN0ZXJNb2R1bGUoTW9kdWxlKiBtb2R1bGUsCiAg
IC8vIFdha2UgdGhlIHRocmVhZCBjYWxsaW5nIFByb2Nlc3NUaHJlYWRJbXBsOjpQcm9jZXNzKCkg
dG8gdXBkYXRlIHRoZQogICAvLyB3YWl0aW5nIHRpbWUuIFRoZSB3YWl0aW5nIHRpbWUgZm9yIHRo
ZSBqdXN0IHJlZ2lzdGVyZWQgbW9kdWxlIG1heSBiZQogICAvLyBzaG9ydGVyIHRoYW4gYWxsIG90
aGVyIHJlZ2lzdGVyZWQgbW9kdWxlcy4KLSAgd2FrZV91cF8tPlNldCgpOworICB3YWtlX3VwXy5T
ZXQoKTsKIH0KIAogdm9pZCBQcm9jZXNzVGhyZWFkSW1wbDo6RGVSZWdpc3Rlck1vZHVsZShNb2R1
bGUqIG1vZHVsZSkgewpAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgUHJvY2Vzc1RocmVhZEltcGw6
OlByb2Nlc3MoKSB7CiAKICAgaW50NjRfdCB0aW1lX3RvX3dhaXQgPSBuZXh0X2NoZWNrcG9pbnQg
LSBydGM6OlRpbWVNaWxsaXMoKTsKICAgaWYgKHRpbWVfdG9fd2FpdCA+IDApCi0gICAgd2FrZV91
cF8tPldhaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odGltZV90b193YWl0KSk7CisgICAg
d2FrZV91cF8uV2FpdChzdGF0aWNfY2FzdDxpbnQ+KHRpbWVfdG9fd2FpdCkpOwogCiAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy91dGlsaXR5L3NvdXJjZS9wcm9jZXNzX3RocmVhZF9pbXBsLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkv
c291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuaAppbmRleCBjMWY2ZWQ0NDQ3NWQ2ZDc0ODU3MDQy
NDdlYjZiZDBkYmEyNTgxZmYxLi5mZmYyMWQwNDYxOWMwMjk2NDFhNjkwY2NiNDdkZDYzZjI3Zjdl
ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291
cmNlL3Byb2Nlc3NfdGhyZWFkX2ltcGwuaApAQCAtMTEsMTYgKzExLDE5IEBACiAjaWZuZGVmIE1P
RFVMRVNfVVRJTElUWV9TT1VSQ0VfUFJPQ0VTU19USFJFQURfSU1QTF9IXwogI2RlZmluZSBNT0RV
TEVTX1VUSUxJVFlfU09VUkNFX1BST0NFU1NfVEhSRUFEX0lNUExfSF8KIAorI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHF1
ZXVlPgogCisjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZS5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3NfdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3Ro
cmVhZC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKICNpbmNsdWRlICJydGNf
YmFzZS90aHJlYWRfY2hlY2tlci5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRl
L2V2ZW50X3dyYXBwZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAKQEAgLTcyLDcgKzc1LDcg
QEAgY2xhc3MgUHJvY2Vzc1RocmVhZEltcGwgOiBwdWJsaWMgUHJvY2Vzc1RocmVhZCB7CiAgIHJ0
Yzo6Q3JpdGljYWxTZWN0aW9uIGxvY2tfOyAgLy8gVXNlZCB0byBndWFyZCBtb2R1bGVzXywgdGFz
a3NfIGFuZCBzdG9wXy4KIAogICBydGM6OlRocmVhZENoZWNrZXIgdGhyZWFkX2NoZWNrZXJfOwot
ICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPiB3YWtlX3VwXzsKKyAgcnRjOjpF
dmVudCB3YWtlX3VwXzsKICAgLy8gVE9ETyhwYm9zKTogUmVtb3ZlIHVuaXF1ZV9wdHIgYW5kIHN0
b3AgcmVjcmVhdGluZyB0aGUgdGhyZWFkLgogICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpQbGF0Zm9y
bVRocmVhZD4gdGhyZWFkXzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy91dGlsaXR5L3NvdXJjZS9wcm9jZXNzX3RocmVhZF9p
bXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy91dGlsaXR5L3NvdXJjZS9wcm9jZXNzX3RocmVhZF9pbXBsX3VuaXR0ZXN0LmNj
CmluZGV4IGQ1OTI2YjI2YzNlMmNhNGIwNzcyMjY2M2NhYzZiYjBjNDZlMTVjNzAuLjE5MTU3OTYz
YTNiYmJmOWY5M2Q3OGRjMzNiYTA1NWI0Mjk5ZDhlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdXRpbGl0eS9zb3VyY2UvcHJv
Y2Vzc190aHJlYWRfaW1wbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3V0aWxpdHkvc291cmNlL3Byb2Nlc3NfdGhyZWFk
X2ltcGxfdW5pdHRlc3QuY2MKQEAgLTQyLDE0ICs0MiwxNCBAQCBjbGFzcyBNb2NrTW9kdWxlIDog
cHVibGljIE1vZHVsZSB7CiAKIGNsYXNzIFJhaXNlRXZlbnRUYXNrIDogcHVibGljIHJ0Yzo6UXVl
dWVkVGFzayB7CiAgcHVibGljOgotICBSYWlzZUV2ZW50VGFzayhFdmVudFdyYXBwZXIqIGV2ZW50
KSA6IGV2ZW50XyhldmVudCkge30KKyAgUmFpc2VFdmVudFRhc2socnRjOjpFdmVudCogZXZlbnQp
IDogZXZlbnRfKGV2ZW50KSB7fQogICBib29sIFJ1bigpIG92ZXJyaWRlIHsKICAgICBldmVudF8t
PlNldCgpOwogICAgIHJldHVybiB0cnVlOwogICB9CiAKICBwcml2YXRlOgotICBFdmVudFdyYXBw
ZXIqIGV2ZW50XzsKKyAgcnRjOjpFdmVudCogZXZlbnRfOwogfTsKIAogQUNUSU9OX1AoU2V0RXZl
bnQsIGV2ZW50KSB7CkBAIC04MywxOSArODMsMTkgQEAgVEVTVChQcm9jZXNzVGhyZWFkSW1wbCwg
UHJvY2Vzc0NhbGwpIHsKICAgUHJvY2Vzc1RocmVhZEltcGwgdGhyZWFkKCJQcm9jZXNzVGhyZWFk
Iik7CiAgIHRocmVhZC5TdGFydCgpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdyYXBwZXI+
IGV2ZW50KEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpOworICBydGM6OkV2ZW50IGV2ZW50OwogCiAg
IE1vY2tNb2R1bGUgbW9kdWxlOwogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFRpbWVVbnRpbE5leHRQ
cm9jZXNzKCkpCiAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDApKQogICAgICAgLldpbGxSZXBlYXRl
ZGx5KFJldHVybigxKSk7CiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2VzcygpKQotICAgICAg
LldpbGxPbmNlKERvQWxsKFNldEV2ZW50KGV2ZW50LmdldCgpKSwgUmV0dXJuKCkpKQorICAgICAg
LldpbGxPbmNlKERvQWxsKFNldEV2ZW50KCZldmVudCksIFJldHVybigpKSkKICAgICAgIC5XaWxs
UmVwZWF0ZWRseShSZXR1cm4oKSk7CiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2Vzc1RocmVh
ZEF0dGFjaGVkKCZ0aHJlYWQpKS5UaW1lcygxKTsKIAogICB0aHJlYWQuUmVnaXN0ZXJNb2R1bGUo
Jm1vZHVsZSwgUlRDX0ZST01fSEVSRSk7Ci0gIEVYUEVDVF9FUShrRXZlbnRTaWduYWxlZCwgZXZl
bnQtPldhaXQoa0V2ZW50V2FpdFRpbWVvdXQpKTsKKyAgRVhQRUNUX1RSVUUoZXZlbnQuV2FpdChr
RXZlbnRXYWl0VGltZW91dCkpOwogCiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2Vzc1RocmVh
ZEF0dGFjaGVkKG51bGxwdHIpKS5UaW1lcygxKTsKICAgdGhyZWFkLlN0b3AoKTsKQEAgLTEwNSwy
MSArMTA1LDIxIEBAIFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIFByb2Nlc3NDYWxsKSB7CiAvLyBj
YWxsIHRvIFN0YXJ0KCkuCiBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBQcm9jZXNzQ2FsbDIpIHsK
ICAgUHJvY2Vzc1RocmVhZEltcGwgdGhyZWFkKCJQcm9jZXNzVGhyZWFkIik7Ci0gIHN0ZDo6dW5p
cXVlX3B0cjxFdmVudFdyYXBwZXI+IGV2ZW50KEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpOworICBy
dGM6OkV2ZW50IGV2ZW50OwogCiAgIE1vY2tNb2R1bGUgbW9kdWxlOwogICBFWFBFQ1RfQ0FMTCht
b2R1bGUsIFRpbWVVbnRpbE5leHRQcm9jZXNzKCkpCiAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDAp
KQogICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigxKSk7CiAgIEVYUEVDVF9DQUxMKG1vZHVs
ZSwgUHJvY2VzcygpKQotICAgICAgLldpbGxPbmNlKERvQWxsKFNldEV2ZW50KGV2ZW50LmdldCgp
KSwgUmV0dXJuKCkpKQorICAgICAgLldpbGxPbmNlKERvQWxsKFNldEV2ZW50KCZldmVudCksIFJl
dHVybigpKSkKICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSk7CiAKICAgdGhyZWFkLlJl
Z2lzdGVyTW9kdWxlKCZtb2R1bGUsIFJUQ19GUk9NX0hFUkUpOwogCiAgIEVYUEVDVF9DQUxMKG1v
ZHVsZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKCZ0aHJlYWQpKS5UaW1lcygxKTsKICAgdGhyZWFk
LlN0YXJ0KCk7Ci0gIEVYUEVDVF9FUShrRXZlbnRTaWduYWxlZCwgZXZlbnQtPldhaXQoa0V2ZW50
V2FpdFRpbWVvdXQpKTsKKyAgRVhQRUNUX1RSVUUoZXZlbnQuV2FpdChrRXZlbnRXYWl0VGltZW91
dCkpOwogCiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKG51bGxw
dHIpKS5UaW1lcygxKTsKICAgdGhyZWFkLlN0b3AoKTsKQEAgLTEyOSw3ICsxMjksNyBAQCBURVNU
KFByb2Nlc3NUaHJlYWRJbXBsLCBQcm9jZXNzQ2FsbDIpIHsKIC8vIEFmdGVyIHVucmVnaXN0cmF0
aW9uLCB3ZSBzaG91bGQgbm90IHJlY2VpdmUgYW55IGZ1cnRoZXIgY2FsbGJhY2tzLgogVEVTVChQ
cm9jZXNzVGhyZWFkSW1wbCwgRGVyZWdpc3RlcikgewogICBQcm9jZXNzVGhyZWFkSW1wbCB0aHJl
YWQoIlByb2Nlc3NUaHJlYWQiKTsKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gZXZl
bnQoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgaW50
IHByb2Nlc3NfY291bnQgPSAwOwogICBNb2NrTW9kdWxlIG1vZHVsZTsKQEAgLTEzNyw4ICsxMzcs
NyBAQCBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBEZXJlZ2lzdGVyKSB7CiAgICAgICAuV2lsbE9u
Y2UoUmV0dXJuKDApKQogICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigxKSk7CiAgIEVYUEVD
VF9DQUxMKG1vZHVsZSwgUHJvY2VzcygpKQotICAgICAgLldpbGxPbmNlKAotICAgICAgICAgIERv
QWxsKFNldEV2ZW50KGV2ZW50LmdldCgpKSwgSW5jcmVtZW50KCZwcm9jZXNzX2NvdW50KSwgUmV0
dXJuKCkpKQorICAgICAgLldpbGxPbmNlKERvQWxsKFNldEV2ZW50KCZldmVudCksIEluY3JlbWVu
dCgmcHJvY2Vzc19jb3VudCksIFJldHVybigpKSkKICAgICAgIC5XaWxsUmVwZWF0ZWRseShEb0Fs
bChJbmNyZW1lbnQoJnByb2Nlc3NfY291bnQpLCBSZXR1cm4oKSkpOwogCiAgIHRocmVhZC5SZWdp
c3Rlck1vZHVsZSgmbW9kdWxlLCBSVENfRlJPTV9IRVJFKTsKQEAgLTE0Niw3ICsxNDUsNyBAQCBU
RVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBEZXJlZ2lzdGVyKSB7CiAgIEVYUEVDVF9DQUxMKG1vZHVs
ZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKCZ0aHJlYWQpKS5UaW1lcygxKTsKICAgdGhyZWFkLlN0
YXJ0KCk7CiAKLSAgRVhQRUNUX0VRKGtFdmVudFNpZ25hbGVkLCBldmVudC0+V2FpdChrRXZlbnRX
YWl0VGltZW91dCkpOworICBFWFBFQ1RfVFJVRShldmVudC5XYWl0KGtFdmVudFdhaXRUaW1lb3V0
KSk7CiAKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQobnVsbHB0
cikpLlRpbWVzKDEpOwogICB0aHJlYWQuRGVSZWdpc3Rlck1vZHVsZSgmbW9kdWxlKTsKQEAgLTE1
NSw3ICsxNTQsNyBAQCBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBEZXJlZ2lzdGVyKSB7CiAgIGlu
dCBjb3VudF9hZnRlcl9kZXJlZ2lzdGVyID0gcHJvY2Vzc19jb3VudDsKIAogICAvLyBXZSBzaG91
bGRuJ3QgZ2V0IGFueSBtb3JlIGNhbGxiYWNrcy4KLSAgRVhQRUNUX0VRKGtFdmVudFRpbWVvdXQs
IGV2ZW50LT5XYWl0KDIwKSk7CisgIEVYUEVDVF9GQUxTRShldmVudC5XYWl0KDIwKSk7CiAgIEVY
UEVDVF9FUShjb3VudF9hZnRlcl9kZXJlZ2lzdGVyLCBwcm9jZXNzX2NvdW50KTsKICAgdGhyZWFk
LlN0b3AoKTsKIH0KQEAgLTE2Nyw3ICsxNjYsNyBAQCB2b2lkIFByb2Nlc3NDYWxsQWZ0ZXJBRmV3
TXMoaW50NjRfdCBtaWxsaXNlY29uZHMpIHsKICAgUHJvY2Vzc1RocmVhZEltcGwgdGhyZWFkKCJQ
cm9jZXNzVGhyZWFkIik7CiAgIHRocmVhZC5TdGFydCgpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxF
dmVudFdyYXBwZXI+IGV2ZW50KEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpOworICBydGM6OkV2ZW50
IGV2ZW50OwogCiAgIE1vY2tNb2R1bGUgbW9kdWxlOwogICBpbnQ2NF90IHN0YXJ0X3RpbWUgPSAw
OwpAQCAtMTc2LDggKzE3NSw3IEBAIHZvaWQgUHJvY2Vzc0NhbGxBZnRlckFGZXdNcyhpbnQ2NF90
IG1pbGxpc2Vjb25kcykgewogICAgICAgLldpbGxPbmNlKERvQWxsKFNldFRpbWVzdGFtcCgmc3Rh
cnRfdGltZSksIFJldHVybihtaWxsaXNlY29uZHMpKSkKICAgICAgIC5XaWxsUmVwZWF0ZWRseShS
ZXR1cm4obWlsbGlzZWNvbmRzKSk7CiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2VzcygpKQot
ICAgICAgLldpbGxPbmNlKAotICAgICAgICAgIERvQWxsKFNldFRpbWVzdGFtcCgmY2FsbGVkX3Rp
bWUpLCBTZXRFdmVudChldmVudC5nZXQoKSksIFJldHVybigpKSkKKyAgICAgIC5XaWxsT25jZShE
b0FsbChTZXRUaW1lc3RhbXAoJmNhbGxlZF90aW1lKSwgU2V0RXZlbnQoJmV2ZW50KSwgUmV0dXJu
KCkpKQogICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigpKTsKIAogICBFWFBFQ1RfQ0FMTCht
b2R1bGUsIFByb2Nlc3NUaHJlYWRBdHRhY2hlZCgmdGhyZWFkKSkuVGltZXMoMSk7CkBAIC0xODUs
NyArMTgzLDcgQEAgdm9pZCBQcm9jZXNzQ2FsbEFmdGVyQUZld01zKGludDY0X3QgbWlsbGlzZWNv
bmRzKSB7CiAKICAgLy8gQWRkIGEgYnVmZmVyIG9mIDUwbXMgZHVlIHRvIHNsb3duZXNzIG9mIHNv
bWUgdHJ5Ym90cwogICAvLyAoZS5nLiB3aW5fZHJtZW1vcnlfbGlnaHQpCi0gIEVYUEVDVF9FUShr
RXZlbnRTaWduYWxlZCwgZXZlbnQtPldhaXQobWlsbGlzZWNvbmRzICsgNTApKTsKKyAgRVhQRUNU
X1RSVUUoZXZlbnQuV2FpdChtaWxsaXNlY29uZHMgKyA1MCkpOwogCiAgIEVYUEVDVF9DQUxMKG1v
ZHVsZSwgUHJvY2Vzc1RocmVhZEF0dGFjaGVkKG51bGxwdHIpKS5UaW1lcygxKTsKICAgdGhyZWFk
LlN0b3AoKTsKQEAgLTIzMCw3ICsyMjgsNyBAQCBURVNUKFByb2Nlc3NUaHJlYWRJbXBsLCBESVNB
QkxFRF9Qcm9jZXNzNTBUaW1lcykgewogICBQcm9jZXNzVGhyZWFkSW1wbCB0aHJlYWQoIlByb2Nl
c3NUaHJlYWQiKTsKICAgdGhyZWFkLlN0YXJ0KCk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50
V3JhcHBlcj4gZXZlbnQoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSk7CisgIHJ0Yzo6RXZlbnQgZXZl
bnQ7CiAKICAgTW9ja01vZHVsZSBtb2R1bGU7CiAgIGludCBjYWxsYmFja19jb3VudCA9IDA7CkBA
IC0yNDIsNyArMjQwLDcgQEAgVEVTVChQcm9jZXNzVGhyZWFkSW1wbCwgRElTQUJMRURfUHJvY2Vz
czUwVGltZXMpIHsKICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQo
JnRocmVhZCkpLlRpbWVzKDEpOwogICB0aHJlYWQuUmVnaXN0ZXJNb2R1bGUoJm1vZHVsZSwgUlRD
X0ZST01fSEVSRSk7CiAKLSAgRVhQRUNUX0VRKGtFdmVudFRpbWVvdXQsIGV2ZW50LT5XYWl0KDEw
MDApKTsKKyAgRVhQRUNUX1RSVUUoZXZlbnQuV2FpdCgxMDAwKSk7CiAKICAgRVhQRUNUX0NBTEwo
bW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQobnVsbHB0cikpLlRpbWVzKDEpOwogICB0aHJl
YWQuU3RvcCgpOwpAQCAtMjYxLDggKzI1OSw4IEBAIFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIFdh
a2VVcCkgewogICBQcm9jZXNzVGhyZWFkSW1wbCB0aHJlYWQoIlByb2Nlc3NUaHJlYWQiKTsKICAg
dGhyZWFkLlN0YXJ0KCk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gc3RhcnRl
ZChFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKTsKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBl
cj4gY2FsbGVkKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpOworICBydGM6OkV2ZW50IHN0YXJ0ZWQ7
CisgIHJ0Yzo6RXZlbnQgY2FsbGVkOwogCiAgIE1vY2tNb2R1bGUgbW9kdWxlOwogICBpbnQ2NF90
IHN0YXJ0X3RpbWU7CkBAIC0yNzYsMjAgKzI3NCwxOSBAQCBURVNUKFByb2Nlc3NUaHJlYWRJbXBs
LCBXYWtlVXApIHsKICAgLy8gVGhlIHNlY29uZCB0aW1lIFRpbWVVbnRpbE5leHRQcm9jZXNzIGlz
IHRoZW4gY2FsbGVkLCBpcyBhZnRlciBQcm9jZXNzCiAgIC8vIGhhcyBiZWVuIGNhbGxlZCBhbmQg
d2UgZG9uJ3QgZXhwZWN0IGFueSBtb3JlIGNhbGxzLgogICBFWFBFQ1RfQ0FMTChtb2R1bGUsIFRp
bWVVbnRpbE5leHRQcm9jZXNzKCkpCi0gICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0VGltZXN0YW1w
KCZzdGFydF90aW1lKSwgU2V0RXZlbnQoc3RhcnRlZC5nZXQoKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgUmV0dXJuKDEwMDApKSkKKyAgICAgIC5XaWxsT25jZSgKKyAgICAgICAgICBEb0FsbChT
ZXRUaW1lc3RhbXAoJnN0YXJ0X3RpbWUpLCBTZXRFdmVudCgmc3RhcnRlZCksIFJldHVybigxMDAw
KSkpCiAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEwMDApKTsKICAgRVhQRUNUX0NBTEwobW9kdWxl
LCBQcm9jZXNzKCkpCi0gICAgICAuV2lsbE9uY2UoCi0gICAgICAgICAgRG9BbGwoU2V0VGltZXN0
YW1wKCZjYWxsZWRfdGltZSksIFNldEV2ZW50KGNhbGxlZC5nZXQoKSksIFJldHVybigpKSkKKyAg
ICAgIC5XaWxsT25jZShEb0FsbChTZXRUaW1lc3RhbXAoJmNhbGxlZF90aW1lKSwgU2V0RXZlbnQo
JmNhbGxlZCksIFJldHVybigpKSkKICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSk7CiAK
ICAgRVhQRUNUX0NBTEwobW9kdWxlLCBQcm9jZXNzVGhyZWFkQXR0YWNoZWQoJnRocmVhZCkpLlRp
bWVzKDEpOwogICB0aHJlYWQuUmVnaXN0ZXJNb2R1bGUoJm1vZHVsZSwgUlRDX0ZST01fSEVSRSk7
CiAKLSAgRVhQRUNUX0VRKGtFdmVudFNpZ25hbGVkLCBzdGFydGVkLT5XYWl0KGtFdmVudFdhaXRU
aW1lb3V0KSk7CisgIEVYUEVDVF9UUlVFKHN0YXJ0ZWQuV2FpdChrRXZlbnRXYWl0VGltZW91dCkp
OwogICB0aHJlYWQuV2FrZVVwKCZtb2R1bGUpOwotICBFWFBFQ1RfRVEoa0V2ZW50U2lnbmFsZWQs
IGNhbGxlZC0+V2FpdChrRXZlbnRXYWl0VGltZW91dCkpOworICBFWFBFQ1RfVFJVRShjYWxsZWQu
V2FpdChrRXZlbnRXYWl0VGltZW91dCkpOwogCiAgIEVYUEVDVF9DQUxMKG1vZHVsZSwgUHJvY2Vz
c1RocmVhZEF0dGFjaGVkKG51bGxwdHIpKS5UaW1lcygxKTsKICAgdGhyZWFkLlN0b3AoKTsKQEAg
LTMwNCwxMSArMzAxLDExIEBAIFRFU1QoUHJvY2Vzc1RocmVhZEltcGwsIFdha2VVcCkgewogLy8g
dGhyZWFkLgogVEVTVChQcm9jZXNzVGhyZWFkSW1wbCwgUG9zdFRhc2spIHsKICAgUHJvY2Vzc1Ro
cmVhZEltcGwgdGhyZWFkKCJQcm9jZXNzVGhyZWFkIik7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxFdmVu
dFdyYXBwZXI+IHRhc2tfcmFuKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpOwotICBzdGQ6OnVuaXF1
ZV9wdHI8UmFpc2VFdmVudFRhc2s+IHRhc2sobmV3IFJhaXNlRXZlbnRUYXNrKHRhc2tfcmFuLmdl
dCgpKSk7CisgIHJ0Yzo6RXZlbnQgdGFza19yYW47CisgIHN0ZDo6dW5pcXVlX3B0cjxSYWlzZUV2
ZW50VGFzaz4gdGFzayhuZXcgUmFpc2VFdmVudFRhc2soJnRhc2tfcmFuKSk7CiAgIHRocmVhZC5T
dGFydCgpOwogICB0aHJlYWQuUG9zdFRhc2soc3RkOjptb3ZlKHRhc2spKTsKLSAgRVhQRUNUX0VR
KGtFdmVudFNpZ25hbGVkLCB0YXNrX3Jhbi0+V2FpdChrRXZlbnRXYWl0VGltZW91dCkpOworICBF
WFBFQ1RfVFJVRSh0YXNrX3Jhbi5XYWl0KGtFdmVudFdhaXRUaW1lb3V0KSk7CiAgIHRocmVhZC5T
dG9wKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS9CVUlMRC5n
bgppbmRleCBlZjZmMzM1ZTQ5MzlkNTc2Y2U2MTgxZTg5MDk0YWViZmZjMTBjNGFiLi40NGRiMmVi
NDc3YWEyOGE1M2ZjNmIxMDkxYmFlZTBjZjc2NGJjNzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvQlVJ
TEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jYXB0dXJlL0JVSUxELmduCkBAIC0zOCw2ICszOCw3IEBAIHJ0Y19zdGF0aWNf
bGlicmFyeSgidmlkZW9fY2FwdHVyZV9tb2R1bGUiKSB7CiAgICAgIi4uLy4uL3J0Y19iYXNlOnN0
cmluZ3V0aWxzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2Uvc3luY2hyb25pemF0aW9uOnJ3X2xvY2tf
d3JhcHBlciIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2xpYnl1diIs
CiAgIF0KIH0KQEAgLTE5MCw2ICsxOTEsNyBAQCBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsK
ICAgICAgICAgIi4uLy4uL2NvbW1vbl92aWRlbzpjb21tb25fdmlkZW8iLAogICAgICAgICAiLi4v
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgICAiLi4vLi4vc3lzdGVtX3dy
YXBwZXJzOnN5c3RlbV93cmFwcGVycyIsCisgICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9y
dCIsCiAgICAgICAgICIuLi8uLi90ZXN0OnZpZGVvX3Rlc3RfY29tbW9uIiwKICAgICAgICAgIi4u
L3V0aWxpdHkiLAogICAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVy
ZS9kZXZpY2VfaW5mb19pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL2RldmljZV9pbmZvX2ltcGwuY2MKaW5kZXgg
MmYwYTM5ZjI5NjRmYjM3YzcwM2Y5ODY0ZjE0YWQ3N2EwZWIzNjFmYS4uY2RjYjVkZGM0YTgyNzQ0
Y2MyOThkZTUxMmQ4MjA0ZTI3YTgwMjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL2RldmljZV9pbmZv
X2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jYXB0dXJlL2RldmljZV9pbmZvX2ltcGwuY2MKQEAgLTExLDYgKzExLDcg
QEAKICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIAorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY2FwdHVyZS9k
ZXZpY2VfaW5mb19pbXBsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jYXB0dXJlL3ZpZGVv
X2NhcHR1cmVfY29uZmlnLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgpAQCAtNDIs
MTQgKzQzLDEyIEBAIGludDMyX3QgRGV2aWNlSW5mb0ltcGw6Ok51bWJlck9mQ2FwYWJpbGl0aWVz
KGNvbnN0IGNoYXIqIGRldmljZVVuaXF1ZUlkVVRGOCkgewogCiAgIF9hcGlMb2NrLkFjcXVpcmVM
b2NrU2hhcmVkKCk7CiAKLSAgaWYgKF9sYXN0VXNlZERldmljZU5hbWVMZW5ndGggPT0gc3RybGVu
KChjaGFyKilkZXZpY2VVbmlxdWVJZFVURjgpKSB7Ci0gICAgLy8gSXMgaXQgdGhlIHNhbWUgZGV2
aWNlIHRoYXQgaXMgYXNrZWQgZm9yIGFnYWluLgotICAgIGlmIChfc3RybmljbXAoKGNoYXIqKV9s
YXN0VXNlZERldmljZU5hbWUsIChjaGFyKilkZXZpY2VVbmlxdWVJZFVURjgsCi0gICAgICAgICAg
ICAgICAgICBfbGFzdFVzZWREZXZpY2VOYW1lTGVuZ3RoKSA9PSAwKSB7Ci0gICAgICAvLyB5ZXMK
LSAgICAgIF9hcGlMb2NrLlJlbGVhc2VMb2NrU2hhcmVkKCk7Ci0gICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oX2NhcHR1cmVDYXBhYmlsaXRpZXMuc2l6ZSgpKTsKLSAgICB9CisgIC8v
IElzIGl0IHRoZSBzYW1lIGRldmljZSB0aGF0IGlzIGFza2VkIGZvciBhZ2Fpbi4KKyAgaWYgKGFi
c2w6OkVxdWFsc0lnbm9yZUNhc2UoCisgICAgICAgICAgZGV2aWNlVW5pcXVlSWRVVEY4LAorICAg
ICAgICAgIGFic2w6OnN0cmluZ192aWV3KF9sYXN0VXNlZERldmljZU5hbWUsIF9sYXN0VXNlZERl
dmljZU5hbWVMZW5ndGgpKSkgeworICAgIF9hcGlMb2NrLlJlbGVhc2VMb2NrU2hhcmVkKCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KF9jYXB0dXJlQ2FwYWJpbGl0aWVzLnNpemUo
KSk7CiAgIH0KICAgLy8gTmVlZCB0byBnZXQgZXhjbHVzaXZlIHJpZ2h0cyB0byBjcmVhdGUgdGhl
IG5ldyBjYXBhYmlsaXR5IG1hcC4KICAgX2FwaUxvY2suUmVsZWFzZUxvY2tTaGFyZWQoKTsKQEAg
LTY2LDkgKzY1LDkgQEAgaW50MzJfdCBEZXZpY2VJbmZvSW1wbDo6R2V0Q2FwYWJpbGl0eShjb25z
dCBjaGFyKiBkZXZpY2VVbmlxdWVJZFVURjgsCiAKICAgUmVhZExvY2tTY29wZWQgY3MoX2FwaUxv
Y2spOwogCi0gIGlmICgoX2xhc3RVc2VkRGV2aWNlTmFtZUxlbmd0aCAhPSBzdHJsZW4oKGNoYXIq
KWRldmljZVVuaXF1ZUlkVVRGOCkpIHx8Ci0gICAgICAoX3N0cm5pY21wKChjaGFyKilfbGFzdFVz
ZWREZXZpY2VOYW1lLCAoY2hhciopZGV2aWNlVW5pcXVlSWRVVEY4LAotICAgICAgICAgICAgICAg
ICBfbGFzdFVzZWREZXZpY2VOYW1lTGVuZ3RoKSAhPSAwKSkgeworICBpZiAoIWFic2w6OkVxdWFs
c0lnbm9yZUNhc2UoCisgICAgICAgICAgZGV2aWNlVW5pcXVlSWRVVEY4LAorICAgICAgICAgIGFi
c2w6OnN0cmluZ192aWV3KF9sYXN0VXNlZERldmljZU5hbWUsIF9sYXN0VXNlZERldmljZU5hbWVM
ZW5ndGgpKSkgewogICAgIF9hcGlMb2NrLlJlbGVhc2VMb2NrU2hhcmVkKCk7CiAgICAgX2FwaUxv
Y2suQWNxdWlyZUxvY2tFeGNsdXNpdmUoKTsKICAgICBpZiAoLTEgPT0gQ3JlYXRlQ2FwYWJpbGl0
eU1hcChkZXZpY2VVbmlxdWVJZFVURjgpKSB7CkBAIC0xMDAsOSArOTksOSBAQCBpbnQzMl90IERl
dmljZUluZm9JbXBsOjpHZXRCZXN0TWF0Y2hlZENhcGFiaWxpdHkoCiAgICAgcmV0dXJuIC0xOwog
CiAgIFJlYWRMb2NrU2NvcGVkIGNzKF9hcGlMb2NrKTsKLSAgaWYgKChfbGFzdFVzZWREZXZpY2VO
YW1lTGVuZ3RoICE9IHN0cmxlbigoY2hhciopZGV2aWNlVW5pcXVlSWRVVEY4KSkgfHwKLSAgICAg
IChfc3RybmljbXAoKGNoYXIqKV9sYXN0VXNlZERldmljZU5hbWUsIChjaGFyKilkZXZpY2VVbmlx
dWVJZFVURjgsCi0gICAgICAgICAgICAgICAgIF9sYXN0VXNlZERldmljZU5hbWVMZW5ndGgpICE9
IDApKSB7CisgIGlmICghYWJzbDo6RXF1YWxzSWdub3JlQ2FzZSgKKyAgICAgICAgICBkZXZpY2VV
bmlxdWVJZFVURjgsCisgICAgICAgICAgYWJzbDo6c3RyaW5nX3ZpZXcoX2xhc3RVc2VkRGV2aWNl
TmFtZSwgX2xhc3RVc2VkRGV2aWNlTmFtZUxlbmd0aCkpKSB7CiAgICAgX2FwaUxvY2suUmVsZWFz
ZUxvY2tTaGFyZWQoKTsKICAgICBfYXBpTG9jay5BY3F1aXJlTG9ja0V4Y2x1c2l2ZSgpOwogICAg
IGlmICgtMSA9PSBDcmVhdGVDYXBhYmlsaXR5TWFwKGRldmljZVVuaXF1ZUlkVVRGOCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY2FwdHVyZS92aWRlb19jYXB0dXJlX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvdmlkZW9fY2Fw
dHVyZV9pbXBsLmNjCmluZGV4IDUzYWZlZDAwYjY0NGU4OTVmZDJkYTVlMDgzYjMyODc3MDcxMzA0
NGEuLjIzNWZkMzQzOGEyMTY0NjllNzgyOTdhY2FkZTU2ODEzMjU3NGFhYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y2FwdHVyZS92aWRlb19jYXB0dXJlX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL3ZpZGVvX2NhcHR1cmVf
aW1wbC5jYwpAQCAtMTQzLDcgKzE0Myw3IEBAIGludDMyX3QgVmlkZW9DYXB0dXJlSW1wbDo6SW5j
b21pbmdGcmFtZSh1aW50OF90KiB2aWRlb0ZyYW1lLAogICBpbnQgc3RyaWRlX3kgPSB3aWR0aDsK
ICAgaW50IHN0cmlkZV91diA9ICh3aWR0aCArIDEpIC8gMjsKICAgaW50IHRhcmdldF93aWR0aCA9
IHdpZHRoOwotICBpbnQgdGFyZ2V0X2hlaWdodCA9IGhlaWdodDsKKyAgaW50IHRhcmdldF9oZWln
aHQgPSBhYnMoaGVpZ2h0KTsKIAogICAvLyBTZXRBcHBseVJvdGF0aW9uIGRvZXNuJ3QgdGFrZSBh
bnkgbG9jay4gTWFrZSBhIGxvY2FsIGNvcHkgaGVyZS4KICAgYm9vbCBhcHBseV9yb3RhdGlvbiA9
IGFwcGx5X3JvdGF0aW9uXzsKQEAgLTE2Myw3ICsxNjMsNyBAQCBpbnQzMl90IFZpZGVvQ2FwdHVy
ZUltcGw6OkluY29taW5nRnJhbWUodWludDhfdCogdmlkZW9GcmFtZSwKIAogICAvLyBUT0RPKG5p
c3NlKTogVXNlIGEgcG9vbD8KICAgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXI+IGJ1ZmZl
ciA9IEk0MjBCdWZmZXI6OkNyZWF0ZSgKLSAgICAgIHRhcmdldF93aWR0aCwgYWJzKHRhcmdldF9o
ZWlnaHQpLCBzdHJpZGVfeSwgc3RyaWRlX3V2LCBzdHJpZGVfdXYpOworICAgICAgdGFyZ2V0X3dp
ZHRoLCB0YXJnZXRfaGVpZ2h0LCBzdHJpZGVfeSwgc3RyaWRlX3V2LCBzdHJpZGVfdXYpOwogCiAg
IGxpYnl1djo6Um90YXRpb25Nb2RlIHJvdGF0aW9uX21vZGUgPSBsaWJ5dXY6OmtSb3RhdGUwOwog
ICBpZiAoYXBwbHlfcm90YXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS93aW5kb3dzL3ZpZGVv
X2NhcHR1cmVfZHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUvd2luZG93cy92aWRlb19jYXB0dXJlX2RzLmNjCmluZGV4
IDc3OGZkODc2MWFjMTliMzk2MWFjMjU3NDdhNWM3NDNhYzU4MTE1N2MuLmVhMzc3YTNiMDVjYjZk
NWQ1YTQ1NGZiZWY2MzA3ZTViY2IzMWI3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY2FwdHVyZS93aW5kb3dzL3Zp
ZGVvX2NhcHR1cmVfZHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jYXB0dXJlL3dpbmRvd3MvdmlkZW9fY2FwdHVyZV9kcy5j
YwpAQCAtOTUsNiArOTUsMTAgQEAgaW50MzJfdCBWaWRlb0NhcHR1cmVEUzo6SW5pdChjb25zdCBj
aGFyKiBkZXZpY2VVbmlxdWVJZFVURjgpIHsKICAgfQogCiAgIF9vdXRwdXRDYXB0dXJlUGluID0g
R2V0T3V0cHV0UGluKF9jYXB0dXJlRmlsdGVyLCBQSU5fQ0FURUdPUllfQ0FQVFVSRSk7CisgIGlm
ICghX291dHB1dENhcHR1cmVQaW4pIHsKKyAgICBSVENfTE9HKExTX0lORk8pIDw8ICJGYWlsZWQg
dG8gZ2V0IG91dHB1dCBjYXB0dXJlIHBpbiI7CisgICAgcmV0dXJuIC0xOworICB9CiAKICAgLy8g
Q3JlYXRlIHRoZSBzaW5rIGZpbHRlIHVzZWQgZm9yIHJlY2VpdmluZyBDYXB0dXJlZCBmcmFtZXMu
CiAgIF9zaW5rRmlsdGVyID0gbmV3IENhcHR1cmVTaW5rRmlsdGVyKFNJTktfRklMVEVSX05BTUUs
IE5VTEwsICZociwgKnRoaXMpOwpAQCAtMTA5LDcgKzExMywxMiBAQCBpbnQzMl90IFZpZGVvQ2Fw
dHVyZURTOjpJbml0KGNvbnN0IGNoYXIqIGRldmljZVVuaXF1ZUlkVVRGOCkgewogICAgIFJUQ19M
T0coTFNfSU5GTykgPDwgIkZhaWxlZCB0byBhZGQgdGhlIHNlbmQgZmlsdGVyIHRvIHRoZSBncmFw
aC4iOwogICAgIHJldHVybiAtMTsKICAgfQorCiAgIF9pbnB1dFNlbmRQaW4gPSBHZXRJbnB1dFBp
bihfc2lua0ZpbHRlcik7CisgIGlmICghX2lucHV0U2VuZFBpbikgeworICAgIFJUQ19MT0coTFNf
SU5GTykgPDwgIkZhaWxlZCB0byBnZXQgaW5wdXQgc2VuZCBwaW4iOworICAgIHJldHVybiAtMTsK
KyAgfQogCiAgIC8vIFRlbXBvcmFyeSBjb25uZWN0IGhlcmUuCiAgIC8vIFRoaXMgaXMgZG9uZSBz
byB0aGF0IG5vIG9uZSBlbHNlIGNhbiB1c2UgdGhlIGNhcHR1cmUgZGV2aWNlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9CVUlMRC5nbgppbmRleCBlNzU5YTRhN2U4ZGQ1ZTYz
NWRkN2YyY2VmNDBlNTU4NDhkNmJhY2I4Li5hYzM1OWJjNjRmODI3NzEyZWYyNTQwNmQ3ZDJjYjA2
ZjVhOWRhNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9CVUlMRC5n
bgpAQCAtMTcsOCArMTcsOCBAQCBydGNfc3RhdGljX2xpYnJhcnkoImVuY29kZWRfZnJhbWUiKSB7
CiAgIGRlcHMgPSBbCiAgICAgIjp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAogICAgICIuLi8uLi86
d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaS92aWRlbzplbmNvZGVkX2ltYWdlIiwKICAg
ICAiLi4vLi4vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lX2k0MjAiLAotICAgICIuLi8uLi9jb21tb25f
dmlkZW86Y29tbW9uX3ZpZGVvIiwKICAgICAiLi4vLi4vbW9kdWxlczptb2R1bGVfYXBpIiwKICAg
ICAiLi4vLi4vbW9kdWxlczptb2R1bGVfYXBpX3B1YmxpYyIsCiAgICAgIi4uLy4uL21vZHVsZXMv
dmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5IiwKQEAgLTU3LDYgKzU3LDcgQEAgcnRj
X3N0YXRpY19saWJyYXJ5KCJuYWNrX21vZHVsZSIpIHsKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRj
X2Jhc2VfYXBwcm92ZWQiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfbnVtZXJpY3MiLAogICAg
ICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnMiLAorICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6Zmll
bGRfdHJpYWwiLAogICAgICIuLi91dGlsaXR5OnV0aWxpdHkiLAogICBdCiB9CkBAIC0xNTgsNiAr
MTU5LDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlb19jb2RpbmciKSB7CiAgICAgIi4uOm1v
ZHVsZV9hcGlfcHVibGljIiwKICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uLy4u
L2FwaTpmZWNfY29udHJvbGxlcl9hcGkiLAorICAgICIuLi8uLi9hcGkvdmlkZW86YnVpbHRpbl92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAiLi4vLi4vYXBpL3ZpZGVvOmVu
Y29kZWRfZnJhbWUiLAogICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0
b3IiLAogICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLApAQCAtMTY1LDEyICsxNjcs
MTQgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlb19jb2RpbmciKSB7CiAgICAgIi4uLy4uL2Fw
aS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgIi4uLy4uL2NvbW1vbl92aWRl
byIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmRl
cHJlY2F0aW9uIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICIuLi8uLi9y
dGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19udW1l
cmljcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKICAgICAiLi4vLi4v
cnRjX2Jhc2U6c2VxdWVuY2VkX3Rhc2tfY2hlY2tlciIsCiAgICAgIi4uLy4uL3J0Y19iYXNlL2V4
cGVyaW1lbnRzOmFscl9leHBlcmltZW50IiwKKyAgICAiLi4vLi4vcnRjX2Jhc2UvZXhwZXJpbWVu
dHM6aml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQiLAogICAgICIuLi8uLi9ydGNfYmFzZS9l
eHBlcmltZW50czpydHRfbXVsdF9leHBlcmltZW50IiwKICAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lz
dGVtOmZhbGx0aHJvdWdoIiwKICAgICAiLi4vLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0
IiwKQEAgLTIzOCw4ICsyNDIsNiBAQCBydGNfc291cmNlX3NldCgidmlkZW9fY29kaW5nX3V0aWxp
dHkiKSB7CiAgICAgInV0aWxpdHkvZnJhbWVyYXRlX2NvbnRyb2xsZXIuaCIsCiAgICAgInV0aWxp
dHkvaXZmX2ZpbGVfd3JpdGVyLmNjIiwKICAgICAidXRpbGl0eS9pdmZfZmlsZV93cml0ZXIuaCIs
Ci0gICAgInV0aWxpdHkvbW92aW5nX2F2ZXJhZ2UuY2MiLAotICAgICJ1dGlsaXR5L21vdmluZ19h
dmVyYWdlLmgiLAogICAgICJ1dGlsaXR5L3F1YWxpdHlfc2NhbGVyLmNjIiwKICAgICAidXRpbGl0
eS9xdWFsaXR5X3NjYWxlci5oIiwKICAgICAidXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0
b3IuY2MiLApAQCAtMjYxLDYgKzI2Myw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ2aWRlb19jb2Rpbmdf
dXRpbGl0eSIpIHsKICAgICAiOnZpZGVvX2NvZGVjX2ludGVyZmFjZSIsCiAgICAgIi4uOm1vZHVs
ZV9hcGkiLAogICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4vYXBpL3ZpZGVv
OmVuY29kZWRfaW1hZ2UiLAogICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxv
Y2F0b3IiLAogICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAog
ICAgICIuLi8uLi9jb21tb25fdmlkZW8iLApAQCAtMzAyLDggKzMwNSwxMCBAQCBydGNfc3RhdGlj
X2xpYnJhcnkoIndlYnJ0Y19oMjY0IikgewogICAgICIuLi8uLi9tZWRpYTpydGNfbWVkaWFfYmFz
ZSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0
Y19iYXNlIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2Uvc3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIu
Li8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWls
LWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0
cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2xpYnl1diIsCiAgIF0KIApAQCAtMzc2LDYgKzM4
MSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX211bHRpcGxleCIpIHsKICAgICAiOnZp
ZGVvX2NvZGluZ191dGlsaXR5IiwKICAgICAiLi46bW9kdWxlX2FwaSIsCiAgICAgIi4uLy4uOndl
YnJ0Y19jb21tb24iLAorICAgICIuLi8uLi9hcGkvdmlkZW86ZW5jb2RlZF9pbWFnZSIsCiAgICAg
Ii4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRl
b19mcmFtZV9pNDIwIiwKICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3Nf
YXBpIiwKQEAgLTM5MSwyMiArMzk3LDEzIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX3Zw
OCIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgcG9pc29ub3VzID0gWyAic29mdHdhcmVf
dmlkZW9fY29kZWNzIiBdCiAgIHNvdXJjZXMgPSBbCi0gICAgImNvZGVjcy92cDgvZGVmYXVsdF90
ZW1wb3JhbF9sYXllcnMuY2MiLAotICAgICJjb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5
ZXJzLmgiLAotICAgICJjb2RlY3MvdnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIu
aCIsCiAgICAgImNvZGVjcy92cDgvaW5jbHVkZS92cDguaCIsCi0gICAgImNvZGVjcy92cDgvaW5j
bHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiLAogICAgICJjb2RlY3MvdnA4L2xpYnZweF9pbnRl
cmZhY2UuY2MiLAogICAgICJjb2RlY3MvdnA4L2xpYnZweF9pbnRlcmZhY2UuaCIsCiAgICAgImNv
ZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmNjIiwKICAgICAiY29kZWNzL3ZwOC9saWJ2cHhf
dnA4X2RlY29kZXIuaCIsCiAgICAgImNvZGVjcy92cDgvbGlidnB4X3ZwOF9lbmNvZGVyLmNjIiwK
ICAgICAiY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2VuY29kZXIuaCIsCi0gICAgImNvZGVjcy92cDgv
c2NyZWVuc2hhcmVfbGF5ZXJzLmNjIiwKLSAgICAiY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXll
cnMuaCIsCi0gICAgImNvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJzLmgiLAotICAgICJjb2RlY3Mv
dnA4L3RlbXBvcmFsX2xheWVyc19jaGVja2VyLmNjIiwKLSAgICAiY29kZWNzL3ZwOC92cDhfdGVt
cG9yYWxfbGF5ZXJzLmNjIiwKICAgXQogCiAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBp
c19jbGFuZykgewpAQCAtNDE4LDE0ICs0MTUsMTggQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJy
dGNfdnA4IikgewogICAgICI6Y29kZWNfZ2xvYmFsc19oZWFkZXJzIiwKICAgICAiOnZpZGVvX2Nv
ZGVjX2ludGVyZmFjZSIsCiAgICAgIjp2aWRlb19jb2RpbmdfdXRpbGl0eSIsCisgICAgIjp3ZWJy
dGNfdnA4X3RlbXBvcmFsX2xheWVycyIsCiAgICAgIi4uOm1vZHVsZV9hcGkiLAogICAgICIuLi8u
Ljp3ZWJydGNfY29tbW9uIiwKKyAgICAiLi4vLi4vYXBpL3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAog
ICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAorICAgICIuLi8uLi9hcGkvdmlkZW9f
Y29kZWNzOmNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzIiwKICAgICAiLi4vLi4vYXBpL3ZpZGVv
X2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAiLi4vLi4vY29tbW9uX3ZpZGVvIiwKICAg
ICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
YXBwcm92ZWQiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfbnVtZXJpY3MiLAorICAgICIuLi8u
Li9ydGNfYmFzZS9leHBlcmltZW50czpjcHVfc3BlZWRfZXhwZXJpbWVudCIsCiAgICAgIi4uLy4u
L3N5c3RlbV93cmFwcGVycyIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlh
bCIsCiAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKQEAgLTQzOCw2ICs0Mzks
NDEgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNfdnA4IikgewogICB9CiB9CiAKK3J0Y19z
dGF0aWNfbGlicmFyeSgid2VicnRjX3ZwOF90ZW1wb3JhbF9sYXllcnMiKSB7CisgIHZpc2liaWxp
dHkgPSBbICIqIiBdCisgIHNvdXJjZXMgPSBbCisgICAgImNvZGVjcy92cDgvZGVmYXVsdF90ZW1w
b3JhbF9sYXllcnMuY2MiLAorICAgICJjb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJz
LmgiLAorICAgICJjb2RlY3MvdnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuaCIs
CisgICAgImNvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmNjIiwKKyAgICAiY29kZWNzL3Zw
OC9zY3JlZW5zaGFyZV9sYXllcnMuaCIsCisgICAgImNvZGVjcy92cDgvdGVtcG9yYWxfbGF5ZXJz
LmgiLAorICAgICJjb2RlY3MvdnA4L3RlbXBvcmFsX2xheWVyc19jaGVja2VyLmNjIiwKKyAgXQor
CisgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiBpc19jbGFuZykgeworICAgICMgU3VwcHJl
c3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2luIChidWdzLndlYnJ0Yy5v
cmcvMTYzKS4KKyAgICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xh
bmc6ZmluZF9iYWRfY29uc3RydWN0cyIgXQorICB9CisKKyAgZGVwcyA9IFsKKyAgICAiOmNvZGVj
X2dsb2JhbHNfaGVhZGVycyIsCisgICAgIjp2aWRlb19jb2RlY19pbnRlcmZhY2UiLAorICAgICI6
dmlkZW9fY29kaW5nX3V0aWxpdHkiLAorICAgICIuLjptb2R1bGVfYXBpIiwKKyAgICAiLi4vLi46
d2VicnRjX2NvbW1vbiIsCisgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNz
X2FwaSIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uLy4uL3J0Y19iYXNl
OnJ0Y19iYXNlX2FwcHJvdmVkIiwKKyAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX251bWVyaWNzIiwK
KyAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJz
OmZpZWxkX3RyaWFsIiwKKyAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOm1ldHJpY3MiLAorICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAorICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KK30KKwogIyBUaGlzIHRh
cmdldCBpbmNsdWRlcyBWUDkgZmlsZXMgdGhhdCBtYXkgYmUgdXNlZCBmb3IgYW55IFZQOSBjb2Rl
YywgaW50ZXJuYWwgU1cgb3IgZXh0ZXJuYWwgSFcuCiBydGNfc3RhdGljX2xpYnJhcnkoIndlYnJ0
Y192cDlfaGVscGVycyIpIHsKICAgc291cmNlcyA9IFsKQEAgLTQ2NSwxOSArNTAxLDE0IEBAIHJ0
Y19zdGF0aWNfbGlicmFyeSgid2VicnRjX3ZwOV9oZWxwZXJzIikgewogcnRjX3N0YXRpY19saWJy
YXJ5KCJ3ZWJydGNfdnA5IikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIgXQogICBwb2lzb25vdXMg
PSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3MiIF0KLSAgaWYgKHJ0Y19saWJ2cHhfYnVpbGRfdnA5
KSB7Ci0gICAgc291cmNlcyA9IFsKLSAgICAgICJjb2RlY3MvdnA5L2luY2x1ZGUvdnA5LmgiLAot
ICAgICAgImNvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmNjIiwKLSAgICAgICJjb2Rl
Y3MvdnA5L3ZwOV9mcmFtZV9idWZmZXJfcG9vbC5oIiwKLSAgICAgICJjb2RlY3MvdnA5L3ZwOV9p
bXBsLmNjIiwKLSAgICAgICJjb2RlY3MvdnA5L3ZwOV9pbXBsLmgiLAotICAgIF0KLSAgfSBlbHNl
IHsKLSAgICBzb3VyY2VzID0gWwotICAgICAgImNvZGVjcy92cDkvdnA5X25vb3AuY2MiLAotICAg
IF0KLSAgfQorICBzb3VyY2VzID0gWworICAgICJjb2RlY3MvdnA5L2luY2x1ZGUvdnA5LmgiLAor
ICAgICJjb2RlY3MvdnA5L3ZwOS5jYyIsCisgICAgImNvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZl
cl9wb29sLmNjIiwKKyAgICAiY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVmZmVyX3Bvb2wuaCIsCisg
ICAgImNvZGVjcy92cDkvdnA5X2ltcGwuY2MiLAorICAgICJjb2RlY3MvdnA5L3ZwOV9pbXBsLmgi
LAorICBdCiAKICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVtICYmIGlzX2NsYW5nKSB7CiAgICAg
IyBTdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBDaHJvbWl1bSBDbGFuZyBwbHVnaW4gKGJ1Z3Mu
d2VicnRjLm9yZy8xNjMpLgpAQCAtNTc0LDcgKzYwNSwxMCBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICAgICI6dmlkZW9fY29kaW5nIiwKICAgICAgICI6dmlkZW9fY29kaW5nX3V0aWxp
dHkiLAogICAgICAgIi4uLy4uLzp3ZWJydGNfY29tbW9uIiwKKyAgICAgICIuLi8uLi9hcGk6bW9j
a192aWRlb19kZWNvZGVyIiwKKyAgICAgICIuLi8uLi9hcGk6bW9ja192aWRlb19lbmNvZGVyIiwK
ICAgICAgICIuLi8uLi9hcGk6c2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9hcGkiLAorICAgICAgIi4u
Ly4uL2FwaS92aWRlbzplbmNvZGVkX2ltYWdlIiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW86dmlk
ZW9fZnJhbWUiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKICAg
ICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLApAQCAtNjA2LDYg
KzY0MCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjp3ZWJydGNfdnA5X2hl
bHBlcnMiLAogICAgICAgIi4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICAgIi4uLy4uL2FwaTp2
aWRlb2NvZGVjX3Rlc3RfZml4dHVyZV9hcGkiLAorICAgICAgIi4uLy4uL2FwaS92aWRlbzpidWls
dGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICAgIi4uLy4uL2FwaS92
aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRvciIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVvOnZp
ZGVvX2ZyYW1lIiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCkBA
IC02NzQsNiArNzA5LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiOndlYnJ0
Y192cDlfaGVscGVycyIsCiAgICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAiLi4v
Li4vYXBpOnZpZGVvY29kZWNfdGVzdF9maXh0dXJlX2FwaSIsCisgICAgICAiLi4vLi4vYXBpL3Rl
c3QvdmlkZW86ZnVuY3Rpb25fdmlkZW9fZmFjdG9yeSIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVv
X2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAgICIuLi8uLi9jYWxsOnZpZGVvX3N0cmVh
bV9hcGkiLAogICAgICAgIi4uLy4uL2NvbW1vbl92aWRlbyIsCkBAIC03MTksNiArNzU1LDcgQEAg
aWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgfQogCiAgICAgZGVwcyA9IFsKKyAgICAgICI6
bW9ja19oZWFkZXJzIiwKICAgICAgICI6dmlkZW9fY29kZWNzX3Rlc3RfZnJhbWV3b3JrIiwKICAg
ICAgICI6dmlkZW9fY29kaW5nX3V0aWxpdHkiLAogICAgICAgIjp2aWRlb2NvZGVjX3Rlc3RfaW1w
bCIsCkBAIC03MzAsNyArNzY3LDEwIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAg
Ii4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICAgIi4uLy4uL2FwaTpjcmVhdGVfdmlkZW9jb2Rl
Y190ZXN0X2ZpeHR1cmVfYXBpIiwKICAgICAgICIuLi8uLi9hcGk6bW9ja192aWRlb19jb2RlY19m
YWN0b3J5IiwKKyAgICAgICIuLi8uLi9hcGk6bW9ja192aWRlb19kZWNvZGVyIiwKKyAgICAgICIu
Li8uLi9hcGk6bW9ja192aWRlb19lbmNvZGVyIiwKICAgICAgICIuLi8uLi9hcGk6dmlkZW9jb2Rl
Y190ZXN0X2ZpeHR1cmVfYXBpIiwKKyAgICAgICIuLi8uLi9hcGkvdGVzdC92aWRlbzpmdW5jdGlv
bl92aWRlb19mYWN0b3J5IiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAog
ICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKICAgICAgICIuLi8uLi9h
cGkvdmlkZW9fY29kZWNzOnJ0Y19zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVycyIsCkBAIC03Mzks
MTEgKzc3OSwxMSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi8uLi9tZWRp
YTpydGNfaDI2NF9wcm9maWxlX2lkIiwKICAgICAgICIuLi8uLi9tZWRpYTpydGNfaW50ZXJuYWxf
dmlkZW9fY29kZWNzIiwKICAgICAgICIuLi8uLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCisgICAg
ICAiLi4vLi4vbWVkaWE6cnRjX3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIiLAogICAgICAgIi4u
Ly4uL21lZGlhOnJ0Y192cDlfcHJvZmlsZSIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jh
c2UiLAogICAgICAgIi4uLy4uL3Rlc3Q6ZmllbGRfdHJpYWwiLAogICAgICAgIi4uLy4uL3Rlc3Q6
ZmlsZXV0aWxzIiwKLSAgICAgICIuLi8uLi90ZXN0OnRlc3RfY29tbW9uIiwKICAgICAgICIuLi8u
Li90ZXN0OnRlc3Rfc3VwcG9ydCIsCiAgICAgICAiLi4vLi4vdGVzdDp2aWRlb190ZXN0X2NvbW1v
biIsCiAgICAgICAiLi4vcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKQEAgLTc3NCw2ICs4MTQs
MTAgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAjIFN1cHByZXNzIHdhcm5pbmdz
IGZyb20gdGhlIENocm9taXVtIENsYW5nIHBsdWdpbiAoYnVncy53ZWJydGMub3JnLzE2MykuCiAg
ICAgICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvY2xhbmc6ZmluZF9i
YWRfY29uc3RydWN0cyIgXQogICAgIH0KKworICAgIGlmIChydGNfYnVpbGRfbGlidnB4KSB7Cisg
ICAgICBkZXBzICs9IFsgcnRjX2xpYnZweF9kaXIgXQorICAgIH0KICAgfQogCiAgIHJ0Y19zb3Vy
Y2Vfc2V0KCJ2aWRlb19jb2RpbmdfdW5pdHRlc3RzIikgewpAQCAtODA0LDEzICs4NDgsMTEgQEAg
aWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAic2Vzc2lvbl9pbmZvX3VuaXR0ZXN0LmNj
IiwKICAgICAgICJ0ZXN0L3N0cmVhbV9nZW5lcmF0b3IuY2MiLAogICAgICAgInRlc3Qvc3RyZWFt
X2dlbmVyYXRvci5oIiwKLSAgICAgICJ0ZXN0L3Rlc3RfdXRpbC5oIiwKICAgICAgICJ0aW1pbmdf
dW5pdHRlc3QuY2MiLAogICAgICAgInV0aWxpdHkvZGVmYXVsdF92aWRlb19iaXRyYXRlX2FsbG9j
YXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAidXRpbGl0eS9mcmFtZV9kcm9wcGVyX3VuaXR0ZXN0
LmNjIiwKICAgICAgICJ1dGlsaXR5L2ZyYW1lcmF0ZV9jb250cm9sbGVyX3VuaXR0ZXN0LmNjIiwK
ICAgICAgICJ1dGlsaXR5L2l2Zl9maWxlX3dyaXRlcl91bml0dGVzdC5jYyIsCi0gICAgICAidXRp
bGl0eS9tb3ZpbmdfYXZlcmFnZV91bml0dGVzdC5jYyIsCiAgICAgICAidXRpbGl0eS9xdWFsaXR5
X3NjYWxlcl91bml0dGVzdC5jYyIsCiAgICAgICAidXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxv
Y2F0b3JfdW5pdHRlc3QuY2MiLAogICAgICAgInZpZGVvX2NvZGVjX2luaXRpYWxpemVyX3VuaXR0
ZXN0LmNjIiwKQEAgLTgzOSwxNiArODgxLDIzIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewog
ICAgICAgIjp2aWRlb2NvZGVjX3Rlc3RfaW1wbCIsCiAgICAgICAiOndlYnJ0Y19oMjY0IiwKICAg
ICAgICI6d2VicnRjX3ZwOCIsCisgICAgICAiOndlYnJ0Y192cDhfdGVtcG9yYWxfbGF5ZXJzIiwK
ICAgICAgICI6d2VicnRjX3ZwOSIsCiAgICAgICAiOndlYnJ0Y192cDlfaGVscGVycyIsCiAgICAg
ICAiLi46bW9kdWxlX2FwaSIsCiAgICAgICAiLi4vLi46d2VicnRjX2NvbW1vbiIsCiAgICAgICAi
Li4vLi4vYXBpOmNyZWF0ZV9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2FwaSIsCisgICAgICAiLi4v
Li4vYXBpOm1vY2tfdmlkZW9fZGVjb2RlciIsCisgICAgICAiLi4vLi4vYXBpOm1vY2tfdmlkZW9f
ZW5jb2RlciIsCiAgICAgICAiLi4vLi4vYXBpOnNpbXVsY2FzdF90ZXN0X2ZpeHR1cmVfYXBpIiwK
ICAgICAgICIuLi8uLi9hcGk6dmlkZW9jb2RlY190ZXN0X2ZpeHR1cmVfYXBpIiwKKyAgICAgICIu
Li8uLi9hcGkvdGVzdC92aWRlbzpmdW5jdGlvbl92aWRlb19mYWN0b3J5IiwKKyAgICAgICIuLi8u
Li9hcGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAg
ICAgICIuLi8uLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IiLAorICAgICAgIi4u
Ly4uL2FwaS92aWRlbzp2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKICAgICAgICIu
Li8uLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAogICAgICAgIi4uLy4uL2FwaS92aWRlbzp2aWRl
b19mcmFtZV9pNDIwIiwKKyAgICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOmNyZWF0ZV92cDhf
dGVtcG9yYWxfbGF5ZXJzIiwKICAgICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2Nv
ZGVjc19hcGkiLAogICAgICAgIi4uLy4uL2NvbW1vbl92aWRlbzpjb21tb25fdmlkZW8iLAogICAg
ICAgIi4uLy4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKQEAgLTg1OSw2ICs5MDgsNyBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfbnVtZXJpY3Mi
LAogICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKICAgICAgICIuLi8uLi9y
dGNfYmFzZTpydGNfdGFza19xdWV1ZV9mb3JfdGVzdCIsCisgICAgICAiLi4vLi4vcnRjX2Jhc2Uv
ZXhwZXJpbWVudHM6aml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQiLAogICAgICAgIi4uLy4u
L3N5c3RlbV93cmFwcGVycyIsCiAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3Ry
aWFsIiwKICAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCkBAIC04NzAsNiAr
OTIwLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vLi4vdGVzdDp2aWRl
b190ZXN0X3N1cHBvcnQiLAogICAgICAgIi4uL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAg
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAgICIvL3Ro
aXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgICAgXQogICAgIGlm
IChydGNfYnVpbGRfbGlidnB4KSB7CiAgICAgICBkZXBzICs9IFsgcnRjX2xpYnZweF9kaXIgXQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYwppbmRleCA3M2Q0NTgzN2FmNzdkNjk5
ZjZhNzk2YzFkY2Y1MWRmMzIxNmVhZGViLi5lMjEzMjIzY2E0ZjgxMWQ3MWU5OWI1ZmM4YmYxMzk4
Yzg5Y2M3NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1w
bC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYwpAQCAtMzIz
LDEzICszMjMsMTEgQEAgaW50MzJfdCBIMjY0RGVjb2RlckltcGw6OkRlY29kZShjb25zdCBFbmNv
ZGVkSW1hZ2UmIGlucHV0X2ltYWdlLAogICAvLyB3aXRob3V0IGNvcHlpbmcgdGhlIHVuZGVybHlp
bmcgYnVmZmVyLgogICBpZiAoYXZfZnJhbWVfLT53aWR0aCAhPSBpNDIwX2J1ZmZlci0+d2lkdGgo
KSB8fAogICAgICAgYXZfZnJhbWVfLT5oZWlnaHQgIT0gaTQyMF9idWZmZXItPmhlaWdodCgpKSB7
Ci0gICAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvRnJhbWVCdWZmZXI+IGNyb3BwZWRfYnVmKAot
ICAgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PFdyYXBwZWRJNDIwQnVmZmVyPigKLSAg
ICAgICAgICAgIGF2X2ZyYW1lXy0+d2lkdGgsIGF2X2ZyYW1lXy0+aGVpZ2h0LAotICAgICAgICAg
ICAgaTQyMF9idWZmZXItPkRhdGFZKCksIGk0MjBfYnVmZmVyLT5TdHJpZGVZKCksCi0gICAgICAg
ICAgICBpNDIwX2J1ZmZlci0+RGF0YVUoKSwgaTQyMF9idWZmZXItPlN0cmlkZVUoKSwKLSAgICAg
ICAgICAgIGk0MjBfYnVmZmVyLT5EYXRhVigpLCBpNDIwX2J1ZmZlci0+U3RyaWRlVigpLAotICAg
ICAgICAgICAgcnRjOjpLZWVwUmVmVW50aWxEb25lKGk0MjBfYnVmZmVyKSkpOworICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxWaWRlb0ZyYW1lQnVmZmVyPiBjcm9wcGVkX2J1ZiA9IFdyYXBJNDIwQnVm
ZmVyKAorICAgICAgICBhdl9mcmFtZV8tPndpZHRoLCBhdl9mcmFtZV8tPmhlaWdodCwgaTQyMF9i
dWZmZXItPkRhdGFZKCksCisgICAgICAgIGk0MjBfYnVmZmVyLT5TdHJpZGVZKCksIGk0MjBfYnVm
ZmVyLT5EYXRhVSgpLCBpNDIwX2J1ZmZlci0+U3RyaWRlVSgpLAorICAgICAgICBpNDIwX2J1ZmZl
ci0+RGF0YVYoKSwgaTQyMF9idWZmZXItPlN0cmlkZVYoKSwKKyAgICAgICAgcnRjOjpLZWVwUmVm
VW50aWxEb25lKGk0MjBfYnVmZmVyKSk7CiAgICAgVmlkZW9GcmFtZSBjcm9wcGVkX2ZyYW1lID0K
ICAgICAgICAgVmlkZW9GcmFtZTo6QnVpbGRlcigpCiAgICAgICAgICAgICAuc2V0X3ZpZGVvX2Zy
YW1lX2J1ZmZlcihjcm9wcGVkX2J1ZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gy
NjRfZW5jb2Rlcl9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9lbmNvZGVyX2ltcGwu
Y2MKaW5kZXggNGVmZmNkYmM1MjRmZWE5OTc3MjdmMmJlNGVmNjg2ZWZkOTQyMWU0MS4uZjE5MWYy
YzY0MDMyYWE5NzQ1M2MwYzgxOTlkZjQyNDVmYjZkYjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL2gyNjQvaDI2NF9lbmNvZGVyX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2
NF9lbmNvZGVyX2ltcGwuY2MKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJ0aGlyZF9wYXJ0
eS9vcGVuaDI2NC9zcmMvY29kZWMvYXBpL3N2Yy9jb2RlY19kZWYuaCIKICNpbmNsdWRlICJ0aGly
ZF9wYXJ0eS9vcGVuaDI2NC9zcmMvY29kZWMvYXBpL3N2Yy9jb2RlY192ZXIuaCIKIAorI2luY2x1
ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImNvbW1vbl92aWRlby9saWJ5dXYv
aW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
dXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF91dGlsaXR5LmgiCkBAIC0xNjcsNyArMTY4LDcg
QEAgSDI2NEVuY29kZXJJbXBsOjpIMjY0RW5jb2RlckltcGwoY29uc3QgY3JpY2tldDo6VmlkZW9D
b2RlYyYgY29kZWMpCiAgICAgICBlbmNvZGVkX2ltYWdlX2NhbGxiYWNrXyhudWxscHRyKSwKICAg
ICAgIGhhc19yZXBvcnRlZF9pbml0XyhmYWxzZSksCiAgICAgICBoYXNfcmVwb3J0ZWRfZXJyb3Jf
KGZhbHNlKSB7Ci0gIFJUQ19DSEVDSyhjcmlja2V0OjpDb2RlY05hbWVzRXEoY29kZWMubmFtZSwg
Y3JpY2tldDo6a0gyNjRDb2RlY05hbWUpKTsKKyAgUlRDX0NIRUNLKGFic2w6OkVxdWFsc0lnbm9y
ZUNhc2UoY29kZWMubmFtZSwgY3JpY2tldDo6a0gyNjRDb2RlY05hbWUpKTsKICAgc3RkOjpzdHJp
bmcgcGFja2V0aXphdGlvbl9tb2RlX3N0cmluZzsKICAgaWYgKGNvZGVjLkdldFBhcmFtKGNyaWNr
ZXQ6OmtIMjY0Rm10cFBhY2tldGl6YXRpb25Nb2RlLAogICAgICAgICAgICAgICAgICAgICAgJnBh
Y2tldGl6YXRpb25fbW9kZV9zdHJpbmcpICYmCkBAIC0zMTAsNyArMzExLDcgQEAgaW50MzJfdCBI
MjY0RW5jb2RlckltcGw6OkluaXRFbmNvZGUoY29uc3QgVmlkZW9Db2RlYyogaW5zdCwKICAgfQog
CiAgIFNpbXVsY2FzdFJhdGVBbGxvY2F0b3IgaW5pdF9hbGxvY2F0b3IoY29kZWNfKTsKLSAgQml0
cmF0ZUFsbG9jYXRpb24gYWxsb2NhdGlvbiA9IGluaXRfYWxsb2NhdG9yLkdldEFsbG9jYXRpb24o
CisgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYWxsb2NhdGlvbiA9IGluaXRfYWxsb2NhdG9yLkdl
dEFsbG9jYXRpb24oCiAgICAgICBjb2RlY18uc3RhcnRCaXRyYXRlICogMTAwMCwgY29kZWNfLm1h
eEZyYW1lcmF0ZSk7CiAgIHJldHVybiBTZXRSYXRlQWxsb2NhdGlvbihhbGxvY2F0aW9uLCBjb2Rl
Y18ubWF4RnJhbWVyYXRlKTsKIH0KQEAgLTMzOSw3ICszNDAsNyBAQCBpbnQzMl90IEgyNjRFbmNv
ZGVySW1wbDo6UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKAogfQogCiBpbnQzMl90IEgy
NjRFbmNvZGVySW1wbDo6U2V0UmF0ZUFsbG9jYXRpb24oCi0gICAgY29uc3QgQml0cmF0ZUFsbG9j
YXRpb24mIGJpdHJhdGUsCisgICAgY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0
ZSwKICAgICB1aW50MzJfdCBuZXdfZnJhbWVyYXRlKSB7CiAgIGlmIChlbmNvZGVyc18uZW1wdHko
KSkKICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX1VOSU5JVElBTElaRUQ7CkBAIC01MzQs
MTAgKzUzNSw2IEBAIGludDMyX3QgSDI2NEVuY29kZXJJbXBsOjpFbmNvZGUoY29uc3QgVmlkZW9G
cmFtZSYgaW5wdXRfZnJhbWUsCiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAK
LWNvbnN0IGNoYXIqIEgyNjRFbmNvZGVySW1wbDo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qg
ewotICByZXR1cm4gIk9wZW5IMjY0IjsKLX0KLQogLy8gSW5pdGlhbGl6YXRpb24gcGFyYW1ldGVy
cy4KIC8vIFRoZXJlIGFyZSB0d28gd2F5cyB0byBpbml0aWFsaXplLiBUaGVyZSBpcyBTRW5jUGFy
YW1CYXNlIChjbGVhcmVkIHdpdGgKIC8vIG1lbXNldCgmcCwgMCwgc2l6ZW9mKFNFbmNQYXJhbUJh
c2UpKSB1c2VkIGluIEluaXRpYWxpemUsIGFuZCBTRW5jUGFyYW1FeHQKQEAgLTYyNCwxNCArNjIx
LDEzIEBAIHZvaWQgSDI2NEVuY29kZXJJbXBsOjpSZXBvcnRFcnJvcigpIHsKICAgaGFzX3JlcG9y
dGVkX2Vycm9yXyA9IHRydWU7CiB9CiAKLWludDMyX3QgSDI2NEVuY29kZXJJbXBsOjpTZXRDaGFu
bmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJ0dCkgewotICByZXR1cm4gV0VCUlRD
X1ZJREVPX0NPREVDX09LOwotfQotCi1WaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBIMjY0
RW5jb2RlckltcGw6OkdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IHsKLSAgcmV0dXJuIFZpZGVv
RW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzKGtMb3dIMjY0UXBUaHJlc2hvbGQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrSGlnaEgyNjRRcFRocmVzaG9sZCk7CitWaWRl
b0VuY29kZXI6OkVuY29kZXJJbmZvIEgyNjRFbmNvZGVySW1wbDo6R2V0RW5jb2RlckluZm8oKSBj
b25zdCB7CisgIEVuY29kZXJJbmZvIGluZm87CisgIGluZm8uc3VwcG9ydHNfbmF0aXZlX2hhbmRs
ZSA9IGZhbHNlOworICBpbmZvLmltcGxlbWVudGF0aW9uX25hbWUgPSAiT3BlbkgyNjQiOworICBp
bmZvLnNjYWxpbmdfc2V0dGluZ3MgPQorICAgICAgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGlu
Z3Moa0xvd0gyNjRRcFRocmVzaG9sZCwga0hpZ2hIMjY0UXBUaHJlc2hvbGQpOworICByZXR1cm4g
aW5mbzsKIH0KIAogdm9pZCBIMjY0RW5jb2RlckltcGw6OkxheWVyQ29uZmlnOjpTZXRTdHJlYW1T
dGF0ZShib29sIHNlbmRfc3RyZWFtKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9o
MjY0X2VuY29kZXJfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9lbmNvZGVyX2ltcGwu
aAppbmRleCAwZDI1OTY2MGY2OTliNmI1NWFiM2I1NjMxYmM3NjI3NGQ2ZDNhMTM4Li5kYTMyNTYz
YzliMmRlMmY3ZWYyZjA5NDg0ZDBmODhkMTE0MWZjZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvaDI2NC9oMjY0X2VuY29kZXJfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRf
ZW5jb2Rlcl9pbXBsLmgKQEAgLTcwLDEyICs3MCw3IEBAIGNsYXNzIEgyNjRFbmNvZGVySW1wbCA6
IHB1YmxpYyBIMjY0RW5jb2RlciB7CiAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lm
aWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZvLAogICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxGcmFtZVR5cGU+KiBmcmFtZV90eXBlcykgb3ZlcnJpZGU7CiAKLSAgY29uc3QgY2hh
ciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgVmlkZW9FbmNvZGVy
OjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
LSAgLy8gVW5zdXBwb3J0ZWQgLyBEbyBub3RoaW5nLgotICBpbnQzMl90IFNldENoYW5uZWxQYXJh
bWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CisgIEVu
Y29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgLy8gRXhwb3Nl
ZCBmb3IgdGVzdGluZy4KICAgSDI2NFBhY2tldGl6YXRpb25Nb2RlIFBhY2tldGl6YXRpb25Nb2Rl
Rm9yVGVzdGluZygpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRf
c2ltdWxjYXN0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9zaW11bGNhc3Rf
dW5pdHRlc3QuY2MKaW5kZXggNmM2ZmFlOGMxYTBkMTQzYWFhMTJhMjczMWU0MWE3ZWM4ODEyNDlm
MC4uM2I3MjBiMzg0MzBiNDcwOTczZWU0NDU0ZmJkYzI5Y2Y3YjdlN2U2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL2gyNjQvaDI2NF9zaW11bGNhc3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL2gyNjQvaDI2NF9zaW11bGNhc3RfdW5pdHRlc3QuY2MKQEAgLTEzLDkgKzEzLDkgQEAK
ICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvdGVzdC9jcmVh
dGVfc2ltdWxjYXN0X3Rlc3RfZml4dHVyZS5oIgogI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsY2Fz
dF90ZXN0X2ZpeHR1cmUuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRl
b19kZWNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92
aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvaDI2NC9pbmNsdWRlL2gyNjQuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVv
X2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRj
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2luY2x1ZGUvaDI2NC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0LmgKaW5kZXggZTIzODE4Yjc1NmI4NmYzMDMzZWI2Yjk1
M2EzNjg4YmEzYzgwNmEzMi4uZjVjZWJjZmU2MjEyMmM1ZWY3MjdmMzc3MDUwM2I2M2Y3ZmQ0ZjFm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0LmgKQEAgLTE3LDYgKzE3LDcgQEAKIAogI2luY2x1
ZGUgIm1lZGlhL2Jhc2UvY29kZWMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9p
bmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3Rl
bS9ydGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0yNiwxMyArMjcsMTMg
QEAgc3RydWN0IFNkcFZpZGVvRm9ybWF0OwogLy8gfHJ0Y191c2VfaDI2NHwgYnVpbGQgZmxhZyBp
cyB0cnVlIChpZiBmYWxzZSwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcpLgogLy8gVGhpcyBm
dW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQgYmVmb3JlIG9yIGR1cmluZyBXZWJSVEMgaW5p
dGlhbGl6YXRpb24KIC8vIGFuZCBpcyBub3QgdGhyZWFkLXNhZmUuCi12b2lkIERpc2FibGVSdGNV
c2VIMjY0KCk7CitSVENfRVhQT1JUIHZvaWQgRGlzYWJsZVJ0Y1VzZUgyNjQoKTsKIAogLy8gUmV0
dXJucyBhIHZlY3RvciB3aXRoIGFsbCBzdXBwb3J0ZWQgaW50ZXJuYWwgSDI2NCBwcm9maWxlcyB0
aGF0IHdlIGNhbgogLy8gbmVnb3RpYXRlIGluIFNEUCwgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZS4K
IHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBTdXBwb3J0ZWRIMjY0Q29kZWNzKCk7CiAKLWNs
YXNzIEgyNjRFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CitjbGFzcyBSVENfRVhQT1JU
IEgyNjRFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgcHVibGljOgogICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEgyNjRFbmNvZGVyPiBDcmVhdGUoY29uc3QgY3JpY2tldDo6VmlkZW9D
b2RlYyYgY29kZWMpOwogICAvLyBJZiBILjI2NCBpcyBzdXBwb3J0ZWQgKGFueSBpbXBsZW1lbnRh
dGlvbikuCkBAIC00MSw3ICs0Miw3IEBAIGNsYXNzIEgyNjRFbmNvZGVyIDogcHVibGljIFZpZGVv
RW5jb2RlciB7CiAgIH5IMjY0RW5jb2RlcigpIG92ZXJyaWRlIHt9CiB9OwogCi1jbGFzcyBIMjY0
RGVjb2RlciA6IHB1YmxpYyBWaWRlb0RlY29kZXIgeworY2xhc3MgUlRDX0VYUE9SVCBIMjY0RGVj
b2RlciA6IHB1YmxpYyBWaWRlb0RlY29kZXIgewogIHB1YmxpYzoKICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxIMjY0RGVjb2Rlcj4gQ3JlYXRlKCk7CiAgIHN0YXRpYyBib29sIElzU3VwcG9ydGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC90ZXN0L2gyNjRfaW1wbF91bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L3Rlc3QvaDI2NF9pbXBsX3VuaXR0ZXN0LmNjCmluZGV4
IDE0YmI2YmNjNDdlNjNmMTUyZjhkMWEzYWY5MDM1YWU1ZTM4Zjc1YTQuLjgyYzE0YjdmZDUyOWMw
NmU0NmFjYTAxMGFhZjlmNmYyYzk1NGFhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0
L3Rlc3QvaDI2NF9pbXBsX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L3Rlc3Qv
aDI2NF9pbXBsX3VuaXR0ZXN0LmNjCkBAIC01Niw3ICs1Niw3IEBAIFRFU1RfRihUZXN0SDI2NElt
cGwsIE1BWUJFX0VuY29kZURlY29kZSkgewogICBBU1NFUlRfVFJVRShkZWNvZGVkX2ZyYW1lKTsK
ICAgRVhQRUNUX0dUKEk0MjBQU05SKGlucHV0X2ZyYW1lLCBkZWNvZGVkX2ZyYW1lLmdldCgpKSwg
MzYpOwogCi0gIGNvbnN0IENvbG9yU3BhY2UgY29sb3Jfc3BhY2UgPSBkZWNvZGVkX2ZyYW1lLT5j
b2xvcl9zcGFjZSgpLnZhbHVlKCk7CisgIGNvbnN0IENvbG9yU3BhY2UgY29sb3Jfc3BhY2UgPSAq
ZGVjb2RlZF9mcmFtZS0+Y29sb3Jfc3BhY2UoKTsKICAgRVhQRUNUX0VRKENvbG9yU3BhY2U6OlBy
aW1hcnlJRDo6a0ludmFsaWQsIGNvbG9yX3NwYWNlLnByaW1hcmllcygpKTsKICAgRVhQRUNUX0VR
KENvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OmtJbnZhbGlkLCBjb2xvcl9zcGFjZS50cmFuc2Zlcigp
KTsKICAgRVhQRUNUX0VRKENvbG9yU3BhY2U6Ok1hdHJpeElEOjprSW52YWxpZCwgY29sb3Jfc3Bh
Y2UubWF0cml4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2k0MjAvaW5jbHVkZS9pNDIw
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvaTQyMC9pbmNsdWRlL2k0MjAuaAppbmRleCA1ODBiYzE2YzJmOGE5
YzAzNDVlNzdmOTUzMGM5NjRmZjA1ZTQxMjVhLi45NjcyODZmNDJjYjQzZTBmYzM2Yjc4YWFiMmE2
ZWRjMDY4MmVlMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaTQyMC9pbmNsdWRlL2k0MjAu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvaTQyMC9pbmNsdWRlL2k0MjAuaApAQCAtNjUsMTAgKzY1LDYg
QEAgY2xhc3MgSTQyMEVuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgLy8gUmV0dXJu
IHZhbHVlICAgICAgICAgICAgICAgIDogV0VCUlRDX1ZJREVPX0NPREVDX09LIGlmIE9LLCA8IDAg
b3RoZXJ3aXNlLgogICBpbnQgUmVsZWFzZSgpIG92ZXJyaWRlOwogCi0gIGludCBTZXRDaGFubmVs
UGFyYW1ldGVycyh1aW50MzJfdCAvKnBhY2tldExvc3MqLywgaW50NjRfdCAvKnJ0dCovKSBvdmVy
cmlkZSB7Ci0gICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLSAgfQotCiAgcHJpdmF0
ZToKICAgc3RhdGljIHVpbnQ4X3QqIEluc2VydEhlYWRlcih1aW50OF90KiBidWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3Qgd2lkdGgsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvbXVsdGlwbGV4L2luY2x1ZGUvbXVsdGlwbGV4X2VuY29kZXJfYWRhcHRlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL211bHRpcGxleC9pbmNsdWRlL211bHRpcGxleF9lbmNvZGVyX2FkYXB0
ZXIuaAppbmRleCA1MzFkMDc4NzBlNzZkZTFlYTQ3ZGU3MGE5ZWZiYzlkZWU5YzE0NjYzLi4yMzVh
MzYwMzBiMDc4Y2ZhZWEyYmYzMTA4ZDQyOTViNWViMzYwMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvbXVsdGlwbGV4L2luY2x1ZGUvbXVsdGlwbGV4X2VuY29kZXJfYWRhcHRlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvaW5jbHVkZS9tdWx0aXBsZXhfZW5jb2Rlcl9hZGFwdGVy
LmgKQEAgLTQ2LDExICs0NiwxMCBAQCBjbGFzcyBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlciA6IHB1
YmxpYyBWaWRlb0VuY29kZXIgewogICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZv
KiBjb2RlY19zcGVjaWZpY19pbmZvLAogICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEZy
YW1lVHlwZT4qIGZyYW1lX3R5cGVzKSBvdmVycmlkZTsKICAgaW50IFJlZ2lzdGVyRW5jb2RlQ29t
cGxldGVDYWxsYmFjayhFbmNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwot
ICBpbnQgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsIGludDY0X3Qg
cnR0KSBvdmVycmlkZTsKICAgaW50IFNldFJhdGVBbGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0cmF0
ZUFsbG9jYXRpb24mIGJpdHJhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBu
ZXdfZnJhbWVyYXRlKSBvdmVycmlkZTsKICAgaW50IFJlbGVhc2UoKSBvdmVycmlkZTsKLSAgY29u
c3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgIEVuY29kZXJJ
bmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgRW5jb2RlZEltYWdlQ2Fs
bGJhY2s6OlJlc3VsdCBPbkVuY29kZWRJbWFnZSgKICAgICAgIEFscGhhQ29kZWNTdHJlYW0gc3Ry
ZWFtX2lkeCwKQEAgLTgxLDYgKzgwLDggQEAgY2xhc3MgTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXIg
OiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKIAogICBjb25zdCBib29sIHN1cHBvcnRzX2F1Z21lbnRl
ZF9kYXRhXzsKICAgaW50IGF1Z21lbnRpbmdfZGF0YV9zaXplXyA9IDA7CisKKyAgRW5jb2Rlcklu
Zm8gZW5jb2Rlcl9pbmZvXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlwbGV4X2RlY29kZXJfYWRhcHRlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlwbGV4X2RlY29kZXJfYWRhcHRlci5jYwppbmRl
eCBjYzU4OGQwMzQ3YTU4NTUyNzAyMTM1YjM2ODUyNmI0YTFkZjczYTk2Li5hMjdiYzhkMjU4ODM0
NWY1MDQ4YTJjNGQ3OTM1NGI0MWYxNzhmYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVs
dGlwbGV4L211bHRpcGxleF9kZWNvZGVyX2FkYXB0ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211
bHRpcGxleC9tdWx0aXBsZXhfZGVjb2Rlcl9hZGFwdGVyLmNjCkBAIC0xMCw5ICsxMCw5IEBACiAK
ICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L2luY2x1ZGUv
bXVsdGlwbGV4X2RlY29kZXJfYWRhcHRlci5oIgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29k
ZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKICNpbmNsdWRl
ICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVv
L2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92
aWRlb19mcmFtZV9idWZmZXIuaCIKICNpbmNsdWRlICJjb21tb25fdmlkZW8vbGlieXV2L2luY2x1
ZGUvd2VicnRjX2xpYnl1di5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy9tdWx0aXBsZXgvaW5jbHVkZS9hdWdtZW50ZWRfdmlkZW9fZnJhbWVfYnVmZmVyLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211bHRpcGxleF9lbmNvZGVkX2ltYWdlX3Bh
Y2tlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL211bHRpcGxleC9tdWx0aXBsZXhfZW5jb2RlZF9pbWFnZV9w
YWNrZXIuaAppbmRleCBlYTM3ZjBjNGQ5ZmY0NjUxNjBjZThmYTUzNTdhZWRmNzU1OTNkNjU0Li4w
ZDJmOWZhMjZlYTM1ZDVhOGM0YjE1NDM1NDc5NmVlMDU3YzMwMmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvbXVsdGlwbGV4L211bHRpcGxleF9lbmNvZGVkX2ltYWdlX3BhY2tlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy9tdWx0aXBsZXgvbXVsdGlwbGV4X2VuY29kZWRfaW1hZ2VfcGFja2VyLmgK
QEAgLTE0LDggKzE0LDggQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgog
CisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJjb21tb25f
dHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQotI2luY2x1ZGUgImNvbW1vbl92aWRl
by9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211bHRpcGxleF9lbmNvZGVyX2FkYXB0ZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvbXVsdGlwbGV4L211bHRpcGxleF9lbmNvZGVyX2FkYXB0ZXIuY2MKaW5k
ZXggYzNhNzUwNjJiNTRlYmU1ODkxNDkzOWFkMjcxNGM4YjJkNmQxMmRiMS4uNGRhYmNhNzdmZDAw
NTlhNTFiMzgzMjMxNjAxZDAzNTkzNTAwZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL211
bHRpcGxleC9tdWx0aXBsZXhfZW5jb2Rlcl9hZGFwdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9t
dWx0aXBsZXgvbXVsdGlwbGV4X2VuY29kZXJfYWRhcHRlci5jYwpAQCAtMTIsNyArMTIsNyBAQAog
CiAjaW5jbHVkZSA8Y3N0cmluZz4KIAotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3Zp
ZGVvX2ZyYW1lLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNs
dWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZV9idWZmZXIuaCIKICNpbmNsdWRl
ICJjb21tb25fdmlkZW8vbGlieXV2L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCkBAIC01Myw2ICs1Myw3IEBA
IE11bHRpcGxleEVuY29kZXJBZGFwdGVyOjpNdWx0aXBsZXhFbmNvZGVyQWRhcHRlcigKICAgICA6
IGZhY3RvcnlfKGZhY3RvcnkpLAogICAgICAgYXNzb2NpYXRlZF9mb3JtYXRfKGFzc29jaWF0ZWRf
Zm9ybWF0KSwKICAgICAgIGVuY29kZWRfY29tcGxldGVfY2FsbGJhY2tfKG51bGxwdHIpLAorICAg
ICAga2V5X2ZyYW1lX2ludGVydmFsXygwKSwKICAgICAgIHN1cHBvcnRzX2F1Z21lbnRlZF9kYXRh
XyhzdXBwb3J0c19hdWdtZW50ZWRfZGF0YSkge30KIAogTXVsdGlwbGV4RW5jb2RlckFkYXB0ZXI6
On5NdWx0aXBsZXhFbmNvZGVyQWRhcHRlcigpIHsKQEAgLTkyLDYgKzkzLDExIEBAIGludCBNdWx0
aXBsZXhFbmNvZGVyQWRhcHRlcjo6SW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBpbnN0LAog
ICAgICAgYnJlYWs7CiAgIH0KIAorICBlbmNvZGVyX2luZm9fID0gRW5jb2RlckluZm8oKTsKKyAg
ZW5jb2Rlcl9pbmZvXy5pbXBsZW1lbnRhdGlvbl9uYW1lID0gIk11bHRpcGxleEVuY29kZXJBZGFw
dGVyICgiOworICAvLyBUaGlzIG5lZWRzIHRvIGJlIGZhbHNlIHNvIHRoYXQgd2UgY2FuIGRvIHRo
ZSBzcGxpdCBpbiBFbmNvZGUoKS4KKyAgZW5jb2Rlcl9pbmZvXy5zdXBwb3J0c19uYXRpdmVfaGFu
ZGxlID0gZmFsc2U7CisKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrQWxwaGFDb2RlY1N0cmVh
bXM7ICsraSkgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IGVuY29kZXIgPQog
ICAgICAgICBmYWN0b3J5Xy0+Q3JlYXRlVmlkZW9FbmNvZGVyKGFzc29jaWF0ZWRfZm9ybWF0Xyk7
CkBAIC0xMDQsOCArMTEwLDE3IEBAIGludCBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlcjo6SW5pdEVu
Y29kZShjb25zdCBWaWRlb0NvZGVjKiBpbnN0LAogICAgIGFkYXB0ZXJfY2FsbGJhY2tzXy5lbXBs
YWNlX2JhY2sobmV3IEFkYXB0ZXJFbmNvZGVkSW1hZ2VDYWxsYmFjaygKICAgICAgICAgdGhpcywg
c3RhdGljX2Nhc3Q8QWxwaGFDb2RlY1N0cmVhbT4oaSkpKTsKICAgICBlbmNvZGVyLT5SZWdpc3Rl
ckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soYWRhcHRlcl9jYWxsYmFja3NfLmJhY2soKS5nZXQoKSk7
CisKKyAgICBjb25zdCBFbmNvZGVySW5mbyYgZW5jb2Rlcl9pbXBsX2luZm8gPSBlbmNvZGVyLT5H
ZXRFbmNvZGVySW5mbygpOworICAgIGVuY29kZXJfaW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSAr
PSBlbmNvZGVyX2ltcGxfaW5mby5pbXBsZW1lbnRhdGlvbl9uYW1lOworICAgIGlmIChpICE9IGtB
bHBoYUNvZGVjU3RyZWFtcyAtIDEpIHsKKyAgICAgIGVuY29kZXJfaW5mb18uaW1wbGVtZW50YXRp
b25fbmFtZSArPSAiLCAiOworICAgIH0KKwogICAgIGVuY29kZXJzXy5lbXBsYWNlX2JhY2soc3Rk
Ojptb3ZlKGVuY29kZXIpKTsKICAgfQorICBlbmNvZGVyX2luZm9fLmltcGxlbWVudGF0aW9uX25h
bWUgKz0gIikiOworCiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKQEAgLTE4
NywxNiArMjAyLDYgQEAgaW50IE11bHRpcGxleEVuY29kZXJBZGFwdGVyOjpSZWdpc3RlckVuY29k
ZUNvbXBsZXRlQ2FsbGJhY2soCiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAK
LWludCBNdWx0aXBsZXhFbmNvZGVyQWRhcHRlcjo6U2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMy
X3QgcGFja2V0X2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgcnR0KSB7Ci0gIGZvciAoYXV0byYgZW5jb2RlciA6IGVuY29kZXJz
XykgewotICAgIGNvbnN0IGludCBydiA9IGVuY29kZXItPlNldENoYW5uZWxQYXJhbWV0ZXJzKHBh
Y2tldF9sb3NzLCBydHQpOwotICAgIGlmIChydikKLSAgICAgIHJldHVybiBydjsKLSAgfQotICBy
ZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwotfQotCiBpbnQgTXVsdGlwbGV4RW5jb2RlckFk
YXB0ZXI6OlNldFJhdGVBbGxvY2F0aW9uKAogICAgIGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRp
b24mIGJpdHJhdGUsCiAgICAgdWludDMyX3QgZnJhbWVyYXRlKSB7CkBAIC0yMzgsOCArMjQzLDgg
QEAgaW50IE11bHRpcGxleEVuY29kZXJBZGFwdGVyOjpSZWxlYXNlKCkgewogICByZXR1cm4gV0VC
UlRDX1ZJREVPX0NPREVDX09LOwogfQogCi1jb25zdCBjaGFyKiBNdWx0aXBsZXhFbmNvZGVyQWRh
cHRlcjo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3QgewotICByZXR1cm4gIk11bHRpcGxleEVu
Y29kZXJBZGFwdGVyIjsKK1ZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gTXVsdGlwbGV4RW5jb2Rl
ckFkYXB0ZXI6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICByZXR1cm4gZW5jb2Rlcl9pbmZv
XzsKIH0KIAogRW5jb2RlZEltYWdlQ2FsbGJhY2s6OlJlc3VsdCBNdWx0aXBsZXhFbmNvZGVyQWRh
cHRlcjo6T25FbmNvZGVkSW1hZ2UoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRl
b19jb2RlY191bml0dGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9fY29kZWNfdW5pdHRl
c3QuaAppbmRleCA0ODg2MGMzNWE2ZjM0OTcxNTkyZTNkM2VjOWI0YzcwN2VkZGI3ZTUxLi45YTRk
NjBjZWMyNjc4NzI2NjEzYTFhNzJjMTg2YTcwNWU3MTVjNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdGVzdC92aWRlb19jb2RlY191bml0dGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0
L3ZpZGVvX2NvZGVjX3VuaXR0ZXN0LmgKQEAgLTMyLDExICszMiw3IEBAIGNsYXNzIFZpZGVvQ29k
ZWNVbml0VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICBWaWRlb0NvZGVjVW5pdFRl
c3QoKQogICAgICAgOiBlbmNvZGVfY29tcGxldGVfY2FsbGJhY2tfKHRoaXMpLAogICAgICAgICBk
ZWNvZGVfY29tcGxldGVfY2FsbGJhY2tfKHRoaXMpLAotICAgICAgICBlbmNvZGVkX2ZyYW1lX2V2
ZW50XyhmYWxzZSAvKiBtYW51YWwgcmVzZXQgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZhbHNlIC8qIGluaXRpYWxseSBzaWduYWxlZCAqLyksCiAgICAgICAgIHdhaXRfZm9yX2Vu
Y29kZWRfZnJhbWVzX3RocmVzaG9sZF8oMSksCi0gICAgICAgIGRlY29kZWRfZnJhbWVfZXZlbnRf
KGZhbHNlIC8qIG1hbnVhbCByZXNldCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFsc2UgLyogaW5pdGlhbGx5IHNpZ25hbGVkICovKSwKICAgICAgICAgbGFzdF9pbnB1dF9mcmFt
ZV90aW1lc3RhbXBfKDApIHt9CiAKICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfZml4dHVyZV9pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rl
c3QvdmlkZW9jb2RlY190ZXN0X2ZpeHR1cmVfaW1wbC5jYwppbmRleCA0ZGMyNjhhMDQzMWYwOTVl
ZmQ5NDQzYzczYWNjZDg4OTY5OTg2ZTUyLi44NDdlODQ3ODViY2I0MzI2ZDQ3MzM2MTMxZmU2YjRm
Y2MwNzY3NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3Rf
Zml4dHVyZV9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9m
aXh0dXJlX2ltcGwuY2MKQEAgLTEzMCw5ICsxMzAsNyBAQCBib29sIFJ1bkVuY29kZUluUmVhbFRp
bWUoY29uc3QgVmlkZW9Db2RlY1Rlc3RGaXh0dXJlSW1wbDo6Q29uZmlnJiBjb25maWcpIHsKIAog
c3RkOjpzdHJpbmcgRmlsZW5hbWVXaXRoUGFyYW1zKAogICAgIGNvbnN0IFZpZGVvQ29kZWNUZXN0
Rml4dHVyZUltcGw6OkNvbmZpZyYgY29uZmlnKSB7Ci0gIHN0ZDo6c3RyaW5nIGltcGxlbWVudGF0
aW9uX3R5cGUgPSBjb25maWcuaHdfZW5jb2RlciA/ICJodyIgOiAic3ciOwogICByZXR1cm4gY29u
ZmlnLmZpbGVuYW1lICsgIl8iICsgY29uZmlnLkNvZGVjTmFtZSgpICsgIl8iICsKLSAgICAgICAg
IGltcGxlbWVudGF0aW9uX3R5cGUgKyAiXyIgKwogICAgICAgICAgc3RkOjp0b19zdHJpbmcoY29u
ZmlnLmNvZGVjX3NldHRpbmdzLnN0YXJ0Qml0cmF0ZSk7CiB9CiAKQEAgLTQ0Niw3ICs0NDQsNyBA
QCB2b2lkIFZpZGVvQ29kZWNUZXN0Rml4dHVyZUltcGw6OlByb2Nlc3NBbGxGcmFtZXMoCiAgIH0K
IAogICAvLyBXYWl0IHVudGlsIHdlIGtub3cgdGhhdCB0aGUgbGFzdCBmcmFtZSBoYXMgYmVlbiBz
ZW50IGZvciBlbmNvZGUuCi0gIHJ0Yzo6RXZlbnQgc3luY19ldmVudChmYWxzZSwgZmFsc2UpOwor
ICBydGM6OkV2ZW50IHN5bmNfZXZlbnQ7CiAgIHRhc2tfcXVldWUtPlBvc3RUYXNrKFsmc3luY19l
dmVudF0geyBzeW5jX2V2ZW50LlNldCgpOyB9KTsKICAgc3luY19ldmVudC5XYWl0KHJ0Yzo6RXZl
bnQ6OmtGb3JldmVyKTsKIApAQCAtNjczLDcgKzY3MSw3IEBAIHZvaWQgVmlkZW9Db2RlY1Rlc3RG
aXh0dXJlSW1wbDo6UHJpbnRTZXR0aW5ncygKICAgc3RkOjpzdHJpbmcgZW5jb2Rlcl9uYW1lOwog
ICBzdGQ6OnN0cmluZyBkZWNvZGVyX25hbWU7CiAgIHRhc2tfcXVldWUtPlNlbmRUYXNrKFt0aGlz
LCAmZW5jb2Rlcl9uYW1lLCAmZGVjb2Rlcl9uYW1lXSB7Ci0gICAgZW5jb2Rlcl9uYW1lID0gZW5j
b2Rlcl8tPkltcGxlbWVudGF0aW9uTmFtZSgpOworICAgIGVuY29kZXJfbmFtZSA9IGVuY29kZXJf
LT5HZXRFbmNvZGVySW5mbygpLmltcGxlbWVudGF0aW9uX25hbWU7CiAgICAgZGVjb2Rlcl9uYW1l
ID0gZGVjb2RlcnNfLmF0KDApLT5JbXBsZW1lbnRhdGlvbk5hbWUoKTsKICAgfSk7CiAgIHByaW50
ZigiZW5jX2ltcGxfbmFtZTogJXNcbiIsIGVuY29kZXJfbmFtZS5jX3N0cigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9saWJ2cHguY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfbGlidnB4LmNjCmluZGV4IDk1ODZjZTljNzkyMzgy
MTMzNDIxYWVkODE2Y2JhZjVlZGVlOGQwNDguLmY2OWZkZTY4ODQwMTBmYzM1ZmMzOTY3MDJlMjQz
YmIyNzZhYjQzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVz
dF9saWJ2cHguY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X2xpYnZw
eC5jYwpAQCAtMTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5Lmgi
CiAjaW5jbHVkZSAiYXBpL3Rlc3QvY3JlYXRlX3ZpZGVvY29kZWNfdGVzdF9maXh0dXJlLmgiCisj
aW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCiAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS9p
bnRlcm5hbGRlY29kZXJmYWN0b3J5LmgiCkBAIC0xOSw3ICsyMCw2IEBACiAjaW5jbHVkZSAibWVk
aWEvZW5naW5lL3NpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy91dGlsaXR5L3ZwOF9oZWFkZXJfcGFyc2VyLmgiCiAjaW5jbHVkZSAibW9k
dWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS92cDlfdW5jb21wcmVzc2VkX2hlYWRlcl9wYXJzZXIu
aCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2lu
Y2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGls
cy5oIgogCkBAIC02Myw4ICs2Myw2IEBAIFZpZGVvQ29kZWNUZXN0Rml4dHVyZTo6Q29uZmlnIENy
ZWF0ZUNvbmZpZygpIHsKICAgY29uZmlnLmZpbGVwYXRoID0gUmVzb3VyY2VQYXRoKGNvbmZpZy5m
aWxlbmFtZSwgInl1diIpOwogICBjb25maWcubnVtX2ZyYW1lcyA9IGtOdW1GcmFtZXNMb25nOwog
ICBjb25maWcudXNlX3NpbmdsZV9jb3JlID0gdHJ1ZTsKLSAgY29uZmlnLmh3X2VuY29kZXIgPSBm
YWxzZTsKLSAgY29uZmlnLmh3X2RlY29kZXIgPSBmYWxzZTsKICAgcmV0dXJuIGNvbmZpZzsKIH0K
IApAQCAtOTIsNyArOTAsNyBAQCB2b2lkIFByaW50UmRQZXJmKHN0ZDo6bWFwPHNpemVfdCwgc3Rk
Ojp2ZWN0b3I8VmlkZW9TdGF0aXN0aWNzPj4gcmRfc3RhdHMpIHsKIH0KIH0gIC8vIG5hbWVzcGFj
ZQogCi0jaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2lmIGRlZmluZWQoUlRDX0VOQUJM
RV9WUDkpCiBURVNUKFZpZGVvQ29kZWNUZXN0TGlidnB4LCBIaWdoQml0cmF0ZVZQOSkgewogICBh
dXRvIGNvbmZpZyA9IENyZWF0ZUNvbmZpZygpOwogICBjb25maWcuU2V0Q29kZWNTZXR0aW5ncyhj
cmlja2V0OjprVnA5Q29kZWNOYW1lLCAxLCAxLCAxLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsCkBAIC0x
MDUsNyArMTAzLDcgQEAgVEVTVChWaWRlb0NvZGVjVGVzdExpYnZweCwgSGlnaEJpdHJhdGVWUDkp
IHsKICAgc3RkOjp2ZWN0b3I8UmF0ZVByb2ZpbGU+IHJhdGVfcHJvZmlsZXMgPSB7ezUwMCwgMzAs
IGtOdW1GcmFtZXNTaG9ydH19OwogCiAgIHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xk
cz4gcmNfdGhyZXNob2xkcyA9IHsKLSAgICAgIHs1LCAxLCAwLCAwLjExLCAwLjMsIDAuMSwgMCwg
MX19OworICAgICAgezUsIDEsIDAsIDEsIDAuMywgMC4xLCAwLCAxfX07CiAKICAgc3RkOjp2ZWN0
b3I8UXVhbGl0eVRocmVzaG9sZHM+IHF1YWxpdHlfdGhyZXNob2xkcyA9IHt7MzcsIDM2LCAwLjk0
LCAwLjkyfX07CiAKQEAgLTEyNiw5ICsxMjQsOSBAQCBURVNUKFZpZGVvQ29kZWNUZXN0TGlidnB4
LCBDaGFuZ2VCaXRyYXRlVlA5KSB7CiAgICAgICB7NTAwLCAzMCwga051bUZyYW1lc0xvbmd9fTsK
IAogICBzdGQ6OnZlY3RvcjxSYXRlQ29udHJvbFRocmVzaG9sZHM+IHJjX3RocmVzaG9sZHMgPSB7
Ci0gICAgICB7NSwgMSwgMCwgMC4xNSwgMC41LCAwLjEsIDAsIDF9LAotICAgICAgezE1LCAyLCAw
LCAwLjIsIDAuNSwgMC4xLCAwLCAwfSwKLSAgICAgIHsxMCwgMSwgMCwgMC4zLCAwLjUsIDAuMSwg
MCwgMH19OworICAgICAgezUsIDEsIDAsIDEsIDAuNSwgMC4xLCAwLCAxfSwKKyAgICAgIHsxNSwg
MiwgMCwgMSwgMC41LCAwLjEsIDAsIDB9LAorICAgICAgezEwLCAxLCAwLCAxLCAwLjUsIDAuMSwg
MCwgMH19OwogCiAgIHN0ZDo6dmVjdG9yPFF1YWxpdHlUaHJlc2hvbGRzPiBxdWFsaXR5X3RocmVz
aG9sZHMgPSB7CiAgICAgICB7MzQsIDMzLCAwLjkwLCAwLjg4fSwgezM4LCAzNSwgMC45NSwgMC45
MX0sIHszNSwgMzQsIDAuOTMsIDAuOTB9fTsKQEAgLTE1MSw5ICsxNDksOSBAQCBURVNUKFZpZGVv
Q29kZWNUZXN0TGlidnB4LCBDaGFuZ2VGcmFtZXJhdGVWUDkpIHsKIAogICAvLyBGcmFtZXJhdGUg
bWlzbWF0Y2ggc2hvdWxkIGJlIGxvd2VyIGZvciBsb3dlciBmcmFtZXJhdGUuCiAgIHN0ZDo6dmVj
dG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4gcmNfdGhyZXNob2xkcyA9IHsKLSAgICAgIHsxMCwg
MiwgNDAsIDAuNCwgMC41LCAwLjIsIDAsIDF9LAotICAgICAgezgsIDIsIDUsIDAuMiwgMC41LCAw
LjIsIDAsIDB9LAotICAgICAgezUsIDIsIDAsIDAuMjEsIDAuNSwgMC4zLCAwLCAwfX07CisgICAg
ICB7MTAsIDIsIDQwLCAxLCAwLjUsIDAuMiwgMCwgMX0sCisgICAgICB7OCwgMiwgNSwgMSwgMC41
LCAwLjIsIDAsIDB9LAorICAgICAgezUsIDIsIDAsIDEsIDAuNSwgMC4zLCAwLCAwfX07CiAKICAg
Ly8gUXVhbGl0eSBzaG91bGQgYmUgaGlnaGVyIGZvciBsb3dlciBmcmFtZXJhdGVzIGZvciB0aGUg
c2FtZSBjb250ZW50LgogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNob2xkcz4gcXVhbGl0eV90
aHJlc2hvbGRzID0gewpAQCAtMTc0LDcgKzE3Miw3IEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2
cHgsIERlbm9pc2VyT25WUDkpIHsKICAgc3RkOjp2ZWN0b3I8UmF0ZVByb2ZpbGU+IHJhdGVfcHJv
ZmlsZXMgPSB7ezUwMCwgMzAsIGtOdW1GcmFtZXNTaG9ydH19OwogCiAgIHN0ZDo6dmVjdG9yPFJh
dGVDb250cm9sVGhyZXNob2xkcz4gcmNfdGhyZXNob2xkcyA9IHsKLSAgICAgIHs1LCAxLCAwLCAw
LjExLCAwLjMsIDAuMSwgMCwgMX19OworICAgICAgezUsIDEsIDAsIDEsIDAuMywgMC4xLCAwLCAx
fX07CiAKICAgc3RkOjp2ZWN0b3I8UXVhbGl0eVRocmVzaG9sZHM+IHF1YWxpdHlfdGhyZXNob2xk
cyA9IHt7MzcuNSwgMzYsIDAuOTQsIDAuOTN9fTsKIApAQCAtMTkyLDcgKzE5MCw3IEBAIFRFU1Qo
VmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIFZlcnlMb3dCaXRyYXRlVlA5KSB7CiAgIHN0ZDo6dmVjdG9y
PFJhdGVQcm9maWxlPiByYXRlX3Byb2ZpbGVzID0ge3s1MCwgMzAsIGtOdW1GcmFtZXNMb25nfX07
CiAKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0g
ewotICAgICAgezE1LCAzLCA3NSwgMS4wLCAwLjUsIDAuNCwgMSwgMX19OworICAgICAgezE1LCAz
LCA3NSwgMSwgMC41LCAwLjQsIDEsIDF9fTsKIAogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNo
b2xkcz4gcXVhbGl0eV90aHJlc2hvbGRzID0ge3syOCwgMjUsIDAuODAsIDAuNjV9fTsKIApAQCAt
MjAyLDcgKzIwMCw3IEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIFZlcnlMb3dCaXRyYXRl
VlA5KSB7CiAvLyBUT0RPKG1hcnBhbik6IEFkZCB0ZW1wb3JhbCBsYXllciB0ZXN0IGZvciBWUDks
IG9uY2UgY2hhbmdlcyBhcmUgaW4KIC8vIHZwOSB3cmFwcGVyIGZvciB0aGlzLgogCi0jZW5kaWYg
IC8vICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyNlbmRpZiAgLy8gZGVmaW5lZChSVENfRU5B
QkxFX1ZQOSkKIAogVEVTVChWaWRlb0NvZGVjVGVzdExpYnZweCwgSGlnaEJpdHJhdGVWUDgpIHsK
ICAgYXV0byBjb25maWcgPSBDcmVhdGVDb25maWcoKTsKQEAgLTIxNiw3ICsyMTQsNyBAQCBURVNU
KFZpZGVvQ29kZWNUZXN0TGlidnB4LCBIaWdoQml0cmF0ZVZQOCkgewogICBzdGQ6OnZlY3RvcjxS
YXRlUHJvZmlsZT4gcmF0ZV9wcm9maWxlcyA9IHt7NTAwLCAzMCwga051bUZyYW1lc1Nob3J0fX07
CiAKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0g
ewotICAgICAgezUsIDEsIDAsIDAuMSwgMC4yLCAwLjEsIDAsIDF9fTsKKyAgICAgIHs1LCAxLCAw
LCAxLCAwLjIsIDAuMSwgMCwgMX19OwogCiAjaWYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk0pIHx8
IGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNNjQpCiAgIHN0ZDo6dmVjdG9yPFF1YWxpdHlUaHJlc2hv
bGRzPiBxdWFsaXR5X3RocmVzaG9sZHMgPSB7ezM1LCAzMywgMC45MSwgMC44OX19OwpAQCAtMjU1
LDkgKzI1Myw5IEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIE1BWUJFX0NoYW5nZUJpdHJh
dGVWUDgpIHsKICAgICAgIHs1MDAsIDMwLCBrTnVtRnJhbWVzTG9uZ319OwogCiAgIHN0ZDo6dmVj
dG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4gcmNfdGhyZXNob2xkcyA9IHsKLSAgICAgIHs1LCAx
LCAwLCAwLjEsIDAuMiwgMC4xLCAwLCAxfSwKLSAgICAgIHsxNS41LCAxLCAwLCAwLjEsIDAuMiwg
MC4xLCAwLCAwfSwKLSAgICAgIHsxNSwgMSwgMCwgMC4zLCAwLjIsIDAuMSwgMCwgMH19OworICAg
ICAgezUsIDEsIDAsIDEsIDAuMiwgMC4xLCAwLCAxfSwKKyAgICAgIHsxNS41LCAxLCAwLCAxLCAw
LjIsIDAuMSwgMCwgMH0sCisgICAgICB7MTUsIDEsIDAsIDEsIDAuMiwgMC4xLCAwLCAwfX07CiAK
ICNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX0FSTSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02
NCkKICAgc3RkOjp2ZWN0b3I8UXVhbGl0eVRocmVzaG9sZHM+IHF1YWxpdHlfdGhyZXNob2xkcyA9
IHsKQEAgLTI5MCwxNCArMjg4LDE0IEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgsIE1BWUJF
X0NoYW5nZUZyYW1lcmF0ZVZQOCkgewogCiAjaWYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk0pIHx8
IGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNNjQpCiAgIHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhy
ZXNob2xkcz4gcmNfdGhyZXNob2xkcyA9IHsKLSAgICAgIHsxMCwgMiwgNjAsIDAuNSwgMC4zLCAw
LjMsIDAsIDF9LAotICAgICAgezEwLCAyLCAzMCwgMC4zLCAwLjMsIDAuMywgMCwgMH0sCi0gICAg
ICB7MTAsIDIsIDEwLCAwLjIsIDAuMywgMC4yLCAwLCAwfX07CisgICAgICB7MTAsIDIsIDYwLCAx
LCAwLjMsIDAuMywgMCwgMX0sCisgICAgICB7MTAsIDIsIDMwLCAxLCAwLjMsIDAuMywgMCwgMH0s
CisgICAgICB7MTAsIDIsIDEwLCAxLCAwLjMsIDAuMiwgMCwgMH19OwogI2Vsc2UKICAgc3RkOjp2
ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAgICAgezEw
LCAyLCAyMCwgMC40LCAwLjMsIDAuMSwgMCwgMX0sCi0gICAgICB7NSwgMiwgNSwgMC4zLCAwLjMs
IDAuMSwgMCwgMH0sCi0gICAgICB7NCwgMiwgMSwgMC4yLCAwLjMsIDAuMiwgMCwgMH19OworICAg
ICAgezEwLCAyLCAyMCwgMSwgMC4zLCAwLjEsIDAsIDF9LAorICAgICAgezUsIDIsIDUsIDEsIDAu
MywgMC4xLCAwLCAwfSwKKyAgICAgIHs0LCAyLCAxLCAxLCAwLjMsIDAuMiwgMCwgMH19OwogI2Vu
ZGlmCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX0FSTSkgfHwgZGVmaW5lZChXRUJSVENfQVJD
SF9BUk02NCkKQEAgLTMyOCwxMCArMzI2LDEwIEBAIFRFU1QoVmlkZW9Db2RlY1Rlc3RMaWJ2cHgs
IE1BWUJFX1RlbXBvcmFsTGF5ZXJzVlA4KSB7CiAKICNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX0FS
TSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9BUk02NCkKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRy
b2xUaHJlc2hvbGRzPiByY190aHJlc2hvbGRzID0gewotICAgICAgezEwLCAxLCAyLCAwLjMsIDAu
MiwgMC4xLCAwLCAxfSwgezEyLCAyLCAzLCAwLjEsIDAuMiwgMC4xLCAwLCAxfX07CisgICAgICB7
MTAsIDEsIDIsIDEsIDAuMiwgMC4xLCAwLCAxfSwgezEyLCAyLCAzLCAxLCAwLjIsIDAuMSwgMCwg
MX19OwogI2Vsc2UKICAgc3RkOjp2ZWN0b3I8UmF0ZUNvbnRyb2xUaHJlc2hvbGRzPiByY190aHJl
c2hvbGRzID0gewotICAgICAgezUsIDEsIDAsIDAuMSwgMC4yLCAwLjEsIDAsIDF9LCB7MTAsIDIs
IDAsIDAuMSwgMC4yLCAwLjEsIDAsIDF9fTsKKyAgICAgIHs1LCAxLCAwLCAxLCAwLjIsIDAuMSwg
MCwgMX0sIHsxMCwgMiwgMCwgMSwgMC4yLCAwLjEsIDAsIDF9fTsKICNlbmRpZgogLy8gTWluIFNT
SU0gZHJvcHMgYmVjYXVzZSBvZiBoaWdoIG1vdGlvbiBzY2VuZSB3aXRoIGNvbXBsZXggYmFja2dv
dW5kICh0cmVlcykuCiAjaWYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk0pIHx8IGRlZmluZWQoV0VC
UlRDX0FSQ0hfQVJNNjQpCkBAIC0zNjQsNyArMzYyLDcgQEAgVEVTVChWaWRlb0NvZGVjVGVzdExp
YnZweCwgTUFZQkVfTXVsdGlyZXNWUDgpIHsKICAgc3RkOjp2ZWN0b3I8UmF0ZVByb2ZpbGU+IHJh
dGVfcHJvZmlsZXMgPSB7ezE1MDAsIDMwLCBjb25maWcubnVtX2ZyYW1lc319OwogCiAgIHN0ZDo6
dmVjdG9yPFJhdGVDb250cm9sVGhyZXNob2xkcz4gcmNfdGhyZXNob2xkcyA9IHsKLSAgICAgIHs1
LCAxLCA1LCAwLjIsIDAuMywgMC4xLCAwLCAxfX07CisgICAgICB7NSwgMSwgNSwgMSwgMC4zLCAw
LjEsIDAsIDF9fTsKICAgc3RkOjp2ZWN0b3I8UXVhbGl0eVRocmVzaG9sZHM+IHF1YWxpdHlfdGhy
ZXNob2xkcyA9IHt7MzQsIDMyLCAwLjkwLCAwLjg4fX07CiAKICAgZml4dHVyZS0+UnVuVGVzdChy
YXRlX3Byb2ZpbGVzLCAmcmNfdGhyZXNob2xkcywgJnF1YWxpdHlfdGhyZXNob2xkcywgbnVsbHB0
cik7CkBAIC00MDEsNyArMzk5LDcgQEAgVEVTVChWaWRlb0NvZGVjVGVzdExpYnZweCwgTUFZQkVf
U2ltdWxjYXN0VlA4KSB7CiAgIHN0ZDo6dmVjdG9yPFJhdGVQcm9maWxlPiByYXRlX3Byb2ZpbGVz
ID0ge3sxNTAwLCAzMCwgY29uZmlnLm51bV9mcmFtZXN9fTsKIAogICBzdGQ6OnZlY3RvcjxSYXRl
Q29udHJvbFRocmVzaG9sZHM+IHJjX3RocmVzaG9sZHMgPSB7Ci0gICAgICB7MjAsIDUsIDkwLCAw
LjgsIDAuNSwgMC4zLCAwLCAxfX07CisgICAgICB7MjAsIDUsIDkwLCAxLCAwLjUsIDAuMywgMCwg
MX19OwogICBzdGQ6OnZlY3RvcjxRdWFsaXR5VGhyZXNob2xkcz4gcXVhbGl0eV90aHJlc2hvbGRz
ID0ge3szNCwgMzIsIDAuOTAsIDAuODh9fTsKIAogICBmaXh0dXJlLT5SdW5UZXN0KHJhdGVfcHJv
ZmlsZXMsICZyY190aHJlc2hvbGRzLCAmcXVhbGl0eV90aHJlc2hvbGRzLCBudWxscHRyKTsKQEAg
LTQyNiw3ICs0MjQsNyBAQCBURVNUKFZpZGVvQ29kZWNUZXN0TGlidnB4LCBNQVlCRV9TdmNWUDkp
IHsKICAgc3RkOjp2ZWN0b3I8UmF0ZVByb2ZpbGU+IHJhdGVfcHJvZmlsZXMgPSB7ezE1MDAsIDMw
LCBjb25maWcubnVtX2ZyYW1lc319OwogCiAgIHN0ZDo6dmVjdG9yPFJhdGVDb250cm9sVGhyZXNo
b2xkcz4gcmNfdGhyZXNob2xkcyA9IHsKLSAgICAgIHs1LCAxLCA1LCAwLjIsIDAuMywgMC4xLCAw
LCAxfX07CisgICAgICB7NSwgMSwgNSwgMSwgMC4zLCAwLjEsIDAsIDF9fTsKICAgc3RkOjp2ZWN0
b3I8UXVhbGl0eVRocmVzaG9sZHM+IHF1YWxpdHlfdGhyZXNob2xkcyA9IHt7MzYsIDM0LCAwLjkz
LCAwLjkwfX07CiAKICAgZml4dHVyZS0+UnVuVGVzdChyYXRlX3Byb2ZpbGVzLCAmcmNfdGhyZXNo
b2xkcywgJnF1YWxpdHlfdGhyZXNob2xkcywgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfbWVkaWFjb2RlYy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90
ZXN0L3ZpZGVvY29kZWNfdGVzdF9tZWRpYWNvZGVjLmNjCmluZGV4IDk5YjFhZWQ4YzBhNTgwNTM2
Nzk4MDI1YThjNjU4ZjU3YjM2YjcyNDUuLmVkZmMyMTFjMjI2ZDU0OWNjMGM1OTM0ZjcyM2YzNWNl
MDc5MjZlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9t
ZWRpYWNvZGVjLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9tZWRp
YWNvZGVjLmNjCkBAIC0zMyw4ICszMyw2IEBAIFZpZGVvQ29kZWNUZXN0Rml4dHVyZTo6Q29uZmln
IENyZWF0ZUNvbmZpZygpIHsKICAgY29uZmlnLmZpbGVuYW1lID0gImZvcmVtYW5fY2lmIjsKICAg
Y29uZmlnLmZpbGVwYXRoID0gUmVzb3VyY2VQYXRoKGNvbmZpZy5maWxlbmFtZSwgInl1diIpOwog
ICBjb25maWcubnVtX2ZyYW1lcyA9IGtGb3JlbWFuTnVtRnJhbWVzOwotICBjb25maWcuaHdfZW5j
b2RlciA9IHRydWU7Ci0gIGNvbmZpZy5od19kZWNvZGVyID0gdHJ1ZTsKICAgLy8gSW4gb3JkZXIg
dG8gbm90IG92ZXJ3aGVsbSB0aGUgT3Blbk1BWCBidWZmZXJzIGluIHRoZSBBbmRyb2lkIE1lZGlh
Q29kZWMuCiAgIGNvbmZpZy5lbmNvZGVfaW5fcmVhbF90aW1lID0gdHJ1ZTsKICAgcmV0dXJuIGNv
bmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9vcGVu
aDI2NC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9vcGVuaDI2NC5jYwpp
bmRleCBlNWNmNzFiYTkwZjkwNDJlZTY5M2MxMTZkOTNiYWJhMTNlZGRlMGYzLi5iZDRiYjUyYjg1
MTkxZGM1NjBhZjNhOGQwOWM0ZTM5ZjgyYzM3MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dGVzdC92aWRlb2NvZGVjX3Rlc3Rfb3BlbmgyNjQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3Qv
dmlkZW9jb2RlY190ZXN0X29wZW5oMjY0LmNjCkBAIC0zMiw4ICszMiw2IEBAIFZpZGVvQ29kZWNU
ZXN0Rml4dHVyZTo6Q29uZmlnIENyZWF0ZUNvbmZpZygpIHsKICAgY29uZmlnLm51bV9mcmFtZXMg
PSBrTnVtRnJhbWVzOwogICAvLyBPbmx5IGFsbG93IGVuY29kZXIvZGVjb2RlciB0byB1c2Ugc2lu
Z2xlIGNvcmUsIGZvciBwcmVkaWN0YWJpbGl0eS4KICAgY29uZmlnLnVzZV9zaW5nbGVfY29yZSA9
IHRydWU7Ci0gIGNvbmZpZy5od19lbmNvZGVyID0gZmFsc2U7Ci0gIGNvbmZpZy5od19kZWNvZGVy
ID0gZmFsc2U7CiAgIHJldHVybiBjb25maWc7CiB9CiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9wYXJhbWV0ZXJpemVkLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X3BhcmFtZXRlcml6ZWQuY2MKaW5kZXgg
MGQ0OWI4MGQ5NWFmMzBjNWIyOTE0MDEzYzRhNGQ1NmM1NDlmZDkxMy4uZWZjODBhZGQyZGE1YzFk
MjM5MjM5MTcxNjlmMzAxMjQyNjYyZTJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3Qv
dmlkZW9jb2RlY190ZXN0X3BhcmFtZXRlcml6ZWQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3Qv
dmlkZW9jb2RlY190ZXN0X3BhcmFtZXRlcml6ZWQuY2MKQEAgLTIwLDcgKzIwLDYgQEAgbmFtZXNw
YWNlIHsKIC8vIExvb3AgdmFyaWFibGVzLgogY29uc3Qgc2l6ZV90IGtCaXRyYXRlc1tdID0gezUw
MH07CiBjb25zdCBWaWRlb0NvZGVjVHlwZSBrVmlkZW9Db2RlY1R5cGVbXSA9IHtrVmlkZW9Db2Rl
Y1ZQOH07Ci1jb25zdCBib29sIGtId0NvZGVjW10gPSB7ZmFsc2V9OwogCiAvLyBDb2RlYyBzZXR0
aW5ncy4KIGNvbnN0IGludCBrTnVtU3BhdGlhbExheWVycyA9IDE7CkBAIC0zOSwxMiArMzgsMTEg
QEAgY29uc3QgaW50IGtOdW1GcmFtZXMgPSAzMDsKIGNsYXNzIFZpZGVvQ29kZWNUZXN0UGFyYW1l
dGVyaXplZAogICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCwKICAgICAgIHB1YmxpYyA6OnRl
c3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTwKLSAgICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHNp
emVfdCwgVmlkZW9Db2RlY1R5cGUsIGJvb2w+PiB7CisgICAgICAgICAgOjp0ZXN0aW5nOjp0dXBs
ZTxzaXplX3QsIFZpZGVvQ29kZWNUeXBlPj4gewogIHByb3RlY3RlZDoKICAgVmlkZW9Db2RlY1Rl
c3RQYXJhbWV0ZXJpemVkKCkKICAgICAgIDogYml0cmF0ZV8oOjp0ZXN0aW5nOjpnZXQ8MD4oR2V0
UGFyYW0oKSkpLAotICAgICAgICBjb2RlY190eXBlXyg6OnRlc3Rpbmc6OmdldDwxPihHZXRQYXJh
bSgpKSksCi0gICAgICAgIGh3X2NvZGVjXyg6OnRlc3Rpbmc6OmdldDwyPihHZXRQYXJhbSgpKSkg
e30KKyAgICAgICAgY29kZWNfdHlwZV8oOjp0ZXN0aW5nOjpnZXQ8MT4oR2V0UGFyYW0oKSkpIHt9
CiAgIH5WaWRlb0NvZGVjVGVzdFBhcmFtZXRlcml6ZWQoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAK
ICAgdm9pZCBSdW5UZXN0KHNpemVfdCB3aWR0aCwKQEAgLTU2LDggKzU0LDYgQEAgY2xhc3MgVmlk
ZW9Db2RlY1Rlc3RQYXJhbWV0ZXJpemVkCiAgICAgY29uZmlnLmZpbGVwYXRoID0gUmVzb3VyY2VQ
YXRoKGZpbGVuYW1lLCAieXV2Iik7CiAgICAgY29uZmlnLnVzZV9zaW5nbGVfY29yZSA9IGtVc2VT
aW5nbGVDb3JlOwogICAgIGNvbmZpZy5tZWFzdXJlX2NwdSA9IGtNZWFzdXJlQ3B1OwotICAgIGNv
bmZpZy5od19lbmNvZGVyID0gaHdfY29kZWNfOwotICAgIGNvbmZpZy5od19kZWNvZGVyID0gaHdf
Y29kZWNfOwogICAgIGNvbmZpZy5udW1fZnJhbWVzID0ga051bUZyYW1lczsKIAogICAgIGNvbnN0
IHNpemVfdCBudW1fc2ltdWxjYXN0X3N0cmVhbXMgPQpAQCAtODAsMTQgKzc2LDEzIEBAIGNsYXNz
IFZpZGVvQ29kZWNUZXN0UGFyYW1ldGVyaXplZAogICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9Db2Rl
Y1Rlc3RGaXh0dXJlPiBmaXh0dXJlXzsKICAgY29uc3Qgc2l6ZV90IGJpdHJhdGVfOwogICBjb25z
dCBWaWRlb0NvZGVjVHlwZSBjb2RlY190eXBlXzsKLSAgY29uc3QgYm9vbCBod19jb2RlY187CiB9
OwogCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChDb2RlY1NldHRpbmdzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgVmlkZW9Db2RlY1Rlc3RQYXJhbWV0ZXJpemVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgOjp0ZXN0aW5nOjpDb21iaW5lKDo6dGVzdGluZzo6VmFsdWVzSW4oa0JpdHJhdGVz
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6
OlZhbHVlc0luKGtWaWRlb0NvZGVjVHlwZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXNJbihrSHdDb2RlYykpKTsKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKAorICAgIENvZGVjU2V0dGluZ3MsCisgICAgVmlkZW9Db2RlY1Rlc3RQ
YXJhbWV0ZXJpemVkLAorICAgIDo6dGVzdGluZzo6Q29tYmluZSg6OnRlc3Rpbmc6OlZhbHVlc0lu
KGtCaXRyYXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4o
a1ZpZGVvQ29kZWNUeXBlKSkpOwogCiBURVNUX1AoVmlkZW9Db2RlY1Rlc3RQYXJhbWV0ZXJpemVk
LCBGb3JlbWFuXzM1MngyODhfMzApIHsKICAgUnVuVGVzdCgzNTIsIDI4OCwgMzAsICJmb3JlbWFu
X2NpZiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X3Zp
ZGVvdG9vbGJveC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvY29kZWNfdGVzdF92aWRlb3Rv
b2xib3guY2MKaW5kZXggZjMxZmY1NDhhODEyNTViZWM0NDU5NzNlYzc1MGMzNjcwMzI4ZjA1Ny4u
NmRmYjk5M2NlODgxYzdlZWVkNDZjODE2NGVmMWRiODg2NWI0ZDZhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL3Rlc3QvdmlkZW9jb2RlY190ZXN0X3ZpZGVvdG9vbGJveC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvdGVzdC92aWRlb2NvZGVjX3Rlc3RfdmlkZW90b29sYm94LmNjCkBAIC0yOCw4ICsy
OCw2IEBAIFZpZGVvQ29kZWNUZXN0Rml4dHVyZTo6Q29uZmlnIENyZWF0ZUNvbmZpZygpIHsKICAg
Y29uZmlnLmZpbGVuYW1lID0gImZvcmVtYW5fY2lmIjsKICAgY29uZmlnLmZpbGVwYXRoID0gUmVz
b3VyY2VQYXRoKGNvbmZpZy5maWxlbmFtZSwgInl1diIpOwogICBjb25maWcubnVtX2ZyYW1lcyA9
IGtGb3JlbWFuTnVtRnJhbWVzOwotICBjb25maWcuaHdfZW5jb2RlciA9IHRydWU7Ci0gIGNvbmZp
Zy5od19kZWNvZGVyID0gdHJ1ZTsKICAgcmV0dXJuIGNvbmZpZzsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9wcm9jZXNzb3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92
aWRlb3Byb2Nlc3Nvci5jYwppbmRleCA1ZTk4MGNkY2YxYWNjODE1NWY4NDFlNGY3ZTA0Nzc5M2Jh
MjA2ZDc0Li42OTU4MjY2MGY5MTE4OGJhYjgwOWRhZTM0NDE0OWYxYTZmYzlmNWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb3Byb2Nlc3Nvci5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdGVzdC92aWRlb3Byb2Nlc3Nvci5jYwpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgPGxp
bWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5f
dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlby9p
NDIwX2J1ZmZlci5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxk
L2luY2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvaDI2NF9jb21tb24uaCIKQEAg
LTE3Myw4ICsxNzQsOSBAQCBWaWRlb1Byb2Nlc3Nvcjo6VmlkZW9Qcm9jZXNzb3Iod2VicnRjOjpW
aWRlb0VuY29kZXIqIGVuY29kZXIsCiAgICAgICBzdGF0c18oc3RhdHMpLAogICAgICAgZW5jb2Rl
cl8oZW5jb2RlciksCiAgICAgICBkZWNvZGVyc18oZGVjb2RlcnMpLAotICAgICAgYml0cmF0ZV9h
bGxvY2F0b3JfKFZpZGVvQ29kZWNJbml0aWFsaXplcjo6Q3JlYXRlQml0cmF0ZUFsbG9jYXRvcigK
LSAgICAgICAgICBjb25maWdfLmNvZGVjX3NldHRpbmdzKSksCisgICAgICBiaXRyYXRlX2FsbG9j
YXRvcl8oCisgICAgICAgICAgQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rv
cnkoKQorICAgICAgICAgICAgICAtPkNyZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRvcihjb25maWdf
LmNvZGVjX3NldHRpbmdzKSksCiAgICAgICBmcmFtZXJhdGVfZnBzXygwKSwKICAgICAgIGVuY29k
ZV9jYWxsYmFja18odGhpcyksCiAgICAgICBpbnB1dF9mcmFtZV9yZWFkZXJfKGlucHV0X2ZyYW1l
X3JlYWRlciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdGVzdC92aWRlb3Byb2Nlc3Nvcl91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0L3ZpZGVvcHJvY2Vzc29yX3VuaXR0ZXN0LmNj
CmluZGV4IDU4OWEzZDg5OGE4ZWU0ODhhNDAxNmViNjIzYzllYWQ0Mzg1NGE1NzguLjNkNDFhZDk5
OGZlYmZjNjIwNjM3ODdjYTBiZDM1ZmRlMThmN2YzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy90ZXN0L3ZpZGVvcHJvY2Vzc29yX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy90ZXN0
L3ZpZGVvcHJvY2Vzc29yX3VuaXR0ZXN0LmNjCkBAIC0xMSwxMyArMTEsMTQgQEAKICNpbmNsdWRl
IDxtZW1vcnk+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJh
cGkvdGVzdC9tb2NrX3ZpZGVvX2RlY29kZXIuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX3Zp
ZGVvX2VuY29kZXIuaCIKICNpbmNsdWRlICJhcGkvdGVzdC92aWRlb2NvZGVjX3Rlc3RfZml4dHVy
ZS5oIgogI2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZlci5oIgogI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibWVkaWEvYmFz
ZS9tZWRpYWNvbnN0YW50cy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy90ZXN0L3ZpZGVvY29kZWNfdGVzdF9zdGF0c19pbXBsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9wcm9jZXNzb3IuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL21vY2svbW9ja192aWRlb19jb2RlY19pbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGFza19x
dWV1ZV9mb3JfdGVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZhdWx0X3Rl
bXBvcmFsX2xheWVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXll
cnMuY2MKaW5kZXggZDUzZjQ2OTk0ZDM2MDhlZjM5ZTNlMDZlNjFlZGFmYWFjM2E5Yjg3NS4uYzVl
MTYzZmNmNzIwYjhiMjhlYzk4Mjc1MzIxNzc0NzM1YTkwNzczNCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmNjCkBAIC03LDggKzcsNiBAQAogICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgog
ICovCiAKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRf
dGVtcG9yYWxfbGF5ZXJzLmgiCi0KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJp
bmcuaD4KIApAQCAtMjAsNiArMTgsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUg
Im1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCisjaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZhdWx0X3RlbXBvcmFsX2xheWVycy5oIgogI2lu
Y2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgpAQCAtMjcsMjcgKzI2LDMwIEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1UZW1w
b3JhbExheWVyczo6RnJhbWVDb25maWc6OkZyYW1lQ29uZmlnKCkKK1ZwOFRlbXBvcmFsTGF5ZXJz
OjpGcmFtZUNvbmZpZzo6RnJhbWVDb25maWcoKQogICAgIDogRnJhbWVDb25maWcoa05vbmUsIGtO
b25lLCBrTm9uZSwgZmFsc2UpIHt9CiAKLVRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZzo6RnJh
bWVDb25maWcoVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGxhc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBn
b2xkZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBvcmFs
TGF5ZXJzOjpCdWZmZXJGbGFncyBhcmYpCitWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc6
OkZyYW1lQ29uZmlnKAorICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBsYXN0LAor
ICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBnb2xkZW4sCisgICAgVnA4VGVtcG9y
YWxMYXllcnM6OkJ1ZmZlckZsYWdzIGFyZikKICAgICA6IEZyYW1lQ29uZmlnKGxhc3QsIGdvbGRl
biwgYXJmLCBmYWxzZSkge30KIAotVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnOjpGcmFtZUNv
bmZpZyhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgbGFzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGdvbGRl
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcG9yYWxMYXll
cnM6OkJ1ZmZlckZsYWdzIGFyZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRnJlZXplRW50cm9weSkKK1ZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZzo6RnJh
bWVDb25maWcoCisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGxhc3QsCisgICAg
VnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGdvbGRlbiwKKyAgICBWcDhUZW1wb3JhbExh
eWVyczo6QnVmZmVyRmxhZ3MgYXJmLAorICAgIEZyZWV6ZUVudHJvcHkpCiAgICAgOiBGcmFtZUNv
bmZpZyhsYXN0LCBnb2xkZW4sIGFyZiwgdHJ1ZSkge30KIAotVGVtcG9yYWxMYXllcnM6OkZyYW1l
Q29uZmlnOjpGcmFtZUNvbmZpZyhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MgbGFzdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcG9yYWxMYXllcnM6OkJ1
ZmZlckZsYWdzIGdvbGRlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGFyZiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcmVlemVfZW50cm9weSkKLSAgICA6IGRyb3BfZnJh
bWUobGFzdCA9PSBUZW1wb3JhbExheWVyczo6a05vbmUgJiYKLSAgICAgICAgICAgICAgICAgZ29s
ZGVuID09IFRlbXBvcmFsTGF5ZXJzOjprTm9uZSAmJgotICAgICAgICAgICAgICAgICBhcmYgPT0g
VGVtcG9yYWxMYXllcnM6OmtOb25lKSwKK1ZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZzo6
RnJhbWVDb25maWcoCisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGxhc3QsCisg
ICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGdvbGRlbiwKKyAgICBWcDhUZW1wb3Jh
bExheWVyczo6QnVmZmVyRmxhZ3MgYXJmLAorICAgIGJvb2wgZnJlZXplX2VudHJvcHkpCisgICAg
OiBkcm9wX2ZyYW1lKGxhc3QgPT0gVnA4VGVtcG9yYWxMYXllcnM6OmtOb25lICYmCisgICAgICAg
ICAgICAgICAgIGdvbGRlbiA9PSBWcDhUZW1wb3JhbExheWVyczo6a05vbmUgJiYKKyAgICAgICAg
ICAgICAgICAgYXJmID09IFZwOFRlbXBvcmFsTGF5ZXJzOjprTm9uZSksCiAgICAgICBsYXN0X2J1
ZmZlcl9mbGFncyhsYXN0KSwKICAgICAgIGdvbGRlbl9idWZmZXJfZmxhZ3MoZ29sZGVuKSwKICAg
ICAgIGFyZl9idWZmZXJfZmxhZ3MoYXJmKSwKQEAgLTEwNiwxNSArMTA4LDE1IEBAIHN0ZDo6dmVj
dG9yPHVuc2lnbmVkIGludD4gR2V0VGVtcG9yYWxJZHMoc2l6ZV90IG51bV9sYXllcnMpIHsKICAg
cmV0dXJuIHswfTsKIH0KIAotdWludDhfdCBHZXRVcGRhdGVkQnVmZmVycyhjb25zdCBUZW1wb3Jh
bExheWVyczo6RnJhbWVDb25maWcmIGNvbmZpZykgewordWludDhfdCBHZXRVcGRhdGVkQnVmZmVy
cyhjb25zdCBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcmIGNvbmZpZykgewogICB1aW50
OF90IGZsYWdzID0gMDsKLSAgaWYgKGNvbmZpZy5sYXN0X2J1ZmZlcl9mbGFncyAmIFRlbXBvcmFs
TGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkgeworICBpZiAoY29uZmlnLmxhc3RfYnVmZmVy
X2ZsYWdzICYgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7CiAgICAg
ZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVnA4QnVmZmVyUmVmZXJlbmNlOjprTGFzdCk7
CiAgIH0KLSAgaWYgKGNvbmZpZy5nb2xkZW5fYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6
OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7CisgIGlmIChjb25maWcuZ29sZGVuX2J1ZmZlcl9mbGFn
cyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkgewogICAgIGZsYWdz
IHw9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFZwOEJ1ZmZlclJlZmVyZW5jZTo6a0dvbGRlbik7CiAg
IH0KLSAgaWYgKGNvbmZpZy5hcmZfYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OkJ1ZmZl
ckZsYWdzOjprVXBkYXRlKSB7CisgIGlmIChjb25maWcuYXJmX2J1ZmZlcl9mbGFncyAmIFZwOFRl
bXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkgewogICAgIGZsYWdzIHw9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KFZwOEJ1ZmZlclJlZmVyZW5jZTo6a0FsdHJlZik7CiAgIH0KICAgcmV0
dXJuIGZsYWdzOwpAQCAtMTIyLDEwICsxMjQsMTAgQEAgdWludDhfdCBHZXRVcGRhdGVkQnVmZmVy
cyhjb25zdCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcmIGNvbmZpZykgewogCiAvLyBGaW5k
IHRoZSBzZXQgb2YgYnVmZmVycyB0aGF0IGFyZSBuZXZlciB1cGRhdGVkIGJ5IHRoZSBnaXZlbiBw
YXR0ZXJuLgogc3RkOjpzZXQ8VnA4QnVmZmVyUmVmZXJlbmNlPiBGaW5kS2ZCdWZmZXJzKAotICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZz4mIGZyYW1lX2Nv
bmZpZ3MpIHsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxWcDhUZW1wb3JhbExheWVyczo6RnJhbWVD
b25maWc+JiBmcmFtZV9jb25maWdzKSB7CiAgIHN0ZDo6c2V0PFZwOEJ1ZmZlclJlZmVyZW5jZT4g
a2ZfYnVmZmVycyhrQWxsQnVmZmVycy5iZWdpbigpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0FsbEJ1ZmZlcnMuZW5kKCkpOwotICBmb3IgKFRlbXBvcmFsTGF5
ZXJzOjpGcmFtZUNvbmZpZyBjb25maWcgOiBmcmFtZV9jb25maWdzKSB7CisgIGZvciAoVnA4VGVt
cG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIGNvbmZpZyA6IGZyYW1lX2NvbmZpZ3MpIHsKICAgICAv
LyBHZXQgYml0LW1hc2tlZCBzZXQgb2YgdXBkYXRlIGJ1ZmZlcnMgZm9yIHRoaXMgZnJhbWUgY29u
ZmlnLgogICAgIHVpbnQ4X3QgdXBkYXRlZF9idWZmZXJzID0gR2V0VXBkYXRlZEJ1ZmZlcnMoY29u
ZmlnKTsKICAgICBmb3IgKFZwOEJ1ZmZlclJlZmVyZW5jZSBidWZmZXIgOiBrQWxsQnVmZmVycykg
ewpAQCAtMTM4LDcgKzE0MCw3IEBAIHN0ZDo6c2V0PFZwOEJ1ZmZlclJlZmVyZW5jZT4gRmluZEtm
QnVmZmVycygKIH0KIH0gIC8vIG5hbWVzcGFjZQogCi1zdGQ6OnZlY3RvcjxUZW1wb3JhbExheWVy
czo6RnJhbWVDb25maWc+CitzdGQ6OnZlY3RvcjxWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25m
aWc+CiBEZWZhdWx0VGVtcG9yYWxMYXllcnM6OkdldFRlbXBvcmFsUGF0dGVybihzaXplX3QgbnVt
X2xheWVycykgewogICAvLyBGb3IgaW5kZXhpbmcgaW4gdGhlIHBhdHRlcm5zIGRlc2NyaWJlZCBi
ZWxvdyAod2hpY2ggdGVtcG9yYWwgbGF5ZXJzIHRoZXkKICAgLy8gYmVsb25nIHRvKSwgc2VlIHRo
ZSBkaWFncmFtIGFib3ZlLgpAQCAtMjYyLDcgKzI2NCw3IEBAIERlZmF1bHRUZW1wb3JhbExheWVy
czo6RGVmYXVsdFRlbXBvcmFsTGF5ZXJzKGludCBudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzKQog
ICAgICAga2ZfYnVmZmVyc18oRmluZEtmQnVmZmVycyh0ZW1wb3JhbF9wYXR0ZXJuXykpLAogICAg
ICAgcGF0dGVybl9pZHhfKGtVbmluaXRpYWxpemVkUGF0dGVybkluZGV4KSwKICAgICAgIGNoZWNr
ZXJfKFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q3JlYXRlVGVtcG9yYWxMYXllcnNDaGVja2VyKAot
ICAgICAgICAgIFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybiwKKyAgICAgICAgICBW
cDhUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBhdHRlcm4sCiAgICAgICAgICAgbnVtYmVyX29m
X3RlbXBvcmFsX2xheWVycykpIHsKICAgUlRDX0NIRUNLX0dFKGtNYXhUZW1wb3JhbFN0cmVhbXMs
IG51bWJlcl9vZl90ZW1wb3JhbF9sYXllcnMpOwogICBSVENfQ0hFQ0tfR0UobnVtYmVyX29mX3Rl
bXBvcmFsX2xheWVycywgMCk7CkBAIC0yNzgsNiArMjgwLDggQEAgRGVmYXVsdFRlbXBvcmFsTGF5
ZXJzOjpEZWZhdWx0VGVtcG9yYWxMYXllcnMoaW50IG51bWJlcl9vZl90ZW1wb3JhbF9sYXllcnMp
CiAgIH0KIH0KIAorRGVmYXVsdFRlbXBvcmFsTGF5ZXJzOjp+RGVmYXVsdFRlbXBvcmFsTGF5ZXJz
KCkgPSBkZWZhdWx0OworCiBib29sIERlZmF1bHRUZW1wb3JhbExheWVyczo6U3VwcG9ydHNFbmNv
ZGVyRnJhbWVEcm9wcGluZygpIGNvbnN0IHsKICAgLy8gVGhpcyBjbGFzcyBhbGxvd3MgdGhlIGVu
Y29kZXIgZHJvcCBmcmFtZXMgYXMgaXQgc2VlcyBmaXQuCiAgIHJldHVybiB0cnVlOwpAQCAtMzQ2
LDEzICszNTAsMTMgQEAgYm9vbCBEZWZhdWx0VGVtcG9yYWxMYXllcnM6OklzU3luY0ZyYW1lKGNv
bnN0IEZyYW1lQ29uZmlnJiBjb25maWcpIGNvbnN0IHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLVRl
bXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyBEZWZhdWx0VGVtcG9yYWxMYXllcnM6OlVwZGF0ZUxh
eWVyQ29uZmlnKAorVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIERlZmF1bHRUZW1wb3Jh
bExheWVyczo6VXBkYXRlTGF5ZXJDb25maWcoCiAgICAgdWludDMyX3QgdGltZXN0YW1wKSB7CiAg
IFJUQ19EQ0hFQ0tfR1QobnVtX2xheWVyc18sIDApOwogICBSVENfRENIRUNLX0xUKDAsIHRlbXBv
cmFsX3BhdHRlcm5fLnNpemUoKSk7CiAKICAgcGF0dGVybl9pZHhfID0gKHBhdHRlcm5faWR4XyAr
IDEpICUgdGVtcG9yYWxfcGF0dGVybl8uc2l6ZSgpOwotICBUZW1wb3JhbExheWVyczo6RnJhbWVD
b25maWcgdGxfY29uZmlnID0gdGVtcG9yYWxfcGF0dGVybl9bcGF0dGVybl9pZHhfXTsKKyAgVnA4
VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRlbXBvcmFsX3BhdHRlcm5f
W3BhdHRlcm5faWR4X107CiAgIHRsX2NvbmZpZy5lbmNvZGVyX2xheWVyX2lkID0gdGxfY29uZmln
LnBhY2tldGl6ZXJfdGVtcG9yYWxfaWR4ID0KICAgICAgIHRlbXBvcmFsX2lkc19bcGF0dGVybl9p
ZHhfICUgdGVtcG9yYWxfaWRzXy5zaXplKCldOwogCkBAIC01NjAsOSArNTY0LDExIEBAIERlZmF1
bHRUZW1wb3JhbExheWVyc0NoZWNrZXI6OkRlZmF1bHRUZW1wb3JhbExheWVyc0NoZWNrZXIoCiAg
IH0KIH0KIAorRGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6fkRlZmF1bHRUZW1wb3JhbExh
eWVyc0NoZWNrZXIoKSA9IGRlZmF1bHQ7CisKIGJvb2wgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hl
Y2tlcjo6Q2hlY2tUZW1wb3JhbENvbmZpZygKICAgICBib29sIGZyYW1lX2lzX2tleWZyYW1lLAot
ICAgIGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgZnJhbWVfY29uZmlnKSB7Cisg
ICAgY29uc3QgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJiBmcmFtZV9jb25maWcpIHsK
ICAgaWYgKCFUZW1wb3JhbExheWVyc0NoZWNrZXI6OkNoZWNrVGVtcG9yYWxDb25maWcoZnJhbWVf
aXNfa2V5ZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lX2NvbmZpZykpIHsKICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTMsNyArNjE5
LDcgQEAgYm9vbCBEZWZhdWx0VGVtcG9yYWxMYXllcnNDaGVja2VyOjpDaGVja1RlbXBvcmFsQ29u
ZmlnKAogICBzdGQ6OnZlY3RvcjxpbnQ+IGRlcGVuZGVuY2llczsKIAogICBpZiAoZnJhbWVfY29u
ZmlnLmxhc3RfYnVmZmVyX2ZsYWdzICYKLSAgICAgIFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFn
czo6a1JlZmVyZW5jZSkgeworICAgICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjpr
UmVmZXJlbmNlKSB7CiAgICAgdWludDhfdCByZWZlcmVuY2VkX2xheWVyID0gdGVtcG9yYWxfaWRz
X1tsYXN0Xy5wYXR0ZXJuX2lkeF07CiAgICAgaWYgKHJlZmVyZW5jZWRfbGF5ZXIgPiAwKSB7CiAg
ICAgICBuZWVkX3N5bmMgPSBmYWxzZTsKQEAgLTYyOCw3ICs2MzQsOCBAQCBib29sIERlZmF1bHRU
ZW1wb3JhbExheWVyc0NoZWNrZXI6OkNoZWNrVGVtcG9yYWxDb25maWcoCiAgICAgcmV0dXJuIGZh
bHNlOwogICB9CiAKLSAgaWYgKGZyYW1lX2NvbmZpZy5hcmZfYnVmZmVyX2ZsYWdzICYgVGVtcG9y
YWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprUmVmZXJlbmNlKSB7CisgIGlmIChmcmFtZV9jb25maWcu
YXJmX2J1ZmZlcl9mbGFncyAmCisgICAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6
OmtSZWZlcmVuY2UpIHsKICAgICB1aW50OF90IHJlZmVyZW5jZWRfbGF5ZXIgPSB0ZW1wb3JhbF9p
ZHNfW2FyZl8ucGF0dGVybl9pZHhdOwogICAgIGlmIChyZWZlcmVuY2VkX2xheWVyID4gMCkgewog
ICAgICAgbmVlZF9zeW5jID0gZmFsc2U7CkBAIC02NDQsNyArNjUxLDcgQEAgYm9vbCBEZWZhdWx0
VGVtcG9yYWxMYXllcnNDaGVja2VyOjpDaGVja1RlbXBvcmFsQ29uZmlnKAogICB9CiAKICAgaWYg
KGZyYW1lX2NvbmZpZy5nb2xkZW5fYnVmZmVyX2ZsYWdzICYKLSAgICAgIFRlbXBvcmFsTGF5ZXJz
OjpCdWZmZXJGbGFnczo6a1JlZmVyZW5jZSkgeworICAgICAgVnA4VGVtcG9yYWxMYXllcnM6OkJ1
ZmZlckZsYWdzOjprUmVmZXJlbmNlKSB7CiAgICAgdWludDhfdCByZWZlcmVuY2VkX2xheWVyID0g
dGVtcG9yYWxfaWRzX1tnb2xkZW5fLnBhdHRlcm5faWR4XTsKICAgICBpZiAocmVmZXJlbmNlZF9s
YXllciA+IDApIHsKICAgICAgIG5lZWRfc3luYyA9IGZhbHNlOwpAQCAtNjgwLDE3ICs2ODcsMTkg
QEAgYm9vbCBEZWZhdWx0VGVtcG9yYWxMYXllcnNDaGVja2VyOjpDaGVja1RlbXBvcmFsQ29uZmln
KAogICAgIH0KICAgfQogCi0gIGlmIChmcmFtZV9jb25maWcubGFzdF9idWZmZXJfZmxhZ3MgJiBU
ZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtVcGRhdGUpIHsKKyAgaWYgKGZyYW1lX2NvbmZp
Zy5sYXN0X2J1ZmZlcl9mbGFncyAmCisgICAgICBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxh
Z3M6OmtVcGRhdGUpIHsKICAgICBsYXN0Xy5pc191cGRhdGVkX3RoaXNfY3ljbGUgPSB0cnVlOwog
ICAgIGxhc3RfLnBhdHRlcm5faWR4ID0gcGF0dGVybl9pZHhfOwogICAgIGxhc3RfLmlzX2tleWZy
YW1lID0gZmFsc2U7CiAgIH0KLSAgaWYgKGZyYW1lX2NvbmZpZy5hcmZfYnVmZmVyX2ZsYWdzICYg
VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOjprVXBkYXRlKSB7CisgIGlmIChmcmFtZV9jb25m
aWcuYXJmX2J1ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1Vw
ZGF0ZSkgewogICAgIGFyZl8uaXNfdXBkYXRlZF90aGlzX2N5Y2xlID0gdHJ1ZTsKICAgICBhcmZf
LnBhdHRlcm5faWR4ID0gcGF0dGVybl9pZHhfOwogICAgIGFyZl8uaXNfa2V5ZnJhbWUgPSBmYWxz
ZTsKICAgfQotICBpZiAoZnJhbWVfY29uZmlnLmdvbGRlbl9idWZmZXJfZmxhZ3MgJiBUZW1wb3Jh
bExheWVyczo6QnVmZmVyRmxhZ3M6OmtVcGRhdGUpIHsKKyAgaWYgKGZyYW1lX2NvbmZpZy5nb2xk
ZW5fYnVmZmVyX2ZsYWdzICYKKyAgICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6
a1VwZGF0ZSkgewogICAgIGdvbGRlbl8uaXNfdXBkYXRlZF90aGlzX2N5Y2xlID0gdHJ1ZTsKICAg
ICBnb2xkZW5fLnBhdHRlcm5faWR4ID0gcGF0dGVybl9pZHhfOwogICAgIGdvbGRlbl8uaXNfa2V5
ZnJhbWUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1w
b3JhbF9sYXllcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9sYXllcnMu
aAppbmRleCBiZGE0M2NkNmQ5M2I0MTRiYmU3YTRiYWFhNWJkMjY2MWZjNzQ5ZDZiLi5mZmY2MmE1
NTdkMzZlMGRlOWZmZGFiZmIwY2NkMDA4MTUzMjAyMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9k
ZWZhdWx0X3RlbXBvcmFsX2xheWVycy5oCkBAIC0xOCwyMyArMTgsMjMgQEAKICNpbmNsdWRlIDxz
ZXQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOC9pbmNsdWRlL3RlbXBvcmFsX2xheWVyc19jaGVja2VyLmgiCi0jaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXll
cnMuaCIKLQogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKIAorI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgIm1vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS90ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5o
IgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAotY2xhc3MgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzIDog
cHVibGljIFRlbXBvcmFsTGF5ZXJzIHsKK2NsYXNzIERlZmF1bHRUZW1wb3JhbExheWVycyA6IHB1
YmxpYyBWcDhUZW1wb3JhbExheWVycyB7CiAgcHVibGljOgogICBleHBsaWNpdCBEZWZhdWx0VGVt
cG9yYWxMYXllcnMoaW50IG51bWJlcl9vZl90ZW1wb3JhbF9sYXllcnMpOwotICB2aXJ0dWFsIH5E
ZWZhdWx0VGVtcG9yYWxMYXllcnMoKSB7fQorICB+RGVmYXVsdFRlbXBvcmFsTGF5ZXJzKCkgb3Zl
cnJpZGU7CiAKICAgYm9vbCBTdXBwb3J0c0VuY29kZXJGcmFtZURyb3BwaW5nKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgLy8gUmV0dXJucyB0aGUgcmVjb21tZW5kZWQgVlA4IGVuY29kZSBmbGFncyBu
ZWVkZWQuIE1heSByZWZyZXNoIHRoZSBkZWNvZGVyCiAgIC8vIGFuZC9vciB1cGRhdGUgdGhlIHJl
ZmVyZW5jZSBidWZmZXJzLgotICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgVXBkYXRlTGF5
ZXJDb25maWcodWludDMyX3QgdGltZXN0YW1wKSBvdmVycmlkZTsKKyAgVnA4VGVtcG9yYWxMYXll
cnM6OkZyYW1lQ29uZmlnIFVwZGF0ZUxheWVyQ29uZmlnKHVpbnQzMl90IHRpbWVzdGFtcCkgb3Zl
cnJpZGU7CiAKICAgLy8gTmV3IHRhcmdldCBiaXRyYXRlLCBwZXIgdGVtcG9yYWwgbGF5ZXIuCiAg
IHZvaWQgT25SYXRlc1VwZGF0ZWQoY29uc3Qgc3RkOjp2ZWN0b3I8dWludDMyX3Q+JiBiaXRyYXRl
c19icHMsCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIERlZmF1bHRUZW1wb3JhbExheWVycyA6IHB1
YmxpYyBUZW1wb3JhbExheWVycyB7CiAKICBwcml2YXRlOgogICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBrS2V5ZnJhbWVCdWZmZXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
OwotICBzdGF0aWMgc3RkOjp2ZWN0b3I8VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnPiBHZXRU
ZW1wb3JhbFBhdHRlcm4oCisgIHN0YXRpYyBzdGQ6OnZlY3RvcjxWcDhUZW1wb3JhbExheWVyczo6
RnJhbWVDb25maWc+IEdldFRlbXBvcmFsUGF0dGVybigKICAgICAgIHNpemVfdCBudW1fbGF5ZXJz
KTsKICAgYm9vbCBJc1N5bmNGcmFtZShjb25zdCBGcmFtZUNvbmZpZyYgY29uZmlnKSBjb25zdDsK
ICAgdm9pZCBWYWxpZGF0ZVJlZmVyZW5jZXMoQnVmZmVyRmxhZ3MqIGZsYWdzLCBWcDhCdWZmZXJS
ZWZlcmVuY2UgcmVmKSBjb25zdDsKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgRGVmYXVsdFRlbXBv
cmFsTGF5ZXJzIDogcHVibGljIFRlbXBvcmFsTGF5ZXJzIHsKIAogICBjb25zdCBzaXplX3QgbnVt
X2xheWVyc187CiAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGludD4gdGVtcG9yYWxfaWRz
XzsKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnPiB0ZW1w
b3JhbF9wYXR0ZXJuXzsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8VnA4VGVtcG9yYWxMYXllcnM6OkZy
YW1lQ29uZmlnPiB0ZW1wb3JhbF9wYXR0ZXJuXzsKICAgLy8gU2V0IG9mIGJ1ZmZlcnMgdGhhdCBh
cmUgbmV2ZXIgdXBkYXRlZCBleGNlcHQgYnkga2V5ZnJhbWVzLgogICBjb25zdCBzdGQ6OnNldDxW
cDhCdWZmZXJSZWZlcmVuY2U+IGtmX2J1ZmZlcnNfOwogCkBAIC05NSw5ICs5NSwxMSBAQCBjbGFz
cyBEZWZhdWx0VGVtcG9yYWxMYXllcnMgOiBwdWJsaWMgVGVtcG9yYWxMYXllcnMgewogY2xhc3Mg
RGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlciA6IHB1YmxpYyBUZW1wb3JhbExheWVyc0NoZWNr
ZXIgewogIHB1YmxpYzoKICAgZXhwbGljaXQgRGVmYXVsdFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcihp
bnQgbnVtYmVyX29mX3RlbXBvcmFsX2xheWVycyk7CisgIH5EZWZhdWx0VGVtcG9yYWxMYXllcnND
aGVja2VyKCkgb3ZlcnJpZGU7CisKICAgYm9vbCBDaGVja1RlbXBvcmFsQ29uZmlnKAogICAgICAg
Ym9vbCBmcmFtZV9pc19rZXlmcmFtZSwKLSAgICAgIGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFt
ZUNvbmZpZyYgZnJhbWVfY29uZmlnKSBvdmVycmlkZTsKKyAgICAgIGNvbnN0IFZwOFRlbXBvcmFs
TGF5ZXJzOjpGcmFtZUNvbmZpZyYgZnJhbWVfY29uZmlnKSBvdmVycmlkZTsKIAogIHByaXZhdGU6
CiAgIHN0cnVjdCBCdWZmZXJTdGF0ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2Rl
ZmF1bHRfdGVtcG9yYWxfbGF5ZXJzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9kZWZh
dWx0X3RlbXBvcmFsX2xheWVyc191bml0dGVzdC5jYwppbmRleCBhZDMxYTZlZjRhMGFlY2JiMzMy
YjEwMTU2ZmU5ZDc5OTg4ZmQwZjFjLi41ZWU2NTIwNTVjZWE1MTc3ODJiM2NjZWRjZjA5OTQzZGFm
NzFjN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2RlZmF1bHRfdGVtcG9yYWxfbGF5
ZXJzX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvZGVmYXVsdF90ZW1wb3JhbF9s
YXllcnNfdW5pdHRlc3QuY2MKQEAgLTc0LDcgKzc0LDcgQEAgY29uc3RleHByIGludCBrRGVmYXVs
dEJ5dGVzUGVyRnJhbWUgPQogY29uc3RleHByIGludCBrRGVmYXVsdFFwID0gMjsKIH0gIC8vIG5h
bWVzcGFjZQogCi11c2luZyBCdWZmZXJGbGFncyA9IFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFn
czsKK3VzaW5nIEJ1ZmZlckZsYWdzID0gVnA4VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzOwog
CiBURVNUKFRlbXBvcmFsTGF5ZXJzVGVzdCwgMkxheWVycykgewogICBjb25zdGV4cHIgaW50IGtO
dW1MYXllcnMgPSAyOwpAQCAtMTE0LDcgKzExNCw3IEBAIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0
LCAyTGF5ZXJzKSB7CiAKICAgdWludDMyX3QgdGltZXN0YW1wID0gMDsKICAgZm9yIChpbnQgaSA9
IDA7IGkgPCAxNjsgKytpKSB7Ci0gICAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2Nv
bmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgICAgVnA4VGVtcG9yYWxM
YXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVz
dGFtcCk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2ZsYWdzW2ldLCBMaWJ2cHhWcDhFbmNvZGVy
OjpFbmNvZGVGbGFncyh0bF9jb25maWcpKSA8PCBpOwogICAgIHRsLk9uRW5jb2RlRG9uZSh0aW1l
c3RhbXAsIGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwgaSA9PSAwLCBrRGVmYXVsdFFwLAogICAgICAg
ICAgICAgICAgICAgICAmdnA4X2luZm8pOwpAQCAtMTY2LDcgKzE2Niw3IEBAIFRFU1QoVGVtcG9y
YWxMYXllcnNUZXN0LCAzTGF5ZXJzKSB7CiAKICAgdW5zaWduZWQgaW50IHRpbWVzdGFtcCA9IDA7
CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7ICsraSkgewotICAgIFRlbXBvcmFsTGF5ZXJzOjpG
cmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXApOwor
ICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVM
YXllckNvbmZpZyh0aW1lc3RhbXApOwogICAgIEVYUEVDVF9FUShleHBlY3RlZF9mbGFnc1tpXSwg
TGlidnB4VnA4RW5jb2Rlcjo6RW5jb2RlRmxhZ3ModGxfY29uZmlnKSkgPDwgaTsKICAgICB0bC5P
bkVuY29kZURvbmUodGltZXN0YW1wLCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUsIGkgPT0gMCwga0Rl
ZmF1bHRRcCwKICAgICAgICAgICAgICAgICAgICAgJnZwOF9pbmZvKTsKQEAgLTIwNyw3ICsyMDcs
NyBAQCBURVNUKFRlbXBvcmFsTGF5ZXJzVGVzdCwgQWx0ZXJuYXRpdmUzTGF5ZXJzKSB7CiAKICAg
dW5zaWduZWQgaW50IHRpbWVzdGFtcCA9IDA7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgODsgKytp
KSB7Ci0gICAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0
ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29u
ZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkX2ZsYWdzW2ldLCBMaWJ2cHhWcDhFbmNvZGVyOjpFbmNvZGVGbGFncyh0
bF9jb25maWcpKSA8PCBpOwogICAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0
Qnl0ZXNQZXJGcmFtZSwgaSA9PSAwLCBrRGVmYXVsdFFwLAogICAgICAgICAgICAgICAgICAgICAm
dnA4X2luZm8pOwpAQCAtMjM4LDcgKzIzOCw3IEBAIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCBT
ZWFyY2hPcmRlcikgewogCiAgIC8vIFN0YXJ0IHdpdGggYSBrZXktZnJhbWUuIHRsX2NvbmZpZyBm
bGFncyBjYW4gYmUgaWdub3JlZC4KICAgdWludDMyX3QgdGltZXN0YW1wID0gMDsKLSAgVGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRp
bWVzdGFtcCk7CisgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0
bC5VcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXApOwogICB0bC5PbkVuY29kZURvbmUodGltZXN0
YW1wLCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUsIHRydWUsIGtEZWZhdWx0UXAsCiAgICAgICAgICAg
ICAgICAgICAmdnA4X2luZm8pOwogCkBAIC0yODIsNyArMjgyLDcgQEAgVEVTVChUZW1wb3JhbExh
eWVyc1Rlc3QsIFNlYXJjaE9yZGVyV2l0aERyb3ApIHsKIAogICAvLyBTdGFydCB3aXRoIGEga2V5
LWZyYW1lLiB0bF9jb25maWcgZmxhZ3MgY2FuIGJlIGlnbm9yZWQuCiAgIHVpbnQzMl90IHRpbWVz
dGFtcCA9IDA7Ci0gIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5V
cGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXApOworICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVD
b25maWcgdGxfY29uZmlnID0gdGwuVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wKTsKICAgdGwu
T25FbmNvZGVEb25lKHRpbWVzdGFtcCwga0RlZmF1bHRCeXRlc1BlckZyYW1lLCB0cnVlLCBrRGVm
YXVsdFFwLAogICAgICAgICAgICAgICAgICAgJnZwOF9pbmZvKTsKIApAQCAtMzQzLDcgKzM0Myw3
IEBAIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCA0TGF5ZXJzKSB7CiAKICAgdWludDMyX3QgdGlt
ZXN0YW1wID0gMDsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytpKSB7Ci0gICAgVGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRp
bWVzdGFtcCk7CisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9
IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
X2ZsYWdzW2ldLCBMaWJ2cHhWcDhFbmNvZGVyOjpFbmNvZGVGbGFncyh0bF9jb25maWcpKSA8PCBp
OwogICAgIHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXAsIGtEZWZhdWx0Qnl0ZXNQZXJGcmFtZSwg
aSA9PSAwLCBrRGVmYXVsdFFwLAogICAgICAgICAgICAgICAgICAgICAmdnA4X2luZm8pOwpAQCAt
MzczLDcgKzM3Myw3IEBAIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCBEb2VzTm90UmVmZXJlbmNl
RHJvcHBlZEZyYW1lcykgewogCiAgIC8vIFN0YXJ0IHdpdGggYSBrZXlmcmFtZS4KICAgdWludDMy
X3QgdGltZXN0YW1wID0gMDsKLSAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZp
ZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgIFZwOFRlbXBvcmFsTGF5ZXJz
OjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXAp
OwogICB0bC5PbkVuY29kZURvbmUodGltZXN0YW1wLCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUsIHRy
dWUsIGtEZWZhdWx0UXAsCiAgICAgICAgICAgICAgICAgICAmdnA4X2luZm8pOwogCkBAIC00NjAs
NyArNDYwLDcgQEAgVEVTVChUZW1wb3JhbExheWVyc1Rlc3QsIERvZXNOb3RSZWZlcmVuY2VVbmxl
c3NHdWFyYW50ZWVkVG9FeGlzdCkgewogCiAgIC8vIFN0YXJ0IHdpdGggYSBrZXlmcmFtZS4KICAg
dWludDMyX3QgdGltZXN0YW1wID0gMDsKLSAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRs
X2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgIFZwOFRlbXBvcmFs
TGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVMYXllckNvbmZpZyh0aW1l
c3RhbXApOwogICB0bC5PbkVuY29kZURvbmUodGltZXN0YW1wLCBrRGVmYXVsdEJ5dGVzUGVyRnJh
bWUsIHRydWUsIGtEZWZhdWx0UXAsCiAgICAgICAgICAgICAgICAgICAmdnA4X2luZm8pOwogCkBA
IC01MzAsNyArNTMwLDcgQEAgVEVTVChUZW1wb3JhbExheWVyc1Rlc3QsIERvZXNOb3RSZWZlcmVu
Y2VVbmxlc3NHdWFyYW50ZWVkVG9FeGlzdExvbmdEZWxheSkgewogCiAgIC8vIFN0YXJ0IHdpdGgg
YSBrZXlmcmFtZS4KICAgdWludDMyX3QgdGltZXN0YW1wID0gMDsKLSAgVGVtcG9yYWxMYXllcnM6
OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7
CisgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9jb25maWcgPSB0bC5VcGRhdGVM
YXllckNvbmZpZyh0aW1lc3RhbXApOwogICB0bC5PbkVuY29kZURvbmUodGltZXN0YW1wLCBrRGVm
YXVsdEJ5dGVzUGVyRnJhbWUsIHRydWUsIGtEZWZhdWx0UXAsCiAgICAgICAgICAgICAgICAgICAm
dnA4X2luZm8pOwogCkBAIC02MTAsNyArNjEwLDggQEAgVEVTVChUZW1wb3JhbExheWVyc1Rlc3Qs
IEtleUZyYW1lKSB7CiAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gaTsgKytqKSB7CiAgICAgICAv
LyBTaW5jZSBsYXN0IGZyYW1lIHdhcyBhbHdheXMgYSBrZXlmcmFtZSBhbmQgdGh1cyBpbmRleCAw
IGluIHRoZSBwYXR0ZXJuLAogICAgICAgLy8gdGhpcyBsb29wIHN0YXJ0cyBhdCBpbmRleCAxLgot
ICAgICAgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxh
eWVyQ29uZmlnKHRpbWVzdGFtcCk7CisgICAgICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25m
aWcgdGxfY29uZmlnID0KKyAgICAgICAgICB0bC5VcGRhdGVMYXllckNvbmZpZyh0aW1lc3RhbXAp
OwogICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX2ZsYWdzW2pdLCBMaWJ2cHhWcDhFbmNvZGVyOjpF
bmNvZGVGbGFncyh0bF9jb25maWcpKQogICAgICAgICAgIDw8IGo7CiAgICAgICB0bC5PbkVuY29k
ZURvbmUodGltZXN0YW1wLCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUsIGZhbHNlLCBrRGVmYXVsdFFw
LApAQCAtNjIyLDcgKzYyMyw3IEBAIFRFU1QoVGVtcG9yYWxMYXllcnNUZXN0LCBLZXlGcmFtZSkg
ewogICAgICAgdGltZXN0YW1wICs9IDMwMDA7CiAgICAgfQogCi0gICAgVGVtcG9yYWxMYXllcnM6
OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7
CisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0
ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CiAgICAgdGwuT25FbmNvZGVEb25lKHRpbWVzdGFtcCwg
a0RlZmF1bHRCeXRlc1BlckZyYW1lLCB0cnVlLCBrRGVmYXVsdFFwLAogICAgICAgICAgICAgICAg
ICAgICAmdnA4X2luZm8pOwogICAgIEVYUEVDVF9UUlVFKHZwOF9pbmZvLmxheWVyU3luYykgPDwg
IktleSBmcmFtZSBzaG91bGQgYmUgbWFya2VkIGxheWVyIHN5bmMuIjsKQEAgLTY1Miw5ICs2NTMs
OSBAQCBjbGFzcyBUZW1wb3JhbExheWVyc1JlZmVyZW5jZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0V2l0aFBhcmFtPGludD4gewogICAgIGJvb2wgc3luYzsKICAgfTsKIAotICBib29sIFVw
ZGF0ZVN5bmNSZWZTdGF0ZShjb25zdCBUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MmIGZsYWdz
LAorICBib29sIFVwZGF0ZVN5bmNSZWZTdGF0ZShjb25zdCBWcDhUZW1wb3JhbExheWVyczo6QnVm
ZmVyRmxhZ3MmIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJTdGF0ZSog
YnVmZmVyX3N0YXRlKSB7Ci0gICAgaWYgKGZsYWdzICYgVGVtcG9yYWxMYXllcnM6OmtSZWZlcmVu
Y2UpIHsKKyAgICBpZiAoZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgewog
ICAgICAgaWYgKGJ1ZmZlcl9zdGF0ZS0+dGVtcG9yYWxfaWR4ID09IC0xKQogICAgICAgICByZXR1
cm4gdHJ1ZTsgIC8vIFJlZmVyZW5jZXMga2V5LWZyYW1lLgogICAgICAgaWYgKGJ1ZmZlcl9zdGF0
ZS0+dGVtcG9yYWxfaWR4ID09IDApIHsKQEAgLTY2OCwxMCArNjY5LDEwIEBAIGNsYXNzIFRlbXBv
cmFsTGF5ZXJzUmVmZXJlbmNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
aW50PiB7CiAgICAgcmV0dXJuIHRydWU7ICAvLyBObyByZWZlcmVuY2UsIGRvZXMgbm90IGFmZmVj
dCBzeW5jIGZyYW1lIHN0YXR1cy4KICAgfQogCi0gIHZvaWQgVmFsaWRhdGVSZWZlcmVuY2UoY29u
c3QgVGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzJiBmbGFncywKKyAgdm9pZCBWYWxpZGF0ZVJl
ZmVyZW5jZShjb25zdCBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3MmIGZsYWdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1ZmZlclN0YXRlJiBidWZmZXJfc3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRlbXBvcmFsX2xheWVyKSB7Ci0gICAgaWYgKGZs
YWdzICYgVGVtcG9yYWxMYXllcnM6OmtSZWZlcmVuY2UpIHsKKyAgICBpZiAoZmxhZ3MgJiBWcDhU
ZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgewogICAgICAgaWYgKHRlbXBvcmFsX2xheWVyID4g
MCAmJiBidWZmZXJfc3RhdGUudGltZXN0YW1wID4gMCkgewogICAgICAgICAvLyBDaGVjayB0aGF0
IGhpZ2ggbGF5ZXIgcmVmZXJlbmNlIGRvZXMgbm90IGdvIHBhc3QgbGFzdCBzeW5jIGZyYW1lLgog
ICAgICAgICBFWFBFQ1RfR0UoYnVmZmVyX3N0YXRlLnRpbWVzdGFtcCwgbGFzdF9zeW5jX3RpbWVz
dGFtcF8pOwpAQCAtNzA5LDkgKzcxMCw5IEBAIFRFU1RfUChUZW1wb3JhbExheWVyc1JlZmVyZW5j
ZVRlc3QsIFZhbGlkRnJhbWVDb25maWdzKSB7CiAgIC8vIChhbnkpLiBJZiBhIGdpdmVuIGJ1ZmZl
ciBpcyBuZXZlciB1cGRhdGVkLCBpdCBpcyBsZWdhbCB0byByZWZlcmVuY2UgaXQKICAgLy8gZXZl
biBmb3Igc3luYyBmcmFtZXMuIEluIG9yZGVyIHRvIGJlIGdlbmVyYWwsIGRvbid0IGFzc3VtZSBU
TDAgYWx3YXlzCiAgIC8vIHVwZGF0ZXMgfGxhc3R8LgotICBzdGQ6OnZlY3RvcjxUZW1wb3JhbExh
eWVyczo6RnJhbWVDb25maWc+IHRsX2NvbmZpZ3Moa01heFBhdHRlcm5MZW5ndGgpOworICBzdGQ6
OnZlY3RvcjxWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWc+IHRsX2NvbmZpZ3Moa01heFBh
dHRlcm5MZW5ndGgpOwogICBmb3IgKGludCBpID0gMDsgaSA8IGtNYXhQYXR0ZXJuTGVuZ3RoOyAr
K2kpIHsKLSAgICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnID0gdGwuVXBk
YXRlTGF5ZXJDb25maWcodGltZXN0YW1wXyk7CisgICAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1l
Q29uZmlnIHRsX2NvbmZpZyA9IHRsLlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcF8pOwogICAg
IHRsLk9uRW5jb2RlRG9uZSh0aW1lc3RhbXBfLCBrRGVmYXVsdEJ5dGVzUGVyRnJhbWUsIGkgPT0g
MCwga0RlZmF1bHRRcCwKICAgICAgICAgICAgICAgICAgICAgJnZwOF9zcGVjaWZpY3MpOwogICAg
ICsrdGltZXN0YW1wXzsKQEAgLTc1MiwxMSArNzUzLDExIEBAIFRFU1RfUChUZW1wb3JhbExheWVy
c1JlZmVyZW5jZVRlc3QsIFZhbGlkRnJhbWVDb25maWdzKSB7CiAKICAgICAvLyBVcGRhdGUgdGhl
IGN1cnJlbnQgbGF5ZXIgc3RhdGUuCiAgICAgQnVmZmVyU3RhdGUgc3RhdGUgPSB7dGVtcG9yYWxf
aWR4LCB0aW1lc3RhbXBfLCBpc19zeW5jX2ZyYW1lfTsKLSAgICBpZiAodGxfY29uZmlnLmxhc3Rf
YnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpCisgICAgaWYgKHRsX2NvbmZp
Zy5sYXN0X2J1ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjprVXBkYXRlKQogICAgICAg
bGFzdF9zdGF0ZSA9IHN0YXRlOwotICAgIGlmICh0bF9jb25maWcuZ29sZGVuX2J1ZmZlcl9mbGFn
cyAmIFRlbXBvcmFsTGF5ZXJzOjprVXBkYXRlKQorICAgIGlmICh0bF9jb25maWcuZ29sZGVuX2J1
ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjprVXBkYXRlKQogICAgICAgZ29sZGVuX3N0
YXRlID0gc3RhdGU7Ci0gICAgaWYgKHRsX2NvbmZpZy5hcmZfYnVmZmVyX2ZsYWdzICYgVGVtcG9y
YWxMYXllcnM6OmtVcGRhdGUpCisgICAgaWYgKHRsX2NvbmZpZy5hcmZfYnVmZmVyX2ZsYWdzICYg
VnA4VGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpCiAgICAgICBhbHRyZWZfc3RhdGUgPSBzdGF0ZTsK
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3RlbXBvcmFsX2xh
eWVyc19jaGVja2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5ZXJz
X2NoZWNrZXIuaAppbmRleCA5ODc4YWM5ZjNhMWM2YmRjZDE1YmNmZTc5Zjk0YjE0ZjAyODEwMDkw
Li5hZTE0ZjY4MjM2MWMzZjQ1NDlmYmJiNzY2MWVhNjBmYTA5ODI2ZWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuaApAQCAtMTUs
NyArMTUsNyBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCi0jaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKKyNpbmNs
dWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKIAogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKQEAgLTI5LDEwICsyOSwxMCBAQCBjbGFzcyBUZW1wb3JhbExheWVyc0NoZWNr
ZXIgewogCiAgIHZpcnR1YWwgYm9vbCBDaGVja1RlbXBvcmFsQ29uZmlnKAogICAgICAgYm9vbCBm
cmFtZV9pc19rZXlmcmFtZSwKLSAgICAgIGNvbnN0IFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZp
ZyYgZnJhbWVfY29uZmlnKTsKKyAgICAgIGNvbnN0IFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNv
bmZpZyYgZnJhbWVfY29uZmlnKTsKIAogICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRlbXBvcmFs
TGF5ZXJzQ2hlY2tlcj4gQ3JlYXRlVGVtcG9yYWxMYXllcnNDaGVja2VyKAotICAgICAgVGVtcG9y
YWxMYXllcnNUeXBlIHR5cGUsCisgICAgICBWcDhUZW1wb3JhbExheWVyc1R5cGUgdHlwZSwKICAg
ICAgIGludCBudW1fdGVtcG9yYWxfbGF5ZXJzKTsKIAogIHByaXZhdGU6CkBAIC00Niw3ICs0Niw3
IEBAIGNsYXNzIFRlbXBvcmFsTGF5ZXJzQ2hlY2tlciB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sKiBuZWVkX3N5bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGZyYW1lX2lzX2tleWZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCB0ZW1wb3JhbF9sYXllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdlYnJ0Yzo6VGVtcG9yYWxMYXllcnM6OkJ1ZmZlckZsYWdzIGZsYWdzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpWcDhUZW1wb3JhbExheWVyczo6QnVm
ZmVyRmxhZ3MgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBzZXF1ZW5jZV9udW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCogbG93ZXN0X3NlcXVlbmNlX3JlZmVyZW5jZWQpOwogICBCdWZmZXJTdGF0ZSBsYXN0XzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJz
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWRiYzRlYzJiZmMyYjYwMTNiYTRhYTIyMmEwN2Rl
MGU0ZmMzOGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwxOTggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYg
TU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOF9JTkNMVURFX1ZQOF9URU1QT1JBTF9MQVlF
UlNfSF8KLSNkZWZpbmUgTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOF9JTkNMVURFX1ZQ
OF9URU1QT1JBTF9MQVlFUlNfSF8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx2ZWN0
b3I+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBTb21lIG5vdGVzIG9uIHRoZSBwcmVyZXF1
aXNpdGVzIG9mIHRoZSBUZW1wb3JhbExheWVycyBpbnRlcmZhY2UuCi0vLyAqIEltcGxlbWVudGF0
aW9ucyBvZiBUZW1wb3JhbExheWVycyBtYXkgbm90IGNvbnRhaW4gaW50ZXJuYWwgc3luY2hyb25p
emF0aW9uCi0vLyAgIHNvIGNhbGxlciBtdXN0IG1ha2Ugc3VyZSBkb2luZyBzbyB0aHJlYWQgc2Fm
ZS4KLS8vICogVGhlIGVuY29kZXIgaXMgYXNzdW1lZCB0byBlbmNvZGUgYWxsIGZyYW1lcyBpbiBv
cmRlciwgYW5kIGNhbGxiYWNrcyB0bwotLy8gICBQb3B1bGF0ZUNvZGVjU3BlY2lmaWMoKSAvIEZy
YW1lRW5jb2RlZCgpIG11c3QgaGFwcGVuIGluIHRoZSBzYW1lIG9yZGVyLgotLy8KLS8vIFRoaXMg
bWVhbnMgdGhhdCBpbiB0aGUgY2FzZSBvZiBwaXBlbGluaW5nIGVuY29kZXJzLCBpdCBpcyBPSyB0
byBoYXZlIGEgY2hhaW4KLS8vIG9mIGNhbGxzIHN1Y2ggYXMgdGhpczoKLS8vIC0gVXBkYXRlTGF5
ZXJDb25maWcodGltZXN0YW1wQSkKLS8vIC0gVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wQikK
LS8vIC0gUG9wdWxhdGVDb2RlY1NwZWNpZmljKHRpbWVzdGFtcEEsIC4uLikKLS8vIC0gVXBkYXRl
TGF5ZXJDb25maWcodGltZXN0YW1wQykKLS8vIC0gT25FbmNvZGVEb25lKHRpbWVzdGFtcEEsIDEy
MzQsIC4uLikKLS8vIC0gVXBkYXRlTGF5ZXJDb25maWcodGltZXN0YW1wQykKLS8vIC0gT25FbmNv
ZGVEb25lKHRpbWVzdGFtcEIsIDAsIC4uLikKLS8vIC0gT25FbmNvZGVEb25lKHRpbWVzdGFtcEMs
IDEyMzQsIC4uLikKLS8vIE5vdGUgdGhhdCBVcGRhdGVMYXllckNvbmZpZygpIGZvciBhIG5ldyBm
cmFtZSBjYW4gaGFwcGVuIGJlZm9yZQotLy8gRnJhbWVFbmNvZGVkKCkgZm9yIGEgcHJldmlvdXMg
b25lLCBidXQgY2FsbHMgdGhlbXNlbHZlcyBtdXN0IGJlIGJvdGgKLS8vIHN5bmNocm9uaXplZCAo
ZS5nLiBydW4gb24gYSB0YXNrIHF1ZXVlKSBhbmQgaW4gb3JkZXIgKHBlciB0eXBlKS4KLQotZW51
bSBjbGFzcyBUZW1wb3JhbExheWVyc1R5cGUgeyBrRml4ZWRQYXR0ZXJuLCBrQml0cmF0ZUR5bmFt
aWMgfTsKLQotc3RydWN0IENvZGVjU3BlY2lmaWNJbmZvVlA4OwotZW51bSBjbGFzcyBWcDhCdWZm
ZXJSZWZlcmVuY2UgOiB1aW50OF90IHsKLSAga05vbmUgPSAwLAotICBrTGFzdCA9IDEsCi0gIGtH
b2xkZW4gPSAyLAotICBrQWx0cmVmID0gNAotfTsKLQotc3RydWN0IFZwOEVuY29kZXJDb25maWcg
ewotICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrTWF4UGVyaW9kaWNpdHkgPSAxNjsKLSAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3Qga01heExheWVycyA9IDU7Ci0KLSAgLy8gTnVtYmVyIG9mIGFj
dGl2ZSB0ZW1wb3JhbCBsYXllcnMuIFNldCB0byAwIGlmIG5vdCB1c2VkLgotICB1aW50MzJfdCB0
c19udW1iZXJfbGF5ZXJzOwotICAvLyBBcnJheXMgb2YgbGVuZ3RoIHx0c19udW1iZXJfbGF5ZXJz
fCwgaW5kaWNhdGluZyAoY3VtdWxhdGl2ZSkgdGFyZ2V0IGJpdHJhdGUKLSAgLy8gYW5kIHJhdGUg
ZGVjaW1hdG9yIChlLmcuIDQgaWYgZXZlcnkgNHRoIGZyYW1lIGlzIGluIHRoZSBnaXZlbiBsYXll
cikgZm9yCi0gIC8vIGVhY2ggYWN0aXZlIHRlbXBvcmFsIGxheWVyLCBzdGFydGluZyB3aXRoIHRl
bXBvcmFsIGlkIDAuCi0gIHVpbnQzMl90IHRzX3RhcmdldF9iaXRyYXRlW2tNYXhMYXllcnNdOwot
ICB1aW50MzJfdCB0c19yYXRlX2RlY2ltYXRvcltrTWF4TGF5ZXJzXTsKLQotICAvLyBUaGUgcGVy
aW9kaWNpdHkgb2YgdGhlIHRlbXBvcmFsIHBhdHRlcm4uIFNldCB0byAwIGlmIG5vdCB1c2VkLgot
ICB1aW50MzJfdCB0c19wZXJpb2RpY2l0eTsKLSAgLy8gQXJyYXkgb2YgbGVuZ3RoIHx0c19wZXJp
b2RpY2l0eXwgaW5kaWNhdGluZyB0aGUgc2VxdWVuY2Ugb2YgdGVtcG9yYWwgaWQncwotICAvLyB0
byBhc3NpZ24gdG8gaW5jb21pbmcgZnJhbWVzLgotICB1aW50MzJfdCB0c19sYXllcl9pZFtrTWF4
UGVyaW9kaWNpdHldOwotCi0gIC8vIFRhcmdldCBiaXRyYXRlLCBpbiBicHMuCi0gIHVpbnQzMl90
IHJjX3RhcmdldF9iaXRyYXRlOwotCi0gIC8vIENsYW1wIFFQIHRvIG1pbi9tYXguIFVzZSAwIHRv
IGRpc2FibGUgY2xhbXBpbmcuCi0gIHVpbnQzMl90IHJjX21pbl9xdWFudGl6ZXI7Ci0gIHVpbnQz
Ml90IHJjX21heF9xdWFudGl6ZXI7Ci19OwotCi0vLyBUaGlzIGludGVyZmFjZSBkZWZpbmVzIGEg
d2F5IG9mIGdldHRpbmcgdGhlIGVuY29kZXIgc2V0dGluZ3MgbmVlZGVkIHRvCi0vLyByZWFsaXpl
IGEgdGVtcG9yYWwgbGF5ZXIgc3RydWN0dXJlIG9mIHByZWRlZmluZWQgc2l6ZS4KLWNsYXNzIFRl
bXBvcmFsTGF5ZXJzIHsKLSBwdWJsaWM6Ci0gIGVudW0gQnVmZmVyRmxhZ3MgOiBpbnQgewotICAg
IGtOb25lID0gMCwKLSAgICBrUmVmZXJlbmNlID0gMSwKLSAgICBrVXBkYXRlID0gMiwKLSAgICBr
UmVmZXJlbmNlQW5kVXBkYXRlID0ga1JlZmVyZW5jZSB8IGtVcGRhdGUsCi0gIH07Ci0gIGVudW0g
RnJlZXplRW50cm9weSB7IGtGcmVlemVFbnRyb3B5IH07Ci0KLSAgc3RydWN0IEZyYW1lQ29uZmln
IHsKLSAgICBGcmFtZUNvbmZpZygpOwotCi0gICAgRnJhbWVDb25maWcoQnVmZmVyRmxhZ3MgbGFz
dCwgQnVmZmVyRmxhZ3MgZ29sZGVuLCBCdWZmZXJGbGFncyBhcmYpOwotICAgIEZyYW1lQ29uZmln
KEJ1ZmZlckZsYWdzIGxhc3QsCi0gICAgICAgICAgICAgICAgQnVmZmVyRmxhZ3MgZ29sZGVuLAot
ICAgICAgICAgICAgICAgIEJ1ZmZlckZsYWdzIGFyZiwKLSAgICAgICAgICAgICAgICBGcmVlemVF
bnRyb3B5KTsKLQotICAgIGJvb2wgZHJvcF9mcmFtZTsKLSAgICBCdWZmZXJGbGFncyBsYXN0X2J1
ZmZlcl9mbGFnczsKLSAgICBCdWZmZXJGbGFncyBnb2xkZW5fYnVmZmVyX2ZsYWdzOwotICAgIEJ1
ZmZlckZsYWdzIGFyZl9idWZmZXJfZmxhZ3M7Ci0KLSAgICAvLyBUaGUgZW5jb2RlciBsYXllciBJ
RCBpcyB1c2VkIHRvIHV0aWxpemUgdGhlIGNvcnJlY3QgYml0cmF0ZSBhbGxvY2F0b3IKLSAgICAv
LyBpbnNpZGUgdGhlIGVuY29kZXIuIEl0IGRvZXMgbm90IGNvbnRyb2wgcmVmZXJlbmNlcyBub3Ig
ZGV0ZXJtaW5lIHdoaWNoCi0gICAgLy8gImFjdHVhbCIgdGVtcG9yYWwgbGF5ZXIgdGhpcyBpcy4g
VGhlIHBhY2tldGl6ZXIgdGVtcG9yYWwgaW5kZXggZGV0ZXJtaW5lcwotICAgIC8vIHdoaWNoIGxh
eWVyIHRoZSBlbmNvZGVkIGZyYW1lIHNob3VsZCBiZSBwYWNrZXRpemVkIGludG8uCi0gICAgLy8g
Tm9ybWFsbHkgdGhlc2UgYXJlIHRoZSBzYW1lLCBidXQgY3VycmVudCB0ZW1wb3JhbC1sYXllciBz
dHJhdGVnaWVzIGZvcgotICAgIC8vIHNjcmVlbnNoYXJlIHVzZSBvbmUgYml0cmF0ZSBhbGxvY2F0
b3IgZm9yIGFsbCBsYXllcnMsIGJ1dCBhdHRlbXB0IHRvCi0gICAgLy8gcGFja2V0aXplIC8gdXRp
bGl6ZSByZWZlcmVuY2VzIHRvIHNwbGl0IGEgc3RyZWFtIGludG8gbXVsdGlwbGUgbGF5ZXJzLAot
ICAgIC8vIHdpdGggZGlmZmVyZW50IHF1YW50aXplciBzZXR0aW5ncywgdG8gaGl0IHRhcmdldCBi
aXRyYXRlLgotICAgIC8vIFRPRE8ocGJvcyk6IFNjcmVlbnNoYXJlIGxheWVycyBhcmUgYmVpbmcg
cmVjb25zaWRlcmVkIGF0IHRoZSB0aW1lIG9mCi0gICAgLy8gd3JpdGluZywgd2UgbWlnaHQgYmUg
YWJsZSB0byByZW1vdmUgdGhpcyBkaXN0aW5jdGlvbiwgYW5kIGhhdmUgYSB0ZW1wb3JhbAotICAg
IC8vIGxheWVyIGltcGx5IGJvdGggKHRoZSBub3JtYWwgY2FzZSkuCi0gICAgaW50IGVuY29kZXJf
bGF5ZXJfaWQ7Ci0gICAgaW50IHBhY2tldGl6ZXJfdGVtcG9yYWxfaWR4OwotCi0gICAgYm9vbCBs
YXllcl9zeW5jOwotCi0gICAgYm9vbCBmcmVlemVfZW50cm9weTsKLQotICAgIC8vIEluZGljYXRl
cyBpbiB3aGljaCBvcmRlciB0aGUgZW5jb2RlciBzaG91bGQgc2VhcmNoIHRoZSByZWZlcmVuY2Ug
YnVmZmVycwotICAgIC8vIHdoZW4gZG9pbmcgbW90aW9uIHByZWRpY3Rpb24uIFNldCB0byBrTm9u
ZSB0byB1c2UgdW5zcGVjaWZpZWQgb3JkZXIuIEFueQotICAgIC8vIGJ1ZmZlciBpbmRpY2F0ZWQg
aGVyZSBtdXN0IG5vdCBoYXZlIHRoZSBjb3JyZXNwb25kaW5nIG5vX3JlZiBiaXQgc2V0LgotICAg
IC8vIElmIGFsbCB0aHJlZSBidWZmZXJzIGNhbiBiZSByZWZlcmVuY2UsIHRoZSBvbmUgbm90IGxp
c3RlZCBoZXJlIHNob3VsZCBiZQotICAgIC8vIHNlYXJjaGVkIGxhc3QuCi0gICAgVnA4QnVmZmVy
UmVmZXJlbmNlIGZpcnN0X3JlZmVyZW5jZTsKLSAgICBWcDhCdWZmZXJSZWZlcmVuY2Ugc2Vjb25k
X3JlZmVyZW5jZTsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFtZUNvbmZpZyYgbykg
Y29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZyYW1lQ29uZmlnJiBvKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG8pOyB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgRnJhbWVDb25maWco
QnVmZmVyRmxhZ3MgbGFzdCwKLSAgICAgICAgICAgICAgICBCdWZmZXJGbGFncyBnb2xkZW4sCi0g
ICAgICAgICAgICAgICAgQnVmZmVyRmxhZ3MgYXJmLAotICAgICAgICAgICAgICAgIGJvb2wgZnJl
ZXplX2VudHJvcHkpOwotICB9OwotCi0gIC8vIEZhY3RvcnkgZm9yIFRlbXBvcmFsTGF5ZXIgc3Ry
YXRlZ3kuIERlZmF1bHQgYmVoYXZpb3IgaXMgYSBmaXhlZCBwYXR0ZXJuCi0gIC8vIG9mIHRlbXBv
cmFsIGxheWVycy4gU2VlIGRlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmNjCi0gIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8VGVtcG9yYWxMYXllcnM+IENyZWF0ZVRlbXBvcmFsTGF5ZXJzKAotICAgICAg
VGVtcG9yYWxMYXllcnNUeXBlIHR5cGUsCi0gICAgICBpbnQgbnVtX3RlbXBvcmFsX2xheWVycyk7
Ci0KLSAgdmlydHVhbCB+VGVtcG9yYWxMYXllcnMoKSA9IGRlZmF1bHQ7Ci0KLSAgLy8gSWYgdGhp
cyBtZXRob2QgcmV0dXJucyB0cnVlLCB0aGUgZW5jb2RlciBpcyBmcmVlIHRvIGRyb3AgZnJhbWVz
IGZvcgotICAvLyBpbnN0YW5jZSBpbiBhbiBlZmZvcnQgdG8gdXBob2xkIGVuY29kaW5nIGJpdHJh
dGUuCi0gIC8vIElmIHRoaXMgcmV0dXJuIGZhbHNlLCB0aGUgZW5jb2RlciBtdXN0IG5vdCBkcm9w
IGFueSBmcmFtZXMgdW5sZXNzOgotICAvLyAgMS4gUmVxdWVzdGVkIHRvIGRvIHNvIHZpYSBGcmFt
ZUNvbmZpZy5kcm9wX2ZyYW1lCi0gIC8vICAyLiBUaGUgZnJhbWUgdG8gYmUgZW5jb2RlZCBpcyBy
ZXF1ZXN0ZWQgdG8gYmUgYSBrZXlmcmFtZQotICAvLyAgMy4gVGhlIGVuY29kZWQgZGV0ZWN0ZWQg
YSBsYXJnZSBvdmVyc2hvb3QgYW5kIGRlY2lkZWQgdG8gZHJvcCBhbmQgdGhlbgotICAvLyAgICAg
cmUtZW5jb2RlIHRoZSBpbWFnZSBhdCBhIGxvdyBiaXRyYXRlLiBJbiB0aGlzIGNhc2UgdGhlIGVu
Y29kZXIgc2hvdWxkCi0gIC8vICAgICBjYWxsIE9uRW5jb2RlRG9uZSgpIG9uY2Ugd2l0aCBzaXpl
ID0gMCB0byBpbmRpY2F0ZSBkcm9wLCBhbmQgdGhlbiBjYWxsCi0gIC8vICAgICBPbkVuY29kZURv
bmUoKSBhZ2FpbiB3aGVuIHRoZSBmcmFtZSBoYXMgYWN0dWFsbHkgYmVlbiBlbmNvZGVkLgotICB2
aXJ0dWFsIGJvb2wgU3VwcG9ydHNFbmNvZGVyRnJhbWVEcm9wcGluZygpIGNvbnN0ID0gMDsKLQot
ICAvLyBOZXcgdGFyZ2V0IGJpdHJhdGUsIHBlciB0ZW1wb3JhbCBsYXllci4KLSAgdmlydHVhbCB2
b2lkIE9uUmF0ZXNVcGRhdGVkKGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiYgYml0cmF0ZXNf
YnBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lcmF0ZV9mcHMpID0g
MDsKLQotICAvLyBDYWxsZWQgYnkgdGhlIGVuY29kZXIgYmVmb3JlIGVuY29kaW5nIGEgZnJhbWUu
IHxjZmd8IGNvbnRhaW5zIHRoZSBjdXJyZW50Ci0gIC8vIGNvbmZpZ3VyYXRpb24uIElmIHRoZSBU
ZW1wb3JhbExheWVycyBpbnN0YW5jZSB3aXNoZXMgYW55IHBhcnQgb2YgdGhhdAotICAvLyB0byBi
ZSBjaGFuZ2VkIGJlZm9yZSB0aGUgZW5jb2RlIHN0ZXAsIHxjZmd8IHNob3VsZCBiZSBjaGFuZ2Vk
IGFuZCB0aGVuCi0gIC8vIHJldHVybiB0cnVlLiBJZiBmYWxzZSBpcyByZXR1cm5lZCwgdGhlIGVu
Y29kZXIgd2lsbCBwcm9jZWVkIHdpdGhvdXQKLSAgLy8gdXBkYXRpbmcgdGhlIGNvbmZpZ3VyYXRp
b24uCi0gIHZpcnR1YWwgYm9vbCBVcGRhdGVDb25maWd1cmF0aW9uKFZwOEVuY29kZXJDb25maWcq
IGNmZykgPSAwOwotCi0gIC8vIFJldHVybnMgdGhlIHJlY29tbWVuZGVkIFZQOCBlbmNvZGUgZmxh
Z3MgbmVlZGVkLCBhbmQgbW92ZXMgdGhlIHRlbXBvcmFsCi0gIC8vIHBhdHRlcm4gdG8gdGhlIG5l
eHQgZnJhbWUuCi0gIC8vIFRoZSB0aW1lc3RhbXAgbWF5IGJlIHVzZWQgYXMgYm90aCBhIHRpbWUg
YW5kIGEgdW5pcXVlIGlkZW50aWZpZXIsIGFuZCBzbwotICAvLyB0aGUgY2FsbGVyIG11c3QgbWFr
ZSBzdXJlIG5vIHR3byBmcmFtZXMgdXNlIHRoZSBzYW1lIHRpbWVzdGFtcC4KLSAgLy8gVGhlIHRp
bWVzdGFtcCB1c2VzIGEgOTBrSHogUlRQIGNsb2NrLgotICAvLyBBZnRlciBjYWxsaW5nIHRoaXMg
bWV0aG9kLCBmaXJzdCBjYWxsIHRoZSBhY3R1YWwgZW5jb2RlciB3aXRoIHRoZSBwcm92aWRlZAot
ICAvLyBmcmFtZSBjb25maWd1cmF0aW9uLCBhbmQgdGhlbiBPbkVuY29kZURvbmUoKSBiZWxvdy4K
LSAgdmlydHVhbCBGcmFtZUNvbmZpZyBVcGRhdGVMYXllckNvbmZpZyh1aW50MzJfdCBydHBfdGlt
ZXN0YW1wKSA9IDA7Ci0KLSAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBlbmNvZGUgc3RlcCBpcyBkb25l
LiB8cnRwX3RpbWVzdGFtcHwgbXVzdCBtYXRjaCB0aGUKLSAgLy8gcGFyYW1ldGVyIHVzZSBpbiB0
aGUgVXBkYXRlTGF5ZXJDb25maWcoKSBjYWxsLgotICAvLyB8aXNfa2V5ZnJhbWV8IG11c3QgYmUg
dHJ1ZSBpZmYgdGhlIGVuY29kZXIgZGVjaWRlZCB0byBlbmNvZGUgdGhpcyBmcmFtZSBhcwotICAv
LyBhIGtleWZyYW1lLgotICAvLyBJZiB0aGUgZW5jb2RlciBkZWNpZGVkIHRvIGRyb3AgdGhpcyBm
cmFtZSwgfHNpemVfYnl0ZXN8IG11c3QgYmUgc2V0IHRvIDAsCi0gIC8vIG90aGVyd2lzZSBpdCBz
aG91bGQgaW5kaWNhdGUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGVuY29kZWQgZnJhbWUuCi0g
IC8vIElmIHxzaXplX2J5dGVzfCA+IDAsIGFuZCB8dnA4X2luZm98IGlzIG5vdCBudWxsLCB0aGUg
VGVtcG9yYWxMYXllcnMKLSAgLy8gaW5zdGFuY2UgbXkgdXBkYXRlIHx2cDhfaW5mb3wgd2l0aCBj
b2RlYyBzcGVjaWZpYyBkYXRhIHN1Y2ggYXMgdGVtcG9yYWwgaWQuCi0gIC8vIFNvbWUgZmllbGRz
IG9mIHRoaXMgc3RydWN0IG1heSBoYXZlIGFscmVhZHkgYmVlbiBwb3B1bGF0ZWQgYnkgdGhlIGVu
Y29kZXIsCi0gIC8vIGNoZWNrIGJlZm9yZSBvdmVyd3JpdGluZy4KLSAgLy8gSWYgfHNpemVfYnl0
ZXN8ID4gMCwgfHFwfCBzaG91bGQgaW5kaWNhdGUgdGhlIGZyYW1lLWxldmVsIFFQIHRoaXMgZnJh
bWUgd2FzCi0gIC8vIGVuY29kZWQgYXQuIElmIHRoZSBlbmNvZGVyIGRvZXMgbm90IHN1cHBvcnQg
ZXh0cmFjdGluZyB0aGlzLCB8cXB8IHNob3VsZCBiZQotICAvLyBzZXQgdG8gMC4KLSAgdmlydHVh
bCB2b2lkIE9uRW5jb2RlRG9uZSh1aW50MzJfdCBydHBfdGltZXN0YW1wLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBzaXplX2J5dGVzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNfa2V5ZnJhbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVjU3BlY2lmaWNJbmZvVlA4KiB2
cDhfaW5mbykgPSAwOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8v
IE1PRFVMRVNfVklERU9fQ09ESU5HX0NPREVDU19WUDhfSU5DTFVERV9WUDhfVEVNUE9SQUxfTEFZ
RVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZGVjb2Rlci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmNjCmluZGV4IDIwNjg0ZDFk
MzkxODVlNjJlMTBmYzcxM2UzZDk5NTM1ODg2ODI5MTMuLjQ4ODM4ZTkzZTdmMzY5YjZjYTBkYzY3
MmY1NTQ1ODA5YmNjMjU3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3Zw
OF9kZWNvZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmNj
CkBAIC0xMiw3ICsxMiw2IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dl
YnJ0Y19saWJ5dXYuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4
L2xpYnZweF92cDhfZGVjb2Rlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL2V4cF9maWx0ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZw
eF92cDhfZGVjb2Rlci5oCmluZGV4IDNhNmNmOTI0MDVjYzdlZGM4YjVhMzA0YTQ1NGQwY2Q2MzIw
NWNiNDguLmNmZjllODk5ODg0MWI5YzM4NDg0Njk0NTVkZmYzNmJiZjg4Zjc4ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIuaApAQCAtMTMsMTAgKzEzLDEwIEBACiAKICNpbmNs
dWRlIDxtZW1vcnk+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oIgogI2lu
Y2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlci5oIgogI2luY2x1ZGUgImNvbW1v
bl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9uX3Zp
ZGVvL2luY2x1ZGUvaTQyMF9idWZmZXJfcG9vbC5oIgotI2luY2x1ZGUgImNvbW1vbl92aWRlby9p
bmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9j
b21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4
L2luY2x1ZGUvdnA4LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92
aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGli
dnB4X3ZwOF9lbmNvZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2VuY29kZXIu
Y2MKaW5kZXggNDFkYWQ0MGQ5ZTQwYmYzZjljNmZhMGVhM2JkNjQ2M2RlOTYwYTE3Yi4uYmU1MjQy
YzFiOTE2OGIwNmY5YWRiMWQ2NjA0ZTRhOWMwMTZmOGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC9saWJ2cHhfdnA4X2VuY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2
cHhfdnA4X2VuY29kZXIuY2MKQEAgLTE0LDYgKzE0LDggQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAK
ICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29k
ZWNzL2NyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2Nv
ZGVjcy92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1
di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZW5jb2Rlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlk
ZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yLmgiCkBAIC0yNyw3ICsy
OSw4IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKLWNvbnN0IGNoYXIga1Zw
OEdmQm9vc3RGaWVsZFRyaWFsW10gPSAiV2ViUlRDLVZQOC1HZkJvb3N0IjsKK2NvbnN0IGNoYXIg
a1ZwOFRydXN0ZWRSYXRlQ29udHJvbGxlckZpZWxkVHJpYWxbXSA9CisgICAgIldlYlJUQy1MaWJ2
cHhWcDhUcnVzdGVkUmF0ZUNvbnRyb2xsZXIiOwogCiAvLyBRUCBpcyBvYnRhaW5lZCBmcm9tIFZQ
OC1iaXRzdHJlYW0gZm9yIEhXLCBzbyB0aGUgUVAgY29ycmVzcG9uZHMgdG8gdGhlCiAvLyBiaXRz
dHJlYW0gcmFuZ2Ugb2YgWzAsIDEyN10gYW5kIG5vdCB0aGUgdXNlci1sZXZlbCByYW5nZSBvZiBb
MCw2M10uCkBAIC01OSwyMCArNjIsNiBAQCBzdGF0aWMgaW50IEdDRChpbnQgYSwgaW50IGIpIHsK
ICAgcmV0dXJuIGI7CiB9CiAKLWJvb2wgR2V0R2ZCb29zdFBlcmNlbnRhZ2VGcm9tRmllbGRUcmlh
bEdyb3VwKGludCogYm9vc3RfcGVyY2VudGFnZSkgewotICBzdGQ6OnN0cmluZyBncm91cCA9IHdl
YnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZShrVnA4R2ZCb29zdEZpZWxkVHJpYWwpOwot
ICBpZiAoZ3JvdXAuZW1wdHkoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKHNzY2FuZihn
cm91cC5jX3N0cigpLCAiRW5hYmxlZC0lZCIsIGJvb3N0X3BlcmNlbnRhZ2UpICE9IDEpCi0gICAg
cmV0dXJuIGZhbHNlOwotCi0gIGlmICgqYm9vc3RfcGVyY2VudGFnZSA8IDAgfHwgKmJvb3N0X3Bl
cmNlbnRhZ2UgPiAxMDApCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIHJldHVybiB0cnVlOwotfQot
CiBzdGF0aWNfYXNzZXJ0KFZwOEVuY29kZXJDb25maWc6OmtNYXhQZXJpb2RpY2l0eSA9PSBWUFhf
VFNfTUFYX1BFUklPRElDSVRZLAogICAgICAgICAgICAgICAiVnA4RW5jb2RlckNvbmZpZzo6a01h
eFBlcmlvZGljaXR5IG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlICIKICAgICAgICAgICAg
ICAgImNvbnN0YW50IGluIGxpYnZweC4iKTsKQEAgLTExMyw3ICsxMDIsNyBAQCBzdGF0aWMgdm9p
ZCBGaWxsSW5FbmNvZGVyQ29uZmlnKHZweF9jb2RlY19lbmNfY2ZnKiB2cHhfY29uZmlnLAogICB2
cHhfY29uZmlnLT5yY19tYXhfcXVhbnRpemVyID0gY29uZmlnLnJjX21heF9xdWFudGl6ZXI7CiB9
CiAKLWJvb2wgVXBkYXRlVnB4Q29uZmlndXJhdGlvbihUZW1wb3JhbExheWVycyogdGVtcG9yYWxf
bGF5ZXJzLAorYm9vbCBVcGRhdGVWcHhDb25maWd1cmF0aW9uKFZwOFRlbXBvcmFsTGF5ZXJzKiB0
ZW1wb3JhbF9sYXllcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnB4X2NvZGVjX2Vu
Y19jZmdfdCogY2ZnKSB7CiAgIFZwOEVuY29kZXJDb25maWcgY29uZmlnID0gR2V0RW5jb2RlckNv
bmZpZyhjZmcpOwogICBjb25zdCBib29sIHJlcyA9IHRlbXBvcmFsX2xheWVycy0+VXBkYXRlQ29u
ZmlndXJhdGlvbigmY29uZmlnKTsKQEAgLTEyOSwyMiArMTE4LDIyIEBAIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb0VuY29kZXI+IFZQOEVuY29kZXI6OkNyZWF0ZSgpIHsKIH0KIAogdnB4X2VuY19mcmFt
ZV9mbGFnc190IExpYnZweFZwOEVuY29kZXI6OkVuY29kZUZsYWdzKAotICAgIGNvbnN0IFRlbXBv
cmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgcmVmZXJlbmNlcykgeworICAgIGNvbnN0IFZwOFRlbXBv
cmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgcmVmZXJlbmNlcykgewogICBSVENfRENIRUNLKCFyZWZl
cmVuY2VzLmRyb3BfZnJhbWUpOwogCiAgIHZweF9lbmNfZnJhbWVfZmxhZ3NfdCBmbGFncyA9IDA7
CiAKLSAgaWYgKChyZWZlcmVuY2VzLmxhc3RfYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6
OmtSZWZlcmVuY2UpID09IDApCisgIGlmICgocmVmZXJlbmNlcy5sYXN0X2J1ZmZlcl9mbGFncyAm
IFZwOFRlbXBvcmFsTGF5ZXJzOjprUmVmZXJlbmNlKSA9PSAwKQogICAgIGZsYWdzIHw9IFZQOF9F
RkxBR19OT19SRUZfTEFTVDsKLSAgaWYgKChyZWZlcmVuY2VzLmxhc3RfYnVmZmVyX2ZsYWdzICYg
VGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpID09IDApCisgIGlmICgocmVmZXJlbmNlcy5sYXN0X2J1
ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFsTGF5ZXJzOjprVXBkYXRlKSA9PSAwKQogICAgIGZsYWdz
IHw9IFZQOF9FRkxBR19OT19VUERfTEFTVDsKLSAgaWYgKChyZWZlcmVuY2VzLmdvbGRlbl9idWZm
ZXJfZmxhZ3MgJiBUZW1wb3JhbExheWVyczo6a1JlZmVyZW5jZSkgPT0gMCkKKyAgaWYgKChyZWZl
cmVuY2VzLmdvbGRlbl9idWZmZXJfZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6a1JlZmVyZW5j
ZSkgPT0gMCkKICAgICBmbGFncyB8PSBWUDhfRUZMQUdfTk9fUkVGX0dGOwotICBpZiAoKHJlZmVy
ZW5jZXMuZ29sZGVuX2J1ZmZlcl9mbGFncyAmIFRlbXBvcmFsTGF5ZXJzOjprVXBkYXRlKSA9PSAw
KQorICBpZiAoKHJlZmVyZW5jZXMuZ29sZGVuX2J1ZmZlcl9mbGFncyAmIFZwOFRlbXBvcmFsTGF5
ZXJzOjprVXBkYXRlKSA9PSAwKQogICAgIGZsYWdzIHw9IFZQOF9FRkxBR19OT19VUERfR0Y7Ci0g
IGlmICgocmVmZXJlbmNlcy5hcmZfYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxMYXllcnM6OmtSZWZl
cmVuY2UpID09IDApCisgIGlmICgocmVmZXJlbmNlcy5hcmZfYnVmZmVyX2ZsYWdzICYgVnA4VGVt
cG9yYWxMYXllcnM6OmtSZWZlcmVuY2UpID09IDApCiAgICAgZmxhZ3MgfD0gVlA4X0VGTEFHX05P
X1JFRl9BUkY7Ci0gIGlmICgocmVmZXJlbmNlcy5hcmZfYnVmZmVyX2ZsYWdzICYgVGVtcG9yYWxM
YXllcnM6OmtVcGRhdGUpID09IDApCisgIGlmICgocmVmZXJlbmNlcy5hcmZfYnVmZmVyX2ZsYWdz
ICYgVnA4VGVtcG9yYWxMYXllcnM6OmtVcGRhdGUpID09IDApCiAgICAgZmxhZ3MgfD0gVlA4X0VG
TEFHX05PX1VQRF9BUkY7CiAgIGlmIChyZWZlcmVuY2VzLmZyZWV6ZV9lbnRyb3B5KQogICAgIGZs
YWdzIHw9IFZQOF9FRkxBR19OT19VUERfRU5UUk9QWTsKQEAgLTE1Nyw3ICsxNDYsOSBAQCBMaWJ2
cHhWcDhFbmNvZGVyOjpMaWJ2cHhWcDhFbmNvZGVyKCkKIAogTGlidnB4VnA4RW5jb2Rlcjo6TGli
dnB4VnA4RW5jb2RlcihzdGQ6OnVuaXF1ZV9wdHI8TGlidnB4SW50ZXJmYWNlPiBpbnRlcmZhY2Up
CiAgICAgOiBsaWJ2cHhfKHN0ZDo6bW92ZShpbnRlcmZhY2UpKSwKLSAgICAgIHVzZV9nZl9ib29z
dF8od2VicnRjOjpmaWVsZF90cmlhbDo6SXNFbmFibGVkKGtWcDhHZkJvb3N0RmllbGRUcmlhbCkp
LAorICAgICAgZXhwZXJpbWVudGFsX2NwdV9zcGVlZF9jb25maWdfYXJtXyhDcHVTcGVlZEV4cGVy
aW1lbnQ6OkdldENvbmZpZ3MoKSksCisgICAgICB0cnVzdGVkX3JhdGVfY29udHJvbGxlcl8oCisg
ICAgICAgICAgZmllbGRfdHJpYWw6OklzRW5hYmxlZChrVnA4VHJ1c3RlZFJhdGVDb250cm9sbGVy
RmllbGRUcmlhbCkpLAogICAgICAgZW5jb2RlZF9jb21wbGV0ZV9jYWxsYmFja18obnVsbHB0ciks
CiAgICAgICBpbml0ZWRfKGZhbHNlKSwKICAgICAgIHRpbWVzdGFtcF8oMCksCkBAIC0xNjcsNyAr
MTU4LDYgQEAgTGlidnB4VnA4RW5jb2Rlcjo6TGlidnB4VnA4RW5jb2RlcihzdGQ6OnVuaXF1ZV9w
dHI8TGlidnB4SW50ZXJmYWNlPiBpbnRlcmZhY2UpCiAgICAgICByY19tYXhfaW50cmFfdGFyZ2V0
XygwKSwKICAgICAgIGtleV9mcmFtZV9yZXF1ZXN0XyhrTWF4U2ltdWxjYXN0U3RyZWFtcywgZmFs
c2UpIHsKICAgdGVtcG9yYWxfbGF5ZXJzXy5yZXNlcnZlKGtNYXhTaW11bGNhc3RTdHJlYW1zKTsK
LSAgdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXJzXy5yZXNlcnZlKGtNYXhTaW11bGNhc3RTdHJlYW1z
KTsKICAgcmF3X2ltYWdlc18ucmVzZXJ2ZShrTWF4U2ltdWxjYXN0U3RyZWFtcyk7CiAgIGVuY29k
ZWRfaW1hZ2VzXy5yZXNlcnZlKGtNYXhTaW11bGNhc3RTdHJlYW1zKTsKICAgc2VuZF9zdHJlYW1f
LnJlc2VydmUoa01heFNpbXVsY2FzdFN0cmVhbXMpOwpAQCAtMjA2LDcgKzE5Niw2IEBAIGludCBM
aWJ2cHhWcDhFbmNvZGVyOjpSZWxlYXNlKCkgewogICAgIHJhd19pbWFnZXNfLnBvcF9iYWNrKCk7
CiAgIH0KICAgdGVtcG9yYWxfbGF5ZXJzXy5jbGVhcigpOwotICB0ZW1wb3JhbF9sYXllcnNfY2hl
Y2tlcnNfLmNsZWFyKCk7CiAgIGluaXRlZF8gPSBmYWxzZTsKICAgcmV0dXJuIHJldF92YWw7CiB9
CkBAIC0yNzgsMTAgKzI2Nyw2IEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpTZXRSYXRlQWxsb2Nh
dGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlLAogICByZXR1cm4gV0VC
UlRDX1ZJREVPX0NPREVDX09LOwogfQogCi1jb25zdCBjaGFyKiBMaWJ2cHhWcDhFbmNvZGVyOjpJ
bXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7Ci0gIHJldHVybiAibGlidnB4IjsKLX0KLQogdm9p
ZCBMaWJ2cHhWcDhFbmNvZGVyOjpTZXRTdHJlYW1TdGF0ZShib29sIHNlbmRfc3RyZWFtLCBpbnQg
c3RyZWFtX2lkeCkgewogICBpZiAoc2VuZF9zdHJlYW0gJiYgIXNlbmRfc3RyZWFtX1tzdHJlYW1f
aWR4XSkgewogICAgIC8vIE5lZWQgYSBrZXkgZnJhbWUgaWYgd2UgaGF2ZSBub3Qgc2VudCB0aGlz
IHN0cmVhbSBiZWZvcmUuCkBAIC0yOTQsMjEgKzI3OSwxOCBAQCB2b2lkIExpYnZweFZwOEVuY29k
ZXI6OlNldHVwVGVtcG9yYWxMYXllcnMoY29uc3QgVmlkZW9Db2RlYyYgY29kZWMpIHsKICAgUlRD
X0RDSEVDSyh0ZW1wb3JhbF9sYXllcnNfLmVtcHR5KCkpOwogICBpbnQgbnVtX3N0cmVhbXMgPSBT
aW11bGNhc3RVdGlsaXR5OjpOdW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMoY29kZWMpOwogICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bV9zdHJlYW1zOyArK2kpIHsKLSAgICBUZW1wb3JhbExheWVyc1R5
cGUgdHlwZTsKKyAgICBWcDhUZW1wb3JhbExheWVyc1R5cGUgdHlwZTsKICAgICBpbnQgbnVtX3Rl
bXBvcmFsX2xheWVycyA9CiAgICAgICAgIFNpbXVsY2FzdFV0aWxpdHk6Ok51bWJlck9mVGVtcG9y
YWxMYXllcnMoY29kZWMsIGkpOwogICAgIGlmIChTaW11bGNhc3RVdGlsaXR5OjpJc0NvbmZlcmVu
Y2VNb2RlU2NyZWVuc2hhcmUoY29kZWMpICYmIGkgPT0gMCkgewotICAgICAgdHlwZSA9IFRlbXBv
cmFsTGF5ZXJzVHlwZTo6a0JpdHJhdGVEeW5hbWljOworICAgICAgdHlwZSA9IFZwOFRlbXBvcmFs
TGF5ZXJzVHlwZTo6a0JpdHJhdGVEeW5hbWljOwogICAgICAgLy8gTGVnYWN5IHNjcmVlbnNoYXJl
IGxheWVycyBzdXBwb3J0cyBtYXggMiBsYXllcnMuCiAgICAgICBudW1fdGVtcG9yYWxfbGF5ZXJz
ID0gc3RkOjptYXg8aW50PigyLCBudW1fdGVtcG9yYWxfbGF5ZXJzKTsKICAgICB9IGVsc2Ugewot
ICAgICAgdHlwZSA9IFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybjsKKyAgICAgIHR5
cGUgPSBWcDhUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBhdHRlcm47CiAgICAgfQogICAgIHRl
bXBvcmFsX2xheWVyc18uZW1wbGFjZV9iYWNrKAotICAgICAgICBUZW1wb3JhbExheWVyczo6Q3Jl
YXRlVGVtcG9yYWxMYXllcnModHlwZSwgbnVtX3RlbXBvcmFsX2xheWVycykpOwotICAgIHRlbXBv
cmFsX2xheWVyc19jaGVja2Vyc18uZW1wbGFjZV9iYWNrKAotICAgICAgICBUZW1wb3JhbExheWVy
c0NoZWNrZXI6OkNyZWF0ZVRlbXBvcmFsTGF5ZXJzQ2hlY2tlcigKLSAgICAgICAgICAgIHR5cGUs
IG51bV90ZW1wb3JhbF9sYXllcnMpKTsKKyAgICAgICAgQ3JlYXRlVnA4VGVtcG9yYWxMYXllcnMo
dHlwZSwgbnVtX3RlbXBvcmFsX2xheWVycykpOwogICB9CiB9CiAKQEAgLTQ1MywxMCArNDM1LDEw
IEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGlu
c3QsCiAgIH0KICAgY3B1X3NwZWVkX2RlZmF1bHRfID0gY3B1X3NwZWVkX1swXTsKICAgLy8gU2V0
IGVuY29kaW5nIGNvbXBsZXhpdHkgKGNwdV9zcGVlZCkgYmFzZWQgb24gcmVzb2x1dGlvbiBhbmQv
b3IgcGxhdGZvcm0uCi0gIGNwdV9zcGVlZF9bMF0gPSBTZXRDcHVTcGVlZChpbnN0LT53aWR0aCwg
aW5zdC0+aGVpZ2h0KTsKKyAgY3B1X3NwZWVkX1swXSA9IEdldENwdVNwZWVkKGluc3QtPndpZHRo
LCBpbnN0LT5oZWlnaHQpOwogICBmb3IgKGludCBpID0gMTsgaSA8IG51bWJlcl9vZl9zdHJlYW1z
OyArK2kpIHsKICAgICBjcHVfc3BlZWRfW2ldID0KLSAgICAgICAgU2V0Q3B1U3BlZWQoaW5zdC0+
c2ltdWxjYXN0U3RyZWFtW251bWJlcl9vZl9zdHJlYW1zIC0gMSAtIGldLndpZHRoLAorICAgICAg
ICBHZXRDcHVTcGVlZChpbnN0LT5zaW11bGNhc3RTdHJlYW1bbnVtYmVyX29mX3N0cmVhbXMgLSAx
IC0gaV0ud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgIGluc3QtPnNpbXVsY2FzdFN0cmVhbVtu
dW1iZXJfb2Zfc3RyZWFtcyAtIDEgLSBpXS5oZWlnaHQpOwogICB9CiAgIGNvbmZpZ3VyYXRpb25z
X1swXS5nX3cgPSBpbnN0LT53aWR0aDsKQEAgLTUyOCw3ICs1MTAsNyBAQCBpbnQgTGlidnB4VnA4
RW5jb2Rlcjo6SW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBpbnN0LAogICByZXR1cm4gSW5p
dEFuZFNldENvbnRyb2xTZXR0aW5ncygpOwogfQogCi1pbnQgTGlidnB4VnA4RW5jb2Rlcjo6U2V0
Q3B1U3BlZWQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CitpbnQgTGlidnB4VnA4RW5jb2Rlcjo6
R2V0Q3B1U3BlZWQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CiAjaWYgZGVmaW5lZChXRUJSVENf
QVJDSF9BUk0pIHx8IGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNNjQpIHx8IFwKICAgICBkZWZpbmVk
KFdFQlJUQ19BTkRST0lEKQogICAvLyBPbiBtb2JpbGUgcGxhdGZvcm0sIHVzZSBhIGxvd2VyIHNw
ZWVkIHNldHRpbmcgZm9yIGxvd2VyIHJlc29sdXRpb25zIGZvcgpAQCAtNTM3LDYgKzUxOSwxMSBA
QCBpbnQgTGlidnB4VnA4RW5jb2Rlcjo6U2V0Q3B1U3BlZWQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KSB7CiAgIGlmIChudW1iZXJfb2ZfY29yZXNfIDw9IDMpCiAgICAgcmV0dXJuIC0xMjsKIAorICBp
ZiAoZXhwZXJpbWVudGFsX2NwdV9zcGVlZF9jb25maWdfYXJtXykgeworICAgIHJldHVybiBDcHVT
cGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKHdpZHRoICogaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpleHBlcmltZW50YWxfY3B1X3NwZWVkX2NvbmZpZ19h
cm1fKTsKKyAgfQorCiAgIGlmICh3aWR0aCAqIGhlaWdodCA8PSAzNTIgKiAyODgpCiAgICAgcmV0
dXJuIC04OwogICBlbHNlIGlmICh3aWR0aCAqIGhlaWdodCA8PSA2NDAgKiA0ODApCkBAIC02NDQs
MTQgKzYzMSw2IEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpJbml0QW5kU2V0Q29udHJvbFNldHRp
bmdzKCkgewogICAgIGxpYnZweF8tPmNvZGVjX2NvbnRyb2woCiAgICAgICAgICYoZW5jb2RlcnNf
W2ldKSwgVlA4RV9TRVRfU0NSRUVOX0NPTlRFTlRfTU9ERSwKICAgICAgICAgY29kZWNfLm1vZGUg
PT0gVmlkZW9Db2RlY01vZGU6OmtTY3JlZW5zaGFyaW5nID8gMnUgOiAwdSk7Ci0gICAgLy8gQXBw
bHkgYm9vc3Qgb24gZ29sZGVuIGZyYW1lcyAoaGFzIG9ubHkgZWZmZWN0IHdoZW4gcmVzaWxpZW5j
ZSBpcyBvZmYpLgotICAgIGlmICh1c2VfZ2ZfYm9vc3RfICYmIGNvbmZpZ3VyYXRpb25zX1swXS5n
X2Vycm9yX3Jlc2lsaWVudCA9PSAwKSB7Ci0gICAgICBpbnQgZ2ZfYm9vc3RfcGVyY2VudDsKLSAg
ICAgIGlmIChHZXRHZkJvb3N0UGVyY2VudGFnZUZyb21GaWVsZFRyaWFsR3JvdXAoJmdmX2Jvb3N0
X3BlcmNlbnQpKSB7Ci0gICAgICAgIGxpYnZweF8tPmNvZGVjX2NvbnRyb2woJihlbmNvZGVyc19b
aV0pLCBWUDhFX1NFVF9HRl9DQlJfQk9PU1RfUENULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdmX2Jvb3N0X3BlcmNlbnQpOwotICAgICAgfQotICAgIH0KICAgfQogICBpbml0ZWRf
ID0gdHJ1ZTsKICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKQEAgLTc1MCw3ICs3Mjks
NyBAQCBpbnQgTGlidnB4VnA4RW5jb2Rlcjo6RW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1l
LAogICAgIH0KICAgfQogICB2cHhfZW5jX2ZyYW1lX2ZsYWdzX3QgZmxhZ3Nba01heFNpbXVsY2Fz
dFN0cmVhbXNdOwotICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnc1trTWF4
U2ltdWxjYXN0U3RyZWFtc107CisgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0bF9j
b25maWdzW2tNYXhTaW11bGNhc3RTdHJlYW1zXTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bmNvZGVyc18uc2l6ZSgpOyArK2kpIHsKICAgICB0bF9jb25maWdzW2ldID0gdGVtcG9yYWxfbGF5
ZXJzX1tpXS0+VXBkYXRlTGF5ZXJDb25maWcoZnJhbWUudGltZXN0YW1wKCkpOwogICAgIGlmICh0
bF9jb25maWdzW2ldLmRyb3BfZnJhbWUpIHsKQEAgLTgzMSwxMCArODEwLDExIEBAIGludCBMaWJ2
cHhWcDhFbmNvZGVyOjpFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUsCiAgICAgfQogICAg
IGlmIChlcnJvcikKICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0gICAg
dGltZXN0YW1wXyArPSBkdXJhdGlvbjsKICAgICAvLyBFeGFtaW5lcyBmcmFtZSB0aW1lc3RhbXBz
IG9ubHkuCiAgICAgZXJyb3IgPSBHZXRFbmNvZGVkUGFydGl0aW9ucyhmcmFtZSk7CiAgIH0KKyAg
Ly8gVE9ETyhzcHJhbmcpOiBTaG91bGRuJ3Qgd2UgdXNlIHRoZSBmcmFtZSB0aW1lc3RhbXAgaW5z
dGVhZD8KKyAgdGltZXN0YW1wXyArPSBkdXJhdGlvbjsKICAgcmV0dXJuIGVycm9yOwogfQogCkBA
IC04NDUsNyArODI1LDYgQEAgdm9pZCBMaWJ2cHhWcDhFbmNvZGVyOjpQb3B1bGF0ZUNvZGVjU3Bl
Y2lmaWMoQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZXN0YW1wKSB7CiAgIGFz
c2VydChjb2RlY19zcGVjaWZpYyAhPSBOVUxMKTsKICAgY29kZWNfc3BlY2lmaWMtPmNvZGVjVHlw
ZSA9IGtWaWRlb0NvZGVjVlA4OwotICBjb2RlY19zcGVjaWZpYy0+Y29kZWNfbmFtZSA9IEltcGxl
bWVudGF0aW9uTmFtZSgpOwogICBDb2RlY1NwZWNpZmljSW5mb1ZQOCogdnA4SW5mbyA9ICYoY29k
ZWNfc3BlY2lmaWMtPmNvZGVjU3BlY2lmaWMuVlA4KTsKICAgdnA4SW5mby0+a2V5SWR4ID0ga05v
S2V5SWR4OyAgLy8gVE9ETyhobHVuZGluKSBwb3B1bGF0ZSB0aGlzCiAgIHZwOEluZm8tPm5vblJl
ZmVyZW5jZSA9IChwa3QuZGF0YS5mcmFtZS5mbGFncyAmIFZQWF9GUkFNRV9JU19EUk9QUEFCTEUp
ICE9IDA7CkBAIC04NjMsMTQgKzg0Miw5IEBAIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpHZXRFbmNv
ZGVkUGFydGl0aW9ucyhjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9pbWFnZSkgewogICBmb3IgKHNp
emVfdCBlbmNvZGVyX2lkeCA9IDA7IGVuY29kZXJfaWR4IDwgZW5jb2RlcnNfLnNpemUoKTsKICAg
ICAgICArK2VuY29kZXJfaWR4LCAtLXN0cmVhbV9pZHgpIHsKICAgICB2cHhfY29kZWNfaXRlcl90
IGl0ZXIgPSBOVUxMOwotICAgIGludCBwYXJ0X2lkeCA9IDA7CiAgICAgZW5jb2RlZF9pbWFnZXNf
W2VuY29kZXJfaWR4XS5fbGVuZ3RoID0gMDsKICAgICBlbmNvZGVkX2ltYWdlc19bZW5jb2Rlcl9p
ZHhdLl9mcmFtZVR5cGUgPSBrVmlkZW9GcmFtZURlbHRhOwotICAgIFJUUEZyYWdtZW50YXRpb25I
ZWFkZXIgZnJhZ19pbmZvOwotICAgIC8vIGtUb2tlblBhcnRpdGlvbnMgaXMgbnVtYmVyIG9mIGJp
dHMgdXNlZC4KLSAgICBmcmFnX2luZm8uVmVyaWZ5QW5kQWxsb2NhdGVGcmFnbWVudGF0aW9uSGVh
ZGVyKCgxIDw8IGtUb2tlblBhcnRpdGlvbnMpICsgMSk7CiAgICAgQ29kZWNTcGVjaWZpY0luZm8g
Y29kZWNfc3BlY2lmaWM7Ci0gICAgYm9vbCBpc19rZXlmcmFtZSA9IGZhbHNlOwogICAgIGNvbnN0
IHZweF9jb2RlY19jeF9wa3RfdCogcGt0ID0gTlVMTDsKICAgICB3aGlsZSAoKHBrdCA9IGxpYnZw
eF8tPmNvZGVjX2dldF9jeF9kYXRhKCZlbmNvZGVyc19bZW5jb2Rlcl9pZHhdLCAmaXRlcikpICE9
CiAgICAgICAgICAgIE5VTEwpIHsKQEAgLTg4NywxMyArODYxLDggQEAgaW50IExpYnZweFZwOEVu
Y29kZXI6OkdldEVuY29kZWRQYXJ0aXRpb25zKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2ltYWdl
KSB7CiAgICAgICAgICAgfQogICAgICAgICAgIG1lbWNweSgmZW5jb2RlZF9pbWFnZXNfW2VuY29k
ZXJfaWR4XS5fYnVmZmVyW2xlbmd0aF0sCiAgICAgICAgICAgICAgICAgIHBrdC0+ZGF0YS5mcmFt
ZS5idWYsIHBrdC0+ZGF0YS5mcmFtZS5zeik7Ci0gICAgICAgICAgZnJhZ19pbmZvLmZyYWdtZW50
YXRpb25PZmZzZXRbcGFydF9pZHhdID0gbGVuZ3RoOwotICAgICAgICAgIGZyYWdfaW5mby5mcmFn
bWVudGF0aW9uTGVuZ3RoW3BhcnRfaWR4XSA9IHBrdC0+ZGF0YS5mcmFtZS5zejsKLSAgICAgICAg
ICBmcmFnX2luZm8uZnJhZ21lbnRhdGlvblBsVHlwZVtwYXJ0X2lkeF0gPSAwOyAgLy8gbm90IGtu
b3duIGhlcmUKLSAgICAgICAgICBmcmFnX2luZm8uZnJhZ21lbnRhdGlvblRpbWVEaWZmW3BhcnRf
aWR4XSA9IDA7CiAgICAgICAgICAgZW5jb2RlZF9pbWFnZXNfW2VuY29kZXJfaWR4XS5fbGVuZ3Ro
ICs9IHBrdC0+ZGF0YS5mcmFtZS5zejsKICAgICAgICAgICBhc3NlcnQobGVuZ3RoIDw9IGVuY29k
ZWRfaW1hZ2VzX1tlbmNvZGVyX2lkeF0uX3NpemUpOwotICAgICAgICAgICsrcGFydF9pZHg7CiAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTkwNCw3ICs4
NzMsNiBAQCBpbnQgTGlidnB4VnA4RW5jb2Rlcjo6R2V0RW5jb2RlZFBhcnRpdGlvbnMoY29uc3Qg
VmlkZW9GcmFtZSYgaW5wdXRfaW1hZ2UpIHsKICAgICAgICAgLy8gY2hlY2sgaWYgZW5jb2RlZCBm
cmFtZSBpcyBhIGtleSBmcmFtZQogICAgICAgICBpZiAocGt0LT5kYXRhLmZyYW1lLmZsYWdzICYg
VlBYX0ZSQU1FX0lTX0tFWSkgewogICAgICAgICAgIGVuY29kZWRfaW1hZ2VzX1tlbmNvZGVyX2lk
eF0uX2ZyYW1lVHlwZSA9IGtWaWRlb0ZyYW1lS2V5OwotICAgICAgICAgIGlzX2tleWZyYW1lID0g
dHJ1ZTsKICAgICAgICAgfQogICAgICAgICBlbmNvZGVkX2ltYWdlc19bZW5jb2Rlcl9pZHhdLlNl
dFNwYXRpYWxJbmRleChzdHJlYW1faWR4KTsKICAgICAgICAgUG9wdWxhdGVDb2RlY1NwZWNpZmlj
KCZjb2RlY19zcGVjaWZpYywgKnBrdCwgc3RyZWFtX2lkeCwgZW5jb2Rlcl9pZHgsCkBAIC05MzUs
NyArOTAzLDcgQEAgaW50IExpYnZweFZwOEVuY29kZXI6OkdldEVuY29kZWRQYXJ0aXRpb25zKGNv
bnN0IFZpZGVvRnJhbWUmIGlucHV0X2ltYWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnFwXzEyOCk7CiAgICAgICAgIGVuY29kZWRfaW1hZ2VzX1tlbmNvZGVyX2lkeF0ucXBf
ID0gcXBfMTI4OwogICAgICAgICBlbmNvZGVkX2NvbXBsZXRlX2NhbGxiYWNrXy0+T25FbmNvZGVk
SW1hZ2UoZW5jb2RlZF9pbWFnZXNfW2VuY29kZXJfaWR4XSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2RlY19zcGVjaWZpYywgJmZyYWdfaW5m
byk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
Y29kZWNfc3BlY2lmaWMsIG51bGxwdHIpOwogICAgICAgfSBlbHNlIGlmICghdGVtcG9yYWxfbGF5
ZXJzX1tzdHJlYW1faWR4XQogICAgICAgICAgICAgICAgICAgICAgIC0+U3VwcG9ydHNFbmNvZGVy
RnJhbWVEcm9wcGluZygpKSB7CiAgICAgICAgIHJlc3VsdCA9IFdFQlJUQ19WSURFT19DT0RFQ19U
QVJHRVRfQklUUkFURV9PVkVSU0hPT1Q7CkBAIC05NTAsMTcgKzkxOCwyMSBAQCBpbnQgTGlidnB4
VnA4RW5jb2Rlcjo6R2V0RW5jb2RlZFBhcnRpdGlvbnMoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRf
aW1hZ2UpIHsKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0
dGluZ3MgTGlidnB4VnA4RW5jb2Rlcjo6R2V0U2NhbGluZ1NldHRpbmdzKCkgY29uc3QgeworVmlk
ZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBMaWJ2cHhWcDhFbmNvZGVyOjpHZXRFbmNvZGVySW5mbygp
IGNvbnN0IHsKKyAgRW5jb2RlckluZm8gaW5mbzsKKyAgaW5mby5zdXBwb3J0c19uYXRpdmVfaGFu
ZGxlID0gZmFsc2U7CisgIGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSA9ICJsaWJ2cHgiOworICBp
bmZvLmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlciA9IHRydXN0ZWRfcmF0ZV9jb250cm9sbGVy
XzsKKwogICBjb25zdCBib29sIGVuYWJsZV9zY2FsaW5nID0gZW5jb2RlcnNfLnNpemUoKSA9PSAx
ICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uc19bMF0ucmNf
ZHJvcGZyYW1lX3RocmVzaCA+IDAgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
ZGVjXy5WUDgoKS5hdXRvbWF0aWNSZXNpemVPbjsKLSAgcmV0dXJuIGVuYWJsZV9zY2FsaW5nID8g
VmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3Moa0xvd1ZwOFFwVGhyZXNob2xkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrSGlnaFZw
OFFwVGhyZXNob2xkKQotICAgICAgICAgICAgICAgICAgICAgICAgOiBWaWRlb0VuY29kZXI6OlNj
YWxpbmdTZXR0aW5nczo6a09mZjsKLX0KKyAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0gZW5hYmxl
X3NjYWxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gVmlkZW9FbmNvZGVyOjpT
Y2FsaW5nU2V0dGluZ3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTG93
VnA4UXBUaHJlc2hvbGQsIGtIaWdoVnA4UXBUaHJlc2hvbGQpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjprT2ZmOwogCi1pbnQg
TGlidnB4VnA4RW5jb2Rlcjo6U2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0TG9z
cywgaW50NjRfdCBydHQpIHsKLSAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKKyAgcmV0
dXJuIGluZm87CiB9CiAKIGludCBMaWJ2cHhWcDhFbmNvZGVyOjpSZWdpc3RlckVuY29kZUNvbXBs
ZXRlQ2FsbGJhY2soCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZW5j
b2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2VuY29kZXIuaAppbmRleCAzYzIw
NjcyZGYyY2Q0ZTYwNDFhMGZiNTM4OWE4NDI1ZTQyNWI2YTMxLi5kZjJkYmNlZTU5ZTY2M2FjMjdk
M2E3YjExZTJkMTFhZDRmNDk5ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZw
eF92cDhfZW5jb2Rlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9lbmNvZGVy
LmgKQEAgLTE0LDE1ICsxNCwxNSBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oIgogI2luY2x1ZGUgImFw
aS92aWRlby92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9f
ZW5jb2Rlci5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVy
cy5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
Ci0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2luY2x1ZGUvdmlkZW9fZnJhbWUuaCIKLSNpbmNsdWRl
ICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdGVtcG9yYWxfbGF5ZXJz
X2NoZWNrZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2lu
Y2x1ZGUvdnA4LmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9p
bmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2xpYnZweF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBlcmltZW50LmgiCiAKICNpbmNsdWRlICJ2
cHgvdnA4Y3guaCIKICNpbmNsdWRlICJ2cHgvdnB4X2VuY29kZXIuaCIKQEAgLTQ3LDIzICs0Nywx
OSBAQCBjbGFzcyBMaWJ2cHhWcDhFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAKICAg
aW50IFJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhFbmNvZGVkSW1hZ2VDYWxsYmFjayog
Y2FsbGJhY2spIG92ZXJyaWRlOwogCi0gIGludCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJf
dCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwotCiAgIGludCBTZXRSYXRlQWxs
b2NhdGlvbihjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgbmV3X2ZyYW1lcmF0ZSkgb3ZlcnJpZGU7CiAKLSAgU2Nh
bGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IG92ZXJyaWRlOwotCi0gIGNv
bnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICBFbmNvZGVy
SW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0IG92ZXJyaWRlOwogCiAgIHN0YXRpYyB2cHhfZW5j
X2ZyYW1lX2ZsYWdzX3QgRW5jb2RlRmxhZ3MoCi0gICAgICBjb25zdCBUZW1wb3JhbExheWVyczo6
RnJhbWVDb25maWcmIHJlZmVyZW5jZXMpOworICAgICAgY29uc3QgVnA4VGVtcG9yYWxMYXllcnM6
OkZyYW1lQ29uZmlnJiByZWZlcmVuY2VzKTsKIAogIHByaXZhdGU6CiAgIHZvaWQgU2V0dXBUZW1w
b3JhbExheWVycyhjb25zdCBWaWRlb0NvZGVjJiBjb2RlYyk7CiAKLSAgLy8gU2V0IHRoZSBjcHVf
c3BlZWQgc2V0dGluZyBmb3IgZW5jb2RlciBiYXNlZCBvbiByZXNvbHV0aW9uIGFuZC9vciBwbGF0
Zm9ybS4KLSAgaW50IFNldENwdVNwZWVkKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgIC8vIEdl
dCB0aGUgY3B1X3NwZWVkIHNldHRpbmcgZm9yIGVuY29kZXIgYmFzZWQgb24gcmVzb2x1dGlvbiBh
bmQvb3IgcGxhdGZvcm0uCisgIGludCBHZXRDcHVTcGVlZChpbnQgd2lkdGgsIGludCBoZWlnaHQp
OwogCiAgIC8vIERldGVybWluZSBudW1iZXIgb2YgZW5jb2RlciB0aHJlYWRzIHRvIHVzZS4KICAg
aW50IE51bWJlck9mVGhyZWFkcyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBudW1iZXJfb2Zf
Y29yZXMpOwpAQCAtODcsNyArODMsMTAgQEAgY2xhc3MgTGlidnB4VnA4RW5jb2RlciA6IHB1Ymxp
YyBWaWRlb0VuY29kZXIgewogICB1aW50MzJfdCBGcmFtZURyb3BUaHJlc2hvbGQoc2l6ZV90IHNw
YXRpYWxfaWR4KSBjb25zdDsKIAogICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8TGlidnB4SW50ZXJm
YWNlPiBsaWJ2cHhfOwotICBjb25zdCBib29sIHVzZV9nZl9ib29zdF87CisKKyAgY29uc3QgYWJz
bDo6b3B0aW9uYWw8c3RkOjp2ZWN0b3I8Q3B1U3BlZWRFeHBlcmltZW50OjpDb25maWc+PgorICAg
ICAgZXhwZXJpbWVudGFsX2NwdV9zcGVlZF9jb25maWdfYXJtXzsKKyAgY29uc3QgYm9vbCB0cnVz
dGVkX3JhdGVfY29udHJvbGxlcl87CiAKICAgRW5jb2RlZEltYWdlQ2FsbGJhY2sqIGVuY29kZWRf
Y29tcGxldGVfY2FsbGJhY2tfOwogICBWaWRlb0NvZGVjIGNvZGVjXzsKQEAgLTk3LDggKzk2LDcg
QEAgY2xhc3MgTGlidnB4VnA4RW5jb2RlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICBpbnQg
Y3B1X3NwZWVkX2RlZmF1bHRfOwogICBpbnQgbnVtYmVyX29mX2NvcmVzXzsKICAgdWludDMyX3Qg
cmNfbWF4X2ludHJhX3RhcmdldF87Ci0gIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUZW1w
b3JhbExheWVycz4+IHRlbXBvcmFsX2xheWVyc187Ci0gIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxUZW1wb3JhbExheWVyc0NoZWNrZXI+PiB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlcnNfOwor
ICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VnA4VGVtcG9yYWxMYXllcnM+PiB0ZW1wb3Jh
bF9sYXllcnNfOwogICBzdGQ6OnZlY3Rvcjxib29sPiBrZXlfZnJhbWVfcmVxdWVzdF87CiAgIHN0
ZDo6dmVjdG9yPGJvb2w+IHNlbmRfc3RyZWFtXzsKICAgc3RkOjp2ZWN0b3I8aW50PiBjcHVfc3Bl
ZWRfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X3NpbXVsY2FzdF90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X3NpbXVsY2FzdF90ZXN0LmNjCmlu
ZGV4IDVmOTc0ZDY0M2JiMGVlMzJjZDZmNzZkYmUwMGFlM2IxOWYxNTVkMWUuLmQ0OTNlMmFjZWI2
NDg3NzFmYTk1ZWQ1ZTIzY2MyMDhlMzBhYjJjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDgvbGlidnB4X3ZwOF9zaW11bGNhc3RfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xp
YnZweF92cDhfc2ltdWxjYXN0X3Rlc3QuY2MKQEAgLTEzLDkgKzEzLDkgQEAKICNpbmNsdWRlICJh
YnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvdGVzdC9jcmVhdGVfc2ltdWxjYXN0
X3Rlc3RfZml4dHVyZS5oIgogI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsY2FzdF90ZXN0X2ZpeHR1
cmUuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2Zh
Y3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNvZGVy
X2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2lu
Y2x1ZGUvdnA4LmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19kZWNvZGVyX2ZhY3Rv
cnkuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgog
I2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVycy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmNjCmluZGV4IDc2YzQzODJhMjFmOGRmZWVjZTdlZTI2Y2Mw
ZmY3OGQzMWUyZmVkNDYuLmVkZTIxZTU1NGQ3MjY0OGE5OTAwNWU4YTc3ZDljYmRhOWY2YTcyNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmNjCkBAIC01Myw3ICs1Myw3IEBA
IFNjcmVlbnNoYXJlTGF5ZXJzOjpTY3JlZW5zaGFyZUxheWVycyhpbnQgbnVtX3RlbXBvcmFsX2xh
eWVycywgQ2xvY2sqIGNsb2NrKQogICAgICAgZW5jb2RlX2ZyYW1lcmF0ZV8oMTAwMC4wZiwgMTAw
MC4wZiksICAvLyAxIHNlY29uZCB3aW5kb3csIHNlY29uZCBzY2FsZS4KICAgICAgIGJpdHJhdGVf
dXBkYXRlZF8oZmFsc2UpLAogICAgICAgY2hlY2tlcl8oVGVtcG9yYWxMYXllcnNDaGVja2VyOjpD
cmVhdGVUZW1wb3JhbExheWVyc0NoZWNrZXIoCi0gICAgICAgICAgVGVtcG9yYWxMYXllcnNUeXBl
OjprQml0cmF0ZUR5bmFtaWMsCisgICAgICAgICAgVnA4VGVtcG9yYWxMYXllcnNUeXBlOjprQml0
cmF0ZUR5bmFtaWMsCiAgICAgICAgICAgbnVtX3RlbXBvcmFsX2xheWVycykpIHsKICAgUlRDX0NI
RUNLX0dUKG51bWJlcl9vZl90ZW1wb3JhbF9sYXllcnNfLCAwKTsKICAgUlRDX0NIRUNLX0xFKG51
bWJlcl9vZl90ZW1wb3JhbF9sYXllcnNfLCBrTWF4TnVtVGVtcG9yYWxMYXllcnMpOwpAQCAtNjgs
NyArNjgsNyBAQCBib29sIFNjcmVlbnNoYXJlTGF5ZXJzOjpTdXBwb3J0c0VuY29kZXJGcmFtZURy
b3BwaW5nKCkgY29uc3QgewogICByZXR1cm4gZmFsc2U7CiB9CiAKLVRlbXBvcmFsTGF5ZXJzOjpG
cmFtZUNvbmZpZyBTY3JlZW5zaGFyZUxheWVyczo6VXBkYXRlTGF5ZXJDb25maWcoCitWcDhUZW1w
b3JhbExheWVyczo6RnJhbWVDb25maWcgU2NyZWVuc2hhcmVMYXllcnM6OlVwZGF0ZUxheWVyQ29u
ZmlnKAogICAgIHVpbnQzMl90IHRpbWVzdGFtcCkgewogICBhdXRvIGl0ID0gcGVuZGluZ19mcmFt
ZV9jb25maWdzXy5maW5kKHRpbWVzdGFtcCk7CiAgIGlmIChpdCAhPSBwZW5kaW5nX2ZyYW1lX2Nv
bmZpZ3NfLmVuZCgpKSB7CkBAIC03OSw3ICs3OSw3IEBAIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNv
bmZpZyBTY3JlZW5zaGFyZUxheWVyczo6VXBkYXRlTGF5ZXJDb25maWcoCiAgIGlmIChudW1iZXJf
b2ZfdGVtcG9yYWxfbGF5ZXJzXyA8PSAxKSB7CiAgICAgLy8gTm8gZmxhZ3MgbmVlZGVkIGZvciAx
IGxheWVyIHNjcmVlbnNoYXJlLgogICAgIC8vIFRPRE8ocGJvcyk6IENvbnNpZGVyIHVwZGF0aW5n
IG9ubHkgbGFzdCwgYW5kIG5vdCBhbGwgYnVmZmVycy4KLSAgICBUZW1wb3JhbExheWVyczo6RnJh
bWVDb25maWcgdGxfY29uZmlnKAorICAgIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyB0
bF9jb25maWcoCiAgICAgICAgIGtSZWZlcmVuY2VBbmRVcGRhdGUsIGtSZWZlcmVuY2VBbmRVcGRh
dGUsIGtSZWZlcmVuY2VBbmRVcGRhdGUpOwogICAgIHBlbmRpbmdfZnJhbWVfY29uZmlnc19bdGlt
ZXN0YW1wXSA9IHRsX2NvbmZpZzsKICAgICByZXR1cm4gdGxfY29uZmlnOwpAQCAtMTAwLDcgKzEw
MCw3IEBAIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyBTY3JlZW5zaGFyZUxheWVyczo6VXBk
YXRlTGF5ZXJDb25maWcoCiAgICAgLy8gYXZlcmFnaW5nIHdpbmRvdywgb3IgaWYgZnJhbWUgaW50
ZXJ2YWwgaXMgYmVsb3cgOTAlIG9mIGRlc2lyZWQgdmFsdWUsCiAgICAgLy8gZHJvcCBmcmFtZS4K
ICAgICBpZiAoZW5jb2RlX2ZyYW1lcmF0ZV8uUmF0ZShub3dfbXMpLnZhbHVlX29yKDApID4gKnRh
cmdldF9mcmFtZXJhdGVfKQotICAgICAgcmV0dXJuIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZp
ZyhrTm9uZSwga05vbmUsIGtOb25lKTsKKyAgICAgIHJldHVybiBWcDhUZW1wb3JhbExheWVyczo6
RnJhbWVDb25maWcoa05vbmUsIGtOb25lLCBrTm9uZSk7CiAKICAgICAvLyBQcmltYXJpbHkgY2hl
Y2sgaWYgZnJhbWUgaW50ZXJ2YWwgaXMgdG9vIHNob3J0IHVzaW5nIGZyYW1lIHRpbWVzdGFtcHMs
CiAgICAgLy8gYXMgaWYgdGhleSBhcmUgY29ycmVjdCB0aGV5IHdvbid0IGJlIGFmZmVjdGVkIGJ5
IHF1ZXVpbmcgaW4gd2VicnRjLgpAQCAtMTA4LDcgKzEwOCw3IEBAIFRlbXBvcmFsTGF5ZXJzOjpG
cmFtZUNvbmZpZyBTY3JlZW5zaGFyZUxheWVyczo6VXBkYXRlTGF5ZXJDb25maWcoCiAgICAgICAg
IGtPbmVTZWNvbmQ5MEtoeiAvICp0YXJnZXRfZnJhbWVyYXRlXzsKICAgICBpZiAobGFzdF90aW1l
c3RhbXBfICE9IC0xICYmIHRzX2RpZmYgPiAwKSB7CiAgICAgICBpZiAodHNfZGlmZiA8IDg1ICog
ZXhwZWN0ZWRfZnJhbWVfaW50ZXJ2YWxfOTBraHogLyAxMDApIHsKLSAgICAgICAgcmV0dXJuIFRl
bXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrTm9uZSwga05vbmUsIGtOb25lKTsKKyAgICAgICAg
cmV0dXJuIFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrTm9uZSwga05vbmUsIGtOb25l
KTsKICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgLy8gVGltZXN0YW1wcyBsb29rcyBvZmYs
IHVzZSByZWFsdGltZSBjbG9jayBoZXJlIGluc3RlYWQuCkBAIC0xMTYsNyArMTE2LDcgQEAgVGVt
cG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnIFNjcmVlbnNoYXJlTGF5ZXJzOjpVcGRhdGVMYXllckNv
bmZpZygKICAgICAgIGlmIChsYXN0X2ZyYW1lX3RpbWVfbXNfICE9IC0xICYmCiAgICAgICAgICAg
bm93X21zIC0gbGFzdF9mcmFtZV90aW1lX21zXyA8CiAgICAgICAgICAgICAgICg4NSAqIGV4cGVj
dGVkX2ZyYW1lX2ludGVydmFsX21zKSAvIDEwMCkgewotICAgICAgICByZXR1cm4gVGVtcG9yYWxM
YXllcnM6OkZyYW1lQ29uZmlnKGtOb25lLCBrTm9uZSwga05vbmUpOworICAgICAgICByZXR1cm4g
VnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnKGtOb25lLCBrTm9uZSwga05vbmUpOwogICAg
ICAgfQogICAgIH0KICAgfQpAQCAtMTgyLDMwICsxODIsMzAgQEAgVGVtcG9yYWxMYXllcnM6OkZy
YW1lQ29uZmlnIFNjcmVlbnNoYXJlTGF5ZXJzOjpVcGRhdGVMYXllckNvbmZpZygKICAgICAgIFJU
Q19OT1RSRUFDSEVEKCk7CiAgIH0KIAotICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxf
Y29uZmlnOworICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29uZmlnOwogICAv
LyBUT0RPKHBib3MpOiBDb25zaWRlciByZWZlcmVuY2luZyBidXQgbm90IHVwZGF0aW5nIHRoZSAn
YWx0JyBidWZmZXIgZm9yIGFsbAogICAvLyBsYXllcnMuCiAgIHN3aXRjaCAobGF5ZXJfc3RhdGUp
IHsKICAgICBjYXNlIFRlbXBvcmFsTGF5ZXJTdGF0ZTo6a0Ryb3A6Ci0gICAgICB0bF9jb25maWcg
PSBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa05vbmUsIGtOb25lLCBrTm9uZSk7CisgICAg
ICB0bF9jb25maWcgPSBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa05vbmUsIGtOb25l
LCBrTm9uZSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFRlbXBvcmFsTGF5ZXJTdGF0ZTo6a1Rs
MDoKICAgICAgIC8vIFRMMCBvbmx5IHJlZmVyZW5jZXMgYW5kIHVwZGF0ZXMgJ2xhc3QnLgogICAg
ICAgdGxfY29uZmlnID0KLSAgICAgICAgICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcoa1Jl
ZmVyZW5jZUFuZFVwZGF0ZSwga05vbmUsIGtOb25lKTsKKyAgICAgICAgICBWcDhUZW1wb3JhbExh
eWVyczo6RnJhbWVDb25maWcoa1JlZmVyZW5jZUFuZFVwZGF0ZSwga05vbmUsIGtOb25lKTsKICAg
ICAgIHRsX2NvbmZpZy5wYWNrZXRpemVyX3RlbXBvcmFsX2lkeCA9IDA7CiAgICAgICBicmVhazsK
ICAgICBjYXNlIFRlbXBvcmFsTGF5ZXJTdGF0ZTo6a1RsMToKICAgICAgIC8vIFRMMSByZWZlcmVu
Y2VzIGJvdGggJ2xhc3QnIGFuZCAnZ29sZGVuJyBidXQgb25seSB1cGRhdGVzICdnb2xkZW4nLgot
ICAgICAgdGxfY29uZmlnID0KLSAgICAgICAgICBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWco
a1JlZmVyZW5jZSwga1JlZmVyZW5jZUFuZFVwZGF0ZSwga05vbmUpOworICAgICAgdGxfY29uZmln
ID0gVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnKGtSZWZlcmVuY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1JlZmVyZW5jZUFuZFVwZGF0
ZSwga05vbmUpOwogICAgICAgdGxfY29uZmlnLnBhY2tldGl6ZXJfdGVtcG9yYWxfaWR4ID0gMTsK
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGVtcG9yYWxMYXllclN0YXRlOjprVGwxU3luYzoKICAg
ICAgIC8vIFByZWRpY3QgZnJvbSBvbmx5IFRMMCB0byBhbGxvdyBwYXJ0aWNpcGFudHMgdG8gc3dp
dGNoIHRvIHRoZSBoaWdoCiAgICAgICAvLyBiaXRyYXRlIHN0cmVhbS4gVXBkYXRlcyAnZ29sZGVu
JyBzbyB0aGF0IFRMMSBjYW4gY29udGludWUgdG8gcmVmZXIgdG8KICAgICAgIC8vIGFuZCB1cGRh
dGUgJ2dvbGRlbicgZnJvbSB0aGlzIHBvaW50IG9uLgotICAgICAgdGxfY29uZmlnID0gVGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnKGtSZWZlcmVuY2UsIGtVcGRhdGUsIGtOb25lKTsKKyAgICAg
IHRsX2NvbmZpZyA9IFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyhrUmVmZXJlbmNlLCBr
VXBkYXRlLCBrTm9uZSk7CiAgICAgICB0bF9jb25maWcucGFja2V0aXplcl90ZW1wb3JhbF9pZHgg
PSAxOwogICAgICAgYnJlYWs7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvc2Ny
ZWVuc2hhcmVfbGF5ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVycy5o
CmluZGV4IDYxOTNiZTM2MDAxMGRmNjZiN2I0ZjI4MWYyYTRjNmI0OTA4YWEyMzguLjAzNTliMmMz
M2ZjNTkwY2MwZmNjMWNlY2E0NDI1ZTU1NzZiNTdkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5z
aGFyZV9sYXllcnMuaApAQCAtMTMsOCArMTMsOCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9s
YXllcnMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1
ZGUvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvZnJhbWVfZHJvcHBlci5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3JhdGVfc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGls
cy5oIgpAQCAtMjQsNyArMjQsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIHN0cnVjdCBDb2RlY1Nw
ZWNpZmljSW5mb1ZQODsKIGNsYXNzIENsb2NrOwogCi1jbGFzcyBTY3JlZW5zaGFyZUxheWVycyA6
IHB1YmxpYyBUZW1wb3JhbExheWVycyB7CitjbGFzcyBTY3JlZW5zaGFyZUxheWVycyA6IHB1Ymxp
YyBWcDhUZW1wb3JhbExheWVycyB7CiAgcHVibGljOgogICBzdGF0aWMgY29uc3QgZG91YmxlIGtN
YXhUTDBGcHNSZWR1Y3Rpb247CiAgIHN0YXRpYyBjb25zdCBkb3VibGUga0FjY2VwdGFibGVUYXJn
ZXRPdmVyc2hvb3Q7CkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNjcmVlbnNoYXJlTGF5ZXJzIDog
cHVibGljIFRlbXBvcmFsTGF5ZXJzIHsKIAogICAvLyBSZXR1cm5zIHRoZSByZWNvbW1lbmRlZCBW
UDggZW5jb2RlIGZsYWdzIG5lZWRlZC4gTWF5IHJlZnJlc2ggdGhlIGRlY29kZXIKICAgLy8gYW5k
L29yIHVwZGF0ZSB0aGUgcmVmZXJlbmNlIGJ1ZmZlcnMuCi0gIFRlbXBvcmFsTGF5ZXJzOjpGcmFt
ZUNvbmZpZyBVcGRhdGVMYXllckNvbmZpZygKKyAgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29u
ZmlnIFVwZGF0ZUxheWVyQ29uZmlnKAogICAgICAgdWludDMyX3QgcnRwX3RpbWVzdGFtcCkgb3Zl
cnJpZGU7CiAKICAgLy8gTmV3IHRhcmdldCBiaXRyYXRlLCBwZXIgdGVtcG9yYWwgbGF5ZXIuCkBA
IC03NCw3ICs3NCw3IEBAIGNsYXNzIFNjcmVlbnNoYXJlTGF5ZXJzIDogcHVibGljIFRlbXBvcmFs
TGF5ZXJzIHsKICAgaW50IG1heF9xcF87CiAgIHVpbnQzMl90IG1heF9kZWJ0X2J5dGVzXzsKIAot
ICBzdGQ6Om1hcDx1aW50MzJfdCwgVGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnPiBwZW5kaW5n
X2ZyYW1lX2NvbmZpZ3NfOworICBzdGQ6Om1hcDx1aW50MzJfdCwgVnA4VGVtcG9yYWxMYXllcnM6
OkZyYW1lQ29uZmlnPiBwZW5kaW5nX2ZyYW1lX2NvbmZpZ3NfOwogCiAgIC8vIENvbmZpZ3VyZWQg
bWF4IGZyYW1lcmF0ZS4KICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IHRhcmdldF9mcmFtZXJh
dGVfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9zY3JlZW5zaGFyZV9sYXllcnNfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3NjcmVlbnNoYXJlX2xheWVyc191bml0dGVzdC5j
YwppbmRleCA0YWU3ZWQ1ZTdlNDI1YjZhZTVjNzA4ZGI0MDRkYmNjMGM1M2Y0Y2Y0Li40NzRlNGY4
MjViNTk3ZWUxMGU0ZDk2NDQxNWZhN2JjNWY2NzljOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L3NjcmVlbnNoYXJlX2xheWVyc191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA4L3NjcmVlbnNoYXJlX2xheWVyc191bml0dGVzdC5jYwpAQCAtODcsNyArODcsNyBAQCBjbGFz
cyBTY3JlZW5zaGFyZUxheWVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIHJl
dHVybiBmbGFnczsKICAgfQogCi0gIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyBVcGRhdGVM
YXllckNvbmZpZyh1aW50MzJfdCB0aW1lc3RhbXApIHsKKyAgVnA4VGVtcG9yYWxMYXllcnM6OkZy
YW1lQ29uZmlnIFVwZGF0ZUxheWVyQ29uZmlnKHVpbnQzMl90IHRpbWVzdGFtcCkgewogICAgIGlu
dDY0X3QgdGltZXN0YW1wX21zID0gdGltZXN0YW1wIC8gOTA7CiAgICAgY2xvY2tfLkFkdmFuY2VU
aW1lTWlsbGlzZWNvbmRzKHRpbWVzdGFtcF9tcyAtIGNsb2NrXy5UaW1lSW5NaWxsaXNlY29uZHMo
KSk7CiAgICAgcmV0dXJuIGxheWVyc18tPlVwZGF0ZUxheWVyQ29uZmlnKHRpbWVzdGFtcCk7CkBA
IC0xNjcsNyArMTY3LDcgQEAgY2xhc3MgU2NyZWVuc2hhcmVMYXllclRlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsKICAgc3RkOjp1bmlxdWVfcHRyPFNjcmVlbnNoYXJlTGF5ZXJzPiBsYXll
cnNfOwogCiAgIHVpbnQzMl90IHRpbWVzdGFtcF87Ci0gIFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNv
bmZpZyB0bF9jb25maWdfOworICBWcDhUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcgdGxfY29u
ZmlnXzsKICAgVnA4RW5jb2RlckNvbmZpZyBjZmdfOwogICBib29sIGNvbmZpZ191cGRhdGVkXzsK
ICAgQ29kZWNTcGVjaWZpY0luZm9WUDggdnA4X2luZm9fOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29k
ZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVtcG9yYWxfbGF5
ZXJzLmgKaW5kZXggNzg4ZDY5YTI3YmIzMTc0ZTYyMmFmMDQ1MDgwOWNlMzg1MWM3NTg4MC4uOTU3
NmZiMjdiZWFhNjMxN2MxMTk0NWUxM2RhMDhiNDM3MDcwNzhlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3RlbXBv
cmFsX2xheWVycy5oCkBAIC0xMiw2ICsxMiw2IEBACiAjZGVmaW5lIE1PRFVMRVNfVklERU9fQ09E
SU5HX0NPREVDU19WUDhfVEVNUE9SQUxfTEFZRVJTX0hfCiAKIC8vIFRPRE8od2VicnRjOjkwMTIp
IFJlbW92ZSB0aGlzIGZpbGUgd2hlbiBkb3duc3RyZWFtIHByb2plY3RzIGhhdmUgdXBkYXRlZC4K
LSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3Rl
bXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFs
X2xheWVycy5oIgogCiAjZW5kaWYgIC8vIE1PRFVMRVNfVklERU9fQ09ESU5HX0NPREVDU19WUDhf
VEVNUE9SQUxfTEFZRVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3RlbXBvcmFs
X2xheWVyc19jaGVja2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZW1wb3JhbF9sYXllcnNfY2hl
Y2tlci5jYwppbmRleCBjMGE3MzZhNGVkZGE5ZmQ5NGMwMWMwN2EyZjU2NGFmZTE5ZTA3MGFkLi40
ZGJhN2EzNjZhOWQ5MjhmYmU0MDhjMGM0MmZhYTc4NTRlM2U1MjM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvdnA4L3RlbXBvcmFsX2xheWVyc19jaGVja2VyLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2MKQEAgLTE3LDEzICsxNywxMyBAQAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxUZW1wb3JhbExheWVyc0NoZWNrZXI+
Ci1UZW1wb3JhbExheWVyc0NoZWNrZXI6OkNyZWF0ZVRlbXBvcmFsTGF5ZXJzQ2hlY2tlcihUZW1w
b3JhbExheWVyc1R5cGUgdHlwZSwKK1RlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q3JlYXRlVGVtcG9y
YWxMYXllcnNDaGVja2VyKFZwOFRlbXBvcmFsTGF5ZXJzVHlwZSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bV90ZW1wb3JhbF9s
YXllcnMpIHsKICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBUZW1wb3JhbExheWVyc1R5cGU6
OmtGaXhlZFBhdHRlcm46CisgICAgY2FzZSBWcDhUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBh
dHRlcm46CiAgICAgICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8RGVmYXVsdFRlbXBvcmFsTGF5
ZXJzQ2hlY2tlcj4oCiAgICAgICAgICAgbnVtX3RlbXBvcmFsX2xheWVycyk7Ci0gICAgY2FzZSBU
ZW1wb3JhbExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1pYzoKKyAgICBjYXNlIFZwOFRlbXBvcmFs
TGF5ZXJzVHlwZTo6a0JpdHJhdGVEeW5hbWljOgogICAgICAgLy8gQ29uZmVyZW5jZSBtb2RlIHRl
bXBvcmFsIGxheWVyaW5nIGZvciBzY3JlZW4gY29udGVudCBpbiBiYXNlIHN0cmVhbS4KICAgICAg
IHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxUZW1wb3JhbExheWVyc0NoZWNrZXI+KG51bV90ZW1w
b3JhbF9sYXllcnMpOwogICB9CkBAIC00MCwxMCArNDAsMTAgQEAgYm9vbCBUZW1wb3JhbExheWVy
c0NoZWNrZXI6OkNoZWNrQW5kVXBkYXRlQnVmZmVyU3RhdGUoCiAgICAgYm9vbCogbmVlZF9zeW5j
LAogICAgIGJvb2wgZnJhbWVfaXNfa2V5ZnJhbWUsCiAgICAgdWludDhfdCB0ZW1wb3JhbF9sYXll
ciwKLSAgICB3ZWJydGM6OlRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBmbGFncywKKyAgICB3
ZWJydGM6OlZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFncyBmbGFncywKICAgICB1aW50MzJf
dCBzZXF1ZW5jZV9udW1iZXIsCiAgICAgdWludDMyX3QqIGxvd2VzdF9zZXF1ZW5jZV9yZWZlcmVu
Y2VkKSB7Ci0gIGlmIChmbGFncyAmIFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1JlZmVy
ZW5jZSkgeworICBpZiAoZmxhZ3MgJiBWcDhUZW1wb3JhbExheWVyczo6QnVmZmVyRmxhZ3M6OmtS
ZWZlcmVuY2UpIHsKICAgICBpZiAoc3RhdGUtPnRlbXBvcmFsX2xheWVyID4gMCAmJiAhc3RhdGUt
PmlzX2tleWZyYW1lKSB7CiAgICAgICAqbmVlZF9zeW5jID0gZmFsc2U7CiAgICAgfQpAQCAtNTcs
NyArNTcsNyBAQCBib29sIFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6Q2hlY2tBbmRVcGRhdGVCdWZm
ZXJTdGF0ZSgKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgIH0KLSAgaWYgKChmbGFncyAm
IFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkpIHsKKyAgaWYgKChmbGFncyAm
IFZwOFRlbXBvcmFsTGF5ZXJzOjpCdWZmZXJGbGFnczo6a1VwZGF0ZSkpIHsKICAgICBzdGF0ZS0+
dGVtcG9yYWxfbGF5ZXIgPSB0ZW1wb3JhbF9sYXllcjsKICAgICBzdGF0ZS0+c2VxdWVuY2VfbnVt
YmVyID0gc2VxdWVuY2VfbnVtYmVyOwogICAgIHN0YXRlLT5pc19rZXlmcmFtZSA9IGZyYW1lX2lz
X2tleWZyYW1lOwpAQCAtNjksNyArNjksNyBAQCBib29sIFRlbXBvcmFsTGF5ZXJzQ2hlY2tlcjo6
Q2hlY2tBbmRVcGRhdGVCdWZmZXJTdGF0ZSgKIAogYm9vbCBUZW1wb3JhbExheWVyc0NoZWNrZXI6
OkNoZWNrVGVtcG9yYWxDb25maWcoCiAgICAgYm9vbCBmcmFtZV9pc19rZXlmcmFtZSwKLSAgICBj
b25zdCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcmIGZyYW1lX2NvbmZpZykgeworICAgIGNv
bnN0IFZwOFRlbXBvcmFsTGF5ZXJzOjpGcmFtZUNvbmZpZyYgZnJhbWVfY29uZmlnKSB7CiAgIGlm
IChmcmFtZV9jb25maWcuZHJvcF9mcmFtZSB8fAogICAgICAgZnJhbWVfY29uZmlnLnBhY2tldGl6
ZXJfdGVtcG9yYWxfaWR4ID09IGtOb1RlbXBvcmFsSWR4KSB7CiAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3Rlc3QvbW9ja19saWJ2cHhfaW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA4L3Rlc3QvbW9ja19saWJ2cHhfaW50ZXJmYWNlLmgKaW5kZXggNTgw
NGU4MTRlYzkxNDg4NThkZGM4M2RjN2U3NzZiNTI3YzU3ZWVmMi4uZGNmZjFlNmExODg0NmFkYmUz
ZGU0MTkwMjZlMTc3M2U3OThjNmFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC90ZXN0
L21vY2tfbGlidnB4X2ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVzdC9tb2Nr
X2xpYnZweF9pbnRlcmZhY2UuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBNb2NrTGlidnB4VnA4
SW50ZXJmYWNlIDogcHVibGljIExpYnZweEludGVyZmFjZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyKikpOwotICBNT0NLX0NPTlNUX01FVEhPRDEoaW1nX2ZyZWUsIHZweF9jb2Rl
Y19lcnJfdChjb25zdCB2cHhfY29kZWNfZW5jX2NmZ190KikpOworICBNT0NLX0NPTlNUX01FVEhP
RDEoaW1nX2ZyZWUsIHZvaWQodnB4X2ltYWdlX3QqIGltZykpOwogICBNT0NLX0NPTlNUX01FVEhP
RDIoY29kZWNfZW5jX2NvbmZpZ19zZXQsCiAgICAgICAgICAgICAgICAgICAgICB2cHhfY29kZWNf
ZXJyX3QodnB4X2NvZGVjX2N0eF90KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2cHhfY29kZWNfZW5jX2NmZ190KikpOwpAQCAtODQsNyArODQsNyBAQCBjbGFz
cyBNb2NrTGlidnB4VnA4SW50ZXJmYWNlIDogcHVibGljIExpYnZweEludGVyZmFjZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdnB4X2VuY19mcmFtZV9mbGFnc190LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90KSk7Ci0gIE1PQ0tfQ09OU1RfTUVU
SE9EMyhjb2RlY19nZXRfY3hfZGF0YSwKKyAgTU9DS19DT05TVF9NRVRIT0QyKGNvZGVjX2dldF9j
eF9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnB4X2NvZGVjX2N4X3BrdF90Kih2
cHhfY29kZWNfY3R4X3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2cHhfY29kZWNfaXRlcl90KikpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvdGVzdC92cDhfaW1wbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdGVzdC92
cDhfaW1wbF91bml0dGVzdC5jYwppbmRleCA0NWEwOTBkZjM3MzZkZTkxMDY2MzQ0NWNhYmQ3Njlh
OTJiMTljMTA5Li41ZWVkNWQzODBjZjZhNmYwMTJjZTFmODBkMmQ5MGQ3NTUwYTQ5YTg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L3Rlc3QvdnA4X2ltcGxfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOC90ZXN0L3ZwOF9pbXBsX3VuaXR0ZXN0LmNjCkBAIC0xMiwxNiArMTIs
MjUgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlk
ZW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9fZW5jb2Rlci5oIgor
I2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1
ZGUgImNvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Rlc3QvdmlkZW9fY29kZWNfdW5pdHRlc3Qu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4
LmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3Zw
OF90ZW1wb3JhbF9sYXllcnMuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA4L2xpYnZweF92cDhfZW5jb2Rlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy92cDgvdGVzdC9tb2NrX2xpYnZweF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3ZwOF9oZWFkZXJfcGFyc2VyLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAjaW5jbHVkZSAidGVzdC92aWRlb19jb2RlY19zZXR0
aW5ncy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAordXNpbmcgdGVzdGluZzo6SW52b2tlOwor
dXNpbmcgdGVzdGluZzo6TmljZU1vY2s7Cit1c2luZyB0ZXN0aW5nOjpSZXR1cm47Cit1c2luZyB0
ZXN0aW5nOjpfOworCiBuYW1lc3BhY2UgewogY29uc3RleHByIHVpbnQzMl90IGtJbml0aWFsVGlt
ZXN0YW1wUnRwID0gMTIzOwogY29uc3RleHByIGludDY0X3Qga1Rlc3ROdHBUaW1lTXMgPSA0NTY7
CkBAIC02OCw3ICs3Nyw3IEBAIGNsYXNzIFRlc3RWcDhJbXBsIDogcHVibGljIFZpZGVvQ29kZWNV
bml0VGVzdCB7CiAgICAgICAgICAgICAgIGVuY29kZXJfLT5FbmNvZGUoaW5wdXRfZnJhbWUsIG51
bGxwdHIsICZmcmFtZV90eXBlcykpOwogICAgIEFTU0VSVF9UUlVFKFdhaXRGb3JFbmNvZGVkRnJh
bWUoZW5jb2RlZF9mcmFtZSwgY29kZWNfc3BlY2lmaWNfaW5mbykpOwogICAgIFZlcmlmeVFwUGFy
c2VyKCplbmNvZGVkX2ZyYW1lKTsKLSAgICBFWFBFQ1RfU1RSRVEoImxpYnZweCIsIGNvZGVjX3Nw
ZWNpZmljX2luZm8tPmNvZGVjX25hbWUpOworICAgIEVYUEVDVF9FUSgibGlidnB4IiwgZW5jb2Rl
cl8tPkdldEVuY29kZXJJbmZvKCkuaW1wbGVtZW50YXRpb25fbmFtZSk7CiAgICAgRVhQRUNUX0VR
KGtWaWRlb0NvZGVjVlA4LCBjb2RlY19zcGVjaWZpY19pbmZvLT5jb2RlY1R5cGUpOwogICAgIEVY
UEVDVF9FUSgwLCBlbmNvZGVkX2ZyYW1lLT5TcGF0aWFsSW5kZXgoKSk7CiAgIH0KQEAgLTMyNSw3
ICszMzQsOCBAQCBURVNUX0YoVGVzdFZwOEltcGwsIFNjYWxpbmdEaXNhYmxlZElmQXV0b21hdGlj
UmVzaXplT2ZmKSB7CiAgIEVYUEVDVF9FUShXRUJSVENfVklERU9fQ09ERUNfT0ssCiAgICAgICAg
ICAgICBlbmNvZGVyXy0+SW5pdEVuY29kZSgmY29kZWNfc2V0dGluZ3NfLCBrTnVtQ29yZXMsIGtN
YXhQYXlsb2FkU2l6ZSkpOwogCi0gIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIHNldHRp
bmdzID0gZW5jb2Rlcl8tPkdldFNjYWxpbmdTZXR0aW5ncygpOworICBWaWRlb0VuY29kZXI6OlNj
YWxpbmdTZXR0aW5ncyBzZXR0aW5ncyA9CisgICAgICBlbmNvZGVyXy0+R2V0RW5jb2RlckluZm8o
KS5zY2FsaW5nX3NldHRpbmdzOwogICBFWFBFQ1RfRkFMU0Uoc2V0dGluZ3MudGhyZXNob2xkcy5o
YXNfdmFsdWUoKSk7CiB9CiAKQEAgLTMzNSw3ICszNDUsOCBAQCBURVNUX0YoVGVzdFZwOEltcGws
IFNjYWxpbmdFbmFibGVkSWZBdXRvbWF0aWNSZXNpemVPbikgewogICBFWFBFQ1RfRVEoV0VCUlRD
X1ZJREVPX0NPREVDX09LLAogICAgICAgICAgICAgZW5jb2Rlcl8tPkluaXRFbmNvZGUoJmNvZGVj
X3NldHRpbmdzXywga051bUNvcmVzLCBrTWF4UGF5bG9hZFNpemUpKTsKIAotICBWaWRlb0VuY29k
ZXI6OlNjYWxpbmdTZXR0aW5ncyBzZXR0aW5ncyA9IGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGlu
Z3MoKTsKKyAgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3Mgc2V0dGluZ3MgPQorICAgICAg
ZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5nczsKICAgRVhQRUNUX1RS
VUUoc2V0dGluZ3MudGhyZXNob2xkcy5oYXNfdmFsdWUoKSk7CiAgIEVYUEVDVF9FUShrRGVmYXVs
dE1pblBpeGVsc1BlckZyYW1lLCBzZXR0aW5ncy5taW5fcGl4ZWxzX3Blcl9mcmFtZSk7CiB9CkBA
IC0zODAsNCArMzkxLDQxIEBAIFRFU1RfRihUZXN0VnA4SW1wbCwgRG9udERyb3BLZXlmcmFtZXMp
IHsKICAgRW5jb2RlQW5kRXhwZWN0RnJhbWVXaXRoKCpOZXh0SW5wdXRGcmFtZSgpLCAwLCB0cnVl
KTsKIH0KIAorVEVTVF9GKFRlc3RWcDhJbXBsLCBLZWVwc1RpbWVzdGFtcE9uUmVlbmNvZGUpIHsK
KyAgYXV0byogY29uc3QgdnB4ID0gbmV3IE5pY2VNb2NrPE1vY2tMaWJ2cHhWcDhJbnRlcmZhY2U+
KCk7CisgIExpYnZweFZwOEVuY29kZXIgZW5jb2Rlcigoc3RkOjp1bmlxdWVfcHRyPExpYnZweElu
dGVyZmFjZT4odnB4KSkpOworCisgIC8vIFNldHRpbmdzIG5lZWRlZCB0byB0cmlnZ2VyIFNjcmVl
bnNoYXJlTGF5ZXJzIHVzYWdlLCB3aGljaCBpcyByZXF1aXJlZCBmb3IKKyAgLy8gb3ZlcnNob290
LWRyb3AtcmVlbmNvZGUgbG9naWMuCisgIGNvZGVjX3NldHRpbmdzXy50YXJnZXRCaXRyYXRlID0g
MjAwOworICBjb2RlY19zZXR0aW5nc18ubWF4Qml0cmF0ZSA9IDEwMDA7CisgIGNvZGVjX3NldHRp
bmdzXy5tb2RlID0gVmlkZW9Db2RlY01vZGU6OmtTY3JlZW5zaGFyaW5nOworICBjb2RlY19zZXR0
aW5nc18uVlA4KCktPm51bWJlck9mVGVtcG9yYWxMYXllcnMgPSAyOworCisgIEVYUEVDVF9DQUxM
KCp2cHgsIGltZ193cmFwKF8sIF8sIF8sIF8sIF8sIF8pKQorICAgICAgLldpbGxPbmNlKEludm9r
ZShbXSh2cHhfaW1hZ2VfdCogaW1nLCB2cHhfaW1nX2ZtdF90IGZtdCwgdW5zaWduZWQgaW50IGRf
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRfaCwgdW5zaWduZWQg
aW50IHN0cmlkZV9hbGlnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciogaW1nX2RhdGEpIHsKKyAgICAgICAgaW1nLT5mbXQgPSBmbXQ7CisgICAgICAgIGltZy0+ZF93
ID0gZF93OworICAgICAgICBpbWctPmRfaCA9IGRfaDsKKyAgICAgICAgaW1nLT5pbWdfZGF0YSA9
IGltZ19kYXRhOworICAgICAgICByZXR1cm4gaW1nOworICAgICAgfSkpOworICBFWFBFQ1RfRVEo
V0VCUlRDX1ZJREVPX0NPREVDX09LLAorICAgICAgICAgICAgZW5jb2Rlci5Jbml0RW5jb2RlKCZj
b2RlY19zZXR0aW5nc18sIDEsIDEwMDApKTsKKyAgTW9ja0VuY29kZWRJbWFnZUNhbGxiYWNrIGNh
bGxiYWNrOworICBlbmNvZGVyLlJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaygmY2FsbGJh
Y2spOworCisgIC8vIFNpbXVsYXRlIG92ZXJzaG9vdCBkcm9wLCByZS1lbmNvZGU6IGVuY29kZSBm
dW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0d2ljZQorICAvLyB3aXRoIHRoZSBzYW1lIHBhcmFtZXRl
cnMuIGNvZGVjX2dldF9jeF9kYXRhKCkgd2lsbCBieSBkZWZhdWx0IHJldHVybiBubworICAvLyBp
bWFnZSBkYXRhIGFuZCBiZSBpbnRlcnByZXRlZCBhcyBkcm9wLgorICBFWFBFQ1RfQ0FMTCgqdnB4
LCBjb2RlY19lbmNvZGUoXywgXywgLyogcHRzID0gKi8gMCwgXywgXywgXykpCisgICAgICAuVGlt
ZXMoMikKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4odnB4X2NvZGVjX2Vycl90OjpWUFhf
Q09ERUNfT0spKTsKKworICBhdXRvIGRlbHRhX2ZyYW1lID0gc3RkOjp2ZWN0b3I8RnJhbWVUeXBl
PntrVmlkZW9GcmFtZURlbHRhfTsKKyAgZW5jb2Rlci5FbmNvZGUoKk5leHRJbnB1dEZyYW1lKCks
IG51bGxwdHIsICZkZWx0YV9mcmFtZSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvdnA4X3RlbXBvcmFsX2xheWVycy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDgvdnA4X3RlbXBvcmFsX2xheWVycy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDk1ODQ0MTRhOTExMzcwZDc0OTY4NmI0MzBjYTFlNTA5OGVmY2Q2YS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4
L3ZwOF90ZW1wb3JhbF9sYXllcnMuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0v
KiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgotCi0jaW5jbHVkZSAiYWJzbC9tZW1v
cnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9k
ZWZhdWx0X3RlbXBvcmFsX2xheWVycy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDgvc2NyZWVuc2hhcmVfbGF5ZXJzLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvY2xvY2suaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLWJvb2wgVGVtcG9y
YWxMYXllcnM6OkZyYW1lQ29uZmlnOjpvcGVyYXRvcj09KGNvbnN0IEZyYW1lQ29uZmlnJiBvKSBj
b25zdCB7Ci0gIHJldHVybiBkcm9wX2ZyYW1lID09IG8uZHJvcF9mcmFtZSAmJgotICAgICAgICAg
bGFzdF9idWZmZXJfZmxhZ3MgPT0gby5sYXN0X2J1ZmZlcl9mbGFncyAmJgotICAgICAgICAgZ29s
ZGVuX2J1ZmZlcl9mbGFncyA9PSBvLmdvbGRlbl9idWZmZXJfZmxhZ3MgJiYKLSAgICAgICAgIGFy
Zl9idWZmZXJfZmxhZ3MgPT0gby5hcmZfYnVmZmVyX2ZsYWdzICYmIGxheWVyX3N5bmMgPT0gby5s
YXllcl9zeW5jICYmCi0gICAgICAgICBmcmVlemVfZW50cm9weSA9PSBvLmZyZWV6ZV9lbnRyb3B5
ICYmCi0gICAgICAgICBlbmNvZGVyX2xheWVyX2lkID09IG8uZW5jb2Rlcl9sYXllcl9pZCAmJgot
ICAgICAgICAgcGFja2V0aXplcl90ZW1wb3JhbF9pZHggPT0gby5wYWNrZXRpemVyX3RlbXBvcmFs
X2lkeDsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFRlbXBvcmFsTGF5ZXJzPiBUZW1wb3JhbExheWVy
czo6Q3JlYXRlVGVtcG9yYWxMYXllcnMoCi0gICAgVGVtcG9yYWxMYXllcnNUeXBlIHR5cGUsCi0g
ICAgaW50IG51bV90ZW1wb3JhbF9sYXllcnMpIHsKLSAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBUZW1wb3JhbExheWVyc1R5cGU6OmtGaXhlZFBhdHRlcm46Ci0gICAgICByZXR1cm4gYWJzbDo6
bWFrZV91bmlxdWU8RGVmYXVsdFRlbXBvcmFsTGF5ZXJzPihudW1fdGVtcG9yYWxfbGF5ZXJzKTsK
LSAgICBjYXNlIFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0JpdHJhdGVEeW5hbWljOgotICAgICAgLy8g
Q29uZmVyZW5jZSBtb2RlIHRlbXBvcmFsIGxheWVyaW5nIGZvciBzY3JlZW4gY29udGVudCBpbiBi
YXNlIHN0cmVhbS4KLSAgICAgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxTY3JlZW5zaGFyZUxh
eWVycz4obnVtX3RlbXBvcmFsX2xheWVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSk7Ci0gIH0KLX0K
LQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9z
dmNfY29uZmlnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfY29uZmlnLmNjCmluZGV4IDY4MDc2
OTgyNDZlOGZmMzM1NWU5YWMyYWMwNDUyZmI5MWFlYTZhYjAuLjNlOTIyODAxNDgzOTI4Y2MxM2Vh
MzFjN2RlYTEzYTU0YmRlZWYzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX2Nv
bmZpZy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19jb25maWcuY2MKQEAgLTIyLDkgKzIy
LDkgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogY29uc3Qgc2l6ZV90IGtNaW5W
cDlTdmNCaXRyYXRlS2JwcyA9IDMwOwogCi1jb25zdCBzaXplX3Qga01heE51bUxheWVyc0ZvclNj
cmVlblNoYXJpbmcgPSAyOwotY29uc3QgZmxvYXQga01heFNjcmVlblNoYXJpbmdMYXllckZyYW1l
cmF0ZUZwc1tdID0gezUuMCwgNS4wfTsKLWNvbnN0IHNpemVfdCBrTWF4U2NyZWVuU2hhcmluZ0xh
eWVyQml0cmF0ZUticHNbXSA9IHsyMDAsIDUwMH07Citjb25zdCBzaXplX3Qga01heE51bUxheWVy
c0ZvclNjcmVlblNoYXJpbmcgPSAzOworY29uc3QgZmxvYXQga01heFNjcmVlblNoYXJpbmdMYXll
ckZyYW1lcmF0ZUZwc1tdID0gezUuMCwgNS4wLCAzMC4wfTsKK2NvbnN0IHNpemVfdCBrTWF4U2Ny
ZWVuU2hhcmluZ0xheWVyQml0cmF0ZUticHNbXSA9IHsyMDAsIDUwMCwgMTI1MH07CiB9ICAvLyBu
YW1lc3BhY2UKIAogc3RkOjp2ZWN0b3I8U3BhdGlhbExheWVyPiBDb25maWd1cmVTdmNTY3JlZW5T
aGFyaW5nKHNpemVfdCBpbnB1dF93aWR0aCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkv
c3ZjX2NvbmZpZ191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvc3ZjX2NvbmZpZ191bml0
dGVzdC5jYwppbmRleCAyNTdjNWRmMmYwMzdiYTBmNTAyZGNmNWE0ZjdlZjBjMmU3ODFkYzVlLi5i
OTk3NzY3NDY1NjYxZThiMTg0NGI0NTc1MGZkMTc2ZWM4ZDdlMTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvdnA5L3N2Y19jb25maWdfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Zw
OS9zdmNfY29uZmlnX3VuaXR0ZXN0LmNjCkBAIC00OSwxMiArNDksMTMgQEAgVEVTVChTdmNDb25m
aWcsIFNjcmVlblNoYXJpbmcpIHsKICAgc3RkOjp2ZWN0b3I8U3BhdGlhbExheWVyPiBzcGF0aWFs
X2xheWVycyA9CiAgICAgICBHZXRTdmNDb25maWcoMTkyMCwgMTA4MCwgMzAsIDMsIDMsIHRydWUp
OwogCi0gIEVYUEVDVF9FUShzcGF0aWFsX2xheWVycy5zaXplKCksIDJVTCk7CisgIEVYUEVDVF9F
UShzcGF0aWFsX2xheWVycy5zaXplKCksIDNVTCk7CiAKLSAgZm9yIChjb25zdCBTcGF0aWFsTGF5
ZXImIGxheWVyIDogc3BhdGlhbF9sYXllcnMpIHsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAz
OyArK2kpIHsKKyAgICBjb25zdCBTcGF0aWFsTGF5ZXImIGxheWVyID0gc3BhdGlhbF9sYXllcnNb
aV07CiAgICAgRVhQRUNUX0VRKGxheWVyLndpZHRoLCAxOTIwKTsKICAgICBFWFBFQ1RfRVEobGF5
ZXIuaGVpZ2h0LCAxMDgwKTsKLSAgICBFWFBFQ1RfRVEobGF5ZXIubWF4RnJhbWVyYXRlLCA1KTsK
KyAgICBFWFBFQ1RfRVEobGF5ZXIubWF4RnJhbWVyYXRlLCAoaSA8IDIpID8gNSA6IDMwKTsKICAg
ICBFWFBFQ1RfRVEobGF5ZXIubnVtYmVyT2ZUZW1wb3JhbExheWVycywgMSk7CiAgICAgRVhQRUNU
X0xFKGxheWVyLm1pbkJpdHJhdGUsIGxheWVyLm1heEJpdHJhdGUpOwogICAgIEVYUEVDVF9MRShs
YXllci5taW5CaXRyYXRlLCBsYXllci50YXJnZXRCaXRyYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L2NvZGVjcy92cDkvc3ZjX3JhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz
L3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKaW5kZXggMDQ4YmY3ZDY5NDcxMTEx
ZTc3NDYxYWExY2I4NTkyODE3NDUyY2I2OS4uZWVjMmI5ZDQxOTllYTlmNzdlM2M5OWI2Y2IyZDQ3
ODQ5YmQ5ZjU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfcmF0ZV9hbGxvY2F0
b3JfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS9zdmNfcmF0ZV9hbGxvY2F0b3Jf
dW5pdHRlc3QuY2MKQEAgLTE0OSw3ICsxNDksNyBAQCBURVNUKFN2Y1JhdGVBbGxvY2F0b3JUZXN0
LCBNaW5CaXRyYXRlVG9HZXRRdWFsaXR5TGF5ZXIpIHsKIAogICBjb25zdCBTcGF0aWFsTGF5ZXIq
IGxheWVycyA9IGNvZGVjLnNwYXRpYWxMYXllcnM7CiAKLSAgRVhQRUNUX0xFKGNvZGVjLlZQOSgp
LT5udW1iZXJPZlNwYXRpYWxMYXllcnMsIDJVKTsKKyAgRVhQRUNUX0xFKGNvZGVjLlZQOSgpLT5u
dW1iZXJPZlNwYXRpYWxMYXllcnMsIDNVKTsKIAogICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGFs
bG9jYXRpb24gPQogICAgICAgYWxsb2NhdG9yLkdldEFsbG9jYXRpb24obGF5ZXJzWzBdLm1pbkJp
dHJhdGUgKiAxMDAwLCAzMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3Rlc3QvdnA5
X2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3Rlc3QvdnA5X2ltcGxfdW5pdHRl
c3QuY2MKaW5kZXggNDczM2FkOTc5YTQ5OTVhMWFjYjNiNmZkMDBiYjljY2RmYTRhMjJjYS4uODVm
YTI3OGEwZDM3NmVhZjU1MTJlYzA3NThiOGNiN2RkNzIxZWFmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
Y29kZWNzL3ZwOS90ZXN0L3ZwOV9pbXBsX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92
cDkvdGVzdC92cDlfaW1wbF91bml0dGVzdC5jYwpAQCAtMTA0LDYgKzEwNCwzMyBAQCBjbGFzcyBU
ZXN0VnA5SW1wbCA6IHB1YmxpYyBWaWRlb0NvZGVjVW5pdFRlc3QgewogICAgICAgY29kZWNfc2V0
dGluZ3NfLnNwYXRpYWxMYXllcnNbaV0gPSBsYXllcnNbaV07CiAgICAgfQogICB9CisKKyAgSGRy
TWV0YWRhdGEgQ3JlYXRlVGVzdEhkck1ldGFkYXRhKCkgY29uc3QgeworICAgIC8vIFJhbmRvbSBi
dXQgcmVhc29uYWJsZSBIRFIgbWV0YWRhdGEuCisgICAgSGRyTWV0YWRhdGEgaGRyX21ldGFkYXRh
OworICAgIGhkcl9tZXRhZGF0YS5tYXN0ZXJpbmdfbWV0YWRhdGEubHVtaW5hbmNlX21heCA9IDIw
MDAuMDsKKyAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLmx1bWluYW5jZV9taW4g
PSAyLjAwMDE7CisgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X3Iu
eCA9IDAuMzA7CisgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X3Iu
eSA9IDAuNDA7CisgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2cu
eCA9IDAuMzI7CisgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2cu
eSA9IDAuNDY7CisgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2Iu
eCA9IDAuMzQ7CisgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS5wcmltYXJ5X2Iu
eSA9IDAuNDk7CisgICAgaGRyX21ldGFkYXRhLm1hc3RlcmluZ19tZXRhZGF0YS53aGl0ZV9wb2lu
dC54ID0gMC40MTsKKyAgICBoZHJfbWV0YWRhdGEubWFzdGVyaW5nX21ldGFkYXRhLndoaXRlX3Bv
aW50LnkgPSAwLjQ4OworICAgIGhkcl9tZXRhZGF0YS5tYXhfY29udGVudF9saWdodF9sZXZlbCA9
IDIzNDU7CisgICAgaGRyX21ldGFkYXRhLm1heF9mcmFtZV9hdmVyYWdlX2xpZ2h0X2xldmVsID0g
MTc4OTsKKyAgICByZXR1cm4gaGRyX21ldGFkYXRhOworICB9CisKKyAgQ29sb3JTcGFjZSBDcmVh
dGVUZXN0Q29sb3JTcGFjZSgpIGNvbnN0IHsKKyAgICBIZHJNZXRhZGF0YSBoZHJfbWV0YWRhdGEg
PSBDcmVhdGVUZXN0SGRyTWV0YWRhdGEoKTsKKyAgICBDb2xvclNwYWNlIGNvbG9yX3NwYWNlKENv
bG9yU3BhY2U6OlByaW1hcnlJRDo6a0JUNzA5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6a0dBTU1BMjIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb2xvclNwYWNlOjpNYXRyaXhJRDo6a1NNUFRFMjA4NSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvbG9yU3BhY2U6OlJhbmdlSUQ6OmtGdWxsLCAmaGRyX21ldGFkYXRhKTsKKyAg
ICByZXR1cm4gY29sb3Jfc3BhY2U7CisgIH0KIH07CiAKIC8vIERpc2FibGVkIG9uIGlvcyBhcyBm
bGFrZSwgc2VlIGh0dHBzOi8vY3JidWcuY29tL3dlYnJ0Yy83MDU3CkBAIC0xMjgsNyArMTU1LDcg
QEAgVEVTVF9GKFRlc3RWcDlJbXBsLCBFbmNvZGVEZWNvZGUpIHsKICAgQVNTRVJUX1RSVUUoZGVj
b2RlZF9mcmFtZSk7CiAgIEVYUEVDVF9HVChJNDIwUFNOUihpbnB1dF9mcmFtZSwgZGVjb2RlZF9m
cmFtZS5nZXQoKSksIDM2KTsKIAotICBjb25zdCBDb2xvclNwYWNlIGNvbG9yX3NwYWNlID0gZGVj
b2RlZF9mcmFtZS0+Y29sb3Jfc3BhY2UoKS52YWx1ZSgpOworICBjb25zdCBDb2xvclNwYWNlIGNv
bG9yX3NwYWNlID0gKmRlY29kZWRfZnJhbWUtPmNvbG9yX3NwYWNlKCk7CiAgIEVYUEVDVF9FUShD
b2xvclNwYWNlOjpQcmltYXJ5SUQ6OmtJbnZhbGlkLCBjb2xvcl9zcGFjZS5wcmltYXJpZXMoKSk7
CiAgIEVYUEVDVF9FUShDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjprSW52YWxpZCwgY29sb3Jfc3Bh
Y2UudHJhbnNmZXIoKSk7CiAgIEVYUEVDVF9FUShDb2xvclNwYWNlOjpNYXRyaXhJRDo6a0ludmFs
aWQsIGNvbG9yX3NwYWNlLm1hdHJpeCgpKTsKQEAgLTE1Nyw2ICsxODQsNjAgQEAgVEVTVF9GKFRl
c3RWcDlJbXBsLCBFbmNvZGVkUm90YXRpb25FcXVhbHNJbnB1dFJvdGF0aW9uKSB7CiAgIEVYUEVD
VF9FUShrVmlkZW9Sb3RhdGlvbl85MCwgZW5jb2RlZF9mcmFtZS5yb3RhdGlvbl8pOwogfQogCitU
RVNUX0YoVGVzdFZwOUltcGwsIEVuY29kZWRDb2xvclNwYWNlRXF1YWxzSW5wdXRDb2xvclNwYWNl
KSB7CisgIC8vIFZpZGVvIGZyYW1lIHdpdGhvdXQgZXhwbGljaXQgY29sb3Igc3BhY2UgaW5mb3Jt
YXRpb24uCisgIFZpZGVvRnJhbWUqIGlucHV0X2ZyYW1lID0gTmV4dElucHV0RnJhbWUoKTsKKyAg
RVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAgICAgICAgICAgIGVuY29kZXJfLT5F
bmNvZGUoKmlucHV0X2ZyYW1lLCBudWxscHRyLCBudWxscHRyKSk7CisgIEVuY29kZWRJbWFnZSBl
bmNvZGVkX2ZyYW1lOworICBDb2RlY1NwZWNpZmljSW5mbyBjb2RlY19zcGVjaWZpY19pbmZvOwor
ICBBU1NFUlRfVFJVRShXYWl0Rm9yRW5jb2RlZEZyYW1lKCZlbmNvZGVkX2ZyYW1lLCAmY29kZWNf
c3BlY2lmaWNfaW5mbykpOworICBFWFBFQ1RfRkFMU0UoZW5jb2RlZF9mcmFtZS5Db2xvclNwYWNl
KCkpOworCisgIC8vIFZpZGVvIGZyYW1lIHdpdGggZXhwbGljaXQgY29sb3Igc3BhY2UgaW5mb3Jt
YXRpb24uCisgIENvbG9yU3BhY2UgY29sb3Jfc3BhY2UgPSBDcmVhdGVUZXN0Q29sb3JTcGFjZSgp
OworICBWaWRlb0ZyYW1lIGlucHV0X2ZyYW1lX3dfaGRyID0KKyAgICAgIFZpZGVvRnJhbWU6OkJ1
aWxkZXIoKQorICAgICAgICAgIC5zZXRfdmlkZW9fZnJhbWVfYnVmZmVyKGlucHV0X2ZyYW1lLT52
aWRlb19mcmFtZV9idWZmZXIoKSkKKyAgICAgICAgICAuc2V0X2NvbG9yX3NwYWNlKCZjb2xvcl9z
cGFjZSkKKyAgICAgICAgICAuYnVpbGQoKTsKKyAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RF
Q19PSywKKyAgICAgICAgICAgIGVuY29kZXJfLT5FbmNvZGUoaW5wdXRfZnJhbWVfd19oZHIsIG51
bGxwdHIsIG51bGxwdHIpKTsKKyAgQVNTRVJUX1RSVUUoV2FpdEZvckVuY29kZWRGcmFtZSgmZW5j
b2RlZF9mcmFtZSwgJmNvZGVjX3NwZWNpZmljX2luZm8pKTsKKyAgQVNTRVJUX1RSVUUoZW5jb2Rl
ZF9mcmFtZS5Db2xvclNwYWNlKCkpOworICBFWFBFQ1RfRVEoKmVuY29kZWRfZnJhbWUuQ29sb3JT
cGFjZSgpLCBjb2xvcl9zcGFjZSk7Cit9CisKK1RFU1RfRihUZXN0VnA5SW1wbCwgRGVjb2RlZEhk
ck1ldGFkYXRhRXF1YWxzRW5jb2RlZEhkck1ldGFkYXRhKSB7CisgIEVYUEVDVF9FUShXRUJSVENf
VklERU9fQ09ERUNfT0ssCisgICAgICAgICAgICBlbmNvZGVyXy0+RW5jb2RlKCpOZXh0SW5wdXRG
cmFtZSgpLCBudWxscHRyLCBudWxscHRyKSk7CisgIEVuY29kZWRJbWFnZSBlbmNvZGVkX2ZyYW1l
OworICBDb2RlY1NwZWNpZmljSW5mbyBjb2RlY19zcGVjaWZpY19pbmZvOworICBBU1NFUlRfVFJV
RShXYWl0Rm9yRW5jb2RlZEZyYW1lKCZlbmNvZGVkX2ZyYW1lLCAmY29kZWNfc3BlY2lmaWNfaW5m
bykpOworCisgIC8vIEVuY29kZWQgZnJhbWUgd2l0aG91dCBleHBsaWNpdCBjb2xvciBzcGFjZSBp
bmZvcm1hdGlvbi4KKyAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAgICAgICAg
ICAgIGRlY29kZXJfLT5EZWNvZGUoZW5jb2RlZF9mcmFtZSwgZmFsc2UsIG51bGxwdHIsIDApKTsK
KyAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRnJhbWU+IGRlY29kZWRfZnJhbWU7CisgIGFic2w6Om9w
dGlvbmFsPHVpbnQ4X3Q+IGRlY29kZWRfcXA7CisgIEFTU0VSVF9UUlVFKFdhaXRGb3JEZWNvZGVk
RnJhbWUoJmRlY29kZWRfZnJhbWUsICZkZWNvZGVkX3FwKSk7CisgIEFTU0VSVF9UUlVFKGRlY29k
ZWRfZnJhbWUpOworICAvLyBDb2xvciBzcGFjZSBwcmVzZW50IGZyb20gZW5jb2RlZCBiaXRzdHJl
YW0uCisgIEFTU0VSVF9UUlVFKGRlY29kZWRfZnJhbWUtPmNvbG9yX3NwYWNlKCkpOworICAvLyBO
byBIRFIgbWV0YWRhdGEgcHJlc2VudC4KKyAgRVhQRUNUX0ZBTFNFKGRlY29kZWRfZnJhbWUtPmNv
bG9yX3NwYWNlKCktPmhkcl9tZXRhZGF0YSgpKTsKKworICAvLyBFbmNvZGVkIGZyYW1lIHdpdGgg
ZXhwbGljaXQgY29sb3Igc3BhY2UgaW5mb3JtYXRpb24uCisgIENvbG9yU3BhY2UgY29sb3Jfc3Bh
Y2UgPSBDcmVhdGVUZXN0Q29sb3JTcGFjZSgpOworICBlbmNvZGVkX2ZyYW1lLlNldENvbG9yU3Bh
Y2UoJmNvbG9yX3NwYWNlKTsKKyAgRVhQRUNUX0VRKFdFQlJUQ19WSURFT19DT0RFQ19PSywKKyAg
ICAgICAgICAgIGRlY29kZXJfLT5EZWNvZGUoZW5jb2RlZF9mcmFtZSwgZmFsc2UsIG51bGxwdHIs
IDApKTsKKyAgQVNTRVJUX1RSVUUoV2FpdEZvckRlY29kZWRGcmFtZSgmZGVjb2RlZF9mcmFtZSwg
JmRlY29kZWRfcXApKTsKKyAgQVNTRVJUX1RSVUUoZGVjb2RlZF9mcmFtZSk7CisgIEFTU0VSVF9U
UlVFKGRlY29kZWRfZnJhbWUtPmNvbG9yX3NwYWNlKCkpOworICBFWFBFQ1RfRVEoY29sb3Jfc3Bh
Y2UsICpkZWNvZGVkX2ZyYW1lLT5jb2xvcl9zcGFjZSgpKTsKK30KKwogVEVTVF9GKFRlc3RWcDlJ
bXBsLCBEZWNvZGVkUXBFcXVhbHNFbmNvZGVkUXApIHsKICAgRVhQRUNUX0VRKFdFQlJUQ19WSURF
T19DT0RFQ19PSywKICAgICAgICAgICAgIGVuY29kZXJfLT5FbmNvZGUoKk5leHRJbnB1dEZyYW1l
KCksIG51bGxwdHIsIG51bGxwdHIpKTsKQEAgLTM5Myw3ICs0NzQsNyBAQCBURVNUX0YoVGVzdFZw
OUltcGwsIEludGVyTGF5ZXJQcmVkKSB7CiAgIENvbmZpZ3VyZVN2YyhudW1fc3BhdGlhbF9sYXll
cnMpOwogICBjb2RlY19zZXR0aW5nc18uVlA5KCktPmZyYW1lRHJvcHBpbmdPbiA9IGZhbHNlOwog
Ci0gIEJpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbjsKKyAgVmlkZW9CaXRyYXRl
QWxsb2NhdGlvbiBiaXRyYXRlX2FsbG9jYXRpb247CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtX3NwYXRpYWxfbGF5ZXJzOyArK2kpIHsKICAgICBiaXRyYXRlX2FsbG9jYXRpb24uU2V0Qml0
cmF0ZSgKICAgICAgICAgaSwgMCwgY29kZWNfc2V0dGluZ3NfLnNwYXRpYWxMYXllcnNbaV0udGFy
Z2V0Qml0cmF0ZSAqIDEwMDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDkuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9jb2RlY3MvdnA5L3ZwOS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmEwODg4MTIwOGExMjllYjUy
ZTM1YTYwZDY5Zjk2YjQzMmYzMmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Zw
OS92cDkuY2MKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L2luY2x1ZGUvdnA5LmgiCisKKyNp
bmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNz
L3NkcF92aWRlb19mb3JtYXQuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA5L3ZwOV9pbXBsLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVk
ZSAidnB4L3ZwOGN4LmgiCisjaW5jbHVkZSAidnB4L3ZwOGR4LmgiCisjaW5jbHVkZSAidnB4L3Zw
eF9jb2RlYy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworc3RkOjp2ZWN0b3I8U2RwVmlkZW9G
b3JtYXQ+IFN1cHBvcnRlZFZQOUNvZGVjcygpIHsKKyNpZmRlZiBSVENfRU5BQkxFX1ZQOQorICAv
LyBQcm9maWxlIDIgbWlnaHQgbm90IGJlIGF2YWlsYWJsZSBvbiBzb21lIHBsYXRmb3JtcyB1bnRp
bAorICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Avd2VibS9pc3N1ZXMvZGV0YWlsP2lk
PTE1NDQgaXMgc29sdmVkLgorICBzdGF0aWMgYm9vbCB2cHhfc3VwcG9ydHNfaGlnaF9iaXRfZGVw
dGggPQorICAgICAgKHZweF9jb2RlY19nZXRfY2Fwcyh2cHhfY29kZWNfdnA5X2N4KCkpICYgVlBY
X0NPREVDX0NBUF9ISUdIQklUREVQVEgpICE9CisgICAgICAgICAgMCAmJgorICAgICAgKHZweF9j
b2RlY19nZXRfY2Fwcyh2cHhfY29kZWNfdnA5X2R4KCkpICYgVlBYX0NPREVDX0NBUF9ISUdIQklU
REVQVEgpICE9CisgICAgICAgICAgMDsKKworICBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4g
c3VwcG9ydGVkX2Zvcm1hdHN7U2RwVmlkZW9Gb3JtYXQoCisgICAgICBjcmlja2V0OjprVnA5Q29k
ZWNOYW1lLAorICAgICAge3trVlA5Rm10cFByb2ZpbGVJZCwgVlA5UHJvZmlsZVRvU3RyaW5nKFZQ
OVByb2ZpbGU6OmtQcm9maWxlMCl9fSl9OworICBpZiAodnB4X3N1cHBvcnRzX2hpZ2hfYml0X2Rl
cHRoKSB7CisgICAgc3VwcG9ydGVkX2Zvcm1hdHMucHVzaF9iYWNrKFNkcFZpZGVvRm9ybWF0KAor
ICAgICAgICBjcmlja2V0OjprVnA5Q29kZWNOYW1lLAorICAgICAgICB7e2tWUDlGbXRwUHJvZmls
ZUlkLCBWUDlQcm9maWxlVG9TdHJpbmcoVlA5UHJvZmlsZTo6a1Byb2ZpbGUyKX19KSk7CisgIH0K
KyAgcmV0dXJuIHN1cHBvcnRlZF9mb3JtYXRzOworI2Vsc2UKKyAgcmV0dXJuIHN0ZDo6dmVjdG9y
PFNkcFZpZGVvRm9ybWF0PigpOworI2VuZGlmCit9CisKK3N0ZDo6dW5pcXVlX3B0cjxWUDlFbmNv
ZGVyPiBWUDlFbmNvZGVyOjpDcmVhdGUoKSB7CisjaWZkZWYgUlRDX0VOQUJMRV9WUDkKKyAgcmV0
dXJuIGFic2w6Om1ha2VfdW5pcXVlPFZQOUVuY29kZXJJbXBsPihjcmlja2V0OjpWaWRlb0NvZGVj
KCkpOworI2Vsc2UKKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIG51bGxwdHI7CisjZW5k
aWYKK30KKworc3RkOjp1bmlxdWVfcHRyPFZQOUVuY29kZXI+IFZQOUVuY29kZXI6OkNyZWF0ZSgK
KyAgICBjb25zdCBjcmlja2V0OjpWaWRlb0NvZGVjJiBjb2RlYykgeworI2lmZGVmIFJUQ19FTkFC
TEVfVlA5CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxWUDlFbmNvZGVySW1wbD4oY29kZWMp
OworI2Vsc2UKKyAgUlRDX05PVFJFQUNIRUQoKTsKKyAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYK
K30KKworc3RkOjp1bmlxdWVfcHRyPFZQOURlY29kZXI+IFZQOURlY29kZXI6OkNyZWF0ZSgpIHsK
KyNpZmRlZiBSVENfRU5BQkxFX1ZQOQorICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8VlA5RGVj
b2RlckltcGw+KCk7CisjZWxzZQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gbnVsbHB0
cjsKKyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9jb2RlY3MvdnA5L3ZwOV9mcmFtZV9idWZmZXJfcG9vbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkv
dnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmNjCmluZGV4IDY5MTAxY2I1MDZmMzUwNDMxOTkwMDgxZjNj
YmY2NmY1MDA4NWViZjcuLmVjYmRhNGNiM2JkMGYyNGQzNjk2OTc0NmQ4ZDU4OTY4MTU0YTBiOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmNjCkBAIC05LDYgKzks
OCBAQAogICoKICAqLwogCisjaWZkZWYgUlRDX0VOQUJMRV9WUDkKKwogI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmgiCiAKICNp
bmNsdWRlICJ2cHgvdnB4X2NvZGVjLmgiCkBAIC0xMzgsMyArMTQwLDUgQEAgaW50MzJfdCBWcDlG
cmFtZUJ1ZmZlclBvb2w6OlZweFJlbGVhc2VGcmFtZUJ1ZmZlcih2b2lkKiB1c2VyX3ByaXYsCiB9
CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBSVENfRU5BQkxFX1ZQOQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVmZmVyX3Bvb2wuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2NvZGVjcy92cDkvdnA5X2ZyYW1lX2J1ZmZlcl9wb29sLmgKaW5kZXggOWIwMzVlYjk0YWRl
NzM3ZGVkM2IzNWJiNjdhMjdkY2Y5ODg5M2Y2Yy4uMDJlZGUyNDMyOTU1ZmRlYTU3MmIxYzU5ZWNj
YThmNTEzZjljM2E0YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfZnJhbWVfYnVm
ZmVyX3Bvb2wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9mcmFtZV9idWZmZXJfcG9vbC5o
CkBAIC0xMiw2ICsxMiw4IEBACiAjaWZuZGVmIE1PRFVMRVNfVklERU9fQ09ESU5HX0NPREVDU19W
UDlfVlA5X0ZSQU1FX0JVRkZFUl9QT09MX0hfCiAjZGVmaW5lIE1PRFVMRVNfVklERU9fQ09ESU5H
X0NPREVDU19WUDlfVlA5X0ZSQU1FX0JVRkZFUl9QT09MX0hfCiAKKyNpZmRlZiBSVENfRU5BQkxF
X1ZQOQorCiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgi
CkBAIC0xMjAsNCArMTIyLDYgQEAgY2xhc3MgVnA5RnJhbWVCdWZmZXJQb29sIHsKIAogfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwogCisjZW5kaWYgIC8vIFJUQ19FTkFCTEVfVlA5CisKICNlbmRpZiAg
Ly8gTU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOV9WUDlfRlJBTUVfQlVGRkVSX1BPT0xf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvdnA5L3ZwOV9pbXBsLmNjCmluZGV4IDZiOTgyYThhMTMyMzg5ZDJhZWE1MWRmZWFhYzkyYmVk
ZjljMmFmN2YuLjYxNTQyYzUwODIxMTQ5NjI5N2IzNmNlY2RlNDc5NGI0NjI4NGU2MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3Zw
OS92cDlfaW1wbC5jYwpAQCAtOSw2ICs5LDggQEAKICAqCiAgKi8KIAorI2lmZGVmIFJUQ19FTkFC
TEVfVlA5CisKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9p
bXBsLmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0zNywxMSArMzksMTYgQEAKIG5hbWVz
cGFjZSB3ZWJydGMgewogCiBuYW1lc3BhY2UgeworY29uc3QgY2hhciBrVnA5VHJ1c3RlZFJhdGVD
b250cm9sbGVyRmllbGRUcmlhbFtdID0KKyAgICAiV2ViUlRDLUxpYnZweFZwOVRydXN0ZWRSYXRl
Q29udHJvbGxlciI7CisKIC8vIE1hcHMgZnJvbSBnb2ZfaWR4IHRvIGVuY29kZXIgaW50ZXJuYWwg
cmVmZXJlbmNlIGZyYW1lIGJ1ZmZlciBpbmRleC4gVGhlc2UKIC8vIG1hcHMgd29yayBmb3IgMSwy
IGFuZCAzIHRlbXBvcmFsIGxheWVycyB3aXRoIEdPRiBsZW5ndGggb2YgMSwyIGFuZCA0IGZyYW1l
cy4KIHVpbnQ4X3Qga1JlZkJ1ZklkeFs0XSA9IHswLCAwLCAwLCAxfTsKIHVpbnQ4X3Qga1VwZEJ1
ZklkeFs0XSA9IHswLCAwLCAxLCAwfTsKIAoraW50IGtNYXhOdW1UaWxlczRrVmlkZW8gPSA4Owor
CiAvLyBPbmx5IHBvc2l0aXZlIHNwZWVkcywgcmFuZ2UgZm9yIHJlYWwtdGltZSBjb2RpbmcgY3Vy
cmVudGx5IGlzOiA1IC0gOC4KIC8vIExvd2VyIG1lYW5zIHNsb3dlci9iZXR0ZXIgcXVhbGl0eSwg
aGlnaGVyIG1lYW5zIGZhc3Rlc3QvbG93ZXIgcXVhbGl0eS4KIGludCBHZXRDcHVTcGVlZChpbnQg
d2lkdGgsIGludCBoZWlnaHQpIHsKQEAgLTExOSwyMyArMTI2LDYgQEAgQ29sb3JTcGFjZSBFeHRy
YWN0VlA5Q29sb3JTcGFjZSh2cHhfY29sb3Jfc3BhY2VfdCBzcGFjZV90LAogfQogfSAgLy8gbmFt
ZXNwYWNlCiAKLXN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBTdXBwb3J0ZWRWUDlDb2RlY3Mo
KSB7Ci0gIC8vIFRPRE8oZW1pcmNhbik6IEFkZCBQcm9maWxlIDIgc3VwcG9ydCBhZnRlciBmaXhp
bmcgYnJvd3Nlcl90ZXN0cy4KLSAgc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IHN1cHBvcnRl
ZF9mb3JtYXRze1NkcFZpZGVvRm9ybWF0KAotICAgICAgY3JpY2tldDo6a1ZwOUNvZGVjTmFtZSwK
LSAgICAgIHt7a1ZQOUZtdHBQcm9maWxlSWQsIFZQOVByb2ZpbGVUb1N0cmluZyhWUDlQcm9maWxl
OjprUHJvZmlsZTApfX0pfTsKLSAgcmV0dXJuIHN1cHBvcnRlZF9mb3JtYXRzOwotfQotCi1zdGQ6
OnVuaXF1ZV9wdHI8VlA5RW5jb2Rlcj4gVlA5RW5jb2Rlcjo6Q3JlYXRlKCkgewotICByZXR1cm4g
YWJzbDo6bWFrZV91bmlxdWU8VlA5RW5jb2RlckltcGw+KGNyaWNrZXQ6OlZpZGVvQ29kZWMoKSk7
Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxWUDlFbmNvZGVyPiBWUDlFbmNvZGVyOjpDcmVhdGUoCi0g
ICAgY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyYgY29kZWMpIHsKLSAgcmV0dXJuIGFic2w6Om1h
a2VfdW5pcXVlPFZQOUVuY29kZXJJbXBsPihjb2RlYyk7Ci19Ci0KIHZvaWQgVlA5RW5jb2Rlcklt
cGw6OkVuY29kZXJPdXRwdXRDb2RlZFBhY2tldENhbGxiYWNrKHZweF9jb2RlY19jeF9wa3QqIHBr
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQqIHVzZXJfZGF0YSkgewogICBWUDlFbmNvZGVySW1wbCogZW5jID0gc3RhdGljX2Nhc3Q8
VlA5RW5jb2RlckltcGwqPih1c2VyX2RhdGEpOwpAQCAtMTYwLDEyICsxNTAsMTYgQEAgVlA5RW5j
b2RlckltcGw6OlZQOUVuY29kZXJJbXBsKGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29kZWMmIGNvZGVj
KQogICAgICAgbnVtX3RlbXBvcmFsX2xheWVyc18oMCksCiAgICAgICBudW1fc3BhdGlhbF9sYXll
cnNfKDApLAogICAgICAgbnVtX2FjdGl2ZV9zcGF0aWFsX2xheWVyc18oMCksCi0gICAgICBsYXll
cl9kZWFjdGl2YXRpb25fcmVxdWlyZXNfa2V5X2ZyYW1lXyh3ZWJydGM6OmZpZWxkX3RyaWFsOjpJ
c0VuYWJsZWQoCi0gICAgICAgICAgIldlYlJUQy1WcDlJc3N1ZUtleUZyYW1lT25MYXllckRlYWN0
aXZhdGlvbiIpKSwKKyAgICAgIGxheWVyX2RlYWN0aXZhdGlvbl9yZXF1aXJlc19rZXlfZnJhbWVf
KAorICAgICAgICAgIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldlYlJUQy1WcDlJc3N1ZUtleUZy
YW1lT25MYXllckRlYWN0aXZhdGlvbiIpKSwKICAgICAgIGlzX3N2Y18oZmFsc2UpLAogICAgICAg
aW50ZXJfbGF5ZXJfcHJlZF8oSW50ZXJMYXllclByZWRNb2RlOjprT24pLAogICAgICAgZXh0ZXJu
YWxfcmVmX2NvbnRyb2xfKAotICAgICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OklzRW5hYmxl
ZCgiV2ViUlRDLVZwOUV4dGVybmFsUmVmQ3RybCIpKSwKKyAgICAgICAgICBmaWVsZF90cmlhbDo6
SXNFbmFibGVkKCJXZWJSVEMtVnA5RXh0ZXJuYWxSZWZDdHJsIikpLAorICAgICAgdHJ1c3RlZF9y
YXRlX2NvbnRyb2xsZXJfKAorICAgICAgICAgIGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa1ZwOVRy
dXN0ZWRSYXRlQ29udHJvbGxlckZpZWxkVHJpYWwpKSwKKyAgICAgIGZ1bGxfc3VwZXJmcmFtZV9k
cm9wXyh0cnVlKSwKKyAgICAgIGZpcnN0X2ZyYW1lX2luX3BpY3R1cmVfKHRydWUpLAogICAgICAg
aXNfZmxleGlibGVfbW9kZV8oZmFsc2UpIHsKICAgbWVtc2V0KCZjb2RlY18sIDAsIHNpemVvZihj
b2RlY18pKTsKICAgbWVtc2V0KCZzdmNfcGFyYW1zXywgMCwgc2l6ZW9mKHZweF9zdmNfZXh0cmFf
Y2ZnX3QpKTsKQEAgLTYyNyw3ICs2MjEsOCBAQCBpbnQgVlA5RW5jb2RlckltcGw6OkluaXRBbmRT
ZXRDb250cm9sU2V0dGluZ3MoY29uc3QgVmlkZW9Db2RlYyogaW5zdCkgewogICAgIC8vIHF1YWxp
dHkgZmxpY2tlcmluZyBhbmQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBSVFAgbm9uLWZsZXhpYmxl
IG1vZGUuCiAgICAgdnB4X3N2Y19mcmFtZV9kcm9wX3Qgc3ZjX2Ryb3BfZnJhbWU7CiAgICAgbWVt
c2V0KCZzdmNfZHJvcF9mcmFtZSwgMCwgc2l6ZW9mKHN2Y19kcm9wX2ZyYW1lKSk7Ci0gICAgc3Zj
X2Ryb3BfZnJhbWUuZnJhbWVkcm9wX21vZGUgPSBGVUxMX1NVUEVSRlJBTUVfRFJPUDsKKyAgICBz
dmNfZHJvcF9mcmFtZS5mcmFtZWRyb3BfbW9kZSA9CisgICAgICAgIGZ1bGxfc3VwZXJmcmFtZV9k
cm9wXyA/IEZVTExfU1VQRVJGUkFNRV9EUk9QIDogQ09OU1RSQUlORURfTEFZRVJfRFJPUDsKICAg
ICBzdmNfZHJvcF9mcmFtZS5tYXhfY29uc2VjX2Ryb3AgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1heCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX3NwYXRpYWxfbGF5ZXJz
XzsgKytpKSB7CiAgICAgICBzdmNfZHJvcF9mcmFtZS5mcmFtZWRyb3BfdGhyZXNoW2ldID0gY29u
ZmlnXy0+cmNfZHJvcGZyYW1lX3RocmVzaDsKQEAgLTcwMSwzMCArNjk2LDMzIEBAIGludCBWUDlF
bmNvZGVySW1wbDo6RW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2ltYWdlLAogICAgIH0K
ICAgfQogCi0gIGlmIChWaWRlb0NvZGVjTW9kZTo6a1NjcmVlbnNoYXJpbmcgPT0gY29kZWNfLm1v
ZGUgJiYgIWZvcmNlX2tleV9mcmFtZV8pIHsKLSAgICAvLyBTa2lwIGVuY29kaW5nIHNwYXRpYWwg
bGF5ZXIgZnJhbWVzIGlmIHRoZWlyIHRhcmdldCBmcmFtZSByYXRlIGlzIGxvd2VyCi0gICAgLy8g
dGhhbiBhY3R1YWwgaW5wdXQgZnJhbWUgcmF0ZS4KKyAgc2l6ZV90IGZpcnN0X2FjdGl2ZV9zcGF0
aWFsX2xheWVyX2lkID0gMDsKKyAgaWYgKFZpZGVvQ29kZWNNb2RlOjprU2NyZWVuc2hhcmluZyA9
PSBjb2RlY18ubW9kZSkgewogICAgIHZweF9zdmNfbGF5ZXJfaWRfdCBsYXllcl9pZCA9IHswfTsK
LSAgICBjb25zdCBzaXplX3QgZ29mX2lkeCA9IChwaWNzX3NpbmNlX2tleV8gKyAxKSAlIGdvZl8u
bnVtX2ZyYW1lc19pbl9nb2Y7Ci0gICAgbGF5ZXJfaWQudGVtcG9yYWxfbGF5ZXJfaWQgPSBnb2Zf
LnRlbXBvcmFsX2lkeFtnb2ZfaWR4XTsKKyAgICBpZiAoIWZvcmNlX2tleV9mcmFtZV8pIHsKKyAg
ICAgIC8vIFNraXAgZW5jb2Rpbmcgc3BhdGlhbCBsYXllciBmcmFtZXMgaWYgdGhlaXIgdGFyZ2V0
IGZyYW1lIHJhdGUgaXMgbG93ZXIKKyAgICAgIC8vIHRoYW4gYWN0dWFsIGlucHV0IGZyYW1lIHJh
dGUuCisgICAgICBjb25zdCBzaXplX3QgZ29mX2lkeCA9IChwaWNzX3NpbmNlX2tleV8gKyAxKSAl
IGdvZl8ubnVtX2ZyYW1lc19pbl9nb2Y7CisgICAgICBsYXllcl9pZC50ZW1wb3JhbF9sYXllcl9p
ZCA9IGdvZl8udGVtcG9yYWxfaWR4W2dvZl9pZHhdOwogCi0gICAgY29uc3QgdWludDMyX3QgZnJh
bWVfdGltZXN0YW1wX21zID0KLSAgICAgICAgMTAwMCAqIGlucHV0X2ltYWdlLnRpbWVzdGFtcCgp
IC8ga1ZpZGVvUGF5bG9hZFR5cGVGcmVxdWVuY3k7CisgICAgICBjb25zdCB1aW50MzJfdCBmcmFt
ZV90aW1lc3RhbXBfbXMgPQorICAgICAgICAgIDEwMDAgKiBpbnB1dF9pbWFnZS50aW1lc3RhbXAo
KSAvIGtWaWRlb1BheWxvYWRUeXBlRnJlcXVlbmN5OwogCi0gICAgZm9yICh1aW50OF90IHNsX2lk
eCA9IDA7IHNsX2lkeCA8IG51bV9hY3RpdmVfc3BhdGlhbF9sYXllcnNfOyArK3NsX2lkeCkgewot
ICAgICAgaWYgKGZyYW1lcmF0ZV9jb250cm9sbGVyX1tzbF9pZHhdLkRyb3BGcmFtZShmcmFtZV90
aW1lc3RhbXBfbXMpKSB7Ci0gICAgICAgICsrbGF5ZXJfaWQuc3BhdGlhbF9sYXllcl9pZDsKLSAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGJyZWFrOworICAgICAgZm9yICh1aW50OF90IHNsX2lkeCA9
IDA7IHNsX2lkeCA8IG51bV9hY3RpdmVfc3BhdGlhbF9sYXllcnNfOyArK3NsX2lkeCkgeworICAg
ICAgICBpZiAoZnJhbWVyYXRlX2NvbnRyb2xsZXJfW3NsX2lkeF0uRHJvcEZyYW1lKGZyYW1lX3Rp
bWVzdGFtcF9tcykpIHsKKyAgICAgICAgICArK2xheWVyX2lkLnNwYXRpYWxfbGF5ZXJfaWQ7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgIH0KLSAg
ICB9CiAKLSAgICBSVENfRENIRUNLX0xFKGxheWVyX2lkLnNwYXRpYWxfbGF5ZXJfaWQsIG51bV9h
Y3RpdmVfc3BhdGlhbF9sYXllcnNfKTsKLSAgICBpZiAobGF5ZXJfaWQuc3BhdGlhbF9sYXllcl9p
ZCA+PSBudW1fYWN0aXZlX3NwYXRpYWxfbGF5ZXJzXykgewotICAgICAgLy8gRHJvcCBlbnRpcmUg
cGljdHVyZS4KLSAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CisgICAgICBSVENf
RENIRUNLX0xFKGxheWVyX2lkLnNwYXRpYWxfbGF5ZXJfaWQsIG51bV9hY3RpdmVfc3BhdGlhbF9s
YXllcnNfKTsKKyAgICAgIGlmIChsYXllcl9pZC5zcGF0aWFsX2xheWVyX2lkID49IG51bV9hY3Rp
dmVfc3BhdGlhbF9sYXllcnNfKSB7CisgICAgICAgIC8vIERyb3AgZW50aXJlIHBpY3R1cmUuCisg
ICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CisgICAgICB9CiAgICAgfQotCisg
ICAgZmlyc3RfYWN0aXZlX3NwYXRpYWxfbGF5ZXJfaWQgPSBsYXllcl9pZC5zcGF0aWFsX2xheWVy
X2lkOwogICAgIHZweF9jb2RlY19jb250cm9sKGVuY29kZXJfLCBWUDlFX1NFVF9TVkNfTEFZRVJf
SUQsICZsYXllcl9pZCk7CiAgIH0KIApAQCAtNzg1LDEwICs3ODMsMjEgQEAgaW50IFZQOUVuY29k
ZXJJbXBsOjpFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYgaW5wdXRfaW1hZ2UsCiAgIH0KIAogICBp
ZiAoZXh0ZXJuYWxfcmVmX2NvbnRyb2xfKSB7Ci0gICAgdnB4X3N2Y19yZWZfZnJhbWVfY29uZmln
X3QgcmVmX2NvbmZpZyA9IFNldFJlZmVyZW5jZXMoZm9yY2Vfa2V5X2ZyYW1lXyk7CisgICAgdnB4
X3N2Y19yZWZfZnJhbWVfY29uZmlnX3QgcmVmX2NvbmZpZyA9CisgICAgICAgIFNldFJlZmVyZW5j
ZXMoZm9yY2Vfa2V5X2ZyYW1lXywgZmlyc3RfYWN0aXZlX3NwYXRpYWxfbGF5ZXJfaWQpOworCisg
ICAgaWYgKFZpZGVvQ29kZWNNb2RlOjprU2NyZWVuc2hhcmluZyA9PSBjb2RlY18ubW9kZSkgewor
ICAgICAgZm9yICh1aW50OF90IHNsX2lkeCA9IDA7IHNsX2lkeCA8IG51bV9hY3RpdmVfc3BhdGlh
bF9sYXllcnNfOyArK3NsX2lkeCkgeworICAgICAgICByZWZfY29uZmlnLmR1cmF0aW9uW3NsX2lk
eF0gPSBzdGF0aWNfY2FzdDxpbnQ2NF90PigKKyAgICAgICAgICAgIDkwMDAwIC8gZnJhbWVyYXRl
X2NvbnRyb2xsZXJfW3NsX2lkeF0uR2V0VGFyZ2V0UmF0ZSgpKTsKKyAgICAgIH0KKyAgICB9CisK
ICAgICB2cHhfY29kZWNfY29udHJvbChlbmNvZGVyXywgVlA5RV9TRVRfU1ZDX1JFRl9GUkFNRV9D
T05GSUcsICZyZWZfY29uZmlnKTsKICAgfQogCisgIGZpcnN0X2ZyYW1lX2luX3BpY3R1cmVfID0g
dHJ1ZTsKKwogICAvLyBUT0RPKHNzaWxraW4pOiBGcmFtZSBkdXJhdGlvbiBzaG91bGQgYmUgc3Bl
Y2lmaWVkIHBlciBzcGF0aWFsIGxheWVyCiAgIC8vIHNpbmNlIHRoZWlyIGZyYW1lIHJhdGUgY2Fu
IGJlIGRpZmZlcmVudC4gRm9yIG5vdyBjYWxjdWxhdGUgZnJhbWUgZHVyYXRpb24KICAgLy8gYmFz
ZWQgb24gdGFyZ2V0IGZyYW1lIHJhdGUgb2YgdGhlIGhpZ2hlc3Qgc3BhdGlhbCBsYXllciwgd2hp
Y2ggZnJhbWUgcmF0ZQpAQCAtODE0LDggKzgyMywxMCBAQCBpbnQgVlA5RW5jb2RlckltcGw6OkVu
Y29kZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9pbWFnZSwKICAgfQogICB0aW1lc3RhbXBfICs9
IGR1cmF0aW9uOwogCi0gIGNvbnN0IGJvb2wgZW5kX29mX3BpY3R1cmUgPSB0cnVlOwotICBEZWxp
dmVyQnVmZmVyZWRGcmFtZShlbmRfb2ZfcGljdHVyZSk7CisgIGlmICghZnVsbF9zdXBlcmZyYW1l
X2Ryb3BfKSB7CisgICAgY29uc3QgYm9vbCBlbmRfb2ZfcGljdHVyZSA9IHRydWU7CisgICAgRGVs
aXZlckJ1ZmZlcmVkRnJhbWUoZW5kX29mX3BpY3R1cmUpOworICB9CiAKICAgcmV0dXJuIFdFQlJU
Q19WSURFT19DT0RFQ19PSzsKIH0KQEAgLTgyMywxNCArODM0LDEyIEBAIGludCBWUDlFbmNvZGVy
SW1wbDo6RW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2ltYWdlLAogdm9pZCBWUDlFbmNv
ZGVySW1wbDo6UG9wdWxhdGVDb2RlY1NwZWNpZmljKENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19z
cGVjaWZpYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNs
OjpvcHRpb25hbDxpbnQ+KiBzcGF0aWFsX2lkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2cHhfY29kZWNfY3hfcGt0JiBwa3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZXN0YW1wLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmlyc3RfZnJhbWVf
aW5fcGljdHVyZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IHRpbWVzdGFtcCkgewogICBSVENfQ0hFQ0soY29kZWNfc3BlY2lmaWMgIT0gbnVs
bHB0cik7CiAgIGNvZGVjX3NwZWNpZmljLT5jb2RlY1R5cGUgPSBrVmlkZW9Db2RlY1ZQOTsKLSAg
Y29kZWNfc3BlY2lmaWMtPmNvZGVjX25hbWUgPSBJbXBsZW1lbnRhdGlvbk5hbWUoKTsKICAgQ29k
ZWNTcGVjaWZpY0luZm9WUDkqIHZwOV9pbmZvID0gJihjb2RlY19zcGVjaWZpYy0+Y29kZWNTcGVj
aWZpYy5WUDkpOwogCi0gIHZwOV9pbmZvLT5maXJzdF9mcmFtZV9pbl9waWN0dXJlID0gZmlyc3Rf
ZnJhbWVfaW5fcGljdHVyZTsKKyAgdnA5X2luZm8tPmZpcnN0X2ZyYW1lX2luX3BpY3R1cmUgPSBm
aXJzdF9mcmFtZV9pbl9waWN0dXJlXzsKICAgdnA5X2luZm8tPmZsZXhpYmxlX21vZGUgPSBpc19m
bGV4aWJsZV9tb2RlXzsKICAgdnA5X2luZm8tPnNzX2RhdGFfYXZhaWxhYmxlID0KICAgICAgIChw
a3QuZGF0YS5mcmFtZS5mbGFncyAmIFZQWF9GUkFNRV9JU19LRVkpID8gdHJ1ZSA6IGZhbHNlOwpA
QCAtODYxLDcgKzg3MCw3IEBAIHZvaWQgVlA5RW5jb2RlckltcGw6OlBvcHVsYXRlQ29kZWNTcGVj
aWZpYyhDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWMsCiAKICAgaWYgKHBrdC5kYXRh
LmZyYW1lLmZsYWdzICYgVlBYX0ZSQU1FX0lTX0tFWSkgewogICAgIHBpY3Nfc2luY2Vfa2V5XyA9
IDA7Ci0gIH0gZWxzZSBpZiAoZmlyc3RfZnJhbWVfaW5fcGljdHVyZSkgeworICB9IGVsc2UgaWYg
KGZpcnN0X2ZyYW1lX2luX3BpY3R1cmVfKSB7CiAgICAgKytwaWNzX3NpbmNlX2tleV87CiAgIH0K
IApAQCAtODc3LDcgKzg4Niw3IEBAIHZvaWQgVlA5RW5jb2RlckltcGw6OlBvcHVsYXRlQ29kZWNT
cGVjaWZpYyhDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWMsCiAgIC8vIGlmIGxvdyBs
YXllciBmcmFtZSBpcyBsb3N0KSB0aGVuIHJlY2VpdmVyIHdvbid0IGJlIGFibGUgdG8gZGVjb2Rl
IG5leHQgaGlnaAogICAvLyBsYXllciBmcmFtZSB3aGljaCB1c2VzIElMUC4KICAgdnA5X2luZm8t
PmludGVyX2xheWVyX3ByZWRpY3RlZCA9Ci0gICAgICBmaXJzdF9mcmFtZV9pbl9waWN0dXJlID8g
ZmFsc2UgOiBpc19pbnRlcl9sYXllcl9wcmVkX2FsbG93ZWQ7CisgICAgICBmaXJzdF9mcmFtZV9p
bl9waWN0dXJlXyA/IGZhbHNlIDogaXNfaW50ZXJfbGF5ZXJfcHJlZF9hbGxvd2VkOwogCiAgIC8v
IE1hcmsgYWxsIGxvdyBzcGF0aWFsIGxheWVyIGZyYW1lcyBhcyByZWZlcmVuY2VzIChub3QganVz
dCBmcmFtZXMgb2YKICAgLy8gYWN0aXZlIGxvdyBzcGF0aWFsIGxheWVycykgaWYgaW50ZXItbGF5
ZXIgcHJlZGljdGlvbiBpcyBlbmFibGVkIHNpbmNlCkBAIC05MjEsNiArOTMwLDggQEAgdm9pZCBW
UDlFbmNvZGVySW1wbDo6UG9wdWxhdGVDb2RlY1NwZWNpZmljKENvZGVjU3BlY2lmaWNJbmZvKiBj
b2RlY19zcGVjaWZpYywKICAgICAgIHZwOV9pbmZvLT5nb2YuQ29weUdvZkluZm9WUDkoZ29mXyk7
CiAgICAgfQogICB9CisKKyAgZmlyc3RfZnJhbWVfaW5fcGljdHVyZV8gPSBmYWxzZTsKIH0KIAog
dm9pZCBWUDlFbmNvZGVySW1wbDo6RmlsbFJlZmVyZW5jZUluZGljZXMoY29uc3QgdnB4X2NvZGVj
X2N4X3BrdCYgcGt0LApAQCAtOTc4LDYgKzk4OSw4IEBAIHZvaWQgVlA5RW5jb2RlckltcGw6OkZp
bGxSZWZlcmVuY2VJbmRpY2VzKGNvbnN0IHZweF9jb2RlY19jeF9wa3QmIHBrdCwKIAogICBzaXpl
X3QgbWF4X3JlZl90ZW1wb3JhbF9sYXllcl9pZCA9IDA7CiAKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90
PiByZWZfcGlkX2xpc3Q7CisKICAgdnA5X2luZm8tPm51bV9yZWZfcGljcyA9IDA7CiAgIGZvciAo
Y29uc3QgUmVmRnJhbWVCdWZmZXImIHJlZl9idWYgOiByZWZfYnVmX2xpc3QpIHsKICAgICBSVENf
RENIRUNLX0xFKHJlZl9idWYucGljX251bSwgcGljX251bSk7CkBAIC05OTAsNiArMTAwMywxNiBA
QCB2b2lkIFZQOUVuY29kZXJJbXBsOjpGaWxsUmVmZXJlbmNlSW5kaWNlcyhjb25zdCB2cHhfY29k
ZWNfY3hfcGt0JiBwa3QsCiAgICAgICB9CiAgICAgICBSVENfRENIRUNLX0xFKHJlZl9idWYudGVt
cG9yYWxfbGF5ZXJfaWQsIGxheWVyX2lkLnRlbXBvcmFsX2xheWVyX2lkKTsKIAorICAgICAgLy8g
RW5jb2RlciBtYXkgcmVmZXJlbmNlIHNldmVyYWwgc3BhdGlhbCBsYXllcnMgb24gdGhlIHNhbWUg
cHJldmlvdXMKKyAgICAgIC8vIGZyYW1lIGluIGNhc2UgaWYgc29tZSBzcGF0aWFsIGxheWVycyBh
cmUgc2tpcHBlZCBvbiB0aGUgY3VycmVudCBmcmFtZS4KKyAgICAgIC8vIFdlIHNob3VsZG4ndCBw
dXQgZHVwbGljYXRlIHJlZmVyZW5jZXMgYXMgaXQgbWF5IGJyZWFrIHNvbWUgb2xkCisgICAgICAv
LyBjbGllbnRzIGFuZCBpc24ndCBSVFAgY29tcGF0aWJsZS4KKyAgICAgIGlmIChzdGQ6OmZpbmQo
cmVmX3BpZF9saXN0LmJlZ2luKCksIHJlZl9waWRfbGlzdC5lbmQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgcmVmX2J1Zi5waWNfbnVtKSAhPSByZWZfcGlkX2xpc3QuZW5kKCkpIHsKKyAgICAgICAg
Y29udGludWU7CisgICAgICB9CisgICAgICByZWZfcGlkX2xpc3QucHVzaF9iYWNrKHJlZl9idWYu
cGljX251bSk7CisKICAgICAgIGNvbnN0IHNpemVfdCBwX2RpZmYgPSBwaWNfbnVtIC0gcmVmX2J1
Zi5waWNfbnVtOwogICAgICAgUlRDX0RDSEVDS19MRShwX2RpZmYsIDEyN1VMKTsKIApAQCAtMTA1
NCw3ICsxMDc3LDkgQEAgdm9pZCBWUDlFbmNvZGVySW1wbDo6VXBkYXRlUmVmZXJlbmNlQnVmZmVy
cyhjb25zdCB2cHhfY29kZWNfY3hfcGt0JiBwa3QsCiAgIH0KIH0KIAotdnB4X3N2Y19yZWZfZnJh
bWVfY29uZmlnX3QgVlA5RW5jb2RlckltcGw6OlNldFJlZmVyZW5jZXMoYm9vbCBpc19rZXlfcGlj
KSB7Cit2cHhfc3ZjX3JlZl9mcmFtZV9jb25maWdfdCBWUDlFbmNvZGVySW1wbDo6U2V0UmVmZXJl
bmNlcygKKyAgICBib29sIGlzX2tleV9waWMsCisgICAgc2l6ZV90IGZpcnN0X2FjdGl2ZV9zcGF0
aWFsX2xheWVyX2lkKSB7CiAgIC8vIGtSZWZCdWZJZHgsIGtVcGRCdWZJZHggbmVlZCB0byBiZSB1
cGRhdGVkIHRvIHN1cHBvcnQgbG9uZ2VyIEdPRnMuCiAgIFJUQ19EQ0hFQ0tfTEUoZ29mXy5udW1f
ZnJhbWVzX2luX2dvZiwgNCk7CiAKQEAgLTExMDYsMTMgKzExMzEsMTQgQEAgdnB4X3N2Y19yZWZf
ZnJhbWVfY29uZmlnX3QgVlA5RW5jb2RlckltcGw6OlNldFJlZmVyZW5jZXMoYm9vbCBpc19rZXlf
cGljKSB7CiAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGlzX2ludGVyX2xheWVyX3ByZWRfYWxs
b3dlZCAmJiBzbF9pZHggPiAwKSB7CisgICAgaWYgKGlzX2ludGVyX2xheWVyX3ByZWRfYWxsb3dl
ZCAmJiBzbF9pZHggPiBmaXJzdF9hY3RpdmVfc3BhdGlhbF9sYXllcl9pZCkgewogICAgICAgLy8g
U2V0IHVwIHNwYXRpYWwgcmVmZXJlbmNlLgogICAgICAgUlRDX0RDSEVDSyhsYXN0X3VwZGF0ZWRf
YnVmX2lkeCk7CiAgICAgICByZWZfY29uZmlnLmdsZF9mYl9pZHhbc2xfaWR4XSA9ICpsYXN0X3Vw
ZGF0ZWRfYnVmX2lkeDsKICAgICAgIHJlZl9jb25maWcucmVmZXJlbmNlX2dvbGRlbltzbF9pZHhd
ID0gMTsKICAgICB9IGVsc2UgewotICAgICAgUlRDX0RDSEVDSyhyZWZfY29uZmlnLnJlZmVyZW5j
ZV9sYXN0W3NsX2lkeF0gIT0gMCB8fCBzbF9pZHggPT0gMCB8fAorICAgICAgUlRDX0RDSEVDSyhy
ZWZfY29uZmlnLnJlZmVyZW5jZV9sYXN0W3NsX2lkeF0gIT0gMCB8fAorICAgICAgICAgICAgICAg
ICBzbF9pZHggPT0gZmlyc3RfYWN0aXZlX3NwYXRpYWxfbGF5ZXJfaWQgfHwKICAgICAgICAgICAg
ICAgICAgaW50ZXJfbGF5ZXJfcHJlZF8gPT0gSW50ZXJMYXllclByZWRNb2RlOjprT2ZmKTsKICAg
ICB9CiAKQEAgLTExNDcsMTIgKzExNzMsMTEgQEAgaW50IFZQOUVuY29kZXJJbXBsOjpHZXRFbmNv
ZGVkTGF5ZXJGcmFtZShjb25zdCB2cHhfY29kZWNfY3hfcGt0KiBwa3QpIHsKICAgdnB4X3N2Y19s
YXllcl9pZF90IGxheWVyX2lkID0gezB9OwogICB2cHhfY29kZWNfY29udHJvbChlbmNvZGVyXywg
VlA5RV9HRVRfU1ZDX0xBWUVSX0lELCAmbGF5ZXJfaWQpOwogCi0gIGNvbnN0IGJvb2wgZmlyc3Rf
ZnJhbWVfaW5fcGljdHVyZSA9IGVuY29kZWRfaW1hZ2VfLl9sZW5ndGggPT0gMDsKLSAgLy8gRW5z
dXJlIHdlIGRvbid0IGJ1ZmZlciBsYXllcnMgb2YgcHJldmlvdXMgcGljdHVyZSAoc3VwZXJmcmFt
ZSkuCi0gIFJUQ19EQ0hFQ0soZmlyc3RfZnJhbWVfaW5fcGljdHVyZSB8fCBsYXllcl9pZC5zcGF0
aWFsX2xheWVyX2lkID4gMCk7Ci0KLSAgY29uc3QgYm9vbCBlbmRfb2ZfcGljdHVyZSA9IGZhbHNl
OwotICBEZWxpdmVyQnVmZmVyZWRGcmFtZShlbmRfb2ZfcGljdHVyZSk7CisgIGlmICghZnVsbF9z
dXBlcmZyYW1lX2Ryb3BfKSB7CisgICAgLy8gRGVsaXZlciBidWZmZXJlZCBsb3cgc3BhdGlhbCBs
YXllciBmcmFtZS4KKyAgICBjb25zdCBib29sIGVuZF9vZl9waWN0dXJlID0gZmFsc2U7CisgICAg
RGVsaXZlckJ1ZmZlcmVkRnJhbWUoZW5kX29mX3BpY3R1cmUpOworICB9CiAKICAgaWYgKHBrdC0+
ZGF0YS5mcmFtZS5zeiA+IGVuY29kZWRfaW1hZ2VfLl9zaXplKSB7CiAgICAgZGVsZXRlW10gZW5j
b2RlZF9pbWFnZV8uX2J1ZmZlcjsKQEAgLTExNzgsNyArMTIwMyw3IEBAIGludCBWUDlFbmNvZGVy
SW1wbDo6R2V0RW5jb2RlZExheWVyRnJhbWUoY29uc3QgdnB4X2NvZGVjX2N4X3BrdCogcGt0KSB7
CiAgIG1lbXNldCgmY29kZWNfc3BlY2lmaWNfLCAwLCBzaXplb2YoY29kZWNfc3BlY2lmaWNfKSk7
CiAgIGFic2w6Om9wdGlvbmFsPGludD4gc3BhdGlhbF9pbmRleDsKICAgUG9wdWxhdGVDb2RlY1Nw
ZWNpZmljKCZjb2RlY19zcGVjaWZpY18sICZzcGF0aWFsX2luZGV4LCAqcGt0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgaW5wdXRfaW1hZ2VfLT50aW1lc3RhbXAoKSwgZmlyc3RfZnJhbWVfaW5f
cGljdHVyZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pbWFnZV8tPnRpbWVzdGFt
cCgpKTsKICAgZW5jb2RlZF9pbWFnZV8uU2V0U3BhdGlhbEluZGV4KHNwYXRpYWxfaW5kZXgpOwog
CiAgIGlmIChpc19mbGV4aWJsZV9tb2RlXykgewpAQCAtMTIwMCw2ICsxMjI1LDEzIEBAIGludCBW
UDlFbmNvZGVySW1wbDo6R2V0RW5jb2RlZExheWVyRnJhbWUoY29uc3QgdnB4X2NvZGVjX2N4X3Br
dCogcGt0KSB7CiAgIGludCBxcCA9IC0xOwogICB2cHhfY29kZWNfY29udHJvbChlbmNvZGVyXywg
VlA4RV9HRVRfTEFTVF9RVUFOVElaRVIsICZxcCk7CiAgIGVuY29kZWRfaW1hZ2VfLnFwXyA9IHFw
OworICBlbmNvZGVkX2ltYWdlXy5TZXRDb2xvclNwYWNlKGlucHV0X2ltYWdlXy0+Y29sb3Jfc3Bh
Y2UoKSk7CisKKyAgaWYgKGZ1bGxfc3VwZXJmcmFtZV9kcm9wXykgeworICAgIGNvbnN0IGJvb2wg
ZW5kX29mX3BpY3R1cmUgPSBlbmNvZGVkX2ltYWdlXy5TcGF0aWFsSW5kZXgoKS52YWx1ZV9vcigw
KSArIDEgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2FjdGl2ZV9zcGF0
aWFsX2xheWVyc187CisgICAgRGVsaXZlckJ1ZmZlcmVkRnJhbWUoZW5kX29mX3BpY3R1cmUpOwor
ICB9CiAKICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKIH0KQEAgLTEyMzAsMjIgKzEy
NjIsMTkgQEAgdm9pZCBWUDlFbmNvZGVySW1wbDo6RGVsaXZlckJ1ZmZlcmVkRnJhbWUoYm9vbCBl
bmRfb2ZfcGljdHVyZSkgewogICB9CiB9CiAKLWludCBWUDlFbmNvZGVySW1wbDo6U2V0Q2hhbm5l
bFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsIGludDY0X3QgcnR0KSB7Ci0gIHJldHVy
biBXRUJSVENfVklERU9fQ09ERUNfT0s7Ci19Ci0KIGludCBWUDlFbmNvZGVySW1wbDo6UmVnaXN0
ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKAogICAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxs
YmFjaykgewogICBlbmNvZGVkX2NvbXBsZXRlX2NhbGxiYWNrXyA9IGNhbGxiYWNrOwogICByZXR1
cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQogCi1jb25zdCBjaGFyKiBWUDlFbmNvZGVySW1w
bDo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3QgewotICByZXR1cm4gImxpYnZweCI7Ci19Ci0K
LXN0ZDo6dW5pcXVlX3B0cjxWUDlEZWNvZGVyPiBWUDlEZWNvZGVyOjpDcmVhdGUoKSB7Ci0gIHJl
dHVybiBhYnNsOjptYWtlX3VuaXF1ZTxWUDlEZWNvZGVySW1wbD4oKTsKK1ZpZGVvRW5jb2Rlcjo6
RW5jb2RlckluZm8gVlA5RW5jb2RlckltcGw6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICBF
bmNvZGVySW5mbyBpbmZvOworICBpbmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBmYWxzZTsK
KyAgaW5mby5pbXBsZW1lbnRhdGlvbl9uYW1lID0gImxpYnZweCI7CisgIGluZm8uc2NhbGluZ19z
ZXR0aW5ncyA9IFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzOjprT2ZmOworICBpbmZvLmhh
c190cnVzdGVkX3JhdGVfY29udHJvbGxlciA9IHRydXN0ZWRfcmF0ZV9jb250cm9sbGVyXzsKKyAg
cmV0dXJuIGluZm87CiB9CiAKIFZQOURlY29kZXJJbXBsOjpWUDlEZWNvZGVySW1wbCgpCkBAIC0x
MjcyLDEzICsxMzAxLDE4IEBAIGludCBWUDlEZWNvZGVySW1wbDo6SW5pdERlY29kZShjb25zdCBW
aWRlb0NvZGVjKiBpbnN0LCBpbnQgbnVtYmVyX29mX2NvcmVzKSB7CiAgIGlmIChyZXRfdmFsIDwg
MCkgewogICAgIHJldHVybiByZXRfdmFsOwogICB9CisKICAgaWYgKGRlY29kZXJfID09IG51bGxw
dHIpIHsKICAgICBkZWNvZGVyXyA9IG5ldyB2cHhfY29kZWNfY3R4X3Q7CiAgIH0KICAgdnB4X2Nv
ZGVjX2RlY19jZmdfdCBjZmc7Ci0gIC8vIFNldHRpbmcgbnVtYmVyIG9mIHRocmVhZHMgdG8gYSBj
b25zdGFudCB2YWx1ZSAoMSkKLSAgY2ZnLnRocmVhZHMgPSAxOwotICBjZmcuaCA9IGNmZy53ID0g
MDsgIC8vIHNldCBhZnRlciBkZWNvZGUKKyAgbWVtc2V0KCZjZmcsIDAsIHNpemVvZihjZmcpKTsK
KworICAvLyBXZSB3YW50IHRvIHVzZSBtdWx0aXRocmVhZGluZyB3aGVuIGRlY29kaW5nIGhpZ2gg
cmVzb2x1dGlvbiB2aWRlb3MuIEJ1dCwKKyAgLy8gc2luY2Ugd2UgZG9uJ3Qga25vdyByZXNvbHV0
aW9uIG9mIGlucHV0IHN0cmVhbSBhdCB0aGlzIHN0YWdlLCB3ZSBhbHdheXMKKyAgLy8gZW5hYmxl
IGl0LgorICBjZmcudGhyZWFkcyA9IHN0ZDo6bWluKG51bWJlcl9vZl9jb3Jlcywga01heE51bVRp
bGVzNGtWaWRlbyk7CisKICAgdnB4X2NvZGVjX2ZsYWdzX3QgZmxhZ3MgPSAwOwogICBpZiAodnB4
X2NvZGVjX2RlY19pbml0KGRlY29kZXJfLCB2cHhfY29kZWNfdnA5X2R4KCksICZjZmcsIGZsYWdz
KSkgewogICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfTUVNT1JZOwpAQCAtMTMzNiw4ICsx
MzcwLDggQEAgaW50IFZQOURlY29kZXJJbXBsOjpEZWNvZGUoY29uc3QgRW5jb2RlZEltYWdlJiBp
bnB1dF9pbWFnZSwKICAgdnB4X2NvZGVjX2Vycl90IHZweF9yZXQgPQogICAgICAgdnB4X2NvZGVj
X2NvbnRyb2woZGVjb2Rlcl8sIFZQWERfR0VUX0xBU1RfUVVBTlRJWkVSLCAmcXApOwogICBSVENf
RENIRUNLX0VRKHZweF9yZXQsIFZQWF9DT0RFQ19PSyk7Ci0gIGludCByZXQgPQotICAgICAgUmV0
dXJuRnJhbWUoaW1nLCBpbnB1dF9pbWFnZS5UaW1lc3RhbXAoKSwgaW5wdXRfaW1hZ2UubnRwX3Rp
bWVfbXNfLCBxcCk7CisgIGludCByZXQgPSBSZXR1cm5GcmFtZShpbWcsIGlucHV0X2ltYWdlLlRp
bWVzdGFtcCgpLCBpbnB1dF9pbWFnZS5udHBfdGltZV9tc18sCisgICAgICAgICAgICAgICAgICAg
ICAgICBxcCwgaW5wdXRfaW1hZ2UuQ29sb3JTcGFjZSgpKTsKICAgaWYgKHJldCAhPSAwKSB7CiAg
ICAgcmV0dXJuIHJldDsKICAgfQpAQCAtMTM0Nyw3ICsxMzgxLDggQEAgaW50IFZQOURlY29kZXJJ
bXBsOjpEZWNvZGUoY29uc3QgRW5jb2RlZEltYWdlJiBpbnB1dF9pbWFnZSwKIGludCBWUDlEZWNv
ZGVySW1wbDo6UmV0dXJuRnJhbWUoY29uc3QgdnB4X2ltYWdlX3QqIGltZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZXN0YW1wLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90IG50cF90aW1lX21zLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgcXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvclNwYWNl
KiBleHBsaWNpdF9jb2xvcl9zcGFjZSkgewogICBpZiAoaW1nID09IG51bGxwdHIpIHsKICAgICAv
LyBEZWNvZGVyIE9LIGFuZCBudWxscHRyIGltYWdlID0+IE5vIHNob3cgZnJhbWUuCiAgICAgcmV0
dXJuIFdFQlJUQ19WSURFT19DT0RFQ19OT19PVVRQVVQ7CkBAIC0xMzg5LDE1ICsxNDI0LDIxIEBA
IGludCBWUDlEZWNvZGVySW1wbDo6UmV0dXJuRnJhbWUoY29uc3QgdnB4X2ltYWdlX3QqIGltZywK
ICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfTk9fT1VUUFVUOwogICB9CiAKLSAgVmlk
ZW9GcmFtZSBkZWNvZGVkX2ltYWdlID0gVmlkZW9GcmFtZTo6QnVpbGRlcigpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAuc2V0X3ZpZGVvX2ZyYW1lX2J1ZmZlcihpbWdfd3JhcHBl
ZF9idWZmZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0X3RpbWVzdGFt
cF9tcygwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldF90aW1lc3RhbXBf
cnRwKHRpbWVzdGFtcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRfbnRw
X3RpbWVfbXMobnRwX3RpbWVfbXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu
c2V0X3JvdGF0aW9uKHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC5zZXRfY29sb3Jfc3BhY2UoRXh0cmFjdFZQOUNvbG9yU3BhY2UoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLT5jcywgaW1nLT5yYW5nZSwg
aW1nLT5iaXRfZGVwdGgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmJ1aWxk
KCk7CisgIGF1dG8gYnVpbGRlciA9IFZpZGVvRnJhbWU6OkJ1aWxkZXIoKQorICAgICAgICAgICAg
ICAgICAgICAgLnNldF92aWRlb19mcmFtZV9idWZmZXIoaW1nX3dyYXBwZWRfYnVmZmVyKQorICAg
ICAgICAgICAgICAgICAgICAgLnNldF90aW1lc3RhbXBfbXMoMCkKKyAgICAgICAgICAgICAgICAg
ICAgIC5zZXRfdGltZXN0YW1wX3J0cCh0aW1lc3RhbXApCisgICAgICAgICAgICAgICAgICAgICAu
c2V0X250cF90aW1lX21zKG50cF90aW1lX21zKQorICAgICAgICAgICAgICAgICAgICAgLnNldF9y
b3RhdGlvbih3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzApOworICBpZiAoZXhwbGljaXRfY29sb3Jf
c3BhY2UpIHsKKyAgICBidWlsZGVyLnNldF9jb2xvcl9zcGFjZShleHBsaWNpdF9jb2xvcl9zcGFj
ZSk7CisgIH0gZWxzZSB7CisgICAgYnVpbGRlci5zZXRfY29sb3Jfc3BhY2UoCisgICAgICAgIEV4
dHJhY3RWUDlDb2xvclNwYWNlKGltZy0+Y3MsIGltZy0+cmFuZ2UsIGltZy0+Yml0X2RlcHRoKSk7
CisgIH0KKworICBWaWRlb0ZyYW1lIGRlY29kZWRfaW1hZ2UgPSBidWlsZGVyLmJ1aWxkKCk7CisK
ICAgZGVjb2RlX2NvbXBsZXRlX2NhbGxiYWNrXy0+RGVjb2RlZChkZWNvZGVkX2ltYWdlLCBhYnNs
OjpudWxsb3B0LCBxcCk7CiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CkBAIC0x
NDM1LDMgKzE0NzYsNSBAQCBjb25zdCBjaGFyKiBWUDlEZWNvZGVySW1wbDo6SW1wbGVtZW50YXRp
b25OYW1lKCkgY29uc3QgewogfQogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAg
Ly8gUlRDX0VOQUJMRV9WUDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwuaAppbmRleCBkOGNlMWZmMmFiNWVmYjIzNzcz
Y2Y3ZjIwMjgwOGJmMzE0ZmI5ZTcyLi4zYmZhYjlhZDVmZDU4OWJhZGQ1MjNiNDE5ZjgxOGQxZjJl
ODIwN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9pbXBsLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL3ZwOS92cDlfaW1wbC5oCkBAIC0xMiw2ICsxMiw4IEBACiAjaWZuZGVmIE1PRFVM
RVNfVklERU9fQ09ESU5HX0NPREVDU19WUDlfVlA5X0lNUExfSF8KICNkZWZpbmUgTU9EVUxFU19W
SURFT19DT0RJTkdfQ09ERUNTX1ZQOV9WUDlfSU1QTF9IXwogCisjaWZkZWYgUlRDX0VOQUJMRV9W
UDkKKwogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9y
PgpAQCAtNDYsMTIgKzQ4LDEwIEBAIGNsYXNzIFZQOUVuY29kZXJJbXBsIDogcHVibGljIFZQOUVu
Y29kZXIgewogCiAgIGludCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soRW5jb2RlZElt
YWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKIAotICBpbnQgU2V0Q2hhbm5lbFBhcmFt
ZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsIGludDY0X3QgcnR0KSBvdmVycmlkZTsKLQogICBp
bnQgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0
ZV9hbGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVfcmF0
ZSkgb3ZlcnJpZGU7CiAKLSAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CisgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICBwcml2YXRlOgogICAvLyBEZXRlcm1pbmUgbnVtYmVyIG9mIGVuY29kZXIgdGhyZWFkcyB0
byB1c2UuCkBAIC02MywxNSArNjMsMTYgQEAgY2xhc3MgVlA5RW5jb2RlckltcGwgOiBwdWJsaWMg
VlA5RW5jb2RlciB7CiAgIHZvaWQgUG9wdWxhdGVDb2RlY1NwZWNpZmljKENvZGVjU3BlY2lmaWNJ
bmZvKiBjb2RlY19zcGVjaWZpYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
b3B0aW9uYWw8aW50Piogc3BhdGlhbF9pZHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZweF9jb2RlY19jeF9wa3QmIHBrdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGZpcnN0X2ZyYW1lX2luX3BpY3R1cmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCB0aW1lc3RhbXApOwogICB2b2lkIEZpbGxSZWZlcmVuY2VJbmRpY2VzKGNvbnN0IHZw
eF9jb2RlY19jeF9wa3QmIHBrdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
aXplX3QgcGljX251bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIGlu
dGVyX2xheWVyX3ByZWRpY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlY1Nw
ZWNpZmljSW5mb1ZQOSogdnA5X2luZm8pOwogICB2b2lkIFVwZGF0ZVJlZmVyZW5jZUJ1ZmZlcnMo
Y29uc3QgdnB4X2NvZGVjX2N4X3BrdCYgcGt0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc2l6ZV90IHBpY19udW0pOwotICB2cHhfc3ZjX3JlZl9mcmFtZV9jb25maWdfdCBT
ZXRSZWZlcmVuY2VzKGJvb2wgaXNfa2V5X3BpYyk7CisgIHZweF9zdmNfcmVmX2ZyYW1lX2NvbmZp
Z190IFNldFJlZmVyZW5jZXMoCisgICAgICBib29sIGlzX2tleV9waWMsCisgICAgICBzaXplX3Qg
Zmlyc3RfYWN0aXZlX3NwYXRpYWxfbGF5ZXJfaWQpOwogCiAgIGJvb2wgRXhwbGljaXRseUNvbmZp
Z3VyZWRTcGF0aWFsTGF5ZXJzKCkgY29uc3Q7CiAgIGJvb2wgU2V0U3ZjUmF0ZXMoY29uc3QgVmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbiYgYml0cmF0ZV9hbGxvY2F0aW9uKTsKQEAgLTExOSw2ICsxMjAs
OSBAQCBjbGFzcyBWUDlFbmNvZGVySW1wbCA6IHB1YmxpYyBWUDlFbmNvZGVyIHsKICAgYm9vbCBp
c19zdmNfOwogICBJbnRlckxheWVyUHJlZE1vZGUgaW50ZXJfbGF5ZXJfcHJlZF87CiAgIGJvb2wg
ZXh0ZXJuYWxfcmVmX2NvbnRyb2xfOworICBjb25zdCBib29sIHRydXN0ZWRfcmF0ZV9jb250cm9s
bGVyXzsKKyAgY29uc3QgYm9vbCBmdWxsX3N1cGVyZnJhbWVfZHJvcF87CisgIGJvb2wgZmlyc3Rf
ZnJhbWVfaW5fcGljdHVyZV87CiAKICAgc3RkOjp2ZWN0b3I8RnJhbWVyYXRlQ29udHJvbGxlcj4g
ZnJhbWVyYXRlX2NvbnRyb2xsZXJfOwogCkBAIC0xNjgsNyArMTcyLDggQEAgY2xhc3MgVlA5RGVj
b2RlckltcGwgOiBwdWJsaWMgVlA5RGVjb2RlciB7CiAgIGludCBSZXR1cm5GcmFtZShjb25zdCB2
cHhfaW1hZ2VfdCogaW1nLAogICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZXN0YW1wLAog
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBudHBfdGltZV9tcywKLSAgICAgICAgICAgICAgICAg
IGludCBxcCk7CisgICAgICAgICAgICAgICAgICBpbnQgcXAsCisgICAgICAgICAgICAgICAgICBj
b25zdCBDb2xvclNwYWNlKiBleHBsaWNpdF9jb2xvcl9zcGFjZSk7CiAKICAgLy8gTWVtb3J5IHBv
b2wgdXNlZCB0byBzaGFyZSBidWZmZXJzIGJldHdlZW4gbGlidnB4IGFuZCB3ZWJydGMuCiAgIFZw
OUZyYW1lQnVmZmVyUG9vbCBmcmFtZV9idWZmZXJfcG9vbF87CkBAIC0xNzksNCArMTg0LDYgQEAg
Y2xhc3MgVlA5RGVjb2RlckltcGwgOiBwdWJsaWMgVlA5RGVjb2RlciB7CiB9OwogfSAgLy8gbmFt
ZXNwYWNlIHdlYnJ0YwogCisjZW5kaWYgIC8vIFJUQ19FTkFCTEVfVlA5CisKICNlbmRpZiAgLy8g
TU9EVUxFU19WSURFT19DT0RJTkdfQ09ERUNTX1ZQOV9WUDlfSU1QTF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvZW5jb2RlZF9mcmFtZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZW5jb2RlZF9mcmFtZS5oCmluZGV4IGEwOGVi
MDc2OWM3N2Y5ZjRhZWIzM2ZjOWUxZjE1YzJkYWVjMTQ4YTUuLmM3ZWZkNDAwNzI3Yjg2NGFmZGVl
NDkwZDYyOWIxZWExNzQ3ZTk5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2VuY29kZWRfZnJhbWUuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9lbmNvZGVkX2ZyYW1lLmgKQEAgLTEzLDggKzEzLDggQEAKIAogI2luY2x1ZGUg
PHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCiAjaW5jbHVk
ZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKLSNpbmNsdWRlICJj
b21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvaW5j
bHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZ19kZWZpbmVzLmgiCkBAIC02MCwxMSArNjAs
MjEgQEAgY2xhc3MgVkNNRW5jb2RlZEZyYW1lIDogcHJvdGVjdGVkIEVuY29kZWRJbWFnZSB7CiAg
ICAqICAgR2V0IHBvaW50ZXIgdG8gZnJhbWUgYnVmZmVyCiAgICAqLwogICBjb25zdCB1aW50OF90
KiBCdWZmZXIoKSBjb25zdCB7IHJldHVybiBfYnVmZmVyOyB9CisgIC8qKgorICAgKiAgIEdldCBw
b2ludGVyIHRvIGZyYW1lIGJ1ZmZlciB0aGF0IGNhbiBiZSBtdXRhdGVkLgorICAgKi8KKyAgdWlu
dDhfdCogTXV0YWJsZUJ1ZmZlcigpIHsgcmV0dXJuIF9idWZmZXI7IH0KICAgLyoqCiAgICAqICAg
R2V0IGZyYW1lIGxlbmd0aAogICAgKi8KICAgc2l6ZV90IExlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IF9sZW5ndGg7IH0KLQorICAvKioKKyAgICogICBTZXQgZnJhbWUgbGVuZ3RoCisgICAqLworICB2
b2lkIFNldExlbmd0aChzaXplX3QgbGVuZ3RoKSB7CisgICAgUlRDX0RDSEVDSyhsZW5ndGggPD0g
X3NpemUpOworICAgIF9sZW5ndGggPSBsZW5ndGg7CisgIH0KICAgLyoqCiAgICAqICAgRnJhbWUg
UlRQIHRpbWVzdGFtcCAoOTBrSHopCiAgICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZmVjX2NvbnRy
b2xsZXJfZGVmYXVsdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZlY19jb250cm9sbGVyX2RlZmF1bHQuY2MKaW5kZXgg
NWZlMzhlNjI5N2RkMTM3OWIwZTM0ODNiY2ZkYTgyZTQ1Y2NiYWYwMy4uODQxZWQ3NDJkYWM1MDll
NTc3MmEwMjY3NDA0NGMzZmJlZjQ3NGE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZmVjX2NvbnRyb2xs
ZXJfZGVmYXVsdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mZWNfY29udHJvbGxlcl9kZWZhdWx0LmNjCkBAIC04
LDEwICs4LDE3IEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KIAotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL2ZlY19jb250cm9sbGVyX2RlZmF1bHQuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKKyNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9mZWNfY29udHJvbGxlcl9kZWZhdWx0LmgiICAv
LyBOT0xJTlQKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAic3lzdGVt
X3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiB1
c2luZyBydGM6OkNyaXRTY29wZTsKKworY29uc3QgZmxvYXQga1Byb3RlY3Rpb25PdmVyaGVhZFJh
dGVUaHJlc2hvbGQgPSAwLjU7CisKIEZlY0NvbnRyb2xsZXJEZWZhdWx0OjpGZWNDb250cm9sbGVy
RGVmYXVsdCgKICAgICBDbG9jayogY2xvY2ssCiAgICAgVkNNUHJvdGVjdGlvbkNhbGxiYWNrKiBw
cm90ZWN0aW9uX2NhbGxiYWNrKQpAQCAtMTksMTMgKzI2LDE1IEBAIEZlY0NvbnRyb2xsZXJEZWZh
dWx0OjpGZWNDb250cm9sbGVyRGVmYXVsdCgKICAgICAgIHByb3RlY3Rpb25fY2FsbGJhY2tfKHBy
b3RlY3Rpb25fY2FsbGJhY2spLAogICAgICAgbG9zc19wcm90X2xvZ2ljXyhuZXcgbWVkaWFfb3B0
aW1pemF0aW9uOjpWQ01Mb3NzUHJvdGVjdGlvbkxvZ2ljKAogICAgICAgICAgIGNsb2NrXy0+VGlt
ZUluTWlsbGlzZWNvbmRzKCkpKSwKLSAgICAgIG1heF9wYXlsb2FkX3NpemVfKDE0NjApIHt9Cisg
ICAgICBtYXhfcGF5bG9hZF9zaXplXygxNDYwKSwKKyAgICAgIG92ZXJoZWFkX3RocmVzaG9sZF8o
R2V0UHJvdGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVzaG9sZCgpKSB7fQogCiBGZWNDb250cm9sbGVy
RGVmYXVsdDo6RmVjQ29udHJvbGxlckRlZmF1bHQoQ2xvY2sqIGNsb2NrKQogICAgIDogY2xvY2tf
KGNsb2NrKSwKICAgICAgIGxvc3NfcHJvdF9sb2dpY18obmV3IG1lZGlhX29wdGltaXphdGlvbjo6
VkNNTG9zc1Byb3RlY3Rpb25Mb2dpYygKICAgICAgICAgICBjbG9ja18tPlRpbWVJbk1pbGxpc2Vj
b25kcygpKSksCi0gICAgICBtYXhfcGF5bG9hZF9zaXplXygxNDYwKSB7fQorICAgICAgbWF4X3Bh
eWxvYWRfc2l6ZV8oMTQ2MCksCisgICAgICBvdmVyaGVhZF90aHJlc2hvbGRfKEdldFByb3RlY3Rp
b25PdmVyaGVhZFJhdGVUaHJlc2hvbGQoKSkge30KIAogRmVjQ29udHJvbGxlckRlZmF1bHQ6On5G
ZWNDb250cm9sbGVyRGVmYXVsdCh2b2lkKSB7CiAgIGxvc3NfcHJvdF9sb2dpY18tPlJlbGVhc2Uo
KTsKQEAgLTQ2LDYgKzU1LDI1IEBAIHZvaWQgRmVjQ29udHJvbGxlckRlZmF1bHQ6OlNldEVuY29k
aW5nRGF0YShzaXplX3Qgd2lkdGgsCiAgIG1heF9wYXlsb2FkX3NpemVfID0gbWF4X3BheWxvYWRf
c2l6ZTsKIH0KIAorZmxvYXQgRmVjQ29udHJvbGxlckRlZmF1bHQ6OkdldFByb3RlY3Rpb25PdmVy
aGVhZFJhdGVUaHJlc2hvbGQoKSB7CisgIGZsb2F0IG92ZXJoZWFkX3RocmVzaG9sZCA9CisgICAg
ICBzdHJ0b2Yod2VicnRjOjpmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKAorICAgICAgICAgICAg
ICAgICAiV2ViUlRDLVByb3RlY3Rpb25PdmVyaGVhZFJhdGVUaHJlc2hvbGQiKQorICAgICAgICAg
ICAgICAgICAuY19zdHIoKSwKKyAgICAgICAgICAgICBudWxscHRyKTsKKyAgaWYgKG92ZXJoZWFk
X3RocmVzaG9sZCA+IDAgJiYgb3ZlcmhlYWRfdGhyZXNob2xkIDw9IDEpIHsKKyAgICBSVENfTE9H
KExTX0lORk8pIDw8ICJQcm90ZWN0aW9uT3ZlcmhlYWRSYXRlVGhyZXNob2xkIGlzIHNldCB0byAi
CisgICAgICAgICAgICAgICAgICAgICA8PCBvdmVyaGVhZF90aHJlc2hvbGQ7CisgICAgcmV0dXJu
IG92ZXJoZWFkX3RocmVzaG9sZDsKKyAgfSBlbHNlIGlmIChvdmVyaGVhZF90aHJlc2hvbGQgPCAw
IHx8IG92ZXJoZWFkX3RocmVzaG9sZCA+IDEpIHsKKyAgICBSVENfTE9HKFdBUk5JTkcpIDw8ICJQ
cm90ZWN0aW9uT3ZlcmhlYWRSYXRlVGhyZXNob2xkIGZpZWxkIHRyaWFsIGlzIHNldCB0byAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAiYW4gaW52YWxpZCB2YWx1ZSwgZXhwZWN0aW5nIGEgdmFs
dWUgYmV0d2VlbiAoMCwgMV0uIjsKKyAgfQorICAvLyBXZWJSVEMtUHJvdGVjdGlvbk92ZXJoZWFk
UmF0ZVRocmVzaG9sZCBmaWVsZCB0cmlhbCBzdHJpbmcgaXMgbm90IGZvdW5kLCB1c2UKKyAgLy8g
dGhlIGRlZmF1bHQgdmFsdWUuCisgIHJldHVybiBrUHJvdGVjdGlvbk92ZXJoZWFkUmF0ZVRocmVz
aG9sZDsKK30KKwogdWludDMyX3QgRmVjQ29udHJvbGxlckRlZmF1bHQ6OlVwZGF0ZUZlY1JhdGVz
KAogICAgIHVpbnQzMl90IGVzdGltYXRlZF9iaXRyYXRlX2JwcywKICAgICBpbnQgYWN0dWFsX2Zy
YW1lcmF0ZV9mcHMsCkBAIC0xMjUsOSArMTUzLDkgQEAgdWludDMyX3QgRmVjQ29udHJvbGxlckRl
ZmF1bHQ6OlVwZGF0ZUZlY1JhdGVzKAogICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oc2VudF9u
YWNrX3JhdGVfYnBzICsgc2VudF9mZWNfcmF0ZV9icHMpIC8KICAgICAgICAgc2VudF90b3RhbF9y
YXRlX2JwczsKICAgfQotICAvLyBDYXAgdGhlIG92ZXJoZWFkIGVzdGltYXRlIHRvIDUwJS4KLSAg
aWYgKHByb3RlY3Rpb25fb3ZlcmhlYWRfcmF0ZSA+IDAuNSkKLSAgICBwcm90ZWN0aW9uX292ZXJo
ZWFkX3JhdGUgPSAwLjU7CisgIC8vIENhcCB0aGUgb3ZlcmhlYWQgZXN0aW1hdGUgdG8gYSB0aHJl
c2hvbGQsIGRlZmF1bHQgaXMgNTAlLgorICBwcm90ZWN0aW9uX292ZXJoZWFkX3JhdGUgPQorICAg
ICAgc3RkOjptaW4ocHJvdGVjdGlvbl9vdmVyaGVhZF9yYXRlLCBvdmVyaGVhZF90aHJlc2hvbGRf
KTsKICAgLy8gU291cmNlIGNvZGluZyByYXRlOiB0b3RhbCByYXRlIC0gcHJvdGVjdGlvbiBvdmVy
aGVhZC4KICAgcmV0dXJuIGVzdGltYXRlZF9iaXRyYXRlX2JwcyAqICgxLjAgLSBwcm90ZWN0aW9u
X292ZXJoZWFkX3JhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZmVjX2NvbnRyb2xsZXJfZGVm
YXVsdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvZmVjX2NvbnRyb2xsZXJfZGVmYXVsdC5oCmluZGV4IGE5NWVjZWQyNDVh
MjIwOGEwMjQyMGQxMmJhY2Q1Njg5MWY2MTc5MDAuLjlkNzlhNjFkMjhlYmJhZWVkN2YwZjMxYTUx
YzdmNzY4MGFlNDRhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZlY19jb250cm9sbGVyX2RlZmF1bHQu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9mZWNfY29udHJvbGxlcl9kZWZhdWx0LmgKQEAgLTQyLDYgKzQyLDcgQEAg
Y2xhc3MgRmVjQ29udHJvbGxlckRlZmF1bHQgOiBwdWJsaWMgRmVjQ29udHJvbGxlciB7CiAgIHZv
aWQgVXBkYXRlV2l0aEVuY29kZWREYXRhKGNvbnN0IHNpemVfdCBlbmNvZGVkX2ltYWdlX2xlbmd0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVUeXBlIGVuY29kZWRf
aW1hZ2VfZnJhbWV0eXBlKSBvdmVycmlkZTsKICAgYm9vbCBVc2VMb3NzVmVjdG9yTWFzaygpIG92
ZXJyaWRlOworICBmbG9hdCBHZXRQcm90ZWN0aW9uT3ZlcmhlYWRSYXRlVGhyZXNob2xkKCk7CiAK
ICBwcml2YXRlOgogICBlbnVtIHsga0JpdHJhdGVBdmVyYWdlV2luTXMgPSAxMDAwIH07CkBAIC01
Miw2ICs1Myw3IEBAIGNsYXNzIEZlY0NvbnRyb2xsZXJEZWZhdWx0IDogcHVibGljIEZlY0NvbnRy
b2xsZXIgewogICAgICAgUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CiAgIHNpemVfdCBtYXhf
cGF5bG9hZF9zaXplXyBSVENfR1VBUkRFRF9CWShjcml0X3NlY3RfKTsKICAgUlRDX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihGZWNDb250cm9sbGVyRGVmYXVsdCk7CisgIGNvbnN0IGZsb2F0IG92
ZXJoZWFkX3RocmVzaG9sZF87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVyMi5jYwppbmRl
eCAzNzc2MTFlNWUyNzE0Mzc1MDZhZDk4NDdlYTY4NDBjOWUxZDZkNjA2Li4wNGZiYTg0Y2FmNTVi
NDQ3YzA1N2RhOTNkMDZlNjU0MDE2ZWMxZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZm
ZXIyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjIuY2MKQEAgLTQ2LDExICs0Niw5IEBAIEZy
YW1lQnVmZmVyOjpGcmFtZUJ1ZmZlcihDbG9jayogY2xvY2ssCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgVkNNVGltaW5nKiB0aW1pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgVkNNUmVj
ZWl2ZVN0YXRpc3RpY3NDYWxsYmFjayogc3RhdHNfY2FsbGJhY2spCiAgICAgOiBjbG9ja18oY2xv
Y2spLAotICAgICAgbmV3X2NvbnRpbnVvdXNfZnJhbWVfZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAg
ICAgICBqaXR0ZXJfZXN0aW1hdG9yXyhqaXR0ZXJfZXN0aW1hdG9yKSwKICAgICAgIHRpbWluZ18o
dGltaW5nKSwKICAgICAgIGludGVyX2ZyYW1lX2RlbGF5XyhjbG9ja18tPlRpbWVJbk1pbGxpc2Vj
b25kcygpKSwKLSAgICAgIGxhc3RfZGVjb2RlZF9mcmFtZV90aW1lc3RhbXBfKDApLAogICAgICAg
bGFzdF9kZWNvZGVkX2ZyYW1lX2l0XyhmcmFtZXNfLmVuZCgpKSwKICAgICAgIGxhc3RfY29udGlu
dW91c19mcmFtZV9pdF8oZnJhbWVzXy5lbmQoKSksCiAgICAgICBudW1fZnJhbWVzX2hpc3Rvcnlf
KDApLApAQCAtMTE1LDEwICsxMTMsMTkgQEAgRnJhbWVCdWZmZXI6OlJldHVyblJlYXNvbiBGcmFt
ZUJ1ZmZlcjo6TmV4dEZyYW1lKAogICAgICAgICBpZiAoa2V5ZnJhbWVfcmVxdWlyZWQgJiYgIWZy
YW1lLT5pc19rZXlmcmFtZSgpKQogICAgICAgICAgIGNvbnRpbnVlOwogCisgICAgICAgIC8vIFRP
RE8oaHR0cHM6Ly9idWdzLndlYnJ0Yy5vcmcvOTk3NCk6IGNvbnNpZGVyIHJlbW92aW5nIHRoaXMg
Y2hlY2sKKyAgICAgICAgLy8gYXMgaXQgbWF5IG1ha2UgYSBzdHJlYW0gdW5kZWNvZGFibGUgYWZ0
ZXIgYSB2ZXJ5IGxvbmcgZGVsYXkgYmV0d2VlbgorICAgICAgICAvLyBmcmFtZXMuCisgICAgICAg
IGlmIChsYXN0X2RlY29kZWRfZnJhbWVfdGltZXN0YW1wXyAmJgorICAgICAgICAgICAgQWhlYWRP
ZigqbGFzdF9kZWNvZGVkX2ZyYW1lX3RpbWVzdGFtcF8sIGZyYW1lLT5UaW1lc3RhbXAoKSkpIHsK
KyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIG5leHRfZnJhbWVfaXRf
ID0gZnJhbWVfaXQ7Ci0gICAgICAgIGlmIChmcmFtZS0+UmVuZGVyVGltZSgpID09IC0xKQorICAg
ICAgICBpZiAoZnJhbWUtPlJlbmRlclRpbWUoKSA9PSAtMSkgewogICAgICAgICAgIGZyYW1lLT5T
ZXRSZW5kZXJUaW1lKAogICAgICAgICAgICAgICB0aW1pbmdfLT5SZW5kZXJUaW1lTXMoZnJhbWUt
PlRpbWVzdGFtcCgpLCBub3dfbXMpKTsKKyAgICAgICAgfQogICAgICAgICB3YWl0X21zID0gdGlt
aW5nXy0+TWF4V2FpdGluZ1RpbWUoZnJhbWUtPlJlbmRlclRpbWUoKSwgbm93X21zKTsKIAogICAg
ICAgICAvLyBUaGlzIHdpbGwgY2F1c2UgdGhlIGZyYW1lIGJ1ZmZlciB0byBwcmVmZXIgaGlnaCBm
cmFtZXJhdGUgcmF0aGVyCkBAIC0xNzUsMzMgKzE4Miw2IEBAIEZyYW1lQnVmZmVyOjpSZXR1cm5S
ZWFzb24gRnJhbWVCdWZmZXI6Ok5leHRGcmFtZSgKICAgICAgIFVwZGF0ZVRpbWluZ0ZyYW1lSW5m
bygpOwogICAgICAgUHJvcGFnYXRlRGVjb2RhYmlsaXR5KG5leHRfZnJhbWVfaXRfLT5zZWNvbmQp
OwogCi0gICAgICAvLyBTYW5pdHkgY2hlY2sgZm9yIFJUUCB0aW1lc3RhbXAgbW9ub3RvbmljaXR5
LgotICAgICAgaWYgKGxhc3RfZGVjb2RlZF9mcmFtZV9pdF8gIT0gZnJhbWVzXy5lbmQoKSkgewot
ICAgICAgICBjb25zdCBWaWRlb0xheWVyRnJhbWVJZCYgbGFzdF9kZWNvZGVkX2ZyYW1lX2tleSA9
Ci0gICAgICAgICAgICBsYXN0X2RlY29kZWRfZnJhbWVfaXRfLT5maXJzdDsKLSAgICAgICAgY29u
c3QgVmlkZW9MYXllckZyYW1lSWQmIGZyYW1lX2tleSA9IG5leHRfZnJhbWVfaXRfLT5maXJzdDsK
LQotICAgICAgICBjb25zdCBib29sIGZyYW1lX2lzX2hpZ2hlcl9zcGF0aWFsX2xheWVyX29mX2xh
c3RfZGVjb2RlZF9mcmFtZSA9Ci0gICAgICAgICAgICBsYXN0X2RlY29kZWRfZnJhbWVfdGltZXN0
YW1wXyA9PSBmcmFtZS0+VGltZXN0YW1wKCkgJiYKLSAgICAgICAgICAgIGxhc3RfZGVjb2RlZF9m
cmFtZV9rZXkucGljdHVyZV9pZCA9PSBmcmFtZV9rZXkucGljdHVyZV9pZCAmJgotICAgICAgICAg
ICAgbGFzdF9kZWNvZGVkX2ZyYW1lX2tleS5zcGF0aWFsX2xheWVyIDwgZnJhbWVfa2V5LnNwYXRp
YWxfbGF5ZXI7Ci0KLSAgICAgICAgaWYgKEFoZWFkT3JBdChsYXN0X2RlY29kZWRfZnJhbWVfdGlt
ZXN0YW1wXywgZnJhbWUtPlRpbWVzdGFtcCgpKSAmJgotICAgICAgICAgICAgIWZyYW1lX2lzX2hp
Z2hlcl9zcGF0aWFsX2xheWVyX29mX2xhc3RfZGVjb2RlZF9mcmFtZSkgewotICAgICAgICAgIC8v
IFRPRE8oYnJhbmR0cik6IENvbnNpZGVyIGNsZWFyaW5nIHRoZSBlbnRpcmUgYnVmZmVyIHdoZW4g
d2UgaGl0Ci0gICAgICAgICAgLy8gdGhlc2UgY29uZGl0aW9ucy4KLSAgICAgICAgICBSVENfTE9H
KExTX1dBUk5JTkcpCi0gICAgICAgICAgICAgIDw8ICJGcmFtZSB3aXRoICh0aW1lc3RhbXA6cGlj
dHVyZV9pZDpzcGF0aWFsX2lkKSAoIgotICAgICAgICAgICAgICA8PCBmcmFtZS0+VGltZXN0YW1w
KCkgPDwgIjoiIDw8IGZyYW1lLT5pZC5waWN0dXJlX2lkIDw8ICI6IgotICAgICAgICAgICAgICA8
PCBzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lLT5pZC5zcGF0aWFsX2xheWVyKSA8PCAiKSIKLSAgICAg
ICAgICAgICAgPDwgIiBzZW50IHRvIGRlY29kZXIgYWZ0ZXIgZnJhbWUgd2l0aCIKLSAgICAgICAg
ICAgICAgPDwgIiAodGltZXN0YW1wOnBpY3R1cmVfaWQ6c3BhdGlhbF9pZCkgKCIKLSAgICAgICAg
ICAgICAgPDwgbGFzdF9kZWNvZGVkX2ZyYW1lX3RpbWVzdGFtcF8gPDwgIjoiCi0gICAgICAgICAg
ICAgIDw8IGxhc3RfZGVjb2RlZF9mcmFtZV9rZXkucGljdHVyZV9pZCA8PCAiOiIKLSAgICAgICAg
ICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PihsYXN0X2RlY29kZWRfZnJhbWVfa2V5LnNwYXRpYWxf
bGF5ZXIpIDw8ICIpLiI7Ci0gICAgICAgIH0KLSAgICAgIH0KLQogICAgICAgQWR2YW5jZUxhc3RE
ZWNvZGVkRnJhbWUobmV4dF9mcmFtZV9pdF8pOwogICAgICAgbGFzdF9kZWNvZGVkX2ZyYW1lX3Rp
bWVzdGFtcF8gPSBmcmFtZS0+VGltZXN0YW1wKCk7CiAgICAgICAqZnJhbWVfb3V0ID0gc3RkOjpt
b3ZlKGZyYW1lKTsKQEAgLTI2Nyw2ICsyNDcsMTEgQEAgdm9pZCBGcmFtZUJ1ZmZlcjo6U3RvcCgp
IHsKICAgbmV3X2NvbnRpbnVvdXNfZnJhbWVfZXZlbnRfLlNldCgpOwogfQogCit2b2lkIEZyYW1l
QnVmZmVyOjpDbGVhcigpIHsKKyAgcnRjOjpDcml0U2NvcGUgbG9jaygmY3JpdF8pOworICBDbGVh
ckZyYW1lc0FuZEhpc3RvcnkoKTsKK30KKwogdm9pZCBGcmFtZUJ1ZmZlcjo6VXBkYXRlUnR0KGlu
dDY0X3QgcnR0X21zKSB7CiAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfKTsKICAgaml0dGVy
X2VzdGltYXRvcl8tPlVwZGF0ZVJ0dChydHRfbXMpOwpAQCAtMzQ4LDcgKzMzMyw3IEBAIGludDY0
X3QgRnJhbWVCdWZmZXI6Okluc2VydEZyYW1lKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkRnJhbWU+
IGZyYW1lKSB7CiAKICAgaWYgKGxhc3RfZGVjb2RlZF9mcmFtZV9pdF8gIT0gZnJhbWVzXy5lbmQo
KSAmJgogICAgICAgaWQgPD0gbGFzdF9kZWNvZGVkX2ZyYW1lX2l0Xy0+Zmlyc3QpIHsKLSAgICBp
ZiAoQWhlYWRPZihmcmFtZS0+VGltZXN0YW1wKCksIGxhc3RfZGVjb2RlZF9mcmFtZV90aW1lc3Rh
bXBfKSAmJgorICAgIGlmIChBaGVhZE9mKGZyYW1lLT5UaW1lc3RhbXAoKSwgKmxhc3RfZGVjb2Rl
ZF9mcmFtZV90aW1lc3RhbXBfKSAmJgogICAgICAgICBmcmFtZS0+aXNfa2V5ZnJhbWUoKSkgewog
ICAgICAgLy8gSWYgdGhpcyBmcmFtZSBoYXMgYSBuZXdlciB0aW1lc3RhbXAgYnV0IGFuIGVhcmxp
ZXIgcGljdHVyZSBpZCB0aGVuIHdlCiAgICAgICAvLyBhc3N1bWUgdGhlcmUgaGFzIGJlZW4gYSBq
dW1wIGluIHRoZSBwaWN0dXJlIGlkIGR1ZSB0byBzb21lIGVuY29kZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL2ZyYW1lX2J1ZmZlcjIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlcjIuaAppbmRleCBhZTg0ZmNm
OWU2YzI5MzgxMGQ0NDQzMmVmM2EwMDlkYjQxZWVmNzRlLi5kYzVlNWEyZTM3MmZkYzEwYWM4MGFj
NmVlNzFmNzY5YzhkODZjOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvZnJhbWVfYnVmZmVyMi5oCkBAIC03OSw2ICs3OSw5IEBAIGNsYXNzIEZyYW1lQnVm
ZmVyIHsKICAgLy8gVXBkYXRlcyB0aGUgUlRUIGZvciBqaXR0ZXIgYnVmZmVyIGVzdGltYXRpb24u
CiAgIHZvaWQgVXBkYXRlUnR0KGludDY0X3QgcnR0X21zKTsKIAorICAvLyBDbGVhcnMgdGhlIEZy
YW1lQnVmZmVyLCByZW1vdmluZyBhbGwgdGhlIGJ1ZmZlcmVkIGZyYW1lcy4KKyAgdm9pZCBDbGVh
cigpOworCiAgcHJpdmF0ZToKICAgc3RydWN0IEZyYW1lSW5mbyB7CiAgICAgRnJhbWVJbmZvKCk7
CkBAIC0xNjEsNyArMTY0LDcgQEAgY2xhc3MgRnJhbWVCdWZmZXIgewogICBWQ01KaXR0ZXJFc3Rp
bWF0b3IqIGNvbnN0IGppdHRlcl9lc3RpbWF0b3JfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKICAg
VkNNVGltaW5nKiBjb25zdCB0aW1pbmdfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKICAgVkNNSW50
ZXJGcmFtZURlbGF5IGludGVyX2ZyYW1lX2RlbGF5XyBSVENfR1VBUkRFRF9CWShjcml0Xyk7Ci0g
IHVpbnQzMl90IGxhc3RfZGVjb2RlZF9mcmFtZV90aW1lc3RhbXBfIFJUQ19HVUFSREVEX0JZKGNy
aXRfKTsKKyAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGxhc3RfZGVjb2RlZF9mcmFtZV90aW1l
c3RhbXBfIFJUQ19HVUFSREVEX0JZKGNyaXRfKTsKICAgRnJhbWVNYXA6Oml0ZXJhdG9yIGxhc3Rf
ZGVjb2RlZF9mcmFtZV9pdF8gUlRDX0dVQVJERURfQlkoY3JpdF8pOwogICBGcmFtZU1hcDo6aXRl
cmF0b3IgbGFzdF9jb250aW51b3VzX2ZyYW1lX2l0XyBSVENfR1VBUkRFRF9CWShjcml0Xyk7CiAg
IEZyYW1lTWFwOjppdGVyYXRvciBuZXh0X2ZyYW1lX2l0XyBSVENfR1VBUkRFRF9CWShjcml0Xyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZnJh
bWVfYnVmZmVyMl91bml0dGVzdC5jYwppbmRleCAzNTdiYTg2NTQwNTUxZjk5MmFlZDU2MWM1ZmY5
MTM4NTMyZGUwMmQzLi5lMTBmNzg1Mjc5NTdlNzdjMDc1YTBmMDgyN2IzN2Q2ZDdiZjRjYWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9mcmFtZV9idWZmZXIyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Zy
YW1lX2J1ZmZlcjJfdW5pdHRlc3QuY2MKQEAgLTEzNyw5ICsxMzcsNyBAQCBjbGFzcyBUZXN0RnJh
bWVCdWZmZXIyIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZzdGF0c19jYWxsYmFja18pKSwKICAgICAgICAgcmFuZF8oMHgzNDY3ODIx
MyksCiAgICAgICAgIHRlYXJfZG93bl8oZmFsc2UpLAotICAgICAgICBleHRyYWN0X3RocmVhZF8o
JkV4dHJhY3RMb29wLCB0aGlzLCAiRXh0cmFjdCBUaHJlYWQiKSwKLSAgICAgICAgdHJpZ2dlcl9l
eHRyYWN0X2V2ZW50XyhmYWxzZSwgZmFsc2UpLAotICAgICAgICBjcml0X2FjcXVpcmVkX2V2ZW50
XyhmYWxzZSwgZmFsc2UpIHt9CisgICAgICAgIGV4dHJhY3RfdGhyZWFkXygmRXh0cmFjdExvb3As
IHRoaXMsICJFeHRyYWN0IFRocmVhZCIpIHt9CiAKICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsg
ZXh0cmFjdF90aHJlYWRfLlN0YXJ0KCk7IH0KIApAQCAtNjAwLDUgKzU5OCwyMSBAQCBURVNUX0Yo
VGVzdEZyYW1lQnVmZmVyMiwgRG9udFVwZGF0ZU9uVW5kZWNvZGFibGVGcmFtZSkgewogICBFeHRy
YWN0RnJhbWUoMCwgdHJ1ZSk7CiB9CiAKK1RFU1RfRihUZXN0RnJhbWVCdWZmZXIyLCBEb250RGVj
b2RlT2xkZXJUaW1lc3RhbXApIHsKKyAgSW5zZXJ0RnJhbWUoMiwgMCwgMSwgZmFsc2UpOworICBJ
bnNlcnRGcmFtZSgxLCAwLCAyLCBmYWxzZSk7ICAvLyBPbGRlciBwaWN0dXJlIGlkIGJ1dCBuZXdl
ciB0aW1lc3RhbXAuCisgIEV4dHJhY3RGcmFtZSgwKTsKKyAgRXh0cmFjdEZyYW1lKDApOworICBD
aGVja0ZyYW1lKDAsIDEsIDApOworICBDaGVja05vRnJhbWUoMSk7CisKKyAgSW5zZXJ0RnJhbWUo
MywgMCwgNCwgZmFsc2UpOworICBJbnNlcnRGcmFtZSg0LCAwLCAzLCBmYWxzZSk7ICAvLyBOZXdl
ciBwaWN0dXJlIGlkIGJ1dCBvbGRlciB0aW1lc3RhbXAuCisgIEV4dHJhY3RGcmFtZSgwKTsKKyAg
RXh0cmFjdEZyYW1lKDApOworICBDaGVja0ZyYW1lKDIsIDMsIDApOworICBDaGVja05vRnJhbWUo
Myk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB2aWRlb19jb2RpbmcKIH0gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2dlbmVyaWNfZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2dlbmVy
aWNfZW5jb2Rlci5jYwppbmRleCBiMWQ3YzI4YWJkMjQ3MzM3MzhmNjA4N2Y4YzkzOTNhYTA1ZmVl
MGIzLi5kNWNjMGE4YmEwNjhkY2ZkZmVmNWVhZjI0ZDc4OTExMTU2ZWJiOWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVv
X2NvZGluZy9nZW5lcmljX2VuY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZ2VuZXJpY19lbmNvZGVyLmNj
CkBAIC0xMDEsMjYgKzEwMSwxNCBAQCBpbnQzMl90IFZDTUdlbmVyaWNFbmNvZGVyOjpFbmNvZGUo
Y29uc3QgVmlkZW9GcmFtZSYgZnJhbWUsCiAKIHZvaWQgVkNNR2VuZXJpY0VuY29kZXI6OlNldEVu
Y29kZXJQYXJhbWV0ZXJzKGNvbnN0IEVuY29kZXJQYXJhbWV0ZXJzJiBwYXJhbXMpIHsKICAgUlRD
X0RDSEVDS19SVU5TX1NFUklBTElaRUQoJnJhY2VfY2hlY2tlcl8pOwotICBib29sIGNoYW5uZWxf
cGFyYW1ldGVyc19oYXZlX2NoYW5nZWQ7CiAgIGJvb2wgcmF0ZXNfaGF2ZV9jaGFuZ2VkOwogICB7
CiAgICAgcnRjOjpDcml0U2NvcGUgbG9jaygmcGFyYW1zX2xvY2tfKTsKLSAgICBjaGFubmVsX3Bh
cmFtZXRlcnNfaGF2ZV9jaGFuZ2VkID0KLSAgICAgICAgcGFyYW1zLmxvc3NfcmF0ZSAhPSBlbmNv
ZGVyX3BhcmFtc18ubG9zc19yYXRlIHx8Ci0gICAgICAgIHBhcmFtcy5ydHQgIT0gZW5jb2Rlcl9w
YXJhbXNfLnJ0dDsKICAgICByYXRlc19oYXZlX2NoYW5nZWQgPQogICAgICAgICBwYXJhbXMudGFy
Z2V0X2JpdHJhdGUgIT0gZW5jb2Rlcl9wYXJhbXNfLnRhcmdldF9iaXRyYXRlIHx8CiAgICAgICAg
IHBhcmFtcy5pbnB1dF9mcmFtZV9yYXRlICE9IGVuY29kZXJfcGFyYW1zXy5pbnB1dF9mcmFtZV9y
YXRlOwogICAgIGVuY29kZXJfcGFyYW1zXyA9IHBhcmFtczsKICAgfQotICBpZiAoY2hhbm5lbF9w
YXJhbWV0ZXJzX2hhdmVfY2hhbmdlZCkgewotICAgIGludCByZXMgPSBlbmNvZGVyXy0+U2V0Q2hh
bm5lbFBhcmFtZXRlcnMocGFyYW1zLmxvc3NfcmF0ZSwgcGFyYW1zLnJ0dCk7Ci0gICAgaWYgKHJl
cyAhPSAwKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJFcnJvciBzZXQgZW5jb2Rl
ciBwYXJhbWV0ZXJzIChsb3NzID0gIgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBwYXJh
bXMubG9zc19yYXRlIDw8ICIsIHJ0dCA9ICIgPDwgcGFyYW1zLnJ0dAotICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiKTogIiA8PCByZXM7Ci0gICAgfQotICB9CiAgIGlmIChyYXRlc19oYXZl
X2NoYW5nZWQpIHsKICAgICBpbnQgcmVzID0gZW5jb2Rlcl8tPlNldFJhdGVBbGxvY2F0aW9uKHBh
cmFtcy50YXJnZXRfYml0cmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy5pbnB1dF9mcmFtZV9yYXRlKTsKQEAgLTE2NCw5ICsxNTIsOSBAQCBib29s
IFZDTUdlbmVyaWNFbmNvZGVyOjpJbnRlcm5hbFNvdXJjZSgpIGNvbnN0IHsKICAgcmV0dXJuIGlu
dGVybmFsX3NvdXJjZV87CiB9CiAKLWJvb2wgVkNNR2VuZXJpY0VuY29kZXI6OlN1cHBvcnRzTmF0
aXZlSGFuZGxlKCkgY29uc3QgeworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBWQ01HZW5lcmlj
RW5jb2Rlcjo6R2V0RW5jb2RlckluZm8oKSBjb25zdCB7CiAgIFJUQ19EQ0hFQ0tfUlVOU19TRVJJ
QUxJWkVEKCZyYWNlX2NoZWNrZXJfKTsKLSAgcmV0dXJuIGVuY29kZXJfLT5TdXBwb3J0c05hdGl2
ZUhhbmRsZSgpOworICByZXR1cm4gZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCk7CiB9CiAKIFZD
TUVuY29kZWRGcmFtZUNhbGxiYWNrOjpWQ01FbmNvZGVkRnJhbWVDYWxsYmFjaygKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2dlbmVyaWNfZW5jb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZ2VuZXJpY19lbmNvZGVyLmgKaW5k
ZXggMTUxZTkzZTQ5NzU5Nzk2MDk1YWVkZmVlZjlhNDBkMTNiNDEwYWQ5Yy4uMmY4NDFiMzRkZDgx
NWQyOTk1ZTQ4YjRhYzk2ODEzYjBmMDg3NGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvZ2VuZXJpY19l
bmNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvZ2VuZXJpY19lbmNvZGVyLmgKQEAgLTE0Niw3ICsxNDYsNyBA
QCBjbGFzcyBWQ01HZW5lcmljRW5jb2RlciB7CiAKICAgaW50MzJfdCBSZXF1ZXN0RnJhbWUoY29u
c3Qgc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiYgZnJhbWVfdHlwZXMpOwogICBib29sIEludGVybmFs
U291cmNlKCkgY29uc3Q7Ci0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5kbGUoKSBjb25zdDsKKyAg
VmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0OwogCiAgcHJp
dmF0ZToKICAgcnRjOjpSYWNlQ2hlY2tlciByYWNlX2NoZWNrZXJfOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvaW5jbHVkZS9tb2NrL21vY2tfdmlkZW9fY29kZWNfaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNs
dWRlL21vY2svbW9ja192aWRlb19jb2RlY19pbnRlcmZhY2UuaAppbmRleCBjMjllZmVlYWQ2OGQ0
NjMwYzM5MTdiNjEwYmEzNTE4MmFiMTQ0OTNjLi43ZDAwMzU5MWVhM2Q5NWNjN2VhNzQ0MTAzZGEz
OWQ0MjY3YjcxMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL21vY2svbW9ja192aWRlb19j
b2RlY19pbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL21vY2svbW9ja192aWRlb19jb2Rl
Y19pbnRlcmZhY2UuaApAQCAtMTksNiArMTksOCBAQAogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAor
Ly8gTk9URTogRGVwcmVjYXRlZCBmaWxlLCBpbmNsdWRlIGFwaS9tb2NrX3ZpZGVvXyhlbmNvZGVy
fGRlY29kZXIpLmggaW5zdGVhZC4KKwogY2xhc3MgTW9ja0VuY29kZWRJbWFnZUNhbGxiYWNrIDog
cHVibGljIEVuY29kZWRJbWFnZUNhbGxiYWNrIHsKICBwdWJsaWM6CiAgIE1PQ0tfTUVUSE9EMyhP
bkVuY29kZWRJbWFnZSwKQEAgLTQyLDcgKzQ0LDYgQEAgY2xhc3MgTW9ja1ZpZGVvRW5jb2RlciA6
IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICAgICAgICAgICAgICAgaW50MzJfdChFbmNvZGVkSW1h
Z2VDYWxsYmFjayogY2FsbGJhY2spKTsKICAgTU9DS19NRVRIT0QwKFJlbGVhc2UsIGludDMyX3Qo
KSk7CiAgIE1PQ0tfTUVUSE9EMChSZXNldCwgaW50MzJfdCgpKTsKLSAgTU9DS19NRVRIT0QyKFNl
dENoYW5uZWxQYXJhbWV0ZXJzLCBpbnQzMl90KHVpbnQzMl90IHBhY2tldExvc3MsIGludDY0X3Qg
cnR0KSk7CiAgIE1PQ0tfTUVUSE9EMihTZXRSYXRlcywgaW50MzJfdCh1aW50MzJfdCBuZXdCaXRS
YXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpKTsKICAgTU9DS19NRVRIT0QyKFNldFJhdGVBbGxvY2F0
aW9uLAogICAgICAgICAgICAgICAgaW50MzJfdChjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9u
JiBuZXdCaXRSYXRlLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbml0
aWFsaXplci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbml0aWFsaXplci5oCmluZGV4
IGVlNzA4MTBmNjJlZDczZDM1ODQ5MWIxNzIxNmNhMzIxMDcxM2I3YjkuLmU5NzlmOWM4Njc3NmUy
YjllZGJlNzQ2YmQ2ZDk1ODIzZGJjOTIzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlk
ZW9fY29kZWNfaW5pdGlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2lu
aXRpYWxpemVyLmgKQEAgLTMwLDE1ICszMCw5IEBAIGNsYXNzIFZpZGVvQ29kZWNJbml0aWFsaXpl
ciB7CiAgIC8vIHR5cGUgdXNlZC4gRm9yIGluc3RhbmNlLCBWUDggd2lsbCBjcmVhdGUgYW4gYWxs
b2NhdG9yIHRoYW4gY2FuIGhhbmRsZQogICAvLyBzaW11bGNhc3QgYW5kIHRlbXBvcmFsIGxheWVy
aW5nLgogICAvLyBHZXRCaXRyYXRlQWxsb2NhdG9yIGlzIGNhbGxlZCBpbXBsaWNpdGx5IGZyb20g
aGVyZSwgbm8gbmVlZCB0byBjYWxsIGFnYWluLgotICBzdGF0aWMgYm9vbCBTZXR1cENvZGVjKAot
ICAgICAgY29uc3QgVmlkZW9FbmNvZGVyQ29uZmlnJiBjb25maWcsCi0gICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxWaWRlb1N0cmVhbT4mIHN0cmVhbXMsCi0gICAgICBWaWRlb0NvZGVjKiBjb2RlYywK
LSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3I+KiBiaXRyYXRlX2Fs
bG9jYXRvcik7Ci0KLSAgLy8gQ3JlYXRlIGEgYml0cmF0ZSBhbGxvY2F0b3IgZm9yIHRoZSBzcGVj
aWZpZWQgY29kZWMuCi0gIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2Nh
dG9yPiBDcmVhdGVCaXRyYXRlQWxsb2NhdG9yKAotICAgICAgY29uc3QgVmlkZW9Db2RlYyYgY29k
ZWMpOworICBzdGF0aWMgYm9vbCBTZXR1cENvZGVjKGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZyYg
Y29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVv
U3RyZWFtPiYgc3RyZWFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0NvZGVjKiBj
b2RlYyk7CiAKICBwcml2YXRlOgogICBzdGF0aWMgVmlkZW9Db2RlYyBWaWRlb0VuY29kZXJDb25m
aWdUb1ZpZGVvQ29kZWMoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2lu
dGVyZmFjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbnRlcmZhY2UuaAppbmRleCBk
MmJhZGY5MjAxYjIxZWU0YWEzMjYzODZkMjAxYzQ5NTQxYTE5YjRlLi4zODU4M2JmYTNiNDEwYzYy
ODViMzJjZjJiOTY1NGI3ZTA3NmYyZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVv
X2NvZGVjX2ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJm
YWNlLmgKQEAgLTc5LDYgKzc5LDcgQEAgc3RydWN0IENvZGVjU3BlY2lmaWNJbmZvIHsKICAgICBt
ZW1zZXQoJmNvZGVjU3BlY2lmaWMsIDAsIHNpemVvZihjb2RlY1NwZWNpZmljKSk7CiAgIH0KICAg
VmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlOworICAvLyB8Y29kZWNfbmFtZXwgaXMgZGVwcmVjYXRl
ZCwgdXNlIG5hbWUgcHJvdmlkZWQgYnkgVmlkZW9FbmNvZGVyIGluc3RlYWQuCiAgIGNvbnN0IGNo
YXIqIGNvZGVjX25hbWU7CiAgIENvZGVjU3BlY2lmaWNJbmZvVW5pb24gY29kZWNTcGVjaWZpYzsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvaW5j
bHVkZS92aWRlb19jb2RpbmcuaAppbmRleCA4ZWYwNDZhYTIzMTkzZjdmMzBmMmIxZWNkZWQxMWZm
NzNjODM0ZDY1Li4wODg5YjIzMWRlYTM0N2NjZTA0N2MwNTQ3ZGJlYTdjZTgwNTM0MTIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUv
dmlkZW9fY29kaW5nLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL2luY2x1
ZGUvbW9kdWxlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlw
ZXMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGlu
Z19kZWZpbmVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZGVwcmVjYXRpb24uaCIKICNpbmNsdWRl
ICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewpAQCAtMzcsMjAgKzM4LDYgQEAgY2xhc3MgVmlkZW9EZWNvZGVyOwogY2xhc3MgVmlk
ZW9FbmNvZGVyOwogc3RydWN0IENvZGVjU3BlY2lmaWNJbmZvOwogCi1jbGFzcyBFdmVudEZhY3Rv
cnkgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+RXZlbnRGYWN0b3J5KCkge30KLQotICB2aXJ0dWFs
IEV2ZW50V3JhcHBlciogQ3JlYXRlRXZlbnQoKSA9IDA7Ci19OwotCi1jbGFzcyBFdmVudEZhY3Rv
cnlJbXBsIDogcHVibGljIEV2ZW50RmFjdG9yeSB7Ci0gcHVibGljOgotICB+RXZlbnRGYWN0b3J5
SW1wbCgpIG92ZXJyaWRlIHt9Ci0KLSAgRXZlbnRXcmFwcGVyKiBDcmVhdGVFdmVudCgpIG92ZXJy
aWRlOwotfTsKLQogLy8gVXNlZCB0byBpbmRpY2F0ZSB3aGljaCBkZWNvZGUgd2l0aCBlcnJvcnMg
bW9kZSBzaG91bGQgYmUgdXNlZC4KIGVudW0gVkNNRGVjb2RlRXJyb3JNb2RlIHsKICAga05vRXJy
b3JzLCAgICAgICAgIC8vIE5ldmVyIGRlY29kZSB3aXRoIGVycm9ycy4gVmlkZW8gd2lsbCBmcmVl
emUKQEAgLTY5LDcgKzU2LDcgQEAgY2xhc3MgVmlkZW9Db2RpbmdNb2R1bGUgOiBwdWJsaWMgTW9k
dWxlIHsKICAgZW51bSBTZW5kZXJOYWNrTW9kZSB7IGtOYWNrTm9uZSwga05hY2tBbGwsIGtOYWNr
U2VsZWN0aXZlIH07CiAKICAgLy8gREVQUkVDQVRFRC4KLSAgc3RhdGljIFZpZGVvQ29kaW5nTW9k
dWxlKiBDcmVhdGUoQ2xvY2sqIGNsb2NrLCBFdmVudEZhY3RvcnkqIGV2ZW50X2ZhY3RvcnkpOwor
ICBzdGF0aWMgVmlkZW9Db2RpbmdNb2R1bGUqIENyZWF0ZShDbG9jayogY2xvY2spOwogCiAgIC8q
CiAgICAqICAgU2VuZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZ19k
ZWZpbmVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGluZ19kZWZpbmVzLmgKaW5kZXggN2Zi
NmY1ODM2NDc3M2Y4ZmE4MTgzOTZlMWNiN2Y2ODRmOGVkYjA2Zi4uN2JiYzk4ZmQ0ODMxYThlMjhh
NDQwY2VlOWFkMjdmNjgyNjk2MGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19j
b2RpbmdfZGVmaW5lcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nX2RlZmluZXMu
aApAQCAtMTUsOCArMTUsNiBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS92
aWRlby92aWRlb19mcmFtZS5oIgotLy8gRm9yIEVuY29kZWRJbWFnZQotI2luY2x1ZGUgImNvbW1v
bl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRl
L21vZHVsZV9jb21tb25fdHlwZXMuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC00Myw3ICs0
MSw3IEBAIGVudW0gewogICAvLyB8a0RlZmF1bHRUaW1pbmdGcmFtZXNEZWxheU1zfCwgb3IgaWYg
dGhlIGZyYW1lIGlzIGF0IGxlYXN0CiAgIC8vIHxrRGVmYXVsdE91dGxpc2VyRnJhbWVTaXplUGVy
Y2VudHwgaW4gc2l6ZSBvZiBhdmVyYWdlIGZyYW1lLgogICBrRGVmYXVsdFRpbWluZ0ZyYW1lc0Rl
bGF5TXMgPSAyMDAsCi0gIGtEZWZhdWx0T3V0bGllckZyYW1lU2l6ZVBlcmNlbnQgPSAyNTAsCisg
IGtEZWZhdWx0T3V0bGllckZyYW1lU2l6ZVBlcmNlbnQgPSA1MDAsCiAgIC8vIE1heGltdW0gbnVt
YmVyIG9mIGZyYW1lcyBmb3Igd2hhdCB3ZSBzdG9yZSBlbmNvZGUgc3RhcnQgdGltaW5nIGluZm9y
bWF0aW9uLgogICBrTWF4RW5jb2RlU3RhcnRUaW1lTGlzdFNpemUgPSA1MCwKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9qaXR0ZXJfYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfYnVmZmVyLmgKaW5kZXgg
ZjY0OWFkYzhiM2FiMzU5MzA0YWQxYzVjY2JjZTNiMjQ2Zjg4NDgwMC4uNDgyNjI3NjA0NTUzY2Qz
MjEyMjJmMmJkYTg0ZDZjZTVkOTc1OTA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2J1ZmZl
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9idWZmZXIuaApAQCAtMzUsNyArMzUsNiBAQCBlbnVtIFZD
TU5hY2tNb2RlIHsga05hY2ssIGtOb05hY2sgfTsKIAogLy8gZm9yd2FyZCBkZWNsYXJhdGlvbnMK
IGNsYXNzIENsb2NrOwotY2xhc3MgRXZlbnRGYWN0b3J5OwogY2xhc3MgRXZlbnRXcmFwcGVyOwog
Y2xhc3MgVkNNRnJhbWVCdWZmZXI7CiBjbGFzcyBWQ01QYWNrZXQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy9qaXR0ZXJfYnVmZmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2J1ZmZlcl91bml0dGVz
dC5jYwppbmRleCA2YWU2NWQ2MmU5ODZjNzI4Y2FkOThkNDdkNGVhY2JiYjFlY2I2ZDBjLi4zZWQx
OGE5Mzg2NTBiN2JlMGRjZGM2NTM5ZWNlYmQyNjFhMGJlZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9q
aXR0ZXJfYnVmZmVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9idWZmZXJfdW5pdHRl
c3QuY2MKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9t
ZWRpYV9vcHRfdXRpbC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3BhY2tldC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3Rlc3Qvc3RyZWFtX2dlbmVyYXRvci5o
IgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3Rlc3QvdGVzdF91dGlsLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9jYXRpb24uaCIKICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5j
bHVkZS9jbG9jay5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3Ry
aWFsLmgiCkBAIC0yMjAsOSArMjE5LDcgQEAgY2xhc3MgVGVzdEJhc2ljSml0dGVyQnVmZmVyIDog
cHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4sCiAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZSB7CiAgICAgY2xvY2tfLnJlc2V0KG5ldyBTaW11bGF0ZWRDbG9jaygwKSk7
CiAgICAgaml0dGVyX2J1ZmZlcl8ucmVzZXQobmV3IFZDTUppdHRlckJ1ZmZlcigKLSAgICAgICAg
Y2xvY2tfLmdldCgpLAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPihldmVu
dF9mYWN0b3J5Xy5DcmVhdGVFdmVudCgpKSwgdGhpcywKLSAgICAgICAgdGhpcykpOworICAgICAg
ICBjbG9ja18uZ2V0KCksIGFic2w6OldyYXBVbmlxdWUoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSks
IHRoaXMsIHRoaXMpKTsKICAgICBqaXR0ZXJfYnVmZmVyXy0+U3RhcnQoKTsKICAgICBzZXFfbnVt
XyA9IDEyMzQ7CiAgICAgdGltZXN0YW1wXyA9IDA7CkBAIC0zMTMsNyArMzEwLDYgQEAgY2xhc3Mg
VGVzdEJhc2ljSml0dGVyQnVmZmVyIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxz
dGQ6OnN0cmluZz4sCiAgIHVpbnQ4X3QgZGF0YV9bMTUwMF07CiAgIHN0ZDo6dW5pcXVlX3B0cjxW
Q01QYWNrZXQ+IHBhY2tldF87CiAgIHN0ZDo6dW5pcXVlX3B0cjxTaW11bGF0ZWRDbG9jaz4gY2xv
Y2tfOwotICBOdWxsRXZlbnRGYWN0b3J5IGV2ZW50X2ZhY3RvcnlfOwogICBzdGQ6OnVuaXF1ZV9w
dHI8VkNNSml0dGVyQnVmZmVyPiBqaXR0ZXJfYnVmZmVyXzsKIH07CiAKQEAgLTMzOSw5ICszMzUs
NyBAQCBjbGFzcyBUZXN0UnVubmluZ0ppdHRlckJ1ZmZlciA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08c3RkOjpzdHJpbmc+LAogICAgIG1heF9uYWNrX2xpc3Rfc2l6ZV8gPSAxNTA7
CiAgICAgb2xkZXN0X3BhY2tldF90b19uYWNrXyA9IDI1MDsKICAgICBqaXR0ZXJfYnVmZmVyXyA9
IG5ldyBWQ01KaXR0ZXJCdWZmZXIoCi0gICAgICAgIGNsb2NrXy5nZXQoKSwKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4oZXZlbnRfZmFjdG9yeV8uQ3JlYXRlRXZlbnQoKSks
IHRoaXMsCi0gICAgICAgIHRoaXMpOworICAgICAgICBjbG9ja18uZ2V0KCksIGFic2w6OldyYXBV
bmlxdWUoRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksIHRoaXMsIHRoaXMpOwogICAgIHN0cmVhbV9n
ZW5lcmF0b3JfID0gbmV3IFN0cmVhbUdlbmVyYXRvcigwLCBjbG9ja18tPlRpbWVJbk1pbGxpc2Vj
b25kcygpKTsKICAgICBqaXR0ZXJfYnVmZmVyXy0+U3RhcnQoKTsKICAgICBqaXR0ZXJfYnVmZmVy
Xy0+U2V0TmFja1NldHRpbmdzKG1heF9uYWNrX2xpc3Rfc2l6ZV8sIG9sZGVzdF9wYWNrZXRfdG9f
bmFja18sCkBAIC00MzMsNyArNDI3LDYgQEAgY2xhc3MgVGVzdFJ1bm5pbmdKaXR0ZXJCdWZmZXIg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiwKICAgVkNNSml0
dGVyQnVmZmVyKiBqaXR0ZXJfYnVmZmVyXzsKICAgU3RyZWFtR2VuZXJhdG9yKiBzdHJlYW1fZ2Vu
ZXJhdG9yXzsKICAgc3RkOjp1bmlxdWVfcHRyPFNpbXVsYXRlZENsb2NrPiBjbG9ja187Ci0gIE51
bGxFdmVudEZhY3RvcnkgZXZlbnRfZmFjdG9yeV87CiAgIHNpemVfdCBtYXhfbmFja19saXN0X3Np
emVfOwogICBpbnQgb2xkZXN0X3BhY2tldF90b19uYWNrXzsKICAgdWludDhfdCBkYXRhX2J1ZmZl
cl9ba0RhdGFCdWZmZXJTaXplXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3Iu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmNjCmluZGV4IDVlNzU0ZjEwODg1ZWRjNjY1NWUy
ZTcxNTJhNDQ3YmVkNDAzODU5N2IuLjBkMGZhYzcyOTFlOGZkZGQ0MWRjNmIzNTVhOTM1ZjY0OTZk
MTY0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3IuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
aml0dGVyX2VzdGltYXRvci5jYwpAQCAtMTQsMTggKzE0LDI0IEBACiAjaW5jbHVkZSA8bWF0aC5o
PgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlv
bmFsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW50ZXJuYWxfZGVmaW5lcy5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3J0dF9maWx0ZXIuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9leHBlcmltZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5oIgog
I2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAjaW5jbHVkZSAic3lz
dGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
Ci0KLWVudW0geyBrU3RhcnR1cERlbGF5U2FtcGxlcyA9IDMwIH07Ci1lbnVtIHsga0ZzQWNjdVN0
YXJ0dXBTYW1wbGVzID0gNSB9OwotZW51bSB7IGtNYXhGcmFtZXJhdGVFc3RpbWF0ZSA9IDIwMCB9
OworbmFtZXNwYWNlIHsKK3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qga1N0YXJ0dXBEZWxheVNh
bXBsZXMgPSAzMDsKK3N0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBrRnNBY2N1U3RhcnR1cFNhbXBs
ZXMgPSA1Oworc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga01heEZyYW1lcmF0ZUVzdGltYXRlID0g
MjAwLjA7CitzdGF0aWMgY29uc3RleHByIGludDY0X3Qga05hY2tDb3VudFRpbWVvdXRNcyA9IDYw
MDAwOworc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga0RlZmF1bHRNYXhUaW1lc3RhbXBEZXZpYXRp
b25JblNpZ21hcyA9IDMuNTsKK30gIC8vIG5hbWVzcGFjZQogCiBWQ01KaXR0ZXJFc3RpbWF0b3I6
OlZDTUppdHRlckVzdGltYXRvcihjb25zdCBDbG9jayogY2xvY2ssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHZjbUlkLApAQCAtNDUsNyArNTEsOSBAQCBW
Q01KaXR0ZXJFc3RpbWF0b3I6OlZDTUppdHRlckVzdGltYXRvcihjb25zdCBDbG9jayogY2xvY2ss
CiAgICAgICBfcnR0RmlsdGVyKCksCiAgICAgICBmcHNfY291bnRlcl8oMzApLCAgLy8gVE9ETyhz
cHJhbmcpOiBVc2UgYW4gZXN0aW1hdG9yIHdpdGggbGltaXQgYmFzZWQgb24KICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyB0aW1lLCByYXRoZXIgdGhhbiBudW1iZXIgb2Ygc2FtcGxlcy4KLSAg
ICAgIGxvd19yYXRlX2V4cGVyaW1lbnRfKGtJbml0KSwKKyAgICAgIHRpbWVfZGV2aWF0aW9uX3Vw
cGVyX2JvdW5kXygKKyAgICAgICAgICBKaXR0ZXJVcHBlckJvdW5kRXhwZXJpbWVudDo6R2V0VXBw
ZXJCb3VuZFNpZ21hcygpLnZhbHVlX29yKAorICAgICAgICAgICAgICBrRGVmYXVsdE1heFRpbWVz
dGFtcERldmlhdGlvbkluU2lnbWFzKSksCiAgICAgICBjbG9ja18oY2xvY2spIHsKICAgUmVzZXQo
KTsKIH0KQEAgLTc1LDYgKzgzLDcgQEAgVkNNSml0dGVyRXN0aW1hdG9yJiBWQ01KaXR0ZXJFc3Rp
bWF0b3I6Om9wZXJhdG9yPSgKICAgICBfbGF0ZXN0TmFja1RpbWVzdGFtcCA9IHJocy5fbGF0ZXN0
TmFja1RpbWVzdGFtcDsKICAgICBfbmFja0NvdW50ID0gcmhzLl9uYWNrQ291bnQ7CiAgICAgX3J0
dEZpbHRlciA9IHJocy5fcnR0RmlsdGVyOworICAgIGNsb2NrXyA9IHJocy5jbG9ja187CiAgIH0K
ICAgcmV0dXJuICp0aGlzOwogfQpAQCAtMTAyLDYgKzExMSw3IEBAIHZvaWQgVkNNSml0dGVyRXN0
aW1hdG9yOjpSZXNldCgpIHsKICAgX2ZpbHRlckppdHRlckVzdGltYXRlID0gMC4wOwogICBfbGF0
ZXN0TmFja1RpbWVzdGFtcCA9IDA7CiAgIF9uYWNrQ291bnQgPSAwOworICBfbGF0ZXN0TmFja1Rp
bWVzdGFtcCA9IDA7CiAgIF9mc1N1bSA9IDA7CiAgIF9mc0NvdW50ID0gMDsKICAgX3N0YXJ0dXBD
b3VudCA9IDA7CkBAIC0xNTUsNiArMTY1LDEyIEBAIHZvaWQgVkNNSml0dGVyRXN0aW1hdG9yOjpV
cGRhdGVFc3RpbWF0ZShpbnQ2NF90IGZyYW1lRGVsYXlNUywKICAgfQogICBfcHJldkZyYW1lU2l6
ZSA9IGZyYW1lU2l6ZUJ5dGVzOwogCisgIC8vIENhcCBmcmFtZURlbGF5TVMgYmFzZWQgb24gdGhl
IGN1cnJlbnQgdGltZSBkZXZpYXRpb24gbm9pc2UuCisgIGludDY0X3QgbWF4X3RpbWVfZGV2aWF0
aW9uX21zID0KKyAgICAgIHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVfZGV2aWF0aW9uX3VwcGVy
X2JvdW5kXyAqIHNxcnQoX3Zhck5vaXNlKSArIDAuNSk7CisgIGZyYW1lRGVsYXlNUyA9IHN0ZDo6
bWF4KHN0ZDo6bWluKGZyYW1lRGVsYXlNUywgbWF4X3RpbWVfZGV2aWF0aW9uX21zKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgLW1heF90aW1lX2RldmlhdGlvbl9tcyk7CisKICAgLy8gT25s
eSB1cGRhdGUgdGhlIEthbG1hbiBmaWx0ZXIgaWYgdGhlIHNhbXBsZSBpcyBub3QgY29uc2lkZXJl
ZAogICAvLyBhbiBleHRyZW1lIG91dGxpZXIuIEV2ZW4gaWYgaXQgaXMgYW4gZXh0cmVtZSBvdXRs
aWVyIGZyb20gYQogICAvLyBkZWxheSBwb2ludCBvZiB2aWV3LCBpZiB0aGUgZnJhbWUgc2l6ZSBh
bHNvIGlzIGxhcmdlIHRoZQpAQCAtMTkzLDE1ICsyMDksMTAgQEAgdm9pZCBWQ01KaXR0ZXJFc3Rp
bWF0b3I6OlVwZGF0ZUVzdGltYXRlKGludDY0X3QgZnJhbWVEZWxheU1TLAogCiAvLyBVcGRhdGVz
IHRoZSBuYWNrL3BhY2tldCByYXRpbwogdm9pZCBWQ01KaXR0ZXJFc3RpbWF0b3I6OkZyYW1lTmFj
a2VkKCkgewotICAvLyBXYWl0IHVudGlsIF9uYWNrTGltaXQgcmV0cmFuc21pc3Npb25zIGhhcyBi
ZWVuIHJlY2VpdmVkLAotICAvLyB0aGVuIGFsd2F5cyBhZGQgfjEgUlRUIGRlbGF5LgotICAvLyBU
T0RPKGhvbG1lcik6IFNob3VsZCB3ZSBldmVyIHJlbW92ZSB0aGUgYWRkaXRpb25hbCBkZWxheSBp
ZiB0aGUKLSAgLy8gdGhlIHBhY2tldCBsb3NzZXMgc2VlbSB0byBoYXZlIHN0b3BwZWQ/IFdlIGNv
dWxkIGZvciBpbnN0YW5jZSBzY2FsZQotICAvLyB0aGUgbnVtYmVyIG9mIFJUVHMgdG8gYWRkIHdp
dGggdGhlIGFtb3VudCBvZiByZXRyYW5zbWlzc2lvbnMgaW4gYSBnaXZlbgotICAvLyB0aW1lIGlu
dGVydmFsLCBvciBzaW1pbGFyLgogICBpZiAoX25hY2tDb3VudCA8IF9uYWNrTGltaXQpIHsKICAg
ICBfbmFja0NvdW50Kys7CiAgIH0KKyAgX2xhdGVzdE5hY2tUaW1lc3RhbXAgPSBjbG9ja18tPlRp
bWVJbk1pY3Jvc2Vjb25kcygpOwogfQogCiAvLyBVcGRhdGVzIEthbG1hbiBlc3RpbWF0ZSBvZiB0
aGUgY2hhbm5lbApAQCAtMzA5LDIyICszMjAsMjAgQEAgdm9pZCBWQ01KaXR0ZXJFc3RpbWF0b3I6
OkVzdGltYXRlUmFuZG9tSml0dGVyKGRvdWJsZSBkX2RULAogICBpZiAoX2FscGhhQ291bnQgPiBf
YWxwaGFDb3VudE1heCkKICAgICBfYWxwaGFDb3VudCA9IF9hbHBoYUNvdW50TWF4OwogCi0gIGlm
IChMb3dSYXRlRXhwZXJpbWVudEVuYWJsZWQoKSkgewotICAgIC8vIEluIG9yZGVyIHRvIGF2b2lk
IGEgbG93IGZyYW1lIHJhdGUgc3RyZWFtIHRvIHJlYWN0IHNsb3dlciB0byBjaGFuZ2VzLAotICAg
IC8vIHNjYWxlIHRoZSBhbHBoYSB3ZWlnaHQgcmVsYXRpdmUgYSAzMCBmcHMgc3RyZWFtLgotICAg
IGRvdWJsZSBmcHMgPSBHZXRGcmFtZVJhdGUoKTsKLSAgICBpZiAoZnBzID4gMC4wKSB7Ci0gICAg
ICBkb3VibGUgcmF0ZV9zY2FsZSA9IDMwLjAgLyBmcHM7Ci0gICAgICAvLyBBdCBzdGFydHVwLCB0
aGVyZSBjYW4gYmUgYSBsb3Qgb2Ygbm9pc2UgaW4gdGhlIGZwcyBlc3RpbWF0ZS4KLSAgICAgIC8v
IEludGVycG9sYXRlIHJhdGVfc2NhbGUgbGluZWFybHksIGZyb20gMS4wIGF0IHNhbXBsZSAjMSwg
dG8gMzAuMCAvIGZwcwotICAgICAgLy8gYXQgc2FtcGxlICNrU3RhcnR1cERlbGF5U2FtcGxlcy4K
LSAgICAgIGlmIChfYWxwaGFDb3VudCA8IGtTdGFydHVwRGVsYXlTYW1wbGVzKSB7Ci0gICAgICAg
IHJhdGVfc2NhbGUgPQotICAgICAgICAgICAgKF9hbHBoYUNvdW50ICogcmF0ZV9zY2FsZSArIChr
U3RhcnR1cERlbGF5U2FtcGxlcyAtIF9hbHBoYUNvdW50KSkgLwotICAgICAgICAgICAga1N0YXJ0
dXBEZWxheVNhbXBsZXM7Ci0gICAgICB9Ci0gICAgICBhbHBoYSA9IHBvdyhhbHBoYSwgcmF0ZV9z
Y2FsZSk7CisgIC8vIEluIG9yZGVyIHRvIGF2b2lkIGEgbG93IGZyYW1lIHJhdGUgc3RyZWFtIHRv
IHJlYWN0IHNsb3dlciB0byBjaGFuZ2VzLAorICAvLyBzY2FsZSB0aGUgYWxwaGEgd2VpZ2h0IHJl
bGF0aXZlIGEgMzAgZnBzIHN0cmVhbS4KKyAgZG91YmxlIGZwcyA9IEdldEZyYW1lUmF0ZSgpOwor
ICBpZiAoZnBzID4gMC4wKSB7CisgICAgZG91YmxlIHJhdGVfc2NhbGUgPSAzMC4wIC8gZnBzOwor
ICAgIC8vIEF0IHN0YXJ0dXAsIHRoZXJlIGNhbiBiZSBhIGxvdCBvZiBub2lzZSBpbiB0aGUgZnBz
IGVzdGltYXRlLgorICAgIC8vIEludGVycG9sYXRlIHJhdGVfc2NhbGUgbGluZWFybHksIGZyb20g
MS4wIGF0IHNhbXBsZSAjMSwgdG8gMzAuMCAvIGZwcworICAgIC8vIGF0IHNhbXBsZSAja1N0YXJ0
dXBEZWxheVNhbXBsZXMuCisgICAgaWYgKF9hbHBoYUNvdW50IDwga1N0YXJ0dXBEZWxheVNhbXBs
ZXMpIHsKKyAgICAgIHJhdGVfc2NhbGUgPQorICAgICAgICAgIChfYWxwaGFDb3VudCAqIHJhdGVf
c2NhbGUgKyAoa1N0YXJ0dXBEZWxheVNhbXBsZXMgLSBfYWxwaGFDb3VudCkpIC8KKyAgICAgICAg
ICBrU3RhcnR1cERlbGF5U2FtcGxlczsKICAgICB9CisgICAgYWxwaGEgPSBwb3coYWxwaGEsIHJh
dGVfc2NhbGUpOwogICB9CiAKICAgZG91YmxlIGF2Z05vaXNlID0gYWxwaGEgKiBfYXZnTm9pc2Ug
KyAoMSAtIGFscGhhKSAqIGRfZFQ7CkBAIC0zODYsNDYgKzM5NSwzNSBAQCB2b2lkIFZDTUppdHRl
ckVzdGltYXRvcjo6VXBkYXRlTWF4RnJhbWVTaXplKHVpbnQzMl90IGZyYW1lU2l6ZUJ5dGVzKSB7
CiAvLyBvdGhlcndpc2UgdHJpZXMgdG8gY2FsY3VsYXRlIGFuIGVzdGltYXRlLgogaW50IFZDTUpp
dHRlckVzdGltYXRvcjo6R2V0Sml0dGVyRXN0aW1hdGUoZG91YmxlIHJ0dE11bHRpcGxpZXIpIHsK
ICAgZG91YmxlIGppdHRlck1TID0gQ2FsY3VsYXRlRXN0aW1hdGUoKSArIE9QRVJBVElOR19TWVNU
RU1fSklUVEVSOworICB1aW50NjRfdCBub3cgPSBjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygp
OworCisgIGlmIChub3cgLSBfbGF0ZXN0TmFja1RpbWVzdGFtcCA+IGtOYWNrQ291bnRUaW1lb3V0
TXMgKiAxMDAwKQorICAgIF9uYWNrQ291bnQgPSAwOworCiAgIGlmIChfZmlsdGVySml0dGVyRXN0
aW1hdGUgPiBqaXR0ZXJNUykKICAgICBqaXR0ZXJNUyA9IF9maWx0ZXJKaXR0ZXJFc3RpbWF0ZTsK
ICAgaWYgKF9uYWNrQ291bnQgPj0gX25hY2tMaW1pdCkKICAgICBqaXR0ZXJNUyArPSBfcnR0Rmls
dGVyLlJ0dE1zKCkgKiBydHRNdWx0aXBsaWVyOwogCi0gIGlmIChMb3dSYXRlRXhwZXJpbWVudEVu
YWJsZWQoKSkgewotICAgIHN0YXRpYyBjb25zdCBkb3VibGUga0ppdHRlclNjYWxlTG93VGhyZXNo
b2xkID0gNS4wOwotICAgIHN0YXRpYyBjb25zdCBkb3VibGUga0ppdHRlclNjYWxlSGlnaFRocmVz
aG9sZCA9IDEwLjA7Ci0gICAgZG91YmxlIGZwcyA9IEdldEZyYW1lUmF0ZSgpOwotICAgIC8vIEln
bm9yZSBqaXR0ZXIgZm9yIHZlcnkgbG93IGZwcyBzdHJlYW1zLgotICAgIGlmIChmcHMgPCBrSml0
dGVyU2NhbGVMb3dUaHJlc2hvbGQpIHsKLSAgICAgIGlmIChmcHMgPT0gMC4wKSB7Ci0gICAgICAg
IHJldHVybiBqaXR0ZXJNUzsKLSAgICAgIH0KLSAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IC8vIFNlbWktbG93IGZyYW1lIHJhdGU7IHNjYWxlIGJ5IGZhY3RvciBsaW5lYXJseSBpbnRlcnBv
bGF0ZWQgZnJvbSAwLjAgYXQKLSAgICAvLyBrSml0dGVyU2NhbGVMb3dUaHJlc2hvbGQgdG8gMS4w
IGF0IGtKaXR0ZXJTY2FsZUhpZ2hUaHJlc2hvbGQuCi0gICAgaWYgKGZwcyA8IGtKaXR0ZXJTY2Fs
ZUhpZ2hUaHJlc2hvbGQpIHsKLSAgICAgIGppdHRlck1TID0KLSAgICAgICAgICAoMS4wIC8gKGtK
aXR0ZXJTY2FsZUhpZ2hUaHJlc2hvbGQgLSBrSml0dGVyU2NhbGVMb3dUaHJlc2hvbGQpKSAqCi0g
ICAgICAgICAgKGZwcyAtIGtKaXR0ZXJTY2FsZUxvd1RocmVzaG9sZCkgKiBqaXR0ZXJNUzsKKyAg
c3RhdGljIGNvbnN0IGRvdWJsZSBrSml0dGVyU2NhbGVMb3dUaHJlc2hvbGQgPSA1LjA7CisgIHN0
YXRpYyBjb25zdCBkb3VibGUga0ppdHRlclNjYWxlSGlnaFRocmVzaG9sZCA9IDEwLjA7CisgIGRv
dWJsZSBmcHMgPSBHZXRGcmFtZVJhdGUoKTsKKyAgLy8gSWdub3JlIGppdHRlciBmb3IgdmVyeSBs
b3cgZnBzIHN0cmVhbXMuCisgIGlmIChmcHMgPCBrSml0dGVyU2NhbGVMb3dUaHJlc2hvbGQpIHsK
KyAgICBpZiAoZnBzID09IDAuMCkgeworICAgICAgcmV0dXJuIHJ0Yzo6Y2hlY2tlZF9jYXN0PGlu
dD4oc3RkOjptYXgoMC4wLCBqaXR0ZXJNUykgKyAwLjUpOwogICAgIH0KKyAgICByZXR1cm4gMDsK
ICAgfQogCi0gIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaml0dGVyTVMgKyAwLjUpOwot
fQotCi1ib29sIFZDTUppdHRlckVzdGltYXRvcjo6TG93UmF0ZUV4cGVyaW1lbnRFbmFibGVkKCkg
ewotICBpZiAobG93X3JhdGVfZXhwZXJpbWVudF8gPT0ga0luaXQpIHsKLSAgICBzdGQ6OnN0cmlu
ZyBncm91cCA9Ci0gICAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZSgiV2Vi
UlRDLVJlZHVjZWRKaXR0ZXJEZWxheSIpOwotICAgIGlmIChncm91cCA9PSAiRGlzYWJsZWQiKSB7
Ci0gICAgICBsb3dfcmF0ZV9leHBlcmltZW50XyA9IGtEaXNhYmxlZDsKLSAgICB9IGVsc2Ugewot
ICAgICAgbG93X3JhdGVfZXhwZXJpbWVudF8gPSBrRW5hYmxlZDsKLSAgICB9CisgIC8vIFNlbWkt
bG93IGZyYW1lIHJhdGU7IHNjYWxlIGJ5IGZhY3RvciBsaW5lYXJseSBpbnRlcnBvbGF0ZWQgZnJv
bSAwLjAgYXQKKyAgLy8ga0ppdHRlclNjYWxlTG93VGhyZXNob2xkIHRvIDEuMCBhdCBrSml0dGVy
U2NhbGVIaWdoVGhyZXNob2xkLgorICBpZiAoZnBzIDwga0ppdHRlclNjYWxlSGlnaFRocmVzaG9s
ZCkgeworICAgIGppdHRlck1TID0gKDEuMCAvIChrSml0dGVyU2NhbGVIaWdoVGhyZXNob2xkIC0g
a0ppdHRlclNjYWxlTG93VGhyZXNob2xkKSkgKgorICAgICAgICAgICAgICAgKGZwcyAtIGtKaXR0
ZXJTY2FsZUxvd1RocmVzaG9sZCkgKiBqaXR0ZXJNUzsKICAgfQotICByZXR1cm4gbG93X3JhdGVf
ZXhwZXJpbWVudF8gPT0ga0VuYWJsZWQgPyB0cnVlIDogZmFsc2U7CisKKyAgcmV0dXJuIHJ0Yzo6
Y2hlY2tlZF9jYXN0PGludD4oc3RkOjptYXgoMC4wLCBqaXR0ZXJNUykgKyAwLjUpOwogfQogCiBk
b3VibGUgVkNNSml0dGVyRXN0aW1hdG9yOjpHZXRGcmFtZVJhdGUoKSBjb25zdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfZXN0aW1hdG9yLmgK
aW5kZXggYWViYTNlZGVkMzNjZDE1N2M1NGNlNzVjYTMxZDFmY2Y0MzM4NmMwZC4uNTZiNTMyODUx
ZDkzOWNlODkzNjYwNmRjNjJjZmNjY2U0YjcxODcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVy
X2VzdGltYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3IuaApAQCAtNzIsOCArNzIs
NiBAQCBjbGFzcyBWQ01KaXR0ZXJFc3RpbWF0b3IgewogICBkb3VibGUgX3RoZXRhWzJdOyAgLy8g
RXN0aW1hdGVkIGxpbmUgcGFyYW1ldGVycyAoc2xvcGUsIG9mZnNldCkKICAgZG91YmxlIF92YXJO
b2lzZTsgIC8vIFZhcmlhbmNlIG9mIHRoZSB0aW1lLWRldmlhdGlvbiBmcm9tIHRoZSBsaW5lCiAK
LSAgdmlydHVhbCBib29sIExvd1JhdGVFeHBlcmltZW50RW5hYmxlZCgpOwotCiAgcHJpdmF0ZToK
ICAgLy8gVXBkYXRlcyB0aGUgS2FsbWFuIGZpbHRlciBmb3IgdGhlIGxpbmUgZGVzY3JpYmluZwog
ICAvLyB0aGUgZnJhbWUgc2l6ZSBkZXBlbmRlbnQgaml0dGVyLgpAQCAtMTU5LDggKzE1Nyw3IEBA
IGNsYXNzIFZDTUppdHRlckVzdGltYXRvciB7CiAgIFZDTVJ0dEZpbHRlciBfcnR0RmlsdGVyOwog
CiAgIHJ0Yzo6Um9sbGluZ0FjY3VtdWxhdG9yPHVpbnQ2NF90PiBmcHNfY291bnRlcl87Ci0gIGVu
dW0gRXhwZXJpbWVudEZsYWcgeyBrSW5pdCwga0VuYWJsZWQsIGtEaXNhYmxlZCB9OwotICBFeHBl
cmltZW50RmxhZyBsb3dfcmF0ZV9leHBlcmltZW50XzsKKyAgY29uc3QgZG91YmxlIHRpbWVfZGV2
aWF0aW9uX3VwcGVyX2JvdW5kXzsKICAgY29uc3QgQ2xvY2sqIGNsb2NrXzsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
dmlkZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3JfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9qaXR0ZXJfZXN0
aW1hdG9yX3Rlc3RzLmNjCmluZGV4IGYwMGUxZWY2ZGE4YjY0NTY1OTcyYzhjZGFjZDc0OTNlZDI0
MjJmYjcuLjQ1MjYyZWY4MzYwMmU3YzE1ZTJhOWNmM2I5ZTgwNjZmMzVhOTI3NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL2ppdHRlcl9lc3RpbWF0b3JfdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvaml0dGVyX2Vz
dGltYXRvcl90ZXN0cy5jYwpAQCAtOSwzOCArOSwzMCBAQAogCiAjaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2Rpbmcvaml0dGVyX2VzdGltYXRvci5oIgogCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhw
ZXJpbWVudHMvaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3MvaGlzdG9ncmFtX3Bl
cmNlbnRpbGVfY291bnRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2lu
Y2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCisjaW5jbHVkZSAidGVzdC9m
aWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiAKLWNsYXNzIFRlc3RFc3RpbWF0b3IgOiBwdWJsaWMgVkNNSml0dGVyRXN0aW1hdG9yIHsK
LSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFRlc3RFc3RpbWF0b3IoYm9vbCBleHBfZW5hYmxlZCkKLSAg
ICAgIDogVkNNSml0dGVyRXN0aW1hdG9yKCZmYWtlX2Nsb2NrXywgMCwgMCksCi0gICAgICAgIGZh
a2VfY2xvY2tfKDApLAotICAgICAgICBleHBfZW5hYmxlZF8oZXhwX2VuYWJsZWQpIHt9CitjbGFz
cyBUZXN0VkNNSml0dGVyRXN0aW1hdG9yIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJv
dGVjdGVkOgorICBUZXN0VkNNSml0dGVyRXN0aW1hdG9yKCkgOiBmYWtlX2Nsb2NrXygwKSB7fQog
Ci0gIHZpcnR1YWwgYm9vbCBMb3dSYXRlRXhwZXJpbWVudEVuYWJsZWQoKSB7IHJldHVybiBleHBf
ZW5hYmxlZF87IH0KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIGVzdGltYXRvcl8gPSBh
YnNsOjptYWtlX3VuaXF1ZTxWQ01KaXR0ZXJFc3RpbWF0b3I+KCZmYWtlX2Nsb2NrXywgMCwgMCk7
CisgIH0KIAogICB2b2lkIEFkdmFuY2VDbG9jayhpbnQ2NF90IG1pY3Jvc2Vjb25kcykgewogICAg
IGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWljcm9zZWNvbmRzKG1pY3Jvc2Vjb25kcyk7CiAgIH0K
IAotIHByaXZhdGU6CiAgIFNpbXVsYXRlZENsb2NrIGZha2VfY2xvY2tfOwotICBjb25zdCBib29s
IGV4cF9lbmFibGVkXzsKLX07Ci0KLWNsYXNzIFRlc3RWQ01KaXR0ZXJFc3RpbWF0b3IgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIFRlc3RWQ01KaXR0ZXJFc3RpbWF0
b3IoKQotICAgICAgOiByZWd1bGFyX2VzdGltYXRvcl8oZmFsc2UpLCBsb3dfcmF0ZV9lc3RpbWF0
b3JfKHRydWUpIHt9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyByZWd1bGFyX2VzdGltYXRv
cl8uUmVzZXQoKTsgfQotCi0gIFRlc3RFc3RpbWF0b3IgcmVndWxhcl9lc3RpbWF0b3JfOwotICBU
ZXN0RXN0aW1hdG9yIGxvd19yYXRlX2VzdGltYXRvcl87CisgIHN0ZDo6dW5pcXVlX3B0cjxWQ01K
aXR0ZXJFc3RpbWF0b3I+IGVzdGltYXRvcl87CiB9OwogCiAvLyBHZW5lcmF0ZXMgc29tZSBzaW1w
bGUgdGVzdCBkYXRhIGluIHRoZSBmb3JtIG9mIGEgc2F3dG9vdGggd2F2ZS4KQEAgLTY0LDk4ICs1
Niw1NiBAQCBjbGFzcyBWYWx1ZUdlbmVyYXRvciB7CiAvLyA1IGZwcywgZGlzYWJsZSBqaXR0ZXIg
ZGVsYXkgYWx0b2dldGhlci4KIFRFU1RfRihUZXN0VkNNSml0dGVyRXN0aW1hdG9yLCBUZXN0TG93
UmF0ZSkgewogICBWYWx1ZUdlbmVyYXRvciBnZW4oMTApOwotICB1aW50NjRfdCB0aW1lX2RlbHRh
ID0gMTAwMDAwMCAvIDU7CisgIHVpbnQ2NF90IHRpbWVfZGVsdGFfdXMgPSBydGM6OmtOdW1NaWNy
b3NlY3NQZXJTZWMgLyA1OwogICBmb3IgKGludCBpID0gMDsgaSA8IDYwOyArK2kpIHsKLSAgICBy
ZWd1bGFyX2VzdGltYXRvcl8uVXBkYXRlRXN0aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5GcmFtZVNp
emUoKSk7Ci0gICAgcmVndWxhcl9lc3RpbWF0b3JfLkFkdmFuY2VDbG9jayh0aW1lX2RlbHRhKTsK
LSAgICBsb3dfcmF0ZV9lc3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgpLCBnZW4u
RnJhbWVTaXplKCkpOwotICAgIGxvd19yYXRlX2VzdGltYXRvcl8uQWR2YW5jZUNsb2NrKHRpbWVf
ZGVsdGEpOwotICAgIEVYUEVDVF9HVChyZWd1bGFyX2VzdGltYXRvcl8uR2V0Sml0dGVyRXN0aW1h
dGUoMCksIDApOworICAgIGVzdGltYXRvcl8tPlVwZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgpLCBn
ZW4uRnJhbWVTaXplKCkpOworICAgIEFkdmFuY2VDbG9jayh0aW1lX2RlbHRhX3VzKTsKICAgICBp
ZiAoaSA+IDIpCi0gICAgICBFWFBFQ1RfRVEobG93X3JhdGVfZXN0aW1hdG9yXy5HZXRKaXR0ZXJF
c3RpbWF0ZSgwKSwgMCk7Ci0gICAgZ2VuLkFkdmFuY2UoKTsKLSAgfQotfQotCi0vLyA4IGZwcywg
c3RlYWR5IHN0YXRlIGVzdGltYXRlIHNob3VsZCBiZSBpbiBpbnRlcnBvbGF0ZWQgaW50ZXJ2YWwg
YmV0d2VlbiAwCi0vLyBhbmQgdmFsdWUgb2YgcHJldmlvdXMgbWV0aG9kLgotVEVTVF9GKFRlc3RW
Q01KaXR0ZXJFc3RpbWF0b3IsIFRlc3RNaWRSYXRlKSB7Ci0gIFZhbHVlR2VuZXJhdG9yIGdlbigx
MCk7Ci0gIHVpbnQ2NF90IHRpbWVfZGVsdGEgPSAxMDAwMDAwIC8gODsKLSAgZm9yIChpbnQgaSA9
IDA7IGkgPCA2MDsgKytpKSB7Ci0gICAgcmVndWxhcl9lc3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRl
KGdlbi5EZWxheSgpLCBnZW4uRnJhbWVTaXplKCkpOwotICAgIHJlZ3VsYXJfZXN0aW1hdG9yXy5B
ZHZhbmNlQ2xvY2sodGltZV9kZWx0YSk7Ci0gICAgbG93X3JhdGVfZXN0aW1hdG9yXy5VcGRhdGVF
c3RpbWF0ZShnZW4uRGVsYXkoKSwgZ2VuLkZyYW1lU2l6ZSgpKTsKLSAgICBsb3dfcmF0ZV9lc3Rp
bWF0b3JfLkFkdmFuY2VDbG9jayh0aW1lX2RlbHRhKTsKLSAgICBFWFBFQ1RfR1QocmVndWxhcl9l
c3RpbWF0b3JfLkdldEppdHRlckVzdGltYXRlKDApLCAwKTsKLSAgICBFWFBFQ1RfR1QobG93X3Jh
dGVfZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSwgMCk7Ci0gICAgRVhQRUNUX0dFKHJl
Z3VsYXJfZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSwKLSAgICAgICAgICAgICAgbG93
X3JhdGVfZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgwKSk7CisgICAgICBFWFBFQ1RfRVEo
ZXN0aW1hdG9yXy0+R2V0Sml0dGVyRXN0aW1hdGUoMCksIDApOwogICAgIGdlbi5BZHZhbmNlKCk7
CiAgIH0KIH0KIAotLy8gMzAgZnBzLCBzdGVhZHkgc3RhdGUgZXN0aW1hdGUgc2hvdWxkIGJlIHNh
bWUgYXMgcHJldmlvdXMgbWV0aG9kLgotVEVTVF9GKFRlc3RWQ01KaXR0ZXJFc3RpbWF0b3IsIFRl
c3RIaWdoUmF0ZSkgewotICBWYWx1ZUdlbmVyYXRvciBnZW4oMTApOwotICB1aW50NjRfdCB0aW1l
X2RlbHRhID0gMTAwMDAwMCAvIDMwOwotICBmb3IgKGludCBpID0gMDsgaSA8IDYwOyArK2kpIHsK
LSAgICByZWd1bGFyX2VzdGltYXRvcl8uVXBkYXRlRXN0aW1hdGUoZ2VuLkRlbGF5KCksIGdlbi5G
cmFtZVNpemUoKSk7Ci0gICAgcmVndWxhcl9lc3RpbWF0b3JfLkFkdmFuY2VDbG9jayh0aW1lX2Rl
bHRhKTsKLSAgICBsb3dfcmF0ZV9lc3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgp
LCBnZW4uRnJhbWVTaXplKCkpOwotICAgIGxvd19yYXRlX2VzdGltYXRvcl8uQWR2YW5jZUNsb2Nr
KHRpbWVfZGVsdGEpOwotICAgIEVYUEVDVF9FUShyZWd1bGFyX2VzdGltYXRvcl8uR2V0Sml0dGVy
RXN0aW1hdGUoMCksCi0gICAgICAgICAgICAgIGxvd19yYXRlX2VzdGltYXRvcl8uR2V0Sml0dGVy
RXN0aW1hdGUoMCkpOwotICAgIGdlbi5BZHZhbmNlKCk7Ci0gIH0KLX0KLQotLy8gMTAgZnBzLCBo
aWdoIGppdHRlciB0aGVuIGxvdyBqaXR0ZXIuIExvdyByYXRlIGVzdGltYXRvciBzaG91bGQgY29u
dmVyZ2UKLS8vIGZhc3RlciB0byBsb3cgbm9pc2UgZXN0aW1hdGUuCi1URVNUX0YoVGVzdFZDTUpp
dHRlckVzdGltYXRvciwgVGVzdENvbnZlcmdlbmNlKSB7Ci0gIC8vIFJlYWNoIGEgc3RlYWR5IHN0
YXRlIHdpdGggaGlnaCBub2lzZS4KLSAgVmFsdWVHZW5lcmF0b3IgZ2VuKDUwKTsKLSAgdWludDY0
X3QgdGltZV9kZWx0YSA9IDEwMDAwMDAgLyAxMDsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7
ICsraSkgewotICAgIHJlZ3VsYXJfZXN0aW1hdG9yXy5VcGRhdGVFc3RpbWF0ZShnZW4uRGVsYXko
KSwgZ2VuLkZyYW1lU2l6ZSgpKTsKLSAgICByZWd1bGFyX2VzdGltYXRvcl8uQWR2YW5jZUNsb2Nr
KHRpbWVfZGVsdGEgKiAyKTsKLSAgICBsb3dfcmF0ZV9lc3RpbWF0b3JfLlVwZGF0ZUVzdGltYXRl
KGdlbi5EZWxheSgpLCBnZW4uRnJhbWVTaXplKCkpOwotICAgIGxvd19yYXRlX2VzdGltYXRvcl8u
QWR2YW5jZUNsb2NrKHRpbWVfZGVsdGEgKiAyKTsKLSAgICBnZW4uQWR2YW5jZSgpOwotICB9Ci0K
LSAgaW50IHRocmVzaG9sZCA9IHJlZ3VsYXJfZXN0aW1hdG9yXy5HZXRKaXR0ZXJFc3RpbWF0ZSgw
KSAvIDI7Ci0KLSAgLy8gTmV3IGdlbmVyYXRvciB3aXRoIHplcm8gbm9pc2UuCi0gIFZhbHVlR2Vu
ZXJhdG9yIGxvd19nZW4oMCk7Ci0gIGludCByZWd1bGFyX2l0ZXJhdGlvbnMgPSAwOwotICBpbnQg
bG93X3JhdGVfaXRlcmF0aW9ucyA9IDA7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgNTAwOyArK2kp
IHsKLSAgICBpZiAocmVndWxhcl9pdGVyYXRpb25zID09IDApIHsKLSAgICAgIHJlZ3VsYXJfZXN0
aW1hdG9yXy5VcGRhdGVFc3RpbWF0ZShsb3dfZ2VuLkRlbGF5KCksIGxvd19nZW4uRnJhbWVTaXpl
KCkpOwotICAgICAgcmVndWxhcl9lc3RpbWF0b3JfLkFkdmFuY2VDbG9jayh0aW1lX2RlbHRhKTsK
LSAgICAgIGlmIChyZWd1bGFyX2VzdGltYXRvcl8uR2V0Sml0dGVyRXN0aW1hdGUoMCkgPCB0aHJl
c2hvbGQpIHsKLSAgICAgICAgcmVndWxhcl9pdGVyYXRpb25zID0gaTsKLSAgICAgIH0KK1RFU1Rf
RihUZXN0VkNNSml0dGVyRXN0aW1hdG9yLCBUZXN0VXBwZXJCb3VuZCkgeworICBzdHJ1Y3QgVGVz
dENvbnRleHQgeworICAgIFRlc3RDb250ZXh0KCkgOiB1cHBlcl9ib3VuZCgwLjApLCBwZXJjZW50
aWxlcygxMDAwKSB7fQorICAgIGRvdWJsZSB1cHBlcl9ib3VuZDsKKyAgICBydGM6Okhpc3RvZ3Jh
bVBlcmNlbnRpbGVDb3VudGVyIHBlcmNlbnRpbGVzOworICB9OworICBzdGQ6OnZlY3RvcjxUZXN0
Q29udGV4dD4gdGVzdF9jYXNlcygyKTsKKworICB0ZXN0X2Nhc2VzWzBdLnVwcGVyX2JvdW5kID0g
MTAwLjA7ICAvLyBGaXJzdCB1c2UgZXNzZW50aWFsbHkgbm8gY2FwLgorICB0ZXN0X2Nhc2VzWzFd
LnVwcGVyX2JvdW5kID0gMy41OyAgICAvLyBTZWNvbmQsIHJlYXNvbmFibHkgc21hbGwgY2FwLgor
CisgIGZvciAoVGVzdENvbnRleHQmIGNvbnRleHQgOiB0ZXN0X2Nhc2VzKSB7CisgICAgLy8gU2V0
IHVwIGZpZWxkIHRyaWFsIGFuZCByZXNldCBqaXR0ZXIgZXN0aW1hdG9yLgorICAgIGNoYXIgc3Ry
aW5nX2J1Zls2NF07CisgICAgcnRjOjpTaW1wbGVTdHJpbmdCdWlsZGVyIHNzYihzdHJpbmdfYnVm
KTsKKyAgICBzc2IgPDwgSml0dGVyVXBwZXJCb3VuZEV4cGVyaW1lbnQ6OmtKaXR0ZXJVcHBlckJv
dW5kRXhwZXJpbWVudE5hbWUKKyAgICAgICAgPDwgIi9FbmFibGVkLSIgPDwgY29udGV4dC51cHBl
cl9ib3VuZCA8PCAiLyI7CisgICAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxz
KHNzYi5zdHIoKSk7CisgICAgU2V0VXAoKTsKKworICAgIFZhbHVlR2VuZXJhdG9yIGdlbig1MCk7
CisgICAgdWludDY0X3QgdGltZV9kZWx0YV91cyA9IHJ0Yzo6a051bU1pY3Jvc2Vjc1BlclNlYyAv
IDMwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgIGVzdGltYXRv
cl8tPlVwZGF0ZUVzdGltYXRlKGdlbi5EZWxheSgpLCBnZW4uRnJhbWVTaXplKCkpOworICAgICAg
QWR2YW5jZUNsb2NrKHRpbWVfZGVsdGFfdXMpOworICAgICAgY29udGV4dC5wZXJjZW50aWxlcy5B
ZGQoCisgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGVzdGltYXRvcl8tPkdldEppdHRl
ckVzdGltYXRlKDApKSk7CisgICAgICBnZW4uQWR2YW5jZSgpOwogICAgIH0KLQotICAgIGlmIChs
b3dfcmF0ZV9pdGVyYXRpb25zID09IDApIHsKLSAgICAgIGxvd19yYXRlX2VzdGltYXRvcl8uVXBk
YXRlRXN0aW1hdGUobG93X2dlbi5EZWxheSgpLCBsb3dfZ2VuLkZyYW1lU2l6ZSgpKTsKLSAgICAg
IGxvd19yYXRlX2VzdGltYXRvcl8uQWR2YW5jZUNsb2NrKHRpbWVfZGVsdGEpOwotICAgICAgaWYg
KGxvd19yYXRlX2VzdGltYXRvcl8uR2V0Sml0dGVyRXN0aW1hdGUoMCkgPCB0aHJlc2hvbGQpIHsK
LSAgICAgICAgbG93X3JhdGVfaXRlcmF0aW9ucyA9IGk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKHJlZ3VsYXJfaXRlcmF0aW9ucyAhPSAwICYmIGxvd19yYXRlX2l0ZXJhdGlvbnMgIT0gMCkg
ewotICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZ2VuLkFkdmFuY2UoKTsKICAgfQogCi0gIEVY
UEVDVF9ORShyZWd1bGFyX2l0ZXJhdGlvbnMsIDApOwotICBFWFBFQ1RfTkUobG93X3JhdGVfaXRl
cmF0aW9ucywgMCk7Ci0gIEVYUEVDVF9MRShsb3dfcmF0ZV9pdGVyYXRpb25zLCByZWd1bGFyX2l0
ZXJhdGlvbnMpOworICAvLyBNZWRpYW4gc2hvdWxkIGJlIHNpbWlsYXIgYWZ0ZXIgdGhyZWUgc2Vj
b25kcy4gQWxsb3cgNSUgZXJyb3IgbWFyZ2luLgorICB1aW50MzJfdCBtZWRpYW5fdW5ib3VuZCA9
ICp0ZXN0X2Nhc2VzWzBdLnBlcmNlbnRpbGVzLkdldFBlcmNlbnRpbGUoMC41KTsKKyAgdWludDMy
X3QgbWVkaWFuX2JvdW5kZWQgPSAqdGVzdF9jYXNlc1sxXS5wZXJjZW50aWxlcy5HZXRQZXJjZW50
aWxlKDAuNSk7CisgIEVYUEVDVF9ORUFSKG1lZGlhbl91bmJvdW5kLCBtZWRpYW5fYm91bmRlZCwg
KG1lZGlhbl91bmJvdW5kICogNSkgLyAxMDApOworCisgIC8vIE1heCBzaG91bGQgYmUgbG93ZXIg
Zm9yIHRoZSBib3VuZGVkIGNhc2UuCisgIHVpbnQzMl90IG1heF91bmJvdW5kID0gKnRlc3RfY2Fz
ZXNbMF0ucGVyY2VudGlsZXMuR2V0UGVyY2VudGlsZSgxLjApOworICB1aW50MzJfdCBtYXhfYm91
bmRlZCA9ICp0ZXN0X2Nhc2VzWzFdLnBlcmNlbnRpbGVzLkdldFBlcmNlbnRpbGUoMS4wKTsKKyAg
RVhQRUNUX0dUKG1heF91bmJvdW5kLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obWF4X2JvdW5kZWQg
KiAxLjI1KSk7CiB9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L25hY2tfbW9kdWxlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1bGUuY2MKaW5kZXggN2ZiY2YzNGI0MWE5
MTM3M2JkNzg2MWFlMGY1ZGZlM2U4ZTFmN2ZkMS4uMGM2OWI1Nzc0OTM0OWZmYWZjZTFkMDg3N2U1
ZmQ1MDcwNGE3MTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1bGUuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvbmFja19tb2R1bGUuY2MKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJtb2R1bGVzL3V0
aWxpdHkvaW5jbHVkZS9wcm9jZXNzX3RocmVhZC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAt
MjgsMTQgKzI5LDI5IEBAIGNvbnN0IGludCBrUHJvY2Vzc0ZyZXF1ZW5jeSA9IDUwOwogY29uc3Qg
aW50IGtQcm9jZXNzSW50ZXJ2YWxNcyA9IDEwMDAgLyBrUHJvY2Vzc0ZyZXF1ZW5jeTsKIGNvbnN0
IGludCBrTWF4UmVvcmRlcmVkUGFja2V0cyA9IDEyODsKIGNvbnN0IGludCBrTnVtUmVvcmRlcmlu
Z0J1Y2tldHMgPSAxMDsKK2NvbnN0IGludCBrRGVmYXVsdFNlbmROYWNrRGVsYXlNcyA9IDA7CisK
K2ludDY0X3QgR2V0U2VuZE5hY2tEZWxheSgpIHsKKyAgaW50NjRfdCBkZWxheV9tcyA9IHN0cnRv
bCgKKyAgICAgIHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZSgiV2ViUlRDLVNlbmRO
YWNrRGVsYXlNcyIpLmNfc3RyKCksCisgICAgICBudWxscHRyLCAxMCk7CisgIGlmIChkZWxheV9t
cyA+IDAgJiYgZGVsYXlfbXMgPD0gMjApIHsKKyAgICBSVENfTE9HKExTX0lORk8pIDw8ICJTZW5k
TmFja0RlbGF5IGlzIHNldCB0byAiIDw8IGRlbGF5X21zOworICAgIHJldHVybiBkZWxheV9tczsK
KyAgfQorICByZXR1cm4ga0RlZmF1bHRTZW5kTmFja0RlbGF5TXM7Cit9CiB9ICAvLyBuYW1lc3Bh
Y2UKIAogTmFja01vZHVsZTo6TmFja0luZm86Ok5hY2tJbmZvKCkKICAgICA6IHNlcV9udW0oMCks
IHNlbmRfYXRfc2VxX251bSgwKSwgc2VudF9hdF90aW1lKC0xKSwgcmV0cmllcygwKSB7fQogCi1O
YWNrTW9kdWxlOjpOYWNrSW5mbzo6TmFja0luZm8odWludDE2X3Qgc2VxX251bSwgdWludDE2X3Qg
c2VuZF9hdF9zZXFfbnVtKQorTmFja01vZHVsZTo6TmFja0luZm86Ok5hY2tJbmZvKHVpbnQxNl90
IHNlcV9udW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3Qgc2VuZF9h
dF9zZXFfbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgY3JlYXRl
ZF9hdF90aW1lKQogICAgIDogc2VxX251bShzZXFfbnVtKSwKICAgICAgIHNlbmRfYXRfc2VxX251
bShzZW5kX2F0X3NlcV9udW0pLAorICAgICAgY3JlYXRlZF9hdF90aW1lKGNyZWF0ZWRfYXRfdGlt
ZSksCiAgICAgICBzZW50X2F0X3RpbWUoLTEpLAogICAgICAgcmV0cmllcygwKSB7fQogCkBAIC00
OSwxMyArNjUsMjAgQEAgTmFja01vZHVsZTo6TmFja01vZHVsZShDbG9jayogY2xvY2ssCiAgICAg
ICBpbml0aWFsaXplZF8oZmFsc2UpLAogICAgICAgcnR0X21zXyhrRGVmYXVsdFJ0dE1zKSwKICAg
ICAgIG5ld2VzdF9zZXFfbnVtXygwKSwKLSAgICAgIG5leHRfcHJvY2Vzc190aW1lX21zXygtMSkg
eworICAgICAgbmV4dF9wcm9jZXNzX3RpbWVfbXNfKC0xKSwKKyAgICAgIHNlbmRfbmFja19kZWxh
eV9tc18oR2V0U2VuZE5hY2tEZWxheSgpKSB7CiAgIFJUQ19EQ0hFQ0soY2xvY2tfKTsKICAgUlRD
X0RDSEVDSyhuYWNrX3NlbmRlcl8pOwogICBSVENfRENIRUNLKGtleWZyYW1lX3JlcXVlc3Rfc2Vu
ZGVyXyk7CiB9CiAKIGludCBOYWNrTW9kdWxlOjpPblJlY2VpdmVkUGFja2V0KHVpbnQxNl90IHNl
cV9udW0sIGJvb2wgaXNfa2V5ZnJhbWUpIHsKKyAgcmV0dXJuIE9uUmVjZWl2ZWRQYWNrZXQoc2Vx
X251bSwgaXNfa2V5ZnJhbWUsIGZhbHNlKTsKK30KKworaW50IE5hY2tNb2R1bGU6Ok9uUmVjZWl2
ZWRQYWNrZXQodWludDE2X3Qgc2VxX251bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNfa2V5ZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzX3JlY292ZXJlZCkgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7CiAgIC8v
IFRPRE8ocGhpbGlwZWwpOiBXaGVuIHRoZSBwYWNrZXQgaW5jbHVkZXMgaW5mb3JtYXRpb24gd2hl
dGhlciBpdCBpcwogICAvLyAgICAgICAgICAgICAgICAgcmV0cmFuc21pdHRlZCBvciBub3QsIHVz
ZSB0aGF0IHZhbHVlIGluc3RlYWQuIEZvcgpAQCAtODgsOCArMTExLDYgQEAgaW50IE5hY2tNb2R1
bGU6Ok9uUmVjZWl2ZWRQYWNrZXQodWludDE2X3Qgc2VxX251bSwgYm9vbCBpc19rZXlmcmFtZSkg
ewogICAgICAgVXBkYXRlUmVvcmRlcmluZ1N0YXRpc3RpY3Moc2VxX251bSk7CiAgICAgcmV0dXJu
IG5hY2tzX3NlbnRfZm9yX3BhY2tldDsKICAgfQotICBBZGRQYWNrZXRzVG9OYWNrKG5ld2VzdF9z
ZXFfbnVtXyArIDEsIHNlcV9udW0pOwotICBuZXdlc3Rfc2VxX251bV8gPSBzZXFfbnVtOwogCiAg
IC8vIEtlZXAgdHJhY2sgb2YgbmV3IGtleWZyYW1lcy4KICAgaWYgKGlzX2tleWZyYW1lKQpAQCAt
MTAwLDYgKzEyMSwyMSBAQCBpbnQgTmFja01vZHVsZTo6T25SZWNlaXZlZFBhY2tldCh1aW50MTZf
dCBzZXFfbnVtLCBib29sIGlzX2tleWZyYW1lKSB7CiAgIGlmIChpdCAhPSBrZXlmcmFtZV9saXN0
Xy5iZWdpbigpKQogICAgIGtleWZyYW1lX2xpc3RfLmVyYXNlKGtleWZyYW1lX2xpc3RfLmJlZ2lu
KCksIGl0KTsKIAorICBpZiAoaXNfcmVjb3ZlcmVkKSB7CisgICAgcmVjb3ZlcmVkX2xpc3RfLmlu
c2VydChzZXFfbnVtKTsKKworICAgIC8vIFJlbW92ZSBvbGQgb25lcyBzbyB3ZSBkb24ndCBhY2N1
bXVsYXRlIHJlY292ZXJlZCBwYWNrZXRzLgorICAgIGF1dG8gaXQgPSByZWNvdmVyZWRfbGlzdF8u
bG93ZXJfYm91bmQoc2VxX251bSAtIGtNYXhQYWNrZXRBZ2UpOworICAgIGlmIChpdCAhPSByZWNv
dmVyZWRfbGlzdF8uYmVnaW4oKSkKKyAgICAgIHJlY292ZXJlZF9saXN0Xy5lcmFzZShyZWNvdmVy
ZWRfbGlzdF8uYmVnaW4oKSwgaXQpOworCisgICAgLy8gRG8gbm90IHNlbmQgbmFjayBmb3IgcGFj
a2V0cyByZWNvdmVyZWQgYnkgRkVDIG9yIFJUWC4KKyAgICByZXR1cm4gMDsKKyAgfQorCisgIEFk
ZFBhY2tldHNUb05hY2sobmV3ZXN0X3NlcV9udW1fICsgMSwgc2VxX251bSk7CisgIG5ld2VzdF9z
ZXFfbnVtXyA9IHNlcV9udW07CisKICAgLy8gQXJlIHRoZXJlIGFueSBuYWNrcyB0aGF0IGFyZSB3
YWl0aW5nIGZvciB0aGlzIHNlcV9udW0uCiAgIHN0ZDo6dmVjdG9yPHVpbnQxNl90PiBuYWNrX2Jh
dGNoID0gR2V0TmFja0JhdGNoKGtTZXFOdW1Pbmx5KTsKICAgaWYgKCFuYWNrX2JhdGNoLmVtcHR5
KCkpCkBAIC0xMTMsNiArMTQ5LDggQEAgdm9pZCBOYWNrTW9kdWxlOjpDbGVhclVwVG8odWludDE2
X3Qgc2VxX251bSkgewogICBuYWNrX2xpc3RfLmVyYXNlKG5hY2tfbGlzdF8uYmVnaW4oKSwgbmFj
a19saXN0Xy5sb3dlcl9ib3VuZChzZXFfbnVtKSk7CiAgIGtleWZyYW1lX2xpc3RfLmVyYXNlKGtl
eWZyYW1lX2xpc3RfLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGtleWZyYW1lX2xp
c3RfLmxvd2VyX2JvdW5kKHNlcV9udW0pKTsKKyAgcmVjb3ZlcmVkX2xpc3RfLmVyYXNlKHJlY292
ZXJlZF9saXN0Xy5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcmVkX2xp
c3RfLmxvd2VyX2JvdW5kKHNlcV9udW0pKTsKIH0KIAogdm9pZCBOYWNrTW9kdWxlOjpVcGRhdGVS
dHQoaW50NjRfdCBydHRfbXMpIHsKQEAgLTEyNCw2ICsxNjIsNyBAQCB2b2lkIE5hY2tNb2R1bGU6
OkNsZWFyKCkgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7CiAgIG5hY2tfbGlzdF8u
Y2xlYXIoKTsKICAga2V5ZnJhbWVfbGlzdF8uY2xlYXIoKTsKKyAgcmVjb3ZlcmVkX2xpc3RfLmNs
ZWFyKCk7CiB9CiAKIGludDY0X3QgTmFja01vZHVsZTo6VGltZVVudGlsTmV4dFByb2Nlc3MoKSB7
CkBAIC0yMDAsNyArMjM5LDExIEBAIHZvaWQgTmFja01vZHVsZTo6QWRkUGFja2V0c1RvTmFjayh1
aW50MTZfdCBzZXFfbnVtX3N0YXJ0LAogICB9CiAKICAgZm9yICh1aW50MTZfdCBzZXFfbnVtID0g
c2VxX251bV9zdGFydDsgc2VxX251bSAhPSBzZXFfbnVtX2VuZDsgKytzZXFfbnVtKSB7Ci0gICAg
TmFja0luZm8gbmFja19pbmZvKHNlcV9udW0sIHNlcV9udW0gKyBXYWl0TnVtYmVyT2ZQYWNrZXRz
KDAuNSkpOworICAgIC8vIERvIG5vdCBzZW5kIG5hY2sgZm9yIHBhY2tldHMgdGhhdCBhcmUgYWxy
ZWFkeSByZWNvdmVyZWQgYnkgRkVDIG9yIFJUWAorICAgIGlmIChyZWNvdmVyZWRfbGlzdF8uZmlu
ZChzZXFfbnVtKSAhPSByZWNvdmVyZWRfbGlzdF8uZW5kKCkpCisgICAgICBjb250aW51ZTsKKyAg
ICBOYWNrSW5mbyBuYWNrX2luZm8oc2VxX251bSwgc2VxX251bSArIFdhaXROdW1iZXJPZlBhY2tl
dHMoMC41KSwKKyAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29u
ZHMoKSk7CiAgICAgUlRDX0RDSEVDSyhuYWNrX2xpc3RfLmZpbmQoc2VxX251bSkgPT0gbmFja19s
aXN0Xy5lbmQoKSk7CiAgICAgbmFja19saXN0X1tzZXFfbnVtXSA9IG5hY2tfaW5mbzsKICAgfQpA
QCAtMjEzLDIyICsyNTYsMTQgQEAgc3RkOjp2ZWN0b3I8dWludDE2X3Q+IE5hY2tNb2R1bGU6Okdl
dE5hY2tCYXRjaChOYWNrRmlsdGVyT3B0aW9ucyBvcHRpb25zKSB7CiAgIHN0ZDo6dmVjdG9yPHVp
bnQxNl90PiBuYWNrX2JhdGNoOwogICBhdXRvIGl0ID0gbmFja19saXN0Xy5iZWdpbigpOwogICB3
aGlsZSAoaXQgIT0gbmFja19saXN0Xy5lbmQoKSkgewotICAgIGlmIChjb25zaWRlcl9zZXFfbnVt
ICYmIGl0LT5zZWNvbmQuc2VudF9hdF90aW1lID09IC0xICYmCi0gICAgICAgIEFoZWFkT3JBdChu
ZXdlc3Rfc2VxX251bV8sIGl0LT5zZWNvbmQuc2VuZF9hdF9zZXFfbnVtKSkgewotICAgICAgbmFj
a19iYXRjaC5lbXBsYWNlX2JhY2soaXQtPnNlY29uZC5zZXFfbnVtKTsKLSAgICAgICsraXQtPnNl
Y29uZC5yZXRyaWVzOwotICAgICAgaXQtPnNlY29uZC5zZW50X2F0X3RpbWUgPSBub3dfbXM7Ci0g
ICAgICBpZiAoaXQtPnNlY29uZC5yZXRyaWVzID49IGtNYXhOYWNrUmV0cmllcykgewotICAgICAg
ICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJTZXF1ZW5jZSBudW1iZXIgIiA8PCBpdC0+c2Vjb25k
LnNlcV9udW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIHJlbW92ZWQgZnJvbSBO
QUNLIGxpc3QgZHVlIHRvIG1heCByZXRyaWVzLiI7Ci0gICAgICAgIGl0ID0gbmFja19saXN0Xy5l
cmFzZShpdCk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICArK2l0OwotICAgICAgfQotICAgICAg
Y29udGludWU7Ci0gICAgfQotCi0gICAgaWYgKGNvbnNpZGVyX3RpbWVzdGFtcCAmJiBpdC0+c2Vj
b25kLnNlbnRfYXRfdGltZSArIHJ0dF9tc18gPD0gbm93X21zKSB7CisgICAgYm9vbCBkZWxheV90
aW1lZF9vdXQgPQorICAgICAgICBub3dfbXMgLSBpdC0+c2Vjb25kLmNyZWF0ZWRfYXRfdGltZSA+
PSBzZW5kX25hY2tfZGVsYXlfbXNfOworICAgIGJvb2wgbmFja19vbl9ydHRfcGFzc2VkID0gbm93
X21zIC0gaXQtPnNlY29uZC5zZW50X2F0X3RpbWUgPj0gcnR0X21zXzsKKyAgICBib29sIG5hY2tf
b25fc2VxX251bV9wYXNzZWQgPQorICAgICAgICBpdC0+c2Vjb25kLnNlbnRfYXRfdGltZSA9PSAt
MSAmJgorICAgICAgICBBaGVhZE9yQXQobmV3ZXN0X3NlcV9udW1fLCBpdC0+c2Vjb25kLnNlbmRf
YXRfc2VxX251bSk7CisgICAgaWYgKGRlbGF5X3RpbWVkX291dCAmJiAoKGNvbnNpZGVyX3NlcV9u
dW0gJiYgbmFja19vbl9zZXFfbnVtX3Bhc3NlZCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoY29uc2lkZXJfdGltZXN0YW1wICYmIG5hY2tfb25fcnR0X3Bhc3NlZCkpKSB7CiAgICAg
ICBuYWNrX2JhdGNoLmVtcGxhY2VfYmFjayhpdC0+c2Vjb25kLnNlcV9udW0pOwogICAgICAgKytp
dC0+c2Vjb25kLnJldHJpZXM7CiAgICAgICBpdC0+c2Vjb25kLnNlbnRfYXRfdGltZSA9IG5vd19t
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL25hY2tfbW9kdWxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9uYWNrX21vZHVsZS5o
CmluZGV4IDQ0MzQwZTlkNGNhNDc2NDU0Y2E3ZDBiM2I1YTY4N2Y1N2RkNzQzZTkuLmY4NmRkMTZk
YjI4YWMzMGUwZjRhMTM2YzA0YzViNTNhOWE5NTMyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL25hY2tf
bW9kdWxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvbmFja19tb2R1bGUuaApAQCAtMzIsNiArMzIsOCBAQCBjbGFz
cyBOYWNrTW9kdWxlIDogcHVibGljIE1vZHVsZSB7CiAgICAgICAgICAgICAgS2V5RnJhbWVSZXF1
ZXN0U2VuZGVyKiBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcik7CiAKICAgaW50IE9uUmVjZWl2ZWRQ
YWNrZXQodWludDE2X3Qgc2VxX251bSwgYm9vbCBpc19rZXlmcmFtZSk7CisgIGludCBPblJlY2Vp
dmVkUGFja2V0KHVpbnQxNl90IHNlcV9udW0sIGJvb2wgaXNfa2V5ZnJhbWUsIGJvb2wgaXNfcmVj
b3ZlcmVkKTsKKwogICB2b2lkIENsZWFyVXBUbyh1aW50MTZfdCBzZXFfbnVtKTsKICAgdm9pZCBV
cGRhdGVSdHQoaW50NjRfdCBydHRfbXMpOwogICB2b2lkIENsZWFyKCk7CkBAIC01MCwxMCArNTIs
MTMgQEAgY2xhc3MgTmFja01vZHVsZSA6IHB1YmxpYyBNb2R1bGUgewogICAvLyB3ZSBoYXZlIHRy
aWVkIHRvIG5hY2sgdGhpcyBwYWNrZXQuCiAgIHN0cnVjdCBOYWNrSW5mbyB7CiAgICAgTmFja0lu
Zm8oKTsKLSAgICBOYWNrSW5mbyh1aW50MTZfdCBzZXFfbnVtLCB1aW50MTZfdCBzZW5kX2F0X3Nl
cV9udW0pOworICAgIE5hY2tJbmZvKHVpbnQxNl90IHNlcV9udW0sCisgICAgICAgICAgICAgdWlu
dDE2X3Qgc2VuZF9hdF9zZXFfbnVtLAorICAgICAgICAgICAgIGludDY0X3QgY3JlYXRlZF9hdF90
aW1lKTsKIAogICAgIHVpbnQxNl90IHNlcV9udW07CiAgICAgdWludDE2X3Qgc2VuZF9hdF9zZXFf
bnVtOworICAgIGludDY0X3QgY3JlYXRlZF9hdF90aW1lOwogICAgIGludDY0X3Qgc2VudF9hdF90
aW1lOwogICAgIGludCByZXRyaWVzOwogICB9OwpAQCAtODcsNiArOTIsOCBAQCBjbGFzcyBOYWNr
TW9kdWxlIDogcHVibGljIE1vZHVsZSB7CiAgICAgICBSVENfR1VBUkRFRF9CWShjcml0Xyk7CiAg
IHN0ZDo6c2V0PHVpbnQxNl90LCBEZXNjZW5kaW5nU2VxTnVtQ29tcDx1aW50MTZfdD4+IGtleWZy
YW1lX2xpc3RfCiAgICAgICBSVENfR1VBUkRFRF9CWShjcml0Xyk7CisgIHN0ZDo6c2V0PHVpbnQx
Nl90LCBEZXNjZW5kaW5nU2VxTnVtQ29tcDx1aW50MTZfdD4+IHJlY292ZXJlZF9saXN0XworICAg
ICAgUlRDX0dVQVJERURfQlkoY3JpdF8pOwogICB2aWRlb19jb2Rpbmc6Okhpc3RvZ3JhbSByZW9y
ZGVyaW5nX2hpc3RvZ3JhbV8gUlRDX0dVQVJERURfQlkoY3JpdF8pOwogICBib29sIGluaXRpYWxp
emVkXyBSVENfR1VBUkRFRF9CWShjcml0Xyk7CiAgIGludDY0X3QgcnR0X21zXyBSVENfR1VBUkRF
RF9CWShjcml0Xyk7CkBAIC05NCw2ICsxMDEsOSBAQCBjbGFzcyBOYWNrTW9kdWxlIDogcHVibGlj
IE1vZHVsZSB7CiAKICAgLy8gT25seSB0b3VjaGVkIG9uIHRoZSBwcm9jZXNzIHRocmVhZC4KICAg
aW50NjRfdCBuZXh0X3Byb2Nlc3NfdGltZV9tc187CisKKyAgLy8gQWRkcyBhIGRlbGF5IGJlZm9y
ZSBzZW5kIG5hY2sgb24gcGFja2V0IHJlY2VpdmVkLgorICBjb25zdCBpbnQ2NF90IHNlbmRfbmFj
a19kZWxheV9tc187CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9uYWNrX21vZHVsZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL25hY2tfbW9kdWxlX3VuaXR0ZXN0
LmNjCmluZGV4IDhhNWY0NmJmN2ZiYTU2ODcyZjI1OTM2MzI4N2MwM2Q5ZDM4NzE2MDguLjhlZmI4
YWMxNTQ5ZjlkNGI0Y2I3OThlNDVhOWJhMzY2NTk3ZWQxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL25h
Y2tfbW9kdWxlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL25hY2tfbW9kdWxlX3VuaXR0ZXN0LmNj
CkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVk
ZS92aWRlb19jb2RpbmdfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5n
L25hY2tfbW9kdWxlLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2su
aCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5o
IgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAgLTQwLDM4ICs0MSwzOCBAQCBjbGFzcyBUZXN0TmFj
a01vZHVsZSA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QsCiB9OwogCiBURVNUX0YoVGVzdE5hY2tN
b2R1bGUsIE5hY2tPbmVQYWNrZXQpIHsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQo
MSwgZmFsc2UpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgzLCBmYWxzZSk7Cisg
IG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIGZhbHNlLCBmYWxzZSk7CisgIG5hY2tf
bW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDMsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSgx
dSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQRUNUX0VRKDIsIHNlbnRfbmFja3NfWzBdKTsK
IH0KIAogVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBXcmFwcGluZ1NlcU51bSkgewotICBuYWNrX21v
ZHVsZV8uT25SZWNlaXZlZFBhY2tldCgweGZmZmUsIGZhbHNlKTsKLSAgbmFja19tb2R1bGVfLk9u
UmVjZWl2ZWRQYWNrZXQoMSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tl
dCgweGZmZmUsIGZhbHNlLCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0
KDEsIGZhbHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSgydSwgc2VudF9uYWNrc18uc2l6ZSgpKTsK
ICAgRVhQRUNUX0VRKDB4ZmZmZiwgc2VudF9uYWNrc19bMF0pOwogICBFWFBFQ1RfRVEoMCwgc2Vu
dF9uYWNrc19bMV0pOwogfQogCiBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIFdyYXBwaW5nU2VxTnVt
Q2xlYXJUb0tleWZyYW1lKSB7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDB4ZmZm
ZSwgZmFsc2UpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBmYWxzZSk7Cisg
IG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDB4ZmZmZSwgZmFsc2UsIGZhbHNlKTsKKyAg
bmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMSwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNU
X0VRKDJ1LCBzZW50X25hY2tzXy5zaXplKCkpOwogICBFWFBFQ1RfRVEoMHhmZmZmLCBzZW50X25h
Y2tzX1swXSk7CiAgIEVYUEVDVF9FUSgwLCBzZW50X25hY2tzX1sxXSk7CiAKICAgc2VudF9uYWNr
c18uY2xlYXIoKTsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMiwgdHJ1ZSk7Cisg
IG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDIsIHRydWUsIGZhbHNlKTsKICAgRVhQRUNU
X0VRKDB1LCBzZW50X25hY2tzXy5zaXplKCkpOwogCi0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVk
UGFja2V0KDUwMSwgdHJ1ZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDUwMSwg
dHJ1ZSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoNDk4dSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAg
Zm9yIChpbnQgc2VxX251bSA9IDM7IHNlcV9udW0gPCA1MDE7ICsrc2VxX251bSkKICAgICBFWFBF
Q1RfRVEoc2VxX251bSwgc2VudF9uYWNrc19bc2VxX251bSAtIDNdKTsKIAogICBzZW50X25hY2tz
Xy5jbGVhcigpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAxLCBmYWxzZSk7
CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMDEsIGZhbHNlLCBmYWxzZSk7CiAg
IEVYUEVDVF9FUSg0OTl1LCBzZW50X25hY2tzXy5zaXplKCkpOwogICBmb3IgKGludCBzZXFfbnVt
ID0gNTAyOyBzZXFfbnVtIDwgMTAwMTsgKytzZXFfbnVtKQogICAgIEVYUEVDVF9FUShzZXFfbnVt
LCBzZW50X25hY2tzX1tzZXFfbnVtIC0gNTAyXSk7CkBAIC05MSw3ICs5Miw3IEBAIFRFU1RfRihU
ZXN0TmFja01vZHVsZSwgV3JhcHBpbmdTZXFOdW1DbGVhclRvS2V5ZnJhbWUpIHsKICAgLy8gSXQg
d2lsbCB0aGVuIGNsZWFyIGFsbCBuYWNrcyB1cCB0byB0aGUgbmV4dCBrZXlmcmFtZSAoc2VxIG51
bSAyKSwKICAgLy8gdGh1cyByZW1vdmluZyAweGZmZmYgYW5kIDAgZnJvbSB0aGUgbmFjayBsaXN0
LgogICBzZW50X25hY2tzXy5jbGVhcigpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tl
dCgxMDA0LCBmYWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMDQsIGZh
bHNlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUSgydSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQ
RUNUX0VRKDEwMDIsIHNlbnRfbmFja3NfWzBdKTsKICAgRVhQRUNUX0VRKDEwMDMsIHNlbnRfbmFj
a3NfWzFdKTsKQEAgLTEwNyw3ICsxMDgsNyBAQCBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIFdyYXBw
aW5nU2VxTnVtQ2xlYXJUb0tleWZyYW1lKSB7CiAKICAgLy8gQWRkaW5nIHBhY2tldCAxMDA3IHdp
bGwgY2F1c2UgdGhlIG5hY2sgbW9kdWxlIHRvIG92ZXJmbG93IGFnYWluLCB0aHVzCiAgIC8vIGNs
ZWFyaW5nIGV2ZXJ5dGhpbmcgdXAgdG8gNTAxIHdoaWNoIGlzIHRoZSBuZXh0IGtleWZyYW1lLgot
ICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDA3LCBmYWxzZSk7CisgIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMDcsIGZhbHNlLCBmYWxzZSk7CiAgIHNlbnRfbmFja3Nf
LmNsZWFyKCk7CiAgIGNsb2NrXy0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTAwKTsKICAgbmFj
a19tb2R1bGVfLlByb2Nlc3MoKTsKQEAgLTE0Niw4ICsxNDcsOCBAQCBURVNUX0YoVGVzdE5hY2tN
b2R1bGUsIERvbnRCdXJzdE9uVGltZVNraXApIHsKIH0KIAogVEVTVF9GKFRlc3ROYWNrTW9kdWxl
LCBSZXNlbmROYWNrKSB7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIGZhbHNl
KTsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMywgZmFsc2UpOworICBuYWNrX21v
ZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBmYWxzZSwgZmFsc2UpOworICBuYWNrX21vZHVsZV8u
T25SZWNlaXZlZFBhY2tldCgzLCBmYWxzZSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoMXUsIHNlbnRf
bmFja3NfLnNpemUoKSk7CiAgIEVYUEVDVF9FUSgyLCBzZW50X25hY2tzX1swXSk7CiAKQEAgLTE2
OSwxNSArMTcwLDE1IEBAIFRFU1RfRihUZXN0TmFja01vZHVsZSwgUmVzZW5kTmFjaykgewogICBu
YWNrX21vZHVsZV8uUHJvY2VzcygpOwogICBFWFBFQ1RfRVEoNHUsIHNlbnRfbmFja3NfLnNpemUo
KSk7CiAKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMiwgZmFsc2UpOworICBuYWNr
X21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgyLCBmYWxzZSwgZmFsc2UpOwogICBjbG9ja18tPkFk
dmFuY2VUaW1lTWlsbGlzZWNvbmRzKDUwKTsKICAgbmFja19tb2R1bGVfLlByb2Nlc3MoKTsKICAg
RVhQRUNUX0VRKDR1LCBzZW50X25hY2tzXy5zaXplKCkpOwogfQogCiBURVNUX0YoVGVzdE5hY2tN
b2R1bGUsIFJlc2VuZFBhY2tldE1heFJldHJpZXMpIHsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2
ZWRQYWNrZXQoMSwgZmFsc2UpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgzLCBm
YWxzZSk7CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIGZhbHNlLCBmYWxzZSk7
CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDMsIGZhbHNlLCBmYWxzZSk7CiAgIEVY
UEVDVF9FUSgxdSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQRUNUX0VRKDIsIHNlbnRfbmFj
a3NfWzBdKTsKIApAQCAtMTkzLDM1ICsxOTQsMzUgQEAgVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBS
ZXNlbmRQYWNrZXRNYXhSZXRyaWVzKSB7CiB9CiAKIFRFU1RfRihUZXN0TmFja01vZHVsZSwgVG9v
TGFyZ2VOYWNrTGlzdCkgewotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgwLCBmYWxz
ZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMDEsIGZhbHNlKTsKKyAgbmFj
a19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwgZmFsc2UsIGZhbHNlKTsKKyAgbmFja19tb2R1
bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwMSwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDEw
MDB1LCBzZW50X25hY2tzXy5zaXplKCkpOwogICBFWFBFQ1RfRVEoMCwga2V5ZnJhbWVzX3JlcXVl
c3RlZF8pOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAzLCBmYWxzZSk7Cisg
IG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMDMsIGZhbHNlLCBmYWxzZSk7CiAgIEVY
UEVDVF9FUSgxMDAwdSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQRUNUX0VRKDEsIGtleWZy
YW1lc19yZXF1ZXN0ZWRfKTsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwNCwg
ZmFsc2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDA0LCBmYWxzZSwgZmFs
c2UpOwogICBFWFBFQ1RfRVEoMTAwMHUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAgIEVYUEVDVF9F
USgxLCBrZXlmcmFtZXNfcmVxdWVzdGVkXyk7CiB9CiAKIFRFU1RfRihUZXN0TmFja01vZHVsZSwg
VG9vTGFyZ2VOYWNrTGlzdFdpdGhLZXlGcmFtZSkgewotICBuYWNrX21vZHVsZV8uT25SZWNlaXZl
ZFBhY2tldCgwLCBmYWxzZSk7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIHRy
dWUpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAxLCBmYWxzZSk7CisgIG5h
Y2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDAsIGZhbHNlLCBmYWxzZSk7CisgIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDEsIHRydWUsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9u
UmVjZWl2ZWRQYWNrZXQoMTAwMSwgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VRKDk5OXUsIHNl
bnRfbmFja3NfLnNpemUoKSk7CiAgIEVYUEVDVF9FUSgwLCBrZXlmcmFtZXNfcmVxdWVzdGVkXyk7
Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMDMsIGZhbHNlKTsKKyAgbmFja19t
b2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwMywgZmFsc2UsIGZhbHNlKTsKICAgRVhQRUNUX0VR
KDEwMDB1LCBzZW50X25hY2tzXy5zaXplKCkpOwogICBFWFBFQ1RfRVEoMCwga2V5ZnJhbWVzX3Jl
cXVlc3RlZF8pOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDA1LCBmYWxzZSk7
CisgIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMDUsIGZhbHNlLCBmYWxzZSk7CiAg
IEVYUEVDVF9FUSgxMDAwdSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKICAgRVhQRUNUX0VRKDEsIGtl
eWZyYW1lc19yZXF1ZXN0ZWRfKTsKIH0KIAogVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBDbGVhclVw
VG8pIHsKLSAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwgZmFsc2UpOwotICBuYWNr
X21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDAsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9u
UmVjZWl2ZWRQYWNrZXQoMCwgZmFsc2UsIGZhbHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2
ZWRQYWNrZXQoMTAwLCBmYWxzZSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoOTl1LCBzZW50X25hY2tz
Xy5zaXplKCkpOwogCiAgIHNlbnRfbmFja3NfLmNsZWFyKCk7CkBAIC0yMzMsOCArMjM0LDggQEAg
VEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBDbGVhclVwVG8pIHsKIH0KIAogVEVTVF9GKFRlc3ROYWNr
TW9kdWxlLCBDbGVhclVwVG9XcmFwKSB7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0
KDB4ZmZmMCwgZmFsc2UpOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgweGYsIGZh
bHNlKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMHhmZmYwLCBmYWxzZSwgZmFs
c2UpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgweGYsIGZhbHNlLCBmYWxzZSk7
CiAgIEVYUEVDVF9FUSgzMHUsIHNlbnRfbmFja3NfLnNpemUoKSk7CiAKICAgc2VudF9uYWNrc18u
Y2xlYXIoKTsKQEAgLTI0NiwyMCArMjQ3LDIwIEBAIFRFU1RfRihUZXN0TmFja01vZHVsZSwgQ2xl
YXJVcFRvV3JhcCkgewogfQogCiBURVNUX0YoVGVzdE5hY2tNb2R1bGUsIFBhY2tldE5hY2tDb3Vu
dCkgewotICBFWFBFQ1RfRVEoMCwgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwgZmFs
c2UpKTsKLSAgRVhQRUNUX0VRKDAsIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDIsIGZh
bHNlKSk7Ci0gIEVYUEVDVF9FUSgxLCBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBm
YWxzZSkpOworICBFWFBFQ1RfRVEoMCwgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwg
ZmFsc2UsIGZhbHNlKSk7CisgIEVYUEVDVF9FUSgwLCBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBh
Y2tldCgyLCBmYWxzZSwgZmFsc2UpKTsKKyAgRVhQRUNUX0VRKDEsIG5hY2tfbW9kdWxlXy5PblJl
Y2VpdmVkUGFja2V0KDEsIGZhbHNlLCBmYWxzZSkpOwogCiAgIHNlbnRfbmFja3NfLmNsZWFyKCk7
CiAgIG5hY2tfbW9kdWxlXy5VcGRhdGVSdHQoMTAwKTsKLSAgRVhQRUNUX0VRKDAsIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KDUsIGZhbHNlKSk7CisgIEVYUEVDVF9FUSgwLCBuYWNrX21v
ZHVsZV8uT25SZWNlaXZlZFBhY2tldCg1LCBmYWxzZSwgZmFsc2UpKTsKICAgY2xvY2tfLT5BZHZh
bmNlVGltZU1pbGxpc2Vjb25kcygxMDApOwogICBuYWNrX21vZHVsZV8uUHJvY2VzcygpOwogICBj
bG9ja18tPkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKDEwMCk7CiAgIG5hY2tfbW9kdWxlXy5Qcm9j
ZXNzKCk7Ci0gIEVYUEVDVF9FUSgzLCBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgzLCBm
YWxzZSkpOwotICBFWFBFQ1RfRVEoMywgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoNCwg
ZmFsc2UpKTsKLSAgRVhQRUNUX0VRKDAsIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDQs
IGZhbHNlKSk7CisgIEVYUEVDVF9FUSgzLCBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgz
LCBmYWxzZSwgZmFsc2UpKTsKKyAgRVhQRUNUX0VRKDMsIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVk
UGFja2V0KDQsIGZhbHNlLCBmYWxzZSkpOworICBFWFBFQ1RfRVEoMCwgbmFja19tb2R1bGVfLk9u
UmVjZWl2ZWRQYWNrZXQoNCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKIFRFU1RfRihUZXN0TmFja01v
ZHVsZSwgTmFja0xpc3RGdWxsQW5kTm9PdmVybGFwV2l0aEtleWZyYW1lcykgewpAQCAtMjY3LDE0
ICsyNjgsNjMgQEAgVEVTVF9GKFRlc3ROYWNrTW9kdWxlLCBOYWNrTGlzdEZ1bGxBbmROb092ZXJs
YXBXaXRoS2V5ZnJhbWVzKSB7CiAgIGNvbnN0IHVuc2lnbmVkIGludCBrRmlyc3RHYXAgPSBrTWF4
TmFja1BhY2tldHMgLSAyMDsKICAgY29uc3QgdW5zaWduZWQgaW50IGtTZWNvbmRHYXAgPSAyMDA7
CiAgIHVpbnQxNl90IHNlcV9udW0gPSAwOwotICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tl
dChzZXFfbnVtKyssIHRydWUpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldChzZXFf
bnVtKyssIHRydWUsIGZhbHNlKTsKICAgc2VxX251bSArPSBrRmlyc3RHYXA7Ci0gIG5hY2tfbW9k
dWxlXy5PblJlY2VpdmVkUGFja2V0KHNlcV9udW0rKywgdHJ1ZSk7CisgIG5hY2tfbW9kdWxlXy5P
blJlY2VpdmVkUGFja2V0KHNlcV9udW0rKywgdHJ1ZSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoa0Zp
cnN0R2FwLCBzZW50X25hY2tzXy5zaXplKCkpOwogICBzZW50X25hY2tzXy5jbGVhcigpOwogICBz
ZXFfbnVtICs9IGtTZWNvbmRHYXA7Ci0gIG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KHNl
cV9udW0sIHRydWUpOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldChzZXFfbnVtLCB0
cnVlLCBmYWxzZSk7CiAgIEVYUEVDVF9FUShrU2Vjb25kR2FwLCBzZW50X25hY2tzXy5zaXplKCkp
OwogfQogCitURVNUX0YoVGVzdE5hY2tNb2R1bGUsIEhhbmRsZUZlY1JlY292ZXJlZFBhY2tldCkg
eworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxLCBmYWxzZSwgZmFsc2UpOworICBu
YWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCg0LCBmYWxzZSwgdHJ1ZSk7CisgIEVYUEVDVF9F
USgwdSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNr
ZXQoNSwgZmFsc2UsIGZhbHNlKTsKKyAgRVhQRUNUX0VRKDJ1LCBzZW50X25hY2tzXy5zaXplKCkp
OworfQorCitURVNUX0YoVGVzdE5hY2tNb2R1bGUsIFNlbmROYWNrV2l0aG91dERlbGF5KSB7Cisg
IG5hY2tfbW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDAsIGZhbHNlLCBmYWxzZSk7CisgIG5hY2tf
bW9kdWxlXy5PblJlY2VpdmVkUGFja2V0KDEwMCwgZmFsc2UsIGZhbHNlKTsKKyAgRVhQRUNUX0VR
KDk5dSwgc2VudF9uYWNrc18uc2l6ZSgpKTsKK30KKworY2xhc3MgVGVzdE5hY2tNb2R1bGVXaXRo
RmllbGRUcmlhbCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIE5hY2tTZW5kZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIEtleUZyYW1lUmVxdWVzdFNlbmRlciB7CisgcHJvdGVj
dGVkOgorICBUZXN0TmFja01vZHVsZVdpdGhGaWVsZFRyaWFsKCkKKyAgICAgIDogbmFja19kZWxh
eV9maWVsZF90cmlhbF8oIldlYlJUQy1TZW5kTmFja0RlbGF5TXMvMTAvIiksCisgICAgICAgIGNs
b2NrXyhuZXcgU2ltdWxhdGVkQ2xvY2soMCkpLAorICAgICAgICBuYWNrX21vZHVsZV8oY2xvY2tf
LmdldCgpLCB0aGlzLCB0aGlzKSwKKyAgICAgICAga2V5ZnJhbWVzX3JlcXVlc3RlZF8oMCkge30K
KworICB2b2lkIFNlbmROYWNrKGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQxNl90PiYgc2VxdWVuY2Vf
bnVtYmVycykgb3ZlcnJpZGUgeworICAgIHNlbnRfbmFja3NfLmluc2VydChzZW50X25hY2tzXy5l
bmQoKSwgc2VxdWVuY2VfbnVtYmVycy5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICBz
ZXF1ZW5jZV9udW1iZXJzLmVuZCgpKTsKKyAgfQorCisgIHZvaWQgUmVxdWVzdEtleUZyYW1lKCkg
b3ZlcnJpZGUgeyArK2tleWZyYW1lc19yZXF1ZXN0ZWRfOyB9CisKKyAgdGVzdDo6U2NvcGVkRmll
bGRUcmlhbHMgbmFja19kZWxheV9maWVsZF90cmlhbF87CisgIHN0ZDo6dW5pcXVlX3B0cjxTaW11
bGF0ZWRDbG9jaz4gY2xvY2tfOworICBOYWNrTW9kdWxlIG5hY2tfbW9kdWxlXzsKKyAgc3RkOjp2
ZWN0b3I8dWludDE2X3Q+IHNlbnRfbmFja3NfOworICBpbnQga2V5ZnJhbWVzX3JlcXVlc3RlZF87
Cit9OworCitURVNUX0YoVGVzdE5hY2tNb2R1bGVXaXRoRmllbGRUcmlhbCwgU2VuZE5hY2tXaXRo
RGVsYXkpIHsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMCwgZmFsc2UsIGZhbHNl
KTsKKyAgbmFja19tb2R1bGVfLk9uUmVjZWl2ZWRQYWNrZXQoMTAwLCBmYWxzZSwgZmFsc2UpOwor
ICBFWFBFQ1RfRVEoMHUsIHNlbnRfbmFja3NfLnNpemUoKSk7CisgIGNsb2NrXy0+QWR2YW5jZVRp
bWVNaWxsaXNlY29uZHMoMTApOworICBuYWNrX21vZHVsZV8uT25SZWNlaXZlZFBhY2tldCgxMDYs
IGZhbHNlLCBmYWxzZSk7CisgIEVYUEVDVF9FUSg5OXUsIHNlbnRfbmFja3NfLnNpemUoKSk7Cisg
IGNsb2NrXy0+QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoMTApOworICBuYWNrX21vZHVsZV8uT25S
ZWNlaXZlZFBhY2tldCgxMDksIGZhbHNlLCBmYWxzZSk7CisgIEVYUEVDVF9FUSgxMDR1LCBzZW50
X25hY2tzXy5zaXplKCkpOworfQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvcmVjZWl2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlci5jYwppbmRleCA3ZjIyYjczYTVhNjIx
YTI4OWU4NjBhMGJkNGY5ZDkyNjM1NDM2MGE1Li41YmYyNzI1N2IwN2EzMWE2YjlkMGFmYzdjNWNl
YzQyMjAyN2FkYTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlci5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9y
ZWNlaXZlci5jYwpAQCAtMjgsMzIgKzI4LDI1IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiBlbnVt
IHsga01heFJlY2VpdmVyRGVsYXlNcyA9IDEwMDAwIH07CiAKLVZDTVJlY2VpdmVyOjpWQ01SZWNl
aXZlcihWQ01UaW1pbmcqIHRpbWluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICBDbG9jayog
Y2xvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRGYWN0b3J5KiBldmVudF9mYWN0
b3J5KQorVkNNUmVjZWl2ZXI6OlZDTVJlY2VpdmVyKFZDTVRpbWluZyogdGltaW5nLCBDbG9jayog
Y2xvY2spCiAgICAgOiBWQ01SZWNlaXZlcjo6VkNNUmVjZWl2ZXIodGltaW5nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50X2ZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
V3JhcFVuaXF1ZShFdmVudFdyYXBwZXI6OkNyZWF0ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhYnNsOjpXcmFwVW5pcXVlKEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsICAvLyBOYWNrU2VuZGVyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cikgIC8vIEtleWZyYW1lUmVxdWVzdFNl
bmRlcgoge30KIAogVkNNUmVjZWl2ZXI6OlZDTVJlY2VpdmVyKFZDTVRpbWluZyogdGltaW5nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIENsb2NrKiBjbG9jaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBFdmVudEZhY3RvcnkqIGV2ZW50X2ZhY3RvcnksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmFja1NlbmRlciogbmFja19zZW5kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
S2V5RnJhbWVSZXF1ZXN0U2VuZGVyKiBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcikKLSAgICA6IFZD
TVJlY2VpdmVyKAotICAgICAgICAgIHRpbWluZywKLSAgICAgICAgICBjbG9jaywKLSAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRXcmFwcGVyPihldmVudF9mYWN0b3J5Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZXZlbnRfZmFjdG9yeS0+Q3JlYXRl
RXZlbnQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEV2
ZW50V3JhcHBlcjo6Q3JlYXRlKCkpLAotICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFdy
YXBwZXI+KGV2ZW50X2ZhY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBldmVudF9mYWN0b3J5LT5DcmVhdGVFdmVudCgpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRXZlbnRXcmFwcGVyOjpDcmVhdGUoKSksCi0g
ICAgICAgICAgbmFja19zZW5kZXIsCi0gICAgICAgICAga2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIp
IHt9CisgICAgOiBWQ01SZWNlaXZlcih0aW1pbmcsCisgICAgICAgICAgICAgICAgICBjbG9jaywK
KyAgICAgICAgICAgICAgICAgIGFic2w6OldyYXBVbmlxdWUoRXZlbnRXcmFwcGVyOjpDcmVhdGUo
KSksCisgICAgICAgICAgICAgICAgICBhYnNsOjpXcmFwVW5pcXVlKEV2ZW50V3JhcHBlcjo6Q3Jl
YXRlKCkpLAorICAgICAgICAgICAgICAgICAgbmFja19zZW5kZXIsCisgICAgICAgICAgICAgICAg
ICBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcikge30KIAogVkNNUmVjZWl2ZXI6OlZDTVJlY2VpdmVy
KFZDTVRpbWluZyogdGltaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgIENsb2NrKiBjbG9j
aywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL3JlY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlci5oCmluZGV4
IDRmNjU5MGQyNzQ4MjJmMzkyZGMyYWRlYWFjYTEwNjNmZDM2YjljNDEuLjUwM2NhZTdjOGRlZWRk
NjdlOWM0ZGRiMGMyMWE1OTY2MGFkZTI2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3JlY2VpdmVyLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvcmVjZWl2ZXIuaApAQCAtMzAsMTcgKzMwLDE2IEBAIGNsYXNzIFZDTVJlY2Vp
dmVyIHsKICBwdWJsaWM6CiAgIC8vIENvbnN0cnVjdG9yIGZvciBjdXJyZW50IGludGVyZmFjZSwg
d2lsbCBiZSByZW1vdmVkIHdoZW4gdGhlCiAgIC8vIG5ldyBqaXR0ZXIgYnVmZmVyIGlzIGluIHBs
YWNlLgotICBWQ01SZWNlaXZlcihWQ01UaW1pbmcqIHRpbWluZywgQ2xvY2sqIGNsb2NrLCBFdmVu
dEZhY3RvcnkqIGV2ZW50X2ZhY3RvcnkpOworICBWQ01SZWNlaXZlcihWQ01UaW1pbmcqIHRpbWlu
ZywgQ2xvY2sqIGNsb2NrKTsKIAogICAvLyBDcmVhdGUgbWV0aG9kIGZvciB0aGUgbmV3IGppdHRl
ciBidWZmZXIuCiAgIFZDTVJlY2VpdmVyKFZDTVRpbWluZyogdGltaW5nLAogICAgICAgICAgICAg
ICBDbG9jayogY2xvY2ssCi0gICAgICAgICAgICAgIEV2ZW50RmFjdG9yeSogZXZlbnRfZmFjdG9y
eSwKICAgICAgICAgICAgICAgTmFja1NlbmRlciogbmFja19zZW5kZXIsCiAgICAgICAgICAgICAg
IEtleUZyYW1lUmVxdWVzdFNlbmRlcioga2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIpOwogCi0gIC8v
IFVzaW5nIHRoaXMgY29uc3RydWN0b3IsIHlvdSBjYW4gc3BlY2lmeSBhIGRpZmZlcmVudCBldmVu
dCBmYWN0b3J5IGZvciB0aGUKLSAgLy8gaml0dGVyIGJ1ZmZlci4gVXNlZnVsIGZvciB1bml0IHRl
c3RzIHdoZW4geW91IHdhbnQgdG8gc2ltdWxhdGUgaW5jb21pbmcKKyAgLy8gVXNpbmcgdGhpcyBj
b25zdHJ1Y3RvciwgeW91IGNhbiBzcGVjaWZ5IGEgZGlmZmVyZW50IGV2ZW50IGltcGxlbWV0YXRp
b24gZm9yCisgIC8vIHRoZSBqaXR0ZXIgYnVmZmVyLiBVc2VmdWwgZm9yIHVuaXQgdGVzdHMgd2hl
biB5b3Ugd2FudCB0byBzaW11bGF0ZSBpbmNvbWluZwogICAvLyBwYWNrZXRzLCBpbiB3aGljaCBj
YXNlIHRoZSBqaXR0ZXIgYnVmZmVyJ3Mgd2FpdCBldmVudCBpcyBkaWZmZXJlbnQgZnJvbQogICAv
LyB0aGF0IG9mIFZDTVJlY2VpdmVyIGl0c2VsZi4KICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3Jl
Y2VpdmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcmVjZWl2ZXJfdW5pdHRlc3QuY2MKaW5kZXggMWZm
ODY2Mjk4ZTJjY2RmNDYxNjYzMWZiOTExZGQ4YWM4MDQ5ZmVmZC4uYmEzNWY2OTM1ODJkNDgxYzNj
YmIxMjA0Y2QzZmQ0MDc5MTNhNGViYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvcmVjZWl2ZXJfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvcmVjZWl2ZXJfdW5pdHRlc3QuY2MKQEAgLTE4LDcgKzE4LDYgQEAK
ICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9wYWNrZXQuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3ZpZGVvX2NvZGluZy9yZWNlaXZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL3Rlc3Qvc3RyZWFtX2dlbmVyYXRvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL3Rlc3QvdGVzdF91dGlsLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdGlt
aW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dy
YXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKQEAgLTMxLDcgKzMwLDcgQEAgY2xhc3MgVGVzdFZDTVJl
Y2VpdmVyIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgIFRlc3RWQ01SZWNlaXZlcigpCiAg
ICAgICA6IGNsb2NrXyhuZXcgU2ltdWxhdGVkQ2xvY2soMCkpLAogICAgICAgICB0aW1pbmdfKGNs
b2NrXy5nZXQoKSksCi0gICAgICAgIHJlY2VpdmVyXygmdGltaW5nXywgY2xvY2tfLmdldCgpLCAm
ZXZlbnRfZmFjdG9yeV8pIHsKKyAgICAgICAgcmVjZWl2ZXJfKCZ0aW1pbmdfLCBjbG9ja18uZ2V0
KCkpIHsKICAgICBzdHJlYW1fZ2VuZXJhdG9yXy5yZXNldCgKICAgICAgICAgbmV3IFN0cmVhbUdl
bmVyYXRvcigwLCBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSk7CiAgIH0KQEAgLTgxLDcg
KzgwLDYgQEAgY2xhc3MgVGVzdFZDTVJlY2VpdmVyIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CiAKICAgc3RkOjp1bmlxdWVfcHRyPFNpbXVsYXRlZENsb2NrPiBjbG9ja187CiAgIFZDTVRpbWlu
ZyB0aW1pbmdfOwotICBOdWxsRXZlbnRGYWN0b3J5IGV2ZW50X2ZhY3RvcnlfOwogICBWQ01SZWNl
aXZlciByZWNlaXZlcl87CiAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJlYW1HZW5lcmF0b3I+IHN0cmVh
bV9nZW5lcmF0b3JfOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3Rlc3QvdGVzdF91dGlsLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy90ZXN0L3Rlc3RfdXRpbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzhm
YzU4YjEyODRiYzc4MWIxYzZmNWNkNjQyZjdmNjZkYzNhZTQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3Rlc3QvdGVzdF91dGlsLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxMiBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQot
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRl
ZiBNT0RVTEVTX1ZJREVPX0NPRElOR19URVNUX1RFU1RfVVRJTF9IXwotI2RlZmluZSBNT0RVTEVT
X1ZJREVPX0NPRElOR19URVNUX1RFU1RfVVRJTF9IXwotCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvZXZlbnRfd3JhcHBlci5oIgotCi1jbGFzcyBOdWxsRXZlbnRGYWN0b3J5IDog
cHVibGljIHdlYnJ0Yzo6RXZlbnRGYWN0b3J5IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfk51bGxF
dmVudEZhY3RvcnkoKSB7fQotCi0gIHdlYnJ0Yzo6RXZlbnRXcmFwcGVyKiBDcmVhdGVFdmVudCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBOdWxsRXZlbnQ7IH0KLQotIHByaXZhdGU6Ci0gIC8vIFBy
aXZhdGUgY2xhc3MgdG8gYXZvaWQgbW9yZSBkZXBlbmRlbmNpZXMgb24gaXQgaW4gdGVzdHMuCi0g
IGNsYXNzIE51bGxFdmVudCA6IHB1YmxpYyB3ZWJydGM6OkV2ZW50V3JhcHBlciB7Ci0gICBwdWJs
aWM6Ci0gICAgfk51bGxFdmVudCgpIG92ZXJyaWRlIHt9Ci0gICAgYm9vbCBTZXQoKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgd2VicnRjOjpFdmVudFR5cGVXcmFwcGVyIFdhaXQodW5z
aWduZWQgbG9uZyBtYXhfdGltZSkgb3ZlcnJpZGUgeyAgLy8gTk9MSU5UCi0gICAgICByZXR1cm4g
d2VicnRjOjprRXZlbnRUaW1lb3V0OwotICAgIH0KLSAgfTsKLX07Ci0KLSNlbmRpZiAgLy8gTU9E
VUxFU19WSURFT19DT0RJTkdfVEVTVF9URVNUX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0
aWxpdHkvaXZmX2ZpbGVfd3JpdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L2l2Zl9maWxlX3dyaXRlci5o
CmluZGV4IDdkOTE3ZWQzNWVlOWIxMGY5ODdlY2ZjOTRhMWNlYTg4MDNhYWZkMzIuLjQ3NzViZWRk
YWM4NWE1MWI2OTI5OGM1YjEzNTUyZTc0YTUzOTVkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxp
dHkvaXZmX2ZpbGVfd3JpdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9pdmZfZmlsZV93cml0ZXIu
aApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+
CiAKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgorI2luY2x1
ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9pbmNsdWRl
L21vZHVsZV9jb21tb25fdHlwZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1h
Z2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZmlsZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRp
bGl0eS9tb3ZpbmdfYXZlcmFnZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvbW92aW5nX2F2ZXJhZ2UuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMjNlM2Q5MmYzZTYwNjNlYWNkZWRmZDg4
MDJhOWZmYTgzZDFjNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5jYworKysgL2Rldi9udWxsCkBAIC0x
LDQ3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZS5oIgotCi0jaW5jbHVkZSA8YWxnb3Jp
dGhtPgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotTW92aW5nQXZlcmFnZTo6TW92aW5nQXZlcmFn
ZShzaXplX3QgcykgOiBzdW1faGlzdG9yeV8ocyArIDEsIDApIHt9Ci1Nb3ZpbmdBdmVyYWdlOjp+
TW92aW5nQXZlcmFnZSgpID0gZGVmYXVsdDsKLQotdm9pZCBNb3ZpbmdBdmVyYWdlOjpBZGRTYW1w
bGUoaW50IHNhbXBsZSkgewotICBjb3VudF8rKzsKLSAgc3VtXyArPSBzYW1wbGU7Ci0gIHN1bV9o
aXN0b3J5X1tjb3VudF8gJSBzdW1faGlzdG9yeV8uc2l6ZSgpXSA9IHN1bV87Ci19Ci0KLWFic2w6
Om9wdGlvbmFsPGludD4gTW92aW5nQXZlcmFnZTo6R2V0QXZlcmFnZSgpIGNvbnN0IHsKLSAgcmV0
dXJuIEdldEF2ZXJhZ2Uoc2l6ZSgpKTsKLX0KLQotYWJzbDo6b3B0aW9uYWw8aW50PiBNb3ZpbmdB
dmVyYWdlOjpHZXRBdmVyYWdlKHNpemVfdCBudW1fc2FtcGxlcykgY29uc3QgewotICBpZiAobnVt
X3NhbXBsZXMgPiBzaXplKCkgfHwgbnVtX3NhbXBsZXMgPT0gMCkKLSAgICByZXR1cm4gYWJzbDo6
bnVsbG9wdDsKLSAgaW50IHN1bSA9IHN1bV8gLSBzdW1faGlzdG9yeV9bKGNvdW50XyAtIG51bV9z
YW1wbGVzKSAlIHN1bV9oaXN0b3J5Xy5zaXplKCldOwotICByZXR1cm4gc3VtIC8gc3RhdGljX2Nh
c3Q8aW50PihudW1fc2FtcGxlcyk7Ci19Ci0KLXZvaWQgTW92aW5nQXZlcmFnZTo6UmVzZXQoKSB7
Ci0gIGNvdW50XyA9IDA7Ci0gIHN1bV8gPSAwOwotICBzdGQ6OmZpbGwoc3VtX2hpc3RvcnlfLmJl
Z2luKCksIHN1bV9oaXN0b3J5Xy5lbmQoKSwgMCk7Ci19Ci0KLXNpemVfdCBNb3ZpbmdBdmVyYWdl
OjpzaXplKCkgY29uc3QgewotICByZXR1cm4gc3RkOjptaW4oY291bnRfLCBzdW1faGlzdG9yeV8u
c2l6ZSgpIC0gMSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL3V0aWxpdHkvbW92aW5nX2F2ZXJhZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvbW92aW5nX2F2ZXJh
Z2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdjZTYzM2IxOGZjYzE2ZjZmMDAx
ZDcxN2QwMWQxNmRkNWFkYjc5Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L21vdmluZ19hdmVyYWdlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwzNiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxNSBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBNT0RVTEVT
X1ZJREVPX0NPRElOR19VVElMSVRZX01PVklOR19BVkVSQUdFX0hfCi0jZGVmaW5lIE1PRFVMRVNf
VklERU9fQ09ESU5HX1VUSUxJVFlfTU9WSU5HX0FWRVJBR0VfSF8KLQotI2luY2x1ZGUgPHZlY3Rv
cj4KLQotI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLQotbmFtZXNwYWNlIHdlYnJ0
YyB7Ci1jbGFzcyBNb3ZpbmdBdmVyYWdlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IE1vdmluZ0F2
ZXJhZ2Uoc2l6ZV90IHMpOwotICB+TW92aW5nQXZlcmFnZSgpOwotICB2b2lkIEFkZFNhbXBsZShp
bnQgc2FtcGxlKTsKLSAgYWJzbDo6b3B0aW9uYWw8aW50PiBHZXRBdmVyYWdlKCkgY29uc3Q7Ci0g
IGFic2w6Om9wdGlvbmFsPGludD4gR2V0QXZlcmFnZShzaXplX3QgbnVtX3NhbXBsZXMpIGNvbnN0
OwotICB2b2lkIFJlc2V0KCk7Ci0gIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0KLSBwcml2YXRlOgot
ICBzaXplX3QgY291bnRfID0gMDsKLSAgaW50IHN1bV8gPSAwOwotICBzdGQ6OnZlY3RvcjxpbnQ+
IHN1bV9oaXN0b3J5XzsKLX07Ci19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8g
TU9EVUxFU19WSURFT19DT0RJTkdfVVRJTElUWV9NT1ZJTkdfQVZFUkFHRV9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvdXRpbGl0eS9tb3ZpbmdfYXZlcmFnZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxp
dHkvbW92aW5nX2F2ZXJhZ2VfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDcyZmM3NzVhODI3MzJkY2QxNzViZTc2MWViNjIwZDg1ZGQ2MGQ2YTkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3Zpbmdf
YXZlcmFnZV91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0
eS9tb3ZpbmdfYXZlcmFnZS5oIgotCi0jaW5jbHVkZSAidGVzdC9ndGVzdC5oIgotCi1URVNUKE1v
dmluZ0F2ZXJhZ2VUZXN0LCBFbXB0eUF2ZXJhZ2UpIHsKLSAgd2VicnRjOjpNb3ZpbmdBdmVyYWdl
IG1vdmluZ19hdmVyYWdlKDEpOwotICBFWFBFQ1RfRVEoMHUsIG1vdmluZ19hdmVyYWdlLnNpemUo
KSk7Ci0gIEVYUEVDVF9GQUxTRShtb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlKDApKTsKLX0KLQot
Ly8gVGVzdCBzaW5nbGUgdmFsdWUuCi1URVNUKE1vdmluZ0F2ZXJhZ2VUZXN0LCBPbmVFbGVtZW50
KSB7Ci0gIHdlYnJ0Yzo6TW92aW5nQXZlcmFnZSBtb3ZpbmdfYXZlcmFnZSgxKTsKLSAgbW92aW5n
X2F2ZXJhZ2UuQWRkU2FtcGxlKDMpOwotICBFWFBFQ1RfRVEoMXUsIG1vdmluZ19hdmVyYWdlLnNp
emUoKSk7Ci0gIEVYUEVDVF9FUSgzLCAqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZSgpKTsKLSAg
RVhQRUNUX0VRKDMsICptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlKDEpKTsKLSAgRVhQRUNUX0ZB
TFNFKG1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2UoMikpOwotfQotCi1URVNUKE1vdmluZ0F2ZXJh
Z2VUZXN0LCBHZXRBdmVyYWdlKSB7Ci0gIHdlYnJ0Yzo6TW92aW5nQXZlcmFnZSBtb3ZpbmdfYXZl
cmFnZSgxMDI0KTsKLSAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDEpOwotICBtb3ZpbmdfYXZl
cmFnZS5BZGRTYW1wbGUoMSk7Ci0gIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgzKTsKLSAgbW92
aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDMpOwotICBFWFBFQ1RfRVEoKm1vdmluZ19hdmVyYWdlLkdl
dEF2ZXJhZ2UoNCksIDIpOwotICBFWFBFQ1RfRVEoKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2Uo
MiksIDMpOwotICBFWFBFQ1RfRkFMU0UobW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZSgwKSk7Ci19
Ci0KLVRFU1QoTW92aW5nQXZlcmFnZVRlc3QsIFJlc2V0KSB7Ci0gIHdlYnJ0Yzo6TW92aW5nQXZl
cmFnZSBtb3ZpbmdfYXZlcmFnZSg1KTsKLSAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDEpOwot
ICBFWFBFQ1RfRVEoMSwgKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2UoMSkpOwotICBtb3Zpbmdf
YXZlcmFnZS5SZXNldCgpOwotICBFWFBFQ1RfRkFMU0UobW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFn
ZSgxKSk7Ci0gIEVYUEVDVF9GQUxTRShtb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlKDYpKTsKLX0K
LQotVEVTVChNb3ZpbmdBdmVyYWdlVGVzdCwgTWFueVNhbXBsZXMpIHsKLSAgd2VicnRjOjpNb3Zp
bmdBdmVyYWdlIG1vdmluZ19hdmVyYWdlKDEwKTsKLSAgZm9yIChpbnQgaSA9IDE7IGkgPCAxMTsg
aSsrKSB7Ci0gICAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKGkpOwotICB9Ci0gIEVYUEVDVF9F
USgqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZSgpLCA1KTsKLSAgbW92aW5nX2F2ZXJhZ2UuUmVz
ZXQoKTsKLSAgZm9yIChpbnQgaSA9IDE7IGkgPCAyMDAxOyBpKyspIHsKLSAgICBtb3ZpbmdfYXZl
cmFnZS5BZGRTYW1wbGUoaSk7Ci0gIH0KLSAgRVhQRUNUX0VRKCptb3ZpbmdfYXZlcmFnZS5HZXRB
dmVyYWdlKCksIDE5OTUpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3Nj
YWxlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0eV9zY2FsZXIuY2MKaW5kZXggZWExOWU0MThj
OWQ0ZTkyMWZjZTBjOTdkNmQ2YTkzNDMxZjZjZTcyNS4uMzJhZTE2NmE5YzY3N2EyMWNjMzk0NmYy
YTI2NTcyZjUyZDVkYjM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxl
ci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3F1YWxpdHlfc2NhbGVyLmNjCkBAIC0xNzMsOCArMTcz
LDggQEAgdm9pZCBRdWFsaXR5U2NhbGVyOjpDaGVja1FwKCkgewogICAvLyBJZiB3ZSBoYXZlIG5v
dCBvYnNlcnZlZCBhdCBsZWFzdCB0aGlzIG1hbnkgZnJhbWVzIHdlIGNhbid0IG1ha2UgYSBnb29k
CiAgIC8vIHNjYWxpbmcgZGVjaXNpb24uCiAgIGNvbnN0IHNpemVfdCBmcmFtZXMgPSBjb25maWdf
LnVzZV9hbGxfZHJvcF9yZWFzb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmcmFt
ZWRyb3BfcGVyY2VudF9hbGxfLnNpemUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
ZnJhbWVkcm9wX3BlcmNlbnRfbWVkaWFfb3B0Xy5zaXplKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBmcmFtZWRyb3BfcGVyY2VudF9hbGxfLlNpemUoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogZnJhbWVkcm9wX3BlcmNlbnRfbWVkaWFfb3B0Xy5TaXplKCk7CiAgIGlm
IChmcmFtZXMgPCBrTWluRnJhbWVzTmVlZGVkVG9TY2FsZSkgewogICAgIG9ic2VydmVkX2Vub3Vn
aF9mcmFtZXNfID0gZmFsc2U7CiAgICAgcmV0dXJuOwpAQCAtMTgzLDggKzE4Myw5IEBAIHZvaWQg
UXVhbGl0eVNjYWxlcjo6Q2hlY2tRcCgpIHsKIAogICAvLyBDaGVjayBpZiB3ZSBzaG91bGQgc2Nh
bGUgZG93biBkdWUgdG8gaGlnaCBmcmFtZSBkcm9wLgogICBjb25zdCBhYnNsOjpvcHRpb25hbDxp
bnQ+IGRyb3BfcmF0ZSA9Ci0gICAgICBjb25maWdfLnVzZV9hbGxfZHJvcF9yZWFzb25zID8gZnJh
bWVkcm9wX3BlcmNlbnRfYWxsXy5HZXRBdmVyYWdlKCkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBmcmFtZWRyb3BfcGVyY2VudF9tZWRpYV9vcHRfLkdldEF2ZXJhZ2UoKTsK
KyAgICAgIGNvbmZpZ18udXNlX2FsbF9kcm9wX3JlYXNvbnMKKyAgICAgICAgICA/IGZyYW1lZHJv
cF9wZXJjZW50X2FsbF8uR2V0QXZlcmFnZVJvdW5kZWREb3duKCkKKyAgICAgICAgICA6IGZyYW1l
ZHJvcF9wZXJjZW50X21lZGlhX29wdF8uR2V0QXZlcmFnZVJvdW5kZWREb3duKCk7CiAgIGlmIChk
cm9wX3JhdGUgJiYgKmRyb3BfcmF0ZSA+PSBrRnJhbWVkcm9wUGVyY2VudFRocmVzaG9sZCkgewog
ICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlJlcG9ydGluZyBoaWdoIFFQLCBmcmFtZWRyb3AgcGVy
Y2VudCAiIDw8ICpkcm9wX3JhdGU7CiAgICAgUmVwb3J0UXBIaWdoKCk7CkBAIC0xOTIsMTEgKzE5
MywxMiBAQCB2b2lkIFF1YWxpdHlTY2FsZXI6OkNoZWNrUXAoKSB7CiAgIH0KIAogICAvLyBDaGVj
ayBpZiB3ZSBzaG91bGQgc2NhbGUgdXAgb3IgZG93biBiYXNlZCBvbiBRUC4KLSAgY29uc3QgYWJz
bDo6b3B0aW9uYWw8aW50PiBhdmdfcXBfaGlnaCA9IHFwX3Ntb290aGVyX2hpZ2hfCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBxcF9zbW9vdGhlcl9oaWdo
Xy0+R2V0QXZnKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IGF2ZXJhZ2VfcXBfLkdldEF2ZXJhZ2UoKTsKKyAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50
PiBhdmdfcXBfaGlnaCA9CisgICAgICBxcF9zbW9vdGhlcl9oaWdoXyA/IHFwX3Ntb290aGVyX2hp
Z2hfLT5HZXRBdmcoKQorICAgICAgICAgICAgICAgICAgICAgICAgOiBhdmVyYWdlX3FwXy5HZXRB
dmVyYWdlUm91bmRlZERvd24oKTsKICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8aW50PiBhdmdfcXBf
bG93ID0KLSAgICAgIHFwX3Ntb290aGVyX2xvd18gPyBxcF9zbW9vdGhlcl9sb3dfLT5HZXRBdmco
KSA6IGF2ZXJhZ2VfcXBfLkdldEF2ZXJhZ2UoKTsKKyAgICAgIHFwX3Ntb290aGVyX2xvd18gPyBx
cF9zbW9vdGhlcl9sb3dfLT5HZXRBdmcoKQorICAgICAgICAgICAgICAgICAgICAgICA6IGF2ZXJh
Z2VfcXBfLkdldEF2ZXJhZ2VSb3VuZGVkRG93bigpOwogICBpZiAoYXZnX3FwX2hpZ2ggJiYgYXZn
X3FwX2xvdykgewogICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkNoZWNraW5nIGF2ZXJhZ2UgUVAg
IiA8PCAqYXZnX3FwX2hpZ2ggPDwgIiAoIgogICAgICAgICAgICAgICAgICAgICAgPDwgKmF2Z19x
cF9sb3cgPDwgIikuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0eV9zY2FsZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlk
ZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0eV9zY2FsZXIuaAppbmRleCAzMDkxZWJmMzZjNDJlOWQ5
NjcyOGUwMDdlNzE2NjQyYjdhNzcyMzllLi4yNzJjMDJlNTNhODAzODE1MTM0OTNkMTI3Mzk1NDY5
MzJmYjcxNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3F1YWxpdHlfc2NhbGVyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxlci5oCkBAIC0xNyw4ICsxNyw4IEBACiAjaW5j
bHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
dmlkZW9fZW5jb2Rlci5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1
aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9tb3Zp
bmdfYXZlcmFnZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL3F1YWxpdHlfc2Nh
bGluZ19leHBlcmltZW50LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX2F2
ZXJhZ2UuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyLmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNzksOSArNzksMTAgQEAgY2xhc3MgUXVhbGl0eVNjYWxl
ciB7CiAgIGNvbnN0IFZpZGVvRW5jb2Rlcjo6UXBUaHJlc2hvbGRzIHRocmVzaG9sZHNfOwogICBj
b25zdCBpbnQ2NF90IHNhbXBsaW5nX3BlcmlvZF9tc187CiAgIGJvb2wgZmFzdF9yYW1wdXBfIFJU
Q19HVUFSREVEX0JZKCZ0YXNrX2NoZWNrZXJfKTsKLSAgTW92aW5nQXZlcmFnZSBhdmVyYWdlX3Fw
XyBSVENfR1VBUkRFRF9CWSgmdGFza19jaGVja2VyXyk7Ci0gIE1vdmluZ0F2ZXJhZ2UgZnJhbWVk
cm9wX3BlcmNlbnRfbWVkaWFfb3B0XyBSVENfR1VBUkRFRF9CWSgmdGFza19jaGVja2VyXyk7Ci0g
IE1vdmluZ0F2ZXJhZ2UgZnJhbWVkcm9wX3BlcmNlbnRfYWxsXyBSVENfR1VBUkRFRF9CWSgmdGFz
a19jaGVja2VyXyk7CisgIHJ0Yzo6TW92aW5nQXZlcmFnZSBhdmVyYWdlX3FwXyBSVENfR1VBUkRF
RF9CWSgmdGFza19jaGVja2VyXyk7CisgIHJ0Yzo6TW92aW5nQXZlcmFnZSBmcmFtZWRyb3BfcGVy
Y2VudF9tZWRpYV9vcHRfCisgICAgICBSVENfR1VBUkRFRF9CWSgmdGFza19jaGVja2VyXyk7Cisg
IHJ0Yzo6TW92aW5nQXZlcmFnZSBmcmFtZWRyb3BfcGVyY2VudF9hbGxfIFJUQ19HVUFSREVEX0JZ
KCZ0YXNrX2NoZWNrZXJfKTsKIAogICAvLyBVc2VkIGJ5IFF1YWxpdHlTY2FsaW5nRXhwZXJpbWVu
dC4KICAgY29uc3QgYm9vbCBleHBlcmltZW50X2VuYWJsZWRfOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv
dXRpbGl0eS9xdWFsaXR5X3NjYWxlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0
eV9zY2FsZXJfdW5pdHRlc3QuY2MKaW5kZXggYjE3MDYyZGY1YzE1OGNhNWFmZGJiYTIyYTJhNzlk
Y2VlMzY2YTE3YS4uZWQ3OTM3OTkyOTc5YjMwYjViZmI2ODQ2NmYyNDAyN2YyMzAwY2M4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvdXRpbGl0eS9xdWFsaXR5X3NjYWxlcl91bml0dGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv
ZGluZy91dGlsaXR5L3F1YWxpdHlfc2NhbGVyX3VuaXR0ZXN0LmNjCkBAIC0yOCwxOSArMjgsMTgg
QEAgc3RhdGljIGNvbnN0IGludCBrTWluRnJhbWVzTmVlZGVkVG9TY2FsZSA9IDYwOyAgLy8gRnJv
bSBxdWFsaXR5X3NjYWxlci5jYy4KIHN0YXRpYyBjb25zdCBzaXplX3Qga0RlZmF1bHRUaW1lb3V0
TXMgPSAxNTA7CiB9ICAvLyBuYW1lc3BhY2UKIAotI2RlZmluZSBET19TWU5DKHEsIGJsb2NrKSAg
ICAgICAgICAgXAotICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJ0
Yzo6RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsgXAotICAgIHEtPlBvc3RUYXNrKFt0aGlzLCAm
ZXZlbnRdIHsgICAgXAotICAgICAgYmxvY2s7ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgZXZlbnQuU2V0KCk7ICAgICAgICAgICAgICAgICAgXAotICAgIH0pOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIFJUQ19DSEVDSyhldmVudC5XYWl0KDEwMDApKTsgICAgXAor
I2RlZmluZSBET19TWU5DKHEsIGJsb2NrKSAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIHJ0Yzo6RXZlbnQgZXZlbnQ7ICAgICAgICAgICAgXAorICAgIHEt
PlBvc3RUYXNrKFt0aGlzLCAmZXZlbnRdIHsgXAorICAgICAgYmxvY2s7ICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgZXZlbnQuU2V0KCk7ICAgICAgICAgICAgICAgXAorICAgIH0pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJUQ19DSEVDSyhldmVudC5XYWl0KDEwMDApKTsg
XAogICB9IHdoaWxlICgwKQogCiBjbGFzcyBNb2NrQWRhcHRhdGlvbk9ic2VydmVyIDogcHVibGlj
IEFkYXB0YXRpb25PYnNlcnZlckludGVyZmFjZSB7CiAgcHVibGljOgotICBNb2NrQWRhcHRhdGlv
bk9ic2VydmVyKCkgOiBldmVudChmYWxzZSwgZmFsc2UpIHt9CiAgIHZpcnR1YWwgfk1vY2tBZGFw
dGF0aW9uT2JzZXJ2ZXIoKSB7fQogCiAgIHZvaWQgQWRhcHRVcChBZGFwdFJlYXNvbiByKSBvdmVy
cmlkZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9jYXRv
cl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yX3Vu
aXR0ZXN0LmNjCmluZGV4IDdmNTQ5MzJhODEzZGRiNTE0MWM4ZDNiMTRmOGQxMzYyNzZhZDMwZTYu
LmJiZTNmMTlmYjczMjBkOWU2NDFlNTI4NmZlMzU4MTcyNDlmOWY1YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL3V0aWxpdHkvc2ltdWxjYXN0X3JhdGVfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjCkBAIC0xNSw4
ICsxNSw3IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFs
X2xheWVycy5oIgotCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9yYWxfbGF5
ZXJzLmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZ21v
Y2suaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCkBAIC0zNCw5ICszMyw5IEBAIGNvbnN0ZXhw
ciB1aW50MzJfdCBrTGVnYWN5U2NyZWVuc2hhcmVNYXhCaXRyYXRlS2JwcyA9IDEwMDA7CiBjb25z
dGV4cHIgdWludDMyX3Qga1NpbXVsY2FzdFNjcmVlbnNoYXJlTWluQml0cmF0ZUticHMgPSA2MDA7
CiBjb25zdGV4cHIgdWludDMyX3Qga1NpbXVsY2FzdFNjcmVlbnNoYXJlTWF4Qml0cmF0ZUticHMg
PSAxMjUwOwogCi1jbGFzcyBNb2NrVGVtcG9yYWxMYXllcnMgOiBwdWJsaWMgVGVtcG9yYWxMYXll
cnMgeworY2xhc3MgTW9ja1RlbXBvcmFsTGF5ZXJzIDogcHVibGljIFZwOFRlbXBvcmFsTGF5ZXJz
IHsKICBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShVcGRhdGVMYXllckNvbmZpZywgVGVtcG9yYWxM
YXllcnM6OkZyYW1lQ29uZmlnKHVpbnQzMl90KSk7CisgIE1PQ0tfTUVUSE9EMShVcGRhdGVMYXll
ckNvbmZpZywgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnKHVpbnQzMl90KSk7CiAgIE1P
Q0tfTUVUSE9EMihPblJhdGVzVXBkYXRlZCwgdm9pZChjb25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJf
dD4mLCBpbnQpKTsKICAgTU9DS19NRVRIT0QxKFVwZGF0ZUNvbmZpZ3VyYXRpb24sIGJvb2woVnA4
RW5jb2RlckNvbmZpZyopKTsKICAgTU9DS19NRVRIT0Q1KE9uRW5jb2RlRG9uZSwKQEAgLTQ0LDcg
KzQzLDcgQEAgY2xhc3MgTW9ja1RlbXBvcmFsTGF5ZXJzIDogcHVibGljIFRlbXBvcmFsTGF5ZXJz
IHsKICAgTU9DS19NRVRIT0QzKEZyYW1lRW5jb2RlZCwgdm9pZCh1aW50MzJfdCwgc2l6ZV90LCBp
bnQpKTsKICAgTU9DS19DT05TVF9NRVRIT0QwKFRsMFBpY0lkeCwgdWludDhfdCgpKTsKICAgTU9D
S19DT05TVF9NRVRIT0QxKEdldFRlbXBvcmFsTGF5ZXJJZCwKLSAgICAgICAgICAgICAgICAgICAg
IGludChjb25zdCBUZW1wb3JhbExheWVyczo6RnJhbWVDb25maWcmKSk7CisgICAgICAgICAgICAg
ICAgICAgICBpbnQoY29uc3QgVnA4VGVtcG9yYWxMYXllcnM6OkZyYW1lQ29uZmlnJikpOwogfTsK
IH0gIC8vIG5hbWVzcGFjZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF90
ZXN0X2ZpeHR1cmVfaW1wbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4dHVy
ZV9pbXBsLmNjCmluZGV4IDRhZjUyNmM2NjMxOWNkNzcyZGNlODFjNWEwYzk5YmYwNzUzYTQ0MGMu
Ljk5Mjc3M2VjYzYwOWVlZmQ4OTg2MTA3ODZmMjUyMmQwNmRiYzJmNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k
aW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9pbXBsLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0
aWxpdHkvc2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9pbXBsLmNjCkBAIC0xNSw5ICsxNSwxMCBAQAog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdmlk
ZW8vZW5jb2RlZF9pbWFnZS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVv
X2Zvcm1hdC5oIgotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgi
CiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIK
KyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29k
aW5nX2RlZmluZXMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJ0
ZXN0L2d0ZXN0LmgiCkBAIC04MTksNSArODIwLDY3IEBAIHZvaWQgU2ltdWxjYXN0VGVzdEZpeHR1
cmVJbXBsOjpUZXN0U3RyaWRlRW5jb2RlRGVjb2RlKCkgewogICBFWFBFQ1RfRVEoMiwgZGVjb2Rl
cl9jYWxsYmFjay5EZWNvZGVkRnJhbWVzKCkpOwogfQogCit2b2lkIFNpbXVsY2FzdFRlc3RGaXh0
dXJlSW1wbDo6VGVzdERlY29kZVdpZHRoSGVpZ2h0U2V0KCkgeworICBNb2NrRW5jb2RlZEltYWdl
Q2FsbGJhY2sgZW5jb2Rlcl9jYWxsYmFjazsKKyAgTW9ja0RlY29kZWRJbWFnZUNhbGxiYWNrIGRl
Y29kZXJfY2FsbGJhY2s7CisKKyAgRW5jb2RlZEltYWdlIGVuY29kZWRfZnJhbWVbM107CisgIFNl
dFJhdGVzKGtNYXhCaXRyYXRlc1syXSwgMzApOyAgLy8gVG8gZ2V0IGFsbCB0aHJlZSBzdHJlYW1z
LgorICBlbmNvZGVyXy0+UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKCZlbmNvZGVyX2Nh
bGxiYWNrKTsKKyAgZGVjb2Rlcl8tPlJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjaygmZGVj
b2Rlcl9jYWxsYmFjayk7CisKKyAgRVhQRUNUX0NBTEwoZW5jb2Rlcl9jYWxsYmFjaywgT25FbmNv
ZGVkSW1hZ2UoXywgXywgXykpCisgICAgICAuVGltZXMoMykKKyAgICAgIC5XaWxsUmVwZWF0ZWRs
eSgKKyAgICAgICAgICB0ZXN0aW5nOjpJbnZva2UoWyZdKGNvbnN0IEVuY29kZWRJbWFnZSYgZW5j
b2RlZF9pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3Bl
Y2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRhdGlvbikgeworICAg
ICAgICAgICAgRVhQRUNUX0VRKGVuY29kZWRfaW1hZ2UuX2ZyYW1lVHlwZSwga1ZpZGVvRnJhbWVL
ZXkpOworCisgICAgICAgICAgICBzaXplX3QgaW5kZXggPSBlbmNvZGVkX2ltYWdlLlNwYXRpYWxJ
bmRleCgpLnZhbHVlX29yKDApOworICAgICAgICAgICAgZW5jb2RlZF9mcmFtZVtpbmRleF0uX2J1
ZmZlciA9IG5ldyB1aW50OF90W2VuY29kZWRfaW1hZ2UuX3NpemVdOworICAgICAgICAgICAgZW5j
b2RlZF9mcmFtZVtpbmRleF0uX3NpemUgPSBlbmNvZGVkX2ltYWdlLl9zaXplOworICAgICAgICAg
ICAgZW5jb2RlZF9mcmFtZVtpbmRleF0uX2xlbmd0aCA9IGVuY29kZWRfaW1hZ2UuX2xlbmd0aDsK
KyAgICAgICAgICAgIGVuY29kZWRfZnJhbWVbaW5kZXhdLl9mcmFtZVR5cGUgPSBlbmNvZGVkX2lt
YWdlLl9mcmFtZVR5cGU7CisgICAgICAgICAgICBlbmNvZGVkX2ZyYW1lW2luZGV4XS5fY29tcGxl
dGVGcmFtZSA9IGVuY29kZWRfaW1hZ2UuX2NvbXBsZXRlRnJhbWU7CisgICAgICAgICAgICBtZW1j
cHkoZW5jb2RlZF9mcmFtZVtpbmRleF0uX2J1ZmZlciwgZW5jb2RlZF9pbWFnZS5fYnVmZmVyLAor
ICAgICAgICAgICAgICAgICAgIGVuY29kZWRfaW1hZ2UuX2xlbmd0aCk7CisgICAgICAgICAgICBy
ZXR1cm4gRW5jb2RlZEltYWdlQ2FsbGJhY2s6OlJlc3VsdCgKKyAgICAgICAgICAgICAgICBFbmNv
ZGVkSW1hZ2VDYWxsYmFjazo6UmVzdWx0OjpPSywgMCk7CisgICAgICAgICAgfSkpOworICBFWFBF
Q1RfRVEoMCwgZW5jb2Rlcl8tPkVuY29kZSgqaW5wdXRfZnJhbWVfLCBOVUxMLCBOVUxMKSk7CisK
KyAgRVhQRUNUX0NBTEwoZGVjb2Rlcl9jYWxsYmFjaywgRGVjb2RlZChfLCBfLCBfKSkKKyAgICAg
IC5XaWxsT25jZSh0ZXN0aW5nOjpJbnZva2UoW10oVmlkZW9GcmFtZSYgZGVjb2RlZEltYWdlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxpbnQzMl90
PiBkZWNvZGVfdGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6b3B0aW9uYWw8dWludDhfdD4gcXApIHsKKyAgICAgICAgRVhQRUNUX0VRKGRlY29kZWRJbWFn
ZS53aWR0aCgpLCBrRGVmYXVsdFdpZHRoIC8gNCk7CisgICAgICAgIEVYUEVDVF9FUShkZWNvZGVk
SW1hZ2UuaGVpZ2h0KCksIGtEZWZhdWx0SGVpZ2h0IC8gNCk7CisgICAgICB9KSk7CisgIEVYUEVD
VF9FUSgwLCBkZWNvZGVyXy0+RGVjb2RlKGVuY29kZWRfZnJhbWVbMF0sIGZhbHNlLCBOVUxMLCAw
KSk7CisKKyAgRVhQRUNUX0NBTEwoZGVjb2Rlcl9jYWxsYmFjaywgRGVjb2RlZChfLCBfLCBfKSkK
KyAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpJbnZva2UoW10oVmlkZW9GcmFtZSYgZGVjb2RlZElt
YWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxp
bnQzMl90PiBkZWNvZGVfdGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gcXApIHsKKyAgICAgICAgRVhQRUNUX0VRKGRlY29k
ZWRJbWFnZS53aWR0aCgpLCBrRGVmYXVsdFdpZHRoIC8gMik7CisgICAgICAgIEVYUEVDVF9FUShk
ZWNvZGVkSW1hZ2UuaGVpZ2h0KCksIGtEZWZhdWx0SGVpZ2h0IC8gMik7CisgICAgICB9KSk7Cisg
IEVYUEVDVF9FUSgwLCBkZWNvZGVyXy0+RGVjb2RlKGVuY29kZWRfZnJhbWVbMV0sIGZhbHNlLCBO
VUxMLCAwKSk7CisKKyAgRVhQRUNUX0NBTEwoZGVjb2Rlcl9jYWxsYmFjaywgRGVjb2RlZChfLCBf
LCBfKSkKKyAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpJbnZva2UoW10oVmlkZW9GcmFtZSYgZGVj
b2RlZEltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRp
b25hbDxpbnQzMl90PiBkZWNvZGVfdGltZV9tcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gcXApIHsKKyAgICAgICAgRVhQRUNUX0VR
KGRlY29kZWRJbWFnZS53aWR0aCgpLCBrRGVmYXVsdFdpZHRoKTsKKyAgICAgICAgRVhQRUNUX0VR
KGRlY29kZWRJbWFnZS5oZWlnaHQoKSwga0RlZmF1bHRIZWlnaHQpOworICAgICAgfSkpOworICBF
WFBFQ1RfRVEoMCwgZGVjb2Rlcl8tPkRlY29kZShlbmNvZGVkX2ZyYW1lWzJdLCBmYWxzZSwgTlVM
TCwgMCkpOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgZGVsZXRlIFtd
IGVuY29kZWRfZnJhbWVbaV0uX2J1ZmZlcjsKKyAgfQorfQorCiB9ICAvLyBuYW1lc3BhY2UgdGVz
dAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11
bGNhc3RfdGVzdF9maXh0dXJlX2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0X3Rlc3Rf
Zml4dHVyZV9pbXBsLmgKaW5kZXggNjYzNGE2OWFkMWNhNTQzNDAyZjdlM2ZlZjA5NDExYjdjZTI2
ZTgwMC4uMmY4MzRiZGZiNTVmYzI0MzliMjg4OGZhMjlhMjFlMjZkOTg5OGE4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRl
b19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2ltcGwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy91dGlsaXR5L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmVfaW1wbC5oCkBAIC0xNCw2ICsxNCw4IEBA
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS90
ZXN0L21vY2tfdmlkZW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgImFwaS90ZXN0L21vY2tfdmlkZW9f
ZW5jb2Rlci5oIgogI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUuaCIK
ICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8v
dmlkZW9fZnJhbWUuaCIKQEAgLTIxLDcgKzIzLDYgQEAKICNpbmNsdWRlICJhcGkvdmlkZW9fY29k
ZWNzL3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAg
Ly8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
dXRpbGl0eS9zaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy9pbmNsdWRlL21vY2svbW9ja192aWRlb19jb2RlY19pbnRlcmZhY2UuaCIKIAog
bmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CkBAIC01MCw2ICs1MSw3IEBAIGNs
YXNzIFNpbXVsY2FzdFRlc3RGaXh0dXJlSW1wbCBmaW5hbCA6IHB1YmxpYyBTaW11bGNhc3RUZXN0
Rml4dHVyZSB7CiAgIHZvaWQgVGVzdFNwYXRpb1RlbXBvcmFsTGF5ZXJzMzMzUGF0dGVybkVuY29k
ZXIoKSBvdmVycmlkZTsKICAgdm9pZCBUZXN0U3BhdGlvVGVtcG9yYWxMYXllcnMzMjFQYXR0ZXJu
RW5jb2RlcigpIG92ZXJyaWRlOwogICB2b2lkIFRlc3RTdHJpZGVFbmNvZGVEZWNvZGUoKSBvdmVy
cmlkZTsKKyAgdm9pZCBUZXN0RGVjb2RlV2lkdGhIZWlnaHRTZXQoKSBvdmVycmlkZTsKIAogICBz
dGF0aWMgdm9pZCBEZWZhdWx0U2V0dGluZ3MoVmlkZW9Db2RlYyogc2V0dGluZ3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIHRlbXBvcmFsX2xheWVyX3Byb2ZpbGUs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19pbml0aWFsaXplci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3Zp
ZGVvX2NvZGVjX2luaXRpYWxpemVyLmNjCmluZGV4IGU3MTI1Y2UyNzgyMzEzZjhmYmMyNjA2Yjk2
ZGJlNDZhYjNlYzRlNWMuLjg2YTVhYjJhNDgyMDk5NGZkNzQwMjg3NGU5ZjM0ZjJiYmUyZWYzODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGVjX2luaXRpYWxpemVyLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5n
L3ZpZGVvX2NvZGVjX2luaXRpYWxpemVyLmNjCkBAIC0yNCwxNSArMjQsMTMgQEAKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKLWJvb2wgVmlkZW9Db2RlY0luaXRpYWxpemVyOjpTZXR1cENvZGVjKAot
ICAgIGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZyYgY29uZmlnLAotICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPFZpZGVvU3RyZWFtPiYgc3RyZWFtcywKLSAgICBWaWRlb0NvZGVjKiBjb2RlYywKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiogYml0cmF0ZV9hbGxvY2F0b3Ip
IHsKK2Jvb2wgVmlkZW9Db2RlY0luaXRpYWxpemVyOjpTZXR1cENvZGVjKGNvbnN0IFZpZGVvRW5j
b2RlckNvbmZpZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9TdHJlYW0+JiBzdHJlYW1zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9Db2RlYyogY29kZWMpIHsKICAgaWYgKGNv
bmZpZy5jb2RlY190eXBlID09IGtWaWRlb0NvZGVjTXVsdGlwbGV4KSB7CiAgICAgVmlkZW9FbmNv
ZGVyQ29uZmlnIGFzc29jaWF0ZWRfY29uZmlnID0gY29uZmlnLkNvcHkoKTsKICAgICBhc3NvY2lh
dGVkX2NvbmZpZy5jb2RlY190eXBlID0ga1ZpZGVvQ29kZWNWUDk7Ci0gICAgaWYgKCFTZXR1cENv
ZGVjKGFzc29jaWF0ZWRfY29uZmlnLCBzdHJlYW1zLCBjb2RlYywgYml0cmF0ZV9hbGxvY2F0b3Ip
KSB7CisgICAgaWYgKCFTZXR1cENvZGVjKGFzc29jaWF0ZWRfY29uZmlnLCBzdHJlYW1zLCBjb2Rl
YykpIHsKICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIHN0ZXJl
byBlbmNvZGVyIGNvbmZpZ3VyYXRpb24uIjsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC00MSwzMSArMzksOSBAQCBib29sIFZpZGVvQ29kZWNJbml0aWFsaXplcjo6U2V0dXBDb2RlYygK
ICAgfQogCiAgICpjb2RlYyA9IFZpZGVvRW5jb2RlckNvbmZpZ1RvVmlkZW9Db2RlYyhjb25maWcs
IHN0cmVhbXMpOwotICAqYml0cmF0ZV9hbGxvY2F0b3IgPSBDcmVhdGVCaXRyYXRlQWxsb2NhdG9y
KCpjb2RlYyk7Ci0KICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Jp
dHJhdGVBbGxvY2F0b3I+Ci1WaWRlb0NvZGVjSW5pdGlhbGl6ZXI6OkNyZWF0ZUJpdHJhdGVBbGxv
Y2F0b3IoY29uc3QgVmlkZW9Db2RlYyYgY29kZWMpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
Qml0cmF0ZUFsbG9jYXRvcj4gcmF0ZV9hbGxvY2F0b3I7Ci0KLSAgc3dpdGNoIChjb2RlYy5jb2Rl
Y1R5cGUpIHsKLSAgICBjYXNlIGtWaWRlb0NvZGVjVlA4OgotICAgICAgUlRDX0ZBTExUSFJPVUdI
KCk7Ci0gICAgY2FzZSBrVmlkZW9Db2RlY0gyNjQ6Ci0gICAgICByYXRlX2FsbG9jYXRvci5yZXNl
dChuZXcgU2ltdWxjYXN0UmF0ZUFsbG9jYXRvcihjb2RlYykpOwotICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBrVmlkZW9Db2RlY1ZQOToKLSAgICAgIHJhdGVfYWxsb2NhdG9yLnJlc2V0KG5ldyBTdmNS
YXRlQWxsb2NhdG9yKGNvZGVjKSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
cmF0ZV9hbGxvY2F0b3IucmVzZXQobmV3IERlZmF1bHRWaWRlb0JpdHJhdGVBbGxvY2F0b3IoY29k
ZWMpKTsKLSAgfQotCi0gIHJldHVybiByYXRlX2FsbG9jYXRvcjsKLX0KLQogLy8gVE9ETyhzcHJh
bmcpOiBTcGxpdCB0aGlzIHVwIGFuZCBzZXBhcmF0ZSB0aGUgY29kZWMgc3BlY2lmaWMgcGFydHMu
CiBWaWRlb0NvZGVjIFZpZGVvQ29kZWNJbml0aWFsaXplcjo6VmlkZW9FbmNvZGVyQ29uZmlnVG9W
aWRlb0NvZGVjKAogICAgIGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZyYgY29uZmlnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92
aWRlb19jb2RpbmcvdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92
aWRlb19jb2RlY19pbml0aWFsaXplcl91bml0dGVzdC5jYwppbmRleCBmYjYwMWYwZDQyOTllYzk1
MmMyZjQ2NTc2MDZiYmQ2MThmNWJkZTIzLi5jZWZmMWViYWY3NDI3YmY5MjhmZTdlNmFkYmUwM2M1
MzBhMTg3Y2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19pbml0aWFsaXplcl91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RlY19pbml0aWFsaXplcl91bml0dGVzdC5jYwpA
QCAtOSwxMSArOSwxMyBAQAogICovCiAKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9p
bmNsdWRlL3ZpZGVvX2NvZGVjX2luaXRpYWxpemVyLmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVvL3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlk
ZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS92aWRlb19jb2Rl
Y3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29k
ZWNzL3ZpZGVvX2VuY29kZXIuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1w
b3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWls
ZC9pbmNsdWRlKQotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5j
bHVkZS92cDhfdGVtcG9yYWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL3ZwOS9pbmNsdWRlL3ZwOV9nbG9iYWxzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgogI2luY2x1
ZGUgInRlc3QvZ3Rlc3QuaCIKIApAQCAtNzQsMjEgKzc2LDIyIEBAIGNsYXNzIFZpZGVvQ29kZWNJ
bml0aWFsaXplclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIAogICBib29sIEluaXRp
YWxpemVDb2RlYygpIHsKICAgICBjb2RlY19vdXRfID0gVmlkZW9Db2RlYygpOwotICAgIGJpdHJh
dGVfYWxsb2NhdG9yX291dF8ucmVzZXQoKTsKICAgICB0ZW1wb3JhbF9sYXllcnNfLmNsZWFyKCk7
Ci0gICAgaWYgKCFWaWRlb0NvZGVjSW5pdGlhbGl6ZXI6OlNldHVwQ29kZWMoY29uZmlnXywgc3Ry
ZWFtc18sICZjb2RlY19vdXRfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZiaXRyYXRlX2FsbG9jYXRvcl9vdXRfKSkgeworICAgIGlmICghVmlkZW9Db2RlY0lu
aXRpYWxpemVyOjpTZXR1cENvZGVjKGNvbmZpZ18sIHN0cmVhbXNfLCAmY29kZWNfb3V0XykpIHsK
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgYml0cmF0ZV9hbGxvY2F0b3JfID0gQ3Jl
YXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3RvcnkoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtPkNyZWF0ZVZpZGVvQml0cmF0ZUFsbG9jYXRvcihjb2RlY19vdXRfKTsK
KyAgICBSVENfQ0hFQ0soYml0cmF0ZV9hbGxvY2F0b3JfKTsKICAgICBpZiAoY29kZWNfb3V0Xy5j
b2RlY1R5cGUgPT0gVmlkZW9Db2RlY1R5cGU6OmtWaWRlb0NvZGVjTXVsdGlwbGV4KQogICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAvLyBNYWtlIHN1cmUgdGVtcG9yYWwgbGF5ZXJzIGluc3RhbmNl
cyBoYXZlIGJlZW4gY3JlYXRlZC4KICAgICBpZiAoY29kZWNfb3V0Xy5jb2RlY1R5cGUgPT0gVmlk
ZW9Db2RlY1R5cGU6OmtWaWRlb0NvZGVjVlA4KSB7CiAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGNvZGVjX291dF8ubnVtYmVyT2ZTaW11bGNhc3RTdHJlYW1zOyArK2kpIHsKLSAgICAgICAgdGVt
cG9yYWxfbGF5ZXJzXy5lbXBsYWNlX2JhY2soVGVtcG9yYWxMYXllcnM6OkNyZWF0ZVRlbXBvcmFs
TGF5ZXJzKAotICAgICAgICAgICAgVGVtcG9yYWxMYXllcnNUeXBlOjprRml4ZWRQYXR0ZXJuLAot
ICAgICAgICAgICAgY29kZWNfb3V0Xy5WUDgoKS0+bnVtYmVyT2ZUZW1wb3JhbExheWVycykpOwor
ICAgICAgICB0ZW1wb3JhbF9sYXllcnNfLmVtcGxhY2VfYmFjaygKKyAgICAgICAgICAgIENyZWF0
ZVZwOFRlbXBvcmFsTGF5ZXJzKFZwOFRlbXBvcmFsTGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjX291dF8uVlA4KCktPm51
bWJlck9mVGVtcG9yYWxMYXllcnMpKTsKICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMjUsOCArMTI4LDggQEAgY2xhc3MgVmlkZW9Db2RlY0luaXRpYWxpemVyVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogCiAgIC8vIE91dHB1dC4KICAgVmlkZW9Db2RlYyBjb2Rl
Y19vdXRfOwotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yPiBiaXRyYXRl
X2FsbG9jYXRvcl9vdXRfOwotICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VGVtcG9yYWxM
YXllcnM+PiB0ZW1wb3JhbF9sYXllcnNfOworICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRl
QWxsb2NhdG9yPiBiaXRyYXRlX2FsbG9jYXRvcl87CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxWcDhUZW1wb3JhbExheWVycz4+IHRlbXBvcmFsX2xheWVyc187CiB9OwogCiBURVNUX0Yo
VmlkZW9Db2RlY0luaXRpYWxpemVyVGVzdCwgU2luZ2xlU3RyZWFtVnA4U2NyZWVuc2hhcmUpIHsK
QEAgLTEzNCw5ICsxMzcsOCBAQCBURVNUX0YoVmlkZW9Db2RlY0luaXRpYWxpemVyVGVzdCwgU2lu
Z2xlU3RyZWFtVnA4U2NyZWVuc2hhcmUpIHsKICAgc3RyZWFtc18ucHVzaF9iYWNrKERlZmF1bHRT
dHJlYW0oKSk7CiAgIEVYUEVDVF9UUlVFKEluaXRpYWxpemVDb2RlYygpKTsKIAotICBWaWRlb0Jp
dHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbiA9Ci0gICAgICBiaXRyYXRlX2FsbG9j
YXRvcl9vdXRfLT5HZXRBbGxvY2F0aW9uKGtEZWZhdWx0VGFyZ2V0Qml0cmF0ZUJwcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRGcmFtZVJhdGUp
OworICBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbiA9IGJpdHJhdGVf
YWxsb2NhdG9yXy0+R2V0QWxsb2NhdGlvbigKKyAgICAgIGtEZWZhdWx0VGFyZ2V0Qml0cmF0ZUJw
cywga0RlZmF1bHRGcmFtZVJhdGUpOwogICBFWFBFQ1RfRVEoMXUsIGNvZGVjX291dF8ubnVtYmVy
T2ZTaW11bGNhc3RTdHJlYW1zKTsKICAgRVhQRUNUX0VRKDF1LCBjb2RlY19vdXRfLlZQOCgpLT5u
dW1iZXJPZlRlbXBvcmFsTGF5ZXJzKTsKICAgRVhQRUNUX0VRKGtEZWZhdWx0VGFyZ2V0Qml0cmF0
ZUJwcywgYml0cmF0ZV9hbGxvY2F0aW9uLmdldF9zdW1fYnBzKCkpOwpAQCAtMTQ5LDkgKzE1MSw4
IEBAIFRFU1RfRihWaWRlb0NvZGVjSW5pdGlhbGl6ZXJUZXN0LCBTaW5nbGVTdHJlYW1WcDhTY3Jl
ZW5zaGFyZUluYWN0aXZlKSB7CiAgIHN0cmVhbXNfLnB1c2hfYmFjayhpbmFjdGl2ZV9zdHJlYW0p
OwogICBFWFBFQ1RfVFJVRShJbml0aWFsaXplQ29kZWMoKSk7CiAKLSAgVmlkZW9CaXRyYXRlQWxs
b2NhdGlvbiBiaXRyYXRlX2FsbG9jYXRpb24gPQotICAgICAgYml0cmF0ZV9hbGxvY2F0b3Jfb3V0
Xy0+R2V0QWxsb2NhdGlvbihrRGVmYXVsdFRhcmdldEJpdHJhdGVCcHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0RnJhbWVSYXRlKTsKKyAgVmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRyYXRlX2FsbG9jYXRpb24gPSBiaXRyYXRlX2FsbG9jYXRv
cl8tPkdldEFsbG9jYXRpb24oCisgICAgICBrRGVmYXVsdFRhcmdldEJpdHJhdGVCcHMsIGtEZWZh
dWx0RnJhbWVSYXRlKTsKICAgRVhQRUNUX0VRKDF1LCBjb2RlY19vdXRfLm51bWJlck9mU2ltdWxj
YXN0U3RyZWFtcyk7CiAgIEVYUEVDVF9FUSgxdSwgY29kZWNfb3V0Xy5WUDgoKS0+bnVtYmVyT2ZU
ZW1wb3JhbExheWVycyk7CiAgIEVYUEVDVF9FUSgwVSwgYml0cmF0ZV9hbGxvY2F0aW9uLmdldF9z
dW1fYnBzKCkpOwpAQCAtMTY0LDkgKzE2NSw4IEBAIFRFU1RfRihWaWRlb0NvZGVjSW5pdGlhbGl6
ZXJUZXN0LCBUZW1wb3JhbExheWVyZWRWcDhTY3JlZW5zaGFyZSkgewogCiAgIEVYUEVDVF9FUSgx
dSwgY29kZWNfb3V0Xy5udW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMpOwogICBFWFBFQ1RfRVEoMnUs
IGNvZGVjX291dF8uVlA4KCktPm51bWJlck9mVGVtcG9yYWxMYXllcnMpOwotICBWaWRlb0JpdHJh
dGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbiA9Ci0gICAgICBiaXRyYXRlX2FsbG9jYXRv
cl9vdXRfLT5HZXRBbGxvY2F0aW9uKGtTY3JlZW5zaGFyZUNvZGVjVGFyZ2V0Qml0cmF0ZUJwcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1NjcmVlbnNoYXJl
RGVmYXVsdEZyYW1lcmF0ZSk7CisgIFZpZGVvQml0cmF0ZUFsbG9jYXRpb24gYml0cmF0ZV9hbGxv
Y2F0aW9uID0gYml0cmF0ZV9hbGxvY2F0b3JfLT5HZXRBbGxvY2F0aW9uKAorICAgICAga1NjcmVl
bnNoYXJlQ29kZWNUYXJnZXRCaXRyYXRlQnBzLCBrU2NyZWVuc2hhcmVEZWZhdWx0RnJhbWVyYXRl
KTsKICAgRVhQRUNUX0VRKGtTY3JlZW5zaGFyZUNvZGVjVGFyZ2V0Qml0cmF0ZUJwcywKICAgICAg
ICAgICAgIGJpdHJhdGVfYWxsb2NhdGlvbi5nZXRfc3VtX2JwcygpKTsKICAgRVhQRUNUX0VRKGtT
Y3JlZW5zaGFyZVRsMEJpdHJhdGVCcHMsIGJpdHJhdGVfYWxsb2NhdGlvbi5HZXRCaXRyYXRlKDAs
IDApKTsKQEAgLTE4NCw5ICsxODQsOCBAQCBURVNUX0YoVmlkZW9Db2RlY0luaXRpYWxpemVyVGVz
dCwgU2ltdWxjYXN0VnA4U2NyZWVuc2hhcmUpIHsKICAgRVhQRUNUX0VRKDF1LCBjb2RlY19vdXRf
LlZQOCgpLT5udW1iZXJPZlRlbXBvcmFsTGF5ZXJzKTsKICAgY29uc3QgdWludDMyX3QgbWF4X2Jp
dHJhdGVfYnBzID0KICAgICAgIHN0cmVhbXNfWzBdLnRhcmdldF9iaXRyYXRlX2JwcyArIHN0cmVh
bXNfWzFdLm1heF9iaXRyYXRlX2JwczsKLSAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRyYXRl
X2FsbG9jYXRpb24gPQotICAgICAgYml0cmF0ZV9hbGxvY2F0b3Jfb3V0Xy0+R2V0QWxsb2NhdGlv
bihtYXhfYml0cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtTY3JlZW5zaGFyZURlZmF1bHRGcmFtZXJhdGUpOworICBWaWRlb0JpdHJhdGVBbGxv
Y2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbiA9IGJpdHJhdGVfYWxsb2NhdG9yXy0+R2V0QWxsb2Nh
dGlvbigKKyAgICAgIG1heF9iaXRyYXRlX2Jwcywga1NjcmVlbnNoYXJlRGVmYXVsdEZyYW1lcmF0
ZSk7CiAgIEVYUEVDVF9FUShtYXhfYml0cmF0ZV9icHMsIGJpdHJhdGVfYWxsb2NhdGlvbi5nZXRf
c3VtX2JwcygpKTsKICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdHJlYW1zX1sw
XS50YXJnZXRfYml0cmF0ZV9icHMpLAogICAgICAgICAgICAgYml0cmF0ZV9hbGxvY2F0aW9uLkdl
dFNwYXRpYWxMYXllclN1bSgwKSk7CkBAIC0yMDksOSArMjA4LDggQEAgVEVTVF9GKFZpZGVvQ29k
ZWNJbml0aWFsaXplclRlc3QsIFNpbXVsY2FzdFZwOFNjcmVlbnNoYXJlSW5hY3RpdmUpIHsKICAg
RVhQRUNUX0VRKDF1LCBjb2RlY19vdXRfLlZQOCgpLT5udW1iZXJPZlRlbXBvcmFsTGF5ZXJzKTsK
ICAgY29uc3QgdWludDMyX3QgdGFyZ2V0X2JpdHJhdGUgPQogICAgICAgc3RyZWFtc19bMF0udGFy
Z2V0X2JpdHJhdGVfYnBzICsgc3RyZWFtc19bMV0udGFyZ2V0X2JpdHJhdGVfYnBzOwotICBWaWRl
b0JpdHJhdGVBbGxvY2F0aW9uIGJpdHJhdGVfYWxsb2NhdGlvbiA9Ci0gICAgICBiaXRyYXRlX2Fs
bG9jYXRvcl9vdXRfLT5HZXRBbGxvY2F0aW9uKHRhcmdldF9iaXRyYXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrU2NyZWVuc2hhcmVEZWZhdWx0RnJhbWVy
YXRlKTsKKyAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRyYXRlX2FsbG9jYXRpb24gPSBiaXRy
YXRlX2FsbG9jYXRvcl8tPkdldEFsbG9jYXRpb24oCisgICAgICB0YXJnZXRfYml0cmF0ZSwga1Nj
cmVlbnNoYXJlRGVmYXVsdEZyYW1lcmF0ZSk7CiAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1aW50
MzJfdD4oc3RyZWFtc19bMF0ubWF4X2JpdHJhdGVfYnBzKSwKICAgICAgICAgICAgIGJpdHJhdGVf
YWxsb2NhdGlvbi5nZXRfc3VtX2JwcygpKTsKICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihzdHJlYW1zX1swXS5tYXhfYml0cmF0ZV9icHMpLApAQCAtMjM0LDcgKzIzMiw3IEBAIFRF
U1RfRihWaWRlb0NvZGVjSW5pdGlhbGl6ZXJUZXN0LCBIaWdoRnBzU2ltdWxjYXN0VnA4U2NyZWVu
c2hhcmUpIHsKICAgY29uc3QgdWludDMyX3QgbWF4X2JpdHJhdGVfYnBzID0KICAgICAgIHN0cmVh
bXNfWzBdLnRhcmdldF9iaXRyYXRlX2JwcyArIHN0cmVhbXNfWzFdLm1heF9iaXRyYXRlX2JwczsK
ICAgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBiaXRyYXRlX2FsbG9jYXRpb24gPQotICAgICAgYml0
cmF0ZV9hbGxvY2F0b3Jfb3V0Xy0+R2V0QWxsb2NhdGlvbihtYXhfYml0cmF0ZV9icHMsIGtEZWZh
dWx0RnJhbWVSYXRlKTsKKyAgICAgIGJpdHJhdGVfYWxsb2NhdG9yXy0+R2V0QWxsb2NhdGlvbiht
YXhfYml0cmF0ZV9icHMsIGtEZWZhdWx0RnJhbWVSYXRlKTsKICAgRVhQRUNUX0VRKG1heF9iaXRy
YXRlX2JwcywgYml0cmF0ZV9hbGxvY2F0aW9uLmdldF9zdW1fYnBzKCkpOwogICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0cmVhbXNfWzBdLnRhcmdldF9iaXRyYXRlX2JwcyksCiAg
ICAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRpb24uR2V0U3BhdGlhbExheWVyU3VtKDApKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2NvZGluZ19pbXBsLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kaW5n
X2ltcGwuY2MKaW5kZXggYTA2MWMxOGZkNzBlMjIyZWNjY2I3NDJmYTA3NWRmMzE1MTZjMjUwOS4u
NTgzOTdhZDM4NmQzMjIxZTAzZmI3MmI2ZGJmZTA3MTY1NzhjODNiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvdmlkZW9fY29kaW5nX2ltcGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kaW5nX2ltcGwuY2MK
QEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8dXRpbGl0
eT4KIAorI2luY2x1ZGUgImFwaS92aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQog
I2luY2x1ZGUgImNvbW1vbl92aWRlby9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCkBA
IC0yNywxMCArMjgsNiBAQAogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2Nr
LmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotRXZlbnRXcmFwcGVyKiBFdmVudEZhY3RvcnlJbXBs
OjpDcmVhdGVFdmVudCgpIHsKLSAgcmV0dXJuIEV2ZW50V3JhcHBlcjo6Q3JlYXRlKCk7Ci19Ci0K
IG5hbWVzcGFjZSB2Y20gewogCiBpbnQ2NF90IFZDTVByb2Nlc3NUaW1lcjo6UGVyaW9kKCkgY29u
c3QgewpAQCAtODEsMTcgKzc4LDEzIEBAIGNsYXNzIEVuY29kZWRJbWFnZUNhbGxiYWNrV3JhcHBl
ciA6IHB1YmxpYyBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7CiBjbGFzcyBWaWRlb0NvZGluZ01vZHVs
ZUltcGwgOiBwdWJsaWMgVmlkZW9Db2RpbmdNb2R1bGUgewogIHB1YmxpYzoKICAgVmlkZW9Db2Rp
bmdNb2R1bGVJbXBsKENsb2NrKiBjbG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50
RmFjdG9yeSogZXZlbnRfZmFjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgIE5hY2tTZW5k
ZXIqIG5hY2tfc2VuZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgS2V5RnJhbWVSZXF1ZXN0
U2VuZGVyKiBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcikKICAgICAgIDogVmlkZW9Db2RpbmdNb2R1
bGUoKSwKICAgICAgICAgc2VuZGVyXyhjbG9jaywgJnBvc3RfZW5jb2RlX2NhbGxiYWNrXyksCisg
ICAgICAgIHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfKENyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVB
bGxvY2F0b3JGYWN0b3J5KCkpLAogICAgICAgICB0aW1pbmdfKG5ldyBWQ01UaW1pbmcoY2xvY2sp
KSwKLSAgICAgICAgcmVjZWl2ZXJfKGNsb2NrLAotICAgICAgICAgICAgICAgICAgZXZlbnRfZmFj
dG9yeSwKLSAgICAgICAgICAgICAgICAgIHRpbWluZ18uZ2V0KCksCi0gICAgICAgICAgICAgICAg
ICBuYWNrX3NlbmRlciwKLSAgICAgICAgICAgICAgICAgIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVy
KSB7fQorICAgICAgICByZWNlaXZlcl8oY2xvY2ssIHRpbWluZ18uZ2V0KCksIG5hY2tfc2VuZGVy
LCBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcikge30KIAogICB2aXJ0dWFsIH5WaWRlb0NvZGluZ01v
ZHVsZUltcGwoKSB7fQogCkBAIC0xMTQsNyArMTA3LDggQEAgY2xhc3MgVmlkZW9Db2RpbmdNb2R1
bGVJbXBsIDogcHVibGljIFZpZGVvQ29kaW5nTW9kdWxlIHsKICAgICAgIC8vIGFzeW5jaHJvbm91
c2x5IGtlZXAgdGhlIGluc3RhbmNlIGFsaXZlIHVudGlsIGRlc3RydWN0aW9uIG9yIHVudGlsIGEK
ICAgICAgIC8vIG5ldyBzZW5kIGNvZGVjIGlzIHJlZ2lzdGVyZWQuCiAgICAgICBWaWRlb0NvZGVj
IGNvZGVjID0gKnNlbmRDb2RlYzsKLSAgICAgIHJhdGVfYWxsb2NhdG9yXyA9IFZpZGVvQ29kZWNJ
bml0aWFsaXplcjo6Q3JlYXRlQml0cmF0ZUFsbG9jYXRvcihjb2RlYyk7CisgICAgICByYXRlX2Fs
bG9jYXRvcl8gPQorICAgICAgICAgIHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnlfLT5DcmVhdGVWaWRl
b0JpdHJhdGVBbGxvY2F0b3IoY29kZWMpOwogICAgICAgcmV0dXJuIHNlbmRlcl8uUmVnaXN0ZXJT
ZW5kQ29kZWMoJmNvZGVjLCBudW1iZXJPZkNvcmVzLCBtYXhQYXlsb2FkU2l6ZSk7CiAgICAgfQog
ICAgIHJldHVybiBzZW5kZXJfLlJlZ2lzdGVyU2VuZENvZGVjKHNlbmRDb2RlYywgbnVtYmVyT2ZD
b3JlcywgbWF4UGF5bG9hZFNpemUpOwpAQCAtMTQyLDcgKzEzNiw3IEBAIGNsYXNzIFZpZGVvQ29k
aW5nTW9kdWxlSW1wbCA6IHB1YmxpYyBWaWRlb0NvZGluZ01vZHVsZSB7CiAKICAgaW50MzJfdCBB
ZGRWaWRlb0ZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNTcGVjaWZpY0luZm8pIG92
ZXJyaWRlIHsKLSAgICByZXR1cm4gc2VuZGVyXy5BZGRWaWRlb0ZyYW1lKHZpZGVvRnJhbWUsIGNv
ZGVjU3BlY2lmaWNJbmZvKTsKKyAgICByZXR1cm4gc2VuZGVyXy5BZGRWaWRlb0ZyYW1lKHZpZGVv
RnJhbWUsIGNvZGVjU3BlY2lmaWNJbmZvLCBhYnNsOjpudWxsb3B0KTsKICAgfQogCiAgIGludDMy
X3QgSW50cmFGcmFtZVJlcXVlc3Qoc2l6ZV90IHN0cmVhbV9pbmRleCkgb3ZlcnJpZGUgewpAQCAt
MjEzLDE5ICsyMDcsMTggQEAgY2xhc3MgVmlkZW9Db2RpbmdNb2R1bGVJbXBsIDogcHVibGljIFZp
ZGVvQ29kaW5nTW9kdWxlIHsKICAgcnRjOjpUaHJlYWRDaGVja2VyIGNvbnN0cnVjdGlvbl90aHJl
YWRfOwogICBFbmNvZGVkSW1hZ2VDYWxsYmFja1dyYXBwZXIgcG9zdF9lbmNvZGVfY2FsbGJhY2tf
OwogICB2Y206OlZpZGVvU2VuZGVyIHNlbmRlcl87CisgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PiByYXRlX2FsbG9jYXRvcl9mYWN0b3J5XzsKICAg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvcj4gcmF0ZV9hbGxvY2F0b3JfOwot
ICBzdGQ6OnVuaXF1ZV9wdHI8VkNNVGltaW5nPiB0aW1pbmdfOworICBjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8VkNNVGltaW5nPiB0aW1pbmdfOwogICB2Y206OlZpZGVvUmVjZWl2ZXIgcmVjZWl2ZXJf
OwogfTsKIH0gIC8vIG5hbWVzcGFjZQogCiAvLyBERVBSRUNBVEVELiAgQ3JlYXRlIG1ldGhvZCBm
b3IgY3VycmVudCBpbnRlcmZhY2UsIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIHRoZQogLy8gbmV3IGpp
dHRlciBidWZmZXIgaXMgaW4gcGxhY2UuCi1WaWRlb0NvZGluZ01vZHVsZSogVmlkZW9Db2RpbmdN
b2R1bGU6OkNyZWF0ZShDbG9jayogY2xvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFdmVudEZhY3RvcnkqIGV2ZW50X2ZhY3RvcnkpIHsKK1ZpZGVvQ29k
aW5nTW9kdWxlKiBWaWRlb0NvZGluZ01vZHVsZTo6Q3JlYXRlKENsb2NrKiBjbG9jaykgewogICBS
VENfRENIRUNLKGNsb2NrKTsKLSAgUlRDX0RDSEVDSyhldmVudF9mYWN0b3J5KTsKLSAgcmV0dXJu
IG5ldyBWaWRlb0NvZGluZ01vZHVsZUltcGwoY2xvY2ssIGV2ZW50X2ZhY3RvcnksIG51bGxwdHIs
IG51bGxwdHIpOworICByZXR1cm4gbmV3IFZpZGVvQ29kaW5nTW9kdWxlSW1wbChjbG9jaywgbnVs
bHB0ciwgbnVsbHB0cik7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9f
Y29kaW5nL3ZpZGVvX2NvZGluZ19pbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19jb2RpbmdfaW1wbC5oCmlu
ZGV4IDNjMDlmOTZlMjY5ZjlmYzBhYTNlNGQwYzE0OGZjMmQyMmZmMzA2NjUuLmUyN2EyZmU3NjAx
MWVlNWQyZmE2NGQzNTJiZWM4N2E1NWNlMjhmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX2Nv
ZGluZ19pbXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fY29kaW5nX2ltcGwuaApAQCAtMTcsNyArMTcs
NyBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJj
b21tb25fdmlkZW8vaW5jbHVkZS9mcmFtZV9jYWxsYmFjay5oIgorI2luY2x1ZGUgImFic2wvdHlw
ZXMvb3B0aW9uYWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9kZWNvZGVyX2Rh
dGFiYXNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvZW5jb2Rlcl9kYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2ZyYW1lX2J1ZmZlci5oIgpAQCAt
OTQsNyArOTQsOCBAQCBjbGFzcyBWaWRlb1NlbmRlciB7CiAgICAgICBWaWRlb0JpdHJhdGVBbGxv
Y2F0aW9uT2JzZXJ2ZXIqIGJpdHJhdGVfdXBkYXRlZF9jYWxsYmFjayk7CiAKICAgaW50MzJfdCBB
ZGRWaWRlb0ZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNTcGVjaWZpY0luZm8pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjU3Bl
Y2lmaWNJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8VmlkZW9F
bmNvZGVyOjpFbmNvZGVySW5mbz4gZW5jb2Rlcl9pbmZvKTsKIAogICBpbnQzMl90IEludHJhRnJh
bWVSZXF1ZXN0KHNpemVfdCBzdHJlYW1faW5kZXgpOwogICBpbnQzMl90IEVuYWJsZUZyYW1lRHJv
cHBlcihib29sIGVuYWJsZSk7CkBAIC0xMTMsNyArMTE0LDE4IEBAIGNsYXNzIFZpZGVvU2VuZGVy
IHsKICAgVkNNRW5jb2RlZEZyYW1lQ2FsbGJhY2sgX2VuY29kZWRGcmFtZUNhbGxiYWNrIFJUQ19H
VUFSREVEX0JZKGVuY29kZXJfY3JpdF8pOwogICBFbmNvZGVkSW1hZ2VDYWxsYmFjayogY29uc3Qg
cG9zdF9lbmNvZGVfY2FsbGJhY2tfOwogICBWQ01FbmNvZGVyRGF0YUJhc2UgX2NvZGVjRGF0YUJh
c2UgUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9jcml0Xyk7Ci0gIGJvb2wgZnJhbWVfZHJvcHBlcl9l
bmFibGVkXyBSVENfR1VBUkRFRF9CWShlbmNvZGVyX2NyaXRfKTsKKworICAvLyB8ZnJhbWVfZHJv
cHBlcl9yZXF1ZXN0ZWRffCBzcGVjaWZpZXMgaWYgdGhlIHVzZXIgb2YgdGhpcyBjbGFzcyBoYXMK
KyAgLy8gcmVxdWVzdGVkIGZyYW1lIGRyb3BwaW5nIHRvIGJlIGVuYWJsZWQsIHZpYSBFbmFibGVG
cmFtZURyb3BwZXIoKS4KKyAgLy8gRGVwZW5kaW5nIG9uIHZpZGVvIGVuY29kZXIgY29uZmlndXJh
dGlvbiwgdGhpcyBzZXR0aW5nIG1heSBiZSBvdmVycmlkZGVuCisgIC8vIGFuZCB0aGUgZnJhbWUg
ZHJvcHBlciBiZSBmb3JjZSBkaXNhYmxlZC4gSWYgc28sCisgIC8vIHxmb3JjZV9kaXNhYmxlX2Zy
YW1lX2Ryb3BwZXJffCB3aWxsIGJlIHNldCB0byB0cnVlLgorICAvLyBJZiBmcmFtZSBkcm9wcGVy
IGlzIHJlcXVlc3RlZCwgYW5kIGlzIG5vdCBmb3JjZSBkaXNhYmxlZCwgZnJhbWUgZHJvcHBpbmcK
KyAgLy8gbWlnaHQgc3RpbGwgYmUgZGlzYWJsZWQgaWYgVmlkZW9FbmNvZGVyOjpHZXRFbmNvZGVy
SW5mbygpIGluZGljYXRlcyB0aGF0CisgIC8vIHRoZSBlbmNvZGVyIGhhcyBhIHRydXN0ZWQgcmF0
ZSBjb250cm9sbGVyLiBUaGlzIGlzIGRldGVybWluZWQgb24gYQorICAvLyBwZXItZnJhbWUgYmFz
aXMsIGFzIHRoZSBlbmNvZGVyIGJlaGF2aW9yIG1pZ2h0IGR5bmFtaWNhbGx5IGNoYW5nZS4KKyAg
Ym9vbCBmcmFtZV9kcm9wcGVyX3JlcXVlc3RlZF8gUlRDX0dVQVJERURfQlkoZW5jb2Rlcl9jcml0
Xyk7CisgIGJvb2wgZm9yY2VfZGlzYWJsZV9mcmFtZV9kcm9wcGVyXyBSVENfR1VBUkRFRF9CWShl
bmNvZGVyX2NyaXRfKTsKIAogICAvLyBNdXN0IGJlIGFjY2Vzc2VkIG9uIHRoZSBjb25zdHJ1Y3Rp
b24gdGhyZWFkIG9mIFZpZGVvU2VuZGVyLgogICBWaWRlb0NvZGVjIGN1cnJlbnRfY29kZWNfOwpA
QCAtMTI4LDcgKzE0MCw2IEBAIGNsYXNzIFZpZGVvU2VuZGVyIHsKIGNsYXNzIFZpZGVvUmVjZWl2
ZXIgOiBwdWJsaWMgTW9kdWxlIHsKICBwdWJsaWM6CiAgIFZpZGVvUmVjZWl2ZXIoQ2xvY2sqIGNs
b2NrLAotICAgICAgICAgICAgICAgIEV2ZW50RmFjdG9yeSogZXZlbnRfZmFjdG9yeSwKICAgICAg
ICAgICAgICAgICBWQ01UaW1pbmcqIHRpbWluZywKICAgICAgICAgICAgICAgICBOYWNrU2VuZGVy
KiBuYWNrX3NlbmRlciA9IG51bGxwdHIsCiAgICAgICAgICAgICAgICAgS2V5RnJhbWVSZXF1ZXN0
U2VuZGVyKiBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlciA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvdmlkZW9fcGFja2V0X2J1ZmZlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3BhY2tl
dF9idWZmZXJfdW5pdHRlc3QuY2MKaW5kZXggNDI1NTQyYzk0OWMwMzY1MjIyZTRhY2EwNGI1ZjFj
NjcxM2I4YTY4ZC4uMTNlNjRlZWJhYjQxZjA5ZDczYThjNTFhOGI0MzlhMjQ3ZjRmOGE5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvdmlkZW9fcGFja2V0X2J1ZmZlcl91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGlu
Zy92aWRlb19wYWNrZXRfYnVmZmVyX3VuaXR0ZXN0LmNjCkBAIC0xMjAsMTQgKzEyMCw3IEBAIFRF
U1RfRihUZXN0UGFja2V0QnVmZmVyLCBJbnNlcnREdXBsaWNhdGVQYWNrZXQpIHsKICAgRVhQRUNU
X1RSVUUoSW5zZXJ0KHNlcV9udW0sIGtLZXlGcmFtZSwga0ZpcnN0LCBrTGFzdCkpOwogfQogCi0j
aWYgZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKLS8vIEZhaWxzIG9uIGFuZHJvaWQgYWZ0ZXIgY2xh
bmcgdXBkYXRlCi0vLyBUT0RPKGNyYnVnLmNvbS84ODc0NjQpOiBSZWVuYWJsZSB0aGlzCi0jZGVm
aW5lIE1BWUJFX1NlcU51bVdyYXBPbmVGcmFtZSBESVNBQkxFRF9TZXFOdW1XcmFwT25lRnJhbWUK
LSNlbHNlCi0jZGVmaW5lIE1BWUJFX1NlcU51bVdyYXBPbmVGcmFtZSBTZXFOdW1XcmFwT25lRnJh
bWUKLSNlbmRpZgotVEVTVF9GKFRlc3RQYWNrZXRCdWZmZXIsIE1BWUJFX1NlcU51bVdyYXBPbmVG
cmFtZSkgeworVEVTVF9GKFRlc3RQYWNrZXRCdWZmZXIsIFNlcU51bVdyYXBPbmVGcmFtZSkgewog
ICBFWFBFQ1RfVFJVRShJbnNlcnQoMHhGRkZGLCBrS2V5RnJhbWUsIGtGaXJzdCwga05vdExhc3Qp
KTsKICAgRVhQRUNUX1RSVUUoSW5zZXJ0KDB4MCwga0tleUZyYW1lLCBrTm90Rmlyc3QsIGtMYXN0
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3JlY2VpdmVyLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9f
cmVjZWl2ZXIuY2MKaW5kZXggZDk0YmE1ZTY5ZjllZjcwYzA0NThkY2IyYTJlNTI2ZThhZTMzODhi
MS4uOGI0ZWU3ODVlZWY3OTg3YzI0OWUwNDI1MWIzMmY0OTA2MzMyOTcxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvdmlkZW9fcmVjZWl2ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fcmVjZWl2ZXIuY2MKQEAg
LTI2LDcgKzI2LDYgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdmNtIHsKIAogVmlk
ZW9SZWNlaXZlcjo6VmlkZW9SZWNlaXZlcihDbG9jayogY2xvY2ssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV2ZW50RmFjdG9yeSogZXZlbnRfZmFjdG9yeSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVkNNVGltaW5nKiB0aW1pbmcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5hY2tTZW5kZXIqIG5hY2tfc2VuZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBLZXlGcmFtZVJlcXVlc3RTZW5kZXIqIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyKQpAQCAt
MzQsNyArMzMsNiBAQCBWaWRlb1JlY2VpdmVyOjpWaWRlb1JlY2VpdmVyKENsb2NrKiBjbG9jaywK
ICAgICAgIF90aW1pbmcodGltaW5nKSwKICAgICAgIF9yZWNlaXZlcihfdGltaW5nLAogICAgICAg
ICAgICAgICAgIGNsb2NrXywKLSAgICAgICAgICAgICAgICBldmVudF9mYWN0b3J5LAogICAgICAg
ICAgICAgICAgIG5hY2tfc2VuZGVyLAogICAgICAgICAgICAgICAgIGtleWZyYW1lX3JlcXVlc3Rf
c2VuZGVyKSwKICAgICAgIF9kZWNvZGVkRnJhbWVDYWxsYmFjayhfdGltaW5nLCBjbG9ja18pLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9k
dWxlcy92aWRlb19jb2RpbmcvdmlkZW9fcmVjZWl2ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRl
b19yZWNlaXZlcl91bml0dGVzdC5jYwppbmRleCBiN2E0NmY5MmVhODhlN2VlMmQ1YmQxNTE0ZTM1
ZDAxYjE0OTIyYmYzLi5mOTlkYWM0OTIwMGEzYmM5NTVhODg3NWJlYzdiNmRhZmRmNmRhMDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL3ZpZGVvX2NvZGluZy92aWRlb19yZWNlaXZlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92
aWRlb19yZWNlaXZlcl91bml0dGVzdC5jYwpAQCAtMTEsMTAgKzExLDkgQEAKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYXBpL3Rlc3QvbW9ja192aWRl
b19kZWNvZGVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS9tb2Nr
L21vY2tfdmNtX2NhbGxiYWNrcy5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2lu
Y2x1ZGUvbW9jay9tb2NrX3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nLmgiCi0jaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jb2RpbmcvdGVzdC90ZXN0X3V0aWwuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVv
X2NvZGluZy90aW1pbmcuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRlb19j
b2RpbmdfaW1wbC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgi
CkBAIC0zNyw3ICszNiw3IEBAIGNsYXNzIFRlc3RWaWRlb1JlY2VpdmVyIDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiAKICAgdmlydHVhbCB2b2lkIFNldFVwKCkgewogICAgIHRpbWluZ18ucmVz
ZXQobmV3IFZDTVRpbWluZygmY2xvY2tfKSk7Ci0gICAgcmVjZWl2ZXJfLnJlc2V0KG5ldyBWaWRl
b1JlY2VpdmVyKCZjbG9ja18sICZldmVudF9mYWN0b3J5XywgdGltaW5nXy5nZXQoKSkpOworICAg
IHJlY2VpdmVyXy5yZXNldChuZXcgVmlkZW9SZWNlaXZlcigmY2xvY2tfLCB0aW1pbmdfLmdldCgp
KSk7CiAgICAgcmVjZWl2ZXJfLT5SZWdpc3RlckV4dGVybmFsRGVjb2RlcigmZGVjb2Rlcl8sIGtV
bnVzZWRQYXlsb2FkVHlwZSk7CiAgICAgY29uc3Qgc2l6ZV90IGtNYXhOYWNrTGlzdFNpemUgPSAy
NTA7CiAgICAgY29uc3QgaW50IGtNYXhQYWNrZXRBZ2VUb05hY2sgPSA0NTA7CkBAIC04MSw3ICs4
MCw2IEBAIGNsYXNzIFRlc3RWaWRlb1JlY2VpdmVyIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CiAgIH0KIAogICBTaW11bGF0ZWRDbG9jayBjbG9ja187Ci0gIE51bGxFdmVudEZhY3RvcnkgZXZl
bnRfZmFjdG9yeV87CiAgIFZpZGVvQ29kZWMgc2V0dGluZ3NfOwogICBOaWNlTW9jazxNb2NrVmlk
ZW9EZWNvZGVyPiBkZWNvZGVyXzsKICAgTmljZU1vY2s8TW9ja1BhY2tldFJlcXVlc3RDYWxsYmFj
az4gcGFja2V0X3JlcXVlc3RfY2FsbGJhY2tfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fc2Vu
ZGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvdmlkZW9fc2VuZGVyLmNjCmluZGV4IDRjMWUyNDM2MTIwNGRjMDU5Yjhl
MzdhZGFmZmE0MDFiNmU1MzYzZWYuLjRiZDUyNTMwYzlmNTAyMGE3ZmJjMjc4NmM4Y2Y0NTlhMGFi
MzJhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3NlbmRlci5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRl
b19zZW5kZXIuY2MKQEAgLTQwLDcgKzQwLDggQEAgVmlkZW9TZW5kZXI6OlZpZGVvU2VuZGVyKENs
b2NrKiBjbG9jaywKICAgICAgIF9lbmNvZGVkRnJhbWVDYWxsYmFjayhwb3N0X2VuY29kZV9jYWxs
YmFjaywgJl9tZWRpYU9wdCksCiAgICAgICBwb3N0X2VuY29kZV9jYWxsYmFja18ocG9zdF9lbmNv
ZGVfY2FsbGJhY2spLAogICAgICAgX2NvZGVjRGF0YUJhc2UoJl9lbmNvZGVkRnJhbWVDYWxsYmFj
ayksCi0gICAgICBmcmFtZV9kcm9wcGVyX2VuYWJsZWRfKHRydWUpLAorICAgICAgZnJhbWVfZHJv
cHBlcl9yZXF1ZXN0ZWRfKHRydWUpLAorICAgICAgZm9yY2VfZGlzYWJsZV9mcmFtZV9kcm9wcGVy
XyhmYWxzZSksCiAgICAgICBjdXJyZW50X2NvZGVjXygpLAogICAgICAgZW5jb2Rlcl9wYXJhbXNf
KHtWaWRlb0JpdHJhdGVBbGxvY2F0aW9uKCksIDAsIDAsIDB9KSwKICAgICAgIGVuY29kZXJfaGFz
X2ludGVybmFsX3NvdXJjZV8oZmFsc2UpLApAQCAtOTYsMTUgKzk3LDEyIEBAIGludDMyX3QgVmlk
ZW9TZW5kZXI6OlJlZ2lzdGVyU2VuZENvZGVjKGNvbnN0IFZpZGVvQ29kZWMqIHNlbmRDb2RlYywK
ICAgICBudW1MYXllcnMgPSAxOwogICB9CiAKLSAgLy8gSWYgd2UgaGF2ZSBzY3JlZW5zaGFyaW5n
IGFuZCB3ZSBoYXZlIGxheWVycywgd2UgZGlzYWJsZSBmcmFtZSBkcm9wcGVyLgotICBjb25zdCBi
b29sIGRpc2FibGVfZnJhbWVfZHJvcHBlciA9CisgIC8vIEZvcmNlLWRpc2FibGUgZnJhbWUgZHJv
cHBlciBpZiBlaXRoZXI6CisgIC8vICAqIFdlIGhhdmUgc2NyZWVuc2hhcmluZyB3aXRoIGxheWVy
cy4KKyAgLy8gICogIldlYlJUQy1GcmFtZURyb3BwZXIiIGZpZWxkIHRyaWFsIGlzICJEaXNhYmxl
ZCIuCisgIGZvcmNlX2Rpc2FibGVfZnJhbWVfZHJvcHBlcl8gPQogICAgICAgZmllbGRfdHJpYWw6
OklzRGlzYWJsZWQoa0ZyYW1lRHJvcHBlckZpZWxkVHJpYWwpIHx8CiAgICAgICAobnVtTGF5ZXJz
ID4gMSAmJiBzZW5kQ29kZWMtPm1vZGUgPT0gVmlkZW9Db2RlY01vZGU6OmtTY3JlZW5zaGFyaW5n
KTsKLSAgaWYgKGRpc2FibGVfZnJhbWVfZHJvcHBlcikgewotICAgIF9tZWRpYU9wdC5FbmFibGVG
cmFtZURyb3BwZXIoZmFsc2UpOwotICB9IGVsc2UgaWYgKGZyYW1lX2Ryb3BwZXJfZW5hYmxlZF8p
IHsKLSAgICBfbWVkaWFPcHQuRW5hYmxlRnJhbWVEcm9wcGVyKHRydWUpOwotICB9CiAKICAgewog
ICAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZwYXJhbXNfY3JpdF8pOwpAQCAtMjQ3LDggKzI0NSwxMCBA
QCB2b2lkIFZpZGVvU2VuZGVyOjpTZXRFbmNvZGVyUGFyYW1ldGVycyhFbmNvZGVyUGFyYW1ldGVy
cyBwYXJhbXMsCiB9CiAKIC8vIEFkZCBvbmUgcmF3IHZpZGVvIGZyYW1lIHRvIHRoZSBlbmNvZGVy
LCBibG9ja2luZy4KLWludDMyX3QgVmlkZW9TZW5kZXI6OkFkZFZpZGVvRnJhbWUoY29uc3QgVmlk
ZW9GcmFtZSYgdmlkZW9GcmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjU3BlY2lmaWNJbmZvKSB7CitpbnQzMl90IFZp
ZGVvU2VuZGVyOjpBZGRWaWRlb0ZyYW1lKAorICAgIGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVvRnJh
bWUsCisgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjU3BlY2lmaWNJbmZvLAorICAg
IGFic2w6Om9wdGlvbmFsPFZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8+IGVuY29kZXJfaW5mbykg
ewogICBFbmNvZGVyUGFyYW1ldGVycyBlbmNvZGVyX3BhcmFtczsKICAgc3RkOjp2ZWN0b3I8RnJh
bWVUeXBlPiBuZXh0X2ZyYW1lX3R5cGVzOwogICBib29sIGVuY29kZXJfaGFzX2ludGVybmFsX3Nv
dXJjZSA9IGZhbHNlOwpAQCAtMjYyLDYgKzI2MiwxNyBAQCBpbnQzMl90IFZpZGVvU2VuZGVyOjpB
ZGRWaWRlb0ZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsCiAgIGlmIChfZW5jb2Rl
ciA9PSBudWxscHRyKQogICAgIHJldHVybiBWQ01fVU5JTklUSUFMSVpFRDsKICAgU2V0RW5jb2Rl
clBhcmFtZXRlcnMoZW5jb2Rlcl9wYXJhbXMsIGVuY29kZXJfaGFzX2ludGVybmFsX3NvdXJjZSk7
CisgIGlmICghZW5jb2Rlcl9pbmZvKSB7CisgICAgZW5jb2Rlcl9pbmZvID0gX2VuY29kZXItPkdl
dEVuY29kZXJJbmZvKCk7CisgIH0KKworICAvLyBGcmFtZSBkcm9wcGluZyBpcyBlbmFibGVkIGlm
ZiBmcmFtZSBkcm9wcGluZyBoYXMgYmVlbiByZXF1ZXN0ZWQsIGFuZAorICAvLyBmcmFtZSBkcm9w
cGluZyBpcyBub3QgZm9yY2UtZGlzYWJsZWQsIGFuZCByYXRlIGNvbnRyb2xsZXIgaXMgbm90IHRy
dXN0ZWQuCisgIGNvbnN0IGJvb2wgZnJhbWVfZHJvcHBpbmdfZW5hYmxlZCA9CisgICAgICBmcmFt
ZV9kcm9wcGVyX3JlcXVlc3RlZF8gJiYgIWZvcmNlX2Rpc2FibGVfZnJhbWVfZHJvcHBlcl8gJiYK
KyAgICAgICFlbmNvZGVyX2luZm8tPmhhc190cnVzdGVkX3JhdGVfY29udHJvbGxlcjsKKyAgX21l
ZGlhT3B0LkVuYWJsZUZyYW1lRHJvcHBlcihmcmFtZV9kcm9wcGluZ19lbmFibGVkKTsKKwogICBp
ZiAoX21lZGlhT3B0LkRyb3BGcmFtZSgpKSB7CiAgICAgUlRDX0xPRyhMU19WRVJCT1NFKSA8PCAi
RHJvcCBGcmFtZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAidGFyZ2V0IGJpdHJhdGUg
IgpAQCAtMjg3LDcgKzI5OCw3IEBAIGludDMyX3QgVmlkZW9TZW5kZXI6OkFkZFZpZGVvRnJhbWUo
Y29uc3QgVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwKICAgY29uc3QgYm9vbCBpc19idWZmZXJfdHlw
ZV9zdXBwb3J0ZWQgPQogICAgICAgYnVmZmVyX3R5cGUgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlw
ZTo6a0k0MjAgfHwKICAgICAgIChidWZmZXJfdHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBl
OjprTmF0aXZlICYmCi0gICAgICAgX2VuY29kZXItPlN1cHBvcnRzTmF0aXZlSGFuZGxlKCkpOwor
ICAgICAgIGVuY29kZXJfaW5mby0+c3VwcG9ydHNfbmF0aXZlX2hhbmRsZSk7CiAgIGlmICghaXNf
YnVmZmVyX3R5cGVfc3VwcG9ydGVkKSB7CiAgICAgLy8gVGhpcyBtb2R1bGUgb25seSBzdXBwb3J0
cyBzb2Z0d2FyZSBlbmNvZGluZy4KICAgICAvLyBUT0RPKHBib3MpOiBPZmZsb2FkIGNvbnZlcnNp
b24gZnJvbSB0aGUgZW5jb2RlciB0aHJlYWQuCkBAIC0zNTUsNyArMzY2LDcgQEAgaW50MzJfdCBW
aWRlb1NlbmRlcjo6SW50cmFGcmFtZVJlcXVlc3Qoc2l6ZV90IHN0cmVhbV9pbmRleCkgewogCiBp
bnQzMl90IFZpZGVvU2VuZGVyOjpFbmFibGVGcmFtZURyb3BwZXIoYm9vbCBlbmFibGUpIHsKICAg
cnRjOjpDcml0U2NvcGUgbG9jaygmZW5jb2Rlcl9jcml0Xyk7Ci0gIGZyYW1lX2Ryb3BwZXJfZW5h
YmxlZF8gPSBlbmFibGU7CisgIGZyYW1lX2Ryb3BwZXJfcmVxdWVzdGVkXyA9IGVuYWJsZTsKICAg
X21lZGlhT3B0LkVuYWJsZUZyYW1lRHJvcHBlcihlbmFibGUpOwogICByZXR1cm4gVkNNX09LOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
bW9kdWxlcy92aWRlb19jb2RpbmcvdmlkZW9fc2VuZGVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcvdmlk
ZW9fc2VuZGVyX3VuaXR0ZXN0LmNjCmluZGV4IDNjZDljYWY2NWMzMDY3OThmODg4ZjlkYzVjYTdj
NzAxYWQzMmQ5YjguLmMyZmYwZjYyMDdjMTI5YTlkYzgzOGJiN2U4NTVmYjFmZjNhYWE4MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvdmlkZW9fY29kaW5nL3ZpZGVvX3NlbmRlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy92aWRl
b19zZW5kZXJfdW5pdHRlc3QuY2MKQEAgLTExLDExICsxMSwxMSBAQAogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdGVzdC9tb2NrX3ZpZGVvX2Vu
Y29kZXIuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKKyNpbmNsdWRlICJh
cGkvdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4LmgiCi0jaW5jbHVkZSAibW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL21vY2svbW9ja192Y21fY2Fs
bGJhY2tzLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS9tb2NrL21v
Y2tfdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvaW5jbHVkZS92aWRlb19jb2RpbmcuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGlu
Zy91dGlsaXR5L2RlZmF1bHRfdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJt
b2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF9yYXRlX2FsbG9jYXRvci5oIgpA
QCAtMTg2LDcgKzE4NiwxMCBAQCBjbGFzcyBUZXN0VmlkZW9TZW5kZXIgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKIAogICB2b2lkIEFkZEZyYW1lKCkgewogICAgIGFzc2VydChnZW5lcmF0b3Jf
LmdldCgpKTsKLSAgICBzZW5kZXJfLT5BZGRWaWRlb0ZyYW1lKCpnZW5lcmF0b3JfLT5OZXh0RnJh
bWUoKSwgTlVMTCk7CisgICAgc2VuZGVyXy0+QWRkVmlkZW9GcmFtZSgqZ2VuZXJhdG9yXy0+TmV4
dEZyYW1lKCksIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyXyA/
IGFic2w6Om9wdGlvbmFsPFZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8+KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFic2w6Om51bGxvcHQpOwog
ICB9CiAKICAgU2ltdWxhdGVkQ2xvY2sgY2xvY2tfOwpAQCAtMzY5LDkgKzM3Miw2IEBAIFRFU1Rf
RihUZXN0VmlkZW9TZW5kZXJXaXRoTW9ja0VuY29kZXIsCiAgIC8vIEV4cGVjdCBpbml0aWFsIGNh
bGwgdG8gU2V0Q2hhbm5lbFBhcmFtZXRlcnMuIFJhdGVzIGFyZSBpbml0aWFsaXplZCB0aHJvdWdo
CiAgIC8vIEluaXRFbmNvZGUgYW5kIGV4cGVjdHMgbm8gYWRkaXRpb25hbCBjYWxsIGJlZm9yZSB0
aGUgZnJhbWVyYXRlIChvciBiaXRyYXRlKQogICAvLyB1cGRhdGVzLgotICBFWFBFQ1RfQ0FMTChl
bmNvZGVyXywgU2V0Q2hhbm5lbFBhcmFtZXRlcnMoa0xvc3NSYXRlLCBrUnR0KSkKLSAgICAgIC5U
aW1lcygxKQotICAgICAgLldpbGxPbmNlKFJldHVybigwKSk7CiAgIHNlbmRlcl8tPlNldENoYW5u
ZWxQYXJhbWV0ZXJzKHNldHRpbmdzXy5zdGFydEJpdHJhdGUgKiAxMDAwLCBrTG9zc1JhdGUsIGtS
dHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGVfYWxsb2NhdG9yXy5nZXQo
KSwgbnVsbHB0cik7CiAgIHdoaWxlIChjbG9ja18uVGltZUluTWlsbGlzZWNvbmRzKCkgPCBzdGFy
dF90aW1lICsga1JhdGVTdGF0c1dpbmRvd01zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL0JVSUxELmduIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9CVUlMRC5nbgpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjY1MTY1YTAzN2JlNWZjZWRmYjExZWMwZjhkYmY1MGFjNjI4NWQ1
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL0JVSUxELmduCisrKyAvZGV2
L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0jIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQot
IyB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCi0jIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKLSMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0KLWltcG9ydCgiLi4vd2VicnRjLmduaSIpCi1pZiAo
aXNfYW5kcm9pZCkgewotICBpbXBvcnQoIi8vYnVpbGQvY29uZmlnL2FuZHJvaWQvY29uZmlnLmdu
aSIpCi0gIGltcG9ydCgiLy9idWlsZC9jb25maWcvYW5kcm9pZC9ydWxlcy5nbmkiKQotfQotCi1y
dGNfc3RhdGljX2xpYnJhcnkoIm9ydGMiKSB7Ci0gIGRlZmluZXMgPSBbXQotICBzb3VyY2VzID0g
WwotICAgICJvcnRjZmFjdG9yeS5jYyIsCi0gICAgIm9ydGNmYWN0b3J5LmgiLAotICAgICJvcnRj
cnRwcmVjZWl2ZXJhZGFwdGVyLmNjIiwKLSAgICAib3J0Y3J0cHJlY2VpdmVyYWRhcHRlci5oIiwK
LSAgICAib3J0Y3J0cHNlbmRlcmFkYXB0ZXIuY2MiLAotICAgICJvcnRjcnRwc2VuZGVyYWRhcHRl
ci5oIiwKLSAgICAicnRwdHJhbnNwb3J0YWRhcHRlci5jYyIsCi0gICAgInJ0cHRyYW5zcG9ydGFk
YXB0ZXIuaCIsCi0gICAgInJ0cHRyYW5zcG9ydGNvbnRyb2xsZXJhZGFwdGVyLmNjIiwKLSAgICAi
cnRwdHJhbnNwb3J0Y29udHJvbGxlcmFkYXB0ZXIuaCIsCi0gIF0KLQotICAjIFRPRE8oZGVhZGJl
ZWYpOiBDcmVhdGUgYSBzZXBhcmF0ZSB0YXJnZXQgZm9yIHRoZSBjb21tb24gdGhpbmdzIE9SVEMg
YW5kCi0gICMgUGVlckNvbm5lY3Rpb24gY29kZSBzaGFyZXMsIHNvIHRoYXQgb3J0YyBjYW4gZGVw
ZW5kIG9uIHRoYXQgaW5zdGVhZCBvZgotICAjIGxpYmppbmdsZV9wZWVyY29ubmVjdGlvbi4KLSAg
ZGVwcyA9IFsKLSAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAotICAg
ICIuLi9hcGk6b3J0Y19hcGkiLAotICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOmJ1aWx0aW5fdmlk
ZW9fZGVjb2Rlcl9mYWN0b3J5IiwKLSAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczpidWlsdGluX3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeSIsCi0gICAgIi4uL2NhbGw6Y2FsbF9pbnRlcmZhY2VzIiwKLSAg
ICAiLi4vY2FsbDpydHBfc2VuZGVyIiwKLSAgICAiLi4vbG9nZ2luZzpydGNfZXZlbnRfbG9nX2Fw
aSIsCi0gICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19pbXBsX2Jhc2UiLAotICAgICIuLi9t
ZWRpYTpydGNfYXVkaW9fdmlkZW8iLAotICAgICIuLi9tZWRpYTpydGNfbWVkaWEiLAotICAgICIu
Li9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCi0gICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
ZzphdWRpb19wcm9jZXNzaW5nIiwKLSAgICAiLi4vcDJwOnJ0Y19wMnAiLAotICAgICIuLi9wYzps
aWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24iLAotICAgICIuLi9wYzpwZWVyY29ubmVjdGlvbiIsCi0g
ICAgIi4uL3BjOnJ0Y19wYyIsCi0gICAgIi4uL3BjOnJ0Y19wY19iYXNlIiwKLSAgICAiLi4vcnRj
X2Jhc2U6Y2hlY2tzIiwKLSAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAotICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L3Np
Z3Nsb3QiLAotICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLAotICAg
ICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCi0gIF0KLQot
ICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYgaXNfY2xhbmcpIHsKLSAgICAjIFN1cHByZXNz
IHdhcm5pbmdzIGZyb20gdGhlIENocm9taXVtIENsYW5nIHBsdWdpbiAoYnVncy53ZWJydGMub3Jn
LzE2MykuCi0gICAgc3VwcHJlc3NlZF9jb25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2NsYW5n
OmZpbmRfYmFkX2NvbnN0cnVjdHMiIF0KLSAgfQotfQotCi1pZiAocnRjX2luY2x1ZGVfdGVzdHMp
IHsKLSAgcnRjX3Rlc3QoIm9ydGNfdW5pdHRlc3RzIikgewotICAgIHRlc3Rvbmx5ID0gdHJ1ZQot
Ci0gICAgc291cmNlcyA9IFsKLSAgICAgICJvcnRjZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2Mi
LAotICAgICAgIm9ydGNmYWN0b3J5X3VuaXR0ZXN0LmNjIiwKLSAgICAgICJvcnRjcnRwcmVjZWl2
ZXJfdW5pdHRlc3QuY2MiLAotICAgICAgIm9ydGNydHBzZW5kZXJfdW5pdHRlc3QuY2MiLAotICAg
ICAgInJ0cHRyYW5zcG9ydF91bml0dGVzdC5jYyIsCi0gICAgICAicnRwdHJhbnNwb3J0Y29udHJv
bGxlcl91bml0dGVzdC5jYyIsCi0gICAgICAic3J0cHRyYW5zcG9ydF91bml0dGVzdC5jYyIsCi0g
ICAgICAidGVzdHJ0cHBhcmFtZXRlcnMuY2MiLAotICAgICAgInRlc3RydHBwYXJhbWV0ZXJzLmgi
LAotICAgIF0KLQotICAgIGRlcHMgPSBbCi0gICAgICAiOm9ydGMiLAotICAgICAgIi4uL2FwaTps
aWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKLSAgICAgICIuLi9hcGk6b3J0Y19hcGkiLAot
ICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3Rvcnki
LAotICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3Rv
cnkiLAotICAgICAgIi4uL21lZGlhOnJ0Y19tZWRpYV90ZXN0c191dGlscyIsCi0gICAgICAiLi4v
cDJwOnAycF90ZXN0X3V0aWxzIiwKLSAgICAgICIuLi9wMnA6cnRjX3AycCIsCi0gICAgICAiLi4v
cGM6cGNfdGVzdF91dGlscyIsCi0gICAgICAiLi4vcGM6cGVlcmNvbm5lY3Rpb24iLAotICAgICAg
Ii4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKLSAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHBy
b3ZlZCIsCi0gICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfbWFpbiIsCi0gICAgICAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAotICAgICAgIi4uL3J0Y19iYXNlL3N5
c3RlbTphcmNoIiwKLSAgICBdCi0KLSAgICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYgaXNf
Y2xhbmcpIHsKLSAgICAgICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xh
bmcgcGx1Z2luIChidWdzLndlYnJ0Yy5vcmcvMTYzKS4KLSAgICAgIHN1cHByZXNzZWRfY29uZmln
cyArPSBbICIvL2J1aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCi0gICAg
fQotCi0gICAgaWYgKGlzX2FuZHJvaWQpIHsKLSAgICAgIGRlcHMgKz0gWyAiLy90ZXN0aW5nL2Fu
ZHJvaWQvbmF0aXZlX3Rlc3Q6bmF0aXZlX3Rlc3Rfc3VwcG9ydCIgXQotICAgIH0KLSAgfQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0
Yy9ERVBTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9E
RVBTCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWJmMDMwYjgyOTBlNjI5MGM5MzI2
OTk5ZDFlNWVhZGMxN2ZlNmZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMv
REVQUworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLWluY2x1ZGVfcnVsZXMgPSBbCi0g
ICIrYXBpIiwKLSAgIitjYWxsIiwKLSAgIitsb2dnaW5nL3J0Y19ldmVudF9sb2ciLAotICAiK21l
ZGlhIiwKLSAgIittb2R1bGVzL2F1ZGlvX2NvZGluZyIsCi0gICIrbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nIiwKLSAgIitwMnAiLAotICAiK3BjIiwKLQotICAiK21vZHVsZXMvcnRwX3J0Y3AiLAot
ICAiK3N5c3RlbV93cmFwcGVycyIsCi0KLSAgIittb2R1bGVzL2F1ZGlvX2RldmljZSIsCi0gICIr
bW9kdWxlcy92aWRlb19jb2RpbmciLAotICAiK21vZHVsZXMvdmlkZW9fcmVuZGVyIiwKLV0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMv
T1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9P
V05FUlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMDhmZmY1MGI4ZjJlYTczOTNk
OWFiOWQzZTc1ZDdlNGI2Y2QzMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0
Yy9PV05FUlMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXB0aGF0Y2hlckB3ZWJydGMu
b3JnCi1zdGV2ZWFudG9uQHdlYnJ0Yy5vcmcKLQotIyBUaGVzZSBhcmUgZm9yIHRoZSBjb21tb24g
Y2FzZSBvZiBhZGRpbmcgb3IgcmVuYW1pbmcgZmlsZXMuIElmIHlvdSdyZSBkb2luZwotIyBzdHJ1
Y3R1cmFsIGNoYW5nZXMsIHBsZWFzZSBnZXQgYSByZXZpZXcgZnJvbSBhIHJldmlld2VyIGluIHRo
aXMgZmlsZS4KLXBlci1maWxlICouZ249KgotcGVyLWZpbGUgKi5nbmk9KgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9y
eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0
Y2ZhY3RvcnkuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNjNkMjYxNzRiYTY3
ODY0MDk1NDRmYzE1NGUyYjEzNTVlZjJmNTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvb3J0Yy9vcnRjZmFjdG9yeS5jYworKysgL2Rldi9udWxsCkBAIC0xLDU2MyArMCwwIEBACi0v
KgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAib3J0Yy9vcnRjZmFjdG9yeS5oIgotCi0jaW5j
bHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6Om1vdmUuCi0jaW5jbHVkZSA8dmVjdG9yPgotCi0j
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCi0jaW5jbHVkZSAiYXBpL21lZGlhc3RyZWFt
dHJhY2twcm94eS5oIgotI2luY2x1ZGUgImFwaS9wcm94eS5oIgotI2luY2x1ZGUgImFwaS9ydGNl
cnJvci5oIgotI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVy
X2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVvc291cmNlcHJveHkuaCIKLSNpbmNs
dWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvcnRjX2V2ZW50X2xvZy5oIgotI2luY2x1ZGUgIm1l
ZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL3J0cGRhdGFl
bmdpbmUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hdWRp
b19wcm9jZXNzaW5nLmgiCi0jaW5jbHVkZSAib3J0Yy9vcnRjcnRwcmVjZWl2ZXJhZGFwdGVyLmgi
Ci0jaW5jbHVkZSAib3J0Yy9vcnRjcnRwc2VuZGVyYWRhcHRlci5oIgotI2luY2x1ZGUgIm9ydGMv
cnRwdHJhbnNwb3J0YWRhcHRlci5oIgotI2luY2x1ZGUgIm9ydGMvcnRwdHJhbnNwb3J0Y29udHJv
bGxlcmFkYXB0ZXIuaCIKLSNpbmNsdWRlICJwMnAvYmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3Rv
cnkuaCIKLSNpbmNsdWRlICJwMnAvYmFzZS91ZHB0cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJwYy9h
dWRpb3RyYWNrLmgiCi0jaW5jbHVkZSAicGMvY2hhbm5lbG1hbmFnZXIuaCIKLSNpbmNsdWRlICJw
Yy9sb2NhbGF1ZGlvc291cmNlLmgiCi0jaW5jbHVkZSAicGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNp
b24uaCIKLSNpbmNsdWRlICJwYy92aWRlb3RyYWNrLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvYXN5
bmNwYWNrZXRzb2NrZXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9iaW5kLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmlu
Z19idWlsZGVyLmgiCi0KLW5hbWVzcGFjZSB7Ci0KLWNvbnN0IGludCBrRGVmYXVsdFJ0Y3BDbmFt
ZUxlbmd0aCA9IDE2OwotCi0vLyBBc3NlcnRzIHRoYXQgYWxsIG9mIHRoZSBidWlsdC1pbiBjYXBh
YmlsaXRpZXMgY2FuIGJlIGNvbnZlcnRlZCB0bwotLy8gUnRwQ2FwYWJpbGl0aWVzLiBJZiB0aGV5
IGNhbid0LCBzb21ldGhpbmcncyB3cm9uZyAoZm9yIGV4YW1wbGUsIG1heWJlIGEgbmV3Ci0vLyBm
ZWVkYmFjayBtZWNoYW5pc20gaXMgc3VwcG9ydGVkLCBidXQgYW4gZW51bSB2YWx1ZSB3YXNuJ3Qg
YWRkZWQgdG8KLS8vIHJ0cHBhcmFtZXRlcnMuaCkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KLXdl
YnJ0Yzo6UnRwQ2FwYWJpbGl0aWVzIFRvUnRwQ2FwYWJpbGl0aWVzV2l0aEFzc2VydHMoCi0gICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8Qz4mIGNyaWNrZXRfY29kZWNzLAotICAgIGNvbnN0IGNyaWNrZXQ6
OlJ0cEhlYWRlckV4dGVuc2lvbnMmIGNyaWNrZXRfZXh0ZW5zaW9ucykgewotICB3ZWJydGM6OlJ0
cENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMgPQotICAgICAgd2VicnRjOjpUb1J0cENhcGFiaWxp
dGllcyhjcmlja2V0X2NvZGVjcywgY3JpY2tldF9leHRlbnNpb25zKTsKLSAgUlRDX0RDSEVDS19F
UShjYXBhYmlsaXRpZXMuY29kZWNzLnNpemUoKSwgY3JpY2tldF9jb2RlY3Muc2l6ZSgpKTsKLSAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYXBhYmlsaXRpZXMuY29kZWNzLnNpemUoKTsgKytpKSB7
Ci0gICAgUlRDX0RDSEVDS19FUShjYXBhYmlsaXRpZXMuY29kZWNzW2ldLnJ0Y3BfZmVlZGJhY2su
c2l6ZSgpLAotICAgICAgICAgICAgICAgICAgY3JpY2tldF9jb2RlY3NbaV0uZmVlZGJhY2tfcGFy
YW1zLnBhcmFtcygpLnNpemUoKSk7Ci0gIH0KLSAgUlRDX0RDSEVDS19FUShjYXBhYmlsaXRpZXMu
aGVhZGVyX2V4dGVuc2lvbnMuc2l6ZSgpLAotICAgICAgICAgICAgICAgIGNyaWNrZXRfZXh0ZW5z
aW9ucy5zaXplKCkpOwotICByZXR1cm4gY2FwYWJpbGl0aWVzOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2UKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIE5vdGUgdGhhdCB0aGlzIHByb3h5IGNsYXNz
IHVzZXMgdGhlIG5ldHdvcmsgdGhyZWFkIGFzIHRoZSAid29ya2VyIiB0aHJlYWQuCi1CRUdJTl9P
V05FRF9QUk9YWV9NQVAoT3J0Y0ZhY3RvcnkpCi1QUk9YWV9TSUdOQUxJTkdfVEhSRUFEX0RFU1RS
VUNUT1IoKQotUFJPWFlfTUVUSE9EMChSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFu
c3BvcnRDb250cm9sbGVySW50ZXJmYWNlPj4sCi0gICAgICAgICAgICAgIENyZWF0ZVJ0cFRyYW5z
cG9ydENvbnRyb2xsZXIpCi1QUk9YWV9NRVRIT0Q0KFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRy
PFJ0cFRyYW5zcG9ydEludGVyZmFjZT4+LAotICAgICAgICAgICAgICBDcmVhdGVSdHBUcmFuc3Bv
cnQsCi0gICAgICAgICAgICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmLAotICAgICAg
ICAgICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqLAotICAgICAgICAgICAgICBQYWNrZXRU
cmFuc3BvcnRJbnRlcmZhY2UqLAotICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVy
SW50ZXJmYWNlKikKLQotUFJPWFlfTUVUSE9ENChSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxT
cnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4sCi0gICAgICAgICAgICAgIENyZWF0ZVNydHBUcmFuc3Bv
cnQsCi0gICAgICAgICAgICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmLAotICAgICAg
ICAgICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqLAotICAgICAgICAgICAgICBQYWNrZXRU
cmFuc3BvcnRJbnRlcmZhY2UqLAotICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVy
SW50ZXJmYWNlKikKLQotUFJPWFlfQ09OU1RNRVRIT0QxKFJ0cENhcGFiaWxpdGllcywKLSAgICAg
ICAgICAgICAgICAgICBHZXRSdHBTZW5kZXJDYXBhYmlsaXRpZXMsCi0gICAgICAgICAgICAgICAg
ICAgY3JpY2tldDo6TWVkaWFUeXBlKQotUFJPWFlfTUVUSE9EMihSVENFcnJvck9yPHN0ZDo6dW5p
cXVlX3B0cjxPcnRjUnRwU2VuZGVySW50ZXJmYWNlPj4sCi0gICAgICAgICAgICAgIENyZWF0ZVJ0
cFNlbmRlciwKLSAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJh
Y2tJbnRlcmZhY2U+LAotICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqKQotUFJP
WFlfTUVUSE9EMihSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwU2VuZGVySW50ZXJm
YWNlPj4sCi0gICAgICAgICAgICAgIENyZWF0ZVJ0cFNlbmRlciwKLSAgICAgICAgICAgICAgY3Jp
Y2tldDo6TWVkaWFUeXBlLAotICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqKQot
UFJPWFlfQ09OU1RNRVRIT0QxKFJ0cENhcGFiaWxpdGllcywKLSAgICAgICAgICAgICAgICAgICBH
ZXRSdHBSZWNlaXZlckNhcGFiaWxpdGllcywKLSAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpN
ZWRpYVR5cGUpCi1QUk9YWV9NRVRIT0QyKFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNS
dHBSZWNlaXZlckludGVyZmFjZT4+LAotICAgICAgICAgICAgICBDcmVhdGVSdHBSZWNlaXZlciwK
LSAgICAgICAgICAgICAgY3JpY2tldDo6TWVkaWFUeXBlLAotICAgICAgICAgICAgICBSdHBUcmFu
c3BvcnRJbnRlcmZhY2UqKQotUFJPWFlfV09SS0VSX01FVEhPRDMoUlRDRXJyb3JPcjxzdGQ6OnVu
aXF1ZV9wdHI8VWRwVHJhbnNwb3J0SW50ZXJmYWNlPj4sCi0gICAgICAgICAgICAgICAgICAgICBD
cmVhdGVVZHBUcmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICBpbnQsCi0gICAgICAgICAg
ICAgICAgICAgICB1aW50MTZfdCwKLSAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90KQotUFJP
WFlfTUVUSE9EMShydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Tb3VyY2VJbnRlcmZhY2U+LAotICAg
ICAgICAgICAgICBDcmVhdGVBdWRpb1NvdXJjZSwKLSAgICAgICAgICAgICAgY29uc3QgY3JpY2tl
dDo6QXVkaW9PcHRpb25zJikKLVBST1hZX01FVEhPRDIocnRjOjpzY29wZWRfcmVmcHRyPFZpZGVv
VHJhY2tJbnRlcmZhY2U+LAotICAgICAgICAgICAgICBDcmVhdGVWaWRlb1RyYWNrLAotICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYsCi0gICAgICAgICAgICAgIFZpZGVvVHJhY2tTb3Vy
Y2VJbnRlcmZhY2UqKQotUFJPWFlfTUVUSE9EMihydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9UcmFj
a0ludGVyZmFjZT4sCi0gICAgICAgICAgICAgIENyZWF0ZUF1ZGlvVHJhY2ssCi0gICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiwKLSAgICAgICAgICAgICAgQXVkaW9Tb3VyY2VJbnRlcmZh
Y2UqKQotRU5EX1BST1hZX01BUCgpCi0KLS8vIHN0YXRpYwotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1
ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+PiBPcnRjRmFjdG9yeTo6Q3JlYXRlKAotICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3Ro
cmVhZCwKLSAgICBydGM6Ok5ldHdvcmtNYW5hZ2VyKiBuZXR3b3JrX21hbmFnZXIsCi0gICAgcnRj
OjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFjdG9yeSwKLSAgICBBdWRpb0RldmljZU1v
ZHVsZSogYWRtLAotICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVy
ZmFjZT4gbWVkaWFfZW5naW5lLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJG
YWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1
ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSkgewotICAvLyBIb3AgdG8g
c2lnbmFsaW5nIHRocmVhZCBpZiBuZWVkZWQuCi0gIGlmIChzaWduYWxpbmdfdGhyZWFkICYmICFz
aWduYWxpbmdfdGhyZWFkLT5Jc0N1cnJlbnQoKSkgewotICAgIHJldHVybiBzaWduYWxpbmdfdGhy
ZWFkCi0gICAgICAgIC0+SW52b2tlPFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNGYWN0
b3J5SW50ZXJmYWNlPj4+KAotICAgICAgICAgICAgUlRDX0ZST01fSEVSRSwKLSAgICAgICAgICAg
IHJ0Yzo6QmluZCgmT3J0Y0ZhY3Rvcnk6OkNyZWF0ZV9zLCBuZXR3b3JrX3RocmVhZCwgc2lnbmFs
aW5nX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX21hbmFnZXIsIHNvY2tl
dF9mYWN0b3J5LCBhZG0sCi0gICAgICAgICAgICAgICAgICAgICAgbWVkaWFfZW5naW5lLnJlbGVh
c2UoKSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgIGF1ZGlv
X2RlY29kZXJfZmFjdG9yeSkpOwotICB9Ci0gIHJldHVybiBDcmVhdGVfcyhuZXR3b3JrX3RocmVh
ZCwgc2lnbmFsaW5nX3RocmVhZCwgbmV0d29ya19tYW5hZ2VyLAotICAgICAgICAgICAgICAgICAg
c29ja2V0X2ZhY3RvcnksIGFkbSwgbWVkaWFfZW5naW5lLnJlbGVhc2UoKSwKLSAgICAgICAgICAg
ICAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KTsKLX0K
LQotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+PiBPcnRj
RmFjdG9yeUludGVyZmFjZTo6Q3JlYXRlKAotICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVh
ZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBydGM6Ok5ldHdvcmtN
YW5hZ2VyKiBuZXR3b3JrX21hbmFnZXIsCi0gICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBz
b2NrZXRfZmFjdG9yeSwKLSAgICBBdWRpb0RldmljZU1vZHVsZSogYWRtLAotICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCi0g
ICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJf
ZmFjdG9yeSkgewotICByZXR1cm4gT3J0Y0ZhY3Rvcnk6OkNyZWF0ZShuZXR3b3JrX3RocmVhZCwg
c2lnbmFsaW5nX3RocmVhZCwgbmV0d29ya19tYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb2NrZXRfZmFjdG9yeSwgYWRtLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSk7
Ci19Ci0KLU9ydGNGYWN0b3J5OjpPcnRjRmFjdG9yeSgKLSAgICBydGM6OlRocmVhZCogbmV0d29y
a190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgcnRjOjpO
ZXR3b3JrTWFuYWdlciogbmV0d29ya19tYW5hZ2VyLAotICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFj
dG9yeSogc29ja2V0X2ZhY3RvcnksCi0gICAgQXVkaW9EZXZpY2VNb2R1bGUqIGFkbSwKLSAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19k
ZWNvZGVyX2ZhY3RvcnkpCi0gICAgOiBuZXR3b3JrX3RocmVhZF8obmV0d29ya190aHJlYWQpLAot
ICAgICAgc2lnbmFsaW5nX3RocmVhZF8oc2lnbmFsaW5nX3RocmVhZCksCi0gICAgICBuZXR3b3Jr
X21hbmFnZXJfKG5ldHdvcmtfbWFuYWdlciksCi0gICAgICBzb2NrZXRfZmFjdG9yeV8oc29ja2V0
X2ZhY3RvcnkpLAotICAgICAgYWRtXyhhZG0pLAotICAgICAgbnVsbF9ldmVudF9sb2dfKFJ0Y0V2
ZW50TG9nOjpDcmVhdGVOdWxsKCkpLAotICAgICAgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5XyhhdWRp
b19lbmNvZGVyX2ZhY3RvcnkpLAotICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5XyhhdWRpb19k
ZWNvZGVyX2ZhY3RvcnkpIHsKLSAgaWYgKCFydGM6OkNyZWF0ZVJhbmRvbVN0cmluZyhrRGVmYXVs
dFJ0Y3BDbmFtZUxlbmd0aCwgJmRlZmF1bHRfY25hbWVfKSkgewotICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJGYWlsZWQgdG8gZ2VuZXJhdGUgQ05BTUU/IjsKLSAgICBSVENfTk9UUkVBQ0hFRCgp
OwotICB9Ci0gIGlmICghbmV0d29ya190aHJlYWRfKSB7Ci0gICAgb3duZWRfbmV0d29ya190aHJl
YWRfID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZVdpdGhTb2NrZXRTZXJ2ZXIoKTsKLSAgICBvd25lZF9u
ZXR3b3JrX3RocmVhZF8tPlN0YXJ0KCk7Ci0gICAgbmV0d29ya190aHJlYWRfID0gb3duZWRfbmV0
d29ya190aHJlYWRfLmdldCgpOwotICB9Ci0KLSAgLy8gVGhlIHdvcmtlciB0aHJlYWQgaXMgY3Jl
YXRlZCBpbnRlcm5hbGx5IGJlY2F1c2UgaXQncyBhbiBpbXBsZW1lbnRhdGlvbgotICAvLyBkZXRh
aWwsIGFuZCBjb25zdW1lcnMgb2YgdGhlIEFQSSBkb24ndCBuZWVkIHRvIHJlYWxseSBrbm93IGFi
b3V0IGl0LgotICB3b3JrZXJfdGhyZWFkXyA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKLSAgd29y
a2VyX3RocmVhZF8tPlNldE5hbWUoIk9SVEMtd29ya2VyIiwgdGhpcyk7Ci0gIHdvcmtlcl90aHJl
YWRfLT5TdGFydCgpOwotCi0gIGlmIChzaWduYWxpbmdfdGhyZWFkXykgewotICAgIFJUQ19EQ0hF
Q0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgfSBlbHNlIHsKLSAgICBzaWduYWxpbmdf
dGhyZWFkXyA9IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCk7Ci0gICAgaWYgKCFzaWduYWxpbmdfdGhy
ZWFkXykgewotICAgICAgLy8gSWYgdGhpcyB0aHJlYWQgaXNuJ3QgYWxyZWFkeSB3cmFwcGVkIGJ5
IGFuIHJ0Yzo6VGhyZWFkLCBjcmVhdGUgYQotICAgICAgLy8gd3JhcHBlciBhbmQgb3duIGl0IGlu
IHRoaXMgY2xhc3MuCi0gICAgICBzaWduYWxpbmdfdGhyZWFkXyA9IHJ0Yzo6VGhyZWFkTWFuYWdl
cjo6SW5zdGFuY2UoKS0+V3JhcEN1cnJlbnRUaHJlYWQoKTsKLSAgICAgIHdyYXBzX3NpZ25hbGlu
Z190aHJlYWRfID0gdHJ1ZTsKLSAgICB9Ci0gIH0KLQotICBpZiAoc2lnbmFsaW5nX3RocmVhZF8t
Pm5hbWUoKS5lbXB0eSgpKSB7Ci0gICAgc2lnbmFsaW5nX3RocmVhZF8tPlNldE5hbWUoIk9SVEMt
c2lnbmFsaW5nIiwgdGhpcyk7Ci0gIH0KLQotICBpZiAoIW5ldHdvcmtfbWFuYWdlcl8pIHsKLSAg
ICBvd25lZF9uZXR3b3JrX21hbmFnZXJfLnJlc2V0KG5ldyBydGM6OkJhc2ljTmV0d29ya01hbmFn
ZXIoKSk7Ci0gICAgbmV0d29ya19tYW5hZ2VyXyA9IG93bmVkX25ldHdvcmtfbWFuYWdlcl8uZ2V0
KCk7Ci0gIH0KLSAgaWYgKCFzb2NrZXRfZmFjdG9yeV8pIHsKLSAgICBvd25lZF9zb2NrZXRfZmFj
dG9yeV8ucmVzZXQoCi0gICAgICAgIG5ldyBydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeShu
ZXR3b3JrX3RocmVhZF8pKTsKLSAgICBzb2NrZXRfZmFjdG9yeV8gPSBvd25lZF9zb2NrZXRfZmFj
dG9yeV8uZ2V0KCk7Ci0gIH0KLX0KLQotT3J0Y0ZhY3Rvcnk6On5PcnRjRmFjdG9yeSgpIHsKLSAg
UlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBpZiAod3JhcHNfc2lnbmFs
aW5nX3RocmVhZF8pIHsKLSAgICBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPlVud3Jh
cEN1cnJlbnRUaHJlYWQoKTsKLSAgfQotfQotCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxS
dHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNlPj4KLU9ydGNGYWN0b3J5OjpDcmVhdGVSdHBU
cmFuc3BvcnRDb250cm9sbGVyKCkgewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhy
ZWFkXyk7Ci0gIHJldHVybiBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q3JlYXRlUHJv
eGllZCgKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIGNoYW5uZWxfbWFuYWdlcl8uZ2V0
KCksIG51bGxfZXZlbnRfbG9nXy5nZXQoKSwKLSAgICAgIHNpZ25hbGluZ190aHJlYWRfLCB3b3Jr
ZXJfdGhyZWFkXy5nZXQoKSwgbmV0d29ya190aHJlYWRfKTsKLX0KLQotUlRDRXJyb3JPcjxzdGQ6
OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4KLU9ydGNGYWN0b3J5OjpDcmVhdGVS
dHBUcmFuc3BvcnQoCi0gICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVy
cywKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwKLSAgICBQYWNrZXRUcmFuc3Bv
cnRJbnRlcmZhY2UqIHJ0Y3AsCi0gICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZSog
dHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3Ro
cmVhZF8pOwotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIGNvcGllZF9wYXJhbWV0ZXJzID0gcGFy
YW1ldGVyczsKLSAgaWYgKGNvcGllZF9wYXJhbWV0ZXJzLnJ0Y3AuY25hbWUuZW1wdHkoKSkgewot
ICAgIGNvcGllZF9wYXJhbWV0ZXJzLnJ0Y3AuY25hbWUgPSBkZWZhdWx0X2NuYW1lXzsKLSAgfQot
ICBpZiAodHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgICByZXR1cm4gdHJhbnNwb3J0X2NvbnRy
b2xsZXItPkdldEludGVybmFsKCktPkNyZWF0ZVByb3hpZWRSdHBUcmFuc3BvcnQoCi0gICAgICAg
IGNvcGllZF9wYXJhbWV0ZXJzLCBydHAsIHJ0Y3ApOwotICB9IGVsc2UgewotICAgIC8vIElmIHx0
cmFuc3BvcnRfY29udHJvbGxlcnwgaXMgbnVsbCwgY3JlYXRlIG9uZSBhdXRvbWF0aWNhbGx5LCB3
aGljaCB0aGUKLSAgICAvLyByZXR1cm5lZCBSdHBUcmFuc3BvcnQgd2lsbCBvd24uCi0gICAgYXV0
byBjb250cm9sbGVyX3Jlc3VsdCA9IENyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIoKTsKLSAg
ICBpZiAoIWNvbnRyb2xsZXJfcmVzdWx0Lm9rKCkpIHsKLSAgICAgIHJldHVybiBjb250cm9sbGVy
X3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgICB9Ci0gICAgYXV0byBjb250cm9sbGVyID0gY29udHJv
bGxlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gICAgYXV0byB0cmFuc3BvcnRfcmVzdWx0ID0KLSAg
ICAgICAgY29udHJvbGxlci0+R2V0SW50ZXJuYWwoKS0+Q3JlYXRlUHJveGllZFJ0cFRyYW5zcG9y
dChjb3BpZWRfcGFyYW1ldGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydHAsIHJ0Y3ApOwotICAgIC8vIElmIFJ0cFRyYW5z
cG9ydCB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQsIHRyYW5zZmVyIG93bmVyc2hpcCBvZgotICAg
IC8vIHxydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJ8LiBPdGhlcndpc2UgaXQgd2lsbCBnbyBvdXQg
b2Ygc2NvcGUgYW5kIGJlCi0gICAgLy8gZGVsZXRlZCBhdXRvbWF0aWNhbGx5LgotICAgIGlmICh0
cmFuc3BvcnRfcmVzdWx0Lm9rKCkpIHsKLSAgICAgIHRyYW5zcG9ydF9yZXN1bHQudmFsdWUoKQot
ICAgICAgICAgIC0+R2V0SW50ZXJuYWwoKQotICAgICAgICAgIC0+VGFrZU93bmVyc2hpcE9mUnRw
VHJhbnNwb3J0Q29udHJvbGxlcihzdGQ6Om1vdmUoY29udHJvbGxlcikpOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJhbnNwb3J0X3Jlc3VsdDsKLSAgfQotfQotCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVl
X3B0cjxTcnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4KLU9ydGNGYWN0b3J5OjpDcmVhdGVTcnRwVHJh
bnNwb3J0KAotICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0g
ICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgUGFja2V0VHJhbnNwb3J0SW50
ZXJmYWNlKiBydGNwLAotICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UqIHRyYW5z
cG9ydF9jb250cm9sbGVyKSB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWRf
KTsKLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBjb3BpZWRfcGFyYW1ldGVycyA9IHBhcmFtZXRl
cnM7Ci0gIGlmIChjb3BpZWRfcGFyYW1ldGVycy5ydGNwLmNuYW1lLmVtcHR5KCkpIHsKLSAgICBj
b3BpZWRfcGFyYW1ldGVycy5ydGNwLmNuYW1lID0gZGVmYXVsdF9jbmFtZV87Ci0gIH0KLSAgaWYg
KHRyYW5zcG9ydF9jb250cm9sbGVyKSB7Ci0gICAgcmV0dXJuIHRyYW5zcG9ydF9jb250cm9sbGVy
LT5HZXRJbnRlcm5hbCgpLT5DcmVhdGVQcm94aWVkU3J0cFRyYW5zcG9ydCgKLSAgICAgICAgY29w
aWVkX3BhcmFtZXRlcnMsIHJ0cCwgcnRjcCk7Ci0gIH0gZWxzZSB7Ci0gICAgLy8gSWYgfHRyYW5z
cG9ydF9jb250cm9sbGVyfCBpcyBudWxsLCBjcmVhdGUgb25lIGF1dG9tYXRpY2FsbHksIHdoaWNo
IHRoZQotICAgIC8vIHJldHVybmVkIFNydHBUcmFuc3BvcnQgd2lsbCBvd24uCi0gICAgYXV0byBj
b250cm9sbGVyX3Jlc3VsdCA9IENyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIoKTsKLSAgICBp
ZiAoIWNvbnRyb2xsZXJfcmVzdWx0Lm9rKCkpIHsKLSAgICAgIHJldHVybiBjb250cm9sbGVyX3Jl
c3VsdC5Nb3ZlRXJyb3IoKTsKLSAgICB9Ci0gICAgYXV0byBjb250cm9sbGVyID0gY29udHJvbGxl
cl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gICAgYXV0byB0cmFuc3BvcnRfcmVzdWx0ID0KLSAgICAg
ICAgY29udHJvbGxlci0+R2V0SW50ZXJuYWwoKS0+Q3JlYXRlUHJveGllZFNydHBUcmFuc3BvcnQo
Y29waWVkX3BhcmFtZXRlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cCwgcnRjcCk7Ci0gICAgLy8gSWYgU3J0cFRyYW5z
cG9ydCB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQsIHRyYW5zZmVyIG93bmVyc2hpcCBvZgotICAg
IC8vIHxydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJ8LiBPdGhlcndpc2UgaXQgd2lsbCBnbyBvdXQg
b2Ygc2NvcGUgYW5kIGJlCi0gICAgLy8gZGVsZXRlZCBhdXRvbWF0aWNhbGx5LgotICAgIGlmICh0
cmFuc3BvcnRfcmVzdWx0Lm9rKCkpIHsKLSAgICAgIHRyYW5zcG9ydF9yZXN1bHQudmFsdWUoKQot
ICAgICAgICAgIC0+R2V0SW50ZXJuYWwoKQotICAgICAgICAgIC0+VGFrZU93bmVyc2hpcE9mUnRw
VHJhbnNwb3J0Q29udHJvbGxlcihzdGQ6Om1vdmUoY29udHJvbGxlcikpOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJhbnNwb3J0X3Jlc3VsdDsKLSAgfQotfQotCi1SdHBDYXBhYmlsaXRpZXMgT3J0Y0Zh
Y3Rvcnk6OkdldFJ0cFNlbmRlckNhcGFiaWxpdGllcygKLSAgICBjcmlja2V0OjpNZWRpYVR5cGUg
a2luZCkgY29uc3QgewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkXyk7Ci0g
IHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzogewot
ICAgICAgY3JpY2tldDo6QXVkaW9Db2RlY3MgY3JpY2tldF9jb2RlY3M7Ci0gICAgICBjcmlja2V0
OjpSdHBIZWFkZXJFeHRlbnNpb25zIGNyaWNrZXRfZXh0ZW5zaW9uczsKLSAgICAgIGNoYW5uZWxf
bWFuYWdlcl8tPkdldFN1cHBvcnRlZEF1ZGlvU2VuZENvZGVjcygmY3JpY2tldF9jb2RlY3MpOwot
ICAgICAgY2hhbm5lbF9tYW5hZ2VyXy0+R2V0U3VwcG9ydGVkQXVkaW9SdHBIZWFkZXJFeHRlbnNp
b25zKAotICAgICAgICAgICZjcmlja2V0X2V4dGVuc2lvbnMpOwotICAgICAgcmV0dXJuIFRvUnRw
Q2FwYWJpbGl0aWVzV2l0aEFzc2VydHMoY3JpY2tldF9jb2RlY3MsIGNyaWNrZXRfZXh0ZW5zaW9u
cyk7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzogewotICAgICAg
Y3JpY2tldDo6VmlkZW9Db2RlY3MgY3JpY2tldF9jb2RlY3M7Ci0gICAgICBjcmlja2V0OjpSdHBI
ZWFkZXJFeHRlbnNpb25zIGNyaWNrZXRfZXh0ZW5zaW9uczsKLSAgICAgIGNoYW5uZWxfbWFuYWdl
cl8tPkdldFN1cHBvcnRlZFZpZGVvQ29kZWNzKCZjcmlja2V0X2NvZGVjcyk7Ci0gICAgICBjaGFu
bmVsX21hbmFnZXJfLT5HZXRTdXBwb3J0ZWRWaWRlb1J0cEhlYWRlckV4dGVuc2lvbnMoCi0gICAg
ICAgICAgJmNyaWNrZXRfZXh0ZW5zaW9ucyk7Ci0gICAgICByZXR1cm4gVG9SdHBDYXBhYmlsaXRp
ZXNXaXRoQXNzZXJ0cyhjcmlja2V0X2NvZGVjcywgY3JpY2tldF9leHRlbnNpb25zKTsKLSAgICB9
Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEE6Ci0gICAgICByZXR1cm4gUnRwQ2Fw
YWJpbGl0aWVzKCk7Ci0gIH0KLSAgLy8gTm90IHJlYWNoZWQ7IGF2b2lkcyBjb21waWxlIHdhcm5p
bmcuCi0gIEZBVEFMKCk7Ci19Ci0KLVJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBT
ZW5kZXJJbnRlcmZhY2U+PgotT3J0Y0ZhY3Rvcnk6OkNyZWF0ZVJ0cFNlbmRlcigKLSAgICBydGM6
OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4gdHJhY2ssCi0gICAgUnRw
VHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2ln
bmFsaW5nX3RocmVhZF8pOwotICBpZiAoIXRyYWNrKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJS
T1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiQ2Fubm90IHBhc3MgbnVsbCB0cmFjayBpbnRvIENyZWF0ZVJ0cFNlbmRlci4iKTsKLSAg
fQotICBhdXRvIHJlc3VsdCA9Ci0gICAgICBDcmVhdGVSdHBTZW5kZXIoY3JpY2tldDo6TWVkaWFU
eXBlRnJvbVN0cmluZyh0cmFjay0+a2luZCgpKSwgdHJhbnNwb3J0KTsKLSAgaWYgKCFyZXN1bHQu
b2soKSkgewotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgYXV0byBlcnIgPSByZXN1bHQudmFs
dWUoKS0+U2V0VHJhY2sodHJhY2spOwotICBpZiAoIWVyci5vaygpKSB7Ci0gICAgcmV0dXJuIHN0
ZDo6bW92ZShlcnIpOwotICB9Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJUQ0Vycm9yT3I8c3Rk
Ojp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PgotT3J0Y0ZhY3Rvcnk6OkNyZWF0
ZVJ0cFNlbmRlcihjcmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQpIHsKLSAgUlRDX0RDSEVD
S19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBpZiAoa2luZCA9PSBjcmlja2V0OjpNRURJ
QV9UWVBFX0RBVEEpIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklO
VkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgY3JlYXRl
IGRhdGEgUnRwU2VuZGVyLiIpOwotICB9Ci0gIGlmICghdHJhbnNwb3J0KSB7Ci0gICAgTE9HX0FO
RF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3MgbnVsbCB0cmFuc3BvcnQgaW50byBDcmVhdGVS
dHBTZW5kZXIuIik7Ci0gIH0KLSAgcmV0dXJuIHRyYW5zcG9ydC0+R2V0SW50ZXJuYWwoKQotICAg
ICAgLT5ydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIoKQotICAgICAgLT5DcmVhdGVQcm94aWVkUnRw
U2VuZGVyKGtpbmQsIHRyYW5zcG9ydCk7Ci19Ci0KLVJ0cENhcGFiaWxpdGllcyBPcnRjRmFjdG9y
eTo6R2V0UnRwUmVjZWl2ZXJDYXBhYmlsaXRpZXMoCi0gICAgY3JpY2tldDo6TWVkaWFUeXBlIGtp
bmQpIGNvbnN0IHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBz
d2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86IHsKLSAg
ICAgIGNyaWNrZXQ6OkF1ZGlvQ29kZWNzIGNyaWNrZXRfY29kZWNzOwotICAgICAgY3JpY2tldDo6
UnRwSGVhZGVyRXh0ZW5zaW9ucyBjcmlja2V0X2V4dGVuc2lvbnM7Ci0gICAgICBjaGFubmVsX21h
bmFnZXJfLT5HZXRTdXBwb3J0ZWRBdWRpb1JlY2VpdmVDb2RlY3MoJmNyaWNrZXRfY29kZWNzKTsK
LSAgICAgIGNoYW5uZWxfbWFuYWdlcl8tPkdldFN1cHBvcnRlZEF1ZGlvUnRwSGVhZGVyRXh0ZW5z
aW9ucygKLSAgICAgICAgICAmY3JpY2tldF9leHRlbnNpb25zKTsKLSAgICAgIHJldHVybiBUb1J0
cENhcGFiaWxpdGllc1dpdGhBc3NlcnRzKGNyaWNrZXRfY29kZWNzLCBjcmlja2V0X2V4dGVuc2lv
bnMpOwotICAgIH0KLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU86IHsKLSAgICAg
IGNyaWNrZXQ6OlZpZGVvQ29kZWNzIGNyaWNrZXRfY29kZWNzOwotICAgICAgY3JpY2tldDo6UnRw
SGVhZGVyRXh0ZW5zaW9ucyBjcmlja2V0X2V4dGVuc2lvbnM7Ci0gICAgICBjaGFubmVsX21hbmFn
ZXJfLT5HZXRTdXBwb3J0ZWRWaWRlb0NvZGVjcygmY3JpY2tldF9jb2RlY3MpOwotICAgICAgY2hh
bm5lbF9tYW5hZ2VyXy0+R2V0U3VwcG9ydGVkVmlkZW9SdHBIZWFkZXJFeHRlbnNpb25zKAotICAg
ICAgICAgICZjcmlja2V0X2V4dGVuc2lvbnMpOwotICAgICAgcmV0dXJuIFRvUnRwQ2FwYWJpbGl0
aWVzV2l0aEFzc2VydHMoY3JpY2tldF9jb2RlY3MsIGNyaWNrZXRfZXh0ZW5zaW9ucyk7Ci0gICAg
fQotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9EQVRBOgotICAgICAgcmV0dXJuIFJ0cENh
cGFiaWxpdGllcygpOwotICB9Ci0gIC8vIE5vdCByZWFjaGVkOyBhdm9pZHMgY29tcGlsZSB3YXJu
aW5nLgotICBGQVRBTCgpOwotfQotCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRw
UmVjZWl2ZXJJbnRlcmZhY2U+PgotT3J0Y0ZhY3Rvcnk6OkNyZWF0ZVJ0cFJlY2VpdmVyKGNyaWNr
ZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFRy
YW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0KSB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25h
bGluZ190aHJlYWRfKTsKLSAgaWYgKGtpbmQgPT0gY3JpY2tldDo6TUVESUFfVFlQRV9EQVRBKSB7
Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRF
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGNyZWF0ZSBkYXRhIFJ0cFJlY2Vp
dmVyLiIpOwotICB9Ci0gIGlmICghdHJhbnNwb3J0KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJS
T1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiQ2Fubm90IHBhc3MgbnVsbCB0cmFuc3BvcnQgaW50byBDcmVhdGVSdHBSZWNlaXZlci4i
KTsKLSAgfQotICByZXR1cm4gdHJhbnNwb3J0LT5HZXRJbnRlcm5hbCgpCi0gICAgICAtPnJ0cF90
cmFuc3BvcnRfY29udHJvbGxlcigpCi0gICAgICAtPkNyZWF0ZVByb3hpZWRSdHBSZWNlaXZlcihr
aW5kLCB0cmFuc3BvcnQpOwotfQotCi0vLyBVZHBUcmFuc3BvcnQgZXhwZWN0cyBhbGwgbWV0aG9k
cyB0byBiZSBjYWxsZWQgb24gb25lIHRocmVhZCwgd2hpY2ggbmVlZHMgdG8KLS8vIGJlIHRoZSBu
ZXR3b3JrIHRocmVhZCwgc2luY2UgdGhhdCdzIHdoZXJlIGl0cyBzb2NrZXQgY2FuIHNhZmVseSBi
ZSB1c2VkLiBTbwotLy8gcmV0dXJuIGEgcHJveHkgdG8gdGhlIGNyZWF0ZWQgVWRwVHJhbnNwb3J0
LgotQkVHSU5fT1dORURfUFJPWFlfTUFQKFVkcFRyYW5zcG9ydCkKLVBST1hZX1dPUktFUl9USFJF
QURfREVTVFJVQ1RPUigpCi1QUk9YWV9XT1JLRVJfQ09OU1RNRVRIT0QwKHJ0Yzo6U29ja2V0QWRk
cmVzcywgR2V0TG9jYWxBZGRyZXNzKQotUFJPWFlfV09SS0VSX01FVEhPRDEoYm9vbCwgU2V0UmVt
b3RlQWRkcmVzcywgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJikKLVBST1hZX1dPUktFUl9DT05T
VE1FVEhPRDAocnRjOjpTb2NrZXRBZGRyZXNzLCBHZXRSZW1vdGVBZGRyZXNzKQotcHJvdGVjdGVk
OgotcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogR2V0SW50ZXJuYWwoKSBvdmVycmlkZSB7
Ci0gIHJldHVybiBpbnRlcm5hbCgpOwotfQotRU5EX1BST1hZX01BUCgpCi0KLVJUQ0Vycm9yT3I8
c3RkOjp1bmlxdWVfcHRyPFVkcFRyYW5zcG9ydEludGVyZmFjZT4+Ci1PcnRjRmFjdG9yeTo6Q3Jl
YXRlVWRwVHJhbnNwb3J0KGludCBmYW1pbHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQxNl90IG1pbl9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MTZfdCBtYXhfcG9ydCkgewotICBSVENfRENIRUNLX1JVTl9PTihuZXR3b3JrX3RocmVhZF8p
OwotICBpZiAoZmFtaWx5ICE9IEFGX0lORVQgJiYgZmFtaWx5ICE9IEFGX0lORVQ2KSB7Ci0gICAg
TE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAiQWRkcmVzcyBmYW1pbHkgbXVzdCBiZSBBRl9JTkVUIG9y
IEFGX0lORVQ2LiIpOwotICB9Ci0gIGlmIChtaW5fcG9ydCA+IG1heF9wb3J0KSB7Ci0gICAgTE9H
X0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1JBTkdFLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICJQb3J0IHJhbmdlIGludmFsaWQ7IG1pbmltdW0gcG9ydCBtdXN0IGJl
IGxlc3MgdGhhbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGVxdWFsIHRvIG1heCBw
b3J0LiIpOwotICB9Ci0gIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBz
b2NrZXQoCi0gICAgICBzb2NrZXRfZmFjdG9yeV8tPkNyZWF0ZVVkcFNvY2tldCgKLSAgICAgICAg
ICBydGM6OlNvY2tldEFkZHJlc3MocnRjOjpHZXRBbnlJUChmYW1pbHkpLCAwKSwgbWluX3BvcnQs
IG1heF9wb3J0KSk7Ci0gIGlmICghc29ja2V0KSB7Ci0gICAgLy8gT25seSBsb2cgYXQgd2Fybmlu
ZyBsZXZlbCwgYmVjYXVzZSB0aGlzIG1ldGhvZCBtYXkgYmUgY2FsbGVkIHdpdGgKLSAgICAvLyBz
cGVjaWZpYyBwb3J0IHJhbmdlcyB0byBkZXRlcm1pbmUgaWYgYSBwb3J0IGlzIGF2YWlsYWJsZSwg
ZXhwZWN0aW5nIHRoZQotICAgIC8vIHBvc3NpYmlsaXR5IG9mIGFuIGVycm9yLgotICAgIExPR19B
TkRfUkVUVVJOX0VSUk9SX0VYKFJUQ0Vycm9yVHlwZTo6UkVTT1VSQ0VfRVhIQVVTVEVELAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJMb2NhbCBzb2NrZXQgYWxsb2NhdGlvbiBmYWlsdXJl
LiIsIExTX1dBUk5JTkcpOwotICB9Ci0gIFJUQ19MT0coTFNfSU5GTykgPDwgIkNyZWF0ZWQgVURQ
IHNvY2tldCB3aXRoIGFkZHJlc3MgIgotICAgICAgICAgICAgICAgICAgIDw8IHNvY2tldC0+R2V0
TG9jYWxBZGRyZXNzKCkuVG9TZW5zaXRpdmVTdHJpbmcoKSA8PCAiLiI7Ci0gIC8vIE1ha2UgYSB1
bmlxdWUgZGVidWcgbmFtZSAoZm9yIGxvZ2dpbmcvZGlhZ25vc3RpY3Mgb25seSkuCi0gIHJ0Yzo6
U3RyaW5nQnVpbGRlciBvc3M7Ci0gIHN0YXRpYyBpbnQgdWRwX2lkID0gMDsKLSAgb3NzIDw8ICJ1
ZHAiIDw8IHVkcF9pZCsrOwotICByZXR1cm4gVWRwVHJhbnNwb3J0UHJveHlXaXRoSW50ZXJuYWw8
Y3JpY2tldDo6VWRwVHJhbnNwb3J0Pjo6Q3JlYXRlKAotICAgICAgc2lnbmFsaW5nX3RocmVhZF8s
IG5ldHdvcmtfdGhyZWFkXywKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpVZHBUcmFu
c3BvcnQ+KAotICAgICAgICAgIG5ldyBjcmlja2V0OjpVZHBUcmFuc3BvcnQob3NzLnN0cigpLCBz
dGQ6Om1vdmUoc29ja2V0KSkpKTsKLX0KLQotcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvU291cmNl
SW50ZXJmYWNlPiBPcnRjRmFjdG9yeTo6Q3JlYXRlQXVkaW9Tb3VyY2UoCi0gICAgY29uc3QgY3Jp
Y2tldDo6QXVkaW9PcHRpb25zJiBvcHRpb25zKSB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25h
bGluZ190aHJlYWRfKTsKLSAgcmV0dXJuIHJ0Yzo6c2NvcGVkX3JlZnB0cjxMb2NhbEF1ZGlvU291
cmNlPigKLSAgICAgIExvY2FsQXVkaW9Tb3VyY2U6OkNyZWF0ZSgmb3B0aW9ucykpOwotfQotCi1y
dGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9UcmFja0ludGVyZmFjZT4gT3J0Y0ZhY3Rvcnk6OkNyZWF0
ZVZpZGVvVHJhY2soCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlkLAotICAgIFZpZGVvVHJhY2tT
b3VyY2VJbnRlcmZhY2UqIHNvdXJjZSkgewotICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdf
dGhyZWFkXyk7Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlb1RyYWNrSW50ZXJmYWNlPiB0cmFj
aygKLSAgICAgIFZpZGVvVHJhY2s6OkNyZWF0ZShpZCwgc291cmNlLCB3b3JrZXJfdGhyZWFkXy5n
ZXQoKSkpOwotICByZXR1cm4gVmlkZW9UcmFja1Byb3h5OjpDcmVhdGUoc2lnbmFsaW5nX3RocmVh
ZF8sIHdvcmtlcl90aHJlYWRfLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhY2spOwotfQotCi1ydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9UcmFja0ludGVyZmFjZT4g
T3J0Y0ZhY3Rvcnk6OkNyZWF0ZUF1ZGlvVHJhY2soCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlk
LAotICAgIEF1ZGlvU291cmNlSW50ZXJmYWNlKiBzb3VyY2UpIHsKLSAgUlRDX0RDSEVDS19SVU5f
T04oc2lnbmFsaW5nX3RocmVhZF8pOwotICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9UcmFja0lu
dGVyZmFjZT4gdHJhY2soQXVkaW9UcmFjazo6Q3JlYXRlKGlkLCBzb3VyY2UpKTsKLSAgcmV0dXJu
IEF1ZGlvVHJhY2tQcm94eTo6Q3JlYXRlKHNpZ25hbGluZ190aHJlYWRfLCB0cmFjayk7Ci19Ci0K
LS8vIHN0YXRpYwotUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZh
Y2U+PiBPcnRjRmFjdG9yeTo6Q3JlYXRlX3MoCi0gICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhy
ZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgIHJ0Yzo6TmV0d29y
a01hbmFnZXIqIG5ldHdvcmtfbWFuYWdlciwKLSAgICBydGM6OlBhY2tldFNvY2tldEZhY3Rvcnkq
IHNvY2tldF9mYWN0b3J5LAotICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG0sCi0gICAgY3JpY2tl
dDo6TWVkaWFFbmdpbmVJbnRlcmZhY2UqIG1lZGlhX2VuZ2luZSwKLSAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3Rv
cnkpIHsKLSAgLy8gQWRkIHRoZSB1bmlxdWVfcHRyIHdyYXBwZXIgYmFjay4KLSAgc3RkOjp1bmlx
dWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBvd25lZF9tZWRpYV9lbmdpbmUo
Ci0gICAgICBtZWRpYV9lbmdpbmUpOwotICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3Rvcnk+IG5l
d19mYWN0b3J5KG5ldyBPcnRjRmFjdG9yeSgKLSAgICAgIG5ldHdvcmtfdGhyZWFkLCBzaWduYWxp
bmdfdGhyZWFkLCBuZXR3b3JrX21hbmFnZXIsIHNvY2tldF9mYWN0b3J5LCBhZG0sCi0gICAgICBh
dWRpb19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSkpOwotICBSVENFcnJv
ciBlcnIgPSBuZXdfZmFjdG9yeS0+SW5pdGlhbGl6ZShzdGQ6Om1vdmUob3duZWRfbWVkaWFfZW5n
aW5lKSk7Ci0gIGlmICghZXJyLm9rKCkpIHsKLSAgICByZXR1cm4gc3RkOjptb3ZlKGVycik7Ci0g
IH0KLSAgLy8gUmV0dXJuIGEgcHJveHkgc28gdGhhdCBhbnkgY2FsbHMgb24gdGhlIHJldHVybmVk
IG9iamVjdCAoaW5jbHVkaW5nCi0gIC8vIGRlc3RydWN0b3IpIGhhcHBlbiBvbiB0aGUgc2lnbmFs
aW5nIHRocmVhZC4KLSAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZyA9IG5ld19mYWN0b3J5LT5zaWdu
YWxpbmdfdGhyZWFkKCk7Ci0gIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrID0gbmV3X2ZhY3RvcnktPm5l
dHdvcmtfdGhyZWFkKCk7Ci0gIHJldHVybiBPcnRjRmFjdG9yeVByb3h5OjpDcmVhdGUoc2lnbmFs
aW5nLCBuZXR3b3JrLCBzdGQ6Om1vdmUobmV3X2ZhY3RvcnkpKTsKLX0KLQotUlRDRXJyb3IgT3J0
Y0ZhY3Rvcnk6OkluaXRpYWxpemUoCi0gICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlh
RW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04oc2ln
bmFsaW5nX3RocmVhZF8pOwotICAvLyBUT0RPKGRlYWRiZWVmKTogR2V0IHJpZCBvZiByZXF1aXJl
bWVudCB0byBob3AgdG8gd29ya2VyIHRocmVhZCBoZXJlLgotICBpZiAoIW1lZGlhX2VuZ2luZSkg
ewotICAgIG1lZGlhX2VuZ2luZSA9Ci0gICAgICAgIHdvcmtlcl90aHJlYWRfLT5JbnZva2U8c3Rk
Ojp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPj4oCi0gICAgICAgICAg
ICBSVENfRlJPTV9IRVJFLCBydGM6OkJpbmQoJk9ydGNGYWN0b3J5OjpDcmVhdGVNZWRpYUVuZ2lu
ZV93LCB0aGlzKSk7Ci0gIH0KLQotICBjaGFubmVsX21hbmFnZXJfLnJlc2V0KG5ldyBjcmlja2V0
OjpDaGFubmVsTWFuYWdlcigKLSAgICAgIHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpLCBhYnNsOjpt
YWtlX3VuaXF1ZTxjcmlja2V0OjpSdHBEYXRhRW5naW5lPigpLAotICAgICAgd29ya2VyX3RocmVh
ZF8uZ2V0KCksIG5ldHdvcmtfdGhyZWFkXykpOwotICBjaGFubmVsX21hbmFnZXJfLT5TZXRWaWRl
b1J0eEVuYWJsZWQodHJ1ZSk7Ci0gIGlmICghY2hhbm5lbF9tYW5hZ2VyXy0+SW5pdCgpKSB7Ci0g
ICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGluaXRpYWxpemUgQ2hhbm5lbE1hbmFn
ZXIuIik7Ci0gIH0KLSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1zdGQ6OnVuaXF1ZV9w
dHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJbnRlcmZhY2U+Ci1PcnRjRmFjdG9yeTo6Q3JlYXRlTWVk
aWFFbmdpbmVfdygpIHsKLSAgUlRDX0RDSEVDS19SVU5fT04od29ya2VyX3RocmVhZF8uZ2V0KCkp
OwotICAvLyBUaGUgbnVsbCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsIGZhY3RvcmllcyB0aGF0IGNv
dWxkIGJlIHBhc3NlZCBpbnRvIHRoZQotICAvLyBPcnRjRmFjdG9yeSwgYnV0IGFyZW4ndCB5ZXQu
Ci0gIC8vCi0gIC8vIE5vdGUgdGhhdCB8YWRtX3wgbWF5IGJlIG51bGwsIGluIHdoaWNoIGNhc2Ug
dGhlIHBsYXRmb3JtLXNwZWNpZmljIGRlZmF1bHQKLSAgLy8gQXVkaW9EZXZpY2VNb2R1bGUgd2ls
bCBiZSB1c2VkLgotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5l
SW50ZXJmYWNlPigKLSAgICAgIGNyaWNrZXQ6OldlYlJ0Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3Jl
YXRlKAotICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGV2aWNlTW9k
dWxlPihhZG1fKSwKLSAgICAgICAgICBhdWRpb19lbmNvZGVyX2ZhY3RvcnlfLCBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnlfLAotICAgICAgICAgIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpblZpZGVvRW5jb2Rl
ckZhY3RvcnkoKSwKLSAgICAgICAgICB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5WaWRlb0RlY29kZXJG
YWN0b3J5KCksIG51bGxwdHIsCi0gICAgICAgICAgd2VicnRjOjpBdWRpb1Byb2Nlc3NpbmdCdWls
ZGVyKCkuQ3JlYXRlKCkpKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFj
dG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9v
cnRjZmFjdG9yeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzJmNjEyMWRiYmQ5
MmEzOGU2OWFmNWNhNzAzYzgxYTQzNTgyMzJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL29ydGMvb3J0Y2ZhY3RvcnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0v
KgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE9SVENfT1JUQ0ZBQ1RPUllfSF8KLSNkZWZpbmUg
T1JUQ19PUlRDRkFDVE9SWV9IXwotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHN0cmlu
Zz4KLQotI2luY2x1ZGUgImFwaS9vcnRjL29ydGNmYWN0b3J5aW50ZXJmYWNlLmgiCi0jaW5jbHVk
ZSAibWVkaWEvYmFzZS9tZWRpYWVuZ2luZS5oIgotI2luY2x1ZGUgIm1lZGlhL2VuZ2luZS93ZWJy
dGNtZWRpYWVuZ2luZS5oIgotI2luY2x1ZGUgInBjL2NoYW5uZWxtYW5hZ2VyLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3Bl
ZF9yZWZfcHRyLmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi0vLyBJbXBsZW1lbnRhdGlvbiBv
ZiBPcnRjRmFjdG9yeUludGVyZmFjZS4KLS8vCi0vLyBTZWUgb3J0Y2ZhY3RvcnlpbnRlcmZhY2Uu
aCBmb3IgZG9jdW1lbnRhdGlvbi4KLWNsYXNzIE9ydGNGYWN0b3J5IDogcHVibGljIE9ydGNGYWN0
b3J5SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIH5PcnRjRmFjdG9yeSgpIG92ZXJyaWRlOwotCi0g
IC8vIEludGVybmFsLW9ubHkgQ3JlYXRlIG1ldGhvZCB0aGF0IGFsbG93cyBwYXNzaW5nIGluIGEg
ZmFrZSBtZWRpYSBlbmdpbmUsCi0gIC8vIGZvciB0ZXN0aW5nLgotICBzdGF0aWMgUlRDRXJyb3JP
cjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+PiBDcmVhdGUoCi0gICAgICBy
dGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCi0gICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5n
X3RocmVhZCwKLSAgICAgIHJ0Yzo6TmV0d29ya01hbmFnZXIqIG5ldHdvcmtfbWFuYWdlciwKLSAg
ICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnksCi0gICAgICBBdWRp
b0RldmljZU1vZHVsZSogYWRtLAotICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlh
RW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUsCi0gICAgICBydGM6OnNjb3BlZF9yZWZwdHI8
QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFjdG9yeSk7
Ci0KLSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlcklu
dGVyZmFjZT4+Ci0gIENyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIoKSBvdmVycmlkZTsKLQot
ICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+PiBDcmVh
dGVSdHBUcmFuc3BvcnQoCi0gICAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLAotICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgICBQYWNr
ZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0Y3AsCi0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVy
SW50ZXJmYWNlKiB0cmFuc3BvcnRfY29udHJvbGxlcikgb3ZlcnJpZGU7Ci0KLSAgUlRDRXJyb3JP
cjxzdGQ6OnVuaXF1ZV9wdHI8U3J0cFRyYW5zcG9ydEludGVyZmFjZT4+IENyZWF0ZVNydHBUcmFu
c3BvcnQoCi0gICAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAot
ICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgICBQYWNrZXRUcmFuc3Bv
cnRJbnRlcmZhY2UqIHJ0Y3AsCi0gICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJmYWNl
KiB0cmFuc3BvcnRfY29udHJvbGxlcikgb3ZlcnJpZGU7Ci0KLSAgUnRwQ2FwYWJpbGl0aWVzIEdl
dFJ0cFNlbmRlckNhcGFiaWxpdGllcygKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kKSBj
b25zdCBvdmVycmlkZTsKLQotICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwU2Vu
ZGVySW50ZXJmYWNlPj4gQ3JlYXRlUnRwU2VuZGVyKAotICAgICAgcnRjOjpzY29wZWRfcmVmcHRy
PE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+IHRyYWNrLAotICAgICAgUnRwVHJhbnNwb3J0SW50
ZXJmYWNlKiB0cmFuc3BvcnQpIG92ZXJyaWRlOwotCi0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVf
cHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PiBDcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlj
a2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNw
b3J0KSBvdmVycmlkZTsKLQotICBSdHBDYXBhYmlsaXRpZXMgR2V0UnRwUmVjZWl2ZXJDYXBhYmls
aXRpZXMoCi0gICAgICBjcmlja2V0OjpNZWRpYVR5cGUga2luZCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
LSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y1J0cFJlY2VpdmVySW50ZXJmYWNlPj4g
Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICAg
IFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0KSBvdmVycmlkZTsKLQotICBSVENFcnJv
ck9yPHN0ZDo6dW5pcXVlX3B0cjxVZHBUcmFuc3BvcnRJbnRlcmZhY2U+PgotICBDcmVhdGVVZHBU
cmFuc3BvcnQoaW50IGZhbWlseSwgdWludDE2X3QgbWluX3BvcnQsIHVpbnQxNl90IG1heF9wb3J0
KSBvdmVycmlkZTsKLQotICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Tb3VyY2VJbnRlcmZhY2U+
IENyZWF0ZUF1ZGlvU291cmNlKAotICAgICAgY29uc3QgY3JpY2tldDo6QXVkaW9PcHRpb25zJiBv
cHRpb25zKSBvdmVycmlkZTsKLQotICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9UcmFja0ludGVy
ZmFjZT4gQ3JlYXRlVmlkZW9UcmFjaygKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwKLSAg
ICAgIFZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2UqIHNvdXJjZSkgb3ZlcnJpZGU7Ci0KLSAgcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvVHJhY2tJbnRlcmZhY2U+IENyZWF0ZUF1ZGlvVHJhY2soCi0g
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaWQsCi0gICAgICBBdWRpb1NvdXJjZUludGVyZmFjZSog
c291cmNlKSBvdmVycmlkZTsKLQotICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQoKSB7IHJl
dHVybiBuZXR3b3JrX3RocmVhZF87IH0KLSAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQoKSB7
IHJldHVybiB3b3JrZXJfdGhyZWFkXy5nZXQoKTsgfQotICBydGM6OlRocmVhZCogc2lnbmFsaW5n
X3RocmVhZCgpIHsgcmV0dXJuIHNpZ25hbGluZ190aHJlYWRfOyB9Ci0KLSBwcml2YXRlOgotICAv
LyBTaG91bGQgb25seSBiZSBjYWxsZWQgYnkgT3J0Y0ZhY3RvcnlJbnRlcmZhY2U6OkNyZWF0ZS4K
LSAgT3J0Y0ZhY3RvcnkocnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgICAgICAgICAg
ICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICAgICAgICAgICAgcnRjOjpOZXR3
b3JrTWFuYWdlciogbmV0d29ya19tYW5hZ2VyLAotICAgICAgICAgICAgICBydGM6OlBhY2tldFNv
Y2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAotICAgICAgICAgICAgICBBdWRpb0RldmljZU1v
ZHVsZSogYWRtLAotICAgICAgICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVy
RmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgICAgICAgICAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KTsKLQot
ICBSVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJm
YWNlPj4KLSAgQ3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcihjb25zdCBSdHBUcmFuc3BvcnRQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKLQotICAvLyBUaHJlYWQ6Okludm9rZSBkb2Vzbid0IHN1
cHBvcnQgbW92ZS1vbmx5IGFyZ3VtZW50cywgc28gd2UgbmVlZCB0byByZW1vdmUKLSAgLy8gdGhl
IHVuaXF1ZV9wdHIgd3JhcHBlciBmcm9tIG1lZGlhX2VuZ2luZS4gVE9ETyhkZWFkYmVlZik6IEZp
eCB0aGlzLgotICBzdGF0aWMgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJ
bnRlcmZhY2U+PiBDcmVhdGVfcygKLSAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwK
LSAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgICAgcnRjOjpOZXR3b3Jr
TWFuYWdlciogbmV0d29ya19tYW5hZ2VyLAotICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5
KiBzb2NrZXRfZmFjdG9yeSwKLSAgICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG0sCi0gICAgICBj
cmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZSogbWVkaWFfZW5naW5lLAotICAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwK
LSAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnkpOwotCi0gIC8vIFBlcmZvcm1zIGluaXRpYWxpemF0aW9uIHRoYXQgY2FuIGZh
aWwuIENhbGxlZCBieSBmYWN0b3J5IG1ldGhvZCBhZnRlcgotICAvLyBjb25zdHJ1Y3Rpb24sIGFu
ZCBpZiBpdCBmYWlscywgbm8gb2JqZWN0IGlzIHJldHVybmVkLgotICBSVENFcnJvciBJbml0aWFs
aXplKAotICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNl
PiBtZWRpYV9lbmdpbmUpOwotICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6TWVkaWFFbmdpbmVJ
bnRlcmZhY2U+IENyZWF0ZU1lZGlhRW5naW5lX3coKTsKLQotICAvLyBUaHJlYWRzIGFuZCBuZXR3
b3JraW5nIG9iamVjdHMuCi0gIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZF87Ci0gIHJ0Yzo6
VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkXzsKLSAgcnRjOjpOZXR3b3JrTWFuYWdlciogbmV0d29y
a19tYW5hZ2VyXzsKLSAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFjdG9yeV87
Ci0gIEF1ZGlvRGV2aWNlTW9kdWxlKiBhZG1fOwotICAvLyBJZiB3ZSBjcmVhdGVkL293biB0aGUg
b2JqZWN0cyBhYm92ZSwgdGhlc2Ugd2lsbCBiZSBub24tbnVsbCBhbmQgdGh1cyB3aWxsCi0gIC8v
IGJlIHJlbGVhc2VkIGF1dG9tYXRpY2FsbHkgdXBvbiBkZXN0cnVjdGlvbi4KLSAgc3RkOjp1bmlx
dWVfcHRyPHJ0Yzo6VGhyZWFkPiBvd25lZF9uZXR3b3JrX3RocmVhZF87Ci0gIGJvb2wgd3JhcHNf
c2lnbmFsaW5nX3RocmVhZF8gPSBmYWxzZTsKLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6TmV0d29y
a01hbmFnZXI+IG93bmVkX25ldHdvcmtfbWFuYWdlcl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxydGM6
OlBhY2tldFNvY2tldEZhY3Rvcnk+IG93bmVkX3NvY2tldF9mYWN0b3J5XzsKLSAgLy8gV2UgYWx3
YXlzIG93biB0aGUgd29ya2VyIHRocmVhZC4KLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFk
PiB3b3JrZXJfdGhyZWFkXzsKLSAgLy8gTWVkaWEtcmVsZWF0ZWQgb2JqZWN0cy4KLSAgc3RkOjp1
bmlxdWVfcHRyPFJ0Y0V2ZW50TG9nPiBudWxsX2V2ZW50X2xvZ187Ci0gIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnlfOwotICBydGM6
OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
XzsKLSAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkNoYW5uZWxNYW5hZ2VyPiBjaGFubmVsX21h
bmFnZXJfOwotICAvLyBEZWZhdWx0IENOQU1FIHRvIHVzZSBmb3IgUnRwVHJhbnNwb3J0cyBpZiBu
b25lIGlzIHBhc3NlZCBpbi4KLSAgc3RkOjpzdHJpbmcgZGVmYXVsdF9jbmFtZV87Ci0KLSAgZnJp
ZW5kIGNsYXNzIE9ydGNGYWN0b3J5SW50ZXJmYWNlOwotCi0gIFJUQ19ESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oT3J0Y0ZhY3RvcnkpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0j
ZW5kaWYgIC8vIE9SVENfT1JUQ0ZBQ1RPUllfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y2ZhY3RvcnlfaW50ZWdyYXRpb250
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9v
cnRjZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDYyZjI5NTIwZWQ4ZDc2ODg4YTcxODkwYTc3MTU5NjdhMTkxMThmMTUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MK
KysrIC9kZXYvbnVsbApAQCAtMSw3MjQgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBU
aGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lu
Y2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6cGFpciwgc3Rk
Ojptb3ZlLgotCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29k
ZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19l
bmNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJhcGkvb3J0Yy9vcnRjZmFjdG9yeWludGVyZmFj
ZS5oIgotI2luY2x1ZGUgIm9ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJwMnAv
YmFzZS91ZHB0cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJwYy90ZXN0L2Zha2VhdWRpb2NhcHR1cmVt
b2R1bGUuaCIKLSNpbmNsdWRlICJwYy90ZXN0L2Zha2VwZXJpb2RpY3ZpZGVvdHJhY2tzb3VyY2Uu
aCIKLSNpbmNsdWRlICJwYy90ZXN0L2Zha2V2aWRlb3RyYWNrcmVuZGVyZXIuaCIKLSNpbmNsdWRl
ICJwYy92aWRlb3RyYWNrc291cmNlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0
aW9uLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZmFrZW5ldHdvcmsuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9ndW5pdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9hcmNoLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdmlydHVhbHNvY2tl
dHNlcnZlci5oIgotCi1uYW1lc3BhY2UgewotCi1jb25zdCBpbnQga0RlZmF1bHRUaW1lb3V0ID0g
MTAwMDA7ICAgIC8vIDEwIHNlY29uZHMuCi1jb25zdCBpbnQga1JlY2VpdmluZ0R1cmF0aW9uID0g
MTAwMDsgIC8vIDEgc2Vjb25kLgotCi0vLyBEZWZhdWx0IG51bWJlciBvZiBhdWRpby92aWRlbyBm
cmFtZXMgdG8gd2FpdCBmb3IgYmVmb3JlIGNvbnNpZGVyaW5nIGEgdGVzdCBhCi0vLyBzdWNjZXNz
LgotY29uc3QgaW50IGtEZWZhdWx0TnVtRnJhbWVzID0gMzsKLWNvbnN0IHJ0Yzo6SVBBZGRyZXNz
IGtJUHY0TG9jYWxIb3N0QWRkcmVzcyA9Ci0gICAgcnRjOjpJUEFkZHJlc3MoMHg3RjAwMDAwMSk7
ICAvLyAxMjcuMC4wLjEKLQotc3RhdGljIGNvbnN0IGNoYXIga1Rlc3RLZXlQYXJhbXMxW10gPQot
ICAgICJpbmxpbmU6V1ZOZlgxOXpaVzFqZEd3Z0tza2dld2t5TWpBN2ZRcDlDblZ1YkdWeiI7Ci1z
dGF0aWMgY29uc3QgY2hhciBrVGVzdEtleVBhcmFtczJbXSA9Ci0gICAgImlubGluZTpQUzF1UUNW
ZWVDRkNhblZtY2prcGF5d2pOV2hjWUQwbVhYdHhhVkJSIjsKLXN0YXRpYyBjb25zdCBjaGFyIGtU
ZXN0S2V5UGFyYW1zM1tdID0KLSAgICAiaW5saW5lOldWTmZYMTl6WlcxamRHd2dLc2tnZXdreU1q
QTdmUXA5Q25WdWJHVmEiOwotc3RhdGljIGNvbnN0IGNoYXIga1Rlc3RLZXlQYXJhbXM0W10gPQot
ICAgICJpbmxpbmU6V1ZOZlgxOXpaVzFqZEd3Z0tza2dld2t5TWpBN2ZRcDlDblZ1YkdWYiI7Ci1z
dGF0aWMgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1zIGtUZXN0Q3J5cHRvUGFyYW1zMSgxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFF
U19DTV8xMjhfSE1BQ19TSEExXzgwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtUZXN0S2V5UGFyYW1zMSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiKTsKLXN0YXRpYyBjb25zdCBj
cmlja2V0OjpDcnlwdG9QYXJhbXMga1Rlc3RDcnlwdG9QYXJhbXMyKDEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUVTX0NNXzEyOF9ITUFD
X1NIQTFfODAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga1Rlc3RLZXlQYXJhbXMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiIpOwotc3RhdGljIGNvbnN0IGNyaWNrZXQ6OkNyeXB0
b1BhcmFtcyBrVGVzdENyeXB0b1BhcmFtczMoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBRVNfQ01fMTI4X0hNQUNfU0hBMV84MCIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVGVz
dEtleVBhcmFtczMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiIik7Ci1zdGF0aWMgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1zIGtUZXN0
Q3J5cHRvUGFyYW1zNCgxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkFFU19DTV8xMjhfSE1BQ19TSEExXzgwIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtUZXN0S2V5UGFyYW1zNCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIi
KTsKLX0gIC8vIG5hbWVzcGFjZQotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotLy8gVXNlZCB0byB0
ZXN0IHRoYXQgdGhpbmdzIHdvcmsgZW5kLXRvLWVuZCB3aGVuIHVzaW5nIHRoZSBkZWZhdWx0Ci0v
LyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhyZWFkcy9ldGMuIHByb3ZpZGVkIGJ5IE9ydGNGYWN0b3J5
LCB3aXRoIHRoZSBleGNlcHRpb24KLS8vIG9mIHVzaW5nIGEgdmlydHVhbCBuZXR3b3JrLgotLy8K
LS8vIEJ5IGRlZmF1bHQsIHRoZSB2aXJ0dWFsIG5ldHdvcmsgbWFuYWdlciBkb2Vzbid0IGVudW1l
cmF0ZSBhbnkgbmV0d29ya3MsIGJ1dAotLy8gc29ja2V0cyBjYW4gc3RpbGwgYmUgY3JlYXRlZCBp
biB0aGlzIHN0YXRlLgotY2xhc3MgT3J0Y0ZhY3RvcnlJbnRlZ3JhdGlvblRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOgotICBPcnRjRmFjdG9yeUludGVncmF0aW9uVGVzdCgp
Ci0gICAgICA6IG5ldHdvcmtfdGhyZWFkXygmdmlydHVhbF9zb2NrZXRfc2VydmVyXyksCi0gICAg
ICAgIGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUxXyhGYWtlQXVkaW9DYXB0dXJlTW9kdWxlOjpD
cmVhdGUoKSksCi0gICAgICAgIGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUyXyhGYWtlQXVkaW9D
YXB0dXJlTW9kdWxlOjpDcmVhdGUoKSkgewotICAgIC8vIFNvY2tldHMgYXJlIGJvdW5kIHRvIHRo
ZSBBTlkgYWRkcmVzcywgc28gdGhpcyBpcyBuZWVkZWQgdG8gdGVsbCB0aGUKLSAgICAvLyB2aXJ0
dWFsIG5ldHdvcmsgd2hpY2ggYWRkcmVzcyB0byB1c2UgaW4gdGhpcyBjYXNlLgotICAgIHZpcnR1
YWxfc29ja2V0X3NlcnZlcl8uU2V0RGVmYXVsdFJvdXRlKGtJUHY0TG9jYWxIb3N0QWRkcmVzcyk7
Ci0gICAgbmV0d29ya190aHJlYWRfLlNldE5hbWUoIlRlc3ROZXR3b3JrVGhyZWFkIiwgdGhpcyk7
Ci0gICAgbmV0d29ya190aHJlYWRfLlN0YXJ0KCk7Ci0gICAgLy8gTmVlZCB0byBjcmVhdGUgYWZ0
ZXIgbmV0d29yayB0aHJlYWQgaXMgc3RhcnRlZC4KLSAgICBvcnRjX2ZhY3RvcnkxXyA9Ci0gICAg
ICAgIE9ydGNGYWN0b3J5SW50ZXJmYWNlOjpDcmVhdGUoCi0gICAgICAgICAgICAmbmV0d29ya190
aHJlYWRfLCBudWxscHRyLCAmZmFrZV9uZXR3b3JrX21hbmFnZXJfLCBudWxscHRyLAotICAgICAg
ICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTFfLCBDcmVhdGVCdWlsdGluQXVkaW9FbmNv
ZGVyRmFjdG9yeSgpLAotICAgICAgICAgICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3Rv
cnkoKSkKLSAgICAgICAgICAgIC5Nb3ZlVmFsdWUoKTsKLSAgICBvcnRjX2ZhY3RvcnkyXyA9Ci0g
ICAgICAgIE9ydGNGYWN0b3J5SW50ZXJmYWNlOjpDcmVhdGUoCi0gICAgICAgICAgICAmbmV0d29y
a190aHJlYWRfLCBudWxscHRyLCAmZmFrZV9uZXR3b3JrX21hbmFnZXJfLCBudWxscHRyLAotICAg
ICAgICAgICAgZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTJfLCBDcmVhdGVCdWlsdGluQXVkaW9F
bmNvZGVyRmFjdG9yeSgpLAotICAgICAgICAgICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZh
Y3RvcnkoKSkKLSAgICAgICAgICAgIC5Nb3ZlVmFsdWUoKTsKLSAgfQotCi0gcHJvdGVjdGVkOgot
ICB0eXBlZGVmIHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8VWRwVHJhbnNwb3J0SW50ZXJmYWNl
PiwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFVkcFRyYW5zcG9ydEludGVy
ZmFjZT4+Ci0gICAgICBVZHBUcmFuc3BvcnRQYWlyOwotICB0eXBlZGVmIHN0ZDo6cGFpcjxzdGQ6
OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPiwKLSAgICAgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVyZmFjZT4+Ci0gICAgICBSdHBUcmFuc3Bv
cnRQYWlyOwotICB0eXBlZGVmIHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8U3J0cFRyYW5zcG9y
dEludGVyZmFjZT4sCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJh
bnNwb3J0SW50ZXJmYWNlPj4KLSAgICAgIFNydHBUcmFuc3BvcnRQYWlyOwotICB0eXBlZGVmIHN0
ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4s
Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9s
bGVySW50ZXJmYWNlPj4KLSAgICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJQYWlyOwotCi0gIC8v
IEhlbHBlciBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgb25lIFVEUCB0cmFuc3BvcnQgZWFjaCBmb3Ig
fG9ydGNfZmFjdG9yeTFffAotICAvLyBhbmQgfG9ydGNfZmFjdG9yeTJffCwgYW5kIGNvbm5lY3Rz
IHRoZW0uCi0gIFVkcFRyYW5zcG9ydFBhaXIgQ3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5zcG9ydFBh
aXIoKSB7Ci0gICAgYXV0byB0cmFuc3BvcnQxID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVVkcFRy
YW5zcG9ydChBRl9JTkVUKS5Nb3ZlVmFsdWUoKTsKLSAgICBhdXRvIHRyYW5zcG9ydDIgPSBvcnRj
X2ZhY3RvcnkyXy0+Q3JlYXRlVWRwVHJhbnNwb3J0KEFGX0lORVQpLk1vdmVWYWx1ZSgpOwotICAg
IHRyYW5zcG9ydDEtPlNldFJlbW90ZUFkZHJlc3MoCi0gICAgICAgIHJ0Yzo6U29ja2V0QWRkcmVz
cyh2aXJ0dWFsX3NvY2tldF9zZXJ2ZXJfLkdldERlZmF1bHRSb3V0ZShBRl9JTkVUKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydDItPkdldExvY2FsQWRkcmVzcygpLnBvcnQo
KSkpOwotICAgIHRyYW5zcG9ydDItPlNldFJlbW90ZUFkZHJlc3MoCi0gICAgICAgIHJ0Yzo6U29j
a2V0QWRkcmVzcyh2aXJ0dWFsX3NvY2tldF9zZXJ2ZXJfLkdldERlZmF1bHRSb3V0ZShBRl9JTkVU
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydDEtPkdldExvY2FsQWRkcmVz
cygpLnBvcnQoKSkpOwotICAgIHJldHVybiB7c3RkOjptb3ZlKHRyYW5zcG9ydDEpLCBzdGQ6Om1v
dmUodHJhbnNwb3J0Mil9OwotICB9Ci0KLSAgLy8gQ3JlYXRlcyBvbmUgdHJhbnNwb3J0IGNvbnRy
b2xsZXIgZWFjaCBmb3IgfG9ydGNfZmFjdG9yeTFffCBhbmQKLSAgLy8gfG9ydGNfZmFjdG9yeTJf
fC4KLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclBhaXIgQ3JlYXRlUnRwVHJhbnNwb3J0Q29udHJv
bGxlclBhaXIoKSB7Ci0gICAgcmV0dXJuIHtvcnRjX2ZhY3RvcnkxXy0+Q3JlYXRlUnRwVHJhbnNw
b3J0Q29udHJvbGxlcigpLk1vdmVWYWx1ZSgpLAotICAgICAgICAgICAgb3J0Y19mYWN0b3J5Ml8t
PkNyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIoKS5Nb3ZlVmFsdWUoKX07Ci0gIH0KLQotICAv
LyBIZWxwZXIgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgcGFpciBvZiBSdHBUcmFuc3BvcnRzIGJl
dHdlZW4KLSAgLy8gfG9ydGNfZmFjdG9yeTFffCBhbmQgfG9ydGNfZmFjdG9yeTJffC4gRXhwZWN0
ZWQgdG8gYmUgY2FsbGVkIHdpdGggdGhlCi0gIC8vIHJlc3VsdCBvZiBDcmVhdGVBbmRDb25uZWN0
VWRwVHJhbnNwb3J0UGFpci4gfHJ0Y3BfdWRwX3RyYW5zcG9ydHN8IGNhbiBiZQotICAvLyBlbXB0
eSBpZiBSVENQIG11eGluZyBpcyB1c2VkLiB8dHJhbnNwb3J0X2NvbnRyb2xsZXJzfCBjYW4gYmUg
ZW1wdHkgaWYKLSAgLy8gdGhlc2UgdHJhbnNwb3J0cyBhcmUgYmVpbmcgY3JlYXRlZCB1c2luZyBh
IGRlZmF1bHQgdHJhbnNwb3J0IGNvbnRyb2xsZXIuCi0gIFJ0cFRyYW5zcG9ydFBhaXIgQ3JlYXRl
UnRwVHJhbnNwb3J0UGFpcigKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsCi0gICAgICBjb25zdCBVZHBUcmFuc3BvcnRQYWlyJiBydHBfdWRwX3RyYW5zcG9y
dHMsCi0gICAgICBjb25zdCBVZHBUcmFuc3BvcnRQYWlyJiBydGNwX3VkcF90cmFuc3BvcnRzLAot
ICAgICAgY29uc3QgUnRwVHJhbnNwb3J0Q29udHJvbGxlclBhaXImIHRyYW5zcG9ydF9jb250cm9s
bGVycykgewotICAgIGF1dG8gdHJhbnNwb3J0X3Jlc3VsdDEgPSBvcnRjX2ZhY3RvcnkxXy0+Q3Jl
YXRlUnRwVHJhbnNwb3J0KAotICAgICAgICBwYXJhbWV0ZXJzLCBydHBfdWRwX3RyYW5zcG9ydHMu
Zmlyc3QuZ2V0KCksCi0gICAgICAgIHJ0Y3BfdWRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCksIHRy
YW5zcG9ydF9jb250cm9sbGVycy5maXJzdC5nZXQoKSk7Ci0gICAgYXV0byB0cmFuc3BvcnRfcmVz
dWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICAgIHBhcmFt
ZXRlcnMsIHJ0cF91ZHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCksCi0gICAgICAgIHJ0Y3BfdWRw
X3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpLCB0cmFuc3BvcnRfY29udHJvbGxlcnMuc2Vjb25kLmdl
dCgpKTsKLSAgICByZXR1cm4ge3RyYW5zcG9ydF9yZXN1bHQxLk1vdmVWYWx1ZSgpLCB0cmFuc3Bv
cnRfcmVzdWx0Mi5Nb3ZlVmFsdWUoKX07Ci0gIH0KLQotICBTcnRwVHJhbnNwb3J0UGFpciBDcmVh
dGVTcnRwVHJhbnNwb3J0UGFpcigKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsCi0gICAgICBjb25zdCBVZHBUcmFuc3BvcnRQYWlyJiBydHBfdWRwX3RyYW5z
cG9ydHMsCi0gICAgICBjb25zdCBVZHBUcmFuc3BvcnRQYWlyJiBydGNwX3VkcF90cmFuc3BvcnRz
LAotICAgICAgY29uc3QgUnRwVHJhbnNwb3J0Q29udHJvbGxlclBhaXImIHRyYW5zcG9ydF9jb250
cm9sbGVycykgewotICAgIGF1dG8gdHJhbnNwb3J0X3Jlc3VsdDEgPSBvcnRjX2ZhY3RvcnkxXy0+
Q3JlYXRlU3J0cFRyYW5zcG9ydCgKLSAgICAgICAgcGFyYW1ldGVycywgcnRwX3VkcF90cmFuc3Bv
cnRzLmZpcnN0LmdldCgpLAotICAgICAgICBydGNwX3VkcF90cmFuc3BvcnRzLmZpcnN0LmdldCgp
LCB0cmFuc3BvcnRfY29udHJvbGxlcnMuZmlyc3QuZ2V0KCkpOwotICAgIGF1dG8gdHJhbnNwb3J0
X3Jlc3VsdDIgPSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlU3J0cFRyYW5zcG9ydCgKLSAgICAgICAg
cGFyYW1ldGVycywgcnRwX3VkcF90cmFuc3BvcnRzLnNlY29uZC5nZXQoKSwKLSAgICAgICAgcnRj
cF91ZHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCksIHRyYW5zcG9ydF9jb250cm9sbGVycy5zZWNv
bmQuZ2V0KCkpOwotICAgIHJldHVybiB7dHJhbnNwb3J0X3Jlc3VsdDEuTW92ZVZhbHVlKCksIHRy
YW5zcG9ydF9yZXN1bHQyLk1vdmVWYWx1ZSgpfTsKLSAgfQotCi0gIC8vIEZvciBjb252ZW5pZW5j
ZSB3aGVuIHxydGNwX3VkcF90cmFuc3BvcnRzfCBhbmQgfHRyYW5zcG9ydF9jb250cm9sbGVyc3wK
LSAgLy8gYXJlbid0IG5lZWRlZC4KLSAgUnRwVHJhbnNwb3J0UGFpciBDcmVhdGVSdHBUcmFuc3Bv
cnRQYWlyKAotICAgICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywK
LSAgICAgIGNvbnN0IFVkcFRyYW5zcG9ydFBhaXImIHJ0cF91ZHBfdHJhbnNwb3J0cykgewotICAg
IHJldHVybiBDcmVhdGVSdHBUcmFuc3BvcnRQYWlyKHBhcmFtZXRlcnMsIHJ0cF91ZHBfdHJhbnNw
b3J0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVZHBUcmFuc3BvcnRQYWly
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0Q29udHJv
bGxlclBhaXIoKSk7Ci0gIH0KLQotICBTcnRwVHJhbnNwb3J0UGFpciBDcmVhdGVTcnRwVHJhbnNw
b3J0UGFpckFuZFNldEtleXMoCi0gICAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLAotICAgICAgY29uc3QgVWRwVHJhbnNwb3J0UGFpciYgcnRwX3VkcF90cmFuc3Bv
cnRzKSB7Ci0gICAgU3J0cFRyYW5zcG9ydFBhaXIgc3J0cF90cmFuc3BvcnRzID0gQ3JlYXRlU3J0
cFRyYW5zcG9ydFBhaXIoCi0gICAgICAgIHBhcmFtZXRlcnMsIHJ0cF91ZHBfdHJhbnNwb3J0cywg
VWRwVHJhbnNwb3J0UGFpcigpLAotICAgICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyUGFpcigp
KTsKLSAgICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydHMuZmlyc3QtPlNldFNydHBTZW5kS2V5
KGtUZXN0Q3J5cHRvUGFyYW1zMSkub2soKSk7Ci0gICAgRVhQRUNUX1RSVUUoCi0gICAgICAgIHNy
dHBfdHJhbnNwb3J0cy5maXJzdC0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMy
KS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRSgKLSAgICAgICAgc3J0cF90cmFuc3BvcnRzLnNlY29u
ZC0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJhbXMyKS5vaygpKTsKLSAgICBFWFBFQ1Rf
VFJVRSgKLSAgICAgICAgc3J0cF90cmFuc3BvcnRzLnNlY29uZC0+U2V0U3J0cFJlY2VpdmVLZXko
a1Rlc3RDcnlwdG9QYXJhbXMxKS5vaygpKTsKLSAgICByZXR1cm4gc3J0cF90cmFuc3BvcnRzOwot
ICB9Ci0KLSAgU3J0cFRyYW5zcG9ydFBhaXIgQ3JlYXRlU3J0cFRyYW5zcG9ydFBhaXJBbmRTZXRN
aXNtYXRjaGluZ0tleXMoCi0gICAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLAotICAgICAgY29uc3QgVWRwVHJhbnNwb3J0UGFpciYgcnRwX3VkcF90cmFuc3BvcnRz
KSB7Ci0gICAgU3J0cFRyYW5zcG9ydFBhaXIgc3J0cF90cmFuc3BvcnRzID0gQ3JlYXRlU3J0cFRy
YW5zcG9ydFBhaXIoCi0gICAgICAgIHBhcmFtZXRlcnMsIHJ0cF91ZHBfdHJhbnNwb3J0cywgVWRw
VHJhbnNwb3J0UGFpcigpLAotICAgICAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyUGFpcigpKTsK
LSAgICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydHMuZmlyc3QtPlNldFNydHBTZW5kS2V5KGtU
ZXN0Q3J5cHRvUGFyYW1zMSkub2soKSk7Ci0gICAgRVhQRUNUX1RSVUUoCi0gICAgICAgIHNydHBf
dHJhbnNwb3J0cy5maXJzdC0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rlc3RDcnlwdG9QYXJhbXMyKS5v
aygpKTsKLSAgICBFWFBFQ1RfVFJVRSgKLSAgICAgICAgc3J0cF90cmFuc3BvcnRzLnNlY29uZC0+
U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJhbXMxKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJV
RSgKLSAgICAgICAgc3J0cF90cmFuc3BvcnRzLnNlY29uZC0+U2V0U3J0cFJlY2VpdmVLZXkoa1Rl
c3RDcnlwdG9QYXJhbXMyKS5vaygpKTsKLSAgICByZXR1cm4gc3J0cF90cmFuc3BvcnRzOwotICB9
Ci0KLSAgLy8gRW5kcyB1cCB1c2luZyBmYWtlIGF1ZGlvIGNhcHR1cmUgbW9kdWxlLCB3aGljaCB3
YXMgcGFzc2VkIGludG8gT3J0Y0ZhY3RvcnkKLSAgLy8gb24gY3JlYXRpb24uCi0gIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IENyZWF0ZUxvY2FsQXVkaW9U
cmFjaygKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwKLSAgICAgIE9ydGNGYWN0b3J5SW50
ZXJmYWNlKiBvcnRjX2ZhY3RvcnkpIHsKLSAgICAvLyBEaXNhYmxlIGVjaG8gY2FuY2VsbGF0aW9u
IHRvIG1ha2UgdGVzdCBtb3JlIGVmZmljaWVudC4KLSAgICBjcmlja2V0OjpBdWRpb09wdGlvbnMg
b3B0aW9uczsKLSAgICBvcHRpb25zLmVjaG9fY2FuY2VsbGF0aW9uLmVtcGxhY2UodHJ1ZSk7Ci0g
ICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Tb3VyY2VJbnRlcmZhY2U+IHNvdXJj
ZSA9Ci0gICAgICAgIG9ydGNfZmFjdG9yeS0+Q3JlYXRlQXVkaW9Tb3VyY2Uob3B0aW9ucyk7Ci0g
ICAgcmV0dXJuIG9ydGNfZmFjdG9yeS0+Q3JlYXRlQXVkaW9UcmFjayhpZCwgc291cmNlKTsKLSAg
fQotCi0gIC8vIFN0b3JlcyBjcmVhdGVkIHZpZGVvIHNvdXJjZSBpbiB8ZmFrZV92aWRlb190cmFj
a19zb3VyY2VzX3wuCi0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRl
cmZhY2U+Ci0gIENyZWF0ZUxvY2FsVmlkZW9UcmFja0FuZEZha2VTb3VyY2UoY29uc3Qgc3RkOjpz
dHJpbmcmIGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ydGNGYWN0
b3J5SW50ZXJmYWNlKiBvcnRjX2ZhY3RvcnkpIHsKLSAgICBGYWtlUGVyaW9kaWNWaWRlb1NvdXJj
ZTo6Q29uZmlnIGNvbmZpZzsKLSAgICBjb25maWcudGltZXN0YW1wX29mZnNldF9tcyA9IHJ0Yzo6
VGltZU1pbGxpcygpOwotICAgIGZha2VfdmlkZW9fdHJhY2tfc291cmNlc18uZW1wbGFjZV9iYWNr
KAotICAgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PEZha2VQZXJpb2RpY1ZpZGVvVHJh
Y2tTb3VyY2U+KAotICAgICAgICAgICAgY29uZmlnLCBmYWxzZSAvKiByZW1vdGUgKi8pKTsKLSAg
ICByZXR1cm4gcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvVHJhY2tJbnRlcmZhY2U+KAotICAgICAg
ICBvcnRjX2ZhY3RvcnktPkNyZWF0ZVZpZGVvVHJhY2soaWQsIGZha2VfdmlkZW9fdHJhY2tfc291
cmNlc18uYmFjaygpKSk7Ci0gIH0KLQotICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCB0byB0ZXN0
IHR3byB3YXkgUlRQIHNlbmRlcnMgYW5kIHJlY2VpdmVycyB3aXRoIGJhc2ljCi0gIC8vIGNvbmZp
Z3VyYXRpb25zLgotICAvLyBJZiB8ZXhwZWN0X3N1Y2Nlc3N8IGlzIHRydWUsIHdhaXRzIGZvciBr
RGVmYXVsdFRpbWVvdXQgZm9yCi0gIC8vIGtEZWZhdWx0TnVtRnJhbWVzIGZyYW1lcyB0byBiZSBy
ZWNlaXZlZCBieSBhbGwgUnRwUmVjZWl2ZXJzLgotICAvLyBJZiB8ZXhwZWN0X3N1Y2Nlc3N8IGlz
IGZhbHNlLCBzaW1wbHkgd2FpdHMgZm9yIHxrUmVjZWl2aW5nRHVyYXRpb258LCBhbmQKLSAgLy8g
c3RvcmVzIHRoZSBudW1iZXIgb2YgcmVjZWl2ZWQgZnJhbWVzIGluIHxyZWNlaXZlZF9hdWRpb19m
cmFtZTFffCBldGMuCi0gIHZvaWQgQmFzaWNUd29XYXlSdHBTZW5kZXJzQW5kUmVjZWl2ZXJzVGVz
dChSdHBUcmFuc3BvcnRQYWlyIHNydHBfdHJhbnNwb3J0cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZXhwZWN0X3N1Y2Nlc3MpIHsKLSAgICByZWNl
aXZlZF9hdWRpb19mcmFtZXMxXyA9IDA7Ci0gICAgcmVjZWl2ZWRfYXVkaW9fZnJhbWVzMl8gPSAw
OwotICAgIHJlbmRlcmVkX3ZpZGVvX2ZyYW1lczFfID0gMDsKLSAgICByZW5kZXJlZF92aWRlb19m
cmFtZXMyXyA9IDA7Ci0gICAgLy8gQ3JlYXRlIGFsbCB0aGUgc2VuZGVycyBhbmQgcmVjZWl2ZXJz
IChmb3VyIHBlciBlbmRwb2ludCkuCi0gICAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0MSA9IG9y
dGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfQVVESU8sIHNydHBfdHJhbnNwb3J0cy5maXJzdC5nZXQoKSk7Ci0gICAgYXV0byB2aWRlb19z
ZW5kZXJfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICAg
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHNydHBfdHJhbnNwb3J0cy5maXJzdC5nZXQoKSk7
Ci0gICAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQxID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0
ZVJ0cFJlY2VpdmVyKAotICAgICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBzcnRwX3Ry
YW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICAgIGF1dG8gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0MSA9
IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgICAgY3JpY2tldDo6TUVE
SUFfVFlQRV9WSURFTywgc3J0cF90cmFuc3BvcnRzLmZpcnN0LmdldCgpKTsKLSAgICBBU1NFUlRf
VFJVRShhdWRpb19zZW5kZXJfcmVzdWx0MS5vaygpKTsKLSAgICBBU1NFUlRfVFJVRSh2aWRlb19z
ZW5kZXJfcmVzdWx0MS5vaygpKTsKLSAgICBBU1NFUlRfVFJVRShhdWRpb19yZWNlaXZlcl9yZXN1
bHQxLm9rKCkpOwotICAgIEFTU0VSVF9UUlVFKHZpZGVvX3JlY2VpdmVyX3Jlc3VsdDEub2soKSk7
Ci0gICAgYXV0byBhdWRpb19zZW5kZXIxID0gYXVkaW9fc2VuZGVyX3Jlc3VsdDEuTW92ZVZhbHVl
KCk7Ci0gICAgYXV0byB2aWRlb19zZW5kZXIxID0gdmlkZW9fc2VuZGVyX3Jlc3VsdDEuTW92ZVZh
bHVlKCk7Ci0gICAgYXV0byBhdWRpb19yZWNlaXZlcjEgPSBhdWRpb19yZWNlaXZlcl9yZXN1bHQx
Lk1vdmVWYWx1ZSgpOwotICAgIGF1dG8gdmlkZW9fcmVjZWl2ZXIxID0gdmlkZW9fcmVjZWl2ZXJf
cmVzdWx0MS5Nb3ZlVmFsdWUoKTsKLQotICAgIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdDIgPSBv
cnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgICBjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPLCBzcnRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpKTsKLSAgICBhdXRvIHZpZGVv
X3NlbmRlcl9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAg
ICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgc3J0cF90cmFuc3BvcnRzLnNlY29uZC5nZXQo
KSk7Ci0gICAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNy
ZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBzcnRw
X3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpKTsKLSAgICBhdXRvIHZpZGVvX3JlY2VpdmVyX3Jlc3Vs
dDIgPSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICAgIGNyaWNrZXQ6
Ok1FRElBX1RZUEVfVklERU8sIHNydHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCkpOwotICAgIEFT
U0VSVF9UUlVFKGF1ZGlvX3NlbmRlcl9yZXN1bHQyLm9rKCkpOwotICAgIEFTU0VSVF9UUlVFKHZp
ZGVvX3NlbmRlcl9yZXN1bHQyLm9rKCkpOwotICAgIEFTU0VSVF9UUlVFKGF1ZGlvX3JlY2VpdmVy
X3Jlc3VsdDIub2soKSk7Ci0gICAgQVNTRVJUX1RSVUUodmlkZW9fcmVjZWl2ZXJfcmVzdWx0Mi5v
aygpKTsKLSAgICBhdXRvIGF1ZGlvX3NlbmRlcjIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Mi5Nb3Zl
VmFsdWUoKTsKLSAgICBhdXRvIHZpZGVvX3NlbmRlcjIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Mi5N
b3ZlVmFsdWUoKTsKLSAgICBhdXRvIGF1ZGlvX3JlY2VpdmVyMiA9IGF1ZGlvX3JlY2VpdmVyX3Jl
c3VsdDIuTW92ZVZhbHVlKCk7Ci0gICAgYXV0byB2aWRlb19yZWNlaXZlcjIgPSB2aWRlb19yZWNl
aXZlcl9yZXN1bHQyLk1vdmVWYWx1ZSgpOwotCi0gICAgLy8gQWRkIGZha2UgdHJhY2tzLgotICAg
IFJUQ0Vycm9yIGVycm9yID0gYXVkaW9fc2VuZGVyMS0+U2V0VHJhY2soCi0gICAgICAgIENyZWF0
ZUxvY2FsQXVkaW9UcmFjaygiYXVkaW8iLCBvcnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwotICAgIEVY
UEVDVF9UUlVFKGVycm9yLm9rKCkpOwotICAgIGVycm9yID0gdmlkZW9fc2VuZGVyMS0+U2V0VHJh
Y2soCi0gICAgICAgIENyZWF0ZUxvY2FsVmlkZW9UcmFja0FuZEZha2VTb3VyY2UoInZpZGVvIiwg
b3J0Y19mYWN0b3J5MV8uZ2V0KCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcnJvci5vaygpKTsKLSAg
ICBlcnJvciA9IGF1ZGlvX3NlbmRlcjItPlNldFRyYWNrKAotICAgICAgICBDcmVhdGVMb2NhbEF1
ZGlvVHJhY2soImF1ZGlvIiwgb3J0Y19mYWN0b3J5Ml8uZ2V0KCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShlcnJvci5vaygpKTsKLSAgICBlcnJvciA9IHZpZGVvX3NlbmRlcjItPlNldFRyYWNrKAotICAg
ICAgICBDcmVhdGVMb2NhbFZpZGVvVHJhY2tBbmRGYWtlU291cmNlKCJ2aWRlbyIsIG9ydGNfZmFj
dG9yeTJfLmdldCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0KLSAgICAvLyAi
c2VudF9YX3BhcmFtZXRlcnMxIiBhcmUgdGhlIHBhcmFtZXRlcnMgdGhhdCBlbmRwb2ludCAxIHNl
bmRzIHdpdGggYW5kCi0gICAgLy8gZW5kcG9pbnQgMiByZWNlaXZlcyB3aXRoLgotICAgIFJ0cFBh
cmFtZXRlcnMgc2VudF9vcHVzX3BhcmFtZXRlcnMxID0KLSAgICAgICAgTWFrZU1pbmltYWxPcHVz
UGFyYW1ldGVyc1dpdGhTc3JjKDB4ZGVhZGJlZWYpOwotICAgIFJ0cFBhcmFtZXRlcnMgc2VudF92
cDhfcGFyYW1ldGVyczEgPQotICAgICAgICBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoU3Ny
YygweGJhYWRmZWVkKTsKLSAgICBSdHBQYXJhbWV0ZXJzIHNlbnRfb3B1c19wYXJhbWV0ZXJzMiA9
Ci0gICAgICAgIE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnNXaXRoU3NyYygweDEzMzMzMzM3KTsK
LSAgICBSdHBQYXJhbWV0ZXJzIHNlbnRfdnA4X3BhcmFtZXRlcnMyID0KLSAgICAgICAgTWFrZU1p
bmltYWxWcDhQYXJhbWV0ZXJzV2l0aFNzcmMoMHgxMjM0NTY3OCk7Ci0KLSAgICAvLyBDb25maWd1
cmUgdGhlIHNlbmRlcnMnIGFuZCByZWNlaXZlcnMnIHBhcmFtZXRlcnMuCi0gICAgRVhQRUNUX1RS
VUUoYXVkaW9fcmVjZWl2ZXIxLT5SZWNlaXZlKHNlbnRfb3B1c19wYXJhbWV0ZXJzMikub2soKSk7
Ci0gICAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXIxLT5SZWNlaXZlKHNlbnRfdnA4X3BhcmFt
ZXRlcnMyKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlcjItPlJlY2VpdmUo
c2VudF9vcHVzX3BhcmFtZXRlcnMxKS5vaygpKTsKLSAgICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNl
aXZlcjItPlJlY2VpdmUoc2VudF92cDhfcGFyYW1ldGVyczEpLm9rKCkpOwotICAgIEVYUEVDVF9U
UlVFKGF1ZGlvX3NlbmRlcjEtPlNlbmQoc2VudF9vcHVzX3BhcmFtZXRlcnMxKS5vaygpKTsKLSAg
ICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXIxLT5TZW5kKHNlbnRfdnA4X3BhcmFtZXRlcnMxKS5v
aygpKTsKLSAgICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXIyLT5TZW5kKHNlbnRfb3B1c19wYXJh
bWV0ZXJzMikub2soKSk7Ci0gICAgRVhQRUNUX1RSVUUodmlkZW9fc2VuZGVyMi0+U2VuZChzZW50
X3ZwOF9wYXJhbWV0ZXJzMikub2soKSk7Ci0KLSAgICBGYWtlVmlkZW9UcmFja1JlbmRlcmVyIGZh
a2VfdmlkZW9fcmVuZGVyZXIxKAotICAgICAgICBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrSW50ZXJm
YWNlKj4odmlkZW9fcmVjZWl2ZXIxLT5HZXRUcmFjaygpLmdldCgpKSk7Ci0gICAgRmFrZVZpZGVv
VHJhY2tSZW5kZXJlciBmYWtlX3ZpZGVvX3JlbmRlcmVyMigKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VmlkZW9UcmFja0ludGVyZmFjZSo+KHZpZGVvX3JlY2VpdmVyMi0+R2V0VHJhY2soKS5nZXQoKSkp
OwotCi0gICAgaWYgKGV4cGVjdF9zdWNjZXNzKSB7Ci0gICAgICBFWFBFQ1RfVFJVRV9XQUlUKAot
ICAgICAgICAgIGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUxXy0+ZnJhbWVzX3JlY2VpdmVkKCkg
PiBrRGVmYXVsdE51bUZyYW1lcyAmJgotICAgICAgICAgICAgICBmYWtlX3ZpZGVvX3JlbmRlcmVy
MS5udW1fcmVuZGVyZWRfZnJhbWVzKCkgPiBrRGVmYXVsdE51bUZyYW1lcyAmJgotICAgICAgICAg
ICAgICBmYWtlX2F1ZGlvX2NhcHR1cmVfbW9kdWxlMl8tPmZyYW1lc19yZWNlaXZlZCgpID4KLSAg
ICAgICAgICAgICAgICAgIGtEZWZhdWx0TnVtRnJhbWVzICYmCi0gICAgICAgICAgICAgIGZha2Vf
dmlkZW9fcmVuZGVyZXIyLm51bV9yZW5kZXJlZF9mcmFtZXMoKSA+IGtEZWZhdWx0TnVtRnJhbWVz
LAotICAgICAgICAgIGtEZWZhdWx0VGltZW91dCkKLSAgICAgICAgICA8PCAiQXVkaW8gY2FwdHVy
ZSBtb2R1bGUgMSByZWNlaXZlZCAiCi0gICAgICAgICAgPDwgZmFrZV9hdWRpb19jYXB0dXJlX21v
ZHVsZTFfLT5mcmFtZXNfcmVjZWl2ZWQoKQotICAgICAgICAgIDw8ICIgZnJhbWVzLCBWaWRlbyBy
ZW5kZXJlciAxIHJlbmRlcmVkICIKLSAgICAgICAgICA8PCBmYWtlX3ZpZGVvX3JlbmRlcmVyMS5u
dW1fcmVuZGVyZWRfZnJhbWVzKCkKLSAgICAgICAgICA8PCAiIGZyYW1lcywgQXVkaW8gY2FwdHVy
ZSBtb2R1bGUgMiByZWNlaXZlZCAiCi0gICAgICAgICAgPDwgZmFrZV9hdWRpb19jYXB0dXJlX21v
ZHVsZTJfLT5mcmFtZXNfcmVjZWl2ZWQoKQotICAgICAgICAgIDw8ICIgZnJhbWVzLCBWaWRlbyBy
ZW5kZXJlciAyIHJlbmRlcmVkICIKLSAgICAgICAgICA8PCBmYWtlX3ZpZGVvX3JlbmRlcmVyMi5u
dW1fcmVuZGVyZWRfZnJhbWVzKCkgPDwgIiBmcmFtZXMuIjsKLSAgICB9IGVsc2UgewotICAgICAg
V0FJVChmYWxzZSwga1JlY2VpdmluZ0R1cmF0aW9uKTsKLSAgICAgIHJlbmRlcmVkX3ZpZGVvX2Zy
YW1lczFfID0gZmFrZV92aWRlb19yZW5kZXJlcjEubnVtX3JlbmRlcmVkX2ZyYW1lcygpOwotICAg
ICAgcmVuZGVyZWRfdmlkZW9fZnJhbWVzMl8gPSBmYWtlX3ZpZGVvX3JlbmRlcmVyMi5udW1fcmVu
ZGVyZWRfZnJhbWVzKCk7Ci0gICAgICByZWNlaXZlZF9hdWRpb19mcmFtZXMxXyA9IGZha2VfYXVk
aW9fY2FwdHVyZV9tb2R1bGUxXy0+ZnJhbWVzX3JlY2VpdmVkKCk7Ci0gICAgICByZWNlaXZlZF9h
dWRpb19mcmFtZXMyXyA9IGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUyXy0+ZnJhbWVzX3JlY2Vp
dmVkKCk7Ci0gICAgfQotICB9Ci0KLSAgcnRjOjpWaXJ0dWFsU29ja2V0U2VydmVyIHZpcnR1YWxf
c29ja2V0X3NlcnZlcl87Ci0gIHJ0Yzo6VGhyZWFkIG5ldHdvcmtfdGhyZWFkXzsKLSAgcnRjOjpG
YWtlTmV0d29ya01hbmFnZXIgZmFrZV9uZXR3b3JrX21hbmFnZXJfOwotICBydGM6OnNjb3BlZF9y
ZWZwdHI8RmFrZUF1ZGlvQ2FwdHVyZU1vZHVsZT4gZmFrZV9hdWRpb19jYXB0dXJlX21vZHVsZTFf
OwotICBydGM6OnNjb3BlZF9yZWZwdHI8RmFrZUF1ZGlvQ2FwdHVyZU1vZHVsZT4gZmFrZV9hdWRp
b19jYXB0dXJlX21vZHVsZTJfOwotICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZh
Y2U+IG9ydGNfZmFjdG9yeTFfOwotICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZh
Y2U+IG9ydGNfZmFjdG9yeTJfOwotICBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8Vmlk
ZW9UcmFja1NvdXJjZT4+IGZha2VfdmlkZW9fdHJhY2tfc291cmNlc187Ci0gIGludCByZWNlaXZl
ZF9hdWRpb19mcmFtZXMxXyA9IDA7Ci0gIGludCByZWNlaXZlZF9hdWRpb19mcmFtZXMyXyA9IDA7
Ci0gIGludCByZW5kZXJlZF92aWRlb19mcmFtZXMxXyA9IDA7Ci0gIGludCByZW5kZXJlZF92aWRl
b19mcmFtZXMyXyA9IDA7Ci19OwotCi0vLyBEaXNhYmxlIGZvciBUU2FuIHYyLCBzZWUKLS8vIGh0
dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD03MzY2IGZv
ciBkZXRhaWxzLgotI2lmICFkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpCi0KLS8vIFZlcnkgYmFz
aWMgZW5kLXRvLWVuZCB0ZXN0IHdpdGggYSBzaW5nbGUgcGFpciBvZiBhdWRpbyBSVFAgc2VuZGVy
IGFuZAotLy8gcmVjZWl2ZXIuCi0vLwotLy8gVXNlcyBtdXhlZCBSVENQLCBhbmQgbWluaW1hbCBw
YXJhbWV0ZXJzIHdpdGggYSBoYXJkLWNvZGVkIGNvbmZpZyB0aGF0J3MKLS8vIGtub3duIHRvIHdv
cmsuCi1URVNUX0YoT3J0Y0ZhY3RvcnlJbnRlZ3JhdGlvblRlc3QsIEJhc2ljT25lV2F5QXVkaW9S
dHBTZW5kZXJBbmRSZWNlaXZlcikgewotICBhdXRvIHVkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5k
Q29ubmVjdFVkcFRyYW5zcG9ydFBhaXIoKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0cyA9Ci0gICAg
ICBDcmVhdGVSdHBUcmFuc3BvcnRQYWlyKE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCB1ZHBfdHJh
bnNwb3J0cyk7Ci0KLSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0
ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3Bv
cnRzLmZpcnN0LmdldCgpKTsKLSAgYXV0byByZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rvcnky
Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBy
dHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCkpOwotICBBU1NFUlRfVFJVRShzZW5kZXJfcmVzdWx0
Lm9rKCkpOwotICBBU1NFUlRfVFJVRShyZWNlaXZlcl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gc2Vu
ZGVyID0gc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgYXV0byByZWNlaXZlciA9IHJlY2Vp
dmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICBSVENFcnJvciBlcnJvciA9Ci0gICAgICBzZW5k
ZXItPlNldFRyYWNrKENyZWF0ZUxvY2FsQXVkaW9UcmFjaygiYXVkaW8iLCBvcnRjX2ZhY3Rvcnkx
Xy5nZXQoKSkpOwotICBFWFBFQ1RfVFJVRShlcnJvci5vaygpKTsKLQotICBSdHBQYXJhbWV0ZXJz
IG9wdXNfcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgRVhQRUNU
X1RSVUUocmVjZWl2ZXItPlJlY2VpdmUob3B1c19wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNU
X1RSVUUoc2VuZGVyLT5TZW5kKG9wdXNfcGFyYW1ldGVycykub2soKSk7Ci0gIC8vIFNlbmRlciBh
bmQgcmVjZWl2ZXIgYXJlIGNvbm5lY3RlZCBhbmQgY29uZmlndXJlZDsgYXVkaW8gZnJhbWVzIHNo
b3VsZCBiZQotICAvLyBhYmxlIHRvIGZsb3cgYXQgdGhpcyBwb2ludC4KLSAgRVhQRUNUX1RSVUVf
V0FJVCgKLSAgICAgIGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUyXy0+ZnJhbWVzX3JlY2VpdmVk
KCkgPiBrRGVmYXVsdE51bUZyYW1lcywKLSAgICAgIGtEZWZhdWx0VGltZW91dCk7Ci19Ci0KLS8v
IFZlcnkgYmFzaWMgZW5kLXRvLWVuZCB0ZXN0IHdpdGggYSBzaW5nbGUgcGFpciBvZiB2aWRlbyBS
VFAgc2VuZGVyIGFuZAotLy8gcmVjZWl2ZXIuCi0vLwotLy8gVXNlcyBtdXhlZCBSVENQLCBhbmQg
bWluaW1hbCBwYXJhbWV0ZXJzIHdpdGggYSBoYXJkLWNvZGVkIGNvbmZpZyB0aGF0J3MKLS8vIGtu
b3duIHRvIHdvcmsuCi1URVNUX0YoT3J0Y0ZhY3RvcnlJbnRlZ3JhdGlvblRlc3QsIEJhc2ljT25l
V2F5VmlkZW9SdHBTZW5kZXJBbmRSZWNlaXZlcikgewotICBhdXRvIHVkcF90cmFuc3BvcnRzID0g
Q3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5zcG9ydFBhaXIoKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0
cyA9Ci0gICAgICBDcmVhdGVSdHBUcmFuc3BvcnRQYWlyKE1ha2VSdGNwTXV4UGFyYW1ldGVycygp
LCB1ZHBfdHJhbnNwb3J0cyk7Ci0KLSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5
MV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0
cF90cmFuc3BvcnRzLmZpcnN0LmdldCgpKTsKLSAgYXV0byByZWNlaXZlcl9yZXN1bHQgPSBvcnRj
X2ZhY3RvcnkyXy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBF
X1ZJREVPLCBydHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCkpOwotICBBU1NFUlRfVFJVRShzZW5k
ZXJfcmVzdWx0Lm9rKCkpOwotICBBU1NFUlRfVFJVRShyZWNlaXZlcl9yZXN1bHQub2soKSk7Ci0g
IGF1dG8gc2VuZGVyID0gc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgYXV0byByZWNlaXZl
ciA9IHJlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICBSVENFcnJvciBlcnJvciA9IHNl
bmRlci0+U2V0VHJhY2soCi0gICAgICBDcmVhdGVMb2NhbFZpZGVvVHJhY2tBbmRGYWtlU291cmNl
KCJ2aWRlbyIsIG9ydGNfZmFjdG9yeTFfLmdldCgpKSk7Ci0gIEVYUEVDVF9UUlVFKGVycm9yLm9r
KCkpOwotCi0gIFJ0cFBhcmFtZXRlcnMgdnA4X3BhcmFtZXRlcnMgPSBNYWtlTWluaW1hbFZwOFBh
cmFtZXRlcnMoKTsKLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXItPlJlY2VpdmUodnA4X3BhcmFtZXRl
cnMpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShzZW5kZXItPlNlbmQodnA4X3BhcmFtZXRlcnMpLm9r
KCkpOwotICBGYWtlVmlkZW9UcmFja1JlbmRlcmVyIGZha2VfcmVuZGVyZXIoCi0gICAgICBzdGF0
aWNfY2FzdDxWaWRlb1RyYWNrSW50ZXJmYWNlKj4ocmVjZWl2ZXItPkdldFRyYWNrKCkuZ2V0KCkp
KTsKLSAgLy8gU2VuZGVyIGFuZCByZWNlaXZlciBhcmUgY29ubmVjdGVkIGFuZCBjb25maWd1cmVk
OyB2aWRlbyBmcmFtZXMgc2hvdWxkIGJlCi0gIC8vIGFibGUgdG8gZmxvdyBhdCB0aGlzIHBvaW50
LgotICBFWFBFQ1RfVFJVRV9XQUlUKGZha2VfcmVuZGVyZXIubnVtX3JlbmRlcmVkX2ZyYW1lcygp
ID4ga0RlZmF1bHROdW1GcmFtZXMsCi0gICAgICAgICAgICAgICAgICAga0RlZmF1bHRUaW1lb3V0
KTsKLX0KLQotLy8gVGVzdCB0aGF0IGlmIHRoZSB0cmFjayBpcyBjaGFuZ2VkIHdoaWxlIHNlbmRp
bmcsIHRoZSBzZW5kZXIgc2VhbWxlc3NseQotLy8gdHJhbnNpdGlvbnMgdG8gc2VuZGluZyBpdCBh
bmQgZnJhbWVzIGFyZSByZWNlaXZlZCBlbmQtdG8tZW5kLgotLy8KLS8vIE9ubHkgZG9pbmcgdGhp
cyBmb3IgdmlkZW8sIHNpbmNlIGdpdmVuIHRoYXQgYXVkaW8gaXMgc291cmNlZCBmcm9tIGEgc2lu
Z2xlCi0vLyBmYWtlIGF1ZGlvIGNhcHR1cmUgbW9kdWxlLCB0aGUgYXVkaW8gdHJhY2sgaXMganVz
dCBhIGR1bW15IG9iamVjdC4KLS8vIFRPRE8oZGVhZGJlZWYpOiBDaGFuZ2UgdGhpcyB3aGVuIHBv
c3NpYmxlLgotVEVTVF9GKE9ydGNGYWN0b3J5SW50ZWdyYXRpb25UZXN0LCBTZXRUcmFja1doaWxl
U2VuZGluZykgewotICBhdXRvIHVkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVkcFRy
YW5zcG9ydFBhaXIoKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0cyA9Ci0gICAgICBDcmVhdGVSdHBU
cmFuc3BvcnRQYWlyKE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCB1ZHBfdHJhbnNwb3J0cyk7Ci0K
LSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0cFNlbmRlcigK
LSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRzLmZpcnN0Lmdl
dCgpKTsKLSAgYXV0byByZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnkyXy0+Q3JlYXRlUnRw
UmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0
cy5zZWNvbmQuZ2V0KCkpOwotICBBU1NFUlRfVFJVRShzZW5kZXJfcmVzdWx0Lm9rKCkpOwotICBB
U1NFUlRfVFJVRShyZWNlaXZlcl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gc2VuZGVyID0gc2VuZGVy
X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgYXV0byByZWNlaXZlciA9IHJlY2VpdmVyX3Jlc3VsdC5N
b3ZlVmFsdWUoKTsKLQotICBSVENFcnJvciBlcnJvciA9IHNlbmRlci0+U2V0VHJhY2soCi0gICAg
ICBDcmVhdGVMb2NhbFZpZGVvVHJhY2tBbmRGYWtlU291cmNlKCJ2aWRlb18xIiwgb3J0Y19mYWN0
b3J5MV8uZ2V0KCkpKTsKLSAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0gIFJ0cFBhcmFtZXRl
cnMgdnA4X3BhcmFtZXRlcnMgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgRVhQRUNU
X1RSVUUocmVjZWl2ZXItPlJlY2VpdmUodnA4X3BhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1Rf
VFJVRShzZW5kZXItPlNlbmQodnA4X3BhcmFtZXRlcnMpLm9rKCkpOwotICBGYWtlVmlkZW9UcmFj
a1JlbmRlcmVyIGZha2VfcmVuZGVyZXIoCi0gICAgICBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrSW50
ZXJmYWNlKj4ocmVjZWl2ZXItPkdldFRyYWNrKCkuZ2V0KCkpKTsKLSAgLy8gRXhwZWN0IGZvciBz
b21lIGluaXRpYWwgbnVtYmVyIG9mIGZyYW1lcyB0byBiZSByZWNlaXZlZC4KLSAgRVhQRUNUX1RS
VUVfV0FJVChmYWtlX3JlbmRlcmVyLm51bV9yZW5kZXJlZF9mcmFtZXMoKSA+IGtEZWZhdWx0TnVt
RnJhbWVzLAotICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0VGltZW91dCk7Ci0gIC8vIERlc3Ry
b3kgb2xkIHNvdXJjZSwgc2V0IGEgbmV3IHRyYWNrLCBhbmQgdmVyaWZ5IG5ldyBmcmFtZXMgYXJl
IHJlY2VpdmVkCi0gIC8vIGZyb20gdGhlIG5ldyB0cmFjay4gVGhlIFZpZGVvVHJhY2tTb3VyY2Ug
aXMgcmVmZXJlbmNlIGNvdW50ZWQgYW5kIG1heSBsaXZlCi0gIC8vIGEgbGl0dGxlIGxvbmdlciwg
c28gdGVsbCBpdCB0aGF0IGl0cyBzb3VyY2UgaXMgZ29pbmcgYXdheSBub3cuCi0gIGZha2Vfdmlk
ZW9fdHJhY2tfc291cmNlc19bMF0gPSBudWxscHRyOwotICBpbnQgcHJldl9udW1fZnJhbWVzID0g
ZmFrZV9yZW5kZXJlci5udW1fcmVuZGVyZWRfZnJhbWVzKCk7Ci0gIGVycm9yID0gc2VuZGVyLT5T
ZXRUcmFjaygKLSAgICAgIENyZWF0ZUxvY2FsVmlkZW9UcmFja0FuZEZha2VTb3VyY2UoInZpZGVv
XzIiLCBvcnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwotICBFWFBFQ1RfVFJVRShlcnJvci5vaygpKTsK
LSAgRVhQRUNUX1RSVUVfV0FJVCgKLSAgICAgIGZha2VfcmVuZGVyZXIubnVtX3JlbmRlcmVkX2Zy
YW1lcygpID4ga0RlZmF1bHROdW1GcmFtZXMgKyBwcmV2X251bV9mcmFtZXMsCi0gICAgICBrRGVm
YXVsdFRpbWVvdXQpOwotfQotCi0vLyBUT0RPKHdlYnJ0Yzo3OTE1LCB3ZWJydGM6OTE4NCk6IFRl
c3RzIGJlbG93IGFyZSBkaXNhYmxlZCBmb3IgaU9TIDY0IG9uIGRlYnVnCi0vLyBidWlsZHMgYmVj
YXVzZSBvZiBmbGFraW5lc3MuCi0jaWYgIShkZWZpbmVkKFdFQlJUQ19JT1MpICYmIGRlZmluZWQo
V0VCUlRDX0FSQ0hfNjRfQklUUykgJiYgIWRlZmluZWQoTkRFQlVHKSkKLSNkZWZpbmUgTUFZQkVf
QmFzaWNUd29XYXlBdWRpb1ZpZGVvUnRwU2VuZGVyc0FuZFJlY2VpdmVycyBcCi0gIEJhc2ljVHdv
V2F5QXVkaW9WaWRlb1J0cFNlbmRlcnNBbmRSZWNlaXZlcnMKLSNkZWZpbmUgTUFZQkVfQmFzaWNU
d29XYXlBdWRpb1ZpZGVvU3J0cFNlbmRlcnNBbmRSZWNlaXZlcnMgXAotICBCYXNpY1R3b1dheUF1
ZGlvVmlkZW9TcnRwU2VuZGVyc0FuZFJlY2VpdmVycwotI2RlZmluZSBNQVlCRV9TcnRwU2VuZGVy
c0FuZFJlY2VpdmVyc1dpdGhNaXNtYXRjaGluZ0tleXMgXAotICBTcnRwU2VuZGVyc0FuZFJlY2Vp
dmVyc1dpdGhNaXNtYXRjaGluZ0tleXMKLSNkZWZpbmUgTUFZQkVfT25lU2lkZVNydHBTZW5kZXJB
bmRSZWNlaXZlciBPbmVTaWRlU3J0cFNlbmRlckFuZFJlY2VpdmVyCi0jZGVmaW5lIE1BWUJFX0Z1
bGxUd29XYXlBdWRpb1ZpZGVvU3J0cFNlbmRlcnNBbmRSZWNlaXZlcnMgXAotICBGdWxsVHdvV2F5
QXVkaW9WaWRlb1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzCi0jZWxzZQotI2RlZmluZSBNQVlCRV9C
YXNpY1R3b1dheUF1ZGlvVmlkZW9SdHBTZW5kZXJzQW5kUmVjZWl2ZXJzIFwKLSAgRElTQUJMRURf
QmFzaWNUd29XYXlBdWRpb1ZpZGVvUnRwU2VuZGVyc0FuZFJlY2VpdmVycwotI2RlZmluZSBNQVlC
RV9CYXNpY1R3b1dheUF1ZGlvVmlkZW9TcnRwU2VuZGVyc0FuZFJlY2VpdmVycyBcCi0gIERJU0FC
TEVEX0Jhc2ljVHdvV2F5QXVkaW9WaWRlb1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzCi0jZGVmaW5l
IE1BWUJFX1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzV2l0aE1pc21hdGNoaW5nS2V5cyBcCi0gIERJ
U0FCTEVEX1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzV2l0aE1pc21hdGNoaW5nS2V5cwotI2RlZmlu
ZSBNQVlCRV9PbmVTaWRlU3J0cFNlbmRlckFuZFJlY2VpdmVyIERJU0FCTEVEX09uZVNpZGVTcnRw
U2VuZGVyQW5kUmVjZWl2ZXIKLSNkZWZpbmUgTUFZQkVfRnVsbFR3b1dheUF1ZGlvVmlkZW9TcnRw
U2VuZGVyc0FuZFJlY2VpdmVycyBcCi0gIERJU0FCTEVEX0Z1bGxUd29XYXlBdWRpb1ZpZGVvU3J0
cFNlbmRlcnNBbmRSZWNlaXZlcnMKLSNlbmRpZgotCi0vLyBFbmQtdG8tZW5kIHRlc3Qgd2l0aCB0
d28gcGFpcnMgb2YgUlRQIHNlbmRlcnMgYW5kIHJlY2VpdmVycywgZm9yIGF1ZGlvIGFuZAotLy8g
dmlkZW8uCi0vLwotLy8gVXNlcyBtdXhlZCBSVENQLCBhbmQgbWluaW1hbCBwYXJhbWV0ZXJzIHdp
dGggaGFyZC1jb2RlZCBjb25maWdzIHRoYXQgYXJlCi0vLyBrbm93biB0byB3b3JrLgotVEVTVF9G
KE9ydGNGYWN0b3J5SW50ZWdyYXRpb25UZXN0LAotICAgICAgIE1BWUJFX0Jhc2ljVHdvV2F5QXVk
aW9WaWRlb1J0cFNlbmRlcnNBbmRSZWNlaXZlcnMpIHsKLSAgYXV0byB1ZHBfdHJhbnNwb3J0cyA9
IENyZWF0ZUFuZENvbm5lY3RVZHBUcmFuc3BvcnRQYWlyKCk7Ci0gIGF1dG8gcnRwX3RyYW5zcG9y
dHMgPQotICAgICAgQ3JlYXRlUnRwVHJhbnNwb3J0UGFpcihNYWtlUnRjcE11eFBhcmFtZXRlcnMo
KSwgdWRwX3RyYW5zcG9ydHMpOwotICBib29sIGV4cGVjdF9zdWNjZXNzID0gdHJ1ZTsKLSAgQmFz
aWNUd29XYXlSdHBTZW5kZXJzQW5kUmVjZWl2ZXJzVGVzdChzdGQ6Om1vdmUocnRwX3RyYW5zcG9y
dHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zdWNj
ZXNzKTsKLX0KLQotVEVTVF9GKE9ydGNGYWN0b3J5SW50ZWdyYXRpb25UZXN0LAotICAgICAgIE1B
WUJFX0Jhc2ljVHdvV2F5QXVkaW9WaWRlb1NydHBTZW5kZXJzQW5kUmVjZWl2ZXJzKSB7Ci0gIGF1
dG8gdWRwX3RyYW5zcG9ydHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwot
ICBhdXRvIHNydHBfdHJhbnNwb3J0cyA9IENyZWF0ZVNydHBUcmFuc3BvcnRQYWlyQW5kU2V0S2V5
cygKLSAgICAgIE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCB1ZHBfdHJhbnNwb3J0cyk7Ci0gIGJv
b2wgZXhwZWN0X3N1Y2Nlc3MgPSB0cnVlOwotICBCYXNpY1R3b1dheVJ0cFNlbmRlcnNBbmRSZWNl
aXZlcnNUZXN0KHN0ZDo6bW92ZShzcnRwX3RyYW5zcG9ydHMpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zdWNjZXNzKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB0aGUgcGFja2V0cyBjYW5ub3QgYmUgZGVjb2RlZCBpZiB0aGUga2V5cyBhcmUgbWlzbWF0Y2hl
ZC4KLS8vIFRPRE8od2VicnRjOjkxODQpOiBEaXNhYmxlZCBiZWNhdXNlIHRoaXMgdGVzdCBpcyBm
bGFreS4KLVRFU1RfRihPcnRjRmFjdG9yeUludGVncmF0aW9uVGVzdCwKLSAgICAgICBNQVlCRV9T
cnRwU2VuZGVyc0FuZFJlY2VpdmVyc1dpdGhNaXNtYXRjaGluZ0tleXMpIHsKLSAgYXV0byB1ZHBf
dHJhbnNwb3J0cyA9IENyZWF0ZUFuZENvbm5lY3RVZHBUcmFuc3BvcnRQYWlyKCk7Ci0gIGF1dG8g
c3J0cF90cmFuc3BvcnRzID0gQ3JlYXRlU3J0cFRyYW5zcG9ydFBhaXJBbmRTZXRNaXNtYXRjaGlu
Z0tleXMoCi0gICAgICBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSwgdWRwX3RyYW5zcG9ydHMpOwot
ICBib29sIGV4cGVjdF9zdWNjZXNzID0gZmFsc2U7Ci0gIEJhc2ljVHdvV2F5UnRwU2VuZGVyc0Fu
ZFJlY2VpdmVyc1Rlc3Qoc3RkOjptb3ZlKHNydHBfdHJhbnNwb3J0cyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3N1Y2Nlc3MpOwotICAvLyBObyBmcmFt
ZXMgYXJlIGV4cGVjdGVkIHRvIGJlIGRlY29kZWQuCi0gIEVYUEVDVF9UUlVFKHJlY2VpdmVkX2F1
ZGlvX2ZyYW1lczFfID09IDAgJiYgcmVjZWl2ZWRfYXVkaW9fZnJhbWVzMl8gPT0gMCAmJgotICAg
ICAgICAgICAgICByZW5kZXJlZF92aWRlb19mcmFtZXMxXyA9PSAwICYmIHJlbmRlcmVkX3ZpZGVv
X2ZyYW1lczJfID09IDApOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBmcmFtZXMgY2Fubm90IGJl
IGRlY29kZWQgaWYgb25seSBvbmUgc2lkZSB1c2VzIFNSVFAuCi1URVNUX0YoT3J0Y0ZhY3RvcnlJ
bnRlZ3JhdGlvblRlc3QsIE1BWUJFX09uZVNpZGVTcnRwU2VuZGVyQW5kUmVjZWl2ZXIpIHsKLSAg
YXV0byBydGNwX3BhcmFtZXRlcnMgPSBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKTsKLSAgYXV0byB1
ZHBfdHJhbnNwb3J0cyA9IENyZWF0ZUFuZENvbm5lY3RVZHBUcmFuc3BvcnRQYWlyKCk7Ci0gIGF1
dG8gcnRjcF91ZHBfdHJhbnNwb3J0cyA9IFVkcFRyYW5zcG9ydFBhaXIoKTsKLSAgYXV0byB0cmFu
c3BvcnRfY29udHJvbGxlcnMgPSBSdHBUcmFuc3BvcnRDb250cm9sbGVyUGFpcigpOwotICBhdXRv
IHRyYW5zcG9ydF9yZXN1bHQxID0gb3J0Y19mYWN0b3J5MV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgK
LSAgICAgIHJ0Y3BfcGFyYW1ldGVycywgdWRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCksCi0gICAg
ICBydGNwX3VkcF90cmFuc3BvcnRzLmZpcnN0LmdldCgpLCB0cmFuc3BvcnRfY29udHJvbGxlcnMu
Zmlyc3QuZ2V0KCkpOwotICBhdXRvIHRyYW5zcG9ydF9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8t
PkNyZWF0ZVNydHBUcmFuc3BvcnQoCi0gICAgICBydGNwX3BhcmFtZXRlcnMsIHVkcF90cmFuc3Bv
cnRzLnNlY29uZC5nZXQoKSwKLSAgICAgIHJ0Y3BfdWRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgp
LCB0cmFuc3BvcnRfY29udHJvbGxlcnMuc2Vjb25kLmdldCgpKTsKLQotICBhdXRvIHJ0cF90cmFu
c3BvcnQgPSB0cmFuc3BvcnRfcmVzdWx0MS5Nb3ZlVmFsdWUoKTsKLSAgYXV0byBzcnRwX3RyYW5z
cG9ydCA9IHRyYW5zcG9ydF9yZXN1bHQyLk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRShzcnRw
X3RyYW5zcG9ydC0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJhbXMxKS5vaygpKTsKLSAg
RVhQRUNUX1RSVUUoc3J0cF90cmFuc3BvcnQtPlNldFNydHBSZWNlaXZlS2V5KGtUZXN0Q3J5cHRv
UGFyYW1zMikub2soKSk7Ci0gIGJvb2wgZXhwZWN0X3N1Y2Nlc3MgPSBmYWxzZTsKLSAgQmFzaWNU
d29XYXlSdHBTZW5kZXJzQW5kUmVjZWl2ZXJzVGVzdCgKLSAgICAgIHtzdGQ6Om1vdmUocnRwX3Ry
YW5zcG9ydCksIHN0ZDo6bW92ZShzcnRwX3RyYW5zcG9ydCl9LCBleHBlY3Rfc3VjY2Vzcyk7Ci0K
LSAgLy8gVGhlIFNSVFAgc2lkZSBpcyBub3QgZXhwZWN0ZWQgdG8gZGVjb2RlIGFueSBhdWRpbyBv
ciB2aWRlbyBmcmFtZXMuCi0gIC8vIFRoZSBSVFAgc2lkZSBpcyBub3QgZXhwZWN0ZWQgdG8gZGVj
b2RlIGFueSB2aWRlbyBmcmFtZXMgd2hpbGUgaXQgaXMKLSAgLy8gcG9zc2libGUgdGhhdCB0aGUg
ZW5jcnlwdGVkIGF1ZGlvIGZyYW1lcyBjYW4gYmUgYWNjaWRlbnRhbGx5IGRlY29kZWQgd2hpY2gK
LSAgLy8gaXMgd2h5IHJlY2VpdmVkX2F1ZGlvX2ZyYW1lczFfIGlzIG5vdCB2YWxpZGF0ZWQuCi0g
IEVYUEVDVF9UUlVFKHJlY2VpdmVkX2F1ZGlvX2ZyYW1lczJfID09IDAgJiYgcmVuZGVyZWRfdmlk
ZW9fZnJhbWVzMV8gPT0gMCAmJgotICAgICAgICAgICAgICByZW5kZXJlZF92aWRlb19mcmFtZXMy
XyA9PSAwKTsKLX0KLQotLy8gRW5kLXRvLWVuZCB0ZXN0IHdpdGggdHdvIHBhaXJzIG9mIFJUUCBz
ZW5kZXJzIGFuZCByZWNlaXZlcnMsIGZvciBhdWRpbyBhbmQKLS8vIHZpZGVvLiBVbmxpa2UgdGhl
IHRlc3QgYWJvdmUsIHRoaXMgYXR0ZW1wdHMgdG8gbWFrZSB0aGUgcGFyYW1ldGVycyBhcwotLy8g
Y29tcGxleCBhcyBwb3NzaWJsZS4gVGhlIHNlbmRlcnMgYW5kIHJlY2VpdmVycyB1c2UgdGhlIFNS
VFAgdHJhbnNwb3J0IHdpdGgKLS8vIGRpZmZlcmVudCBrZXlzLgotLy8KLS8vIFVzZXMgbm9uLW11
eGVkIFJUQ1AsIHdpdGggc2VwYXJhdGUgYXVkaW8vdmlkZW8gdHJhbnNwb3J0cywgYW5kIGEgZnVs
bCBzZXQgb2YKLS8vIHBhcmFtZXRlcnMsIGFzIHdvdWxkIG5vcm1hbGx5IGJlIHVzZWQgaW4gYSBQ
ZWVyQ29ubmVjdGlvbi4KLS8vCi0vLyBUT0RPKGRlYWRiZWVmKTogVXBkYXRlIHRoaXMgdGVzdCBh
cyBtb3JlIGF1ZGlvL3ZpZGVvIGZlYXR1cmVzIGJlY29tZQotLy8gc3VwcG9ydGVkLgotVEVTVF9G
KE9ydGNGYWN0b3J5SW50ZWdyYXRpb25UZXN0LAotICAgICAgIE1BWUJFX0Z1bGxUd29XYXlBdWRp
b1ZpZGVvU3J0cFNlbmRlcnNBbmRSZWNlaXZlcnMpIHsKLSAgLy8gV2Ugd2FudCBmb3VyIHBhaXJz
IG9mIFVEUCB0cmFuc3BvcnRzIGZvciB0aGlzIHRlc3QsIGZvciBhdWRpby92aWRlbyBhbmQKLSAg
Ly8gUlRQL1JUQ1AuCi0gIGF1dG8gYXVkaW9fcnRwX3VkcF90cmFuc3BvcnRzID0gQ3JlYXRlQW5k
Q29ubmVjdFVkcFRyYW5zcG9ydFBhaXIoKTsKLSAgYXV0byBhdWRpb19ydGNwX3VkcF90cmFuc3Bv
cnRzID0gQ3JlYXRlQW5kQ29ubmVjdFVkcFRyYW5zcG9ydFBhaXIoKTsKLSAgYXV0byB2aWRlb19y
dHBfdWRwX3RyYW5zcG9ydHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJhbnNwb3J0UGFpcigpOwot
ICBhdXRvIHZpZGVvX3J0Y3BfdWRwX3RyYW5zcG9ydHMgPSBDcmVhdGVBbmRDb25uZWN0VWRwVHJh
bnNwb3J0UGFpcigpOwotCi0gIC8vIFNpbmNlIHdlIGhhdmUgbXVsdGlwbGUgUlRQIHRyYW5zcG9y
dHMgb24gZWFjaCBzaWRlLCB3ZSBuZWVkIGFuIFJUUAotICAvLyB0cmFuc3BvcnQgY29udHJvbGxl
ci4KLSAgYXV0byB0cmFuc3BvcnRfY29udHJvbGxlcnMgPSBDcmVhdGVSdHBUcmFuc3BvcnRDb250
cm9sbGVyUGFpcigpOwotCi0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgYXVkaW9fcnRwX3RyYW5z
cG9ydF9wYXJhbWV0ZXJzOwotICBhdWRpb19ydHBfdHJhbnNwb3J0X3BhcmFtZXRlcnMucnRjcC5t
dXggPSBmYWxzZTsKLSAgYXV0byBhdWRpb19zcnRwX3RyYW5zcG9ydHMgPSBDcmVhdGVTcnRwVHJh
bnNwb3J0UGFpcigKLSAgICAgIGF1ZGlvX3J0cF90cmFuc3BvcnRfcGFyYW1ldGVycywgYXVkaW9f
cnRwX3VkcF90cmFuc3BvcnRzLAotICAgICAgYXVkaW9fcnRjcF91ZHBfdHJhbnNwb3J0cywgdHJh
bnNwb3J0X2NvbnRyb2xsZXJzKTsKLQotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHZpZGVvX3J0
cF90cmFuc3BvcnRfcGFyYW1ldGVyczsKLSAgdmlkZW9fcnRwX3RyYW5zcG9ydF9wYXJhbWV0ZXJz
LnJ0Y3AubXV4ID0gZmFsc2U7Ci0gIHZpZGVvX3J0cF90cmFuc3BvcnRfcGFyYW1ldGVycy5ydGNw
LnJlZHVjZWRfc2l6ZSA9IHRydWU7Ci0gIGF1dG8gdmlkZW9fc3J0cF90cmFuc3BvcnRzID0gQ3Jl
YXRlU3J0cFRyYW5zcG9ydFBhaXIoCi0gICAgICB2aWRlb19ydHBfdHJhbnNwb3J0X3BhcmFtZXRl
cnMsIHZpZGVvX3J0cF91ZHBfdHJhbnNwb3J0cywKLSAgICAgIHZpZGVvX3J0Y3BfdWRwX3RyYW5z
cG9ydHMsIHRyYW5zcG9ydF9jb250cm9sbGVycyk7Ci0KLSAgLy8gU2V0IGtleXMgZm9yIFNSVFAg
dHJhbnNwb3J0cy4KLSAgYXVkaW9fc3J0cF90cmFuc3BvcnRzLmZpcnN0LT5TZXRTcnRwU2VuZEtl
eShrVGVzdENyeXB0b1BhcmFtczEpOwotICBhdWRpb19zcnRwX3RyYW5zcG9ydHMuZmlyc3QtPlNl
dFNydHBSZWNlaXZlS2V5KGtUZXN0Q3J5cHRvUGFyYW1zMik7Ci0gIHZpZGVvX3NydHBfdHJhbnNw
b3J0cy5maXJzdC0+U2V0U3J0cFNlbmRLZXkoa1Rlc3RDcnlwdG9QYXJhbXMzKTsKLSAgdmlkZW9f
c3J0cF90cmFuc3BvcnRzLmZpcnN0LT5TZXRTcnRwUmVjZWl2ZUtleShrVGVzdENyeXB0b1BhcmFt
czQpOwotCi0gIGF1ZGlvX3NydHBfdHJhbnNwb3J0cy5zZWNvbmQtPlNldFNydHBTZW5kS2V5KGtU
ZXN0Q3J5cHRvUGFyYW1zMik7Ci0gIGF1ZGlvX3NydHBfdHJhbnNwb3J0cy5zZWNvbmQtPlNldFNy
dHBSZWNlaXZlS2V5KGtUZXN0Q3J5cHRvUGFyYW1zMSk7Ci0gIHZpZGVvX3NydHBfdHJhbnNwb3J0
cy5zZWNvbmQtPlNldFNydHBTZW5kS2V5KGtUZXN0Q3J5cHRvUGFyYW1zNCk7Ci0gIHZpZGVvX3Ny
dHBfdHJhbnNwb3J0cy5zZWNvbmQtPlNldFNydHBSZWNlaXZlS2V5KGtUZXN0Q3J5cHRvUGFyYW1z
Myk7Ci0KLSAgLy8gQ3JlYXRlIGFsbCB0aGUgc2VuZGVycyBhbmQgcmVjZWl2ZXJzIChmb3VyIHBl
ciBlbmRwb2ludCkuCi0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdDEgPSBvcnRjX2ZhY3Rvcnkx
Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgYXVk
aW9fc3J0cF90cmFuc3BvcnRzLmZpcnN0LmdldCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXJfcmVz
dWx0MSA9IG9ydGNfZmFjdG9yeTFfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpN
RURJQV9UWVBFX1ZJREVPLCB2aWRlb19zcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICBh
dXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDEgPSBvcnRjX2ZhY3RvcnkxXy0+Q3JlYXRlUnRwUmVj
ZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBhdWRpb19zcnRwX3RyYW5z
cG9ydHMuZmlyc3QuZ2V0KCkpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyX3Jlc3VsdDEgPSBvcnRj
X2ZhY3RvcnkxXy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBF
X1ZJREVPLCB2aWRlb19zcnRwX3RyYW5zcG9ydHMuZmlyc3QuZ2V0KCkpOwotICBBU1NFUlRfVFJV
RShhdWRpb19zZW5kZXJfcmVzdWx0MS5vaygpKTsKLSAgQVNTRVJUX1RSVUUodmlkZW9fc2VuZGVy
X3Jlc3VsdDEub2soKSk7Ci0gIEFTU0VSVF9UUlVFKGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDEub2so
KSk7Ci0gIEFTU0VSVF9UUlVFKHZpZGVvX3JlY2VpdmVyX3Jlc3VsdDEub2soKSk7Ci0gIGF1dG8g
YXVkaW9fc2VuZGVyMSA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQxLk1vdmVWYWx1ZSgpOwotICBhdXRv
IHZpZGVvX3NlbmRlcjEgPSB2aWRlb19zZW5kZXJfcmVzdWx0MS5Nb3ZlVmFsdWUoKTsKLSAgYXV0
byBhdWRpb19yZWNlaXZlcjEgPSBhdWRpb19yZWNlaXZlcl9yZXN1bHQxLk1vdmVWYWx1ZSgpOwot
ICBhdXRvIHZpZGVvX3JlY2VpdmVyMSA9IHZpZGVvX3JlY2VpdmVyX3Jlc3VsdDEuTW92ZVZhbHVl
KCk7Ci0KLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeTJfLT5DcmVh
dGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBhdWRpb19zcnRw
X3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpKTsKLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0MiA9
IG9ydGNfZmFjdG9yeTJfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9U
WVBFX1ZJREVPLCB2aWRlb19zcnRwX3RyYW5zcG9ydHMuc2Vjb25kLmdldCgpKTsKLSAgYXV0byBh
dWRpb19yZWNlaXZlcl9yZXN1bHQyID0gb3J0Y19mYWN0b3J5Ml8tPkNyZWF0ZVJ0cFJlY2VpdmVy
KAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgYXVkaW9fc3J0cF90cmFuc3BvcnRz
LnNlY29uZC5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0MiA9IG9ydGNfZmFj
dG9yeTJfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklE
RU8sIHZpZGVvX3NydHBfdHJhbnNwb3J0cy5zZWNvbmQuZ2V0KCkpOwotICBBU1NFUlRfVFJVRShh
dWRpb19zZW5kZXJfcmVzdWx0Mi5vaygpKTsKLSAgQVNTRVJUX1RSVUUodmlkZW9fc2VuZGVyX3Jl
c3VsdDIub2soKSk7Ci0gIEFTU0VSVF9UUlVFKGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdDIub2soKSk7
Ci0gIEFTU0VSVF9UUlVFKHZpZGVvX3JlY2VpdmVyX3Jlc3VsdDIub2soKSk7Ci0gIGF1dG8gYXVk
aW9fc2VuZGVyMiA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQyLk1vdmVWYWx1ZSgpOwotICBhdXRvIHZp
ZGVvX3NlbmRlcjIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Mi5Nb3ZlVmFsdWUoKTsKLSAgYXV0byBh
dWRpb19yZWNlaXZlcjIgPSBhdWRpb19yZWNlaXZlcl9yZXN1bHQyLk1vdmVWYWx1ZSgpOwotICBh
dXRvIHZpZGVvX3JlY2VpdmVyMiA9IHZpZGVvX3JlY2VpdmVyX3Jlc3VsdDIuTW92ZVZhbHVlKCk7
Ci0KLSAgUlRDRXJyb3IgZXJyb3IgPSBhdWRpb19zZW5kZXIxLT5TZXRUcmFjaygKLSAgICAgIENy
ZWF0ZUxvY2FsQXVkaW9UcmFjaygiYXVkaW8iLCBvcnRjX2ZhY3RvcnkxXy5nZXQoKSkpOwotICBF
WFBFQ1RfVFJVRShlcnJvci5vaygpKTsKLSAgZXJyb3IgPSB2aWRlb19zZW5kZXIxLT5TZXRUcmFj
aygKLSAgICAgIENyZWF0ZUxvY2FsVmlkZW9UcmFja0FuZEZha2VTb3VyY2UoInZpZGVvIiwgb3J0
Y19mYWN0b3J5MV8uZ2V0KCkpKTsKLSAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0gIGVycm9y
ID0gYXVkaW9fc2VuZGVyMi0+U2V0VHJhY2soCi0gICAgICBDcmVhdGVMb2NhbEF1ZGlvVHJhY2so
ImF1ZGlvIiwgb3J0Y19mYWN0b3J5Ml8uZ2V0KCkpKTsKLSAgRVhQRUNUX1RSVUUoZXJyb3Iub2so
KSk7Ci0gIGVycm9yID0gdmlkZW9fc2VuZGVyMi0+U2V0VHJhY2soCi0gICAgICBDcmVhdGVMb2Nh
bFZpZGVvVHJhY2tBbmRGYWtlU291cmNlKCJ2aWRlbyIsIG9ydGNfZmFjdG9yeTJfLmdldCgpKSk7
Ci0gIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwotCi0gIC8vIFVzZSBkaWZmZXJlbnQgY29kZWNz
IGluIGRpZmZlcmVudCBkaXJlY3Rpb25zIGZvciBleHRyYSBjaGFsbGVuZ2UuCi0gIFJ0cFBhcmFt
ZXRlcnMgb3B1c19zZW5kX3BhcmFtZXRlcnMgPSBNYWtlRnVsbE9wdXNQYXJhbWV0ZXJzKCk7Ci0g
IFJ0cFBhcmFtZXRlcnMgaXNhY19zZW5kX3BhcmFtZXRlcnMgPSBNYWtlRnVsbElzYWNQYXJhbWV0
ZXJzKCk7Ci0gIFJ0cFBhcmFtZXRlcnMgdnA4X3NlbmRfcGFyYW1ldGVycyA9IE1ha2VGdWxsVnA4
UGFyYW1ldGVycygpOwotICBSdHBQYXJhbWV0ZXJzIHZwOV9zZW5kX3BhcmFtZXRlcnMgPSBNYWtl
RnVsbFZwOVBhcmFtZXRlcnMoKTsKLQotICAvLyBSZW1vdmUgInBheWxvYWRfdHlwZSIgZnJvbSBy
ZWNlaXZlIHBhcmFtZXRlcnMuIFJlY2VpdmVyIHdpbGwgbmVlZCB0bwotICAvLyBkaXNjZXJuIHRo
ZSBwYXlsb2FkIHR5cGUgZnJvbSBwYWNrZXRzIHJlY2VpdmVkLgotICBSdHBQYXJhbWV0ZXJzIG9w
dXNfcmVjZWl2ZV9wYXJhbWV0ZXJzID0gb3B1c19zZW5kX3BhcmFtZXRlcnM7Ci0gIFJ0cFBhcmFt
ZXRlcnMgaXNhY19yZWNlaXZlX3BhcmFtZXRlcnMgPSBpc2FjX3NlbmRfcGFyYW1ldGVyczsKLSAg
UnRwUGFyYW1ldGVycyB2cDhfcmVjZWl2ZV9wYXJhbWV0ZXJzID0gdnA4X3NlbmRfcGFyYW1ldGVy
czsKLSAgUnRwUGFyYW1ldGVycyB2cDlfcmVjZWl2ZV9wYXJhbWV0ZXJzID0gdnA5X3NlbmRfcGFy
YW1ldGVyczsKLSAgb3B1c19yZWNlaXZlX3BhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLmNvZGVjX3Bh
eWxvYWRfdHlwZS5yZXNldCgpOwotICBpc2FjX3JlY2VpdmVfcGFyYW1ldGVycy5lbmNvZGluZ3Nb
MF0uY29kZWNfcGF5bG9hZF90eXBlLnJlc2V0KCk7Ci0gIHZwOF9yZWNlaXZlX3BhcmFtZXRlcnMu
ZW5jb2RpbmdzWzBdLmNvZGVjX3BheWxvYWRfdHlwZS5yZXNldCgpOwotICB2cDlfcmVjZWl2ZV9w
YXJhbWV0ZXJzLmVuY29kaW5nc1swXS5jb2RlY19wYXlsb2FkX3R5cGUucmVzZXQoKTsKLQotICAv
LyBDb25maWd1cmUgdGhlIHNlbmRlcnMnIGFuZCByZWNlaXZlcnMnIHBhcmFtZXRlcnMuCi0gIC8v
Ci0gIC8vIE5vdGU6IEludGVudGlvbmFsbHksIHRoZSB0b3AgY29kZWMgaW4gdGhlIHJlY2VpdmUg
cGFyYW1ldGVycyBkb2VzIG5vdAotICAvLyBtYXRjaCB0aGUgY29kZWMgc2VudCBieSB0aGUgb3Ro
ZXIgc2lkZS4gSWYgIlJlY2VpdmUiIGlzIGNhbGxlZCB3aXRoIGEgbGlzdAotICAvLyBvZiBjb2Rl
Y3MsIHRoZSByZWNlaXZlciBzaG91bGQgYmUgcHJlcGFyZWQgdG8gcmVjZWl2ZSBhbnkgb2YgdGhl
bSwgbm90Ci0gIC8vIGp1c3QgdGhlIG9uZSBvbiB0b3AuCi0gIEVYUEVDVF9UUlVFKGF1ZGlvX3Jl
Y2VpdmVyMS0+UmVjZWl2ZShvcHVzX3JlY2VpdmVfcGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVD
VF9UUlVFKHZpZGVvX3JlY2VpdmVyMS0+UmVjZWl2ZSh2cDhfcmVjZWl2ZV9wYXJhbWV0ZXJzKS5v
aygpKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXIyLT5SZWNlaXZlKGlzYWNfcmVjZWl2
ZV9wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXIyLT5SZWNl
aXZlKHZwOV9yZWNlaXZlX3BhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19z
ZW5kZXIxLT5TZW5kKG9wdXNfc2VuZF9wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUo
dmlkZW9fc2VuZGVyMS0+U2VuZCh2cDhfc2VuZF9wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNU
X1RSVUUoYXVkaW9fc2VuZGVyMi0+U2VuZChpc2FjX3NlbmRfcGFyYW1ldGVycykub2soKSk7Ci0g
IEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlcjItPlNlbmQodnA5X3NlbmRfcGFyYW1ldGVycykub2so
KSk7Ci0KLSAgRmFrZVZpZGVvVHJhY2tSZW5kZXJlciBmYWtlX3ZpZGVvX3JlbmRlcmVyMSgKLSAg
ICAgIHN0YXRpY19jYXN0PFZpZGVvVHJhY2tJbnRlcmZhY2UqPih2aWRlb19yZWNlaXZlcjEtPkdl
dFRyYWNrKCkuZ2V0KCkpKTsKLSAgRmFrZVZpZGVvVHJhY2tSZW5kZXJlciBmYWtlX3ZpZGVvX3Jl
bmRlcmVyMigKLSAgICAgIHN0YXRpY19jYXN0PFZpZGVvVHJhY2tJbnRlcmZhY2UqPih2aWRlb19y
ZWNlaXZlcjItPkdldFRyYWNrKCkuZ2V0KCkpKTsKLQotICAvLyBTZW5kZXJzIGFuZCByZWNlaXZl
cnMgYXJlIGNvbm5lY3RlZCBhbmQgY29uZmlndXJlZDsgYXVkaW8gYW5kIHZpZGVvIGZyYW1lcwot
ICAvLyBzaG91bGQgYmUgYWJsZSB0byBmbG93IGF0IHRoaXMgcG9pbnQuCi0gIEVYUEVDVF9UUlVF
X1dBSVQoCi0gICAgICBmYWtlX2F1ZGlvX2NhcHR1cmVfbW9kdWxlMV8tPmZyYW1lc19yZWNlaXZl
ZCgpID4ga0RlZmF1bHROdW1GcmFtZXMgJiYKLSAgICAgICAgICBmYWtlX3ZpZGVvX3JlbmRlcmVy
MS5udW1fcmVuZGVyZWRfZnJhbWVzKCkgPiBrRGVmYXVsdE51bUZyYW1lcyAmJgotICAgICAgICAg
IGZha2VfYXVkaW9fY2FwdHVyZV9tb2R1bGUyXy0+ZnJhbWVzX3JlY2VpdmVkKCkgPiBrRGVmYXVs
dE51bUZyYW1lcyAmJgotICAgICAgICAgIGZha2VfdmlkZW9fcmVuZGVyZXIyLm51bV9yZW5kZXJl
ZF9mcmFtZXMoKSA+IGtEZWZhdWx0TnVtRnJhbWVzLAotICAgICAga0RlZmF1bHRUaW1lb3V0KTsK
LX0KLQotLy8gVE9ETyhkZWFkYmVlZik6IEVuZC10by1lbmQgdGVzdCBmb3IgbXVsdGlwbGUgc2Vu
ZGVycy9yZWNlaXZlcnMgb2YgdGhlIHNhbWUKLS8vIG1lZGlhIHR5cGUsIG9uY2UgdGhhdCdzIHN1
cHBvcnRlZC4gQ3VycmVudGx5LCBpdCBpcyBub3QgYmVjYXVzZSB0aGUKLS8vIEJhc2VDaGFubmVs
IG1vZGVsIHJlbGllcyBvbiB0aGVyZSBiZWluZyBhIHNpbmdsZSBWb2ljZUNoYW5uZWwgYW5kCi0v
LyBWaWRlb0NoYW5uZWwsIGFuZCB0aGVzZSBvbmx5IHN1cHBvcnQgYSBzaW5nbGUgc2V0IG9mIGNv
ZGVjcy9ldGMuIHBlcgotLy8gc2VuZC9yZWNlaXZlIGRpcmVjdGlvbi4KLQotLy8gVE9ETyhkZWFk
YmVlZik6IEVuZC10by1lbmQgdGVzdCBmb3Igc2ltdWxjYXN0LCBvbmNlIHRoYXQncyBzdXBwb3J0
ZWQgYnkgdGhpcwotLy8gQVBJLgotCi0jZW5kaWYgIC8vIGlmICFkZWZpbmVkKFRIUkVBRF9TQU5J
VElaRVIpCi0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y2ZhY3RvcnlfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNm
YWN0b3J5X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGFmYmQz
MjhiNmRmZTE3NmE2OGUxMWIyMzIzYzg0ZTMzNTkzODU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL29ydGMvb3J0Y2ZhY3RvcnlfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAt
MSwyNTAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQot
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3Rvcnku
aCIKLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5LmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKLSNpbmNsdWRl
ICJvcnRjL29ydGNmYWN0b3J5LmgiCi0jaW5jbHVkZSAib3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5o
IgotI2luY2x1ZGUgInAycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9mYWtlbmV0d29yay5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5oIgotCi1uYW1lc3BhY2Ugd2VicnRj
IHsKLQotLy8gVGhpcyB0ZXN0IHVzZXMgYSB2aXJ0dWFsIG5ldHdvcmsgYW5kIGZha2UgbWVkaWEg
ZW5naW5lLCBpbiBvcmRlciB0byB0ZXN0IHRoZQotLy8gT3J0Y0ZhY3RvcnkgYXQgb25seSBhbiBB
UEkgbGV2ZWwuIEFueSBlbmQtdG8tZW5kIHRlc3Qgc2hvdWxkIGdvIGluCi0vLyBvcnRjZmFjdG9y
eV9pbnRlZ3JhdGlvbnRlc3QuY2MgaW5zdGVhZC4KLWNsYXNzIE9ydGNGYWN0b3J5VGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6Ci0gIE9ydGNGYWN0b3J5VGVzdCgpCi0gICAg
ICA6IHRocmVhZF8oJnZpcnR1YWxfc29ja2V0X3NlcnZlcl8pLAotICAgICAgICBmYWtlX3BhY2tl
dF90cmFuc3BvcnRfKCJmYWtlIHRyYW5zcG9ydCIpIHsKLSAgICBvcnRjX2ZhY3RvcnlfID0KLSAg
ICAgICAgT3J0Y0ZhY3Rvcnk6OkNyZWF0ZSgmdGhyZWFkXywgbnVsbHB0ciwgJmZha2VfbmV0d29y
a19tYW5hZ2VyXywgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpN
ZWRpYUVuZ2luZUludGVyZmFjZT4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
dyBjcmlja2V0OjpGYWtlTWVkaWFFbmdpbmUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpKQotICAgICAgICAg
ICAgLk1vdmVWYWx1ZSgpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIFVzZXMgYSBzaW5nbGUg
cHJlLW1hZGUgRmFrZVBhY2tldFRyYW5zcG9ydCwgc28gc2hvdWxkbid0IGJlIGNhbGxlZCB0d2lj
ZSBpbgotICAvLyB0aGUgc2FtZSB0ZXN0LgotICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0
SW50ZXJmYWNlPgotICBDcmVhdGVSdHBUcmFuc3BvcnRXaXRoRmFrZVBhY2tldFRyYW5zcG9ydCgp
IHsKLSAgICByZXR1cm4gb3J0Y19mYWN0b3J5XwotICAgICAgICAtPkNyZWF0ZVJ0cFRyYW5zcG9y
dChNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSwgJmZha2VfcGFja2V0X3RyYW5zcG9ydF8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIpCi0gICAgICAgIC5Nb3Zl
VmFsdWUoKTsKLSAgfQotCi0gIHJ0Yzo6VmlydHVhbFNvY2tldFNlcnZlciB2aXJ0dWFsX3NvY2tl
dF9zZXJ2ZXJfOwotICBydGM6OkF1dG9Tb2NrZXRTZXJ2ZXJUaHJlYWQgdGhyZWFkXzsKLSAgcnRj
OjpGYWtlTmV0d29ya01hbmFnZXIgZmFrZV9uZXR3b3JrX21hbmFnZXJfOwotICBydGM6OkZha2VQ
YWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRfdHJhbnNwb3J0XzsKLSAgc3RkOjp1bmlxdWVfcHRy
PE9ydGNGYWN0b3J5SW50ZXJmYWNlPiBvcnRjX2ZhY3RvcnlfOwotfTsKLQotVEVTVF9GKE9ydGNG
YWN0b3J5VGVzdCwgQ2FuQ3JlYXRlTXVsdGlwbGVSdHBUcmFuc3BvcnRDb250cm9sbGVycykgewot
ICBhdXRvIGNvbnRyb2xsZXJfcmVzdWx0MSA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5z
cG9ydENvbnRyb2xsZXIoKTsKLSAgRVhQRUNUX1RSVUUoY29udHJvbGxlcl9yZXN1bHQxLm9rKCkp
OwotICBhdXRvIGNvbnRyb2xsZXJfcmVzdWx0MiA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRy
YW5zcG9ydENvbnRyb2xsZXIoKTsKLSAgRVhQRUNUX1RSVUUoY29udHJvbGxlcl9yZXN1bHQxLm9r
KCkpOwotfQotCi0vLyBTaW1wbGUgdGVzdCBmb3IgdGhlIHN1Y2Nlc3NmdWwgY2FzZXMgb2YgQ3Jl
YXRlUnRwVHJhbnNwb3J0LgotVEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgQ3JlYXRlUnRwVHJhbnNw
b3J0V2l0aEFuZFdpdGhvdXRNdXgpIHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0cCgi
cnRwIik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBydGNwKCJydGNwIik7Ci0gIC8vIFdp
dGggbXV4ZWQgUlRDUC4KLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gTWFr
ZVJ0Y3BNdXhQYXJhbWV0ZXJzKCk7Ci0gIGF1dG8gcmVzdWx0ID0KLSAgICAgIG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydChwYXJhbWV0ZXJzLCAmcnRwLCBudWxscHRyLCBudWxscHRy
KTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0Lm9rKCkpOwotICByZXN1bHQuTW92ZVZhbHVlKCkucmVz
ZXQoKTsKLSAgLy8gV2l0aCBub24tbXV4ZWQgUlRDUC4KLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9
IGZhbHNlOwotICByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQocGFy
YW1ldGVycywgJnJ0cCwgJnJ0Y3AsIG51bGxwdHIpOwotICBFWFBFQ1RfVFJVRShyZXN1bHQub2so
KSk7Ci19Ci0KLS8vIFNpbXBsZSB0ZXN0IGZvciB0aGUgc3VjY2Vzc2Z1bCBjYXNlcyBvZiBDcmVh
dGVTcnRwVHJhbnNwb3J0LgotVEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgQ3JlYXRlU3J0cFRyYW5z
cG9ydCkgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRwKCJydHAiKTsKLSAgcnRjOjpG
YWtlUGFja2V0VHJhbnNwb3J0IHJ0Y3AoInJ0Y3AiKTsKLSAgLy8gV2l0aCBtdXhlZCBSVENQLgot
ICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlUnRjcE11eFBhcmFtZXRl
cnMoKTsKLSAgYXV0byByZXN1bHQgPQotICAgICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlU3J0cFRy
YW5zcG9ydChwYXJhbWV0ZXJzLCAmcnRwLCBudWxscHRyLCBudWxscHRyKTsKLSAgRVhQRUNUX1RS
VUUocmVzdWx0Lm9rKCkpOwotICByZXN1bHQuTW92ZVZhbHVlKCkucmVzZXQoKTsKLSAgLy8gV2l0
aCBub24tbXV4ZWQgUlRDUC4KLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9IGZhbHNlOwotICByZXN1
bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVTcnRwVHJhbnNwb3J0KHBhcmFtZXRlcnMsICZydHAs
ICZydGNwLCBudWxscHRyKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0Lm9rKCkpOwotfQotCi0vLyBJ
ZiBubyBDTkFNRSBpcyBwcm92aWRlZCwgb25lIHNob3VsZCBiZSBnZW5lcmF0ZWQgYW5kIHJldHVy
bmVkIGJ5Ci0vLyBHZXRSdHBQYXJhbWV0ZXJzLgotVEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgQ3Jl
YXRlUnRwVHJhbnNwb3J0R2VuZXJhdGVzQ25hbWUpIHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNw
b3J0IHJ0cCgicnRwIik7Ci0gIGF1dG8gcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRw
VHJhbnNwb3J0KE1ha2VSdGNwTXV4UGFyYW1ldGVycygpLCAmcnRwLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyKTsKLSAg
QVNTRVJUX1RSVUUocmVzdWx0Lm9rKCkpOwotICBFWFBFQ1RfRkFMU0UocmVzdWx0LnZhbHVlKCkt
PkdldFBhcmFtZXRlcnMoKS5ydGNwLmNuYW1lLmVtcHR5KCkpOwotfQotCi0vLyBFeHRlbnNpb24g
b2YgdGhlIGFib3ZlIHRlc3Q7IG11bHRpcGxlIHRyYW5zcG9ydHMgY3JlYXRlZCBieSB0aGUgc2Ft
ZSBmYWN0b3J5Ci0vLyBzaG91bGQgdXNlIHRoZSBzYW1lIGdlbmVyYXRlZCBDTkFNRS4KLVRFU1Rf
RihPcnRjRmFjdG9yeVRlc3QsIE11bHRpcGxlUnRwVHJhbnNwb3J0c1VzZVNhbWVHZW5lcmF0ZWRD
bmFtZSkgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcGFja2V0X3RyYW5zcG9ydDEoIjEi
KTsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHBhY2tldF90cmFuc3BvcnQyKCIyIik7Ci0g
IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VSdGNwTXV4UGFyYW1ldGVy
cygpOwotICAvLyBTYW5pdHkgY2hlY2suCi0gIEFTU0VSVF9UUlVFKHBhcmFtZXRlcnMucnRjcC5j
bmFtZS5lbXB0eSgpKTsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBU
cmFuc3BvcnQoCi0gICAgICBwYXJhbWV0ZXJzLCAmcGFja2V0X3RyYW5zcG9ydDEsIG51bGxwdHIs
IG51bGxwdHIpOwotICBBU1NFUlRfVFJVRShyZXN1bHQub2soKSk7Ci0gIGF1dG8gcnRwX3RyYW5z
cG9ydDEgPSByZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNy
ZWF0ZVJ0cFRyYW5zcG9ydChwYXJhbWV0ZXJzLCAmcGFja2V0X3RyYW5zcG9ydDIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyKTsK
LSAgQVNTRVJUX1RSVUUocmVzdWx0Lm9rKCkpOwotICBhdXRvIHJ0cF90cmFuc3BvcnQyID0gcmVz
dWx0Lk1vdmVWYWx1ZSgpOwotICBSdGNwUGFyYW1ldGVycyBwYXJhbXMxID0gcnRwX3RyYW5zcG9y
dDEtPkdldFBhcmFtZXRlcnMoKS5ydGNwOwotICBSdGNwUGFyYW1ldGVycyBwYXJhbXMyID0gcnRw
X3RyYW5zcG9ydDItPkdldFBhcmFtZXRlcnMoKS5ydGNwOwotICBFWFBFQ1RfRkFMU0UocGFyYW1z
MS5jbmFtZS5lbXB0eSgpKTsKLSAgRVhQRUNUX0VRKHBhcmFtczEuY25hbWUsIHBhcmFtczIuY25h
bWUpOwotfQotCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVSdHBUcmFuc3BvcnRXaXRo
Tm9QYWNrZXRUcmFuc3BvcnQpIHsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBUcmFuc3BvcnQoTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwgcmVzdWx0
LmVycm9yKCkudHlwZSgpKTsKLX0KLQotLy8gSWYgdGhlIHxtdXh8IG1lbWJlciBvZiB0aGUgUnRj
cFBhcmFtZXRlcnMgaXMgZmFsc2UsIGJvdGggYW4gUlRQIGFuZCBSVENQCi0vLyBwYWNrZXQgdHJh
bnNwb3J0IGFyZSBuZWVkZWQuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVSdHBUcmFu
c3BvcnRXaXRoTWlzc2luZ1J0Y3BUcmFuc3BvcnQpIHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNw
b3J0IHJ0cCgicnRwIik7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAg
cGFyYW1ldGVycy5ydGNwLm11eCA9IGZhbHNlOwotICBhdXRvIHJlc3VsdCA9Ci0gICAgICBvcnRj
X2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQocGFyYW1ldGVycywgJnJ0cCwgbnVsbHB0ciwg
bnVsbHB0cik7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCBy
ZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotfQotCi0vLyBJZiB0aGUgfG11eHwgbWVtYmVyIG9mIHRo
ZSBSdGNwUGFyYW1ldGVycyBpcyB0cnVlLCBvbmx5IGFuIFJUUCBwYWNrZXQKLS8vIHRyYW5zcG9y
dCBpcyBuZWNlc3NhcnkuIFNvLCBwYXNzaW5nIGluIGFuIFJUQ1AgdHJhbnNwb3J0IGlzIG1vc3Qg
bGlrZWx5Ci0vLyBhbiBhY2NpZGVudCwgYW5kIHRodXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4g
ZXJyb3IuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVSdHBUcmFuc3BvcnRXaXRoRXh0
cmFuZW91c1J0Y3BUcmFuc3BvcnQpIHsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0cCgi
cnRwIik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBydGNwKCJydGNwIik7Ci0gIGF1dG8g
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KE1ha2VSdGNwTXV4UGFy
YW1ldGVycygpLCAmcnRwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmcnRjcCwgbnVsbHB0cik7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklO
VkFMSURfUEFSQU1FVEVSLCByZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotfQotCi0vLyBCYXNpYyB0
ZXN0IHRoYXQgQ3JlYXRlVWRwVHJhbnNwb3J0IHdvcmtzIHdpdGggQUZfSU5FVCBhbmQgQUZfSU5F
VDYuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVVZHBUcmFuc3BvcnQpIHsKLSAgYXV0
byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVVZHBUcmFuc3BvcnQoQUZfSU5FVCk7Ci0g
IEVYUEVDVF9UUlVFKHJlc3VsdC5vaygpKTsKLSAgcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3Jl
YXRlVWRwVHJhbnNwb3J0KEFGX0lORVQ2KTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0Lm9rKCkpOwot
fQotCi0vLyBUZXN0IENyZWF0ZVVkcFBvcnQgd2l0aCB0aGUgfG1pbl9wb3J0fCBhbmQgfG1heF9w
b3J0fCBhcmd1bWVudHMuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVVZHBUcmFuc3Bv
cnRXaXRoUG9ydFJhbmdlKSB7Ci0gIGF1dG8gc29ja2V0X3Jlc3VsdDEgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVVZHBUcmFuc3BvcnQoQUZfSU5FVCwgMjAwMCwgMjAwMik7Ci0gIEFTU0VSVF9UUlVF
KHNvY2tldF9yZXN1bHQxLm9rKCkpOwotICBFWFBFQ1RfRVEoMjAwMCwgc29ja2V0X3Jlc3VsdDEu
dmFsdWUoKS0+R2V0TG9jYWxBZGRyZXNzKCkucG9ydCgpKTsKLSAgYXV0byBzb2NrZXRfcmVzdWx0
MiA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVVkcFRyYW5zcG9ydChBRl9JTkVULCAyMDAwLCAyMDAy
KTsKLSAgQVNTRVJUX1RSVUUoc29ja2V0X3Jlc3VsdDIub2soKSk7Ci0gIEVYUEVDVF9FUSgyMDAx
LCBzb2NrZXRfcmVzdWx0Mi52YWx1ZSgpLT5HZXRMb2NhbEFkZHJlc3MoKS5wb3J0KCkpOwotICBh
dXRvIHNvY2tldF9yZXN1bHQzID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlVWRwVHJhbnNwb3J0KEFG
X0lORVQsIDIwMDAsIDIwMDIpOwotICBBU1NFUlRfVFJVRShzb2NrZXRfcmVzdWx0My5vaygpKTsK
LSAgRVhQRUNUX0VRKDIwMDIsIHNvY2tldF9yZXN1bHQzLnZhbHVlKCktPkdldExvY2FsQWRkcmVz
cygpLnBvcnQoKSk7Ci0KLSAgLy8gQWxsIHNvY2tldHMgaW4gdGhlIHJhbmdlIGhhdmUgYmVlbiBl
eGhhdXN0ZWQsIHNvIHRoZSBuZXh0IGNhbGwgc2hvdWxkCi0gIC8vIGZhaWwuCi0gIGF1dG8gZmFp
bGVkX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVVkcFRyYW5zcG9ydChBRl9JTkVULCAy
MDAwLCAyMDAyKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6UkVTT1VSQ0VfRVhIQVVTVEVE
LCBmYWlsZWRfcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLQotICAvLyBJZiBvbmUgc29ja2V0IGlz
IGRlc3Ryb3llZCwgdGhhdCBwb3J0IHNob3VsZCBiZSBmcmVlZCB1cCBhZ2Fpbi4KLSAgc29ja2V0
X3Jlc3VsdDIuTW92ZVZhbHVlKCkucmVzZXQoKTsKLSAgYXV0byBzb2NrZXRfcmVzdWx0NCA9IG9y
dGNfZmFjdG9yeV8tPkNyZWF0ZVVkcFRyYW5zcG9ydChBRl9JTkVULCAyMDAwLCAyMDAyKTsKLSAg
QVNTRVJUX1RSVUUoc29ja2V0X3Jlc3VsdDQub2soKSk7Ci0gIEVYUEVDVF9FUSgyMDAxLCBzb2Nr
ZXRfcmVzdWx0NC52YWx1ZSgpLT5HZXRMb2NhbEFkZHJlc3MoKS5wb3J0KCkpOwotfQotCi0vLyBC
YXNpYyB0ZXN0IHRoYXQgQ3JlYXRlVWRwVHJhbnNwb3J0IHdvcmtzIHdpdGggQUZfSU5FVCBhbmQg
QUZfSU5FVDYuCi1URVNUX0YoT3J0Y0ZhY3RvcnlUZXN0LCBDcmVhdGVVZHBUcmFuc3BvcnRXaXRo
SW52YWxpZEFkZHJlc3NGYW1pbHkpIHsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5D
cmVhdGVVZHBUcmFuc3BvcnQoMTIzNDUpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZB
TElEX1BBUkFNRVRFUiwgcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLX0KLQotVEVTVF9GKE9ydGNG
YWN0b3J5VGVzdCwgQ3JlYXRlVWRwVHJhbnNwb3J0V2l0aEludmFsaWRQb3J0UmFuZ2UpIHsKLSAg
YXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVVZHBUcmFuc3BvcnQoQUZfSU5FVCwg
MzAwMCwgMjAwMCk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUkFOR0UsIHJl
c3VsdC5lcnJvcigpLnR5cGUoKSk7Ci19Ci0KLS8vIEp1c3Qgc2FuaXR5IGNoZWNrIHRoYXQgZWFj
aCAiR2V0Q2FwYWJpbGl0aWVzIiBtZXRob2QgcmV0dXJucyBzb21lIGNvZGVjcy4KLVRFU1RfRihP
cnRjRmFjdG9yeVRlc3QsIEdldFNlbmRlckFuZFJlY2VpdmVyQ2FwYWJpbGl0aWVzKSB7Ci0gIFJ0
cENhcGFiaWxpdGllcyBhdWRpb19zZW5kX2NhcHMgPQotICAgICAgb3J0Y19mYWN0b3J5Xy0+R2V0
UnRwU2VuZGVyQ2FwYWJpbGl0aWVzKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8pOwotICBFWFBF
Q1RfR1QoYXVkaW9fc2VuZF9jYXBzLmNvZGVjcy5zaXplKCksIDB1KTsKLSAgUnRwQ2FwYWJpbGl0
aWVzIHZpZGVvX3NlbmRfY2FwcyA9Ci0gICAgICBvcnRjX2ZhY3RvcnlfLT5HZXRSdHBTZW5kZXJD
YXBhYmlsaXRpZXMoY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTyk7Ci0gIEVYUEVDVF9HVCh2aWRl
b19zZW5kX2NhcHMuY29kZWNzLnNpemUoKSwgMHUpOwotICBSdHBDYXBhYmlsaXRpZXMgYXVkaW9f
cmVjZWl2ZV9jYXBzID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkdldFJ0cFJlY2VpdmVyQ2FwYWJp
bGl0aWVzKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8pOwotICBFWFBFQ1RfR1QoYXVkaW9fcmVj
ZWl2ZV9jYXBzLmNvZGVjcy5zaXplKCksIDB1KTsKLSAgUnRwQ2FwYWJpbGl0aWVzIHZpZGVvX3Jl
Y2VpdmVfY2FwcyA9Ci0gICAgICBvcnRjX2ZhY3RvcnlfLT5HZXRSdHBSZWNlaXZlckNhcGFiaWxp
dGllcyhjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPKTsKLSAgRVhQRUNUX0dUKHZpZGVvX3JlY2Vp
dmVfY2Fwcy5jb2RlY3Muc2l6ZSgpLCAwdSk7Ci19Ci0KLS8vIENhbGxpbmcgQ3JlYXRlUnRwU2Vu
ZGVyIHdpdGggYSBudWxsIHRyYWNrIHNob3VsZCBmYWlsLCBzaW5jZSB0aGF0IG1ha2VzIGl0Ci0v
LyBpbXBvc3NpYmxlIHRvIGtub3cgd2hldGhlciB0byBjcmVhdGUgYW4gYXVkaW8gb3IgdmlkZW8g
c2VuZGVyLiBUaGUKLS8vIGFwcGxpY2F0aW9uIHNob3VsZCBiZSB1c2luZyB0aGUgbWV0aG9kIHRo
YXQgdGFrZXMgYSBjcmlja2V0OjpNZWRpYVR5cGUKLS8vIGluc3RlYWQuCi1URVNUX0YoT3J0Y0Zh
Y3RvcnlUZXN0LCBDcmVhdGVTZW5kZXJXaXRoTnVsbFRyYWNrKSB7Ci0gIGF1dG8gcnRwX3RyYW5z
cG9ydCA9IENyZWF0ZVJ0cFRyYW5zcG9ydFdpdGhGYWtlUGFja2V0VHJhbnNwb3J0KCk7Ci0gIGF1
dG8gcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKG51bGxwdHIsIHJ0cF90
cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFN
RVRFUiwgcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLX0KLQotLy8gQ2FsbGluZyBDcmVhdGVSdHBT
ZW5kZXIgb3IgQ3JlYXRlUnRwUmVjZWl2ZXIgd2l0aCBNRURJQV9UWVBFX0RBVEEgc2hvdWxkCi0v
LyBmYWlsLgotVEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgQ3JlYXRlU2VuZGVyT3JSZWNlaWV2ZXJX
aXRoSW52YWxpZEtpbmQpIHsKLSAgYXV0byBydHBfdHJhbnNwb3J0ID0gQ3JlYXRlUnRwVHJhbnNw
b3J0V2l0aEZha2VQYWNrZXRUcmFuc3BvcnQoKTsKLSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90
cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFN
RVRFUiwgc2VuZGVyX3Jlc3VsdC5lcnJvcigpLnR5cGUoKSk7Ci0gIGF1dG8gcmVjZWl2ZXJfcmVz
dWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpN
RURJQV9UWVBFX0RBVEEsIHJ0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJy
b3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwgcmVjZWl2ZXJfcmVzdWx0LmVycm9yKCkudHlwZSgp
KTsKLX0KLQotVEVTVF9GKE9ydGNGYWN0b3J5VGVzdCwgQ3JlYXRlU2VuZGVyc09yUmVjZWlldmVy
c1dpdGhOdWxsVHJhbnNwb3J0KSB7Ci0gIGF1dG8gc2VuZGVyX3Jlc3VsdCA9Ci0gICAgICBvcnRj
X2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgbnVs
bHB0cik7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLCBzZW5k
ZXJfcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLSAgYXV0byByZWNlaXZlcl9yZXN1bHQgPQotICAg
ICAgb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoY3JpY2tldDo6TUVESUFfVFlQRV9B
VURJTywgbnVsbHB0cik7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1F
VEVSLCByZWNlaXZlcl9yZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9vcnRjL29ydGNydHByZWNlaXZlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyX3VuaXR0ZXN0
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGU5MjM4NzE0NWVhYzY0YTlmNmQ4
MDhmMjRlZmFmYTlmZWEzNWRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMv
b3J0Y3J0cHJlY2VpdmVyX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNTUwICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
Ci0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJh
cGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVk
ZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgotI2lu
Y2x1ZGUgIm1lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmgiCi0jaW5jbHVkZSAib3J0Yy9vcnRj
ZmFjdG9yeS5oIgotI2luY2x1ZGUgIm9ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuaCIKLSNpbmNsdWRl
ICJwMnAvYmFzZS9mYWtlcGFja2V0dHJhbnNwb3J0LmgiCi0jaW5jbHVkZSAicGMvdGVzdC9mYWtl
dmlkZW90cmFja3NvdXJjZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0KLW5hbWVz
cGFjZSB3ZWJydGMgewotCi0vLyBUaGlzIHRlc3QgdXNlcyBhbiBpbmRpdmlkdWFsIFJ0cFJlY2Vp
dmVyIHVzaW5nIG9ubHkgdGhlIHB1YmxpYyBpbnRlcmZhY2UsCi0vLyBhbmQgdmVyaWZpZXMgdGhh
dCBpdCBiZWhhdmVzIGFzIGRlc2lnbmVkIGF0IGFuIEFQSSBsZXZlbC4gQWxzbyB0ZXN0cyB0aGF0
Ci0vLyBwYXJhbWV0ZXJzIGFyZSBhcHBsaWVkIHRvIHRoZSBhdWRpby92aWRlbyBlbmdpbmVzIGFz
IGV4cGVjdGVkLiBOZXR3b3JrIGFuZAotLy8gbWVkaWEgaW50ZXJmYWNlcyBhcmUgZmFrZWQgdG8g
aXNvbGF0ZSB3aGF0J3MgYmVpbmcgdGVzdGVkLgotLy8KLS8vIFRoaXMgdGVzdCBzaG91bGRuJ3Qg
cmVzdWx0IGFueSBhbnkgYWN0dWFsIG1lZGlhIGJlaW5nIHNlbnQuIFRoYXQgc29ydCBvZgotLy8g
dGVzdCBzaG91bGQgZ28gaW4gb3J0Y2ZhY3RvcnlfaW50ZWdyYXRpb250ZXN0LmNjLgotY2xhc3Mg
T3J0Y1J0cFJlY2VpdmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6Ci0g
IE9ydGNSdHBSZWNlaXZlclRlc3QoKSA6IGZha2VfcGFja2V0X3RyYW5zcG9ydF8oImZha2UiKSB7
Ci0gICAgZmFrZV9tZWRpYV9lbmdpbmVfID0gbmV3IGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZSgp
OwotICAgIC8vIE5vdGU6IFRoaXMgZG9lc24ndCBuZWVkIHRvIHVzZSBmYWtlIG5ldHdvcmsgY2xh
c3Nlcywgc2luY2Ugd2UgYWxyZWFkeQotICAgIC8vIHVzZSBGYWtlUGFja2V0VHJhbnNwb3J0Lgot
ICAgIGF1dG8gb3J0Y19mYWN0b3J5X3Jlc3VsdCA9IE9ydGNGYWN0b3J5OjpDcmVhdGUoCi0gICAg
ICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4oZmFrZV9tZWRp
YV9lbmdpbmVfKSwKLSAgICAgICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwg
Q3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSk7Ci0gICAgb3J0Y19mYWN0b3J5XyA9
IG9ydGNfZmFjdG9yeV9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gICAgUnRwVHJhbnNwb3J0UGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMucnRjcC5tdXggPSB0cnVlOwotICAgIGF1
dG8gcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3Bv
cnQoCi0gICAgICAgIHBhcmFtZXRlcnMsICZmYWtlX3BhY2tldF90cmFuc3BvcnRfLCBudWxscHRy
LCBudWxscHRyKTsKLSAgICBydHBfdHJhbnNwb3J0XyA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIE93bmVkIGJ5IHxvcnRjX2ZhY3Rv
cnlffC4KLSAgY3JpY2tldDo6RmFrZU1lZGlhRW5naW5lKiBmYWtlX21lZGlhX2VuZ2luZV87Ci0g
IHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBmYWtlX3BhY2tldF90cmFuc3BvcnRfOwotICBzdGQ6
OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+IG9ydGNfZmFjdG9yeV87Ci0gIHN0ZDo6
dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+IHJ0cF90cmFuc3BvcnRfOwotfTsKLQot
Ly8gU2VlIG9ydGNydHByZWNlaXZlcmludGVyZmFjZS5oIGZvciB0aGUgY3VycmVudCBleHBlY3Rh
dGlvbnMgb2Ygd2hhdCBHZXRUcmFjawotLy8gd2lsbCByZXR1cm4gYWZ0ZXIgY2FsbHMgdG8gUmVj
ZWl2ZS4KLS8vIFRPRE8oZGVhZGJlZWYpOiBSZXBsYWNlIHRoaXMgdGVzdCB3aGVuIHRoZSBub24t
c3RhbmRhcmQgYmVoYXZpb3IgaXMgZml4ZWQKLS8vIGFuZCBHZXRUcmFjayBzdGFydHMgcmV0dXJu
aW5nIHRoZSBzYW1lIHRyYWNrIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlCi0vLyByZWNlaXZlci4K
LVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBHZXRUcmFjaykgewotICBhdXRvIHJlY2VpdmVy
X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tl
dDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBBU1NFUlRfVFJV
RShyZWNlaXZlcl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gcmVjZWl2ZXIgPSByZWNlaXZlcl9yZXN1
bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gVHJhY2sgaW5pdGlhbGx5IGV4cGVjdGVkIHRvIGJlIG51
bGwuCi0gIEVYUEVDVF9FUShudWxscHRyLCByZWNlaXZlcl9yZXN1bHQudmFsdWUoKS5nZXQoKSk7
Ci0KLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmltYWxWcDhQYXJhbWV0
ZXJzV2l0aE5vU3NyYygpKS5vaygpKTsKLSAgYXV0byBpbml0aWFsX3RyYWNrID0gcmVjZWl2ZXIt
PkdldFRyYWNrKCk7Ci0gIEVYUEVDVF9ORShudWxscHRyLCBpbml0aWFsX3RyYWNrKTsKLQotICAv
LyBDb2RlYyBjaGFuZ2luZyBidXQgU1NSQyAob3IgbGFjayB0aGVyZW9mKSBpc24ndDsgc2hvdWxk
bid0IGNyZWF0ZSBuZXcgdHJhY2sKLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXItPlJlY2VpdmUoTWFr
ZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0aE5vU3NyYygpKS5vaygpKTsKLSAgRVhQRUNUX0VRKGlu
aXRpYWxfdHJhY2ssIHJlY2VpdmVyLT5HZXRUcmFjaygpKTsKLQotICAvLyBFeHBsaWNpdGx5IHNl
dCBTU1JDIGFuZCBleHBlY3QgYSBkaWZmZXJlbnQgdHJhY2suCi0gIEVYUEVDVF9UUlVFKAotICAg
ICAgcmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJzV2l0aFNzcmMoMHhk
ZWFkYmVlZikpLm9rKCkpOwotICBhdXRvIG5leHRfdHJhY2sgPSByZWNlaXZlci0+R2V0VHJhY2so
KTsKLSAgRVhQRUNUX05FKG5leHRfdHJhY2ssIGluaXRpYWxfdHJhY2spOwotCi0gIC8vIERlYWN0
aXZhdGluZyB0aGUgZW5jb2Rpbmcgc2hvdWxkbid0IGNoYW5nZSB0aGUgdHJhY2suCi0gIFJ0cFBh
cmFtZXRlcnMgaW5hY3RpdmVfZW5jb2RpbmcgPQotICAgICAgTWFrZU1pbmltYWxWcDlQYXJhbWV0
ZXJzV2l0aFNzcmMoMHhkZWFkYmVlZik7Ci0gIGluYWN0aXZlX2VuY29kaW5nLmVuY29kaW5nc1sw
XS5hY3RpdmUgPSBmYWxzZTsKLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXItPlJlY2VpdmUoaW5hY3Rp
dmVfZW5jb2RpbmcpLm9rKCkpOwotICBFWFBFQ1RfRVEobmV4dF90cmFjaywgcmVjZWl2ZXItPkdl
dFRyYWNrKCkpOwotCi0gIC8vIFJlbW92aW5nIGFsbCBlbmNvZGluZ3MgKmlzKiBleHBlY3RlZCB0
byBjbGVhciB0aGUgdHJhY2suCi0gIFJ0cFBhcmFtZXRlcnMgbm9fZW5jb2RpbmdzID0gTWFrZU1p
bmltYWxWcDlQYXJhbWV0ZXJzV2l0aFNzcmMoMHhkZWFkYmVlZik7Ci0gIG5vX2VuY29kaW5ncy5l
bmNvZGluZ3MuY2xlYXIoKTsKLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXItPlJlY2VpdmUobm9fZW5j
b2RpbmdzKS5vaygpKTsKLSAgRVhQRUNUX0VRKG51bGxwdHIsIHJlY2VpdmVyLT5HZXRUcmFjaygp
KTsKLX0KLQotLy8gQ3VycmVudGx5IFNldFRyYW5zcG9ydCBpc24ndCBzdXBwb3J0ZWQuIFdoZW4g
aXQgaXMsIHJlcGxhY2UgdGhpcyB0ZXN0IHdpdGggYQotLy8gdGVzdC90ZXN0cyBmb3IgaXQuCi1U
RVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVzdCwgU2V0VHJhbnNwb3J0RmFpbHMpIHsKLSAgcnRjOjpG
YWtlUGFja2V0VHJhbnNwb3J0IGZha2VfcGFja2V0X3RyYW5zcG9ydCgiYW5vdGhlcl90cmFuc3Bv
cnQiKTsKLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICBwYXJhbWV0ZXJz
LnJ0Y3AubXV4ID0gdHJ1ZTsKLSAgYXV0byBydHBfdHJhbnNwb3J0X3Jlc3VsdCA9IG9ydGNfZmFj
dG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIHBhcmFtZXRlcnMsICZmYWtlX3BhY2tl
dF90cmFuc3BvcnQsIG51bGxwdHIsIG51bGxwdHIpOwotICBhdXRvIHJ0cF90cmFuc3BvcnQgPSBy
dHBfdHJhbnNwb3J0X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICBhdXRvIHJlY2VpdmVyX3Jlc3Vs
dCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVE
SUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHJlY2VpdmVyID0g
cmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpV
TlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICByZWNlaXZlci0+U2V0VHJhbnNwb3J0
KHJ0cF90cmFuc3BvcnQuZ2V0KCkpLnR5cGUoKSk7Ci19Ci0KLVRFU1RfRihPcnRjUnRwUmVjZWl2
ZXJUZXN0LCBHZXRUcmFuc3BvcnQpIHsKLSAgYXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5D
cmVhdGVSdHBSZWNlaXZlcihjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnRfLmdldCgp
KTsKLSAgRVhQRUNUX0VRKHJ0cF90cmFuc3BvcnRfLmdldCgpLCByZXN1bHQudmFsdWUoKS0+R2V0
VHJhbnNwb3J0KCkpOwotfQotCi0vLyBUZXN0IHRoYXQgIlJlY2VpdmUiIGNhdXNlcyB0aGUgZXhw
ZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVkIHRvIHRoZSBtZWRpYQotLy8gZW5naW5lIGxl
dmVsLCBmb3IgYW4gYXVkaW8gcmVjZWl2ZXIuCi1URVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVzdCwg
UmVjZWl2ZUFwcGxpZXNBdWRpb1BhcmFtZXRlcnNUb01lZGlhRW5naW5lKSB7Ci0gIGF1dG8gYXVk
aW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0g
ICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0g
IGF1dG8gYXVkaW9fcmVjZWl2ZXIgPSBhdWRpb19yZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7
Ci0KLSAgLy8gRmlyc3QsIGNyZWF0ZSBwYXJhbWV0ZXJzIHdpdGggYWxsIHRoZSBiZWxscyBhbmQg
d2hpc3RsZXMuCi0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICBSdHBDb2RlY1BhcmFt
ZXRlcnMgb3B1c19jb2RlYzsKLSAgb3B1c19jb2RlYy5uYW1lID0gIm9wdXMiOwotICBvcHVzX2Nv
ZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOwotICBvcHVzX2NvZGVjLnBheWxv
YWRfdHlwZSA9IDEyMDsKLSAgb3B1c19jb2RlYy5jbG9ja19yYXRlLmVtcGxhY2UoNDgwMDApOwot
ICBvcHVzX2NvZGVjLm51bV9jaGFubmVscy5lbXBsYWNlKDIpOwotICBvcHVzX2NvZGVjLnBhcmFt
ZXRlcnNbIm1pbnB0aW1lIl0gPSAiMTAiOwotICBvcHVzX2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1w
bGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6OlRSQU5TUE9SVF9DQyk7Ci0gIHBhcmFtZXRlcnMu
Y29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUob3B1c19jb2RlYykpOwotCi0gIC8vIEFkZCB0d28g
Y29kZWNzLCBleHBlY3RpbmcgdGhlIGZpcnN0IHRvIGJlIHVzZWQuCi0gIC8vIFRPRE8oZGVhZGJl
ZWYpOiBPbmNlICJjb2RlY19wYXlsb2FkX3R5cGUiIGlzIHN1cHBvcnRlZCwgdXNlIGl0IHRvIHNl
bGVjdCBhCi0gIC8vIGNvZGVjIHRoYXQncyBub3QgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4KLSAg
UnRwQ29kZWNQYXJhbWV0ZXJzIGlzYWNfY29kZWM7Ci0gIGlzYWNfY29kZWMubmFtZSA9ICJJU0FD
IjsKLSAgaXNhY19jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzsKLSAgaXNh
Y19jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMTA7Ci0gIGlzYWNfY29kZWMuY2xvY2tfcmF0ZS5lbXBs
YWNlKDE2MDAwKTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShpc2Fj
X2NvZGVjKSk7Ci0KLSAgUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIGVuY29kaW5nOwotICBlbmNvZGlu
Zy5zc3JjLmVtcGxhY2UoMHhkZWFkYmVlZik7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLnB1c2hf
YmFjayhzdGQ6Om1vdmUoZW5jb2RpbmcpKTsKLQotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNp
b25zLmVtcGxhY2VfYmFjaygKLSAgICAgICJ1cm46aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDpzc3Jj
LWF1ZGlvLWxldmVsIiwgMyk7Ci0KLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2Vp
dmUocGFyYW1ldGVycykub2soKSk7Ci0KLSAgLy8gTm93IHZlcmlmeSB0aGF0IHRoZSBwYXJhbWV0
ZXJzIHdlcmUgYXBwbGllZCB0byB0aGUgZmFrZSBtZWRpYSBlbmdpbmUgbGF5ZXIKLSAgLy8gdGhh
dCBleGlzdHMgYmVsb3cgQmFzZUNoYW5uZWwuCi0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hh
bm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0
Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVs
KTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92b2ljZV9jaGFubmVsLT5wbGF5b3V0KCkpOwotCi0gIC8v
IFZlcmlmeSBjb2RlYyBwYXJhbWV0ZXJzLgotICBBU1NFUlRfR1QoZmFrZV92b2ljZV9jaGFubmVs
LT5yZWN2X2NvZGVjcygpLnNpemUoKSwgMHUpOwotICBjb25zdCBjcmlja2V0OjpBdWRpb0NvZGVj
JiB0b3BfY29kZWMgPSBmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3ZfY29kZWNzKClbMF07Ci0gIEVY
UEVDVF9FUSgib3B1cyIsIHRvcF9jb2RlYy5uYW1lKTsKLSAgRVhQRUNUX0VRKDEyMCwgdG9wX2Nv
ZGVjLmlkKTsKLSAgRVhQRUNUX0VRKDQ4MDAwLCB0b3BfY29kZWMuY2xvY2tyYXRlKTsKLSAgRVhQ
RUNUX0VRKDJ1LCB0b3BfY29kZWMuY2hhbm5lbHMpOwotICBBU1NFUlRfTkUodG9wX2NvZGVjLnBh
cmFtcy5lbmQoKSwgdG9wX2NvZGVjLnBhcmFtcy5maW5kKCJtaW5wdGltZSIpKTsKLSAgRVhQRUNU
X0VRKCIxMCIsIHRvcF9jb2RlYy5wYXJhbXMuYXQoIm1pbnB0aW1lIikpOwotCi0gIC8vIFZlcmlm
eSBlbmNvZGluZyBwYXJhbWV0ZXJzLgotICBBU1NFUlRfRVEoMXUsIGZha2Vfdm9pY2VfY2hhbm5l
bC0+cmVjdl9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAgY29uc3QgY3JpY2tldDo6U3RyZWFtUGFyYW1z
JiByZWN2X3N0cmVhbSA9Ci0gICAgICBmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygp
WzBdOwotICBFWFBFQ1RfRVEoMXUsIHJlY3Zfc3RyZWFtLnNzcmNzLnNpemUoKSk7Ci0gIEVYUEVD
VF9FUSgweGRlYWRiZWVmLCByZWN2X3N0cmVhbS5maXJzdF9zc3JjKCkpOwotCi0gIC8vIFZlcmlm
eSBoZWFkZXIgZXh0ZW5zaW9ucy4KLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZvaWNlX2NoYW5uZWwt
PnJlY3ZfZXh0ZW5zaW9ucygpLnNpemUoKSk7Ci0gIGNvbnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5z
aW9uID0gZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2X2V4dGVuc2lvbnMoKVswXTsKLSAgRVhQRUNU
X0VRKCJ1cm46aWV0ZjpwYXJhbXM6cnRwLWhkcmV4dDpzc3JjLWF1ZGlvLWxldmVsIiwgZXh0ZW5z
aW9uLnVyaSk7Ci0gIEVYUEVDVF9FUSgzLCBleHRlbnNpb24uaWQpOwotfQotCi0vLyBUZXN0IHRo
YXQgIlJlY2VpdmUiIGNhdXNlcyB0aGUgZXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVk
IHRvIHRoZSBtZWRpYQotLy8gZW5naW5lIGxldmVsLCBmb3IgYSB2aWRlbyByZWNlaXZlci4KLVRF
U1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBSZWNlaXZlQXBwbGllc1ZpZGVvUGFyYW1ldGVyc1Rv
TWVkaWFFbmdpbmUpIHsKLSAgYXV0byB2aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rv
cnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8s
IHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19yZWNlaXZlciA9IHZpZGVvX3Jl
Y2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAvLyBGaXJzdCwgY3JlYXRlIHBhcmFtZXRl
cnMgd2l0aCBhbGwgdGhlIGJlbGxzIGFuZCB3aGlzdGxlcy4KLSAgUnRwUGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyB2cDhfY29kZWM7Ci0gIHZwOF9jb2RlYy5u
YW1lID0gIlZQOCI7Ci0gIHZwOF9jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9WSURF
TzsKLSAgdnA4X2NvZGVjLnBheWxvYWRfdHlwZSA9IDk5OwotICAvLyBUcnkgYSBjb3VwbGUgdHlw
ZXMgb2YgZmVlZGJhY2sgcGFyYW1zLiAiR2VuZXJpYyBOQUNLIiBpcyBhIGJpdCBvZiBhCi0gIC8v
IHNwZWNpYWwgY2FzZSwgc28gdGVzdCBpdCBoZXJlLgotICB2cDhfY29kZWMucnRjcF9mZWVkYmFj
ay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6Q0NNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5cGU6OkZJUik7Ci0gIHZw
OF9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpOQUNL
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVz
c2FnZVR5cGU6OkdFTkVSSUNfTkFDSyk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhz
dGQ6Om1vdmUodnA4X2NvZGVjKSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHZwOF9ydHhfY29k
ZWM7Ci0gIHZwOF9ydHhfY29kZWMubmFtZSA9ICJydHgiOwotICB2cDhfcnR4X2NvZGVjLmtpbmQg
PSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICB2cDhfcnR4X2NvZGVjLnBheWxvYWRfdHlw
ZSA9IDEwMDsKLSAgdnA4X3J0eF9jb2RlYy5wYXJhbWV0ZXJzWyJhcHQiXSA9ICI5OSI7Ci0gIHBh
cmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUodnA4X3J0eF9jb2RlYykpOwotCi0g
IC8vIEFkZCB0d28gY29kZWNzLCBleHBlY3RpbmcgdGhlIGZpcnN0IHRvIGJlIHVzZWQuCi0gIC8v
IFRPRE8oZGVhZGJlZWYpOiBPbmNlICJjb2RlY19wYXlsb2FkX3R5cGUiIGlzIHN1cHBvcnRlZCwg
dXNlIGl0IHRvIHNlbGVjdCBhCi0gIC8vIGNvZGVjIHRoYXQncyBub3QgYXQgdGhlIHRvcCBvZiB0
aGUgbGlzdC4KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHZwOV9jb2RlYzsKLSAgdnA5X2NvZGVjLm5h
bWUgPSAiVlA5IjsKLSAgdnA5X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVP
OwotICB2cDlfY29kZWMucGF5bG9hZF90eXBlID0gMTAyOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5w
dXNoX2JhY2soc3RkOjptb3ZlKHZwOV9jb2RlYykpOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyB2
cDlfcnR4X2NvZGVjOwotICB2cDlfcnR4X2NvZGVjLm5hbWUgPSAicnR4IjsKLSAgdnA5X3J0eF9j
b2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgdnA5X3J0eF9jb2RlYy5w
YXlsb2FkX3R5cGUgPSAxMDM7Ci0gIHZwOV9ydHhfY29kZWMucGFyYW1ldGVyc1siYXB0Il0gPSAi
MTAyIjsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZSh2cDlfcnR4X2Nv
ZGVjKSk7Ci0KLSAgUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIGVuY29kaW5nOwotICBlbmNvZGluZy5z
c3JjLmVtcGxhY2UoMHhkZWFkYmVlZik7Ci0gIGVuY29kaW5nLnJ0eC5lbXBsYWNlKDB4YmFhZGZl
ZWQpOwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5wdXNoX2JhY2soc3RkOjptb3ZlKGVuY29kaW5n
KSk7Ci0KLSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soInVybjoz
Z3BwOnZpZGVvLW9yaWVudGF0aW9uIiwgNCk7Ci0gIHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lv
bnMuZW1wbGFjZV9iYWNrKAotICAgICAgImh0dHA6Ly93d3cud2VicnRjLm9yZy9leHBlcmltZW50
cy9ydHAtaGRyZXh0L3BsYXlvdXQtZGVsYXkiLCA2KTsKLQotICBFWFBFQ1RfVFJVRSh2aWRlb19y
ZWNlaXZlci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5vaygpKTsKLQotICAvLyBOb3cgdmVyaWZ5IHRo
YXQgdGhlIHBhcmFtZXRlcnMgd2VyZSBhcHBsaWVkIHRvIHRoZSBmYWtlIG1lZGlhIGVuZ2luZSBs
YXllcgotICAvLyB0aGF0IGV4aXN0cyBiZWxvdyBCYXNlQ2hhbm5lbC4KLSAgY3JpY2tldDo6RmFr
ZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRp
YV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtl
X3ZpZGVvX2NoYW5uZWwpOwotCi0gIC8vIFZlcmlmeSBjb2RlYyBwYXJhbWV0ZXJzLgotICBBU1NF
UlRfR0UoZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X2NvZGVjcygpLnNpemUoKSwgMnUpOwotICBj
b25zdCBjcmlja2V0OjpWaWRlb0NvZGVjJiB0b3BfY29kZWMgPSBmYWtlX3ZpZGVvX2NoYW5uZWwt
PnJlY3ZfY29kZWNzKClbMF07Ci0gIEVYUEVDVF9FUSgiVlA4IiwgdG9wX2NvZGVjLm5hbWUpOwot
ICBFWFBFQ1RfRVEoOTksIHRvcF9jb2RlYy5pZCk7Ci0gIEVYUEVDVF9UUlVFKHRvcF9jb2RlYy5m
ZWVkYmFja19wYXJhbXMuSGFzKHsiY2NtIiwgImZpciJ9KSk7Ci0gIEVYUEVDVF9UUlVFKHRvcF9j
b2RlYy5mZWVkYmFja19wYXJhbXMuSGFzKGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0oIm5hY2siKSkp
OwotCi0gIGNvbnN0IGNyaWNrZXQ6OlZpZGVvQ29kZWMmIHJ0eF9jb2RlYyA9IGZha2VfdmlkZW9f
Y2hhbm5lbC0+cmVjdl9jb2RlY3MoKVsxXTsKLSAgRVhQRUNUX0VRKCJydHgiLCBydHhfY29kZWMu
bmFtZSk7Ci0gIEVYUEVDVF9FUSgxMDAsIHJ0eF9jb2RlYy5pZCk7Ci0gIEFTU0VSVF9ORShydHhf
Y29kZWMucGFyYW1zLmVuZCgpLCBydHhfY29kZWMucGFyYW1zLmZpbmQoImFwdCIpKTsKLSAgRVhQ
RUNUX0VRKCI5OSIsIHJ0eF9jb2RlYy5wYXJhbXMuYXQoImFwdCIpKTsKLQotICAvLyBWZXJpZnkg
ZW5jb2RpbmcgcGFyYW1ldGVycy4KLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZpZGVvX2NoYW5uZWwt
PnJlY3Zfc3RyZWFtcygpLnNpemUoKSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYg
cmVjdl9zdHJlYW0gPQotICAgICAgZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X3N0cmVhbXMoKVsw
XTsKLSAgRVhQRUNUX0VRKDJ1LCByZWN2X3N0cmVhbS5zc3Jjcy5zaXplKCkpOwotICBFWFBFQ1Rf
RVEoMHhkZWFkYmVlZiwgcmVjdl9zdHJlYW0uZmlyc3Rfc3NyYygpKTsKLSAgdWludDMyX3QgcnR4
X3NzcmMgPSAwdTsKLSAgRVhQRUNUX1RSVUUocmVjdl9zdHJlYW0uR2V0RmlkU3NyYyhyZWN2X3N0
cmVhbS5maXJzdF9zc3JjKCksICZydHhfc3NyYykpOwotICBFWFBFQ1RfRVEoMHhiYWFkZmVlZCwg
cnR4X3NzcmMpOwotCi0gIC8vIFZlcmlmeSBoZWFkZXIgZXh0ZW5zaW9ucy4KLSAgQVNTRVJUX0VR
KDJ1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3ZfZXh0ZW5zaW9ucygpLnNpemUoKSk7Ci0gIGNv
bnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uMSA9IGZha2VfdmlkZW9fY2hhbm5lbC0+cmVjdl9l
eHRlbnNpb25zKClbMF07Ci0gIEVYUEVDVF9FUSgidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24i
LCBleHRlbnNpb24xLnVyaSk7Ci0gIEVYUEVDVF9FUSg0LCBleHRlbnNpb24xLmlkKTsKLSAgY29u
c3QgUnRwRXh0ZW5zaW9uJiBleHRlbnNpb24yID0gZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X2V4
dGVuc2lvbnMoKVsxXTsKLSAgRVhQRUNUX0VRKCJodHRwOi8vd3d3LndlYnJ0Yy5vcmcvZXhwZXJp
bWVudHMvcnRwLWhkcmV4dC9wbGF5b3V0LWRlbGF5IiwKLSAgICAgICAgICAgIGV4dGVuc2lvbjIu
dXJpKTsKLSAgRVhQRUNUX0VRKDYsIGV4dGVuc2lvbjIuaWQpOwotfQotCi0vLyBUZXN0IGNoYW5n
aW5nIGJvdGggdGhlIHJlY2VpdmUgY29kZWMgYW5kIFNTUkMgYXQgdGhlIHNhbWUgdGltZSwgYW5k
IHZlcmlmeQotLy8gdGhhdCB0aGUgbmV3IHBhcmFtZXRlcnMgYXJlIGFwcGxpZWQgdG8gdGhlIG1l
ZGlhIGVuZ2luZSBsZXZlbC4KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBDYWxsaW5nUmVj
ZWl2ZVR3aWNlQ2hhbmdlc1BhcmFtZXRlcnMpIHsKLSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1
bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNl
aXZlciA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgUlRDRXJyb3IgZXJy
b3IgPQotICAgICAgYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmltYWxPcHVzUGFyYW1l
dGVyc1dpdGhTc3JjKDB4MTExMTExMTEpKTsKLSAgRVhQRUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0g
IGVycm9yID0KLSAgICAgIGF1ZGlvX3JlY2VpdmVyLT5SZWNlaXZlKE1ha2VNaW5pbWFsSXNhY1Bh
cmFtZXRlcnNXaXRoU3NyYygweDIyMjIyMjIyKSk7Ci0gIEVYUEVDVF9UUlVFKGVycm9yLm9rKCkp
OwotCi0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVs
ID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NF
UlRfTkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgQVNTRVJUX0dUKGZha2Vfdm9p
Y2VfY2hhbm5lbC0+cmVjdl9jb2RlY3MoKS5zaXplKCksIDB1KTsKLSAgRVhQRUNUX0VRKCJJU0FD
IiwgZmFrZV92b2ljZV9jaGFubmVsLT5yZWN2X2NvZGVjcygpWzBdLm5hbWUpOwotICBBU1NFUlRf
RVEoMXUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+cmVjdl9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAgRVhQ
RUNUX0VRKDB4MjIyMjIyMjJ1LCBmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpWzBd
LmZpcnN0X3NzcmMoKSk7Ci0KLSAgYXV0byB2aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2Zh
Y3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklE
RU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19yZWNlaXZlciA9IHZpZGVv
X3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgZXJyb3IgPSB2aWRlb19yZWNlaXZlci0+
UmVjZWl2ZShNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoU3NyYygweDMzMzMzMzMzKSk7Ci0g
IEVYUEVDVF9UUlVFKGVycm9yLm9rKCkpOwotICBlcnJvciA9IHZpZGVvX3JlY2VpdmVyLT5SZWNl
aXZlKE1ha2VNaW5pbWFsVnA5UGFyYW1ldGVyc1dpdGhTc3JjKDB4NDQ0NDQ0NDQpKTsKLSAgRVhQ
RUNUX1RSVUUoZXJyb3Iub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVs
KiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRl
b0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwot
ICBBU1NFUlRfR1QoZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X2NvZGVjcygpLnNpemUoKSwgMHUp
OwotICBFWFBFQ1RfRVEoIlZQOSIsIGZha2VfdmlkZW9fY2hhbm5lbC0+cmVjdl9jb2RlY3MoKVsw
XS5uYW1lKTsKLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnJlY3Zfc3RyZWFt
cygpLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgweDQ0NDQ0NDQ0dSwgZmFrZV92aWRlb19jaGFubmVs
LT5yZWN2X3N0cmVhbXMoKVswXS5maXJzdF9zc3JjKCkpOwotfQotCi0vLyBFbnN1cmUgdGhhdCBp
ZiB0aGUgfGFjdGl2ZXwgZmxhZyBvZiBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgaXMgc2V0IHRvIGZh
bHNlLAotLy8gcGxheW91dCBzdG9wcyBhdCB0aGUgbWVkaWEgZW5naW5lIGxldmVsLiBOb3RlIHRo
YXQgdGhpcyBpcyBvbmx5IGFwcGxpY2FibGUKLS8vIHRvIGF1ZGlvIChhdCBsZWFzdCBjdXJyZW50
bHkpLgotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIERlYWN0aXZhdGluZ0VuY29kaW5nU3Rv
cHNQbGF5b3V0KSB7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5
Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBy
dHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXIgPSBhdWRpb19yZWNl
aXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1h
a2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXIt
PlJlY2VpdmUocGFyYW1ldGVycykub2soKSk7Ci0KLSAgLy8gRXhwZWN0ICJwbGF5b3V0IiBmbGFn
IHRvIGluaXRpYWxseSBiZSB0cnVlLgotICBjcmlja2V0OjpGYWtlVm9pY2VNZWRpYUNoYW5uZWwq
IGZha2Vfdm9pY2VfY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZvaWNl
Q2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2Vfdm9pY2VfY2hhbm5lbCk7Ci0g
IEVYUEVDVF9UUlVFKGZha2Vfdm9pY2VfY2hhbm5lbC0+cGxheW91dCgpKTsKLQotICAvLyBEZWFj
dGl2YXRlIGVuY29kaW5nIGFuZCBleHBlY3QgaXQgdG8gY2hhbmdlIHRvIGZhbHNlLgotICBwYXJh
bWV0ZXJzLmVuY29kaW5nc1swXS5hY3RpdmUgPSBmYWxzZTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9f
cmVjZWl2ZXItPlJlY2VpdmUocGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9GQUxTRShmYWtl
X3ZvaWNlX2NoYW5uZWwtPnBsYXlvdXQoKSk7Ci19Ci0KLS8vIEVuc3VyZSB0aGF0IGNhbGxpbmcg
UmVjZWl2ZSB3aXRoIGFuIGVtcHR5IGxpc3Qgb2YgZW5jb2RpbmdzIGNhdXNlcyByZWNlaXZlCi0v
LyBzdHJlYW1zIGF0IHRoZSBtZWRpYSBlbmdpbmUgbGV2ZWwgdG8gYmUgY2xlYXJlZC4KLVRFU1Rf
RihPcnRjUnRwUmVjZWl2ZXJUZXN0LAotICAgICAgIENhbGxpbmdSZWNlaXZlV2l0aEVtcHR5RW5j
b2RpbmdzQ2xlYXJzUmVjZWl2ZVN0cmVhbXMpIHsKLSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1
bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNl
aXZlciA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgUnRwUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJV
RShhdWRpb19yZWNlaXZlci0+UmVjZWl2ZShwYXJhbWV0ZXJzKS5vaygpKTsKLSAgcGFyYW1ldGVy
cy5lbmNvZGluZ3MuY2xlYXIoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2Vp
dmUocGFyYW1ldGVycykub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZvaWNlTWVkaWFDaGFubmVs
KiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWb2lj
ZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZvaWNlX2NoYW5uZWwpOwot
ICBFWFBFQ1RfVFJVRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnJlY3Zfc3RyZWFtcygpLmVtcHR5KCkp
OwotCi0gIGF1dG8gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNw
b3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fcmVjZWl2ZXIgPSB2aWRlb19yZWNlaXZlcl9yZXN1
bHQuTW92ZVZhbHVlKCk7Ci0gIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMo
KTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUocGFyYW1ldGVycykub2so
KSk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzLmNsZWFyKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVv
X3JlY2VpdmVyLT5SZWNlaXZlKHBhcmFtZXRlcnMpLm9rKCkpOwotCi0gIGNyaWNrZXQ6OkZha2VW
aWRlb01lZGlhQ2hhbm5lbCogZmFrZV92aWRlb19jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFf
ZW5naW5lXy0+R2V0VmlkZW9DaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92
aWRlb19jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X3N0
cmVhbXMoKS5lbXB0eSgpKTsKLX0KLQotLy8gVGhlc2UgZXJyb3JzIHNob3VsZCBiZSBjb3ZlcmVk
IGJ5IHJ0cHBhcmFtZXRlcnNjb252ZXJzaW9uX3VuaXR0ZXN0LmNjLCBidXQKLS8vIHdlIHNob3Vs
ZCBhdCBsZWFzdCB0ZXN0IHRoYXQgdGhvc2UgZXJyb3JzIGFyZSBwcm9wb2dhdGVkIGZyb20gY2Fs
bHMgdG8KLS8vIFJlY2VpdmUsIHdpdGggYSBmZXcgZXhhbXBsZXMuCi1URVNUX0YoT3J0Y1J0cFJl
Y2VpdmVyVGVzdCwgUmVjZWl2ZVJldHVybnNFcnJvck9uSW52YWxpZFBhcmFtZXRlcnMpIHsKLSAg
YXV0byByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcihjcmlja2V0OjpN
RURJQV9UWVBFX0FVRElPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byByZWNlaXZlciA9IHJlc3Vs
dC5Nb3ZlVmFsdWUoKTsKLSAgLy8gQ0NNIGZlZWRiYWNrIG1pc3NpbmcgbWVzc2FnZSB0eXBlLgot
ICBSdHBQYXJhbWV0ZXJzIGludmFsaWRfZmVlZGJhY2sgPSBNYWtlTWluaW1hbE9wdXNQYXJhbWV0
ZXJzKCk7Ci0gIGludmFsaWRfZmVlZGJhY2suY29kZWNzWzBdLnJ0Y3BfZmVlZGJhY2suZW1wbGFj
ZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6OkNDTSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6
OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgcmVjZWl2ZXItPlJlY2VpdmUoaW52YWxp
ZF9mZWVkYmFjaykudHlwZSgpKTsKLSAgLy8gUGF5bG9hZCB0eXBlIGdyZWF0ZXIgdGhhbiAxMjcu
Ci0gIFJ0cFBhcmFtZXRlcnMgaW52YWxpZF9wdCA9IE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMo
KTsKLSAgaW52YWxpZF9wdC5jb2RlY3NbMF0ucGF5bG9hZF90eXBlID0gMTI4OwotICBFWFBFQ1Rf
RVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1JBTkdFLCByZWNlaXZlci0+UmVjZWl2ZShpbnZhbGlk
X3B0KS50eXBlKCkpOwotICAvLyBEdXBsaWNhdGUgaGVhZGVyIGV4dGVuc2lvbiBJRHMuCi0gIFJ0
cFBhcmFtZXRlcnMgZHVwbGljYXRlX2lkcyA9IE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsK
LSAgZHVwbGljYXRlX2lkcy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soImZvbyIsIDUp
OwotICBkdXBsaWNhdGVfaWRzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygiYmFyIiwg
NSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAg
ICAgICAgcmVjZWl2ZXItPlJlY2VpdmUoZHVwbGljYXRlX2lkcykudHlwZSgpKTsKLX0KLQotLy8g
VHdvIHJlY2VpdmVycyB1c2luZyB0aGUgc2FtZSB0cmFuc3BvcnQgc2hvdWxkbid0IGJlIGFibGUg
dG8gdXNlIHRoZSBzYW1lCi0vLyBwYXlsb2FkIHR5cGUgdG8gcmVmZXIgdG8gZGlmZmVyZW50IGNv
ZGVjcywgc2FtZSBoZWFkZXIgZXh0ZW5zaW9uIElEcyB0bwotLy8gcmVmZXIgdG8gZGlmZmVyZW50
IGV4dGVuc2lvbnMsIG9yIHNhbWUgU1NSQy4KLVRFU1RfRihPcnRjUnRwUmVjZWl2ZXJUZXN0LCBS
ZWNlaXZlUmV0dXJuc0Vycm9yT25JZENvbmZsaWN0cykgewotICBhdXRvIGF1ZGlvX3JlY2VpdmVy
X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tl
dDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVv
X3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAg
ICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBh
dXRvIGF1ZGlvX3JlY2VpdmVyID0gYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwot
ICBhdXRvIHZpZGVvX3JlY2VpdmVyID0gdmlkZW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgp
OwotCi0gIC8vIEZpcnN0IHRlc3QgcGF5bG9hZCB0eXBlIGNvbmZsaWN0LgotICBSdHBQYXJhbWV0
ZXJzIGF1ZGlvX3BhcmFtZXRlcnMgPSBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCk7Ci0gIFJ0
cFBhcmFtZXRlcnMgdmlkZW9fcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygp
OwotICBhdWRpb19wYXJhbWV0ZXJzLmNvZGVjc1swXS5wYXlsb2FkX3R5cGUgPSAxMDA7Ci0gIHZp
ZGVvX3BhcmFtZXRlcnMuY29kZWNzWzBdLnBheWxvYWRfdHlwZSA9IDEwMDsKLSAgRVhQRUNUX1RS
VUUoYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUoYXVkaW9fcGFyYW1ldGVycykub2soKSk7Ci0gIEVY
UEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgdmlk
ZW9fcmVjZWl2ZXItPlJlY2VpdmUodmlkZW9fcGFyYW1ldGVycykudHlwZSgpKTsKLQotICAvLyBU
ZXN0IGhlYWRlciBleHRlbnNpb24gSUQgY29uZmxpY3QuCi0gIHZpZGVvX3BhcmFtZXRlcnMuY29k
ZWNzWzBdLnBheWxvYWRfdHlwZSA9IDExMDsKLSAgYXVkaW9fcGFyYW1ldGVycy5oZWFkZXJfZXh0
ZW5zaW9ucy5lbXBsYWNlX2JhY2soImZvbyIsIDQpOwotICB2aWRlb19wYXJhbWV0ZXJzLmhlYWRl
cl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygiYmFyIiwgNCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlv
X3JlY2VpdmVyLT5SZWNlaXZlKGF1ZGlvX3BhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfRVEo
UlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgIHZpZGVvX3JlY2Vp
dmVyLT5SZWNlaXZlKHZpZGVvX3BhcmFtZXRlcnMpLnR5cGUoKSk7Ci0KLSAgLy8gVGVzdCBTU1JD
IGNvbmZsaWN0LiBIYXZlIGFuIFJUWCBTU1JDIHRoYXQgY29uZmxpY3RzIHdpdGggYSBwcmltYXJ5
IFNTUkMKLSAgLy8gZm9yIGV4dHJhIGNoYWxsZW5nZS4KLSAgdmlkZW9fcGFyYW1ldGVycy5oZWFk
ZXJfZXh0ZW5zaW9uc1swXS51cmkgPSAiZm9vIjsKLSAgYXVkaW9fcGFyYW1ldGVycy5lbmNvZGlu
Z3NbMF0uc3NyYy5lbXBsYWNlKDB4YWJiYWFiYmEpOwotICBhdWRpb19wYXJhbWV0ZXJzLmVuY29k
aW5nc1swXS5ydHguZW1wbGFjZSgweGRlYWRiZWVmKTsKLSAgdmlkZW9fcGFyYW1ldGVycy5lbmNv
ZGluZ3NbMF0uc3NyYy5lbXBsYWNlKDB4ZGVhZGJlZWYpOwotICBFWFBFQ1RfVFJVRShhdWRpb19y
ZWNlaXZlci0+UmVjZWl2ZShhdWRpb19wYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKFJU
Q0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICB2aWRlb19yZWNlaXZl
ci0+UmVjZWl2ZSh2aWRlb19wYXJhbWV0ZXJzKS50eXBlKCkpOwotCi0gIC8vIFNhbml0eSBjaGVj
ayB0aGF0IHBhcmFtZXRlcnMgY2FuIGJlIHNldCBpZiB0aGUgY29uZmxpY3RzIGFyZSBhbGwgcmVz
b2x2ZWQuCi0gIHZpZGVvX3BhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnNzcmMuZW1wbGFjZSgweGJh
YWRmMDBkKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUodmlkZW9fcGFy
YW1ldGVycykub2soKSk7Ci19Ci0KLS8vIEVuc3VyZSB0aGF0IGRlbGV0aW5nIGEgcmVjZWl2ZXIg
Y2F1c2VzIHJlY2VpdmUgc3RyZWFtcyBhdCB0aGUgbWVkaWEgZW5naW5lCi0vLyBsZXZlbCB0byBi
ZSBjbGVhcmVkLgotVEVTVF9GKE9ydGNSdHBSZWNlaXZlclRlc3QsIERlbGV0aW5nUmVjZWl2ZXJD
bGVhcnNSZWNlaXZlU3RyZWFtcykgewotICBhdXRvIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdCA9IG9y
dGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQ
RV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3JlY2VpdmVyID0g
YXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRShhdWRpb19y
ZWNlaXZlci0+UmVjZWl2ZShNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0g
IC8vIEFsc28gY3JlYXRlIGFuIGF1ZGlvIHNlbmRlciwgdG8gcHJldmVudCB0aGUgdm9pY2UgY2hh
bm5lbCBmcm9tIGJlaW5nCi0gIC8vIGNvbXBsZXRlbHkgZGVsZXRlZC4KLSAgYXV0byBhdWRpb19z
ZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3Jp
Y2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1
ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9U
UlVFKGF1ZGlvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkpLm9rKCkp
OwotCi0gIGF1ZGlvX3JlY2VpdmVyLnJlc2V0KG51bGxwdHIpOwotICBjcmlja2V0OjpGYWtlVm9p
Y2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2VfY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2Vu
Z2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2Vfdm9p
Y2VfY2hhbm5lbCk7Ci0gIEVYUEVDVF9UUlVFKGZha2Vfdm9pY2VfY2hhbm5lbC0+cmVjdl9zdHJl
YW1zKCkuZW1wdHkoKSk7Ci0KLSAgYXV0byB2aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2Zh
Y3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklE
RU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19yZWNlaXZlciA9IHZpZGVv
X3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2
ZXItPlJlY2VpdmUoTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0gIC8vIEFs
c28gY3JlYXRlIGFuIHZpZGVvIHNlbmRlciwgdG8gcHJldmVudCB0aGUgdmlkZW8gY2hhbm5lbCBm
cm9tIGJlaW5nCi0gIC8vIGNvbXBsZXRlbHkgZGVsZXRlZC4KLSAgYXV0byB2aWRlb19zZW5kZXJf
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6
TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3Nl
bmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKHZp
ZGVvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKSkub2soKSk7Ci0KLSAg
dmlkZW9fcmVjZWl2ZXIucmVzZXQobnVsbHB0cik7Ci0gIGNyaWNrZXQ6OkZha2VWaWRlb01lZGlh
Q2hhbm5lbCogZmFrZV92aWRlb19jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+
R2V0VmlkZW9DaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92aWRlb19jaGFu
bmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92aWRlb19jaGFubmVsLT5yZWN2X3N0cmVhbXMoKS5l
bXB0eSgpKTsKLX0KLQotLy8gSWYgUmVjZWl2ZSBoYXNuJ3QgYmVlbiBjYWxsZWQsIEdldFBhcmFt
ZXRlcnMgc2hvdWxkIHJldHVybiBlbXB0eSBwYXJhbWV0ZXJzLgotVEVTVF9GKE9ydGNSdHBSZWNl
aXZlclRlc3QsIEdldERlZmF1bHRQYXJhbWV0ZXJzKSB7Ci0gIGF1dG8gcmVzdWx0ID0gb3J0Y19m
YWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBfdHJhbnNw
b3J0Xy5nZXQoKSk7Ci0gIEVYUEVDVF9FUShSdHBQYXJhbWV0ZXJzKCksIHJlc3VsdC52YWx1ZSgp
LT5HZXRQYXJhbWV0ZXJzKCkpOwotICByZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBS
ZWNlaXZlcihjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIEVYUEVDVF9F
UShSdHBQYXJhbWV0ZXJzKCksIHJlc3VsdC52YWx1ZSgpLT5HZXRQYXJhbWV0ZXJzKCkpOwotfQot
Ci0vLyBUZXN0IHRoYXQgR2V0UGFyYW1ldGVycyByZXR1cm5zIHRoZSBsYXN0IHBhcmFtZXRlcnMg
cGFzc2VkIGludG8gUmVjZWl2ZSwKLS8vIGFsb25nIHdpdGggdGhlIGltcGxlbWVudGF0aW9uLWRl
ZmF1bHQgdmFsdWVzIGZpbGxlZCBpbiB3aGVyZSB0aGV5IHdlcmUgbGVmdAotLy8gdW5zZXQuCi1U
RVNUX0YoT3J0Y1J0cFJlY2VpdmVyVGVzdCwKLSAgICAgICBHZXRQYXJhbWV0ZXJzUmV0dXJuc0xh
c3RTZXRQYXJhbWV0ZXJzV2l0aERlZmF1bHRzRmlsbGVkKSB7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2
ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlj
a2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVk
aW9fcmVjZWl2ZXIgPSBhdWRpb19yZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgUnRw
UGFyYW1ldGVycyBvcHVzX3BhcmFtZXRlcnMgPSBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCk7
Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVyLT5SZWNlaXZlKG9wdXNfcGFyYW1ldGVycyku
b2soKSk7Ci0gIEVYUEVDVF9FUShvcHVzX3BhcmFtZXRlcnMsIGF1ZGlvX3JlY2VpdmVyLT5HZXRQ
YXJhbWV0ZXJzKCkpOwotCi0gIFJ0cFBhcmFtZXRlcnMgaXNhY19wYXJhbWV0ZXJzID0gTWFrZU1p
bmltYWxJc2FjUGFyYW1ldGVycygpOwotICAvLyBTYW5pdHkgY2hlY2sgdGhhdCBudW1fY2hhbm5l
bHMgYWN0dWFsbHkgaXMgbGVmdCB1bnNldC4KLSAgQVNTRVJUX0ZBTFNFKGlzYWNfcGFyYW1ldGVy
cy5jb2RlY3NbMF0ubnVtX2NoYW5uZWxzKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXIt
PlJlY2VpdmUoaXNhY19wYXJhbWV0ZXJzKS5vaygpKTsKLSAgLy8gU2hvdWxkIGJlIGZpbGxlZCB3
aXRoIGEgZGVmYXVsdCAibnVtIGNoYW5uZWxzIiBvZiAxLgotICAvLyBUT0RPKGRlYWRiZWVmKTog
VGhpcyBzaG91bGQgYWN0dWFsbHkgZGVmYXVsdCB0byAyIGZvciBzb21lIGNvZGVjcy4gVXBkYXRl
Ci0gIC8vIHRoaXMgdGVzdCBvbmNlIHRoYXQncyBpbXBsZW1lbnRlZC4KLSAgaXNhY19wYXJhbWV0
ZXJzLmNvZGVjc1swXS5udW1fY2hhbm5lbHMuZW1wbGFjZSgxKTsKLSAgRVhQRUNUX0VRKGlzYWNf
cGFyYW1ldGVycywgYXVkaW9fcmVjZWl2ZXItPkdldFBhcmFtZXRlcnMoKSk7Ci0KLSAgYXV0byB2
aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigK
LSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsK
LSAgYXV0byB2aWRlb19yZWNlaXZlciA9IHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUo
KTsKLQotICBSdHBQYXJhbWV0ZXJzIHZwOF9wYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxWcDhQYXJh
bWV0ZXJzKCk7Ci0gIC8vIFNhbml0eSBjaGVjayB0aGF0IGNsb2NrX3JhdGUgYWN0dWFsbHkgaXMg
bGVmdCB1bnNldC4KLSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUodnA4X3Bh
cmFtZXRlcnMpLm9rKCkpOwotICAvLyBTaG91bGQgYmUgZmlsbGVkIHdpdGggYSBkZWZhdWx0IGNs
b2NrIHJhdGUgb2YgOTAwMDAuCi0gIHZwOF9wYXJhbWV0ZXJzLmNvZGVjc1swXS5jbG9ja19yYXRl
LmVtcGxhY2UoOTAwMDApOwotICBFWFBFQ1RfRVEodnA4X3BhcmFtZXRlcnMsIHZpZGVvX3JlY2Vp
dmVyLT5HZXRQYXJhbWV0ZXJzKCkpOwotCi0gIFJ0cFBhcmFtZXRlcnMgdnA5X3BhcmFtZXRlcnMg
PSBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnMoKTsKLSAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgY2xv
Y2tfcmF0ZSBhY3R1YWxseSBpcyBsZWZ0IHVuc2V0LgotICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNl
aXZlci0+UmVjZWl2ZSh2cDlfcGFyYW1ldGVycykub2soKSk7Ci0gIC8vIFNob3VsZCBiZSBmaWxs
ZWQgd2l0aCBhIGRlZmF1bHQgY2xvY2sgcmF0ZSBvZiA5MDAwMC4KLSAgdnA5X3BhcmFtZXRlcnMu
Y29kZWNzWzBdLmNsb2NrX3JhdGUuZW1wbGFjZSg5MDAwMCk7Ci0gIEVYUEVDVF9FUSh2cDlfcGFy
YW1ldGVycywgdmlkZW9fcmVjZWl2ZXItPkdldFBhcmFtZXRlcnMoKSk7Ci19Ci0KLVRFU1RfRihP
cnRjUnRwUmVjZWl2ZXJUZXN0LCBHZXRLaW5kKSB7Ci0gIGF1dG8gYXVkaW9fcmVjZWl2ZXJfcmVz
dWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpN
RURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fcmVj
ZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBj
cmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8g
YXVkaW9fcmVjZWl2ZXIgPSBhdWRpb19yZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIGF1
dG8gdmlkZW9fcmVjZWl2ZXIgPSB2aWRlb19yZWNlaXZlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0g
IEVYUEVDVF9FUShjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBhdWRpb19yZWNlaXZlci0+R2V0
S2luZCgpKTsKLSAgRVhQRUNUX0VRKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3Jl
Y2VpdmVyLT5HZXRLaW5kKCkpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNy
dHByZWNlaXZlcmFkYXB0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9vcnRjL29ydGNydHByZWNlaXZlcmFkYXB0ZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDY4OTQxMjIxN2FjYzhiNWQwZmM4NGVhNjliMzQ0Y2E3M2IyZmFkMDYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJhZGFwdGVy
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIw
MTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0K
LSNpbmNsdWRlICJvcnRjL29ydGNydHByZWNlaXZlcmFkYXB0ZXIuaCIKLQotI2luY2x1ZGUgPHN0
cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUg
Im1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKLSNpbmNsdWRlICJvcnRjL3J0cHRyYW5zcG9y
dGFkYXB0ZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9oZWxwZXJzLmgiICAvLyBGb3IgIkNyZWF0ZVJhbmRvbVgiLgotCi1uYW1lc3BhY2Ugewot
Ci12b2lkIEZpbGxBdWRpb1JlY2VpdmVyUGFyYW1ldGVycyh3ZWJydGM6OlJ0cFBhcmFtZXRlcnMq
IHBhcmFtZXRlcnMpIHsKLSAgZm9yICh3ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYgY29kZWMg
OiBwYXJhbWV0ZXJzLT5jb2RlY3MpIHsKLSAgICBpZiAoIWNvZGVjLm51bV9jaGFubmVscykgewot
ICAgICAgY29kZWMubnVtX2NoYW5uZWxzID0gMTsKLSAgICB9Ci0gIH0KLX0KLQotdm9pZCBGaWxs
VmlkZW9SZWNlaXZlclBhcmFtZXRlcnMod2VicnRjOjpSdHBQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJz
KSB7Ci0gIGZvciAod2VicnRjOjpSdHBDb2RlY1BhcmFtZXRlcnMmIGNvZGVjIDogcGFyYW1ldGVy
cy0+Y29kZWNzKSB7Ci0gICAgaWYgKCFjb2RlYy5jbG9ja19yYXRlKSB7Ci0gICAgICBjb2RlYy5j
bG9ja19yYXRlID0gY3JpY2tldDo6a1ZpZGVvQ29kZWNDbG9ja3JhdGU7Ci0gICAgfQotICB9Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLQotQkVHSU5fT1dORURf
UFJPWFlfTUFQKE9ydGNSdHBSZWNlaXZlcikKLVBST1hZX1NJR05BTElOR19USFJFQURfREVTVFJV
Q1RPUigpCi1QUk9YWV9DT05TVE1FVEhPRDAocnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFt
VHJhY2tJbnRlcmZhY2U+LCBHZXRUcmFjaykKLVBST1hZX01FVEhPRDEoUlRDRXJyb3IsIFNldFRy
YW5zcG9ydCwgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKikKLVBST1hZX0NPTlNUTUVUSE9EMChSdHBU
cmFuc3BvcnRJbnRlcmZhY2UqLCBHZXRUcmFuc3BvcnQpCi1QUk9YWV9NRVRIT0QxKFJUQ0Vycm9y
LCBSZWNlaXZlLCBjb25zdCBSdHBQYXJhbWV0ZXJzJikKLVBST1hZX0NPTlNUTUVUSE9EMChSdHBQ
YXJhbWV0ZXJzLCBHZXRQYXJhbWV0ZXJzKQotUFJPWFlfQ09OU1RNRVRIT0QwKGNyaWNrZXQ6Ok1l
ZGlhVHlwZSwgR2V0S2luZCkKLUVORF9QUk9YWV9NQVAoKQotCi0vLyBzdGF0aWMKLXN0ZDo6dW5p
cXVlX3B0cjxPcnRjUnRwUmVjZWl2ZXJJbnRlcmZhY2U+IE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI6
OkNyZWF0ZVByb3h5KAotICAgIHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwUmVjZWl2ZXJBZGFwdGVy
PiB3cmFwcGVkX3JlY2VpdmVyKSB7Ci0gIFJUQ19EQ0hFQ0sod3JhcHBlZF9yZWNlaXZlcik7Ci0g
IHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmcgPQotICAgICAgd3JhcHBlZF9yZWNlaXZlci0+cnRwX3Ry
YW5zcG9ydF9jb250cm9sbGVyXy0+c2lnbmFsaW5nX3RocmVhZCgpOwotICBydGM6OlRocmVhZCog
d29ya2VyID0KLSAgICAgIHdyYXBwZWRfcmVjZWl2ZXItPnJ0cF90cmFuc3BvcnRfY29udHJvbGxl
cl8tPndvcmtlcl90aHJlYWQoKTsKLSAgcmV0dXJuIE9ydGNSdHBSZWNlaXZlclByb3h5OjpDcmVh
dGUoc2lnbmFsaW5nLCB3b3JrZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bW92ZSh3cmFwcGVkX3JlY2VpdmVyKSk7Ci19Ci0KLU9ydGNSdHBSZWNlaXZlckFk
YXB0ZXI6On5PcnRjUnRwUmVjZWl2ZXJBZGFwdGVyKCkgewotICBpbnRlcm5hbF9yZWNlaXZlcl8g
PSBudWxscHRyOwotICBTaWduYWxEZXN0cm95ZWQoKTsKLX0KLQotcnRjOjpzY29wZWRfcmVmcHRy
PE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+IE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI6OkdldFRy
YWNrKCkKLSAgICBjb25zdCB7Ci0gIHJldHVybiBpbnRlcm5hbF9yZWNlaXZlcl8gPyBpbnRlcm5h
bF9yZWNlaXZlcl8tPnRyYWNrKCkgOiBudWxscHRyOwotfQotCi1SVENFcnJvciBPcnRjUnRwUmVj
ZWl2ZXJBZGFwdGVyOjpTZXRUcmFuc3BvcnQoCi0gICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0
cmFuc3BvcnQpIHsKLSAgTE9HX0FORF9SRVRVUk5fRVJST1IoCi0gICAgICBSVENFcnJvclR5cGU6
OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICJDaGFuZ2luZyB0aGUgdHJhbnNwb3J0IG9m
IGFuIFJ0cFJlY2VpdmVyIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLiIpOwotfQotCi1SdHBUcmFuc3Bv
cnRJbnRlcmZhY2UqIE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI6OkdldFRyYW5zcG9ydCgpIGNvbnN0
IHsKLSAgcmV0dXJuIHRyYW5zcG9ydF87Ci19Ci0KLVJUQ0Vycm9yIE9ydGNSdHBSZWNlaXZlckFk
YXB0ZXI6OlJlY2VpdmUoY29uc3QgUnRwUGFyYW1ldGVycyYgcGFyYW1ldGVycykgewotICBSdHBQ
YXJhbWV0ZXJzIGZpbGxlZF9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKLSAgUlRDRXJyb3IgZXJy
OwotICBzd2l0Y2ggKGtpbmRfKSB7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElP
OgotICAgICAgRmlsbEF1ZGlvUmVjZWl2ZXJQYXJhbWV0ZXJzKCZmaWxsZWRfcGFyYW1ldGVycyk7
Ci0gICAgICBlcnIgPSBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5WYWxpZGF0ZUFuZEFwcGx5
QXVkaW9SZWNlaXZlclBhcmFtZXRlcnMoCi0gICAgICAgICAgZmlsbGVkX3BhcmFtZXRlcnMpOwot
ICAgICAgaWYgKCFlcnIub2soKSkgewotICAgICAgICByZXR1cm4gZXJyOwotICAgICAgfQotICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOgotICAgICAgRmls
bFZpZGVvUmVjZWl2ZXJQYXJhbWV0ZXJzKCZmaWxsZWRfcGFyYW1ldGVycyk7Ci0gICAgICBlcnIg
PSBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5WYWxpZGF0ZUFuZEFwcGx5VmlkZW9SZWNlaXZl
clBhcmFtZXRlcnMoCi0gICAgICAgICAgZmlsbGVkX3BhcmFtZXRlcnMpOwotICAgICAgaWYgKCFl
cnIub2soKSkgewotICAgICAgICByZXR1cm4gZXJyOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEE6Ci0gICAgICBSVENfTk9UUkVBQ0hFRCgp
OwotICAgICAgcmV0dXJuIHdlYnJ0Yzo6UlRDRXJyb3Iod2VicnRjOjpSVENFcnJvclR5cGU6OklO
VEVSTkFMX0VSUk9SKTsKLSAgfQotICBsYXN0X2FwcGxpZWRfcGFyYW1ldGVyc18gPSBmaWxsZWRf
cGFyYW1ldGVyczsKLQotICAvLyBOb3cgdGhhdCBwYXJhbWV0ZXJzIHdlcmUgYXBwbGllZCwgY2Fu
IGNyZWF0ZSAob3IgcmVjcmVhdGUpIHRoZSBpbnRlcm5hbAotICAvLyByZWNlaXZlci4KLSAgLy8K
LSAgLy8gVGhpcyBpcyBhbmFsb2dvdXMgdG8gYSBQZWVyQ29ubmVjdGlvbiBjcmVhdGluZyBhIHJl
Y2VpdmVyIGFmdGVyCi0gIC8vIFNldFJlbW90ZURlc2NyaXB0aW9uIGlzIHN1Y2Nlc3NmdWwuCi0g
IE1heWJlUmVjcmVhdGVJbnRlcm5hbFJlY2VpdmVyKCk7Ci0gIHJldHVybiBSVENFcnJvcjo6T0so
KTsKLX0KLQotUnRwUGFyYW1ldGVycyBPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyOjpHZXRQYXJhbWV0
ZXJzKCkgY29uc3QgewotICByZXR1cm4gbGFzdF9hcHBsaWVkX3BhcmFtZXRlcnNfOwotfQotCi1j
cmlja2V0OjpNZWRpYVR5cGUgT3J0Y1J0cFJlY2VpdmVyQWRhcHRlcjo6R2V0S2luZCgpIGNvbnN0
IHsKLSAgcmV0dXJuIGtpbmRfOwotfQotCi1PcnRjUnRwUmVjZWl2ZXJBZGFwdGVyOjpPcnRjUnRw
UmVjZWl2ZXJBZGFwdGVyKAotICAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kLAotICAgIFJ0cFRy
YW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0LAotICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJB
ZGFwdGVyKiBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIpCi0gICAgOiBraW5kXyhraW5kKSwKLSAg
ICAgIHRyYW5zcG9ydF8odHJhbnNwb3J0KSwKLSAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxl
cl8ocnRwX3RyYW5zcG9ydF9jb250cm9sbGVyKSB7fQotCi12b2lkIE9ydGNSdHBSZWNlaXZlckFk
YXB0ZXI6Ok1heWJlUmVjcmVhdGVJbnRlcm5hbFJlY2VpdmVyKCkgewotICBpZiAobGFzdF9hcHBs
aWVkX3BhcmFtZXRlcnNfLmVuY29kaW5ncy5lbXB0eSgpKSB7Ci0gICAgaW50ZXJuYWxfcmVjZWl2
ZXJfID0gbnVsbHB0cjsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy8gQW4gU1NSQyBvZiAwIGlzIHZh
bGlkOyB0aGlzIGlzIHVzZWQgdG8gaWRlbnRpZnkgInRoZSBkZWZhdWx0IFNTUkMiICh3aGljaAot
ICAvLyBpcyB0aGUgZmlyc3Qgb25lIHNlZW4gYnkgdGhlIHVuZGVybHlpbmcgbWVkaWEgZW5naW5l
KS4KLSAgdWludDMyX3Qgc3NyYyA9IDA7Ci0gIGlmIChsYXN0X2FwcGxpZWRfcGFyYW1ldGVyc18u
ZW5jb2RpbmdzWzBdLnNzcmMpIHsKLSAgICBzc3JjID0gKmxhc3RfYXBwbGllZF9wYXJhbWV0ZXJz
Xy5lbmNvZGluZ3NbMF0uc3NyYzsKLSAgfQotICBpZiAoaW50ZXJuYWxfcmVjZWl2ZXJfICYmIHNz
cmMgPT0gaW50ZXJuYWxfcmVjZWl2ZXJfLT5zc3JjKCkpIHsKLSAgICAvLyBTU1JDIG5vdCBjaGFu
Z2luZzsgbm90aGluZyB0byBkby4KLSAgICByZXR1cm47Ci0gIH0KLSAgaW50ZXJuYWxfcmVjZWl2
ZXJfID0gbnVsbHB0cjsKLSAgc3dpdGNoIChraW5kXykgewotICAgIGNhc2UgY3JpY2tldDo6TUVE
SUFfVFlQRV9BVURJTzogewotICAgICAgYXV0byogYXVkaW9fcmVjZWl2ZXIgPSBuZXcgQXVkaW9S
dHBSZWNlaXZlcigKLSAgICAgICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT53b3JrZXJf
dGhyZWFkKCksIHJ0Yzo6Q3JlYXRlUmFuZG9tVXVpZCgpLAotICAgICAgICAgIHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPih7fSkpOwotICAgICAgYXV0byogdm9pY2VfY2hhbm5lbCA9IHJ0cF90cmFu
c3BvcnRfY29udHJvbGxlcl8tPnZvaWNlX2NoYW5uZWwoKTsKLSAgICAgIFJUQ19EQ0hFQ0sodm9p
Y2VfY2hhbm5lbCk7Ci0gICAgICBhdWRpb19yZWNlaXZlci0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwo
dm9pY2VfY2hhbm5lbC0+bWVkaWFfY2hhbm5lbCgpKTsKLSAgICAgIGludGVybmFsX3JlY2VpdmVy
XyA9IGF1ZGlvX3JlY2VpdmVyOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tl
dDo6TUVESUFfVFlQRV9WSURFTzogewotICAgICAgYXV0byogdmlkZW9fcmVjZWl2ZXIgPSBuZXcg
VmlkZW9SdHBSZWNlaXZlcigKLSAgICAgICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT53
b3JrZXJfdGhyZWFkKCksIHJ0Yzo6Q3JlYXRlUmFuZG9tVXVpZCgpLAotICAgICAgICAgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPih7fSkpOwotICAgICAgYXV0byogdmlkZW9fY2hhbm5lbCA9IHJ0
cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPnZpZGVvX2NoYW5uZWwoKTsKLSAgICAgIFJUQ19EQ0hF
Q0sodmlkZW9fY2hhbm5lbCk7Ci0gICAgICB2aWRlb19yZWNlaXZlci0+U2V0VmlkZW9NZWRpYUNo
YW5uZWwodmlkZW9fY2hhbm5lbC0+bWVkaWFfY2hhbm5lbCgpKTsKLSAgICAgIGludGVybmFsX3Jl
Y2VpdmVyXyA9IHZpZGVvX3JlY2VpdmVyOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ug
Y3JpY2tldDo6TUVESUFfVFlQRV9EQVRBOgotICAgICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgfQot
ICBpbnRlcm5hbF9yZWNlaXZlcl8tPlNldHVwTWVkaWFDaGFubmVsKHNzcmMpOwotfQotCi19ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHByZWNlaXZlcmFkYXB0ZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHJlY2VpdmVyYWRh
cHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjQ3YjA0MzE0NWFkYWU0YjAy
Zjg3Mjc1MTMzYzdlYmVhNTlkM2NlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29y
dGMvb3J0Y3J0cHJlY2VpdmVyYWRhcHRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBA
QAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
LSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBPUlRDX09SVENSVFBSRUNFSVZFUkFEQVBU
RVJfSF8KLSNkZWZpbmUgT1JUQ19PUlRDUlRQUkVDRUlWRVJBREFQVEVSX0hfCi0KLSNpbmNsdWRl
IDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvb3J0Yy9vcnRjcnRwcmVjZWl2ZXJpbnRlcmZhY2Uu
aCIKLSNpbmNsdWRlICJhcGkvcnRjZXJyb3IuaCIKLSNpbmNsdWRlICJhcGkvcnRwcGFyYW1ldGVy
cy5oIgotI2luY2x1ZGUgIm9ydGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcmFkYXB0ZXIuaCIKLSNp
bmNsdWRlICJwYy9ydHByZWNlaXZlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9y
bWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3Qu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0K
LS8vIEltcGxlbWVudGF0aW9uIG9mIE9ydGNSdHBSZWNlaXZlckludGVyZmFjZSB0aGF0IHdvcmtz
IHdpdGgKLS8vIFJ0cFRyYW5zcG9ydEFkYXB0ZXIsIGFuZCB3cmFwcyBhIFZpZGVvUnRwUmVjZWl2
ZXIvQXVkaW9SdHBSZWNlaXZlciB0aGF0J3MKLS8vIG5vcm1hbGx5IHVzZWQgd2l0aCB0aGUgUGVl
ckNvbm5lY3Rpb24uCi0vLwotLy8gVE9ETyhkZWFkYmVlZik6IFdoZW4gQmFzZUNoYW5uZWwgaXMg
c3BsaXQgYXBhcnQgaW50byBzZXBhcmF0ZQotLy8gIlJ0cFJlY2VpdmVyIi8iUnRwVHJhbnNjZWl2
ZXIiLyJSdHBSZWNlaXZlciIvIlJ0cFJlY2VpdmVyIiBvYmplY3RzLCB0aGlzCi0vLyBhZGFwdGVy
IG9iamVjdCBjYW4gYmUgcmVtb3ZlZC4KLWNsYXNzIE9ydGNSdHBSZWNlaXZlckFkYXB0ZXIgOiBw
dWJsaWMgT3J0Y1J0cFJlY2VpdmVySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC8vIFdyYXBzIHx3
cmFwcGVkX3JlY2VpdmVyfCBpbiBhIHByb3h5IHRoYXQgd2lsbCBzYWZlbHkgY2FsbCBtZXRob2Rz
IG9uIHRoZQotICAvLyBjb3JyZWN0IHRocmVhZC4KLSAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxP
cnRjUnRwUmVjZWl2ZXJJbnRlcmZhY2U+IENyZWF0ZVByb3h5KAotICAgICAgc3RkOjp1bmlxdWVf
cHRyPE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI+IHdyYXBwZWRfcmVjZWl2ZXIpOwotCi0gIC8vIFNo
b3VsZCBvbmx5IGJlIGNhbGxlZCBieSBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlci4KLSAg
T3J0Y1J0cFJlY2VpdmVyQWRhcHRlcigKLSAgICAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBraW5kLAot
ICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAgICBSdHBUcmFuc3Bv
cnRDb250cm9sbGVyQWRhcHRlciogcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyKTsKLSAgfk9ydGNS
dHBSZWNlaXZlckFkYXB0ZXIoKSBvdmVycmlkZTsKLQotICAvLyBPcnRjUnRwUmVjZWl2ZXJJbnRl
cmZhY2UgaW1wbGVtZW50YXRpb24uCi0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbVRy
YWNrSW50ZXJmYWNlPiBHZXRUcmFjaygpIGNvbnN0IG92ZXJyaWRlOwotCi0gIFJUQ0Vycm9yIFNl
dFRyYW5zcG9ydChSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydCkgb3ZlcnJpZGU7Ci0g
IFJ0cFRyYW5zcG9ydEludGVyZmFjZSogR2V0VHJhbnNwb3J0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
LSAgUlRDRXJyb3IgUmVjZWl2ZShjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBvdmVy
cmlkZTsKLSAgUnRwUGFyYW1ldGVycyBHZXRQYXJhbWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
LSAgY3JpY2tldDo6TWVkaWFUeXBlIEdldEtpbmQoKSBjb25zdCBvdmVycmlkZTsKLQotICAvLyBV
c2VkIHNvIHRoYXQgdGhlIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyIGtub3dzIHdoZW4g
aXQgY2FuCi0gIC8vIGRlYWxsb2NhdGUgcmVzb3VyY2VzIGFsbG9jYXRlZCBmb3IgdGhpcyBvYmpl
Y3QuCi0gIHNpZ3Nsb3Q6OnNpZ25hbDA8PiBTaWduYWxEZXN0cm95ZWQ7Ci0KLSBwcml2YXRlOgot
ICB2b2lkIE1heWJlUmVjcmVhdGVJbnRlcm5hbFJlY2VpdmVyKCk7Ci0KLSAgY3JpY2tldDo6TWVk
aWFUeXBlIGtpbmRfOwotICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydF87Ci0gIFJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKiBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfOwot
ICAvLyBTY29wZWQgcmVmcHRyIGR1ZSB0byByZWYtY291bnRlZCBpbnRlcmZhY2UsIGJ1dCB3ZSBz
aG91bGQgYmUgdGhlIG9ubHkKLSAgLy8gcmVmZXJlbmNlIGhvbGRlci4KLSAgcnRjOjpzY29wZWRf
cmVmcHRyPFJ0cFJlY2VpdmVySW50ZXJuYWw+IGludGVybmFsX3JlY2VpdmVyXzsKLSAgUnRwUGFy
YW1ldGVycyBsYXN0X2FwcGxpZWRfcGFyYW1ldGVyc187Ci0KLSAgUlRDX0RJU0FMTE9XX0lNUExJ
Q0lUX0NPTlNUUlVDVE9SUyhPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyKTsKLX07Ci0KLX0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBPUlRDX09SVENSVFBSRUNFSVZFUkFEQVBURVJf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L29ydGMvb3J0Y3J0cHNlbmRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHNlbmRlcl91bml0dGVzdC5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhiZDhmOTM5MzQ1MzhiNTFhYzhmMDYyZmUwOTA3ZTQw
MDMxMDUyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHBzZW5k
ZXJfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw2NzAgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLQotI2luY2x1ZGUgImFwaS9hdWRpb19jb2Rl
Y3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAibWVkaWEv
YmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKLSNpbmNsdWRlICJvcnRjL29ydGNmYWN0b3J5LmgiCi0j
aW5jbHVkZSAib3J0Yy90ZXN0cnRwcGFyYW1ldGVycy5oIgotI2luY2x1ZGUgInAycC9iYXNlL2Zh
a2VwYWNrZXR0cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJwYy90ZXN0L2Zha2V2aWRlb3RyYWNrc291
cmNlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7
Ci0KLS8vIFRoaXMgdGVzdCB1c2VzIGFuIGluZGl2aWR1YWwgUnRwU2VuZGVyIHVzaW5nIG9ubHkg
dGhlIHB1YmxpYyBpbnRlcmZhY2UsIGFuZAotLy8gdmVyaWZpZXMgdGhhdCBpdHMgYmVoYXZlcyBh
cyBkZXNpZ25lZCBhdCBhbiBBUEkgbGV2ZWwuIEFsc28gdGVzdHMgdGhhdAotLy8gcGFyYW1ldGVy
cyBhcmUgYXBwbGllZCB0byB0aGUgYXVkaW8vdmlkZW8gZW5naW5lcyBhcyBleHBlY3RlZC4gTmV0
d29yayBhbmQKLS8vIG1lZGlhIGludGVyZmFjZXMgYXJlIGZha2VkIHRvIGlzb2xhdGUgd2hhdCdz
IGJlaW5nIHRlc3RlZC4KLS8vCi0vLyBUaGlzIHRlc3Qgc2hvdWxkbid0IHJlc3VsdCBhbnkgYW55
IGFjdHVhbCBtZWRpYSBiZWluZyBzZW50LiBUaGF0IHNvcnQgb2YKLS8vIHRlc3Qgc2hvdWxkIGdv
IGluIG9ydGNmYWN0b3J5X2ludGVncmF0aW9udGVzdC5jYy4KLWNsYXNzIE9ydGNSdHBTZW5kZXJU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgT3J0Y1J0cFNlbmRlclRl
c3QoKSA6IGZha2VfcGFja2V0X3RyYW5zcG9ydF8oImZha2UiKSB7Ci0gICAgLy8gTmVlZCB0byBz
ZXQgdGhlIGZha2UgcGFja2V0IHRyYW5zcG9ydCB0byB3cml0YWJsZSwgaW4gb3JkZXIgdG8gdGVz
dCB0aGF0Ci0gICAgLy8gdGhlICJzZW5kIiBmbGFnIGlzIGFwcGxpZWQgdG8gdGhlIG1lZGlhIGVu
Z2luZSBiYXNlZCBvbiB0aGUgZW5jb2RpbmcKLSAgICAvLyB8YWN0aXZlfCBmbGFnLgotICAgIGZh
a2VfcGFja2V0X3RyYW5zcG9ydF8uU2V0V3JpdGFibGUodHJ1ZSk7Ci0gICAgZmFrZV9tZWRpYV9l
bmdpbmVfID0gbmV3IGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZSgpOwotICAgIC8vIE5vdGU6IFRo
aXMgZG9lc24ndCBuZWVkIHRvIHVzZSBmYWtlIG5ldHdvcmsgY2xhc3Nlcywgc2luY2Ugd2UgYWxy
ZWFkeQotICAgIC8vIHVzZSBGYWtlUGFja2V0VHJhbnNwb3J0LgotICAgIGF1dG8gb3J0Y19mYWN0
b3J5X3Jlc3VsdCA9IE9ydGNGYWN0b3J5OjpDcmVhdGUoCi0gICAgICAgIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxj
cmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4oZmFrZV9tZWRpYV9lbmdpbmVfKSwKLSAgICAg
ICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwgQ3JlYXRlQnVpbHRpbkF1ZGlv
RGVjb2RlckZhY3RvcnkoKSk7Ci0gICAgb3J0Y19mYWN0b3J5XyA9IG9ydGNfZmFjdG9yeV9yZXN1
bHQuTW92ZVZhbHVlKCk7Ci0gICAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwot
ICAgIHBhcmFtZXRlcnMucnRjcC5tdXggPSB0cnVlOwotICAgIGF1dG8gcnRwX3RyYW5zcG9ydF9y
ZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICAgIHBhcmFt
ZXRlcnMsICZmYWtlX3BhY2tldF90cmFuc3BvcnRfLCBudWxscHRyLCBudWxscHRyKTsKLSAgICBy
dHBfdHJhbnNwb3J0XyA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICB9Ci0K
LSBwcm90ZWN0ZWQ6Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1RyYWNrSW50ZXJmYWNlPiBD
cmVhdGVBdWRpb1RyYWNrKAotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlkKSB7Ci0gICAgcmV0
dXJuIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZUF1ZGlvVHJhY2soaWQsIG51bGxwdHIpOwotICB9Ci0K
LSAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvVHJhY2tJbnRlcmZhY2U+IENyZWF0ZVZpZGVvVHJh
Y2soCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaWQpIHsKLSAgICByZXR1cm4gcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4oCi0gICAgICAgIG9ydGNfZmFj
dG9yeV8tPkNyZWF0ZVZpZGVvVHJhY2soaWQsIEZha2VWaWRlb1RyYWNrU291cmNlOjpDcmVhdGUo
KSkpOwotICB9Ci0KLSAgLy8gT3duZWQgYnkgfG9ydGNfZmFjdG9yeV98LgotICBjcmlja2V0OjpG
YWtlTWVkaWFFbmdpbmUqIGZha2VfbWVkaWFfZW5naW5lXzsKLSAgcnRjOjpGYWtlUGFja2V0VHJh
bnNwb3J0IGZha2VfcGFja2V0X3RyYW5zcG9ydF87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFj
dG9yeUludGVyZmFjZT4gb3J0Y19mYWN0b3J5XzsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5z
cG9ydEludGVyZmFjZT4gcnRwX3RyYW5zcG9ydF87Ci19OwotCi1URVNUX0YoT3J0Y1J0cFNlbmRl
clRlc3QsIEdldEFuZFNldFRyYWNrKSB7Ci0gIC8vIFRlc3QgR2V0VHJhY2sgd2l0aCBhIHNlbmRl
ciBjb25zdHJ1Y3RlZCB3aXRoIGEgdHJhY2suCi0gIGF1dG8gYXVkaW9fdHJhY2sgPSBDcmVhdGVB
dWRpb1RyYWNrKCJhdWRpbyIpOwotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPQotICAgICAg
b3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGF1ZGlvX3RyYWNrLCBydHBfdHJhbnNwb3J0
Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3Zl
VmFsdWUoKTsKLSAgRVhQRUNUX0VRKGF1ZGlvX3RyYWNrLCBhdWRpb19zZW5kZXItPkdldFRyYWNr
KCkpOwotCi0gIC8vIFRlc3QgR2V0VHJhY2sgYWZ0ZXIgU2V0VHJhY2suCi0gIGF1dG8gdmlkZW9f
c2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNy
aWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2
aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBhdXRvIHZp
ZGVvX3RyYWNrID0gQ3JlYXRlVmlkZW9UcmFjaygidmlkZW8xIik7Ci0gIEVYUEVDVF9UUlVFKHZp
ZGVvX3NlbmRlci0+U2V0VHJhY2sodmlkZW9fdHJhY2spLm9rKCkpOwotICBFWFBFQ1RfRVEodmlk
ZW9fdHJhY2ssIHZpZGVvX3NlbmRlci0+R2V0VHJhY2soKSk7Ci0gIHZpZGVvX3RyYWNrID0gQ3Jl
YXRlVmlkZW9UcmFjaygidmlkZW8yIik7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2V0
VHJhY2sodmlkZW9fdHJhY2spLm9rKCkpOwotICBFWFBFQ1RfRVEodmlkZW9fdHJhY2ssIHZpZGVv
X3NlbmRlci0+R2V0VHJhY2soKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCB0cmFjayBjYW4gYmUgc2V0
IHdoZW4gcHJldmlvdXNseSB1bnNldCwgZXZlbiBhZnRlciBTZW5kIGhhcyBiZWVuCi0vLyBjYWxs
ZWQuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIFNldFRyYWNrV2hpbGVTZW5kaW5nKSB7Ci0g
IGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRl
cigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgp
KTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgp
OwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQoTWFrZU1pbmltYWxPcHVzUGFyYW1l
dGVycygpKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyLT5TZXRUcmFjayhDcmVh
dGVBdWRpb1RyYWNrKCJhdWRpbyIpKS5vaygpKTsKLQotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1
bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJ
QV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVy
ID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUodmlkZW9f
c2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpKS5vaygpKTsKLSAgRVhQRUNU
X1RSVUUodmlkZW9fc2VuZGVyLT5TZXRUcmFjayhDcmVhdGVWaWRlb1RyYWNrKCJ2aWRlbyIpKS5v
aygpKTsKLX0KLQotLy8gVGVzdCB0aGF0IHRyYWNrIGNhbiBiZSBjaGFuZ2VkIG1pZC1zZW5kaW5n
LiBEaWZmZXJzIGZyb20gdGhlIGFib3ZlIHRlc3QgaW4KLS8vIHRoYXQgdGhlIHRyYWNrIGlzIHNl
dCBhbmQgYmVpbmcgY2hhbmdlZCwgcmF0aGVyIHRoYW4gdW5zZXQgYW5kIGJlaW5nIHNldCBmb3IK
LS8vIHRoZSBmaXJzdCB0aW1lLgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBDaGFuZ2VUcmFj
a1doaWxlU2VuZGluZykgewotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rv
cnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBDcmVhdGVBdWRpb1RyYWNrKCJhdWRpbzEiKSwg
cnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRl
cl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChN
YWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19z
ZW5kZXItPlNldFRyYWNrKENyZWF0ZUF1ZGlvVHJhY2soImF1ZGlvMiIpKS5vaygpKTsKLQotICBh
dXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIo
Ci0gICAgICBDcmVhdGVWaWRlb1RyYWNrKCJ2aWRlbzEiKSwgcnRwX3RyYW5zcG9ydF8uZ2V0KCkp
OwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7
Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZChNYWtlTWluaW1hbFZwOFBhcmFtZXRl
cnMoKSkub2soKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2V0VHJhY2soQ3JlYXRl
VmlkZW9UcmFjaygidmlkZW8yIikpLm9rKCkpOwotfQotCi0vLyBUZXN0IHRoYXQgdHJhY2sgY2Fu
IGJlIHNldCB0byBudWxsIHdoaWxlIHNlbmRpbmcuCi1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3Qs
IFVuc2V0VHJhY2tXaGlsZVNlbmRpbmcpIHsKLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0g
b3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgQ3JlYXRlQXVkaW9UcmFjaygi
YXVkaW8iKSwgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1
ZGlvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRl
ci0+U2VuZChNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCkpLm9rKCkpOwotICBFWFBFQ1RfVFJV
RShhdWRpb19zZW5kZXItPlNldFRyYWNrKG51bGxwdHIpLm9rKCkpOwotCi0gIGF1dG8gdmlkZW9f
c2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIENy
ZWF0ZVZpZGVvVHJhY2soInZpZGVvIiksIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2
aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1Rf
VFJVRSh2aWRlb19zZW5kZXItPlNlbmQoTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCkpLm9rKCkp
OwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNldFRyYWNrKG51bGxwdHIpLm9rKCkpOwot
fQotCi0vLyBTaG91bGRuJ3QgYmUgYWJsZSB0byBzZXQgYW4gYXVkaW8gdHJhY2sgb24gYSB2aWRl
byBzZW5kZXIgb3IgdmljZSB2ZXJzYS4KLVRFU1RfRihPcnRjUnRwU2VuZGVyVGVzdCwgU2V0VHJh
Y2tPZldyb25nS2luZEZhaWxzKSB7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNf
ZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVE
SU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19z
ZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZB
TElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgIGF1ZGlvX3NlbmRlci0+U2V0VHJhY2soQ3JlYXRl
VmlkZW9UcmFjaygidmlkZW8iKSkudHlwZSgpKTsKLQotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1
bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJ
QV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVy
ID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9y
VHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICB2aWRlb19zZW5kZXItPlNldFRy
YWNrKENyZWF0ZUF1ZGlvVHJhY2soImF1ZGlvIikpLnR5cGUoKSk7Ci19Ci0KLS8vIEN1cnJlbnRs
eSBTZXRUcmFuc3BvcnQgaXNuJ3Qgc3VwcG9ydGVkLiBXaGVuIGl0IGlzLCByZXBsYWNlIHRoaXMg
dGVzdCB3aXRoIGEKLS8vIHRlc3QvdGVzdHMgZm9yIGl0LgotVEVTVF9GKE9ydGNSdHBTZW5kZXJU
ZXN0LCBTZXRUcmFuc3BvcnRGYWlscykgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFr
ZV9wYWNrZXRfdHJhbnNwb3J0KCJhbm90aGVyX3RyYW5zcG9ydCIpOwotICBSdHBUcmFuc3BvcnRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRlcnMucnRjcC5tdXggPSB0cnVlOwotICBh
dXRvIHJ0cF90cmFuc3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNw
b3J0KAotICAgICAgcGFyYW1ldGVycywgJmZha2VfcGFja2V0X3RyYW5zcG9ydCwgbnVsbHB0ciwg
bnVsbHB0cik7Ci0gIGF1dG8gcnRwX3RyYW5zcG9ydCA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotCi0gIGF1dG8gc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFNlbmRlcihjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX3RyYW5zcG9ydF8uZ2V0KCkp
OwotICBhdXRvIHNlbmRlciA9IHNlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9F
UShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgIHNlbmRl
ci0+U2V0VHJhbnNwb3J0KHJ0cF90cmFuc3BvcnQuZ2V0KCkpLnR5cGUoKSk7Ci19Ci0KLVRFU1Rf
RihPcnRjUnRwU2VuZGVyVGVzdCwgR2V0VHJhbnNwb3J0KSB7Ci0gIGF1dG8gcmVzdWx0ID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3Bv
cnRfLmdldCgpKTsKLSAgRVhQRUNUX0VRKHJ0cF90cmFuc3BvcnRfLmdldCgpLCByZXN1bHQudmFs
dWUoKS0+R2V0VHJhbnNwb3J0KCkpOwotfQotCi0vLyBUZXN0IHRoYXQgIlNlbmQiIGNhdXNlcyB0
aGUgZXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVkIHRvIHRoZSBtZWRpYQotLy8gZW5n
aW5lIGxldmVsLCBmb3IgYW4gYXVkaW8gc2VuZGVyLgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0
LCBTZW5kQXBwbGllc0F1ZGlvUGFyYW1ldGVyc1RvTWVkaWFFbmdpbmUpIHsKLSAgYXV0byBhdWRp
b19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAg
Y3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRv
IGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8g
Rmlyc3QsIGNyZWF0ZSBwYXJhbWV0ZXJzIHdpdGggYWxsIHRoZSBiZWxscyBhbmQgd2hpc3RsZXMu
Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgb3B1
c19jb2RlYzsKLSAgb3B1c19jb2RlYy5uYW1lID0gIm9wdXMiOwotICBvcHVzX2NvZGVjLmtpbmQg
PSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOwotICBvcHVzX2NvZGVjLnBheWxvYWRfdHlwZSA9
IDEyMDsKLSAgb3B1c19jb2RlYy5jbG9ja19yYXRlLmVtcGxhY2UoNDgwMDApOwotICBvcHVzX2Nv
ZGVjLm51bV9jaGFubmVscy5lbXBsYWNlKDIpOwotICBvcHVzX2NvZGVjLnBhcmFtZXRlcnNbIm1p
bnB0aW1lIl0gPSAiMTAiOwotICBvcHVzX2NvZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNr
KFJ0Y3BGZWVkYmFja1R5cGU6OlRSQU5TUE9SVF9DQyk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1
c2hfYmFjayhzdGQ6Om1vdmUob3B1c19jb2RlYykpOwotCi0gIC8vIEFkZCB0d28gY29kZWNzLCBl
eHBlY3RpbmcgdGhlIGZpcnN0IHRvIGJlIHVzZWQuCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBPbmNl
ICJjb2RlY19wYXlsb2FkX3R5cGUiIGlzIHN1cHBvcnRlZCwgdXNlIGl0IHRvIHNlbGVjdCBhCi0g
IC8vIGNvZGVjIHRoYXQncyBub3QgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4KLSAgUnRwQ29kZWNQ
YXJhbWV0ZXJzIGlzYWNfY29kZWM7Ci0gIGlzYWNfY29kZWMubmFtZSA9ICJJU0FDIjsKLSAgaXNh
Y19jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzsKLSAgaXNhY19jb2RlYy5w
YXlsb2FkX3R5cGUgPSAxMTA7Ci0gIGlzYWNfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDE2MDAw
KTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShpc2FjX2NvZGVjKSk7
Ci0KLSAgUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIGVuY29kaW5nOwotICBlbmNvZGluZy5zc3JjLmVt
cGxhY2UoMHhkZWFkYmVlZik7Ci0gIGVuY29kaW5nLm1heF9iaXRyYXRlX2Jwcy5lbXBsYWNlKDIw
MDAwKTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3MucHVzaF9iYWNrKHN0ZDo6bW92ZShlbmNvZGlu
ZykpOwotCi0gIHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKAotICAg
ICAgInVybjppZXRmOnBhcmFtczpydHAtaGRyZXh0OnNzcmMtYXVkaW8tbGV2ZWwiLCAzKTsKLQot
ICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQocGFyYW1ldGVycykub2soKSk7Ci0KLSAg
Ly8gTm93IHZlcmlmeSB0aGF0IHRoZSBwYXJhbWV0ZXJzIHdlcmUgYXBwbGllZCB0byB0aGUgZmFr
ZSBtZWRpYSBlbmdpbmUgbGF5ZXIKLSAgLy8gdGhhdCBleGlzdHMgYmVsb3cgQmFzZUNoYW5uZWwu
Ci0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVsID0K
LSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NFUlRf
TkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92b2lj
ZV9jaGFubmVsLT5zZW5kaW5nKCkpOwotCi0gIC8vIFZlcmlmeSBjb2RlYyBwYXJhbWV0ZXJzLgot
ICBBU1NFUlRfR1QoZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX2NvZGVjcygpLnNpemUoKSwgMHUp
OwotICBjb25zdCBjcmlja2V0OjpBdWRpb0NvZGVjJiB0b3BfY29kZWMgPSBmYWtlX3ZvaWNlX2No
YW5uZWwtPnNlbmRfY29kZWNzKClbMF07Ci0gIEVYUEVDVF9FUSgib3B1cyIsIHRvcF9jb2RlYy5u
YW1lKTsKLSAgRVhQRUNUX0VRKDEyMCwgdG9wX2NvZGVjLmlkKTsKLSAgRVhQRUNUX0VRKDQ4MDAw
LCB0b3BfY29kZWMuY2xvY2tyYXRlKTsKLSAgRVhQRUNUX0VRKDJ1LCB0b3BfY29kZWMuY2hhbm5l
bHMpOwotICBBU1NFUlRfTkUodG9wX2NvZGVjLnBhcmFtcy5lbmQoKSwgdG9wX2NvZGVjLnBhcmFt
cy5maW5kKCJtaW5wdGltZSIpKTsKLSAgRVhQRUNUX0VRKCIxMCIsIHRvcF9jb2RlYy5wYXJhbXMu
YXQoIm1pbnB0aW1lIikpOwotCi0gIC8vIFZlcmlmeSBlbmNvZGluZyBwYXJhbWV0ZXJzLgotICBF
WFBFQ1RfRVEoMjAwMDAsIGZha2Vfdm9pY2VfY2hhbm5lbC0+bWF4X2JwcygpKTsKLSAgQVNTRVJU
X0VRKDF1LCBmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpLnNpemUoKSk7Ci0gIGNv
bnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtcyYgc2VuZF9zdHJlYW0gPQotICAgICAgZmFrZV92b2lj
ZV9jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVswXTsKLSAgRVhQRUNUX0VRKDF1LCBzZW5kX3N0cmVh
bS5zc3Jjcy5zaXplKCkpOwotICBFWFBFQ1RfRVEoMHhkZWFkYmVlZiwgc2VuZF9zdHJlYW0uZmly
c3Rfc3NyYygpKTsKLQotICAvLyBWZXJpZnkgaGVhZGVyIGV4dGVuc2lvbnMuCi0gIEFTU0VSVF9F
USgxdSwgZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX2V4dGVuc2lvbnMoKS5zaXplKCkpOwotICBj
b25zdCBSdHBFeHRlbnNpb24mIGV4dGVuc2lvbiA9IGZha2Vfdm9pY2VfY2hhbm5lbC0+c2VuZF9l
eHRlbnNpb25zKClbMF07Ci0gIEVYUEVDVF9FUSgidXJuOmlldGY6cGFyYW1zOnJ0cC1oZHJleHQ6
c3NyYy1hdWRpby1sZXZlbCIsIGV4dGVuc2lvbi51cmkpOwotICBFWFBFQ1RfRVEoMywgZXh0ZW5z
aW9uLmlkKTsKLX0KLQotLy8gVGVzdCB0aGF0ICJTZW5kIiBjYXVzZXMgdGhlIGV4cGVjdGVkIHBh
cmFtZXRlcnMgdG8gYmUgYXBwbGllZCB0byB0aGUgbWVkaWEKLS8vIGVuZ2luZSBsZXZlbCwgZm9y
IGEgdmlkZW8gc2VuZGVyLgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBTZW5kQXBwbGllc1Zp
ZGVvUGFyYW1ldGVyc1RvTWVkaWFFbmdpbmUpIHsKLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0
ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFf
VFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9
IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gRmlyc3QsIGNyZWF0ZSBw
YXJhbWV0ZXJzIHdpdGggYWxsIHRoZSBiZWxscyBhbmQgd2hpc3RsZXMuCi0gIFJ0cFBhcmFtZXRl
cnMgcGFyYW1ldGVyczsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgdnA4X2NvZGVjOwotICB2cDhf
Y29kZWMubmFtZSA9ICJWUDgiOwotICB2cDhfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfVklERU87Ci0gIHZwOF9jb2RlYy5wYXlsb2FkX3R5cGUgPSA5OTsKLSAgLy8gVHJ5IGEgY291
cGxlIHR5cGVzIG9mIGZlZWRiYWNrIHBhcmFtcy4gIkdlbmVyaWMgTkFDSyIgaXMgYSBiaXQgb2Yg
YQotICAvLyBzcGVjaWFsIGNhc2UsIHNvIHRlc3QgaXQgaGVyZS4KLSAgdnA4X2NvZGVjLnJ0Y3Bf
ZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6OkNDTSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BGZWVkYmFja01lc3NhZ2VUeXBlOjpGSVIp
OwotICB2cDhfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlw
ZTo6TkFDSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BGZWVk
YmFja01lc3NhZ2VUeXBlOjpHRU5FUklDX05BQ0spOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNo
X2JhY2soc3RkOjptb3ZlKHZwOF9jb2RlYykpOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyB2cDhf
cnR4X2NvZGVjOwotICB2cDhfcnR4X2NvZGVjLm5hbWUgPSAicnR4IjsKLSAgdnA4X3J0eF9jb2Rl
Yy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgdnA4X3J0eF9jb2RlYy5wYXls
b2FkX3R5cGUgPSAxMDA7Ci0gIHZwOF9ydHhfY29kZWMucGFyYW1ldGVyc1siYXB0Il0gPSAiOTki
OwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHZwOF9ydHhfY29kZWMp
KTsKLQotICAvLyBBZGQgdHdvIGNvZGVjcywgZXhwZWN0aW5nIHRoZSBmaXJzdCB0byBiZSB1c2Vk
LgotICAvLyBUT0RPKGRlYWRiZWVmKTogT25jZSAiY29kZWNfcGF5bG9hZF90eXBlIiBpcyBzdXBw
b3J0ZWQsIHVzZSBpdCB0byBzZWxlY3QgYQotICAvLyBjb2RlYyB0aGF0J3Mgbm90IGF0IHRoZSB0
b3Agb2YgdGhlIGxpc3QuCi0gIFJ0cENvZGVjUGFyYW1ldGVycyB2cDlfY29kZWM7Ci0gIHZwOV9j
b2RlYy5uYW1lID0gIlZQOSI7Ci0gIHZwOV9jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQ
RV9WSURFTzsKLSAgdnA5X2NvZGVjLnBheWxvYWRfdHlwZSA9IDEwMjsKLSAgcGFyYW1ldGVycy5j
b2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZSh2cDlfY29kZWMpKTsKLQotICBSdHBDb2RlY1BhcmFt
ZXRlcnMgdnA5X3J0eF9jb2RlYzsKLSAgdnA5X3J0eF9jb2RlYy5uYW1lID0gInJ0eCI7Ci0gIHZw
OV9ydHhfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87Ci0gIHZwOV9ydHhf
Y29kZWMucGF5bG9hZF90eXBlID0gMTAzOwotICB2cDlfcnR4X2NvZGVjLnBhcmFtZXRlcnNbImFw
dCJdID0gIjEwMiI7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUodnA5
X3J0eF9jb2RlYykpOwotCi0gIFJ0cEVuY29kaW5nUGFyYW1ldGVycyBlbmNvZGluZzsKLSAgZW5j
b2Rpbmcuc3NyYy5lbXBsYWNlKDB4ZGVhZGJlZWYpOwotICBlbmNvZGluZy5ydHguZW1wbGFjZSgw
eGJhYWRmZWVkKTsKLSAgZW5jb2RpbmcubWF4X2JpdHJhdGVfYnBzLmVtcGxhY2UoOTk5OTkpOwot
ICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5wdXNoX2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0K
LSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soInVybjozZ3BwOnZp
ZGVvLW9yaWVudGF0aW9uIiwgNCk7Ci0gIHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1w
bGFjZV9iYWNrKAotICAgICAgImh0dHA6Ly93d3cud2VicnRjLm9yZy9leHBlcmltZW50cy9ydHAt
aGRyZXh0L3BsYXlvdXQtZGVsYXkiLCA2KTsKLQotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXIt
PlNlbmQocGFyYW1ldGVycykub2soKSk7Ci0KLSAgLy8gTm93IHZlcmlmeSB0aGF0IHRoZSBwYXJh
bWV0ZXJzIHdlcmUgYXBwbGllZCB0byB0aGUgZmFrZSBtZWRpYSBlbmdpbmUgbGF5ZXIKLSAgLy8g
dGhhdCBleGlzdHMgYmVsb3cgQmFzZUNoYW5uZWwuCi0gIGNyaWNrZXQ6OkZha2VWaWRlb01lZGlh
Q2hhbm5lbCogZmFrZV92aWRlb19jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+
R2V0VmlkZW9DaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92aWRlb19jaGFu
bmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92aWRlb19jaGFubmVsLT5zZW5kaW5nKCkpOwotCi0g
IC8vIFZlcmlmeSBjb2RlYyBwYXJhbWV0ZXJzLgotICBBU1NFUlRfR0UoZmFrZV92aWRlb19jaGFu
bmVsLT5zZW5kX2NvZGVjcygpLnNpemUoKSwgMnUpOwotICBjb25zdCBjcmlja2V0OjpWaWRlb0Nv
ZGVjJiB0b3BfY29kZWMgPSBmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfY29kZWNzKClbMF07Ci0g
IEVYUEVDVF9FUSgiVlA4IiwgdG9wX2NvZGVjLm5hbWUpOwotICBFWFBFQ1RfRVEoOTksIHRvcF9j
b2RlYy5pZCk7Ci0gIEVYUEVDVF9UUlVFKHRvcF9jb2RlYy5mZWVkYmFja19wYXJhbXMuSGFzKHsi
Y2NtIiwgImZpciJ9KSk7Ci0gIEVYUEVDVF9UUlVFKHRvcF9jb2RlYy5mZWVkYmFja19wYXJhbXMu
SGFzKGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0oIm5hY2siKSkpOwotCi0gIGNvbnN0IGNyaWNrZXQ6
OlZpZGVvQ29kZWMmIHJ0eF9jb2RlYyA9IGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9jb2RlY3Mo
KVsxXTsKLSAgRVhQRUNUX0VRKCJydHgiLCBydHhfY29kZWMubmFtZSk7Ci0gIEVYUEVDVF9FUSgx
MDAsIHJ0eF9jb2RlYy5pZCk7Ci0gIEFTU0VSVF9ORShydHhfY29kZWMucGFyYW1zLmVuZCgpLCBy
dHhfY29kZWMucGFyYW1zLmZpbmQoImFwdCIpKTsKLSAgRVhQRUNUX0VRKCI5OSIsIHJ0eF9jb2Rl
Yy5wYXJhbXMuYXQoImFwdCIpKTsKLQotICAvLyBWZXJpZnkgZW5jb2RpbmcgcGFyYW1ldGVycy4K
LSAgRVhQRUNUX0VRKDk5OTk5LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPm1heF9icHMoKSk7Ci0gIEFT
U0VSVF9FUSgxdSwgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3N0cmVhbXMoKS5zaXplKCkpOwot
ICBjb25zdCBjcmlja2V0OjpTdHJlYW1QYXJhbXMmIHNlbmRfc3RyZWFtID0KLSAgICAgIGZha2Vf
dmlkZW9fY2hhbm5lbC0+c2VuZF9zdHJlYW1zKClbMF07Ci0gIEVYUEVDVF9FUSgydSwgc2VuZF9z
dHJlYW0uc3NyY3Muc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDB4ZGVhZGJlZWYsIHNlbmRfc3RyZWFt
LmZpcnN0X3NzcmMoKSk7Ci0gIHVpbnQzMl90IHJ0eF9zc3JjID0gMHU7Ci0gIEVYUEVDVF9UUlVF
KHNlbmRfc3RyZWFtLkdldEZpZFNzcmMoc2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpLCAmcnR4X3Nz
cmMpKTsKLSAgRVhQRUNUX0VRKDB4YmFhZGZlZWQsIHJ0eF9zc3JjKTsKLQotICAvLyBWZXJpZnkg
aGVhZGVyIGV4dGVuc2lvbnMuCi0gIEFTU0VSVF9FUSgydSwgZmFrZV92aWRlb19jaGFubmVsLT5z
ZW5kX2V4dGVuc2lvbnMoKS5zaXplKCkpOwotICBjb25zdCBSdHBFeHRlbnNpb24mIGV4dGVuc2lv
bjEgPSBmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfZXh0ZW5zaW9ucygpWzBdOwotICBFWFBFQ1Rf
RVEoInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiwgZXh0ZW5zaW9uMS51cmkpOwotICBFWFBF
Q1RfRVEoNCwgZXh0ZW5zaW9uMS5pZCk7Ci0gIGNvbnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9u
MiA9IGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9leHRlbnNpb25zKClbMV07Ci0gIEVYUEVDVF9F
USgiaHR0cDovL3d3dy53ZWJydGMub3JnL2V4cGVyaW1lbnRzL3J0cC1oZHJleHQvcGxheW91dC1k
ZWxheSIsCi0gICAgICAgICAgICBleHRlbnNpb24yLnVyaSk7Ci0gIEVYUEVDVF9FUSg2LCBleHRl
bnNpb24yLmlkKTsKLX0KLQotLy8gRW5zdXJlIHRoYXQgd2hlbiBwcmltYXJ5IG9yIFJUWCBTU1JD
cyBhcmUgbGVmdCB1bnNldCwgdGhleSdyZSBnZW5lcmF0ZWQKLS8vIGF1dG9tYXRpY2FsbHkuCi1U
RVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIFNlbmRHZW5lcmF0ZXNTc3Jjc1doZW5FbXB0eSkgewot
ICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5k
ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQo
KSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUo
KTsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVy
c1dpdGhOb1NzcmMoKTsKLSAgLy8gRGVmYXVsdCBSVFggcGFyYW1ldGVycywgd2l0aCBubyBTU1JD
LgotICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5ydHguZW1wbGFjZSgpOwotICBFWFBFQ1RfVFJV
RShhdWRpb19zZW5kZXItPlNlbmQocGFyYW1ldGVycykub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFr
ZVZvaWNlTWVkaWFDaGFubmVsKiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRp
YV9lbmdpbmVfLT5HZXRWb2ljZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtl
X3ZvaWNlX2NoYW5uZWwpOwotICBBU1NFUlRfRVEoMXUsIGZha2Vfdm9pY2VfY2hhbm5lbC0+c2Vu
ZF9zdHJlYW1zKCkuc2l6ZSgpKTsKLSAgY29uc3QgY3JpY2tldDo6U3RyZWFtUGFyYW1zJiBhdWRp
b19zZW5kX3N0cmVhbSA9Ci0gICAgICBmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygp
WzBdOwotICBFWFBFQ1RfTkUoMHUsIGF1ZGlvX3NlbmRfc3RyZWFtLmZpcnN0X3NzcmMoKSk7Ci0g
IHVpbnQzMl90IHJ0eF9zc3JjID0gMHU7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgYXVkaW9fc2Vu
ZF9zdHJlYW0uR2V0RmlkU3NyYyhhdWRpb19zZW5kX3N0cmVhbS5maXJzdF9zc3JjKCksICZydHhf
c3NyYykpOwotICBFWFBFQ1RfTkUoMHUsIHJ0eF9zc3JjKTsKLSAgRVhQRUNUX05FKGF1ZGlvX3Nl
bmRfc3RyZWFtLmZpcnN0X3NzcmMoKSwgcnR4X3NzcmMpOwotCi0gIGF1dG8gdmlkZW9fc2VuZGVy
X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6
Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byB2aWRlb19z
ZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBwYXJhbWV0ZXJzID0g
TWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzV2l0aE5vU3NyYygpOwotICAvLyBEZWZhdWx0IFJUWCBw
YXJhbWV0ZXJzLCB3aXRoIG5vIFNTUkMuCi0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnJ0eC5l
bXBsYWNlKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZChwYXJhbWV0ZXJzKS5v
aygpKTsKLQotICBjcmlja2V0OjpGYWtlVmlkZW9NZWRpYUNoYW5uZWwqIGZha2VfdmlkZW9fY2hh
bm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZpZGVvQ2hhbm5lbCgwKTsKLSAg
QVNTRVJUX05FKG51bGxwdHIsIGZha2VfdmlkZW9fY2hhbm5lbCk7Ci0gIEFTU0VSVF9FUSgxdSwg
ZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3N0cmVhbXMoKS5zaXplKCkpOwotICBjb25zdCBjcmlj
a2V0OjpTdHJlYW1QYXJhbXMmIHZpZGVvX3NlbmRfc3RyZWFtID0KLSAgICAgIGZha2VfdmlkZW9f
Y2hhbm5lbC0+c2VuZF9zdHJlYW1zKClbMF07Ci0gIEVYUEVDVF9ORSgwdSwgdmlkZW9fc2VuZF9z
dHJlYW0uZmlyc3Rfc3NyYygpKTsKLSAgcnR4X3NzcmMgPSAwdTsKLSAgRVhQRUNUX1RSVUUoCi0g
ICAgICB2aWRlb19zZW5kX3N0cmVhbS5HZXRGaWRTc3JjKHZpZGVvX3NlbmRfc3RyZWFtLmZpcnN0
X3NzcmMoKSwgJnJ0eF9zc3JjKSk7Ci0gIEVYUEVDVF9ORSgwdSwgcnR4X3NzcmMpOwotICBFWFBF
Q1RfTkUodmlkZW9fc2VuZF9zdHJlYW0uZmlyc3Rfc3NyYygpLCBydHhfc3NyYyk7Ci0gIEVYUEVD
VF9ORSh2aWRlb19zZW5kX3N0cmVhbS5maXJzdF9zc3JjKCksIGF1ZGlvX3NlbmRfc3RyZWFtLmZp
cnN0X3NzcmMoKSk7Ci19Ci0KLS8vIFRlc3QgY2hhbmdpbmcgYm90aCB0aGUgc2VuZCBjb2RlYyBh
bmQgU1NSQyBhdCB0aGUgc2FtZSB0aW1lLCBhbmQgdmVyaWZ5IHRoYXQKLS8vIHRoZSBuZXcgcGFy
YW1ldGVycyBhcmUgYXBwbGllZCB0byB0aGUgbWVkaWEgZW5naW5lIGxldmVsLgotVEVTVF9GKE9y
dGNSdHBTZW5kZXJUZXN0LCBDYWxsaW5nU2VuZFR3aWNlQ2hhbmdlc1BhcmFtZXRlcnMpIHsKLSAg
YXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVy
KAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8uZ2V0KCkp
OwotICBhdXRvIGF1ZGlvX3NlbmRlciA9IGF1ZGlvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7
Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgYXVkaW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsT3B1
c1BhcmFtZXRlcnNXaXRoU3NyYygweDExMTExMTExKSkub2soKSk7Ci0gIEVYUEVDVF9UUlVFKAot
ICAgICAgYXVkaW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsSXNhY1BhcmFtZXRlcnNXaXRoU3Ny
YygweDIyMjIyMjIyKSkub2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZvaWNlTWVkaWFDaGFubmVs
KiBmYWtlX3ZvaWNlX2NoYW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWb2lj
ZUNoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZvaWNlX2NoYW5uZWwpOwot
ICBBU1NFUlRfR1QoZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX2NvZGVjcygpLnNpemUoKSwgMHUp
OwotICBFWFBFQ1RfRVEoIklTQUMiLCBmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRfY29kZWNzKClb
MF0ubmFtZSk7Ci0gIEFTU0VSVF9FUSgxdSwgZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX3N0cmVh
bXMoKS5zaXplKCkpOwotICBFWFBFQ1RfRVEoMHgyMjIyMjIyMnUsIGZha2Vfdm9pY2VfY2hhbm5l
bC0+c2VuZF9zdHJlYW1zKClbMF0uZmlyc3Rfc3NyYygpKTsKLQotICBhdXRvIHZpZGVvX3NlbmRl
cl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0
OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9f
c2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUo
Ci0gICAgICB2aWRlb19zZW5kZXItPlNlbmQoTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzV2l0aFNz
cmMoMHgzMzMzMzMzMykpLm9rKCkpOwotICBFWFBFQ1RfVFJVRSgKLSAgICAgIHZpZGVvX3NlbmRl
ci0+U2VuZChNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnNXaXRoU3NyYygweDQ0NDQ0NDQ0KSkub2so
KSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5u
ZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFT
U0VSVF9ORShudWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBBU1NFUlRfR1QoZmFrZV92
aWRlb19jaGFubmVsLT5zZW5kX2NvZGVjcygpLnNpemUoKSwgMHUpOwotICBFWFBFQ1RfRVEoIlZQ
OSIsIGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9jb2RlY3MoKVswXS5uYW1lKTsKLSAgQVNTRVJU
X0VRKDF1LCBmYWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpLnNpemUoKSk7Ci0gIEVY
UEVDVF9FUSgweDQ0NDQ0NDQ0dSwgZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3N0cmVhbXMoKVsw
XS5maXJzdF9zc3JjKCkpOwotfQotCi0vLyBFbnN1cmUgdGhhdCBpZiB0aGUgfGFjdGl2ZXwgZmxh
ZyBvZiBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgaXMgc2V0IHRvIGZhbHNlLAotLy8gc2VuZGluZyBz
dG9wcyBhdCB0aGUgbWVkaWEgZW5naW5lIGxldmVsLgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0
LCBEZWFjdGl2YXRpbmdFbmNvZGluZ1N0b3BzU2VuZGluZykgewotICBhdXRvIGF1ZGlvX3NlbmRl
cl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0
OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9f
c2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgUnRwUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpOwotICBFWFBFQ1RfVFJV
RShhdWRpb19zZW5kZXItPlNlbmQocGFyYW1ldGVycykub2soKSk7Ci0KLSAgLy8gRXhwZWN0ICJz
ZW5kaW5nIiBmbGFnIHRvIGluaXRpYWxseSBiZSB0cnVlLgotICBjcmlja2V0OjpGYWtlVm9pY2VN
ZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2VfY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2lu
ZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2Vfdm9pY2Vf
Y2hhbm5lbCk7Ci0gIEVYUEVDVF9UUlVFKGZha2Vfdm9pY2VfY2hhbm5lbC0+c2VuZGluZygpKTsK
LQotICAvLyBEZWFjdGl2YXRlIGVuY29kaW5nIGFuZCBleHBlY3QgaXQgdG8gY2hhbmdlIHRvIGZh
bHNlLgotICBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5hY3RpdmUgPSBmYWxzZTsKLSAgRVhQRUNU
X1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKHBhcmFtZXRlcnMpLm9rKCkpOwotICBFWFBFQ1RfRkFM
U0UoZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kaW5nKCkpOwotCi0gIC8vIFRyeSB0aGUgc2FtZSB0
aGluZyBmb3IgdmlkZW8gbm93LgotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2Zh
Y3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVP
LCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2Vu
ZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA4UGFy
YW1ldGVycygpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNlbmQocGFyYW1ldGVycyku
b2soKSk7Ci0KLSAgY3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2No
YW5uZWwgPQotICAgICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0g
IEFTU0VSVF9ORShudWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShm
YWtlX3ZpZGVvX2NoYW5uZWwtPnNlbmRpbmcoKSk7Ci0KLSAgcGFyYW1ldGVycy5lbmNvZGluZ3Nb
MF0uYWN0aXZlID0gZmFsc2U7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZChwYXJh
bWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0ZBTFNFKGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZGlu
ZygpKTsKLX0KLQotLy8gRW5zdXJlIHRoYXQgY2FsbGluZyBTZW5kIHdpdGggYW4gZW1wdHkgbGlz
dCBvZiBlbmNvZGluZ3MgY2F1c2VzIHNlbmQgc3RyZWFtcwotLy8gYXQgdGhlIG1lZGlhIGVuZ2lu
ZSBsZXZlbCB0byBiZSBjbGVhcmVkLgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBDYWxsaW5n
U2VuZFdpdGhFbXB0eUVuY29kaW5nc0NsZWFyc1NlbmRTdHJlYW1zKSB7Ci0gIGF1dG8gYXVkaW9f
c2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNy
aWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0byBh
dWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBSdHBQYXJh
bWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCk7Ci0gIEVYUEVD
VF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChwYXJhbWV0ZXJzKS5vaygpKTsKLSAgcGFyYW1ldGVy
cy5lbmNvZGluZ3MuY2xlYXIoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKHBh
cmFtZXRlcnMpLm9rKCkpOwotCi0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFr
ZV92b2ljZV9jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFu
bmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQ
RUNUX1RSVUUoZmFrZV92b2ljZV9jaGFubmVsLT5zZW5kX3N0cmVhbXMoKS5lbXB0eSgpKTsKLQot
ICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5k
ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQo
KSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUo
KTsKLSAgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpOwotICBFWFBFQ1Rf
VFJVRSh2aWRlb19zZW5kZXItPlNlbmQocGFyYW1ldGVycykub2soKSk7Ci0gIHBhcmFtZXRlcnMu
ZW5jb2RpbmdzLmNsZWFyKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZChwYXJh
bWV0ZXJzKS5vaygpKTsKLQotICBjcmlja2V0OjpGYWtlVmlkZW9NZWRpYUNoYW5uZWwqIGZha2Vf
dmlkZW9fY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlhX2VuZ2luZV8tPkdldFZpZGVvQ2hhbm5l
bCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2VfdmlkZW9fY2hhbm5lbCk7Ci0gIEVYUEVD
VF9UUlVFKGZha2VfdmlkZW9fY2hhbm5lbC0+c2VuZF9zdHJlYW1zKCkuZW1wdHkoKSk7Ci19Ci0K
LS8vIFRoZXNlIGVycm9ycyBzaG91bGQgYmUgY292ZXJlZCBieSBydHBwYXJhbWV0ZXJzY29udmVy
c2lvbl91bml0dGVzdC5jYywgYnV0Ci0vLyB3ZSBzaG91bGQgYXQgbGVhc3QgdGVzdCB0aGF0IHRo
b3NlIGVycm9ycyBhcmUgcHJvcG9nYXRlZCBmcm9tIGNhbGxzIHRvIFNlbmQsCi0vLyB3aXRoIGEg
ZmV3IGV4YW1wbGVzLgotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBTZW5kUmV0dXJuc0Vycm9y
T25JbnZhbGlkUGFyYW1ldGVycykgewotICBhdXRvIHJlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNy
ZWF0ZVJ0cFNlbmRlcihjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0g
IGF1dG8gc2VuZGVyID0gcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICAvLyBOQUNLIGZlZWRiYWNrIG1p
c3NpbmcgbWVzc2FnZSB0eXBlLgotICBSdHBQYXJhbWV0ZXJzIGludmFsaWRfZmVlZGJhY2sgPSBN
YWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAgaW52YWxpZF9mZWVkYmFjay5jb2RlY3NbMF0u
cnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6TkFDSyk7Ci0gIEVY
UEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgc2Vu
ZGVyLT5TZW5kKGludmFsaWRfZmVlZGJhY2spLnR5cGUoKSk7Ci0gIC8vIE5lZ2F0aXZlIHBheWxv
YWQgdHlwZS4KLSAgUnRwUGFyYW1ldGVycyBpbnZhbGlkX3B0ID0gTWFrZU1pbmltYWxWcDhQYXJh
bWV0ZXJzKCk7Ci0gIGludmFsaWRfcHQuY29kZWNzWzBdLnBheWxvYWRfdHlwZSA9IC0xOwotICBF
WFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1JBTkdFLCBzZW5kZXItPlNlbmQoaW52YWxp
ZF9wdCkudHlwZSgpKTsKLSAgLy8gRHVwbGljYXRlIGNvZGVjIHBheWxvYWQgdHlwZXMuCi0gIFJ0
cFBhcmFtZXRlcnMgZHVwbGljYXRlX3BheWxvYWRfdHlwZXMgPSBNYWtlTWluaW1hbFZwOFBhcmFt
ZXRlcnMoKTsKLSAgZHVwbGljYXRlX3BheWxvYWRfdHlwZXMuY29kZWNzLnB1c2hfYmFjayhkdXBs
aWNhdGVfcGF5bG9hZF90eXBlcy5jb2RlY3NbMF0pOwotICBkdXBsaWNhdGVfcGF5bG9hZF90eXBl
cy5jb2RlY3MuYmFjaygpLm5hbWUgPSAiVlA5IjsKLSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6
SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICBzZW5kZXItPlNlbmQoZHVwbGljYXRlX3Bh
eWxvYWRfdHlwZXMpLnR5cGUoKSk7Ci19Ci0KLS8vIFR3byBzZW5kZXJzIHVzaW5nIHRoZSBzYW1l
IHRyYW5zcG9ydCBzaG91bGRuJ3QgYmUgYWJsZSB0byB1c2UgdGhlIHNhbWUKLS8vIHBheWxvYWQg
dHlwZSB0byByZWZlciB0byBkaWZmZXJlbnQgY29kZWNzLCBzYW1lIGhlYWRlciBleHRlbnNpb24g
SURzIHRvCi0vLyByZWZlciB0byBkaWZmZXJlbnQgZXh0ZW5zaW9ucywgb3Igc2FtZSBTU1JDLgot
VEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBTZW5kUmV0dXJuc0Vycm9yT25JZENvbmZsaWN0cykg
ewotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBT
ZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Xy5n
ZXQoKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3Bv
cnRfLmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZpZGVvX3NlbmRlcl9yZXN1bHQuTW92
ZVZhbHVlKCk7Ci0KLSAgLy8gRmlyc3QgdGVzdCBwYXlsb2FkIHR5cGUgY29uZmxpY3QuCi0gIFJ0
cFBhcmFtZXRlcnMgYXVkaW9fcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMo
KTsKLSAgUnRwUGFyYW1ldGVycyB2aWRlb19wYXJhbWV0ZXJzID0gTWFrZU1pbmltYWxWcDhQYXJh
bWV0ZXJzKCk7Ci0gIGF1ZGlvX3BhcmFtZXRlcnMuY29kZWNzWzBdLnBheWxvYWRfdHlwZSA9IDEw
MDsKLSAgdmlkZW9fcGFyYW1ldGVycy5jb2RlY3NbMF0ucGF5bG9hZF90eXBlID0gMTAwOwotICBF
WFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQoYXVkaW9fcGFyYW1ldGVycykub2soKSk7Ci0g
IEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAg
dmlkZW9fc2VuZGVyLT5TZW5kKHZpZGVvX3BhcmFtZXRlcnMpLnR5cGUoKSk7Ci0KLSAgLy8gVGVz
dCBoZWFkZXIgZXh0ZW5zaW9uIElEIGNvbmZsaWN0LgotICB2aWRlb19wYXJhbWV0ZXJzLmNvZGVj
c1swXS5wYXlsb2FkX3R5cGUgPSAxMTA7Ci0gIGF1ZGlvX3BhcmFtZXRlcnMuaGVhZGVyX2V4dGVu
c2lvbnMuZW1wbGFjZV9iYWNrKCJmb28iLCA0KTsKLSAgdmlkZW9fcGFyYW1ldGVycy5oZWFkZXJf
ZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soImJhciIsIDQpOwotICBFWFBFQ1RfVFJVRShhdWRpb19z
ZW5kZXItPlNlbmQoYXVkaW9fcGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJv
clR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAgICAgdmlkZW9fc2VuZGVyLT5TZW5k
KHZpZGVvX3BhcmFtZXRlcnMpLnR5cGUoKSk7Ci0KLSAgLy8gVGVzdCBTU1JDIGNvbmZsaWN0LiBI
YXZlIGFuIFJUWCBTU1JDIHRoYXQgY29uZmxpY3RzIHdpdGggYSBwcmltYXJ5IFNTUkMKLSAgLy8g
Zm9yIGV4dHJhIGNoYWxsZW5nZS4KLSAgdmlkZW9fcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9u
c1swXS51cmkgPSAiZm9vIjsKLSAgYXVkaW9fcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYy5l
bXBsYWNlKDB4ZGVhZGJlZWYpOwotICB2aWRlb19wYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3Jj
LmVtcGxhY2UoMHhhYmJhYWJiYSk7Ci0gIHZpZGVvX3BhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnJ0
eC5lbXBsYWNlKDB4ZGVhZGJlZWYpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQo
YXVkaW9fcGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFM
SURfUEFSQU1FVEVSLAotICAgICAgICAgICAgdmlkZW9fc2VuZGVyLT5TZW5kKHZpZGVvX3BhcmFt
ZXRlcnMpLnR5cGUoKSk7Ci0KLSAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgcGFyYW1ldGVycyBjYW4g
YmUgc2V0IGlmIHRoZSBjb25mbGljdHMgYXJlIGFsbCByZXNvbHZlZC4KLSAgdmlkZW9fcGFyYW1l
dGVycy5lbmNvZGluZ3NbMF0ucnR4LT5zc3JjLmVtcGxhY2UoMHhiYWFkZjAwZCk7Ci0gIEVYUEVD
VF9UUlVFKHZpZGVvX3NlbmRlci0+U2VuZCh2aWRlb19wYXJhbWV0ZXJzKS5vaygpKTsKLX0KLQot
Ly8gRW5zdXJlIHRoYXQgZGVsZXRpbmcgYSBzZW5kZXIgY2F1c2VzIHNlbmQgc3RyZWFtcyBhdCB0
aGUgbWVkaWEgZW5naW5lIGxldmVsCi0vLyB0byBiZSBjbGVhcmVkLgotVEVTVF9GKE9ydGNSdHBT
ZW5kZXJUZXN0LCBEZWxldGluZ1NlbmRlckNsZWFyc1NlbmRTdHJlYW1zKSB7Ci0gIGF1dG8gYXVk
aW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFNlbmRlcigKLSAgICAg
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgYXV0
byBhdWRpb19zZW5kZXIgPSBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBF
Q1RfVFJVRShhdWRpb19zZW5kZXItPlNlbmQoTWFrZU1pbmltYWxPcHVzUGFyYW1ldGVycygpKS5v
aygpKTsKLQotICAvLyBBbHNvIGNyZWF0ZSBhbiBhdWRpbyByZWNlaXZlciwgdG8gcHJldmVudCB0
aGUgdm9pY2UgY2hhbm5lbCBmcm9tIGJlaW5nCi0gIC8vIGNvbXBsZXRlbHkgZGVsZXRlZC4KLSAg
YXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNl
aXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnRfLmdl
dCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9IGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5Nb3Zl
VmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmlt
YWxPcHVzUGFyYW1ldGVycygpKS5vaygpKTsKLQotICBhdWRpb19zZW5kZXIucmVzZXQobnVsbHB0
cik7Ci0gIGNyaWNrZXQ6OkZha2VWb2ljZU1lZGlhQ2hhbm5lbCogZmFrZV92b2ljZV9jaGFubmVs
ID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0Vm9pY2VDaGFubmVsKDApOwotICBBU1NF
UlRfTkUobnVsbHB0ciwgZmFrZV92b2ljZV9jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92
b2ljZV9jaGFubmVsLT5zZW5kX3N0cmVhbXMoKS5lbXB0eSgpKTsKLQotICBhdXRvIHZpZGVvX3Nl
bmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlj
a2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gdmlk
ZW9fc2VuZGVyID0gdmlkZW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RS
VUUodmlkZW9fc2VuZGVyLT5TZW5kKE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpKS5vaygpKTsK
LQotICAvLyBBbHNvIGNyZWF0ZSBhbiB2aWRlbyByZWNlaXZlciwgdG8gcHJldmVudCB0aGUgdmlk
ZW8gY2hhbm5lbCBmcm9tIGJlaW5nCi0gIC8vIGNvbXBsZXRlbHkgZGVsZXRlZC4KLSAgYXV0byB2
aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigK
LSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsK
LSAgYXV0byB2aWRlb19yZWNlaXZlciA9IHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUo
KTsKLSAgRVhQRUNUX1RSVUUodmlkZW9fcmVjZWl2ZXItPlJlY2VpdmUoTWFrZU1pbmltYWxWcDhQ
YXJhbWV0ZXJzKCkpLm9rKCkpOwotCi0gIHZpZGVvX3NlbmRlci5yZXNldChudWxscHRyKTsKLSAg
Y3JpY2tldDo6RmFrZVZpZGVvTWVkaWFDaGFubmVsKiBmYWtlX3ZpZGVvX2NoYW5uZWwgPQotICAg
ICAgZmFrZV9tZWRpYV9lbmdpbmVfLT5HZXRWaWRlb0NoYW5uZWwoMCk7Ci0gIEFTU0VSVF9ORShu
dWxscHRyLCBmYWtlX3ZpZGVvX2NoYW5uZWwpOwotICBFWFBFQ1RfVFJVRShmYWtlX3ZpZGVvX2No
YW5uZWwtPnNlbmRfc3RyZWFtcygpLmVtcHR5KCkpOwotfQotCi0vLyBJZiBTZW5kIGhhc24ndCBi
ZWVuIGNhbGxlZCwgR2V0UGFyYW1ldGVycyBzaG91bGQgcmV0dXJuIGVtcHR5IHBhcmFtZXRlcnMu
Ci1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsIEdldERlZmF1bHRQYXJhbWV0ZXJzKSB7Ci0gIGF1
dG8gcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElB
X1RZUEVfQVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgRVhQRUNUX0VRKFJ0cFBhcmFtZXRlcnMoKSwg
cmVzdWx0LnZhbHVlKCktPkdldFBhcmFtZXRlcnMoKSk7Ci0gIHJlc3VsdCA9IG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFNlbmRlcihjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwot
ICBFWFBFQ1RfRVEoUnRwUGFyYW1ldGVycygpLCByZXN1bHQudmFsdWUoKS0+R2V0UGFyYW1ldGVy
cygpKTsKLX0KLQotLy8gVGVzdCB0aGF0IEdldFBhcmFtZXRlcnMgcmV0dXJucyB0aGUgbGFzdCBw
YXJhbWV0ZXJzIHBhc3NlZCBpbnRvIFNlbmQsIGFsb25nCi0vLyB3aXRoIHRoZSBpbXBsZW1lbnRh
dGlvbi1kZWZhdWx0IHZhbHVlcyBmaWxsZWQgaW4gd2hlcmUgdGhleSB3ZXJlIGxlZnQgdW5zZXQu
Ci1URVNUX0YoT3J0Y1J0cFNlbmRlclRlc3QsCi0gICAgICAgR2V0UGFyYW1ldGVyc1JldHVybnNM
YXN0U2V0UGFyYW1ldGVyc1dpdGhEZWZhdWx0c0ZpbGxlZCkgewotICBhdXRvIGF1ZGlvX3NlbmRl
cl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBDcmVhdGVB
dWRpb1RyYWNrKCJhdWRpbyIpLCBydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9f
c2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICBSdHBQYXJhbWV0
ZXJzIG9wdXNfcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgRVhQ
RUNUX1RSVUUoYXVkaW9fc2VuZGVyLT5TZW5kKG9wdXNfcGFyYW1ldGVycykub2soKSk7Ci0gIEVY
UEVDVF9FUShvcHVzX3BhcmFtZXRlcnMsIGF1ZGlvX3NlbmRlci0+R2V0UGFyYW1ldGVycygpKTsK
LQotICBSdHBQYXJhbWV0ZXJzIGlzYWNfcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsSXNhY1BhcmFt
ZXRlcnMoKTsKLSAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgbnVtX2NoYW5uZWxzIGFjdHVhbGx5IGlz
IGxlZnQgdW5zZXQuCi0gIEFTU0VSVF9GQUxTRShpc2FjX3BhcmFtZXRlcnMuY29kZWNzWzBdLm51
bV9jaGFubmVscyk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlci0+U2VuZChpc2FjX3BhcmFt
ZXRlcnMpLm9rKCkpOwotICAvLyBTaG91bGQgYmUgZmlsbGVkIHdpdGggYSBkZWZhdWx0ICJudW0g
Y2hhbm5lbHMiIG9mIDEuCi0gIC8vIFRPRE8oZGVhZGJlZWYpOiBUaGlzIHNob3VsZCBhY3R1YWxs
eSBkZWZhdWx0IHRvIDIgZm9yIHNvbWUgY29kZWNzLiBVcGRhdGUKLSAgLy8gdGhpcyB0ZXN0IG9u
Y2UgdGhhdCdzIGltcGxlbWVudGVkLgotICBpc2FjX3BhcmFtZXRlcnMuY29kZWNzWzBdLm51bV9j
aGFubmVscy5lbXBsYWNlKDEpOwotICBFWFBFQ1RfRVEoaXNhY19wYXJhbWV0ZXJzLCBhdWRpb19z
ZW5kZXItPkdldFBhcmFtZXRlcnMoKSk7Ci0KLSAgYXV0byB2aWRlb19zZW5kZXJfcmVzdWx0ID0g
b3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgQ3JlYXRlVmlkZW9UcmFjaygi
dmlkZW8iKSwgcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHZp
ZGVvX3NlbmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgUnRwUGFyYW1ldGVycyB2cDhfcGFy
YW1ldGVycyA9IE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVycygpOwotICAvLyBTYW5pdHkgY2hlY2sg
dGhhdCBjbG9ja19yYXRlIGFjdHVhbGx5IGlzIGxlZnQgdW5zZXQuCi0gIEVYUEVDVF9UUlVFKHZp
ZGVvX3NlbmRlci0+U2VuZCh2cDhfcGFyYW1ldGVycykub2soKSk7Ci0gIC8vIFNob3VsZCBiZSBm
aWxsZWQgd2l0aCBhIGRlZmF1bHQgY2xvY2sgcmF0ZSBvZiA5MDAwMC4KLSAgdnA4X3BhcmFtZXRl
cnMuY29kZWNzWzBdLmNsb2NrX3JhdGUuZW1wbGFjZSg5MDAwMCk7Ci0gIEVYUEVDVF9FUSh2cDhf
cGFyYW1ldGVycywgdmlkZW9fc2VuZGVyLT5HZXRQYXJhbWV0ZXJzKCkpOwotCi0gIFJ0cFBhcmFt
ZXRlcnMgdnA5X3BhcmFtZXRlcnMgPSBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnMoKTsKLSAgLy8g
U2FuaXR5IGNoZWNrIHRoYXQgY2xvY2tfcmF0ZSBhY3R1YWxseSBpcyBsZWZ0IHVuc2V0LgotICBF
WFBFQ1RfVFJVRSh2aWRlb19zZW5kZXItPlNlbmQodnA5X3BhcmFtZXRlcnMpLm9rKCkpOwotICAv
LyBTaG91bGQgYmUgZmlsbGVkIHdpdGggYSBkZWZhdWx0IGNsb2NrIHJhdGUgb2YgOTAwMDAuCi0g
IHZwOV9wYXJhbWV0ZXJzLmNvZGVjc1swXS5jbG9ja19yYXRlLmVtcGxhY2UoOTAwMDApOwotICBF
WFBFQ1RfRVEodnA5X3BhcmFtZXRlcnMsIHZpZGVvX3NlbmRlci0+R2V0UGFyYW1ldGVycygpKTsK
LX0KLQotVEVTVF9GKE9ydGNSdHBTZW5kZXJUZXN0LCBHZXRLaW5kKSB7Ci0gIC8vIENvbnN0cnVj
dCBvbmUgc2VuZGVyIGZyb20gdGhlICJraW5kIiBlbnVtIGFuZCBhbm90aGVyIGZyb20gYSB0cmFj
ay4KLSAgYXV0byBhdWRpb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRw
U2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgcnRwX3RyYW5zcG9ydF8u
Z2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVh
dGVSdHBTZW5kZXIoCi0gICAgICBDcmVhdGVWaWRlb1RyYWNrKCJ2aWRlbyIpLCBydHBfdHJhbnNw
b3J0Xy5nZXQoKSk7Ci0gIGF1dG8gYXVkaW9fc2VuZGVyID0gYXVkaW9fc2VuZGVyX3Jlc3VsdC5N
b3ZlVmFsdWUoKTsKLSAgYXV0byB2aWRlb19zZW5kZXIgPSB2aWRlb19zZW5kZXJfcmVzdWx0Lk1v
dmVWYWx1ZSgpOwotICBFWFBFQ1RfRVEoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgYXVkaW9f
c2VuZGVyLT5HZXRLaW5kKCkpOwotICBFWFBFQ1RfRVEoY3JpY2tldDo6TUVESUFfVFlQRV9WSURF
TywgdmlkZW9fc2VuZGVyLT5HZXRLaW5kKCkpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9v
cnRjL29ydGNydHBzZW5kZXJhZGFwdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvb3J0Yy9vcnRjcnRwc2VuZGVyYWRhcHRlci5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZjI1NDFjYjhmODVmM2E2NGFlMWEwZjQ1OTRhNDI3NTVkZTUxY2Jk
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29ydGNydHBzZW5kZXJhZGFw
dGVyLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICov
Ci0KLSNpbmNsdWRlICJvcnRjL29ydGNydHBzZW5kZXJhZGFwdGVyLmgiCi0KLSNpbmNsdWRlIDx1
dGlsaXR5PgotCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgotI2luY2x1
ZGUgIm9ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgotCi1uYW1lc3BhY2UgewotCi12b2lkIEZpbGxBdWRpb1NlbmRlclBhcmFtZXRlcnMod2Vi
cnRjOjpSdHBQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKSB7Ci0gIGZvciAod2VicnRjOjpSdHBDb2Rl
Y1BhcmFtZXRlcnMmIGNvZGVjIDogcGFyYW1ldGVycy0+Y29kZWNzKSB7Ci0gICAgaWYgKCFjb2Rl
Yy5udW1fY2hhbm5lbHMpIHsKLSAgICAgIGNvZGVjLm51bV9jaGFubmVscyA9IDE7Ci0gICAgfQot
ICB9Ci19Ci0KLXZvaWQgRmlsbFZpZGVvU2VuZGVyUGFyYW1ldGVycyh3ZWJydGM6OlJ0cFBhcmFt
ZXRlcnMqIHBhcmFtZXRlcnMpIHsKLSAgZm9yICh3ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYg
Y29kZWMgOiBwYXJhbWV0ZXJzLT5jb2RlY3MpIHsKLSAgICBpZiAoIWNvZGVjLmNsb2NrX3JhdGUp
IHsKLSAgICAgIGNvZGVjLmNsb2NrX3JhdGUgPSBjcmlja2V0OjprVmlkZW9Db2RlY0Nsb2NrcmF0
ZTsKLSAgICB9Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLW5hbWVzcGFjZSB3ZWJydGMg
ewotCi1CRUdJTl9PV05FRF9QUk9YWV9NQVAoT3J0Y1J0cFNlbmRlcikKLVBST1hZX1NJR05BTElO
R19USFJFQURfREVTVFJVQ1RPUigpCi1QUk9YWV9NRVRIT0QxKFJUQ0Vycm9yLCBTZXRUcmFjaywg
TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZSopCi1QUk9YWV9DT05TVE1FVEhPRDAocnRjOjpzY29w
ZWRfcmVmcHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+LCBHZXRUcmFjaykKLVBST1hZX01F
VEhPRDEoUlRDRXJyb3IsIFNldFRyYW5zcG9ydCwgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKikKLVBS
T1hZX0NPTlNUTUVUSE9EMChSdHBUcmFuc3BvcnRJbnRlcmZhY2UqLCBHZXRUcmFuc3BvcnQpCi1Q
Uk9YWV9NRVRIT0QxKFJUQ0Vycm9yLCBTZW5kLCBjb25zdCBSdHBQYXJhbWV0ZXJzJikKLVBST1hZ
X0NPTlNUTUVUSE9EMChSdHBQYXJhbWV0ZXJzLCBHZXRQYXJhbWV0ZXJzKQotUFJPWFlfQ09OU1RN
RVRIT0QwKGNyaWNrZXQ6Ok1lZGlhVHlwZSwgR2V0S2luZCkKLUVORF9QUk9YWV9NQVAoKQotCi0v
LyBzdGF0aWMKLXN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwU2VuZGVySW50ZXJmYWNlPiBPcnRjUnRw
U2VuZGVyQWRhcHRlcjo6Q3JlYXRlUHJveHkoCi0gICAgc3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBT
ZW5kZXJBZGFwdGVyPiB3cmFwcGVkX3NlbmRlcikgewotICBSVENfRENIRUNLKHdyYXBwZWRfc2Vu
ZGVyKTsKLSAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZyA9Ci0gICAgICB3cmFwcGVkX3NlbmRlci0+
cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+c2lnbmFsaW5nX3RocmVhZCgpOwotICBydGM6OlRo
cmVhZCogd29ya2VyID0KLSAgICAgIHdyYXBwZWRfc2VuZGVyLT5ydHBfdHJhbnNwb3J0X2NvbnRy
b2xsZXJfLT53b3JrZXJfdGhyZWFkKCk7Ci0gIHJldHVybiBPcnRjUnRwU2VuZGVyUHJveHk6OkNy
ZWF0ZShzaWduYWxpbmcsIHdvcmtlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bW92ZSh3cmFwcGVkX3NlbmRlcikpOwotfQotCi1PcnRjUnRwU2VuZGVyQWRhcHRl
cjo6fk9ydGNSdHBTZW5kZXJBZGFwdGVyKCkgewotICBpbnRlcm5hbF9zZW5kZXJfID0gbnVsbHB0
cjsKLSAgU2lnbmFsRGVzdHJveWVkKCk7Ci19Ci0KLVJUQ0Vycm9yIE9ydGNSdHBTZW5kZXJBZGFw
dGVyOjpTZXRUcmFjayhNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlKiB0cmFjaykgewotICBpZiAo
dHJhY2sgJiYgY3JpY2tldDo6TWVkaWFUeXBlRnJvbVN0cmluZyh0cmFjay0+a2luZCgpKSAhPSBr
aW5kXykgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKAotICAgICAgICBSVENFcnJvclR5cGU6
OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAgICAiVHJhY2sga2luZCAoYXVkaW8vdmlkZW8pIGRv
ZXNuJ3QgbWF0Y2ggdGhlIGtpbmQgb2YgdGhpcyBzZW5kZXIuIik7Ci0gIH0KLSAgaWYgKGludGVy
bmFsX3NlbmRlcl8gJiYgIWludGVybmFsX3NlbmRlcl8tPlNldFRyYWNrKHRyYWNrKSkgewotICAg
IC8vIFNpbmNlIHdlIGNoZWNrZWQgdGhlIHRyYWNrIHR5cGUgYWJvdmUsIHRoaXMgc2hvdWxkIG5l
dmVyIGhhcHBlbi4uLgotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgTE9HX0FORF9SRVRVUk5f
RVJST1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiRmFpbGVkIHRvIHNldCB0cmFjayBvbiBSdHBTZW5kZXIuIik7Ci0gIH0KLSAgdHJhY2tf
ID0gdHJhY2s7Ci0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQotcnRjOjpzY29wZWRfcmVm
cHRyPE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U+IE9ydGNSdHBTZW5kZXJBZGFwdGVyOjpHZXRU
cmFjaygpCi0gICAgY29uc3QgewotICByZXR1cm4gdHJhY2tfOwotfQotCi1SVENFcnJvciBPcnRj
UnRwU2VuZGVyQWRhcHRlcjo6U2V0VHJhbnNwb3J0KFJ0cFRyYW5zcG9ydEludGVyZmFjZSogdHJh
bnNwb3J0KSB7Ci0gIExPR19BTkRfUkVUVVJOX0VSUk9SKAotICAgICAgUlRDRXJyb3JUeXBlOjpV
TlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAiQ2hhbmdpbmcgdGhlIHRyYW5zcG9ydCBvZiBh
biBSdHBTZW5kZXIgaXMgbm90IHlldCBzdXBwb3J0ZWQuIik7Ci19Ci0KLVJ0cFRyYW5zcG9ydElu
dGVyZmFjZSogT3J0Y1J0cFNlbmRlckFkYXB0ZXI6OkdldFRyYW5zcG9ydCgpIGNvbnN0IHsKLSAg
cmV0dXJuIHRyYW5zcG9ydF87Ci19Ci0KLVJUQ0Vycm9yIE9ydGNSdHBTZW5kZXJBZGFwdGVyOjpT
ZW5kKGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIHsKLSAgUnRwUGFyYW1ldGVycyBm
aWxsZWRfcGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7Ci0gIFJUQ0Vycm9yIGVycjsKLSAgdWludDMy
X3Qgc3NyYyA9IDA7Ci0gIHN3aXRjaCAoa2luZF8pIHsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElB
X1RZUEVfQVVESU86Ci0gICAgICBGaWxsQXVkaW9TZW5kZXJQYXJhbWV0ZXJzKCZmaWxsZWRfcGFy
YW1ldGVycyk7Ci0gICAgICBlcnIgPSBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5WYWxpZGF0
ZUFuZEFwcGx5QXVkaW9TZW5kZXJQYXJhbWV0ZXJzKAotICAgICAgICAgIGZpbGxlZF9wYXJhbWV0
ZXJzLCAmc3NyYyk7Ci0gICAgICBpZiAoIWVyci5vaygpKSB7Ci0gICAgICAgIHJldHVybiBlcnI7
Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklE
RU86Ci0gICAgICBGaWxsVmlkZW9TZW5kZXJQYXJhbWV0ZXJzKCZmaWxsZWRfcGFyYW1ldGVycyk7
Ci0gICAgICBlcnIgPSBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5WYWxpZGF0ZUFuZEFwcGx5
VmlkZW9TZW5kZXJQYXJhbWV0ZXJzKAotICAgICAgICAgIGZpbGxlZF9wYXJhbWV0ZXJzLCAmc3Ny
Yyk7Ci0gICAgICBpZiAoIWVyci5vaygpKSB7Ci0gICAgICAgIHJldHVybiBlcnI7Ci0gICAgICB9
Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQToKLSAgICAg
IFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgICByZXR1cm4gd2VicnRjOjpSVENFcnJvcih3ZWJydGM6
OlJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IpOwotICB9Ci0gIGxhc3RfYXBwbGllZF9wYXJh
bWV0ZXJzXyA9IGZpbGxlZF9wYXJhbWV0ZXJzOwotCi0gIC8vIE5vdyB0aGF0IHBhcmFtZXRlcnMg
d2VyZSBhcHBsaWVkLCBjYW4gY2FsbCBTZXRTc3JjIG9uIHRoZSBpbnRlcm5hbCBzZW5kZXIuCi0g
IC8vIFRoaXMgaXMgYW5hbG9nb3VzIHRvIGEgUGVlckNvbm5lY3Rpb24gY2FsbGluZyBTZXRTc3Jj
IGFmdGVyCi0gIC8vIFNldExvY2FsRGVzY3JpcHRpb24gaXMgc3VjY2Vzc2Z1bC4KLSAgLy8KLSAg
Ly8gSWYgdGhlcmUgd2VyZSBubyBlbmNvZGluZ3MsIHRoaXMgU1NSQyBtYXkgYmUgMCwgd2hpY2gg
aXMgdmFsaWQuCi0gIGlmICghaW50ZXJuYWxfc2VuZGVyXykgewotICAgIENyZWF0ZUludGVybmFs
U2VuZGVyKCk7Ci0gIH0KLSAgaW50ZXJuYWxfc2VuZGVyXy0+U2V0U3NyYyhzc3JjKTsKLQotICBy
ZXR1cm4gUlRDRXJyb3I6Ok9LKCk7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgT3J0Y1J0cFNlbmRlckFk
YXB0ZXI6OkdldFBhcmFtZXRlcnMoKSBjb25zdCB7Ci0gIHJldHVybiBsYXN0X2FwcGxpZWRfcGFy
YW1ldGVyc187Ci19Ci0KLWNyaWNrZXQ6Ok1lZGlhVHlwZSBPcnRjUnRwU2VuZGVyQWRhcHRlcjo6
R2V0S2luZCgpIGNvbnN0IHsKLSAgcmV0dXJuIGtpbmRfOwotfQotCi1PcnRjUnRwU2VuZGVyQWRh
cHRlcjo6T3J0Y1J0cFNlbmRlckFkYXB0ZXIoCi0gICAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQs
Ci0gICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAgUnRwVHJhbnNwb3J0
Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcikKLSAgICA6IGtpbmRf
KGtpbmQpLAotICAgICAgdHJhbnNwb3J0Xyh0cmFuc3BvcnQpLAotICAgICAgcnRwX3RyYW5zcG9y
dF9jb250cm9sbGVyXyhydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIpIHt9Ci0KLXZvaWQgT3J0Y1J0
cFNlbmRlckFkYXB0ZXI6OkNyZWF0ZUludGVybmFsU2VuZGVyKCkgewotICBzd2l0Y2ggKGtpbmRf
KSB7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOiB7Ci0gICAgICBhdXRvKiBh
dWRpb19zZW5kZXIgPSBuZXcgQXVkaW9SdHBTZW5kZXIoCi0gICAgICAgICAgcnRwX3RyYW5zcG9y
dF9jb250cm9sbGVyXy0+d29ya2VyX3RocmVhZCgpLCAvKmlkPSovIiIsIG51bGxwdHIpOwotICAg
ICAgYXV0byogdm9pY2VfY2hhbm5lbCA9IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPnZvaWNl
X2NoYW5uZWwoKTsKLSAgICAgIFJUQ19EQ0hFQ0sodm9pY2VfY2hhbm5lbCk7Ci0gICAgICBhdWRp
b19zZW5kZXItPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNlX2NoYW5uZWwtPm1lZGlhX2NoYW5u
ZWwoKSk7Ci0gICAgICBpbnRlcm5hbF9zZW5kZXJfID0gYXVkaW9fc2VuZGVyOwotICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzogewotICAgICAg
YXV0byogdmlkZW9fc2VuZGVyID0gbmV3IFZpZGVvUnRwU2VuZGVyKAotICAgICAgICAgIHJ0cF90
cmFuc3BvcnRfY29udHJvbGxlcl8tPndvcmtlcl90aHJlYWQoKSwgLyppZD0qLyIiKTsKLSAgICAg
IGF1dG8qIHZpZGVvX2NoYW5uZWwgPSBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT52aWRlb19j
aGFubmVsKCk7Ci0gICAgICBSVENfRENIRUNLKHZpZGVvX2NoYW5uZWwpOwotICAgICAgdmlkZW9f
c2VuZGVyLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCh2aWRlb19jaGFubmVsLT5tZWRpYV9jaGFubmVs
KCkpOwotICAgICAgaW50ZXJuYWxfc2VuZGVyXyA9IHZpZGVvX3NlbmRlcjsKLSAgICAgIGJyZWFr
OwotICAgIH0KLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQToKLSAgICAgIFJUQ19O
T1RSRUFDSEVEKCk7Ci0gIH0KLSAgaWYgKHRyYWNrXykgewotICAgIGlmICghaW50ZXJuYWxfc2Vu
ZGVyXy0+U2V0VHJhY2sodHJhY2tfKSkgewotICAgICAgLy8gU2luY2Ugd2UgY2hlY2tlZCB0aGUg
dHJhY2sgdHlwZSB3aGVuIGl0IHdhcyBzZXQsIHRoaXMgc2hvdWxkIG5ldmVyCi0gICAgICAvLyBo
YXBwZW4uLi4KLSAgICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgfQotICB9Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHNlbmRlcmFkYXB0ZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvb3J0Y3J0cHNlbmRlcmFkYXB0ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA3OGRhOTg1YzlkMThhMDY4ODYyMjBk
MjQ5ZjhhOTA5NGZjNWFiYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL29y
dGNydHBzZW5kZXJhZGFwdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgot
ICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
LSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE9SVENfT1JUQ1JUUFNFTkRFUkFEQVBURVJfSF8KLSNk
ZWZpbmUgT1JUQ19PUlRDUlRQU0VOREVSQURBUFRFUl9IXwotCi0jaW5jbHVkZSA8bWVtb3J5Pgot
Ci0jaW5jbHVkZSAiYXBpL29ydGMvb3J0Y3J0cHNlbmRlcmludGVyZmFjZS5oIgotI2luY2x1ZGUg
ImFwaS9ydGNlcnJvci5oIgotI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgiCi0jaW5jbHVk
ZSAib3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5oIgotI2luY2x1ZGUgInBjL3J0
cHNlbmRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKLQotbmFtZXNwYWNl
IHdlYnJ0YyB7Ci0KLS8vIEltcGxlbWVudGF0aW9uIG9mIE9ydGNSdHBTZW5kZXJJbnRlcmZhY2Ug
dGhhdCB3b3JrcyB3aXRoIFJ0cFRyYW5zcG9ydEFkYXB0ZXIsCi0vLyBhbmQgd3JhcHMgYSBWaWRl
b1J0cFNlbmRlci9BdWRpb1J0cFNlbmRlciB0aGF0J3Mgbm9ybWFsbHkgdXNlZCB3aXRoIHRoZQot
Ly8gUGVlckNvbm5lY3Rpb24uCi0vLwotLy8gVE9ETyhkZWFkYmVlZik6IFdoZW4gQmFzZUNoYW5u
ZWwgaXMgc3BsaXQgYXBhcnQgaW50byBzZXBhcmF0ZQotLy8gIlJ0cFNlbmRlciIvIlJ0cFRyYW5z
Y2VpdmVyIi8iUnRwU2VuZGVyIi8iUnRwUmVjZWl2ZXIiIG9iamVjdHMsIHRoaXMgYWRhcHRlcgot
Ly8gb2JqZWN0IGNhbiBiZSByZW1vdmVkLgotY2xhc3MgT3J0Y1J0cFNlbmRlckFkYXB0ZXIgOiBw
dWJsaWMgT3J0Y1J0cFNlbmRlckludGVyZmFjZSB7Ci0gcHVibGljOgotICAvLyBXcmFwcyB8d3Jh
cHBlZF9zZW5kZXJ8IGluIGEgcHJveHkgdGhhdCB3aWxsIHNhZmVseSBjYWxsIG1ldGhvZHMgb24g
dGhlCi0gIC8vIGNvcnJlY3QgdGhyZWFkLgotICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE9ydGNS
dHBTZW5kZXJJbnRlcmZhY2U+IENyZWF0ZVByb3h5KAotICAgICAgc3RkOjp1bmlxdWVfcHRyPE9y
dGNSdHBTZW5kZXJBZGFwdGVyPiB3cmFwcGVkX3NlbmRlcik7Ci0KLSAgLy8gU2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGJ5IFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyLgotICBPcnRjUnRwU2Vu
ZGVyQWRhcHRlcihjcmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNlKiB0cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKiBydHBfdHJhbnNwb3J0X2NvbnRyb2xs
ZXIpOwotICB+T3J0Y1J0cFNlbmRlckFkYXB0ZXIoKSBvdmVycmlkZTsKLQotICAvLyBPcnRjUnRw
U2VuZGVySW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLgotICBSVENFcnJvciBTZXRUcmFjayhNZWRp
YVN0cmVhbVRyYWNrSW50ZXJmYWNlKiB0cmFjaykgb3ZlcnJpZGU7Ci0gIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlPiBHZXRUcmFjaygpIGNvbnN0IG92ZXJyaWRl
OwotCi0gIFJUQ0Vycm9yIFNldFRyYW5zcG9ydChSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5z
cG9ydCkgb3ZlcnJpZGU7Ci0gIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogR2V0VHJhbnNwb3J0KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0KLSAgUlRDRXJyb3IgU2VuZChjb25zdCBSdHBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKSBvdmVycmlkZTsKLSAgUnRwUGFyYW1ldGVycyBHZXRQYXJhbWV0ZXJzKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0KLSAgY3JpY2tldDo6TWVkaWFUeXBlIEdldEtpbmQoKSBjb25zdCBvdmVy
cmlkZTsKLQotICAvLyBVc2VkIHNvIHRoYXQgdGhlIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFw
dGVyIGtub3dzIHdoZW4gaXQgY2FuCi0gIC8vIGRlYWxsb2NhdGUgcmVzb3VyY2VzIGFsbG9jYXRl
ZCBmb3IgdGhpcyBvYmplY3QuCi0gIHNpZ3Nsb3Q6OnNpZ25hbDA8PiBTaWduYWxEZXN0cm95ZWQ7
Ci0KLSBwcml2YXRlOgotICB2b2lkIENyZWF0ZUludGVybmFsU2VuZGVyKCk7Ci0KLSAgY3JpY2tl
dDo6TWVkaWFUeXBlIGtpbmRfOwotICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydF87
Ci0gIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKiBydHBfdHJhbnNwb3J0X2NvbnRyb2xs
ZXJfOwotICAvLyBTY29wZWQgcmVmcHRyIGR1ZSB0byByZWYtY291bnRlZCBpbnRlcmZhY2UsIGJ1
dCB3ZSBzaG91bGQgYmUgdGhlIG9ubHkKLSAgLy8gcmVmZXJlbmNlIGhvbGRlci4KLSAgcnRjOjpz
Y29wZWRfcmVmcHRyPFJ0cFNlbmRlckludGVybmFsPiBpbnRlcm5hbF9zZW5kZXJfOwotICBydGM6
OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1UcmFja0ludGVyZmFjZT4gdHJhY2tfOwotICBSdHBQ
YXJhbWV0ZXJzIGxhc3RfYXBwbGllZF9wYXJhbWV0ZXJzXzsKLQotICBSVENfRElTQUxMT1dfSU1Q
TElDSVRfQ09OU1RSVUNUT1JTKE9ydGNSdHBTZW5kZXJBZGFwdGVyKTsKLX07Ci0KLX0gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKLQotI2VuZGlmICAvLyBPUlRDX09SVENSVFBTRU5ERVJBREFQVEVSX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9v
cnRjL3J0cHRyYW5zcG9ydF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5MmFkNDNmYWIzZWRlZTcwNDA1YmE1NTIxZDkxNWRmYjU5MzA5
YjhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0X3Vu
aXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMjg2ICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
ICovCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1
aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVj
cy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2Uv
ZmFrZW1lZGlhZW5naW5lLmgiCi0jaW5jbHVkZSAib3J0Yy9vcnRjZmFjdG9yeS5oIgotI2luY2x1
ZGUgIm9ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJwMnAvYmFzZS9mYWtlcGFj
a2V0dHJhbnNwb3J0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLQotbmFtZXNwYWNl
IHdlYnJ0YyB7Ci0KLS8vIFRoaXMgdGVzdCB1c2VzIGZha2UgcGFja2V0IHRyYW5zcG9ydHMgYW5k
IGEgZmFrZSBtZWRpYSBlbmdpbmUsIGluIG9yZGVyIHRvCi0vLyB0ZXN0IHRoZSBSdHBUcmFuc3Bv
cnQgYXQgb25seSBhbiBBUEkgbGV2ZWwuIEFueSBlbmQtdG8tZW5kIHRlc3Qgc2hvdWxkIGdvIGlu
Ci0vLyBvcnRjZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MgaW5zdGVhZC4KLWNsYXNzIFJ0cFRy
YW5zcG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOgotICBSdHBUcmFu
c3BvcnRUZXN0KCkgewotICAgIGZha2VfbWVkaWFfZW5naW5lXyA9IG5ldyBjcmlja2V0OjpGYWtl
TWVkaWFFbmdpbmUoKTsKLSAgICAvLyBOb3RlOiBUaGlzIGRvZXNuJ3QgbmVlZCB0byB1c2UgZmFr
ZSBuZXR3b3JrIGNsYXNzZXMsIHNpbmNlIGl0IHVzZXMKLSAgICAvLyBGYWtlUGFja2V0VHJhbnNw
b3J0cy4KLSAgICBhdXRvIHJlc3VsdCA9IE9ydGNGYWN0b3J5OjpDcmVhdGUoCi0gICAgICAgIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxjcmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4oZmFrZV9tZWRpYV9lbmdp
bmVfKSwKLSAgICAgICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwgQ3JlYXRl
QnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSk7Ci0gICAgb3J0Y19mYWN0b3J5XyA9IHJlc3Vs
dC5Nb3ZlVmFsdWUoKTsKLSAgfQotCi0gcHJvdGVjdGVkOgotICAvLyBPd25lZCBieSB8b3J0Y19m
YWN0b3J5X3wuCi0gIGNyaWNrZXQ6OkZha2VNZWRpYUVuZ2luZSogZmFrZV9tZWRpYV9lbmdpbmVf
OwotICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+IG9ydGNfZmFjdG9yeV87
Ci19OwotCi0vLyBUZXN0IEdldFJ0cFBhY2tldFRyYW5zcG9ydCBhbmQgR2V0UnRjcFBhY2tldFRy
YW5zcG9ydCwgd2l0aCBhbmQgd2l0aG91dCBSVENQCi0vLyBtdXhpbmcuCi1URVNUX0YoUnRwVHJh
bnNwb3J0VGVzdCwgR2V0UGFja2V0VHJhbnNwb3J0cykgewotICBydGM6OkZha2VQYWNrZXRUcmFu
c3BvcnQgcnRwKCJydHAiKTsKLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0Y3AoInJ0Y3Ai
KTsKLSAgLy8gV2l0aCBtdXhlZCBSVENQLgotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7Ci0gIHBhcmFtZXRlcnMucnRjcC5tdXggPSB0cnVlOwotICBhdXRvIHJlc3VsdCA9Ci0g
ICAgICBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQocGFyYW1ldGVycywgJnJ0cCwg
bnVsbHB0ciwgbnVsbHB0cik7Ci0gIEFTU0VSVF9UUlVFKHJlc3VsdC5vaygpKTsKLSAgRVhQRUNU
X0VRKCZydHAsIHJlc3VsdC52YWx1ZSgpLT5HZXRSdHBQYWNrZXRUcmFuc3BvcnQoKSk7Ci0gIEVY
UEVDVF9FUShudWxscHRyLCByZXN1bHQudmFsdWUoKS0+R2V0UnRjcFBhY2tldFRyYW5zcG9ydCgp
KTsKLSAgcmVzdWx0Lk1vdmVWYWx1ZSgpLnJlc2V0KCk7Ci0gIC8vIFdpdGggbm9uLW11eGVkIFJU
Q1AuCi0gIHBhcmFtZXRlcnMucnRjcC5tdXggPSBmYWxzZTsKLSAgcmVzdWx0ID0gb3J0Y19mYWN0
b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KHBhcmFtZXRlcnMsICZydHAsICZydGNwLCBudWxscHRy
KTsKLSAgQVNTRVJUX1RSVUUocmVzdWx0Lm9rKCkpOwotICBFWFBFQ1RfRVEoJnJ0cCwgcmVzdWx0
LnZhbHVlKCktPkdldFJ0cFBhY2tldFRyYW5zcG9ydCgpKTsKLSAgRVhQRUNUX0VRKCZydGNwLCBy
ZXN1bHQudmFsdWUoKS0+R2V0UnRjcFBhY2tldFRyYW5zcG9ydCgpKTsKLX0KLQotLy8gSWYgYW4g
UnRwVHJhbnNwb3J0IHN0YXJ0cyBvdXQgdW4tbXV4ZWQgYW5kIHRoZW4gc3RhcnRzIG11eGluZywg
dGhlIFJUQ1AKLS8vIHBhY2tldCB0cmFuc3BvcnQgc2hvdWxkIGJlIGZvcmdvdHRlbiBhbmQgR2V0
UnRjcFBhY2tldFRyYW5zcG9ydCBzaG91bGQKLS8vIHJldHVybiBudWxsLgotVEVTVF9GKFJ0cFRy
YW5zcG9ydFRlc3QsIEVuYWJsaW5nUnRjcE11eGluZ1Vuc2V0c1J0Y3BUcmFuc3BvcnQpIHsKLSAg
cnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IHJ0cCgicnRwIik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRy
YW5zcG9ydCBydGNwKCJydGNwIik7Ci0KLSAgLy8gQ3JlYXRlIG5vbi1tdXhlZC4KLSAgUnRwVHJh
bnNwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICBwYXJhbWV0ZXJzLnJ0Y3AubXV4ID0gZmFs
c2U7Ci0gIGF1dG8gcmVzdWx0ID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5z
cG9ydChwYXJhbWV0ZXJzLCAmcnRwLCAmcnRjcCwgbnVsbHB0cik7Ci0gIEFTU0VSVF9UUlVFKHJl
c3VsdC5vaygpKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0ID0gcmVzdWx0Lk1vdmVWYWx1ZSgpOwot
Ci0gIC8vIEVuYWJsZSBtdXhpbmcuCi0gIHBhcmFtZXRlcnMucnRjcC5tdXggPSB0cnVlOwotICBF
WFBFQ1RfVFJVRShydHBfdHJhbnNwb3J0LT5TZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLm9rKCkp
OwotICBFWFBFQ1RfRVEobnVsbHB0ciwgcnRwX3RyYW5zcG9ydC0+R2V0UnRjcFBhY2tldFRyYW5z
cG9ydCgpKTsKLX0KLQotVEVTVF9GKFJ0cFRyYW5zcG9ydFRlc3QsIEdldEFuZFNldFJ0Y3BQYXJh
bWV0ZXJzKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9ydCBydHAoInJ0cCIpOwotICBydGM6
OkZha2VQYWNrZXRUcmFuc3BvcnQgcnRjcCgicnRjcCIpOwotICAvLyBTdGFydCB3aXRoIG5vbi1t
dXhlZCBSVENQLgotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFt
ZXRlcnMucnRjcC5tdXggPSBmYWxzZTsKLSAgcGFyYW1ldGVycy5ydGNwLmNuYW1lID0gInRlU1Qi
OwotICBwYXJhbWV0ZXJzLnJ0Y3AucmVkdWNlZF9zaXplID0gZmFsc2U7Ci0gIGF1dG8gcmVzdWx0
ID0KLSAgICAgIG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydChwYXJhbWV0ZXJzLCAm
cnRwLCAmcnRjcCwgbnVsbHB0cik7Ci0gIEFTU0VSVF9UUlVFKHJlc3VsdC5vaygpKTsKLSAgYXV0
byB0cmFuc3BvcnQgPSByZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9FUShwYXJhbWV0ZXJz
LCB0cmFuc3BvcnQtPkdldFBhcmFtZXRlcnMoKSk7Ci0KLSAgLy8gQ2hhbmdpbmcgdGhlIENOQU1F
IGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC4KLSAgcGFyYW1ldGVycy5ydGNwLmNuYW1lID0gImRp
ZmZlcmVudCI7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElP
TiwKLSAgICAgICAgICAgIHRyYW5zcG9ydC0+U2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJzKS50eXBl
KCkpOwotICBwYXJhbWV0ZXJzLnJ0Y3AuY25hbWUgPSAidGVTVCI7Ci0KLSAgLy8gRW5hYmxlIFJU
Q1AgbXV4aW5nIGFuZCByZWR1Y2VkLXNpemUgUlRDUC4KLSAgcGFyYW1ldGVycy5ydGNwLm11eCA9
IHRydWU7Ci0gIHBhcmFtZXRlcnMucnRjcC5yZWR1Y2VkX3NpemUgPSB0cnVlOwotICBFWFBFQ1Rf
VFJVRSh0cmFuc3BvcnQtPlNldFBhcmFtZXRlcnMocGFyYW1ldGVycykub2soKSk7Ci0gIEVYUEVD
VF9FUShwYXJhbWV0ZXJzLCB0cmFuc3BvcnQtPkdldFBhcmFtZXRlcnMoKSk7Ci0KLSAgLy8gRW1w
dHkgQ05BTUUgc2hvdWxkIHJlc3VsdCBpbiB0aGUgZXhpc3RpbmcgQ05BTUUgYmVpbmcgdXNlZC4K
LSAgcGFyYW1ldGVycy5ydGNwLmNuYW1lLmNsZWFyKCk7Ci0gIEVYUEVDVF9UUlVFKHRyYW5zcG9y
dC0+U2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJzKS5vaygpKTsKLSAgRVhQRUNUX0VRKCJ0ZVNUIiwg
dHJhbnNwb3J0LT5HZXRQYXJhbWV0ZXJzKCkucnRjcC5jbmFtZSk7Ci0KLSAgLy8gRGlzYWJsaW5n
IFJUQ1AgbXV4aW5nIGFmdGVyIGVuYWJsaW5nIHNob3VsZG4ndCBiZSBhbGxvd2VkLCBzaW5jZSBl
bmFibGluZwotICAvLyBtdXhpbmcgc2hvdWxkIGhhdmUgbWFkZSB0aGUgUlRQIHRyYW5zcG9ydCBm
b3JnZXQgYWJvdXQgdGhlIFJUQ1AgcGFja2V0Ci0gIC8vIHRyYW5zcG9ydCBpbml0aWFsbHkgcGFz
c2VkIGludG8gaXQuCi0gIHBhcmFtZXRlcnMucnRjcC5tdXggPSBmYWxzZTsKLSAgRVhQRUNUX0VR
KFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9TVEFURSwKLSAgICAgICAgICAgIHRyYW5zcG9ydC0+U2V0
UGFyYW1ldGVycyhwYXJhbWV0ZXJzKS50eXBlKCkpOwotfQotCi0vLyBXaGVuIFNlbmQgb3IgUmVj
ZWl2ZSBpcyBjYWxsZWQgb24gYSBzZW5kZXIgb3IgcmVjZWl2ZXIsIHRoZSBSVENQIHBhcmFtZXRl
cnMKLS8vIGZyb20gdGhlIFJ0cFRyYW5zcG9ydCB1bmRlcm5lYXRoIHRoZSBzZW5kZXIgc2hvdWxk
IGJlIGFwcGxpZWQgdG8gdGhlIGNyZWF0ZWQKLS8vIG1lZGlhIHN0cmVhbS4gVGhlIG9ubHkgcmVs
ZXZhbnQgcGFyYW1ldGVycyAoY3VycmVudGx5KSBhcmUgfGNuYW1lfCBhbmQKLS8vIHxyZWR1Y2Vk
X3NpemV8LgotVEVTVF9GKFJ0cFRyYW5zcG9ydFRlc3QsIFNlbmRBbmRSZWNlaXZlQXBwbHlSdGNw
UGFyYW1ldGVyc1RvTWVkaWFFbmdpbmUpIHsKLSAgLy8gRmlyc3QsIGNyZWF0ZSB2aWRlbyB0cmFu
c3BvcnQgd2l0aCByZWR1Y2VkLXNpemUgUlRDUC4KLSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0
IGZha2VfcGFja2V0X3RyYW5zcG9ydDEoIjEiKTsKLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBw
YXJhbWV0ZXJzOwotICBwYXJhbWV0ZXJzLnJ0Y3AubXV4ID0gdHJ1ZTsKLSAgcGFyYW1ldGVycy5y
dGNwLnJlZHVjZWRfc2l6ZSA9IHRydWU7Ci0gIHBhcmFtZXRlcnMucnRjcC5jbmFtZSA9ICJmb28i
OwotICBhdXRvIHJ0cF90cmFuc3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRw
VHJhbnNwb3J0KAotICAgICAgcGFyYW1ldGVycywgJmZha2VfcGFja2V0X3RyYW5zcG9ydDEsIG51
bGxwdHIsIG51bGxwdHIpOwotICBhdXRvIHZpZGVvX3RyYW5zcG9ydCA9IHJ0cF90cmFuc3BvcnRf
cmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIC8vIENyZWF0ZSB2aWRlbyBzZW5kZXIgYW5kIGNhbGwg
U2VuZCwgZXhwZWN0aW5nIHBhcmFtZXRlcnMgdG8gYmUgYXBwbGllZC4KLSAgYXV0byBzZW5kZXJf
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfVklERU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2aWRlb190cmFuc3BvcnQuZ2V0KCkpOwotICBhdXRvIHZpZGVvX3NlbmRlciA9IHNl
bmRlcl9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3NlbmRlci0+U2Vu
ZChNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKSkub2soKSk7Ci0gIGNyaWNrZXQ6OkZha2VWaWRl
b01lZGlhQ2hhbm5lbCogZmFrZV92aWRlb19jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5n
aW5lXy0+R2V0VmlkZW9DaGFubmVsKDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92aWRl
b19jaGFubmVsKTsKLSAgRVhQRUNUX1RSVUUoZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3J0Y3Bf
cGFyYW1ldGVycygpLnJlZHVjZWRfc2l6ZSk7Ci0gIEFTU0VSVF9FUSgxdSwgZmFrZV92aWRlb19j
aGFubmVsLT5zZW5kX3N0cmVhbXMoKS5zaXplKCkpOwotICBjb25zdCBjcmlja2V0OjpTdHJlYW1Q
YXJhbXMmIHZpZGVvX3NlbmRfc3RyZWFtID0KLSAgICAgIGZha2VfdmlkZW9fY2hhbm5lbC0+c2Vu
ZF9zdHJlYW1zKClbMF07Ci0gIEVYUEVDVF9FUSgiZm9vIiwgdmlkZW9fc2VuZF9zdHJlYW0uY25h
bWUpOwotCi0gIC8vIENyZWF0ZSB2aWRlbyByZWNlaXZlciBhbmQgY2FsbCBSZWNlaXZlLCBleHBl
Y3RpbmcgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVkCi0gIC8vIChtaW51cyB8Y25hbWV8LCBzaW5j
ZSB0aGF0J3MgdGhlIHNlbnQgY25hbWUsIG5vdCByZWNlaXZlZCkuCi0gIGF1dG8gcmVjZWl2ZXJf
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0
OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb190cmFuc3BvcnQuZ2V0KCkpOwotICBhdXRvIHZpZGVv
X3JlY2VpdmVyID0gcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRSgK
LSAgICAgIHZpZGVvX3JlY2VpdmVyLT5SZWNlaXZlKE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVyc1dp
dGhTc3JjKDB4ZGVhZGJlZWYpKQotICAgICAgICAgIC5vaygpKTsKLSAgRVhQRUNUX1RSVUUoZmFr
ZV92aWRlb19jaGFubmVsLT5yZWN2X3J0Y3BfcGFyYW1ldGVycygpLnJlZHVjZWRfc2l6ZSk7Ci0K
LSAgLy8gQ3JlYXRlIGF1ZGlvIHRyYW5zcG9ydCB3aXRoIG5vbi1yZWR1Y2VkIHNpemUgUlRDUC4K
LSAgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0IGZha2VfcGFja2V0X3RyYW5zcG9ydDIoIjIiKTsK
LSAgcGFyYW1ldGVycy5ydGNwLnJlZHVjZWRfc2l6ZSA9IGZhbHNlOwotICBwYXJhbWV0ZXJzLnJ0
Y3AuY25hbWUgPSAiYmFyIjsKLSAgcnRwX3RyYW5zcG9ydF9yZXN1bHQgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBwYXJhbWV0ZXJzLCAmZmFrZV9wYWNrZXRfdHJh
bnNwb3J0MiwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIGF1dG8gYXVkaW9fdHJhbnNwb3J0ID0gcnRw
X3RyYW5zcG9ydF9yZXN1bHQuTW92ZVZhbHVlKCk7Ci0KLSAgLy8gQ3JlYXRlIGF1ZGlvIHNlbmRl
ciBhbmQgY2FsbCBTZW5kLCBleHBlY3RpbmcgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVkLgotICBz
ZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1F
RElBX1RZUEVfQVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXVkaW9fdHJhbnNwb3J0LmdldCgpKTsKLSAgYXV0byBhdWRpb19zZW5kZXIgPSBz
ZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBFQ1RfVFJVRShhdWRpb19zZW5kZXItPlNl
bmQoTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVycygpKS5vaygpKTsKLQotICBjcmlja2V0OjpGYWtl
Vm9pY2VNZWRpYUNoYW5uZWwqIGZha2Vfdm9pY2VfY2hhbm5lbCA9Ci0gICAgICBmYWtlX21lZGlh
X2VuZ2luZV8tPkdldFZvaWNlQ2hhbm5lbCgwKTsKLSAgQVNTRVJUX05FKG51bGxwdHIsIGZha2Vf
dm9pY2VfY2hhbm5lbCk7Ci0gIEVYUEVDVF9GQUxTRShmYWtlX3ZvaWNlX2NoYW5uZWwtPnNlbmRf
cnRjcF9wYXJhbWV0ZXJzKCkucmVkdWNlZF9zaXplKTsKLSAgQVNTRVJUX0VRKDF1LCBmYWtlX3Zv
aWNlX2NoYW5uZWwtPnNlbmRfc3RyZWFtcygpLnNpemUoKSk7Ci0gIGNvbnN0IGNyaWNrZXQ6OlN0
cmVhbVBhcmFtcyYgYXVkaW9fc2VuZF9zdHJlYW0gPQotICAgICAgZmFrZV92b2ljZV9jaGFubmVs
LT5zZW5kX3N0cmVhbXMoKVswXTsKLSAgRVhQRUNUX0VRKCJiYXIiLCBhdWRpb19zZW5kX3N0cmVh
bS5jbmFtZSk7Ci0KLSAgLy8gQ3JlYXRlIGF1ZGlvIHJlY2VpdmVyIGFuZCBjYWxsIFJlY2VpdmUs
IGV4cGVjdGluZyBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQKLSAgLy8gKG1pbnVzIHxjbmFtZXws
IHNpbmNlIHRoYXQncyB0aGUgc2VudCBjbmFtZSwgbm90IHJlY2VpdmVkKS4KLSAgcmVjZWl2ZXJf
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoY3JpY2tldDo6TUVESUFf
VFlQRV9BVURJTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXVkaW9fdHJhbnNwb3J0LmdldCgpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlciA9
IHJlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICBhdWRp
b19yZWNlaXZlci0+UmVjZWl2ZShNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aFNzcmMoMHhi
YWFkZjAwZCkpCi0gICAgICAgICAgLm9rKCkpOwotICBFWFBFQ1RfRkFMU0UoZmFrZV92b2ljZV9j
aGFubmVsLT5yZWN2X3J0Y3BfcGFyYW1ldGVycygpLnJlZHVjZWRfc2l6ZSk7Ci19Ci0KLS8vIFdo
ZW4gU2V0UGFyYW1ldGVycyBpcyBjYWxsZWQsIHRoZSBtb2RpZmllZCBwYXJhbWV0ZXJzIHNob3Vs
ZCBiZSBhcHBsaWVkCi0vLyB0byB0aGUgbWVkaWEgZW5naW5lLgotLy8gVE9ETyhkZWFkYmVlZik6
IE9uY2UgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGNoYW5naW5nIHRoZSBDTkFNRSwKLS8v
IHRlc3QgdGhhdCBoZXJlLgotVEVTVF9GKFJ0cFRyYW5zcG9ydFRlc3QsIFNldFJ0Y3BQYXJhbWV0
ZXJzQXBwbGllc1BhcmFtZXRlcnNUb01lZGlhRW5naW5lKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRy
YW5zcG9ydCBmYWtlX3BhY2tldF90cmFuc3BvcnQoImZha2UiKTsKLSAgUnRwVHJhbnNwb3J0UGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwotICBwYXJhbWV0ZXJzLnJ0Y3AubXV4ID0gdHJ1ZTsKLSAgcGFy
YW1ldGVycy5ydGNwLnJlZHVjZWRfc2l6ZSA9IGZhbHNlOwotICBhdXRvIHJ0cF90cmFuc3BvcnRf
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAotICAgICAgcGFyYW1l
dGVycywgJmZha2VfcGFja2V0X3RyYW5zcG9ydCwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gIGF1dG8g
cnRwX3RyYW5zcG9ydCA9IHJ0cF90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotCi0gIC8v
IENyZWF0ZSB2aWRlbyBzZW5kZXIgYW5kIGNhbGwgU2VuZCwgYXBwbHlpbmcgYW4gaW5pdGlhbCBz
ZXQgb2YgcGFyYW1ldGVycy4KLSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+
Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBfdHJhbnNwb3J0Lmdl
dCgpKTsKLSAgYXV0byBzZW5kZXIgPSBzZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICBFWFBF
Q1RfVFJVRShzZW5kZXItPlNlbmQoTWFrZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCkpLm9rKCkpOwot
Ci0gIC8vIE1vZGlmeSBwYXJhbWV0ZXJzIGFuZCBleHBlY3QgdGhlbSB0byBiZSBjaGFuZ2VkIGF0
IHRoZSBtZWRpYSBlbmdpbmUgbGV2ZWwuCi0gIHBhcmFtZXRlcnMucnRjcC5yZWR1Y2VkX3NpemUg
PSB0cnVlOwotICBFWFBFQ1RfVFJVRShydHBfdHJhbnNwb3J0LT5TZXRQYXJhbWV0ZXJzKHBhcmFt
ZXRlcnMpLm9rKCkpOwotCi0gIGNyaWNrZXQ6OkZha2VWaWRlb01lZGlhQ2hhbm5lbCogZmFrZV92
aWRlb19jaGFubmVsID0KLSAgICAgIGZha2VfbWVkaWFfZW5naW5lXy0+R2V0VmlkZW9DaGFubmVs
KDApOwotICBBU1NFUlRfTkUobnVsbHB0ciwgZmFrZV92aWRlb19jaGFubmVsKTsKLSAgRVhQRUNU
X1RSVUUoZmFrZV92aWRlb19jaGFubmVsLT5zZW5kX3J0Y3BfcGFyYW1ldGVycygpLnJlZHVjZWRf
c2l6ZSk7Ci19Ci0KLS8vIFNldFBhcmFtZXRlcnMgc2hvdWxkIHNldCBrZWVwYWxpdmUgZm9yIGFs
bCBSVFAgdHJhbnNwb3J0cy4KLS8vIEl0IGlzIGltcG9zc2libGUgdG8gbW9kaWZ5IGtlZXBhbGl2
ZSBwYXJhbWV0ZXJzIGlmIGFueSBzdHJlYW1zIGFyZSBjcmVhdGVkLgotLy8gTm90ZTogVGhpcyBp
cyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgZm9yIGN1cnJlbnQgd2F5IG9mIGNvbmZpZ3VyaW5n
IHRoZQotLy8ga2VlcC1hbGl2ZS4gSXQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgotVEVTVF9G
KFJ0cFRyYW5zcG9ydFRlc3QsIENhbnRDaGFuZ2VLZWVwQWxpdmVBZnRlckNyZWF0ZWRTZW5kU3Ry
ZWFtcykgewotICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgZmFrZV9wYWNrZXRfdHJhbnNwb3J0
KCJmYWtlIik7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgcGFyYW1l
dGVycy5rZWVwYWxpdmUudGltZW91dF9pbnRlcnZhbF9tcyA9IDEwMDsKLSAgYXV0byBydHBfdHJh
bnNwb3J0X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAg
IHBhcmFtZXRlcnMsICZmYWtlX3BhY2tldF90cmFuc3BvcnQsIG51bGxwdHIsIG51bGxwdHIpOwot
ICBBU1NFUlRfVFJVRShydHBfdHJhbnNwb3J0X3Jlc3VsdC5vaygpKTsKLSAgc3RkOjp1bmlxdWVf
cHRyPFJ0cFRyYW5zcG9ydEludGVyZmFjZT4gcnRwX3RyYW5zcG9ydCA9Ci0gICAgICBydHBfdHJh
bnNwb3J0X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAvLyBVcGRhdGluZyBrZWVwYWxpdmUgcGFy
YW1ldGVycyBpcyBvaywgc2luY2Ugbm8gcnRwIHNlbmRlciBjcmVhdGVkLgotICBwYXJhbWV0ZXJz
LmtlZXBhbGl2ZS50aW1lb3V0X2ludGVydmFsX21zID0gMjAwOwotICBFWFBFQ1RfVFJVRShydHBf
dHJhbnNwb3J0LT5TZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLm9rKCkpOwotCi0gIC8vIENyZWF0
ZSB2aWRlbyBzZW5kZXIuIE5vdGU6IHxzZW5kZXJfcmVzdWx0fCBzY29wZSBtdXN0IGV4dGVuZCBw
YXN0IHRoZQotICAvLyBTZXRQYXJhbWV0ZXJzKCkgY2FsbCBiZWxvdy4KLSAgYXV0byBzZW5kZXJf
cmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfVklERU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQRUNUX1RSVUUoc2VuZGVyX3Jlc3Vs
dC5vaygpKTsKLQotICAvLyBNb2RpZnkgcGFyYW1ldGVycyBzZWNvbmQgdGltZSBhZnRlciB2aWRl
byBzZW5kIHN0cmVhbSBjcmVhdGVkLgotICBwYXJhbWV0ZXJzLmtlZXBhbGl2ZS50aW1lb3V0X2lu
dGVydmFsX21zID0gMTA7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OklOVkFMSURfTU9ESUZJ
Q0FUSU9OLAotICAgICAgICAgICAgcnRwX3RyYW5zcG9ydC0+U2V0UGFyYW1ldGVycyhwYXJhbWV0
ZXJzKS50eXBlKCkpOwotfQotCi0vLyBOb3RlOiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRl
dGFpbCBmb3IgY3VycmVudCB3YXkgb2YgY29uZmlndXJpbmcgdGhlCi0vLyBrZWVwLWFsaXZlLiBJ
dCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuCi1URVNUX0YoUnRwVHJhbnNwb3J0VGVzdCwgS2Vl
cEFsaXZlTXVzdEJlU2FtZUFjcm9zc1RyYW5zcG9ydENvbnRyb2xsZXIpIHsKLSAgcnRjOjpGYWtl
UGFja2V0VHJhbnNwb3J0IGZha2VfcGFja2V0X3RyYW5zcG9ydCgiZmFrZSIpOwotICBSdHBUcmFu
c3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRlcnMua2VlcGFsaXZlLnRpbWVv
dXRfaW50ZXJ2YWxfbXMgPSAxMDA7Ci0KLSAgLy8gTWFudWFsbHkgY3JlYXRlIGEgY29udHJvbGxl
ciwgdGhhdCBjYW4gYmUgc2hhcmVkIGJ5IG11bHRpcGxlIHRyYW5zcG9ydHMuCi0gIGF1dG8gY29u
dHJvbGxlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnRDb250cm9s
bGVyKCk7Ci0gIEFTU0VSVF9UUlVFKGNvbnRyb2xsZXJfcmVzdWx0Lm9rKCkpOwotICBzdGQ6OnVu
aXF1ZV9wdHI8UnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4gY29udHJvbGxlciA9Ci0g
ICAgICBjb250cm9sbGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQotICAvLyBDcmVhdGUgYSBmaXJz
dCB0cmFuc3BvcnQuCi0gIGF1dG8gZmlyc3RfdHJhbnNwb3J0X3Jlc3VsdCA9IG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIHBhcmFtZXRlcnMsICZmYWtlX3BhY2tldF90
cmFuc3BvcnQsIG51bGxwdHIsIGNvbnRyb2xsZXIuZ2V0KCkpOwotICBBU1NFUlRfVFJVRShmaXJz
dF90cmFuc3BvcnRfcmVzdWx0Lm9rKCkpOwotCi0gIC8vIFVwZGF0ZSB0aGUgcGFyYW1ldGVycywg
YW5kIGNyZWF0ZSBhbm90aGVyIHRyYW5zcG9ydCBmb3IgdGhlIHNhbWUKLSAgLy8gY29udHJvbGxl
ci4KLSAgcGFyYW1ldGVycy5rZWVwYWxpdmUudGltZW91dF9pbnRlcnZhbF9tcyA9IDEwOwotICBh
dXRvIHNlY29uZHNfdHJhbnNwb3J0X3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFRy
YW5zcG9ydCgKLSAgICAgIHBhcmFtZXRlcnMsICZmYWtlX3BhY2tldF90cmFuc3BvcnQsIG51bGxw
dHIsIGNvbnRyb2xsZXIuZ2V0KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpJTlZBTElE
X01PRElGSUNBVElPTiwKLSAgICAgICAgICAgIHNlY29uZHNfdHJhbnNwb3J0X3Jlc3VsdC5lcnJv
cigpLnR5cGUoKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0
YWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29y
dGMvcnRwdHJhbnNwb3J0YWRhcHRlci5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODRjMmVmMDllNjZlZGRiOWFjNzg0YzM3MTYxMWRlNzIzZmVhN2FlMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGFkYXB0ZXIuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSwyMzAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHBy
b2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBn
cmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1
dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgIm9ydGMv
cnRwdHJhbnNwb3J0YWRhcHRlci5oIgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gRm9yIHN0
ZDo6ZmluZC4KLSNpbmNsdWRlIDxzZXQ+Ci0jaW5jbHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6
Om1vdmUuCi0KLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKLSNpbmNsdWRlICJhcGkv
cHJveHkuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSB3ZWJy
dGMgewotCi1CRUdJTl9PV05FRF9QUk9YWV9NQVAoUnRwVHJhbnNwb3J0KQotUFJPWFlfU0lHTkFM
SU5HX1RIUkVBRF9ERVNUUlVDVE9SKCkKLVBST1hZX0NPTlNUTUVUSE9EMChQYWNrZXRUcmFuc3Bv
cnRJbnRlcmZhY2UqLCBHZXRSdHBQYWNrZXRUcmFuc3BvcnQpCi1QUk9YWV9DT05TVE1FVEhPRDAo
UGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiwgR2V0UnRjcFBhY2tldFRyYW5zcG9ydCkKLVBST1hZ
X01FVEhPRDEoUlRDRXJyb3IsIFNldFBhcmFtZXRlcnMsIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFt
ZXRlcnMmKQotUFJPWFlfQ09OU1RNRVRIT0QwKFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMsIEdldFBh
cmFtZXRlcnMpCi1wcm90ZWN0ZWQ6Ci1SdHBUcmFuc3BvcnRBZGFwdGVyKiBHZXRJbnRlcm5hbCgp
IG92ZXJyaWRlIHsKLSAgcmV0dXJuIGludGVybmFsKCk7Ci19Ci1FTkRfUFJPWFlfTUFQKCkKLQot
QkVHSU5fT1dORURfUFJPWFlfTUFQKFNydHBUcmFuc3BvcnQpCi1QUk9YWV9TSUdOQUxJTkdfVEhS
RUFEX0RFU1RSVUNUT1IoKQotUFJPWFlfQ09OU1RNRVRIT0QwKFBhY2tldFRyYW5zcG9ydEludGVy
ZmFjZSosIEdldFJ0cFBhY2tldFRyYW5zcG9ydCkKLVBST1hZX0NPTlNUTUVUSE9EMChQYWNrZXRU
cmFuc3BvcnRJbnRlcmZhY2UqLCBHZXRSdGNwUGFja2V0VHJhbnNwb3J0KQotUFJPWFlfTUVUSE9E
MShSVENFcnJvciwgU2V0UGFyYW1ldGVycywgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYp
Ci1QUk9YWV9DT05TVE1FVEhPRDAoUnRwVHJhbnNwb3J0UGFyYW1ldGVycywgR2V0UGFyYW1ldGVy
cykKLVBST1hZX01FVEhPRDEoUlRDRXJyb3IsIFNldFNydHBTZW5kS2V5LCBjb25zdCBjcmlja2V0
OjpDcnlwdG9QYXJhbXMmKQotUFJPWFlfTUVUSE9EMShSVENFcnJvciwgU2V0U3J0cFJlY2VpdmVL
ZXksIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1BhcmFtcyYpCi1wcm90ZWN0ZWQ6Ci1SdHBUcmFuc3Bv
cnRBZGFwdGVyKiBHZXRJbnRlcm5hbCgpIG92ZXJyaWRlIHsKLSAgcmV0dXJuIGludGVybmFsKCk7
Ci19Ci1FTkRfUFJPWFlfTUFQKCkKLQotLy8gc3RhdGljCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVl
X3B0cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2U+PgotUnRwVHJhbnNwb3J0QWRhcHRlcjo6Q3JlYXRl
UHJveGllZCgKLSAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAot
ICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAotICAgIFBhY2tldFRyYW5zcG9ydElu
dGVyZmFjZSogcnRjcCwKLSAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogcnRwX3Ry
YW5zcG9ydF9jb250cm9sbGVyKSB7Ci0gIGlmICghcnRwKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5f
RVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAiTXVzdCBwcm92aWRlIGFuIFJUUCBwYWNrZXQgdHJhbnNwb3J0LiIpOwotICB9Ci0g
IGlmICghcGFyYW1ldGVycy5ydGNwLm11eCAmJiAhcnRjcCkgewotICAgIExPR19BTkRfUkVUVVJO
X0VSUk9SKAotICAgICAgICBSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1FVEVSLAotICAgICAg
ICAiTXVzdCBwcm92aWRlIGFuIFJUQ1AgcGFja2V0IHRyYW5zcG9ydCB3aGVuIFJUQ1AgbXV4aW5n
IGlzIG5vdCB1c2VkLiIpOwotICB9Ci0gIGlmIChwYXJhbWV0ZXJzLnJ0Y3AubXV4ICYmIHJ0Y3Ap
IHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFSQU1F
VEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGluZyBhbiBSdHBUcmFuc3BvcnQg
d2l0aCBSVENQIG11eGluZyBlbmFibGVkLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIndp
dGggYSBzZXBhcmF0ZSBSVENQIHBhY2tldCB0cmFuc3BvcnQ/Iik7Ci0gIH0KLSAgaWYgKCFydHBf
dHJhbnNwb3J0X2NvbnRyb2xsZXIpIHsKLSAgICAvLyBTaW5jZSBPcnRjRmFjdG9yeTo6Q3JlYXRl
UnRwVHJhbnNwb3J0IGNyZWF0ZXMgYW4gUnRwVHJhbnNwb3J0Q29udHJvbGxlcgotICAgIC8vIGF1
dG9tYXRpY2FsbHkgd2hlbiBvbmUgaXNuJ3QgcGFzc2VkIGluLCB0aGlzIHNob3VsZCBuZXZlciBi
ZSByZWFjaGVkLgotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJS
T1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiTXVzdCBwcm92aWRlIGFuIFJUUCB0cmFuc3BvcnQgY29udHJvbGxlci4iKTsKLSAgfQot
ICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0QWRhcHRlcj4gdHJhbnNwb3J0X2FkYXB0ZXIo
Ci0gICAgICBuZXcgUnRwVHJhbnNwb3J0QWRhcHRlcihwYXJhbWV0ZXJzLnJ0Y3AsIHJ0cCwgcnRj
cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qaXNfc3J0cF90cmFuc3Bv
cnQqLykpOwotICBSVENFcnJvciBwYXJhbXNfcmVzdWx0ID0gdHJhbnNwb3J0X2FkYXB0ZXItPlNl
dFBhcmFtZXRlcnMocGFyYW1ldGVycyk7Ci0gIGlmICghcGFyYW1zX3Jlc3VsdC5vaygpKSB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bW92ZShwYXJhbXNfcmVzdWx0KTsKLSAgfQotCi0gIHJldHVybiBSdHBU
cmFuc3BvcnRQcm94eVdpdGhJbnRlcm5hbDxSdHBUcmFuc3BvcnRBZGFwdGVyPjo6Q3JlYXRlKAot
ICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyLT5zaWduYWxpbmdfdGhyZWFkKCksCi0gICAg
ICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXItPndvcmtlcl90aHJlYWQoKSwgc3RkOjptb3ZlKHRy
YW5zcG9ydF9hZGFwdGVyKSk7Ci19Ci0KLVJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFNydHBU
cmFuc3BvcnRJbnRlcmZhY2U+PgotUnRwVHJhbnNwb3J0QWRhcHRlcjo6Q3JlYXRlU3J0cFByb3hp
ZWQoCi0gICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywKLSAgICBQ
YWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZh
Y2UqIHJ0Y3AsCi0gICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90cmFuc3Bv
cnRfY29udHJvbGxlcikgewotICBpZiAoIXJ0cCkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9S
KFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIk11c3QgcHJvdmlkZSBhbiBSVFAgcGFja2V0IHRyYW5zcG9ydC4iKTsKLSAgfQotICBpZiAo
IXBhcmFtZXRlcnMucnRjcC5tdXggJiYgIXJ0Y3ApIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJP
UigKLSAgICAgICAgUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKLSAgICAgICAgIk11
c3QgcHJvdmlkZSBhbiBSVENQIHBhY2tldCB0cmFuc3BvcnQgd2hlbiBSVENQIG11eGluZyBpcyBu
b3QgdXNlZC4iKTsKLSAgfQotICBpZiAocGFyYW1ldGVycy5ydGNwLm11eCAmJiBydGNwKSB7Ci0g
ICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRpbmcgYW4gUnRwVHJhbnNwb3J0IHdpdGgg
UlRDUCBtdXhpbmcgZW5hYmxlZCwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIGEg
c2VwYXJhdGUgUlRDUCBwYWNrZXQgdHJhbnNwb3J0PyIpOwotICB9Ci0gIGlmICghcnRwX3RyYW5z
cG9ydF9jb250cm9sbGVyKSB7Ci0gICAgLy8gU2luY2UgT3J0Y0ZhY3Rvcnk6OkNyZWF0ZVJ0cFRy
YW5zcG9ydCBjcmVhdGVzIGFuIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXIKLSAgICAvLyBhdXRvbWF0
aWNhbGx5IHdoZW4gb25lIGlzbid0IHBhc3NlZCBpbiwgdGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVh
Y2hlZC4KLSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJU
Q0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
Ik11c3QgcHJvdmlkZSBhbiBSVFAgdHJhbnNwb3J0IGNvbnRyb2xsZXIuIik7Ci0gIH0KLQotICBz
dGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0QWRhcHRlcj4gdHJhbnNwb3J0X2FkYXB0ZXI7Ci0g
IHRyYW5zcG9ydF9hZGFwdGVyLnJlc2V0KG5ldyBSdHBUcmFuc3BvcnRBZGFwdGVyKHBhcmFtZXRl
cnMucnRjcCwgcnRwLCBydGNwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgLyppc19zcnRwX3RyYW5zcG9y
dCovKSk7Ci0gIFJUQ0Vycm9yIHBhcmFtc19yZXN1bHQgPSB0cmFuc3BvcnRfYWRhcHRlci0+U2V0
UGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKLSAgaWYgKCFwYXJhbXNfcmVzdWx0Lm9rKCkpIHsKLSAg
ICByZXR1cm4gc3RkOjptb3ZlKHBhcmFtc19yZXN1bHQpOwotICB9Ci0KLSAgcmV0dXJuIFNydHBU
cmFuc3BvcnRQcm94eVdpdGhJbnRlcm5hbDxSdHBUcmFuc3BvcnRBZGFwdGVyPjo6Q3JlYXRlKAot
ICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyLT5zaWduYWxpbmdfdGhyZWFkKCksCi0gICAg
ICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXItPndvcmtlcl90aHJlYWQoKSwgc3RkOjptb3ZlKHRy
YW5zcG9ydF9hZGFwdGVyKSk7Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0QWRhcHRlcjo6VGFrZU93
bmVyc2hpcE9mUnRwVHJhbnNwb3J0Q29udHJvbGxlcigKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRw
VHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZT4gY29udHJvbGxlcikgewotICBSVENfRENIRUNL
X0VRKHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8sIGNvbnRyb2xsZXItPkdldEludGVybmFsKCkp
OwotICBSVENfRENIRUNLKG93bmVkX3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl8uZ2V0KCkgPT0g
bnVsbHB0cik7Ci0gIG93bmVkX3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl8gPSBzdGQ6Om1vdmUo
Y29udHJvbGxlcik7Ci19Ci0KLVJ0cFRyYW5zcG9ydEFkYXB0ZXI6OlJ0cFRyYW5zcG9ydEFkYXB0
ZXIoCi0gICAgY29uc3QgUnRjcFBhcmFtZXRlcnMmIHJ0Y3BfcGFyYW1zLAotICAgIFBhY2tldFRy
YW5zcG9ydEludGVyZmFjZSogcnRwLAotICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRj
cCwKLSAgICBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciogcnRwX3RyYW5zcG9ydF9jb250
cm9sbGVyLAotICAgIGJvb2wgaXNfc3J0cF90cmFuc3BvcnQpCi0gICAgOiBydHBfcGFja2V0X3Ry
YW5zcG9ydF8ocnRwKSwKLSAgICAgIHJ0Y3BfcGFja2V0X3RyYW5zcG9ydF8ocnRjcCksCi0gICAg
ICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfKHJ0cF90cmFuc3BvcnRfY29udHJvbGxlciksCi0g
ICAgICBuZXR3b3JrX3RocmVhZF8ocnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+bmV0d29ya190
aHJlYWQoKSkgewotICBwYXJhbWV0ZXJzXy5ydGNwID0gcnRjcF9wYXJhbXM7Ci0gIC8vIENOQU1F
IHNob3VsZCBoYXZlIGJlZW4gZmlsbGVkIGJ5IE9ydGNGYWN0b3J5IGlmIGVtcHR5LgotICBSVENf
RENIRUNLKCFwYXJhbWV0ZXJzXy5ydGNwLmNuYW1lLmVtcHR5KCkpOwotICBSVENfRENIRUNLKHJ0
cF90cmFuc3BvcnRfY29udHJvbGxlcik7Ci0KLSAgaWYgKGlzX3NydHBfdHJhbnNwb3J0KSB7Ci0g
ICAgc3J0cF90cmFuc3BvcnRfID0gYWJzbDo6bWFrZV91bmlxdWU8U3J0cFRyYW5zcG9ydD4ocnRj
cCA9PSBudWxscHRyKTsKLSAgICB0cmFuc3BvcnRfID0gc3J0cF90cmFuc3BvcnRfLmdldCgpOwot
ICB9IGVsc2UgewotICAgIHVuZW5jcnlwdGVkX3J0cF90cmFuc3BvcnRfID0KLSAgICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8UnRwVHJhbnNwb3J0PihydGNwID09IG51bGxwdHIpOwotICAgIHRyYW5z
cG9ydF8gPSB1bmVuY3J5cHRlZF9ydHBfdHJhbnNwb3J0Xy5nZXQoKTsKLSAgfQotICBSVENfRENI
RUNLKHRyYW5zcG9ydF8pOwotCi0gIG5ldHdvcmtfdGhyZWFkXy0+SW52b2tlPHZvaWQ+KFJUQ19G
Uk9NX0hFUkUsIFs9XSB7Ci0gICAgU2V0UnRwUGFja2V0VHJhbnNwb3J0KHJ0cC0+R2V0SW50ZXJu
YWwoKSk7Ci0gICAgaWYgKHJ0Y3ApIHsKLSAgICAgIFNldFJ0Y3BQYWNrZXRUcmFuc3BvcnQocnRj
cC0+R2V0SW50ZXJuYWwoKSk7Ci0gICAgfQotICB9KTsKLQotICB0cmFuc3BvcnRfLT5TaWduYWxS
ZWFkeVRvU2VuZC5jb25uZWN0KHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJlJ0cFRyYW5zcG9ydEFkYXB0ZXI6Ok9uUmVhZHlUb1NlbmQpOwotICB0cmFuc3Bv
cnRfLT5TaWduYWxSdGNwUGFja2V0UmVjZWl2ZWQuY29ubmVjdCgKLSAgICAgIHRoaXMsICZSdHBU
cmFuc3BvcnRBZGFwdGVyOjpPblJ0Y3BQYWNrZXRSZWNlaXZlZCk7Ci0gIHRyYW5zcG9ydF8tPlNp
Z25hbFdyaXRhYmxlU3RhdGUuY29ubmVjdCgKLSAgICAgIHRoaXMsICZSdHBUcmFuc3BvcnRBZGFw
dGVyOjpPbldyaXRhYmxlU3RhdGUpOwotfQotCi1SdHBUcmFuc3BvcnRBZGFwdGVyOjp+UnRwVHJh
bnNwb3J0QWRhcHRlcigpIHsKLSAgU2lnbmFsRGVzdHJveWVkKHRoaXMpOwotfQotCi1SVENFcnJv
ciBSdHBUcmFuc3BvcnRBZGFwdGVyOjpTZXRQYXJhbWV0ZXJzKAotICAgIGNvbnN0IFJ0cFRyYW5z
cG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIHsKLSAgaWYgKCFwYXJhbWV0ZXJzLnJ0Y3AubXV4
ICYmIHBhcmFtZXRlcnNfLnJ0Y3AubXV4KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1Iod2Vi
cnRjOjpSVENFcnJvclR5cGU6OklOVkFMSURfU1RBVEUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIkNhbid0IGRpc2FibGUgUlRDUCBtdXhpbmcgYWZ0ZXIgZW5hYmxpbmcuIik7Ci0gIH0KLSAg
aWYgKCFwYXJhbWV0ZXJzLnJ0Y3AuY25hbWUuZW1wdHkoKSAmJgotICAgICAgcGFyYW1ldGVycy5y
dGNwLmNuYW1lICE9IHBhcmFtZXRlcnNfLnJ0Y3AuY25hbWUpIHsKLSAgICBMT0dfQU5EX1JFVFVS
Tl9FUlJPUih3ZWJydGM6OlJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICJDaGFuZ2luZyB0aGUgUlRDUCBDTkFNRSBpcyBjdXJyZW50
bHkgdW5zdXBwb3J0ZWQuIik7Ci0gIH0KLSAgLy8gSWYgdGhlIENOQU1FIGlzIGVtcHR5LCB1c2Ug
dGhlIGV4aXN0aW5nIG9uZS4KLSAgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyBjb3B5ID0gcGFyYW1l
dGVyczsKLSAgaWYgKGNvcHkucnRjcC5jbmFtZS5lbXB0eSgpKSB7Ci0gICAgY29weS5ydGNwLmNu
YW1lID0gcGFyYW1ldGVyc18ucnRjcC5jbmFtZTsKLSAgfQotICBSVENFcnJvciBlcnIgPQotICAg
ICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy0+U2V0UnRwVHJhbnNwb3J0UGFyYW1ldGVycyhj
b3B5LCB0aGlzKTsKLSAgaWYgKCFlcnIub2soKSkgewotICAgIHJldHVybiBlcnI7Ci0gIH0KLSAg
cGFyYW1ldGVyc18gPSBjb3B5OwotICBpZiAocGFyYW1ldGVyc18ucnRjcC5tdXgpIHsKLSAgICBy
dGNwX3BhY2tldF90cmFuc3BvcnRfID0gbnVsbHB0cjsKLSAgfQotICByZXR1cm4gUlRDRXJyb3I6
Ok9LKCk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5zcG9ydEFkYXB0ZXI6OlNldFNydHBTZW5kS2V5
KAotICAgIGNvbnN0IGNyaWNrZXQ6OkNyeXB0b1BhcmFtcyYgcGFyYW1zKSB7Ci0gIGlmICghbmV0
d29ya190aHJlYWRfLT5Jc0N1cnJlbnQoKSkgewotICAgIHJldHVybiBuZXR3b3JrX3RocmVhZF8t
Pkludm9rZTxSVENFcnJvcj4oCi0gICAgICAgIFJUQ19GUk9NX0hFUkUsIFsmXSB7IHJldHVybiBT
ZXRTcnRwU2VuZEtleShwYXJhbXMpOyB9KTsKLSAgfQotICByZXR1cm4gdHJhbnNwb3J0Xy0+U2V0
U3J0cFNlbmRLZXkocGFyYW1zKTsKLX0KLQotUlRDRXJyb3IgUnRwVHJhbnNwb3J0QWRhcHRlcjo6
U2V0U3J0cFJlY2VpdmVLZXkoCi0gICAgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1zJiBwYXJh
bXMpIHsKLSAgaWYgKCFuZXR3b3JrX3RocmVhZF8tPklzQ3VycmVudCgpKSB7Ci0gICAgcmV0dXJu
IG5ldHdvcmtfdGhyZWFkXy0+SW52b2tlPFJUQ0Vycm9yPigKLSAgICAgICAgUlRDX0ZST01fSEVS
RSwgWyZdIHsgcmV0dXJuIFNldFNydHBSZWNlaXZlS2V5KHBhcmFtcyk7IH0pOwotICB9Ci0gIHJl
dHVybiB0cmFuc3BvcnRfLT5TZXRTcnRwUmVjZWl2ZUtleShwYXJhbXMpOwotfQotCi19ICAvLyBu
YW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGFkYXB0ZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0YWRhcHRlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTkxNGY2YjhkMWI0NzVmNzViMDQ4NTU5NWEx
OGE3ZjE2NDFhNTQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvcnRwdHJh
bnNwb3J0YWRhcHRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiAg
Q29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgotICovCi0KLSNpZm5kZWYgT1JUQ19SVFBUUkFOU1BPUlRBREFQVEVSX0hfCi0jZGVmaW5l
IE9SVENfUlRQVFJBTlNQT1JUQURBUFRFUl9IXwotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1
ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImFwaS9ydGNlcnJvci5oIgotI2luY2x1ZGUgIm1lZGlh
L2Jhc2Uvc3RyZWFtcGFyYW1zLmgiCi0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRjb250cm9s
bGVyYWRhcHRlci5oIgotI2luY2x1ZGUgInBjL2NoYW5uZWwuaCIKLSNpbmNsdWRlICJwYy9ydHB0
cmFuc3BvcnRpbnRlcm5hbGFkYXB0ZXIuaCIKLSNpbmNsdWRlICJwYy9zcnRwdHJhbnNwb3J0Lmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsK
LS8vIFRoaXMgY2xhc3MgaXMgYSB3cmFwcGVyIG92ZXIgYW4gUnRwVHJhbnNwb3J0IG9yIGFuIFNy
dHBUcmFuc3BvcnQuIFRoZSBiYXNlCi0vLyBjbGFzcyBSdHBUcmFuc3BvcnRJbnRlcm5hbEFkYXB0
ZXIga2VlcHMgYSByYXcgcG9pbnRlciwgfHRyYW5zcG9ydF98LCBvZiB0aGUKLS8vIHRyYW5zcG9y
dCBvYmplY3QgYW5kIGltcGxlbWVudHMgYm90aCB0aGUgcHVibGljIFNydHBUcmFuc3BvcnRJbnRl
cmZhY2UgYW5kCi0vLyBSdHBUcmFuc3BvcnQgaW50ZXJuYWwgaW50ZXJmYWNlIGJ5IGNhbGxpbmcg
dGhlIHx0cmFuc3BvcnRffCB1bmRlcm5lYXRoLgotLy8KLS8vIFRoaXMgYWRhcHRlciBjYW4gYmUg
dXNlZCBhcyBhbiB1bmVuY3J5cHRlZCBSVFAgdHJhbnNwb3J0IG9yIGFuIFNydHBUcmFuc3BvcnQK
LS8vIHdpdGggUnRwU2VuZGVyQWRhcHRlciwgUnRwUmVjZWl2ZXJBZGFwdGVyLCBhbmQgUnRwVHJh
bnNwb3J0Q29udHJvbGxlckFkYXB0ZXIuCi0vLwotLy8gVE9ETyhkZWFkYmVlZik6IFdoZW4gQmFz
ZUNoYW5uZWwgaXMgc3BsaXQgYXBhcnQgaW50byBzZXBhcmF0ZQotLy8gIlJ0cFRyYW5zcG9ydCIv
IlJ0cFRyYW5zY2VpdmVyIi8iUnRwU2VuZGVyIi8iUnRwUmVjZWl2ZXIiIG9iamVjdHMsIHRoaXMK
LS8vIGFkYXB0ZXIgb2JqZWN0IGNhbiBiZSByZW1vdmVkLgotY2xhc3MgUnRwVHJhbnNwb3J0QWRh
cHRlciA6IHB1YmxpYyBSdHBUcmFuc3BvcnRJbnRlcm5hbEFkYXB0ZXIgewotIHB1YmxpYzoKLSAg
Ly8gfHJ0cHwgY2FuJ3QgYmUgbnVsbC4gfHJ0Y3B8IGNhbiBpZiBSVENQIG11eGluZyBpcyB1c2Vk
IGltbWVkaWF0ZWx5IChtZWFuaW5nCi0gIC8vIHxydGNwX3BhcmFtZXRlcnMubXV4fCBpcyBhbHNv
IHRydWUpLgotICBzdGF0aWMgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0
SW50ZXJmYWNlPj4gQ3JlYXRlUHJveGllZCgKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFt
ZXRlcnMmIHJ0Y3BfcGFyYW1ldGVycywKLSAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSog
cnRwLAotICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydGNwLAotICAgICAgUnRwVHJh
bnNwb3J0Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcik7Ci0KLSAg
c3RhdGljIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFNydHBUcmFuc3BvcnRJbnRlcmZhY2U+
PiBDcmVhdGVTcnRwUHJveGllZCgKLSAgICAgIGNvbnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMm
IHJ0Y3BfcGFyYW1ldGVycywKLSAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRwLAot
ICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydGNwLAotICAgICAgUnRwVHJhbnNwb3J0
Q29udHJvbGxlckFkYXB0ZXIqIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcik7Ci0KLSAgflJ0cFRy
YW5zcG9ydEFkYXB0ZXIoKSBvdmVycmlkZTsKLQotICAvLyBSdHBUcmFuc3BvcnRJbnRlcmZhY2Ug
aW1wbGVtZW50YXRpb24uCi0gIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogR2V0UnRwUGFja2V0
VHJhbnNwb3J0KCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIHJldHVybiBydHBfcGFja2V0X3RyYW5z
cG9ydF87Ci0gIH0KLSAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBHZXRSdGNwUGFja2V0VHJh
bnNwb3J0KCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIHJldHVybiBydGNwX3BhY2tldF90cmFuc3Bv
cnRfOwotICB9Ci0gIFJUQ0Vycm9yIFNldFBhcmFtZXRlcnMoY29uc3QgUnRwVHJhbnNwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycykgb3ZlcnJpZGU7Ci0gIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMg
R2V0UGFyYW1ldGVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHBhcmFtZXRlcnNfOyB9Ci0K
LSAgLy8gU1JUUCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KLSAgUlRDRXJyb3IgU2V0U3J0cFNl
bmRLZXkoY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1zJiBwYXJhbXMpIG92ZXJyaWRlOwotICBS
VENFcnJvciBTZXRTcnRwUmVjZWl2ZUtleShjb25zdCBjcmlja2V0OjpDcnlwdG9QYXJhbXMmIHBh
cmFtcykgb3ZlcnJpZGU7Ci0KLSAgLy8gTWV0aG9kcyB1c2VkIGludGVybmFsbHkgYnkgT3J0Y0Zh
Y3RvcnkuCi0gIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKiBydHBfdHJhbnNwb3J0X2Nv
bnRyb2xsZXIoKSB7Ci0gICAgcmV0dXJuIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl87Ci0gIH0K
LSAgdm9pZCBUYWtlT3duZXJzaGlwT2ZSdHBUcmFuc3BvcnRDb250cm9sbGVyKAotICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+IGNvbnRyb2xsZXIp
OwotCi0gIC8vIFVzZWQgYnkgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIgdG8gdGVsbCB3
aGVuIGl0IHNob3VsZCBzdG9wCi0gIC8vIHJldHVybmluZyB0aGlzIHRyYW5zcG9ydCBmcm9tIEdl
dFRyYW5zcG9ydHMoKS4KLSAgc2lnc2xvdDo6c2lnbmFsMTxSdHBUcmFuc3BvcnRBZGFwdGVyKj4g
U2lnbmFsRGVzdHJveWVkOwotCi0gIGJvb2wgSXNTcnRwQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJhbnNwb3J0Xy0+SXNTcnRwQWN0aXZlKCk7IH0KLQotIHByb3RlY3RlZDoKLSAg
UnRwVHJhbnNwb3J0QWRhcHRlciogR2V0SW50ZXJuYWwoKSBvdmVycmlkZSB7IHJldHVybiB0aGlz
OyB9Ci0KLSBwcml2YXRlOgotICBSdHBUcmFuc3BvcnRBZGFwdGVyKGNvbnN0IFJ0Y3BQYXJhbWV0
ZXJzJiBydGNwX3BhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICBQYWNrZXRUcmFuc3BvcnRJ
bnRlcmZhY2UqIHJ0cCwKLSAgICAgICAgICAgICAgICAgICAgICBQYWNrZXRUcmFuc3BvcnRJbnRl
cmZhY2UqIHJ0Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxl
ckFkYXB0ZXIqIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlciwKLSAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzX3NydHBfdHJhbnNwb3J0KTsKLQotICB2b2lkIE9uUmVhZHlUb1NlbmQoYm9vbCBy
ZWFkeSkgeyBTaWduYWxSZWFkeVRvU2VuZChyZWFkeSk7IH0KLQotICB2b2lkIE9uUnRjcFBhY2tl
dFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHRpbWUpIHsKLSAgICBTaWduYWxS
dGNwUGFja2V0UmVjZWl2ZWQocGFja2V0LCB0aW1lKTsKLSAgfQotCi0gIHZvaWQgT25Xcml0YWJs
ZVN0YXRlKGJvb2wgd3JpdGFibGUpIHsgU2lnbmFsV3JpdGFibGVTdGF0ZSh3cml0YWJsZSk7IH0K
LQotICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cF9wYWNrZXRfdHJhbnNwb3J0XyA9IG51
bGxwdHI7Ci0gIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcF9wYWNrZXRfdHJhbnNwb3J0
XyA9IG51bGxwdHI7Ci0gIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKiBjb25zdCBydHBf
dHJhbnNwb3J0X2NvbnRyb2xsZXJfID0gbnVsbHB0cjsKLSAgLy8gTm9uLW51bGwgaWYgdGhpcyBj
bGFzcyBvd25zIHRoZSB0cmFuc3BvcnQgY29udHJvbGxlci4KLSAgc3RkOjp1bmlxdWVfcHRyPFJ0
cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+Ci0gICAgICBvd25lZF9ydHBfdHJhbnNwb3J0
X2NvbnRyb2xsZXJfOwotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnNfOwotCi0g
IC8vIE9ubHkgb25lIG9mIHRoZW0gaXMgbm9uLW51bGw7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBU
cmFuc3BvcnQ+IHVuZW5jcnlwdGVkX3J0cF90cmFuc3BvcnRfOwotICBzdGQ6OnVuaXF1ZV9wdHI8
U3J0cFRyYW5zcG9ydD4gc3J0cF90cmFuc3BvcnRfOwotCi0gIHJ0Yzo6VGhyZWFkKiBuZXR3b3Jr
X3RocmVhZF8gPSBudWxscHRyOwotCi0gIFJUQ19ESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RP
UlMoUnRwVHJhbnNwb3J0QWRhcHRlcik7Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0K
LSNlbmRpZiAgLy8gT1JUQ19SVFBUUkFOU1BPUlRBREFQVEVSX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGNv
bnRyb2xsZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJfdW5pdHRlc3QuY2MKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NTQ4NDE3ZWU3Y2Y2N2Y0Mjk3ZGY3N2E4N2M2YjBmNzdm
Mzk3YzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRj
b250cm9sbGVyX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTk5ICswLDAgQEAKLS8q
Ci0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhcGkvYXVk
aW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAiYXBp
L2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUg
Im1lZGlhL2Jhc2UvZmFrZW1lZGlhZW5naW5lLmgiCi0jaW5jbHVkZSAib3J0Yy9vcnRjZmFjdG9y
eS5oIgotI2luY2x1ZGUgIm9ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJwMnAv
YmFzZS9mYWtlcGFja2V0dHJhbnNwb3J0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIK
LQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIFRoaXMgdGVzdCB1c2VzIGZha2UgcGFja2V0IHRy
YW5zcG9ydHMgYW5kIGEgZmFrZSBtZWRpYSBlbmdpbmUsIGluIG9yZGVyIHRvCi0vLyB0ZXN0IHRo
ZSBSdHBUcmFuc3BvcnRDb250cm9sbGVyIGF0IG9ubHkgYW4gQVBJIGxldmVsLiBBbnkgZW5kLXRv
LWVuZCB0ZXN0Ci0vLyBzaG91bGQgZ28gaW4gb3J0Y2ZhY3RvcnlfaW50ZWdyYXRpb250ZXN0LmNj
IGluc3RlYWQuCi0vLwotLy8gQ3VycmVudGx5LCB0aGlzIHRlc3QgbWFpbmx5IGZvY3VzZXMgb24g
dGhlIGxpbWl0YXRpb25zIG9mIHRoZSAiYWRhcHRlciIKLS8vIFJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXIgaW1wbGVtZW50YXRpb24uIE9ubHkgb25lIG9mIGVhY2ggdHlwZSBvZgotLy8gc2VuZGVyL3Jl
Y2VpdmVyIGNhbiBiZSBjcmVhdGVkLCBhbmQgdGhlIHNlbmRlci9yZWNlaXZlciBvZiB0aGUgc2Ft
ZSBtZWRpYQotLy8gdHlwZSBtdXN0IHVzZSB0aGUgc2FtZSB0cmFuc3BvcnQuCi1jbGFzcyBSdHBU
cmFuc3BvcnRDb250cm9sbGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6
Ci0gIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0KCkgewotICAgIC8vIE5vdGU6IFRoaXMgZG9l
c24ndCBuZWVkIHRvIHVzZSBmYWtlIG5ldHdvcmsgY2xhc3Nlcywgc2luY2UgaXQgdXNlcwotICAg
IC8vIEZha2VQYWNrZXRUcmFuc3BvcnRzLgotICAgIGF1dG8gcmVzdWx0ID0gT3J0Y0ZhY3Rvcnk6
OkNyZWF0ZSgKLSAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJm
YWNlPigKLSAgICAgICAgICAgIG5ldyBjcmlja2V0OjpGYWtlTWVkaWFFbmdpbmUoKSksCi0gICAg
ICAgIENyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksIENyZWF0ZUJ1aWx0aW5BdWRp
b0RlY29kZXJGYWN0b3J5KCkpOwotICAgIG9ydGNfZmFjdG9yeV8gPSByZXN1bHQuTW92ZVZhbHVl
KCk7Ci0gICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXyA9Ci0gICAgICAgIG9ydGNfZmFjdG9y
eV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydENvbnRyb2xsZXIoKS5Nb3ZlVmFsdWUoKTsKLSAgfQotCi0g
cHJvdGVjdGVkOgotICBzdGQ6OnVuaXF1ZV9wdHI8T3J0Y0ZhY3RvcnlJbnRlcmZhY2U+IG9ydGNf
ZmFjdG9yeV87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9sbGVySW50ZXJm
YWNlPiBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfOwotfTsKLQotVEVTVF9GKFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJUZXN0LCBHZXRUcmFuc3BvcnRzKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5z
cG9ydCBwYWNrZXRfdHJhbnNwb3J0MSgib25lIik7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9y
dCBwYWNrZXRfdHJhbnNwb3J0MigidHdvIik7Ci0KLSAgYXV0byBydHBfdHJhbnNwb3J0X3Jlc3Vs
dDEgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAgICBNYWtlUnRjcE11
eFBhcmFtZXRlcnMoKSwgJnBhY2tldF90cmFuc3BvcnQxLCBudWxscHRyLAotICAgICAgcnRwX3Ry
YW5zcG9ydF9jb250cm9sbGVyXy5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKHJ0cF90cmFuc3BvcnRf
cmVzdWx0MS5vaygpKTsKLQotICBhdXRvIHJ0cF90cmFuc3BvcnRfcmVzdWx0MiA9IG9ydGNfZmFj
dG9yeV8tPkNyZWF0ZVJ0cFRyYW5zcG9ydCgKLSAgICAgIE1ha2VSdGNwTXV4UGFyYW1ldGVycygp
LCAmcGFja2V0X3RyYW5zcG9ydDIsIG51bGxwdHIsCi0gICAgICBydHBfdHJhbnNwb3J0X2NvbnRy
b2xsZXJfLmdldCgpKTsKLSAgQVNTRVJUX1RSVUUocnRwX3RyYW5zcG9ydF9yZXN1bHQyLm9rKCkp
OwotCi0gIGF1dG8gcmV0dXJuZWRfdHJhbnNwb3J0cyA9IHJ0cF90cmFuc3BvcnRfY29udHJvbGxl
cl8tPkdldFRyYW5zcG9ydHMoKTsKLSAgQVNTRVJUX0VRKDJ1LCByZXR1cm5lZF90cmFuc3BvcnRz
LnNpemUoKSk7Ci0gIEVYUEVDVF9FUShydHBfdHJhbnNwb3J0X3Jlc3VsdDEudmFsdWUoKS5nZXQo
KSwgcmV0dXJuZWRfdHJhbnNwb3J0c1swXSk7Ci0gIEVYUEVDVF9FUShydHBfdHJhbnNwb3J0X3Jl
c3VsdDIudmFsdWUoKS5nZXQoKSwgcmV0dXJuZWRfdHJhbnNwb3J0c1sxXSk7Ci0KLSAgLy8gSWYg
YSB0cmFuc3BvcnQgaXMgZGVsZXRlZCwgaXQgc2hvdWxkbid0IGJlIHJldHVybmVkIGFueSBtb3Jl
LgotICBydHBfdHJhbnNwb3J0X3Jlc3VsdDEuTW92ZVZhbHVlKCkucmVzZXQoKTsKLSAgcmV0dXJu
ZWRfdHJhbnNwb3J0cyA9IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldFRyYW5zcG9ydHMo
KTsKLSAgQVNTRVJUX0VRKDF1LCByZXR1cm5lZF90cmFuc3BvcnRzLnNpemUoKSk7Ci0gIEVYUEVD
VF9FUShydHBfdHJhbnNwb3J0X3Jlc3VsdDIudmFsdWUoKS5nZXQoKSwgcmV0dXJuZWRfdHJhbnNw
b3J0c1swXSk7Ci19Ci0KLS8vIENyZWF0ZSBSdHBTZW5kZXJzIGFuZCBSdHBSZWNlaXZlcnMgb24g
dG9wIG9mIFJ0cFRyYW5zcG9ydHMgY29udHJvbGxlZCBieSB0aGUKLS8vIHNhbWUgUnRwVHJhbnNw
b3J0Q29udHJvbGxlci4gQ3VycmVudGx5IG9ubHkgb25lIGVhY2ggb2YgYXVkaW8vdmlkZW8gaXMK
LS8vIHN1cHBvcnRlZC4KLVRFU1RfRihSdHBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgQXR0YWNo
TXVsdGlwbGVTZW5kZXJzQW5kUmVjZWl2ZXJzKSB7Ci0gIHJ0Yzo6RmFrZVBhY2tldFRyYW5zcG9y
dCBhdWRpb19wYWNrZXRfdHJhbnNwb3J0KCJhdWRpbyIpOwotICBydGM6OkZha2VQYWNrZXRUcmFu
c3BvcnQgdmlkZW9fcGFja2V0X3RyYW5zcG9ydCgidmlkZW8iKTsKLQotICBhdXRvIGF1ZGlvX3J0
cF90cmFuc3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0KAot
ICAgICAgTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCksICZhdWRpb19wYWNrZXRfdHJhbnNwb3J0LCBu
dWxscHRyLAotICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy5nZXQoKSk7Ci0gIEFTU0VS
VF9UUlVFKGF1ZGlvX3J0cF90cmFuc3BvcnRfcmVzdWx0Lm9rKCkpOwotICBhdXRvIGF1ZGlvX3J0
cF90cmFuc3BvcnQgPSBhdWRpb19ydHBfdHJhbnNwb3J0X3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLQot
ICBhdXRvIHZpZGVvX3J0cF90cmFuc3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRl
UnRwVHJhbnNwb3J0KAotICAgICAgTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCksICZ2aWRlb19wYWNr
ZXRfdHJhbnNwb3J0LCBudWxscHRyLAotICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy5n
ZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKHZpZGVvX3J0cF90cmFuc3BvcnRfcmVzdWx0Lm9rKCkpOwot
ICBhdXRvIHZpZGVvX3J0cF90cmFuc3BvcnQgPSB2aWRlb19ydHBfdHJhbnNwb3J0X3Jlc3VsdC5N
b3ZlVmFsdWUoKTsKLQotICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3Rvcnlf
LT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBhdWRp
b19ydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyX3Jlc3Vs
dC5vaygpKTsKLSAgYXV0byBhdWRpb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5D
cmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIGF1ZGlv
X3J0cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShhdWRpb19yZWNlaXZlcl9yZXN1
bHQub2soKSk7Ci0gIGF1dG8gdmlkZW9fc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNy
ZWF0ZVJ0cFNlbmRlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3J0
cF90cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXJfcmVzdWx0Lm9r
KCkpOwotICBhdXRvIHZpZGVvX3JlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0
ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgdmlkZW9fcnRw
X3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5v
aygpKTsKLQotICAvLyBOb3cgdGhhdCB3ZSBoYXZlIG9uZSBlYWNoIG9mIGF1ZGlvL3ZpZGVvIHNl
bmRlcnMvcmVjZWl2ZXJzLCB0cnlpbmcgdG8KLSAgLy8gY3JlYXRlIG1vcmUgb24gdG9wIG9mIHRo
ZSBzYW1lIGNvbnRyb2xsZXIgaXMgZXhwZWN0ZWQgdG8gZmFpbC4KLSAgLy8gVE9ETyhkZWFkYmVl
Zik6IFVwZGF0ZSB0aGlzIHRlc3Qgb25jZSBtdWx0aXBsZSBzZW5kZXJzL3JlY2VpdmVycyBvbiB0
b3Agb2YKLSAgLy8gdGhlIHNhbWUgY29udHJvbGxlciBpcyBzdXBwb3J0ZWQuCi0gIGF1dG8gZmFp
bGVkX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAg
ICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBhdWRpb19ydHBfdHJhbnNwb3J0LmdldCgpKTsK
LSAgRVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAg
ICAgICAgZmFpbGVkX3NlbmRlcl9yZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotICBhdXRvIGZhaWxl
ZF9yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAg
ICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIGF1ZGlvX3J0cF90cmFuc3BvcnQuZ2V0KCkp
OwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAg
ICAgICAgICBmYWlsZWRfcmVjZWl2ZXJfcmVzdWx0LmVycm9yKCkudHlwZSgpKTsKLSAgZmFpbGVk
X3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5kZXIoCi0gICAgICBj
cmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb19ydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAg
RVhQRUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAg
ICAgZmFpbGVkX3NlbmRlcl9yZXN1bHQuZXJyb3IoKS50eXBlKCkpOwotICBmYWlsZWRfcmVjZWl2
ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlj
a2V0OjpNRURJQV9UWVBFX1ZJREVPLCB2aWRlb19ydHBfdHJhbnNwb3J0LmdldCgpKTsKLSAgRVhQ
RUNUX0VRKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAg
ZmFpbGVkX3JlY2VpdmVyX3Jlc3VsdC5lcnJvcigpLnR5cGUoKSk7Ci0KLSAgLy8gSWYgd2UgZGVz
dHJveSB0aGUgZXhpc3Rpbmcgc2VuZGVyL3JlY2VpdmVyIHVzaW5nIGEgdHJhbnNwb3J0IGNvbnRy
b2xsZXIsCi0gIC8vIHdlIHNob3VsZCBiZSBhYmxlIHRvIG1ha2UgYSBuZXcgb25lLCBkZXNwaXRl
IHRoZSBhYm92ZSBsaW1pdGF0aW9uLgotICBhdWRpb19zZW5kZXJfcmVzdWx0Lk1vdmVWYWx1ZSgp
LnJlc2V0KCk7Ci0gIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBTZW5kZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBhdWRpb19ydHBfdHJh
bnNwb3J0LmdldCgpKTsKLSAgRVhQRUNUX1RSVUUoYXVkaW9fc2VuZGVyX3Jlc3VsdC5vaygpKTsK
LSAgYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lk1vdmVWYWx1ZSgpLnJlc2V0KCk7Ci0gIGF1ZGlvX3Jl
Y2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAg
Y3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgYXVkaW9fcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0g
IEVYUEVDVF9UUlVFKGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLSAgdmlkZW9fc2VuZGVy
X3Jlc3VsdC5Nb3ZlVmFsdWUoKS5yZXNldCgpOwotICB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9W
SURFTywgdmlkZW9fcnRwX3RyYW5zcG9ydC5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3Nl
bmRlcl9yZXN1bHQub2soKSk7Ci0gIHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKS5y
ZXNldCgpOwotICB2aWRlb19yZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVS
dHBSZWNlaXZlcigKLSAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHZpZGVvX3J0cF90
cmFuc3BvcnQuZ2V0KCkpOwotICBFWFBFQ1RfVFJVRSh2aWRlb19yZWNlaXZlcl9yZXN1bHQub2so
KSk7Ci19Ci0KLS8vIEdpdmVuIHRoZSBjdXJyZW50IGxpbWl0YXRpb25zIG9mIHRoZSBCYXNlQ2hh
bm5lbC1iYXNlZCBpbXBsZW1lbnRhdGlvbiwgaXQncwotLy8gbm90IHBvc3NpYmxlIGZvciBhbiBh
dWRpbyBzZW5kZXIgYW5kIHJlY2VpdmVyIHRvIHVzZSBkaWZmZXJlbnQgUnRwVHJhbnNwb3J0cy4K
LS8vIFRPRE8oZGVhZGJlZWYpOiBPbmNlIHRoaXMgaXMgc3VwcG9ydGVkLCB1cGRhdGUvcmVwbGFj
ZSB0aGlzIHRlc3QuCi1URVNUX0YoUnRwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsCi0gICAgICAg
U2VuZGVyQW5kUmVjZWl2ZXJVc2luZ0RpZmZlcmVudFRyYW5zcG9ydHNVbnN1cHBvcnRlZCkgewot
ICBydGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcGFja2V0X3RyYW5zcG9ydDEoIm9uZSIpOwotICBy
dGM6OkZha2VQYWNrZXRUcmFuc3BvcnQgcGFja2V0X3RyYW5zcG9ydDIoInR3byIpOwotCi0gIGF1
dG8gcnRwX3RyYW5zcG9ydF9yZXN1bHQxID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwVHJhbnNw
b3J0KAotICAgICAgTWFrZVJ0Y3BNdXhQYXJhbWV0ZXJzKCksICZwYWNrZXRfdHJhbnNwb3J0MSwg
bnVsbHB0ciwKLSAgICAgIHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl8uZ2V0KCkpOwotICBBU1NF
UlRfVFJVRShydHBfdHJhbnNwb3J0X3Jlc3VsdDEub2soKSk7Ci0gIGF1dG8gcnRwX3RyYW5zcG9y
dDEgPSBydHBfdHJhbnNwb3J0X3Jlc3VsdDEuTW92ZVZhbHVlKCk7Ci0KLSAgYXV0byBydHBfdHJh
bnNwb3J0X3Jlc3VsdDIgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBUcmFuc3BvcnQoCi0gICAg
ICBNYWtlUnRjcE11eFBhcmFtZXRlcnMoKSwgJnBhY2tldF90cmFuc3BvcnQyLCBudWxscHRyLAot
ICAgICAgcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXy5nZXQoKSk7Ci0gIEFTU0VSVF9UUlVFKHJ0
cF90cmFuc3BvcnRfcmVzdWx0Mi5vaygpKTsKLSAgYXV0byBydHBfdHJhbnNwb3J0MiA9IHJ0cF90
cmFuc3BvcnRfcmVzdWx0Mi5Nb3ZlVmFsdWUoKTsKLQotICAvLyBDcmVhdGUgYW4gYXVkaW8gc2Vu
ZGVyIG9uIHRyYW5zcG9ydCAxLCB0aGVuIHRyeSB0byBjcmVhdGUgYSByZWNlaXZlciBvbiAyLgot
ICBhdXRvIGF1ZGlvX3NlbmRlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBTZW5k
ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0MS5nZXQo
KSk7Ci0gIEVYUEVDVF9UUlVFKGF1ZGlvX3NlbmRlcl9yZXN1bHQub2soKSk7Ci0gIGF1dG8gYXVk
aW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0g
ICAgICBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCBydHBfdHJhbnNwb3J0Mi5nZXQoKSk7Ci0g
IEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAg
ICAgIGF1ZGlvX3JlY2VpdmVyX3Jlc3VsdC5lcnJvcigpLnR5cGUoKSk7Ci0gIC8vIERlbGV0ZSB0
aGUgc2VuZGVyOyBub3cgd2Ugc2hvdWxkIGJlIG9rIHRvIGNyZWF0ZSB0aGUgcmVjZWl2ZXIgb24g
Mi4KLSAgYXVkaW9fc2VuZGVyX3Jlc3VsdC5Nb3ZlVmFsdWUoKS5yZXNldCgpOwotICBhdWRpb19y
ZWNlaXZlcl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAg
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHJ0cF90cmFuc3BvcnQyLmdldCgpKTsKLSAgRVhQ
RUNUX1RSVUUoYXVkaW9fcmVjZWl2ZXJfcmVzdWx0Lm9rKCkpOwotCi0gIC8vIERvIHRoZSBzYW1l
IHRoaW5nIGZvciB2aWRlbywgcmV2ZXJzaW5nIDEgYW5kIDIgKGZvciB2YXJpZXR5KS4KLSAgYXV0
byB2aWRlb19zZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKAot
ICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgcnRwX3RyYW5zcG9ydDIuZ2V0KCkpOwot
ICBFWFBFQ1RfVFJVRSh2aWRlb19zZW5kZXJfcmVzdWx0Lm9rKCkpOwotCi0gIGF1dG8gdmlkZW9f
cmVjZWl2ZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAg
ICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBydHBfdHJhbnNwb3J0MS5nZXQoKSk7Ci0gIEVY
UEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAg
IHZpZGVvX3JlY2VpdmVyX3Jlc3VsdC5lcnJvcigpLnR5cGUoKSk7Ci0gIHZpZGVvX3NlbmRlcl9y
ZXN1bHQuTW92ZVZhbHVlKCkucmVzZXQoKTsKLSAgdmlkZW9fcmVjZWl2ZXJfcmVzdWx0ID0gb3J0
Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwUmVjZWl2ZXIoCi0gICAgICBjcmlja2V0OjpNRURJQV9UWVBF
X1ZJREVPLCBydHBfdHJhbnNwb3J0MS5nZXQoKSk7Ci0gIEVYUEVDVF9UUlVFKHZpZGVvX3JlY2Vp
dmVyX3Jlc3VsdC5vaygpKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFu
c3BvcnRjb250cm9sbGVyYWRhcHRlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL29ydGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcmFkYXB0ZXIuY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiYjAzZWEzMjFmNTQ2NzM3ZWYzMWZkMzFlYWI4NjQ4
ZDVkMDA4ODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3Bv
cnRjb250cm9sbGVyYWRhcHRlci5jYworKysgL2Rldi9udWxsCkBAIC0xLDk3MSArMCwwIEBACi0v
KgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAib3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVy
YWRhcHRlci5oIgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gRm9yICJyZW1vdmUiLCAiZmlu
ZCIuCi0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+Ci0jaW5jbHVkZSA8
dXRpbGl0eT4gIC8vIEZvciBzdGQ6Om1vdmUuCi0KLSNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1v
cnkuaCIKLSNpbmNsdWRlICJhcGkvcHJveHkuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlh
Y29uc3RhbnRzLmgiCi0jaW5jbHVkZSAib3J0Yy9vcnRjcnRwcmVjZWl2ZXJhZGFwdGVyLmgiCi0j
aW5jbHVkZSAib3J0Yy9vcnRjcnRwc2VuZGVyYWRhcHRlci5oIgotI2luY2x1ZGUgIm9ydGMvcnRw
dHJhbnNwb3J0YWRhcHRlci5oIgotI2luY2x1ZGUgInBjL3J0cG1lZGlhdXRpbHMuaCIKLSNpbmNs
dWRlICJwYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKLQot
bmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIE5vdGU6IEl0J3MgYXNzdW1lZCB0aGF0IGVhY2ggaW5k
aXZpZHVhbCBsaXN0IGRvZXNuJ3QgaGF2ZSBjb25mbGljdHMsIHNpbmNlCi0vLyB0aGV5IHNob3Vs
ZCBoYXZlIGJlZW4gZGV0ZWN0ZWQgYWxyZWFkeSBieSBydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5j
Yy4gVGhpcwotLy8gb25seSBuZWVkcyB0byBkZXRlY3QgY29uZmxpY3RzICpiZXR3ZWVuKiBBIGFu
ZCBCLgotdGVtcGxhdGUgPHR5cGVuYW1lIEMxLCB0eXBlbmFtZSBDMj4KLXN0YXRpYyBSVENFcnJv
ciBDaGVja0ZvcklkQ29uZmxpY3RzKAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEMxPiYgY29kZWNz
X2EsCi0gICAgY29uc3QgY3JpY2tldDo6UnRwSGVhZGVyRXh0ZW5zaW9ucyYgZXh0ZW5zaW9uc19h
LAotICAgIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBhcmFtc1ZlYyYgc3RyZWFtc19hLAotICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPEMyPiYgY29kZWNzX2IsCi0gICAgY29uc3QgY3JpY2tldDo6UnRwSGVh
ZGVyRXh0ZW5zaW9ucyYgZXh0ZW5zaW9uc19iLAotICAgIGNvbnN0IGNyaWNrZXQ6OlN0cmVhbVBh
cmFtc1ZlYyYgc3RyZWFtc19iKSB7Ci0gIHJ0Yzo6U3RyaW5nQnVpbGRlciBvc3M7Ci0gIC8vIFNp
bmNlIGl0J3MgYXNzdW1lZCB0aGF0IEMxIGFuZCBDMiBhcmUgZGlmZmVyZW50IHR5cGVzLCBjb2Rl
Y3NfYSBhbmQKLSAgLy8gY29kZWNzX2Igc2hvdWxkIG5ldmVyIGNvbnRhaW4gdGhlIHNhbWUgcGF5
bG9hZCB0eXBlLCBhbmQgdGh1cyB3ZSBjYW4ganVzdAotICAvLyB1c2UgYSBzZXQuCi0gIHN0ZDo6
c2V0PGludD4gc2Vlbl9wYXlsb2FkX3R5cGVzOwotICBmb3IgKGNvbnN0IEMxJiBjb2RlYyA6IGNv
ZGVjc19hKSB7Ci0gICAgc2Vlbl9wYXlsb2FkX3R5cGVzLmluc2VydChjb2RlYy5pZCk7Ci0gIH0K
LSAgZm9yIChjb25zdCBDMiYgY29kZWMgOiBjb2RlY3NfYikgewotICAgIGlmICghc2Vlbl9wYXls
b2FkX3R5cGVzLmluc2VydChjb2RlYy5pZCkuc2Vjb25kKSB7Ci0gICAgICBvc3MgPDwgIlNhbWUg
cGF5bG9hZCB0eXBlIHVzZWQgZm9yIGF1ZGlvIGFuZCB2aWRlbyBjb2RlY3M6ICIgPDwgY29kZWMu
aWQ7Ci0gICAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURfUEFS
QU1FVEVSLCBvc3Muc3RyKCkpOwotICAgIH0KLSAgfQotICAvLyBBdWRpbyBhbmQgdmlkZW8gKm1h
eSogdXNlIHRoZSBzYW1lIGhlYWRlciBleHRlbnNpb25zLCBzbyB1c2UgYSBtYXAuCi0gIHN0ZDo6
dW5vcmRlcmVkX21hcDxpbnQsIHN0ZDo6c3RyaW5nPiBzZWVuX2V4dGVuc2lvbnM7Ci0gIGZvciAo
Y29uc3Qgd2VicnRjOjpSdHBFeHRlbnNpb24mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNfYSkgewot
ICAgIHNlZW5fZXh0ZW5zaW9uc1tleHRlbnNpb24uaWRdID0gZXh0ZW5zaW9uLnVyaTsKLSAgfQot
ICBmb3IgKGNvbnN0IHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uJiBleHRlbnNpb24gOiBleHRlbnNpb25z
X2IpIHsKLSAgICBpZiAoc2Vlbl9leHRlbnNpb25zLmZpbmQoZXh0ZW5zaW9uLmlkKSAhPSBzZWVu
X2V4dGVuc2lvbnMuZW5kKCkgJiYKLSAgICAgICAgc2Vlbl9leHRlbnNpb25zLmF0KGV4dGVuc2lv
bi5pZCkgIT0gZXh0ZW5zaW9uLnVyaSkgewotICAgICAgb3NzIDw8ICJTYW1lIElEIHVzZWQgZm9y
IGRpZmZlcmVudCBSVFAgaGVhZGVyIGV4dGVuc2lvbnM6ICIKLSAgICAgICAgICA8PCBleHRlbnNp
b24uaWQ7Ci0gICAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVkFMSURf
UEFSQU1FVEVSLCBvc3Muc3RyKCkpOwotICAgIH0KLSAgfQotICBzdGQ6OnNldDx1aW50MzJfdD4g
c2Vlbl9zc3JjczsKLSAgZm9yIChjb25zdCBjcmlja2V0OjpTdHJlYW1QYXJhbXMmIHN0cmVhbSA6
IHN0cmVhbXNfYSkgewotICAgIHNlZW5fc3NyY3MuaW5zZXJ0KHN0cmVhbS5zc3Jjcy5iZWdpbigp
LCBzdHJlYW0uc3NyY3MuZW5kKCkpOwotICB9Ci0gIGZvciAoY29uc3QgY3JpY2tldDo6U3RyZWFt
UGFyYW1zJiBzdHJlYW0gOiBzdHJlYW1zX2IpIHsKLSAgICBmb3IgKHVpbnQzMl90IHNzcmMgOiBz
dHJlYW0uc3NyY3MpIHsKLSAgICAgIGlmICghc2Vlbl9zc3Jjcy5pbnNlcnQoc3NyYykuc2Vjb25k
KSB7Ci0gICAgICAgIG9zcyA8PCAiU2FtZSBTU1JDIHVzZWQgZm9yIGF1ZGlvIGFuZCB2aWRlbyBz
ZW5kZXJzOiAiIDw8IHNzcmM7Ci0gICAgICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9y
VHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsIG9zcy5zdHIoKSk7Ci0gICAgICB9Ci0gICAgfQotICB9
Ci0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQotQkVHSU5fT1dORURfUFJPWFlfTUFQKFJ0
cFRyYW5zcG9ydENvbnRyb2xsZXIpCi1QUk9YWV9TSUdOQUxJTkdfVEhSRUFEX0RFU1RSVUNUT1Io
KQotUFJPWFlfQ09OU1RNRVRIT0QwKHN0ZDo6dmVjdG9yPFJ0cFRyYW5zcG9ydEludGVyZmFjZSo+
LCBHZXRUcmFuc3BvcnRzKQotcHJvdGVjdGVkOgotUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0
ZXIqIEdldEludGVybmFsKCkgb3ZlcnJpZGUgewotICByZXR1cm4gaW50ZXJuYWwoKTsKLX0KLUVO
RF9QUk9YWV9NQVAoKQotCi0vLyBzdGF0aWMKLXN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRD
b250cm9sbGVySW50ZXJmYWNlPgotUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNyZWF0
ZVByb3hpZWQoCi0gICAgY29uc3QgY3JpY2tldDo6TWVkaWFDb25maWcmIGNvbmZpZywKLSAgICBj
cmlja2V0OjpDaGFubmVsTWFuYWdlciogY2hhbm5lbF9tYW5hZ2VyLAotICAgIHdlYnJ0Yzo6UnRj
RXZlbnRMb2cqIGV2ZW50X2xvZywKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwK
LSAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogbmV0d29y
a190aHJlYWQpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFw
dGVyPiB3cmFwcGVkKAotICAgICAgbmV3IFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyKGNv
bmZpZywgY2hhbm5lbF9tYW5hZ2VyLCBldmVudF9sb2csCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2lnbmFsaW5nX3RocmVhZCwgd29ya2VyX3RocmVhZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3RocmVhZCkpOwotICBy
ZXR1cm4gUnRwVHJhbnNwb3J0Q29udHJvbGxlclByb3h5V2l0aEludGVybmFsPAotICAgICAgUnRw
VHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI+OjpDcmVhdGUoc2lnbmFsaW5nX3RocmVhZCwgd29y
a2VyX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bW92ZSh3cmFwcGVkKSk7Ci19Ci0KLVJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVy
Ojp+UnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIoKSB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09O
KHNpZ25hbGluZ190aHJlYWRfKTsKLSAgaWYgKCF0cmFuc3BvcnRfcHJveGllc18uZW1wdHkoKSkg
ewotICAgIFJUQ19MT0coTFNfRVJST1IpCi0gICAgICAgIDw8ICJEZXN0cm95aW5nIFJ0cFRyYW5z
cG9ydENvbnRyb2xsZXJBZGFwdGVyIHdoaWxlIFJ0cFRyYW5zcG9ydHMgIgotICAgICAgICAgICAi
YXJlIHN0aWxsIHVzaW5nIGl0OyB0aGlzIGlzIHVuc2FmZS4iOwotICB9Ci0gIGlmICh2b2ljZV9j
aGFubmVsXykgewotICAgIC8vIFRoaXMgd291bGQgbWVhbiBhdWRpbyBSVFAgc2VuZGVycy9yZWNl
aXZlcnMgdGhhdCBhcmUgdXNpbmcgdXMgaGF2ZW4ndAotICAgIC8vIGJlZW4gZGVzdHJveWVkLiBU
aGlzIGlzbid0IHNhZmUgKHNlZSBlcnJvciBsb2cgYWJvdmUpLgotICAgIERlc3Ryb3lWb2ljZUNo
YW5uZWwoKTsKLSAgfQotICBpZiAodm9pY2VfY2hhbm5lbF8pIHsKLSAgICAvLyBUaGlzIHdvdWxk
IG1lYW4gdmlkZW8gUlRQIHNlbmRlcnMvcmVjZWl2ZXJzIHRoYXQgYXJlIHVzaW5nIHVzIGhhdmVu
J3QKLSAgICAvLyBiZWVuIGRlc3Ryb3llZC4gVGhpcyBpc24ndCBzYWZlIChzZWUgZXJyb3IgbG9n
IGFib3ZlKS4KLSAgICBEZXN0cm95VmlkZW9DaGFubmVsKCk7Ci0gIH0KLSAgLy8gQ2FsbCBtdXN0
IGJlIGRlc3Ryb3llZCBvbiB0aGUgd29ya2VyIHRocmVhZC4KLSAgd29ya2VyX3RocmVhZF8tPklu
dm9rZTx2b2lkPigKLSAgICAgIFJUQ19GUk9NX0hFUkUsIHJ0Yzo6QmluZCgmUnRwVHJhbnNwb3J0
Q29udHJvbGxlckFkYXB0ZXI6OkNsb3NlX3csIHRoaXMpKTsKLX0KLQotUlRDRXJyb3JPcjxzdGQ6
OnVuaXF1ZV9wdHI8UnRwVHJhbnNwb3J0SW50ZXJmYWNlPj4KLVJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJBZGFwdGVyOjpDcmVhdGVQcm94aWVkUnRwVHJhbnNwb3J0KAotICAgIGNvbnN0IFJ0cFRyYW5z
cG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNl
KiBydHAsCi0gICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydGNwKSB7Ci0gIGlmICghdHJh
bnNwb3J0X3Byb3hpZXNfLmVtcHR5KCkgJiYgKHBhcmFtZXRlcnMua2VlcGFsaXZlICE9IGtlZXBh
bGl2ZV8pKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElE
X01PRElGSUNBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGNyZWF0ZSBS
dHBUcmFuc3BvcnQgd2l0aCBkaWZmZXJlbnQga2VlcC1hbGl2ZSAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgImZyb20gdGhlIFJ0cFRyYW5zcG9ydHMgYWxyZWFkeSBhc3NvY2lhdGVkIHdpdGgg
dGhpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zcG9ydCBjb250cm9sbGVyLiIp
OwotICB9Ci0gIGF1dG8gcmVzdWx0ID0gUnRwVHJhbnNwb3J0QWRhcHRlcjo6Q3JlYXRlUHJveGll
ZChwYXJhbWV0ZXJzLCBydHAsIHJ0Y3AsIHRoaXMpOwotICBpZiAocmVzdWx0Lm9rKCkpIHsKLSAg
ICB0cmFuc3BvcnRfcHJveGllc18ucHVzaF9iYWNrKHJlc3VsdC52YWx1ZSgpLmdldCgpKTsKLSAg
ICB0cmFuc3BvcnRfcHJveGllc18uYmFjaygpLT5HZXRJbnRlcm5hbCgpLT5TaWduYWxEZXN0cm95
ZWQuY29ubmVjdCgKLSAgICAgICAgdGhpcywgJlJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVy
OjpPblJ0cFRyYW5zcG9ydERlc3Ryb3llZCk7Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
UlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8U3J0cFRyYW5zcG9ydEludGVyZmFjZT4+Ci1SdHBU
cmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q3JlYXRlUHJveGllZFNydHBUcmFuc3BvcnQoCi0g
ICAgY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywKLSAgICBQYWNrZXRU
cmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwKLSAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0
Y3ApIHsKLSAgYXV0byByZXN1bHQgPQotICAgICAgUnRwVHJhbnNwb3J0QWRhcHRlcjo6Q3JlYXRl
U3J0cFByb3hpZWQocGFyYW1ldGVycywgcnRwLCBydGNwLCB0aGlzKTsKLSAgaWYgKHJlc3VsdC5v
aygpKSB7Ci0gICAgdHJhbnNwb3J0X3Byb3hpZXNfLnB1c2hfYmFjayhyZXN1bHQudmFsdWUoKS5n
ZXQoKSk7Ci0gICAgdHJhbnNwb3J0X3Byb3hpZXNfLmJhY2soKS0+R2V0SW50ZXJuYWwoKS0+U2ln
bmFsRGVzdHJveWVkLmNvbm5lY3QoCi0gICAgICAgIHRoaXMsICZSdHBUcmFuc3BvcnRDb250cm9s
bGVyQWRhcHRlcjo6T25SdHBUcmFuc3BvcnREZXN0cm95ZWQpOwotICB9Ci0gIHJldHVybiByZXN1
bHQ7Ci19Ci0KLVJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZh
Y2U+PgotUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNyZWF0ZVByb3hpZWRSdHBTZW5k
ZXIoCi0gICAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQsCi0gICAgUnRwVHJhbnNwb3J0SW50ZXJm
YWNlKiB0cmFuc3BvcnRfcHJveHkpIHsKLSAgUlRDX0RDSEVDSyh0cmFuc3BvcnRfcHJveHkpOwot
ICBSVENfRENIRUNLKHN0ZDo6ZmluZCh0cmFuc3BvcnRfcHJveGllc18uYmVnaW4oKSwgdHJhbnNw
b3J0X3Byb3hpZXNfLmVuZCgpLAotICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcHJv
eHkpICE9IHRyYW5zcG9ydF9wcm94aWVzXy5lbmQoKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxPcnRj
UnRwU2VuZGVyQWRhcHRlcj4gbmV3X3NlbmRlcigKLSAgICAgIG5ldyBPcnRjUnRwU2VuZGVyQWRh
cHRlcihraW5kLCB0cmFuc3BvcnRfcHJveHksIHRoaXMpKTsKLSAgUlRDRXJyb3IgZXJyOwotICBz
d2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86Ci0gICAg
ICBlcnIgPSBBdHRhY2hBdWRpb1NlbmRlcihuZXdfc2VuZGVyLmdldCgpLCB0cmFuc3BvcnRfcHJv
eHktPkdldEludGVybmFsKCkpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJ
QV9UWVBFX1ZJREVPOgotICAgICAgZXJyID0gQXR0YWNoVmlkZW9TZW5kZXIobmV3X3NlbmRlci5n
ZXQoKSwgdHJhbnNwb3J0X3Byb3h5LT5HZXRJbnRlcm5hbCgpKTsKLSAgICAgIGJyZWFrOwotICAg
IGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9EQVRBOgotICAgICAgUlRDX05PVFJFQUNIRUQoKTsK
LSAgfQotICBpZiAoIWVyci5vaygpKSB7Ci0gICAgcmV0dXJuIHN0ZDo6bW92ZShlcnIpOwotICB9
Ci0KLSAgcmV0dXJuIE9ydGNSdHBTZW5kZXJBZGFwdGVyOjpDcmVhdGVQcm94eShzdGQ6Om1vdmUo
bmV3X3NlbmRlcikpOwotfQotCi1SVENFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxPcnRjUnRwUmVj
ZWl2ZXJJbnRlcmZhY2U+PgotUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNyZWF0ZVBy
b3hpZWRSdHBSZWNlaXZlcigKLSAgICBjcmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICBSdHBU
cmFuc3BvcnRJbnRlcmZhY2UqIHRyYW5zcG9ydF9wcm94eSkgewotICBSVENfRENIRUNLKHRyYW5z
cG9ydF9wcm94eSk7Ci0gIFJUQ19EQ0hFQ0soc3RkOjpmaW5kKHRyYW5zcG9ydF9wcm94aWVzXy5i
ZWdpbigpLCB0cmFuc3BvcnRfcHJveGllc18uZW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zcG9ydF9wcm94eSkgIT0gdHJhbnNwb3J0X3Byb3hpZXNfLmVuZCgpKTsKLSAgc3RkOjp1
bmlxdWVfcHRyPE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI+IG5ld19yZWNlaXZlcigKLSAgICAgIG5l
dyBPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyKGtpbmQsIHRyYW5zcG9ydF9wcm94eSwgdGhpcykpOwot
ICBSVENFcnJvciBlcnI7Ci0gIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgY3JpY2tldDo6TUVE
SUFfVFlQRV9BVURJTzoKLSAgICAgIGVyciA9IEF0dGFjaEF1ZGlvUmVjZWl2ZXIobmV3X3JlY2Vp
dmVyLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcHJv
eHktPkdldEludGVybmFsKCkpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBjcmlja2V0OjpNRURJ
QV9UWVBFX1ZJREVPOgotICAgICAgZXJyID0gQXR0YWNoVmlkZW9SZWNlaXZlcihuZXdfcmVjZWl2
ZXIuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydF9wcm94
eS0+R2V0SW50ZXJuYWwoKSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElB
X1RZUEVfREFUQToKLSAgICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIH0KLSAgaWYgKCFlcnIub2so
KSkgewotICAgIHJldHVybiBzdGQ6Om1vdmUoZXJyKTsKLSAgfQotCi0gIHJldHVybiBPcnRjUnRw
UmVjZWl2ZXJBZGFwdGVyOjpDcmVhdGVQcm94eShzdGQ6Om1vdmUobmV3X3JlY2VpdmVyKSk7Ci19
Ci0KLXN0ZDo6dmVjdG9yPFJ0cFRyYW5zcG9ydEludGVyZmFjZSo+Ci1SdHBUcmFuc3BvcnRDb250
cm9sbGVyQWRhcHRlcjo6R2V0VHJhbnNwb3J0cygpIGNvbnN0IHsKLSAgUlRDX0RDSEVDS19SVU5f
T04oc2lnbmFsaW5nX3RocmVhZF8pOwotICByZXR1cm4gdHJhbnNwb3J0X3Byb3hpZXNfOwotfQot
Ci1SVENFcnJvciBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6U2V0UnRwVHJhbnNwb3J0
UGFyYW1ldGVycygKLSAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LAotICAgIFJ0cFRyYW5zcG9ydEludGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0KSB7Ci0gIGlmICgo
dmlkZW9fY2hhbm5lbF8gIT0gbnVsbHB0ciB8fCB2b2ljZV9jaGFubmVsXyAhPSBudWxscHRyKSAm
JgotICAgICAgKHBhcmFtZXRlcnMua2VlcGFsaXZlICE9IGtlZXBhbGl2ZV8pKSB7Ci0gICAgTE9H
X0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX01PRElGSUNBVElPTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGNoYW5nZSBrZWVwLWFsaXZlIHNldHRpbmdz
IGFmdGVyIGNyZWF0aW5nICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAibWVkaWEgc3RyZWFt
cyBvciBhZGRpdGlvbmFsIHRyYW5zcG9ydHMgZm9yIHRoZSBzYW1lICIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAidHJhbnNwb3J0IGNvbnRyb2xsZXIuIik7Ci0gIH0KLSAgLy8gQ2FsbCBtdXN0
IGJlIGNvbmZpZ3VyZWQgb24gdGhlIHdvcmtlciB0aHJlYWQuCi0gIHdvcmtlcl90aHJlYWRfLT5J
bnZva2U8dm9pZD4oCi0gICAgICBSVENfRlJPTV9IRVJFLAotICAgICAgcnRjOjpCaW5kKCZSdHBU
cmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6U2V0UnRwVHJhbnNwb3J0UGFyYW1ldGVyc193LAot
ICAgICAgICAgICAgICAgIHRoaXMsIHBhcmFtZXRlcnMpKTsKLQotICBkbyB7Ci0gICAgaWYgKGlu
bmVyX3RyYW5zcG9ydCA9PSBpbm5lcl9hdWRpb190cmFuc3BvcnRfKSB7Ci0gICAgICBDb3B5UnRj
cFBhcmFtZXRlcnNUb0Rlc2NyaXB0aW9ucyhwYXJhbWV0ZXJzLnJ0Y3AsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlbW90ZV9hdWRpb19kZXNjcmlw
dGlvbl8pOwotICAgICAgaWYgKCF2b2ljZV9jaGFubmVsXy0+U2V0TG9jYWxDb250ZW50KCZsb2Nh
bF9hdWRpb19kZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2RwVHlwZTo6a09mZmVyLCBudWxscHRyKSkgewotICAgICAgICBicmVhazsKLSAg
ICAgIH0KLSAgICAgIGlmICghdm9pY2VfY2hhbm5lbF8tPlNldFJlbW90ZUNvbnRlbnQoJnJlbW90
ZV9hdWRpb19kZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNkcFR5cGU6OmtBbnN3ZXIsIG51bGxwdHIpKSB7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgfQotICAgIH0gZWxzZSBpZiAoaW5uZXJfdHJhbnNwb3J0ID09IGlubmVyX3ZpZGVvX3Ry
YW5zcG9ydF8pIHsKLSAgICAgIENvcHlSdGNwUGFyYW1ldGVyc1RvRGVzY3JpcHRpb25zKHBhcmFt
ZXRlcnMucnRjcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2Nh
bF92aWRlb19kZXNjcmlwdGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXyk7Ci0gICAgICBpZiAoIXZpZGVvX2NoYW5u
ZWxfLT5TZXRMb2NhbENvbnRlbnQoJmxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBUeXBlOjprT2ZmZXIsIG51bGxw
dHIpKSB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYgKCF2aWRlb19jaGFubmVs
Xy0+U2V0UmVtb3RlQ29udGVudCgmcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a0Fuc3dlciwgbnVs
bHB0cikpIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBSVENF
cnJvcjo6T0soKTsKLSAgfSB3aGlsZSAoZmFsc2UpOwotICBMT0dfQU5EX1JFVFVSTl9FUlJPUihS
VENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAiRmFp
bGVkIHRvIGFwcGx5IG5ldyBSVENQIHBhcmFtZXRlcnMuIik7Ci19Ci0KLXZvaWQgUnRwVHJhbnNw
b3J0Q29udHJvbGxlckFkYXB0ZXI6OlNldFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnNfdygKLSAgICBj
b25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSB7Ci0gIGNhbGxfc2VuZF9y
dHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TZXRLZWVwQWxpdmVDb25maWcocGFyYW1ldGVycy5r
ZWVwYWxpdmUpOwotfQotCi1SVENFcnJvciBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6
VmFsaWRhdGVBbmRBcHBseUF1ZGlvU2VuZGVyUGFyYW1ldGVycygKLSAgICBjb25zdCBSdHBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgIHVpbnQzMl90KiBwcmltYXJ5X3NzcmMpIHsKLSAgUlRD
X0RDSEVDSyh2b2ljZV9jaGFubmVsXyk7Ci0gIFJUQ19EQ0hFQ0soaGF2ZV9hdWRpb19zZW5kZXJf
KTsKLQotICBhdXRvIGNvZGVjc19yZXN1bHQgPSBUb0NyaWNrZXRDb2RlY3M8Y3JpY2tldDo6QXVk
aW9Db2RlYz4ocGFyYW1ldGVycy5jb2RlY3MpOwotICBpZiAoIWNvZGVjc19yZXN1bHQub2soKSkg
ewotICAgIHJldHVybiBjb2RlY3NfcmVzdWx0Lk1vdmVFcnJvcigpOwotICB9Ci0KLSAgYXV0byBl
eHRlbnNpb25zX3Jlc3VsdCA9Ci0gICAgICBUb0NyaWNrZXRSdHBIZWFkZXJFeHRlbnNpb25zKHBh
cmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMpOwotICBpZiAoIWV4dGVuc2lvbnNfcmVzdWx0Lm9r
KCkpIHsKLSAgICByZXR1cm4gZXh0ZW5zaW9uc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQot
ICBhdXRvIHN0cmVhbV9wYXJhbXNfcmVzdWx0ID0gTWFrZVNlbmRTdHJlYW1QYXJhbXNWZWMoCi0g
ICAgICBwYXJhbWV0ZXJzLmVuY29kaW5ncywgaW5uZXJfYXVkaW9fdHJhbnNwb3J0Xy0+R2V0UGFy
YW1ldGVycygpLnJ0Y3AuY25hbWUsCi0gICAgICBsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8pOwot
ICBpZiAoIXN0cmVhbV9wYXJhbXNfcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gc3RyZWFtX3Bh
cmFtc19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICAvLyBDaGVjayB0aGF0IGF1ZGlvL3Zp
ZGVvIHNlbmRlciBhcmVuJ3QgdXNpbmcgdGhlIHNhbWUgSURzIHRvIHJlZmVyIHRvCi0gIC8vIGRp
ZmZlcmVudCB0aGluZ3MsIGlmIHRoZXkgc2hhcmUgdGhlIHNhbWUgdHJhbnNwb3J0LgotICBpZiAo
aW5uZXJfYXVkaW9fdHJhbnNwb3J0XyA9PSBpbm5lcl92aWRlb190cmFuc3BvcnRfKSB7Ci0gICAg
UlRDRXJyb3IgZXJyID0gQ2hlY2tGb3JJZENvbmZsaWN0cygKLSAgICAgICAgY29kZWNzX3Jlc3Vs
dC52YWx1ZSgpLCBleHRlbnNpb25zX3Jlc3VsdC52YWx1ZSgpLAotICAgICAgICBzdHJlYW1fcGFy
YW1zX3Jlc3VsdC52YWx1ZSgpLCByZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLmNvZGVjcygpLAot
ICAgICAgICByZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucygp
LAotICAgICAgICBsb2NhbF92aWRlb19kZXNjcmlwdGlvbl8uc3RyZWFtcygpKTsKLSAgICBpZiAo
IWVyci5vaygpKSB7Ci0gICAgICByZXR1cm4gZXJyOwotICAgIH0KLSAgfQotCi0gIGJvb2wgbG9j
YWxfc2VuZCA9IGZhbHNlOwotICBpbnQgYmFuZHdpZHRoID0gY3JpY2tldDo6a0F1dG9CYW5kd2lk
dGg7Ci0gIGlmIChwYXJhbWV0ZXJzLmVuY29kaW5ncy5zaXplKCkgPT0gMXUpIHsKLSAgICBpZiAo
cGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubWF4X2JpdHJhdGVfYnBzKSB7Ci0gICAgICBiYW5kd2lk
dGggPSAqcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0ubWF4X2JpdHJhdGVfYnBzOwotICAgIH0KLSAg
ICBsb2NhbF9zZW5kID0gcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uYWN0aXZlOwotICB9Ci0gIGNv
bnN0IGJvb2wgbG9jYWxfcmVjdiA9Ci0gICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbkhhc1Jl
Y3YobG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLmRpcmVjdGlvbigpKTsKLSAgY29uc3QgYXV0byBs
b2NhbF9kaXJlY3Rpb24gPQotICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25Gcm9tU2VuZFJl
Y3YobG9jYWxfc2VuZCwgbG9jYWxfcmVjdik7Ci0gIGlmIChwcmltYXJ5X3NzcmMgJiYgIXN0cmVh
bV9wYXJhbXNfcmVzdWx0LnZhbHVlKCkuZW1wdHkoKSkgewotICAgICpwcmltYXJ5X3NzcmMgPSBz
dHJlYW1fcGFyYW1zX3Jlc3VsdC52YWx1ZSgpWzBdLmZpcnN0X3NzcmMoKTsKLSAgfQotCi0gIC8v
IFZhbGlkYXRpb24gaXMgZG9uZSwgc28gd2UgY2FuIGF0dGVtcHQgYXBwbHlpbmcgdGhlIGRlc2Ny
aXB0aW9ucy4gU2VudAotICAvLyBjb2RlY3MgYW5kIGhlYWRlciBleHRlbnNpb25zIGdvIGluIHJl
bW90ZSBkZXNjcmlwdGlvbiwgc3RyZWFtcyBnbyBpbgotICAvLyBsb2NhbC4KLSAgLy8KLSAgLy8g
SWYgdGhlcmUgYXJlIG5vIGNvZGVjcyBvciBlbmNvZGluZ3MsIGp1c3QgbGVhdmUgdGhlIHByZXZp
b3VzIHNldCBvZgotICAvLyBjb2RlY3MuIFRoZSBtZWRpYSBlbmdpbmUgZG9lc24ndCBsaWtlIGFu
IGVtcHR5IHNldCBvZiBjb2RlY3MuCi0gIGlmIChsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8uc3Ry
ZWFtcygpLmVtcHR5KCkgJiYKLSAgICAgIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uY29kZWNz
KCkuZW1wdHkoKSkgewotICB9IGVsc2UgewotICAgIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8u
c2V0X2NvZGVjcyhjb2RlY3NfcmVzdWx0Lk1vdmVWYWx1ZSgpKTsKLSAgfQotICByZW1vdGVfYXVk
aW9fZGVzY3JpcHRpb25fLnNldF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMoCi0gICAgICBleHRlbnNp
b25zX3Jlc3VsdC5Nb3ZlVmFsdWUoKSk7Ci0gIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uc2V0
X2JhbmR3aWR0aChiYW5kd2lkdGgpOwotICBsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8ubXV0YWJs
ZV9zdHJlYW1zKCkgPSBzdHJlYW1fcGFyYW1zX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAgLy8gRGly
ZWN0aW9uIHNldCBiYXNlZCBvbiBlbmNvZGluZyAiYWN0aXZlIiBmbGFnLgotICBsb2NhbF9hdWRp
b19kZXNjcmlwdGlvbl8uc2V0X2RpcmVjdGlvbihsb2NhbF9kaXJlY3Rpb24pOwotICByZW1vdGVf
YXVkaW9fZGVzY3JpcHRpb25fLnNldF9kaXJlY3Rpb24oCi0gICAgICBSdHBUcmFuc2NlaXZlckRp
cmVjdGlvblJldmVyc2VkKGxvY2FsX2RpcmVjdGlvbikpOwotCi0gIC8vIFNldCByZW1vdGUgY29u
dGVudCBmaXJzdCwgdG8gZW5zdXJlIHRoZSBzdHJlYW0gaXMgY3JlYXRlZCB3aXRoIHRoZSBjb3Jy
ZWN0Ci0gIC8vIGNvZGVjLgotICBpZiAoIXZvaWNlX2NoYW5uZWxfLT5TZXRSZW1vdGVDb250ZW50
KCZyZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNkcFR5cGU6OmtPZmZlciwgbnVsbHB0cikpIHsKLSAgICBMT0dfQU5EX1JF
VFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9SLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICJGYWlsZWQgdG8gYXBwbHkgcmVtb3RlIHBhcmFtZXRlcnMgdG8gbWVkaWEgY2hh
bm5lbC4iKTsKLSAgfQotICBpZiAoIXZvaWNlX2NoYW5uZWxfLT5TZXRMb2NhbENvbnRlbnQoJmxv
Y2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNkcFR5cGU6OmtBbnN3ZXIsIG51bGxwdHIpKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5f
RVJST1IoUlRDRXJyb3JUeXBlOjpJTlRFUk5BTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiRmFpbGVkIHRvIGFwcGx5IGxvY2FsIHBhcmFtZXRlcnMgdG8gbWVkaWEgY2hhbm5lbC4i
KTsKLSAgfQotICByZXR1cm4gUlRDRXJyb3I6Ok9LKCk7Ci19Ci0KLVJUQ0Vycm9yIFJ0cFRyYW5z
cG9ydENvbnRyb2xsZXJBZGFwdGVyOjpWYWxpZGF0ZUFuZEFwcGx5VmlkZW9TZW5kZXJQYXJhbWV0
ZXJzKAotICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsCi0gICAgdWludDMyX3Qq
IHByaW1hcnlfc3NyYykgewotICBSVENfRENIRUNLKHZpZGVvX2NoYW5uZWxfKTsKLSAgUlRDX0RD
SEVDSyhoYXZlX3ZpZGVvX3NlbmRlcl8pOwotCi0gIGF1dG8gY29kZWNzX3Jlc3VsdCA9IFRvQ3Jp
Y2tldENvZGVjczxjcmlja2V0OjpWaWRlb0NvZGVjPihwYXJhbWV0ZXJzLmNvZGVjcyk7Ci0gIGlm
ICghY29kZWNzX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJuIGNvZGVjc19yZXN1bHQuTW92ZUVy
cm9yKCk7Ci0gIH0KLQotICBhdXRvIGV4dGVuc2lvbnNfcmVzdWx0ID0KLSAgICAgIFRvQ3JpY2tl
dFJ0cEhlYWRlckV4dGVuc2lvbnMocGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucyk7Ci0gIGlm
ICghZXh0ZW5zaW9uc19yZXN1bHQub2soKSkgewotICAgIHJldHVybiBleHRlbnNpb25zX3Jlc3Vs
dC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0gIGF1dG8gc3RyZWFtX3BhcmFtc19yZXN1bHQgPSBNYWtl
U2VuZFN0cmVhbVBhcmFtc1ZlYygKLSAgICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzLCBpbm5lcl92
aWRlb190cmFuc3BvcnRfLT5HZXRQYXJhbWV0ZXJzKCkucnRjcC5jbmFtZSwKLSAgICAgIGxvY2Fs
X3ZpZGVvX2Rlc2NyaXB0aW9uXyk7Ci0gIGlmICghc3RyZWFtX3BhcmFtc19yZXN1bHQub2soKSkg
ewotICAgIHJldHVybiBzdHJlYW1fcGFyYW1zX3Jlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotCi0g
IC8vIENoZWNrIHRoYXQgYXVkaW8vdmlkZW8gc2VuZGVyIGFyZW4ndCB1c2luZyB0aGUgc2FtZSBJ
RHMgdG8gcmVmZXIgdG8KLSAgLy8gZGlmZmVyZW50IHRoaW5ncywgaWYgdGhleSBzaGFyZSB0aGUg
c2FtZSB0cmFuc3BvcnQuCi0gIGlmIChpbm5lcl9hdWRpb190cmFuc3BvcnRfID09IGlubmVyX3Zp
ZGVvX3RyYW5zcG9ydF8pIHsKLSAgICBSVENFcnJvciBlcnIgPSBDaGVja0ZvcklkQ29uZmxpY3Rz
KAotICAgICAgICBjb2RlY3NfcmVzdWx0LnZhbHVlKCksIGV4dGVuc2lvbnNfcmVzdWx0LnZhbHVl
KCksCi0gICAgICAgIHN0cmVhbV9wYXJhbXNfcmVzdWx0LnZhbHVlKCksIHJlbW90ZV9hdWRpb19k
ZXNjcmlwdGlvbl8uY29kZWNzKCksCi0gICAgICAgIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8u
cnRwX2hlYWRlcl9leHRlbnNpb25zKCksCi0gICAgICAgIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9u
Xy5zdHJlYW1zKCkpOwotICAgIGlmICghZXJyLm9rKCkpIHsKLSAgICAgIHJldHVybiBlcnI7Ci0g
ICAgfQotICB9Ci0KLSAgYm9vbCBsb2NhbF9zZW5kID0gZmFsc2U7Ci0gIGludCBiYW5kd2lkdGgg
PSBjcmlja2V0OjprQXV0b0JhbmR3aWR0aDsKLSAgaWYgKHBhcmFtZXRlcnMuZW5jb2RpbmdzLnNp
emUoKSA9PSAxdSkgewotICAgIGlmIChwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5tYXhfYml0cmF0
ZV9icHMpIHsKLSAgICAgIGJhbmR3aWR0aCA9ICpwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5tYXhf
Yml0cmF0ZV9icHM7Ci0gICAgfQotICAgIGxvY2FsX3NlbmQgPSBwYXJhbWV0ZXJzLmVuY29kaW5n
c1swXS5hY3RpdmU7Ci0gIH0KLSAgY29uc3QgYm9vbCBsb2NhbF9yZWN2ID0KLSAgICAgIFJ0cFRy
YW5zY2VpdmVyRGlyZWN0aW9uSGFzUmVjdihsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8uZGlyZWN0
aW9uKCkpOwotICBjb25zdCBhdXRvIGxvY2FsX2RpcmVjdGlvbiA9Ci0gICAgICBSdHBUcmFuc2Nl
aXZlckRpcmVjdGlvbkZyb21TZW5kUmVjdihsb2NhbF9zZW5kLCBsb2NhbF9yZWN2KTsKLSAgaWYg
KHByaW1hcnlfc3NyYyAmJiAhc3RyZWFtX3BhcmFtc19yZXN1bHQudmFsdWUoKS5lbXB0eSgpKSB7
Ci0gICAgKnByaW1hcnlfc3NyYyA9IHN0cmVhbV9wYXJhbXNfcmVzdWx0LnZhbHVlKClbMF0uZmly
c3Rfc3NyYygpOwotICB9Ci0KLSAgLy8gVmFsaWRhdGlvbiBpcyBkb25lLCBzbyB3ZSBjYW4gYXR0
ZW1wdCBhcHBseWluZyB0aGUgZGVzY3JpcHRpb25zLiBTZW50Ci0gIC8vIGNvZGVjcyBhbmQgaGVh
ZGVyIGV4dGVuc2lvbnMgZ28gaW4gcmVtb3RlIGRlc2NyaXB0aW9uLCBzdHJlYW1zIGdvIGluCi0g
IC8vIGxvY2FsLgotICAvLwotICAvLyBJZiB0aGVyZSBhcmUgbm8gY29kZWNzIG9yIGVuY29kaW5n
cywganVzdCBsZWF2ZSB0aGUgcHJldmlvdXMgc2V0IG9mCi0gIC8vIGNvZGVjcy4gVGhlIG1lZGlh
IGVuZ2luZSBkb2Vzbid0IGxpa2UgYW4gZW1wdHkgc2V0IG9mIGNvZGVjcy4KLSAgaWYgKGxvY2Fs
X3ZpZGVvX2Rlc2NyaXB0aW9uXy5zdHJlYW1zKCkuZW1wdHkoKSAmJgotICAgICAgcmVtb3RlX3Zp
ZGVvX2Rlc2NyaXB0aW9uXy5jb2RlY3MoKS5lbXB0eSgpKSB7Ci0gIH0gZWxzZSB7Ci0gICAgcmVt
b3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zZXRfY29kZWNzKGNvZGVjc19yZXN1bHQuTW92ZVZhbHVl
KCkpOwotICB9Ci0gIHJlbW90ZV92aWRlb19kZXNjcmlwdGlvbl8uc2V0X3J0cF9oZWFkZXJfZXh0
ZW5zaW9ucygKLSAgICAgIGV4dGVuc2lvbnNfcmVzdWx0Lk1vdmVWYWx1ZSgpKTsKLSAgcmVtb3Rl
X3ZpZGVvX2Rlc2NyaXB0aW9uXy5zZXRfYmFuZHdpZHRoKGJhbmR3aWR0aCk7Ci0gIGxvY2FsX3Zp
ZGVvX2Rlc2NyaXB0aW9uXy5tdXRhYmxlX3N0cmVhbXMoKSA9IHN0cmVhbV9wYXJhbXNfcmVzdWx0
Lk1vdmVWYWx1ZSgpOwotICAvLyBEaXJlY3Rpb24gc2V0IGJhc2VkIG9uIGVuY29kaW5nICJhY3Rp
dmUiIGZsYWcuCi0gIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXy5zZXRfZGlyZWN0aW9uKGxvY2Fs
X2RpcmVjdGlvbik7Ci0gIHJlbW90ZV92aWRlb19kZXNjcmlwdGlvbl8uc2V0X2RpcmVjdGlvbigK
LSAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uUmV2ZXJzZWQobG9jYWxfZGlyZWN0aW9uKSk7
Ci0KLSAgLy8gU2V0IHJlbW90ZSBjb250ZW50IGZpcnN0LCB0byBlbnN1cmUgdGhlIHN0cmVhbSBp
cyBjcmVhdGVkIHdpdGggdGhlIGNvcnJlY3QKLSAgLy8gY29kZWMuCi0gIGlmICghdmlkZW9fY2hh
bm5lbF8tPlNldFJlbW90ZUNvbnRlbnQoJnJlbW90ZV92aWRlb19kZXNjcmlwdGlvbl8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a09mZmVyLCBudWxs
cHRyKSkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxf
RVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhcHBseSByZW1vdGUg
cGFyYW1ldGVycyB0byBtZWRpYSBjaGFubmVsLiIpOwotICB9Ci0gIGlmICghdmlkZW9fY2hhbm5l
bF8tPlNldExvY2FsQ29udGVudCgmbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a0Fuc3dlciwgbnVsbHB0cikp
IHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OklOVEVSTkFMX0VSUk9S
LAotICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYXBwbHkgbG9jYWwgcGFyYW1l
dGVycyB0byBtZWRpYSBjaGFubmVsLiIpOwotICB9Ci0gIHJldHVybiBSVENFcnJvcjo6T0soKTsK
LX0KLQotUlRDRXJyb3IgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OlZhbGlkYXRlQW5k
QXBwbHlBdWRpb1JlY2VpdmVyUGFyYW1ldGVycygKLSAgICBjb25zdCBSdHBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKSB7Ci0gIFJUQ19EQ0hFQ0sodm9pY2VfY2hhbm5lbF8pOwotICBSVENfRENIRUNL
KGhhdmVfYXVkaW9fcmVjZWl2ZXJfKTsKLQotICBhdXRvIGNvZGVjc19yZXN1bHQgPSBUb0NyaWNr
ZXRDb2RlY3M8Y3JpY2tldDo6QXVkaW9Db2RlYz4ocGFyYW1ldGVycy5jb2RlY3MpOwotICBpZiAo
IWNvZGVjc19yZXN1bHQub2soKSkgewotICAgIHJldHVybiBjb2RlY3NfcmVzdWx0Lk1vdmVFcnJv
cigpOwotICB9Ci0KLSAgYXV0byBleHRlbnNpb25zX3Jlc3VsdCA9Ci0gICAgICBUb0NyaWNrZXRS
dHBIZWFkZXJFeHRlbnNpb25zKHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMpOwotICBpZiAo
IWV4dGVuc2lvbnNfcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gZXh0ZW5zaW9uc19yZXN1bHQu
TW92ZUVycm9yKCk7Ci0gIH0KLQotICBhdXRvIHN0cmVhbV9wYXJhbXNfcmVzdWx0ID0gVG9Dcmlj
a2V0U3RyZWFtUGFyYW1zVmVjKHBhcmFtZXRlcnMuZW5jb2RpbmdzKTsKLSAgaWYgKCFzdHJlYW1f
cGFyYW1zX3Jlc3VsdC5vaygpKSB7Ci0gICAgcmV0dXJuIHN0cmVhbV9wYXJhbXNfcmVzdWx0Lk1v
dmVFcnJvcigpOwotICB9Ci0KLSAgLy8gQ2hlY2sgdGhhdCBhdWRpby92aWRlbyByZWNlaXZlIGFy
ZW4ndCB1c2luZyB0aGUgc2FtZSBJRHMgdG8gcmVmZXIgdG8KLSAgLy8gZGlmZmVyZW50IHRoaW5n
cywgaWYgdGhleSBzaGFyZSB0aGUgc2FtZSB0cmFuc3BvcnQuCi0gIGlmIChpbm5lcl9hdWRpb190
cmFuc3BvcnRfID09IGlubmVyX3ZpZGVvX3RyYW5zcG9ydF8pIHsKLSAgICBSVENFcnJvciBlcnIg
PSBDaGVja0ZvcklkQ29uZmxpY3RzKAotICAgICAgICBjb2RlY3NfcmVzdWx0LnZhbHVlKCksIGV4
dGVuc2lvbnNfcmVzdWx0LnZhbHVlKCksCi0gICAgICAgIHN0cmVhbV9wYXJhbXNfcmVzdWx0LnZh
bHVlKCksIGxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXy5jb2RlY3MoKSwKLSAgICAgICAgbG9jYWxf
dmlkZW9fZGVzY3JpcHRpb25fLnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucygpLAotICAgICAgICByZW1v
dGVfdmlkZW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKSk7Ci0gICAgaWYgKCFlcnIub2soKSkgewot
ICAgICAgcmV0dXJuIGVycjsKLSAgICB9Ci0gIH0KLQotICBjb25zdCBib29sIGxvY2FsX3NlbmQg
PQotICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25IYXNTZW5kKGxvY2FsX2F1ZGlvX2Rlc2Ny
aXB0aW9uXy5kaXJlY3Rpb24oKSk7Ci0gIGNvbnN0IGJvb2wgbG9jYWxfcmVjdiA9Ci0gICAgICAh
cGFyYW1ldGVycy5lbmNvZGluZ3MuZW1wdHkoKSAmJiBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5h
Y3RpdmU7Ci0gIGNvbnN0IGF1dG8gbG9jYWxfZGlyZWN0aW9uID0KLSAgICAgIFJ0cFRyYW5zY2Vp
dmVyRGlyZWN0aW9uRnJvbVNlbmRSZWN2KGxvY2FsX3NlbmQsIGxvY2FsX3JlY3YpOwotCi0gIC8v
IFZhbGlkYXRpb24gaXMgZG9uZSwgc28gd2UgY2FuIGF0dGVtcHQgYXBwbHlpbmcgdGhlIGRlc2Ny
aXB0aW9ucy4gUmVjZWl2ZWQKLSAgLy8gY29kZWNzIGFuZCBoZWFkZXIgZXh0ZW5zaW9ucyBnbyBp
biBsb2NhbCBkZXNjcmlwdGlvbiwgc3RyZWFtcyBnbyBpbgotICAvLyByZW1vdGUuCi0gIC8vCi0g
IC8vIElmIHRoZXJlIGFyZSBubyBjb2RlY3Mgb3IgZW5jb2RpbmdzLCBqdXN0IGxlYXZlIHRoZSBw
cmV2aW91cyBzZXQgb2YKLSAgLy8gY29kZWNzLiBUaGUgbWVkaWEgZW5naW5lIGRvZXNuJ3QgbGlr
ZSBhbiBlbXB0eSBzZXQgb2YgY29kZWNzLgotICBpZiAocmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9u
Xy5zdHJlYW1zKCkuZW1wdHkoKSAmJgotICAgICAgbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fLmNv
ZGVjcygpLmVtcHR5KCkpIHsKLSAgfSBlbHNlIHsKLSAgICBsb2NhbF9hdWRpb19kZXNjcmlwdGlv
bl8uc2V0X2NvZGVjcyhjb2RlY3NfcmVzdWx0Lk1vdmVWYWx1ZSgpKTsKLSAgfQotICBsb2NhbF9h
dWRpb19kZXNjcmlwdGlvbl8uc2V0X3J0cF9oZWFkZXJfZXh0ZW5zaW9ucygKLSAgICAgIGV4dGVu
c2lvbnNfcmVzdWx0Lk1vdmVWYWx1ZSgpKTsKLSAgcmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXy5t
dXRhYmxlX3N0cmVhbXMoKSA9Ci0gICAgICBzdHJlYW1fcGFyYW1zX3Jlc3VsdC5Nb3ZlVmFsdWUo
KTsKLSAgLy8gRGlyZWN0aW9uIHNldCBiYXNlZCBvbiBlbmNvZGluZyAiYWN0aXZlIiBmbGFnLgot
ICBsb2NhbF9hdWRpb19kZXNjcmlwdGlvbl8uc2V0X2RpcmVjdGlvbihsb2NhbF9kaXJlY3Rpb24p
OwotICByZW1vdGVfYXVkaW9fZGVzY3JpcHRpb25fLnNldF9kaXJlY3Rpb24oCi0gICAgICBSdHBU
cmFuc2NlaXZlckRpcmVjdGlvblJldmVyc2VkKGxvY2FsX2RpcmVjdGlvbikpOwotCi0gIGlmICgh
dm9pY2VfY2hhbm5lbF8tPlNldExvY2FsQ29udGVudCgmbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25f
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a09mZmVy
LCBudWxscHRyKSkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5U
RVJOQUxfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhcHBseSBs
b2NhbCBwYXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5uZWwuIik7Ci0gIH0KLSAgaWYgKCF2b2ljZV9j
aGFubmVsXy0+U2V0UmVtb3RlQ29udGVudCgmcmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBUeXBlOjprQW5zd2VyLCBu
dWxscHRyKSkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJO
QUxfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhcHBseSByZW1v
dGUgcGFyYW1ldGVycyB0byBtZWRpYSBjaGFubmVsLiIpOwotICB9Ci0gIHJldHVybiBSVENFcnJv
cjo6T0soKTsKLX0KLQotUlRDRXJyb3IgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OlZh
bGlkYXRlQW5kQXBwbHlWaWRlb1JlY2VpdmVyUGFyYW1ldGVycygKLSAgICBjb25zdCBSdHBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKSB7Ci0gIFJUQ19EQ0hFQ0sodmlkZW9fY2hhbm5lbF8pOwotICBS
VENfRENIRUNLKGhhdmVfdmlkZW9fcmVjZWl2ZXJfKTsKLQotICBhdXRvIGNvZGVjc19yZXN1bHQg
PSBUb0NyaWNrZXRDb2RlY3M8Y3JpY2tldDo6VmlkZW9Db2RlYz4ocGFyYW1ldGVycy5jb2RlY3Mp
OwotICBpZiAoIWNvZGVjc19yZXN1bHQub2soKSkgewotICAgIHJldHVybiBjb2RlY3NfcmVzdWx0
Lk1vdmVFcnJvcigpOwotICB9Ci0KLSAgYXV0byBleHRlbnNpb25zX3Jlc3VsdCA9Ci0gICAgICBU
b0NyaWNrZXRSdHBIZWFkZXJFeHRlbnNpb25zKHBhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMp
OwotICBpZiAoIWV4dGVuc2lvbnNfcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gZXh0ZW5zaW9u
c19yZXN1bHQuTW92ZUVycm9yKCk7Ci0gIH0KLQotICBpbnQgYmFuZHdpZHRoID0gY3JpY2tldDo6
a0F1dG9CYW5kd2lkdGg7Ci0gIGF1dG8gc3RyZWFtX3BhcmFtc19yZXN1bHQgPSBUb0NyaWNrZXRT
dHJlYW1QYXJhbXNWZWMocGFyYW1ldGVycy5lbmNvZGluZ3MpOwotICBpZiAoIXN0cmVhbV9wYXJh
bXNfcmVzdWx0Lm9rKCkpIHsKLSAgICByZXR1cm4gc3RyZWFtX3BhcmFtc19yZXN1bHQuTW92ZUVy
cm9yKCk7Ci0gIH0KLQotICAvLyBDaGVjayB0aGF0IGF1ZGlvL3ZpZGVvIHJlY2VpdmVyIGFyZW4n
dCB1c2luZyB0aGUgc2FtZSBJRHMgdG8gcmVmZXIgdG8KLSAgLy8gZGlmZmVyZW50IHRoaW5ncywg
aWYgdGhleSBzaGFyZSB0aGUgc2FtZSB0cmFuc3BvcnQuCi0gIGlmIChpbm5lcl9hdWRpb190cmFu
c3BvcnRfID09IGlubmVyX3ZpZGVvX3RyYW5zcG9ydF8pIHsKLSAgICBSVENFcnJvciBlcnIgPSBD
aGVja0ZvcklkQ29uZmxpY3RzKAotICAgICAgICBjb2RlY3NfcmVzdWx0LnZhbHVlKCksIGV4dGVu
c2lvbnNfcmVzdWx0LnZhbHVlKCksCi0gICAgICAgIHN0cmVhbV9wYXJhbXNfcmVzdWx0LnZhbHVl
KCksIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5jb2RlY3MoKSwKLSAgICAgICAgbG9jYWxfYXVk
aW9fZGVzY3JpcHRpb25fLnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucygpLAotICAgICAgICByZW1vdGVf
YXVkaW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKSk7Ci0gICAgaWYgKCFlcnIub2soKSkgewotICAg
ICAgcmV0dXJuIGVycjsKLSAgICB9Ci0gIH0KLQotICBjb25zdCBib29sIGxvY2FsX3NlbmQgPQot
ICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25IYXNTZW5kKGxvY2FsX3ZpZGVvX2Rlc2NyaXB0
aW9uXy5kaXJlY3Rpb24oKSk7Ci0gIGNvbnN0IGJvb2wgbG9jYWxfcmVjdiA9Ci0gICAgICAhcGFy
YW1ldGVycy5lbmNvZGluZ3MuZW1wdHkoKSAmJiBwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5hY3Rp
dmU7Ci0gIGNvbnN0IGF1dG8gbG9jYWxfZGlyZWN0aW9uID0KLSAgICAgIFJ0cFRyYW5zY2VpdmVy
RGlyZWN0aW9uRnJvbVNlbmRSZWN2KGxvY2FsX3NlbmQsIGxvY2FsX3JlY3YpOwotCi0gIC8vIFZh
bGlkYXRpb24gaXMgZG9uZSwgc28gd2UgY2FuIGF0dGVtcHQgYXBwbHlpbmcgdGhlIGRlc2NyaXB0
aW9ucy4gUmVjZWl2ZWQKLSAgLy8gY29kZWNzIGFuZCBoZWFkZXIgZXh0ZW5zaW9ucyBnbyBpbiBs
b2NhbCBkZXNjcmlwdGlvbiwgc3RyZWFtcyBnbyBpbgotICAvLyByZW1vdGUuCi0gIC8vCi0gIC8v
IElmIHRoZXJlIGFyZSBubyBjb2RlY3Mgb3IgZW5jb2RpbmdzLCBqdXN0IGxlYXZlIHRoZSBwcmV2
aW91cyBzZXQgb2YKLSAgLy8gY29kZWNzLiBUaGUgbWVkaWEgZW5naW5lIGRvZXNuJ3QgbGlrZSBh
biBlbXB0eSBzZXQgb2YgY29kZWNzLgotICBpZiAocmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXy5z
dHJlYW1zKCkuZW1wdHkoKSAmJgotICAgICAgbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLmNvZGVj
cygpLmVtcHR5KCkpIHsKLSAgfSBlbHNlIHsKLSAgICBsb2NhbF92aWRlb19kZXNjcmlwdGlvbl8u
c2V0X2NvZGVjcyhjb2RlY3NfcmVzdWx0Lk1vdmVWYWx1ZSgpKTsKLSAgfQotICBsb2NhbF92aWRl
b19kZXNjcmlwdGlvbl8uc2V0X3J0cF9oZWFkZXJfZXh0ZW5zaW9ucygKLSAgICAgIGV4dGVuc2lv
bnNfcmVzdWx0Lk1vdmVWYWx1ZSgpKTsKLSAgbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLnNldF9i
YW5kd2lkdGgoYmFuZHdpZHRoKTsKLSAgcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXy5tdXRhYmxl
X3N0cmVhbXMoKSA9Ci0gICAgICBzdHJlYW1fcGFyYW1zX3Jlc3VsdC5Nb3ZlVmFsdWUoKTsKLSAg
Ly8gRGlyZWN0aW9uIHNldCBiYXNlZCBvbiBlbmNvZGluZyAiYWN0aXZlIiBmbGFnLgotICBsb2Nh
bF92aWRlb19kZXNjcmlwdGlvbl8uc2V0X2RpcmVjdGlvbihsb2NhbF9kaXJlY3Rpb24pOwotICBy
ZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLnNldF9kaXJlY3Rpb24oCi0gICAgICBSdHBUcmFuc2Nl
aXZlckRpcmVjdGlvblJldmVyc2VkKGxvY2FsX2RpcmVjdGlvbikpOwotCi0gIGlmICghdmlkZW9f
Y2hhbm5lbF8tPlNldExvY2FsQ29udGVudCgmbG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RwVHlwZTo6a09mZmVyLCBudWxs
cHRyKSkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxf
RVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhcHBseSBsb2NhbCBw
YXJhbWV0ZXJzIHRvIG1lZGlhIGNoYW5uZWwuIik7Ci0gIH0KLSAgaWYgKCF2aWRlb19jaGFubmVs
Xy0+U2V0UmVtb3RlQ29udGVudCgmcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZHBUeXBlOjprQW5zd2VyLCBudWxscHRy
KSkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJS
T1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhcHBseSByZW1vdGUgcGFy
YW1ldGVycyB0byBtZWRpYSBjaGFubmVsLiIpOwotICB9Ci0gIHJldHVybiBSVENFcnJvcjo6T0so
KTsKLX0KLQotUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OlJ0cFRyYW5zcG9ydENvbnRy
b2xsZXJBZGFwdGVyKAotICAgIGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnJiBjb25maWcsCi0g
ICAgY3JpY2tldDo6Q2hhbm5lbE1hbmFnZXIqIGNoYW5uZWxfbWFuYWdlciwKLSAgICB3ZWJydGM6
OlJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCi0gICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJl
YWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIG5l
dHdvcmtfdGhyZWFkKQotICAgIDogc2lnbmFsaW5nX3RocmVhZF8oc2lnbmFsaW5nX3RocmVhZCks
Ci0gICAgICB3b3JrZXJfdGhyZWFkXyh3b3JrZXJfdGhyZWFkKSwKLSAgICAgIG5ldHdvcmtfdGhy
ZWFkXyhuZXR3b3JrX3RocmVhZCksCi0gICAgICBtZWRpYV9jb25maWdfKGNvbmZpZyksCi0gICAg
ICBjaGFubmVsX21hbmFnZXJfKGNoYW5uZWxfbWFuYWdlciksCi0gICAgICBldmVudF9sb2dfKGV2
ZW50X2xvZyksCi0gICAgICBjYWxsX3NlbmRfcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXyhudWxs
cHRyKSB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWRfKTsKLSAgUlRDX0RD
SEVDSyhjaGFubmVsX21hbmFnZXJfKTsKLSAgLy8gQWRkICJkdW1teSIgY29kZWNzIHRvIHRoZSBk
ZXNjcmlwdGlvbnMsIGJlY2F1c2UgdGhlIG1lZGlhIGVuZ2luZXMKLSAgLy8gY3VycmVudGx5IHJl
amVjdCBlbXB0eSBsaXN0cyBvZiBjb2RlY3MuIE5vdGUgdGhhdCB0aGVzZSBjb2RlY3Mgd2lsbCBu
ZXZlcgotICAvLyBhY3R1YWxseSBiZSB1c2VkLCBiZWNhdXNlIHdoZW4gcGFyYW1ldGVycyBhcmUg
c2V0LCB0aGUgZHVtbXkgY29kZWNzIHdpbGwKLSAgLy8gYmUgcmVwbGFjZWQgYnkgYWN0dWFsIGNv
ZGVjcyBiZWZvcmUgYW55IHNlbmQvcmVjZWl2ZSBzdHJlYW1zIGFyZSBjcmVhdGVkLgotICBjb25z
dCBjcmlja2V0OjpBdWRpb0NvZGVjIGR1bW15X2F1ZGlvKDAsIGNyaWNrZXQ6OmtQY211Q29kZWNO
YW1lLCA4MDAwLCAwLCAxKTsKLSAgY29uc3QgY3JpY2tldDo6VmlkZW9Db2RlYyBkdW1teV92aWRl
byg5NiwgY3JpY2tldDo6a1ZwOENvZGVjTmFtZSk7Ci0gIGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9u
Xy5BZGRDb2RlYyhkdW1teV9hdWRpbyk7Ci0gIHJlbW90ZV9hdWRpb19kZXNjcmlwdGlvbl8uQWRk
Q29kZWMoZHVtbXlfYXVkaW8pOwotICBsb2NhbF92aWRlb19kZXNjcmlwdGlvbl8uQWRkQ29kZWMo
ZHVtbXlfdmlkZW8pOwotICByZW1vdGVfdmlkZW9fZGVzY3JpcHRpb25fLkFkZENvZGVjKGR1bW15
X3ZpZGVvKTsKLQotICB3b3JrZXJfdGhyZWFkXy0+SW52b2tlPHZvaWQ+KAotICAgICAgUlRDX0ZS
T01fSEVSRSwgcnRjOjpCaW5kKCZSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6SW5pdF93
LCB0aGlzKSk7Ci19Ci0KLS8vIFRPRE8obmlzc2UpOiBEdXBsaWNhdGVzIGNvcnJlc3BvbmRpbmcg
bWV0aG9kIGluIFBlZXJDb25uZWN0aW9uICh1c2VkCi0vLyB0byBiZSBpbiBNZWRpYUNvbnRyb2xs
ZXIpLgotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6SW5pdF93KCkgewotICBS
VENfRENIRUNLKHdvcmtlcl90aHJlYWRfLT5Jc0N1cnJlbnQoKSk7Ci0gIFJUQ19EQ0hFQ0soIWNh
bGxfKTsKLQotICBjb25zdCBpbnQga01pbkJhbmR3aWR0aEJwcyA9IDMwMDAwOwotICBjb25zdCBp
bnQga1N0YXJ0QmFuZHdpZHRoQnBzID0gMzAwMDAwOwotICBjb25zdCBpbnQga01heEJhbmR3aWR0
aEJwcyA9IDIwMDAwMDA7Ci0KLSAgd2VicnRjOjpDYWxsOjpDb25maWcgY2FsbF9jb25maWcoZXZl
bnRfbG9nXyk7Ci0gIGNhbGxfY29uZmlnLmF1ZGlvX3N0YXRlID0gY2hhbm5lbF9tYW5hZ2VyXy0+
bWVkaWFfZW5naW5lKCktPkdldEF1ZGlvU3RhdGUoKTsKLSAgY2FsbF9jb25maWcuYml0cmF0ZV9j
b25maWcubWluX2JpdHJhdGVfYnBzID0ga01pbkJhbmR3aWR0aEJwczsKLSAgY2FsbF9jb25maWcu
Yml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMgPSBrU3RhcnRCYW5kd2lkdGhCcHM7Ci0g
IGNhbGxfY29uZmlnLmJpdHJhdGVfY29uZmlnLm1heF9iaXRyYXRlX2JwcyA9IGtNYXhCYW5kd2lk
dGhCcHM7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnRDb250cm9sbGVyU2VuZD4gY29u
dHJvbGxlcl9zZW5kID0KLSAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFJ0cFRyYW5zcG9ydENvbnRy
b2xsZXJTZW5kPigKLSAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBldmVudF9s
b2dfLAotICAgICAgICAgIGNhbGxfY29uZmlnLm5ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5LCBj
YWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZyk7Ci0gIGNhbGxfc2VuZF9ydHBfdHJhbnNwb3J0X2Nv
bnRyb2xsZXJfID0gY29udHJvbGxlcl9zZW5kLmdldCgpOwotICBjYWxsXy5yZXNldCh3ZWJydGM6
OkNhbGw6OkNyZWF0ZShjYWxsX2NvbmZpZywgc3RkOjptb3ZlKGNvbnRyb2xsZXJfc2VuZCkpKTsK
LX0KLQotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6Q2xvc2VfdygpIHsKLSAg
Y2FsbF8ucmVzZXQoKTsKLSAgY2FsbF9zZW5kX3J0cF90cmFuc3BvcnRfY29udHJvbGxlcl8gPSBu
dWxscHRyOwotfQotCi1SVENFcnJvciBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6QXR0
YWNoQXVkaW9TZW5kZXIoCi0gICAgT3J0Y1J0cFNlbmRlckFkYXB0ZXIqIHNlbmRlciwKLSAgICBS
dHBUcmFuc3BvcnRJbnRlcmZhY2UqIGlubmVyX3RyYW5zcG9ydCkgewotICBpZiAoaGF2ZV9hdWRp
b19zZW5kZXJfKSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpVTlNV
UFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlVzaW5nIHR3byBh
dWRpbyBSdHBTZW5kZXJzIHdpdGggdGhlIHNhbWUgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICJSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlciBpcyBub3QgY3VycmVudGx5ICIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAic3VwcG9ydGVkLiIpOwotICB9Ci0gIGlmIChpbm5lcl9hdWRp
b190cmFuc3BvcnRfICYmIGlubmVyX2F1ZGlvX3RyYW5zcG9ydF8gIT0gaW5uZXJfdHJhbnNwb3J0
KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1IoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9P
UEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlVzaW5nIGRpZmZlcmVudCB0cmFu
c3BvcnRzIGZvciB0aGUgYXVkaW8gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJSdHBTZW5k
ZXIgYW5kIFJ0cFJlY2VpdmVyIGlzIG5vdCBjdXJyZW50bHkgIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICJzdXBwb3J0ZWQuIik7Ci0gIH0KLQotICAvLyBJZiBzZXR0aW5nIG5ldyB0cmFuc3Bv
cnQsIGV4dHJhY3QgaXRzIFJUQ1AgcGFyYW1ldGVycyBhbmQgY3JlYXRlIHZvaWNlCi0gIC8vIGNo
YW5uZWwuCi0gIGlmICghaW5uZXJfYXVkaW9fdHJhbnNwb3J0XykgewotICAgIENvcHlSdGNwUGFy
YW1ldGVyc1RvRGVzY3JpcHRpb25zKGlubmVyX3RyYW5zcG9ydC0+R2V0UGFyYW1ldGVycygpLnJ0
Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsX2F1ZGlvX2Rl
c2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVtb3Rl
X2F1ZGlvX2Rlc2NyaXB0aW9uXyk7Ci0gICAgaW5uZXJfYXVkaW9fdHJhbnNwb3J0XyA9IGlubmVy
X3RyYW5zcG9ydDsKLSAgICBDcmVhdGVWb2ljZUNoYW5uZWwoKTsKLSAgfQotICBoYXZlX2F1ZGlv
X3NlbmRlcl8gPSB0cnVlOwotICBzZW5kZXItPlNpZ25hbERlc3Ryb3llZC5jb25uZWN0KAotICAg
ICAgdGhpcywgJlJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPbkF1ZGlvU2VuZGVyRGVz
dHJveWVkKTsKLSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1SVENFcnJvciBSdHBUcmFu
c3BvcnRDb250cm9sbGVyQWRhcHRlcjo6QXR0YWNoVmlkZW9TZW5kZXIoCi0gICAgT3J0Y1J0cFNl
bmRlckFkYXB0ZXIqIHNlbmRlciwKLSAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIGlubmVyX3Ry
YW5zcG9ydCkgewotICBpZiAoaGF2ZV92aWRlb19zZW5kZXJfKSB7Ci0gICAgTE9HX0FORF9SRVRV
Uk5fRVJST1IoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIlVzaW5nIHR3byB2aWRlbyBSdHBTZW5kZXJzIHdpdGggdGhlIHNhbWUg
IgotICAgICAgICAgICAgICAgICAgICAgICAgICJSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRl
ciBpcyBub3QgY3VycmVudGx5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydGVk
LiIpOwotICB9Ci0gIGlmIChpbm5lcl92aWRlb190cmFuc3BvcnRfICYmIGlubmVyX3ZpZGVvX3Ry
YW5zcG9ydF8gIT0gaW5uZXJfdHJhbnNwb3J0KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1Io
UlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIlVzaW5nIGRpZmZlcmVudCB0cmFuc3BvcnRzIGZvciB0aGUgdmlkZW8gIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICJSdHBTZW5kZXIgYW5kIFJ0cFJlY2VpdmVyIGlzIG5vdCBjdXJy
ZW50bHkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0ZWQuIik7Ci0gIH0KLQot
ICAvLyBJZiBzZXR0aW5nIG5ldyB0cmFuc3BvcnQsIGV4dHJhY3QgaXRzIFJUQ1AgcGFyYW1ldGVy
cyBhbmQgY3JlYXRlIHZpZGVvCi0gIC8vIGNoYW5uZWwuCi0gIGlmICghaW5uZXJfdmlkZW9fdHJh
bnNwb3J0XykgewotICAgIENvcHlSdGNwUGFyYW1ldGVyc1RvRGVzY3JpcHRpb25zKGlubmVyX3Ry
YW5zcG9ydC0+R2V0UGFyYW1ldGVycygpLnJ0Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmxvY2FsX3ZpZGVvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmcmVtb3RlX3ZpZGVvX2Rlc2NyaXB0aW9uXyk7Ci0gICAgaW5u
ZXJfdmlkZW9fdHJhbnNwb3J0XyA9IGlubmVyX3RyYW5zcG9ydDsKLSAgICBDcmVhdGVWaWRlb0No
YW5uZWwoKTsKLSAgfQotICBoYXZlX3ZpZGVvX3NlbmRlcl8gPSB0cnVlOwotICBzZW5kZXItPlNp
Z25hbERlc3Ryb3llZC5jb25uZWN0KAotICAgICAgdGhpcywgJlJ0cFRyYW5zcG9ydENvbnRyb2xs
ZXJBZGFwdGVyOjpPblZpZGVvU2VuZGVyRGVzdHJveWVkKTsKLSAgcmV0dXJuIFJUQ0Vycm9yOjpP
SygpOwotfQotCi1SVENFcnJvciBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6QXR0YWNo
QXVkaW9SZWNlaXZlcigKLSAgICBPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyKiByZWNlaXZlciwKLSAg
ICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIGlubmVyX3RyYW5zcG9ydCkgewotICBpZiAoaGF2ZV9h
dWRpb19yZWNlaXZlcl8pIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6
OlVOU1VQUE9SVEVEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiVXNpbmcg
dHdvIGF1ZGlvIFJ0cFJlY2VpdmVycyB3aXRoIHRoZSBzYW1lICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAiUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIgaXMgbm90IGN1cnJlbnRseSAi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZC4iKTsKLSAgfQotICBpZiAoaW5u
ZXJfYXVkaW9fdHJhbnNwb3J0XyAmJiBpbm5lcl9hdWRpb190cmFuc3BvcnRfICE9IGlubmVyX3Ry
YW5zcG9ydCkgewotICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6VU5TVVBQ
T1JURURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICJVc2luZyBkaWZmZXJl
bnQgdHJhbnNwb3J0cyBmb3IgdGhlIGF1ZGlvICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAi
UnRwUmVjZWl2ZXIgYW5kIFJ0cFJlY2VpdmVyIGlzIG5vdCBjdXJyZW50bHkgIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICJzdXBwb3J0ZWQuIik7Ci0gIH0KLQotICAvLyBJZiBzZXR0aW5nIG5l
dyB0cmFuc3BvcnQsIGV4dHJhY3QgaXRzIFJUQ1AgcGFyYW1ldGVycyBhbmQgY3JlYXRlIHZvaWNl
Ci0gIC8vIGNoYW5uZWwuCi0gIGlmICghaW5uZXJfYXVkaW9fdHJhbnNwb3J0XykgewotICAgIENv
cHlSdGNwUGFyYW1ldGVyc1RvRGVzY3JpcHRpb25zKGlubmVyX3RyYW5zcG9ydC0+R2V0UGFyYW1l
dGVycygpLnJ0Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2Fs
X2F1ZGlvX2Rlc2NyaXB0aW9uXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmcmVtb3RlX2F1ZGlvX2Rlc2NyaXB0aW9uXyk7Ci0gICAgaW5uZXJfYXVkaW9fdHJhbnNwb3J0
XyA9IGlubmVyX3RyYW5zcG9ydDsKLSAgICBDcmVhdGVWb2ljZUNoYW5uZWwoKTsKLSAgfQotICBo
YXZlX2F1ZGlvX3JlY2VpdmVyXyA9IHRydWU7Ci0gIHJlY2VpdmVyLT5TaWduYWxEZXN0cm95ZWQu
Y29ubmVjdCgKLSAgICAgIHRoaXMsICZSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6T25B
dWRpb1JlY2VpdmVyRGVzdHJveWVkKTsKLSAgcmV0dXJuIFJUQ0Vycm9yOjpPSygpOwotfQotCi1S
VENFcnJvciBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6QXR0YWNoVmlkZW9SZWNlaXZl
cigKLSAgICBPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyKiByZWNlaXZlciwKLSAgICBSdHBUcmFuc3Bv
cnRJbnRlcmZhY2UqIGlubmVyX3RyYW5zcG9ydCkgewotICBpZiAoaGF2ZV92aWRlb19yZWNlaXZl
cl8pIHsKLSAgICBMT0dfQU5EX1JFVFVSTl9FUlJPUihSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVE
X09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiVXNpbmcgdHdvIHZpZGVvIFJ0
cFJlY2VpdmVycyB3aXRoIHRoZSBzYW1lICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiUnRw
VHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIgaXMgbm90IGN1cnJlbnRseSAiCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgInN1cHBvcnRlZC4iKTsKLSAgfQotICBpZiAoaW5uZXJfdmlkZW9fdHJh
bnNwb3J0XyAmJiBpbm5lcl92aWRlb190cmFuc3BvcnRfICE9IGlubmVyX3RyYW5zcG9ydCkgewot
ICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6VU5TVVBQT1JURURfT1BFUkFU
SU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICJVc2luZyBkaWZmZXJlbnQgdHJhbnNwb3J0
cyBmb3IgdGhlIHZpZGVvICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiUnRwUmVjZWl2ZXIg
YW5kIFJ0cFJlY2VpdmVyIGlzIG5vdCBjdXJyZW50bHkgIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICJzdXBwb3J0ZWQuIik7Ci0gIH0KLSAgLy8gSWYgc2V0dGluZyBuZXcgdHJhbnNwb3J0LCBl
eHRyYWN0IGl0cyBSVENQIHBhcmFtZXRlcnMgYW5kIGNyZWF0ZSB2aWRlbwotICAvLyBjaGFubmVs
LgotICBpZiAoIWlubmVyX3ZpZGVvX3RyYW5zcG9ydF8pIHsKLSAgICBDb3B5UnRjcFBhcmFtZXRl
cnNUb0Rlc2NyaXB0aW9ucyhpbm5lcl90cmFuc3BvcnQtPkdldFBhcmFtZXRlcnMoKS5ydGNwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbF92aWRlb19kZXNjcmlw
dGlvbl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlbW90ZV92aWRl
b19kZXNjcmlwdGlvbl8pOwotICAgIGlubmVyX3ZpZGVvX3RyYW5zcG9ydF8gPSBpbm5lcl90cmFu
c3BvcnQ7Ci0gICAgQ3JlYXRlVmlkZW9DaGFubmVsKCk7Ci0gIH0KLSAgaGF2ZV92aWRlb19yZWNl
aXZlcl8gPSB0cnVlOwotICByZWNlaXZlci0+U2lnbmFsRGVzdHJveWVkLmNvbm5lY3QoCi0gICAg
ICB0aGlzLCAmUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6Ok9uVmlkZW9SZWNlaXZlckRl
c3Ryb3llZCk7Ci0gIHJldHVybiBSVENFcnJvcjo6T0soKTsKLX0KLQotdm9pZCBSdHBUcmFuc3Bv
cnRDb250cm9sbGVyQWRhcHRlcjo6T25SdHBUcmFuc3BvcnREZXN0cm95ZWQoCi0gICAgUnRwVHJh
bnNwb3J0QWRhcHRlciogdHJhbnNwb3J0KSB7Ci0gIFJUQ19EQ0hFQ0tfUlVOX09OKHNpZ25hbGlu
Z190aHJlYWRfKTsKLSAgYXV0byBpdCA9IHN0ZDo6ZmluZF9pZih0cmFuc3BvcnRfcHJveGllc18u
YmVnaW4oKSwgdHJhbnNwb3J0X3Byb3hpZXNfLmVuZCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIFt0cmFuc3BvcnRdKFJ0cFRyYW5zcG9ydEludGVyZmFjZSogcHJveHkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm94eS0+R2V0SW50ZXJuYWwoKSA9PSB0cmFuc3Bv
cnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gIGlmIChpdCA9PSB0cmFuc3BvcnRf
cHJveGllc18uZW5kKCkpIHsKLSAgICBSVENfTk9UUkVBQ0hFRCgpOwotICAgIHJldHVybjsKLSAg
fQotICB0cmFuc3BvcnRfcHJveGllc18uZXJhc2UoaXQpOwotfQotCi12b2lkIFJ0cFRyYW5zcG9y
dENvbnRyb2xsZXJBZGFwdGVyOjpPbkF1ZGlvU2VuZGVyRGVzdHJveWVkKCkgewotICBpZiAoIWhh
dmVfYXVkaW9fc2VuZGVyXykgewotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgcmV0dXJuOwot
ICB9Ci0gIC8vIEVtcHR5IHBhcmFtZXRlcnMgc2hvdWxkIHJlc3VsdCBpbiBzZW5kaW5nIGJlaW5n
IHN0b3BwZWQuCi0gIFJUQ0Vycm9yIGVyciA9Ci0gICAgICBWYWxpZGF0ZUFuZEFwcGx5QXVkaW9T
ZW5kZXJQYXJhbWV0ZXJzKFJ0cFBhcmFtZXRlcnMoKSwgbnVsbHB0cik7Ci0gIFJUQ19EQ0hFQ0so
ZXJyLm9rKCkpOwotICBoYXZlX2F1ZGlvX3NlbmRlcl8gPSBmYWxzZTsKLSAgaWYgKCFoYXZlX2F1
ZGlvX3JlY2VpdmVyXykgewotICAgIERlc3Ryb3lWb2ljZUNoYW5uZWwoKTsKLSAgfQotfQotCi12
b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPblZpZGVvU2VuZGVyRGVzdHJveWVk
KCkgewotICBpZiAoIWhhdmVfdmlkZW9fc2VuZGVyXykgewotICAgIFJUQ19OT1RSRUFDSEVEKCk7
Ci0gICAgcmV0dXJuOwotICB9Ci0gIC8vIEVtcHR5IHBhcmFtZXRlcnMgc2hvdWxkIHJlc3VsdCBp
biBzZW5kaW5nIGJlaW5nIHN0b3BwZWQuCi0gIFJUQ0Vycm9yIGVyciA9Ci0gICAgICBWYWxpZGF0
ZUFuZEFwcGx5VmlkZW9TZW5kZXJQYXJhbWV0ZXJzKFJ0cFBhcmFtZXRlcnMoKSwgbnVsbHB0cik7
Ci0gIFJUQ19EQ0hFQ0soZXJyLm9rKCkpOwotICBoYXZlX3ZpZGVvX3NlbmRlcl8gPSBmYWxzZTsK
LSAgaWYgKCFoYXZlX3ZpZGVvX3JlY2VpdmVyXykgewotICAgIERlc3Ryb3lWaWRlb0NoYW5uZWwo
KTsKLSAgfQotfQotCi12b2lkIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpPbkF1ZGlv
UmVjZWl2ZXJEZXN0cm95ZWQoKSB7Ci0gIGlmICghaGF2ZV9hdWRpb19yZWNlaXZlcl8pIHsKLSAg
ICBSVENfTk9UUkVBQ0hFRCgpOwotICAgIHJldHVybjsKLSAgfQotICAvLyBFbXB0eSBwYXJhbWV0
ZXJzIHNob3VsZCByZXN1bHQgaW4gcmVjZWl2aW5nIGJlaW5nIHN0b3BwZWQuCi0gIFJUQ0Vycm9y
IGVyciA9IFZhbGlkYXRlQW5kQXBwbHlBdWRpb1JlY2VpdmVyUGFyYW1ldGVycyhSdHBQYXJhbWV0
ZXJzKCkpOwotICBSVENfRENIRUNLKGVyci5vaygpKTsKLSAgaGF2ZV9hdWRpb19yZWNlaXZlcl8g
PSBmYWxzZTsKLSAgaWYgKCFoYXZlX2F1ZGlvX3NlbmRlcl8pIHsKLSAgICBEZXN0cm95Vm9pY2VD
aGFubmVsKCk7Ci0gIH0KLX0KLQotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6
T25WaWRlb1JlY2VpdmVyRGVzdHJveWVkKCkgewotICBpZiAoIWhhdmVfdmlkZW9fcmVjZWl2ZXJf
KSB7Ci0gICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy8gRW1wdHkg
cGFyYW1ldGVycyBzaG91bGQgcmVzdWx0IGluIHJlY2VpdmluZyBiZWluZyBzdG9wcGVkLgotICBS
VENFcnJvciBlcnIgPSBWYWxpZGF0ZUFuZEFwcGx5VmlkZW9SZWNlaXZlclBhcmFtZXRlcnMoUnRw
UGFyYW1ldGVycygpKTsKLSAgUlRDX0RDSEVDSyhlcnIub2soKSk7Ci0gIGhhdmVfdmlkZW9fcmVj
ZWl2ZXJfID0gZmFsc2U7Ci0gIGlmICghaGF2ZV92aWRlb19zZW5kZXJfKSB7Ci0gICAgRGVzdHJv
eVZpZGVvQ2hhbm5lbCgpOwotICB9Ci19Ci0KLXZvaWQgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFk
YXB0ZXI6OkNyZWF0ZVZvaWNlQ2hhbm5lbCgpIHsKLSAgdm9pY2VfY2hhbm5lbF8gPSBjaGFubmVs
X21hbmFnZXJfLT5DcmVhdGVWb2ljZUNoYW5uZWwoCi0gICAgICBjYWxsXy5nZXQoKSwgbWVkaWFf
Y29uZmlnXywgaW5uZXJfYXVkaW9fdHJhbnNwb3J0Xy0+R2V0SW50ZXJuYWwoKSwKLSAgICAgIHNp
Z25hbGluZ190aHJlYWRfLCAiYXVkaW8iLCBmYWxzZSwgcnRjOjpDcnlwdG9PcHRpb25zKCksCi0g
ICAgICBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSk7Ci0gIFJUQ19EQ0hFQ0sodm9pY2VfY2hhbm5l
bF8pOwotICB2b2ljZV9jaGFubmVsXy0+RW5hYmxlKHRydWUpOwotfQotCi12b2lkIFJ0cFRyYW5z
cG9ydENvbnRyb2xsZXJBZGFwdGVyOjpDcmVhdGVWaWRlb0NoYW5uZWwoKSB7Ci0gIHZpZGVvX2No
YW5uZWxfID0gY2hhbm5lbF9tYW5hZ2VyXy0+Q3JlYXRlVmlkZW9DaGFubmVsKAotICAgICAgY2Fs
bF8uZ2V0KCksIG1lZGlhX2NvbmZpZ18sIGlubmVyX3ZpZGVvX3RyYW5zcG9ydF8tPkdldEludGVy
bmFsKCksCi0gICAgICBzaWduYWxpbmdfdGhyZWFkXywgInZpZGVvIiwgZmFsc2UsIHJ0Yzo6Q3J5
cHRvT3B0aW9ucygpLAotICAgICAgY3JpY2tldDo6VmlkZW9PcHRpb25zKCkpOwotICBSVENfRENI
RUNLKHZpZGVvX2NoYW5uZWxfKTsKLSAgdmlkZW9fY2hhbm5lbF8tPkVuYWJsZSh0cnVlKTsKLX0K
LQotdm9pZCBSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6RGVzdHJveVZvaWNlQ2hhbm5l
bCgpIHsKLSAgUlRDX0RDSEVDSyh2b2ljZV9jaGFubmVsXyk7Ci0gIGNoYW5uZWxfbWFuYWdlcl8t
PkRlc3Ryb3lWb2ljZUNoYW5uZWwodm9pY2VfY2hhbm5lbF8pOwotICB2b2ljZV9jaGFubmVsXyA9
IG51bGxwdHI7Ci0gIGlubmVyX2F1ZGlvX3RyYW5zcG9ydF8gPSBudWxscHRyOwotfQotCi12b2lk
IFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJBZGFwdGVyOjpEZXN0cm95VmlkZW9DaGFubmVsKCkgewot
ICBSVENfRENIRUNLKHZpZGVvX2NoYW5uZWxfKTsKLSAgY2hhbm5lbF9tYW5hZ2VyXy0+RGVzdHJv
eVZpZGVvQ2hhbm5lbCh2aWRlb19jaGFubmVsXyk7Ci0gIHZpZGVvX2NoYW5uZWxfID0gbnVsbHB0
cjsKLSAgaW5uZXJfdmlkZW9fdHJhbnNwb3J0XyA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgUnRwVHJh
bnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkNvcHlSdGNwUGFyYW1ldGVyc1RvRGVzY3JpcHRpb25z
KAotICAgIGNvbnN0IFJ0Y3BQYXJhbWV0ZXJzJiBwYXJhbXMsCi0gICAgY3JpY2tldDo6TWVkaWFD
b250ZW50RGVzY3JpcHRpb24qIGxvY2FsLAotICAgIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2Ny
aXB0aW9uKiByZW1vdGUpIHsKLSAgbG9jYWwtPnNldF9ydGNwX211eChwYXJhbXMubXV4KTsKLSAg
cmVtb3RlLT5zZXRfcnRjcF9tdXgocGFyYW1zLm11eCk7Ci0gIGxvY2FsLT5zZXRfcnRjcF9yZWR1
Y2VkX3NpemUocGFyYW1zLnJlZHVjZWRfc2l6ZSk7Ci0gIHJlbW90ZS0+c2V0X3J0Y3BfcmVkdWNl
ZF9zaXplKHBhcmFtcy5yZWR1Y2VkX3NpemUpOwotICBmb3IgKGNyaWNrZXQ6OlN0cmVhbVBhcmFt
cyYgc3RyZWFtX3BhcmFtcyA6IGxvY2FsLT5tdXRhYmxlX3N0cmVhbXMoKSkgewotICAgIHN0cmVh
bV9wYXJhbXMuY25hbWUgPSBwYXJhbXMuY25hbWU7Ci0gIH0KLX0KLQotdWludDMyX3QgUnRwVHJh
bnNwb3J0Q29udHJvbGxlckFkYXB0ZXI6OkdlbmVyYXRlVW51c2VkU3NyYygKLSAgICBzdGQ6OnNl
dDx1aW50MzJfdD4qIG5ld19zc3JjcykgY29uc3QgewotICB1aW50MzJfdCBzc3JjOwotICBkbyB7
Ci0gICAgc3NyYyA9IHJ0Yzo6Q3JlYXRlUmFuZG9tTm9uWmVyb0lkKCk7Ci0gIH0gd2hpbGUgKAot
ICAgICAgY3JpY2tldDo6R2V0U3RyZWFtQnlTc3JjKGxvY2FsX2F1ZGlvX2Rlc2NyaXB0aW9uXy5z
dHJlYW1zKCksIHNzcmMpIHx8Ci0gICAgICBjcmlja2V0OjpHZXRTdHJlYW1CeVNzcmMocmVtb3Rl
X2F1ZGlvX2Rlc2NyaXB0aW9uXy5zdHJlYW1zKCksIHNzcmMpIHx8Ci0gICAgICBjcmlja2V0OjpH
ZXRTdHJlYW1CeVNzcmMobG9jYWxfdmlkZW9fZGVzY3JpcHRpb25fLnN0cmVhbXMoKSwgc3NyYykg
fHwKLSAgICAgIGNyaWNrZXQ6OkdldFN0cmVhbUJ5U3NyYyhyZW1vdGVfdmlkZW9fZGVzY3JpcHRp
b25fLnN0cmVhbXMoKSwgc3NyYykgfHwKLSAgICAgICFuZXdfc3NyY3MtPmluc2VydChzc3JjKS5z
ZWNvbmQpOwotICByZXR1cm4gc3NyYzsKLX0KLQotUlRDRXJyb3JPcjxjcmlja2V0OjpTdHJlYW1Q
YXJhbXNWZWM+Ci1SdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcjo6TWFrZVNlbmRTdHJlYW1Q
YXJhbXNWZWMoCi0gICAgc3RkOjp2ZWN0b3I8UnRwRW5jb2RpbmdQYXJhbWV0ZXJzPiBlbmNvZGlu
Z3MsCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNuYW1lLAotICAgIGNvbnN0IGNyaWNrZXQ6Ok1l
ZGlhQ29udGVudERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikgY29uc3QgewotICBpZiAoZW5jb2Rp
bmdzLnNpemUoKSA+IDF1KSB7Ci0gICAgTE9HX0FORF9SRVRVUk5fRVJST1Iod2VicnRjOjpSVENF
cnJvclR5cGU6OlVOU1VQUE9SVEVEX1BBUkFNRVRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAiT1JUQyBBUEkgaW1wbGVtZW50YXRpb24gZG9lc24ndCBjdXJyZW50bHkgIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICJzdXBwb3J0IHNpbXVsY2FzdCBvciBsYXllcmVkIGVuY29kaW5ncy4i
KTsKLSAgfSBlbHNlIGlmIChlbmNvZGluZ3MuZW1wdHkoKSkgewotICAgIHJldHVybiBjcmlja2V0
OjpTdHJlYW1QYXJhbXNWZWMoKTsKLSAgfQotICBSdHBFbmNvZGluZ1BhcmFtZXRlcnMmIGVuY29k
aW5nID0gZW5jb2RpbmdzWzBdOwotICBzdGQ6OnNldDx1aW50MzJfdD4gbmV3X3NzcmNzOwotICBp
ZiAoZW5jb2Rpbmcuc3NyYykgewotICAgIG5ld19zc3Jjcy5pbnNlcnQoKmVuY29kaW5nLnNzcmMp
OwotICB9Ci0gIGlmIChlbmNvZGluZy5ydHggJiYgZW5jb2RpbmcucnR4LT5zc3JjKSB7Ci0gICAg
bmV3X3NzcmNzLmluc2VydCgqZW5jb2RpbmcucnR4LT5zc3JjKTsKLSAgfQotICAvLyBNYXkgbmVl
ZCB0byBmaWxsIG1pc3NpbmcgU1NSQ3Mgd2l0aCBnZW5lcmF0ZWQgb25lcy4KLSAgaWYgKCFlbmNv
ZGluZy5zc3JjKSB7Ci0gICAgaWYgKCFkZXNjcmlwdGlvbi5zdHJlYW1zKCkuZW1wdHkoKSkgewot
ICAgICAgZW5jb2Rpbmcuc3NyYy5lbXBsYWNlKGRlc2NyaXB0aW9uLnN0cmVhbXMoKVswXS5maXJz
dF9zc3JjKCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICBlbmNvZGluZy5zc3JjLmVtcGxhY2UoR2Vu
ZXJhdGVVbnVzZWRTc3JjKCZuZXdfc3NyY3MpKTsKLSAgICB9Ci0gIH0KLSAgaWYgKGVuY29kaW5n
LnJ0eCAmJiAhZW5jb2RpbmcucnR4LT5zc3JjKSB7Ci0gICAgdWludDMyX3QgZXhpc3RpbmdfcnR4
X3NzcmM7Ci0gICAgaWYgKCFkZXNjcmlwdGlvbi5zdHJlYW1zKCkuZW1wdHkoKSAmJgotICAgICAg
ICBkZXNjcmlwdGlvbi5zdHJlYW1zKClbMF0uR2V0RmlkU3NyYygKLSAgICAgICAgICAgIGRlc2Ny
aXB0aW9uLnN0cmVhbXMoKVswXS5maXJzdF9zc3JjKCksICZleGlzdGluZ19ydHhfc3NyYykpIHsK
LSAgICAgIGVuY29kaW5nLnJ0eC0+c3NyYy5lbXBsYWNlKGV4aXN0aW5nX3J0eF9zc3JjKTsKLSAg
ICB9IGVsc2UgewotICAgICAgZW5jb2RpbmcucnR4LT5zc3JjLmVtcGxhY2UoR2VuZXJhdGVVbnVz
ZWRTc3JjKCZuZXdfc3NyY3MpKTsKLSAgICB9Ci0gIH0KLQotICBhdXRvIHJlc3VsdCA9IFRvQ3Jp
Y2tldFN0cmVhbVBhcmFtc1ZlYyhlbmNvZGluZ3MpOwotICBpZiAoIXJlc3VsdC5vaygpKSB7Ci0g
ICAgcmV0dXJuIHJlc3VsdC5Nb3ZlRXJyb3IoKTsKLSAgfQotICAvLyBJZiBjb252ZXJzaW9uIHdh
cyBzdWNjZXNzZnVsLCB0aGVyZSBzaG91bGQgYmUgb25lIFN0cmVhbVBhcmFtcy4KLSAgUlRDX0RD
SEVDS19FUSgxdSwgcmVzdWx0LnZhbHVlKCkuc2l6ZSgpKTsKLSAgcmVzdWx0LnZhbHVlKClbMF0u
Y25hbWUgPSBjbmFtZTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvb3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9ydHB0cmFuc3BvcnRjb250cm9sbGVyYWRh
cHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGM1NzhhYTQ2ZjVjYWFiYjc3
MGQyMzQwZGU3ZDQ0YzU5Y2FiNWJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29y
dGMvcnRwdHJhbnNwb3J0Y29udHJvbGxlcmFkYXB0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDIy
MSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE9SVENfUlRQVFJBTlNQT1JU
Q09OVFJPTExFUkFEQVBURVJfSF8KLSNkZWZpbmUgT1JUQ19SVFBUUkFOU1BPUlRDT05UUk9MTEVS
QURBUFRFUl9IXwotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRl
IDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiYXBpL29ydGMvb3J0Y3J0
cHJlY2VpdmVyaW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvb3J0Y3J0cHNlbmRlcmlu
dGVyZmFjZS5oIgotI2luY2x1ZGUgImFwaS9vcnRjL3J0cHRyYW5zcG9ydGNvbnRyb2xsZXJpbnRl
cmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvb3J0Yy9zcnRwdHJhbnNwb3J0aW50ZXJmYWNlLmgiCi0j
aW5jbHVkZSAiY2FsbC9jYWxsLmgiCi0jaW5jbHVkZSAiY2FsbC9ydHBfdHJhbnNwb3J0X2NvbnRy
b2xsZXJfc2VuZC5oIgotI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRf
bG9nLmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuaCIgIC8vIEZvciBNZWRp
YUNvbmZpZy4KLSNpbmNsdWRlICJwYy9jaGFubmVsbWFuYWdlci5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9z
aWdzbG90L3NpZ3Nsb3QuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKLQotbmFtZXNw
YWNlIHdlYnJ0YyB7Ci0KLWNsYXNzIFJ0cFRyYW5zcG9ydEFkYXB0ZXI7Ci1jbGFzcyBPcnRjUnRw
U2VuZGVyQWRhcHRlcjsKLWNsYXNzIE9ydGNSdHBSZWNlaXZlckFkYXB0ZXI7Ci0KLS8vIEltcGxl
bWVudGF0aW9uIG9mIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UuIFdyYXBzIGEgQ2Fs
bCwKLS8vIGEgVm9pY2VDaGFubmVsIGFuZCBWaWRlb0NoYW5uZWwsIGFuZCBtYWludGFpbnMgYSBs
aXN0IG9mIGRlcGVuZGVudCBSVFAKLS8vIHRyYW5zcG9ydHMuCi0vLwotLy8gV2hlbiB1c2VkIGFs
b25nIHdpdGggYW4gUnRwU2VuZGVyQWRhcHRlciBvciBSdHBSZWNlaXZlckFkYXB0ZXIsIHRoZQot
Ly8gc2VuZGVyL3JlY2VpdmVyIHBhc3NlcyBpdHMgcGFyYW1ldGVycyBhbG9uZyB0byB0aGlzIGNs
YXNzLCB3aGljaCB0dXJucyB0aGVtCi0vLyBpbnRvIGNyaWNrZXQ6OiBtZWRpYSBkZXNjcmlwdGlv
bnMgKHRoZSBpbnRlcmZhY2UgdXNlZCBieSBCYXNlQ2hhbm5lbCkuCi0vLwotLy8gRHVlIHRvIHRo
ZSBmYWN0IHRoYXQgQmFzZUNoYW5uZWwgaGFzIGRpZmZlcmVudCBzdWJjbGFzc2VzIGZvciBhdWRp
by92aWRlbywKLS8vIHRoZSBhY3R1YWwgQmFzZUNoYW5uZWwgb2JqZWN0IGlzIG5vdCBjcmVhdGVk
IHVudGlsIGFuIFJ0cFNlbmRlci9SdHBSZWNlaXZlcgotLy8gbmVlZHMgdGhlbS4KLS8vCi0vLyBB
bGwgbWV0aG9kcyBzaG91bGQgYmUgY2FsbGVkIG9uIHRoZSBzaWduYWxpbmcgdGhyZWFkLgotLy8K
LS8vIFRPRE8oZGVhZGJlZWYpOiBXaGVuIEJhc2VDaGFubmVsIGlzIHNwbGl0IGFwYXJ0IGludG8g
c2VwYXJhdGUKLS8vICJSdHBTZW5kZXIiLyJSdHBUcmFuc2NlaXZlciIvIlJ0cFNlbmRlciIvIlJ0
cFJlY2VpdmVyIiBvYmplY3RzLCB0aGlzIGFkYXB0ZXIKLS8vIG9iamVjdCBjYW4gYmUgcmVwbGFj
ZWQgYnkgYSAicmVhbCIgb25lLgotY2xhc3MgUnRwVHJhbnNwb3J0Q29udHJvbGxlckFkYXB0ZXIg
OiBwdWJsaWMgUnRwVHJhbnNwb3J0Q29udHJvbGxlckludGVyZmFjZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKLSBw
dWJsaWM6Ci0gIC8vIENyZWF0ZXMgYSBwcm94eSB0aGF0IHdpbGwgY2FsbCAicHVibGljIGludGVy
ZmFjZSIgbWV0aG9kcyBvbiB0aGUgY29ycmVjdAotICAvLyB0aHJlYWQuCi0gIC8vCi0gIC8vIERv
ZXNuJ3QgdGFrZSBvd25lcnNoaXAgb2YgYW55IG9iamVjdHMgcGFzc2VkIGluLgotICAvLwotICAv
LyB8Y2hhbm5lbF9tYW5hZ2VyfCBtdXN0IG5vdCBiZSBudWxsLgotICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2U+IENyZWF0ZVByb3hpZWQoCi0g
ICAgICBjb25zdCBjcmlja2V0OjpNZWRpYUNvbmZpZyYgY29uZmlnLAotICAgICAgY3JpY2tldDo6
Q2hhbm5lbE1hbmFnZXIqIGNoYW5uZWxfbWFuYWdlciwKLSAgICAgIHdlYnJ0Yzo6UnRjRXZlbnRM
b2cqIGV2ZW50X2xvZywKLSAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAg
ICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgICBydGM6OlRocmVhZCogbmV0d29y
a190aHJlYWQpOwotCi0gIH5SdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcigpIG92ZXJyaWRl
OwotCi0gIC8vIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24u
Ci0gIHN0ZDo6dmVjdG9yPFJ0cFRyYW5zcG9ydEludGVyZmFjZSo+IEdldFRyYW5zcG9ydHMoKSBj
b25zdCBvdmVycmlkZTsKLQotICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGJ5IE9ydGNGYWN0
b3J5IHRvIGNyZWF0ZSBSdHBUcmFuc3BvcnRzLCBSdHBTZW5kZXJzCi0gIC8vIGFuZCBSdHBSZWNl
aXZlcnMgdXNpbmcgdGhpcyBjb250cm9sbGVyLiBDYWxsZWQgIkNyZWF0ZVByb3hpZWQiIGJlY2F1
c2UKLSAgLy8gdGhlc2UgbWV0aG9kcyByZXR1cm4gcHJveGllcyB0aGF0IHdpbGwgc2FmZWx5IGNh
bGwgbWV0aG9kcyBvbiB0aGUgY29ycmVjdAotICAvLyB0aHJlYWQuCi0gIFJUQ0Vycm9yT3I8c3Rk
Ojp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydEludGVyZmFjZT4+IENyZWF0ZVByb3hpZWRSdHBUcmFu
c3BvcnQoCi0gICAgICBjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBydGNwX3BhcmFtZXRl
cnMsCi0gICAgICBQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UqIHJ0cCwKLSAgICAgIFBhY2tldFRy
YW5zcG9ydEludGVyZmFjZSogcnRjcCk7Ci0KLSAgUlRDRXJyb3JPcjxzdGQ6OnVuaXF1ZV9wdHI8
U3J0cFRyYW5zcG9ydEludGVyZmFjZT4+Ci0gIENyZWF0ZVByb3hpZWRTcnRwVHJhbnNwb3J0KGNv
bnN0IFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMmIHJ0Y3BfcGFyYW1ldGVycywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGFja2V0VHJhbnNwb3J0SW50ZXJmYWNlKiBydHAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhY2tldFRyYW5zcG9ydEludGVyZmFjZSogcnRjcCk7Ci0K
LSAgLy8gfHRyYW5zcG9ydF9wcm94eXwgbmVlZHMgdG8gYmUgYSBwcm94eSB0byBhIHRyYW5zcG9y
dCBiZWNhdXNlIHRoZQotICAvLyBhcHBsaWNhdGlvbiBtYXkgY2FsbCBHZXRUcmFuc3BvcnQoKSBv
biB0aGUgcmV0dXJuZWQgc2VuZGVyIG9yIHJlY2VpdmVyLAotICAvLyBhbmQgZXhwZWN0cyBpdCB0
byByZXR1cm4gYSB0aHJlYWQtc2FmZSB0cmFuc3BvcnQgcHJveHkuCi0gIFJUQ0Vycm9yT3I8c3Rk
Ojp1bmlxdWVfcHRyPE9ydGNSdHBTZW5kZXJJbnRlcmZhY2U+PiBDcmVhdGVQcm94aWVkUnRwU2Vu
ZGVyKAotICAgICAgY3JpY2tldDo6TWVkaWFUeXBlIGtpbmQsCi0gICAgICBSdHBUcmFuc3BvcnRJ
bnRlcmZhY2UqIHRyYW5zcG9ydF9wcm94eSk7Ci0gIFJUQ0Vycm9yT3I8c3RkOjp1bmlxdWVfcHRy
PE9ydGNSdHBSZWNlaXZlckludGVyZmFjZT4+Ci0gIENyZWF0ZVByb3hpZWRSdHBSZWNlaXZlcihj
cmlja2V0OjpNZWRpYVR5cGUga2luZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFRy
YW5zcG9ydEludGVyZmFjZSogdHJhbnNwb3J0X3Byb3h5KTsKLQotICAvLyBNZXRob2RzIHVzZWQg
aW50ZXJuYWxseSBieSBvdGhlciAiYWRhcHRlciIgY2xhc3Nlcy4KLSAgcnRjOjpUaHJlYWQqIHNp
Z25hbGluZ190aHJlYWQoKSBjb25zdCB7IHJldHVybiBzaWduYWxpbmdfdGhyZWFkXzsgfQotICBy
dGM6OlRocmVhZCogd29ya2VyX3RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHdvcmtlcl90aHJlYWRf
OyB9Ci0gIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG5ldHdv
cmtfdGhyZWFkXzsgfQotCi0gIC8vIHxwYXJhbWV0ZXJzLmtlZXBhbGl2ZXwgd2lsbCBiZSBzZXQg
Zm9yIEFMTCBSVFAgdHJhbnNwb3J0cyBpbiB0aGUgY2FsbC4KLSAgUlRDRXJyb3IgU2V0UnRwVHJh
bnNwb3J0UGFyYW1ldGVycyhjb25zdCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydEludGVy
ZmFjZSogaW5uZXJfdHJhbnNwb3J0KTsKLSAgdm9pZCBTZXRSdHBUcmFuc3BvcnRQYXJhbWV0ZXJz
X3coY29uc3QgUnRwVHJhbnNwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7Ci0KLSAgY3JpY2tl
dDo6Vm9pY2VDaGFubmVsKiB2b2ljZV9jaGFubmVsKCkgeyByZXR1cm4gdm9pY2VfY2hhbm5lbF87
IH0KLSAgY3JpY2tldDo6VmlkZW9DaGFubmVsKiB2aWRlb19jaGFubmVsKCkgeyByZXR1cm4gdmlk
ZW9fY2hhbm5lbF87IH0KLQotICAvLyB8cHJpbWFyeV9zc3JjfCBvdXQgcGFyYW1ldGVyIGlzIGZp
bGxlZCB3aXRoIGVpdGhlcgotICAvLyB8cGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyY3wsIG9y
IGEgZ2VuZXJhdGVkIFNTUkMgaWYgdGhhdCdzIGxlZnQgdW5zZXQuCi0gIFJUQ0Vycm9yIFZhbGlk
YXRlQW5kQXBwbHlBdWRpb1NlbmRlclBhcmFtZXRlcnMoCi0gICAgICBjb25zdCBSdHBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLAotICAgICAgdWludDMyX3QqIHByaW1hcnlfc3NyYyk7Ci0gIFJUQ0Vy
cm9yIFZhbGlkYXRlQW5kQXBwbHlWaWRlb1NlbmRlclBhcmFtZXRlcnMoCi0gICAgICBjb25zdCBS
dHBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLAotICAgICAgdWludDMyX3QqIHByaW1hcnlfc3NyYyk7
Ci0gIFJUQ0Vycm9yIFZhbGlkYXRlQW5kQXBwbHlBdWRpb1JlY2VpdmVyUGFyYW1ldGVycygKLSAg
ICAgIGNvbnN0IFJ0cFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwotICBSVENFcnJvciBWYWxpZGF0
ZUFuZEFwcGx5VmlkZW9SZWNlaXZlclBhcmFtZXRlcnMoCi0gICAgICBjb25zdCBSdHBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKTsKLQotIHByb3RlY3RlZDoKLSAgUnRwVHJhbnNwb3J0Q29udHJvbGxl
ckFkYXB0ZXIqIEdldEludGVybmFsKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQotCi0gcHJp
dmF0ZToKLSAgLy8gT25seSBleHBlY3RlZCB0byBiZSBjYWxsZWQgYnkgUnRwVHJhbnNwb3J0Q29u
dHJvbGxlckFkYXB0ZXI6OkNyZWF0ZVByb3hpZWQuCi0gIFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJB
ZGFwdGVyKGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnJiBjb25maWcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkNoYW5uZWxNYW5hZ2VyKiBjaGFubmVsX21hbmFn
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6UnRjRXZlbnRMb2cq
IGV2ZW50X2xvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQq
IHNpZ25hbGluZ190aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6
VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dGM6OlRocmVhZCogbmV0d29ya190aHJlYWQpOwotICB2b2lkIEluaXRfdygpOwotICB2b2lkIENs
b3NlX3coKTsKLQotICAvLyBUaGVzZSByZXR1cm4gYW4gZXJyb3IgaWYgYW5vdGhlciBvZiB0aGUg
c2FtZSB0eXBlIG9mIG9iamVjdCBpcyBhbHJlYWR5Ci0gIC8vIGF0dGFjaGVkLCBvciBpZiB8dHJh
bnNwb3J0X3Byb3h5fCBjYW4ndCBiZSB1c2VkIHdpdGggdGhlIHNlbmRlci9yZWNlaXZlcgotICAv
LyBkdWUgdG8gdGhlIGxpbWl0YXRpb24gdGhhdCB0aGUgc2VuZGVyL3JlY2VpdmVyIG9mIHRoZSBz
YW1lIG1lZGlhIHR5cGUgbXVzdAotICAvLyB1c2UgdGhlIHNhbWUgdHJhbnNwb3J0LgotICBSVENF
cnJvciBBdHRhY2hBdWRpb1NlbmRlcihPcnRjUnRwU2VuZGVyQWRhcHRlciogc2VuZGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIGlubmVyX3Ry
YW5zcG9ydCk7Ci0gIFJUQ0Vycm9yIEF0dGFjaFZpZGVvU2VuZGVyKE9ydGNSdHBTZW5kZXJBZGFw
dGVyKiBzZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cFRyYW5zcG9ydElu
dGVyZmFjZSogaW5uZXJfdHJhbnNwb3J0KTsKLSAgUlRDRXJyb3IgQXR0YWNoQXVkaW9SZWNlaXZl
cihPcnRjUnRwUmVjZWl2ZXJBZGFwdGVyKiByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcmZhY2UqIGlubmVyX3RyYW5zcG9ydCk7Ci0gIFJU
Q0Vycm9yIEF0dGFjaFZpZGVvUmVjZWl2ZXIoT3J0Y1J0cFJlY2VpdmVyQWRhcHRlciogcmVjZWl2
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwVHJhbnNwb3J0SW50ZXJmYWNl
KiBpbm5lcl90cmFuc3BvcnQpOwotCi0gIHZvaWQgT25SdHBUcmFuc3BvcnREZXN0cm95ZWQoUnRw
VHJhbnNwb3J0QWRhcHRlciogdHJhbnNwb3J0KTsKLQotICB2b2lkIE9uQXVkaW9TZW5kZXJEZXN0
cm95ZWQoKTsKLSAgdm9pZCBPblZpZGVvU2VuZGVyRGVzdHJveWVkKCk7Ci0gIHZvaWQgT25BdWRp
b1JlY2VpdmVyRGVzdHJveWVkKCk7Ci0gIHZvaWQgT25WaWRlb1JlY2VpdmVyRGVzdHJveWVkKCk7
Ci0KLSAgdm9pZCBDcmVhdGVWb2ljZUNoYW5uZWwoKTsKLSAgdm9pZCBDcmVhdGVWaWRlb0NoYW5u
ZWwoKTsKLSAgdm9pZCBEZXN0cm95Vm9pY2VDaGFubmVsKCk7Ci0gIHZvaWQgRGVzdHJveVZpZGVv
Q2hhbm5lbCgpOwotCi0gIHZvaWQgQ29weVJ0Y3BQYXJhbWV0ZXJzVG9EZXNjcmlwdGlvbnMoCi0g
ICAgICBjb25zdCBSdGNwUGFyYW1ldGVycyYgcGFyYW1zLAotICAgICAgY3JpY2tldDo6TWVkaWFD
b250ZW50RGVzY3JpcHRpb24qIGxvY2FsLAotICAgICAgY3JpY2tldDo6TWVkaWFDb250ZW50RGVz
Y3JpcHRpb24qIHJlbW90ZSk7Ci0KLSAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGFu
IFNTUkMgdGhhdCBkb2Vzbid0IG1hdGNoIG9uZSBpbiBhbnkgb2YgdGhlCi0gIC8vICJjb250ZW50
IGRlc2NyaXB0aW9uIiBzdHJ1Y3RzLCBvciBpbiB8bmV3X3NzcmNzfCAod2hpY2ggaXMgbmVlZGVk
IHNpbmNlCi0gIC8vIG11bHRpcGxlIFNTUkNzIG1heSBiZSBnZW5lcmF0ZWQgaW4gb25lIGdvKS4K
LSAgdWludDMyX3QgR2VuZXJhdGVVbnVzZWRTc3JjKHN0ZDo6c2V0PHVpbnQzMl90PiogbmV3X3Nz
cmNzKSBjb25zdDsKLQotICAvLyB8ZGVzY3JpcHRpb258IGlzIHRoZSBtYXRjaGluZyBkZXNjcmlw
dGlvbiB3aGVyZSBleGlzdGluZyBTU1JDcyBjYW4gYmUKLSAgLy8gZm91bmQuCi0gIC8vCi0gIC8v
IFRoaXMgaXMgYSBtZW1iZXIgZnVuY3Rpb24gYmVjYXVzZSBpdCBtYXkgbmVlZCB0byBnZW5lcmF0
ZSBTU1JDcyB0aGF0IGRvbid0Ci0gIC8vIG1hdGNoIGV4aXN0aW5nIG9uZXMsIHdoaWNoIGlzIG1v
cmUgdGhhbiBUb1N0cmVhbVBhcmFtc1ZlYyBkb2VzLgotICBSVENFcnJvck9yPGNyaWNrZXQ6OlN0
cmVhbVBhcmFtc1ZlYz4gTWFrZVNlbmRTdHJlYW1QYXJhbXNWZWMoCi0gICAgICBzdGQ6OnZlY3Rv
cjxSdHBFbmNvZGluZ1BhcmFtZXRlcnM+IGVuY29kaW5ncywKLSAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBjbmFtZSwKLSAgICAgIGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbikgY29uc3Q7Ci0KLSAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWRf
OwotICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZF87Ci0gIHJ0Yzo6VGhyZWFkKiBuZXR3b3Jr
X3RocmVhZF87Ci0gIC8vIHx0cmFuc3BvcnRfcHJveGllc198IGFuZCB8aW5uZXJfYXVkaW9fdHJh
bnNwb3J0X3wvfGlubmVyX2F1ZGlvX3RyYW5zcG9ydF98Ci0gIC8vIGFyZSBzb21ld2hhdCByZWR1
bmRhbnQsIGJ1dCB0aGUgbGF0dGVyIGFyZSBvbmx5IHNldCB3aGVuCi0gIC8vIFJ0cFNlbmRlcnMv
UnRwUmVjZWl2ZXJzIGFyZSBhdHRhY2hlZCB0byB0aGUgdHJhbnNwb3J0LgotICBzdGQ6OnZlY3Rv
cjxSdHBUcmFuc3BvcnRJbnRlcmZhY2UqPiB0cmFuc3BvcnRfcHJveGllc187Ci0gIFJ0cFRyYW5z
cG9ydEludGVyZmFjZSogaW5uZXJfYXVkaW9fdHJhbnNwb3J0XyA9IG51bGxwdHI7Ci0gIFJ0cFRy
YW5zcG9ydEludGVyZmFjZSogaW5uZXJfdmlkZW9fdHJhbnNwb3J0XyA9IG51bGxwdHI7Ci0gIGNv
bnN0IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnIG1lZGlhX2NvbmZpZ187Ci0gIFJ0cEtlZXBBbGl2ZUNv
bmZpZyBrZWVwYWxpdmVfOwotICBjcmlja2V0OjpDaGFubmVsTWFuYWdlciogY2hhbm5lbF9tYW5h
Z2VyXzsKLSAgd2VicnRjOjpSdGNFdmVudExvZyogZXZlbnRfbG9nXzsKLSAgc3RkOjp1bmlxdWVf
cHRyPENhbGw+IGNhbGxfOwotICB3ZWJydGM6OlJ0cFRyYW5zcG9ydENvbnRyb2xsZXJTZW5kKiBj
YWxsX3NlbmRfcnRwX3RyYW5zcG9ydF9jb250cm9sbGVyXzsKLQotICAvLyBCYXNlQ2hhbm5lbCB0
YWtlcyBjb250ZW50IGRlc2NyaXB0aW9ucyBhcyBpbnB1dCwgc28gd2Ugc3RvcmUgdGhlbSBoZXJl
Ci0gIC8vIHN1Y2ggdGhhdCB0aGV5IGNhbiBiZSB1cGRhdGVkIHdoZW4gYSBuZXcgUnRwU2VuZGVy
QWRhcHRlci8KLSAgLy8gUnRwUmVjZWl2ZXJBZGFwdGVyIGF0dGFjaGVzIGl0c2VsZi4KLSAgY3Jp
Y2tldDo6QXVkaW9Db250ZW50RGVzY3JpcHRpb24gbG9jYWxfYXVkaW9fZGVzY3JpcHRpb25fOwot
ICBjcmlja2V0OjpBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiByZW1vdGVfYXVkaW9fZGVzY3JpcHRp
b25fOwotICBjcmlja2V0OjpWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiBsb2NhbF92aWRlb19kZXNj
cmlwdGlvbl87Ci0gIGNyaWNrZXQ6OlZpZGVvQ29udGVudERlc2NyaXB0aW9uIHJlbW90ZV92aWRl
b19kZXNjcmlwdGlvbl87Ci0gIGNyaWNrZXQ6OlZvaWNlQ2hhbm5lbCogdm9pY2VfY2hhbm5lbF8g
PSBudWxscHRyOwotICBjcmlja2V0OjpWaWRlb0NoYW5uZWwqIHZpZGVvX2NoYW5uZWxfID0gbnVs
bHB0cjsKLSAgYm9vbCBoYXZlX2F1ZGlvX3NlbmRlcl8gPSBmYWxzZTsKLSAgYm9vbCBoYXZlX3Zp
ZGVvX3NlbmRlcl8gPSBmYWxzZTsKLSAgYm9vbCBoYXZlX2F1ZGlvX3JlY2VpdmVyXyA9IGZhbHNl
OwotICBib29sIGhhdmVfdmlkZW9fcmVjZWl2ZXJfID0gZmFsc2U7Ci0KLSAgUlRDX0RJU0FMTE9X
X0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhSdHBUcmFuc3BvcnRDb250cm9sbGVyQWRhcHRlcik7Ci19
OwotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCi0KLSNlbmRpZiAgLy8gT1JUQ19SVFBUUkFOU1BP
UlRDT05UUk9MTEVSQURBUFRFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9zcnRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy9zcnRwdHJhbnNwb3J0
X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTA2YWE3MDQxNGUy
OWFlMjdiMGZiOWFkODFkMmQ0OThmZTIxMmFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL29ydGMvc3J0cHRyYW5zcG9ydF91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEy
NSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaW5j
bHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgot
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3Rvcnku
aCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2VtZWRpYWVuZ2luZS5oIgotI2luY2x1ZGUgIm9y
dGMvb3J0Y2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJvcnRjL3Rlc3RydHBwYXJhbWV0ZXJzLmgiCi0j
aW5jbHVkZSAicDJwL2Jhc2UvZmFrZXBhY2tldHRyYW5zcG9ydC5oIgotI2luY2x1ZGUgInJ0Y19i
YXNlL2d1bml0LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1zdGF0aWMgY29uc3QgY2hhciBr
VGVzdFNoYTFLZXlQYXJhbXMxW10gPQotICAgICJpbmxpbmU6V1ZOZlgxOXpaVzFqZEd3Z0tDa2dl
d2t5TWpBN2ZRcDlDblZ1YkdWeiI7Ci1zdGF0aWMgY29uc3QgY2hhciBrVGVzdFNoYTFLZXlQYXJh
bXMyW10gPQotICAgICJpbmxpbmU6UFMxdVFDVmVlQ0ZDYW5WbWNqa3BQeXdqTldoY1lEMG1YWHR4
YVZCUiI7Ci1zdGF0aWMgY29uc3QgY2hhciBrVGVzdEdjbUtleVBhcmFtczNbXSA9Ci0gICAgImlu
bGluZTplMTY2S0ZsS3pKc0dXMGQ1YXBYK3JySTA1dnhicnZNSkV6RkkxNGFURENhNjNJUlRsTEs0
aUg2NnVPST0iOwotCi1zdGF0aWMgY29uc3QgY3JpY2tldDo6Q3J5cHRvUGFyYW1zIGtUZXN0U2hh
MUNyeXB0b1BhcmFtczEoCi0gICAgMSwKLSAgICAiQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAiLAot
ICAgIGtUZXN0U2hhMUtleVBhcmFtczEsCi0gICAgIiIpOwotc3RhdGljIGNvbnN0IGNyaWNrZXQ6
OkNyeXB0b1BhcmFtcyBrVGVzdFNoYTFDcnlwdG9QYXJhbXMyKAotICAgIDEsCi0gICAgIkFFU19D
TV8xMjhfSE1BQ19TSEExXzgwIiwKLSAgICBrVGVzdFNoYTFLZXlQYXJhbXMyLAotICAgICIiKTsK
LXN0YXRpYyBjb25zdCBjcmlja2V0OjpDcnlwdG9QYXJhbXMga1Rlc3RHY21DcnlwdG9QYXJhbXMz
KDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiQUVBRF9BRVNfMjU2X0dDTSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrVGVzdEdjbUtleVBhcmFtczMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIik7Ci0KLS8v
IFRoaXMgdGVzdCB1c2VzIGZha2UgcGFja2V0IHRyYW5zcG9ydHMgYW5kIGEgZmFrZSBtZWRpYSBl
bmdpbmUsIGluIG9yZGVyIHRvCi0vLyB0ZXN0IHRoZSBTcnRwVHJhbnNwb3J0IGF0IG9ubHkgYW4g
QVBJIGxldmVsLiBBbnkgZW5kLXRvLWVuZCB0ZXN0IHNob3VsZCBnbyBpbgotLy8gb3J0Y2ZhY3Rv
cnlfaW50ZWdyYXRpb250ZXN0LmNjIGluc3RlYWQuCi1jbGFzcyBTcnRwVHJhbnNwb3J0VGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6Ci0gIFNydHBUcmFuc3BvcnRUZXN0KCkg
ewotICAgIGZha2VfbWVkaWFfZW5naW5lXyA9IG5ldyBjcmlja2V0OjpGYWtlTWVkaWFFbmdpbmUo
KTsKLSAgICAvLyBOb3RlOiBUaGlzIGRvZXNuJ3QgbmVlZCB0byB1c2UgZmFrZSBuZXR3b3JrIGNs
YXNzZXMsIHNpbmNlIGl0IHVzZXMKLSAgICAvLyBGYWtlUGFja2V0VHJhbnNwb3J0cy4KLSAgICBh
dXRvIHJlc3VsdCA9IE9ydGNGYWN0b3J5OjpDcmVhdGUoCi0gICAgICAgIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxj
cmlja2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4oZmFrZV9tZWRpYV9lbmdpbmVfKSwKLSAgICAg
ICAgQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwgQ3JlYXRlQnVpbHRpbkF1ZGlv
RGVjb2RlckZhY3RvcnkoKSk7Ci0gICAgb3J0Y19mYWN0b3J5XyA9IHJlc3VsdC5Nb3ZlVmFsdWUo
KTsKLSAgICBydHBfdHJhbnNwb3J0X2NvbnRyb2xsZXJfID0KLSAgICAgICAgb3J0Y19mYWN0b3J5
Xy0+Q3JlYXRlUnRwVHJhbnNwb3J0Q29udHJvbGxlcigpLk1vdmVWYWx1ZSgpOwotCi0gICAgZmFr
ZV9wYWNrZXRfdHJhbnNwb3J0Xy5yZXNldChuZXcgcnRjOjpGYWtlUGFja2V0VHJhbnNwb3J0KCJm
YWtlIikpOwotICAgIGF1dG8gc3J0cF90cmFuc3BvcnRfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+
Q3JlYXRlU3J0cFRyYW5zcG9ydCgKLSAgICAgICAgcnRwX3RyYW5zcG9ydF9wYXJhbWV0ZXJzXywg
ZmFrZV9wYWNrZXRfdHJhbnNwb3J0Xy5nZXQoKSwgbnVsbHB0ciwKLSAgICAgICAgcnRwX3RyYW5z
cG9ydF9jb250cm9sbGVyXy5nZXQoKSk7Ci0gICAgc3J0cF90cmFuc3BvcnRfID0gc3J0cF90cmFu
c3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIE93bmVk
IGJ5IHxvcnRjX2ZhY3RvcnlffC4KLSAgY3JpY2tldDo6RmFrZU1lZGlhRW5naW5lKiBmYWtlX21l
ZGlhX2VuZ2luZV87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxPcnRjRmFjdG9yeUludGVyZmFjZT4gb3J0
Y19mYWN0b3J5XzsKLSAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zcG9ydENvbnRyb2xsZXJJbnRl
cmZhY2U+IHJ0cF90cmFuc3BvcnRfY29udHJvbGxlcl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxTcnRw
VHJhbnNwb3J0SW50ZXJmYWNlPiBzcnRwX3RyYW5zcG9ydF87Ci0gIFJ0cFRyYW5zcG9ydFBhcmFt
ZXRlcnMgcnRwX3RyYW5zcG9ydF9wYXJhbWV0ZXJzXzsKLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6
RmFrZVBhY2tldFRyYW5zcG9ydD4gZmFrZV9wYWNrZXRfdHJhbnNwb3J0XzsKLX07Ci0KLS8vIFRl
c3RzIHRoYXQgc2V0dGluZyB0aGUgU1JUUCBzZW5kL3JlY2VpdmUga2V5IHN1Y2NlZWRzLgotVEVT
VF9GKFNydHBUcmFuc3BvcnRUZXN0LCBTZXRTcnRwU2VuZEFuZFJlY2VpdmVLZXkpIHsKLSAgRVhQ
RUNUX1RSVUUoc3J0cF90cmFuc3BvcnRfLT5TZXRTcnRwU2VuZEtleShrVGVzdFNoYTFDcnlwdG9Q
YXJhbXMxKS5vaygpKTsKLSAgRVhQRUNUX1RSVUUoc3J0cF90cmFuc3BvcnRfLT5TZXRTcnRwUmVj
ZWl2ZUtleShrVGVzdFNoYTFDcnlwdG9QYXJhbXMyKS5vaygpKTsKLSAgYXV0byBzZW5kZXJfcmVz
dWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVf
QVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1RfVFJVRShzZW5kZXJfcmVzdWx0
Lm9rKCkpOwotICBhdXRvIHJlY2VpdmVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNyZWF0ZVJ0
cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgc3J0cF90cmFuc3Bv
cnRfLmdldCgpKTsKLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXJfcmVzdWx0Lm9rKCkpOwotfQotCi0v
LyBUZXN0cyB0aGF0IHNldHRpbmcgdGhlIFNSVFAgc2VuZC9yZWNlaXZlIGtleSB0d2ljZSBpcyBu
b3Qgc3VwcG9ydGVkLgotVEVTVF9GKFNydHBUcmFuc3BvcnRUZXN0LCBTZXRTcnRwU2VuZEFuZFJl
Y2VpdmVLZXlUd2ljZSkgewotICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydF8tPlNldFNydHBT
ZW5kS2V5KGtUZXN0U2hhMUNyeXB0b1BhcmFtczEpLm9rKCkpOwotICBFWFBFQ1RfVFJVRShzcnRw
X3RyYW5zcG9ydF8tPlNldFNydHBSZWNlaXZlS2V5KGtUZXN0U2hhMUNyeXB0b1BhcmFtczIpLm9r
KCkpOwotICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0g
ICAgICAgICAgICBzcnRwX3RyYW5zcG9ydF8tPlNldFNydHBTZW5kS2V5KGtUZXN0U2hhMUNyeXB0
b1BhcmFtczIpLnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVE
X09QRVJBVElPTiwKLSAgICAgICAgICAgIHNydHBfdHJhbnNwb3J0Xy0+U2V0U3J0cFJlY2VpdmVL
ZXkoa1Rlc3RTaGExQ3J5cHRvUGFyYW1zMSkudHlwZSgpKTsKLSAgLy8gRW5zdXJlIHRoYXQgdGhl
IHNlbmRlcnMgYW5kIHJlY2VpdmVycyBjYW4gYmUgY3JlYXRlZCBkZXNwaXRlIHRoZSBwcmV2aW91
cwotICAvLyBlcnJvcnMuCi0gIGF1dG8gc2VuZGVyX3Jlc3VsdCA9IG9ydGNfZmFjdG9yeV8tPkNy
ZWF0ZVJ0cFNlbmRlcihjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3J0cF90cmFuc3BvcnRfLmdl
dCgpKTsKLSAgRVhQRUNUX1RSVUUoc2VuZGVyX3Jlc3VsdC5vaygpKTsKLSAgYXV0byByZWNlaXZl
cl9yZXN1bHQgPSBvcnRjX2ZhY3RvcnlfLT5DcmVhdGVSdHBSZWNlaXZlcigKLSAgICAgIGNyaWNr
ZXQ6Ok1FRElBX1RZUEVfQVVESU8sIHNydHBfdHJhbnNwb3J0Xy5nZXQoKSk7Ci0gIEVYUEVDVF9U
UlVFKHJlY2VpdmVyX3Jlc3VsdC5vaygpKTsKLX0KLQotLy8gVGVzdCB0aGF0IHRoZSBTUlRQIHNl
bmQga2V5IGFuZCByZWNlaXZlIGtleSBtdXN0IGhhdmUgdGhlIHNhbWUgY2lwaGVyIHN1aXRlLgot
VEVTVF9GKFNydHBUcmFuc3BvcnRUZXN0LCBTZXRTcnRwU2VuZEFuZFJlY2VpdmVLZXlEaWZmZXJl
bnRDaXBoZXJTdWl0ZSkgewotICBFWFBFQ1RfVFJVRShzcnRwX3RyYW5zcG9ydF8tPlNldFNydHBT
ZW5kS2V5KGtUZXN0U2hhMUNyeXB0b1BhcmFtczEpLm9rKCkpOwotICBFWFBFQ1RfRVEoUlRDRXJy
b3JUeXBlOjpVTlNVUFBPUlRFRF9PUEVSQVRJT04sCi0gICAgICAgICAgICBzcnRwX3RyYW5zcG9y
dF8tPlNldFNydHBSZWNlaXZlS2V5KGtUZXN0R2NtQ3J5cHRvUGFyYW1zMykudHlwZSgpKTsKLSAg
RVhQRUNUX1RSVUUoc3J0cF90cmFuc3BvcnRfLT5TZXRTcnRwUmVjZWl2ZUtleShrVGVzdFNoYTFD
cnlwdG9QYXJhbXMyKS5vaygpKTsKLSAgLy8gRW5zdXJlIHRoYXQgdGhlIHNlbmRlcnMgYW5kIHJl
Y2VpdmVycyBjYW4gYmUgY3JlYXRlZCBkZXNwaXRlIHRoZSBwcmV2aW91cwotICAvLyBlcnJvci4K
LSAgYXV0byBzZW5kZXJfcmVzdWx0ID0gb3J0Y19mYWN0b3J5Xy0+Q3JlYXRlUnRwU2VuZGVyKGNy
aWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcnRwX3RyYW5zcG9ydF8uZ2V0KCkpOwotICBFWFBFQ1Rf
VFJVRShzZW5kZXJfcmVzdWx0Lm9rKCkpOwotICBhdXRvIHJlY2VpdmVyX3Jlc3VsdCA9IG9ydGNf
ZmFjdG9yeV8tPkNyZWF0ZVJ0cFJlY2VpdmVyKAotICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9B
VURJTywgc3J0cF90cmFuc3BvcnRfLmdldCgpKTsKLSAgRVhQRUNUX1RSVUUocmVjZWl2ZXJfcmVz
dWx0Lm9rKCkpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9vcnRjL3Rlc3RydHBwYXJhbWV0
ZXJzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvb3J0Yy90
ZXN0cnRwcGFyYW1ldGVycy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJkOTY1
OTBmYjk2NTVlYTc4ODUzMDU3MjQ4OTMxMTZmNjdhZjI5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9vcnRjL3Rlc3RydHBwYXJhbWV0ZXJzLmNjCisrKyAvZGV2L251bGwKQEAgLTEs
MzE1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJvcnRjL3Rlc3RydHBw
YXJhbWV0ZXJzLmgiCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8dXRpbGl0eT4K
LQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxPcHVzUGFy
YW1ldGVycygpIHsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICBSdHBDb2RlY1BhcmFt
ZXRlcnMgb3B1c19jb2RlYzsKLSAgb3B1c19jb2RlYy5uYW1lID0gIm9wdXMiOwotICBvcHVzX2Nv
ZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOwotICBvcHVzX2NvZGVjLnBheWxv
YWRfdHlwZSA9IDExMTsKLSAgb3B1c19jb2RlYy5jbG9ja19yYXRlLmVtcGxhY2UoNDgwMDApOwot
ICBvcHVzX2NvZGVjLm51bV9jaGFubmVscy5lbXBsYWNlKDIpOwotICBwYXJhbWV0ZXJzLmNvZGVj
cy5wdXNoX2JhY2soc3RkOjptb3ZlKG9wdXNfY29kZWMpKTsKLSAgUnRwRW5jb2RpbmdQYXJhbWV0
ZXJzIGVuY29kaW5nOwotICBlbmNvZGluZy5jb2RlY19wYXlsb2FkX3R5cGUuZW1wbGFjZSgxMTEp
OwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5wdXNoX2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7
Ci0gIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsSXNh
Y1BhcmFtZXRlcnMoKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgUnRwQ29kZWNQ
YXJhbWV0ZXJzIGlzYWNfY29kZWM7Ci0gIGlzYWNfY29kZWMubmFtZSA9ICJJU0FDIjsKLSAgaXNh
Y19jb2RlYy5raW5kID0gY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzsKLSAgaXNhY19jb2RlYy5w
YXlsb2FkX3R5cGUgPSAxMDM7Ci0gIGlzYWNfY29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDE2MDAw
KTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShpc2FjX2NvZGVjKSk7
Ci0gIFJ0cEVuY29kaW5nUGFyYW1ldGVycyBlbmNvZGluZzsKLSAgZW5jb2RpbmcuY29kZWNfcGF5
bG9hZF90eXBlLmVtcGxhY2UoMTExKTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3MucHVzaF9iYWNr
KHN0ZDo6bW92ZShlbmNvZGluZykpOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotUnRwUGFy
YW1ldGVycyBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aFNzcmModWludDMyX3Qgc3NyYykg
ewotICBSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJz
KCk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnNzcmMuZW1wbGFjZShzc3JjKTsKLSAgcmV0
dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxJc2FjUGFyYW1l
dGVyc1dpdGhTc3JjKHVpbnQzMl90IHNzcmMpIHsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJz
ID0gTWFrZU1pbmltYWxJc2FjUGFyYW1ldGVycygpOwotICBwYXJhbWV0ZXJzLmVuY29kaW5nc1sw
XS5zc3JjLmVtcGxhY2Uoc3NyYyk7Ci0gIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1SdHBQYXJh
bWV0ZXJzIE1ha2VNaW5pbWFsVmlkZW9QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGNvZGVjX25hbWUp
IHsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICBSdHBDb2RlY1BhcmFtZXRlcnMgdnA4
X2NvZGVjOwotICB2cDhfY29kZWMubmFtZSA9IGNvZGVjX25hbWU7Ci0gIHZwOF9jb2RlYy5raW5k
ID0gY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgdnA4X2NvZGVjLnBheWxvYWRfdHlwZSA9
IDk2OwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHZwOF9jb2RlYykp
OwotICBSdHBFbmNvZGluZ1BhcmFtZXRlcnMgZW5jb2Rpbmc7Ci0gIGVuY29kaW5nLmNvZGVjX3Bh
eWxvYWRfdHlwZS5lbXBsYWNlKDk2KTsKLSAgcGFyYW1ldGVycy5lbmNvZGluZ3MucHVzaF9iYWNr
KHN0ZDo6bW92ZShlbmNvZGluZykpOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotUnRwUGFy
YW1ldGVycyBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKSB7Ci0gIHJldHVybiBNYWtlTWluaW1h
bFZpZGVvUGFyYW1ldGVycygiVlA4Iik7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxW
cDlQYXJhbWV0ZXJzKCkgewotICByZXR1cm4gTWFrZU1pbmltYWxWaWRlb1BhcmFtZXRlcnMoIlZQ
OSIpOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA4UGFyYW1ldGVyc1dpdGhTc3Jj
KHVpbnQzMl90IHNzcmMpIHsKLSAgUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gTWFrZU1pbmlt
YWxWcDhQYXJhbWV0ZXJzKCk7Ci0gIHBhcmFtZXRlcnMuZW5jb2RpbmdzWzBdLnNzcmMuZW1wbGFj
ZShzc3JjKTsKLSAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1p
bmltYWxWcDlQYXJhbWV0ZXJzV2l0aFNzcmModWludDMyX3Qgc3NyYykgewotICBSdHBQYXJhbWV0
ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbFZwOVBhcmFtZXRlcnMoKTsKLSAgcGFyYW1ldGVy
cy5lbmNvZGluZ3NbMF0uc3NyYy5lbXBsYWNlKHNzcmMpOwotICByZXR1cm4gcGFyYW1ldGVyczsK
LX0KLQotLy8gTm90ZTogQ3VycmVudGx5LCB0aGVzZSAiV2l0aE5vU3NyYyIgbWV0aG9kcyBhcmUg
aWRlbnRpY2FsIHRvIHRoZSBub3JtYWwKLS8vICJNYWtlTWluaW1hbCIgbWV0aG9kcywgYnV0IHdp
dGggdGhlIGFkZGVkIGd1YXJhbnRlZSB0aGF0IHRoZXkgd2lsbCBuZXZlciBiZQotLy8gY2hhbmdl
ZCB0byBpbmNsdWRlIGFuIFNTUkMuCi0KLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxPcHVzUGFy
YW1ldGVyc1dpdGhOb1NzcmMoKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VN
aW5pbWFsT3B1c1BhcmFtZXRlcnMoKTsKLSAgUlRDX0RDSEVDSyghcGFyYW1ldGVycy5lbmNvZGlu
Z3NbMF0uc3NyYyk7Ci0gIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1h
a2VNaW5pbWFsSXNhY1BhcmFtZXRlcnNXaXRoTm9Tc3JjKCkgewotICBSdHBQYXJhbWV0ZXJzIHBh
cmFtZXRlcnMgPSBNYWtlTWluaW1hbElzYWNQYXJhbWV0ZXJzKCk7Ci0gIFJUQ19EQ0hFQ0soIXBh
cmFtZXRlcnMuZW5jb2RpbmdzWzBdLnNzcmMpOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQot
UnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoTm9Tc3JjKCkgewotICBS
dHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnMoKTsKLSAg
UlRDX0RDSEVDSyghcGFyYW1ldGVycy5lbmNvZGluZ3NbMF0uc3NyYyk7Ci0gIHJldHVybiBwYXJh
bWV0ZXJzOwotfQotCi1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA5UGFyYW1ldGVyc1dpdGhO
b1NzcmMoKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IE1ha2VNaW5pbWFsVnA5UGFy
YW1ldGVycygpOwotICBSVENfRENIRUNLKCFwYXJhbWV0ZXJzLmVuY29kaW5nc1swXS5zc3JjKTsK
LSAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLS8vIE1ha2UgYXVkaW8gcGFyYW1ldGVycyB3aXRo
IGFsbCB0aGUgYXZhaWxhYmxlIHByb3BlcnRpZXMgY29uZmlndXJlZCBhbmQKLS8vIGZlYXR1cmVz
IHVzZWQsIGFuZCB3aXRoIG11bHRpcGxlIGNvZGVjcyBvZmZlcmVkLiBPYnRhaW5lZCBieSB0YWtp
bmcgYQotLy8gc25hcHNob3Qgb2YgYSBkZWZhdWx0IFBlZXJDb25uZWN0aW9uIG9mZmVyIChhbmQg
YWRkaW5nIG90aGVyIHRoaW5ncywgbGlrZQotLy8gYml0cmF0ZSBsaW1pdCkuCi0vLwotLy8gU2Vl
ICJNYWtlRnVsbE9wdXNQYXJhbWV0ZXJzIi8iTWFrZUZ1bGxJc2FjUGFyYW1ldGVycyIgYmVsb3cu
Ci1SdHBQYXJhbWV0ZXJzIE1ha2VGdWxsQXVkaW9QYXJhbWV0ZXJzKGludCBwcmVmZXJyZWRfcGF5
bG9hZF90eXBlKSB7Ci0gIFJ0cFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICBSdHBDb2RlY1Bh
cmFtZXRlcnMgb3B1c19jb2RlYzsKLSAgb3B1c19jb2RlYy5uYW1lID0gIm9wdXMiOwotICBvcHVz
X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPOwotICBvcHVzX2NvZGVjLnBh
eWxvYWRfdHlwZSA9IDExMTsKLSAgb3B1c19jb2RlYy5jbG9ja19yYXRlLmVtcGxhY2UoNDgwMDAp
OwotICBvcHVzX2NvZGVjLm51bV9jaGFubmVscy5lbXBsYWNlKDIpOwotICBvcHVzX2NvZGVjLnBh
cmFtZXRlcnNbIm1pbnB0aW1lIl0gPSAiMTAiOwotICBvcHVzX2NvZGVjLnBhcmFtZXRlcnNbInVz
ZWluYmFuZGZlYyJdID0gIjEiOwotICBvcHVzX2NvZGVjLnBhcmFtZXRlcnNbInVzZWR0eCJdID0g
IjEiOwotICBvcHVzX2NvZGVjLnBhcmFtZXRlcnNbInN0ZXJlbyJdID0gIjEiOwotICBvcHVzX2Nv
ZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6OlRSQU5TUE9S
VF9DQyk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUob3B1c19jb2Rl
YykpOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyBpc2FjX2NvZGVjOwotICBpc2FjX2NvZGVjLm5h
bWUgPSAiSVNBQyI7Ci0gIGlzYWNfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVE
SU87Ci0gIGlzYWNfY29kZWMucGF5bG9hZF90eXBlID0gMTAzOwotICBpc2FjX2NvZGVjLmNsb2Nr
X3JhdGUuZW1wbGFjZSgxNjAwMCk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6
Om1vdmUoaXNhY19jb2RlYykpOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyBjbl9jb2RlYzsKLSAg
Y25fY29kZWMubmFtZSA9ICJDTiI7Ci0gIGNuX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9U
WVBFX0FVRElPOwotICBjbl9jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMDY7Ci0gIGNuX2NvZGVjLmNs
b2NrX3JhdGUuZW1wbGFjZSgzMjAwMCk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhz
dGQ6Om1vdmUoY25fY29kZWMpKTsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgZHRtZl9jb2RlYzsK
LSAgZHRtZl9jb2RlYy5uYW1lID0gInRlbGVwaG9uZS1ldmVudCI7Ci0gIGR0bWZfY29kZWMua2lu
ZCA9IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87Ci0gIGR0bWZfY29kZWMucGF5bG9hZF90eXBl
ID0gMTI2OwotICBkdG1mX2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFjZSg4MDAwKTsKLSAgcGFyYW1l
dGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShkdG1mX2NvZGVjKSk7Ci0KLSAgLy8gImNv
ZGVjX3BheWxvYWRfdHlwZSIgaXNuJ3QgaW1wbGVtZW50ZWQsIHNvIHdlIG5lZWQgdG8gcmVvcmRl
ciBjb2RlY3MgdG8KLSAgLy8gY2F1c2Ugb25lIHRvIGJlIHVzZWQuCi0gIC8vIFRPRE8oZGVhZGJl
ZWYpOiBSZW1vdmUgdGhpcyB3aGVuIGl0IGJlY29tZXMgdW5uZWNlc3NhcnkuCi0gIGF1dG8gaXQg
PSBzdGQ6OmZpbmRfaWYocGFyYW1ldGVycy5jb2RlY3MuYmVnaW4oKSwgcGFyYW1ldGVycy5jb2Rl
Y3MuZW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZlcnJlZF9wYXlsb2FkX3R5
cGVdKGNvbnN0IFJ0cENvZGVjUGFyYW1ldGVycyYgcCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHAucGF5bG9hZF90eXBlID09IHByZWZlcnJlZF9wYXlsb2FkX3R5cGU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gIFJ0cENvZGVjUGFyYW1ldGVycyBwcmVmZXJy
ZWQgPSAqaXQ7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLmVyYXNlKGl0KTsKLSAgcGFyYW1ldGVycy5j
b2RlY3MuaW5zZXJ0KHBhcmFtZXRlcnMuY29kZWNzLmJlZ2luKCksIHByZWZlcnJlZCk7Ci0KLSAg
Ly8gSW50ZW50aW9uYWxseSBsZWF2ZSBvdXQgU1NSQyBzbyBvbmUncyBjaG9zZW4gYXV0b21hdGlj
YWxseS4KLSAgUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIGVuY29kaW5nOwotICBlbmNvZGluZy5jb2Rl
Y19wYXlsb2FkX3R5cGUuZW1wbGFjZShwcmVmZXJyZWRfcGF5bG9hZF90eXBlKTsKLSAgZW5jb2Rp
bmcuZHR4LmVtcGxhY2UoRHR4U3RhdHVzOjpFTkFCTEVEKTsKLSAgLy8gMjAga2Jwcy4KLSAgZW5j
b2RpbmcubWF4X2JpdHJhdGVfYnBzLmVtcGxhY2UoMjAwMDApOwotICBwYXJhbWV0ZXJzLmVuY29k
aW5ncy5wdXNoX2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7Ci0KLSAgcGFyYW1ldGVycy5oZWFk
ZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soCi0gICAgICAidXJuOmlldGY6cGFyYW1zOnJ0cC1o
ZHJleHQ6c3NyYy1hdWRpby1sZXZlbCIsIDEpOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQot
UnRwUGFyYW1ldGVycyBNYWtlRnVsbE9wdXNQYXJhbWV0ZXJzKCkgewotICByZXR1cm4gTWFrZUZ1
bGxBdWRpb1BhcmFtZXRlcnMoMTExKTsKLX0KLQotUnRwUGFyYW1ldGVycyBNYWtlRnVsbElzYWNQ
YXJhbWV0ZXJzKCkgewotICByZXR1cm4gTWFrZUZ1bGxBdWRpb1BhcmFtZXRlcnMoMTAzKTsKLX0K
LQotLy8gTWFrZSB2aWRlbyBwYXJhbWV0ZXJzIHdpdGggYWxsIHRoZSBhdmFpbGFibGUgcHJvcGVy
dGllcyBjb25maWd1cmVkIGFuZAotLy8gZmVhdHVyZXMgdXNlZCwgYW5kIHdpdGggbXVsdGlwbGUg
Y29kZWNzIG9mZmVyZWQuIE9idGFpbmVkIGJ5IHRha2luZyBhCi0vLyBzbmFwc2hvdCBvZiBhIGRl
ZmF1bHQgUGVlckNvbm5lY3Rpb24gb2ZmZXIgKGFuZCBhZGRpbmcgb3RoZXIgdGhpbmdzLCBsaWtl
Ci0vLyBiaXRyYXRlIGxpbWl0KS4KLS8vCi0vLyBTZWUgIk1ha2VGdWxsVnA4UGFyYW1ldGVycyIv
Ik1ha2VGdWxsVnA5UGFyYW1ldGVycyIgYmVsb3cuCi1SdHBQYXJhbWV0ZXJzIE1ha2VGdWxsVmlk
ZW9QYXJhbWV0ZXJzKGludCBwcmVmZXJyZWRfcGF5bG9hZF90eXBlKSB7Ci0gIFJ0cFBhcmFtZXRl
cnMgcGFyYW1ldGVyczsKLQotICBSdHBDb2RlY1BhcmFtZXRlcnMgdnA4X2NvZGVjOwotICB2cDhf
Y29kZWMubmFtZSA9ICJWUDgiOwotICB2cDhfY29kZWMua2luZCA9IGNyaWNrZXQ6Ok1FRElBX1RZ
UEVfVklERU87Ci0gIHZwOF9jb2RlYy5wYXlsb2FkX3R5cGUgPSAxMDA7Ci0gIHZwOF9jb2RlYy5j
bG9ja19yYXRlLmVtcGxhY2UoOTAwMDApOwotICB2cDhfY29kZWMucnRjcF9mZWVkYmFjay5lbXBs
YWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6Q0NNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5cGU6OkZJUik7Ci0gIHZwOF9jb2Rl
Yy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpOQUNLLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5
cGU6OkdFTkVSSUNfTkFDSyk7Ci0gIHZwOF9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFj
ayhSdGNwRmVlZGJhY2tUeXBlOjpOQUNLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUnRjcEZlZWRiYWNrTWVzc2FnZVR5cGU6OlBMSSk7Ci0gIHZwOF9jb2RlYy5ydGNw
X2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpSRU1CKTsKLSAgdnA4X2Nv
ZGVjLnJ0Y3BfZmVlZGJhY2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6OlRSQU5TUE9S
VF9DQyk7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUodnA4X2NvZGVj
KSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHZwOF9ydHhfY29kZWM7Ci0gIHZwOF9ydHhfY29k
ZWMubmFtZSA9ICJydHgiOwotICB2cDhfcnR4X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9U
WVBFX1ZJREVPOwotICB2cDhfcnR4X2NvZGVjLnBheWxvYWRfdHlwZSA9IDk2OwotICB2cDhfcnR4
X2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFjZSg5MDAwMCk7Ci0gIHZwOF9ydHhfY29kZWMucGFyYW1l
dGVyc1siYXB0Il0gPSAiMTAwIjsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6
bW92ZSh2cDhfcnR4X2NvZGVjKSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHZwOV9jb2RlYzsK
LSAgdnA5X2NvZGVjLm5hbWUgPSAiVlA5IjsKLSAgdnA5X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpN
RURJQV9UWVBFX1ZJREVPOwotICB2cDlfY29kZWMucGF5bG9hZF90eXBlID0gMTAxOwotICB2cDlf
Y29kZWMuY2xvY2tfcmF0ZS5lbXBsYWNlKDkwMDAwKTsKLSAgdnA5X2NvZGVjLnJ0Y3BfZmVlZGJh
Y2suZW1wbGFjZV9iYWNrKFJ0Y3BGZWVkYmFja1R5cGU6OkNDTSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BGZWVkYmFja01lc3NhZ2VUeXBlOjpGSVIpOwotICB2
cDlfY29kZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6TkFD
SywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0Y3BGZWVkYmFja01l
c3NhZ2VUeXBlOjpHRU5FUklDX05BQ0spOwotICB2cDlfY29kZWMucnRjcF9mZWVkYmFjay5lbXBs
YWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6TkFDSywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJ0Y3BGZWVkYmFja01lc3NhZ2VUeXBlOjpQTEkpOwotICB2cDlfY29k
ZWMucnRjcF9mZWVkYmFjay5lbXBsYWNlX2JhY2soUnRjcEZlZWRiYWNrVHlwZTo6UkVNQik7Ci0g
IHZwOV9jb2RlYy5ydGNwX2ZlZWRiYWNrLmVtcGxhY2VfYmFjayhSdGNwRmVlZGJhY2tUeXBlOjpU
UkFOU1BPUlRfQ0MpOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5wdXNoX2JhY2soc3RkOjptb3ZlKHZw
OV9jb2RlYykpOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyB2cDlfcnR4X2NvZGVjOwotICB2cDlf
cnR4X2NvZGVjLm5hbWUgPSAicnR4IjsKLSAgdnA5X3J0eF9jb2RlYy5raW5kID0gY3JpY2tldDo6
TUVESUFfVFlQRV9WSURFTzsKLSAgdnA5X3J0eF9jb2RlYy5wYXlsb2FkX3R5cGUgPSA5NzsKLSAg
dnA5X3J0eF9jb2RlYy5jbG9ja19yYXRlLmVtcGxhY2UoOTAwMDApOwotICB2cDlfcnR4X2NvZGVj
LnBhcmFtZXRlcnNbImFwdCJdID0gIjEwMSI7Ci0gIHBhcmFtZXRlcnMuY29kZWNzLnB1c2hfYmFj
ayhzdGQ6Om1vdmUodnA5X3J0eF9jb2RlYykpOwotCi0gIFJ0cENvZGVjUGFyYW1ldGVycyByZWRf
Y29kZWM7Ci0gIHJlZF9jb2RlYy5uYW1lID0gInJlZCI7Ci0gIHJlZF9jb2RlYy5raW5kID0gY3Jp
Y2tldDo6TUVESUFfVFlQRV9WSURFTzsKLSAgcmVkX2NvZGVjLnBheWxvYWRfdHlwZSA9IDExNjsK
LSAgcmVkX2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFjZSg5MDAwMCk7Ci0gIHBhcmFtZXRlcnMuY29k
ZWNzLnB1c2hfYmFjayhzdGQ6Om1vdmUocmVkX2NvZGVjKSk7Ci0KLSAgUnRwQ29kZWNQYXJhbWV0
ZXJzIHJlZF9ydHhfY29kZWM7Ci0gIHJlZF9ydHhfY29kZWMubmFtZSA9ICJydHgiOwotICByZWRf
cnR4X2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPOwotICByZWRfcnR4X2Nv
ZGVjLnBheWxvYWRfdHlwZSA9IDk4OwotICByZWRfcnR4X2NvZGVjLmNsb2NrX3JhdGUuZW1wbGFj
ZSg5MDAwMCk7Ci0gIHJlZF9ydHhfY29kZWMucGFyYW1ldGVyc1siYXB0Il0gPSAiMTE2IjsKLSAg
cGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNrKHN0ZDo6bW92ZShyZWRfcnR4X2NvZGVjKSk7Ci0K
LSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHVscGZlY19jb2RlYzsKLSAgdWxwZmVjX2NvZGVjLm5hbWUg
PSAidWxwZmVjIjsKLSAgdWxwZmVjX2NvZGVjLmtpbmQgPSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJ
REVPOwotICB1bHBmZWNfY29kZWMucGF5bG9hZF90eXBlID0gMTE3OwotICB1bHBmZWNfY29kZWMu
Y2xvY2tfcmF0ZS5lbXBsYWNlKDkwMDAwKTsKLSAgcGFyYW1ldGVycy5jb2RlY3MucHVzaF9iYWNr
KHN0ZDo6bW92ZSh1bHBmZWNfY29kZWMpKTsKLQotICAvLyAiY29kZWNfcGF5bG9hZF90eXBlIiBp
c24ndCBpbXBsZW1lbnRlZCwgc28gd2UgbmVlZCB0byByZW9yZGVyIGNvZGVjcyB0bwotICAvLyBj
YXVzZSBvbmUgdG8gYmUgdXNlZC4KLSAgLy8gVE9ETyhkZWFkYmVlZik6IFJlbW92ZSB0aGlzIHdo
ZW4gaXQgYmVjb21lcyB1bm5lY2Vzc2FyeS4KLSAgYXV0byBpdCA9IHN0ZDo6ZmluZF9pZihwYXJh
bWV0ZXJzLmNvZGVjcy5iZWdpbigpLCBwYXJhbWV0ZXJzLmNvZGVjcy5lbmQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBbcHJlZmVycmVkX3BheWxvYWRfdHlwZV0oY29uc3QgUnRwQ29kZWNQ
YXJhbWV0ZXJzJiBwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcC5wYXls
b2FkX3R5cGUgPT0gcHJlZmVycmVkX3BheWxvYWRfdHlwZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgUnRwQ29kZWNQYXJhbWV0ZXJzIHByZWZlcnJlZCA9ICppdDsKLSAgcGFyYW1l
dGVycy5jb2RlY3MuZXJhc2UoaXQpOwotICBwYXJhbWV0ZXJzLmNvZGVjcy5pbnNlcnQocGFyYW1l
dGVycy5jb2RlY3MuYmVnaW4oKSwgcHJlZmVycmVkKTsKLQotICAvLyBJbnRlbnRpb25hbGx5IGxl
YXZlIG91dCBTU1JDIHNvIG9uZSdzIGNob3NlbiBhdXRvbWF0aWNhbGx5LgotICBSdHBFbmNvZGlu
Z1BhcmFtZXRlcnMgZW5jb2Rpbmc7Ci0gIGVuY29kaW5nLmNvZGVjX3BheWxvYWRfdHlwZS5lbXBs
YWNlKHByZWZlcnJlZF9wYXlsb2FkX3R5cGUpOwotICBlbmNvZGluZy5mZWMuZW1wbGFjZShGZWNN
ZWNoYW5pc206OlJFRF9BTkRfVUxQRkVDKTsKLSAgLy8gV2lsbCBjcmVhdGUgZGVmYXVsdCBSdHhQ
YXJhbWV0ZXJzLCB3aXRoIHVuc2V0IFNTUkMuCi0gIGVuY29kaW5nLnJ0eC5lbXBsYWNlKCk7Ci0g
IC8vIDEwMCBrYnBzLgotICBlbmNvZGluZy5tYXhfYml0cmF0ZV9icHMuZW1wbGFjZSgxMDAwMDAp
OwotICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5wdXNoX2JhY2soc3RkOjptb3ZlKGVuY29kaW5nKSk7
Ci0KLSAgcGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soCi0gICAgICAi
dXJuOmlldGY6cGFyYW1zOnJ0cC1oZHJleHQ6dG9mZnNldCIsIDIpOwotICBwYXJhbWV0ZXJzLmhl
YWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygKLSAgICAgICJodHRwOi8vd3d3LndlYnJ0Yy5v
cmcvZXhwZXJpbWVudHMvcnRwLWhkcmV4dC9hYnMtc2VuZC10aW1lIiwgMyk7Ci0gIHBhcmFtZXRl
cnMuaGVhZGVyX2V4dGVuc2lvbnMuZW1wbGFjZV9iYWNrKCJ1cm46M2dwcDp2aWRlby1vcmllbnRh
dGlvbiIsIDQpOwotICBwYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjaygK
LSAgICAgICJodHRwOi8vd3d3LmlldGYub3JnL2lkLyIKLSAgICAgICJkcmFmdC1ob2xtZXItcm1j
YXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0ZW5zaW9ucy0wMSIsCi0gICAgICA1KTsKLSAgcGFyYW1l
dGVycy5oZWFkZXJfZXh0ZW5zaW9ucy5lbXBsYWNlX2JhY2soCi0gICAgICAiaHR0cDovL3d3dy53
ZWJydGMub3JnL2V4cGVyaW1lbnRzL3J0cC1oZHJleHQvcGxheW91dC1kZWxheSIsIDYpOwotICBy
ZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotUnRwUGFyYW1ldGVycyBNYWtlRnVsbFZwOFBhcmFtZXRl
cnMoKSB7Ci0gIHJldHVybiBNYWtlRnVsbFZpZGVvUGFyYW1ldGVycygxMDApOwotfQotCi1SdHBQ
YXJhbWV0ZXJzIE1ha2VGdWxsVnA5UGFyYW1ldGVycygpIHsKLSAgcmV0dXJuIE1ha2VGdWxsVmlk
ZW9QYXJhbWV0ZXJzKDEwMSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL29ydGMvdGVzdHJ0
cHBhcmFtZXRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L29ydGMvdGVzdHJ0cHBhcmFtZXRlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDdlNTFlMTQwODM3ZDRiOWM0OTZjNTZlM2M0OTg5NTE5Nzk3MDU4Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9vcnRjL3Rlc3RydHBwYXJhbWV0ZXJzLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3MiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0g
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaWZuZGVmIE9SVENfVEVTVFJU
UFBBUkFNRVRFUlNfSF8KLSNkZWZpbmUgT1JUQ19URVNUUlRQUEFSQU1FVEVSU19IXwotCi0jaW5j
bHVkZSAiYXBpL29ydGMvcnRwdHJhbnNwb3J0aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiYXBpL3J0
cHBhcmFtZXRlcnMuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLS8vIEhlbHBlciBtZXRob2Rz
IHRvIGNyZWF0ZSBSdHBQYXJhbWV0ZXJzIHRvIHVzZSBmb3Igc2VuZGluZy9yZWNlaXZpbmcuCi0v
LwotLy8gIk1ha2VNaW5pbWFsIiBtZXRob2RzIGNvbnRhaW4gdGhlIG1pbmltYWwgbmVjZXNzYXJ5
IGluZm9ybWF0aW9uIGZvciBhbgotLy8gUnRwU2VuZGVyIG9yIFJ0cFJlY2VpdmVyIHRvIGZ1bmN0
aW9uLiBUaGUgIk1ha2VGdWxsIiBtZXRob2RzIGFyZSB0aGUKLS8vIG9wcG9zaXRlLCBhbmQgaW5j
bHVkZSBhbGwgZmVhdHVyZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBvZmZlcmVkIGJ5IGEKLS8v
IFBlZXJDb25uZWN0aW9uLCBhbmQgaW4gc29tZSBjYXNlcyBhZGRpdGlvbmFsIG9uZXMuCi0vLwot
Ly8gVGhlc2UgbWV0aG9kcyBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZW5kLXRvLWVuZCB0
ZXN0aW5nIChzdWNoIGFzIGluCi0vLyBvcnRjZmFjdG9yeV9pbnRlZ3JhdGlvbnRlc3QuY2MpLCBv
ciB1bml0IHRlc3RpbmcgdGhhdCBkb2Vzbid0IGNhcmUgYWJvdXQgdGhlCi0vLyBzcGVjaWZpYyBj
b250ZW50cyBvZiB0aGUgcGFyYW1ldGVycy4gVGVzdHMgc2hvdWxkIE5PVCBhc3N1bWUgdGhhdCB0
aGVzZQotLy8gbWV0aG9kcyB3aWxsIG5vdCBjaGFuZ2U7IHRlc3RzIHRoYXQgYXJlIHRlc3Rpbmcg
dGhhdCBhIHNwZWNpZmljIHZhbHVlIGluIHRoZQotLy8gcGFyYW1ldGVycyBpcyBhcHBsaWVkIHBy
b3Blcmx5IHNob3VsZCBjb25zdHJ1Y3QgdGhlIHBhcmFtZXRlcnMgaW4gdGhlIHRlc3QKLS8vIGl0
c2VsZi4KLQotaW5saW5lIFJ0cFRyYW5zcG9ydFBhcmFtZXRlcnMgTWFrZVJ0Y3BNdXhQYXJhbWV0
ZXJzKCkgewotICBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gIHBhcmFtZXRl
cnMucnRjcC5tdXggPSB0cnVlOwotICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotUnRwUGFyYW1l
dGVycyBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzKCk7Ci1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5p
bWFsSXNhY1BhcmFtZXRlcnMoKTsKLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxPcHVzUGFyYW1l
dGVyc1dpdGhTc3JjKHVpbnQzMl90IHNzcmMpOwotUnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbElz
YWNQYXJhbWV0ZXJzV2l0aFNzcmModWludDMyX3Qgc3NyYyk7Ci0KLVJ0cFBhcmFtZXRlcnMgTWFr
ZU1pbmltYWxWcDhQYXJhbWV0ZXJzKCk7Ci1SdHBQYXJhbWV0ZXJzIE1ha2VNaW5pbWFsVnA5UGFy
YW1ldGVycygpOwotUnRwUGFyYW1ldGVycyBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoU3Ny
Yyh1aW50MzJfdCBzc3JjKTsKLVJ0cFBhcmFtZXRlcnMgTWFrZU1pbmltYWxWcDlQYXJhbWV0ZXJz
V2l0aFNzcmModWludDMyX3Qgc3NyYyk7Ci0KLS8vIFdpbGwgY3JlYXRlIGFuIGVuY29kaW5nIHdp
dGggbm8gU1NSQyAobWVhbmluZyAibWF0Y2ggZmlyc3QgU1NSQyBzZWVuIiBmb3IgYQotLy8gcmVj
ZWl2ZXIsIG9yICJwaWNrIG9uZSBhdXRvbWF0aWNhbGx5IiBmb3IgYSBzZW5kZXIpLgotUnRwUGFy
YW1ldGVycyBNYWtlTWluaW1hbE9wdXNQYXJhbWV0ZXJzV2l0aE5vU3NyYygpOwotUnRwUGFyYW1l
dGVycyBNYWtlTWluaW1hbElzYWNQYXJhbWV0ZXJzV2l0aE5vU3NyYygpOwotUnRwUGFyYW1ldGVy
cyBNYWtlTWluaW1hbFZwOFBhcmFtZXRlcnNXaXRoTm9Tc3JjKCk7Ci1SdHBQYXJhbWV0ZXJzIE1h
a2VNaW5pbWFsVnA5UGFyYW1ldGVyc1dpdGhOb1NzcmMoKTsKLQotLy8gTWFrZSBhdWRpbyBwYXJh
bWV0ZXJzIHdpdGggYWxsIHRoZSBhdmFpbGFibGUgcHJvcGVydGllcyBjb25maWd1cmVkIGFuZAot
Ly8gZmVhdHVyZXMgdXNlZCwgYW5kIHdpdGggbXVsdGlwbGUgY29kZWNzIG9mZmVyZWQuIE9idGFp
bmVkIGJ5IHRha2luZyBhCi0vLyBzbmFwc2hvdCBvZiBhIGRlZmF1bHQgUGVlckNvbm5lY3Rpb24g
b2ZmZXIgKGFuZCBhZGRpbmcgb3RoZXIgdGhpbmdzLCBsaWtlCi0vLyBiaXRyYXRlIGxpbWl0KS4K
LVJ0cFBhcmFtZXRlcnMgTWFrZUZ1bGxPcHVzUGFyYW1ldGVycygpOwotUnRwUGFyYW1ldGVycyBN
YWtlRnVsbElzYWNQYXJhbWV0ZXJzKCk7Ci0KLS8vIE1ha2UgdmlkZW8gcGFyYW1ldGVycyB3aXRo
IGFsbCB0aGUgYXZhaWxhYmxlIHByb3BlcnRpZXMgY29uZmlndXJlZCBhbmQKLS8vIGZlYXR1cmVz
IHVzZWQsIGFuZCB3aXRoIG11bHRpcGxlIGNvZGVjcyBvZmZlcmVkLiBPYnRhaW5lZCBieSB0YWtp
bmcgYQotLy8gc25hcHNob3Qgb2YgYSBkZWZhdWx0IFBlZXJDb25uZWN0aW9uIG9mZmVyIChhbmQg
YWRkaW5nIG90aGVyIHRoaW5ncywgbGlrZQotLy8gYml0cmF0ZSBsaW1pdCkuCi1SdHBQYXJhbWV0
ZXJzIE1ha2VGdWxsVnA4UGFyYW1ldGVycygpOwotUnRwUGFyYW1ldGVycyBNYWtlRnVsbFZwOVBh
cmFtZXRlcnMoKTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIE9SVENf
VEVTVFJUUFBBUkFNRVRFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9CVUlMRC5nbgppbmRleCAyZDM1MWJiMGZhMmNmZjAzODky
M2JmNjEyN2U3YmYzN2U1ZmJiMWE3Li4yOWU2MzNjNWQyMjdmOTI0MzUwYzk0YjJiNWUzNTFhOTcx
OGFmZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL0JVSUxELmduCkBAIC0yOSw2ICsyOSw4IEBAIHJ0Y19zdGF0aWNfbGlicmFy
eSgicnRjX3AycCIpIHsKICAgICAiYmFzZS9kdGxzdHJhbnNwb3J0LmgiLAogICAgICJiYXNlL2R0
bHN0cmFuc3BvcnRpbnRlcm5hbC5jYyIsCiAgICAgImJhc2UvZHRsc3RyYW5zcG9ydGludGVybmFs
LmgiLAorICAgICJiYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2MiLAorICAgICJiYXNlL2lj
ZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCIsCiAgICAgImJhc2UvaWNldHJhbnNwb3J0aW50ZXJuYWwu
Y2MiLAogICAgICJiYXNlL2ljZXRyYW5zcG9ydGludGVybmFsLmgiLAogICAgICJiYXNlL21kbnNf
bWVzc2FnZS5jYyIsCkBAIC03NCw4ICs3Niw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX3Ay
cCIpIHsKICAgICAiYmFzZS90dXJucG9ydC5jYyIsCiAgICAgImJhc2UvdHVybnBvcnQuaCIsCiAg
ICAgImJhc2UvdWRwcG9ydC5oIiwKLSAgICAiYmFzZS91ZHB0cmFuc3BvcnQuY2MiLAotICAgICJi
YXNlL3VkcHRyYW5zcG9ydC5oIiwKICAgICAiY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvci5jYyIs
CiAgICAgImNsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaCIsCiAgICAgImNsaWVudC9yZWxheXBv
cnRmYWN0b3J5aW50ZXJmYWNlLmgiLApAQCAtODYsMTcgKzg2LDIwIEBAIHJ0Y19zdGF0aWNfbGli
cmFyeSgicnRjX3AycCIpIHsKICAgZGVwcyA9IFsKICAgICAiLi4vYXBpOmxpYmppbmdsZV9wZWVy
Y29ubmVjdGlvbl9hcGkiLAogICAgICIuLi9hcGk6b3J0Y19hcGkiLAorICAgICIuLi9hcGkvdHJh
bnNwb3J0OmVudW1zIiwKICAgICAiLi4vbG9nZ2luZzppY2VfbG9nIiwKICAgICAiLi4vcnRjX2Jh
c2U6Y2hlY2tzIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICIuLi9ydGNfYmFz
ZTpzYWZlX21pbm1heCIsCiAgICAgIi4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKICAgICAiLi4v
cnRjX2Jhc2U6d2Vha19wdHIiLAorICAgICIuLi9ydGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIs
CiAgICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2NCIsCiAgICAgIi4uL3J0Y19iYXNl
L3RoaXJkX3BhcnR5L3NpZ3Nsb3QiLAogICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJp
YWwiLAogICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgIi8vdGhpcmRfcGFy
dHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNw
cC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBl
czpvcHRpb25hbCIsCiAgIF0KIApAQCAtMTM3LDYgKzE0MCw3IEBAIGlmIChydGNfaW5jbHVkZV90
ZXN0cykgewogICAgICAgIjpydGNfcDJwIiwKICAgICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJj
b25uZWN0aW9uX2FwaSIsCiAgICAgICAiLi4vYXBpOm9ydGNfYXBpIiwKKyAgICAgICIuLi9ydGNf
YmFzZTpndW5pdF9oZWxwZXJzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAg
ICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0
Y19iYXNlX3Rlc3RzX3V0aWxzIiwKQEAgLTE1Myw2ICsxNTcsNyBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICAgICJiYXNlL2FzeW5jc3R1bnRjcHNvY2tldF91bml0dGVzdC5jYyIsCiAg
ICAgICAiYmFzZS9iYXNpY2FzeW5jcmVzb2x2ZXJmYWN0b3J5X3VuaXR0ZXN0LmNjIiwKICAgICAg
ICJiYXNlL2R0bHN0cmFuc3BvcnRfdW5pdHRlc3QuY2MiLAorICAgICAgImJhc2UvaWNlY3JlZGVu
dGlhbHNpdGVyYXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAiYmFzZS9tZG5zX21lc3NhZ2VfdW5p
dHRlc3QuY2MiLAogICAgICAgImJhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbF91bml0dGVzdC5jYyIs
CiAgICAgICAiYmFzZS9wYWNrZXRsb3NzZXN0aW1hdG9yX3VuaXR0ZXN0LmNjIiwKQEAgLTE3MCw3
ICsxNzUsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJiYXNlL3RyYW5zcG9y
dGRlc2NyaXB0aW9uZmFjdG9yeV91bml0dGVzdC5jYyIsCiAgICAgICAiYmFzZS90dXJucG9ydF91
bml0dGVzdC5jYyIsCiAgICAgICAiYmFzZS90dXJuc2VydmVyX3VuaXR0ZXN0LmNjIiwKLSAgICAg
ICJiYXNlL3VkcHRyYW5zcG9ydF91bml0dGVzdC5jYyIsCiAgICAgICAiY2xpZW50L2Jhc2ljcG9y
dGFsbG9jYXRvcl91bml0dGVzdC5jYyIsCiAgICAgXQogICAgIGRlcHMgPSBbCkBAIC0xNzgsMTAg
KzE4MiwxMiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6cnRjX3AycCIsCiAg
ICAgICAiLi4vYXBpOm9ydGNfYXBpIiwKICAgICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAorICAg
ICAgIi4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4v
cnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uL3J0Y19iYXNlOnN0cmlu
Z3V0aWxzIiwKKyAgICAgICIuLi9ydGNfYmFzZTp0ZXN0Y2xpZW50IiwKICAgICAgICIuLi9zeXN0
ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAg
ICAgIi8vdGVzdGluZy9ndGVzdCIsCkBAIC0yMDYsNiArMjEyLDcgQEAgcnRjX3N0YXRpY19saWJy
YXJ5KCJsaWJzdHVucHJvYmVyIikgewogICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAiLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAorICAgICIuLi9y
dGNfYmFzZS9zeXN0ZW06cnRjX2V4cG9ydCIsCiAgIF0KIH0KIApAQCAtMjIxLDYgKzIyOCw3IEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpwMnBfdGVzdF91dGlscyIsCiAgICAg
ICAiOnJ0Y19wMnAiLAogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLi4vcnRj
X2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAg
ICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIvL3Rlc3Rpbmcv
Z3Rlc3QiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9PV05FUlMKaW5kZXggMThmNjA0NGIxNjNkODVmOTJmMDFkNzRmOTA2ODQyMmVhMjFk
OTAyNy4uODRhMTllZDU5NmNjZWQzNWQzZGNiNzAzMWVlOGQ5YzA1OWNhZmI3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL09XTkVSUwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvT1dORVJT
CkBAIC02LDYgKzYsOSBAQCBtZmxvZG1hbkB3ZWJydGMub3JnCiBwZXJrakB3ZWJydGMub3JnCiBw
dGhhdGNoZXJAd2VicnRjLm9yZwogcWluZ3NpQHdlYnJ0Yy5vcmcKK2plcm9lbmRiQHdlYnJ0Yy5v
cmcKK2VtYWRvbWFyYUB3ZWJydGMub3JnCitzdGV2ZWFudG9uQHdlYnJ0Yy5vcmcKIHNlcmdleXVA
Y2hyb21pdW0ub3JnCiB0b21taUB3ZWJydGMub3JnCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2FzeW5jc3R1bnRjcHNvY2tl
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L2FzeW5jc3R1bnRjcHNvY2tldC5jYwppbmRleCA4YmI3OTZmZDFkNTljYjU5Zjg5MDQ3NTFlZTJi
MWJjMGJlNDgyYTI2Li5kMDE4NWMzZWIyOTBlZTg3MmI5MzMwYzhiMmEwNzUxNzYyMjA5NDMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9hc3luY3N0dW50Y3Bzb2NrZXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvYXN5bmNzdHVudGNwc29ja2V0LmNjCkBAIC0xMTIs
NyArMTEyLDcgQEAgdm9pZCBBc3luY1N0dW5UQ1BTb2NrZXQ6OlByb2Nlc3NJbnB1dChjaGFyKiBk
YXRhLCBzaXplX3QqIGxlbikgewogICAgIH0KIAogICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywg
ZGF0YSwgZXhwZWN0ZWRfcGt0X2xlbiwgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAg
ICBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpOworICAgICAgICAgICAgICAgICAgICAgcnRjOjpU
aW1lTWljcm9zKCkpOwogCiAgICAgKmxlbiAtPSBhY3R1YWxfbGVuZ3RoOwogICAgIGlmICgqbGVu
ID4gMCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2UvYXN5bmNzdHVudGNwc29ja2V0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvYXN5bmNzdHVudGNwc29j
a2V0X3VuaXR0ZXN0LmNjCmluZGV4IGRlOTU0MTk0MWY0MThkYTE0NTgxZTE0Nzg4YjljYjI4ZTg3
YThhMTEuLmI1ZmExNGVkYzE0YmY4ZjQzNmQ2YTYyYjMzNWU2ZTFiMWQ1NTM0MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2Fz
eW5jc3R1bnRjcHNvY2tldF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9hc3luY3N0dW50Y3Bzb2NrZXRfdW5pdHRlc3Qu
Y2MKQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgQXN5bmNTdHVuVENQU29ja2V0VGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAog
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAogICAgICAgICAgICAgICAgICAgICBjb25z
dCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovKSB7CiAgICAgcmVjdl9wYWNrZXRz
Xy5wdXNoX2JhY2soc3RkOjpzdHJpbmcoZGF0YSwgbGVuKSk7CiAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3Ry
YW5zcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL2R0bHN0cmFuc3BvcnQuY2MKaW5kZXggMzE0ZjYzY2U3NGY4NjVmMWFmMzQ2OTI4YjVk
NGUxMTdkNmJmYWYzNC4uOTdjNmIxM2ZiN2E3YjBkMWIzYTgwNzY5Y2ZiM2EyNTI5OWZkMDNhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvZHRsc3RyYW5zcG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0LmNjCkBAIC0yMCw2ICsyMCw3IEBA
CiAjaW5jbHVkZSAicnRjX2Jhc2UvZHNjcC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9ydGNjZXJ0aWZpY2F0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWQuaCIKQEAgLTExMywzNyArMTE0LDIzIEBAIHZvaWQgU3RyZWFtSW50ZXJmYWNlQ2hhbm5lbDo6
Q2xvc2UoKSB7CiAgIHN0YXRlXyA9IHJ0Yzo6U1NfQ0xPU0VEOwogfQogCi1EdGxzVHJhbnNwb3J0
OjpEdGxzVHJhbnNwb3J0KEljZVRyYW5zcG9ydEludGVybmFsKiBpY2VfdHJhbnNwb3J0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0
b19vcHRpb25zKQotICAgIDogdHJhbnNwb3J0X25hbWVfKGljZV90cmFuc3BvcnQtPnRyYW5zcG9y
dF9uYW1lKCkpLAotICAgICAgY29tcG9uZW50XyhpY2VfdHJhbnNwb3J0LT5jb21wb25lbnQoKSks
Ci0gICAgICBpY2VfdHJhbnNwb3J0XyhpY2VfdHJhbnNwb3J0KSwKLSAgICAgIGRvd253YXJkXyhO
VUxMKSwKLSAgICAgIHNydHBfY2lwaGVyc18oR2V0U3VwcG9ydGVkRHRsc1NydHBDcnlwdG9TdWl0
ZXMoY3J5cHRvX29wdGlvbnMpKSwKLSAgICAgIHNzbF9tYXhfdmVyc2lvbl8ocnRjOjpTU0xfUFJP
VE9DT0xfRFRMU18xMiksCi0gICAgICBjcnlwdG9fb3B0aW9uc18oY3J5cHRvX29wdGlvbnMpIHsK
LSAgUlRDX0RDSEVDSyhpY2VfdHJhbnNwb3J0Xyk7Ci0gIENvbm5lY3RUb0ljZVRyYW5zcG9ydCgp
OwotfQotCiBEdGxzVHJhbnNwb3J0OjpEdGxzVHJhbnNwb3J0KAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxJY2VUcmFuc3BvcnRJbnRlcm5hbD4gaWNlX3RyYW5zcG9ydCwKLSAgICBjb25zdCBydGM6OkNy
eXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKQorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0
aW9ucyYgY3J5cHRvX29wdGlvbnMpCiAgICAgOiB0cmFuc3BvcnRfbmFtZV8oaWNlX3RyYW5zcG9y
dC0+dHJhbnNwb3J0X25hbWUoKSksCiAgICAgICBjb21wb25lbnRfKGljZV90cmFuc3BvcnQtPmNv
bXBvbmVudCgpKSwKLSAgICAgIGljZV90cmFuc3BvcnRfKGljZV90cmFuc3BvcnQuZ2V0KCkpLAot
ICAgICAgb3duZWRfaWNlX3RyYW5zcG9ydF8oc3RkOjptb3ZlKGljZV90cmFuc3BvcnQpKSwKKyAg
ICAgIGljZV90cmFuc3BvcnRfKHN0ZDo6bW92ZShpY2VfdHJhbnNwb3J0KSksCiAgICAgICBkb3du
d2FyZF8oTlVMTCksCi0gICAgICBzcnRwX2NpcGhlcnNfKEdldFN1cHBvcnRlZER0bHNTcnRwQ3J5
cHRvU3VpdGVzKGNyeXB0b19vcHRpb25zKSksCisgICAgICBzcnRwX2NpcGhlcnNfKGNyeXB0b19v
cHRpb25zLkdldFN1cHBvcnRlZER0bHNTcnRwQ3J5cHRvU3VpdGVzKCkpLAogICAgICAgc3NsX21h
eF92ZXJzaW9uXyhydGM6OlNTTF9QUk9UT0NPTF9EVExTXzEyKSwKICAgICAgIGNyeXB0b19vcHRp
b25zXyhjcnlwdG9fb3B0aW9ucykgewotICBSVENfRENIRUNLKG93bmVkX2ljZV90cmFuc3BvcnRf
KTsKKyAgUlRDX0RDSEVDSyhpY2VfdHJhbnNwb3J0Xyk7CiAgIENvbm5lY3RUb0ljZVRyYW5zcG9y
dCgpOwogfQogCiBEdGxzVHJhbnNwb3J0Ojp+RHRsc1RyYW5zcG9ydCgpID0gZGVmYXVsdDsKIAot
Y29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBEdGxzVHJhbnNwb3J0OjpjcnlwdG9fb3B0aW9ucygp
IGNvbnN0IHsKK2NvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgRHRsc1RyYW5zcG9ydDo6Y3J5
cHRvX29wdGlvbnMoKSBjb25zdCB7CiAgIHJldHVybiBjcnlwdG9fb3B0aW9uc187CiB9CiAKQEAg
LTMzNSw3ICszMjIsOCBAQCBib29sIER0bHNUcmFuc3BvcnQ6OkV4cG9ydEtleWluZ01hdGVyaWFs
KGNvbnN0IHN0ZDo6c3RyaW5nJiBsYWJlbCwKIAogYm9vbCBEdGxzVHJhbnNwb3J0OjpTZXR1cER0
bHMoKSB7CiAgIFJUQ19EQ0hFQ0soZHRsc19yb2xlXyk7Ci0gIFN0cmVhbUludGVyZmFjZUNoYW5u
ZWwqIGRvd253YXJkID0gbmV3IFN0cmVhbUludGVyZmFjZUNoYW5uZWwoaWNlX3RyYW5zcG9ydF8p
OworICBTdHJlYW1JbnRlcmZhY2VDaGFubmVsKiBkb3dud2FyZCA9CisgICAgICBuZXcgU3RyZWFt
SW50ZXJmYWNlQ2hhbm5lbChpY2VfdHJhbnNwb3J0Xy5nZXQoKSk7CiAKICAgZHRsc18ucmVzZXQo
cnRjOjpTU0xTdHJlYW1BZGFwdGVyOjpDcmVhdGUoZG93bndhcmQpKTsKICAgaWYgKCFkdGxzXykg
ewpAQCAtNDMxLDcgKzQxOSw3IEBAIGludCBEdGxzVHJhbnNwb3J0OjpTZW5kUGFja2V0KGNvbnN0
IGNoYXIqIGRhdGEsCiB9CiAKIEljZVRyYW5zcG9ydEludGVybmFsKiBEdGxzVHJhbnNwb3J0Ojpp
Y2VfdHJhbnNwb3J0KCkgewotICByZXR1cm4gaWNlX3RyYW5zcG9ydF87CisgIHJldHVybiBpY2Vf
dHJhbnNwb3J0Xy5nZXQoKTsKIH0KIAogYm9vbCBEdGxzVHJhbnNwb3J0OjpJc0R0bHNDb25uZWN0
ZWQoKSB7CkBAIC00ODgsNyArNDc2LDcgQEAgdm9pZCBEdGxzVHJhbnNwb3J0OjpDb25uZWN0VG9J
Y2VUcmFuc3BvcnQoKSB7CiAvLyAgICAgICBpbXBsIGFnYWluCiB2b2lkIER0bHNUcmFuc3BvcnQ6
Ok9uV3JpdGFibGVTdGF0ZShydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQp
IHsKICAgUlRDX0RDSEVDS19SVU5fT04oJnRocmVhZF9jaGVja2VyXyk7Ci0gIFJUQ19EQ0hFQ0so
dHJhbnNwb3J0ID09IGljZV90cmFuc3BvcnRfKTsKKyAgUlRDX0RDSEVDSyh0cmFuc3BvcnQgPT0g
aWNlX3RyYW5zcG9ydF8uZ2V0KCkpOwogICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8IFRvU3RyaW5n
KCkKICAgICAgICAgICAgICAgICAgICAgICA8PCAiOiBpY2VfdHJhbnNwb3J0IHdyaXRhYmxlIHN0
YXRlIGNoYW5nZWQgdG8gIgogICAgICAgICAgICAgICAgICAgICAgIDw8IGljZV90cmFuc3BvcnRf
LT53cml0YWJsZSgpOwpAQCAtNTIwLDcgKzUwOCw3IEBAIHZvaWQgRHRsc1RyYW5zcG9ydDo6T25X
cml0YWJsZVN0YXRlKHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCkgewog
CiB2b2lkIER0bHNUcmFuc3BvcnQ6Ok9uUmVjZWl2aW5nU3RhdGUocnRjOjpQYWNrZXRUcmFuc3Bv
cnRJbnRlcm5hbCogdHJhbnNwb3J0KSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZ0aHJlYWRfY2hl
Y2tlcl8pOwotICBSVENfRENIRUNLKHRyYW5zcG9ydCA9PSBpY2VfdHJhbnNwb3J0Xyk7CisgIFJU
Q19EQ0hFQ0sodHJhbnNwb3J0ID09IGljZV90cmFuc3BvcnRfLmdldCgpKTsKICAgUlRDX0xPRyhM
U19WRVJCT1NFKSA8PCBUb1N0cmluZygpCiAgICAgICAgICAgICAgICAgICAgICAgPDwgIjogaWNl
X3RyYW5zcG9ydCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInJlY2VpdmluZyBzdGF0ZSBj
aGFuZ2VkIHRvICIKQEAgLTUzNCwxNSArNTIyLDE1IEBAIHZvaWQgRHRsc1RyYW5zcG9ydDo6T25S
ZWNlaXZpbmdTdGF0ZShydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQpIHsK
IHZvaWQgRHRsc1RyYW5zcG9ydDo6T25SZWFkUGFja2V0KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50
ZXJuYWwqIHRyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGlt
ZSYgcGFja2V0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQ2NF90JiBwYWNrZXRfdGltZV91cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBmbGFncykgewogICBSVENfRENIRUNLX1JVTl9PTigmdGhyZWFkX2NoZWNrZXJfKTsKLSAg
UlRDX0RDSEVDSyh0cmFuc3BvcnQgPT0gaWNlX3RyYW5zcG9ydF8pOworICBSVENfRENIRUNLKHRy
YW5zcG9ydCA9PSBpY2VfdHJhbnNwb3J0Xy5nZXQoKSk7CiAgIFJUQ19EQ0hFQ0soZmxhZ3MgPT0g
MCk7CiAKICAgaWYgKCFkdGxzX2FjdGl2ZV8pIHsKICAgICAvLyBOb3QgZG9pbmcgRFRMUy4KLSAg
ICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEsIHNpemUsIHBhY2tldF90aW1lLCAwKTsKKyAg
ICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEsIHNpemUsIHBhY2tldF90aW1lX3VzLCAwKTsK
ICAgICByZXR1cm47CiAgIH0KIApAQCAtNjA1LDcgKzU5Myw3IEBAIHZvaWQgRHRsc1RyYW5zcG9y
dDo6T25SZWFkUGFja2V0KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwK
ICAgICAgICAgUlRDX0RDSEVDSyghc3J0cF9jaXBoZXJzXy5lbXB0eSgpKTsKIAogICAgICAgICAv
LyBTaWduYWwgdGhpcyB1cHdhcmRzIGFzIGEgYnlwYXNzIHBhY2tldC4KLSAgICAgICAgU2lnbmFs
UmVhZFBhY2tldCh0aGlzLCBkYXRhLCBzaXplLCBwYWNrZXRfdGltZSwgUEZfU1JUUF9CWVBBU1Mp
OworICAgICAgICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEsIHNpemUsIHBhY2tldF90aW1l
X3VzLCBQRl9TUlRQX0JZUEFTUyk7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlIERU
TFNfVFJBTlNQT1JUX0ZBSUxFRDoKQEAgLTY1MSw3ICs2MzksNyBAQCB2b2lkIER0bHNUcmFuc3Bv
cnQ6Ok9uRHRsc0V2ZW50KHJ0Yzo6U3RyZWFtSW50ZXJmYWNlKiBkdGxzLCBpbnQgc2lnLCBpbnQg
ZXJyKSB7CiAgICAgZG8gewogICAgICAgcmV0ID0gZHRsc18tPlJlYWQoYnVmLCBzaXplb2YoYnVm
KSwgJnJlYWQsICZyZWFkX2Vycm9yKTsKICAgICAgIGlmIChyZXQgPT0gcnRjOjpTUl9TVUNDRVNT
KSB7Ci0gICAgICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgYnVmLCByZWFkLCBydGM6OkNyZWF0
ZVBhY2tldFRpbWUoMCksIDApOworICAgICAgICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGJ1Ziwg
cmVhZCwgcnRjOjpUaW1lTWljcm9zKCksIDApOwogICAgICAgfSBlbHNlIGlmIChyZXQgPT0gcnRj
OjpTUl9FT1MpIHsKICAgICAgICAgLy8gUmVtb3RlIHBlZXIgc2h1dCBkb3duIHRoZSBhc3NvY2lh
dGlvbiB3aXRoIG5vIGVycm9yLgogICAgICAgICBSVENfTE9HKExTX0lORk8pIDw8IFRvU3RyaW5n
KCkgPDwgIjogRFRMUyB0cmFuc3BvcnQgY2xvc2VkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFuc3BvcnQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0
cmFuc3BvcnQuaAppbmRleCA0NTZmMzc1YTEwNzA4MDdlN2E3YjI3ODAwMWE3NTljYWJmYjFjMTBh
Li5jZTk1ODAzYWVjYjIxM2RlNzNlMzQ4NDRhYjRiY2QzM2M0NDA0MmNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJh
bnNwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvZHRsc3RyYW5zcG9ydC5oCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8c3Ry
aW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRvb3B0
aW9ucy5oIgogI2luY2x1ZGUgInAycC9iYXNlL2R0bHN0cmFuc3BvcnRpbnRlcm5hbC5oIgogI2lu
Y2x1ZGUgInAycC9iYXNlL2ljZXRyYW5zcG9ydGludGVybmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvYnVmZmVyLmgiCkBAIC05NCwxNSArOTUsMTIgQEAgY2xhc3MgRHRsc1RyYW5zcG9ydCA6IHB1
YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJuYWwgewogICAvLwogICAvLyB8Y3J5cHRvX29wdGlvbnN8
IGFyZSB0aGUgb3B0aW9ucyB1c2VkIGZvciB0aGUgRFRMUyBoYW5kc2hha2UuIFRoaXMgYWZmZWN0
cwogICAvLyB3aGV0aGVyIEdDTSBjcnlwdG8gc3VpdGVzIGFyZSBuZWdvdGlhdGVkLgotICAvLyBU
T0RPKHpoaWh1YW5nKTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBzd2l0Y2ggdG8gSnNlcFRyYW5zcG9y
dENvbnRyb2xsZXIuCi0gIGV4cGxpY2l0IER0bHNUcmFuc3BvcnQoSWNlVHJhbnNwb3J0SW50ZXJu
YWwqIGljZV90cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpD
cnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucyk7CiAgIGV4cGxpY2l0IER0bHNUcmFuc3BvcnQo
c3RkOjp1bmlxdWVfcHRyPEljZVRyYW5zcG9ydEludGVybmFsPiBpY2VfdHJhbnNwb3J0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29w
dGlvbnMpOworICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0
aW9ucyYgY3J5cHRvX29wdGlvbnMpOwogCiAgIH5EdGxzVHJhbnNwb3J0KCkgb3ZlcnJpZGU7CiAK
LSAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucygpIGNvbnN0IG92ZXJy
aWRlOworICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgIER0bHNUcmFuc3BvcnRTdGF0ZSBkdGxzX3N0YXRlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogICBpbnQgY29tcG9uZW50KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xOTYsNyArMTk0LDcg
QEAgY2xhc3MgRHRsc1RyYW5zcG9ydCA6IHB1YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJuYWwgewog
ICB2b2lkIE9uUmVhZFBhY2tldChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3Bv
cnQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tl
dFRpbWUmIHBhY2tldF90aW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBw
YWNrZXRfdGltZV91cywKICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKICAgdm9pZCBP
blNlbnRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KTsKQEAg
LTIyMCw5ICsyMTgsOCBAQCBjbGFzcyBEdGxzVHJhbnNwb3J0IDogcHVibGljIER0bHNUcmFuc3Bv
cnRJbnRlcm5hbCB7CiAgIHN0ZDo6c3RyaW5nIHRyYW5zcG9ydF9uYW1lXzsKICAgaW50IGNvbXBv
bmVudF87CiAgIER0bHNUcmFuc3BvcnRTdGF0ZSBkdGxzX3N0YXRlXyA9IERUTFNfVFJBTlNQT1JU
X05FVzsKLSAgLy8gVW5kZXJseWluZyBpY2VfdHJhbnNwb3J0LCBub3Qgb3duZWQgYnkgdGhpcyBj
bGFzcy4KLSAgSWNlVHJhbnNwb3J0SW50ZXJuYWwqIGNvbnN0IGljZV90cmFuc3BvcnRfOwotICBz
dGQ6OnVuaXF1ZV9wdHI8SWNlVHJhbnNwb3J0SW50ZXJuYWw+IG93bmVkX2ljZV90cmFuc3BvcnRf
OworICAvLyBVbmRlcmx5aW5nIGljZV90cmFuc3BvcnQsIG93bmVkIGJ5IHRoaXMgY2xhc3MuCisg
IHN0ZDo6dW5pcXVlX3B0cjxJY2VUcmFuc3BvcnRJbnRlcm5hbD4gaWNlX3RyYW5zcG9ydF87CiAg
IHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTFN0cmVhbUFkYXB0ZXI+IGR0bHNfOyAgLy8gVGhlIERU
TFMgc3RyZWFtCiAgIFN0cmVhbUludGVyZmFjZUNoYW5uZWwqCiAgICAgICBkb3dud2FyZF87ICAv
LyBXcmFwcGVyIGZvciBpY2VfdHJhbnNwb3J0Xywgb3duZWQgYnkgZHRsc18uCkBAIC0yMzEsNyAr
MjI4LDcgQEAgY2xhc3MgRHRsc1RyYW5zcG9ydCA6IHB1YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJu
YWwgewogICBydGM6OnNjb3BlZF9yZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4gbG9jYWxfY2Vy
dGlmaWNhdGVfOwogICBhYnNsOjpvcHRpb25hbDxydGM6OlNTTFJvbGU+IGR0bHNfcm9sZV87CiAg
IHJ0Yzo6U1NMUHJvdG9jb2xWZXJzaW9uIHNzbF9tYXhfdmVyc2lvbl87Ci0gIHJ0Yzo6Q3J5cHRv
T3B0aW9ucyBjcnlwdG9fb3B0aW9uc187CisgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9f
b3B0aW9uc187CiAgIHJ0Yzo6QnVmZmVyIHJlbW90ZV9maW5nZXJwcmludF92YWx1ZV87CiAgIHN0
ZDo6c3RyaW5nIHJlbW90ZV9maW5nZXJwcmludF9hbGdvcml0aG1fOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJh
bnNwb3J0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydF91bml0dGVzdC5jYwppbmRleCAzY2Y0MjNlODUx
M2NkZjlmNzg0YTczZjY3OWRjNTFmNTFhNmNmZDkyLi45M2YzZGEzMzdkMzAzMDg0ZjA3YmY5MGFh
ZjNmMmNiNDAzYWFiZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9kdGxzdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFu
c3BvcnRfdW5pdHRlc3QuY2MKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDx1dGlsaXR5Pgog
CiAjaW5jbHVkZSAicDJwL2Jhc2UvZHRsc3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgInAycC9iYXNl
L2Zha2VpY2V0cmFuc3BvcnQuaCIKQEAgLTE5LDYgKzIwLDcgQEAKICNpbmNsdWRlICJydGNfYmFz
ZS9kc2NwLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9oZWxwZXJzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9zc2xhZGFwdGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRp
dHkuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyLmgiCkBAIC00Nyw4ICs0
OSw4IEBAIHZvaWQgU2V0UmVtb3RlRmluZ2VycHJpbnRGcm9tQ2VydCgKICAgICBEdGxzVHJhbnNw
b3J0KiB0cmFuc3BvcnQsCiAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHJ0Yzo6UlRDQ2Vy
dGlmaWNhdGU+JiBjZXJ0LAogICAgIGJvb2wgbW9kaWZ5X2RpZ2VzdCA9IGZhbHNlKSB7Ci0gIHJ0
Yzo6U1NMRmluZ2VycHJpbnQqIGZpbmdlcnByaW50ID0KLSAgICAgIHJ0Yzo6U1NMRmluZ2VycHJp
bnQ6OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZShjZXJ0KTsKKyAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6
U1NMRmluZ2VycHJpbnQ+IGZpbmdlcnByaW50ID0KKyAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQ6
OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZSgqY2VydCk7CiAgIGlmIChtb2RpZnlfZGlnZXN0KSB7CiAg
ICAgKytmaW5nZXJwcmludC0+ZGlnZXN0WzBdOwogICB9CkBAIC01Nyw3ICs1OSw2IEBAIHZvaWQg
U2V0UmVtb3RlRmluZ2VycHJpbnRGcm9tQ2VydCgKICAgICAgIGZpbmdlcnByaW50LT5hbGdvcml0
aG0sCiAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmaW5nZXJwcmludC0+
ZGlnZXN0LmRhdGEoKSksCiAgICAgICBmaW5nZXJwcmludC0+ZGlnZXN0LnNpemUoKSkpOwotICBk
ZWxldGUgZmluZ2VycHJpbnQ7CiB9CiAKIGNsYXNzIER0bHNUZXN0Q2xpZW50IDogcHVibGljIHNp
Z3Nsb3Q6Omhhc19zbG90czw+IHsKQEAgLTc2LDE4ICs3NywxOCBAQCBjbGFzcyBEdGxzVGVzdENs
aWVudCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIH0KICAgLy8gU2V0IHVwIGZh
a2UgSUNFIHRyYW5zcG9ydCBhbmQgcmVhbCBEVExTIHRyYW5zcG9ydCB1bmRlciB0ZXN0LgogICB2
b2lkIFNldHVwVHJhbnNwb3J0cyhJY2VSb2xlIHJvbGUsIGludCBhc3luY19kZWxheV9tcyA9IDAp
IHsKLSAgICBmYWtlX2ljZV90cmFuc3BvcnRfLnJlc2V0KG5ldyBGYWtlSWNlVHJhbnNwb3J0KCJm
YWtlIiwgMCkpOwotICAgIGZha2VfaWNlX3RyYW5zcG9ydF8tPlNldEFzeW5jKHRydWUpOwotICAg
IGZha2VfaWNlX3RyYW5zcG9ydF8tPlNldEFzeW5jRGVsYXkoYXN5bmNfZGVsYXlfbXMpOwotICAg
IGZha2VfaWNlX3RyYW5zcG9ydF8tPlNldEljZVJvbGUocm9sZSk7Ci0gICAgZmFrZV9pY2VfdHJh
bnNwb3J0Xy0+U2V0SWNlVGllYnJlYWtlcigocm9sZSA9PSBJQ0VST0xFX0NPTlRST0xMSU5HKSA/
IDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogMik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZha2VJY2VUcmFu
c3BvcnQ+IGZha2VfaWNlX3RyYW5zcG9ydDsKKyAgICBmYWtlX2ljZV90cmFuc3BvcnQucmVzZXQo
bmV3IEZha2VJY2VUcmFuc3BvcnQoImZha2UiLCAwKSk7CisgICAgZmFrZV9pY2VfdHJhbnNwb3J0
LT5TZXRBc3luYyh0cnVlKTsKKyAgICBmYWtlX2ljZV90cmFuc3BvcnQtPlNldEFzeW5jRGVsYXko
YXN5bmNfZGVsYXlfbXMpOworICAgIGZha2VfaWNlX3RyYW5zcG9ydC0+U2V0SWNlUm9sZShyb2xl
KTsKKyAgICBmYWtlX2ljZV90cmFuc3BvcnQtPlNldEljZVRpZWJyZWFrZXIoKHJvbGUgPT0gSUNF
Uk9MRV9DT05UUk9MTElORykgPyAxIDogMik7CiAgICAgLy8gSG9vayB0aGUgcmF3IHBhY2tldHMg
c28gdGhhdCB3ZSBjYW4gdmVyaWZ5IHRoZXkgYXJlIGVuY3J5cHRlZC4KLSAgICBmYWtlX2ljZV90
cmFuc3BvcnRfLT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3QoCisgICAgZmFrZV9pY2VfdHJhbnNw
b3J0LT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3QoCiAgICAgICAgIHRoaXMsICZEdGxzVGVzdENs
aWVudDo6T25GYWtlSWNlVHJhbnNwb3J0UmVhZFBhY2tldCk7CiAKLSAgICBkdGxzX3RyYW5zcG9y
dF8ucmVzZXQoCi0gICAgICAgIG5ldyBEdGxzVHJhbnNwb3J0KGZha2VfaWNlX3RyYW5zcG9ydF8u
Z2V0KCksIHJ0Yzo6Q3J5cHRvT3B0aW9ucygpKSk7CisgICAgZHRsc190cmFuc3BvcnRfID0gYWJz
bDo6bWFrZV91bmlxdWU8RHRsc1RyYW5zcG9ydD4oCisgICAgICAgIHN0ZDo6bW92ZShmYWtlX2lj
ZV90cmFuc3BvcnQpLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSk7CiAgICAgZHRsc190cmFuc3Bv
cnRfLT5TZXRTc2xNYXhQcm90b2NvbFZlcnNpb24oc3NsX21heF92ZXJzaW9uXyk7CiAgICAgLy8g
Tm90ZTogQ2VydGlmaWNhdGUgbWF5IGJlIG51bGwgaGVyZSBpZiB0ZXN0aW5nIHBhc3N0aHJvdWdo
LgogICAgIGR0bHNfdHJhbnNwb3J0Xy0+U2V0TG9jYWxDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZV8p
OwpAQCAtOTksMTMgKzEwMCwxNiBAQCBjbGFzcyBEdGxzVGVzdENsaWVudCA6IHB1YmxpYyBzaWdz
bG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgIHRoaXMsICZEdGxzVGVzdENsaWVudDo6T25UcmFu
c3BvcnRTZW50UGFja2V0KTsKICAgfQogCi0gIEZha2VJY2VUcmFuc3BvcnQqIGZha2VfaWNlX3Ry
YW5zcG9ydCgpIHsgcmV0dXJuIGZha2VfaWNlX3RyYW5zcG9ydF8uZ2V0KCk7IH0KKyAgRmFrZUlj
ZVRyYW5zcG9ydCogZmFrZV9pY2VfdHJhbnNwb3J0KCkgeworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxGYWtlSWNlVHJhbnNwb3J0Kj4oZHRsc190cmFuc3BvcnRfLT5pY2VfdHJhbnNwb3J0KCkpOwor
ICB9CiAKICAgRHRsc1RyYW5zcG9ydCogZHRsc190cmFuc3BvcnQoKSB7IHJldHVybiBkdGxzX3Ry
YW5zcG9ydF8uZ2V0KCk7IH0KIAogICAvLyBTaW11bGF0ZSBmYWtlIElDRSB0cmFuc3BvcnRzIGNv
bm5lY3RpbmcuCiAgIGJvb2wgQ29ubmVjdChEdGxzVGVzdENsaWVudCogcGVlciwgYm9vbCBhc3lt
bWV0cmljKSB7Ci0gICAgZmFrZV9pY2VfdHJhbnNwb3J0Xy0+U2V0RGVzdGluYXRpb24ocGVlci0+
ZmFrZV9pY2VfdHJhbnNwb3J0KCksIGFzeW1tZXRyaWMpOworICAgIGZha2VfaWNlX3RyYW5zcG9y
dCgpLT5TZXREZXN0aW5hdGlvbihwZWVyLT5mYWtlX2ljZV90cmFuc3BvcnQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bW1ldHJpYyk7CiAgICAgcmV0dXJu
IHRydWU7CiAgIH0KIApAQCAtMjMyLDcgKzIzNiw3IEBAIGNsYXNzIER0bHNUZXN0Q2xpZW50IDog
cHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgdm9pZCBPblRyYW5zcG9ydFJlYWRQYWNr
ZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBmbGFncykgewogICAgIHVpbnQzMl90IHBhY2tldF9udW0gPSAwOwog
ICAgIEFTU0VSVF9UUlVFKFZlcmlmeVBhY2tldChkYXRhLCBzaXplLCAmcGFja2V0X251bSkpOwpA
QCAtMjU0LDcgKzI1OCw3IEBAIGNsYXNzIER0bHNUZXN0Q2xpZW50IDogcHVibGljIHNpZ3Nsb3Q6
Omhhc19zbG90czw+IHsKICAgdm9pZCBPbkZha2VJY2VUcmFuc3BvcnRSZWFkUGFja2V0KHJ0Yzo6
UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGltZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7CiAgICAgLy8gRmxh
Z3Mgc2hvdWxkbid0IGJlIHNldCBvbiB0aGUgdW5kZXJseWluZyBUcmFuc3BvcnQgcGFja2V0cy4K
ICAgICBBU1NFUlRfRVEoMCwgZmxhZ3MpOwpAQCAtNTEzLDggKzUxNyw4IEBAIFRFU1RfRihEdGxz
VHJhbnNwb3J0VGVzdCwgVGVzdENlcnRpZmljYXRlc0JlZm9yZUNvbm5lY3QpIHsKICAgLy8gcmVt
b3RlIGNlcnRpZmljYXRlLCBiZWNhdXNlIGNvbm5lY3Rpb24gaGFzIG5vdCB5ZXQgb2NjdXJyZWQu
CiAgIGF1dG8gY2VydGlmaWNhdGUxID0gY2xpZW50MV8uZHRsc190cmFuc3BvcnQoKS0+R2V0TG9j
YWxDZXJ0aWZpY2F0ZSgpOwogICBhdXRvIGNlcnRpZmljYXRlMiA9IGNsaWVudDJfLmR0bHNfdHJh
bnNwb3J0KCktPkdldExvY2FsQ2VydGlmaWNhdGUoKTsKLSAgQVNTRVJUX05FKGNlcnRpZmljYXRl
MS0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwKLSAgICAgICAgICAgIGNlcnRpZmlj
YXRlMi0+c3NsX2NlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSk7CisgIEFTU0VSVF9ORShjZXJ0
aWZpY2F0ZTEtPkdldFNTTENlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwKKyAgICAgICAgICAg
IGNlcnRpZmljYXRlMi0+R2V0U1NMQ2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpKTsKICAgQVNT
RVJUX0ZBTFNFKGNsaWVudDFfLmR0bHNfdHJhbnNwb3J0KCktPkdldFJlbW90ZVNTTENlcnRDaGFp
bigpKTsKICAgQVNTRVJUX0ZBTFNFKGNsaWVudDJfLmR0bHNfdHJhbnNwb3J0KCktPkdldFJlbW90
ZVNTTENlcnRDaGFpbigpKTsKIH0KQEAgLTUyNyw4ICs1MzEsOCBAQCBURVNUX0YoRHRsc1RyYW5z
cG9ydFRlc3QsIFRlc3RDZXJ0aWZpY2F0ZXNBZnRlckNvbm5lY3QpIHsKICAgLy8gQWZ0ZXIgY29u
bmVjdGlvbiwgZWFjaCBzaWRlIGhhcyBhIGRpc3RpbmN0IGxvY2FsIGNlcnRpZmljYXRlLgogICBh
dXRvIGNlcnRpZmljYXRlMSA9IGNsaWVudDFfLmR0bHNfdHJhbnNwb3J0KCktPkdldExvY2FsQ2Vy
dGlmaWNhdGUoKTsKICAgYXV0byBjZXJ0aWZpY2F0ZTIgPSBjbGllbnQyXy5kdGxzX3RyYW5zcG9y
dCgpLT5HZXRMb2NhbENlcnRpZmljYXRlKCk7Ci0gIEFTU0VSVF9ORShjZXJ0aWZpY2F0ZTEtPnNz
bF9jZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCksCi0gICAgICAgICAgICBjZXJ0aWZpY2F0ZTIt
PnNzbF9jZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCkpOworICBBU1NFUlRfTkUoY2VydGlmaWNh
dGUxLT5HZXRTU0xDZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCksCisgICAgICAgICAgICBjZXJ0
aWZpY2F0ZTItPkdldFNTTENlcnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSk7CiAKICAgLy8gRWFj
aCBzaWRlJ3MgcmVtb3RlIGNlcnRpZmljYXRlIGlzIHRoZSBvdGhlciBzaWRlJ3MgbG9jYWwgY2Vy
dGlmaWNhdGUuCiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTENlcnRDaGFpbj4gcmVtb3RlX2Nl
cnQxID0KQEAgLTUzNiwxMyArNTQwLDEzIEBAIFRFU1RfRihEdGxzVHJhbnNwb3J0VGVzdCwgVGVz
dENlcnRpZmljYXRlc0FmdGVyQ29ubmVjdCkgewogICBBU1NFUlRfVFJVRShyZW1vdGVfY2VydDEp
OwogICBBU1NFUlRfRVEoMXUsIHJlbW90ZV9jZXJ0MS0+R2V0U2l6ZSgpKTsKICAgQVNTRVJUX0VR
KHJlbW90ZV9jZXJ0MS0+R2V0KDApLlRvUEVNU3RyaW5nKCksCi0gICAgICAgICAgICBjZXJ0aWZp
Y2F0ZTItPnNzbF9jZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCkpOworICAgICAgICAgICAgY2Vy
dGlmaWNhdGUyLT5HZXRTU0xDZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCkpOwogICBzdGQ6OnVu
aXF1ZV9wdHI8cnRjOjpTU0xDZXJ0Q2hhaW4+IHJlbW90ZV9jZXJ0MiA9CiAgICAgICBjbGllbnQy
Xy5kdGxzX3RyYW5zcG9ydCgpLT5HZXRSZW1vdGVTU0xDZXJ0Q2hhaW4oKTsKICAgQVNTRVJUX1RS
VUUocmVtb3RlX2NlcnQyKTsKICAgQVNTRVJUX0VRKDF1LCByZW1vdGVfY2VydDItPkdldFNpemUo
KSk7CiAgIEFTU0VSVF9FUShyZW1vdGVfY2VydDItPkdldCgwKS5Ub1BFTVN0cmluZygpLAotICAg
ICAgICAgICAgY2VydGlmaWNhdGUxLT5zc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpKTsK
KyAgICAgICAgICAgIGNlcnRpZmljYXRlMS0+R2V0U1NMQ2VydGlmaWNhdGUoKS5Ub1BFTVN0cmlu
ZygpKTsKIH0KIAogLy8gVGVzdCB0aGF0IHBhY2tldHMgYXJlIHJldHJhbnNtaXR0ZWQgYWNjb3Jk
aW5nIHRvIHRoZSBleHBlY3RlZCBzY2hlZHVsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2R0bHN0cmFuc3BvcnRpbnRlcm5h
bC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
ZHRsc3RyYW5zcG9ydGludGVybmFsLmgKaW5kZXggNThkMzZmYTA4ZGJjODNmNjYwNmY0Y2U5OGU4
NDQ2ZjI1YWRiZmFhZC4uYTcxMzc0NDlmNGNmMTU5ODQ0MzM4ZDI1YWFjNDEzMGQ4NTI5OTQ2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvZHRsc3RyYW5zcG9ydGludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZHRsc3RyYW5zcG9ydGludGVybmFsLmgKQEAg
LTE1LDEwICsxNSwxMCBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAK
KyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKICNpbmNsdWRlICJwMnAvYmFz
ZS9pY2V0cmFuc3BvcnRpbnRlcm5hbC5oIgogI2luY2x1ZGUgInAycC9iYXNlL3BhY2tldHRyYW5z
cG9ydGludGVybmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7
CiAKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgRHRsc1RyYW5zcG9ydEludGVybmFsIDogcHVibGlj
IHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwgewogIHB1YmxpYzoKICAgfkR0bHNUcmFuc3Bv
cnRJbnRlcm5hbCgpIG92ZXJyaWRlOwogCi0gIHZpcnR1YWwgY29uc3QgcnRjOjpDcnlwdG9PcHRp
b25zJiBjcnlwdG9fb3B0aW9ucygpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBjb25zdCB3ZWJydGM6
OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKCkgY29uc3QgPSAwOwogCiAgIHZpcnR1YWwg
RHRsc1RyYW5zcG9ydFN0YXRlIGR0bHNfc3RhdGUoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2Zha2Vk
dGxzdHJhbnNwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9mYWtlZHRsc3RyYW5zcG9ydC5oCmluZGV4IGNiOTQ0ZDNkYjViMzlkYTc2MGQ0
NTQyMjQ1NzkyZGY1MmJkYjY3YWQuLmRhZWY1Yzc3ZmM5OThhNDExOTBiYTg4ZTRiZjQyMDlhNWY1
ZmMzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL2Zha2VkdGxzdHJhbnNwb3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZmFrZWR0bHN0cmFuc3BvcnQuaApAQCAt
MTcsOSArMTcsMTEgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJhYnNsL21lbW9y
eS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKICNpbmNs
dWRlICJwMnAvYmFzZS9kdGxzdHJhbnNwb3J0aW50ZXJuYWwuaCIKICNpbmNsdWRlICJwMnAvYmFz
ZS9mYWtlaWNldHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZmFrZXNzbGlkZW50aXR5
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaCIKIAogbmFtZXNwYWNlIGNy
aWNrZXQgewogCkBAIC0zMiw3ICszNCw3IEBAIGNsYXNzIEZha2VEdGxzVHJhbnNwb3J0IDogcHVi
bGljIER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgICAgICA6IGljZV90cmFuc3BvcnRfKGljZV90
cmFuc3BvcnQpLAogICAgICAgICB0cmFuc3BvcnRfbmFtZV8oaWNlX3RyYW5zcG9ydC0+dHJhbnNw
b3J0X25hbWUoKSksCiAgICAgICAgIGNvbXBvbmVudF8oaWNlX3RyYW5zcG9ydC0+Y29tcG9uZW50
KCkpLAotICAgICAgICBkdGxzX2ZpbmdlcnByaW50XygiIiwgbnVsbHB0ciwgMCkgeworICAgICAg
ICBkdGxzX2ZpbmdlcnByaW50XygiIiwgbnVsbHB0cikgewogICAgIFJUQ19EQ0hFQ0soaWNlX3Ry
YW5zcG9ydF8pOwogICAgIGljZV90cmFuc3BvcnRfLT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3Qo
CiAgICAgICAgIHRoaXMsICZGYWtlRHRsc1RyYW5zcG9ydDo6T25JY2VUcmFuc3BvcnRSZWFkUGFj
a2V0KTsKQEAgLTQ0LDcgKzQ2LDcgQEAgY2xhc3MgRmFrZUR0bHNUcmFuc3BvcnQgOiBwdWJsaWMg
RHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAgICAgIDogb3duZWRfaWNlX3RyYW5zcG9ydF8oc3Rk
Ojptb3ZlKGljZSkpLAogICAgICAgICB0cmFuc3BvcnRfbmFtZV8ob3duZWRfaWNlX3RyYW5zcG9y
dF8tPnRyYW5zcG9ydF9uYW1lKCkpLAogICAgICAgICBjb21wb25lbnRfKG93bmVkX2ljZV90cmFu
c3BvcnRfLT5jb21wb25lbnQoKSksCi0gICAgICAgIGR0bHNfZmluZ2VycHJpbnRfKCIiLCBudWxs
cHRyLCAwKSB7CisgICAgICAgIGR0bHNfZmluZ2VycHJpbnRfKCIiLCBydGM6OkFycmF5Vmlldzxj
b25zdCB1aW50OF90PigpKSB7CiAgICAgaWNlX3RyYW5zcG9ydF8gPSBvd25lZF9pY2VfdHJhbnNw
b3J0Xy5nZXQoKTsKICAgICBpY2VfdHJhbnNwb3J0Xy0+U2lnbmFsUmVhZFBhY2tldC5jb25uZWN0
KAogICAgICAgICB0aGlzLCAmRmFrZUR0bHNUcmFuc3BvcnQ6Ok9uSWNlVHJhbnNwb3J0UmVhZFBh
Y2tldCk7CkBAIC04Miw2ICs4NCw3IEBAIGNsYXNzIEZha2VEdGxzVHJhbnNwb3J0IDogcHVibGlj
IER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgICAgaWNlX3RyYW5zcG9ydF8tPlNldFJlY2Vpdmlu
ZyhyZWNlaXZpbmcpOwogICAgIHNldF9yZWNlaXZpbmcocmVjZWl2aW5nKTsKICAgfQorICB2b2lk
IFNldER0bHNTdGF0ZShEdGxzVHJhbnNwb3J0U3RhdGUgc3RhdGUpIHsgZHRsc19zdGF0ZV8gPSBz
dGF0ZTsgfQogCiAgIC8vIFNpbXVsYXRlcyB0aGUgdHdvIERUTFMgdHJhbnNwb3J0cyBjb25uZWN0
aW5nIHRvIGVhY2ggb3RoZXIuCiAgIC8vIElmIHxhc3ltbWV0cmljfCBpcyB0cnVlIHRoaXMgbWV0
aG9kIG9ubHkgYWZmZWN0cyB0aGlzIEZha2VEdGxzVHJhbnNwb3J0LgpAQCAtMTMyLDcgKzEzNSw4
IEBAIGNsYXNzIEZha2VEdGxzVHJhbnNwb3J0IDogcHVibGljIER0bHNUcmFuc3BvcnRJbnRlcm5h
bCB7CiAgIGJvb2wgU2V0UmVtb3RlRmluZ2VycHJpbnQoY29uc3Qgc3RkOjpzdHJpbmcmIGFsZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBkaWdlc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRpZ2VzdF9sZW4pIG92ZXJyaWRlIHsKLSAg
ICBkdGxzX2ZpbmdlcnByaW50XyA9IHJ0Yzo6U1NMRmluZ2VycHJpbnQoYWxnLCBkaWdlc3QsIGRp
Z2VzdF9sZW4pOworICAgIGR0bHNfZmluZ2VycHJpbnRfID0KKyAgICAgICAgcnRjOjpTU0xGaW5n
ZXJwcmludChhbGcsIHJ0Yzo6TWFrZUFycmF5VmlldyhkaWdlc3QsIGRpZ2VzdF9sZW4pKTsKICAg
ICByZXR1cm4gdHJ1ZTsKICAgfQogICBib29sIFNldFNzbE1heFByb3RvY29sVmVyc2lvbihydGM6
OlNTTFByb3RvY29sVmVyc2lvbiB2ZXJzaW9uKSBvdmVycmlkZSB7CkBAIC0xNDksMTAgKzE1Mywx
MCBAQCBjbGFzcyBGYWtlRHRsc1RyYW5zcG9ydCA6IHB1YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJu
YWwgewogICAgICpyb2xlID0gKmR0bHNfcm9sZV87CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KLSAg
Y29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucygpIGNvbnN0IG92ZXJyaWRl
IHsKKyAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucygpIGNvbnN0
IG92ZXJyaWRlIHsKICAgICByZXR1cm4gY3J5cHRvX29wdGlvbnNfOwogICB9Ci0gIHZvaWQgU2V0
Q3J5cHRvT3B0aW9ucyhjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSB7
CisgIHZvaWQgU2V0Q3J5cHRvT3B0aW9ucyhjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNy
eXB0b19vcHRpb25zKSB7CiAgICAgY3J5cHRvX29wdGlvbnNfID0gY3J5cHRvX29wdGlvbnM7CiAg
IH0KICAgYm9vbCBTZXRMb2NhbENlcnRpZmljYXRlKApAQCAtMTc4LDggKzE4MiwxMCBAQCBjbGFz
cyBGYWtlRHRsc1RyYW5zcG9ydCA6IHB1YmxpYyBEdGxzVHJhbnNwb3J0SW50ZXJuYWwgewogICAg
IHJldHVybiBsb2NhbF9jZXJ0XzsKICAgfQogICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xDZXJ0
Q2hhaW4+IEdldFJlbW90ZVNTTENlcnRDaGFpbigpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICByZXR1
cm4gcmVtb3RlX2NlcnRfID8gYWJzbDo6bWFrZV91bmlxdWU8cnRjOjpTU0xDZXJ0Q2hhaW4+KHJl
bW90ZV9jZXJ0XykKLSAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbHB0cjsKKyAgICBpZiAo
IXJlbW90ZV9jZXJ0XykgeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVy
biBhYnNsOjptYWtlX3VuaXF1ZTxydGM6OlNTTENlcnRDaGFpbj4ocmVtb3RlX2NlcnRfLT5DbG9u
ZSgpKTsKICAgfQogICBib29sIEV4cG9ydEtleWluZ01hdGVyaWFsKGNvbnN0IHN0ZDo6c3RyaW5n
JiBsYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBjb250
ZXh0LApAQCAtMjMyLDkgKzIzOCw5IEBAIGNsYXNzIEZha2VEdGxzVHJhbnNwb3J0IDogcHVibGlj
IER0bHNUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIHZvaWQgT25JY2VUcmFuc3BvcnRSZWFkUGFja2V0
KFBhY2tldFRyYW5zcG9ydEludGVybmFsKiBpY2VfLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlBhY2tldFRpbWUmIHRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludDY0X3QmIHBhY2tldF90aW1lX3VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgZmxhZ3MpIHsKLSAgICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEsIGxlbiwgdGlt
ZSwgZmxhZ3MpOworICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwgbGVuLCBwYWNrZXRf
dGltZV91cywgZmxhZ3MpOwogICB9CiAKICAgdm9pZCBzZXRfcmVjZWl2aW5nKGJvb2wgcmVjZWl2
aW5nKSB7CkBAIC0yNzIsNyArMjc4LDcgQEAgY2xhc3MgRmFrZUR0bHNUcmFuc3BvcnQgOiBwdWJs
aWMgRHRsc1RyYW5zcG9ydEludGVybmFsIHsKICAgcnRjOjpTU0xGaW5nZXJwcmludCBkdGxzX2Zp
bmdlcnByaW50XzsKICAgYWJzbDo6b3B0aW9uYWw8cnRjOjpTU0xSb2xlPiBkdGxzX3JvbGVfOwog
ICBpbnQgY3J5cHRvX3N1aXRlXyA9IHJ0Yzo6U1JUUF9BRVMxMjhfQ01fU0hBMV84MDsKLSAgcnRj
OjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKKyAgd2VicnRjOjpDcnlwdG9PcHRpb25z
IGNyeXB0b19vcHRpb25zXzsKIAogICBEdGxzVHJhbnNwb3J0U3RhdGUgZHRsc19zdGF0ZV8gPSBE
VExTX1RSQU5TUE9SVF9ORVc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2Zha2VpY2V0cmFuc3BvcnQuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2Zha2VpY2V0cmFuc3Bv
cnQuaAppbmRleCA0ODE1NzQ1MWVhNjlhMWIxNTIyZDQxODY1NGUwMDdiYjlhZTQzNWQwLi44OGFm
YzM4MmVjYmI4NTE5MTUzMjhiMzY5MzZlNzQwY2FjZWU3ODY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9mYWtlaWNldHJhbnNw
b3J0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvZmFrZWljZXRyYW5zcG9ydC5oCkBAIC0yMyw4ICsyMywxMyBAQCBuYW1lc3BhY2UgY3Jp
Y2tldCB7CiAKIGNsYXNzIEZha2VJY2VUcmFuc3BvcnQgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50
ZXJuYWwgewogIHB1YmxpYzoKLSAgZXhwbGljaXQgRmFrZUljZVRyYW5zcG9ydChjb25zdCBzdGQ6
OnN0cmluZyYgbmFtZSwgaW50IGNvbXBvbmVudCkKLSAgICAgIDogbmFtZV8obmFtZSksIGNvbXBv
bmVudF8oY29tcG9uZW50KSB7fQorICBleHBsaWNpdCBGYWtlSWNlVHJhbnNwb3J0KGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb21wb25l
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhy
ZWFkID0gbnVsbHB0cikKKyAgICAgIDogbmFtZV8obmFtZSksCisgICAgICAgIGNvbXBvbmVudF8o
Y29tcG9uZW50KSwKKyAgICAgICAgbmV0d29ya190aHJlYWRfKG5ldHdvcmtfdGhyZWFkID8gbmV0
d29ya190aHJlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcnRj
OjpUaHJlYWQ6OkN1cnJlbnQoKSkge30KICAgfkZha2VJY2VUcmFuc3BvcnQoKSBvdmVycmlkZSB7
CiAgICAgaWYgKGRlc3RfICYmIGRlc3RfLT5kZXN0XyA9PSB0aGlzKSB7CiAgICAgICBkZXN0Xy0+
ZGVzdF8gPSBudWxscHRyOwpAQCAtMTE0LDYgKzExOSwxOSBAQCBjbGFzcyBGYWtlSWNlVHJhbnNw
b3J0IDogcHVibGljIEljZVRyYW5zcG9ydEludGVybmFsIHsKICAgICByZXR1cm4gSWNlVHJhbnNw
b3J0U3RhdGU6OlNUQVRFX0NPTk5FQ1RJTkc7CiAgIH0KIAorICB3ZWJydGM6OkljZVRyYW5zcG9y
dFN0YXRlIEdldEljZVRyYW5zcG9ydFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgIGlmIChj
b25uZWN0aW9uX2NvdW50XyA9PSAwKSB7CisgICAgICByZXR1cm4gaGFkX2Nvbm5lY3Rpb25fID8g
d2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6a0ZhaWxlZAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtOZXc7CisgICAgfQorCisgICAg
aWYgKGNvbm5lY3Rpb25fY291bnRfID09IDEpIHsKKyAgICAgIHJldHVybiB3ZWJydGM6OkljZVRy
YW5zcG9ydFN0YXRlOjprQ29tcGxldGVkOworICAgIH0KKworICAgIHJldHVybiB3ZWJydGM6Oklj
ZVRyYW5zcG9ydFN0YXRlOjprQ29ubmVjdGVkOworICB9CisKICAgdm9pZCBTZXRJY2VSb2xlKElj
ZVJvbGUgcm9sZSkgb3ZlcnJpZGUgeyByb2xlXyA9IHJvbGU7IH0KICAgSWNlUm9sZSBHZXRJY2VS
b2xlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcm9sZV87IH0KICAgdm9pZCBTZXRJY2VUaWVi
cmVha2VyKHVpbnQ2NF90IHRpZWJyZWFrZXIpIG92ZXJyaWRlIHsKQEAgLTIyNiw2ICsyNDQsOCBA
QCBjbGFzcyBGYWtlSWNlVHJhbnNwb3J0IDogcHVibGljIEljZVRyYW5zcG9ydEludGVybmFsIHsK
ICAgfQogICB2b2lkIFNldE5ldHdvcmtSb3V0ZShhYnNsOjpvcHRpb25hbDxydGM6Ok5ldHdvcmtS
b3V0ZT4gbmV0d29ya19yb3V0ZSkgewogICAgIG5ldHdvcmtfcm91dGVfID0gbmV0d29ya19yb3V0
ZTsKKyAgICBuZXR3b3JrX3RocmVhZF8tPkludm9rZTx2b2lkPigKKyAgICAgICAgUlRDX0ZST01f
SEVSRSwgW3RoaXNdIHsgU2lnbmFsTmV0d29ya1JvdXRlQ2hhbmdlZChuZXR3b3JrX3JvdXRlXyk7
IH0pOwogICB9CiAKICBwcml2YXRlOgpAQCAtMjUzLDcgKzI3Myw3IEBAIGNsYXNzIEZha2VJY2VU
cmFuc3BvcnQgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewogICAgIGlmIChkZXN0Xykg
ewogICAgICAgbGFzdF9zZW50X3BhY2tldF8gPSBwYWNrZXQ7CiAgICAgICBkZXN0Xy0+U2lnbmFs
UmVhZFBhY2tldChkZXN0XywgcGFja2V0LmRhdGE8Y2hhcj4oKSwgcGFja2V0LnNpemUoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSwgMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRpbWVNaWNyb3MoKSwgMCk7CiAg
ICAgfQogICB9CiAKQEAgLTI4Miw2ICszMDIsNyBAQCBjbGFzcyBGYWtlSWNlVHJhbnNwb3J0IDog
cHVibGljIEljZVRyYW5zcG9ydEludGVybmFsIHsKICAgYWJzbDo6b3B0aW9uYWw8cnRjOjpOZXR3
b3JrUm91dGU+IG5ldHdvcmtfcm91dGVfOwogICBzdGQ6Om1hcDxydGM6OlNvY2tldDo6T3B0aW9u
LCBpbnQ+IHNvY2tldF9vcHRpb25zXzsKICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBsYXN0X3Nl
bnRfcGFja2V0XzsKKyAgcnRjOjpUaHJlYWQqIGNvbnN0IG5ldHdvcmtfdGhyZWFkXzsKIH07CiAK
IH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9mYWtlcGFja2V0dHJhbnNwb3J0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9mYWtlcGFj
a2V0dHJhbnNwb3J0LmgKaW5kZXggZTU3YmMxNzlhNzk5MTcxNGMxYjRiNDMyM2I1N2Y1NDcyZDE5
ZGI3Zi4uNTJiMzkyMTVjNzUyNGFjMzQ1YmM1MzlkY2EwNzVjMjE4MjdmODE4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvZmFr
ZXBhY2tldHRyYW5zcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL2Zha2VwYWNrZXR0cmFuc3BvcnQuaApAQCAtMTE5LDcgKzExOSw3
IEBAIGNsYXNzIEZha2VQYWNrZXRUcmFuc3BvcnQgOiBwdWJsaWMgUGFja2V0VHJhbnNwb3J0SW50
ZXJuYWwgewogICAgIGxhc3Rfc2VudF9wYWNrZXRfID0gcGFja2V0OwogICAgIGlmIChkZXN0Xykg
ewogICAgICAgZGVzdF8tPlNpZ25hbFJlYWRQYWNrZXQoZGVzdF8sIHBhY2tldC5kYXRhPGNoYXI+
KCksIHBhY2tldC5zaXplKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVQ
YWNrZXRUaW1lKDApLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVNaWNy
b3MoKSwgMCk7CiAgICAgfQogICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9pY2Vj
cmVkZW50aWFsc2l0ZXJhdG9yLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkMjk2NTM0NDBkN2NiMmRhODBjNmQ1
YWNmMTBlMzM5YzEyM2VkMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmNj
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJwMnAvYmFz
ZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5o
IgorCituYW1lc3BhY2UgY3JpY2tldCB7CisKK0ljZUNyZWRlbnRpYWxzSXRlcmF0b3I6OkljZUNy
ZWRlbnRpYWxzSXRlcmF0b3IoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8SWNlUGFyYW1ldGVycz4m
IHBvb2xlZF9jcmVkZW50aWFscykKKyAgICA6IHBvb2xlZF9pY2VfY3JlZGVudGlhbHNfKHBvb2xl
ZF9jcmVkZW50aWFscykge30KKworSWNlQ3JlZGVudGlhbHNJdGVyYXRvcjo6fkljZUNyZWRlbnRp
YWxzSXRlcmF0b3IoKSA9IGRlZmF1bHQ7CisKK0ljZVBhcmFtZXRlcnMgSWNlQ3JlZGVudGlhbHNJ
dGVyYXRvcjo6Q3JlYXRlUmFuZG9tSWNlQ3JlZGVudGlhbHMoKSB7CisgIHJldHVybiBJY2VQYXJh
bWV0ZXJzKHJ0Yzo6Q3JlYXRlUmFuZG9tU3RyaW5nKElDRV9VRlJBR19MRU5HVEgpLAorICAgICAg
ICAgICAgICAgICAgICAgICBydGM6OkNyZWF0ZVJhbmRvbVN0cmluZyhJQ0VfUFdEX0xFTkdUSCks
IGZhbHNlKTsKK30KKworSWNlUGFyYW1ldGVycyBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yOjpHZXRJ
Y2VDcmVkZW50aWFscygpIHsKKyAgaWYgKHBvb2xlZF9pY2VfY3JlZGVudGlhbHNfLmVtcHR5KCkp
IHsKKyAgICByZXR1cm4gQ3JlYXRlUmFuZG9tSWNlQ3JlZGVudGlhbHMoKTsKKyAgfQorICBJY2VQ
YXJhbWV0ZXJzIGNyZWRlbnRpYWxzID0gcG9vbGVkX2ljZV9jcmVkZW50aWFsc18uYmFjaygpOwor
ICBwb29sZWRfaWNlX2NyZWRlbnRpYWxzXy5wb3BfYmFjaygpOworICByZXR1cm4gY3JlZGVudGlh
bHM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9pY2VjcmVkZW50aWFsc2l0
ZXJhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNlMWQ2NDYwYWU5MDZi
MzU2ODk3YzRlZGI4YWM2YjllOTA0ZWMzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRl
cmF0b3IuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJS
VEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAg
dGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmln
aHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9S
UyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFAy
UF9CQVNFX0lDRUNSRURFTlRJQUxTSVRFUkFUT1JfSF8KKyNkZWZpbmUgUDJQX0JBU0VfSUNFQ1JF
REVOVElBTFNJVEVSQVRPUl9IXworCisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAicDJw
L2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uaCIKKworbmFtZXNwYWNlIGNyaWNrZXQgeworCitj
bGFzcyBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEljZUNy
ZWRlbnRpYWxzSXRlcmF0b3IoY29uc3Qgc3RkOjp2ZWN0b3I8SWNlUGFyYW1ldGVycz4mKTsKKyAg
dmlydHVhbCB+SWNlQ3JlZGVudGlhbHNJdGVyYXRvcigpOworCisgIC8vIEdldCBuZXh0IHBvb2xl
ZCBpY2UgY3JlZGVudGlhbHMuCisgIC8vIFJldHVybnMgYSBuZXcgcmFuZG9tIGNyZWRlbnRpYWwg
aWYgdGhlIHBvb2wgaXMgZW1wdHkuCisgIEljZVBhcmFtZXRlcnMgR2V0SWNlQ3JlZGVudGlhbHMo
KTsKKworICBzdGF0aWMgSWNlUGFyYW1ldGVycyBDcmVhdGVSYW5kb21JY2VDcmVkZW50aWFscygp
OworCisgcHJpdmF0ZToKKyAgc3RkOjp2ZWN0b3I8SWNlUGFyYW1ldGVycz4gcG9vbGVkX2ljZV9j
cmVkZW50aWFsc187Cit9OworCit9ICAvLyBuYW1lc3BhY2UgY3JpY2tldAorCisjZW5kaWYgIC8v
IFAyUF9CQVNFX0lDRUNSRURFTlRJQUxTSVRFUkFUT1JfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZWNyZWRlbnRpYWxz
aXRlcmF0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yX3VuaXR0ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjAwZmFjZmJiODhkMWVmYzljZTYzOWI4OWQ3MDE2YmE1M2Q0ZDQ5YWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yX3VuaXR0ZXN0LmNjCkBAIC0wLDAgKzEsNDkgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisg
KiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3Jz
IG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgInAycC9iYXNlL2ljZWNyZWRlbnRpYWxz
aXRlcmF0b3IuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgorCit1c2luZyBjcmlja2V0
OjpJY2VQYXJhbWV0ZXJzOwordXNpbmcgY3JpY2tldDo6SWNlQ3JlZGVudGlhbHNJdGVyYXRvcjsK
KworVEVTVChJY2VDcmVkZW50aWFsc0l0ZXJhdG9yVGVzdCwgR2V0RW1wdHkpIHsKKyAgc3RkOjp2
ZWN0b3I8SWNlUGFyYW1ldGVycz4gZW1wdHk7CisgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IgaXRl
cmF0b3IoZW1wdHkpOworICAvLyBWZXJpZnkgdGhhdCB3ZSBjYW4gZ2V0IGNyZWRlbnRpYWxzIGV2
ZW4gaWYgaW5wdXQgaXMgZW1wdHkuCisgIEljZVBhcmFtZXRlcnMgY3JlZGVudGlhbHMxID0gaXRl
cmF0b3IuR2V0SWNlQ3JlZGVudGlhbHMoKTsKK30KKworVEVTVChJY2VDcmVkZW50aWFsc0l0ZXJh
dG9yVGVzdCwgR2V0T25lKSB7CisgIHN0ZDo6dmVjdG9yPEljZVBhcmFtZXRlcnM+IG9uZSA9IHsK
KyAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3I6OkNyZWF0ZVJhbmRvbUljZUNyZWRlbnRpYWxz
KCl9OworICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yIGl0ZXJhdG9yKG9uZSk7CisgIEVYUEVDVF9F
UShpdGVyYXRvci5HZXRJY2VDcmVkZW50aWFscygpLCBvbmVbMF0pOworICBhdXRvIHJhbmRvbSA9
IGl0ZXJhdG9yLkdldEljZUNyZWRlbnRpYWxzKCk7CisgIEVYUEVDVF9ORShyYW5kb20sIG9uZVsw
XSk7CisgIEVYUEVDVF9ORShyYW5kb20sIGl0ZXJhdG9yLkdldEljZUNyZWRlbnRpYWxzKCkpOwor
fQorCitURVNUKEljZUNyZWRlbnRpYWxzSXRlcmF0b3JUZXN0LCBHZXRUd28pIHsKKyAgc3RkOjp2
ZWN0b3I8SWNlUGFyYW1ldGVycz4gdHdvID0geworICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRv
cjo6Q3JlYXRlUmFuZG9tSWNlQ3JlZGVudGlhbHMoKSwKKyAgICAgIEljZUNyZWRlbnRpYWxzSXRl
cmF0b3I6OkNyZWF0ZVJhbmRvbUljZUNyZWRlbnRpYWxzKCl9OworICBJY2VDcmVkZW50aWFsc0l0
ZXJhdG9yIGl0ZXJhdG9yKHR3byk7CisgIEVYUEVDVF9FUShpdGVyYXRvci5HZXRJY2VDcmVkZW50
aWFscygpLCB0d29bMV0pOworICBFWFBFQ1RfRVEoaXRlcmF0b3IuR2V0SWNlQ3JlZGVudGlhbHMo
KSwgdHdvWzBdKTsKKyAgYXV0byByYW5kb20gPSBpdGVyYXRvci5HZXRJY2VDcmVkZW50aWFscygp
OworICBFWFBFQ1RfTkUocmFuZG9tLCB0d29bMF0pOworICBFWFBFQ1RfTkUocmFuZG9tLCB0d29b
MV0pOworICBFWFBFQ1RfTkUocmFuZG9tLCBpdGVyYXRvci5HZXRJY2VDcmVkZW50aWFscygpKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL2ljZXRyYW5zcG9ydGludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9pY2V0cmFuc3BvcnRpbnRlcm5hbC5oCmluZGV4
IDc0ODNjM2JhYmMyZTIxZWNjMmQzOTc2MjhkYjY0NDFmYTA3M2E0MmIuLjA5OWNlYTcwZThmODkw
ODM3ZDliNDIwZjA4OWJiODZjNjkxYjgyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL2ljZXRyYW5zcG9ydGludGVybmFsLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
aWNldHJhbnNwb3J0aW50ZXJuYWwuaApAQCAtMTUsMTEgKzE1LDEyIEBACiAjaW5jbHVkZSA8dmVj
dG9yPgogCiAjaW5jbHVkZSAiYXBpL2NhbmRpZGF0ZS5oIgorI2luY2x1ZGUgImFwaS90cmFuc3Bv
cnQvZW51bXMuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9jYW5kaWRhdGVwYWlyaW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAicDJwL2Jhc2UvcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuaCIKICNpbmNsdWRl
ICJwMnAvYmFzZS9wb3J0LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRp
b24uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKQEAgLTE4
MSwxNCArMTgyLDE3IEBAIGVudW0gSWNlUHJvdG9jb2xUeXBlIHsKIAogLy8gSWNlVHJhbnNwb3J0
SW50ZXJuYWwgaXMgYW4gaW50ZXJuYWwgYWJzdHJhY3QgY2xhc3MgdGhhdCBkb2VzIElDRS4KIC8v
IE9uY2UgdGhlIHB1YmxpYyBpbnRlcmZhY2UgaXMgc3VwcG9ydGVkLAotLy8gKGh0dHBzOi8vd3d3
LnczLm9yZy9UUi93ZWJydGMvI3J0Y2ljZXRyYW5zcG9ydC1pbnRlcmZhY2UpCisvLyAoaHR0cHM6
Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8jcnRjaWNldHJhbnNwb3J0KQogLy8gdGhlIEljZVRyYW5z
cG9ydEludGVyZmFjZSB3aWxsIGJlIHNwbGl0IGZyb20gdGhpcyBjbGFzcy4KLWNsYXNzIEljZVRy
YW5zcG9ydEludGVybmFsIDogcHVibGljIHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwgewor
Y2xhc3MgUlRDX0VYUE9SVCBJY2VUcmFuc3BvcnRJbnRlcm5hbCA6IHB1YmxpYyBydGM6OlBhY2tl
dFRyYW5zcG9ydEludGVybmFsIHsKICBwdWJsaWM6CiAgIEljZVRyYW5zcG9ydEludGVybmFsKCk7
CiAgIH5JY2VUcmFuc3BvcnRJbnRlcm5hbCgpIG92ZXJyaWRlOwogCisgIC8vIFRPRE8oYnVncy53
ZWJydGMub3JnLzkzMDgpOiBSZW1vdmUgR2V0U3RhdGUgb25jZSBhbGwgdXNlcyBoYXZlIGJlZW4K
KyAgLy8gbWlncmF0ZWQgdG8gR2V0SWNlVHJhbnNwb3J0U3RhdGUuCiAgIHZpcnR1YWwgSWNlVHJh
bnNwb3J0U3RhdGUgR2V0U3RhdGUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgd2VicnRjOjpJY2VU
cmFuc3BvcnRTdGF0ZSBHZXRJY2VUcmFuc3BvcnRTdGF0ZSgpIGNvbnN0ID0gMDsKIAogICB2aXJ0
dWFsIGludCBjb21wb25lbnQoKSBjb25zdCA9IDA7CiAKQEAgLTI1OCw4ICsyNjIsMTMgQEAgY2xh
c3MgSWNlVHJhbnNwb3J0SW50ZXJuYWwgOiBwdWJsaWMgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRl
cm5hbCB7CiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8SWNlVHJhbnNwb3J0SW50ZXJuYWwqPiBTaWduYWxS
b2xlQ29uZmxpY3Q7CiAKICAgLy8gRW1pdHRlZCB3aGVuZXZlciB0aGUgdHJhbnNwb3J0IHN0YXRl
IGNoYW5nZWQuCisgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzkzMDgpOiBSZW1vdmUgb25jZSBh
bGwgdXNlcyBoYXZlIG1pZ3JhdGVkIHRvIHRoZSBuZXcKKyAgLy8gSWNlVHJhbnNwb3J0U3RhdGUu
CiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8SWNlVHJhbnNwb3J0SW50ZXJuYWwqPiBTaWduYWxTdGF0ZUNo
YW5nZWQ7CiAKKyAgLy8gRW1pdHRlZCB3aGVuZXZlciB0aGUgbmV3IHN0YW5kYXJkcy1jb21wbGlh
bnQgdHJhbnNwb3J0IHN0YXRlIGNoYW5nZWQuCisgIHNpZ3Nsb3Q6OnNpZ25hbDE8SWNlVHJhbnNw
b3J0SW50ZXJuYWwqPiBTaWduYWxJY2VUcmFuc3BvcnRTdGF0ZUNoYW5nZWQ7CisKICAgLy8gSW52
b2tlZCB3aGVuIHRoZSB0cmFuc3BvcnQgaXMgYmVpbmcgZGVzdHJveWVkLgogICBzaWdzbG90Ojpz
aWduYWwxPEljZVRyYW5zcG9ydEludGVybmFsKj4gU2lnbmFsRGVzdHJveWVkOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L21kbnNfbWVzc2FnZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZS5jYwppbmRleCA2MWFmNmYzOWYyOWM4OThlM2MyYTBk
YjIxYWM1MDk3YzczODFjNjBiLi5mMTRhMGQxMTdlMzVlYTM5YzIyMWVlMWZmZjBjZjc4MjNkOTk0
ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvbWRuc19tZXNzYWdlLmNjCkBAIC0xOSwxMyArMTks
MTMgQEAgbmFtZXNwYWNlIHsKIC8vIFJGQyAxMDM1LCBTZWN0aW9uIDQuMS4xLgogLy8KIC8vIFFS
IGJpdC4KLWNvbnN0ZXhwciB1aW50MTZfdCBrTURuc0ZsYWdNYXNrUXVlcnlPclJlc3BvbnNlID0g
MHg4MDAwOworY29uc3RleHByIHVpbnQxNl90IGtNZG5zRmxhZ01hc2tRdWVyeU9yUmVzcG9uc2Ug
PSAweDgwMDA7CiAvLyBBQSBiaXQuCi1jb25zdGV4cHIgdWludDE2X3Qga01EbnNGbGFnTWFza0F1
dGhvcml0YXRpdmUgPSAweDA0MDA7Citjb25zdGV4cHIgdWludDE2X3Qga01kbnNGbGFnTWFza0F1
dGhvcml0YXRpdmUgPSAweDA0MDA7CiAvLyBSRkMgMTAzNSwgU2VjdGlvbiA0LjEuMiwgUUNMQVNT
IGFuZCBSRkMgNjc2MiwgU2VjdGlvbiAxOC4xMiwgcmVwdXJwb3Npbmcgb2YKIC8vIHRvcCBiaXQg
b2YgUUNMQVNTIGFzIHRoZSB1bmljYXN0IHJlc3BvbnNlIGJpdC4KLWNvbnN0ZXhwciB1aW50MTZf
dCBrTURuc1FDbGFzc01hc2tVbmljYXN0UmVzcG9uc2UgPSAweDgwMDA7Ci1jb25zdGV4cHIgc2l6
ZV90IGtNRG5zSGVhZGVyU2l6ZUJ5dGVzID0gMTI7Citjb25zdGV4cHIgdWludDE2X3Qga01kbnNR
Q2xhc3NNYXNrVW5pY2FzdFJlc3BvbnNlID0gMHg4MDAwOworY29uc3RleHByIHNpemVfdCBrTWRu
c0hlYWRlclNpemVCeXRlcyA9IDEyOwogCiBib29sIFJlYWREb21haW5OYW1lKE1lc3NhZ2VCdWZm
ZXJSZWFkZXIqIGJ1Ziwgc3RkOjpzdHJpbmcqIG5hbWUpIHsKICAgc2l6ZV90IG5hbWVfc3RhcnRf
cG9zID0gYnVmLT5DdXJyZW50T2Zmc2V0KCk7CkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgUmVhZERv
bWFpbk5hbWUoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmLCBzdGQ6OnN0cmluZyogbmFtZSkgewog
ICAgIC8vIEEgbGVnaXRpbWF0ZSBwb2ludGVyIG9ubHkgcmVmZXJzIHRvIGEgcHJpb3Igb2NjdXJy
ZW5jZSBvZiB0aGUgc2FtZSBuYW1lLAogICAgIC8vIGFuZCB3ZSBzaG91bGQgb25seSBtb3ZlIHN0
cmljdGx5IGJhY2t3YXJkIHRvIGEgcHJpb3IgbmFtZSBmaWVsZCBhZnRlciB0aGUKICAgICAvLyBo
ZWFkZXIuCi0gICAgaWYgKHBvc19qdW1wX3RvID49IG5hbWVfc3RhcnRfcG9zIHx8IHBvc19qdW1w
X3RvIDwga01EbnNIZWFkZXJTaXplQnl0ZXMpIHsKKyAgICBpZiAocG9zX2p1bXBfdG8gPj0gbmFt
ZV9zdGFydF9wb3MgfHwgcG9zX2p1bXBfdG8gPCBrTWRuc0hlYWRlclNpemVCeXRlcykgewogICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBNZXNzYWdlQnVmZmVyUmVhZGVyIG5ld19idWYo
YnVmLT5NZXNzYWdlRGF0YSgpLCBidWYtPk1lc3NhZ2VMZW5ndGgoKSk7CkBAIC04OCwyNyArODgs
MjcgQEAgdm9pZCBXcml0ZURvbWFpbk5hbWUocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYsIGNv
bnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi12b2lkIE1EbnNI
ZWFkZXI6OlNldFF1ZXJ5T3JSZXNwb25zZShib29sIGlzX3F1ZXJ5KSB7Cit2b2lkIE1kbnNIZWFk
ZXI6OlNldFF1ZXJ5T3JSZXNwb25zZShib29sIGlzX3F1ZXJ5KSB7CiAgIGlmIChpc19xdWVyeSkg
ewotICAgIGZsYWdzICY9IH5rTURuc0ZsYWdNYXNrUXVlcnlPclJlc3BvbnNlOworICAgIGZsYWdz
ICY9IH5rTWRuc0ZsYWdNYXNrUXVlcnlPclJlc3BvbnNlOwogICB9IGVsc2UgewotICAgIGZsYWdz
IHw9IGtNRG5zRmxhZ01hc2tRdWVyeU9yUmVzcG9uc2U7CisgICAgZmxhZ3MgfD0ga01kbnNGbGFn
TWFza1F1ZXJ5T3JSZXNwb25zZTsKICAgfQogfQogCi12b2lkIE1EbnNIZWFkZXI6OlNldEF1dGhv
cml0YXRpdmUoYm9vbCBpc19hdXRob3JpdGF0aXZlKSB7Cit2b2lkIE1kbnNIZWFkZXI6OlNldEF1
dGhvcml0YXRpdmUoYm9vbCBpc19hdXRob3JpdGF0aXZlKSB7CiAgIGlmIChpc19hdXRob3JpdGF0
aXZlKSB7Ci0gICAgZmxhZ3MgfD0ga01EbnNGbGFnTWFza0F1dGhvcml0YXRpdmU7CisgICAgZmxh
Z3MgfD0ga01kbnNGbGFnTWFza0F1dGhvcml0YXRpdmU7CiAgIH0gZWxzZSB7Ci0gICAgZmxhZ3Mg
Jj0gfmtNRG5zRmxhZ01hc2tBdXRob3JpdGF0aXZlOworICAgIGZsYWdzICY9IH5rTWRuc0ZsYWdN
YXNrQXV0aG9yaXRhdGl2ZTsKICAgfQogfQogCi1ib29sIE1EbnNIZWFkZXI6OklzQXV0aG9yaXRh
dGl2ZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGZsYWdzICYga01EbnNGbGFnTWFza0F1dGhvcml0YXRp
dmU7Citib29sIE1kbnNIZWFkZXI6OklzQXV0aG9yaXRhdGl2ZSgpIGNvbnN0IHsKKyAgcmV0dXJu
IGZsYWdzICYga01kbnNGbGFnTWFza0F1dGhvcml0YXRpdmU7CiB9CiAKLWJvb2wgTURuc0hlYWRl
cjo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKK2Jvb2wgTWRuc0hlYWRlcjo6UmVh
ZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKICAgaWYgKCFidWYtPlJlYWRVSW50MTYoJmlk
KSB8fCAhYnVmLT5SZWFkVUludDE2KCZmbGFncykgfHwKICAgICAgICFidWYtPlJlYWRVSW50MTYo
JnFkY291bnQpIHx8ICFidWYtPlJlYWRVSW50MTYoJmFuY291bnQpIHx8CiAgICAgICAhYnVmLT5S
ZWFkVUludDE2KCZuc2NvdW50KSB8fCAhYnVmLT5SZWFkVUludDE2KCZhcmNvdW50KSkgewpAQCAt
MTE4LDcgKzExOCw3IEBAIGJvb2wgTURuc0hlYWRlcjo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVy
KiBidWYpIHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTURuc0hlYWRlcjo6V3JpdGUocnRj
OjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKK3ZvaWQgTWRuc0hlYWRlcjo6V3JpdGUo
cnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKICAgYnVmLT5Xcml0ZVVJbnQxNihp
ZCk7CiAgIGJ1Zi0+V3JpdGVVSW50MTYoZmxhZ3MpOwogICBidWYtPldyaXRlVUludDE2KHFkY291
bnQpOwpAQCAtMTI3LDE1ICsxMjcsMTUgQEAgdm9pZCBNRG5zSGVhZGVyOjpXcml0ZShydGM6OkJ5
dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3QgewogICBidWYtPldyaXRlVUludDE2KGFyY291bnQp
OwogfQogCi1ib29sIE1EbnNIZWFkZXI6OklzUXVlcnkoKSBjb25zdCB7Ci0gIHJldHVybiAhKGZs
YWdzICYga01EbnNGbGFnTWFza1F1ZXJ5T3JSZXNwb25zZSk7Citib29sIE1kbnNIZWFkZXI6Oklz
UXVlcnkoKSBjb25zdCB7CisgIHJldHVybiAhKGZsYWdzICYga01kbnNGbGFnTWFza1F1ZXJ5T3JS
ZXNwb25zZSk7CiB9CiAKLU1EbnNTZWN0aW9uRW50cnk6Ok1EbnNTZWN0aW9uRW50cnkoKSA9IGRl
ZmF1bHQ7Ci1NRG5zU2VjdGlvbkVudHJ5Ojp+TURuc1NlY3Rpb25FbnRyeSgpID0gZGVmYXVsdDsK
LU1EbnNTZWN0aW9uRW50cnk6Ok1EbnNTZWN0aW9uRW50cnkoY29uc3QgTURuc1NlY3Rpb25FbnRy
eSYgb3RoZXIpID0gZGVmYXVsdDsKK01kbnNTZWN0aW9uRW50cnk6Ok1kbnNTZWN0aW9uRW50cnko
KSA9IGRlZmF1bHQ7CitNZG5zU2VjdGlvbkVudHJ5Ojp+TWRuc1NlY3Rpb25FbnRyeSgpID0gZGVm
YXVsdDsKK01kbnNTZWN0aW9uRW50cnk6Ok1kbnNTZWN0aW9uRW50cnkoY29uc3QgTWRuc1NlY3Rp
b25FbnRyeSYgb3RoZXIpID0gZGVmYXVsdDsKIAotdm9pZCBNRG5zU2VjdGlvbkVudHJ5OjpTZXRU
eXBlKFNlY3Rpb25FbnRyeVR5cGUgdHlwZSkgewordm9pZCBNZG5zU2VjdGlvbkVudHJ5OjpTZXRU
eXBlKFNlY3Rpb25FbnRyeVR5cGUgdHlwZSkgewogICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNl
IFNlY3Rpb25FbnRyeVR5cGU6OmtBOgogICAgICAgdHlwZV8gPSAxOwpAQCAtMTQ4LDcgKzE0OCw3
IEBAIHZvaWQgTURuc1NlY3Rpb25FbnRyeTo6U2V0VHlwZShTZWN0aW9uRW50cnlUeXBlIHR5cGUp
IHsKICAgfQogfQogCi1TZWN0aW9uRW50cnlUeXBlIE1EbnNTZWN0aW9uRW50cnk6OkdldFR5cGUo
KSBjb25zdCB7CitTZWN0aW9uRW50cnlUeXBlIE1kbnNTZWN0aW9uRW50cnk6OkdldFR5cGUoKSBj
b25zdCB7CiAgIHN3aXRjaCAodHlwZV8pIHsKICAgICBjYXNlIDE6CiAgICAgICByZXR1cm4gU2Vj
dGlvbkVudHJ5VHlwZTo6a0E7CkBAIC0xNTksNyArMTU5LDcgQEAgU2VjdGlvbkVudHJ5VHlwZSBN
RG5zU2VjdGlvbkVudHJ5OjpHZXRUeXBlKCkgY29uc3QgewogICB9CiB9CiAKLXZvaWQgTURuc1Nl
Y3Rpb25FbnRyeTo6U2V0Q2xhc3MoU2VjdGlvbkVudHJ5Q2xhc3MgY2xzKSB7Cit2b2lkIE1kbnNT
ZWN0aW9uRW50cnk6OlNldENsYXNzKFNlY3Rpb25FbnRyeUNsYXNzIGNscykgewogICBzd2l0Y2gg
KGNscykgewogICAgIGNhc2UgU2VjdGlvbkVudHJ5Q2xhc3M6OmtJTjoKICAgICAgIGNsYXNzXyA9
IDE7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBNRG5zU2VjdGlvbkVudHJ5OjpTZXRDbGFzcyhT
ZWN0aW9uRW50cnlDbGFzcyBjbHMpIHsKICAgfQogfQogCi1TZWN0aW9uRW50cnlDbGFzcyBNRG5z
U2VjdGlvbkVudHJ5OjpHZXRDbGFzcygpIGNvbnN0IHsKK1NlY3Rpb25FbnRyeUNsYXNzIE1kbnNT
ZWN0aW9uRW50cnk6OkdldENsYXNzKCkgY29uc3QgewogICBzd2l0Y2ggKGNsYXNzXykgewogICAg
IGNhc2UgMToKICAgICAgIHJldHVybiBTZWN0aW9uRW50cnlDbGFzczo6a0lOOwpAQCAtMTc4LDEx
ICsxNzgsMTEgQEAgU2VjdGlvbkVudHJ5Q2xhc3MgTURuc1NlY3Rpb25FbnRyeTo6R2V0Q2xhc3Mo
KSBjb25zdCB7CiAgIH0KIH0KIAotTURuc1F1ZXN0aW9uOjpNRG5zUXVlc3Rpb24oKSA9IGRlZmF1
bHQ7Ci1NRG5zUXVlc3Rpb246Ok1EbnNRdWVzdGlvbihjb25zdCBNRG5zUXVlc3Rpb24mIG90aGVy
KSA9IGRlZmF1bHQ7Ci1NRG5zUXVlc3Rpb246On5NRG5zUXVlc3Rpb24oKSA9IGRlZmF1bHQ7CitN
ZG5zUXVlc3Rpb246Ok1kbnNRdWVzdGlvbigpID0gZGVmYXVsdDsKK01kbnNRdWVzdGlvbjo6TWRu
c1F1ZXN0aW9uKGNvbnN0IE1kbnNRdWVzdGlvbiYgb3RoZXIpID0gZGVmYXVsdDsKK01kbnNRdWVz
dGlvbjo6fk1kbnNRdWVzdGlvbigpID0gZGVmYXVsdDsKIAotYm9vbCBNRG5zUXVlc3Rpb246OlJl
YWQoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7Citib29sIE1kbnNRdWVzdGlvbjo6UmVhZChN
ZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKICAgaWYgKCFSZWFkRG9tYWluTmFtZShidWYsICZu
YW1lXykpIHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiSW52YWxpZCBuYW1lLiI7CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTk0LDMxICsxOTQsMzEgQEAgYm9vbCBNRG5zUXVlc3Rpb246OlJl
YWQoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7CiAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IE1EbnNRdWVzdGlvbjo6V3JpdGUocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsK
K2Jvb2wgTWRuc1F1ZXN0aW9uOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29u
c3QgewogICBXcml0ZURvbWFpbk5hbWUoYnVmLCBuYW1lXyk7CiAgIGJ1Zi0+V3JpdGVVSW50MTYo
dHlwZV8pOwogICBidWYtPldyaXRlVUludDE2KGNsYXNzXyk7CiAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIE1EbnNRdWVzdGlvbjo6U2V0VW5pY2FzdFJlc3BvbnNlKGJvb2wgc2hvdWxkX3VuaWNh
c3QpIHsKK3ZvaWQgTWRuc1F1ZXN0aW9uOjpTZXRVbmljYXN0UmVzcG9uc2UoYm9vbCBzaG91bGRf
dW5pY2FzdCkgewogICBpZiAoc2hvdWxkX3VuaWNhc3QpIHsKLSAgICBjbGFzc18gfD0ga01EbnNR
Q2xhc3NNYXNrVW5pY2FzdFJlc3BvbnNlOworICAgIGNsYXNzXyB8PSBrTWRuc1FDbGFzc01hc2tV
bmljYXN0UmVzcG9uc2U7CiAgIH0gZWxzZSB7Ci0gICAgY2xhc3NfICY9IH5rTURuc1FDbGFzc01h
c2tVbmljYXN0UmVzcG9uc2U7CisgICAgY2xhc3NfICY9IH5rTWRuc1FDbGFzc01hc2tVbmljYXN0
UmVzcG9uc2U7CiAgIH0KIH0KIAotYm9vbCBNRG5zUXVlc3Rpb246OlNob3VsZFVuaWNhc3RSZXNw
b25zZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGNsYXNzXyAmIGtNRG5zUUNsYXNzTWFza1VuaWNhc3RS
ZXNwb25zZTsKK2Jvb2wgTWRuc1F1ZXN0aW9uOjpTaG91bGRVbmljYXN0UmVzcG9uc2UoKSBjb25z
dCB7CisgIHJldHVybiBjbGFzc18gJiBrTWRuc1FDbGFzc01hc2tVbmljYXN0UmVzcG9uc2U7CiB9
CiAKLU1EbnNSZXNvdXJjZVJlY29yZDo6TURuc1Jlc291cmNlUmVjb3JkKCkgPSBkZWZhdWx0Owot
TURuc1Jlc291cmNlUmVjb3JkOjpNRG5zUmVzb3VyY2VSZWNvcmQoY29uc3QgTURuc1Jlc291cmNl
UmVjb3JkJiBvdGhlcikgPQorTWRuc1Jlc291cmNlUmVjb3JkOjpNZG5zUmVzb3VyY2VSZWNvcmQo
KSA9IGRlZmF1bHQ7CitNZG5zUmVzb3VyY2VSZWNvcmQ6Ok1kbnNSZXNvdXJjZVJlY29yZChjb25z
dCBNZG5zUmVzb3VyY2VSZWNvcmQmIG90aGVyKSA9CiAgICAgZGVmYXVsdDsKLU1EbnNSZXNvdXJj
ZVJlY29yZDo6fk1EbnNSZXNvdXJjZVJlY29yZCgpID0gZGVmYXVsdDsKK01kbnNSZXNvdXJjZVJl
Y29yZDo6fk1kbnNSZXNvdXJjZVJlY29yZCgpID0gZGVmYXVsdDsKIAotYm9vbCBNRG5zUmVzb3Vy
Y2VSZWNvcmQ6OlJlYWQoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7Citib29sIE1kbnNSZXNv
dXJjZVJlY29yZDo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKICAgaWYgKCFSZWFk
RG9tYWluTmFtZShidWYsICZuYW1lXykpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KQEAgLTIz
OSwxNyArMjM5LDE3IEBAIGJvb2wgTURuc1Jlc291cmNlUmVjb3JkOjpSZWFkKE1lc3NhZ2VCdWZm
ZXJSZWFkZXIqIGJ1ZikgewogICB9CiAgIHJldHVybiBmYWxzZTsKIH0KLWJvb2wgTURuc1Jlc291
cmNlUmVjb3JkOjpSZWFkQVJEYXRhKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgeworYm9vbCBN
ZG5zUmVzb3VyY2VSZWNvcmQ6OlJlYWRBUkRhdGEoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7
CiAgIC8vIEEgUkRBVEEgY29udGFpbnMgYSAzMi1iaXQgSVB2NCBhZGRyZXNzLgogICByZXR1cm4g
YnVmLT5SZWFkU3RyaW5nKCZyZGF0YV8sIDQpOwogfQogCi1ib29sIE1EbnNSZXNvdXJjZVJlY29y
ZDo6UmVhZFF1YWRBUkRhdGEoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7Citib29sIE1kbnNS
ZXNvdXJjZVJlY29yZDo6UmVhZFF1YWRBUkRhdGEoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSB7
CiAgIC8vIEFBQUEgUkRBVEEgY29udGFpbnMgYSAxMjgtYml0IElQdjYgYWRkcmVzcy4KICAgcmV0
dXJuIGJ1Zi0+UmVhZFN0cmluZygmcmRhdGFfLCAxNik7CiB9CiAKLWJvb2wgTURuc1Jlc291cmNl
UmVjb3JkOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3QgeworYm9vbCBN
ZG5zUmVzb3VyY2VSZWNvcmQ6OldyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25z
dCB7CiAgIFdyaXRlRG9tYWluTmFtZShidWYsIG5hbWVfKTsKICAgYnVmLT5Xcml0ZVVJbnQxNih0
eXBlXyk7CiAgIGJ1Zi0+V3JpdGVVSW50MTYoY2xhc3NfKTsKQEAgLTI3MCwxNSArMjcwLDE1IEBA
IGJvb2wgTURuc1Jlc291cmNlUmVjb3JkOjpXcml0ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1
ZikgY29uc3QgewogICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBNRG5zUmVzb3VyY2VSZWNvcmQ6
OldyaXRlQVJEYXRhKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7Cit2b2lkIE1k
bnNSZXNvdXJjZVJlY29yZDo6V3JpdGVBUkRhdGEocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYp
IGNvbnN0IHsKICAgYnVmLT5Xcml0ZVN0cmluZyhyZGF0YV8pOwogfQogCi12b2lkIE1EbnNSZXNv
dXJjZVJlY29yZDo6V3JpdGVRdWFkQVJEYXRhKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBj
b25zdCB7Cit2b2lkIE1kbnNSZXNvdXJjZVJlY29yZDo6V3JpdGVRdWFkQVJEYXRhKHJ0Yzo6Qnl0
ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7CiAgIGJ1Zi0+V3JpdGVTdHJpbmcocmRhdGFfKTsK
IH0KIAotYm9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6OlNldElQQWRkcmVzc0luUmVjb3JkRGF0YSgK
K2Jvb2wgTWRuc1Jlc291cmNlUmVjb3JkOjpTZXRJUEFkZHJlc3NJblJlY29yZERhdGEoCiAgICAg
Y29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHJlc3MpIHsKICAgaW50IGFmID0gYWRkcmVzcy5mYW1p
bHkoKTsKICAgaWYgKGFmICE9IEFGX0lORVQgJiYgYWYgIT0gQUZfSU5FVDYpIHsKQEAgLTI5Myw3
ICsyOTMsNyBAQCBib29sIE1EbnNSZXNvdXJjZVJlY29yZDo6U2V0SVBBZGRyZXNzSW5SZWNvcmRE
YXRhKAogICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6OkdldElQ
QWRkcmVzc0Zyb21SZWNvcmREYXRhKAorYm9vbCBNZG5zUmVzb3VyY2VSZWNvcmQ6OkdldElQQWRk
cmVzc0Zyb21SZWNvcmREYXRhKAogICAgIHJ0Yzo6SVBBZGRyZXNzKiBhZGRyZXNzKSBjb25zdCB7
CiAgIGlmIChHZXRUeXBlKCkgIT0gU2VjdGlvbkVudHJ5VHlwZTo6a0EgJiYKICAgICAgIEdldFR5
cGUoKSAhPSBTZWN0aW9uRW50cnlUeXBlOjprQUFBQSkgewpAQCAtMzEwLDE2ICszMTAsMTYgQEAg
Ym9vbCBNRG5zUmVzb3VyY2VSZWNvcmQ6OkdldElQQWRkcmVzc0Zyb21SZWNvcmREYXRhKAogICBy
ZXR1cm4gcnRjOjpJUEZyb21TdHJpbmcoc3RkOjpzdHJpbmcob3V0KSwgYWRkcmVzcyk7CiB9CiAK
LU1EbnNNZXNzYWdlOjpNRG5zTWVzc2FnZSgpID0gZGVmYXVsdDsKLU1EbnNNZXNzYWdlOjp+TURu
c01lc3NhZ2UoKSA9IGRlZmF1bHQ7CitNZG5zTWVzc2FnZTo6TWRuc01lc3NhZ2UoKSA9IGRlZmF1
bHQ7CitNZG5zTWVzc2FnZTo6fk1kbnNNZXNzYWdlKCkgPSBkZWZhdWx0OwogCi1ib29sIE1EbnNN
ZXNzYWdlOjpSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgeworYm9vbCBNZG5zTWVzc2Fn
ZTo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIHsKICAgUlRDX0RDSEVDS19FUSgwdSwg
YnVmLT5DdXJyZW50T2Zmc2V0KCkpOwogICBpZiAoIWhlYWRlcl8uUmVhZChidWYpKSB7CiAgICAg
cmV0dXJuIGZhbHNlOwogICB9CiAKLSAgYXV0byByZWFkX3F1ZXN0aW9uID0gWyZidWZdKHN0ZDo6
dmVjdG9yPE1EbnNRdWVzdGlvbj4qIHNlY3Rpb24sCisgIGF1dG8gcmVhZF9xdWVzdGlvbiA9IFsm
YnVmXShzdGQ6OnZlY3RvcjxNZG5zUXVlc3Rpb24+KiBzZWN0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDE2X3QgY291bnQpIHsKICAgICBzZWN0aW9uLT5yZXNpemUoY291
bnQpOwogICAgIGZvciAoYXV0byYgcXVlc3Rpb24gOiAoKnNlY3Rpb24pKSB7CkBAIC0zMjksNyAr
MzI5LDcgQEAgYm9vbCBNRG5zTWVzc2FnZTo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYp
IHsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiAgIH07Ci0gIGF1dG8gcmVhZF9yciA9IFsmYnVm
XShzdGQ6OnZlY3RvcjxNRG5zUmVzb3VyY2VSZWNvcmQ+KiBzZWN0aW9uLAorICBhdXRvIHJlYWRf
cnIgPSBbJmJ1Zl0oc3RkOjp2ZWN0b3I8TWRuc1Jlc291cmNlUmVjb3JkPiogc2VjdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGNvdW50KSB7CiAgICAgc2VjdGlvbi0+cmVz
aXplKGNvdW50KTsKICAgICBmb3IgKGF1dG8mIHJyIDogKCpzZWN0aW9uKSkgewpAQCAtMzQ5LDEw
ICszNDksMTAgQEAgYm9vbCBNRG5zTWVzc2FnZTo6UmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBi
dWYpIHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTURuc01lc3NhZ2U6OldyaXRlKHJ0Yzo6
Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCB7Citib29sIE1kbnNNZXNzYWdlOjpXcml0ZShy
dGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3QgewogICBoZWFkZXJfLldyaXRlKGJ1Zik7
CiAKLSAgYXV0byB3cml0ZV9yciA9IFsmYnVmXShjb25zdCBzdGQ6OnZlY3RvcjxNRG5zUmVzb3Vy
Y2VSZWNvcmQ+JiBzZWN0aW9uKSB7CisgIGF1dG8gd3JpdGVfcnIgPSBbJmJ1Zl0oY29uc3Qgc3Rk
Ojp2ZWN0b3I8TWRuc1Jlc291cmNlUmVjb3JkPiYgc2VjdGlvbikgewogICAgIGZvciAoYXV0byBy
ciA6IHNlY3Rpb24pIHsKICAgICAgIGlmICghcnIuV3JpdGUoYnVmKSkgewogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zNzQsNyArMzc0LDcgQEAgYm9vbCBNRG5zTWVzc2FnZTo6V3JpdGUocnRj
OjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0IHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgTURuc01lc3NhZ2U6OlNob3VsZFVuaWNhc3RSZXNwb25zZSgpIGNvbnN0IHsKK2Jvb2wgTWRu
c01lc3NhZ2U6OlNob3VsZFVuaWNhc3RSZXNwb25zZSgpIGNvbnN0IHsKICAgYm9vbCBzaG91bGRf
dW5pY2FzdCA9IGZhbHNlOwogICBmb3IgKGNvbnN0IGF1dG8mIHF1ZXN0aW9uIDogcXVlc3Rpb25f
c2VjdGlvbl8pIHsKICAgICBzaG91bGRfdW5pY2FzdCB8PSBxdWVzdGlvbi5TaG91bGRVbmljYXN0
UmVzcG9uc2UoKTsKQEAgLTM4MiwxMiArMzgyLDEyIEBAIGJvb2wgTURuc01lc3NhZ2U6OlNob3Vs
ZFVuaWNhc3RSZXNwb25zZSgpIGNvbnN0IHsKICAgcmV0dXJuIHNob3VsZF91bmljYXN0OwogfQog
Ci12b2lkIE1EbnNNZXNzYWdlOjpBZGRRdWVzdGlvbihjb25zdCBNRG5zUXVlc3Rpb24mIHF1ZXN0
aW9uKSB7Cit2b2lkIE1kbnNNZXNzYWdlOjpBZGRRdWVzdGlvbihjb25zdCBNZG5zUXVlc3Rpb24m
IHF1ZXN0aW9uKSB7CiAgIHF1ZXN0aW9uX3NlY3Rpb25fLnB1c2hfYmFjayhxdWVzdGlvbik7CiAg
IGhlYWRlcl8ucWRjb3VudCA9IHF1ZXN0aW9uX3NlY3Rpb25fLnNpemUoKTsKIH0KIAotdm9pZCBN
RG5zTWVzc2FnZTo6QWRkQW5zd2VyUmVjb3JkKGNvbnN0IE1EbnNSZXNvdXJjZVJlY29yZCYgYW5z
d2VyKSB7Cit2b2lkIE1kbnNNZXNzYWdlOjpBZGRBbnN3ZXJSZWNvcmQoY29uc3QgTWRuc1Jlc291
cmNlUmVjb3JkJiBhbnN3ZXIpIHsKICAgYW5zd2VyX3NlY3Rpb25fLnB1c2hfYmFjayhhbnN3ZXIp
OwogICBoZWFkZXJfLmFuY291bnQgPSBhbnN3ZXJfc2VjdGlvbl8uc2l6ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
bWRuc19tZXNzYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2UuaAppbmRleCBmNmRlYzIwYTk1NmQ1MzAyMDc0OGRmYzlj
YjJiNDg5ZmQ0MDk4MjA3Li43YWExYjIxMDM5YTUzMGYxMWY4YzhmODU1MWM5YjUwY2FkM2RkYzUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9tZG5zX21lc3NhZ2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2UuaApAQCAtMTUsNyArMTUsNyBAQAog
Ly8gNjc2MiBhbmQgUkZDIDEwMjUgKEROUyBtZXNzYWdlcykuIE5vdGUgdGhhdCBpdCBpcyByZWNv
bW1lbmRlZCBieSBSRkMgNjc2MiB0bwogLy8gdXNlIHRoZSBuYW1lIGNvbXByZXNzaW9uIHNjaGVt
ZSBkZWZpbmVkIGluIFJGQyAxMDM1IHdoZW5ldmVyIHBvc3NpYmxlLiBXZQogLy8gY3VycmVudGx5
IG9ubHkgaW1wbGVtZW50IHRoZSBjYXBhYmlsaXR5IG9mIHJlYWRpbmcgY29tcHJlc3NlZCBuYW1l
cyBpbiBtRE5TCi0vLyBtZXNzYWdlcyBpbiBNRG5zTWVzc2FnZTo6UmVhZCgpOyBob3dldmVyLCB0
aGUgTURuc01lc3NhZ2U6OldyaXRlKCkgZG9lcyBub3QKKy8vIG1lc3NhZ2VzIGluIE1kbnNNZXNz
YWdlOjpSZWFkKCk7IGhvd2V2ZXIsIHRoZSBNZG5zTWVzc2FnZTo6V3JpdGUoKSBkb2VzIG5vdAog
Ly8gc3VwcG9ydCBuYW1lIGNvbXByZXNzaW9uIHlldC4KIC8vCiAvLyBGdXp6ZXIgdGVzdHMgKHRl
c3QvZnV6emVycy9tZG5zX3BhcnNlcl9mdXp6ZXIuY2MpIE1VU1QgYWx3YXlzIGJlIHBlcmZvcm1l
ZApAQCAtNTAsNyArNTAsNyBAQCBlbnVtIGNsYXNzIFNlY3Rpb25FbnRyeUNsYXNzIHsKIH07CiAK
IC8vIFJGQyAxMDM1LCBTZWN0aW9uIDQuMS4xLgotY2xhc3MgTURuc0hlYWRlciBmaW5hbCB7Citj
bGFzcyBNZG5zSGVhZGVyIGZpbmFsIHsKICBwdWJsaWM6CiAgIGJvb2wgUmVhZChNZXNzYWdlQnVm
ZmVyUmVhZGVyKiBidWYpOwogICB2b2lkIFdyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVm
KSBjb25zdDsKQEAgLTc0LDExICs3NCwxMSBAQCBjbGFzcyBNRG5zSGVhZGVyIGZpbmFsIHsKIAog
Ly8gRW50cmllcyBpbiBlYWNoIHNlY3Rpb24gYWZ0ZXIgdGhlIGhlYWRlciBzaGFyZSBhIGNvbW1v
biBzdHJ1Y3R1cmUuIE5vdGUgdGhhdAogLy8gdGhpcyBpcyBub3QgYSBjb25jZXB0IGRlZmluZWQg
aW4gUkZDIDEwMzUuCi1jbGFzcyBNRG5zU2VjdGlvbkVudHJ5IHsKK2NsYXNzIE1kbnNTZWN0aW9u
RW50cnkgewogIHB1YmxpYzoKLSAgTURuc1NlY3Rpb25FbnRyeSgpOwotICBNRG5zU2VjdGlvbkVu
dHJ5KGNvbnN0IE1EbnNTZWN0aW9uRW50cnkmIG90aGVyKTsKLSAgdmlydHVhbCB+TURuc1NlY3Rp
b25FbnRyeSgpOworICBNZG5zU2VjdGlvbkVudHJ5KCk7CisgIE1kbnNTZWN0aW9uRW50cnkoY29u
c3QgTWRuc1NlY3Rpb25FbnRyeSYgb3RoZXIpOworICB2aXJ0dWFsIH5NZG5zU2VjdGlvbkVudHJ5
KCk7CiAgIHZpcnR1YWwgYm9vbCBSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1ZikgPSAwOwog
ICB2aXJ0dWFsIGJvb2wgV3JpdGUocnRjOjpCeXRlQnVmZmVyV3JpdGVyKiBidWYpIGNvbnN0ID0g
MDsKIApAQCAtOTksMTEgKzk5LDExIEBAIGNsYXNzIE1EbnNTZWN0aW9uRW50cnkgewogfTsKIAog
Ly8gUkZDIDEwMzUsIFNlY3Rpb24gNC4xLjIuCi1jbGFzcyBNRG5zUXVlc3Rpb24gZmluYWwgOiBw
dWJsaWMgTURuc1NlY3Rpb25FbnRyeSB7CitjbGFzcyBNZG5zUXVlc3Rpb24gZmluYWwgOiBwdWJs
aWMgTWRuc1NlY3Rpb25FbnRyeSB7CiAgcHVibGljOgotICBNRG5zUXVlc3Rpb24oKTsKLSAgTURu
c1F1ZXN0aW9uKGNvbnN0IE1EbnNRdWVzdGlvbiYgb3RoZXIpOwotICB+TURuc1F1ZXN0aW9uKCkg
b3ZlcnJpZGU7CisgIE1kbnNRdWVzdGlvbigpOworICBNZG5zUXVlc3Rpb24oY29uc3QgTWRuc1F1
ZXN0aW9uJiBvdGhlcik7CisgIH5NZG5zUXVlc3Rpb24oKSBvdmVycmlkZTsKIAogICBib29sIFJl
YWQoTWVzc2FnZUJ1ZmZlclJlYWRlciogYnVmKSBvdmVycmlkZTsKICAgYm9vbCBXcml0ZShydGM6
OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMTMsMTEgKzExMywx
MSBAQCBjbGFzcyBNRG5zUXVlc3Rpb24gZmluYWwgOiBwdWJsaWMgTURuc1NlY3Rpb25FbnRyeSB7
CiB9OwogCiAvLyBSRkMgMTAzNSwgU2VjdGlvbiA0LjEuMy4KLWNsYXNzIE1EbnNSZXNvdXJjZVJl
Y29yZCBmaW5hbCA6IHB1YmxpYyBNRG5zU2VjdGlvbkVudHJ5IHsKK2NsYXNzIE1kbnNSZXNvdXJj
ZVJlY29yZCBmaW5hbCA6IHB1YmxpYyBNZG5zU2VjdGlvbkVudHJ5IHsKICBwdWJsaWM6Ci0gIE1E
bnNSZXNvdXJjZVJlY29yZCgpOwotICBNRG5zUmVzb3VyY2VSZWNvcmQoY29uc3QgTURuc1Jlc291
cmNlUmVjb3JkJiBvdGhlcik7Ci0gIH5NRG5zUmVzb3VyY2VSZWNvcmQoKSBvdmVycmlkZTsKKyAg
TWRuc1Jlc291cmNlUmVjb3JkKCk7CisgIE1kbnNSZXNvdXJjZVJlY29yZChjb25zdCBNZG5zUmVz
b3VyY2VSZWNvcmQmIG90aGVyKTsKKyAgfk1kbnNSZXNvdXJjZVJlY29yZCgpIG92ZXJyaWRlOwog
CiAgIGJvb2wgUmVhZChNZXNzYWdlQnVmZmVyUmVhZGVyKiBidWYpIG92ZXJyaWRlOwogICBib29s
IFdyaXRlKHJ0Yzo6Qnl0ZUJ1ZmZlcldyaXRlciogYnVmKSBjb25zdCBvdmVycmlkZTsKQEAgLTE0
NSwxNyArMTQ1LDE3IEBAIGNsYXNzIE1EbnNSZXNvdXJjZVJlY29yZCBmaW5hbCA6IHB1YmxpYyBN
RG5zU2VjdGlvbkVudHJ5IHsKICAgc3RkOjpzdHJpbmcgcmRhdGFfOwogfTsKIAotY2xhc3MgTURu
c01lc3NhZ2UgZmluYWwgeworY2xhc3MgTWRuc01lc3NhZ2UgZmluYWwgewogIHB1YmxpYzoKICAg
Ly8gUkZDIDEwMzUsIFNlY3Rpb24gNC4xLgogICBlbnVtIGNsYXNzIFNlY3Rpb24geyBrUXVlc3Rp
b24sIGtBbnN3ZXIsIGtBdXRob3JpdHksIGtBZGRpdGlvbmFsIH07CiAKLSAgTURuc01lc3NhZ2Uo
KTsKLSAgfk1EbnNNZXNzYWdlKCk7CisgIE1kbnNNZXNzYWdlKCk7CisgIH5NZG5zTWVzc2FnZSgp
OwogICAvLyBSZWFkcyB0aGUgbUROUyBtZXNzYWdlIGluIHxidWZ8IGFuZCBwb3B1bGF0ZXMgdGhl
IGNvcnJlc3BvbmRpbmcgZmllbGRzIGluCi0gIC8vIE1EbnNNZXNzYWdlLgorICAvLyBNZG5zTWVz
c2FnZS4KICAgYm9vbCBSZWFkKE1lc3NhZ2VCdWZmZXJSZWFkZXIqIGJ1Zik7Ci0gIC8vIFdyaXRl
IGFuIG1ETlMgbWVzc2FnZSB0byB8YnVmfCBiYXNlZCBvbiB0aGUgZmllbGRzIGluIE1EbnNNZXNz
YWdlLgorICAvLyBXcml0ZSBhbiBtRE5TIG1lc3NhZ2UgdG8gfGJ1ZnwgYmFzZWQgb24gdGhlIGZp
ZWxkcyBpbiBNZG5zTWVzc2FnZS4KICAgLy8KICAgLy8gVE9ETyhxaW5nc2kpOiBJbXBsZW1lbnQg
bmFtZSBjb21wcmVzc2lvbiB3aGVuIHdyaXRpbmcgbUROUyBtZXNzYWdlcy4KICAgYm9vbCBXcml0
ZShydGM6OkJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgY29uc3Q7CkBAIC0xNzcsMjkgKzE3NywyOSBA
QCBjbGFzcyBNRG5zTWVzc2FnZSBmaW5hbCB7CiAgIC8vIHByZWZlcnJlZC4gRmFsc2Ugb3RoZXJ3
aXNlLgogICBib29sIFNob3VsZFVuaWNhc3RSZXNwb25zZSgpIGNvbnN0OwogCi0gIHZvaWQgQWRk
UXVlc3Rpb24oY29uc3QgTURuc1F1ZXN0aW9uJiBxdWVzdGlvbik7CisgIHZvaWQgQWRkUXVlc3Rp
b24oY29uc3QgTWRuc1F1ZXN0aW9uJiBxdWVzdGlvbik7CiAgIC8vIFRPRE8ocWluZ3NpKTogSW1w
bGVtZW50IEFkZFhSZWNvcmQgZm9yIG5hbWUgc2VydmVyIGFuZCBhZGRpdGlvbmFsIHJlY29yZHMu
Ci0gIHZvaWQgQWRkQW5zd2VyUmVjb3JkKGNvbnN0IE1EbnNSZXNvdXJjZVJlY29yZCYgYW5zd2Vy
KTsKKyAgdm9pZCBBZGRBbnN3ZXJSZWNvcmQoY29uc3QgTWRuc1Jlc291cmNlUmVjb3JkJiBhbnN3
ZXIpOwogCi0gIGNvbnN0IHN0ZDo6dmVjdG9yPE1EbnNRdWVzdGlvbj4mIHF1ZXN0aW9uX3NlY3Rp
b24oKSBjb25zdCB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPE1kbnNRdWVzdGlvbj4mIHF1ZXN0aW9u
X3NlY3Rpb24oKSBjb25zdCB7CiAgICAgcmV0dXJuIHF1ZXN0aW9uX3NlY3Rpb25fOwogICB9Ci0g
IGNvbnN0IHN0ZDo6dmVjdG9yPE1EbnNSZXNvdXJjZVJlY29yZD4mIGFuc3dlcl9zZWN0aW9uKCkg
Y29uc3QgeworICBjb25zdCBzdGQ6OnZlY3RvcjxNZG5zUmVzb3VyY2VSZWNvcmQ+JiBhbnN3ZXJf
c2VjdGlvbigpIGNvbnN0IHsKICAgICByZXR1cm4gYW5zd2VyX3NlY3Rpb25fOwogICB9Ci0gIGNv
bnN0IHN0ZDo6dmVjdG9yPE1EbnNSZXNvdXJjZVJlY29yZD4mIGF1dGhvcml0eV9zZWN0aW9uKCkg
Y29uc3QgeworICBjb25zdCBzdGQ6OnZlY3RvcjxNZG5zUmVzb3VyY2VSZWNvcmQ+JiBhdXRob3Jp
dHlfc2VjdGlvbigpIGNvbnN0IHsKICAgICByZXR1cm4gYXV0aG9yaXR5X3NlY3Rpb25fOwogICB9
Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPE1EbnNSZXNvdXJjZVJlY29yZD4mIGFkZGl0aW9uYWxfc2Vj
dGlvbigpIGNvbnN0IHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8TWRuc1Jlc291cmNlUmVjb3JkPiYg
YWRkaXRpb25hbF9zZWN0aW9uKCkgY29uc3QgewogICAgIHJldHVybiBhZGRpdGlvbmFsX3NlY3Rp
b25fOwogICB9CiAKICBwcml2YXRlOgotICBNRG5zSGVhZGVyIGhlYWRlcl87Ci0gIHN0ZDo6dmVj
dG9yPE1EbnNRdWVzdGlvbj4gcXVlc3Rpb25fc2VjdGlvbl87Ci0gIHN0ZDo6dmVjdG9yPE1EbnNS
ZXNvdXJjZVJlY29yZD4gYW5zd2VyX3NlY3Rpb25fOwotICBzdGQ6OnZlY3RvcjxNRG5zUmVzb3Vy
Y2VSZWNvcmQ+IGF1dGhvcml0eV9zZWN0aW9uXzsKLSAgc3RkOjp2ZWN0b3I8TURuc1Jlc291cmNl
UmVjb3JkPiBhZGRpdGlvbmFsX3NlY3Rpb25fOworICBNZG5zSGVhZGVyIGhlYWRlcl87CisgIHN0
ZDo6dmVjdG9yPE1kbnNRdWVzdGlvbj4gcXVlc3Rpb25fc2VjdGlvbl87CisgIHN0ZDo6dmVjdG9y
PE1kbnNSZXNvdXJjZVJlY29yZD4gYW5zd2VyX3NlY3Rpb25fOworICBzdGQ6OnZlY3RvcjxNZG5z
UmVzb3VyY2VSZWNvcmQ+IGF1dGhvcml0eV9zZWN0aW9uXzsKKyAgc3RkOjp2ZWN0b3I8TWRuc1Jl
c291cmNlUmVjb3JkPiBhZGRpdGlvbmFsX3NlY3Rpb25fOwogfTsKIAogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2UvbWRuc19tZXNzYWdlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvbWRuc19tZXNzYWdlX3VuaXR0ZXN0
LmNjCmluZGV4IGZiNGEzYjFlN2EyNjE1NjA5ZDFhNWE0M2QyZDNhYmVmMDA0NDhmNzIuLjdmODE2
Zjc0MGI4YTQwZDQ3MWZhMWIxZWNiMzcyNDg1ZjRmZmI2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21kbnNfbWVzc2FnZV91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9tZG5zX21lc3NhZ2VfdW5pdHRlc3QuY2MKQEAgLTE5LDkgKzE5LDkgQEAKICNp
bmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCiAjaW5jbHVkZSAidGVzdC9nbW9jay5o
IgogCi0jZGVmaW5lIFJlYWRNRG5zTWVzc2FnZShYLCBZKSBSZWFkTURuc01lc3NhZ2VUZXN0Q2Fz
ZShYLCBZLCBzaXplb2YoWSkpCi0jZGVmaW5lIFdyaXRlTURuc01lc3NhZ2VBbmRDb21wYXJlKFgs
IFkpIFwKLSAgV3JpdGVNRG5zTWVzc2FnZUFuZENvbXBhcmVXaXRoVGVzdENhc3QoWCwgWSwgc2l6
ZW9mKFkpKQorI2RlZmluZSBSZWFkTWRuc01lc3NhZ2UoWCwgWSkgUmVhZE1kbnNNZXNzYWdlVGVz
dENhc2UoWCwgWSwgc2l6ZW9mKFkpKQorI2RlZmluZSBXcml0ZU1kbnNNZXNzYWdlQW5kQ29tcGFy
ZShYLCBZKSBcCisgIFdyaXRlTWRuc01lc3NhZ2VBbmRDb21wYXJlV2l0aFRlc3RDYXN0KFgsIFks
IHNpemVvZihZKSkKIAogdXNpbmcgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZTsKIHVzaW5nIDo6dGVz
dGluZzo6UGFpcjsKQEAgLTI1NSwxNCArMjU1LDE0IEBAIGNvbnN0IHVpbnQ4X3Qga0NvcnJ1cHRl
ZEFuc3dlcldpdGhOYW1lQ29tcHJlc3Npb24yW10gPSB7CiAgICAgMHhjMCwgMHhBOCwgMHgwMCwg
MHgwMSwgIC8vIDE5Mi4xNjguMC4xCiB9OwogCi1ib29sIFJlYWRNRG5zTWVzc2FnZVRlc3RDYXNl
KE1EbnNNZXNzYWdlKiBtc2csCitib29sIFJlYWRNZG5zTWVzc2FnZVRlc3RDYXNlKE1kbnNNZXNz
YWdlKiBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHRl
c3RjYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSkgewogICBN
ZXNzYWdlQnVmZmVyUmVhZGVyIGJ1ZihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih0ZXN0
Y2FzZSksIHNpemUpOwogICByZXR1cm4gbXNnLT5SZWFkKCZidWYpOwogfQogCi12b2lkIFdyaXRl
TURuc01lc3NhZ2VBbmRDb21wYXJlV2l0aFRlc3RDYXN0KE1EbnNNZXNzYWdlKiBtc2csCit2b2lk
IFdyaXRlTWRuc01lc3NhZ2VBbmRDb21wYXJlV2l0aFRlc3RDYXN0KE1kbnNNZXNzYWdlKiBtc2cs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QqIHRlc3RjYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSkgewogICBydGM6OkJ5dGVCdWZmZXJXcml0ZXIgb3V0OwpAQCAtMjc2LDcg
KzI3Niw3IEBAIHZvaWQgV3JpdGVNRG5zTWVzc2FnZUFuZENvbXBhcmVXaXRoVGVzdENhc3QoTURu
c01lc3NhZ2UqIG1zZywKICAgRVhQRUNUX0VRKHRlc3RjYXNlX2J5dGVzLCBieXRlcyk7CiB9CiAK
LWJvb2wgR2V0UXVlcmllZE5hbWVzKE1EbnNNZXNzYWdlKiBtc2csIHN0ZDo6c2V0PHN0ZDo6c3Ry
aW5nPiogbmFtZXMpIHsKK2Jvb2wgR2V0UXVlcmllZE5hbWVzKE1kbnNNZXNzYWdlKiBtc2csIHN0
ZDo6c2V0PHN0ZDo6c3RyaW5nPiogbmFtZXMpIHsKICAgaWYgKCFtc2ctPklzUXVlcnkoKSB8fCBt
c2ctPnF1ZXN0aW9uX3NlY3Rpb24oKS5lbXB0eSgpKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9
CkBAIC0yODYsNyArMjg2LDcgQEAgYm9vbCBHZXRRdWVyaWVkTmFtZXMoTURuc01lc3NhZ2UqIG1z
Zywgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+KiBuYW1lcykgewogICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBHZXRSZXNvbHV0aW9uKE1EbnNNZXNzYWdlKiBtc2csCitib29sIEdldFJlc29sdXRpb24o
TWRuc01lc3NhZ2UqIG1zZywKICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmlu
ZywgcnRjOjpJUEFkZHJlc3M+KiBuYW1lcykgewogICBpZiAobXNnLT5Jc1F1ZXJ5KCkgfHwgbXNn
LT5hbnN3ZXJfc2VjdGlvbigpLmVtcHR5KCkpIHsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDMs
MTAgKzMwMywxMCBAQCBib29sIEdldFJlc29sdXRpb24oTURuc01lc3NhZ2UqIG1zZywKIAogfSAg
Ly8gbmFtZXNwYWNlCiAKLVRFU1QoTURuc01lc3NhZ2VUZXN0LCBSZWFkU2luZ2xlUXVlc3Rpb25G
b3JJUHY0QWRkcmVzcykgewotICBNRG5zTWVzc2FnZSBtc2c7CitURVNUKE1kbnNNZXNzYWdlVGVz
dCwgUmVhZFNpbmdsZVF1ZXN0aW9uRm9ySVB2NEFkZHJlc3MpIHsKKyAgTWRuc01lc3NhZ2UgbXNn
OwogICBBU1NFUlRfVFJVRSgKLSAgICAgIFJlYWRNRG5zTWVzc2FnZSgmbXNnLCBrU2luZ2xlUXVl
c3Rpb25Gb3JJUHY0QWRkcldpdGhVbmljYXN0UmVzcG9uc2UpKTsKKyAgICAgIFJlYWRNZG5zTWVz
c2FnZSgmbXNnLCBrU2luZ2xlUXVlc3Rpb25Gb3JJUHY0QWRkcldpdGhVbmljYXN0UmVzcG9uc2Up
KTsKICAgRVhQRUNUX1RSVUUobXNnLklzUXVlcnkoKSk7CiAgIEVYUEVDVF9FUSgweDEyMzQsIG1z
Zy5HZXRJZCgpKTsKICAgQVNTRVJUX0VRKDF1LCBtc2cucXVlc3Rpb25fc2VjdGlvbigpLnNpemUo
KSk7CkBAIC0zMjMsOSArMzIzLDkgQEAgVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRTaW5nbGVR
dWVzdGlvbkZvcklQdjRBZGRyZXNzKSB7CiAgIEVYUEVDVF9USEFUKHF1ZXJpZWRfbmFtZXMsIEVs
ZW1lbnRzQXJlKCJ3ZWJydGMub3JnLiIpKTsKIH0KIAotVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJl
YWRUd29RdWVzdGlvbnNGb3JJUHY0QW5kSVB2NkFkZHIpIHsKLSAgTURuc01lc3NhZ2UgbXNnOwot
ICBBU1NFUlRfVFJVRShSZWFkTURuc01lc3NhZ2UoCitURVNUKE1kbnNNZXNzYWdlVGVzdCwgUmVh
ZFR3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcikgeworICBNZG5zTWVzc2FnZSBtc2c7Cisg
IEFTU0VSVF9UUlVFKFJlYWRNZG5zTWVzc2FnZSgKICAgICAgICZtc2csIGtUd29RdWVzdGlvbnNG
b3JJUHY0QW5kSVB2NkFkZHJXaXRoTXVsdGljYXN0UmVzcG9uc2UpKTsKICAgRVhQRUNUX1RSVUUo
bXNnLklzUXVlcnkoKSk7CiAgIEVYUEVDVF9FUSgweDEyMzQsIG1zZy5HZXRJZCgpKTsKQEAgLTM0
NSw5ICszNDUsOSBAQCBURVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFR3b1F1ZXN0aW9uc0ZvcklQ
djRBbmRJUHY2QWRkcikgewogICAgICAgICAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZSgid2Vi
cnRjNC5vcmcuIiwgIndlYnJ0YzYub3JnLiIpKTsKIH0KIAotVEVTVChNRG5zTWVzc2FnZVRlc3Qs
IFJlYWRUd29RdWVzdGlvbnNGb3JJUHY0QW5kSVB2NkFkZHJXaXRoTmFtZUNvbXByZXNzaW9uKSB7
Ci0gIE1EbnNNZXNzYWdlIG1zZzsKLSAgQVNTRVJUX1RSVUUoUmVhZE1EbnNNZXNzYWdlKAorVEVT
VChNZG5zTWVzc2FnZVRlc3QsIFJlYWRUd29RdWVzdGlvbnNGb3JJUHY0QW5kSVB2NkFkZHJXaXRo
TmFtZUNvbXByZXNzaW9uKSB7CisgIE1kbnNNZXNzYWdlIG1zZzsKKyAgQVNTRVJUX1RSVUUoUmVh
ZE1kbnNNZXNzYWdlKAogICAgICAgJm1zZywKICAgICAgIGtUd29RdWVzdGlvbnNGb3JJUHY0QW5k
SVB2NkFkZHJXaXRoTXVsdGljYXN0UmVzcG9uc2VBbmROYW1lQ29tcHJlc3Npb24pKTsKIApAQCAt
MzYzLDEwICszNjMsMTAgQEAgVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRUd29RdWVzdGlvbnNG
b3JJUHY0QW5kSVB2NkFkZHJXaXRoTmFtZUNvbXByZXNzaW9uKSB7CiAgICAgICAgICAgICAgIFVu
b3JkZXJlZEVsZW1lbnRzQXJlKCJ3d3cud2VicnRjLm9yZy4iLCAibWRucy53ZWJydGMub3JnLiIp
KTsKIH0KIAotVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRUaHJlZVF1ZXN0aW9uc1dpdGhUd29Q
b2ludGVyc1RvVGhlU2FtZU5hbWVTdWZmaXgpIHsKLSAgTURuc01lc3NhZ2UgbXNnOworVEVTVChN
ZG5zTWVzc2FnZVRlc3QsIFJlYWRUaHJlZVF1ZXN0aW9uc1dpdGhUd29Qb2ludGVyc1RvVGhlU2Ft
ZU5hbWVTdWZmaXgpIHsKKyAgTWRuc01lc3NhZ2UgbXNnOwogICBBU1NFUlRfVFJVRSgKLSAgICAg
IFJlYWRNRG5zTWVzc2FnZSgmbXNnLCBrVGhyZWVRdWVzdGlvbnNXaXRoVHdvUG9pbnRlcnNUb1Ro
ZVNhbWVOYW1lU3VmZml4KSk7CisgICAgICBSZWFkTWRuc01lc3NhZ2UoJm1zZywga1RocmVlUXVl
c3Rpb25zV2l0aFR3b1BvaW50ZXJzVG9UaGVTYW1lTmFtZVN1ZmZpeCkpOwogCiAgIEFTU0VSVF9F
USgzdSwgbXNnLnF1ZXN0aW9uX3NlY3Rpb24oKS5zaXplKCkpOwogICBjb25zdCBhdXRvJiBxdWVz
dGlvbjEgPSBtc2cucXVlc3Rpb25fc2VjdGlvbigpWzBdOwpAQCAtMzgzLDEwICszODMsMTAgQEAg
VEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRUaHJlZVF1ZXN0aW9uc1dpdGhUd29Qb2ludGVyc1Rv
VGhlU2FtZU5hbWVTdWZmaXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IndlYnJ0Yy5vcmcuIikpOwogfQogCi1URVNUKE1EbnNNZXNzYWdlVGVzdCwKK1RFU1QoTWRuc01l
c3NhZ2VUZXN0LAogICAgICBSZWFkVGhyZWVRdWVzdGlvbnNXaXRoUG9pbnRlclRvTmFtZVN1ZmZp
eENvbnRhaW5pbmdBbm90aGVyUG9pbnRlcikgewotICBNRG5zTWVzc2FnZSBtc2c7Ci0gIEFTU0VS
VF9UUlVFKFJlYWRNRG5zTWVzc2FnZSgKKyAgTWRuc01lc3NhZ2UgbXNnOworICBBU1NFUlRfVFJV
RShSZWFkTWRuc01lc3NhZ2UoCiAgICAgICAmbXNnLCBrVGhyZWVRdWVzdGlvbnNXaXRoUG9pbnRl
clRvTmFtZVN1ZmZpeENvbnRhaW5pbmdBbm90aGVyUG9pbnRlcikpOwogCiAgIEFTU0VSVF9FUSgz
dSwgbXNnLnF1ZXN0aW9uX3NlY3Rpb24oKS5zaXplKCkpOwpAQCAtNDA0LDE2ICs0MDQsMTYgQEAg
VEVTVChNRG5zTWVzc2FnZVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ3d3cubWRucy53ZWJydGMub3JnLiIpKTsKIH0KIAotVEVTVChNRG5zTWVzc2FnZVRlc3QsCitU
RVNUKE1kbnNNZXNzYWdlVGVzdCwKICAgICAgUmVhZFF1ZXN0aW9uV2l0aENvcnJ1cHRlZFBvaW50
ZXJJbk5hbWVDb21wcmVzc2lvblNob3VsZEZhaWwpIHsKLSAgTURuc01lc3NhZ2UgbXNnOwotICBF
WFBFQ1RfRkFMU0UoUmVhZE1EbnNNZXNzYWdlKCZtc2csIGtDb3JydXB0ZWRRdWVzdGlvbldpdGhO
YW1lQ29tcHJlc3Npb24xKSk7Ci0gIEVYUEVDVF9GQUxTRShSZWFkTURuc01lc3NhZ2UoJm1zZywg
a0NvcnJ1cHRlZFF1ZXN0aW9uV2l0aE5hbWVDb21wcmVzc2lvbjIpKTsKKyAgTWRuc01lc3NhZ2Ug
bXNnOworICBFWFBFQ1RfRkFMU0UoUmVhZE1kbnNNZXNzYWdlKCZtc2csIGtDb3JydXB0ZWRRdWVz
dGlvbldpdGhOYW1lQ29tcHJlc3Npb24xKSk7CisgIEVYUEVDVF9GQUxTRShSZWFkTWRuc01lc3Nh
Z2UoJm1zZywga0NvcnJ1cHRlZFF1ZXN0aW9uV2l0aE5hbWVDb21wcmVzc2lvbjIpKTsKIH0KIAot
VEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRTaW5nbGVBbnN3ZXJGb3JJUHY0QWRkcikgewotICBN
RG5zTWVzc2FnZSBtc2c7Ci0gIEFTU0VSVF9UUlVFKFJlYWRNRG5zTWVzc2FnZSgmbXNnLCBrU2lu
Z2xlQXV0aG9yaXRhdGl2ZUFuc3dlcldpdGhJUHY0QWRkcikpOworVEVTVChNZG5zTWVzc2FnZVRl
c3QsIFJlYWRTaW5nbGVBbnN3ZXJGb3JJUHY0QWRkcikgeworICBNZG5zTWVzc2FnZSBtc2c7Cisg
IEFTU0VSVF9UUlVFKFJlYWRNZG5zTWVzc2FnZSgmbXNnLCBrU2luZ2xlQXV0aG9yaXRhdGl2ZUFu
c3dlcldpdGhJUHY0QWRkcikpOwogICBFWFBFQ1RfRkFMU0UobXNnLklzUXVlcnkoKSk7CiAgIEVY
UEVDVF9UUlVFKG1zZy5Jc0F1dGhvcml0YXRpdmUoKSk7CiAgIEVYUEVDVF9FUSgweDEyMzQsIG1z
Zy5HZXRJZCgpKTsKQEAgLTQzMiwxMCArNDMyLDEwIEBAIFRFU1QoTURuc01lc3NhZ2VUZXN0LCBS
ZWFkU2luZ2xlQW5zd2VyRm9ySVB2NEFkZHIpIHsKICAgRVhQRUNUX1RIQVQocmVzb2x1dGlvbiwg
RWxlbWVudHNBcmUoUGFpcigid2VicnRjLm9yZy4iLCBleHBlY3RlZF9hZGRyKSkpOwogfQogCi1U
RVNUKE1EbnNNZXNzYWdlVGVzdCwgUmVhZFR3b0Fuc3dlcnNGb3JJUHY0QW5kSVB2NkFkZHIpIHsK
LSAgTURuc01lc3NhZ2UgbXNnOworVEVTVChNZG5zTWVzc2FnZVRlc3QsIFJlYWRUd29BbnN3ZXJz
Rm9ySVB2NEFuZElQdjZBZGRyKSB7CisgIE1kbnNNZXNzYWdlIG1zZzsKICAgQVNTRVJUX1RSVUUo
Ci0gICAgICBSZWFkTURuc01lc3NhZ2UoJm1zZywga1R3b0F1dGhvcml0YXRpdmVBbnN3ZXJzV2l0
aElQdjRBbmRJUHY2QWRkcikpOworICAgICAgUmVhZE1kbnNNZXNzYWdlKCZtc2csIGtUd29BdXRo
b3JpdGF0aXZlQW5zd2Vyc1dpdGhJUHY0QW5kSVB2NkFkZHIpKTsKICAgRVhQRUNUX0ZBTFNFKG1z
Zy5Jc1F1ZXJ5KCkpOwogICBFWFBFQ1RfVFJVRShtc2cuSXNBdXRob3JpdGF0aXZlKCkpOwogICBF
WFBFQ1RfRVEoMHgxMjM0LCBtc2cuR2V0SWQoKSk7CkBAIC00NjIsOSArNDYyLDkgQEAgVEVTVChN
RG5zTWVzc2FnZVRlc3QsIFJlYWRUd29BbnN3ZXJzRm9ySVB2NEFuZElQdjZBZGRyKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIoIndlYnJ0YzYub3JnLiIsIGV4cGVj
dGVkX2FkZHJfaXB2NikpKTsKIH0KIAotVEVTVChNRG5zTWVzc2FnZVRlc3QsIFJlYWRUd29BbnN3
ZXJzRm9ySVB2NEFuZElQdjZBZGRyV2l0aE5hbWVDb21wcmVzc2lvbikgewotICBNRG5zTWVzc2Fn
ZSBtc2c7Ci0gIEFTU0VSVF9UUlVFKFJlYWRNRG5zTWVzc2FnZSgKK1RFU1QoTWRuc01lc3NhZ2VU
ZXN0LCBSZWFkVHdvQW5zd2Vyc0ZvcklQdjRBbmRJUHY2QWRkcldpdGhOYW1lQ29tcHJlc3Npb24p
IHsKKyAgTWRuc01lc3NhZ2UgbXNnOworICBBU1NFUlRfVFJVRShSZWFkTWRuc01lc3NhZ2UoCiAg
ICAgICAmbXNnLCBrVHdvQXV0aG9yaXRhdGl2ZUFuc3dlcnNXaXRoSVB2NEFuZElQdjZBZGRyV2l0
aE5hbWVDb21wcmVzc2lvbikpOwogCiAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBydGM6OklQQWRk
cmVzcz4gcmVzb2x1dGlvbjsKQEAgLTQ3OCw1NyArNDc4LDU3IEBAIFRFU1QoTURuc01lc3NhZ2VU
ZXN0LCBSZWFkVHdvQW5zd2Vyc0ZvcklQdjRBbmRJUHY2QWRkcldpdGhOYW1lQ29tcHJlc3Npb24p
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcigid2VicnRjLm9yZy4i
LCBleHBlY3RlZF9hZGRyX2lwdjYpKSk7CiB9CiAKLVRFU1QoTURuc01lc3NhZ2VUZXN0LAorVEVT
VChNZG5zTWVzc2FnZVRlc3QsCiAgICAgIFJlYWRBbnN3ZXJXaXRoQ29ycnVwdGVkUG9pbnRlcklu
TmFtZUNvbXByZXNzaW9uU2hvdWxkRmFpbCkgewotICBNRG5zTWVzc2FnZSBtc2c7Ci0gIEVYUEVD
VF9GQUxTRShSZWFkTURuc01lc3NhZ2UoJm1zZywga0NvcnJ1cHRlZEFuc3dlcldpdGhOYW1lQ29t
cHJlc3Npb24xKSk7Ci0gIEVYUEVDVF9GQUxTRShSZWFkTURuc01lc3NhZ2UoJm1zZywga0NvcnJ1
cHRlZEFuc3dlcldpdGhOYW1lQ29tcHJlc3Npb24yKSk7CisgIE1kbnNNZXNzYWdlIG1zZzsKKyAg
RVhQRUNUX0ZBTFNFKFJlYWRNZG5zTWVzc2FnZSgmbXNnLCBrQ29ycnVwdGVkQW5zd2VyV2l0aE5h
bWVDb21wcmVzc2lvbjEpKTsKKyAgRVhQRUNUX0ZBTFNFKFJlYWRNZG5zTWVzc2FnZSgmbXNnLCBr
Q29ycnVwdGVkQW5zd2VyV2l0aE5hbWVDb21wcmVzc2lvbjIpKTsKIH0KIAotVEVTVChNRG5zTWVz
c2FnZVRlc3QsIFdyaXRlU2luZ2xlUXVlc3Rpb25Gb3JJUHY0QWRkcikgewotICBNRG5zTWVzc2Fn
ZSBtc2c7CitURVNUKE1kbnNNZXNzYWdlVGVzdCwgV3JpdGVTaW5nbGVRdWVzdGlvbkZvcklQdjRB
ZGRyKSB7CisgIE1kbnNNZXNzYWdlIG1zZzsKICAgbXNnLlNldElkKDB4MTIzNCk7CiAgIG1zZy5T
ZXRRdWVyeU9yUmVzcG9uc2UodHJ1ZSk7CiAKLSAgTURuc1F1ZXN0aW9uIHF1ZXN0aW9uOworICBN
ZG5zUXVlc3Rpb24gcXVlc3Rpb247CiAgIHF1ZXN0aW9uLlNldE5hbWUoIndlYnJ0Yy5vcmcuIik7
CiAgIHF1ZXN0aW9uLlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZTo6a0EpOwogICBxdWVzdGlvbi5T
ZXRDbGFzcyhTZWN0aW9uRW50cnlDbGFzczo6a0lOKTsKICAgcXVlc3Rpb24uU2V0VW5pY2FzdFJl
c3BvbnNlKHRydWUpOwogICBtc2cuQWRkUXVlc3Rpb24ocXVlc3Rpb24pOwogCi0gIFdyaXRlTURu
c01lc3NhZ2VBbmRDb21wYXJlKCZtc2csCisgIFdyaXRlTWRuc01lc3NhZ2VBbmRDb21wYXJlKCZt
c2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtTaW5nbGVRdWVzdGlvbkZvcklQdjRB
ZGRyV2l0aFVuaWNhc3RSZXNwb25zZSk7CiB9CiAKLVRFU1QoTURuc01lc3NhZ2VUZXN0LCBXcml0
ZVR3b1F1ZXN0aW9uc0ZvcklQdjRBbmRJUHY2QWRkcikgewotICBNRG5zTWVzc2FnZSBtc2c7CitU
RVNUKE1kbnNNZXNzYWdlVGVzdCwgV3JpdGVUd29RdWVzdGlvbnNGb3JJUHY0QW5kSVB2NkFkZHIp
IHsKKyAgTWRuc01lc3NhZ2UgbXNnOwogICBtc2cuU2V0SWQoMHgxMjM0KTsKICAgbXNnLlNldFF1
ZXJ5T3JSZXNwb25zZSh0cnVlKTsKIAotICBNRG5zUXVlc3Rpb24gcXVlc3Rpb24xOworICBNZG5z
UXVlc3Rpb24gcXVlc3Rpb24xOwogICBxdWVzdGlvbjEuU2V0TmFtZSgid2VicnRjNC5vcmcuIik7
CiAgIHF1ZXN0aW9uMS5TZXRUeXBlKFNlY3Rpb25FbnRyeVR5cGU6OmtBKTsKICAgcXVlc3Rpb24x
LlNldENsYXNzKFNlY3Rpb25FbnRyeUNsYXNzOjprSU4pOwogICBtc2cuQWRkUXVlc3Rpb24ocXVl
c3Rpb24xKTsKIAotICBNRG5zUXVlc3Rpb24gcXVlc3Rpb24yOworICBNZG5zUXVlc3Rpb24gcXVl
c3Rpb24yOwogICBxdWVzdGlvbjIuU2V0TmFtZSgid2VicnRjNi5vcmcuIik7CiAgIHF1ZXN0aW9u
Mi5TZXRUeXBlKFNlY3Rpb25FbnRyeVR5cGU6OmtBQUFBKTsKICAgcXVlc3Rpb24yLlNldENsYXNz
KFNlY3Rpb25FbnRyeUNsYXNzOjprSU4pOwogICBtc2cuQWRkUXVlc3Rpb24ocXVlc3Rpb24yKTsK
IAotICBXcml0ZU1EbnNNZXNzYWdlQW5kQ29tcGFyZSgKKyAgV3JpdGVNZG5zTWVzc2FnZUFuZENv
bXBhcmUoCiAgICAgICAmbXNnLCBrVHdvUXVlc3Rpb25zRm9ySVB2NEFuZElQdjZBZGRyV2l0aE11
bHRpY2FzdFJlc3BvbnNlKTsKIH0KIAotVEVTVChNRG5zTWVzc2FnZVRlc3QsIFdyaXRlU2luZ2xl
QW5zd2VyVG9JUHY0QWRkcikgewotICBNRG5zTWVzc2FnZSBtc2c7CitURVNUKE1kbnNNZXNzYWdl
VGVzdCwgV3JpdGVTaW5nbGVBbnN3ZXJUb0lQdjRBZGRyKSB7CisgIE1kbnNNZXNzYWdlIG1zZzsK
ICAgbXNnLlNldElkKDB4MTIzNCk7CiAgIG1zZy5TZXRRdWVyeU9yUmVzcG9uc2UoZmFsc2UpOwog
ICBtc2cuU2V0QXV0aG9yaXRhdGl2ZSh0cnVlKTsKIAotICBNRG5zUmVzb3VyY2VSZWNvcmQgYW5z
d2VyOworICBNZG5zUmVzb3VyY2VSZWNvcmQgYW5zd2VyOwogICBhbnN3ZXIuU2V0TmFtZSgid2Vi
cnRjLm9yZy4iKTsKICAgYW5zd2VyLlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZTo6a0EpOwogICBh
bnN3ZXIuU2V0Q2xhc3MoU2VjdGlvbkVudHJ5Q2xhc3M6OmtJTik7CkBAIC01MzcsMTYgKzUzNywx
NiBAQCBURVNUKE1EbnNNZXNzYWdlVGVzdCwgV3JpdGVTaW5nbGVBbnN3ZXJUb0lQdjRBZGRyKSB7
CiAgIGFuc3dlci5TZXRUdGxTZWNvbmRzKDEyMCk7CiAgIG1zZy5BZGRBbnN3ZXJSZWNvcmQoYW5z
d2VyKTsKIAotICBXcml0ZU1EbnNNZXNzYWdlQW5kQ29tcGFyZSgmbXNnLCBrU2luZ2xlQXV0aG9y
aXRhdGl2ZUFuc3dlcldpdGhJUHY0QWRkcik7CisgIFdyaXRlTWRuc01lc3NhZ2VBbmRDb21wYXJl
KCZtc2csIGtTaW5nbGVBdXRob3JpdGF0aXZlQW5zd2VyV2l0aElQdjRBZGRyKTsKIH0KIAotVEVT
VChNRG5zTWVzc2FnZVRlc3QsIFdyaXRlVHdvQW5zd2Vyc1RvSVB2NEFuZElQdjZBZGRyKSB7Ci0g
IE1EbnNNZXNzYWdlIG1zZzsKK1RFU1QoTWRuc01lc3NhZ2VUZXN0LCBXcml0ZVR3b0Fuc3dlcnNU
b0lQdjRBbmRJUHY2QWRkcikgeworICBNZG5zTWVzc2FnZSBtc2c7CiAgIG1zZy5TZXRJZCgweDEy
MzQpOwogICBtc2cuU2V0UXVlcnlPclJlc3BvbnNlKGZhbHNlKTsKICAgbXNnLlNldEF1dGhvcml0
YXRpdmUodHJ1ZSk7CiAKLSAgTURuc1Jlc291cmNlUmVjb3JkIGFuc3dlcjE7CisgIE1kbnNSZXNv
dXJjZVJlY29yZCBhbnN3ZXIxOwogICBhbnN3ZXIxLlNldE5hbWUoIndlYnJ0YzQub3JnLiIpOwog
ICBhbnN3ZXIxLlNldFR5cGUoU2VjdGlvbkVudHJ5VHlwZTo6a0EpOwogICBhbnN3ZXIxLlNldENs
YXNzKFNlY3Rpb25FbnRyeUNsYXNzOjprSU4pOwpAQCAtNTU1LDcgKzU1NSw3IEBAIFRFU1QoTURu
c01lc3NhZ2VUZXN0LCBXcml0ZVR3b0Fuc3dlcnNUb0lQdjRBbmRJUHY2QWRkcikgewogICBhbnN3
ZXIxLlNldFR0bFNlY29uZHMoNjApOwogICBtc2cuQWRkQW5zd2VyUmVjb3JkKGFuc3dlcjEpOwog
Ci0gIE1EbnNSZXNvdXJjZVJlY29yZCBhbnN3ZXIyOworICBNZG5zUmVzb3VyY2VSZWNvcmQgYW5z
d2VyMjsKICAgYW5zd2VyMi5TZXROYW1lKCJ3ZWJydGM2Lm9yZy4iKTsKICAgYW5zd2VyMi5TZXRU
eXBlKFNlY3Rpb25FbnRyeVR5cGU6OmtBQUFBKTsKICAgYW5zd2VyMi5TZXRDbGFzcyhTZWN0aW9u
RW50cnlDbGFzczo6a0lOKTsKQEAgLTU2NCw3ICs1NjQsNyBAQCBURVNUKE1EbnNNZXNzYWdlVGVz
dCwgV3JpdGVUd29BbnN3ZXJzVG9JUHY0QW5kSVB2NkFkZHIpIHsKICAgYW5zd2VyMi5TZXRUdGxT
ZWNvbmRzKDEyMCk7CiAgIG1zZy5BZGRBbnN3ZXJSZWNvcmQoYW5zd2VyMik7CiAKLSAgV3JpdGVN
RG5zTWVzc2FnZUFuZENvbXBhcmUoJm1zZywga1R3b0F1dGhvcml0YXRpdmVBbnN3ZXJzV2l0aElQ
djRBbmRJUHY2QWRkcik7CisgIFdyaXRlTWRuc01lc3NhZ2VBbmRDb21wYXJlKCZtc2csIGtUd29B
dXRob3JpdGF0aXZlQW5zd2Vyc1dpdGhJUHY0QW5kSVB2NkFkZHIpOwogfQogCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tb2NraWNldHJhbnNwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9tb2NraWNldHJhbnNwb3J0LmgKaW5k
ZXggZDE4NjNjNTI5MzUyMDllZWU0NDJhNDgzYzQyNjUwMThmNmViMmM3MC4uYjE4Y2UzZDVhZGUx
ZGE5NDAwY2NhZDIwMmJkOGFkZGE4Y2FhNWZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvbW9ja2ljZXRyYW5zcG9ydC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL21v
Y2tpY2V0cmFuc3BvcnQuaApAQCAtNDcsNiArNDcsMTAgQEAgY2xhc3MgTW9ja0ljZVRyYW5zcG9y
dCA6IHB1YmxpYyBJY2VUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIEljZVRyYW5zcG9ydFN0YXRlIEdl
dFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgewogICAgIHJldHVybiBJY2VUcmFuc3BvcnRTdGF0ZTo6
U1RBVEVfSU5JVDsKICAgfQorICB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlIEdldEljZVRyYW5z
cG9ydFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgIHJldHVybiB3ZWJydGM6OkljZVRyYW5z
cG9ydFN0YXRlOjprTmV3OworICB9CisKICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9u
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJhbnNwb3J0X25hbWVfOyB9CiAgIGludCBj
b21wb25lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgIHZvaWQgU2V0SWNlUm9s
ZShJY2VSb2xlIHJvbGUpIG92ZXJyaWRlIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnBjb25zdGFudHMuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycGNvbnN0YW50
cy5oCmluZGV4IGIyZTkyZWZmMTM1MmFjOGM2MDVjYTAxNDg0OTgxOTRhNmE3MTFiZWYuLjI5NDhi
ZTBiYjgzN2Q0YzA0ZGNiZjIwODFmOThiMDJkMGQ0N2Q5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycGNvbnN0YW50cy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3AycGNvbnN0YW50cy5oCkBAIC0xMyw2ICsxMyw4IEBACiAKICNpbmNsdWRlIDxzdHJpbmc+CiAK
KyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgorCiBuYW1lc3BhY2UgY3Jp
Y2tldCB7CiAKIC8vIENOXyA9PSAiY29udGVudCBuYW1lIi4gIFdoZW4gd2UgaW5pdGlhdGUgYSBz
ZXNzaW9uLCB3ZSBjaG9vc2UgdGhlCkBAIC0yOSw3ICszMSw3IEBAIGV4dGVybiBjb25zdCBjaGFy
IENOX09USEVSW107CiBleHRlcm4gY29uc3QgY2hhciBHUk9VUF9UWVBFX0JVTkRMRVtdOwogCiBl
eHRlcm4gY29uc3QgaW50IElDRV9VRlJBR19MRU5HVEg7Ci1leHRlcm4gY29uc3QgaW50IElDRV9Q
V0RfTEVOR1RIOworUlRDX0VYUE9SVCBleHRlcm4gY29uc3QgaW50IElDRV9QV0RfTEVOR1RIOwog
ZXh0ZXJuIGNvbnN0IHNpemVfdCBJQ0VfVUZSQUdfTUlOX0xFTkdUSDsKIGV4dGVybiBjb25zdCBz
aXplX3QgSUNFX1BXRF9NSU5fTEVOR1RIOwogZXh0ZXJuIGNvbnN0IHNpemVfdCBJQ0VfVUZSQUdf
TUFYX0xFTkdUSDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWwuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFubmVs
LmNjCmluZGV4IGIwYWJlMjRhMDU4MGExMmEwZmJlYzAyNWU2M2FmMTIwZGVjNjdmYjAuLmY2MTI5
MWM1ZGRjMDA4MjZlYjQyNDczNjRhYzRmNWExYmEyNTEyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5zcG9ydGNo
YW5uZWwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbC5jYwpAQCAtMzIzLDYgKzMyMywxMCBAQCBJY2VU
cmFuc3BvcnRTdGF0ZSBQMlBUcmFuc3BvcnRDaGFubmVsOjpHZXRTdGF0ZSgpIGNvbnN0IHsKICAg
cmV0dXJuIHN0YXRlXzsKIH0KIAord2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZSBQMlBUcmFuc3Bv
cnRDaGFubmVsOjpHZXRJY2VUcmFuc3BvcnRTdGF0ZSgpIGNvbnN0IHsKKyAgcmV0dXJuIHN0YW5k
YXJkaXplZF9zdGF0ZV87Cit9CisKIGNvbnN0IHN0ZDo6c3RyaW5nJiBQMlBUcmFuc3BvcnRDaGFu
bmVsOjp0cmFuc3BvcnRfbmFtZSgpIGNvbnN0IHsKICAgcmV0dXJuIHRyYW5zcG9ydF9uYW1lXzsK
IH0KQEAgLTM4Nyw2ICszOTEsNDEgQEAgSWNlVHJhbnNwb3J0U3RhdGUgUDJQVHJhbnNwb3J0Q2hh
bm5lbDo6Q29tcHV0ZVN0YXRlKCkgY29uc3QgewogICByZXR1cm4gSWNlVHJhbnNwb3J0U3RhdGU6
OlNUQVRFX0NPTVBMRVRFRDsKIH0KIAorLy8gQ29tcHV0ZSB0aGUgY3VycmVudCBSVENJY2VUcmFu
c3BvcnRTdGF0ZSBhcyBkZXNjcmliZWQgaW4KKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJy
dGMvI2RvbS1ydGNpY2V0cmFuc3BvcnRzdGF0ZQorLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTMw
OCk6IFJldHVybiBJY2VUcmFuc3BvcnRTdGF0ZTo6a0Rpc2Nvbm5lY3RlZCB3aGVuIGl0CisvLyBt
YWtlcyBzZW5zZS4KKy8vIFRPRE8oYnVncy53ZWJydGMub3JnLzkyMTgpOiBBdm9pZCBwcmVtYXR1
cmVseSBzaWduYWxsaW5nIGtGYWlsZWQgb25jZSB3ZSBoYXZlCisvLyBpbXBsZW1lbnRlZCBlbmQt
b2YtY2FuZGlkYXRlcyBzaWduYWxsaW5nLgord2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZSBQMlBU
cmFuc3BvcnRDaGFubmVsOjpDb21wdXRlSWNlVHJhbnNwb3J0U3RhdGUoKQorICAgIGNvbnN0IHsK
KyAgYm9vbCBoYXNfY29ubmVjdGlvbiA9IGZhbHNlOworICBmb3IgKENvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24gOiBjb25uZWN0aW9uc18pIHsKKyAgICBpZiAoY29ubmVjdGlvbi0+YWN0aXZlKCkpIHsK
KyAgICAgIGhhc19jb25uZWN0aW9uID0gdHJ1ZTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQor
CisgIHN3aXRjaCAoZ2F0aGVyaW5nX3N0YXRlXykgeworICAgIGNhc2Uga0ljZUdhdGhlcmluZ0Nv
bXBsZXRlOgorICAgICAgaWYgKGhhc19jb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gd2VicnRj
OjpJY2VUcmFuc3BvcnRTdGF0ZTo6a0NvbXBsZXRlZDsKKyAgICAgIGVsc2UKKyAgICAgICAgcmV0
dXJuIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtGYWlsZWQ7CisgICAgY2FzZSBrSWNlR2F0
aGVyaW5nTmV3OgorICAgICAgcmV0dXJuIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtOZXc7
CisgICAgY2FzZSBrSWNlR2F0aGVyaW5nR2F0aGVyaW5nOgorICAgICAgaWYgKGhhc19jb25uZWN0
aW9uKQorICAgICAgICByZXR1cm4gd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6a0Nvbm5lY3Rl
ZDsKKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6
OmtDaGVja2luZzsKKyAgICBkZWZhdWx0OgorICAgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgICAg
IHJldHVybiB3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlOjprRmFpbGVkOworICB9Cit9CisKIHZv
aWQgUDJQVHJhbnNwb3J0Q2hhbm5lbDo6U2V0SWNlUGFyYW1ldGVycyhjb25zdCBJY2VQYXJhbWV0
ZXJzJiBpY2VfcGFyYW1zKSB7CiAgIFJUQ19EQ0hFQ0sobmV0d29ya190aHJlYWRfID09IHJ0Yzo6
VGhyZWFkOjpDdXJyZW50KCkpOwogICBSVENfTE9HKExTX0lORk8pIDw8ICJTZXQgSUNFIHVmcmFn
OiAiIDw8IGljZV9wYXJhbXMudWZyYWcKQEAgLTE4MjcsNiArMTg2Niw5IEBAIHZvaWQgUDJQVHJh
bnNwb3J0Q2hhbm5lbDo6U3dpdGNoU2VsZWN0ZWRDb25uZWN0aW9uKENvbm5lY3Rpb24qIGNvbm4p
IHsKIC8vIGV4YW1wbGUsIHdlIGNhbGwgdGhpcyBhdCB0aGUgZW5kIG9mIFNvcnRDb25uZWN0aW9u
c0FuZFVwZGF0ZVN0YXRlLgogdm9pZCBQMlBUcmFuc3BvcnRDaGFubmVsOjpVcGRhdGVTdGF0ZSgp
IHsKICAgSWNlVHJhbnNwb3J0U3RhdGUgc3RhdGUgPSBDb21wdXRlU3RhdGUoKTsKKyAgd2VicnRj
OjpJY2VUcmFuc3BvcnRTdGF0ZSBjdXJyZW50X3N0YW5kYXJkaXplZF9zdGF0ZSA9CisgICAgICBD
b21wdXRlSWNlVHJhbnNwb3J0U3RhdGUoKTsKKwogICBpZiAoc3RhdGVfICE9IHN0YXRlKSB7CiAg
ICAgUlRDX0xPRyhMU19JTkZPKSA8PCBUb1N0cmluZygpCiAgICAgICAgICAgICAgICAgICAgICA8
PCAiOiBUcmFuc3BvcnQgY2hhbm5lbCBzdGF0ZSBjaGFuZ2VkIGZyb20gIgpAQCAtMTg2OCw2ICsx
OTEwLDEwIEBAIHZvaWQgUDJQVHJhbnNwb3J0Q2hhbm5lbDo6VXBkYXRlU3RhdGUoKSB7CiAgICAg
U2lnbmFsU3RhdGVDaGFuZ2VkKHRoaXMpOwogICB9CiAKKyAgaWYgKHN0YW5kYXJkaXplZF9zdGF0
ZV8gIT0gY3VycmVudF9zdGFuZGFyZGl6ZWRfc3RhdGUpIHsKKyAgICBzdGFuZGFyZGl6ZWRfc3Rh
dGVfID0gY3VycmVudF9zdGFuZGFyZGl6ZWRfc3RhdGU7CisgICAgU2lnbmFsSWNlVHJhbnNwb3J0
U3RhdGVDaGFuZ2VkKHRoaXMpOworICB9CiAgIC8vIElmIG91ciBzZWxlY3RlZCBjb25uZWN0aW9u
IGlzICJwcmVzdW1lZCB3cml0YWJsZSIgKFRVUk4tVFVSTiB3aXRoIG5vCiAgIC8vIENyZWF0ZVBl
cm1pc3Npb24gcmVxdWlyZWQpLCBhY3QgbGlrZSB3ZSdyZSBhbHJlYWR5IHdyaXRhYmxlIHRvIHRo
ZSB1cHBlcgogICAvLyBsYXllcnMsIHNvIHRoZXkgY2FuIHN0YXJ0IG1lZGlhIHF1aWNrZXIuCkBA
IC0yMzE5LDcgKzIzNjUsNyBAQCBib29sIFAyUFRyYW5zcG9ydENoYW5uZWw6OlBydW5lUG9ydChQ
b3J0SW50ZXJmYWNlKiBwb3J0KSB7CiB2b2lkIFAyUFRyYW5zcG9ydENoYW5uZWw6Ok9uUmVhZFBh
Y2tldChDb25uZWN0aW9uKiBjb25uZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAg
IFJUQ19EQ0hFQ0sobmV0d29ya190aHJlYWRfID09IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCkpOwog
CiAgIC8vIERvIG5vdCBkZWxpdmVyLCBpZiBwYWNrZXQgZG9lc24ndCBiZWxvbmcgdG8gdGhlIGNv
cnJlY3QgdHJhbnNwb3J0IGNoYW5uZWwuCkBAIC0yMzI3LDcgKzIzNzMsNyBAQCB2b2lkIFAyUFRy
YW5zcG9ydENoYW5uZWw6Ok9uUmVhZFBhY2tldChDb25uZWN0aW9uKiBjb25uZWN0aW9uLAogICAg
IHJldHVybjsKIAogICAvLyBMZXQgdGhlIGNsaWVudCBrbm93IG9mIGFuIGluY29taW5nIHBhY2tl
dAotICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEsIGxlbiwgcGFja2V0X3RpbWUsIDApOwor
ICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEsIGxlbiwgcGFja2V0X3RpbWVfdXMsIDApOwog
CiAgIC8vIE1heSBuZWVkIHRvIHN3aXRjaCB0aGUgc2VuZGluZyBjb25uZWN0aW9uIGJhc2VkIG9u
IHRoZSByZWNlaXZpbmcgbWVkaWEgcGF0aAogICAvLyBpZiB0aGlzIGlzIHRoZSBjb250cm9sbGVk
IHNpZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFubmVsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFubmVsLmgKaW5k
ZXggZmJlZDM0NGNjMzNlNmVjNzMxYzlmMDg2MDBiZGRiNWE4ZGIwMWZjOS4uYWJlZGQwYmRkMzQ4
OTM3NWU1MmY5NDM2MTIyZmNkNjE5Y2E3NTM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3AycHRyYW5zcG9ydGNoYW5uZWwuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgInJ0Y19i
YXNlL2FzeW5jcGFja2V0c29ja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3Jt
YWdpYy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAg
LTc1LDcgKzc2LDcgQEAgY2xhc3MgUmVtb3RlQ2FuZGlkYXRlIDogcHVibGljIENhbmRpZGF0ZSB7
CiAKIC8vIFAyUFRyYW5zcG9ydENoYW5uZWwgbWFuYWdlcyB0aGUgY2FuZGlkYXRlcyBhbmQgY29u
bmVjdGlvbiBwcm9jZXNzIHRvIGtlZXAKIC8vIHR3byBQMlAgY2xpZW50cyBjb25uZWN0ZWQgdG8g
ZWFjaCBvdGhlci4KLWNsYXNzIFAyUFRyYW5zcG9ydENoYW5uZWwgOiBwdWJsaWMgSWNlVHJhbnNw
b3J0SW50ZXJuYWwgeworY2xhc3MgUlRDX0VYUE9SVCBQMlBUcmFuc3BvcnRDaGFubmVsIDogcHVi
bGljIEljZVRyYW5zcG9ydEludGVybmFsIHsKICBwdWJsaWM6CiAgIC8vIEZvciB0ZXN0aW5nIG9u
bHkuCiAgIC8vIFRPRE8oenN0ZWluKTogUmVtb3ZlIG9uY2UgQXN5bmNSZXNvbHZlckZhY3Rvcnkg
aXMgcmVxdWlyZWQuCkBAIC05MSw2ICs5Miw4IEBAIGNsYXNzIFAyUFRyYW5zcG9ydENoYW5uZWwg
OiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewogCiAgIC8vIEZyb20gVHJhbnNwb3J0Q2hh
bm5lbEltcGw6CiAgIEljZVRyYW5zcG9ydFN0YXRlIEdldFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7
CisgIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGUgR2V0SWNlVHJhbnNwb3J0U3RhdGUoKSBjb25z
dCBvdmVycmlkZTsKKwogICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0X25hbWUoKSBjb25z
dCBvdmVycmlkZTsKICAgaW50IGNvbXBvbmVudCgpIGNvbnN0IG92ZXJyaWRlOwogICBib29sIHdy
aXRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0yNDMsNyArMjQ2LDEzIEBAIGNsYXNzIFAyUFRy
YW5zcG9ydENoYW5uZWwgOiBwdWJsaWMgSWNlVHJhbnNwb3J0SW50ZXJuYWwgewogICB2b2lkIFVw
ZGF0ZVN0YXRlKCk7CiAgIHZvaWQgSGFuZGxlQWxsVGltZWRPdXQoKTsKICAgdm9pZCBNYXliZVN0
b3BQb3J0QWxsb2NhdG9yU2Vzc2lvbnMoKTsKKworICAvLyBDb21wdXRlSWNlVHJhbnNwb3J0U3Rh
dGUgY29tcHV0ZXMgdGhlIFJUQ0ljZVRyYW5zcG9ydFN0YXRlIGFzIGRlc2NyaWJlZCBpbgorICAv
LyBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXBjLyNkb20tcnRjaWNldHJhbnNwb3J0c3Rh
dGUuIENvbXB1dGVTdGF0ZQorICAvLyBjb21wdXRlcyB0aGUgdmFsdWUgd2UgY3VycmVudGx5IGV4
cG9ydCBhcyBSVENJY2VUcmFuc3BvcnRTdGF0ZS4KKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcv
OTMwOCk6IFJlbW92ZSBDb21wdXRlU3RhdGUgb25jZSBpdCdzIG5vIGxvbmdlciB1c2VkLgogICBJ
Y2VUcmFuc3BvcnRTdGF0ZSBDb21wdXRlU3RhdGUoKSBjb25zdDsKKyAgd2VicnRjOjpJY2VUcmFu
c3BvcnRTdGF0ZSBDb21wdXRlSWNlVHJhbnNwb3J0U3RhdGUoKSBjb25zdDsKIAogICBDb25uZWN0
aW9uKiBHZXRCZXN0Q29ubmVjdGlvbk9uTmV0d29yayhydGM6Ok5ldHdvcmsqIG5ldHdvcmspIGNv
bnN0OwogICBib29sIENyZWF0ZUNvbm5lY3Rpb25zKGNvbnN0IENhbmRpZGF0ZSYgcmVtb3RlX2Nh
bmRpZGF0ZSwKQEAgLTI5NSw3ICszMDQsNyBAQCBjbGFzcyBQMlBUcmFuc3BvcnRDaGFubmVsIDog
cHVibGljIEljZVRyYW5zcG9ydEludGVybmFsIHsKICAgdm9pZCBPblJlYWRQYWNrZXQoQ29ubmVj
dGlvbiogY29ubmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwK
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgICAgICAgY29u
c3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgIGlu
dDY0X3QgcGFja2V0X3RpbWVfdXMpOwogICB2b2lkIE9uU2VudFBhY2tldChjb25zdCBydGM6OlNl
bnRQYWNrZXQmIHNlbnRfcGFja2V0KTsKICAgdm9pZCBPblJlYWR5VG9TZW5kKENvbm5lY3Rpb24q
IGNvbm5lY3Rpb24pOwogICB2b2lkIE9uQ29ubmVjdGlvbkRlc3Ryb3llZChDb25uZWN0aW9uKiBj
b25uZWN0aW9uKTsKQEAgLTQwNyw3ICs0MTYsMTEgQEAgY2xhc3MgUDJQVHJhbnNwb3J0Q2hhbm5l
bCA6IHB1YmxpYyBJY2VUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OkJhc2ljUmVnYXRoZXJpbmdDb250cm9sbGVyPiByZWdhdGhlcmluZ19jb250cm9sbGVyXzsK
ICAgaW50NjRfdCBsYXN0X3Bpbmdfc2VudF9tc18gPSAwOwogICBpbnQgd2Vha19waW5nX2ludGVy
dmFsXyA9IFdFQUtfUElOR19JTlRFUlZBTDsKKyAgLy8gVE9ETyhqb25hc29sc3Nvbik6IFJlbW92
ZSBzdGF0ZV8gYW5kIHJlbmFtZSBzdGFuZGFyZGl6ZWRfc3RhdGVfIG9uY2Ugc3RhdGVfCisgIC8v
IGlzIG5vIGxvbmdlciB1c2VkIHRvIGNvbXB1dGUgdGhlIElDRSBjb25uZWN0aW9uIHN0YXRlLgog
ICBJY2VUcmFuc3BvcnRTdGF0ZSBzdGF0ZV8gPSBJY2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfSU5J
VDsKKyAgd2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZSBzdGFuZGFyZGl6ZWRfc3RhdGVfID0KKyAg
ICAgIHdlYnJ0Yzo6SWNlVHJhbnNwb3J0U3RhdGU6OmtOZXc7CiAgIEljZUNvbmZpZyBjb25maWdf
OwogICBpbnQgbGFzdF9zZW50X3BhY2tldF9pZF8gPSAtMTsgIC8vIC0xIGluZGljYXRlcyBubyBw
YWNrZXQgd2FzIHNlbnQgYmVmb3JlLgogICBib29sIHN0YXJ0ZWRfcGluZ2luZ18gPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Ay
cC9iYXNlL3AycHRyYW5zcG9ydGNoYW5uZWxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wMnB0cmFuc3BvcnRjaGFubmVsX3Vu
aXR0ZXN0LmNjCmluZGV4IDc2YjkxOGNhMWU0YmNlOTI3NjNiZGVlNDU3MTEzN2E3M2ViNWNmNWYu
LjJhYjNkODhhZmJjNTk3YWQ3ZTUyMGM3ZThmMWJmOWZmYzBjNDhjZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3AycHRyYW5z
cG9ydGNoYW5uZWxfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcDJwdHJhbnNwb3J0Y2hhbm5lbF91bml0dGVzdC5jYwpA
QCAtNjk5LDcgKzY5OSw2IEBAIGNsYXNzIFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0QmFzZSA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgIEVYUEVDVF9ORShpbmZvLnBhY2tldF90eXBlLCBydGM6
OlBhY2tldFR5cGU6OmtVbmtub3duKTsKICAgICBFWFBFQ1RfTkUoaW5mby5wcm90b2NvbCwgcnRj
OjpQYWNrZXRJbmZvUHJvdG9jb2xUeXBlOjprVW5rbm93bik7CiAgICAgRVhQRUNUX1RSVUUoaW5m
by5uZXR3b3JrX2lkLmhhc192YWx1ZSgpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaW5mby5sb2NhbF9z
b2NrZXRfYWRkcmVzcy5Jc05pbCgpKTsKICAgfQogCiAgIHZvaWQgT25SZWFkeVRvU2VuZChydGM6
OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQpIHsKQEAgLTgxMSw3ICs4MTAsNyBA
QCBjbGFzcyBQMlBUcmFuc3BvcnRDaGFubmVsVGVzdEJhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCwKICAgdm9pZCBPblJlYWRQYWNrZXQocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJh
bnNwb3J0LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBh
Y2tldFRpbWUmIHBhY2tldF90aW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90
JiAvKiBwYWNrZXRfdGltZV91cyAqLywKICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7
CiAgICAgc3RkOjpsaXN0PHN0ZDo6c3RyaW5nPiYgcGFja2V0cyA9IEdldFBhY2tldExpc3QodHJh
bnNwb3J0KTsKICAgICBwYWNrZXRzLnB1c2hfZnJvbnQoc3RkOjpzdHJpbmcoZGF0YSwgbGVuKSk7
CkBAIC0zMjA0LDcgKzMyMDMsNyBAQCBjbGFzcyBQMlBUcmFuc3BvcnRDaGFubmVsUGluZ1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgICBtc2cuQWRkRmluZ2VycHJpbnQoKTsKICAgICBy
dGM6OkJ5dGVCdWZmZXJXcml0ZXIgYnVmOwogICAgIG1zZy5Xcml0ZSgmYnVmKTsKLSAgICBjb25u
LT5PblJlYWRQYWNrZXQoYnVmLkRhdGEoKSwgYnVmLkxlbmd0aCgpLCBydGM6OkNyZWF0ZVBhY2tl
dFRpbWUoMCkpOworICAgIGNvbm4tPk9uUmVhZFBhY2tldChidWYuRGF0YSgpLCBidWYuTGVuZ3Ro
KCksIHJ0Yzo6VGltZU1pY3JvcygpKTsKICAgfQogCiAgIHZvaWQgT25SZWFkeVRvU2VuZChydGM6
OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQpIHsKQEAgLTM2MTMsNyArMzYxMiw3
IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsUGluZ1Rlc3QsIFRlc3RSZWNlaXZpbmdTdGF0
ZUNoYW5nZSkgewogCiAgIGNsb2NrLkFkdmFuY2VUaW1lKHdlYnJ0Yzo6VGltZURlbHRhOjpzZWNv
bmRzKDEpKTsKICAgY29ubjEtPlJlY2VpdmVkUGluZygpOwotICBjb25uMS0+T25SZWFkUGFja2V0
KCJBQkMiLCAzLCBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpOworICBjb25uMS0+T25SZWFkUGFj
a2V0KCJBQkMiLCAzLCBydGM6OlRpbWVNaWNyb3MoKSk7CiAgIEVYUEVDVF9UUlVFX1NJTVVMQVRF
RF9XQUlUKGNoLnJlY2VpdmluZygpLCBrU2hvcnRUaW1lb3V0LCBjbG9jayk7CiAgIEVYUEVDVF9U
UlVFX1NJTVVMQVRFRF9XQUlUKCFjaC5yZWNlaXZpbmcoKSwga1Nob3J0VGltZW91dCwgY2xvY2sp
OwogfQpAQCAtMzgwNCw3ICszODAzLDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxQaW5n
VGVzdCwgVGVzdFNlbGVjdENvbm5lY3Rpb25CYXNlZE9uTWVkaWFSZWNlaXZlZCkgewogICBDb25u
ZWN0aW9uKiBjb25uMiA9IFdhaXRGb3JDb25uZWN0aW9uVG8oJmNoLCAiMi4yLjIuMiIsIDIpOwog
ICBBU1NFUlRfVFJVRShjb25uMiAhPSBudWxscHRyKTsKICAgY29ubjItPlJlY2VpdmVkUGluZ1Jl
c3BvbnNlKExPV19SVFQsICJpZCIpOyAgLy8gQmVjb21lIHdyaXRhYmxlIGFuZCByZWNlaXZpbmcu
Ci0gIGNvbm4yLT5PblJlYWRQYWNrZXQoIkFCQyIsIDMsIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgw
KSk7CisgIGNvbm4yLT5PblJlYWRQYWNrZXQoIkFCQyIsIDMsIHJ0Yzo6VGltZU1pY3JvcygpKTsK
ICAgRVhQRUNUX0VRKGNvbm4yLCBjaC5zZWxlY3RlZF9jb25uZWN0aW9uKCkpOwogICBjb25uMi0+
UmVjZWl2ZWRQaW5nUmVzcG9uc2UoTE9XX1JUVCwgImlkIik7ICAvLyBCZWNvbWUgd3JpdGFibGUu
CiAKQEAgLTM4MzIsNyArMzgzMSw3IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsUGluZ1Rl
c3QsIFRlc3RTZWxlY3RDb25uZWN0aW9uQmFzZWRPbk1lZGlhUmVjZWl2ZWQpIHsKICAgLy8gc2Vs
ZWN0ZWQgY29ubmVjdGlvbiB3YXMgbm9taW5hdGVkIGJ5IHRoZSBjb250cm9sbGluZyBzaWRlLgog
ICBjb25uMi0+UmVjZWl2ZWRQaW5nKCk7CiAgIGNvbm4yLT5SZWNlaXZlZFBpbmdSZXNwb25zZShM
T1dfUlRULCAiaWQiKTsKLSAgY29ubjItPk9uUmVhZFBhY2tldCgiWFlaIiwgMywgcnRjOjpDcmVh
dGVQYWNrZXRUaW1lKDApKTsKKyAgY29ubjItPk9uUmVhZFBhY2tldCgiWFlaIiwgMywgcnRjOjpU
aW1lTWljcm9zKCkpOwogICBFWFBFQ1RfRVFfV0FJVChjb25uMywgY2guc2VsZWN0ZWRfY29ubmVj
dGlvbigpLCBrRGVmYXVsdFRpbWVvdXQpOwogfQogCkBAIC0zODYxLDEyICszODYwLDEyIEBAIFRF
U1RfRihQMlBUcmFuc3BvcnRDaGFubmVsUGluZ1Rlc3QsCiAgIC8vIEFkdmFuY2UgdGhlIGNsb2Nr
IGJ5IDFtcyBzbyB0aGF0IHRoZSBsYXN0IGRhdGEgcmVjZWl2aW5nIHRpbWVzdGFtcCBvZgogICAv
LyBjb25uMiBpcyBsYXJnZXIuCiAgIFNJTVVMQVRFRF9XQUlUKGZhbHNlLCAxLCBjbG9jayk7Ci0g
IGNvbm4yLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0Yzo6Q3JlYXRlUGFja2V0VGltZSgwKSk7
CisgIGNvbm4yLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0Yzo6VGltZU1pY3JvcygpKTsKICAg
RVhQRUNUX0VRKDEsIHJlc2V0X3NlbGVjdGVkX2NhbmRpZGF0ZV9wYWlyX3N3aXRjaGVzKCkpOwog
ICBFWFBFQ1RfVFJVRShDYW5kaWRhdGVQYWlyTWF0Y2hlc05ldHdvcmtSb3V0ZShjb25uMikpOwog
CiAgIC8vIGNvbm4xIGFsc28gcmVjZWl2ZXMgZGF0YTsgaXQgYmVjb21lcyBzZWxlY3RlZCBkdWUg
dG8gcHJpb3JpdHkgYWdhaW4uCi0gIGNvbm4xLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0Yzo6
Q3JlYXRlUGFja2V0VGltZSgwKSk7CisgIGNvbm4xLT5PblJlYWRQYWNrZXQoIlhZWiIsIDMsIHJ0
Yzo6VGltZU1pY3JvcygpKTsKICAgRVhQRUNUX0VRKDEsIHJlc2V0X3NlbGVjdGVkX2NhbmRpZGF0
ZV9wYWlyX3N3aXRjaGVzKCkpOwogICBFWFBFQ1RfVFJVRShDYW5kaWRhdGVQYWlyTWF0Y2hlc05l
dHdvcmtSb3V0ZShjb25uMikpOwogCkBAIC0zODc1LDcgKzM4NzQsNyBAQCBURVNUX0YoUDJQVHJh
bnNwb3J0Q2hhbm5lbFBpbmdUZXN0LAogICBTSU1VTEFURURfV0FJVChmYWxzZSwgMSwgY2xvY2sp
OwogICAvLyBOZWVkIHRvIGJlY29tZSB3cml0YWJsZSBhZ2FpbiBiZWNhdXNlIGl0IHdhcyBwcnVu
ZWQuCiAgIGNvbm4yLT5SZWNlaXZlZFBpbmdSZXNwb25zZShMT1dfUlRULCAiaWQiKTsKLSAgY29u
bjItPk9uUmVhZFBhY2tldCgiWFlaIiwgMywgcnRjOjpDcmVhdGVQYWNrZXRUaW1lKDApKTsKKyAg
Y29ubjItPk9uUmVhZFBhY2tldCgiWFlaIiwgMywgcnRjOjpUaW1lTWljcm9zKCkpOwogICBFWFBF
Q1RfRVEoMSwgcmVzZXRfc2VsZWN0ZWRfY2FuZGlkYXRlX3BhaXJfc3dpdGNoZXMoKSk7CiAgIEVY
UEVDVF9UUlVFKENhbmRpZGF0ZVBhaXJNYXRjaGVzTmV0d29ya1JvdXRlKGNvbm4yKSk7CiAKQEAg
LTM5MDUsNyArMzkwNCw3IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsUGluZ1Rlc3QsCiAg
IC8vIGNvbm4xIHJlY2VpdmVkIGRhdGE7IGl0IGlzIHRoZSBzZWxlY3RlZCBjb25uZWN0aW9uLgog
ICAvLyBBZHZhbmNlIHRoZSBjbG9jayB0byBoYXZlIGEgbm9uLXplcm8gbGFzdC1kYXRhLXJlY2Vp
dmluZyB0aW1lLgogICBTSU1VTEFURURfV0FJVChmYWxzZSwgMSwgY2xvY2spOwotICBjb25uMS0+
T25SZWFkUGFja2V0KCJYWVoiLCAzLCBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkpOworICBjb25u
MS0+T25SZWFkUGFja2V0KCJYWVoiLCAzLCBydGM6OlRpbWVNaWNyb3MoKSk7CiAgIEVYUEVDVF9F
USgxLCByZXNldF9zZWxlY3RlZF9jYW5kaWRhdGVfcGFpcl9zd2l0Y2hlcygpKTsKICAgRVhQRUNU
X1RSVUUoQ2FuZGlkYXRlUGFpck1hdGNoZXNOZXR3b3JrUm91dGUoY29ubjEpKTsKIApAQCAtNDEy
Niw3ICs0MTI1LDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxQaW5nVGVzdCwgVGVzdERv
bnRQcnVuZUhpZ2hQcmlvcml0eUNvbm5lY3Rpb25zKSB7CiAgIC8vIGNvbm4yLgogICBOb21pbmF0
ZUNvbm5lY3Rpb24oY29ubjEpOwogICBTSU1VTEFURURfV0FJVChmYWxzZSwgMSwgY2xvY2spOwot
ICBjb25uMS0+T25SZWFkUGFja2V0KCJYWVoiLCAzLCBydGM6OkNyZWF0ZVBhY2tldFRpbWUoMCkp
OworICBjb25uMS0+T25SZWFkUGFja2V0KCJYWVoiLCAzLCBydGM6OlRpbWVNaWNyb3MoKSk7CiAg
IFNJTVVMQVRFRF9XQUlUKGNvbm4yLT5wcnVuZWQoKSwgMTAwLCBjbG9jayk7CiAgIEVYUEVDVF9G
QUxTRShjb25uMi0+cHJ1bmVkKCkpOwogfQpAQCAtNDEzNyw2ICs0MTM2LDcgQEAgVEVTVF9GKFAy
UFRyYW5zcG9ydENoYW5uZWxQaW5nVGVzdCwgVGVzdEdldFN0YXRlKSB7CiAgIGNsb2NrLkFkdmFu
Y2VUaW1lKHdlYnJ0Yzo6VGltZURlbHRhOjpzZWNvbmRzKDEpKTsKICAgRmFrZVBvcnRBbGxvY2F0
b3IgcGEocnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwgbnVsbHB0cik7CiAgIFAyUFRyYW5zcG9ydENo
YW5uZWwgY2goInRlc3QgY2hhbm5lbCIsIDEsICZwYSk7CisgIEVYUEVDVF9FUSh3ZWJydGM6Oklj
ZVRyYW5zcG9ydFN0YXRlOjprTmV3LCBjaC5HZXRJY2VUcmFuc3BvcnRTdGF0ZSgpKTsKICAgUHJl
cGFyZUNoYW5uZWwoJmNoKTsKICAgY2guTWF5YmVTdGFydEdhdGhlcmluZygpOwogICBFWFBFQ1Rf
RVEoSWNlVHJhbnNwb3J0U3RhdGU6OlNUQVRFX0lOSVQsIGNoLkdldFN0YXRlKCkpOwpAQCAtNDE0
NCw2ICs0MTQ0LDggQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxQaW5nVGVzdCwgVGVzdEdl
dFN0YXRlKSB7CiAgIGNoLkFkZFJlbW90ZUNhbmRpZGF0ZShDcmVhdGVVZHBDYW5kaWRhdGUoTE9D
QUxfUE9SVF9UWVBFLCAiMi4yLjIuMiIsIDIsIDEpKTsKICAgQ29ubmVjdGlvbiogY29ubjEgPSBX
YWl0Rm9yQ29ubmVjdGlvblRvKCZjaCwgIjEuMS4xLjEiLCAxLCAmY2xvY2spOwogICBDb25uZWN0
aW9uKiBjb25uMiA9IFdhaXRGb3JDb25uZWN0aW9uVG8oJmNoLCAiMi4yLjIuMiIsIDIsICZjbG9j
ayk7CisgIC8vIEdhdGhlcmluZyBjb21wbGV0ZSB3aXRoIGNhbmRpZGF0ZXMuCisgIEVYUEVDVF9F
USh3ZWJydGM6OkljZVRyYW5zcG9ydFN0YXRlOjprQ29tcGxldGVkLCBjaC5HZXRJY2VUcmFuc3Bv
cnRTdGF0ZSgpKTsKICAgQVNTRVJUX1RSVUUoY29ubjEgIT0gbnVsbHB0cik7CiAgIEFTU0VSVF9U
UlVFKGNvbm4yICE9IG51bGxwdHIpOwogICAvLyBOb3cgdGhlcmUgYXJlIHR3byBjb25uZWN0aW9u
cywgc28gdGhlIHRyYW5zcG9ydCBjaGFubmVsIGlzIGNvbm5lY3RpbmcuCkBAIC00MTU2LDYgKzQx
NTgsNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFBpbmdUZXN0LCBUZXN0R2V0U3RhdGUp
IHsKICAgLy8gTmVlZCB0byB3YWl0IHVudGlsIHRoZSBjaGFubmVsIHN0YXRlIGlzIHVwZGF0ZWQu
CiAgIEVYUEVDVF9FUV9TSU1VTEFURURfV0FJVChJY2VUcmFuc3BvcnRTdGF0ZTo6U1RBVEVfRkFJ
TEVELCBjaC5HZXRTdGF0ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAga1Nob3J0VGlt
ZW91dCwgY2xvY2spOworICBFWFBFQ1RfRVEod2VicnRjOjpJY2VUcmFuc3BvcnRTdGF0ZTo6a0Zh
aWxlZCwgY2guR2V0SWNlVHJhbnNwb3J0U3RhdGUoKSk7CiB9CiAKIC8vIFRlc3QgdGhhdCB3aGVu
IGEgbG93LXByaW9yaXR5IGNvbm5lY3Rpb24gaXMgcHJ1bmVkLCBpdCBpcyBub3QgZGVsZXRlZApA
QCAtNDU5MCw3ICs0NTkzLDcgQEAgVEVTVChQMlBUcmFuc3BvcnRDaGFubmVsUmVzb2x2ZXJUZXN0
LCBIb3N0bmFtZUNhbmRpZGF0ZUlzUmVzb2x2ZWQpIHsKIC8vIHByZmx4IGNhbmRpZGF0ZSBpcyB1
cGRhdGVkIHRvIGEgaG9zdCBjYW5kaWRhdGUgYWZ0ZXIgdGhlIG5hbWUgcmVzb2x1dGlvbiBpcwog
Ly8gZG9uZS4KIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsVGVzdCwKLSAgICAgICBQZWVyUmVm
bGV4aXZlQ2FuZGlkYXRlQmVmb3JlU2lnbmFsaW5nV2l0aE1EbnNOYW1lKSB7CisgICAgICAgUGVl
clJlZmxleGl2ZUNhbmRpZGF0ZUJlZm9yZVNpZ25hbGluZ1dpdGhNZG5zTmFtZSkgewogICBydGM6
Ok1vY2tBc3luY1Jlc29sdmVyIG1vY2tfYXN5bmNfcmVzb2x2ZXI7CiAgIHdlYnJ0Yzo6TW9ja0Fz
eW5jUmVzb2x2ZXJGYWN0b3J5IG1vY2tfYXN5bmNfcmVzb2x2ZXJfZmFjdG9yeTsKICAgRVhQRUNU
X0NBTEwobW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5LCBDcmVhdGUoKSkKQEAgLTQ2MDEsNyAr
NDYwNCw3IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsVGVzdCwKICAgQ29uZmlndXJlRW5k
cG9pbnRzKE9QRU4sIE9QRU4sIGtPbmx5TG9jYWxQb3J0cywga09ubHlMb2NhbFBvcnRzKTsKICAg
Ly8gSUNFIHBhcmFtZXRlciB3aWxsIGJlIHNldCB1cCB3aGVuIGNyZWF0aW5nIHRoZSBjaGFubmVs
cy4KICAgc2V0X3JlbW90ZV9pY2VfcGFyYW1ldGVyX3NvdXJjZShGUk9NX1NFVElDRVBBUkFNRVRF
UlMpOwotICBHZXRFbmRwb2ludCgwKS0+bmV0d29ya19tYW5hZ2VyXy5DcmVhdGVNRG5zUmVzcG9u
ZGVyKCk7CisgIEdldEVuZHBvaW50KDApLT5uZXR3b3JrX21hbmFnZXJfLkNyZWF0ZU1kbnNSZXNw
b25kZXIoKTsKICAgR2V0RW5kcG9pbnQoMSktPmFzeW5jX3Jlc29sdmVyX2ZhY3RvcnlfID0gJm1v
Y2tfYXN5bmNfcmVzb2x2ZXJfZmFjdG9yeTsKICAgQ3JlYXRlQ2hhbm5lbHMoKTsKICAgLy8gUGF1
c2Ugc2VuZGluZyBjYW5kaWRhdGVzIGZyb20gYm90aCBlbmRwb2ludHMgdW50aWwgd2UgZmluZCBv
dXQgd2hhdCBwb3J0CkBAIC00NjU2LDcgKzQ2NTksNyBAQCBURVNUX0YoUDJQVHJhbnNwb3J0Q2hh
bm5lbFRlc3QsCiAvLyBhIGhvc3QgY2FuZGlkYXRlIGlmIHRoZSBob3N0bmFtZSBjYW5kaWRhdGUg
dHVybnMgb3V0IHRvIGhhdmUgdGhlIHNhbWUgSVAKIC8vIGFkZHJlc3MgYWZ0ZXIgdGhlIHJlc29s
dXRpb24gY29tcGxldGVzLgogVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0LAotICAgICAg
IFBlZXJSZWZsZXhpdmVDYW5kaWRhdGVEdXJpbmdSZXNvbHZpbmdIb3N0Q2FuZGlkYXRlV2l0aE1E
bnNOYW1lKSB7CisgICAgICAgUGVlclJlZmxleGl2ZUNhbmRpZGF0ZUR1cmluZ1Jlc29sdmluZ0hv
c3RDYW5kaWRhdGVXaXRoTWRuc05hbWUpIHsKICAgTmljZU1vY2s8cnRjOjpNb2NrQXN5bmNSZXNv
bHZlcj4gbW9ja19hc3luY19yZXNvbHZlcjsKICAgd2VicnRjOjpNb2NrQXN5bmNSZXNvbHZlckZh
Y3RvcnkgbW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5OwogICBFWFBFQ1RfQ0FMTChtb2NrX2Fz
eW5jX3Jlc29sdmVyX2ZhY3RvcnksIENyZWF0ZSgpKQpAQCAtNDY2Nyw3ICs0NjcwLDcgQEAgVEVT
VF9GKFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0LAogICBDb25maWd1cmVFbmRwb2ludHMoT1BFTiwg
T1BFTiwga09ubHlMb2NhbFBvcnRzLCBrT25seUxvY2FsUG9ydHMpOwogICAvLyBJQ0UgcGFyYW1l
dGVyIHdpbGwgYmUgc2V0IHVwIHdoZW4gY3JlYXRpbmcgdGhlIGNoYW5uZWxzLgogICBzZXRfcmVt
b3RlX2ljZV9wYXJhbWV0ZXJfc291cmNlKEZST01fU0VUSUNFUEFSQU1FVEVSUyk7Ci0gIEdldEVu
ZHBvaW50KDApLT5uZXR3b3JrX21hbmFnZXJfLkNyZWF0ZU1EbnNSZXNwb25kZXIoKTsKKyAgR2V0
RW5kcG9pbnQoMCktPm5ldHdvcmtfbWFuYWdlcl8uQ3JlYXRlTWRuc1Jlc3BvbmRlcigpOwogICBH
ZXRFbmRwb2ludCgxKS0+YXN5bmNfcmVzb2x2ZXJfZmFjdG9yeV8gPSAmbW9ja19hc3luY19yZXNv
bHZlcl9mYWN0b3J5OwogICBDcmVhdGVDaGFubmVscygpOwogICAvLyBQYXVzZSBzZW5kaW5nIGNh
bmRpZGF0ZXMgZnJvbSBib3RoIGVuZHBvaW50cyB1bnRpbCB3ZSBmaW5kIG91dCB3aGF0IHBvcnQK
QEAgLTQ3MjMsNyArNDcyNiw3IEBAIFRFU1RfRihQMlBUcmFuc3BvcnRDaGFubmVsVGVzdCwKIC8v
IFRlc3QgdGhhdCBpZiB3ZSBvbmx5IGdhdGhlciBhbmQgc2lnbmFsIGEgaG9zdCBjYW5kaWRhdGUs
IHRoZSBJUCBhZGRyZXNzIG9mCiAvLyB3aGljaCBpcyBvYmZ1c2NhdGVkIGJ5IGFuIG1ETlMgbmFt
ZSwgYW5kIGlmIHRoZSBwZWVyIGNhbiBjb21wbGV0ZSB0aGUgbmFtZQogLy8gcmVzb2x1dGlvbiB3
aXRoIHRoZSBjb3JyZWN0IElQIGFkZHJlc3MsIHdlIGNhbiBoYXZlIGEgcDJwIGNvbm5lY3Rpb24u
Ci1URVNUX0YoUDJQVHJhbnNwb3J0Q2hhbm5lbFRlc3QsIENhbkNvbm5lY3RXaXRoSG9zdENhbmRp
ZGF0ZVdpdGhNRG5zTmFtZSkgeworVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0LCBDYW5D
b25uZWN0V2l0aEhvc3RDYW5kaWRhdGVXaXRoTWRuc05hbWUpIHsKICAgTmljZU1vY2s8cnRjOjpN
b2NrQXN5bmNSZXNvbHZlcj4gbW9ja19hc3luY19yZXNvbHZlcjsKICAgd2VicnRjOjpNb2NrQXN5
bmNSZXNvbHZlckZhY3RvcnkgbW9ja19hc3luY19yZXNvbHZlcl9mYWN0b3J5OwogICBFWFBFQ1Rf
Q0FMTChtb2NrX2FzeW5jX3Jlc29sdmVyX2ZhY3RvcnksIENyZWF0ZSgpKQpAQCAtNDczNCw3ICs0
NzM3LDcgQEAgVEVTVF9GKFAyUFRyYW5zcG9ydENoYW5uZWxUZXN0LCBDYW5Db25uZWN0V2l0aEhv
c3RDYW5kaWRhdGVXaXRoTURuc05hbWUpIHsKICAgQ29uZmlndXJlRW5kcG9pbnRzKE9QRU4sIE9Q
RU4sIGtPbmx5TG9jYWxQb3J0cywga09ubHlMb2NhbFBvcnRzKTsKICAgLy8gSUNFIHBhcmFtZXRl
ciB3aWxsIGJlIHNldCB1cCB3aGVuIGNyZWF0aW5nIHRoZSBjaGFubmVscy4KICAgc2V0X3JlbW90
ZV9pY2VfcGFyYW1ldGVyX3NvdXJjZShGUk9NX1NFVElDRVBBUkFNRVRFUlMpOwotICBHZXRFbmRw
b2ludCgwKS0+bmV0d29ya19tYW5hZ2VyXy5DcmVhdGVNRG5zUmVzcG9uZGVyKCk7CisgIEdldEVu
ZHBvaW50KDApLT5uZXR3b3JrX21hbmFnZXJfLkNyZWF0ZU1kbnNSZXNwb25kZXIoKTsKICAgR2V0
RW5kcG9pbnQoMSktPmFzeW5jX3Jlc29sdmVyX2ZhY3RvcnlfID0gJm1vY2tfYXN5bmNfcmVzb2x2
ZXJfZmFjdG9yeTsKICAgQ3JlYXRlQ2hhbm5lbHMoKTsKICAgLy8gUGF1c2Ugc2VuZGluZyBjYW5k
aWRhdGVzIGZyb20gYm90aCBlbmRwb2ludHMgdW50aWwgd2UgZmluZCBvdXQgd2hhdCBwb3J0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9wYWNrZXRzb2NrZXRmYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wYWNrZXRzb2NrZXRmYWN0b3J5LmgKaW5kZXggNDY2N2Ji
MWZkNzAwMjhiOWUwNmQ0ZjY1NTc1NjMwNmI2MjM2M2VkNi4uYzkwM2RmMDZjOGE5OGRkNDU2NTNj
ZDRlMDNmYTRmMDUwYzFiZTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcGFja2V0c29ja2V0ZmFjdG9yeS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BhY2tldHNv
Y2tldGZhY3RvcnkuaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0
cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wcm94eWluZm8uaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9y
dGNfZXhwb3J0LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCkBAIC0zNiw3ICszNyw3IEBAIHN0cnVj
dCBQYWNrZXRTb2NrZXRUY3BPcHRpb25zIHsKIGNsYXNzIEFzeW5jUGFja2V0U29ja2V0OwogY2xh
c3MgQXN5bmNSZXNvbHZlckludGVyZmFjZTsKIAotY2xhc3MgUGFja2V0U29ja2V0RmFjdG9yeSB7
CitjbGFzcyBSVENfRVhQT1JUIFBhY2tldFNvY2tldEZhY3RvcnkgewogIHB1YmxpYzoKICAgZW51
bSBPcHRpb25zIHsKICAgICBPUFRfU1RVTiA9IDB4MDQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wYWNrZXR0cmFuc3BvcnRp
bnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuaAppbmRleCBjYTdmMDAzNjExNGRmODM2ZjFi
Y2NjNjhlMGM1ODU1OTg3YjMzNzFiLi43ZDUwZjljMGVlYTFkOTc3YmI4MDVhMmZiNjQ3OGRlZGRi
NTkxMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS9wYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BhY2tldHRyYW5zcG9ydGlu
dGVybmFsLmgKQEAgLTIxLDE1ICsyMSwxNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcGFj
a2V0c29ja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29ya3JvdXRlLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc29ja2V0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBv
cnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIK
IAogbmFtZXNwYWNlIHJ0YyB7CiBzdHJ1Y3QgUGFja2V0T3B0aW9uczsKLXN0cnVjdCBQYWNrZXRU
aW1lOwogc3RydWN0IFNlbnRQYWNrZXQ7CiAKLWNsYXNzIFBhY2tldFRyYW5zcG9ydEludGVybmFs
IDogcHVibGljIHZpcnR1YWwgd2VicnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcmZhY2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7
CitjbGFzcyBSVENfRVhQT1JUIFBhY2tldFRyYW5zcG9ydEludGVybmFsCisgICAgOiBwdWJsaWMg
dmlydHVhbCB3ZWJydGM6OlBhY2tldFRyYW5zcG9ydEludGVyZmFjZSwKKyAgICAgIHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgcHVibGljOgogICB2aXJ0dWFsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB0cmFuc3BvcnRfbmFtZSgpIGNvbnN0ID0gMDsKIApAQCAtODUsNyArODYsOSBAQCBjbGFz
cyBQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCA6IHB1YmxpYyB2aXJ0dWFsIHdlYnJ0Yzo6UGFja2V0
VHJhbnNwb3J0SW50ZXJmYWNlLAogICBzaWdzbG90OjpzaWduYWw1PFBhY2tldFRyYW5zcG9ydElu
dGVybmFsKiwKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiwKICAgICAgICAgICAgICAg
ICAgICBzaXplX3QsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiwK
KyAgICAgICAgICAgICAgICAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NTg0KTogQ2hhbmdl
IHRvIHBhc3NpbmcgdGhlIGludDY0X3QKKyAgICAgICAgICAgICAgICAgICAvLyB0aW1lc3RhbXAg
YnkgdmFsdWUuCisgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYsCiAgICAgICAgICAg
ICAgICAgICAgaW50PgogICAgICAgU2lnbmFsUmVhZFBhY2tldDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnQu
Y2MKaW5kZXggYWM3NTIxZTY2NzI3ZjZlOTQzNDgwN2Y2NTBjMWFlM2JkMmY2MzE3OS4uNWI4ZTAy
ZDI4ZmY4OTRkM2QzNzZlZmFiM2IwN2YwZjNiZWU0MGNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmNj
CkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC9t
ZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVk
ZSAicDJwL2Jhc2UvcG9ydGFsbG9jYXRvci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NyYzMyLmgiCkBAIC0yNyw3ICsyOCw2IEBACiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbmV0d29yay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVf
bWlubWF4LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9i
YXNlNjQvYmFzZTY0LmgiCiAKIG5hbWVzcGFjZSB7CkBAIC0xODMsNyArMTgzLDcgQEAgY29uc3Qg
Y2hhciogUHJvdG9Ub1N0cmluZyhQcm90b2NvbFR5cGUgcHJvdG8pIHsKIAogYm9vbCBTdHJpbmdU
b1Byb3RvKGNvbnN0IGNoYXIqIHZhbHVlLCBQcm90b2NvbFR5cGUqIHByb3RvKSB7CiAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDw9IFBST1RPX0xBU1Q7ICsraSkgewotICAgIGlmIChfc3RyaWNtcChQ
Uk9UT19OQU1FU1tpXSwgdmFsdWUpID09IDApIHsKKyAgICBpZiAoYWJzbDo6RXF1YWxzSWdub3Jl
Q2FzZShQUk9UT19OQU1FU1tpXSwgdmFsdWUpKSB7CiAgICAgICAqcHJvdG8gPSBzdGF0aWNfY2Fz
dDxQcm90b2NvbFR5cGU+KGkpOwogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzk5LDkg
KzM5OSw5IEBAIHZvaWQgUG9ydDo6QWRkQWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3Mm
IGFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZV9wcmVmZXJlbmNlLAogICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IHJlbGF5X3ByZWZlcmVuY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBmaW5hbCkgeworICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZmlu
YWwpIHsKICAgQWRkQWRkcmVzcyhhZGRyZXNzLCBiYXNlX2FkZHJlc3MsIHJlbGF0ZWRfYWRkcmVz
cywgcHJvdG9jb2wsIHJlbGF5X3Byb3RvY29sLAotICAgICAgICAgICAgIHRjcHR5cGUsIHR5cGUs
IHR5cGVfcHJlZmVyZW5jZSwgcmVsYXlfcHJlZmVyZW5jZSwgIiIsIGZpbmFsKTsKKyAgICAgICAg
ICAgICB0Y3B0eXBlLCB0eXBlLCB0eXBlX3ByZWZlcmVuY2UsIHJlbGF5X3ByZWZlcmVuY2UsICIi
LCBpc19maW5hbCk7CiB9CiAKIHZvaWQgUG9ydDo6QWRkQWRkcmVzcyhjb25zdCBydGM6OlNvY2tl
dEFkZHJlc3MmIGFkZHJlc3MsCkBAIC00MzAsNDQgKzQzMCw2MCBAQCB2b2lkIFBvcnQ6OkFkZEFk
ZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLAogICBjLnNldF9uZXR3b3Jr
X25hbWUobmV0d29ya18tPm5hbWUoKSk7CiAgIGMuc2V0X25ldHdvcmtfdHlwZShuZXR3b3JrXy0+
dHlwZSgpKTsKICAgYy5zZXRfdXJsKHVybCk7CisgIGMuc2V0X3JlbGF0ZWRfYWRkcmVzcyhyZWxh
dGVkX2FkZHJlc3MpOworCisgIGJvb2wgcGVuZGluZyA9IE1heWJlT2JmdXNjYXRlQWRkcmVzcygm
YywgdHlwZSwgaXNfZmluYWwpOworCisgIGlmICghcGVuZGluZykgeworICAgIEZpbmlzaEFkZGlu
Z0FkZHJlc3MoYywgaXNfZmluYWwpOworICB9Cit9CisKK2Jvb2wgUG9ydDo6TWF5YmVPYmZ1c2Nh
dGVBZGRyZXNzKENhbmRpZGF0ZSogYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc19maW5hbCkgewogICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85NzIzKTogVXNl
IGEgY29uZmlnIHRvIGNvbnRyb2wgdGhlIGZlYXR1cmUgb2YgSVAKICAgLy8gaGFuZGxpbmcgd2l0
aCBtRE5TLgotICBpZiAobmV0d29ya18tPkdldE1EbnNSZXNwb25kZXIoKSAhPSBudWxscHRyKSB7
Ci0gICAgLy8gT2JmdXNjYXRlIHRoZSBJUCBhZGRyZXNzIG9mIGEgaG9zdCBjYW5kaWRhdGVzIGJ5
IGFuIG1ETlMgaG9zdG5hbWUuCi0gICAgaWYgKHR5cGUgPT0gTE9DQUxfUE9SVF9UWVBFKSB7Ci0g
ICAgICBhdXRvIHdlYWtfcHRyID0gd2Vha19mYWN0b3J5Xy5HZXRXZWFrUHRyKCk7Ci0gICAgICBh
dXRvIGNhbGxiYWNrID0gW3dlYWtfcHRyLCBjLCBpc19maW5hbF0oY29uc3QgcnRjOjpJUEFkZHJl
c3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIG11dGFibGUgewotICAgICAgICBSVENfRENIRUNLKGMu
YWRkcmVzcygpLmlwYWRkcigpID09IGFkZHIpOwotICAgICAgICBydGM6OlNvY2tldEFkZHJlc3Mg
aG9zdG5hbWVfYWRkcmVzcyhuYW1lLCBjLmFkZHJlc3MoKS5wb3J0KCkpOwotICAgICAgICAvLyBJ
biBQb3J0IGFuZCBDb25uZWN0aW9uLCB3ZSBuZWVkIHRoZSBJUCBhZGRyZXNzIGluZm9ybWF0aW9u
IHRvCi0gICAgICAgIC8vIGNvcnJlY3RseSBoYW5kbGUgdGhlIHVwZGF0ZSBvZiBjYW5kaWRhdGUg
dHlwZSB0byBwcmZseC4gVGhlIHJlbW92YWwKLSAgICAgICAgLy8gb2YgSVAgYWRkcmVzcyB3aGVu
IHNpZ25hbGluZyB0aGlzIGNhbmRpZGF0ZSB3aWxsIHRha2UgcGxhY2UgaW4KLSAgICAgICAgLy8g
QmFzaWNQb3J0QWxsb2NhdG9yU2Vzc2lvbjo6T25DYW5kaWRhdGVSZWFkeSwgdmlhIFNhbml0aXpl
Q2FuZGlkYXRlLgotICAgICAgICBob3N0bmFtZV9hZGRyZXNzLlNldFJlc29sdmVkSVAoYWRkcik7
Ci0gICAgICAgIGMuc2V0X2FkZHJlc3MoaG9zdG5hbWVfYWRkcmVzcyk7Ci0gICAgICAgIFJUQ19E
Q0hFQ0soYy5yZWxhdGVkX2FkZHJlc3MoKSA9PSBydGM6OlNvY2tldEFkZHJlc3MoKSk7Ci0gICAg
ICAgIGlmICh3ZWFrX3B0ciAhPSBudWxscHRyKSB7Ci0gICAgICAgICAgd2Vha19wdHItPkZpbmlz
aEFkZGluZ0FkZHJlc3MoYywgaXNfZmluYWwpOwotICAgICAgICB9Ci0gICAgICB9OwotICAgICAg
bmV0d29ya18tPkdldE1EbnNSZXNwb25kZXIoKS0+Q3JlYXRlTmFtZUZvckFkZHJlc3MoYy5hZGRy
ZXNzKCkuaXBhZGRyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYWxsYmFjayk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIC8v
IEZvciBvdGhlciB0eXBlcyBvZiBjYW5kaWRhdGVzLCB0aGUgcmVsYXRlZCBhZGRyZXNzIHNob3Vs
ZCBiZSBzZXQgdG8KLSAgICAvLyAwLjAuMC4wIG9yIDo6MC4KLSAgICBjLnNldF9yZWxhdGVkX2Fk
ZHJlc3MocnRjOjpTb2NrZXRBZGRyZXNzKCkpOwotICB9IGVsc2UgewotICAgIGMuc2V0X3JlbGF0
ZWRfYWRkcmVzcyhyZWxhdGVkX2FkZHJlc3MpOworICBpZiAobmV0d29ya18tPkdldE1kbnNSZXNw
b25kZXIoKSA9PSBudWxscHRyKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmICh0eXBl
ICE9IExPQ0FMX1BPUlRfVFlQRSkgeworICAgIHJldHVybiBmYWxzZTsKICAgfQotICBGaW5pc2hB
ZGRpbmdBZGRyZXNzKGMsIGlzX2ZpbmFsKTsKKworICBhdXRvIGNvcHkgPSAqYzsKKyAgYXV0byB3
ZWFrX3B0ciA9IHdlYWtfZmFjdG9yeV8uR2V0V2Vha1B0cigpOworICBhdXRvIGNhbGxiYWNrID0g
W3dlYWtfcHRyLCBjb3B5LCBpc19maW5hbF0oY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgbmFtZSkgbXV0YWJsZSB7CisgICAgUlRDX0RDSEVDSyhjb3B5LmFkZHJlc3MoKS5pcGFk
ZHIoKSA9PSBhZGRyKTsKKyAgICBydGM6OlNvY2tldEFkZHJlc3MgaG9zdG5hbWVfYWRkcmVzcyhu
YW1lLCBjb3B5LmFkZHJlc3MoKS5wb3J0KCkpOworICAgIC8vIEluIFBvcnQgYW5kIENvbm5lY3Rp
b24sIHdlIG5lZWQgdGhlIElQIGFkZHJlc3MgaW5mb3JtYXRpb24gdG8KKyAgICAvLyBjb3JyZWN0
bHkgaGFuZGxlIHRoZSB1cGRhdGUgb2YgY2FuZGlkYXRlIHR5cGUgdG8gcHJmbHguIFRoZSByZW1v
dmFsCisgICAgLy8gb2YgSVAgYWRkcmVzcyB3aGVuIHNpZ25hbGluZyB0aGlzIGNhbmRpZGF0ZSB3
aWxsIHRha2UgcGxhY2UgaW4KKyAgICAvLyBCYXNpY1BvcnRBbGxvY2F0b3JTZXNzaW9uOjpPbkNh
bmRpZGF0ZVJlYWR5LCB2aWEgU2FuaXRpemVDYW5kaWRhdGUuCisgICAgaG9zdG5hbWVfYWRkcmVz
cy5TZXRSZXNvbHZlZElQKGFkZHIpOworICAgIGNvcHkuc2V0X2FkZHJlc3MoaG9zdG5hbWVfYWRk
cmVzcyk7CisgICAgY29weS5zZXRfcmVsYXRlZF9hZGRyZXNzKHJ0Yzo6U29ja2V0QWRkcmVzcygp
KTsKKyAgICBpZiAod2Vha19wdHIgIT0gbnVsbHB0cikgeworICAgICAgd2Vha19wdHItPnNldF9t
ZG5zX25hbWVfcmVnaXN0cmF0aW9uX3N0YXR1cygKKyAgICAgICAgICBNZG5zTmFtZVJlZ2lzdHJh
dGlvblN0YXR1czo6a0NvbXBsZXRlZCk7CisgICAgICB3ZWFrX3B0ci0+RmluaXNoQWRkaW5nQWRk
cmVzcyhjb3B5LCBpc19maW5hbCk7CisgICAgfQorICB9OworICBzZXRfbWRuc19uYW1lX3JlZ2lz
dHJhdGlvbl9zdGF0dXMoTWRuc05hbWVSZWdpc3RyYXRpb25TdGF0dXM6OmtJblByb2dyZXNzKTsK
KyAgbmV0d29ya18tPkdldE1kbnNSZXNwb25kZXIoKS0+Q3JlYXRlTmFtZUZvckFkZHJlc3MoY29w
eS5hZGRyZXNzKCkuaXBhZGRyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKTsKKyAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQg
UG9ydDo6RmluaXNoQWRkaW5nQWRkcmVzcyhjb25zdCBDYW5kaWRhdGUmIGMsIGJvb2wgaXNfZmlu
YWwpIHsKICAgY2FuZGlkYXRlc18ucHVzaF9iYWNrKGMpOwogICBTaWduYWxDYW5kaWRhdGVSZWFk
eSh0aGlzLCBjKTsKIAorICBQb3N0QWRkQWRkcmVzcyhpc19maW5hbCk7Cit9CisKK3ZvaWQgUG9y
dDo6UG9zdEFkZEFkZHJlc3MoYm9vbCBpc19maW5hbCkgewogICBpZiAoaXNfZmluYWwpIHsKICAg
ICBTaWduYWxQb3J0Q29tcGxldGUodGhpcyk7CiAgIH0KQEAgLTc3Myw3ICs3ODksNyBAQCBib29s
IFBvcnQ6OkhhbmRsZUluY29taW5nUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYg
cGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBw
YWNrZXRfdGltZV91cykgewogICBSVENfTk9UUkVBQ0hFRCgpOwogICByZXR1cm4gZmFsc2U7CiB9
CkBAIC0xMjM2LDcgKzEyNTIsNyBAQCB2b2lkIENvbm5lY3Rpb246Ok9uU2VuZFN0dW5QYWNrZXQo
Y29uc3Qgdm9pZCogZGF0YSwKIAogdm9pZCBDb25uZWN0aW9uOjpPblJlYWRQYWNrZXQoY29uc3Qg
Y2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNr
ZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRf
dGltZV91cykgewogICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gbXNnOwogICBzdGQ6OnN0
cmluZyByZW1vdGVfdWZyYWc7CiAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcihyZW1v
dGVfY2FuZGlkYXRlXy5hZGRyZXNzKCkpOwpAQCAtMTI0Niw3ICsxMjYyLDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpPblJlYWRQYWNrZXQoY29uc3QgY2hhciogZGF0YSwKICAgICBsYXN0X2RhdGFfcmVj
ZWl2ZWRfID0gcnRjOjpUaW1lTWlsbGlzKCk7CiAgICAgVXBkYXRlUmVjZWl2aW5nKGxhc3RfZGF0
YV9yZWNlaXZlZF8pOwogICAgIHJlY3ZfcmF0ZV90cmFja2VyXy5BZGRTYW1wbGVzKHNpemUpOwot
ICAgIFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWUpOworICAg
IFNpZ25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWVfdXMpOwogCiAg
ICAgLy8gSWYgdGltZWQgb3V0IHNlbmRpbmcgd3JpdGFiaWxpdHkgY2hlY2tzLCBzdGFydCB1cCBh
Z2FpbgogICAgIGlmICghcHJ1bmVkXyAmJiAod3JpdGVfc3RhdGVfID09IFNUQVRFX1dSSVRFX1RJ
TUVPVVQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmgKaW5kZXggODU3MTFlNDFmNTZmOTM4OTJlNDNkNzMz
YjlhNWNiMzA0OGNkYTk2Ny4uOWE4ZjkyYTk2ZTQ1ZmQ5YTM5ZThjZjhkYjRiNTNjNTM1NmU2NDBi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3BvcnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgInJ0Y19i
YXNlL3Byb3h5aW5mby5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3JhdGV0cmFja2VyLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3Rl
bS9ydGNfZXhwb3J0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9z
aWdzbG90LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2Uvd2Vha19wdHIuaCIKQEAgLTQ5LDcgKzUwLDcgQEAgY2xhc3MgQ29ubmVjdGlvblJlcXVlc3Q7
CiBleHRlcm4gY29uc3QgY2hhciBMT0NBTF9QT1JUX1RZUEVbXTsKIGV4dGVybiBjb25zdCBjaGFy
IFNUVU5fUE9SVF9UWVBFW107CiBleHRlcm4gY29uc3QgY2hhciBQUkZMWF9QT1JUX1RZUEVbXTsK
LWV4dGVybiBjb25zdCBjaGFyIFJFTEFZX1BPUlRfVFlQRVtdOworUlRDX0VYUE9SVCBleHRlcm4g
Y29uc3QgY2hhciBSRUxBWV9QT1JUX1RZUEVbXTsKIAogLy8gUkZDIDY1NDQsIFRDUCBjYW5kaWRh
dGUgZW5jb2RpbmcgcnVsZXMuCiBleHRlcm4gY29uc3QgaW50IERJU0NBUkRfUE9SVDsKQEAgLTgz
LDYgKzg0LDE4IEBAIGVudW0gY2xhc3MgSWNlQ2FuZGlkYXRlUGFpclN0YXRlIHsKICAgLy8gZnJv
emVuIGJlY2F1c2Ugd2UgaGF2ZSBub3QgaW1wbGVtZW50ZWQgSUNFIGZyZWV6aW5nIGxvZ2ljLgog
fTsKIAorZW51bSBjbGFzcyBNZG5zTmFtZVJlZ2lzdHJhdGlvblN0YXR1cyB7CisgIC8vIElQIGNv
bmNlYWxtZW50IHdpdGggbUROUyBpcyBub3QgZW5hYmxlZCBvciB0aGUgbmFtZSByZWdpc3RyYXRp
b24gcHJvY2VzcyBpcworICAvLyBub3Qgc3RhcnRlZCB5ZXQuCisgIGtOb3RTdGFydGVkLAorICAv
LyBBIHJlcXVlc3QgdG8gY3JlYXRlIGFuZCByZWdpc3RlciBhbiBtRE5TIG5hbWUgZm9yIGEgbG9j
YWwgSVAgYWRkcmVzcyBvZiBhCisgIC8vIGhvc3QgY2FuZGlkYXRlIGlzIHNlbnQgdG8gdGhlIG1E
TlMgcmVzcG9uZGVyLgorICBrSW5Qcm9ncmVzcywKKyAgLy8gVGhlIG5hbWUgcmVnaXN0cmF0aW9u
IGlzIGNvbXBsZXRlIGFuZCB0aGUgY3JlYXRlZCBuYW1lIGlzIHJldHVybmVkIGJ5IHRoZQorICAv
LyBtRE5TIHJlc3BvbmRlci4KKyAga0NvbXBsZXRlZCwKK307CisKIC8vIFN0YXRzIHRoYXQgd2Ug
Y2FuIHJldHVybiBhYm91dCB0aGUgcG9ydCBvZiBhIFNUVU4gY2FuZGlkYXRlLgogY2xhc3MgU3R1
blN0YXRzIHsKICBwdWJsaWM6CkBAIC0zMDUsNyArMzE4LDcgQEAgY2xhc3MgUG9ydCA6IHB1Ymxp
YyBQb3J0SW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpT
b2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAKICAgLy8g
U2hhbGwgdGhlIHBvcnQgaGFuZGxlIHBhY2tldCBmcm9tIHRoaXMgfHJlbW90ZV9hZGRyfC4KICAg
Ly8gVGhpcyBtZXRob2QgaXMgb3ZlcnJpZGRlbiBieSBUdXJuUG9ydC4KQEAgLTM5Miw3ICs0MDUs
NyBAQCBjbGFzcyBQb3J0IDogcHVibGljIFBvcnRJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgdHlwZSwKICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5
cGVfcHJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJlbGF5X3ByZWZlcmVu
Y2UsCi0gICAgICAgICAgICAgICAgICBib29sIGZpbmFsKTsKKyAgICAgICAgICAgICAgICAgIGJv
b2wgaXNfZmluYWwpOwogCiAgIHZvaWQgQWRkQWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJl
c3MmIGFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3Mm
IGJhc2VfYWRkcmVzcywKQEAgLTQwOCw2ICs0MjEsOCBAQCBjbGFzcyBQb3J0IDogcHVibGljIFBv
cnRJbnRlcmZhY2UsCiAKICAgdm9pZCBGaW5pc2hBZGRpbmdBZGRyZXNzKGNvbnN0IENhbmRpZGF0
ZSYgYywgYm9vbCBpc19maW5hbCk7CiAKKyAgdmlydHVhbCB2b2lkIFBvc3RBZGRBZGRyZXNzKGJv
b2wgaXNfZmluYWwpOworCiAgIC8vIEFkZHMgdGhlIGdpdmVuIGNvbm5lY3Rpb24gdG8gdGhlIG1h
cCBrZXllZCBieSB0aGUgcmVtb3RlIGNhbmRpZGF0ZSBhZGRyZXNzLgogICAvLyBJZiBhbiBleGlz
dGluZyBjb25uZWN0aW9uIGhhcyB0aGUgc2FtZSBhZGRyZXNzLCB0aGUgZXhpc3Rpbmcgb25lIHdp
bGwgYmUKICAgLy8gcmVwbGFjZWQgYW5kIGRlc3Ryb3llZC4KQEAgLTQ0Myw2ICs0NTgsMTMgQEAg
Y2xhc3MgUG9ydCA6IHB1YmxpYyBQb3J0SW50ZXJmYWNlLAogCiAgIHZvaWQgQ29weVBvcnRJbmZv
cm1hdGlvblRvUGFja2V0SW5mbyhydGM6OlBhY2tldEluZm8qIGluZm8pIGNvbnN0OwogCisgIE1k
bnNOYW1lUmVnaXN0cmF0aW9uU3RhdHVzIG1kbnNfbmFtZV9yZWdpc3RyYXRpb25fc3RhdHVzKCkg
Y29uc3QgeworICAgIHJldHVybiBtZG5zX25hbWVfcmVnaXN0cmF0aW9uX3N0YXR1c187CisgIH0K
KyAgdm9pZCBzZXRfbWRuc19uYW1lX3JlZ2lzdHJhdGlvbl9zdGF0dXMoTWRuc05hbWVSZWdpc3Ry
YXRpb25TdGF0dXMgc3RhdHVzKSB7CisgICAgbWRuc19uYW1lX3JlZ2lzdHJhdGlvbl9zdGF0dXNf
ID0gc3RhdHVzOworICB9CisKICBwcml2YXRlOgogICB2b2lkIENvbnN0cnVjdCgpOwogICAvLyBD
YWxsZWQgd2hlbiBvbmUgb2Ygb3VyIGNvbm5lY3Rpb25zIGRlbGV0ZXMgaXRzZWxmLgpAQCAtNDg3
LDkgKzUwOSwxNSBAQCBjbGFzcyBQb3J0IDogcHVibGljIFBvcnRJbnRlcmZhY2UsCiAgIGludDE2
X3QgbmV0d29ya19jb3N0XzsKICAgU3RhdGUgc3RhdGVfID0gU3RhdGU6OklOSVQ7CiAgIGludDY0
X3QgbGFzdF90aW1lX2FsbF9jb25uZWN0aW9uc19yZW1vdmVkXyA9IDA7CisgIE1kbnNOYW1lUmVn
aXN0cmF0aW9uU3RhdHVzIG1kbnNfbmFtZV9yZWdpc3RyYXRpb25fc3RhdHVzXyA9CisgICAgICBN
ZG5zTmFtZVJlZ2lzdHJhdGlvblN0YXR1czo6a05vdFN0YXJ0ZWQ7CiAKICAgcnRjOjpXZWFrUHRy
RmFjdG9yeTxQb3J0PiB3ZWFrX2ZhY3RvcnlfOwogCisgIGJvb2wgTWF5YmVPYmZ1c2NhdGVBZGRy
ZXNzKENhbmRpZGF0ZSogYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZmlu
YWwpOworCiAgIGZyaWVuZCBjbGFzcyBDb25uZWN0aW9uOwogfTsKIApAQCAtNTc4LDE1ICs2MDYs
MTIgQEAgY2xhc3MgQ29ubmVjdGlvbiA6IHB1YmxpYyBDYW5kaWRhdGVQYWlySW50ZXJmYWNlLAog
ICAvLyBFcnJvciBpZiBTZW5kKCkgcmV0dXJucyA8IDAKICAgdmlydHVhbCBpbnQgR2V0RXJyb3Io
KSA9IDA7CiAKLSAgc2lnc2xvdDo6c2lnbmFsNDxDb25uZWN0aW9uKiwgY29uc3QgY2hhciosIHNp
emVfdCwgY29uc3QgcnRjOjpQYWNrZXRUaW1lJj4KLSAgICAgIFNpZ25hbFJlYWRQYWNrZXQ7Cisg
IHNpZ3Nsb3Q6OnNpZ25hbDQ8Q29ubmVjdGlvbiosIGNvbnN0IGNoYXIqLCBzaXplX3QsIGludDY0
X3Q+IFNpZ25hbFJlYWRQYWNrZXQ7CiAKICAgc2lnc2xvdDo6c2lnbmFsMTxDb25uZWN0aW9uKj4g
U2lnbmFsUmVhZHlUb1NlbmQ7CiAKICAgLy8gQ2FsbGVkIHdoZW4gYSBwYWNrZXQgaXMgcmVjZWl2
ZWQgb24gdGhpcyBjb25uZWN0aW9uLgotICB2b2lkIE9uUmVhZFBhY2tldChjb25zdCBjaGFyKiBk
YXRhLAotICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgIHZvaWQgT25SZWFkUGFj
a2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplLCBpbnQ2NF90IHBhY2tldF90aW1lX3Vz
KTsKIAogICAvLyBDYWxsZWQgd2hlbiB0aGUgc29ja2V0IGlzIGN1cnJlbnRseSBhYmxlIHRvIHNl
bmQuCiAgIHZvaWQgT25SZWFkeVRvU2VuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydF91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRfdW5p
dHRlc3QuY2MKaW5kZXggNTAyODAzMDFkNGNlMThmZmJmN2IxZWI1N2IwYjhmZDNhZDU1YjcxMi4u
NzE5Mjk0MjNjYjYyMDA0OGUwZTMyMTgzMzYyYjY2MjE2ZDk5NDI3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydF91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9wb3J0X3VuaXR0ZXN0LmNjCkBAIC05MSwxOCArOTEsMTggQEAgU29ja2V0QWRkcmVz
cyBHZXRBZGRyZXNzKFBvcnQqIHBvcnQpIHsKICAgcmV0dXJuIEdldENhbmRpZGF0ZShwb3J0KS5h
ZGRyZXNzKCk7CiB9CiAKLUljZU1lc3NhZ2UqIENvcHlTdHVuTWVzc2FnZShjb25zdCBJY2VNZXNz
YWdlKiBzcmMpIHsKLSAgSWNlTWVzc2FnZSogZHN0ID0gbmV3IEljZU1lc3NhZ2UoKTsKK3N0ZDo6
dW5pcXVlX3B0cjxJY2VNZXNzYWdlPiBDb3B5U3R1bk1lc3NhZ2UoY29uc3QgSWNlTWVzc2FnZSYg
c3JjKSB7CisgIGF1dG8gZHN0ID0gYWJzbDo6bWFrZV91bmlxdWU8SWNlTWVzc2FnZT4oKTsKICAg
Qnl0ZUJ1ZmZlcldyaXRlciBidWY7Ci0gIHNyYy0+V3JpdGUoJmJ1Zik7CisgIHNyYy5Xcml0ZSgm
YnVmKTsKICAgQnl0ZUJ1ZmZlclJlYWRlciByZWFkX2J1ZihidWYpOwogICBkc3QtPlJlYWQoJnJl
YWRfYnVmKTsKICAgcmV0dXJuIGRzdDsKIH0KIAotYm9vbCBXcml0ZVN0dW5NZXNzYWdlKGNvbnN0
IFN0dW5NZXNzYWdlKiBtc2csIEJ5dGVCdWZmZXJXcml0ZXIqIGJ1ZikgeworYm9vbCBXcml0ZVN0
dW5NZXNzYWdlKGNvbnN0IFN0dW5NZXNzYWdlJiBtc2csIEJ5dGVCdWZmZXJXcml0ZXIqIGJ1Zikg
ewogICBidWYtPlJlc2l6ZSgwKTsgIC8vIGNsZWFyIG91dCBhbnkgZXhpc3RpbmcgYnVmZmVyIGNv
bnRlbnRzCi0gIHJldHVybiBtc2ctPldyaXRlKGJ1Zik7CisgIHJldHVybiBtc2cuV3JpdGUoYnVm
KTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCkBAIC0xODksMTcgKzE4OSwxNSBAQCBjbGFzcyBUZXN0
UG9ydCA6IHB1YmxpYyBQb3J0IHsKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFj
a2V0T3B0aW9ucyYgb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcGF5bG9hZCkg
ewogICAgIGlmICghcGF5bG9hZCkgewotICAgICAgSWNlTWVzc2FnZSogbXNnID0gbmV3IEljZU1l
c3NhZ2U7Ci0gICAgICBhdXRvKiBidWYgPQotICAgICAgICAgIG5ldyBydGM6OkJ1ZmZlclQ8dWlu
dDhfdD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKKyAgICAgIGF1dG8g
bXNnID0gYWJzbDo6bWFrZV91bmlxdWU8SWNlTWVzc2FnZT4oKTsKKyAgICAgIGF1dG8gYnVmID0g
YWJzbDo6bWFrZV91bmlxdWU8cnRjOjpCdWZmZXJUPHVpbnQ4X3Q+PigKKyAgICAgICAgICBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwogICAgICAgQnl0ZUJ1ZmZlclJlYWRl
ciByZWFkX2J1ZigqYnVmKTsKICAgICAgIGlmICghbXNnLT5SZWFkKCZyZWFkX2J1ZikpIHsKLSAg
ICAgICAgZGVsZXRlIG1zZzsKLSAgICAgICAgZGVsZXRlIGJ1ZjsKICAgICAgICAgcmV0dXJuIC0x
OwogICAgICAgfQotICAgICAgbGFzdF9zdHVuX2J1Zl8ucmVzZXQoYnVmKTsKLSAgICAgIGxhc3Rf
c3R1bl9tc2dfLnJlc2V0KG1zZyk7CisgICAgICBsYXN0X3N0dW5fYnVmXyA9IHN0ZDo6bW92ZShi
dWYpOworICAgICAgbGFzdF9zdHVuX21zZ18gPSBzdGQ6Om1vdmUobXNnKTsKICAgICB9CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oc2l6ZSk7CiAgIH0KQEAgLTIzNCwyNCArMjMyLDE4IEBA
IHN0YXRpYyB2b2lkIFNlbmRQaW5nQW5kUmVjZWl2ZVJlc3BvbnNlKENvbm5lY3Rpb24qIGxjb25u
LAogICBBU1NFUlRfVFJVRV9XQUlUKGxwb3J0LT5sYXN0X3N0dW5fbXNnKCksIGtEZWZhdWx0VGlt
ZW91dCk7CiAgIEFTU0VSVF9UUlVFKGxwb3J0LT5sYXN0X3N0dW5fYnVmKCkpOwogICByY29ubi0+
T25SZWFkUGFja2V0KGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAgICAg
ICAgICAgICAgICAgICAgICBscG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6UGFj
a2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICBscG9ydC0+bGFzdF9zdHVuX2J1Zigp
LT5zaXplKCksIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgY2xvY2stPkFkdmFuY2VUaW1l
KHdlYnJ0Yzo6VGltZURlbHRhOjptcyhtcykpOwogICBBU1NFUlRfVFJVRV9XQUlUKHJwb3J0LT5s
YXN0X3N0dW5fbXNnKCksIGtEZWZhdWx0VGltZW91dCk7CiAgIEFTU0VSVF9UUlVFKHJwb3J0LT5s
YXN0X3N0dW5fYnVmKCkpOwogICBsY29ubi0+T25SZWFkUGFja2V0KHJwb3J0LT5sYXN0X3N0dW5f
YnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFzdF9z
dHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICBycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3VzICov
IC0xKTsKIH0KIAogY2xhc3MgVGVzdENoYW5uZWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3Rz
PD4gewogIHB1YmxpYzoKICAgLy8gVGFrZXMgb3duZXJzaGlwIG9mIHxwMXwgKGJ1dCBub3QgfHAy
fCkuCi0gIGV4cGxpY2l0IFRlc3RDaGFubmVsKFBvcnQqIHAxKQotICAgICAgOiBpY2VfbW9kZV8o
SUNFTU9ERV9GVUxMKSwKLSAgICAgICAgcG9ydF8ocDEpLAotICAgICAgICBjb21wbGV0ZV9jb3Vu
dF8oMCksCi0gICAgICAgIGNvbm5fKE5VTEwpLAotICAgICAgICByZW1vdGVfcmVxdWVzdF8oKSwK
LSAgICAgICAgbm9taW5hdGVkXyhmYWxzZSkgeworICBleHBsaWNpdCBUZXN0Q2hhbm5lbChzdGQ6
OnVuaXF1ZV9wdHI8UG9ydD4gcDEpIDogcG9ydF8oc3RkOjptb3ZlKHAxKSkgewogICAgIHBvcnRf
LT5TaWduYWxQb3J0Q29tcGxldGUuY29ubmVjdCh0aGlzLCAmVGVzdENoYW5uZWw6Ok9uUG9ydENv
bXBsZXRlKTsKICAgICBwb3J0Xy0+U2lnbmFsVW5rbm93bkFkZHJlc3MuY29ubmVjdCh0aGlzLCAm
VGVzdENoYW5uZWw6Ok9uVW5rbm93bkFkZHJlc3MpOwogICAgIHBvcnRfLT5TaWduYWxEZXN0cm95
ZWQuY29ubmVjdCh0aGlzLCAmVGVzdENoYW5uZWw6Ok9uU3JjUG9ydERlc3Ryb3llZCk7CkBAIC0z
MjcsNyArMzE5LDcgQEAgY2xhc3MgVGVzdENoYW5uZWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Ns
b3RzPD4gewogICAgIEVYUEVDVF9UUlVFKG1pX2F0dHIgIT0gTlVMTCk7CiAgICAgRVhQRUNUX1RS
VUUoZmluZ2VycHJpbnRfYXR0ciAhPSBOVUxMKTsKICAgICByZW1vdGVfYWRkcmVzc18gPSBhZGRy
OwotICAgIHJlbW90ZV9yZXF1ZXN0Xy5yZXNldChDb3B5U3R1bk1lc3NhZ2UobXNnKSk7CisgICAg
cmVtb3RlX3JlcXVlc3RfID0gQ29weVN0dW5NZXNzYWdlKCptc2cpOwogICAgIHJlbW90ZV9mcmFn
XyA9IHJmOwogICB9CiAKQEAgLTM2MiwxNSArMzU0LDE1IEBAIGNsYXNzIFRlc3RDaGFubmVsIDog
cHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICBjb25uZWN0aW9uX3JlYWR5X3RvX3Nl
bmRfID0gdHJ1ZTsKICAgfQogCi0gIEljZU1vZGUgaWNlX21vZGVfOworICBJY2VNb2RlIGljZV9t
b2RlXyA9IElDRU1PREVfRlVMTDsKICAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IHBvcnRfOwogCi0g
IGludCBjb21wbGV0ZV9jb3VudF87Ci0gIENvbm5lY3Rpb24qIGNvbm5fOworICBpbnQgY29tcGxl
dGVfY291bnRfID0gMDsKKyAgQ29ubmVjdGlvbiogY29ubl8gPSBudWxscHRyOwogICBTb2NrZXRB
ZGRyZXNzIHJlbW90ZV9hZGRyZXNzXzsKICAgc3RkOjp1bmlxdWVfcHRyPFN0dW5NZXNzYWdlPiBy
ZW1vdGVfcmVxdWVzdF87CiAgIHN0ZDo6c3RyaW5nIHJlbW90ZV9mcmFnXzsKLSAgYm9vbCBub21p
bmF0ZWRfOworICBib29sIG5vbWluYXRlZF8gPSBmYWxzZTsKICAgYm9vbCBjb25uZWN0aW9uX3Jl
YWR5X3RvX3NlbmRfID0gZmFsc2U7CiB9OwogCkBAIC00MDAsODIgKzM5Miw4NSBAQCBjbGFzcyBQ
b3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3Rz
PD4gewogCiAgcHJvdGVjdGVkOgogICB2b2lkIFRlc3RMb2NhbFRvTG9jYWwoKSB7Ci0gICAgUG9y
dCogcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKKyAgICBhdXRvIHBvcnQxID0g
Q3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tl
dDo6SUNFUk9MRV9DT05UUk9MTElORyk7Ci0gICAgUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0
KGtMb2NhbEFkZHIyKTsKKyAgICBhdXRvIHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRy
Mik7CiAgICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsK
LSAgICBUZXN0Q29ubmVjdGl2aXR5KCJ1ZHAiLCBwb3J0MSwgInVkcCIsIHBvcnQyLCB0cnVlLCB0
cnVlLCB0cnVlLCB0cnVlKTsKKyAgICBUZXN0Q29ubmVjdGl2aXR5KCJ1ZHAiLCBzdGQ6Om1vdmUo
cG9ydDEpLCAidWRwIiwgc3RkOjptb3ZlKHBvcnQyKSwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgIHRydWUsIHRydWUsIHRydWUpOwogICB9CiAgIHZvaWQgVGVzdExvY2FsVG9TdHVuKE5BVFR5
cGUgbnR5cGUpIHsKLSAgICBQb3J0KiBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEp
OworICAgIGF1dG8gcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKICAgICBwb3J0
MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKLSAgICBuYXRfc2Vy
dmVyMl8ucmVzZXQoQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMiwgbnR5cGUpKTsKLSAgICBQb3J0
KiBwb3J0MiA9IENyZWF0ZVN0dW5Qb3J0KGtMb2NhbEFkZHIyLCAmbmF0X3NvY2tldF9mYWN0b3J5
Ml8pOworICAgIG5hdF9zZXJ2ZXIyXyA9IENyZWF0ZU5hdFNlcnZlcihrTmF0QWRkcjIsIG50eXBl
KTsKKyAgICBhdXRvIHBvcnQyID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjIsICZuYXRfc29j
a2V0X2ZhY3RvcnkyXyk7CiAgICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9D
T05UUk9MTEVEKTsKLSAgICBUZXN0Q29ubmVjdGl2aXR5KCJ1ZHAiLCBwb3J0MSwgU3R1bk5hbWUo
bnR5cGUpLCBwb3J0MiwKKyAgICBUZXN0Q29ubmVjdGl2aXR5KCJ1ZHAiLCBzdGQ6Om1vdmUocG9y
dDEpLCBTdHVuTmFtZShudHlwZSksIHN0ZDo6bW92ZShwb3J0MiksCiAgICAgICAgICAgICAgICAg
ICAgICBudHlwZSA9PSBOQVRfT1BFTl9DT05FLCB0cnVlLCBudHlwZSAhPSBOQVRfU1lNTUVUUklD
LAogICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgIH0KICAgdm9pZCBUZXN0TG9jYWxUb1Jl
bGF5KFJlbGF5VHlwZSBydHlwZSwgUHJvdG9jb2xUeXBlIHByb3RvKSB7Ci0gICAgUG9ydCogcG9y
dDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRl
VWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNF
Uk9MRV9DT05UUk9MTElORyk7Ci0gICAgUG9ydCogcG9ydDIgPSBDcmVhdGVSZWxheVBvcnQoa0xv
Y2FsQWRkcjIsIHJ0eXBlLCBwcm90bywgUFJPVE9fVURQKTsKKyAgICBhdXRvIHBvcnQyID0gQ3Jl
YXRlUmVsYXlQb3J0KGtMb2NhbEFkZHIyLCBydHlwZSwgcHJvdG8sIFBST1RPX1VEUCk7CiAgICAg
cG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKLSAgICBUZXN0
Q29ubmVjdGl2aXR5KCJ1ZHAiLCBwb3J0MSwgUmVsYXlOYW1lKHJ0eXBlLCBwcm90byksIHBvcnQy
LAotICAgICAgICAgICAgICAgICAgICAgcnR5cGUgPT0gUkVMQVlfR1RVUk4sIHRydWUsIHRydWUs
IHRydWUpOworICAgIFRlc3RDb25uZWN0aXZpdHkoInVkcCIsIHN0ZDo6bW92ZShwb3J0MSksIFJl
bGF5TmFtZShydHlwZSwgcHJvdG8pLAorICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHBv
cnQyKSwgcnR5cGUgPT0gUkVMQVlfR1RVUk4sIHRydWUsIHRydWUsIHRydWUpOwogICB9CiAgIHZv
aWQgVGVzdFN0dW5Ub0xvY2FsKE5BVFR5cGUgbnR5cGUpIHsKLSAgICBuYXRfc2VydmVyMV8ucmVz
ZXQoQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMSwgbnR5cGUpKTsKLSAgICBQb3J0KiBwb3J0MSA9
IENyZWF0ZVN0dW5Qb3J0KGtMb2NhbEFkZHIxLCAmbmF0X3NvY2tldF9mYWN0b3J5MV8pOworICAg
IG5hdF9zZXJ2ZXIxXyA9IENyZWF0ZU5hdFNlcnZlcihrTmF0QWRkcjEsIG50eXBlKTsKKyAgICBh
dXRvIHBvcnQxID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsICZuYXRfc29ja2V0X2ZhY3Rv
cnkxXyk7CiAgICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElO
Ryk7Ci0gICAgUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKKyAgICBh
dXRvIHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMik7CiAgICAgcG9ydDItPlNldElj
ZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKLSAgICBUZXN0Q29ubmVjdGl2aXR5
KFN0dW5OYW1lKG50eXBlKSwgcG9ydDEsICJ1ZHAiLCBwb3J0MiwgdHJ1ZSwKLSAgICAgICAgICAg
ICAgICAgICAgIG50eXBlICE9IE5BVF9TWU1NRVRSSUMsIHRydWUsIHRydWUpOworICAgIFRlc3RD
b25uZWN0aXZpdHkoU3R1bk5hbWUobnR5cGUpLCBzdGQ6Om1vdmUocG9ydDEpLCAidWRwIiwgc3Rk
Ojptb3ZlKHBvcnQyKSwKKyAgICAgICAgICAgICAgICAgICAgIHRydWUsIG50eXBlICE9IE5BVF9T
WU1NRVRSSUMsIHRydWUsIHRydWUpOwogICB9CiAgIHZvaWQgVGVzdFN0dW5Ub1N0dW4oTkFUVHlw
ZSBudHlwZTEsIE5BVFR5cGUgbnR5cGUyKSB7Ci0gICAgbmF0X3NlcnZlcjFfLnJlc2V0KENyZWF0
ZU5hdFNlcnZlcihrTmF0QWRkcjEsIG50eXBlMSkpOwotICAgIFBvcnQqIHBvcnQxID0gQ3JlYXRl
U3R1blBvcnQoa0xvY2FsQWRkcjEsICZuYXRfc29ja2V0X2ZhY3RvcnkxXyk7CisgICAgbmF0X3Nl
cnZlcjFfID0gQ3JlYXRlTmF0U2VydmVyKGtOYXRBZGRyMSwgbnR5cGUxKTsKKyAgICBhdXRvIHBv
cnQxID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsICZuYXRfc29ja2V0X2ZhY3RvcnkxXyk7
CiAgICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7Ci0g
ICAgbmF0X3NlcnZlcjJfLnJlc2V0KENyZWF0ZU5hdFNlcnZlcihrTmF0QWRkcjIsIG50eXBlMikp
OwotICAgIFBvcnQqIHBvcnQyID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjIsICZuYXRfc29j
a2V0X2ZhY3RvcnkyXyk7CisgICAgbmF0X3NlcnZlcjJfID0gQ3JlYXRlTmF0U2VydmVyKGtOYXRB
ZGRyMiwgbnR5cGUyKTsKKyAgICBhdXRvIHBvcnQyID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRk
cjIsICZuYXRfc29ja2V0X2ZhY3RvcnkyXyk7CiAgICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tl
dDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKLSAgICBUZXN0Q29ubmVjdGl2aXR5KFN0dW5OYW1lKG50
eXBlMSksIHBvcnQxLCBTdHVuTmFtZShudHlwZTIpLCBwb3J0MiwKLSAgICAgICAgICAgICAgICAg
ICAgIG50eXBlMiA9PSBOQVRfT1BFTl9DT05FLCBudHlwZTEgIT0gTkFUX1NZTU1FVFJJQywKLSAg
ICAgICAgICAgICAgICAgICAgIG50eXBlMiAhPSBOQVRfU1lNTUVUUklDLAorICAgIFRlc3RDb25u
ZWN0aXZpdHkoU3R1bk5hbWUobnR5cGUxKSwgc3RkOjptb3ZlKHBvcnQxKSwgU3R1bk5hbWUobnR5
cGUyKSwKKyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShwb3J0MiksIG50eXBlMiA9PSBO
QVRfT1BFTl9DT05FLAorICAgICAgICAgICAgICAgICAgICAgbnR5cGUxICE9IE5BVF9TWU1NRVRS
SUMsIG50eXBlMiAhPSBOQVRfU1lNTUVUUklDLAogICAgICAgICAgICAgICAgICAgICAgbnR5cGUx
ICsgbnR5cGUyIDwgKE5BVF9QT1JUX1JFU1RSSUNURUQgKyBOQVRfU1lNTUVUUklDKSk7CiAgIH0K
ICAgdm9pZCBUZXN0U3R1blRvUmVsYXkoTkFUVHlwZSBudHlwZSwgUmVsYXlUeXBlIHJ0eXBlLCBQ
cm90b2NvbFR5cGUgcHJvdG8pIHsKLSAgICBuYXRfc2VydmVyMV8ucmVzZXQoQ3JlYXRlTmF0U2Vy
dmVyKGtOYXRBZGRyMSwgbnR5cGUpKTsKLSAgICBQb3J0KiBwb3J0MSA9IENyZWF0ZVN0dW5Qb3J0
KGtMb2NhbEFkZHIxLCAmbmF0X3NvY2tldF9mYWN0b3J5MV8pOworICAgIG5hdF9zZXJ2ZXIxXyA9
IENyZWF0ZU5hdFNlcnZlcihrTmF0QWRkcjEsIG50eXBlKTsKKyAgICBhdXRvIHBvcnQxID0gQ3Jl
YXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsICZuYXRfc29ja2V0X2ZhY3RvcnkxXyk7CiAgICAgcG9y
dDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7Ci0gICAgUG9ydCog
cG9ydDIgPSBDcmVhdGVSZWxheVBvcnQoa0xvY2FsQWRkcjIsIHJ0eXBlLCBwcm90bywgUFJPVE9f
VURQKTsKKyAgICBhdXRvIHBvcnQyID0gQ3JlYXRlUmVsYXlQb3J0KGtMb2NhbEFkZHIyLCBydHlw
ZSwgcHJvdG8sIFBST1RPX1VEUCk7CiAgICAgcG9ydDItPlNldEljZVJvbGUoY3JpY2tldDo6SUNF
Uk9MRV9DT05UUk9MTEVEKTsKLSAgICBUZXN0Q29ubmVjdGl2aXR5KFN0dW5OYW1lKG50eXBlKSwg
cG9ydDEsIFJlbGF5TmFtZShydHlwZSwgcHJvdG8pLCBwb3J0MiwKLSAgICAgICAgICAgICAgICAg
ICAgIHJ0eXBlID09IFJFTEFZX0dUVVJOLCBudHlwZSAhPSBOQVRfU1lNTUVUUklDLCB0cnVlLCB0
cnVlKTsKKyAgICBUZXN0Q29ubmVjdGl2aXR5KFN0dW5OYW1lKG50eXBlKSwgc3RkOjptb3ZlKHBv
cnQxKSwgUmVsYXlOYW1lKHJ0eXBlLCBwcm90byksCisgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1vdmUocG9ydDIpLCBydHlwZSA9PSBSRUxBWV9HVFVSTiwKKyAgICAgICAgICAgICAgICAgICAg
IG50eXBlICE9IE5BVF9TWU1NRVRSSUMsIHRydWUsIHRydWUpOwogICB9CiAgIHZvaWQgVGVzdFRj
cFRvVGNwKCkgewotICAgIFBvcnQqIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7
CisgICAgYXV0byBwb3J0MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpOwogICAgIHBvcnQx
LT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwotICAgIFBvcnQqIHBv
cnQyID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMik7CisgICAgYXV0byBwb3J0MiA9IENyZWF0
ZVRjcFBvcnQoa0xvY2FsQWRkcjIpOwogICAgIHBvcnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklD
RVJPTEVfQ09OVFJPTExFRCk7Ci0gICAgVGVzdENvbm5lY3Rpdml0eSgidGNwIiwgcG9ydDEsICJ0
Y3AiLCBwb3J0MiwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpOworICAgIFRlc3RDb25uZWN0aXZp
dHkoInRjcCIsIHN0ZDo6bW92ZShwb3J0MSksICJ0Y3AiLCBzdGQ6Om1vdmUocG9ydDIpLCB0cnVl
LAorICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRydWUsIHRydWUpOwogICB9CiAgIHZvaWQg
VGVzdFRjcFRvUmVsYXkoUmVsYXlUeXBlIHJ0eXBlLCBQcm90b2NvbFR5cGUgcHJvdG8pIHsKLSAg
ICBQb3J0KiBwb3J0MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpOworICAgIGF1dG8gcG9y
dDEgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKTsKICAgICBwb3J0MS0+U2V0SWNlUm9sZShj
cmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKLSAgICBQb3J0KiBwb3J0MiA9IENyZWF0ZVJl
bGF5UG9ydChrTG9jYWxBZGRyMiwgcnR5cGUsIHByb3RvLCBQUk9UT19UQ1ApOworICAgIGF1dG8g
cG9ydDIgPSBDcmVhdGVSZWxheVBvcnQoa0xvY2FsQWRkcjIsIHJ0eXBlLCBwcm90bywgUFJPVE9f
VENQKTsKICAgICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQp
OwotICAgIFRlc3RDb25uZWN0aXZpdHkoInRjcCIsIHBvcnQxLCBSZWxheU5hbWUocnR5cGUsIHBy
b3RvKSwgcG9ydDIsCi0gICAgICAgICAgICAgICAgICAgICBydHlwZSA9PSBSRUxBWV9HVFVSTiwg
ZmFsc2UsIHRydWUsIHRydWUpOworICAgIFRlc3RDb25uZWN0aXZpdHkoInRjcCIsIHN0ZDo6bW92
ZShwb3J0MSksIFJlbGF5TmFtZShydHlwZSwgcHJvdG8pLAorICAgICAgICAgICAgICAgICAgICAg
c3RkOjptb3ZlKHBvcnQyKSwgcnR5cGUgPT0gUkVMQVlfR1RVUk4sIGZhbHNlLCB0cnVlLCB0cnVl
KTsKICAgfQogICB2b2lkIFRlc3RTc2xUY3BUb1JlbGF5KFJlbGF5VHlwZSBydHlwZSwgUHJvdG9j
b2xUeXBlIHByb3RvKSB7Ci0gICAgUG9ydCogcG9ydDEgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFk
ZHIxKTsKKyAgICBhdXRvIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7CiAgICAg
cG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7Ci0gICAgUG9y
dCogcG9ydDIgPSBDcmVhdGVSZWxheVBvcnQoa0xvY2FsQWRkcjIsIHJ0eXBlLCBwcm90bywgUFJP
VE9fU1NMVENQKTsKKyAgICBhdXRvIHBvcnQyID0gQ3JlYXRlUmVsYXlQb3J0KGtMb2NhbEFkZHIy
LCBydHlwZSwgcHJvdG8sIFBST1RPX1NTTFRDUCk7CiAgICAgcG9ydDItPlNldEljZVJvbGUoY3Jp
Y2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKLSAgICBUZXN0Q29ubmVjdGl2aXR5KCJzc2x0Y3Ai
LCBwb3J0MSwgUmVsYXlOYW1lKHJ0eXBlLCBwcm90byksIHBvcnQyLAotICAgICAgICAgICAgICAg
ICAgICAgcnR5cGUgPT0gUkVMQVlfR1RVUk4sIGZhbHNlLCB0cnVlLCB0cnVlKTsKKyAgICBUZXN0
Q29ubmVjdGl2aXR5KCJzc2x0Y3AiLCBzdGQ6Om1vdmUocG9ydDEpLCBSZWxheU5hbWUocnR5cGUs
IHByb3RvKSwKKyAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShwb3J0MiksIHJ0eXBlID09
IFJFTEFZX0dUVVJOLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CiAgIH0KIAogICBydGM6Ok5ldHdvcmsq
IE1ha2VOZXR3b3JrKGNvbnN0IFNvY2tldEFkZHJlc3MmIGFkZHIpIHsKQEAgLTQ4NSw3MSArNDgw
LDcxIEBAIGNsYXNzIFBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBzaWdz
bG90OjpoYXNfc2xvdHM8PiB7CiAgIH0KIAogICAvLyBoZWxwZXJzIGZvciBhYm92ZSBmdW5jdGlv
bnMKLSAgVURQUG9ydCogQ3JlYXRlVWRwUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyKSB7
CisgIHN0ZDo6dW5pcXVlX3B0cjxVRFBQb3J0PiBDcmVhdGVVZHBQb3J0KGNvbnN0IFNvY2tldEFk
ZHJlc3MmIGFkZHIpIHsKICAgICByZXR1cm4gQ3JlYXRlVWRwUG9ydChhZGRyLCAmc29ja2V0X2Zh
Y3RvcnlfKTsKICAgfQotICBVRFBQb3J0KiBDcmVhdGVVZHBQb3J0KGNvbnN0IFNvY2tldEFkZHJl
c3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0U29ja2V0RmFjdG9yeSog
c29ja2V0X2ZhY3RvcnkpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFVEUFBvcnQ+IENyZWF0ZVVkcFBv
cnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0X2ZhY3RvcnkpIHsKICAg
ICByZXR1cm4gVURQUG9ydDo6Q3JlYXRlKCZtYWluXywgc29ja2V0X2ZhY3RvcnksIE1ha2VOZXR3
b3JrKGFkZHIpLCAwLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWVfLCBw
YXNzd29yZF8sIHN0ZDo6c3RyaW5nKCksIHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjpudWxsb3B0KTsKICAgfQotICBUQ1BQb3J0KiBDcmVhdGVUY3BQb3J0KGNvbnN0IFNv
Y2tldEFkZHJlc3MmIGFkZHIpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFRDUFBvcnQ+IENyZWF0ZVRj
cFBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkcikgewogICAgIHJldHVybiBDcmVhdGVUY3BQ
b3J0KGFkZHIsICZzb2NrZXRfZmFjdG9yeV8pOwogICB9Ci0gIFRDUFBvcnQqIENyZWF0ZVRjcFBv
cnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQ
YWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRfZmFjdG9yeSkgeworICBzdGQ6OnVuaXF1ZV9wdHI8
VENQUG9ydD4gQ3JlYXRlVGNwUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrZXRTb2NrZXRGYWN0b3J5KiBz
b2NrZXRfZmFjdG9yeSkgewogICAgIHJldHVybiBUQ1BQb3J0OjpDcmVhdGUoJm1haW5fLCBzb2Nr
ZXRfZmFjdG9yeSwgTWFrZU5ldHdvcmsoYWRkciksIDAsIDAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1c2VybmFtZV8sIHBhc3N3b3JkXywgdHJ1ZSk7CiAgIH0KLSAgU3R1blBvcnQqIENy
ZWF0ZVN0dW5Qb3J0KGNvbnN0IFNvY2tldEFkZHJlc3MmIGFkZHIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnkpIHsKKyAgc3RkOjp1
bmlxdWVfcHRyPFN0dW5Qb3J0PiBDcmVhdGVTdHVuUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBh
ZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFj
a2V0U29ja2V0RmFjdG9yeSogZmFjdG9yeSkgewogICAgIFNlcnZlckFkZHJlc3NlcyBzdHVuX3Nl
cnZlcnM7CiAgICAgc3R1bl9zZXJ2ZXJzLmluc2VydChrU3R1bkFkZHIpOwogICAgIHJldHVybiBT
dHVuUG9ydDo6Q3JlYXRlKCZtYWluXywgZmFjdG9yeSwgTWFrZU5ldHdvcmsoYWRkciksIDAsIDAs
IHVzZXJuYW1lXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZF8sIHN0dW5f
c2VydmVycywgc3RkOjpzdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNs
OjpudWxsb3B0KTsKICAgfQotICBQb3J0KiBDcmVhdGVSZWxheVBvcnQoY29uc3QgU29ja2V0QWRk
cmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF5VHlwZSBydHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBpbnRfcHJvdG8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgZXh0X3Byb3RvKSB7CisgIHN0ZDo6dW5pcXVlX3B0
cjxQb3J0PiBDcmVhdGVSZWxheVBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxheVR5cGUgcnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGludF9wcm90
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUg
ZXh0X3Byb3RvKSB7CiAgICAgaWYgKHJ0eXBlID09IFJFTEFZX1RVUk4pIHsKICAgICAgIHJldHVy
biBDcmVhdGVUdXJuUG9ydChhZGRyLCAmc29ja2V0X2ZhY3RvcnlfLCBpbnRfcHJvdG8sIGV4dF9w
cm90byk7CiAgICAgfSBlbHNlIHsKICAgICAgIHJldHVybiBDcmVhdGVHdHVyblBvcnQoYWRkciwg
aW50X3Byb3RvLCBleHRfcHJvdG8pOwogICAgIH0KICAgfQotICBUdXJuUG9ydCogQ3JlYXRlVHVy
blBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGludF9wcm90bywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFByb3RvY29sVHlwZSBleHRfcHJvdG8pIHsKKyAgc3RkOjp1bmlxdWVfcHRyPFR1cm5Q
b3J0PiBDcmVhdGVUdXJuUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tldFNvY2tldEZhY3RvcnkqIHNv
Y2tldF9mYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFByb3RvY29sVHlwZSBpbnRfcHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHJvdG9jb2xUeXBlIGV4dF9wcm90bykgewogICAgIFNvY2tldEFkZHJlc3Mg
c2VydmVyX2FkZHIgPQogICAgICAgICBpbnRfcHJvdG8gPT0gUFJPVE9fVENQID8ga1R1cm5UY3BJ
bnRBZGRyIDoga1R1cm5VZHBJbnRBZGRyOwogICAgIHJldHVybiBDcmVhdGVUdXJuUG9ydChhZGRy
LCBzb2NrZXRfZmFjdG9yeSwgaW50X3Byb3RvLCBleHRfcHJvdG8sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlcnZlcl9hZGRyKTsKICAgfQotICBUdXJuUG9ydCogQ3JlYXRlVHVyblBvcnQo
Y29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
Y2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUHJvdG9jb2xUeXBlIGludF9wcm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IFByb3RvY29sVHlwZSBleHRfcHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBydGM6OlNvY2tldEFkZHJlc3MmIHNlcnZlcl9hZGRyKSB7Ci0gICAgcmV0dXJuIFR1cm5Qb3J0
OjpDcmVhdGUoCi0gICAgICAgICZtYWluXywgc29ja2V0X2ZhY3RvcnksIE1ha2VOZXR3b3JrKGFk
ZHIpLCAwLCAwLCB1c2VybmFtZV8sIHBhc3N3b3JkXywKLSAgICAgICAgUHJvdG9jb2xBZGRyZXNz
KHNlcnZlcl9hZGRyLCBpbnRfcHJvdG8pLCBrUmVsYXlDcmVkZW50aWFscywgMCwKLSAgICAgICAg
c3RkOjpzdHJpbmcoKSwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCksIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPigpLAotICAgICAgICBudWxscHRyLCBudWxscHRyKTsKLSAgfQotICBSZWxheVBv
cnQqIENyZWF0ZUd0dXJuUG9ydChjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgaW50X3Byb3RvLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUgZXh0X3Byb3RvKSB7Ci0gICAgUmVsYXlQb3J0
KiBwb3J0ID0gQ3JlYXRlR3R1cm5Qb3J0KGFkZHIpOworICBzdGQ6OnVuaXF1ZV9wdHI8VHVyblBv
cnQ+IENyZWF0ZVR1cm5Qb3J0KAorICAgICAgY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKKyAg
ICAgIFBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldF9mYWN0b3J5LAorICAgICAgUHJvdG9jb2xU
eXBlIGludF9wcm90bywKKyAgICAgIFByb3RvY29sVHlwZSBleHRfcHJvdG8sCisgICAgICBjb25z
dCBydGM6OlNvY2tldEFkZHJlc3MmIHNlcnZlcl9hZGRyKSB7CisgICAgcmV0dXJuIFR1cm5Qb3J0
OjpDcmVhdGUoJm1haW5fLCBzb2NrZXRfZmFjdG9yeSwgTWFrZU5ldHdvcmsoYWRkciksIDAsIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWVfLCBwYXNzd29yZF8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xBZGRyZXNzKHNlcnZlcl9hZGRyLCBpbnRf
cHJvdG8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtSZWxheUNyZWRlbnRpYWxzLCAw
LCAiIiwge30sIHt9LCBudWxscHRyLCBudWxscHRyKTsKKyAgfQorICBzdGQ6OnVuaXF1ZV9wdHI8
UmVsYXlQb3J0PiBDcmVhdGVHdHVyblBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBp
bnRfcHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
cm90b2NvbFR5cGUgZXh0X3Byb3RvKSB7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbGF5UG9ydD4g
cG9ydCA9IENyZWF0ZUd0dXJuUG9ydChhZGRyKTsKICAgICBTb2NrZXRBZGRyZXNzIGFkZHJzW10g
PSB7a1JlbGF5VWRwSW50QWRkciwga1JlbGF5VGNwSW50QWRkciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga1JlbGF5U3NsVGNwSW50QWRkcn07CiAgICAgcG9ydC0+QWRkU2VydmVyQWRk
cmVzcyhQcm90b2NvbEFkZHJlc3MoYWRkcnNbaW50X3Byb3RvXSwgaW50X3Byb3RvKSk7CiAgICAg
cmV0dXJuIHBvcnQ7CiAgIH0KLSAgUmVsYXlQb3J0KiBDcmVhdGVHdHVyblBvcnQoY29uc3QgU29j
a2V0QWRkcmVzcyYgYWRkcikgeworICBzdGQ6OnVuaXF1ZV9wdHI8UmVsYXlQb3J0PiBDcmVhdGVH
dHVyblBvcnQoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkcikgewogICAgIC8vIFRPRE8ocHRoYXRj
aGVyKTogIFJlbW92ZSBHVFVSTi4KICAgICAvLyBHZW5lcmF0ZSBhIHVzZXJuYW1lIHdpdGggbGVu
Z3RoIG9mIDE2IGZvciBHdHVybiBvbmx5LgogICAgIHN0ZDo6c3RyaW5nIHVzZXJuYW1lID0gcnRj
OjpDcmVhdGVSYW5kb21TdHJpbmcoa0d0dXJuVXNlck5hbWVMZW5ndGgpOwpAQCAtNTU4LDkgKzU1
MywxMCBAQCBjbGFzcyBQb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2ln
c2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIC8vIFRPRE8oPyk6IEFkZCBhbiBleHRlcm5hbCBhZGRy
ZXNzIGZvciBleHRfcHJvdG8sIHNvIHRoYXQgdGhlCiAgICAgLy8gb3RoZXIgc2lkZSBjYW4gY29u
bmVjdCB0byB0aGlzIHBvcnQgdXNpbmcgYSBub24tVURQIHByb3RvY29sLgogICB9Ci0gIHJ0Yzo6
TkFUU2VydmVyKiBDcmVhdGVOYXRTZXJ2ZXIoY29uc3QgU29ja2V0QWRkcmVzcyYgYWRkciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6Ok5BVFR5cGUgdHlwZSkgewotICAg
IHJldHVybiBuZXcgcnRjOjpOQVRTZXJ2ZXIodHlwZSwgc3NfLmdldCgpLCBhZGRyLCBhZGRyLCBz
c18uZ2V0KCksIGFkZHIpOworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpOQVRTZXJ2ZXI+IENyZWF0
ZU5hdFNlcnZlcihjb25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6Ok5BVFR5cGUgdHlwZSkgeworICAg
IHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxydGM6Ok5BVFNlcnZlcj4odHlwZSwgc3NfLmdldCgp
LCBhZGRyLCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3NfLmdldCgpLCBhZGRyKTsKICAgfQogICBzdGF0aWMgY29uc3QgY2hhciogU3R1bk5hbWUo
TkFUVHlwZSB0eXBlKSB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC02MTIsOSArNjA4LDkgQEAg
Y2xhc3MgUG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGljIHNpZ3Nsb3Q6Omhh
c19zbG90czw+IHsKIAogICAvLyBUaGlzIGRvZXMgYWxsIHRoZSB3b3JrIGFuZCB0aGVuIGRlbGV0
ZXMgfHBvcnQxfCBhbmQgfHBvcnQyfC4KICAgdm9pZCBUZXN0Q29ubmVjdGl2aXR5KGNvbnN0IGNo
YXIqIG5hbWUxLAotICAgICAgICAgICAgICAgICAgICAgICAgUG9ydCogcG9ydDEsCisgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gcG9ydDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lMiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFBvcnQqIHBvcnQyLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBv
cnQ+IHBvcnQyLAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhY2NlcHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHNhbWVfYWRkcjEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHNhbWVfYWRkcjIsCkBAIC02ODAsMTcgKzY3NiwxNyBAQCBjbGFzcyBQb3J0VGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogCiAg
IHZvaWQgVGVzdFRjcFJlY29ubmVjdChib29sIHBpbmdfYWZ0ZXJfZGlzY29ubmVjdGVkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZW5kX2FmdGVyX2Rpc2Nvbm5lY3RlZCkgewotICAg
IFBvcnQqIHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7CisgICAgYXV0byBwb3J0
MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpOwogICAgIHBvcnQxLT5TZXRJY2VSb2xlKGNy
aWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcpOwotICAgIFBvcnQqIHBvcnQyID0gQ3JlYXRlVGNw
UG9ydChrTG9jYWxBZGRyMik7CisgICAgYXV0byBwb3J0MiA9IENyZWF0ZVRjcFBvcnQoa0xvY2Fs
QWRkcjIpOwogICAgIHBvcnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExF
RCk7CiAKICAgICBwb3J0MS0+c2V0X2NvbXBvbmVudChjcmlja2V0OjpJQ0VfQ0FORElEQVRFX0NP
TVBPTkVOVF9ERUZBVUxUKTsKICAgICBwb3J0Mi0+c2V0X2NvbXBvbmVudChjcmlja2V0OjpJQ0Vf
Q0FORElEQVRFX0NPTVBPTkVOVF9ERUZBVUxUKTsKIAogICAgIC8vIFNldCB1cCBjaGFubmVscyBh
bmQgZW5zdXJlIGJvdGggcG9ydHMgd2lsbCBiZSBkZWxldGVkLgotICAgIFRlc3RDaGFubmVsIGNo
MShwb3J0MSk7Ci0gICAgVGVzdENoYW5uZWwgY2gyKHBvcnQyKTsKKyAgICBUZXN0Q2hhbm5lbCBj
aDEoc3RkOjptb3ZlKHBvcnQxKSk7CisgICAgVGVzdENoYW5uZWwgY2gyKHN0ZDo6bW92ZShwb3J0
MikpOwogICAgIEVYUEVDVF9FUSgwLCBjaDEuY29tcGxldGVfY291bnQoKSk7CiAgICAgRVhQRUNU
X0VRKDAsIGNoMi5jb21wbGV0ZV9jb3VudCgpKTsKIApAQCAtNzAwLDcgKzY5Niw3IEBAIGNsYXNz
IFBvcnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xv
dHM8PiB7CiAgICAgQVNTRVJUX0VRX1dBSVQoMSwgY2gyLmNvbXBsZXRlX2NvdW50KCksIGtEZWZh
dWx0VGltZW91dCk7CiAKICAgICAvLyBJbml0aWFsIGNvbm5lY3RpbmcgdGhlIGNoYW5uZWwsIGNy
ZWF0ZSBjb25uZWN0aW9uIG9uIGNoYW5uZWwxLgotICAgIGNoMS5DcmVhdGVDb25uZWN0aW9uKEdl
dENhbmRpZGF0ZShwb3J0MikpOworICAgIGNoMS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0
ZShjaDIucG9ydCgpKSk7CiAgICAgQ29ubmVjdFN0YXJ0ZWRDaGFubmVscygmY2gxLCAmY2gyKTsK
IAogICAgIC8vIFNob3J0ZW4gdGhlIHRpbWVvdXQgcGVyaW9kLgpAQCAtNzUzLDQzICs3NDksNDUg
QEAgY2xhc3MgUG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGljIHNpZ3Nsb3Q6
Omhhc19zbG90czw+IHsKICAgICBFWFBFQ1RfVFJVRV9XQUlUKGNoMi5jb25uKCkgPT0gTlVMTCwg
a0RlZmF1bHRUaW1lb3V0KTsKICAgfQogCi0gIEljZU1lc3NhZ2UqIENyZWF0ZVN0dW5NZXNzYWdl
KGludCB0eXBlKSB7Ci0gICAgSWNlTWVzc2FnZSogbXNnID0gbmV3IEljZU1lc3NhZ2UoKTsKKyAg
c3RkOjp1bmlxdWVfcHRyPEljZU1lc3NhZ2U+IENyZWF0ZVN0dW5NZXNzYWdlKGludCB0eXBlKSB7
CisgICAgYXV0byBtc2cgPSBhYnNsOjptYWtlX3VuaXF1ZTxJY2VNZXNzYWdlPigpOwogICAgIG1z
Zy0+U2V0VHlwZSh0eXBlKTsKICAgICBtc2ctPlNldFRyYW5zYWN0aW9uSUQoIlRFU1RURVNUVEVT
VCIpOwogICAgIHJldHVybiBtc2c7CiAgIH0KLSAgSWNlTWVzc2FnZSogQ3JlYXRlU3R1bk1lc3Nh
Z2VXaXRoVXNlcm5hbWUoaW50IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSkgewotICAgIEljZU1lc3Nh
Z2UqIG1zZyA9IENyZWF0ZVN0dW5NZXNzYWdlKHR5cGUpOworICBzdGQ6OnVuaXF1ZV9wdHI8SWNl
TWVzc2FnZT4gQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoCisgICAgICBpbnQgdHlwZSwK
KyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSkgeworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJY2VNZXNzYWdlPiBtc2cgPSBDcmVhdGVTdHVuTWVzc2FnZSh0eXBlKTsKICAgICBtc2ctPkFk
ZEF0dHJpYnV0ZShhYnNsOjptYWtlX3VuaXF1ZTxTdHVuQnl0ZVN0cmluZ0F0dHJpYnV0ZT4oCiAg
ICAgICAgIFNUVU5fQVRUUl9VU0VSTkFNRSwgdXNlcm5hbWUpKTsKICAgICByZXR1cm4gbXNnOwog
ICB9Ci0gIFRlc3RQb3J0KiBDcmVhdGVUZXN0UG9ydChjb25zdCBydGM6OlNvY2tldEFkZHJlc3Mm
IGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNl
cm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFz
c3dvcmQpIHsKLSAgICBUZXN0UG9ydCogcG9ydCA9IG5ldyBUZXN0UG9ydCgmbWFpbl8sICJ0ZXN0
IiwgJnNvY2tldF9mYWN0b3J5XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YWtlTmV0d29yayhhZGRyKSwgMCwgMCwgdXNlcm5hbWUsIHBhc3N3b3JkKTsKKyAgc3RkOjp1bmlx
dWVfcHRyPFRlc3RQb3J0PiBDcmVhdGVUZXN0UG9ydChjb25zdCBydGM6OlNvY2tldEFkZHJlc3Mm
IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCkgeworICAgIGF1dG8gcG9ydCA9
IGFic2w6Om1ha2VfdW5pcXVlPFRlc3RQb3J0PigmbWFpbl8sICJ0ZXN0IiwgJnNvY2tldF9mYWN0
b3J5XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFrZU5l
dHdvcmsoYWRkciksIDAsIDAsIHVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXNzd29yZCk7CiAgICAgcG9ydC0+U2lnbmFsUm9sZUNvbmZsaWN0
LmNvbm5lY3QodGhpcywgJlBvcnRUZXN0OjpPblJvbGVDb25mbGljdCk7CiAgICAgcmV0dXJuIHBv
cnQ7CiAgIH0KLSAgVGVzdFBvcnQqIENyZWF0ZVRlc3RQb3J0KGNvbnN0IHJ0Yzo6U29ja2V0QWRk
cmVzcyYgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBwYXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkljZVJvbGUg
cm9sZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aWVicmVha2VyKSB7Ci0gICAg
VGVzdFBvcnQqIHBvcnQgPSBDcmVhdGVUZXN0UG9ydChhZGRyLCB1c2VybmFtZSwgcGFzc3dvcmQp
OworICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IENyZWF0ZVRlc3RQb3J0KGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkljZVJvbGUg
cm9sZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGll
YnJlYWtlcikgeworICAgIGF1dG8gcG9ydCA9IENyZWF0ZVRlc3RQb3J0KGFkZHIsIHVzZXJuYW1l
LCBwYXNzd29yZCk7CiAgICAgcG9ydC0+U2V0SWNlUm9sZShyb2xlKTsKICAgICBwb3J0LT5TZXRJ
Y2VUaWVicmVha2VyKHRpZWJyZWFrZXIpOwogICAgIHJldHVybiBwb3J0OwogICB9CiAgIC8vIE92
ZXJsb2FkIHRvIGNyZWF0ZSBhIHRlc3QgcG9ydCBnaXZlbiBhbiBydGM6Ok5ldHdvcmsgZGlyZWN0
bHkuCi0gIFRlc3RQb3J0KiBDcmVhdGVUZXN0UG9ydChydGM6Ok5ldHdvcmsqIG5ldHdvcmssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQpIHsK
LSAgICBUZXN0UG9ydCogcG9ydCA9IG5ldyBUZXN0UG9ydCgmbWFpbl8sICJ0ZXN0IiwgJnNvY2tl
dF9mYWN0b3J5XywgbmV0d29yaywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCB1c2VybmFtZSwgcGFzc3dvcmQpOworICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IENy
ZWF0ZVRlc3RQb3J0KHJ0Yzo6TmV0d29yayogbmV0d29yaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHBhc3N3b3JkKSB7CisgICAgYXV0byBwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8VGVzdFBvcnQ+
KCZtYWluXywgInRlc3QiLCAmc29ja2V0X2ZhY3RvcnlfLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrLCAwLCAwLCB1c2VybmFtZSwgcGFzc3dvcmQp
OwogICAgIHBvcnQtPlNpZ25hbFJvbGVDb25mbGljdC5jb25uZWN0KHRoaXMsICZQb3J0VGVzdDo6
T25Sb2xlQ29uZmxpY3QpOwogICAgIHJldHVybiBwb3J0OwogICB9CkBAIC04MzQsOSArODMyLDkg
QEAgY2xhc3MgUG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGljIHNpZ3Nsb3Q6
Omhhc19zbG90czw+IHsKIH07CiAKIHZvaWQgUG9ydFRlc3Q6OlRlc3RDb25uZWN0aXZpdHkoY29u
c3QgY2hhciogbmFtZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnQqIHBv
cnQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9y
dD4gcG9ydDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5h
bWUyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3J0KiBwb3J0MiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IHBvcnQyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFjY2VwdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYW1lX2FkZHIxLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHNhbWVfYWRkcjIsCkBAIC04NDcsOCArODQ1LDggQEAgdm9pZCBQ
b3J0VGVzdDo6VGVzdENvbm5lY3Rpdml0eShjb25zdCBjaGFyKiBuYW1lMSwKICAgcG9ydDItPnNl
dF9jb21wb25lbnQoY3JpY2tldDo6SUNFX0NBTkRJREFURV9DT01QT05FTlRfREVGQVVMVCk7CiAK
ICAgLy8gU2V0IHVwIGNoYW5uZWxzIGFuZCBlbnN1cmUgYm90aCBwb3J0cyB3aWxsIGJlIGRlbGV0
ZWQuCi0gIFRlc3RDaGFubmVsIGNoMShwb3J0MSk7Ci0gIFRlc3RDaGFubmVsIGNoMihwb3J0Mik7
CisgIFRlc3RDaGFubmVsIGNoMShzdGQ6Om1vdmUocG9ydDEpKTsKKyAgVGVzdENoYW5uZWwgY2gy
KHN0ZDo6bW92ZShwb3J0MikpOwogICBFWFBFQ1RfRVEoMCwgY2gxLmNvbXBsZXRlX2NvdW50KCkp
OwogICBFWFBFQ1RfRVEoMCwgY2gyLmNvbXBsZXRlX2NvdW50KCkpOwogCkBAIC04NTksNyArODU3
LDcgQEAgdm9pZCBQb3J0VGVzdDo6VGVzdENvbm5lY3Rpdml0eShjb25zdCBjaGFyKiBuYW1lMSwK
ICAgQVNTRVJUX0VRX1NJTVVMQVRFRF9XQUlUKDEsIGNoMi5jb21wbGV0ZV9jb3VudCgpLCBrRGVm
YXVsdFRpbWVvdXQsIGNsb2NrKTsKIAogICAvLyBTZW5kIGEgcGluZyBmcm9tIHNyYyB0byBkc3Qu
IFRoaXMgbWF5IG9yIG1heSBub3QgbWFrZSBpdC4KLSAgY2gxLkNyZWF0ZUNvbm5lY3Rpb24oR2V0
Q2FuZGlkYXRlKHBvcnQyKSk7CisgIGNoMS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShj
aDIucG9ydCgpKSk7CiAgIEFTU0VSVF9UUlVFKGNoMS5jb25uKCkgIT0gTlVMTCk7CiAgIEVYUEVD
VF9UUlVFX1NJTVVMQVRFRF9XQUlUKGNoMS5jb25uKCktPmNvbm5lY3RlZCgpLCBrRGVmYXVsdFRp
bWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrKTsgIC8vIGZvciBUQ1Ag
Y29ubmVjdApAQCAtODcwLDE2ICs4NjgsMTYgQEAgdm9pZCBQb3J0VGVzdDo6VGVzdENvbm5lY3Rp
dml0eShjb25zdCBjaGFyKiBuYW1lMSwKICAgICAvLyBXZSBhcmUgYWJsZSB0byBzZW5kIGEgcGlu
ZyBmcm9tIHNyYyB0byBkc3QuIFRoaXMgaXMgdGhlIGNhc2Ugd2hlbgogICAgIC8vIHNlbmRpbmcg
dG8gVURQIHBvcnRzIGFuZCBjb25lIE5BVHMuCiAgICAgRVhQRUNUX1RSVUUoY2gxLnJlbW90ZV9h
ZGRyZXNzKCkuSXNOaWwoKSk7Ci0gICAgRVhQRUNUX0VRKGNoMi5yZW1vdGVfZnJhZ21lbnQoKSwg
cG9ydDEtPnVzZXJuYW1lX2ZyYWdtZW50KCkpOworICAgIEVYUEVDVF9FUShjaDIucmVtb3RlX2Zy
YWdtZW50KCksIGNoMS5wb3J0KCktPnVzZXJuYW1lX2ZyYWdtZW50KCkpOwogCiAgICAgLy8gRW5z
dXJlIHRoZSBwaW5nIGNhbWUgZnJvbSB0aGUgc2FtZSBhZGRyZXNzIHVzZWQgZm9yIHNyYy4KICAg
ICAvLyBUaGlzIGlzIHRoZSBjYXNlIHVubGVzcyB0aGUgc291cmNlIE5BVCB3YXMgc3ltbWV0cmlj
LgogICAgIGlmIChzYW1lX2FkZHIxKQotICAgICAgRVhQRUNUX0VRKGNoMi5yZW1vdGVfYWRkcmVz
cygpLCBHZXRBZGRyZXNzKHBvcnQxKSk7CisgICAgICBFWFBFQ1RfRVEoY2gyLnJlbW90ZV9hZGRy
ZXNzKCksIEdldEFkZHJlc3MoY2gxLnBvcnQoKSkpOwogICAgIEVYUEVDVF9UUlVFKHNhbWVfYWRk
cjIpOwogCiAgICAgLy8gU2VuZCBhIHBpbmcgZnJvbSBkc3QgdG8gc3JjLgotICAgIGNoMi5BY2Nl
cHRDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0MSkpOworICAgIGNoMi5BY2NlcHRDb25uZWN0
aW9uKEdldENhbmRpZGF0ZShjaDEucG9ydCgpKSk7CiAgICAgQVNTRVJUX1RSVUUoY2gyLmNvbm4o
KSAhPSBOVUxMKTsKICAgICBjaDIuUGluZygpOwogICAgIEVYUEVDVF9FUV9TSU1VTEFURURfV0FJ
VChDb25uZWN0aW9uOjpTVEFURV9XUklUQUJMRSwKQEAgLTg5MSw3ICs4ODksNyBAQCB2b2lkIFBv
cnRUZXN0OjpUZXN0Q29ubmVjdGl2aXR5KGNvbnN0IGNoYXIqIG5hbWUxLAogICAgIEVYUEVDVF9U
UlVFKGNoMi5yZW1vdGVfYWRkcmVzcygpLklzTmlsKCkpOwogCiAgICAgLy8gU2VuZCBhIHBpbmcg
ZnJvbSBkc3QgdG8gc3JjLiBBZ2FpbiwgdGhpcyBtYXkgb3IgbWF5IG5vdCBtYWtlIGl0LgotICAg
IGNoMi5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0MSkpOworICAgIGNoMi5DcmVh
dGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShjaDEucG9ydCgpKSk7CiAgICAgQVNTRVJUX1RSVUUo
Y2gyLmNvbm4oKSAhPSBOVUxMKTsKICAgICBjaDIuUGluZygpOwogICAgIFNJTVVMQVRFRF9XQUlU
KGNoMi5jb25uKCktPndyaXRlX3N0YXRlKCkgPT0gQ29ubmVjdGlvbjo6U1RBVEVfV1JJVEFCTEUs
CkBAIC05MjUsNyArOTIzLDcgQEAgdm9pZCBQb3J0VGVzdDo6VGVzdENvbm5lY3Rpdml0eShjb25z
dCBjaGFyKiBuYW1lMSwKICAgICAgIEVYUEVDVF9UUlVFKGNoMS5yZW1vdGVfYWRkcmVzcygpLklz
TmlsKCkpOwogCiAgICAgICAvLyBQaWNrIHVwIHRoZSBhY3R1YWwgYWRkcmVzcyBhbmQgZXN0YWJs
aXNoIHRoZSBjb25uZWN0aW9uLgotICAgICAgY2gyLkFjY2VwdENvbm5lY3Rpb24oR2V0Q2FuZGlk
YXRlKHBvcnQxKSk7CisgICAgICBjaDIuQWNjZXB0Q29ubmVjdGlvbihHZXRDYW5kaWRhdGUoY2gx
LnBvcnQoKSkpOwogICAgICAgQVNTRVJUX1RSVUUoY2gyLmNvbm4oKSAhPSBOVUxMKTsKICAgICAg
IGNoMi5QaW5nKCk7CiAgICAgICBFWFBFQ1RfRVFfU0lNVUxBVEVEX1dBSVQoQ29ubmVjdGlvbjo6
U1RBVEVfV1JJVEFCTEUsCkBAIC05MzgsNyArOTM2LDcgQEAgdm9pZCBQb3J0VGVzdDo6VGVzdENv
bm5lY3Rpdml0eShjb25zdCBjaGFyKiBuYW1lMSwKICAgICAgIEVYUEVDVF9GQUxTRShjaDEuY29u
bigpLT5yZWNlaXZpbmcoKSk7CiAKICAgICAgIC8vIFVwZGF0ZSBvdXIgYWRkcmVzcyBhbmQgY29t
cGxldGUgdGhlIGNvbm5lY3Rpb24uCi0gICAgICBjaDEuQWNjZXB0Q29ubmVjdGlvbihHZXRDYW5k
aWRhdGUocG9ydDIpKTsKKyAgICAgIGNoMS5BY2NlcHRDb25uZWN0aW9uKEdldENhbmRpZGF0ZShj
aDIucG9ydCgpKSk7CiAgICAgICBjaDEuUGluZygpOwogICAgICAgRVhQRUNUX0VRX1NJTVVMQVRF
RF9XQUlUKENvbm5lY3Rpb246OlNUQVRFX1dSSVRBQkxFLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoMS5jb25uKCktPndyaXRlX3N0YXRlKCksIGtEZWZhdWx0VGltZW91dCwKQEAg
LTEyNjEsMTIgKzEyNTksMTIgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0VGNwUmVjb25uZWN0VGlt
ZW91dCkgewogLy8gVGVzdCB3aGVuIFRjcENvbm5lY3Rpb24gbmV2ZXIgY29ubmVjdHMsIHRoZSBP
bkNsb3NlKCkgd2lsbCBiZSBjYWxsZWQgdG8KIC8vIGRlc3Ryb3kgdGhlIGNvbm5lY3Rpb24uCiBU
RVNUX0YoUG9ydFRlc3QsIFRlc3RUY3BOZXZlckNvbm5lY3QpIHsKLSAgUG9ydCogcG9ydDEgPSBD
cmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKTsKKyAgYXV0byBwb3J0MSA9IENyZWF0ZVRjcFBvcnQo
a0xvY2FsQWRkcjEpOwogICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRS
T0xMSU5HKTsKICAgcG9ydDEtPnNldF9jb21wb25lbnQoY3JpY2tldDo6SUNFX0NBTkRJREFURV9D
T01QT05FTlRfREVGQVVMVCk7CiAKICAgLy8gU2V0IHVwIGEgY2hhbm5lbCBhbmQgZW5zdXJlIHRo
ZSBwb3J0IHdpbGwgYmUgZGVsZXRlZC4KLSAgVGVzdENoYW5uZWwgY2gxKHBvcnQxKTsKKyAgVGVz
dENoYW5uZWwgY2gxKHN0ZDo6bW92ZShwb3J0MSkpOwogICBFWFBFQ1RfRVEoMCwgY2gxLmNvbXBs
ZXRlX2NvdW50KCkpOwogCiAgIGNoMS5TdGFydCgpOwpAQCAtMTI3Nyw3ICsxMjc1LDcgQEAgVEVT
VF9GKFBvcnRUZXN0LCBUZXN0VGNwTmV2ZXJDb25uZWN0KSB7CiAgIC8vIEJpbmQgYnV0IG5vdCBs
aXN0ZW4uCiAgIEVYUEVDVF9FUSgwLCBzZXJ2ZXItPkJpbmQoa0xvY2FsQWRkcjIpKTsKIAotICBD
YW5kaWRhdGUgYyA9IEdldENhbmRpZGF0ZShwb3J0MSk7CisgIENhbmRpZGF0ZSBjID0gR2V0Q2Fu
ZGlkYXRlKGNoMS5wb3J0KCkpOwogICBjLnNldF9hZGRyZXNzKHNlcnZlci0+R2V0TG9jYWxBZGRy
ZXNzKCkpOwogCiAgIGNoMS5DcmVhdGVDb25uZWN0aW9uKGMpOwpAQCAtMTMxMiwxMCArMTMxMCw4
IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFNzbFRjcFRvU3NsVGNwUmVsYXkpIHsKIC8vIGlpKSBp
dCBoYXMgbm90IHJlY2VpdmVkIGFueXRoaW5nIGZvciBERUFEX0NPTk5FQ1RJT05fUkVDRUlWRV9U
SU1FT1VUCiAvLyAgICAgbWlsbGlzZWNvbmRzIHNpbmNlIGxhc3QgcmVjZWl2aW5nLgogVEVTVF9G
KFBvcnRUZXN0LCBUZXN0Q29ubmVjdGlvbkRlYWQpIHsKLSAgVURQUG9ydCogcG9ydDEgPSBDcmVh
dGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKLSAgVURQUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0
KGtMb2NhbEFkZHIyKTsKLSAgVGVzdENoYW5uZWwgY2gxKHBvcnQxKTsKLSAgVGVzdENoYW5uZWwg
Y2gyKHBvcnQyKTsKKyAgVGVzdENoYW5uZWwgY2gxKENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEp
KTsKKyAgVGVzdENoYW5uZWwgY2gyKENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpKTsKICAgLy8g
QWNxdWlyZSBhZGRyZXNzLgogICBjaDEuU3RhcnQoKTsKICAgY2gyLlN0YXJ0KCk7CkBAIC0xMzI0
LDcgKzEzMjAsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RDb25uZWN0aW9uRGVhZCkgewogCiAg
IC8vIFRlc3QgY2FzZSB0aGF0IHRoZSBjb25uZWN0aW9uIGhhcyBuZXZlciByZWNlaXZlZCBhbnl0
aGluZy4KICAgaW50NjRfdCBiZWZvcmVfY3JlYXRlZCA9IHJ0Yzo6VGltZU1pbGxpcygpOwotICBj
aDEuQ3JlYXRlQ29ubmVjdGlvbihHZXRDYW5kaWRhdGUocG9ydDIpKTsKKyAgY2gxLkNyZWF0ZUNv
bm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNoMi5wb3J0KCkpKTsKICAgaW50NjRfdCBhZnRlcl9jcmVh
dGVkID0gcnRjOjpUaW1lTWlsbGlzKCk7CiAgIENvbm5lY3Rpb24qIGNvbm4gPSBjaDEuY29ubigp
OwogICBBU1NFUlRfTkUoY29ubiwgbnVsbHB0cik7CkBAIC0xMzQzLDcgKzEzMzksNyBAQCBURVNU
X0YoUG9ydFRlc3QsIFRlc3RDb25uZWN0aW9uRGVhZCkgewogCiAgIC8vIFRlc3QgY2FzZSB0aGF0
IHRoZSBjb25uZWN0aW9uIGhhcyByZWNlaXZlZCBzb21ldGhpbmcuCiAgIC8vIENyZWF0ZSBhIGNv
bm5lY3Rpb24gYWdhaW4gYW5kIHJlY2VpdmUgYSBwaW5nLgotICBjaDEuQ3JlYXRlQ29ubmVjdGlv
bihHZXRDYW5kaWRhdGUocG9ydDIpKTsKKyAgY2gxLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlk
YXRlKGNoMi5wb3J0KCkpKTsKICAgY29ubiA9IGNoMS5jb25uKCk7CiAgIEFTU0VSVF9ORShjb25u
LCBudWxscHRyKTsKICAgaW50NjRfdCBiZWZvcmVfbGFzdF9yZWNlaXZpbmcgPSBydGM6OlRpbWVN
aWxsaXMoKTsKQEAgLTEzNjIsMTQgKzEzNTgsMTUgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q29u
bmVjdGlvbkRlYWQpIHsKIC8vIHZlcmlmaWVzIE1lc3NhZ2UgSW50ZWdyaXR5IGF0dHJpYnV0ZSBp
biBTVFVOIG1lc3NhZ2VzIGFuZCB1c2VybmFtZSBpbiBTVFVOCiAvLyBiaW5kaW5nIHJlcXVlc3Qg
d2lsbCBoYXZlIGNvbG9uICgiOiIpIGJldHdlZW4gcmVtb3RlIGFuZCBsb2NhbCB1c2VybmFtZS4K
IFRFU1RfRihQb3J0VGVzdCwgVGVzdExvY2FsVG9Mb2NhbFN0YW5kYXJkKSB7Ci0gIFVEUFBvcnQq
IHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CisgIGF1dG8gcG9ydDEgPSBDcmVh
dGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKICAgcG9ydDEtPlNldEljZVJvbGUoY3JpY2tldDo6SUNF
Uk9MRV9DT05UUk9MTElORyk7CiAgIHBvcnQxLT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2Vy
MSk7Ci0gIFVEUFBvcnQqIHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMik7CisgIGF1
dG8gcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKICAgcG9ydDItPlNldEljZVJv
bGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKICAgcG9ydDItPlNldEljZVRpZWJyZWFr
ZXIoa1RpZWJyZWFrZXIyKTsKICAgLy8gU2FtZSBwYXJhbWV0ZXJzIGFzIFRlc3RMb2NhbFRvTG9j
YWwgYWJvdmUuCi0gIFRlc3RDb25uZWN0aXZpdHkoInVkcCIsIHBvcnQxLCAidWRwIiwgcG9ydDIs
IHRydWUsIHRydWUsIHRydWUsIHRydWUpOworICBUZXN0Q29ubmVjdGl2aXR5KCJ1ZHAiLCBzdGQ6
Om1vdmUocG9ydDEpLCAidWRwIiwgc3RkOjptb3ZlKHBvcnQyKSwgdHJ1ZSwgdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICB0cnVlLCB0cnVlKTsKIH0KIAogLy8gVGhpcyB0ZXN0IGlzIHRyeWluZyB0
byB2YWxpZGF0ZSBhIHN1Y2Nlc3NmdWwgYW5kIGZhaWx1cmUgc2NlbmFyaW8gaW4gYQpAQCAtMTM3
Nyw4ICsxMzc0LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0TG9jYWxUb0xvY2FsU3RhbmRhcmQp
IHsKIC8vIHNob3VsZCByZW1haW4gZXF1YWwgdG8gdGhlIHJlcXVlc3QgZ2VuZXJhdGVkIGJ5IHRo
ZSBwb3J0IGFuZCByb2xlIG9mIHBvcnQKIC8vIG11c3QgYmUgaW4gY29udHJvbGxpbmcuCiBURVNU
X0YoUG9ydFRlc3QsIFRlc3RMb29wYmFja0NhbGwpIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQ
b3J0PiBscG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibGZyYWciLCAi
bHBhc3MiKSk7CisgIGF1dG8gbHBvcnQgPSBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxm
cmFnIiwgImxwYXNzIik7CiAgIGxwb3J0LT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09O
VFJPTExJTkcpOwogICBscG9ydC0+U2V0SWNlVGllYnJlYWtlcihrVGllYnJlYWtlcjEpOwogICBs
cG9ydC0+UHJlcGFyZUFkZHJlc3MoKTsKQEAgLTEzOTEsNyArMTM4Nyw3IEBAIFRFU1RfRihQb3J0
VGVzdCwgVGVzdExvb3BiYWNrQ2FsbCkgewogICBJY2VNZXNzYWdlKiBtc2cgPSBscG9ydC0+bGFz
dF9zdHVuX21zZygpOwogICBFWFBFQ1RfRVEoU1RVTl9CSU5ESU5HX1JFUVVFU1QsIG1zZy0+dHlw
ZSgpKTsKICAgY29ubi0+T25SZWFkUGFja2V0KGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8
Y2hhcj4oKSwKLSAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNp
emUoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgbHBvcnQtPmxh
c3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIEFTU0VS
VF9UUlVFX1dBSVQobHBvcnQtPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVv
dXQpOwogICBtc2cgPSBscG9ydC0+bGFzdF9zdHVuX21zZygpOwogICBFWFBFQ1RfRVEoU1RVTl9C
SU5ESU5HX1JFU1BPTlNFLCBtc2ctPnR5cGUoKSk7CkBAIC0xNDIyLDkgKzE0MTgsOSBAQCBURVNU
X0YoUG9ydFRlc3QsIFRlc3RMb29wYmFja0NhbGwpIHsKICAgbW9kaWZpZWRfcmVxLT5BZGRGaW5n
ZXJwcmludCgpOwogCiAgIGxwb3J0LT5SZXNldCgpOwotICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZUJ1
ZmZlcldyaXRlcj4gYnVmKG5ldyBCeXRlQnVmZmVyV3JpdGVyKCkpOwotICBXcml0ZVN0dW5NZXNz
YWdlKG1vZGlmaWVkX3JlcS5nZXQoKSwgYnVmLmdldCgpKTsKLSAgY29ubjEtPk9uUmVhZFBhY2tl
dChidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgcnRjOjpQYWNrZXRUaW1lKCkpOworICBhdXRv
IGJ1ZiA9IGFic2w6Om1ha2VfdW5pcXVlPEJ5dGVCdWZmZXJXcml0ZXI+KCk7CisgIFdyaXRlU3R1
bk1lc3NhZ2UoKm1vZGlmaWVkX3JlcSwgYnVmLmdldCgpKTsKKyAgY29ubjEtPk9uUmVhZFBhY2tl
dChidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwog
ICBBU1NFUlRfVFJVRV9XQUlUKGxwb3J0LT5sYXN0X3N0dW5fbXNnKCkgIT0gTlVMTCwga0RlZmF1
bHRUaW1lb3V0KTsKICAgbXNnID0gbHBvcnQtPmxhc3Rfc3R1bl9tc2coKTsKICAgRVhQRUNUX0VR
KFNUVU5fQklORElOR19FUlJPUl9SRVNQT05TRSwgbXNnLT50eXBlKCkpOwpAQCAtMTQzNiwxMiAr
MTQzMiwxMCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RMb29wYmFja0NhbGwpIHsKIC8vIHZhbHVl
IG9mIHRpZWJyZWFrZXIsIHdoZW4gaXQgcmVjZWl2ZXMgcGluZyByZXF1ZXN0IGZyb20gfHJwb3J0
fCBpdCB3aWxsCiAvLyBzZW5kIHJvbGUgY29uZmxpY3Qgc2lnbmFsLgogVEVTVF9GKFBvcnRUZXN0
LCBUZXN0SWNlUm9sZUNvbmZsaWN0KSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gbHBv
cnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIikp
OworICBhdXRvIGxwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJs
cGFzcyIpOwogICBscG9ydC0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5H
KTsKICAgbHBvcnQtPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsKLSAgc3RkOjp1bmlx
dWVfcHRyPFRlc3RQb3J0PiBycG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIy
LCAicmZyYWciLCAicnBhc3MiKSk7CisgIGF1dG8gcnBvcnQgPSBDcmVhdGVUZXN0UG9ydChrTG9j
YWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIik7CiAgIHJwb3J0LT5TZXRJY2VSb2xlKGNyaWNrZXQ6
OklDRVJPTEVfQ09OVFJPTExJTkcpOwogICBycG9ydC0+U2V0SWNlVGllYnJlYWtlcihrVGllYnJl
YWtlcjIpOwogCkBAIC0xNDYwLDcgKzE0NTQsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RJY2VS
b2xlQ29uZmxpY3QpIHsKICAgRVhQRUNUX0VRKFNUVU5fQklORElOR19SRVFVRVNULCBtc2ctPnR5
cGUoKSk7CiAgIC8vIFNlbmQgcnBvcnQgYmluZGluZyByZXF1ZXN0IHRvIGxwb3J0LgogICBsY29u
bi0+T25SZWFkUGFja2V0KHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAg
ICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6
UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVuX2J1
ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKIAogICBBU1NFUlRfVFJVRV9X
QUlUKGxwb3J0LT5sYXN0X3N0dW5fbXNnKCkgIT0gTlVMTCwga0RlZmF1bHRUaW1lb3V0KTsKICAg
RVhQRUNUX0VRKFNUVU5fQklORElOR19SRVNQT05TRSwgbHBvcnQtPmxhc3Rfc3R1bl9tc2coKS0+
dHlwZSgpKTsKQEAgLTE0NjgsMTMgKzE0NjIsMTIgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SWNl
Um9sZUNvbmZsaWN0KSB7CiB9CiAKIFRFU1RfRihQb3J0VGVzdCwgVGVzdFRjcE5vRGVsYXkpIHsK
LSAgVENQUG9ydCogcG9ydDEgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKTsKKyAgYXV0byBw
b3J0MSA9IENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpOwogICBwb3J0MS0+U2V0SWNlUm9sZShj
cmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKICAgaW50IG9wdGlvbl92YWx1ZSA9IC0xOwog
ICBpbnQgc3VjY2VzcyA9IHBvcnQxLT5HZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9OT0RFTEFZ
LCAmb3B0aW9uX3ZhbHVlKTsKICAgQVNTRVJUX0VRKDAsIHN1Y2Nlc3MpOyAgLy8gR2V0T3B0aW9u
KCkgc2hvdWxkIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSB3LyAwCiAgIEFTU0VSVF9FUSgxLCBvcHRp
b25fdmFsdWUpOwotICBkZWxldGUgcG9ydDE7CiB9CiAKIFRFU1RfRihQb3J0VGVzdCwgVGVzdERl
bGF5ZWRCaW5kaW5nVWRwKSB7CkBAIC0xNDgyLDcgKzE0NzUsNyBAQCBURVNUX0YoUG9ydFRlc3Qs
IFRlc3REZWxheWVkQmluZGluZ1VkcCkgewogICBGYWtlUGFja2V0U29ja2V0RmFjdG9yeSBzb2Nr
ZXRfZmFjdG9yeTsKIAogICBzb2NrZXRfZmFjdG9yeS5zZXRfbmV4dF91ZHBfc29ja2V0KHNvY2tl
dCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxVRFBQb3J0PiBwb3J0KENyZWF0ZVVkcFBvcnQoa0xvY2Fs
QWRkcjEsICZzb2NrZXRfZmFjdG9yeSkpOworICBhdXRvIHBvcnQgPSBDcmVhdGVVZHBQb3J0KGtM
b2NhbEFkZHIxLCAmc29ja2V0X2ZhY3RvcnkpOwogCiAgIHNvY2tldC0+c2V0X3N0YXRlKEFzeW5j
UGFja2V0U29ja2V0OjpTVEFURV9CSU5ESU5HKTsKICAgcG9ydC0+UHJlcGFyZUFkZHJlc3MoKTsK
QEAgLTE0OTgsNyArMTQ5MSw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdERlbGF5ZWRCaW5kaW5n
VGNwKSB7CiAgIEZha2VQYWNrZXRTb2NrZXRGYWN0b3J5IHNvY2tldF9mYWN0b3J5OwogCiAgIHNv
Y2tldF9mYWN0b3J5LnNldF9uZXh0X3NlcnZlcl90Y3Bfc29ja2V0KHNvY2tldCk7Ci0gIHN0ZDo6
dW5pcXVlX3B0cjxUQ1BQb3J0PiBwb3J0KENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEsICZzb2Nr
ZXRfZmFjdG9yeSkpOworICBhdXRvIHBvcnQgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxLCAm
c29ja2V0X2ZhY3RvcnkpOwogCiAgIHNvY2tldC0+c2V0X3N0YXRlKEFzeW5jUGFja2V0U29ja2V0
OjpTVEFURV9CSU5ESU5HKTsKICAgcG9ydC0+UHJlcGFyZUFkZHJlc3MoKTsKQEAgLTE1MTksMTAg
KzE1MTIsMTAgQEAgdm9pZCBQb3J0VGVzdDo6VGVzdENyb3NzRmFtaWx5UG9ydHMoaW50IHR5cGUp
IHsKICAgICBGYWtlQXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCA9IG5ldyBGYWtlQXN5bmNQYWNr
ZXRTb2NrZXQoKTsKICAgICBpZiAodHlwZSA9PSBTT0NLX0RHUkFNKSB7CiAgICAgICBmYWN0b3J5
LnNldF9uZXh0X3VkcF9zb2NrZXQoc29ja2V0KTsKLSAgICAgIHBvcnRzW2ldLnJlc2V0KENyZWF0
ZVVkcFBvcnQoYWRkcmVzc2VzW2ldLCAmZmFjdG9yeSkpOworICAgICAgcG9ydHNbaV0gPSBDcmVh
dGVVZHBQb3J0KGFkZHJlc3Nlc1tpXSwgJmZhY3RvcnkpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9
PSBTT0NLX1NUUkVBTSkgewogICAgICAgZmFjdG9yeS5zZXRfbmV4dF9zZXJ2ZXJfdGNwX3NvY2tl
dChzb2NrZXQpOwotICAgICAgcG9ydHNbaV0ucmVzZXQoQ3JlYXRlVGNwUG9ydChhZGRyZXNzZXNb
aV0sICZmYWN0b3J5KSk7CisgICAgICBwb3J0c1tpXSA9IENyZWF0ZVRjcFBvcnQoYWRkcmVzc2Vz
W2ldLCAmZmFjdG9yeSk7CiAgICAgfQogICAgIHNvY2tldC0+c2V0X3N0YXRlKEFzeW5jUGFja2V0
U29ja2V0OjpTVEFURV9CSU5ESU5HKTsKICAgICBzb2NrZXQtPlNpZ25hbEFkZHJlc3NSZWFkeShz
b2NrZXQsIGFkZHJlc3Nlc1tpXSk7CkBAIC0xNTg2LDcgKzE1NzksNyBAQCBURVNUX0YoUG9ydFRl
c3QsIFRlc3RVZHBWNkNyb3NzVHlwZVBvcnRzKSB7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsg
aSsrKSB7CiAgICAgRmFrZUFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQgPSBuZXcgRmFrZUFzeW5j
UGFja2V0U29ja2V0KCk7CiAgICAgZmFjdG9yeS5zZXRfbmV4dF91ZHBfc29ja2V0KHNvY2tldCk7
Ci0gICAgcG9ydHNbaV0ucmVzZXQoQ3JlYXRlVWRwUG9ydChhZGRyZXNzZXNbaV0sICZmYWN0b3J5
KSk7CisgICAgcG9ydHNbaV0gPSBDcmVhdGVVZHBQb3J0KGFkZHJlc3Nlc1tpXSwgJmZhY3Rvcnkp
OwogICAgIHNvY2tldC0+c2V0X3N0YXRlKEFzeW5jUGFja2V0U29ja2V0OjpTVEFURV9CSU5ESU5H
KTsKICAgICBzb2NrZXQtPlNpZ25hbEFkZHJlc3NSZWFkeShzb2NrZXQsIGFkZHJlc3Nlc1tpXSk7
CiAgICAgcG9ydHNbaV0tPlByZXBhcmVBZGRyZXNzKCk7CkBAIC0xNjExLDI4ICsxNjA0LDI3IEBA
IFRFU1RfRihQb3J0VGVzdCwgVGVzdFVkcFY2Q3Jvc3NUeXBlUG9ydHMpIHsKIC8vIGdldCB0aHJv
dWdoIERlZmF1bHREc2NwVmFsdWUuCiBURVNUX0YoUG9ydFRlc3QsIFRlc3REZWZhdWx0RHNjcFZh
bHVlKSB7CiAgIGludCBkc2NwOwotICBzdGQ6OnVuaXF1ZV9wdHI8VURQUG9ydD4gdWRwcG9ydChD
cmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKSk7CisgIGF1dG8gdWRwcG9ydCA9IENyZWF0ZVVkcFBv
cnQoa0xvY2FsQWRkcjEpOwogICBFWFBFQ1RfRVEoMCwgdWRwcG9ydC0+U2V0T3B0aW9uKHJ0Yzo6
U29ja2V0OjpPUFRfRFNDUCwgcnRjOjpEU0NQX0NTNikpOwogICBFWFBFQ1RfRVEoMCwgdWRwcG9y
dC0+R2V0T3B0aW9uKHJ0Yzo6U29ja2V0OjpPUFRfRFNDUCwgJmRzY3ApKTsKLSAgc3RkOjp1bmlx
dWVfcHRyPFRDUFBvcnQ+IHRjcHBvcnQoQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSkpOworICBh
dXRvIHRjcHBvcnQgPSBDcmVhdGVUY3BQb3J0KGtMb2NhbEFkZHIxKTsKICAgRVhQRUNUX0VRKDAs
IHRjcHBvcnQtPlNldE9wdGlvbihydGM6OlNvY2tldDo6T1BUX0RTQ1AsIHJ0Yzo6RFNDUF9BRjMx
KSk7CiAgIEVYUEVDVF9FUSgwLCB0Y3Bwb3J0LT5HZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9E
U0NQLCAmZHNjcCkpOwogICBFWFBFQ1RfRVEocnRjOjpEU0NQX0FGMzEsIGRzY3ApOwotICBzdGQ6
OnVuaXF1ZV9wdHI8U3R1blBvcnQ+IHN0dW5wb3J0KAotICAgICAgQ3JlYXRlU3R1blBvcnQoa0xv
Y2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSkpOworICBhdXRvIHN0dW5wb3J0ID0gQ3Jl
YXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSk7CiAgIEVYUEVD
VF9FUSgwLCBzdHVucG9ydC0+U2V0T3B0aW9uKHJ0Yzo6U29ja2V0OjpPUFRfRFNDUCwgcnRjOjpE
U0NQX0FGNDEpKTsKICAgRVhQRUNUX0VRKDAsIHN0dW5wb3J0LT5HZXRPcHRpb24ocnRjOjpTb2Nr
ZXQ6Ok9QVF9EU0NQLCAmZHNjcCkpOwogICBFWFBFQ1RfRVEocnRjOjpEU0NQX0FGNDEsIGRzY3Ap
OwotICBzdGQ6OnVuaXF1ZV9wdHI8VHVyblBvcnQ+IHR1cm5wb3J0MSgKLSAgICAgIENyZWF0ZVR1
cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1VEUCwgUFJP
VE9fVURQKSk7CisgIGF1dG8gdHVybnBvcnQxID0KKyAgICAgIENyZWF0ZVR1cm5Qb3J0KGtMb2Nh
bEFkZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCksIFBST1RPX1VEUCwgUFJPVE9fVURQKTsKICAg
Ly8gU29ja2V0IGlzIGNyZWF0ZWQgaW4gUHJlcGFyZUFkZHJlc3MuCiAgIHR1cm5wb3J0MS0+UHJl
cGFyZUFkZHJlc3MoKTsKICAgRVhQRUNUX0VRKDAsIHR1cm5wb3J0MS0+U2V0T3B0aW9uKHJ0Yzo6
U29ja2V0OjpPUFRfRFNDUCwgcnRjOjpEU0NQX0NTNykpOwogICBFWFBFQ1RfRVEoMCwgdHVybnBv
cnQxLT5HZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9EU0NQLCAmZHNjcCkpOwogICBFWFBFQ1Rf
RVEocnRjOjpEU0NQX0NTNywgZHNjcCk7CiAgIC8vIFRoaXMgd2lsbCB2ZXJpZnkgY29ycmVjdCB2
YWx1ZSByZXR1cm5lZCB3aXRob3V0IHRoZSBzb2NrZXQuCi0gIHN0ZDo6dW5pcXVlX3B0cjxUdXJu
UG9ydD4gdHVybnBvcnQyKAotICAgICAgQ3JlYXRlVHVyblBvcnQoa0xvY2FsQWRkcjEsIG5hdF9z
b2NrZXRfZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQUk9UT19VRFApKTsKKyAgYXV0byB0dXJucG9y
dDIgPQorICAgICAgQ3JlYXRlVHVyblBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9y
eTEoKSwgUFJPVE9fVURQLCBQUk9UT19VRFApOwogICBFWFBFQ1RfRVEoMCwgdHVybnBvcnQyLT5T
ZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9QVF9EU0NQLCBydGM6OkRTQ1BfQ1M2KSk7CiAgIEVYUEVD
VF9FUSgwLCB0dXJucG9ydDItPkdldE9wdGlvbihydGM6OlNvY2tldDo6T1BUX0RTQ1AsICZkc2Nw
KSk7CiAgIEVYUEVDVF9FUShydGM6OkRTQ1BfQ1M2LCBkc2NwKTsKQEAgLTE2NDAsMTAgKzE2MzIs
OCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3REZWZhdWx0RHNjcFZhbHVlKSB7CiAKIC8vIFRlc3Qg
c2VuZGluZyBTVFVOIG1lc3NhZ2VzLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0U2VuZFN0dW5NZXNz
YWdlKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gbHBvcnQoCi0gICAgICBDcmVhdGVU
ZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIikpOwotICBzdGQ6OnVuaXF1ZV9w
dHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJy
ZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBscG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFk
ZHIxLCAibGZyYWciLCAibHBhc3MiKTsKKyAgYXV0byBycG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtM
b2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsKICAgbHBvcnQtPlNldEljZVJvbGUoY3JpY2tl
dDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIGxwb3J0LT5TZXRJY2VUaWVicmVha2VyKGtUaWVi
cmVha2VyMSk7CiAgIHJwb3J0LT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExF
RCk7CkBAIC0xNjg5LDE3ICsxNjc5LDE3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFNlbmRTdHVu
TWVzc2FnZSkgewogICBBU1NFUlRfVFJVRShtc2ctPkdldFVJbnQzMihTVFVOX0FUVFJfUkVUUkFO
U01JVF9DT1VOVCkgPT0gTlVMTCk7CiAKICAgLy8gU2F2ZSBhIGNvcHkgb2YgdGhlIEJJTkRJTkct
UkVRVUVTVCBmb3IgdXNlIGJlbG93LgotICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gcmVx
dWVzdChDb3B5U3R1bk1lc3NhZ2UobXNnKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxJY2VNZXNzYWdl
PiByZXF1ZXN0ID0gQ29weVN0dW5NZXNzYWdlKCptc2cpOwogCiAgIC8vIFJlY2VpdmUgdGhlIEJJ
TkRJTkctUkVRVUVTVCBhbmQgcmVzcG9uZCB3aXRoIEJJTkRJTkctUkVTUE9OU0UuCiAgIHJjb25u
LT5PblJlYWRQYWNrZXQobHBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAg
ICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQ
YWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVm
KCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBtc2cgPSBycG9ydC0+bGFz
dF9zdHVuX21zZygpOwogICBBU1NFUlRfVFJVRShtc2cgIT0gTlVMTCk7CiAgIEVYUEVDVF9FUShT
VFVOX0JJTkRJTkdfUkVTUE9OU0UsIG1zZy0+dHlwZSgpKTsKICAgLy8gUmVjZWl2ZWQgYSBCSU5E
SU5HLVJFU1BPTlNFLgogICBsY29ubi0+T25SZWFkUGFja2V0KHJwb3J0LT5sYXN0X3N0dW5fYnVm
KCktPmRhdGE8Y2hhcj4oKSwKLSAgICAgICAgICAgICAgICAgICAgICBycG9ydC0+bGFzdF9zdHVu
X2J1ZigpLT5zaXplKCksIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICBycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3VzICovIC0x
KTsKICAgLy8gVmVyaWZ5IHRoZSBTVFVOIFN0YXRzLgogICBFWFBFQ1RfRVEoMVUsIGxjb25uLT5z
dGF0cygpLnNlbnRfcGluZ19yZXF1ZXN0c190b3RhbCk7CiAgIEVYUEVDVF9FUSgxVSwgbGNvbm4t
PnN0YXRzKCkuc2VudF9waW5nX3JlcXVlc3RzX2JlZm9yZV9maXJzdF9yZXNwb25zZSk7CkBAIC0x
Nzc3LDEzICsxNzY3LDEzIEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFNlbmRTdHVuTWVzc2FnZSkg
ewogICBFWFBFQ1RfRVEoMlUsIHJldHJhbnNtaXRfYXR0ci0+dmFsdWUoKSk7CiAKICAgLy8gUmVz
cG9uZCB3aXRoIGEgQklORElORy1SRVNQT05TRS4KLSAgcmVxdWVzdC5yZXNldChDb3B5U3R1bk1l
c3NhZ2UobXNnKSk7CisgIHJlcXVlc3QgPSBDb3B5U3R1bk1lc3NhZ2UoKm1zZyk7CiAgIGxjb25u
LT5PblJlYWRQYWNrZXQocnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+ZGF0YTxjaGFyPigpLAotICAg
ICAgICAgICAgICAgICAgICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgcnRjOjpQ
YWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgIHJwb3J0LT5sYXN0X3N0dW5fYnVm
KCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBtc2cgPSBscG9ydC0+bGFz
dF9zdHVuX21zZygpOwogICAvLyBSZWNlaXZlIHRoZSBCSU5ESU5HLVJFU1BPTlNFLgogICByY29u
bi0+T25SZWFkUGFja2V0KGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAg
ICAgICAgICAgICAgICAgICAgICBscG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6
UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICBscG9ydC0+bGFzdF9zdHVuX2J1
ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKIAogICAvLyBWZXJpZnkgdGhl
IFN0dW4gcGluZyBzdGF0cy4KICAgRVhQRUNUX0VRKDNVLCByY29ubi0+c3RhdHMoKS5zZW50X3Bp
bmdfcmVxdWVzdHNfdG90YWwpOwpAQCAtMTgwNCwxMCArMTc5NCw4IEBAIFRFU1RfRihQb3J0VGVz
dCwgVGVzdFNlbmRTdHVuTWVzc2FnZSkgewogfQogCiBURVNUX0YoUG9ydFRlc3QsIFRlc3ROb21p
bmF0aW9uKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gbHBvcnQoCi0gICAgICBDcmVh
dGVUZXN0UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIikpOwotICBzdGQ6OnVuaXF1
ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIs
ICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBscG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2Nh
bEFkZHIxLCAibGZyYWciLCAibHBhc3MiKTsKKyAgYXV0byBycG9ydCA9IENyZWF0ZVRlc3RQb3J0
KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsKICAgbHBvcnQtPlNldEljZVJvbGUoY3Jp
Y2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIGxwb3J0LT5TZXRJY2VUaWVicmVha2VyKGtU
aWVicmVha2VyMSk7CiAgIHJwb3J0LT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJP
TExFRCk7CkBAIC0xODM3LDcgKzE4MjUsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3ROb21pbmF0
aW9uKSB7CiAgIEFTU0VSVF9UUlVFX1dBSVQobHBvcnQtPmxhc3Rfc3R1bl9tc2coKSwga0RlZmF1
bHRUaW1lb3V0KTsKICAgQVNTRVJUX1RSVUUobHBvcnQtPmxhc3Rfc3R1bl9idWYoKSk7CiAgIHJj
b25uLT5PblJlYWRQYWNrZXQobHBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+ZGF0YTxjaGFyPigpLAot
ICAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwgcnRj
OjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgIGxwb3J0LT5sYXN0X3N0dW5f
YnVmKCktPnNpemUoKSwgLyogcGFja2V0X3RpbWVfdXMgKi8gLTEpOwogICBFWFBFQ1RfRVEobm9t
aW5hdGlvbiwgcmNvbm4tPnJlbW90ZV9ub21pbmF0aW9uKCkpOwogICBFWFBFQ1RfRkFMU0UobGNv
bm4tPm5vbWluYXRlZCgpKTsKICAgRVhQRUNUX1RSVUUocmNvbm4tPm5vbWluYXRlZCgpKTsKQEAg
LTE4NDksNyArMTgzNyw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdE5vbWluYXRpb24pIHsKICAg
QVNTRVJUX1RSVUVfV0FJVChycG9ydC0+bGFzdF9zdHVuX21zZygpLCBrRGVmYXVsdFRpbWVvdXQp
OwogICBBU1NFUlRfVFJVRShycG9ydC0+bGFzdF9zdHVuX2J1ZigpKTsKICAgbGNvbm4tPk9uUmVh
ZFBhY2tldChycG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5kYXRhPGNoYXI+KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgcnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCBydGM6OlBhY2tldFRp
bWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgcnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6
ZSgpLCAvKiBwYWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIEVYUEVDVF9FUShub21pbmF0aW9uLCBs
Y29ubi0+YWNrZWRfbm9taW5hdGlvbigpKTsKICAgRVhQRUNUX1RSVUUobGNvbm4tPm5vbWluYXRl
ZCgpKTsKICAgRVhQRUNUX1RSVUUocmNvbm4tPm5vbWluYXRlZCgpKTsKQEAgLTE4NjAsMTAgKzE4
NDgsOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3ROb21pbmF0aW9uKSB7CiBURVNUX0YoUG9ydFRl
c3QsIFRlc3RSb3VuZFRyaXBUaW1lKSB7CiAgIHJ0Yzo6U2NvcGVkRmFrZUNsb2NrIGNsb2NrOwog
Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gbHBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9y
dChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIikpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVz
dFBvcnQ+IHJwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIs
ICJycGFzcyIpKTsKKyAgYXV0byBscG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAi
bGZyYWciLCAibHBhc3MiKTsKKyAgYXV0byBycG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFk
ZHIyLCAicmZyYWciLCAicnBhc3MiKTsKICAgbHBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNF
Uk9MRV9DT05UUk9MTElORyk7CiAgIGxwb3J0LT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2Vy
MSk7CiAgIHJwb3J0LT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CkBA
IC0xOTAxLDEwICsxODg3LDggQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Um91bmRUcmlwVGltZSkg
ewogfQogCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RVc2VDYW5kaWRhdGVBdHRyaWJ1dGUpIHsKLSAg
c3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBscG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtM
b2NhbEFkZHIxLCAibGZyYWciLCAibHBhc3MiKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9y
dD4gcnBvcnQoCi0gICAgICBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJw
YXNzIikpOworICBhdXRvIGxwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJh
ZyIsICJscGFzcyIpOworICBhdXRvIHJwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIs
ICJyZnJhZyIsICJycGFzcyIpOwogICBscG9ydC0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xF
X0NPTlRST0xMSU5HKTsKICAgbHBvcnQtPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIxKTsK
ICAgcnBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKQEAgLTE5
MzIsMTAgKzE5MTYsOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RVc2VDYW5kaWRhdGVBdHRyaWJ1
dGUpIHsKIC8vIHRoZSByZW1vdGUgbmV0d29yayBjb3N0cyBhcmUgdXBkYXRlZCB3aXRoIHRoZSBz
dHVuIGJpbmRpbmcgcmVxdWVzdHMuCiBURVNUX0YoUG9ydFRlc3QsIFRlc3ROZXR3b3JrQ29zdENo
YW5nZSkgewogICBydGM6Ok5ldHdvcmsqIHRlc3RfbmV0d29yayA9IE1ha2VOZXR3b3JrKGtMb2Nh
bEFkZHIxKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBscG9ydCgKLSAgICAgIENyZWF0
ZVRlc3RQb3J0KHRlc3RfbmV0d29yaywgImxmcmFnIiwgImxwYXNzIikpOwotICBzdGQ6OnVuaXF1
ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQodGVzdF9uZXR3b3Jr
LCAicmZyYWciLCAicnBhc3MiKSk7CisgIGF1dG8gbHBvcnQgPSBDcmVhdGVUZXN0UG9ydCh0ZXN0
X25ldHdvcmssICJsZnJhZyIsICJscGFzcyIpOworICBhdXRvIHJwb3J0ID0gQ3JlYXRlVGVzdFBv
cnQodGVzdF9uZXR3b3JrLCAicmZyYWciLCAicnBhc3MiKTsKICAgbHBvcnQtPlNldEljZVJvbGUo
Y3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIGxwb3J0LT5TZXRJY2VUaWVicmVha2Vy
KGtUaWVicmVha2VyMSk7CiAgIHJwb3J0LT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09O
VFJPTExFRCk7CkBAIC0xOTgyLDcgKzE5NjQsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3ROZXR3
b3JrQ29zdENoYW5nZSkgewogICBFWFBFQ1RfRVEoU1RVTl9CSU5ESU5HX1JFUVVFU1QsIG1zZy0+
dHlwZSgpKTsKICAgLy8gUGFzcyB0aGUgYmluZGluZyByZXF1ZXN0IHRvIHJwb3J0LgogICByY29u
bi0+T25SZWFkUGFja2V0KGxwb3J0LT5sYXN0X3N0dW5fYnVmKCktPmRhdGE8Y2hhcj4oKSwKLSAg
ICAgICAgICAgICAgICAgICAgICBscG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5zaXplKCksIHJ0Yzo6
UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICBscG9ydC0+bGFzdF9zdHVuX2J1
ZigpLT5zaXplKCksIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgLy8gV2FpdCB1bnRpbCBy
cG9ydCBzZW5kcyB0aGUgcmVzcG9uc2UgYW5kIHRoZW4gY2hlY2sgdGhlIHJlbW90ZSBuZXR3b3Jr
IGNvc3QuCiAgIEFTU0VSVF9UUlVFX1dBSVQocnBvcnQtPmxhc3Rfc3R1bl9tc2coKSAhPSBOVUxM
LCBrRGVmYXVsdFRpbWVvdXQpOwogICBFWFBFQ1RfRVEocnRjOjprTmV0d29ya0Nvc3RIaWdoLCBy
Y29ubi0+cmVtb3RlX2NhbmRpZGF0ZSgpLm5ldHdvcmtfY29zdCgpKTsKQEAgLTE5OTAsMTAgKzE5
NzIsOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3ROZXR3b3JrQ29zdENoYW5nZSkgewogCiBURVNU
X0YoUG9ydFRlc3QsIFRlc3ROZXR3b3JrSW5mb0F0dHJpYnV0ZSkgewogICBydGM6Ok5ldHdvcmsq
IHRlc3RfbmV0d29yayA9IE1ha2VOZXR3b3JrKGtMb2NhbEFkZHIxKTsKLSAgc3RkOjp1bmlxdWVf
cHRyPFRlc3RQb3J0PiBscG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KHRlc3RfbmV0d29yaywg
ImxmcmFnIiwgImxwYXNzIikpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAot
ICAgICAgQ3JlYXRlVGVzdFBvcnQodGVzdF9uZXR3b3JrLCAicmZyYWciLCAicnBhc3MiKSk7Cisg
IGF1dG8gbHBvcnQgPSBDcmVhdGVUZXN0UG9ydCh0ZXN0X25ldHdvcmssICJsZnJhZyIsICJscGFz
cyIpOworICBhdXRvIHJwb3J0ID0gQ3JlYXRlVGVzdFBvcnQodGVzdF9uZXR3b3JrLCAicmZyYWci
LCAicnBhc3MiKTsKICAgbHBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9M
TElORyk7CiAgIGxwb3J0LT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMSk7CiAgIHJwb3J0
LT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CkBAIC0yMDM3LDQ0ICsy
MDE3LDQzIEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdE5ldHdvcmtJbmZvQXR0cmlidXRlKSB7CiAv
LyBUZXN0IGhhbmRsaW5nIFNUVU4gbWVzc2FnZXMuCiBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5k
bGVTdHVuTWVzc2FnZSkgewogICAvLyBPdXIgcG9ydCB3aWxsIGFjdCBhcyB0aGUgInJlbW90ZSIg
cG9ydC4KLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiBwb3J0KENyZWF0ZVRlc3RQb3J0KGtM
b2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKSk7CisgIGF1dG8gcG9ydCA9IENyZWF0ZVRlc3RQ
b3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8
SWNlTWVzc2FnZT4gaW5fbXNnLCBvdXRfbXNnOwotICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZUJ1ZmZl
cldyaXRlcj4gYnVmKG5ldyBCeXRlQnVmZmVyV3JpdGVyKCkpOworICBhdXRvIGJ1ZiA9IGFic2w6
Om1ha2VfdW5pcXVlPEJ5dGVCdWZmZXJXcml0ZXI+KCk7CiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBh
ZGRyKGtMb2NhbEFkZHIxKTsKICAgc3RkOjpzdHJpbmcgdXNlcm5hbWU7CiAKICAgLy8gQklORElO
Ry1SRVFVRVNUIGZyb20gbG9jYWwgdG8gcmVtb3RlIHdpdGggdmFsaWQgSUNFIHVzZXJuYW1lLAog
ICAvLyBNRVNTQUdFLUlOVEVHUklUWSwgYW5kIEZJTkdFUlBSSU5ULgotICBpbl9tc2cucmVzZXQo
Ci0gICAgICBDcmVhdGVTdHVuTWVzc2FnZVdpdGhVc2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVT
VCwgInJmcmFnOmxmcmFnIikpOworICBpbl9tc2cgPSBDcmVhdGVTdHVuTWVzc2FnZVdpdGhVc2Vy
bmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgInJmcmFnOmxmcmFnIik7CiAgIGluX21zZy0+QWRk
TWVzc2FnZUludGVncml0eSgicnBhc3MiKTsKICAgaW5fbXNnLT5BZGRGaW5nZXJwcmludCgpOwot
ICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsKKyAgV3JpdGVTdHVu
TWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfVFJVRShwb3J0LT5HZXRTdHVu
TWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfVFJV
RShvdXRfbXNnLmdldCgpICE9IE5VTEwpOwogICBFWFBFQ1RfRVEoImxmcmFnIiwgdXNlcm5hbWUp
OwogCiAgIC8vIEJJTkRJTkctUkVTUE9OU0Ugd2l0aG91dCB1c2VybmFtZSwgd2l0aCBNRVNTQUdF
LUlOVEVHUklUWSBhbmQgRklOR0VSUFJJTlQuCi0gIGluX21zZy5yZXNldChDcmVhdGVTdHVuTWVz
c2FnZShTVFVOX0JJTkRJTkdfUkVTUE9OU0UpKTsKKyAgaW5fbXNnID0gQ3JlYXRlU3R1bk1lc3Nh
Z2UoU1RVTl9CSU5ESU5HX1JFU1BPTlNFKTsKICAgaW5fbXNnLT5BZGRBdHRyaWJ1dGUoYWJzbDo6
bWFrZV91bmlxdWU8U3R1blhvckFkZHJlc3NBdHRyaWJ1dGU+KAogICAgICAgU1RVTl9BVFRSX1hP
Ul9NQVBQRURfQUREUkVTUywga0xvY2FsQWRkcjIpKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50
ZWdyaXR5KCJycGFzcyIpOwogICBpbl9tc2ctPkFkZEZpbmdlcnByaW50KCk7Ci0gIFdyaXRlU3R1
bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCpp
bl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9UUlVFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1
Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cu
Z2V0KCkgIT0gTlVMTCk7CiAgIEVYUEVDVF9FUSgiIiwgdXNlcm5hbWUpOwogCiAgIC8vIEJJTkRJ
TkctRVJST1ItUkVTUE9OU0Ugd2l0aG91dCB1c2VybmFtZSwgd2l0aCBlcnJvciwgTS1JLCBhbmQg
RklOR0VSUFJJTlQuCi0gIGluX21zZy5yZXNldChDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJ
TkdfRVJST1JfUkVTUE9OU0UpKTsKKyAgaW5fbXNnID0gQ3JlYXRlU3R1bk1lc3NhZ2UoU1RVTl9C
SU5ESU5HX0VSUk9SX1JFU1BPTlNFKTsKICAgaW5fbXNnLT5BZGRBdHRyaWJ1dGUoYWJzbDo6bWFr
ZV91bmlxdWU8U3R1bkVycm9yQ29kZUF0dHJpYnV0ZT4oCiAgICAgICBTVFVOX0FUVFJfRVJST1Jf
Q09ERSwgU1RVTl9FUlJPUl9TRVJWRVJfRVJST1IsCiAgICAgICBTVFVOX0VSUk9SX1JFQVNPTl9T
RVJWRVJfRVJST1IpKTsKICAgaW5fbXNnLT5BZGRGaW5nZXJwcmludCgpOwotICBXcml0ZVN0dW5N
ZXNzYWdlKGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5f
bXNnLCBidWYuZ2V0KCkpOwogICBFWFBFQ1RfVFJVRShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYt
PkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfVFJVRShvdXRfbXNnLmdl
dCgpICE9IE5VTEwpOwpAQCAtMjA4NywxOCArMjA2NiwxOCBAQCBURVNUX0YoUG9ydFRlc3QsIFRl
c3RIYW5kbGVTdHVuTWVzc2FnZSkgewogCiAvLyBUZXN0cyBoYW5kbGluZyBvZiBJQ0UgYmluZGlu
ZyByZXF1ZXN0cyB3aXRoIG1pc3Npbmcgb3IgaW5jb3JyZWN0IHVzZXJuYW1lcy4KIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFkVXNlcm5hbWUpIHsKLSAgc3RkOjp1bmlx
dWVfcHRyPFRlc3RQb3J0PiBwb3J0KENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWci
LCAicnBhc3MiKSk7CisgIGF1dG8gcG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAi
cmZyYWciLCAicnBhc3MiKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gaW5fbXNn
LCBvdXRfbXNnOwotICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZUJ1ZmZlcldyaXRlcj4gYnVmKG5ldyBC
eXRlQnVmZmVyV3JpdGVyKCkpOworICBhdXRvIGJ1ZiA9IGFic2w6Om1ha2VfdW5pcXVlPEJ5dGVC
dWZmZXJXcml0ZXI+KCk7CiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBhZGRyKGtMb2NhbEFkZHIxKTsK
ICAgc3RkOjpzdHJpbmcgdXNlcm5hbWU7CiAKICAgLy8gQklORElORy1SRVFVRVNUIHdpdGggbm8g
dXNlcm5hbWUuCi0gIGluX21zZy5yZXNldChDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdf
UkVRVUVTVCkpOworICBpbl9tc2cgPSBDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfUkVR
VUVTVCk7CiAgIGluX21zZy0+QWRkTWVzc2FnZUludGVncml0eSgicnBhc3MiKTsKICAgaW5fbXNn
LT5BZGRGaW5nZXJwcmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVm
LmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBF
Q1RfVFJVRShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwg
YWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2Vy
bmFtZSkpOwogICBFWFBFQ1RfVFJVRShvdXRfbXNnLmdldCgpID09IE5VTEwpOwpAQCAtMjEwNiwx
MCArMjA4NSwxMCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZFVz
ZXJuYW1lKSB7CiAgIEVYUEVDVF9FUShTVFVOX0VSUk9SX0JBRF9SRVFVRVNULCBwb3J0LT5sYXN0
X3N0dW5fZXJyb3JfY29kZSgpKTsKIAogICAvLyBCSU5ESU5HLVJFUVVFU1Qgd2l0aCBlbXB0eSB1
c2VybmFtZS4KLSAgaW5fbXNnLnJlc2V0KENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNU
VU5fQklORElOR19SRVFVRVNULCAiIikpOworICBpbl9tc2cgPSBDcmVhdGVTdHVuTWVzc2FnZVdp
dGhVc2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgIiIpOwogICBpbl9tc2ctPkFkZE1lc3Nh
Z2VJbnRlZ3JpdHkoInJwYXNzIik7CiAgIGluX21zZy0+QWRkRmluZ2VycHJpbnQoKTsKLSAgV3Jp
dGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3Nh
Z2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX1RSVUUocG9ydC0+R2V0U3R1bk1lc3Nh
Z2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIsICZvdXRfbXNnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUpKTsKICAgRVhQRUNUX1RSVUUob3V0
X21zZy5nZXQoKSA9PSBOVUxMKTsKQEAgLTIxMTcsMTAgKzIwOTYsMTAgQEAgVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRVc2VybmFtZSkgewogICBFWFBFQ1RfRVEoU1RV
Tl9FUlJPUl9VTkFVVEhPUklaRUQsIHBvcnQtPmxhc3Rfc3R1bl9lcnJvcl9jb2RlKCkpOwogCiAg
IC8vIEJJTkRJTkctUkVRVUVTVCB3aXRoIHRvby1zaG9ydCB1c2VybmFtZS4KLSAgaW5fbXNnLnJl
c2V0KENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAi
cmZyYSIpKTsKKyAgaW5fbXNnID0gQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUoU1RVTl9C
SU5ESU5HX1JFUVVFU1QsICJyZnJhIik7CiAgIGluX21zZy0+QWRkTWVzc2FnZUludGVncml0eSgi
cnBhc3MiKTsKICAgaW5fbXNnLT5BZGRGaW5nZXJwcmludCgpOwotICBXcml0ZVN0dW5NZXNzYWdl
KGluX21zZy5nZXQoKSwgYnVmLmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBi
dWYuZ2V0KCkpOwogICBFWFBFQ1RfVFJVRShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEo
KSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfVFJVRShvdXRfbXNnLmdldCgpID09
IE5VTEwpOwpAQCAtMjEyOCwxMSArMjEwNywxMCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5k
bGVTdHVuTWVzc2FnZUJhZFVzZXJuYW1lKSB7CiAgIEVYUEVDVF9FUShTVFVOX0VSUk9SX1VOQVVU
SE9SSVpFRCwgcG9ydC0+bGFzdF9zdHVuX2Vycm9yX2NvZGUoKSk7CiAKICAgLy8gQklORElORy1S
RVFVRVNUIHdpdGggcmV2ZXJzZWQgdXNlcm5hbWUuCi0gIGluX21zZy5yZXNldCgKLSAgICAgIENy
ZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAibGZyYWc6
cmZyYWciKSk7CisgIGluX21zZyA9IENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5f
QklORElOR19SRVFVRVNULCAibGZyYWc6cmZyYWciKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50
ZWdyaXR5KCJycGFzcyIpOwogICBpbl9tc2ctPkFkZEZpbmdlcnByaW50KCk7Ci0gIFdyaXRlU3R1
bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCpp
bl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9UUlVFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1
Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9UUlVFKG91dF9tc2cu
Z2V0KCkgPT0gTlVMTCk7CkBAIC0yMTQwLDExICsyMTE4LDEwIEBAIFRFU1RfRihQb3J0VGVzdCwg
VGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFkVXNlcm5hbWUpIHsKICAgRVhQRUNUX0VRKFNUVU5fRVJS
T1JfVU5BVVRIT1JJWkVELCBwb3J0LT5sYXN0X3N0dW5fZXJyb3JfY29kZSgpKTsKIAogICAvLyBC
SU5ESU5HLVJFUVVFU1Qgd2l0aCBnYXJiYWdlIHVzZXJuYW1lLgotICBpbl9tc2cucmVzZXQoCi0g
ICAgICBDcmVhdGVTdHVuTWVzc2FnZVdpdGhVc2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwg
ImFiY2Q6ZWZnaCIpKTsKKyAgaW5fbXNnID0gQ3JlYXRlU3R1bk1lc3NhZ2VXaXRoVXNlcm5hbWUo
U1RVTl9CSU5ESU5HX1JFUVVFU1QsICJhYmNkOmVmZ2giKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdl
SW50ZWdyaXR5KCJycGFzcyIpOwogICBpbl9tc2ctPkFkZEZpbmdlcnByaW50KCk7Ci0gIFdyaXRl
U3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5NZXNzYWdl
KCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9UUlVFKHBvcnQtPkdldFN0dW5NZXNzYWdl
KGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lKSk7CiAgIEVYUEVDVF9UUlVFKG91dF9t
c2cuZ2V0KCkgPT0gTlVMTCk7CkBAIC0yMTU1LDE5ICsyMTMyLDE4IEBAIFRFU1RfRihQb3J0VGVz
dCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFkVXNlcm5hbWUpIHsKIC8vIFRlc3QgaGFuZGxpbmcg
U1RVTiBtZXNzYWdlcyB3aXRoIG1pc3Npbmcgb3IgbWFsZm9ybWVkIE0tSS4KIFRFU1RfRihQb3J0
VGVzdCwgVGVzdEhhbmRsZVN0dW5NZXNzYWdlQmFkTWVzc2FnZUludGVncml0eSkgewogICAvLyBP
dXIgcG9ydCB3aWxsIGFjdCBhcyB0aGUgInJlbW90ZSIgcG9ydC4KLSAgc3RkOjp1bmlxdWVfcHRy
PFRlc3RQb3J0PiBwb3J0KENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBh
c3MiKSk7CisgIGF1dG8gcG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWci
LCAicnBhc3MiKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVzc2FnZT4gaW5fbXNnLCBvdXRf
bXNnOwotICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZUJ1ZmZlcldyaXRlcj4gYnVmKG5ldyBCeXRlQnVm
ZmVyV3JpdGVyKCkpOworICBhdXRvIGJ1ZiA9IGFic2w6Om1ha2VfdW5pcXVlPEJ5dGVCdWZmZXJX
cml0ZXI+KCk7CiAgIHJ0Yzo6U29ja2V0QWRkcmVzcyBhZGRyKGtMb2NhbEFkZHIxKTsKICAgc3Rk
OjpzdHJpbmcgdXNlcm5hbWU7CiAKICAgLy8gQklORElORy1SRVFVRVNUIGZyb20gbG9jYWwgdG8g
cmVtb3RlIHdpdGggdmFsaWQgSUNFIHVzZXJuYW1lIGFuZAogICAvLyBGSU5HRVJQUklOVCwgYnV0
IG5vIE1FU1NBR0UtSU5URUdSSVRZLgotICBpbl9tc2cucmVzZXQoCi0gICAgICBDcmVhdGVTdHVu
TWVzc2FnZVdpdGhVc2VybmFtZShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgInJmcmFnOmxmcmFnIikp
OworICBpbl9tc2cgPSBDcmVhdGVTdHVuTWVzc2FnZVdpdGhVc2VybmFtZShTVFVOX0JJTkRJTkdf
UkVRVUVTVCwgInJmcmFnOmxmcmFnIik7CiAgIGluX21zZy0+QWRkRmluZ2VycHJpbnQoKTsKLSAg
V3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1l
c3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX1RSVUUocG9ydC0+R2V0U3R1bk1l
c3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIGFkZHIsICZvdXRfbXNnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUpKTsKICAgRVhQRUNUX1RSVUUo
b3V0X21zZy5nZXQoKSA9PSBOVUxMKTsKQEAgLTIxNzYsMTEgKzIxNTIsMTAgQEAgVEVTVF9GKFBv
cnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRNZXNzYWdlSW50ZWdyaXR5KSB7CiAKICAg
Ly8gQklORElORy1SRVFVRVNUIGZyb20gbG9jYWwgdG8gcmVtb3RlIHdpdGggdmFsaWQgSUNFIHVz
ZXJuYW1lIGFuZAogICAvLyBGSU5HRVJQUklOVCwgYnV0IGludmFsaWQgTUVTU0FHRS1JTlRFR1JJ
VFkuCi0gIGluX21zZy5yZXNldCgKLSAgICAgIENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1l
KFNUVU5fQklORElOR19SRVFVRVNULCAicmZyYWc6bGZyYWciKSk7CisgIGluX21zZyA9IENyZWF0
ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAicmZyYWc6bGZy
YWciKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdlSW50ZWdyaXR5KCJpbnZhbGlkIik7CiAgIGluX21z
Zy0+QWRkRmluZ2VycHJpbnQoKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1
Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQ
RUNUX1RSVUUocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCks
IGFkZHIsICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNl
cm5hbWUpKTsKICAgRVhQRUNUX1RSVUUob3V0X21zZy5nZXQoKSA9PSBOVUxMKTsKQEAgLTIxOTUs
MTkgKzIxNzAsMTggQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1lc3NhZ2VCYWRN
ZXNzYWdlSW50ZWdyaXR5KSB7CiAvLyBUZXN0IGhhbmRsaW5nIFNUVU4gbWVzc2FnZXMgd2l0aCBt
aXNzaW5nIG9yIG1hbGZvcm1lZCBGSU5HRVJQUklOVC4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhh
bmRsZVN0dW5NZXNzYWdlQmFkRmluZ2VycHJpbnQpIHsKICAgLy8gT3VyIHBvcnQgd2lsbCBhY3Qg
YXMgdGhlICJyZW1vdGUiIHBvcnQuCi0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcG9ydChD
cmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIikpOworICBhdXRvIHBv
cnQgPSBDcmVhdGVUZXN0UG9ydChrTG9jYWxBZGRyMiwgInJmcmFnIiwgInJwYXNzIik7CiAKICAg
c3RkOjp1bmlxdWVfcHRyPEljZU1lc3NhZ2U+IGluX21zZywgb3V0X21zZzsKLSAgc3RkOjp1bmlx
dWVfcHRyPEJ5dGVCdWZmZXJXcml0ZXI+IGJ1ZihuZXcgQnl0ZUJ1ZmZlcldyaXRlcigpKTsKKyAg
YXV0byBidWYgPSBhYnNsOjptYWtlX3VuaXF1ZTxCeXRlQnVmZmVyV3JpdGVyPigpOwogICBydGM6
OlNvY2tldEFkZHJlc3MgYWRkcihrTG9jYWxBZGRyMSk7CiAgIHN0ZDo6c3RyaW5nIHVzZXJuYW1l
OwogCiAgIC8vIEJJTkRJTkctUkVRVUVTVCBmcm9tIGxvY2FsIHRvIHJlbW90ZSB3aXRoIHZhbGlk
IElDRSB1c2VybmFtZSBhbmQKICAgLy8gTUVTU0FHRS1JTlRFR1JJVFksIGJ1dCBubyBGSU5HRVJQ
UklOVDsgR2V0U3R1bk1lc3NhZ2Ugc2hvdWxkIGZhaWwuCi0gIGluX21zZy5yZXNldCgKLSAgICAg
IENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNUVU5fQklORElOR19SRVFVRVNULCAicmZy
YWc6bGZyYWciKSk7CisgIGluX21zZyA9IENyZWF0ZVN0dW5NZXNzYWdlV2l0aFVzZXJuYW1lKFNU
VU5fQklORElOR19SRVFVRVNULCAicmZyYWc6bGZyYWciKTsKICAgaW5fbXNnLT5BZGRNZXNzYWdl
SW50ZWdyaXR5KCJycGFzcyIpOwotICBXcml0ZVN0dW5NZXNzYWdlKGluX21zZy5nZXQoKSwgYnVm
LmdldCgpKTsKKyAgV3JpdGVTdHVuTWVzc2FnZSgqaW5fbXNnLCBidWYuZ2V0KCkpOwogICBFWFBF
Q1RfRkFMU0UocG9ydC0+R2V0U3R1bk1lc3NhZ2UoYnVmLT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCks
IGFkZHIsICZvdXRfbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVz
ZXJuYW1lKSk7CiAgIEVYUEVDVF9FUSgwLCBwb3J0LT5sYXN0X3N0dW5fZXJyb3JfY29kZSgpKTsK
QEAgLTIyMTUsMTcgKzIxODksMTcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bk1l
c3NhZ2VCYWRGaW5nZXJwcmludCkgewogICAvLyBOb3csIGFkZCBhIGZpbmdlcnByaW50LCBidXQg
bXVuZ2UgdGhlIG1lc3NhZ2Ugc28gaXQncyBub3QgdmFsaWQuCiAgIGluX21zZy0+QWRkRmluZ2Vy
cHJpbnQoKTsKICAgaW5fbXNnLT5TZXRUcmFuc2FjdGlvbklEKCJURVNUVEVTVEJBREQiKTsKLSAg
V3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1l
c3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX0ZBTFNFKHBvcnQtPkdldFN0dW5N
ZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfRVEo
MCwgcG9ydC0+bGFzdF9zdHVuX2Vycm9yX2NvZGUoKSk7CiAKICAgLy8gVmFsaWQgQklORElORy1S
RVNQT05TRSwgZXhjZXB0IG5vIEZJTkdFUlBSSU5ULgotICBpbl9tc2cucmVzZXQoQ3JlYXRlU3R1
bk1lc3NhZ2UoU1RVTl9CSU5ESU5HX1JFU1BPTlNFKSk7CisgIGluX21zZyA9IENyZWF0ZVN0dW5N
ZXNzYWdlKFNUVU5fQklORElOR19SRVNQT05TRSk7CiAgIGluX21zZy0+QWRkQXR0cmlidXRlKGFi
c2w6Om1ha2VfdW5pcXVlPFN0dW5Yb3JBZGRyZXNzQXR0cmlidXRlPigKICAgICAgIFNUVU5fQVRU
Ul9YT1JfTUFQUEVEX0FERFJFU1MsIGtMb2NhbEFkZHIyKSk7CiAgIGluX21zZy0+QWRkTWVzc2Fn
ZUludGVncml0eSgicnBhc3MiKTsKLSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1
Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQ
RUNUX0ZBTFNFKHBvcnQtPkdldFN0dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgp
LCBhZGRyLCAmb3V0X21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1
c2VybmFtZSkpOwogICBFWFBFQ1RfRVEoMCwgcG9ydC0+bGFzdF9zdHVuX2Vycm9yX2NvZGUoKSk7
CkBAIC0yMjMzLDE4ICsyMjA3LDE4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5N
ZXNzYWdlQmFkRmluZ2VycHJpbnQpIHsKICAgLy8gTm93LCBhZGQgYSBmaW5nZXJwcmludCwgYnV0
IG11bmdlIHRoZSBtZXNzYWdlIHNvIGl0J3Mgbm90IHZhbGlkLgogICBpbl9tc2ctPkFkZEZpbmdl
cnByaW50KCk7CiAgIGluX21zZy0+U2V0VHJhbnNhY3Rpb25JRCgiVEVTVFRFU1RCQUREIik7Ci0g
IFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgpLCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5N
ZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAgIEVYUEVDVF9GQUxTRShwb3J0LT5HZXRTdHVu
TWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUpKTsKICAgRVhQRUNUX0VR
KDAsIHBvcnQtPmxhc3Rfc3R1bl9lcnJvcl9jb2RlKCkpOwogCiAgIC8vIFZhbGlkIEJJTkRJTkct
RVJST1ItUkVTUE9OU0UsIGV4Y2VwdCBubyBGSU5HRVJQUklOVC4KLSAgaW5fbXNnLnJlc2V0KENy
ZWF0ZVN0dW5NZXNzYWdlKFNUVU5fQklORElOR19FUlJPUl9SRVNQT05TRSkpOworICBpbl9tc2cg
PSBDcmVhdGVTdHVuTWVzc2FnZShTVFVOX0JJTkRJTkdfRVJST1JfUkVTUE9OU0UpOwogICBpbl9t
c2ctPkFkZEF0dHJpYnV0ZShhYnNsOjptYWtlX3VuaXF1ZTxTdHVuRXJyb3JDb2RlQXR0cmlidXRl
PigKICAgICAgIFNUVU5fQVRUUl9FUlJPUl9DT0RFLCBTVFVOX0VSUk9SX1NFUlZFUl9FUlJPUiwK
ICAgICAgIFNUVU5fRVJST1JfUkVBU09OX1NFUlZFUl9FUlJPUikpOwogICBpbl9tc2ctPkFkZE1l
c3NhZ2VJbnRlZ3JpdHkoInJwYXNzIik7Ci0gIFdyaXRlU3R1bk1lc3NhZ2UoaW5fbXNnLmdldCgp
LCBidWYuZ2V0KCkpOworICBXcml0ZVN0dW5NZXNzYWdlKCppbl9tc2csIGJ1Zi5nZXQoKSk7CiAg
IEVYUEVDVF9GQUxTRShwb3J0LT5HZXRTdHVuTWVzc2FnZShidWYtPkRhdGEoKSwgYnVmLT5MZW5n
dGgoKSwgYWRkciwgJm91dF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmdXNlcm5hbWUpKTsKICAgRVhQRUNUX0VRKDAsIHBvcnQtPmxhc3Rfc3R1bl9lcnJvcl9jb2Rl
KCkpOwpAQCAtMjI1Miw3ICsyMjI2LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1
bk1lc3NhZ2VCYWRGaW5nZXJwcmludCkgewogICAvLyBOb3csIGFkZCBhIGZpbmdlcnByaW50LCBi
dXQgbXVuZ2UgdGhlIG1lc3NhZ2Ugc28gaXQncyBub3QgdmFsaWQuCiAgIGluX21zZy0+QWRkRmlu
Z2VycHJpbnQoKTsKICAgaW5fbXNnLT5TZXRUcmFuc2FjdGlvbklEKCJURVNUVEVTVEJBREQiKTsK
LSAgV3JpdGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1
bk1lc3NhZ2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX0ZBTFNFKHBvcnQtPkdldFN0
dW5NZXNzYWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1Rf
RVEoMCwgcG9ydC0+bGFzdF9zdHVuX2Vycm9yX2NvZGUoKSk7CkBAIC0yMjYxLDggKzIyMzUsNyBA
QCBURVNUX0YoUG9ydFRlc3QsIFRlc3RIYW5kbGVTdHVuTWVzc2FnZUJhZEZpbmdlcnByaW50KSB7
CiAvLyBUZXN0IGhhbmRsaW5nIG9mIFNUVU4gYmluZGluZyBpbmRpY2F0aW9uIG1lc3NhZ2VzIC4g
U1RVTiBiaW5kaW5nCiAvLyBpbmRpY2F0aW9ucyBhcmUgYWxsb3dlZCBvbmx5IHRvIHRoZSBjb25u
ZWN0aW9uIHdoaWNoIGlzIGluIHJlYWQgbW9kZS4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRs
ZVN0dW5CaW5kaW5nSW5kaWNhdGlvbikgewotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IGxw
b3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJsZnJhZyIsICJscGFzcyIp
KTsKKyAgYXV0byBscG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAibGZyYWciLCAi
bHBhc3MiKTsKICAgbHBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElO
Ryk7CiAgIGxwb3J0LT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMSk7CiAKQEAgLTIyNzIs
OSArMjI0NSw5IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5CaW5kaW5nSW5kaWNh
dGlvbikgewogICBydGM6OlNvY2tldEFkZHJlc3MgYWRkcihrTG9jYWxBZGRyMSk7CiAgIHN0ZDo6
c3RyaW5nIHVzZXJuYW1lOwogCi0gIGluX21zZy5yZXNldChDcmVhdGVTdHVuTWVzc2FnZShTVFVO
X0JJTkRJTkdfSU5ESUNBVElPTikpOworICBpbl9tc2cgPSBDcmVhdGVTdHVuTWVzc2FnZShTVFVO
X0JJTkRJTkdfSU5ESUNBVElPTik7CiAgIGluX21zZy0+QWRkRmluZ2VycHJpbnQoKTsKLSAgV3Jp
dGVTdHVuTWVzc2FnZShpbl9tc2cuZ2V0KCksIGJ1Zi5nZXQoKSk7CisgIFdyaXRlU3R1bk1lc3Nh
Z2UoKmluX21zZywgYnVmLmdldCgpKTsKICAgRVhQRUNUX1RSVUUobHBvcnQtPkdldFN0dW5NZXNz
YWdlKGJ1Zi0+RGF0YSgpLCBidWYtPkxlbmd0aCgpLCBhZGRyLCAmb3V0X21zZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSkpOwogICBFWFBFQ1RfVFJVRShv
dXRfbXNnLmdldCgpICE9IE5VTEwpOwpAQCAtMjI4Myw4ICsyMjU2LDcgQEAgVEVTVF9GKFBvcnRU
ZXN0LCBUZXN0SGFuZGxlU3R1bkJpbmRpbmdJbmRpY2F0aW9uKSB7CiAKICAgLy8gVmVyaWZ5IGNv
bm5lY3Rpb24gY2FuIGhhbmRsZSBTVFVOIGluZGljYXRpb24gYW5kIHVwZGF0ZXMKICAgLy8gbGFz
dF9waW5nX3JlY2VpdmVkLgotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAg
ICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0
byBycG9ydCA9IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsK
ICAgcnBvcnQtPlNldEljZVJvbGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTEVEKTsKICAgcnBv
cnQtPlNldEljZVRpZWJyZWFrZXIoa1RpZWJyZWFrZXIyKTsKIApAQCAtMjMwNCw3ICsyMjc2LDcg
QEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SGFuZGxlU3R1bkJpbmRpbmdJbmRpY2F0aW9uKSB7CiAg
IEVYUEVDVF9FUShTVFVOX0JJTkRJTkdfUkVRVUVTVCwgbXNnLT50eXBlKCkpOwogICAvLyBTZW5k
IHJwb3J0IGJpbmRpbmcgcmVxdWVzdCB0byBscG9ydC4KICAgbGNvbm4tPk9uUmVhZFBhY2tldChy
cG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5kYXRhPGNoYXI+KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgcnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCBydGM6OlBhY2tldFRpbWUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgcnBvcnQtPmxhc3Rfc3R1bl9idWYoKS0+c2l6ZSgpLCAvKiBw
YWNrZXRfdGltZV91cyAqLyAtMSk7CiAgIEFTU0VSVF9UUlVFX1dBSVQobHBvcnQtPmxhc3Rfc3R1
bl9tc2coKSAhPSBOVUxMLCBrRGVmYXVsdFRpbWVvdXQpOwogICBFWFBFQ1RfRVEoU1RVTl9CSU5E
SU5HX1JFU1BPTlNFLCBscG9ydC0+bGFzdF9zdHVuX21zZygpLT50eXBlKCkpOwogICBpbnQ2NF90
IGxhc3RfcGluZ19yZWNlaXZlZDEgPSBsY29ubi0+bGFzdF9waW5nX3JlY2VpdmVkKCk7CkBAIC0y
MzEyLDEzICsyMjg0LDEzIEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdEhhbmRsZVN0dW5CaW5kaW5n
SW5kaWNhdGlvbikgewogICAvLyBBZGRpbmcgYSBkZWxheSBvZiAxMDBtcy4KICAgcnRjOjpUaHJl
YWQ6OkN1cnJlbnQoKS0+UHJvY2Vzc01lc3NhZ2VzKDEwMCk7CiAgIC8vIFBpbmdpbmcgbGNvbm4g
dXNpbmcgc3R1biBpbmRpY2F0aW9uIG1lc3NhZ2UuCi0gIGxjb25uLT5PblJlYWRQYWNrZXQoYnVm
LT5EYXRhKCksIGJ1Zi0+TGVuZ3RoKCksIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgbGNvbm4tPk9u
UmVhZFBhY2tldChidWYtPkRhdGEoKSwgYnVmLT5MZW5ndGgoKSwgLyogcGFja2V0X3RpbWVfdXMg
Ki8gLTEpOwogICBpbnQ2NF90IGxhc3RfcGluZ19yZWNlaXZlZDIgPSBsY29ubi0+bGFzdF9waW5n
X3JlY2VpdmVkKCk7CiAgIEVYUEVDVF9HVChsYXN0X3BpbmdfcmVjZWl2ZWQyLCBsYXN0X3Bpbmdf
cmVjZWl2ZWQxKTsKIH0KIAogVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q29tcHV0ZUNhbmRpZGF0ZVBy
aW9yaXR5KSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gcG9ydChDcmVhdGVUZXN0UG9y
dChrTG9jYWxBZGRyMSwgIm5hbWUiLCAicGFzcyIpKTsKKyAgYXV0byBwb3J0ID0gQ3JlYXRlVGVz
dFBvcnQoa0xvY2FsQWRkcjEsICJuYW1lIiwgInBhc3MiKTsKICAgcG9ydC0+c2V0X3R5cGVfcHJl
ZmVyZW5jZSg5MCk7CiAgIHBvcnQtPnNldF9jb21wb25lbnQoMTc3KTsKICAgcG9ydC0+QWRkQ2Fu
ZGlkYXRlQWRkcmVzcyhTb2NrZXRBZGRyZXNzKCIxOTIuMTY4LjEuNCIsIDEyMzQpKTsKQEAgLTIz
NTUsOCArMjMyNyw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdENvbXB1dGVDYW5kaWRhdGVQcmlv
cml0eSkgewogLy8gSW4gdGhlIGNhc2Ugb2Ygc2hhcmVkIHNvY2tldCwgb25lIHBvcnQgbWF5IGJl
IHNoYXJlZCBieSBsb2NhbCBhbmQgc3R1bi4KIC8vIFRlc3QgdGhhdCBjYW5kaWRhdGVzIHdpdGgg
ZGlmZmVyZW50IHR5cGVzIHdpbGwgaGF2ZSBkaWZmZXJlbnQgZm91bmRhdGlvbi4KIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdEZvdW5kYXRpb24pIHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQb3J0PiB0
ZXN0cG9ydCgKLSAgICAgIENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAibmFtZSIsICJwYXNz
IikpOworICBhdXRvIHRlc3Rwb3J0ID0gQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJuYW1l
IiwgInBhc3MiKTsKICAgdGVzdHBvcnQtPkFkZENhbmRpZGF0ZUFkZHJlc3Moa0xvY2FsQWRkcjEs
IGtMb2NhbEFkZHIxLCBMT0NBTF9QT1JUX1RZUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyaWNrZXQ6OklDRV9UWVBFX1BSRUZFUkVOQ0VfSE9TVCwgZmFsc2UpOwogICB0ZXN0
cG9ydC0+QWRkQ2FuZGlkYXRlQWRkcmVzcyhrTG9jYWxBZGRyMiwga0xvY2FsQWRkcjEsIFNUVU5f
UE9SVF9UWVBFLApAQCAtMjM2OSwyMCArMjM0MCwxOSBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RG
b3VuZGF0aW9uKSB7CiBURVNUX0YoUG9ydFRlc3QsIFRlc3RDYW5kaWRhdGVGb3VuZGF0aW9uKSB7
CiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6Ok5BVFNlcnZlcj4gbmF0X3NlcnZlcigKICAgICAgIENy
ZWF0ZU5hdFNlcnZlcihrTmF0QWRkcjEsIE5BVF9PUEVOX0NPTkUpKTsKLSAgc3RkOjp1bmlxdWVf
cHRyPFVEUFBvcnQ+IHVkcHBvcnQxKENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpKTsKKyAgYXV0
byB1ZHBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwogICB1ZHBwb3J0MS0+UHJl
cGFyZUFkZHJlc3MoKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFVEUFBvcnQ+IHVkcHBvcnQyKENyZWF0
ZVVkcFBvcnQoa0xvY2FsQWRkcjEpKTsKKyAgYXV0byB1ZHBwb3J0MiA9IENyZWF0ZVVkcFBvcnQo
a0xvY2FsQWRkcjEpOwogICB1ZHBwb3J0Mi0+UHJlcGFyZUFkZHJlc3MoKTsKICAgRVhQRUNUX0VR
KHVkcHBvcnQxLT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpLAogICAgICAgICAgICAgdWRw
cG9ydDItPkNhbmRpZGF0ZXMoKVswXS5mb3VuZGF0aW9uKCkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8
VENQUG9ydD4gdGNwcG9ydDEoQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSkpOworICBhdXRvIHRj
cHBvcnQxID0gQ3JlYXRlVGNwUG9ydChrTG9jYWxBZGRyMSk7CiAgIHRjcHBvcnQxLT5QcmVwYXJl
QWRkcmVzcygpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VENQUG9ydD4gdGNwcG9ydDIoQ3JlYXRlVGNw
UG9ydChrTG9jYWxBZGRyMSkpOworICBhdXRvIHRjcHBvcnQyID0gQ3JlYXRlVGNwUG9ydChrTG9j
YWxBZGRyMSk7CiAgIHRjcHBvcnQyLT5QcmVwYXJlQWRkcmVzcygpOwogICBFWFBFQ1RfRVEodGNw
cG9ydDEtPkNhbmRpZGF0ZXMoKVswXS5mb3VuZGF0aW9uKCksCiAgICAgICAgICAgICB0Y3Bwb3J0
Mi0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0
PiBzdHVucG9ydCgKLSAgICAgIENyZWF0ZVN0dW5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0
X2ZhY3RvcnkxKCkpKTsKKyAgYXV0byBzdHVucG9ydCA9IENyZWF0ZVN0dW5Qb3J0KGtMb2NhbEFk
ZHIxLCBuYXRfc29ja2V0X2ZhY3RvcnkxKCkpOwogICBzdHVucG9ydC0+UHJlcGFyZUFkZHJlc3Mo
KTsKICAgQVNTRVJUX0VRX1dBSVQoMVUsIHN0dW5wb3J0LT5DYW5kaWRhdGVzKCkuc2l6ZSgpLCBr
RGVmYXVsdFRpbWVvdXQpOwogICBFWFBFQ1RfTkUodGNwcG9ydDEtPkNhbmRpZGF0ZXMoKVswXS5m
b3VuZGF0aW9uKCksCkBAIC0yMzk0LDcgKzIzNjQsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RD
YW5kaWRhdGVGb3VuZGF0aW9uKSB7CiAgIEVYUEVDVF9ORSh1ZHBwb3J0Mi0+Q2FuZGlkYXRlcygp
WzBdLmZvdW5kYXRpb24oKSwKICAgICAgICAgICAgIHN0dW5wb3J0LT5DYW5kaWRhdGVzKClbMF0u
Zm91bmRhdGlvbigpKTsKICAgLy8gVmVyaWZ5IEdUVVJOIGNhbmRpZGF0ZSBmb3VuZGF0aW9uLgot
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVsYXlQb3J0PiByZWxheXBvcnQoQ3JlYXRlR3R1cm5Qb3J0KGtM
b2NhbEFkZHIxKSk7CisgIGF1dG8gcmVsYXlwb3J0ID0gQ3JlYXRlR3R1cm5Qb3J0KGtMb2NhbEFk
ZHIxKTsKICAgcmVsYXlwb3J0LT5BZGRTZXJ2ZXJBZGRyZXNzKAogICAgICAgY3JpY2tldDo6UHJv
dG9jb2xBZGRyZXNzKGtSZWxheVVkcEludEFkZHIsIGNyaWNrZXQ6OlBST1RPX1VEUCkpOwogICBy
ZWxheXBvcnQtPlByZXBhcmVBZGRyZXNzKCk7CkBAIC0yNDA0LDggKzIzNzQsOCBAQCBURVNUX0Yo
UG9ydFRlc3QsIFRlc3RDYW5kaWRhdGVGb3VuZGF0aW9uKSB7CiAgIEVYUEVDVF9ORSh1ZHBwb3J0
Mi0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSwKICAgICAgICAgICAgIHJlbGF5cG9ydC0+
Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSk7CiAgIC8vIFZlcmlmeWluZyBUVVJOIGNhbmRp
ZGF0ZSBmb3VuZGF0aW9uLgotICBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gdHVybnBvcnQxKAotICAg
ICAgQ3JlYXRlVHVyblBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwgUFJP
VE9fVURQLCBQUk9UT19VRFApKTsKKyAgYXV0byB0dXJucG9ydDEgPQorICAgICAgQ3JlYXRlVHVy
blBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQUk9U
T19VRFApOwogICB0dXJucG9ydDEtPlByZXBhcmVBZGRyZXNzKCk7CiAgIEFTU0VSVF9FUV9XQUlU
KDFVLCB0dXJucG9ydDEtPkNhbmRpZGF0ZXMoKS5zaXplKCksIGtEZWZhdWx0VGltZW91dCk7CiAg
IEVYUEVDVF9ORSh1ZHBwb3J0MS0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSwKQEAgLTI0
MTQsOCArMjM4NCw4IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdENhbmRpZGF0ZUZvdW5kYXRpb24p
IHsKICAgICAgICAgICAgIHR1cm5wb3J0MS0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSk7
CiAgIEVYUEVDVF9ORShzdHVucG9ydC0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSwKICAg
ICAgICAgICAgIHR1cm5wb3J0MS0+Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSk7Ci0gIHN0
ZDo6dW5pcXVlX3B0cjxQb3J0PiB0dXJucG9ydDIoCi0gICAgICBDcmVhdGVUdXJuUG9ydChrTG9j
YWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VEUCkpOwor
ICBhdXRvIHR1cm5wb3J0MiA9CisgICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0
X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VEUCk7CiAgIHR1cm5wb3J0Mi0+
UHJlcGFyZUFkZHJlc3MoKTsKICAgQVNTRVJUX0VRX1dBSVQoMVUsIHR1cm5wb3J0Mi0+Q2FuZGlk
YXRlcygpLnNpemUoKSwga0RlZmF1bHRUaW1lb3V0KTsKICAgRVhQRUNUX0VRKHR1cm5wb3J0MS0+
Q2FuZGlkYXRlcygpWzBdLmZvdW5kYXRpb24oKSwKQEAgLTI0MjYsOSArMjM5Niw4IEBAIFRFU1Rf
RihQb3J0VGVzdCwgVGVzdENhbmRpZGF0ZUZvdW5kYXRpb24pIHsKICAgU29ja2V0QWRkcmVzcyBr
VHVyblVkcEV4dEFkZHIyKCI5OS45OS45OC41IiwgMCk7CiAgIFRlc3RUdXJuU2VydmVyIHR1cm5f
c2VydmVyMihydGM6OlRocmVhZDo6Q3VycmVudCgpLCBrVHVyblVkcEludEFkZHIyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga1R1cm5VZHBFeHRBZGRyMik7Ci0gIHN0ZDo6dW5pcXVl
X3B0cjxQb3J0PiB0dXJucG9ydDMoCi0gICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwg
bmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VEUCwKLSAgICAgICAgICAg
ICAgICAgICAgIGtUdXJuVWRwSW50QWRkcjIpKTsKKyAgYXV0byB0dXJucG9ydDMgPSBDcmVhdGVU
dXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPVE9fVURQLCBrVHVyblVkcEludEFk
ZHIyKTsKICAgdHVybnBvcnQzLT5QcmVwYXJlQWRkcmVzcygpOwogICBBU1NFUlRfRVFfV0FJVCgx
VSwgdHVybnBvcnQzLT5DYW5kaWRhdGVzKCkuc2l6ZSgpLCBrRGVmYXVsdFRpbWVvdXQpOwogICBF
WFBFQ1RfTkUodHVybnBvcnQzLT5DYW5kaWRhdGVzKClbMF0uZm91bmRhdGlvbigpLApAQCAtMjQz
OCw4ICsyNDA3LDggQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q2FuZGlkYXRlRm91bmRhdGlvbikg
ewogICAvLyBkaWZmZXJlbnQgZm91bmRhdGlvbnMgaWYgdGhlaXIgcmVsYXkgcHJvdG9jb2xzIGFy
ZSBkaWZmZXJlbnQuCiAgIFRlc3RUdXJuU2VydmVyIHR1cm5fc2VydmVyMyhydGM6OlRocmVhZDo6
Q3VycmVudCgpLCBrVHVyblRjcEludEFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrVHVyblVkcEV4dEFkZHIsIFBST1RPX1RDUCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiB0
dXJucG9ydDQoCi0gICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9m
YWN0b3J5MSgpLCBQUk9UT19UQ1AsIFBST1RPX1VEUCkpOworICBhdXRvIHR1cm5wb3J0NCA9Cisg
ICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQ
Uk9UT19UQ1AsIFBST1RPX1VEUCk7CiAgIHR1cm5wb3J0NC0+UHJlcGFyZUFkZHJlc3MoKTsKICAg
QVNTRVJUX0VRX1dBSVQoMVUsIHR1cm5wb3J0NC0+Q2FuZGlkYXRlcygpLnNpemUoKSwga0RlZmF1
bHRUaW1lb3V0KTsKICAgRVhQRUNUX05FKHR1cm5wb3J0Mi0+Q2FuZGlkYXRlcygpWzBdLmZvdW5k
YXRpb24oKSwKQEAgLTI0NDksMTcgKzI0MTgsMTUgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q2Fu
ZGlkYXRlRm91bmRhdGlvbikgewogLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSByZWxhdGVkIGFk
ZHJlc3NlcyBvZiBkaWZmZXJlbnQgdHlwZXMgb2YKIC8vIElDRSBjYW5kaWF0ZXMuCiBURVNUX0Yo
UG9ydFRlc3QsIFRlc3RDYW5kaWRhdGVSZWxhdGVkQWRkcmVzcykgewotICBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjpOQVRTZXJ2ZXI+IG5hdF9zZXJ2ZXIoCi0gICAgICBDcmVhdGVOYXRTZXJ2ZXIoa05h
dEFkZHIxLCBOQVRfT1BFTl9DT05FKSk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxVRFBQb3J0PiB1ZHBw
b3J0KENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpKTsKKyAgYXV0byBuYXRfc2VydmVyID0gQ3Jl
YXRlTmF0U2VydmVyKGtOYXRBZGRyMSwgTkFUX09QRU5fQ09ORSk7CisgIGF1dG8gdWRwcG9ydCA9
IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwogICB1ZHBwb3J0LT5QcmVwYXJlQWRkcmVzcygp
OwogICAvLyBGb3IgVURQUG9ydCwgcmVsYXRlZCBhZGRyZXNzIHdpbGwgYmUgZW1wdHkuCiAgIEVY
UEVDVF9UUlVFKHVkcHBvcnQtPkNhbmRpZGF0ZXMoKVswXS5yZWxhdGVkX2FkZHJlc3MoKS5Jc05p
bCgpKTsKICAgLy8gVGVzdGluZyByZWxhdGVkIGFkZHJlc3MgZm9yIHN0dW4gY2FuZGlkYXRlcy4K
ICAgLy8gRm9yIHN0dW4gY2FuZGlkYXRlIHJlbGF0ZWQgYWRkcmVzcyBtdXN0IGJlIGVxdWFsIHRv
IHRoZSBiYXNlCiAgIC8vIHNvY2tldCBhZGRyZXNzLgotICBzdGQ6OnVuaXF1ZV9wdHI8U3R1blBv
cnQ+IHN0dW5wb3J0KAotICAgICAgQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2Nr
ZXRfZmFjdG9yeTEoKSkpOworICBhdXRvIHN0dW5wb3J0ID0gQ3JlYXRlU3R1blBvcnQoa0xvY2Fs
QWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9yeTEoKSk7CiAgIHN0dW5wb3J0LT5QcmVwYXJlQWRkcmVz
cygpOwogICBBU1NFUlRfRVFfV0FJVCgxVSwgc3R1bnBvcnQtPkNhbmRpZGF0ZXMoKS5zaXplKCks
IGtEZWZhdWx0VGltZW91dCk7CiAgIC8vIENoZWNrIFNUVU4gY2FuZGlkYXRlIGFkZHJlc3MuCkBA
IC0yNDcwLDcgKzI0MzcsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RDYW5kaWRhdGVSZWxhdGVk
QWRkcmVzcykgewogICAvLyBWZXJpZnlpbmcgdGhlIHJlbGF0ZWQgYWRkcmVzcyBmb3IgdGhlIEdU
VVJOIGNhbmRpZGF0ZXMuCiAgIC8vIE5PVEU6IEluIGNhc2Ugb2YgR1RVUk4gcmVsYXRlZCBhZGRy
ZXNzIHdpbGwgYmUgZXF1YWwgdG8gdGhlIG1hcHBlZAogICAvLyBhZGRyZXNzLCBidXQgYWRkcmVz
cyhtYXBwZWQpIHdpbGwgbm90IGJlIFhPUi4KLSAgc3RkOjp1bmlxdWVfcHRyPFJlbGF5UG9ydD4g
cmVsYXlwb3J0KENyZWF0ZUd0dXJuUG9ydChrTG9jYWxBZGRyMSkpOworICBhdXRvIHJlbGF5cG9y
dCA9IENyZWF0ZUd0dXJuUG9ydChrTG9jYWxBZGRyMSk7CiAgIHJlbGF5cG9ydC0+QWRkU2VydmVy
QWRkcmVzcygKICAgICAgIGNyaWNrZXQ6OlByb3RvY29sQWRkcmVzcyhrUmVsYXlVZHBJbnRBZGRy
LCBjcmlja2V0OjpQUk9UT19VRFApKTsKICAgcmVsYXlwb3J0LT5QcmVwYXJlQWRkcmVzcygpOwpA
QCAtMjQ3OSw4ICsyNDQ2LDggQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q2FuZGlkYXRlUmVsYXRl
ZEFkZHJlc3MpIHsKICAgRVhQRUNUX0VRKHJ0Yzo6U29ja2V0QWRkcmVzcygpLCByZWxheXBvcnQt
PkNhbmRpZGF0ZXMoKVswXS5yZWxhdGVkX2FkZHJlc3MoKSk7CiAgIC8vIFZlcmlmeWluZyB0aGUg
cmVsYXRlZCBhZGRyZXNzIGZvciBUVVJOIGNhbmRpZGF0ZS4KICAgLy8gRm9yIFRVUk4gcmVsYXRl
ZCBhZGRyZXNzIG11c3QgYmUgZXF1YWwgdG8gdGhlIG1hcHBlZCBhZGRyZXNzLgotICBzdGQ6OnVu
aXF1ZV9wdHI8UG9ydD4gdHVybnBvcnQoCi0gICAgICBDcmVhdGVUdXJuUG9ydChrTG9jYWxBZGRy
MSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpLCBQUk9UT19VRFAsIFBST1RPX1VEUCkpOworICBhdXRv
IHR1cm5wb3J0ID0KKyAgICAgIENyZWF0ZVR1cm5Qb3J0KGtMb2NhbEFkZHIxLCBuYXRfc29ja2V0
X2ZhY3RvcnkxKCksIFBST1RPX1VEUCwgUFJPVE9fVURQKTsKICAgdHVybnBvcnQtPlByZXBhcmVB
ZGRyZXNzKCk7CiAgIEFTU0VSVF9FUV9XQUlUKDFVLCB0dXJucG9ydC0+Q2FuZGlkYXRlcygpLnNp
emUoKSwga0RlZmF1bHRUaW1lb3V0KTsKICAgRVhQRUNUX0VRKGtUdXJuVWRwRXh0QWRkci5pcGFk
ZHIoKSwKQEAgLTI1MDAsMTEgKzI0NjcsOSBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RDYW5kaWRh
dGVQcmlvcml0eSkgewogCiAvLyBUZXN0IHRoZSBDb25uZWN0aW9uIHByaW9yaXR5IGlzIGNhbGN1
bGF0ZWQgY29ycmVjdGx5LgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0Q29ubmVjdGlvblByaW9yaXR5
KSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUZXN0UG9ydD4gbHBvcnQoCi0gICAgICBDcmVhdGVUZXN0
UG9ydChrTG9jYWxBZGRyMSwgImxmcmFnIiwgImxwYXNzIikpOworICBhdXRvIGxwb3J0ID0gQ3Jl
YXRlVGVzdFBvcnQoa0xvY2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIpOwogICBscG9ydC0+c2V0
X3R5cGVfcHJlZmVyZW5jZShjcmlja2V0OjpJQ0VfVFlQRV9QUkVGRVJFTkNFX0hPU1QpOwotICBz
dGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHJwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xv
Y2FsQWRkcjIsICJyZnJhZyIsICJycGFzcyIpKTsKKyAgYXV0byBycG9ydCA9IENyZWF0ZVRlc3RQ
b3J0KGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiKTsKICAgcnBvcnQtPnNldF90eXBlX3By
ZWZlcmVuY2UoY3JpY2tldDo6SUNFX1RZUEVfUFJFRkVSRU5DRV9SRUxBWV9VRFApOwogICBscG9y
dC0+c2V0X2NvbXBvbmVudCgxMjMpOwogICBscG9ydC0+QWRkQ2FuZGlkYXRlQWRkcmVzcyhTb2Nr
ZXRBZGRyZXNzKCIxOTIuMTY4LjEuNCIsIDEyMzQpKTsKQEAgLTI1NDUsMTQgKzI1MTAsMTQgQEAg
VEVTVF9GKFBvcnRUZXN0LCBUZXN0Q29ubmVjdGlvblByaW9yaXR5KSB7CiAvLyBlc3RpbWF0ZSBn
aXZlbiBieSB8TUlOSU1VTV9SVFR8ID0gMTAwLgogVEVTVF9GKFBvcnRUZXN0LCBUZXN0V3JpdGFi
bGVTdGF0ZSkgewogICBydGM6OlNjb3BlZEZha2VDbG9jayBjbG9jazsKLSAgVURQUG9ydCogcG9y
dDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKKyAgYXV0byBwb3J0MSA9IENyZWF0ZVVk
cFBvcnQoa0xvY2FsQWRkcjEpOwogICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xF
X0NPTlRST0xMSU5HKTsKLSAgVURQUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFk
ZHIyKTsKKyAgYXV0byBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOwogICBwb3J0
Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwogCiAgIC8vIFNldCB1
cCBjaGFubmVscy4KLSAgVGVzdENoYW5uZWwgY2gxKHBvcnQxKTsKLSAgVGVzdENoYW5uZWwgY2gy
KHBvcnQyKTsKKyAgVGVzdENoYW5uZWwgY2gxKHN0ZDo6bW92ZShwb3J0MSkpOworICBUZXN0Q2hh
bm5lbCBjaDIoc3RkOjptb3ZlKHBvcnQyKSk7CiAKICAgLy8gQWNxdWlyZSBhZGRyZXNzZXMuCiAg
IGNoMS5TdGFydCgpOwpAQCAtMjU2MSw3ICsyNTI2LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0
V3JpdGFibGVTdGF0ZSkgewogICBBU1NFUlRfRVFfU0lNVUxBVEVEX1dBSVQoMSwgY2gyLmNvbXBs
ZXRlX2NvdW50KCksIGtEZWZhdWx0VGltZW91dCwgY2xvY2spOwogCiAgIC8vIFNlbmQgYSBwaW5n
IGZyb20gc3JjIHRvIGRzdC4KLSAgY2gxLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKHBv
cnQyKSk7CisgIGNoMS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShjaDIucG9ydCgpKSk7
CiAgIEFTU0VSVF9UUlVFKGNoMS5jb25uKCkgIT0gTlVMTCk7CiAgIEVYUEVDVF9FUShDb25uZWN0
aW9uOjpTVEFURV9XUklURV9JTklULCBjaDEuY29ubigpLT53cml0ZV9zdGF0ZSgpKTsKICAgLy8g
Zm9yIFRDUCBjb25uZWN0CkBAIC0yNTc3LDcgKzI1NDIsNyBAQCBURVNUX0YoUG9ydFRlc3QsIFRl
c3RXcml0YWJsZVN0YXRlKSB7CiAKICAgLy8gQWNjZXB0IHRoZSBjb25uZWN0aW9uIHRvIHJldHVy
biB0aGUgYmluZGluZyByZXNwb25zZSwgdHJhbnNpdGlvbiB0bwogICAvLyB3cml0YWJsZSwgYW5k
IGFsbG93IGRhdGEgdG8gYmUgc2VudC4KLSAgY2gyLkFjY2VwdENvbm5lY3Rpb24oR2V0Q2FuZGlk
YXRlKHBvcnQxKSk7CisgIGNoMi5BY2NlcHRDb25uZWN0aW9uKEdldENhbmRpZGF0ZShjaDEucG9y
dCgpKSk7CiAgIEVYUEVDVF9FUV9TSU1VTEFURURfV0FJVChDb25uZWN0aW9uOjpTVEFURV9XUklU
QUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoMS5jb25uKCktPndyaXRlX3N0YXRl
KCksIGtEZWZhdWx0VGltZW91dCwgY2xvY2spOwogICBFWFBFQ1RfRVEoZGF0YV9zaXplLCBjaDEu
Y29ubigpLT5TZW5kKGRhdGEsIGRhdGFfc2l6ZSwgb3B0aW9ucykpOwpAQCAtMjYyMiwxNCArMjU4
NywxNCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RXcml0YWJsZVN0YXRlKSB7CiAvLyB8Q09OTkVD
VElPTl9XUklURV9DT05ORUNUX0ZBSUxVUkVTfC4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdFdyaXRh
YmxlU3RhdGVXaXRoQ29uZmlndXJlZFRocmVzaG9sZCkgewogICBydGM6OlNjb3BlZEZha2VDbG9j
ayBjbG9jazsKLSAgVURQUG9ydCogcG9ydDEgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsK
KyAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOwogICBwb3J0MS0+U2V0
SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMSU5HKTsKLSAgVURQUG9ydCogcG9ydDIg
PSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsKKyAgYXV0byBwb3J0MiA9IENyZWF0ZVVkcFBv
cnQoa0xvY2FsQWRkcjIpOwogICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NP
TlRST0xMRUQpOwogCiAgIC8vIFNldCB1cCBjaGFubmVscy4KLSAgVGVzdENoYW5uZWwgY2gxKHBv
cnQxKTsKLSAgVGVzdENoYW5uZWwgY2gyKHBvcnQyKTsKKyAgVGVzdENoYW5uZWwgY2gxKHN0ZDo6
bW92ZShwb3J0MSkpOworICBUZXN0Q2hhbm5lbCBjaDIoc3RkOjptb3ZlKHBvcnQyKSk7CiAKICAg
Ly8gQWNxdWlyZSBhZGRyZXNzZXMuCiAgIGNoMS5TdGFydCgpOwpAQCAtMjYzOCwxNCArMjYwMywx
NCBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RXcml0YWJsZVN0YXRlV2l0aENvbmZpZ3VyZWRUaHJl
c2hvbGQpIHsKICAgQVNTRVJUX0VRX1NJTVVMQVRFRF9XQUlUKDEsIGNoMi5jb21wbGV0ZV9jb3Vu
dCgpLCBrRGVmYXVsdFRpbWVvdXQsIGNsb2NrKTsKIAogICAvLyBTZW5kIGEgcGluZyBmcm9tIHNy
YyB0byBkc3QuCi0gIGNoMS5DcmVhdGVDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0MikpOwor
ICBjaDEuQ3JlYXRlQ29ubmVjdGlvbihHZXRDYW5kaWRhdGUoY2gyLnBvcnQoKSkpOwogICBBU1NF
UlRfVFJVRShjaDEuY29ubigpICE9IE5VTEwpOwogICBjaDEuUGluZygpOwogICBTSU1VTEFURURf
V0FJVCghY2gyLnJlbW90ZV9hZGRyZXNzKCkuSXNOaWwoKSwga1Nob3J0VGltZW91dCwgY2xvY2sp
OwogCiAgIC8vIEFjY2VwdCB0aGUgY29ubmVjdGlvbiB0byByZXR1cm4gdGhlIGJpbmRpbmcgcmVz
cG9uc2UsIHRyYW5zaXRpb24gdG8KICAgLy8gd3JpdGFibGUsIGFuZCBhbGxvdyBkYXRhIHRvIGJl
IHNlbnQuCi0gIGNoMi5BY2NlcHRDb25uZWN0aW9uKEdldENhbmRpZGF0ZShwb3J0MSkpOworICBj
aDIuQWNjZXB0Q29ubmVjdGlvbihHZXRDYW5kaWRhdGUoY2gxLnBvcnQoKSkpOwogICBFWFBFQ1Rf
RVFfU0lNVUxBVEVEX1dBSVQoQ29ubmVjdGlvbjo6U1RBVEVfV1JJVEFCTEUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaDEuY29ubigpLT53cml0ZV9zdGF0ZSgpLCBrRGVmYXVsdFRpbWVv
dXQsIGNsb2NrKTsKIApAQCAtMjY3NiwyMCArMjY0MSwyMCBAQCBURVNUX0YoUG9ydFRlc3QsIFRl
c3RXcml0YWJsZVN0YXRlV2l0aENvbmZpZ3VyZWRUaHJlc2hvbGQpIHsKIH0KIAogVEVTVF9GKFBv
cnRUZXN0LCBUZXN0VGltZW91dEZvck5ldmVyV3JpdGFibGUpIHsKLSAgVURQUG9ydCogcG9ydDEg
PSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKKyAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBv
cnQoa0xvY2FsQWRkcjEpOwogICBwb3J0MS0+U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NP
TlRST0xMSU5HKTsKLSAgVURQUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIy
KTsKKyAgYXV0byBwb3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOwogICBwb3J0Mi0+
U2V0SWNlUm9sZShjcmlja2V0OjpJQ0VST0xFX0NPTlRST0xMRUQpOwogCiAgIC8vIFNldCB1cCBj
aGFubmVscy4KLSAgVGVzdENoYW5uZWwgY2gxKHBvcnQxKTsKLSAgVGVzdENoYW5uZWwgY2gyKHBv
cnQyKTsKKyAgVGVzdENoYW5uZWwgY2gxKHN0ZDo6bW92ZShwb3J0MSkpOworICBUZXN0Q2hhbm5l
bCBjaDIoc3RkOjptb3ZlKHBvcnQyKSk7CiAKICAgLy8gQWNxdWlyZSBhZGRyZXNzZXMuCiAgIGNo
MS5TdGFydCgpOwogICBjaDIuU3RhcnQoKTsKIAotICBjaDEuQ3JlYXRlQ29ubmVjdGlvbihHZXRD
YW5kaWRhdGUocG9ydDIpKTsKKyAgY2gxLkNyZWF0ZUNvbm5lY3Rpb24oR2V0Q2FuZGlkYXRlKGNo
Mi5wb3J0KCkpKTsKICAgQVNTRVJUX1RSVUUoY2gxLmNvbm4oKSAhPSBOVUxMKTsKICAgRVhQRUNU
X0VRKENvbm5lY3Rpb246OlNUQVRFX1dSSVRFX0lOSVQsIGNoMS5jb25uKCktPndyaXRlX3N0YXRl
KCkpOwogCkBAIC0yNzA2LDE1ICsyNjcxLDE1IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFRpbWVv
dXRGb3JOZXZlcldyaXRhYmxlKSB7CiAvLyBJbiB0aGlzIHRlc3QgfGNoMXwgYmVoYXZlcyBsaWtl
IEZVTEwgbW9kZSBjbGllbnQgYW5kIHdlIGhhdmUgY3JlYXRlZAogLy8gcG9ydCB3aGljaCByZXNw
b25kcyB0byB0aGUgcGluZyBtZXNzYWdlIGp1c3QgbGlrZSBMSVRFIGNsaWVudC4KIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdEljZUxpdGVDb25uZWN0aXZpdHkpIHsKLSAgVGVzdFBvcnQqIGljZV9mdWxs
X3BvcnQgPQorICBhdXRvIGljZV9mdWxsX3BvcnQgPQogICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xv
Y2FsQWRkcjEsICJsZnJhZyIsICJscGFzcyIsCiAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0
OjpJQ0VST0xFX0NPTlRST0xMSU5HLCBrVGllYnJlYWtlcjEpOworICBhdXRvKiBpY2VfZnVsbF9w
b3J0X3B0ciA9IGljZV9mdWxsX3BvcnQuZ2V0KCk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFRlc3RQ
b3J0PiBpY2VfbGl0ZV9wb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2FsQWRkcjIsICJy
ZnJhZyIsICJycGFzcyIsIGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCwKLSAgICAgICAgICAg
ICAgICAgICAgIGtUaWVicmVha2VyMikpOworICBhdXRvIGljZV9saXRlX3BvcnQgPSBDcmVhdGVU
ZXN0UG9ydCgKKyAgICAgIGtMb2NhbEFkZHIyLCAicmZyYWciLCAicnBhc3MiLCBjcmlja2V0OjpJ
Q0VST0xFX0NPTlRST0xMRUQsIGtUaWVicmVha2VyMik7CiAgIC8vIFNldHVwIFRlc3RDaGFubmVs
LiBUaGlzIGJlaGF2ZXMgbGlrZSBGVUxMIG1vZGUgY2xpZW50LgotICBUZXN0Q2hhbm5lbCBjaDEo
aWNlX2Z1bGxfcG9ydCk7CisgIFRlc3RDaGFubmVsIGNoMShzdGQ6Om1vdmUoaWNlX2Z1bGxfcG9y
dCkpOwogICBjaDEuU2V0SWNlTW9kZShJQ0VNT0RFX0ZVTEwpOwogCiAgIC8vIFN0YXJ0IGdhdGhl
cmluZyBjYW5kaWRhdGVzLgpAQCAtMjczNCwyNCArMjY5OSwyNCBAQCBURVNUX0YoUG9ydFRlc3Qs
IFRlc3RJY2VMaXRlQ29ubmVjdGl2aXR5KSB7CiAKICAgLy8gVmVyaWZ5IHN0dW4gcGluZyBpcyB3
aXRob3V0IFVTRV9DQU5ESURBVEVfQVRUUi4gR2V0dGluZyBtZXNzYWdlIGRpcmVjdGx5CiAgIC8v
IGZyb20gcG9ydC4KLSAgQVNTRVJUX1RSVUVfV0FJVChpY2VfZnVsbF9wb3J0LT5sYXN0X3N0dW5f
bXNnKCkgIT0gTlVMTCwga0RlZmF1bHRUaW1lb3V0KTsKLSAgSWNlTWVzc2FnZSogbXNnID0gaWNl
X2Z1bGxfcG9ydC0+bGFzdF9zdHVuX21zZygpOworICBBU1NFUlRfVFJVRV9XQUlUKGljZV9mdWxs
X3BvcnRfcHRyLT5sYXN0X3N0dW5fbXNnKCkgIT0gTlVMTCwga0RlZmF1bHRUaW1lb3V0KTsKKyAg
SWNlTWVzc2FnZSogbXNnID0gaWNlX2Z1bGxfcG9ydF9wdHItPmxhc3Rfc3R1bl9tc2coKTsKICAg
RVhQRUNUX1RSVUUobXNnLT5HZXRCeXRlU3RyaW5nKFNUVU5fQVRUUl9VU0VfQ0FORElEQVRFKSA9
PSBOVUxMKTsKIAogICAvLyBSZXNwb25kIHdpdGggYSBCSU5ESU5HLVJFU1BPTlNFIGZyb20gbGl0
ZW1vZGUgY2xpZW50LgogICAvLyBOT1RFOiBJZGVhbGx5IHdlIHNob3VsZCd0IGNyZWF0ZSBjb25u
ZWN0aW9uIGF0IHRoaXMgc3RhZ2UgZnJvbSBsaXRlCiAgIC8vIHBvcnQsIGFzIGl0IHNob3VsZCBi
ZSBkb25lIG9ubHkgYWZ0ZXIgcmVjZWl2aW5nIHBpbmcgd2l0aCBVU0VfQ0FORElEQVRFLgogICAv
LyBCdXQgd2UgbmVlZCBhIGNvbm5lY3Rpb24gdG8gc2VuZCBhIHJlc3BvbnNlIG1lc3NhZ2UuCi0g
IGljZV9saXRlX3BvcnQtPkNyZWF0ZUNvbm5lY3Rpb24oaWNlX2Z1bGxfcG9ydC0+Q2FuZGlkYXRl
cygpWzBdLAorICBpY2VfbGl0ZV9wb3J0LT5DcmVhdGVDb25uZWN0aW9uKGljZV9mdWxsX3BvcnRf
cHRyLT5DYW5kaWRhdGVzKClbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JpY2tldDo6UG9ydDo6T1JJR0lOX01FU1NBR0UpOwotICBzdGQ6OnVuaXF1ZV9wdHI8SWNlTWVz
c2FnZT4gcmVxdWVzdChDb3B5U3R1bk1lc3NhZ2UobXNnKSk7Ci0gIGljZV9saXRlX3BvcnQtPlNl
bmRCaW5kaW5nUmVzcG9uc2UocmVxdWVzdC5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpY2VfZnVsbF9wb3J0LT5DYW5kaWRhdGVzKClbMF0uYWRkcmVzcygpKTsK
KyAgc3RkOjp1bmlxdWVfcHRyPEljZU1lc3NhZ2U+IHJlcXVlc3QgPSBDb3B5U3R1bk1lc3NhZ2Uo
Km1zZyk7CisgIGljZV9saXRlX3BvcnQtPlNlbmRCaW5kaW5nUmVzcG9uc2UoCisgICAgICByZXF1
ZXN0LmdldCgpLCBpY2VfZnVsbF9wb3J0X3B0ci0+Q2FuZGlkYXRlcygpWzBdLmFkZHJlc3MoKSk7
CiAKICAgLy8gRmVlZGluZyB0aGUgcmVzcG9uZSBtZXNzYWdlIGZyb20gbGl0ZW1vZGUgdG8gdGhl
IGZ1bGwgbW9kZSBjb25uZWN0aW9uLgogICBjaDEuY29ubigpLT5PblJlYWRQYWNrZXQoaWNlX2xp
dGVfcG9ydC0+bGFzdF9zdHVuX2J1ZigpLT5kYXRhPGNoYXI+KCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpY2VfbGl0ZV9wb3J0LT5sYXN0X3N0dW5fYnVmKCktPnNpemUoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0VGltZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgLy8gVmVyaWZ5aW5nIGZ1
bGwgbW9kZSBjb25uZWN0aW9uIGJlY29tZXMgd3JpdGFibGUgZnJvbSB0aGUgcmVzcG9uc2UuCiAg
IEVYUEVDVF9FUV9XQUlUKENvbm5lY3Rpb246OlNUQVRFX1dSSVRBQkxFLCBjaDEuY29ubigpLT53
cml0ZV9zdGF0ZSgpLAogICAgICAgICAgICAgICAgICBrRGVmYXVsdFRpbWVvdXQpOwpAQCAtMjc1
OSwxMSArMjcyNCwxMSBAQCBURVNUX0YoUG9ydFRlc3QsIFRlc3RJY2VMaXRlQ29ubmVjdGl2aXR5
KSB7CiAKICAgLy8gQ2xlYXIgZXhpc3Rpbmcgc3R1biBtZXNzc2FnZXMuIE90aGVyd2lzZSB3ZSB3
aWxsIHByb2Nlc3Mgb2xkIHN0dW4KICAgLy8gbWVzc2FnZSByaWdodCBhZnRlciB3ZSBzZW5kIHBp
bmcuCi0gIGljZV9mdWxsX3BvcnQtPlJlc2V0KCk7CisgIGljZV9mdWxsX3BvcnRfcHRyLT5SZXNl
dCgpOwogICAvLyBTZW5kIHBpbmcuIFRoaXMgbXVzdCBoYXZlIFVTRV9DQU5ESURBVEVfQVRUUi4K
ICAgY2gxLlBpbmcoKTsKLSAgQVNTRVJUX1RSVUVfV0FJVChpY2VfZnVsbF9wb3J0LT5sYXN0X3N0
dW5fbXNnKCkgIT0gTlVMTCwga0RlZmF1bHRUaW1lb3V0KTsKLSAgbXNnID0gaWNlX2Z1bGxfcG9y
dC0+bGFzdF9zdHVuX21zZygpOworICBBU1NFUlRfVFJVRV9XQUlUKGljZV9mdWxsX3BvcnRfcHRy
LT5sYXN0X3N0dW5fbXNnKCkgIT0gTlVMTCwga0RlZmF1bHRUaW1lb3V0KTsKKyAgbXNnID0gaWNl
X2Z1bGxfcG9ydF9wdHItPmxhc3Rfc3R1bl9tc2coKTsKICAgRVhQRUNUX1RSVUUobXNnLT5HZXRC
eXRlU3RyaW5nKFNUVU5fQVRUUl9VU0VfQ0FORElEQVRFKSAhPSBOVUxMKTsKICAgY2gxLlN0b3Ao
KTsKIH0KQEAgLTI3NzQsMjEgKzI3MzksMjEgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0SWNlTGl0
ZUNvbm5lY3Rpdml0eSkgewogVEVTVF9GKFBvcnRUZXN0LCBUZXN0UG9ydFRpbWVvdXRJZk5vdEtl
cHRBbGl2ZSkgewogICBydGM6OlNjb3BlZEZha2VDbG9jayBjbG9jazsKICAgaW50IHRpbWVvdXRf
ZGVsYXkgPSAxMDA7Ci0gIFVEUFBvcnQqIHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRy
MSk7Ci0gIENvbm5lY3RUb1NpZ25hbERlc3Ryb3llZChwb3J0MSk7CisgIGF1dG8gcG9ydDEgPSBD
cmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKKyAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBv
cnQxLmdldCgpKTsKICAgcG9ydDEtPnNldF90aW1lb3V0X2RlbGF5KHRpbWVvdXRfZGVsYXkpOyAg
Ly8gbWlsbGlzZWNvbmRzCiAgIHBvcnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09O
VFJPTExJTkcpOwogICBwb3J0MS0+U2V0SWNlVGllYnJlYWtlcihrVGllYnJlYWtlcjEpOwogCi0g
IFVEUFBvcnQqIHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMik7Ci0gIENvbm5lY3RU
b1NpZ25hbERlc3Ryb3llZChwb3J0Mik7CisgIGF1dG8gcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtM
b2NhbEFkZHIyKTsKKyAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQyLmdldCgpKTsKICAg
cG9ydDItPnNldF90aW1lb3V0X2RlbGF5KHRpbWVvdXRfZGVsYXkpOyAgLy8gbWlsbGlzZWNvbmRz
CiAgIHBvcnQyLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CiAgIHBv
cnQyLT5TZXRJY2VUaWVicmVha2VyKGtUaWVicmVha2VyMik7CiAKICAgLy8gU2V0IHVwIGNoYW5u
ZWxzIGFuZCBlbnN1cmUgYm90aCBwb3J0cyB3aWxsIGJlIGRlbGV0ZWQuCi0gIFRlc3RDaGFubmVs
IGNoMShwb3J0MSk7Ci0gIFRlc3RDaGFubmVsIGNoMihwb3J0Mik7CisgIFRlc3RDaGFubmVsIGNo
MShzdGQ6Om1vdmUocG9ydDEpKTsKKyAgVGVzdENoYW5uZWwgY2gyKHN0ZDo6bW92ZShwb3J0Mikp
OwogCiAgIC8vIFNpbXVsYXRlIGEgY29ubmVjdGlvbiB0aGF0IHN1Y2NlZWRzLCBhbmQgdGhlbiBp
cyBkZXN0cm95ZWQuCiAgIFN0YXJ0Q29ubmVjdEFuZFN0b3BDaGFubmVscygmY2gxLCAmY2gyKTsK
QEAgLTI4MDMsMjIgKzI3NjgsMjIgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0UG9ydFRpbWVvdXRJ
Zk5vdEtlcHRBbGl2ZSkgewogVEVTVF9GKFBvcnRUZXN0LCBUZXN0UG9ydFRpbWVvdXRBZnRlck5l
d0Nvbm5lY3Rpb25DcmVhdGVkQW5kRGVzdHJveWVkKSB7CiAgIHJ0Yzo6U2NvcGVkRmFrZUNsb2Nr
IGNsb2NrOwogICBpbnQgdGltZW91dF9kZWxheSA9IDEwMDsKLSAgVURQUG9ydCogcG9ydDEgPSBD
cmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIxKTsKLSAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBv
cnQxKTsKKyAgYXV0byBwb3J0MSA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjEpOworICBDb25u
ZWN0VG9TaWduYWxEZXN0cm95ZWQocG9ydDEuZ2V0KCkpOwogICBwb3J0MS0+c2V0X3RpbWVvdXRf
ZGVsYXkodGltZW91dF9kZWxheSk7ICAvLyBtaWxsaXNlY29uZHMKICAgcG9ydDEtPlNldEljZVJv
bGUoY3JpY2tldDo6SUNFUk9MRV9DT05UUk9MTElORyk7CiAgIHBvcnQxLT5TZXRJY2VUaWVicmVh
a2VyKGtUaWVicmVha2VyMSk7CiAKLSAgVURQUG9ydCogcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtM
b2NhbEFkZHIyKTsKLSAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQyKTsKKyAgYXV0byBw
b3J0MiA9IENyZWF0ZVVkcFBvcnQoa0xvY2FsQWRkcjIpOworICBDb25uZWN0VG9TaWduYWxEZXN0
cm95ZWQocG9ydDIuZ2V0KCkpOwogICBwb3J0Mi0+c2V0X3RpbWVvdXRfZGVsYXkodGltZW91dF9k
ZWxheSk7ICAvLyBtaWxsaXNlY29uZHMKIAogICBwb3J0Mi0+U2V0SWNlUm9sZShjcmlja2V0OjpJ
Q0VST0xFX0NPTlRST0xMRUQpOwogICBwb3J0Mi0+U2V0SWNlVGllYnJlYWtlcihrVGllYnJlYWtl
cjIpOwogCiAgIC8vIFNldCB1cCBjaGFubmVscyBhbmQgZW5zdXJlIGJvdGggcG9ydHMgd2lsbCBi
ZSBkZWxldGVkLgotICBUZXN0Q2hhbm5lbCBjaDEocG9ydDEpOwotICBUZXN0Q2hhbm5lbCBjaDIo
cG9ydDIpOworICBUZXN0Q2hhbm5lbCBjaDEoc3RkOjptb3ZlKHBvcnQxKSk7CisgIFRlc3RDaGFu
bmVsIGNoMihzdGQ6Om1vdmUocG9ydDIpKTsKIAogICAvLyBTaW11bGF0ZSBhIGNvbm5lY3Rpb24g
dGhhdCBzdWNjZWVkcywgYW5kIHRoZW4gaXMgZGVzdHJveWVkLgogICBTdGFydENvbm5lY3RBbmRT
dG9wQ2hhbm5lbHMoJmNoMSwgJmNoMik7CkBAIC0yODQ0LDE0ICsyODA5LDE0IEBAIFRFU1RfRihQ
b3J0VGVzdCwgVGVzdFBvcnRUaW1lb3V0QWZ0ZXJOZXdDb25uZWN0aW9uQ3JlYXRlZEFuZERlc3Ry
b3llZCkgewogVEVTVF9GKFBvcnRUZXN0LCBUZXN0UG9ydE5vdFRpbWVvdXRVbnRpbFBydW5lZCkg
ewogICBydGM6OlNjb3BlZEZha2VDbG9jayBjbG9jazsKICAgaW50IHRpbWVvdXRfZGVsYXkgPSAx
MDA7Ci0gIFVEUFBvcnQqIHBvcnQxID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7Ci0gIENv
bm5lY3RUb1NpZ25hbERlc3Ryb3llZChwb3J0MSk7CisgIGF1dG8gcG9ydDEgPSBDcmVhdGVVZHBQ
b3J0KGtMb2NhbEFkZHIxKTsKKyAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQxLmdldCgp
KTsKICAgcG9ydDEtPnNldF90aW1lb3V0X2RlbGF5KHRpbWVvdXRfZGVsYXkpOyAgLy8gbWlsbGlz
ZWNvbmRzCiAgIHBvcnQxLT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExJTkcp
OwogICBwb3J0MS0+U2V0SWNlVGllYnJlYWtlcihrVGllYnJlYWtlcjEpOwogCi0gIFVEUFBvcnQq
IHBvcnQyID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMik7Ci0gIENvbm5lY3RUb1NpZ25hbERl
c3Ryb3llZChwb3J0Mik7CisgIGF1dG8gcG9ydDIgPSBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIy
KTsKKyAgQ29ubmVjdFRvU2lnbmFsRGVzdHJveWVkKHBvcnQyLmdldCgpKTsKICAgcG9ydDItPnNl
dF90aW1lb3V0X2RlbGF5KHRpbWVvdXRfZGVsYXkpOyAgLy8gbWlsbGlzZWNvbmRzCiAgIHBvcnQy
LT5TZXRJY2VSb2xlKGNyaWNrZXQ6OklDRVJPTEVfQ09OVFJPTExFRCk7CiAgIHBvcnQyLT5TZXRJ
Y2VUaWVicmVha2VyKGtUaWVicmVha2VyMik7CkBAIC0yODYyLDQwICsyODI3LDM5IEBAIFRFU1Rf
RihQb3J0VGVzdCwgVGVzdFBvcnROb3RUaW1lb3V0VW50aWxQcnVuZWQpIHsKICAgcG9ydDItPnNl
dF9jb21wb25lbnQoY3JpY2tldDo6SUNFX0NBTkRJREFURV9DT01QT05FTlRfREVGQVVMVCk7CiAK
ICAgLy8gU2V0IHVwIGNoYW5uZWxzIGFuZCBrZWVwIHRoZSBwb3J0IGFsaXZlLgotICBUZXN0Q2hh
bm5lbCBjaDEocG9ydDEpOwotICBUZXN0Q2hhbm5lbCBjaDIocG9ydDIpOworICBUZXN0Q2hhbm5l
bCBjaDEoc3RkOjptb3ZlKHBvcnQxKSk7CisgIFRlc3RDaGFubmVsIGNoMihzdGQ6Om1vdmUocG9y
dDIpKTsKICAgLy8gU2ltdWxhdGUgYSBjb25uZWN0aW9uIHRoYXQgc3VjY2VlZHMsIGFuZCB0aGVu
IGlzIGRlc3Ryb3llZC4gQnV0IHBvcnRzCiAgIC8vIGFyZSBrZXB0IGFsaXZlLiBQb3J0cyB3b24n
dCBiZSBkZXN0cm95ZWQuCiAgIFN0YXJ0Q29ubmVjdEFuZFN0b3BDaGFubmVscygmY2gxLCAmY2gy
KTsKLSAgcG9ydDEtPktlZXBBbGl2ZVVudGlsUHJ1bmVkKCk7Ci0gIHBvcnQyLT5LZWVwQWxpdmVV
bnRpbFBydW5lZCgpOworICBjaDEucG9ydCgpLT5LZWVwQWxpdmVVbnRpbFBydW5lZCgpOworICBj
aDIucG9ydCgpLT5LZWVwQWxpdmVVbnRpbFBydW5lZCgpOwogICBTSU1VTEFURURfV0FJVChwb3J0
c19kZXN0cm95ZWQoKSA+IDAsIDE1MCwgY2xvY2spOwogICBFWFBFQ1RfRVEoMCwgcG9ydHNfZGVz
dHJveWVkKCkpOwogCiAgIC8vIElmIHRoZXkgYXJlIHBydW5lZCBub3csIHRoZXkgd2lsbCBiZSBk
ZXN0cm95ZWQgcmlnaHQgYXdheS4KLSAgcG9ydDEtPlBydW5lKCk7Ci0gIHBvcnQyLT5QcnVuZSgp
OworICBjaDEucG9ydCgpLT5QcnVuZSgpOworICBjaDIucG9ydCgpLT5QcnVuZSgpOwogICAvLyBU
aGUgcG9ydHMgb24gYm90aCBzaWRlcyBzaG91bGQgYmUgZGVzdHJveWVkIGFmdGVyIHRpbWVvdXQu
CiAgIEVYUEVDVF9UUlVFX1NJTVVMQVRFRF9XQUlUKHBvcnRzX2Rlc3Ryb3llZCgpID09IDIsIDEs
IGNsb2NrKTsKIH0KIAogVEVTVF9GKFBvcnRUZXN0LCBUZXN0U3VwcG9ydHNQcm90b2NvbCkgewot
ICBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4gdWRwX3BvcnQoQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRy
MSkpOworICBhdXRvIHVkcF9wb3J0ID0gQ3JlYXRlVWRwUG9ydChrTG9jYWxBZGRyMSk7CiAgIEVY
UEVDVF9UUlVFKHVkcF9wb3J0LT5TdXBwb3J0c1Byb3RvY29sKFVEUF9QUk9UT0NPTF9OQU1FKSk7
CiAgIEVYUEVDVF9GQUxTRSh1ZHBfcG9ydC0+U3VwcG9ydHNQcm90b2NvbChUQ1BfUFJPVE9DT0xf
TkFNRSkpOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxQb3J0PiBzdHVuX3BvcnQoCi0gICAgICBDcmVh
dGVTdHVuUG9ydChrTG9jYWxBZGRyMSwgbmF0X3NvY2tldF9mYWN0b3J5MSgpKSk7CisgIGF1dG8g
c3R1bl9wb3J0ID0gQ3JlYXRlU3R1blBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRfZmFjdG9y
eTEoKSk7CiAgIEVYUEVDVF9UUlVFKHN0dW5fcG9ydC0+U3VwcG9ydHNQcm90b2NvbChVRFBfUFJP
VE9DT0xfTkFNRSkpOwogICBFWFBFQ1RfRkFMU0Uoc3R1bl9wb3J0LT5TdXBwb3J0c1Byb3RvY29s
KFRDUF9QUk9UT0NPTF9OQU1FKSk7CiAKLSAgc3RkOjp1bmlxdWVfcHRyPFBvcnQ+IHRjcF9wb3J0
KENyZWF0ZVRjcFBvcnQoa0xvY2FsQWRkcjEpKTsKKyAgYXV0byB0Y3BfcG9ydCA9IENyZWF0ZVRj
cFBvcnQoa0xvY2FsQWRkcjEpOwogICBFWFBFQ1RfVFJVRSh0Y3BfcG9ydC0+U3VwcG9ydHNQcm90
b2NvbChUQ1BfUFJPVE9DT0xfTkFNRSkpOwogICBFWFBFQ1RfVFJVRSh0Y3BfcG9ydC0+U3VwcG9y
dHNQcm90b2NvbChTU0xUQ1BfUFJPVE9DT0xfTkFNRSkpOwogICBFWFBFQ1RfRkFMU0UodGNwX3Bv
cnQtPlN1cHBvcnRzUHJvdG9jb2woVURQX1BST1RPQ09MX05BTUUpKTsKIAotICBzdGQ6OnVuaXF1
ZV9wdHI8UG9ydD4gdHVybl9wb3J0KAotICAgICAgQ3JlYXRlVHVyblBvcnQoa0xvY2FsQWRkcjEs
IG5hdF9zb2NrZXRfZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQUk9UT19VRFApKTsKKyAgYXV0byB0
dXJuX3BvcnQgPQorICAgICAgQ3JlYXRlVHVyblBvcnQoa0xvY2FsQWRkcjEsIG5hdF9zb2NrZXRf
ZmFjdG9yeTEoKSwgUFJPVE9fVURQLCBQUk9UT19VRFApOwogICBFWFBFQ1RfVFJVRSh0dXJuX3Bv
cnQtPlN1cHBvcnRzUHJvdG9jb2woVURQX1BST1RPQ09MX05BTUUpKTsKICAgRVhQRUNUX0ZBTFNF
KHR1cm5fcG9ydC0+U3VwcG9ydHNQcm90b2NvbChUQ1BfUFJPVE9DT0xfTkFNRSkpOwogfQpAQCAt
MjkwMyw4ICsyODY3LDcgQEAgVEVTVF9GKFBvcnRUZXN0LCBUZXN0U3VwcG9ydHNQcm90b2NvbCkg
ewogLy8gVGVzdCB0aGF0IFNldEljZVBhcmFtZXRlcnMgdXBkYXRlcyB0aGUgY29tcG9uZW50LCB1
ZnJhZyBhbmQgcGFzc3dvcmQKIC8vIG9uIGJvdGggdGhlIHBvcnQgaXRzZWxmIGFuZCBpdHMgY2Fu
ZGlkYXRlcy4KIFRFU1RfRihQb3J0VGVzdCwgVGVzdFNldEljZVBhcmFtZXRlcnMpIHsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPFRlc3RQb3J0PiBwb3J0KAotICAgICAgQ3JlYXRlVGVzdFBvcnQoa0xvY2Fs
QWRkcjEsICJ1ZnJhZzEiLCAicGFzc3dvcmQxIikpOworICBhdXRvIHBvcnQgPSBDcmVhdGVUZXN0
UG9ydChrTG9jYWxBZGRyMSwgInVmcmFnMSIsICJwYXNzd29yZDEiKTsKICAgcG9ydC0+UHJlcGFy
ZUFkZHJlc3MoKTsKICAgRVhQRUNUX0VRKDFVTCwgcG9ydC0+Q2FuZGlkYXRlcygpLnNpemUoKSk7
CiAgIHBvcnQtPlNldEljZVBhcmFtZXRlcnMoMSwgInVmcmFnMiIsICJwYXNzd29yZDIiKTsKQEAg
LTI5MTgsOCArMjg4MSw3IEBAIFRFU1RfRihQb3J0VGVzdCwgVGVzdFNldEljZVBhcmFtZXRlcnMp
IHsKIH0KIAogVEVTVF9GKFBvcnRUZXN0LCBUZXN0QWRkQ29ubmVjdGlvbldpdGhTYW1lQWRkcmVz
cykgewotICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFBvcnQ+IHBvcnQoCi0gICAgICBDcmVhdGVUZXN0
UG9ydChrTG9jYWxBZGRyMSwgInVmcmFnMSIsICJwYXNzd29yZDEiKSk7CisgIGF1dG8gcG9ydCA9
IENyZWF0ZVRlc3RQb3J0KGtMb2NhbEFkZHIxLCAidWZyYWcxIiwgInBhc3N3b3JkMSIpOwogICBw
b3J0LT5QcmVwYXJlQWRkcmVzcygpOwogICBFWFBFQ1RfRVEoMXUsIHBvcnQtPkNhbmRpZGF0ZXMo
KS5zaXplKCkpOwogICBydGM6OlNvY2tldEFkZHJlc3MgYWRkcmVzcygiMS4xLjEuMSIsIDUwMDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvcG9ydGFsbG9jYXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3IuY2MKaW5kZXggNTQ3MGI1YjgyZTY1
NWUzNjQzYmVlMGVkOWY0MmViOWViNzA2NTc4YS4uZDNiM2E1NmVkZDkyNmM3YzBhMDMxNGJjNTNj
ODZhNDcyOTc0YzIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2NhdG9yLmNjCkBA
IC0xMCw4ICsxMCwxMCBAQAogCiAjaW5jbHVkZSAicDJwL2Jhc2UvcG9ydGFsbG9jYXRvci5oIgog
CisjaW5jbHVkZSA8aXRlcmF0b3I+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgInAy
cC9iYXNlL2ljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewpAQCAtMTIxLDYgKzEyMywxMCBAQCBQb3J0QWxs
b2NhdG9yOjp+UG9ydEFsbG9jYXRvcigpIHsKICAgQ2hlY2tSdW5PblZhbGlkVGhyZWFkSWZJbml0
aWFsaXplZCgpOwogfQogCit2b2lkIFBvcnRBbGxvY2F0b3I6OnNldF9yZXN0cmljdF9pY2VfY3Jl
ZGVudGlhbHNfY2hhbmdlKGJvb2wgdmFsdWUpIHsKKyAgcmVzdHJpY3RfaWNlX2NyZWRlbnRpYWxz
X2NoYW5nZV8gPSB2YWx1ZTsKK30KKwogYm9vbCBQb3J0QWxsb2NhdG9yOjpTZXRDb25maWd1cmF0
aW9uKAogICAgIGNvbnN0IFNlcnZlckFkZHJlc3NlcyYgc3R1bl9zZXJ2ZXJzLAogICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPFJlbGF5U2VydmVyQ29uZmlnPiYgdHVybl9zZXJ2ZXJzLApAQCAtMTY2LDgg
KzE3Miw4IEBAIGJvb2wgUG9ydEFsbG9jYXRvcjo6U2V0Q29uZmlndXJhdGlvbigKICAgLy8gSWYg
fGNhbmRpZGF0ZV9wb29sX3NpemVffCBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBwb29sZWQg
c2Vzc2lvbnMsIGdldAogICAvLyByaWQgb2YgdGhlIGV4dHJhcy4KICAgd2hpbGUgKGNhbmRpZGF0
ZV9wb29sX3NpemVfIDwgc3RhdGljX2Nhc3Q8aW50Pihwb29sZWRfc2Vzc2lvbnNfLnNpemUoKSkp
IHsKLSAgICBwb29sZWRfc2Vzc2lvbnNfLmZyb250KCkucmVzZXQobnVsbHB0cik7Ci0gICAgcG9v
bGVkX3Nlc3Npb25zXy5wb3BfZnJvbnQoKTsKKyAgICBwb29sZWRfc2Vzc2lvbnNfLmJhY2soKS5y
ZXNldChudWxscHRyKTsKKyAgICBwb29sZWRfc2Vzc2lvbnNfLnBvcF9iYWNrKCk7CiAgIH0KIAog
ICAvLyB8c3R1bl9jYW5kaWRhdGVfa2VlcGFsaXZlX2ludGVydmFsX3wgd2lsbCBiZSB1c2VkIGlu
IFNUVU4gcG9ydCBhbGxvY2F0aW9uCkBAIC0xODMsNyArMTg5LDExIEBAIGJvb2wgUG9ydEFsbG9j
YXRvcjo6U2V0Q29uZmlndXJhdGlvbigKICAgLy8gSWYgfGNhbmRpZGF0ZV9wb29sX3NpemVffCBp
cyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBwb29sZWQgc2Vzc2lvbnMsCiAgIC8vIGNyZWF0
ZSBuZXcgc2Vzc2lvbnMuCiAgIHdoaWxlIChzdGF0aWNfY2FzdDxpbnQ+KHBvb2xlZF9zZXNzaW9u
c18uc2l6ZSgpKSA8IGNhbmRpZGF0ZV9wb29sX3NpemVfKSB7Ci0gICAgUG9ydEFsbG9jYXRvclNl
c3Npb24qIHBvb2xlZF9zZXNzaW9uID0gQ3JlYXRlU2Vzc2lvbkludGVybmFsKCIiLCAwLCAiIiwg
IiIpOworICAgIEljZVBhcmFtZXRlcnMgaWNlQ3JlZGVudGlhbHMgPQorICAgICAgICBJY2VDcmVk
ZW50aWFsc0l0ZXJhdG9yOjpDcmVhdGVSYW5kb21JY2VDcmVkZW50aWFscygpOworICAgIFBvcnRB
bGxvY2F0b3JTZXNzaW9uKiBwb29sZWRfc2Vzc2lvbiA9CisgICAgICAgIENyZWF0ZVNlc3Npb25J
bnRlcm5hbCgiIiwgMCwgaWNlQ3JlZGVudGlhbHMudWZyYWcsIGljZUNyZWRlbnRpYWxzLnB3ZCk7
CisgICAgcG9vbGVkX3Nlc3Npb24tPnNldF9wb29sZWQodHJ1ZSk7CiAgICAgcG9vbGVkX3Nlc3Np
b24tPlN0YXJ0R2V0dGluZ1BvcnRzKCk7CiAgICAgcG9vbGVkX3Nlc3Npb25zXy5wdXNoX2JhY2so
CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb3J0QWxsb2NhdG9yU2Vzc2lvbj4ocG9vbGVkX3Nl
c3Npb24pKTsKQEAgLTIxNCwyMiArMjI0LDUwIEBAIHN0ZDo6dW5pcXVlX3B0cjxQb3J0QWxsb2Nh
dG9yU2Vzc2lvbj4gUG9ydEFsbG9jYXRvcjo6VGFrZVBvb2xlZFNlc3Npb24oCiAgIGlmIChwb29s
ZWRfc2Vzc2lvbnNfLmVtcHR5KCkpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQotICBzdGQ6
OnVuaXF1ZV9wdHI8UG9ydEFsbG9jYXRvclNlc3Npb24+IHJldCA9Ci0gICAgICBzdGQ6Om1vdmUo
cG9vbGVkX3Nlc3Npb25zXy5mcm9udCgpKTsKKworICBJY2VQYXJhbWV0ZXJzIGNyZWRlbnRpYWxz
KGljZV91ZnJhZywgaWNlX3B3ZCwgZmFsc2UpOworICAvLyBJZiByZXN0cmljdF9pY2VfY3JlZGVu
dGlhbHNfY2hhbmdlXyBpcyBUUlVFLCB0aGVuIGNhbGwgRmluZFBvb2xlZFNlc3Npb24KKyAgLy8g
d2l0aCBpY2UgY3JlZGVudGlhbHMuIE90aGVyd2lzZSBjYWxsIGl0IHdpdGggbnVsbHB0ciB3aGlj
aCBtZWFucworICAvLyAiZmluZCBhbnkiIHBvb2xlZCBzZXNzaW9uLgorICBhdXRvIGNpdCA9IEZp
bmRQb29sZWRTZXNzaW9uKHJlc3RyaWN0X2ljZV9jcmVkZW50aWFsc19jaGFuZ2VfID8gJmNyZWRl
bnRpYWxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBudWxscHRyKTsKKyAgaWYgKGNpdCA9PSBwb29sZWRfc2Vzc2lvbnNf
LmVuZCgpKSB7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKworICBhdXRvIGl0ID0KKyAgICAg
IHBvb2xlZF9zZXNzaW9uc18uYmVnaW4oKSArIHN0ZDo6ZGlzdGFuY2UocG9vbGVkX3Nlc3Npb25z
Xy5jYmVnaW4oKSwgY2l0KTsKKyAgc3RkOjp1bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9u
PiByZXQgPSBzdGQ6Om1vdmUoKml0KTsKICAgcmV0LT5TZXRJY2VQYXJhbWV0ZXJzKGNvbnRlbnRf
bmFtZSwgY29tcG9uZW50LCBpY2VfdWZyYWcsIGljZV9wd2QpOwotICAvLyBBY2NvcmRpbmcgdG8g
SlNFUCwgYSBwb29sZWQgc2Vzc2lvbiBzaG91bGQgZmlsdGVyIGNhbmRpZGF0ZXMgb25seSBhZnRl
cgotICAvLyBpdCdzIHRha2VuIG91dCBvZiB0aGUgcG9vbC4KKyAgcmV0LT5zZXRfcG9vbGVkKGZh
bHNlKTsKKyAgLy8gQWNjb3JkaW5nIHRvIEpTRVAsIGEgcG9vbGVkIHNlc3Npb24gc2hvdWxkIGZp
bHRlciBjYW5kaWRhdGVzIG9ubHkKKyAgLy8gYWZ0ZXIgaXQncyB0YWtlbiBvdXQgb2YgdGhlIHBv
b2wuCiAgIHJldC0+U2V0Q2FuZGlkYXRlRmlsdGVyKGNhbmRpZGF0ZV9maWx0ZXIoKSk7Ci0gIHBv
b2xlZF9zZXNzaW9uc18ucG9wX2Zyb250KCk7CisgIHBvb2xlZF9zZXNzaW9uc18uZXJhc2UoaXQp
OwogICByZXR1cm4gcmV0OwogfQogCi1jb25zdCBQb3J0QWxsb2NhdG9yU2Vzc2lvbiogUG9ydEFs
bG9jYXRvcjo6R2V0UG9vbGVkU2Vzc2lvbigpIGNvbnN0IHsKK2NvbnN0IFBvcnRBbGxvY2F0b3JT
ZXNzaW9uKiBQb3J0QWxsb2NhdG9yOjpHZXRQb29sZWRTZXNzaW9uKAorICAgIGNvbnN0IEljZVBh
cmFtZXRlcnMqIGljZV9jcmVkZW50aWFscykgY29uc3QgewogICBDaGVja1J1bk9uVmFsaWRUaHJl
YWRBbmRJbml0aWFsaXplZCgpOwotICBpZiAocG9vbGVkX3Nlc3Npb25zXy5lbXB0eSgpKSB7Cisg
IGF1dG8gaXQgPSBGaW5kUG9vbGVkU2Vzc2lvbihpY2VfY3JlZGVudGlhbHMpOworICBpZiAoaXQg
PT0gcG9vbGVkX3Nlc3Npb25zXy5lbmQoKSkgewogICAgIHJldHVybiBudWxscHRyOworICB9IGVs
c2UgeworICAgIHJldHVybiBpdC0+Z2V0KCk7CisgIH0KK30KKworc3RkOjp2ZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9uPj46OmNvbnN0X2l0ZXJhdG9yCitQb3J0QWxs
b2NhdG9yOjpGaW5kUG9vbGVkU2Vzc2lvbihjb25zdCBJY2VQYXJhbWV0ZXJzKiBpY2VfY3JlZGVu
dGlhbHMpIGNvbnN0IHsKKyAgZm9yIChhdXRvIGl0ID0gcG9vbGVkX3Nlc3Npb25zXy5iZWdpbigp
OyBpdCAhPSBwb29sZWRfc2Vzc2lvbnNfLmVuZCgpOyArK2l0KSB7CisgICAgaWYgKGljZV9jcmVk
ZW50aWFscyA9PSBudWxscHRyIHx8CisgICAgICAgICgoKml0KS0+aWNlX3VmcmFnKCkgPT0gaWNl
X2NyZWRlbnRpYWxzLT51ZnJhZyAmJgorICAgICAgICAgKCppdCktPmljZV9wd2QoKSA9PSBpY2Vf
Y3JlZGVudGlhbHMtPnB3ZCkpIHsKKyAgICAgIHJldHVybiBpdDsKKyAgICB9CiAgIH0KLSAgcmV0
dXJuIHBvb2xlZF9zZXNzaW9uc18uZnJvbnQoKS5nZXQoKTsKKyAgcmV0dXJuIHBvb2xlZF9zZXNz
aW9uc18uZW5kKCk7CiB9CiAKIHZvaWQgUG9ydEFsbG9jYXRvcjo6RnJlZXplQ2FuZGlkYXRlUG9v
bCgpIHsKQEAgLTI1MCw0ICsyODgsMTQgQEAgdm9pZCBQb3J0QWxsb2NhdG9yOjpHZXRDYW5kaWRh
dGVTdGF0c0Zyb21Qb29sZWRTZXNzaW9ucygKICAgfQogfQogCitzdGQ6OnZlY3RvcjxJY2VQYXJh
bWV0ZXJzPiBQb3J0QWxsb2NhdG9yOjpHZXRQb29sZWRJY2VDcmVkZW50aWFscygpIHsKKyAgQ2hl
Y2tSdW5PblZhbGlkVGhyZWFkQW5kSW5pdGlhbGl6ZWQoKTsKKyAgc3RkOjp2ZWN0b3I8SWNlUGFy
YW1ldGVycz4gbGlzdDsKKyAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9uIDogcG9vbGVkX3Nlc3Np
b25zXykgeworICAgIGxpc3QucHVzaF9iYWNrKAorICAgICAgICBJY2VQYXJhbWV0ZXJzKHNlc3Np
b24tPmljZV91ZnJhZygpLCBzZXNzaW9uLT5pY2VfcHdkKCksIGZhbHNlKSk7CisgIH0KKyAgcmV0
dXJuIGxpc3Q7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wb3J0YWxsb2Nh
dG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS9wb3J0YWxsb2NhdG9yLmgKaW5kZXggOGJkNzA5NjQyYzhhZWMzODQ2NTgxYmU4ZDZjNmIwNmU3
OGJjZTAyMC4uNzAyNmYyYjJiNjMyMDRmNzJhYWJkNzIzMzY5ZDVjM2YxOWQyNDk3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
cG9ydGFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3IuaApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1
ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9wcm94eWluZm8uaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3N5c3RlbS9ydGNfZXhwb3J0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvc2ln
c2xvdC9zaWdzbG90LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKQEAgLTE0Niw3ICsxNDcsNyBAQCBzdHJ1Y3QgUmVs
YXlDcmVkZW50aWFscyB7CiAKIHR5cGVkZWYgc3RkOjp2ZWN0b3I8UHJvdG9jb2xBZGRyZXNzPiBQ
b3J0TGlzdDsKIC8vIFRPRE8oZGVhZGJlZWYpOiBSZW5hbWUgdG8gVHVyblNlcnZlckNvbmZpZy4K
LXN0cnVjdCBSZWxheVNlcnZlckNvbmZpZyB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBSZWxheVNlcnZl
ckNvbmZpZyB7CiAgIGV4cGxpY2l0IFJlbGF5U2VydmVyQ29uZmlnKFJlbGF5VHlwZSB0eXBlKTsK
ICAgUmVsYXlTZXJ2ZXJDb25maWcoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLAog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCkBAIC0xODMs
NyArMTg0LDcgQEAgc3RydWN0IFJlbGF5U2VydmVyQ29uZmlnIHsKICAgcnRjOjpTU0xDZXJ0aWZp
Y2F0ZVZlcmlmaWVyKiB0bHNfY2VydF92ZXJpZmllciA9IG51bGxwdHI7CiB9OwogCi1jbGFzcyBQ
b3J0QWxsb2NhdG9yU2Vzc2lvbiA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CitjbGFz
cyBSVENfRVhQT1JUIFBvcnRBbGxvY2F0b3JTZXNzaW9uIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19z
bG90czw+IHsKICBwdWJsaWM6CiAgIC8vIENvbnRlbnQgbmFtZSBwYXNzZWQgaW4gbW9zdGx5IGZv
ciBsb2dnaW5nIGFuZCBkZWJ1Z2dpbmcuCiAgIFBvcnRBbGxvY2F0b3JTZXNzaW9uKGNvbnN0IHN0
ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCkBAIC0yMDEsNyArMjAyLDcgQEAgY2xhc3MgUG9ydEFs
bG9jYXRvclNlc3Npb24gOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICBpbnQgY29t
cG9uZW50KCkgY29uc3QgeyByZXR1cm4gY29tcG9uZW50XzsgfQogICBjb25zdCBzdGQ6OnN0cmlu
ZyYgaWNlX3VmcmFnKCkgY29uc3QgeyByZXR1cm4gaWNlX3VmcmFnXzsgfQogICBjb25zdCBzdGQ6
OnN0cmluZyYgaWNlX3B3ZCgpIGNvbnN0IHsgcmV0dXJuIGljZV9wd2RfOyB9Ci0gIGJvb2wgcG9v
bGVkKCkgY29uc3QgeyByZXR1cm4gaWNlX3VmcmFnXy5lbXB0eSgpOyB9CisgIGJvb2wgcG9vbGVk
KCkgY29uc3QgeyByZXR1cm4gcG9vbGVkXzsgfQogCiAgIC8vIFNldHRpbmcgdGhpcyBmaWx0ZXIg
c2hvdWxkIGFmZmVjdCBub3Qgb25seSBjYW5kaWRhdGVzIGdhdGhlcmVkIGluIHRoZQogICAvLyBm
dXR1cmUsIGJ1dCBjYW5kaWRhdGVzIGFscmVhZHkgZ2F0aGVyZWQgYW5kIHBvcnRzIGFscmVhZHkg
InJlYWR5IiwKQEAgLTMwOSw2ICszMTAsOCBAQCBjbGFzcyBQb3J0QWxsb2NhdG9yU2Vzc2lvbiA6
IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgVXBkYXRlSWNlUGFyYW1ldGVyc0lu
dGVybmFsKCk7CiAgIH0KIAorICB2b2lkIHNldF9wb29sZWQoYm9vbCB2YWx1ZSkgeyBwb29sZWRf
ID0gdmFsdWU7IH0KKwogICB1aW50MzJfdCBmbGFnc187CiAgIHVpbnQzMl90IGdlbmVyYXRpb25f
OwogICBzdGQ6OnN0cmluZyBjb250ZW50X25hbWVfOwpAQCAtMzE2LDYgKzMxOSw4IEBAIGNsYXNz
IFBvcnRBbGxvY2F0b3JTZXNzaW9uIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAg
c3RkOjpzdHJpbmcgaWNlX3VmcmFnXzsKICAgc3RkOjpzdHJpbmcgaWNlX3B3ZF87CiAKKyAgYm9v
bCBwb29sZWRfID0gZmFsc2U7CisKICAgLy8gU2V0SWNlUGFyYW1ldGVycyBpcyBhbiBpbXBsZW1l
bnRhdGlvbiBkZXRhaWwgd2hpY2ggb25seSBQb3J0QWxsb2NhdG9yCiAgIC8vIHNob3VsZCBiZSBh
YmxlIHRvIGNhbGwuCiAgIGZyaWVuZCBjbGFzcyBQb3J0QWxsb2NhdG9yOwpAQCAtMzI2LDcgKzMz
MSw3IEBAIGNsYXNzIFBvcnRBbGxvY2F0b3JTZXNzaW9uIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19z
bG90czw+IHsKIC8vCiAvLyBUaGlzIGFsbG93cyBhIFBvcnRBbGxvY2F0b3Igc3ViY2xhc3MgdG8g
YmUgY29uc3RydWN0ZWQgYW5kIGNvbmZpZ3VyZWQgb24gb25lCiAvLyB0aHJlYWQsIGFuZCBwYXNz
ZWQgaW50byBhbiBvYmplY3QgdGhhdCB1c2VzIGl0IG9uIGEgZGlmZmVyZW50IHRocmVhZC4KLWNs
YXNzIFBvcnRBbGxvY2F0b3IgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4geworY2xhc3Mg
UlRDX0VYUE9SVCBQb3J0QWxsb2NhdG9yIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsK
ICBwdWJsaWM6CiAgIFBvcnRBbGxvY2F0b3IoKTsKICAgflBvcnRBbGxvY2F0b3IoKSBvdmVycmlk
ZTsKQEAgLTMzNSw2ICszNDAsMTEgQEAgY2xhc3MgUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBzaWdz
bG90OjpoYXNfc2xvdHM8PiB7CiAgIC8vIGNvbnN0cnVjdGluZyBhbmQgY29uZmlndXJpbmcgdGhl
IFBvcnRBbGxvY2F0b3Igc3ViY2xhc3Nlcy4KICAgdmlydHVhbCB2b2lkIEluaXRpYWxpemUoKTsK
IAorICAvLyBTZXQgdG8gdHJ1ZSBpZiBzb21lIFBvcnRzIG5lZWQgdG8ga25vdyB0aGUgSUNFIGNy
ZWRlbnRpYWxzIHdoZW4gdGhleSBhcmUKKyAgLy8gY3JlYXRlZC4gVGhpcyB3aWxsIGVuc3VyZSB0
aGF0IHRoZSBQb3J0QWxsb2NhdG9yIHdpbGwgb25seSBtYXRjaCBwb29sZWQKKyAgLy8gYWxsb2Nh
dG9yIHNlc3Npb25zIHRvIHRoZSBJQ0UgdHJhbnNwb3J0IHdpdGggdGhlIHNhbWUgY3JlZGVudGlh
bHMuCisgIHZpcnR1YWwgdm9pZCBzZXRfcmVzdHJpY3RfaWNlX2NyZWRlbnRpYWxzX2NoYW5nZShi
b29sIHZhbHVlKTsKKwogICAvLyBTZXQgU1RVTiBhbmQgVFVSTiBzZXJ2ZXJzIHRvIGJlIHVzZWQg
aW4gZnV0dXJlIHNlc3Npb25zLCBhbmQgc2V0CiAgIC8vIGNhbmRpZGF0ZSBwb29sIHNpemUsIGFz
IGRlc2NyaWJlZCBpbiBKU0VQLgogICAvLwpAQCAtMzkyLDYgKzQwMiw4IEBAIGNsYXNzIFBvcnRB
bGxvY2F0b3IgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAvLwogICAvLyBDYWxs
ZXIgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZXR1cm5lZCBzZXNzaW9uLgogICAvLworICAvLyBJ
ZiByZXN0cmljdF9pY2VfY3JlZGVudGlhbHNfY2hhbmdlIGlzIFRSVUUsIHRoZW4gaXQgd2lsbCBv
bmx5CisgIC8vICAgcmV0dXJuIGEgcG9vbGVkIHNlc3Npb24gd2l0aCBtYXRjaGluZyBpY2UgY3Jl
ZGVudGlhbHMuCiAgIC8vIElmIG5vIHBvb2xlZCBzZXNzaW9ucyBhcmUgYXZhaWxhYmxlLCByZXR1
cm5zIG51bGwuCiAgIHN0ZDo6dW5pcXVlX3B0cjxQb3J0QWxsb2NhdG9yU2Vzc2lvbj4gVGFrZVBv
b2xlZFNlc3Npb24oCiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLApAQCAt
Mzk5LDggKzQxMSwxMCBAQCBjbGFzcyBQb3J0QWxsb2NhdG9yIDogcHVibGljIHNpZ3Nsb3Q6Omhh
c19zbG90czw+IHsKICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpY2VfdWZyYWcsCiAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgaWNlX3B3ZCk7CiAKLSAgLy8gUmV0dXJucyB0aGUgbmV4dCBzZXNz
aW9uIHRoYXQgd291bGQgYmUgcmV0dXJuZWQgYnkgVGFrZVBvb2xlZFNlc3Npb24uCi0gIGNvbnN0
IFBvcnRBbGxvY2F0b3JTZXNzaW9uKiBHZXRQb29sZWRTZXNzaW9uKCkgY29uc3Q7CisgIC8vIFJl
dHVybnMgdGhlIG5leHQgc2Vzc2lvbiB0aGF0IHdvdWxkIGJlIHJldHVybmVkIGJ5IFRha2VQb29s
ZWRTZXNzaW9uCisgIC8vIG9wdGlvbmFsbHkgcmVzdHJpY3RpbmcgaXQgdG8gc2Vzc2lvbnMgd2l0
aCBzcGVjaWZpZWQgaWNlIGNyZWRlbnRpYWxzLgorICBjb25zdCBQb3J0QWxsb2NhdG9yU2Vzc2lv
biogR2V0UG9vbGVkU2Vzc2lvbigKKyAgICAgIGNvbnN0IEljZVBhcmFtZXRlcnMqIGljZV9jcmVk
ZW50aWFscyA9IG51bGxwdHIpIGNvbnN0OwogCiAgIC8vIEFmdGVyIEZyZWV6ZUNhbmRpZGF0ZVBv
b2wgaXMgY2FsbGVkLCBjaGFuZ2luZyB0aGUgY2FuZGlkYXRlIHBvb2wgc2l6ZSB3aWxsCiAgIC8v
IG5vIGxvbmdlciBiZSBhbGxvd2VkLCBhbmQgY2hhbmdpbmcgSUNFIHNlcnZlcnMgd2lsbCBub3Qg
Y2F1c2UgcG9vbGVkCkBAIC01NDgsNiArNTYyLDkgQEAgY2xhc3MgUG9ydEFsbG9jYXRvciA6IHB1
YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIHZpcnR1YWwgdm9pZCBHZXRDYW5kaWRhdGVT
dGF0c0Zyb21Qb29sZWRTZXNzaW9ucygKICAgICAgIENhbmRpZGF0ZVN0YXRzTGlzdCogY2FuZGlk
YXRlX3N0YXRzX2xpc3QpOwogCisgIC8vIFJldHVybiBJY2VQYXJhbWV0ZXJzIG9mIHRoZSBwb29s
ZWQgc2Vzc2lvbnMuCisgIHN0ZDo6dmVjdG9yPEljZVBhcmFtZXRlcnM+IEdldFBvb2xlZEljZUNy
ZWRlbnRpYWxzKCk7CisKICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgUG9ydEFsbG9jYXRvclNlc3Np
b24qIENyZWF0ZVNlc3Npb25JbnRlcm5hbCgKICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250
ZW50X25hbWUsCkBAIC01NTUsNyArNTcyLDcgQEAgY2xhc3MgUG9ydEFsbG9jYXRvciA6IHB1Ymxp
YyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaWNlX3Vm
cmFnLAogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGljZV9wd2QpID0gMDsKIAotICBjb25zdCBz
dGQ6OmRlcXVlPHN0ZDo6dW5pcXVlX3B0cjxQb3J0QWxsb2NhdG9yU2Vzc2lvbj4+JiBwb29sZWRf
c2Vzc2lvbnMoKSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQb3J0QWxs
b2NhdG9yU2Vzc2lvbj4+JiBwb29sZWRfc2Vzc2lvbnMoKSB7CiAgICAgcmV0dXJuIHBvb2xlZF9z
ZXNzaW9uc187CiAgIH0KIApAQCAtNTg2LDcgKzYwMyw3IEBAIGNsYXNzIFBvcnRBbGxvY2F0b3Ig
OiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICBTZXJ2ZXJBZGRyZXNzZXMgc3R1bl9z
ZXJ2ZXJzXzsKICAgc3RkOjp2ZWN0b3I8UmVsYXlTZXJ2ZXJDb25maWc+IHR1cm5fc2VydmVyc187
CiAgIGludCBjYW5kaWRhdGVfcG9vbF9zaXplXyA9IDA7ICAvLyBMYXN0IHZhbHVlIHBhc3NlZCBp
bnRvIFNldENvbmZpZ3VyYXRpb24uCi0gIHN0ZDo6ZGVxdWU8c3RkOjp1bmlxdWVfcHRyPFBvcnRB
bGxvY2F0b3JTZXNzaW9uPj4gcG9vbGVkX3Nlc3Npb25zXzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9uPj4gcG9vbGVkX3Nlc3Npb25zXzsKICAgYm9v
bCBjYW5kaWRhdGVfcG9vbF9mcm96ZW5fID0gZmFsc2U7CiAgIGJvb2wgcHJ1bmVfdHVybl9wb3J0
c18gPSBmYWxzZTsKIApAQCAtNTk2LDYgKzYxMywxNSBAQCBjbGFzcyBQb3J0QWxsb2NhdG9yIDog
cHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgd2VicnRjOjpUdXJuQ3VzdG9taXplciog
dHVybl9jdXN0b21pemVyXyA9IG51bGxwdHI7CiAKICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzdHVu
X2NhbmRpZGF0ZV9rZWVwYWxpdmVfaW50ZXJ2YWxfOworCisgIC8vIElmIHRydWUsIFRha2VQb29s
ZWRTZXNzaW9uKCkgd2lsbCBvbmx5IHJldHVybiBzZXNzaW9ucyB0aGF0IGhhcyBzYW1lIGljZQor
ICAvLyBjcmVkZW50aWFscyBhcyByZXF1ZXN0ZWQuCisgIGJvb2wgcmVzdHJpY3RfaWNlX2NyZWRl
bnRpYWxzX2NoYW5nZV8gPSBmYWxzZTsKKworICAvLyBSZXR1cm5zIGl0ZXJhdG9yIHRvIHBvb2xl
ZCBzZXNzaW9uIHdpdGggc3BlY2lmaWVkIGljZV9jcmVkZW50aWFscyBvciBmaXJzdAorICAvLyBp
ZiBpY2VfY3JlZGVudGlhbHMgaXMgbnVsbHB0ci4KKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFBvcnRBbGxvY2F0b3JTZXNzaW9uPj46OmNvbnN0X2l0ZXJhdG9yCisgIEZpbmRQb29sZWRT
ZXNzaW9uKGNvbnN0IEljZVBhcmFtZXRlcnMqIGljZV9jcmVkZW50aWFscyA9IG51bGxwdHIpIGNv
bnN0OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3Jf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9wb3J0YWxsb2NhdG9yX3VuaXR0ZXN0LmNjCmluZGV4IDM4ODdhOTBkYjFmMjliYTZm
MDgxMjNiYjEzZTJkOGNiZjUzMjdmMTcuLjhiMzE3ZjRkNWE5NTNjODQ3MzMyODA5YjZlNjZjMjAz
MWJhNjM2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3BvcnRhbGxvY2F0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcG9ydGFsbG9jYXRvcl91
bml0dGVzdC5jYwpAQCAtNzEsOCArNzEsNyBAQCBjbGFzcyBQb3J0QWxsb2NhdG9yVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogCiAgIGlu
dCBHZXRBbGxQb29sZWRTZXNzaW9uc1JldHVybkNvdW50KCkgewogICAgIGludCBjb3VudCA9IDA7
Ci0gICAgd2hpbGUgKEdldFBvb2xlZFNlc3Npb24oKSkgewotICAgICAgVGFrZVBvb2xlZFNlc3Np
b24oKTsKKyAgICB3aGlsZSAoVGFrZVBvb2xlZFNlc3Npb24oKSAhPSBudWxscHRyKSB7CiAgICAg
ICArK2NvdW50OwogICAgIH0KICAgICByZXR1cm4gY291bnQ7CkBAIC0yNzUsMyArMjc0LDI5IEBA
IFRFU1RfRihQb3J0QWxsb2NhdG9yVGVzdCwgRGlzY2FyZENhbmRpZGF0ZVBvb2wpIHsKICAgYWxs
b2NhdG9yXy0+RGlzY2FyZENhbmRpZGF0ZVBvb2woKTsKICAgRVhQRUNUX0VRKDAsIEdldEFsbFBv
b2xlZFNlc3Npb25zUmV0dXJuQ291bnQoKSk7CiB9CisKK1RFU1RfRihQb3J0QWxsb2NhdG9yVGVz
dCwgUmVzdHJpY3RJY2VDcmVkZW50aWFsc0NoYW5nZSkgeworICBTZXRDb25maWd1cmF0aW9uV2l0
aFBvb2xTaXplKDEpOworICBFWFBFQ1RfRVEoMSwgR2V0QWxsUG9vbGVkU2Vzc2lvbnNSZXR1cm5D
b3VudCgpKTsKKyAgYWxsb2NhdG9yXy0+RGlzY2FyZENhbmRpZGF0ZVBvb2woKTsKKworICAvLyBP
bmx5IHJldHVybiBwb29sZWQgc2Vzc2lvbnMgd2l0aCB0aGUgaWNlIGNyZWRlbnRpYWxzIHRoYXQK
KyAgLy8gbWF0Y2ggdGhvc2UgcmVxdWVzdGVkIGluIFRha2VQb29sZWRTZXNzaW9uKCkuCisgIGFs
bG9jYXRvcl8tPnNldF9yZXN0cmljdF9pY2VfY3JlZGVudGlhbHNfY2hhbmdlKHRydWUpOworICBT
ZXRDb25maWd1cmF0aW9uV2l0aFBvb2xTaXplKDEpOworICBFWFBFQ1RfRVEoMCwgR2V0QWxsUG9v
bGVkU2Vzc2lvbnNSZXR1cm5Db3VudCgpKTsKKyAgYWxsb2NhdG9yXy0+RGlzY2FyZENhbmRpZGF0
ZVBvb2woKTsKKworICBTZXRDb25maWd1cmF0aW9uV2l0aFBvb2xTaXplKDEpOworICBhdXRvIGNy
ZWRlbnRpYWxzID0gYWxsb2NhdG9yXy0+R2V0UG9vbGVkSWNlQ3JlZGVudGlhbHMoKTsKKyAgQVNT
RVJUX0VRKDF1LCBjcmVkZW50aWFscy5zaXplKCkpOworICBFWFBFQ1RfRVEobnVsbHB0ciwKKyAg
ICAgICAgICAgIGFsbG9jYXRvcl8tPlRha2VQb29sZWRTZXNzaW9uKGtDb250ZW50TmFtZSwgMCwg
a0ljZVVmcmFnLCBrSWNlUHdkKSk7CisgIEVYUEVDVF9ORShudWxscHRyLAorICAgICAgICAgICAg
YWxsb2NhdG9yXy0+VGFrZVBvb2xlZFNlc3Npb24oa0NvbnRlbnROYW1lLCAwLCBjcmVkZW50aWFs
c1swXS51ZnJhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWRlbnRpYWxzWzBdLnB3ZCkpOworICBFWFBFQ1RfRVEobnVsbHB0ciwKKyAgICAgICAgICAgIGFs
bG9jYXRvcl8tPlRha2VQb29sZWRTZXNzaW9uKGtDb250ZW50TmFtZSwgMCwgY3JlZGVudGlhbHNb
MF0udWZyYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVk
ZW50aWFsc1swXS5wd2QpKTsKKyAgYWxsb2NhdG9yXy0+RGlzY2FyZENhbmRpZGF0ZVBvb2woKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3BzZXVkb3RjcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3BzZXVkb3RjcC5jYwppbmRleCAxNjExMjJiNmQ1YzczODQyYjc3
NTIxZmMxMWUyODZjNmQ4NTdjMGE5Li5jNzQyOTg1ODRhZWUxYWYxYmIyMzgyZDk4Y2ZiMDAzY2Rm
Mzc0MWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS9wc2V1ZG90Y3AuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNldWRvdGNwLmNjCkBAIC0yNCw3ICsyNCw2IEBA
CiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVy
aWNzL3NhZmVfbWlubWF4LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0LmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMu
aCIKIAogLy8gVGhlIGZvbGxvd2luZyBsb2dnaW5nIGlzIGZvciBkZXRhaWxlZCAocGFja2V0LWxl
dmVsKSBhbmFseXNpcyBvbmx5LgpAQCAtMTg2LDggKzE4NSw4IEBAIHZvaWQgUmVwb3J0U3RhdHMo
KSB7CiAgIGNoYXIgYnVmZmVyWzI1Nl07CiAgIHNpemVfdCBsZW4gPSAwOwogICBmb3IgKGludCBp
ID0gMDsgaSA8IFNfTlVNX1NUQVRTOyArK2kpIHsKLSAgICBsZW4gKz0gcnRjOjpzcHJpbnRmbihi
dWZmZXIsIGFycmF5c2l6ZShidWZmZXIpLCAiJXMlczolZCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGkgPT0gMCkgPyAiIiA6ICIsIiwgU1RBVF9OQU1FU1tpXSwgZ19zdGF0c1tp
XSk7CisgICAgbGVuICs9IHNucHJpbnRmKGJ1ZmZlciwgYXJyYXlzaXplKGJ1ZmZlciksICIlcyVz
OiVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPT0gMCkgPyAiIiA6ICIsIiwgU1RB
VF9OQU1FU1tpXSwgZ19zdGF0c1tpXSk7CiAgICAgZ19zdGF0c1tpXSA9IDA7CiAgIH0KICAgUlRD
X0xPRyhMU19JTkZPKSA8PCAiU3RhdHNbIiA8PCBidWZmZXIgPDwgIl0iOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNldWRv
dGNwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS9wc2V1ZG90Y3AuaAppbmRleCBjMzYzZWY2NGI3NGFmOWIxMjIzZmY3Y2E1MzMxNzlhZTgyYzFh
Y2I0Li41YjI2YWViMjFhNWJjZTQzNWExOTg1N2NhN2QwNTFmYWRkOTEzNzBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1
ZG90Y3AuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9wc2V1ZG90Y3AuaApAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgPGxpc3Q+CiAK
ICNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0v
cnRjX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAg
Y2xhc3MgSVBzZXVkb1RjcE5vdGlmeSB7CiAvLyBQc2V1ZG9UY3AKIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAot
Y2xhc3MgUHNldWRvVGNwIHsKK2NsYXNzIFJUQ19FWFBPUlQgUHNldWRvVGNwIHsKICBwdWJsaWM6
CiAgIHN0YXRpYyB1aW50MzJfdCBOb3coKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNldWRvdGNwX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcHNl
dWRvdGNwX3VuaXR0ZXN0LmNjCmluZGV4IGRkODZmOTIxZDUyZmFhMTU2OTJjYTIzYTI0OThlMGNh
NzZmZTFmZjIuLjJmYzk5MDBjYmNjYTViMWZiZjQ5NjBiYzE1ZWExYjg0OTBhODJhODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3BzZXVkb3RjcF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9wc2V1ZG90Y3BfdW5pdHRlc3QuY2MKQEAgLTE1LDggKzE1
LDggQEAKICNpbmNsdWRlICJwMnAvYmFzZS9wc2V1ZG90Y3AuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9ndW5pdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9tZW1vcnlfc3RyZWFtLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWhhbmRsZXIu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvcmVsYXlwb3J0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
cmVsYXlwb3J0LmNjCmluZGV4IGZiODMwY2U2NmE5NDNjZDI0OWRkYTQwYWQyOGU5ZGNlNGJhYTM4
ZjAuLmIxYjkyNGI4MDI3NGMzOTQyNDJmY2U1ZGEzNTlkNDYzMmQ2Mzk4YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5
cG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9yZWxheXBvcnQuY2MKQEAgLTEzOSw3ICsxMzksNyBAQCBjbGFzcyBSZWxheUVudHJ5
IDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8
PiB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tl
dEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBh
Y2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRf
dCYgcGFja2V0X3RpbWVfdXMpOwogCiAgIHZvaWQgT25TZW50UGFja2V0KHJ0Yzo6QXN5bmNQYWNr
ZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTZW50UGFj
a2V0JiBzZW50X3BhY2tldCk7CkBAIC0zOTcsOSArMzk3LDkgQEAgdm9pZCBSZWxheVBvcnQ6Ok9u
UmVhZFBhY2tldChjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpT
b2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJvdG9jb2xUeXBlIHByb3RvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBy
dGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgaWYgKENvbm5lY3Rpb24qIGNvbm4gPSBH
ZXRDb25uZWN0aW9uKHJlbW90ZV9hZGRyKSkgewotICAgIGNvbm4tPk9uUmVhZFBhY2tldChkYXRh
LCBzaXplLCBwYWNrZXRfdGltZSk7CisgICAgY29ubi0+T25SZWFkUGFja2V0KGRhdGEsIHNpemUs
IHBhY2tldF90aW1lX3VzKTsKICAgfSBlbHNlIHsKICAgICBQb3J0OjpPblJlYWRQYWNrZXQoZGF0
YSwgc2l6ZSwgcmVtb3RlX2FkZHIsIHByb3RvKTsKICAgfQpAQCAtNjg2LDcgKzY4Niw3IEBAIHZv
aWQgUmVsYXlFbnRyeTo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90
aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNr
ZXRfdGltZV91cykgewogICAvLyBSVENfRENIRUNLKHJlbW90ZV9hZGRyID09IHBvcnRfLT5zZXJ2
ZXJfYWRkcigpKTsKICAgLy8gVE9ETyg/KTogYXJlIHdlIHdvcnJpZWQgYWJvdXQgdGhpcz8KIApA
QCAtNzAwLDcgKzcwMCw3IEBAIHZvaWQgUmVsYXlFbnRyeTo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgLy8gYnkgdGhlIHNlcnZlciwgIFRoZSBhY3R1YWwg
cmVtb3RlIGFkZHJlc3MgaXMgdGhlIG9uZSB3ZSByZWNvcmRlZC4KICAgaWYgKCFwb3J0Xy0+SGFz
TWFnaWNDb29raWUoZGF0YSwgc2l6ZSkpIHsKICAgICBpZiAobG9ja2VkXykgewotICAgICAgcG9y
dF8tPk9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBleHRfYWRkcl8sIFBST1RPX1VEUCwgcGFja2V0
X3RpbWUpOworICAgICAgcG9ydF8tPk9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBleHRfYWRkcl8s
IFBST1RPX1VEUCwgcGFja2V0X3RpbWVfdXMpOwogICAgIH0gZWxzZSB7CiAgICAgICBSVENfTE9H
KFdBUk5JTkcpIDw8ICJEcm9wcGluZyBwYWNrZXQ6IGVudHJ5IG5vdCBsb2NrZWQiOwogICAgIH0K
QEAgLTc1Myw3ICs3NTMsNyBAQCB2b2lkIFJlbGF5RW50cnk6Ok9uUmVhZFBhY2tldChydGM6OkFz
eW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAKICAgLy8gUHJvY2VzcyB0aGUgYWN0dWFsIGRhdGEg
YW5kIHJlbW90ZSBhZGRyZXNzIGluIHRoZSBub3JtYWwgbWFubmVyLgogICBwb3J0Xy0+T25SZWFk
UGFja2V0KGRhdGFfYXR0ci0+Ynl0ZXMoKSwgZGF0YV9hdHRyLT5sZW5ndGgoKSwgcmVtb3RlX2Fk
ZHIyLAotICAgICAgICAgICAgICAgICAgICAgIFBST1RPX1VEUCwgcGFja2V0X3RpbWUpOworICAg
ICAgICAgICAgICAgICAgICAgIFBST1RPX1VEUCwgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lk
IFJlbGF5RW50cnk6Ok9uU2VudFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9yZWxheXBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydC5oCmluZGV4IDQ4YTkzOWUwY2ZkMTBlOGY3YjJmZGZm
N2FkY2RjMzAxM2NkNTRkYmIuLjU5ODlmNzZlODFmNWY2NjRmYzFkOGM2Mzc4ODM4MTM3OTE4OTM4
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3JlbGF5cG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydC5oCkBAIC0xMiwxMCArMTIsMTIgQEAKICNk
ZWZpbmUgUDJQX0JBU0VfUkVMQVlQT1JUX0hfCiAKICNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAi
cDJwL2Jhc2UvcG9ydC5oIgogI2luY2x1ZGUgInAycC9iYXNlL3N0dW5yZXF1ZXN0LmgiCiAKQEAg
LTM1LDE1ICszNywxNiBAQCBjbGFzcyBSZWxheVBvcnQgOiBwdWJsaWMgUG9ydCB7CiAgIHR5cGVk
ZWYgc3RkOjpwYWlyPHJ0Yzo6U29ja2V0OjpPcHRpb24sIGludD4gT3B0aW9uVmFsdWU7CiAKICAg
Ly8gUmVsYXlQb3J0IGRvZXNuJ3QgeWV0IGRvIGFueXRoaW5nIGZhbmN5IGluIHRoZSBjdG9yLgot
ICBzdGF0aWMgUmVsYXlQb3J0KiBDcmVhdGUocnRjOjpUaHJlYWQqIHRocmVhZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogZmFjdG9yeSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1pbl9wb3J0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDE2X3QgbWF4X3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICByZXR1cm4gbmV3IFJlbGF5UG9ydCh0
aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIG1pbl9wb3J0LCBtYXhfcG9ydCwgdXNlcm5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQpOworICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFJlbGF5UG9ydD4gQ3JlYXRlKHJ0Yzo6VGhyZWFkKiB0aHJlYWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBm
YWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6
TmV0d29yayogbmV0d29yaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MTZfdCBtaW5fcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MTZfdCBtYXhfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3
b3JkKSB7CisgICAgLy8gVXNpbmcgYG5ld2AgdG8gYWNjZXNzIGEgbm9uLXB1YmxpYyBjb25zdHJ1
Y3Rvci4KKyAgICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZShuZXcgUmVsYXlQb3J0KHRocmVhZCwg
ZmFjdG9yeSwgbmV0d29yaywgbWluX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXhfcG9ydCwgdXNlcm5hbWUsIHBhc3N3b3JkKSk7CiAgIH0KICAgflJl
bGF5UG9ydCgpIG92ZXJyaWRlOwogCkBAIC05Miw3ICs5NSw3IEBAIGNsYXNzIFJlbGF5UG9ydCA6
IHB1YmxpYyBQb3J0IHsKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCiAgICAg
ICAgICAgICAgICAgICAgIFByb3RvY29sVHlwZSBwcm90bywKLSAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgcGFja2V0X3RpbWVfdXMpOwogCiAgIC8vIFRoZSBPblNlbnRQYWNrZXQgY2FsbGJh
Y2sgaXMgbGVmdCBlbXB0eSBoZXJlIHNpbmNlIHRoZXkgYXJlIGhhbmRsZWQgYnkKICAgLy8gUmVs
YXlFbnRyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5cG9ydF91bml0dGVzdC5jYwpp
bmRleCBlNmU5MjJmZGFmNzdmZWE3ZDA0NDM0NzRhNzM5MmUwZDA2YmFkZmZmLi4xY2E2OWY0ZWY5
NmNlMjBiZjk4ZWFjMzdmMDI2M2U2MGUxNDRlMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9yZWxheXBvcnRfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvcmVsYXlwb3J0X3VuaXR0ZXN0LmNjCkBAIC02MiwxMCArNjIsMTAgQEAgY2xhc3MgUmVsYXlQ
b3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3Rz
PD4gewogICB9CiAKICAgdm9pZCBPblJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCog
c29ja2V0LAotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAotICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpT
b2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiAvKiBkYXRhICovLAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgLyogc2l6ZSAqLywK
KyAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiAvKiByZW1vdGVf
YWRkciAqLywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3Rp
bWVfdXMgKi8pIHsKICAgICByZWNlaXZlZF9wYWNrZXRfY291bnRfW3NvY2tldF0rKzsKICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS9yZWxheXNlcnZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5c2VydmVyLmNjCmluZGV4IDhlMTdhNzlkYjhkNDQ0ZDU2
YzMzZGZmZmM3NDhjZTZiZWE0M2JiZGUuLmFkNmI0ODcyODJlMTQ4YzA5Mjc0NTdjN2RlMTkwMTNl
ZGY1Yjg0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3JlbGF5c2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5c2VydmVyLmNjCkBAIC0xMTUsNyAr
MTE1LDcgQEAgdm9pZCBSZWxheVNlcnZlcjo6QWRkSW50ZXJuYWxTb2NrZXQocnRjOjpBc3luY1Bh
Y2tldFNvY2tldCogc29ja2V0KSB7CiB9CiAKIHZvaWQgUmVsYXlTZXJ2ZXI6OlJlbW92ZUludGVy
bmFsU29ja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCkgewotICBTb2NrZXRMaXN0
OjppdGVyYXRvciBpdGVyID0KKyAgYXV0byBpdGVyID0KICAgICAgIHN0ZDo6ZmluZChpbnRlcm5h
bF9zb2NrZXRzXy5iZWdpbigpLCBpbnRlcm5hbF9zb2NrZXRzXy5lbmQoKSwgc29ja2V0KTsKICAg
UlRDX0RDSEVDSyhpdGVyICE9IGludGVybmFsX3NvY2tldHNfLmVuZCgpKTsKICAgaW50ZXJuYWxf
c29ja2V0c18uZXJhc2UoaXRlcik7CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBSZWxheVNlcnZl
cjo6QWRkRXh0ZXJuYWxTb2NrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0KSB7CiB9
CiAKIHZvaWQgUmVsYXlTZXJ2ZXI6OlJlbW92ZUV4dGVybmFsU29ja2V0KHJ0Yzo6QXN5bmNQYWNr
ZXRTb2NrZXQqIHNvY2tldCkgewotICBTb2NrZXRMaXN0OjppdGVyYXRvciBpdGVyID0KKyAgYXV0
byBpdGVyID0KICAgICAgIHN0ZDo6ZmluZChleHRlcm5hbF9zb2NrZXRzXy5iZWdpbigpLCBleHRl
cm5hbF9zb2NrZXRzXy5lbmQoKSwgc29ja2V0KTsKICAgUlRDX0RDSEVDSyhpdGVyICE9IGV4dGVy
bmFsX3NvY2tldHNfLmVuZCgpKTsKICAgZXh0ZXJuYWxfc29ja2V0c18uZXJhc2UoaXRlcik7CkBA
IC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBSZWxheVNlcnZlcjo6QWRkSW50ZXJuYWxTZXJ2ZXJTb2Nr
ZXQocnRjOjpBc3luY1NvY2tldCogc29ja2V0LAogfQogCiB2b2lkIFJlbGF5U2VydmVyOjpSZW1v
dmVJbnRlcm5hbFNlcnZlclNvY2tldChydGM6OkFzeW5jU29ja2V0KiBzb2NrZXQpIHsKLSAgU2Vy
dmVyU29ja2V0TWFwOjppdGVyYXRvciBpdGVyID0gc2VydmVyX3NvY2tldHNfLmZpbmQoc29ja2V0
KTsKKyAgYXV0byBpdGVyID0gc2VydmVyX3NvY2tldHNfLmZpbmQoc29ja2V0KTsKICAgUlRDX0RD
SEVDSyhpdGVyICE9IHNlcnZlcl9zb2NrZXRzXy5lbmQoKSk7CiAgIHNlcnZlcl9zb2NrZXRzXy5l
cmFzZShpdGVyKTsKICAgc29ja2V0LT5TaWduYWxSZWFkRXZlbnQuZGlzY29ubmVjdCh0aGlzKTsK
QEAgLTE2MCwxMCArMTYwLDkgQEAgaW50IFJlbGF5U2VydmVyOjpHZXRDb25uZWN0aW9uQ291bnQo
KSBjb25zdCB7CiAKIHJ0Yzo6U29ja2V0QWRkcmVzc1BhaXIgUmVsYXlTZXJ2ZXI6OkdldENvbm5l
Y3Rpb24oaW50IGNvbm5lY3Rpb24pIGNvbnN0IHsKICAgaW50IGkgPSAwOwotICBmb3IgKENvbm5l
Y3Rpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29ubmVjdGlvbnNfLmJlZ2luKCk7Ci0gICAg
ICAgaXQgIT0gY29ubmVjdGlvbnNfLmVuZCgpOyArK2l0KSB7CisgIGZvciAoY29uc3QgYXV0byYg
ZW50cnkgOiBjb25uZWN0aW9uc18pIHsKICAgICBpZiAoaSA9PSBjb25uZWN0aW9uKSB7Ci0gICAg
ICByZXR1cm4gaXQtPnNlY29uZC0+YWRkcl9wYWlyKCk7CisgICAgICByZXR1cm4gZW50cnkuc2Vj
b25kLT5hZGRyX3BhaXIoKTsKICAgICB9CiAgICAgKytpOwogICB9CkBAIC0xNzEsOSArMTcwLDgg
QEAgcnRjOjpTb2NrZXRBZGRyZXNzUGFpciBSZWxheVNlcnZlcjo6R2V0Q29ubmVjdGlvbihpbnQg
Y29ubmVjdGlvbikgY29uc3QgewogfQogCiBib29sIFJlbGF5U2VydmVyOjpIYXNDb25uZWN0aW9u
KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcykgY29uc3QgewotICBmb3IgKENvbm5l
Y3Rpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29ubmVjdGlvbnNfLmJlZ2luKCk7Ci0gICAg
ICAgaXQgIT0gY29ubmVjdGlvbnNfLmVuZCgpOyArK2l0KSB7Ci0gICAgaWYgKGl0LT5zZWNvbmQt
PmFkZHJfcGFpcigpLmRlc3RpbmF0aW9uKCkgPT0gYWRkcmVzcykgeworICBmb3IgKGNvbnN0IGF1
dG8mIGVudHJ5IDogY29ubmVjdGlvbnNfKSB7CisgICAgaWYgKGVudHJ5LnNlY29uZC0+YWRkcl9w
YWlyKCkuZGVzdGluYXRpb24oKSA9PSBhZGRyZXNzKSB7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgIH0KQEAgLTE4OSwxNCArMTg3LDE0IEBAIHZvaWQgUmVsYXlTZXJ2ZXI6Ok9uSW50ZXJu
YWxQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBieXRlcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0
X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRf
dCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAgLy8gR2V0IHRoZSBhZGRyZXNzIG9mIHRoZSBj
b25uZWN0aW9uIHdlIGp1c3QgcmVjZWl2ZWQgb24uCiAgIHJ0Yzo6U29ja2V0QWRkcmVzc1BhaXIg
YXAocmVtb3RlX2FkZHIsIHNvY2tldC0+R2V0TG9jYWxBZGRyZXNzKCkpOwogICBSVENfRENIRUNL
KCFhcC5kZXN0aW5hdGlvbigpLklzTmlsKCkpOwogCiAgIC8vIElmIHRoaXMgZGlkIG5vdCBjb21l
IGZyb20gYW4gZXhpc3RpbmcgY29ubmVjdGlvbiwgaXQgc2hvdWxkIGJlIGEgU1RVTgogICAvLyBh
bGxvY2F0ZSByZXF1ZXN0LgotICBDb25uZWN0aW9uTWFwOjppdGVyYXRvciBwaXRlciA9IGNvbm5l
Y3Rpb25zXy5maW5kKGFwKTsKKyAgYXV0byBwaXRlciA9IGNvbm5lY3Rpb25zXy5maW5kKGFwKTsK
ICAgaWYgKHBpdGVyID09IGNvbm5lY3Rpb25zXy5lbmQoKSkgewogICAgIEhhbmRsZVN0dW5BbGxv
Y2F0ZShieXRlcywgc2l6ZSwgYXAsIHNvY2tldCk7CiAgICAgcmV0dXJuOwpAQCAtMjM0LDEzICsy
MzIsMTMgQEAgdm9pZCBSZWxheVNlcnZlcjo6T25FeHRlcm5hbFBhY2tldChydGM6OkFzeW5jUGFj
a2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpT
b2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAq
LykgewogICAvLyBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGNvbm5lY3Rpb24gd2UganVzdCByZWNl
aXZlZCBvbi4KICAgcnRjOjpTb2NrZXRBZGRyZXNzUGFpciBhcChyZW1vdGVfYWRkciwgc29ja2V0
LT5HZXRMb2NhbEFkZHJlc3MoKSk7CiAgIFJUQ19EQ0hFQ0soIWFwLmRlc3RpbmF0aW9uKCkuSXNO
aWwoKSk7CiAKICAgLy8gSWYgdGhpcyBjb25uZWN0aW9uIGFscmVhZHkgZXhpc3RzLCB0aGVuIGZv
cndhcmQgdGhlIHRyYWZmaWMuCi0gIENvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIHBpdGVyID0gY29u
bmVjdGlvbnNfLmZpbmQoYXApOworICBhdXRvIHBpdGVyID0gY29ubmVjdGlvbnNfLmZpbmQoYXAp
OwogICBpZiAocGl0ZXIgIT0gY29ubmVjdGlvbnNfLmVuZCgpKSB7CiAgICAgLy8gVE9ETyg/KTog
Q2hlY2sgdGhlIEhNQUMuCiAgICAgUmVsYXlTZXJ2ZXJDb25uZWN0aW9uKiBleHRfY29ubiA9IHBp
dGVyLT5zZWNvbmQ7CkBAIC0yNzYsNyArMjc0LDcgQEAgdm9pZCBSZWxheVNlcnZlcjo6T25FeHRl
cm5hbFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgIC8vIFRPRE8oPyk6
IENoZWNrIHRoZSBITUFDLgogCiAgIC8vIFRoZSBiaW5kaW5nIHNob3VsZCBhbHJlYWR5IGJlIHBy
ZXNlbnQuCi0gIEJpbmRpbmdNYXA6Oml0ZXJhdG9yIGJpdGVyID0gYmluZGluZ3NfLmZpbmQodXNl
cm5hbWUpOworICBhdXRvIGJpdGVyID0gYmluZGluZ3NfLmZpbmQodXNlcm5hbWUpOwogICBpZiAo
Yml0ZXIgPT0gYmluZGluZ3NfLmVuZCgpKSB7CiAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
RHJvcHBpbmcgcGFja2V0OiBubyBiaW5kaW5nIHdpdGggdXNlcm5hbWUiOwogICAgIHJldHVybjsK
QEAgLTM1MSw3ICszNDksNyBAQCB2b2lkIFJlbGF5U2VydmVyOjpIYW5kbGVTdHVuQWxsb2NhdGUo
Y29uc3QgY2hhciogYnl0ZXMsCiAKICAgUmVsYXlTZXJ2ZXJCaW5kaW5nKiBiaW5kaW5nOwogCi0g
IEJpbmRpbmdNYXA6Oml0ZXJhdG9yIGJpdGVyID0gYmluZGluZ3NfLmZpbmQodXNlcm5hbWUpOwor
ICBhdXRvIGJpdGVyID0gYmluZGluZ3NfLmZpbmQodXNlcm5hbWUpOwogICBpZiAoYml0ZXIgIT0g
YmluZGluZ3NfLmVuZCgpKSB7CiAgICAgYmluZGluZyA9IGJpdGVyLT5zZWNvbmQ7CiAgIH0gZWxz
ZSB7CkBAIC01MTQsMTMgKzUxMiwxMyBAQCB2b2lkIFJlbGF5U2VydmVyOjpBZGRDb25uZWN0aW9u
KFJlbGF5U2VydmVyQ29ubmVjdGlvbiogY29ubikgewogfQogCiB2b2lkIFJlbGF5U2VydmVyOjpS
ZW1vdmVDb25uZWN0aW9uKFJlbGF5U2VydmVyQ29ubmVjdGlvbiogY29ubikgewotICBDb25uZWN0
aW9uTWFwOjppdGVyYXRvciBpdGVyID0gY29ubmVjdGlvbnNfLmZpbmQoY29ubi0+YWRkcl9wYWly
KCkpOworICBhdXRvIGl0ZXIgPSBjb25uZWN0aW9uc18uZmluZChjb25uLT5hZGRyX3BhaXIoKSk7
CiAgIFJUQ19EQ0hFQ0soaXRlciAhPSBjb25uZWN0aW9uc18uZW5kKCkpOwogICBjb25uZWN0aW9u
c18uZXJhc2UoaXRlcik7CiB9CiAKIHZvaWQgUmVsYXlTZXJ2ZXI6OlJlbW92ZUJpbmRpbmcoUmVs
YXlTZXJ2ZXJCaW5kaW5nKiBiaW5kaW5nKSB7Ci0gIEJpbmRpbmdNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBiaW5kaW5nc18uZmluZChiaW5kaW5nLT51c2VybmFtZSgpKTsKKyAgYXV0byBpdGVyID0gYmlu
ZGluZ3NfLmZpbmQoYmluZGluZy0+dXNlcm5hbWUoKSk7CiAgIFJUQ19EQ0hFQ0soaXRlciAhPSBi
aW5kaW5nc18uZW5kKCkpOwogICBiaW5kaW5nc18uZXJhc2UoaXRlcik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3JlbGF5
c2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS9yZWxheXNlcnZlci5oCmluZGV4IGM3NjYxMjA0ZjgxOTkwOTkwNjRiYmNiYjEzZWY0NzBl
ZDNhZTI1YjMuLjViYTVlMDY1YTg2ODEyMDU4MjIzZWZjYTUxODhjNjJjOThhNzllMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3JlbGF5c2VydmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2UvcmVsYXlzZXJ2ZXIuaApAQCAtNjgsMzMgKzY4LDI3IEBAIGNsYXNzIFJl
bGF5U2VydmVyIDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsIHB1YmxpYyBzaWdzbG90Ojpo
YXNfc2xvdHM8PiB7CiAgIGJvb2wgSGFzQ29ubmVjdGlvbihjb25zdCBydGM6OlNvY2tldEFkZHJl
c3MmIGFkZHJlc3MpIGNvbnN0OwogCiAgcHJpdmF0ZToKLSAgdHlwZWRlZiBzdGQ6OnZlY3Rvcjxy
dGM6OkFzeW5jUGFja2V0U29ja2V0Kj4gU29ja2V0TGlzdDsKLSAgdHlwZWRlZiBzdGQ6Om1hcDxy
dGM6OkFzeW5jU29ja2V0KiwgY3JpY2tldDo6UHJvdG9jb2xUeXBlPiBTZXJ2ZXJTb2NrZXRNYXA7
Ci0gIHR5cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsIFJlbGF5U2VydmVyQmluZGluZyo+IEJp
bmRpbmdNYXA7Ci0gIHR5cGVkZWYgc3RkOjptYXA8cnRjOjpTb2NrZXRBZGRyZXNzUGFpciwgUmVs
YXlTZXJ2ZXJDb25uZWN0aW9uKj4KLSAgICAgIENvbm5lY3Rpb25NYXA7Ci0KICAgcnRjOjpUaHJl
YWQqIHRocmVhZF87CiAgIHdlYnJ0Yzo6UmFuZG9tIHJhbmRvbV87CiAgIGJvb2wgbG9nX2JpbmRp
bmdzXzsKLSAgU29ja2V0TGlzdCBpbnRlcm5hbF9zb2NrZXRzXzsKLSAgU29ja2V0TGlzdCBleHRl
cm5hbF9zb2NrZXRzXzsKLSAgU29ja2V0TGlzdCByZW1vdmVkX3NvY2tldHNfOwotICBTZXJ2ZXJT
b2NrZXRNYXAgc2VydmVyX3NvY2tldHNfOwotICBCaW5kaW5nTWFwIGJpbmRpbmdzXzsKLSAgQ29u
bmVjdGlvbk1hcCBjb25uZWN0aW9uc187CisgIHN0ZDo6dmVjdG9yPHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQqPiBpbnRlcm5hbF9zb2NrZXRzXzsKKyAgc3RkOjp2ZWN0b3I8cnRjOjpBc3luY1BhY2tl
dFNvY2tldCo+IGV4dGVybmFsX3NvY2tldHNfOworICBzdGQ6OnZlY3RvcjxydGM6OkFzeW5jUGFj
a2V0U29ja2V0Kj4gcmVtb3ZlZF9zb2NrZXRzXzsKKyAgc3RkOjptYXA8cnRjOjpBc3luY1NvY2tl
dCosIGNyaWNrZXQ6OlByb3RvY29sVHlwZT4gc2VydmVyX3NvY2tldHNfOworICBzdGQ6Om1hcDxz
dGQ6OnN0cmluZywgUmVsYXlTZXJ2ZXJCaW5kaW5nKj4gYmluZGluZ3NfOworICBzdGQ6Om1hcDxy
dGM6OlNvY2tldEFkZHJlc3NQYWlyLCBSZWxheVNlcnZlckNvbm5lY3Rpb24qPiBjb25uZWN0aW9u
c187CiAKICAgLy8gQ2FsbGVkIHdoZW4gYSBwYWNrZXQgaXMgcmVjZWl2ZWQgYnkgdGhlIHNlcnZl
ciBvbiBvbmUgb2YgaXRzIHNvY2tldHMuCiAgIHZvaWQgT25JbnRlcm5hbFBhY2tldChydGM6OkFz
eW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3Rp
bWUpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVf
dXMpOwogICB2b2lkIE9uRXh0ZXJuYWxQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29j
a2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnl0ZXMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsKIAogICB2b2lkIE9uUmVh
ZEV2ZW50KHJ0Yzo6QXN5bmNTb2NrZXQqIHNvY2tldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW4uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVuLmNjCmlu
ZGV4IGNjOWZiNGU0YzA5MGMzM2I1N2M5OTliYWRmMDY5NjgxMmI3N2I5NDIuLmZhNmI2ZjgzMmUw
ODU3NWE5OGEzMjBmODE1ZjI2MGIwNTBhYWNjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW4uY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bi5jYwpAQCAt
MjIsNyArMjIsNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2NyYzMyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKIAogdXNpbmcgcnRjOjpCeXRlQnVmZmVy
UmVhZGVyOwogdXNpbmcgcnRjOjpCeXRlQnVmZmVyV3JpdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnBvcnQuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVu
cG9ydC5jYwppbmRleCBjNjBiZjkyZWI0OTIwYzNkZWZkYzJjNTFkNjAwMjlmMmNjZWYzZTJmLi43
MjczMTIzMjllZTRkMDk5NjdiZTcxN2RkOGI2NDBjOTk4NzAwZjc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVucG9ydC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS9zdHVucG9ydC5jYwpAQCAtMzE5LDkgKzMxOSw5IEBAIGJvb2wgVURQUG9ydDo6SGFuZGxlSW5j
b21pbmdQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNr
ZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBh
Y2tldF90aW1lX3VzKSB7CiAgIC8vIEFsbCBwYWNrZXRzIGdpdmVuIHRvIFVEUCBwb3J0IHdpbGwg
YmUgY29uc3VtZWQuCi0gIE9uUmVhZFBhY2tldChzb2NrZXQsIGRhdGEsIHNpemUsIHJlbW90ZV9h
ZGRyLCBwYWNrZXRfdGltZSk7CisgIE9uUmVhZFBhY2tldChzb2NrZXQsIGRhdGEsIHNpemUsIHJl
bW90ZV9hZGRyLCBwYWNrZXRfdGltZV91cyk7CiAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNTgs
MTEgKzM1OCwxNSBAQCB2b2lkIFVEUFBvcnQ6Ok9uTG9jYWxBZGRyZXNzUmVhZHkocnRjOjpBc3lu
Y1BhY2tldFNvY2tldCogc29ja2V0LAogICBNYXliZVByZXBhcmVTdHVuQ2FuZGlkYXRlKCk7CiB9
CiAKK3ZvaWQgVURQUG9ydDo6UG9zdEFkZEFkZHJlc3MoYm9vbCBpc19maW5hbCkgeworICBNYXli
ZVNldFBvcnRDb21wbGV0ZU9yRXJyb3IoKTsKK30KKwogdm9pZCBVRFBQb3J0OjpPblJlYWRQYWNr
ZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRy
ZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKSB7CiAgIFJUQ19EQ0hFQ0soc29ja2V0ID09IHNv
Y2tldF8pOwogICBSVENfRENIRUNLKCFyZW1vdGVfYWRkci5Jc1VucmVzb2x2ZWRJUCgpKTsKIApA
QCAtMzc2LDcgKzM4MCw3IEBAIHZvaWQgVURQUG9ydDo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQ
YWNrZXRTb2NrZXQqIHNvY2tldCwKICAgfQogCiAgIGlmIChDb25uZWN0aW9uKiBjb25uID0gR2V0
Q29ubmVjdGlvbihyZW1vdGVfYWRkcikpIHsKLSAgICBjb25uLT5PblJlYWRQYWNrZXQoZGF0YSwg
c2l6ZSwgcGFja2V0X3RpbWUpOworICAgIGNvbm4tPk9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBw
YWNrZXRfdGltZV91cyk7CiAgIH0gZWxzZSB7CiAgICAgUG9ydDo6T25SZWFkUGFja2V0KGRhdGEs
IHNpemUsIHJlbW90ZV9hZGRyLCBQUk9UT19VRFApOwogICB9CkBAIC01MTcsOCArNTIxLDE0IEBA
IHZvaWQgVURQUG9ydDo6T25TdHVuQmluZGluZ09yUmVzb2x2ZVJlcXVlc3RGYWlsZWQoCiB9CiAK
IHZvaWQgVURQUG9ydDo6TWF5YmVTZXRQb3J0Q29tcGxldGVPckVycm9yKCkgewotICBpZiAocmVh
ZHlfKQorICBpZiAobWRuc19uYW1lX3JlZ2lzdHJhdGlvbl9zdGF0dXMoKSA9PQorICAgICAgTWRu
c05hbWVSZWdpc3RyYXRpb25TdGF0dXM6OmtJblByb2dyZXNzKSB7CiAgICAgcmV0dXJuOworICB9
CisKKyAgaWYgKHJlYWR5XykgeworICAgIHJldHVybjsKKyAgfQogCiAgIC8vIERvIG5vdCBzZXQg
cG9ydCByZWFkeSBpZiB3ZSBhcmUgc3RpbGwgd2FpdGluZyBmb3IgYmluZCByZXNwb25zZXMuCiAg
IGNvbnN0IHNpemVfdCBzZXJ2ZXJzX2RvbmVfYmluZF9yZXF1ZXN0ID0KQEAgLTU2MywyMiArNTcz
LDI0IEBAIGJvb2wgVURQUG9ydDo6SGFzQ2FuZGlkYXRlV2l0aEFkZHJlc3MoY29uc3QgcnRjOjpT
b2NrZXRBZGRyZXNzJiBhZGRyKSBjb25zdCB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAotU3R1blBv
cnQqIFN0dW5Qb3J0OjpDcmVhdGUocnRjOjpUaHJlYWQqIHRocmVhZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogZmFjdG9yeSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQxNl90IG1pbl9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDE2X3QgbWF4X3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgcGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
ZXJ2ZXJBZGRyZXNzZXMmIHNlcnZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgb3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
b3B0aW9uYWw8aW50PiBzdHVuX2tlZXBhbGl2ZV9pbnRlcnZhbCkgewotICBTdHVuUG9ydCogcG9y
dCA9IG5ldyBTdHVuUG9ydCh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIG1pbl9wb3J0LCBtYXhf
cG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsIHBhc3N3b3Jk
LCBzZXJ2ZXJzLCBvcmlnaW4pOworc3RkOjp1bmlxdWVfcHRyPFN0dW5Qb3J0PiBTdHVuUG9ydDo6
Q3JlYXRlKAorICAgIHJ0Yzo6VGhyZWFkKiB0aHJlYWQsCisgICAgcnRjOjpQYWNrZXRTb2NrZXRG
YWN0b3J5KiBmYWN0b3J5LAorICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKKyAgICB1aW50MTZf
dCBtaW5fcG9ydCwKKyAgICB1aW50MTZfdCBtYXhfcG9ydCwKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgdXNlcm5hbWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLAorICAgIGNvbnN0
IFNlcnZlckFkZHJlc3NlcyYgc2VydmVycywKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2lu
LAorICAgIGFic2w6Om9wdGlvbmFsPGludD4gc3R1bl9rZWVwYWxpdmVfaW50ZXJ2YWwpIHsKKyAg
Ly8gVXNpbmcgYG5ld2AgdG8gYWNjZXNzIGEgbm9uLXB1YmxpYyBjb25zdHJ1Y3Rvci4KKyAgYXV0
byBwb3J0ID0gYWJzbDo6V3JhcFVuaXF1ZShuZXcgU3R1blBvcnQodGhyZWFkLCBmYWN0b3J5LCBu
ZXR3b3JrLCBtaW5fcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF4X3BvcnQsIHVzZXJuYW1lLCBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVycywgb3JpZ2luKSk7CiAgIHBvcnQtPnNldF9z
dHVuX2tlZXBhbGl2ZV9kZWxheShzdHVuX2tlZXBhbGl2ZV9pbnRlcnZhbCk7CiAgIGlmICghcG9y
dC0+SW5pdCgpKSB7Ci0gICAgZGVsZXRlIHBvcnQ7Ci0gICAgcG9ydCA9IE5VTEw7CisgICAgcmV0
dXJuIG51bGxwdHI7CiAgIH0KICAgcmV0dXJuIHBvcnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVucG9ydC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnBv
cnQuaAppbmRleCA1ZTM5NzgzNWRiZWI2NTE4NjY5ZmQzODc0MjdjZWFmOTc0ZTRmZTkwLi5jYTQz
Y2JjOGM0ODNkMDc0OTE5M2M2YjFlNDQ4OTQxNjBkNGNmZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVucG9ydC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0
dW5wb3J0LmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
c3RyaW5nPgogCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicDJw
L2Jhc2UvcG9ydC5oIgogI2luY2x1ZGUgInAycC9iYXNlL3N0dW5yZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaCIKQEAgLTM1LDQyICszNiw0NSBAQCBzdGF0
aWMgY29uc3QgaW50IEhJR0hfQ09TVF9QT1JUX0tFRVBBTElWRV9MSUZFVElNRSA9IDIgKiA2MCAq
IDEwMDA7CiAvLyBDb21tdW5pY2F0ZXMgdXNpbmcgdGhlIGFkZHJlc3Mgb24gdGhlIG91dHNpZGUg
b2YgYSBOQVQuCiBjbGFzcyBVRFBQb3J0IDogcHVibGljIFBvcnQgewogIHB1YmxpYzoKLSAgc3Rh
dGljIFVEUFBvcnQqIENyZWF0ZShydGM6OlRocmVhZCogdGhyZWFkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogZmFjdG9yeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdvcmssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGVtaXRfbG9jYWxfZm9yX2FueWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
YWJzbDo6b3B0aW9uYWw8aW50PiBzdHVuX2tlZXBhbGl2ZV9pbnRlcnZhbCkgewotICAgIFVEUFBv
cnQqIHBvcnQgPSBuZXcgVURQUG9ydCh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIHNvY2tldCwg
dXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkLCBvcmln
aW4sIGVtaXRfbG9jYWxfZm9yX2FueWFkZHJlc3MpOworICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFVEUFBvcnQ+IENyZWF0ZSgKKyAgICAgIHJ0Yzo6VGhyZWFkKiB0aHJlYWQsCisgICAgICBydGM6
OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCisgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdv
cmssCisgICAgICBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCisgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQs
CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAorICAgICAgYm9vbCBlbWl0X2xvY2Fs
X2Zvcl9hbnlhZGRyZXNzLAorICAgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzdHVuX2tlZXBhbGl2
ZV9pbnRlcnZhbCkgeworICAgIC8vIFVzaW5nIGBuZXdgIHRvIGFjY2VzcyBhIG5vbi1wdWJsaWMg
Y29uc3RydWN0b3IuCisgICAgYXV0byBwb3J0ID0gYWJzbDo6V3JhcFVuaXF1ZShuZXcgVURQUG9y
dCh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIHNvY2tldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lLCBwYXNzd29yZCwgb3JpZ2luLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdF9sb2NhbF9mb3Jf
YW55YWRkcmVzcykpOwogICAgIHBvcnQtPnNldF9zdHVuX2tlZXBhbGl2ZV9kZWxheShzdHVuX2tl
ZXBhbGl2ZV9pbnRlcnZhbCk7CiAgICAgaWYgKCFwb3J0LT5Jbml0KCkpIHsKLSAgICAgIGRlbGV0
ZSBwb3J0OwotICAgICAgcG9ydCA9IE5VTEw7CisgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAgICAgcmV0dXJuIHBvcnQ7CiAgIH0KIAotICBzdGF0aWMgVURQUG9ydCogQ3JlYXRlKHJ0Yzo6
VGhyZWFkKiB0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRTb2Nr
ZXRGYWN0b3J5KiBmYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29y
ayogbmV0d29yaywKLSAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtaW5fcG9ydCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtYXhfcG9ydCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBlbWl0X2xvY2FsX2Zvcl9hbnlhZGRyZXNzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGFic2w6Om9wdGlvbmFsPGludD4gc3R1bl9rZWVwYWxpdmVfaW50ZXJ2YWwpIHsKLSAg
ICBVRFBQb3J0KiBwb3J0ID0KKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxVRFBQb3J0PiBDcmVh
dGUoCisgICAgICBydGM6OlRocmVhZCogdGhyZWFkLAorICAgICAgcnRjOjpQYWNrZXRTb2NrZXRG
YWN0b3J5KiBmYWN0b3J5LAorICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3JrLAorICAgICAgdWlu
dDE2X3QgbWluX3BvcnQsCisgICAgICB1aW50MTZfdCBtYXhfcG9ydCwKKyAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiB1c2VybmFtZSwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwK
KyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCisgICAgICBib29sIGVtaXRfbG9jYWxf
Zm9yX2FueWFkZHJlc3MsCisgICAgICBhYnNsOjpvcHRpb25hbDxpbnQ+IHN0dW5fa2VlcGFsaXZl
X2ludGVydmFsKSB7CisgICAgLy8gVXNpbmcgYG5ld2AgdG8gYWNjZXNzIGEgbm9uLXB1YmxpYyBj
b25zdHJ1Y3Rvci4KKyAgICBhdXRvIHBvcnQgPSBhYnNsOjpXcmFwVW5pcXVlKAogICAgICAgICBu
ZXcgVURQUG9ydCh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIG1pbl9wb3J0LCBtYXhfcG9ydCwg
dXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkLCBvcmlnaW4sIGVtaXRfbG9j
YWxfZm9yX2FueWFkZHJlc3MpOworICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCwgb3JpZ2lu
LCBlbWl0X2xvY2FsX2Zvcl9hbnlhZGRyZXNzKSk7CiAgICAgcG9ydC0+c2V0X3N0dW5fa2VlcGFs
aXZlX2RlbGF5KHN0dW5fa2VlcGFsaXZlX2ludGVydmFsKTsKICAgICBpZiAoIXBvcnQtPkluaXQo
KSkgewotICAgICAgZGVsZXRlIHBvcnQ7Ci0gICAgICBwb3J0ID0gTlVMTDsKKyAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gcG9ydDsKICAgfQpAQCAtMTAwLDcgKzEwNCw3
IEBAIGNsYXNzIFVEUFBvcnQgOiBwdWJsaWMgUG9ydCB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFk
ZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIG92ZXJyaWRlOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpIG92ZXJyaWRlOwogCiAgIGJvb2wgU3Vw
cG9ydHNQcm90b2NvbChjb25zdCBzdGQ6OnN0cmluZyYgcHJvdG9jb2wpIGNvbnN0IG92ZXJyaWRl
OwogICBQcm90b2NvbFR5cGUgR2V0UHJvdG9jb2woKSBjb25zdCBvdmVycmlkZTsKQEAgLTE1Niwx
MCArMTYwLDE0IEBAIGNsYXNzIFVEUFBvcnQgOiBwdWJsaWMgUG9ydCB7CiAKICAgdm9pZCBPbkxv
Y2FsQWRkcmVzc1JlYWR5KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcyk7CisK
KyAgdm9pZCBQb3N0QWRkQWRkcmVzcyhib29sIGlzX2ZpbmFsKSBvdmVycmlkZTsKKwogICB2b2lk
IE9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBkYXRhLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRk
ciwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGlt
ZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsK
IAogICB2b2lkIE9uU2VudFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgc2VudF9wYWNrZXQpIG92
ZXJyaWRlOwpAQCAtMjYyLDE2ICsyNzAsMTcgQEAgY2xhc3MgVURQUG9ydCA6IHB1YmxpYyBQb3J0
IHsKIAogY2xhc3MgU3R1blBvcnQgOiBwdWJsaWMgVURQUG9ydCB7CiAgcHVibGljOgotICBzdGF0
aWMgU3R1blBvcnQqIENyZWF0ZShydGM6OlRocmVhZCogdGhyZWFkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDE2X3QgbWluX3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQxNl90IG1heF9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwYXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2VydmVyQWRk
cmVzc2VzJiBzZXJ2ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgb3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxp
bnQ+IHN0dW5fa2VlcGFsaXZlX2ludGVydmFsKTsKKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxT
dHVuUG9ydD4gQ3JlYXRlKAorICAgICAgcnRjOjpUaHJlYWQqIHRocmVhZCwKKyAgICAgIHJ0Yzo6
UGFja2V0U29ja2V0RmFjdG9yeSogZmFjdG9yeSwKKyAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29y
aywKKyAgICAgIHVpbnQxNl90IG1pbl9wb3J0LAorICAgICAgdWludDE2X3QgbWF4X3BvcnQsCisg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdXNlcm5hbWUsCisgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcGFzc3dvcmQsCisgICAgICBjb25zdCBTZXJ2ZXJBZGRyZXNzZXMmIHNlcnZlcnMsCisgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAorICAgICAgYWJzbDo6b3B0aW9uYWw8aW50PiBz
dHVuX2tlZXBhbGl2ZV9pbnRlcnZhbCk7CiAKICAgdm9pZCBQcmVwYXJlQWRkcmVzcygpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS9zdHVucG9ydF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5wb3J0X3VuaXR0ZXN0LmNjCmluZGV4
IDI5NzU0ZTg2MWM5MzhhNDFhN2VhOGZiYzg2N2NhZmMzZjBmN2IxZDIuLjAxNTE4YTk0NjgzNjRk
MTBlYzM0MWRjMzA3ZTgzYjVhMjgyYTAxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5wb3J0X3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0
dW5wb3J0X3VuaXR0ZXN0LmNjCkBAIC03NSwxMCArNzUsMTAgQEAgY2xhc3MgU3R1blBvcnRUZXN0
QmFzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4g
ewogICB9CiAKICAgdm9pZCBDcmVhdGVTdHVuUG9ydChjb25zdCBTZXJ2ZXJBZGRyZXNzZXMmIHN0
dW5fc2VydmVycykgewotICAgIHN0dW5fcG9ydF8ucmVzZXQoY3JpY2tldDo6U3R1blBvcnQ6OkNy
ZWF0ZSgKKyAgICBzdHVuX3BvcnRfID0gY3JpY2tldDo6U3R1blBvcnQ6OkNyZWF0ZSgKICAgICAg
ICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwgJnNvY2tldF9mYWN0b3J5XywgJm5ldHdvcmtfLCAw
LCAwLAogICAgICAgICBydGM6OkNyZWF0ZVJhbmRvbVN0cmluZygxNiksIHJ0Yzo6Q3JlYXRlUmFu
ZG9tU3RyaW5nKDIyKSwgc3R1bl9zZXJ2ZXJzLAotICAgICAgICBzdGQ6OnN0cmluZygpLCBhYnNs
OjpudWxsb3B0KSk7CisgICAgICAgIHN0ZDo6c3RyaW5nKCksIGFic2w6Om51bGxvcHQpOwogICAg
IHN0dW5fcG9ydF8tPnNldF9zdHVuX2tlZXBhbGl2ZV9kZWxheShzdHVuX2tlZXBhbGl2ZV9kZWxh
eV8pOwogICAgIC8vIElmIHxzdHVuX2tlZXBhbGl2ZV9saWZldGltZV98IGlzIG5lZ2F0aXZlLCBs
ZXQgdGhlIHN0dW4gcG9ydAogICAgIC8vIGNob29zZSBpdHMgbGlmZXRpbWUgZnJvbSB0aGUgbmV0
d29yayB0eXBlLgpAQCAtMTAwLDEwICsxMDAsMTAgQEAgY2xhc3MgU3R1blBvcnRUZXN0QmFzZSA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAg
IH0KICAgICBBU1NFUlRfVFJVRShzb2NrZXRfICE9IE5VTEwpOwogICAgIHNvY2tldF8tPlNpZ25h
bFJlYWRQYWNrZXQuY29ubmVjdCh0aGlzLCAmU3R1blBvcnRUZXN0QmFzZTo6T25SZWFkUGFja2V0
KTsKLSAgICBzdHVuX3BvcnRfLnJlc2V0KGNyaWNrZXQ6OlVEUFBvcnQ6OkNyZWF0ZSgKKyAgICBz
dHVuX3BvcnRfID0gY3JpY2tldDo6VURQUG9ydDo6Q3JlYXRlKAogICAgICAgICBydGM6OlRocmVh
ZDo6Q3VycmVudCgpLCAmc29ja2V0X2ZhY3RvcnlfLCAmbmV0d29ya18sIHNvY2tldF8uZ2V0KCks
CiAgICAgICAgIHJ0Yzo6Q3JlYXRlUmFuZG9tU3RyaW5nKDE2KSwgcnRjOjpDcmVhdGVSYW5kb21T
dHJpbmcoMjIpLCBzdGQ6OnN0cmluZygpLAotICAgICAgICBmYWxzZSwgYWJzbDo6bnVsbG9wdCkp
OworICAgICAgICBmYWxzZSwgYWJzbDo6bnVsbG9wdCk7CiAgICAgQVNTRVJUX1RSVUUoc3R1bl9w
b3J0XyAhPSBOVUxMKTsKICAgICBTZXJ2ZXJBZGRyZXNzZXMgc3R1bl9zZXJ2ZXJzOwogICAgIHN0
dW5fc2VydmVycy5pbnNlcnQoc2VydmVyX2FkZHIpOwpAQCAtMTE5LDE1ICsxMTksMTUgQEAgY2xh
c3MgU3R1blBvcnRUZXN0QmFzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xv
dDo6aGFzX3Nsb3RzPD4gewogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAog
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgY29u
c3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLykgewogICAgIHN0dW5fcG9ydF8t
PkhhbmRsZUluY29taW5nUGFja2V0KHNvY2tldCwgZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRUaW1lKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBhY2tldF90aW1lX3VzICov
IC0xKTsKICAgfQogCiAgIHZvaWQgU2VuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bikgewogICAgIHN0dW5fcG9ydF8tPkhhbmRsZUluY29taW5nUGFja2V0KHNvY2tldF8uZ2V0KCks
IGRhdGEsIGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlNv
Y2tldEFkZHJlc3MoIjIyLjIyLjIyLjIyIiwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnRjOjpQYWNrZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIHBhY2tldF90aW1lX3VzICovIC0xKTsKICAgfQogCiAgcHJvdGVjdGVk
OgpAQCAtMjE2LDcgKzIxNiw3IEBAIFRFU1RfRihTdHVuUG9ydFRlc3QsIFRlc3RQcmVwYXJlQWRk
cmVzc0ZhaWwpIHsKIAogLy8gVGVzdCB0aGF0IHdlIGNhbiBnZXQgYW4gYWRkcmVzcyBmcm9tIGEg
U1RVTiBzZXJ2ZXIgc3BlY2lmaWVkIGJ5IGEgaG9zdG5hbWUuCiAvLyBDcmFzaGVzIG9uIExpbnV4
LCBzZWUgd2VicnRjOjc0MTYKLSNpZiBkZWZpbmVkKFdFQlJUQ19MSU5VWCkKKyNpZiBkZWZpbmVk
KFdFQlJUQ19MSU5VWCkgfHwgZGVmaW5lZChXRUJSVENfV0lOKQogI2RlZmluZSBNQVlCRV9UZXN0
UHJlcGFyZUFkZHJlc3NIb3N0bmFtZSBESVNBQkxFRF9UZXN0UHJlcGFyZUFkZHJlc3NIb3N0bmFt
ZQogI2Vsc2UKICNkZWZpbmUgTUFZQkVfVGVzdFByZXBhcmVBZGRyZXNzSG9zdG5hbWUgVGVzdFBy
ZXBhcmVBZGRyZXNzSG9zdG5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5yZXF1ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnJlcXVlc3QuY2MKaW5k
ZXggNTY0MTBiZWEwODlkOWIyNjllMmZmZTIxNmY3Y2M5YWQ0NDc3NzI0Yy4uZWRiYTRkNjhlNTRi
YzIwYTBlZjNmZDQ2NmE4NGU1YzlkMzYzMmZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnJlcXVlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnJl
cXVlc3QuY2MKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9oZWxwZXJzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2lu
Zy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL3RpbWV1dGlscy5oIiAgLy8gRm9yIFRpbWVNaWxsaXMKIAogbmFtZXNwYWNlIGNyaWNrZXQg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS9zdHVuc2VydmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnNlcnZlci5jYwppbmRleCAwMGVhY2YxN2JjOWUxOWE2
YWViZTdlZmMyY2VlNjE1ZGE0ZTZhNDRkLi45NWYwY2ViZTBhNzBkODhjZjAzOWM4NTVhZmYyNTQ0
MTgyMTU2YmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS9zdHVuc2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5zZXJ2ZXIuY2MKQEAgLTI5LDcgKzI5
LDcgQEAgdm9pZCBTdHVuU2VydmVyOjpPblBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBz
b2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8p
IHsKICAgLy8gUGFyc2UgdGhlIFNUVU4gbWVzc2FnZTsgZWF0IGFueSBtZXNzYWdlcyB0aGF0IGZh
aWwgdG8gcGFyc2UuCiAgIHJ0Yzo6Qnl0ZUJ1ZmZlclJlYWRlciBiYnVmKGJ1Ziwgc2l6ZSk7CiAg
IFN0dW5NZXNzYWdlIG1zZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5zZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3N0dW5zZXJ2ZXIuaAppbmRleCA5MDE2
ZDA2YzIwYWNhOGQ5MTg2MDk2OWIxYjZhMWE1NTliZGM4OGZhLi4wMDYxZDM4MmJjMTQ5MjUyNDA2
NGEyM2Y3MjBmOGMyYmQzYjcyNjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS9zdHVuc2VydmVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uvc3R1bnNlcnZlci5oCkBA
IC0zMyw3ICszMyw3IEBAIGNsYXNzIFN0dW5TZXJ2ZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Ns
b3RzPD4gewogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3Mm
IHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFj
a2V0X3RpbWUpOworICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3Vz
KTsKIAogICAvLyBIYW5kbGVycyBmb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBTVFVOL1RVUk4g
cmVxdWVzdHM6CiAgIHZpcnR1YWwgdm9pZCBPbkJpbmRpbmdSZXF1ZXN0KFN0dW5NZXNzYWdlKiBt
c2csCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYwppbmRleCBjNjZjNzMwNzM3NWUwM2ZiODk3NGI5
MGEwZWYyYmY5MjA4NGI3ZjgzLi4wZDdhZWE5ZDYwYTQ4M2YxNWMyNTExYzFhMGEwNWY4Yzc5MmRi
ZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS90Y3Bwb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lk
IFRDUFBvcnQ6Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpIHsKICAgUG9y
dDo6T25SZWFkUGFja2V0KGRhdGEsIHNpemUsIHJlbW90ZV9hZGRyLCBQUk9UT19UQ1ApOwogfQog
CkBAIC01NDUsOSArNTQ1LDkgQEAgdm9pZCBUQ1BDb25uZWN0aW9uOjpPblJlYWRQYWNrZXQocnRj
OjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKSB7CiAg
IFJUQ19EQ0hFQ0soc29ja2V0ID09IHNvY2tldF8uZ2V0KCkpOwotICBDb25uZWN0aW9uOjpPblJl
YWRQYWNrZXQoZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWUpOworICBDb25uZWN0aW9uOjpPblJlYWRQ
YWNrZXQoZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIFRDUENvbm5lY3Rp
b246Ok9uUmVhZHlUb1NlbmQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS90Y3Bwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS90Y3Bwb3J0LmgKaW5kZXggZmE1Yzk1OGMyMWMyNjNiYmI0YjFlYTAxOWI4YTE3MGJm
YTdhZDY5Ny4uNGQwNmE2NTA3YzM1MzQyMWVhY2NlOTEzMmE5ZTMxZGQxNjI4YzA5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
dGNwcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9iYXNlL3RjcHBvcnQuaApAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNp
bmNsdWRlICJwMnAvYmFzZS9wb3J0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRz
b2NrZXQuaCIKIApAQCAtMzAsMTYgKzMxLDE4IEBAIGNsYXNzIFRDUENvbm5lY3Rpb247CiAvLyBj
YWxsIHRoaXMgVENQUG9ydDo6T25SZWFkUGFja2V0ICgzIGFyZykgdG8gZGlzcGF0Y2ggdG8gYSBj
b25uZWN0aW9uLgogY2xhc3MgVENQUG9ydCA6IHB1YmxpYyBQb3J0IHsKICBwdWJsaWM6Ci0gIHN0
YXRpYyBUQ1BQb3J0KiBDcmVhdGUocnRjOjpUaHJlYWQqIHRocmVhZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3RvcnksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgcnRjOjpOZXR3b3JrKiBuZXR3b3JrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQxNl90IG1pbl9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQx
Nl90IG1heF9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
cGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGxvd19saXN0ZW4pIHsK
LSAgICByZXR1cm4gbmV3IFRDUFBvcnQodGhyZWFkLCBmYWN0b3J5LCBuZXR3b3JrLCBtaW5fcG9y
dCwgbWF4X3BvcnQsIHVzZXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCwg
YWxsb3dfbGlzdGVuKTsKKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUQ1BQb3J0PiBDcmVhdGUo
cnRjOjpUaHJlYWQqIHRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdvcmssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1pbl9wb3J0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtYXhfcG9ydCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgYWxsb3dfbGlzdGVuKSB7CisgICAgLy8gVXNpbmcgYG5ld2AgdG8g
YWNjZXNzIGEgbm9uLXB1YmxpYyBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gYWJzbDo6V3JhcFVu
aXF1ZShuZXcgVENQUG9ydCh0aHJlYWQsIGZhY3RvcnksIG5ldHdvcmssIG1pbl9wb3J0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9wb3J0LCB1c2VybmFtZSwg
cGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3df
bGlzdGVuKSk7CiAgIH0KICAgflRDUFBvcnQoKSBvdmVycmlkZTsKIApAQCAtOTEsNyArOTQsNyBA
QCBjbGFzcyBUQ1BQb3J0IDogcHVibGljIFBvcnQgewogICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsKIAogICB2b2lk
IE9uU2VudFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6U2VudFBhY2tldCYgc2VudF9wYWNrZXQpIG92ZXJyaWRlOwpA
QCAtMTU5LDcgKzE2Miw3IEBAIGNsYXNzIFRDUENvbm5lY3Rpb24gOiBwdWJsaWMgQ29ubmVjdGlv
biB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tl
dEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBh
Y2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRf
dCYgcGFja2V0X3RpbWVfdXMpOwogICB2b2lkIE9uUmVhZHlUb1NlbmQocnRjOjpBc3luY1BhY2tl
dFNvY2tldCogc29ja2V0KTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNv
Y2tldD4gc29ja2V0XzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bwb3J0X3VuaXR0ZXN0LmNj
CmluZGV4IGVmMzAyZjkwMjYwMzJkMDQzMjBiZDFjYzA4ZWZlNzAwNTk4MDU0ZWUuLjM0Mzg1YTdm
OWJlZTY5NDA4NGNkYjViNjM2NGRkZWU2MWNkNzMwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnRfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvdGNwcG9ydF91bml0dGVzdC5jYwpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgInAycC9i
YXNlL2Jhc2ljcGFja2V0c29ja2V0ZmFjdG9yeS5oIgogI2luY2x1ZGUgInAycC9iYXNlL3RjcHBv
cnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2hl
bHBlcnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS92aXJ0dWFsc29ja2V0c2VydmVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJh
bnNwb3J0ZGVzY3JpcHRpb24uY2MKaW5kZXggYWQyOWExMTk5ZTdkNTMxYjA4N2QwYzBhMjZjY2U4
ZTkxZGI0OTkxMy4uMzc3YTRjM2VlZTMyNzg1NDE2NmUyMmUwYTdkYWU0MTk2Yzk1YWEyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jh
c2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uY2MKQEAgLTEw
LDkgKzEwLDkgQEAKIAogI2luY2x1ZGUgInAycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uLmgi
CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJwMnAvYmFzZS9w
MnBjb25zdGFudHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CiAKQEAgLTIy
LDcgKzIyLDcgQEAgYm9vbCBTdHJpbmdUb0Nvbm5lY3Rpb25Sb2xlKGNvbnN0IHN0ZDo6c3RyaW5n
JiByb2xlX3N0ciwgQ29ubmVjdGlvblJvbGUqIHJvbGUpIHsKICAgICAgIENPTk5FQ1RJT05ST0xF
X0FDVFBBU1NfU1RSLCBDT05ORUNUSU9OUk9MRV9IT0xEQ09OTl9TVFJ9OwogCiAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKHJvbGVzKTsgKytpKSB7Ci0gICAgaWYgKF9zdHJpY21w
KHJvbGVzW2ldLCByb2xlX3N0ci5jX3N0cigpKSA9PSAwKSB7CisgICAgaWYgKGFic2w6OkVxdWFs
c0lnbm9yZUNhc2Uocm9sZXNbaV0sIHJvbGVfc3RyKSkgewogICAgICAgKnJvbGUgPSBzdGF0aWNf
Y2FzdDxDb25uZWN0aW9uUm9sZT4oQ09OTkVDVElPTlJPTEVfQUNUSVZFICsgaSk7CiAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbi5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVz
Y3JpcHRpb24uaAppbmRleCAzYmZmZGY5NzFhMGU5MzZmMjAwODExNjNjOTg5M2ZjZmJkZGM0ZGRj
Li4yYWI5NzMyNzhmYWY3MmFhNjAzNGQ4ODM0ODNkMGU4NTc3MzBmZmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3Bv
cnRkZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uLmgKQEAgLTY3LDExICs2NywxMyBA
QCBzdHJ1Y3QgSWNlUGFyYW1ldGVycyB7CiAgICAgICAgICAgICAgICAgYm9vbCBpY2VfcmVub21p
bmF0aW9uKQogICAgICAgOiB1ZnJhZyhpY2VfdWZyYWcpLCBwd2QoaWNlX3B3ZCksIHJlbm9taW5h
dGlvbihpY2VfcmVub21pbmF0aW9uKSB7fQogCi0gIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJY2VQ
YXJhbWV0ZXJzJiBvdGhlcikgeworICBib29sIG9wZXJhdG9yPT0oY29uc3QgSWNlUGFyYW1ldGVy
cyYgb3RoZXIpIGNvbnN0IHsKICAgICByZXR1cm4gdWZyYWcgPT0gb3RoZXIudWZyYWcgJiYgcHdk
ID09IG90aGVyLnB3ZCAmJgogICAgICAgICAgICByZW5vbWluYXRpb24gPT0gb3RoZXIucmVub21p
bmF0aW9uOwogICB9Ci0gIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJY2VQYXJhbWV0ZXJzJiBvdGhl
cikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEljZVBhcmFtZXRlcnMmIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOworICB9CiB9OwogCiBleHRlcm4gY29uc3QgY2hhciBDT05ORUNUSU9OUk9MRV9BQ1RJVkVf
U1RSW107CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlw
dGlvbmZhY3RvcnkuY2MKaW5kZXggNjE4NzI2ZTg0MTE2NGMwOTZhZTA1MDg5YzU0ZDE1ZWMxNzQ1
ZDA0Ni4uNjg5Y2Q0ZjdhMmQwYmRjN2YwNTFmM2E0NGNhNzUwYTk2YWZlNjBlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJh
bnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGRlc2NyaXB0aW9uZmFjdG9yeS5j
YwpAQCAtMjcsMTMgKzI3LDE1IEBAIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeTo6flRyYW5z
cG9ydERlc2NyaXB0aW9uRmFjdG9yeSgpID0gZGVmYXVsdDsKIAogVHJhbnNwb3J0RGVzY3JpcHRp
b24qIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlT2ZmZXIoCiAgICAgY29uc3Qg
VHJhbnNwb3J0T3B0aW9ucyYgb3B0aW9ucywKLSAgICBjb25zdCBUcmFuc3BvcnREZXNjcmlwdGlv
biogY3VycmVudF9kZXNjcmlwdGlvbikgY29uc3QgeworICAgIGNvbnN0IFRyYW5zcG9ydERlc2Ny
aXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uLAorICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3Iq
IGljZV9jcmVkZW50aWFscykgY29uc3QgewogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVz
Y3JpcHRpb24+IGRlc2MobmV3IFRyYW5zcG9ydERlc2NyaXB0aW9uKCkpOwogCiAgIC8vIEdlbmVy
YXRlIHRoZSBJQ0UgY3JlZGVudGlhbHMgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIHRoZW0uCiAg
IGlmICghY3VycmVudF9kZXNjcmlwdGlvbiB8fCBvcHRpb25zLmljZV9yZXN0YXJ0KSB7Ci0gICAg
ZGVzYy0+aWNlX3VmcmFnID0gcnRjOjpDcmVhdGVSYW5kb21TdHJpbmcoSUNFX1VGUkFHX0xFTkdU
SCk7Ci0gICAgZGVzYy0+aWNlX3B3ZCA9IHJ0Yzo6Q3JlYXRlUmFuZG9tU3RyaW5nKElDRV9QV0Rf
TEVOR1RIKTsKKyAgICBJY2VQYXJhbWV0ZXJzIGNyZWRlbnRpYWxzID0gaWNlX2NyZWRlbnRpYWxz
LT5HZXRJY2VDcmVkZW50aWFscygpOworICAgIGRlc2MtPmljZV91ZnJhZyA9IGNyZWRlbnRpYWxz
LnVmcmFnOworICAgIGRlc2MtPmljZV9wd2QgPSBjcmVkZW50aWFscy5wd2Q7CiAgIH0gZWxzZSB7
CiAgICAgZGVzYy0+aWNlX3VmcmFnID0gY3VycmVudF9kZXNjcmlwdGlvbi0+aWNlX3VmcmFnOwog
ICAgIGRlc2MtPmljZV9wd2QgPSBjdXJyZW50X2Rlc2NyaXB0aW9uLT5pY2VfcHdkOwpAQCAtNTks
NyArNjEsOCBAQCBUcmFuc3BvcnREZXNjcmlwdGlvbiogVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0
b3J5OjpDcmVhdGVBbnN3ZXIoCiAgICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIG9mZmVy
LAogICAgIGNvbnN0IFRyYW5zcG9ydE9wdGlvbnMmIG9wdGlvbnMsCiAgICAgYm9vbCByZXF1aXJl
X3RyYW5zcG9ydF9hdHRyaWJ1dGVzLAotICAgIGNvbnN0IFRyYW5zcG9ydERlc2NyaXB0aW9uKiBj
dXJyZW50X2Rlc2NyaXB0aW9uKSBjb25zdCB7CisgICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRp
b24qIGN1cnJlbnRfZGVzY3JpcHRpb24sCisgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNl
X2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIC8vIFRPRE8oanViZXJ0aSk6IEZpZ3VyZSBvdXQgd2h5
IHdlIGdldCBOVUxMIG9mZmVycywgYW5kIGZpeCB0aGlzIHVwc3RyZWFtLgogICBpZiAoIW9mZmVy
KSB7CiAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBUcmFuc3Bv
cnREZXNjcmlwdGlvbiBhbnN3ZXIgIgpAQCAtNzEsOCArNzQsOSBAQCBUcmFuc3BvcnREZXNjcmlw
dGlvbiogVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVBbnN3ZXIoCiAgIC8vIEdl
bmVyYXRlIHRoZSBJQ0UgY3JlZGVudGlhbHMgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIHRoZW0g
b3IgaWNlIGlzCiAgIC8vIGJlaW5nIHJlc3RhcnRlZC4KICAgaWYgKCFjdXJyZW50X2Rlc2NyaXB0
aW9uIHx8IG9wdGlvbnMuaWNlX3Jlc3RhcnQpIHsKLSAgICBkZXNjLT5pY2VfdWZyYWcgPSBydGM6
OkNyZWF0ZVJhbmRvbVN0cmluZyhJQ0VfVUZSQUdfTEVOR1RIKTsKLSAgICBkZXNjLT5pY2VfcHdk
ID0gcnRjOjpDcmVhdGVSYW5kb21TdHJpbmcoSUNFX1BXRF9MRU5HVEgpOworICAgIEljZVBhcmFt
ZXRlcnMgY3JlZGVudGlhbHMgPSBpY2VfY3JlZGVudGlhbHMtPkdldEljZUNyZWRlbnRpYWxzKCk7
CisgICAgZGVzYy0+aWNlX3VmcmFnID0gY3JlZGVudGlhbHMudWZyYWc7CisgICAgZGVzYy0+aWNl
X3B3ZCA9IGNyZWRlbnRpYWxzLnB3ZDsKICAgfSBlbHNlIHsKICAgICBkZXNjLT5pY2VfdWZyYWcg
PSBjdXJyZW50X2Rlc2NyaXB0aW9uLT5pY2VfdWZyYWc7CiAgICAgZGVzYy0+aWNlX3B3ZCA9IGN1
cnJlbnRfZGVzY3JpcHRpb24tPmljZV9wd2Q7CkBAIC0xMTYsOCArMTIwLDggQEAgYm9vbCBUcmFu
c3BvcnREZXNjcmlwdGlvbkZhY3Rvcnk6OlNldFNlY3VyaXR5SW5mbyhUcmFuc3BvcnREZXNjcmlw
dGlvbiogZGVzYywKICAgLy8gVGhpcyBkaWdlc3QgYWxnb3JpdGhtIGlzIHVzZWQgdG8gcHJvZHVj
ZSB0aGUgYT1maW5nZXJwcmludCBsaW5lcyBpbiBTRFAuCiAgIC8vIFJGQyA0NTcyIFNlY3Rpb24g
NSByZXF1aXJlcyB0aGF0IHRob3NlIGxpbmVzIHVzZSB0aGUgc2FtZSBoYXNoIGZ1bmN0aW9uIGFz
CiAgIC8vIHRoZSBjZXJ0aWZpY2F0ZSdzIHNpZ25hdHVyZSwgd2hpY2ggaXMgd2hhdCBDcmVhdGVG
cm9tQ2VydGlmaWNhdGUgZG9lcy4KLSAgZGVzYy0+aWRlbnRpdHlfZmluZ2VycHJpbnQucmVzZXQo
Ci0gICAgICBydGM6OlNTTEZpbmdlcnByaW50OjpDcmVhdGVGcm9tQ2VydGlmaWNhdGUoY2VydGlm
aWNhdGVfKSk7CisgIGRlc2MtPmlkZW50aXR5X2ZpbmdlcnByaW50ID0KKyAgICAgIHJ0Yzo6U1NM
RmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZSgqY2VydGlmaWNhdGVfKTsKICAgaWYg
KCFkZXNjLT5pZGVudGl0eV9maW5nZXJwcmludCkgewogICAgIHJldHVybiBmYWxzZTsKICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3Rv
cnkuaAppbmRleCA5MzdjNWZhMWZlYTRhMjFmYWFjY2JmNWU1MTk1ZTMyYmYyZDEwYjNlLi5kYzE0
NzZhODBmNTA3MWI5MDY4YzAxNGMyN2ZkMTM0Y2Q0ZGQ5NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNj
cmlwdGlvbmZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZhY3RvcnkuaApAQCAtMTEsNiAr
MTEsNyBAQAogI2lmbmRlZiBQMlBfQkFTRV9UUkFOU1BPUlRERVNDUklQVElPTkZBQ1RPUllfSF8K
ICNkZWZpbmUgUDJQX0JBU0VfVFJBTlNQT1JUREVTQ1JJUFRJT05GQUNUT1JZX0hfCiAKKyNpbmNs
dWRlICJwMnAvYmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAicDJwL2Jh
c2UvdHJhbnNwb3J0ZGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0aWZp
Y2F0ZS5oIgogCkBAIC01NCw3ICs1NSw4IEBAIGNsYXNzIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFj
dG9yeSB7CiAgIC8vIENyZWF0ZXMgYSB0cmFuc3BvcnQgZGVzY3JpcHRpb24gc3VpdGFibGUgZm9y
IHVzZSBpbiBhbiBvZmZlci4KICAgVHJhbnNwb3J0RGVzY3JpcHRpb24qIENyZWF0ZU9mZmVyKAog
ICAgICAgY29uc3QgVHJhbnNwb3J0T3B0aW9ucyYgb3B0aW9ucywKLSAgICAgIGNvbnN0IFRyYW5z
cG9ydERlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uKSBjb25zdDsKKyAgICAgIGNvbnN0
IFRyYW5zcG9ydERlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uLAorICAgICAgSWNlQ3Jl
ZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdDsKICAgLy8gQ3JlYXRlIGEg
dHJhbnNwb3J0IGRlc2NyaXB0aW9uIHRoYXQgaXMgYSByZXNwb25zZSB0byBhbiBvZmZlci4KICAg
Ly8KICAgLy8gSWYgfHJlcXVpcmVfdHJhbnNwb3J0X2F0dHJpYnV0ZXN8IGlzIHRydWUsIHRoZW4g
VFJBTlNQT1JUIGNhdGVnb3J5CkBAIC02Niw3ICs2OCw4IEBAIGNsYXNzIFRyYW5zcG9ydERlc2Ny
aXB0aW9uRmFjdG9yeSB7CiAgICAgICBjb25zdCBUcmFuc3BvcnREZXNjcmlwdGlvbiogb2ZmZXIs
CiAgICAgICBjb25zdCBUcmFuc3BvcnRPcHRpb25zJiBvcHRpb25zLAogICAgICAgYm9vbCByZXF1
aXJlX3RyYW5zcG9ydF9hdHRyaWJ1dGVzLAotICAgICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRp
b24qIGN1cnJlbnRfZGVzY3JpcHRpb24pIGNvbnN0OworICAgICAgY29uc3QgVHJhbnNwb3J0RGVz
Y3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24sCisgICAgICBJY2VDcmVkZW50aWFsc0l0ZXJh
dG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0OwogCiAgcHJpdmF0ZToKICAgYm9vbCBTZXRTZWN1
cml0eUluZm8oVHJhbnNwb3J0RGVzY3JpcHRpb24qIGRlc2NyaXB0aW9uLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNw
b3J0ZGVzY3JpcHRpb25mYWN0b3J5X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5
X3VuaXR0ZXN0LmNjCmluZGV4IGE3YzM0YjU2YTA0ZDM1YzZkZjkwYjA4ZGFlOTQzY2Y4NzkzNTFk
ZWQuLmM0NjYzMGFjZTIxOTJmMTU4NmE3NmNlM2VhNjM3MGU5NmMxNmNiYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5z
cG9ydGRlc2NyaXB0aW9uZmFjdG9yeV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90cmFuc3BvcnRkZXNjcmlwdGlvbmZh
Y3RvcnlfdW5pdHRlc3QuY2MKQEAgLTI2LDcgKzI2LDggQEAgdXNpbmcgY3JpY2tldDo6VHJhbnNw
b3J0T3B0aW9uczsKIGNsYXNzIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CiAgcHVibGljOgogICBUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3Rv
cnlUZXN0KCkKLSAgICAgIDogY2VydDFfKHJ0Yzo6UlRDQ2VydGlmaWNhdGU6OkNyZWF0ZShzdGQ6
OnVuaXF1ZV9wdHI8cnRjOjpTU0xJZGVudGl0eT4oCisgICAgICA6IGljZV9jcmVkZW50aWFsc18o
e30pLAorICAgICAgICBjZXJ0MV8ocnRjOjpSVENDZXJ0aWZpY2F0ZTo6Q3JlYXRlKHN0ZDo6dW5p
cXVlX3B0cjxydGM6OlNTTElkZW50aXR5PigKICAgICAgICAgICAgIG5ldyBydGM6OkZha2VTU0xJ
ZGVudGl0eSgiVXNlcjEiKSkpKSwKICAgICAgICAgY2VydDJfKHJ0Yzo6UlRDQ2VydGlmaWNhdGU6
OkNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xJZGVudGl0eT4oCiAgICAgICAgICAgICBu
ZXcgcnRjOjpGYWtlU1NMSWRlbnRpdHkoIlVzZXIyIikpKSkge30KQEAgLTY0LDIxICs2NSwyMiBA
QCBjbGFzcyBUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewogICAgIFNldER0bHMoZHRscyk7CiAgICAgY3JpY2tldDo6VHJhbnNwb3J0T3B0aW9u
cyBvcHRpb25zOwogICAgIC8vIFRoZSBpbml0aWFsIG9mZmVyIC8gYW5zd2VyIGV4Y2hhbmdlLgot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gb2ZmZXIoZjFfLkNyZWF0
ZU9mZmVyKG9wdGlvbnMsIE5VTEwpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVz
Y3JpcHRpb24+IG9mZmVyKAorICAgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgTlVMTCwg
JmljZV9jcmVkZW50aWFsc18pKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3Jp
cHRpb24+IGFuc3dlcigKLSAgICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0
aW9ucywgdHJ1ZSwgTlVMTCkpOworICAgICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgp
LCBvcHRpb25zLCB0cnVlLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogCiAgICAgLy8gQ3Jl
YXRlIGFuIHVwZGF0ZWQgb2ZmZXIgd2hlcmUgd2UgcmVzdGFydCBpY2UuCiAgICAgb3B0aW9ucy5p
Y2VfcmVzdGFydCA9IHRydWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0
aW9uPiByZXN0YXJ0X29mZmVyKAotICAgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgb2Zm
ZXIuZ2V0KCkpKTsKKyAgICAgICAgZjFfLkNyZWF0ZU9mZmVyKG9wdGlvbnMsIG9mZmVyLmdldCgp
LCAmaWNlX2NyZWRlbnRpYWxzXykpOwogCiAgICAgVmVyaWZ5VWZyYWdBbmRQYXNzd29yZENoYW5n
ZWQoZHRscywgb2ZmZXIuZ2V0KCksIHJlc3RhcnRfb2ZmZXIuZ2V0KCkpOwogCiAgICAgLy8gQ3Jl
YXRlIGEgbmV3IGFuc3dlci4gVGhlIHRyYW5zcG9ydCB1ZnJhZyBhbmQgcGFzc3dvcmQgaXMgY2hh
bmdlZCBzaW5jZQogICAgIC8vIHxvcHRpb25zLmljZV9yZXN0YXJ0ID09IHRydWV8Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiByZXN0YXJ0X2Fuc3dlcigKLSAgICAg
ICAgZjJfLkNyZWF0ZUFuc3dlcihyZXN0YXJ0X29mZmVyLmdldCgpLCBvcHRpb25zLCB0cnVlLCBh
bnN3ZXIuZ2V0KCkpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+
IHJlc3RhcnRfYW5zd2VyKGYyXy5DcmVhdGVBbnN3ZXIoCisgICAgICAgIHJlc3RhcnRfb2ZmZXIu
Z2V0KCksIG9wdGlvbnMsIHRydWUsIGFuc3dlci5nZXQoKSwgJmljZV9jcmVkZW50aWFsc18pKTsK
ICAgICBBU1NFUlRfVFJVRShyZXN0YXJ0X2Fuc3dlci5nZXQoKSAhPSBOVUxMKTsKIAogICAgIFZl
cmlmeVVmcmFnQW5kUGFzc3dvcmRDaGFuZ2VkKGR0bHMsIGFuc3dlci5nZXQoKSwgcmVzdGFydF9h
bnN3ZXIuZ2V0KCkpOwpAQCAtMTA4LDE5ICsxMTAsMjAgQEAgY2xhc3MgVHJhbnNwb3J0RGVzY3Jp
cHRpb25GYWN0b3J5VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBjcmlja2V0OjpU
cmFuc3BvcnRPcHRpb25zIG9wdGlvbnM7CiAgICAgLy8gVGhlIGluaXRpYWwgb2ZmZXIgLyBhbnN3
ZXIgZXhjaGFuZ2UuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBv
ZmZlcigKLSAgICAgICAgZjFfLkNyZWF0ZU9mZmVyKG9wdGlvbnMsIG51bGxwdHIpKTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGFuc3dlcigKLSAgICAgICAgZjJf
LkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0aW9ucywgdHJ1ZSwgbnVsbHB0cikpOworICAg
ICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgbnVsbHB0ciwgJmljZV9jcmVkZW50aWFsc18p
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGFuc3dlcihmMl8u
Q3JlYXRlQW5zd2VyKAorICAgICAgICBvZmZlci5nZXQoKSwgb3B0aW9ucywgdHJ1ZSwgbnVsbHB0
ciwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgICBWZXJpZnlSZW5vbWluYXRpb24ob2ZmZXIuZ2V0
KCksIGZhbHNlKTsKICAgICBWZXJpZnlSZW5vbWluYXRpb24oYW5zd2VyLmdldCgpLCBmYWxzZSk7
CiAKICAgICBvcHRpb25zLmVuYWJsZV9pY2VfcmVub21pbmF0aW9uID0gdHJ1ZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IHJlbm9taW5hdGlvbl9vZmZlcigKLSAg
ICAgICAgZjFfLkNyZWF0ZU9mZmVyKG9wdGlvbnMsIG9mZmVyLmdldCgpKSk7CisgICAgICAgIGYx
Xy5DcmVhdGVPZmZlcihvcHRpb25zLCBvZmZlci5nZXQoKSwgJmljZV9jcmVkZW50aWFsc18pKTsK
ICAgICBWZXJpZnlSZW5vbWluYXRpb24ocmVub21pbmF0aW9uX29mZmVyLmdldCgpLCB0cnVlKTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gcmVub21pbmF0aW9u
X2Fuc3dlcihmMl8uQ3JlYXRlQW5zd2VyKAotICAgICAgICByZW5vbWluYXRpb25fb2ZmZXIuZ2V0
KCksIG9wdGlvbnMsIHRydWUsIGFuc3dlci5nZXQoKSkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxU
cmFuc3BvcnREZXNjcmlwdGlvbj4gcmVub21pbmF0aW9uX2Fuc3dlcigKKyAgICAgICAgZjJfLkNy
ZWF0ZUFuc3dlcihyZW5vbWluYXRpb25fb2ZmZXIuZ2V0KCksIG9wdGlvbnMsIHRydWUsIGFuc3dl
ci5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmaWNlX2NyZWRlbnRpYWxzXykpOwog
ICAgIFZlcmlmeVJlbm9taW5hdGlvbihyZW5vbWluYXRpb25fYW5zd2VyLmdldCgpLCB0cnVlKTsK
ICAgfQogCkBAIC0xNDUsNiArMTQ4LDcgQEAgY2xhc3MgVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0
b3J5VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICB9CiAgIH0KIAorICBjcmlja2V0
OjpJY2VDcmVkZW50aWFsc0l0ZXJhdG9yIGljZV9jcmVkZW50aWFsc187CiAgIFRyYW5zcG9ydERl
c2NyaXB0aW9uRmFjdG9yeSBmMV87CiAgIFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeSBmMl87
CiAKQEAgLTE1NCw3ICsxNTgsNyBAQCBjbGFzcyBUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogCiBURVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRp
b25GYWN0b3J5VGVzdCwgVGVzdE9mZmVyRGVmYXVsdCkgewogICBzdGQ6OnVuaXF1ZV9wdHI8VHJh
bnNwb3J0RGVzY3JpcHRpb24+IGRlc2MoCi0gICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0
T3B0aW9ucygpLCBOVUxMKSk7CisgICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9u
cygpLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwg
IiIsICIiLCAiIiwgIiIpOwogfQogCkBAIC0xNjMsMTMgKzE2NywxMyBAQCBURVNUX0YoVHJhbnNw
b3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdE9mZmVyRHRscykgewogICBmMV8uc2V0X2Nl
cnRpZmljYXRlKGNlcnQxXyk7CiAgIHN0ZDo6c3RyaW5nIGRpZ2VzdF9hbGc7CiAgIEFTU0VSVF9U
UlVFKAotICAgICAgY2VydDFfLT5zc2xfY2VydGlmaWNhdGUoKS5HZXRTaWduYXR1cmVEaWdlc3RB
bGdvcml0aG0oJmRpZ2VzdF9hbGcpKTsKKyAgICAgIGNlcnQxXy0+R2V0U1NMQ2VydGlmaWNhdGUo
KS5HZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG0oJmRpZ2VzdF9hbGcpKTsKICAgc3RkOjp1bmlx
dWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBkZXNjKAotICAgICAgZjFfLkNyZWF0ZU9mZmVy
KFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCkpOworICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5z
cG9ydE9wdGlvbnMoKSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQ2hlY2tEZXNjKGRl
c2MuZ2V0KCksICIiLCAiIiwgIiIsIGRpZ2VzdF9hbGcpOwogICAvLyBFbnN1cmUgaXQgYWxzbyB3
b3JrcyB3aXRoIFNFQ19SRVFVSVJFRC4KICAgZjFfLnNldF9zZWN1cmUoY3JpY2tldDo6U0VDX1JF
UVVJUkVEKTsKLSAgZGVzYy5yZXNldChmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygp
LCBOVUxMKSk7CisgIGRlc2MucmVzZXQoZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMo
KSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQ2hlY2tEZXNjKGRlc2MuZ2V0KCksICIi
LCAiIiwgIiIsIGRpZ2VzdF9hbGcpOwogfQogCkBAIC0xNzcsNyArMTgxLDcgQEAgVEVTVF9GKFRy
YW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RPZmZlckR0bHMpIHsKIFRFU1RfRihU
cmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0T2ZmZXJEdGxzV2l0aE5vSWRlbnRp
dHkpIHsKICAgZjFfLnNldF9zZWN1cmUoY3JpY2tldDo6U0VDX0VOQUJMRUQpOwogICBzdGQ6OnVu
aXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRlc2MoCi0gICAgICBmMV8uQ3JlYXRlT2Zm
ZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBOVUxMKSk7CisgICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJh
bnNwb3J0T3B0aW9ucygpLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBBU1NFUlRfVFJV
RShkZXNjLmdldCgpID09IE5VTEwpOwogfQogCkBAIC0xODgsMzYgKzE5MiwzOCBAQCBURVNUX0Yo
VHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdE9mZmVyRHRsc1Jlb2ZmZXJEdGxz
KSB7CiAgIGYxXy5zZXRfY2VydGlmaWNhdGUoY2VydDFfKTsKICAgc3RkOjpzdHJpbmcgZGlnZXN0
X2FsZzsKICAgQVNTRVJUX1RSVUUoCi0gICAgICBjZXJ0MV8tPnNzbF9jZXJ0aWZpY2F0ZSgpLkdl
dFNpZ25hdHVyZURpZ2VzdEFsZ29yaXRobSgmZGlnZXN0X2FsZykpOworICAgICAgY2VydDFfLT5H
ZXRTU0xDZXJ0aWZpY2F0ZSgpLkdldFNpZ25hdHVyZURpZ2VzdEFsZ29yaXRobSgmZGlnZXN0X2Fs
ZykpOwogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG9sZF9kZXNjKAot
ICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCkpOworICAgICAg
ZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9ydE9wdGlvbnMoKSwgTlVMTCwgJmljZV9jcmVkZW50aWFs
c18pKTsKICAgQVNTRVJUX1RSVUUob2xkX2Rlc2MuZ2V0KCkgIT0gTlVMTCk7CiAgIHN0ZDo6dW5p
cXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gZGVzYygKLSAgICAgIGYxXy5DcmVhdGVPZmZl
cihUcmFuc3BvcnRPcHRpb25zKCksIG9sZF9kZXNjLmdldCgpKSk7CisgICAgICBmMV8uQ3JlYXRl
T2ZmZXIoVHJhbnNwb3J0T3B0aW9ucygpLCBvbGRfZGVzYy5nZXQoKSwgJmljZV9jcmVkZW50aWFs
c18pKTsKICAgQ2hlY2tEZXNjKGRlc2MuZ2V0KCksICIiLCBvbGRfZGVzYy0+aWNlX3VmcmFnLCBv
bGRfZGVzYy0+aWNlX3B3ZCwgZGlnZXN0X2FsZyk7CiB9CiAKIFRFU1RfRihUcmFuc3BvcnREZXNj
cmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0QW5zd2VyRGVmYXVsdCkgewogICBzdGQ6OnVuaXF1ZV9w
dHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG9mZmVyKAotICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRy
YW5zcG9ydE9wdGlvbnMoKSwgTlVMTCkpOworICAgICAgZjFfLkNyZWF0ZU9mZmVyKFRyYW5zcG9y
dE9wdGlvbnMoKSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQVNTRVJUX1RSVUUob2Zm
ZXIuZ2V0KCkgIT0gTlVMTCk7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlv
bj4gZGVzYygKLSAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9w
dGlvbnMoKSwgdHJ1ZSwgTlVMTCkpOworICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3Jp
cHRpb24+IGRlc2MoZjJfLkNyZWF0ZUFuc3dlcigKKyAgICAgIG9mZmVyLmdldCgpLCBUcmFuc3Bv
cnRPcHRpb25zKCksIHRydWUsIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIENoZWNrRGVz
YyhkZXNjLmdldCgpLCAiIiwgIiIsICIiLCAiIik7Ci0gIGRlc2MucmVzZXQoZjJfLkNyZWF0ZUFu
c3dlcihvZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxMKSk7CisgIGRl
c2MucmVzZXQoZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygp
LCB0cnVlLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmljZV9jcmVkZW50
aWFsc18pKTsKICAgQ2hlY2tEZXNjKGRlc2MuZ2V0KCksICIiLCAiIiwgIiIsICIiKTsKIH0KIAog
Ly8gVGVzdCB0aGF0IHdlIGNhbiB1cGRhdGUgYW4gYW5zd2VyIHByb3Blcmx5OyBJQ0UgY3JlZGVu
dGlhbHMgc2hvdWxkbid0IGNoYW5nZS4KIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3Rv
cnlUZXN0LCBUZXN0UmVhbnN3ZXIpIHsKICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2Ny
aXB0aW9uPiBvZmZlcigKLSAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCks
IE5VTEwpKTsKKyAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEws
ICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIEFTU0VSVF9UUlVFKG9mZmVyLmdldCgpICE9IE5VTEwp
OwotICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG9sZF9kZXNjKAotICAg
ICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVl
LCBOVUxMKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gb2xkX2Rl
c2MoZjJfLkNyZWF0ZUFuc3dlcigKKyAgICAgIG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25z
KCksIHRydWUsIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIEFTU0VSVF9UUlVFKG9sZF9k
ZXNjLmdldCgpICE9IE5VTEwpOwogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRp
b24+IGRlc2MoCi0gICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBUcmFuc3BvcnRP
cHRpb25zKCksIHRydWUsIG9sZF9kZXNjLmdldCgpKSk7CisgICAgICBmMl8uQ3JlYXRlQW5zd2Vy
KG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIG9sZF9kZXNjLmdldCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBBU1NFUlRfVFJV
RShkZXNjLmdldCgpICE9IE5VTEwpOwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsIG9sZF9k
ZXNjLT5pY2VfdWZyYWcsIG9sZF9kZXNjLT5pY2VfcHdkLCAiIik7CiB9CkBAIC0yMjcsMTAgKzIz
MywxMCBAQCBURVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdEFuc3dl
ckR0bHNUb05vRHRscykgewogICBmMV8uc2V0X3NlY3VyZShjcmlja2V0OjpTRUNfRU5BQkxFRCk7
CiAgIGYxXy5zZXRfY2VydGlmaWNhdGUoY2VydDFfKTsKICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5z
cG9ydERlc2NyaXB0aW9uPiBvZmZlcigKLSAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRP
cHRpb25zKCksIE5VTEwpKTsKKyAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25z
KCksIE5VTEwsICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIEFTU0VSVF9UUlVFKG9mZmVyLmdldCgp
ICE9IE5VTEwpOwotICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRlc2Mo
Ci0gICAgICBmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCks
IHRydWUsIE5VTEwpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBk
ZXNjKGYyXy5DcmVhdGVBbnN3ZXIoCisgICAgICBvZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9u
cygpLCB0cnVlLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBDaGVja0Rlc2MoZGVzYy5n
ZXQoKSwgIiIsICIiLCAiIiwgIiIpOwogfQogCkBAIC0yNDAsMTMgKzI0NiwxNCBAQCBURVNUX0Yo
VHJhbnNwb3J0RGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdEFuc3dlck5vRHRsc1RvRHRscykg
ewogICBmMl8uc2V0X3NlY3VyZShjcmlja2V0OjpTRUNfRU5BQkxFRCk7CiAgIGYyXy5zZXRfY2Vy
dGlmaWNhdGUoY2VydDJfKTsKICAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9u
PiBvZmZlcigKLSAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwp
KTsKKyAgICAgIGYxXy5DcmVhdGVPZmZlcihUcmFuc3BvcnRPcHRpb25zKCksIE5VTEwsICZpY2Vf
Y3JlZGVudGlhbHNfKSk7CiAgIEFTU0VSVF9UUlVFKG9mZmVyLmdldCgpICE9IE5VTEwpOwotICBz
dGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGRlc2MoCi0gICAgICBmMl8uQ3Jl
YXRlQW5zd2VyKG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwpKTsK
KyAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBkZXNjKGYyXy5DcmVhdGVB
bnN3ZXIoCisgICAgICBvZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygpLCB0cnVlLCBOVUxM
LCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBDaGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIiLCAi
IiwgIiIpOwogICBmMl8uc2V0X3NlY3VyZShjcmlja2V0OjpTRUNfUkVRVUlSRUQpOwotICBkZXNj
LnJlc2V0KGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlvbnMoKSwg
dHJ1ZSwgTlVMTCkpOworICBkZXNjLnJlc2V0KGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCks
IFRyYW5zcG9ydE9wdGlvbnMoKSwgdHJ1ZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZpY2VfY3JlZGVudGlhbHNfKSk7CiAgIEFTU0VSVF9UUlVFKGRlc2MuZ2V0KCkgPT0g
TlVMTCk7CiB9CiAKQEAgLTI2MiwxNiArMjY5LDE3IEBAIFRFU1RfRihUcmFuc3BvcnREZXNjcmlw
dGlvbkZhY3RvcnlUZXN0LCBUZXN0QW5zd2VyRHRsc1RvRHRscykgewogICAvLyBhbnN3ZXIgbXVz
dCBjb250YWluIGZpbmdlcnByaW50IGxpbmVzIHdpdGggY2VydDJfJ3MgZGlnZXN0IGFsZ29yaXRo
bS4KICAgc3RkOjpzdHJpbmcgZGlnZXN0X2FsZzI7CiAgIEFTU0VSVF9UUlVFKAotICAgICAgY2Vy
dDJfLT5zc2xfY2VydGlmaWNhdGUoKS5HZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG0oJmRpZ2Vz
dF9hbGcyKSk7CisgICAgICBjZXJ0Ml8tPkdldFNTTENlcnRpZmljYXRlKCkuR2V0U2lnbmF0dXJl
RGlnZXN0QWxnb3JpdGhtKCZkaWdlc3RfYWxnMikpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFu
c3BvcnREZXNjcmlwdGlvbj4gb2ZmZXIoCi0gICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0
T3B0aW9ucygpLCBOVUxMKSk7CisgICAgICBmMV8uQ3JlYXRlT2ZmZXIoVHJhbnNwb3J0T3B0aW9u
cygpLCBOVUxMLCAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBBU1NFUlRfVFJVRShvZmZlci5nZXQo
KSAhPSBOVUxMKTsKLSAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBkZXNj
KAotICAgICAgZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgVHJhbnNwb3J0T3B0aW9ucygp
LCB0cnVlLCBOVUxMKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4g
ZGVzYyhmMl8uQ3JlYXRlQW5zd2VyKAorICAgICAgb2ZmZXIuZ2V0KCksIFRyYW5zcG9ydE9wdGlv
bnMoKSwgdHJ1ZSwgTlVMTCwgJmljZV9jcmVkZW50aWFsc18pKTsKICAgQ2hlY2tEZXNjKGRlc2Mu
Z2V0KCksICIiLCAiIiwgIiIsIGRpZ2VzdF9hbGcyKTsKICAgZjJfLnNldF9zZWN1cmUoY3JpY2tl
dDo6U0VDX1JFUVVJUkVEKTsKLSAgZGVzYy5yZXNldChmMl8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdl
dCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEwpKTsKKyAgZGVzYy5yZXNldChmMl8u
Q3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBUcmFuc3BvcnRPcHRpb25zKCksIHRydWUsIE5VTEws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaWNlX2NyZWRlbnRpYWxzXykpOwogICBD
aGVja0Rlc2MoZGVzYy5nZXQoKSwgIiIsICIiLCAiIiwgZGlnZXN0X2FsZzIpOwogfQogCkBAIC0z
MDQsOSArMzEyLDM2IEBAIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBU
ZXN0SWNlUmVub21pbmF0aW9uV2l0aER0bHMpIHsKIFRFU1RfRihUcmFuc3BvcnREZXNjcmlwdGlv
bkZhY3RvcnlUZXN0LCBBZGRzVHJpY2tsZUljZU9wdGlvbikgewogICBjcmlja2V0OjpUcmFuc3Bv
cnRPcHRpb25zIG9wdGlvbnM7CiAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlv
bj4gb2ZmZXIoCi0gICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgbnVsbHB0cikpOworICAg
ICAgZjFfLkNyZWF0ZU9mZmVyKG9wdGlvbnMsIG51bGxwdHIsICZpY2VfY3JlZGVudGlhbHNfKSk7
CiAgIEVYUEVDVF9UUlVFKG9mZmVyLT5IYXNPcHRpb24oInRyaWNrbGUiKSk7CiAgIHN0ZDo6dW5p
cXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gYW5zd2VyKAotICAgICAgZjJfLkNyZWF0ZUFu
c3dlcihvZmZlci5nZXQoKSwgb3B0aW9ucywgdHJ1ZSwgbnVsbHB0cikpOworICAgICAgZjJfLkNy
ZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0aW9ucywgdHJ1ZSwgbnVsbHB0ciwgJmljZV9jcmVk
ZW50aWFsc18pKTsKICAgRVhQRUNUX1RSVUUoYW5zd2VyLT5IYXNPcHRpb24oInRyaWNrbGUiKSk7
CiB9CisKKy8vIFRlc3QgQ3JlYXRlT2ZmZXIgd2l0aCBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yLgor
VEVTVF9GKFRyYW5zcG9ydERlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIENyZWF0ZU9mZmVySWNlQ3Jl
ZGVudGlhbHNJdGVyYXRvcikgeworICBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpJY2VQYXJhbWV0ZXJz
PiBjcmVkZW50aWFscyA9IHsKKyAgICAgIGNyaWNrZXQ6OkljZVBhcmFtZXRlcnMoImthbGxlIiwg
ImFua2EiLCBmYWxzZSl9OworICBjcmlja2V0OjpJY2VDcmVkZW50aWFsc0l0ZXJhdG9yIGNyZWRl
bnRpYWxzSXRlcmF0b3IoY3JlZGVudGlhbHMpOworICBjcmlja2V0OjpUcmFuc3BvcnRPcHRpb25z
IG9wdGlvbnM7CisgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gb2ZmZXIo
CisgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgbnVsbHB0ciwgJmNyZWRlbnRpYWxzSXRl
cmF0b3IpKTsKKyAgRVhQRUNUX0VRKG9mZmVyLT5HZXRJY2VQYXJhbWV0ZXJzKCkudWZyYWcsIGNy
ZWRlbnRpYWxzWzBdLnVmcmFnKTsKKyAgRVhQRUNUX0VRKG9mZmVyLT5HZXRJY2VQYXJhbWV0ZXJz
KCkucHdkLCBjcmVkZW50aWFsc1swXS5wd2QpOworfQorCisvLyBUZXN0IENyZWF0ZUFuc3dlciB3
aXRoIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IuCitURVNUX0YoVHJhbnNwb3J0RGVzY3JpcHRpb25G
YWN0b3J5VGVzdCwgQ3JlYXRlQW5zd2VySWNlQ3JlZGVudGlhbHNJdGVyYXRvcikgeworICBjcmlj
a2V0OjpUcmFuc3BvcnRPcHRpb25zIG9wdGlvbnM7CisgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3Bv
cnREZXNjcmlwdGlvbj4gb2ZmZXIoCisgICAgICBmMV8uQ3JlYXRlT2ZmZXIob3B0aW9ucywgbnVs
bHB0ciwgJmljZV9jcmVkZW50aWFsc18pKTsKKworICBzdGQ6OnZlY3Rvcjxjcmlja2V0OjpJY2VQ
YXJhbWV0ZXJzPiBjcmVkZW50aWFscyA9IHsKKyAgICAgIGNyaWNrZXQ6OkljZVBhcmFtZXRlcnMo
ImthbGxlIiwgImFua2EiLCBmYWxzZSl9OworICBjcmlja2V0OjpJY2VDcmVkZW50aWFsc0l0ZXJh
dG9yIGNyZWRlbnRpYWxzSXRlcmF0b3IoY3JlZGVudGlhbHMpOworICBzdGQ6OnVuaXF1ZV9wdHI8
VHJhbnNwb3J0RGVzY3JpcHRpb24+IGFuc3dlcihmMV8uQ3JlYXRlQW5zd2VyKAorICAgICAgb2Zm
ZXIuZ2V0KCksIG9wdGlvbnMsIGZhbHNlLCBudWxscHRyLCAmY3JlZGVudGlhbHNJdGVyYXRvcikp
OworICBFWFBFQ1RfRVEoYW5zd2VyLT5HZXRJY2VQYXJhbWV0ZXJzKCkudWZyYWcsIGNyZWRlbnRp
YWxzWzBdLnVmcmFnKTsKKyAgRVhQRUNUX0VRKGFuc3dlci0+R2V0SWNlUGFyYW1ldGVycygpLnB3
ZCwgY3JlZGVudGlhbHNbMF0ucHdkKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RyYW5zcG9ydGZhY3RvcnlpbnRlcmZh
Y2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNl
L3RyYW5zcG9ydGZhY3RvcnlpbnRlcmZhY2UuaAppbmRleCBjZTMyZWU4NDgzZWRlYjdlZTJmMDg0
NTc4MzIzMDI0YWE3ODNhNjdlLi45ODA1ZGIwMDVjYzAyMTU1ZmJkMjJkZjZjZWRlYTAzYjAyNDA5
OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS90cmFuc3BvcnRmYWN0b3J5aW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHJhbnNwb3J0ZmFjdG9yeWlu
dGVyZmFjZS5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFRyYW5zcG9ydEZhY3RvcnlJbnRlcmZh
Y2UgewogCiAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPER0bHNUcmFuc3BvcnRJbnRlcm5hbD4g
Q3JlYXRlRHRsc1RyYW5zcG9ydCgKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJY2VUcmFuc3BvcnRJ
bnRlcm5hbD4gaWNlLAotICAgICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0
aW9ucykgPSAwOworICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0
aW9ucykgPSAwOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5wb3J0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2Uv
dHVybnBvcnQuY2MKaW5kZXggOTc1NDFmNjBjMDJkZDliNzQyZDdkZWYyMmMzNTA5ZmJiYjg0YjIx
MS4uZWIwYWRmYTNjZTRlMWRiOTkwYzMwMzk3MmE2YzBlODU1ODcwOTNhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnBv
cnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvdHVybnBvcnQuY2MKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0aGVscGVycy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCiAKIG5hbWVz
cGFjZSBjcmlja2V0IHsKQEAgLTYyMyw3ICs2MjIsNyBAQCBib29sIFR1cm5Qb3J0OjpIYW5kbGVJ
bmNvbWluZ1BhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1l
JiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
NjRfdCBwYWNrZXRfdGltZV91cykgewogICBpZiAoc29ja2V0ICE9IHNvY2tldF8pIHsKICAgICAv
LyBUaGUgcGFja2V0IHdhcyByZWNlaXZlZCBvbiBhIHNoYXJlZCBzb2NrZXQgYWZ0ZXIgd2UndmUg
YWxsb2NhdGVkIGEgbmV3CiAgICAgLy8gc29ja2V0IGZvciB0aGlzIFRVUk4gcG9ydC4KQEAgLTY2
MCwxMiArNjU5LDEyIEBAIGJvb2wgVHVyblBvcnQ6OkhhbmRsZUluY29taW5nUGFja2V0KHJ0Yzo6
QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgLy8gYSByZXNwb25zZSB0byBhIHByZXZpb3Vz
IHJlcXVlc3QuCiAgIHVpbnQxNl90IG1zZ190eXBlID0gcnRjOjpHZXRCRTE2KGRhdGEpOwogICBp
ZiAoSXNUdXJuQ2hhbm5lbERhdGEobXNnX3R5cGUpKSB7Ci0gICAgSGFuZGxlQ2hhbm5lbERhdGEo
bXNnX3R5cGUsIGRhdGEsIHNpemUsIHBhY2tldF90aW1lKTsKKyAgICBIYW5kbGVDaGFubmVsRGF0
YShtc2dfdHlwZSwgZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWVfdXMpOwogICAgIHJldHVybiB0cnVl
OwogICB9CiAKICAgaWYgKG1zZ190eXBlID09IFRVUk5fREFUQV9JTkRJQ0FUSU9OKSB7Ci0gICAg
SGFuZGxlRGF0YUluZGljYXRpb24oZGF0YSwgc2l6ZSwgcGFja2V0X3RpbWUpOworICAgIEhhbmRs
ZURhdGFJbmRpY2F0aW9uKGRhdGEsIHNpemUsIHBhY2tldF90aW1lX3VzKTsKICAgICByZXR1cm4g
dHJ1ZTsKICAgfQogCkBAIC02OTYsOCArNjk1LDggQEAgdm9pZCBUdXJuUG9ydDo6T25SZWFkUGFj
a2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0
QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgewotICBIYW5kbGVJbmNvbWluZ1BhY2tldChz
b2NrZXQsIGRhdGEsIHNpemUsIHJlbW90ZV9hZGRyLCBwYWNrZXRfdGltZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpIHsKKyAgSGFu
ZGxlSW5jb21pbmdQYWNrZXQoc29ja2V0LCBkYXRhLCBzaXplLCByZW1vdGVfYWRkciwgcGFja2V0
X3RpbWVfdXMpOwogfQogCiB2b2lkIFR1cm5Qb3J0OjpPblNlbnRQYWNrZXQocnRjOjpBc3luY1Bh
Y2tldFNvY2tldCogc29ja2V0LApAQCAtOTMzLDcgKzkzMiw3IEBAIHZvaWQgVHVyblBvcnQ6Ok9u
QWxsb2NhdGVSZXF1ZXN0VGltZW91dCgpIHsKIAogdm9pZCBUdXJuUG9ydDo6SGFuZGxlRGF0YUlu
ZGljYXRpb24oY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICAvLyBSZWFkIGlu
IHRoZSBtZXNzYWdlLCBhbmQgcHJvY2VzcyBhY2NvcmRpbmcgdG8gUkZDNTc2NiwgU2VjdGlvbiAx
MC40LgogICBydGM6OkJ5dGVCdWZmZXJSZWFkZXIgYnVmKGRhdGEsIHNpemUpOwogICBUdXJuTWVz
c2FnZSBtc2c7CkBAIC05NzIsMTMgKzk3MSwxMyBAQCB2b2lkIFR1cm5Qb3J0OjpIYW5kbGVEYXRh
SW5kaWNhdGlvbihjb25zdCBjaGFyKiBkYXRhLAogICB9CiAKICAgRGlzcGF0Y2hQYWNrZXQoZGF0
YV9hdHRyLT5ieXRlcygpLCBkYXRhX2F0dHItPmxlbmd0aCgpLCBleHRfYWRkciwgUFJPVE9fVURQ
LAotICAgICAgICAgICAgICAgICBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgIHBhY2tl
dF90aW1lX3VzKTsKIH0KIAogdm9pZCBUdXJuUG9ydDo6SGFuZGxlQ2hhbm5lbERhdGEoaW50IGNo
YW5uZWxfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBk
YXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tl
dF90aW1lX3VzKSB7CiAgIC8vIFJlYWQgdGhlIG1lc3NhZ2UsIGFuZCBwcm9jZXNzIGFjY29yZGlu
ZyB0byBSRkM1NzY2LCBTZWN0aW9uIDExLjYuCiAgIC8vICAgIDAgICAgICAgICAgICAgICAgICAg
MSAgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgIDMKICAgLy8gICAgMCAxIDIg
MyA0IDUgNiA3IDggOSAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAx
CkBAIC0xMDE0LDE2ICsxMDEzLDE2IEBAIHZvaWQgVHVyblBvcnQ6OkhhbmRsZUNoYW5uZWxEYXRh
KGludCBjaGFubmVsX2lkLAogICB9CiAKICAgRGlzcGF0Y2hQYWNrZXQoZGF0YSArIFRVUk5fQ0hB
Tk5FTF9IRUFERVJfU0laRSwgbGVuLCBlbnRyeS0+YWRkcmVzcygpLAotICAgICAgICAgICAgICAg
ICBQUk9UT19VRFAsIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgUFJPVE9fVURQLCBw
YWNrZXRfdGltZV91cyk7CiB9CiAKIHZvaWQgVHVyblBvcnQ6OkRpc3BhdGNoUGFja2V0KGNvbnN0
IGNoYXIqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYg
cmVtb3RlX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFR5cGUg
cHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRp
bWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IHBhY2tldF90aW1lX3VzKSB7CiAgIGlmIChDb25uZWN0aW9uKiBjb25uID0gR2V0Q29ubmVjdGlv
bihyZW1vdGVfYWRkcikpIHsKLSAgICBjb25uLT5PblJlYWRQYWNrZXQoZGF0YSwgc2l6ZSwgcGFj
a2V0X3RpbWUpOworICAgIGNvbm4tPk9uUmVhZFBhY2tldChkYXRhLCBzaXplLCBwYWNrZXRfdGlt
ZV91cyk7CiAgIH0gZWxzZSB7CiAgICAgUG9ydDo6T25SZWFkUGFja2V0KGRhdGEsIHNpemUsIHJl
bW90ZV9hZGRyLCBwcm90byk7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5wb3J0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJucG9ydC5oCmluZGV4IDEx
YjU4ZDRmNmM5OWZhYTk0MjhiODI1YmFjNjdhZTg2M2NkMWQzYWEuLjVkYjE5NTZhOWIxYWZhN2Nh
NjQ3YzI2ZWIzMjBlNWY0YjM2YTk1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3R1cm5wb3J0LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVybnBvcnQuaApAQCAt
MTQsMTAgKzE0LDEyIEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxsaXN0PgogI2lu
Y2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUg
PHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1v
cnkuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wb3J0LmgiCiAjaW5jbHVkZSAicDJwL2NsaWVudC9i
YXNpY3BvcnRhbGxvY2F0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hc3luY2ludm9rZXIuaCIK
QEAgLTUwLDI1ICs1Miw0NCBAQCBjbGFzcyBUdXJuUG9ydCA6IHB1YmxpYyBQb3J0IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBwYWNrZXRzLgogICB9OwogICAvLyBDcmVhdGUgYSBUVVJO
IHBvcnQgdXNpbmcgdGhlIHNoYXJlZCBVRFAgc29ja2V0LCB8c29ja2V0fC4KLSAgc3RhdGljIFR1
cm5Qb3J0KiBDcmVhdGUocnRjOjpUaHJlYWQqIHRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdvcmssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLCAgLy8gaWNlIHVzZXJuYW1lLgotICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQsICAvLyBp
Y2UgcGFzc3dvcmQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByb3RvY29sQWRk
cmVzcyYgc2VydmVyX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJl
bGF5Q3JlZGVudGlhbHMmIGNyZWRlbnRpYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2VydmVyX3ByaW9yaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgb3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlR1cm5D
dXN0b21pemVyKiBjdXN0b21pemVyKSB7Ci0gICAgcmV0dXJuIG5ldyBUdXJuUG9ydCh0aHJlYWQs
IGZhY3RvcnksIG5ldHdvcmssIHNvY2tldCwgdXNlcm5hbWUsIHBhc3N3b3JkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgc2VydmVyX2FkZHJlc3MsIGNyZWRlbnRpYWxzLCBzZXJ2ZXJfcHJpb3Jp
dHksIG9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZXIpOworICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFR1cm5Qb3J0PiBDcmVhdGUoCisgICAgICBydGM6OlRocmVhZCog
dGhyZWFkLAorICAgICAgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAorICAgICAg
cnRjOjpOZXR3b3JrKiBuZXR3b3JrLAorICAgICAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogc29j
a2V0LAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLCAgLy8gaWNlIHVzZXJuYW1l
LgorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLCAgLy8gaWNlIHBhc3N3b3JkLgor
ICAgICAgY29uc3QgUHJvdG9jb2xBZGRyZXNzJiBzZXJ2ZXJfYWRkcmVzcywKKyAgICAgIGNvbnN0
IFJlbGF5Q3JlZGVudGlhbHMmIGNyZWRlbnRpYWxzLAorICAgICAgaW50IHNlcnZlcl9wcmlvcml0
eSwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4sCisgICAgICB3ZWJydGM6OlR1cm5D
dXN0b21pemVyKiBjdXN0b21pemVyKSB7CisgICAgLy8gVXNpbmcgYG5ld2AgdG8gYWNjZXNzIGEg
bm9uLXB1YmxpYyBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZShuZXcg
VHVyblBvcnQoCisgICAgICAgIHRocmVhZCwgZmFjdG9yeSwgbmV0d29yaywgc29ja2V0LCB1c2Vy
bmFtZSwgcGFzc3dvcmQsIHNlcnZlcl9hZGRyZXNzLAorICAgICAgICBjcmVkZW50aWFscywgc2Vy
dmVyX3ByaW9yaXR5LCBvcmlnaW4sIGN1c3RvbWl6ZXIpKTsKKyAgfQorICAvLyBUT0RPKHN0ZXZl
YW50b24pOiBSZW1vdmUgb25jZSBkb3duc3RyZWFtIGNsaWVudHMgaGF2ZSBtb3ZlZCB0byB8Q3Jl
YXRlfC4KKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUdXJuUG9ydD4gQ3JlYXRlVW5pcXVlKAor
ICAgICAgcnRjOjpUaHJlYWQqIHRocmVhZCwKKyAgICAgIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9y
eSogZmFjdG9yeSwKKyAgICAgIHJ0Yzo6TmV0d29yayogbmV0d29yaywKKyAgICAgIHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFt
ZSwgIC8vIGljZSB1c2VybmFtZS4KKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwg
IC8vIGljZSBwYXNzd29yZC4KKyAgICAgIGNvbnN0IFByb3RvY29sQWRkcmVzcyYgc2VydmVyX2Fk
ZHJlc3MsCisgICAgICBjb25zdCBSZWxheUNyZWRlbnRpYWxzJiBjcmVkZW50aWFscywKKyAgICAg
IGludCBzZXJ2ZXJfcHJpb3JpdHksCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAor
ICAgICAgd2VicnRjOjpUdXJuQ3VzdG9taXplciogY3VzdG9taXplcikgeworICAgIHJldHVybiBD
cmVhdGUodGhyZWFkLCBmYWN0b3J5LCBuZXR3b3JrLCBzb2NrZXQsIHVzZXJuYW1lLCBwYXNzd29y
ZCwKKyAgICAgICAgICAgICAgICAgIHNlcnZlcl9hZGRyZXNzLCBjcmVkZW50aWFscywgc2VydmVy
X3ByaW9yaXR5LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICBjdXN0b21pemVyKTsKICAgfQog
CiAgIC8vIENyZWF0ZSBhIFRVUk4gcG9ydCB0aGF0IHdpbGwgdXNlIGEgbmV3IHNvY2tldCwgYm91
bmQgdG8gfG5ldHdvcmt8IGFuZAogICAvLyB1c2luZyBhIHBvcnQgaW4gdGhlIHJhbmdlIGJldHdl
ZW4gfG1pbl9wb3J0fCBhbmQgfG1heF9wb3J0fC4KLSAgc3RhdGljIFR1cm5Qb3J0KiBDcmVhdGUo
CisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VHVyblBvcnQ+IENyZWF0ZSgKICAgICAgIHJ0Yzo6
VGhyZWFkKiB0aHJlYWQsCiAgICAgICBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIGZhY3Rvcnks
CiAgICAgICBydGM6Ok5ldHdvcmsqIG5ldHdvcmssCkBAIC04NCwxMCArMTA1LDM0IEBAIGNsYXNz
IFR1cm5Qb3J0IDogcHVibGljIFBvcnQgewogICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+JiB0bHNfZWxsaXB0aWNfY3VydmVzLAogICAgICAgd2VicnRjOjpUdXJuQ3VzdG9taXpl
ciogY3VzdG9taXplciwKICAgICAgIHJ0Yzo6U1NMQ2VydGlmaWNhdGVWZXJpZmllciogdGxzX2Nl
cnRfdmVyaWZpZXIgPSBudWxscHRyKSB7Ci0gICAgcmV0dXJuIG5ldyBUdXJuUG9ydCh0aHJlYWQs
IGZhY3RvcnksIG5ldHdvcmssIG1pbl9wb3J0LCBtYXhfcG9ydCwgdXNlcm5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBwYXNzd29yZCwgc2VydmVyX2FkZHJlc3MsIGNyZWRlbnRpYWxzLCBz
ZXJ2ZXJfcHJpb3JpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4sIHRsc19hbHBu
X3Byb3RvY29scywgdGxzX2VsbGlwdGljX2N1cnZlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGN1c3RvbWl6ZXIsIHRsc19jZXJ0X3ZlcmlmaWVyKTsKKyAgICAvLyBVc2luZyBgbmV3YCB0byBh
Y2Nlc3MgYSBub24tcHVibGljIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiBhYnNsOjpXcmFwVW5p
cXVlKAorICAgICAgICBuZXcgVHVyblBvcnQodGhyZWFkLCBmYWN0b3J5LCBuZXR3b3JrLCBtaW5f
cG9ydCwgbWF4X3BvcnQsIHVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQs
IHNlcnZlcl9hZGRyZXNzLCBjcmVkZW50aWFscywgc2VydmVyX3ByaW9yaXR5LAorICAgICAgICAg
ICAgICAgICAgICAgb3JpZ2luLCB0bHNfYWxwbl9wcm90b2NvbHMsIHRsc19lbGxpcHRpY19jdXJ2
ZXMsCisgICAgICAgICAgICAgICAgICAgICBjdXN0b21pemVyLCB0bHNfY2VydF92ZXJpZmllcikp
OworICB9CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92ZSBvbmNlIGRvd25zdHJlYW0gY2xp
ZW50cyBoYXZlIG1vdmVkIHRvIHxDcmVhdGV8LgorICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFR1
cm5Qb3J0PiBDcmVhdGVVbmlxdWUoCisgICAgICBydGM6OlRocmVhZCogdGhyZWFkLAorICAgICAg
cnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBmYWN0b3J5LAorICAgICAgcnRjOjpOZXR3b3JrKiBu
ZXR3b3JrLAorICAgICAgdWludDE2X3QgbWluX3BvcnQsCisgICAgICB1aW50MTZfdCBtYXhfcG9y
dCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwgIC8vIGljZSB1c2VybmFtZS4K
KyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXNzd29yZCwgIC8vIGljZSBwYXNzd29yZC4KKyAg
ICAgIGNvbnN0IFByb3RvY29sQWRkcmVzcyYgc2VydmVyX2FkZHJlc3MsCisgICAgICBjb25zdCBS
ZWxheUNyZWRlbnRpYWxzJiBjcmVkZW50aWFscywKKyAgICAgIGludCBzZXJ2ZXJfcHJpb3JpdHks
CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luLAorICAgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+JiB0bHNfYWxwbl9wcm90b2NvbHMsCisgICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4mIHRsc19lbGxpcHRpY19jdXJ2ZXMsCisgICAgICB3ZWJydGM6OlR1
cm5DdXN0b21pemVyKiBjdXN0b21pemVyLAorICAgICAgcnRjOjpTU0xDZXJ0aWZpY2F0ZVZlcmlm
aWVyKiB0bHNfY2VydF92ZXJpZmllciA9IG51bGxwdHIpIHsKKyAgICByZXR1cm4gQ3JlYXRlKHRo
cmVhZCwgZmFjdG9yeSwgbmV0d29yaywgbWluX3BvcnQsIG1heF9wb3J0LCB1c2VybmFtZSwKKyAg
ICAgICAgICAgICAgICAgIHBhc3N3b3JkLCBzZXJ2ZXJfYWRkcmVzcywgY3JlZGVudGlhbHMsIHNl
cnZlcl9wcmlvcml0eSwKKyAgICAgICAgICAgICAgICAgIG9yaWdpbiwgdGxzX2FscG5fcHJvdG9j
b2xzLCB0bHNfZWxsaXB0aWNfY3VydmVzLCBjdXN0b21pemVyLAorICAgICAgICAgICAgICAgICAg
dGxzX2NlcnRfdmVyaWZpZXIpOwogICB9CiAKICAgflR1cm5Qb3J0KCkgb3ZlcnJpZGU7CkBAIC0x
MzAsMTMgKzE3NSwxNCBAQCBjbGFzcyBUdXJuUG9ydCA6IHB1YmxpYyBQb3J0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgb3ZlcnJpZGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgb3ZlcnJpZGU7
CiAgIGJvb2wgQ2FuSGFuZGxlSW5jb21pbmdQYWNrZXRzRnJvbSgKICAgICAgIGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYgYWRkcikgY29uc3Qgb3ZlcnJpZGU7CiAgIHZpcnR1YWwgdm9pZCBPblJl
YWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAKICAgdm9pZCBPblNl
bnRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBydGM6OlNlbnRQYWNrZXQmIHNlbnRfcGFja2V0KSBvdmVycmlkZTsKQEAgLTI2
OCwxMyArMzE0LDE4IEBAIGNsYXNzIFR1cm5Qb3J0IDogcHVibGljIFBvcnQgewogICB2b2lkIE9u
QWxsb2NhdGVFcnJvcigpOwogICB2b2lkIE9uQWxsb2NhdGVSZXF1ZXN0VGltZW91dCgpOwogCi0g
IHZvaWQgSGFuZGxlRGF0YUluZGljYXRpb24oY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNr
ZXRfdGltZSk7Ci0gIHZvaWQgSGFuZGxlQ2hhbm5lbERhdGEoaW50IGNoYW5uZWxfaWQsIGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOwotICB2b2lkIERpc3BhdGNoUGFja2V0KGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplLAotICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRy
ZXNzJiByZW1vdGVfYWRkciwKLSAgICAgIFByb3RvY29sVHlwZSBwcm90bywgY29uc3QgcnRjOjpQ
YWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgIHZvaWQgSGFuZGxlRGF0YUluZGljYXRpb24oY29u
c3QgY2hhciogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKTsKKyAg
dm9pZCBIYW5kbGVDaGFubmVsRGF0YShpbnQgY2hhbm5lbF9pZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMp
OworICB2b2lkIERpc3BhdGNoUGFja2V0KGNvbnN0IGNoYXIqIGRhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpT
b2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICBQcm90b2Nv
bFR5cGUgcHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91
cyk7CiAKICAgYm9vbCBTY2hlZHVsZVJlZnJlc2godWludDMyX3QgbGlmZXRpbWUpOwogICB2b2lk
IFNlbmRSZXF1ZXN0KFN0dW5SZXF1ZXN0KiByZXF1ZXN0LCBpbnQgZGVsYXkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdHVy
bnBvcnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wMnAvYmFzZS90dXJucG9ydF91bml0dGVzdC5jYwppbmRleCBiYWMzNWU4OTFjZDQ5ZGNk
ZTBjYTM2OTQxY2NjYjZiYzg5ZTJiMDQxLi42MTdlNzc5OGFkZjUzZmFlNTQ0ZTAwYzE5YzQ0NDYx
MWNjOWRjMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wMnAvYmFzZS90dXJucG9ydF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90dXJucG9ydF91bml0dGVzdC5j
YwpAQCAtMTk0LDIzICsxOTQsMjMgQEAgY2xhc3MgVHVyblBvcnRUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QsCiAgIHZvaWQgT25UdXJuUmVhZFBhY2tldChDb25uZWN0aW9uKiBjb25uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQ
YWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBwYWNrZXRfdGltZV91cykgewogICAgIHR1cm5fcGFja2V0c18ucHVzaF9iYWNrKHJ0Yzo6QnVm
ZmVyKGRhdGEsIHNpemUpKTsKICAgfQogICB2b2lkIE9uVWRwUG9ydENvbXBsZXRlKFBvcnQqIHBv
cnQpIHsgdWRwX3JlYWR5XyA9IHRydWU7IH0KICAgdm9pZCBPblVkcFJlYWRQYWNrZXQoQ29ubmVj
dGlvbiogY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgewogICAgIHVkcF9wYWNrZXRzXy5wdXNoX2Jh
Y2socnRjOjpCdWZmZXIoZGF0YSwgc2l6ZSkpOwogICB9CiAgIHZvaWQgT25Tb2NrZXRSZWFkUGFj
a2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVz
cyYgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFj
a2V0VGltZSYgcGFja2V0X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW50NjRfdCYgcGFja2V0X3RpbWVfdXMpIHsKICAgICB0dXJuX3BvcnRfLT5IYW5kbGVJbmNvbWlu
Z1BhY2tldChzb2NrZXQsIGRhdGEsIHNpemUsIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYWNrZXRfdGltZV91cyk7CiAgIH0KICAgdm9pZCBPblR1cm5Qb3J0
Q2xvc2VkKFR1cm5Qb3J0KiBwb3J0KSB7IHR1cm5fcG9ydF9jbG9zZWRfID0gdHJ1ZTsgfQogICB2
b2lkIE9uVHVyblBvcnREZXN0cm95ZWQoUG9ydEludGVyZmFjZSogcG9ydCkgeyB0dXJuX3BvcnRf
ZGVzdHJveWVkXyA9IHRydWU7IH0KQEAgLTI3MCwxMCArMjcwLDkgQEAgY2xhc3MgVHVyblBvcnRU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFByb3RvY29sQWRkcmVzcyYgc2VydmVyX2FkZHJlc3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvcmlnaW4pIHsKICAg
ICBSZWxheUNyZWRlbnRpYWxzIGNyZWRlbnRpYWxzKHVzZXJuYW1lLCBwYXNzd29yZCk7Ci0gICAg
dHVybl9wb3J0Xy5yZXNldChUdXJuUG9ydDo6Q3JlYXRlKAorICAgIHR1cm5fcG9ydF8gPSBUdXJu
UG9ydDo6Q3JlYXRlKAogICAgICAgICAmbWFpbl8sICZzb2NrZXRfZmFjdG9yeV8sIG5ldHdvcmss
IDAsIDAsIGtJY2VVZnJhZzEsIGtJY2VQd2QxLAotICAgICAgICBzZXJ2ZXJfYWRkcmVzcywgY3Jl
ZGVudGlhbHMsIDAsIG9yaWdpbiwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCksCi0gICAgICAg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpLCB0dXJuX2N1c3RvbWl6ZXJfLmdldCgpKSk7Cisg
ICAgICAgIHNlcnZlcl9hZGRyZXNzLCBjcmVkZW50aWFscywgMCwgb3JpZ2luLCB7fSwge30sIHR1
cm5fY3VzdG9taXplcl8uZ2V0KCkpOwogICAgIC8vIFRoaXMgVFVSTiBwb3J0IHdpbGwgYmUgdGhl
IGNvbnRyb2xsaW5nLgogICAgIHR1cm5fcG9ydF8tPlNldEljZVJvbGUoSUNFUk9MRV9DT05UUk9M
TElORyk7CiAgICAgQ29ubmVjdFNpZ25hbHMoKTsKQEAgLTMwMSwxMCArMzAwLDEwIEBAIGNsYXNz
IFR1cm5Qb3J0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgIH0KIAogICAgIFJlbGF5
Q3JlZGVudGlhbHMgY3JlZGVudGlhbHModXNlcm5hbWUsIHBhc3N3b3JkKTsKLSAgICB0dXJuX3Bv
cnRfLnJlc2V0KFR1cm5Qb3J0OjpDcmVhdGUoJm1haW5fLCAmc29ja2V0X2ZhY3RvcnlfLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlTmV0d29yayhrTG9jYWxBZGRy
MSksIHNvY2tldF8uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtJY2VVZnJhZzEsIGtJY2VQd2QxLCBzZXJ2ZXJfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbHMsIDAsIHN0ZDo6c3RyaW5nKCksIG51bGxw
dHIpKTsKKyAgICB0dXJuX3BvcnRfID0KKyAgICAgICAgVHVyblBvcnQ6OkNyZWF0ZSgmbWFpbl8s
ICZzb2NrZXRfZmFjdG9yeV8sIE1ha2VOZXR3b3JrKGtMb2NhbEFkZHIxKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBzb2NrZXRfLmdldCgpLCBrSWNlVWZyYWcxLCBrSWNlUHdkMSwgc2VydmVy
X2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbHMsIDAsIHN0ZDo6
c3RyaW5nKCksIG51bGxwdHIpOwogICAgIC8vIFRoaXMgVFVSTiBwb3J0IHdpbGwgYmUgdGhlIGNv
bnRyb2xsaW5nLgogICAgIHR1cm5fcG9ydF8tPlNldEljZVJvbGUoSUNFUk9MRV9DT05UUk9MTElO
Ryk7CiAgICAgQ29ubmVjdFNpZ25hbHMoKTsKQEAgLTMyOSw5ICszMjgsOSBAQCBjbGFzcyBUdXJu
UG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKICAgdm9pZCBDcmVhdGVVZHBQb3J0KCkg
eyBDcmVhdGVVZHBQb3J0KGtMb2NhbEFkZHIyKTsgfQogCiAgIHZvaWQgQ3JlYXRlVWRwUG9ydChj
b25zdCBTb2NrZXRBZGRyZXNzJiBhZGRyZXNzKSB7Ci0gICAgdWRwX3BvcnRfLnJlc2V0KFVEUFBv
cnQ6OkNyZWF0ZSgKLSAgICAgICAgJm1haW5fLCAmc29ja2V0X2ZhY3RvcnlfLCBNYWtlTmV0d29y
ayhhZGRyZXNzKSwgMCwgMCwga0ljZVVmcmFnMiwKLSAgICAgICAga0ljZVB3ZDIsIHN0ZDo6c3Ry
aW5nKCksIGZhbHNlLCBhYnNsOjpudWxsb3B0KSk7CisgICAgdWRwX3BvcnRfID0gVURQUG9ydDo6
Q3JlYXRlKCZtYWluXywgJnNvY2tldF9mYWN0b3J5XywgTWFrZU5ldHdvcmsoYWRkcmVzcyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIGtJY2VVZnJhZzIsIGtJY2VQd2Qy
LCBzdGQ6OnN0cmluZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwg
YWJzbDo6bnVsbG9wdCk7CiAgICAgLy8gVURQIHBvcnQgd2lsbCBiZSBjb250cm9sbGVkLgogICAg
IHVkcF9wb3J0Xy0+U2V0SWNlUm9sZShJQ0VST0xFX0NPTlRST0xMRUQpOwogICAgIHVkcF9wb3J0
Xy0+U2lnbmFsUG9ydENvbXBsZXRlLmNvbm5lY3QodGhpcywKQEAgLTEwMzIsOCArMTAzMSw3IEBA
IFRFU1RfRihUdXJuUG9ydFRlc3QsIFRlc3RUdXJuQWxsb2NhdGVNaXNtYXRjaCkgewogICBzdGQ6
OnN0cmluZyB0ZXN0X3BhY2tldCA9ICJUZXN0IHBhY2tldCI7CiAgIEVYUEVDVF9GQUxTRSh0dXJu
X3BvcnRfLT5IYW5kbGVJbmNvbWluZ1BhY2tldCgKICAgICAgIHNvY2tldF8uZ2V0KCksIHRlc3Rf
cGFja2V0LmRhdGEoKSwgdGVzdF9wYWNrZXQuc2l6ZSgpLAotICAgICAgcnRjOjpTb2NrZXRBZGRy
ZXNzKGtUdXJuVWRwRXh0QWRkci5pcGFkZHIoKSwgMCksCi0gICAgICBydGM6OkNyZWF0ZVBhY2tl
dFRpbWUoMCkpKTsKKyAgICAgIHJ0Yzo6U29ja2V0QWRkcmVzcyhrVHVyblVkcEV4dEFkZHIuaXBh
ZGRyKCksIDApLCBydGM6OlRpbWVNaWNyb3MoKSkpOwogfQogCiAvLyBUZXN0cyB0aGF0IGEgc2hh
cmVkLXNvY2tldC1UdXJuUG9ydCBjcmVhdGVzIGl0cyBvd24gc29ja2V0IGFmdGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90
dXJuc2VydmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvdHVybnNlcnZlci5jYwppbmRleCAwMjIxMTNlN2U3NDZhMGM1OTA3NmI4YjA2MmNi
MzEwOTkyYTk0ZTMwLi5hOGJiNDFjODdhNmFjYWQyZTI4NGFhNzgzMTAxNTM3Zjc3NzRmZmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
YmFzZS90dXJuc2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIuY2MKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2Vz
dC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdf
YnVpbGRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogCkBAIC0xOTksOSArMTk4
LDEwIEBAIHZvaWQgVHVyblNlcnZlcjo6T25JbnRlcm5hbFNvY2tldENsb3NlKHJ0Yzo6QXN5bmNQ
YWNrZXRTb2NrZXQqIHNvY2tldCwKIH0KIAogdm9pZCBUdXJuU2VydmVyOjpPbkludGVybmFsUGFj
a2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFj
a2V0X3RpbWVfdXMgKi8pIHsKICAgUlRDX0RDSEVDSyh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25W
YWxpZFRocmVhZCgpKTsKICAgLy8gRmFpbCBpZiB0aGUgcGFja2V0IGlzIHRvbyBzbWFsbCB0byBl
dmVuIGNvbnRhaW4gYSBjaGFubmVsIGhlYWRlci4KICAgaWYgKHNpemUgPCBUVVJOX0NIQU5ORUxf
SEVBREVSX1NJWkUpIHsKQEAgLTg0Miw5ICs4NDIsMTAgQEAgdm9pZCBUdXJuU2VydmVyQWxsb2Nh
dGlvbjo6SGFuZGxlQ2hhbm5lbERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsK
IAogdm9pZCBUdXJuU2VydmVyQWxsb2NhdGlvbjo6T25FeHRlcm5hbFBhY2tldCgKICAgICBydGM6
OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0gICAgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUsCisgICAgY29uc3QgY2hhciogZGF0YSwKKyAgICBzaXplX3Qgc2l6ZSwKICAgICBjb25z
dCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHIsCi0gICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBw
YWNrZXRfdGltZSkgeworICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90aW1lX3VzICovKSB7
CiAgIFJUQ19EQ0hFQ0soZXh0ZXJuYWxfc29ja2V0Xy5nZXQoKSA9PSBzb2NrZXQpOwogICBDaGFu
bmVsKiBjaGFubmVsID0gRmluZENoYW5uZWwoYWRkcik7CiAgIGlmIChjaGFubmVsKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFz
ZS90dXJuc2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wMnAvYmFzZS90dXJuc2VydmVyLmgKaW5kZXggZTdmODg2Y2Y4ZmI1NTNkZTM0OTRjYmU3Mjgx
M2E5ZDg4ZDNmOTg0Yi4uYWY1MTI1MWJiY2QwY2YwMzk4NGYwMzFiYjI3Mjg5N2UzNDNlNDM5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJw
L2Jhc2UvdHVybnNlcnZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3AycC9iYXNlL3R1cm5zZXJ2ZXIuaApAQCAtMTA1LDkgKzEwNSwxMCBAQCBjbGFz
cyBUdXJuU2VydmVyQWxsb2NhdGlvbiA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAogICB2
b2lkIEhhbmRsZUNoYW5uZWxCaW5kUmVxdWVzdChjb25zdCBUdXJuTWVzc2FnZSogbXNnKTsKIAog
ICB2b2lkIE9uRXh0ZXJuYWxQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlNvY2tldEFkZHJlc3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsKIAogICBzdGF0aWMgaW50IENvbXB1dGVMaWZldGlt
ZShjb25zdCBUdXJuTWVzc2FnZSogbXNnKTsKICAgYm9vbCBIYXNQZXJtaXNzaW9uKGNvbnN0IHJ0
Yzo6SVBBZGRyZXNzJiBhZGRyKTsKQEAgLTI1Niw5ICsyNTcsMTEgQEAgY2xhc3MgVHVyblNlcnZl
ciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAKICBwcml2YXRlOgogICBzdGQ6OnN0
cmluZyBHZW5lcmF0ZU5vbmNlKGludDY0X3Qgbm93KSBjb25zdDsKLSAgdm9pZCBPbkludGVybmFs
UGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwgY29uc3QgY2hhciogZGF0YSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBjb25zdCBydGM6OlNvY2tldEFk
ZHJlc3MmIGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tl
dFRpbWUmIHBhY2tldF90aW1lKTsKKyAgdm9pZCBPbkludGVybmFsUGFja2V0KHJ0Yzo6QXN5bmNQ
YWNrZXRTb2NrZXQqIHNvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsKIAogICB2b2lk
IE9uTmV3SW50ZXJuYWxDb25uZWN0aW9uKHJ0Yzo6QXN5bmNTb2NrZXQqIHNvY2tldCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9i
YXNlL3VkcHRyYW5zcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3AycC9iYXNlL3VkcHRyYW5zcG9ydC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzIxZTViODc2OWVlNmRjNjZmNWEzYjcyNGIzN2Y4MzA0ZTExMDI2ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS91ZHB0cmFuc3BvcnQuY2MKKysrIC9kZXYv
bnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxNiBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgInAy
cC9iYXNlL3VkcHRyYW5zcG9ydC5oIgotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0
aWxpdHk+ICAvLyBGb3Igc3RkOjptb3ZlLgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNwYWNr
ZXRzb2NrZXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9hc3luY3VkcHNvY2tldC5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9uZXRoZWxwZXIuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
dGhyZWFkLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKLQotbmFtZXNw
YWNlIGNyaWNrZXQgewotCi1VZHBUcmFuc3BvcnQ6OlVkcFRyYW5zcG9ydChjb25zdCBzdGQ6OnN0
cmluZyYgdHJhbnNwb3J0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4gc29ja2V0KQotICAgIDogdHJhbnNwb3J0
X25hbWVfKHRyYW5zcG9ydF9uYW1lKSwgc29ja2V0XyhzdGQ6Om1vdmUoc29ja2V0KSkgewotICBS
VENfRENIRUNLKHNvY2tldF8pOwotICBzb2NrZXRfLT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3Qo
dGhpcywgJlVkcFRyYW5zcG9ydDo6T25Tb2NrZXRSZWFkUGFja2V0KTsKLSAgc29ja2V0Xy0+U2ln
bmFsU2VudFBhY2tldC5jb25uZWN0KHRoaXMsICZVZHBUcmFuc3BvcnQ6Ok9uU29ja2V0U2VudFBh
Y2tldCk7Ci19Ci0KLVVkcFRyYW5zcG9ydDo6flVkcFRyYW5zcG9ydCgpIHsKLSAgUlRDX0RDSEVD
S19SVU5fT04oJm5ldHdvcmtfdGhyZWFkX2NoZWNrZXJfKTsKLX0KLQotcnRjOjpTb2NrZXRBZGRy
ZXNzIFVkcFRyYW5zcG9ydDo6R2V0TG9jYWxBZGRyZXNzKCkgY29uc3QgewotICBSVENfRENIRUNL
X1JVTl9PTigmbmV0d29ya190aHJlYWRfY2hlY2tlcl8pOwotICByZXR1cm4gc29ja2V0Xy0+R2V0
TG9jYWxBZGRyZXNzKCk7Ci19Ci0KLWJvb2wgVWRwVHJhbnNwb3J0OjpTZXRSZW1vdGVBZGRyZXNz
KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcikgewotICBSVENfRENIRUNLX1JVTl9PTigm
bmV0d29ya190aHJlYWRfY2hlY2tlcl8pOwotICBpZiAoIWFkZHIuSXNDb21wbGV0ZSgpKSB7Ci0g
ICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiUmVtb3RlIGFkZHJlc3Mgbm90IGNvbXBsZXRlLiI7
Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIC8vIFRPRE8oam9oYW4pOiBjaGVjayBmb3IgaXB2
NCwgb3RoZXIgc2V0dGluZ3MuCi0gIGJvb2wgcHJldl9kZXN0aW5hdGlvbl9uaWwgPSByZW1vdGVf
YWRkcmVzc18uSXNOaWwoKTsKLSAgcmVtb3RlX2FkZHJlc3NfID0gYWRkcjsKLSAgLy8gR29pbmcg
ZnJvbSAiZGlkbid0IGhhdmUgZGVzdGluYXRpb24iIHRvICJoYXZlIGRlc3RpbmF0aW9uIiBvciB2
aWNlIHZlcnNhLgotICBpZiAocHJldl9kZXN0aW5hdGlvbl9uaWwgIT0gcmVtb3RlX2FkZHJlc3Nf
LklzTmlsKCkpIHsKLSAgICBTaWduYWxXcml0YWJsZVN0YXRlKHRoaXMpOwotICAgIGlmIChwcmV2
X2Rlc3RpbmF0aW9uX25pbCkgewotICAgICAgU2lnbmFsUmVhZHlUb1NlbmQodGhpcyk7Ci0gICAg
fQotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi1ydGM6OlNvY2tldEFkZHJlc3MgVWRwVHJhbnNw
b3J0OjpHZXRSZW1vdGVBZGRyZXNzKCkgY29uc3QgewotICBSVENfRENIRUNLX1JVTl9PTigmbmV0
d29ya190aHJlYWRfY2hlY2tlcl8pOwotICByZXR1cm4gcmVtb3RlX2FkZHJlc3NfOwotfQotCi1j
b25zdCBzdGQ6OnN0cmluZyYgVWRwVHJhbnNwb3J0Ojp0cmFuc3BvcnRfbmFtZSgpIGNvbnN0IHsK
LSAgcmV0dXJuIHRyYW5zcG9ydF9uYW1lXzsKLX0KLQotYm9vbCBVZHBUcmFuc3BvcnQ6OnJlY2Vp
dmluZygpIGNvbnN0IHsKLSAgLy8gVE9ETyhqb2hhbik6IEltcGxlbWVudCBtZXRob2QgYW5kIHNp
Z25hbC4KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVWRwVHJhbnNwb3J0Ojp3cml0YWJsZSgp
IGNvbnN0IHsKLSAgUlRDX0RDSEVDS19SVU5fT04oJm5ldHdvcmtfdGhyZWFkX2NoZWNrZXJfKTsK
LSAgcmV0dXJuICFyZW1vdGVfYWRkcmVzc18uSXNOaWwoKTsKLX0KLQotaW50IFVkcFRyYW5zcG9y
dDo6U2VuZFBhY2tldChjb25zdCBjaGFyKiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlBhY2tldE9wdGlvbnMmIG9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBmbGFncykgewotICAvLyBObyB0aHJlYWRfY2hlY2tlciBpbiBoaWdoIGZyZXF1ZW5jeSBuZXR3
b3JrIGZ1bmN0aW9uLgotICBpZiAocmVtb3RlX2FkZHJlc3NfLklzTmlsKCkpIHsKLSAgICBSVENf
TE9HKExTX1dBUk5JTkcpIDw8ICJSZW1vdGUgYWRkcmVzcyBub3Qgc2V0LiI7Ci0gICAgc2VuZF9l
cnJvcl8gPSBFTk9UQ09OTjsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgaW50IHJlc3VsdCA9Ci0g
ICAgICBzb2NrZXRfLT5TZW5kVG8oKGNvbnN0IHZvaWQqKWRhdGEsIGxlbiwgcmVtb3RlX2FkZHJl
c3NfLCBvcHRpb25zKTsKLSAgaWYgKHJlc3VsdCA8PSAwKSB7Ci0gICAgUlRDX0xPRyhMU19WRVJC
T1NFKSA8PCAiU2VuZFBhY2tldCgpICIgPDwgcmVzdWx0OwotICB9Ci0gIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWFic2w6Om9wdGlvbmFsPHJ0Yzo6TmV0d29ya1JvdXRlPiBVZHBUcmFuc3BvcnQ6Om5l
dHdvcmtfcm91dGUoKSBjb25zdCB7Ci0gIHJ0Yzo6TmV0d29ya1JvdXRlIG5ldHdvcmtfcm91dGU7
Ci0gIG5ldHdvcmtfcm91dGUucGFja2V0X292ZXJoZWFkID0KLSAgICAgIC8qa1VkcE92ZXJoZWFk
PSovOCArIEdldElwT3ZlcmhlYWQoR2V0TG9jYWxBZGRyZXNzKCkuZmFtaWx5KCkpOwotICByZXR1
cm4gYWJzbDo6b3B0aW9uYWw8cnRjOjpOZXR3b3JrUm91dGU+KG5ldHdvcmtfcm91dGUpOwotfQot
Ci1pbnQgVWRwVHJhbnNwb3J0OjpTZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9wdGlvbiBvcHQsIGlu
dCB2YWx1ZSkgewotICByZXR1cm4gMDsKLX0KLQotaW50IFVkcFRyYW5zcG9ydDo6R2V0RXJyb3Io
KSB7Ci0gIHJldHVybiBzZW5kX2Vycm9yXzsKLX0KLQotcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRl
cm5hbCogVWRwVHJhbnNwb3J0OjpHZXRJbnRlcm5hbCgpIHsKLSAgcmV0dXJuIHRoaXM7Ci19Ci0K
LXZvaWQgVWRwVHJhbnNwb3J0OjpPblNvY2tldFJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNv
Y2tldCogc29ja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7Ci0gIC8vIE5v
IHRocmVhZF9jaGVja2VyIGluIGhpZ2ggZnJlcXVlbmN5IG5ldHdvcmsgZnVuY3Rpb24uCi0gIFNp
Z25hbFJlYWRQYWNrZXQodGhpcywgZGF0YSwgbGVuLCBwYWNrZXRfdGltZSwgMCk7Ci19Ci0KLXZv
aWQgVWRwVHJhbnNwb3J0OjpPblNvY2tldFNlbnRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tl
dCogc29ja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBy
dGM6OlNlbnRQYWNrZXQmIHBhY2tldCkgewotICBSVENfRENIRUNLX0VRKHNvY2tldF8uZ2V0KCks
IHNvY2tldCk7Ci0gIFNpZ25hbFNlbnRQYWNrZXQodGhpcywgcGFja2V0KTsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlIGNyaWNrZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3VkcHRyYW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJhbnNwb3J0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2YTc5NWYyZTFmOWE1MDQxMTQ2ZjhhOWFhZGJjNmQ2
OTkwMjZlNGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJh
bnNwb3J0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogIENvcHlyaWdo
dCAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAq
LwotCi0jaWZuZGVmIFAyUF9CQVNFX1VEUFRSQU5TUE9SVF9IXwotI2RlZmluZSBQMlBfQkFTRV9V
RFBUUkFOU1BPUlRfSF8KLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0K
LSNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCi0jaW5jbHVkZSAiYXBpL29ydGMvdWRw
dHJhbnNwb3J0aW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAicDJwL2Jhc2UvcGFja2V0dHJhbnNwb3J0
aW50ZXJuYWwuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oIiAgLy8g
Rm9yIFBhY2tldE9wdGlvbnMuCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIK
LQotbmFtZXNwYWNlIHJ0YyB7Ci1jbGFzcyBBc3luY1BhY2tldFNvY2tldDsKLXN0cnVjdCBQYWNr
ZXRUaW1lOwotc3RydWN0IFNlbnRQYWNrZXQ7Ci1jbGFzcyBTb2NrZXRBZGRyZXNzOwotfSAgLy8g
bmFtZXNwYWNlIHJ0YwotCi1uYW1lc3BhY2UgY3JpY2tldCB7Ci0KLS8vIEltcGxlbWVudGF0aW9u
IG9mIFVkcFRyYW5zcG9ydEludGVyZmFjZS4KLS8vIFVzZWQgYnkgT3J0Y0ZhY3RvcnkuCi1jbGFz
cyBVZHBUcmFuc3BvcnQgOiBwdWJsaWMgcnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCwKLSAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyB3ZWJydGM6OlVkcFRyYW5zcG9ydEludGVyZmFjZSB7
Ci0gcHVibGljOgotICAvLyB8dHJhbnNwb3J0X25hbWV8IGlzIG9ubHkgdXNlZCBmb3IgaWRlbnRp
ZmljYXRpb24vbG9nZ2luZy4KLSAgLy8gfHNvY2tldHwgbXVzdCBiZSBub24tbnVsbC4KLSAgVWRw
VHJhbnNwb3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSwKLSAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQpOwotICB+
VWRwVHJhbnNwb3J0KCkgb3ZlcnJpZGU7Ci0KLSAgLy8gT3ZlcnJpZGVzIG9mIFVkcFRyYW5zcG9y
dEludGVyZmFjZSwgdXNlZCBieSB0aGUgQVBJIGNvbnN1bWVyLgotICBydGM6OlNvY2tldEFkZHJl
c3MgR2V0TG9jYWxBZGRyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gIGJvb2wgU2V0UmVtb3RlQWRk
cmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHIpIG92ZXJyaWRlOwotICBydGM6OlNv
Y2tldEFkZHJlc3MgR2V0UmVtb3RlQWRkcmVzcygpIGNvbnN0IG92ZXJyaWRlOwotCi0gIC8vIE92
ZXJyaWRlcyBvZiBQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCwgdXNlZCBieSB3ZWJydGMgaW50ZXJu
YWxseS4KLSAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9uYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0KLSAgYm9vbCByZWNlaXZpbmcoKSBjb25zdCBvdmVycmlkZTsKLQotICBib29sIHdyaXRh
YmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgaW50IFNlbmRQYWNrZXQoY29uc3QgY2hhciogZGF0
YSwKLSAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpQYWNrZXRPcHRpb25zJiBvcHRpb25zLAotICAgICAgICAgICAgICAgICBpbnQgZmxhZ3Mp
IG92ZXJyaWRlOwotCi0gIGludCBTZXRPcHRpb24ocnRjOjpTb2NrZXQ6Ok9wdGlvbiBvcHQsIGlu
dCB2YWx1ZSkgb3ZlcnJpZGU7Ci0KLSAgaW50IEdldEVycm9yKCkgb3ZlcnJpZGU7Ci0KLSAgYWJz
bDo6b3B0aW9uYWw8cnRjOjpOZXR3b3JrUm91dGU+IG5ldHdvcmtfcm91dGUoKSBjb25zdCBvdmVy
cmlkZTsKLQotIHByb3RlY3RlZDoKLSAgUGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIEdldEludGVy
bmFsKCkgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICB2b2lkIE9uU29ja2V0UmVhZFBhY2tldChy
dGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVt
b3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGlt
ZSYgcGFja2V0X3RpbWUpOwotICB2b2lkIE9uU29ja2V0U2VudFBhY2tldChydGM6OkFzeW5jUGFj
a2V0U29ja2V0KiBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
U2VudFBhY2tldCYgcGFja2V0KTsKLSAgYm9vbCBJc0xvY2FsQ29uc2lzdGVudCgpOwotCi0gIHN0
ZDo6c3RyaW5nIHRyYW5zcG9ydF9uYW1lXzsKLSAgaW50IHNlbmRfZXJyb3JfID0gMDsKLSAgc3Rk
Ojp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNvY2tldF87Ci0gIC8vIElmIG5v
dCBzZXQsIHdpbGwgYmUgYW4gIm5pbCIgYWRkcmVzcyAoIklzTmlsIiByZXR1cm5zIHRydWUpLgot
ICBydGM6OlNvY2tldEFkZHJlc3MgcmVtb3RlX2FkZHJlc3NfOwotICBydGM6OlRocmVhZENoZWNr
ZXIgbmV0d29ya190aHJlYWRfY2hlY2tlcl87Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgY3JpY2tl
dAotCi0jZW5kaWYgIC8vIFAyUF9CQVNFX1VEUFRSQU5TUE9SVF9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2Jhc2UvdWRwdHJhbnNw
b3J0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcDJwL2Jhc2UvdWRwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlYWQzNjY1OTVmNDE2YjgyY2EyMmUxYmRhZDg5MGJhNzg1N2RmYmRkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3VkcHRyYW5zcG9ydF91bml0dGVz
dC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAy
MDE2IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwot
Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8bWVtb3J5
PgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAicDJw
L2Jhc2UvYmFzaWNwYWNrZXRzb2NrZXRmYWN0b3J5LmgiCi0jaW5jbHVkZSAicDJwL2Jhc2UvcGFj
a2V0dHJhbnNwb3J0aW50ZXJuYWwuaCIKLSNpbmNsdWRlICJwMnAvYmFzZS91ZHB0cmFuc3BvcnQu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL2d1bml0LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvaXBhZGRyZXNzLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldHNl
cnZlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuaCIKLQotbmFtZXNwYWNlIGNyaWNrZXQgewotCi1jb25zdGV4
cHIgaW50IGtUaW1lb3V0TXMgPSAxMDAwMDsKLXN0YXRpYyBjb25zdCBydGM6OklQQWRkcmVzcyBr
SVB2NExvY2FsSG9zdEFkZHJlc3MgPQotICAgIHJ0Yzo6SVBBZGRyZXNzKDB4N0YwMDAwMDEpOyAg
Ly8gMTI3LjAuMC4xCi0KLWNsYXNzIFVkcFRyYW5zcG9ydFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCwgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKLSBwdWJsaWM6Ci0gIFVkcFRyYW5z
cG9ydFRlc3QoKQotICAgICAgOiB2aXJ0dWFsX3NvY2tldF9zZXJ2ZXJfKG5ldyBydGM6OlZpcnR1
YWxTb2NrZXRTZXJ2ZXIoKSksCi0gICAgICAgIG5ldHdvcmtfdGhyZWFkXyh2aXJ0dWFsX3NvY2tl
dF9zZXJ2ZXJfLmdldCgpKSwKLSAgICAgICAgZXAxXygiTmFtZTEiLAotICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PigKLSAgICAgICAgICAgICAgICAg
c29ja2V0X2ZhY3RvcnlfLkNyZWF0ZVVkcFNvY2tldCgKLSAgICAgICAgICAgICAgICAgICAgIHJ0
Yzo6U29ja2V0QWRkcmVzcyhydGM6OkdldEFueUlQKEFGX0lORVQpLCAwKSwKLSAgICAgICAgICAg
ICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAwKSkpLAotICAgICAgICBlcDJfKCJO
YW1lMiIsCi0gICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2Nr
ZXQ+KAotICAgICAgICAgICAgICAgICBzb2NrZXRfZmFjdG9yeV8uQ3JlYXRlVWRwU29ja2V0KAot
ICAgICAgICAgICAgICAgICAgICAgcnRjOjpTb2NrZXRBZGRyZXNzKHJ0Yzo6R2V0QW55SVAoQUZf
SU5FVCksIDApLAotICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAg
IDApKSkgewotICAgIC8vIFNldHVwIElQIEFkZHJlc3MgZm9yIG91dGdvaW5nIHBhY2tldHMgZnJv
bSBzb2NrZXRzIGJvdW5kIHRvIElQVjQKLSAgICAvLyBJTkFERFJfQU5ZICgiMC4wLjAuMC4iKSwg
YXMgdXNlZCBhYm92ZSB3aGVuIGNyZWF0aW5nIHRoZSB2aXJ0dWFsCi0gICAgLy8gc29ja2V0cy4g
VGhlIHZpcnR1YWwgc29ja2V0IHNlcnZlciBzZW5kcyB0aGVzZSBwYWNrZXRzIG9ubHkgaWYgdGhl
Ci0gICAgLy8gZGVmYXVsdCBhZGRyZXNzIGlzIGV4cGxpY2l0IHNldC4gV2l0aCBhIHBoeXNpY2Fs
IHNvY2tldCwgdGhlIGFjdHVhbAotICAgIC8vIG5ldHdvcmsgc3RhY2sgLyBvcGVyYXRpbmcgc3lz
dGVtIHdvdWxkIHNldCB0aGUgSVAgYWRkcmVzcyBmb3Igb3V0Z29pbmcKLSAgICAvLyBwYWNrZXRz
LgotICAgIHZpcnR1YWxfc29ja2V0X3NlcnZlcl8tPlNldERlZmF1bHRSb3V0ZShrSVB2NExvY2Fs
SG9zdEFkZHJlc3MpOwotICB9Ci0KLSAgc3RydWN0IEVuZHBvaW50IDogcHVibGljIHNpZ3Nsb3Q6
Omhhc19zbG90czw+IHsKLSAgICBleHBsaWNpdCBFbmRwb2ludChzdGQ6OnN0cmluZyB0Y2hfbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tl
dFNvY2tldD4gc29ja2V0KSB7Ci0gICAgICBjaF8ucmVzZXQobmV3IFVkcFRyYW5zcG9ydChzdGQ6
Om1vdmUodGNoX25hbWUpLCBzdGQ6Om1vdmUoc29ja2V0KSkpOwotICAgICAgY2hfLT5TaWduYWxS
ZWFkUGFja2V0LmNvbm5lY3QodGhpcywgJkVuZHBvaW50OjpPblJlYWRQYWNrZXQpOwotICAgICAg
Y2hfLT5TaWduYWxTZW50UGFja2V0LmNvbm5lY3QodGhpcywgJkVuZHBvaW50OjpPblNlbnRQYWNr
ZXQpOwotICAgICAgY2hfLT5TaWduYWxSZWFkeVRvU2VuZC5jb25uZWN0KHRoaXMsICZFbmRwb2lu
dDo6T25SZWFkeVRvU2VuZCk7Ci0gICAgICBjaF8tPlNpZ25hbFdyaXRhYmxlU3RhdGUuY29ubmVj
dCh0aGlzLCAmRW5kcG9pbnQ6Ok9uV3JpdGFibGVTdGF0ZSk7Ci0gICAgfQotCi0gICAgYm9vbCBD
aGVja0RhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikgewotICAgICAgYm9vbCByZXQgPSBm
YWxzZTsKLSAgICAgIGlmICghY2hfcGFja2V0c18uZW1wdHkoKSkgewotICAgICAgICBzdGQ6OnN0
cmluZyBwYWNrZXQgPSBjaF9wYWNrZXRzXy5mcm9udCgpOwotICAgICAgICByZXQgPSAocGFja2V0
ID09IHN0ZDo6c3RyaW5nKGRhdGEsIGxlbikpOwotICAgICAgICBjaF9wYWNrZXRzXy5wb3BfZnJv
bnQoKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotCi0gICAgdm9pZCBPbldy
aXRhYmxlU3RhdGUocnRjOjpQYWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0KSB7Ci0g
ICAgICBudW1fc2lnX3dyaXRhYmxlXysrOwotICAgIH0KLQotICAgIHZvaWQgT25SZWFkeVRvU2Vu
ZChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQpIHsKLSAgICAgIG51bV9z
aWdfcmVhZHlfdG9fc2VuZF8rKzsKLSAgICB9Ci0KLSAgICB2b2lkIE9uUmVhZFBhY2tldChydGM6
OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAot
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB7Ci0gICAgICBudW1fcmVjZWl2ZWRf
cGFja2V0c18rKzsKLSAgICAgIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIk9uUmVhZFBhY2tldCAo
dW5pdHRlc3QpIjsKLSAgICAgIGNoX3BhY2tldHNfLnB1c2hfZnJvbnQoc3RkOjpzdHJpbmcoZGF0
YSwgbGVuKSk7Ci0gICAgfQotCi0gICAgdm9pZCBPblNlbnRQYWNrZXQocnRjOjpQYWNrZXRUcmFu
c3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6U2VudFBhY2tldCYpIHsKLSAgICAgIG51bV9zaWdfc2VudF9wYWNrZXRzXysrOwotICAgIH0K
LQotICAgIGludCBTZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKSB7Ci0gICAg
ICBydGM6OlBhY2tldE9wdGlvbnMgb3B0aW9uczsKLSAgICAgIHJldHVybiBjaF8tPlNlbmRQYWNr
ZXQoZGF0YSwgbGVuLCBvcHRpb25zLCAwKTsKLSAgICB9Ci0KLSAgICB2b2lkIEdldExvY2FsUG9y
dCh1aW50MTZfdCogbG9jYWxfcG9ydCkgewotICAgICAgKmxvY2FsX3BvcnQgPSBjaF8tPkdldExv
Y2FsQWRkcmVzcygpLnBvcnQoKTsKLSAgICB9Ci0KLSAgICBzdGQ6Omxpc3Q8c3RkOjpzdHJpbmc+
IGNoX3BhY2tldHNfOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxVZHBUcmFuc3BvcnQ+IGNoXzsKLSAg
ICB1aW50MzJfdCBudW1fcmVjZWl2ZWRfcGFja2V0c18gPSAwOyAgIC8vIEluY3JlYXNlcyBvbiBT
aWduYWxSZWFkUGFja2V0LgotICAgIHVpbnQzMl90IG51bV9zaWdfc2VudF9wYWNrZXRzXyA9IDA7
ICAgLy8gSW5jcmVhc2VzIG9uIFNpZ25hbFNlbnRQYWNrZXQuCi0gICAgdWludDMyX3QgbnVtX3Np
Z193cml0YWJsZV8gPSAwOyAgICAgICAvLyBJbmNyZWFzZXMgb24gU2lnbmFsV3JpdGFibGUuCi0g
ICAgdWludDMyX3QgbnVtX3NpZ19yZWFkeV90b19zZW5kXyA9IDA7ICAvLyBJbmNyZWFzZXMgb24g
U2lnbmFsUmVhZHlUb1NlbmQuCi0gIH07Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VmlydHVh
bFNvY2tldFNlcnZlcj4gdmlydHVhbF9zb2NrZXRfc2VydmVyXzsKLSAgcnRjOjpBdXRvU29ja2V0
U2VydmVyVGhyZWFkIG5ldHdvcmtfdGhyZWFkXzsKLSAgLy8gVXNlcyBjdXJyZW50IHRocmVhZCdz
IHNvY2tldCBzZXJ2ZXIsIHdoaWNoIHdpbGwgYmUgc2V0IGJ5IHNzX3Njb3BlXy4KLSAgcnRjOjpC
YXNpY1BhY2tldFNvY2tldEZhY3Rvcnkgc29ja2V0X2ZhY3RvcnlfOwotCi0gIEVuZHBvaW50IGVw
MV87Ci0gIEVuZHBvaW50IGVwMl87Ci0KLSAgdm9pZCBUZXN0U2VuZFJlY3YoKSB7Ci0gICAgZm9y
ICh1aW50MzJfdCBpID0gMDsgaSA8IDU7ICsraSkgewotICAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGRhdGEgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoxMjM0NTY3ODkwIjsKLSAgICAgIGlu
dCBsZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmxlbihkYXRhKSk7Ci0gICAgICAvLyBsb2NhbF9j
aGFubmVsIDw9PT4gcmVtb3RlX2NoYW5uZWwKLSAgICAgIEVYUEVDVF9FUV9XQUlUKGxlbiwgZXAx
Xy5TZW5kRGF0YShkYXRhLCBsZW4pLCBrVGltZW91dE1zKTsKLSAgICAgIEVYUEVDVF9UUlVFX1dB
SVQoZXAyXy5DaGVja0RhdGEoZGF0YSwgbGVuKSwga1RpbWVvdXRNcyk7Ci0gICAgICBFWFBFQ1Rf
RVFfV0FJVChpICsgMXUsIGVwMl8ubnVtX3JlY2VpdmVkX3BhY2tldHNfLCBrVGltZW91dE1zKTsK
LSAgICAgIEVYUEVDVF9FUV9XQUlUKGxlbiwgZXAyXy5TZW5kRGF0YShkYXRhLCBsZW4pLCBrVGlt
ZW91dE1zKTsKLSAgICAgIEVYUEVDVF9UUlVFX1dBSVQoZXAxXy5DaGVja0RhdGEoZGF0YSwgbGVu
KSwga1RpbWVvdXRNcyk7Ci0gICAgICBFWFBFQ1RfRVFfV0FJVChpICsgMXUsIGVwMV8ubnVtX3Jl
Y2VpdmVkX3BhY2tldHNfLCBrVGltZW91dE1zKTsKLSAgICB9Ci0gIH0KLX07Ci0KLVRFU1RfRihV
ZHBUcmFuc3BvcnRUZXN0LCBBZGRyZXNzR2V0dGVycykgewotICAvLyBJbml0aWFsbHksIHJlbW90
ZSBhZGRyZXNzIHNob3VsZCBiZSBuaWwgYnV0IGxvY2FsIGFkZHJlc3Mgc2hvdWxkbid0IGJlLgot
ICBFWFBFQ1RfRkFMU0UoZXAxXy5jaF8tPkdldExvY2FsQWRkcmVzcygpLklzTmlsKCkpOwotICBF
WFBFQ1RfVFJVRShlcDFfLmNoXy0+R2V0UmVtb3RlQWRkcmVzcygpLklzTmlsKCkpOwotICBydGM6
OlNvY2tldEFkZHJlc3MgZGVzdGluYXRpb24oIjEyNy4wLjAuMSIsIDEzMzcpOwotICBBU1NFUlRf
VFJVRShlcDFfLmNoXy0+U2V0UmVtb3RlQWRkcmVzcyhkZXN0aW5hdGlvbikpOwotICBFWFBFQ1Rf
RVEoZGVzdGluYXRpb24sIGVwMV8uY2hfLT5HZXRSZW1vdGVBZGRyZXNzKCkpOwotfQotCi0vLyBT
ZXR0aW5nIGFuIGludmFsaWQgYWRkcmVzcyBzaG91bGQgZmFpbCBhbmQgaGF2ZSBubyBlZmZlY3Qu
Ci1URVNUX0YoVWRwVHJhbnNwb3J0VGVzdCwgU2V0dGluZ0luY29tcGxldGVSZW1vdGVBZGRyZXNz
RmFpbHMpIHsKLSAgRVhQRUNUX0ZBTFNFKGVwMV8uY2hfLT5TZXRSZW1vdGVBZGRyZXNzKHJ0Yzo6
U29ja2V0QWRkcmVzcygiMTI3LjAuMC4xIiwgMCkpKTsKLSAgRVhQRUNUX1RSVUUoZXAxXy5jaF8t
PkdldFJlbW90ZUFkZHJlc3MoKS5Jc05pbCgpKTsKLX0KLQotVEVTVF9GKFVkcFRyYW5zcG9ydFRl
c3QsIFNlbmRSZWN2QmFzaWMpIHsKLSAgdWludDE2X3QgcG9ydDsKLSAgZXAyXy5HZXRMb2NhbFBv
cnQoJnBvcnQpOwotICBydGM6OlNvY2tldEFkZHJlc3MgYWRkcjIgPSBydGM6OlNvY2tldEFkZHJl
c3MoIjEyNy4wLjAuMSIsIHBvcnQpOwotICBFWFBFQ1RfVFJVRShlcDFfLmNoXy0+U2V0UmVtb3Rl
QWRkcmVzcyhhZGRyMikpOwotICBlcDFfLkdldExvY2FsUG9ydCgmcG9ydCk7Ci0gIHJ0Yzo6U29j
a2V0QWRkcmVzcyBhZGRyMSA9IHJ0Yzo6U29ja2V0QWRkcmVzcygiMTI3LjAuMC4xIiwgcG9ydCk7
Ci0gIEVYUEVDVF9UUlVFKGVwMl8uY2hfLT5TZXRSZW1vdGVBZGRyZXNzKGFkZHIxKSk7Ci0gIFRl
c3RTZW5kUmVjdigpOwotfQotCi0vLyBUZXN0IHRoZSBzaWduYWxzIGFuZCBzdGF0ZSBtZXRob2Rz
IHVzZWQgaW50ZXJuYWxseSBieSBjYXVzaW5nIGEgVWRwVHJhbnNwb3J0Ci0vLyB0byBzZW5kIGEg
cGFja2V0IHRvIGl0c2VsZi4KLVRFU1RfRihVZHBUcmFuc3BvcnRUZXN0LCBTdGF0dXNBbmRTaWdu
YWxzKSB7Ci0gIEVYUEVDVF9FUSgwdSwgZXAxXy5udW1fc2lnX3dyaXRhYmxlXyk7Ci0gIEVYUEVD
VF9FUSgwdSwgZXAxXy5udW1fc2lnX3JlYWR5X3RvX3NlbmRfKTsKLSAgLy8gTG9vcGJhY2sKLSAg
RVhQRUNUX1RSVUUoIWVwMV8uY2hfLT53cml0YWJsZSgpKTsKLSAgcnRjOjpTb2NrZXRBZGRyZXNz
IGFkZHIgPSBlcDFfLmNoXy0+R2V0TG9jYWxBZGRyZXNzKCk7Ci0gIC8vIEtlZXAgcG9ydCwgYnV0
IGV4cGxpY2l0bHkgc2V0IElQLgotICBhZGRyLlNldElQKCIxMjcuMC4wLjEiKTsKLSAgZXAxXy5j
aF8tPlNldFJlbW90ZUFkZHJlc3MoYWRkcik7Ci0gIEVYUEVDVF9UUlVFKGVwMV8uY2hfLT53cml0
YWJsZSgpKTsKLSAgRVhQRUNUX0VRKDF1LCBlcDFfLm51bV9zaWdfd3JpdGFibGVfKTsKLSAgRVhQ
RUNUX0VRKDF1LCBlcDFfLm51bV9zaWdfcmVhZHlfdG9fc2VuZF8pOwotICBjb25zdCBjaGFyIGRh
dGFbXSA9ICJhYmMiOwotICBlcDFfLlNlbmREYXRhKGRhdGEsIHNpemVvZihkYXRhKSk7Ci0gIEVY
UEVDVF9FUV9XQUlUKDF1LCBlcDFfLmNoX3BhY2tldHNfLnNpemUoKSwga1RpbWVvdXRNcyk7Ci0g
IEVYUEVDVF9FUV9XQUlUKDF1LCBlcDFfLm51bV9zaWdfc2VudF9wYWNrZXRzXywga1RpbWVvdXRN
cyk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9j
YXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9j
bGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmNjCmluZGV4IGMxYjFkZTU4ZGRiNjBmZjI3OGFlNTNh
MWM4NjNjOTk0MDAzYjI0NjYuLjBjMmZlZjMxMTI2MDU3OTZiNjgzYzVlZGQ1ODAxZGZlNzQ3OGM2
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmNj
CkBAIC01MTgsNiArNTE4LDEwIEBAIHZvaWQgQmFzaWNQb3J0QWxsb2NhdG9yU2Vzc2lvbjo6R2V0
Q2FuZGlkYXRlc0Zyb21Qb3J0KAogICB9CiB9CiAKK2Jvb2wgQmFzaWNQb3J0QWxsb2NhdG9yU2Vz
c2lvbjo6TWRuc09iZnVzY2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsKKyAgcmV0dXJuIGFsbG9jYXRv
cl8tPm5ldHdvcmtfbWFuYWdlcigpLT5HZXRNZG5zUmVzcG9uZGVyKCkgIT0gbnVsbHB0cjsKK30K
KwogQ2FuZGlkYXRlIEJhc2ljUG9ydEFsbG9jYXRvclNlc3Npb246OlNhbml0aXplQ2FuZGlkYXRl
KAogICAgIGNvbnN0IENhbmRpZGF0ZSYgYykgY29uc3QgewogICBSVENfRENIRUNLX1JVTl9PTihu
ZXR3b3JrX3RocmVhZF8pOwpAQCAtNTM0LDcgKzUzOCw3IEBAIENhbmRpZGF0ZSBCYXNpY1BvcnRB
bGxvY2F0b3JTZXNzaW9uOjpTYW5pdGl6ZUNhbmRpZGF0ZSgKICAgYm9vbCBmaWx0ZXJfc3R1bl9y
ZWxhdGVkX2FkZHJlc3MgPQogICAgICAgKChmbGFncygpICYgUE9SVEFMTE9DQVRPUl9ESVNBQkxF
X0FEQVBURVJfRU5VTUVSQVRJT04pICYmCiAgICAgICAgKGZsYWdzKCkgJiBQT1JUQUxMT0NBVE9S
X0RJU0FCTEVfREVGQVVMVF9MT0NBTF9DQU5ESURBVEUpKSB8fAotICAgICAgIShjYW5kaWRhdGVf
ZmlsdGVyXyAmIENGX0hPU1QpOworICAgICAgIShjYW5kaWRhdGVfZmlsdGVyXyAmIENGX0hPU1Qp
IHx8IE1kbnNPYmZ1c2NhdGlvbkVuYWJsZWQoKTsKICAgLy8gSWYgdGhlIGNhbmRpZGF0ZSBmaWx0
ZXIgZG9lc24ndCBhbGxvdyByZWZsZXhpdmUgYWRkcmVzc2VzLCBlbXB0eSBUVVJOIHJhZGRyCiAg
IC8vIHRvIGF2b2lkIHJlZmxleGl2ZSBhZGRyZXNzIGxlYWthZ2UuCiAgIGJvb2wgZmlsdGVyX3R1
cm5fcmVsYXRlZF9hZGRyZXNzID0gIShjYW5kaWRhdGVfZmlsdGVyXyAmIENGX1JFRkxFWElWRSk7
CkBAIC0xMzYyLDcgKzEzNjYsNyBAQCB2b2lkIEFsbG9jYXRpb25TZXF1ZW5jZTo6Q3JlYXRlVURQ
UG9ydHMoKSB7CiAKICAgLy8gVE9ETyhtYWxsaW5hdGgpIC0gUmVtb3ZlIFVEUFBvcnQgY3JlYXRp
bmcgc29ja2V0IGFmdGVyIHNoYXJlZCBzb2NrZXQKICAgLy8gaXMgZW5hYmxlZCBjb21wbGV0ZWx5
LgotICBVRFBQb3J0KiBwb3J0ID0gTlVMTDsKKyAgc3RkOjp1bmlxdWVfcHRyPFVEUFBvcnQ+IHBv
cnQ7CiAgIGJvb2wgZW1pdF9sb2NhbF9jYW5kaWRhdGVfZm9yX2FueWFkZHJlc3MgPQogICAgICAg
IUlzRmxhZ1NldChQT1JUQUxMT0NBVE9SX0RJU0FCTEVfREVGQVVMVF9MT0NBTF9DQU5ESURBVEUp
OwogICBpZiAoSXNGbGFnU2V0KFBPUlRBTExPQ0FUT1JfRU5BQkxFX1NIQVJFRF9TT0NLRVQpICYm
IHVkcF9zb2NrZXRfKSB7CkBAIC0xMzg0LDcgKzEzODgsNyBAQCB2b2lkIEFsbG9jYXRpb25TZXF1
ZW5jZTo6Q3JlYXRlVURQUG9ydHMoKSB7CiAgICAgLy8gSWYgc2hhcmVkIHNvY2tldCBpcyBlbmFi
bGVkLCBTVFVOIGNhbmRpZGF0ZSB3aWxsIGJlIGFsbG9jYXRlZCBieSB0aGUKICAgICAvLyBVRFBQ
b3J0LgogICAgIGlmIChJc0ZsYWdTZXQoUE9SVEFMTE9DQVRPUl9FTkFCTEVfU0hBUkVEX1NPQ0tF
VCkpIHsKLSAgICAgIHVkcF9wb3J0XyA9IHBvcnQ7CisgICAgICB1ZHBfcG9ydF8gPSBwb3J0Lmdl
dCgpOwogICAgICAgcG9ydC0+U2lnbmFsRGVzdHJveWVkLmNvbm5lY3QodGhpcywgJkFsbG9jYXRp
b25TZXF1ZW5jZTo6T25Qb3J0RGVzdHJveWVkKTsKIAogICAgICAgLy8gSWYgU1RVTiBpcyBub3Qg
ZGlzYWJsZWQsIHNldHRpbmcgc3R1biBzZXJ2ZXIgYWRkcmVzcyB0byBwb3J0LgpAQCAtMTM5OCw3
ICsxNDAyLDcgQEAgdm9pZCBBbGxvY2F0aW9uU2VxdWVuY2U6OkNyZWF0ZVVEUFBvcnRzKCkgewog
ICAgICAgfQogICAgIH0KIAotICAgIHNlc3Npb25fLT5BZGRBbGxvY2F0ZWRQb3J0KHBvcnQsIHRo
aXMsIHRydWUpOworICAgIHNlc3Npb25fLT5BZGRBbGxvY2F0ZWRQb3J0KHBvcnQucmVsZWFzZSgp
LCB0aGlzLCB0cnVlKTsKICAgfQogfQogCkBAIC0xNDA4LDEzICsxNDEyLDEzIEBAIHZvaWQgQWxs
b2NhdGlvblNlcXVlbmNlOjpDcmVhdGVUQ1BQb3J0cygpIHsKICAgICByZXR1cm47CiAgIH0KIAot
ICBQb3J0KiBwb3J0ID0gVENQUG9ydDo6Q3JlYXRlKAorICBzdGQ6OnVuaXF1ZV9wdHI8UG9ydD4g
cG9ydCA9IFRDUFBvcnQ6OkNyZWF0ZSgKICAgICAgIHNlc3Npb25fLT5uZXR3b3JrX3RocmVhZCgp
LCBzZXNzaW9uXy0+c29ja2V0X2ZhY3RvcnkoKSwgbmV0d29ya18sCiAgICAgICBzZXNzaW9uXy0+
YWxsb2NhdG9yKCktPm1pbl9wb3J0KCksIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+bWF4X3BvcnQo
KSwKICAgICAgIHNlc3Npb25fLT51c2VybmFtZSgpLCBzZXNzaW9uXy0+cGFzc3dvcmQoKSwKICAg
ICAgIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+YWxsb3dfdGNwX2xpc3RlbigpKTsKICAgaWYgKHBv
cnQpIHsKLSAgICBzZXNzaW9uXy0+QWRkQWxsb2NhdGVkUG9ydChwb3J0LCB0aGlzLCB0cnVlKTsK
KyAgICBzZXNzaW9uXy0+QWRkQWxsb2NhdGVkUG9ydChwb3J0LnJlbGVhc2UoKSwgdGhpcywgdHJ1
ZSk7CiAgICAgLy8gU2luY2UgVENQUG9ydCBpcyBub3QgY3JlYXRlZCB1c2luZyBzaGFyZWQgc29j
a2V0LCB8cG9ydHwgd2lsbCBub3QgYmUKICAgICAvLyBhZGRlZCB0byB0aGUgZGVxdWV1ZS4KICAg
fQpAQCAtMTQzNiwxNCArMTQ0MCwxNCBAQCB2b2lkIEFsbG9jYXRpb25TZXF1ZW5jZTo6Q3JlYXRl
U3R1blBvcnRzKCkgewogICAgIHJldHVybjsKICAgfQogCi0gIFN0dW5Qb3J0KiBwb3J0ID0gU3R1
blBvcnQ6OkNyZWF0ZSgKKyAgc3RkOjp1bmlxdWVfcHRyPFN0dW5Qb3J0PiBwb3J0ID0gU3R1blBv
cnQ6OkNyZWF0ZSgKICAgICAgIHNlc3Npb25fLT5uZXR3b3JrX3RocmVhZCgpLCBzZXNzaW9uXy0+
c29ja2V0X2ZhY3RvcnkoKSwgbmV0d29ya18sCiAgICAgICBzZXNzaW9uXy0+YWxsb2NhdG9yKCkt
Pm1pbl9wb3J0KCksIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+bWF4X3BvcnQoKSwKICAgICAgIHNl
c3Npb25fLT51c2VybmFtZSgpLCBzZXNzaW9uXy0+cGFzc3dvcmQoKSwgY29uZmlnXy0+U3R1blNl
cnZlcnMoKSwKICAgICAgIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+b3JpZ2luKCksCiAgICAgICBz
ZXNzaW9uXy0+YWxsb2NhdG9yKCktPnN0dW5fY2FuZGlkYXRlX2tlZXBhbGl2ZV9pbnRlcnZhbCgp
KTsKICAgaWYgKHBvcnQpIHsKLSAgICBzZXNzaW9uXy0+QWRkQWxsb2NhdGVkUG9ydChwb3J0LCB0
aGlzLCB0cnVlKTsKKyAgICBzZXNzaW9uXy0+QWRkQWxsb2NhdGVkUG9ydChwb3J0LnJlbGVhc2Uo
KSwgdGhpcywgdHJ1ZSk7CiAgICAgLy8gU2luY2UgU3R1blBvcnQgaXMgbm90IGNyZWF0ZWQgdXNp
bmcgc2hhcmVkIHNvY2tldCwgfHBvcnR8IHdpbGwgbm90IGJlCiAgICAgLy8gYWRkZWQgdG8gdGhl
IGRlcXVldWUuCiAgIH0KQEAgLTE0NzksMTEgKzE0ODMsMTIgQEAgdm9pZCBBbGxvY2F0aW9uU2Vx
dWVuY2U6OkNyZWF0ZVJlbGF5UG9ydHMoKSB7CiAKIHZvaWQgQWxsb2NhdGlvblNlcXVlbmNlOjpD
cmVhdGVHdHVyblBvcnQoY29uc3QgUmVsYXlTZXJ2ZXJDb25maWcmIGNvbmZpZykgewogICAvLyBU
T0RPKG1hbGxpbmF0aCkgLSBSZW5hbWUgUmVsYXlQb3J0IHRvIEdUdXJuUG9ydC4KLSAgUmVsYXlQ
b3J0KiBwb3J0ID0gUmVsYXlQb3J0OjpDcmVhdGUoCisgIHN0ZDo6dW5pcXVlX3B0cjxSZWxheVBv
cnQ+IHBvcnQgPSBSZWxheVBvcnQ6OkNyZWF0ZSgKICAgICAgIHNlc3Npb25fLT5uZXR3b3JrX3Ro
cmVhZCgpLCBzZXNzaW9uXy0+c29ja2V0X2ZhY3RvcnkoKSwgbmV0d29ya18sCiAgICAgICBzZXNz
aW9uXy0+YWxsb2NhdG9yKCktPm1pbl9wb3J0KCksIHNlc3Npb25fLT5hbGxvY2F0b3IoKS0+bWF4
X3BvcnQoKSwKICAgICAgIGNvbmZpZ18tPnVzZXJuYW1lLCBjb25maWdfLT5wYXNzd29yZCk7CiAg
IGlmIChwb3J0KSB7CisgICAgUmVsYXlQb3J0KiBwb3J0X3B0ciA9IHBvcnQucmVsZWFzZSgpOwog
ICAgIC8vIFNpbmNlIFJlbGF5UG9ydCBpcyBub3QgY3JlYXRlZCB1c2luZyBzaGFyZWQgc29ja2V0
LCB8cG9ydHwgd2lsbCBub3QgYmUKICAgICAvLyBhZGRlZCB0byB0aGUgZGVxdWV1ZS4KICAgICAv
LyBOb3RlOiBXZSBtdXN0IGFkZCB0aGUgYWxsb2NhdGVkIHBvcnQgYmVmb3JlIHdlIGFkZCBhZGRy
ZXNzZXMgYmVjYXVzZQpAQCAtMTQ5MSwxNyArMTQ5NiwxNyBAQCB2b2lkIEFsbG9jYXRpb25TZXF1
ZW5jZTo6Q3JlYXRlR3R1cm5Qb3J0KGNvbnN0IFJlbGF5U2VydmVyQ29uZmlnJiBjb25maWcpIHsK
ICAgICAvLyAgICAgICBzZXR0aW5ncy4gIEhvd2V2ZXIsIHdlIGFsc28gY2FuJ3QgcHJlcGFyZSB0
aGUgYWRkcmVzcyAobm9ybWFsbHkKICAgICAvLyAgICAgICBkb25lIGJ5IEFkZEFsbG9jYXRlZFBv
cnQpIHVudGlsIHdlIGhhdmUgdGhlc2UgYWRkcmVzc2VzLiAgU28gd2UKICAgICAvLyAgICAgICB3
YWl0IHRvIGRvIHRoYXQgdW50aWwgYmVsb3cuCi0gICAgc2Vzc2lvbl8tPkFkZEFsbG9jYXRlZFBv
cnQocG9ydCwgdGhpcywgZmFsc2UpOworICAgIHNlc3Npb25fLT5BZGRBbGxvY2F0ZWRQb3J0KHBv
cnRfcHRyLCB0aGlzLCBmYWxzZSk7CiAKICAgICAvLyBBZGQgdGhlIGFkZHJlc3NlcyBvZiB0aGlz
IHByb3RvY29sLgogICAgIFBvcnRMaXN0Ojpjb25zdF9pdGVyYXRvciByZWxheV9wb3J0OwogICAg
IGZvciAocmVsYXlfcG9ydCA9IGNvbmZpZy5wb3J0cy5iZWdpbigpOyByZWxheV9wb3J0ICE9IGNv
bmZpZy5wb3J0cy5lbmQoKTsKICAgICAgICAgICsrcmVsYXlfcG9ydCkgewotICAgICAgcG9ydC0+
QWRkU2VydmVyQWRkcmVzcygqcmVsYXlfcG9ydCk7Ci0gICAgICBwb3J0LT5BZGRFeHRlcm5hbEFk
ZHJlc3MoKnJlbGF5X3BvcnQpOworICAgICAgcG9ydF9wdHItPkFkZFNlcnZlckFkZHJlc3MoKnJl
bGF5X3BvcnQpOworICAgICAgcG9ydF9wdHItPkFkZEV4dGVybmFsQWRkcmVzcygqcmVsYXlfcG9y
dCk7CiAgICAgfQogICAgIC8vIFN0YXJ0IGZldGNoaW5nIGFuIGFkZHJlc3MgZm9yIHRoaXMgcG9y
dC4KLSAgICBwb3J0LT5QcmVwYXJlQWRkcmVzcygpOworICAgIHBvcnRfcHRyLT5QcmVwYXJlQWRk
cmVzcygpOwogICB9CiB9CiAKQEAgLTE1NzksNyArMTU4NCw3IEBAIHZvaWQgQWxsb2NhdGlvblNl
cXVlbmNlOjpPblJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBy
ZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cykgewogICBSVENfRENI
RUNLKHNvY2tldCA9PSB1ZHBfc29ja2V0Xy5nZXQoKSk7CiAKICAgYm9vbCB0dXJuX3BvcnRfZm91
bmQgPSBmYWxzZTsKQEAgLTE1OTMsNyArMTU5OCw3IEBAIHZvaWQgQWxsb2NhdGlvblNlcXVlbmNl
OjpPblJlYWRQYWNrZXQocnRjOjpBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICBmb3IgKGF1
dG8qIHBvcnQgOiByZWxheV9wb3J0c18pIHsKICAgICBpZiAocG9ydC0+Q2FuSGFuZGxlSW5jb21p
bmdQYWNrZXRzRnJvbShyZW1vdGVfYWRkcikpIHsKICAgICAgIGlmIChwb3J0LT5IYW5kbGVJbmNv
bWluZ1BhY2tldChzb2NrZXQsIGRhdGEsIHNpemUsIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF90aW1lX3VzKSkgewogICAgICAgICByZXR1cm47
CiAgICAgICB9CiAgICAgICB0dXJuX3BvcnRfZm91bmQgPSB0cnVlOwpAQCAtMTYwOSw3ICsxNjE0
LDcgQEAgdm9pZCBBbGxvY2F0aW9uU2VxdWVuY2U6Ok9uUmVhZFBhY2tldChydGM6OkFzeW5jUGFj
a2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgIHN0dW5fc2VydmVycy5maW5kKHJlbW90ZV9hZGRy
KSAhPSBzdHVuX3NlcnZlcnMuZW5kKCkpIHsKICAgICAgIFJUQ19EQ0hFQ0sodWRwX3BvcnRfLT5T
aGFyZWRTb2NrZXQoKSk7CiAgICAgICB1ZHBfcG9ydF8tPkhhbmRsZUluY29taW5nUGFja2V0KHNv
Y2tldCwgZGF0YSwgc2l6ZSwgcmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFja2V0X3RpbWVfdXMpOwogICAgIH0KICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3Bv
cnRhbGxvY2F0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmgKaW5kZXggOGI5NTFjYWU5ZTYyY2JmN2Vl
YzE4NzJiNGI5OWZjYzMyODlkNDU4Zi4uNjcyZjNkZGI3YzI2M2IxYTU1ZmEzMTQyMmI5ZjEwM2E1
YmU3YjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRv
ci5oCkBAIC0yMiwxMSArMjIsMTIgQEAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9uZXR3
b3JrLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS90aHJlYWQuaCIKIAogbmFtZXNwYWNlIGNyaWNrZXQgewogCi1jbGFzcyBCYXNp
Y1BvcnRBbGxvY2F0b3IgOiBwdWJsaWMgUG9ydEFsbG9jYXRvciB7CitjbGFzcyBSVENfRVhQT1JU
IEJhc2ljUG9ydEFsbG9jYXRvciA6IHB1YmxpYyBQb3J0QWxsb2NhdG9yIHsKICBwdWJsaWM6CiAg
IC8vIG5vdGU6IFRoZSAob3B0aW9uYWwpIHJlbGF5X3BvcnRfZmFjdG9yeSBpcyBvd25lZCBieSBj
YWxsZXIKICAgLy8gYW5kIG11c3QgaGF2ZSBhIGxpZmUgdGltZSB0aGF0IGV4Y2VlZHMgdGhhdCBv
ZiBCYXNpY1BvcnRBbGxvY2F0b3IuCkBAIC0xMTAsOCArMTExLDggQEAgZW51bSBjbGFzcyBTZXNz
aW9uU3RhdGUgewogICAgICAgICAgICAgICAvLyBwcm9jZXNzIHdpbGwgYmUgc3RhcnRlZC4KIH07
CiAKLWNsYXNzIEJhc2ljUG9ydEFsbG9jYXRvclNlc3Npb24gOiBwdWJsaWMgUG9ydEFsbG9jYXRv
clNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHJ0Yzo6
TWVzc2FnZUhhbmRsZXIgeworY2xhc3MgUlRDX0VYUE9SVCBCYXNpY1BvcnRBbGxvY2F0b3JTZXNz
aW9uIDogcHVibGljIFBvcnRBbGxvY2F0b3JTZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIgewogIHB1
YmxpYzoKICAgQmFzaWNQb3J0QWxsb2NhdG9yU2Vzc2lvbihCYXNpY1BvcnRBbGxvY2F0b3IqIGFs
bG9jYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
Y29udGVudF9uYW1lLApAQCAtMjM1LDYgKzIzNiwxMCBAQCBjbGFzcyBCYXNpY1BvcnRBbGxvY2F0
b3JTZXNzaW9uIDogcHVibGljIFBvcnRBbGxvY2F0b3JTZXNzaW9uLAogCiAgIGJvb2wgQ2hlY2tD
YW5kaWRhdGVGaWx0ZXIoY29uc3QgQ2FuZGlkYXRlJiBjKSBjb25zdDsKICAgYm9vbCBDYW5kaWRh
dGVQYWlyYWJsZShjb25zdCBDYW5kaWRhdGUmIGMsIGNvbnN0IFBvcnQqIHBvcnQpIGNvbnN0Owor
CisgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBtRE5TIHJlc3BvbmRlciBhdHRhY2hl
ZCB0byB0aGUgbmV0d29yayBtYW5hZ2VyCisgIGJvb2wgTWRuc09iZnVzY2F0aW9uRW5hYmxlZCgp
IGNvbnN0OworCiAgIC8vIENsZWFycyAxKSB0aGUgYWRkcmVzcyBpZiB0aGUgY2FuZGlkYXRlIGlz
IHN1cHBvc2VkbHkgYSBob3N0bmFtZSBjYW5kaWRhdGU7CiAgIC8vIDIpIHRoZSByZWxhdGVkIGFk
ZHJlc3MgYWNjb3JkaW5nIHRvIHRoZSBmbGFncyBhbmQgY2FuZGlkYXRlIGZpbHRlciBpbiBvcmRl
cgogICAvLyB0byBhdm9pZCBsZWFraW5nIGFueSBpbmZvcm1hdGlvbi4KQEAgLTI3NCw3ICsyNzks
NyBAQCBjbGFzcyBCYXNpY1BvcnRBbGxvY2F0b3JTZXNzaW9uIDogcHVibGljIFBvcnRBbGxvY2F0
b3JTZXNzaW9uLAogCiAvLyBSZWNvcmRzIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gdXNlZnVs
IGluIGNyZWF0aW5nIHBvcnRzLgogLy8gVE9ETyhkZWFkYmVlZik6IFJlbmFtZSAicmVsYXkiIHRv
ICJ0dXJuX3NlcnZlciIgaW4gdGhpcyBzdHJ1Y3QuCi1zdHJ1Y3QgUG9ydENvbmZpZ3VyYXRpb24g
OiBwdWJsaWMgcnRjOjpNZXNzYWdlRGF0YSB7CitzdHJ1Y3QgUlRDX0VYUE9SVCBQb3J0Q29uZmln
dXJhdGlvbiA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VEYXRhIHsKICAgLy8gVE9ETyhqaWF5bCk6IHJl
bW92ZSB8c3R1bl9hZGRyZXNzfCB3aGVuIENocm9tZSBpcyB1cGRhdGVkLgogICBydGM6OlNvY2tl
dEFkZHJlc3Mgc3R1bl9hZGRyZXNzOwogICBTZXJ2ZXJBZGRyZXNzZXMgc3R1bl9zZXJ2ZXJzOwpA
QCAtMzgzLDcgKzM4OCw3IEBAIGNsYXNzIEFsbG9jYXRpb25TZXF1ZW5jZSA6IHB1YmxpYyBydGM6
Ok1lc3NhZ2VIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAog
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgY29u
c3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKTsKIAogICB2b2lkIE9uUG9ydERlc3Ryb3ll
ZChQb3J0SW50ZXJmYWNlKiBwb3J0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3JfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAv
Y2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYwppbmRleCBhNDZlNTNiYTlkYTY2
MjBlN2I0NjVkMjFhZDJhNTk0NzFlOTg4MjFjLi44OTQzZWJjNzNkYmEyZGI2OGEyZmJjZGJlNDA3
MzU3ODZmNGVhZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L2Jh
c2ljcG9ydGFsbG9jYXRvcl91bml0dGVzdC5jYwpAQCAtMzgsNyArMzgsNiBAQAogCiB1c2luZyBy
dGM6OklQQWRkcmVzczsKIHVzaW5nIHJ0Yzo6U29ja2V0QWRkcmVzczsKLXVzaW5nIHJ0Yzo6VGhy
ZWFkOwogCiAjZGVmaW5lIE1BWUJFX1NLSVBfSVBWNCAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgaWYgKCFydGM6Okhhc0lQdjRFbmFibGVkKCkpIHsgICAgICAgICAgICAgICAgXApAQCAtMTQ3
LDE1ICsxNDYsMTUgQEAgY2xhc3MgQmFzaWNQb3J0QWxsb2NhdG9yVGVzdEJhc2UgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCwKICAgICAgICAgLy8gbXVzdCBiZSBjYWxsZWQuCiAgICAgICAgIG5hdF9m
YWN0b3J5Xyh2c3NfLmdldCgpLCBrTmF0VWRwQWRkciwga05hdFRjcEFkZHIpLAogICAgICAgICBu
YXRfc29ja2V0X2ZhY3RvcnlfKG5ldyBydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeSgmbmF0
X2ZhY3RvcnlfKSksCi0gICAgICAgIHN0dW5fc2VydmVyXyhUZXN0U3R1blNlcnZlcjo6Q3JlYXRl
KFRocmVhZDo6Q3VycmVudCgpLCBrU3R1bkFkZHIpKSwKLSAgICAgICAgcmVsYXlfc2VydmVyXyhU
aHJlYWQ6OkN1cnJlbnQoKSwKKyAgICAgICAgc3R1bl9zZXJ2ZXJfKFRlc3RTdHVuU2VydmVyOjpD
cmVhdGUocnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwga1N0dW5BZGRyKSksCisgICAgICAgIHJlbGF5
X3NlcnZlcl8ocnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICBr
UmVsYXlVZHBJbnRBZGRyLAogICAgICAgICAgICAgICAgICAgICAgIGtSZWxheVVkcEV4dEFkZHIs
CiAgICAgICAgICAgICAgICAgICAgICAga1JlbGF5VGNwSW50QWRkciwKICAgICAgICAgICAgICAg
ICAgICAgICBrUmVsYXlUY3BFeHRBZGRyLAogICAgICAgICAgICAgICAgICAgICAgIGtSZWxheVNz
bFRjcEludEFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAga1JlbGF5U3NsVGNwRXh0QWRkciks
Ci0gICAgICAgIHR1cm5fc2VydmVyXyhUaHJlYWQ6OkN1cnJlbnQoKSwga1R1cm5VZHBJbnRBZGRy
LCBrVHVyblVkcEV4dEFkZHIpLAorICAgICAgICB0dXJuX3NlcnZlcl8ocnRjOjpUaHJlYWQ6OkN1
cnJlbnQoKSwga1R1cm5VZHBJbnRBZGRyLCBrVHVyblVkcEV4dEFkZHIpLAogICAgICAgICBjYW5k
aWRhdGVfYWxsb2NhdGlvbl9kb25lXyhmYWxzZSkgewogICAgIFNlcnZlckFkZHJlc3NlcyBzdHVu
X3NlcnZlcnM7CiAgICAgc3R1bl9zZXJ2ZXJzLmluc2VydChrU3R1bkFkZHIpOwpAQCAtMjI0Nyw4
ICsyMjQ2LDggQEAgVEVTVF9GKEJhc2ljUG9ydEFsbG9jYXRvclRlc3QsIEljZVJlZ2F0aGVyaW5n
TWV0cmljc0xvZ2dlZFdoZW5OZXR3b3JrQ2hhbmdlcykgewogfQogCiAvLyBUZXN0IHRoYXQgd2hl
biBhbiBtRE5TIHJlc3BvbmRlciBpcyBwcmVzZW50LCB0aGUgbG9jYWwgYWRkcmVzcyBvZiBhIGhv
c3QKLS8vIGNhbmRpZGF0ZSBpcyBtYXNrZWQgYnkgYW4gbUROUyBob3N0bmFtZSBhbmQgdGhlIHJl
bGF0ZWQgYWRkcmVzcyBvZiBhbnkgb3RoZXIKLS8vIHR5cGUgb2YgY2FuZGlkYXRlcyBpcyBzZXQg
dG8gMC4wLjAuMCBvciA6OjAuCisvLyBjYW5kaWRhdGUgaXMgY29uY2VhbGVkIGJ5IGFuIG1ETlMg
aG9zdG5hbWUgYW5kIHRoZSByZWxhdGVkIGFkZHJlc3Mgb2YgYSBzcmZseAorLy8gY2FuZGlkYXRl
IGlzIHNldCB0byAwLjAuMC4wIG9yIDo6MC4KIFRFU1RfRihCYXNpY1BvcnRBbGxvY2F0b3JUZXN0
LCBIb3N0Q2FuZGlkYXRlQWRkcmVzc0lzUmVwbGFjZWRCeUhvc3RuYW1lKSB7CiAgIC8vIERlZmF1
bHQgY29uZmlnIHVzZXMgR1RVUk4gYW5kIG5vIE5BVCwgc28gcmVwbGFjZSB0aGF0IHdpdGggdGhl
CiAgIC8vIGRlc2lyZWQgc2V0dXAgKE5BVCwgU1RVTiBzZXJ2ZXIsIFRVUk4gc2VydmVyLCBVRFAv
VENQKS4KQEAgLTIyNTgsNyArMjI1Nyw3IEBAIFRFU1RfRihCYXNpY1BvcnRBbGxvY2F0b3JUZXN0
LCBIb3N0Q2FuZGlkYXRlQWRkcmVzc0lzUmVwbGFjZWRCeUhvc3RuYW1lKSB7CiAgIEFkZFR1cm5T
ZXJ2ZXJzKGtUdXJuVWRwSW50SVB2NkFkZHIsIGtUdXJuVGNwSW50SVB2NkFkZHIpOwogCiAgIEFT
U0VSVF9FUSgmbmV0d29ya19tYW5hZ2VyXywgYWxsb2NhdG9yKCkubmV0d29ya19tYW5hZ2VyKCkp
OwotICBuZXR3b3JrX21hbmFnZXJfLkNyZWF0ZU1EbnNSZXNwb25kZXIoKTsKKyAgbmV0d29ya19t
YW5hZ2VyXy5DcmVhdGVNZG5zUmVzcG9uZGVyKCk7CiAgIEFkZEludGVyZmFjZShrQ2xpZW50QWRk
cik7CiAgIEFTU0VSVF9UUlVFKENyZWF0ZVNlc3Npb24oSUNFX0NBTkRJREFURV9DT01QT05FTlRf
UlRQKSk7CiAgIHNlc3Npb25fLT5TdGFydEdldHRpbmdQb3J0cygpOwpAQCAtMjI3MCwyMyArMjI2
OSwyOSBAQCBURVNUX0YoQmFzaWNQb3J0QWxsb2NhdG9yVGVzdCwgSG9zdENhbmRpZGF0ZUFkZHJl
c3NJc1JlcGxhY2VkQnlIb3N0bmFtZSkgewogICBpbnQgbnVtX3NyZmx4X2NhbmRpZGF0ZXMgPSAw
OwogICBpbnQgbnVtX3JlbGF5X2NhbmRpZGF0ZXMgPSAwOwogICBmb3IgKGNvbnN0IGF1dG8mIGNh
bmRpZGF0ZSA6IGNhbmRpZGF0ZXNfKSB7CisgICAgY29uc3QgYXV0byYgcmFkZHIgPSBjYW5kaWRh
dGUucmVsYXRlZF9hZGRyZXNzKCk7CisKICAgICBpZiAoY2FuZGlkYXRlLnR5cGUoKSA9PSBMT0NB
TF9QT1JUX1RZUEUpIHsKLSAgICAgIEVYUEVDVF9UUlVFKGNhbmRpZGF0ZS5hZGRyZXNzKCkuSXNV
bnJlc29sdmVkSVAoKSk7CisgICAgICBFWFBFQ1RfRkFMU0UoY2FuZGlkYXRlLmFkZHJlc3MoKS5o
b3N0bmFtZSgpLmVtcHR5KCkpOworICAgICAgRVhQRUNUX1RSVUUocmFkZHIuSXNOaWwoKSk7CiAg
ICAgICBpZiAoY2FuZGlkYXRlLnByb3RvY29sKCkgPT0gVURQX1BST1RPQ09MX05BTUUpIHsKICAg
ICAgICAgKytudW1faG9zdF91ZHBfY2FuZGlkYXRlczsKICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICsrbnVtX2hvc3RfdGNwX2NhbmRpZGF0ZXM7CiAgICAgICB9CisgICAgfSBlbHNlIGlmIChjYW5k
aWRhdGUudHlwZSgpID09IFNUVU5fUE9SVF9UWVBFKSB7CisgICAgICAvLyBGb3IgYSBzcmZseCBj
YW5kaWRhdGUsIHRoZSByZWxhdGVkIGFkZHJlc3Mgc2hvdWxkIGJlIHNldCB0byAwLjAuMC4wIG9y
CisgICAgICAvLyA6OjAKKyAgICAgIEVYUEVDVF9UUlVFKElQSXNBbnkocmFkZHIuaXBhZGRyKCkp
KTsKKyAgICAgIEVYUEVDVF9FUShyYWRkci5wb3J0KCksIDApOworICAgICAgKytudW1fc3JmbHhf
Y2FuZGlkYXRlczsKKyAgICB9IGVsc2UgaWYgKGNhbmRpZGF0ZS50eXBlKCkgPT0gUkVMQVlfUE9S
VF9UWVBFKSB7CisgICAgICBFWFBFQ1RfRVEoa05hdFVkcEFkZHIuaXBhZGRyKCksIHJhZGRyLmlw
YWRkcigpKTsKKyAgICAgIEVYUEVDVF9FUShrTmF0VWRwQWRkci5mYW1pbHkoKSwgcmFkZHIuZmFt
aWx5KCkpOworICAgICAgKytudW1fcmVsYXlfY2FuZGlkYXRlczsKICAgICB9IGVsc2UgewotICAg
ICAgRVhQRUNUX05FKFBSRkxYX1BPUlRfVFlQRSwgY2FuZGlkYXRlLnR5cGUoKSk7Ci0gICAgICAv
LyBUaGUgcmVsYXRlZCBhZGRyZXNzIHNob3VsZCBiZSBzZXQgdG8gMC4wLjAuMCBvciA6OjAgZm9y
IHNyZmx4IGFuZAotICAgICAgLy8gcmVsYXkgY2FuZGlkYXRlcy4KLSAgICAgIEVYUEVDVF9FUShy
dGM6OlNvY2tldEFkZHJlc3MoKSwgY2FuZGlkYXRlLnJlbGF0ZWRfYWRkcmVzcygpKTsKLSAgICAg
IGlmIChjYW5kaWRhdGUudHlwZSgpID09IFNUVU5fUE9SVF9UWVBFKSB7Ci0gICAgICAgICsrbnVt
X3NyZmx4X2NhbmRpZGF0ZXM7Ci0gICAgICB9IGVsc2UgewotICAgICAgICArK251bV9yZWxheV9j
YW5kaWRhdGVzOwotICAgICAgfQorICAgICAgLy8gcHJmbHggY2FuZGlkYXRlcyBhcmUgbm90IGV4
cGVjdGVkCisgICAgICBGQUlMKCk7CiAgICAgfQogICB9CiAgIEVYUEVDVF9FUSgxLCBudW1faG9z
dF91ZHBfY2FuZGlkYXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wMnAvY2xpZW50L3R1cm5wb3J0ZmFjdG9yeS5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvdHVybnBvcnRmYWN0
b3J5LmNjCmluZGV4IDY0MDQxMzRjNGExOWQ4YzVlMWEwZWU3MzRhNmI3NjZlMGZiNGE3NzguLmMw
YzE3MjA3NmJjMWViN2QyMmY3NTkzMWEyNWE5MDUwNDU3MmM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9jbGllbnQvdHVybnBvcnRm
YWN0b3J5LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3AycC9jbGllbnQvdHVybnBvcnRmYWN0b3J5LmNjCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVk
ZSAicDJwL2NsaWVudC90dXJucG9ydGZhY3RvcnkuaCIKIAogI2luY2x1ZGUgPG1lbW9yeT4KKyNp
bmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAicDJwL2Jhc2UvdHVybnBvcnQuaCIKIApAQCAt
MjEsMjYgKzIyLDI2IEBAIFR1cm5Qb3J0RmFjdG9yeTo6flR1cm5Qb3J0RmFjdG9yeSgpIHt9CiBz
dGQ6OnVuaXF1ZV9wdHI8UG9ydD4gVHVyblBvcnRGYWN0b3J5OjpDcmVhdGUoCiAgICAgY29uc3Qg
Q3JlYXRlUmVsYXlQb3J0QXJncyYgYXJncywKICAgICBydGM6OkFzeW5jUGFja2V0U29ja2V0KiB1
ZHBfc29ja2V0KSB7Ci0gIFR1cm5Qb3J0KiBwb3J0ID0gVHVyblBvcnQ6OkNyZWF0ZSgKKyAgYXV0
byBwb3J0ID0gVHVyblBvcnQ6OkNyZWF0ZVVuaXF1ZSgKICAgICAgIGFyZ3MubmV0d29ya190aHJl
YWQsIGFyZ3Muc29ja2V0X2ZhY3RvcnksIGFyZ3MubmV0d29yaywgdWRwX3NvY2tldCwKICAgICAg
IGFyZ3MudXNlcm5hbWUsIGFyZ3MucGFzc3dvcmQsICphcmdzLnNlcnZlcl9hZGRyZXNzLAogICAg
ICAgYXJncy5jb25maWctPmNyZWRlbnRpYWxzLCBhcmdzLmNvbmZpZy0+cHJpb3JpdHksIGFyZ3Mu
b3JpZ2luLAogICAgICAgYXJncy50dXJuX2N1c3RvbWl6ZXIpOwogICBwb3J0LT5TZXRUbHNDZXJ0
UG9saWN5KGFyZ3MuY29uZmlnLT50bHNfY2VydF9wb2xpY3kpOwotICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPFBvcnQ+KHBvcnQpOworICByZXR1cm4gc3RkOjptb3ZlKHBvcnQpOwogfQogCiBzdGQ6
OnVuaXF1ZV9wdHI8UG9ydD4gVHVyblBvcnRGYWN0b3J5OjpDcmVhdGUoY29uc3QgQ3JlYXRlUmVs
YXlQb3J0QXJncyYgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbWluX3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IG1heF9wb3J0KSB7Ci0gIFR1cm5Qb3J0KiBwb3J0ID0gVHVyblBvcnQ6
OkNyZWF0ZSgKKyAgYXV0byBwb3J0ID0gVHVyblBvcnQ6OkNyZWF0ZVVuaXF1ZSgKICAgICAgIGFy
Z3MubmV0d29ya190aHJlYWQsIGFyZ3Muc29ja2V0X2ZhY3RvcnksIGFyZ3MubmV0d29yaywgbWlu
X3BvcnQsCiAgICAgICBtYXhfcG9ydCwgYXJncy51c2VybmFtZSwgYXJncy5wYXNzd29yZCwgKmFy
Z3Muc2VydmVyX2FkZHJlc3MsCiAgICAgICBhcmdzLmNvbmZpZy0+Y3JlZGVudGlhbHMsIGFyZ3Mu
Y29uZmlnLT5wcmlvcml0eSwgYXJncy5vcmlnaW4sCiAgICAgICBhcmdzLmNvbmZpZy0+dGxzX2Fs
cG5fcHJvdG9jb2xzLCBhcmdzLmNvbmZpZy0+dGxzX2VsbGlwdGljX2N1cnZlcywKICAgICAgIGFy
Z3MudHVybl9jdXN0b21pemVyLCBhcmdzLmNvbmZpZy0+dGxzX2NlcnRfdmVyaWZpZXIpOwogICBw
b3J0LT5TZXRUbHNDZXJ0UG9saWN5KGFyZ3MuY29uZmlnLT50bHNfY2VydF9wb2xpY3kpOwotICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBvcnQ+KHBvcnQpOworICByZXR1cm4gc3RkOjptb3ZlKHBv
cnQpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL3N0dW5wcm9iZXIvc3R1bnByb2Jl
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9zdHVu
cHJvYmVyL3N0dW5wcm9iZXIuY2MKaW5kZXggNTE1MDZiNjcwZDc1MThhZjM3MWFkMGFjYzAwMjZh
ZTJhMzY1NzcxNi4uOTc3ODQxNmExYjAwOTEyMDVkMjdiZGRjNjdkZmE1ODc1YzJhNWMyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcDJwL3N0
dW5wcm9iZXIvc3R1bnByb2Jlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wMnAvc3R1bnByb2Jlci9zdHVucHJvYmVyLmNjCkBAIC03Nyw3ICs3Nyw3
IEBAIGNsYXNzIFN0dW5Qcm9iZXI6OlJlcXVlc3RlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xv
dHM8PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgdGltZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7
CiAKICAgY29uc3Qgc3RkOjp2ZWN0b3I8UmVxdWVzdCo+JiByZXF1ZXN0cygpIHsgcmV0dXJuIHJl
cXVlc3RzXzsgfQogCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBTdHVuUHJvYmVyOjpSZXF1ZXN0
ZXI6Ok9uU3R1blJlc3BvbnNlUmVjZWl2ZWQoCiAgICAgY29uc3QgY2hhciogYnVmLAogICAgIHNp
emVfdCBzaXplLAogICAgIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkciwKLSAgICBjb25z
dCBydGM6OlBhY2tldFRpbWUmIHRpbWUpIHsKKyAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRf
dGltZV91cyAqLykgewogICBSVENfRENIRUNLKHRocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlk
VGhyZWFkKCkpOwogICBSVENfRENIRUNLKHNvY2tldF8pOwogICBSZXF1ZXN0KiByZXF1ZXN0ID0g
R2V0UmVxdWVzdEJ5QWRkcmVzcyhhZGRyLmlwYWRkcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9zdHVucHJvYmVyL3N0dW5wcm9i
ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9zdHVu
cHJvYmVyL3N0dW5wcm9iZXIuaAppbmRleCA5ZjFkNDJmMzJjZTM3YjFiYjJlNTYzODc3MmE2NGE4
YjYxYTEzYTcxLi5hNGZlZWNkODEzMmE5ZjM1YjQ5Y2I5NzhjMzNiNjQ1NTBlZTY2Y2VhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wMnAvc3R1
bnByb2Jlci9zdHVucHJvYmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL3N0dW5wcm9iZXIvc3R1bnByb2Jlci5oCkBAIC0yMiw2ICsyMiw3IEBA
CiAjaW5jbHVkZSAicnRjX2Jhc2UvaXBhZGRyZXNzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0
d29yay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9zeXN0ZW0vcnRjX2V4cG9ydC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCiAKQEAgLTQ5LDcgKzUwLDcg
QEAgZW51bSBOYXRUeXBlIHsKICAgTkFUVFlQRV9OT05fU1lNTUVUUklDICAvLyBCZWhpbmQgYSBu
b24tc3ltbWV0cmljIE5BVC4KIH07CiAKLWNsYXNzIFN0dW5Qcm9iZXIgOiBwdWJsaWMgc2lnc2xv
dDo6aGFzX3Nsb3RzPD4geworY2xhc3MgUlRDX0VYUE9SVCBTdHVuUHJvYmVyIDogcHVibGljIHNp
Z3Nsb3Q6Omhhc19zbG90czw+IHsKICBwdWJsaWM6CiAgIGVudW0gU3RhdHVzIHsgICAgICAgLy8g
VXNlZCBpbiBVTUFfSElTVE9HUkFNX0VOVU1FUkFUSU9OLgogICAgIFNVQ0NFU1MsICAgICAgICAg
IC8vIFN1Y2Nlc3NmdWxseSByZWNlaXZlZCBieXRlcyBmcm9tIHRoZSBzZXJ2ZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9CVUlMRC5n
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL0JVSUxELmdu
CmluZGV4IDRlNmU1NTgxMGFkOWMyMGI4NDlkZTc1NmM5NzM3NDdhN2U2MzhhMzYuLjY1YWIzM2E1
MGI0OTdkMmRjMjAzNmMzNjUwNjI4YjhkNzQ4YmY4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL0JVSUxELmduCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL0JVSUxELmduCkBAIC0zMSw2ICsz
MSw3IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX3BjX2Jhc2UiKSB7CiAgIHNvdXJjZXMgPSBb
CiAgICAgImNoYW5uZWwuY2MiLAogICAgICJjaGFubmVsLmgiLAorICAgICJjaGFubmVsaW50ZXJm
YWNlLmgiLAogICAgICJjaGFubmVsbWFuYWdlci5jYyIsCiAgICAgImNoYW5uZWxtYW5hZ2VyLmgi
LAogICAgICJkdGxzc3J0cHRyYW5zcG9ydC5jYyIsCkBAIC04Nyw2ICs4OCw3IEBAIHJ0Y19zdGF0
aWNfbGlicmFyeSgicnRjX3BjX2Jhc2UiKSB7CiAgICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5
L3NpZ3Nsb3QiLAogICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJz
ZWlsLWNwcC9hYnNsL3N0cmluZ3MiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz
bC90eXBlczpvcHRpb25hbCIsCiAgIF0KIApAQCAtMjAzLDYgKzIwNSw3IEBAIHJ0Y19zdGF0aWNf
bGlicmFyeSgicGVlcmNvbm5lY3Rpb24iKSB7CiAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKICAgICAiLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAogICAgICIuLi9ydGNfYmFz
ZS9leHBlcmltZW50czpjb25nZXN0aW9uX2NvbnRyb2xsZXJfZXhwZXJpbWVudCIsCisgICAgIi4u
L3J0Y19iYXNlL3N5c3RlbTpydGNfZXhwb3J0IiwKICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFy
dHkvYmFzZTY0IiwKICAgICAiLi4vcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdCIsCiAgICAg
Ii4uL3N0YXRzIiwKQEAgLTIxMCw2MiArMjEzLDExIEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicGVl
cmNvbm5lY3Rpb24iKSB7CiAgICAgIi4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAg
ICAgIi4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
c3RyaW5ncyIsCiAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlv
bmFsIiwKICAgXQogfQogCi1ydGNfc3RhdGljX2xpYnJhcnkoImJ1aWx0aW5fdmlkZW9fYml0cmF0
ZV9hbGxvY2F0b3JfZmFjdG9yeSIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAiYnVpbHRpbl92aWRl
b19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNjIiwKLSAgICAiYnVpbHRpbl92aWRlb19iaXRy
YXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiLAotICBdCi0KLSAgZGVwcyA9IFsKLSAgICAiLi4vYXBp
L3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAotICAgICIuLi9tZWRpYTpy
dGNfbWVkaWFfYmFzZSIsCi0gICAgIi4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGlu
Z191dGlsaXR5IiwKLSAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6d2VicnRjX3ZwOV9oZWxw
ZXJzIiwKLSAgICAiLi4vcnRjX2Jhc2U6cHRyX3V0aWwiLAotICAgICIuLi9ydGNfYmFzZS9zeXN0
ZW06ZmFsbHRocm91Z2giLAotICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1v
cnkiLAotICBdCi19Ci0KLSMgVGhpcyB0YXJnZXQgaW1wbGVtZW50cyBDcmVhdGVQZWVyQ29ubmVj
dGlvbkZhY3RvcnkgbWV0aG9kcyB0aGF0IHdpbGwgY3JlYXRlIGEKLSMgUGVlckNvbm5lY3Rpb24g
d2lsbCBmdWxsIGZ1bmN0aW9uYWxpdHkgKGF1ZGlvLCB2aWRlbyBhbmQgZGF0YSkuIEFwcGxpY2F0
aW9ucwotIyB0aGF0IHdpc2ggdG8gcmVkdWNlIHRoZWlyIGJpbmFyeSBzaXplIGJ5IG9tbWl0dGlu
ZyBmdW5jdGlvbmFsaXR5IHRoZXkgZG9uJ3QKLSMgbmVlZCBzaG91bGQgdXNlIENyZWF0ZU1vZHVs
YXJDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkgaW5zdGVhZCwgdXNpbmcgdGhlCi0jICJwZWVy
Y29ubmVjdGlvbiIgYnVpbGQgdGFyZ2V0IGFuZCBvdGhlciB0YXJnZXRzIHNwZWNpZmljIHRvIHRo
ZWlyCi0jIHJlcXVyZW1lbnRzLiBTZWUgY29tbWVudCBpbiBwZWVyY29ubmVjdGlvbmZhY3Rvcnlp
bnRlcmZhY2UuaC4KLXJ0Y19zdGF0aWNfbGlicmFyeSgiY3JlYXRlX3BjX2ZhY3RvcnkiKSB7Ci0g
IHNvdXJjZXMgPSBbCi0gICAgImNyZWF0ZXBlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyIsCi0gIF0K
LQotICBkZXBzID0gWwotICAgICIuLi9hcGk6Y2FsbGZhY3RvcnlfYXBpIiwKLSAgICAiLi4vYXBp
OmxpYmppbmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAotICAgICIuLi9hcGkvYXVkaW86YXVkaW9f
bWl4ZXJfYXBpIiwKLSAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwK
LSAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKLSAgICAiLi4vY2Fs
bCIsCi0gICAgIi4uL2NhbGw6Y2FsbF9pbnRlcmZhY2VzIiwKLSAgICAiLi4vbG9nZ2luZzpydGNf
ZXZlbnRfbG9nX2FwaSIsCi0gICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19pbXBsX2Jhc2Ui
LAotICAgICIuLi9tZWRpYTpydGNfYXVkaW9fdmlkZW8iLAotICAgICIuLi9tZWRpYTpydGNfbWVk
aWFfYmFzZSIsCi0gICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZSIsCi0g
ICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKLSAgICAi
Li4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAotICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3Zl
ZCIsCi0gIF0KLQotICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0gJiYgaXNfY2xhbmcpIHsKLSAg
ICAjIFN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIENocm9taXVtIENsYW5nIHBsdWdpbiAoYnVn
cy53ZWJydGMub3JnLzE2MykuCi0gICAgc3VwcHJlc3NlZF9jb25maWdzICs9IFsgIi8vYnVpbGQv
Y29uZmlnL2NsYW5nOmZpbmRfYmFkX2NvbnN0cnVjdHMiIF0KLSAgfQotfQotCiBydGNfc291cmNl
X3NldCgibGliamluZ2xlX3BlZXJjb25uZWN0aW9uIikgewogICB2aXNpYmlsaXR5ID0gWyAiKiIg
XQogICBhbGxvd19wb2lzb24gPSBbCkBAIC0yNzMsOCArMjI1LDggQEAgcnRjX3NvdXJjZV9zZXQo
ImxpYmppbmdsZV9wZWVyY29ubmVjdGlvbiIpIHsKICAgICAic29mdHdhcmVfdmlkZW9fY29kZWNz
IiwgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvNzkyNSk6IFJlbW92ZS4KICAgXQogICBkZXBzID0g
WwotICAgICI6Y3JlYXRlX3BjX2ZhY3RvcnkiLAogICAgICI6cGVlcmNvbm5lY3Rpb24iLAorICAg
ICIuLi9hcGk6Y3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkiLAogICAgICIuLi9hcGk6bGli
amluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgIF0KIH0KQEAgLTI5Myw2ICsyNDUsNyBAQCBp
ZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJydGNwbXV4ZmlsdGVyX3VuaXR0ZXN0LmNj
IiwKICAgICAgICJydHB0cmFuc3BvcnRfdW5pdHRlc3QuY2MiLAogICAgICAgInJ0cHRyYW5zcG9y
dHRlc3R1dGlsLmgiLAorICAgICAgInNlc3Npb25kZXNjcmlwdGlvbl91bml0dGVzdC5jYyIsCiAg
ICAgICAic3J0cGZpbHRlcl91bml0dGVzdC5jYyIsCiAgICAgICAic3J0cHNlc3Npb25fdW5pdHRl
c3QuY2MiLAogICAgICAgInNydHB0ZXN0dXRpbC5oIiwKQEAgLTMxNiw2ICsyNjksNyBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6cnRjX3BjIiwKICAgICAgICI6cnRjX3BjX2Jh
c2UiLAogICAgICAgIi4uL2FwaTphcnJheV92aWV3IiwKKyAgICAgICIuLi9hcGk6ZmFrZV9tZWRp
YV90cmFuc3BvcnQiLAogICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBp
IiwKICAgICAgICIuLi9jYWxsOnJ0cF9pbnRlcmZhY2VzIiwKICAgICAgICIuLi9sb2dnaW5nOnJ0
Y19ldmVudF9sb2dfYXBpIiwKQEAgLTMyNSw2ICsyNzksNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICAgICIuLi9wMnA6cDJwX3Rlc3RfdXRpbHMiLAogICAgICAgIi4uL3AycDpydGNf
cDJwIiwKICAgICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICAgIi4uL3J0Y19iYXNlOmd1
bml0X2hlbHBlcnMiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKICAgICAgICIuLi9y
dGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
dGVzdHNfbWFpbiIsCkBAIC0zNTMsNiArMzA4LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7
CiAgICAgXQogICAgIGRlcHMgPSBbCiAgICAgICAiOnBjX3Rlc3RfdXRpbHMiLAorICAgICAgIi4u
L2FwaTpjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeSIsCiAgICAgICAiLi4vYXBpOmxpYmpp
bmdsZV9wZWVyY29ubmVjdGlvbl9hcGkiLAogICAgICAgIi4uL2FwaTpydGNfc3RhdHNfYXBpIiwK
ICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
IiwKQEAgLTM2Myw2ICszMTksNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIu
Li9wMnA6cDJwX3Rlc3RfdXRpbHMiLAogICAgICAgIi4uL3AycDpydGNfcDJwIiwKICAgICAgICIu
Li9wYzpwZWVyY29ubmVjdGlvbiIsCisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIs
CiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19i
YXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIs
CkBAIC0zOTEsNiArMzQ4LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAidGVz
dC9mYWtldmlkZW90cmFja3JlbmRlcmVyLmgiLAogICAgICAgInRlc3QvZmFrZXZpZGVvdHJhY2tz
b3VyY2UuaCIsCiAgICAgICAidGVzdC9mcmFtZWdlbmVyYXRvcmNhcHR1cmVydmlkZW90cmFja3Nv
dXJjZS5oIiwKKyAgICAgICJ0ZXN0L21vY2tfY2hhbm5lbGludGVyZmFjZS5oIiwKICAgICAgICJ0
ZXN0L21vY2tfZGF0YWNoYW5uZWwuaCIsCiAgICAgICAidGVzdC9tb2NrX3J0cHJlY2VpdmVyaW50
ZXJuYWwuaCIsCiAgICAgICAidGVzdC9tb2NrX3J0cHNlbmRlcmludGVybmFsLmgiLApAQCAtNDA2
LDYgKzM2NCw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIjpwZWVyY29ubmVj
dGlvbiIsCiAgICAgICAiOnJ0Y19wY19iYXNlIiwKICAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwK
KyAgICAgICIuLi9hcGk6Y3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkiLAogICAgICAgIi4u
L2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICIuLi9hcGk6bGliamlu
Z2xlX3BlZXJjb25uZWN0aW9uX3Rlc3RfYXBpIiwKICAgICAgICIuLi9hcGk6cnRjX3N0YXRzX2Fw
aSIsCkBAIC00MTksMTIgKzM3OCwxMyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAg
ICIuLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCiAgICAgICAiLi4vbWVkaWE6cnRjX21lZGlhX3Rl
c3RzX3V0aWxzIiwKICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2Ui
LAorICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAgIi4uL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICIuLi9wMnA6
cDJwX3Rlc3RfdXRpbHMiLAogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLi4v
cnRjX2Jhc2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAog
ICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAgICIuLi9ydGNfYmFz
ZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX3Rhc2tfcXVl
dWUiLAogICAgICAgIi4uL3J0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3QiLAogICAgICAgIi4u
L3Rlc3Q6dGVzdF9zdXBwb3J0IiwKQEAgLTQ3MCw2ICs0MzAsNyBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICAgICJydHBtZWRpYXV0aWxzX3VuaXR0ZXN0LmNjIiwKICAgICAgICJydHBw
YXJhbWV0ZXJzY29udmVyc2lvbl91bml0dGVzdC5jYyIsCiAgICAgICAicnRwc2VuZGVycmVjZWl2
ZXJfdW5pdHRlc3QuY2MiLAorICAgICAgInJ0cHRyYW5zY2VpdmVyX3VuaXR0ZXN0LmNjIiwKICAg
ICAgICJzY3RwdXRpbHNfdW5pdHRlc3QuY2MiLAogICAgICAgInN0YXRzY29sbGVjdG9yX3VuaXR0
ZXN0LmNjIiwKICAgICAgICJ0ZXN0L2Zha2VhdWRpb2NhcHR1cmVtb2R1bGVfdW5pdHRlc3QuY2Mi
LApAQCAtNDkyLDE3ICs0NTMsMjMgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgZGVw
cyA9IFsKICAgICAgICI6cGVlcmNvbm5lY3Rpb24iLAogICAgICAgIjpydGNfcGNfYmFzZSIsCi0g
ICAgICAiLi4vYXBpOmZha2VfZnJhbWVfY3J5cHRvIiwKKyAgICAgICIuLi9hcGk6Y3JlYXRlX3Bl
ZXJjb25uZWN0aW9uX2ZhY3RvcnkiLAorICAgICAgIi4uL2FwaTpmYWtlX2ZyYW1lX2RlY3J5cHRv
ciIsCisgICAgICAiLi4vYXBpOmZha2VfZnJhbWVfZW5jcnlwdG9yIiwKICAgICAgICIuLi9hcGk6
bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCisgICAgICAiLi4vYXBpOmxvb3BiYWNrX21l
ZGlhX3RyYW5zcG9ydCIsCiAgICAgICAiLi4vYXBpOm1vY2tfcnRwIiwKICAgICAgICIuLi9hcGkv
dW5pdHM6dGltZV9kZWx0YSIsCiAgICAgICAiLi4vbG9nZ2luZzpmYWtlX3J0Y19ldmVudF9sb2ci
LAogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRf
aGVscGVycyIsCisgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAogICAg
ICAgIi4uL3J0Y19iYXNlOnN0cmluZ3V0aWxzIiwKICAgICAgICIuLi9ydGNfYmFzZS90aGlyZF9w
YXJ0eS9iYXNlNjQiLAogICAgICAgIi4uL3N5c3RlbV93cmFwcGVyczptZXRyaWNzIiwKICAgICAg
ICIuLi90ZXN0OmZpbGV1dGlscyIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdz
IiwKICAgICBdCiAgICAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgIGRlcHMgKz0gWyAiOmFuZHJv
aWRfYmxhY2tfbWFnaWMiIF0KQEAgLTUxMyw2ICs0ODAsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICAgICI6cGNfdGVzdF91dGlscyIsCiAgICAgICAiLi46d2VicnRjX2NvbW1vbiIs
CiAgICAgICAiLi4vYXBpOmNhbGxmYWN0b3J5X2FwaSIsCisgICAgICAiLi4vYXBpOmZha2VfbWVk
aWFfdHJhbnNwb3J0IiwKICAgICAgICIuLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9uX3Rl
c3RfYXBpIiwKICAgICAgICIuLi9hcGk6cnRjX3N0YXRzX2FwaSIsCiAgICAgICAiLi4vYXBpL2F1
ZGlvX2NvZGVjczphdWRpb19jb2RlY3NfYXBpIiwKQEAgLTUzMSw2ICs0OTksNyBAQCBpZiAocnRj
X2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIuLi9tZWRpYTpydGNfZGF0YSIsICAjIFRPRE8ocGhv
Z2x1bmQpOiBBRkFJSyBvbmx5IHVzZWQgZm9yIG9uZSBzY3RwIGNvbnN0YW50LgogICAgICAgIi4u
L21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKICAgICAgICIuLi9tZWRpYTpydGNfbWVkaWFfdGVzdHNf
dXRpbHMiLAorICAgICAgIi4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICAg
Ii4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphdWRpb19wcm9jZXNzaW5nIiwKICAgICAgICIu
Li9tb2R1bGVzL3V0aWxpdHk6dXRpbGl0eSIsCiAgICAgICAiLi4vcDJwOnAycF90ZXN0X3V0aWxz
IiwKQEAgLTUzOSw3ICs1MDgsNiBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICIu
Li9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92
ZWQiLAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX21haW4iLAotICAgICAgIi4u
L3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNf
dGFza19xdWV1ZSIsCiAgICAgICAiLi4vcnRjX2Jhc2U6c2FmZV9jb252ZXJzaW9ucyIsCiAgICAg
ICAiLi4vdGVzdDphdWRpb19jb2RlY19tb2NrcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxs
b2NhdG9yX2ZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZDdkYWVhNmZhOThhZjdmMDBhOWJmZmY0MTVmOTk5
ZjhiNzllMzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVpbHRpbl92aWRl
b19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpbmNsdWRlICJwYy9idWlsdGluX3ZpZGVv
X2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCIKLQotI2luY2x1ZGUgImFic2wvbWVtb3J5L21l
bW9yeS5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvY29kZWMuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3N2Y19yYXRlX2FsbG9jYXRvci5oIgotI2luY2x1ZGUg
Im1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvZGVmYXVsdF92aWRlb19iaXRyYXRlX2FsbG9j
YXRvci5oIgotI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvc2ltdWxjYXN0
X3JhdGVfYWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2ZhbGx0aHJvdWdo
LmgiCi0KLW5hbWVzcGFjZSB3ZWJydGMgewotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBCdWlsdGlu
VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeQotICAgIDogcHVibGljIFZpZGVvQml0cmF0ZUFs
bG9jYXRvckZhY3RvcnkgewotIHB1YmxpYzoKLSAgQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRv
ckZhY3RvcnkoKSA9IGRlZmF1bHQ7Ci0gIH5CdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFj
dG9yeSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9CaXRy
YXRlQWxsb2NhdG9yPiBDcmVhdGVWaWRlb0JpdHJhdGVBbGxvY2F0b3IoCi0gICAgICBjb25zdCBW
aWRlb0NvZGVjJiBjb2RlYykgb3ZlcnJpZGUgewotICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Jp
dHJhdGVBbGxvY2F0b3I+IHJhdGVfYWxsb2NhdG9yOwotICAgIHN3aXRjaCAoY29kZWMuY29kZWNU
eXBlKSB7Ci0gICAgICBjYXNlIGtWaWRlb0NvZGVjVlA4OgotICAgICAgICBSVENfRkFMTFRIUk9V
R0goKTsKLSAgICAgIGNhc2Uga1ZpZGVvQ29kZWNIMjY0OgotICAgICAgICByYXRlX2FsbG9jYXRv
ci5yZXNldChuZXcgU2ltdWxjYXN0UmF0ZUFsbG9jYXRvcihjb2RlYykpOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2Uga1ZpZGVvQ29kZWNWUDk6Ci0gICAgICAgIHJhdGVfYWxsb2NhdG9yLnJl
c2V0KG5ldyBTdmNSYXRlQWxsb2NhdG9yKGNvZGVjKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgcmF0ZV9hbGxvY2F0b3IucmVzZXQobmV3IERlZmF1bHRWaWRlb0Jp
dHJhdGVBbGxvY2F0b3IoY29kZWMpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJhdGVfYWxsb2NhdG9y
OwotICB9Ci19OwotCi19ICAvLyBuYW1lc3BhY2UKLQotc3RkOjp1bmlxdWVfcHRyPFZpZGVvQml0
cmF0ZUFsbG9jYXRvckZhY3Rvcnk+Ci1DcmVhdGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9y
RmFjdG9yeSgpIHsKLSAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPEJ1aWx0aW5WaWRlb0JpdHJh
dGVBbGxvY2F0b3JGYWN0b3J5PigpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idWls
dGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0
b3JfZmFjdG9yeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGYyYWZjYmFiYTEy
NzgxNGQ2MzViYWU0MmYwMDNhZDMwMjBmZTQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdl
YlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYg
UENfQlVJTFRJTl9WSURFT19CSVRSQVRFX0FMTE9DQVRPUl9GQUNUT1JZX0hfCi0jZGVmaW5lIFBD
X0JVSUxUSU5fVklERU9fQklUUkFURV9BTExPQ0FUT1JfRkFDVE9SWV9IXwotCi0jaW5jbHVkZSA8
bWVtb3J5PgotCi0jaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2Zh
Y3RvcnkuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Jp
dHJhdGVBbGxvY2F0b3JGYWN0b3J5PgotQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRv
ckZhY3RvcnkoKTsKLQotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIFBDX0JV
SUxUSU5fVklERU9fQklUUkFURV9BTExPQ0FUT1JfRkFDVE9SWV9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmls
dGVyLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDFkMmJmOTVjYWI1NDcxNjIw
OTJkOTE5N2U3OTEwOTgxY2VlZmQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2J1bmRsZWZpbHRlci5jYworKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiAg
Q29weXJpZ2h0IDIwMDQgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGlu
dGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgotICovCi0KLSNpbmNsdWRlICJwYy9idW5kbGVmaWx0ZXIuaCIKLQotI2luY2x1ZGUgIm1l
ZGlhL2Jhc2UvcnRwdXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0KLW5h
bWVzcGFjZSBjcmlja2V0IHsKLQotQnVuZGxlRmlsdGVyOjpCdW5kbGVGaWx0ZXIoKSB7fQotCi1C
dW5kbGVGaWx0ZXI6On5CdW5kbGVGaWx0ZXIoKSB7fQotCi1ib29sIEJ1bmRsZUZpbHRlcjo6RGVt
dXhQYWNrZXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbikgewotICAvLyBGb3IgUlRQ
IHBhY2tldHMsIHdlIGNoZWNrIHdoZXRoZXIgdGhlIHBheWxvYWQgdHlwZSBjYW4gYmUgZm91bmQu
Ci0gIGlmICghSXNSdHBQYWNrZXQoZGF0YSwgbGVuKSkgewotICAgIHJldHVybiBmYWxzZTsKLSAg
fQotCi0gIGludCBwYXlsb2FkX3R5cGUgPSAwOwotICBpZiAoIUdldFJ0cFBheWxvYWRUeXBlKGRh
dGEsIGxlbiwgJnBheWxvYWRfdHlwZSkpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgcmV0
dXJuIEZpbmRQYXlsb2FkVHlwZShwYXlsb2FkX3R5cGUpOwotfQotCi12b2lkIEJ1bmRsZUZpbHRl
cjo6QWRkUGF5bG9hZFR5cGUoaW50IHBheWxvYWRfdHlwZSkgewotICBwYXlsb2FkX3R5cGVzXy5p
bnNlcnQocGF5bG9hZF90eXBlKTsKLX0KLQotYm9vbCBCdW5kbGVGaWx0ZXI6OkZpbmRQYXlsb2Fk
VHlwZShpbnQgcGxfdHlwZSkgY29uc3QgewotICByZXR1cm4gcGF5bG9hZF90eXBlc18uZmluZChw
bF90eXBlKSAhPSBwYXlsb2FkX3R5cGVzXy5lbmQoKTsKLX0KLQotdm9pZCBCdW5kbGVGaWx0ZXI6
OkNsZWFyQWxsUGF5bG9hZFR5cGVzKCkgewotICBwYXlsb2FkX3R5cGVzXy5jbGVhcigpOwotfQot
Ci19ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvYnVuZGxlZmlsdGVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZGU0NzdmNDU3ZjI5NDhiYjQzNDE1NzNlYWJkY2UyZDFmZjg5
OWM1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9idW5kbGVmaWx0ZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
LSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5k
ZWYgUENfQlVORExFRklMVEVSX0hfCi0jZGVmaW5lIFBDX0JVTkRMRUZJTFRFUl9IXwotCi0jaW5j
bHVkZSA8c3RkaW50Lmg+Ci0KLSNpbmNsdWRlIDxzZXQ+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0j
aW5jbHVkZSAibWVkaWEvYmFzZS9zdHJlYW1wYXJhbXMuaCIKLS8vI2luY2x1ZGUgInJ0Y19iYXNl
L2Jhc2ljdHlwZXMuaCIKLQotbmFtZXNwYWNlIGNyaWNrZXQgewotCi0vLyBJbiBjYXNlIG9mIHNp
bmdsZSBSVFAgc2Vzc2lvbiBhbmQgc2luZ2xlIHRyYW5zcG9ydCBjaGFubmVsLCBhbGwgc2Vzc2lv
bgotLy8gKG9yIG1lZGlhKSBjaGFubmVscyBzaGFyZSBhIGNvbW1vbiB0cmFuc3BvcnQgY2hhbm5l
bC4gSGVuY2UgdGhleSBhbGwgZ2V0Ci0vLyBTaWduYWxSZWFkUGFja2V0IHdoZW4gcGFja2V0IHJl
Y2VpdmVkIG9uIHRyYW5zcG9ydCBjaGFubmVsLiBUaGlzIHJlcXVpcmVzCi0vLyBjcmlja2V0OjpC
YXNlQ2hhbm5lbCB0byBrbm93IGFsbCB0aGUgdmFsaWQgc291cmNlcywgZWxzZSBtZWRpYSBjaGFu
bmVsCi0vLyB3aWxsIGRlY29kZSBpbnZhbGlkIHBhY2tldHMuCi0vLwotLy8gVGhpcyBjbGFzcyBk
ZXRlcm1pbmVzIHdoZXRoZXIgYSBwYWNrZXQgaXMgZGVzdGluZWQgZm9yIGNyaWNrZXQ6OkJhc2VD
aGFubmVsLgotLy8gVGhpcyBpcyBvbmx5IHRvIGJlIHVzZWQgZm9yIFJUUCBwYWNrZXRzIGFzIFJU
Q1AgcGFja2V0cyBhcmUgbm90IGZpbHRlcmVkLgotLy8gRm9yIFJUUCBwYWNrZXRzLCB0aGlzIGlz
IGRlY2lkZWQgYmFzZWQgb24gdGhlIHBheWxvYWQgdHlwZS4KLWNsYXNzIEJ1bmRsZUZpbHRlciB7
Ci0gcHVibGljOgotICBCdW5kbGVGaWx0ZXIoKTsKLSAgfkJ1bmRsZUZpbHRlcigpOwotCi0gIC8v
IERldGVybWluZXMgaWYgYSBSVFAgcGFja2V0IGJlbG9uZ3MgdG8gdmFsaWQgY3JpY2tldDo6QmFz
ZUNoYW5uZWwuCi0gIGJvb2wgRGVtdXhQYWNrZXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbik7Ci0KLSAgLy8gQWRkcyB0aGUgc3VwcG9ydGVkIHBheWxvYWQgdHlwZS4KLSAgdm9pZCBB
ZGRQYXlsb2FkVHlwZShpbnQgcGF5bG9hZF90eXBlKTsKLQotICAvLyBQdWJsaWMgZm9yIHVuaXR0
ZXN0cy4KLSAgYm9vbCBGaW5kUGF5bG9hZFR5cGUoaW50IHBsX3R5cGUpIGNvbnN0OwotICB2b2lk
IENsZWFyQWxsUGF5bG9hZFR5cGVzKCk7Ci0KLSBwcml2YXRlOgotICBzdGQ6OnNldDxpbnQ+IHBh
eWxvYWRfdHlwZXNfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKLQotI2VuZGlmICAv
LyBQQ19CVU5ETEVGSUxURVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZpbHRlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1bmRsZWZpbHRlcl91bml0dGVz
dC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdjYWRiZmJhYzYxM2M2NDI5YThi
ZTI3N2UyMWYzNzVjZmM0YmQ3MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9i
dW5kbGVmaWx0ZXJfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0v
KgotICogIENvcHlyaWdodCAyMDA0IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAicGMvYnVuZGxlZmlsdGVyLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLQotdXNpbmcgY3JpY2tldDo6U3RyZWFtUGFyYW1zOwotCi1z
dGF0aWMgY29uc3QgaW50IGtQYXlsb2FkVHlwZTEgPSAweDExOwotc3RhdGljIGNvbnN0IGludCBr
UGF5bG9hZFR5cGUyID0gMHgyMjsKLXN0YXRpYyBjb25zdCBpbnQga1BheWxvYWRUeXBlMyA9IDB4
MzM7Ci0KLS8vIFNTUkMgPSAweDExMTEsIFBheWxvYWQgdHlwZSA9IDB4MTEKLXN0YXRpYyBjb25z
dCB1bnNpZ25lZCBjaGFyIGtSdHBQYWNrZXRQdDFTc3JjMVtdID0gewotICAgIDB4ODAsIGtQYXls
b2FkVHlwZTEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsCi0gICAgMHgwMCwgMHgwMCwgICAgICAg
ICAgMHgwMCwgMHgwMCwgMHgxMSwgMHgxMSwKLX07Ci0KLS8vIFNTUkMgPSAweDIyMjIsIFBheWxv
YWQgdHlwZSA9IDB4MjIKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtSdHBQYWNrZXRQdDJT
c3JjMltdID0gewotICAgIDB4ODAsIDB4ODAgKyBrUGF5bG9hZFR5cGUyLAotICAgIDB4MDAsIDB4
MDEsCi0gICAgMHgwMCwgMHgwMCwKLSAgICAweDAwLCAweDAwLAotICAgIDB4MDAsIDB4MDAsCi0g
ICAgMHgyMiwgMHgyMiwKLX07Ci0KLS8vIFNTUkMgPSAweDIyMjIsIFBheWxvYWQgdHlwZSA9IDB4
MzMKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtSdHBQYWNrZXRQdDNTc3JjMltdID0gewot
ICAgIDB4ODAsIGtQYXlsb2FkVHlwZTMsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsCi0gICAgMHgw
MCwgMHgwMCwgICAgICAgICAgMHgwMCwgMHgwMCwgMHgyMiwgMHgyMiwKLX07Ci0KLS8vIEFuIFND
VFAgcGFja2V0Lgotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga1NjdHBQYWNrZXRbXSA9IHsK
LSAgICAweDAwLCAweDAxLCAweDAwLCAweDAxLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAw
LCAweDAwLAotICAgIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsCi19OwotCi1URVNUKEJ1bmRsZUZpbHRlclRlc3QsIFJ0cFBhY2tldFRl
c3QpIHsKLSAgY3JpY2tldDo6QnVuZGxlRmlsdGVyIGJ1bmRsZV9maWx0ZXI7Ci0gIGJ1bmRsZV9m
aWx0ZXIuQWRkUGF5bG9hZFR5cGUoa1BheWxvYWRUeXBlMSk7Ci0gIEVYUEVDVF9UUlVFKGJ1bmRs
ZV9maWx0ZXIuRGVtdXhQYWNrZXQoa1J0cFBhY2tldFB0MVNzcmMxLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrUnRwUGFja2V0UHQxU3NyYzEpKSk7Ci0g
IGJ1bmRsZV9maWx0ZXIuQWRkUGF5bG9hZFR5cGUoa1BheWxvYWRUeXBlMik7Ci0gIEVYUEVDVF9U
UlVFKGJ1bmRsZV9maWx0ZXIuRGVtdXhQYWNrZXQoa1J0cFBhY2tldFB0MlNzcmMyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrUnRwUGFja2V0UHQyU3Ny
YzIpKSk7Ci0KLSAgLy8gUGF5bG9hZCB0eXBlIDB4MzMgaXMgbm90IGFkZGVkLgotICBFWFBFQ1Rf
RkFMU0UoYnVuZGxlX2ZpbHRlci5EZW11eFBhY2tldChrUnRwUGFja2V0UHQzU3NyYzIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrUnRwUGFja2V0UHQz
U3NyYzIpKSk7Ci0gIC8vIFNpemUgaXMgdG9vIHNtYWxsLgotICBFWFBFQ1RfRkFMU0UoYnVuZGxl
X2ZpbHRlci5EZW11eFBhY2tldChrUnRwUGFja2V0UHQxU3NyYzEsIDExKSk7Ci0KLSAgYnVuZGxl
X2ZpbHRlci5DbGVhckFsbFBheWxvYWRUeXBlcygpOwotICBFWFBFQ1RfRkFMU0UoYnVuZGxlX2Zp
bHRlci5EZW11eFBhY2tldChrUnRwUGFja2V0UHQxU3NyYzEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrUnRwUGFja2V0UHQxU3NyYzEpKSk7Ci0gIEVY
UEVDVF9GQUxTRShidW5kbGVfZmlsdGVyLkRlbXV4UGFja2V0KGtSdHBQYWNrZXRQdDJTc3JjMiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGtSdHBQYWNr
ZXRQdDJTc3JjMikpKTsKLX0KLQotVEVTVChCdW5kbGVGaWx0ZXJUZXN0LCBJbnZhbGlkUnRwUGFj
a2V0KSB7Ci0gIGNyaWNrZXQ6OkJ1bmRsZUZpbHRlciBidW5kbGVfZmlsdGVyOwotICBFWFBFQ1Rf
RkFMU0UoYnVuZGxlX2ZpbHRlci5EZW11eFBhY2tldChrU2N0cFBhY2tldCwgc2l6ZW9mKGtTY3Rw
UGFja2V0KSkpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvY2hhbm5lbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL2NoYW5uZWwuY2MKaW5kZXggYjYzY2VhN2NlY2YzMDIxYzM2MmE3YTcy
ZDc4NDZjN2UyMTMyYWNmYS4uNjdkNjk4NDg3Y2U0Zjg5YmNkMmY5MjM2YjdjZWYwMjRmNmE5ZDRi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvY2hhbm5lbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9jaGFubmVsLmNjCkBAIC05Myw2ICs5Myw3IEBAIHZvaWQgUnRwU2VuZFBhcmFtZXRl
cnNGcm9tTWVkaWFEZXNjcmlwdGlvbigKICAgICBSdHBTZW5kUGFyYW1ldGVyczxDb2RlYz4qIHNl
bmRfcGFyYW1zKSB7CiAgIFJ0cFBhcmFtZXRlcnNGcm9tTWVkaWFEZXNjcmlwdGlvbihkZXNjLCBl
eHRlbnNpb25zLCBzZW5kX3BhcmFtcyk7CiAgIHNlbmRfcGFyYW1zLT5tYXhfYmFuZHdpZHRoX2Jw
cyA9IGRlc2MtPmJhbmR3aWR0aCgpOworICBzZW5kX3BhcmFtcy0+ZXh0bWFwX2FsbG93X21peGVk
ID0gZGVzYy0+ZXh0bWFwX2FsbG93X21peGVkKCk7CiB9CiAKIEJhc2VDaGFubmVsOjpCYXNlQ2hh
bm5lbChydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKQEAgLTEwMSw3ICsxMDIsNyBAQCBCYXNl
Q2hhbm5lbDo6QmFzZUNoYW5uZWwocnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhQ2hhbm5lbD4gbWVkaWFfY2hh
bm5lbCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVu
dF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMp
CisgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19v
cHRpb25zKQogICAgIDogd29ya2VyX3RocmVhZF8od29ya2VyX3RocmVhZCksCiAgICAgICBuZXR3
b3JrX3RocmVhZF8obmV0d29ya190aHJlYWQpLAogICAgICAgc2lnbmFsaW5nX3RocmVhZF8oc2ln
bmFsaW5nX3RocmVhZCksCkBAIC0xMTcsNiArMTE4LDExIEBAIEJhc2VDaGFubmVsOjpCYXNlQ2hh
bm5lbChydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKIEJhc2VDaGFubmVsOjp+QmFzZUNoYW5u
ZWwoKSB7CiAgIFRSQUNFX0VWRU5UMCgid2VicnRjIiwgIkJhc2VDaGFubmVsOjp+QmFzZUNoYW5u
ZWwiKTsKICAgUlRDX0RDSEVDS19SVU5fT04od29ya2VyX3RocmVhZF8pOworCisgIGlmIChtZWRp
YV90cmFuc3BvcnRfKSB7CisgICAgbWVkaWFfdHJhbnNwb3J0Xy0+U2V0TmV0d29ya0NoYW5nZUNh
bGxiYWNrKG51bGxwdHIpOworICB9CisKICAgLy8gRWF0cyBhbnkgb3V0c3RhbmRpbmcgbWVzc2Fn
ZXMgb3IgcGFja2V0cy4KICAgd29ya2VyX3RocmVhZF8tPkNsZWFyKCZpbnZva2VyXyk7CiAgIHdv
cmtlcl90aHJlYWRfLT5DbGVhcih0aGlzKTsKQEAgLTEzNiw4ICsxNDIsMTUgQEAgYm9vbCBCYXNl
Q2hhbm5lbDo6Q29ubmVjdFRvUnRwVHJhbnNwb3J0KCkgewogICAgICAgdGhpcywgJkJhc2VDaGFu
bmVsOjpPblRyYW5zcG9ydFJlYWR5VG9TZW5kKTsKICAgcnRwX3RyYW5zcG9ydF8tPlNpZ25hbFJ0
Y3BQYWNrZXRSZWNlaXZlZC5jb25uZWN0KAogICAgICAgdGhpcywgJkJhc2VDaGFubmVsOjpPblJ0
Y3BQYWNrZXRSZWNlaXZlZCk7Ci0gIHJ0cF90cmFuc3BvcnRfLT5TaWduYWxOZXR3b3JrUm91dGVD
aGFuZ2VkLmNvbm5lY3QoCi0gICAgICB0aGlzLCAmQmFzZUNoYW5uZWw6Ok9uTmV0d29ya1JvdXRl
Q2hhbmdlZCk7CisKKyAgLy8gSWYgbWVkaWEgdHJhbnNwb3J0IGlzIHVzZWQsIGl0J3MgcmVzcG9u
c2libGUgZm9yIHByb3ZpZGluZyBuZXR3b3JrCisgIC8vIHJvdXRlIGNoYW5nZWQgY2FsbGJhY2tz
LgorICBpZiAoIW1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBydHBfdHJhbnNwb3J0Xy0+U2lnbmFs
TmV0d29ya1JvdXRlQ2hhbmdlZC5jb25uZWN0KAorICAgICAgICB0aGlzLCAmQmFzZUNoYW5uZWw6
Ok9uTmV0d29ya1JvdXRlQ2hhbmdlZCk7CisgIH0KKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcv
OTcxOSk6IE1lZGlhIHRyYW5zcG9ydCBzaG91bGQgYWxzbyBiZSB1c2VkIHRvIHByb3ZpZGUKKyAg
Ly8gJ3dyaXRhYmxlJyBzdGF0ZSBoZXJlLgogICBydHBfdHJhbnNwb3J0Xy0+U2lnbmFsV3JpdGFi
bGVTdGF0ZS5jb25uZWN0KHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkJhc2VDaGFubmVsOjpPbldyaXRhYmxlU3RhdGUpOwogICBydHBfdHJhbnNw
b3J0Xy0+U2lnbmFsU2VudFBhY2tldC5jb25uZWN0KHRoaXMsCkBAIC0xNTUsMTkgKzE2OCwyOSBA
QCB2b2lkIEJhc2VDaGFubmVsOjpEaXNjb25uZWN0RnJvbVJ0cFRyYW5zcG9ydCgpIHsKICAgcnRw
X3RyYW5zcG9ydF8tPlNpZ25hbFNlbnRQYWNrZXQuZGlzY29ubmVjdCh0aGlzKTsKIH0KIAotdm9p
ZCBCYXNlQ2hhbm5lbDo6SW5pdF93KHdlYnJ0Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90
cmFuc3BvcnQpIHsKK3ZvaWQgQmFzZUNoYW5uZWw6OkluaXRfdyh3ZWJydGM6OlJ0cFRyYW5zcG9y
dEludGVybmFsKiBydHBfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCkgewogICBSVENfRENI
RUNLX1JVTl9PTih3b3JrZXJfdGhyZWFkXyk7CisgIG1lZGlhX3RyYW5zcG9ydF8gPSBtZWRpYV90
cmFuc3BvcnQ7CisKICAgbmV0d29ya190aHJlYWRfLT5JbnZva2U8dm9pZD4oCiAgICAgICBSVENf
RlJPTV9IRVJFLCBbdGhpcywgcnRwX3RyYW5zcG9ydF0geyBTZXRSdHBUcmFuc3BvcnQocnRwX3Ry
YW5zcG9ydCk7IH0pOwogCiAgIC8vIEJvdGggUlRQIGFuZCBSVENQIGNoYW5uZWxzIHNob3VsZCBi
ZSBzZXQsIHdlIGNhbiBjYWxsIFNldEludGVyZmFjZSBvbgogICAvLyB0aGUgbWVkaWEgY2hhbm5l
bCBhbmQgaXQgY2FuIHNldCBuZXR3b3JrIG9wdGlvbnMuCi0gIG1lZGlhX2NoYW5uZWxfLT5TZXRJ
bnRlcmZhY2UodGhpcyk7CisgIG1lZGlhX2NoYW5uZWxfLT5TZXRJbnRlcmZhY2UodGhpcywgbWVk
aWFfdHJhbnNwb3J0KTsKKworICBSVENfTE9HKExTX0lORk8pIDw8ICJCYXNlQ2hhbm5lbDo6SW5p
dF93LCBtZWRpYV90cmFuc3BvcnQ9IgorICAgICAgICAgICAgICAgICAgIDw8IChtZWRpYV90cmFu
c3BvcnRfICE9IG51bGxwdHIpOworICBpZiAobWVkaWFfdHJhbnNwb3J0XykgeworICAgIG1lZGlh
X3RyYW5zcG9ydF8tPlNldE5ldHdvcmtDaGFuZ2VDYWxsYmFjayh0aGlzKTsKKyAgfQogfQogCiB2
b2lkIEJhc2VDaGFubmVsOjpEZWluaXQoKSB7CiAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF8t
PklzQ3VycmVudCgpKTsKLSAgbWVkaWFfY2hhbm5lbF8tPlNldEludGVyZmFjZShOVUxMKTsKKyAg
bWVkaWFfY2hhbm5lbF8tPlNldEludGVyZmFjZSgvKmlmYWNlPSovbnVsbHB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogICAv
LyBQYWNrZXRzIGFycml2ZSBvbiB0aGUgbmV0d29yayB0aHJlYWQsIHByb2Nlc3NpbmcgcGFja2V0
cyBjYWxscyB2aXJ0dWFsCiAgIC8vIGZ1bmN0aW9ucywgc28gbmVlZCB0byBzdG9wIHRoaXMgcHJv
Y2VzcyBpbiBEZWluaXQgdGhhdCBpcyBjYWxsZWQgaW4KICAgLy8gZGVyaXZlZCBjbGFzc2VzIGRl
c3RydWN0b3IuCkBAIC0zNTAsNiArMzczLDggQEAgdm9pZCBCYXNlQ2hhbm5lbDo6T25Xcml0YWJs
ZVN0YXRlKGJvb2wgd3JpdGFibGUpIHsKIAogdm9pZCBCYXNlQ2hhbm5lbDo6T25OZXR3b3JrUm91
dGVDaGFuZ2VkKAogICAgIGFic2w6Om9wdGlvbmFsPHJ0Yzo6TmV0d29ya1JvdXRlPiBuZXR3b3Jr
X3JvdXRlKSB7CisgIFJUQ19MT0coTFNfSU5GTykgPDwgIk5ldHdvcmsgcm91dGUgd2FzIGNoYW5n
ZWQuIjsKKwogICBSVENfRENIRUNLKG5ldHdvcmtfdGhyZWFkXy0+SXNDdXJyZW50KCkpOwogICBy
dGM6Ok5ldHdvcmtSb3V0ZSBuZXdfcm91dGU7CiAgIGlmIChuZXR3b3JrX3JvdXRlKSB7CkBAIC00
MzksMTMgKzQ2NCwxMiBAQCB2b2lkIEJhc2VDaGFubmVsOjpPblJ0cFBhY2tldChjb25zdCB3ZWJy
dGM6OlJ0cFBhY2tldFJlY2VpdmVkJiBwYXJzZWRfcGFja2V0KSB7CiAgIC8vIFJ0cFBhY2tldFJl
Y2VpdmVkLmFycml2YWxfdGltZV9tcyA9IChQYWNrZXRUaW1lICsgNTAwKSAvIDEwMDA7CiAgIC8v
IE5vdGU6IFRoZSB8bm90X2JlZm9yZXwgZmllbGQgaXMgYWx3YXlzIDAgaGVyZS4gVGhpcyBmaWVs
ZCBpcyBub3QgY3VycmVudGx5CiAgIC8vIHVzZWQsIHNvIGl0IHNob3VsZCBiZSBmaW5lLgotICBp
bnQ2NF90IHRpbWVzdGFtcCA9IC0xOworICBpbnQ2NF90IHRpbWVzdGFtcF91cyA9IC0xOwogICBp
ZiAocGFyc2VkX3BhY2tldC5hcnJpdmFsX3RpbWVfbXMoKSA+IDApIHsKLSAgICB0aW1lc3RhbXAg
PSBwYXJzZWRfcGFja2V0LmFycml2YWxfdGltZV9tcygpICogMTAwMDsKKyAgICB0aW1lc3RhbXBf
dXMgPSBwYXJzZWRfcGFja2V0LmFycml2YWxfdGltZV9tcygpICogMTAwMDsKICAgfQotICBydGM6
OlBhY2tldFRpbWUgcGFja2V0X3RpbWUodGltZXN0YW1wLCAvKm5vdF9iZWZvcmU9Ki8wKTsKIAot
ICBPblBhY2tldFJlY2VpdmVkKC8qcnRjcD0qL2ZhbHNlLCBwYXJzZWRfcGFja2V0LkJ1ZmZlcigp
LCBwYWNrZXRfdGltZSk7CisgIE9uUGFja2V0UmVjZWl2ZWQoLypydGNwPSovZmFsc2UsIHBhcnNl
ZF9wYWNrZXQuQnVmZmVyKCksIHRpbWVzdGFtcF91cyk7CiB9CiAKIHZvaWQgQmFzZUNoYW5uZWw6
OlVwZGF0ZVJ0cEhlYWRlckV4dGVuc2lvbk1hcCgKQEAgLTQ3MiwxMyArNDk2LDEzIEBAIGJvb2wg
QmFzZUNoYW5uZWw6OlJlZ2lzdGVyUnRwRGVtdXhlclNpbmsoKSB7CiB9CiAKIHZvaWQgQmFzZUNo
YW5uZWw6Ok9uUnRjcFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFj
a2V0VGltZSYgcGFja2V0X3RpbWUpIHsKLSAgT25QYWNrZXRSZWNlaXZlZCgvKnJ0Y3A9Ki90cnVl
LCAqcGFja2V0LCBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CisgIE9uUGFja2V0UmVjZWl2ZWQoLypy
dGNwPSovdHJ1ZSwgKnBhY2tldCwgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIEJhc2VDaGFu
bmVsOjpPblBhY2tldFJlY2VpdmVkKGJvb2wgcnRjcCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgcGFja2V0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFj
a2V0X3RpbWVfdXMpIHsKICAgaWYgKCFoYXNfcmVjZWl2ZWRfcGFja2V0XyAmJiAhcnRjcCkgewog
ICAgIGhhc19yZWNlaXZlZF9wYWNrZXRfID0gdHJ1ZTsKICAgICBzaWduYWxpbmdfdGhyZWFkKCkt
PlBvc3QoUlRDX0ZST01fSEVSRSwgdGhpcywgTVNHX0ZJUlNUUEFDS0VUUkVDRUlWRUQpOwpAQCAt
NTA0LDIxICs1MjgsMjEgQEAgdm9pZCBCYXNlQ2hhbm5lbDo6T25QYWNrZXRSZWNlaXZlZChib29s
IHJ0Y3AsCiAKICAgaW52b2tlcl8uQXN5bmNJbnZva2U8dm9pZD4oCiAgICAgICBSVENfRlJPTV9I
RVJFLCB3b3JrZXJfdGhyZWFkXywKLSAgICAgIEJpbmQoJkJhc2VDaGFubmVsOjpQcm9jZXNzUGFj
a2V0LCB0aGlzLCBydGNwLCBwYWNrZXQsIHBhY2tldF90aW1lKSk7CisgICAgICBCaW5kKCZCYXNl
Q2hhbm5lbDo6UHJvY2Vzc1BhY2tldCwgdGhpcywgcnRjcCwgcGFja2V0LCBwYWNrZXRfdGltZV91
cykpOwogfQogCiB2b2lkIEJhc2VDaGFubmVsOjpQcm9jZXNzUGFja2V0KGJvb2wgcnRjcCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZl
ciYgcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBh
Y2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKICAgUlRDX0RDSEVDSyh3b3JrZXJfdGhyZWFkXy0+
SXNDdXJyZW50KCkpOwogCiAgIC8vIE5lZWQgdG8gY29weSB2YXJpYWJsZSBiZWNhdXNlIE9uUnRj
cFJlY2VpdmVkL09uUGFja2V0UmVjZWl2ZWQKICAgLy8gcmVxdWlyZXMgbm9uLWNvbnN0IHBvaW50
ZXIgdG8gYnVmZmVyLiBUaGlzIGRvZXNuJ3QgbWVtY3B5IHRoZSBhY3R1YWwgZGF0YS4KICAgcnRj
OjpDb3B5T25Xcml0ZUJ1ZmZlciBkYXRhKHBhY2tldCk7CiAgIGlmIChydGNwKSB7Ci0gICAgbWVk
aWFfY2hhbm5lbF8tPk9uUnRjcFJlY2VpdmVkKCZkYXRhLCBwYWNrZXRfdGltZSk7CisgICAgbWVk
aWFfY2hhbm5lbF8tPk9uUnRjcFJlY2VpdmVkKCZkYXRhLCBwYWNrZXRfdGltZV91cyk7CiAgIH0g
ZWxzZSB7Ci0gICAgbWVkaWFfY2hhbm5lbF8tPk9uUGFja2V0UmVjZWl2ZWQoJmRhdGEsIHBhY2tl
dF90aW1lKTsKKyAgICBtZWRpYV9jaGFubmVsXy0+T25QYWNrZXRSZWNlaXZlZCgmZGF0YSwgcGFj
a2V0X3RpbWVfdXMpOwogICB9CiB9CiAKQEAgLTY3Myw3ICs2OTcsNyBAQCBib29sIEJhc2VDaGFu
bmVsOjpVcGRhdGVSZW1vdGVTdHJlYW1zX3coCiBSdHBIZWFkZXJFeHRlbnNpb25zIEJhc2VDaGFu
bmVsOjpHZXRGaWx0ZXJlZFJ0cEhlYWRlckV4dGVuc2lvbnMoCiAgICAgY29uc3QgUnRwSGVhZGVy
RXh0ZW5zaW9ucyYgZXh0ZW5zaW9ucykgewogICBSVENfRENIRUNLKHJ0cF90cmFuc3BvcnRfKTsK
LSAgaWYgKGNyeXB0b19vcHRpb25zXy5lbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5z
aW9ucykgeworICBpZiAoY3J5cHRvX29wdGlvbnNfLnNydHAuZW5hYmxlX2VuY3J5cHRlZF9ydHBf
aGVhZGVyX2V4dGVuc2lvbnMpIHsKICAgICBSdHBIZWFkZXJFeHRlbnNpb25zIGZpbHRlcmVkOwog
ICAgIGF1dG8gcHJlZCA9IFtdKGNvbnN0IHdlYnJ0Yzo6UnRwRXh0ZW5zaW9uJiBleHRlbnNpb24p
IHsKICAgICAgIHJldHVybiAhZXh0ZW5zaW9uLmVuY3J5cHQ7CkBAIC03MDAsNyArNzI0LDcgQEAg
dm9pZCBCYXNlQ2hhbm5lbDo6T25NZXNzYWdlKHJ0Yzo6TWVzc2FnZSogcG1zZykgewogICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgTVNHX0ZJUlNUUEFDS0VUUkVDRUlWRUQ6IHsKLSAgICAg
IFNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWQodGhpcyk7CisgICAgICBTaWduYWxGaXJzdFBhY2tl
dFJlY2VpdmVkXyh0aGlzKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQpAQCAtNzQyLDcgKzc2
Niw3IEBAIFZvaWNlQ2hhbm5lbDo6Vm9pY2VDaGFubmVsKHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhy
ZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZvaWNlTWVk
aWFDaGFubmVsPiBtZWRpYV9jaGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3J5
cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdl
YnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucykKICAgICA6IEJhc2VDaGFubmVsKHdv
cmtlcl90aHJlYWQsCiAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3RocmVhZCwKICAgICAgICAg
ICAgICAgICAgIHNpZ25hbGluZ190aHJlYWQsCkBAIC03NjUsNiArNzg5LDExIEBAIHZvaWQgQmFz
ZUNoYW5uZWw6OlVwZGF0ZU1lZGlhU2VuZFJlY3ZTdGF0ZSgpIHsKICAgICAgIEJpbmQoJkJhc2VD
aGFubmVsOjpVcGRhdGVNZWRpYVNlbmRSZWN2U3RhdGVfdywgdGhpcykpOwogfQogCit2b2lkIEJh
c2VDaGFubmVsOjpPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCisgICAgY29uc3QgcnRjOjpOZXR3b3Jr
Um91dGUmIG5ldHdvcmtfcm91dGUpIHsKKyAgT25OZXR3b3JrUm91dGVDaGFuZ2VkKGFic2w6Om1h
a2Vfb3B0aW9uYWwobmV0d29ya19yb3V0ZSkpOworfQorCiB2b2lkIFZvaWNlQ2hhbm5lbDo6VXBk
YXRlTWVkaWFTZW5kUmVjdlN0YXRlX3coKSB7CiAgIC8vIFJlbmRlciBpbmNvbWluZyBkYXRhIGlm
IHdlJ3JlIHRoZSBhY3RpdmUgY2FsbCwgYW5kIHdlIGhhdmUgdGhlIGxvY2FsCiAgIC8vIGNvbnRl
bnQuIFdlIHJlY2VpdmUgZGF0YSBvbiB0aGUgZGVmYXVsdCBjaGFubmVsIGFuZCBtdWx0aXBsZXhl
ZCBzdHJlYW1zLgpAQCAtNzk3LDYgKzgyNiw3IEBAIGJvb2wgVm9pY2VDaGFubmVsOjpTZXRMb2Nh
bENvbnRlbnRfdyhjb25zdCBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogY29udGVudCwKICAgUnRw
SGVhZGVyRXh0ZW5zaW9ucyBydHBfaGVhZGVyX2V4dGVuc2lvbnMgPQogICAgICAgR2V0RmlsdGVy
ZWRSdHBIZWFkZXJFeHRlbnNpb25zKGF1ZGlvLT5ydHBfaGVhZGVyX2V4dGVuc2lvbnMoKSk7CiAg
IFVwZGF0ZVJ0cEhlYWRlckV4dGVuc2lvbk1hcChydHBfaGVhZGVyX2V4dGVuc2lvbnMpOworICBt
ZWRpYV9jaGFubmVsKCktPlNldEV4dG1hcEFsbG93TWl4ZWQoYXVkaW8tPmV4dG1hcF9hbGxvd19t
aXhlZCgpKTsKIAogICBBdWRpb1JlY3ZQYXJhbWV0ZXJzIHJlY3ZfcGFyYW1zID0gbGFzdF9yZWN2
X3BhcmFtc187CiAgIFJ0cFBhcmFtZXRlcnNGcm9tTWVkaWFEZXNjcmlwdGlvbihhdWRpbywgcnRw
X2hlYWRlcl9leHRlbnNpb25zLCAmcmVjdl9wYXJhbXMpOwpAQCAtODgxLDcgKzkxMSw3IEBAIFZp
ZGVvQ2hhbm5lbDo6VmlkZW9DaGFubmVsKHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvTWVkaWFDaGFubmVs
PiBtZWRpYV9jaGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3J0
cF9yZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6Q3J5cHRvT3B0aW9u
cyBjcnlwdG9fb3B0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5
cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9ucykKICAgICA6IEJhc2VDaGFubmVsKHdvcmtlcl90aHJl
YWQsCiAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3RocmVhZCwKICAgICAgICAgICAgICAgICAg
IHNpZ25hbGluZ190aHJlYWQsCkBAIC05MzIsNiArOTYyLDcgQEAgYm9vbCBWaWRlb0NoYW5uZWw6
OlNldExvY2FsQ29udGVudF93KGNvbnN0IE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBjb250ZW50
LAogICBSdHBIZWFkZXJFeHRlbnNpb25zIHJ0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9CiAgICAgICBH
ZXRGaWx0ZXJlZFJ0cEhlYWRlckV4dGVuc2lvbnModmlkZW8tPnJ0cF9oZWFkZXJfZXh0ZW5zaW9u
cygpKTsKICAgVXBkYXRlUnRwSGVhZGVyRXh0ZW5zaW9uTWFwKHJ0cF9oZWFkZXJfZXh0ZW5zaW9u
cyk7CisgIG1lZGlhX2NoYW5uZWwoKS0+U2V0RXh0bWFwQWxsb3dNaXhlZCh2aWRlby0+ZXh0bWFw
X2FsbG93X21peGVkKCkpOwogCiAgIFZpZGVvUmVjdlBhcmFtZXRlcnMgcmVjdl9wYXJhbXMgPSBs
YXN0X3JlY3ZfcGFyYW1zXzsKICAgUnRwUGFyYW1ldGVyc0Zyb21NZWRpYURlc2NyaXB0aW9uKHZp
ZGVvLCBydHBfaGVhZGVyX2V4dGVuc2lvbnMsICZyZWN2X3BhcmFtcyk7CkBAIC0xMDE5LDcgKzEw
NTAsNyBAQCBSdHBEYXRhQ2hhbm5lbDo6UnRwRGF0YUNoYW5uZWwocnRjOjpUaHJlYWQqIHdvcmtl
cl90aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PERhdGFNZWRpYUNoYW5uZWw+IG1lZGlhX2NoYW5uZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHNydHBfcmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9u
cykKICAgICA6IEJhc2VDaGFubmVsKHdvcmtlcl90aHJlYWQsCiAgICAgICAgICAgICAgICAgICBu
ZXR3b3JrX3RocmVhZCwKICAgICAgICAgICAgICAgICAgIHNpZ25hbGluZ190aHJlYWQsCkBAIC0x
MDM2LDcgKzEwNjcsNyBAQCBSdHBEYXRhQ2hhbm5lbDo6flJ0cERhdGFDaGFubmVsKCkgewogfQog
CiB2b2lkIFJ0cERhdGFDaGFubmVsOjpJbml0X3cod2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5h
bCogcnRwX3RyYW5zcG9ydCkgewotICBCYXNlQ2hhbm5lbDo6SW5pdF93KHJ0cF90cmFuc3BvcnQp
OworICBCYXNlQ2hhbm5lbDo6SW5pdF93KHJ0cF90cmFuc3BvcnQsIC8qbWVkaWFfdHJhbnNwb3J0
PSovbnVsbHB0cik7CiAgIG1lZGlhX2NoYW5uZWwoKS0+U2lnbmFsRGF0YVJlY2VpdmVkLmNvbm5l
Y3QodGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
UnRwRGF0YUNoYW5uZWw6Ok9uRGF0YVJlY2VpdmVkKTsKICAgbWVkaWFfY2hhbm5lbCgpLT5TaWdu
YWxSZWFkeVRvU2VuZC5jb25uZWN0KApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbC5oCmluZGV4IGJhNTg0NjkwYmE2YWQwNzU1
N2JjMTk2YTE2MDMzMGUxZDg0NGY1MDcuLjYyNjRiYjM5MDQxYWU3ZDNkNGExYTVlNzI3MGY0MzQ4
YzIzNGEyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL2NoYW5uZWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9jaGFubmVsLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJtZWRp
YS9iYXNlL3N0cmVhbXBhcmFtcy5oIgogI2luY2x1ZGUgInAycC9iYXNlL2R0bHN0cmFuc3BvcnRp
bnRlcm5hbC5oIgogI2luY2x1ZGUgInAycC9iYXNlL3BhY2tldHRyYW5zcG9ydGludGVybmFsLmgi
CisjaW5jbHVkZSAicGMvY2hhbm5lbGludGVyZmFjZS5oIgogI2luY2x1ZGUgInBjL2R0bHNzcnRw
dHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAicGMvbWVkaWFzZXNzaW9uLmgiCiAjaW5jbHVkZSAicGMv
cnRwdHJhbnNwb3J0LmgiCkBAIC00MiwxMiArNDMsMTIgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiBjbGFzcyBBdWRpb1NpbmtJbnRlcmZhY2U7CitjbGFzcyBNZWRpYVRyYW5zcG9ydEludGVyZmFj
ZTsKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKIAogbmFtZXNwYWNlIGNyaWNrZXQgewogCiBzdHJ1
Y3QgQ3J5cHRvUGFyYW1zOwotY2xhc3MgTWVkaWFDb250ZW50RGVzY3JpcHRpb247CiAKIC8vIEJh
c2VDaGFubmVsIGNvbnRhaW5zIGxvZ2ljIGNvbW1vbiB0byB2b2ljZSBhbmQgdmlkZW8sIGluY2x1
ZGluZyBlbmFibGUsCiAvLyBtYXJzaGFsaW5nIGNhbGxzIHRvIGEgd29ya2VyIGFuZCBuZXR3b3Jr
IHRocmVhZHMsIGFuZCBjb25uZWN0aW9uIGFuZCBtZWRpYQpAQCAtNjcsMTAgKzY4LDEyIEBAIGNs
YXNzIE1lZGlhQ29udGVudERlc2NyaXB0aW9uOwogLy8gdnRhYmxlLCBhbmQgdGhlIG1lZGlhIGNo
YW5uZWwncyB0aHJlYWQgdXNpbmcgQmFzZUNoYW5uZWwgYXMgdGhlCiAvLyBOZXR3b3JrSW50ZXJm
YWNlLgogCi1jbGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAor
Y2xhc3MgQmFzZUNoYW5uZWwgOiBwdWJsaWMgQ2hhbm5lbEludGVyZmFjZSwKKyAgICAgICAgICAg
ICAgICAgICAgcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiwKICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IE1lZGlhQ2hhbm5lbDo6TmV0d29ya0ludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgcHVi
bGljIHdlYnJ0Yzo6UnRwUGFja2V0U2lua0ludGVyZmFjZSB7CisgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyB3ZWJydGM6OlJ0cFBhY2tldFNpbmtJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0TmV0d29ya0NoYW5nZUNhbGxiYWNrIHsK
ICBwdWJsaWM6CiAgIC8vIElmIHxzcnRwX3JlcXVpcmVkfCBpcyB0cnVlLCB0aGUgY2hhbm5lbCB3
aWxsIG5vdCBzZW5kIG9yIHJlY2VpdmUgYW55CiAgIC8vIFJUUC9SVENQIHBhY2tldHMgd2l0aG91
dCB1c2luZyBTUlRQIChlaXRoZXIgdXNpbmcgU0RFUyBvciBEVExTLVNSVFApLgpAQCAtODIsOSAr
ODUsMTAgQEAgY2xhc3MgQmFzZUNoYW5uZWwgOiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwK
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhQ2hhbm5lbD4gbWVkaWFfY2hhbm5l
bCwKICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAg
ICAgICAgICAgYm9vbCBzcnRwX3JlcXVpcmVkLAotICAgICAgICAgICAgICBydGM6OkNyeXB0b09w
dGlvbnMgY3J5cHRvX29wdGlvbnMpOworICAgICAgICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlv
bnMgY3J5cHRvX29wdGlvbnMpOwogICB2aXJ0dWFsIH5CYXNlQ2hhbm5lbCgpOwotICB2b2lkIElu
aXRfdyh3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0KTsKKyAgdm9p
ZCBJbml0X3cod2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwKKyAg
ICAgICAgICAgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNw
b3J0KTsKIAogICAvLyBEZWluaXQgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgaXMg
c2ltcGx5IGlnbm9yZWQgaWYgaXQncyBhbHJlYWR5CiAgIC8vIGRvbmUuCkBAIC05MiwxMCArOTYs
MTAgQEAgY2xhc3MgQmFzZUNoYW5uZWwgOiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwKIAog
ICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHdvcmtlcl90aHJl
YWRfOyB9CiAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG5l
dHdvcmtfdGhyZWFkXzsgfQotICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lKCkgY29u
c3QgeyByZXR1cm4gY29udGVudF9uYW1lXzsgfQorICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVu
dF9uYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29udGVudF9uYW1lXzsgfQogICAvLyBU
T0RPKGRlYWRiZWVmKTogVGhpcyBpcyByZWR1bmRhbnQ7IHJlbW92ZSB0aGlzLgotICBjb25zdCBz
dGQ6OnN0cmluZyYgdHJhbnNwb3J0X25hbWUoKSBjb25zdCB7IHJldHVybiB0cmFuc3BvcnRfbmFt
ZV87IH0KLSAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZW5hYmxlZF87IH0KKyAgY29u
c3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9uYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJhbnNwb3J0X25hbWVfOyB9CisgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGVuYWJsZWRfOyB9CiAKICAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdXNp
bmcgU1JUUCAoRFRMUy1iYXNlZCBrZXlpbmcgb3IgU0RFUykuCiAgIGJvb2wgc3J0cF9hY3RpdmUo
KSBjb25zdCB7CkBAIC0xMDgsMTcgKzExMiwxNyBAQCBjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1Ymxp
YyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAogICAvLyBlbmNyeXB0aW9uLCBhbiBTcnRwVHJhbnNwb3J0
IGZvciBTREVTIG9yIGEgRHRsc1NydHBUcmFuc3BvcnQgZm9yIERUTFMtU1JUUC4KICAgLy8gVGhp
cyBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZCBhbmQgaXQgaG9wcyB0byB0aGUgbmV0d29y
ayB0aHJlYWQKICAgLy8gaW50ZXJuYWxseS4gSXQgd291bGQgcmVwbGFjZSB0aGUgfFNldFRyYW5z
cG9ydHN8IGFuZCBpdHMgdmFyaWFudHMuCi0gIGJvb2wgU2V0UnRwVHJhbnNwb3J0KHdlYnJ0Yzo6
UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQpOworICBib29sIFNldFJ0cFRyYW5z
cG9ydCh3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0KSBvdmVycmlk
ZTsKIAogICAvLyBDaGFubmVsIGNvbnRyb2wKICAgYm9vbCBTZXRMb2NhbENvbnRlbnQoY29uc3Qg
TWVkaWFDb250ZW50RGVzY3JpcHRpb24qIGNvbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
IHdlYnJ0Yzo6U2RwVHlwZSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyogZXJyb3JfZGVzYyk7CisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnJv
cl9kZXNjKSBvdmVycmlkZTsKICAgYm9vbCBTZXRSZW1vdGVDb250ZW50KGNvbnN0IE1lZGlhQ29u
dGVudERlc2NyaXB0aW9uKiBjb250ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRj
OjpTZHBUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZXJy
b3JfZGVzYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZXJyb3JfZGVz
Yykgb3ZlcnJpZGU7CiAKLSAgYm9vbCBFbmFibGUoYm9vbCBlbmFibGUpOworICBib29sIEVuYWJs
ZShib29sIGVuYWJsZSkgb3ZlcnJpZGU7CiAKICAgLy8gVE9ETyh6aGlodWFuZyk6IFRoZXNlIG1l
dGhvZHMgYXJlIHVzZWQgZm9yIHRlc3RpbmcgYW5kIGNhbiBiZSByZW1vdmVkLgogICBib29sIEFk
ZFJlY3ZTdHJlYW0oY29uc3QgU3RyZWFtUGFyYW1zJiBzcCk7CkBAIC0xMzgsNyArMTQyLDkgQEAg
Y2xhc3MgQmFzZUNoYW5uZWwgOiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwKICAgdm9pZCBT
aWduYWxEdGxzU3J0cFNldHVwRmFpbHVyZV9zKGJvb2wgcnRjcCk7CiAKICAgLy8gVXNlZCBmb3Ig
bGF0ZW5jeSBtZWFzdXJlbWVudHMuCi0gIHNpZ3Nsb3Q6OnNpZ25hbDE8QmFzZUNoYW5uZWwqPiBT
aWduYWxGaXJzdFBhY2tldFJlY2VpdmVkOworICBzaWdzbG90OjpzaWduYWwxPENoYW5uZWxJbnRl
cmZhY2UqPiYgU2lnbmFsRmlyc3RQYWNrZXRSZWNlaXZlZCgpIG92ZXJyaWRlIHsKKyAgICByZXR1
cm4gU2lnbmFsRmlyc3RQYWNrZXRSZWNlaXZlZF87CisgIH0KIAogICAvLyBGb3J3YXJkIFNpZ25h
bFNlbnRQYWNrZXQgdG8gd29ya2VyIHRocmVhZC4KICAgc2lnc2xvdDo6c2lnbmFsMTxjb25zdCBy
dGM6OlNlbnRQYWNrZXQmPiBTaWduYWxTZW50UGFja2V0OwpAQCAtMTYyLDYgKzE2OCwxMSBAQCBj
bGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyLAogICAgIHJldHVy
biBudWxscHRyOwogICB9CiAKKyAgLy8gUmV0dXJucyBtZWRpYSB0cmFuc3BvcnQsIGNhbiBiZSBu
dWxsIGlmIG1lZGlhIHRyYW5zcG9ydCBpcyBub3QgYXZhaWxhYmxlLgorICB3ZWJydGM6Ok1lZGlh
VHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQoKSB7CisgICAgcmV0dXJuIG1lZGlh
X3RyYW5zcG9ydF87CisgIH0KKwogICAvLyBGcm9tIFJ0cFRyYW5zcG9ydCAtIHB1YmxpYyBmb3Ig
dGVzdGluZyBvbmx5CiAgIHZvaWQgT25UcmFuc3BvcnRSZWFkeVRvU2VuZChib29sIHJlYWR5KTsK
IApAQCAtMTY5LDggKzE4MCw2IEBAIGNsYXNzIEJhc2VDaGFubmVsIDogcHVibGljIHJ0Yzo6TWVz
c2FnZUhhbmRsZXIsCiAgIGludCBTZXRPcHRpb24oU29ja2V0VHlwZSB0eXBlLCBydGM6OlNvY2tl
dDo6T3B0aW9uIG8sIGludCB2YWwpIG92ZXJyaWRlOwogICBpbnQgU2V0T3B0aW9uX24oU29ja2V0
VHlwZSB0eXBlLCBydGM6OlNvY2tldDo6T3B0aW9uIG8sIGludCB2YWwpOwogCi0gIHZpcnR1YWwg
Y3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUoKSA9IDA7Ci0KICAgLy8gUnRwUGFja2V0U2lu
a0ludGVyZmFjZSBvdmVycmlkZXMuCiAgIHZvaWQgT25SdHBQYWNrZXQoY29uc3Qgd2VicnRjOjpS
dHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSBvdmVycmlkZTsKIApAQCAtMTgwLDkgKzE4OSw5IEBA
IGNsYXNzIEJhc2VDaGFubmVsIDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRsZXIsCiAgICAgdHJh
bnNwb3J0X25hbWVfID0gdHJhbnNwb3J0X25hbWU7CiAgIH0KIAotIHByb3RlY3RlZDoKLSAgdmly
dHVhbCBNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwoKSBjb25zdCB7IHJldHVybiBtZWRpYV9j
aGFubmVsXy5nZXQoKTsgfQorICBNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtZWRpYV9jaGFubmVsXy5nZXQoKTsgfQogCisgcHJvdGVjdGVkOgog
ICBib29sIHdhc19ldmVyX3dyaXRhYmxlKCkgY29uc3QgeyByZXR1cm4gd2FzX2V2ZXJfd3JpdGFi
bGVfOyB9CiAgIHZvaWQgc2V0X2xvY2FsX2NvbnRlbnRfZGlyZWN0aW9uKHdlYnJ0Yzo6UnRwVHJh
bnNjZWl2ZXJEaXJlY3Rpb24gZGlyZWN0aW9uKSB7CiAgICAgbG9jYWxfY29udGVudF9kaXJlY3Rp
b25fID0gZGlyZWN0aW9uOwpAQCAtMjI1LDE0ICsyMzQsMTQgQEAgY2xhc3MgQmFzZUNoYW5uZWwg
OiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciwKICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0
Yzo6UGFja2V0T3B0aW9ucyYgb3B0aW9ucyk7CiAKICAgdm9pZCBPblJ0Y3BQYWNrZXRSZWNlaXZl
ZChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAKICAgdm9pZCBPblBhY2tl
dFJlY2VpdmVkKGJvb2wgcnRjcCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
Q29weU9uV3JpdGVCdWZmZXImIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAg
aW50NjRfdCBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQgUHJvY2Vzc1BhY2tldChib29sIHJ0Y3As
CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNvcHlPbldyaXRlQnVmZmVyJiBwYWNr
ZXQsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tldF90
aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpOwogCiAg
IHZvaWQgRW5hYmxlTWVkaWFfdygpOwogICB2b2lkIERpc2FibGVNZWRpYV93KCk7CkBAIC0yOTUs
MTAgKzMwNCwxNCBAQCBjbGFzcyBCYXNlQ2hhbm5lbCA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5k
bGVyLAogICB2b2lkIFNpZ25hbFNlbnRQYWNrZXRfbihjb25zdCBydGM6OlNlbnRQYWNrZXQmIHNl
bnRfcGFja2V0KTsKICAgdm9pZCBTaWduYWxTZW50UGFja2V0X3coY29uc3QgcnRjOjpTZW50UGFj
a2V0JiBzZW50X3BhY2tldCk7CiAgIGJvb2wgSXNSZWFkeVRvU2VuZE1lZGlhX24oKSBjb25zdDsK
KworICAvLyBNZWRpYVRyYW5zcG9ydE5ldHdvcmtDaGFuZ2VDYWxsYmFjayBvdmVycmlkZS4KKyAg
dm9pZCBPbk5ldHdvcmtSb3V0ZUNoYW5nZWQoY29uc3QgcnRjOjpOZXR3b3JrUm91dGUmIG5ldHdv
cmtfcm91dGUpIG92ZXJyaWRlOwogICBydGM6OlRocmVhZCogY29uc3Qgd29ya2VyX3RocmVhZF87
CiAgIHJ0Yzo6VGhyZWFkKiBjb25zdCBuZXR3b3JrX3RocmVhZF87CiAgIHJ0Yzo6VGhyZWFkKiBj
b25zdCBzaWduYWxpbmdfdGhyZWFkXzsKICAgcnRjOjpBc3luY0ludm9rZXIgaW52b2tlcl87Cisg
IHNpZ3Nsb3Q6OnNpZ25hbDE8Q2hhbm5lbEludGVyZmFjZSo+IFNpZ25hbEZpcnN0UGFja2V0UmVj
ZWl2ZWRfOwogCiAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbnRlbnRfbmFtZV87CiAKQEAgLTMwNywx
MyArMzIwLDE4IEBAIGNsYXNzIEJhc2VDaGFubmVsIDogcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRs
ZXIsCiAKICAgd2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydF8gPSBu
dWxscHRyOwogCisgIC8vIE9wdGlvbmFsIG1lZGlhIHRyYW5zcG9ydCAoZXhwZXJpbWVudGFsKS4K
KyAgLy8gSWYgcHJvdmlkZWQsIGF1ZGlvIGFuZCB2aWRlbyB3aWxsIGJlIHNlbnQgdGhyb3VnaCBt
ZWRpYV90cmFuc3BvcnQgaW5zdGVhZAorICAvLyBvZiBSVFAvUlRDUC4gQ3VycmVudGx5IG1lZGlh
X3RyYW5zcG9ydCBjYW4gY28tZXhpc3Qgd2l0aCBydHBfdHJhbnNwb3J0LgorICB3ZWJydGM6Ok1l
ZGlhVHJhbnNwb3J0SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnRfID0gbnVsbHB0cjsKKwogICBz
dGQ6OnZlY3RvcjxzdGQ6OnBhaXI8cnRjOjpTb2NrZXQ6Ok9wdGlvbiwgaW50PiA+IHNvY2tldF9v
cHRpb25zXzsKICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHJ0Yzo6U29ja2V0OjpPcHRpb24sIGlu
dD4gPiBydGNwX3NvY2tldF9vcHRpb25zXzsKICAgYm9vbCB3cml0YWJsZV8gPSBmYWxzZTsKICAg
Ym9vbCB3YXNfZXZlcl93cml0YWJsZV8gPSBmYWxzZTsKICAgYm9vbCBoYXNfcmVjZWl2ZWRfcGFj
a2V0XyA9IGZhbHNlOwogICBjb25zdCBib29sIHNydHBfcmVxdWlyZWRfID0gdHJ1ZTsKLSAgcnRj
OjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zXzsKKyAgd2VicnRjOjpDcnlwdG9PcHRpb25z
IGNyeXB0b19vcHRpb25zXzsKIAogICAvLyBNZWRpYUNoYW5uZWwgcmVsYXRlZCBtZW1iZXJzIHRo
YXQgc2hvdWxkIGJlIGFjY2Vzc2VkIGZyb20gdGhlIHdvcmtlcgogICAvLyB0aHJlYWQuCkBAIC0z
NDMsNyArMzYxLDcgQEAgY2xhc3MgVm9pY2VDaGFubmVsIDogcHVibGljIEJhc2VDaGFubmVsIHsK
ICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWb2ljZU1lZGlhQ2hhbm5lbD4gY2hhbm5l
bCwKICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAg
ICAgICAgICAgICBib29sIHNydHBfcmVxdWlyZWQsCi0gICAgICAgICAgICAgICBydGM6OkNyeXB0
b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpOworICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9P
cHRpb25zIGNyeXB0b19vcHRpb25zKTsKICAgflZvaWNlQ2hhbm5lbCgpOwogCiAgIC8vIGRvd25j
YXN0cyBhIE1lZGlhQ2hhbm5lbApAQCAtMzUxLDEwICszNjksOSBAQCBjbGFzcyBWb2ljZUNoYW5u
ZWwgOiBwdWJsaWMgQmFzZUNoYW5uZWwgewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxWb2ljZU1l
ZGlhQ2hhbm5lbCo+KEJhc2VDaGFubmVsOjptZWRpYV9jaGFubmVsKCkpOwogICB9CiAKLSAgd2Vi
cnRjOjpSdHBQYXJhbWV0ZXJzIEdldFJ0cFNlbmRQYXJhbWV0ZXJzX3codWludDMyX3Qgc3NyYykg
Y29uc3Q7Ci0gIHdlYnJ0Yzo6UlRDRXJyb3IgU2V0UnRwU2VuZFBhcmFtZXRlcnNfdyh1aW50MzJf
dCBzc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRj
OjpSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpOwotICBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFf
dHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87IH0KKyAg
Y3JpY2tldDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUoKSBjb25zdCBvdmVycmlkZSB7CisgICAgcmV0
dXJuIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU87CisgIH0KIAogIHByaXZhdGU6CiAgIC8vIG92
ZXJyaWRlcyBmcm9tIEJhc2VDaGFubmVsCkBAIC0zODMsNyArNDAwLDcgQEAgY2xhc3MgVmlkZW9D
aGFubmVsIDogcHVibGljIEJhc2VDaGFubmVsIHsKICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxWaWRlb01lZGlhQ2hhbm5lbD4gbWVkaWFfY2hhbm5lbCwKICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgICAgICAgICAgICBib29sIHNydHBf
cmVxdWlyZWQsCi0gICAgICAgICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlv
bnMpOworICAgICAgICAgICAgICAgd2VicnRjOjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25z
KTsKICAgflZpZGVvQ2hhbm5lbCgpOwogCiAgIC8vIGRvd25jYXN0cyBhIE1lZGlhQ2hhbm5lbApA
QCAtMzkzLDcgKzQxMCw5IEBAIGNsYXNzIFZpZGVvQ2hhbm5lbCA6IHB1YmxpYyBCYXNlQ2hhbm5l
bCB7CiAKICAgdm9pZCBGaWxsQml0cmF0ZUluZm8oQmFuZHdpZHRoRXN0aW1hdGlvbkluZm8qIGJ3
ZV9pbmZvKTsKIAotICBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgpIG92ZXJyaWRlIHsg
cmV0dXJuIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU87IH0KKyAgY3JpY2tldDo6TWVkaWFUeXBl
IG1lZGlhX3R5cGUoKSBjb25zdCBvdmVycmlkZSB7CisgICAgcmV0dXJuIGNyaWNrZXQ6Ok1FRElB
X1RZUEVfVklERU87CisgIH0KIAogIHByaXZhdGU6CiAgIC8vIG92ZXJyaWRlcyBmcm9tIEJhc2VD
aGFubmVsCkBAIC00MjIsNyArNDQxLDcgQEAgY2xhc3MgUnRwRGF0YUNoYW5uZWwgOiBwdWJsaWMg
QmFzZUNoYW5uZWwgewogICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YU1lZGlh
Q2hhbm5lbD4gY2hhbm5lbCwKICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNv
bnRlbnRfbmFtZSwKICAgICAgICAgICAgICAgICAgYm9vbCBzcnRwX3JlcXVpcmVkLAotICAgICAg
ICAgICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpOworICAgICAgICAg
ICAgICAgICB3ZWJydGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnMpOwogICB+UnRwRGF0
YUNoYW5uZWwoKTsKICAgLy8gVE9ETyh6aGlodWFuZyk6IFJlbW92ZSB0aGlzIG9uY2UgdGhlIFJ0
cFRyYW5zcG9ydCBjYW4gYmUgc2hhcmVkIGJldHdlZW4KICAgLy8gQmFzZUNoYW5uZWxzLgpAQCAt
NDQ1LDcgKzQ2NCw5IEBAIGNsYXNzIFJ0cERhdGFDaGFubmVsIDogcHVibGljIEJhc2VDaGFubmVs
IHsKICAgLy8gVGhhdCBvY2N1cnMgd2hlbiB0aGUgY2hhbm5lbCBpcyBlbmFibGVkLCB0aGUgdHJh
bnNwb3J0IGlzIHdyaXRhYmxlLAogICAvLyBib3RoIGxvY2FsIGFuZCByZW1vdGUgZGVzY3JpcHRp
b25zIGFyZSBzZXQsIGFuZCB0aGUgY2hhbm5lbCBpcyB1bmJsb2NrZWQuCiAgIHNpZ3Nsb3Q6OnNp
Z25hbDE8Ym9vbD4gU2lnbmFsUmVhZHlUb1NlbmREYXRhOwotICBjcmlja2V0OjpNZWRpYVR5cGUg
bWVkaWFfdHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQTsg
fQorICBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsKKyAg
ICByZXR1cm4gY3JpY2tldDo6TUVESUFfVFlQRV9EQVRBOworICB9CiAKICBwcm90ZWN0ZWQ6CiAg
IC8vIGRvd25jYXN0cyBhIE1lZGlhQ2hhbm5lbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsX3VuaXR0ZXN0
LmNjCmluZGV4IDU4Y2IxN2I4YmJmNWRkMWY3Y2JlNDAwZmM1YzVkNTAwOWM2ZDcyYjcuLjVkNGQ0
YzdmOWUwMDRlNTZkNWVjYjhhZjIwNzY4MGI5ZGE5MjYzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxfdW5pdHRlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5l
bF91bml0dGVzdC5jYwpAQCAtMTUsNyArMTUsNiBAQAogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvZmFr
ZW1lZGlhZW5naW5lLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9mYWtlcnRwLmgiCiAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9tZWRpYWNoYW5uZWwuaCIKLSNpbmNsdWRlICJtZWRpYS9iYXNlL3Rlc3R1
dGlscy5oIgogI2luY2x1ZGUgInAycC9iYXNlL2Zha2VjYW5kaWRhdGVwYWlyLmgiCiAjaW5jbHVk
ZSAicDJwL2Jhc2UvZmFrZWR0bHN0cmFuc3BvcnQuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9mYWtl
cGFja2V0dHJhbnNwb3J0LmgiCkBAIC0yNTAsOCArMjQ5LDggQEAgY2xhc3MgQ2hhbm5lbFRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAg
ICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCk7
CiAgICAgYXV0byBjaGFubmVsID0gYWJzbDo6bWFrZV91bmlxdWU8dHlwZW5hbWUgVDo6Q2hhbm5l
bD4oCiAgICAgICAgIHdvcmtlcl90aHJlYWQsIG5ldHdvcmtfdGhyZWFkLCBzaWduYWxpbmdfdGhy
ZWFkLCBlbmdpbmUsIHN0ZDo6bW92ZShjaCksCi0gICAgICAgIGNyaWNrZXQ6OkNOX0FVRElPLCAo
ZmxhZ3MgJiBEVExTKSAhPSAwLCBydGM6OkNyeXB0b09wdGlvbnMoKSk7Ci0gICAgY2hhbm5lbC0+
SW5pdF93KHJ0cF90cmFuc3BvcnQpOworICAgICAgICBjcmlja2V0OjpDTl9BVURJTywgKGZsYWdz
ICYgRFRMUykgIT0gMCwgd2VicnRjOjpDcnlwdG9PcHRpb25zKCkpOworICAgIGNoYW5uZWwtPklu
aXRfdyhydHBfdHJhbnNwb3J0LCAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogICAgIHJl
dHVybiBjaGFubmVsOwogICB9CiAKQEAgLTU3Nyw2ICs1NzYsMzcgQEAgY2xhc3MgQ2hhbm5lbFRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsK
ICAgICAgICAgQ29kZWNNYXRjaGVzKGNvbnRlbnQuY29kZWNzKClbMF0sIG1lZGlhX2NoYW5uZWwx
Xy0+Y29kZWNzKClbMF0pKTsKICAgfQogCisgIC8vIFRlc3QgdGhhdCBTZXRMb2NhbENvbnRlbnQg
YW5kIFNldFJlbW90ZUNvbnRlbnQgcHJvcGVybHkgY29uZmlndXJlCisgIC8vIGV4dG1hcC1hbGxv
dy1taXhlZC4KKyAgdm9pZCBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVyKGJv
b2wgb2ZmZXIsIGJvb2wgYW5zd2VyKSB7CisgICAgLy8gRm9yIGEgY2FsbGVyLCBTZXRMb2NhbENv
bnRlbnQoKSBpcyBjYWxsZWQgZmlyc3Qgd2l0aCBhbiBvZmZlciBhbmQgbmV4dAorICAgIC8vIFNl
dFJlbW90ZUNvbnRlbnQoKSBpcyBjYWxsZWQgd2l0aCB0aGUgYW5zd2VyLgorICAgIENyZWF0ZUNo
YW5uZWxzKDAsIDApOworICAgIHR5cGVuYW1lIFQ6OkNvbnRlbnQgY29udGVudDsKKyAgICBDcmVh
dGVDb250ZW50KDAsIGtQY211Q29kZWMsIGtIMjY0Q29kZWMsICZjb250ZW50KTsKKyAgICBhdXRv
IG9mZmVyX2VudW0gPSBvZmZlciA/IChUOjpDb250ZW50OjprU2Vzc2lvbikgOiAoVDo6Q29udGVu
dDo6a05vKTsKKyAgICBhdXRvIGFuc3dlcl9lbnVtID0gYW5zd2VyID8gKFQ6OkNvbnRlbnQ6OmtT
ZXNzaW9uKSA6IChUOjpDb250ZW50OjprTm8pOworICAgIGNvbnRlbnQuc2V0X2V4dG1hcF9hbGxv
d19taXhlZF9lbnVtKG9mZmVyX2VudW0pOworICAgIEVYUEVDVF9UUlVFKGNoYW5uZWwxXy0+U2V0
TG9jYWxDb250ZW50KCZjb250ZW50LCBTZHBUeXBlOjprT2ZmZXIsIE5VTEwpKTsKKyAgICBjb250
ZW50LnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShhbnN3ZXJfZW51bSk7CisgICAgRVhQRUNU
X1RSVUUoY2hhbm5lbDFfLT5TZXRSZW1vdGVDb250ZW50KCZjb250ZW50LCBTZHBUeXBlOjprQW5z
d2VyLCBOVUxMKSk7CisgICAgRVhQRUNUX0VRKGFuc3dlciwgbWVkaWFfY2hhbm5lbDFfLT5FeHRt
YXBBbGxvd01peGVkKCkpOworICB9CisgIHZvaWQgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dN
aXhlZENhbGxlZShib29sIG9mZmVyLCBib29sIGFuc3dlcikgeworICAgIC8vIEZvciBhIGNhbGxl
ZSwgU2V0UmVtb3RlQ29udGVudCgpIGlzIGNhbGxlZCBmaXJzdCB3aXRoIGFuIG9mZmVyIGFuZCBu
ZXh0CisgICAgLy8gU2V0TG9jYWxDb250ZW50KCkgaXMgY2FsbGVkIHdpdGggdGhlIGFuc3dlci4K
KyAgICBDcmVhdGVDaGFubmVscygwLCAwKTsKKyAgICB0eXBlbmFtZSBUOjpDb250ZW50IGNvbnRl
bnQ7CisgICAgQ3JlYXRlQ29udGVudCgwLCBrUGNtdUNvZGVjLCBrSDI2NENvZGVjLCAmY29udGVu
dCk7CisgICAgYXV0byBvZmZlcl9lbnVtID0gb2ZmZXIgPyAoVDo6Q29udGVudDo6a1Nlc3Npb24p
IDogKFQ6OkNvbnRlbnQ6OmtObyk7CisgICAgYXV0byBhbnN3ZXJfZW51bSA9IGFuc3dlciA/IChU
OjpDb250ZW50OjprU2Vzc2lvbikgOiAoVDo6Q29udGVudDo6a05vKTsKKyAgICBjb250ZW50LnNl
dF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShvZmZlcl9lbnVtKTsKKyAgICBFWFBFQ1RfVFJVRShj
aGFubmVsMV8tPlNldFJlbW90ZUNvbnRlbnQoJmNvbnRlbnQsIFNkcFR5cGU6OmtPZmZlciwgTlVM
TCkpOworICAgIGNvbnRlbnQuc2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKGFuc3dlcl9lbnVt
KTsKKyAgICBFWFBFQ1RfVFJVRShjaGFubmVsMV8tPlNldExvY2FsQ29udGVudCgmY29udGVudCwg
U2RwVHlwZTo6a0Fuc3dlciwgTlVMTCkpOworICAgIEVYUEVDVF9FUShhbnN3ZXIsIG1lZGlhX2No
YW5uZWwxXy0+RXh0bWFwQWxsb3dNaXhlZCgpKTsKKyAgfQorCiAgIC8vIFRlc3QgdGhhdCBTZXRM
b2NhbENvbnRlbnQgYW5kIFNldFJlbW90ZUNvbnRlbnQgcHJvcGVybHkgZGVhbHMKICAgLy8gd2l0
aCBhbiBlbXB0eSBvZmZlci4KICAgdm9pZCBUZXN0U2V0Q29udGVudHNOdWxsT2ZmZXIoKSB7CkBA
IC0xNTQ1LDggKzE1NzUsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6VmlkZW9DaGFubmVs
PiBDaGFubmVsVGVzdDxWaWRlb1RyYWl0cz46OkNyZWF0ZUNoYW5uZWwoCiAgIHJ0Yzo6VGhyZWFk
KiBzaWduYWxpbmdfdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKTsKICAgYXV0byBjaGFu
bmVsID0gYWJzbDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6VmlkZW9DaGFubmVsPigKICAgICAgIHdv
cmtlcl90aHJlYWQsIG5ldHdvcmtfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBzdGQ6Om1vdmUo
Y2gpLAotICAgICAgY3JpY2tldDo6Q05fVklERU8sIChmbGFncyAmIERUTFMpICE9IDAsIHJ0Yzo6
Q3J5cHRvT3B0aW9ucygpKTsKLSAgY2hhbm5lbC0+SW5pdF93KHJ0cF90cmFuc3BvcnQpOworICAg
ICAgY3JpY2tldDo6Q05fVklERU8sIChmbGFncyAmIERUTFMpICE9IDAsIHdlYnJ0Yzo6Q3J5cHRv
T3B0aW9ucygpKTsKKyAgY2hhbm5lbC0+SW5pdF93KHJ0cF90cmFuc3BvcnQsIC8qbWVkaWFfdHJh
bnNwb3J0PSovbnVsbHB0cik7CiAgIHJldHVybiBjaGFubmVsOwogfQogCkBAIC0xNjE1LDYgKzE2
NDUsMjQgQEAgVEVTVF9GKFZvaWNlQ2hhbm5lbFNpbmdsZVRocmVhZFRlc3QsIFRlc3RTZXRDb250
ZW50cykgewogICBCYXNlOjpUZXN0U2V0Q29udGVudHMoKTsKIH0KIAorVEVTVF9GKFZvaWNlQ2hh
bm5lbFNpbmdsZVRocmVhZFRlc3QsIFRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRBc0Nh
bGxlcikgeworICBCYXNlOjpUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVyKC8q
b2ZmZXI9Ki90cnVlLCAvKmFuc3dlcj0qL3RydWUpOworfQorCitURVNUX0YoVm9pY2VDaGFubmVs
U2luZ2xlVGhyZWFkVGVzdCwKKyAgICAgICBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVk
Tm90U3VwcG9ydGVkQXNDYWxsZXIpIHsKKyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxs
b3dNaXhlZENhbGxlcigvKm9mZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki9mYWxzZSk7Cit9CisKK1RF
U1RfRihWb2ljZUNoYW5uZWxTaW5nbGVUaHJlYWRUZXN0LCBUZXN0U2V0Q29udGVudHNFeHRtYXBB
bGxvd01peGVkQXNDYWxsZWUpIHsKKyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dN
aXhlZENhbGxlZSgvKm9mZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki90cnVlKTsKK30KKworVEVTVF9G
KFZvaWNlQ2hhbm5lbFNpbmdsZVRocmVhZFRlc3QsCisgICAgICAgVGVzdFNldENvbnRlbnRzRXh0
bWFwQWxsb3dNaXhlZE5vdFN1cHBvcnRlZEFzQ2FsbGVlKSB7CisgIEJhc2U6OlRlc3RTZXRDb250
ZW50c0V4dG1hcEFsbG93TWl4ZWRDYWxsZWUoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovZmFs
c2UpOworfQorCiBURVNUX0YoVm9pY2VDaGFubmVsU2luZ2xlVGhyZWFkVGVzdCwgVGVzdFNldENv
bnRlbnRzTnVsbE9mZmVyKSB7CiAgIEJhc2U6OlRlc3RTZXRDb250ZW50c051bGxPZmZlcigpOwog
fQpAQCAtMTc1MCw2ICsxNzk4LDI0IEBAIFRFU1RfRihWb2ljZUNoYW5uZWxEb3VibGVUaHJlYWRU
ZXN0LCBUZXN0U2V0Q29udGVudHMpIHsKICAgQmFzZTo6VGVzdFNldENvbnRlbnRzKCk7CiB9CiAK
K1RFU1RfRihWb2ljZUNoYW5uZWxEb3VibGVUaHJlYWRUZXN0LCBUZXN0U2V0Q29udGVudHNFeHRt
YXBBbGxvd01peGVkQXNDYWxsZXIpIHsKKyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxs
b3dNaXhlZENhbGxlcigvKm9mZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki90cnVlKTsKK30KKworVEVT
VF9GKFZvaWNlQ2hhbm5lbERvdWJsZVRocmVhZFRlc3QsCisgICAgICAgVGVzdFNldENvbnRlbnRz
RXh0bWFwQWxsb3dNaXhlZE5vdFN1cHBvcnRlZEFzQ2FsbGVyKSB7CisgIEJhc2U6OlRlc3RTZXRD
b250ZW50c0V4dG1hcEFsbG93TWl4ZWRDYWxsZXIoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSov
ZmFsc2UpOworfQorCitURVNUX0YoVm9pY2VDaGFubmVsRG91YmxlVGhyZWFkVGVzdCwgVGVzdFNl
dENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZEFzQ2FsbGVlKSB7CisgIEJhc2U6OlRlc3RTZXRDb250
ZW50c0V4dG1hcEFsbG93TWl4ZWRDYWxsZWUoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovdHJ1
ZSk7Cit9CisKK1RFU1RfRihWb2ljZUNoYW5uZWxEb3VibGVUaHJlYWRUZXN0LAorICAgICAgIFRl
c3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWROb3RTdXBwb3J0ZWRBc0NhbGxlZSkgeworICBC
YXNlOjpUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVlKC8qb2ZmZXI9Ki90cnVl
LCAvKmFuc3dlcj0qL2ZhbHNlKTsKK30KKwogVEVTVF9GKFZvaWNlQ2hhbm5lbERvdWJsZVRocmVh
ZFRlc3QsIFRlc3RTZXRDb250ZW50c051bGxPZmZlcikgewogICBCYXNlOjpUZXN0U2V0Q29udGVu
dHNOdWxsT2ZmZXIoKTsKIH0KQEAgLTE4ODMsNiArMTk0OSwyNCBAQCBURVNUX0YoVmlkZW9DaGFu
bmVsU2luZ2xlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzKSB7CiAgIEJhc2U6OlRlc3RTZXRD
b250ZW50cygpOwogfQogCitURVNUX0YoVmlkZW9DaGFubmVsU2luZ2xlVGhyZWFkVGVzdCwgVGVz
dFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZEFzQ2FsbGVyKSB7CisgIEJhc2U6OlRlc3RTZXRD
b250ZW50c0V4dG1hcEFsbG93TWl4ZWRDYWxsZXIoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSov
dHJ1ZSk7Cit9CisKK1RFU1RfRihWaWRlb0NoYW5uZWxTaW5nbGVUaHJlYWRUZXN0LAorICAgICAg
IFRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWROb3RTdXBwb3J0ZWRBc0NhbGxlcikgewor
ICBCYXNlOjpUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVyKC8qb2ZmZXI9Ki90
cnVlLCAvKmFuc3dlcj0qL2ZhbHNlKTsKK30KKworVEVTVF9GKFZpZGVvQ2hhbm5lbFNpbmdsZVRo
cmVhZFRlc3QsIFRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRBc0NhbGxlZSkgeworICBC
YXNlOjpUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVlKC8qb2ZmZXI9Ki90cnVl
LCAvKmFuc3dlcj0qL3RydWUpOworfQorCitURVNUX0YoVmlkZW9DaGFubmVsU2luZ2xlVGhyZWFk
VGVzdCwKKyAgICAgICBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkTm90U3VwcG9ydGVk
QXNDYWxsZWUpIHsKKyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxl
ZSgvKm9mZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki9mYWxzZSk7Cit9CisKIFRFU1RfRihWaWRlb0No
YW5uZWxTaW5nbGVUaHJlYWRUZXN0LCBUZXN0U2V0Q29udGVudHNOdWxsT2ZmZXIpIHsKICAgQmFz
ZTo6VGVzdFNldENvbnRlbnRzTnVsbE9mZmVyKCk7CiB9CkBAIC0yMDE2LDYgKzIxMDAsMjQgQEAg
VEVTVF9GKFZpZGVvQ2hhbm5lbERvdWJsZVRocmVhZFRlc3QsIFRlc3RTZXRDb250ZW50cykgewog
ICBCYXNlOjpUZXN0U2V0Q29udGVudHMoKTsKIH0KIAorVEVTVF9GKFZpZGVvQ2hhbm5lbERvdWJs
ZVRocmVhZFRlc3QsIFRlc3RTZXRDb250ZW50c0V4dG1hcEFsbG93TWl4ZWRBc0NhbGxlcikgewor
ICBCYXNlOjpUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkQ2FsbGVyKC8qb2ZmZXI9Ki90
cnVlLCAvKmFuc3dlcj0qL3RydWUpOworfQorCitURVNUX0YoVmlkZW9DaGFubmVsRG91YmxlVGhy
ZWFkVGVzdCwKKyAgICAgICBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVkTm90U3VwcG9y
dGVkQXNDYWxsZXIpIHsKKyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENh
bGxlcigvKm9mZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki9mYWxzZSk7Cit9CisKK1RFU1RfRihWaWRl
b0NoYW5uZWxEb3VibGVUaHJlYWRUZXN0LCBUZXN0U2V0Q29udGVudHNFeHRtYXBBbGxvd01peGVk
QXNDYWxsZWUpIHsKKyAgQmFzZTo6VGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dNaXhlZENhbGxl
ZSgvKm9mZmVyPSovdHJ1ZSwgLyphbnN3ZXI9Ki90cnVlKTsKK30KKworVEVTVF9GKFZpZGVvQ2hh
bm5lbERvdWJsZVRocmVhZFRlc3QsCisgICAgICAgVGVzdFNldENvbnRlbnRzRXh0bWFwQWxsb3dN
aXhlZE5vdFN1cHBvcnRlZEFzQ2FsbGVlKSB7CisgIEJhc2U6OlRlc3RTZXRDb250ZW50c0V4dG1h
cEFsbG93TWl4ZWRDYWxsZWUoLypvZmZlcj0qL3RydWUsIC8qYW5zd2VyPSovZmFsc2UpOworfQor
CiBURVNUX0YoVmlkZW9DaGFubmVsRG91YmxlVGhyZWFkVGVzdCwgVGVzdFNldENvbnRlbnRzTnVs
bE9mZmVyKSB7CiAgIEJhc2U6OlRlc3RTZXRDb250ZW50c051bGxPZmZlcigpOwogfQpAQCAtMjE2
NCw3ICsyMjY2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OlJ0cERhdGFDaGFubmVsPiBD
aGFubmVsVGVzdDxEYXRhVHJhaXRzPjo6Q3JlYXRlQ2hhbm5lbCgKICAgcnRjOjpUaHJlYWQqIHNp
Z25hbGluZ190aHJlYWQgPSBydGM6OlRocmVhZDo6Q3VycmVudCgpOwogICBhdXRvIGNoYW5uZWwg
PSBhYnNsOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpSdHBEYXRhQ2hhbm5lbD4oCiAgICAgICB3b3Jr
ZXJfdGhyZWFkLCBuZXR3b3JrX3RocmVhZCwgc2lnbmFsaW5nX3RocmVhZCwgc3RkOjptb3ZlKGNo
KSwKLSAgICAgIGNyaWNrZXQ6OkNOX0RBVEEsIChmbGFncyAmIERUTFMpICE9IDAsIHJ0Yzo6Q3J5
cHRvT3B0aW9ucygpKTsKKyAgICAgIGNyaWNrZXQ6OkNOX0RBVEEsIChmbGFncyAmIERUTFMpICE9
IDAsIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpKTsKICAgY2hhbm5lbC0+SW5pdF93KHJ0cF90cmFu
c3BvcnQpOwogICByZXR1cm4gY2hhbm5lbDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxpbnRlcmZhY2UuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxpbnRlcmZhY2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ZTQxMDlhMDQ1NDJmNTM1NjU2YmRhNDEyZTkyZTY1MjIzNzE2MWE5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvY2hhbm5lbGludGVyZmFjZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiAgQ29weXJp
Z2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgor
ICovCisKKyNpZm5kZWYgUENfQ0hBTk5FTElOVEVSRkFDRV9IXworI2RlZmluZSBQQ19DSEFOTkVM
SU5URVJGQUNFX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhcGkvanNlcC5o
IgorI2luY2x1ZGUgImFwaS9tZWRpYXR5cGVzLmgiCisjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRp
YWNoYW5uZWwuaCIKKyNpbmNsdWRlICJwYy9ydHB0cmFuc3BvcnRpbnRlcm5hbC5oIgorCituYW1l
c3BhY2UgY3JpY2tldCB7CisKK2NsYXNzIE1lZGlhQ29udGVudERlc2NyaXB0aW9uOworCisvLyBD
aGFubmVsSW50ZXJmYWNlIGNvbnRhaW5zIG1ldGhvZHMgY29tbW9uIHRvIHZvaWNlLCB2aWRlbyBh
bmQgZGF0YSBjaGFubmVscy4KKy8vIEFzIG1vcmUgbWV0aG9kcyBhcmUgYWRkZWQgdG8gQmFzZUNo
YW5uZWwsIHRoZXkgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZQorLy8gaW50ZXJmYWNlIGFzIHdl
bGwuCitjbGFzcyBDaGFubmVsSW50ZXJmYWNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgY3JpY2tl
dDo6TWVkaWFUeXBlIG1lZGlhX3R5cGUoKSBjb25zdCA9IDA7CisKKyAgdmlydHVhbCBNZWRpYUNo
YW5uZWwqIG1lZGlhX2NoYW5uZWwoKSBjb25zdCA9IDA7CisKKyAgLy8gVE9ETyhkZWFkYmVlZik6
IFRoaXMgaXMgcmVkdW5kYW50OyByZW1vdmUgdGhpcy4KKyAgdmlydHVhbCBjb25zdCBzdGQ6OnN0
cmluZyYgdHJhbnNwb3J0X25hbWUoKSBjb25zdCA9IDA7CisKKyAgdmlydHVhbCBjb25zdCBzdGQ6
OnN0cmluZyYgY29udGVudF9uYW1lKCkgY29uc3QgPSAwOworCisgIHZpcnR1YWwgYm9vbCBlbmFi
bGVkKCkgY29uc3QgPSAwOworCisgIC8vIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhpcyBjaGFubmVs
CisgIHZpcnR1YWwgYm9vbCBFbmFibGUoYm9vbCBlbmFibGUpID0gMDsKKworICAvLyBVc2VkIGZv
ciBsYXRlbmN5IG1lYXN1cmVtZW50cy4KKyAgdmlydHVhbCBzaWdzbG90OjpzaWduYWwxPENoYW5u
ZWxJbnRlcmZhY2UqPiYgU2lnbmFsRmlyc3RQYWNrZXRSZWNlaXZlZCgpID0gMDsKKworICAvLyBD
aGFubmVsIGNvbnRyb2wKKyAgdmlydHVhbCBib29sIFNldExvY2FsQ29udGVudChjb25zdCBNZWRp
YUNvbnRlbnREZXNjcmlwdGlvbiogY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3ZWJydGM6OlNkcFR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZyogZXJyb3JfZGVzYykgPSAwOworICB2aXJ0dWFsIGJvb2wgU2V0UmVtb3Rl
Q29udGVudChjb25zdCBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogY29udGVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpTZHBUeXBlIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnJvcl9kZXNjKSA9IDA7CisKKyAg
Ly8gU2V0IGFuIFJUUCBsZXZlbCB0cmFuc3BvcnQuCisgIC8vIFNvbWUgZXhhbXBsZXM6CisgIC8v
ICAgKiBBbiBSdHBUcmFuc3BvcnQgd2l0aG91dCBlbmNyeXB0aW9uLgorICAvLyAgICogQW4gU3J0
cFRyYW5zcG9ydCBmb3IgU0RFUy4KKyAgLy8gICAqIEEgRHRsc1NydHBUcmFuc3BvcnQgZm9yIERU
TFMtU1JUUC4KKyAgdmlydHVhbCBib29sIFNldFJ0cFRyYW5zcG9ydCh3ZWJydGM6OlJ0cFRyYW5z
cG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0KSA9IDA7CisKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1
YWwgfkNoYW5uZWxJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
Y3JpY2tldAorCisjZW5kaWYgIC8vIFBDX0NIQU5ORUxJTlRFUkZBQ0VfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5h
Z2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hh
bm5lbG1hbmFnZXIuY2MKaW5kZXggZGFiNjIyYWQ3MGU0MmYwNzlmYjQzMGQyZTkwMWZjYTlkZDQ5
OTIzYy4uZWRhNWEyZGQ1NzkyMmNiZDdhZTRmZTg0OTgyY2E3ZWYwOGRmZWM5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY2hhbm5lbG1h
bmFnZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvY2hhbm5lbG1hbmFnZXIuY2MKQEAgLTE0LDEwICsxNCwxMCBAQAogI2luY2x1ZGUgPHV0aWxp
dHk+CiAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhYnNsL3N0
cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL3J0cGRhdGFlbmdpbmUuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
Ci0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90
cmFjZV9ldmVudC5oIgogCiBuYW1lc3BhY2UgY3JpY2tldCB7CkBAIC02Niw3ICs2Niw3IEBAIHZv
aWQgQ2hhbm5lbE1hbmFnZXI6OkdldFN1cHBvcnRlZEF1ZGlvU2VuZENvZGVjcygKICAgaWYgKCFt
ZWRpYV9lbmdpbmVfKSB7CiAgICAgcmV0dXJuOwogICB9Ci0gICpjb2RlY3MgPSBtZWRpYV9lbmdp
bmVfLT5hdWRpb19zZW5kX2NvZGVjcygpOworICAqY29kZWNzID0gbWVkaWFfZW5naW5lXy0+dm9p
Y2UoKS5zZW5kX2NvZGVjcygpOwogfQogCiB2b2lkIENoYW5uZWxNYW5hZ2VyOjpHZXRTdXBwb3J0
ZWRBdWRpb1JlY2VpdmVDb2RlY3MoCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgQ2hhbm5lbE1hbmFn
ZXI6OkdldFN1cHBvcnRlZEF1ZGlvUmVjZWl2ZUNvZGVjcygKICAgaWYgKCFtZWRpYV9lbmdpbmVf
KSB7CiAgICAgcmV0dXJuOwogICB9Ci0gICpjb2RlY3MgPSBtZWRpYV9lbmdpbmVfLT5hdWRpb19y
ZWN2X2NvZGVjcygpOworICAqY29kZWNzID0gbWVkaWFfZW5naW5lXy0+dm9pY2UoKS5yZWN2X2Nv
ZGVjcygpOwogfQogCiB2b2lkIENoYW5uZWxNYW5hZ2VyOjpHZXRTdXBwb3J0ZWRBdWRpb1J0cEhl
YWRlckV4dGVuc2lvbnMoCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQ2hhbm5lbE1hbmFnZXI6Okdl
dFN1cHBvcnRlZEF1ZGlvUnRwSGVhZGVyRXh0ZW5zaW9ucygKICAgaWYgKCFtZWRpYV9lbmdpbmVf
KSB7CiAgICAgcmV0dXJuOwogICB9Ci0gICpleHQgPSBtZWRpYV9lbmdpbmVfLT5HZXRBdWRpb0Nh
cGFiaWxpdGllcygpLmhlYWRlcl9leHRlbnNpb25zOworICAqZXh0ID0gbWVkaWFfZW5naW5lXy0+
dm9pY2UoKS5HZXRDYXBhYmlsaXRpZXMoKS5oZWFkZXJfZXh0ZW5zaW9uczsKIH0KIAogdm9pZCBD
aGFubmVsTWFuYWdlcjo6R2V0U3VwcG9ydGVkVmlkZW9Db2RlY3MoCkBAIC05MiwxMCArOTIsMTAg
QEAgdm9pZCBDaGFubmVsTWFuYWdlcjo6R2V0U3VwcG9ydGVkVmlkZW9Db2RlY3MoCiAgIH0KICAg
Y29kZWNzLT5jbGVhcigpOwogCi0gIHN0ZDo6dmVjdG9yPFZpZGVvQ29kZWM+IHZpZGVvX2NvZGVj
cyA9IG1lZGlhX2VuZ2luZV8tPnZpZGVvX2NvZGVjcygpOworICBzdGQ6OnZlY3RvcjxWaWRlb0Nv
ZGVjPiB2aWRlb19jb2RlY3MgPSBtZWRpYV9lbmdpbmVfLT52aWRlbygpLmNvZGVjcygpOwogICBm
b3IgKGNvbnN0IGF1dG8mIHZpZGVvX2NvZGVjIDogdmlkZW9fY29kZWNzKSB7CiAgICAgaWYgKCFl
bmFibGVfcnR4XyAmJgotICAgICAgICBfc3RyaWNtcChrUnR4Q29kZWNOYW1lLCB2aWRlb19jb2Rl
Yy5uYW1lLmNfc3RyKCkpID09IDApIHsKKyAgICAgICAgYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShr
UnR4Q29kZWNOYW1lLCB2aWRlb19jb2RlYy5uYW1lKSkgewogICAgICAgY29udGludWU7CiAgICAg
fQogICAgIGNvZGVjcy0+cHVzaF9iYWNrKHZpZGVvX2NvZGVjKTsKQEAgLTEwNyw3ICsxMDcsNyBA
QCB2b2lkIENoYW5uZWxNYW5hZ2VyOjpHZXRTdXBwb3J0ZWRWaWRlb1J0cEhlYWRlckV4dGVuc2lv
bnMoCiAgIGlmICghbWVkaWFfZW5naW5lXykgewogICAgIHJldHVybjsKICAgfQotICAqZXh0ID0g
bWVkaWFfZW5naW5lXy0+R2V0VmlkZW9DYXBhYmlsaXRpZXMoKS5oZWFkZXJfZXh0ZW5zaW9uczsK
KyAgKmV4dCA9IG1lZGlhX2VuZ2luZV8tPnZpZGVvKCkuR2V0Q2FwYWJpbGl0aWVzKCkuaGVhZGVy
X2V4dGVuc2lvbnM7CiB9CiAKIHZvaWQgQ2hhbm5lbE1hbmFnZXI6OkdldFN1cHBvcnRlZERhdGFD
b2RlY3MoCkBAIC0xNTYsMTYgKzE1NiwxNyBAQCBWb2ljZUNoYW5uZWwqIENoYW5uZWxNYW5hZ2Vy
OjpDcmVhdGVWb2ljZUNoYW5uZWwoCiAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAogICAgIGNvbnN0
IGNyaWNrZXQ6Ok1lZGlhQ29uZmlnJiBtZWRpYV9jb25maWcsCiAgICAgd2VicnRjOjpSdHBUcmFu
c3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwKKyAgICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0
SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQsCiAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190
aHJlYWQsCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICBib29sIHNy
dHBfcmVxdWlyZWQsCi0gICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAg
IGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucykgewogICBpZiAoIXdvcmtlcl90aHJlYWRfLT5J
c0N1cnJlbnQoKSkgewogICAgIHJldHVybiB3b3JrZXJfdGhyZWFkXy0+SW52b2tlPFZvaWNlQ2hh
bm5lbCo+KFJUQ19GUk9NX0hFUkUsIFsmXSB7CiAgICAgICByZXR1cm4gQ3JlYXRlVm9pY2VDaGFu
bmVsKGNhbGwsIG1lZGlhX2NvbmZpZywgcnRwX3RyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2lnbmFsaW5nX3RocmVhZCwgY29udGVudF9uYW1lLCBzcnRwX3JlcXVp
cmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnlwdG9fb3B0aW9ucywgb3B0
aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhX3RyYW5zcG9ydCwg
c2lnbmFsaW5nX3RocmVhZCwgY29udGVudF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzcnRwX3JlcXVpcmVkLCBjcnlwdG9fb3B0aW9ucywgb3B0aW9ucyk7CiAgICAgfSk7
CiAgIH0KIApAQCAtMTc2LDggKzE3Nyw4IEBAIFZvaWNlQ2hhbm5lbCogQ2hhbm5lbE1hbmFnZXI6
OkNyZWF0ZVZvaWNlQ2hhbm5lbCgKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQogCi0gIFZvaWNl
TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsID0KLSAgICAgIG1lZGlhX2VuZ2luZV8tPkNyZWF0
ZUNoYW5uZWwoY2FsbCwgbWVkaWFfY29uZmlnLCBvcHRpb25zKTsKKyAgVm9pY2VNZWRpYUNoYW5u
ZWwqIG1lZGlhX2NoYW5uZWwgPSBtZWRpYV9lbmdpbmVfLT52b2ljZSgpLkNyZWF0ZU1lZGlhQ2hh
bm5lbCgKKyAgICAgIGNhbGwsIG1lZGlhX2NvbmZpZywgb3B0aW9ucywgY3J5cHRvX29wdGlvbnMp
OwogICBpZiAoIW1lZGlhX2NoYW5uZWwpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQpAQCAt
MTg3LDcgKzE4OCw3IEBAIFZvaWNlQ2hhbm5lbCogQ2hhbm5lbE1hbmFnZXI6OkNyZWF0ZVZvaWNl
Q2hhbm5lbCgKICAgICAgIGFic2w6OldyYXBVbmlxdWUobWVkaWFfY2hhbm5lbCksIGNvbnRlbnRf
bmFtZSwgc3J0cF9yZXF1aXJlZCwKICAgICAgIGNyeXB0b19vcHRpb25zKTsKIAotICB2b2ljZV9j
aGFubmVsLT5Jbml0X3cocnRwX3RyYW5zcG9ydCk7CisgIHZvaWNlX2NoYW5uZWwtPkluaXRfdyhy
dHBfdHJhbnNwb3J0LCBtZWRpYV90cmFuc3BvcnQpOwogCiAgIFZvaWNlQ2hhbm5lbCogdm9pY2Vf
Y2hhbm5lbF9wdHIgPSB2b2ljZV9jaGFubmVsLmdldCgpOwogICB2b2ljZV9jaGFubmVsc18ucHVz
aF9iYWNrKHN0ZDo6bW92ZSh2b2ljZV9jaGFubmVsKSk7CkBAIC0yMjYsNyArMjI3LDcgQEAgVmlk
ZW9DaGFubmVsKiBDaGFubmVsTWFuYWdlcjo6Q3JlYXRlVmlkZW9DaGFubmVsKAogICAgIHJ0Yzo6
VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50
X25hbWUsCiAgICAgYm9vbCBzcnRwX3JlcXVpcmVkLAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0
aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBj
cnlwdG9fb3B0aW9ucywKICAgICBjb25zdCBWaWRlb09wdGlvbnMmIG9wdGlvbnMpIHsKICAgaWYg
KCF3b3JrZXJfdGhyZWFkXy0+SXNDdXJyZW50KCkpIHsKICAgICByZXR1cm4gd29ya2VyX3RocmVh
ZF8tPkludm9rZTxWaWRlb0NoYW5uZWwqPihSVENfRlJPTV9IRVJFLCBbJl0gewpAQCAtMjQzLDgg
KzI0NCw4IEBAIFZpZGVvQ2hhbm5lbCogQ2hhbm5lbE1hbmFnZXI6OkNyZWF0ZVZpZGVvQ2hhbm5l
bCgKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQogCi0gIFZpZGVvTWVkaWFDaGFubmVsKiBtZWRp
YV9jaGFubmVsID0KLSAgICAgIG1lZGlhX2VuZ2luZV8tPkNyZWF0ZVZpZGVvQ2hhbm5lbChjYWxs
LCBtZWRpYV9jb25maWcsIG9wdGlvbnMpOworICBWaWRlb01lZGlhQ2hhbm5lbCogbWVkaWFfY2hh
bm5lbCA9IG1lZGlhX2VuZ2luZV8tPnZpZGVvKCkuQ3JlYXRlTWVkaWFDaGFubmVsKAorICAgICAg
Y2FsbCwgbWVkaWFfY29uZmlnLCBvcHRpb25zLCBjcnlwdG9fb3B0aW9ucyk7CiAgIGlmICghbWVk
aWFfY2hhbm5lbCkgewogICAgIHJldHVybiBudWxscHRyOwogICB9CkBAIC0yNTMsNyArMjU0LDkg
QEAgVmlkZW9DaGFubmVsKiBDaGFubmVsTWFuYWdlcjo6Q3JlYXRlVmlkZW9DaGFubmVsKAogICAg
ICAgd29ya2VyX3RocmVhZF8sIG5ldHdvcmtfdGhyZWFkXywgc2lnbmFsaW5nX3RocmVhZCwKICAg
ICAgIGFic2w6OldyYXBVbmlxdWUobWVkaWFfY2hhbm5lbCksIGNvbnRlbnRfbmFtZSwgc3J0cF9y
ZXF1aXJlZCwKICAgICAgIGNyeXB0b19vcHRpb25zKTsKLSAgdmlkZW9fY2hhbm5lbC0+SW5pdF93
KHJ0cF90cmFuc3BvcnQpOworCisgIC8vIFRPRE8oc3VraGFub3YpOiBBZGQgbWVkaWFfdHJhbnNw
b3J0IHN1cHBvcnQgZm9yIHZpZGVvIGNoYW5uZWwuCisgIHZpZGVvX2NoYW5uZWwtPkluaXRfdyhy
dHBfdHJhbnNwb3J0LCAvKm1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpOwogCiAgIFZpZGVvQ2hh
bm5lbCogdmlkZW9fY2hhbm5lbF9wdHIgPSB2aWRlb19jaGFubmVsLmdldCgpOwogICB2aWRlb19j
aGFubmVsc18ucHVzaF9iYWNrKHN0ZDo6bW92ZSh2aWRlb19jaGFubmVsKSk7CkBAIC0yOTEsNyAr
Mjk0LDcgQEAgUnRwRGF0YUNoYW5uZWwqIENoYW5uZWxNYW5hZ2VyOjpDcmVhdGVSdHBEYXRhQ2hh
bm5lbCgKICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgY29udGVudF9uYW1lLAogICAgIGJvb2wgc3J0cF9yZXF1aXJlZCwKLSAgICBjb25z
dCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSB7CisgICAgY29uc3Qgd2VicnRj
OjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucykgewogICBpZiAoIXdvcmtlcl90aHJlYWRf
LT5Jc0N1cnJlbnQoKSkgewogICAgIHJldHVybiB3b3JrZXJfdGhyZWFkXy0+SW52b2tlPFJ0cERh
dGFDaGFubmVsKj4oUlRDX0ZST01fSEVSRSwgWyZdIHsKICAgICAgIHJldHVybiBDcmVhdGVSdHBE
YXRhQ2hhbm5lbChtZWRpYV9jb25maWcsIHJ0cF90cmFuc3BvcnQsIHNpZ25hbGluZ190aHJlYWQs
CkBAIC0zNDYsMTMgKzM0OSwxMyBAQCB2b2lkIENoYW5uZWxNYW5hZ2VyOjpEZXN0cm95UnRwRGF0
YUNoYW5uZWwoUnRwRGF0YUNoYW5uZWwqIGRhdGFfY2hhbm5lbCkgewogYm9vbCBDaGFubmVsTWFu
YWdlcjo6U3RhcnRBZWNEdW1wKHJ0Yzo6UGxhdGZvcm1GaWxlIGZpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBtYXhfc2l6ZV9ieXRlcykgewogICByZXR1cm4g
d29ya2VyX3RocmVhZF8tPkludm9rZTxib29sPihSVENfRlJPTV9IRVJFLCBbJl0gewotICAgIHJl
dHVybiBtZWRpYV9lbmdpbmVfLT5TdGFydEFlY0R1bXAoZmlsZSwgbWF4X3NpemVfYnl0ZXMpOwor
ICAgIHJldHVybiBtZWRpYV9lbmdpbmVfLT52b2ljZSgpLlN0YXJ0QWVjRHVtcChmaWxlLCBtYXhf
c2l6ZV9ieXRlcyk7CiAgIH0pOwogfQogCiB2b2lkIENoYW5uZWxNYW5hZ2VyOjpTdG9wQWVjRHVt
cCgpIHsKICAgd29ya2VyX3RocmVhZF8tPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSB7IG1lZGlhX2VuZ2luZV8tPlN0b3BBZWNE
dW1wKCk7IH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSB7IG1lZGlhX2Vu
Z2luZV8tPnZvaWNlKCkuU3RvcEFlY0R1bXAoKTsgfSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBj
cmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvY2hhbm5lbG1hbmFnZXIuaAppbmRleCBjNmI2MDFlYThmNmNiMGUwMDE3
YjBiZjBhY2E3MDNkZTAyNDk2NThhLi41Y2FmZDhjZmE3MmY1NjM3N2ZjNTgxNTczMTQ4YTNhOTVi
NDgwYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9jaGFubmVsbWFuYWdlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL2NoYW5uZWxtYW5hZ2VyLmgKQEAgLTgwLDE0ICs4MCwxNiBAQCBj
bGFzcyBDaGFubmVsTWFuYWdlciBmaW5hbCB7CiAgIC8vIGNhbGwgdGhlIGFwcHJvcHJpYXRlIERl
c3Ryb3kqQ2hhbm5lbCBtZXRob2Qgd2hlbiBkb25lLgogCiAgIC8vIENyZWF0ZXMgYSB2b2ljZSBj
aGFubmVsLCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBzZXNzaW9uLgotICBW
b2ljZUNoYW5uZWwqIENyZWF0ZVZvaWNlQ2hhbm5lbCh3ZWJydGM6OkNhbGwqIGNhbGwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29uZmln
JiBtZWRpYV9jb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0
Yzo6UnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9u
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNydHBfcmVxdWly
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6Q3J5cHRv
T3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEF1ZGlvT3B0aW9ucyYgb3B0aW9ucyk7CisgIFZvaWNlQ2hhbm5lbCogQ3JlYXRl
Vm9pY2VDaGFubmVsKAorICAgICAgd2VicnRjOjpDYWxsKiBjYWxsLAorICAgICAgY29uc3QgY3Jp
Y2tldDo6TWVkaWFDb25maWcmIG1lZGlhX2NvbmZpZywKKyAgICAgIHdlYnJ0Yzo6UnRwVHJhbnNw
b3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQsCisgICAgICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0
SW50ZXJmYWNlKiBtZWRpYV90cmFuc3BvcnQsCisgICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5n
X3RocmVhZCwKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCisgICAgICBi
b29sIHNydHBfcmVxdWlyZWQsCisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNy
eXB0b19vcHRpb25zLAorICAgICAgY29uc3QgQXVkaW9PcHRpb25zJiBvcHRpb25zKTsKICAgLy8g
RGVzdHJveXMgYSB2b2ljZSBjaGFubmVsIGNyZWF0ZWQgYnkgQ3JlYXRlVm9pY2VDaGFubmVsLgog
ICB2b2lkIERlc3Ryb3lWb2ljZUNoYW5uZWwoVm9pY2VDaGFubmVsKiB2b2ljZV9jaGFubmVsKTsK
IApAQCAtMTAwLDcgKzEwMiw3IEBAIGNsYXNzIENoYW5uZWxNYW5hZ2VyIGZpbmFsIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJl
YWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBjb250ZW50X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
c3J0cF9yZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9u
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmlkZW9PcHRpb25z
JiBvcHRpb25zKTsKICAgLy8gRGVzdHJveXMgYSB2aWRlbyBjaGFubmVsIGNyZWF0ZWQgYnkgQ3Jl
YXRlVmlkZW9DaGFubmVsLgogICB2b2lkIERlc3Ryb3lWaWRlb0NoYW5uZWwoVmlkZW9DaGFubmVs
KiB2aWRlb19jaGFubmVsKTsKQEAgLTExMSw3ICsxMTMsNyBAQCBjbGFzcyBDaGFubmVsTWFuYWdl
ciBmaW5hbCB7CiAgICAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgICBib29sIHNydHBfcmVxdWlyZWQs
Ci0gICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKTsKKyAgICAg
IGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpOwogICAvLyBEZXN0
cm95cyBhIGRhdGEgY2hhbm5lbCBjcmVhdGVkIGJ5IENyZWF0ZVJ0cERhdGFDaGFubmVsLgogICB2
b2lkIERlc3Ryb3lSdHBEYXRhQ2hhbm5lbChSdHBEYXRhQ2hhbm5lbCogZGF0YV9jaGFubmVsKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvY2hhbm5lbG1hbmFnZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlcl91bml0dGVzdC5jYwppbmRleCA0N2M5
NTMwNmVlNzBmOGIyNjFiODBhYzA0ZWNlN2QzODg0MDI3MTJkLi42ZTljYWI2Y2RhODFkZTZjNjBl
YmU3ZWU4N2ZjMWFiNzdiYjk1YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdlcl91bml0dGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9jaGFubmVsbWFuYWdl
cl91bml0dGVzdC5jYwpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBpL3Rlc3QvZmFrZV9tZWRpYV90cmFuc3BvcnQu
aCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2VtZWRpYWVuZ2luZS5oIgogI2luY2x1ZGUgIm1l
ZGlhL2Jhc2UvdGVzdHV0aWxzLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2Zha2V3ZWJydGNj
YWxsLmgiCkBAIC02MSwyMCArNjIsMzIgQEAgY2xhc3MgQ2hhbm5lbE1hbmFnZXJUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHJldHVybiBkdGxzX3NydHBfdHJhbnNwb3J0OwogICB9
CiAKLSAgdm9pZCBUZXN0Q3JlYXRlRGVzdHJveUNoYW5uZWxzKHdlYnJ0Yzo6UnRwVHJhbnNwb3J0
SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQpIHsKKyAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVk
aWFUcmFuc3BvcnRJbnRlcmZhY2U+IENyZWF0ZU1lZGlhVHJhbnNwb3J0KAorICAgICAgcnRjOjpQ
YWNrZXRUcmFuc3BvcnRJbnRlcm5hbCogcGFja2V0X3RyYW5zcG9ydCkgeworICAgIGF1dG8gbWVk
aWFfdHJhbnNwb3J0X3Jlc3VsdCA9CisgICAgICAgIGZha2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3Rv
cnlfLkNyZWF0ZU1lZGlhVHJhbnNwb3J0KHBhY2tldF90cmFuc3BvcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfLmdl
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKmlzX2NhbGxlcj0qL3RydWUpOworICAgIFJUQ19DSEVDSyhtZWRpYV90cmFuc3Bv
cnRfcmVzdWx0Lm9rKCkpOworICAgIHJldHVybiBtZWRpYV90cmFuc3BvcnRfcmVzdWx0Lk1vdmVW
YWx1ZSgpOworICB9CisKKyAgdm9pZCBUZXN0Q3JlYXRlRGVzdHJveUNoYW5uZWxzKAorICAgICAg
d2VicnRjOjpSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwKKyAgICAgIHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCkgewogICAgIGNyaWNr
ZXQ6OlZvaWNlQ2hhbm5lbCogdm9pY2VfY2hhbm5lbCA9IGNtXy0+Q3JlYXRlVm9pY2VDaGFubmVs
KAotICAgICAgICAmZmFrZV9jYWxsXywgY3JpY2tldDo6TWVkaWFDb25maWcoKSwgcnRwX3RyYW5z
cG9ydCwKKyAgICAgICAgJmZha2VfY2FsbF8sIGNyaWNrZXQ6Ok1lZGlhQ29uZmlnKCksIHJ0cF90
cmFuc3BvcnQsIG1lZGlhX3RyYW5zcG9ydCwKICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQo
KSwgY3JpY2tldDo6Q05fQVVESU8sIGtEZWZhdWx0U3J0cFJlcXVpcmVkLAotICAgICAgICBydGM6
OkNyeXB0b09wdGlvbnMoKSwgQXVkaW9PcHRpb25zKCkpOworICAgICAgICB3ZWJydGM6OkNyeXB0
b09wdGlvbnMoKSwgQXVkaW9PcHRpb25zKCkpOwogICAgIEVYUEVDVF9UUlVFKHZvaWNlX2NoYW5u
ZWwgIT0gbnVsbHB0cik7CiAgICAgY3JpY2tldDo6VmlkZW9DaGFubmVsKiB2aWRlb19jaGFubmVs
ID0gY21fLT5DcmVhdGVWaWRlb0NoYW5uZWwoCiAgICAgICAgICZmYWtlX2NhbGxfLCBjcmlja2V0
OjpNZWRpYUNvbmZpZygpLCBydHBfdHJhbnNwb3J0LAogICAgICAgICBydGM6OlRocmVhZDo6Q3Vy
cmVudCgpLCBjcmlja2V0OjpDTl9WSURFTywga0RlZmF1bHRTcnRwUmVxdWlyZWQsCi0gICAgICAg
IHJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBWaWRlb09wdGlvbnMoKSk7CisgICAgICAgIHdlYnJ0Yzo6
Q3J5cHRvT3B0aW9ucygpLCBWaWRlb09wdGlvbnMoKSk7CiAgICAgRVhQRUNUX1RSVUUodmlkZW9f
Y2hhbm5lbCAhPSBudWxscHRyKTsKICAgICBjcmlja2V0OjpSdHBEYXRhQ2hhbm5lbCogcnRwX2Rh
dGFfY2hhbm5lbCA9IGNtXy0+Q3JlYXRlUnRwRGF0YUNoYW5uZWwoCiAgICAgICAgIGNyaWNrZXQ6
Ok1lZGlhQ29uZmlnKCksIHJ0cF90cmFuc3BvcnQsIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksCi0g
ICAgICAgIGNyaWNrZXQ6OkNOX0RBVEEsIGtEZWZhdWx0U3J0cFJlcXVpcmVkLCBydGM6OkNyeXB0
b09wdGlvbnMoKSk7CisgICAgICAgIGNyaWNrZXQ6OkNOX0RBVEEsIGtEZWZhdWx0U3J0cFJlcXVp
cmVkLCB3ZWJydGM6OkNyeXB0b09wdGlvbnMoKSk7CiAgICAgRVhQRUNUX1RSVUUocnRwX2RhdGFf
Y2hhbm5lbCAhPSBudWxscHRyKTsKICAgICBjbV8tPkRlc3Ryb3lWaWRlb0NoYW5uZWwodmlkZW9f
Y2hhbm5lbCk7CiAgICAgY21fLT5EZXN0cm95Vm9pY2VDaGFubmVsKHZvaWNlX2NoYW5uZWwpOwpA
QCAtOTAsNiArMTAzLDcgQEAgY2xhc3MgQ2hhbm5lbE1hbmFnZXJUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewogICBjcmlja2V0OjpGYWtlRGF0YUVuZ2luZSogZmRtZV87CiAgIHN0ZDo6dW5p
cXVlX3B0cjxjcmlja2V0OjpDaGFubmVsTWFuYWdlcj4gY21fOwogICBjcmlja2V0OjpGYWtlQ2Fs
bCBmYWtlX2NhbGxfOworICB3ZWJydGM6OkZha2VNZWRpYVRyYW5zcG9ydEZhY3RvcnkgZmFrZV9t
ZWRpYV90cmFuc3BvcnRfZmFjdG9yeV87CiB9OwogCiAvLyBUZXN0IHRoYXQgd2Ugc3RhcnR1cC9z
aHV0ZG93biBwcm9wZXJseS4KQEAgLTE1NCw3ICsxNjgsMTUgQEAgVEVTVF9GKENoYW5uZWxNYW5h
Z2VyVGVzdCwgU2V0VmlkZW9SdHhFbmFibGVkKSB7CiBURVNUX0YoQ2hhbm5lbE1hbmFnZXJUZXN0
LCBDcmVhdGVEZXN0cm95Q2hhbm5lbHMpIHsKICAgRVhQRUNUX1RSVUUoY21fLT5Jbml0KCkpOwog
ICBhdXRvIHJ0cF90cmFuc3BvcnQgPSBDcmVhdGVEdGxzU3J0cFRyYW5zcG9ydCgpOwotICBUZXN0
Q3JlYXRlRGVzdHJveUNoYW5uZWxzKHJ0cF90cmFuc3BvcnQuZ2V0KCkpOworICBUZXN0Q3JlYXRl
RGVzdHJveUNoYW5uZWxzKHJ0cF90cmFuc3BvcnQuZ2V0KCksIC8qbWVkaWFfdHJhbnNwb3J0PSov
bnVsbHB0cik7Cit9CisKK1RFU1RfRihDaGFubmVsTWFuYWdlclRlc3QsIENyZWF0ZURlc3Ryb3lD
aGFubmVsc1dpdGhNZWRpYVRyYW5zcG9ydCkgeworICBFWFBFQ1RfVFJVRShjbV8tPkluaXQoKSk7
CisgIGF1dG8gcnRwX3RyYW5zcG9ydCA9IENyZWF0ZUR0bHNTcnRwVHJhbnNwb3J0KCk7CisgIGF1
dG8gbWVkaWFfdHJhbnNwb3J0ID0KKyAgICAgIENyZWF0ZU1lZGlhVHJhbnNwb3J0KHJ0cF90cmFu
c3BvcnQtPnJ0Y3BfcGFja2V0X3RyYW5zcG9ydCgpKTsKKyAgVGVzdENyZWF0ZURlc3Ryb3lDaGFu
bmVscyhydHBfdHJhbnNwb3J0LmdldCgpLCBtZWRpYV90cmFuc3BvcnQuZ2V0KCkpOwogfQogCiBU
RVNUX0YoQ2hhbm5lbE1hbmFnZXJUZXN0LCBDcmVhdGVEZXN0cm95Q2hhbm5lbHNPblRocmVhZCkg
ewpAQCAtMTY0LDcgKzE4Niw3IEBAIFRFU1RfRihDaGFubmVsTWFuYWdlclRlc3QsIENyZWF0ZURl
c3Ryb3lDaGFubmVsc09uVGhyZWFkKSB7CiAgIEVYUEVDVF9UUlVFKGNtXy0+c2V0X25ldHdvcmtf
dGhyZWFkKG5ldHdvcmtfLmdldCgpKSk7CiAgIEVYUEVDVF9UUlVFKGNtXy0+SW5pdCgpKTsKICAg
YXV0byBydHBfdHJhbnNwb3J0ID0gQ3JlYXRlRHRsc1NydHBUcmFuc3BvcnQoKTsKLSAgVGVzdENy
ZWF0ZURlc3Ryb3lDaGFubmVscyhydHBfdHJhbnNwb3J0LmdldCgpKTsKKyAgVGVzdENyZWF0ZURl
c3Ryb3lDaGFubmVscyhydHBfdHJhbnNwb3J0LmdldCgpLCAvKm1lZGlhX3RyYW5zcG9ydD0qL251
bGxwdHIpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tldApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvY3JlYXRlcGVlcmNvbm5lY3Rp
b25mYWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvY3JlYXRlcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiYmM0ZWJiZTczMGY5OWFlMzgwMjdmMjM4MTI5MTgxODhiNWEwMTljLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2NyZWF0ZXBlZXJjb25uZWN0aW9uZmFjdG9yeS5j
YworKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDE3
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0j
aW5jbHVkZSAiYXBpL2NhbGwvY2FsbGZhY3RvcnlpbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkv
cGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3Zp
ZGVvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9f
ZW5jb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0Y19l
dmVudF9sb2dfZmFjdG9yeV9pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJtZWRpYS9lbmdpbmUvd2Vi
cnRjbWVkaWFlbmdpbmUuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRl
L2F1ZGlvX2RldmljZS5oIgotI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNs
dWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9iaW5kLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWQuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci0KLSNpZiBkZWZpbmVkKFVTRV9CVUlMVElOX1NX
X0NPREVDUykKLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8
QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnkpIHsK
LSAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeVdpdGhBdWRpb01peGVyKAotICAg
ICAgbnVsbHB0ciAvKm5ldHdvcmtfdGhyZWFkKi8sIG51bGxwdHIgLyp3b3JrZXJfdGhyZWFkKi8s
Ci0gICAgICBudWxscHRyIC8qc2lnbmFsaW5nX3RocmVhZCovLCBudWxscHRyIC8qZGVmYXVsdF9h
ZG0qLywKLSAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
LAotICAgICAgbnVsbHB0ciAvKnZpZGVvX2VuY29kZXJfZmFjdG9yeSovLCBudWxscHRyIC8qdmlk
ZW9fZGVjb2Rlcl9mYWN0b3J5Ki8sCi0gICAgICBudWxscHRyIC8qYXVkaW9fbWl4ZXIqLyk7Ci19
Ci0KLS8vIE5vdGU6IGFsbCB0aGUgb3RoZXIgQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5IHZh
cmlhbnRzIGp1c3QgZW5kIHVwIGNhbGxpbmcKLS8vIHRoaXMsIHVsdGltYXRlbHkuCi1ydGM6OnNj
b3BlZF9yZWZwdHI8UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBDcmVhdGVQZWVyQ29u
bmVjdGlvbkZhY3RvcnkoCi0gICAgcnRjOjpUaHJlYWQqIG5ldHdvcmtfdGhyZWFkLAotICAgIHJ0
Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAotICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhy
ZWFkLAotICAgIEF1ZGlvRGV2aWNlTW9kdWxlKiBkZWZhdWx0X2FkbSwKLSAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2Zh
Y3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRjVmlkZW9FbmNvZGVyRmFjdG9yeSogdmlkZW9fZW5j
b2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRGVjb2RlckZhY3RvcnkqIHZp
ZGVvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9NaXhlcj4g
YXVkaW9fbWl4ZXIsCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXVk
aW9fcHJvY2Vzc2luZykgewotICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBh
dWRpb19wcm9jZXNzaW5nX3VzZSA9IGF1ZGlvX3Byb2Nlc3Npbmc7Ci0gIGlmICghYXVkaW9fcHJv
Y2Vzc2luZ191c2UpIHsKLSAgICBhdWRpb19wcm9jZXNzaW5nX3VzZSA9IEF1ZGlvUHJvY2Vzc2lu
Z0J1aWxkZXIoKS5DcmVhdGUoKTsKLSAgfQotCi0gIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpN
ZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5naW5lKAotICAgICAgY3JpY2tldDo6V2ViUnRj
TWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoCi0gICAgICAgICAgZGVmYXVsdF9hZG0sIGF1ZGlv
X2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgICAgICAgIHZpZGVv
X2VuY29kZXJfZmFjdG9yeSwgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LCBhdWRpb19taXhlciwKLSAg
ICAgICAgICBhdWRpb19wcm9jZXNzaW5nX3VzZSkpOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxDYWxs
RmFjdG9yeUludGVyZmFjZT4gY2FsbF9mYWN0b3J5ID0gQ3JlYXRlQ2FsbEZhY3RvcnkoKTsKLQot
ICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dGYWN0b3J5SW50ZXJmYWNlPiBldmVudF9sb2df
ZmFjdG9yeSA9Ci0gICAgICBDcmVhdGVSdGNFdmVudExvZ0ZhY3RvcnkoKTsKLQotICByZXR1cm4g
Q3JlYXRlTW9kdWxhclBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICAgIG5ldHdvcmtfdGhyZWFk
LCB3b3JrZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBzdGQ6Om1vdmUobWVkaWFfZW5naW5l
KSwKLSAgICAgIHN0ZDo6bW92ZShjYWxsX2ZhY3RvcnkpLCBzdGQ6Om1vdmUoZXZlbnRfbG9nX2Zh
Y3RvcnkpKTsKLX0KLQotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUlu
dGVyZmFjZT4gQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgIHJ0Yzo6VGhyZWFkKiBu
ZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKLSAgICBydGM6
OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBBdWRpb0RldmljZU1vZHVsZSogZGVmYXVs
dF9hZG0sCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlv
X2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFj
dG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6OldlYlJ0Y1ZpZGVvRW5j
b2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNW
aWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgcnRjOjpzY29w
ZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyLAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmcsCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEZlY0NvbnRyb2xsZXJGYWN0b3J5SW50ZXJmYWNlPiBmZWNfY29udHJvbGxlcl9mYWN0b3J5LAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+Ci0g
ICAgICAgIG5ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5KSB7Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NpbmdfdXNlID0gYXVkaW9fcHJvY2Vzc2lu
ZzsKLSAgaWYgKCFhdWRpb19wcm9jZXNzaW5nX3VzZSkgewotICAgIGF1ZGlvX3Byb2Nlc3Npbmdf
dXNlID0gQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpOwotICB9Ci0KLSAgc3RkOjp1
bmlxdWVfcHRyPGNyaWNrZXQ6Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUoCi0g
ICAgICBjcmlja2V0OjpXZWJSdGNNZWRpYUVuZ2luZUZhY3Rvcnk6OkNyZWF0ZSgKLSAgICAgICAg
ICBkZWZhdWx0X2FkbSwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LCBhdWRpb19kZWNvZGVyX2ZhY3Rv
cnksCi0gICAgICAgICAgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LCB2aWRlb19kZWNvZGVyX2ZhY3Rv
cnksIGF1ZGlvX21peGVyLAotICAgICAgICAgIGF1ZGlvX3Byb2Nlc3NpbmdfdXNlKSk7Ci0KLSAg
c3RkOjp1bmlxdWVfcHRyPENhbGxGYWN0b3J5SW50ZXJmYWNlPiBjYWxsX2ZhY3RvcnkgPSBDcmVh
dGVDYWxsRmFjdG9yeSgpOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZ0ZhY3RvcnlJ
bnRlcmZhY2U+IGV2ZW50X2xvZ19mYWN0b3J5ID0KLSAgICAgIENyZWF0ZVJ0Y0V2ZW50TG9nRmFj
dG9yeSgpOwotCi0gIHJldHVybiBDcmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KAot
ICAgICAgbmV0d29ya190aHJlYWQsIHdvcmtlcl90aHJlYWQsIHNpZ25hbGluZ190aHJlYWQsIHN0
ZDo6bW92ZShtZWRpYV9lbmdpbmUpLAotICAgICAgc3RkOjptb3ZlKGNhbGxfZmFjdG9yeSksIHN0
ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSksCi0gICAgICBzdGQ6Om1vdmUoZmVjX2NvbnRyb2xs
ZXJfZmFjdG9yeSksIHN0ZDo6bW92ZShuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeSkpOwotfQot
I2VuZGlmCi0KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2U+IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICBydGM6OlRocmVhZCogbmV0d29y
a190aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgcnRjOjpUaHJl
YWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNl
TW9kdWxlPiBkZWZhdWx0X2FkbSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVy
RmFjdG9yeT4gYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxB
dWRpb0RlY29kZXJGYWN0b3J5PiBhdWRpb19kZWNvZGVyX2ZhY3RvcnksCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9yeT4gdmlkZW9fZGVjb2Rlcl9mYWN0b3J5
LAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb01peGVyPiBhdWRpb19taXhlciwKLSAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9jZXNzaW5nPiBhdWRpb19wcm9jZXNzaW5nKSB7Ci0g
IGlmICghYXVkaW9fcHJvY2Vzc2luZykKLSAgICBhdWRpb19wcm9jZXNzaW5nID0gQXVkaW9Qcm9j
ZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpN
ZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5naW5lID0KLSAgICAgIGNyaWNrZXQ6OldlYlJ0
Y01lZGlhRW5naW5lRmFjdG9yeTo6Q3JlYXRlKAotICAgICAgICAgIGRlZmF1bHRfYWRtLCBhdWRp
b19lbmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICAgICAgICBzdGQ6
Om1vdmUodmlkZW9fZW5jb2Rlcl9mYWN0b3J5KSwgc3RkOjptb3ZlKHZpZGVvX2RlY29kZXJfZmFj
dG9yeSksCi0gICAgICAgICAgYXVkaW9fbWl4ZXIsIGF1ZGlvX3Byb2Nlc3NpbmcpOwotCi0gIHN0
ZDo6dW5pcXVlX3B0cjxDYWxsRmFjdG9yeUludGVyZmFjZT4gY2FsbF9mYWN0b3J5ID0gQ3JlYXRl
Q2FsbEZhY3RvcnkoKTsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dGYWN0b3J5SW50
ZXJmYWNlPiBldmVudF9sb2dfZmFjdG9yeSA9Ci0gICAgICBDcmVhdGVSdGNFdmVudExvZ0ZhY3Rv
cnkoKTsKLQotICByZXR1cm4gQ3JlYXRlTW9kdWxhclBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAg
ICAgIG5ldHdvcmtfdGhyZWFkLCB3b3JrZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBzdGQ6
Om1vdmUobWVkaWFfZW5naW5lKSwKLSAgICAgIHN0ZDo6bW92ZShjYWxsX2ZhY3RvcnkpLCBzdGQ6
Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpKTsKLX0KLQotI2lmIGRlZmluZWQoVVNFX0JVSUxUSU5f
U1dfQ09ERUNTKQotcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVy
ZmFjZT4KLUNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeVdpdGhBdWRpb01peGVyKAotICAgIHJ0
Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCwKLSAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVh
ZCwKLSAgICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKLSAgICBBdWRpb0RldmljZU1v
ZHVsZSogZGVmYXVsdF9hZG0sCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZh
Y3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9EZWNvZGVyRmFjdG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAotICAgIGNyaWNrZXQ6Oldl
YlJ0Y1ZpZGVvRW5jb2RlckZhY3RvcnkqIHZpZGVvX2VuY29kZXJfZmFjdG9yeSwKLSAgICBjcmlj
a2V0OjpXZWJSdGNWaWRlb0RlY29kZXJGYWN0b3J5KiB2aWRlb19kZWNvZGVyX2ZhY3RvcnksCi0g
ICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvTWl4ZXI+IGF1ZGlvX21peGVyKSB7Ci0gIHJldHVy
biBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCi0gICAgICBuZXR3b3JrX3RocmVhZCwgd29y
a2VyX3RocmVhZCwgc2lnbmFsaW5nX3RocmVhZCwgZGVmYXVsdF9hZG0sCi0gICAgICBhdWRpb19l
bmNvZGVyX2ZhY3RvcnksIGF1ZGlvX2RlY29kZXJfZmFjdG9yeSwgdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5LAotICAgICAgdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LCBhdWRpb19taXhlciwgbnVsbHB0cik7
Ci19Ci0KLXJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+
IENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgKLSAgICBydGM6OlRocmVhZCogbmV0d29ya190
aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgcnRjOjpUaHJlYWQq
IHNpZ25hbGluZ190aHJlYWQsCi0gICAgQXVkaW9EZXZpY2VNb2R1bGUqIGRlZmF1bHRfYWRtLAot
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVy
X2ZhY3RvcnksCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1
ZGlvX2RlY29kZXJfZmFjdG9yeSwKLSAgICBjcmlja2V0OjpXZWJSdGNWaWRlb0VuY29kZXJGYWN0
b3J5KiB2aWRlb19lbmNvZGVyX2ZhY3RvcnksCi0gICAgY3JpY2tldDo6V2ViUnRjVmlkZW9EZWNv
ZGVyRmFjdG9yeSogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5KSB7Ci0gIHJldHVybiBDcmVhdGVQZWVy
Q29ubmVjdGlvbkZhY3RvcnlXaXRoQXVkaW9NaXhlcigKLSAgICAgIG5ldHdvcmtfdGhyZWFkLCB3
b3JrZXJfdGhyZWFkLCBzaWduYWxpbmdfdGhyZWFkLCBkZWZhdWx0X2FkbSwKLSAgICAgIGF1ZGlv
X2VuY29kZXJfZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCB2aWRlb19lbmNvZGVyX2Zh
Y3RvcnksCi0gICAgICB2aWRlb19kZWNvZGVyX2ZhY3RvcnksIG51bGxwdHIpOwotfQotI2VuZGlm
Ci0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2RhdGFjaGFubmVsLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZGF0YWNoYW5uZWwuY2MKaW5kZXggZjgx
OWQyNjY5NTc2MDUxNWQwOGZlMTk0YmEwMTMxNTIwMzcwNDA4ZC4uZTk4OTU4NjYwN2Q3N2JmM2E0
MWY5MjgzZDUyNGQzYWQzZjczYjBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZGF0YWNoYW5uZWwuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZGF0YWNoYW5uZWwuY2MKQEAgLTExOCw2
ICsxMTgsMTAgQEAgcnRjOjpzY29wZWRfcmVmcHRyPERhdGFDaGFubmVsPiBEYXRhQ2hhbm5lbDo6
Q3JlYXRlKAogICByZXR1cm4gY2hhbm5lbDsKIH0KIAorYm9vbCBEYXRhQ2hhbm5lbDo6SXNTY3Rw
TGlrZShjcmlja2V0OjpEYXRhQ2hhbm5lbFR5cGUgdHlwZSkgeworICByZXR1cm4gdHlwZSA9PSBj
cmlja2V0OjpEQ1RfU0NUUCB8fCB0eXBlID09IGNyaWNrZXQ6OkRDVF9NRURJQV9UUkFOU1BPUlQ7
Cit9CisKIERhdGFDaGFubmVsOjpEYXRhQ2hhbm5lbChEYXRhQ2hhbm5lbFByb3ZpZGVySW50ZXJm
YWNlKiBwcm92aWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpEYXRhQ2hh
bm5lbFR5cGUgZGN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBsYWJlbCkKQEAgLTE0Nyw3ICsxNTEsNyBAQCBib29sIERhdGFDaGFubmVsOjpJbml0KGNvbnN0
IEludGVybmFsRGF0YUNoYW5uZWxJbml0JiBjb25maWcpIHsKICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgaGFuZHNoYWtlX3N0YXRlXyA9IGtIYW5kc2hha2VSZWFkeTsKLSAgfSBlbHNl
IGlmIChkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6RENUX1NDVFApIHsKKyAgfSBlbHNl
IGlmIChJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpIHsKICAgICBpZiAoY29uZmlnLmlk
IDwgLTEgfHwgY29uZmlnLm1heFJldHJhbnNtaXRzIDwgLTEgfHwKICAgICAgICAgY29uZmlnLm1h
eFJldHJhbnNtaXRUaW1lIDwgLTEpIHsKICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWls
ZWQgdG8gaW5pdGlhbGl6ZSB0aGUgU0NUUCBkYXRhIGNoYW5uZWwgZHVlIHRvICIKQEAgLTI0MSw3
ICsyNDUsNyBAQCBib29sIERhdGFDaGFubmVsOjpTZW5kKGNvbnN0IERhdGFCdWZmZXImIGJ1ZmZl
cikgewogICBpZiAoIXF1ZXVlZF9zZW5kX2RhdGFfLkVtcHR5KCkpIHsKICAgICAvLyBPbmx5IFND
VFAgRGF0YUNoYW5uZWwgcXVldWVzIHRoZSBvdXRnb2luZyBkYXRhIHdoZW4gdGhlIHRyYW5zcG9y
dCBpcwogICAgIC8vIGJsb2NrZWQuCi0gICAgUlRDX0RDSEVDSyhkYXRhX2NoYW5uZWxfdHlwZV8g
PT0gY3JpY2tldDo6RENUX1NDVFApOworICAgIFJUQ19EQ0hFQ0soSXNTY3RwTGlrZShkYXRhX2No
YW5uZWxfdHlwZV8pKTsKICAgICBpZiAoIVF1ZXVlU2VuZERhdGFNZXNzYWdlKGJ1ZmZlcikpIHsK
ICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDbG9zaW5nIHRoZSBEYXRhQ2hhbm5lbCBkdWUg
dG8gYSBmYWlsdXJlIHRvIHF1ZXVlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhZGRp
dGlvbmFsIGRhdGEuIjsKQEAgLTI3Myw3ICsyNzcsNyBAQCB2b2lkIERhdGFDaGFubmVsOjpTZXRS
ZWNlaXZlU3NyYyh1aW50MzJfdCByZWNlaXZlX3NzcmMpIHsKIHZvaWQgRGF0YUNoYW5uZWw6OlNl
dFNjdHBTaWQoaW50IHNpZCkgewogICBSVENfRENIRUNLX0xUKGNvbmZpZ18uaWQsIDApOwogICBS
VENfRENIRUNLX0dFKHNpZCwgMCk7Ci0gIFJUQ19EQ0hFQ0tfRVEoZGF0YV9jaGFubmVsX3R5cGVf
LCBjcmlja2V0OjpEQ1RfU0NUUCk7CisgIFJUQ19EQ0hFQ0soSXNTY3RwTGlrZShkYXRhX2NoYW5u
ZWxfdHlwZV8pKTsKICAgaWYgKGNvbmZpZ18uaWQgPT0gc2lkKSB7CiAgICAgcmV0dXJuOwogICB9
CkBAIC0yODMsNyArMjg3LDcgQEAgdm9pZCBEYXRhQ2hhbm5lbDo6U2V0U2N0cFNpZChpbnQgc2lk
KSB7CiB9CiAKIHZvaWQgRGF0YUNoYW5uZWw6Ok9uQ2xvc2luZ1Byb2NlZHVyZVN0YXJ0ZWRSZW1v
dGVseShpbnQgc2lkKSB7Ci0gIGlmIChkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6RENU
X1NDVFAgJiYgc2lkID09IGNvbmZpZ18uaWQgJiYKKyAgaWYgKElzU2N0cExpa2UoZGF0YV9jaGFu
bmVsX3R5cGVfKSAmJiBzaWQgPT0gY29uZmlnXy5pZCAmJgogICAgICAgc3RhdGVfICE9IGtDbG9z
aW5nICYmIHN0YXRlXyAhPSBrQ2xvc2VkKSB7CiAgICAgLy8gRG9uJ3QgYm90aGVyIHNlbmRpbmcg
cXVldWVkIGRhdGEgc2luY2UgdGhlIHNpZGUgdGhhdCBpbml0aWF0ZWQgdGhlCiAgICAgLy8gY2xv
c3VyZSB3b3VsZG4ndCByZWNlaXZlIGl0IGFueXdheS4gU2VlIGNyYnVnLmNvbS81NTkzOTQgZm9y
IGEgbGVuZ3RoeQpAQCAtMjk5LDcgKzMwMyw3IEBAIHZvaWQgRGF0YUNoYW5uZWw6Ok9uQ2xvc2lu
Z1Byb2NlZHVyZVN0YXJ0ZWRSZW1vdGVseShpbnQgc2lkKSB7CiB9CiAKIHZvaWQgRGF0YUNoYW5u
ZWw6Ok9uQ2xvc2luZ1Byb2NlZHVyZUNvbXBsZXRlKGludCBzaWQpIHsKLSAgaWYgKGRhdGFfY2hh
bm5lbF90eXBlXyA9PSBjcmlja2V0OjpEQ1RfU0NUUCAmJiBzaWQgPT0gY29uZmlnXy5pZCkgewor
ICBpZiAoSXNTY3RwTGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pICYmIHNpZCA9PSBjb25maWdfLmlk
KSB7CiAgICAgLy8gSWYgdGhlIGNsb3NpbmcgcHJvY2VkdXJlIGlzIGNvbXBsZXRlLCB3ZSBzaG91
bGQgaGF2ZSBmaW5pc2hlZCBzZW5kaW5nCiAgICAgLy8gYWxsIHBlbmRpbmcgZGF0YSBhbmQgdHJh
bnNpdGlvbmVkIHRvIGtDbG9zaW5nIGFscmVhZHkuCiAgICAgUlRDX0RDSEVDS19FUShzdGF0ZV8s
IGtDbG9zaW5nKTsKQEAgLTMxMCw3ICszMTQsNyBAQCB2b2lkIERhdGFDaGFubmVsOjpPbkNsb3Np
bmdQcm9jZWR1cmVDb21wbGV0ZShpbnQgc2lkKSB7CiB9CiAKIHZvaWQgRGF0YUNoYW5uZWw6Ok9u
VHJhbnNwb3J0Q2hhbm5lbENyZWF0ZWQoKSB7Ci0gIFJUQ19EQ0hFQ0soZGF0YV9jaGFubmVsX3R5
cGVfID09IGNyaWNrZXQ6OkRDVF9TQ1RQKTsKKyAgUlRDX0RDSEVDSyhJc1NjdHBMaWtlKGRhdGFf
Y2hhbm5lbF90eXBlXykpOwogICBpZiAoIWNvbm5lY3RlZF90b19wcm92aWRlcl8pIHsKICAgICBj
b25uZWN0ZWRfdG9fcHJvdmlkZXJfID0gcHJvdmlkZXJfLT5Db25uZWN0RGF0YUNoYW5uZWwodGhp
cyk7CiAgIH0KQEAgLTM0OCwxMiArMzUyLDEyIEBAIHZvaWQgRGF0YUNoYW5uZWw6Ok9uRGF0YVJl
Y2VpdmVkKGNvbnN0IGNyaWNrZXQ6OlJlY2VpdmVEYXRhUGFyYW1zJiBwYXJhbXMsCiAgIGlmIChk
YXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6RENUX1JUUCAmJiBwYXJhbXMuc3NyYyAhPSBy
ZWNlaXZlX3NzcmNfKSB7CiAgICAgcmV0dXJuOwogICB9Ci0gIGlmIChkYXRhX2NoYW5uZWxfdHlw
ZV8gPT0gY3JpY2tldDo6RENUX1NDVFAgJiYgcGFyYW1zLnNpZCAhPSBjb25maWdfLmlkKSB7Cisg
IGlmIChJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykgJiYgcGFyYW1zLnNpZCAhPSBjb25m
aWdfLmlkKSB7CiAgICAgcmV0dXJuOwogICB9CiAKICAgaWYgKHBhcmFtcy50eXBlID09IGNyaWNr
ZXQ6OkRNVF9DT05UUk9MKSB7Ci0gICAgUlRDX0RDSEVDSyhkYXRhX2NoYW5uZWxfdHlwZV8gPT0g
Y3JpY2tldDo6RENUX1NDVFApOworICAgIFJUQ19EQ0hFQ0soSXNTY3RwTGlrZShkYXRhX2NoYW5u
ZWxfdHlwZV8pKTsKICAgICBpZiAoaGFuZHNoYWtlX3N0YXRlXyAhPSBrSGFuZHNoYWtlV2FpdGlu
Z0ZvckFjaykgewogICAgICAgLy8gSWdub3JlIGl0IGlmIHdlIGFyZSBub3QgZXhwZWN0aW5nIGFu
IEFDSyBtZXNzYWdlLgogICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQpAQCAtNTcwLDcgKzU3NCw3
IEBAIGJvb2wgRGF0YUNoYW5uZWw6OlNlbmREYXRhTWVzc2FnZShjb25zdCBEYXRhQnVmZmVyJiBi
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBxdWV1ZV9pZl9i
bG9ja2VkKSB7CiAgIGNyaWNrZXQ6OlNlbmREYXRhUGFyYW1zIHNlbmRfcGFyYW1zOwogCi0gIGlm
IChkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6RENUX1NDVFApIHsKKyAgaWYgKElzU2N0
cExpa2UoZGF0YV9jaGFubmVsX3R5cGVfKSkgewogICAgIHNlbmRfcGFyYW1zLm9yZGVyZWQgPSBj
b25maWdfLm9yZGVyZWQ7CiAgICAgLy8gU2VuZCBhcyBvcmRlcmVkIGlmIGl0IGlzIHN0aWxsIGdv
aW5nIHRocm91Z2ggT1BFTi9BQ0sgc2lnbmFsaW5nLgogICAgIGlmIChoYW5kc2hha2Vfc3RhdGVf
ICE9IGtIYW5kc2hha2VSZWFkeSAmJiAhY29uZmlnXy5vcmRlcmVkKSB7CkBAIC01OTcsNyArNjAx
LDcgQEAgYm9vbCBEYXRhQ2hhbm5lbDo6U2VuZERhdGFNZXNzYWdlKGNvbnN0IERhdGFCdWZmZXIm
IGJ1ZmZlciwKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCi0gIGlmIChkYXRhX2NoYW5uZWxfdHlw
ZV8gIT0gY3JpY2tldDo6RENUX1NDVFApIHsKKyAgaWYgKCFJc1NjdHBMaWtlKGRhdGFfY2hhbm5l
bF90eXBlXykpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIApAQCAtNjQ5LDcgKzY1Myw3IEBA
IHZvaWQgRGF0YUNoYW5uZWw6OlF1ZXVlQ29udHJvbE1lc3NhZ2UoY29uc3QgcnRjOjpDb3B5T25X
cml0ZUJ1ZmZlciYgYnVmZmVyKSB7CiBib29sIERhdGFDaGFubmVsOjpTZW5kQ29udHJvbE1lc3Nh
Z2UoY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgYnVmZmVyKSB7CiAgIGJvb2wgaXNfb3Bl
bl9tZXNzYWdlID0gaGFuZHNoYWtlX3N0YXRlXyA9PSBrSGFuZHNoYWtlU2hvdWxkU2VuZE9wZW47
CiAKLSAgUlRDX0RDSEVDS19FUShkYXRhX2NoYW5uZWxfdHlwZV8sIGNyaWNrZXQ6OkRDVF9TQ1RQ
KTsKKyAgUlRDX0RDSEVDSyhJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykpOwogICBSVENf
RENIRUNLKHdyaXRhYmxlXyk7CiAgIFJUQ19EQ0hFQ0tfR0UoY29uZmlnXy5pZCwgMCk7CiAgIFJU
Q19EQ0hFQ0soIWlzX29wZW5fbWVzc2FnZSB8fCAhY29uZmlnXy5uZWdvdGlhdGVkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2RhdGFj
aGFubmVsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9k
YXRhY2hhbm5lbC5oCmluZGV4IGNiYjBjOGIyY2YwYWJhNTY4Y2E3ZGJmZjRiM2QxYjkzYTVjYjk1
YjEuLjIyZWEzNTRjMjExNjMyZGI4NmU3OTQyMzQ4YmQ1YzMyODY2NGY3ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2RhdGFjaGFubmVs
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZGF0
YWNoYW5uZWwuaApAQCAtMTIyLDYgKzEyMiw4IEBAIGNsYXNzIERhdGFDaGFubmVsIDogcHVibGlj
IERhdGFDaGFubmVsSW50ZXJmYWNlLCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxhYmVsLAogICAgICAgY29uc3QgSW50ZXJuYWxEYXRhQ2hh
bm5lbEluaXQmIGNvbmZpZyk7CiAKKyAgc3RhdGljIGJvb2wgSXNTY3RwTGlrZShjcmlja2V0OjpE
YXRhQ2hhbm5lbFR5cGUgdHlwZSk7CisKICAgdmlydHVhbCB2b2lkIFJlZ2lzdGVyT2JzZXJ2ZXIo
RGF0YUNoYW5uZWxPYnNlcnZlciogb2JzZXJ2ZXIpOwogICB2aXJ0dWFsIHZvaWQgVW5yZWdpc3Rl
ck9ic2VydmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL2R0bHNzcnRwdHJhbnNwb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZHRsc3NydHB0cmFuc3BvcnQuY2MKaW5kZXggZTMx
YjJmNTg3MmNhOTZiNTczYmM4MTI0YTA1Y2QxZDM4MDIwY2Q4NC4uMjgzNWQzNGE0Njc3NjU0OTcy
YjU0YjdmNjAzM2ExZjQyMDM5NjMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZHRsc3NydHB0cmFuc3BvcnQuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZHRsc3NydHB0cmFuc3BvcnQu
Y2MKQEAgLTMwMSw2ICszMDEsOCBAQCB2b2lkIER0bHNTcnRwVHJhbnNwb3J0OjpPbkR0bHNTdGF0
ZShjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgUlRDX0RDSEVD
Syh0cmFuc3BvcnQgPT0gcnRwX2R0bHNfdHJhbnNwb3J0XyB8fAogICAgICAgICAgICAgIHRyYW5z
cG9ydCA9PSBydGNwX2R0bHNfdHJhbnNwb3J0Xyk7CiAKKyAgU2lnbmFsRHRsc1N0YXRlQ2hhbmdl
KCk7CisKICAgaWYgKHN0YXRlICE9IGNyaWNrZXQ6OkRUTFNfVFJBTlNQT1JUX0NPTk5FQ1RFRCkg
ewogICAgIFJlc2V0UGFyYW1zKCk7CiAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZHRsc3NydHB0cmFuc3BvcnQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2R0bHNzcnRwdHJh
bnNwb3J0LmgKaW5kZXggNDk4ZjAyZTkxNzYyMmI3MzAwNDk0NjA2MTE1OGZlMDk4NmY3ZWI3MS4u
Y2FjNTYwZTc5YWNlODVhZjM2NzI4MzVjNGRhYmY5NWMwY2NhZjNkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvZHRsc3NydHB0cmFuc3Bv
cnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9k
dGxzc3J0cHRyYW5zcG9ydC5oCkBAIC00Miw3ICs0Miw4IEBAIGNsYXNzIER0bHNTcnRwVHJhbnNw
b3J0IDogcHVibGljIFNydHBUcmFuc3BvcnQgewogICB2b2lkIFVwZGF0ZVJlY3ZFbmNyeXB0ZWRI
ZWFkZXJFeHRlbnNpb25JZHMoCiAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiByZWN2X2V4
dGVuc2lvbl9pZHMpOwogCi0gIHNpZ3Nsb3Q6OnNpZ25hbDI8RHRsc1NydHBUcmFuc3BvcnQqLCBi
b29sPiBTaWduYWxEdGxzU3J0cFNldHVwRmFpbHVyZTsKKyAgc2lnc2xvdDo6c2lnbmFsPER0bHNT
cnRwVHJhbnNwb3J0KiwgYm9vbD4gU2lnbmFsRHRsc1NydHBTZXR1cEZhaWx1cmU7CisgIHNpZ3Ns
b3Q6OnNpZ25hbDw+IFNpZ25hbER0bHNTdGF0ZUNoYW5nZTsKIAogICBSVENFcnJvciBTZXRTcnRw
U2VuZEtleShjb25zdCBjcmlja2V0OjpDcnlwdG9QYXJhbXMmIHBhcmFtcykgb3ZlcnJpZGUgewog
ICAgIHJldHVybiBSVENFcnJvcihSVENFcnJvclR5cGU6OlVOU1VQUE9SVEVEX09QRVJBVElPTiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2pzZXBpY2VjYW5kaWRhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9qc2VwaWNlY2FuZGlkYXRlLmNjCmluZGV4IDI3N2YxYmFiNGZmZjEwZDM4NGY3
ZDEzYTc0ZmFlM2E4ZDQ4YTc4YmUuLjIxMzNkOWRhZGQyNTgxODRiNDk3NzY4OTdjYzMzOWZmYTJj
NmI4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL2pzZXBpY2VjYW5kaWRhdGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcGljZWNhbmRpZGF0ZS5jYwpAQCAtMTQsNyArMTQsNiBA
QAogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicGMvd2VicnRj
c2RwLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAKIG5hbWVzcGFjZSB3
ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9qc2Vwc2Vzc2lvbmRlc2NyaXB0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHNlc3Npb25kZXNjcmlwdGlvbi5jYwppbmRl
eCA2NGE3YTJiZDU5MWIwYTY5MWVkMjFjOTFhNmY4YmE3Mzk1NGU0ZDMyLi4xM2QwNzQzODA4MjAw
NTM0MjhmMjNlZGExOTg1YzE4MmE0MmQwOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2Vwc2Vzc2lvbmRlc2NyaXB0aW9uLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXBzZXNz
aW9uZGVzY3JpcHRpb24uY2MKQEAgLTE3LDcgKzE3LDYgQEAKICNpbmNsdWRlICJwYy9tZWRpYXNl
c3Npb24uaCIKICNpbmNsdWRlICJwYy93ZWJydGNzZHAuaCIKICNpbmNsdWRlICJydGNfYmFzZS9h
cnJheXNpemUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKIAogdXNpbmcg
Y3JpY2tldDo6U2Vzc2lvbkRlc2NyaXB0aW9uOwogCkBAIC05MywzNyArOTIsOSBAQCB2b2lkIFVw
ZGF0ZUNvbm5lY3Rpb25BZGRyZXNzKAogCiB9ICAvLyBuYW1lc3BhY2UKIAotY29uc3QgY2hhciBT
ZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtPZmZlcltdID0gIm9mZmVyIjsKLWNvbnN0IGNo
YXIgU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprUHJBbnN3ZXJbXSA9ICJwcmFuc3dlciI7
Ci1jb25zdCBjaGFyIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6a0Fuc3dlcltdID0gImFu
c3dlciI7Ci0KIGNvbnN0IGludCBKc2VwU2Vzc2lvbkRlc2NyaXB0aW9uOjprRGVmYXVsdFZpZGVv
Q29kZWNJZCA9IDEwMDsKIGNvbnN0IGNoYXIgSnNlcFNlc3Npb25EZXNjcmlwdGlvbjo6a0RlZmF1
bHRWaWRlb0NvZGVjTmFtZVtdID0gIlZQOCI7CiAKLWNvbnN0IGNoYXIqIFNkcFR5cGVUb1N0cmlu
ZyhTZHBUeXBlIHR5cGUpIHsKLSAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBTZHBUeXBlOjpr
T2ZmZXI6Ci0gICAgICByZXR1cm4gU2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprT2ZmZXI7
Ci0gICAgY2FzZSBTZHBUeXBlOjprUHJBbnN3ZXI6Ci0gICAgICByZXR1cm4gU2Vzc2lvbkRlc2Ny
aXB0aW9uSW50ZXJmYWNlOjprUHJBbnN3ZXI7Ci0gICAgY2FzZSBTZHBUeXBlOjprQW5zd2VyOgot
ICAgICAgcmV0dXJuIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6a0Fuc3dlcjsKLSAgfQot
ICByZXR1cm4gIiI7Ci19Ci0KLWFic2w6Om9wdGlvbmFsPFNkcFR5cGU+IFNkcFR5cGVGcm9tU3Ry
aW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlX3N0cikgewotICBpZiAodHlwZV9zdHIgPT0gU2Vz
c2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlOjprT2ZmZXIpIHsKLSAgICByZXR1cm4gU2RwVHlwZTo6
a09mZmVyOwotICB9IGVsc2UgaWYgKHR5cGVfc3RyID09IFNlc3Npb25EZXNjcmlwdGlvbkludGVy
ZmFjZTo6a1ByQW5zd2VyKSB7Ci0gICAgcmV0dXJuIFNkcFR5cGU6OmtQckFuc3dlcjsKLSAgfSBl
bHNlIGlmICh0eXBlX3N0ciA9PSBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U6OmtBbnN3ZXIp
IHsKLSAgICByZXR1cm4gU2RwVHlwZTo6a0Fuc3dlcjsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4g
YWJzbDo6bnVsbG9wdDsKLSAgfQotfQotCiAvLyBUT0RPKHN0ZXZlYW50b24pOiBSZW1vdmUgdGhp
cyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9uY2UgQ2hyb21pdW0gaGFzIGJlZW4KIC8vIHVwZGF0
ZWQuCiBTZHBUeXBlIFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTo6R2V0VHlwZSgpIGNvbnN0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL2pzZXB0cmFuc3BvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0LmNjCmluZGV4IGMzZGZkMzI0NjRkZWQyNTc5YTE5NGMw
MWQ3ZWMxZGE4MTAyZjZkZDUuLjg4ZDIwYTQ1YjE3OTI3ZjQxZDM2MjViMTRiMTFjZjA1ZWM0YTFj
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL2pzZXB0cmFuc3BvcnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydC5jYwpAQCAtMTMsNyArMTMsNiBAQAogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gZm9yIHN0ZDo6cGFpcgogCi0jaW5j
bHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL2NhbmRpZGF0ZS5oIgog
I2luY2x1ZGUgInAycC9iYXNlL3AycGNvbnN0YW50cy5oIgogI2luY2x1ZGUgInAycC9iYXNlL3Ay
cHRyYW5zcG9ydGNoYW5uZWwuaCIKQEAgLTk0LDExICs5MywxMyBAQCBKc2VwVHJhbnNwb3J0OjpK
c2VwVHJhbnNwb3J0KAogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlNydHBUcmFuc3BvcnQ+
IHNkZXNfdHJhbnNwb3J0LAogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkR0bHNTcnRwVHJh
bnNwb3J0PiBkdGxzX3NydHBfdHJhbnNwb3J0LAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEdGxzVHJh
bnNwb3J0SW50ZXJuYWw+IHJ0cF9kdGxzX3RyYW5zcG9ydCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RHRsc1RyYW5zcG9ydEludGVybmFsPiBydGNwX2R0bHNfdHJhbnNwb3J0KQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxEdGxzVHJhbnNwb3J0SW50ZXJuYWw+IHJ0Y3BfZHRsc190cmFuc3BvcnQsCisgICAg
c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+IG1lZGlhX3Ry
YW5zcG9ydCkKICAgICA6IG1pZF8obWlkKSwKICAgICAgIGxvY2FsX2NlcnRpZmljYXRlXyhsb2Nh
bF9jZXJ0aWZpY2F0ZSksCiAgICAgICBydHBfZHRsc190cmFuc3BvcnRfKHN0ZDo6bW92ZShydHBf
ZHRsc190cmFuc3BvcnQpKSwKLSAgICAgIHJ0Y3BfZHRsc190cmFuc3BvcnRfKHN0ZDo6bW92ZShy
dGNwX2R0bHNfdHJhbnNwb3J0KSkgeworICAgICAgcnRjcF9kdGxzX3RyYW5zcG9ydF8oc3RkOjpt
b3ZlKHJ0Y3BfZHRsc190cmFuc3BvcnQpKSwKKyAgICAgIG1lZGlhX3RyYW5zcG9ydF8oc3RkOjpt
b3ZlKG1lZGlhX3RyYW5zcG9ydCkpIHsKICAgUlRDX0RDSEVDSyhydHBfZHRsc190cmFuc3BvcnRf
KTsKICAgaWYgKHVuZW5jcnlwdGVkX3J0cF90cmFuc3BvcnQpIHsKICAgICBSVENfRENIRUNLKCFz
ZGVzX3RyYW5zcG9ydCk7CkBAIC0xMTQsOSArMTE1LDE3IEBAIEpzZXBUcmFuc3BvcnQ6OkpzZXBU
cmFuc3BvcnQoCiAgICAgUlRDX0RDSEVDSyghc2Rlc190cmFuc3BvcnQpOwogICAgIGR0bHNfc3J0
cF90cmFuc3BvcnRfID0gc3RkOjptb3ZlKGR0bHNfc3J0cF90cmFuc3BvcnQpOwogICB9CisKKyAg
aWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBtZWRpYV90cmFuc3BvcnRfLT5TZXRNZWRpYVRy
YW5zcG9ydFN0YXRlQ2FsbGJhY2sodGhpcyk7CisgIH0KIH0KIAotSnNlcFRyYW5zcG9ydDo6fkpz
ZXBUcmFuc3BvcnQoKSB7fQorSnNlcFRyYW5zcG9ydDo6fkpzZXBUcmFuc3BvcnQoKSB7CisgIGlm
IChtZWRpYV90cmFuc3BvcnRfKSB7CisgICAgbWVkaWFfdHJhbnNwb3J0Xy0+U2V0TWVkaWFUcmFu
c3BvcnRTdGF0ZUNhbGxiYWNrKG51bGxwdHIpOworICB9Cit9CiAKIHdlYnJ0Yzo6UlRDRXJyb3Ig
SnNlcFRyYW5zcG9ydDo6U2V0TG9jYWxKc2VwVHJhbnNwb3J0RGVzY3JpcHRpb24oCiAgICAgY29u
c3QgSnNlcFRyYW5zcG9ydERlc2NyaXB0aW9uJiBqc2VwX2Rlc2NyaXB0aW9uLApAQCAtMzE1LDgg
KzMyNCw5IEBAIHdlYnJ0Yzo6UlRDRXJyb3IgSnNlcFRyYW5zcG9ydDo6VmVyaWZ5Q2VydGlmaWNh
dGVGaW5nZXJwcmludCgKICAgICByZXR1cm4gd2VicnRjOjpSVENFcnJvcih3ZWJydGM6OlJUQ0Vy
cm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkZpbmdlcnByaW50IHByb3ZpZGVkIGJ1dCBubyBpZGVudGl0eSBhdmFpbGFibGUuIik7CiAgIH0K
LSAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMRmluZ2VycHJpbnQ+IGZwX3RtcChydGM6OlNTTEZp
bmdlcnByaW50OjpDcmVhdGUoCi0gICAgICBmaW5nZXJwcmludC0+YWxnb3JpdGhtLCBjZXJ0aWZp
Y2F0ZS0+aWRlbnRpdHkoKSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmlu
dD4gZnBfdG1wID0KKyAgICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZVVuaXF1ZShmaW5n
ZXJwcmludC0+YWxnb3JpdGhtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpjZXJ0aWZpY2F0ZS0+aWRlbnRpdHkoKSk7CiAgIFJUQ19EQ0hFQ0soZnBfdG1wLmdldCgp
ICE9IE5VTEwpOwogICBpZiAoKmZwX3RtcCA9PSAqZmluZ2VycHJpbnQpIHsKICAgICByZXR1cm4g
d2VicnRjOjpSVENFcnJvcjo6T0soKTsKQEAgLTUwNSw3ICs1MTUsOCBAQCB3ZWJydGM6OlJUQ0Vy
cm9yIEpzZXBUcmFuc3BvcnQ6Ok5lZ290aWF0ZUFuZFNldER0bHNQYXJhbWV0ZXJzKAogICAgICAg
ICAiTG9jYWwgZmluZ2VycHJpbnQgc3VwcGxpZWQgd2hlbiBjYWxsZXIgZGlkbid0IG9mZmVyIERU
TFMuIik7CiAgIH0gZWxzZSB7CiAgICAgLy8gV2UgYXJlIG5vdCBkb2luZyBEVExTCi0gICAgcmVt
b3RlX2ZpbmdlcnByaW50ID0gYWJzbDo6bWFrZV91bmlxdWU8cnRjOjpTU0xGaW5nZXJwcmludD4o
IiIsIG51bGxwdHIsIDApOworICAgIHJlbW90ZV9maW5nZXJwcmludCA9IGFic2w6Om1ha2VfdW5p
cXVlPHJ0Yzo6U1NMRmluZ2VycHJpbnQ+KAorICAgICAgICAiIiwgcnRjOjpBcnJheVZpZXc8Y29u
c3QgdWludDhfdD4oKSk7CiAgIH0KICAgLy8gTm93IHRoYXQgd2UgaGF2ZSBuZWdvdGlhdGVkIGV2
ZXJ5dGhpbmcsIHB1c2ggaXQgZG93bndhcmQuCiAgIC8vIE5vdGUgdGhhdCB3ZSBjYWNoZSB0aGUg
cmVzdWx0IHNvIHRoYXQgaWYgd2UgaGF2ZSByYWNlIGNvbmRpdGlvbnMKQEAgLTYzMyw0ICs2NDQs
MTIgQEAgYm9vbCBKc2VwVHJhbnNwb3J0OjpHZXRUcmFuc3BvcnRTdGF0cyhEdGxzVHJhbnNwb3J0
SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0LAogICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBKc2Vw
VHJhbnNwb3J0OjpPblN0YXRlQ2hhbmdlZCh3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0U3RhdGUgc3Rh
dGUpIHsKKyAgLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTcxOSkgVGhpcyBtZXRob2QgY3VycmVu
dGx5IGZpcmVzIG9uIHRoZSBuZXR3b3JrCisgIC8vIHRocmVhZCwgYnV0IG1lZGlhIHRyYW5zcG9y
dCBkb2VzIG5vdCBtYWtlIHN1Y2ggZ3VhcmFudGVlcy4gV2UgbmVlZCB0byBtYWtlCisgIC8vIHN1
cmUgdGhpcyBjYWxsYmFjayBpcyBndWFyYW50ZWVkIHRvIGJlIGV4ZWN1dGVkIG9uIHRoZSBuZXR3
b3JrIHRocmVhZC4KKyAgbWVkaWFfdHJhbnNwb3J0X3N0YXRlXyA9IHN0YXRlOworICBTaWduYWxN
ZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZCgpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgY3JpY2tl
dApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvanNlcHRyYW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvanNlcHRyYW5zcG9ydC5oCmluZGV4IDhlODk4NTMzZWY5N2MxZWM2ZDJiZWU0Nzhm
ZmE5NmQyMDUwMWZlZDAuLjk1MmYyY2NiOGY3NDg0OGY2NDY1ODcxMDcwZGVhMzViMDhjMTYyMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2pzZXB0cmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0LmgKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJh
YnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAiYXBpL2NhbmRpZGF0ZS5oIgogI2luY2x1
ZGUgImFwaS9qc2VwLmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJwMnAvYmFzZS9kdGxzdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAicDJwL2Jh
c2UvcDJwY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvdHJhbnNwb3J0aW5mby5oIgpA
QCAtNzAsMTEgKzcxLDE2IEBAIHN0cnVjdCBKc2VwVHJhbnNwb3J0RGVzY3JpcHRpb24gewogLy8K
IC8vIE9uIFRocmVhZGluZzogSnNlcFRyYW5zcG9ydCBwZXJmb3JtcyB3b3JrIHNvbGVseSBvbiB0
aGUgbmV0d29yayB0aHJlYWQsIGFuZAogLy8gc28gaXRzIG1ldGhvZHMgc2hvdWxkIG9ubHkgYmUg
Y2FsbGVkIG9uIHRoZSBuZXR3b3JrIHRocmVhZC4KLWNsYXNzIEpzZXBUcmFuc3BvcnQgOiBwdWJs
aWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4geworY2xhc3MgSnNlcFRyYW5zcG9ydCA6IHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiwKKyAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgd2VicnRj
OjpNZWRpYVRyYW5zcG9ydFN0YXRlQ2FsbGJhY2sgewogIHB1YmxpYzoKICAgLy8gfG1pZHwgaXMg
anVzdCB1c2VkIGZvciBsb2cgc3RhdGVtZW50cyBpbiBvcmRlciB0byBpZGVudGlmeSB0aGUgVHJh
bnNwb3J0LgogICAvLyBOb3RlIHRoYXQgfGxvY2FsX2NlcnRpZmljYXRlfCBpcyBhbGxvd2VkIHRv
IGJlIG51bGwgc2luY2UgYSByZW1vdGUKICAgLy8gZGVzY3JpcHRpb24gbWF5IGJlIHNldCBiZWZv
cmUgYSBsb2NhbCBjZXJ0aWZpY2F0ZSBpcyBnZW5lcmF0ZWQuCisgIC8vCisgIC8vIHxtZWRpYV90
cmFzcG9ydHwgaXMgb3B0aW9uYWwgKGV4cGVyaW1lbnRhbCkuIElmIGF2YWlsYWJsZSBpdCB3aWxs
IGJlIHVzZWQKKyAgLy8gdG8gc2VuZCAvIHJlY2VpdmUgZW5jb2RlZCBhdWRpbyBhbmQgdmlkZW8g
ZnJhbWVzIGluc3RlYWQgb2YgUlRQLgorICAvLyBDdXJyZW50bHkgfG1lZGlhX3RyYW5zcG9ydHwg
Y2FuIGNvLWV4aXN0IHdpdGggUlRQIC8gUlRDUCB0cmFuc3BvcnRzLgogICBKc2VwVHJhbnNwb3J0
KAogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCwKICAgICAgIGNvbnN0IHJ0Yzo6c2NvcGVk
X3JlZnB0cjxydGM6OlJUQ0NlcnRpZmljYXRlPiYgbG9jYWxfY2VydGlmaWNhdGUsCkBAIC04Miw3
ICs4OCw4IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3Rz
PD4gewogICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6U3J0cFRyYW5zcG9ydD4gc2Rlc190
cmFuc3BvcnQsCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpEdGxzU3J0cFRyYW5zcG9y
dD4gZHRsc19zcnRwX3RyYW5zcG9ydCwKICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEdGxzVHJhbnNw
b3J0SW50ZXJuYWw+IHJ0cF9kdGxzX3RyYW5zcG9ydCwKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxE
dGxzVHJhbnNwb3J0SW50ZXJuYWw+IHJ0Y3BfZHRsc190cmFuc3BvcnQpOworICAgICAgc3RkOjp1
bmlxdWVfcHRyPER0bHNUcmFuc3BvcnRJbnRlcm5hbD4gcnRjcF9kdGxzX3RyYW5zcG9ydCwKKyAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlPiBtZWRp
YV90cmFuc3BvcnQpOwogCiAgIH5Kc2VwVHJhbnNwb3J0KCkgb3ZlcnJpZGU7CiAKQEAgLTE1OCwx
MSArMTY1LDI2IEBAIGNsYXNzIEpzZXBUcmFuc3BvcnQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Ns
b3RzPD4gewogICAgIHJldHVybiBydGNwX2R0bHNfdHJhbnNwb3J0Xy5nZXQoKTsKICAgfQogCisg
IC8vIFJldHVybnMgbWVkaWEgdHJhbnNwb3J0LCBpZiBhdmFpbGFibGUuCisgIC8vIE5vdGUgdGhh
dCBtZWRpYSB0cmFuc3BvcnQgaXMgb3duZWQgYnkganNlcHRyYW5zcG9ydCBhbmQgdGhlIHBvaW50
ZXIKKyAgLy8gdG8gbWVkaWEgdHJhbnNwb3J0IHdpbGwgYmVjb21lcyBpbnZhbGlkIGFmdGVyIGRl
c3RydWN0aW9uIG9mIGpzZXB0cmFuc3BvcnQuCisgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRl
cmZhY2UqIG1lZGlhX3RyYW5zcG9ydCgpIGNvbnN0IHsKKyAgICByZXR1cm4gbWVkaWFfdHJhbnNw
b3J0Xy5nZXQoKTsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIGxhdGVzdCBtZWRpYSB0cmFuc3Bv
cnQgc3RhdGUuCisgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZSBtZWRpYV90cmFuc3BvcnRf
c3RhdGUoKSBjb25zdCB7CisgICAgcmV0dXJuIG1lZGlhX3RyYW5zcG9ydF9zdGF0ZV87CisgIH0K
KwogICAvLyBUaGlzIGlzIHNpZ25hbGVkIHdoZW4gUlRDUC1tdXggYmVjb21lcyBhY3RpdmUgYW5k
CiAgIC8vIHxydGNwX2R0bHNfdHJhbnNwb3J0X3wgaXMgZGVzdHJveWVkLiBUaGUgSnNlcFRyYW5z
cG9ydENvbnRyb2xsZXIgd2lsbAogICAvLyBoYW5kbGUgdGhlIHNpZ25hbCBhbmQgdXBkYXRlIHRo
ZSBhZ2dyZWdhdGUgdHJhbnNwb3J0IHN0YXRlcy4KICAgc2lnc2xvdDo6c2lnbmFsPD4gU2lnbmFs
UnRjcE11eEFjdGl2ZTsKIAorICAvLyBUaGlzIGlzIHNpZ25hbGVkIGZvciBjaGFuZ2VzIGluIHxt
ZWRpYV90cmFuc3BvcnRffCBzdGF0ZS4KKyAgc2lnc2xvdDo6c2lnbmFsPD4gU2lnbmFsTWVkaWFU
cmFuc3BvcnRTdGF0ZUNoYW5nZWQ7CisKICAgLy8gVE9ETyhkZWFkYmVlZik6IFRoZSBtZXRob2Rz
IGJlbG93IGFyZSBvbmx5IHB1YmxpYyBmb3IgdGVzdGluZy4gU2hvdWxkIG1ha2UKICAgLy8gdGhl
bSB1dGlsaXR5IGZ1bmN0aW9ucyBvciBvYmplY3RzIHNvIHRoZXkgY2FuIGJlIHRlc3RlZCBpbmRl
cGVuZGVudGx5IGZyb20KICAgLy8gdGhpcyBjbGFzcy4KQEAgLTIxOCw2ICsyNDAsOSBAQCBjbGFz
cyBKc2VwVHJhbnNwb3J0IDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgYm9vbCBH
ZXRUcmFuc3BvcnRTdGF0cyhEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcG9ydFN0YXRzKiBzdGF0cyk7CiAKKyAgLy8g
SW52b2tlZCB3aGVuZXZlciB0aGUgc3RhdGUgb2YgdGhlIG1lZGlhIHRyYW5zcG9ydCBjaGFuZ2Vz
LgorICB2b2lkIE9uU3RhdGVDaGFuZ2VkKHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZSBzdGF0
ZSkgb3ZlcnJpZGU7CisKICAgY29uc3Qgc3RkOjpzdHJpbmcgbWlkXzsKICAgLy8gbmVlZHMtaWNl
LXJlc3RhcnQgYml0IGFzIGRlc2NyaWJlZCBpbiBKU0VQLgogICBib29sIG5lZWRzX2ljZV9yZXN0
YXJ0XyA9IGZhbHNlOwpAQCAtMjQxLDYgKzI2NiwxNCBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0IDog
cHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgYWJzbDo6b3B0aW9uYWw8c3RkOjp2ZWN0
b3I8aW50Pj4gc2VuZF9leHRlbnNpb25faWRzXzsKICAgYWJzbDo6b3B0aW9uYWw8c3RkOjp2ZWN0
b3I8aW50Pj4gcmVjdl9leHRlbnNpb25faWRzXzsKIAorICAvLyBPcHRpb25hbCBtZWRpYSB0cmFu
c3BvcnQgKGV4cGVyaW1lbnRhbCkuCisgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJh
bnNwb3J0SW50ZXJmYWNlPiBtZWRpYV90cmFuc3BvcnRfOworCisgIC8vIElmIHxtZWRpYV90cmFu
c3BvcnRffCBpcyBwcm92aWRlZCwgdGhpcyB2YXJpYWJsZSByZXByZXNlbnRzIHRoZSBzdGF0ZSBv
ZgorICAvLyBtZWRpYSB0cmFuc3BvcnQuCisgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZSBt
ZWRpYV90cmFuc3BvcnRfc3RhdGVfID0KKyAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0
ZTo6a1BlbmRpbmc7CisKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihKc2VwVHJhbnNw
b3J0KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0X3VuaXR0ZXN0LmNjCmlu
ZGV4IDU2YTc0MmMzMzhiYzdmZTAzYWQzYzIxODc4ZTFjYTQwZjA5MWNjNzUuLmU1MTgzMDFjZTJj
ODYyZmM3NWY2NDkxYWZmNGFkMDNmYmMxNjllNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRfdW5pdHRlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRy
YW5zcG9ydF91bml0dGVzdC5jYwpAQCAtOTgsMTEgKzk4LDE2IEBAIGNsYXNzIEpzZXBUcmFuc3Bv
cnQyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3Rz
PD4gewogICAgICAgICBSVENfTk9UUkVBQ0hFRCgpOwogICAgIH0KIAorICAgIC8vIFRPRE8oc3Vr
aGFub3YpOiBDdXJyZW50bHkgdGhlcmUgaXMgbm8gbWVkaWFfdHJhbnNwb3J0IHNwZWNpZmljCisg
ICAgLy8gbG9naWMgaW4ganNlcHRyYW5zcG9ydCwgc28ganNlcHRyYW5zcG9ydCB1bml0dGVzdHMg
YXJlIGNyZWF0ZWQgd2l0aAorICAgIC8vIG1lZGlhX3RyYW5zcG9ydCA9IG51bGxwdHIuIEluIHRo
ZSBmdXR1cmUgd2Ugd2lsbCBwcm9iYWJseSBhZGQKKyAgICAvLyBtb3JlIGxvZ2ljIHRoYXQgcmVx
dWlyZSB1bml0IHRlc3RzLiBOb3RlIHRoYXQgY3JlYXRpb24gb2YgbWVkaWFfdHJhbnNwb3J0Cisg
ICAgLy8gaXMgY292ZXJlZCBpbiBqc2VwdHJhbnNwb3J0Y29udHJvbGxlcl91bml0dGVzdC4KICAg
ICBhdXRvIGpzZXBfdHJhbnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8SnNlcFRyYW5zcG9ydD4o
CiAgICAgICAgIGtUcmFuc3BvcnROYW1lLCAvKmxvY2FsX2NlcnRpZmljYXRlPSovbnVsbHB0ciwK
ICAgICAgICAgc3RkOjptb3ZlKHVuZW5jcnlwdGVkX3J0cF90cmFuc3BvcnQpLCBzdGQ6Om1vdmUo
c2Rlc190cmFuc3BvcnQpLAogICAgICAgICBzdGQ6Om1vdmUoZHRsc19zcnRwX3RyYW5zcG9ydCks
IHN0ZDo6bW92ZShydHBfZHRsc190cmFuc3BvcnQpLAotICAgICAgICBzdGQ6Om1vdmUocnRjcF9k
dGxzX3RyYW5zcG9ydCkpOworICAgICAgICBzdGQ6Om1vdmUocnRjcF9kdGxzX3RyYW5zcG9ydCks
IC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAKICAgICBzaWduYWxfcnRjcF9tdXhfYWN0
aXZlX3JlY2VpdmVkXyA9IGZhbHNlOwogICAgIGpzZXBfdHJhbnNwb3J0LT5TaWduYWxSdGNwTXV4
QWN0aXZlLmNvbm5lY3QoCkBAIC0xMjEsNyArMTI2LDcgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydDJU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4gZmluZ2VycHJpbnQ7
CiAgICAgaWYgKGNlcnQpIHsKLSAgICAgIGZpbmdlcnByaW50LnJlc2V0KHJ0Yzo6U1NMRmluZ2Vy
cHJpbnQ6OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZShjZXJ0KSk7CisgICAgICBmaW5nZXJwcmludCA9
IHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZSgqY2VydCk7CiAgICAg
fQogICAgIGpzZXBfZGVzY3JpcHRpb24udHJhbnNwb3J0X2Rlc2MgPQogICAgICAgICBUcmFuc3Bv
cnREZXNjcmlwdGlvbihzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSwgdWZyYWcsIHB3ZCwKQEAg
LTM3OCwxMSArMzgzLDEyIEBAIFRFU1RfUChKc2VwVHJhbnNwb3J0MldpdGhSdGNwTXV4LCBWZXJp
ZnlDZXJ0aWZpY2F0ZUZpbmdlcnByaW50KSB7CiAgICAgQVNTRVJUX05FKG51bGxwdHIsIGNlcnRp
ZmljYXRlKTsKIAogICAgIHN0ZDo6c3RyaW5nIGRpZ2VzdF9hbGdvcml0aG07Ci0gICAgQVNTRVJU
X1RSVUUoY2VydGlmaWNhdGUtPnNzbF9jZXJ0aWZpY2F0ZSgpLkdldFNpZ25hdHVyZURpZ2VzdEFs
Z29yaXRobSgKKyAgICBBU1NFUlRfVFJVRShjZXJ0aWZpY2F0ZS0+R2V0U1NMQ2VydGlmaWNhdGUo
KS5HZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG0oCiAgICAgICAgICZkaWdlc3RfYWxnb3JpdGht
KSk7CiAgICAgQVNTRVJUX0ZBTFNFKGRpZ2VzdF9hbGdvcml0aG0uZW1wdHkoKSk7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPHJ0Yzo6U1NMRmluZ2VycHJpbnQ+IGdvb2RfZmluZ2VycHJpbnQoCi0gICAg
ICAgIHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZShkaWdlc3RfYWxnb3JpdGhtLCBjZXJ0aWZp
Y2F0ZS0+aWRlbnRpdHkoKSkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTEZpbmdlcnBy
aW50PiBnb29kX2ZpbmdlcnByaW50ID0KKyAgICAgICAgcnRjOjpTU0xGaW5nZXJwcmludDo6Q3Jl
YXRlVW5pcXVlKGRpZ2VzdF9hbGdvcml0aG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqY2VydGlmaWNhdGUtPmlkZW50aXR5KCkpOwogICAgIEFTU0VSVF9ORShu
dWxscHRyLCBnb29kX2ZpbmdlcnByaW50KTsKIAogICAgIEVYUEVDVF9UUlVFKGpzZXBfdHJhbnNw
b3J0XwpAQCAtMTA0NSw3ICsxMDUxLDcgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydDJIZWFkZXJFeHRl
bnNpb25UZXN0CiAgIHZvaWQgT25SZWFkUGFja2V0MShydGM6OlBhY2tldFRyYW5zcG9ydEludGVy
bmFsKiB0cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAog
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICBj
b25zdCBydGM6OlBhY2tldFRpbWUmIHRpbWUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQ2NF90JiAvKiBwYWNrZXRfdGltZV91cyAqLywKICAgICAgICAgICAgICAgICAgICAgIGludCBm
bGFncykgewogICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkpzZXBUcmFuc3BvcnQgMSBSZWNlaXZl
ZCBhIHBhY2tldC4iOwogICAgIENvbXBhcmVIZWFkZXJFeHRlbnNpb25zKApAQCAtMTA1OCw3ICsx
MDY0LDcgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydDJIZWFkZXJFeHRlbnNpb25UZXN0CiAgIHZvaWQg
T25SZWFkUGFja2V0MihydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFsKiB0cmFuc3BvcnQsCiAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRp
bWUmIHRpbWUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiAvKiBwYWNrZXRf
dGltZV91cyAqLywKICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykgewogICAgIFJUQ19M
T0coTFNfSU5GTykgPDwgIkpzZXBUcmFuc3BvcnQgMiBSZWNlaXZlZCBhIHBhY2tldC4iOwogICAg
IENvbXBhcmVIZWFkZXJFeHRlbnNpb25zKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydGNvbnRyb2xsZXIuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0
Y29udHJvbGxlci5jYwppbmRleCA0YzY5YTZhMDdlMjk1ODhjZTliZmE0ZGZhN2JlMzQ4NTVhMmZm
MDEyLi43OGVjYWYzMWRlYWM0ZTQxZThkYjQ4OGEwZGY2Y2E4MTUwNGQyY2I3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNw
b3J0Y29udHJvbGxlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJvbGxlci5jYwpAQCAtMTQsMTAgKzE0LDExIEBA
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9wb3J0LmgiCisjaW5jbHVkZSAi
cGMvc3J0cGZpbHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2JpbmQuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9rZXlfZGVyaXZhdGlvbi5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogCiB1c2luZyB3ZWJydGM6OlNkcFR5cGU7CkBA
IC0xMzMsNiArMTM0LDI0IEBAIFJ0cFRyYW5zcG9ydEludGVybmFsKiBKc2VwVHJhbnNwb3J0Q29u
dHJvbGxlcjo6R2V0UnRwVHJhbnNwb3J0KAogICByZXR1cm4ganNlcF90cmFuc3BvcnQtPnJ0cF90
cmFuc3BvcnQoKTsKIH0KIAorTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIEpzZXBUcmFuc3BvcnRD
b250cm9sbGVyOjpHZXRNZWRpYVRyYW5zcG9ydCgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlk
KSBjb25zdCB7CisgIGF1dG8ganNlcF90cmFuc3BvcnQgPSBHZXRKc2VwVHJhbnNwb3J0Rm9yTWlk
KG1pZCk7CisgIGlmICghanNlcF90cmFuc3BvcnQpIHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAg
fQorICByZXR1cm4ganNlcF90cmFuc3BvcnQtPm1lZGlhX3RyYW5zcG9ydCgpOworfQorCitNZWRp
YVRyYW5zcG9ydFN0YXRlIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpHZXRNZWRpYVRyYW5zcG9y
dFN0YXRlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpIGNvbnN0IHsKKyAgYXV0byBqc2Vw
X3RyYW5zcG9ydCA9IEdldEpzZXBUcmFuc3BvcnRGb3JNaWQobWlkKTsKKyAgaWYgKCFqc2VwX3Ry
YW5zcG9ydCkgeworICAgIHJldHVybiBNZWRpYVRyYW5zcG9ydFN0YXRlOjprUGVuZGluZzsKKyAg
fQorICByZXR1cm4ganNlcF90cmFuc3BvcnQtPm1lZGlhX3RyYW5zcG9ydF9zdGF0ZSgpOworfQor
CiBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIEpzZXBUcmFuc3BvcnRDb250cm9sbGVy
OjpHZXREdGxzVHJhbnNwb3J0KAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpIGNvbnN0IHsK
ICAgYXV0byBqc2VwX3RyYW5zcG9ydCA9IEdldEpzZXBUcmFuc3BvcnRGb3JNaWQobWlkKTsKQEAg
LTM3MCw2ICszODksMTUgQEAgdm9pZCBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6U2V0QWN0aXZl
UmVzZXRTcnRwUGFyYW1zKAogICB9CiB9CiAKK3ZvaWQgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6
OlNldE1lZGlhVHJhbnNwb3J0RmFjdG9yeSgKKyAgICBNZWRpYVRyYW5zcG9ydEZhY3RvcnkqIG1l
ZGlhX3RyYW5zcG9ydF9mYWN0b3J5KSB7CisgIFJUQ19EQ0hFQ0sobWVkaWFfdHJhbnNwb3J0X2Zh
Y3RvcnkgPT0gY29uZmlnXy5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSB8fAorICAgICAgICAgICAg
IGpzZXBfdHJhbnNwb3J0c19ieV9uYW1lXy5lbXB0eSgpKQorICAgICAgPDwgIllvdSBjYW4gb25s
eSBjYWxsIFNldE1lZGlhVHJhbnNwb3J0RmFjdG9yeSBiZWZvcmUgIgorICAgICAgICAgIkpzZXBU
cmFuc3BvcnRDb250cm9sbGVyIGNyZWF0ZWQgaXRzIGZpcnN0IHRyYW5zcG9ydC4iOworICBjb25m
aWdfLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7Cit9
CisKIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWw+CiBKc2Vw
VHJhbnNwb3J0Q29udHJvbGxlcjo6Q3JlYXRlRHRsc1RyYW5zcG9ydChjb25zdCBzdGQ6OnN0cmlu
ZyYgdHJhbnNwb3J0X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHJ0Y3ApIHsKQEAgLTQ3MSw2ICs0OTksOCBAQCBKc2VwVHJhbnNwb3J0Q29u
dHJvbGxlcjo6Q3JlYXRlRHRsc1NydHBUcmFuc3BvcnQoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0Y3BfZHRsc190cmFuc3BvcnQpOwogICBkdGxzX3NydHBfdHJh
bnNwb3J0LT5TZXRBY3RpdmVSZXNldFNydHBQYXJhbXMoCiAgICAgICBjb25maWdfLmFjdGl2ZV9y
ZXNldF9zcnRwX3BhcmFtcyk7CisgIGR0bHNfc3J0cF90cmFuc3BvcnQtPlNpZ25hbER0bHNTdGF0
ZUNoYW5nZS5jb25uZWN0KAorICAgICAgdGhpcywgJkpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpV
cGRhdGVBZ2dyZWdhdGVTdGF0ZXNfbik7CiAgIHJldHVybiBkdGxzX3NydHBfdHJhbnNwb3J0Owog
fQogCkBAIC01MjMsNyArNTUzLDcgQEAgUlRDRXJyb3IgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6
OkFwcGx5RGVzY3JpcHRpb25fbigKICAgICAgICAgKElzQnVuZGxlZChjb250ZW50X2luZm8ubmFt
ZSkgJiYgY29udGVudF9pbmZvLm5hbWUgIT0gKmJ1bmRsZWRfbWlkKCkpKSB7CiAgICAgICBjb250
aW51ZTsKICAgICB9Ci0gICAgZXJyb3IgPSBNYXliZUNyZWF0ZUpzZXBUcmFuc3BvcnQoY29udGVu
dF9pbmZvKTsKKyAgICBlcnJvciA9IE1heWJlQ3JlYXRlSnNlcFRyYW5zcG9ydChsb2NhbCwgY29u
dGVudF9pbmZvKTsKICAgICBpZiAoIWVycm9yLm9rKCkpIHsKICAgICAgIHJldHVybiBlcnJvcjsK
ICAgICB9CkBAIC03MzIsNiArNzYyLDEwIEBAIGJvb2wgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6
OkhhbmRsZUJ1bmRsZWRDb250ZW50KAogICAvLyBCYXNlQ2hhbm5lbC9TY3RwVHJhbnNwb3J0IGNo
YW5nZSB0aGUgUnRwVHJhbnNwb3J0L0R0bHNUcmFuc3BvcnQgZmlyc3QsCiAgIC8vIHRoZW4gZGVz
dHJveSB0aGUgY3JpY2tldDo6SnNlcFRyYW5zcG9ydC4KICAgaWYgKFNldFRyYW5zcG9ydEZvck1p
ZChjb250ZW50X2luZm8ubmFtZSwganNlcF90cmFuc3BvcnQpKSB7CisgICAgLy8gVE9ETyhidWdz
LndlYnJ0Yy5vcmcvOTcxOSkgRm9yIG1lZGlhIHRyYW5zcG9ydCB0aGlzIGlzIGZhciBmcm9tIGlk
ZWFsLAorICAgIC8vIGJlY2F1c2UgaXQgbWVhbnMgdGhhdCB3ZSBmaXJzdCBjcmVhdGUgbWVkaWEg
dHJhbnNwb3J0IGFuZCBzdGFydAorICAgIC8vIGNvbm5lY3RpbmcgaXQsIGFuZCB0aGVuIHdlIGRl
c3Ryb3kgaXQuIFdlIHdpbGwgbmVlZCB0byBhZGRyZXNzIGl0IGJlZm9yZQorICAgIC8vIHZpZGVv
IHBhdGggaXMgZW5hYmxlZC4KICAgICBNYXliZURlc3Ryb3lKc2VwVHJhbnNwb3J0KGNvbnRlbnRf
aW5mby5uYW1lKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQpAQCAtNzQ5LDEyICs3ODMsMTIgQEAg
Ym9vbCBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6U2V0VHJhbnNwb3J0Rm9yTWlkKAogICBtaWRf
dG9fdHJhbnNwb3J0X1ttaWRdID0ganNlcF90cmFuc3BvcnQ7CiAgIHJldHVybiBjb25maWdfLnRy
YW5zcG9ydF9vYnNlcnZlci0+T25UcmFuc3BvcnRDaGFuZ2VkKAogICAgICAgbWlkLCBqc2VwX3Ry
YW5zcG9ydC0+cnRwX3RyYW5zcG9ydCgpLAotICAgICAganNlcF90cmFuc3BvcnQtPnJ0cF9kdGxz
X3RyYW5zcG9ydCgpKTsKKyAgICAgIGpzZXBfdHJhbnNwb3J0LT5ydHBfZHRsc190cmFuc3BvcnQo
KSwganNlcF90cmFuc3BvcnQtPm1lZGlhX3RyYW5zcG9ydCgpKTsKIH0KIAogdm9pZCBKc2VwVHJh
bnNwb3J0Q29udHJvbGxlcjo6UmVtb3ZlVHJhbnNwb3J0Rm9yTWlkKGNvbnN0IHN0ZDo6c3RyaW5n
JiBtaWQpIHsKLSAgYm9vbCByZXQgPQotICAgICAgY29uZmlnXy50cmFuc3BvcnRfb2JzZXJ2ZXIt
Pk9uVHJhbnNwb3J0Q2hhbmdlZChtaWQsIG51bGxwdHIsIG51bGxwdHIpOworICBib29sIHJldCA9
IGNvbmZpZ18udHJhbnNwb3J0X29ic2VydmVyLT5PblRyYW5zcG9ydENoYW5nZWQobWlkLCBudWxs
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwgbnVsbHB0cik7CiAgIC8vIENhbGxpbmcgT25UcmFuc3BvcnRDaGFu
Z2VkIHdpdGggbnVsbHB0ciBzaG91bGQgYWx3YXlzIHN1Y2NlZWQsIHNpbmNlIGl0IGlzCiAgIC8v
IG9ubHkgZXhwZWN0ZWQgdG8gZmFpbCB3aGVuIGFkZGluZyBtZWRpYSB0byBhIHRyYW5zcG9ydCAo
bm90IHJlbW92aW5nKS4KICAgUlRDX0RDSEVDSyhyZXQpOwpAQCAtODA2LDcgKzg0MCw3IEBAIHN0
ZDo6dmVjdG9yPGludD4gSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkdldEVuY3J5cHRlZEhlYWRl
ckV4dGVuc2lvbklkcygKICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IGNyaWNrZXQ6Ok1lZGlhQ29u
dGVudERlc2NyaXB0aW9uKj4oCiAgICAgICAgICAgY29udGVudF9pbmZvLmRlc2NyaXB0aW9uKTsK
IAotICBpZiAoIWNvbmZpZ18uY3J5cHRvX29wdGlvbnMuZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVh
ZGVyX2V4dGVuc2lvbnMpIHsKKyAgaWYgKCFjb25maWdfLmNyeXB0b19vcHRpb25zLnNydHAuZW5h
YmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnMpIHsKICAgICByZXR1cm4gc3RkOjp2
ZWN0b3I8aW50PigpOwogICB9CiAKQEAgLTg4OCw3ICs5MjIsOTQgQEAgY3JpY2tldDo6SnNlcFRy
YW5zcG9ydCogSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6OkdldEpzZXBUcmFuc3BvcnRCeU5hbWUo
CiAgIHJldHVybiAoaXQgPT0ganNlcF90cmFuc3BvcnRzX2J5X25hbWVfLmVuZCgpKSA/IG51bGxw
dHIgOiBpdC0+c2Vjb25kLmdldCgpOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRp
YVRyYW5zcG9ydEludGVyZmFjZT4KK0pzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpNYXliZUNyZWF0
ZU1lZGlhVHJhbnNwb3J0KAorICAgIGNvbnN0IGNyaWNrZXQ6OkNvbnRlbnRJbmZvJiBjb250ZW50
X2luZm8sCisgICAgYm9vbCBsb2NhbCwKKyAgICBjcmlja2V0OjpJY2VUcmFuc3BvcnRJbnRlcm5h
bCogaWNlX3RyYW5zcG9ydCkgeworICBhYnNsOjpvcHRpb25hbDxjcmlja2V0OjpDcnlwdG9QYXJh
bXM+IHNlbGVjdGVkX2NyeXB0b19mb3JfbWVkaWFfdHJhbnNwb3J0OworICBpZiAoY29udGVudF9p
bmZvLm1lZGlhX2Rlc2NyaXB0aW9uKCkgJiYKKyAgICAgICFjb250ZW50X2luZm8ubWVkaWFfZGVz
Y3JpcHRpb24oKS0+Y3J5cHRvcygpLmVtcHR5KCkpIHsKKyAgICAvLyBPcmRlciBvZiBjcnlwdG9z
IGlzIGRldGVybWluaXN0aWMgKHJmYzQ1NjgsIDUuMS4xKSwgc28gd2UganVzdCBzZWxlY3QgdGhl
CisgICAgLy8gZmlyc3Qgb25lIChpbiBmYWN0IHRoZSBmaXJzdCBvbmUgc2hvdWxkIGJlIHRoZSBt
b3N0IHByZWZlcnJlZCBvbmUuKSBXZQorICAgIC8vIGlnbm9yZSB0aGUgSE1BQyBzaXplLCBhcyBt
ZWRpYSB0cmFuc3BvcnQgY3J5cHRvIHNldHRpbmdzIGN1cnJlbnRseSBkb24ndAorICAgIC8vIGV4
cG9zZSBITUFDIHNpemUsIG5vciBjcnlwdG8gcHJvdG9jb2wgZm9yIHRoYXQgbWF0dGVyLgorICAg
IHNlbGVjdGVkX2NyeXB0b19mb3JfbWVkaWFfdHJhbnNwb3J0ID0KKyAgICAgICAgY29udGVudF9p
bmZvLm1lZGlhX2Rlc2NyaXB0aW9uKCktPmNyeXB0b3MoKVswXTsKKyAgfQorCisgIGlmIChjb25m
aWdfLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ICE9IG51bGxwdHIpIHsKKyAgICBpZiAoIXNlbGVj
dGVkX2NyeXB0b19mb3JfbWVkaWFfdHJhbnNwb3J0Lmhhc192YWx1ZSgpKSB7CisgICAgICBSVENf
TE9HKExTX1dBUk5JTkcpIDw8ICJhPWNyeXRvIGxpbmUgd2FzIG5vdCBmb3VuZCBpbiB0aGUgb2Zm
ZXIuIE1vc3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlrZWx5IHlvdSBkaWQg
bm90IGVuYWJsZSBTREVTLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWtlIHN1
cmUgdG8gcGFzcyBjb25maWcuZW5hYmxlX2R0bHNfc3J0cD1mYWxzZSAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ0byBSVENDb25maWd1cmF0aW9uLiAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJDYW5ub3QgY29udGludWUgd2l0aCBtZWRpYSB0cmFuc3BvcnQuIEZhbGxp
bmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFjayB0byBSVFAuIGlzX2xvY2Fs
PSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgbG9jYWw7CisKKyAgICAgIC8vIFJlbW92
ZSBtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSBmcm9tIGNvbmZpZywgYmVjYXVzZSB3ZSBkb24ndCB3
YW50IHRvCisgICAgICAvLyB1c2UgaXQgb24gdGhlIHN1YnNlcXVlbnQgY2FsbCAoZm9yIHRoZSBv
dGhlciBzaWRlIG9mIHRoZSBvZmZlcikuCisgICAgICBjb25maWdfLm1lZGlhX3RyYW5zcG9ydF9m
YWN0b3J5ID0gbnVsbHB0cjsKKyAgICB9IGVsc2UgeworICAgICAgLy8gTm90ZSB0aGF0IHdlIGln
bm9yZSBoZXJlIGxpZmV0aW1lIGFuZCBsZW5ndGguCisgICAgICAvLyBJbiBmYWN0IHdlIHRha2Ug
dGhvc2UgYml0cyAoaW5saW5lLCBsaWZldGltZSBhbmQgbGVuZ3RoKSBhbmQga2VlcCBpdCBhcwor
ICAgICAgLy8gcGFydCBvZiBrZXkgZGVyaXZhdGlvbi4KKyAgICAgIC8vCisgICAgICAvLyBUZWNo
bmljYWxseSwgd2UgYXJlIGFsc28gbm90IGZvbGxvd2luZyByZmM0NTY4LCB3aGljaCByZXF1aXJl
cyB1cyB0bworICAgICAgLy8gc2VuZCBhbmQgYW5zd2VyIHdpdGggdGhlIGtleSB0aGF0IHdlIGNo
b3NlLiBJbiBwcmFjdGljZSwgZm9yIG1lZGlhCisgICAgICAvLyB0cmFuc3BvcnQsIHRoZSBjdXJy
ZW50IGFwcHJvYWNoIHNob3VsZCBiZSBzdWZmaWNpZW50ICh3ZSB0YWtlIHRoZSBrZXkKKyAgICAg
IC8vIHRoYXQgc2VuZGVyIG9mZmVyZWQsIGFuZCBjYWxsZXIgYXNzdW1lcyB3ZSB3aWxsIHVzZSBp
dC4gV2UgYXJlIG5vdAorICAgICAgLy8gc2lnbmFsaW5nIGJhY2sgdGhhdCB3ZSBpbmRlZWQgdXNl
ZCBpdC4pCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpLZXlEZXJpdmF0aW9uPiBrZXlfZGVy
aXZhdGlvbiA9CisgICAgICAgICAgcnRjOjpLZXlEZXJpdmF0aW9uOjpDcmVhdGUocnRjOjpLZXlE
ZXJpdmF0aW9uQWxnb3JpdGhtOjpIS0RGX1NIQTI1Nik7CisgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBsYWJlbCA9ICJNZWRpYVRyYW5zcG9ydExhYmVsIjsKKyAgICAgIGNvbnN0ZXhwciBpbnQga0Rl
cml2ZWRLZXlCeXRlU2l6ZSA9IDMyOworCisgICAgICBpbnQga2V5X2xlbiwgc2FsdF9sZW47Cisg
ICAgICBpZiAoIXJ0Yzo6R2V0U3J0cEtleUFuZFNhbHRMZW5ndGhzKAorICAgICAgICAgICAgICBy
dGM6OlNydHBDcnlwdG9TdWl0ZUZyb21OYW1lKAorICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRf
Y3J5cHRvX2Zvcl9tZWRpYV90cmFuc3BvcnQudmFsdWUoKS5jaXBoZXJfc3VpdGUpLAorICAgICAg
ICAgICAgICAma2V5X2xlbiwgJnNhbHRfbGVuKSkgeworICAgICAgICBSVENfQ0hFQ0soZmFsc2Up
IDw8ICJDYW5ub3Qgc2V0IHVwIHNlY3VyZSBtZWRpYSB0cmFuc3BvcnQiOworICAgICAgfQorICAg
ICAgcnRjOjpaZXJvT25GcmVlQnVmZmVyPHVpbnQ4X3Q+IHJhd19rZXkoa2V5X2xlbiArIHNhbHRf
bGVuKTsKKworICAgICAgY3JpY2tldDo6U3J0cEZpbHRlcjo6UGFyc2VLZXlQYXJhbXMoCisgICAg
ICAgICAgc2VsZWN0ZWRfY3J5cHRvX2Zvcl9tZWRpYV90cmFuc3BvcnQudmFsdWUoKS5rZXlfcGFy
YW1zLAorICAgICAgICAgIHJhd19rZXkuZGF0YSgpLCByYXdfa2V5LnNpemUoKSk7CisgICAgICBh
YnNsOjpvcHRpb25hbDxydGM6Olplcm9PbkZyZWVCdWZmZXI8dWludDhfdD4+IGtleSA9CisgICAg
ICAgICAga2V5X2Rlcml2YXRpb24tPkRlcml2ZUtleSgKKyAgICAgICAgICAgICAgcmF3X2tleSwK
KyAgICAgICAgICAgICAgLypzYWx0PSovbnVsbHB0ciwKKyAgICAgICAgICAgICAgcnRjOjpBcnJh
eVZpZXc8Y29uc3QgdWludDhfdD4oCisgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihsYWJlbC5kYXRhKCkpLCBsYWJlbC5zaXplKCkpLAorICAgICAgICAg
ICAgICBrRGVyaXZlZEtleUJ5dGVTaXplKTsKKworICAgICAgLy8gV2Ugd2FudCB0byBjcmFzaCB0
aGUgYXBwIGlmIHdlIGRvbid0IGhhdmUgYSBrZXksIGFuZCBub3Qgc2lsZW50bHkgZmFsbAorICAg
ICAgLy8gYmFjayB0byB0aGUgdW5zZWN1cmUgY29tbXVuaWNhdGlvbi4KKyAgICAgIFJUQ19DSEVD
SyhrZXkuaGFzX3ZhbHVlKCkpOworICAgICAgTWVkaWFUcmFuc3BvcnRTZXR0aW5ncyBzZXR0aW5n
czsKKyAgICAgIHNldHRpbmdzLmlzX2NhbGxlciA9IGxvY2FsOworICAgICAgc2V0dGluZ3MucHJl
X3NoYXJlZF9rZXkgPQorICAgICAgICAgIHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGtleS52YWx1ZSgpLmRhdGEoKSksCisgICAgICAgICAgICAgICAgICAgICAga2V5
LnZhbHVlKCkuc2l6ZSgpKTsKKyAgICAgIGF1dG8gbWVkaWFfdHJhbnNwb3J0X3Jlc3VsdCA9Cisg
ICAgICAgICAgY29uZmlnXy5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeS0+Q3JlYXRlTWVkaWFUcmFu
c3BvcnQoCisgICAgICAgICAgICAgIGljZV90cmFuc3BvcnQsIG5ldHdvcmtfdGhyZWFkXywgc2V0
dGluZ3MpOworCisgICAgICAvLyBUT0RPKHN1a2hhbm92KTogUHJvcGVyIGVycm9yIGhhbmRsaW5n
LgorICAgICAgUlRDX0NIRUNLKG1lZGlhX3RyYW5zcG9ydF9yZXN1bHQub2soKSk7CisKKyAgICAg
IHJldHVybiBtZWRpYV90cmFuc3BvcnRfcmVzdWx0Lk1vdmVWYWx1ZSgpOworICAgIH0KKyAgfQor
CisgIHJldHVybiBudWxscHRyOworfQorCiBSVENFcnJvciBKc2VwVHJhbnNwb3J0Q29udHJvbGxl
cjo6TWF5YmVDcmVhdGVKc2VwVHJhbnNwb3J0KAorICAgIGJvb2wgbG9jYWwsCiAgICAgY29uc3Qg
Y3JpY2tldDo6Q29udGVudEluZm8mIGNvbnRlbnRfaW5mbykgewogICBSVENfRENIRUNLKG5ldHdv
cmtfdGhyZWFkXy0+SXNDdXJyZW50KCkpOwogICBjcmlja2V0OjpKc2VwVHJhbnNwb3J0KiB0cmFu
c3BvcnQgPSBHZXRKc2VwVHJhbnNwb3J0QnlOYW1lKGNvbnRlbnRfaW5mby5uYW1lKTsKQEAgLTkw
NiwxNyArMTAyNywyNCBAQCBSVENFcnJvciBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6TWF5YmVD
cmVhdGVKc2VwVHJhbnNwb3J0KAogCiAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpEdGxzVHJh
bnNwb3J0SW50ZXJuYWw+IHJ0cF9kdGxzX3RyYW5zcG9ydCA9CiAgICAgICBDcmVhdGVEdGxzVHJh
bnNwb3J0KGNvbnRlbnRfaW5mby5uYW1lLCAvKnJ0Y3AgPSovZmFsc2UpOworCiAgIHN0ZDo6dW5p
cXVlX3B0cjxjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWw+IHJ0Y3BfZHRsc190cmFuc3Bv
cnQ7CisgIHN0ZDo6dW5pcXVlX3B0cjxSdHBUcmFuc3BvcnQ+IHVuZW5jcnlwdGVkX3J0cF90cmFu
c3BvcnQ7CisgIHN0ZDo6dW5pcXVlX3B0cjxTcnRwVHJhbnNwb3J0PiBzZGVzX3RyYW5zcG9ydDsK
KyAgc3RkOjp1bmlxdWVfcHRyPER0bHNTcnRwVHJhbnNwb3J0PiBkdGxzX3NydHBfdHJhbnNwb3J0
OworICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+IG1lZGlhX3RyYW5z
cG9ydDsKKwogICBpZiAoY29uZmlnXy5ydGNwX211eF9wb2xpY3kgIT0KICAgICAgICAgICBQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6a1J0Y3BNdXhQb2xpY3lSZXF1aXJlICYmCiAgICAgICBjb250
ZW50X2luZm8udHlwZSA9PSBjcmlja2V0OjpNZWRpYVByb3RvY29sVHlwZTo6a1J0cCkgewogICAg
IHJ0Y3BfZHRsc190cmFuc3BvcnQgPQogICAgICAgICBDcmVhdGVEdGxzVHJhbnNwb3J0KGNvbnRl
bnRfaW5mby5uYW1lLCAvKnJ0Y3AgPSovdHJ1ZSk7CiAgIH0KKyAgbWVkaWFfdHJhbnNwb3J0ID0g
TWF5YmVDcmVhdGVNZWRpYVRyYW5zcG9ydCgKKyAgICAgIGNvbnRlbnRfaW5mbywgbG9jYWwsIHJ0
cF9kdGxzX3RyYW5zcG9ydC0+aWNlX3RyYW5zcG9ydCgpKTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8
UnRwVHJhbnNwb3J0PiB1bmVuY3J5cHRlZF9ydHBfdHJhbnNwb3J0OwotICBzdGQ6OnVuaXF1ZV9w
dHI8U3J0cFRyYW5zcG9ydD4gc2Rlc190cmFuc3BvcnQ7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxEdGxz
U3J0cFRyYW5zcG9ydD4gZHRsc19zcnRwX3RyYW5zcG9ydDsKKyAgLy8gVE9ETyhzdWtoYW5vdik6
IERvIG5vdCBjcmVhdGUgUlRQL1JUQ1AgdHJhbnNwb3J0cyBpZiBtZWRpYSB0cmFuc3BvcnQgaXMK
KyAgLy8gdXNlZC4KICAgaWYgKGNvbmZpZ18uZGlzYWJsZV9lbmNyeXB0aW9uKSB7CiAgICAgdW5l
bmNyeXB0ZWRfcnRwX3RyYW5zcG9ydCA9IENyZWF0ZVVuZW5jcnlwdGVkUnRwVHJhbnNwb3J0KAog
ICAgICAgICBjb250ZW50X2luZm8ubmFtZSwgcnRwX2R0bHNfdHJhbnNwb3J0LmdldCgpLCBydGNw
X2R0bHNfdHJhbnNwb3J0LmdldCgpKTsKQEAgLTkzMiw5ICsxMDYwLDEyIEBAIFJUQ0Vycm9yIEpz
ZXBUcmFuc3BvcnRDb250cm9sbGVyOjpNYXliZUNyZWF0ZUpzZXBUcmFuc3BvcnQoCiAgICAgICBh
YnNsOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpKc2VwVHJhbnNwb3J0PigKICAgICAgICAgICBjb250
ZW50X2luZm8ubmFtZSwgY2VydGlmaWNhdGVfLCBzdGQ6Om1vdmUodW5lbmNyeXB0ZWRfcnRwX3Ry
YW5zcG9ydCksCiAgICAgICAgICAgc3RkOjptb3ZlKHNkZXNfdHJhbnNwb3J0KSwgc3RkOjptb3Zl
KGR0bHNfc3J0cF90cmFuc3BvcnQpLAotICAgICAgICAgIHN0ZDo6bW92ZShydHBfZHRsc190cmFu
c3BvcnQpLCBzdGQ6Om1vdmUocnRjcF9kdGxzX3RyYW5zcG9ydCkpOworICAgICAgICAgIHN0ZDo6
bW92ZShydHBfZHRsc190cmFuc3BvcnQpLCBzdGQ6Om1vdmUocnRjcF9kdGxzX3RyYW5zcG9ydCks
CisgICAgICAgICAgc3RkOjptb3ZlKG1lZGlhX3RyYW5zcG9ydCkpOwogICBqc2VwX3RyYW5zcG9y
dC0+U2lnbmFsUnRjcE11eEFjdGl2ZS5jb25uZWN0KAogICAgICAgdGhpcywgJkpzZXBUcmFuc3Bv
cnRDb250cm9sbGVyOjpVcGRhdGVBZ2dyZWdhdGVTdGF0ZXNfbik7CisgIGpzZXBfdHJhbnNwb3J0
LT5TaWduYWxNZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZC5jb25uZWN0KAorICAgICAgdGhpcywg
JkpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpPbk1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkX24p
OwogICBTZXRUcmFuc3BvcnRGb3JNaWQoY29udGVudF9pbmZvLm5hbWUsIGpzZXBfdHJhbnNwb3J0
LmdldCgpKTsKIAogICBqc2VwX3RyYW5zcG9ydHNfYnlfbmFtZV9bY29udGVudF9pbmZvLm5hbWVd
ID0gc3RkOjptb3ZlKGpzZXBfdHJhbnNwb3J0KTsKQEAgLTk1NiwxMiArMTA4NywxOSBAQCB2b2lk
IEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpNYXliZURlc3Ryb3lKc2VwVHJhbnNwb3J0KAogICAg
ICAgcmV0dXJuOwogICAgIH0KICAgfQorCiAgIGpzZXBfdHJhbnNwb3J0c19ieV9uYW1lXy5lcmFz
ZShtaWQpOwogICBVcGRhdGVBZ2dyZWdhdGVTdGF0ZXNfbigpOwogfQogCiB2b2lkIEpzZXBUcmFu
c3BvcnRDb250cm9sbGVyOjpEZXN0cm95QWxsSnNlcFRyYW5zcG9ydHNfbigpIHsKICAgUlRDX0RD
SEVDSyhuZXR3b3JrX3RocmVhZF8tPklzQ3VycmVudCgpKTsKKworICBmb3IgKGNvbnN0IGF1dG8m
IGpzZXBfdHJhbnNwb3J0IDoganNlcF90cmFuc3BvcnRzX2J5X25hbWVfKSB7CisgICAgY29uZmln
Xy50cmFuc3BvcnRfb2JzZXJ2ZXItPk9uVHJhbnNwb3J0Q2hhbmdlZChqc2VwX3RyYW5zcG9ydC5m
aXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICB9CisKICAganNlcF90cmFuc3BvcnRzX2J5
X25hbWVfLmNsZWFyKCk7CiB9CiAKQEAgLTExMTYsMTggKzEyNTQsMzUgQEAgdm9pZCBKc2VwVHJh
bnNwb3J0Q29udHJvbGxlcjo6T25UcmFuc3BvcnRTdGF0ZUNoYW5nZWRfbigKICAgVXBkYXRlQWdn
cmVnYXRlU3RhdGVzX24oKTsKIH0KIAordm9pZCBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6T25N
ZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZF9uKCkgeworICBTaWduYWxNZWRpYVRyYW5zcG9ydFN0
YXRlQ2hhbmdlZCgpOworICBVcGRhdGVBZ2dyZWdhdGVTdGF0ZXNfbigpOworfQorCiB2b2lkIEpz
ZXBUcmFuc3BvcnRDb250cm9sbGVyOjpVcGRhdGVBZ2dyZWdhdGVTdGF0ZXNfbigpIHsKICAgUlRD
X0RDSEVDSyhuZXR3b3JrX3RocmVhZF8tPklzQ3VycmVudCgpKTsKIAogICBhdXRvIGR0bHNfdHJh
bnNwb3J0cyA9IEdldER0bHNUcmFuc3BvcnRzKCk7CiAgIGNyaWNrZXQ6OkljZUNvbm5lY3Rpb25T
dGF0ZSBuZXdfY29ubmVjdGlvbl9zdGF0ZSA9CiAgICAgICBjcmlja2V0OjprSWNlQ29ubmVjdGlv
bkNvbm5lY3Rpbmc7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3Rh
dGUgbmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlID0KKyAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpJY2VDb25uZWN0aW9uU3RhdGU6OmtJY2VDb25uZWN0aW9uTmV3OworICBQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdfY29tYmluZWRfc3RhdGUgPQor
ICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtOZXc7
CiAgIGNyaWNrZXQ6OkljZUdhdGhlcmluZ1N0YXRlIG5ld19nYXRoZXJpbmdfc3RhdGUgPSBjcmlj
a2V0OjprSWNlR2F0aGVyaW5nTmV3OwogICBib29sIGFueV9mYWlsZWQgPSBmYWxzZTsKKworICAv
LyBUT0RPKGh0dHA6Ly9idWdzLndlYnJ0Yy5vcmcvOTcxOSkgSWYod2hlbikgbWVkaWFfdHJhbnNw
b3J0IGRpc2FibGVzCisgIC8vIGR0bHNfdHJhbnNwb3J0cyBlbnRpcmVseSwgdGhlIGJlbG93IGxp
bmUgd2lsbCBoYXZlIHRvIGJlIGNoYW5nZWQgdG8gYWNjb3VudAorICAvLyBmb3IgdGhlIGZhY3Qg
dGhhdCBkdGxzIHRyYW5zcG9ydHMgbWlnaHQgYmUgYWJzZW50LgogICBib29sIGFsbF9jb25uZWN0
ZWQgPSAhZHRsc190cmFuc3BvcnRzLmVtcHR5KCk7CiAgIGJvb2wgYWxsX2NvbXBsZXRlZCA9ICFk
dGxzX3RyYW5zcG9ydHMuZW1wdHkoKTsKICAgYm9vbCBhbnlfZ2F0aGVyaW5nID0gZmFsc2U7CiAg
IGJvb2wgYWxsX2RvbmVfZ2F0aGVyaW5nID0gIWR0bHNfdHJhbnNwb3J0cy5lbXB0eSgpOworCisg
IHN0ZDo6bWFwPEljZVRyYW5zcG9ydFN0YXRlLCBpbnQ+IGljZV9zdGF0ZV9jb3VudHM7CisgIHN0
ZDo6bWFwPGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRTdGF0ZSwgaW50PiBkdGxzX3N0YXRlX2NvdW50
czsKKwogICBmb3IgKGNvbnN0IGF1dG8mIGR0bHMgOiBkdGxzX3RyYW5zcG9ydHMpIHsKICAgICBh
bnlfZmFpbGVkID0gYW55X2ZhaWxlZCB8fCBkdGxzLT5pY2VfdHJhbnNwb3J0KCktPkdldFN0YXRl
KCkgPT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6SWNlVHJh
bnNwb3J0U3RhdGU6OlNUQVRFX0ZBSUxFRDsKQEAgLTExNDQsNyArMTI5OSwzNSBAQCB2b2lkIEpz
ZXBUcmFuc3BvcnRDb250cm9sbGVyOjpVcGRhdGVBZ2dyZWdhdGVTdGF0ZXNfbigpIHsKICAgICBh
bGxfZG9uZV9nYXRoZXJpbmcgPQogICAgICAgICBhbGxfZG9uZV9nYXRoZXJpbmcgJiYgZHRscy0+
aWNlX3RyYW5zcG9ydCgpLT5nYXRoZXJpbmdfc3RhdGUoKSA9PQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyaWNrZXQ6OmtJY2VHYXRoZXJpbmdDb21wbGV0ZTsKKworICAgIGR0
bHNfc3RhdGVfY291bnRzW2R0bHMtPmR0bHNfc3RhdGUoKV0rKzsKKyAgICBpY2Vfc3RhdGVfY291
bnRzW2R0bHMtPmljZV90cmFuc3BvcnQoKS0+R2V0SWNlVHJhbnNwb3J0U3RhdGUoKV0rKzsKICAg
fQorCisgIGZvciAoYXV0byBpdCA9IGpzZXBfdHJhbnNwb3J0c19ieV9uYW1lXy5iZWdpbigpOwor
ICAgICAgIGl0ICE9IGpzZXBfdHJhbnNwb3J0c19ieV9uYW1lXy5lbmQoKTsgKytpdCkgeworICAg
IGF1dG8ganNlcF90cmFuc3BvcnQgPSBpdC0+c2Vjb25kLmdldCgpOworICAgIGlmICghanNlcF90
cmFuc3BvcnQtPm1lZGlhX3RyYW5zcG9ydCgpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisK
KyAgICAvLyBUaGVyZSBpcyBubyAna0ljZUNvbm5lY3Rpb25EaXNjb25uZWN0ZWQnLCBzbyB3ZSBv
bmx5IG5lZWQgdG8gaGFuZGxlCisgICAgLy8gY29ubmVjdGVkIGFuZCBjb21wbGV0ZWQuCisgICAg
Ly8gV2UgdHJlYXQga0Nsb3NlZCBhcyBmYWlsZWQsIGJlY2F1c2UgaWYgaXQgaGFwcGVucyBiZWZv
cmUgc2h1dHRpbmcgZG93bgorICAgIC8vIG1lZGlhIHRyYW5zcG9ydHMgaXQgbWVhbnMgdGhhdCB0
aGVyZSB3YXMgYSBmYWlsdXJlLgorICAgIC8vIE1lZGlhVHJhbnNwb3J0SW50ZXJmYWNlIGFsbG93
cyB0byBmbGlwIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4ga1dyaXRhYmxlCisgICAgLy8gYW5kIGtQ
ZW5kaW5nLCBidXQgdGhlcmUgZG9lcyBub3QgZXhpc3QgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBk
b2VzIHRoYXQsCisgICAgLy8gYW5kIHRoZSBjb250cmFjdCBvZiBqc2VwIHRyYW5zcG9ydCBjb250
cm9sbGVyIGRvZXNuJ3QgcXVpdGUgZXhwZWN0IHRoYXQuCisgICAgLy8gV2hlbiB0aGlzIGhhcHBl
bnMsIHdlIHdvdWxkIGdvIGZyb20gY29ubmVjdGVkIHRvIGNvbm5lY3Rpbmcgc3RhdGUsIGJ1dAor
ICAgIC8vIHRoaXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUuCisgICAgYW55X2ZhaWxlZCB8PSBqc2Vw
X3RyYW5zcG9ydC0+bWVkaWFfdHJhbnNwb3J0X3N0YXRlKCkgPT0KKyAgICAgICAgICAgICAgICAg
IHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a0Nsb3NlZDsKKyAgICBhbGxfY29tcGxldGVk
ICY9IGpzZXBfdHJhbnNwb3J0LT5tZWRpYV90cmFuc3BvcnRfc3RhdGUoKSA9PQorICAgICAgICAg
ICAgICAgICAgICAgd2VicnRjOjpNZWRpYVRyYW5zcG9ydFN0YXRlOjprV3JpdGFibGU7CisgICAg
YWxsX2Nvbm5lY3RlZCAmPSBqc2VwX3RyYW5zcG9ydC0+bWVkaWFfdHJhbnNwb3J0X3N0YXRlKCkg
PT0KKyAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dy
aXRhYmxlOworICB9CisKICAgaWYgKGFueV9mYWlsZWQpIHsKICAgICBuZXdfY29ubmVjdGlvbl9z
dGF0ZSA9IGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uRmFpbGVkOwogICB9IGVsc2UgaWYgKGFsbF9j
b21wbGV0ZWQpIHsKQEAgLTExNjAsNiArMTM0MywxMjcgQEAgdm9pZCBKc2VwVHJhbnNwb3J0Q29u
dHJvbGxlcjo6VXBkYXRlQWdncmVnYXRlU3RhdGVzX24oKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgIH0KIAorICAvLyBDb21wdXRlIHRoZSBjdXJyZW50IFJUQ0ljZUNv
bm5lY3Rpb25TdGF0ZSBhcyBkZXNjcmliZWQgaW4KKyAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RS
L3dlYnJ0Yy8jZG9tLXJ0Y2ljZWNvbm5lY3Rpb25zdGF0ZS4KKyAgLy8gVGhlIFBlZXJDb25uZWN0
aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgImNsb3NlZCIgc3RhdGUuCisgIGlu
dCB0b3RhbF9pY2VfY2hlY2tpbmcgPSBpY2Vfc3RhdGVfY291bnRzW0ljZVRyYW5zcG9ydFN0YXRl
OjprQ2hlY2tpbmddOworICBpbnQgdG90YWxfaWNlX2Nvbm5lY3RlZCA9IGljZV9zdGF0ZV9jb3Vu
dHNbSWNlVHJhbnNwb3J0U3RhdGU6OmtDb25uZWN0ZWRdOworICBpbnQgdG90YWxfaWNlX2NvbXBs
ZXRlZCA9IGljZV9zdGF0ZV9jb3VudHNbSWNlVHJhbnNwb3J0U3RhdGU6OmtDb21wbGV0ZWRdOwor
ICBpbnQgdG90YWxfaWNlX2ZhaWxlZCA9IGljZV9zdGF0ZV9jb3VudHNbSWNlVHJhbnNwb3J0U3Rh
dGU6OmtGYWlsZWRdOworICBpbnQgdG90YWxfaWNlX2Rpc2Nvbm5lY3RlZCA9CisgICAgICBpY2Vf
c3RhdGVfY291bnRzW0ljZVRyYW5zcG9ydFN0YXRlOjprRGlzY29ubmVjdGVkXTsKKyAgaW50IHRv
dGFsX2ljZV9jbG9zZWQgPSBpY2Vfc3RhdGVfY291bnRzW0ljZVRyYW5zcG9ydFN0YXRlOjprQ2xv
c2VkXTsKKyAgaW50IHRvdGFsX2ljZV9uZXcgPSBpY2Vfc3RhdGVfY291bnRzW0ljZVRyYW5zcG9y
dFN0YXRlOjprTmV3XTsKKyAgaW50IHRvdGFsX2ljZSA9IGR0bHNfdHJhbnNwb3J0cy5zaXplKCk7
CisKKyAgaWYgKHRvdGFsX2ljZV9mYWlsZWQgPiAwKSB7CisgICAgLy8gQW55IG9mIHRoZSBSVENJ
Y2VUcmFuc3BvcnRzIGFyZSBpbiB0aGUgImZhaWxlZCIgc3RhdGUuCisgICAgbmV3X2ljZV9jb25u
ZWN0aW9uX3N0YXRlID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uRmFp
bGVkOworICB9IGVsc2UgaWYgKHRvdGFsX2ljZV9kaXNjb25uZWN0ZWQgPiAwKSB7CisgICAgLy8g
QW55IG9mIHRoZSBSVENJY2VUcmFuc3BvcnRzIGFyZSBpbiB0aGUgImRpc2Nvbm5lY3RlZCIgc3Rh
dGUgYW5kIG5vbmUgb2YKKyAgICAvLyB0aGVtIGFyZSBpbiB0aGUgImZhaWxlZCIgc3RhdGUuCisg
ICAgbmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlID0KKyAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OmtJY2VDb25uZWN0aW9uRGlzY29ubmVjdGVkOworICB9IGVsc2UgaWYgKHRvdGFsX2lj
ZV9jaGVja2luZyA+IDApIHsKKyAgICAvLyBBbnkgb2YgdGhlIFJUQ0ljZVRyYW5zcG9ydHMgYXJl
IGluIHRoZSAiY2hlY2tpbmciIHN0YXRlIGFuZCBub25lIG9mIHRoZW0KKyAgICAvLyBhcmUgaW4g
dGhlICJkaXNjb25uZWN0ZWQiIG9yICJmYWlsZWQiIHN0YXRlLgorICAgIG5ld19pY2VfY29ubmVj
dGlvbl9zdGF0ZSA9IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkNoZWNr
aW5nOworICB9IGVsc2UgaWYgKHRvdGFsX2ljZV9jb21wbGV0ZWQgKyB0b3RhbF9pY2VfY2xvc2Vk
ID09IHRvdGFsX2ljZSAmJgorICAgICAgICAgICAgIHRvdGFsX2ljZV9jb21wbGV0ZWQgPiAwKSB7
CisgICAgLy8gQWxsIFJUQ0ljZVRyYW5zcG9ydHMgYXJlIGluIHRoZSAiY29tcGxldGVkIiBvciAi
Y2xvc2VkIiBzdGF0ZSBhbmQgYXQKKyAgICAvLyBsZWFzdCBvbmUgb2YgdGhlbSBpcyBpbiB0aGUg
ImNvbXBsZXRlZCIgc3RhdGUuCisgICAgbmV3X2ljZV9jb25uZWN0aW9uX3N0YXRlID0gUGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uQ29tcGxldGVkOworICB9IGVsc2UgaWYg
KHRvdGFsX2ljZV9jb25uZWN0ZWQgKyB0b3RhbF9pY2VfY29tcGxldGVkICsgdG90YWxfaWNlX2Ns
b3NlZCA9PQorICAgICAgICAgICAgICAgICB0b3RhbF9pY2UgJiYKKyAgICAgICAgICAgICB0b3Rh
bF9pY2VfY29ubmVjdGVkID4gMCkgeworICAgIC8vIEFsbCBSVENJY2VUcmFuc3BvcnRzIGFyZSBp
biB0aGUgImNvbm5lY3RlZCIsICJjb21wbGV0ZWQiIG9yICJjbG9zZWQiCisgICAgLy8gc3RhdGUg
YW5kIGF0IGxlYXN0IG9uZSBvZiB0aGVtIGlzIGluIHRoZSAiY29ubmVjdGVkIiBzdGF0ZS4KKyAg
ICBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0lj
ZUNvbm5lY3Rpb25Db25uZWN0ZWQ7CisgIH0gZWxzZSBpZiAoKHRvdGFsX2ljZV9uZXcgPiAwICYm
CisgICAgICAgICAgICAgIHRvdGFsX2ljZV9jaGVja2luZyArIHRvdGFsX2ljZV9kaXNjb25uZWN0
ZWQgKyB0b3RhbF9pY2VfZmFpbGVkID09CisgICAgICAgICAgICAgICAgICAwKSB8fAorICAgICAg
ICAgICAgIHRvdGFsX2ljZSA9PSB0b3RhbF9pY2VfY2xvc2VkKSB7CisgICAgLy8gQW55IG9mIHRo
ZSBSVENJY2VUcmFuc3BvcnRzIGFyZSBpbiB0aGUgIm5ldyIgc3RhdGUgYW5kIG5vbmUgb2YgdGhl
bSBhcmUKKyAgICAvLyBpbiB0aGUgImNoZWNraW5nIiwgImRpc2Nvbm5lY3RlZCIgb3IgImZhaWxl
ZCIgc3RhdGUsIG9yIGFsbAorICAgIC8vIFJUQ0ljZVRyYW5zcG9ydHMgYXJlIGluIHRoZSAiY2xv
c2VkIiBzdGF0ZSwgb3IgdGhlcmUgYXJlIG5vIHRyYW5zcG9ydHMuCisgICAgbmV3X2ljZV9jb25u
ZWN0aW9uX3N0YXRlID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uTmV3
OworICB9IGVsc2UgeworICAgIFJUQ19OT1RSRUFDSEVEKCk7CisgIH0KKworICBpZiAoc3RhbmRh
cmRpemVkX2ljZV9jb25uZWN0aW9uX3N0YXRlXyAhPSBuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUp
IHsKKyAgICBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25fc3RhdGVfID0gbmV3X2ljZV9jb25u
ZWN0aW9uX3N0YXRlOworICAgIGludm9rZXJfLkFzeW5jSW52b2tlPHZvaWQ+KAorICAgICAgICBS
VENfRlJPTV9IRVJFLCBzaWduYWxpbmdfdGhyZWFkXywgW3RoaXMsIG5ld19pY2VfY29ubmVjdGlv
bl9zdGF0ZV0geworICAgICAgICAgIFNpZ25hbFN0YW5kYXJkaXplZEljZUNvbm5lY3Rpb25TdGF0
ZShuZXdfaWNlX2Nvbm5lY3Rpb25fc3RhdGUpOworICAgICAgICB9KTsKKyAgfQorCisgIC8vIENv
bXB1dGUgdGhlIGN1cnJlbnQgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSBhcyBkZXNjcmliZWQgaW4K
KyAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8jZG9tLXJ0Y3BlZXJjb25uZWN0aW9u
c3RhdGUuCisgIC8vIFRoZSBQZWVyQ29ubmVjdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxp
bmcgdGhlICJjbG9zZWQiIHN0YXRlLgorICAvLyBOb3RlIHRoYXQgImNvbm5lY3RpbmciIGlzIG9u
bHkgYSB2YWxpZCBzdGF0ZSBmb3IgRFRMUyB0cmFuc3BvcnRzIHdoaWxlCisgIC8vICJjaGVja2lu
ZyIsICJjb21wbGV0ZWQiIGFuZCAiZGlzY29ubmVjdGVkIiBhcmUgb25seSB2YWxpZCBmb3IgSUNF
CisgIC8vIHRyYW5zcG9ydHMuCisgIGludCB0b3RhbF9jb25uZWN0ZWQgPSB0b3RhbF9pY2VfY29u
bmVjdGVkICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGR0bHNfc3RhdGVfY291bnRzW2NyaWNr
ZXQ6OkRUTFNfVFJBTlNQT1JUX0NPTk5FQ1RFRF07CisgIGludCB0b3RhbF9kdGxzX2Nvbm5lY3Rp
bmcgPQorICAgICAgZHRsc19zdGF0ZV9jb3VudHNbY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09O
TkVDVElOR107CisgIGludCB0b3RhbF9mYWlsZWQgPQorICAgICAgdG90YWxfaWNlX2ZhaWxlZCAr
IGR0bHNfc3RhdGVfY291bnRzW2NyaWNrZXQ6OkRUTFNfVFJBTlNQT1JUX0ZBSUxFRF07CisgIGlu
dCB0b3RhbF9jbG9zZWQgPQorICAgICAgdG90YWxfaWNlX2Nsb3NlZCArIGR0bHNfc3RhdGVfY291
bnRzW2NyaWNrZXQ6OkRUTFNfVFJBTlNQT1JUX0NMT1NFRF07CisgIGludCB0b3RhbF9uZXcgPQor
ICAgICAgdG90YWxfaWNlX25ldyArIGR0bHNfc3RhdGVfY291bnRzW2NyaWNrZXQ6OkRUTFNfVFJB
TlNQT1JUX05FV107CisgIGludCB0b3RhbF90cmFuc3BvcnRzID0gdG90YWxfaWNlICogMjsKKwor
ICBpZiAodG90YWxfZmFpbGVkID4gMCkgeworICAgIC8vIEFueSBvZiB0aGUgUlRDSWNlVHJhbnNw
b3J0cyBvciBSVENEdGxzVHJhbnNwb3J0cyBhcmUgaW4gYSAiZmFpbGVkIiBzdGF0ZS4KKyAgICBu
ZXdfY29tYmluZWRfc3RhdGUgPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rp
b25TdGF0ZTo6a0ZhaWxlZDsKKyAgfSBlbHNlIGlmICh0b3RhbF9pY2VfZGlzY29ubmVjdGVkID4g
MCAmJgorICAgICAgICAgICAgIHRvdGFsX2R0bHNfY29ubmVjdGluZyArIHRvdGFsX2ljZV9jaGVj
a2luZyA9PSAwKSB7CisgICAgLy8gQW55IG9mIHRoZSBSVENJY2VUcmFuc3BvcnRzIG9yIFJUQ0R0
bHNUcmFuc3BvcnRzIGFyZSBpbiB0aGUKKyAgICAvLyAiZGlzY29ubmVjdGVkIiBzdGF0ZSBhbmQg
bm9uZSBvZiB0aGVtIGFyZSBpbiB0aGUgImZhaWxlZCIgb3IgImNvbm5lY3RpbmciCisgICAgLy8g
b3IgImNoZWNraW5nIiBzdGF0ZS4KKyAgICBuZXdfY29tYmluZWRfc3RhdGUgPQorICAgICAgICBQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Rpc2Nvbm5lY3Rl
ZDsKKyAgfSBlbHNlIGlmICh0b3RhbF9kdGxzX2Nvbm5lY3RpbmcgKyB0b3RhbF9pY2VfY2hlY2tp
bmcgPiAwKSB7CisgICAgLy8gQW55IG9mIHRoZSBSVENJY2VUcmFuc3BvcnRzIG9yIFJUQ0R0bHNU
cmFuc3BvcnRzIGFyZSBpbiB0aGUgImNvbm5lY3RpbmciCisgICAgLy8gb3IgImNoZWNraW5nIiBz
dGF0ZSBhbmQgbm9uZSBvZiB0aGVtIGlzIGluIHRoZSAiZmFpbGVkIiBzdGF0ZS4KKyAgICBuZXdf
Y29tYmluZWRfc3RhdGUgPQorICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNv
bm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3Rpbmc7CisgIH0gZWxzZSBpZiAodG90YWxfY29ubmVjdGVk
ICsgdG90YWxfaWNlX2NvbXBsZXRlZCArIHRvdGFsX2Nsb3NlZCA9PQorICAgICAgICAgICAgICAg
ICB0b3RhbF90cmFuc3BvcnRzICYmCisgICAgICAgICAgICAgdG90YWxfY29ubmVjdGVkICsgdG90
YWxfaWNlX2NvbXBsZXRlZCA+IDApIHsKKyAgICAvLyBBbGwgUlRDSWNlVHJhbnNwb3J0cyBhbmQg
UlRDRHRsc1RyYW5zcG9ydHMgYXJlIGluIHRoZSAiY29ubmVjdGVkIiwKKyAgICAvLyAiY29tcGxl
dGVkIiBvciAiY2xvc2VkIiBzdGF0ZSBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZW0gaXMgaW4gdGhl
CisgICAgLy8gImNvbm5lY3RlZCIgb3IgImNvbXBsZXRlZCIgc3RhdGUuCisgICAgbmV3X2NvbWJp
bmVkX3N0YXRlID0KKyAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0
aW9uU3RhdGU6OmtDb25uZWN0ZWQ7CisgIH0gZWxzZSBpZiAoKHRvdGFsX25ldyA+IDAgJiYgdG90
YWxfZHRsc19jb25uZWN0aW5nICsgdG90YWxfaWNlX2NoZWNraW5nICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2ZhaWxlZCArIHRvdGFsX2ljZV9kaXNjb25u
ZWN0ZWQgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkgfHwKKyAgICAg
ICAgICAgICB0b3RhbF90cmFuc3BvcnRzID09IHRvdGFsX2Nsb3NlZCkgeworICAgIC8vIEFueSBv
ZiB0aGUgUlRDSWNlVHJhbnNwb3J0cyBvciBSVENEdGxzVHJhbnNwb3J0cyBhcmUgaW4gdGhlICJu
ZXciIHN0YXRlCisgICAgLy8gYW5kIG5vbmUgb2YgdGhlIHRyYW5zcG9ydHMgYXJlIGluIHRoZSAi
Y29ubmVjdGluZyIsICJjaGVja2luZyIsICJmYWlsZWQiCisgICAgLy8gb3IgImRpc2Nvbm5lY3Rl
ZCIgc3RhdGUsIG9yIGFsbCB0cmFuc3BvcnRzIGFyZSBpbiB0aGUgImNsb3NlZCIgc3RhdGUsIG9y
CisgICAgLy8gdGhlcmUgYXJlIG5vIHRyYW5zcG9ydHMuCisgICAgLy8KKyAgICAvLyBOb3RlIHRo
YXQgaWYgbm9uZSBvZiB0aGUgb3RoZXIgY29uZGl0aW9ucyBob2xkIHRoaXMgaXMgZ3VhcmFudGVl
ZCB0byBiZQorICAgIC8vIHRydWUuCisgICAgbmV3X2NvbWJpbmVkX3N0YXRlID0gUGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtOZXc7CisgIH0gZWxzZSB7Cisg
ICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgfQorCisgIGlmIChjb21iaW5lZF9jb25uZWN0aW9uX3N0
YXRlXyAhPSBuZXdfY29tYmluZWRfc3RhdGUpIHsKKyAgICBjb21iaW5lZF9jb25uZWN0aW9uX3N0
YXRlXyA9IG5ld19jb21iaW5lZF9zdGF0ZTsKKyAgICBpbnZva2VyXy5Bc3luY0ludm9rZTx2b2lk
PihSVENfRlJPTV9IRVJFLCBzaWduYWxpbmdfdGhyZWFkXywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbdGhpcywgbmV3X2NvbWJpbmVkX3N0YXRlXSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaWduYWxDb25uZWN0aW9uU3RhdGUobmV3X2NvbWJpbmVkX3N0YXRl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgfQorCiAgIGlmIChhbGxf
ZG9uZV9nYXRoZXJpbmcpIHsKICAgICBuZXdfZ2F0aGVyaW5nX3N0YXRlID0gY3JpY2tldDo6a0lj
ZUdhdGhlcmluZ0NvbXBsZXRlOwogICB9IGVsc2UgaWYgKGFueV9nYXRoZXJpbmcpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2pzZXB0
cmFuc3BvcnRjb250cm9sbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJvbGxlci5oCmluZGV4IGQ5MzQwY2YzNTdkMGUx
MzQ1ZGI2MzU4OTNlMmZiMjdhMzQ0NTE0ODAuLjNlZDdmNWY0MzNiN2E2MjUwYjM0NWVkOTYwODZm
ZTJmMzgzZDMwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL2pzZXB0cmFuc3BvcnRjb250cm9sbGVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHRyYW5zcG9ydGNvbnRyb2xsZXIu
aApAQCAtMTgsNiArMTgsOCBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS9j
YW5kaWRhdGUuaCIKKyNpbmNsdWRlICJhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaCIKKyNpbmNs
dWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS9wZWVy
Y29ubmVjdGlvbmludGVyZmFjZS5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9y
dGNfZXZlbnRfbG9nLmgiCiAjaW5jbHVkZSAibWVkaWEvc2N0cC9zY3RwdHJhbnNwb3J0aW50ZXJu
YWwuaCIKQEAgLTMyLDcgKzM0LDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9hc3luY2ludm9rZXIu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NzbHN0cmVhbWFk
YXB0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3Qu
aCIKIAogbmFtZXNwYWNlIHJ0YyB7CkBAIC01Niw3ICs1Nyw4IEBAIGNsYXNzIEpzZXBUcmFuc3Bv
cnRDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICB2aXJ0dWFs
IGJvb2wgT25UcmFuc3BvcnRDaGFuZ2VkKAogICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlk
LAogICAgICAgICBSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwKLSAgICAgICAg
Y3JpY2tldDo6RHRsc1RyYW5zcG9ydEludGVybmFsKiBkdGxzX3RyYW5zcG9ydCkgPSAwOworICAg
ICAgICBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0LAorICAg
ICAgICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KSA9IDA7CiAgIH07
CiAKICAgc3RydWN0IENvbmZpZyB7CkBAIC02Nyw3ICs2OSw3IEBAIGNsYXNzIEpzZXBUcmFuc3Bv
cnRDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKICAgICBydGM6OlNT
TFByb3RvY29sVmVyc2lvbiBzc2xfbWF4X3ZlcnNpb24gPSBydGM6OlNTTF9QUk9UT0NPTF9EVExT
XzEyOwogICAgIC8vIHxjcnlwdG9fb3B0aW9uc3wgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgY3Jl
YXRlZCBEVExTIHRyYW5zcG9ydHMKICAgICAvLyBuZWdvdGlhdGUgR0NNIGNyeXB0byBzdWl0ZXMg
b3Igbm90LgotICAgIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uczsKKyAgICB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMgY3J5cHRvX29wdGlvbnM7CiAgICAgUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OkJ1bmRsZVBvbGljeSBidW5kbGVfcG9saWN5ID0KICAgICAgICAgUGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OmtCdW5kbGVQb2xpY3lCYWxhbmNlZDsKICAgICBQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6UnRjcE11eFBvbGljeSBydGNwX211eF9wb2xpY3kgPQpAQCAtNzksNiArODEsMTMg
QEAgY2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Ns
b3RzPD4gewogICAgIE9ic2VydmVyKiB0cmFuc3BvcnRfb2JzZXJ2ZXIgPSBudWxscHRyOwogICAg
IGJvb2wgYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zID0gZmFsc2U7CiAgICAgUnRjRXZlbnRMb2cq
IGV2ZW50X2xvZyA9IG51bGxwdHI7CisKKyAgICAvLyBPcHRpb25hbCBtZWRpYSB0cmFuc3BvcnQg
ZmFjdG9yeSAoZXhwZXJpbWVudGFsKS4gSWYgcHJvdmlkZWQgaXQgd2lsbCBiZQorICAgIC8vIHVz
ZWQgdG8gY3JlYXRlIG1lZGlhX3RyYW5zcG9ydCBhbmQgd2lsbCBiZSB1c2VkIHRvIHNlbmQgLyBy
ZWNlaXZlCisgICAgLy8gYXVkaW8gYW5kIHZpZGVvIGZyYW1lcyBpbnN0ZWFkIG9mIFJUUC4gTm90
ZSB0aGF0IGN1cnJlbnRseQorICAgIC8vIG1lZGlhX3RyYW5zcG9ydCBjby1leGlzdHMgd2l0aCBS
VFAgLyBSVENQIHRyYW5zcG9ydHMgYW5kIHVzZXMgdGhlIHNhbWUKKyAgICAvLyB1bmRlcmx5aW5n
IElDRSB0cmFuc3BvcnQuCisgICAgTWVkaWFUcmFuc3BvcnRGYWN0b3J5KiBtZWRpYV90cmFuc3Bv
cnRfZmFjdG9yeSA9IG51bGxwdHI7CiAgIH07CiAKICAgLy8gVGhlIElDRSByZWxhdGVkIGV2ZW50
cyBhcmUgc2lnbmFsZWQgb24gdGhlIHxzaWduYWxpbmdfdGhyZWFkfC4KQEAgLTEwOCw2ICsxMTcs
OSBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNf
c2xvdHM8PiB7CiAgIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCogR2V0UnRjcER0bHNU
cmFuc3BvcnQoCiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlkKSBjb25zdDsKIAorICBNZWRp
YVRyYW5zcG9ydEludGVyZmFjZSogR2V0TWVkaWFUcmFuc3BvcnQoY29uc3Qgc3RkOjpzdHJpbmcm
IG1pZCkgY29uc3Q7CisgIE1lZGlhVHJhbnNwb3J0U3RhdGUgR2V0TWVkaWFUcmFuc3BvcnRTdGF0
ZShjb25zdCBzdGQ6OnN0cmluZyYgbWlkKSBjb25zdDsKKwogICAvKioqKioqKioqKioqKioqKioq
KioqCiAgICAqIElDRS1yZWxhdGVkIG1ldGhvZHMKICAgICoqKioqKioqKioqKioqKioqKioqLwpA
QCAtMTU3LDYgKzE2OSwxMiBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlciA6IHB1Ymxp
YyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAKICAgdm9pZCBTZXRBY3RpdmVSZXNldFNydHBQYXJh
bXMoYm9vbCBhY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMpOwogCisgIC8vIEFsbG93cyB0byBvdmVy
d3JpdGUgdGhlIHNldHRpbmdzIGZyb20gY29uZmlnLiBZb3UgbWF5IHNldCBvciByZXNldCB0aGUK
KyAgLy8gbWVkaWEgdHJhbnNwb3J0IGZhY3Rvcnkgb24gdGhlIGpzZXAgdHJhbnNwb3J0IGNvbnRy
b2xsZXIsIGFzIGxvbmcgYXMgeW91CisgIC8vIGRpZCBub3QgY2FsbCAnR2V0TWVkaWFUcmFuc3Bv
cnQnIG9yICdNYXliZUNyZWF0ZUpzZXBUcmFuc3BvcnQnLiBPbmNlIEpzZXAKKyAgLy8gdHJhbnNw
b3J0IGlzIGNyZWF0ZWQsIHlvdSBjYW4ndCBjaGFuZ2UgdGhpcyBzZXR0aW5nLgorICB2b2lkIFNl
dE1lZGlhVHJhbnNwb3J0RmFjdG9yeShNZWRpYVRyYW5zcG9ydEZhY3RvcnkqIG1lZGlhX3RyYW5z
cG9ydF9mYWN0b3J5KTsKKwogICAvLyBBbGwgb2YgdGhlc2Ugc2lnbmFscyBhcmUgZmlyZWQgb24g
dGhlIHNpZ25hbGluZyB0aHJlYWQuCiAKICAgLy8gSWYgYW55IHRyYW5zcG9ydCBmYWlsZWQgPT4g
ZmFpbGVkLApAQCAtMTY1LDYgKzE4MywxMSBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxl
ciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIC8vIEVsc2UgPT4gY29ubmVjdGlu
ZwogICBzaWdzbG90OjpzaWduYWwxPGNyaWNrZXQ6OkljZUNvbm5lY3Rpb25TdGF0ZT4gU2lnbmFs
SWNlQ29ubmVjdGlvblN0YXRlOwogCisgIHNpZ3Nsb3Q6OnNpZ25hbDE8UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU+CisgICAgICBTaWduYWxDb25uZWN0aW9uU3Rh
dGU7CisgIHNpZ3Nsb3Q6OnNpZ25hbDE8UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5l
Y3Rpb25TdGF0ZT4KKyAgICAgIFNpZ25hbFN0YW5kYXJkaXplZEljZUNvbm5lY3Rpb25TdGF0ZTsK
KwogICAvLyBJZiBhbGwgdHJhbnNwb3J0cyBkb25lIGdhdGhlcmluZyA9PiBjb21wbGV0ZSwKICAg
Ly8gRWxzZSBpZiBhbnkgYXJlIGdhdGhlcmluZyA9PiBnYXRoZXJpbmcsCiAgIC8vIEVsc2UgPT4g
bmV3CkBAIC0xNzksNiArMjAyLDggQEAgY2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIgOiBw
dWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogCiAgIHNpZ3Nsb3Q6OnNpZ25hbDE8cnRjOjpT
U0xIYW5kc2hha2VFcnJvcj4gU2lnbmFsRHRsc0hhbmRzaGFrZUVycm9yOwogCisgIHNpZ3Nsb3Q6
OnNpZ25hbDw+IFNpZ25hbE1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkOworCiAgcHJpdmF0ZToK
ICAgUlRDRXJyb3IgQXBwbHlEZXNjcmlwdGlvbl9uKGJvb2wgbG9jYWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTZHBUeXBlIHR5cGUsCkBAIC0yNDEsNyArMjY2LDIwIEBAIGNsYXNz
IEpzZXBUcmFuc3BvcnRDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsK
ICAgY3JpY2tldDo6SnNlcFRyYW5zcG9ydCogR2V0SnNlcFRyYW5zcG9ydEJ5TmFtZSgKICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFuc3BvcnRfbmFtZSk7CiAKLSAgUlRDRXJyb3IgTWF5YmVD
cmVhdGVKc2VwVHJhbnNwb3J0KGNvbnN0IGNyaWNrZXQ6OkNvbnRlbnRJbmZvJiBjb250ZW50X2lu
Zm8pOworICAvLyBDcmVhdGVzIGpzZXAgdHJhbnNwb3J0LiBOb29wIGlmIHRyYW5zcG9ydCBpcyBh
bHJlYWR5IGNyZWF0ZWQuCisgIC8vIFRyYW5zcG9ydCBpcyBjcmVhdGVkIGVpdGhlciBkdXJpbmcg
U2V0TG9jYWxEZXNjcmlwdGlvbiAofGxvY2FsfCA9PSB0cnVlKSBvcgorICAvLyBkdXJpbmcgU2V0
UmVtb3RlRGVzY3JpcHRpb24gKHxsb2NhbHwgPT0gZmFsc2UpLiBQYXNzaW5nIHxsb2NhbHwgaGVs
cHMgdG8KKyAgLy8gZGlmZmVyZW50aWF0ZSBpbml0aWF0b3IgKGNhbGxlcikgZnJvbSBhbnN3ZXJl
ciAoY2FsbGVlKS4KKyAgUlRDRXJyb3IgTWF5YmVDcmVhdGVKc2VwVHJhbnNwb3J0KGJvb2wgbG9j
YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjcmlja2V0OjpD
b250ZW50SW5mbyYgY29udGVudF9pbmZvKTsKKworICAvLyBDcmVhdGVzIG1lZGlhIHRyYW5zcG9y
dCBpZiBjb25maWcgd2FudHMgdG8gdXNlIGl0LCBhbmQgcHJlLXNoYXJlZCBrZXkgaXMKKyAgLy8g
cHJvdmlkZWQgaW4gY29udGVudCBpbmZvLiBJdCBtb2RpZmllcyB0aGUgY29uZmlnIHRvIGRpc2Fi
bGUgbWVkaWEgdHJhbnNwb3J0CisgIC8vIGlmIHByZS1zaGFyZWQga2V5IGlzIG5vdCBwcm92aWRl
ZC4KKyAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRJbnRlcmZhY2U+IE1h
eWJlQ3JlYXRlTWVkaWFUcmFuc3BvcnQoCisgICAgICBjb25zdCBjcmlja2V0OjpDb250ZW50SW5m
byYgY29udGVudF9pbmZvLAorICAgICAgYm9vbCBsb2NhbCwKKyAgICAgIGNyaWNrZXQ6OkljZVRy
YW5zcG9ydEludGVybmFsKiBpY2VfdHJhbnNwb3J0KTsKICAgdm9pZCBNYXliZURlc3Ryb3lKc2Vw
VHJhbnNwb3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQpOwogICB2b2lkIERlc3Ryb3lBbGxKc2Vw
VHJhbnNwb3J0c19uKCk7CiAKQEAgLTI4NSw2ICszMjMsNyBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0
Q29udHJvbGxlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNyaWNrZXQ6OkNhbmRpZGF0ZXMmIGNhbmRp
ZGF0ZXMpOwogICB2b2lkIE9uVHJhbnNwb3J0Um9sZUNvbmZsaWN0X24oY3JpY2tldDo6SWNlVHJh
bnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCk7CiAgIHZvaWQgT25UcmFuc3BvcnRTdGF0ZUNoYW5n
ZWRfbihjcmlja2V0OjpJY2VUcmFuc3BvcnRJbnRlcm5hbCogdHJhbnNwb3J0KTsKKyAgdm9pZCBP
bk1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkX24oKTsKIAogICB2b2lkIFVwZGF0ZUFnZ3JlZ2F0
ZVN0YXRlc19uKCk7CiAKQEAgLTMwMSw5ICszNDAsMTYgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydENv
bnRyb2xsZXIgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAvLyAoQmFzZUNoYW5u
ZWwvU2N0cFRyYW5zcG9ydCkgYW5kIHRoZSBKc2VwVHJhbnNwb3J0IHVuZGVybmVhdGguCiAgIHN0
ZDo6bWFwPHN0ZDo6c3RyaW5nLCBjcmlja2V0OjpKc2VwVHJhbnNwb3J0Kj4gbWlkX3RvX3RyYW5z
cG9ydF87CiAKLSAgLy8gQWdncmVnYXRlIHN0YXRlIGZvciBUcmFuc3BvcnRzLgorICAvLyBBZ2dy
ZWdhdGUgc3RhdGVzIGZvciBUcmFuc3BvcnRzLgorICAvLyBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5l
Y3Rpb25fc3RhdGVfIGlzIGludGVuZGVkIHRvIHJlcGxhY2UKKyAgLy8gaWNlX2Nvbm5lY3Rpb25f
c3RhdGUsIHNlZSBidWdzLndlYnJ0Yy5vcmcvOTMwOAogICBjcmlja2V0OjpJY2VDb25uZWN0aW9u
U3RhdGUgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfID0KICAgICAgIGNyaWNrZXQ6OmtJY2VDb25uZWN0
aW9uQ29ubmVjdGluZzsKKyAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25T
dGF0ZQorICAgICAgc3RhbmRhcmRpemVkX2ljZV9jb25uZWN0aW9uX3N0YXRlXyA9CisgICAgICAg
ICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uTmV3OworICBQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBjb21iaW5lZF9jb25uZWN0aW9u
X3N0YXRlXyA9CisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25T
dGF0ZTo6a05ldzsKICAgY3JpY2tldDo6SWNlR2F0aGVyaW5nU3RhdGUgaWNlX2dhdGhlcmluZ19z
dGF0ZV8gPSBjcmlja2V0OjprSWNlR2F0aGVyaW5nTmV3OwogCiAgIENvbmZpZyBjb25maWdfOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
anNlcHRyYW5zcG9ydGNvbnRyb2xsZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJvbGxlcl91bml0dGVz
dC5jYwppbmRleCA2Zjg2OTNiZWE3YTliNTcxNTAyNThkMDQ4NmMwYTdmMjRlZWZiM2Y3Li4xMjlk
MjJhNGZjYzg0NzMwZTFmOTliN2E4NTRlOTY3Y2EyZWY5YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJv
bGxlcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9qc2VwdHJhbnNwb3J0Y29udHJvbGxlcl91bml0dGVzdC5jYwpAQCAtMTEsNyAr
MTEsOCBAQAogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKLSNpbmNsdWRlICJh
YnNsL21lbW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVy
ZmFjZS5oIgorI2luY2x1ZGUgImFwaS90ZXN0L2Zha2VfbWVkaWFfdHJhbnNwb3J0LmgiCiAjaW5j
bHVkZSAicDJwL2Jhc2UvZmFrZWR0bHN0cmFuc3BvcnQuaCIKICNpbmNsdWRlICJwMnAvYmFzZS9m
YWtlaWNldHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvdHJhbnNwb3J0ZmFjdG9yeWlu
dGVyZmFjZS5oIgpAQCAtNDEsNiArNDIsMjAgQEAgc3RhdGljIGNvbnN0IGNoYXIga0RhdGFNaWQx
W10gPSAiZGF0YTEiOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAorbmFtZXNwYWNlIHsKKworLy8g
TWVkaWEgdHJhbnNwb3J0IGZhY3RvcnkgcmVxdWlyZXMgY3J5cHRvIHNldHRpbmdzIHRvIGJlIHBy
ZXNlbnQgaW4gb3JkZXIgdG8KKy8vIGNyZWF0ZSBtZWRpYSB0cmFuc3BvcnQuCit2b2lkIEFkZENy
eXB0b1NldHRpbmdzKGNyaWNrZXQ6OlNlc3Npb25EZXNjcmlwdGlvbiogZGVzY3JpcHRpb24pIHsK
KyAgZm9yIChhdXRvJiBjb250ZW50IDogZGVzY3JpcHRpb24tPmNvbnRlbnRzKCkpIHsKKyAgICBj
b250ZW50Lm1lZGlhX2Rlc2NyaXB0aW9uKCktPkFkZENyeXB0byhjcmlja2V0OjpDcnlwdG9QYXJh
bXMoCisgICAgICAgIC8qdD0qLzAsIHN0ZDo6c3RyaW5nKHJ0Yzo6Q1NfQUVTX0NNXzEyOF9ITUFD
X1NIQTFfODApLAorICAgICAgICAiaW5saW5lOllVSkRaR1ZtWjJocFNrdE1iVzlRVVhKelZIVldk
M2w2TVRJek5EVTIiLCAiIikpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCiBjbGFzcyBG
YWtlVHJhbnNwb3J0RmFjdG9yeSA6IHB1YmxpYyBjcmlja2V0OjpUcmFuc3BvcnRGYWN0b3J5SW50
ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpJY2VUcmFuc3Bv
cnRJbnRlcm5hbD4gQ3JlYXRlSWNlVHJhbnNwb3J0KApAQCAtNTIsNyArNjcsNyBAQCBjbGFzcyBG
YWtlVHJhbnNwb3J0RmFjdG9yeSA6IHB1YmxpYyBjcmlja2V0OjpUcmFuc3BvcnRGYWN0b3J5SW50
ZXJmYWNlIHsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6RHRsc1RyYW5zcG9ydEludGVy
bmFsPiBDcmVhdGVEdGxzVHJhbnNwb3J0KAogICAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6
OkljZVRyYW5zcG9ydEludGVybmFsPiBpY2UsCi0gICAgICBjb25zdCBydGM6OkNyeXB0b09wdGlv
bnMmIGNyeXB0b19vcHRpb25zKSBvdmVycmlkZSB7CisgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0
b09wdGlvbnMmIGNyeXB0b19vcHRpb25zKSBvdmVycmlkZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PGNyaWNrZXQ6OkZha2VJY2VUcmFuc3BvcnQ+IGZha2VfaWNlKAogICAgICAgICBzdGF0aWNfY2Fz
dDxjcmlja2V0OjpGYWtlSWNlVHJhbnNwb3J0Kj4oaWNlLnJlbGVhc2UoKSkpOwogICAgIHJldHVy
biBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlRHRsc1RyYW5zcG9ydD4oc3RkOjptb3ZlKGZha2VfaWNl
KSk7CkBAIC04NCw2ICs5OSwxMCBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3Qg
OiBwdWJsaWMgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok9ic2VydmVyLAogICB2b2lkIENvbm5l
Y3RUcmFuc3BvcnRDb250cm9sbGVyU2lnbmFscygpIHsKICAgICB0cmFuc3BvcnRfY29udHJvbGxl
cl8tPlNpZ25hbEljZUNvbm5lY3Rpb25TdGF0ZS5jb25uZWN0KAogICAgICAgICB0aGlzLCAmSnNl
cFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0OjpPbkNvbm5lY3Rpb25TdGF0ZSk7CisgICAgdHJhbnNw
b3J0X2NvbnRyb2xsZXJfLT5TaWduYWxTdGFuZGFyZGl6ZWRJY2VDb25uZWN0aW9uU3RhdGUuY29u
bmVjdCgKKyAgICAgICAgdGhpcywgJkpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdDo6T25TdGFu
ZGFyZGl6ZWRJY2VDb25uZWN0aW9uU3RhdGUpOworICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+
U2lnbmFsQ29ubmVjdGlvblN0YXRlLmNvbm5lY3QoCisgICAgICAgIHRoaXMsICZKc2VwVHJhbnNw
b3J0Q29udHJvbGxlclRlc3Q6Ok9uQ29tYmluZWRDb25uZWN0aW9uU3RhdGUpOwogICAgIHRyYW5z
cG9ydF9jb250cm9sbGVyXy0+U2lnbmFsSWNlR2F0aGVyaW5nU3RhdGUuY29ubmVjdCgKICAgICAg
ICAgdGhpcywgJkpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdDo6T25HYXRoZXJpbmdTdGF0ZSk7
CiAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TaWduYWxJY2VDYW5kaWRhdGVzR2F0aGVyZWQu
Y29ubmVjdCgKQEAgLTE3MCw3ICsxODksNyBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxl
clRlc3QgOiBwdWJsaWMgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok9ic2VydmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+
IGNlcnQpIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4gZmluZ2Vy
cHJpbnQ7CiAgICAgaWYgKGNlcnQpIHsKLSAgICAgIGZpbmdlcnByaW50LnJlc2V0KHJ0Yzo6U1NM
RmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZShjZXJ0KSk7CisgICAgICBmaW5nZXJw
cmludCA9IHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZSgqY2VydCk7
CiAgICAgfQogCiAgICAgY3JpY2tldDo6VHJhbnNwb3J0RGVzY3JpcHRpb24gdHJhbnNwb3J0X2Rl
c2Moc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCksCkBAIC0yNDMsNiArMjYyLDI0IEBAIGNsYXNz
IEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCA6IHB1YmxpYyBKc2VwVHJhbnNwb3J0Q29udHJv
bGxlcjo6T2JzZXJ2ZXIsCiAgICAgKytjb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF87CiAg
IH0KIAorICB2b2lkIE9uU3RhbmRhcmRpemVkSWNlQ29ubmVjdGlvblN0YXRlKAorICAgICAgUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSBzdGF0ZSkgeworICAgIGlm
ICghc2lnbmFsaW5nX3RocmVhZF8tPklzQ3VycmVudCgpKSB7CisgICAgICBzaWduYWxlZF9vbl9u
b25fc2lnbmFsaW5nX3RocmVhZF8gPSB0cnVlOworICAgIH0KKyAgICBpY2VfY29ubmVjdGlvbl9z
dGF0ZV8gPSBzdGF0ZTsKKyAgICArK2ljZV9jb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF87
CisgIH0KKworICB2b2lkIE9uQ29tYmluZWRDb25uZWN0aW9uU3RhdGUoCisgICAgICBQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBzdGF0ZSkgeworICAgIGlmICgh
c2lnbmFsaW5nX3RocmVhZF8tPklzQ3VycmVudCgpKSB7CisgICAgICBzaWduYWxlZF9vbl9ub25f
c2lnbmFsaW5nX3RocmVhZF8gPSB0cnVlOworICAgIH0KKyAgICBjb21iaW5lZF9jb25uZWN0aW9u
X3N0YXRlXyA9IHN0YXRlOworICAgICsrY29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxf
Y291bnRfOworICB9CisKICAgdm9pZCBPbkdhdGhlcmluZ1N0YXRlKGNyaWNrZXQ6OkljZUdhdGhl
cmluZ1N0YXRlIHN0YXRlKSB7CiAgICAgaWYgKCFzaWduYWxpbmdfdGhyZWFkXy0+SXNDdXJyZW50
KCkpIHsKICAgICAgIHNpZ25hbGVkX29uX25vbl9zaWduYWxpbmdfdGhyZWFkXyA9IHRydWU7CkBA
IC0yNjIsMzEgKzI5OSwzNyBAQCBjbGFzcyBKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QgOiBw
dWJsaWMgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6Ok9ic2VydmVyLAogICB9CiAKICAgLy8gSnNl
cFRyYW5zcG9ydENvbnRyb2xsZXI6Ok9ic2VydmVyIG92ZXJyaWRlcy4KLSAgYm9vbCBPblRyYW5z
cG9ydENoYW5nZWQoCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlkLAotICAgICAgUnRwVHJh
bnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQsCi0gICAgICBjcmlja2V0OjpEdGxzVHJhbnNw
b3J0SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0KSBvdmVycmlkZSB7CisgIGJvb2wgT25UcmFuc3Bv
cnRDaGFuZ2VkKGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmlja2V0OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVk
aWFfdHJhbnNwb3J0KSBvdmVycmlkZSB7CiAgICAgY2hhbmdlZF9ydHBfdHJhbnNwb3J0X2J5X21p
ZF9bbWlkXSA9IHJ0cF90cmFuc3BvcnQ7CiAgICAgY2hhbmdlZF9kdGxzX3RyYW5zcG9ydF9ieV9t
aWRfW21pZF0gPSBkdGxzX3RyYW5zcG9ydDsKKyAgICBjaGFuZ2VkX21lZGlhX3RyYW5zcG9ydF9i
eV9taWRfW21pZF0gPSBtZWRpYV90cmFuc3BvcnQ7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAog
ICAvLyBJbmZvcm1hdGlvbiByZWNlaXZlZCBmcm9tIHNpZ25hbHMgZnJvbSB0cmFuc3BvcnQgY29u
dHJvbGxlci4KICAgY3JpY2tldDo6SWNlQ29ubmVjdGlvblN0YXRlIGNvbm5lY3Rpb25fc3RhdGVf
ID0KICAgICAgIGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGluZzsKKyAgUGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSBpY2VfY29ubmVjdGlvbl9zdGF0ZV8g
PQorICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uTmV3OworICBQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBjb21iaW5lZF9jb25u
ZWN0aW9uX3N0YXRlXyA9CisgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5l
Y3Rpb25TdGF0ZTo6a05ldzsKICAgYm9vbCByZWNlaXZpbmdfID0gZmFsc2U7CiAgIGNyaWNrZXQ6
OkljZUdhdGhlcmluZ1N0YXRlIGdhdGhlcmluZ19zdGF0ZV8gPSBjcmlja2V0OjprSWNlR2F0aGVy
aW5nTmV3OwogICAvLyB0cmFuc3BvcnRfbmFtZSA9PiBjYW5kaWRhdGVzCiAgIHN0ZDo6bWFwPHN0
ZDo6c3RyaW5nLCBDYW5kaWRhdGVzPiBjYW5kaWRhdGVzXzsKICAgLy8gQ291bnRzIG9mIGVhY2gg
c2lnbmFsIGVtaXR0ZWQuCiAgIGludCBjb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8gPSAw
OworICBpbnQgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50XyA9IDA7CisgIGludCBj
b21iaW5lZF9jb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8gPSAwOwogICBpbnQgcmVjZWl2
aW5nX3NpZ25hbF9jb3VudF8gPSAwOwogICBpbnQgZ2F0aGVyaW5nX3N0YXRlX3NpZ25hbF9jb3Vu
dF8gPSAwOwogICBpbnQgY2FuZGlkYXRlc19zaWduYWxfY291bnRfID0gMDsKIAogICAvLyB8bmV0
d29ya190aHJlYWRffCBzaG91bGQgYmUgZGVzdHJveWVkIGFmdGVyIHx0cmFuc3BvcnRfY29udHJv
bGxlcl98CiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gbmV0d29ya190aHJlYWRfOwot
ICBzdGQ6OnVuaXF1ZV9wdHI8SnNlcFRyYW5zcG9ydENvbnRyb2xsZXI+IHRyYW5zcG9ydF9jb250
cm9sbGVyXzsKICAgc3RkOjp1bmlxdWVfcHRyPEZha2VUcmFuc3BvcnRGYWN0b3J5PiBmYWtlX3Ry
YW5zcG9ydF9mYWN0b3J5XzsKICAgcnRjOjpUaHJlYWQqIGNvbnN0IHNpZ25hbGluZ190aHJlYWRf
ID0gbnVsbHB0cjsKICAgYm9vbCBzaWduYWxlZF9vbl9ub25fc2lnbmFsaW5nX3RocmVhZF8gPSBm
YWxzZTsKQEAgLTI5NSw2ICszMzgsMTIgQEAgY2xhc3MgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJU
ZXN0IDogcHVibGljIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpPYnNlcnZlciwKICAgc3RkOjpt
YXA8c3RkOjpzdHJpbmcsIFJ0cFRyYW5zcG9ydEludGVybmFsKj4gY2hhbmdlZF9ydHBfdHJhbnNw
b3J0X2J5X21pZF87CiAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBjcmlja2V0OjpEdGxzVHJhbnNw
b3J0SW50ZXJuYWwqPgogICAgICAgY2hhbmdlZF9kdGxzX3RyYW5zcG9ydF9ieV9taWRfOworICBz
dGQ6Om1hcDxzdGQ6OnN0cmluZywgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqPgorICAgICAgY2hh
bmdlZF9tZWRpYV90cmFuc3BvcnRfYnlfbWlkXzsKKworICAvLyBUcmFuc3BvcnQgY29udHJvbGxl
ciBuZWVkcyB0byBiZSBkZXN0cm95ZWQgZmlyc3QsIGJlY2F1c2UgaXQgbWF5IGlzc3VlCisgIC8v
IGNhbGxiYWNrcyB0aGF0IG1vZGlmeSB0aGUgY2hhbmdlZF8qX2J5X21pZCBpbiB0aGUgZGVzdHJ1
Y3Rvci4KKyAgc3RkOjp1bmlxdWVfcHRyPEpzZXBUcmFuc3BvcnRDb250cm9sbGVyPiB0cmFuc3Bv
cnRfY29udHJvbGxlcl87CiB9OwogCiBURVNUX0YoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0
LCBHZXRSdHBUcmFuc3BvcnQpIHsKQEAgLTM0MSw2ICszOTAsMTE4IEBAIFRFU1RfRihKc2VwVHJh
bnNwb3J0Q29udHJvbGxlclRlc3QsIEdldER0bHNUcmFuc3BvcnRXaXRoUnRjcE11eCkgewogICBF
WFBFQ1RfRVEobnVsbHB0ciwgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRSdGNwRHRsc1RyYW5z
cG9ydChrQXVkaW9NaWQxKSk7CiAgIEVYUEVDVF9ORShudWxscHRyLCB0cmFuc3BvcnRfY29udHJv
bGxlcl8tPkdldER0bHNUcmFuc3BvcnQoa1ZpZGVvTWlkMSkpOwogICBFWFBFQ1RfRVEobnVsbHB0
ciwgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRSdGNwRHRsc1RyYW5zcG9ydChrVmlkZW9NaWQx
KSk7CisgIEVYUEVDVF9FUShudWxscHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlh
VHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKK30KKworVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9s
bGVyVGVzdCwgR2V0TWVkaWFUcmFuc3BvcnRJbkNhbGxlcikgeworICBGYWtlTWVkaWFUcmFuc3Bv
cnRGYWN0b3J5IGZha2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7CisgIEpzZXBUcmFuc3BvcnRD
b250cm9sbGVyOjpDb25maWcgY29uZmlnOworCisgIGNvbmZpZy5ydGNwX211eF9wb2xpY3kgPSBQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a1J0Y3BNdXhQb2xpY3lOZWdvdGlhdGU7CisgIGNvbmZp
Zy5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9ICZmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
OworICBDcmVhdGVKc2VwVHJhbnNwb3J0Q29udHJvbGxlcihjb25maWcpOworICBhdXRvIGRlc2Ny
aXB0aW9uID0gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aG91dEJ1bmRsZSgpOworICBBZGRD
cnlwdG9TZXR0aW5ncyhkZXNjcmlwdGlvbi5nZXQoKSk7CisKKyAgRVhQRUNUX1RSVUUodHJhbnNw
b3J0X2NvbnRyb2xsZXJfCisgICAgICAgICAgICAgICAgICAtPlNldExvY2FsRGVzY3JpcHRpb24o
U2RwVHlwZTo6a09mZmVyLCBkZXNjcmlwdGlvbi5nZXQoKSkKKyAgICAgICAgICAgICAgICAgIC5v
aygpKTsKKworICBGYWtlTWVkaWFUcmFuc3BvcnQqIG1lZGlhX3RyYW5zcG9ydCA9IHN0YXRpY19j
YXN0PEZha2VNZWRpYVRyYW5zcG9ydCo+KAorICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5H
ZXRNZWRpYVRyYW5zcG9ydChrQXVkaW9NaWQxKSk7CisKKyAgQVNTRVJUX05FKG51bGxwdHIsIG1l
ZGlhX3RyYW5zcG9ydCk7CisKKyAgLy8gQWZ0ZXIgU2V0TG9jYWxEZXNjcmlwdGlvbiwgbWVkaWEg
dHJhbnNwb3J0IHNob3VsZCBiZSBjcmVhdGVkIGFzIGNhbGxlci4KKyAgRVhQRUNUX1RSVUUobWVk
aWFfdHJhbnNwb3J0LT5pc19jYWxsZXIoKSk7CisgIEVYUEVDVF9UUlVFKG1lZGlhX3RyYW5zcG9y
dC0+cHJlX3NoYXJlZF9rZXkoKS5oYXNfdmFsdWUoKSk7CisKKyAgLy8gUmV0dXJuIG51bGxwdHIg
Zm9yIG5vbi1leGlzdGluZyBtaWRzLgorICBFWFBFQ1RfRVEobnVsbHB0ciwgdHJhbnNwb3J0X2Nv
bnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChrVmlkZW9NaWQyKSk7Cit9CisKK1RFU1RfRihK
c2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsIEdldE1lZGlhVHJhbnNwb3J0SW5DYWxsZWUpIHsK
KyAgRmFrZU1lZGlhVHJhbnNwb3J0RmFjdG9yeSBmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
OworICBKc2VwVHJhbnNwb3J0Q29udHJvbGxlcjo6Q29uZmlnIGNvbmZpZzsKKworICBjb25maWcu
cnRjcF9tdXhfcG9saWN5ID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtSdGNwTXV4UG9saWN5
TmVnb3RpYXRlOworICBjb25maWcubWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkgPSAmZmFrZV9tZWRp
YV90cmFuc3BvcnRfZmFjdG9yeTsKKyAgQ3JlYXRlSnNlcFRyYW5zcG9ydENvbnRyb2xsZXIoY29u
ZmlnKTsKKyAgYXV0byBkZXNjcmlwdGlvbiA9IENyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbldpdGhv
dXRCdW5kbGUoKTsKKyAgQWRkQ3J5cHRvU2V0dGluZ3MoZGVzY3JpcHRpb24uZ2V0KCkpOworICBF
WFBFQ1RfVFJVRSh0cmFuc3BvcnRfY29udHJvbGxlcl8KKyAgICAgICAgICAgICAgICAgIC0+U2V0
UmVtb3RlRGVzY3JpcHRpb24oU2RwVHlwZTo6a09mZmVyLCBkZXNjcmlwdGlvbi5nZXQoKSkKKyAg
ICAgICAgICAgICAgICAgIC5vaygpKTsKKworICBGYWtlTWVkaWFUcmFuc3BvcnQqIG1lZGlhX3Ry
YW5zcG9ydCA9IHN0YXRpY19jYXN0PEZha2VNZWRpYVRyYW5zcG9ydCo+KAorICAgICAgdHJhbnNw
b3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChrQXVkaW9NaWQxKSk7CisKKyAgQVNT
RVJUX05FKG51bGxwdHIsIG1lZGlhX3RyYW5zcG9ydCk7CisKKyAgLy8gQWZ0ZXIgU2V0UmVtb3Rl
RGVzY3JpcHRpb24sIG1lZGlhIHRyYW5zcG9ydCBzaG91bGQgYmUgY3JlYXRlZCBhcyBjYWxsZWUu
CisgIEVYUEVDVF9GQUxTRShtZWRpYV90cmFuc3BvcnQtPmlzX2NhbGxlcigpKTsKKyAgRVhQRUNU
X1RSVUUobWVkaWFfdHJhbnNwb3J0LT5wcmVfc2hhcmVkX2tleSgpLmhhc192YWx1ZSgpKTsKKwor
ICAvLyBSZXR1cm4gbnVsbHB0ciBmb3Igbm9uLWV4aXN0aW5nIG1pZHMuCisgIEVYUEVDVF9FUShu
dWxscHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtWaWRlb01p
ZDIpKTsKK30KKworVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgR2V0TWVkaWFU
cmFuc3BvcnRJc05vdFNldElmTm9TZGVzKSB7CisgIEZha2VNZWRpYVRyYW5zcG9ydEZhY3Rvcnkg
ZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeTsKKyAgSnNlcFRyYW5zcG9ydENvbnRyb2xsZXI6
OkNvbmZpZyBjb25maWc7CisKKyAgY29uZmlnLnJ0Y3BfbXV4X3BvbGljeSA9IFBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjprUnRjcE11eFBvbGljeU5lZ290aWF0ZTsKKyAgY29uZmlnLm1lZGlhX3Ry
YW5zcG9ydF9mYWN0b3J5ID0gJmZha2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7CisgIENyZWF0
ZUpzZXBUcmFuc3BvcnRDb250cm9sbGVyKGNvbmZpZyk7CisgIGF1dG8gZGVzY3JpcHRpb24gPSBD
cmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVuZGxlKCk7CisgIEVYUEVDVF9UUlVFKHRy
YW5zcG9ydF9jb250cm9sbGVyXworICAgICAgICAgICAgICAgICAgLT5TZXRSZW1vdGVEZXNjcmlw
dGlvbihTZHBUeXBlOjprT2ZmZXIsIGRlc2NyaXB0aW9uLmdldCgpKQorICAgICAgICAgICAgICAg
ICAgLm9rKCkpOworCisgIEVYUEVDVF9FUShudWxscHRyLCB0cmFuc3BvcnRfY29udHJvbGxlcl8t
PkdldE1lZGlhVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKKworICAvLyBFdmVuIGlmIHdlIHNldCBs
b2NhbCBkZXNjcmlwdGlvbiB3aXRoIGNyeXB0byBub3cgKGFmdGVyIHRoZSByZW1vdGUgb2ZmZXIK
KyAgLy8gd2FzIHNldCksIG1lZGlhIHRyYW5zcG9ydCB3b24ndCBiZSBwcm92aWRlZC4KKyAgYXV0
byBkZXNjcmlwdGlvbjIgPSBDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVuZGxlKCk7
CisgIEFkZENyeXB0b1NldHRpbmdzKGRlc2NyaXB0aW9uMi5nZXQoKSk7CisgIEVYUEVDVF9UUlVF
KHRyYW5zcG9ydF9jb250cm9sbGVyXworICAgICAgICAgICAgICAgICAgLT5TZXRMb2NhbERlc2Ny
aXB0aW9uKFNkcFR5cGU6OmtBbnN3ZXIsIGRlc2NyaXB0aW9uMi5nZXQoKSkKKyAgICAgICAgICAg
ICAgICAgIC5vaygpKTsKKworICBFWFBFQ1RfRVEobnVsbHB0ciwgdHJhbnNwb3J0X2NvbnRyb2xs
ZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChrQXVkaW9NaWQxKSk7Cit9CisKK1RFU1RfRihKc2VwVHJh
bnNwb3J0Q29udHJvbGxlclRlc3QsCisgICAgICAgQWZ0ZXJTZXR0aW5nQW5zd2VyVGhlU2FtZU1l
ZGlhVHJhbnNwb3J0SXNSZXR1cm5lZCkgeworICBGYWtlTWVkaWFUcmFuc3BvcnRGYWN0b3J5IGZh
a2VfbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk7CisgIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpD
b25maWcgY29uZmlnOworCisgIGNvbmZpZy5ydGNwX211eF9wb2xpY3kgPSBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6a1J0Y3BNdXhQb2xpY3lOZWdvdGlhdGU7CisgIGNvbmZpZy5tZWRpYV90cmFu
c3BvcnRfZmFjdG9yeSA9ICZmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5OworICBDcmVhdGVK
c2VwVHJhbnNwb3J0Q29udHJvbGxlcihjb25maWcpOworICBhdXRvIGRlc2NyaXB0aW9uID0gQ3Jl
YXRlU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aG91dEJ1bmRsZSgpOworICBBZGRDcnlwdG9TZXR0aW5n
cyhkZXNjcmlwdGlvbi5nZXQoKSk7CisgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydF9jb250cm9sbGVy
XworICAgICAgICAgICAgICAgICAgLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihTZHBUeXBlOjprT2Zm
ZXIsIGRlc2NyaXB0aW9uLmdldCgpKQorICAgICAgICAgICAgICAgICAgLm9rKCkpOworCisgIEZh
a2VNZWRpYVRyYW5zcG9ydCogbWVkaWFfdHJhbnNwb3J0ID0gc3RhdGljX2Nhc3Q8RmFrZU1lZGlh
VHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNw
b3J0KGtBdWRpb01pZDEpKTsKKyAgRVhQRUNUX05FKG51bGxwdHIsIG1lZGlhX3RyYW5zcG9ydCk7
CisgIEVYUEVDVF9UUlVFKG1lZGlhX3RyYW5zcG9ydC0+cHJlX3NoYXJlZF9rZXkoKS5oYXNfdmFs
dWUoKSk7CisKKyAgLy8gRXZlbiBpZiB3ZSBzZXQgbG9jYWwgZGVzY3JpcHRpb24gd2l0aCBjcnlw
dG8gbm93IChhZnRlciB0aGUgcmVtb3RlIG9mZmVyCisgIC8vIHdhcyBzZXQpLCBtZWRpYSB0cmFu
c3BvcnQgd29uJ3QgYmUgcHJvdmlkZWQuCisgIGF1dG8gZGVzY3JpcHRpb24yID0gQ3JlYXRlU2Vz
c2lvbkRlc2NyaXB0aW9uV2l0aG91dEJ1bmRsZSgpOworICBBZGRDcnlwdG9TZXR0aW5ncyhkZXNj
cmlwdGlvbjIuZ2V0KCkpOworCisgIFJUQ0Vycm9yIHJlc3VsdCA9IHRyYW5zcG9ydF9jb250cm9s
bGVyXy0+U2V0TG9jYWxEZXNjcmlwdGlvbigKKyAgICAgIFNkcFR5cGU6OmtBbnN3ZXIsIGRlc2Ny
aXB0aW9uMi5nZXQoKSk7CisgIEVYUEVDVF9UUlVFKHJlc3VsdC5vaygpKSA8PCByZXN1bHQubWVz
c2FnZSgpOworCisgIC8vIE1lZGlhIHRyYW5zcG9ydCBkaWQgbm90IGNoYW5nZS4KKyAgRVhQRUNU
X0VRKG1lZGlhX3RyYW5zcG9ydCwKKyAgICAgICAgICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+
R2V0TWVkaWFUcmFuc3BvcnQoa0F1ZGlvTWlkMSkpOwogfQogCiBURVNUX0YoSnNlcFRyYW5zcG9y
dENvbnRyb2xsZXJUZXN0LCBTZXRJY2VDb25maWcpIHsKQEAgLTU2OCw5ICs3MjksMTYgQEAgVEVT
VF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwgU2lnbmFsQ29ubmVjdGlvblN0YXRlRmFp
bGVkKSB7CiAgIGZha2VfaWNlLT5TZXRDb25uZWN0aW9uQ291bnQoMCk7CiAgIEVYUEVDVF9FUV9X
QUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uRmFpbGVkLCBjb25uZWN0aW9uX3N0YXRlXywga1Rp
bWVvdXQpOwogICBFWFBFQ1RfRVEoMSwgY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsK
KyAgRVhQRUNUX0VRX1dBSVQoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9u
RmFpbGVkLAorICAgICAgICAgICAgICAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0
KTsKKyAgRVhQRUNUX0VRKDEsIGljZV9jb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOwor
ICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25T
dGF0ZTo6a0ZhaWxlZCwKKyAgICAgICAgICAgICAgICAgY29tYmluZWRfY29ubmVjdGlvbl9zdGF0
ZV8sIGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDEsIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVf
c2lnbmFsX2NvdW50Xyk7CiB9CiAKLVRFU1RfRihKc2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3Qs
IFNpZ25hbENvbm5lY3Rpb25TdGF0ZUNvbm5lY3RlZCkgeworVEVTVF9GKEpzZXBUcmFuc3BvcnRD
b250cm9sbGVyVGVzdCwKKyAgICAgICBTaWduYWxDb25uZWN0aW9uU3RhdGVDb25uZWN0ZWROb01l
ZGlhVHJhbnNwb3J0KSB7CiAgIENyZWF0ZUpzZXBUcmFuc3BvcnRDb250cm9sbGVyKEpzZXBUcmFu
c3BvcnRDb250cm9sbGVyOjpDb25maWcoKSk7CiAgIGF1dG8gZGVzY3JpcHRpb24gPSBDcmVhdGVT
ZXNzaW9uRGVzY3JpcHRpb25XaXRob3V0QnVuZGxlKCk7CiAgIEVYUEVDVF9UUlVFKHRyYW5zcG9y
dF9jb250cm9sbGVyXwpAQCAtNTk1LDEzICs3NjMsMTE0IEBAIFRFU1RfRihKc2VwVHJhbnNwb3J0
Q29udHJvbGxlclRlc3QsIFNpZ25hbENvbm5lY3Rpb25TdGF0ZUNvbm5lY3RlZCkgewogCiAgIEVY
UEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uRmFpbGVkLCBjb25uZWN0aW9uX3N0
YXRlXywga1RpbWVvdXQpOwogICBFWFBFQ1RfRVEoMSwgY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxf
Y291bnRfKTsKLQorICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0lj
ZUNvbm5lY3Rpb25GYWlsZWQsCisgICAgICAgICAgICAgICAgIGljZV9jb25uZWN0aW9uX3N0YXRl
Xywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMSwgaWNlX2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFs
X2NvdW50Xyk7CisgIEVYUEVDVF9FUV9XQUlUKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVy
Q29ubmVjdGlvblN0YXRlOjprRmFpbGVkLAorICAgICAgICAgICAgICAgICBjb21iaW5lZF9jb25u
ZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOworICBFWFBFQ1RfRVEoMSwgY29tYmluZWRfY29ubmVj
dGlvbl9zdGF0ZV9zaWduYWxfY291bnRfKTsKKworICBmYWtlX2F1ZGlvX2R0bHMtPlNldER0bHNT
dGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOworICBmYWtlX3ZpZGVvX2R0
bHMtPlNldER0bHNTdGF0ZShjcmlja2V0OjpEVExTX1RSQU5TUE9SVF9DT05ORUNURUQpOwogICAv
LyBTZXQgdGhlIGNvbm5lY3Rpb24gY291bnQgdG8gYmUgMiBhbmQgdGhlIGNyaWNrZXQ6OkZha2VJ
Y2VUcmFuc3BvcnQgd2lsbCBzZXQKICAgLy8gdGhlIHRyYW5zcG9ydCBzdGF0ZSB0byBiZSBTVEFU
RV9DT05ORUNUSU5HLgogICBmYWtlX3ZpZGVvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgpLT5T
ZXRDb25uZWN0aW9uQ291bnQoMik7CiAgIGZha2VfdmlkZW9fZHRscy0+U2V0V3JpdGFibGUodHJ1
ZSk7CiAgIEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGVkLCBj
b25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOwogICBFWFBFQ1RfRVEoMiwgY29ubmVjdGlvbl9z
dGF0ZV9zaWduYWxfY291bnRfKTsKKyAgRVhQRUNUX0VRX1dBSVQoUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGVkLAorICAgICAgICAgICAgICAgICBpY2VfY29u
bmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDIsIGljZV9jb25uZWN0aW9u
X3N0YXRlX3NpZ25hbF9jb3VudF8pOworICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3RlZCwKKyAgICAgICAgICAgICAg
ICAgY29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDIs
IGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7Cit9CisKK1RFU1RfRihK
c2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsCisgICAgICAgU2lnbmFsQ29ubmVjdGlvblN0YXRl
Q29ubmVjdGVkV2l0aE1lZGlhVHJhbnNwb3J0KSB7CisgIEZha2VNZWRpYVRyYW5zcG9ydEZhY3Rv
cnkgZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeTsKKyAgSnNlcFRyYW5zcG9ydENvbnRyb2xs
ZXI6OkNvbmZpZyBjb25maWc7CisgIGNvbmZpZy5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9ICZm
YWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5OworICBDcmVhdGVKc2VwVHJhbnNwb3J0Q29udHJv
bGxlcihjb25maWcpOworICBhdXRvIGRlc2NyaXB0aW9uID0gQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0
aW9uV2l0aG91dEJ1bmRsZSgpOworICBBZGRDcnlwdG9TZXR0aW5ncyhkZXNjcmlwdGlvbi5nZXQo
KSk7CisgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydF9jb250cm9sbGVyXworICAgICAgICAgICAgICAg
ICAgLT5TZXRMb2NhbERlc2NyaXB0aW9uKFNkcFR5cGU6OmtPZmZlciwgZGVzY3JpcHRpb24uZ2V0
KCkpCisgICAgICAgICAgICAgICAgICAub2soKSk7CisKKyAgYXV0byBmYWtlX2F1ZGlvX2R0bHMg
PSBzdGF0aWNfY2FzdDxGYWtlRHRsc1RyYW5zcG9ydCo+KAorICAgICAgdHJhbnNwb3J0X2NvbnRy
b2xsZXJfLT5HZXREdGxzVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKKyAgYXV0byBmYWtlX3ZpZGVv
X2R0bHMgPSBzdGF0aWNfY2FzdDxGYWtlRHRsc1RyYW5zcG9ydCo+KAorICAgICAgdHJhbnNwb3J0
X2NvbnRyb2xsZXJfLT5HZXREdGxzVHJhbnNwb3J0KGtWaWRlb01pZDEpKTsKKyAgZmFrZV9hdWRp
b19kdGxzLT5TZXRXcml0YWJsZSh0cnVlKTsKKyAgZmFrZV92aWRlb19kdGxzLT5TZXRXcml0YWJs
ZSh0cnVlKTsKKyAgLy8gRGVjcmVhc2luZyBjb25uZWN0aW9uIGNvdW50IGZyb20gMiB0byAxIHRy
aWdnZXJzIGNvbm5lY3Rpb24gc3RhdGUgZXZlbnQuCisgIGZha2VfYXVkaW9fZHRscy0+ZmFrZV9p
Y2VfdHJhbnNwb3J0KCktPlNldENvbm5lY3Rpb25Db3VudCgyKTsKKyAgZmFrZV9hdWRpb19kdGxz
LT5mYWtlX2ljZV90cmFuc3BvcnQoKS0+U2V0Q29ubmVjdGlvbkNvdW50KDEpOworICBmYWtlX3Zp
ZGVvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgpLT5TZXRDb25uZWN0aW9uQ291bnQoMik7Cisg
IGZha2VfdmlkZW9fZHRscy0+ZmFrZV9pY2VfdHJhbnNwb3J0KCktPlNldENvbm5lY3Rpb25Db3Vu
dCgxKTsKKyAgZmFrZV9hdWRpb19kdGxzLT5TZXREdGxzU3RhdGUoY3JpY2tldDo6RFRMU19UUkFO
U1BPUlRfQ09OTkVDVEVEKTsKKyAgZmFrZV92aWRlb19kdGxzLT5TZXREdGxzU3RhdGUoY3JpY2tl
dDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEKTsKKworICAvLyBTdGlsbCBub3QgY29ubmVjdGVk
LCBiZWNhdXNlIHdlIGFyZSB3YWl0aW5nIGZvciBtZWRpYSB0cmFuc3BvcnQuCisgIEVYUEVDVF9F
UV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uQ29ubmVjdGluZywgY29ubmVjdGlvbl9zdGF0
ZV8sCisgICAgICAgICAgICAgICAgIGtUaW1lb3V0KTsKKworICBGYWtlTWVkaWFUcmFuc3BvcnQq
IG1lZGlhX3RyYW5zcG9ydCA9IHN0YXRpY19jYXN0PEZha2VNZWRpYVRyYW5zcG9ydCo+KAorICAg
ICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChrQXVkaW9NaWQxKSk7
CisKKyAgbWVkaWFfdHJhbnNwb3J0LT5TZXRTdGF0ZSh3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0U3Rh
dGU6OmtXcml0YWJsZSk7CisgIEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9u
Q29ubmVjdGluZywgY29ubmVjdGlvbl9zdGF0ZV8sCisgICAgICAgICAgICAgICAgIGtUaW1lb3V0
KTsKKworICAvLyBTdGlsbCB3YWl0aW5nIGZvciB0aGUgc2Vjb25kIG1lZGlhIHRyYW5zcG9ydC4K
KyAgbWVkaWFfdHJhbnNwb3J0ID0gc3RhdGljX2Nhc3Q8RmFrZU1lZGlhVHJhbnNwb3J0Kj4oCisg
ICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KGtWaWRlb01pZDEp
KTsKKyAgbWVkaWFfdHJhbnNwb3J0LT5TZXRTdGF0ZSh3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0U3Rh
dGU6OmtXcml0YWJsZSk7CisKKyAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rp
b25Db25uZWN0ZWQsIGNvbm5lY3Rpb25fc3RhdGVfLCBrVGltZW91dCk7Cit9CisKK1RFU1RfRihK
c2VwVHJhbnNwb3J0Q29udHJvbGxlclRlc3QsCisgICAgICAgU2lnbmFsQ29ubmVjdGlvblN0YXRl
RmFpbGVkV2hlbk1lZGlhVHJhbnNwb3J0Q2xvc2VkKSB7CisgIEZha2VNZWRpYVRyYW5zcG9ydEZh
Y3RvcnkgZmFrZV9tZWRpYV90cmFuc3BvcnRfZmFjdG9yeTsKKyAgSnNlcFRyYW5zcG9ydENvbnRy
b2xsZXI6OkNvbmZpZyBjb25maWc7CisgIGNvbmZpZy5tZWRpYV90cmFuc3BvcnRfZmFjdG9yeSA9
ICZmYWtlX21lZGlhX3RyYW5zcG9ydF9mYWN0b3J5OworICBDcmVhdGVKc2VwVHJhbnNwb3J0Q29u
dHJvbGxlcihjb25maWcpOworICBhdXRvIGRlc2NyaXB0aW9uID0gQ3JlYXRlU2Vzc2lvbkRlc2Ny
aXB0aW9uV2l0aG91dEJ1bmRsZSgpOworICBBZGRDcnlwdG9TZXR0aW5ncyhkZXNjcmlwdGlvbi5n
ZXQoKSk7CisgIEVYUEVDVF9UUlVFKHRyYW5zcG9ydF9jb250cm9sbGVyXworICAgICAgICAgICAg
ICAgICAgLT5TZXRMb2NhbERlc2NyaXB0aW9uKFNkcFR5cGU6OmtPZmZlciwgZGVzY3JpcHRpb24u
Z2V0KCkpCisgICAgICAgICAgICAgICAgICAub2soKSk7CisKKyAgYXV0byBmYWtlX2F1ZGlvX2R0
bHMgPSBzdGF0aWNfY2FzdDxGYWtlRHRsc1RyYW5zcG9ydCo+KAorICAgICAgdHJhbnNwb3J0X2Nv
bnRyb2xsZXJfLT5HZXREdGxzVHJhbnNwb3J0KGtBdWRpb01pZDEpKTsKKyAgYXV0byBmYWtlX3Zp
ZGVvX2R0bHMgPSBzdGF0aWNfY2FzdDxGYWtlRHRsc1RyYW5zcG9ydCo+KAorICAgICAgdHJhbnNw
b3J0X2NvbnRyb2xsZXJfLT5HZXREdGxzVHJhbnNwb3J0KGtWaWRlb01pZDEpKTsKKyAgZmFrZV9h
dWRpb19kdGxzLT5TZXRXcml0YWJsZSh0cnVlKTsKKyAgZmFrZV92aWRlb19kdGxzLT5TZXRXcml0
YWJsZSh0cnVlKTsKKyAgLy8gRGVjcmVhc2luZyBjb25uZWN0aW9uIGNvdW50IGZyb20gMiB0byAx
IHRyaWdnZXJzIGNvbm5lY3Rpb24gc3RhdGUgZXZlbnQuCisgIGZha2VfYXVkaW9fZHRscy0+ZmFr
ZV9pY2VfdHJhbnNwb3J0KCktPlNldENvbm5lY3Rpb25Db3VudCgyKTsKKyAgZmFrZV9hdWRpb19k
dGxzLT5mYWtlX2ljZV90cmFuc3BvcnQoKS0+U2V0Q29ubmVjdGlvbkNvdW50KDEpOworICBmYWtl
X3ZpZGVvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgpLT5TZXRDb25uZWN0aW9uQ291bnQoMik7
CisgIGZha2VfdmlkZW9fZHRscy0+ZmFrZV9pY2VfdHJhbnNwb3J0KCktPlNldENvbm5lY3Rpb25D
b3VudCgxKTsKKyAgZmFrZV9hdWRpb19kdGxzLT5TZXREdGxzU3RhdGUoY3JpY2tldDo6RFRMU19U
UkFOU1BPUlRfQ09OTkVDVEVEKTsKKyAgZmFrZV92aWRlb19kdGxzLT5TZXREdGxzU3RhdGUoY3Jp
Y2tldDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEKTsKKworICBGYWtlTWVkaWFUcmFuc3BvcnQq
IG1lZGlhX3RyYW5zcG9ydCA9IHN0YXRpY19jYXN0PEZha2VNZWRpYVRyYW5zcG9ydCo+KAorICAg
ICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXRNZWRpYVRyYW5zcG9ydChrQXVkaW9NaWQxKSk7
CisKKyAgbWVkaWFfdHJhbnNwb3J0LT5TZXRTdGF0ZSh3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0U3Rh
dGU6OmtXcml0YWJsZSk7CisKKyAgbWVkaWFfdHJhbnNwb3J0ID0gc3RhdGljX2Nhc3Q8RmFrZU1l
ZGlhVHJhbnNwb3J0Kj4oCisgICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJh
bnNwb3J0KGtWaWRlb01pZDEpKTsKKworICBtZWRpYV90cmFuc3BvcnQtPlNldFN0YXRlKHdlYnJ0
Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKTsKKworICBFWFBFQ1RfRVFfV0FJVChj
cmlja2V0OjprSWNlQ29ubmVjdGlvbkNvbm5lY3RlZCwgY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1l
b3V0KTsKKworICBtZWRpYV90cmFuc3BvcnQtPlNldFN0YXRlKHdlYnJ0Yzo6TWVkaWFUcmFuc3Bv
cnRTdGF0ZTo6a0Nsb3NlZCk7CisgIEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0
aW9uRmFpbGVkLCBjb25uZWN0aW9uX3N0YXRlXywga1RpbWVvdXQpOwogfQogCiBURVNUX0YoSnNl
cFRyYW5zcG9ydENvbnRyb2xsZXJUZXN0LCBTaWduYWxDb25uZWN0aW9uU3RhdGVDb21wbGV0ZSkg
ewpAQCAtNjI5LDEzICs4OTgsMjcgQEAgVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVz
dCwgU2lnbmFsQ29ubmVjdGlvblN0YXRlQ29tcGxldGUpIHsKIAogICBFWFBFQ1RfRVFfV0FJVChj
cmlja2V0OjprSWNlQ29ubmVjdGlvbkZhaWxlZCwgY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0
KTsKICAgRVhQRUNUX0VRKDEsIGNvbm5lY3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7Ci0KKyAg
RVhQRUNUX0VRX1dBSVQoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uRmFp
bGVkLAorICAgICAgICAgICAgICAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsK
KyAgRVhQRUNUX0VRKDEsIGljZV9jb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9jb3VudF8pOworICBF
WFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0
ZTo6a0ZhaWxlZCwKKyAgICAgICAgICAgICAgICAgY29tYmluZWRfY29ubmVjdGlvbl9zdGF0ZV8s
IGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDEsIGNvbWJpbmVkX2Nvbm5lY3Rpb25fc3RhdGVfc2ln
bmFsX2NvdW50Xyk7CisKKyAgZmFrZV9hdWRpb19kdGxzLT5TZXREdGxzU3RhdGUoY3JpY2tldDo6
RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEKTsKKyAgZmFrZV92aWRlb19kdGxzLT5TZXREdGxzU3Rh
dGUoY3JpY2tldDo6RFRMU19UUkFOU1BPUlRfQ09OTkVDVEVEKTsKICAgLy8gU2V0IHRoZSBjb25u
ZWN0aW9uIGNvdW50IHRvIGJlIDEgYW5kIHRoZSBjcmlja2V0OjpGYWtlSWNlVHJhbnNwb3J0IHdp
bGwgc2V0CiAgIC8vIHRoZSB0cmFuc3BvcnQgc3RhdGUgdG8gYmUgU1RBVEVfQ09NUExFVEVELgog
ICBmYWtlX3ZpZGVvX2R0bHMtPmZha2VfaWNlX3RyYW5zcG9ydCgpLT5TZXRDb25uZWN0aW9uQ291
bnQoMSk7CiAgIGZha2VfdmlkZW9fZHRscy0+U2V0V3JpdGFibGUodHJ1ZSk7CiAgIEVYUEVDVF9F
UV9XQUlUKGNyaWNrZXQ6OmtJY2VDb25uZWN0aW9uQ29tcGxldGVkLCBjb25uZWN0aW9uX3N0YXRl
Xywga1RpbWVvdXQpOwogICBFWFBFQ1RfRVEoMiwgY29ubmVjdGlvbl9zdGF0ZV9zaWduYWxfY291
bnRfKTsKKyAgRVhQRUNUX0VRX1dBSVQoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25u
ZWN0aW9uQ29tcGxldGVkLAorICAgICAgICAgICAgICAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV8s
IGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDIsIGljZV9jb25uZWN0aW9uX3N0YXRlX3NpZ25hbF9j
b3VudF8pOworICBFWFBFQ1RfRVFfV0FJVChQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNv
bm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3RlZCwKKyAgICAgICAgICAgICAgICAgY29tYmluZWRfY29u
bmVjdGlvbl9zdGF0ZV8sIGtUaW1lb3V0KTsKKyAgRVhQRUNUX0VRKDIsIGNvbWJpbmVkX2Nvbm5l
Y3Rpb25fc3RhdGVfc2lnbmFsX2NvdW50Xyk7CiB9CiAKIFRFU1RfRihKc2VwVHJhbnNwb3J0Q29u
dHJvbGxlclRlc3QsIFNpZ25hbEljZUdhdGhlcmluZ1N0YXRlR2F0aGVyaW5nKSB7CkBAIC03MDks
NiArOTkyLDcgQEAgVEVTVF9GKEpzZXBUcmFuc3BvcnRDb250cm9sbGVyVGVzdCwKICAgZmFrZV9h
dWRpb19kdGxzLT5TZXRXcml0YWJsZSh0cnVlKTsKICAgZmFrZV9hdWRpb19kdGxzLT5mYWtlX2lj
ZV90cmFuc3BvcnQoKS0+U2V0Q2FuZGlkYXRlc0dhdGhlcmluZ0NvbXBsZXRlKCk7CiAgIGZha2Vf
YXVkaW9fZHRscy0+ZmFrZV9pY2VfdHJhbnNwb3J0KCktPlNldENvbm5lY3Rpb25Db3VudCgxKTsK
KyAgZmFrZV9hdWRpb19kdGxzLT5TZXREdGxzU3RhdGUoY3JpY2tldDo6RFRMU19UUkFOU1BPUlRf
Q09OTkVDVEVEKTsKICAgRVhQRUNUX0VRKDEsIGdhdGhlcmluZ19zdGF0ZV9zaWduYWxfY291bnRf
KTsKIAogICAvLyBTZXQgdGhlIHJlbW90ZSBkZXNjcmlwdGlvbiBhbmQgZW5hYmxlIHRoZSBidW5k
bGUuCkBAIC03MjEsNiArMTAwNSwxMCBAQCBURVNUX0YoSnNlcFRyYW5zcG9ydENvbnRyb2xsZXJU
ZXN0LAogICAgICAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5HZXREdGxzVHJhbnNwb3J0KGtWaWRl
b01pZDEpKTsKICAgRVhQRUNUX0VRKGZha2VfYXVkaW9fZHRscywgZmFrZV92aWRlb19kdGxzKTsK
ICAgRVhQRUNUX0VRX1dBSVQoY3JpY2tldDo6a0ljZUNvbm5lY3Rpb25Db21wbGV0ZWQsIGNvbm5l
Y3Rpb25fc3RhdGVfLCBrVGltZW91dCk7CisgIEVYUEVDVF9FUShQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZTo6a0ljZUNvbm5lY3Rpb25Db21wbGV0ZWQsCisgICAgICAgICAgICBpY2VfY29ubmVjdGlv
bl9zdGF0ZV8pOworICBFWFBFQ1RfRVEoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25u
ZWN0aW9uU3RhdGU6OmtDb25uZWN0ZWQsCisgICAgICAgICAgICBjb21iaW5lZF9jb25uZWN0aW9u
X3N0YXRlXyk7CiAgIEVYUEVDVF9FUV9XQUlUKGNyaWNrZXQ6OmtJY2VHYXRoZXJpbmdDb21wbGV0
ZSwgZ2F0aGVyaW5nX3N0YXRlXywga1RpbWVvdXQpOwogICBFWFBFQ1RfRVEoMiwgZ2F0aGVyaW5n
X3N0YXRlX3NpZ25hbF9jb3VudF8pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbG9jYWxhdWRpb3NvdXJjZS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbG9jYWxhdWRpb3NvdXJjZS5oCmlu
ZGV4IGM1ZjY1MzA0ZDBiM2NlYjViNzcwNDA2NTU0NDI0ZDM0Y2MzYzdmNDkuLmM0OGY1NDA3ZDRj
MWU1MzRmNWU2Y2IzNmNiOTdjYTJmNTRmNjM0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2xvY2FsYXVkaW9zb3VyY2UuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9sb2NhbGF1ZGlvc291
cmNlLmgKQEAgLTI5LDcgKzI5LDcgQEAgY2xhc3MgTG9jYWxBdWRpb1NvdXJjZSA6IHB1YmxpYyBO
b3RpZmllcjxBdWRpb1NvdXJjZUludGVyZmFjZT4gewogICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGtMaXZlOyB9CiAgIGJvb2wgcmVtb3RlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICB2aXJ0dWFsIGNvbnN0IGNyaWNrZXQ6OkF1ZGlv
T3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG9wdGlvbnNfOyB9CisgIGNvbnN0IGNy
aWNrZXQ6OkF1ZGlvT3B0aW9ucyBvcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gb3B0
aW9uc187IH0KIAogICB2b2lkIEFkZFNpbmsoQXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmsp
IG92ZXJyaWRlIHt9CiAgIHZvaWQgUmVtb3ZlU2luayhBdWRpb1RyYWNrU2lua0ludGVyZmFjZSog
c2luaykgb3ZlcnJpZGUge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5jYwppbmRleCA5YWU0NmJlMjdj
NWJmODVhMDNhMmM4MmRlN2FlN2Y2YTc0YTExNWI0Li43MjM5YWY4NmMzOTllN2JkYmU0ODZkOGIw
NmJkYWNhNjlhNjEyYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmNjCkBAIC0xOCw5ICsxOCw5
IEBACiAjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5j
bHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25h
bC5oIgogI2luY2x1ZGUgImFwaS9jcnlwdG9wYXJhbXMuaCIKLSNpbmNsdWRlICJjb21tb25fdHlw
ZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvaDI2
NF9wcm9maWxlX2xldmVsX2lkLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50
cy5oIgogI2luY2x1ZGUgInAycC9iYXNlL3AycGNvbnN0YW50cy5oIgpAQCAtMzksMTAgKzM5LDEw
IEBAIHVzaW5nIHdlYnJ0Yzo6UnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247CiAKIGNvbnN0IGNoYXIg
a0lubGluZVtdID0gImlubGluZToiOwogCi12b2lkIEdldFN1cHBvcnRlZFNkZXNDcnlwdG9TdWl0
ZU5hbWVzKHZvaWQgKCpmdW5jKShjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50
PiopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OkNy
eXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIG5hbWVzKSB7Cit2b2lkIEdldFN1
cHBvcnRlZFNkZXNDcnlwdG9TdWl0ZU5hbWVzKAorICAgIHZvaWQgKCpmdW5jKShjb25zdCB3ZWJy
dGM6OkNyeXB0b09wdGlvbnMmLCBzdGQ6OnZlY3RvcjxpbnQ+KiksCisgICAgY29uc3Qgd2VicnRj
OjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4qIG5hbWVzKSB7CiAgIHN0ZDo6dmVjdG9yPGludD4gY3J5cHRvX3N1aXRlczsKICAgZnVu
YyhjcnlwdG9fb3B0aW9ucywgJmNyeXB0b19zdWl0ZXMpOwogICBmb3IgKGNvbnN0IGF1dG8gY3J5
cHRvIDogY3J5cHRvX3N1aXRlcykgewpAQCAtMTk1LDI4ICsxOTUsMzAgQEAgYm9vbCBGaW5kTWF0
Y2hpbmdDcnlwdG8oY29uc3QgQ3J5cHRvUGFyYW1zVmVjJiBjcnlwdG9zLAogCiAvLyBGb3IgYXVk
aW8sIEhNQUMgMzIgKGlmIGVuYWJsZWQpIGlzIHByZWZlcmVkIG92ZXIgSE1BQyA4MCBiZWNhdXNl
IG9mIHRoZQogLy8gbG93IG92ZXJoZWFkLgotdm9pZCBHZXRTdXBwb3J0ZWRBdWRpb1NkZXNDcnlw
dG9TdWl0ZXMoY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0
b19zdWl0ZXMpIHsKLSAgaWYgKGNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRl
cykgewordm9pZCBHZXRTdXBwb3J0ZWRBdWRpb1NkZXNDcnlwdG9TdWl0ZXMoCisgICAgY29uc3Qg
d2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBzdGQ6OnZlY3Rvcjxp
bnQ+KiBjcnlwdG9fc3VpdGVzKSB7CisgIGlmIChjcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9n
Y21fY3J5cHRvX3N1aXRlcykgewogICAgIGNyeXB0b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6OlNS
VFBfQUVBRF9BRVNfMjU2X0dDTSk7CiAgICAgY3J5cHRvX3N1aXRlcy0+cHVzaF9iYWNrKHJ0Yzo6
U1JUUF9BRUFEX0FFU18xMjhfR0NNKTsKICAgfQotICBpZiAoY3J5cHRvX29wdGlvbnMuZW5hYmxl
X2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIpIHsKKyAgaWYgKGNyeXB0b19vcHRpb25zLnNy
dHAuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIpIHsKICAgICBjcnlwdG9fc3Vp
dGVzLT5wdXNoX2JhY2socnRjOjpTUlRQX0FFUzEyOF9DTV9TSEExXzMyKTsKICAgfQogICBjcnlw
dG9fc3VpdGVzLT5wdXNoX2JhY2socnRjOjpTUlRQX0FFUzEyOF9DTV9TSEExXzgwKTsKIH0KIAog
dm9pZCBHZXRTdXBwb3J0ZWRBdWRpb1NkZXNDcnlwdG9TdWl0ZU5hbWVzKAotICAgIGNvbnN0IHJ0
Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlw
dG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4q
IGNyeXB0b19zdWl0ZV9uYW1lcykgewogICBHZXRTdXBwb3J0ZWRTZGVzQ3J5cHRvU3VpdGVOYW1l
cyhHZXRTdXBwb3J0ZWRBdWRpb1NkZXNDcnlwdG9TdWl0ZXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyeXB0b19vcHRpb25zLCBjcnlwdG9fc3VpdGVfbmFtZXMpOwogfQog
Ci12b2lkIEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0b1N1aXRlcyhjb25zdCBydGM6OkNyeXB0
b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5cHRvX3N1aXRlcykgewotICBpZiAoY3J5cHRv
X29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzKSB7Cit2b2lkIEdldFN1cHBvcnRlZFZp
ZGVvU2Rlc0NyeXB0b1N1aXRlcygKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNy
eXB0b19vcHRpb25zLAorICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0b19zdWl0ZXMpIHsKKyAg
aWYgKGNyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzKSB7CiAgICAg
Y3J5cHRvX3N1aXRlcy0+cHVzaF9iYWNrKHJ0Yzo6U1JUUF9BRUFEX0FFU18yNTZfR0NNKTsKICAg
ICBjcnlwdG9fc3VpdGVzLT5wdXNoX2JhY2socnRjOjpTUlRQX0FFQURfQUVTXzEyOF9HQ00pOwog
ICB9CkBAIC0yMjQsMTUgKzIyNiwxNiBAQCB2b2lkIEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0
b1N1aXRlcyhjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogfQogCiB2
b2lkIEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0b1N1aXRlTmFtZXMoCi0gICAgY29uc3QgcnRj
OjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0
b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiog
Y3J5cHRvX3N1aXRlX25hbWVzKSB7CiAgIEdldFN1cHBvcnRlZFNkZXNDcnlwdG9TdWl0ZU5hbWVz
KEdldFN1cHBvcnRlZFZpZGVvU2Rlc0NyeXB0b1N1aXRlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3J5cHRvX29wdGlvbnMsIGNyeXB0b19zdWl0ZV9uYW1lcyk7CiB9CiAK
LXZvaWQgR2V0U3VwcG9ydGVkRGF0YVNkZXNDcnlwdG9TdWl0ZXMoY29uc3QgcnRjOjpDcnlwdG9P
cHRpb25zJiBjcnlwdG9fb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5cHRvX3N1aXRlcykgewotICBpZiAoY3J5cHRvX29w
dGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzKSB7Cit2b2lkIEdldFN1cHBvcnRlZERhdGFT
ZGVzQ3J5cHRvU3VpdGVzKAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRv
X29wdGlvbnMsCisgICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5cHRvX3N1aXRlcykgeworICBpZiAo
Y3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMpIHsKICAgICBjcnlw
dG9fc3VpdGVzLT5wdXNoX2JhY2socnRjOjpTUlRQX0FFQURfQUVTXzI1Nl9HQ00pOwogICAgIGNy
eXB0b19zdWl0ZXMtPnB1c2hfYmFjayhydGM6OlNSVFBfQUVBRF9BRVNfMTI4X0dDTSk7CiAgIH0K
QEAgLTI0MCw3ICsyNDMsNyBAQCB2b2lkIEdldFN1cHBvcnRlZERhdGFTZGVzQ3J5cHRvU3VpdGVz
KGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCiB9CiAKIHZvaWQgR2V0
U3VwcG9ydGVkRGF0YVNkZXNDcnlwdG9TdWl0ZU5hbWVzKAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRv
T3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpDcnlwdG9PcHRpb25z
JiBjcnlwdG9fb3B0aW9ucywKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIGNyeXB0b19z
dWl0ZV9uYW1lcykgewogICBHZXRTdXBwb3J0ZWRTZGVzQ3J5cHRvU3VpdGVOYW1lcyhHZXRTdXBw
b3J0ZWREYXRhU2Rlc0NyeXB0b1N1aXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3J5cHRvX29wdGlvbnMsIGNyeXB0b19zdWl0ZV9uYW1lcyk7CkBAIC0yNTIsMTcgKzI1
NSwxNyBAQCB2b2lkIEdldFN1cHBvcnRlZERhdGFTZGVzQ3J5cHRvU3VpdGVOYW1lcygKIC8vIFBp
Y2sgdGhlIGNyeXB0byBpbiB0aGUgbGlzdCB0aGF0IGlzIHN1cHBvcnRlZC4KIHN0YXRpYyBib29s
IFNlbGVjdENyeXB0byhjb25zdCBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogb2ZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBidW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25z
LAogICAgICAgICAgICAgICAgICAgICAgICAgIENyeXB0b1BhcmFtcyogY3J5cHRvX291dCkgewog
ICBib29sIGF1ZGlvID0gb2ZmZXItPnR5cGUoKSA9PSBNRURJQV9UWVBFX0FVRElPOwogICBjb25z
dCBDcnlwdG9QYXJhbXNWZWMmIGNyeXB0b3MgPSBvZmZlci0+Y3J5cHRvcygpOwogCiAgIGZvciAo
Y29uc3QgQ3J5cHRvUGFyYW1zJiBjcnlwdG8gOiBjcnlwdG9zKSB7Ci0gICAgaWYgKChjcnlwdG9f
b3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgJiYKKyAgICBpZiAoKGNyeXB0b19vcHRp
b25zLnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzICYmCiAgICAgICAgICBydGM6OklzR2Nt
Q3J5cHRvU3VpdGVOYW1lKGNyeXB0by5jaXBoZXJfc3VpdGUpKSB8fAogICAgICAgICBydGM6OkNT
X0FFU19DTV8xMjhfSE1BQ19TSEExXzgwID09IGNyeXB0by5jaXBoZXJfc3VpdGUgfHwKICAgICAg
ICAgKHJ0Yzo6Q1NfQUVTX0NNXzEyOF9ITUFDX1NIQTFfMzIgPT0gY3J5cHRvLmNpcGhlcl9zdWl0
ZSAmJiBhdWRpbyAmJgotICAgICAgICAgIWJ1bmRsZSAmJiBjcnlwdG9fb3B0aW9ucy5lbmFibGVf
YWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlcikpIHsKKyAgICAgICAgICFidW5kbGUgJiYgY3J5
cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlcikpIHsK
ICAgICAgIHJldHVybiBDcmVhdGVDcnlwdG9QYXJhbXMoY3J5cHRvLnRhZywgY3J5cHRvLmNpcGhl
cl9zdWl0ZSwgY3J5cHRvX291dCk7CiAgICAgfQogICB9CkBAIC0zMDksNyArMzEyLDggQEAgdm9p
ZCBGaWx0ZXJEYXRhQ29kZWNzKHN0ZDo6dmVjdG9yPERhdGFDb2RlYz4qIGNvZGVjcywgYm9vbCBz
Y3RwKSB7CiAgICAgICBzY3RwID8ga0dvb2dsZVJ0cERhdGFDb2RlY05hbWUgOiBrR29vZ2xlU2N0
cERhdGFDb2RlY05hbWU7CiAgIGNvZGVjcy0+ZXJhc2Uoc3RkOjpyZW1vdmVfaWYoY29kZWNzLT5i
ZWdpbigpLCBjb2RlY3MtPmVuZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsm
Y29kZWNfbmFtZV0oY29uc3QgRGF0YUNvZGVjJiBjb2RlYykgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIENvZGVjTmFtZXNFcShjb2RlYy5uYW1lLCBjb2RlY19uYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhYnNsOjpFcXVhbHNJ
Z25vcmVDYXNlKGNvZGVjLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY19uYW1lKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICBjb2RlY3MtPmVuZCgpKTsKIH0K
QEAgLTY1MCw3ICs2NTQsNyBAQCBzdGF0aWMgYm9vbCBDb250YWluc1J0eENvZGVjKGNvbnN0IHN0
ZDo6dmVjdG9yPEM+JiBjb2RlY3MpIHsKIAogdGVtcGxhdGUgPGNsYXNzIEM+CiBzdGF0aWMgYm9v
bCBJc1J0eENvZGVjKGNvbnN0IEMmIGNvZGVjKSB7Ci0gIHJldHVybiBTVFJfQ0FTRV9DTVAoY29k
ZWMubmFtZS5jX3N0cigpLCBrUnR4Q29kZWNOYW1lKSA9PSAwOworICByZXR1cm4gYWJzbDo6RXF1
YWxzSWdub3JlQ2FzZShjb2RlYy5uYW1lLCBrUnR4Q29kZWNOYW1lKTsKIH0KIAogdGVtcGxhdGUg
PGNsYXNzIEM+CkBAIC02NjUsNyArNjY5LDcgQEAgc3RhdGljIGJvb2wgQ29udGFpbnNGbGV4ZmVj
Q29kZWMoY29uc3Qgc3RkOjp2ZWN0b3I8Qz4mIGNvZGVjcykgewogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
Qz4KIHN0YXRpYyBib29sIElzRmxleGZlY0NvZGVjKGNvbnN0IEMmIGNvZGVjKSB7Ci0gIHJldHVy
biBTVFJfQ0FTRV9DTVAoY29kZWMubmFtZS5jX3N0cigpLCBrRmxleGZlY0NvZGVjTmFtZSkgPT0g
MDsKKyAgcmV0dXJuIGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMubmFtZSwga0ZsZXhmZWND
b2RlY05hbWUpOwogfQogCiAvLyBDcmVhdGUgYSBtZWRpYSBjb250ZW50IHRvIGJlIG9mZmVyZWQg
Zm9yIHRoZSBnaXZlbiB8c2VuZGVyX29wdGlvbnN8LApAQCAtNzQzLDcgKzc0Nyw3IEBAIHN0YXRp
YyB2b2lkIE5lZ290aWF0ZUNvZGVjcyhjb25zdCBzdGQ6OnZlY3RvcjxDPiYgbG9jYWxfY29kZWNz
LAogICAgICAgICBSVENfRENIRUNLKGFwdF9pdCAhPSB0aGVpcnMucGFyYW1zLmVuZCgpKTsKICAg
ICAgICAgbmVnb3RpYXRlZC5TZXRQYXJhbShrQ29kZWNQYXJhbUFzc29jaWF0ZWRQYXlsb2FkVHlw
ZSwgYXB0X2l0LT5zZWNvbmQpOwogICAgICAgfQotICAgICAgaWYgKENvZGVjTmFtZXNFcShvdXJz
Lm5hbWUuY19zdHIoKSwga0gyNjRDb2RlY05hbWUpKSB7CisgICAgICBpZiAoYWJzbDo6RXF1YWxz
SWdub3JlQ2FzZShvdXJzLm5hbWUsIGtIMjY0Q29kZWNOYW1lKSkgewogICAgICAgICB3ZWJydGM6
OkgyNjQ6OkdlbmVyYXRlUHJvZmlsZUxldmVsSWRGb3JBbnN3ZXIoCiAgICAgICAgICAgICBvdXJz
LnBhcmFtcywgdGhlaXJzLnBhcmFtcywgJm5lZ290aWF0ZWQucGFyYW1zKTsKICAgICAgIH0KQEAg
LTEwMzgsOSArMTA0Miw4IEBAIHN0YXRpYyB2b2lkIE5lZ290aWF0ZVJ0cEhlYWRlckV4dGVuc2lv
bnMoCiBzdGF0aWMgdm9pZCBTdHJpcENOQ29kZWNzKEF1ZGlvQ29kZWNzKiBhdWRpb19jb2RlY3Mp
IHsKICAgYXVkaW9fY29kZWNzLT5lcmFzZShzdGQ6OnJlbW92ZV9pZihhdWRpb19jb2RlY3MtPmJl
Z2luKCksIGF1ZGlvX2NvZGVjcy0+ZW5kKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW10oY29uc3QgQXVkaW9Db2RlYyYgY29kZWMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTVFJfQ0FTRV9DTVAoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjLm5hbWUuY19zdHIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvbWZv
cnROb2lzZUNvZGVjTmFtZSkgPT0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjLm5hbWUsIGtDb21mb3J0Tm9pc2VDb2RlY05h
bWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAg
ICAgICAgICAgICAgIGF1ZGlvX2NvZGVjcy0+ZW5kKCkpOwogfQpAQCAtMTA2OSw2ICsxMDcyLDgg
QEAgc3RhdGljIGJvb2wgQ3JlYXRlTWVkaWFDb250ZW50QW5zd2VyKAogICBOZWdvdGlhdGVDb2Rl
Y3MobG9jYWxfY29kZWNzLCBvZmZlci0+Y29kZWNzKCksICZuZWdvdGlhdGVkX2NvZGVjcyk7CiAg
IGFuc3dlci0+QWRkQ29kZWNzKG5lZ290aWF0ZWRfY29kZWNzKTsKICAgYW5zd2VyLT5zZXRfcHJv
dG9jb2wob2ZmZXItPnByb3RvY29sKCkpOworCisgIGFuc3dlci0+c2V0X2V4dG1hcF9hbGxvd19t
aXhlZF9lbnVtKG9mZmVyLT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKICAgUnRwSGVhZGVy
RXh0ZW5zaW9ucyBuZWdvdGlhdGVkX3J0cF9leHRlbnNpb25zOwogICBOZWdvdGlhdGVSdHBIZWFk
ZXJFeHRlbnNpb25zKAogICAgICAgbG9jYWxfcnRwX2V4dGVuc3Rpb25zLCBvZmZlci0+cnRwX2hl
YWRlcl9leHRlbnNpb25zKCksCkBAIC0xMjYyLDYgKzEyNjcsOCBAQCBTZXNzaW9uRGVzY3JpcHRp
b24qIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlT2ZmZXIoCiAgICAgY29u
c3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uKSBjb25zdCB7CiAgIHN0
ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+IG9mZmVyKG5ldyBTZXNzaW9uRGVzY3Jp
cHRpb24oKSk7CiAKKyAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciBpY2VfY3JlZGVudGlhbHMoCisg
ICAgICBzZXNzaW9uX29wdGlvbnMucG9vbGVkX2ljZV9jcmVkZW50aWFscyk7CiAgIFN0cmVhbVBh
cmFtc1ZlYyBjdXJyZW50X3N0cmVhbXM7CiAgIEdldEN1cnJlbnRTdHJlYW1QYXJhbXMoY3VycmVu
dF9kZXNjcmlwdGlvbiwgJmN1cnJlbnRfc3RyZWFtcyk7CiAKQEAgLTEzMDUsMTggKzEzMTIsMTgg
QEAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkNy
ZWF0ZU9mZmVyKAogICAgIH0KICAgICBzd2l0Y2ggKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMu
dHlwZSkgewogICAgICAgY2FzZSBNRURJQV9UWVBFX0FVRElPOgotICAgICAgICBpZiAoIUFkZEF1
ZGlvQ29udGVudEZvck9mZmVyKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25fb3B0
aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2NvbnRl
bnQsIGN1cnJlbnRfZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXVkaW9fcnRwX2V4dGVuc2lvbnMsIG9mZmVyX2F1ZGlvX2NvZGVjcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VycmVudF9zdHJlYW1zLCBvZmZlci5nZXQo
KSkpIHsKKyAgICAgICAgaWYgKCFBZGRBdWRpb0NvbnRlbnRGb3JPZmZlcigKKyAgICAgICAgICAg
ICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLCBzZXNzaW9uX29wdGlvbnMsIGN1cnJlbnRf
Y29udGVudCwKKyAgICAgICAgICAgICAgICBjdXJyZW50X2Rlc2NyaXB0aW9uLCBhdWRpb19ydHBf
ZXh0ZW5zaW9ucywgb2ZmZXJfYXVkaW9fY29kZWNzLAorICAgICAgICAgICAgICAgICZjdXJyZW50
X3N0cmVhbXMsIG9mZmVyLmdldCgpLCAmaWNlX2NyZWRlbnRpYWxzKSkgewogICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBNRURJ
QV9UWVBFX1ZJREVPOgotICAgICAgICBpZiAoIUFkZFZpZGVvQ29udGVudEZvck9mZmVyKG1lZGlh
X2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25fb3B0aW9ucywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2NvbnRlbnQsIGN1cnJlbnRfZGVzY3JpcHRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9fcnRwX2V4dGVuc2lv
bnMsIG9mZmVyX3ZpZGVvX2NvZGVjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmY3VycmVudF9zdHJlYW1zLCBvZmZlci5nZXQoKSkpIHsKKyAgICAgICAgaWYgKCFBZGRW
aWRlb0NvbnRlbnRGb3JPZmZlcigKKyAgICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9v
cHRpb25zLCBzZXNzaW9uX29wdGlvbnMsIGN1cnJlbnRfY29udGVudCwKKyAgICAgICAgICAgICAg
ICBjdXJyZW50X2Rlc2NyaXB0aW9uLCB2aWRlb19ydHBfZXh0ZW5zaW9ucywgb2ZmZXJfdmlkZW9f
Y29kZWNzLAorICAgICAgICAgICAgICAgICZjdXJyZW50X3N0cmVhbXMsIG9mZmVyLmdldCgpLCAm
aWNlX2NyZWRlbnRpYWxzKSkgewogICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwpAQCAtMTMyNCw3ICsxMzMxLDcgQEAgU2Vzc2lvbkRlc2NyaXB0aW9u
KiBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkNyZWF0ZU9mZmVyKAogICAgICAgICBp
ZiAoIUFkZERhdGFDb250ZW50Rm9yT2ZmZXIobWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucywgc2Vz
c2lvbl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVu
dF9jb250ZW50LCBjdXJyZW50X2Rlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2ZmZXJfZGF0YV9jb2RlY3MsICZjdXJyZW50X3N0cmVhbXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZlci5nZXQoKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyLmdldCgpLCAmaWNlX2NyZWRlbnRpYWxzKSkg
ewogICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpA
QCAtMTM3MSw2ICsxMzc4LDggQEAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBNZWRpYVNlc3Npb25EZXNj
cmlwdGlvbkZhY3Rvcnk6OkNyZWF0ZU9mZmVyKAogICAgIG9mZmVyLT5zZXRfbXNpZF9zaWduYWxp
bmcoY3JpY2tldDo6a01zaWRTaWduYWxpbmdTc3JjQXR0cmlidXRlKTsKICAgfQogCisgIG9mZmVy
LT5zZXRfZXh0bWFwX2FsbG93X21peGVkKHNlc3Npb25fb3B0aW9ucy5vZmZlcl9leHRtYXBfYWxs
b3dfbWl4ZWQpOworCiAgIHJldHVybiBvZmZlci5yZWxlYXNlKCk7CiB9CiAKQEAgLTEzODEsNiAr
MTM5MCwxMCBAQCBTZXNzaW9uRGVzY3JpcHRpb24qIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFj
dG9yeTo6Q3JlYXRlQW5zd2VyKAogICBpZiAoIW9mZmVyKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiAgIH0KKworICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yIGljZV9jcmVkZW50aWFscygKKyAgICAg
IHNlc3Npb25fb3B0aW9ucy5wb29sZWRfaWNlX2NyZWRlbnRpYWxzKTsKKwogICAvLyBUaGUgYW5z
d2VyIGNvbnRhaW5zIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIGNvZGVjcyBpbiB0aGUgb2ZmZXIg
d2l0aCB0aGUKICAgLy8gY29kZWNzIHdlIHN1cHBvcnQuIEFzIGluZGljYXRlZCBieSBYRVAtMDE2
Nywgd2UgcmV0YWluIHRoZSBzYW1lIHBheWxvYWQgaWRzCiAgIC8vIGZyb20gdGhlIG9mZmVyIGlu
IHRoZSBhbnN3ZXIuCkBAIC0xMzk2LDYgKzE0MDksOCBAQCBTZXNzaW9uRGVzY3JpcHRpb24qIE1l
ZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlQW5zd2VyKAogICAvLyBUcmFuc3Bv
cnQgaW5mbyBzaGFyZWQgYnkgdGhlIGJ1bmRsZSBncm91cC4KICAgc3RkOjp1bmlxdWVfcHRyPFRy
YW5zcG9ydEluZm8+IGJ1bmRsZV90cmFuc3BvcnQ7CiAKKyAgYW5zd2VyLT5zZXRfZXh0bWFwX2Fs
bG93X21peGVkKG9mZmVyLT5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7CisKICAgLy8gR2V0IGxpc3Qg
b2YgYWxsIHBvc3NpYmxlIGNvZGVjcyB0aGF0IHJlc3BlY3RzIGV4aXN0aW5nIHBheWxvYWQgdHlw
ZQogICAvLyBtYXBwaW5ncyBhbmQgdXNlcyBhIHNpbmdsZSBwYXlsb2FkIHR5cGUgc3BhY2UuCiAg
IC8vCkBAIC0xNDQwLDcgKzE0NTUsNyBAQCBTZXNzaW9uRGVzY3JpcHRpb24qIE1lZGlhU2Vzc2lv
bkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlQW5zd2VyKAogICAgICAgICAgICAgICAgIG1lZGlh
X2Rlc2NyaXB0aW9uX29wdGlvbnMsIHNlc3Npb25fb3B0aW9ucywgb2ZmZXJfY29udGVudCwKICAg
ICAgICAgICAgICAgICBvZmZlciwgY3VycmVudF9jb250ZW50LCBjdXJyZW50X2Rlc2NyaXB0aW9u
LAogICAgICAgICAgICAgICAgIGJ1bmRsZV90cmFuc3BvcnQuZ2V0KCksIGFuc3dlcl9hdWRpb19j
b2RlY3MsICZjdXJyZW50X3N0cmVhbXMsCi0gICAgICAgICAgICAgICAgYW5zd2VyLmdldCgpKSkg
eworICAgICAgICAgICAgICAgIGFuc3dlci5nZXQoKSwgJmljZV9jcmVkZW50aWFscykpIHsKICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTE0
NDksMTYgKzE0NjQsMTYgQEAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBNZWRpYVNlc3Npb25EZXNjcmlw
dGlvbkZhY3Rvcnk6OkNyZWF0ZUFuc3dlcigKICAgICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlw
dGlvbl9vcHRpb25zLCBzZXNzaW9uX29wdGlvbnMsIG9mZmVyX2NvbnRlbnQsCiAgICAgICAgICAg
ICAgICAgb2ZmZXIsIGN1cnJlbnRfY29udGVudCwgY3VycmVudF9kZXNjcmlwdGlvbiwKICAgICAg
ICAgICAgICAgICBidW5kbGVfdHJhbnNwb3J0LmdldCgpLCBhbnN3ZXJfdmlkZW9fY29kZWNzLCAm
Y3VycmVudF9zdHJlYW1zLAotICAgICAgICAgICAgICAgIGFuc3dlci5nZXQoKSkpIHsKKyAgICAg
ICAgICAgICAgICBhbnN3ZXIuZ2V0KCksICZpY2VfY3JlZGVudGlhbHMpKSB7CiAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIE1F
RElBX1RZUEVfREFUQToKLSAgICAgICAgaWYgKCFBZGREYXRhQ29udGVudEZvckFuc3dlcihtZWRp
YV9kZXNjcmlwdGlvbl9vcHRpb25zLCBzZXNzaW9uX29wdGlvbnMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2ZmZXJfY29udGVudCwgb2ZmZXIsIGN1cnJlbnRfY29udGVu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Rlc2NyaXB0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZV90cmFuc3Bv
cnQuZ2V0KCksIGFuc3dlcl9kYXRhX2NvZGVjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmY3VycmVudF9zdHJlYW1zLCBhbnN3ZXIuZ2V0KCkpKSB7CisgICAgICAgIGlm
ICghQWRkRGF0YUNvbnRlbnRGb3JBbnN3ZXIoCisgICAgICAgICAgICAgICAgbWVkaWFfZGVzY3Jp
cHRpb25fb3B0aW9ucywgc2Vzc2lvbl9vcHRpb25zLCBvZmZlcl9jb250ZW50LAorICAgICAgICAg
ICAgICAgIG9mZmVyLCBjdXJyZW50X2NvbnRlbnQsIGN1cnJlbnRfZGVzY3JpcHRpb24sCisgICAg
ICAgICAgICAgICAgYnVuZGxlX3RyYW5zcG9ydC5nZXQoKSwgYW5zd2VyX2RhdGFfY29kZWNzLCAm
Y3VycmVudF9zdHJlYW1zLAorICAgICAgICAgICAgICAgIGFuc3dlci5nZXQoKSwgJmljZV9jcmVk
ZW50aWFscykpIHsKICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKQEAgLTE3NjUsMTMgKzE3ODAsMTUgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlw
dGlvbkZhY3Rvcnk6OkFkZFRyYW5zcG9ydE9mZmVyKAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBj
b250ZW50X25hbWUsCiAgICAgY29uc3QgVHJhbnNwb3J0T3B0aW9ucyYgdHJhbnNwb3J0X29wdGlv
bnMsCiAgICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2MsCi0gICAgU2Vz
c2lvbkRlc2NyaXB0aW9uKiBvZmZlcl9kZXNjKSBjb25zdCB7CisgICAgU2Vzc2lvbkRlc2NyaXB0
aW9uKiBvZmZlcl9kZXNjLAorICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50
aWFscykgY29uc3QgewogICBpZiAoIXRyYW5zcG9ydF9kZXNjX2ZhY3RvcnlfKQogICAgIHJldHVy
biBmYWxzZTsKICAgY29uc3QgVHJhbnNwb3J0RGVzY3JpcHRpb24qIGN1cnJlbnRfdGRlc2MgPQog
ICAgICAgR2V0VHJhbnNwb3J0RGVzY3JpcHRpb24oY29udGVudF9uYW1lLCBjdXJyZW50X2Rlc2Mp
OwogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG5ld190ZGVzYygKLSAg
ICAgIHRyYW5zcG9ydF9kZXNjX2ZhY3RvcnlfLT5DcmVhdGVPZmZlcih0cmFuc3BvcnRfb3B0aW9u
cywgY3VycmVudF90ZGVzYykpOworICAgICAgdHJhbnNwb3J0X2Rlc2NfZmFjdG9yeV8tPkNyZWF0
ZU9mZmVyKHRyYW5zcG9ydF9vcHRpb25zLCBjdXJyZW50X3RkZXNjLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljZV9jcmVkZW50aWFscykpOwogICBib29sIHJl
dCA9CiAgICAgICAobmV3X3RkZXNjLmdldCgpICE9IE5VTEwgJiYKICAgICAgICBvZmZlcl9kZXNj
LT5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8oY29udGVudF9uYW1lLCAqbmV3X3RkZXNj
KSkpOwpAQCAtMTc4Nyw3ICsxODA0LDggQEAgVHJhbnNwb3J0RGVzY3JpcHRpb24qIE1lZGlhU2Vz
c2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlVHJhbnNwb3J0QW5zd2VyKAogICAgIGNvbnN0
IFNlc3Npb25EZXNjcmlwdGlvbiogb2ZmZXJfZGVzYywKICAgICBjb25zdCBUcmFuc3BvcnRPcHRp
b25zJiB0cmFuc3BvcnRfb3B0aW9ucywKICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1
cnJlbnRfZGVzYywKLSAgICBib29sIHJlcXVpcmVfdHJhbnNwb3J0X2F0dHJpYnV0ZXMpIGNvbnN0
IHsKKyAgICBib29sIHJlcXVpcmVfdHJhbnNwb3J0X2F0dHJpYnV0ZXMsCisgICAgSWNlQ3JlZGVu
dGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIGlmICghdHJhbnNwb3J0
X2Rlc2NfZmFjdG9yeV8pCiAgICAgcmV0dXJuIE5VTEw7CiAgIGNvbnN0IFRyYW5zcG9ydERlc2Ny
aXB0aW9uKiBvZmZlcl90ZGVzYyA9CkBAIC0xNzk2LDcgKzE4MTQsNyBAQCBUcmFuc3BvcnREZXNj
cmlwdGlvbiogTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVUcmFuc3BvcnRB
bnN3ZXIoCiAgICAgICBHZXRUcmFuc3BvcnREZXNjcmlwdGlvbihjb250ZW50X25hbWUsIGN1cnJl
bnRfZGVzYyk7CiAgIHJldHVybiB0cmFuc3BvcnRfZGVzY19mYWN0b3J5Xy0+Q3JlYXRlQW5zd2Vy
KG9mZmVyX3RkZXNjLCB0cmFuc3BvcnRfb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZV90cmFuc3BvcnRfYXR0cmlidXRlcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF90ZGVz
Yyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRfdGRlc2MsIGljZV9jcmVkZW50aWFscyk7CiB9CiAKIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3Jp
cHRpb25GYWN0b3J5OjpBZGRUcmFuc3BvcnRBbnN3ZXIoCkBAIC0xODMyLDcgKzE4NTAsOCBAQCBi
b29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6QWRkQXVkaW9Db250ZW50Rm9yT2Zm
ZXIoCiAgICAgY29uc3QgUnRwSGVhZGVyRXh0ZW5zaW9ucyYgYXVkaW9fcnRwX2V4dGVuc2lvbnMs
CiAgICAgY29uc3QgQXVkaW9Db2RlY3MmIGF1ZGlvX2NvZGVjcywKICAgICBTdHJlYW1QYXJhbXNW
ZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MpIGNvbnN0
IHsKKyAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MsCisgICAgSWNlQ3JlZGVudGlhbHNJdGVy
YXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIC8vIEZpbHRlciBhdWRpb19jb2RlY3Mg
KHdoaWNoIGluY2x1ZGVzIGFsbCBjb2RlY3MsIHdpdGggY29ycmVjdGx5IHJlbWFwcGVkCiAgIC8v
IHBheWxvYWQgdHlwZXMpIGJhc2VkIG9uIHRyYW5zY2VpdmVyIGRpcmVjdGlvbi4KICAgY29uc3Qg
QXVkaW9Db2RlY3MmIHN1cHBvcnRlZF9hdWRpb19jb2RlY3MgPQpAQCAtMTg4OCw3ICsxOTA3LDcg
QEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZEF1ZGlvQ29udGVudEZv
ck9mZmVyKAogICAgICAgICAgICAgICAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMuc3Rv
cHBlZCwgYXVkaW8ucmVsZWFzZSgpKTsKICAgaWYgKCFBZGRUcmFuc3BvcnRPZmZlcihtZWRpYV9k
ZXNjcmlwdGlvbl9vcHRpb25zLm1pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYV9k
ZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5zcG9ydF9vcHRpb25zLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRfZGVzY3JpcHRpb24sIGRlc2MpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgY3VycmVudF9kZXNjcmlwdGlvbiwgZGVzYywgaWNlX2NyZWRlbnRpYWxzKSkgewogICAg
IHJldHVybiBmYWxzZTsKICAgfQogCkBAIC0xOTAzLDcgKzE5MjIsOCBAQCBib29sIE1lZGlhU2Vz
c2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6QWRkVmlkZW9Db250ZW50Rm9yT2ZmZXIoCiAgICAgY29u
c3QgUnRwSGVhZGVyRXh0ZW5zaW9ucyYgdmlkZW9fcnRwX2V4dGVuc2lvbnMsCiAgICAgY29uc3Qg
VmlkZW9Db2RlY3MmIHZpZGVvX2NvZGVjcywKICAgICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRf
c3RyZWFtcywKLSAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MpIGNvbnN0IHsKKyAgICBTZXNz
aW9uRGVzY3JpcHRpb24qIGRlc2MsCisgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2Ny
ZWRlbnRpYWxzKSBjb25zdCB7CiAgIGNyaWNrZXQ6OlNlY3VyZVBvbGljeSBzZGVzX3BvbGljeSA9
CiAgICAgICBJc0R0bHNBY3RpdmUoY3VycmVudF9jb250ZW50LCBjdXJyZW50X2Rlc2NyaXB0aW9u
KSA/IGNyaWNrZXQ6OlNFQ19ESVNBQkxFRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWN1cmUoKTsKQEAgLTE5NTcsNyArMTk3Nyw3
IEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpBZGRWaWRlb0NvbnRlbnRG
b3JPZmZlcigKICAgICAgICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnN0
b3BwZWQsIHZpZGVvLnJlbGVhc2UoKSk7CiAgIGlmICghQWRkVHJhbnNwb3J0T2ZmZXIobWVkaWFf
ZGVzY3JpcHRpb25fb3B0aW9ucy5taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFf
ZGVzY3JpcHRpb25fb3B0aW9ucy50cmFuc3BvcnRfb3B0aW9ucywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBjdXJyZW50X2Rlc2NyaXB0aW9uLCBkZXNjKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRfZGVzY3JpcHRpb24sIGRlc2MsIGljZV9jcmVkZW50aWFscykpIHsKICAg
ICByZXR1cm4gZmFsc2U7CiAgIH0KICAgcmV0dXJuIHRydWU7CkBAIC0xOTcwLDcgKzE5OTAsOCBA
QCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6QWRkRGF0YUNvbnRlbnRGb3JP
ZmZlcigKICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24s
CiAgICAgY29uc3QgRGF0YUNvZGVjcyYgZGF0YV9jb2RlY3MsCiAgICAgU3RyZWFtUGFyYW1zVmVj
KiBjdXJyZW50X3N0cmVhbXMsCi0gICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjKSBjb25zdCB7
CisgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjLAorICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0
b3IqIGljZV9jcmVkZW50aWFscykgY29uc3QgewogICBib29sIHNlY3VyZV90cmFuc3BvcnQgPSAo
dHJhbnNwb3J0X2Rlc2NfZmFjdG9yeV8tPnNlY3VyZSgpICE9IFNFQ19ESVNBQkxFRCk7CiAKICAg
c3RkOjp1bmlxdWVfcHRyPERhdGFDb250ZW50RGVzY3JpcHRpb24+IGRhdGEobmV3IERhdGFDb250
ZW50RGVzY3JpcHRpb24oKSk7CkBAIC0yMDI0LDcgKzIwNDUsNyBAQCBib29sIE1lZGlhU2Vzc2lv
bkRlc2NyaXB0aW9uRmFjdG9yeTo6QWRkRGF0YUNvbnRlbnRGb3JPZmZlcigKICAgfQogICBpZiAo
IUFkZFRyYW5zcG9ydE9mZmVyKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMudHJhbnNwb3J0X29w
dGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9kZXNjcmlwdGlvbiwgZGVz
YykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Rlc2NyaXB0aW9uLCBkZXNj
LCBpY2VfY3JlZGVudGlhbHMpKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIHJldHVybiB0
cnVlOwpAQCAtMjA1MiwxNSArMjA3MywxNiBAQCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9u
RmFjdG9yeTo6QWRkQXVkaW9Db250ZW50Rm9yQW5zd2VyKAogICAgIGNvbnN0IFRyYW5zcG9ydElu
Zm8qIGJ1bmRsZV90cmFuc3BvcnQsCiAgICAgY29uc3QgQXVkaW9Db2RlY3MmIGF1ZGlvX2NvZGVj
cywKICAgICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAgICBTZXNzaW9uRGVz
Y3JpcHRpb24qIGFuc3dlcikgY29uc3QgeworICAgIFNlc3Npb25EZXNjcmlwdGlvbiogYW5zd2Vy
LAorICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3Qgewog
ICBSVENfQ0hFQ0soSXNNZWRpYUNvbnRlbnRPZlR5cGUob2ZmZXJfY29udGVudCwgTUVESUFfVFlQ
RV9BVURJTykpOwogICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogb2ZmZXJfYXVkaW9f
ZGVzY3JpcHRpb24gPQogICAgICAgb2ZmZXJfY29udGVudC0+bWVkaWFfZGVzY3JpcHRpb24oKS0+
YXNfYXVkaW8oKTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IGF1
ZGlvX3RyYW5zcG9ydCgKLSAgICAgIENyZWF0ZVRyYW5zcG9ydEFuc3dlcihtZWRpYV9kZXNjcmlw
dGlvbl9vcHRpb25zLm1pZCwgb2ZmZXJfZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy50cmFuc3BvcnRfb3B0aW9ucywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Rlc2NyaXB0aW9uLCBidW5kbGVfdHJh
bnNwb3J0ICE9IG51bGxwdHIpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0
aW9uPiBhdWRpb190cmFuc3BvcnQoQ3JlYXRlVHJhbnNwb3J0QW5zd2VyKAorICAgICAgbWVkaWFf
ZGVzY3JpcHRpb25fb3B0aW9ucy5taWQsIG9mZmVyX2Rlc2NyaXB0aW9uLAorICAgICAgbWVkaWFf
ZGVzY3JpcHRpb25fb3B0aW9ucy50cmFuc3BvcnRfb3B0aW9ucywgY3VycmVudF9kZXNjcmlwdGlv
biwKKyAgICAgIGJ1bmRsZV90cmFuc3BvcnQgIT0gbnVsbHB0ciwgaWNlX2NyZWRlbnRpYWxzKSk7
CiAgIGlmICghYXVkaW9fdHJhbnNwb3J0KSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CkBAIC0y
MTQ2LDE1ICsyMTY4LDE2IEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpB
ZGRWaWRlb0NvbnRlbnRGb3JBbnN3ZXIoCiAgICAgY29uc3QgVHJhbnNwb3J0SW5mbyogYnVuZGxl
X3RyYW5zcG9ydCwKICAgICBjb25zdCBWaWRlb0NvZGVjcyYgdmlkZW9fY29kZWNzLAogICAgIFN0
cmVhbVBhcmFtc1ZlYyogY3VycmVudF9zdHJlYW1zLAotICAgIFNlc3Npb25EZXNjcmlwdGlvbiog
YW5zd2VyKSBjb25zdCB7CisgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBhbnN3ZXIsCisgICAgSWNl
Q3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdCB7CiAgIFJUQ19DSEVD
SyhJc01lZGlhQ29udGVudE9mVHlwZShvZmZlcl9jb250ZW50LCBNRURJQV9UWVBFX1ZJREVPKSk7
CiAgIGNvbnN0IFZpZGVvQ29udGVudERlc2NyaXB0aW9uKiBvZmZlcl92aWRlb19kZXNjcmlwdGlv
biA9CiAgICAgICBvZmZlcl9jb250ZW50LT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc192aWRlbygp
OwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc3BvcnREZXNjcmlwdGlvbj4gdmlkZW9fdHJhbnNw
b3J0KAotICAgICAgQ3JlYXRlVHJhbnNwb3J0QW5zd2VyKG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlv
bnMubWlkLCBvZmZlcl9kZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5zcG9ydF9vcHRpb25zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRfZGVzY3JpcHRpb24sIGJ1bmRsZV90cmFuc3BvcnQgIT0g
bnVsbHB0cikpOworICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IHZpZGVv
X3RyYW5zcG9ydChDcmVhdGVUcmFuc3BvcnRBbnN3ZXIoCisgICAgICBtZWRpYV9kZXNjcmlwdGlv
bl9vcHRpb25zLm1pZCwgb2ZmZXJfZGVzY3JpcHRpb24sCisgICAgICBtZWRpYV9kZXNjcmlwdGlv
bl9vcHRpb25zLnRyYW5zcG9ydF9vcHRpb25zLCBjdXJyZW50X2Rlc2NyaXB0aW9uLAorICAgICAg
YnVuZGxlX3RyYW5zcG9ydCAhPSBudWxscHRyLCBpY2VfY3JlZGVudGlhbHMpKTsKICAgaWYgKCF2
aWRlb190cmFuc3BvcnQpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KQEAgLTIyMzIsMTEgKzIy
NTUsMTIgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZERhdGFDb250
ZW50Rm9yQW5zd2VyKAogICAgIGNvbnN0IFRyYW5zcG9ydEluZm8qIGJ1bmRsZV90cmFuc3BvcnQs
CiAgICAgY29uc3QgRGF0YUNvZGVjcyYgZGF0YV9jb2RlY3MsCiAgICAgU3RyZWFtUGFyYW1zVmVj
KiBjdXJyZW50X3N0cmVhbXMsCi0gICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBhbnN3ZXIpIGNvbnN0
IHsKLSAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydERlc2NyaXB0aW9uPiBkYXRhX3RyYW5zcG9y
dCgKLSAgICAgIENyZWF0ZVRyYW5zcG9ydEFuc3dlcihtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25z
Lm1pZCwgb2ZmZXJfZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVk
aWFfZGVzY3JpcHRpb25fb3B0aW9ucy50cmFuc3BvcnRfb3B0aW9ucywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50X2Rlc2NyaXB0aW9uLCBidW5kbGVfdHJhbnNwb3J0ICE9IG51
bGxwdHIpKTsKKyAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGFuc3dlciwKKyAgICBJY2VDcmVkZW50
aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0IHsKKyAgc3RkOjp1bmlxdWVfcHRy
PFRyYW5zcG9ydERlc2NyaXB0aW9uPiBkYXRhX3RyYW5zcG9ydChDcmVhdGVUcmFuc3BvcnRBbnN3
ZXIoCisgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLm1pZCwgb2ZmZXJfZGVzY3JpcHRp
b24sCisgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnRyYW5zcG9ydF9vcHRpb25zLCBj
dXJyZW50X2Rlc2NyaXB0aW9uLAorICAgICAgYnVuZGxlX3RyYW5zcG9ydCAhPSBudWxscHRyLCBp
Y2VfY3JlZGVudGlhbHMpKTsKICAgaWYgKCFkYXRhX3RyYW5zcG9ydCkgewogICAgIHJldHVybiBm
YWxzZTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24uaAppbmRleCBiNDA5NzQwMzliODIwYTk2NWY1
N2Q1N2YzNWM2ODkwMjFjNDQ1NDMwLi41OTA0NjA1ZjEwYTRkYTI1ZmJkN2NkYzk1Y2ZiOTBmOTQ5
OTE0NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9tZWRpYXNlc3Npb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24uaApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1
ZGUgImFwaS9tZWRpYXR5cGVzLmgiCiAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50
cy5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFlbmdpbmUuaCIgIC8vIEZvciBEYXRhQ2hh
bm5lbFR5cGUKKyNpbmNsdWRlICJwMnAvYmFzZS9pY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAicDJwL2Jhc2UvdHJhbnNwb3J0ZGVzY3JpcHRpb25mYWN0b3J5LmgiCiAjaW5jbHVk
ZSAicGMvanNlcHRyYW5zcG9ydC5oIgogI2luY2x1ZGUgInBjL3Nlc3Npb25kZXNjcmlwdGlvbi5o
IgpAQCAtOTMsMTEgKzk0LDEzIEBAIHN0cnVjdCBNZWRpYVNlc3Npb25PcHRpb25zIHsKICAgYm9v
bCBydGNwX211eF9lbmFibGVkID0gdHJ1ZTsKICAgYm9vbCBidW5kbGVfZW5hYmxlZCA9IGZhbHNl
OwogICBib29sIGlzX3VuaWZpZWRfcGxhbiA9IGZhbHNlOworICBib29sIG9mZmVyX2V4dG1hcF9h
bGxvd19taXhlZCA9IGZhbHNlOwogICBzdGQ6OnN0cmluZyBydGNwX2NuYW1lID0ga0RlZmF1bHRS
dGNwQ25hbWU7Ci0gIHJ0Yzo6Q3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0aW9uczsKKyAgd2VicnRj
OjpDcnlwdG9PcHRpb25zIGNyeXB0b19vcHRpb25zOwogICAvLyBMaXN0IG9mIG1lZGlhIGRlc2Ny
aXB0aW9uIG9wdGlvbnMgaW4gdGhlIHNhbWUgb3JkZXIgdGhhdCB0aGUgbWVkaWEKICAgLy8gZGVz
Y3JpcHRpb25zIHdpbGwgYmUgZ2VuZXJhdGVkLgogICBzdGQ6OnZlY3RvcjxNZWRpYURlc2NyaXB0
aW9uT3B0aW9ucz4gbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9uczsKKyAgc3RkOjp2ZWN0b3I8SWNl
UGFyYW1ldGVycz4gcG9vbGVkX2ljZV9jcmVkZW50aWFsczsKIH07CiAKIC8vIENyZWF0ZXMgbWVk
aWEgc2Vzc2lvbiBkZXNjcmlwdGlvbnMgYWNjb3JkaW5nIHRvIHRoZSBzdXBwbGllZCBjb2RlY3Mg
YW5kCkBAIC0xODYsMTQgKzE4OSwxNiBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZh
Y3RvcnkgewogICBib29sIEFkZFRyYW5zcG9ydE9mZmVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250
ZW50X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNwb3J0T3B0aW9u
cyYgdHJhbnNwb3J0X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2Vz
c2lvbkRlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
U2Vzc2lvbkRlc2NyaXB0aW9uKiBvZmZlcikgY29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBvZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJ
Y2VDcmVkZW50aWFsc0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0OwogCiAgIFRyYW5z
cG9ydERlc2NyaXB0aW9uKiBDcmVhdGVUcmFuc3BvcnRBbnN3ZXIoCiAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgY29udGVudF9uYW1lLAogICAgICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBv
ZmZlcl9kZXNjLAogICAgICAgY29uc3QgVHJhbnNwb3J0T3B0aW9ucyYgdHJhbnNwb3J0X29wdGlv
bnMsCiAgICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzYywKLSAgICAg
IGJvb2wgcmVxdWlyZV90cmFuc3BvcnRfYXR0cmlidXRlcykgY29uc3Q7CisgICAgICBib29sIHJl
cXVpcmVfdHJhbnNwb3J0X2F0dHJpYnV0ZXMsCisgICAgICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9y
KiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0OwogCiAgIGJvb2wgQWRkVHJhbnNwb3J0QW5zd2VyKGNv
bnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRyYW5zcG9ydERlc2NyaXB0aW9uJiB0cmFuc3BvcnRfZGVzYywKQEAgLTIxMSw3ICsy
MTYsOCBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnkgewogICAgICAgY29u
c3QgUnRwSGVhZGVyRXh0ZW5zaW9ucyYgYXVkaW9fcnRwX2V4dGVuc2lvbnMsCiAgICAgICBjb25z
dCBBdWRpb0NvZGVjcyYgYXVkaW9fY29kZWNzLAogICAgICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJy
ZW50X3N0cmVhbXMsCi0gICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MpIGNvbnN0OworICAg
ICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjLAorICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRv
ciogaWNlX2NyZWRlbnRpYWxzKSBjb25zdDsKIAogICBib29sIEFkZFZpZGVvQ29udGVudEZvck9m
ZmVyKAogICAgICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvbk9wdGlvbnMmIG1lZGlhX2Rlc2NyaXB0
aW9uX29wdGlvbnMsCkBAIC0yMjEsNyArMjI3LDggQEAgY2xhc3MgTWVkaWFTZXNzaW9uRGVzY3Jp
cHRpb25GYWN0b3J5IHsKICAgICAgIGNvbnN0IFJ0cEhlYWRlckV4dGVuc2lvbnMmIHZpZGVvX3J0
cF9leHRlbnNpb25zLAogICAgICAgY29uc3QgVmlkZW9Db2RlY3MmIHZpZGVvX2NvZGVjcywKICAg
ICAgIFN0cmVhbVBhcmFtc1ZlYyogY3VycmVudF9zdHJlYW1zLAotICAgICAgU2Vzc2lvbkRlc2Ny
aXB0aW9uKiBkZXNjKSBjb25zdDsKKyAgICAgIFNlc3Npb25EZXNjcmlwdGlvbiogZGVzYywKKyAg
ICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3Q7CiAKICAg
Ym9vbCBBZGREYXRhQ29udGVudEZvck9mZmVyKAogICAgICAgY29uc3QgTWVkaWFEZXNjcmlwdGlv
bk9wdGlvbnMmIG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMsCkBAIC0yMzAsNyArMjM3LDggQEAg
Y2xhc3MgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5IHsKICAgICAgIGNvbnN0IFNlc3Np
b25EZXNjcmlwdGlvbiogY3VycmVudF9kZXNjcmlwdGlvbiwKICAgICAgIGNvbnN0IERhdGFDb2Rl
Y3MmIGRhdGFfY29kZWNzLAogICAgICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0cmVhbXMs
Ci0gICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2MpIGNvbnN0OworICAgICAgU2Vzc2lvbkRl
c2NyaXB0aW9uKiBkZXNjLAorICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRl
bnRpYWxzKSBjb25zdDsKIAogICBib29sIEFkZEF1ZGlvQ29udGVudEZvckFuc3dlcigKICAgICAg
IGNvbnN0IE1lZGlhRGVzY3JpcHRpb25PcHRpb25zJiBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25z
LApAQCAtMjQyLDcgKzI1MCw4IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9y
eSB7CiAgICAgICBjb25zdCBUcmFuc3BvcnRJbmZvKiBidW5kbGVfdHJhbnNwb3J0LAogICAgICAg
Y29uc3QgQXVkaW9Db2RlY3MmIGF1ZGlvX2NvZGVjcywKICAgICAgIFN0cmVhbVBhcmFtc1ZlYyog
Y3VycmVudF9zdHJlYW1zLAotICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBhbnN3ZXIpIGNvbnN0
OworICAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBhbnN3ZXIsCisgICAgICBJY2VDcmVkZW50aWFs
c0l0ZXJhdG9yKiBpY2VfY3JlZGVudGlhbHMpIGNvbnN0OwogCiAgIGJvb2wgQWRkVmlkZW9Db250
ZW50Rm9yQW5zd2VyKAogICAgICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvbk9wdGlvbnMmIG1lZGlh
X2Rlc2NyaXB0aW9uX29wdGlvbnMsCkBAIC0yNTQsNyArMjYzLDggQEAgY2xhc3MgTWVkaWFTZXNz
aW9uRGVzY3JpcHRpb25GYWN0b3J5IHsKICAgICAgIGNvbnN0IFRyYW5zcG9ydEluZm8qIGJ1bmRs
ZV90cmFuc3BvcnQsCiAgICAgICBjb25zdCBWaWRlb0NvZGVjcyYgdmlkZW9fY29kZWNzLAogICAg
ICAgU3RyZWFtUGFyYW1zVmVjKiBjdXJyZW50X3N0cmVhbXMsCi0gICAgICBTZXNzaW9uRGVzY3Jp
cHRpb24qIGFuc3dlcikgY29uc3Q7CisgICAgICBTZXNzaW9uRGVzY3JpcHRpb24qIGFuc3dlciwK
KyAgICAgIEljZUNyZWRlbnRpYWxzSXRlcmF0b3IqIGljZV9jcmVkZW50aWFscykgY29uc3Q7CiAK
ICAgYm9vbCBBZGREYXRhQ29udGVudEZvckFuc3dlcigKICAgICAgIGNvbnN0IE1lZGlhRGVzY3Jp
cHRpb25PcHRpb25zJiBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLApAQCAtMjY2LDcgKzI3Niw4
IEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeSB7CiAgICAgICBjb25zdCBU
cmFuc3BvcnRJbmZvKiBidW5kbGVfdHJhbnNwb3J0LAogICAgICAgY29uc3QgRGF0YUNvZGVjcyYg
ZGF0YV9jb2RlY3MsCiAgICAgICBTdHJlYW1QYXJhbXNWZWMqIGN1cnJlbnRfc3RyZWFtcywKLSAg
ICAgIFNlc3Npb25EZXNjcmlwdGlvbiogYW5zd2VyKSBjb25zdDsKKyAgICAgIFNlc3Npb25EZXNj
cmlwdGlvbiogYW5zd2VyLAorICAgICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciogaWNlX2NyZWRl
bnRpYWxzKSBjb25zdDsKIAogICB2b2lkIENvbXB1dGVBdWRpb0NvZGVjc0ludGVyc2VjdGlvbkFu
ZFVuaW9uKCk7CiAKQEAgLTMyNywyMCArMzM4LDIzIEBAIERhdGFDb250ZW50RGVzY3JpcHRpb24q
IEdldEZpcnN0RGF0YUNvbnRlbnREZXNjcmlwdGlvbigKICAgICBTZXNzaW9uRGVzY3JpcHRpb24q
IHNkZXNjKTsKIAogLy8gSGVscGVyIGZ1bmN0aW9ucyB0byByZXR1cm4gY3J5cHRvIHN1aXRlcyB1
c2VkIGZvciBTREVTLgotdm9pZCBHZXRTdXBwb3J0ZWRBdWRpb1NkZXNDcnlwdG9TdWl0ZXMoY29u
c3QgcnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0b19zdWl0ZXMpOwot
dm9pZCBHZXRTdXBwb3J0ZWRWaWRlb1NkZXNDcnlwdG9TdWl0ZXMoY29uc3QgcnRjOjpDcnlwdG9P
cHRpb25zJiBjcnlwdG9fb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0b19zdWl0ZXMpOwotdm9pZCBHZXRTdXBwb3J0
ZWREYXRhU2Rlc0NyeXB0b1N1aXRlcyhjb25zdCBydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19v
cHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rv
cjxpbnQ+KiBjcnlwdG9fc3VpdGVzKTsKK3ZvaWQgR2V0U3VwcG9ydGVkQXVkaW9TZGVzQ3J5cHRv
U3VpdGVzKAorICAgIGNvbnN0IHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMs
CisgICAgc3RkOjp2ZWN0b3I8aW50PiogY3J5cHRvX3N1aXRlcyk7Cit2b2lkIEdldFN1cHBvcnRl
ZFZpZGVvU2Rlc0NyeXB0b1N1aXRlcygKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMm
IGNyeXB0b19vcHRpb25zLAorICAgIHN0ZDo6dmVjdG9yPGludD4qIGNyeXB0b19zdWl0ZXMpOwor
dm9pZCBHZXRTdXBwb3J0ZWREYXRhU2Rlc0NyeXB0b1N1aXRlcygKKyAgICBjb25zdCB3ZWJydGM6
OkNyeXB0b09wdGlvbnMmIGNyeXB0b19vcHRpb25zLAorICAgIHN0ZDo6dmVjdG9yPGludD4qIGNy
eXB0b19zdWl0ZXMpOwogdm9pZCBHZXRTdXBwb3J0ZWRBdWRpb1NkZXNDcnlwdG9TdWl0ZU5hbWVz
KAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgY29u
c3Qgd2VicnRjOjpDcnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKICAgICBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4qIGNyeXB0b19zdWl0ZV9uYW1lcyk7CiB2b2lkIEdldFN1cHBvcnRlZFZp
ZGVvU2Rlc0NyeXB0b1N1aXRlTmFtZXMoCi0gICAgY29uc3QgcnRjOjpDcnlwdG9PcHRpb25zJiBj
cnlwdG9fb3B0aW9ucywKKyAgICBjb25zdCB3ZWJydGM6OkNyeXB0b09wdGlvbnMmIGNyeXB0b19v
cHRpb25zLAogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogY3J5cHRvX3N1aXRlX25hbWVz
KTsKIHZvaWQgR2V0U3VwcG9ydGVkRGF0YVNkZXNDcnlwdG9TdWl0ZU5hbWVzKAotICAgIGNvbnN0
IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMsCisgICAgY29uc3Qgd2VicnRjOjpD
cnlwdG9PcHRpb25zJiBjcnlwdG9fb3B0aW9ucywKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4qIGNyeXB0b19zdWl0ZV9uYW1lcyk7CiAKIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4g
bWVkaWEgc2VjdGlvbiBwcm90b2NvbCBpbmRpY2F0ZXMgdXNlIG9mIFJUUC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lv
bl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL21lZGlhc2Vzc2lvbl91bml0dGVzdC5jYwppbmRleCBkYjMyNWVkMmVmMTY3ZWJmOWIzYWRl
ODMyY2I0Y2NkYmY3ZjczYzE2Li4wNzZhZDEyYTViMzQ5ODBjMDBjMzEyMDk3NDlhMWViNTM2ZmMz
NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9tZWRpYXNlc3Npb25fdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3VuaXR0ZXN0LmNjCkBAIC0yNiwx
MCArMjYsMTEgQEAKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3NsYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3Ry
aW5nX2J1aWxkZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCiAKICNkZWZpbmUgQVNTRVJU
X0NSWVBUTyhjZCwgcywgY3MpICAgICAgXAogICBBU1NFUlRfRVEocywgY2QtPmNyeXB0b3MoKS5z
aXplKCkpOyBcCi0gIEFTU0VSVF9FUShzdGQ6OnN0cmluZyhjcyksIGNkLT5jcnlwdG9zKClbMF0u
Y2lwaGVyX3N1aXRlKQorICBBU1NFUlRfRVEoY3MsIGNkLT5jcnlwdG9zKClbMF0uY2lwaGVyX3N1
aXRlKQogCiB0eXBlZGVmIHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OkNhbmRpZGF0ZT4gQ2FuZGlkYXRl
czsKIApAQCAtNzEsNiArNzIsNyBAQCB1c2luZyBydGM6OkNTX0FFU19DTV8xMjhfSE1BQ19TSEEx
XzMyOwogdXNpbmcgcnRjOjpDU19BRVNfQ01fMTI4X0hNQUNfU0hBMV84MDsKIHVzaW5nIHJ0Yzo6
Q1NfQUVBRF9BRVNfMTI4X0dDTTsKIHVzaW5nIHJ0Yzo6Q1NfQUVBRF9BRVNfMjU2X0dDTTsKK3Vz
aW5nIHRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXk7CiB1c2luZyB3ZWJydGM6OlJ0cEV4dGVuc2lv
bjsKIHVzaW5nIHdlYnJ0Yzo6UnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247CiAKQEAgLTU0NSw3ICs1
NDcsNyBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewogICAgIEVYUEVDVF9UUlVFKENvbXBhcmVDcnlwdG9QYXJhbXMoYXVk
aW9fbWVkaWFfZGVzYy0+Y3J5cHRvcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmlkZW9fbWVkaWFfZGVzYy0+Y3J5cHRvcygpKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBh
dWRpb19tZWRpYV9kZXNjLT5jcnlwdG9zKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVEoc3RkOjpz
dHJpbmcoa0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpLAorICAgIEVYUEVDVF9FUShrRGVmYXVsdFNy
dHBDcnlwdG9TdWl0ZSwKICAgICAgICAgICAgICAgYXVkaW9fbWVkaWFfZGVzYy0+Y3J5cHRvcygp
WzBdLmNpcGhlcl9zdWl0ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhlIHNlbGVjdGVkIGNyeXB0byBp
cyBvbmUgZnJvbSB0aGUgcmVmZXJlbmNlIGF1ZGlvCkBAIC02MDksMTEgKzYxMSwxMSBAQCBjbGFz
cyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewogICB2b2lkIFRlc3RWaWRlb0djbUNpcGhlcihib29sIGdjbV9vZmZlciwgYm9vbCBnY21f
YW5zd2VyKSB7CiAgICAgTWVkaWFTZXNzaW9uT3B0aW9ucyBvZmZlcl9vcHRzOwogICAgIEFkZEF1
ZGlvVmlkZW9TZWN0aW9ucyhSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a1JlY3ZPbmx5LCAmb2Zm
ZXJfb3B0cyk7Ci0gICAgb2ZmZXJfb3B0cy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0
b19zdWl0ZXMgPSBnY21fb2ZmZXI7CisgICAgb2ZmZXJfb3B0cy5jcnlwdG9fb3B0aW9ucy5zcnRw
LmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IGdjbV9vZmZlcjsKIAogICAgIE1lZGlhU2Vzc2lv
bk9wdGlvbnMgYW5zd2VyX29wdHM7CiAgICAgQWRkQXVkaW9WaWRlb1NlY3Rpb25zKFJ0cFRyYW5z
Y2VpdmVyRGlyZWN0aW9uOjprUmVjdk9ubHksICZhbnN3ZXJfb3B0cyk7Ci0gICAgYW5zd2VyX29w
dHMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gZ2NtX2Fuc3dlcjsK
KyAgICBhbnN3ZXJfb3B0cy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1
aXRlcyA9IGdjbV9hbnN3ZXI7CiAKICAgICBmMV8uc2V0X3NlY3VyZShTRUNfRU5BQkxFRCk7CiAg
ICAgZjJfLnNldF9zZWN1cmUoU0VDX0VOQUJMRUQpOwpAQCAtNjMxLDcgKzYzMyw3IEBAIGNsYXNz
IE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiAgICAgY29uc3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGFjZCA9IGFjLT5tZWRpYV9k
ZXNjcmlwdGlvbigpLT5hc19hdWRpbygpOwogICAgIGNvbnN0IFZpZGVvQ29udGVudERlc2NyaXB0
aW9uKiB2Y2QgPSB2Yy0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfdmlkZW8oKTsKICAgICBFWFBF
Q1RfRVEoTUVESUFfVFlQRV9BVURJTywgYWNkLT50eXBlKCkpOwotICAgIEVYUEVDVF9FUShNQUtF
X1ZFQ1RPUihrQXVkaW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsKKyAgICBFWFBFQ1Rf
VEhBVChhY2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtBdWRpb0NvZGVjc0Fuc3dlcikp
OwogICAgIEVYUEVDVF9FUShrQXV0b0JhbmR3aWR0aCwgYWNkLT5iYW5kd2lkdGgoKSk7ICAvLyBu
ZWdvdGlhdGVkIGF1dG8gYncKICAgICBFWFBFQ1RfRVEoMFUsIGFjZC0+Zmlyc3Rfc3NyYygpKTsg
ICAgICAgICAgICAgLy8gbm8gc2VuZGVyIGlzIGF0dGFjaGVkCiAgICAgRVhQRUNUX1RSVUUoYWNk
LT5ydGNwX211eCgpKTsgICAgICAgICAgICAgICAgIC8vIG5lZ290aWF0ZWQgcnRjcC1tdXgKQEAg
LTY0MSw3ICs2NDMsNyBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgICAgQVNTRVJUX0NSWVBUTyhhY2QsIDFVLCBr
RGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7CiAgICAgfQogICAgIEVYUEVDVF9FUShNRURJQV9UWVBF
X1ZJREVPLCB2Y2QtPnR5cGUoKSk7Ci0gICAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtWaWRlb0Nv
ZGVjc0Fuc3dlciksIHZjZC0+Y29kZWNzKCkpOworICAgIEVYUEVDVF9USEFUKHZjZC0+Y29kZWNz
KCksIEVsZW1lbnRzQXJlQXJyYXkoa1ZpZGVvQ29kZWNzQW5zd2VyKSk7CiAgICAgRVhQRUNUX0VR
KDBVLCB2Y2QtPmZpcnN0X3NzcmMoKSk7ICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQKICAgICBF
WFBFQ1RfVFJVRSh2Y2QtPnJ0Y3BfbXV4KCkpOyAgICAgIC8vIG5lZ290aWF0ZWQgcnRjcC1tdXgK
ICAgICBpZiAoZ2NtX29mZmVyICYmIGdjbV9hbnN3ZXIpIHsKQEAgLTY0OSw3ICs2NTEsNyBAQCBj
bGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewogICAgIH0gZWxzZSB7CiAgICAgICBBU1NFUlRfQ1JZUFRPKHZjZCwgMVUsIGtEZWZh
dWx0U3J0cENyeXB0b1N1aXRlKTsKICAgICB9Ci0gICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNy
aWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCB2Y2QtPnByb3RvY29sKCkpOworICAgIEVYUEVD
VF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmLCB2Y2QtPnByb3RvY29sKCkpOwogICB9
CiAKICBwcm90ZWN0ZWQ6CkBAIC02NzcsNyArNjc5LDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRl
c2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVBdWRpb09mZmVyKSB7CiAgIEVYUEVDVF9F
UShrQXV0b0JhbmR3aWR0aCwgYWNkLT5iYW5kd2lkdGgoKSk7ICAvLyBkZWZhdWx0IGJhbmR3aWR0
aCAoYXV0bykKICAgRVhQRUNUX1RSVUUoYWNkLT5ydGNwX211eCgpKTsgICAgICAgICAgICAgICAg
IC8vIHJ0Y3AtbXV4IGRlZmF1bHRzIG9uCiAgIEFTU0VSVF9DUllQVE8oYWNkLCAxVSwga0RlZmF1
bHRTcnRwQ3J5cHRvU3VpdGUpOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01l
ZGlhUHJvdG9jb2xTYXZwZiksIGFjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0
OjprTWVkaWFQcm90b2NvbFNhdnBmLCBhY2QtPnByb3RvY29sKCkpOwogfQogCiAvLyBDcmVhdGUg
YSB0eXBpY2FsIHZpZGVvIG9mZmVyLCBhbmQgZW5zdXJlIGl0IG1hdGNoZXMgd2hhdCB3ZSBleHBl
Y3QuCkBAIC03MDEsMTQgKzcwMywxNCBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25G
YWN0b3J5VGVzdCwgVGVzdENyZWF0ZVZpZGVvT2ZmZXIpIHsKICAgRVhQRUNUX0VRKGtBdXRvQmFu
ZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgpKTsgIC8vIGRlZmF1bHQgYmFuZHdpZHRoIChhdXRvKQog
ICBFWFBFQ1RfVFJVRShhY2QtPnJ0Y3BfbXV4KCkpOyAgICAgICAgICAgICAgICAgLy8gcnRjcC1t
dXggZGVmYXVsdHMgb24KICAgQVNTRVJUX0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlw
dG9TdWl0ZSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2Nv
bFNhdnBmKSwgYWNkLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVBy
b3RvY29sU2F2cGYsIGFjZC0+cHJvdG9jb2woKSk7CiAgIEVYUEVDVF9FUShNRURJQV9UWVBFX1ZJ
REVPLCB2Y2QtPnR5cGUoKSk7CiAgIEVYUEVDVF9FUShmMV8udmlkZW9fY29kZWNzKCksIHZjZC0+
Y29kZWNzKCkpOwogICBFWFBFQ1RfRVEoMFUsIHZjZC0+Zmlyc3Rfc3NyYygpKTsgICAgICAgICAg
ICAgLy8gbm8gc2VuZGVyIGlzIGF0dGFjaGVkCiAgIEVYUEVDVF9FUShrQXV0b0JhbmR3aWR0aCwg
dmNkLT5iYW5kd2lkdGgoKSk7ICAvLyBkZWZhdWx0IGJhbmR3aWR0aCAoYXV0bykKICAgRVhQRUNU
X1RSVUUodmNkLT5ydGNwX211eCgpKTsgICAgICAgICAgICAgICAgIC8vIHJ0Y3AtbXV4IGRlZmF1
bHRzIG9uCiAgIEFTU0VSVF9DUllQVE8odmNkLCAxVSwga0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUp
OwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiks
IHZjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbFNh
dnBmLCB2Y2QtPnByb3RvY29sKCkpOwogfQogCiAvLyBUZXN0IGNyZWF0aW5nIGFuIG9mZmVyIHdp
dGggYnVuZGxlIHdoZXJlIHRoZSBDb2RlY3MgaGF2ZSB0aGUgc2FtZSBkeW5hbWljCkBAIC03Nzks
MTEgKzc4MSwxMSBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwK
ICAgRVhQRUNUX1RSVUUoTlVMTCAhPSBkY2QpOwogCiAgIEFTU0VSVF9DUllQVE8oYWNkLCAxVSwg
a0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tl
dDo6a01lZGlhUHJvdG9jb2xTYXZwZiksIGFjZC0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShj
cmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmLCBhY2QtPnByb3RvY29sKCkpOwogICBBU1NFUlRf
Q1JZUFRPKHZjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKLSAgRVhQRUNUX0VRKHN0
ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCB2Y2QtPnByb3RvY29sKCkp
OworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgdmNkLT5wcm90b2Nv
bCgpKTsKICAgQVNTRVJUX0NSWVBUTyhkY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7
Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwg
ZGNkLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2
cGYsIGRjZC0+cHJvdG9jb2woKSk7CiB9CiAKIC8vIENyZWF0ZSBhIFJUUCBkYXRhIG9mZmVyLCBh
bmQgZW5zdXJlIGl0IG1hdGNoZXMgd2hhdCB3ZSBleHBlY3QuCkBAIC04MDgsNyArODEwLDcgQEAg
VEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVSdHBE
YXRhT2ZmZXIpIHsKICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgp
KTsgIC8vIGRlZmF1bHQgYmFuZHdpZHRoIChhdXRvKQogICBFWFBFQ1RfVFJVRShhY2QtPnJ0Y3Bf
bXV4KCkpOyAgICAgICAgICAgICAgICAgLy8gcnRjcC1tdXggZGVmYXVsdHMgb24KICAgQVNTRVJU
X0NSWVBUTyhhY2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVYUEVDVF9FUShz
dGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgYWNkLT5wcm90b2NvbCgp
KTsKKyAgRVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGFjZC0+cHJvdG9j
b2woKSk7CiAgIEVYUEVDVF9FUShNRURJQV9UWVBFX0RBVEEsIGRjZC0+dHlwZSgpKTsKICAgRVhQ
RUNUX0VRKGYxXy5kYXRhX2NvZGVjcygpLCBkY2QtPmNvZGVjcygpKTsKICAgRVhQRUNUX0VRKDBV
LCBkY2QtPmZpcnN0X3NzcmMoKSk7ICAvLyBubyBzZW5kZXIgaXMgYXR0YWNoZWQuCkBAIC04MTYs
NyArODE4LDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRl
c3RDcmVhdGVSdHBEYXRhT2ZmZXIpIHsKICAgICAgICAgICAgIGRjZC0+YmFuZHdpZHRoKCkpOyAg
IC8vIGRlZmF1bHQgYmFuZHdpZHRoIChhdXRvKQogICBFWFBFQ1RfVFJVRShkY2QtPnJ0Y3BfbXV4
KCkpOyAgLy8gcnRjcC1tdXggZGVmYXVsdHMgb24KICAgQVNTRVJUX0NSWVBUTyhkY2QsIDFVLCBr
RGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0
OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgZGNkLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VRKGNy
aWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGRjZC0+cHJvdG9jb2woKSk7CiB9CiAKIC8vIENy
ZWF0ZSBhbiBTQ1RQIGRhdGEgb2ZmZXIgd2l0aCBidW5kbGUgd2l0aG91dCBlcnJvci4KQEAgLTkz
OSwxMiArOTQxLDEyIEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0
LCBUZXN0Q3JlYXRlQXVkaW9BbnN3ZXIpIHsKICAgRVhQRUNUX0VRKE1lZGlhUHJvdG9jb2xUeXBl
OjprUnRwLCBhYy0+dHlwZSk7CiAgIGNvbnN0IEF1ZGlvQ29udGVudERlc2NyaXB0aW9uKiBhY2Qg
PSBhYy0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfYXVkaW8oKTsKICAgRVhQRUNUX0VRKE1FRElB
X1RZUEVfQVVESU8sIGFjZC0+dHlwZSgpKTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtBdWRp
b0NvZGVjc0Fuc3dlciksIGFjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhBVChhY2QtPmNvZGVj
cygpLCBFbGVtZW50c0FyZUFycmF5KGtBdWRpb0NvZGVjc0Fuc3dlcikpOwogICBFWFBFQ1RfRVEo
MFUsIGFjZC0+Zmlyc3Rfc3NyYygpKTsgICAgICAgICAgICAgLy8gbm8gc2VuZGVyIGlzIGF0dGFj
aGVkCiAgIEVYUEVDVF9FUShrQXV0b0JhbmR3aWR0aCwgYWNkLT5iYW5kd2lkdGgoKSk7ICAvLyBu
ZWdvdGlhdGVkIGF1dG8gYncKICAgRVhQRUNUX1RSVUUoYWNkLT5ydGNwX211eCgpKTsgICAgICAg
ICAgICAgICAgIC8vIG5lZ290aWF0ZWQgcnRjcC1tdXgKICAgQVNTRVJUX0NSWVBUTyhhY2QsIDFV
LCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlj
a2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgYWNkLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VR
KGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGFjZC0+cHJvdG9jb2woKSk7CiB9CiAKIC8v
IENyZWF0ZSBhIHR5cGljYWwgYXVkaW8gYW5zd2VyIHdpdGggR0NNIGNpcGhlcnMgZW5hYmxlZCwg
YW5kIGVuc3VyZSBpdApAQCAtOTUzLDcgKzk1NSw3IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNj
cmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3JlYXRlQXVkaW9BbnN3ZXJHY20pIHsKICAgZjFfLnNl
dF9zZWN1cmUoU0VDX0VOQUJMRUQpOwogICBmMl8uc2V0X3NlY3VyZShTRUNfRU5BQkxFRCk7CiAg
IE1lZGlhU2Vzc2lvbk9wdGlvbnMgb3B0cyA9IENyZWF0ZVBsYW5CTWVkaWFTZXNzaW9uT3B0aW9u
cygpOwotICBvcHRzLmNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHRy
dWU7CisgIG9wdHMuY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMg
PSB0cnVlOwogICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBvZmZlcihmMV8u
Q3JlYXRlT2ZmZXIob3B0cywgTlVMTCkpOwogICBBU1NFUlRfVFJVRShvZmZlci5nZXQoKSAhPSBO
VUxMKTsKICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gYW5zd2VyKApAQCAt
OTY1LDEyICs5NjcsMTIgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRl
c3QsIFRlc3RDcmVhdGVBdWRpb0Fuc3dlckdjbSkgewogICBFWFBFQ1RfRVEoTWVkaWFQcm90b2Nv
bFR5cGU6OmtSdHAsIGFjLT50eXBlKTsKICAgY29uc3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24q
IGFjZCA9IGFjLT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19hdWRpbygpOwogICBFWFBFQ1RfRVEo
TUVESUFfVFlQRV9BVURJTywgYWNkLT50eXBlKCkpOwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Io
a0F1ZGlvQ29kZWNzQW5zd2VyKSwgYWNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9USEFUKGFjZC0+
Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa0F1ZGlvQ29kZWNzQW5zd2VyKSk7CiAgIEVYUEVD
VF9FUSgwVSwgYWNkLT5maXJzdF9zc3JjKCkpOyAgICAgICAgICAgICAvLyBubyBzZW5kZXIgaXMg
YXR0YWNoZWQKICAgRVhQRUNUX0VRKGtBdXRvQmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgpKTsg
IC8vIG5lZ290aWF0ZWQgYXV0byBidwogICBFWFBFQ1RfVFJVRShhY2QtPnJ0Y3BfbXV4KCkpOyAg
ICAgICAgICAgICAgICAgLy8gbmVnb3RpYXRlZCBydGNwLW11eAogICBBU1NFUlRfQ1JZUFRPKGFj
ZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlR2NtKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3Ry
aW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCBhY2QtPnByb3RvY29sKCkpOworICBF
WFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgYWNkLT5wcm90b2NvbCgpKTsK
IH0KIAogLy8gQ3JlYXRlIGEgdHlwaWNhbCB2aWRlbyBhbnN3ZXIsIGFuZCBlbnN1cmUgaXQgbWF0
Y2hlcyB3aGF0IHdlIGV4cGVjdC4KQEAgLTk5MiwxNyArOTk0LDE3IEBAIFRFU1RfRihNZWRpYVNl
c3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3JlYXRlVmlkZW9BbnN3ZXIpIHsKICAg
Y29uc3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGFjZCA9IGFjLT5tZWRpYV9kZXNjcmlwdGlv
bigpLT5hc19hdWRpbygpOwogICBjb25zdCBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiogdmNkID0g
dmMtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX3ZpZGVvKCk7CiAgIEVYUEVDVF9FUShNRURJQV9U
WVBFX0FVRElPLCBhY2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrQXVkaW9D
b2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQoYWNkLT5jb2RlY3Mo
KSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NBbnN3ZXIpKTsKICAgRVhQRUNUX0VRKGtB
dXRvQmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgpKTsgIC8vIG5lZ290aWF0ZWQgYXV0byBidwog
ICBFWFBFQ1RfRVEoMFUsIGFjZC0+Zmlyc3Rfc3NyYygpKTsgICAgICAgICAgICAgLy8gbm8gc2Vu
ZGVyIGlzIGF0dGFjaGVkCiAgIEVYUEVDVF9UUlVFKGFjZC0+cnRjcF9tdXgoKSk7ICAgICAgICAg
ICAgICAgICAvLyBuZWdvdGlhdGVkIHJ0Y3AtbXV4CiAgIEFTU0VSVF9DUllQVE8oYWNkLCAxVSwg
a0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwogICBFWFBFQ1RfRVEoTUVESUFfVFlQRV9WSURFTywg
dmNkLT50eXBlKCkpOwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Ioa1ZpZGVvQ29kZWNzQW5zd2Vy
KSwgdmNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9USEFUKHZjZC0+Y29kZWNzKCksIEVsZW1lbnRz
QXJlQXJyYXkoa1ZpZGVvQ29kZWNzQW5zd2VyKSk7CiAgIEVYUEVDVF9FUSgwVSwgdmNkLT5maXJz
dF9zc3JjKCkpOyAgLy8gbm8gc2VuZGVyIGlzIGF0dGFjaGVkCiAgIEVYUEVDVF9UUlVFKHZjZC0+
cnRjcF9tdXgoKSk7ICAgICAgLy8gbmVnb3RpYXRlZCBydGNwLW11eAogICBBU1NFUlRfQ1JZUFRP
KHZjZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3Ry
aW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCB2Y2QtPnByb3RvY29sKCkpOworICBF
WFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgdmNkLT5wcm90b2NvbCgpKTsK
IH0KIAogLy8gQ3JlYXRlIGEgdHlwaWNhbCB2aWRlbyBhbnN3ZXIgd2l0aCBHQ00gY2lwaGVycyBl
bmFibGVkLCBhbmQgZW5zdXJlIGl0CkBAIC0xMDQxLDIzICsxMDQzLDIzIEBAIFRFU1RfRihNZWRp
YVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0Q3JlYXRlRGF0YUFuc3dlcikgewog
ICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYWNkID0gYWMtPm1lZGlhX2Rlc2NyaXB0
aW9uKCktPmFzX2F1ZGlvKCk7CiAgIGNvbnN0IERhdGFDb250ZW50RGVzY3JpcHRpb24qIGRjZCA9
IGRjLT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19kYXRhKCk7CiAgIEVYUEVDVF9FUShNRURJQV9U
WVBFX0FVRElPLCBhY2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrQXVkaW9D
b2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQoYWNkLT5jb2RlY3Mo
KSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NBbnN3ZXIpKTsKICAgRVhQRUNUX0VRKGtB
dXRvQmFuZHdpZHRoLCBhY2QtPmJhbmR3aWR0aCgpKTsgIC8vIG5lZ290aWF0ZWQgYXV0byBidwog
ICBFWFBFQ1RfRVEoMFUsIGFjZC0+Zmlyc3Rfc3NyYygpKTsgICAgICAgICAgICAgLy8gbm8gc2Vu
ZGVyIGlzIGF0dGFjaGVkCiAgIEVYUEVDVF9UUlVFKGFjZC0+cnRjcF9tdXgoKSk7ICAgICAgICAg
ICAgICAgICAvLyBuZWdvdGlhdGVkIHJ0Y3AtbXV4CiAgIEFTU0VSVF9DUllQVE8oYWNkLCAxVSwg
a0RlZmF1bHRTcnRwQ3J5cHRvU3VpdGUpOwogICBFWFBFQ1RfRVEoTUVESUFfVFlQRV9EQVRBLCBk
Y2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrRGF0YUNvZGVjc0Fuc3dlciks
IGRjZC0+Y29kZWNzKCkpOworICBFWFBFQ1RfVEhBVChkY2QtPmNvZGVjcygpLCBFbGVtZW50c0Fy
ZUFycmF5KGtEYXRhQ29kZWNzQW5zd2VyKSk7CiAgIEVYUEVDVF9FUSgwVSwgZGNkLT5maXJzdF9z
c3JjKCkpOyAgLy8gbm8gc2VuZGVyIGlzIGF0dGFjaGVkCiAgIEVYUEVDVF9UUlVFKGRjZC0+cnRj
cF9tdXgoKSk7ICAgICAgLy8gbmVnb3RpYXRlZCBydGNwLW11eAogICBBU1NFUlRfQ1JZUFRPKGRj
ZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5n
KGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYpLCBkY2QtPnByb3RvY29sKCkpOworICBFWFBF
Q1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgZGNkLT5wcm90b2NvbCgpKTsKIH0K
IAogVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVE
YXRhQW5zd2VyR2NtKSB7CiAgIE1lZGlhU2Vzc2lvbk9wdGlvbnMgb3B0cyA9IENyZWF0ZVBsYW5C
TWVkaWFTZXNzaW9uT3B0aW9ucygpOwogICBBZGREYXRhU2VjdGlvbihjcmlja2V0OjpEQ1RfUlRQ
LCBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a1JlY3ZPbmx5LCAmb3B0cyk7Ci0gIG9wdHMuY3J5
cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gdHJ1ZTsKKyAgb3B0cy5jcnlw
dG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHRydWU7CiAgIGYxXy5z
ZXRfc2VjdXJlKFNFQ19FTkFCTEVEKTsKICAgZjJfLnNldF9zZWN1cmUoU0VDX0VOQUJMRUQpOwog
ICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBvZmZlcihmMV8uQ3JlYXRlT2Zm
ZXIob3B0cywgTlVMTCkpOwpAQCAtMTA3MywxNyArMTA3NSwxNyBAQCBURVNUX0YoTWVkaWFTZXNz
aW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdENyZWF0ZURhdGFBbnN3ZXJHY20pIHsKICAg
Y29uc3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGFjZCA9IGFjLT5tZWRpYV9kZXNjcmlwdGlv
bigpLT5hc19hdWRpbygpOwogICBjb25zdCBEYXRhQ29udGVudERlc2NyaXB0aW9uKiBkY2QgPSBk
Yy0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfZGF0YSgpOwogICBFWFBFQ1RfRVEoTUVESUFfVFlQ
RV9BVURJTywgYWNkLT50eXBlKCkpOwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Ioa0F1ZGlvQ29k
ZWNzQW5zd2VyKSwgYWNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9USEFUKGFjZC0+Y29kZWNzKCks
IEVsZW1lbnRzQXJlQXJyYXkoa0F1ZGlvQ29kZWNzQW5zd2VyKSk7CiAgIEVYUEVDVF9FUShrQXV0
b0JhbmR3aWR0aCwgYWNkLT5iYW5kd2lkdGgoKSk7ICAvLyBuZWdvdGlhdGVkIGF1dG8gYncKICAg
RVhQRUNUX0VRKDBVLCBhY2QtPmZpcnN0X3NzcmMoKSk7ICAgICAgICAgICAgIC8vIG5vIHNlbmRl
ciBpcyBhdHRhY2hlZAogICBFWFBFQ1RfVFJVRShhY2QtPnJ0Y3BfbXV4KCkpOyAgICAgICAgICAg
ICAgICAgLy8gbmVnb3RpYXRlZCBydGNwLW11eAogICBBU1NFUlRfQ1JZUFRPKGFjZCwgMVUsIGtE
ZWZhdWx0U3J0cENyeXB0b1N1aXRlR2NtKTsKICAgRVhQRUNUX0VRKE1FRElBX1RZUEVfREFUQSwg
ZGNkLT50eXBlKCkpOwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Ioa0RhdGFDb2RlY3NBbnN3ZXIp
LCBkY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQoZGNkLT5jb2RlY3MoKSwgRWxlbWVudHNB
cmVBcnJheShrRGF0YUNvZGVjc0Fuc3dlcikpOwogICBFWFBFQ1RfRVEoMFUsIGRjZC0+Zmlyc3Rf
c3NyYygpKTsgIC8vIG5vIHNlbmRlciBpcyBhdHRhY2hlZAogICBFWFBFQ1RfVFJVRShkY2QtPnJ0
Y3BfbXV4KCkpOyAgICAgIC8vIG5lZ290aWF0ZWQgcnRjcC1tdXgKICAgQVNTRVJUX0NSWVBUTyhk
Y2QsIDFVLCBrRGVmYXVsdFNydHBDcnlwdG9TdWl0ZUdjbSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0
cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKSwgZGNkLT5wcm90b2NvbCgpKTsKKyAg
RVhQRUNUX0VRKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGRjZC0+cHJvdG9jb2woKSk7
CiB9CiAKIC8vIFRoZSB1c2Vfc2N0cG1hcCBmbGFnIHNob3VsZCBiZSBzZXQgaW4gYSBEYXRhQ29u
dGVudERlc2NyaXB0aW9uIGJ5IGRlZmF1bHQuCkBAIC0xMjY0LDcgKzEyNjYsNyBAQCBURVNUX0Yo
TWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgQXVkaW9PZmZlckFuc3dlcldpdGhD
cnlwdG9EaXNhYmxlZCkgewogICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogb2ZmZXJf
YWNkID0KICAgICAgIEdldEZpcnN0QXVkaW9Db250ZW50RGVzY3JpcHRpb24ob2ZmZXIuZ2V0KCkp
OwogICBBU1NFUlRfVFJVRShvZmZlcl9hY2QgIT0gTlVMTCk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0
cmluZyhjcmlja2V0OjprTWVkaWFQcm90b2NvbEF2cGYpLCBvZmZlcl9hY2QtPnByb3RvY29sKCkp
OworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xBdnBmLCBvZmZlcl9hY2QtPnBy
b3RvY29sKCkpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGFuc3dl
cigKICAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIG9wdHMsIE5VTEwpKTsKQEAg
LTEyNzYsNyArMTI3OCw3IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlU
ZXN0LCBBdWRpb09mZmVyQW5zd2VyV2l0aENyeXB0b0Rpc2FibGVkKSB7CiAgIGNvbnN0IEF1ZGlv
Q29udGVudERlc2NyaXB0aW9uKiBhbnN3ZXJfYWNkID0KICAgICAgIEdldEZpcnN0QXVkaW9Db250
ZW50RGVzY3JpcHRpb24oYW5zd2VyLmdldCgpKTsKICAgQVNTRVJUX1RSVUUoYW5zd2VyX2FjZCAh
PSBOVUxMKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKGNyaWNrZXQ6OmtNZWRpYVByb3RvY29s
QXZwZiksIGFuc3dlcl9hY2QtPnByb3RvY29sKCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01l
ZGlhUHJvdG9jb2xBdnBmLCBhbnN3ZXJfYWNkLT5wcm90b2NvbCgpKTsKIH0KIAogLy8gQ3JlYXRl
IGEgdmlkZW8gb2ZmZXIgYW5kIGFuc3dlciBhbmQgZW5zdXJlIHRoZSBSVFAgaGVhZGVyIGV4dGVu
c2lvbnMKQEAgLTE1ODEsNiArMTU4Myw2NyBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRp
b25GYWN0b3J5VGVzdCwKICAgRVhQRUNUX1RSVUUoZGMtPnJlamVjdGVkKTsKIH0KIAorVEVTVF9G
KE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsCisgICAgICAgQ3JlYXRlQW5zd2Vy
U3VwcG9ydHNNaXhlZE9uZUFuZFR3b0J5dGVIZWFkZXJFeHRlbnNpb25zKSB7CisgIE1lZGlhU2Vz
c2lvbk9wdGlvbnMgb3B0czsKKyAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbj4g
b2ZmZXIoZjFfLkNyZWF0ZU9mZmVyKG9wdHMsIE5VTEwpKTsKKyAgLy8gT2ZmZXIgd2l0aG91dCBy
ZXF1ZXN0IG9mIG1peGVkIG9uZS0gYW5kIHR3by1ieXRlIGhlYWRlciBleHRlbnNpb25zLgorICBv
ZmZlci0+c2V0X2V4dG1hcF9hbGxvd19taXhlZChmYWxzZSk7CisgIEFTU0VSVF9UUlVFKG9mZmVy
LmdldCgpICE9IE5VTEwpOworICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBh
bnN3ZXJfbm9fc3VwcG9ydCgKKyAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIG9w
dHMsIE5VTEwpKTsKKyAgRVhQRUNUX0ZBTFNFKGFuc3dlcl9ub19zdXBwb3J0LT5leHRtYXBfYWxs
b3dfbWl4ZWQoKSk7CisKKyAgLy8gT2ZmZXIgd2l0aCByZXF1ZXN0IG9mIG1peGVkIG9uZS0gYW5k
IHR3by1ieXRlIGhlYWRlciBleHRlbnNpb25zLgorICBvZmZlci0+c2V0X2V4dG1hcF9hbGxvd19t
aXhlZCh0cnVlKTsKKyAgQVNTRVJUX1RSVUUob2ZmZXIuZ2V0KCkgIT0gTlVMTCk7CisgIHN0ZDo6
dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb24+IGFuc3dlcl9zdXBwb3J0KAorICAgICAgZjJf
LkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0cywgTlVMTCkpOworICBFWFBFQ1RfVFJVRShh
bnN3ZXJfc3VwcG9ydC0+ZXh0bWFwX2FsbG93X21peGVkKCkpOworfQorCitURVNUX0YoTWVkaWFT
ZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKKyAgICAgICBDcmVhdGVBbnN3ZXJTdXBwb3J0
c01peGVkT25lQW5kVHdvQnl0ZUhlYWRlckV4dGVuc2lvbnNPbk1lZGlhTGV2ZWwpIHsKKyAgTWVk
aWFTZXNzaW9uT3B0aW9ucyBvcHRzOworICBBZGRBdWRpb1ZpZGVvU2VjdGlvbnMoUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb246OmtTZW5kUmVjdiwgJm9wdHMpOworICBzdGQ6OnVuaXF1ZV9wdHI8U2Vz
c2lvbkRlc2NyaXB0aW9uPiBvZmZlcihmMV8uQ3JlYXRlT2ZmZXIob3B0cywgTlVMTCkpOworICBN
ZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogdmlkZW9fb2ZmZXIgPQorICAgICAgb2ZmZXItPkdldENv
bnRlbnREZXNjcmlwdGlvbkJ5TmFtZSgidmlkZW8iKTsKKyAgQVNTRVJUX1RSVUUodmlkZW9fb2Zm
ZXIpOworICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogYXVkaW9fb2ZmZXIgPQorICAgICAgb2Zm
ZXItPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZSgiYXVkaW8iKTsKKyAgQVNTRVJUX1RSVUUo
YXVkaW9fb2ZmZXIpOworCisgIC8vIEV4cGxpY2l0IGRpc2FibGUgb2YgbWl4ZWQgb25lLXR3byBi
eXRlIGhlYWRlciBzdXBwb3J0IGluIG9mZmVyLgorICB2aWRlb19vZmZlci0+c2V0X2V4dG1hcF9h
bGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8pOworICBhdWRpb19v
ZmZlci0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9u
OjprTm8pOworCisgIEFTU0VSVF9UUlVFKG9mZmVyLmdldCgpICE9IE5VTEwpOworICBzdGQ6OnVu
aXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uPiBhbnN3ZXJfbm9fc3VwcG9ydCgKKyAgICAgIGYy
Xy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIG9wdHMsIE5VTEwpKTsKKyAgTWVkaWFDb250ZW50
RGVzY3JpcHRpb24qIHZpZGVvX2Fuc3dlciA9CisgICAgICBhbnN3ZXJfbm9fc3VwcG9ydC0+R2V0
Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKCJ2aWRlbyIpOworICBNZWRpYUNvbnRlbnREZXNjcmlw
dGlvbiogYXVkaW9fYW5zd2VyID0KKyAgICAgIGFuc3dlcl9ub19zdXBwb3J0LT5HZXRDb250ZW50
RGVzY3JpcHRpb25CeU5hbWUoImF1ZGlvIik7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNj
cmlwdGlvbjo6a05vLAorICAgICAgICAgICAgdmlkZW9fYW5zd2VyLT5leHRtYXBfYWxsb3dfbWl4
ZWRfZW51bSgpKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8sCisg
ICAgICAgICAgICBhdWRpb19hbnN3ZXItPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworCisg
IC8vIEVuYWJsZSBtaXhlZCBvbmUtdHdvIGJ5dGUgaGVhZGVyIHN1cHBvcnQgaW4gb2ZmZXIuCisg
IHZpZGVvX29mZmVyLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVz
Y3JpcHRpb246OmtNZWRpYSk7CisgIGF1ZGlvX29mZmVyLT5zZXRfZXh0bWFwX2FsbG93X21peGVk
X2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7CisgIEFTU0VSVF9UUlVFKG9m
ZmVyLmdldCgpICE9IE5VTEwpOworICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9u
PiBhbnN3ZXJfc3VwcG9ydCgKKyAgICAgIGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIG9w
dHMsIE5VTEwpKTsKKyAgdmlkZW9fYW5zd2VyID0gYW5zd2VyX3N1cHBvcnQtPkdldENvbnRlbnRE
ZXNjcmlwdGlvbkJ5TmFtZSgidmlkZW8iKTsKKyAgYXVkaW9fYW5zd2VyID0gYW5zd2VyX3N1cHBv
cnQtPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZSgiYXVkaW8iKTsKKyAgRVhQRUNUX0VRKE1l
ZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEsCisgICAgICAgICAgICB2aWRlb19hbnN3ZXIt
PmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVz
Y3JpcHRpb246OmtNZWRpYSwKKyAgICAgICAgICAgIGF1ZGlvX2Fuc3dlci0+ZXh0bWFwX2FsbG93
X21peGVkX2VudW0oKSk7Cit9CisKIC8vIENyZWF0ZSBhbiBhdWRpbyBhbmQgdmlkZW8gb2ZmZXIg
d2l0aDoKIC8vIC0gb25lIHZpZGVvIHRyYWNrCiAvLyAtIHR3byBhdWRpbyB0cmFja3MKQEAgLTE4
MTQsNyArMTg3Nyw3IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0
LCBUZXN0Q3JlYXRlTXVsdGlTdHJlYW1WaWRlb0Fuc3dlcikgewogICBBU1NFUlRfQ1JZUFRPKGRj
ZCwgMVUsIGtEZWZhdWx0U3J0cENyeXB0b1N1aXRlKTsKIAogICBFWFBFQ1RfRVEoTUVESUFfVFlQ
RV9BVURJTywgYWNkLT50eXBlKCkpOwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Ioa0F1ZGlvQ29k
ZWNzQW5zd2VyKSwgYWNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9USEFUKGFjZC0+Y29kZWNzKCks
IEVsZW1lbnRzQXJlQXJyYXkoa0F1ZGlvQ29kZWNzQW5zd2VyKSk7CiAKICAgY29uc3QgU3RyZWFt
UGFyYW1zVmVjJiBhdWRpb19zdHJlYW1zID0gYWNkLT5zdHJlYW1zKCk7CiAgIEFTU0VSVF9FUSgy
VSwgYXVkaW9fc3RyZWFtcy5zaXplKCkpOwpAQCAtMTgzMCw3ICsxODkzLDcgQEAgVEVTVF9GKE1l
ZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsIFRlc3RDcmVhdGVNdWx0aVN0cmVhbVZp
ZGVvQW5zd2VyKSB7CiAgIEVYUEVDVF9UUlVFKGFjZC0+cnRjcF9tdXgoKSk7ICAgICAgICAgICAg
ICAgICAvLyBydGNwLW11eCBkZWZhdWx0cyBvbgogCiAgIEVYUEVDVF9FUShNRURJQV9UWVBFX1ZJ
REVPLCB2Y2QtPnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrVmlkZW9Db2RlY3NB
bnN3ZXIpLCB2Y2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQodmNkLT5jb2RlY3MoKSwgRWxl
bWVudHNBcmVBcnJheShrVmlkZW9Db2RlY3NBbnN3ZXIpKTsKIAogICBjb25zdCBTdHJlYW1QYXJh
bXNWZWMmIHZpZGVvX3N0cmVhbXMgPSB2Y2QtPnN0cmVhbXMoKTsKICAgQVNTRVJUX0VRKDFVLCB2
aWRlb19zdHJlYW1zLnNpemUoKSk7CkBAIC0xODQwLDcgKzE5MDMsNyBAQCBURVNUX0YoTWVkaWFT
ZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdENyZWF0ZU11bHRpU3RyZWFtVmlkZW9B
bnN3ZXIpIHsKICAgRVhQRUNUX1RSVUUodmNkLT5ydGNwX211eCgpKTsgICAgICAgICAgICAgICAg
IC8vIHJ0Y3AtbXV4IGRlZmF1bHRzIG9uCiAKICAgRVhQRUNUX0VRKE1FRElBX1RZUEVfREFUQSwg
ZGNkLT50eXBlKCkpOwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Ioa0RhdGFDb2RlY3NBbnN3ZXIp
LCBkY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQoZGNkLT5jb2RlY3MoKSwgRWxlbWVudHNB
cmVBcnJheShrRGF0YUNvZGVjc0Fuc3dlcikpOwogCiAgIGNvbnN0IFN0cmVhbVBhcmFtc1ZlYyYg
ZGF0YV9zdHJlYW1zID0gZGNkLT5zdHJlYW1zKCk7CiAgIEFTU0VSVF9FUSgyVSwgZGF0YV9zdHJl
YW1zLnNpemUoKSk7CkBAIC0xOTIzLDExICsxOTg2LDExIEBAIFRFU1RfRihNZWRpYVNlc3Npb25E
ZXNjcmlwdGlvbkZhY3RvcnlUZXN0LAogCiAgIGNvbnN0IEF1ZGlvQ29udGVudERlc2NyaXB0aW9u
KiBhY2QgPQogICAgICAgR2V0Rmlyc3RBdWRpb0NvbnRlbnREZXNjcmlwdGlvbihhbnN3ZXIuZ2V0
KCkpOwotICBFWFBFQ1RfRVEoTUFLRV9WRUNUT1Ioa0F1ZGlvQ29kZWNzQW5zd2VyKSwgYWNkLT5j
b2RlY3MoKSk7CisgIEVYUEVDVF9USEFUKGFjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXko
a0F1ZGlvQ29kZWNzQW5zd2VyKSk7CiAKICAgY29uc3QgVmlkZW9Db250ZW50RGVzY3JpcHRpb24q
IHZjZCA9CiAgICAgICBHZXRGaXJzdFZpZGVvQ29udGVudERlc2NyaXB0aW9uKGFuc3dlci5nZXQo
KSk7Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrVmlkZW9Db2RlY3NBbnN3ZXIpLCB2Y2QtPmNv
ZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQodmNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShr
VmlkZW9Db2RlY3NBbnN3ZXIpKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0
aW9uPiB1cGRhdGVkX29mZmVyKAogICAgICAgZjJfLkNyZWF0ZU9mZmVyKG9wdHMsIGFuc3dlci5n
ZXQoKSkpOwpAQCAtMTk1MCwxMSArMjAxMywxMSBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3Jp
cHRpb25GYWN0b3J5VGVzdCwKIAogICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogdXBk
YXRlZF9hY2QgPQogICAgICAgR2V0Rmlyc3RBdWRpb0NvbnRlbnREZXNjcmlwdGlvbih1cGRhdGVk
X29mZmVyLmdldCgpKTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtVcGRhdGVkQXVkaW9Db2Rl
Y09mZmVyKSwgdXBkYXRlZF9hY2QtPmNvZGVjcygpKTsKKyAgRVhQRUNUX1RIQVQodXBkYXRlZF9h
Y2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtVcGRhdGVkQXVkaW9Db2RlY09mZmVyKSk7
CiAKICAgY29uc3QgVmlkZW9Db250ZW50RGVzY3JpcHRpb24qIHVwZGF0ZWRfdmNkID0KICAgICAg
IEdldEZpcnN0VmlkZW9Db250ZW50RGVzY3JpcHRpb24odXBkYXRlZF9vZmZlci5nZXQoKSk7Ci0g
IEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrVXBkYXRlZFZpZGVvQ29kZWNPZmZlciksIHVwZGF0ZWRf
dmNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9USEFUKHVwZGF0ZWRfdmNkLT5jb2RlY3MoKSwgRWxl
bWVudHNBcmVBcnJheShrVXBkYXRlZFZpZGVvQ29kZWNPZmZlcikpOwogfQogCiAvLyBDcmVhdGUg
YW4gdXBkYXRlZCBvZmZlciBhZnRlciBjcmVhdGluZyBhbiBhbnN3ZXIgdG8gdGhlIG9yaWdpbmFs
IG9mZmVyIGFuZApAQCAtMjA3OSw3ICsyMTQyLDcgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFjdG9yeVRlc3QsCiAKICAgY29uc3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGFj
ZCA9CiAgICAgICBHZXRGaXJzdEF1ZGlvQ29udGVudERlc2NyaXB0aW9uKGFuc3dlci5nZXQoKSk7
Ci0gIEVYUEVDVF9FUShNQUtFX1ZFQ1RPUihrQXVkaW9Db2RlY3NBbnN3ZXIpLCBhY2QtPmNvZGVj
cygpKTsKKyAgRVhQRUNUX1RIQVQoYWNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVk
aW9Db2RlY3NBbnN3ZXIpKTsKIAogICAvLyBOb3cgLSBsZXQgfGYyX3wgYWRkIHZpZGVvIHdpdGgg
UlRYIGFuZCBsZXQgdGhlIHBheWxvYWQgdHlwZSB0aGUgUlRYIGNvZGVjCiAgIC8vIHJlZmVyZW5j
ZSAgYmUgdGhlIHNhbWUgYXMgYW4gYXVkaW8gY29kZWMgdGhhdCB3YXMgbmVnb3RpYXRlZCBpbiB0
aGUKQEAgLTIxMDEsMTMgKzIxNjQsMTMgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9u
RmFjdG9yeVRlc3QsCiAKICAgY29uc3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24qIHVwZGF0ZWRf
YWNkID0KICAgICAgIEdldEZpcnN0QXVkaW9Db250ZW50RGVzY3JpcHRpb24oYW5zd2VyLmdldCgp
KTsKLSAgRVhQRUNUX0VRKE1BS0VfVkVDVE9SKGtBdWRpb0NvZGVjc0Fuc3dlciksIHVwZGF0ZWRf
YWNkLT5jb2RlY3MoKSk7CisgIEVYUEVDVF9USEFUKHVwZGF0ZWRfYWNkLT5jb2RlY3MoKSwgRWxl
bWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NBbnN3ZXIpKTsKIAogICBjb25zdCBWaWRlb0NvbnRl
bnREZXNjcmlwdGlvbiogdXBkYXRlZF92Y2QgPQogICAgICAgR2V0Rmlyc3RWaWRlb0NvbnRlbnRE
ZXNjcmlwdGlvbih1cGRhdGVkX2Fuc3dlci5nZXQoKSk7CiAKICAgQVNTRVJUX0VRKCJIMjY0Iiwg
dXBkYXRlZF92Y2QtPmNvZGVjcygpWzBdLm5hbWUpOwotICBBU1NFUlRfRVEoc3RkOjpzdHJpbmco
Y3JpY2tldDo6a1J0eENvZGVjTmFtZSksIHVwZGF0ZWRfdmNkLT5jb2RlY3MoKVsxXS5uYW1lKTsK
KyAgQVNTRVJUX0VRKGNyaWNrZXQ6OmtSdHhDb2RlY05hbWUsIHVwZGF0ZWRfdmNkLT5jb2RlY3Mo
KVsxXS5uYW1lKTsKICAgaW50IG5ld19oMjY0X3BsX3R5cGUgPSB1cGRhdGVkX3ZjZC0+Y29kZWNz
KClbMF0uaWQ7CiAgIEVYUEVDVF9ORSh1c2VkX3BsX3R5cGUsIG5ld19oMjY0X3BsX3R5cGUpOwog
ICBWaWRlb0NvZGVjIHJ0eCA9IHVwZGF0ZWRfdmNkLT5jb2RlY3MoKVsxXTsKQEAgLTI3NzYsOCAr
MjgzOSw3IEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LCBUZXN0
T2ZmZXJEdGxzU2F2cGZDcmVhdGVBbnN3ZXIpIHsKIAogICBjb25zdCBBdWRpb0NvbnRlbnREZXNj
cmlwdGlvbiogYW5zd2VyX2F1ZGlvX2Rlc2MgPQogICAgICAgYW5zd2VyX2NvbnRlbnQtPm1lZGlh
X2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlj
a2V0OjprTWVkaWFQcm90b2NvbER0bHNTYXZwZiksCi0gICAgICAgICAgICBhbnN3ZXJfYXVkaW9f
ZGVzYy0+cHJvdG9jb2woKSk7CisgIEVYUEVDVF9FUShjcmlja2V0OjprTWVkaWFQcm90b2NvbER0
bHNTYXZwZiwgYW5zd2VyX2F1ZGlvX2Rlc2MtPnByb3RvY29sKCkpOwogfQogCiAvLyBUZXN0IHRo
YXQgd2UgaW5jbHVkZSBib3RoIFNERVMgYW5kIERUTFMgaW4gdGhlIG9mZmVyLCBidXQgb25seSBp
bmNsdWRlIFNERVMKQEAgLTI4NDIsMTAgKzI5MDQsOCBAQCBURVNUX0YoTWVkaWFTZXNzaW9uRGVz
Y3JpcHRpb25GYWN0b3J5VGVzdCwgVGVzdENyeXB0b0R0bHMpIHsKICAgQVNTRVJUX1RSVUUodmlk
ZW9fbWVkaWFfZGVzYyAhPSBOVUxMKTsKICAgRVhQRUNUX1RSVUUoYXVkaW9fbWVkaWFfZGVzYy0+
Y3J5cHRvcygpLmVtcHR5KCkpOwogICBFWFBFQ1RfVFJVRSh2aWRlb19tZWRpYV9kZXNjLT5jcnlw
dG9zKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZyhjcmlja2V0OjprTWVkaWFQ
cm90b2NvbFNhdnBmKSwKLSAgICAgICAgICAgIGF1ZGlvX21lZGlhX2Rlc2MtPnByb3RvY29sKCkp
OwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiks
Ci0gICAgICAgICAgICB2aWRlb19tZWRpYV9kZXNjLT5wcm90b2NvbCgpKTsKKyAgRVhQRUNUX0VR
KGNyaWNrZXQ6OmtNZWRpYVByb3RvY29sU2F2cGYsIGF1ZGlvX21lZGlhX2Rlc2MtPnByb3RvY29s
KCkpOworICBFWFBFQ1RfRVEoY3JpY2tldDo6a01lZGlhUHJvdG9jb2xTYXZwZiwgdmlkZW9fbWVk
aWFfZGVzYy0+cHJvdG9jb2woKSk7CiAKICAgYXVkaW9fdHJhbnNfZGVzYyA9IGFuc3dlci0+R2V0
VHJhbnNwb3J0RGVzY3JpcHRpb25CeU5hbWUoImF1ZGlvIik7CiAgIEFTU0VSVF9UUlVFKGF1ZGlv
X3RyYW5zX2Rlc2MgIT0gTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmNjCmluZGV4IDZk
NjczMjkyNDJkNzVjMWNhODI1NmQwN2E0NTE0YzcyZDlmNDAyODcuLmE2YjQ3YzE2ZGViYTM4MWU1
N2FiZmJmMTIzMDExODE2NWZiMTU4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmNjCkBA
IC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiYXBpL2pzZXBzZXNzaW9uZGVzY3JpcHRpb24uaCIK
ICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1wcm94eS5oIgogI2luY2x1ZGUgImFwaS9tZWRpYXN0
cmVhbXRyYWNrcHJveHkuaCIKKyNpbmNsdWRlICJhcGkvdW1hbWV0cmljcy5oIgogI2luY2x1ZGUg
ImNhbGwvY2FsbC5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9pY2Vsb2dnZXIu
aCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvb3V0cHV0L3J0Y19ldmVudF9sb2df
b3V0cHV0X2ZpbGUuaCIKQEAgLTYzMCw2ICs2MzEsMzUgQEAgYWJzbDo6b3B0aW9uYWw8aW50PiBS
VENDb25maWd1cmF0aW9uVG9JY2VDb25maWdPcHRpb25hbEludCgKICAgcmV0dXJuIHJ0Y19jb25m
aWd1cmF0aW9uX3BhcmFtZXRlcjsKIH0KIAorY3JpY2tldDo6RGF0YU1lc3NhZ2VUeXBlIFRvQ3Jp
Y2tldERhdGFNZXNzYWdlVHlwZShEYXRhTWVzc2FnZVR5cGUgdHlwZSkgeworICBzd2l0Y2ggKHR5
cGUpIHsKKyAgICBjYXNlIERhdGFNZXNzYWdlVHlwZTo6a1RleHQ6CisgICAgICByZXR1cm4gY3Jp
Y2tldDo6RE1UX1RFWFQ7CisgICAgY2FzZSBEYXRhTWVzc2FnZVR5cGU6OmtCaW5hcnk6CisgICAg
ICByZXR1cm4gY3JpY2tldDo6RE1UX0JJTkFSWTsKKyAgICBjYXNlIERhdGFNZXNzYWdlVHlwZTo6
a0NvbnRyb2w6CisgICAgICByZXR1cm4gY3JpY2tldDo6RE1UX0NPTlRST0w7CisgICAgZGVmYXVs
dDoKKyAgICAgIHJldHVybiBjcmlja2V0OjpETVRfTk9ORTsKKyAgfQorICByZXR1cm4gY3JpY2tl
dDo6RE1UX05PTkU7Cit9CisKK0RhdGFNZXNzYWdlVHlwZSBUb1dlYnJ0Y0RhdGFNZXNzYWdlVHlw
ZShjcmlja2V0OjpEYXRhTWVzc2FnZVR5cGUgdHlwZSkgeworICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIGNyaWNrZXQ6OkRNVF9URVhUOgorICAgICAgcmV0dXJuIERhdGFNZXNzYWdlVHlwZTo6
a1RleHQ7CisgICAgY2FzZSBjcmlja2V0OjpETVRfQklOQVJZOgorICAgICAgcmV0dXJuIERhdGFN
ZXNzYWdlVHlwZTo6a0JpbmFyeTsKKyAgICBjYXNlIGNyaWNrZXQ6OkRNVF9DT05UUk9MOgorICAg
ICAgcmV0dXJuIERhdGFNZXNzYWdlVHlwZTo6a0NvbnRyb2w7CisgICAgY2FzZSBjcmlja2V0OjpE
TVRfTk9ORToKKyAgICBkZWZhdWx0OgorICAgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgfQorICBy
ZXR1cm4gRGF0YU1lc3NhZ2VUeXBlOjprQ29udHJvbDsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAK
IC8vIFVwb24gY29tcGxldGlvbiwgcG9zdHMgYSB0YXNrIHRvIGV4ZWN1dGUgdGhlIGNhbGxiYWNr
IG9mIHRoZQpAQCAtNjg0LDYgKzcxNCw3IEBAIGJvb2wgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlJUQ0NvbmZpZ3VyYXRpb246Om9wZXJhdG9yPT0oCiAgICAgQ2FuZGlkYXRlTmV0d29ya1BvbGlj
eSBjYW5kaWRhdGVfbmV0d29ya19wb2xpY3k7CiAgICAgaW50IGF1ZGlvX2ppdHRlcl9idWZmZXJf
bWF4X3BhY2tldHM7CiAgICAgYm9vbCBhdWRpb19qaXR0ZXJfYnVmZmVyX2Zhc3RfYWNjZWxlcmF0
ZTsKKyAgICBpbnQgYXVkaW9faml0dGVyX2J1ZmZlcl9taW5fZGVsYXlfbXM7CiAgICAgaW50IGlj
ZV9jb25uZWN0aW9uX3JlY2VpdmluZ190aW1lb3V0OwogICAgIGludCBpY2VfYmFja3VwX2NhbmRp
ZGF0ZV9wYWlyX3BpbmdfaW50ZXJ2YWw7CiAgICAgQ29udGludWFsR2F0aGVyaW5nUG9saWN5IGNv
bnRpbnVhbF9nYXRoZXJpbmdfcG9saWN5OwpAQCAtNzA0LDYgKzczNSwxMCBAQCBib29sIFBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uOjpvcGVyYXRvcj09KAogICAgIFNk
cFNlbWFudGljcyBzZHBfc2VtYW50aWNzOwogICAgIGFic2w6Om9wdGlvbmFsPHJ0Yzo6QWRhcHRl
clR5cGU+IG5ldHdvcmtfcHJlZmVyZW5jZTsKICAgICBib29sIGFjdGl2ZV9yZXNldF9zcnRwX3Bh
cmFtczsKKyAgICBib29sIHVzZV9tZWRpYV90cmFuc3BvcnQ7CisgICAgYm9vbCB1c2VfbWVkaWFf
dHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzOworICAgIGFic2w6Om9wdGlvbmFsPENyeXB0b09w
dGlvbnM+IGNyeXB0b19vcHRpb25zOworICAgIGJvb2wgb2ZmZXJfZXh0bWFwX2FsbG93X21peGVk
OwogICB9OwogICBzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHVmZl9iZWluZ190ZXN0ZWRfZm9yX2Vx
dWFsaXR5KSA9PSBzaXplb2YoKnRoaXMpLAogICAgICAgICAgICAgICAgICJEaWQgeW91IGFkZCBz
b21ldGhpbmcgdG8gUlRDQ29uZmlndXJhdGlvbiBhbmQgZm9yZ2V0IHRvICIKQEAgLTcxNiw2ICs3
NTEsOCBAQCBib29sIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uOjpv
cGVyYXRvcj09KAogICAgICAgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9tYXhfcGFja2V0cyA9PSBv
LmF1ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tldHMgJiYKICAgICAgICAgIGF1ZGlvX2ppdHRl
cl9idWZmZXJfZmFzdF9hY2NlbGVyYXRlID09CiAgICAgICAgICAgICAgby5hdWRpb19qaXR0ZXJf
YnVmZmVyX2Zhc3RfYWNjZWxlcmF0ZSAmJgorICAgICAgICAgYXVkaW9faml0dGVyX2J1ZmZlcl9t
aW5fZGVsYXlfbXMgPT0KKyAgICAgICAgICAgICBvLmF1ZGlvX2ppdHRlcl9idWZmZXJfbWluX2Rl
bGF5X21zICYmCiAgICAgICAgICBpY2VfY29ubmVjdGlvbl9yZWNlaXZpbmdfdGltZW91dCA9PQog
ICAgICAgICAgICAgIG8uaWNlX2Nvbm5lY3Rpb25fcmVjZWl2aW5nX3RpbWVvdXQgJiYKICAgICAg
ICAgIGljZV9iYWNrdXBfY2FuZGlkYXRlX3BhaXJfcGluZ19pbnRlcnZhbCA9PQpAQCAtNzUxLDcg
Kzc4OCwxMiBAQCBib29sIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9u
OjpvcGVyYXRvcj09KAogICAgICAgICAgdHVybl9jdXN0b21pemVyID09IG8udHVybl9jdXN0b21p
emVyICYmCiAgICAgICAgICBzZHBfc2VtYW50aWNzID09IG8uc2RwX3NlbWFudGljcyAmJgogICAg
ICAgICAgbmV0d29ya19wcmVmZXJlbmNlID09IG8ubmV0d29ya19wcmVmZXJlbmNlICYmCi0gICAg
ICAgICBhY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMgPT0gby5hY3RpdmVfcmVzZXRfc3J0cF9wYXJh
bXM7CisgICAgICAgICBhY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMgPT0gby5hY3RpdmVfcmVzZXRf
c3J0cF9wYXJhbXMgJiYKKyAgICAgICAgIHVzZV9tZWRpYV90cmFuc3BvcnQgPT0gby51c2VfbWVk
aWFfdHJhbnNwb3J0ICYmCisgICAgICAgICB1c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2No
YW5uZWxzID09CisgICAgICAgICAgICAgby51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2No
YW5uZWxzICYmCisgICAgICAgICBjcnlwdG9fb3B0aW9ucyA9PSBvLmNyeXB0b19vcHRpb25zICYm
CisgICAgICAgICBvZmZlcl9leHRtYXBfYWxsb3dfbWl4ZWQgPT0gby5vZmZlcl9leHRtYXBfYWxs
b3dfbWl4ZWQ7CiB9CiAKIGJvb2wgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3Vy
YXRpb246Om9wZXJhdG9yIT0oCkBAIC04MjAsNiArODYyLDcgQEAgUGVlckNvbm5lY3Rpb246On5Q
ZWVyQ29ubmVjdGlvbigpIHsKICAgd2VicnRjX3Nlc3Npb25fZGVzY19mYWN0b3J5Xy5yZXNldCgp
OwogICBzY3RwX2ludm9rZXJfLnJlc2V0KCk7CiAgIHNjdHBfZmFjdG9yeV8ucmVzZXQoKTsKKyAg
bWVkaWFfdHJhbnNwb3J0X2ludm9rZXJfLnJlc2V0KCk7CiAgIHRyYW5zcG9ydF9jb250cm9sbGVy
Xy5yZXNldCgpOwogCiAgIC8vIHBvcnRfYWxsb2NhdG9yXyBsaXZlcyBvbiB0aGUgbmV0d29yayB0
aHJlYWQgYW5kIHNob3VsZCBiZSBkZXN0cm95ZWQgdGhlcmUuCkBAIC05MjksMTggKzk3Miw0MCBA
QCBib29sIFBlZXJDb25uZWN0aW9uOjpJbml0aWFsaXplKAogICBjb25maWcuZGlzYWJsZV9lbmNy
eXB0aW9uID0gb3B0aW9ucy5kaXNhYmxlX2VuY3J5cHRpb247CiAgIGNvbmZpZy5idW5kbGVfcG9s
aWN5ID0gY29uZmlndXJhdGlvbi5idW5kbGVfcG9saWN5OwogICBjb25maWcucnRjcF9tdXhfcG9s
aWN5ID0gY29uZmlndXJhdGlvbi5ydGNwX211eF9wb2xpY3k7Ci0gIGNvbmZpZy5jcnlwdG9fb3B0
aW9ucyA9IG9wdGlvbnMuY3J5cHRvX29wdGlvbnM7CisgIC8vIFRPRE8oYnVncy53ZWJydGMub3Jn
Lzk4OTEpIC0gUmVtb3ZlIG9wdGlvbnMuY3J5cHRvX29wdGlvbnMgdGhlbiByZW1vdmUgdGhpcwor
ICAvLyBzdHViLgorICBjb25maWcuY3J5cHRvX29wdGlvbnMgPSBjb25maWd1cmF0aW9uLmNyeXB0
b19vcHRpb25zLmhhc192YWx1ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICpj
b25maWd1cmF0aW9uLmNyeXB0b19vcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IG9wdGlvbnMuY3J5cHRvX29wdGlvbnM7CiAgIGNvbmZpZy50cmFuc3BvcnRfb2JzZXJ2ZXIg
PSB0aGlzOwogICBjb25maWcuZXZlbnRfbG9nID0gZXZlbnRfbG9nXy5nZXQoKTsKICNpZiBkZWZp
bmVkKEVOQUJMRV9FWFRFUk5BTF9BVVRIKQogICBjb25maWcuZW5hYmxlX2V4dGVybmFsX2F1dGgg
PSB0cnVlOwogI2VuZGlmCiAgIGNvbmZpZy5hY3RpdmVfcmVzZXRfc3J0cF9wYXJhbXMgPSBjb25m
aWd1cmF0aW9uLmFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtczsKKworICBpZiAoY29uZmlndXJhdGlv
bi51c2VfbWVkaWFfdHJhbnNwb3J0IHx8CisgICAgICBjb25maWd1cmF0aW9uLnVzZV9tZWRpYV90
cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMpIHsKKyAgICBpZiAoIWZhY3RvcnlfLT5tZWRpYV90
cmFuc3BvcnRfZmFjdG9yeSgpKSB7CisgICAgICBSVENfRENIRUNLKGZhbHNlKQorICAgICAgICAg
IDw8ICJQZWVyQ29ubmVjdG9uIGlzIGluaXRpYWxpemVkIHdpdGggdXNlX21lZGlhX3RyYW5zcG9y
dCA9IHRydWUgb3IgIgorICAgICAgICAgIDw8ICJ1c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRh
X2NoYW5uZWxzID0gdHJ1ZSAiCisgICAgICAgICAgPDwgImJ1dCBtZWRpYSB0cmFuc3BvcnQgZmFj
dG9yeSBpcyBub3Qgc2V0IGluIFBlZXJDb25uZWN0aW9uRmFjdG9yeSI7CisgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgY29uZmlnLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5ID0gZmFj
dG9yeV8tPm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KCk7CisgIH0KKwogICB0cmFuc3BvcnRfY29u
dHJvbGxlcl8ucmVzZXQobmV3IEpzZXBUcmFuc3BvcnRDb250cm9sbGVyKAogICAgICAgc2lnbmFs
aW5nX3RocmVhZCgpLCBuZXR3b3JrX3RocmVhZCgpLCBwb3J0X2FsbG9jYXRvcl8uZ2V0KCksCiAg
ICAgICBhc3luY19yZXNvbHZlcl9mYWN0b3J5Xy5nZXQoKSwgY29uZmlnKSk7CiAgIHRyYW5zcG9y
dF9jb250cm9sbGVyXy0+U2lnbmFsSWNlQ29ubmVjdGlvblN0YXRlLmNvbm5lY3QoCiAgICAgICB0
aGlzLCAmUGVlckNvbm5lY3Rpb246Ok9uVHJhbnNwb3J0Q29udHJvbGxlckNvbm5lY3Rpb25TdGF0
ZSk7CisgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsU3RhbmRhcmRpemVkSWNlQ29ubmVj
dGlvblN0YXRlLmNvbm5lY3QoCisgICAgICB0aGlzLCAmUGVlckNvbm5lY3Rpb246OlNldFN0YW5k
YXJkaXplZEljZUNvbm5lY3Rpb25TdGF0ZSk7CisgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2ln
bmFsQ29ubmVjdGlvblN0YXRlLmNvbm5lY3QoCisgICAgICB0aGlzLCAmUGVlckNvbm5lY3Rpb246
OlNldENvbm5lY3Rpb25TdGF0ZSk7CiAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+U2lnbmFsSWNl
R2F0aGVyaW5nU3RhdGUuY29ubmVjdCgKICAgICAgIHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6T25U
cmFuc3BvcnRDb250cm9sbGVyR2F0aGVyaW5nU3RhdGUpOwogICB0cmFuc3BvcnRfY29udHJvbGxl
cl8tPlNpZ25hbEljZUNhbmRpZGF0ZXNHYXRoZXJlZC5jb25uZWN0KApAQCAtOTc5LDEwICsxMDQ0
LDE4IEBAIGJvb2wgUGVlckNvbm5lY3Rpb246OkluaXRpYWxpemUoCiAgICAgfQogICB9CiAKLSAg
Ly8gRW5hYmxlIGNyZWF0aW9uIG9mIFJUUCBkYXRhIGNoYW5uZWxzIGlmIHRoZSBrRW5hYmxlUnRw
RGF0YUNoYW5uZWxzIGlzIHNldC4KLSAgLy8gSXQgdGFrZXMgcHJlY2VuZGVuY2Ugb3ZlciB0aGUg
ZGlzYWJsZV9zY3RwX2RhdGFfY2hhbm5lbHMKLSAgLy8gUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50
ZXJmYWNlOjpPcHRpb25zLgotICBpZiAoY29uZmlndXJhdGlvbi5lbmFibGVfcnRwX2RhdGFfY2hh
bm5lbCkgeworICBpZiAoY29uZmlndXJhdGlvbi51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9kYXRh
X2NoYW5uZWxzKSB7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24uZW5hYmxlX3J0cF9kYXRhX2NoYW5u
ZWwpIHsKKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJlbmFibGVfcnRwX2RhdGFfY2hhbm5l
bCBhbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZV9tZWRpYV90cmFuc3BvcnRf
Zm9yX2RhdGFfY2hhbm5lbHMgYXJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNv
bXBhdGlibGUgYW5kIGNhbm5vdCBib3RoIGJlIHNldCB0byB0cnVlIjsKKyAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgZGF0YV9jaGFubmVsX3R5cGVfID0gY3JpY2tldDo6RENUX01FRElB
X1RSQU5TUE9SVDsKKyAgfSBlbHNlIGlmIChjb25maWd1cmF0aW9uLmVuYWJsZV9ydHBfZGF0YV9j
aGFubmVsKSB7CisgICAgLy8gRW5hYmxlIGNyZWF0aW9uIG9mIFJUUCBkYXRhIGNoYW5uZWxzIGlm
IHRoZSBrRW5hYmxlUnRwRGF0YUNoYW5uZWxzIGlzCisgICAgLy8gc2V0LiBJdCB0YWtlcyBwcmVj
ZW5kZW5jZSBvdmVyIHRoZSBkaXNhYmxlX3NjdHBfZGF0YV9jaGFubmVscworICAgIC8vIFBlZXJD
b25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6T3B0aW9ucy4KICAgICBkYXRhX2NoYW5uZWxfdHlw
ZV8gPSBjcmlja2V0OjpEQ1RfUlRQOwogICB9IGVsc2UgewogICAgIC8vIERUTFMgaGFzIHRvIGJl
IGVuYWJsZWQgdG8gdXNlIFNDVFAuCkBAIC0xMDAyLDYgKzEwNzUsOSBAQCBib29sIFBlZXJDb25u
ZWN0aW9uOjpJbml0aWFsaXplKAogICBhdWRpb19vcHRpb25zXy5hdWRpb19qaXR0ZXJfYnVmZmVy
X2Zhc3RfYWNjZWxlcmF0ZSA9CiAgICAgICBjb25maWd1cmF0aW9uLmF1ZGlvX2ppdHRlcl9idWZm
ZXJfZmFzdF9hY2NlbGVyYXRlOwogCisgIGF1ZGlvX29wdGlvbnNfLmF1ZGlvX2ppdHRlcl9idWZm
ZXJfbWluX2RlbGF5X21zID0KKyAgICAgIGNvbmZpZ3VyYXRpb24uYXVkaW9faml0dGVyX2J1ZmZl
cl9taW5fZGVsYXlfbXM7CisKICAgLy8gV2hldGhlciB0aGUgY2VydGlmaWNhdGUgZ2VuZXJhdG9y
L2NlcnRpZmljYXRlIGlzIG51bGwgb3Igbm90IGRldGVybWluZXMKICAgLy8gd2hhdCBQZWVyQ29u
bmVjdGlvbkRlc2NyaXB0aW9uRmFjdG9yeSB3aWxsIGRvLCBzbyBtYWtlIHN1cmUgdGhhdCB3ZSBn
aXZlIGl0CiAgIC8vIHRoZSByaWdodCBpbnN0cnVjdGlvbnMgYnkgY2xlYXJpbmcgdGhlIHZhcmlh
YmxlcyBpZiBuZWVkZWQuCkBAIC0xMDI0LDcgKzExMDAsNyBAQCBib29sIFBlZXJDb25uZWN0aW9u
OjpJbml0aWFsaXplKAogICB9CiAKICAgd2VicnRjX3Nlc3Npb25fZGVzY19mYWN0b3J5Xy0+c2V0
X2VuYWJsZV9lbmNyeXB0ZWRfcnRwX2hlYWRlcl9leHRlbnNpb25zKAotICAgICAgb3B0aW9ucy5j
cnlwdG9fb3B0aW9ucy5lbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyk7Cisg
ICAgICBHZXRDcnlwdG9PcHRpb25zKCkuc3J0cC5lbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJf
ZXh0ZW5zaW9ucyk7CiAKICAgLy8gQWRkIGRlZmF1bHQgYXVkaW8vdmlkZW8gdHJhbnNjZWl2ZXJz
IGZvciBQbGFuIEIgU0RQLgogICBpZiAoIUlzVW5pZmllZFBsYW4oKSkgewpAQCAtMTE4Myw3ICsx
MjU5LDcgQEAgUGVlckNvbm5lY3Rpb246OkFkZFRyYWNrUGxhbkIoCiAgIGF1dG8gbmV3X3NlbmRl
ciA9CiAgICAgICBDcmVhdGVTZW5kZXIobWVkaWFfdHlwZSwgdHJhY2stPmlkKCksIHRyYWNrLCBh
ZGp1c3RlZF9zdHJlYW1faWRzLCB7fSk7CiAgIGlmICh0cmFjay0+a2luZCgpID09IE1lZGlhU3Ry
ZWFtVHJhY2tJbnRlcmZhY2U6OmtBdWRpb0tpbmQpIHsKLSAgICBuZXdfc2VuZGVyLT5pbnRlcm5h
bCgpLT5TZXRWb2ljZU1lZGlhQ2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVsKCkpOworICAgIG5l
d19zZW5kZXItPmludGVybmFsKCktPlNldE1lZGlhQ2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVs
KCkpOwogICAgIEdldEF1ZGlvVHJhbnNjZWl2ZXIoKS0+aW50ZXJuYWwoKS0+QWRkU2VuZGVyKG5l
d19zZW5kZXIpOwogICAgIGNvbnN0IFJ0cFNlbmRlckluZm8qIHNlbmRlcl9pbmZvID0KICAgICAg
ICAgRmluZFNlbmRlckluZm8obG9jYWxfYXVkaW9fc2VuZGVyX2luZm9zXywKQEAgLTExOTMsNyAr
MTI2OSw3IEBAIFBlZXJDb25uZWN0aW9uOjpBZGRUcmFja1BsYW5CKAogICAgIH0KICAgfSBlbHNl
IHsKICAgICBSVENfRENIRUNLX0VRKE1lZGlhU3RyZWFtVHJhY2tJbnRlcmZhY2U6OmtWaWRlb0tp
bmQsIHRyYWNrLT5raW5kKCkpOwotICAgIG5ld19zZW5kZXItPmludGVybmFsKCktPlNldFZpZGVv
TWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWwoKSk7CisgICAgbmV3X3NlbmRlci0+aW50
ZXJuYWwoKS0+U2V0TWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWwoKSk7CiAgICAgR2V0
VmlkZW9UcmFuc2NlaXZlcigpLT5pbnRlcm5hbCgpLT5BZGRTZW5kZXIobmV3X3NlbmRlcik7CiAg
ICAgY29uc3QgUnRwU2VuZGVySW5mbyogc2VuZGVyX2luZm8gPQogICAgICAgICBGaW5kU2VuZGVy
SW5mbyhsb2NhbF92aWRlb19zZW5kZXJfaW5mb3NfLApAQCAtMTUyMywxNCArMTU5OSwxNCBAQCBy
dGM6OnNjb3BlZF9yZWZwdHI8UnRwU2VuZGVySW50ZXJmYWNlPiBQZWVyQ29ubmVjdGlvbjo6Q3Jl
YXRlU2VuZGVyKAogICBpZiAoa2luZCA9PSBNZWRpYVN0cmVhbVRyYWNrSW50ZXJmYWNlOjprQXVk
aW9LaW5kKSB7CiAgICAgYXV0byogYXVkaW9fc2VuZGVyID0gbmV3IEF1ZGlvUnRwU2VuZGVyKAog
ICAgICAgICB3b3JrZXJfdGhyZWFkKCksIHJ0Yzo6Q3JlYXRlUmFuZG9tVXVpZCgpLCBzdGF0c18u
Z2V0KCkpOwotICAgIGF1ZGlvX3NlbmRlci0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwodm9pY2VfbWVk
aWFfY2hhbm5lbCgpKTsKKyAgICBhdWRpb19zZW5kZXItPlNldE1lZGlhQ2hhbm5lbCh2b2ljZV9t
ZWRpYV9jaGFubmVsKCkpOwogICAgIG5ld19zZW5kZXIgPSBSdHBTZW5kZXJQcm94eVdpdGhJbnRl
cm5hbDxSdHBTZW5kZXJJbnRlcm5hbD46OkNyZWF0ZSgKICAgICAgICAgc2lnbmFsaW5nX3RocmVh
ZCgpLCBhdWRpb19zZW5kZXIpOwogICAgIEdldEF1ZGlvVHJhbnNjZWl2ZXIoKS0+aW50ZXJuYWwo
KS0+QWRkU2VuZGVyKG5ld19zZW5kZXIpOwogICB9IGVsc2UgaWYgKGtpbmQgPT0gTWVkaWFTdHJl
YW1UcmFja0ludGVyZmFjZTo6a1ZpZGVvS2luZCkgewogICAgIGF1dG8qIHZpZGVvX3NlbmRlciA9
CiAgICAgICAgIG5ldyBWaWRlb1J0cFNlbmRlcih3b3JrZXJfdGhyZWFkKCksIHJ0Yzo6Q3JlYXRl
UmFuZG9tVXVpZCgpKTsKLSAgICB2aWRlb19zZW5kZXItPlNldFZpZGVvTWVkaWFDaGFubmVsKHZp
ZGVvX21lZGlhX2NoYW5uZWwoKSk7CisgICAgdmlkZW9fc2VuZGVyLT5TZXRNZWRpYUNoYW5uZWwo
dmlkZW9fbWVkaWFfY2hhbm5lbCgpKTsKICAgICBuZXdfc2VuZGVyID0gUnRwU2VuZGVyUHJveHlX
aXRoSW50ZXJuYWw8UnRwU2VuZGVySW50ZXJuYWw+OjpDcmVhdGUoCiAgICAgICAgIHNpZ25hbGlu
Z190aHJlYWQoKSwgdmlkZW9fc2VuZGVyKTsKICAgICBHZXRWaWRlb1RyYW5zY2VpdmVyKCktPmlu
dGVybmFsKCktPkFkZFNlbmRlcihuZXdfc2VuZGVyKTsKQEAgLTE2NDcsNyArMTcyMyw3IEBAIHZv
aWQgUGVlckNvbm5lY3Rpb246OkdldFN0YXRzKAogICAgICAgICBicmVhazsKICAgICB9CiAgIH0K
LSAgLy8gSWYgdGhlcmUgaXMgbm8gfGludGVybmFsX3NlbmRlcnzCoHRoZW4gfHNlbGVjdG9yfCBp
cyBlaXRoZXIgbnVsbCBvciBkb2VzIG5vdAorICAvLyBJZiB0aGVyZSBpcyBubyB8aW50ZXJuYWxf
c2VuZGVyfCB0aGVuIHxzZWxlY3RvcnwgaXMgZWl0aGVyIG51bGwgb3IgZG9lcyBub3QKICAgLy8g
YmVsb25nIHRvIHRoZSBQZWVyQ29ubmVjdGlvbiAoaW4gUGxhbiBCLCBzZW5kZXJzIGNhbiBiZSBy
ZW1vdmVkIGZyb20gdGhlCiAgIC8vIFBlZXJDb25uZWN0aW9uKS4gVGhpcyBtZWFucyB0aGF0ICJh
bGwgdGhlIHN0YXRzIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZQogICAvLyBzZWxlY3RvciIgaXMg
YW4gZW1wdHkgc2V0LiBJbnZva2luZyBHZXRTdGF0c1JlcG9ydCgpIHdpdGggYSBudWxsIHNlbGVj
dG9yCkBAIC0xNjc1LDcgKzE3NTEsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpHZXRTdGF0cygK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIC8vIElmIHRoZXJlIGlzIG5vIHxpbnRlcm5h
bF9yZWNlaXZlcnzCoHRoZW4gfHNlbGVjdG9yfCBpcyBlaXRoZXIgbnVsbCBvciBkb2VzCisgIC8v
IElmIHRoZXJlIGlzIG5vIHxpbnRlcm5hbF9yZWNlaXZlcnwgdGhlbiB8c2VsZWN0b3J8IGlzIGVp
dGhlciBudWxsIG9yIGRvZXMKICAgLy8gbm90IGJlbG9uZyB0byB0aGUgUGVlckNvbm5lY3Rpb24g
KGluIFBsYW4gQiwgcmVjZWl2ZXJzIGNhbiBiZSByZW1vdmVkIGZyb20KICAgLy8gdGhlIFBlZXJD
b25uZWN0aW9uKS4gVGhpcyBtZWFucyB0aGF0ICJhbGwgdGhlIHN0YXRzIG9iamVjdHMgcmVwcmVz
ZW50aW5nCiAgIC8vIHRoZSBzZWxlY3RvciIgaXMgYW4gZW1wdHkgc2V0LiBJbnZva2luZyBHZXRT
dGF0c1JlcG9ydCgpIHdpdGggYSBudWxsCkBAIC0xNjkyLDYgKzE3NjgsMTYgQEAgUGVlckNvbm5l
Y3Rpb246OmljZV9jb25uZWN0aW9uX3N0YXRlKCkgewogICByZXR1cm4gaWNlX2Nvbm5lY3Rpb25f
c3RhdGVfOwogfQogCitQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRl
CitQZWVyQ29ubmVjdGlvbjo6c3RhbmRhcmRpemVkX2ljZV9jb25uZWN0aW9uX3N0YXRlKCkgewor
ICByZXR1cm4gc3RhbmRhcmRpemVkX2ljZV9jb25uZWN0aW9uX3N0YXRlXzsKK30KKworUGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUKK1BlZXJDb25uZWN0aW9uOjpw
ZWVyX2Nvbm5lY3Rpb25fc3RhdGUoKSB7CisgIHJldHVybiBjb25uZWN0aW9uX3N0YXRlXzsKK30K
KwogUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdhdGhlcmluZ1N0YXRlCiBQZWVyQ29ubmVj
dGlvbjo6aWNlX2dhdGhlcmluZ19zdGF0ZSgpIHsKICAgcmV0dXJuIGljZV9nYXRoZXJpbmdfc3Rh
dGVfOwpAQCAtMTk5NSw2ICsyMDgxLDE2IEBAIFJUQ0Vycm9yIFBlZXJDb25uZWN0aW9uOjpBcHBs
eUxvY2FsRGVzY3JpcHRpb24oCiAgIC8vIHxsb2NhbF9kZXNjcmlwdGlvbigpfC4KICAgUlRDX0RD
SEVDSyhsb2NhbF9kZXNjcmlwdGlvbigpKTsKIAorICBpZiAoIWlzX2NhbGxlcl8pIHsKKyAgICBp
ZiAocmVtb3RlX2Rlc2NyaXB0aW9uKCkpIHsKKyAgICAgIC8vIFJlbW90ZSBkZXNjcmlwdGlvbiB3
YXMgYXBwbGllZCBmaXJzdCwgc28gdGhpcyBQQyBpcyB0aGUgY2FsbGVlLgorICAgICAgaXNfY2Fs
bGVyXyA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAvLyBMb2NhbCBkZXNjcmlwdGlvbiBp
cyBhcHBsaWVkIGZpcnN0LCBzbyB0aGlzIFBDIGlzIHRoZSBjYWxsZXIuCisgICAgICBpc19jYWxs
ZXJfID0gdHJ1ZTsKKyAgICB9CisgIH0KKwogICBSVENFcnJvciBlcnJvciA9IFB1c2hkb3duVHJh
bnNwb3J0RGVzY3JpcHRpb24oY3JpY2tldDo6Q1NfTE9DQUwsIHR5cGUpOwogICBpZiAoIWVycm9y
Lm9rKCkpIHsKICAgICByZXR1cm4gZXJyb3I7CkBAIC0yMDc3LDcgKzIxNzMsNyBAQCBSVENFcnJv
ciBQZWVyQ29ubmVjdGlvbjo6QXBwbHlMb2NhbERlc2NyaXB0aW9uKAogICAvLyBJZiBzZXR0aW5n
IHRoZSBkZXNjcmlwdGlvbiBkZWNpZGVkIG91ciBTU0wgcm9sZSwgYWxsb2NhdGUgYW55IG5lY2Vz
c2FyeQogICAvLyBTQ1RQIHNpZHMuCiAgIHJ0Yzo6U1NMUm9sZSByb2xlOwotICBpZiAoZGF0YV9j
aGFubmVsX3R5cGUoKSA9PSBjcmlja2V0OjpEQ1RfU0NUUCAmJiBHZXRTY3RwU3NsUm9sZSgmcm9s
ZSkpIHsKKyAgaWYgKERhdGFDaGFubmVsOjpJc1NjdHBMaWtlKGRhdGFfY2hhbm5lbF90eXBlXykg
JiYgR2V0U2N0cFNzbFJvbGUoJnJvbGUpKSB7CiAgICAgQWxsb2NhdGVTY3RwU2lkcyhyb2xlKTsK
ICAgfQogCkBAIC0yMzUyLDcgKzI0NDgsNyBAQCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbjo6QXBw
bHlSZW1vdGVEZXNjcmlwdGlvbigKICAgLy8gSWYgc2V0dGluZyB0aGUgZGVzY3JpcHRpb24gZGVj
aWRlZCBvdXIgU1NMIHJvbGUsIGFsbG9jYXRlIGFueSBuZWNlc3NhcnkKICAgLy8gU0NUUCBzaWRz
LgogICBydGM6OlNTTFJvbGUgcm9sZTsKLSAgaWYgKGRhdGFfY2hhbm5lbF90eXBlKCkgPT0gY3Jp
Y2tldDo6RENUX1NDVFAgJiYgR2V0U2N0cFNzbFJvbGUoJnJvbGUpKSB7CisgIGlmIChEYXRhQ2hh
bm5lbDo6SXNTY3RwTGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pICYmIEdldFNjdHBTc2xSb2xlKCZy
b2xlKSkgewogICAgIEFsbG9jYXRlU2N0cFNpZHMocm9sZSk7CiAgIH0KIApAQCAtMjY0NiwxMSAr
Mjc0MiwxMSBAQCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbjo6VXBkYXRlVHJhbnNjZWl2ZXJDaGFu
bmVsKAogICAgIGNvbnN0IGNyaWNrZXQ6OkNvbnRlbnRHcm91cCogYnVuZGxlX2dyb3VwKSB7CiAg
IFJUQ19EQ0hFQ0soSXNVbmlmaWVkUGxhbigpKTsKICAgUlRDX0RDSEVDSyh0cmFuc2NlaXZlcik7
Ci0gIGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFs
KCktPmNoYW5uZWwoKTsKKyAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbCA9IHRy
YW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCk7CiAgIGlmIChjb250ZW50LnJlamVjdGVk
KSB7CiAgICAgaWYgKGNoYW5uZWwpIHsKICAgICAgIHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5T
ZXRDaGFubmVsKG51bGxwdHIpOwotICAgICAgRGVzdHJveUJhc2VDaGFubmVsKGNoYW5uZWwpOwor
ICAgICAgRGVzdHJveUNoYW5uZWxJbnRlcmZhY2UoY2hhbm5lbCk7CiAgICAgfQogICB9IGVsc2Ug
ewogICAgIGlmICghY2hhbm5lbCkgewpAQCAtMjY4Myw3ICsyNzc5LDcgQEAgUlRDRXJyb3IgUGVl
ckNvbm5lY3Rpb246OlVwZGF0ZURhdGFDaGFubmVsKAogICBpZiAoY29udGVudC5yZWplY3RlZCkg
ewogICAgIERlc3Ryb3lEYXRhQ2hhbm5lbCgpOwogICB9IGVsc2UgewotICAgIGlmICghcnRwX2Rh
dGFfY2hhbm5lbF8gJiYgIXNjdHBfdHJhbnNwb3J0XykgeworICAgIGlmICghcnRwX2RhdGFfY2hh
bm5lbF8gJiYgIXNjdHBfdHJhbnNwb3J0XyAmJiAhbWVkaWFfdHJhbnNwb3J0XykgewogICAgICAg
aWYgKCFDcmVhdGVEYXRhQ2hhbm5lbChjb250ZW50Lm5hbWUpKSB7CiAgICAgICAgIExPR19BTkRf
UkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGRhdGEgY2hhbm5lbC4iKTsKQEAgLTI4
NzAsNiArMjk2Niw0OSBAQCBib29sIFBlZXJDb25uZWN0aW9uOjpTZXRDb25maWd1cmF0aW9uKGNv
bnN0IFJUQ0NvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sCiAgICAgcmV0dXJuIFNhZmVTZXRF
cnJvcihSVENFcnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLCBlcnJvcik7CiAgIH0KIAor
ICBpZiAobG9jYWxfZGVzY3JpcHRpb24oKSAmJgorICAgICAgY29uZmlndXJhdGlvbi51c2VfbWVk
aWFfdHJhbnNwb3J0ICE9IGNvbmZpZ3VyYXRpb25fLnVzZV9tZWRpYV90cmFuc3BvcnQpIHsKKyAg
ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ2FuJ3QgY2hhbmdlIG1lZGlhX3RyYW5zcG9ydCBhZnRl
ciBjYWxsaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiU2V0TG9jYWxEZXNjcmlwdGlv
bi4iOworICAgIHJldHVybiBTYWZlU2V0RXJyb3IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX01PRElG
SUNBVElPTiwgZXJyb3IpOworICB9CisKKyAgaWYgKHJlbW90ZV9kZXNjcmlwdGlvbigpICYmCisg
ICAgICBjb25maWd1cmF0aW9uLnVzZV9tZWRpYV90cmFuc3BvcnQgIT0gY29uZmlndXJhdGlvbl8u
dXNlX21lZGlhX3RyYW5zcG9ydCkgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBj
aGFuZ2UgbWVkaWFfdHJhbnNwb3J0IGFmdGVyIGNhbGxpbmcgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICJTZXRSZW1vdGVEZXNjcmlwdGlvbi4iOworICAgIHJldHVybiBTYWZlU2V0RXJyb3Io
UlRDRXJyb3JUeXBlOjpJTlZBTElEX01PRElGSUNBVElPTiwgZXJyb3IpOworICB9CisKKyAgaWYg
KGxvY2FsX2Rlc2NyaXB0aW9uKCkgJiYKKyAgICAgIGNvbmZpZ3VyYXRpb24udXNlX21lZGlhX3Ry
YW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyAhPQorICAgICAgICAgIGNvbmZpZ3VyYXRpb25fLnVz
ZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMpIHsKKyAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiQ2FuJ3QgY2hhbmdlIG1lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyAi
CisgICAgICAgICAgICAgICAgICAgICAgICAgImFmdGVyIGNhbGxpbmcgU2V0TG9jYWxEZXNjcmlw
dGlvbi4iOworICAgIHJldHVybiBTYWZlU2V0RXJyb3IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX01P
RElGSUNBVElPTiwgZXJyb3IpOworICB9CisKKyAgaWYgKHJlbW90ZV9kZXNjcmlwdGlvbigpICYm
CisgICAgICBjb25maWd1cmF0aW9uLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5l
bHMgIT0KKyAgICAgICAgICBjb25maWd1cmF0aW9uXy51c2VfbWVkaWFfdHJhbnNwb3J0X2Zvcl9k
YXRhX2NoYW5uZWxzKSB7CisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNhbid0IGNoYW5nZSBt
ZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICJhZnRlciBjYWxsaW5nIFNldFJlbW90ZURlc2NyaXB0aW9uLiI7CisgICAgcmV0dXJuIFNh
ZmVTZXRFcnJvcihSVENFcnJvclR5cGU6OklOVkFMSURfTU9ESUZJQ0FUSU9OLCBlcnJvcik7Cisg
IH0KKworICBpZiAobG9jYWxfZGVzY3JpcHRpb24oKSAmJgorICAgICAgY29uZmlndXJhdGlvbi5j
cnlwdG9fb3B0aW9ucyAhPSBjb25maWd1cmF0aW9uXy5jcnlwdG9fb3B0aW9ucykgeworICAgIFJU
Q19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBjaGFuZ2UgY3J5cHRvX29wdGlvbnMgYWZ0ZXIgY2Fs
bGluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIlNldExvY2FsRGVzY3JpcHRpb24uIjsK
KyAgICByZXR1cm4gU2FmZVNldEVycm9yKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9NT0RJRklDQVRJ
T04sIGVycm9yKTsKKyAgfQorCisgIGlmIChjb25maWd1cmF0aW9uLnVzZV9tZWRpYV90cmFuc3Bv
cnRfZm9yX2RhdGFfY2hhbm5lbHMgfHwKKyAgICAgIGNvbmZpZ3VyYXRpb24udXNlX21lZGlhX3Ry
YW5zcG9ydCkgeworICAgIFJUQ19DSEVDSyhjb25maWd1cmF0aW9uLmJ1bmRsZV9wb2xpY3kgPT0g
a0J1bmRsZVBvbGljeU1heEJ1bmRsZSkKKyAgICAgICAgPDwgIk1lZGlhIHRyYW5zcG9ydCByZXF1
aXJlcyBNYXhCdW5kbGUgcG9saWN5LiI7CisgIH0KKwogICAvLyBUaGUgc2ltcGxlc3QgKGFuZCBt
b3N0IGZ1dHVyZS1jb21wYXRpYmxlKSB3YXkgdG8gdGVsbCBpZiB0aGUgY29uZmlnIHdhcwogICAv
LyBtb2RpZmllZCBpbiBhbiBpbnZhbGlkIHdheSBpcyB0byBjb3B5IGVhY2ggcHJvcGVydHkgd2Ug
ZG8gc3VwcG9ydAogICAvLyBtb2RpZnlpbmcsIHRoZW4gdXNlIG9wZXJhdG9yPT0uIFRoZXJlIGFy
ZSBmYXIgbW9yZSBwcm9wZXJ0aWVzIHdlIGRvbid0CkBAIC0yODk0LDYgKzMwMzMsOSBAQCBib29s
IFBlZXJDb25uZWN0aW9uOjpTZXRDb25maWd1cmF0aW9uKGNvbnN0IFJUQ0NvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24sCiAgIG1vZGlmaWVkX2NvbmZpZy5uZXR3b3JrX3ByZWZlcmVuY2UgPSBj
b25maWd1cmF0aW9uLm5ldHdvcmtfcHJlZmVyZW5jZTsKICAgbW9kaWZpZWRfY29uZmlnLmFjdGl2
ZV9yZXNldF9zcnRwX3BhcmFtcyA9CiAgICAgICBjb25maWd1cmF0aW9uLmFjdGl2ZV9yZXNldF9z
cnRwX3BhcmFtczsKKyAgbW9kaWZpZWRfY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnQgPSBjb25m
aWd1cmF0aW9uLnVzZV9tZWRpYV90cmFuc3BvcnQ7CisgIG1vZGlmaWVkX2NvbmZpZy51c2VfbWVk
aWFfdHJhbnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzID0KKyAgICAgIGNvbmZpZ3VyYXRpb24udXNl
X21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVsczsKICAgaWYgKGNvbmZpZ3VyYXRpb24g
IT0gbW9kaWZpZWRfY29uZmlnKSB7CiAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIk1vZGlmeWlu
ZyB0aGUgY29uZmlndXJhdGlvbiBpbiBhbiB1bnN1cHBvcnRlZCB3YXkuIjsKICAgICByZXR1cm4g
U2FmZVNldEVycm9yKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9NT0RJRklDQVRJT04sIGVycm9yKTsK
QEAgLTI5NTEsNiArMzA5MywxMSBAQCBib29sIFBlZXJDb25uZWN0aW9uOjpTZXRDb25maWd1cmF0
aW9uKGNvbnN0IFJUQ0NvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sCiAgIH0KIAogICB0cmFu
c3BvcnRfY29udHJvbGxlcl8tPlNldEljZUNvbmZpZyhQYXJzZUljZUNvbmZpZyhtb2RpZmllZF9j
b25maWcpKTsKKyAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TZXRNZWRpYVRyYW5zcG9ydEZhY3Rv
cnkoCisgICAgICBtb2RpZmllZF9jb25maWcudXNlX21lZGlhX3RyYW5zcG9ydCB8fAorICAgICAg
ICAgICAgICBtb2RpZmllZF9jb25maWcudXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFu
bmVscworICAgICAgICAgID8gZmFjdG9yeV8tPm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KCkKKyAg
ICAgICAgICA6IG51bGxwdHIpOwogCiAgIGlmIChjb25maWd1cmF0aW9uXy5hY3RpdmVfcmVzZXRf
c3J0cF9wYXJhbXMgIT0KICAgICAgIG1vZGlmaWVkX2NvbmZpZy5hY3RpdmVfcmVzZXRfc3J0cF9w
YXJhbXMpIHsKQEAgLTMxMTksNyArMzI2Niw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OlNldEF1
ZGlvUGxheW91dChib29sIHBsYXlvdXQpIHsKICAgICByZXR1cm47CiAgIH0KICAgYXV0byBhdWRp
b19zdGF0ZSA9Ci0gICAgICBmYWN0b3J5Xy0+Y2hhbm5lbF9tYW5hZ2VyKCktPm1lZGlhX2VuZ2lu
ZSgpLT5HZXRBdWRpb1N0YXRlKCk7CisgICAgICBmYWN0b3J5Xy0+Y2hhbm5lbF9tYW5hZ2VyKCkt
Pm1lZGlhX2VuZ2luZSgpLT52b2ljZSgpLkdldEF1ZGlvU3RhdGUoKTsKICAgYXVkaW9fc3RhdGUt
PlNldFBsYXlvdXQocGxheW91dCk7CiB9CiAKQEAgLTMxMzEsNyArMzI3OCw3IEBAIHZvaWQgUGVl
ckNvbm5lY3Rpb246OlNldEF1ZGlvUmVjb3JkaW5nKGJvb2wgcmVjb3JkaW5nKSB7CiAgICAgcmV0
dXJuOwogICB9CiAgIGF1dG8gYXVkaW9fc3RhdGUgPQotICAgICAgZmFjdG9yeV8tPmNoYW5uZWxf
bWFuYWdlcigpLT5tZWRpYV9lbmdpbmUoKS0+R2V0QXVkaW9TdGF0ZSgpOworICAgICAgZmFjdG9y
eV8tPmNoYW5uZWxfbWFuYWdlcigpLT5tZWRpYV9lbmdpbmUoKS0+dm9pY2UoKS5HZXRBdWRpb1N0
YXRlKCk7CiAgIGF1ZGlvX3N0YXRlLT5TZXRSZWNvcmRpbmcocmVjb3JkaW5nKTsKIH0KIApAQCAt
MzE0MSw3ICszMjg4LDcgQEAgUGVlckNvbm5lY3Rpb246OkdldFJlbW90ZUF1ZGlvU1NMQ2VydGlm
aWNhdGUoKSB7CiAgIGlmICghY2hhaW4gfHwgIWNoYWluLT5HZXRTaXplKCkpIHsKICAgICByZXR1
cm4gbnVsbHB0cjsKICAgfQotICByZXR1cm4gY2hhaW4tPkdldCgwKS5HZXRVbmlxdWVSZWZlcmVu
Y2UoKTsKKyAgcmV0dXJuIGNoYWluLT5HZXQoMCkuQ2xvbmUoKTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPHJ0Yzo6U1NMQ2VydENoYWluPgpAQCAtMzE3MCw5ICszMzE3LDEzIEBAIGJvb2wgUGVlckNv
bm5lY3Rpb246OlN0YXJ0UnRjRXZlbnRMb2cocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwKICAgY29u
c3Qgc2l6ZV90IG1heF9zaXplID0gKG1heF9zaXplX2J5dGVzIDwgMCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID8gUnRjRXZlbnRMb2c6OmtVbmxpbWl0ZWRPdXRwdXQKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogcnRjOjpzYXR1cmF0ZWRfY2FzdDxzaXplX3Q+KG1heF9z
aXplX2J5dGVzKTsKKyAgaW50NjRfdCBvdXRwdXRfcGVyaW9kX21zID0gd2VicnRjOjpSdGNFdmVu
dExvZzo6a0ltbWVkaWF0ZU91dHB1dDsKKyAgaWYgKGZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoIldl
YlJUQy1SdGNFdmVudExvZ05ld0Zvcm1hdCIpKSB7CisgICAgb3V0cHV0X3BlcmlvZF9tcyA9IDUw
MDA7CisgIH0KICAgcmV0dXJuIFN0YXJ0UnRjRXZlbnRMb2coCiAgICAgICBhYnNsOjptYWtlX3Vu
aXF1ZTxSdGNFdmVudExvZ091dHB1dEZpbGU+KGZpbGUsIG1heF9zaXplKSwKLSAgICAgIHdlYnJ0
Yzo6UnRjRXZlbnRMb2c6OmtJbW1lZGlhdGVPdXRwdXQpOworICAgICAgb3V0cHV0X3BlcmlvZF9t
cyk7CiB9CiAKIGJvb2wgUGVlckNvbm5lY3Rpb246OlN0YXJ0UnRjRXZlbnRMb2coc3RkOjp1bmlx
dWVfcHRyPFJ0Y0V2ZW50TG9nT3V0cHV0PiBvdXRwdXQsCkBAIC0zMzQ3LDcgKzM0OTgsNyBAQCB2
b2lkIFBlZXJDb25uZWN0aW9uOjpDcmVhdGVBdWRpb1JlY2VpdmVyKAogICAvLyB0aGUgY29uc3Ry
dWN0b3IgdGFraW5nIHN0cmVhbSBJRHMgaW5zdGVhZC4KICAgYXV0byogYXVkaW9fcmVjZWl2ZXIg
PSBuZXcgQXVkaW9SdHBSZWNlaXZlcigKICAgICAgIHdvcmtlcl90aHJlYWQoKSwgcmVtb3RlX3Nl
bmRlcl9pbmZvLnNlbmRlcl9pZCwgc3RyZWFtcyk7Ci0gIGF1ZGlvX3JlY2VpdmVyLT5TZXRWb2lj
ZU1lZGlhQ2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVsKCkpOworICBhdWRpb19yZWNlaXZlci0+
U2V0TWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWwoKSk7CiAgIGF1ZGlvX3JlY2VpdmVy
LT5TZXR1cE1lZGlhQ2hhbm5lbChyZW1vdGVfc2VuZGVyX2luZm8uZmlyc3Rfc3NyYyk7CiAgIGF1
dG8gcmVjZWl2ZXIgPSBSdHBSZWNlaXZlclByb3h5V2l0aEludGVybmFsPFJ0cFJlY2VpdmVySW50
ZXJuYWw+OjpDcmVhdGUoCiAgICAgICBzaWduYWxpbmdfdGhyZWFkKCksIGF1ZGlvX3JlY2VpdmVy
KTsKQEAgLTMzNjUsNyArMzUxNiw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkNyZWF0ZVZpZGVv
UmVjZWl2ZXIoCiAgIC8vIHRoZSBjb25zdHJ1Y3RvciB0YWtpbmcgc3RyZWFtIElEcyBpbnN0ZWFk
LgogICBhdXRvKiB2aWRlb19yZWNlaXZlciA9IG5ldyBWaWRlb1J0cFJlY2VpdmVyKAogICAgICAg
d29ya2VyX3RocmVhZCgpLCByZW1vdGVfc2VuZGVyX2luZm8uc2VuZGVyX2lkLCBzdHJlYW1zKTsK
LSAgdmlkZW9fcmVjZWl2ZXItPlNldFZpZGVvTWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5u
ZWwoKSk7CisgIHZpZGVvX3JlY2VpdmVyLT5TZXRNZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hh
bm5lbCgpKTsKICAgdmlkZW9fcmVjZWl2ZXItPlNldHVwTWVkaWFDaGFubmVsKHJlbW90ZV9zZW5k
ZXJfaW5mby5maXJzdF9zc3JjKTsKICAgYXV0byByZWNlaXZlciA9IFJ0cFJlY2VpdmVyUHJveHlX
aXRoSW50ZXJuYWw8UnRwUmVjZWl2ZXJJbnRlcm5hbD46OkNyZWF0ZSgKICAgICAgIHNpZ25hbGlu
Z190aHJlYWQoKSwgdmlkZW9fcmVjZWl2ZXIpOwpAQCAtMzQwOCw3ICszNTU5LDcgQEAgdm9pZCBQ
ZWVyQ29ubmVjdGlvbjo6QWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrSW50ZXJmYWNlKiB0cmFjaywK
ICAgLy8gTm9ybWFsIGNhc2U7IHdlJ3ZlIG5ldmVyIHNlZW4gdGhpcyB0cmFjayBiZWZvcmUuCiAg
IGF1dG8gbmV3X3NlbmRlciA9IENyZWF0ZVNlbmRlcihjcmlja2V0OjpNRURJQV9UWVBFX0FVRElP
LCB0cmFjay0+aWQoKSwgdHJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
c3RyZWFtLT5pZCgpfSwge30pOwotICBuZXdfc2VuZGVyLT5pbnRlcm5hbCgpLT5TZXRWb2ljZU1l
ZGlhQ2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVsKCkpOworICBuZXdfc2VuZGVyLT5pbnRlcm5h
bCgpLT5TZXRNZWRpYUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbCgpKTsKICAgR2V0QXVkaW9U
cmFuc2NlaXZlcigpLT5pbnRlcm5hbCgpLT5BZGRTZW5kZXIobmV3X3NlbmRlcik7CiAgIC8vIElm
IHRoZSBzZW5kZXIgaGFzIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIGluIFNEUCwgd2UgY2FsbCBT
ZXRTc3JjLAogICAvLyB3aGljaCB3aWxsIGNvbm5lY3QgdGhlIHNlbmRlciB0byB0aGUgdW5kZXJs
eWluZyB0cmFuc3BvcnQuIFRoaXMgY2FuCkBAIC0zNDUzLDcgKzM2MDQsNyBAQCB2b2lkIFBlZXJD
b25uZWN0aW9uOjpBZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2tJbnRlcmZhY2UqIHRyYWNrLAogICAv
LyBOb3JtYWwgY2FzZTsgd2UndmUgbmV2ZXIgc2VlbiB0aGlzIHRyYWNrIGJlZm9yZS4KICAgYXV0
byBuZXdfc2VuZGVyID0gQ3JlYXRlU2VuZGVyKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIHRy
YWNrLT5pZCgpLCB0cmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdHJl
YW0tPmlkKCl9LCB7fSk7Ci0gIG5ld19zZW5kZXItPmludGVybmFsKCktPlNldFZpZGVvTWVkaWFD
aGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWwoKSk7CisgIG5ld19zZW5kZXItPmludGVybmFsKCkt
PlNldE1lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsKCkpOwogICBHZXRWaWRlb1RyYW5z
Y2VpdmVyKCktPmludGVybmFsKCktPkFkZFNlbmRlcihuZXdfc2VuZGVyKTsKICAgY29uc3QgUnRw
U2VuZGVySW5mbyogc2VuZGVyX2luZm8gPQogICAgICAgRmluZFNlbmRlckluZm8obG9jYWxfdmlk
ZW9fc2VuZGVyX2luZm9zXywgc3RyZWFtLT5pZCgpLCB0cmFjay0+aWQoKSk7CkBAIC0zNDk1LDYg
KzM2NDYsMjkgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6U2V0SWNlQ29ubmVjdGlvblN0YXRlKElj
ZUNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpIHsKICAgT2JzZXJ2ZXIoKS0+T25JY2VDb25uZWN0
aW9uQ2hhbmdlKGljZV9jb25uZWN0aW9uX3N0YXRlXyk7CiB9CiAKK3ZvaWQgUGVlckNvbm5lY3Rp
b246OlNldFN0YW5kYXJkaXplZEljZUNvbm5lY3Rpb25TdGF0ZSgKKyAgICBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6SWNlQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0ZSkgeworICBSVENfRENIRUNL
KHNpZ25hbGluZ190aHJlYWQoKS0+SXNDdXJyZW50KCkpOworICBpZiAoc3RhbmRhcmRpemVkX2lj
ZV9jb25uZWN0aW9uX3N0YXRlXyA9PSBuZXdfc3RhdGUpCisgICAgcmV0dXJuOworICBpZiAoSXND
bG9zZWQoKSkKKyAgICByZXR1cm47CisgIHN0YW5kYXJkaXplZF9pY2VfY29ubmVjdGlvbl9zdGF0
ZV8gPSBuZXdfc3RhdGU7CisgIC8vIFRPRE8oam9uYXNvbHNzb24pOiBQYXNzIHRoaXMgdmFsdWUg
b24gdG8gT25JY2VDb25uZWN0aW9uQ2hhbmdlIGluc3RlYWQgb2YKKyAgLy8gdGhlIG9sZCBvbmUg
b25jZSBkaXNjb25uZWN0cyBhcmUgaGFuZGxlZCBwcm9wZXJseS4KK30KKwordm9pZCBQZWVyQ29u
bmVjdGlvbjo6U2V0Q29ubmVjdGlvblN0YXRlKAorICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpQZWVyQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0ZSkgeworICBSVENfRENIRUNLKHNpZ25hbGlu
Z190aHJlYWQoKS0+SXNDdXJyZW50KCkpOworICBpZiAoY29ubmVjdGlvbl9zdGF0ZV8gPT0gbmV3
X3N0YXRlKQorICAgIHJldHVybjsKKyAgaWYgKElzQ2xvc2VkKCkpCisgICAgcmV0dXJuOworICBj
b25uZWN0aW9uX3N0YXRlXyA9IG5ld19zdGF0ZTsKKyAgT2JzZXJ2ZXIoKS0+T25Db25uZWN0aW9u
Q2hhbmdlKG5ld19zdGF0ZSk7Cit9CisKIHZvaWQgUGVlckNvbm5lY3Rpb246Ok9uSWNlR2F0aGVy
aW5nQ2hhbmdlKAogICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0
ZSBuZXdfc3RhdGUpIHsKICAgUlRDX0RDSEVDSyhzaWduYWxpbmdfdGhyZWFkKCktPklzQ3VycmVu
dCgpKTsKQEAgLTM1NDIsNiArMzcxNiwxMCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpDaGFuZ2VT
aWduYWxpbmdTdGF0ZSgKICAgaWYgKHNpZ25hbGluZ19zdGF0ZSA9PSBrQ2xvc2VkKSB7CiAgICAg
aWNlX2Nvbm5lY3Rpb25fc3RhdGVfID0ga0ljZUNvbm5lY3Rpb25DbG9zZWQ7CiAgICAgT2JzZXJ2
ZXIoKS0+T25JY2VDb25uZWN0aW9uQ2hhbmdlKGljZV9jb25uZWN0aW9uX3N0YXRlXyk7CisgICAg
c3RhbmRhcmRpemVkX2ljZV9jb25uZWN0aW9uX3N0YXRlXyA9CisgICAgICAgIFBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGU6OmtJY2VDb25uZWN0aW9uQ2xvc2VkOwor
ICAgIGNvbm5lY3Rpb25fc3RhdGVfID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25u
ZWN0aW9uU3RhdGU6OmtDbG9zZWQ7CisgICAgT2JzZXJ2ZXIoKS0+T25Db25uZWN0aW9uQ2hhbmdl
KGNvbm5lY3Rpb25fc3RhdGVfKTsKICAgICBpZiAoaWNlX2dhdGhlcmluZ19zdGF0ZV8gIT0ga0lj
ZUdhdGhlcmluZ0NvbXBsZXRlKSB7CiAgICAgICBpY2VfZ2F0aGVyaW5nX3N0YXRlXyA9IGtJY2VH
YXRoZXJpbmdDb21wbGV0ZTsKICAgICAgIE9ic2VydmVyKCktPk9uSWNlR2F0aGVyaW5nQ2hhbmdl
KGljZV9nYXRoZXJpbmdfc3RhdGVfKTsKQEAgLTM2NDEsOCArMzgxOSwxNSBAQCB2b2lkIFBlZXJD
b25uZWN0aW9uOjpHZXRPcHRpb25zRm9yT2ZmZXIoCiAgIH0KIAogICBzZXNzaW9uX29wdGlvbnMt
PnJ0Y3BfY25hbWUgPSBydGNwX2NuYW1lXzsKLSAgc2Vzc2lvbl9vcHRpb25zLT5jcnlwdG9fb3B0
aW9ucyA9IGZhY3RvcnlfLT5vcHRpb25zKCkuY3J5cHRvX29wdGlvbnM7CisgIHNlc3Npb25fb3B0
aW9ucy0+Y3J5cHRvX29wdGlvbnMgPSBHZXRDcnlwdG9PcHRpb25zKCk7CiAgIHNlc3Npb25fb3B0
aW9ucy0+aXNfdW5pZmllZF9wbGFuID0gSXNVbmlmaWVkUGxhbigpOworICBzZXNzaW9uX29wdGlv
bnMtPnBvb2xlZF9pY2VfY3JlZGVudGlhbHMgPQorICAgICAgbmV0d29ya190aHJlYWQoKS0+SW52
b2tlPHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OkljZVBhcmFtZXRlcnM+PigKKyAgICAgICAgICBSVENf
RlJPTV9IRVJFLAorICAgICAgICAgIHJ0Yzo6QmluZCgmY3JpY2tldDo6UG9ydEFsbG9jYXRvcjo6
R2V0UG9vbGVkSWNlQ3JlZGVudGlhbHMsCisgICAgICAgICAgICAgICAgICAgIHBvcnRfYWxsb2Nh
dG9yXy5nZXQoKSkpOworICBzZXNzaW9uX29wdGlvbnMtPm9mZmVyX2V4dG1hcF9hbGxvd19taXhl
ZCA9CisgICAgICBjb25maWd1cmF0aW9uXy5vZmZlcl9leHRtYXBfYWxsb3dfbWl4ZWQ7CiB9CiAK
IHZvaWQgUGVlckNvbm5lY3Rpb246OkdldE9wdGlvbnNGb3JQbGFuQk9mZmVyKApAQCAtMzkwMSw4
ICs0MDg2LDEzIEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkdldE9wdGlvbnNGb3JBbnN3ZXIoCiAg
IH0KIAogICBzZXNzaW9uX29wdGlvbnMtPnJ0Y3BfY25hbWUgPSBydGNwX2NuYW1lXzsKLSAgc2Vz
c2lvbl9vcHRpb25zLT5jcnlwdG9fb3B0aW9ucyA9IGZhY3RvcnlfLT5vcHRpb25zKCkuY3J5cHRv
X29wdGlvbnM7CisgIHNlc3Npb25fb3B0aW9ucy0+Y3J5cHRvX29wdGlvbnMgPSBHZXRDcnlwdG9P
cHRpb25zKCk7CiAgIHNlc3Npb25fb3B0aW9ucy0+aXNfdW5pZmllZF9wbGFuID0gSXNVbmlmaWVk
UGxhbigpOworICBzZXNzaW9uX29wdGlvbnMtPnBvb2xlZF9pY2VfY3JlZGVudGlhbHMgPQorICAg
ICAgbmV0d29ya190aHJlYWQoKS0+SW52b2tlPHN0ZDo6dmVjdG9yPGNyaWNrZXQ6OkljZVBhcmFt
ZXRlcnM+PigKKyAgICAgICAgICBSVENfRlJPTV9IRVJFLAorICAgICAgICAgIHJ0Yzo6QmluZCgm
Y3JpY2tldDo6UG9ydEFsbG9jYXRvcjo6R2V0UG9vbGVkSWNlQ3JlZGVudGlhbHMsCisgICAgICAg
ICAgICAgICAgICAgIHBvcnRfYWxsb2NhdG9yXy5nZXQoKSkpOwogfQogCiB2b2lkIFBlZXJDb25u
ZWN0aW9uOjpHZXRPcHRpb25zRm9yUGxhbkJBbnN3ZXIoCkBAIC00MDY5LDYgKzQyNTksOCBAQCBh
YnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gUGVlckNvbm5lY3Rpb246OkdldERhdGFNaWQoKSBj
b25zdCB7CiAgICAgICByZXR1cm4gcnRwX2RhdGFfY2hhbm5lbF8tPmNvbnRlbnRfbmFtZSgpOwog
ICAgIGNhc2UgY3JpY2tldDo6RENUX1NDVFA6CiAgICAgICByZXR1cm4gc2N0cF9taWRfOworICAg
IGNhc2UgY3JpY2tldDo6RENUX01FRElBX1RSQU5TUE9SVDoKKyAgICAgIHJldHVybiBtZWRpYV90
cmFuc3BvcnRfZGF0YV9taWRfOwogICAgIGRlZmF1bHQ6CiAgICAgICByZXR1cm4gYWJzbDo6bnVs
bG9wdDsKICAgfQpAQCAtNDQzMSw3ICs0NjIzLDcgQEAgcnRjOjpzY29wZWRfcmVmcHRyPERhdGFD
aGFubmVsPiBQZWVyQ29ubmVjdGlvbjo6SW50ZXJuYWxDcmVhdGVEYXRhQ2hhbm5lbCgKICAgfQog
ICBJbnRlcm5hbERhdGFDaGFubmVsSW5pdCBuZXdfY29uZmlnID0KICAgICAgIGNvbmZpZyA/ICgq
Y29uZmlnKSA6IEludGVybmFsRGF0YUNoYW5uZWxJbml0KCk7Ci0gIGlmIChkYXRhX2NoYW5uZWxf
dHlwZSgpID09IGNyaWNrZXQ6OkRDVF9TQ1RQKSB7CisgIGlmIChEYXRhQ2hhbm5lbDo6SXNTY3Rw
TGlrZShkYXRhX2NoYW5uZWxfdHlwZV8pKSB7CiAgICAgaWYgKG5ld19jb25maWcuaWQgPCAwKSB7
CiAgICAgICBydGM6OlNTTFJvbGUgcm9sZTsKICAgICAgIGlmICgoR2V0U2N0cFNzbFJvbGUoJnJv
bGUpKSAmJgpAQCAtNDQ2Miw3ICs0NjU0LDcgQEAgcnRjOjpzY29wZWRfcmVmcHRyPERhdGFDaGFu
bmVsPiBQZWVyQ29ubmVjdGlvbjo6SW50ZXJuYWxDcmVhdGVEYXRhQ2hhbm5lbCgKICAgICB9CiAg
ICAgcnRwX2RhdGFfY2hhbm5lbHNfW2NoYW5uZWwtPmxhYmVsKCldID0gY2hhbm5lbDsKICAgfSBl
bHNlIHsKLSAgICBSVENfRENIRUNLKGNoYW5uZWwtPmRhdGFfY2hhbm5lbF90eXBlKCkgPT0gY3Jp
Y2tldDo6RENUX1NDVFApOworICAgIFJUQ19EQ0hFQ0soRGF0YUNoYW5uZWw6OklzU2N0cExpa2Uo
ZGF0YV9jaGFubmVsX3R5cGVfKSk7CiAgICAgc2N0cF9kYXRhX2NoYW5uZWxzXy5wdXNoX2JhY2so
Y2hhbm5lbCk7CiAgICAgY2hhbm5lbC0+U2lnbmFsQ2xvc2VkLmNvbm5lY3QodGhpcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUGVlckNvbm5lY3Rpb246Ok9uU2N0cERhdGFD
aGFubmVsQ2xvc2VkKTsKQEAgLTQ1NDIsNiArNDczNCwyNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9u
OjpPbkRhdGFDaGFubmVsT3Blbk1lc3NhZ2UoCiAgIE5vdGVVc2FnZUV2ZW50KFVzYWdlRXZlbnQ6
OkRBVEFfQURERUQpOwogfQogCitib29sIFBlZXJDb25uZWN0aW9uOjpIYW5kbGVPcGVuTWVzc2Fn
ZV9zKAorICAgIGNvbnN0IGNyaWNrZXQ6OlJlY2VpdmVEYXRhUGFyYW1zJiBwYXJhbXMsCisgICAg
Y29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgYnVmZmVyKSB7CisgIGlmIChwYXJhbXMudHlw
ZSA9PSBjcmlja2V0OjpETVRfQ09OVFJPTCAmJiBJc09wZW5NZXNzYWdlKGJ1ZmZlcikpIHsKKyAg
ICAvLyBSZWNlaXZlZCBPUEVOIG1lc3NhZ2U7IHBhcnNlIGFuZCBzaWduYWwgdGhhdCBhIG5ldyBk
YXRhIGNoYW5uZWwgc2hvdWxkCisgICAgLy8gYmUgY3JlYXRlZC4KKyAgICBzdGQ6OnN0cmluZyBs
YWJlbDsKKyAgICBJbnRlcm5hbERhdGFDaGFubmVsSW5pdCBjb25maWc7CisgICAgY29uZmlnLmlk
ID0gcGFyYW1zLnNzcmM7CisgICAgaWYgKCFQYXJzZURhdGFDaGFubmVsT3Blbk1lc3NhZ2UoYnVm
ZmVyLCAmbGFiZWwsICZjb25maWcpKSB7CisgICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJG
YWlsZWQgdG8gcGFyc2UgdGhlIE9QRU4gbWVzc2FnZSBmb3Igc3NyYyAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8IHBhcmFtcy5zc3JjOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIGNvbmZpZy5vcGVuX2hhbmRzaGFrZV9yb2xlID0gSW50ZXJuYWxEYXRhQ2hhbm5lbEluaXQ6
OmtBY2tlcjsKKyAgICBPbkRhdGFDaGFubmVsT3Blbk1lc3NhZ2UobGFiZWwsIGNvbmZpZyk7Cisg
ICAgcmV0dXJuIHRydWU7CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCiBydGM6OnNjb3BlZF9y
ZWZwdHI8UnRwVHJhbnNjZWl2ZXJQcm94eVdpdGhJbnRlcm5hbDxSdHBUcmFuc2NlaXZlcj4+CiBQ
ZWVyQ29ubmVjdGlvbjo6R2V0QXVkaW9UcmFuc2NlaXZlcigpIGNvbnN0IHsKICAgLy8gVGhpcyBt
ZXRob2Qgb25seSB3b3JrcyB3aXRoIFBsYW4gQiBTRFAsIHdoZXJlIHRoZXJlIGlzIGEgc2luZ2xl
CkBAIC00NzY5LDEwICs0OTgyLDEwIEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OlN0b3BSdGNFdmVu
dExvZ193KCkgewogICB9CiB9CiAKLWNyaWNrZXQ6OkJhc2VDaGFubmVsKiBQZWVyQ29ubmVjdGlv
bjo6R2V0Q2hhbm5lbCgKK2NyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIFBlZXJDb25uZWN0aW9u
OjpHZXRDaGFubmVsKAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUpIHsKICAg
Zm9yIChhdXRvIHRyYW5zY2VpdmVyIDogdHJhbnNjZWl2ZXJzXykgewotICAgIGNyaWNrZXQ6OkJh
c2VDaGFubmVsKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNoYW5uZWwoKTsK
KyAgICBjcmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmlu
dGVybmFsKCktPmNoYW5uZWwoKTsKICAgICBpZiAoY2hhbm5lbCAmJiBjaGFubmVsLT5jb250ZW50
X25hbWUoKSA9PSBjb250ZW50X25hbWUpIHsKICAgICAgIHJldHVybiBjaGFubmVsOwogICAgIH0K
QEAgLTQ3ODUsMTkgKzQ5OTgsMjUgQEAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIFBlZXJDb25uZWN0
aW9uOjpHZXRDaGFubmVsKAogfQogCiBib29sIFBlZXJDb25uZWN0aW9uOjpHZXRTY3RwU3NsUm9s
ZShydGM6OlNTTFJvbGUqIHJvbGUpIHsKKyAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3Ro
cmVhZCgpKTsKICAgaWYgKCFsb2NhbF9kZXNjcmlwdGlvbigpIHx8ICFyZW1vdGVfZGVzY3JpcHRp
b24oKSkgewogICAgIFJUQ19MT0coTFNfSU5GTykKICAgICAgICAgPDwgIkxvY2FsIGFuZCBSZW1v
dGUgZGVzY3JpcHRpb25zIG11c3QgYmUgYXBwbGllZCB0byBnZXQgdGhlICIKICAgICAgICAgICAg
IlNTTCBSb2xlIG9mIHRoZSBTQ1RQIHRyYW5zcG9ydC4iOwogICAgIHJldHVybiBmYWxzZTsKICAg
fQotICBpZiAoIXNjdHBfdHJhbnNwb3J0XykgeworICBpZiAoIXNjdHBfdHJhbnNwb3J0XyAmJiAh
bWVkaWFfdHJhbnNwb3J0XykgewogICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIk5vbi1yZWplY3Rl
ZCBTQ1RQIG09IHNlY3Rpb24gaXMgbmVlZGVkIHRvIGdldCB0aGUgIgogICAgICAgICAgICAgICAg
ICAgICAgICAgIlNTTCBSb2xlIG9mIHRoZSBTQ1RQIHRyYW5zcG9ydC4iOwogICAgIHJldHVybiBm
YWxzZTsKICAgfQogCi0gIGF1dG8gZHRsc19yb2xlID0gdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5H
ZXREdGxzUm9sZSgqc2N0cF9taWRfKTsKKyAgYWJzbDo6b3B0aW9uYWw8cnRjOjpTU0xSb2xlPiBk
dGxzX3JvbGU7CisgIGlmIChzY3RwX21pZF8pIHsKKyAgICBkdGxzX3JvbGUgPSB0cmFuc3BvcnRf
Y29udHJvbGxlcl8tPkdldER0bHNSb2xlKCpzY3RwX21pZF8pOworICB9IGVsc2UgaWYgKGlzX2Nh
bGxlcl8pIHsKKyAgICBkdGxzX3JvbGUgPSAqaXNfY2FsbGVyXyA/IHJ0Yzo6U1NMX1NFUlZFUiA6
IHJ0Yzo6U1NMX0NMSUVOVDsKKyAgfQogICBpZiAoZHRsc19yb2xlKSB7CiAgICAgKnJvbGUgPSAq
ZHRsc19yb2xlOwogICAgIHJldHVybiB0cnVlOwpAQCAtNDg4Myw3ICs1MTAyLDcgQEAgUlRDRXJy
b3IgUGVlckNvbm5lY3Rpb246OlB1c2hkb3duTWVkaWFEZXNjcmlwdGlvbigKICAgZm9yIChhdXRv
IHRyYW5zY2VpdmVyIDogdHJhbnNjZWl2ZXJzXykgewogICAgIGNvbnN0IENvbnRlbnRJbmZvKiBj
b250ZW50X2luZm8gPQogICAgICAgICBGaW5kTWVkaWFTZWN0aW9uRm9yVHJhbnNjZWl2ZXIodHJh
bnNjZWl2ZXIsIHNkZXNjKTsKLSAgICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IHRy
YW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCk7CisgICAgY3JpY2tldDo6Q2hhbm5lbElu
dGVyZmFjZSogY2hhbm5lbCA9IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5jaGFubmVsKCk7CiAg
ICAgaWYgKCFjaGFubmVsIHx8ICFjb250ZW50X2luZm8gfHwgY29udGVudF9pbmZvLT5yZWplY3Rl
ZCkgewogICAgICAgY29udGludWU7CiAgICAgfQpAQCAtNTA0MywxMSArNTI2MiwyMiBAQCBib29s
IFBlZXJDb25uZWN0aW9uOjpHZXRSZW1vdGVUcmFja0lkQnlTc3JjKHVpbnQzMl90IHNzcmMsCiBi
b29sIFBlZXJDb25uZWN0aW9uOjpTZW5kRGF0YShjb25zdCBjcmlja2V0OjpTZW5kRGF0YVBhcmFt
cyYgcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5
T25Xcml0ZUJ1ZmZlciYgcGF5bG9hZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
aWNrZXQ6OlNlbmREYXRhUmVzdWx0KiByZXN1bHQpIHsKLSAgaWYgKCFydHBfZGF0YV9jaGFubmVs
XyAmJiAhc2N0cF90cmFuc3BvcnRfKSB7Ci0gICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlNlbmRE
YXRhIGNhbGxlZCB3aGVuIHJ0cF9kYXRhX2NoYW5uZWxfICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiYW5kIHNjdHBfdHJhbnNwb3J0XyBhcmUgTlVMTC4iOworICBpZiAoIXJ0cF9kYXRhX2No
YW5uZWxfICYmICFzY3RwX3RyYW5zcG9ydF8gJiYgIW1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBS
VENfTE9HKExTX0VSUk9SKSA8PCAiU2VuZERhdGEgY2FsbGVkIHdoZW4gcnRwX2RhdGFfY2hhbm5l
bF8sICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAic2N0cF90cmFuc3BvcnRfLCBhbmQgbWVk
aWFfdHJhbnNwb3J0XyBhcmUgTlVMTC4iOwogICAgIHJldHVybiBmYWxzZTsKICAgfQorICBpZiAo
bWVkaWFfdHJhbnNwb3J0XykgeworICAgIFNlbmREYXRhUGFyYW1zIHNlbmRfcGFyYW1zOworICAg
IHNlbmRfcGFyYW1zLnR5cGUgPSBUb1dlYnJ0Y0RhdGFNZXNzYWdlVHlwZShwYXJhbXMudHlwZSk7
CisgICAgc2VuZF9wYXJhbXMub3JkZXJlZCA9IHBhcmFtcy5vcmRlcmVkOworICAgIGlmIChwYXJh
bXMubWF4X3J0eF9jb3VudCA+PSAwKSB7CisgICAgICBzZW5kX3BhcmFtcy5tYXhfcnR4X2NvdW50
ID0gcGFyYW1zLm1heF9ydHhfY291bnQ7CisgICAgfSBlbHNlIGlmIChwYXJhbXMubWF4X3J0eF9t
cyA+PSAwKSB7CisgICAgICBzZW5kX3BhcmFtcy5tYXhfcnR4X21zID0gcGFyYW1zLm1heF9ydHhf
bXM7CisgICAgfQorICAgIHJldHVybiBtZWRpYV90cmFuc3BvcnRfLT5TZW5kRGF0YShwYXJhbXMu
c2lkLCBzZW5kX3BhcmFtcywgcGF5bG9hZCkub2soKTsKKyAgfQogICByZXR1cm4gcnRwX2RhdGFf
Y2hhbm5lbF8KICAgICAgICAgICAgICA/IHJ0cF9kYXRhX2NoYW5uZWxfLT5TZW5kRGF0YShwYXJh
bXMsIHBheWxvYWQsIHJlc3VsdCkKICAgICAgICAgICAgICA6IG5ldHdvcmtfdGhyZWFkKCktPklu
dm9rZTxib29sPigKQEAgLTUwNTcsMTMgKzUyODcsMjMgQEAgYm9vbCBQZWVyQ29ubmVjdGlvbjo6
U2VuZERhdGEoY29uc3QgY3JpY2tldDo6U2VuZERhdGFQYXJhbXMmIHBhcmFtcywKIH0KIAogYm9v
bCBQZWVyQ29ubmVjdGlvbjo6Q29ubmVjdERhdGFDaGFubmVsKERhdGFDaGFubmVsKiB3ZWJydGNf
ZGF0YV9jaGFubmVsKSB7Ci0gIGlmICghcnRwX2RhdGFfY2hhbm5lbF8gJiYgIXNjdHBfdHJhbnNw
b3J0XykgeworICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkKCkpOworICBpZiAo
IXJ0cF9kYXRhX2NoYW5uZWxfICYmICFzY3RwX3RyYW5zcG9ydF8gJiYgIW1lZGlhX3RyYW5zcG9y
dF8pIHsKICAgICAvLyBEb24ndCBsb2cgYW4gZXJyb3IgaGVyZSwgYmVjYXVzZSBEYXRhQ2hhbm5l
bHMgYXJlIGV4cGVjdGVkIHRvIGNhbGwKICAgICAvLyBDb25uZWN0RGF0YUNoYW5uZWwgaW4gdGhp
cyBzdGF0ZS4gSXQncyB0aGUgb25seSB3YXkgdG8gaW5pdGlhbGx5IHRlbGwKICAgICAvLyB3aGV0
aGVyIG9yIG5vdCB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQgaXMgcmVhZHkuCiAgICAgcmV0dXJu
IGZhbHNlOwogICB9Ci0gIGlmIChydHBfZGF0YV9jaGFubmVsXykgeworICBpZiAobWVkaWFfdHJh
bnNwb3J0XykgeworICAgIFNpZ25hbE1lZGlhVHJhbnNwb3J0V3JpdGFibGVfcy5jb25uZWN0KHdl
YnJ0Y19kYXRhX2NoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJkRhdGFDaGFubmVsOjpPbkNoYW5uZWxSZWFkeSk7CisgICAgU2lnbmFsTWVkaWFUcmFu
c3BvcnRSZWNlaXZlZERhdGFfcy5jb25uZWN0KHdlYnJ0Y19kYXRhX2NoYW5uZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZEYXRhQ2hhbm5lbDo6T25E
YXRhUmVjZWl2ZWQpOworICAgIFNpZ25hbE1lZGlhVHJhbnNwb3J0Q2hhbm5lbENsb3Npbmdfcy5j
b25uZWN0KAorICAgICAgICB3ZWJydGNfZGF0YV9jaGFubmVsLCAmRGF0YUNoYW5uZWw6Ok9uQ2xv
c2luZ1Byb2NlZHVyZVN0YXJ0ZWRSZW1vdGVseSk7CisgICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRD
aGFubmVsQ2xvc2VkX3MuY29ubmVjdCgKKyAgICAgICAgd2VicnRjX2RhdGFfY2hhbm5lbCwgJkRh
dGFDaGFubmVsOjpPbkNsb3NpbmdQcm9jZWR1cmVDb21wbGV0ZSk7CisgIH0gZWxzZSBpZiAocnRw
X2RhdGFfY2hhbm5lbF8pIHsKICAgICBydHBfZGF0YV9jaGFubmVsXy0+U2lnbmFsUmVhZHlUb1Nl
bmREYXRhLmNvbm5lY3QoCiAgICAgICAgIHdlYnJ0Y19kYXRhX2NoYW5uZWwsICZEYXRhQ2hhbm5l
bDo6T25DaGFubmVsUmVhZHkpOwogICAgIHJ0cF9kYXRhX2NoYW5uZWxfLT5TaWduYWxEYXRhUmVj
ZWl2ZWQuY29ubmVjdCh3ZWJydGNfZGF0YV9jaGFubmVsLApAQCAtNTA4MiwxMyArNTMyMiwxOSBA
QCBib29sIFBlZXJDb25uZWN0aW9uOjpDb25uZWN0RGF0YUNoYW5uZWwoRGF0YUNoYW5uZWwqIHdl
YnJ0Y19kYXRhX2NoYW5uZWwpIHsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbjo6RGlzY29ubmVj
dERhdGFDaGFubmVsKERhdGFDaGFubmVsKiB3ZWJydGNfZGF0YV9jaGFubmVsKSB7Ci0gIGlmICgh
cnRwX2RhdGFfY2hhbm5lbF8gJiYgIXNjdHBfdHJhbnNwb3J0XykgeworICBSVENfRENIRUNLX1JV
Tl9PTihzaWduYWxpbmdfdGhyZWFkKCkpOworICBpZiAoIXJ0cF9kYXRhX2NoYW5uZWxfICYmICFz
Y3RwX3RyYW5zcG9ydF8gJiYgIW1lZGlhX3RyYW5zcG9ydF8pIHsKICAgICBSVENfTE9HKExTX0VS
Uk9SKQogICAgICAgICA8PCAiRGlzY29ubmVjdERhdGFDaGFubmVsIGNhbGxlZCB3aGVuIHJ0cF9k
YXRhX2NoYW5uZWxfIGFuZCAiCiAgICAgICAgICAgICJzY3RwX3RyYW5zcG9ydF8gYXJlIE5VTEwu
IjsKICAgICByZXR1cm47CiAgIH0KLSAgaWYgKHJ0cF9kYXRhX2NoYW5uZWxfKSB7CisgIGlmICht
ZWRpYV90cmFuc3BvcnRfKSB7CisgICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRXcml0YWJsZV9zLmRp
c2Nvbm5lY3Qod2VicnRjX2RhdGFfY2hhbm5lbCk7CisgICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRS
ZWNlaXZlZERhdGFfcy5kaXNjb25uZWN0KHdlYnJ0Y19kYXRhX2NoYW5uZWwpOworICAgIFNpZ25h
bE1lZGlhVHJhbnNwb3J0Q2hhbm5lbENsb3Npbmdfcy5kaXNjb25uZWN0KHdlYnJ0Y19kYXRhX2No
YW5uZWwpOworICAgIFNpZ25hbE1lZGlhVHJhbnNwb3J0Q2hhbm5lbENsb3NlZF9zLmRpc2Nvbm5l
Y3Qod2VicnRjX2RhdGFfY2hhbm5lbCk7CisgIH0gZWxzZSBpZiAocnRwX2RhdGFfY2hhbm5lbF8p
IHsKICAgICBydHBfZGF0YV9jaGFubmVsXy0+U2lnbmFsUmVhZHlUb1NlbmREYXRhLmRpc2Nvbm5l
Y3Qod2VicnRjX2RhdGFfY2hhbm5lbCk7CiAgICAgcnRwX2RhdGFfY2hhbm5lbF8tPlNpZ25hbERh
dGFSZWNlaXZlZC5kaXNjb25uZWN0KHdlYnJ0Y19kYXRhX2NoYW5uZWwpOwogICB9IGVsc2UgewpA
QCAtNTEwMCw2ICs1MzQ2LDEwIEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkRpc2Nvbm5lY3REYXRh
Q2hhbm5lbChEYXRhQ2hhbm5lbCogd2VicnRjX2RhdGFfY2hhbm5lbCkgewogfQogCiB2b2lkIFBl
ZXJDb25uZWN0aW9uOjpBZGRTY3RwRGF0YVN0cmVhbShpbnQgc2lkKSB7CisgIGlmIChtZWRpYV90
cmFuc3BvcnRfKSB7CisgICAgLy8gTm8tb3AuICBNZWRpYSB0cmFuc3BvcnQgZG9lcyBub3QgbmVl
ZCB0byBhZGQgc3RyZWFtcy4KKyAgICByZXR1cm47CisgIH0KICAgaWYgKCFzY3RwX3RyYW5zcG9y
dF8pIHsKICAgICBSVENfTE9HKExTX0VSUk9SKQogICAgICAgICA8PCAiQWRkU2N0cERhdGFTdHJl
YW0gY2FsbGVkIHdoZW4gc2N0cF90cmFuc3BvcnRfIGlzIE5VTEwuIjsKQEAgLTUxMTEsNiArNTM2
MSwxMCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpBZGRTY3RwRGF0YVN0cmVhbShpbnQgc2lkKSB7
CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb246OlJlbW92ZVNjdHBEYXRhU3RyZWFtKGludCBzaWQp
IHsKKyAgaWYgKG1lZGlhX3RyYW5zcG9ydF8pIHsKKyAgICBtZWRpYV90cmFuc3BvcnRfLT5DbG9z
ZUNoYW5uZWwoc2lkKTsKKyAgICByZXR1cm47CisgIH0KICAgaWYgKCFzY3RwX3RyYW5zcG9ydF8p
IHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiUmVtb3ZlU2N0cERhdGFTdHJlYW0gY2FsbGVk
IHdoZW4gc2N0cF90cmFuc3BvcnRfIGlzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiTlVM
TC4iOwpAQCAtNTEyMiwxMCArNTM3Niw0MyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpSZW1vdmVT
Y3RwRGF0YVN0cmVhbShpbnQgc2lkKSB7CiB9CiAKIGJvb2wgUGVlckNvbm5lY3Rpb246OlJlYWR5
VG9TZW5kRGF0YSgpIGNvbnN0IHsKKyAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVh
ZCgpKTsKICAgcmV0dXJuIChydHBfZGF0YV9jaGFubmVsXyAmJiBydHBfZGF0YV9jaGFubmVsXy0+
cmVhZHlfdG9fc2VuZF9kYXRhKCkpIHx8CisgICAgICAgICAobWVkaWFfdHJhbnNwb3J0XyAmJiBt
ZWRpYV90cmFuc3BvcnRfcmVhZHlfdG9fc2VuZF9kYXRhXykgfHwKICAgICAgICAgIHNjdHBfcmVh
ZHlfdG9fc2VuZF9kYXRhXzsKIH0KIAordm9pZCBQZWVyQ29ubmVjdGlvbjo6T25EYXRhUmVjZWl2
ZWQoaW50IGNoYW5uZWxfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
YXRhTWVzc2FnZVR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXImIGJ1ZmZlcikgeworICBjcmlja2V0OjpSZWNl
aXZlRGF0YVBhcmFtcyBwYXJhbXM7CisgIHBhcmFtcy5zaWQgPSBjaGFubmVsX2lkOworICBwYXJh
bXMudHlwZSA9IFRvQ3JpY2tldERhdGFNZXNzYWdlVHlwZSh0eXBlKTsKKyAgbWVkaWFfdHJhbnNw
b3J0X2ludm9rZXJfLT5Bc3luY0ludm9rZTx2b2lkPigKKyAgICAgIFJUQ19GUk9NX0hFUkUsIHNp
Z25hbGluZ190aHJlYWQoKSwgW3RoaXMsIHBhcmFtcywgYnVmZmVyXSB7CisgICAgICAgIFJUQ19E
Q0hFQ0tfUlVOX09OKHNpZ25hbGluZ190aHJlYWQoKSk7CisgICAgICAgIGlmICghSGFuZGxlT3Bl
bk1lc3NhZ2VfcyhwYXJhbXMsIGJ1ZmZlcikpIHsKKyAgICAgICAgICBTaWduYWxNZWRpYVRyYW5z
cG9ydFJlY2VpdmVkRGF0YV9zKHBhcmFtcywgYnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgfSk7
Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246Ok9uQ2hhbm5lbENsb3NpbmcoaW50IGNoYW5uZWxf
aWQpIHsKKyAgbWVkaWFfdHJhbnNwb3J0X2ludm9rZXJfLT5Bc3luY0ludm9rZTx2b2lkPigKKyAg
ICAgIFJUQ19GUk9NX0hFUkUsIHNpZ25hbGluZ190aHJlYWQoKSwgW3RoaXMsIGNoYW5uZWxfaWRd
IHsKKyAgICAgICAgUlRDX0RDSEVDS19SVU5fT04oc2lnbmFsaW5nX3RocmVhZCgpKTsKKyAgICAg
ICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRDaGFubmVsQ2xvc2luZ19zKGNoYW5uZWxfaWQpOworICAg
ICAgfSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246Ok9uQ2hhbm5lbENsb3NlZChpbnQgY2hh
bm5lbF9pZCkgeworICBtZWRpYV90cmFuc3BvcnRfaW52b2tlcl8tPkFzeW5jSW52b2tlPHZvaWQ+
KAorICAgICAgUlRDX0ZST01fSEVSRSwgc2lnbmFsaW5nX3RocmVhZCgpLCBbdGhpcywgY2hhbm5l
bF9pZF0geworICAgICAgICBSVENfRENIRUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkKCkpOwor
ICAgICAgICBTaWduYWxNZWRpYVRyYW5zcG9ydENoYW5uZWxDbG9zZWRfcyhjaGFubmVsX2lkKTsK
KyAgICAgIH0pOworfQorCiBhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gUGVlckNvbm5lY3Rp
b246OnNjdHBfdHJhbnNwb3J0X25hbWUoKSBjb25zdCB7CiAgIGlmIChzY3RwX21pZF8gJiYgdHJh
bnNwb3J0X2NvbnRyb2xsZXJfKSB7CiAgICAgYXV0byBkdGxzX3RyYW5zcG9ydCA9IHRyYW5zcG9y
dF9jb250cm9sbGVyXy0+R2V0RHRsc1RyYW5zcG9ydCgqc2N0cF9taWRfKTsKQEAgLTUxNTAsNyAr
NTQzNyw3IEBAIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gUGVlckNvbm5lY3Rp
b246OkdldFRyYW5zcG9ydE5hbWVzQnlNaWQoKQogICAgIGNvbnN0IHsKICAgc3RkOjptYXA8c3Rk
OjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiB0cmFuc3BvcnRfbmFtZXNfYnlfbWlkOwogICBmb3IgKGF1
dG8gdHJhbnNjZWl2ZXIgOiB0cmFuc2NlaXZlcnNfKSB7Ci0gICAgY3JpY2tldDo6QmFzZUNoYW5u
ZWwqIGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOworICAgIGNy
aWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwo
KS0+Y2hhbm5lbCgpOwogICAgIGlmIChjaGFubmVsKSB7CiAgICAgICB0cmFuc3BvcnRfbmFtZXNf
YnlfbWlkW2NoYW5uZWwtPmNvbnRlbnRfbmFtZSgpXSA9CiAgICAgICAgICAgY2hhbm5lbC0+dHJh
bnNwb3J0X25hbWUoKTsKQEAgLTUzMjcsNyArNTYxNCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246
Ok9uVHJhbnNwb3J0Q29udHJvbGxlckR0bHNIYW5kc2hha2VFcnJvcigKIAogdm9pZCBQZWVyQ29u
bmVjdGlvbjo6RW5hYmxlU2VuZGluZygpIHsKICAgZm9yIChhdXRvIHRyYW5zY2VpdmVyIDogdHJh
bnNjZWl2ZXJzXykgewotICAgIGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsID0gdHJhbnNj
ZWl2ZXItPmludGVybmFsKCktPmNoYW5uZWwoKTsKKyAgICBjcmlja2V0OjpDaGFubmVsSW50ZXJm
YWNlKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNoYW5uZWwoKTsKICAgICBp
ZiAoY2hhbm5lbCAmJiAhY2hhbm5lbC0+ZW5hYmxlZCgpKSB7CiAgICAgICBjaGFubmVsLT5FbmFi
bGUodHJ1ZSk7CiAgICAgfQpAQCAtNTQ4Niw3ICs1NzczLDcgQEAgUlRDRXJyb3IgUGVlckNvbm5l
Y3Rpb246OkNyZWF0ZUNoYW5uZWxzKGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiYgZGVzYykgewog
CiAgIGNvbnN0IGNyaWNrZXQ6OkNvbnRlbnRJbmZvKiBkYXRhID0gY3JpY2tldDo6R2V0Rmlyc3RE
YXRhQ29udGVudCgmZGVzYyk7CiAgIGlmIChkYXRhX2NoYW5uZWxfdHlwZV8gIT0gY3JpY2tldDo6
RENUX05PTkUgJiYgZGF0YSAmJiAhZGF0YS0+cmVqZWN0ZWQgJiYKLSAgICAgICFydHBfZGF0YV9j
aGFubmVsXyAmJiAhc2N0cF90cmFuc3BvcnRfKSB7CisgICAgICAhcnRwX2RhdGFfY2hhbm5lbF8g
JiYgIXNjdHBfdHJhbnNwb3J0XyAmJiAhbWVkaWFfdHJhbnNwb3J0XykgewogICAgIGlmICghQ3Jl
YXRlRGF0YUNoYW5uZWwoZGF0YS0+bmFtZSkpIHsKICAgICAgIExPR19BTkRfUkVUVVJOX0VSUk9S
KFJUQ0Vycm9yVHlwZTo6SU5URVJOQUxfRVJST1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRmFpbGVkIHRvIGNyZWF0ZSBkYXRhIGNoYW5uZWwuIik7CkBAIC01NDk5LDEzICs1Nzg2LDE2
IEBAIFJUQ0Vycm9yIFBlZXJDb25uZWN0aW9uOjpDcmVhdGVDaGFubmVscyhjb25zdCBTZXNzaW9u
RGVzY3JpcHRpb24mIGRlc2MpIHsKIC8vIFRPRE8oc3RldmVhbnRvbik6IFBlcmhhcHMgdGhpcyBz
aG91bGQgYmUgbWFuYWdlZCBieSB0aGUgUnRwVHJhbnNjZWl2ZXIuCiBjcmlja2V0OjpWb2ljZUNo
YW5uZWwqIFBlZXJDb25uZWN0aW9uOjpDcmVhdGVWb2ljZUNoYW5uZWwoCiAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIG1pZCkgewotICBSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCA9
Ci0gICAgICB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldFJ0cFRyYW5zcG9ydChtaWQpOwotICBS
VENfRENIRUNLKHJ0cF90cmFuc3BvcnQpOworICBSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3Ry
YW5zcG9ydCA9IEdldFJ0cFRyYW5zcG9ydChtaWQpOworICBNZWRpYVRyYW5zcG9ydEludGVyZmFj
ZSogbWVkaWFfdHJhbnNwb3J0ID0gbnVsbHB0cjsKKyAgaWYgKGNvbmZpZ3VyYXRpb25fLnVzZV9t
ZWRpYV90cmFuc3BvcnQpIHsKKyAgICBtZWRpYV90cmFuc3BvcnQgPSBHZXRNZWRpYVRyYW5zcG9y
dChtaWQpOworICB9CisKICAgY3JpY2tldDo6Vm9pY2VDaGFubmVsKiB2b2ljZV9jaGFubmVsID0g
Y2hhbm5lbF9tYW5hZ2VyKCktPkNyZWF0ZVZvaWNlQ2hhbm5lbCgKLSAgICAgIGNhbGxfLmdldCgp
LCBjb25maWd1cmF0aW9uXy5tZWRpYV9jb25maWcsIHJ0cF90cmFuc3BvcnQsCi0gICAgICBzaWdu
YWxpbmdfdGhyZWFkKCksIG1pZCwgU3J0cFJlcXVpcmVkKCksCi0gICAgICBmYWN0b3J5Xy0+b3B0
aW9ucygpLmNyeXB0b19vcHRpb25zLCBhdWRpb19vcHRpb25zXyk7CisgICAgICBjYWxsXy5nZXQo
KSwgY29uZmlndXJhdGlvbl8ubWVkaWFfY29uZmlnLCBydHBfdHJhbnNwb3J0LCBtZWRpYV90cmFu
c3BvcnQsCisgICAgICBzaWduYWxpbmdfdGhyZWFkKCksIG1pZCwgU3J0cFJlcXVpcmVkKCksIEdl
dENyeXB0b09wdGlvbnMoKSwKKyAgICAgIGF1ZGlvX29wdGlvbnNfKTsKICAgaWYgKCF2b2ljZV9j
aGFubmVsKSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KQEAgLTU1MjEsMTMgKzU4MTEsMTMg
QEAgY3JpY2tldDo6Vm9pY2VDaGFubmVsKiBQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlVm9pY2VDaGFu
bmVsKAogLy8gVE9ETyhzdGV2ZWFudG9uKTogUGVyaGFwcyB0aGlzIHNob3VsZCBiZSBtYW5hZ2Vk
IGJ5IHRoZSBSdHBUcmFuc2NlaXZlci4KIGNyaWNrZXQ6OlZpZGVvQ2hhbm5lbCogUGVlckNvbm5l
Y3Rpb246OkNyZWF0ZVZpZGVvQ2hhbm5lbCgKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlkKSB7
Ci0gIFJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0ID0KLSAgICAgIHRyYW5zcG9y
dF9jb250cm9sbGVyXy0+R2V0UnRwVHJhbnNwb3J0KG1pZCk7Ci0gIFJUQ19EQ0hFQ0socnRwX3Ry
YW5zcG9ydCk7CisgIFJ0cFRyYW5zcG9ydEludGVybmFsKiBydHBfdHJhbnNwb3J0ID0gR2V0UnRw
VHJhbnNwb3J0KG1pZCk7CisKKyAgLy8gVE9ETyhzdWtoYW5vdik6IFByb3BhZ2F0ZSBtZWRpYV90
cmFuc3BvcnQgdG8gdmlkZW8gY2hhbm5lbC4KICAgY3JpY2tldDo6VmlkZW9DaGFubmVsKiB2aWRl
b19jaGFubmVsID0gY2hhbm5lbF9tYW5hZ2VyKCktPkNyZWF0ZVZpZGVvQ2hhbm5lbCgKICAgICAg
IGNhbGxfLmdldCgpLCBjb25maWd1cmF0aW9uXy5tZWRpYV9jb25maWcsIHJ0cF90cmFuc3BvcnQs
Ci0gICAgICBzaWduYWxpbmdfdGhyZWFkKCksIG1pZCwgU3J0cFJlcXVpcmVkKCksCi0gICAgICBm
YWN0b3J5Xy0+b3B0aW9ucygpLmNyeXB0b19vcHRpb25zLCB2aWRlb19vcHRpb25zXyk7CisgICAg
ICBzaWduYWxpbmdfdGhyZWFkKCksIG1pZCwgU3J0cFJlcXVpcmVkKCksIEdldENyeXB0b09wdGlv
bnMoKSwKKyAgICAgIHZpZGVvX29wdGlvbnNfKTsKICAgaWYgKCF2aWRlb19jaGFubmVsKSB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KQEAgLTU1NDEsMzcgKzU4MzEsNDkgQEAgY3JpY2tldDo6
VmlkZW9DaGFubmVsKiBQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlVmlkZW9DaGFubmVsKAogfQogCiBi
b29sIFBlZXJDb25uZWN0aW9uOjpDcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBzdGQ6OnN0cmluZyYg
bWlkKSB7Ci0gIGJvb2wgc2N0cCA9IChkYXRhX2NoYW5uZWxfdHlwZV8gPT0gY3JpY2tldDo6RENU
X1NDVFApOwotICBpZiAoc2N0cCkgewotICAgIGlmICghc2N0cF9mYWN0b3J5XykgewotICAgICAg
UlRDX0xPRyhMU19FUlJPUikKLSAgICAgICAgICA8PCAiVHJ5aW5nIHRvIGNyZWF0ZSBTQ1RQIHRy
YW5zcG9ydCwgYnV0IGRpZG4ndCBjb21waWxlIHdpdGggIgotICAgICAgICAgICAgICJTQ1RQIHN1
cHBvcnQgKEhBVkVfU0NUUCkiOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAo
IW5ldHdvcmtfdGhyZWFkKCktPkludm9rZTxib29sPigKLSAgICAgICAgICAgIFJUQ19GUk9NX0hF
UkUsCi0gICAgICAgICAgICBydGM6OkJpbmQoJlBlZXJDb25uZWN0aW9uOjpDcmVhdGVTY3RwVHJh
bnNwb3J0X24sIHRoaXMsIG1pZCkpKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IGZvciAoY29uc3QgYXV0byYgY2hhbm5lbCA6IHNjdHBfZGF0YV9jaGFubmVsc18pIHsKLSAgICAg
IGNoYW5uZWwtPk9uVHJhbnNwb3J0Q2hhbm5lbENyZWF0ZWQoKTsKLSAgICB9Ci0gIH0gZWxzZSB7
Ci0gICAgUnRwVHJhbnNwb3J0SW50ZXJuYWwqIHJ0cF90cmFuc3BvcnQgPQotICAgICAgICB0cmFu
c3BvcnRfY29udHJvbGxlcl8tPkdldFJ0cFRyYW5zcG9ydChtaWQpOwotICAgIFJUQ19EQ0hFQ0so
cnRwX3RyYW5zcG9ydCk7Ci0gICAgcnRwX2RhdGFfY2hhbm5lbF8gPSBjaGFubmVsX21hbmFnZXIo
KS0+Q3JlYXRlUnRwRGF0YUNoYW5uZWwoCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fLm1lZGlhX2Nv
bmZpZywgcnRwX3RyYW5zcG9ydCwgc2lnbmFsaW5nX3RocmVhZCgpLCBtaWQsCi0gICAgICAgIFNy
dHBSZXF1aXJlZCgpLCBmYWN0b3J5Xy0+b3B0aW9ucygpLmNyeXB0b19vcHRpb25zKTsKLSAgICBp
ZiAoIXJ0cF9kYXRhX2NoYW5uZWxfKSB7CisgIHN3aXRjaCAoZGF0YV9jaGFubmVsX3R5cGVfKSB7
CisgICAgY2FzZSBjcmlja2V0OjpEQ1RfTUVESUFfVFJBTlNQT1JUOgorICAgICAgaWYgKG5ldHdv
cmtfdGhyZWFkKCktPkludm9rZTxib29sPigKKyAgICAgICAgICAgICAgUlRDX0ZST01fSEVSRSwK
KyAgICAgICAgICAgICAgcnRjOjpCaW5kKCZQZWVyQ29ubmVjdGlvbjo6U2V0dXBNZWRpYVRyYW5z
cG9ydEZvckRhdGFDaGFubmVsc19uLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgbWlk
KSkpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGFubmVsIDogc2N0cF9kYXRhX2NoYW5u
ZWxzXykgeworICAgICAgICAgIGNoYW5uZWwtPk9uVHJhbnNwb3J0Q2hhbm5lbENyZWF0ZWQoKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcnRwX2RhdGFfY2hhbm5lbF8tPlNpZ25hbER0bHNTcnRwU2V0dXBG
YWlsdXJlLmNvbm5lY3QoCi0gICAgICAgIHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6T25EdGxzU3J0
cFNldHVwRmFpbHVyZSk7Ci0gICAgcnRwX2RhdGFfY2hhbm5lbF8tPlNpZ25hbFNlbnRQYWNrZXQu
Y29ubmVjdCgKLSAgICAgICAgdGhpcywgJlBlZXJDb25uZWN0aW9uOjpPblNlbnRQYWNrZXRfdyk7
Ci0gICAgcnRwX2RhdGFfY2hhbm5lbF8tPlNldFJ0cFRyYW5zcG9ydChydHBfdHJhbnNwb3J0KTsK
KyAgICBjYXNlIGNyaWNrZXQ6OkRDVF9TQ1RQOgorICAgICAgaWYgKCFzY3RwX2ZhY3RvcnlfKSB7
CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpCisgICAgICAgICAgICA8PCAiVHJ5aW5nIHRvIGNy
ZWF0ZSBTQ1RQIHRyYW5zcG9ydCwgYnV0IGRpZG4ndCBjb21waWxlIHdpdGggIgorICAgICAgICAg
ICAgICAgIlNDVFAgc3VwcG9ydCAoSEFWRV9TQ1RQKSI7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgIH0KKyAgICAgIGlmICghbmV0d29ya190aHJlYWQoKS0+SW52b2tlPGJvb2w+KAorICAg
ICAgICAgICAgICBSVENfRlJPTV9IRVJFLAorICAgICAgICAgICAgICBydGM6OkJpbmQoJlBlZXJD
b25uZWN0aW9uOjpDcmVhdGVTY3RwVHJhbnNwb3J0X24sIHRoaXMsIG1pZCkpKSB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIGZvciAoY29uc3QgYXV0byYgY2hhbm5lbCA6
IHNjdHBfZGF0YV9jaGFubmVsc18pIHsKKyAgICAgICAgY2hhbm5lbC0+T25UcmFuc3BvcnRDaGFu
bmVsQ3JlYXRlZCgpOworICAgICAgfQorICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBjcmlj
a2V0OjpEQ1RfUlRQOgorICAgIGRlZmF1bHQ6CisgICAgICBSdHBUcmFuc3BvcnRJbnRlcm5hbCog
cnRwX3RyYW5zcG9ydCA9IEdldFJ0cFRyYW5zcG9ydChtaWQpOworICAgICAgcnRwX2RhdGFfY2hh
bm5lbF8gPSBjaGFubmVsX21hbmFnZXIoKS0+Q3JlYXRlUnRwRGF0YUNoYW5uZWwoCisgICAgICAg
ICAgY29uZmlndXJhdGlvbl8ubWVkaWFfY29uZmlnLCBydHBfdHJhbnNwb3J0LCBzaWduYWxpbmdf
dGhyZWFkKCksIG1pZCwKKyAgICAgICAgICBTcnRwUmVxdWlyZWQoKSwgR2V0Q3J5cHRvT3B0aW9u
cygpKTsKKyAgICAgIGlmICghcnRwX2RhdGFfY2hhbm5lbF8pIHsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgfQorICAgICAgcnRwX2RhdGFfY2hhbm5lbF8tPlNpZ25hbER0bHNTcnRwU2V0
dXBGYWlsdXJlLmNvbm5lY3QoCisgICAgICAgICAgdGhpcywgJlBlZXJDb25uZWN0aW9uOjpPbkR0
bHNTcnRwU2V0dXBGYWlsdXJlKTsKKyAgICAgIHJ0cF9kYXRhX2NoYW5uZWxfLT5TaWduYWxTZW50
UGFja2V0LmNvbm5lY3QoCisgICAgICAgICAgdGhpcywgJlBlZXJDb25uZWN0aW9uOjpPblNlbnRQ
YWNrZXRfdyk7CisgICAgICBydHBfZGF0YV9jaGFubmVsXy0+U2V0UnRwVHJhbnNwb3J0KHJ0cF90
cmFuc3BvcnQpOworICAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICByZXR1cm4gdHJ1ZTsKQEAg
LTU2NjEsMjIgKzU5NjMsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpPblNjdHBUcmFuc3BvcnRE
YXRhUmVjZWl2ZWRfbigKIHZvaWQgUGVlckNvbm5lY3Rpb246Ok9uU2N0cFRyYW5zcG9ydERhdGFS
ZWNlaXZlZF9zKAogICAgIGNvbnN0IGNyaWNrZXQ6OlJlY2VpdmVEYXRhUGFyYW1zJiBwYXJhbXMs
CiAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgcGF5bG9hZCkgewotICBSVENfRENI
RUNLKHNpZ25hbGluZ190aHJlYWQoKS0+SXNDdXJyZW50KCkpOwotICBpZiAocGFyYW1zLnR5cGUg
PT0gY3JpY2tldDo6RE1UX0NPTlRST0wgJiYgSXNPcGVuTWVzc2FnZShwYXlsb2FkKSkgewotICAg
IC8vIFJlY2VpdmVkIE9QRU4gbWVzc2FnZTsgcGFyc2UgYW5kIHNpZ25hbCB0aGF0IGEgbmV3IGRh
dGEgY2hhbm5lbCBzaG91bGQKLSAgICAvLyBiZSBjcmVhdGVkLgotICAgIHN0ZDo6c3RyaW5nIGxh
YmVsOwotICAgIEludGVybmFsRGF0YUNoYW5uZWxJbml0IGNvbmZpZzsKLSAgICBjb25maWcuaWQg
PSBwYXJhbXMuc3NyYzsKLSAgICBpZiAoIVBhcnNlRGF0YUNoYW5uZWxPcGVuTWVzc2FnZShwYXls
b2FkLCAmbGFiZWwsICZjb25maWcpKSB7Ci0gICAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJG
YWlsZWQgdG8gcGFyc2UgdGhlIE9QRU4gbWVzc2FnZSBmb3Igc2lkICIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgcGFyYW1zLnNzcmM7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIGNv
bmZpZy5vcGVuX2hhbmRzaGFrZV9yb2xlID0gSW50ZXJuYWxEYXRhQ2hhbm5lbEluaXQ6OmtBY2tl
cjsKLSAgICBPbkRhdGFDaGFubmVsT3Blbk1lc3NhZ2UobGFiZWwsIGNvbmZpZyk7Ci0gIH0gZWxz
ZSB7Ci0gICAgLy8gT3RoZXJ3aXNlIGp1c3QgZm9yd2FyZCB0aGUgc2lnbmFsLgorICBSVENfRENI
RUNLX1JVTl9PTihzaWduYWxpbmdfdGhyZWFkKCkpOworICBpZiAoIUhhbmRsZU9wZW5NZXNzYWdl
X3MocGFyYW1zLCBwYXlsb2FkKSkgewogICAgIFNpZ25hbFNjdHBEYXRhUmVjZWl2ZWQocGFyYW1z
LCBwYXlsb2FkKTsKICAgfQogfQpAQCAtNTY5OSw2ICs1OTg3LDQ5IEBAIHZvaWQgUGVlckNvbm5l
Y3Rpb246Ok9uU2N0cENsb3NpbmdQcm9jZWR1cmVDb21wbGV0ZV9uKGludCBzaWQpIHsKICAgICAg
ICAgICAgICAgICAmU2lnbmFsU2N0cENsb3NpbmdQcm9jZWR1cmVDb21wbGV0ZSwgc2lkKSk7CiB9
CiAKK2Jvb2wgUGVlckNvbm5lY3Rpb246OlNldHVwTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5l
bHNfbigKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWlkKSB7CisgIG1lZGlhX3RyYW5zcG9ydF8g
PSB0cmFuc3BvcnRfY29udHJvbGxlcl8tPkdldE1lZGlhVHJhbnNwb3J0KG1pZCk7CisgIGlmICgh
bWVkaWFfdHJhbnNwb3J0XykgeworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJNZWRpYSB0cmFu
c3BvcnQgaXMgbm90IGF2YWlsYWJsZSBmb3IgZGF0YSBjaGFubmVscyI7CisgICAgcmV0dXJuIGZh
bHNlOworICB9CisKKyAgbWVkaWFfdHJhbnNwb3J0X2ludm9rZXJfID0gYWJzbDo6bWFrZV91bmlx
dWU8cnRjOjpBc3luY0ludm9rZXI+KCk7CisgIG1lZGlhX3RyYW5zcG9ydF8tPlNldERhdGFTaW5r
KHRoaXMpOworICBtZWRpYV90cmFuc3BvcnRfZGF0YV9taWRfID0gbWlkOworICB0cmFuc3BvcnRf
Y29udHJvbGxlcl8tPlNpZ25hbE1lZGlhVHJhbnNwb3J0U3RhdGVDaGFuZ2VkLmNvbm5lY3QoCisg
ICAgICB0aGlzLCAmUGVlckNvbm5lY3Rpb246Ok9uTWVkaWFUcmFuc3BvcnRTdGF0ZUNoYW5nZWRf
bik7CisgIC8vIENoZWNrIHRoZSBpbml0aWFsIHN0YXRlIHJpZ2h0IGF3YXksIGluIGNhc2UgdHJh
bnNwb3J0IGlzIGFscmVhZHkgd3JpdGFibGUuCisgIE9uTWVkaWFUcmFuc3BvcnRTdGF0ZUNoYW5n
ZWRfbigpOworICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6VGVhcmRv
d25NZWRpYVRyYW5zcG9ydEZvckRhdGFDaGFubmVsc19uKCkgeworICBpZiAoIW1lZGlhX3RyYW5z
cG9ydF8pIHsKKyAgICByZXR1cm47CisgIH0KKyAgdHJhbnNwb3J0X2NvbnRyb2xsZXJfLT5TaWdu
YWxNZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZC5kaXNjb25uZWN0KHRoaXMpOworICBtZWRpYV90
cmFuc3BvcnRfZGF0YV9taWRfLnJlc2V0KCk7CisgIG1lZGlhX3RyYW5zcG9ydF8tPlNldERhdGFT
aW5rKG51bGxwdHIpOworICBtZWRpYV90cmFuc3BvcnRfaW52b2tlcl8gPSBudWxscHRyOworICBt
ZWRpYV90cmFuc3BvcnRfID0gbnVsbHB0cjsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6T25N
ZWRpYVRyYW5zcG9ydFN0YXRlQ2hhbmdlZF9uKCkgeworICBpZiAoIW1lZGlhX3RyYW5zcG9ydF9k
YXRhX21pZF8gfHwKKyAgICAgIHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0TWVkaWFUcmFuc3Bv
cnRTdGF0ZSgKKyAgICAgICAgICAqbWVkaWFfdHJhbnNwb3J0X2RhdGFfbWlkXykgIT0gTWVkaWFU
cmFuc3BvcnRTdGF0ZTo6a1dyaXRhYmxlKSB7CisgICAgcmV0dXJuOworICB9CisgIG1lZGlhX3Ry
YW5zcG9ydF9pbnZva2VyXy0+QXN5bmNJbnZva2U8dm9pZD4oCisgICAgICBSVENfRlJPTV9IRVJF
LCBzaWduYWxpbmdfdGhyZWFkKCksIFt0aGlzXSB7CisgICAgICAgIFJUQ19EQ0hFQ0tfUlVOX09O
KHNpZ25hbGluZ190aHJlYWQoKSk7CisgICAgICAgIG1lZGlhX3RyYW5zcG9ydF9yZWFkeV90b19z
ZW5kX2RhdGFfID0gdHJ1ZTsKKyAgICAgICAgU2lnbmFsTWVkaWFUcmFuc3BvcnRXcml0YWJsZV9z
KG1lZGlhX3RyYW5zcG9ydF9yZWFkeV90b19zZW5kX2RhdGFfKTsKKyAgICAgIH0pOworfQorCiAv
LyBSZXR1cm5zIGZhbHNlIGlmIGJ1bmRsZSBpcyBlbmFibGVkIGFuZCBydGNwX211eCBpcyBkaXNh
YmxlZC4KIGJvb2wgUGVlckNvbm5lY3Rpb246OlZhbGlkYXRlQnVuZGxlU2V0dGluZ3MoY29uc3Qg
U2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjKSB7CiAgIGJvb2wgYnVuZGxlX2VuYWJsZWQgPSBkZXNj
LT5IYXNHcm91cChjcmlja2V0OjpHUk9VUF9UWVBFX0JVTkRMRSk7CkBAIC02MTY5LDcgKzY1MDAs
NyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpPblNlbnRQYWNrZXRfdyhjb25zdCBydGM6OlNlbnRQ
YWNrZXQmIHNlbnRfcGFja2V0KSB7CiAKIGNvbnN0IHN0ZDo6c3RyaW5nIFBlZXJDb25uZWN0aW9u
OjpHZXRUcmFuc3BvcnROYW1lKAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUp
IHsKLSAgY3JpY2tldDo6QmFzZUNoYW5uZWwqIGNoYW5uZWwgPSBHZXRDaGFubmVsKGNvbnRlbnRf
bmFtZSk7CisgIGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwgPSBHZXRDaGFubmVs
KGNvbnRlbnRfbmFtZSk7CiAgIGlmIChjaGFubmVsKSB7CiAgICAgcmV0dXJuIGNoYW5uZWwtPnRy
YW5zcG9ydF9uYW1lKCk7CiAgIH0KQEAgLTYxODgsMTcgKzY1MTksMTcgQEAgdm9pZCBQZWVyQ29u
bmVjdGlvbjo6RGVzdHJveVRyYW5zY2VpdmVyQ2hhbm5lbCgKICAgICAgICAgdHJhbnNjZWl2ZXIp
IHsKICAgUlRDX0RDSEVDSyh0cmFuc2NlaXZlcik7CiAKLSAgY3JpY2tldDo6QmFzZUNoYW5uZWwq
IGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOworICBjcmlja2V0
OjpDaGFubmVsSW50ZXJmYWNlKiBjaGFubmVsID0gdHJhbnNjZWl2ZXItPmludGVybmFsKCktPmNo
YW5uZWwoKTsKICAgaWYgKGNoYW5uZWwpIHsKICAgICB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+
U2V0Q2hhbm5lbChudWxscHRyKTsKLSAgICBEZXN0cm95QmFzZUNoYW5uZWwoY2hhbm5lbCk7Cisg
ICAgRGVzdHJveUNoYW5uZWxJbnRlcmZhY2UoY2hhbm5lbCk7CiAgIH0KIH0KIAogdm9pZCBQZWVy
Q29ubmVjdGlvbjo6RGVzdHJveURhdGFDaGFubmVsKCkgewogICBpZiAocnRwX2RhdGFfY2hhbm5l
bF8pIHsKICAgICBPbkRhdGFDaGFubmVsRGVzdHJveWVkKCk7Ci0gICAgRGVzdHJveUJhc2VDaGFu
bmVsKHJ0cF9kYXRhX2NoYW5uZWxfKTsKKyAgICBEZXN0cm95Q2hhbm5lbEludGVyZmFjZShydHBf
ZGF0YV9jaGFubmVsXyk7CiAgICAgcnRwX2RhdGFfY2hhbm5lbF8gPSBudWxscHRyOwogICB9CiAK
QEAgLTYyMTMsOSArNjU0NCwxOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpEZXN0cm95RGF0YUNo
YW5uZWwoKSB7CiAgICAgbmV0d29ya190aHJlYWQoKS0+SW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hF
UkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzXSB7IERlc3Ryb3lT
Y3RwVHJhbnNwb3J0X24oKTsgfSk7CiAgIH0KKworICBpZiAobWVkaWFfdHJhbnNwb3J0Xykgewor
ICAgIE9uRGF0YUNoYW5uZWxEZXN0cm95ZWQoKTsKKyAgICBuZXR3b3JrX3RocmVhZCgpLT5JbnZv
a2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgW3RoaXNdIHsKKyAgICAgIFJUQ19EQ0hFQ0tfUlVOX09O
KG5ldHdvcmtfdGhyZWFkKCkpOworICAgICAgVGVhcmRvd25NZWRpYVRyYW5zcG9ydEZvckRhdGFD
aGFubmVsc19uKCk7CisgICAgfSk7CisgIH0KIH0KIAotdm9pZCBQZWVyQ29ubmVjdGlvbjo6RGVz
dHJveUJhc2VDaGFubmVsKGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsKSB7Cit2b2lkIFBl
ZXJDb25uZWN0aW9uOjpEZXN0cm95Q2hhbm5lbEludGVyZmFjZSgKKyAgICBjcmlja2V0OjpDaGFu
bmVsSW50ZXJmYWNlKiBjaGFubmVsKSB7CiAgIFJUQ19EQ0hFQ0soY2hhbm5lbCk7CiAgIHN3aXRj
aCAoY2hhbm5lbC0+bWVkaWFfdHlwZSgpKSB7CiAgICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBF
X0FVRElPOgpAQCAtNjIzOSw3ICs2NTc5LDggQEAgdm9pZCBQZWVyQ29ubmVjdGlvbjo6RGVzdHJv
eUJhc2VDaGFubmVsKGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsKSB7CiBib29sIFBlZXJD
b25uZWN0aW9uOjpPblRyYW5zcG9ydENoYW5nZWQoCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1p
ZCwKICAgICBSdHBUcmFuc3BvcnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwKLSAgICBjcmlja2V0
OjpEdGxzVHJhbnNwb3J0SW50ZXJuYWwqIGR0bHNfdHJhbnNwb3J0KSB7CisgICAgY3JpY2tldDo6
RHRsc1RyYW5zcG9ydEludGVybmFsKiBkdGxzX3RyYW5zcG9ydCwKKyAgICBNZWRpYVRyYW5zcG9y
dEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0KSB7CiAgIGJvb2wgcmV0ID0gdHJ1ZTsKICAgYXV0
byBiYXNlX2NoYW5uZWwgPSBHZXRDaGFubmVsKG1pZCk7CiAgIGlmIChiYXNlX2NoYW5uZWwpIHsK
QEAgLTYyNDgsNiArNjU4OSw5IEBAIGJvb2wgUGVlckNvbm5lY3Rpb246Ok9uVHJhbnNwb3J0Q2hh
bmdlZCgKICAgaWYgKHNjdHBfdHJhbnNwb3J0XyAmJiBtaWQgPT0gc2N0cF9taWRfKSB7CiAgICAg
c2N0cF90cmFuc3BvcnRfLT5TZXREdGxzVHJhbnNwb3J0KGR0bHNfdHJhbnNwb3J0KTsKICAgfQor
CisgIGNhbGxfLT5NZWRpYVRyYW5zcG9ydENoYW5nZShtZWRpYV90cmFuc3BvcnQpOworCiAgIHJl
dHVybiByZXQ7CiB9CiAKQEAgLTYyNjEsNiArNjYwNSwxNCBAQCBQZWVyQ29ubmVjdGlvbk9ic2Vy
dmVyKiBQZWVyQ29ubmVjdGlvbjo6T2JzZXJ2ZXIoKSBjb25zdCB7CiAgIHJldHVybiBvYnNlcnZl
cl87CiB9CiAKK0NyeXB0b09wdGlvbnMgUGVlckNvbm5lY3Rpb246OkdldENyeXB0b09wdGlvbnMo
KSB7CisgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk4OTEpIC0gUmVtb3ZlIFBlZXJDb25uZWN0
aW9uRmFjdG9yeTo6Q3J5cHRvT3B0aW9ucworICAvLyBhZnRlciBpdCBoYXMgYmVlbiByZW1vdmVk
LgorICByZXR1cm4gY29uZmlndXJhdGlvbl8uY3J5cHRvX29wdGlvbnMuaGFzX3ZhbHVlKCkKKyAg
ICAgICAgICAgICA/ICpjb25maWd1cmF0aW9uXy5jcnlwdG9fb3B0aW9ucworICAgICAgICAgICAg
IDogZmFjdG9yeV8tPm9wdGlvbnMoKS5jcnlwdG9fb3B0aW9uczsKK30KKwogdm9pZCBQZWVyQ29u
bmVjdGlvbjo6Q2xlYXJTdGF0c0NhY2hlKCkgewogICBpZiAoc3RhdHNfY29sbGVjdG9yXykgewog
ICAgIHN0YXRzX2NvbGxlY3Rvcl8tPkNsZWFyQ2FjaGVkU3RhdHNSZXBvcnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25u
ZWN0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9w
ZWVyY29ubmVjdGlvbi5oCmluZGV4IDM3YzlkNzNiZDQ2Yzg4MWM5MWM1YWJkZGEyN2E5N2E4YWFk
YWM2NzcuLjdlOTdhZmFiN2M2MDUzOTVkYjBjOWI0MDQ0NjM2ODJlNTE1ZDM3NmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvcGVlcmNvbm5lY3Rpb24uaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgPHN0cmluZz4K
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvbWVkaWFfdHJhbnNwb3J0X2ludGVy
ZmFjZS5oIgogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgogI2luY2x1
ZGUgImFwaS90dXJuY3VzdG9taXplci5oIgogI2luY2x1ZGUgInBjL2ljZXNlcnZlcnBhcnNpbmcu
aCIKQEAgLTUxLDYgKzUyLDcgQEAgY2xhc3MgUnRjRXZlbnRMb2c7CiAvLyAtIEdlbmVyYXRpbmcg
c3RhdHMuCiBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkludGVy
bmFsLAogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgRGF0YUNoYW5uZWxQcm92aWRlcklu
dGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIERhdGFDaGFubmVsU2luaywK
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpP
YnNlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHJ0Yzo6TWVzc2FnZUhhbmRs
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7
CkBAIC0xNDUsNiArMTQ3LDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNv
bm5lY3Rpb25JbnRlcm5hbCwKICAgU2lnbmFsaW5nU3RhdGUgc2lnbmFsaW5nX3N0YXRlKCkgb3Zl
cnJpZGU7CiAKICAgSWNlQ29ubmVjdGlvblN0YXRlIGljZV9jb25uZWN0aW9uX3N0YXRlKCkgb3Zl
cnJpZGU7CisgIEljZUNvbm5lY3Rpb25TdGF0ZSBzdGFuZGFyZGl6ZWRfaWNlX2Nvbm5lY3Rpb25f
c3RhdGUoKTsKKyAgUGVlckNvbm5lY3Rpb25TdGF0ZSBwZWVyX2Nvbm5lY3Rpb25fc3RhdGUoKSBv
dmVycmlkZTsKICAgSWNlR2F0aGVyaW5nU3RhdGUgaWNlX2dhdGhlcmluZ19zdGF0ZSgpIG92ZXJy
aWRlOwogCiAgIGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSogbG9jYWxfZGVzY3Jp
cHRpb24oKSBjb25zdCBvdmVycmlkZTsKQEAgLTM3Miw2ICszNzYsMTEgQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKICAgICAgICAgICByZWNl
aXZlcik7CiAKICAgdm9pZCBTZXRJY2VDb25uZWN0aW9uU3RhdGUoSWNlQ29ubmVjdGlvblN0YXRl
IG5ld19zdGF0ZSk7CisgIHZvaWQgU2V0U3RhbmRhcmRpemVkSWNlQ29ubmVjdGlvblN0YXRlKAor
ICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSBuZXdfc3Rh
dGUpOworICB2b2lkIFNldENvbm5lY3Rpb25TdGF0ZSgKKyAgICAgIFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0ZSk7CisKICAgLy8gQ2FsbGVkIGFu
eSB0aW1lIHRoZSBJY2VHYXRoZXJpbmdTdGF0ZSBjaGFuZ2VzCiAgIHZvaWQgT25JY2VHYXRoZXJp
bmdDaGFuZ2UoSWNlR2F0aGVyaW5nU3RhdGUgbmV3X3N0YXRlKTsKICAgLy8gTmV3IElDRSBjYW5k
aWRhdGUgaGFzIGJlZW4gZ2F0aGVyZWQuCkBAIC02MjQsNiArNjMzLDExIEBAIGNsYXNzIFBlZXJD
b25uZWN0aW9uIDogcHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAgIC8vIENhbGxlZCB3
aGVuIGEgdmFsaWQgZGF0YSBjaGFubmVsIE9QRU4gbWVzc2FnZSBpcyByZWNlaXZlZC4KICAgdm9p
ZCBPbkRhdGFDaGFubmVsT3Blbk1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIGxhYmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbERhdGFDaGFubmVsSW5p
dCYgY29uZmlnKTsKKyAgLy8gUGFyc2VzIGFuZCBoYW5kbGVzIG9wZW4gbWVzc2FnZXMuICBSZXR1
cm5zIHRydWUgaWYgdGhlIG1lc3NhZ2UgaXMgYW4gb3BlbgorICAvLyBtZXNzYWdlLCBmYWxzZSBv
dGhlcndpc2UuCisgIGJvb2wgSGFuZGxlT3Blbk1lc3NhZ2Vfcyhjb25zdCBjcmlja2V0OjpSZWNl
aXZlRGF0YVBhcmFtcyYgcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
cnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgYnVmZmVyKQorICAgICAgUlRDX1JVTl9PTihzaWduYWxp
bmdfdGhyZWFkKCkpOwogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgUGVlckNvbm5lY3Rpb24g
aXMgY29uZmlndXJlZCB0byB1c2UgVW5pZmllZCBQbGFuCiAgIC8vIHNlbWFudGljcyBmb3IgY3Jl
YXRpbmcgb2ZmZXJzL2Fuc3dlcnMgYW5kIHNldHRpbmcgbG9jYWwvcmVtb3RlCkBAIC03MDUsNyAr
NzE5LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRl
cm5hbCwKICAgU2Vzc2lvbkVycm9yIHNlc3Npb25fZXJyb3IoKSBjb25zdCB7IHJldHVybiBzZXNz
aW9uX2Vycm9yXzsgfQogICBjb25zdCBzdGQ6OnN0cmluZyYgc2Vzc2lvbl9lcnJvcl9kZXNjKCkg
Y29uc3QgeyByZXR1cm4gc2Vzc2lvbl9lcnJvcl9kZXNjXzsgfQogCi0gIGNyaWNrZXQ6OkJhc2VD
aGFubmVsKiBHZXRDaGFubmVsKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb250ZW50X25hbWUpOworICBj
cmlja2V0OjpDaGFubmVsSW50ZXJmYWNlKiBHZXRDaGFubmVsKGNvbnN0IHN0ZDo6c3RyaW5nJiBj
b250ZW50X25hbWUpOwogCiAgIC8vIEdldCBjdXJyZW50IFNTTCByb2xlIHVzZWQgYnkgU0NUUCdz
IHVuZGVybHlpbmcgdHJhbnNwb3J0LgogICBib29sIEdldFNjdHBTc2xSb2xlKHJ0Yzo6U1NMUm9s
ZSogcm9sZSk7CkBAIC03MjUsNiArNzM5LDEzIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uIDogcHVi
bGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAKICAgY3JpY2tldDo6RGF0YUNoYW5uZWxUeXBl
IGRhdGFfY2hhbm5lbF90eXBlKCkgY29uc3Q7CiAKKyAgLy8gSW1wbGVtZW50cyBEYXRhQ2hhbm5l
bFNpbmsuCisgIHZvaWQgT25EYXRhUmVjZWl2ZWQoaW50IGNoYW5uZWxfaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgRGF0YU1lc3NhZ2VUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZTsKKyAgdm9pZCBP
bkNoYW5uZWxDbG9zaW5nKGludCBjaGFubmVsX2lkKSBvdmVycmlkZTsKKyAgdm9pZCBPbkNoYW5u
ZWxDbG9zZWQoaW50IGNoYW5uZWxfaWQpIG92ZXJyaWRlOworCiAgIC8vIENhbGxlZCB3aGVuIGFu
IFJUQ0NlcnRpZmljYXRlIGlzIGdlbmVyYXRlZCBvciByZXRyaWV2ZWQgYnkKICAgLy8gV2ViUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeS4gU2hvdWxkIGhhcHBlbiBiZWZvcmUgc2V0TG9jYWxE
ZXNjcmlwdGlvbi4KICAgdm9pZCBPbkNlcnRpZmljYXRlUmVhZHkoCkBAIC04MjIsNiArODQzLDEx
IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uIDogcHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWws
CiAgIHZvaWQgT25TY3RwQ2xvc2luZ1Byb2NlZHVyZVN0YXJ0ZWRSZW1vdGVseV9uKGludCBzaWQp
OwogICB2b2lkIE9uU2N0cENsb3NpbmdQcm9jZWR1cmVDb21wbGV0ZV9uKGludCBzaWQpOwogCisg
IGJvb2wgU2V0dXBNZWRpYVRyYW5zcG9ydEZvckRhdGFDaGFubmVsc19uKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBtaWQpCisgICAgICBSVENfUlVOX09OKG5ldHdvcmtfdGhyZWFkKCkpOworICB2b2lkIE9u
TWVkaWFUcmFuc3BvcnRTdGF0ZUNoYW5nZWRfbigpIFJUQ19SVU5fT04obmV0d29ya190aHJlYWQo
KSk7CisgIHZvaWQgVGVhcmRvd25NZWRpYVRyYW5zcG9ydEZvckRhdGFDaGFubmVsc19uKCkgUlRD
X1JVTl9PTihuZXR3b3JrX3RocmVhZCgpKTsKKwogICBib29sIFZhbGlkYXRlQnVuZGxlU2V0dGlu
Z3MoY29uc3QgY3JpY2tldDo6U2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjKTsKICAgYm9vbCBIYXNS
dGNwTXV4RW5hYmxlZChjb25zdCBjcmlja2V0OjpDb250ZW50SW5mbyogY29udGVudCk7CiAgIC8v
IEJlbG93IG1ldGhvZHMgYXJlIGhlbHBlciBtZXRob2RzIHdoaWNoIHZlcmlmaWVzIFNEUC4KQEAg
LTg5Niw5ICs5MjIsOSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVj
dGlvbkludGVybmFsLAogICAvLyBEZXN0cm95cyB0aGUgUlRQIGRhdGEgY2hhbm5lbCBhbmQvb3Ig
dGhlIFNDVFAgZGF0YSBjaGFubmVsIGFuZCBjbGVhcnMgaXQuCiAgIHZvaWQgRGVzdHJveURhdGFD
aGFubmVsKCk7CiAKLSAgLy8gRGVzdHJveXMgdGhlIGdpdmVuIEJhc2VDaGFubmVsLiBUaGUgY2hh
bm5lbCBjYW5ub3QgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhpcwotICAvLyBtZXRob2QgaXMgY2FsbGVk
LgotICB2b2lkIERlc3Ryb3lCYXNlQ2hhbm5lbChjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5l
bCk7CisgIC8vIERlc3Ryb3lzIHRoZSBnaXZlbiBDaGFubmVsSW50ZXJmYWNlLgorICAvLyBUaGUg
Y2hhbm5lbCBjYW5ub3QgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhpcyBtZXRob2QgaXMgY2FsbGVkLgor
ICB2b2lkIERlc3Ryb3lDaGFubmVsSW50ZXJmYWNlKGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2Uq
IGNoYW5uZWwpOwogCiAgIC8vIEpzZXBUcmFuc3BvcnRDb250cm9sbGVyOjpPYnNlcnZlciBvdmVy
cmlkZS4KICAgLy8KQEAgLTkwNiwxNCArOTMyLDQxIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uIDog
cHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAgIC8vIGZyb20gYSBzZXNzaW9uIGRlc2Ny
aXB0aW9uLCBhbmQgdGhlIG1hcHBpbmcgZnJvbSBtPSBzZWN0aW9ucyB0byB0cmFuc3BvcnRzCiAg
IC8vIGNoYW5nZWQgKGFzIGEgcmVzdWx0IG9mIEJVTkRMRSBuZWdvdGlhdGlvbiwgb3IgbT0gc2Vj
dGlvbnMgYmVpbmcKICAgLy8gcmVqZWN0ZWQpLgotICBib29sIE9uVHJhbnNwb3J0Q2hhbmdlZCgK
LSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQsCi0gICAgICBSdHBUcmFuc3BvcnRJbnRlcm5h
bCogcnRwX3RyYW5zcG9ydCwKLSAgICAgIGNyaWNrZXQ6OkR0bHNUcmFuc3BvcnRJbnRlcm5hbCog
ZHRsc190cmFuc3BvcnQpIG92ZXJyaWRlOworICBib29sIE9uVHJhbnNwb3J0Q2hhbmdlZChjb25z
dCBzdGQ6OnN0cmluZyYgbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBUcmFuc3Bv
cnRJbnRlcm5hbCogcnRwX3RyYW5zcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jp
Y2tldDo6RHRsc1RyYW5zcG9ydEludGVybmFsKiBkdGxzX3RyYW5zcG9ydCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2UqIG1lZGlhX3RyYW5zcG9ydCkg
b3ZlcnJpZGU7CiAKICAgLy8gUmV0dXJucyB0aGUgb2JzZXJ2ZXIuIFdpbGwgY3Jhc2ggb24gQ0hF
Q0sgaWYgdGhlIG9ic2VydmVyIGlzIHJlbW92ZWQuCiAgIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIq
IE9ic2VydmVyKCkgY29uc3Q7CiAKKyAgLy8gUmV0dXJucyB0aGUgQ3J5cHRvT3B0aW9ucyBmb3Ig
dGhpcyBQZWVyQ29ubmVjdGlvbi4gVGhpcyB3aWxsIGFsd2F5cworICAvLyByZXR1cm4gdGhlIFJU
Q0NvbmZpZ3VyYXRpb24uY3J5cHRvX29wdGlvbnMgaWYgc2V0IGFuZCB3aWxsIG9ubHkgZGVmYXVs
dAorICAvLyBiYWNrIHRvIHRoZSBQZWVyQ29ubmVjdGlvbkZhY3Rvcnkgc2V0dGluZ3MgaWYgbm90
aGluZyB3YXMgc2V0LgorICBDcnlwdG9PcHRpb25zIEdldENyeXB0b09wdGlvbnMoKTsKKworICAv
LyBSZXR1cm5zIHJ0cCB0cmFuc3BvcnQsIHJlc3VsdCBjYW4gbm90IGJlIG51bGxwdHIuCisgIFJ0
cFRyYW5zcG9ydEludGVybmFsKiBHZXRSdHBUcmFuc3BvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1p
ZCkgeworICAgIGF1dG8gcnRwX3RyYW5zcG9ydCA9IHRyYW5zcG9ydF9jb250cm9sbGVyXy0+R2V0
UnRwVHJhbnNwb3J0KG1pZCk7CisgICAgUlRDX0RDSEVDSyhydHBfdHJhbnNwb3J0KTsKKyAgICBy
ZXR1cm4gcnRwX3RyYW5zcG9ydDsKKyAgfQorCisgIC8vIFJldHVybnMgbWVkaWEgdHJhbnNwb3J0
LCBpZiBQZWVyQ29ubmVjdGlvbiB3YXMgY3JlYXRlZCB3aXRoIGNvbmZpZ3VyYXRpb24KKyAgLy8g
dG8gdXNlIG1lZGlhIHRyYW5zcG9ydC4gT3RoZXJ3aXNlIHJldHVybnMgbnVsbHB0ci4KKyAgTWVk
aWFUcmFuc3BvcnRJbnRlcmZhY2UqIEdldE1lZGlhVHJhbnNwb3J0KGNvbnN0IHN0ZDo6c3RyaW5n
JiBtaWQpIHsKKyAgICBhdXRvIG1lZGlhX3RyYW5zcG9ydCA9IHRyYW5zcG9ydF9jb250cm9sbGVy
Xy0+R2V0TWVkaWFUcmFuc3BvcnQobWlkKTsKKyAgICBSVENfRENIRUNLKChjb25maWd1cmF0aW9u
Xy51c2VfbWVkaWFfdHJhbnNwb3J0IHx8CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbl8u
dXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscykgPT0KKyAgICAgICAgICAgICAg
IChtZWRpYV90cmFuc3BvcnQgIT0gbnVsbHB0cikpCisgICAgICAgIDw8ICJjb25maWd1cmF0aW9u
Xy51c2VfbWVkaWFfdHJhbnNwb3J0PSIKKyAgICAgICAgPDwgY29uZmlndXJhdGlvbl8udXNlX21l
ZGlhX3RyYW5zcG9ydAorICAgICAgICA8PCAiLCBjb25maWd1cmF0aW9uXy51c2VfbWVkaWFfdHJh
bnNwb3J0X2Zvcl9kYXRhX2NoYW5uZWxzPSIKKyAgICAgICAgPDwgY29uZmlndXJhdGlvbl8udXNl
X21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscworICAgICAgICA8PCAiLCAobWVkaWFf
dHJhbnNwb3J0ICE9IG51bGxwdHIpPSIgPDwgKG1lZGlhX3RyYW5zcG9ydCAhPSBudWxscHRyKTsK
KyAgICByZXR1cm4gbWVkaWFfdHJhbnNwb3J0OworICB9CisKICAgc2lnc2xvdDo6c2lnbmFsMTxE
YXRhQ2hhbm5lbCo+IFNpZ25hbERhdGFDaGFubmVsQ3JlYXRlZF87CiAKICAgLy8gU3RvcmluZyB0
aGUgZmFjdG9yeSBhcyBhIHNjb3BlZCByZWZlcmVuY2UgcG9pbnRlciBlbnN1cmVzIHRoYXQgdGhl
IG1lbW9yeQpAQCAtOTMwLDYgKzk4MywxMSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1Ymxp
YyBQZWVyQ29ubmVjdGlvbkludGVybmFsLAogCiAgIFNpZ25hbGluZ1N0YXRlIHNpZ25hbGluZ19z
dGF0ZV8gPSBrU3RhYmxlOwogICBJY2VDb25uZWN0aW9uU3RhdGUgaWNlX2Nvbm5lY3Rpb25fc3Rh
dGVfID0ga0ljZUNvbm5lY3Rpb25OZXc7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VD
b25uZWN0aW9uU3RhdGUKKyAgICAgIHN0YW5kYXJkaXplZF9pY2VfY29ubmVjdGlvbl9zdGF0ZV8g
PSBrSWNlQ29ubmVjdGlvbk5ldzsKKyAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25u
ZWN0aW9uU3RhdGUgY29ubmVjdGlvbl9zdGF0ZV8gPQorICAgICAgUGVlckNvbm5lY3Rpb25TdGF0
ZTo6a05ldzsKKwogICBJY2VHYXRoZXJpbmdTdGF0ZSBpY2VfZ2F0aGVyaW5nX3N0YXRlXyA9IGtJ
Y2VHYXRoZXJpbmdOZXc7CiAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb25fOwogCkBAIC0xMDEwLDYgKzEwNjgsMzMgQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKICAgc2lnc2xvdDo6c2ln
bmFsMTxpbnQ+IFNpZ25hbFNjdHBDbG9zaW5nUHJvY2VkdXJlU3RhcnRlZFJlbW90ZWx5OwogICBz
aWdzbG90OjpzaWduYWwxPGludD4gU2lnbmFsU2N0cENsb3NpbmdQcm9jZWR1cmVDb21wbGV0ZTsK
IAorICAvLyBXaGV0aGVyIHRoaXMgcGVlciBpcyB0aGUgY2FsbGVyLiBTZXQgd2hlbiB0aGUgbG9j
YWwgZGVzY3JpcHRpb24gaXMgYXBwbGllZC4KKyAgYWJzbDo6b3B0aW9uYWw8Ym9vbD4gaXNfY2Fs
bGVyXyBSVENfR1VBUkRFRF9CWShzaWduYWxpbmdfdGhyZWFkKCkpOworCisgIC8vIENvbnRlbnQg
bmFtZSAoTUlEKSBmb3IgbWVkaWEgdHJhbnNwb3J0IGRhdGEgY2hhbm5lbHMgaW4gU0RQLgorICBh
YnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gbWVkaWFfdHJhbnNwb3J0X2RhdGFfbWlkXzsKKwor
ICAvLyBNZWRpYSB0cmFuc3BvcnQgdXNlZCBmb3IgZGF0YSBjaGFubmVscy4gIFRocmVhZC1zYWZl
LgorICBNZWRpYVRyYW5zcG9ydEludGVyZmFjZSogbWVkaWFfdHJhbnNwb3J0XyA9IG51bGxwdHI7
CisKKyAgLy8gQ2FjaGVkIHZhbHVlIG9mIHdoZXRoZXIgdGhlIG1lZGlhIHRyYW5zcG9ydCBpcyBy
ZWFkeSB0byBzZW5kLgorICBib29sIG1lZGlhX3RyYW5zcG9ydF9yZWFkeV90b19zZW5kX2RhdGFf
IFJUQ19HVUFSREVEX0JZKHNpZ25hbGluZ190aHJlYWQoKSkgPQorICAgICAgZmFsc2U7CisKKyAg
Ly8gVXNlZCB0byBpbnZva2UgbWVkaWEgdHJhbnNwb3J0IHNpZ25hbHMgb24gdGhlIHNpZ25hbGlu
ZyB0aHJlYWQuCisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jSW52b2tlcj4gbWVkaWFfdHJh
bnNwb3J0X2ludm9rZXJfOworCisgIC8vIElkZW50aWNhbCB0byB0aGUgc2lnbmFscyBmb3IgU0NU
UCwgYnV0IGZyb20gbWVkaWEgdHJhbnNwb3J0OgorICBzaWdzbG90OjpzaWduYWwxPGJvb2w+IFNp
Z25hbE1lZGlhVHJhbnNwb3J0V3JpdGFibGVfcworICAgICAgUlRDX0dVQVJERURfQlkoc2lnbmFs
aW5nX3RocmVhZCgpKTsKKyAgc2lnc2xvdDo6c2lnbmFsMjxjb25zdCBjcmlja2V0OjpSZWNlaXZl
RGF0YVBhcmFtcyYsCisgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpDb3B5T25Xcml0ZUJ1
ZmZlciY+CisgICAgICBTaWduYWxNZWRpYVRyYW5zcG9ydFJlY2VpdmVkRGF0YV9zIFJUQ19HVUFS
REVEX0JZKHNpZ25hbGluZ190aHJlYWQoKSk7CisgIHNpZ3Nsb3Q6OnNpZ25hbDE8aW50PiBTaWdu
YWxNZWRpYVRyYW5zcG9ydENoYW5uZWxDbG9zaW5nX3MKKyAgICAgIFJUQ19HVUFSREVEX0JZKHNp
Z25hbGluZ190aHJlYWQoKSk7CisgIHNpZ3Nsb3Q6OnNpZ25hbDE8aW50PiBTaWduYWxNZWRpYVRy
YW5zcG9ydENoYW5uZWxDbG9zZWRfcworICAgICAgUlRDX0dVQVJERURfQlkoc2lnbmFsaW5nX3Ro
cmVhZCgpKTsKKwogICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNl
PiBjdXJyZW50X2xvY2FsX2Rlc2NyaXB0aW9uXzsKICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25E
ZXNjcmlwdGlvbkludGVyZmFjZT4gcGVuZGluZ19sb2NhbF9kZXNjcmlwdGlvbl87CiAgIHN0ZDo6
dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2U+IGN1cnJlbnRfcmVtb3RlX2Rl
c2NyaXB0aW9uXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2J1bmRsZV91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2J1bmRs
ZV91bml0dGVzdC5jYwppbmRleCA5MDc2NjliNWFkMzBjNDg2NmFlYWFjODNiM2M2MjZiNDA3NmYy
YzQyLi42YzM3MmI0Yjg5ODJiODI4OTkyMWM3NWMwN2EyYTY5YmZhMmU2ZGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVj
dGlvbl9idW5kbGVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fYnVuZGxlX3VuaXR0ZXN0LmNjCkBAIC0x
MCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1
ZGlvX2VuY29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rp
b25fZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbnByb3h5LmgiCiAjaW5j
bHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgog
I2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3Rvcnku
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3BlZXJjb25uZWN0aW9uX2NyeXB0b191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2NyeXB0b191bml0dGVz
dC5jYwppbmRleCAxY2NmZTU1NjBmMDk1MDlmNTE0M2M2MGM0Zjg3ZjQ4NGE0YjViMDMzLi42Zjdl
MjNiOTRmNWFkMzUwNTM0YTNlZDcxNDMyYWQ1ZWQxZTVjZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9jcnlw
dG9fdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fY3J5cHRvX3VuaXR0ZXN0LmNjCkBAIC0xMCw2ICsxMCw3
IEBACiAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9m
YWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29k
ZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9y
eS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19kZWNvZGVyX2Zh
Y3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAicDJwL2Jhc2UvZmFrZXBvcnRhbGxvY2F0b3IuaCIKQEAg
LTc2LDYgKzc3LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25DcnlwdG9CYXNlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAg
b2JzZXJ2ZXItPlNldFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlKHBjLmdldCgpKTsKICAgICByZXR1
cm4gYWJzbDo6bWFrZV91bmlxdWU8UGVlckNvbm5lY3Rpb25XcmFwcGVyPihwY19mYWN0b3J5Xywg
cGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptb3ZlKG9ic2VydmVyKSk7CiAgIH0KQEAgLTI3OCwxMyArMjgwLDM1IEBAIFRFU1RfUChQ
ZWVyQ29ubmVjdGlvbkNyeXB0b1Rlc3QsIENvcnJlY3RDcnlwdG9JbkFuc3dlcldoZW5FbmNyeXB0
aW9uRGlzYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zd2VyLT5kZXNj
cmlwdGlvbigpKSk7CiB9CiAKKy8vIENyeXB0b09wdGlvbnMgaGFzIGJlZW4gcHJvbW90ZWQgdG8g
UlRDQ29uZmlndXJhdGlvbi4gQXMgc3VjaCBpZiBpdCBpcyBldmVyCisvLyBzZXQgaW4gdGhlIGNv
bmZpZ3VyYXRpb24gaXQgc2hvdWxkIG92ZXJyaXRlIHRoZSBzZXR0aW5ncyBzZXQgaW4gdGhlIGZh
Y3RvcnkuCitURVNUX1AoUGVlckNvbm5lY3Rpb25DcnlwdG9UZXN0LCBSVENDb25maWd1cmF0aW9u
Q3J5cHRvT3B0aW9uT3ZlcnJpZGVzRmFjdG9yeSkgeworICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlJ
bnRlcmZhY2U6Ok9wdGlvbnMgb3B0aW9uczsKKyAgb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5zcnRw
LmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHRydWU7CisgIHBjX2ZhY3RvcnlfLT5TZXRPcHRp
b25zKG9wdGlvbnMpOworCisgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOworICBjb25maWcuZW5h
YmxlX2R0bHNfc3J0cC5lbXBsYWNlKGZhbHNlKTsKKyAgQ3J5cHRvT3B0aW9ucyBjcnlwdG9fb3B0
aW9uczsKKyAgY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSBm
YWxzZTsKKyAgY29uZmlnLmNyeXB0b19vcHRpb25zID0gY3J5cHRvX29wdGlvbnM7CisgIGF1dG8g
Y2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQXVkaW9WaWRlbyhjb25maWcpOworCisg
IGF1dG8gb2ZmZXIgPSBjYWxsZXItPkNyZWF0ZU9mZmVyKCk7CisgIEFTU0VSVF9UUlVFKG9mZmVy
KTsKKworICBBU1NFUlRfRkFMU0Uob2ZmZXItPmRlc2NyaXB0aW9uKCktPmNvbnRlbnRzKCkuZW1w
dHkoKSk7CisgIC8vIFRoaXMgc2hvdWxkIGV4aXN0IGlmIEdDTSBpcyBlbmFibGVkIHNlZSBDb3Jy
ZWN0Q3J5cHRvSW5PZmZlcldpdGhTZGVzQW5kR2NtCisgIEVYUEVDVF9GQUxTRShTZHBDb250ZW50
c0FsbChIYXZlU2Rlc0djbUNyeXB0b3MoMyksIG9mZmVyLT5kZXNjcmlwdGlvbigpKSk7Cit9CisK
IC8vIFdoZW4gRFRMUyBpcyBkaXNhYmxlZCBhbmQgR0NNIGNpcGhlciBzdWl0ZXMgYXJlIGVuYWJs
ZWQsIHRoZSBTRFAgb2ZmZXIvYW5zd2VyCiAvLyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBjaXBo
ZXJzIGluIHRoZSBTREVTIGNyeXB0byBvcHRpb25zLgogLy8gV2l0aCBHQ00gY2lwaGVyIHN1aXRl
cyBlbmFibGVkLCB0aGVyZSB3aWxsIGJlIDMgY3J5cHRvcyBpbiB0aGUgb2ZmZXIgYW5kIDEKIC8v
IGluIHRoZSBhbnN3ZXIuCiBURVNUX1AoUGVlckNvbm5lY3Rpb25DcnlwdG9UZXN0LCBDb3JyZWN0
Q3J5cHRvSW5PZmZlcldpdGhTZGVzQW5kR2NtKSB7CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUlu
dGVyZmFjZTo6T3B0aW9ucyBvcHRpb25zOwotICBvcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJs
ZV9nY21fY3J5cHRvX3N1aXRlcyA9IHRydWU7CisgIG9wdGlvbnMuY3J5cHRvX29wdGlvbnMuc3J0
cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSB0cnVlOwogICBwY19mYWN0b3J5Xy0+U2V0T3B0
aW9ucyhvcHRpb25zKTsKIAogICBSVENDb25maWd1cmF0aW9uIGNvbmZpZzsKQEAgLTI5Nyw5ICsz
MjEsMTAgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uQ3J5cHRvVGVzdCwgQ29ycmVjdENyeXB0b0lu
T2ZmZXJXaXRoU2Rlc0FuZEdjbSkgewogICBBU1NFUlRfRkFMU0Uob2ZmZXItPmRlc2NyaXB0aW9u
KCktPmNvbnRlbnRzKCkuZW1wdHkoKSk7CiAgIEVYUEVDVF9UUlVFKFNkcENvbnRlbnRzQWxsKEhh
dmVTZGVzR2NtQ3J5cHRvcygzKSwgb2ZmZXItPmRlc2NyaXB0aW9uKCkpKTsKIH0KKwogVEVTVF9Q
KFBlZXJDb25uZWN0aW9uQ3J5cHRvVGVzdCwgQ29ycmVjdENyeXB0b0luQW5zd2VyV2l0aFNkZXNB
bmRHY20pIHsKICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlOjpPcHRpb25zIG9wdGlv
bnM7Ci0gIG9wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0g
dHJ1ZTsKKyAgb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1
aXRlcyA9IHRydWU7CiAgIHBjX2ZhY3RvcnlfLT5TZXRPcHRpb25zKG9wdGlvbnMpOwogCiAgIFJU
Q0NvbmZpZ3VyYXRpb24gY29uZmlnOwpAQCAtMzE3LDcgKzM0Miw3IEBAIFRFU1RfUChQZWVyQ29u
bmVjdGlvbkNyeXB0b1Rlc3QsIENvcnJlY3RDcnlwdG9JbkFuc3dlcldpdGhTZGVzQW5kR2NtKSB7
CiAKIFRFU1RfUChQZWVyQ29ubmVjdGlvbkNyeXB0b1Rlc3QsIENhblNldFNkZXNHY21SZW1vdGVP
ZmZlckFuZExvY2FsQW5zd2VyKSB7CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6
T3B0aW9ucyBvcHRpb25zOwotICBvcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5
cHRvX3N1aXRlcyA9IHRydWU7CisgIG9wdGlvbnMuY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVf
Z2NtX2NyeXB0b19zdWl0ZXMgPSB0cnVlOwogICBwY19mYWN0b3J5Xy0+U2V0T3B0aW9ucyhvcHRp
b25zKTsKIAogICBSVENDb25maWd1cmF0aW9uIGNvbmZpZzsKQEAgLTcwMyw4ICs3MjgsOCBAQCBU
RVNUX1AoUGVlckNvbm5lY3Rpb25DcnlwdG9UZXN0LCBTZXNzaW9uRXJyb3JJZkZpbmdlcnByaW50
SW52YWxpZCkgewogICAgICAgaW52YWxpZF9hbnN3ZXItPmRlc2NyaXB0aW9uKCktPkdldFRyYW5z
cG9ydEluZm9CeU5hbWUoCiAgICAgICAgICAgYXVkaW9fY29udGVudC0+bmFtZSk7CiAgIEFTU0VS
VF9UUlVFKGF1ZGlvX3RyYW5zcG9ydF9pbmZvKTsKLSAgYXVkaW9fdHJhbnNwb3J0X2luZm8tPmRl
c2NyaXB0aW9uLmlkZW50aXR5X2ZpbmdlcnByaW50LnJlc2V0KAotICAgICAgcnRjOjpTU0xGaW5n
ZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKG90aGVyX2NlcnRpZmljYXRlKSk7CisgIGF1
ZGlvX3RyYW5zcG9ydF9pbmZvLT5kZXNjcmlwdGlvbi5pZGVudGl0eV9maW5nZXJwcmludCA9Cisg
ICAgICBydGM6OlNTTEZpbmdlcnByaW50OjpDcmVhdGVGcm9tQ2VydGlmaWNhdGUoKm90aGVyX2Nl
cnRpZmljYXRlKTsKIAogICAvLyBTZXQgdGhlIGludmFsaWQgYW5zd2VyIGFuZCBleHBlY3QgYSBm
aW5nZXJwcmludCBlcnJvci4KICAgc3RkOjpzdHJpbmcgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9k
YXRhY2hhbm5lbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2RhdGFjaGFubmVsX3VuaXR0ZXN0LmNjCmluZGV4
IDAzM2E2MDlmOThhZGFiMjM5MTExOWNlOTZkZmM3MTVlYWI2NjUxZTEuLmNmYjVkZGUyMmFmM2Ni
ZTA0ODdkNDZlOWNmOWM5MzIzNTFjMDQ4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2RhdGFjaGFubmVsX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3BlZXJjb25uZWN0aW9uX2RhdGFjaGFubmVsX3VuaXR0ZXN0LmNjCkBAIC0xMSw2ICsxMSw3
IEBACiAjaW5jbHVkZSA8dHVwbGU+CiAKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25wcm94
eS5oIgorI2luY2x1ZGUgImFwaS90ZXN0L2Zha2VfbWVkaWFfdHJhbnNwb3J0LmgiCiAjaW5jbHVk
ZSAibWVkaWEvYmFzZS9mYWtlbWVkaWFlbmdpbmUuaCIKICNpbmNsdWRlICJwYy9tZWRpYXNlc3Np
b24uaCIKICNpbmNsdWRlICJwYy9wZWVyY29ubmVjdGlvbi5oIgpAQCAtMzEsMTcgKzMyLDM5IEBA
IHVzaW5nIFJUQ0NvbmZpZ3VyYXRpb24gPSBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29u
ZmlndXJhdGlvbjsKIHVzaW5nIFJUQ09mZmVyQW5zd2VyT3B0aW9ucyA9IFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpSVENPZmZlckFuc3dlck9wdGlvbnM7CiB1c2luZyA6OnRlc3Rpbmc6OlZhbHVl
czsKIAorbmFtZXNwYWNlIHsKKworUGVlckNvbm5lY3Rpb25GYWN0b3J5RGVwZW5kZW5jaWVzIENy
ZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeURlcGVuZGVuY2llcygKKyAgICBydGM6OlRocmVhZCog
bmV0d29ya190aHJlYWQsCisgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCisgICAgcnRj
OjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCisgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6
Ok1lZGlhRW5naW5lSW50ZXJmYWNlPiBtZWRpYV9lbmdpbmUsCisgICAgc3RkOjp1bmlxdWVfcHRy
PENhbGxGYWN0b3J5SW50ZXJmYWNlPiBjYWxsX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpIHsKKyAgUGVl
ckNvbm5lY3Rpb25GYWN0b3J5RGVwZW5kZW5jaWVzIGRlcHM7CisgIGRlcHMubmV0d29ya190aHJl
YWQgPSBuZXR3b3JrX3RocmVhZDsKKyAgZGVwcy53b3JrZXJfdGhyZWFkID0gd29ya2VyX3RocmVh
ZDsKKyAgZGVwcy5zaWduYWxpbmdfdGhyZWFkID0gc2lnbmFsaW5nX3RocmVhZDsKKyAgZGVwcy5t
ZWRpYV9lbmdpbmUgPSBzdGQ6Om1vdmUobWVkaWFfZW5naW5lKTsKKyAgZGVwcy5jYWxsX2ZhY3Rv
cnkgPSBzdGQ6Om1vdmUoY2FsbF9mYWN0b3J5KTsKKyAgZGVwcy5tZWRpYV90cmFuc3BvcnRfZmFj
dG9yeSA9IHN0ZDo6bW92ZShtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSk7CisgIHJldHVybiBkZXBz
OworfQorCit9ICAvLyBuYW1lc3BhY2UKKwogY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5Rm9y
RGF0YUNoYW5uZWxUZXN0CiAgICAgOiBwdWJsaWMgcnRjOjpSZWZDb3VudGVkT2JqZWN0PFBlZXJD
b25uZWN0aW9uRmFjdG9yeT4gewogIHB1YmxpYzoKICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5Rm9y
RGF0YUNoYW5uZWxUZXN0KCkKICAgICAgIDogcnRjOjpSZWZDb3VudGVkT2JqZWN0PFBlZXJDb25u
ZWN0aW9uRmFjdG9yeT4oCi0gICAgICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLAotICAg
ICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwKLSAgICAgICAgICAgIHJ0Yzo6VGhyZWFk
OjpDdXJyZW50KCksCi0gICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpGYWtl
TWVkaWFFbmdpbmU+KCksCi0gICAgICAgICAgICBDcmVhdGVDYWxsRmFjdG9yeSgpLAotICAgICAg
ICAgICAgbnVsbHB0cikge30KKyAgICAgICAgICAgIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9y
eURlcGVuZGVuY2llcygKKyAgICAgICAgICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLAor
ICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksCisgICAgICAgICAgICAgICAg
cnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwKKyAgICAgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1
ZTxjcmlja2V0OjpGYWtlTWVkaWFFbmdpbmU+KCksCisgICAgICAgICAgICAgICAgQ3JlYXRlQ2Fs
bEZhY3RvcnkoKSwKKyAgICAgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTWVkaWFU
cmFuc3BvcnRGYWN0b3J5PigpKSkge30KIAogICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6U2N0
cFRyYW5zcG9ydEludGVybmFsRmFjdG9yeT4KICAgQ3JlYXRlU2N0cFRyYW5zcG9ydEludGVybmFs
RmFjdG9yeSgpIHsKQEAgLTEyMyw2ICsxNDYsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkRhdGFD
aGFubmVsQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAorICAgIG9ic2VydmVyLT5TZXRQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZShwYy5nZXQoKSk7CiAgICAgYXV0byB3cmFwcGVyID0gYWJzbDo6bWFrZV91bmlxdWU8UGVlckNv
bm5lY3Rpb25XcmFwcGVyRm9yRGF0YUNoYW5uZWxUZXN0PigKICAgICAgICAgcGNfZmFjdG9yeSwg
cGMsIHN0ZDo6bW92ZShvYnNlcnZlcikpOwogICAgIFJUQ19EQ0hFQ0socGNfZmFjdG9yeS0+bGFz
dF9mYWtlX3NjdHBfdHJhbnNwb3J0X2ZhY3RvcnlfKTsKQEAgLTMyMyw2ICszNDcsNTIgQEAgVEVT
VF9QKFBlZXJDb25uZWN0aW9uRGF0YUNoYW5uZWxUZXN0LCBTY3RwUG9ydFByb3BhZ2F0ZWRGcm9t
U2RwVG9UcmFuc3BvcnQpIHsKICAgRVhQRUNUX0VRKGtOZXdSZWN2UG9ydCwgY2FsbGVlX3RyYW5z
cG9ydC0+bG9jYWxfcG9ydCgpKTsKIH0KIAorVEVTVF9QKFBlZXJDb25uZWN0aW9uRGF0YUNoYW5u
ZWxUZXN0LAorICAgICAgIE5vU2N0cFRyYW5zcG9ydENyZWF0ZWRJZk1lZGlhVHJhbnNwb3J0RGF0
YUNoYW5uZWxzRW5hYmxlZCkgeworICBSVENDb25maWd1cmF0aW9uIGNvbmZpZzsKKyAgY29uZmln
LnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPSB0cnVlOworICBjb25maWcu
ZW5hYmxlX2R0bHNfc3J0cCA9IGZhbHNlOyAgLy8gU0RFUyBpcyByZXF1aXJlZCB0byB1c2UgbWVk
aWEgdHJhbnNwb3J0LgorICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aERh
dGFDaGFubmVsKGNvbmZpZyk7CisKKyAgQVNTRVJUX1RSVUUoY2FsbGVyLT5TZXRMb2NhbERlc2Ny
aXB0aW9uKGNhbGxlci0+Q3JlYXRlT2ZmZXIoKSkpOworICBFWFBFQ1RfRkFMU0UoY2FsbGVyLT5z
Y3RwX3RyYW5zcG9ydF9mYWN0b3J5KCktPmxhc3RfZmFrZV9zY3RwX3RyYW5zcG9ydCgpKTsKK30K
KworVEVTVF9QKFBlZXJDb25uZWN0aW9uRGF0YUNoYW5uZWxUZXN0LAorICAgICAgIE1lZGlhVHJh
bnNwb3J0RGF0YUNoYW5uZWxDcmVhdGVkRXZlbklmU2N0cEF2YWlsYWJsZSkgeworICBSVENDb25m
aWd1cmF0aW9uIGNvbmZpZzsKKyAgY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFf
Y2hhbm5lbHMgPSB0cnVlOworICBjb25maWcuZW5hYmxlX2R0bHNfc3J0cCA9IGZhbHNlOyAgLy8g
U0RFUyBpcyByZXF1aXJlZCB0byB1c2UgbWVkaWEgdHJhbnNwb3J0LgorICBQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2U6Ok9wdGlvbnMgb3B0aW9uczsKKyAgb3B0aW9ucy5kaXNhYmxlX3Nj
dHBfZGF0YV9jaGFubmVscyA9IGZhbHNlOworICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25u
ZWN0aW9uV2l0aERhdGFDaGFubmVsKGNvbmZpZywgb3B0aW9ucyk7CisKKyAgQVNTRVJUX1RSVUUo
Y2FsbGVyLT5TZXRMb2NhbERlc2NyaXB0aW9uKGNhbGxlci0+Q3JlYXRlT2ZmZXIoKSkpOworICBF
WFBFQ1RfRkFMU0UoY2FsbGVyLT5zY3RwX3RyYW5zcG9ydF9mYWN0b3J5KCktPmxhc3RfZmFrZV9z
Y3RwX3RyYW5zcG9ydCgpKTsKK30KKworVEVTVF9QKFBlZXJDb25uZWN0aW9uRGF0YUNoYW5uZWxU
ZXN0LAorICAgICAgIENhbm5vdEVuYWJsZUJvdGhNZWRpYVRyYW5zcG9ydEFuZFJ0cERhdGFDaGFu
bmVscykgeworICBSVENDb25maWd1cmF0aW9uIGNvbmZpZzsKKyAgY29uZmlnLmVuYWJsZV9ydHBf
ZGF0YV9jaGFubmVsID0gdHJ1ZTsKKyAgY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2Rh
dGFfY2hhbm5lbHMgPSB0cnVlOworICBjb25maWcuZW5hYmxlX2R0bHNfc3J0cCA9IGZhbHNlOyAg
Ly8gU0RFUyBpcyByZXF1aXJlZCB0byB1c2UgbWVkaWEgdHJhbnNwb3J0LgorICBFWFBFQ1RfRVEo
Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlnKSwgbnVsbHB0cik7Cit9CisKK1RFU1RfUChQZWVy
Q29ubmVjdGlvbkRhdGFDaGFubmVsVGVzdCwKKyAgICAgICBNZWRpYVRyYW5zcG9ydERhdGFDaGFu
bmVsRmFpbHNXaXRob3V0U2RlcykgeworICBSVENDb25maWd1cmF0aW9uIGNvbmZpZzsKKyAgY29u
ZmlnLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPSB0cnVlOworICBjb25m
aWcuZW5hYmxlX2R0bHNfc3J0cCA9IHRydWU7ICAvLyBEaXNhYmxlcyBTREVTIGZvciBkYXRhIHNl
Y3Rpb25zLgorICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aERhdGFDaGFu
bmVsKGNvbmZpZyk7CisKKyAgc3RkOjpzdHJpbmcgZXJyb3I7CisgIEFTU0VSVF9GQUxTRShjYWxs
ZXItPlNldExvY2FsRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVPZmZlcigpLCAmZXJyb3IpKTsK
KyAgRVhQRUNUX0VRKGVycm9yLAorICAgICAgICAgICAgIkZhaWxlZCB0byBzZXQgbG9jYWwgb2Zm
ZXIgc2RwOiBGYWlsZWQgdG8gY3JlYXRlIGRhdGEgY2hhbm5lbC4iKTsKK30KKwogSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoUGVlckNvbm5lY3Rpb25EYXRhQ2hhbm5lbFRlc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBQZWVyQ29ubmVjdGlvbkRhdGFDaGFubmVsVGVzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlcyhTZHBTZW1hbnRpY3M6OmtQbGFuQiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9u
X2hpc3RvZ3JhbV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2hpc3RvZ3JhbV91bml0dGVzdC5jYwppbmRleCBi
NWMwN2Y0OWVjNDExYjA2ODBjYTEzYmRkNzUwYmE4NmUwNDQ3OTVlLi40OTdlMzNhNjg4YzY1ZGI0
OTEwNzc2OGEyYzliMmM5OTc3YzA5NmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9oaXN0b2dyYW1fdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cGVlcmNvbm5lY3Rpb25faGlzdG9ncmFtX3VuaXR0ZXN0LmNjCkBAIC0yNTEsNiArMjUxLDcgQEAg
Y2xhc3MgUGVlckNvbm5lY3Rpb25Vc2FnZUhpc3RvZ3JhbVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIG9ic2VydmVyLT5T
ZXRQZWVyQ29ubmVjdGlvbkludGVyZmFjZShwYy5nZXQoKSk7CiAgICAgYXV0byB3cmFwcGVyID0K
ICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UGVlckNvbm5lY3Rpb25XcmFwcGVyRm9yVXNhZ2VI
aXN0b2dyYW1UZXN0PigKICAgICAgICAgICAgIHBjX2ZhY3RvcnksIHBjLCBzdGQ6Om1vdmUob2Jz
ZXJ2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2ljZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2ljZV91bml0dGVz
dC5jYwppbmRleCA5NjU5NTZjNDJhMzI0MWIxMTgwZTVkYjg3MzU4MTRlZGUzNmY1Mzc1Li45Mjg1
NDlmMzgwMGYyNTY0ZmU5YjY3NGMyZDRjNmY4MDVlZjBhYTkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9pY2Vf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcGVlcmNvbm5lY3Rpb25faWNlX3VuaXR0ZXN0LmNjCkBAIC0yMSw3ICsyMSw5IEBACiAj
aW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVj
cy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19j
b2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvY3Jl
YXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rp
b25wcm94eS5oIgorI2luY2x1ZGUgImFwaS91bWFtZXRyaWNzLmgiCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFw
aS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJwYy90ZXN0L2Zha2VhdWRpb2NhcHR1cmVtb2R1bGUuaCIKQEAgLTc3LDYgKzc5LDkgQEAgY2xh
c3MgUGVlckNvbm5lY3Rpb25XcmFwcGVyRm9ySWNlVGVzdCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlv
bldyYXBwZXIgewogCiAgIHZvaWQgc2V0X25ldHdvcmsocnRjOjpGYWtlTmV0d29ya01hbmFnZXIq
IG5ldHdvcmspIHsgbmV0d29ya18gPSBuZXR3b3JrOyB9CiAKKyAgLy8gVGhlIHBvcnQgYWxsb2Nh
dG9yIHVzZWQgYnkgdGhpcyBQQy4KKyAgY3JpY2tldDo6UG9ydEFsbG9jYXRvciogcG9ydF9hbGxv
Y2F0b3JfOworCiAgcHJpdmF0ZToKICAgcnRjOjpGYWtlTmV0d29ya01hbmFnZXIqIG5ldHdvcmtf
OwogfTsKQEAgLTExNCwxNSArMTE5LDE4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSWNlQmFzZVRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICBSVENDb25maWd1cmF0aW9uIG1vZGlm
aWVkX2NvbmZpZyA9IGNvbmZpZzsKICAgICBtb2RpZmllZF9jb25maWcuc2RwX3NlbWFudGljcyA9
IHNkcF9zZW1hbnRpY3NfOwogICAgIGF1dG8gb2JzZXJ2ZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxN
b2NrUGVlckNvbm5lY3Rpb25PYnNlcnZlcj4oKTsKKyAgICBhdXRvIHBvcnRfYWxsb2NhdG9yX2Nv
cHkgPSBwb3J0X2FsbG9jYXRvci5nZXQoKTsKICAgICBhdXRvIHBjID0gcGNfZmFjdG9yeV8tPkNy
ZWF0ZVBlZXJDb25uZWN0aW9uKAogICAgICAgICBtb2RpZmllZF9jb25maWcsIHN0ZDo6bW92ZShw
b3J0X2FsbG9jYXRvciksIG51bGxwdHIsIG9ic2VydmVyLmdldCgpKTsKICAgICBpZiAoIXBjKSB7
CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBvYnNlcnZlci0+U2V0UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2UocGMuZ2V0KCkpOwogICAgIGF1dG8gd3JhcHBlciA9IGFic2w6Om1h
a2VfdW5pcXVlPFBlZXJDb25uZWN0aW9uV3JhcHBlckZvckljZVRlc3Q+KAogICAgICAgICBwY19m
YWN0b3J5XywgcGMsIHN0ZDo6bW92ZShvYnNlcnZlcikpOwogICAgIHdyYXBwZXItPnNldF9uZXR3
b3JrKGZha2VfbmV0d29yayk7CisgICAgd3JhcHBlci0+cG9ydF9hbGxvY2F0b3JfID0gcG9ydF9h
bGxvY2F0b3JfY29weTsKICAgICByZXR1cm4gd3JhcHBlcjsKICAgfQogCkBAIC0yMDUsNyArMjEz
LDEyIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSWNlQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKICAgICBQZWVyQ29ubmVjdGlvbiogcGMgPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVj
dGlvbio+KHBjX3Byb3h5LT5pbnRlcm5hbCgpKTsKICAgICBmb3IgKGF1dG8gdHJhbnNjZWl2ZXIg
OiBwYy0+R2V0VHJhbnNjZWl2ZXJzSW50ZXJuYWwoKSkgewogICAgICAgaWYgKHRyYW5zY2VpdmVy
LT5tZWRpYV90eXBlKCkgPT0gY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTykgewotICAgICAgICBj
cmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5j
aGFubmVsKCk7CisgICAgICAgIC8vIFRPRE8oYW1pdGhpKTogVGhpcyB0ZXN0IHNlZW1zIHRvIGJl
IHVzaW5nIGEgbWV0aG9kIHRoYXQgc2hvdWxkIG5vdAorICAgICAgICAvLyBiZSBwdWJsaWMgfHJ0
cF9wYWNrZXRfdHJhbnNwb3J0fC4gQmVjYXVzZSB0aGUgdGVzdCBpcyBub3QgbW9ja2luZworICAg
ICAgICAvLyB0aGUgY2hhbm5lbHMgb3IgdHJhbnNjZWl2ZXIsIHdvcmthcm91bmQgd2lsbCBiZSB0
byB8c3RhdGljX2Nhc3R8CisgICAgICAgIC8vIHRoZSBjaGFubmVsIHVudGlsIHRoZSBtZXRob2Qg
aXMgcmV3cml0dGVuLgorICAgICAgICBjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hhbm5lbCA9IHN0
YXRpY19jYXN0PGNyaWNrZXQ6OkJhc2VDaGFubmVsKj4oCisgICAgICAgICAgICB0cmFuc2NlaXZl
ci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpKTsKICAgICAgICAgaWYgKGNoYW5uZWwpIHsKICAgICAg
ICAgICBhdXRvIGR0bHNfdHJhbnNwb3J0ID0gc3RhdGljX2Nhc3Q8Y3JpY2tldDo6RHRsc1RyYW5z
cG9ydEludGVybmFsKj4oCiAgICAgICAgICAgICAgIGNoYW5uZWwtPnJ0cF9wYWNrZXRfdHJhbnNw
b3J0KCkpOwpAQCAtMTAwNyw0ICsxMDIwLDQxIEBAIFRFU1RfRihQZWVyQ29ubmVjdGlvbkljZUNv
bmZpZ1Rlc3QsIFNldFN0dW5DYW5kaWRhdGVLZWVwYWxpdmVJbnRlcnZhbCkgewogICBFWFBFQ1Rf
RVEoYWN0dWFsX3N0dW5fa2VlcGFsaXZlX2ludGVydmFsLnZhbHVlX29yKC0xKSwgMzIxKTsKIH0K
IAorVEVTVF9QKFBlZXJDb25uZWN0aW9uSWNlVGVzdCwgSWNlQ3JlZGVudGlhbHNDcmVhdGVPZmZl
cikgeworICBSVENDb25maWd1cmF0aW9uIGNvbmZpZzsKKyAgY29uZmlnLmljZV9jYW5kaWRhdGVf
cG9vbF9zaXplID0gMTsKKyAgYXV0byBwYyA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlv
VmlkZW8oY29uZmlnKTsKKyAgQVNTRVJUX05FKHBjLT5wb3J0X2FsbG9jYXRvcl8sIG51bGxwdHIp
OworICBhdXRvIG9mZmVyID0gcGMtPkNyZWF0ZU9mZmVyKCk7CisgIGF1dG8gY3JlZGVudGlhbHMg
PSBwYy0+cG9ydF9hbGxvY2F0b3JfLT5HZXRQb29sZWRJY2VDcmVkZW50aWFscygpOworICBBU1NF
UlRfRVEoMXUsIGNyZWRlbnRpYWxzLnNpemUoKSk7CisKKyAgYXV0byogZGVzYyA9IG9mZmVyLT5k
ZXNjcmlwdGlvbigpOworICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRlbnQgOiBkZXNjLT5jb250ZW50
cygpKSB7CisgICAgYXV0byogdHJhbnNwb3J0X2luZm8gPSBkZXNjLT5HZXRUcmFuc3BvcnRJbmZv
QnlOYW1lKGNvbnRlbnQubmFtZSk7CisgICAgRVhQRUNUX0VRKHRyYW5zcG9ydF9pbmZvLT5kZXNj
cmlwdGlvbi5pY2VfdWZyYWcsIGNyZWRlbnRpYWxzWzBdLnVmcmFnKTsKKyAgICBFWFBFQ1RfRVEo
dHJhbnNwb3J0X2luZm8tPmRlc2NyaXB0aW9uLmljZV9wd2QsIGNyZWRlbnRpYWxzWzBdLnB3ZCk7
CisgIH0KK30KKworVEVTVF9QKFBlZXJDb25uZWN0aW9uSWNlVGVzdCwgSWNlQ3JlZGVudGlhbHND
cmVhdGVBbnN3ZXIpIHsKKyAgUlRDQ29uZmlndXJhdGlvbiBjb25maWc7CisgIGNvbmZpZy5pY2Vf
Y2FuZGlkYXRlX3Bvb2xfc2l6ZSA9IDE7CisgIGF1dG8gcGMgPSBDcmVhdGVQZWVyQ29ubmVjdGlv
bldpdGhBdWRpb1ZpZGVvKGNvbmZpZyk7CisgIEFTU0VSVF9ORShwYy0+cG9ydF9hbGxvY2F0b3Jf
LCBudWxscHRyKTsKKyAgYXV0byBvZmZlciA9IHBjLT5DcmVhdGVPZmZlcigpOworICBBU1NFUlRf
VFJVRShwYy0+U2V0UmVtb3RlRGVzY3JpcHRpb24oc3RkOjptb3ZlKG9mZmVyKSkpOworICBhdXRv
IGFuc3dlciA9IHBjLT5DcmVhdGVBbnN3ZXIoKTsKKworICBhdXRvIGNyZWRlbnRpYWxzID0gcGMt
PnBvcnRfYWxsb2NhdG9yXy0+R2V0UG9vbGVkSWNlQ3JlZGVudGlhbHMoKTsKKyAgQVNTRVJUX0VR
KDF1LCBjcmVkZW50aWFscy5zaXplKCkpOworCisgIGF1dG8qIGRlc2MgPSBhbnN3ZXItPmRlc2Ny
aXB0aW9uKCk7CisgIGZvciAoY29uc3QgYXV0byYgY29udGVudCA6IGRlc2MtPmNvbnRlbnRzKCkp
IHsKKyAgICBhdXRvKiB0cmFuc3BvcnRfaW5mbyA9IGRlc2MtPkdldFRyYW5zcG9ydEluZm9CeU5h
bWUoY29udGVudC5uYW1lKTsKKyAgICBFWFBFQ1RfRVEodHJhbnNwb3J0X2luZm8tPmRlc2NyaXB0
aW9uLmljZV91ZnJhZywgY3JlZGVudGlhbHNbMF0udWZyYWcpOworICAgIEVYUEVDVF9FUSh0cmFu
c3BvcnRfaW5mby0+ZGVzY3JpcHRpb24uaWNlX3B3ZCwgY3JlZGVudGlhbHNbMF0ucHdkKTsKKyAg
fQorfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9pbnRlZ3JhdGlv
bnRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9w
ZWVyY29ubmVjdGlvbl9pbnRlZ3JhdGlvbnRlc3QuY2MKaW5kZXggMjhlMDExMDM1NTAzN2VkNGQ3
ZWM5MTYzMjZhZTY4ZjE3MWNlMTNkMy4uYTdmN2FhZDBmNTRiMzFjYWVkM2VhN2ZkNDVmNjNmNDdj
OTRhOWVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25faW50ZWdyYXRpb250ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2ludGVn
cmF0aW9udGVzdC5jYwpAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVj
dGlvbmludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbnByb3h5LmgiCiAj
aW5jbHVkZSAiYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3Qv
bG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0LmgiCisjaW5jbHVkZSAiYXBpL3VtYW1ldHJpY3MuaCIK
ICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFj
dG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgpA
QCAtMjUwLDcgKzI1Miw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uV3JhcHBlciA6IHB1YmxpYyB3
ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIsCiAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlv
bkRlcGVuZGVuY2llcyBkZXBlbmRlbmNpZXMobnVsbHB0cik7CiAgICAgZGVwZW5kZW5jaWVzLmNl
cnRfZ2VuZXJhdG9yID0gc3RkOjptb3ZlKGNlcnRfZ2VuZXJhdG9yKTsKICAgICBpZiAoIWNsaWVu
dC0+SW5pdChudWxscHRyLCBudWxscHRyLCBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzKSwgbmV0d29y
a190aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgd29ya2VyX3RocmVhZCwgbnVsbHB0cikp
IHsKKyAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJfdGhyZWFkLCBudWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk9Ki9udWxscHRyKSkgewog
ICAgICAgZGVsZXRlIGNsaWVudDsKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTMx
Nyw2ICszMjAsMTIgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25XcmFwcGVyIDogcHVibGljIHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciwKICAgICBpY2VfY29ubmVjdGlvbl9zdGF0ZV9oaXN0
b3J5Xy5jbGVhcigpOwogICB9CiAKKyAgLy8gRXZlcnkgUGVlckNvbm5lY3Rpb24gc3RhdGUgaW4g
b3JkZXIgdGhhdCBoYXMgYmVlbiBzZWVuIGJ5IHRoZSBvYnNlcnZlci4KKyAgc3RkOjp2ZWN0b3I8
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU+CisgIHBlZXJfY29u
bmVjdGlvbl9zdGF0ZV9oaXN0b3J5KCkgY29uc3QgeworICAgIHJldHVybiBwZWVyX2Nvbm5lY3Rp
b25fc3RhdGVfaGlzdG9yeV87CisgIH0KKwogICAvLyBFdmVyeSBJQ0UgZ2F0aGVyaW5nIHN0YXRl
IGluIG9yZGVyIHRoYXQgaGFzIGJlZW4gc2VlbiBieSB0aGUgb2JzZXJ2ZXIuCiAgIHN0ZDo6dmVj
dG9yPFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0ZT4KICAgaWNlX2dh
dGhlcmluZ19zdGF0ZV9oaXN0b3J5KCkgY29uc3QgewpAQCAtNTgxLDEyICs1OTAsMTQgQEAgY2xh
c3MgUGVlckNvbm5lY3Rpb25XcmFwcGVyIDogcHVibGljIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25P
YnNlcnZlciwKICAgZXhwbGljaXQgUGVlckNvbm5lY3Rpb25XcmFwcGVyKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBkZWJ1Z19uYW1lKQogICAgICAgOiBkZWJ1Z19uYW1lXyhkZWJ1Z19uYW1lKSB7fQogCi0g
IGJvb2wgSW5pdChjb25zdCBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMqIG9wdGlvbnMs
Ci0gICAgICAgICAgICBjb25zdCBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJh
dGlvbiogY29uZmlnLAotICAgICAgICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVu
Y2llcyBkZXBlbmRlbmNpZXMsCi0gICAgICAgICAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJl
YWQsCi0gICAgICAgICAgICBydGM6OlRocmVhZCogd29ya2VyX3RocmVhZCwKLSAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkZha2VSdGNFdmVudExvZ0ZhY3Rvcnk+IGV2ZW50X2xv
Z19mYWN0b3J5KSB7CisgIGJvb2wgSW5pdCgKKyAgICAgIGNvbnN0IFBlZXJDb25uZWN0aW9uRmFj
dG9yeTo6T3B0aW9ucyogb3B0aW9ucywKKyAgICAgIGNvbnN0IFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpSVENDb25maWd1cmF0aW9uKiBjb25maWcsCisgICAgICB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uRGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llcywKKyAgICAgIHJ0Yzo6VGhyZWFkKiBuZXR3b3Jr
X3RocmVhZCwKKyAgICAgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAorICAgICAgc3RkOjp1
bmlxdWVfcHRyPHdlYnJ0Yzo6RmFrZVJ0Y0V2ZW50TG9nRmFjdG9yeT4gZXZlbnRfbG9nX2ZhY3Rv
cnksCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+
IG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KSB7CiAgICAgLy8gVGhlcmUncyBhbiBlcnJvciBpbiB0
aGlzIHRlc3QgY29kZSBpZiBJbml0IGVuZHMgdXAgYmVpbmcgY2FsbGVkIHR3aWNlLgogICAgIFJU
Q19EQ0hFQ0soIXBlZXJfY29ubmVjdGlvbl8pOwogICAgIFJUQ19EQ0hFQ0soIXBlZXJfY29ubmVj
dGlvbl9mYWN0b3J5Xyk7CkBAIC02MjQsNiArNjM1LDEwIEBAIGNsYXNzIFBlZXJDb25uZWN0aW9u
V3JhcHBlciA6IHB1YmxpYyB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIsCiAgICAgICBw
Y19mYWN0b3J5X2RlcGVuZGVuY2llcy5ldmVudF9sb2dfZmFjdG9yeSA9CiAgICAgICAgICAgd2Vi
cnRjOjpDcmVhdGVSdGNFdmVudExvZ0ZhY3RvcnkoKTsKICAgICB9CisgICAgaWYgKG1lZGlhX3Ry
YW5zcG9ydF9mYWN0b3J5KSB7CisgICAgICBwY19mYWN0b3J5X2RlcGVuZGVuY2llcy5tZWRpYV90
cmFuc3BvcnRfZmFjdG9yeSA9CisgICAgICAgICAgc3RkOjptb3ZlKG1lZGlhX3RyYW5zcG9ydF9m
YWN0b3J5KTsKKyAgICB9CiAgICAgcGVlcl9jb25uZWN0aW9uX2ZhY3RvcnlfID0gd2VicnRjOjpD
cmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KAogICAgICAgICBzdGQ6Om1vdmUocGNf
ZmFjdG9yeV9kZXBlbmRlbmNpZXMpKTsKIApAQCAtOTEzLDYgKzkyOCwxMSBAQCBjbGFzcyBQZWVy
Q29ubmVjdGlvbldyYXBwZXIgOiBwdWJsaWMgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVy
LAogICAgIEVYUEVDVF9FUShwYygpLT5pY2VfY29ubmVjdGlvbl9zdGF0ZSgpLCBuZXdfc3RhdGUp
OwogICAgIGljZV9jb25uZWN0aW9uX3N0YXRlX2hpc3RvcnlfLnB1c2hfYmFjayhuZXdfc3RhdGUp
OwogICB9CisgIHZvaWQgT25Db25uZWN0aW9uQ2hhbmdlKAorICAgICAgd2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdfc3RhdGUpIG92ZXJyaWRl
IHsKKyAgICBwZWVyX2Nvbm5lY3Rpb25fc3RhdGVfaGlzdG9yeV8ucHVzaF9iYWNrKG5ld19zdGF0
ZSk7CisgIH0KKwogICB2b2lkIE9uSWNlR2F0aGVyaW5nQ2hhbmdlKAogICAgICAgd2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlR2F0aGVyaW5nU3RhdGUgbmV3X3N0YXRlKSBvdmVy
cmlkZSB7CiAgICAgRVhQRUNUX0VRKHBjKCktPmljZV9nYXRoZXJpbmdfc3RhdGUoKSwgbmV3X3N0
YXRlKTsKQEAgLTEwMDksNiArMTAyOSw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uV3JhcHBlciA6
IHB1YmxpYyB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIsCiAKICAgc3RkOjp2ZWN0b3I8
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZT4KICAgICAgIGljZV9j
b25uZWN0aW9uX3N0YXRlX2hpc3RvcnlfOworICBzdGQ6OnZlY3RvcjxQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZT4KKyAgICAgIHBlZXJfY29ubmVjdGlvbl9zdGF0
ZV9oaXN0b3J5XzsKICAgc3RkOjp2ZWN0b3I8UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdh
dGhlcmluZ1N0YXRlPgogICAgICAgaWNlX2dhdGhlcmluZ19zdGF0ZV9oaXN0b3J5XzsKIApAQCAt
MTE0Miw3ICsxMTY0LDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgICAgICBzc18obmV3IHJ0Yzo6VmlydHVhbFNv
Y2tldFNlcnZlcigpKSwKICAgICAgICAgZnNzXyhuZXcgcnRjOjpGaXJld2FsbFNvY2tldFNlcnZl
cihzc18uZ2V0KCkpKSwKICAgICAgICAgbmV0d29ya190aHJlYWRfKG5ldyBydGM6OlRocmVhZChm
c3NfLmdldCgpKSksCi0gICAgICAgIHdvcmtlcl90aHJlYWRfKHJ0Yzo6VGhyZWFkOjpDcmVhdGUo
KSkgeworICAgICAgICB3b3JrZXJfdGhyZWFkXyhydGM6OlRocmVhZDo6Q3JlYXRlKCkpLAorICAg
ICAgICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzXyhuZXR3b3JrX3RocmVhZF8uZ2V0KCkpIHsK
ICAgICBuZXR3b3JrX3RocmVhZF8tPlNldE5hbWUoIlBDTmV0d29ya1RocmVhZCIsIHRoaXMpOwog
ICAgIHdvcmtlcl90aHJlYWRfLT5TZXROYW1lKCJQQ1dvcmtlclRocmVhZCIsIHRoaXMpOwogICAg
IFJUQ19DSEVDSyhuZXR3b3JrX3RocmVhZF8tPlN0YXJ0KCkpOwpAQCAtMTE5OCw3ICsxMjIxLDgg
QEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewogICAgICAgY29uc3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zKiBv
cHRpb25zLAogICAgICAgY29uc3QgUlRDQ29uZmlndXJhdGlvbiogY29uZmlnLAogICAgICAgd2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyBkZXBlbmRlbmNpZXMsCi0gICAgICBzdGQ6
OnVuaXF1ZV9wdHI8d2VicnRjOjpGYWtlUnRjRXZlbnRMb2dGYWN0b3J5PiBldmVudF9sb2dfZmFj
dG9yeSkgeworICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6RmFrZVJ0Y0V2ZW50TG9nRmFj
dG9yeT4gZXZlbnRfbG9nX2ZhY3RvcnksCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpN
ZWRpYVRyYW5zcG9ydEZhY3Rvcnk+IG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KSB7CiAgICAgUlRD
Q29uZmlndXJhdGlvbiBtb2RpZmllZF9jb25maWc7CiAgICAgaWYgKGNvbmZpZykgewogICAgICAg
bW9kaWZpZWRfY29uZmlnID0gKmNvbmZpZzsKQEAgLTEyMTMsNyArMTIzNyw4IEBAIGNsYXNzIFBl
ZXJDb25uZWN0aW9uSW50ZWdyYXRpb25CYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
IAogICAgIGlmICghY2xpZW50LT5Jbml0KG9wdGlvbnMsICZtb2RpZmllZF9jb25maWcsIHN0ZDo6
bW92ZShkZXBlbmRlbmNpZXMpLAogICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfdGhyZWFk
Xy5nZXQoKSwgd29ya2VyX3RocmVhZF8uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojptb3ZlKGV2ZW50X2xvZ19mYWN0b3J5KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1vdmUoZXZlbnRfbG9nX2ZhY3RvcnkpLAorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92
ZShtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSkpKSB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAgICAgcmV0dXJuIGNsaWVudDsKQEAgLTEyMjksNyArMTI1NCw4IEBAIGNsYXNzIFBlZXJD
b25uZWN0aW9uSW50ZWdyYXRpb25CYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAg
ICAgICAgbmV3IHdlYnJ0Yzo6RmFrZVJ0Y0V2ZW50TG9nRmFjdG9yeShydGM6OlRocmVhZDo6Q3Vy
cmVudCgpKSk7CiAgICAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcihkZWJ1Z19u
YW1lLCBvcHRpb25zLCBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1vdmUoZGVwZW5kZW5jaWVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bW92ZShldmVudF9sb2dfZmFjdG9yeSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGV2ZW50X2xvZ19mYWN0b3J5KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0
X2ZhY3Rvcnk9Ki9udWxscHRyKTsKICAgfQogCiAgIGJvb2wgQ3JlYXRlUGVlckNvbm5lY3Rpb25X
cmFwcGVycygpIHsKQEAgLTEyNTAsMTEgKzEyNzYsMTEgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25J
bnRlZ3JhdGlvbkJhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHNkcF9zZW1h
bnRpY3NfID0gY2FsbGVyX3NlbWFudGljczsKICAgICBjYWxsZXJfID0gQ3JlYXRlUGVlckNvbm5l
Y3Rpb25XcmFwcGVyKAogICAgICAgICAiQ2FsbGVyIiwgbnVsbHB0ciwgbnVsbHB0ciwgd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwKLSAgICAgICAgbnVsbHB0cik7
CisgICAgICAgIG51bGxwdHIsIC8qbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk9Ki9udWxscHRyKTsK
ICAgICBzZHBfc2VtYW50aWNzXyA9IGNhbGxlZV9zZW1hbnRpY3M7CiAgICAgY2FsbGVlXyA9IENy
ZWF0ZVBlZXJDb25uZWN0aW9uV3JhcHBlcigKICAgICAgICAgIkNhbGxlZSIsIG51bGxwdHIsIG51
bGxwdHIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMobnVsbHB0ciksCi0gICAg
ICAgIG51bGxwdHIpOworICAgICAgICBudWxscHRyLCAvKm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
PSovbnVsbHB0cik7CiAgICAgc2RwX3NlbWFudGljc18gPSBvcmlnaW5hbF9zZW1hbnRpY3M7CiAg
ICAgcmV0dXJuIGNhbGxlcl8gJiYgY2FsbGVlXzsKICAgfQpAQCAtMTI2NCwxMCArMTI5MCwyOCBA
QCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uQmFzZVRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CiAgICAgICBjb25zdCBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmln
dXJhdGlvbiYgY2FsbGVlX2NvbmZpZykgewogICAgIGNhbGxlcl8gPSBDcmVhdGVQZWVyQ29ubmVj
dGlvbldyYXBwZXIoCiAgICAgICAgICJDYWxsZXIiLCBudWxscHRyLCAmY2FsbGVyX2NvbmZpZywK
LSAgICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhudWxscHRyKSwgbnVs
bHB0cik7CisgICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMobnVsbHB0
ciksIG51bGxwdHIsCisgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk9Ki9udWxscHRy
KTsKICAgICBjYWxsZWVfID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyKAogICAgICAgICAi
Q2FsbGVlIiwgbnVsbHB0ciwgJmNhbGxlZV9jb25maWcsCi0gICAgICAgIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25EZXBlbmRlbmNpZXMobnVsbHB0ciksIG51bGxwdHIpOworICAgICAgICB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzKG51bGxwdHIpLCBudWxscHRyLAorICAgICAgICAv
Km1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5PSovbnVsbHB0cik7CisgICAgcmV0dXJuIGNhbGxlcl8g
JiYgY2FsbGVlXzsKKyAgfQorCisgIGJvb2wgQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyc1dp
dGhDb25maWdBbmRNZWRpYVRyYW5zcG9ydEZhY3RvcnkoCisgICAgICBjb25zdCBQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYgY2FsbGVyX2NvbmZpZywKKyAgICAgIGNv
bnN0IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiBjYWxsZWVfY29u
ZmlnLAorICAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRGYWN0b3J5
PiBjYWxsZXJfZmFjdG9yeSwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJh
bnNwb3J0RmFjdG9yeT4gY2FsbGVlX2ZhY3RvcnkpIHsKKyAgICBjYWxsZXJfID0KKyAgICAgICAg
Q3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyKCJDYWxsZXIiLCBudWxscHRyLCAmY2FsbGVyX2Nv
bmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25EZXBlbmRlbmNpZXMobnVsbHB0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLCBzdGQ6Om1vdmUoY2FsbGVyX2ZhY3RvcnkpKTsKKyAgICBjYWxs
ZWVfID0KKyAgICAgICAgQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyKCJDYWxsZWUiLCBudWxs
cHRyLCAmY2FsbGVlX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMobnVsbHB0ciksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBzdGQ6Om1vdmUoY2FsbGVlX2ZhY3Rv
cnkpKTsKICAgICByZXR1cm4gY2FsbGVyXyAmJiBjYWxsZWVfOwogICB9CiAKQEAgLTEyNzgsMTAg
KzEzMjIsMTIgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgewogICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVu
Y2llcyBjYWxsZWVfZGVwZW5kZW5jaWVzKSB7CiAgICAgY2FsbGVyXyA9CiAgICAgICAgIENyZWF0
ZVBlZXJDb25uZWN0aW9uV3JhcHBlcigiQ2FsbGVyIiwgbnVsbHB0ciwgJmNhbGxlcl9jb25maWcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoY2FsbGVyX2Rl
cGVuZGVuY2llcyksIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptb3ZlKGNhbGxlcl9kZXBlbmRlbmNpZXMpLCBudWxscHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnRfZmFjdG9yeT0qL251bGxw
dHIpOwogICAgIGNhbGxlZV8gPQogICAgICAgICBDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXIo
IkNhbGxlZSIsIG51bGxwdHIsICZjYWxsZWVfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptb3ZlKGNhbGxlZV9kZXBlbmRlbmNpZXMpLCBudWxscHRyKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShjYWxsZWVfZGVw
ZW5kZW5jaWVzKSwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qbWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnk9Ki9udWxscHRyKTsKICAgICByZXR1cm4gY2FsbGVy
XyAmJiBjYWxsZWVfOwogICB9CiAKQEAgLTEyOTAsMTAgKzEzMzYsMTIgQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAg
ICAgY29uc3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zJiBjYWxsZWVfb3B0aW9ucykg
ewogICAgIGNhbGxlcl8gPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXIoCiAgICAgICAgICJD
YWxsZXIiLCAmY2FsbGVyX29wdGlvbnMsIG51bGxwdHIsCi0gICAgICAgIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25EZXBlbmRlbmNpZXMobnVsbHB0ciksIG51bGxwdHIpOworICAgICAgICB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uRGVwZW5kZW5jaWVzKG51bGxwdHIpLCBudWxscHRyLAorICAgICAgICAv
Km1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5PSovbnVsbHB0cik7CiAgICAgY2FsbGVlXyA9IENyZWF0
ZVBlZXJDb25uZWN0aW9uV3JhcHBlcigKICAgICAgICAgIkNhbGxlZSIsICZjYWxsZWVfb3B0aW9u
cywgbnVsbHB0ciwKLSAgICAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkRlcGVuZGVuY2llcyhu
dWxscHRyKSwgbnVsbHB0cik7CisgICAgICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25EZXBlbmRl
bmNpZXMobnVsbHB0ciksIG51bGxwdHIsCisgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0X2ZhY3Rv
cnk9Ki9udWxscHRyKTsKICAgICByZXR1cm4gY2FsbGVyXyAmJiBjYWxsZWVfOwogICB9CiAKQEAg
LTEzMTcsNyArMTM2NSw4IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25CYXNlVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRGVw
ZW5kZW5jaWVzIGRlcGVuZGVuY2llcyhudWxscHRyKTsKICAgICBkZXBlbmRlbmNpZXMuY2VydF9n
ZW5lcmF0b3IgPSBzdGQ6Om1vdmUoY2VydF9nZW5lcmF0b3IpOwogICAgIHJldHVybiBDcmVhdGVQ
ZWVyQ29ubmVjdGlvbldyYXBwZXIoIk5ldyBQZWVyIiwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShkZXBlbmRlbmNpZXMp
LCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bW92ZShkZXBlbmRlbmNpZXMpLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnRfZmFjdG9yeT0qL251bGxwdHIpOwogICB9CiAK
ICAgY3JpY2tldDo6VGVzdFR1cm5TZXJ2ZXIqIENyZWF0ZVR1cm5TZXJ2ZXIoCkBAIC0xNDA1LDYg
KzE0NTQsMTAgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgewogCiAgIHJ0Yzo6VmlydHVhbFNvY2tldFNlcnZlciogdmlydHVh
bF9zb2NrZXRfc2VydmVyKCkgeyByZXR1cm4gc3NfLmdldCgpOyB9CiAKKyAgd2VicnRjOjpNZWRp
YVRyYW5zcG9ydFBhaXIqIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKSB7CisgICAgcmV0dXJu
ICZsb29wYmFja19tZWRpYV90cmFuc3BvcnRzXzsKKyAgfQorCiAgIFBlZXJDb25uZWN0aW9uV3Jh
cHBlciogY2FsbGVyKCkgeyByZXR1cm4gY2FsbGVyXy5nZXQoKTsgfQogCiAgIC8vIFNldCB0aGUg
fGNhbGxlcl98IHRvIHRoZSB8d3JhcHBlcnwgcGFzc2VkIGluIGFuZCByZXR1cm4gdGhlCkBAIC0x
NTU3LDkgKzE2MTAsMTEgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvbkJhc2VUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHJlbW90ZV9nY21fZW5hYmxlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGV4cGVjdGVkX2NpcGhlcl9zdWl0ZSkgewogICAgIFBl
ZXJDb25uZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyBjYWxsZXJfb3B0aW9uczsKLSAgICBjYWxsZXJf
b3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSBsb2NhbF9n
Y21fZW5hYmxlZDsKKyAgICBjYWxsZXJfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJs
ZV9nY21fY3J5cHRvX3N1aXRlcyA9CisgICAgICAgIGxvY2FsX2djbV9lbmFibGVkOwogICAgIFBl
ZXJDb25uZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyBjYWxsZWVfb3B0aW9uczsKLSAgICBjYWxsZWVf
b3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSByZW1vdGVf
Z2NtX2VuYWJsZWQ7CisgICAgY2FsbGVlX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFi
bGVfZ2NtX2NyeXB0b19zdWl0ZXMgPQorICAgICAgICByZW1vdGVfZ2NtX2VuYWJsZWQ7CiAgICAg
VGVzdE5lZ290aWF0ZWRDaXBoZXJTdWl0ZShjYWxsZXJfb3B0aW9ucywgY2FsbGVlX29wdGlvbnMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9jaXBoZXJfc3VpdGUpOwog
ICB9CkBAIC0xNTgxLDYgKzE2MzYsNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbkludGVncmF0aW9u
QmFzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgIC8vIG9uIHRoZSBuZXR3b3JrIHRo
cmVhZC4KICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OlRlc3RUdXJuU2Vy
dmVyPj4gdHVybl9zZXJ2ZXJzXzsKICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGNyaWNr
ZXQ6OlRlc3RUdXJuQ3VzdG9taXplcj4+IHR1cm5fY3VzdG9taXplcnNfOworICB3ZWJydGM6Ok1l
ZGlhVHJhbnNwb3J0UGFpciBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzXzsKICAgc3RkOjp1bmlx
dWVfcHRyPFBlZXJDb25uZWN0aW9uV3JhcHBlcj4gY2FsbGVyXzsKICAgc3RkOjp1bmlxdWVfcHRy
PFBlZXJDb25uZWN0aW9uV3JhcHBlcj4gY2FsbGVlXzsKIH07CkBAIC0xODA1LDI2ICsxODYxLDI2
IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uVGVzdCwKIAogICBhdXRvIGNhbGxl
cl9yZW1vdGVfY2VydCA9IEdldFJlbW90ZUF1ZGlvU1NMQ2VydGlmaWNhdGUoY2FsbGVyKCkpOwog
ICBBU1NFUlRfVFJVRShjYWxsZXJfcmVtb3RlX2NlcnQpOwotICBFWFBFQ1RfRVEoY2FsbGVlX2Nl
cnQtPnNzbF9jZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCksCisgIEVYUEVDVF9FUShjYWxsZWVf
Y2VydC0+R2V0U1NMQ2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpLAogICAgICAgICAgICAgY2Fs
bGVyX3JlbW90ZV9jZXJ0LT5Ub1BFTVN0cmluZygpKTsKIAogICBhdXRvIGNhbGxlZV9yZW1vdGVf
Y2VydCA9IEdldFJlbW90ZUF1ZGlvU1NMQ2VydGlmaWNhdGUoY2FsbGVlKCkpOwogICBBU1NFUlRf
VFJVRShjYWxsZWVfcmVtb3RlX2NlcnQpOwotICBFWFBFQ1RfRVEoY2FsbGVyX2NlcnQtPnNzbF9j
ZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCksCisgIEVYUEVDVF9FUShjYWxsZXJfY2VydC0+R2V0
U1NMQ2VydGlmaWNhdGUoKS5Ub1BFTVN0cmluZygpLAogICAgICAgICAgICAgY2FsbGVlX3JlbW90
ZV9jZXJ0LT5Ub1BFTVN0cmluZygpKTsKIAogICBhdXRvIGNhbGxlcl9yZW1vdGVfY2VydF9jaGFp
biA9IEdldFJlbW90ZUF1ZGlvU1NMQ2VydENoYWluKGNhbGxlcigpKTsKICAgQVNTRVJUX1RSVUUo
Y2FsbGVyX3JlbW90ZV9jZXJ0X2NoYWluKTsKICAgQVNTRVJUX0VRKDFVLCBjYWxsZXJfcmVtb3Rl
X2NlcnRfY2hhaW4tPkdldFNpemUoKSk7CiAgIGF1dG8gcmVtb3RlX2NlcnQgPSAmY2FsbGVyX3Jl
bW90ZV9jZXJ0X2NoYWluLT5HZXQoMCk7Ci0gIEVYUEVDVF9FUShjYWxsZWVfY2VydC0+c3NsX2Nl
cnRpZmljYXRlKCkuVG9QRU1TdHJpbmcoKSwKKyAgRVhQRUNUX0VRKGNhbGxlZV9jZXJ0LT5HZXRT
U0xDZXJ0aWZpY2F0ZSgpLlRvUEVNU3RyaW5nKCksCiAgICAgICAgICAgICByZW1vdGVfY2VydC0+
VG9QRU1TdHJpbmcoKSk7CiAKICAgYXV0byBjYWxsZWVfcmVtb3RlX2NlcnRfY2hhaW4gPSBHZXRS
ZW1vdGVBdWRpb1NTTENlcnRDaGFpbihjYWxsZWUoKSk7CiAgIEFTU0VSVF9UUlVFKGNhbGxlZV9y
ZW1vdGVfY2VydF9jaGFpbik7CiAgIEFTU0VSVF9FUSgxVSwgY2FsbGVlX3JlbW90ZV9jZXJ0X2No
YWluLT5HZXRTaXplKCkpOwogICByZW1vdGVfY2VydCA9ICZjYWxsZWVfcmVtb3RlX2NlcnRfY2hh
aW4tPkdldCgwKTsKLSAgRVhQRUNUX0VRKGNhbGxlcl9jZXJ0LT5zc2xfY2VydGlmaWNhdGUoKS5U
b1BFTVN0cmluZygpLAorICBFWFBFQ1RfRVEoY2FsbGVyX2NlcnQtPkdldFNTTENlcnRpZmljYXRl
KCkuVG9QRU1TdHJpbmcoKSwKICAgICAgICAgICAgIHJlbW90ZV9jZXJ0LT5Ub1BFTVN0cmluZygp
KTsKIH0KIApAQCAtMjg0Miw5ICsyODk4LDEwIEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVn
cmF0aW9uVGVzdCwgQ2FsbGVyRHRsczEwVG9DYWxsZWVEdGxzMTIpIHsKIFRFU1RfUChQZWVyQ29u
bmVjdGlvbkludGVncmF0aW9uVGVzdCwKICAgICAgICBBZXMxMjhTaGExXzMyX0NpcGhlck5vdFVz
ZWRXaGVuT25seUNhbGxlclN1cHBvcnRlZCkgewogICBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok9w
dGlvbnMgY2FsbGVyX29wdGlvbnM7Ci0gIGNhbGxlcl9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVu
YWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gdHJ1ZTsKKyAgY2FsbGVyX29wdGlv
bnMuY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhl
ciA9IHRydWU7CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6T3B0aW9ucyBjYWxsZWVfb3B0aW9u
czsKLSAgY2FsbGVlX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuZW5hYmxlX2FlczEyOF9zaGExXzMy
X2NyeXB0b19jaXBoZXIgPSBmYWxzZTsKKyAgY2FsbGVlX29wdGlvbnMuY3J5cHRvX29wdGlvbnMu
c3J0cC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9CisgICAgICBmYWxzZTsK
ICAgaW50IGV4cGVjdGVkX2NpcGhlcl9zdWl0ZSA9IHJ0Yzo6U1JUUF9BRVMxMjhfQ01fU0hBMV84
MDsKICAgVGVzdE5lZ290aWF0ZWRDaXBoZXJTdWl0ZShjYWxsZXJfb3B0aW9ucywgY2FsbGVlX29w
dGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfY2lwaGVyX3N1aXRl
KTsKQEAgLTI4NTMsOSArMjkxMCwxMCBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlv
blRlc3QsCiBURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QsCiAgICAgICAgQWVz
MTI4U2hhMV8zMl9DaXBoZXJOb3RVc2VkV2hlbk9ubHlDYWxsZWVTdXBwb3J0ZWQpIHsKICAgUGVl
ckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zIGNhbGxlcl9vcHRpb25zOwotICBjYWxsZXJfb3B0
aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9
IGZhbHNlOworICBjYWxsZXJfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9hZXMx
Mjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0KKyAgICAgIGZhbHNlOwogICBQZWVyQ29ubmVjdGlv
bkZhY3Rvcnk6Ok9wdGlvbnMgY2FsbGVlX29wdGlvbnM7Ci0gIGNhbGxlZV9vcHRpb25zLmNyeXB0
b19vcHRpb25zLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gdHJ1ZTsKKyAg
Y2FsbGVlX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfYWVzMTI4X3NoYTFfMzJf
Y3J5cHRvX2NpcGhlciA9IHRydWU7CiAgIGludCBleHBlY3RlZF9jaXBoZXJfc3VpdGUgPSBydGM6
OlNSVFBfQUVTMTI4X0NNX1NIQTFfODA7CiAgIFRlc3ROZWdvdGlhdGVkQ2lwaGVyU3VpdGUoY2Fs
bGVyX29wdGlvbnMsIGNhbGxlZV9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkX2NpcGhlcl9zdWl0ZSk7CkBAIC0yODYzLDkgKzI5MjEsOSBAQCBURVNUX1AoUGVl
ckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QsCiAKIFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVn
cmF0aW9uVGVzdCwgQWVzMTI4U2hhMV8zMl9DaXBoZXJVc2VkV2hlblN1cHBvcnRlZCkgewogICBQ
ZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok9wdGlvbnMgY2FsbGVyX29wdGlvbnM7Ci0gIGNhbGxlcl9v
cHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVy
ID0gdHJ1ZTsKKyAgY2FsbGVyX29wdGlvbnMuY3J5cHRvX29wdGlvbnMuc3J0cC5lbmFibGVfYWVz
MTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9IHRydWU7CiAgIFBlZXJDb25uZWN0aW9uRmFjdG9y
eTo6T3B0aW9ucyBjYWxsZWVfb3B0aW9uczsKLSAgY2FsbGVlX29wdGlvbnMuY3J5cHRvX29wdGlv
bnMuZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPSB0cnVlOworICBjYWxsZWVf
b3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9f
Y2lwaGVyID0gdHJ1ZTsKICAgaW50IGV4cGVjdGVkX2NpcGhlcl9zdWl0ZSA9IHJ0Yzo6U1JUUF9B
RVMxMjhfQ01fU0hBMV8zMjsKICAgVGVzdE5lZ290aWF0ZWRDaXBoZXJTdWl0ZShjYWxsZXJfb3B0
aW9ucywgY2FsbGVlX29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfY2lwaGVyX3N1aXRlKTsKQEAgLTI5MTUsNyArMjk3Myw3IEBAIFRFU1RfUChQZWVyQ29ubmVj
dGlvbkludGVncmF0aW9uVGVzdCwKIC8vIHdvcmtzIHdpdGggaXQuCiBURVNUX1AoUGVlckNvbm5l
Y3Rpb25JbnRlZ3JhdGlvblRlc3QsIEVuZFRvRW5kQ2FsbFdpdGhHY21DaXBoZXIpIHsKICAgUGVl
ckNvbm5lY3Rpb25GYWN0b3J5OjpPcHRpb25zIGdjbV9vcHRpb25zOwotICBnY21fb3B0aW9ucy5j
cnlwdG9fb3B0aW9ucy5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPSB0cnVlOworICBnY21fb3B0
aW9ucy5jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5cHRvX3N1aXRlcyA9IHRydWU7
CiAgIEFTU0VSVF9UUlVFKAogICAgICAgQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyc1dpdGhP
cHRpb25zKGdjbV9vcHRpb25zLCBnY21fb3B0aW9ucykpOwogICBDb25uZWN0RmFrZVNpZ25hbGlu
ZygpOwpAQCAtMzMyOSw2ICszMzg3LDE0NiBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlZ3Jh
dGlvblRlc3QsCiAKICNlbmRpZiAgLy8gSEFWRV9TQ1RQCiAKKy8vIFRoaXMgdGVzdCBzZXRzIHVw
IGEgY2FsbCBiZXR3ZWVuIHR3byBwYXJ0aWVzIHdpdGggYSBtZWRpYSB0cmFuc3BvcnQgZGF0YQor
Ly8gY2hhbm5lbC4KK1RFU1RfUChQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uVGVzdCwgTWVkaWFU
cmFuc3BvcnREYXRhQ2hhbm5lbEVuZFRvRW5kKSB7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpSVENDb25maWd1cmF0aW9uIHJ0Y19jb25maWc7CisgIHJ0Y19jb25maWcudXNlX21lZGlhX3Ry
YW5zcG9ydF9mb3JfZGF0YV9jaGFubmVscyA9IHRydWU7CisgIHJ0Y19jb25maWcuZW5hYmxlX2R0
bHNfc3J0cCA9IGZhbHNlOyAgLy8gU0RFUyBpcyByZXF1aXJlZCBmb3IgbWVkaWEgdHJhbnNwb3J0
LgorICBBU1NFUlRfVFJVRShDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXJzV2l0aENvbmZpZ0Fu
ZE1lZGlhVHJhbnNwb3J0RmFjdG9yeSgKKyAgICAgIHJ0Y19jb25maWcsIHJ0Y19jb25maWcsIGxv
b3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+Zmlyc3RfZmFjdG9yeSgpLAorICAgICAgbG9vcGJh
Y2tfbWVkaWFfdHJhbnNwb3J0cygpLT5zZWNvbmRfZmFjdG9yeSgpKSk7CisgIENvbm5lY3RGYWtl
U2lnbmFsaW5nKCk7CisKKyAgLy8gRXhwZWN0IHRoYXQgZGF0YSBjaGFubmVsIGNyZWF0ZWQgb24g
Y2FsbGVyIHNpZGUgd2lsbCBzaG93IHVwIGZvciBjYWxsZWUgYXMKKyAgLy8gd2VsbC4KKyAgY2Fs
bGVyKCktPkNyZWF0ZURhdGFDaGFubmVsKCk7CisgIGNhbGxlcigpLT5DcmVhdGVBbmRTZXRBbmRT
aWduYWxPZmZlcigpOworICBBU1NFUlRfVFJVRV9XQUlUKFNpZ25hbGluZ1N0YXRlU3RhYmxlKCks
IGtEZWZhdWx0VGltZW91dCk7CisKKyAgLy8gRW5zdXJlIHRoYXQgdGhlIG1lZGlhIHRyYW5zcG9y
dCBpcyByZWFkeS4KKyAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5TZXRTdGF0ZSh3ZWJy
dGM6Ok1lZGlhVHJhbnNwb3J0U3RhdGU6OmtXcml0YWJsZSk7CisgIGxvb3BiYWNrX21lZGlhX3Ry
YW5zcG9ydHMoKS0+Rmx1c2hBc3luY0ludm9rZXMoKTsKKworICAvLyBDYWxsZXIgZGF0YSBjaGFu
bmVsIHNob3VsZCBhbHJlYWR5IGV4aXN0IChpdCBjcmVhdGVkIG9uZSkuIENhbGxlZSBkYXRhCisg
IC8vIGNoYW5uZWwgbWF5IG5vdCBleGlzdCB5ZXQsIHNpbmNlIG5lZ290aWF0aW9uIGhhcHBlbnMg
aW4tYmFuZCwgbm90IGluIFNEUC4KKyAgQVNTRVJUX05FKG51bGxwdHIsIGNhbGxlcigpLT5kYXRh
X2NoYW5uZWwoKSk7CisgIEFTU0VSVF9UUlVFX1dBSVQoY2FsbGVlKCktPmRhdGFfY2hhbm5lbCgp
ICE9IG51bGxwdHIsIGtEZWZhdWx0VGltZW91dCk7CisgIEVYUEVDVF9UUlVFX1dBSVQoY2FsbGVy
KCktPmRhdGFfb2JzZXJ2ZXIoKS0+SXNPcGVuKCksIGtEZWZhdWx0VGltZW91dCk7CisgIEVYUEVD
VF9UUlVFX1dBSVQoY2FsbGVlKCktPmRhdGFfb2JzZXJ2ZXIoKS0+SXNPcGVuKCksIGtEZWZhdWx0
VGltZW91dCk7CisKKyAgLy8gRW5zdXJlIGRhdGEgY2FuIGJlIHNlbnQgaW4gYm90aCBkaXJlY3Rp
b25zLgorICBzdGQ6OnN0cmluZyBkYXRhID0gImhlbGxvIHdvcmxkIjsKKyAgY2FsbGVyKCktPmRh
dGFfY2hhbm5lbCgpLT5TZW5kKERhdGFCdWZmZXIoZGF0YSkpOworICBFWFBFQ1RfRVFfV0FJVChk
YXRhLCBjYWxsZWUoKS0+ZGF0YV9vYnNlcnZlcigpLT5sYXN0X21lc3NhZ2UoKSwKKyAgICAgICAg
ICAgICAgICAga0RlZmF1bHRUaW1lb3V0KTsKKyAgY2FsbGVlKCktPmRhdGFfY2hhbm5lbCgpLT5T
ZW5kKERhdGFCdWZmZXIoZGF0YSkpOworICBFWFBFQ1RfRVFfV0FJVChkYXRhLCBjYWxsZXIoKS0+
ZGF0YV9vYnNlcnZlcigpLT5sYXN0X21lc3NhZ2UoKSwKKyAgICAgICAgICAgICAgICAga0RlZmF1
bHRUaW1lb3V0KTsKK30KKworLy8gRW5zdXJlIHRoYXQgd2hlbiB0aGUgY2FsbGVlIGNsb3NlcyBh
IG1lZGlhIHRyYW5zcG9ydCBkYXRhIGNoYW5uZWwsIHRoZQorLy8gY2xvc2luZyBwcm9jZWR1cmUg
cmVzdWx0cyBpbiB0aGUgZGF0YSBjaGFubmVsIGJlaW5nIGNsb3NlZCBmb3IgdGhlIGNhbGxlcgor
Ly8gYXMgd2VsbC4KK1RFU1RfUChQZWVyQ29ubmVjdGlvbkludGVncmF0aW9uVGVzdCwgTWVkaWFU
cmFuc3BvcnREYXRhQ2hhbm5lbENhbGxlZUNsb3NlcykgeworICBQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBydGNfY29uZmlnOworICBydGNfY29uZmlnLnVzZV9tZWRp
YV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPSB0cnVlOworICBydGNfY29uZmlnLmVuYWJs
ZV9kdGxzX3NydHAgPSBmYWxzZTsgIC8vIFNERVMgaXMgcmVxdWlyZWQgZm9yIG1lZGlhIHRyYW5z
cG9ydC4KKyAgQVNTRVJUX1RSVUUoQ3JlYXRlUGVlckNvbm5lY3Rpb25XcmFwcGVyc1dpdGhDb25m
aWdBbmRNZWRpYVRyYW5zcG9ydEZhY3RvcnkoCisgICAgICBydGNfY29uZmlnLCBydGNfY29uZmln
LCBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPmZpcnN0X2ZhY3RvcnkoKSwKKyAgICAgIGxv
b3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+c2Vjb25kX2ZhY3RvcnkoKSkpOworICBDb25uZWN0
RmFrZVNpZ25hbGluZygpOworCisgIC8vIENyZWF0ZSBhIGRhdGEgY2hhbm5lbCBvbiB0aGUgY2Fs
bGVyIGFuZCBzaWduYWwgaXQgdG8gdGhlIGNhbGxlZS4KKyAgY2FsbGVyKCktPkNyZWF0ZURhdGFD
aGFubmVsKCk7CisgIGNhbGxlcigpLT5DcmVhdGVBbmRTZXRBbmRTaWduYWxPZmZlcigpOworICBB
U1NFUlRfVFJVRV9XQUlUKFNpZ25hbGluZ1N0YXRlU3RhYmxlKCksIGtEZWZhdWx0VGltZW91dCk7
CisKKyAgLy8gRW5zdXJlIHRoYXQgdGhlIG1lZGlhIHRyYW5zcG9ydCBpcyByZWFkeS4KKyAgbG9v
cGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5TZXRTdGF0ZSh3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0
U3RhdGU6OmtXcml0YWJsZSk7CisgIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+Rmx1c2hB
c3luY0ludm9rZXMoKTsKKworICAvLyBEYXRhIGNoYW5uZWxzIGV4aXN0IGFuZCBvcGVuIG9uIGJv
dGggZW5kcyBvZiB0aGUgY29ubmVjdGlvbi4KKyAgQVNTRVJUX05FKG51bGxwdHIsIGNhbGxlcigp
LT5kYXRhX2NoYW5uZWwoKSk7CisgIEFTU0VSVF9UUlVFX1dBSVQoY2FsbGVlKCktPmRhdGFfY2hh
bm5lbCgpICE9IG51bGxwdHIsIGtEZWZhdWx0VGltZW91dCk7CisgIEFTU0VSVF9UUlVFX1dBSVQo
Y2FsbGVyKCktPmRhdGFfb2JzZXJ2ZXIoKS0+SXNPcGVuKCksIGtEZWZhdWx0VGltZW91dCk7Cisg
IEFTU0VSVF9UUlVFX1dBSVQoY2FsbGVlKCktPmRhdGFfb2JzZXJ2ZXIoKS0+SXNPcGVuKCksIGtE
ZWZhdWx0VGltZW91dCk7CisKKyAgLy8gQ2xvc2UgdGhlIGRhdGEgY2hhbm5lbCBvbiB0aGUgY2Fs
bGVlIHNpZGUsIGFuZCB3YWl0IGZvciBpdCB0byByZWFjaCB0aGUKKyAgLy8gImNsb3NlZCIgc3Rh
dGUgb24gYm90aCBzaWRlcy4KKyAgY2FsbGVlKCktPmRhdGFfY2hhbm5lbCgpLT5DbG9zZSgpOwor
ICBFWFBFQ1RfVFJVRV9XQUlUKCFjYWxsZXIoKS0+ZGF0YV9vYnNlcnZlcigpLT5Jc09wZW4oKSwg
a0RlZmF1bHRUaW1lb3V0KTsKKyAgRVhQRUNUX1RSVUVfV0FJVCghY2FsbGVlKCktPmRhdGFfb2Jz
ZXJ2ZXIoKS0+SXNPcGVuKCksIGtEZWZhdWx0VGltZW91dCk7Cit9CisKK1RFU1RfUChQZWVyQ29u
bmVjdGlvbkludGVncmF0aW9uVGVzdCwKKyAgICAgICBNZWRpYVRyYW5zcG9ydERhdGFDaGFubmVs
Q29uZmlnU2VudFRvT3RoZXJTaWRlKSB7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVEND
b25maWd1cmF0aW9uIHJ0Y19jb25maWc7CisgIHJ0Y19jb25maWcudXNlX21lZGlhX3RyYW5zcG9y
dF9mb3JfZGF0YV9jaGFubmVscyA9IHRydWU7CisgIHJ0Y19jb25maWcuZW5hYmxlX2R0bHNfc3J0
cCA9IGZhbHNlOyAgLy8gU0RFUyBpcyByZXF1aXJlZCBmb3IgbWVkaWEgdHJhbnNwb3J0LgorICBB
U1NFUlRfVFJVRShDcmVhdGVQZWVyQ29ubmVjdGlvbldyYXBwZXJzV2l0aENvbmZpZ0FuZE1lZGlh
VHJhbnNwb3J0RmFjdG9yeSgKKyAgICAgIHJ0Y19jb25maWcsIHJ0Y19jb25maWcsIGxvb3BiYWNr
X21lZGlhX3RyYW5zcG9ydHMoKS0+Zmlyc3RfZmFjdG9yeSgpLAorICAgICAgbG9vcGJhY2tfbWVk
aWFfdHJhbnNwb3J0cygpLT5zZWNvbmRfZmFjdG9yeSgpKSk7CisgIENvbm5lY3RGYWtlU2lnbmFs
aW5nKCk7CisKKyAgLy8gQ3JlYXRlIGEgZGF0YSBjaGFubmVsIHdpdGggYSBub24tZGVmYXVsdCBj
b25maWd1cmF0aW9uIGFuZCBzaWduYWwgaXQgdG8gdGhlCisgIC8vIGNhbGxlZS4KKyAgd2VicnRj
OjpEYXRhQ2hhbm5lbEluaXQgaW5pdDsKKyAgaW5pdC5pZCA9IDUzOworICBpbml0Lm1heFJldHJh
bnNtaXRzID0gNTI7CisgIGNhbGxlcigpLT5DcmVhdGVEYXRhQ2hhbm5lbCgiZGF0YS1jaGFubmVs
IiwgJmluaXQpOworICBjYWxsZXIoKS0+Q3JlYXRlQW5kU2V0QW5kU2lnbmFsT2ZmZXIoKTsKKyAg
QVNTRVJUX1RSVUVfV0FJVChTaWduYWxpbmdTdGF0ZVN0YWJsZSgpLCBrRGVmYXVsdFRpbWVvdXQp
OworCisgIC8vIEVuc3VyZSB0aGF0IHRoZSBtZWRpYSB0cmFuc3BvcnQgaXMgcmVhZHkuCisgIGxv
b3BiYWNrX21lZGlhX3RyYW5zcG9ydHMoKS0+U2V0U3RhdGUod2VicnRjOjpNZWRpYVRyYW5zcG9y
dFN0YXRlOjprV3JpdGFibGUpOworICBsb29wYmFja19tZWRpYV90cmFuc3BvcnRzKCktPkZsdXNo
QXN5bmNJbnZva2VzKCk7CisKKyAgLy8gRW5zdXJlIHRoYXQgdGhlIGRhdGEgY2hhbm5lbCBleGlz
dHMgb24gdGhlIGNhbGxlZSB3aXRoIHRoZSBjb3JyZWN0CisgIC8vIGNvbmZpZ3VyYXRpb24uCisg
IEFTU0VSVF9UUlVFX1dBSVQoY2FsbGVlKCktPmRhdGFfY2hhbm5lbCgpICE9IG51bGxwdHIsIGtE
ZWZhdWx0VGltZW91dCk7CisgIEFTU0VSVF9UUlVFX1dBSVQoY2FsbGVlKCktPmRhdGFfb2JzZXJ2
ZXIoKS0+SXNPcGVuKCksIGtEZWZhdWx0VGltZW91dCk7CisgIEVYUEVDVF9FUShpbml0LmlkLCBj
YWxsZWUoKS0+ZGF0YV9jaGFubmVsKCktPmlkKCkpOworICBFWFBFQ1RfRVEoImRhdGEtY2hhbm5l
bCIsIGNhbGxlZSgpLT5kYXRhX2NoYW5uZWwoKS0+bGFiZWwoKSk7CisgIEVYUEVDVF9FUShpbml0
Lm1heFJldHJhbnNtaXRzLCBjYWxsZWUoKS0+ZGF0YV9jaGFubmVsKCktPm1heFJldHJhbnNtaXRz
KCkpOworICBFWFBFQ1RfRkFMU0UoY2FsbGVlKCktPmRhdGFfY2hhbm5lbCgpLT5uZWdvdGlhdGVk
KCkpOworfQorCitURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRlZ3JhdGlvblRlc3QsIE1lZGlhVHJh
bnNwb3J0QmlkaXJlY3Rpb25hbEF1ZGlvKSB7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpS
VENDb25maWd1cmF0aW9uIHJ0Y19jb25maWc7CisgIHJ0Y19jb25maWcudXNlX21lZGlhX3RyYW5z
cG9ydCA9IHRydWU7CisgIHJ0Y19jb25maWcuZW5hYmxlX2R0bHNfc3J0cCA9IGZhbHNlOyAgLy8g
U0RFUyBpcyByZXF1aXJlZCBmb3IgbWVkaWEgdHJhbnNwb3J0LgorICBBU1NFUlRfVFJVRShDcmVh
dGVQZWVyQ29ubmVjdGlvbldyYXBwZXJzV2l0aENvbmZpZ0FuZE1lZGlhVHJhbnNwb3J0RmFjdG9y
eSgKKyAgICAgIHJ0Y19jb25maWcsIHJ0Y19jb25maWcsIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9y
dHMoKS0+Zmlyc3RfZmFjdG9yeSgpLAorICAgICAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygp
LT5zZWNvbmRfZmFjdG9yeSgpKSk7CisgIENvbm5lY3RGYWtlU2lnbmFsaW5nKCk7CisKKyAgY2Fs
bGVyKCktPkFkZEF1ZGlvVHJhY2soKTsKKyAgY2FsbGVlKCktPkFkZEF1ZGlvVHJhY2soKTsKKyAg
Ly8gU3RhcnQgb2ZmZXIvYW5zd2VyIGV4Y2hhbmdlIGFuZCB3YWl0IGZvciBpdCB0byBjb21wbGV0
ZS4KKyAgY2FsbGVyKCktPkNyZWF0ZUFuZFNldEFuZFNpZ25hbE9mZmVyKCk7CisgIEFTU0VSVF9U
UlVFX1dBSVQoU2lnbmFsaW5nU3RhdGVTdGFibGUoKSwga0RlZmF1bHRUaW1lb3V0KTsKKworICAv
LyBFbnN1cmUgdGhhdCB0aGUgbWVkaWEgdHJhbnNwb3J0IGlzIHJlYWR5LgorICBsb29wYmFja19t
ZWRpYV90cmFuc3BvcnRzKCktPlNldFN0YXRlKHdlYnJ0Yzo6TWVkaWFUcmFuc3BvcnRTdGF0ZTo6
a1dyaXRhYmxlKTsKKyAgbG9vcGJhY2tfbWVkaWFfdHJhbnNwb3J0cygpLT5GbHVzaEFzeW5jSW52
b2tlcygpOworCisgIE1lZGlhRXhwZWN0YXRpb25zIG1lZGlhX2V4cGVjdGF0aW9uczsKKyAgbWVk
aWFfZXhwZWN0YXRpb25zLkV4cGVjdEJpZGlyZWN0aW9uYWxBdWRpbygpOworICBBU1NFUlRfVFJV
RShFeHBlY3ROZXdGcmFtZXMobWVkaWFfZXhwZWN0YXRpb25zKSk7CisKKyAgd2VicnRjOjpNZWRp
YVRyYW5zcG9ydFBhaXI6OlN0YXRzIGZpcnN0X3N0YXRzID0KKyAgICAgIGxvb3BiYWNrX21lZGlh
X3RyYW5zcG9ydHMoKS0+Rmlyc3RTdGF0cygpOworICB3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0UGFp
cjo6U3RhdHMgc2Vjb25kX3N0YXRzID0KKyAgICAgIGxvb3BiYWNrX21lZGlhX3RyYW5zcG9ydHMo
KS0+U2Vjb25kU3RhdHMoKTsKKworICBFWFBFQ1RfR1QoZmlyc3Rfc3RhdHMucmVjZWl2ZWRfYXVk
aW9fZnJhbWVzLCAwKTsKKyAgRVhQRUNUX0dFKHNlY29uZF9zdGF0cy5zZW50X2F1ZGlvX2ZyYW1l
cywgZmlyc3Rfc3RhdHMucmVjZWl2ZWRfYXVkaW9fZnJhbWVzKTsKKworICBFWFBFQ1RfR1Qoc2Vj
b25kX3N0YXRzLnJlY2VpdmVkX2F1ZGlvX2ZyYW1lcywgMCk7CisgIEVYUEVDVF9HRShmaXJzdF9z
dGF0cy5zZW50X2F1ZGlvX2ZyYW1lcywgc2Vjb25kX3N0YXRzLnJlY2VpdmVkX2F1ZGlvX2ZyYW1l
cyk7Cit9CisKIC8vIFRlc3QgdGhhdCB0aGUgSUNFIGNvbm5lY3Rpb24gYW5kIGdhdGhlcmluZyBz
dGF0ZXMgZXZlbnR1YWxseSByZWFjaAogLy8gImNvbXBsZXRlIi4KIFRFU1RfUChQZWVyQ29ubmVj
dGlvbkludGVncmF0aW9uVGVzdCwgSWNlU3RhdGVzUmVhY2hDb21wbGV0aW9uKSB7CkBAIC0zNTU3
LDYgKzM3NTUsMTcgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZWdyYXRpb25JY2VTdGF0ZXNU
ZXN0LCBWZXJpZnlJY2VTdGF0ZXMpIHsKICAgICAgICAgICAgICAgRWxlbWVudHNBcmUoUGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OmtJY2VDb25uZWN0aW9uQ2hlY2tpbmcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlQ29ubmVjdGlvbkNvbm5l
Y3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OmtJY2VDb25uZWN0aW9uQ29tcGxldGVkKSk7CisgIC8vIEFmdGVyIHRoZSBpY2UgdHJhbnNwb3J0
IHRyYW5zaXRpb25zIGZyb20gY2hlY2tpbmcgdG8gY29ubmVjdGVkIHdlIHJldmVydAorICAvLyBi
YWNrIHRvIG5ldyBhcyB0aGUgc3RhbmRhcmQgcmVxdWlyZXMsIGFzIGF0IHRoYXQgcG9pbnQgdGhl
IERUTFMgdHJhbnNwb3J0CisgIC8vIGlzIGluIHRoZSAibmV3IiBzdGF0ZSB3aGlsZSBubyB0cmFu
c3BvcnRzIGFyZSAiY29ubmVjdGluZyIsICJjaGVja2luZyIsCisgIC8vICJmYWlsZWQiIG9yIGRp
c2Nvbm5lY3RlZC4gVGhpcyBpcyBwcmV0dHkgdW5pbnR1aXRpdmUsIGFuZCB3ZSBtaWdodCB3YW50
IHRvCisgIC8vIGFtZW5kIHRoZSBzcGVjIHRvIGhhbmRsZSB0aGlzIGNhc2UgbW9yZSBncmFjZWZ1
bGx5LgorICBFWFBFQ1RfVEhBVCgKKyAgICAgIGNhbGxlcigpLT5wZWVyX2Nvbm5lY3Rpb25fc3Rh
dGVfaGlzdG9yeSgpLAorICAgICAgRWxlbWVudHNBcmUoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDb25uZWN0aW5nLAorICAgICAgICAgICAgICAgICAgUGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtOZXcsCisgICAgICAg
ICAgICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZTo6
a0Nvbm5lY3RpbmcsCisgICAgICAgICAgICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3RlZCkpOwogICBFWFBFQ1RfVEhBVChjYWxsZXIo
KS0+aWNlX2dhdGhlcmluZ19zdGF0ZV9oaXN0b3J5KCksCiAgICAgICAgICAgICAgIEVsZW1lbnRz
QXJlKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprSWNlR2F0aGVyaW5nR2F0aGVyaW5nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUdhdGhl
cmluZ0NvbXBsZXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9qc2VwX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fanNl
cF91bml0dGVzdC5jYwppbmRleCA3ZGUwYTNmZjE0YTRhYjk3YTk4Y2JjNzY3YTkzOThjYzdmYTg4
OGIxLi5mZTg3OGIwNWY3OGMyMzE3NzAwNjhhZWFlMmNjZWE2MTkwMzUyNGM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVj
dGlvbl9qc2VwX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2pzZXBfdW5pdHRlc3QuY2MKQEAgLTk1LDYg
Kzk1LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25Kc2VwVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgb2JzZXJ2ZXItPlNl
dFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlKHBjLmdldCgpKTsKICAgICByZXR1cm4gYWJzbDo6bWFr
ZV91bmlxdWU8UGVlckNvbm5lY3Rpb25XcmFwcGVyPihwY19mYWN0b3J5LCBwYywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUob2Jz
ZXJ2ZXIpKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fbWVkaWFfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9tZWRp
YV91bml0dGVzdC5jYwppbmRleCA2ZjRmZTFlM2Y0ODllOTg5MmQ2NDkyMTY4YjM3ZWJkZDUwMzBl
NWJmLi42YWYwYzk4ODdlNmUyZGZlNGExYzA3Y2FkMjIwZWJkMTIwZTU2NDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVj
dGlvbl9tZWRpYV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9tZWRpYV91bml0dGVzdC5jYwpAQCAtMTUs
NiArMTUsNyBAQAogI2luY2x1ZGUgPHR1cGxlPgogCiAjaW5jbHVkZSAiYXBpL2NhbGwvY2FsbGZh
Y3RvcnlpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC9mYWtlX21lZGlhX3RyYW5zcG9y
dC5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNfZXZlbnRfbG9nX2ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJtZWRpYS9iYXNlL2Zha2VtZWRpYWVuZ2luZS5oIgogI2luY2x1ZGUg
InAycC9iYXNlL2Zha2Vwb3J0YWxsb2NhdG9yLmgiCkBAIC03MSwxMyArNzIsMjYgQEAgY2xhc3Mg
UGVlckNvbm5lY3Rpb25NZWRpYUJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAg
ICAgcmV0dXJuIENyZWF0ZVBlZXJDb25uZWN0aW9uKFJUQ0NvbmZpZ3VyYXRpb24oKSk7CiAgIH0K
IAorICAvLyBDcmVhdGVzIFBlZXJDb25uZWN0aW9uRmFjdG9yeSBhbmQgUGVlckNvbm5lY3Rpb24g
Zm9yIGdpdmVuIGNvbmZpZ3VyYXRpb24uCisgIC8vIE5vdGUgdGhhdCBQZWVyQ29ubmVjdGlvbkZh
Y3RvcnkgaXMgY3JlYXRlZCB3aXRoIE1lZGlhVHJhbnNwb3J0RmFjdG9yeSwKKyAgLy8gYmVjYXVz
ZSBzb21lIHRlc3RzIHBhc3MgY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnQgPSB0cnVlLgogICBX
cmFwcGVyUHRyIENyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbnN0IFJUQ0NvbmZpZ3VyYXRpb24mIGNv
bmZpZykgewogICAgIGF1dG8gbWVkaWFfZW5naW5lID0gYWJzbDo6bWFrZV91bmlxdWU8RmFrZU1l
ZGlhRW5naW5lPigpOwogICAgIGF1dG8qIG1lZGlhX2VuZ2luZV9wdHIgPSBtZWRpYV9lbmdpbmUu
Z2V0KCk7Ci0gICAgYXV0byBwY19mYWN0b3J5ID0gQ3JlYXRlTW9kdWxhclBlZXJDb25uZWN0aW9u
RmFjdG9yeSgKLSAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwgcnRjOjpUaHJlYWQ6OkN1
cnJlbnQoKSwgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwKLSAgICAgICAgc3RkOjptb3ZlKG1lZGlh
X2VuZ2luZSksIENyZWF0ZUNhbGxGYWN0b3J5KCksCi0gICAgICAgIENyZWF0ZVJ0Y0V2ZW50TG9n
RmFjdG9yeSgpKTsKKworICAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeURlcGVuZGVuY2llcyBmYWN0
b3J5X2RlcGVuZGVuY2llczsKKworICAgIGZhY3RvcnlfZGVwZW5kZW5jaWVzLm5ldHdvcmtfdGhy
ZWFkID0gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKTsKKyAgICBmYWN0b3J5X2RlcGVuZGVuY2llcy53
b3JrZXJfdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKTsKKyAgICBmYWN0b3J5X2RlcGVu
ZGVuY2llcy5zaWduYWxpbmdfdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKTsKKyAgICBm
YWN0b3J5X2RlcGVuZGVuY2llcy5tZWRpYV9lbmdpbmUgPSBzdGQ6Om1vdmUobWVkaWFfZW5naW5l
KTsKKyAgICBmYWN0b3J5X2RlcGVuZGVuY2llcy5jYWxsX2ZhY3RvcnkgPSBDcmVhdGVDYWxsRmFj
dG9yeSgpOworICAgIGZhY3RvcnlfZGVwZW5kZW5jaWVzLmV2ZW50X2xvZ19mYWN0b3J5ID0gQ3Jl
YXRlUnRjRXZlbnRMb2dGYWN0b3J5KCk7CisgICAgZmFjdG9yeV9kZXBlbmRlbmNpZXMubWVkaWFf
dHJhbnNwb3J0X2ZhY3RvcnkgPQorICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTWVkaWFU
cmFuc3BvcnRGYWN0b3J5PigpOworCisgICAgYXV0byBwY19mYWN0b3J5ID0KKyAgICAgICAgQ3Jl
YXRlTW9kdWxhclBlZXJDb25uZWN0aW9uRmFjdG9yeShzdGQ6Om1vdmUoZmFjdG9yeV9kZXBlbmRl
bmNpZXMpKTsKIAogICAgIGF1dG8gZmFrZV9wb3J0X2FsbG9jYXRvciA9IGFic2w6Om1ha2VfdW5p
cXVlPGNyaWNrZXQ6OkZha2VQb3J0QWxsb2NhdG9yPigKICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1
cnJlbnQoKSwgbnVsbHB0cik7CkBAIC05MSwxMiArMTA1LDI1IEBAIGNsYXNzIFBlZXJDb25uZWN0
aW9uTWVkaWFCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCisgICAgb2JzZXJ2ZXItPlNldFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlKHBjLmdldCgpKTsKICAgICBhdXRvIHdyYXBwZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxQZWVy
Q29ubmVjdGlvbldyYXBwZXJGb3JNZWRpYVRlc3Q+KAogICAgICAgICBwY19mYWN0b3J5LCBwYywg
c3RkOjptb3ZlKG9ic2VydmVyKSk7CiAgICAgd3JhcHBlci0+c2V0X21lZGlhX2VuZ2luZShtZWRp
YV9lbmdpbmVfcHRyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKICAgfQogCisgIC8vIEFjY2VwdHMg
dGhlIHNhbWUgYXJndW1lbnRzIGFzIENyZWF0ZVBlZXJDb25uZWN0aW9uIGFuZCBhZGRzIGRlZmF1
bHQgYXVkaW8KKyAgLy8gdHJhY2sgKGJ1dCBubyB2aWRlbykuCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgorICBXcmFwcGVyUHRyIENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlvKEFy
Z3MmJi4uLiBhcmdzKSB7CisgICAgYXV0byB3cmFwcGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24o
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICBpZiAoIXdyYXBwZXIpIHsKKyAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyAgICB3cmFwcGVyLT5BZGRBdWRpb1RyYWNrKCJhIik7
CisgICAgcmV0dXJuIHdyYXBwZXI7CisgIH0KKwogICAvLyBBY2NlcHRzIHRoZSBzYW1lIGFyZ3Vt
ZW50cyBhcyBDcmVhdGVQZWVyQ29ubmVjdGlvbiBhbmQgYWRkcyBkZWZhdWx0IGF1ZGlvCiAgIC8v
IGFuZCB2aWRlbyB0cmFja3MuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgpAQCAtNjc3
LDcgKzcwNCw3IEBAIHZvaWQgQWRkQ29tZm9ydE5vaXNlQ29kZWNzVG9TZW5kKGNyaWNrZXQ6OkZh
a2VNZWRpYUVuZ2luZSogbWVkaWFfZW5naW5lKSB7CiAgIGNvbnN0IGNyaWNrZXQ6OkF1ZGlvQ29k
ZWMga0NvbWZvcnROb2lzZUNvZGVjOGsoMTAyLCAiQ04iLCA4MDAwLCAwLCAxKTsKICAgY29uc3Qg
Y3JpY2tldDo6QXVkaW9Db2RlYyBrQ29tZm9ydE5vaXNlQ29kZWMxNmsoMTAzLCAiQ04iLCAxNjAw
MCwgMCwgMSk7CiAKLSAgYXV0byBjb2RlY3MgPSBtZWRpYV9lbmdpbmUtPmF1ZGlvX3NlbmRfY29k
ZWNzKCk7CisgIGF1dG8gY29kZWNzID0gbWVkaWFfZW5naW5lLT52b2ljZSgpLnNlbmRfY29kZWNz
KCk7CiAgIGNvZGVjcy5wdXNoX2JhY2soa0NvbWZvcnROb2lzZUNvZGVjOGspOwogICBjb2RlY3Mu
cHVzaF9iYWNrKGtDb21mb3J0Tm9pc2VDb2RlYzE2ayk7CiAgIG1lZGlhX2VuZ2luZS0+U2V0QXVk
aW9Db2RlY3MoY29kZWNzKTsKQEAgLTEwNzIsNiArMTA5OSwxMjggQEAgVEVTVF9QKFBlZXJDb25u
ZWN0aW9uTWVkaWFUZXN0LAogICAgICAgICAgICAgYXVkaW9fb3B0aW9ucy5jb21iaW5lZF9hdWRp
b192aWRlb19id2UpOwogfQogCitURVNUX1AoUGVlckNvbm5lY3Rpb25NZWRpYVRlc3QsIE1lZGlh
VHJhbnNwb3J0UHJvcGFnYXRlZFRvVm9pY2VFbmdpbmUpIHsKKyAgUlRDQ29uZmlndXJhdGlvbiBj
b25maWc7CisKKyAgLy8gU2V0dXAgUGVlckNvbm5lY3Rpb24gdG8gdXNlIG1lZGlhIHRyYW5zcG9y
dC4KKyAgY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnQgPSB0cnVlOworCisgIC8vIEZvcmNlIFNE
RVMuCisgIGNvbmZpZy5lbmFibGVfZHRsc19zcnRwID0gZmFsc2U7CisKKyAgYXV0byBjYWxsZXIg
PSBDcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhBdWRpbyhjb25maWcpOworICBhdXRvIGNhbGxlZSA9
IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlvKGNvbmZpZyk7CisKKyAgQVNTRVJUX1RSVUUo
Y2FsbGVlLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9mZmVyQW5kU2V0QXNM
b2NhbCgpKSk7CisgIGF1dG8gYW5zd2VyID0gY2FsbGVlLT5DcmVhdGVBbnN3ZXIoKTsKKyAgQVNT
RVJUX1RSVUUoY2FsbGVlLT5TZXRMb2NhbERlc2NyaXB0aW9uKHN0ZDo6bW92ZShhbnN3ZXIpKSk7
CisKKyAgYXV0byBjYWxsZXJfdm9pY2UgPSBjYWxsZXItPm1lZGlhX2VuZ2luZSgpLT5HZXRWb2lj
ZUNoYW5uZWwoMCk7CisgIGF1dG8gY2FsbGVlX3ZvaWNlID0gY2FsbGVlLT5tZWRpYV9lbmdpbmUo
KS0+R2V0Vm9pY2VDaGFubmVsKDApOworICBBU1NFUlRfVFJVRShjYWxsZXJfdm9pY2UpOworICBB
U1NFUlRfVFJVRShjYWxsZWVfdm9pY2UpOworCisgIC8vIE1ha2Ugc3VyZSBtZWRpYSB0cmFuc3Bv
cnQgaXMgcHJvcGFnYXRlZCB0byB2b2ljZSBjaGFubmVsLgorICBGYWtlTWVkaWFUcmFuc3BvcnQq
IGNhbGxlcl92b2ljZV9tZWRpYV90cmFuc3BvcnQgPQorICAgICAgc3RhdGljX2Nhc3Q8RmFrZU1l
ZGlhVHJhbnNwb3J0Kj4oY2FsbGVyX3ZvaWNlLT5tZWRpYV90cmFuc3BvcnQoKSk7CisgIEZha2VN
ZWRpYVRyYW5zcG9ydCogY2FsbGVlX3ZvaWNlX21lZGlhX3RyYW5zcG9ydCA9CisgICAgICBzdGF0
aWNfY2FzdDxGYWtlTWVkaWFUcmFuc3BvcnQqPihjYWxsZWVfdm9pY2UtPm1lZGlhX3RyYW5zcG9y
dCgpKTsKKyAgQVNTRVJUX05FKG51bGxwdHIsIGNhbGxlcl92b2ljZV9tZWRpYV90cmFuc3BvcnQp
OworICBBU1NFUlRfTkUobnVsbHB0ciwgY2FsbGVlX3ZvaWNlX21lZGlhX3RyYW5zcG9ydCk7CisK
KyAgLy8gTWFrZSBzdXJlIG1lZGlhIHRyYW5zcG9ydCBpcyBjcmVhdGVkIHdpdGggY29ycmVjdCBp
c19jYWxsZXIuCisgIEVYUEVDVF9UUlVFKGNhbGxlcl92b2ljZV9tZWRpYV90cmFuc3BvcnQtPmlz
X2NhbGxlcigpKTsKKyAgRVhQRUNUX0ZBTFNFKGNhbGxlZV92b2ljZV9tZWRpYV90cmFuc3BvcnQt
PmlzX2NhbGxlcigpKTsKKworICAvLyBUT0RPKHN1a2hhbm92KTogUHJvcGFnYXRlIG1lZGlhIHRy
YW5zcG9ydCB0byB2aWRlbyBjaGFubmVsLgorICAvLyBUaGlzIHRlc3QgZG9lcyBOT1Qgc2V0IHVw
IHZpZGVvIGNoYW5uZWxzLCBiZWNhdXNlIGN1cnJlbnRseSBpdCBjYXVzZXMKKyAgLy8gdXMgdG8g
Y3JlYXRlIHR3byBtZWRpYSB0cmFuc3BvcnRzLgorfQorCitURVNUX1AoUGVlckNvbm5lY3Rpb25N
ZWRpYVRlc3QsIE1lZGlhVHJhbnNwb3J0T25seUZvckRhdGFDaGFubmVscykgeworICBSVENDb25m
aWd1cmF0aW9uIGNvbmZpZzsKKworICAvLyBTZXR1cCBQZWVyQ29ubmVjdGlvbiB0byB1c2UgbWVk
aWEgdHJhbnNwb3J0IGZvciBkYXRhIGNoYW5uZWxzLgorICBjb25maWcudXNlX21lZGlhX3RyYW5z
cG9ydF9mb3JfZGF0YV9jaGFubmVscyA9IHRydWU7CisKKyAgLy8gRm9yY2UgU0RFUy4KKyAgY29u
ZmlnLmVuYWJsZV9kdGxzX3NydHAgPSBmYWxzZTsKKworICBhdXRvIGNhbGxlciA9IENyZWF0ZVBl
ZXJDb25uZWN0aW9uV2l0aEF1ZGlvKGNvbmZpZyk7CisgIGF1dG8gY2FsbGVlID0gQ3JlYXRlUGVl
ckNvbm5lY3Rpb25XaXRoQXVkaW8oY29uZmlnKTsKKworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNl
dFJlbW90ZURlc2NyaXB0aW9uKGNhbGxlci0+Q3JlYXRlT2ZmZXJBbmRTZXRBc0xvY2FsKCkpKTsK
KyAgQVNTRVJUX1RSVUUoY2FsbGVlLT5TZXRMb2NhbERlc2NyaXB0aW9uKGNhbGxlZS0+Q3JlYXRl
QW5zd2VyKCkpKTsKKworICBhdXRvIGNhbGxlcl92b2ljZSA9IGNhbGxlci0+bWVkaWFfZW5naW5l
KCktPkdldFZvaWNlQ2hhbm5lbCgwKTsKKyAgYXV0byBjYWxsZWVfdm9pY2UgPSBjYWxsZWUtPm1l
ZGlhX2VuZ2luZSgpLT5HZXRWb2ljZUNoYW5uZWwoMCk7CisgIEFTU0VSVF9UUlVFKGNhbGxlcl92
b2ljZSk7CisgIEFTU0VSVF9UUlVFKGNhbGxlZV92b2ljZSk7CisKKyAgLy8gTWFrZSBzdXJlIG1l
ZGlhIHRyYW5zcG9ydCBpcyBub3QgcHJvcGFnYXRlZCB0byB2b2ljZSBjaGFubmVsLgorICBFWFBF
Q1RfRVEobnVsbHB0ciwgY2FsbGVyX3ZvaWNlLT5tZWRpYV90cmFuc3BvcnQoKSk7CisgIEVYUEVD
VF9FUShudWxscHRyLCBjYWxsZWVfdm9pY2UtPm1lZGlhX3RyYW5zcG9ydCgpKTsKK30KKworVEVT
VF9QKFBlZXJDb25uZWN0aW9uTWVkaWFUZXN0LCBNZWRpYVRyYW5zcG9ydEZvck1lZGlhQW5kRGF0
YUNoYW5uZWxzKSB7CisgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOworCisgIC8vIFNldHVwIFBl
ZXJDb25uZWN0aW9uIHRvIHVzZSBtZWRpYSB0cmFuc3BvcnQgZm9yIGJvdGggbWVkaWEgYW5kIGRh
dGEKKyAgLy8gY2hhbm5lbHMuCisgIGNvbmZpZy51c2VfbWVkaWFfdHJhbnNwb3J0ID0gdHJ1ZTsK
KyAgY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPSB0cnVlOwor
CisgIC8vIEZvcmNlIFNERVMuCisgIGNvbmZpZy5lbmFibGVfZHRsc19zcnRwID0gZmFsc2U7CisK
KyAgYXV0byBjYWxsZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbldpdGhBdWRpbyhjb25maWcpOwor
ICBhdXRvIGNhbGxlZSA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlvKGNvbmZpZyk7CisK
KyAgQVNTRVJUX1RSVUUoY2FsbGVlLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0
ZU9mZmVyQW5kU2V0QXNMb2NhbCgpKSk7CisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0TG9jYWxE
ZXNjcmlwdGlvbihjYWxsZWUtPkNyZWF0ZUFuc3dlcigpKSk7CisKKyAgYXV0byBjYWxsZXJfdm9p
Y2UgPSBjYWxsZXItPm1lZGlhX2VuZ2luZSgpLT5HZXRWb2ljZUNoYW5uZWwoMCk7CisgIGF1dG8g
Y2FsbGVlX3ZvaWNlID0gY2FsbGVlLT5tZWRpYV9lbmdpbmUoKS0+R2V0Vm9pY2VDaGFubmVsKDAp
OworICBBU1NFUlRfVFJVRShjYWxsZXJfdm9pY2UpOworICBBU1NFUlRfVFJVRShjYWxsZWVfdm9p
Y2UpOworCisgIC8vIE1ha2Ugc3VyZSBtZWRpYSB0cmFuc3BvcnQgaXMgcHJvcGFnYXRlZCB0byB2
b2ljZSBjaGFubmVsLgorICBGYWtlTWVkaWFUcmFuc3BvcnQqIGNhbGxlcl92b2ljZV9tZWRpYV90
cmFuc3BvcnQgPQorICAgICAgc3RhdGljX2Nhc3Q8RmFrZU1lZGlhVHJhbnNwb3J0Kj4oY2FsbGVy
X3ZvaWNlLT5tZWRpYV90cmFuc3BvcnQoKSk7CisgIEZha2VNZWRpYVRyYW5zcG9ydCogY2FsbGVl
X3ZvaWNlX21lZGlhX3RyYW5zcG9ydCA9CisgICAgICBzdGF0aWNfY2FzdDxGYWtlTWVkaWFUcmFu
c3BvcnQqPihjYWxsZWVfdm9pY2UtPm1lZGlhX3RyYW5zcG9ydCgpKTsKKyAgQVNTRVJUX05FKG51
bGxwdHIsIGNhbGxlcl92b2ljZV9tZWRpYV90cmFuc3BvcnQpOworICBBU1NFUlRfTkUobnVsbHB0
ciwgY2FsbGVlX3ZvaWNlX21lZGlhX3RyYW5zcG9ydCk7CisKKyAgLy8gTWFrZSBzdXJlIG1lZGlh
IHRyYW5zcG9ydCBpcyBjcmVhdGVkIHdpdGggY29ycmVjdCBpc19jYWxsZXIuCisgIEVYUEVDVF9U
UlVFKGNhbGxlcl92b2ljZV9tZWRpYV90cmFuc3BvcnQtPmlzX2NhbGxlcigpKTsKKyAgRVhQRUNU
X0ZBTFNFKGNhbGxlZV92b2ljZV9tZWRpYV90cmFuc3BvcnQtPmlzX2NhbGxlcigpKTsKK30KKwor
VEVTVF9QKFBlZXJDb25uZWN0aW9uTWVkaWFUZXN0LCBNZWRpYVRyYW5zcG9ydE5vdFByb3BhZ2F0
ZWRUb1ZvaWNlRW5naW5lKSB7CisgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25X
aXRoQXVkaW9WaWRlbygpOworICBhdXRvIGNhbGxlZSA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0
aEF1ZGlvVmlkZW8oKTsKKworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldFJlbW90ZURlc2NyaXB0
aW9uKGNhbGxlci0+Q3JlYXRlT2ZmZXJBbmRTZXRBc0xvY2FsKCkpKTsKKyAgYXV0byBhbnN3ZXIg
PSBjYWxsZWUtPkNyZWF0ZUFuc3dlcigpOworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldExvY2Fs
RGVzY3JpcHRpb24oc3RkOjptb3ZlKGFuc3dlcikpKTsKKworICBhdXRvIGNhbGxlcl92b2ljZSA9
IGNhbGxlci0+bWVkaWFfZW5naW5lKCktPkdldFZvaWNlQ2hhbm5lbCgwKTsKKyAgYXV0byBjYWxs
ZWVfdm9pY2UgPSBjYWxsZWUtPm1lZGlhX2VuZ2luZSgpLT5HZXRWb2ljZUNoYW5uZWwoMCk7Cisg
IEFTU0VSVF9UUlVFKGNhbGxlcl92b2ljZSk7CisgIEFTU0VSVF9UUlVFKGNhbGxlZV92b2ljZSk7
CisKKyAgLy8gU2luY2Ugd2UgZGlkIG5vdCBzZXR1cCBQZWVyQ29ubmVjdGlvbiB0byB1c2UgbWVk
aWEgdHJhbnNwb3J0LCBtZWRpYQorICAvLyB0cmFuc3BvcnQgc2hvdWxkIG5vdCBiZSBjcmVhdGVk
IC8gcHJvcGFnYXRlZCB0byB0aGUgdm9pY2UgZW5naW5lLgorICBBU1NFUlRfRVEobnVsbHB0ciwg
Y2FsbGVyX3ZvaWNlLT5tZWRpYV90cmFuc3BvcnQoKSk7CisgIEFTU0VSVF9FUShudWxscHRyLCBj
YWxsZWVfdm9pY2UtPm1lZGlhX3RyYW5zcG9ydCgpKTsKKworICBhdXRvIGNhbGxlcl92aWRlbyA9
IGNhbGxlci0+bWVkaWFfZW5naW5lKCktPkdldFZpZGVvQ2hhbm5lbCgwKTsKKyAgYXV0byBjYWxs
ZWVfdmlkZW8gPSBjYWxsZWUtPm1lZGlhX2VuZ2luZSgpLT5HZXRWaWRlb0NoYW5uZWwoMCk7Cisg
IEFTU0VSVF9FUShudWxscHRyLCBjYWxsZXJfdmlkZW8tPm1lZGlhX3RyYW5zcG9ydCgpKTsKKyAg
QVNTRVJUX0VRKG51bGxwdHIsIGNhbGxlZV92aWRlby0+bWVkaWFfdHJhbnNwb3J0KCkpOworfQor
CiBJTlNUQU5USUFURV9URVNUX0NBU0VfUChQZWVyQ29ubmVjdGlvbk1lZGlhVGVzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIFBlZXJDb25uZWN0aW9uTWVkaWFUZXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWVzKFNkcFNlbWFudGljczo6a1BsYW5CLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25f
cmFtcHVwX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcGVlcmNvbm5lY3Rpb25fcmFtcHVwX3Rlc3RzLmNjCmluZGV4IDg1MDIxMmJmMGRjYTRi
ZDc1MjgyODI4ODY5MDMyY2VkYThjOTMzMGQuLjc0ZjgwMThmYjA5YjdlMGRhMTA3Zjc4MzQ5NDMy
MjcyMTRlOWM4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX3JhbXB1cF90ZXN0cy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9yYW1w
dXBfdGVzdHMuY2MKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgImFwaS9hdWRpb19jb2Rl
Y3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9f
Y29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL2Ny
ZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3N0YXRzL3J0Y3N0
YXRzX29iamVjdHMuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9f
ZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fcnRwX3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b25fcnRwX3VuaXR0ZXN0LmNjCmluZGV4IGJjMzY2MmNiYmQ0M2UzNDFkMWFhZTgyM2M3ZDgxNjgz
MThhZTI4MmUuLjcwOTg0NzBiYWFlZWU5OGQwZTc0YTZmYzcwNzRhODc2MTFmOTU5NmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJj
b25uZWN0aW9uX3J0cF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9ydHBfdW5pdHRlc3QuY2MKQEAgLTE0
LDkgKzE0LDExIEBACiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAi
YXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1
ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNp
bmNsdWRlICJhcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJh
cGkvanNlcC5oIgogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oIgogI2luY2x1
ZGUgImFwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgorI2luY2x1ZGUgImFwaS91bWFtZXRy
aWNzLmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2RlY29kZXJf
ZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNv
ZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJwYy9tZWRpYXNlc3Npb24uaCIKQEAgLTExNiw2ICsx
MTgsOCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvblJ0cEJhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewogICAgIGF1dG8gb2JzZXJ2ZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxNb2NrUGVlckNv
bm5lY3Rpb25PYnNlcnZlcj4oKTsKICAgICBhdXRvIHBjID0gcGNfZmFjdG9yeV8tPkNyZWF0ZVBl
ZXJDb25uZWN0aW9uKGNvbmZpZywgbnVsbHB0ciwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmdldCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShwYy5nZXQoKSk7CisgICAgb2JzZXJ2ZXItPlNldFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlKHBjLmdldCgpKTsKICAgICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8UGVlckNvbm5lY3Rp
b25XcmFwcGVyPihwY19mYWN0b3J5XywgcGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKG9ic2VydmVyKSk7CiAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJj
b25uZWN0aW9uX3NpZ25hbGluZ191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX3NpZ25hbGluZ191bml0dGVzdC5j
YwppbmRleCA5NWY0NjRiMmVlMjQ5MjI0MDQyNDE4ZDY3YjE5Y2ZmOWJhODRjODJiLi5mNTdmODA2
YjY0N2YwMTMzOWZiYjAyNTJjYzEwNzFlYTNhMjQyZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9zaWduYWxp
bmdfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fc2lnbmFsaW5nX3VuaXR0ZXN0LmNjCkBAIC0xNSw2ICsx
NSw3IEBACiAKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rl
cl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2Vu
Y29kZXJfZmFjdG9yeS5oIgorI2luY2x1ZGUgImFwaS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFj
dG9yeS5oIgogI2luY2x1ZGUgImFwaS9wZWVyY29ubmVjdGlvbnByb3h5LmgiCiAjaW5jbHVkZSAi
YXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3MvYnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKQEAg
LTkwLDYgKzkxLDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25TaWduYWxpbmdCYXNlVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisg
ICAgb2JzZXJ2ZXItPlNldFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlKHBjLmdldCgpKTsKICAgICBy
ZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8UGVlckNvbm5lY3Rpb25XcmFwcGVyRm9yU2lnbmFsaW5n
VGVzdD4oCiAgICAgICAgIHBjX2ZhY3RvcnlfLCBwYywgc3RkOjptb3ZlKG9ic2VydmVyKSk7CiAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3BlZXJjb25uZWN0aW9uZW5kdG9lbmRfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmVuZHRvZW5kX3VuaXR0
ZXN0LmNjCmluZGV4IDYwZGEyZDI0MmMxYWEzNWRjZjFjZGRlZjQ3ZmU2YjMyM2ZlZGU5ZmYuLmRl
ZTI1M2I3YzcxODcwYTcyOGMyMmI5OGEwZjY3YjUzOTBjYzk0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZW5k
dG9lbmRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25lbmR0b2VuZF91bml0dGVzdC5jYwpAQCAtMTEsNiAr
MTEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9y
eS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgImFwaS9hdWRp
b19jb2RlY3MvTDE2L2F1ZGlvX2RlY29kZXJfTDE2LmgiCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2Nv
ZGVjcy9MMTYvYXVkaW9fZW5jb2Rlcl9MMTYuaCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNz
L2F1ZGlvX2NvZGVjX3BhaXJfaWQuaCIKQEAgLTIwLDcgKzIxLDYgQEAKICNpbmNsdWRlICJhcGkv
YXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvZ3VuaXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVk
ZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRp
bHMuaCIKIAogI2lmZGVmIFdFQlJUQ19BTkRST0lECkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAicGMvdGVzdC9tb2NrcGVlcmNvbm5lY3Rpb25vYnNlcnZlcnMuaCIKICNpbmNsdWRlICJ0ZXN0
L21vY2tfYXVkaW9fZGVjb2Rlci5oIgogI2luY2x1ZGUgInRlc3QvbW9ja19hdWRpb19kZWNvZGVy
X2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJ0ZXN0L21vY2tfYXVkaW9fZW5jb2Rlcl9mYWN0b3J5Lmgi
CiAKIHVzaW5nIHRlc3Rpbmc6OkF0TGVhc3Q7CiB1c2luZyB0ZXN0aW5nOjpJbnZva2U7CkBAIC0z
MDAsNyArMzAxLDcgQEAgQ3JlYXRlRm9yd2FyZGluZ01vY2tEZWNvZGVyRmFjdG9yeSgKIHN0cnVj
dCBBdWRpb0VuY29kZXJVbmljb3JuU3BhcmtsZXNSYWluYm93IHsKICAgdXNpbmcgQ29uZmlnID0g
d2VicnRjOjpBdWRpb0VuY29kZXJMMTY6OkNvbmZpZzsKICAgc3RhdGljIGFic2w6Om9wdGlvbmFs
PENvbmZpZz4gU2RwVG9Db25maWcod2VicnRjOjpTZHBBdWRpb0Zvcm1hdCBmb3JtYXQpIHsKLSAg
ICBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5uYW1lLmNfc3RyKCksICJVbmljb3JuU3BhcmtsZXNS
YWluYm93IikgPT0gMCkgeworICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5u
YW1lLCAiVW5pY29yblNwYXJrbGVzUmFpbmJvdyIpKSB7CiAgICAgICBjb25zdCB3ZWJydGM6OlNk
cEF1ZGlvRm9ybWF0OjpQYXJhbWV0ZXJzIGV4cGVjdGVkX3BhcmFtcyA9IHsKICAgICAgICAgICB7
Im51bV9ob3JucyIsICIxIn19OwogICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX3BhcmFtcywgZm9y
bWF0LnBhcmFtZXRlcnMpOwpAQCAtMzM3LDcgKzMzOCw3IEBAIHN0cnVjdCBBdWRpb0VuY29kZXJV
bmljb3JuU3BhcmtsZXNSYWluYm93IHsKIHN0cnVjdCBBdWRpb0RlY29kZXJVbmljb3JuU3Bhcmts
ZXNSYWluYm93IHsKICAgdXNpbmcgQ29uZmlnID0gd2VicnRjOjpBdWRpb0RlY29kZXJMMTY6OkNv
bmZpZzsKICAgc3RhdGljIGFic2w6Om9wdGlvbmFsPENvbmZpZz4gU2RwVG9Db25maWcod2VicnRj
OjpTZHBBdWRpb0Zvcm1hdCBmb3JtYXQpIHsKLSAgICBpZiAoU1RSX0NBU0VfQ01QKGZvcm1hdC5u
YW1lLmNfc3RyKCksICJVbmljb3JuU3BhcmtsZXNSYWluYm93IikgPT0gMCkgeworICAgIGlmIChh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKGZvcm1hdC5uYW1lLCAiVW5pY29yblNwYXJrbGVzUmFpbmJv
dyIpKSB7CiAgICAgICBjb25zdCB3ZWJydGM6OlNkcEF1ZGlvRm9ybWF0OjpQYXJhbWV0ZXJzIGV4
cGVjdGVkX3BhcmFtcyA9IHsKICAgICAgICAgICB7Im51bV9ob3JucyIsICIxIn19OwogICAgICAg
RVhQRUNUX0VRKGV4cGVjdGVkX3BhcmFtcywgZm9ybWF0LnBhcmFtZXRlcnMpOwpAQCAtNDgxLDcg
KzQ4Miw3IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwgQ2FsbFdpdGhDdXN0
b21Db2RlYykgewogLy8gVmVyaWZpZXMgdGhhdCBhIERhdGFDaGFubmVsIGNyZWF0ZWQgYmVmb3Jl
IHRoZSBuZWdvdGlhdGlvbiBjYW4gdHJhbnNpdGlvbiB0bwogLy8gIk9QRU4iIGFuZCB0cmFuc2Zl
ciBkYXRhLgogVEVTVF9QKFBlZXJDb25uZWN0aW9uRW5kVG9FbmRUZXN0LCBDcmVhdGVEYXRhQ2hh
bm5lbEJlZm9yZU5lZ290aWF0ZSkgewotICBDcmVhdGVQY3Mod2VicnRjOjpDcmVhdGVCdWlsdGlu
QXVkaW9FbmNvZGVyRmFjdG9yeSgpLAorICBDcmVhdGVQY3Mod2VicnRjOjpNb2NrQXVkaW9FbmNv
ZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCksCiAgICAgICAgICAgICB3ZWJydGM6Ok1v
Y2tBdWRpb0RlY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSk7CiAKICAgd2VicnRj
OjpEYXRhQ2hhbm5lbEluaXQgaW5pdDsKQEAgLTUwNiw3ICs1MDcsNyBAQCBURVNUX1AoUGVlckNv
bm5lY3Rpb25FbmRUb0VuZFRlc3QsIENyZWF0ZURhdGFDaGFubmVsQmVmb3JlTmVnb3RpYXRlKSB7
CiAvLyBWZXJpZmllcyB0aGF0IGEgRGF0YUNoYW5uZWwgY3JlYXRlZCBhZnRlciB0aGUgbmVnb3Rp
YXRpb24gY2FuIHRyYW5zaXRpb24gdG8KIC8vICJPUEVOIiBhbmQgdHJhbnNmZXIgZGF0YS4KIFRF
U1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwgQ3JlYXRlRGF0YUNoYW5uZWxBZnRlck5l
Z290aWF0ZSkgewotICBDcmVhdGVQY3Mod2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVy
RmFjdG9yeSgpLAorICBDcmVhdGVQY3Mod2VicnRjOjpNb2NrQXVkaW9FbmNvZGVyRmFjdG9yeTo6
Q3JlYXRlRW1wdHlGYWN0b3J5KCksCiAgICAgICAgICAgICB3ZWJydGM6Ok1vY2tBdWRpb0RlY29k
ZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSk7CiAKICAgd2VicnRjOjpEYXRhQ2hhbm5l
bEluaXQgaW5pdDsKQEAgLTUzOCw3ICs1MzksNyBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRU
b0VuZFRlc3QsIENyZWF0ZURhdGFDaGFubmVsQWZ0ZXJOZWdvdGlhdGUpIHsKIAogLy8gVmVyaWZp
ZXMgdGhhdCBhIERhdGFDaGFubmVsIGNyZWF0ZWQgY2FuIHRyYW5zZmVyIGxhcmdlIG1lc3NhZ2Vz
LgogVEVTVF9QKFBlZXJDb25uZWN0aW9uRW5kVG9FbmRUZXN0LCBDcmVhdGVEYXRhQ2hhbm5lbExh
cmdlVHJhbnNmZXIpIHsKLSAgQ3JlYXRlUGNzKHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRW5j
b2RlckZhY3RvcnkoKSwKKyAgQ3JlYXRlUGNzKHdlYnJ0Yzo6TW9ja0F1ZGlvRW5jb2RlckZhY3Rv
cnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpLAogICAgICAgICAgICAgd2VicnRjOjpNb2NrQXVkaW9E
ZWNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCkpOwogCiAgIHdlYnJ0Yzo6RGF0YUNo
YW5uZWxJbml0IGluaXQ7CkBAIC01NzIsNyArNTczLDcgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9u
RW5kVG9FbmRUZXN0LCBDcmVhdGVEYXRhQ2hhbm5lbExhcmdlVHJhbnNmZXIpIHsKIAogLy8gVmVy
aWZpZXMgdGhhdCBEYXRhQ2hhbm5lbCBJRHMgYXJlIGV2ZW4vb2RkIGJhc2VkIG9uIHRoZSBEVExT
IHJvbGVzLgogVEVTVF9QKFBlZXJDb25uZWN0aW9uRW5kVG9FbmRUZXN0LCBEYXRhQ2hhbm5lbElk
QXNzaWdubWVudCkgewotICBDcmVhdGVQY3Mod2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9FbmNv
ZGVyRmFjdG9yeSgpLAorICBDcmVhdGVQY3Mod2VicnRjOjpNb2NrQXVkaW9FbmNvZGVyRmFjdG9y
eTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCksCiAgICAgICAgICAgICB3ZWJydGM6Ok1vY2tBdWRpb0Rl
Y29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSk7CiAKICAgd2VicnRjOjpEYXRhQ2hh
bm5lbEluaXQgaW5pdDsKQEAgLTYwMCw3ICs2MDEsNyBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25F
bmRUb0VuZFRlc3QsIERhdGFDaGFubmVsSWRBc3NpZ25tZW50KSB7CiAvLyB0aGVyZSBhcmUgbXVs
dGlwbGUgRGF0YUNoYW5uZWxzLgogVEVTVF9QKFBlZXJDb25uZWN0aW9uRW5kVG9FbmRUZXN0LAog
ICAgICAgIE1lc3NhZ2VUcmFuc2ZlckJldHdlZW5Ud29QYWlyc09mRGF0YUNoYW5uZWxzKSB7Ci0g
IENyZWF0ZVBjcyh3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCksCisg
IENyZWF0ZVBjcyh3ZWJydGM6Ok1vY2tBdWRpb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVFbXB0eUZh
Y3RvcnkoKSwKICAgICAgICAgICAgIHdlYnJ0Yzo6TW9ja0F1ZGlvRGVjb2RlckZhY3Rvcnk6OkNy
ZWF0ZUVtcHR5RmFjdG9yeSgpKTsKIAogICB3ZWJydGM6OkRhdGFDaGFubmVsSW5pdCBpbml0OwpA
QCAtNjQwLDcgKzY0MSw3IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwKIC8v
IGNoYW5uZWwsIGFuZCB0aGUgY2xvc2VkIGNoYW5uZWwgd2FzIGluY29ycmVjdGx5IHN0aWxsIGFz
c2lnbmVkIHRvIHRoZSBJRC4KIFRFU1RfUChQZWVyQ29ubmVjdGlvbkVuZFRvRW5kVGVzdCwKICAg
ICAgICBEYXRhQ2hhbm5lbEZyb21PcGVuV29ya3NBZnRlclByZXZpb3VzQ2hhbm5lbENsb3NlZCkg
ewotICBDcmVhdGVQY3Mod2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeSgp
LAorICBDcmVhdGVQY3Mod2VicnRjOjpNb2NrQXVkaW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1w
dHlGYWN0b3J5KCksCiAgICAgICAgICAgICB3ZWJydGM6Ok1vY2tBdWRpb0RlY29kZXJGYWN0b3J5
OjpDcmVhdGVFbXB0eUZhY3RvcnkoKSk7CiAKICAgd2VicnRjOjpEYXRhQ2hhbm5lbEluaXQgaW5p
dDsKQEAgLTY3Myw3ICs2NzQsNyBAQCBURVNUX1AoUGVlckNvbm5lY3Rpb25FbmRUb0VuZFRlc3Qs
CiAvLyBjbG9zaW5nIGJlZm9yZSBjcmVhdGluZyB0aGUgc2Vjb25kIG9uZS4KIFRFU1RfUChQZWVy
Q29ubmVjdGlvbkVuZFRvRW5kVGVzdCwKICAgICAgICBEYXRhQ2hhbm5lbEZyb21PcGVuV29ya3NX
aGlsZVByZXZpb3VzQ2hhbm5lbENsb3NpbmcpIHsKLSAgQ3JlYXRlUGNzKHdlYnJ0Yzo6Q3JlYXRl
QnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwKKyAgQ3JlYXRlUGNzKHdlYnJ0Yzo6TW9ja0F1
ZGlvRW5jb2RlckZhY3Rvcnk6OkNyZWF0ZUVtcHR5RmFjdG9yeSgpLAogICAgICAgICAgICAgd2Vi
cnRjOjpNb2NrQXVkaW9EZWNvZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCkpOwogCiAg
IHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbml0IGluaXQ7CkBAIC03MDQsNyArNzA1LDcgQEAgVEVTVF9Q
KFBlZXJDb25uZWN0aW9uRW5kVG9FbmRUZXN0LAogLy8gcmVmZXJlbmNlIGNvdW50KSwgbm8gbWVt
b3J5IGFjY2VzcyB2aW9sYXRpb24gd2lsbCBvY2N1ci4KIC8vIFNlZTogaHR0cHM6Ly9jb2RlLmdv
b2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU2NTA0OAogVEVTVF9QKFBlZXJD
b25uZWN0aW9uRW5kVG9FbmRUZXN0LCBDbG9zZURhdGFDaGFubmVsUmVtb3RlbHlXaGlsZU5vdFJl
ZmVyZW5jZWQpIHsKLSAgQ3JlYXRlUGNzKHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2Rl
ckZhY3RvcnkoKSwKKyAgQ3JlYXRlUGNzKHdlYnJ0Yzo6TW9ja0F1ZGlvRW5jb2RlckZhY3Rvcnk6
OkNyZWF0ZUVtcHR5RmFjdG9yeSgpLAogICAgICAgICAgICAgd2VicnRjOjpNb2NrQXVkaW9EZWNv
ZGVyRmFjdG9yeTo6Q3JlYXRlRW1wdHlGYWN0b3J5KCkpOwogCiAgIHdlYnJ0Yzo6RGF0YUNoYW5u
ZWxJbml0IGluaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MKaW5k
ZXggNTNmNGRhODUxNmU0NmM4ZjU4ODQ2M2VkOTIyMmY1NmVkYjIwMjI5NC4uNzUyNjE1MDhiMjcy
ZDJlN2U2NjJhNWY4NzNmMzVhZjhiZGU1MzhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25u
ZWN0aW9uZmFjdG9yeS5jYwpAQCAtMTUsNiArMTUsNyBAQAogCiAjaW5jbHVkZSAiYWJzbC9tZW1v
cnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL2ZlY19jb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
YXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvbWVkaWFjb25z
dHJhaW50c2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbXByb3h5LmgiCiAj
aW5jbHVkZSAiYXBpL21lZGlhc3RyZWFtdHJhY2twcm94eS5oIgpAQCAtNDYsNiArNDcsNyBAQAog
I2luY2x1ZGUgInBjL3ZpZGVvY2FwdHVyZXJ0cmFja3NvdXJjZS5oIgogI2luY2x1ZGUgInBjL3Zp
ZGVvdHJhY2suaCIKICNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXJfZXhwZXJpbWVudC5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRl
L2ZpZWxkX3RyaWFsLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCkBAIC0xODcsNyArMTg5LDkg
QEAgUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCiAgICAgICAg
ICAgc3RkOjptb3ZlKGRlcGVuZGVuY2llcy5jYWxsX2ZhY3RvcnkpLAogICAgICAgICAgIHN0ZDo6
bW92ZShkZXBlbmRlbmNpZXMuZXZlbnRfbG9nX2ZhY3RvcnkpLAogICAgICAgICAgIHN0ZDo6bW92
ZShkZXBlbmRlbmNpZXMuZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSksCi0gICAgICAgICAgc3RkOjpt
b3ZlKGRlcGVuZGVuY2llcy5uZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeSkpIHt9CisgICAgICAg
ICAgc3RkOjptb3ZlKGRlcGVuZGVuY2llcy5uZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeSkpIHsK
KyAgbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnlfID0gc3RkOjptb3ZlKGRlcGVuZGVuY2llcy5tZWRp
YV90cmFuc3BvcnRfZmFjdG9yeSk7Cit9CiAKIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6flBlZXJD
b25uZWN0aW9uRmFjdG9yeSgpIHsKICAgUlRDX0RDSEVDSyhzaWduYWxpbmdfdGhyZWFkXy0+SXND
dXJyZW50KCkpOwpAQCAtMzU2LDkgKzM2MCwxMiBAQCBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkNy
ZWF0ZVBlZXJDb25uZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3RocmVhZF8pOwogICB9CiAgIGlmICghZGVwZW5k
ZW5jaWVzLmFsbG9jYXRvcikgewotICAgIGRlcGVuZGVuY2llcy5hbGxvY2F0b3IucmVzZXQobmV3
IGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcigKLSAgICAgICAgZGVmYXVsdF9uZXR3b3JrX21h
bmFnZXJfLmdldCgpLCBkZWZhdWx0X3NvY2tldF9mYWN0b3J5Xy5nZXQoKSwKLSAgICAgICAgY29u
ZmlndXJhdGlvbi50dXJuX2N1c3RvbWl6ZXIpKTsKKyAgICBuZXR3b3JrX3RocmVhZF8tPkludm9r
ZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbdGhpcywgJmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXBlbmRlbmNpZXNdKCkg
eworICAgICAgZGVwZW5kZW5jaWVzLmFsbG9jYXRvciA9IGFic2w6Om1ha2VfdW5pcXVlPGNyaWNr
ZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4oCisgICAgICAgICAgZGVmYXVsdF9uZXR3b3JrX21hbmFn
ZXJfLmdldCgpLCBkZWZhdWx0X3NvY2tldF9mYWN0b3J5Xy5nZXQoKSwKKyAgICAgICAgICBjb25m
aWd1cmF0aW9uLnR1cm5fY3VzdG9taXplcik7CisgICAgfSk7CiAgIH0KIAogICAvLyBUT0RPKHpz
dGVpbik6IE9uY2UgY2hyb21pdW0gaW5qZWN0cyBpdHMgb3duIEFzeW5jUmVzb2x2ZXJGYWN0b3J5
LCBzZXQKQEAgLTQ0Miw3ICs0NDksMTAgQEAgcnRjOjpUaHJlYWQqIFBlZXJDb25uZWN0aW9uRmFj
dG9yeTo6bmV0d29ya190aHJlYWQoKSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxSdGNFdmVudExvZz4g
UGVlckNvbm5lY3Rpb25GYWN0b3J5OjpDcmVhdGVSdGNFdmVudExvZ193KCkgewogICBSVENfRENI
RUNLX1JVTl9PTih3b3JrZXJfdGhyZWFkXyk7Ci0gIGNvbnN0IGF1dG8gZW5jb2RpbmdfdHlwZSA9
IFJ0Y0V2ZW50TG9nOjpFbmNvZGluZ1R5cGU6OkxlZ2FjeTsKKworICBhdXRvIGVuY29kaW5nX3R5
cGUgPSBSdGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpMZWdhY3k7CisgIGlmIChmaWVsZF90cmlh
bDo6SXNFbmFibGVkKCJXZWJSVEMtUnRjRXZlbnRMb2dOZXdGb3JtYXQiKSkKKyAgICBlbmNvZGlu
Z190eXBlID0gUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TmV3Rm9ybWF0OwogICByZXR1cm4g
ZXZlbnRfbG9nX2ZhY3RvcnlfCiAgICAgICAgICAgICAgPyBldmVudF9sb2dfZmFjdG9yeV8tPkNy
ZWF0ZVJ0Y0V2ZW50TG9nKGVuY29kaW5nX3R5cGUpCiAgICAgICAgICAgICAgOiBhYnNsOjptYWtl
X3VuaXF1ZTxSdGNFdmVudExvZ051bGxJbXBsPigpOwpAQCAtNDYwLDcgKzQ3MCw4IEBAIHN0ZDo6
dW5pcXVlX3B0cjxDYWxsPiBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkNyZWF0ZUNhbGxfdygKICAg
aWYgKCFjaGFubmVsX21hbmFnZXJfLT5tZWRpYV9lbmdpbmUoKSB8fCAhY2FsbF9mYWN0b3J5Xykg
ewogICAgIHJldHVybiBudWxscHRyOwogICB9Ci0gIGNhbGxfY29uZmlnLmF1ZGlvX3N0YXRlID0g
Y2hhbm5lbF9tYW5hZ2VyXy0+bWVkaWFfZW5naW5lKCktPkdldEF1ZGlvU3RhdGUoKTsKKyAgY2Fs
bF9jb25maWcuYXVkaW9fc3RhdGUgPQorICAgICAgY2hhbm5lbF9tYW5hZ2VyXy0+bWVkaWFfZW5n
aW5lKCktPnZvaWNlKCkuR2V0QXVkaW9TdGF0ZSgpOwogICBjYWxsX2NvbmZpZy5iaXRyYXRlX2Nv
bmZpZy5taW5fYml0cmF0ZV9icHMgPSBrTWluQmFuZHdpZHRoQnBzOwogICBjYWxsX2NvbmZpZy5i
aXRyYXRlX2NvbmZpZy5zdGFydF9iaXRyYXRlX2JwcyA9IGtTdGFydEJhbmR3aWR0aEJwczsKICAg
Y2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcubWF4X2JpdHJhdGVfYnBzID0ga01heEJhbmR3aWR0
aEJwczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmgKaW5kZXggZjM2YTRl
MGMwNDRiYzQ0NWJiNjhlY2M5ODg0Nzc0OTFmMzcwNTJiMS4uMWMxZWE5NGZlMjhhNzNhYWNjYjYy
NDcxZWFlNzliYzBkNTQzN2I2OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0
b3J5LmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3Ry
aW5nPgogCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJhcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5l
Y3Rpb25pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtZWRpYS9zY3RwL3NjdHB0cmFuc3BvcnRpbnRl
cm5hbC5oIgpAQCAtOTYsNiArOTcsMTAgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5IDog
cHVibGljIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSB7CiAgIHZpcnR1YWwgcnRjOjpU
aHJlYWQqIG5ldHdvcmtfdGhyZWFkKCk7CiAgIGNvbnN0IE9wdGlvbnMmIG9wdGlvbnMoKSBjb25z
dCB7IHJldHVybiBvcHRpb25zXzsgfQogCisgIE1lZGlhVHJhbnNwb3J0RmFjdG9yeSogbWVkaWFf
dHJhbnNwb3J0X2ZhY3RvcnkoKSB7CisgICAgcmV0dXJuIG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
Xy5nZXQoKTsKKyAgfQorCiAgcHJvdGVjdGVkOgogICBQZWVyQ29ubmVjdGlvbkZhY3RvcnkoCiAg
ICAgICBydGM6OlRocmVhZCogbmV0d29ya190aHJlYWQsCkBAIC0xNDgsNiArMTUzLDcgQEAgY2xh
c3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5IDogcHVibGljIFBlZXJDb25uZWN0aW9uRmFjdG9yeUlu
dGVyZmFjZSB7CiAgICAgICBpbmplY3RlZF9uZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV87CiAg
IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+CiAgICAg
ICBiYnJfbmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnlfOworICBzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFUcmFuc3BvcnRGYWN0b3J5PiBtZWRpYV90cmFuc3BvcnRfZmFjdG9yeV87CiB9OwogCiB9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnlfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlv
bmZhY3RvcnlfdW5pdHRlc3QuY2MKaW5kZXggODRjODI4ZjA5NjEwNDJhNWQ1MWNiY2YxMmY2MDgx
Yjc2NDYyZTkzYS4uMjQ0NDE0MzJkN2EzOGI4ODQwOTcxMzQwNmFhMzlmYTEzYTU1MjBhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVl
cmNvbm5lY3Rpb25mYWN0b3J5X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeV91bml0dGVzdC5j
YwpAQCAtMTUsNiArMTUsNyBAQAogCiAjaW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGlu
X2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVp
bHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvY3JlYXRlX3BlZXJj
b25uZWN0aW9uX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0
b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJf
ZmFjdG9yeS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2VfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmludGVy
ZmFjZV91bml0dGVzdC5jYwppbmRleCA3MTlmZGJkZDdmNDFjYzgwZDhiYjNiODA4MjE5ZDY5ZDNh
MGE1NTM2Li5kZDVkMGQxNmE5MTk4NmIwZWM0NWYyNGI3ZGYwMzBlMTFlYTQwYjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29u
bmVjdGlvbmludGVyZmFjZV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmludGVyZmFjZV91bml0dGVzdC5j
YwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2lu
Y2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCIK
ICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5
LmgiCisjaW5jbHVkZSAiYXBpL2NyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiYXBpL2pzZXBzZXNzaW9uZGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJhcGkvbWVkaWFz
dHJlYW1pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJhcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2Uu
aCIKQEAgLTEzOTcsNiArMTM5OCw4IEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVyZmFjZVRl
c3QsCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gcGMoCiAg
ICAgICBwY19mYWN0b3J5LT5DcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWcsIHN0ZDo6bW92ZShw
b3J0X2FsbG9jYXRvciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLCAmb2JzZXJ2ZXJfKSk7CisgIEVYUEVDVF9UUlVFKHBjLmdldCgpKTsKKyAgb2JzZXJ2
ZXJfLlNldFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlKHBjLmdldCgpKTsKIAogICAvLyBOb3cgdmFs
aWRhdGUgdGhhdCB0aGUgY29uZmlnIGZpZWxkcyBzZXQgYWJvdmUgd2VyZSBhcHBsaWVkIHRvIHRo
ZQogICAvLyBQb3J0QWxsb2NhdG9yLCBhcyBmbGFncyBvciBvdGhlcndpc2UuCkBAIC0xNDI0LDE1
ICsxNDI3LDIyIEBAIFRFU1RfUChQZWVyQ29ubmVjdGlvbkludGVyZmFjZVRlc3QsIEdldENvbmZp
Z3VyYXRpb25BZnRlckNyZWF0ZVBlZXJDb25uZWN0aW9uKSB7CiAvLyBDaGVjayB0aGF0IEdldENv
bmZpZ3VyYXRpb24gcmV0dXJucyB0aGUgbGFzdCBjb25maWd1cmF0aW9uIHBhc3NlZCBpbnRvCiAv
LyBTZXRDb25maWd1cmF0aW9uLgogVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlVGVzdCwg
R2V0Q29uZmlndXJhdGlvbkFmdGVyU2V0Q29uZmlndXJhdGlvbikgewotICBDcmVhdGVQZWVyQ29u
bmVjdGlvbigpOworICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBz
dGFydGluZ19jb25maWc7CisgIHN0YXJ0aW5nX2NvbmZpZy5idW5kbGVfcG9saWN5ID0KKyAgICAg
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb246OmtCdW5kbGVQb2xpY3lNYXhCdW5kbGU7CisgIENyZWF0
ZVBlZXJDb25uZWN0aW9uKHN0YXJ0aW5nX2NvbmZpZyk7CiAKICAgUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnID0gcGNfLT5HZXRDb25maWd1cmF0aW9uKCk7
CiAgIGNvbmZpZy50eXBlID0gUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OmtSZWxheTsKKyAgY29u
ZmlnLnVzZV9tZWRpYV90cmFuc3BvcnQgPSB0cnVlOworICBjb25maWcudXNlX21lZGlhX3RyYW5z
cG9ydF9mb3JfZGF0YV9jaGFubmVscyA9IHRydWU7CiAgIEVYUEVDVF9UUlVFKHBjXy0+U2V0Q29u
ZmlndXJhdGlvbihjb25maWcpKTsKIAogICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29u
ZmlndXJhdGlvbiByZXR1cm5lZF9jb25maWcgPQogICAgICAgcGNfLT5HZXRDb25maWd1cmF0aW9u
KCk7CiAgIEVYUEVDVF9FUShQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a1JlbGF5LCByZXR1cm5l
ZF9jb25maWcudHlwZSk7CisgIEVYUEVDVF9UUlVFKHJldHVybmVkX2NvbmZpZy51c2VfbWVkaWFf
dHJhbnNwb3J0KTsKKyAgRVhQRUNUX1RSVUUocmV0dXJuZWRfY29uZmlnLnVzZV9tZWRpYV90cmFu
c3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMpOwogfQogCiBURVNUX1AoUGVlckNvbm5lY3Rpb25JbnRl
cmZhY2VUZXN0LCBTZXRDb25maWd1cmF0aW9uRmFpbHNBZnRlckNsb3NlKSB7CkBAIC0zOTM4LDYg
KzM5NDgsMjEgQEAgVEVTVF9QKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlVGVzdCwKICAgRVhQRUNU
X0ZBTFNFKERvU2V0TG9jYWxEZXNjcmlwdGlvbihzdGQ6Om1vdmUob2ZmZXIpKSk7CiB9CiAKK1RF
U1RfUChQZWVyQ29ubmVjdGlvbkludGVyZmFjZVRlc3QsIEV4dG1hcEFsbG93TWl4ZWRJc0NvbmZp
Z3VyYWJsZSkgeworICBSVENDb25maWd1cmF0aW9uIGNvbmZpZzsKKyAgLy8gRGVmYXVsdCBiZWhh
dmlvciBpcyBmYWxzZS4KKyAgQ3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlnKTsKKyAgc3RkOjp1
bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZT4gb2ZmZXI7CisgIEFTU0VSVF9U
UlVFKERvQ3JlYXRlT2ZmZXIoJm9mZmVyLCBudWxscHRyKSk7CisgIEVYUEVDVF9GQUxTRShvZmZl
ci0+ZGVzY3JpcHRpb24oKS0+ZXh0bWFwX2FsbG93X21peGVkKCkpOworICAvLyBQb3NzaWJsZSB0
byBzZXQgdG8gdHJ1ZS4KKyAgY29uZmlnLm9mZmVyX2V4dG1hcF9hbGxvd19taXhlZCA9IHRydWU7
CisgIENyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZyk7CisgIG9mZmVyLnJlbGVhc2UoKTsKKyAg
QVNTRVJUX1RSVUUoRG9DcmVhdGVPZmZlcigmb2ZmZXIsIG51bGxwdHIpKTsKKyAgRVhQRUNUX1RS
VUUob2ZmZXItPmRlc2NyaXB0aW9uKCktPmV4dG1hcF9hbGxvd19taXhlZCgpKTsKK30KKwogSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2VUZXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2VUZXN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWVzKFNkcFNlbWFudGljczo6a1BsYW5CLApAQCAtMzk1NCw2ICsz
OTc5LDcgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25NZWRpYUNvbmZpZ1Rlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlPiBwYygKICAgICAgICAgcGNmXy0+Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlnLCBudWxs
cHRyLCBudWxscHRyLCAmb2JzZXJ2ZXJfKSk7CiAgICAgRVhQRUNUX1RSVUUocGMuZ2V0KCkpOwor
ICAgIG9ic2VydmVyXy5TZXRQZWVyQ29ubmVjdGlvbkludGVyZmFjZShwYy5nZXQoKSk7CiAgICAg
cmV0dXJuIHBjLT5HZXRDb25maWd1cmF0aW9uKCkubWVkaWFfY29uZmlnOwogICB9CiAKQEAgLTM5
NjEsNiArMzk4NywxNyBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbk1lZGlhQ29uZmlnVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgTW9ja1BlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgb2JzZXJ2
ZXJfOwogfTsKIAorLy8gVGhpcyBzYW5pdHkgY2hlY2sgdmFsaWRhdGVzIHRoZSB0ZXN0IGluZnJh
c3RydWN0dXJlIGl0c2VsZi4KK1RFU1RfRihQZWVyQ29ubmVjdGlvbk1lZGlhQ29uZmlnVGVzdCwg
VGVzdENyZWF0ZUFuZENsb3NlKSB7CisgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25m
aWd1cmF0aW9uIGNvbmZpZzsKKyAgcnRjOjpzY29wZWRfcmVmcHRyPFBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlPiBwYygKKyAgICAgIHBjZl8tPkNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZywgbnVs
bHB0ciwgbnVsbHB0ciwgJm9ic2VydmVyXykpOworICBFWFBFQ1RfVFJVRShwYy5nZXQoKSk7Cisg
IG9ic2VydmVyXy5TZXRQZWVyQ29ubmVjdGlvbkludGVyZmFjZShwYy5nZXQoKSk7ICAvLyBSZXF1
aXJlZC4KKyAgcGMtPkNsb3NlKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIE5vIGFib3J0IC0+IG9rLgorICBTVUNDRUVEKCk7Cit9CisKIC8vIFRoaXMgdGVzdCB2ZXJp
ZmllcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgd2l0aCBubyBjb25zdHJhaW50cyBhbmQgYQogLy8g
ZGVmYXVsdCBSVENDb25maWd1cmF0aW9uLgogVEVTVF9GKFBlZXJDb25uZWN0aW9uTWVkaWFDb25m
aWdUZXN0LCBUZXN0RGVmYXVsdHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3BtdXhmaWx0ZXJfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNwbXV4ZmlsdGVyX3Vu
aXR0ZXN0LmNjCmluZGV4IDU1NWFiNWM0NjgxMDU0YzQwYTcxZTFkY2U2YzM0YWE5NzBjZTEyNGEu
LmE2YWM0NDc4ZmNkNWFlNzViYTU3MTZjMDM2ZjkwMDAzZmUwOGFhMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3BtdXhmaWx0ZXJf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvcnRjcG11eGZpbHRlcl91bml0dGVzdC5jYwpAQCAtOSw3ICs5LDYgQEAKICAqLwogCiAj
aW5jbHVkZSAicGMvcnRjcG11eGZpbHRlci5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvdGVzdHV0
aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKIAogVEVTVChSdGNwTXV4RmlsdGVy
VGVzdCwgSXNBY3RpdmVTZW5kZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3N0YXRzX2ludGVncmF0aW9udGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3N0YXRzX2ludGVn
cmF0aW9udGVzdC5jYwppbmRleCAzYzA3ZTM4YjVhNDk1YWE5M2U3ZGI5ZmZkMWVmMmY1NTk0MDgz
YmE4Li40OTA4NGRlNGQyMDcxN2MyMmRkYzg5MWI3ZWE0NjMyMDRjYjYzYjRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNzdGF0c19p
bnRlZ3JhdGlvbnRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcnRjc3RhdHNfaW50ZWdyYXRpb250ZXN0LmNjCkBAIC02MDQsMTEgKzYwNCwx
OCBAQCBjbGFzcyBSVENTdGF0c1JlcG9ydFZlcmlmaWVyIHsKICAgICAgICAgICBtZWRpYV9zdHJl
YW1fdHJhY2suY29uY2VhbGVkX3NhbXBsZXMpOwogICAgICAgdmVyaWZpZXIuVGVzdE1lbWJlcklz
Tm9uTmVnYXRpdmU8dWludDY0X3Q+KAogICAgICAgICAgIG1lZGlhX3N0cmVhbV90cmFjay5jb25j
ZWFsbWVudF9ldmVudHMpOworICAgICAgdmVyaWZpZXIuVGVzdE1lbWJlcklzTm9uTmVnYXRpdmU8
dWludDY0X3Q+KAorICAgICAgICAgIG1lZGlhX3N0cmVhbV90cmFjay5qaXR0ZXJfYnVmZmVyX2Zs
dXNoZXMpOworICAgICAgdmVyaWZpZXIuVGVzdE1lbWJlcklzTm9uTmVnYXRpdmU8dWludDY0X3Q+
KAorICAgICAgICAgIG1lZGlhX3N0cmVhbV90cmFjay5kZWxheWVkX3BhY2tldF9vdXRhZ2Vfc2Ft
cGxlcyk7CiAgICAgfSBlbHNlIHsKICAgICAgIHZlcmlmaWVyLlRlc3RNZW1iZXJJc1VuZGVmaW5l
ZChtZWRpYV9zdHJlYW1fdHJhY2suaml0dGVyX2J1ZmZlcl9kZWxheSk7CiAgICAgICB2ZXJpZmll
ci5UZXN0TWVtYmVySXNVbmRlZmluZWQobWVkaWFfc3RyZWFtX3RyYWNrLnRvdGFsX3NhbXBsZXNf
cmVjZWl2ZWQpOwogICAgICAgdmVyaWZpZXIuVGVzdE1lbWJlcklzVW5kZWZpbmVkKG1lZGlhX3N0
cmVhbV90cmFjay5jb25jZWFsZWRfc2FtcGxlcyk7CiAgICAgICB2ZXJpZmllci5UZXN0TWVtYmVy
SXNVbmRlZmluZWQobWVkaWFfc3RyZWFtX3RyYWNrLmNvbmNlYWxtZW50X2V2ZW50cyk7CisgICAg
ICB2ZXJpZmllci5UZXN0TWVtYmVySXNVbmRlZmluZWQobWVkaWFfc3RyZWFtX3RyYWNrLmppdHRl
cl9idWZmZXJfZmx1c2hlcyk7CisgICAgICB2ZXJpZmllci5UZXN0TWVtYmVySXNVbmRlZmluZWQo
CisgICAgICAgICAgbWVkaWFfc3RyZWFtX3RyYWNrLmRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1w
bGVzKTsKICAgICB9CiAgICAgcmV0dXJuIHZlcmlmaWVyLkV4cGVjdEFsbE1lbWJlcnNTdWNjZXNz
ZnVsbHlUZXN0ZWQoKTsKICAgfQpAQCAtODA2LDcgKzgxMywxMSBAQCBURVNUX0YoUlRDU3RhdHNJ
bnRlZ3JhdGlvblRlc3QsIEdldFN0YXRzV2l0aEludmFsaWRSZWNlaXZlclNlbGVjdG9yKSB7CiAg
IEVYUEVDVF9GQUxTRShyZXBvcnQtPnNpemUoKSk7CiB9CiAKLVRFU1RfRihSVENTdGF0c0ludGVn
cmF0aW9uVGVzdCwgR2V0c1N0YXRzV2hpbGVEZXN0cm95aW5nUGVlckNvbm5lY3Rpb25zKSB7Cisv
LyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy8xMDA0MSkgRm9yIG5vdyB0aGlzIGlzIGVxdWl2YWxlbnQg
dG8gdGhlIGZvbGxvd2luZworLy8gdGVzdCBHZXRzU3RhdHNXaGlsZUNsb3NpbmdQZWVyQ29ubmVj
dGlvbiwgYmVjYXVzZSBwYygpIGlzIGNsb3NlZCBieQorLy8gUGVlckNvbm5lY3Rpb25UZXN0V3Jh
cHBlci4gU2VlOiBidWdzLndlYnJ0Yy5vcmcvOTg0NworVEVTVF9GKFJUQ1N0YXRzSW50ZWdyYXRp
b25UZXN0LAorICAgICAgIERJU0FCTEVEX0dldFN0YXRzV2hpbGVEZXN0cm95aW5nUGVlckNvbm5l
Y3Rpb24pIHsKICAgU3RhcnRDYWxsKCk7CiAKICAgcnRjOjpzY29wZWRfcmVmcHRyPFJUQ1N0YXRz
T2J0YWluZXI+IHN0YXRzX29idGFpbmVyID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3N0YXRzY29sbGVjdG9yLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjc3RhdHNjb2xsZWN0b3Iu
Y2MKaW5kZXggZDg4Mzk0MzBlYmVmODQyM2UyZjk4ZjU4MzQ0M2MxZTQ1YmNmOTJkNy4uZDQ4ZWNj
MDFmMzU5ZTUxYjkwMDI1OTgyOGMwODVjOGI1ZTE2MTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjc3RhdHNjb2xsZWN0b3IuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRjc3Rh
dHNjb2xsZWN0b3IuY2MKQEAgLTQ1NCw2ICs0NTQsMTAgQEAgUHJvZHVjZU1lZGlhU3RyZWFtVHJh
Y2tTdGF0c0Zyb21Wb2ljZVJlY2VpdmVySW5mbygKICAgYXVkaW9fdHJhY2tfc3RhdHMtPmNvbmNl
YWxlZF9zYW1wbGVzID0gdm9pY2VfcmVjZWl2ZXJfaW5mby5jb25jZWFsZWRfc2FtcGxlczsKICAg
YXVkaW9fdHJhY2tfc3RhdHMtPmNvbmNlYWxtZW50X2V2ZW50cyA9CiAgICAgICB2b2ljZV9yZWNl
aXZlcl9pbmZvLmNvbmNlYWxtZW50X2V2ZW50czsKKyAgYXVkaW9fdHJhY2tfc3RhdHMtPmppdHRl
cl9idWZmZXJfZmx1c2hlcyA9CisgICAgICB2b2ljZV9yZWNlaXZlcl9pbmZvLmppdHRlcl9idWZm
ZXJfZmx1c2hlczsKKyAgYXVkaW9fdHJhY2tfc3RhdHMtPmRlbGF5ZWRfcGFja2V0X291dGFnZV9z
YW1wbGVzID0KKyAgICAgIHZvaWNlX3JlY2VpdmVyX2luZm8uZGVsYXllZF9wYWNrZXRfb3V0YWdl
X3NhbXBsZXM7CiAgIHJldHVybiBhdWRpb190cmFja19zdGF0czsKIH0KIApAQCAtMTM4OCw3ICsx
MzkyLDcgQEAgUlRDU3RhdHNDb2xsZWN0b3I6OlByZXBhcmVUcmFuc3BvcnRDZXJ0aWZpY2F0ZVN0
YXRzX24oCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+IGxvY2Fs
X2NlcnRpZmljYXRlOwogICAgIGlmIChwY18tPkdldExvY2FsQ2VydGlmaWNhdGUodHJhbnNwb3J0
X25hbWUsICZsb2NhbF9jZXJ0aWZpY2F0ZSkpIHsKICAgICAgIGNlcnRpZmljYXRlX3N0YXRzX3Bh
aXIubG9jYWwgPQotICAgICAgICAgIGxvY2FsX2NlcnRpZmljYXRlLT5zc2xfY2VydF9jaGFpbigp
LkdldFN0YXRzKCk7CisgICAgICAgICAgbG9jYWxfY2VydGlmaWNhdGUtPkdldFNTTENlcnRpZmlj
YXRlQ2hhaW4oKS5HZXRTdGF0cygpOwogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6
OlNTTENlcnRDaGFpbj4gcmVtb3RlX2NlcnRfY2hhaW4gPQpAQCAtMTQyNiw3ICsxNDMwLDcgQEAg
UlRDU3RhdHNDb2xsZWN0b3I6OlByZXBhcmVUcmFuc2NlaXZlclN0YXRzSW5mb3NfcygpIGNvbnN0
IHsKICAgICBzdGF0cy50cmFuc2NlaXZlciA9IHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpOwogICAg
IHN0YXRzLm1lZGlhX3R5cGUgPSBtZWRpYV90eXBlOwogCi0gICAgY3JpY2tldDo6QmFzZUNoYW5u
ZWwqIGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+Y2hhbm5lbCgpOworICAgIGNy
aWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwgPSB0cmFuc2NlaXZlci0+aW50ZXJuYWwo
KS0+Y2hhbm5lbCgpOwogICAgIGlmICghY2hhbm5lbCkgewogICAgICAgLy8gVGhlIHJlbWFpbmlu
ZyBmaWVsZHMgcmVxdWlyZSBhIEJhc2VDaGFubmVsLgogICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydGNzdGF0
c2NvbGxlY3Rvcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3J0Y3N0YXRzY29sbGVjdG9yX3VuaXR0ZXN0LmNjCmluZGV4IDc0MDRkNDky
ZWYzN2RkMWFhZGNiN2Y0MjNiZDdiODg2ZDY1YWRjYjMuLmFkY2E5ZWY2YzQ2NTdlY2RkY2Y0ZjU4
ZDcxZTM1ZDA2MGM2Mzk1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3N0YXRzY29sbGVjdG9yX3VuaXR0ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0Y3N0YXRzY29sbGVj
dG9yX3VuaXR0ZXN0LmNjCkBAIC0xNDMsMTAgKzE0MywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q2Vy
dGlmaWNhdGVJbmZvPiBDcmVhdGVGYWtlQ2VydGlmaWNhdGVBbmRJbmZvRnJvbURlcnMoCiAgIH0K
ICAgLy8gRmluZ2VycHJpbnRzIGZvciB0aGUgd2hvbGUgY2VydGlmaWNhdGUgY2hhaW4sIHN0YXJ0
aW5nIHdpdGggbGVhZgogICAvLyBjZXJ0aWZpY2F0ZS4KLSAgY29uc3QgcnRjOjpTU0xDZXJ0Q2hh
aW4mIGNoYWluID0gaW5mby0+Y2VydGlmaWNhdGUtPnNzbF9jZXJ0X2NoYWluKCk7CisgIGNvbnN0
IHJ0Yzo6U1NMQ2VydENoYWluJiBjaGFpbiA9IGluZm8tPmNlcnRpZmljYXRlLT5HZXRTU0xDZXJ0
aWZpY2F0ZUNoYWluKCk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTEZpbmdlcnByaW50PiBm
cDsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGFpbi5HZXRTaXplKCk7IGkrKykgewotICAg
IGZwLnJlc2V0KHJ0Yzo6U1NMRmluZ2VycHJpbnQ6OkNyZWF0ZSgic2hhLTEiLCAmY2hhaW4uR2V0
KGkpKSk7CisgICAgZnAgPSBydGM6OlNTTEZpbmdlcnByaW50OjpDcmVhdGUoInNoYS0xIiwgY2hh
aW4uR2V0KGkpKTsKICAgICBFWFBFQ1RfVFJVRShmcCk7CiAgICAgaW5mby0+ZmluZ2VycHJpbnRz
LnB1c2hfYmFjayhmcC0+R2V0UmZjNDU3MkZpbmdlcnByaW50KCkpOwogICB9CkBAIC03MDQsNyAr
NzA0LDcgQEAgVEVTVF9GKFJUQ1N0YXRzQ29sbGVjdG9yVGVzdCwgQ29sbGVjdFJUQ0NlcnRpZmlj
YXRlU3RhdHNTaW5nbGUpIHsKICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oeyIo
cmVtb3RlKSBzaW5nbGUgY2VydGlmaWNhdGUifSkpOwogICBwY18tPlNldFJlbW90ZUNlcnRDaGFp
bigKICAgICAgIGtUcmFuc3BvcnROYW1lLAotICAgICAgcmVtb3RlX2NlcnRpbmZvLT5jZXJ0aWZp
Y2F0ZS0+c3NsX2NlcnRfY2hhaW4oKS5VbmlxdWVDb3B5KCkpOworICAgICAgcmVtb3RlX2NlcnRp
bmZvLT5jZXJ0aWZpY2F0ZS0+R2V0U1NMQ2VydGlmaWNhdGVDaGFpbigpLkNsb25lKCkpOwogCiAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCBSVENTdGF0c1JlcG9ydD4gcmVwb3J0ID0gc3RhdHNf
LT5HZXRTdGF0c1JlcG9ydCgpOwogCkBAIC04MTgsNyArODE4LDcgQEAgVEVTVF9GKFJUQ1N0YXRz
Q29sbGVjdG9yVGVzdCwgQ29sbGVjdFJUQ0NlcnRpZmljYXRlU3RhdHNNdWx0aXBsZSkgewogICAg
ICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPih7IihyZW1vdGUpIGF1ZGlvIn0pKTsKICAg
cGNfLT5TZXRSZW1vdGVDZXJ0Q2hhaW4oCiAgICAgICBrQXVkaW9UcmFuc3BvcnQsCi0gICAgICBh
dWRpb19yZW1vdGVfY2VydGluZm8tPmNlcnRpZmljYXRlLT5zc2xfY2VydF9jaGFpbigpLlVuaXF1
ZUNvcHkoKSk7CisgICAgICBhdWRpb19yZW1vdGVfY2VydGluZm8tPmNlcnRpZmljYXRlLT5HZXRT
U0xDZXJ0aWZpY2F0ZUNoYWluKCkuQ2xvbmUoKSk7CiAKICAgcGNfLT5BZGRWaWRlb0NoYW5uZWwo
InZpZGVvIiwga1ZpZGVvVHJhbnNwb3J0KTsKICAgc3RkOjp1bmlxdWVfcHRyPENlcnRpZmljYXRl
SW5mbz4gdmlkZW9fbG9jYWxfY2VydGluZm8gPQpAQCAtODMwLDcgKzgzMCw3IEBAIFRFU1RfRihS
VENTdGF0c0NvbGxlY3RvclRlc3QsIENvbGxlY3RSVENDZXJ0aWZpY2F0ZVN0YXRzTXVsdGlwbGUp
IHsKICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oeyIocmVtb3RlKSB2aWRlbyJ9
KSk7CiAgIHBjXy0+U2V0UmVtb3RlQ2VydENoYWluKAogICAgICAga1ZpZGVvVHJhbnNwb3J0LAot
ICAgICAgdmlkZW9fcmVtb3RlX2NlcnRpbmZvLT5jZXJ0aWZpY2F0ZS0+c3NsX2NlcnRfY2hhaW4o
KS5VbmlxdWVDb3B5KCkpOworICAgICAgdmlkZW9fcmVtb3RlX2NlcnRpbmZvLT5jZXJ0aWZpY2F0
ZS0+R2V0U1NMQ2VydGlmaWNhdGVDaGFpbigpLkNsb25lKCkpOwogCiAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxjb25zdCBSVENTdGF0c1JlcG9ydD4gcmVwb3J0ID0gc3RhdHNfLT5HZXRTdGF0c1JlcG9y
dCgpOwogICBFeHBlY3RSZXBvcnRDb250YWluc0NlcnRpZmljYXRlSW5mbyhyZXBvcnQsICphdWRp
b19sb2NhbF9jZXJ0aW5mbyk7CkBAIC04NTUsNyArODU1LDcgQEAgVEVTVF9GKFJUQ1N0YXRzQ29s
bGVjdG9yVGVzdCwgQ29sbGVjdFJUQ0NlcnRpZmljYXRlU3RhdHNDaGFpbikgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKHJlbW90ZSkgY2hhaW4ifSk7CiAg
IHBjXy0+U2V0UmVtb3RlQ2VydENoYWluKAogICAgICAga1RyYW5zcG9ydE5hbWUsCi0gICAgICBy
ZW1vdGVfY2VydGluZm8tPmNlcnRpZmljYXRlLT5zc2xfY2VydF9jaGFpbigpLlVuaXF1ZUNvcHko
KSk7CisgICAgICByZW1vdGVfY2VydGluZm8tPmNlcnRpZmljYXRlLT5HZXRTU0xDZXJ0aWZpY2F0
ZUNoYWluKCkuQ2xvbmUoKSk7CiAKICAgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0IFJUQ1N0YXRz
UmVwb3J0PiByZXBvcnQgPSBzdGF0c18tPkdldFN0YXRzUmVwb3J0KCk7CiAgIEV4cGVjdFJlcG9y
dENvbnRhaW5zQ2VydGlmaWNhdGVJbmZvKHJlcG9ydCwgKmxvY2FsX2NlcnRpbmZvKTsKQEAgLTE0
MjYsNiArMTQyNiw4IEBAIFRFU1RfRihSVENTdGF0c0NvbGxlY3RvclRlc3QsCiAgIHZvaWNlX3Jl
Y2VpdmVyX2luZm8uY29uY2VhbGVkX3NhbXBsZXMgPSAxMjM7CiAgIHZvaWNlX3JlY2VpdmVyX2lu
Zm8uY29uY2VhbG1lbnRfZXZlbnRzID0gMTI7CiAgIHZvaWNlX3JlY2VpdmVyX2luZm8uaml0dGVy
X2J1ZmZlcl9kZWxheV9zZWNvbmRzID0gMzQ1NjsKKyAgdm9pY2VfcmVjZWl2ZXJfaW5mby5qaXR0
ZXJfYnVmZmVyX2ZsdXNoZXMgPSA3OworICB2b2ljZV9yZWNlaXZlcl9pbmZvLmRlbGF5ZWRfcGFj
a2V0X291dGFnZV9zYW1wbGVzID0gMTU7CiAKICAgc3RhdHNfLT5DcmVhdGVNb2NrUnRwU2VuZGVy
c1JlY2VpdmVyc0FuZENoYW5uZWxzKAogICAgICAge30sIHtzdGQ6Om1ha2VfcGFpcihyZW1vdGVf
YXVkaW9fdHJhY2suZ2V0KCksIHZvaWNlX3JlY2VpdmVyX2luZm8pfSwge30sCkBAIC0xNDU5LDYg
KzE0NjEsOCBAQCBURVNUX0YoUlRDU3RhdHNDb2xsZWN0b3JUZXN0LAogICBleHBlY3RlZF9yZW1v
dGVfYXVkaW9fdHJhY2suY29uY2VhbGVkX3NhbXBsZXMgPSAxMjM7CiAgIGV4cGVjdGVkX3JlbW90
ZV9hdWRpb190cmFjay5jb25jZWFsbWVudF9ldmVudHMgPSAxMjsKICAgZXhwZWN0ZWRfcmVtb3Rl
X2F1ZGlvX3RyYWNrLmppdHRlcl9idWZmZXJfZGVsYXkgPSAzNDU2OworICBleHBlY3RlZF9yZW1v
dGVfYXVkaW9fdHJhY2suaml0dGVyX2J1ZmZlcl9mbHVzaGVzID0gNzsKKyAgZXhwZWN0ZWRfcmVt
b3RlX2F1ZGlvX3RyYWNrLmRlbGF5ZWRfcGFja2V0X291dGFnZV9zYW1wbGVzID0gMTU7CiAgIEFT
U0VSVF9UUlVFKHJlcG9ydC0+R2V0KGV4cGVjdGVkX3JlbW90ZV9hdWRpb190cmFjay5pZCgpKSk7
CiAgIEVYUEVDVF9FUShleHBlY3RlZF9yZW1vdGVfYXVkaW9fdHJhY2ssCiAgICAgICAgICAgICBy
ZXBvcnQtPkdldChleHBlY3RlZF9yZW1vdGVfYXVkaW9fdHJhY2suaWQoKSkKQEAgLTE5NTcsNyAr
MTk2MSw3IEBAIFRFU1RfRihSVENTdGF0c0NvbGxlY3RvclRlc3QsIENvbGxlY3RSVENUcmFuc3Bv
cnRTdGF0cykgewogICAgICAgICAgIHsiKHJlbW90ZSkgbG9jYWwiLCAiKHJlbW90ZSkgY2hhaW4i
fSk7CiAgIHBjXy0+U2V0UmVtb3RlQ2VydENoYWluKAogICAgICAga1RyYW5zcG9ydE5hbWUsCi0g
ICAgICByZW1vdGVfY2VydGluZm8tPmNlcnRpZmljYXRlLT5zc2xfY2VydF9jaGFpbigpLlVuaXF1
ZUNvcHkoKSk7CisgICAgICByZW1vdGVfY2VydGluZm8tPmNlcnRpZmljYXRlLT5HZXRTU0xDZXJ0
aWZpY2F0ZUNoYWluKCkuQ2xvbmUoKSk7CiAKICAgcmVwb3J0ID0gc3RhdHNfLT5HZXRGcmVzaFN0
YXRzUmVwb3J0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb24u
Y2MKaW5kZXggZTUxOWI5YjA2ZGU2YzMzYTAyNmQ0OTU5ZTliNzNjZTZkNGUyZDc5MC4uODY1Njg1
ZDczYzQzMjRmYjhmMmY2MWZlYTA2ODQ3ZGI5YzY1NjMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNp
b24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cnRwcGFyYW1ldGVyc2NvbnZlcnNpb24uY2MKQEAgLTM5Niw2ICszOTYsNyBAQCBSdHBDYXBhYmls
aXRpZXMgVG9SdHBDYXBhYmlsaXRpZXMoCiAgIGJvb2wgaGF2ZV9yZWQgPSBmYWxzZTsKICAgYm9v
bCBoYXZlX3VscGZlYyA9IGZhbHNlOwogICBib29sIGhhdmVfZmxleGZlYyA9IGZhbHNlOworICBi
b29sIGhhdmVfcnR4ID0gZmFsc2U7CiAgIGZvciAoY29uc3QgQyYgY3JpY2tldF9jb2RlYyA6IGNy
aWNrZXRfY29kZWNzKSB7CiAgICAgaWYgKGNyaWNrZXRfY29kZWMubmFtZSA9PSBjcmlja2V0Ojpr
UmVkQ29kZWNOYW1lKSB7CiAgICAgICBoYXZlX3JlZCA9IHRydWU7CkBAIC00MDMsOCArNDA0LDE5
IEBAIFJ0cENhcGFiaWxpdGllcyBUb1J0cENhcGFiaWxpdGllcygKICAgICAgIGhhdmVfdWxwZmVj
ID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKGNyaWNrZXRfY29kZWMubmFtZSA9PSBjcmlja2V0Ojpr
RmxleGZlY0NvZGVjTmFtZSkgewogICAgICAgaGF2ZV9mbGV4ZmVjID0gdHJ1ZTsKKyAgICB9IGVs
c2UgaWYgKGNyaWNrZXRfY29kZWMubmFtZSA9PSBjcmlja2V0OjprUnR4Q29kZWNOYW1lKSB7Cisg
ICAgICBpZiAoaGF2ZV9ydHgpIHsKKyAgICAgICAgLy8gVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25l
IFJUWCBjb2RlYyBlbnRyeQorICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGhhdmVf
cnR4ID0gdHJ1ZTsKKyAgICB9CisgICAgYXV0byBjb2RlY19jYXBhYmlsaXR5ID0gVG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY3JpY2tldF9jb2RlYyk7CisgICAgaWYgKGNyaWNrZXRfY29kZWMubmFtZSA9
PSBjcmlja2V0OjprUnR4Q29kZWNOYW1lKSB7CisgICAgICAvLyBSVFggY29kZWMgc2hvdWxkIG5v
dCBoYXZlIGFueSBwYXJhbWV0ZXIKKyAgICAgIGNvZGVjX2NhcGFiaWxpdHkucGFyYW1ldGVycy5j
bGVhcigpOwogICAgIH0KLSAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnB1c2hfYmFjayhUb1J0cENv
ZGVjQ2FwYWJpbGl0eShjcmlja2V0X2NvZGVjKSk7CisgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy5w
dXNoX2JhY2soY29kZWNfY2FwYWJpbGl0eSk7CiAgIH0KICAgZm9yIChjb25zdCBSdHBFeHRlbnNp
b24mIGNyaWNrZXRfZXh0ZW5zaW9uIDogY3JpY2tldF9leHRlbnNpb25zKSB7CiAgICAgY2FwYWJp
bGl0aWVzLmhlYWRlcl9leHRlbnNpb25zLmVtcGxhY2VfYmFjayhjcmlja2V0X2V4dGVuc2lvbi51
cmksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uX3Vu
aXR0ZXN0LmNjCmluZGV4IDI1N2QyNmViYjUwYzNiOGU2ZjI1Yzk5NzA4YTY2MTM3YmY1YzMwYzEu
LmY0ZjFiOTI3MGM2Yzk2YWZlZDk5OTQ3ODBlOTg5MmIxZTdkOTJkNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNj
b252ZXJzaW9uX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uX3VuaXR0ZXN0LmNjCkBAIC01
NzQsMTEgKzU3NCwyMyBAQCBURVNUKFJ0cFBhcmFtZXRlcnNDb252ZXJzaW9uVGVzdCwgVG9SdHBD
YXBhYmlsaXRpZXMpIHsKICAgZmxleGZlYy5pZCA9IDEwMjsKICAgZmxleGZlYy5jbG9ja3JhdGUg
PSA5MDAwMDsKIAorICBjcmlja2V0OjpWaWRlb0NvZGVjIHJ0eDsKKyAgcnR4Lm5hbWUgPSAicnR4
IjsKKyAgcnR4LmlkID0gMTA0OworICBydHgucGFyYW1zLmluc2VydCh7ImFwdCIsICIxMDEifSk7
CisKKyAgY3JpY2tldDo6VmlkZW9Db2RlYyBydHgyOworICBydHgyLm5hbWUgPSAicnR4IjsKKyAg
cnR4Mi5pZCA9IDEwNTsKKyAgcnR4Mi5wYXJhbXMuaW5zZXJ0KHsiYXB0IiwgIjEwOSJ9KTsKKwog
ICBSdHBDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzID0gVG9SdHBDYXBhYmlsaXRpZXM8Y3JpY2tl
dDo6VmlkZW9Db2RlYz4oCi0gICAgICB7dnA4LCB1bHBmZWN9LCB7eyJ1cmkiLCAxfSwgeyJ1cmky
IiwgM319KTsKLSAgQVNTRVJUX0VRKDJ1LCBjYXBhYmlsaXRpZXMuY29kZWNzLnNpemUoKSk7Cisg
ICAgICB7dnA4LCB1bHBmZWMsIHJ0eCwgcnR4Mn0sIHt7InVyaSIsIDF9LCB7InVyaTIiLCAzfX0p
OworICBBU1NFUlRfRVEoM3UsIGNhcGFiaWxpdGllcy5jb2RlY3Muc2l6ZSgpKTsKICAgRVhQRUNU
X0VRKCJWUDgiLCBjYXBhYmlsaXRpZXMuY29kZWNzWzBdLm5hbWUpOwogICBFWFBFQ1RfRVEoInVs
cGZlYyIsIGNhcGFiaWxpdGllcy5jb2RlY3NbMV0ubmFtZSk7CisgIEVYUEVDVF9FUSgicnR4Iiwg
Y2FwYWJpbGl0aWVzLmNvZGVjc1syXS5uYW1lKTsKKyAgRVhQRUNUX0VRKDB1LCBjYXBhYmlsaXRp
ZXMuY29kZWNzWzJdLnBhcmFtZXRlcnMuc2l6ZSgpKTsKICAgQVNTRVJUX0VRKDJ1LCBjYXBhYmls
aXRpZXMuaGVhZGVyX2V4dGVuc2lvbnMuc2l6ZSgpKTsKICAgRVhQRUNUX0VRKCJ1cmkiLCBjYXBh
YmlsaXRpZXMuaGVhZGVyX2V4dGVuc2lvbnNbMF0udXJpKTsKICAgRVhQRUNUX0VRKDEsIGNhcGFi
aWxpdGllcy5oZWFkZXJfZXh0ZW5zaW9uc1swXS5wcmVmZXJyZWRfaWQpOwpAQCAtNTg3LDggKzU5
OSw4IEBAIFRFU1QoUnRwUGFyYW1ldGVyc0NvbnZlcnNpb25UZXN0LCBUb1J0cENhcGFiaWxpdGll
cykgewogICBFWFBFQ1RfRVEoMHUsIGNhcGFiaWxpdGllcy5mZWMuc2l6ZSgpKTsKIAogICBjYXBh
YmlsaXRpZXMgPSBUb1J0cENhcGFiaWxpdGllczxjcmlja2V0OjpWaWRlb0NvZGVjPigKLSAgICAg
IHt2cDgsIHJlZCwgdWxwZmVjfSwgY3JpY2tldDo6UnRwSGVhZGVyRXh0ZW5zaW9ucygpKTsKLSAg
RVhQRUNUX0VRKDN1LCBjYXBhYmlsaXRpZXMuY29kZWNzLnNpemUoKSk7CisgICAgICB7dnA4LCBy
ZWQsIHVscGZlYywgcnR4fSwgY3JpY2tldDo6UnRwSGVhZGVyRXh0ZW5zaW9ucygpKTsKKyAgRVhQ
RUNUX0VRKDR1LCBjYXBhYmlsaXRpZXMuY29kZWNzLnNpemUoKSk7CiAgIEVYUEVDVF9FUSgydSwg
Y2FwYWJpbGl0aWVzLmZlYy5zaXplKCkpOwogICBFWFBFQ1RfTkUoY2FwYWJpbGl0aWVzLmZlYy5l
bmQoKSwKICAgICAgICAgICAgIHN0ZDo6ZmluZChjYXBhYmlsaXRpZXMuZmVjLmJlZ2luKCksIGNh
cGFiaWxpdGllcy5mZWMuZW5kKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHByZWNlaXZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHJlY2VpdmVyLmNjCmluZGV4IGQ0YTFmNjJm
ODNiODRjY2E2NzBmYWEwYmU1ODI5MWUwYzJhM2JjNGYuLjE5MTZhNzM2NzAzMmM0YmIxZjgxYTY1
MTBkMmVlZjExYzQ1YTkyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHJlY2VpdmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHJlY2VpdmVyLmNjCkBAIC01MCw5ICs1MCwx
MCBAQCB2b2lkIE1heWJlQXR0YWNoRnJhbWVEZWNyeXB0b3JUb01lZGlhQ2hhbm5lbCgKICAgICBj
b25zdCBhYnNsOjpvcHRpb25hbDx1aW50MzJfdD4mIHNzcmMsCiAgICAgcnRjOjpUaHJlYWQqIHdv
cmtlcl90aHJlYWQsCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RnJhbWVEZWNyeXB0
b3JJbnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRvciwKLSAgICBjcmlja2V0OjpNZWRpYUNoYW5uZWwq
IG1lZGlhX2NoYW5uZWwpIHsKLSAgaWYgKG1lZGlhX2NoYW5uZWwgJiYgc3NyYy5oYXNfdmFsdWUo
KSkgewotICAgIHJldHVybiB3b3JrZXJfdGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVS
RSwgWyZdIHsKKyAgICBjcmlja2V0OjpNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwsCisgICAg
Ym9vbCBzdG9wcGVkKSB7CisgIGlmIChtZWRpYV9jaGFubmVsICYmIGZyYW1lX2RlY3J5cHRvciAm
JiBzc3JjLmhhc192YWx1ZSgpICYmICFzdG9wcGVkKSB7CisgICAgd29ya2VyX3RocmVhZC0+SW52
b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIFsmXSB7CiAgICAgICBtZWRpYV9jaGFubmVsLT5TZXRG
cmFtZURlY3J5cHRvcigqc3NyYywgZnJhbWVfZGVjcnlwdG9yKTsKICAgICB9KTsKICAgfQpAQCAt
MTU2LDkgKzE1NywxMiBAQCBib29sIEF1ZGlvUnRwUmVjZWl2ZXI6OlNldFBhcmFtZXRlcnMoY29u
c3QgUnRwUGFyYW1ldGVycyYgcGFyYW1ldGVycykgewogdm9pZCBBdWRpb1J0cFJlY2VpdmVyOjpT
ZXRGcmFtZURlY3J5cHRvcigKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJ
bnRlcmZhY2U+IGZyYW1lX2RlY3J5cHRvcikgewogICBmcmFtZV9kZWNyeXB0b3JfID0gc3RkOjpt
b3ZlKGZyYW1lX2RlY3J5cHRvcik7Ci0gIC8vIEF0dGFjaCB0aGUgZnJhbWUgZGVjcnlwdG9yIHRv
IHRoZSBtZWRpYSBjaGFubmVsIGlmIGl0IGV4aXN0cy4KLSAgTWF5YmVBdHRhY2hGcmFtZURlY3J5
cHRvclRvTWVkaWFDaGFubmVsKHNzcmNfLCB3b3JrZXJfdGhyZWFkXywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2RlY3J5cHRvcl8sIG1lZGlhX2NoYW5u
ZWxfKTsKKyAgLy8gU3BlY2lhbCBDYXNlOiBTZXQgdGhlIGZyYW1lIGRlY3J5cHRvciB0byBhbnkg
dmFsdWUgb24gYW55IGV4aXN0aW5nIGNoYW5uZWwuCisgIGlmIChtZWRpYV9jaGFubmVsXyAmJiBz
c3JjXy5oYXNfdmFsdWUoKSAmJiAhc3RvcHBlZF8pIHsKKyAgICB3b3JrZXJfdGhyZWFkXy0+SW52
b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIFsmXSB7CisgICAgICBtZWRpYV9jaGFubmVsXy0+U2V0
RnJhbWVEZWNyeXB0b3IoKnNzcmNfLCBmcmFtZV9kZWNyeXB0b3JfKTsKKyAgICB9KTsKKyAgfQog
fQogCiBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVEZWNyeXB0b3JJbnRlcmZhY2U+CkBAIC0yNTIs
OCArMjU2LDggQEAgdm9pZCBBdWRpb1J0cFJlY2VpdmVyOjpSZWNvbmZpZ3VyZSgpIHsKICAgICBS
VENfTk9UUkVBQ0hFRCgpOwogICB9CiAgIC8vIFJlYXR0YWNoIHRoZSBmcmFtZSBkZWNyeXB0b3Ig
aWYgd2Ugd2VyZSByZWNvbmZpZ3VyZWQuCi0gIE1heWJlQXR0YWNoRnJhbWVEZWNyeXB0b3JUb01l
ZGlhQ2hhbm5lbChzc3JjXywgd29ya2VyX3RocmVhZF8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZV9kZWNyeXB0b3JfLCBtZWRpYV9jaGFubmVsXyk7Cisg
IE1heWJlQXR0YWNoRnJhbWVEZWNyeXB0b3JUb01lZGlhQ2hhbm5lbCgKKyAgICAgIHNzcmNfLCB3
b3JrZXJfdGhyZWFkXywgZnJhbWVfZGVjcnlwdG9yXywgbWVkaWFfY2hhbm5lbF8sIHN0b3BwZWRf
KTsKIH0KIAogdm9pZCBBdWRpb1J0cFJlY2VpdmVyOjpTZXRPYnNlcnZlcihSdHBSZWNlaXZlck9i
c2VydmVySW50ZXJmYWNlKiBvYnNlcnZlcikgewpAQCAtMjY0LDkgKzI2OCwxMCBAQCB2b2lkIEF1
ZGlvUnRwUmVjZWl2ZXI6OlNldE9ic2VydmVyKFJ0cFJlY2VpdmVyT2JzZXJ2ZXJJbnRlcmZhY2Uq
IG9ic2VydmVyKSB7CiAgIH0KIH0KIAotdm9pZCBBdWRpb1J0cFJlY2VpdmVyOjpTZXRWb2ljZU1l
ZGlhQ2hhbm5lbCgKLSAgICBjcmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCogdm9pY2VfbWVkaWFf
Y2hhbm5lbCkgewotICBtZWRpYV9jaGFubmVsXyA9IHZvaWNlX21lZGlhX2NoYW5uZWw7Cit2b2lk
IEF1ZGlvUnRwUmVjZWl2ZXI6OlNldE1lZGlhQ2hhbm5lbChjcmlja2V0OjpNZWRpYUNoYW5uZWwq
IG1lZGlhX2NoYW5uZWwpIHsKKyAgUlRDX0RDSEVDSyhtZWRpYV9jaGFubmVsID09IG51bGxwdHIg
fHwKKyAgICAgICAgICAgICBtZWRpYV9jaGFubmVsLT5tZWRpYV90eXBlKCkgPT0gbWVkaWFfdHlw
ZSgpKTsKKyAgbWVkaWFfY2hhbm5lbF8gPSBzdGF0aWNfY2FzdDxjcmlja2V0OjpWb2ljZU1lZGlh
Q2hhbm5lbCo+KG1lZGlhX2NoYW5uZWwpOwogfQogCiB2b2lkIEF1ZGlvUnRwUmVjZWl2ZXI6Ok5v
dGlmeUZpcnN0UGFja2V0UmVjZWl2ZWQoKSB7CkBAIC0zNDcsOSArMzUyLDEyIEBAIGJvb2wgVmlk
ZW9SdHBSZWNlaXZlcjo6U2V0UGFyYW1ldGVycyhjb25zdCBSdHBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKSB7CiB2b2lkIFZpZGVvUnRwUmVjZWl2ZXI6OlNldEZyYW1lRGVjcnlwdG9yKAogICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9y
KSB7CiAgIGZyYW1lX2RlY3J5cHRvcl8gPSBzdGQ6Om1vdmUoZnJhbWVfZGVjcnlwdG9yKTsKLSAg
Ly8gQXR0YWNoIHRoZSBuZXcgZnJhbWUgZGVjcnlwdG9yIHRoZSBtZWRpYSBjaGFubmVsIGlmIGl0
IGV4aXN0cyB5ZXQuCi0gIE1heWJlQXR0YWNoRnJhbWVEZWNyeXB0b3JUb01lZGlhQ2hhbm5lbChz
c3JjXywgd29ya2VyX3RocmVhZF8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFtZV9kZWNyeXB0b3JfLCBtZWRpYV9jaGFubmVsXyk7CisgIC8vIFNwZWNpYWwg
Q2FzZTogU2V0IHRoZSBmcmFtZSBkZWNyeXB0b3IgdG8gYW55IHZhbHVlIG9uIGFueSBleGlzdGlu
ZyBjaGFubmVsLgorICBpZiAobWVkaWFfY2hhbm5lbF8gJiYgc3NyY18uaGFzX3ZhbHVlKCkgJiYg
IXN0b3BwZWRfKSB7CisgICAgd29ya2VyX3RocmVhZF8tPkludm9rZTx2b2lkPihSVENfRlJPTV9I
RVJFLCBbJl0geworICAgICAgbWVkaWFfY2hhbm5lbF8tPlNldEZyYW1lRGVjcnlwdG9yKCpzc3Jj
XywgZnJhbWVfZGVjcnlwdG9yXyk7CisgICAgfSk7CisgIH0KIH0KIAogcnRjOjpzY29wZWRfcmVm
cHRyPEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPgpAQCAtMzg3LDggKzM5NSw4IEBAIHZvaWQgVmlk
ZW9SdHBSZWNlaXZlcjo6U2V0dXBNZWRpYUNoYW5uZWwodWludDMyX3Qgc3NyYykgewogICBzc3Jj
XyA9IHNzcmM7CiAgIFNldFNpbmsoc291cmNlXy0+c2luaygpKTsKICAgLy8gQXR0YWNoIGFueSBl
eGlzdGluZyBmcmFtZSBkZWNyeXB0b3IgdG8gdGhlIG1lZGlhIGNoYW5uZWwuCi0gIE1heWJlQXR0
YWNoRnJhbWVEZWNyeXB0b3JUb01lZGlhQ2hhbm5lbChzc3JjXywgd29ya2VyX3RocmVhZF8sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9kZWNyeXB0b3Jf
LCBtZWRpYV9jaGFubmVsXyk7CisgIE1heWJlQXR0YWNoRnJhbWVEZWNyeXB0b3JUb01lZGlhQ2hh
bm5lbCgKKyAgICAgIHNzcmNfLCB3b3JrZXJfdGhyZWFkXywgZnJhbWVfZGVjcnlwdG9yXywgbWVk
aWFfY2hhbm5lbF8sIHN0b3BwZWRfKTsKIH0KIAogdm9pZCBWaWRlb1J0cFJlY2VpdmVyOjpzZXRf
c3RyZWFtX2lkcyhzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gc3RyZWFtX2lkcykgewpAQCAtNDM2
LDkgKzQ0NCwxMCBAQCB2b2lkIFZpZGVvUnRwUmVjZWl2ZXI6OlNldE9ic2VydmVyKFJ0cFJlY2Vp
dmVyT2JzZXJ2ZXJJbnRlcmZhY2UqIG9ic2VydmVyKSB7CiAgIH0KIH0KIAotdm9pZCBWaWRlb1J0
cFJlY2VpdmVyOjpTZXRWaWRlb01lZGlhQ2hhbm5lbCgKLSAgICBjcmlja2V0OjpWaWRlb01lZGlh
Q2hhbm5lbCogdmlkZW9fbWVkaWFfY2hhbm5lbCkgewotICBtZWRpYV9jaGFubmVsXyA9IHZpZGVv
X21lZGlhX2NoYW5uZWw7Cit2b2lkIFZpZGVvUnRwUmVjZWl2ZXI6OlNldE1lZGlhQ2hhbm5lbChj
cmlja2V0OjpNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwpIHsKKyAgUlRDX0RDSEVDSyhtZWRp
YV9jaGFubmVsID09IG51bGxwdHIgfHwKKyAgICAgICAgICAgICBtZWRpYV9jaGFubmVsLT5tZWRp
YV90eXBlKCkgPT0gbWVkaWFfdHlwZSgpKTsKKyAgbWVkaWFfY2hhbm5lbF8gPSBzdGF0aWNfY2Fz
dDxjcmlja2V0OjpWaWRlb01lZGlhQ2hhbm5lbCo+KG1lZGlhX2NoYW5uZWwpOwogfQogCiB2b2lk
IFZpZGVvUnRwUmVjZWl2ZXI6Ok5vdGlmeUZpcnN0UGFja2V0UmVjZWl2ZWQoKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHByZWNl
aXZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRw
cmVjZWl2ZXIuaAppbmRleCA4NWJlOGMyNThiZmJhMmY1YjA5MmVmZjFiZmNkNTJjNDEyMmMzZjY5
Li4wNjMzMWE2NmM0ZGQ5NWNhMmU1ZTE1ODg0NjJiYjFlZmVmZDg3MjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHByZWNlaXZlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHJl
Y2VpdmVyLmgKQEAgLTM0LDE0ICszNCwxMCBAQCBjbGFzcyBSdHBSZWNlaXZlckludGVybmFsIDog
cHVibGljIFJ0cFJlY2VpdmVySW50ZXJmYWNlIHsKICAgdmlydHVhbCB2b2lkIFN0b3AoKSA9IDA7
CiAKICAgLy8gU2V0cyB0aGUgdW5kZXJseWluZyBNZWRpYUVuZ2luZSBjaGFubmVsIGFzc29jaWF0
ZWQgd2l0aCB0aGlzIFJ0cFNlbmRlci4KLSAgLy8gU2V0Vm9pY2VNZWRpYUNoYW5uZWwgc2hvdWxk
IGJlIHVzZWQgZm9yIGF1ZGlvIFJ0cFNlbmRlcnMgYW5kCi0gIC8vIFNldFZpZGVvTWVkaWFDaGFu
bmVsIHNob3VsZCBiZSB1c2VkIGZvciB2aWRlbyBSdHBTZW5kZXJzLiBNdXN0IGNhbGwgdGhlCi0g
IC8vIGFwcHJvcHJpYXRlIFNldFh4eE1lZGlhQ2hhbm5lbChudWxscHRyKSBiZWZvcmUgdGhlIG1l
ZGlhIGNoYW5uZWwgaXMKLSAgLy8gZGVzdHJveWVkLgotICB2aXJ0dWFsIHZvaWQgU2V0Vm9pY2VN
ZWRpYUNoYW5uZWwoCi0gICAgICBjcmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCogdm9pY2VfbWVk
aWFfY2hhbm5lbCkgPSAwOwotICB2aXJ0dWFsIHZvaWQgU2V0VmlkZW9NZWRpYUNoYW5uZWwoCi0g
ICAgICBjcmlja2V0OjpWaWRlb01lZGlhQ2hhbm5lbCogdmlkZW9fbWVkaWFfY2hhbm5lbCkgPSAw
OworICAvLyBBIFZvaWNlTWVkaWFDaGFubmVsIHNob3VsZCBiZSB1c2VkIGZvciBhdWRpbyBSdHBT
ZW5kZXJzIGFuZAorICAvLyBhIFZpZGVvTWVkaWFDaGFubmVsIHNob3VsZCBiZSB1c2VkIGZvciB2
aWRlbyBSdHBTZW5kZXJzLgorICAvLyBNdXN0IGNhbGwgU2V0TWVkaWFDaGFubmVsKG51bGxwdHIp
IGJlZm9yZSB0aGUgbWVkaWEgY2hhbm5lbCBpcyBkZXN0cm95ZWQuCisgIHZpcnR1YWwgdm9pZCBT
ZXRNZWRpYUNoYW5uZWwoY3JpY2tldDo6TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsKSA9IDA7
CiAKICAgLy8gQ29uZmlndXJlcyB0aGUgUnRwUmVjZWl2ZXIgd2l0aCB0aGUgdW5kZXJseWluZyBt
ZWRpYSBjaGFubmVsLCB3aXRoIHRoZQogICAvLyBnaXZlbiBTU1JDIGFzIHRoZSBzdHJlYW0gaWRl
bnRpZmllci4gSWYgfHNzcmN8IGlzIDAsIHRoZSByZWNlaXZlciB3aWxsCkBAIC0xMzAsMTMgKzEy
Niw4IEBAIGNsYXNzIEF1ZGlvUnRwUmVjZWl2ZXIgOiBwdWJsaWMgT2JzZXJ2ZXJJbnRlcmZhY2Us
CiAgIHZvaWQgU2V0U3RyZWFtcyhjb25zdCBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8
TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiYKICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1zKSBv
dmVycmlkZTsKICAgdm9pZCBTZXRPYnNlcnZlcihSdHBSZWNlaXZlck9ic2VydmVySW50ZXJmYWNl
KiBvYnNlcnZlcikgb3ZlcnJpZGU7Ci0gIHZvaWQgU2V0Vm9pY2VNZWRpYUNoYW5uZWwoCi0gICAg
ICBjcmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCogdm9pY2VfbWVkaWFfY2hhbm5lbCkgb3ZlcnJp
ZGU7CiAKLSAgdm9pZCBTZXRWaWRlb01lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNrZXQ6OlZpZGVv
TWVkaWFDaGFubmVsKiB2aWRlb19tZWRpYV9jaGFubmVsKSBvdmVycmlkZSB7Ci0gICAgUlRDX05P
VFJFQUNIRUQoKTsKLSAgfQorICB2b2lkIFNldE1lZGlhQ2hhbm5lbChjcmlja2V0OjpNZWRpYUNo
YW5uZWwqIG1lZGlhX2NoYW5uZWwpIG92ZXJyaWRlOwogCiAgIHN0ZDo6dmVjdG9yPFJ0cFNvdXJj
ZT4gR2V0U291cmNlcygpIGNvbnN0IG92ZXJyaWRlOwogICBpbnQgQXR0YWNobWVudElkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gYXR0YWNobWVudF9pZF87IH0KQEAgLTIxNywxMyArMjA4LDcg
QEAgY2xhc3MgVmlkZW9SdHBSZWNlaXZlciA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8
UnRwUmVjZWl2ZXJJbnRlcm5hbD4gewogCiAgIHZvaWQgU2V0T2JzZXJ2ZXIoUnRwUmVjZWl2ZXJP
YnNlcnZlckludGVyZmFjZSogb2JzZXJ2ZXIpIG92ZXJyaWRlOwogCi0gIHZvaWQgU2V0Vm9pY2VN
ZWRpYUNoYW5uZWwoCi0gICAgICBjcmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCogdm9pY2VfbWVk
aWFfY2hhbm5lbCkgb3ZlcnJpZGUgewotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIH0KLQotICB2
b2lkIFNldFZpZGVvTWVkaWFDaGFubmVsKAotICAgICAgY3JpY2tldDo6VmlkZW9NZWRpYUNoYW5u
ZWwqIHZpZGVvX21lZGlhX2NoYW5uZWwpIG92ZXJyaWRlOworICB2b2lkIFNldE1lZGlhQ2hhbm5l
bChjcmlja2V0OjpNZWRpYUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwpIG92ZXJyaWRlOwogCiAgIGlu
dCBBdHRhY2htZW50SWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBhdHRhY2htZW50X2lkXzsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9ydHBzZW5kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9ydHBzZW5kZXIuY2MKaW5kZXggM2JiOTBmMjRkYTE0YjkxNGQzMDNmNWJhOGVjM2M2
MzdjZDRiNTJiZC4uNzZmZGNhNmU5NDIwOTQ4M2VhNzY3MzI1MWRkYTQyZDVlOWM2Zjg4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRw
c2VuZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3BjL3J0cHNlbmRlci5jYwpAQCAtNTgsNyArNTgsOCBAQCBib29sIFVuaW1wbGVtZW50ZWRSdHBF
bmNvZGluZ1BhcmFtZXRlckhhc1ZhbHVlKAogLy8gbGF5ZXIuCiBib29sIFBlclNlbmRlclJ0cEVu
Y29kaW5nUGFyYW1ldGVySGFzVmFsdWUoCiAgICAgY29uc3QgUnRwRW5jb2RpbmdQYXJhbWV0ZXJz
JiBlbmNvZGluZ19wYXJhbXMpIHsKLSAgaWYgKGVuY29kaW5nX3BhcmFtcy5iaXRyYXRlX3ByaW9y
aXR5ICE9IGtEZWZhdWx0Qml0cmF0ZVByaW9yaXR5KSB7CisgIGlmIChlbmNvZGluZ19wYXJhbXMu
Yml0cmF0ZV9wcmlvcml0eSAhPSBrRGVmYXVsdEJpdHJhdGVQcmlvcml0eSB8fAorICAgICAgZW5j
b2RpbmdfcGFyYW1zLm5ldHdvcmtfcHJpb3JpdHkgIT0ga0RlZmF1bHRCaXRyYXRlUHJpb3JpdHkp
IHsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogICByZXR1cm4gZmFsc2U7CkBAIC02OCwxMyArNjks
MTQgQEAgYm9vbCBQZXJTZW5kZXJSdHBFbmNvZGluZ1BhcmFtZXRlckhhc1ZhbHVlKAogLy8gY29y
cmVjdCB3b3JrZXIgdGhyZWFkIG9ubHkgaWYgYm90aCB0aGUgbWVkaWEgY2hhbm5lbCBleGlzdHMg
YW5kIGEgc3NyYyBoYXMKIC8vIGJlZW4gYWxsb2NhdGVkIHRvIHRoZSBzdHJlYW0uCiB2b2lkIE1h
eWJlQXR0YWNoRnJhbWVFbmNyeXB0b3JUb01lZGlhQ2hhbm5lbCgKLSAgICBjb25zdCBhYnNsOjpv
cHRpb25hbDx1aW50MzJfdD4gc3NyYywKKyAgICBjb25zdCB1aW50MzJfdCBzc3JjLAogICAgIHJ0
Yzo6VGhyZWFkKiB3b3JrZXJfdGhyZWFkLAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkZyYW1lRW5jcnlwdG9ySW50ZXJmYWNlPiBmcmFtZV9lbmNyeXB0b3IsCi0gICAgY3JpY2tldDo6
TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsKSB7Ci0gIGlmIChtZWRpYV9jaGFubmVsICYmIHNz
cmMuaGFzX3ZhbHVlKCkpIHsKLSAgICByZXR1cm4gd29ya2VyX3RocmVhZC0+SW52b2tlPHZvaWQ+
KFJUQ19GUk9NX0hFUkUsIFsmXSB7Ci0gICAgICBtZWRpYV9jaGFubmVsLT5TZXRGcmFtZUVuY3J5
cHRvcigqc3NyYywgZnJhbWVfZW5jcnlwdG9yKTsKKyAgICBjcmlja2V0OjpNZWRpYUNoYW5uZWwq
IG1lZGlhX2NoYW5uZWwsCisgICAgYm9vbCBzdG9wcGVkKSB7CisgIGlmIChtZWRpYV9jaGFubmVs
ICYmIGZyYW1lX2VuY3J5cHRvciAmJiBzc3JjICYmICFzdG9wcGVkKSB7CisgICAgd29ya2VyX3Ro
cmVhZC0+SW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIFsmXSB7CisgICAgICBtZWRpYV9jaGFu
bmVsLT5TZXRGcmFtZUVuY3J5cHRvcihzc3JjLCBmcmFtZV9lbmNyeXB0b3IpOwogICAgIH0pOwog
ICB9CiB9CkBAIC0zMDUsOCArMzA3LDEyIEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjxEdG1mU2VuZGVy
SW50ZXJmYWNlPiBBdWRpb1J0cFNlbmRlcjo6R2V0RHRtZlNlbmRlcigpIGNvbnN0IHsKIHZvaWQg
QXVkaW9SdHBTZW5kZXI6OlNldEZyYW1lRW5jcnlwdG9yKAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZnJhbWVfZW5jcnlwdG9yKSB7CiAgIGZyYW1lX2Vu
Y3J5cHRvcl8gPSBzdGQ6Om1vdmUoZnJhbWVfZW5jcnlwdG9yKTsKLSAgTWF5YmVBdHRhY2hGcmFt
ZUVuY3J5cHRvclRvTWVkaWFDaGFubmVsKHNzcmNfLCB3b3JrZXJfdGhyZWFkXywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2VuY3J5cHRvcl8sIG1lZGlh
X2NoYW5uZWxfKTsKKyAgLy8gU3BlY2lhbCBDYXNlOiBTZXQgdGhlIGZyYW1lIGVuY3J5cHRvciB0
byBhbnkgdmFsdWUgb24gYW55IGV4aXN0aW5nIGNoYW5uZWwuCisgIGlmIChtZWRpYV9jaGFubmVs
XyAmJiBzc3JjXyAmJiAhc3RvcHBlZF8pIHsKKyAgICB3b3JrZXJfdGhyZWFkXy0+SW52b2tlPHZv
aWQ+KFJUQ19GUk9NX0hFUkUsIFsmXSB7CisgICAgICBtZWRpYV9jaGFubmVsXy0+U2V0RnJhbWVF
bmNyeXB0b3Ioc3NyY18sIGZyYW1lX2VuY3J5cHRvcl8pOworICAgIH0pOworICB9CiB9CiAKIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gQXVkaW9SdHBTZW5kZXI6
OkdldEZyYW1lRW5jcnlwdG9yKCkKQEAgLTM1Niw4ICszNjIsOCBAQCB2b2lkIEF1ZGlvUnRwU2Vu
ZGVyOjpTZXRTc3JjKHVpbnQzMl90IHNzcmMpIHsKICAgICB9KTsKICAgfQogICAvLyBFYWNoIHRp
bWUgdGhlcmUgaXMgYW4gc3NyYyB1cGRhdGUuCi0gIE1heWJlQXR0YWNoRnJhbWVFbmNyeXB0b3JU
b01lZGlhQ2hhbm5lbChzc3JjXywgd29ya2VyX3RocmVhZF8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9lbmNyeXB0b3JfLCBtZWRpYV9jaGFubmVsXyk7
CisgIE1heWJlQXR0YWNoRnJhbWVFbmNyeXB0b3JUb01lZGlhQ2hhbm5lbCgKKyAgICAgIHNzcmNf
LCB3b3JrZXJfdGhyZWFkXywgZnJhbWVfZW5jcnlwdG9yXywgbWVkaWFfY2hhbm5lbF8sIHN0b3Bw
ZWRfKTsKIH0KIAogdm9pZCBBdWRpb1J0cFNlbmRlcjo6U3RvcCgpIHsKQEAgLTM4MCw5ICszODYs
MTAgQEAgdm9pZCBBdWRpb1J0cFNlbmRlcjo6U3RvcCgpIHsKICAgc3RvcHBlZF8gPSB0cnVlOwog
fQogCi12b2lkIEF1ZGlvUnRwU2VuZGVyOjpTZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAgICBjcmlj
a2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCogdm9pY2VfbWVkaWFfY2hhbm5lbCkgewotICBtZWRpYV9j
aGFubmVsXyA9IHZvaWNlX21lZGlhX2NoYW5uZWw7Cit2b2lkIEF1ZGlvUnRwU2VuZGVyOjpTZXRN
ZWRpYUNoYW5uZWwoY3JpY2tldDo6TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsKSB7CisgIFJU
Q19EQ0hFQ0sobWVkaWFfY2hhbm5lbCA9PSBudWxscHRyIHx8CisgICAgICAgICAgICAgbWVkaWFf
Y2hhbm5lbC0+bWVkaWFfdHlwZSgpID09IG1lZGlhX3R5cGUoKSk7CisgIG1lZGlhX2NoYW5uZWxf
ID0gc3RhdGljX2Nhc3Q8Y3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqPihtZWRpYV9jaGFubmVs
KTsKIH0KIAogdm9pZCBBdWRpb1J0cFNlbmRlcjo6U2V0QXVkaW9TZW5kKCkgewpAQCAtMzk5LDkg
KzQwNiw3IEBAIHZvaWQgQXVkaW9SdHBTZW5kZXI6OlNldEF1ZGlvU2VuZCgpIHsKICAgLy8gb3B0
aW9ucyBzaW5jZSBpdCBpcyBhbHNvIGFwcGxpZWQgdG8gYWxsIHN0cmVhbXMvY2hhbm5lbHMsIGxv
Y2FsIG9yIHJlbW90ZS4KICAgaWYgKHRyYWNrXy0+ZW5hYmxlZCgpICYmIHRyYWNrXy0+R2V0U291
cmNlKCkgJiYKICAgICAgICF0cmFja18tPkdldFNvdXJjZSgpLT5yZW1vdGUoKSkgewotICAgIC8v
IFRPRE8oeGlhbnMpOiBSZW1vdmUgdGhpcyBzdGF0aWNfY2FzdCBzaW5jZSB3ZSBzaG91bGQgYmUg
YWJsZSB0byBjb25uZWN0Ci0gICAgLy8gYSByZW1vdGUgYXVkaW8gdHJhY2sgdG8gYSBwZWVyIGNv
bm5lY3Rpb24uCi0gICAgb3B0aW9ucyA9IHN0YXRpY19jYXN0PExvY2FsQXVkaW9Tb3VyY2UqPih0
cmFja18tPkdldFNvdXJjZSgpKS0+b3B0aW9ucygpOworICAgIG9wdGlvbnMgPSB0cmFja18tPkdl
dFNvdXJjZSgpLT5vcHRpb25zKCk7CiAgIH0KICNlbmRpZgogCkBAIC01NTcsOCArNTYyLDEyIEBA
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxEdG1mU2VuZGVySW50ZXJmYWNlPiBWaWRlb1J0cFNlbmRlcjo6
R2V0RHRtZlNlbmRlcigpIGNvbnN0IHsKIHZvaWQgVmlkZW9SdHBTZW5kZXI6OlNldEZyYW1lRW5j
cnlwdG9yKAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4g
ZnJhbWVfZW5jcnlwdG9yKSB7CiAgIGZyYW1lX2VuY3J5cHRvcl8gPSBzdGQ6Om1vdmUoZnJhbWVf
ZW5jcnlwdG9yKTsKLSAgTWF5YmVBdHRhY2hGcmFtZUVuY3J5cHRvclRvTWVkaWFDaGFubmVsKHNz
cmNfLCB3b3JrZXJfdGhyZWFkXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lX2VuY3J5cHRvcl8sIG1lZGlhX2NoYW5uZWxfKTsKKyAgLy8gU3BlY2lhbCBD
YXNlOiBTZXQgdGhlIGZyYW1lIGVuY3J5cHRvciB0byBhbnkgdmFsdWUgb24gYW55IGV4aXN0aW5n
IGNoYW5uZWwuCisgIGlmIChtZWRpYV9jaGFubmVsXyAmJiBzc3JjXyAmJiAhc3RvcHBlZF8pIHsK
KyAgICB3b3JrZXJfdGhyZWFkXy0+SW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIFsmXSB7Cisg
ICAgICBtZWRpYV9jaGFubmVsXy0+U2V0RnJhbWVFbmNyeXB0b3Ioc3NyY18sIGZyYW1lX2VuY3J5
cHRvcl8pOworICAgIH0pOworICB9CiB9CiAKIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5
cHRvckludGVyZmFjZT4gVmlkZW9SdHBTZW5kZXI6OkdldEZyYW1lRW5jcnlwdG9yKCkKQEAgLTYw
MSw4ICs2MTAsOCBAQCB2b2lkIFZpZGVvUnRwU2VuZGVyOjpTZXRTc3JjKHVpbnQzMl90IHNzcmMp
IHsKICAgICAgIGluaXRfcGFyYW1ldGVyc18uZW5jb2RpbmdzLmNsZWFyKCk7CiAgICAgfSk7CiAg
IH0KLSAgTWF5YmVBdHRhY2hGcmFtZUVuY3J5cHRvclRvTWVkaWFDaGFubmVsKHNzcmNfLCB3b3Jr
ZXJfdGhyZWFkXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lX2VuY3J5cHRvcl8sIG1lZGlhX2NoYW5uZWxfKTsKKyAgTWF5YmVBdHRhY2hGcmFtZUVuY3J5
cHRvclRvTWVkaWFDaGFubmVsKAorICAgICAgc3NyY18sIHdvcmtlcl90aHJlYWRfLCBmcmFtZV9l
bmNyeXB0b3JfLCBtZWRpYV9jaGFubmVsXywgc3RvcHBlZF8pOwogfQogCiB2b2lkIFZpZGVvUnRw
U2VuZGVyOjpTdG9wKCkgewpAQCAtNjIxLDkgKzYzMCwxMCBAQCB2b2lkIFZpZGVvUnRwU2VuZGVy
OjpTdG9wKCkgewogICBzdG9wcGVkXyA9IHRydWU7CiB9CiAKLXZvaWQgVmlkZW9SdHBTZW5kZXI6
OlNldFZpZGVvTWVkaWFDaGFubmVsKAotICAgIGNyaWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVsKiB2
aWRlb19tZWRpYV9jaGFubmVsKSB7Ci0gIG1lZGlhX2NoYW5uZWxfID0gdmlkZW9fbWVkaWFfY2hh
bm5lbDsKK3ZvaWQgVmlkZW9SdHBTZW5kZXI6OlNldE1lZGlhQ2hhbm5lbChjcmlja2V0OjpNZWRp
YUNoYW5uZWwqIG1lZGlhX2NoYW5uZWwpIHsKKyAgUlRDX0RDSEVDSyhtZWRpYV9jaGFubmVsID09
IG51bGxwdHIgfHwKKyAgICAgICAgICAgICBtZWRpYV9jaGFubmVsLT5tZWRpYV90eXBlKCkgPT0g
bWVkaWFfdHlwZSgpKTsKKyAgbWVkaWFfY2hhbm5lbF8gPSBzdGF0aWNfY2FzdDxjcmlja2V0OjpW
aWRlb01lZGlhQ2hhbm5lbCo+KG1lZGlhX2NoYW5uZWwpOwogfQogCiB2b2lkIFZpZGVvUnRwU2Vu
ZGVyOjpTZXRWaWRlb1NlbmQoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBzZW5kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHNlbmRlci5oCmluZGV4IDJhODI4OWY0MTdlYWM5
NGUyNDgzYTk4YmU3Zjc4YjZiYmQ3ZjgyN2MuLjA3ZmFlNmI5NTQ3YzQ5NGEyM2ZmM2Q3NThlMmUz
YTYyYWVmZmM4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3J0cHNlbmRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHNlbmRlci5oCkBAIC0zNiwxNCArMzYsMTAgQEAgYm9vbCBV
bmltcGxlbWVudGVkUnRwUGFyYW1ldGVySGFzVmFsdWUoY29uc3QgUnRwUGFyYW1ldGVycyYgcGFy
YW1ldGVycyk7CiBjbGFzcyBSdHBTZW5kZXJJbnRlcm5hbCA6IHB1YmxpYyBSdHBTZW5kZXJJbnRl
cmZhY2UgewogIHB1YmxpYzoKICAgLy8gU2V0cyB0aGUgdW5kZXJseWluZyBNZWRpYUVuZ2luZSBj
aGFubmVsIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFJ0cFNlbmRlci4KLSAgLy8gU2V0Vm9pY2VNZWRp
YUNoYW5uZWwgc2hvdWxkIGJlIHVzZWQgZm9yIGF1ZGlvIFJ0cFNlbmRlcnMgYW5kCi0gIC8vIFNl
dFZpZGVvTWVkaWFDaGFubmVsIHNob3VsZCBiZSB1c2VkIGZvciB2aWRlbyBSdHBTZW5kZXJzLiBN
dXN0IGNhbGwgdGhlCi0gIC8vIGFwcHJvcHJpYXRlIFNldFh4eE1lZGlhQ2hhbm5lbChudWxscHRy
KSBiZWZvcmUgdGhlIG1lZGlhIGNoYW5uZWwgaXMKLSAgLy8gZGVzdHJveWVkLgotICB2aXJ0dWFs
IHZvaWQgU2V0Vm9pY2VNZWRpYUNoYW5uZWwoCi0gICAgICBjcmlja2V0OjpWb2ljZU1lZGlhQ2hh
bm5lbCogdm9pY2VfbWVkaWFfY2hhbm5lbCkgPSAwOwotICB2aXJ0dWFsIHZvaWQgU2V0VmlkZW9N
ZWRpYUNoYW5uZWwoCi0gICAgICBjcmlja2V0OjpWaWRlb01lZGlhQ2hhbm5lbCogdmlkZW9fbWVk
aWFfY2hhbm5lbCkgPSAwOworICAvLyBBIFZvaWNlTWVkaWFDaGFubmVsIHNob3VsZCBiZSB1c2Vk
IGZvciBhdWRpbyBSdHBTZW5kZXJzIGFuZAorICAvLyBhIFZpZGVvTWVkaWFDaGFubmVsIHNob3Vs
ZCBiZSB1c2VkIGZvciB2aWRlbyBSdHBTZW5kZXJzLgorICAvLyBNdXN0IGNhbGwgU2V0TWVkaWFD
aGFubmVsKG51bGxwdHIpIGJlZm9yZSB0aGUgbWVkaWEgY2hhbm5lbCBpcyBkZXN0cm95ZWQuCisg
IHZpcnR1YWwgdm9pZCBTZXRNZWRpYUNoYW5uZWwoY3JpY2tldDo6TWVkaWFDaGFubmVsKiBtZWRp
YV9jaGFubmVsKSA9IDA7CiAKICAgLy8gVXNlZCB0byBzZXQgdGhlIFNTUkMgb2YgdGhlIHNlbmRl
ciwgb25jZSBhIGxvY2FsIGRlc2NyaXB0aW9uIGhhcyBiZWVuIHNldC4KICAgLy8gSWYgfHNzcmN8
IGlzIDAsIHRoaXMgaW5kaWF0ZXMgdGhhdCB0aGUgc2VuZGVyIHNob3VsZCBkaXNjb25uZWN0IGZy
b20gdGhlCkBAIC0xNTYsMTMgKzE1Miw3IEBAIGNsYXNzIEF1ZGlvUnRwU2VuZGVyIDogcHVibGlj
IER0bWZQcm92aWRlckludGVyZmFjZSwKIAogICBpbnQgQXR0YWNobWVudElkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYXR0YWNobWVudF9pZF87IH0KIAotICB2b2lkIFNldFZvaWNlTWVkaWFD
aGFubmVsKAotICAgICAgY3JpY2tldDo6Vm9pY2VNZWRpYUNoYW5uZWwqIHZvaWNlX21lZGlhX2No
YW5uZWwpIG92ZXJyaWRlOwotCi0gIHZvaWQgU2V0VmlkZW9NZWRpYUNoYW5uZWwoCi0gICAgICBj
cmlja2V0OjpWaWRlb01lZGlhQ2hhbm5lbCogdmlkZW9fbWVkaWFfY2hhbm5lbCkgb3ZlcnJpZGUg
ewotICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gIH0KKyAgdm9pZCBTZXRNZWRpYUNoYW5uZWwoY3Jp
Y2tldDo6TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVsKSBvdmVycmlkZTsKIAogIHByaXZhdGU6
CiAgIC8vIFRPRE8obmlzc2UpOiBTaW5jZSBTU1JDID09IDAgaXMgdGVjaG5pY2FsbHkgdmFsaWQs
IGZpZ3VyZSBvdXQKQEAgLTI1MywxMyArMjQzLDcgQEAgY2xhc3MgVmlkZW9SdHBTZW5kZXIgOiBw
dWJsaWMgT2JzZXJ2ZXJJbnRlcmZhY2UsCiAgIHZvaWQgU3RvcCgpIG92ZXJyaWRlOwogICBpbnQg
QXR0YWNobWVudElkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYXR0YWNobWVudF9pZF87IH0K
IAotICB2b2lkIFNldFZvaWNlTWVkaWFDaGFubmVsKAotICAgICAgY3JpY2tldDo6Vm9pY2VNZWRp
YUNoYW5uZWwqIHZvaWNlX21lZGlhX2NoYW5uZWwpIG92ZXJyaWRlIHsKLSAgICBSVENfTk9UUkVB
Q0hFRCgpOwotICB9Ci0KLSAgdm9pZCBTZXRWaWRlb01lZGlhQ2hhbm5lbCgKLSAgICAgIGNyaWNr
ZXQ6OlZpZGVvTWVkaWFDaGFubmVsKiB2aWRlb19tZWRpYV9jaGFubmVsKSBvdmVycmlkZTsKKyAg
dm9pZCBTZXRNZWRpYUNoYW5uZWwoY3JpY2tldDo6TWVkaWFDaGFubmVsKiBtZWRpYV9jaGFubmVs
KSBvdmVycmlkZTsKIAogIHByaXZhdGU6CiAgIGJvb2wgY2FuX3NlbmRfdHJhY2soKSBjb25zdCB7
IHJldHVybiB0cmFja18gJiYgc3NyY187IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHNlbmRlcnJlY2VpdmVyX3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVy
cmVjZWl2ZXJfdW5pdHRlc3QuY2MKaW5kZXggMDdmZjZhMzg2NTQ0NjQ3NGEyMTg2ZTJiNjkxZThm
ZmM5Y2E5MDM0NC4uM2JlNjliYWZjOWMwMWY1ZDZlZjRkNDJmMDcxODgyYTIzZTIzYTY2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRw
c2VuZGVycmVjZWl2ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwc2VuZGVycmVjZWl2ZXJfdW5pdHRlc3QuY2MKQEAgLTgw
LDEyICs4MCwxMiBAQCBjbGFzcyBSdHBTZW5kZXJSZWNlaXZlclRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCwKIAogICAgIHZvaWNlX2NoYW5uZWxfID0gY2hhbm5lbF9tYW5hZ2VyXy5DcmVhdGVW
b2ljZUNoYW5uZWwoCiAgICAgICAgICZmYWtlX2NhbGxfLCBjcmlja2V0OjpNZWRpYUNvbmZpZygp
LCBydHBfdHJhbnNwb3J0Xy5nZXQoKSwKLSAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwg
Y3JpY2tldDo6Q05fQVVESU8sIHNydHBfcmVxdWlyZWQsCi0gICAgICAgIHJ0Yzo6Q3J5cHRvT3B0
aW9ucygpLCBjcmlja2V0OjpBdWRpb09wdGlvbnMoKSk7CisgICAgICAgIC8qbWVkaWFfdHJhbnNw
b3J0PSovbnVsbHB0ciwgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwgY3JpY2tldDo6Q05fQVVESU8s
CisgICAgICAgIHNydHBfcmVxdWlyZWQsIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygpLCBjcmlja2V0
OjpBdWRpb09wdGlvbnMoKSk7CiAgICAgdmlkZW9fY2hhbm5lbF8gPSBjaGFubmVsX21hbmFnZXJf
LkNyZWF0ZVZpZGVvQ2hhbm5lbCgKICAgICAgICAgJmZha2VfY2FsbF8sIGNyaWNrZXQ6Ok1lZGlh
Q29uZmlnKCksIHJ0cF90cmFuc3BvcnRfLmdldCgpLAogICAgICAgICBydGM6OlRocmVhZDo6Q3Vy
cmVudCgpLCBjcmlja2V0OjpDTl9WSURFTywgc3J0cF9yZXF1aXJlZCwKLSAgICAgICAgcnRjOjpD
cnlwdG9PcHRpb25zKCksIGNyaWNrZXQ6OlZpZGVvT3B0aW9ucygpKTsKKyAgICAgICAgd2VicnRj
OjpDcnlwdG9PcHRpb25zKCksIGNyaWNrZXQ6OlZpZGVvT3B0aW9ucygpKTsKICAgICB2b2ljZV9j
aGFubmVsXy0+RW5hYmxlKHRydWUpOwogICAgIHZpZGVvX2NoYW5uZWxfLT5FbmFibGUodHJ1ZSk7
CiAgICAgdm9pY2VfbWVkaWFfY2hhbm5lbF8gPSBtZWRpYV9lbmdpbmVfLT5HZXRWb2ljZUNoYW5u
ZWwoMCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgY2xhc3MgUnRwU2VuZGVyUmVjZWl2ZXJUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QsCiAgICAgICAgIG5ldyBBdWRpb1J0cFNlbmRlcih3b3JrZXJf
dGhyZWFkXywgYXVkaW9fdHJhY2tfLT5pZCgpLCBudWxscHRyKTsKICAgICBBU1NFUlRfVFJVRShh
dWRpb19ydHBfc2VuZGVyXy0+U2V0VHJhY2soYXVkaW9fdHJhY2tfKSk7CiAgICAgYXVkaW9fcnRw
X3NlbmRlcl8tPnNldF9zdHJlYW1faWRzKHtsb2NhbF9zdHJlYW1fLT5pZCgpfSk7Ci0gICAgYXVk
aW9fcnRwX3NlbmRlcl8tPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2NoYW5uZWxf
KTsKKyAgICBhdWRpb19ydHBfc2VuZGVyXy0+U2V0TWVkaWFDaGFubmVsKHZvaWNlX21lZGlhX2No
YW5uZWxfKTsKICAgICBhdWRpb19ydHBfc2VuZGVyXy0+U2V0U3NyYyhrQXVkaW9Tc3JjKTsKICAg
ICBhdWRpb19ydHBfc2VuZGVyXy0+R2V0T25EZXN0cm95ZWRTaWduYWwoKS0+Y29ubmVjdCgKICAg
ICAgICAgdGhpcywgJlJ0cFNlbmRlclJlY2VpdmVyVGVzdDo6T25BdWRpb1NlbmRlckRlc3Ryb3ll
ZCk7CkBAIC0xNjMsNyArMTYzLDcgQEAgY2xhc3MgUnRwU2VuZGVyUmVjZWl2ZXJUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QsCiAKICAgdm9pZCBDcmVhdGVBdWRpb1J0cFNlbmRlcldpdGhOb1Ry
YWNrKCkgewogICAgIGF1ZGlvX3J0cF9zZW5kZXJfID0gbmV3IEF1ZGlvUnRwU2VuZGVyKHdvcmtl
cl90aHJlYWRfLCAvKmlkPSovIiIsIG51bGxwdHIpOwotICAgIGF1ZGlvX3J0cF9zZW5kZXJfLT5T
ZXRWb2ljZU1lZGlhQ2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVsXyk7CisgICAgYXVkaW9fcnRw
X3NlbmRlcl8tPlNldE1lZGlhQ2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFubmVsXyk7CiAgIH0KIAog
ICB2b2lkIE9uQXVkaW9TZW5kZXJEZXN0cm95ZWQoKSB7IGF1ZGlvX3NlbmRlcl9kZXN0cm95ZWRf
c2lnbmFsX2ZpcmVkXyA9IHRydWU7IH0KQEAgLTE5MSwxMyArMTkxLDEzIEBAIGNsYXNzIFJ0cFNl
bmRlclJlY2VpdmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgIHZpZGVvX3J0cF9z
ZW5kZXJfID0gbmV3IFZpZGVvUnRwU2VuZGVyKHdvcmtlcl90aHJlYWRfLCB2aWRlb190cmFja18t
PmlkKCkpOwogICAgIEFTU0VSVF9UUlVFKHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRUcmFjayh2aWRl
b190cmFja18pKTsKICAgICB2aWRlb19ydHBfc2VuZGVyXy0+c2V0X3N0cmVhbV9pZHMoe2xvY2Fs
X3N0cmVhbV8tPmlkKCl9KTsKLSAgICB2aWRlb19ydHBfc2VuZGVyXy0+U2V0VmlkZW9NZWRpYUNo
YW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbF8pOworICAgIHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRN
ZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbF8pOwogICAgIHZpZGVvX3J0cF9zZW5kZXJf
LT5TZXRTc3JjKHNzcmMpOwogICAgIFZlcmlmeVZpZGVvQ2hhbm5lbElucHV0KHNzcmMpOwogICB9
CiAgIHZvaWQgQ3JlYXRlVmlkZW9SdHBTZW5kZXJXaXRoTm9UcmFjaygpIHsKICAgICB2aWRlb19y
dHBfc2VuZGVyXyA9IG5ldyBWaWRlb1J0cFNlbmRlcih3b3JrZXJfdGhyZWFkXywgLyppZD0qLyIi
KTsKLSAgICB2aWRlb19ydHBfc2VuZGVyXy0+U2V0VmlkZW9NZWRpYUNoYW5uZWwodmlkZW9fbWVk
aWFfY2hhbm5lbF8pOworICAgIHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRNZWRpYUNoYW5uZWwodmlk
ZW9fbWVkaWFfY2hhbm5lbF8pOwogICB9CiAKICAgdm9pZCBEZXN0cm95QXVkaW9SdHBTZW5kZXIo
KSB7CkBAIC0yMTQsNyArMjE0LDcgQEAgY2xhc3MgUnRwU2VuZGVyUmVjZWl2ZXJUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QsCiAgICAgICBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8
TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiBzdHJlYW1zID0ge30pIHsKICAgICBhdWRpb19ydHBfcmVj
ZWl2ZXJfID0gbmV3IEF1ZGlvUnRwUmVjZWl2ZXIoCiAgICAgICAgIHJ0Yzo6VGhyZWFkOjpDdXJy
ZW50KCksIGtBdWRpb1RyYWNrSWQsIHN0ZDo6bW92ZShzdHJlYW1zKSk7Ci0gICAgYXVkaW9fcnRw
X3JlY2VpdmVyXy0+U2V0Vm9pY2VNZWRpYUNoYW5uZWwodm9pY2VfbWVkaWFfY2hhbm5lbF8pOwor
ICAgIGF1ZGlvX3J0cF9yZWNlaXZlcl8tPlNldE1lZGlhQ2hhbm5lbCh2b2ljZV9tZWRpYV9jaGFu
bmVsXyk7CiAgICAgYXVkaW9fcnRwX3JlY2VpdmVyXy0+U2V0dXBNZWRpYUNoYW5uZWwoa0F1ZGlv
U3NyYyk7CiAgICAgYXVkaW9fdHJhY2tfID0gYXVkaW9fcnRwX3JlY2VpdmVyXy0+YXVkaW9fdHJh
Y2soKTsKICAgICBWZXJpZnlWb2ljZUNoYW5uZWxPdXRwdXQoKTsKQEAgLTIyNCwxMiArMjI0LDMw
IEBAIGNsYXNzIFJ0cFNlbmRlclJlY2VpdmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAog
ICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtSW50ZXJmYWNl
Pj4gc3RyZWFtcyA9IHt9KSB7CiAgICAgdmlkZW9fcnRwX3JlY2VpdmVyXyA9IG5ldyBWaWRlb1J0
cFJlY2VpdmVyKAogICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLCBrVmlkZW9UcmFja0lk
LCBzdGQ6Om1vdmUoc3RyZWFtcykpOwotICAgIHZpZGVvX3J0cF9yZWNlaXZlcl8tPlNldFZpZGVv
TWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWxfKTsKKyAgICB2aWRlb19ydHBfcmVjZWl2
ZXJfLT5TZXRNZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbF8pOwogICAgIHZpZGVvX3J0
cF9yZWNlaXZlcl8tPlNldHVwTWVkaWFDaGFubmVsKGtWaWRlb1NzcmMpOwogICAgIHZpZGVvX3Ry
YWNrXyA9IHZpZGVvX3J0cF9yZWNlaXZlcl8tPnZpZGVvX3RyYWNrKCk7CiAgICAgVmVyaWZ5Vmlk
ZW9DaGFubmVsT3V0cHV0KCk7CiAgIH0KIAorICB2b2lkIENyZWF0ZVZpZGVvUnRwUmVjZWl2ZXJX
aXRoU2ltdWxjYXN0KAorICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPE1lZGlh
U3RyZWFtSW50ZXJmYWNlPj4gc3RyZWFtcyA9IHt9LAorICAgICAgaW50IG51bV9sYXllcnMgPSBr
VmlkZW9TaW11bGNhc3RMYXllckNvdW50KSB7CisgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHNz
cmNzOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2xheWVyczsgKytpKQorICAgICAgc3Ny
Y3MucHVzaF9iYWNrKGtWaWRlb1NzcmNTaW11bGNhc3QgKyBpKTsKKyAgICBjcmlja2V0OjpTdHJl
YW1QYXJhbXMgc3RyZWFtX3BhcmFtcyA9CisgICAgICAgIGNyaWNrZXQ6OkNyZWF0ZVNpbVN0cmVh
bVBhcmFtcygiY25hbWUiLCBzc3Jjcyk7CisgICAgdmlkZW9fbWVkaWFfY2hhbm5lbF8tPkFkZFJl
Y3ZTdHJlYW0oc3RyZWFtX3BhcmFtcyk7CisgICAgdWludDMyX3QgcHJpbWFyeV9zc3JjID0gc3Ry
ZWFtX3BhcmFtcy5maXJzdF9zc3JjKCk7CisKKyAgICB2aWRlb19ydHBfcmVjZWl2ZXJfID0gbmV3
IFZpZGVvUnRwUmVjZWl2ZXIoCisgICAgICAgIHJ0Yzo6VGhyZWFkOjpDdXJyZW50KCksIGtWaWRl
b1RyYWNrSWQsIHN0ZDo6bW92ZShzdHJlYW1zKSk7CisgICAgdmlkZW9fcnRwX3JlY2VpdmVyXy0+
U2V0TWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWxfKTsKKyAgICB2aWRlb19ydHBfcmVj
ZWl2ZXJfLT5TZXR1cE1lZGlhQ2hhbm5lbChwcmltYXJ5X3NzcmMpOworICAgIHZpZGVvX3RyYWNr
XyA9IHZpZGVvX3J0cF9yZWNlaXZlcl8tPnZpZGVvX3RyYWNrKCk7CisgIH0KKwogICB2b2lkIERl
c3Ryb3lBdWRpb1J0cFJlY2VpdmVyKCkgewogICAgIGF1ZGlvX3J0cF9yZWNlaXZlcl8gPSBudWxs
cHRyOwogICAgIFZlcmlmeVZvaWNlQ2hhbm5lbE5vT3V0cHV0KCk7CkBAIC02NjQsNyArNjgyLDcg
QEAgVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgQXVkaW9TZW5kZXJJbml0UGFyYW1ldGVy
c01vdmVkQWZ0ZXJOZWdvdGlhdGlvbikgewogICBjcmlja2V0OjpTdHJlYW1QYXJhbXMgc3RyZWFt
X3BhcmFtcyA9CiAgICAgICBjcmlja2V0OjpDcmVhdGVTaW1TdHJlYW1QYXJhbXMoImNuYW1lIiwg
c3NyY3MpOwogICB2b2ljZV9tZWRpYV9jaGFubmVsXy0+QWRkU2VuZFN0cmVhbShzdHJlYW1fcGFy
YW1zKTsKLSAgYXVkaW9fcnRwX3NlbmRlcl8tPlNldFZvaWNlTWVkaWFDaGFubmVsKHZvaWNlX21l
ZGlhX2NoYW5uZWxfKTsKKyAgYXVkaW9fcnRwX3NlbmRlcl8tPlNldE1lZGlhQ2hhbm5lbCh2b2lj
ZV9tZWRpYV9jaGFubmVsXyk7CiAgIGF1ZGlvX3J0cF9zZW5kZXJfLT5TZXRTc3JjKDEpOwogCiAg
IHBhcmFtcyA9IGF1ZGlvX3J0cF9zZW5kZXJfLT5HZXRQYXJhbWV0ZXJzKCk7CkBAIC05MDMsNyAr
OTIxLDcgQEAgVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgVmlkZW9TZW5kZXJJbml0UGFy
YW1ldGVyc01vdmVkQWZ0ZXJOZWdvdGlhdGlvbikgewogICBjcmlja2V0OjpTdHJlYW1QYXJhbXMg
c3RyZWFtX3BhcmFtcyA9CiAgICAgICBjcmlja2V0OjpDcmVhdGVTaW1TdHJlYW1QYXJhbXMoImNu
YW1lIiwgc3NyY3MpOwogICB2aWRlb19tZWRpYV9jaGFubmVsXy0+QWRkU2VuZFN0cmVhbShzdHJl
YW1fcGFyYW1zKTsKLSAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldFZpZGVvTWVkaWFDaGFubmVsKHZp
ZGVvX21lZGlhX2NoYW5uZWxfKTsKKyAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldE1lZGlhQ2hhbm5l
bCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CiAgIHZpZGVvX3J0cF9zZW5kZXJfLT5TZXRTc3JjKGtW
aWRlb1NzcmNTaW11bGNhc3QpOwogCiAgIHBhcmFtcyA9IHZpZGVvX3J0cF9zZW5kZXJfLT5HZXRQ
YXJhbWV0ZXJzKCk7CkBAIC05MzgsNyArOTU2LDcgQEAgVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVy
VGVzdCwKICAgY3JpY2tldDo6U3RyZWFtUGFyYW1zIHN0cmVhbV9wYXJhbXMgPQogICAgICAgY3Jp
Y2tldDo6Q3JlYXRlU2ltU3RyZWFtUGFyYW1zKCJjbmFtZSIsIHNzcmNzKTsKICAgdmlkZW9fbWVk
aWFfY2hhbm5lbF8tPkFkZFNlbmRTdHJlYW0oc3RyZWFtX3BhcmFtcyk7Ci0gIHZpZGVvX3J0cF9z
ZW5kZXJfLT5TZXRWaWRlb01lZGlhQ2hhbm5lbCh2aWRlb19tZWRpYV9jaGFubmVsXyk7CisgIHZp
ZGVvX3J0cF9zZW5kZXJfLT5TZXRNZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbF8pOwog
ICB2aWRlb19ydHBfc2VuZGVyXy0+U2V0U3NyYyhrVmlkZW9Tc3JjU2ltdWxjYXN0KTsKIAogICBw
YXJhbXMgPSB2aWRlb19ydHBfc2VuZGVyXy0+R2V0UGFyYW1ldGVycygpOwpAQCAtMTI2Myw2ICsx
MjgxLDE1IEBAIFRFU1RfRihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIFZpZGVvUmVjZWl2ZXJDYW5T
ZXRQYXJhbWV0ZXJzKSB7CiAgIERlc3Ryb3lWaWRlb1J0cFJlY2VpdmVyKCk7CiB9CiAKK1RFU1Rf
RihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIFZpZGVvUmVjZWl2ZXJDYW5HZXRQYXJhbWV0ZXJzV2l0
aFNpbXVsY2FzdCkgeworICBDcmVhdGVWaWRlb1J0cFJlY2VpdmVyV2l0aFNpbXVsY2FzdCh7fSwg
Mik7CisKKyAgUnRwUGFyYW1ldGVycyBwYXJhbXMgPSB2aWRlb19ydHBfcmVjZWl2ZXJfLT5HZXRQ
YXJhbWV0ZXJzKCk7CisgIEVYUEVDVF9FUSgydSwgcGFyYW1zLmVuY29kaW5ncy5zaXplKCkpOwor
CisgIERlc3Ryb3lWaWRlb1J0cFJlY2VpdmVyKCk7Cit9CisKIC8vIFRlc3QgdGhhdCBtYWtlcyBz
dXJlIHRoYXQgYSB2aWRlbyB0cmFjayBjb250ZW50IGhpbnQgdHJhbnNsYXRlcyB0byB0aGUgcHJv
cGVyCiAvLyB2YWx1ZSBmb3Igc291cmNlcyB0aGF0IGFyZSBub3Qgc2NyZWVuY2FzdC4KIFRFU1Rf
RihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIFByb3BhZ2F0ZXNWaWRlb1RyYWNrQ29udGVudEhpbnQp
IHsKQEAgLTEzMzIsNyArMTM1OSw3IEBAIFRFU1RfRihSdHBTZW5kZXJSZWNlaXZlclRlc3QsCiAg
IHZpZGVvX3J0cF9zZW5kZXJfID0gbmV3IFZpZGVvUnRwU2VuZGVyKHdvcmtlcl90aHJlYWRfLCB2
aWRlb190cmFja18tPmlkKCkpOwogICBBU1NFUlRfVFJVRSh2aWRlb19ydHBfc2VuZGVyXy0+U2V0
VHJhY2sodmlkZW9fdHJhY2tfKSk7CiAgIHZpZGVvX3J0cF9zZW5kZXJfLT5zZXRfc3RyZWFtX2lk
cyh7bG9jYWxfc3RyZWFtXy0+aWQoKX0pOwotICB2aWRlb19ydHBfc2VuZGVyXy0+U2V0VmlkZW9N
ZWRpYUNoYW5uZWwodmlkZW9fbWVkaWFfY2hhbm5lbF8pOworICB2aWRlb19ydHBfc2VuZGVyXy0+
U2V0TWVkaWFDaGFubmVsKHZpZGVvX21lZGlhX2NoYW5uZWxfKTsKICAgdmlkZW9fdHJhY2tfLT5z
ZXRfZW5hYmxlZCh0cnVlKTsKIAogICAvLyBTZW5kZXIgaXMgbm90IHJlYWR5IHRvIHNlbmQgKG5v
IFNTUkMpIHNvIG5vIG9wdGlvbiBzaG91bGQgaGF2ZSBiZWVuIHNldC4KQEAgLTE0MjQsNiArMTQ1
MSwxOCBAQCBURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBBdWRpb1NlbmRlckNhblNldEZy
YW1lRW5jcnlwdG9yKSB7CiAgICAgICAgICAgICBhdWRpb19ydHBfc2VuZGVyXy0+R2V0RnJhbWVF
bmNyeXB0b3IoKS5nZXQoKSk7CiB9CiAKKy8vIFZhbGlkYXRlIHRoYXQgc2V0dGluZyBhIEZyYW1l
RW5jcnlwdG9yIGFmdGVyIHRoZSBzZW5kIHN0cmVhbSBpcyBzdG9wcGVkIGRvZXMKKy8vIG5vdGhp
bmcuCitURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBBdWRpb1NlbmRlckNhbm5vdFNldEZy
YW1lRW5jcnlwdG9yQWZ0ZXJTdG9wKSB7CisgIENyZWF0ZUF1ZGlvUnRwU2VuZGVyKCk7CisgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZUVuY3J5cHRvckludGVyZmFjZT4gZmFrZV9mcmFtZV9lbmNy
eXB0b3IoCisgICAgICBuZXcgRmFrZUZyYW1lRW5jcnlwdG9yKCkpOworICBFWFBFQ1RfRVEobnVs
bHB0ciwgYXVkaW9fcnRwX3NlbmRlcl8tPkdldEZyYW1lRW5jcnlwdG9yKCkpOworICBhdWRpb19y
dHBfc2VuZGVyXy0+U3RvcCgpOworICBhdWRpb19ydHBfc2VuZGVyXy0+U2V0RnJhbWVFbmNyeXB0
b3IoZmFrZV9mcmFtZV9lbmNyeXB0b3IpOworICAvLyBUT0RPKHdlYnJ0Yzo5OTI2KSAtIFZhbGlk
YXRlIG1lZGlhIGNoYW5uZWwgbm90IHNldCBvbmNlIGZha2VzIHVwZGF0ZWQuCit9CisKIC8vIFZh
bGlkYXRlIHRoYXQgdGhlIGRlZmF1bHQgRnJhbWVFbmNyeXB0b3Igc2V0dGluZyBpcyBudWxscHRy
LgogVEVTVF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgQXVkaW9SZWNlaXZlckNhblNldEZyYW1l
RGVjcnlwdG9yKSB7CiAgIENyZWF0ZUF1ZGlvUnRwUmVjZWl2ZXIoKTsKQEAgLTE0MzUsNCArMTQ3
NCw2MCBAQCBURVNUX0YoUnRwU2VuZGVyUmVjZWl2ZXJUZXN0LCBBdWRpb1JlY2VpdmVyQ2FuU2V0
RnJhbWVEZWNyeXB0b3IpIHsKICAgICAgICAgICAgIGF1ZGlvX3J0cF9yZWNlaXZlcl8tPkdldEZy
YW1lRGVjcnlwdG9yKCkuZ2V0KCkpOwogfQogCisvLyBWYWxpZGF0ZSB0aGF0IHRoZSBkZWZhdWx0
IEZyYW1lRW5jcnlwdG9yIHNldHRpbmcgaXMgbnVsbHB0ci4KK1RFU1RfRihSdHBTZW5kZXJSZWNl
aXZlclRlc3QsIEF1ZGlvUmVjZWl2ZXJDYW5ub3RTZXRGcmFtZURlY3J5cHRvckFmdGVyU3RvcCkg
eworICBDcmVhdGVBdWRpb1J0cFJlY2VpdmVyKCk7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFt
ZURlY3J5cHRvckludGVyZmFjZT4gZmFrZV9mcmFtZV9kZWNyeXB0b3IoCisgICAgICBuZXcgRmFr
ZUZyYW1lRGVjcnlwdG9yKCkpOworICBFWFBFQ1RfRVEobnVsbHB0ciwgYXVkaW9fcnRwX3JlY2Vp
dmVyXy0+R2V0RnJhbWVEZWNyeXB0b3IoKSk7CisgIGF1ZGlvX3J0cF9yZWNlaXZlcl8tPlN0b3Ao
KTsKKyAgYXVkaW9fcnRwX3JlY2VpdmVyXy0+U2V0RnJhbWVEZWNyeXB0b3IoZmFrZV9mcmFtZV9k
ZWNyeXB0b3IpOworICAvLyBUT0RPKHdlYnJ0Yzo5OTI2KSAtIFZhbGlkYXRlIG1lZGlhIGNoYW5u
ZWwgbm90IHNldCBvbmNlIGZha2VzIHVwZGF0ZWQuCit9CisKKy8vIFZhbGlkYXRlIHRoYXQgdGhl
IGRlZmF1bHQgRnJhbWVFbmNyeXB0b3Igc2V0dGluZyBpcyBudWxscHRyLgorVEVTVF9GKFJ0cFNl
bmRlclJlY2VpdmVyVGVzdCwgVmlkZW9TZW5kZXJDYW5TZXRGcmFtZUVuY3J5cHRvcikgeworICBD
cmVhdGVWaWRlb1J0cFNlbmRlcigpOworICBydGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0
b3JJbnRlcmZhY2U+IGZha2VfZnJhbWVfZW5jcnlwdG9yKAorICAgICAgbmV3IEZha2VGcmFtZUVu
Y3J5cHRvcigpKTsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIHZpZGVvX3J0cF9zZW5kZXJfLT5HZXRG
cmFtZUVuY3J5cHRvcigpKTsKKyAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldEZyYW1lRW5jcnlwdG9y
KGZha2VfZnJhbWVfZW5jcnlwdG9yKTsKKyAgRVhQRUNUX0VRKGZha2VfZnJhbWVfZW5jcnlwdG9y
LmdldCgpLAorICAgICAgICAgICAgdmlkZW9fcnRwX3NlbmRlcl8tPkdldEZyYW1lRW5jcnlwdG9y
KCkuZ2V0KCkpOworfQorCisvLyBWYWxpZGF0ZSB0aGF0IHNldHRpbmcgYSBGcmFtZUVuY3J5cHRv
ciBhZnRlciB0aGUgc2VuZCBzdHJlYW0gaXMgc3RvcHBlZCBkb2VzCisvLyBub3RoaW5nLgorVEVT
VF9GKFJ0cFNlbmRlclJlY2VpdmVyVGVzdCwgVmlkZW9TZW5kZXJDYW5ub3RTZXRGcmFtZUVuY3J5
cHRvckFmdGVyU3RvcCkgeworICBDcmVhdGVWaWRlb1J0cFNlbmRlcigpOworICBydGM6OnNjb3Bl
ZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+IGZha2VfZnJhbWVfZW5jcnlwdG9yKAor
ICAgICAgbmV3IEZha2VGcmFtZUVuY3J5cHRvcigpKTsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIHZp
ZGVvX3J0cF9zZW5kZXJfLT5HZXRGcmFtZUVuY3J5cHRvcigpKTsKKyAgdmlkZW9fcnRwX3NlbmRl
cl8tPlN0b3AoKTsKKyAgdmlkZW9fcnRwX3NlbmRlcl8tPlNldEZyYW1lRW5jcnlwdG9yKGZha2Vf
ZnJhbWVfZW5jcnlwdG9yKTsKKyAgLy8gVE9ETyh3ZWJydGM6OTkyNikgLSBWYWxpZGF0ZSBtZWRp
YSBjaGFubmVsIG5vdCBzZXQgb25jZSBmYWtlcyB1cGRhdGVkLgorfQorCisvLyBWYWxpZGF0ZSB0
aGF0IHRoZSBkZWZhdWx0IEZyYW1lRW5jcnlwdG9yIHNldHRpbmcgaXMgbnVsbHB0ci4KK1RFU1Rf
RihSdHBTZW5kZXJSZWNlaXZlclRlc3QsIFZpZGVvUmVjZWl2ZXJDYW5TZXRGcmFtZURlY3J5cHRv
cikgeworICBDcmVhdGVWaWRlb1J0cFJlY2VpdmVyKCk7CisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxG
cmFtZURlY3J5cHRvckludGVyZmFjZT4gZmFrZV9mcmFtZV9kZWNyeXB0b3IoCisgICAgICBuZXcg
RmFrZUZyYW1lRGVjcnlwdG9yKCkpOworICBFWFBFQ1RfRVEobnVsbHB0ciwgdmlkZW9fcnRwX3Jl
Y2VpdmVyXy0+R2V0RnJhbWVEZWNyeXB0b3IoKSk7CisgIHZpZGVvX3J0cF9yZWNlaXZlcl8tPlNl
dEZyYW1lRGVjcnlwdG9yKGZha2VfZnJhbWVfZGVjcnlwdG9yKTsKKyAgRVhQRUNUX0VRKGZha2Vf
ZnJhbWVfZGVjcnlwdG9yLmdldCgpLAorICAgICAgICAgICAgdmlkZW9fcnRwX3JlY2VpdmVyXy0+
R2V0RnJhbWVEZWNyeXB0b3IoKS5nZXQoKSk7Cit9CisKKy8vIFZhbGlkYXRlIHRoYXQgdGhlIGRl
ZmF1bHQgRnJhbWVFbmNyeXB0b3Igc2V0dGluZyBpcyBudWxscHRyLgorVEVTVF9GKFJ0cFNlbmRl
clJlY2VpdmVyVGVzdCwgVmlkZW9SZWNlaXZlckNhbm5vdFNldEZyYW1lRGVjcnlwdG9yQWZ0ZXJT
dG9wKSB7CisgIENyZWF0ZVZpZGVvUnRwUmVjZWl2ZXIoKTsKKyAgcnRjOjpzY29wZWRfcmVmcHRy
PEZyYW1lRGVjcnlwdG9ySW50ZXJmYWNlPiBmYWtlX2ZyYW1lX2RlY3J5cHRvcigKKyAgICAgIG5l
dyBGYWtlRnJhbWVEZWNyeXB0b3IoKSk7CisgIEVYUEVDVF9FUShudWxscHRyLCB2aWRlb19ydHBf
cmVjZWl2ZXJfLT5HZXRGcmFtZURlY3J5cHRvcigpKTsKKyAgdmlkZW9fcnRwX3JlY2VpdmVyXy0+
U3RvcCgpOworICB2aWRlb19ydHBfcmVjZWl2ZXJfLT5TZXRGcmFtZURlY3J5cHRvcihmYWtlX2Zy
YW1lX2RlY3J5cHRvcik7CisgIC8vIFRPRE8od2VicnRjOjk5MjYpIC0gVmFsaWRhdGUgbWVkaWEg
Y2hhbm5lbCBub3Qgc2V0IG9uY2UgZmFrZXMgdXBkYXRlZC4KK30KKwogfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZlci5jYwppbmRleCAwZmU4ZWE2ZjUwYTk5MzBm
M2U4YzhhYjMxNTE2OTZkM2JlZmQyNDAyLi44YjU2YjhiNGYxMGE1MjlmOWI5YTNiM2UwODE0MjE0
ZDE2NjRiNzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZlci5jYwpAQCAtMzgsNTIgKzM4LDQ1
IEBAIFJ0cFRyYW5zY2VpdmVyOjp+UnRwVHJhbnNjZWl2ZXIoKSB7CiAgIFN0b3AoKTsKIH0KIAot
dm9pZCBSdHBUcmFuc2NlaXZlcjo6U2V0Q2hhbm5lbChjcmlja2V0OjpCYXNlQ2hhbm5lbCogY2hh
bm5lbCkgewordm9pZCBSdHBUcmFuc2NlaXZlcjo6U2V0Q2hhbm5lbChjcmlja2V0OjpDaGFubmVs
SW50ZXJmYWNlKiBjaGFubmVsKSB7CisgIC8vIENhbm5vdCBzZXQgYSBub24tbnVsbCBjaGFubmVs
IG9uIGEgc3RvcHBlZCB0cmFuc2NlaXZlci4KKyAgaWYgKHN0b3BwZWRfICYmIGNoYW5uZWwpIHsK
KyAgICByZXR1cm47CisgIH0KKwogICBpZiAoY2hhbm5lbCkgewogICAgIFJUQ19EQ0hFQ0tfRVEo
bWVkaWFfdHlwZSgpLCBjaGFubmVsLT5tZWRpYV90eXBlKCkpOwogICB9CiAKICAgaWYgKGNoYW5u
ZWxfKSB7Ci0gICAgY2hhbm5lbF8tPlNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWQuZGlzY29ubmVj
dCh0aGlzKTsKKyAgICBjaGFubmVsXy0+U2lnbmFsRmlyc3RQYWNrZXRSZWNlaXZlZCgpLmRpc2Nv
bm5lY3QodGhpcyk7CiAgIH0KIAogICBjaGFubmVsXyA9IGNoYW5uZWw7CiAKICAgaWYgKGNoYW5u
ZWxfKSB7Ci0gICAgY2hhbm5lbF8tPlNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWQuY29ubmVjdCgK
KyAgICBjaGFubmVsXy0+U2lnbmFsRmlyc3RQYWNrZXRSZWNlaXZlZCgpLmNvbm5lY3QoCiAgICAg
ICAgIHRoaXMsICZSdHBUcmFuc2NlaXZlcjo6T25GaXJzdFBhY2tldFJlY2VpdmVkKTsKICAgfQog
CiAgIGZvciAoYXV0byBzZW5kZXIgOiBzZW5kZXJzXykgewotICAgIGlmIChtZWRpYV90eXBlKCkg
PT0gY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTykgewotICAgICAgYXV0byogdm9pY2VfY2hhbm5l
bCA9IHN0YXRpY19jYXN0PGNyaWNrZXQ6OlZvaWNlQ2hhbm5lbCo+KGNoYW5uZWwpOwotICAgICAg
c2VuZGVyLT5pbnRlcm5hbCgpLT5TZXRWb2ljZU1lZGlhQ2hhbm5lbCgKLSAgICAgICAgICB2b2lj
ZV9jaGFubmVsID8gdm9pY2VfY2hhbm5lbC0+bWVkaWFfY2hhbm5lbCgpIDogbnVsbHB0cik7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIGF1dG8qIHZpZGVvX2NoYW5uZWwgPSBzdGF0aWNfY2FzdDxjcmlj
a2V0OjpWaWRlb0NoYW5uZWwqPihjaGFubmVsKTsKLSAgICAgIHNlbmRlci0+aW50ZXJuYWwoKS0+
U2V0VmlkZW9NZWRpYUNoYW5uZWwoCi0gICAgICAgICAgdmlkZW9fY2hhbm5lbCA/IHZpZGVvX2No
YW5uZWwtPm1lZGlhX2NoYW5uZWwoKSA6IG51bGxwdHIpOwotICAgIH0KKyAgICBzZW5kZXItPmlu
dGVybmFsKCktPlNldE1lZGlhQ2hhbm5lbChjaGFubmVsXyA/IGNoYW5uZWxfLT5tZWRpYV9jaGFu
bmVsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IG51bGxwdHIpOwogICB9CiAKICAgZm9yIChhdXRvIHJlY2VpdmVyIDogcmVjZWl2ZXJzXykgewot
ICAgIGlmICghY2hhbm5lbCkgeworICAgIGlmICghY2hhbm5lbF8pIHsKICAgICAgIHJlY2VpdmVy
LT5pbnRlcm5hbCgpLT5TdG9wKCk7CiAgICAgfQotICAgIGlmIChtZWRpYV90eXBlKCkgPT0gY3Jp
Y2tldDo6TUVESUFfVFlQRV9BVURJTykgewotICAgICAgYXV0byogdm9pY2VfY2hhbm5lbCA9IHN0
YXRpY19jYXN0PGNyaWNrZXQ6OlZvaWNlQ2hhbm5lbCo+KGNoYW5uZWwpOwotICAgICAgcmVjZWl2
ZXItPmludGVybmFsKCktPlNldFZvaWNlTWVkaWFDaGFubmVsKAotICAgICAgICAgIHZvaWNlX2No
YW5uZWwgPyB2b2ljZV9jaGFubmVsLT5tZWRpYV9jaGFubmVsKCkgOiBudWxscHRyKTsKLSAgICB9
IGVsc2UgewotICAgICAgYXV0byogdmlkZW9fY2hhbm5lbCA9IHN0YXRpY19jYXN0PGNyaWNrZXQ6
OlZpZGVvQ2hhbm5lbCo+KGNoYW5uZWwpOwotICAgICAgcmVjZWl2ZXItPmludGVybmFsKCktPlNl
dFZpZGVvTWVkaWFDaGFubmVsKAotICAgICAgICAgIHZpZGVvX2NoYW5uZWwgPyB2aWRlb19jaGFu
bmVsLT5tZWRpYV9jaGFubmVsKCkgOiBudWxscHRyKTsKLSAgICB9CisKKyAgICByZWNlaXZlci0+
aW50ZXJuYWwoKS0+U2V0TWVkaWFDaGFubmVsKGNoYW5uZWxfID8gY2hhbm5lbF8tPm1lZGlhX2No
YW5uZWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiBudWxscHRyKTsKICAgfQogfQogCiB2b2lkIFJ0cFRyYW5zY2VpdmVyOjpBZGRTZW5kZXIo
CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPFJ0cFNlbmRlclByb3h5V2l0aEludGVybmFsPFJ0cFNl
bmRlckludGVybmFsPj4gc2VuZGVyKSB7CisgIFJUQ19EQ0hFQ0soIXN0b3BwZWRfKTsKICAgUlRD
X0RDSEVDSyghdW5pZmllZF9wbGFuXyk7CiAgIFJUQ19EQ0hFQ0soc2VuZGVyKTsKICAgUlRDX0RD
SEVDS19FUShtZWRpYV90eXBlKCksIHNlbmRlci0+bWVkaWFfdHlwZSgpKTsKQEAgLTEwOSw2ICsx
MDIsNyBAQCBib29sIFJ0cFRyYW5zY2VpdmVyOjpSZW1vdmVTZW5kZXIoUnRwU2VuZGVySW50ZXJm
YWNlKiBzZW5kZXIpIHsKIHZvaWQgUnRwVHJhbnNjZWl2ZXI6OkFkZFJlY2VpdmVyKAogICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjxSdHBSZWNlaXZlclByb3h5V2l0aEludGVybmFsPFJ0cFJlY2VpdmVy
SW50ZXJuYWw+PgogICAgICAgICByZWNlaXZlcikgeworICBSVENfRENIRUNLKCFzdG9wcGVkXyk7
CiAgIFJUQ19EQ0hFQ0soIXVuaWZpZWRfcGxhbl8pOwogICBSVENfRENIRUNLKHJlY2VpdmVyKTsK
ICAgUlRDX0RDSEVDS19FUShtZWRpYV90eXBlKCksIHJlY2VpdmVyLT5tZWRpYV90eXBlKCkpOwpA
QCAtMTUyLDcgKzE0Niw3IEBAIGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBSdHBUcmFuc2Nl
aXZlcjo6bWlkKCkgY29uc3QgewogICByZXR1cm4gbWlkXzsKIH0KIAotdm9pZCBSdHBUcmFuc2Nl
aXZlcjo6T25GaXJzdFBhY2tldFJlY2VpdmVkKGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVs
KSB7Cit2b2lkIFJ0cFRyYW5zY2VpdmVyOjpPbkZpcnN0UGFja2V0UmVjZWl2ZWQoY3JpY2tldDo6
Q2hhbm5lbEludGVyZmFjZSopIHsKICAgZm9yIChhdXRvIHJlY2VpdmVyIDogcmVjZWl2ZXJzXykg
ewogICAgIHJlY2VpdmVyLT5pbnRlcm5hbCgpLT5Ob3RpZnlGaXJzdFBhY2tldFJlY2VpdmVkKCk7
CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3J0cHRyYW5zY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZlci5oCmluZGV4IDNlMGQ0MzM3ODI2MTE1NzZjYTky
ZTUxNmU0ZTZiNDk1NDNhZTI5NTAuLjA3ZGIxOTZlZGQ5YWJkY2E1M2NjOGVlZTMzYzYyYTJiYjRl
YTY0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3J0cHRyYW5zY2VpdmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNjZWl2ZXIuaApAQCAtNzAsMTEgKzcwLDExIEBAIGNs
YXNzIFJ0cFRyYW5zY2VpdmVyIGZpbmFsCiAKICAgLy8gUmV0dXJucyB0aGUgVm9pY2UvVmlkZW9D
aGFubmVsIHNldCBmb3IgdGhpcyB0cmFuc2NlaXZlci4gTWF5IGJlIG51bGwgaWYKICAgLy8gdGhl
IHRyYW5zY2VpdmVyIGlzIG5vdCBpbiB0aGUgY3VycmVudGx5IHNldCBsb2NhbC9yZW1vdGUgZGVz
Y3JpcHRpb24uCi0gIGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsKCkgY29uc3QgeyByZXR1
cm4gY2hhbm5lbF87IH0KKyAgY3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSogY2hhbm5lbCgpIGNv
bnN0IHsgcmV0dXJuIGNoYW5uZWxfOyB9CiAKICAgLy8gU2V0cyB0aGUgVm9pY2UvVmlkZW9DaGFu
bmVsLiBUaGUgY2FsbGVyIG11c3QgcGFzcyBpbiB0aGUgY29ycmVjdCBjaGFubmVsCiAgIC8vIGlt
cGxlbWVudGF0aW9uIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZSB0cmFuc2NlaXZlci4KLSAgdm9p
ZCBTZXRDaGFubmVsKGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsKTsKKyAgdm9pZCBTZXRD
aGFubmVsKGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UqIGNoYW5uZWwpOwogCiAgIC8vIEFkZHMg
YW4gUnRwU2VuZGVyIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlIHRvIGJlIG93bmVkIGJ5IHRoaXMg
dHJhbnNjZWl2ZXIuCiAgIC8vIE11c3Qgbm90IGJlIG51bGwuCkBAIC0xNzcsNyArMTc3LDcgQEAg
Y2xhc3MgUnRwVHJhbnNjZWl2ZXIgZmluYWwKICAgdm9pZCBTZXRDb2RlY1ByZWZlcmVuY2VzKHJ0
Yzo6QXJyYXlWaWV3PFJ0cENvZGVjQ2FwYWJpbGl0eT4gY29kZWNzKSBvdmVycmlkZTsKIAogIHBy
aXZhdGU6Ci0gIHZvaWQgT25GaXJzdFBhY2tldFJlY2VpdmVkKGNyaWNrZXQ6OkJhc2VDaGFubmVs
KiBjaGFubmVsKTsKKyAgdm9pZCBPbkZpcnN0UGFja2V0UmVjZWl2ZWQoY3JpY2tldDo6Q2hhbm5l
bEludGVyZmFjZSogY2hhbm5lbCk7CiAKICAgY29uc3QgYm9vbCB1bmlmaWVkX3BsYW5fOwogICBj
b25zdCBjcmlja2V0OjpNZWRpYVR5cGUgbWVkaWFfdHlwZV87CkBAIC0xOTYsNyArMTk2LDcgQEAg
Y2xhc3MgUnRwVHJhbnNjZWl2ZXIgZmluYWwKICAgYm9vbCBjcmVhdGVkX2J5X2FkZHRyYWNrXyA9
IGZhbHNlOwogICBib29sIGhhc19ldmVyX2JlZW5fdXNlZF90b19zZW5kXyA9IGZhbHNlOwogCi0g
IGNyaWNrZXQ6OkJhc2VDaGFubmVsKiBjaGFubmVsXyA9IG51bGxwdHI7CisgIGNyaWNrZXQ6OkNo
YW5uZWxJbnRlcmZhY2UqIGNoYW5uZWxfID0gbnVsbHB0cjsKIH07CiAKIEJFR0lOX1NJR05BTElO
R19QUk9YWV9NQVAoUnRwVHJhbnNjZWl2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZlcl91bml0dGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zY2Vp
dmVyX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1N2QyMTIzZDE1MmZiMmJmMzM1YTg5Njk2NWU3
ZmU2MTA1MmY1ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc2NlaXZlcl91bml0dGVzdC5jYwpAQCAtMCwwICsx
LDcxIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3Jz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisvLyBUaGlzIGZpbGUgY29udGFpbnMgdGVzdHMg
Zm9yIHxSdHBUcmFuc2NlaXZlcnwuCisKKyNpbmNsdWRlICJwYy9ydHB0cmFuc2NlaXZlci5oIgor
I2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCisjaW5jbHVkZSAidGVzdC9nbW9jay5oIgorI2lu
Y2x1ZGUgInRlc3QvbW9ja19jaGFubmVsaW50ZXJmYWNlLmgiCisKK3VzaW5nIDo6dGVzdGluZzo6
UmV0dXJuOwordXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm5SZWY7CisKK25hbWVzcGFjZSB3ZWJydGMg
eworCisvLyBDaGVja3MgdGhhdCBhIGNoYW5uZWwgY2Fubm90IGJlIHNldCBvbiBhIHN0b3BwZWQg
fFJ0cFRyYW5zY2VpdmVyfC4KK1RFU1QoUnRwVHJhbnNjZWl2ZXJUZXN0LCBDYW5ub3RTZXRDaGFu
bmVsT25TdG9wcGVkVHJhbnNjZWl2ZXIpIHsKKyAgUnRwVHJhbnNjZWl2ZXIgdHJhbnNjZWl2ZXIo
Y3JpY2tldDo6TWVkaWFUeXBlOjpNRURJQV9UWVBFX0FVRElPKTsKKyAgY3JpY2tldDo6TW9ja0No
YW5uZWxJbnRlcmZhY2UgY2hhbm5lbDE7CisgIHNpZ3Nsb3Q6OnNpZ25hbDE8Y3JpY2tldDo6Q2hh
bm5lbEludGVyZmFjZSo+IHNpZ25hbDsKKyAgRVhQRUNUX0NBTEwoY2hhbm5lbDEsIG1lZGlhX3R5
cGUoKSkKKyAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oY3JpY2tldDo6TWVkaWFUeXBlOjpN
RURJQV9UWVBFX0FVRElPKSk7CisgIEVYUEVDVF9DQUxMKGNoYW5uZWwxLCBTaWduYWxGaXJzdFBh
Y2tldFJlY2VpdmVkKCkpCisgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuUmVmKHNpZ25hbCkp
OworCisgIHRyYW5zY2VpdmVyLlNldENoYW5uZWwoJmNoYW5uZWwxKTsKKyAgRVhQRUNUX0VRKCZj
aGFubmVsMSwgdHJhbnNjZWl2ZXIuY2hhbm5lbCgpKTsKKworICAvLyBTdG9wIHRoZSB0cmFuc2Nl
aXZlci4KKyAgdHJhbnNjZWl2ZXIuU3RvcCgpOworICBFWFBFQ1RfRVEoJmNoYW5uZWwxLCB0cmFu
c2NlaXZlci5jaGFubmVsKCkpOworCisgIGNyaWNrZXQ6Ok1vY2tDaGFubmVsSW50ZXJmYWNlIGNo
YW5uZWwyOworICBFWFBFQ1RfQ0FMTChjaGFubmVsMiwgbWVkaWFfdHlwZSgpKQorICAgICAgLldp
bGxSZXBlYXRlZGx5KFJldHVybihjcmlja2V0OjpNZWRpYVR5cGU6Ok1FRElBX1RZUEVfQVVESU8p
KTsKKworICAvLyBDaGFubmVsIGNhbiBubyBsb25nZXIgYmUgc2V0LCBzbyB0aGlzIGNhbGwgc2hv
dWxkIGJlIGEgbm8tb3AuCisgIHRyYW5zY2VpdmVyLlNldENoYW5uZWwoJmNoYW5uZWwyKTsKKyAg
RVhQRUNUX0VRKCZjaGFubmVsMSwgdHJhbnNjZWl2ZXIuY2hhbm5lbCgpKTsKK30KKworLy8gQ2hl
Y2tzIHRoYXQgYSBjaGFubmVsIGNhbiBiZSB1bnNldCBvbiBhIHN0b3BwZWQgfFJ0cFRyYW5zY2Vp
dmVyfAorVEVTVChSdHBUcmFuc2NlaXZlclRlc3QsIENhblVuc2V0Q2hhbm5lbE9uU3RvcHBlZFRy
YW5zY2VpdmVyKSB7CisgIFJ0cFRyYW5zY2VpdmVyIHRyYW5zY2VpdmVyKGNyaWNrZXQ6Ok1lZGlh
VHlwZTo6TUVESUFfVFlQRV9WSURFTyk7CisgIGNyaWNrZXQ6Ok1vY2tDaGFubmVsSW50ZXJmYWNl
IGNoYW5uZWw7CisgIHNpZ3Nsb3Q6OnNpZ25hbDE8Y3JpY2tldDo6Q2hhbm5lbEludGVyZmFjZSo+
IHNpZ25hbDsKKyAgRVhQRUNUX0NBTEwoY2hhbm5lbCwgbWVkaWFfdHlwZSgpKQorICAgICAgLldp
bGxSZXBlYXRlZGx5KFJldHVybihjcmlja2V0OjpNZWRpYVR5cGU6Ok1FRElBX1RZUEVfVklERU8p
KTsKKyAgRVhQRUNUX0NBTEwoY2hhbm5lbCwgU2lnbmFsRmlyc3RQYWNrZXRSZWNlaXZlZCgpKQor
ICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVyblJlZihzaWduYWwpKTsKKworICB0cmFuc2NlaXZl
ci5TZXRDaGFubmVsKCZjaGFubmVsKTsKKyAgRVhQRUNUX0VRKCZjaGFubmVsLCB0cmFuc2NlaXZl
ci5jaGFubmVsKCkpOworCisgIC8vIFN0b3AgdGhlIHRyYW5zY2VpdmVyLgorICB0cmFuc2NlaXZl
ci5TdG9wKCk7CisgIEVYUEVDVF9FUSgmY2hhbm5lbCwgdHJhbnNjZWl2ZXIuY2hhbm5lbCgpKTsK
KworICAvLyBTZXQgdGhlIGNoYW5uZWwgdG8gfG51bGxwdHJ8LgorICB0cmFuc2NlaXZlci5TZXRD
aGFubmVsKG51bGxwdHIpOworICBFWFBFQ1RfRVEobnVsbHB0ciwgdHJhbnNjZWl2ZXIuY2hhbm5l
bCgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0LmNj
CmluZGV4IDllOTk0ZTliOTgwNGE1MWFjNTZiNjc5N2E1NjdkMGFmNzEzNmVjZDAuLjRhNTczMDE2
ZjIxZTg3YmNjOGIyMWUwZmE3MWVlYjg0NjQ4MWQ3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zcG9ydC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc3BvcnQu
Y2MKQEAgLTE4Nyw3ICsxODcsNyBAQCBSdHBUcmFuc3BvcnRQYXJhbWV0ZXJzIFJ0cFRyYW5zcG9y
dDo6R2V0UGFyYW1ldGVycygpIGNvbnN0IHsKIH0KIAogdm9pZCBSdHBUcmFuc3BvcnQ6OkRlbXV4
UGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHRpbWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIHdlYnJ0Yzo6
UnRwUGFja2V0UmVjZWl2ZWQgcGFyc2VkX3BhY2tldCgmaGVhZGVyX2V4dGVuc2lvbl9tYXBfKTsK
ICAgaWYgKCFwYXJzZWRfcGFja2V0LlBhcnNlKHN0ZDo6bW92ZSgqcGFja2V0KSkpIHsKICAgICBS
VENfTE9HKExTX0VSUk9SKQpAQCAtMTk1LDggKzE5NSw4IEBAIHZvaWQgUnRwVHJhbnNwb3J0OjpE
ZW11eFBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBwYWNrZXQsCiAgICAgcmV0dXJuOwog
ICB9CiAKLSAgaWYgKHRpbWUudGltZXN0YW1wICE9IC0xKSB7Ci0gICAgcGFyc2VkX3BhY2tldC5z
ZXRfYXJyaXZhbF90aW1lX21zKCh0aW1lLnRpbWVzdGFtcCArIDUwMCkgLyAxMDAwKTsKKyAgaWYg
KHBhY2tldF90aW1lX3VzICE9IC0xKSB7CisgICAgcGFyc2VkX3BhY2tldC5zZXRfYXJyaXZhbF90
aW1lX21zKChwYWNrZXRfdGltZV91cyArIDUwMCkgLyAxMDAwKTsKICAgfQogICBydHBfZGVtdXhl
cl8uT25SdHBQYWNrZXQocGFyc2VkX3BhY2tldCk7CiB9CkBAIC0yMzYsMTkgKzIzNiwxOSBAQCB2
b2lkIFJ0cFRyYW5zcG9ydDo6T25TZW50UGFja2V0KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJu
YWwqIHBhY2tldF90cmFuc3BvcnQsCiB9CiAKIHZvaWQgUnRwVHJhbnNwb3J0OjpPblJ0cFBhY2tl
dFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3Rp
bWUpIHsKLSAgRGVtdXhQYWNrZXQocGFja2V0LCBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CisgIERl
bXV4UGFja2V0KHBhY2tldCwgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIFJ0cFRyYW5zcG9y
dDo6T25SdGNwUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0
VGltZSYgcGFja2V0X3RpbWUpIHsKLSAgU2lnbmFsUnRjcFBhY2tldFJlY2VpdmVkKHBhY2tldCwg
cGFja2V0X3RpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDY0X3QgcGFja2V0X3RpbWVfdXMpIHsKKyAgU2lnbmFsUnRjcFBhY2tldFJlY2VpdmVkKHBhY2tl
dCwgcGFja2V0X3RpbWVfdXMpOwogfQogCiB2b2lkIFJ0cFRyYW5zcG9ydDo6T25SZWFkUGFja2V0
KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBmbGFncykgewogICBUUkFDRV9FVkVOVDAoIndlYnJ0YyIs
ICJSdHBUcmFuc3BvcnQ6Ok9uUmVhZFBhY2tldCIpOwogCkBAIC0yNzIsOSArMjcyLDkgQEAgdm9p
ZCBSdHBUcmFuc3BvcnQ6Ok9uUmVhZFBhY2tldChydGM6OlBhY2tldFRyYW5zcG9ydEludGVybmFs
KiB0cmFuc3BvcnQsCiAgIH0KIAogICBpZiAocnRjcCkgewotICAgIE9uUnRjcFBhY2tldFJlY2Vp
dmVkKCZwYWNrZXQsIHBhY2tldF90aW1lKTsKKyAgICBPblJ0Y3BQYWNrZXRSZWNlaXZlZCgmcGFj
a2V0LCBwYWNrZXRfdGltZV91cyk7CiAgIH0gZWxzZSB7Ci0gICAgT25SdHBQYWNrZXRSZWNlaXZl
ZCgmcGFja2V0LCBwYWNrZXRfdGltZSk7CisgICAgT25SdHBQYWNrZXRSZWNlaXZlZCgmcGFja2V0
LCBwYWNrZXRfdGltZV91cyk7CiAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc3BvcnQuaAppbmRleCA3
OTNhYzkwMWFhNWM4Y2I0OGNmMmNmMzNlNWFlYjliZDQ2YjlkMDk4Li5kYWI1OTAzMTcxNTU4ZWY3
NzkzY2Y5Y2ZlOGY5YjQ0ZDQyNzkzY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHB0cmFuc3BvcnQuaApAQCAtODcs
NyArODcsNyBAQCBjbGFzcyBSdHBUcmFuc3BvcnQgOiBwdWJsaWMgUnRwVHJhbnNwb3J0SW50ZXJu
YWwgewogICBSdHBUcmFuc3BvcnRBZGFwdGVyKiBHZXRJbnRlcm5hbCgpIG92ZXJyaWRlOwogCiAg
IC8vIFRoZXNlIG1ldGhvZHMgd2lsbCBiZSB1c2VkIGluIHRoZSBzdWJjbGFzc2VzLgotICB2b2lk
IERlbXV4UGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwgY29uc3QgcnRjOjpQ
YWNrZXRUaW1lJiB0aW1lKTsKKyAgdm9pZCBEZW11eFBhY2tldChydGM6OkNvcHlPbldyaXRlQnVm
ZmVyKiBwYWNrZXQsIGludDY0X3QgcGFja2V0X3RpbWVfdXMpOwogCiAgIGJvb2wgU2VuZFBhY2tl
dChib29sIHJ0Y3AsCiAgICAgICAgICAgICAgICAgICBydGM6OkNvcHlPbldyaXRlQnVmZmVyKiBw
YWNrZXQsCkBAIC05OCw5ICs5OCw5IEBAIGNsYXNzIFJ0cFRyYW5zcG9ydCA6IHB1YmxpYyBSdHBU
cmFuc3BvcnRJbnRlcm5hbCB7CiAgIHZpcnR1YWwgdm9pZCBPbk5ldHdvcmtSb3V0ZUNoYW5nZWQo
CiAgICAgICBhYnNsOjpvcHRpb25hbDxydGM6Ok5ldHdvcmtSb3V0ZT4gbmV0d29ya19yb3V0ZSk7
CiAgIHZpcnR1YWwgdm9pZCBPblJ0cFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZm
ZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRj
OjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpOwogICB2aXJ0dWFsIHZvaWQgT25SdGNwUGFj
a2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGlt
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90
aW1lX3VzKTsKICAgLy8gT3ZlcnJpZGRlbiBieSBTcnRwVHJhbnNwb3J0IGFuZCBEdGxzU3J0cFRy
YW5zcG9ydC4KICAgdmlydHVhbCB2b2lkIE9uV3JpdGFibGVTdGF0ZShydGM6OlBhY2tldFRyYW5z
cG9ydEludGVybmFsKiBwYWNrZXRfdHJhbnNwb3J0KTsKIApAQCAtMTExLDcgKzExMSw3IEBAIGNs
YXNzIFJ0cFRyYW5zcG9ydCA6IHB1YmxpYyBSdHBUcmFuc3BvcnRJbnRlcm5hbCB7CiAgIHZvaWQg
T25SZWFkUGFja2V0KHJ0Yzo6UGFja2V0VHJhbnNwb3J0SW50ZXJuYWwqIHRyYW5zcG9ydCwKICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBw
YWNrZXRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3Rp
bWVfdXMsCiAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7CiAKICAgLy8gVXBkYXRlcyAi
cmVhZHkgdG8gc2VuZCIgZm9yIGFuIGluZGl2aWR1YWwgY2hhbm5lbCBhbmQgZmlyZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRy
YW5zcG9ydGludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9ydHB0cmFuc3BvcnRpbnRlcm5hbC5oCmluZGV4IGNhMDU2ODA3MTA4NmNlNTFhZDE2
ODBiNjJjZjI5ZTdlYzBlNTllZGQuLmU2MzM4MzY2YzA2MzdlY2YwNmQzYjI4ZmUzMWUxOWU2NTc3
NDVkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3J0cHRyYW5zcG9ydGludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0aW50ZXJuYWwuaApAQCAtMjQsNyAr
MjQsNiBAQAogbmFtZXNwYWNlIHJ0YyB7CiBjbGFzcyBDb3B5T25Xcml0ZUJ1ZmZlcjsKIHN0cnVj
dCBQYWNrZXRPcHRpb25zOwotc3RydWN0IFBhY2tldFRpbWU7CiB9ICAvLyBuYW1lc3BhY2UgcnRj
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewpAQCAtNTksOCArNTgsNyBAQCBjbGFzcyBSdHBUcmFuc3Bv
cnRJbnRlcm5hbCA6IHB1YmxpYyBTcnRwVHJhbnNwb3J0SW50ZXJmYWNlLAogICAvLyBDYWxsZWQg
d2hlbmV2ZXIgYW4gUlRDUCBwYWNrZXQgaXMgcmVjZWl2ZWQuIFRoZXJlIGlzIG5vIGVxdWl2YWxl
bnQgc2lnbmFsCiAgIC8vIGZvciBSVFAgcGFja2V0cyBiZWNhdXNlIHRoZXkgd291bGQgYmUgZm9y
d2FyZGVkIHRvIHRoZSBCYXNlQ2hhbm5lbCB0aHJvdWdoCiAgIC8vIHRoZSBSdHBEZW11eGVyIGNh
bGxiYWNrLgotICBzaWdzbG90OjpzaWduYWwyPHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqLCBjb25z
dCBydGM6OlBhY2tldFRpbWUmPgotICAgICAgU2lnbmFsUnRjcFBhY2tldFJlY2VpdmVkOworICBz
aWdzbG90OjpzaWduYWwyPHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqLCBpbnQ2NF90PiBTaWduYWxS
dGNwUGFja2V0UmVjZWl2ZWQ7CiAKICAgLy8gQ2FsbGVkIHdoZW5ldmVyIHRoZSBuZXR3b3JrIHJv
dXRlIG9mIHRoZSBQMlAgbGF5ZXIgdHJhbnNwb3J0IGNoYW5nZXMuCiAgIC8vIFRoZSBhcmd1bWVu
dCBpcyBhbiBvcHRpb25hbCBuZXR3b3JrIHJvdXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0dGVzdHV0aWwuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHRyYW5zcG9y
dHRlc3R1dGlsLmgKaW5kZXggZWIzMzc3MzBkMTA3ZjhjOGQ4MWE4ZDI4YTJhYTA0ZjMyZTYwMjI1
NC4uZjJjMzUxMjJhYWY0NGEzNDcyNjdmYWQzN2Y5ZjIyNWMyNDQ3NjM4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwdHJhbnNwb3J0
dGVzdHV0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9ydHB0cmFuc3BvcnR0ZXN0dXRpbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFRyYW5z
cG9ydE9ic2VydmVyIDogcHVibGljIFJ0cFBhY2tldFNpbmtJbnRlcmZhY2UsCiAgIH0KIAogICB2
b2lkIE9uUnRjcFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIqIHBhY2tldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGlt
ZV91cykgewogICAgIHJ0Y3BfY291bnRfKys7CiAgICAgbGFzdF9yZWN2X3J0Y3BfcGFja2V0XyA9
ICpwYWNrZXQ7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlvbi5jYwppbmRleCBm
M2U4OWI0N2ZhZGI2NmMwMDAwMTFkYzg4OGYyY2MzNjM0Yjk5NTdkLi4zYTliMThlZTY5MTliMzdm
ZjU5NDBlZTYwNjRlY2NiN2I0NmE4ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb24uY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0
aW9uLmNjCkBAIC04NCwyMSArODQsNiBAQCBib29sIENvbnRlbnRHcm91cDo6UmVtb3ZlQ29udGVu
dE5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSkgewogfQogCiBTZXNzaW9uRGVz
Y3JpcHRpb246OlNlc3Npb25EZXNjcmlwdGlvbigpID0gZGVmYXVsdDsKLQotU2Vzc2lvbkRlc2Ny
aXB0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb24oY29uc3QgQ29udGVudEluZm9zJiBjb250ZW50cykK
LSAgICA6IGNvbnRlbnRzXyhjb250ZW50cykge30KLQotU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZXNz
aW9uRGVzY3JpcHRpb24oY29uc3QgQ29udGVudEluZm9zJiBjb250ZW50cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnRlbnRHcm91cHMmIGdyb3VwcykK
LSAgICA6IGNvbnRlbnRzXyhjb250ZW50cyksIGNvbnRlbnRfZ3JvdXBzXyhncm91cHMpIHt9Ci0K
LVNlc3Npb25EZXNjcmlwdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uKGNvbnN0IENvbnRlbnRJbmZv
cyYgY29udGVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUcmFuc3BvcnRJbmZvcyYgdHJhbnNwb3J0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvbnRlbnRHcm91cHMmIGdyb3VwcykKLSAgICA6IGNvbnRlbnRz
Xyhjb250ZW50cyksCi0gICAgICB0cmFuc3BvcnRfaW5mb3NfKHRyYW5zcG9ydHMpLAotICAgICAg
Y29udGVudF9ncm91cHNfKGdyb3Vwcykge30KLQogU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZXNzaW9u
RGVzY3JpcHRpb24oY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uJikgPSBkZWZhdWx0OwogCiBTZXNz
aW9uRGVzY3JpcHRpb246On5TZXNzaW9uRGVzY3JpcHRpb24oKSB7CkBAIC0xNjIsNyArMTQ3LDcg
QEAgdm9pZCBTZXNzaW9uRGVzY3JpcHRpb246OkFkZENvbnRlbnQoY29uc3Qgc3RkOjpzdHJpbmcm
IG5hbWUsCiAgIENvbnRlbnRJbmZvIGNvbnRlbnQodHlwZSk7CiAgIGNvbnRlbnQubmFtZSA9IG5h
bWU7CiAgIGNvbnRlbnQuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKLSAgY29udGVudHNfLnB1
c2hfYmFjayhzdGQ6Om1vdmUoY29udGVudCkpOworICBBZGRDb250ZW50KCZjb250ZW50KTsKIH0K
IAogdm9pZCBTZXNzaW9uRGVzY3JpcHRpb246OkFkZENvbnRlbnQoY29uc3Qgc3RkOjpzdHJpbmcm
IG5hbWUsCkBAIC0xNzMsNyArMTU4LDcgQEAgdm9pZCBTZXNzaW9uRGVzY3JpcHRpb246OkFkZENv
bnRlbnQoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCiAgIGNvbnRlbnQubmFtZSA9IG5hbWU7CiAg
IGNvbnRlbnQucmVqZWN0ZWQgPSByZWplY3RlZDsKICAgY29udGVudC5kZXNjcmlwdGlvbiA9IGRl
c2NyaXB0aW9uOwotICBjb250ZW50c18ucHVzaF9iYWNrKHN0ZDo6bW92ZShjb250ZW50KSk7Cisg
IEFkZENvbnRlbnQoJmNvbnRlbnQpOwogfQogCiB2b2lkIFNlc3Npb25EZXNjcmlwdGlvbjo6QWRk
Q29udGVudChjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKQEAgLTE4Niw3ICsxNzEsMTYgQEAgdm9p
ZCBTZXNzaW9uRGVzY3JpcHRpb246OkFkZENvbnRlbnQoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUs
CiAgIGNvbnRlbnQucmVqZWN0ZWQgPSByZWplY3RlZDsKICAgY29udGVudC5idW5kbGVfb25seSA9
IGJ1bmRsZV9vbmx5OwogICBjb250ZW50LmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247Ci0gIGNv
bnRlbnRzXy5wdXNoX2JhY2soc3RkOjptb3ZlKGNvbnRlbnQpKTsKKyAgQWRkQ29udGVudCgmY29u
dGVudCk7Cit9CisKK3ZvaWQgU2Vzc2lvbkRlc2NyaXB0aW9uOjpBZGRDb250ZW50KENvbnRlbnRJ
bmZvKiBjb250ZW50KSB7CisgIGlmIChleHRtYXBfYWxsb3dfbWl4ZWQoKSkgeworICAgIC8vIE1p
eGVkIHN1cHBvcnQgb24gc2Vzc2lvbiBsZXZlbCBvdmVycmlkZXMgc2V0dGluZyBvbiBtZWRpYSBs
ZXZlbC4KKyAgICBjb250ZW50LT5kZXNjcmlwdGlvbi0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9l
bnVtKAorICAgICAgICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a1Nlc3Npb24pOworICB9Cisg
IGNvbnRlbnRzXy5wdXNoX2JhY2soc3RkOjptb3ZlKCpjb250ZW50KSk7CiB9CiAKIGJvb2wgU2Vz
c2lvbkRlc2NyaXB0aW9uOjpSZW1vdmVDb250ZW50QnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBu
YW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlvbi5oCmluZGV4IDY0NWViYzU0Zjg2
ZTU3OTc0NjQwYWY3YmQ1OWM4NmNlYTA3NzYyNzIuLjM4MjkxNDg0Y2Q4Y2I0ZTg4ODg3MzdhNzhk
NmIwZjgyMTU0ZTgwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlvbi5oCkBAIC0x
ODMsNiArMTgzLDIyIEBAIGNsYXNzIE1lZGlhQ29udGVudERlc2NyaXB0aW9uIHsKICAgICByZXR1
cm4gY29ubmVjdGlvbl9hZGRyZXNzXzsKICAgfQogCisgIC8vIERldGVybWluZXMgaWYgaXQncyBh
bGxvd2VkIHRvIG1peCBvbmUtIGFuZCB0d28tYnl0ZSBydHAgaGVhZGVyIGV4dGVuc2lvbnMKKyAg
Ly8gd2l0aGluIHRoZSBzYW1lIHJ0cCBzdHJlYW0uCisgIGVudW0gRXh0bWFwQWxsb3dNaXhlZCB7
IGtObywga1Nlc3Npb24sIGtNZWRpYSB9OworICB2b2lkIHNldF9leHRtYXBfYWxsb3dfbWl4ZWRf
ZW51bShFeHRtYXBBbGxvd01peGVkIG5ld19leHRtYXBfYWxsb3dfbWl4ZWQpIHsKKyAgICBpZiAo
bmV3X2V4dG1hcF9hbGxvd19taXhlZCA9PSBrTWVkaWEgJiYKKyAgICAgICAgZXh0bWFwX2FsbG93
X21peGVkX2VudW1fID09IGtTZXNzaW9uKSB7CisgICAgICAvLyBEbyBub3QgZG93bmdyYWRlIGZy
b20gc2Vzc2lvbiBsZXZlbCB0byBtZWRpYSBsZXZlbC4KKyAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgZXh0bWFwX2FsbG93X21peGVkX2VudW1fID0gbmV3X2V4dG1hcF9hbGxvd19taXhlZDsKKyAg
fQorICBFeHRtYXBBbGxvd01peGVkIGV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkgY29uc3Qgewor
ICAgIHJldHVybiBleHRtYXBfYWxsb3dfbWl4ZWRfZW51bV87CisgIH0KKyAgYm9vbCBleHRtYXBf
YWxsb3dfbWl4ZWQoKSBjb25zdCB7IHJldHVybiBleHRtYXBfYWxsb3dfbWl4ZWRfZW51bV8gIT0g
a05vOyB9CisKICBwcm90ZWN0ZWQ6CiAgIGJvb2wgcnRjcF9tdXhfID0gZmFsc2U7CiAgIGJvb2wg
cnRjcF9yZWR1Y2VkX3NpemVfID0gZmFsc2U7CkBAIC0xOTYsNiArMjEyLDEwIEBAIGNsYXNzIE1l
ZGlhQ29udGVudERlc2NyaXB0aW9uIHsKICAgd2VicnRjOjpSdHBUcmFuc2NlaXZlckRpcmVjdGlv
biBkaXJlY3Rpb25fID0KICAgICAgIHdlYnJ0Yzo6UnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246OmtT
ZW5kUmVjdjsKICAgcnRjOjpTb2NrZXRBZGRyZXNzIGNvbm5lY3Rpb25fYWRkcmVzc187CisgIC8v
IE1peGVkIG9uZS0gYW5kIHR3by1ieXRlIGhlYWRlciBub3QgaW5jbHVkZWQgaW4gb2ZmZXIgb24g
bWVkaWEgbGV2ZWwgb3IKKyAgLy8gc2Vzc2lvbiBsZXZlbCwgYnV0IHdlIHdpbGwgcmVzcG9uZCB0
aGF0IHdlIHN1cHBvcnQgaXQuIFRoZSBwbGFuIGlzIHRvIGFkZAorICAvLyBpdCB0byBvdXIgb2Zm
ZXIgb24gc2Vzc2lvbiBsZXZlbC4gU2VlIHRvZG8gaW4gU2Vzc2lvbkRlc2NyaXB0aW9uLgorICBF
eHRtYXBBbGxvd01peGVkIGV4dG1hcF9hbGxvd19taXhlZF9lbnVtXyA9IGtObzsKIH07CiAKIC8v
IFRPRE8oYnVncy53ZWJydGMub3JnLzg2MjApOiBSZW1vdmUgdGhpcyBhbGlhcyBvbmNlIGRvd25z
dHJlYW0gcHJvamVjdHMgaGF2ZQpAQCAtMzc4LDExICszOTgsNiBAQCBlbnVtIE1zaWRTaWduYWxp
bmcgewogY2xhc3MgU2Vzc2lvbkRlc2NyaXB0aW9uIHsKICBwdWJsaWM6CiAgIFNlc3Npb25EZXNj
cmlwdGlvbigpOwotICBleHBsaWNpdCBTZXNzaW9uRGVzY3JpcHRpb24oY29uc3QgQ29udGVudElu
Zm9zJiBjb250ZW50cyk7Ci0gIFNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBDb250ZW50SW5mb3Mm
IGNvbnRlbnRzLCBjb25zdCBDb250ZW50R3JvdXBzJiBncm91cHMpOwotICBTZXNzaW9uRGVzY3Jp
cHRpb24oY29uc3QgQ29udGVudEluZm9zJiBjb250ZW50cywKLSAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRyYW5zcG9ydEluZm9zJiB0cmFuc3BvcnRzLAotICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ29udGVudEdyb3VwcyYgZ3JvdXBzKTsKICAgflNlc3Npb25EZXNjcmlwdGlvbigpOwog
CiAgIFNlc3Npb25EZXNjcmlwdGlvbiogQ29weSgpIGNvbnN0OwpAQCAtNDEyLDYgKzQyNyw4IEBA
IGNsYXNzIFNlc3Npb25EZXNjcmlwdGlvbiB7CiAgICAgICAgICAgICAgICAgICBib29sIHJlamVj
dGVkLAogICAgICAgICAgICAgICAgICAgYm9vbCBidW5kbGVfb25seSwKICAgICAgICAgICAgICAg
ICAgIE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBkZXNjcmlwdGlvbik7CisgIHZvaWQgQWRkQ29u
dGVudChDb250ZW50SW5mbyogY29udGVudCk7CisKICAgYm9vbCBSZW1vdmVDb250ZW50QnlOYW1l
KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKIAogICAvLyBUcmFuc3BvcnQgYWNjZXNzb3JzLgpA
QCAtNDU1LDYgKzQ3MiwyNCBAQCBjbGFzcyBTZXNzaW9uRGVzY3JpcHRpb24gewogICB9CiAgIGlu
dCBtc2lkX3NpZ25hbGluZygpIGNvbnN0IHsgcmV0dXJuIG1zaWRfc2lnbmFsaW5nXzsgfQogCisg
IC8vIERldGVybWluZXMgaWYgaXQncyBhbGxvd2VkIHRvIG1peCBvbmUtIGFuZCB0d28tYnl0ZSBy
dHAgaGVhZGVyIGV4dGVuc2lvbnMKKyAgLy8gd2l0aGluIHRoZSBzYW1lIHJ0cCBzdHJlYW0uCisg
IHZvaWQgc2V0X2V4dG1hcF9hbGxvd19taXhlZChib29sIHN1cHBvcnRlZCkgeworICAgIGV4dG1h
cF9hbGxvd19taXhlZF8gPSBzdXBwb3J0ZWQ7CisgICAgTWVkaWFDb250ZW50RGVzY3JpcHRpb246
OkV4dG1hcEFsbG93TWl4ZWQgbWVkaWFfbGV2ZWxfc2V0dGluZyA9CisgICAgICAgIHN1cHBvcnRl
ZCA/IE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprU2Vzc2lvbgorICAgICAgICAgICAgICAgICAg
OiBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a05vOworICAgIGZvciAoYXV0byYgY29udGVudCA6
IGNvbnRlbnRzXykgeworICAgICAgLy8gRG8gbm90IHNldCB0byBrTm8gaWYgdGhlIGN1cnJlbnQg
c2V0dGluZyBpcyBrTWVkaWEuCisgICAgICBpZiAoc3VwcG9ydGVkIHx8IGNvbnRlbnQubWVkaWFf
ZGVzY3JpcHRpb24oKS0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSAhPQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSkgeworICAgICAg
ICBjb250ZW50Lm1lZGlhX2Rlc2NyaXB0aW9uKCktPnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51
bSgKKyAgICAgICAgICAgIG1lZGlhX2xldmVsX3NldHRpbmcpOworICAgICAgfQorICAgIH0KKyAg
fQorICBib29sIGV4dG1hcF9hbGxvd19taXhlZCgpIGNvbnN0IHsgcmV0dXJuIGV4dG1hcF9hbGxv
d19taXhlZF87IH0KKwogIHByaXZhdGU6CiAgIFNlc3Npb25EZXNjcmlwdGlvbihjb25zdCBTZXNz
aW9uRGVzY3JpcHRpb24mKTsKIApAQCAtNDY1LDYgKzUwMCwxMiBAQCBjbGFzcyBTZXNzaW9uRGVz
Y3JpcHRpb24gewogICAvLyBEZWZhdWx0IHRvIHdoYXQgUGxhbiBCIHdvdWxkIGRvLgogICAvLyBU
T0RPKGJ1Z3Mud2VicnRjLm9yZy84NTMwKTogQ2hhbmdlIGRlZmF1bHQgdG8ga01zaWRTaWduYWxp
bmdNZWRpYVNlY3Rpb24uCiAgIGludCBtc2lkX3NpZ25hbGluZ18gPSBrTXNpZFNpZ25hbGluZ1Nz
cmNBdHRyaWJ1dGU7CisgIC8vIFRPRE8od2VicnRjOjk5ODUpOiBBY3RpdmF0ZSBtaXhlZCBvbmUt
IGFuZCB0d28tYnl0ZSBoZWFkZXIgZXh0ZW5zaW9uIGluCisgIC8vIG9mZmVyIGF0IHNlc3Npb24g
bGV2ZWwuIEl0J3MgY3VycmVudGx5IG5vdCBpbmNsdWRlZCBpbiBvZmZlciBieSBkZWZhdWx0Cisg
IC8vIGJlY2F1c2UgY2xpZW50cyBwcmlvciB0byBodHRwczovL2J1Z3Mud2VicnRjLm9yZy85NzEy
IGNhbm5vdCBwYXJzZSB0aGlzCisgIC8vIGNvcnJlY3RseS4gSWYgaXQncyBpbmNsdWRlZCBpbiBv
ZmZlciB0byB1cyB3ZSB3aWxsIHJlc3BvbmQgdGhhdCB3ZSBzdXBwb3J0CisgIC8vIGl0LgorICBi
b29sIGV4dG1hcF9hbGxvd19taXhlZF8gPSBmYWxzZTsKIH07CiAKIC8vIEluZGljYXRlcyB3aGV0
aGVyIGEgc2Vzc2lvbiBkZXNjcmlwdGlvbiB3YXMgc2VudCBieSB0aGUgbG9jYWwgY2xpZW50IG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9zZXNzaW9uZGVzY3JpcHRpb25fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb25fdW5pdHRlc3QuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGNhY2Y1ODdmNTYyYjRmOWE1MjY3YjRhYzI3NWFkZDc4OGUyNzMxYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L3Nlc3Npb25kZXNjcmlwdGlvbl91bml0dGVzdC5jYwpAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKyNpbmNsdWRlICJwYy9zZXNzaW9uZGVzY3JpcHRpb24uaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9ndW5pdC5oIgorCituYW1lc3BhY2UgY3JpY2tldCB7CisKK1RFU1QoTWVkaWFD
b250ZW50RGVzY3JpcHRpb25UZXN0LCBFeHRtYXBBbGxvd01peGVkRGVmYXVsdFZhbHVlKSB7Cisg
IFZpZGVvQ29udGVudERlc2NyaXB0aW9uIHZpZGVvX2Rlc2M7CisgIEVYUEVDVF9FUShNZWRpYUNv
bnRlbnREZXNjcmlwdGlvbjo6a05vLCB2aWRlb19kZXNjLmV4dG1hcF9hbGxvd19taXhlZF9lbnVt
KCkpOworfQorCitURVNUKE1lZGlhQ29udGVudERlc2NyaXB0aW9uVGVzdCwgU2V0RXh0bWFwQWxs
b3dNaXhlZCkgeworICBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiB2aWRlb19kZXNjOworICB2aWRl
b19kZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlv
bjo6a05vKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8sIHZpZGVv
X2Rlc2MuZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7CisgIHZpZGVvX2Rlc2Muc2V0X2V4dG1h
cF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEpOworICBF
WFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSwKKyAgICAgICAgICAgIHZp
ZGVvX2Rlc2MuZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7CisgIHZpZGVvX2Rlc2Muc2V0X2V4
dG1hcF9hbGxvd19taXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprU2Vzc2lvbik7
CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a1Nlc3Npb24sCisgICAgICAg
ICAgICB2aWRlb19kZXNjLmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworCisgIC8vIE5vdCBh
bGxvd2VkIHRvIGRvd25ncmFkZSBmcm9tIGtTZXNzaW9uIHRvIGtNZWRpYS4KKyAgdmlkZW9fZGVz
Yy5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtN
ZWRpYSk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a1Nlc3Npb24sCisg
ICAgICAgICAgICB2aWRlb19kZXNjLmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworCisgIC8v
IEFsd2F5cyBva2F5IHRvIHNldCBub3Qgc3VwcG9ydGVkLgorICB2aWRlb19kZXNjLnNldF9leHRt
YXBfYWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a05vKTsKKyAgRVhQ
RUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8sIHZpZGVvX2Rlc2MuZXh0bWFwX2Fs
bG93X21peGVkX2VudW0oKSk7CisgIHZpZGVvX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhlZF9l
bnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEpOworICBFWFBFQ1RfRVEoTWVkaWFD
b250ZW50RGVzY3JpcHRpb246OmtNZWRpYSwKKyAgICAgICAgICAgIHZpZGVvX2Rlc2MuZXh0bWFw
X2FsbG93X21peGVkX2VudW0oKSk7CisgIHZpZGVvX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19taXhl
ZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTm8pOworICBFWFBFQ1RfRVEoTWVkaWFD
b250ZW50RGVzY3JpcHRpb246OmtObywgdmlkZW9fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWRfZW51
bSgpKTsKK30KKworVEVTVChNZWRpYUNvbnRlbnREZXNjcmlwdGlvblRlc3QsIE1peGVkT25lVHdv
Qnl0ZUhlYWRlclN1cHBvcnRlZCkgeworICBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiB2aWRlb19k
ZXNjOworICB2aWRlb19kZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShNZWRpYUNvbnRl
bnREZXNjcmlwdGlvbjo6a05vKTsKKyAgRVhQRUNUX0ZBTFNFKHZpZGVvX2Rlc2MuZXh0bWFwX2Fs
bG93X21peGVkKCkpOworICB2aWRlb19kZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWRfZW51bShN
ZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgRVhQRUNUX1RSVUUodmlkZW9fZGVz
Yy5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7CisgIHZpZGVvX2Rlc2Muc2V0X2V4dG1hcF9hbGxvd19t
aXhlZF9lbnVtKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprU2Vzc2lvbik7CisgIEVYUEVDVF9U
UlVFKHZpZGVvX2Rlc2MuZXh0bWFwX2FsbG93X21peGVkKCkpOworfQorCitURVNUKFNlc3Npb25E
ZXNjcmlwdGlvblRlc3QsIFNldEV4dG1hcEFsbG93TWl4ZWQpIHsKKyAgU2Vzc2lvbkRlc2NyaXB0
aW9uIHNlc3Npb25fZGVzYzsKKyAgc2Vzc2lvbl9kZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWQo
dHJ1ZSk7CisgIEVYUEVDVF9UUlVFKHNlc3Npb25fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7
CisgIHNlc3Npb25fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkKGZhbHNlKTsKKyAgRVhQRUNU
X0ZBTFNFKHNlc3Npb25fZGVzYy5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7Cit9CisKK1RFU1QoU2Vz
c2lvbkRlc2NyaXB0aW9uVGVzdCwgU2V0RXh0bWFwQWxsb3dNaXhlZFByb3BhZ2F0ZXNUb01lZGlh
TGV2ZWwpIHsKKyAgU2Vzc2lvbkRlc2NyaXB0aW9uIHNlc3Npb25fZGVzYzsKKyAgTWVkaWFDb250
ZW50RGVzY3JpcHRpb24qIHZpZGVvX2Rlc2MgPSBuZXcgVmlkZW9Db250ZW50RGVzY3JpcHRpb24o
KTsKKyAgc2Vzc2lvbl9kZXNjLkFkZENvbnRlbnQoInZpZGVvIiwgTWVkaWFQcm90b2NvbFR5cGU6
OmtSdHAsIHZpZGVvX2Rlc2MpOworCisgIC8vIFNldHRpbmcgdHJ1ZSBvbiBzZXNzaW9uIGxldmVs
IHByb3BhZ2F0ZXMgdG8gbWVkaWEgbGV2ZWwuCisgIHNlc3Npb25fZGVzYy5zZXRfZXh0bWFwX2Fs
bG93X21peGVkKHRydWUpOworICBFWFBFQ1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtT
ZXNzaW9uLAorICAgICAgICAgICAgdmlkZW9fZGVzYy0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0o
KSk7CisKKyAgLy8gRG9uJ3QgZG93bmdyYWRlIGZyb20gc2Vzc2lvbiBsZXZlbCB0byBtZWRpYSBs
ZXZlbAorICB2aWRlb19kZXNjLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250
ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlw
dGlvbjo6a1Nlc3Npb24sCisgICAgICAgICAgICB2aWRlb19kZXNjLT5leHRtYXBfYWxsb3dfbWl4
ZWRfZW51bSgpKTsKKworICAvLyBTZXR0aW5nIGZhbHNlIG9uIHNlc3Npb24gbGV2ZWwgcHJvcGFn
YXRlcyB0byBtZWRpYSBsZXZlbCBpZiB0aGUgY3VycmVudAorICAvLyBzdGF0ZSBpcyBrU2Vzc2lv
bi4KKyAgc2Vzc2lvbl9kZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWQoZmFsc2UpOworICBFWFBF
Q1RfRVEoTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtObywKKyAgICAgICAgICAgIHZpZGVvX2Rl
c2MtPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworCisgIC8vIE5vdyBwb3NzaWJsZSB0byBz
ZXQgYXQgbWVkaWEgbGV2ZWwuCisgIHZpZGVvX2Rlc2MtPnNldF9leHRtYXBfYWxsb3dfbWl4ZWRf
ZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgRVhQRUNUX0VRKE1lZGlh
Q29udGVudERlc2NyaXB0aW9uOjprTWVkaWEsCisgICAgICAgICAgICB2aWRlb19kZXNjLT5leHRt
YXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKworICAvLyBTZXR0aW5nIGZhbHNlIG9uIHNlc3Npb24g
bGV2ZWwgZG9lcyBub3Qgb3ZlcnJpZGUgb24gbWVkaWEgbGV2ZWwgaWYgY3VycmVudAorICAvLyBz
dGF0ZSBpcyBrTWVkaWEuCisgIHNlc3Npb25fZGVzYy5zZXRfZXh0bWFwX2FsbG93X21peGVkKGZh
bHNlKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprTWVkaWEsCisgICAg
ICAgICAgICB2aWRlb19kZXNjLT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKworICAvLyBT
ZXR0aW5nIHRydWUgb24gc2Vzc2lvbiBsZXZlbCBvdmVycmlkZXMgc2V0dGluZyBvbiBtZWRpYSBs
ZXZlbC4KKyAgc2Vzc2lvbl9kZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWQodHJ1ZSk7CisgIEVY
UEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a1Nlc3Npb24sCisgICAgICAgICAgICB2
aWRlb19kZXNjLT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKK30KKworVEVTVChTZXNzaW9u
RGVzY3JpcHRpb25UZXN0LCBBZGRDb250ZW50VHJhbnNmZXJzRXh0bWFwQWxsb3dNaXhlZFNldHRp
bmcpIHsKKyAgU2Vzc2lvbkRlc2NyaXB0aW9uIHNlc3Npb25fZGVzYzsKKyAgc2Vzc2lvbl9kZXNj
LnNldF9leHRtYXBfYWxsb3dfbWl4ZWQoZmFsc2UpOworICBNZWRpYUNvbnRlbnREZXNjcmlwdGlv
biogYXVkaW9fZGVzYyA9IG5ldyBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbigpOworICBhdWRpb19k
ZXNjLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oTWVkaWFDb250ZW50RGVzY3JpcHRpb246
OmtNZWRpYSk7CisKKyAgLy8gSWYgc2Vzc2lvbiBzZXR0aW5nIGlzIGZhbHNlLCBtZWRpYSBsZXZl
bCBzZXR0aW5nIGlzIHByZXNlcnZlZCB3aGVuIG5ldworICAvLyBjb250ZW50IGlzIGFkZGVkLgor
ICBzZXNzaW9uX2Rlc2MuQWRkQ29udGVudCgiYXVkaW8iLCBNZWRpYVByb3RvY29sVHlwZTo6a1J0
cCwgYXVkaW9fZGVzYyk7CisgIEVYUEVDVF9FUShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01l
ZGlhLAorICAgICAgICAgICAgYXVkaW9fZGVzYy0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7
CisKKyAgLy8gSWYgc2Vzc2lvbiBzZXR0aW5nIGlzIHRydWUsIGl0J3MgdHJhbnNmZXJyZWQgdG8g
bWVkaWEgbGV2ZWwgd2hlbiBuZXcKKyAgLy8gY29udGVudCBpcyBhZGRlZC4KKyAgc2Vzc2lvbl9k
ZXNjLnNldF9leHRtYXBfYWxsb3dfbWl4ZWQodHJ1ZSk7CisgIE1lZGlhQ29udGVudERlc2NyaXB0
aW9uKiB2aWRlb19kZXNjID0gbmV3IFZpZGVvQ29udGVudERlc2NyaXB0aW9uKCk7CisgIHNlc3Np
b25fZGVzYy5BZGRDb250ZW50KCJ2aWRlbyIsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCB2aWRl
b19kZXNjKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprU2Vzc2lvbiwK
KyAgICAgICAgICAgIHZpZGVvX2Rlc2MtPmV4dG1hcF9hbGxvd19taXhlZF9lbnVtKCkpOworCisg
IC8vIFNlc3Npb24gbGV2ZWwgc2V0dGluZyBvdmVycmlkZXMgbWVkaWEgbGV2ZWwgd2hlbiBuZXcg
Y29udGVudCBpcyBhZGRlZC4KKyAgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIGRhdGFfZGVzYyA9
IG5ldyBEYXRhQ29udGVudERlc2NyaXB0aW9uOworICBkYXRhX2Rlc2MtPnNldF9leHRtYXBfYWxs
b3dfbWl4ZWRfZW51bShNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKyAgc2Vzc2lv
bl9kZXNjLkFkZENvbnRlbnQoImRhdGEiLCBNZWRpYVByb3RvY29sVHlwZTo6a1J0cCwgZGF0YV9k
ZXNjKTsKKyAgRVhQRUNUX0VRKE1lZGlhQ29udGVudERlc2NyaXB0aW9uOjprU2Vzc2lvbiwKKyAg
ICAgICAgICAgIGRhdGFfZGVzYy0+ZXh0bWFwX2FsbG93X21peGVkX2VudW0oKSk7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSBjcmlja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwZmlsdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cGZpbHRlci5jYwppbmRleCA1ZmZlMzQyMTJl
NTA4YmE3M2EwMGUzZjg2OTQ4YWU1MDdmZjYyZTEwLi5jZDAzOTNhMDNlMzMxYjFkNzNjZmY0YTIy
NTllMjNhZTdhNTJmNDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9zcnRwZmlsdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0ZXIuY2MKQEAgLTE5LDcgKzE5LDYgQEAK
ICNpbmNsdWRlICJydGNfYmFzZS9ieXRlb3JkZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
c3RyaW5nZW5jb2RlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhpcmRfcGFydHkvYmFzZTY0L2Jh
c2U2NC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3plcm9fbWVtb3J5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwZmlsdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwZmlsdGVyLmgKaW5kZXggYTRkZDU0ZmE4YmRlYmNh
NjhlMTljMGZkZGQwODM5YjY5MTBlNjlkNS4uNGFiMGRkNzJjMWE0MTJjMTQyM2M4YzAyNDVhZGU3
OTRlYThlZjg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvc3J0cGZpbHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBmaWx0ZXIuaApAQCAtNzgsNiArNzgsMTAgQEAgY2xhc3Mg
U3J0cEZpbHRlciB7CiAKICAgYm9vbCBSZXNldFBhcmFtcygpOwogCisgIHN0YXRpYyBib29sIFBh
cnNlS2V5UGFyYW1zKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXJhbXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QqIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGxlbik7CisKICAgYWJzbDo6b3B0aW9uYWw8aW50PiBzZW5kX2NpcGhlcl9zdWl0ZSgp
IHsgcmV0dXJuIHNlbmRfY2lwaGVyX3N1aXRlXzsgfQogICBhYnNsOjpvcHRpb25hbDxpbnQ+IHJl
Y3ZfY2lwaGVyX3N1aXRlKCkgeyByZXR1cm4gcmVjdl9jaXBoZXJfc3VpdGVfOyB9CiAKQEAgLTEw
NCwxMCArMTA4LDYgQEAgY2xhc3MgU3J0cEZpbHRlciB7CiAKICAgYm9vbCBBcHBseVJlY3ZQYXJh
bXMoY29uc3QgQ3J5cHRvUGFyYW1zJiByZWN2X3BhcmFtcyk7CiAKLSAgc3RhdGljIGJvb2wgUGFy
c2VLZXlQYXJhbXMoY29uc3Qgc3RkOjpzdHJpbmcmIHBhcmFtcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCoga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbGVuKTsKLQogICBlbnVtIFN0YXRlIHsKICAgICBTVF9JTklULCAgICAgICAgICAgICAg
ICAgICAgLy8gU1JUUCBmaWx0ZXIgdW51c2VkLgogICAgIFNUX1NFTlRPRkZFUiwgICAgICAgICAg
ICAgICAvLyBPZmZlciB3aXRoIFNSVFAgcGFyYW1ldGVycyBzZW50LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHNlc3Npb24uY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwc2Vzc2lv
bi5jYwppbmRleCBhNWZkYTg4OTdmZWI5ZDcyNjI5NWQ1ZTUzNzhkZTQ1NmZjZjBiNTM3Li5hYWRk
NDcxMWE1MDNlMWU3NDczM2YzZjg0NjI1ZTBhODExZDgyZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwc2Vzc2lvbi5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwc2Vzc2lv
bi5jYwpAQCAtMTM4LDcgKzEzOCwxNSBAQCBib29sIFNydHBTZXNzaW9uOjpVbnByb3RlY3RSdHAo
dm9pZCogcCwgaW50IGluX2xlbiwgaW50KiBvdXRfbGVuKSB7CiAgICpvdXRfbGVuID0gaW5fbGVu
OwogICBpbnQgZXJyID0gc3J0cF91bnByb3RlY3Qoc2Vzc2lvbl8sIHAsIG91dF9sZW4pOwogICBp
ZiAoZXJyICE9IHNydHBfZXJyX3N0YXR1c19vaykgewotICAgIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIkZhaWxlZCB0byB1bnByb3RlY3QgU1JUUCBwYWNrZXQsIGVycj0iIDw8IGVycjsKKyAgICAv
LyBMaW1pdCB0aGUgZXJyb3IgbG9nZ2luZyB0byBhdm9pZCBleGNlc3NpdmUgbG9ncyB3aGVuIHRo
ZXJlIGFyZSBsb3RzIG9mCisgICAgLy8gYmFkIHBhY2tldHMuCisgICAgY29uc3QgaW50IGtGYWls
dXJlTG9nVGhyb3R0bGVDb3VudCA9IDEwMDsKKyAgICBpZiAoZGVjcnlwdGlvbl9mYWlsdXJlX2Nv
dW50XyAlIGtGYWlsdXJlTG9nVGhyb3R0bGVDb3VudCA9PSAwKSB7CisgICAgICBSVENfTE9HKExT
X1dBUk5JTkcpIDw8ICJGYWlsZWQgdG8gdW5wcm90ZWN0IFNSVFAgcGFja2V0LCBlcnI9IiA8PCBl
cnIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgcHJldmlvdXMgZmFpbHVyZSBjb3Vu
dDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBkZWNyeXB0aW9uX2ZhaWx1cmVfY291
bnRfOworICAgIH0KKyAgICArK2RlY3J5cHRpb25fZmFpbHVyZV9jb3VudF87CiAgICAgUlRDX0hJ
U1RPR1JBTV9FTlVNRVJBVElPTigiV2ViUlRDLlBlZXJDb25uZWN0aW9uLlNydHBVbnByb3RlY3RF
cnJvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGVy
ciksIGtTcnRwRXJyb3JDb2RlQm91bmRhcnkpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBzZXNz
aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRw
c2Vzc2lvbi5oCmluZGV4IGMzYTAxYmQxMzliYjBhNTM2Y2JmOGQ5Nzc0YzRlMmJmYTdlNzYxOTMu
LmNlMDVjZTZkNzI1ODYyMmM4NDk3M2IyZjc3MWRkYzZiYjBmM2Q0OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHBzZXNzaW9uLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHNl
c3Npb24uaApAQCAtMTIyLDYgKzEyMiw3IEBAIGNsYXNzIFNydHBTZXNzaW9uIHsKICAgaW50IGxh
c3Rfc2VuZF9zZXFfbnVtXyA9IC0xOwogICBib29sIGV4dGVybmFsX2F1dGhfYWN0aXZlXyA9IGZh
bHNlOwogICBib29sIGV4dGVybmFsX2F1dGhfZW5hYmxlZF8gPSBmYWxzZTsKKyAgaW50IGRlY3J5
cHRpb25fZmFpbHVyZV9jb3VudF8gPSAwOwogICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
KFNydHBTZXNzaW9uKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHB0cmFuc3BvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zcnRwdHJhbnNwb3J0LmNjCmluZGV4IDZmZDhi
ZTM3YzI0MjQ4MWI5Yzk3ODk5MzBiZTQzY2RkYTE0NzBmM2IuLjBjZjQxMDYyMDNlNjM1MTUwZGU3
ZmU4OThmYzRhOTE3NTY4ZDNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3NydHB0cmFuc3BvcnQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3J0cHRyYW5zcG9ydC5jYwpAQCAtMTkz
LDcgKzE5Myw3IEBAIGJvb2wgU3J0cFRyYW5zcG9ydDo6U2VuZFJ0Y3BQYWNrZXQocnRjOjpDb3B5
T25Xcml0ZUJ1ZmZlciogcGFja2V0LAogfQogCiB2b2lkIFNydHBUcmFuc3BvcnQ6Ok9uUnRwUGFj
a2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0
X3RpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
IHBhY2tldF90aW1lX3VzKSB7CiAgIGlmICghSXNTcnRwQWN0aXZlKCkpIHsKICAgICBSVENfTE9H
KExTX1dBUk5JTkcpCiAgICAgICAgIDw8ICJJbmFjdGl2ZSBTUlRQIHRyYW5zcG9ydCByZWNlaXZl
ZCBhbiBSVFAgcGFja2V0LiBEcm9wIGl0LiI7CkBAIC0yMDcsMTYgKzIwNywyNSBAQCB2b2lkIFNy
dHBUcmFuc3BvcnQ6Ok9uUnRwUGFja2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciog
cGFja2V0LAogICAgIHVpbnQzMl90IHNzcmMgPSAwOwogICAgIGNyaWNrZXQ6OkdldFJ0cFNlcU51
bShkYXRhLCBsZW4sICZzZXFfbnVtKTsKICAgICBjcmlja2V0OjpHZXRSdHBTc3JjKGRhdGEsIGxl
biwgJnNzcmMpOwotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gdW5wcm90ZWN0
IFJUUCBwYWNrZXQ6IHNpemU9IiA8PCBsZW4KLSAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBz
ZXFudW09IiA8PCBzZXFfbnVtIDw8ICIsIFNTUkM9IiA8PCBzc3JjOworCisgICAgLy8gTGltaXQg
dGhlIGVycm9yIGxvZ2dpbmcgdG8gYXZvaWQgZXhjZXNzaXZlIGxvZ3Mgd2hlbiB0aGVyZSBhcmUg
bG90cyBvZgorICAgIC8vIGJhZCBwYWNrZXRzLgorICAgIGNvbnN0IGludCBrRmFpbHVyZUxvZ1Ro
cm90dGxlQ291bnQgPSAxMDA7CisgICAgaWYgKGRlY3J5cHRpb25fZmFpbHVyZV9jb3VudF8gJSBr
RmFpbHVyZUxvZ1Rocm90dGxlQ291bnQgPT0gMCkgeworICAgICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIkZhaWxlZCB0byB1bnByb3RlY3QgUlRQIHBhY2tldDogc2l6ZT0iIDw8IGxlbgorICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIiwgc2VxbnVtPSIgPDwgc2VxX251bSA8PCAiLCBTU1JDPSIg
PDwgc3NyYworICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgcHJldmlvdXMgZmFpbHVyZSBj
b3VudDogIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgZGVjcnlwdGlvbl9mYWlsdXJlX2Nv
dW50XzsKKyAgICB9CisgICAgKytkZWNyeXB0aW9uX2ZhaWx1cmVfY291bnRfOwogICAgIHJldHVy
bjsKICAgfQogICBwYWNrZXQtPlNldFNpemUobGVuKTsKLSAgRGVtdXhQYWNrZXQocGFja2V0LCBw
YWNrZXRfdGltZSk7CisgIERlbXV4UGFja2V0KHBhY2tldCwgcGFja2V0X3RpbWVfdXMpOwogfQog
CiB2b2lkIFNydHBUcmFuc3BvcnQ6Ok9uUnRjcFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3Jp
dGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHBhY2tldF90aW1lX3VzKSB7CiAgIGlm
ICghSXNTcnRwQWN0aXZlKCkpIHsKICAgICBSVENfTE9HKExTX1dBUk5JTkcpCiAgICAgICAgIDw8
ICJJbmFjdGl2ZSBTUlRQIHRyYW5zcG9ydCByZWNlaXZlZCBhbiBSVENQIHBhY2tldC4gRHJvcCBp
dC4iOwpAQCAtMjMzLDcgKzI0Miw3IEBAIHZvaWQgU3J0cFRyYW5zcG9ydDo6T25SdGNwUGFja2V0
UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAogICAgIHJldHVybjsKICAg
fQogICBwYWNrZXQtPlNldFNpemUobGVuKTsKLSAgU2lnbmFsUnRjcFBhY2tldFJlY2VpdmVkKHBh
Y2tldCwgcGFja2V0X3RpbWUpOworICBTaWduYWxSdGNwUGFja2V0UmVjZWl2ZWQocGFja2V0LCBw
YWNrZXRfdGltZV91cyk7CiB9CiAKIHZvaWQgU3J0cFRyYW5zcG9ydDo6T25OZXR3b3JrUm91dGVD
aGFuZ2VkKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvc3J0cHRyYW5zcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvc3J0cHRyYW5zcG9ydC5oCmluZGV4IDE5ODAyNGY1YTU0Y2E0ZDk0MTQ1
NzUwODgzODRiNDZlOThhZDk5NWQuLmM2MjM1OWI5NDRkNDg3MjM5OTBmYTAwNTAzOWYxYTNkYzM0
MjFjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL3NydHB0cmFuc3BvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9zcnRwdHJhbnNwb3J0LmgKQEAgLTExMyw5ICsxMTMsOSBAQCBjbGFz
cyBTcnRwVHJhbnNwb3J0IDogcHVibGljIFJ0cFRyYW5zcG9ydCB7CiAgIHZvaWQgQ3JlYXRlU3J0
cFNlc3Npb25zKCk7CiAKICAgdm9pZCBPblJ0cFBhY2tldFJlY2VpdmVkKHJ0Yzo6Q29weU9uV3Jp
dGVCdWZmZXIqIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6
UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIG92ZXJyaWRlOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50NjRfdCBwYWNrZXRfdGltZV91cykgb3ZlcnJpZGU7CiAgIHZvaWQgT25SdGNwUGFj
a2V0UmVjZWl2ZWQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciogcGFja2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0VGltZSYgcGFja2V0X3RpbWUpIG92ZXJy
aWRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMp
IG92ZXJyaWRlOwogICB2b2lkIE9uTmV0d29ya1JvdXRlQ2hhbmdlZCgKICAgICAgIGFic2w6Om9w
dGlvbmFsPHJ0Yzo6TmV0d29ya1JvdXRlPiBuZXR3b3JrX3JvdXRlKSBvdmVycmlkZTsKIApAQCAt
MTYwLDYgKzE2MCw4IEBAIGNsYXNzIFNydHBUcmFuc3BvcnQgOiBwdWJsaWMgUnRwVHJhbnNwb3J0
IHsKICAgYm9vbCBleHRlcm5hbF9hdXRoX2VuYWJsZWRfID0gZmFsc2U7CiAKICAgaW50IHJ0cF9h
YnNfc2VuZHRpbWVfZXh0bl9pZF8gPSAtMTsKKworICBpbnQgZGVjcnlwdGlvbl9mYWlsdXJlX2Nv
dW50XyA9IDA7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zdGF0c2NvbGxlY3Rvci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3N0YXRzY29s
bGVjdG9yLmNjCmluZGV4IDIzYTQ0OTMwOGMzMTdlOTExMTBjYWQ4NDA0MDBmMmRiMzVkNzgxMjAu
LmExZDUyZGIwNGU5MmRlOGQ0NTdjOTNhMDY4OWE4NTIyMWFjZDcxNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3N0YXRzY29sbGVjdG9y
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3N0
YXRzY29sbGVjdG9yLmNjCkBAIC03ODMsOCArNzgzLDggQEAgdm9pZCBTdGF0c0NvbGxlY3Rvcjo6
RXh0cmFjdFNlc3Npb25JbmZvKCkgewogICAgIFN0YXRzUmVwb3J0OjpJZCBsb2NhbF9jZXJ0X3Jl
cG9ydF9pZCwgcmVtb3RlX2NlcnRfcmVwb3J0X2lkOwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxy
dGM6OlJUQ0NlcnRpZmljYXRlPiBjZXJ0aWZpY2F0ZTsKICAgICBpZiAocGNfLT5HZXRMb2NhbENl
cnRpZmljYXRlKHRyYW5zcG9ydF9uYW1lLCAmY2VydGlmaWNhdGUpKSB7Ci0gICAgICBTdGF0c1Jl
cG9ydCogciA9Ci0gICAgICAgICAgQWRkQ2VydGlmaWNhdGVSZXBvcnRzKGNlcnRpZmljYXRlLT5z
c2xfY2VydF9jaGFpbigpLkdldFN0YXRzKCkpOworICAgICAgU3RhdHNSZXBvcnQqIHIgPSBBZGRD
ZXJ0aWZpY2F0ZVJlcG9ydHMoCisgICAgICAgICAgY2VydGlmaWNhdGUtPkdldFNTTENlcnRpZmlj
YXRlQ2hhaW4oKS5HZXRTdGF0cygpKTsKICAgICAgIGlmIChyKQogICAgICAgICBsb2NhbF9jZXJ0
X3JlcG9ydF9pZCA9IHItPmlkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc3RhdHNjb2xsZWN0b3JfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zdGF0c2NvbGxl
Y3Rvcl91bml0dGVzdC5jYwppbmRleCBmYTRkM2RiODFiZDdjNTc2Zjc1Y2QxOTc3Mjk0ZTM2ZGRm
MjUxZjg5Li41M2ViMmVhYTVlYWJhNDY3NzIwNWJkM2E5NDE2YTM0MjBhNjc2N2QxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zdGF0c2Nv
bGxlY3Rvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9zdGF0c2NvbGxlY3Rvcl91bml0dGVzdC5jYwpAQCAtMjIsNiArMjIsNyBA
QAogI2luY2x1ZGUgInBjL3Rlc3QvZmFrZXZpZGVvdHJhY2tzb3VyY2UuaCIKICNpbmNsdWRlICJw
Yy92aWRlb3RyYWNrLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZmFrZXNzbGlkZW50aXR5LmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
aXJkX3BhcnR5L2Jhc2U2NC9iYXNlNjQuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAKQEAg
LTU2LDE0ICs1Nyw2IEBAIGNsYXNzIEZha2VBdWRpb1Byb2Nlc3NvciA6IHB1YmxpYyBBdWRpb1By
b2Nlc3NvckludGVyZmFjZSB7CiAgIH5GYWtlQXVkaW9Qcm9jZXNzb3IoKSB7fQogCiAgcHJpdmF0
ZToKLSAgdm9pZCBHZXRTdGF0cyhBdWRpb1Byb2Nlc3NvckludGVyZmFjZTo6QXVkaW9Qcm9jZXNz
b3JTdGF0cyogc3RhdHMpIG92ZXJyaWRlIHsKLSAgICBzdGF0cy0+dHlwaW5nX25vaXNlX2RldGVj
dGVkID0gdHJ1ZTsKLSAgICBzdGF0cy0+ZWNob19yZXR1cm5fbG9zcyA9IDI7Ci0gICAgc3RhdHMt
PmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPSAzOwotICAgIHN0YXRzLT5lY2hvX2RlbGF5
X21lZGlhbl9tcyA9IDQ7Ci0gICAgc3RhdHMtPmVjaG9fZGVsYXlfc3RkX21zID0gNjsKLSAgfQot
CiAgIEF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNlOjpBdWRpb1Byb2Nlc3NvclN0YXRpc3RpY3MgR2V0
U3RhdHMoCiAgICAgICBib29sIGhhc19yZWN2X3N0cmVhbXMpIG92ZXJyaWRlIHsKICAgICBBdWRp
b1Byb2Nlc3NvclN0YXRpc3RpY3Mgc3RhdHM7CkBAIC0xMDcsMTQgKzEwMCw2IEBAIGNsYXNzIEZh
a2VBdWRpb1Byb2Nlc3NvcldpdGhJbml0VmFsdWUgOiBwdWJsaWMgQXVkaW9Qcm9jZXNzb3JJbnRl
cmZhY2UgewogICB+RmFrZUF1ZGlvUHJvY2Vzc29yV2l0aEluaXRWYWx1ZSgpIHt9CiAKICBwcml2
YXRlOgotICB2b2lkIEdldFN0YXRzKEF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNlOjpBdWRpb1Byb2Nl
c3NvclN0YXRzKiBzdGF0cykgb3ZlcnJpZGUgewotICAgIHN0YXRzLT50eXBpbmdfbm9pc2VfZGV0
ZWN0ZWQgPSBmYWxzZTsKLSAgICBzdGF0cy0+ZWNob19yZXR1cm5fbG9zcyA9IC0xMDA7Ci0gICAg
c3RhdHMtPmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQgPSAtMTAwOwotICAgIHN0YXRzLT5l
Y2hvX2RlbGF5X21lZGlhbl9tcyA9IC0xOwotICAgIHN0YXRzLT5lY2hvX2RlbGF5X3N0ZF9tcyA9
IC0xOwotICB9Ci0KICAgQXVkaW9Qcm9jZXNzb3JJbnRlcmZhY2U6OkF1ZGlvUHJvY2Vzc29yU3Rh
dGlzdGljcyBHZXRTdGF0cygKICAgICAgIGJvb2wgLypoYXNfcmVjdl9zdHJlYW1zKi8pIG92ZXJy
aWRlIHsKICAgICBBdWRpb1Byb2Nlc3NvclN0YXRpc3RpY3Mgc3RhdHM7CkBAIC00OTQsMTAgKzQ3
OSwxMCBAQCB2b2lkIEluaXRWb2ljZVNlbmRlckluZm8oY3JpY2tldDo6Vm9pY2VTZW5kZXJJbmZv
KiB2b2ljZV9zZW5kZXJfaW5mbykgewogICB2b2ljZV9zZW5kZXJfaW5mby0+cGFja2V0c19sb3N0
ID0gMTA1OwogICB2b2ljZV9zZW5kZXJfaW5mby0+ZXh0X3NlcW51bSA9IDEwNjsKICAgdm9pY2Vf
c2VuZGVyX2luZm8tPmF1ZGlvX2xldmVsID0gMTA3OwotICB2b2ljZV9zZW5kZXJfaW5mby0+ZWNo
b19yZXR1cm5fbG9zcyA9IDEwODsKLSAgdm9pY2Vfc2VuZGVyX2luZm8tPmVjaG9fcmV0dXJuX2xv
c3NfZW5oYW5jZW1lbnQgPSAxMDk7Ci0gIHZvaWNlX3NlbmRlcl9pbmZvLT5lY2hvX2RlbGF5X21l
ZGlhbl9tcyA9IDExMDsKLSAgdm9pY2Vfc2VuZGVyX2luZm8tPmVjaG9fZGVsYXlfc3RkX21zID0g
MTExOworICB2b2ljZV9zZW5kZXJfaW5mby0+YXBtX3N0YXRpc3RpY3MuZWNob19yZXR1cm5fbG9z
cyA9IDEwODsKKyAgdm9pY2Vfc2VuZGVyX2luZm8tPmFwbV9zdGF0aXN0aWNzLmVjaG9fcmV0dXJu
X2xvc3NfZW5oYW5jZW1lbnQgPSAxMDk7CisgIHZvaWNlX3NlbmRlcl9pbmZvLT5hcG1fc3RhdGlz
dGljcy5kZWxheV9tZWRpYW5fbXMgPSAxMTA7CisgIHZvaWNlX3NlbmRlcl9pbmZvLT5hcG1fc3Rh
dGlzdGljcy5kZWxheV9zdGFuZGFyZF9kZXZpYXRpb25fbXMgPSAxMTE7CiAgIHZvaWNlX3NlbmRl
cl9pbmZvLT50eXBpbmdfbm9pc2VfZGV0ZWN0ZWQgPSBmYWxzZTsKICAgdm9pY2Vfc2VuZGVyX2lu
Zm8tPmFuYV9zdGF0aXN0aWNzLmJpdHJhdGVfYWN0aW9uX2NvdW50ZXIgPSAxMTI7CiAgIHZvaWNl
X3NlbmRlcl9pbmZvLT5hbmFfc3RhdGlzdGljcy5jaGFubmVsX2FjdGlvbl9jb3VudGVyID0gMTEz
OwpAQCAtNjQxLDcgKzYyNiw3IEBAIGNsYXNzIFN0YXRzQ29sbGVjdG9yVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTElkZW50
aXR5Pihsb2NhbF9pZGVudGl0eS5HZXRSZWZlcmVuY2UoKSkpKTsKICAgICBwYy0+U2V0TG9jYWxD
ZXJ0aWZpY2F0ZShrVHJhbnNwb3J0TmFtZSwgbG9jYWxfY2VydGlmaWNhdGUpOwogICAgIHBjLT5T
ZXRSZW1vdGVDZXJ0Q2hhaW4oa1RyYW5zcG9ydE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICByZW1vdGVfaWRlbnRpdHkuY2VydF9jaGFpbigpLlVuaXF1ZUNvcHkoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZW1vdGVfaWRlbnRpdHkuY2VydF9jaGFpbigpLkNsb25lKCkp
OwogCiAgICAgc3RhdHMtPlVwZGF0ZVN0YXRzKFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjprU3Rh
dHNPdXRwdXRMZXZlbFN0YW5kYXJkKTsKIApAQCAtMTU2Nyw3ICsxNTUyLDcgQEAgVEVTVF9QKFN0
YXRzQ29sbGVjdG9yVHJhY2tUZXN0LCBHZXRTdGF0c0FmdGVyUmVtb3ZlQXVkaW9TdHJlYW0pIHsK
IAogICAvLyBWZXJpZmllcyB0aGUgdmFsdWVzIGluIHRoZSB0cmFjayByZXBvcnQsIG5vIHZhbHVl
IHdpbGwgYmUgY2hhbmdlZCBieSB0aGUKICAgLy8gQXVkaW9UcmFja0ludGVyZmFjZTo6R2V0U2ln
bmFsVmFsdWUoKSBhbmQKLSAgLy8gQXVkaW9Qcm9jZXNzb3JJbnRlcmZhY2U6OkF1ZGlvUHJvY2Vz
c29yU3RhdHM6OkdldFN0YXRzKCk7CisgIC8vIEF1ZGlvUHJvY2Vzc29ySW50ZXJmYWNlOjpHZXRT
dGF0cygpOwogICBWZXJpZnlWb2ljZVNlbmRlckluZm9SZXBvcnQocmVwb3J0LCB2b2ljZV9zZW5k
ZXJfaW5mbyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3Rlc3QvZmFrZXBlZXJjb25uZWN0aW9uZm9yc3RhdHMuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvZmFrZXBlZXJjb25u
ZWN0aW9uZm9yc3RhdHMuaAppbmRleCA2NDJmYTAxMWViNGU4ODA5NmM4MjQ5ZTI2YzIwYTU3MmZl
OWU3N2QyLi5hZjg2NjM5ZWNhNGQ1OTg0OWY2ZDVlZTg5YTQ1MWU0YjY0MDBiMjE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L2Zh
a2VwZWVyY29ubmVjdGlvbmZvcnN0YXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9mYWtlcGVlcmNvbm5lY3Rpb25mb3JzdGF0cy5oCkBA
IC0xMjYsNyArMTI2LDcgQEAgY2xhc3MgRmFrZVBlZXJDb25uZWN0aW9uRm9yU3RhdHMgOiBwdWJs
aWMgRmFrZVBlZXJDb25uZWN0aW9uQmFzZSB7CiAgICAgdm9pY2VfY2hhbm5lbF8gPSBhYnNsOjpt
YWtlX3VuaXF1ZTxjcmlja2V0OjpWb2ljZUNoYW5uZWw+KAogICAgICAgICB3b3JrZXJfdGhyZWFk
XywgbmV0d29ya190aHJlYWRfLCBzaWduYWxpbmdfdGhyZWFkXywgbnVsbHB0ciwKICAgICAgICAg
c3RkOjptb3ZlKHZvaWNlX21lZGlhX2NoYW5uZWwpLCBtaWQsIGtEZWZhdWx0U3J0cFJlcXVpcmVk
LAotICAgICAgICBydGM6OkNyeXB0b09wdGlvbnMoKSk7CisgICAgICAgIHdlYnJ0Yzo6Q3J5cHRv
T3B0aW9ucygpKTsKICAgICB2b2ljZV9jaGFubmVsXy0+c2V0X3RyYW5zcG9ydF9uYW1lX2Zvcl90
ZXN0aW5nKHRyYW5zcG9ydF9uYW1lKTsKICAgICBHZXRPckNyZWF0ZUZpcnN0VHJhbnNjZWl2ZXJP
ZlR5cGUoY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTykKICAgICAgICAgLT5pbnRlcm5hbCgpCkBA
IC0xNDQsNyArMTQ0LDcgQEAgY2xhc3MgRmFrZVBlZXJDb25uZWN0aW9uRm9yU3RhdHMgOiBwdWJs
aWMgRmFrZVBlZXJDb25uZWN0aW9uQmFzZSB7CiAgICAgdmlkZW9fY2hhbm5lbF8gPSBhYnNsOjpt
YWtlX3VuaXF1ZTxjcmlja2V0OjpWaWRlb0NoYW5uZWw+KAogICAgICAgICB3b3JrZXJfdGhyZWFk
XywgbmV0d29ya190aHJlYWRfLCBzaWduYWxpbmdfdGhyZWFkXywKICAgICAgICAgc3RkOjptb3Zl
KHZpZGVvX21lZGlhX2NoYW5uZWwpLCBtaWQsIGtEZWZhdWx0U3J0cFJlcXVpcmVkLAotICAgICAg
ICBydGM6OkNyeXB0b09wdGlvbnMoKSk7CisgICAgICAgIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucygp
KTsKICAgICB2aWRlb19jaGFubmVsXy0+c2V0X3RyYW5zcG9ydF9uYW1lX2Zvcl90ZXN0aW5nKHRy
YW5zcG9ydF9uYW1lKTsKICAgICBHZXRPckNyZWF0ZUZpcnN0VHJhbnNjZWl2ZXJPZlR5cGUoY3Jp
Y2tldDo6TUVESUFfVFlQRV9WSURFTykKICAgICAgICAgLT5pbnRlcm5hbCgpCkBAIC0zMTksNyAr
MzE5LDcgQEAgY2xhc3MgRmFrZVBlZXJDb25uZWN0aW9uRm9yU3RhdHMgOiBwdWJsaWMgRmFrZVBl
ZXJDb25uZWN0aW9uQmFzZSB7CiAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNwb3J0X25h
bWUpIG92ZXJyaWRlIHsKICAgICBhdXRvIGl0ID0gcmVtb3RlX2NlcnRfY2hhaW5zX2J5X3RyYW5z
cG9ydF8uZmluZCh0cmFuc3BvcnRfbmFtZSk7CiAgICAgaWYgKGl0ICE9IHJlbW90ZV9jZXJ0X2No
YWluc19ieV90cmFuc3BvcnRfLmVuZCgpKSB7Ci0gICAgICByZXR1cm4gaXQtPnNlY29uZC0+VW5p
cXVlQ29weSgpOworICAgICAgcmV0dXJuIGl0LT5zZWNvbmQtPkNsb25lKCk7CiAgICAgfSBlbHNl
IHsKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja19jaGFubmVsaW50ZXJm
YWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0
L21vY2tfY2hhbm5lbGludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMzJhOGZiOGQ5NzljMDVkOTkw
MDRjZDFkNDRjNDJiYmY0ZWRkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2tfY2hhbm5lbGludGVyZmFjZS5o
CkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgUENfVEVTVF9N
T0NLX0NIQU5ORUxJTlRFUkZBQ0VfSF8KKyNkZWZpbmUgUENfVEVTVF9NT0NLX0NIQU5ORUxJTlRF
UkZBQ0VfSF8KKworI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUgInBjL2NoYW5uZWxpbnRl
cmZhY2UuaCIKKyNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgiCisKK25hbWVzcGFjZSBjcmlja2V0IHsK
KworLy8gTW9jayBjbGFzcyBmb3IgQmFzZUNoYW5uZWwuCisvLyBVc2UgdGhpcyBjbGFzcyBpbiB1
bml0IHRlc3RzIHRvIGF2b2lkIGRlcGVuZGVjeSBvbiBhIHNwZWNpZmljCisvLyBpbXBsZW1lbnRh
dGlvbiBvZiBCYXNlQ2hhbm5lbC4KK2NsYXNzIE1vY2tDaGFubmVsSW50ZXJmYWNlIDogcHVibGlj
IGNyaWNrZXQ6OkNoYW5uZWxJbnRlcmZhY2UgeworIHB1YmxpYzoKKyAgTU9DS19DT05TVF9NRVRI
T0QwKG1lZGlhX3R5cGUsIGNyaWNrZXQ6Ok1lZGlhVHlwZSgpKTsKKyAgTU9DS19DT05TVF9NRVRI
T0QwKG1lZGlhX2NoYW5uZWwsIE1lZGlhQ2hhbm5lbCooKSk7CisgIE1PQ0tfQ09OU1RfTUVUSE9E
MCh0cmFuc3BvcnRfbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmKCkpOworICBNT0NLX0NPTlNUX01F
VEhPRDAoY29udGVudF9uYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYoKSk7CisgIE1PQ0tfQ09OU1Rf
TUVUSE9EMChlbmFibGVkLCBib29sKCkpOworICBNT0NLX01FVEhPRDEoRW5hYmxlLCBib29sKGJv
b2wpKTsKKyAgTU9DS19NRVRIT0QwKFNpZ25hbEZpcnN0UGFja2V0UmVjZWl2ZWQsCisgICAgICAg
ICAgICAgICBzaWdzbG90OjpzaWduYWwxPENoYW5uZWxJbnRlcmZhY2UqPiYoKSk7CisgIE1PQ0tf
TUVUSE9EMyhTZXRMb2NhbENvbnRlbnQsCisgICAgICAgICAgICAgICBib29sKGNvbnN0IGNyaWNr
ZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uKiwKKyAgICAgICAgICAgICAgICAgICAgd2VicnRj
OjpTZHBUeXBlLAorICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyopKTsKKyAgTU9DS19N
RVRIT0QzKFNldFJlbW90ZUNvbnRlbnQsCisgICAgICAgICAgICAgICBib29sKGNvbnN0IGNyaWNr
ZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uKiwKKyAgICAgICAgICAgICAgICAgICAgd2VicnRj
OjpTZHBUeXBlLAorICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyopKTsKKyAgTU9DS19N
RVRIT0QxKFNldFJ0cFRyYW5zcG9ydCwgYm9vbCh3ZWJydGM6OlJ0cFRyYW5zcG9ydEludGVybmFs
KikpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGNyaWNrZXQKKworI2VuZGlmICAvLyBQQ19URVNU
X01PQ0tfQ0hBTk5FTElOVEVSRkFDRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrX3J0cHJlY2VpdmVyaW50ZXJuYWwu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9j
a19ydHByZWNlaXZlcmludGVybmFsLmgKaW5kZXggODUwZDVhOWY4ZTU5OTBkMDEwZmQxMzVjOThl
MDU1MTAxYmNjY2ExYS4uODRiMGQ3MTc2NmI5NzA1ZTU1YjVlYjQwOGRiYjgxYzgyNDU1NjY0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
dGVzdC9tb2NrX3J0cHJlY2VpdmVyaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21vY2tfcnRwcmVjZWl2ZXJpbnRlcm5hbC5o
CkBAIC00MSw4ICs0MSw3IEBAIGNsYXNzIE1vY2tSdHBSZWNlaXZlckludGVybmFsIDogcHVibGlj
IFJ0cFJlY2VpdmVySW50ZXJuYWwgewogCiAgIC8vIFJ0cFJlY2VpdmVySW50ZXJuYWwgbWV0aG9k
cy4KICAgTU9DS19NRVRIT0QwKFN0b3AsIHZvaWQoKSk7Ci0gIE1PQ0tfTUVUSE9EMShTZXRWb2lj
ZU1lZGlhQ2hhbm5lbCwgdm9pZChjcmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCopKTsKLSAgTU9D
S19NRVRIT0QxKFNldFZpZGVvTWVkaWFDaGFubmVsLCB2b2lkKGNyaWNrZXQ6OlZpZGVvTWVkaWFD
aGFubmVsKikpOworICBNT0NLX01FVEhPRDEoU2V0TWVkaWFDaGFubmVsLCB2b2lkKGNyaWNrZXQ6
Ok1lZGlhQ2hhbm5lbCopKTsKICAgTU9DS19NRVRIT0QxKFNldHVwTWVkaWFDaGFubmVsLCB2b2lk
KHVpbnQzMl90KSk7CiAgIE1PQ0tfQ09OU1RfTUVUSE9EMChzc3JjLCB1aW50MzJfdCgpKTsKICAg
TU9DS19NRVRIT0QwKE5vdGlmeUZpcnN0UGFja2V0UmVjZWl2ZWQsIHZvaWQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L21v
Y2tfcnRwc2VuZGVyaW50ZXJuYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL3Rlc3QvbW9ja19ydHBzZW5kZXJpbnRlcm5hbC5oCmluZGV4IDVlMTRmN2Fk
N2RlNjI1YzQ4YjJhOGRlMjU4MjY2MmY0NjViMDgyNjkuLmRkNGY2OTQ5N2RmNDEyOTE2MTBjMTU3
YWMzNzBkZDlkM2MwYTc1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja19ydHBzZW5kZXJpbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja19ydHBz
ZW5kZXJpbnRlcm5hbC5oCkBAIC0zOSw4ICszOSw3IEBAIGNsYXNzIE1vY2tSdHBTZW5kZXJJbnRl
cm5hbCA6IHB1YmxpYyBSdHBTZW5kZXJJbnRlcm5hbCB7CiAgICAgICAgICAgICAgICAgICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8RnJhbWVFbmNyeXB0b3JJbnRlcmZhY2U+KCkpOwogCiAgIC8vIFJ0
cFNlbmRlckludGVybmFsIG1ldGhvZHMuCi0gIE1PQ0tfTUVUSE9EMShTZXRWb2ljZU1lZGlhQ2hh
bm5lbCwgdm9pZChjcmlja2V0OjpWb2ljZU1lZGlhQ2hhbm5lbCopKTsKLSAgTU9DS19NRVRIT0Qx
KFNldFZpZGVvTWVkaWFDaGFubmVsLCB2b2lkKGNyaWNrZXQ6OlZpZGVvTWVkaWFDaGFubmVsKikp
OworICBNT0NLX01FVEhPRDEoU2V0TWVkaWFDaGFubmVsLCB2b2lkKGNyaWNrZXQ6Ok1lZGlhQ2hh
bm5lbCopKTsKICAgTU9DS19NRVRIT0QxKFNldFNzcmMsIHZvaWQodWludDMyX3QpKTsKICAgTU9D
S19NRVRIT0QxKHNldF9zdHJlYW1faWRzLCB2b2lkKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiYpKTsKICAgTU9DS19NRVRIT0QxKHNldF9pbml0X3NlbmRfZW5jb2RpbmdzLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9t
b2NrcGVlcmNvbm5lY3Rpb25vYnNlcnZlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvbW9ja3BlZXJjb25uZWN0aW9ub2JzZXJ2ZXJzLmgKaW5k
ZXggNmY1ZTliYzY2NTI1OWU3MTBiMzY4Y2RiNGQ2ZTU5OTA4YzA2MjBmOC4uNjJjMGM5NDE1ZjZj
NDE4M2JlY2UxMjc4ODcwZTJiMDY3YWQ0MzkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVzdC9tb2NrcGVlcmNvbm5lY3Rpb25vYnNl
cnZlcnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy90ZXN0L21vY2twZWVyY29ubmVjdGlvbm9ic2VydmVycy5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNs
YXNzIE1vY2tQZWVyQ29ubmVjdGlvbk9ic2VydmVyIDogcHVibGljIFBlZXJDb25uZWN0aW9uT2Jz
ZXJ2ZXIgewogICB9CiAgIHZvaWQgT25TaWduYWxpbmdDaGFuZ2UoCiAgICAgICBQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6U2lnbmFsaW5nU3RhdGUgbmV3X3N0YXRlKSBvdmVycmlkZSB7CisgICAg
UlRDX0RDSEVDSyhwY18pOwogICAgIFJUQ19EQ0hFQ0socGNfLT5zaWduYWxpbmdfc3RhdGUoKSA9
PSBuZXdfc3RhdGUpOwogICAgIHN0YXRlXyA9IG5ld19zdGF0ZTsKICAgfQpAQCAtOTIsNiArOTMs
NyBAQCBjbGFzcyBNb2NrUGVlckNvbm5lY3Rpb25PYnNlcnZlciA6IHB1YmxpYyBQZWVyQ29ubmVj
dGlvbk9ic2VydmVyIHsKIAogICB2b2lkIE9uSWNlQ29ubmVjdGlvbkNoYW5nZSgKICAgICAgIFBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSBvdmVy
cmlkZSB7CisgICAgUlRDX0RDSEVDSyhwY18pOwogICAgIFJUQ19EQ0hFQ0socGNfLT5pY2VfY29u
bmVjdGlvbl9zdGF0ZSgpID09IG5ld19zdGF0ZSk7CiAgICAgLy8gV2hlbiBJQ0UgaXMgZmluaXNo
ZWQsIHRoZSBjYWxsZXIgd2lsbCBnZXQgdG8gYSBrSWNlQ29ubmVjdGlvbkNvbXBsZXRlZAogICAg
IC8vIHN0YXRlLCBiZWNhdXNlIGl0IGhhcyB0aGUgSUNFIGNvbnRyb2xsaW5nIHJvbGUsIHdoaWxl
IHRoZSBjYWxsZWUKQEAgLTEwNCwxMiArMTA2LDE0IEBAIGNsYXNzIE1vY2tQZWVyQ29ubmVjdGlv
bk9ic2VydmVyIDogcHVibGljIFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgewogICB9CiAgIHZvaWQg
T25JY2VHYXRoZXJpbmdDaGFuZ2UoCiAgICAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNl
R2F0aGVyaW5nU3RhdGUgbmV3X3N0YXRlKSBvdmVycmlkZSB7CisgICAgUlRDX0RDSEVDSyhwY18p
OwogICAgIFJUQ19EQ0hFQ0socGNfLT5pY2VfZ2F0aGVyaW5nX3N0YXRlKCkgPT0gbmV3X3N0YXRl
KTsKICAgICBpY2VfZ2F0aGVyaW5nX2NvbXBsZXRlXyA9CiAgICAgICAgIG5ld19zdGF0ZSA9PSBQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUdhdGhlcmluZ0NvbXBsZXRlOwogICAgIGNhbGxi
YWNrX3RyaWdnZXJlZF8gPSB0cnVlOwogICB9CiAgIHZvaWQgT25JY2VDYW5kaWRhdGUoY29uc3Qg
SWNlQ2FuZGlkYXRlSW50ZXJmYWNlKiBjYW5kaWRhdGUpIG92ZXJyaWRlIHsKKyAgICBSVENfRENI
RUNLKHBjXyk7CiAgICAgUlRDX0RDSEVDSyhQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6a0ljZUdh
dGhlcmluZ05ldyAhPQogICAgICAgICAgICAgICAgcGNfLT5pY2VfZ2F0aGVyaW5nX3N0YXRlKCkp
OwogICAgIGNhbmRpZGF0ZXNfLnB1c2hfYmFjayhhYnNsOjptYWtlX3VuaXF1ZTxKc2VwSWNlQ2Fu
ZGlkYXRlPigKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3Rlc3QvcGVlcmNvbm5lY3Rpb250ZXN0d3JhcHBlci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Rlc3QvcGVlcmNvbm5lY3Rpb250ZXN0
d3JhcHBlci5jYwppbmRleCA5YmUxNTk2MzczYzY4MWFkNDIwYzU2ODhkODBjNTYwMDMzNzNhN2Y0
Li5hMWRiOWVkOWU2ZjMwYzNlMDcyNjk1NDk0ZTA4YzVhNjhmOWViMDk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L3BlZXJjb25u
ZWN0aW9udGVzdHdyYXBwZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvdGVzdC9wZWVyY29ubmVjdGlvbnRlc3R3cmFwcGVyLmNjCkBAIC0xMiw2
ICsxMiw3IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNs
dWRlICJhcGkvY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJhcGkv
dmlkZW9fY29kZWNzL2J1aWx0aW5fdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAi
YXBpL3ZpZGVvX2NvZGVjcy9idWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1
ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2F1ZGlvX3Byb2Nlc3NpbmcuaCIK
QEAgLTIyLDYgKzIzLDcgQEAKICNpbmNsdWRlICJwYy90ZXN0L21vY2twZWVyY29ubmVjdGlvbm9i
c2VydmVycy5oIgogI2luY2x1ZGUgInBjL3Rlc3QvcGVlcmNvbm5lY3Rpb250ZXN0d3JhcHBlci5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFk
X2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogdXNpbmcgd2Vi
cnRjOjpGYWtlQ29uc3RyYWludHM7CkBAIC02NCw5ICs2NiwyMCBAQCBQZWVyQ29ubmVjdGlvblRl
c3RXcmFwcGVyOjpQZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyKAogICAgIHJ0Yzo6VGhyZWFkKiB3
b3JrZXJfdGhyZWFkKQogICAgIDogbmFtZV8obmFtZSksCiAgICAgICBuZXR3b3JrX3RocmVhZF8o
bmV0d29ya190aHJlYWQpLAotICAgICAgd29ya2VyX3RocmVhZF8od29ya2VyX3RocmVhZCkge30K
KyAgICAgIHdvcmtlcl90aHJlYWRfKHdvcmtlcl90aHJlYWQpIHsKKyAgcGNfdGhyZWFkX2NoZWNr
ZXJfLkRldGFjaEZyb21UaHJlYWQoKTsKK30KIAotUGVlckNvbm5lY3Rpb25UZXN0V3JhcHBlcjo6
flBlZXJDb25uZWN0aW9uVGVzdFdyYXBwZXIoKSB7fQorUGVlckNvbm5lY3Rpb25UZXN0V3JhcHBl
cjo6flBlZXJDb25uZWN0aW9uVGVzdFdyYXBwZXIoKSB7CisgIFJUQ19EQ0hFQ0tfUlVOX09OKCZw
Y190aHJlYWRfY2hlY2tlcl8pOworICAvLyBFaXRoZXIgbmV0d29ya190aHJlYWQgb3Igd29ya2Vy
X3RocmVhZCBtaWdodCBiZSBhY3RpdmUgYXQgdGhpcyBwb2ludC4KKyAgLy8gUmVseWluZyBvbiB+
UGVlckNvbm5lY3Rpb24gdG8gcHJvcGVybHkgd2FpdCBmb3IgdGhlbSBkb2Vzbid0IHdvcmssCisg
IC8vIGFzIGEgdnB0ciByYWNlIG1pZ2h0IG9jY3VyIChiZWZvcmUgd2UgZW50ZXIgdGhlIGRlc3Ry
dWN0aW9uIGJvZHkpLgorICAvLyBTZWU6IGJ1Z3Mud2VicnRjLm9yZy85ODQ3CisgIGlmIChwYygp
KSB7CisgICAgcGMoKS0+Q2xvc2UoKTsKKyAgfQorfQogCiBib29sIFBlZXJDb25uZWN0aW9uVGVz
dFdyYXBwZXI6OkNyZWF0ZVBjKAogICAgIGNvbnN0IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mIGNvbmZpZywKQEAgLTc1LDYgKzg4LDggQEAgYm9vbCBQ
ZWVyQ29ubmVjdGlvblRlc3RXcmFwcGVyOjpDcmVhdGVQYygKICAgc3RkOjp1bmlxdWVfcHRyPGNy
aWNrZXQ6OlBvcnRBbGxvY2F0b3I+IHBvcnRfYWxsb2NhdG9yKAogICAgICAgbmV3IGNyaWNrZXQ6
OkZha2VQb3J0QWxsb2NhdG9yKG5ldHdvcmtfdGhyZWFkXywgbnVsbHB0cikpOwogCisgIFJUQ19E
Q0hFQ0tfUlVOX09OKCZwY190aHJlYWRfY2hlY2tlcl8pOworCiAgIGZha2VfYXVkaW9fY2FwdHVy
ZV9tb2R1bGVfID0gRmFrZUF1ZGlvQ2FwdHVyZU1vZHVsZTo6Q3JlYXRlKCk7CiAgIGlmIChmYWtl
X2F1ZGlvX2NhcHR1cmVfbW9kdWxlXyA9PSBOVUxMKSB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdGVz
dC9wZWVyY29ubmVjdGlvbnRlc3R3cmFwcGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L3BlZXJjb25uZWN0aW9udGVzdHdyYXBwZXIuaAppbmRl
eCAyMWJhODlhY2JmMDczMDU4MzlhNTFkNTE5OGZhZDRkZDg5MTExZjUyLi5iNmE1N2YzNWQzODIz
MzExYmE1ZjNkM2Q3ZjY2NDZmZjA3ZDIwODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90ZXN0L3BlZXJjb25uZWN0aW9udGVzdHdyYXBw
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy90
ZXN0L3BlZXJjb25uZWN0aW9udGVzdHdyYXBwZXIuaApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1
ZGUgInBjL3Rlc3QvZmFrZWF1ZGlvY2FwdHVyZW1vZHVsZS5oIgogI2luY2x1ZGUgInBjL3Rlc3Qv
ZmFrZXZpZGVvdHJhY2tyZW5kZXJlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5
L3NpZ3Nsb3Qvc2lnc2xvdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgi
CiAKIGNsYXNzIFBlZXJDb25uZWN0aW9uVGVzdFdyYXBwZXIKICAgICA6IHB1YmxpYyB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIsCkBAIC0xMDYsNiArMTA3LDcgQEAgY2xhc3MgUGVlckNv
bm5lY3Rpb25UZXN0V3JhcHBlcgogICBzdGQ6OnN0cmluZyBuYW1lXzsKICAgcnRjOjpUaHJlYWQq
IGNvbnN0IG5ldHdvcmtfdGhyZWFkXzsKICAgcnRjOjpUaHJlYWQqIGNvbnN0IHdvcmtlcl90aHJl
YWRfOworICBydGM6OlRocmVhZENoZWNrZXIgcGNfdGhyZWFkX2NoZWNrZXJfOwogICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gcGVlcl9jb25uZWN0
aW9uXzsKICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlPgogICAgICAgcGVlcl9jb25uZWN0aW9uX2ZhY3RvcnlfOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdmlkZW9jYXB0dXJl
cnRyYWNrc291cmNlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvdmlkZW9jYXB0dXJlcnRyYWNrc291cmNlX3VuaXR0ZXN0LmNjCmluZGV4
IGQyYjhlMTU3NGNlYmQwODNkNjIzNzJkYzI0OGNlN2VjNjQ4Y2U4OGMuLjY3YmVjMzQ1YjY5N2E0
YTcyNWEzMzI0NDNmYTUwYzNjOTYxZTFlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3ZpZGVvY2FwdHVyZXJ0cmFja3NvdXJjZV91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy92aWRlb2NhcHR1cmVydHJhY2tzb3VyY2VfdW5pdHRlc3QuY2MKQEAgLTEyNiw3ICsxMjYsNyBA
QCBjbGFzcyBWaWRlb0NhcHR1cmVyVHJhY2tTb3VyY2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewogICB9CiAKICAgdm9pZCBDYXB0dXJlU2luZ2xlRnJhbWUoKSB7Ci0gICAgcnRjOjpFdmVu
dCBldmVudChmYWxzZSwgZmFsc2UpOworICAgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAgICAgdGFza19x
dWV1ZV8uUG9zdFRhc2soW3RoaXMsICZldmVudF0oKSB7CiAgICAgICBBU1NFUlRfVFJVRShjYXB0
dXJlcl8tPkNhcHR1cmVGcmFtZSgpKTsKICAgICAgIGV2ZW50LlNldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdmlkZW90cmFjay5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdmlkZW90cmFj
ay5oCmluZGV4IGU2NjllMDgxNGM3MjUzZTBhODczNzc0Zjg5MzNhMzQyMTZiYjU1MGQuLmYxMTlk
ZDg2ZDgzZGU2ODA2ZDYzZDA3MmE3ZWEzZTI5ODgyNjQ3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3ZpZGVvdHJhY2suaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy92aWRlb3RyYWNrLmgK
QEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJtZWRpYS9iYXNlL3ZpZGVvc291cmNlYmFzZS5o
IgogI2luY2x1ZGUgInBjL21lZGlhc3RyZWFtdHJhY2suaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
Y29wZWRfcmVmX3B0ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3RocmVhZF9jaGVja2VyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvdmlkZW90
cmFja3NvdXJjZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cGMvdmlkZW90cmFja3NvdXJjZS5oCmluZGV4IDUwNDg4ZGQyYzYwMTFkMzM2YWJlOWJiYTI3N2Ux
MGY2NDY0NjdlNTMuLmNlZGI3NWIzYzg4ZGQ3MzBmNjM4NzU5NWUxYjE2YTBhNjJhZGE5NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Zp
ZGVvdHJhY2tzb3VyY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy92aWRlb3RyYWNrc291cmNlLmgKQEAgLTE1LDEzICsxNSwxNCBAQAogI2luY2x1
ZGUgImFwaS9ub3RpZmllci5oIgogI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19zaW5rX2ludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjaGFubmVsLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRf
Y2hlY2tlci5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gVmlkZW9UcmFja1NvdXJjZSBp
cyBhIGNvbnZlbmllbmNlIGJhc2UgY2xhc3MgZm9yIGltcGxlbWVudGF0aW9ucyBvZgogLy8gVmlk
ZW9UcmFja1NvdXJjZUludGVyZmFjZS4KLWNsYXNzIFZpZGVvVHJhY2tTb3VyY2UgOiBwdWJsaWMg
Tm90aWZpZXI8VmlkZW9UcmFja1NvdXJjZUludGVyZmFjZT4geworY2xhc3MgUlRDX0VYUE9SVCBW
aWRlb1RyYWNrU291cmNlIDogcHVibGljIE5vdGlmaWVyPFZpZGVvVHJhY2tTb3VyY2VJbnRlcmZh
Y2U+IHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IFZpZGVvVHJhY2tTb3VyY2UoYm9vbCByZW1vdGUp
OwogICB2b2lkIFNldFN0YXRlKFNvdXJjZVN0YXRlIG5ld19zdGF0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHAuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHAu
Y2MKaW5kZXggNjY1YjRkNDExYTA1MGE5ODQzMGYyNmQ0ZjRmYWIzNDdmMGJhNDdhOC4uMGNkNmJl
Y2VlZmEzNzdkZmZlN2Y5MzRiOWU1Yjk2NjM1MDQ2YzU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcC5jYwpA
QCAtMjAsMTMgKzIwLDE1IEBACiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHN0cmluZz4KICNp
bmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCi0jaW5jbHVkZSAiYXBpL21lZGlhdHlwZXMuaCIKKyNpbmNsdWRlICJhYnNsL3N0cmlu
Z3MvbWF0Y2guaCIKICNpbmNsdWRlICJhcGkvY2FuZGlkYXRlLmgiCiAjaW5jbHVkZSAiYXBpL2Ny
eXB0b3BhcmFtcy5oIgogI2luY2x1ZGUgImFwaS9qc2VwaWNlY2FuZGlkYXRlLmgiCiAjaW5jbHVk
ZSAiYXBpL2pzZXBzZXNzaW9uZGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJhcGkvbWVkaWF0eXBl
cy5oIgogLy8gZm9yIFJ0cEV4dGVuc2lvbgogI2luY2x1ZGUgImFwaS9ydHBwYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAibWVkaWEvYmFzZS9jb2RlYy5oIgpAQCAtMTE5LDYgKzEyMSw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyIGtBdHRyaWJ1dGVSdGNwTXV4W10gPSAicnRjcC1tdXgiOwogc3RhdGljIGNv
bnN0IGNoYXIga0F0dHJpYnV0ZVJ0Y3BSZWR1Y2VkU2l6ZVtdID0gInJ0Y3AtcnNpemUiOwogc3Rh
dGljIGNvbnN0IGNoYXIga0F0dHJpYnV0ZVNzcmNbXSA9ICJzc3JjIjsKIHN0YXRpYyBjb25zdCBj
aGFyIGtTc3JjQXR0cmlidXRlQ25hbWVbXSA9ICJjbmFtZSI7CitzdGF0aWMgY29uc3QgY2hhciBr
QXR0cmlidXRlRXh0bWFwQWxsb3dNaXhlZFtdID0gImV4dG1hcC1hbGxvdy1taXhlZCI7CiBzdGF0
aWMgY29uc3QgY2hhciBrQXR0cmlidXRlRXh0bWFwW10gPSAiZXh0bWFwIjsKIC8vIGRyYWZ0LWFs
dmVzdHJhbmQtbW11c2ljLW1zaWQtMDEKIC8vIGE9bXNpZC1zZW1hbnRpYzogV01TCkBAIC0zMzQs
OSArMzM3LDEwIEBAIHN0YXRpYyBib29sIFBhcnNlSWNlT3B0aW9ucyhjb25zdCBzdGQ6OnN0cmlu
ZyYgbGluZSwKIHN0YXRpYyBib29sIFBhcnNlRXh0bWFwKGNvbnN0IHN0ZDo6c3RyaW5nJiBsaW5l
LAogICAgICAgICAgICAgICAgICAgICAgICAgUnRwRXh0ZW5zaW9uKiBleHRtYXAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBTZHBQYXJzZUVycm9yKiBlcnJvcik7Ci1zdGF0aWMgYm9vbCBQYXJz
ZUZpbmdlcnByaW50QXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBsaW5lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlNTTEZpbmdlcnByaW50KiogZmluZ2Vy
cHJpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFBhcnNlRXJy
b3IqIGVycm9yKTsKK3N0YXRpYyBib29sIFBhcnNlRmluZ2VycHJpbnRBdHRyaWJ1dGUoCisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIGxpbmUsCisgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6U1NMRmlu
Z2VycHJpbnQ+KiBmaW5nZXJwcmludCwKKyAgICBTZHBQYXJzZUVycm9yKiBlcnJvcik7CiBzdGF0
aWMgYm9vbCBQYXJzZUR0bHNTZXR1cChjb25zdCBzdGQ6OnN0cmluZyYgbGluZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkNvbm5lY3Rpb25Sb2xlKiByb2xlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2RwUGFyc2VFcnJvciogZXJyb3IpOwpAQCAtODUyLDYgKzg1
NiwxMiBAQCBzdGQ6OnN0cmluZyBTZHBTZXJpYWxpemUoY29uc3QgSnNlcFNlc3Npb25EZXNjcmlw
dGlvbiYgamRlc2MpIHsKICAgICBBZGRMaW5lKGdyb3VwX2xpbmUsICZtZXNzYWdlKTsKICAgfQog
CisgIC8vIE1peGVkIG9uZS0gYW5kIHR3by1ieXRlIGhlYWRlciBleHRlbnNpb24uCisgIGlmIChk
ZXNjLT5leHRtYXBfYWxsb3dfbWl4ZWQoKSkgeworICAgIEluaXRBdHRyTGluZShrQXR0cmlidXRl
RXh0bWFwQWxsb3dNaXhlZCwgJm9zKTsKKyAgICBBZGRMaW5lKG9zLnN0cigpLCAmbWVzc2FnZSk7
CisgIH0KKwogICAvLyBNZWRpYVN0cmVhbSBzZW1hbnRpY3MKICAgSW5pdEF0dHJMaW5lKGtBdHRy
aWJ1dGVNc2lkU2VtYW50aWNzLCAmb3MpOwogICBvcyA8PCBrU2RwRGVsaW1pdGVyQ29sb24gPDwg
IiAiIDw8IGtNZWRpYVN0cmVhbVNlbWFudGljOwpAQCAtMTMwMyw4ICsxMzEzLDggQEAgdm9pZCBC
dWlsZE1lZGlhRGVzY3JpcHRpb24oY29uc3QgQ29udGVudEluZm8qIGNvbnRlbnRfaW5mbywKIAog
ICAgICAgaWYgKGRhdGFfZGVzYy0+dXNlX3NjdHBtYXAoKSkgewogICAgICAgICBmb3IgKGNvbnN0
IGNyaWNrZXQ6OkRhdGFDb2RlYyYgY29kZWMgOiBkYXRhX2Rlc2MtPmNvZGVjcygpKSB7Ci0gICAg
ICAgICAgaWYgKGNyaWNrZXQ6OkNvZGVjTmFtZXNFcShjb2RlYy5uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6a0dvb2dsZVNjdHBEYXRhQ29kZWNOYW1l
KSAmJgorICAgICAgICAgIGlmIChhYnNsOjpFcXVhbHNJZ25vcmVDYXNlKGNvZGVjLm5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6a0dvb2dsZVNjdHBE
YXRhQ29kZWNOYW1lKSAmJgogICAgICAgICAgICAgICBjb2RlYy5HZXRQYXJhbShjcmlja2V0Ojpr
Q29kZWNQYXJhbVBvcnQsICZzY3RwX3BvcnQpKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICB9CkBAIC0xNDgyLDcgKzE0OTIsMTcgQEAgdm9pZCBCdWlsZFJ0cENvbnRlbnRBdHRyaWJ1
dGVzKGNvbnN0IE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBtZWRpYV9kZXNjLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBtc2lkX3NpZ25hbGluZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogbWVzc2FnZSkgewogICBydGM6OlN0cmluZ0J1
aWxkZXIgb3M7Ci0gIC8vIFJGQyA1Mjg1CisgIC8vIFJGQyA4Mjg1CisgIC8vIGE9ZXh0bWFwLWFs
bG93LW1peGVkCisgIC8vIFRoZSBhdHRyaWJ1dGUgTVVTVCBiZSBlaXRoZXIgb24gc2Vzc2lvbiBs
ZXZlbCBvciBtZWRpYSBsZXZlbC4gV2Ugc3VwcG9ydAorICAvLyByZXNwb25kaW5nIG9uIGJvdGgg
bGV2ZWxzLCBob3dldmVyLCB3ZSBkb24ndCByZXNwb25kIG9uIG1lZGlhIGxldmVsIGlmIGl0J3MK
KyAgLy8gc2V0IG9uIHNlc3Npb24gbGV2ZWwuCisgIGlmIChtZWRpYV9kZXNjLT5leHRtYXBfYWxs
b3dfbWl4ZWRfZW51bSgpID09CisgICAgICBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlh
KSB7CisgICAgSW5pdEF0dHJMaW5lKGtBdHRyaWJ1dGVFeHRtYXBBbGxvd01peGVkLCAmb3MpOwor
ICAgIEFkZExpbmUob3Muc3RyKCksIG1lc3NhZ2UpOworICB9CisgIC8vIFJGQyA4Mjg1CiAgIC8v
IGE9ZXh0bWFwOjx2YWx1ZT5bIi8iPGRpcmVjdGlvbj5dIDxVUkk+IDxleHRlbnNpb25hdHRyaWJ1
dGVzPgogICAvLyBUaGUgZGVmaW5pdGlvbnMgTVVTVCBiZSBlaXRoZXIgYWxsIHNlc3Npb24gbGV2
ZWwgb3IgYWxsIG1lZGlhIGxldmVsLiBUaGlzCiAgIC8vIGltcGxlbWVudGF0aW9uIHVzZXMgYWxs
IG1lZGlhIGxldmVsLgpAQCAtMTYwOSw3ICsxNjI5LDEyIEBAIHZvaWQgQnVpbGRSdHBDb250ZW50
QXR0cmlidXRlcyhjb25zdCBNZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogbWVkaWFfZGVzYywKICAg
ICAgICAgLy8gU2luY2UgYT1zc3JjIG1zaWQgc2lnbmFsaW5nIGlzIHVzZWQgaW4gUGxhbiBCIFNE
UCBzZW1hbnRpY3MsIGFuZAogICAgICAgICAvLyBtdWx0aXBsZSBzdHJlYW0gaWRzIGFyZSBub3Qg
c3VwcG9ydGVkIGZvciBQbGFuIEIsIHdlIGFyZSBvbmx5IGFkZGluZwogICAgICAgICAvLyBhIGxp
bmUgZm9yIHRoZSBmaXJzdCBtZWRpYSBzdHJlYW0gaWQgaGVyZS4KLSAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHN0cmVhbV9pZCA9IHRyYWNrLmZpcnN0X3N0cmVhbV9pZCgpOworICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgdHJhY2tfc3RyZWFtX2lkID0gdHJhY2suZmlyc3Rfc3RyZWFtX2lk
KCk7CisgICAgICAgIC8vIFdlIHVzZSBhIHNwZWNpYWwgbXNpZC1pZCB2YWx1ZSBvZiAiLSIgdG8g
cmVwcmVzZW50IG5vIHN0cmVhbXMsCisgICAgICAgIC8vIGZvciBVbmlmaWVkIFBsYW4gY29tcGF0
aWJpbGl0eS4gUGxhbiBCIHdpbGwgYWx3YXlzIGhhdmUgYQorICAgICAgICAvLyB0cmFja19zdHJl
YW1faWQuCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHJlYW1faWQgPQorICAgICAgICAg
ICAgdHJhY2tfc3RyZWFtX2lkLmVtcHR5KCkgPyBrTm9TdHJlYW1Nc2lkIDogdHJhY2tfc3RyZWFt
X2lkOwogICAgICAgICBJbml0QXR0ckxpbmUoa0F0dHJpYnV0ZVNzcmMsICZvcyk7CiAgICAgICAg
IG9zIDw8IGtTZHBEZWxpbWl0ZXJDb2xvbiA8PCBzc3JjIDw8IGtTZHBEZWxpbWl0ZXJTcGFjZQog
ICAgICAgICAgICA8PCBrU3NyY0F0dHJpYnV0ZU1zaWQgPDwga1NkcERlbGltaXRlckNvbG9uIDw8
IHN0cmVhbV9pZApAQCAtMTcyNyw3ICsxNzUyLDcgQEAgdm9pZCBBZGRSdGNwRmJMaW5lcyhjb25z
dCBUJiBjb2RlYywgc3RkOjpzdHJpbmcqIG1lc3NhZ2UpIHsKIAogYm9vbCBBZGRTY3RwRGF0YUNv
ZGVjKERhdGFDb250ZW50RGVzY3JpcHRpb24qIG1lZGlhX2Rlc2MsIGludCBzY3RwX3BvcnQpIHsK
ICAgZm9yIChjb25zdCBhdXRvJiBjb2RlYyA6IG1lZGlhX2Rlc2MtPmNvZGVjcygpKSB7Ci0gICAg
aWYgKGNyaWNrZXQ6OkNvZGVjTmFtZXNFcShjb2RlYy5uYW1lLCBjcmlja2V0OjprR29vZ2xlU2N0
cERhdGFDb2RlY05hbWUpKSB7CisgICAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2UoY29kZWMu
bmFtZSwgY3JpY2tldDo6a0dvb2dsZVNjdHBEYXRhQ29kZWNOYW1lKSkgewogICAgICAgcmV0dXJu
IFBhcnNlRmFpbGVkKCIiLCAiQ2FuJ3QgaGF2ZSBtdWx0aXBsZSBzY3RwIHBvcnQgYXR0cmlidXRl
cy4iLCBOVUxMKTsKICAgICB9CiAgIH0KQEAgLTE5OTYsNyArMjAyMSw3IEBAIGJvb2wgUGFyc2VT
ZXNzaW9uRGVzY3JpcHRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCiAgIHN0ZDo6c3Ry
aW5nIGxpbmU7CiAKICAgZGVzYy0+c2V0X21zaWRfc3VwcG9ydGVkKGZhbHNlKTsKLQorICBkZXNj
LT5zZXRfZXh0bWFwX2FsbG93X21peGVkKGZhbHNlKTsKICAgLy8gUkZDIDQ1NjYKICAgLy8gdj0g
IChwcm90b2NvbCB2ZXJzaW9uKQogICBpZiAoIUdldExpbmVXaXRoVHlwZShtZXNzYWdlLCBwb3Ms
ICZsaW5lLCBrTGluZVR5cGVWZXJzaW9uKSkgewpAQCAtMjExNywxMSArMjE0MiwxMSBAQCBib29s
IFBhcnNlU2Vzc2lvbkRlc2NyaXB0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAogICAg
ICAgICAgICAgIkNhbid0IGhhdmUgbXVsdGlwbGUgZmluZ2VycHJpbnQgYXR0cmlidXRlcyBhdCB0
aGUgc2FtZSBsZXZlbC4iLAogICAgICAgICAgICAgZXJyb3IpOwogICAgICAgfQotICAgICAgcnRj
OjpTU0xGaW5nZXJwcmludCogZmluZ2VycHJpbnQgPSBOVUxMOworICAgICAgc3RkOjp1bmlxdWVf
cHRyPHJ0Yzo6U1NMRmluZ2VycHJpbnQ+IGZpbmdlcnByaW50OwogICAgICAgaWYgKCFQYXJzZUZp
bmdlcnByaW50QXR0cmlidXRlKGxpbmUsICZmaW5nZXJwcmludCwgZXJyb3IpKSB7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgIH0KLSAgICAgIHNlc3Npb25fdGQtPmlkZW50aXR5X2Zpbmdl
cnByaW50LnJlc2V0KGZpbmdlcnByaW50KTsKKyAgICAgIHNlc3Npb25fdGQtPmlkZW50aXR5X2Zp
bmdlcnByaW50ID0gc3RkOjptb3ZlKGZpbmdlcnByaW50KTsKICAgICB9IGVsc2UgaWYgKEhhc0F0
dHJpYnV0ZShsaW5lLCBrQXR0cmlidXRlU2V0dXApKSB7CiAgICAgICBpZiAoIVBhcnNlRHRsc1Nl
dHVwKGxpbmUsICYoc2Vzc2lvbl90ZC0+Y29ubmVjdGlvbl9yb2xlKSwgZXJyb3IpKSB7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMzMsNiArMjE1OCw4IEBAIGJvb2wgUGFyc2VTZXNzaW9u
RGVzY3JpcHRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCiAgICAgICB9CiAgICAgICBk
ZXNjLT5zZXRfbXNpZF9zdXBwb3J0ZWQoCiAgICAgICAgICAgQ2FzZUluc2Vuc2l0aXZlRmluZChz
ZW1hbnRpY3MsIGtNZWRpYVN0cmVhbVNlbWFudGljKSk7CisgICAgfSBlbHNlIGlmIChIYXNBdHRy
aWJ1dGUobGluZSwga0F0dHJpYnV0ZUV4dG1hcEFsbG93TWl4ZWQpKSB7CisgICAgICBkZXNjLT5z
ZXRfZXh0bWFwX2FsbG93X21peGVkKHRydWUpOwogICAgIH0gZWxzZSBpZiAoSGFzQXR0cmlidXRl
KGxpbmUsIGtBdHRyaWJ1dGVFeHRtYXApKSB7CiAgICAgICBSdHBFeHRlbnNpb24gZXh0bWFwOwog
ICAgICAgaWYgKCFQYXJzZUV4dG1hcChsaW5lLCAmZXh0bWFwLCBlcnJvcikpIHsKQEAgLTIxNjYs
OSArMjE5MywxMCBAQCBib29sIFBhcnNlR3JvdXBBdHRyaWJ1dGUoY29uc3Qgc3RkOjpzdHJpbmcm
IGxpbmUsCiAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBQYXJzZUZpbmdlcnByaW50
QXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBsaW5lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydGM6OlNTTEZpbmdlcnByaW50KiogZmluZ2VycHJpbnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yKSB7
CitzdGF0aWMgYm9vbCBQYXJzZUZpbmdlcnByaW50QXR0cmlidXRlKAorICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBsaW5lLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlNTTEZpbmdlcnByaW50Piog
ZmluZ2VycHJpbnQsCisgICAgU2RwUGFyc2VFcnJvciogZXJyb3IpIHsKICAgaWYgKCFJc0xpbmVU
eXBlKGxpbmUsIGtMaW5lVHlwZUF0dHJpYnV0ZXMpIHx8CiAgICAgICAhSGFzQXR0cmlidXRlKGxp
bmUsIGtBdHRyaWJ1dGVGaW5nZXJwcmludCkpIHsKICAgICByZXR1cm4gUGFyc2VGYWlsZWRFeHBl
Y3RMaW5lKGxpbmUsIDAsIGtMaW5lVHlwZUF0dHJpYnV0ZXMsCkBAIC0yMTk0LDcgKzIyMjIsOCBA
QCBzdGF0aWMgYm9vbCBQYXJzZUZpbmdlcnByaW50QXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBsaW5lLAogICAgICAgICAgICAgICAgICA6OnRvbG93ZXIpOwogCiAgIC8vIFRoZSBzZWNvbmQg
ZmllbGQgaXMgdGhlIGRpZ2VzdCB2YWx1ZS4gRGUtaGV4aWZ5IGl0LgotICAqZmluZ2VycHJpbnQg
PSBydGM6OlNTTEZpbmdlcnByaW50OjpDcmVhdGVGcm9tUmZjNDU3MihhbGdvcml0aG0sIGZpZWxk
c1sxXSk7CisgICpmaW5nZXJwcmludCA9CisgICAgICBydGM6OlNTTEZpbmdlcnByaW50OjpDcmVh
dGVVbmlxdWVGcm9tUmZjNDU3MihhbGdvcml0aG0sIGZpZWxkc1sxXSk7CiAgIGlmICghKmZpbmdl
cnByaW50KSB7CiAgICAgcmV0dXJuIFBhcnNlRmFpbGVkKGxpbmUsICJGYWlsZWQgdG8gY3JlYXRl
IGZpbmdlcnByaW50IGZyb20gdGhlIGRpZ2VzdC4iLAogICAgICAgICAgICAgICAgICAgICAgICBl
cnJvcik7CkBAIC0yODM0LDEyICsyODYzLDExIEBAIGJvb2wgUGFyc2VDb250ZW50KGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZXNzYWdlLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChIYXNBdHRyaWJ1dGUobGluZSwga0F0dHJpYnV0ZUZpbmdlcnByaW50KSkgewot
ICAgICAgcnRjOjpTU0xGaW5nZXJwcmludCogZmluZ2VycHJpbnQgPSBOVUxMOwotCisgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpTU0xGaW5nZXJwcmludD4gZmluZ2VycHJpbnQ7CiAgICAgICBp
ZiAoIVBhcnNlRmluZ2VycHJpbnRBdHRyaWJ1dGUobGluZSwgJmZpbmdlcnByaW50LCBlcnJvcikp
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgfQotICAgICAgdHJhbnNwb3J0LT5pZGVu
dGl0eV9maW5nZXJwcmludC5yZXNldChmaW5nZXJwcmludCk7CisgICAgICB0cmFuc3BvcnQtPmlk
ZW50aXR5X2ZpbmdlcnByaW50ID0gc3RkOjptb3ZlKGZpbmdlcnByaW50KTsKICAgICB9IGVsc2Ug
aWYgKEhhc0F0dHJpYnV0ZShsaW5lLCBrQXR0cmlidXRlU2V0dXApKSB7CiAgICAgICBpZiAoIVBh
cnNlRHRsc1NldHVwKGxpbmUsICYodHJhbnNwb3J0LT5jb25uZWN0aW9uX3JvbGUpLCBlcnJvcikp
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjkwMiw2ICsyOTMwLDkgQEAgYm9vbCBQYXJz
ZUNvbnRlbnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCiAgICAgICAgIG1lZGlhX2Rlc2Mt
PnNldF9kaXJlY3Rpb24oUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246OmtJbmFjdGl2ZSk7CiAgICAg
ICB9IGVsc2UgaWYgKEhhc0F0dHJpYnV0ZShsaW5lLCBrQXR0cmlidXRlU2VuZFJlY3YpKSB7CiAg
ICAgICAgIG1lZGlhX2Rlc2MtPnNldF9kaXJlY3Rpb24oUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246
OmtTZW5kUmVjdik7CisgICAgICB9IGVsc2UgaWYgKEhhc0F0dHJpYnV0ZShsaW5lLCBrQXR0cmli
dXRlRXh0bWFwQWxsb3dNaXhlZCkpIHsKKyAgICAgICAgbWVkaWFfZGVzYy0+c2V0X2V4dG1hcF9h
bGxvd19taXhlZF9lbnVtKAorICAgICAgICAgICAgTWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtN
ZWRpYSk7CiAgICAgICB9IGVsc2UgaWYgKEhhc0F0dHJpYnV0ZShsaW5lLCBrQXR0cmlidXRlRXh0
bWFwKSkgewogICAgICAgICBSdHBFeHRlbnNpb24gZXh0bWFwOwogICAgICAgICBpZiAoIVBhcnNl
RXh0bWFwKGxpbmUsICZleHRtYXAsIGVycm9yKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHAuaAppbmRleCAyZDg0
MmExZDVkNGI4MDkxYmI3NGE5NGY5NmVmYWI2MDlkMDc3ZDI5Li5mMTg1YzA4OTMyMDA4OThiZDE3
MDY1MTlmMWI2NTlkNWY0OTZiMmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHAuaApAQCAtMjIsNiArMjIsOCBA
QAogCiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19l
eHBvcnQuaCIKKwogbmFtZXNwYWNlIGNyaWNrZXQgewogY2xhc3MgQ2FuZGlkYXRlOwogfSAgLy8g
bmFtZXNwYWNlIGNyaWNrZXQKQEAgLTQ2LDcgKzQ4LDggQEAgc3RkOjpzdHJpbmcgU2RwU2VyaWFs
aXplQ2FuZGlkYXRlKGNvbnN0IEljZUNhbmRpZGF0ZUludGVyZmFjZSYgY2FuZGlkYXRlKTsKIAog
Ly8gU2VyaWFsaXplcyBhIGNyaWNrZXQgQ2FuZGlkYXRlLgogLy8gY2FuZGlkYXRlIC0gVGhlIGNh
bmRpZGF0ZSB0byBiZSBzZXJpYWxpemVkLgotc3RkOjpzdHJpbmcgU2RwU2VyaWFsaXplQ2FuZGlk
YXRlKGNvbnN0IGNyaWNrZXQ6OkNhbmRpZGF0ZSYgY2FuZGlkYXRlKTsKK1JUQ19FWFBPUlQgc3Rk
OjpzdHJpbmcgU2RwU2VyaWFsaXplQ2FuZGlkYXRlKAorICAgIGNvbnN0IGNyaWNrZXQ6OkNhbmRp
ZGF0ZSYgY2FuZGlkYXRlKTsKIAogLy8gRGVzZXJpYWxpemVzIHRoZSBwYXNzZWQgaW4gU0RQIHN0
cmluZyB0byBhIEpzZXBTZXNzaW9uRGVzY3JpcHRpb24uCiAvLyBtZXNzYWdlIC0gU0RQIHN0cmlu
ZyB0byBiZSBEZXNlcmlhbGl6ZWQuCkBAIC03NiwxMCArNzksMTAgQEAgYm9vbCBTZHBEZXNlcmlh
bGl6ZUNhbmRpZGF0ZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKIC8vIGNhbmRpZGF0ZSAt
IFRoZSBjcmlja2V0IENhbmRpZGF0ZSBmcm9tIHRoZSBTRFAgc3RyaW5nLgogLy8gZXJyb3IgLSBU
aGUgZGV0YWlsIGVycm9yIGluZm9ybWF0aW9uIHdoZW4gcGFyc2luZyBmYWlscy4KIC8vIHJldHVy
biAtIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KLWJvb2wgU2RwRGVzZXJpYWxp
emVDYW5kaWRhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIHRyYW5zcG9ydF9uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6Q2FuZGlkYXRlKiBjYW5kaWRhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNkcFBhcnNlRXJyb3IqIGVycm9yKTsKK1JUQ19FWFBP
UlQgYm9vbCBTZHBEZXNlcmlhbGl6ZUNhbmRpZGF0ZShjb25zdCBzdGQ6OnN0cmluZyYgdHJhbnNw
b3J0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JpY2tldDo6Q2FuZGlkYXRlKiBjYW5kaWRhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2RwUGFyc2VFcnJvciogZXJyb3IpOwogCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcF91bml0dGVzdC5jYwppbmRleCA5
YzEwNTU0NjMxNTNiZTcxMjI1NGEwMzQyMTI3YTgwMDQ2ZWY2NmVlLi5lN2M1Yzc3YmI2MWFkZTJi
NWY5NDg5MjY2MTAyNTdiMTA5NjVkMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHBfdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwX3VuaXR0
ZXN0LmNjCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3N0cmluZ2VuY29kZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKQEAg
LTg5LDYgKzkwLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIga0F0dHJpYnV0ZUNyeXB0b1ZpZGVvW10g
PQogc3RhdGljIGNvbnN0IGNoYXIga0ZpbmdlcnByaW50W10gPQogICAgICJhPWZpbmdlcnByaW50
OnNoYS0xICIKICAgICAiNEE6QUQ6Qjk6QjE6M0Y6ODI6MTg6M0I6NTQ6MDI6MTI6REY6M0U6NUQ6
NDk6NkI6MTk6RTU6N0M6QUJcclxuIjsKK3N0YXRpYyBjb25zdCBjaGFyIGtFeHRtYXBBbGxvd01p
eGVkW10gPSAiYT1leHRtYXAtYWxsb3ctbWl4ZWRcclxuIjsKIHN0YXRpYyBjb25zdCBpbnQga0V4
dG1hcElkID0gMTsKIHN0YXRpYyBjb25zdCBjaGFyIGtFeHRtYXBVcmlbXSA9ICJodHRwOi8vZXhh
bXBsZS5jb20vMDgyMDA1L2V4dC5odG0jdHRpbWUiOwogc3RhdGljIGNvbnN0IGNoYXIga0V4dG1h
cFtdID0KQEAgLTYyMSw4ICs2MjMsOCBAQCBzdGF0aWMgY29uc3QgY2hhciBrVW5pZmllZFBsYW5T
ZHBGdWxsU3RyaW5nV2l0aFNwZWNpYWxNc2lkW10gPQogICAgICJnZW5lcmF0aW9uIDJcclxuIgog
ICAgICJhPWljZS11ZnJhZzp1ZnJhZ192b2ljZVxyXG5hPWljZS1wd2Q6cHdkX3ZvaWNlXHJcbiIK
ICAgICAiYT1taWQ6YXVkaW9fY29udGVudF9uYW1lXHJcbiIKLSAgICAiYT1tc2lkOmxvY2FsX3N0
cmVhbV8xIGF1ZGlvX3RyYWNrX2lkXzFcclxuIgogICAgICJhPXNlbmRyZWN2XHJcbiIKKyAgICAi
YT1tc2lkOmxvY2FsX3N0cmVhbV8xIGF1ZGlvX3RyYWNrX2lkXzFcclxuIgogICAgICJhPXJ0Y3At
bXV4XHJcbiIKICAgICAiYT1ydGNwLXJzaXplXHJcbiIKICAgICAiYT1jcnlwdG86MSBBRVNfQ01f
MTI4X0hNQUNfU0hBMV8zMiAiCkBAIC02NDEsOSArNjQzLDkgQEAgc3RhdGljIGNvbnN0IGNoYXIg
a1VuaWZpZWRQbGFuU2RwRnVsbFN0cmluZ1dpdGhTcGVjaWFsTXNpZFtdID0KICAgICAiYT1ydGNw
OjkgSU4gSVA0IDAuMC4wLjBcclxuIgogICAgICJhPWljZS11ZnJhZzp1ZnJhZ192b2ljZV8yXHJc
bmE9aWNlLXB3ZDpwd2Rfdm9pY2VfMlxyXG4iCiAgICAgImE9bWlkOmF1ZGlvX2NvbnRlbnRfbmFt
ZV8yXHJcbiIKKyAgICAiYT1zZW5kcmVjdlxyXG4iCiAgICAgImE9bXNpZDpsb2NhbF9zdHJlYW1f
MSBhdWRpb190cmFja19pZF8yXHJcbiIKICAgICAiYT1tc2lkOmxvY2FsX3N0cmVhbV8yIGF1ZGlv
X3RyYWNrX2lkXzJcclxuIgotICAgICJhPXNlbmRyZWN2XHJcbiIKICAgICAiYT1ydGNwLW11eFxy
XG4iCiAgICAgImE9cnRjcC1yc2l6ZVxyXG4iCiAgICAgImE9Y3J5cHRvOjEgQUVTX0NNXzEyOF9I
TUFDX1NIQTFfMzIgIgpAQCAtNjY0LDggKzY2Niw4IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtVbmlm
aWVkUGxhblNkcEZ1bGxTdHJpbmdXaXRoU3BlY2lhbE1zaWRbXSA9CiAgICAgImE9cnRjcDo5IElO
IElQNCAwLjAuMC4wXHJcbiIKICAgICAiYT1pY2UtdWZyYWc6dWZyYWdfdm9pY2VfM1xyXG5hPWlj
ZS1wd2Q6cHdkX3ZvaWNlXzNcclxuIgogICAgICJhPW1pZDphdWRpb19jb250ZW50X25hbWVfM1xy
XG4iCi0gICAgImE9bXNpZDotIGF1ZGlvX3RyYWNrX2lkXzNcclxuIgogICAgICJhPXNlbmRyZWN2
XHJcbiIKKyAgICAiYT1tc2lkOi0gYXVkaW9fdHJhY2tfaWRfM1xyXG4iCiAgICAgImE9cnRjcC1t
dXhcclxuIgogICAgICJhPXJ0Y3AtcnNpemVcclxuIgogICAgICJhPWNyeXB0bzoxIEFFU19DTV8x
MjhfSE1BQ19TSEExXzMyICIKQEAgLTY3NCw3ICs2NzYsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIg
a1VuaWZpZWRQbGFuU2RwRnVsbFN0cmluZ1dpdGhTcGVjaWFsTXNpZFtdID0KICAgICAiYT1ydHBt
YXA6MTExIG9wdXMvNDgwMDAvMlxyXG4iCiAgICAgImE9cnRwbWFwOjEwMyBJU0FDLzE2MDAwXHJc
biIKICAgICAiYT1ydHBtYXA6MTA0IElTQUMvMzIwMDBcclxuIgotICAgICJhPXNzcmM6NyBjbmFt
ZTpzdHJlYW1fMl9jbmFtZVxyXG4iOworICAgICJhPXNzcmM6NyBjbmFtZTpzdHJlYW1fMl9jbmFt
ZVxyXG4iCisgICAgImE9c3NyYzo3IG1zaWQ6LSBhdWRpb190cmFja19pZF8zXHJcbiIKKyAgICAi
YT1zc3JjOjcgbXNsYWJlbDotXHJcbiIKKyAgICAiYT1zc3JjOjcgbGFiZWw6YXVkaW9fdHJhY2tf
aWRfM1xyXG4iOwogCiAvLyBPbmUgY2FuZGlkYXRlIHJlZmVyZW5jZSBzdHJpbmcgYXMgcGVyIFcz
YyBzcGVjLgogLy8gY2FuZGlkYXRlOjxibGFoPiBub3QgYT1jYW5kaWRhdGU6PGJsYWg+Q1JMRgpA
QCAtMTE2MCw3ICsxMTY1LDcgQEAgY2xhc3MgV2ViUnRjU2RwVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKICAgLy8gd2l0aCAzIGF1ZGlvIE1lZGlhQ29udGVudERlc2NyaXB0aW9ucyB3aXRo
IHNwZWNpYWwgU3RyZWFtUGFyYW1zIHRoYXQKICAgLy8gY29udGFpbiAwIG9yIG11bHRpcGxlIHN0
cmVhbSBpZHM6IC0gYXVkaW8gdHJhY2sgMSBoYXMgMSBtZWRpYSBzdHJlYW0gaWQgLQogICAvLyBh
dWRpbyB0cmFjayAyIGhhcyAyIG1lZGlhIHN0cmVhbSBpZHMgLSBhdWRpbyB0cmFjayAzIGhhcyAw
IG1lZGlhIHN0cmVhbSBpZHMKLSAgdm9pZCBNYWtlVW5pZmllZFBsYW5EZXNjcmlwdGlvbk11bHRp
cGxlU3RyZWFtSWRzKCkgeworICB2b2lkIE1ha2VVbmlmaWVkUGxhbkRlc2NyaXB0aW9uTXVsdGlw
bGVTdHJlYW1JZHMoY29uc3QgaW50IG1zaWRfc2lnbmFsaW5nKSB7CiAgICAgZGVzY18uUmVtb3Zl
Q29udGVudEJ5TmFtZShrVmlkZW9Db250ZW50TmFtZSk7CiAgICAgZGVzY18uUmVtb3ZlVHJhbnNw
b3J0SW5mb0J5TmFtZShrVmlkZW9Db250ZW50TmFtZSk7CiAgICAgUmVtb3ZlVmlkZW9DYW5kaWRh
dGVzKCk7CkBAIC0xMTg4LDkgKzExOTMsNyBAQCBjbGFzcyBXZWJSdGNTZHBUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewogICAgIGRlc2NfLkFkZENvbnRlbnQoa0F1ZGlvQ29udGVudE5hbWUz
LCBNZWRpYVByb3RvY29sVHlwZTo6a1J0cCwgYXVkaW9fZGVzY18zKTsKICAgICBFWFBFQ1RfVFJV
RShkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8oCiAgICAgICAgIGtBdWRpb0Nv
bnRlbnROYW1lMywgVHJhbnNwb3J0RGVzY3JpcHRpb24oa1VmcmFnVm9pY2UzLCBrUHdkVm9pY2Uz
KSkpKTsKLSAgICAvLyBNYWtlIHN1cmUgdG8gY3JlYXRlIGJvdGggYT1tc2lkIGxpbmVzLgotICAg
IGRlc2NfLnNldF9tc2lkX3NpZ25hbGluZyhjcmlja2V0OjprTXNpZFNpZ25hbGluZ01lZGlhU2Vj
dGlvbiB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OmtNc2lkU2lnbmFs
aW5nU3NyY0F0dHJpYnV0ZSk7CisgICAgZGVzY18uc2V0X21zaWRfc2lnbmFsaW5nKG1zaWRfc2ln
bmFsaW5nKTsKICAgICBBU1NFUlRfVFJVRShqZGVzY18uSW5pdGlhbGl6ZShkZXNjXy5Db3B5KCks
IGpkZXNjXy5zZXNzaW9uX2lkKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
amRlc2NfLnNlc3Npb25fdmVyc2lvbigpKSk7CiAgIH0KQEAgLTEyODIsNiArMTI4NSw5IEBAIGNs
YXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgLy8gc3RyZWFt
cwogICAgIEVYUEVDVF9FUShjZDEtPnN0cmVhbXMoKSwgY2QyLT5zdHJlYW1zKCkpOwogCisgICAg
Ly8gZXh0bWFwLWFsbG93LW1peGVkCisgICAgRVhQRUNUX0VRKGNkMS0+ZXh0bWFwX2FsbG93X21p
eGVkX2VudW0oKSwgY2QyLT5leHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgpKTsKKwogICAgIC8vIGV4
dG1hcAogICAgIEFTU0VSVF9FUShjZDEtPnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucygpLnNpemUoKSwK
ICAgICAgICAgICAgICAgY2QyLT5ydHBfaGVhZGVyX2V4dGVuc2lvbnMoKS5zaXplKCkpOwpAQCAt
MTM5OCw2ICsxNDA0LDcgQEAgY2xhc3MgV2ViUnRjU2RwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKIAogICAgIC8vIGdsb2JhbCBhdHRyaWJ1dGVzCiAgICAgRVhQRUNUX0VRKGRlc2MxLm1z
aWRfc3VwcG9ydGVkKCksIGRlc2MyLm1zaWRfc3VwcG9ydGVkKCkpOworICAgIEVYUEVDVF9FUShk
ZXNjMS5leHRtYXBfYWxsb3dfbWl4ZWQoKSwgZGVzYzIuZXh0bWFwX2FsbG93X21peGVkKCkpOwog
ICB9CiAKICAgYm9vbCBDb21wYXJlU2Vzc2lvbkRlc2NyaXB0aW9uKGNvbnN0IEpzZXBTZXNzaW9u
RGVzY3JpcHRpb24mIGRlc2MxLApAQCAtMTQ5NSw4ICsxNTAyLDcgQEAgY2xhc3MgV2ViUnRjU2Rw
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgdm9pZCBBZGRGaW5nZXJwcmludCgpIHsK
ICAgICBkZXNjXy5SZW1vdmVUcmFuc3BvcnRJbmZvQnlOYW1lKGtBdWRpb0NvbnRlbnROYW1lKTsK
ICAgICBkZXNjXy5SZW1vdmVUcmFuc3BvcnRJbmZvQnlOYW1lKGtWaWRlb0NvbnRlbnROYW1lKTsK
LSAgICBydGM6OlNTTEZpbmdlcnByaW50IGZpbmdlcnByaW50KHJ0Yzo6RElHRVNUX1NIQV8xLCBr
SWRlbnRpdHlEaWdlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
b2Yoa0lkZW50aXR5RGlnZXN0KSk7CisgICAgcnRjOjpTU0xGaW5nZXJwcmludCBmaW5nZXJwcmlu
dChydGM6OkRJR0VTVF9TSEFfMSwga0lkZW50aXR5RGlnZXN0KTsKICAgICBFWFBFQ1RfVFJVRShk
ZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8oCiAgICAgICAgIGtBdWRpb0NvbnRl
bnROYW1lLAogICAgICAgICBUcmFuc3BvcnREZXNjcmlwdGlvbihzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4oKSwga1VmcmFnVm9pY2UsIGtQd2RWb2ljZSwKQEAgLTE1NDAsNiArMTU0NiwyNyBAQCBj
bGFzcyBXZWJSdGNTZHBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIH0KICAgfQog
CisgIC8vIFJlbW92ZXMgYWxsIGE9c3NyYyBsaW5lcyBmcm9tIHRoZSBTRFAgc3RyaW5nLCBleGNl
cHQgZm9yIHRoZQorICAvLyAiYT1zc3JjOi4uLiBjbmFtZTouLi4iIGxpbmVzLgorICB2b2lkIFJl
bW92ZVNzcmNNc2lkTGluZXNGcm9tU2RwU3RyaW5nKHN0ZDo6c3RyaW5nKiBzZHBfc3RyaW5nKSB7
CisgICAgY29uc3QgY2hhciBrQXR0cmlidXRlU3NyY1tdID0gImE9c3NyYyI7CisgICAgY29uc3Qg
Y2hhciBrQXR0cmlidXRlQ25hbWVbXSA9ICJjbmFtZSI7CisgICAgc2l6ZV90IHNzcmNfbGluZV9w
b3MgPSBzZHBfc3RyaW5nLT5maW5kKGtBdHRyaWJ1dGVTc3JjKTsKKyAgICB3aGlsZSAoc3NyY19s
aW5lX3BvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgc2l6ZV90IGJlZ19saW5lX3Bv
cyA9IHNkcF9zdHJpbmctPnJmaW5kKCdcbicsIHNzcmNfbGluZV9wb3MpOworICAgICAgc2l6ZV90
IGVuZF9saW5lX3BvcyA9IHNkcF9zdHJpbmctPmZpbmQoJ1xuJywgc3NyY19saW5lX3Bvcyk7Cisg
ICAgICBzaXplX3QgY25hbWVfcG9zID0gc2RwX3N0cmluZy0+ZmluZChrQXR0cmlidXRlQ25hbWUs
IHNzcmNfbGluZV9wb3MpOworICAgICAgaWYgKGNuYW1lX3BvcyA9PSBzdGQ6OnN0cmluZzo6bnBv
cyB8fCBjbmFtZV9wb3MgPiBlbmRfbGluZV9wb3MpIHsKKyAgICAgICAgLy8gT25seSBlcmFzZSBh
PXNzcmMgbGluZXMgdGhhdCBkb24ndCBjb250YWluICJjbmFtZSIuCisgICAgICAgIHNkcF9zdHJp
bmctPmVyYXNlKGJlZ19saW5lX3BvcywgZW5kX2xpbmVfcG9zIC0gYmVnX2xpbmVfcG9zKTsKKyAg
ICAgICAgc3NyY19saW5lX3BvcyA9IHNkcF9zdHJpbmctPmZpbmQoa0F0dHJpYnV0ZVNzcmMsIGJl
Z19saW5lX3Bvcyk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBTa2lwIHRoZSAiYT1zc3Jj
Oi4uLiBjbmFtZSIgbGluZSBhbmQgZmluZCB0aGUgbmV4dCAiYT1zc3JjIiBsaW5lLgorICAgICAg
ICBzc3JjX2xpbmVfcG9zID0gc2RwX3N0cmluZy0+ZmluZChrQXR0cmlidXRlU3NyYywgZW5kX2xp
bmVfcG9zKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKwogICAvLyBSZW1vdmVzIGFsbCBhPXNzcmMg
bGluZXMgZnJvbSB0aGUgU0RQIHN0cmluZy4KICAgdm9pZCBSZW1vdmVTc3JjTGluZXNGcm9tU2Rw
U3RyaW5nKHN0ZDo6c3RyaW5nKiBzZHBfc3RyaW5nKSB7CiAgICAgY29uc3QgY2hhciBrQXR0cmli
dXRlU3NyY1tdID0gImE9c3NyYyI7CkBAIC0yMDcwLDkgKzIwOTcsOCBAQCBURVNUX0YoV2ViUnRj
U2RwVGVzdCwgU2VyaWFsaXplV2l0aFNjdHBEYXRhQ2hhbm5lbEFuZE5ld1BvcnQpIHsKIAogICBj
aGFyIGRlZmF1bHRfcG9ydHN0clsxNl07CiAgIGNoYXIgbmV3X3BvcnRzdHJbMTZdOwotICBydGM6
OnNwcmludGZuKGRlZmF1bHRfcG9ydHN0ciwgc2l6ZW9mKGRlZmF1bHRfcG9ydHN0ciksICIlZCIs
Ci0gICAgICAgICAgICAgICAga0RlZmF1bHRTY3RwUG9ydCk7Ci0gIHJ0Yzo6c3ByaW50Zm4obmV3
X3BvcnRzdHIsIHNpemVvZihuZXdfcG9ydHN0ciksICIlZCIsIGtOZXdQb3J0KTsKKyAgc25wcmlu
dGYoZGVmYXVsdF9wb3J0c3RyLCBzaXplb2YoZGVmYXVsdF9wb3J0c3RyKSwgIiVkIiwga0RlZmF1
bHRTY3RwUG9ydCk7CisgIHNucHJpbnRmKG5ld19wb3J0c3RyLCBzaXplb2YobmV3X3BvcnRzdHIp
LCAiJWQiLCBrTmV3UG9ydCk7CiAgIHJ0Yzo6cmVwbGFjZV9zdWJzdHJzKGRlZmF1bHRfcG9ydHN0
ciwgc3RybGVuKGRlZmF1bHRfcG9ydHN0ciksIG5ld19wb3J0c3RyLAogICAgICAgICAgICAgICAg
ICAgICAgICBzdHJsZW4obmV3X3BvcnRzdHIpLCAmZXhwZWN0ZWRfc2RwKTsKIApAQCAtMjA5NCw2
ICsyMTIwLDI1IEBAIFRFU1RfRihXZWJSdGNTZHBUZXN0LCBTZXJpYWxpemVTZXNzaW9uRGVzY3Jp
cHRpb25XaXRoRGF0YUNoYW5uZWxBbmRCYW5kd2lkdGgpIHsKICAgRVhQRUNUX0VRKGV4cGVjdGVk
X3NkcCwgbWVzc2FnZSk7CiB9CiAKK1RFU1RfRihXZWJSdGNTZHBUZXN0LCBTZXJpYWxpemVTZXNz
aW9uRGVzY3JpcHRpb25XaXRoRXh0bWFwQWxsb3dNaXhlZCkgeworICBqZGVzY18uZGVzY3JpcHRp
b24oKS0+c2V0X2V4dG1hcF9hbGxvd19taXhlZCh0cnVlKTsKKyAgVGVzdFNlcmlhbGl6ZShqZGVz
Y18pOworfQorCitURVNUX0YoV2ViUnRjU2RwVGVzdCwgU2VyaWFsaXplTWVkaWFDb250ZW50RGVz
Y3JpcHRpb25XaXRoRXh0bWFwQWxsb3dNaXhlZCkgeworICBjcmlja2V0OjpNZWRpYUNvbnRlbnRE
ZXNjcmlwdGlvbiogdmlkZW9fZGVzYyA9CisgICAgICBqZGVzY18uZGVzY3JpcHRpb24oKS0+R2V0
Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKGtWaWRlb0NvbnRlbnROYW1lKTsKKyAgQVNTRVJUX1RS
VUUodmlkZW9fZGVzYyk7CisgIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBhdWRp
b19kZXNjID0KKyAgICAgIGpkZXNjXy5kZXNjcmlwdGlvbigpLT5HZXRDb250ZW50RGVzY3JpcHRp
b25CeU5hbWUoa0F1ZGlvQ29udGVudE5hbWUpOworICBBU1NFUlRfVFJVRShhdWRpb19kZXNjKTsK
KyAgdmlkZW9fZGVzYy0+c2V0X2V4dG1hcF9hbGxvd19taXhlZF9lbnVtKAorICAgICAgY3JpY2tl
dDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb246OmtNZWRpYSk7CisgIGF1ZGlvX2Rlc2MtPnNldF9l
eHRtYXBfYWxsb3dfbWl4ZWRfZW51bSgKKyAgICAgIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2Ny
aXB0aW9uOjprTWVkaWEpOworICBUZXN0U2VyaWFsaXplKGpkZXNjXyk7Cit9CisKIFRFU1RfRihX
ZWJSdGNTZHBUZXN0LCBTZXJpYWxpemVTZXNzaW9uRGVzY3JpcHRpb25XaXRoRXh0bWFwKSB7CiAg
IGJvb2wgZW5jcnlwdGVkID0gZmFsc2U7CiAgIEFkZEV4dG1hcChlbmNyeXB0ZWQpOwpAQCAtMjQz
MSw2ICsyNDc2LDUzIEBAIFRFU1RfRihXZWJSdGNTZHBUZXN0LCBEZXNlcmlhbGl6ZVNlc3Npb25E
ZXNjcmlwdGlvbldpdGhvdXRNc2lkKSB7CiAgIEVYUEVDVF9UUlVFKENvbXBhcmVTZXNzaW9uRGVz
Y3JpcHRpb24oamRlc2NfLCBqZGVzYykpOwogfQogCitURVNUX0YoV2ViUnRjU2RwVGVzdCwgRGVz
ZXJpYWxpemVTZXNzaW9uRGVzY3JpcHRpb25XaXRoRXh0bWFwQWxsb3dNaXhlZCkgeworICBqZGVz
Y18uZGVzY3JpcHRpb24oKS0+c2V0X2V4dG1hcF9hbGxvd19taXhlZCh0cnVlKTsKKyAgc3RkOjpz
dHJpbmcgc2RwX3dpdGhfZXh0bWFwX2FsbG93X21peGVkID0ga1NkcEZ1bGxTdHJpbmc7CisgIElu
amVjdEFmdGVyKCJ0PTAgMFxyXG4iLCBrRXh0bWFwQWxsb3dNaXhlZCwgJnNkcF93aXRoX2V4dG1h
cF9hbGxvd19taXhlZCk7CisgIC8vIERlc2VyaWFsaXplCisgIEpzZXBTZXNzaW9uRGVzY3JpcHRp
b24gamRlc2NfZGVzZXJpYWxpemVkKGtEdW1teVR5cGUpOworICBFWFBFQ1RfVFJVRShTZHBEZXNl
cmlhbGl6ZShzZHBfd2l0aF9leHRtYXBfYWxsb3dfbWl4ZWQsICZqZGVzY19kZXNlcmlhbGl6ZWQp
KTsKKyAgLy8gVmVyaWZ5CisgIEVYUEVDVF9UUlVFKENvbXBhcmVTZXNzaW9uRGVzY3JpcHRpb24o
amRlc2NfLCBqZGVzY19kZXNlcmlhbGl6ZWQpKTsKK30KKworVEVTVF9GKFdlYlJ0Y1NkcFRlc3Qs
IERlc2VyaWFsaXplU2Vzc2lvbkRlc2NyaXB0aW9uV2l0aG91dEV4dG1hcEFsbG93TWl4ZWQpIHsK
KyAgamRlc2NfLmRlc2NyaXB0aW9uKCktPnNldF9leHRtYXBfYWxsb3dfbWl4ZWQoZmFsc2UpOwor
ICBzdGQ6OnN0cmluZyBzZHBfd2l0aG91dF9leHRtYXBfYWxsb3dfbWl4ZWQgPSBrU2RwRnVsbFN0
cmluZzsKKyAgLy8gRGVzZXJpYWxpemUKKyAgSnNlcFNlc3Npb25EZXNjcmlwdGlvbiBqZGVzY19k
ZXNlcmlhbGl6ZWQoa0R1bW15VHlwZSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgU2RwRGVzZXJp
YWxpemUoc2RwX3dpdGhvdXRfZXh0bWFwX2FsbG93X21peGVkLCAmamRlc2NfZGVzZXJpYWxpemVk
KSk7CisgIC8vIFZlcmlmeQorICBFWFBFQ1RfVFJVRShDb21wYXJlU2Vzc2lvbkRlc2NyaXB0aW9u
KGpkZXNjXywgamRlc2NfZGVzZXJpYWxpemVkKSk7Cit9CisKK1RFU1RfRihXZWJSdGNTZHBUZXN0
LCBEZXNlcmlhbGl6ZU1lZGlhQ29udGVudERlc2NyaXB0aW9uV2l0aEV4dG1hcEFsbG93TWl4ZWQp
IHsKKyAgY3JpY2tldDo6TWVkaWFDb250ZW50RGVzY3JpcHRpb24qIHZpZGVvX2Rlc2MgPQorICAg
ICAgamRlc2NfLmRlc2NyaXB0aW9uKCktPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZShrVmlk
ZW9Db250ZW50TmFtZSk7CisgIEFTU0VSVF9UUlVFKHZpZGVvX2Rlc2MpOworICBjcmlja2V0OjpN
ZWRpYUNvbnRlbnREZXNjcmlwdGlvbiogYXVkaW9fZGVzYyA9CisgICAgICBqZGVzY18uZGVzY3Jp
cHRpb24oKS0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKGtBdWRpb0NvbnRlbnROYW1lKTsK
KyAgQVNTRVJUX1RSVUUoYXVkaW9fZGVzYyk7CisgIHZpZGVvX2Rlc2MtPnNldF9leHRtYXBfYWxs
b3dfbWl4ZWRfZW51bSgKKyAgICAgIGNyaWNrZXQ6Ok1lZGlhQ29udGVudERlc2NyaXB0aW9uOjpr
TWVkaWEpOworICBhdWRpb19kZXNjLT5zZXRfZXh0bWFwX2FsbG93X21peGVkX2VudW0oCisgICAg
ICBjcmlja2V0OjpNZWRpYUNvbnRlbnREZXNjcmlwdGlvbjo6a01lZGlhKTsKKworICBzdGQ6OnN0
cmluZyBzZHBfd2l0aF9leHRtYXBfYWxsb3dfbWl4ZWQgPSBrU2RwRnVsbFN0cmluZzsKKyAgSW5q
ZWN0QWZ0ZXIoImE9bWlkOmF1ZGlvX2NvbnRlbnRfbmFtZVxyXG4iLCBrRXh0bWFwQWxsb3dNaXhl
ZCwKKyAgICAgICAgICAgICAgJnNkcF93aXRoX2V4dG1hcF9hbGxvd19taXhlZCk7CisgIEluamVj
dEFmdGVyKCJhPW1pZDp2aWRlb19jb250ZW50X25hbWVcclxuIiwga0V4dG1hcEFsbG93TWl4ZWQs
CisgICAgICAgICAgICAgICZzZHBfd2l0aF9leHRtYXBfYWxsb3dfbWl4ZWQpOworCisgIC8vIERl
c2VyaWFsaXplCisgIEpzZXBTZXNzaW9uRGVzY3JpcHRpb24gamRlc2NfZGVzZXJpYWxpemVkKGtE
dW1teVR5cGUpOworICBFWFBFQ1RfVFJVRShTZHBEZXNlcmlhbGl6ZShzZHBfd2l0aF9leHRtYXBf
YWxsb3dfbWl4ZWQsICZqZGVzY19kZXNlcmlhbGl6ZWQpKTsKKyAgLy8gVmVyaWZ5CisgIEVYUEVD
VF9UUlVFKENvbXBhcmVTZXNzaW9uRGVzY3JpcHRpb24oamRlc2NfLCBqZGVzY19kZXNlcmlhbGl6
ZWQpKTsKK30KKwogVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIERlc2VyaWFsaXplQ2FuZGlkYXRlKSB7
CiAgIEpzZXBJY2VDYW5kaWRhdGUgamNhbmRpZGF0ZShrRHVtbXlNaWQsIGtEdW1teUluZGV4KTsK
IApAQCAtMzM2MiwxMiArMzQ1NCwxNiBAQCBURVNUX0YoV2ViUnRjU2RwVGVzdCwgU2VyaWFsaXpl
VW5pZmllZFBsYW5TZXNzaW9uRGVzY3JpcHRpb24pIHsKIH0KIAogLy8gVGhpcyB0ZXN0cyBkZXNl
cmlhbGl6aW5nIGEgVW5pZmllZCBQbGFuIFNEUCB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCBib3Ro
Ci0vLyBVbmlmaWVkIFBsYW4gYW5kIFBsYW4gQiBzdHlsZSBTRFAuIEl0IHRlc3RzIHRoZSBjYXNl
IGZvciBhdWRpby92aWRlbyB0cmFja3MKKy8vIFVuaWZpZWQgUGxhbiBhbmQgUGxhbiBCIHN0eWxl
IFNEUCwgbWVhbmluZyB0aGF0IGl0IGNvbnRhaW5zIGJvdGggImE9c3NyYworLy8gbXNpZCIgbGlu
ZXMgYW5kICJhPW1zaWQgIiBsaW5lcy4gSXQgdGVzdHMgdGhlIGNhc2UgZm9yIGF1ZGlvL3ZpZGVv
IHRyYWNrcwogLy8gd2l0aCBubyBzdHJlYW0gaWRzIGFuZCBtdWx0aXBsZSBzdHJlYW0gaWRzLiBG
b3IgcGFyc2luZyB0aGlzLCB0aGUgVW5pZmllZAogLy8gUGxhbiBhPW1zaWQgbGluZXMgc2hvdWxk
IHRha2UgcHJpb3JpdHksIGJlY2F1c2UgdGhlIFBsYW4gQiBzdHlsZSBhPXNzcmMgbXNpZAogLy8g
bGluZXMgZG8gbm90IHN1cHBvcnQgbXVsdGlwbGUgc3RyZWFtIGlkcyBhbmQgbm8gc3RyZWFtIGlk
cy4KLVRFU1RfRihXZWJSdGNTZHBUZXN0LCBEZXNlcmlhbGl6ZVVuaWZpZWRQbGFuU2Vzc2lvbkRl
c2NyaXB0aW9uU3BlY2lhbE1zaWQpIHsKLSAgTWFrZVVuaWZpZWRQbGFuRGVzY3JpcHRpb25NdWx0
aXBsZVN0cmVhbUlkcygpOworVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIERlc2VyaWFsaXplU2Vzc2lv
bkRlc2NyaXB0aW9uU3BlY2lhbE1zaWQpIHsKKyAgLy8gQ3JlYXRlIGJvdGggbXNpZCBsaW5lcyBm
b3IgUGxhbiBCIGFuZCBVbmlmaWVkIFBsYW4gc3VwcG9ydC4KKyAgTWFrZVVuaWZpZWRQbGFuRGVz
Y3JpcHRpb25NdWx0aXBsZVN0cmVhbUlkcygKKyAgICAgIGNyaWNrZXQ6OmtNc2lkU2lnbmFsaW5n
TWVkaWFTZWN0aW9uIHwKKyAgICAgIGNyaWNrZXQ6OmtNc2lkU2lnbmFsaW5nU3NyY0F0dHJpYnV0
ZSk7CiAKICAgSnNlcFNlc3Npb25EZXNjcmlwdGlvbiBkZXNlcmlhbGl6ZWRfZGVzY3JpcHRpb24o
a0R1bW15VHlwZSk7CiAgIEVYUEVDVF9UUlVFKFNkcERlc2VyaWFsaXplKGtVbmlmaWVkUGxhblNk
cEZ1bGxTdHJpbmdXaXRoU3BlY2lhbE1zaWQsCkBAIC0zMzc2LDggKzM0NzIsNTAgQEAgVEVTVF9G
KFdlYlJ0Y1NkcFRlc3QsIERlc2VyaWFsaXplVW5pZmllZFBsYW5TZXNzaW9uRGVzY3JpcHRpb25T
cGVjaWFsTXNpZCkgewogICBFWFBFQ1RfVFJVRShDb21wYXJlU2Vzc2lvbkRlc2NyaXB0aW9uKGpk
ZXNjXywgZGVzZXJpYWxpemVkX2Rlc2NyaXB0aW9uKSk7CiB9CiAKLVRFU1RfRihXZWJSdGNTZHBU
ZXN0LCBTZXJpYWxpemVVbmlmaWVkUGxhblNlc3Npb25EZXNjcmlwdGlvblNwZWNpYWxNc2lkKSB7
Ci0gIE1ha2VVbmlmaWVkUGxhbkRlc2NyaXB0aW9uTXVsdGlwbGVTdHJlYW1JZHMoKTsKKy8vIFRl
c3RzIHRoZSBzZXJpYWxpemF0aW9uIG9mIGEgVW5pZmllZCBQbGFuIFNEUCB0aGF0IGlzIGNvbXBh
dGlibGUgZm9yIGJvdGgKKy8vIFVuaWZpZWQgUGxhbiBhbmQgUGxhbiBCIHN0eWxlIFNEUHMsIG1l
YW5pbmcgdGhhdCBpdCBjb250YWlucyBib3RoICJhPXNzcmMKKy8vIG1zaWQiIGxpbmVzIGFuZCAi
YT1tc2lkICIgbGluZXMuIEl0IHRlc3RzIHRoZSBjYXNlIGZvciBubyBzdHJlYW0gaWRzIGFuZAor
Ly8gbXVsdGlwbGUgc3RyZWFtIGlkcy4KK1RFU1RfRihXZWJSdGNTZHBUZXN0LCBTZXJpYWxpemVT
ZXNzaW9uRGVzY3JpcHRpb25TcGVjaWFsTXNpZCkgeworICAvLyBDcmVhdGUgYm90aCBtc2lkIGxp
bmVzIGZvciBQbGFuIEIgYW5kIFVuaWZpZWQgUGxhbiBzdXBwb3J0LgorICBNYWtlVW5pZmllZFBs
YW5EZXNjcmlwdGlvbk11bHRpcGxlU3RyZWFtSWRzKAorICAgICAgY3JpY2tldDo6a01zaWRTaWdu
YWxpbmdNZWRpYVNlY3Rpb24gfAorICAgICAgY3JpY2tldDo6a01zaWRTaWduYWxpbmdTc3JjQXR0
cmlidXRlKTsKKyAgc3RkOjpzdHJpbmcgc2VyaWFsaXplZF9zZHAgPSB3ZWJydGM6OlNkcFNlcmlh
bGl6ZShqZGVzY18pOworICAvLyBXZSBleHBsaWNpdGx5IHRlc3QgdGhhdCB0aGUgc2VyaWFsaXpl
ZCBTRFAgc3RyaW5nIGlzIGVxdWFsIHRvIHRoZSBoYXJkCisgIC8vIGNvZGVkIFNEUCBzdHJpbmcu
IFRoaXMgaXMgbmVjZXNzYXJ5LCBiZWNhdXNlIGluIHRoZSBwYXJzZXIgImE9bXNpZCIgbGluZXMK
KyAgLy8gdGFrZSBwcmlvcml0eSBvdmVyICJhPXNzcmMgbXNpZCIgbGluZXMuIFRoaXMgbWVhbnMg
aWYgd2UganVzdCB1c2VkCisgIC8vIFRlc3RTZXJpYWxpemUoKSwgaXQgY291bGQgc2VyaWFsaXpl
IGFuIFNEUCB0aGF0IG9taXRzICJhPXNzcmMgbXNpZCIgbGluZXMsCisgIC8vIGFuZCBzdGlsbCBw
YXNzLCBiZWNhdXNlIHRoZSBkZXNlcmlhbGl6ZWQgdmVyc2lvbiB3b3VsZCBiZSB0aGUgc2FtZS4K
KyAgRVhQRUNUX0VRKGtVbmlmaWVkUGxhblNkcEZ1bGxTdHJpbmdXaXRoU3BlY2lhbE1zaWQsIHNl
cmlhbGl6ZWRfc2RwKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIFVuaWZpZWQgUGxhbiBzdHlsZSBT
RFAgKGRvZXMgbm90IGNvbnRhaW4gImE9c3NyYyBtc2lkIiBsaW5lcworLy8gdGhhdCBzaWduYWwg
c3RyZWFtIElEcykgaXMgZGVzZXJpYWxpemVkIGFwcHJvcHJpYXRlbHkuIEl0IHRlc3RzIHRoZSBj
YXNlIGZvcgorLy8gbm8gc3RyZWFtIGlkcyBhbmQgbXVsdGlwbGUgc3RyZWFtIGlkcy4KK1RFU1Rf
RihXZWJSdGNTZHBUZXN0LCBVbmlmaWVkUGxhbkRlc2VyaWFsaXplU2Vzc2lvbkRlc2NyaXB0aW9u
U3BlY2lhbE1zaWQpIHsKKyAgLy8gT25seSBjcmVhdGUgYT1tc2lkIGxpbmVzIGZvciBzdHJpY3Rs
eSBVbmlmaWVkIFBsYW4gc3RyZWFtIElEIHN1cHBvcnQuCisgIE1ha2VVbmlmaWVkUGxhbkRlc2Ny
aXB0aW9uTXVsdGlwbGVTdHJlYW1JZHMoCisgICAgICBjcmlja2V0OjprTXNpZFNpZ25hbGluZ01l
ZGlhU2VjdGlvbik7CisKKyAgSnNlcFNlc3Npb25EZXNjcmlwdGlvbiBkZXNlcmlhbGl6ZWRfZGVz
Y3JpcHRpb24oa0R1bW15VHlwZSk7CisgIHN0ZDo6c3RyaW5nIHVuaWZpZWRfcGxhbl9zZHBfc3Ry
aW5nID0KKyAgICAgIGtVbmlmaWVkUGxhblNkcEZ1bGxTdHJpbmdXaXRoU3BlY2lhbE1zaWQ7Cisg
IFJlbW92ZVNzcmNNc2lkTGluZXNGcm9tU2RwU3RyaW5nKCZ1bmlmaWVkX3BsYW5fc2RwX3N0cmlu
Zyk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgU2RwRGVzZXJpYWxpemUodW5pZmllZF9wbGFuX3Nk
cF9zdHJpbmcsICZkZXNlcmlhbGl6ZWRfZGVzY3JpcHRpb24pKTsKKworICBFWFBFQ1RfVFJVRShD
b21wYXJlU2Vzc2lvbkRlc2NyaXB0aW9uKGpkZXNjXywgZGVzZXJpYWxpemVkX2Rlc2NyaXB0aW9u
KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBVbmlmaWVkIFBsYW4gc3R5bGUgU0RQIChkb2VzIG5v
dCBjb250YWluICJhPXNzcmMgbXNpZCIgbGluZXMKKy8vIHRoYXQgc2lnbmFsIHN0cmVhbSBJRHMp
IGlzIHNlcmlhbGl6ZWQgYXBwcm9wcmlhdGVseS4gSXQgdGVzdHMgdGhlIGNhc2UgZm9yIG5vCisv
LyBzdHJlYW0gaWRzIGFuZCBtdWx0aXBsZSBzdHJlYW0gaWRzLgorVEVTVF9GKFdlYlJ0Y1NkcFRl
c3QsIFVuaWZpZWRQbGFuU2VyaWFsaXplU2Vzc2lvbkRlc2NyaXB0aW9uU3BlY2lhbE1zaWQpIHsK
KyAgLy8gT25seSBjcmVhdGUgYT1tc2lkIGxpbmVzIGZvciBzdHJpY3RseSBVbmlmaWVkIFBsYW4g
c3RyZWFtIElEIHN1cHBvcnQuCisgIE1ha2VVbmlmaWVkUGxhbkRlc2NyaXB0aW9uTXVsdGlwbGVT
dHJlYW1JZHMoCisgICAgICBjcmlja2V0OjprTXNpZFNpZ25hbGluZ01lZGlhU2VjdGlvbik7CisK
ICAgVGVzdFNlcmlhbGl6ZShqZGVzY18pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZXNzaW9uZGVzY3JpcHRpb25m
YWN0b3J5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
d2VicnRjc2Vzc2lvbmRlc2NyaXB0aW9uZmFjdG9yeS5jYwppbmRleCA4MDhlNDExYTM5OTg1ODUy
Yjk2MzMxNzY2NmJjODgxYjQ4ZDdhOGM1Li4wN2I4ZTE0N2NjODI3NzQwN2UyNjE0NjU4NWVhNjBh
NzBjNDBhMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9wYy93ZWJydGNzZXNzaW9uZGVzY3JpcHRpb25mYWN0b3J5LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3Nlc3Npb25kZXNj
cmlwdGlvbmZhY3RvcnkuY2MKQEAgLTExNiw3ICsxMTYsNiBAQCB2b2lkIFdlYlJ0Y1Nlc3Npb25E
ZXNjcmlwdGlvbkZhY3Rvcnk6OkNvcHlDYW5kaWRhdGVzRnJvbVNlc3Npb25EZXNjcmlwdGlvbigK
ICAgfQogfQogCi0vLyBQcml2YXRlIGNvbnN0cnVjdG9yIGNhbGxlZCBieSBvdGhlciBjb25zdHJ1
Y3RvcnMuCiBXZWJSdGNTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpXZWJSdGNTZXNzaW9uRGVz
Y3JpcHRpb25GYWN0b3J5KAogICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAogICAg
IGNyaWNrZXQ6OkNoYW5uZWxNYW5hZ2VyKiBjaGFubmVsX21hbmFnZXIsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9f
Y29kaW5nL0YwMF90bG0xMC5PVVQyMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDBfdGxtMTAuT1VUMjAuc2hh
MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNiOGU1MmNiMjVkZjMxNGFmOTYwYjEw
NDI5ODAxNDQ1MjU2MDlkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJj
ZXMvYXVkaW9fY29kaW5nL0YwMF90bG0xMC5PVVQyMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEg
KzAsMCBAQAotOTZmYjUzMjdmZjdhMWZlODdiZDQ1MTI3NzNjZTczNDdiNGQ3Mjg4OApcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAwX3RsbTEwLk9VVDMw
LnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJj
ZXMvYXVkaW9fY29kaW5nL0YwMF90bG0xMC5PVVQzMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxNDcwMDEzYjcyYWYwZGVmZjU4NzQyZjJjYjlmN2U1OTNlOGQwZWFhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAwX3Rs
bTEwLk9VVDMwLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1lYTUyN2U4ZTYxMjQx
ZWE3MzI2NWFiYmE1NzY1NzkzNTExYzQyMjkxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVz
b3VyY2VzL2F1ZGlvX2NvZGluZy9GMDFfdGxtMTAuT1VUMjAuc2hhMSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAxX3Rs
bTEwLk9VVDIwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzM2ViN2UxYzc0
NzViODU0ZDgzMWNiNGNiYjgyZGJiYzBlMjNhMTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDFfdGxtMTAuT1VUMjAuc2hhMQorKysgL2Rl
di9udWxsCkBAIC0xICswLDAgQEAKLWE1ZThjMjY4OTM2ZDdjOGQwM2VkZDcwOGM2NzUyNTQ0NzRh
ZWQ5NDQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0Yw
MV90bG0xMC5PVVQzMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDFfdGxtMTAuT1VUMzAuc2hhMQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUzNjU2ZmUwMWMwYjMzODNkYTM2OGYwNTRmYWYzZDMy
OTBlZjA1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9f
Y29kaW5nL0YwMV90bG0xMC5PVVQzMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
OTg5MzUwNGJkYWE1NjBhNGRkYjY3YTk5ZTY3MDFlOGQ0MjQ0ODk2YQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAyX3RsbTEwLk9VVDIwLnNoYTEgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9f
Y29kaW5nL0YwMl90bG0xMC5PVVQyMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiOGE1MjUzNGIzYWU4MTYwYzNjMDcyNDI4OTM4NTZkOWVkYzE5YTI5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAyX3RsbTEwLk9VVDIw
LnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi01ZTAwNTNhMGRlN2I0NzA4NDAyZmNj
MGExYjVhZTAyNDgxNTkzOGEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1
ZGlvX2NvZGluZy9GMDJfdGxtMTAuT1VUMzAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjAyX3RsbTEwLk9VVDMw
LnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYmJjOTg2NmQxNTY4N2M3MjY4
ZDc1NGNmZWE4MWJjZTY2ZWE3OTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVz
b3VyY2VzL2F1ZGlvX2NvZGluZy9GMDJfdGxtMTAuT1VUMzAuc2hhMQorKysgL2Rldi9udWxsCkBA
IC0xICswLDAgQEAKLWQ1Nzk4NmQzZGM2NWMxY2FkYzQxNDE5YTc3ZWQxNDcyYjczMDUwYjQKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNC5CSVQyMC5z
aGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2Vz
L2F1ZGlvX2NvZGluZy9GMDQuQklUMjAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTMwNGZhNDE4MTFhODlkZTA4YzE1ZTFhZjE4MjM3YzE1MmRkNjU1Mi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNC5CSVQyMC5zaGEx
CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotOGNjMWY4MmVlMGQxYjdkZjM5ODQwODk1ZDNl
OTk3NTY5MjBiODVhZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19j
b2RpbmcvRjA0LkJJVDMwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNC5CSVQzMC5zaGExCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjNmNiZTEzYWZiNGI4N2ExMWZmOTY3YTFhNTAxNDY1YjQ4Yzdh
OWMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2Rp
bmcvRjA0LkJJVDMwLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi04NWNhM2Q5YTVj
YTYxYzFiYjlkNzk4YmE2ZDM1NTE5NDVhYjc2NjdkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDQuSU5QLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNC5JTlAuc2hh
MQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMxMThmY2IzNWMxZDYyZjFlNjQyMmEw
MDRkZWU4ZjE3ODYwMzdmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJj
ZXMvYXVkaW9fY29kaW5nL0YwNC5JTlAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAK
LTczMDU4MTAzNWQ1YWY4MzJkMWIwNWM4ZjNhNjIzZWM5Mzg2M2IzZTMKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNC5PVVQyMC5zaGExIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGlu
Zy9GMDQuT1VUMjAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQyN2YwNDFl
MDllYWEzMWE5NGE0MGM1ODljODNlZDVjZWYyYzM5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNC5PVVQyMC5zaGExCisrKyAvZGV2L251
bGwKQEAgLTEgKzAsMCBAQAotOTg1ZTVmZmEwYjk4NzE4YWZhZGZiMWYwMmI1NTk1ZmIyNGE5NDc2
YwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA0Lk9V
VDMwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNv
dXJjZXMvYXVkaW9fY29kaW5nL0YwNC5PVVQzMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzY2NlYzRlZmZlZmI3ZmVlZjA0MzlkZTJhNzZjMDlmZDBjYzJiNjgzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA0Lk9VVDMw
LnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi04YjAzNWZiMGY5Y2UzYmRjMmFlNmM5
ODNlMjMyYzI1N2E1MTVhNzgxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1
ZGlvX2NvZGluZy9GMDUuQklUMjAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1LkJJVDIwLnNoYTEKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZDgyZTZmNTIxYTcyZTBiOTMzNDVjMjkwMzNlZmRi
NmVjNDE5YmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlv
X2NvZGluZy9GMDUuQklUMjAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTkwNjlm
ZWNjM2NkMTNiZjkwMTc4MWFmNGVjZThiMzc0YjUyODU5ODQKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5CSVQzMC5zaGExIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDUu
QklUMzAuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEzYzkzNjJhODkxMTlk
YjJjNjJmZjIxZTRmOGVlZmMxOTM0NzdhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNS5CSVQzMC5zaGExCisrKyAvZGV2L251bGwKQEAg
LTEgKzAsMCBAQAotNDRhMDRlMTMzYzE1ZTAxM2Y2YjQ0MjQ4Nzc1MjhhNDQ0NWUyOGJlZgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1LklOUC5zaGEx
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1
ZGlvX2NvZGluZy9GMDUuSU5QLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBl
ZTBhMzlmM2NhNDEyZDBmMDY4MzY4MTI4NTlhOGY2NTc1OWI3YWQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDUuSU5QLnNoYTEKKysrIC9k
ZXYvbnVsbApAQCAtMSArMCwwIEBACi1jM2RkZTEwYzMyZjEyZGE1ODE4MWVjYWNjYjdhZWFhNTE1
MjM5MjMzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9G
MDUuT1VUMjAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA1Lk9VVDIwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGRmNTE0NTI2NTIxYTA1ODlhNGE0Y2I2ODY3NGZlZWVkOGNiYzI2ODguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDUu
T1VUMjAuc2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTI2MGY1MWY4MzIwZDkyZDNj
OGI4MzRjMWYzODg3OWJhYTEyYTdhNWEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJj
ZXMvYXVkaW9fY29kaW5nL0YwNS5PVVQzMC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDUuT1VUMzAuc2hhMQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjMzE4Yzk2ZjQ5OGIyMzU4MWE3ZmIzMzQ5
YmM1ZjBkOWQ1MWQ1Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMv
YXVkaW9fY29kaW5nL0YwNS5PVVQzMC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
NzJhYmI0YzFkODRhNGNmZjFlZmVkNGQzZTAxMjgwZDgzOWE5ZjY5MQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA2LkJJVDIwLnNoYTEgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5n
L0YwNi5CSVQyMC5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjZlM2RmYjY4
NDViNTEwMTQzNDc4Nzg1MTNhZDBhYzM0ODBlYjQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA2LkJJVDIwLnNoYTEKKysrIC9kZXYvbnVs
bApAQCAtMSArMCwwIEBACi1iNjUzMDI0N2FjZGZkN2FlN2IzZmQ4MGM2NzdkNzEwNDUzNTFhZDA3
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuQklU
MzAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291
cmNlcy9hdWRpb19jb2RpbmcvRjA2LkJJVDMwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGY5Zjc5NzU3MzBlNWMxZDg0OTVjZjg5ODcxOGI0MmQ4MjZkZjBiNTIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuQklUMzAu
c2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTAzMThkZTRkYzQ4NDIyYmZlMTI1ZmQ2
ZjgyN2U2ZTcxMTRkYzYxYmMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVk
aW9fY29kaW5nL0YwNi5JTlAuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2RpbmcvRjA2LklOUC5zaGExCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxMjEwMjA5NjUyYzc2ZDdkNGI3ZTVhMjkwMzllNzU3ZjdkMTZl
NWMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19jb2Rp
bmcvRjA2LklOUC5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotODAzNTljZmY3MmNi
ZGMwNGEzMzdhNTFjMmZjYzBjNzQ4OTA3MTBiNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jl
c291cmNlcy9hdWRpb19jb2RpbmcvRjA2Lk9VVDIwLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL0YwNi5PVVQyMC5z
aGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDUwZGY4MjU4ZDMzNGQwZjJlNDk0
NDdmZGQwY2NlMmUzYjI2MjU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291
cmNlcy9hdWRpb19jb2RpbmcvRjA2Lk9VVDIwLnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCww
IEBACi1jN2JjNzFhYmM5NzM0NDAxMjNhNTE3ZjYxZTNkYmNiOTYwODllZTNmClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuT1VUMzAuc2hhMSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Jlc291cmNlcy9hdWRpb19j
b2RpbmcvRjA2Lk9VVDMwLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOTIx
OWRkMGFkMDdmN2IyMjQwNTc2MjY1MzhjZjhjOGJhMjI2ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcmVzb3VyY2VzL2F1ZGlvX2NvZGluZy9GMDYuT1VUMzAuc2hhMQorKysgL2Rl
di9udWxsCkBAIC0xICswLDAgQEAKLTVmZGUyZGVmZDIzNTBiNWNhN2QzYjhmOGNlZWY3NWQyYjdm
ZDdmMDMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL3Rs
bTEwLmNobi5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cmVzb3VyY2VzL2F1ZGlvX2NvZGluZy90bG0xMC5jaG4uc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODAxZjQ0ODdiYzYzNjU3OGI5NGQ5ZmU2NWVlNzQ3OTRkYTU1N2YwMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9yZXNvdXJjZXMvYXVkaW9fY29kaW5nL3RsbTEw
LmNobi5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotMjFjNzg1MTZjMjQ3MDY2N2E3
NWM3ZWQ4NWZlMzdjNTNhMzUxNDQ1NgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvQlVJTEQuZ24KaW5kZXggZTllZmJkMTM2MGYxMjRiMjk3MTEwNGQzNjgwOTBmZjEyMTM0
ZDQzYS4uNzVjNDM5N2FiN2Q0OGFmYzE3NzVhZGFlYjM2MmY0ODI3MjI0MDRhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvQlVJ
TEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvQlVJTEQuZ24KQEAgLTY3LDkgKzY3LDEwMiBAQCBydGNfc291cmNlX3NldCgiY29tcGls
ZV9hc3NlcnRfYyIpIHsKICAgXQogfQogCisjIFRoZSBzdWJzZXQgb2YgcnRjX2Jhc2UgYXBwcm92
ZWQgZm9yIHVzZSBvdXRzaWRlIG9mIGxpYmppbmdsZS4KKyMgVE9ETyhidWdzLndlYnJ0Yy5vcmcv
OTgzOCk6IENyZWF0ZSBzbWFsbCBhbmQgZm9jdXNlZCBidWlsZCB0YXJnZXRzIGFuZCByZW1vdmUK
KyMgdGhlIG9sZCBjb25jZXB0IG9mIHJ0Y19iYXNlIGFuZCBydGNfYmFzZV9hcHByb3ZlZC4KIHJ0
Y19zb3VyY2Vfc2V0KCJydGNfYmFzZV9hcHByb3ZlZCIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioi
IF0KLSAgcHVibGljX2RlcHMgPSBbCisgIGRlcHMgPSBbCisgICAgIjpjaGVja3MiLAorICAgICI6
cnRjX3Rhc2tfcXVldWUiLAorICAgICI6c2FmZV9jb21wYXJlIiwKKyAgICAiOnNhZmVfbWlubWF4
IiwKKyAgICAiOnR5cGVfdHJhaXRzIiwKKyAgICAiLi4vYXBpOmFycmF5X3ZpZXciLAorICAgICIu
Li9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICJleHBlcmltZW50czpmaWVsZF90
cmlhbF9wYXJzZXIiLAorICAgICJzeXN0ZW06YXJjaCIsCisgICAgInN5c3RlbTp1bnVzZWQiLAor
ICAgICJ0aGlyZF9wYXJ0eS9iYXNlNjQiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnk6bWVtb3J5IiwKKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wv
dHlwZXM6b3B0aW9uYWwiLAorICBdCisKKyAgc291cmNlcyA9IFsKKyAgICAiYmluZC5oIiwKKyAg
ICAiYml0YnVmZmVyLmNjIiwKKyAgICAiYml0YnVmZmVyLmgiLAorICAgICJiaXRyYXRlYWxsb2Nh
dGlvbnN0cmF0ZWd5LmNjIiwKKyAgICAiYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oIiwKKyAg
ICAiYnVmZmVyLmgiLAorICAgICJidWZmZXJxdWV1ZS5jYyIsCisgICAgImJ1ZmZlcnF1ZXVlLmgi
LAorICAgICJieXRlYnVmZmVyLmNjIiwKKyAgICAiYnl0ZWJ1ZmZlci5oIiwKKyAgICAiYnl0ZW9y
ZGVyLmgiLAorICAgICJjb3B5b253cml0ZWJ1ZmZlci5jYyIsCisgICAgImNvcHlvbndyaXRlYnVm
ZmVyLmgiLAorICAgICJldmVudF90cmFjZXIuY2MiLAorICAgICJldmVudF90cmFjZXIuaCIsCisg
ICAgImZpbGUuY2MiLAorICAgICJmaWxlLmgiLAorICAgICJmbGFncy5jYyIsCisgICAgImZsYWdz
LmgiLAorICAgICJmdW5jdGlvbl92aWV3LmgiLAorICAgICJpZ25vcmVfd3VuZGVmLmgiLAorICAg
ICJsb2NhdGlvbi5jYyIsCisgICAgImxvY2F0aW9uLmgiLAorICAgICJtZXNzYWdlX2J1ZmZlcl9y
ZWFkZXIuaCIsCisgICAgIm51bWVyaWNzL2hpc3RvZ3JhbV9wZXJjZW50aWxlX2NvdW50ZXIuY2Mi
LAorICAgICJudW1lcmljcy9oaXN0b2dyYW1fcGVyY2VudGlsZV9jb3VudGVyLmgiLAorICAgICJu
dW1lcmljcy9tb2Rfb3BzLmgiLAorICAgICJudW1lcmljcy9tb3ZpbmdfbWF4X2NvdW50ZXIuaCIs
CisgICAgIm51bWVyaWNzL3NhbXBsZV9jb3VudGVyLmNjIiwKKyAgICAibnVtZXJpY3Mvc2FtcGxl
X2NvdW50ZXIuaCIsCisgICAgIm9uZXRpbWVldmVudC5oIiwKKyAgICAicGxhdGZvcm1fZmlsZS5j
YyIsCisgICAgInBsYXRmb3JtX2ZpbGUuaCIsCisgICAgInJhY2VfY2hlY2tlci5jYyIsCisgICAg
InJhY2VfY2hlY2tlci5oIiwKKyAgICAicmFuZG9tLmNjIiwKKyAgICAicmFuZG9tLmgiLAorICAg
ICJyYXRlX3N0YXRpc3RpY3MuY2MiLAorICAgICJyYXRlX3N0YXRpc3RpY3MuaCIsCisgICAgInJh
dGV0cmFja2VyLmNjIiwKKyAgICAicmF0ZXRyYWNrZXIuaCIsCisgICAgInN3YXBfcXVldWUuaCIs
CisgICAgInRlbXBsYXRlX3V0aWwuaCIsCisgICAgInRpbWVzdGFtcGFsaWduZXIuY2MiLAorICAg
ICJ0aW1lc3RhbXBhbGlnbmVyLmgiLAorICAgICJ0cmFjZV9ldmVudC5oIiwKKyAgICAiemVyb19t
ZW1vcnkuY2MiLAorICAgICJ6ZXJvX21lbW9yeS5oIiwKKyAgXQorCisgIGlmIChpc19wb3NpeCB8
fCBpc19mdWNoc2lhKSB7CisgICAgc291cmNlcyArPSBbICJmaWxlX3Bvc2l4LmNjIiBdCisgIH0K
KworICBpZiAoaXNfd2luKSB7CisgICAgc291cmNlcyArPSBbCisgICAgICAiZmlsZV93aW4uY2Mi
LAorICAgICAgIndpbi93aW5kb3dzX3ZlcnNpb24uY2MiLAorICAgICAgIndpbi93aW5kb3dzX3Zl
cnNpb24uaCIsCisgICAgXQorICAgIGRhdGFfZGVwcyA9IFsKKyAgICAgICIvL2J1aWxkL3dpbjpy
dW50aW1lX2xpYnMiLAorICAgIF0KKyAgfQorCisgIGlmIChpc19uYWNsKSB7CisgICAgZGVwcyAr
PSBbICIvL25hdGl2ZV9jbGllbnRfc2RrL3NyYy9saWJyYXJpZXMvbmFjbF9pbyIgXQorICB9CisK
KyAgaWYgKGlzX2FuZHJvaWQpIHsKKyAgICBsaWJzID0gWyAibG9nIiBdCisgIH0KKworICBwdWJs
aWNfZGVwcyA9IFsgICMgbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg2MDMpCiAgICAg
IjphdG9taWNvcHMiLAogICAgICI6Y3JpdGljYWxzZWN0aW9uIiwKICAgICAiOmxvZ2dpbmciLApA
QCAtNzgsMTYgKzE3MSwxMiBAQCBydGNfc291cmNlX3NldCgicnRjX2Jhc2VfYXBwcm92ZWQiKSB7
CiAgICAgIjpwbGF0Zm9ybV90aHJlYWRfdHlwZXMiLAogICAgICI6cHRyX3V0aWwiLAogICAgICI6
cmVmY291bnQiLAotICAgICI6cnRjX2Jhc2VfYXBwcm92ZWRfZ2VuZXJpYyIsCiAgICAgIjpydGNf
ZXZlbnQiLAogICAgICI6c2FmZV9jb252ZXJzaW9ucyIsCiAgICAgIjpzdHJpbmd1dGlscyIsCiAg
ICAgIjp0aHJlYWRfY2hlY2tlciIsCiAgICAgIjp0aW1ldXRpbHMiLAogICBdCi0gIGlmIChpc19t
YWMgJiYgIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKLSAgICBwdWJsaWNfZGVwcyArPSBbICI6cnRj
X2Jhc2VfYXBwcm92ZWRfb2JqYyIgXQotICB9CiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJtYWNyb21h
Z2ljIikgewpAQCAtMTE3LDYgKzIwNiw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJwdHJfdXRpbCIpIHsK
ICAgc291cmNlcyA9IFsKICAgICAic2NvcGVkX3JlZl9wdHIuaCIsCiAgIF0KKyAgZGVwcyA9IFsK
KyAgICAiLi4vYXBpOnNjb3BlZF9yZWZwdHIiLAorICBdCiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJy
ZWZjb3VudCIpIHsKQEAgLTE0OSw5ICsyNDEsOSBAQCBydGNfc291cmNlX3NldCgiY3JpdGljYWxz
ZWN0aW9uIikgewogcnRjX3NvdXJjZV9zZXQoInBsYXRmb3JtX3RocmVhZCIpIHsKICAgdmlzaWJp
bGl0eSA9IFsKICAgICAiOnJ0Y19iYXNlX2FwcHJvdmVkIiwKLSAgICAiOnJ0Y19iYXNlX2FwcHJv
dmVkX2dlbmVyaWMiLAogICAgICI6cnRjX3Rhc2tfcXVldWVfbGliZXZlbnQiLAogICAgICI6cnRj
X3Rhc2tfcXVldWVfd2luIiwKKyAgICAiOnJ0Y190YXNrX3F1ZXVlX3N0ZGxpYiIsCiAgICAgIjpz
ZXF1ZW5jZWRfdGFza19jaGVja2VyIiwKICAgXQogICBzb3VyY2VzID0gWwpAQCAtMTcyLDcgKzI2
NCw2IEBAIHJ0Y19zb3VyY2Vfc2V0KCJwbGF0Zm9ybV90aHJlYWQiKSB7CiBydGNfc291cmNlX3Nl
dCgicnRjX2V2ZW50IikgewogICBkZXBzID0gWwogICAgICI6Y2hlY2tzIiwKLSAgICAiOm1hY3Jv
bWFnaWMiLAogICBdCiAKICAgaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKQEAgLTE5Miw3ICsy
ODMsOSBAQCBydGNfc291cmNlX3NldCgicnRjX2V2ZW50IikgewogCiBydGNfc291cmNlX3NldCgi
bG9nZ2luZyIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgbGlicyA9IFtdCiAgIGRlcHMg
PSBbCisgICAgIjpjaGVja3MiLAogICAgICI6Y3JpdGljYWxzZWN0aW9uIiwKICAgICAiOm1hY3Jv
bWFnaWMiLAogICAgICI6cGxhdGZvcm1fdGhyZWFkX3R5cGVzIiwKQEAgLTIxOSw5ICszMTIsMTcg
QEAgcnRjX3NvdXJjZV9zZXQoImxvZ2dpbmciKSB7CiAgICAgXQogICAgIGRlcHMgKz0gWyAic3lz
dGVtOmlubGluZSIgXQogCisgICAgaWYgKGlzX21hYykgeworICAgICAgZGVwcyArPSBbICI6bG9n
Z2luZ19tYWMiIF0KKyAgICB9CisKICAgICAjIGxvZ2dpbmcuaCBuZWVkcyB0aGUgZGVwcmVjYXRp
b24gaGVhZGVyIHdoaWxlIGRvd25zdHJlYW0gcHJvamVjdHMgYXJlCiAgICAgIyByZW1vdmluZyBj
b2RlIHRoYXQgZGVwZW5kcyBvbiBsb2dnaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAgICAg
ZGVwcyArPSBbICI6ZGVwcmVjYXRpb24iIF0KKworICAgIGlmIChpc19hbmRyb2lkKSB7CisgICAg
ICBsaWJzICs9IFsgImxvZyIgXQorICAgIH0KICAgfQogfQogCkBAIC0yNDgsNiArMzQ5LDcgQEAg
cnRjX3NvdXJjZV9zZXQoImF0b21pY29wcyIpIHsKIHJ0Y19zb3VyY2Vfc2V0KCJjaGVja3MiKSB7
CiAgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTYwNyk6IFRoaXMgc2hvdWxkIG5vdCBiZSBwdWJs
aWMuCiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCisgIGxpYnMgPSBbXQogICBzb3VyY2VzID0gWwog
ICAgICJjaGVja3MuY2MiLAogICAgICJjaGVja3MuaCIsCkBAIC0yNTYsNiArMzU4LDkgQEAgcnRj
X3NvdXJjZV9zZXQoImNoZWNrcyIpIHsKICAgICAiOnNhZmVfY29tcGFyZSIsCiAgICAgInN5c3Rl
bTppbmxpbmUiLAogICBdCisgIGlmIChpc19hbmRyb2lkKSB7CisgICAgbGlicyArPSBbICJsb2ci
IF0KKyAgfQogfQogCiBydGNfc291cmNlX3NldCgicmF0ZV9saW1pdGVyIikgewpAQCAtMjY2LDYg
KzM3MSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJyYXRlX2xpbWl0ZXIiKSB7CiAgIGRlcHMgPSBbCiAg
ICAgIjpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uL3N5c3RlbV93cmFwcGVycyIsCisgICAg
Ii8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFsIiwKICAgXQogfQog
CkBAIC0yNzMsNiArMzc5LDkgQEAgcnRjX3NvdXJjZV9zZXQoInNhbml0aXplciIpIHsKICAgc291
cmNlcyA9IFsKICAgICAic2FuaXRpemVyLmgiLAogICBdCisgIGRlcHMgPSBbCisgICAgIi8vdGhp
cmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21ldGE6dHlwZV90cmFpdHMiLAorICBdCiB9CiAKIHJ0
Y19zb3VyY2Vfc2V0KCJzYWZlX2NvbXBhcmUiKSB7CkBAIC0zNjIsMTM3ICs0NzEsMTQgQEAgcnRj
X3NvdXJjZV9zZXQoImRlcHJlY2F0aW9uIikgewogICBdCiB9CiAKLSMgVGhlIHN1YnNldCBvZiBy
dGNfYmFzZSBhcHByb3ZlZCBmb3IgdXNlIG91dHNpZGUgb2YgbGliamluZ2xlLgotcnRjX3NvdXJj
ZV9zZXQoInJ0Y19iYXNlX2FwcHJvdmVkX2dlbmVyaWMiKSB7Ci0gIHZpc2liaWxpdHkgPSBbCi0g
ICAgIjpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgIjp3ZWFrX3B0cl91bml0dGVzdHMiLAotICBd
Ci0KLSAgY2ZsYWdzID0gW10KLSAgZGVmaW5lcyA9IFtdCi0gIGxpYnMgPSBbXQotICBkYXRhX2Rl
cHMgPSBbXQotICBkZXBzID0gWwotICAgICI6YXRvbWljb3BzIiwKLSAgICAiOmNoZWNrcyIsCi0g
ICAgIjpjcml0aWNhbHNlY3Rpb24iLAotICAgICI6bG9nZ2luZyIsCi0gICAgIjptYWNyb21hZ2lj
IiwKLSAgICAiOnBsYXRmb3JtX3RocmVhZCIsCi0gICAgIjpwbGF0Zm9ybV90aHJlYWRfdHlwZXMi
LAotICAgICI6cHRyX3V0aWwiLAotICAgICI6cmVmY291bnQiLAotICAgICI6cnRjX2V2ZW50IiwK
LSAgICAiOnJ0Y190YXNrX3F1ZXVlIiwKLSAgICAiOnNhZmVfY29tcGFyZSIsCi0gICAgIjpzYWZl
X2NvbnZlcnNpb25zIiwKLSAgICAiOnN0cmluZ3V0aWxzIiwKLSAgICAiOnRocmVhZF9jaGVja2Vy
IiwKLSAgICAiOnRpbWV1dGlscyIsCi0gICAgIjp0eXBlX3RyYWl0cyIsCi0gICAgInN5c3RlbTph
cmNoIiwKLSAgICAic3lzdGVtOnVudXNlZCIsCi0gICAgInRoaXJkX3BhcnR5L2Jhc2U2NCIsCi0g
IF0KLQotICBzb3VyY2VzID0gWwotICAgICJiaW5kLmgiLAotICAgICJiaXRidWZmZXIuY2MiLAot
ICAgICJiaXRidWZmZXIuaCIsCi0gICAgImJpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuY2MiLAot
ICAgICJiaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmgiLAotICAgICJidWZmZXIuaCIsCi0gICAg
ImJ1ZmZlcnF1ZXVlLmNjIiwKLSAgICAiYnVmZmVycXVldWUuaCIsCi0gICAgImJ5dGVidWZmZXIu
Y2MiLAotICAgICJieXRlYnVmZmVyLmgiLAotICAgICJieXRlb3JkZXIuaCIsCi0gICAgImNvcHlv
bndyaXRlYnVmZmVyLmNjIiwKLSAgICAiY29weW9ud3JpdGVidWZmZXIuaCIsCi0gICAgImV2ZW50
X3RyYWNlci5jYyIsCi0gICAgImV2ZW50X3RyYWNlci5oIiwKLSAgICAiZmlsZS5jYyIsCi0gICAg
ImZpbGUuaCIsCi0gICAgImZsYWdzLmNjIiwKLSAgICAiZmxhZ3MuaCIsCi0gICAgImZ1bmN0aW9u
X3ZpZXcuaCIsCi0gICAgImlnbm9yZV93dW5kZWYuaCIsCi0gICAgImxvY2F0aW9uLmNjIiwKLSAg
ICAibG9jYXRpb24uaCIsCi0gICAgIm1lc3NhZ2VfYnVmZmVyX3JlYWRlci5oIiwKLSAgICAibnVt
ZXJpY3MvaGlzdG9ncmFtX3BlcmNlbnRpbGVfY291bnRlci5jYyIsCi0gICAgIm51bWVyaWNzL2hp
c3RvZ3JhbV9wZXJjZW50aWxlX2NvdW50ZXIuaCIsCi0gICAgIm51bWVyaWNzL21vZF9vcHMuaCIs
Ci0gICAgIm51bWVyaWNzL21vdmluZ19tYXhfY291bnRlci5oIiwKLSAgICAibnVtZXJpY3Mvc2Ft
cGxlX2NvdW50ZXIuY2MiLAotICAgICJudW1lcmljcy9zYW1wbGVfY291bnRlci5oIiwKLSAgICAi
b25ldGltZWV2ZW50LmgiLAotICAgICJwYXRodXRpbHMuY2MiLAotICAgICJwYXRodXRpbHMuaCIs
Ci0gICAgInBsYXRmb3JtX2ZpbGUuY2MiLAotICAgICJwbGF0Zm9ybV9maWxlLmgiLAotICAgICJy
YWNlX2NoZWNrZXIuY2MiLAotICAgICJyYWNlX2NoZWNrZXIuaCIsCi0gICAgInJhbmRvbS5jYyIs
Ci0gICAgInJhbmRvbS5oIiwKLSAgICAicmF0ZV9zdGF0aXN0aWNzLmNjIiwKLSAgICAicmF0ZV9z
dGF0aXN0aWNzLmgiLAotICAgICJyYXRldHJhY2tlci5jYyIsCi0gICAgInJhdGV0cmFja2VyLmgi
LAotICAgICJzd2FwX3F1ZXVlLmgiLAotICAgICJ0ZW1wbGF0ZV91dGlsLmgiLAotICAgICJ0aW1l
c3RhbXBhbGlnbmVyLmNjIiwKLSAgICAidGltZXN0YW1wYWxpZ25lci5oIiwKLSAgICAidHJhY2Vf
ZXZlbnQuaCIsCi0gICAgInplcm9fbWVtb3J5LmNjIiwKLSAgICAiemVyb19tZW1vcnkuaCIsCi0g
IF0KLQotICBkZXBzICs9IFsKLSAgICAiLi46d2VicnRjX2NvbW1vbiIsCi0gICAgIi4uL2FwaTph
cnJheV92aWV3IiwKLSAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5Om1l
bW9yeSIsCi0gICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3R5cGVzOm9wdGlvbmFs
IiwKLSAgXQotCi0gIGlmIChpc19hbmRyb2lkKSB7Ci0gICAgbGlicyArPSBbICJsb2ciIF0KLSAg
fQotCi0gIGlmIChpc19wb3NpeCB8fCBpc19mdWNoc2lhKSB7Ci0gICAgc291cmNlcyArPSBbICJm
aWxlX3Bvc2l4LmNjIiBdCi0gIH0KLQotICBpZiAoaXNfd2luKSB7Ci0gICAgc291cmNlcyArPSBb
Ci0gICAgICAiZmlsZV93aW4uY2MiLAotICAgICAgIndpbi93aW5kb3dzX3ZlcnNpb24uY2MiLAot
ICAgICAgIndpbi93aW5kb3dzX3ZlcnNpb24uaCIsCi0gICAgXQotICAgIGRhdGFfZGVwcyArPSBb
ICIvL2J1aWxkL3dpbjpydW50aW1lX2xpYnMiIF0KLSAgfQotCi0gIGlmIChpc19uYWNsKSB7Ci0g
ICAgZGVwcyArPSBbICIvL25hdGl2ZV9jbGllbnRfc2RrL3NyYy9saWJyYXJpZXMvbmFjbF9pbyIg
XQotICB9Ci19Ci0KIGlmIChpc19tYWMgJiYgIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKLSAgY29u
ZmlnKCJydGNfYmFzZV9hcHByb3ZlZF9vYmpjX2FsbF9kZXBlbmRlbnRfY29uZmlnIikgewotICAg
IHZpc2liaWxpdHkgPSBbICI6cnRjX2Jhc2VfYXBwcm92ZWRfb2JqYyIgXQotICAgIGxpYnMgPSBb
ICJGb3VuZGF0aW9uLmZyYW1ld29yayIgXSAgIyBuZWVkZWQgZm9yIGxvZ2dpbmdfbWFjLm1tCi0g
IH0KLQotICBydGNfc291cmNlX3NldCgicnRjX2Jhc2VfYXBwcm92ZWRfb2JqYyIpIHsKLSAgICB2
aXNpYmlsaXR5ID0gWyAiOnJ0Y19iYXNlX2FwcHJvdmVkIiBdCi0gICAgYWxsX2RlcGVuZGVudF9j
b25maWdzID0gWyAiOnJ0Y19iYXNlX2FwcHJvdmVkX29iamNfYWxsX2RlcGVuZGVudF9jb25maWci
IF0KKyAgcnRjX3NvdXJjZV9zZXQoImxvZ2dpbmdfbWFjIikgeworICAgIHZpc2liaWxpdHkgPSBb
ICI6bG9nZ2luZyIgXQorICAgIGxpYnMgPSBbICJGb3VuZGF0aW9uLmZyYW1ld29yayIgXQogICAg
IHNvdXJjZXMgPSBbCisgICAgICAibG9nZ2luZ19tYWMuaCIsCiAgICAgICAibG9nZ2luZ19tYWMu
bW0iLAogICAgIF0KLSAgICBkZXBzID0gWwotICAgICAgIjpsb2dnaW5nIiwKLSAgICBdCiAgIH0K
IH0KIApAQCAtNTI5LDYgKzUxNSw3IEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfdGFza19xdWV1ZV9h
cGkiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjptYWNyb21hZ2ljIiwKICAgICAiOnB0cl91dGlsIiwK
KyAgICAic3lzdGVtOnJ0Y19leHBvcnQiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnkiLAogICBdCiB9CkBAIC01NjUsNyArNTUyLDkgQEAgaWYgKHJ0Y19lbmFibGVf
bGliZXZlbnQpIHsKICAgICAgICI6Y2hlY2tzIiwKICAgICAgICI6Y3JpdGljYWxzZWN0aW9uIiwK
ICAgICAgICI6bG9nZ2luZyIsCisgICAgICAiOm1hY3JvbWFnaWMiLAogICAgICAgIjpwbGF0Zm9y
bV90aHJlYWQiLAorICAgICAgIjpwbGF0Zm9ybV90aHJlYWRfdHlwZXMiLAogICAgICAgIjpwdHJf
dXRpbCIsCiAgICAgICAiOnJlZmNvdW50IiwKICAgICAgICI6cnRjX3Rhc2tfcXVldWVfYXBpIiwK
QEAgLTYxOSw2ICs2MDgsMjYgQEAgaWYgKGlzX3dpbikgewogICB9CiB9CiAKK3J0Y19zb3VyY2Vf
c2V0KCJydGNfdGFza19xdWV1ZV9zdGRsaWIiKSB7CisgIHZpc2liaWxpdHkgPSBbICI6cnRjX3Rh
c2tfcXVldWVfaW1wbCIgXQorICBzb3VyY2VzID0gWworICAgICJ0YXNrX3F1ZXVlX3N0ZGxpYi5j
YyIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNoZWNrcyIsCisgICAgIjpjcml0aWNhbHNlY3Rp
b24iLAorICAgICI6bG9nZ2luZyIsCisgICAgIjptYWNyb21hZ2ljIiwKKyAgICAiOnBsYXRmb3Jt
X3RocmVhZCIsCisgICAgIjpwdHJfdXRpbCIsCisgICAgIjpyZWZjb3VudCIsCisgICAgIjpydGNf
ZXZlbnQiLAorICAgICI6cnRjX3Rhc2tfcXVldWVfYXBpIiwKKyAgICAiOnNhZmVfY29udmVyc2lv
bnMiLAorICAgICI6dGltZXV0aWxzIiwKKyAgXQorfQorCiBydGNfc291cmNlX3NldCgicnRjX3Rh
c2tfcXVldWVfaW1wbCIpIHsKICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgaWYgKHJ0Y19lbmFi
bGVfbGliZXZlbnQpIHsKQEAgLTYzMiw5ICs2NDEsMTUgQEAgcnRjX3NvdXJjZV9zZXQoInJ0Y190
YXNrX3F1ZXVlX2ltcGwiKSB7CiAgICAgICBdCiAgICAgfQogICAgIGlmIChpc193aW4pIHsKLSAg
ICAgIGRlcHMgPSBbCi0gICAgICAgICI6cnRjX3Rhc2tfcXVldWVfd2luIiwKLSAgICAgIF0KKyAg
ICAgIGlmIChjdXJyZW50X29zID09ICJ3aW51d3AiKSB7CisgICAgICAgIGRlcHMgPSBbCisgICAg
ICAgICAgIjpydGNfdGFza19xdWV1ZV9zdGRsaWIiLAorICAgICAgICBdCisgICAgICB9IGVsc2Ug
eworICAgICAgICBkZXBzID0gWworICAgICAgICAgICI6cnRjX3Rhc2tfcXVldWVfd2luIiwKKyAg
ICAgICAgXQorICAgICAgfQogICAgIH0KICAgfQogfQpAQCAtNjcwLDYgKzY4NSw4IEBAIHJ0Y19z
dGF0aWNfbGlicmFyeSgicnRjX251bWVyaWNzIikgewogICBzb3VyY2VzID0gWwogICAgICJudW1l
cmljcy9leHBfZmlsdGVyLmNjIiwKICAgICAibnVtZXJpY3MvZXhwX2ZpbHRlci5oIiwKKyAgICAi
bnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2UuY2MiLAorICAgICJudW1lcmljcy9tb3ZpbmdfYXZlcmFn
ZS5oIiwKICAgICAibnVtZXJpY3MvbW92aW5nX21lZGlhbl9maWx0ZXIuaCIsCiAgICAgIm51bWVy
aWNzL3BlcmNlbnRpbGVfZmlsdGVyLmgiLAogICAgICJudW1lcmljcy9zZXF1ZW5jZV9udW1iZXJf
dXRpbC5oIiwKQEAgLTcwNyw0OCArNzI0LDIzIEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfanNvbiIp
IHsKIAogcnRjX3N0YXRpY19saWJyYXJ5KCJydGNfYmFzZSIpIHsKICAgdmlzaWJpbGl0eSA9IFsg
IioiIF0KLSAgcHVibGljX2RlcHMgPSBbXQotICBpZiAoIWJ1aWxkX3dpdGhfbW96aWxsYSkgewot
ICAgIHB1YmxpY19kZXBzICs9IFsgIjpydGNfYmFzZV9nZW5lcmljIiBdCi0gIH0KLSAgaWYgKGlz
X3dpbikgewotICAgIHNvdXJjZXMgPSBbCi0gICAgICAibm9vcC5jYyIsCi0gICAgXQotICB9Ci0g
IGlmIChpc19pb3MgfHwgaXNfbWFjKSB7Ci0gICAgc291cmNlcyA9IFsKLSAgICAgICJub29wLm1t
IiwKLSAgICBdCi0gICAgcHVibGljX2RlcHMgKz0gWyAiOnJ0Y19iYXNlX29iamMiIF0KLSAgfQot
fQotCi1pZiAoaXNfaW9zIHx8IGlzX21hYykgewotICBydGNfc291cmNlX3NldCgicnRjX2Jhc2Vf
b2JqYyIpIHsKLSAgICBzb3VyY2VzID0gWwotICAgICAgInRocmVhZF9kYXJ3aW4ubW0iLAotICAg
IF0KLSAgICBkZXBzID0gWwotICAgICAgIjpydGNfYmFzZV9nZW5lcmljIiwKLSAgICBdCi0gICAg
dmlzaWJpbGl0eSA9IFsgIjpydGNfYmFzZSIgXQotICB9Ci19Ci0KLXJ0Y19zdGF0aWNfbGlicmFy
eSgicnRjX2Jhc2VfZ2VuZXJpYyIpIHsKICAgY2ZsYWdzID0gW10KICAgY2ZsYWdzX2NjID0gW10K
ICAgbGlicyA9IFtdCiAgIGRlZmluZXMgPSBbXQogICBkZXBzID0gWwogICAgICI6Y2hlY2tzIiwK
KworICAgICMgRm9yIGRlcHJlY2F0aW9uIG9mIHJ0Yzo6UGFja2V0VGltZSwgaW4gYXN5bmNwYWNr
ZXRzb2NrZXQuaC4KKyAgICAiOmRlcHJlY2F0aW9uIiwKICAgICAiOnN0cmluZ3V0aWxzIiwKICAg
ICAiLi46d2VicnRjX2NvbW1vbiIsCiAgICAgIi4uL2FwaTphcnJheV92aWV3IiwKKyAgICAibmV0
d29yazpzZW50X3BhY2tldCIsCiAgICAgInRoaXJkX3BhcnR5L2Jhc2U2NCIsCiAgICAgInRoaXJk
X3BhcnR5L3NpZ3Nsb3QiLAogICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1v
cnkiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9zdHJpbmdzIiwKICAgICAi
Ly90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAogICBdCiAgIHB1
YmxpY19kZXBzID0gWwpAQCAtNzgxLDggKzc3Myw2IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRj
X2Jhc2VfZ2VuZXJpYyIpIHsKICAgICAiZHNjcC5oIiwKICAgICAiZmlsZXJvdGF0aW5nc3RyZWFt
LmNjIiwKICAgICAiZmlsZXJvdGF0aW5nc3RyZWFtLmgiLAotICAgICJmaWxldXRpbHMuY2MiLAot
ICAgICJmaWxldXRpbHMuaCIsCiAgICAgImd1bml0X3Byb2QuaCIsCiAgICAgImhlbHBlcnMuY2Mi
LAogICAgICJoZWxwZXJzLmgiLApAQCAtNzkxLDYgKzc4MSw4IEBAIHJ0Y19zdGF0aWNfbGlicmFy
eSgicnRjX2Jhc2VfZ2VuZXJpYyIpIHsKICAgICAiaXBhZGRyZXNzLmNjIiwKICAgICAiaXBhZGRy
ZXNzLmgiLAogICAgICJrZWVwX3JlZl91bnRpbF9kb25lLmgiLAorICAgICJrZXlfZGVyaXZhdGlv
bi5jYyIsCisgICAgImtleV9kZXJpdmF0aW9uLmgiLAogICAgICJtZG5zX3Jlc3BvbmRlcl9pbnRl
cmZhY2UuaCIsCiAgICAgIm1lc3NhZ2VkaWdlc3QuY2MiLAogICAgICJtZXNzYWdlZGlnZXN0Lmgi
LApAQCAtODExLDYgKzgwMyw4IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgicnRjX2Jhc2VfZ2VuZXJp
YyIpIHsKICAgICAibnVsbHNvY2tldHNlcnZlci5jYyIsCiAgICAgIm51bGxzb2NrZXRzZXJ2ZXIu
aCIsCiAgICAgIm9wZW5zc2wuaCIsCisgICAgIm9wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5j
YyIsCisgICAgIm9wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5oIiwKICAgICAib3BlbnNzbGFk
YXB0ZXIuY2MiLAogICAgICJvcGVuc3NsYWRhcHRlci5oIiwKICAgICAib3BlbnNzbGNlcnRpZmlj
YXRlLmNjIiwKQEAgLTg0Niw4ICs4NDAsNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19iYXNl
X2dlbmVyaWMiKSB7CiAgICAgInNvY2tldGFkZHJlc3NwYWlyLmgiLAogICAgICJzb2NrZXRmYWN0
b3J5LmgiLAogICAgICJzb2NrZXRzZXJ2ZXIuaCIsCi0gICAgInNvY2tldHN0cmVhbS5jYyIsCi0g
ICAgInNvY2tldHN0cmVhbS5oIiwKICAgICAic3NsYWRhcHRlci5jYyIsCiAgICAgInNzbGFkYXB0
ZXIuaCIsCiAgICAgInNzbGNlcnRpZmljYXRlLmNjIiwKQEAgLTg2NCwxMSArODU2LDYgQEAgcnRj
X3N0YXRpY19saWJyYXJ5KCJydGNfYmFzZV9nZW5lcmljIikgewogICAgICJ0aHJlYWQuaCIsCiAg
IF0KIAotICB2aXNpYmlsaXR5ID0gWwotICAgICI6cnRjX2Jhc2UiLAotICAgICI6cnRjX2Jhc2Vf
b2JqYyIsCi0gIF0KLQogICBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICAgIGluY2x1ZGVf
ZGlycyA9IFsgIi4uLy4uL2JvcmluZ3NzbC9zcmMvaW5jbHVkZSIgXQogICAgIHB1YmxpY19jb25m
aWdzICs9IFsgIjpydGNfYmFzZV9jaHJvbWl1bV9jb25maWciIF0KQEAgLTg3OCw4ICs4NjUsNiBA
QCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19iYXNlX2dlbmVyaWMiKSB7CiAgICAgICAibG9nc2lu
a3MuY2MiLAogICAgICAgImxvZ3NpbmtzLmgiLAogICAgICAgIm51bWVyaWNzL21hdGh1dGlscy5o
IiwKLSAgICAgICJvcHRpb25zZmlsZS5jYyIsCi0gICAgICAib3B0aW9uc2ZpbGUuaCIsCiAgICAg
ICAicm9sbGluZ2FjY3VtdWxhdG9yLmgiLAogICAgICAgInNzbHJvb3RzLmgiLAogICAgIF0KQEAg
LTkxMyw2ICs4OTgsNyBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19iYXNlX2dlbmVyaWMiKSB7
CiAKICAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICBzb3VyY2VzICs9IFsgIm1hY2lmYWRk
cnNfY29udmVydGVyLmNjIiBdCisgICAgZGVwcyArPSBbICJzeXN0ZW06Y29jb2FfdGhyZWFkaW5n
IiBdCiAgIH0KIAogICBpZiAocnRjX3VzZV94MTEpIHsKQEAgLTkzOCwxOCArOTI0LDEyIEBAIHJ0
Y19zdGF0aWNfbGlicmFyeSgicnRjX2Jhc2VfZ2VuZXJpYyIpIHsKICAgICAgICJtYWN1dGlscy5j
YyIsCiAgICAgICAibWFjdXRpbHMuaCIsCiAgICAgXQotICAgIGxpYnMgKz0gWwotICAgICAgIyBG
b3IgUHJvY2Vzc0luZm9ybWF0aW9uQ29weURpY3Rpb25hcnkgaW4gdW5peGZpbGVzeXN0ZW0uY2Mu
Ci0gICAgICAiQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsiLAotICAgIF0KICAgfQogCiAg
IGlmIChpc193aW4pIHsKICAgICBzb3VyY2VzICs9IFsKICAgICAgICJ3aW4zMi5jYyIsCiAgICAg
ICAid2luMzIuaCIsCi0gICAgICAid2luMzJmaWxlc3lzdGVtLmNjIiwKLSAgICAgICJ3aW4zMmZp
bGVzeXN0ZW0uaCIsCiAgICAgICAid2luMzJ3aW5kb3cuY2MiLAogICAgICAgIndpbjMyd2luZG93
LmgiLAogICAgIF0KQEAgLTk2Nyw4ICs5NDcsNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0Y19i
YXNlX2dlbmVyaWMiKSB7CiAgICAgc291cmNlcyArPSBbCiAgICAgICAiaWZhZGRyc19jb252ZXJ0
ZXIuY2MiLAogICAgICAgImlmYWRkcnNfY29udmVydGVyLmgiLAotICAgICAgInVuaXhmaWxlc3lz
dGVtLmNjIiwKLSAgICAgICJ1bml4ZmlsZXN5c3RlbS5oIiwKICAgICBdCiAgIH0KIApAQCAtOTg2
LDExICs5NjQsNDEgQEAgcnRjX3NvdXJjZV9zZXQoImd0ZXN0X3Byb2QiKSB7CiAgIF0KIH0KIAor
cnRjX3NvdXJjZV9zZXQoImd1bml0X2hlbHBlcnMiKSB7CisgIHRlc3Rvbmx5ID0gdHJ1ZQorICBz
b3VyY2VzID0gWworICAgICJndW5pdC5jYyIsCisgICAgImd1bml0LmgiLAorICBdCisgIGRlcHMg
PSBbCisgICAgIjpsb2dnaW5nIiwKKyAgICAiOnJ0Y19iYXNlIiwKKyAgICAiOnJ0Y19iYXNlX3Rl
c3RzX3V0aWxzIiwKKyAgICAiOnN0cmluZ3V0aWxzIiwKKyAgICAiLi4vdGVzdDp0ZXN0X3N1cHBv
cnQiLAorICBdCit9CisKK3J0Y19zb3VyY2Vfc2V0KCJ0ZXN0Y2xpZW50IikgeworICB0ZXN0b25s
eSA9IHRydWUKKyAgc291cmNlcyA9IFsKKyAgICAidGVzdGNsaWVudC5jYyIsCisgICAgInRlc3Rj
bGllbnQuaCIsCisgIF0KKyAgZGVwcyA9IFsKKyAgICAiOmNyaXRpY2Fsc2VjdGlvbiIsCisgICAg
IjpndW5pdF9oZWxwZXJzIiwKKyAgICAiOm1hY3JvbWFnaWMiLAorICAgICI6cnRjX2Jhc2UiLAor
ICAgICI6cnRjX2Jhc2VfdGVzdHNfdXRpbHMiLAorICAgICI6dGltZXV0aWxzIiwKKyAgICAiLy90
aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5Om1lbW9yeSIsCisgIF0KK30KKwogcnRj
X3NvdXJjZV9zZXQoInJ0Y19iYXNlX3Rlc3RzX3V0aWxzIikgewogICB0ZXN0b25seSA9IHRydWUK
ICAgc291cmNlcyA9IFsKLSAgICAjIEFsc28gdXNlIHRoaXMgYXMgYSBjb252ZW5pZW50IGR1bXBp
bmcgZ3JvdW5kIGZvciBtaXNjIGZpbGVzIHRoYXQgYXJlCi0gICAgIyBpbmNsdWRlZCBieSBtdWx0
aXBsZSB0YXJnZXRzIGJlbG93LgogICAgICJjcHVfdGltZS5jYyIsCiAgICAgImNwdV90aW1lLmgi
LAogICAgICJmYWtlX21kbnNfcmVzcG9uZGVyLmgiLApAQCAtMTAwMSw4ICsxMDA5LDggQEAgcnRj
X3NvdXJjZV9zZXQoInJ0Y19iYXNlX3Rlc3RzX3V0aWxzIikgewogICAgICJmYWtlc3NsaWRlbnRp
dHkuaCIsCiAgICAgImZpcmV3YWxsc29ja2V0c2VydmVyLmNjIiwKICAgICAiZmlyZXdhbGxzb2Nr
ZXRzZXJ2ZXIuaCIsCi0gICAgImd1bml0LmNjIiwKLSAgICAiZ3VuaXQuaCIsCisgICAgIm1lbW9y
eV9zdHJlYW0uY2MiLAorICAgICJtZW1vcnlfc3RyZWFtLmgiLAogICAgICJtZW1vcnlfdXNhZ2Uu
Y2MiLAogICAgICJtZW1vcnlfdXNhZ2UuaCIsCiAgICAgIm5hdHNlcnZlci5jYyIsCkBAIC0xMDE1
LDEwICsxMDIzLDEwIEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfYmFzZV90ZXN0c191dGlscyIpIHsK
ICAgICAicHJveHlzZXJ2ZXIuaCIsCiAgICAgInNpZ3Nsb3R0ZXN0ZXIuaCIsCiAgICAgInNpZ3Ns
b3R0ZXN0ZXIuaC5wdW1wIiwKKyAgICAic29ja2V0c3RyZWFtLmNjIiwKKyAgICAic29ja2V0c3Ry
ZWFtLmgiLAogICAgICJ0ZXN0YmFzZTY0LmgiLAogICAgICJ0ZXN0Y2VydGlmaWNhdGV2ZXJpZmll
ci5oIiwKLSAgICAidGVzdGNsaWVudC5jYyIsCi0gICAgInRlc3RjbGllbnQuaCIsCiAgICAgInRl
c3RlY2hvc2VydmVyLmNjIiwKICAgICAidGVzdGVjaG9zZXJ2ZXIuaCIsCiAgICAgInRlc3R1dGls
cy5jYyIsCkBAIC0xMDI5LDE2ICsxMDM3LDEwIEBAIHJ0Y19zb3VyY2Vfc2V0KCJydGNfYmFzZV90
ZXN0c191dGlscyIpIHsKICAgZGVwcyA9IFsKICAgICAiOmNoZWNrcyIsCiAgICAgIjpydGNfYmFz
ZSIsCi0gICAgIjpzdHJpbmd1dGlscyIsCiAgICAgIi4uL2FwaS91bml0czp0aW1lX2RlbHRhIiwK
LSAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAotICAgICJzeXN0ZW06ZmFsbHRocm91Z2giLAog
ICAgICJ0aGlyZF9wYXJ0eS9zaWdzbG90IiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw
L2Fic2wvbWVtb3J5IiwKICAgXQotICBwdWJsaWNfZGVwcyA9IFsKLSAgICAiLy90ZXN0aW5nL2d0
ZXN0IiwKLSAgXQogfQogCiBydGNfc291cmNlX3NldCgicnRjX3Rhc2tfcXVldWVfZm9yX3Rlc3Qi
KSB7CkBAIC0xMDYzLDYgKzEwNjUsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAg
ICJzaWdzbG90X3VuaXR0ZXN0LmNjIiwKICAgICBdCiAgICAgZGVwcyA9IFsKKyAgICAgICI6Z3Vu
aXRfaGVscGVycyIsCiAgICAgICAiOnJ0Y19iYXNlIiwKICAgICAgICI6cnRjX2Jhc2VfdGVzdHNf
dXRpbHMiLAogICAgICAgInRoaXJkX3BhcnR5L3NpZ3Nsb3QiLApAQCAtMTA3NSwxMyArMTA3OCwx
MyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJ1bml0dGVzdF9tYWluLmNjIiwK
ICAgICBdCiAgICAgZGVwcyA9IFsKKyAgICAgICI6Z3VuaXRfaGVscGVycyIsCiAgICAgICAiOnJ0
Y19iYXNlIiwKICAgICAgICI6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIjpydGNfYmFzZV90
ZXN0c191dGlscyIsCiAgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAg
ICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAgICAgICAiLi4vdGVzdDpmaWVsZF90
cmlhbCIsCi0gICAgICAiLi4vdGVzdDpmaWxldXRpbHMiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9z
dXBwb3J0IiwKICAgICBdCiAKQEAgLTExMDQsOSArMTEwNywxMSBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKICAgICBdCiAgICAgZGVwcyA9IFsKICAgICAgICI6Y2hlY2tzIiwKKyAgICAgICI6
Z3VuaXRfaGVscGVycyIsCiAgICAgICAiOnJ0Y19iYXNlIiwKICAgICAgICI6cnRjX2Jhc2VfdGVz
dHNfbWFpbiIsCiAgICAgICAiOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKKyAgICAgICI6dGVzdGNs
aWVudCIsCiAgICAgICAiLi4vc3lzdGVtX3dyYXBwZXJzOnN5c3RlbV93cmFwcGVycyIsCiAgICAg
ICAiLi4vdGVzdDpmaWxldXRpbHMiLAogICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKQEAg
LTExNDcsNyArMTE1Miw2IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIm51bWVy
aWNzL3NhZmVfbWlubWF4X3VuaXR0ZXN0LmNjIiwKICAgICAgICJudW1lcmljcy9zYW1wbGVfY291
bnRlcl91bml0dGVzdC5jYyIsCiAgICAgICAib25ldGltZWV2ZW50X3VuaXR0ZXN0LmNjIiwKLSAg
ICAgICJwYXRodXRpbHNfdW5pdHRlc3QuY2MiLAogICAgICAgInBsYXRmb3JtX2ZpbGVfdW5pdHRl
c3QuY2MiLAogICAgICAgInBsYXRmb3JtX3RocmVhZF91bml0dGVzdC5jYyIsCiAgICAgICAicmFu
ZG9tX3VuaXR0ZXN0LmNjIiwKQEAgLTExNzQsNiArMTE3OCw3IEBAIGlmIChydGNfaW5jbHVkZV90
ZXN0cykgewogICAgIH0KICAgICBkZXBzID0gWwogICAgICAgIjpjaGVja3MiLAorICAgICAgIjpn
dW5pdF9oZWxwZXJzIiwKICAgICAgICI6cmF0ZV9saW1pdGVyIiwKICAgICAgICI6cnRjX2Jhc2Ui
LAogICAgICAgIjpydGNfYmFzZV9hcHByb3ZlZCIsCkBAIC0xMTg0LDYgKzExODksNyBAQCBpZiAo
cnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6c2FmZV9taW5tYXgiLAogICAgICAgIjpzYW5p
dGl6ZXIiLAogICAgICAgIjpzdHJpbmd1dGlscyIsCisgICAgICAiOnRlc3RjbGllbnQiLAogICAg
ICAgIi4uL2FwaTphcnJheV92aWV3IiwKICAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6c3lzdGVt
X3dyYXBwZXJzIiwKICAgICAgICIuLi90ZXN0OmZpbGV1dGlscyIsCkBAIC0xMjAzLDYgKzEyMDks
NyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJ0YXNrX3F1ZXVlX3VuaXR0ZXN0
LmNjIiwKICAgICBdCiAgICAgZGVwcyA9IFsKKyAgICAgICI6Z3VuaXRfaGVscGVycyIsCiAgICAg
ICAiOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICI6cnRjX2Jhc2VfdGVzdHNfbWFpbiIsCiAg
ICAgICAiOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKQEAgLTEyMzYsNyArMTI0Myw4IEBAIGlmIChy
dGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgIndlYWtfcHRyX3VuaXR0ZXN0LmNjIiwKICAgICBd
CiAgICAgZGVwcyA9IFsKLSAgICAgICI6cnRjX2Jhc2VfYXBwcm92ZWRfZ2VuZXJpYyIsCisgICAg
ICAiOmd1bml0X2hlbHBlcnMiLAorICAgICAgIjpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgICAi
OnJ0Y19iYXNlX3Rlc3RzX21haW4iLAogICAgICAgIjpydGNfYmFzZV90ZXN0c191dGlscyIsCiAg
ICAgICAiOnJ0Y19ldmVudCIsCkBAIC0xMjUxLDYgKzEyNTksNyBAQCBpZiAocnRjX2luY2x1ZGVf
dGVzdHMpIHsKIAogICAgIHNvdXJjZXMgPSBbCiAgICAgICAibnVtZXJpY3MvZXhwX2ZpbHRlcl91
bml0dGVzdC5jYyIsCisgICAgICAibnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2VfdW5pdHRlc3QuY2Mi
LAogICAgICAgIm51bWVyaWNzL21vdmluZ19tZWRpYW5fZmlsdGVyX3VuaXR0ZXN0LmNjIiwKICAg
ICAgICJudW1lcmljcy9wZXJjZW50aWxlX2ZpbHRlcl91bml0dGVzdC5jYyIsCiAgICAgICAibnVt
ZXJpY3Mvc2VxdWVuY2VfbnVtYmVyX3V0aWxfdW5pdHRlc3QuY2MiLApAQCAtMTI3MCw2ICsxMjc5
LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAic3RyaW5ncy9qc29uX3VuaXR0
ZXN0LmNjIiwKICAgICBdCiAgICAgZGVwcyA9IFsKKyAgICAgICI6Z3VuaXRfaGVscGVycyIsCiAg
ICAgICAiOnJ0Y19iYXNlX3Rlc3RzX21haW4iLAogICAgICAgIjpydGNfYmFzZV90ZXN0c191dGls
cyIsCiAgICAgICAiOnJ0Y19qc29uIiwKQEAgLTEyOTIsNyArMTMwMiw2IEBAIGlmIChydGNfaW5j
bHVkZV90ZXN0cykgewogICAgICAgIm1lc3NhZ2VxdWV1ZV91bml0dGVzdC5jYyIsCiAgICAgICAi
bmF0X3VuaXR0ZXN0LmNjIiwKICAgICAgICJuZXR3b3JrX3VuaXR0ZXN0LmNjIiwKLSAgICAgICJv
cHRpb25zZmlsZV91bml0dGVzdC5jYyIsCiAgICAgICAicHJveHlfdW5pdHRlc3QuY2MiLAogICAg
ICAgInJvbGxpbmdhY2N1bXVsYXRvcl91bml0dGVzdC5jYyIsCiAgICAgICAicnRjY2VydGlmaWNh
dGVfdW5pdHRlc3QuY2MiLApAQCAtMTMxMSw2ICsxMzIwLDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rl
c3RzKSB7CiAgICAgfQogICAgIGlmIChpc19wb3NpeCB8fCBpc19mdWNoc2lhKSB7CiAgICAgICBz
b3VyY2VzICs9IFsKKyAgICAgICAgIm9wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZl91bml0dGVz
dC5jYyIsCiAgICAgICAgICJvcGVuc3NsYWRhcHRlcl91bml0dGVzdC5jYyIsCiAgICAgICAgICJv
cGVuc3Nsc2Vzc2lvbmNhY2hlX3VuaXR0ZXN0LmNjIiwKICAgICAgICAgIm9wZW5zc2x1dGlsaXR5
X3VuaXR0ZXN0LmNjIiwKQEAgLTEzMjEsOSArMTMzMSwxMSBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICB9CiAgICAgZGVwcyA9IFsKICAgICAgICI6Y2hlY2tzIiwKKyAgICAgICI6Z3Vu
aXRfaGVscGVycyIsCiAgICAgICAiOnJ0Y19iYXNlX3Rlc3RzX21haW4iLAogICAgICAgIjpydGNf
YmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiOnN0cmluZ3V0aWxzIiwKKyAgICAgICI6dGVzdGNs
aWVudCIsCiAgICAgICAiLi4vYXBpOmFycmF5X3ZpZXciLAogICAgICAgIi4uL3Rlc3Q6ZmlsZXV0
aWxzIiwKICAgICAgICIuLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9EdW1teS5qYXZhIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvRHVtbXku
amF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhmMDJjOTBkYmY2NjBkZDA1OGVl
NWQxMzZlOTFhMjRlZWZhMmUyMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9EdW1teS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCi0gKi8KLQotLyoqCi0gKiBUaGlzIGNsYXNzIG9ubHkgZXhpc3RzIGFzIGdsdWUgaW4gYSB0
cmFuc2l0aW9uLgotICogVE9ETyhramVsbGFuZGVyKTogUmVtb3ZlLgotICogU2VlIGh0dHBzOi8v
YnVncy53ZWJydGMub3JnLzc2MzQgZm9yIG1vcmUgZGV0YWlscy4KLSAqLwotY2xhc3MgRHVtbXkg
ewotICBEdW1teSgpIHsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvT1dORVJTCmluZGV4IDY5Y2UyNTMwODdm
NTliMTdiNzZmMmE1Y2U4MDcyOTBiY2JmMmJiMTQuLmU2N2U4MzQwZjdjNzg5MGY3MGU1MWIyMzY4
OTU1YTE3ZTk2MTVlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9PV05FUlMKQEAgLTIsNyArMiw2IEBAIGh0YUB3
ZWJydGMub3JnCiBqdWJlcnRpQHdlYnJ0Yy5vcmcKIGt3aWJlcmdAd2VicnRjLm9yZwogbWZsb2Rt
YW5Ad2VicnRjLm9yZwotcGVya2pAd2VicnRjLm9yZwogcHRoYXRjaGVyQHdlYnJ0Yy5vcmcKIHFp
bmdzaUB3ZWJydGMub3JnCiBzZXJnZXl1QGNocm9taXVtLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNpbnZva2Vy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
YXN5bmNpbnZva2VyLmNjCmluZGV4IGUyNTVmYjk4ZmNjYjcyNzZiNDlmMzI2ZTgxNzc3ZTcwOTgw
NDVhMDAuLmYwZGQxODgxZWYzNDcyYjg1YzI2MGQ0NzZkNjYxZmRlODMyMzA3MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Fz
eW5jaW52b2tlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9hc3luY2ludm9rZXIuY2MKQEAgLTE3LDcgKzE3LDcgQEAgbmFtZXNwYWNl
IHJ0YyB7CiAKIEFzeW5jSW52b2tlcjo6QXN5bmNJbnZva2VyKCkKICAgICA6IHBlbmRpbmdfaW52
b2NhdGlvbnNfKDApLAotICAgICAgaW52b2NhdGlvbl9jb21wbGV0ZV8obmV3IFJlZkNvdW50ZWRP
YmplY3Q8RXZlbnQ+KGZhbHNlLCBmYWxzZSkpLAorICAgICAgaW52b2NhdGlvbl9jb21wbGV0ZV8o
bmV3IFJlZkNvdW50ZWRPYmplY3Q8RXZlbnQ+KCkpLAogICAgICAgZGVzdHJveWluZ18oZmFsc2Up
IHt9CiAKIEFzeW5jSW52b2tlcjo6fkFzeW5jSW52b2tlcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jcGFja2V0
c29ja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuY2MKaW5kZXggZTFiMWVhZTZhMzFkNzM1YjcwM2FmMjRi
NThjYzgxODRiOGMxZGNiOS4uN2UwY2M4ZjgxMDExZTU5NmM0MzgwNWIyMGM5ZWQ2MjlhYTRiMWE4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuY2MKQEAgLTks
NiArOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcGFja2V0c29ja2V0Lmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvbmV0aGVscGVyLmgiCiAKIG5hbWVzcGFjZSBydGMgewogCkBA
IC0zMyw5ICszNCwxMSBAQCB2b2lkIENvcHlTb2NrZXRJbmZvcm1hdGlvblRvUGFja2V0SW5mbyhz
aXplX3QgcGFja2V0X3NpemVfYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzX2Nvbm5lY3Rpb25sZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnRjOjpQYWNrZXRJbmZvKiBpbmZvKSB7CiAgIGluZm8tPnBhY2tldF9z
aXplX2J5dGVzID0gcGFja2V0X3NpemVfYnl0ZXM7Ci0gIGluZm8tPmxvY2FsX3NvY2tldF9hZGRy
ZXNzID0gc29ja2V0X2Zyb20uR2V0TG9jYWxBZGRyZXNzKCk7Ci0gIGlmICghaXNfY29ubmVjdGlv
bmxlc3MpIHsKLSAgICBpbmZvLT5yZW1vdGVfc29ja2V0X2FkZHJlc3MgPSBzb2NrZXRfZnJvbS5H
ZXRSZW1vdGVBZGRyZXNzKCk7CisgIC8vIFRPRE8oc3J0ZSk6IE1ha2Ugc3VyZSB0aGF0IHRoZSBm
YW1pbHkgb2YgdGhlIGxvY2FsIHNvY2tldCBpcyBhbHdheXMgc2V0CisgIC8vIGluIHRoZSBWaXJ0
dWFsU29ja2V0IGltcGxlbWVudGF0aW9uIGFuZCByZW1vdmUgdGhpcyBjaGVjay4KKyAgaW50IGZh
bWlseSA9IHNvY2tldF9mcm9tLkdldExvY2FsQWRkcmVzcygpLmZhbWlseSgpOworICBpZiAoZmFt
aWx5ICE9IDApIHsKKyAgICBpbmZvLT5pcF9vdmVyaGVhZF9ieXRlcyA9IGNyaWNrZXQ6OkdldElw
T3ZlcmhlYWQoZmFtaWx5KTsKICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNw
YWNrZXRzb2NrZXQuaAppbmRleCBiYjBiM2JjYzA0OGU3NWZlNDg2ZWZkZjY1NTdmM2NhNzE3MWNi
YjAyLi40NGQ2YzY3NDI2N2E2MTY1ZjJiMTk1ZjgxZjJkODgyZjMzNjQxMzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3lu
Y3BhY2tldHNvY2tldC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2FzeW5jcGFja2V0c29ja2V0LmgKQEAgLTEyLDYgKzEyLDcgQEAKICNk
ZWZpbmUgUlRDX0JBU0VfQVNZTkNQQUNLRVRTT0NLRVRfSF8KIAogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9kZXByZWNhdGlvbi5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2RzY3AuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3QuaCIKQEAgLTUw
LDI1ICs1MSw5IEBAIHN0cnVjdCBQYWNrZXRPcHRpb25zIHsKICAgUGFja2V0SW5mbyBpbmZvX3Np
Z25hbGVkX2FmdGVyX3NlbnQ7CiB9OwogCi0vLyBUaGlzIHN0cnVjdHVyZSB3aWxsIGhhdmUgdGhl
IGluZm9ybWF0aW9uIGFib3V0IHdoZW4gcGFja2V0IGlzIGFjdHVhbGx5Ci0vLyByZWNlaXZlZCBi
eSBzb2NrZXQuCi1zdHJ1Y3QgUGFja2V0VGltZSB7Ci0gIFBhY2tldFRpbWUoKSA6IHRpbWVzdGFt
cCgtMSksIG5vdF9iZWZvcmUoLTEpIHt9Ci0gIFBhY2tldFRpbWUoaW50NjRfdCB0aW1lc3RhbXAs
IGludDY0X3Qgbm90X2JlZm9yZSkKLSAgICAgIDogdGltZXN0YW1wKHRpbWVzdGFtcCksIG5vdF9i
ZWZvcmUobm90X2JlZm9yZSkge30KLQotICBpbnQ2NF90IHRpbWVzdGFtcDsgIC8vIFJlY2VpdmUg
dGltZSBhZnRlciBzb2NrZXQgZGVsaXZlcnMgdGhlIGRhdGEuCi0KLSAgLy8gRWFybGllc3QgcG9z
c2libGUgdGltZSB0aGUgZGF0YSBjb3VsZCBoYXZlIGFycml2ZWQsIGluZGljYXRpbmcgdGhlCi0g
IC8vIHBvdGVudGlhbCBlcnJvciBpbiB0aGUgfHRpbWVzdGFtcHwgdmFsdWUsIGluIGNhc2UgdGhl
IHN5c3RlbSwgaXMgYnVzeS4gRm9yCi0gIC8vIGV4YW1wbGUsIHRoZSB0aW1lIG9mIHRoZSBsYXN0
IHNlbGVjdCgpIGNhbGwuCi0gIC8vIElmIHVua25vd24sIHRoaXMgdmFsdWUgd2lsbCBiZSBzZXQg
dG8gemVyby4KLSAgaW50NjRfdCBub3RfYmVmb3JlOwotfTsKLQotaW5saW5lIFBhY2tldFRpbWUg
Q3JlYXRlUGFja2V0VGltZShpbnQ2NF90IG5vdF9iZWZvcmUpIHsKLSAgcmV0dXJuIFBhY2tldFRp
bWUoVGltZU1pY3JvcygpLCBub3RfYmVmb3JlKTsKLX0KKy8vIFRPRE8oYnVncy53ZWJydGMub3Jn
Lzk1ODQpOiBDb21wYXRpYmlsaXR5IGFsaWFzLCBkZWxldGUgYXMgc29vbiBhcyBkb3duc3RyZWFt
CisvLyBjb2RlIGlzIHVwZGF0ZWQuCit0eXBlZGVmIGludDY0X3QgUGFja2V0VGltZTsKIAogLy8g
UHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gcmVjZWl2ZSBwYWNrZXRzIGFzeW5jaHJvbm91c2x5LiBT
ZW5kcyBhcmUgbm90CiAvLyBidWZmZXJlZCBzaW5jZSBpdCBpcyBhY2NlcHRhYmxlIHRvIGRyb3Ag
cGFja2V0cyB1bmRlciBoaWdoIGxvYWQuCkBAIC0xMjAsNyArMTA1LDkgQEAgY2xhc3MgQXN5bmNQ
YWNrZXRTb2NrZXQgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqLAogICAgICAgICAgICAgICAgICAgIHNpemVfdCwKICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTb2NrZXRBZGRyZXNzJiwKLSAgICAgICAgICAgICAgICAgICBjb25z
dCBQYWNrZXRUaW1lJj4KKyAgICAgICAgICAgICAgICAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9y
Zy85NTg0KTogQ2hhbmdlIHRvIHBhc3NpbmcgdGhlIGludDY0X3QKKyAgICAgICAgICAgICAgICAg
ICAvLyB0aW1lc3RhbXAgYnkgdmFsdWUuCisgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRf
dCY+CiAgICAgICBTaWduYWxSZWFkUGFja2V0OwogCiAgIC8vIEVtaXR0ZWQgZWFjaCB0aW1lIGEg
cGFja2V0IGlzIHNlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3Jlc29sdmVyaW50ZXJmYWNlLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3Jlc29sdmVy
aW50ZXJmYWNlLmgKaW5kZXggNWIyMzAzZjRkODAyODYwODFiNzlhOWIxMjlmOGQ3ZjIwNWUwMDUx
ZS4uZjNkZjg4NDI0OTNmZGUzYzc2YzRhZDVlOTlkYzllMDY5MWU0ZjdiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmNy
ZXNvbHZlcmludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jcmVzb2x2ZXJpbnRlcmZhY2UuaApAQCAtMjIsOSArMjIs
MTIgQEAgY2xhc3MgQXN5bmNSZXNvbHZlckludGVyZmFjZSB7CiAgIEFzeW5jUmVzb2x2ZXJJbnRl
cmZhY2UoKTsKICAgdmlydHVhbCB+QXN5bmNSZXNvbHZlckludGVyZmFjZSgpOwogCi0gIC8vIFN0
YXJ0IGFkZHJlc3MgcmVzb2x2ZSBwcm9jZXNzLgorICAvLyBTdGFydCBhZGRyZXNzIHJlc29sdXRp
b24gb2YgdGhlIGhvc3RuYW1lIGluIHxhZGRyfC4KICAgdmlydHVhbCB2b2lkIFN0YXJ0KGNvbnN0
IFNvY2tldEFkZHJlc3MmIGFkZHIpID0gMDsKLSAgLy8gUmV0dXJucyB0b3AgbW9zdCByZXNvbHZl
ZCBhZGRyZXNzIG9mIHxmYW1pbHl8CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGFkZHJlc3Mg
ZnJvbSB8U3RhcnR8IHdhcyBzdWNjZXNzZnVsbHkgcmVzb2x2ZWQuCisgIC8vIElmIHRoZSBhZGRy
ZXNzIHdhcyBzdWNjZXNzZnVsbHkgcmVzb2x2ZWQsIHNldHMgfGFkZHJ8IHRvIGEgY29weSBvZiB0
aGUKKyAgLy8gYWRkcmVzcyBmcm9tIHxTdGFydHwgd2l0aCB0aGUgSVAgYWRkcmVzcyBzZXQgdG8g
dGhlIHRvcCBtb3N0IHJlc29sdmVkCisgIC8vIGFkZHJlc3Mgb2YgfGZhbWlseXwgKHxhZGRyfCB3
aWxsIGhhdmUgYm90aCBob3N0bmFtZSBhbmQgdGhlIHJlc29sdmVkIGlwKS4KICAgdmlydHVhbCBi
b29sIEdldFJlc29sdmVkQWRkcmVzcyhpbnQgZmFtaWx5LCBTb2NrZXRBZGRyZXNzKiBhZGRyKSBj
b25zdCA9IDA7CiAgIC8vIFJldHVybnMgZXJyb3IgZnJvbSByZXNvbHZlci4KICAgdmlydHVhbCBp
bnQgR2V0RXJyb3IoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3RjcHNvY2tldC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdGNwc29j
a2V0LmNjCmluZGV4IDNkNjhhMmE0NmE2YzYzN2E4ZWQyZmE3YTJmYmQ5Y2IzZTVjY2Y3ZGQuLjY2
NmIzMzU3YWFhZjU1M2ZhMzA3NDFlY2I2NTA3NzQyODY2ZGEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdGNwc29j
a2V0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2FzeW5jdGNwc29ja2V0LmNjCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAicnRj
X2Jhc2UvYnl0ZW9yZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIiAg
Ly8gZm9yIFRpbWVNaWxsaXMKIAogI2lmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQogI2luY2x1ZGUg
PGVycm5vLmg+CkBAIC0zMjAsNyArMzIxLDcgQEAgdm9pZCBBc3luY1RDUFNvY2tldDo6UHJvY2Vz
c0lucHV0KGNoYXIqIGRhdGEsIHNpemVfdCogbGVuKSB7CiAgICAgICByZXR1cm47CiAKICAgICBT
aWduYWxSZWFkUGFja2V0KHRoaXMsIGRhdGEgKyBrUGFja2V0TGVuU2l6ZSwgcGt0X2xlbiwgcmVt
b3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICBDcmVhdGVQYWNrZXRUaW1lKDApKTsKKyAg
ICAgICAgICAgICAgICAgICAgIFRpbWVNaWNyb3MoKSk7CiAKICAgICAqbGVuIC09IGtQYWNrZXRM
ZW5TaXplICsgcGt0X2xlbjsKICAgICBpZiAoKmxlbiA+IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdGNwc29j
a2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9hc3luY3RjcHNvY2tldC5oCmluZGV4IDk0M2UwMTBmNGRhYzAxOWMxYzgxMmQ4ZjQwNjQ4N2Nk
MmMxZjViZGEuLjk1NjdkZDkxNDMyYjc0YzAwM2U4ZDdiMmQyODI3OGMzYjI5NzJkNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2FzeW5jdGNwc29ja2V0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvYXN5bmN0Y3Bzb2NrZXQuaApAQCAtMTEsMTIgKzExLDE1IEBACiAj
aWZuZGVmIFJUQ19CQVNFX0FTWU5DVENQU09DS0VUX0hfCiAjZGVmaW5lIFJUQ19CQVNFX0FTWU5D
VENQU09DS0VUX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAK
ICNpbmNsdWRlICJydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oIgorI2luY2x1ZGUgInJ0Y19i
YXNlL2FzeW5jc29ja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tl
dGZhY3RvcnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9zb2NrZXRhZGRyZXNzLmgiCiAKIG5hbWVzcGFjZSBydGMgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9hc3luY3Vk
cHNvY2tldC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2FzeW5jdWRwc29ja2V0LmNjCmluZGV4IGJhNWZhODhhYWRiM2UyZjRkNmY0MTI0YTkz
NGYxNDRkNTAyMzY4ZWIuLjJmOTAxMWNhYjE0M2FhYmQ0MGFjZmYwZGU5YzU1MTMzM2FiMzgyNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2FzeW5jdWRwc29ja2V0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdWRwc29ja2V0LmNjCkBAIC03NCw3ICs3NCw2
IEBAIGludCBBc3luY1VEUFNvY2tldDo6U2VuZFRvKGNvbnN0IHZvaWQqIHB2LAogICBydGM6OlNl
bnRQYWNrZXQgc2VudF9wYWNrZXQob3B0aW9ucy5wYWNrZXRfaWQsIHJ0Yzo6VGltZU1pbGxpcygp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5pbmZvX3NpZ25hbGVkX2Fm
dGVyX3NlbnQpOwogICBDb3B5U29ja2V0SW5mb3JtYXRpb25Ub1BhY2tldEluZm8oY2IsICp0aGlz
LCB0cnVlLCAmc2VudF9wYWNrZXQuaW5mbyk7Ci0gIHNlbnRfcGFja2V0LmluZm8ucmVtb3RlX3Nv
Y2tldF9hZGRyZXNzID0gYWRkcjsKICAgaW50IHJldCA9IHNvY2tldF8tPlNlbmRUbyhwdiwgY2Is
IGFkZHIpOwogICBTaWduYWxTZW50UGFja2V0KHRoaXMsIHNlbnRfcGFja2V0KTsKICAgcmV0dXJu
IHJldDsKQEAgLTEyMyw5ICsxMjIsOCBAQCB2b2lkIEFzeW5jVURQU29ja2V0OjpPblJlYWRFdmVu
dChBc3luY1NvY2tldCogc29ja2V0KSB7CiAKICAgLy8gVE9ETzogTWFrZSBzdXJlIHRoYXQgd2Ug
Z290IGFsbCBvZiB0aGUgcGFja2V0LgogICAvLyBJZiB3ZSBkaWQgbm90LCB0aGVuIHdlIHNob3Vs
ZCByZXNpemUgb3VyIGJ1ZmZlciB0byBiZSBsYXJnZSBlbm91Z2guCi0gIFNpZ25hbFJlYWRQYWNr
ZXQoCi0gICAgICB0aGlzLCBidWZfLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbiksIHJlbW90ZV9h
ZGRyLAotICAgICAgKHRpbWVzdGFtcCA+IC0xID8gUGFja2V0VGltZSh0aW1lc3RhbXAsIDApIDog
Q3JlYXRlUGFja2V0VGltZSgwKSkpOworICBTaWduYWxSZWFkUGFja2V0KHRoaXMsIGJ1Zl8sIHN0
YXRpY19jYXN0PHNpemVfdD4obGVuKSwgcmVtb3RlX2FkZHIsCisgICAgICAgICAgICAgICAgICAg
KHRpbWVzdGFtcCA+IC0xID8gdGltZXN0YW1wIDogVGltZU1pY3JvcygpKSk7CiB9CiAKIHZvaWQg
QXN5bmNVRFBTb2NrZXQ6Ok9uV3JpdGVFdmVudChBc3luY1NvY2tldCogc29ja2V0KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9hc3luY3VkcHNvY2tldC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvYXN5bmN1ZHBzb2NrZXQuaAppbmRleCBkODE0YjRiZmQwYzVkYmU1ZDdl
NGQ0YWM0ODZjN2I4ZmI1NjA5OGY0Li4wMzA5NDZkOGEwM2E1YzZjZjg0YjNmODdiNzc2YzE3OWJj
YzA5MjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9hc3luY3VkcHNvY2tldC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2FzeW5jdWRwc29ja2V0LmgKQEAgLTExLDkg
KzExLDEzIEBACiAjaWZuZGVmIFJUQ19CQVNFX0FTWU5DVURQU09DS0VUX0hfCiAjZGVmaW5lIFJU
Q19CQVNFX0FTWU5DVURQU09DS0VUX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRl
IDxtZW1vcnk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2FzeW5jc29ja2V0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3NvY2tldGZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9iYXNlNjRfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9iYXNlNjRfdW5pdHRlc3QuY2MKaW5kZXggNGI4NTdmMWFhOTQwMDg0MTllZDg0NmZhNWQz
M2I4ODQwNWY4NDQwZC4uYmRmODU1OWMxMjdmNDdiNDFhZjI1ODJjZGQ1YjUzN2M5OGM5NDIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvYmFzZTY0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Jhc2U2NF91bml0dGVzdC5jYwpAQCAtMTEsNyArMTEs
NiBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2NC9iYXNlNjQuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9ndW5pdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
LSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
dGVzdGJhc2U2NC5oIgogCkBAIC00MzAsMTAgKzQyOSwxMCBAQCBURVNUKEJhc2U2NCwgRW5jb2Rl
RGVjb2RlQmF0dGVyeSkgewogCiAgICAgICAvLyB0cnkgcHV0dGluZyBzb21lIGV4dHJhIHN0dWZm
IGFmdGVyIHRoZSBlcXVhbHMgc2lnbnMsIG9yIGluIGJldHdlZW4gdGhlbQogICAgICAgaWYgKGVx
dWFscyA9PSAyKSB7Ci0gICAgICAgIHNwcmludGZuKGZpcnN0X2VxdWFscywgNiwgIiA9ID0gIik7
CisgICAgICAgIHNucHJpbnRmKGZpcnN0X2VxdWFscywgNiwgIiA9ID0gIik7CiAgICAgICAgIGxl
biA9IGZpcnN0X2VxdWFscyAtIGVuY29kZV9idWZmZXIgKyA1OwogICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgc3ByaW50Zm4oZmlyc3RfZXF1YWxzLCA2LCAiID0gIik7CisgICAgICAgIHNucHJpbnRm
KGZpcnN0X2VxdWFscywgNiwgIiA9ICIpOwogICAgICAgICBsZW4gPSBmaXJzdF9lcXVhbHMgLSBl
bmNvZGVfYnVmZmVyICsgMzsKICAgICAgIH0KICAgICAgIGRlY29kZWQyLmFzc2lnbigidGhpcyBq
dW5rIHNob3VsZCBiZSBpZ25vcmVkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
Yml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5jYwppbmRleCBkMmEwNmNkOWVmZWM4MWNjN2E0ZWVh
YjEwMzYzMTVkNjZkZGU3Y2QxLi40NmU2Njc0MWUwYTA0MTE1NTUyNzNkY2VkNzYxNDFhMTRkZmQ4
YTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9u
c3RyYXRlZ3kuY2MKQEAgLTksOSArOSwzMSBAQAogICovCiAKICNpbmNsdWRlICJydGNfYmFzZS9i
aXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmgiCisKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPG1hcD4KICNpbmNs
dWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9taW5tYXgu
aCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgorCitu
YW1lc3BhY2Ugd2VicnRjIHsKK0F1ZGlvUHJpb3JpdHlDb25maWc6OkF1ZGlvUHJpb3JpdHlDb25m
aWcoKQorICAgIDogbWluX3JhdGUoIm1pbiIpLCBtYXhfcmF0ZSgibWF4IiksIHRhcmdldF9yYXRl
KCJ0YXJnZXQiKSB7CisgIHN0ZDo6c3RyaW5nIHRyaWFsX3N0cmluZzsKKy8vIFRPRE8oYnVncy53
ZWJydGMub3JnLzk4ODkpOiBSZW1vdmUgdGhpcyB3aGVuIENocm9taXVtIGJ1aWxkIGhhcyBiZWVu
IGZpeGVkLgorI2lmICFkZWZpbmVkKFdFQlJUQ19DSFJPTUlVTV9CVUlMRCkKKyAgdHJpYWxfc3Ry
aW5nID0gZmllbGRfdHJpYWw6OkZpbmRGdWxsTmFtZSgiV2ViUlRDLUJ3ZS1BdWRpb1ByaW9yaXR5
Iik7CisjZW5kaWYKKyAgUGFyc2VGaWVsZFRyaWFsKHsmbWluX3JhdGUsICZtYXhfcmF0ZSwgJnRh
cmdldF9yYXRlfSwgdHJpYWxfc3RyaW5nKTsKK30KK0F1ZGlvUHJpb3JpdHlDb25maWc6OkF1ZGlv
UHJpb3JpdHlDb25maWcoY29uc3QgQXVkaW9Qcmlvcml0eUNvbmZpZyYpID0gZGVmYXVsdDsKK0F1
ZGlvUHJpb3JpdHlDb25maWc6On5BdWRpb1ByaW9yaXR5Q29uZmlnKCkgPSBkZWZhdWx0OworCit9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKIG5hbWVzcGFjZSBydGMgewogCiAvLyBUaGUgcHVycG9z
ZSBvZiB0aGlzIGlzIHRvIGFsbG93IHZpZGVvIHN0cmVhbXMgdG8gdXNlIGV4dHJhIGJhbmR3aWR0
aCBmb3IgRkVDLgpAQCAtMjEsMzEgKzQzLDMxIEBAIG5hbWVzcGFjZSBydGMgewogY29uc3QgaW50
IGtUcmFuc21pc3Npb25NYXhCaXRyYXRlTXVsdGlwbGllciA9IDI7CiAKIHN0ZDo6dmVjdG9yPHVp
bnQzMl90PiBCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpTZXRBbGxCaXRyYXRlc1RvTWluaW11
bSgKLSAgICBjb25zdCBBcnJheVZpZXc8Y29uc3QgVHJhY2tDb25maWcqPiB0cmFja19jb25maWdz
KSB7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJh
Y2tDb25maWc+JiB0cmFja19jb25maWdzKSB7CiAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiB0cmFj
a19hbGxvY2F0aW9uczsKLSAgZm9yIChjb25zdCBhdXRvKiB0cmFja19jb25maWcgOiB0cmFja19j
b25maWdzKSB7Ci0gICAgdHJhY2tfYWxsb2NhdGlvbnMucHVzaF9iYWNrKHRyYWNrX2NvbmZpZy0+
bWluX2JpdHJhdGVfYnBzKTsKKyAgZm9yIChjb25zdCBhdXRvJiB0cmFja19jb25maWcgOiB0cmFj
a19jb25maWdzKSB7CisgICAgdHJhY2tfYWxsb2NhdGlvbnMucHVzaF9iYWNrKHRyYWNrX2NvbmZp
Zy5taW5fYml0cmF0ZV9icHMpOwogICB9CiAgIHJldHVybiB0cmFja19hbGxvY2F0aW9uczsKIH0K
IAogc3RkOjp2ZWN0b3I8dWludDMyX3Q+IEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OkRpc3Ry
aWJ1dGVCaXRyYXRlc0V2ZW5seSgKLSAgICBjb25zdCBBcnJheVZpZXc8Y29uc3QgVHJhY2tDb25m
aWcqPiB0cmFja19jb25maWdzLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEJpdHJhdGVBbGxvY2F0
aW9uU3RyYXRlZ3k6OlRyYWNrQ29uZmlnPiYgdHJhY2tfY29uZmlncywKICAgICB1aW50MzJfdCBh
dmFpbGFibGVfYml0cmF0ZSkgewogICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gdHJhY2tfYWxsb2Nh
dGlvbnMgPQogICAgICAgU2V0QWxsQml0cmF0ZXNUb01pbmltdW0odHJhY2tfY29uZmlncyk7CiAg
IHVpbnQzMl90IHN1bV9taW5fYml0cmF0ZXMgPSAwOwogICB1aW50MzJfdCBzdW1fbWF4X2JpdHJh
dGVzID0gMDsKLSAgZm9yIChjb25zdCBhdXRvKiB0cmFja19jb25maWcgOiB0cmFja19jb25maWdz
KSB7Ci0gICAgc3VtX21pbl9iaXRyYXRlcyArPSB0cmFja19jb25maWctPm1pbl9iaXRyYXRlX2Jw
czsKLSAgICBzdW1fbWF4X2JpdHJhdGVzICs9IHRyYWNrX2NvbmZpZy0+bWF4X2JpdHJhdGVfYnBz
OworICBmb3IgKGNvbnN0IGF1dG8mIHRyYWNrX2NvbmZpZyA6IHRyYWNrX2NvbmZpZ3MpIHsKKyAg
ICBzdW1fbWluX2JpdHJhdGVzICs9IHRyYWNrX2NvbmZpZy5taW5fYml0cmF0ZV9icHM7CisgICAg
c3VtX21heF9iaXRyYXRlcyArPSB0cmFja19jb25maWcubWF4X2JpdHJhdGVfYnBzOwogICB9CiAg
IGlmIChzdW1fbWluX2JpdHJhdGVzID49IGF2YWlsYWJsZV9iaXRyYXRlKSB7CiAgICAgcmV0dXJu
IHRyYWNrX2FsbG9jYXRpb25zOwogICB9IGVsc2UgaWYgKGF2YWlsYWJsZV9iaXRyYXRlID49IHN1
bV9tYXhfYml0cmF0ZXMpIHsKICAgICBhdXRvIHRyYWNrX2FsbG9jYXRpb25zX2l0ID0gdHJhY2tf
YWxsb2NhdGlvbnMuYmVnaW4oKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIHRyYWNrX2NvbmZpZyA6
IHRyYWNrX2NvbmZpZ3MpIHsKLSAgICAgICp0cmFja19hbGxvY2F0aW9uc19pdCsrID0gdHJhY2tf
Y29uZmlnLT5tYXhfYml0cmF0ZV9icHM7CisgICAgZm9yIChjb25zdCBhdXRvJiB0cmFja19jb25m
aWcgOiB0cmFja19jb25maWdzKSB7CisgICAgICAqdHJhY2tfYWxsb2NhdGlvbnNfaXQrKyA9IHRy
YWNrX2NvbmZpZy5tYXhfYml0cmF0ZV9icHM7CiAgICAgfQogICAgIHJldHVybiB0cmFja19hbGxv
Y2F0aW9uczsKICAgfSBlbHNlIHsKQEAgLTU0LDExICs3NiwxMCBAQCBzdGQ6OnZlY3Rvcjx1aW50
MzJfdD4gQml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6RGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5
KAogICAgIC8vIGxvd2VzdCBtYXhfYml0cmF0ZV9icHMuIFJlbWFpbmRlciBvZiBhdmFpbGFibGUg
Yml0cmF0ZSBzcGxpdCBldmVubHkgYW1vbmcKICAgICAvLyByZW1haW5pbmcgdHJhY2tzLgogICAg
IHN0ZDo6bXVsdGltYXA8dWludDMyX3QsIHNpemVfdD4gbWF4X2JpdHJhdGVfc29ydGVkX2NvbmZp
Z3M7Ci0gICAgZm9yIChjb25zdCBUcmFja0NvbmZpZyoqIHRyYWNrX2NvbmZpZ3NfaXQgPSB0cmFj
a19jb25maWdzLmJlZ2luKCk7Ci0gICAgICAgICB0cmFja19jb25maWdzX2l0ICE9IHRyYWNrX2Nv
bmZpZ3MuZW5kKCk7ICsrdHJhY2tfY29uZmlnc19pdCkgeworICAgIGZvciAoY29uc3QgYXV0byYg
dHJhY2tfY29uZmlnIDogdHJhY2tfY29uZmlncykgewogICAgICAgbWF4X2JpdHJhdGVfc29ydGVk
X2NvbmZpZ3MuaW5zZXJ0KAotICAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKCgqdHJhY2tfY29uZmln
c19pdCktPm1heF9iaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja19j
b25maWdzX2l0IC0gdHJhY2tfY29uZmlncy5iZWdpbigpKSk7CisgICAgICAgICAgc3RkOjptYWtl
X3BhaXIodHJhY2tfY29uZmlnLm1heF9iaXRyYXRlX2JwcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAmdHJhY2tfY29uZmlnIC0gJnRyYWNrX2NvbmZpZ3MuZnJvbnQoKSkpOwogICAgIH0KICAg
ICB1aW50MzJfdCB0b3RhbF9hdmFpbGFibGVfaW5jcmVhc2UgPSBhdmFpbGFibGVfYml0cmF0ZSAt
IHN1bV9taW5fYml0cmF0ZXM7CiAgICAgaW50IHByb2Nlc3NlZF9jb25maWdzID0gMDsKQEAgLTY3
LDggKzg4LDggQEAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRl
Z3k6OkRpc3RyaWJ1dGVCaXRyYXRlc0V2ZW5seSgKICAgICAgICAgICB0b3RhbF9hdmFpbGFibGVf
aW5jcmVhc2UgLwogICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdD4odHJhY2tfY29uZmln
cy5zaXplKCkgLSBwcm9jZXNzZWRfY29uZmlncykpOwogICAgICAgdWludDMyX3QgY29uc3VtZWRf
aW5jcmVhc2UgPQotICAgICAgICAgIHN0ZDo6bWluKHRyYWNrX2NvbmZpZ3NbdHJhY2tfY29uZmln
X3BhaXIuc2Vjb25kXS0+bWF4X2JpdHJhdGVfYnBzIC0KLSAgICAgICAgICAgICAgICAgICAgICAg
dHJhY2tfY29uZmlnc1t0cmFja19jb25maWdfcGFpci5zZWNvbmRdLT5taW5fYml0cmF0ZV9icHMs
CisgICAgICAgICAgc3RkOjptaW4odHJhY2tfY29uZmlnc1t0cmFja19jb25maWdfcGFpci5zZWNv
bmRdLm1heF9iaXRyYXRlX2JwcyAtCisgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrX2NvbmZp
Z3NbdHJhY2tfY29uZmlnX3BhaXIuc2Vjb25kXS5taW5fYml0cmF0ZV9icHMsCiAgICAgICAgICAg
ICAgICAgICAgYXZhaWxhYmxlX2luY3JlYXNlKTsKICAgICAgIHRyYWNrX2FsbG9jYXRpb25zW3Ry
YWNrX2NvbmZpZ19wYWlyLnNlY29uZF0gKz0gY29uc3VtZWRfaW5jcmVhc2U7CiAgICAgICB0b3Rh
bF9hdmFpbGFibGVfaW5jcmVhc2UgLT0gY29uc3VtZWRfaW5jcmVhc2U7CkBAIC03Nyw1MyArOTgs
NTAgQEAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OkRp
c3RyaWJ1dGVCaXRyYXRlc0V2ZW5seSgKICAgICByZXR1cm4gdHJhY2tfYWxsb2NhdGlvbnM7CiAg
IH0KIH0KLQogQXVkaW9Qcmlvcml0eUJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OkF1ZGlvUHJp
b3JpdHlCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5KAogICAgIHN0ZDo6c3RyaW5nIGF1ZGlvX3Ry
YWNrX2lkLAogICAgIHVpbnQzMl90IHN1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZSkKICAgICA6IGF1
ZGlvX3RyYWNrX2lkXyhhdWRpb190cmFja19pZCksCi0gICAgICBzdWZmaWNpZW50X2F1ZGlvX2Jp
dHJhdGVfKHN1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZSkge30KKyAgICAgIHN1ZmZpY2llbnRfYXVk
aW9fYml0cmF0ZV8oc3VmZmljaWVudF9hdWRpb19iaXRyYXRlKSB7CisgIGlmIChjb25maWdfLnRh
cmdldF9yYXRlKSB7CisgICAgc3VmZmljaWVudF9hdWRpb19iaXRyYXRlXyA9IGNvbmZpZ18udGFy
Z2V0X3JhdGUtPmJwcygpOworICB9Cit9CiAKIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBBdWRpb1By
aW9yaXR5Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6QWxsb2NhdGVCaXRyYXRlcygKICAgICB1
aW50MzJfdCBhdmFpbGFibGVfYml0cmF0ZSwKLSAgICBjb25zdCBBcnJheVZpZXc8Y29uc3QgVHJh
Y2tDb25maWcqPiB0cmFja19jb25maWdzKSB7Ci0gIGNvbnN0IFRyYWNrQ29uZmlnKiBhdWRpb190
cmFja19jb25maWcgPSBOVUxMOworICAgIHN0ZDo6dmVjdG9yPEJpdHJhdGVBbGxvY2F0aW9uU3Ry
YXRlZ3k6OlRyYWNrQ29uZmlnPiB0cmFja19jb25maWdzKSB7CisgIFRyYWNrQ29uZmlnKiBhdWRp
b190cmFja19jb25maWcgPSBudWxscHRyOwogICBzaXplX3QgYXVkaW9fY29uZmlnX2luZGV4ID0g
MDsKICAgdWludDMyX3Qgc3VtX21pbl9iaXRyYXRlcyA9IDA7CiAgIHVpbnQzMl90IHN1bV9tYXhf
Yml0cmF0ZXMgPSAwOwogCi0gIGZvciAoY29uc3QgYXV0byomIHRyYWNrX2NvbmZpZyA6IHRyYWNr
X2NvbmZpZ3MpIHsKLSAgICBzdW1fbWluX2JpdHJhdGVzICs9IHRyYWNrX2NvbmZpZy0+bWluX2Jp
dHJhdGVfYnBzOwotICAgIHN1bV9tYXhfYml0cmF0ZXMgKz0gdHJhY2tfY29uZmlnLT5tYXhfYml0
cmF0ZV9icHM7Ci0gICAgaWYgKHRyYWNrX2NvbmZpZy0+dHJhY2tfaWQgPT0gYXVkaW9fdHJhY2tf
aWRfKSB7Ci0gICAgICBhdWRpb190cmFja19jb25maWcgPSB0cmFja19jb25maWc7CisgIGZvciAo
YXV0byYgdHJhY2tfY29uZmlnIDogdHJhY2tfY29uZmlncykgeworICAgIGlmICh0cmFja19jb25m
aWcudHJhY2tfaWQgPT0gYXVkaW9fdHJhY2tfaWRfKSB7CiAgICAgICBhdWRpb19jb25maWdfaW5k
ZXggPSAmdHJhY2tfY29uZmlnIC0gJnRyYWNrX2NvbmZpZ3NbMF07CisgICAgICBhdWRpb190cmFj
a19jb25maWcgPSAmdHJhY2tfY29uZmlnOworICAgICAgaWYgKGNvbmZpZ18ubWluX3JhdGUpCisg
ICAgICAgIGF1ZGlvX3RyYWNrX2NvbmZpZy0+bWluX2JpdHJhdGVfYnBzID0gY29uZmlnXy5taW5f
cmF0ZS0+YnBzKCk7CisgICAgICBpZiAoY29uZmlnXy5tYXhfcmF0ZSkKKyAgICAgICAgYXVkaW9f
dHJhY2tfY29uZmlnLT5tYXhfYml0cmF0ZV9icHMgPSBjb25maWdfLm1heF9yYXRlLT5icHMoKTsK
ICAgICB9CisgICAgc3VtX21pbl9iaXRyYXRlcyArPSB0cmFja19jb25maWcubWluX2JpdHJhdGVf
YnBzOworICAgIHN1bV9tYXhfYml0cmF0ZXMgKz0gdHJhY2tfY29uZmlnLm1heF9iaXRyYXRlX2Jw
czsKICAgfQogICBpZiAoc3VtX21heF9iaXRyYXRlcyA8IGF2YWlsYWJsZV9iaXRyYXRlKSB7CiAg
ICAgLy8gQWxsb3cgbm9uIGF1ZGlvIHN0cmVhbXMgdG8gZ28gYWJvdmUgbWF4IHVwdG8KICAgICAv
LyBrVHJhbnNtaXNzaW9uTWF4Qml0cmF0ZU11bHRpcGxpZXIgKiBtYXhfYml0cmF0ZV9icHMKLSAg
ICBzaXplX3QgdHJhY2tfY29uZmlnc19zaXplID0gdHJhY2tfY29uZmlncy5zaXplKCk7Ci0gICAg
c3RkOjp2ZWN0b3I8VHJhY2tDb25maWc+IGluY3JlYXNlZF90cmFja19jb25maWdzKHRyYWNrX2Nv
bmZpZ3Nfc2l6ZSk7Ci0gICAgc3RkOjp2ZWN0b3I8Y29uc3QgVHJhY2tDb25maWcqPiBpbmNyZWFz
ZWRfdHJhY2tfY29uZmlnc19wdHIoCi0gICAgICAgIHRyYWNrX2NvbmZpZ3Nfc2l6ZSk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBsb25nIGkgPSAwOyBpIDwgdHJhY2tfY29uZmlnc19zaXplOyBpKyspIHsK
LSAgICAgIGluY3JlYXNlZF90cmFja19jb25maWdzW2ldID0gKCp0cmFja19jb25maWdzW2ldKTsK
LSAgICAgIGluY3JlYXNlZF90cmFja19jb25maWdzX3B0cltpXSA9ICZpbmNyZWFzZWRfdHJhY2tf
Y29uZmlnc1tpXTsKLSAgICAgIGlmICh0cmFja19jb25maWdzW2ldLT50cmFja19pZCAhPSBhdWRp
b190cmFja19pZF8pIHsKLSAgICAgICAgaW5jcmVhc2VkX3RyYWNrX2NvbmZpZ3NbaV0ubWF4X2Jp
dHJhdGVfYnBzID0KLSAgICAgICAgICAgIHRyYWNrX2NvbmZpZ3NbaV0tPm1heF9iaXRyYXRlX2Jw
cyAqCi0gICAgICAgICAgICBrVHJhbnNtaXNzaW9uTWF4Qml0cmF0ZU11bHRpcGxpZXI7Ci0gICAg
ICB9CisgICAgZm9yIChhdXRvJiB0cmFja19jb25maWcgOiB0cmFja19jb25maWdzKSB7CisgICAg
ICBpZiAoJnRyYWNrX2NvbmZpZyAhPSBhdWRpb190cmFja19jb25maWcpCisgICAgICAgIHRyYWNr
X2NvbmZpZy5tYXhfYml0cmF0ZV9icHMgKj0ga1RyYW5zbWlzc2lvbk1heEJpdHJhdGVNdWx0aXBs
aWVyOwogICAgIH0KLSAgICByZXR1cm4gRGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KGluY3JlYXNl
ZF90cmFja19jb25maWdzX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF2YWlsYWJsZV9iaXRyYXRlKTsKKyAgICByZXR1cm4gRGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5
KHRyYWNrX2NvbmZpZ3MsIGF2YWlsYWJsZV9iaXRyYXRlKTsKICAgfQotICBpZiAoYXVkaW9fdHJh
Y2tfY29uZmlnID09IG51bGxwdHIpIHsKKyAgaWYgKCFhdWRpb190cmFja19jb25maWcpIHsKICAg
ICByZXR1cm4gRGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KHRyYWNrX2NvbmZpZ3MsIGF2YWlsYWJs
ZV9iaXRyYXRlKTsKICAgfQotICBhdXRvIHNhZmVfc3VmZmljaWVudF9hdWRpb19iaXRyYXRlID0g
c3RkOjptaW4oCi0gICAgICBzdGQ6Om1heChhdWRpb190cmFja19jb25maWctPm1pbl9iaXRyYXRl
X2Jwcywgc3VmZmljaWVudF9hdWRpb19iaXRyYXRlXyksCisgIGF1dG8gc2FmZV9zdWZmaWNpZW50
X2F1ZGlvX2JpdHJhdGUgPSBydGM6OlNhZmVDbGFtcCgKKyAgICAgIHN1ZmZpY2llbnRfYXVkaW9f
Yml0cmF0ZV8sIGF1ZGlvX3RyYWNrX2NvbmZpZy0+bWluX2JpdHJhdGVfYnBzLAogICAgICAgYXVk
aW9fdHJhY2tfY29uZmlnLT5tYXhfYml0cmF0ZV9icHMpOwogICBpZiAoYXZhaWxhYmxlX2JpdHJh
dGUgPD0gc3VtX21pbl9iaXRyYXRlcykgewogICAgIHJldHVybiBTZXRBbGxCaXRyYXRlc1RvTWlu
aW11bSh0cmFja19jb25maWdzKTsKQEAgLTEzOSw5ICsxNTcsNyBAQCBzdGQ6OnZlY3Rvcjx1aW50
MzJfdD4gQXVkaW9Qcmlvcml0eUJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OkFsbG9jYXRlQml0
cmF0ZXMoCiAgICAgICAvLyBTZXR0aW5nIGF1ZGlvIHRyYWNrIG1pbmltdW0gdG8gc2FmZV9zdWZm
aWNpZW50X2F1ZGlvX2JpdHJhdGUgd2lsbAogICAgICAgLy8gYWxsb3cgdXNpbmcgRGlzdHJpYnV0
ZUJpdHJhdGVzRXZlbmx5IHRvIGFsbG9jYXRlIGF0IGxlYXN0IHN1ZmZpY2llbnQKICAgICAgIC8v
IGJpdHJhdGUgZm9yIGF1ZGlvIGFuZCB0aGUgcmVzdCBldmVubHkuCi0gICAgICBUcmFja0NvbmZp
ZyBzdWZmaWNpZW50X3RyYWNrX2NvbmZpZygqdHJhY2tfY29uZmlnc1thdWRpb19jb25maWdfaW5k
ZXhdKTsKLSAgICAgIHN1ZmZpY2llbnRfdHJhY2tfY29uZmlnLm1pbl9iaXRyYXRlX2JwcyA9IHNh
ZmVfc3VmZmljaWVudF9hdWRpb19iaXRyYXRlOwotICAgICAgdHJhY2tfY29uZmlnc1thdWRpb19j
b25maWdfaW5kZXhdID0gJnN1ZmZpY2llbnRfdHJhY2tfY29uZmlnOworICAgICAgYXVkaW9fdHJh
Y2tfY29uZmlnLT5taW5fYml0cmF0ZV9icHMgPSBzYWZlX3N1ZmZpY2llbnRfYXVkaW9fYml0cmF0
ZTsKICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiB0cmFja19hbGxvY2F0aW9ucyA9CiAgICAg
ICAgICAgRGlzdHJpYnV0ZUJpdHJhdGVzRXZlbmx5KHRyYWNrX2NvbmZpZ3MsIGF2YWlsYWJsZV9i
aXRyYXRlKTsKICAgICAgIHJldHVybiB0cmFja19hbGxvY2F0aW9uczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2JpdHJhdGVh
bGxvY2F0aW9uc3RyYXRlZ3kuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuaAppbmRleCBmNzExZDFm
MThmZmQ4MTRlZWIxNmI4ZDM0OTk5NGY5YWNhMTM0MmMyLi4xM2E0ZWVlNTI0ZTJlOThiMWM3Njdj
OTVkZGZhNzIxNzRiZTBkYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYml0
cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5oCkBAIC0xMSwxMiArMTEsMTMgQEAKICNpZm5kZWYgUlRD
X0JBU0VfQklUUkFURUFMTE9DQVRJT05TVFJBVEVHWV9IXwogI2RlZmluZSBSVENfQkFTRV9CSVRS
QVRFQUxMT0NBVElPTlNUUkFURUdZX0hfCiAKLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2
ZWN0b3I+CisKICNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3Bh
cnNlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRz
LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCkBAIC01NiwxMCArNTcsMTIgQEAgY2xhc3MgQml0cmF0
ZUFsbG9jYXRpb25TdHJhdGVneSB7CiAgICAgc3RkOjpzdHJpbmcgdHJhY2tfaWQ7CiAgIH07CiAK
KyAgLy8gVGhlc2UgYXJlIG9ubHkgdXNlZCBieSBBdWRpb1ByaW9yaXR5Qml0cmF0ZUFsbG9jYXRp
b25TdHJhdGVneS4gVGhleSBhcmUKKyAgLy8gZXhwb3NlZCBoZXJlIHRvIHRoZXkgY2FuIGJlIHVu
aXQgdGVzdGVkLgogICBzdGF0aWMgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IFNldEFsbEJpdHJhdGVz
VG9NaW5pbXVtKAotICAgICAgY29uc3QgQXJyYXlWaWV3PGNvbnN0IFRyYWNrQ29uZmlnKj4gdHJh
Y2tfY29uZmlncyk7CisgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxCaXRyYXRlQWxsb2NhdGlvblN0
cmF0ZWd5OjpUcmFja0NvbmZpZz4mIHRyYWNrX2NvbmZpZ3MpOwogICBzdGF0aWMgc3RkOjp2ZWN0
b3I8dWludDMyX3Q+IERpc3RyaWJ1dGVCaXRyYXRlc0V2ZW5seSgKLSAgICAgIGNvbnN0IEFycmF5
Vmlldzxjb25zdCBUcmFja0NvbmZpZyo+IHRyYWNrX2NvbmZpZ3MsCisgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZz4mIHRyYWNrX2Nv
bmZpZ3MsCiAgICAgICB1aW50MzJfdCBhdmFpbGFibGVfYml0cmF0ZSk7CiAKICAgLy8gU3RyYXRl
Z3kgaXMgZXhwZWN0ZWQgdG8gYWxsb2NhdGUgYWxsIGF2YWlsYWJsZV9iaXRyYXRlIHVwIHRvIHRo
ZSBzdW0gb2YKQEAgLTc0LDExICs3NywyNSBAQCBjbGFzcyBCaXRyYXRlQWxsb2NhdGlvblN0cmF0
ZWd5IHsKICAgLy8gYXZhaWxhYmxlX2JpdHJhdGUgZGVjcmVhc2UuCiAgIHZpcnR1YWwgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+IEFsbG9jYXRlQml0cmF0ZXMoCiAgICAgICB1aW50MzJfdCBhdmFpbGFi
bGVfYml0cmF0ZSwKLSAgICAgIGNvbnN0IEFycmF5Vmlldzxjb25zdCBUcmFja0NvbmZpZyo+IHRy
YWNrX2NvbmZpZ3MpID0gMDsKKyAgICAgIHN0ZDo6dmVjdG9yPEJpdHJhdGVBbGxvY2F0aW9uU3Ry
YXRlZ3k6OlRyYWNrQ29uZmlnPiB0cmFja19jb25maWdzKSA9IDA7CiAKICAgdmlydHVhbCB+Qml0
cmF0ZUFsbG9jYXRpb25TdHJhdGVneSgpID0gZGVmYXVsdDsKIH07Cit9ICAvLyBuYW1lc3BhY2Ug
cnRjCiAKK25hbWVzcGFjZSB3ZWJydGMgeworc3RydWN0IEF1ZGlvUHJpb3JpdHlDb25maWcgewor
ICBGaWVsZFRyaWFsT3B0aW9uYWw8RGF0YVJhdGU+IG1pbl9yYXRlOworICBGaWVsZFRyaWFsT3B0
aW9uYWw8RGF0YVJhdGU+IG1heF9yYXRlOworICBGaWVsZFRyaWFsT3B0aW9uYWw8RGF0YVJhdGU+
IHRhcmdldF9yYXRlOworICBBdWRpb1ByaW9yaXR5Q29uZmlnKCk7CisgIEF1ZGlvUHJpb3JpdHlD
b25maWcoY29uc3QgQXVkaW9Qcmlvcml0eUNvbmZpZyYpOworICBBdWRpb1ByaW9yaXR5Q29uZmln
JiBvcGVyYXRvcj0oY29uc3QgQXVkaW9Qcmlvcml0eUNvbmZpZyYpID0gZGVmYXVsdDsKKyAgfkF1
ZGlvUHJpb3JpdHlDb25maWcoKTsKK307Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKK25hbWVz
cGFjZSBydGMgewogLy8gU2ltcGxlIGFsbG9jYXRpb24gc3RyYXRlZ3kgZ2l2aW5nIHByaW9yaXR5
IHRvIGF1ZGlvIHVudGlsCiAvLyBzdWZmaWNpZW50X2F1ZGlvX2JpdHJhdGUgaXMgcmVhY2hlZC4g
Qml0cmF0ZSBpcyBkaXN0cmlidXRlZCBldmVubHkgYmV0d2VlbgogLy8gdGhlIHRyYWNrcyBhZnRl
ciBzdWZmaWNpZW50X2F1ZGlvX2JpdHJhdGUgaXMgcmVhY2hlZC4gVGhpcyBpbXBsZW1lbnRhdGlv
bgpAQCAtOTAsOSArMTA3LDExIEBAIGNsYXNzIEF1ZGlvUHJpb3JpdHlCaXRyYXRlQWxsb2NhdGlv
blN0cmF0ZWd5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IHN1ZmZpY2llbnRfYXVkaW9fYml0cmF0ZSk7CiAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBB
bGxvY2F0ZUJpdHJhdGVzKAogICAgICAgdWludDMyX3QgYXZhaWxhYmxlX2JpdHJhdGUsCi0gICAg
ICBjb25zdCBBcnJheVZpZXc8Y29uc3QgVHJhY2tDb25maWcqPiB0cmFja19jb25maWdzKSBvdmVy
cmlkZTsKKyAgICAgIHN0ZDo6dmVjdG9yPEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRyYWNr
Q29uZmlnPiB0cmFja19jb25maWdzKQorICAgICAgb3ZlcnJpZGU7CiAKICBwcml2YXRlOgorICB3
ZWJydGM6OkF1ZGlvUHJpb3JpdHlDb25maWcgY29uZmlnXzsKICAgc3RkOjpzdHJpbmcgYXVkaW9f
dHJhY2tfaWRfOwogICB1aW50MzJfdCBzdWZmaWNpZW50X2F1ZGlvX2JpdHJhdGVfOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3lfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0
cmF0ZWd5X3VuaXR0ZXN0LmNjCmluZGV4IGJmYzQxZjU2ZTgwMTAyYWZkODc1MDk2ODk1ZDBhMDZk
M2NkMmJjMzkuLmY0YzdlZTcwNDNiNDY0NmE2OWYzMWI4NDZjMTJkNjczZWQ3ODRmNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2JpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3lfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25z
dHJhdGVneV91bml0dGVzdC5jYwpAQCAtNDMsMTEgKzQzLDggQEAgVEVTVChCaXRyYXRlQWxsb2Nh
dGlvblN0cmF0ZWd5VGVzdCwgU2V0QWxsQml0cmF0ZXNUb01pbmltdW0pIHsKICAgICAgIEJpdHJh
dGVBbGxvY2F0aW9uU3RyYXRlZ3k6OlRyYWNrQ29uZmlnKG1pbl9vdGhlcl9iaXRyYXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X290aGVyX2JpdHJh
dGUsIGZhbHNlLCAiIil9OwogCi0gIHN0ZDo6dmVjdG9yPGNvbnN0IHJ0Yzo6Qml0cmF0ZUFsbG9j
YXRpb25TdHJhdGVneTo6VHJhY2tDb25maWcqPgotICAgICAgdHJhY2tfY29uZmlnX3B0cnMgPSBN
YWtlVHJhY2tDb25maWdQdHJzVmVjdG9yKHRyYWNrX2NvbmZpZ3MpOwotCiAgIHN0ZDo6dmVjdG9y
PHVpbnQzMl90PiBhbGxvY2F0aW9ucyA9Ci0gICAgICBCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5
OjpTZXRBbGxCaXRyYXRlc1RvTWluaW11bSh0cmFja19jb25maWdfcHRycyk7CisgICAgICBCaXRy
YXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpTZXRBbGxCaXRyYXRlc1RvTWluaW11bSh0cmFja19jb25m
aWdzKTsKICAgRVhQRUNUX0VRKG1pbl9hdWRpb19iaXRyYXRlLCBhbGxvY2F0aW9uc1swXSk7CiAg
IEVYUEVDVF9FUShtaW5fdmlkZW9fYml0cmF0ZSwgYWxsb2NhdGlvbnNbMV0pOwogICBFWFBFQ1Rf
RVEobWluX290aGVyX2JpdHJhdGUsIGFsbG9jYXRpb25zWzJdKTsKQEAgLTc2LDExICs3Myw4IEBA
IFRFU1QoQml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneVRlc3QsIERpc3RyaWJ1dGVCaXRyYXRlc0V2
ZW5seSkgewogICAgICAgQml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneTo6VHJhY2tDb25maWcobWlu
X290aGVyX2JpdHJhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXhfb3RoZXJfYml0cmF0ZSwgZmFsc2UsICIiKX07CiAKLSAgc3RkOjp2ZWN0b3I8Y29u
c3QgcnRjOjpCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZyo+Ci0gICAgICB0
cmFja19jb25maWdfcHRycyA9IE1ha2VUcmFja0NvbmZpZ1B0cnNWZWN0b3IodHJhY2tfY29uZmln
cyk7Ci0KICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IGFsbG9jYXRpb25zID0KLSAgICAgIEJpdHJh
dGVBbGxvY2F0aW9uU3RyYXRlZ3k6OkRpc3RyaWJ1dGVCaXRyYXRlc0V2ZW5seSh0cmFja19jb25m
aWdfcHRycywKKyAgICAgIEJpdHJhdGVBbGxvY2F0aW9uU3RyYXRlZ3k6OkRpc3RyaWJ1dGVCaXRy
YXRlc0V2ZW5seSh0cmFja19jb25maWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZV9iaXRyYXRlKTsKICAgRVhQRUNU
X0VRKG1pbl9hdWRpb19iaXRyYXRlICsgZXZlbl9iaXRyYXRlX2luY3JlYXNlLCBhbGxvY2F0aW9u
c1swXSk7CiAgIEVYUEVDVF9FUShtaW5fdmlkZW9fYml0cmF0ZSArIGV2ZW5fYml0cmF0ZV9pbmNy
ZWFzZSwgYWxsb2NhdGlvbnNbMV0pOwpAQCAtMTA4LDExICsxMDIsNyBAQCBzdGQ6OnZlY3Rvcjx1
aW50MzJfdD4gUnVuQXVkaW9Qcmlvcml0eUFsbG9jYXRpb24oCiAgICAgICBCaXRyYXRlQWxsb2Nh
dGlvblN0cmF0ZWd5OjpUcmFja0NvbmZpZyhtaW5fb3RoZXJfYml0cmF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9vdGhlcl9iaXRyYXRlLCBmYWxz
ZSwgIiIpfTsKIAotICBzdGQ6OnZlY3Rvcjxjb25zdCBydGM6OkJpdHJhdGVBbGxvY2F0aW9uU3Ry
YXRlZ3k6OlRyYWNrQ29uZmlnKj4KLSAgICAgIHRyYWNrX2NvbmZpZ19wdHJzID0gTWFrZVRyYWNr
Q29uZmlnUHRyc1ZlY3Rvcih0cmFja19jb25maWdzKTsKLQotICByZXR1cm4gYWxsb2NhdGlvbl9z
dHJhdGVneS5BbGxvY2F0ZUJpdHJhdGVzKGF2YWlsYWJsZV9iaXRyYXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrX2NvbmZpZ19wdHJzKTsKKyAg
cmV0dXJuIGFsbG9jYXRpb25fc3RyYXRlZ3kuQWxsb2NhdGVCaXRyYXRlcyhhdmFpbGFibGVfYml0
cmF0ZSwgdHJhY2tfY29uZmlncyk7CiB9CiAKIC8vIFRlc3QgdGhhdCB3aGVuIHRoZSBhdmFpbGFi
bGUgYml0cmF0ZSBpcyBsZXNzIHRoYW4gdGhlIHN1bSBvZiB0aGUgbWluaW11bQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnVm
ZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9idWZmZXIuaAppbmRleCAyMmY4OTM3MmRlYmMxNmQ1NWQ2YzhjNGMzN2Y4ZjBkZGEzNTY5MTE0
Li5mOTI5MWI5OWU1YTEwMzI0NGM3ZDZjNDZjYmE4MjY0MWU5NmViMTc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9idWZmZXIuaApAQCAtMTQ5LDExICsxNDksMTMgQEAgY2xhc3MgQnVmZmVyVCB7CiAgIH0KIAog
ICBCdWZmZXJUJiBvcGVyYXRvcj0oQnVmZmVyVCYmIGJ1ZikgewotICAgIFJUQ19EQ0hFQ0soSXND
b25zaXN0ZW50KCkpOwogICAgIFJUQ19EQ0hFQ0soYnVmLklzQ29uc2lzdGVudCgpKTsKKyAgICBN
YXliZVplcm9Db21wbGV0ZUJ1ZmZlcigpOwogICAgIHNpemVfID0gYnVmLnNpemVfOwogICAgIGNh
cGFjaXR5XyA9IGJ1Zi5jYXBhY2l0eV87Ci0gICAgZGF0YV8gPSBzdGQ6Om1vdmUoYnVmLmRhdGFf
KTsKKyAgICB1c2luZyBzdGQ6OnN3YXA7CisgICAgc3dhcChkYXRhXywgYnVmLmRhdGFfKTsKKyAg
ICBidWYuZGF0YV8ucmVzZXQoKTsKICAgICBidWYuT25Nb3ZlZEZyb20oKTsKICAgICByZXR1cm4g
KnRoaXM7CiAgIH0KQEAgLTM3NCwxMCArMzc2LDEwIEBAIGNsYXNzIEJ1ZmZlclQgewogCiAgIC8v
IFplcm8gdGhlIGNvbXBsZXRlIGJ1ZmZlciBpZiB0ZW1wbGF0ZSBhcmd1bWVudCAiWmVyb09uRnJl
ZSIgaXMgdHJ1ZS4KICAgdm9pZCBNYXliZVplcm9Db21wbGV0ZUJ1ZmZlcigpIHsKLSAgICBpZiAo
WmVyb09uRnJlZSAmJiBjYXBhY2l0eV8pIHsKKyAgICBpZiAoWmVyb09uRnJlZSAmJiBjYXBhY2l0
eV8gPiAwKSB7CiAgICAgICAvLyBJdCB3b3VsZCBiZSBzdWZmaWNpZW50IHRvIG9ubHkgemVybyAi
c2l6ZV8iIGVsZW1lbnRzLCBhcyBhbGwgb3RoZXIKICAgICAgIC8vIG1ldGhvZHMgYWxyZWFkeSBl
bnN1cmUgdGhhdCB0aGUgdW51c2VkIGNhcGFjaXR5IGNvbnRhaW5zIG5vIHNlbnNpdGl2ZQotICAg
ICAgLy8gZGF0YSAtIGJ1dCBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgorICAgICAgLy8gZGF0YS0t
LWJ1dCBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgogICAgICAgRXhwbGljaXRaZXJvTWVtb3J5KGRh
dGFfLmdldCgpLCBjYXBhY2l0eV8gKiBzaXplb2YoVCkpOwogICAgIH0KICAgfQpAQCAtMzg5LDcg
KzM5MSw3IEBAIGNsYXNzIEJ1ZmZlclQgewogICAgIEV4cGxpY2l0WmVyb01lbW9yeShkYXRhXy5n
ZXQoKSArIHNpemVfLCBjb3VudCAqIHNpemVvZihUKSk7CiAgIH0KIAotICAvLyBQcmVjb25kaXRp
b24gZm9yIGFsbCBtZXRob2RzIGV4Y2VwdCBDbGVhciBhbmQgdGhlIGRlc3RydWN0b3IuCisgIC8v
IFByZWNvbmRpdGlvbiBmb3IgYWxsIG1ldGhvZHMgZXhjZXB0IENsZWFyLCBvcGVyYXRvcj0gYW5k
IHRoZSBkZXN0cnVjdG9yLgogICAvLyBQb3N0Y29uZGl0aW9uIGZvciBhbGwgbWV0aG9kcyBleGNl
cHQgbW92ZSBjb25zdHJ1Y3Rpb24gYW5kIG1vdmUKICAgLy8gYXNzaWdubWVudCwgd2hpY2ggbGVh
dmUgdGhlIG1vdmVkLWZyb20gb2JqZWN0IGluIGEgcG9zc2libHkgaW5jb25zaXN0ZW50CiAgIC8v
IHN0YXRlLgpAQCAtNDAwLDE1ICs0MDIsMTYgQEAgY2xhc3MgQnVmZmVyVCB7CiAgIC8vIENhbGxl
ZCB3aGVuICp0aGlzIGhhcyBiZWVuIG1vdmVkIGZyb20uIENvbmNlcHR1YWxseSBpdCdzIGEgbm8t
b3AsIGJ1dCB3ZQogICAvLyBjYW4gbXV0YXRlIHRoZSBzdGF0ZSBzbGlnaHRseSB0byBoZWxwIHN1
YnNlcXVlbnQgc2FuaXR5IGNoZWNrcyBjYXRjaCBidWdzLgogICB2b2lkIE9uTW92ZWRGcm9tKCkg
eworICAgIFJUQ19EQ0hFQ0soIWRhdGFfKTsgIC8vIE91ciBoZWFwIGJsb2NrIHNob3VsZCBoYXZl
IGJlZW4gc3RvbGVuLgogI2lmIFJUQ19EQ0hFQ0tfSVNfT04KKyAgICAvLyBFbnN1cmUgdGhhdCAq
dGhpcyBpcyBhbHdheXMgaW5jb25zaXN0ZW50LCB0byBwcm92b2tlIGJ1Z3MuCisgICAgc2l6ZV8g
PSAxOworICAgIGNhcGFjaXR5XyA9IDA7CisjZWxzZQogICAgIC8vIE1ha2UgKnRoaXMgY29uc2lz
dGVudCBhbmQgZW1wdHkuIFNob3VsZG4ndCBiZSBuZWNlc3NhcnksIGJ1dCBiZXR0ZXIgc2FmZQog
ICAgIC8vIHRoYW4gc29ycnkuCiAgICAgc2l6ZV8gPSAwOwogICAgIGNhcGFjaXR5XyA9IDA7Ci0j
ZWxzZQotICAgIC8vIEVuc3VyZSB0aGF0ICp0aGlzIGlzIGFsd2F5cyBpbmNvbnNpc3RlbnQsIHRv
IHByb3Zva2UgYnVncy4KLSAgICBzaXplXyA9IDE7Ci0gICAgY2FwYWNpdHlfID0gMDsKICNlbmRp
ZgogICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2J1ZmZlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlcl91bml0dGVzdC5jYwppbmRleCBh
ZTk3NmYxMzk0MzIyZjExYjFhOTQ5NjQ2NmQ3Mzg1ZTJiYWM5NGFhLi5iMmY0N2MxNmVjYmUzZjNk
ZjhkMWZjNjgzZjZkYTgwY2EzZjhkMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnVmZmVy
X3VuaXR0ZXN0LmNjCkBAIC0xODUsNiArMTg1LDE3IEBAIFRFU1QoQnVmZmVyVGVzdCwgVGVzdE1v
dmVBc3NpZ24pIHsKICAgRVhQRUNUX1RSVUUoYnVmMS5lbXB0eSgpKTsKIH0KIAorVEVTVChCdWZm
ZXJUZXN0LCBUZXN0TW92ZUFzc2lnblNlbGYpIHsKKyAgLy8gTW92ZSBzZWxmLWFzc2lnbm1lbnQg
aXNuJ3QgcmVxdWlyZWQgdG8gcHJvZHVjZSBhIG1lYW5pbmdmdWwgc3RhdGUsIGJ1dAorICAvLyBz
aG91bGQgbm90IGxlYXZlIHRoZSBvYmplY3QgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLiAoU3Vj
aCBpbmNvbnNpc3RlbnQKKyAgLy8gc3RhdGUgY291bGQgYmUgY2F1Z2h0IGJ5IHRoZSBEQ0hFQ0tz
IGFuZC9vciBieSB0aGUgbGVhayBjaGVja2VyLikgV2UgbmVlZAorICAvLyB0byBiZSBzbmVha3kg
d2hlbiB0ZXN0aW5nIHRoaXM7IGlmIHdlJ3JlIGRvaW5nIGEgdG9vLW9idmlvdXMKKyAgLy8gbW92
ZS1hc3NpZ24tdG8tc2VsZiwgY2xhbmcncyAtV3NlbGYtbW92ZSB0cmlnZ2VycyBhdCBjb21waWxl
IHRpbWUuCisgIEJ1ZmZlciBidWYoa1Rlc3REYXRhLCAzLCA0MCk7CisgIEJ1ZmZlciogYnVmX3B0
ciA9ICZidWY7CisgIGJ1ZiA9IHN0ZDo6bW92ZSgqYnVmX3B0cik7Cit9CisKIFRFU1QoQnVmZmVy
VGVzdCwgVGVzdFN3YXApIHsKICAgQnVmZmVyIGJ1ZjEoa1Rlc3REYXRhLCAzKTsKICAgQnVmZmVy
IGJ1ZjIoa1Rlc3REYXRhLCA2LCA0MCk7CkBAIC00MzQsNiArNDQ1LDE5IEBAIFRFU1QoQnVmZmVy
VGVzdCwgVGVzdFN0cnVjdCkgewogICBFWFBFQ1RfRVEoa09ic2lkaWFuLCBidWZbMl0uc3RvbmUp
OwogfQogCitURVNUKEJ1ZmZlclRlc3QsIERpZU9uVXNlQWZ0ZXJNb3ZlKSB7CisgIEJ1ZmZlciBi
dWYoMTcpOworICBCdWZmZXIgYnVmMiA9IHN0ZDo6bW92ZShidWYpOworICBFWFBFQ1RfRVEoYnVm
Mi5zaXplKCksIDE3dSk7CisjaWYgUlRDX0RDSEVDS19JU19PTgorI2lmIEdURVNUX0hBU19ERUFU
SF9URVNUICYmICFkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQorICBFWFBFQ1RfREVBVEgoYnVmLmVt
cHR5KCksICIiKTsKKyNlbmRpZgorI2Vsc2UKKyAgRVhQRUNUX1RSVUUoYnVmLmVtcHR5KCkpOwor
I2VuZGlmCit9CisKIFRFU1QoWmVyb09uRnJlZUJ1ZmZlclRlc3QsIFRlc3RaZXJvT25TZXREYXRh
KSB7CiAgIFplcm9PbkZyZWVCdWZmZXI8dWludDhfdD4gYnVmKGtUZXN0RGF0YSwgNyk7CiAgIGNv
bnN0IHVpbnQ4X3QqIG9sZF9kYXRhID0gYnVmLmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J1ZmZlcnF1ZXVlLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnVm
ZmVycXVldWUuY2MKaW5kZXggNDhmZjJlNmQzMTdkNzgyMDhhNmIzMzBlZmIzOThhZGQ2NGUzZGY3
Yy4uNzRmN2E1MDJjMGI5MTBlNjFmNWFhYThiYzEwOWU2MzM0YjhhOTE4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnVmZmVy
cXVldWUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvYnVmZmVycXVldWUuY2MKQEAgLTEwLDYgKzEwLDggQEAKIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2J1ZmZlcnF1ZXVlLmgiCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxz
dHJpbmcuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIG5hbWVzcGFjZSBydGMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
YnVmZmVycXVldWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2J1ZmZlcnF1ZXVlLmgKaW5kZXggOTRhYjBjYTRjOWViMGNmM2JiM2Y5NjRmN2U2
Y2M2OGEzOWUxZDVkNy4uNjNmNTE4MjUwOWY2MjIwNGJlMDExMTU3OThiOTBmMWUwYThlMjU2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvYnVmZmVycXVldWUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9idWZmZXJxdWV1ZS5oCkBAIC0xMSwxMiArMTEsMTQgQEAKICNp
Zm5kZWYgUlRDX0JBU0VfQlVGRkVSUVVFVUVfSF8KICNkZWZpbmUgUlRDX0JBU0VfQlVGRkVSUVVF
VUVfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rp
b24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNw
YWNlIHJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2J5dGVidWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ieXRlYnVmZmVyLmNjCmluZGV4IDk0ZmM2YWNm
MDgwMjc0MTJhMjVlZDczNjczMjBmNzZlMjFkZGFkMTAuLmY4Y2UxYTI5ZWZlMTY2ODdhYzY1NGZl
OWFmY2IyNWVkZmFhMzA4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J5dGVidWZmZXIuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnl0ZWJ1ZmZlci5jYwpAQCAt
MTIsOCArMTIsNiBAQAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNsdWRlIDxhbGdvcml0
aG0+Ci0KIG5hbWVzcGFjZSBydGMgewogCiBCeXRlQnVmZmVyV3JpdGVyOjpCeXRlQnVmZmVyV3Jp
dGVyKCkgOiBCeXRlQnVmZmVyV3JpdGVyVCgpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ieXRlYnVmZmVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ieXRlYnVmZmVy
LmgKaW5kZXggOWUwOGYwMjVhODQyMzdlOTQ0YTFmZjNlNTM4YmFmODk3MmRjZTI5My4uNGQyNWMy
MTA1MDdkNzMxMDU5ZjgzYmQ1M2FiZDk3MzdiZTRkMGY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvYnl0ZWJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2J5
dGVidWZmZXIuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBSVENfQkFTRV9CWVRFQlVGRkVS
X0hfCiAjZGVmaW5lIFJUQ19CQVNFX0JZVEVCVUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5o
PgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2J1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2FuY2VsYWJsZV9wZXJpb2RpY190YXNrX3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
Y2FuY2VsYWJsZV9wZXJpb2RpY190YXNrX3VuaXR0ZXN0LmNjCmluZGV4IGZlMjdlYTdkNDhiNjU2
ZWM1ZTk4YjllZmFmNTZlZmMyNjY4Yjk5NDcuLmJhZGQ2MjM0MTVhZDU1MzE5ZjcyZGRmZmZmYmYx
YjNiYzJlNGI3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2NhbmNlbGFibGVfcGVyaW9kaWNfdGFza191bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9j
YW5jZWxhYmxlX3BlcmlvZGljX3Rhc2tfdW5pdHRlc3QuY2MKQEAgLTY4LDcgKzY4LDcgQEAgVEVT
VChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgQ2FuQ2FsbENhbmNlbE9uRW1wdHlIYW5kbGUp
IHsKIH0KIAogVEVTVChDYW5jZWxhYmxlUGVyaW9kaWNUYXNrVGVzdCwgQ2FuY2VsVGFza0JlZm9y
ZUl0UnVucykgewotICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVu
dCBkb25lOwogICBNb2NrQ2xvc3VyZSBtb2NrOwogICBFWFBFQ1RfQ0FMTChtb2NrLCBDYWxsKS5U
aW1lcygwKTsKICAgRVhQRUNUX0NBTEwobW9jaywgRGVsZXRlKS5XaWxsT25jZShJbnZva2UoWyZk
b25lXSB7IGRvbmUuU2V0KCk7IH0pKTsKQEAgLTg0LDcgKzg0LDcgQEAgVEVTVChDYW5jZWxhYmxl
UGVyaW9kaWNUYXNrVGVzdCwgQ2FuY2VsVGFza0JlZm9yZUl0UnVucykgewogfQogCiBURVNUKENh
bmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBDYW5jZWxEZWxheWVkVGFza0JlZm9yZUl0UnVucykg
ewotICBydGM6OkV2ZW50IGRvbmUoZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwog
ICBNb2NrQ2xvc3VyZSBtb2NrOwogICBFWFBFQ1RfQ0FMTChtb2NrLCBDYWxsKS5UaW1lcygwKTsK
ICAgRVhQRUNUX0NBTEwobW9jaywgRGVsZXRlKS5XaWxsT25jZShJbnZva2UoWyZkb25lXSB7IGRv
bmUuU2V0KCk7IH0pKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBURVNUKENhbmNlbGFibGVQZXJpb2Rp
Y1Rhc2tUZXN0LCBDYW5jZWxEZWxheWVkVGFza0JlZm9yZUl0UnVucykgewogfQogCiBURVNUKENh
bmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBDYW5jZWxUYXNrQWZ0ZXJJdFJ1bnMpIHsKLSAgcnRj
OjpFdmVudCBkb25lKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgTW9ja0Ns
b3N1cmUgbW9jazsKICAgRVhQRUNUX0NBTEwobW9jaywgQ2FsbCkuV2lsbE9uY2UoUmV0dXJuKDEw
MCkpOwogICBFWFBFQ1RfQ0FMTChtb2NrLCBEZWxldGUpLldpbGxPbmNlKEludm9rZShbJmRvbmVd
IHsgZG9uZS5TZXQoKTsgfSkpOwpAQCAtMTE3LDcgKzExNyw3IEBAIFRFU1QoQ2FuY2VsYWJsZVBl
cmlvZGljVGFza1Rlc3QsIENhbmNlbFRhc2tBZnRlckl0UnVucykgewogCiBURVNUKENhbmNlbGFi
bGVQZXJpb2RpY1Rhc2tUZXN0LCBaZXJvUmV0dXJuVmFsdWVSZXBvc3RzVGhlVGFzaykgewogICBO
aWNlTW9jazxNb2NrQ2xvc3VyZT4gY2xvc3VyZTsKLSAgcnRjOjpFdmVudCBkb25lKGZhbHNlLCBm
YWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgRVhQRUNUX0NBTEwoY2xvc3VyZSwgQ2FsbCgp
KS5XaWxsT25jZShSZXR1cm4oMCkpLldpbGxPbmNlKEludm9rZShbJmRvbmVdIHsKICAgICBkb25l
LlNldCgpOwogICAgIHJldHVybiBrVGltZW91dE1zOwpAQCAtMTMwLDcgKzEzMCw3IEBAIFRFU1Qo
Q2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIFplcm9SZXR1cm5WYWx1ZVJlcG9zdHNUaGVUYXNr
KSB7CiAKIFRFU1QoQ2FuY2VsYWJsZVBlcmlvZGljVGFza1Rlc3QsIFN0YXJ0UGVyaW9kaWNUYXNr
KSB7CiAgIE1vY2tGdW5jdGlvbjxpbnQoKT4gY2xvc3VyZTsKLSAgcnRjOjpFdmVudCBkb25lKGZh
bHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgRVhQRUNUX0NBTEwoY2xvc3VyZSwg
Q2FsbCgpKQogICAgICAgLldpbGxPbmNlKFJldHVybigyMCkpCiAgICAgICAuV2lsbE9uY2UoUmV0
dXJuKDIwKSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBURVNUKENhbmNlbGFibGVQZXJpb2RpY1Rhc2tU
ZXN0LCBTdGFydFBlcmlvZGljVGFzaykgewogCiAvLyBWYWxpZGF0ZXMgcGVyZmVjdCBmb3J3YXJk
aW5nIGRvZXNuJ3Qga2VlcCByZWZlcmVuY2UgdG8gZGVsZXRlZCBjb3B5LgogVEVTVChDYW5jZWxh
YmxlUGVyaW9kaWNUYXNrVGVzdCwgQ3JlYXRlV2l0aENvcHlPZkFDbG9zdXJlKSB7Ci0gIHJ0Yzo6
RXZlbnQgZG9uZShmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAgIE1vY2tDbG9z
dXJlIG1vY2s7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIENhbGwpLldpbGxPbmNlKEludm9rZShbJmRv
bmVdIHsKICAgICBkb25lLlNldCgpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIFRFU1QoQ2FuY2VsYWJs
ZVBlcmlvZGljVGFza1Rlc3QsIENyZWF0ZVdpdGhDb3B5T2ZBQ2xvc3VyZSkgewogfQogCiBURVNU
KENhbmNlbGFibGVQZXJpb2RpY1Rhc2tUZXN0LCBEZWxldGluZ0hhbmRsZURvZXNudFN0b3BUaGVU
YXNrKSB7Ci0gIHJ0Yzo6RXZlbnQgcnVuKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgcnVu
OwogICBydGM6OlRhc2tRdWV1ZSB0YXNrX3F1ZXVlKCJxdWV1ZSIpOwogICBhdXRvIHRhc2sgPSBy
dGM6OkNyZWF0ZUNhbmNlbGFibGVQZXJpb2RpY1Rhc2soKFsmXSB7CiAgICAgcnVuLlNldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvY29weW9ud3JpdGVidWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5jYwppbmRleCA2YzQ4ZDUy
ZjE3MTcyZWU4YzRjZmFlZmFkM2U5MDUxY2NiNDIwOTMzLi44ZjUxMjZhMjgyNjhjZjE5OGFjYjRj
ZGE5ZmY0YWM3NDk4MWU3N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jb3B5b253cml0
ZWJ1ZmZlci5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29weW9u
d3JpdGVidWZmZXIuaCIKIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCiBuYW1lc3BhY2UgcnRjIHsK
IAogQ29weU9uV3JpdGVCdWZmZXI6OkNvcHlPbldyaXRlQnVmZmVyKCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY29weW9u
d3JpdGVidWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2NvcHlvbndyaXRlYnVmZmVyLmgKaW5kZXggMDUxNGUyZmU2NjExYTI1OTY2ZmQ2
MzNlOGY2OTJmNDYyM2EyZjVjZi4uY2MxNzRkZmM3Yzk2OWU3Mjg5OTVkZTNkMzRkYWE0YWM4ZDI4
MzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvY29weW9ud3JpdGVidWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oCkBAIC0x
MSwxMiArMTEsMTUgQEAKICNpZm5kZWYgUlRDX0JBU0VfQ09QWU9OV1JJVEVCVUZGRVJfSF8KICNk
ZWZpbmUgUlRDX0JBU0VfQ09QWU9OV1JJVEVCVUZGRVJfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPHN0
cmluZz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5j
bHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0j
aW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3Vu
dGVkb2JqZWN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvY3B1X3RpbWUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9jcHVfdGltZS5jYwppbmRleCBkZTRhNmJkNjg0NGIxZWI0MzIyYjQxN2QxNzVm
YTBmMTY2YzhlZTIzLi5hZDkxZWNhY2U5NzMxOTVjNDk1YmIyMjc5MTQyNTkyOWQzMzM2MmVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9jcHVfdGltZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9jcHVfdGltZS5jYwpAQCAtNjUsNiArNjUsOSBAQCBpbnQ2NF90IEdl
dFByb2Nlc3NDcHVUaW1lTmFub3MoKSB7CiAgIH0gZWxzZSB7CiAgICAgUlRDX0xPR19FUlIoTFNf
RVJST1IpIDw8ICJHZXRQcm9jZXNzVGltZXMoKSBmYWlsZWQuIjsKICAgfQorI2VsaWYgZGVmaW5l
ZChXRUJSVENfRlVDSFNJQSkKKyAgUlRDX0xPR19FUlIoTFNfRVJST1IpIDw8ICJHZXRQcm9jZXNz
Q3B1VGltZU5hbm9zKCkgbm90IGltcGxlbWVudGVkIjsKKyAgcmV0dXJuIDA7CiAjZWxzZQogICAv
LyBOb3QgaW1wbGVtZW50ZWQgeWV0LgogICBzdGF0aWNfYXNzZXJ0KApAQCAtMTA3LDEwICsxMTAs
MTMgQEAgaW50NjRfdCBHZXRUaHJlYWRDcHVUaW1lTmFub3MoKSB7CiAgIH0gZWxzZSB7CiAgICAg
UlRDX0xPR19FUlIoTFNfRVJST1IpIDw8ICJHZXRUaHJlYWRUaW1lcygpIGZhaWxlZC4iOwogICB9
CisjZWxpZiBkZWZpbmVkKFdFQlJUQ19GVUNIU0lBKQorICBSVENfTE9HX0VSUihMU19FUlJPUikg
PDwgIkdldFRocmVhZENwdVRpbWVOYW5vcygpIG5vdCBpbXBsZW1lbnRlZCI7CisgIHJldHVybiAw
OwogI2Vsc2UKICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KICAgc3RhdGljX2Fzc2VydCgKLSAg
ICAgIGZhbHNlLCAiR2V0UHJvY2Vzc0NwdVRpbWVOYW5vcygpIHBsYXRmb3JtIHN1cHBvcnQgbm90
IHlldCBpbXBsZW1lbnRlZC4iKTsKKyAgICAgIGZhbHNlLCAiR2V0VGhyZWFkQ3B1VGltZU5hbm9z
KCkgcGxhdGZvcm0gc3VwcG9ydCBub3QgeWV0IGltcGxlbWVudGVkLiIpOwogI2VuZGlmCiAgIHJl
dHVybiAtMTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5jYwppbmRl
eCBkOGE1YjQ4YzA1MTM5MDI1ODdiYTIxOTU0ZjYwODQ3YzUxNmEzOTVhLi40ZTAwYmU5NjhkZTkw
MmFkMmFkZmE3ZWU0MTAyMGRmZWJmMjE5YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY3Jp
dGljYWxzZWN0aW9uLmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9j
cml0aWNhbHNlY3Rpb24uaCIKIAorI2luY2x1ZGUgPHRpbWUuaD4KKwogI2luY2x1ZGUgInJ0Y19i
YXNlL2F0b21pY29wcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZF90eXBlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9u
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uX3VuaXR0ZXN0LmNjCmluZGV4IGRiNGY5ZTc0NTJmNTdj
NjYwYzdkOTUzMjQxYjM4YzlkMjBmMDk4MDQuLjYwMTZmODVmODk4ZTVlNDhlYTY1MDVkZGE1OWNl
OGE2NTg3YmYyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbl91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jcml0aWNhbHNl
Y3Rpb25fdW5pdHRlc3QuY2MKQEAgLTM4OSw3ICszODksNyBAQCBjbGFzcyBQZXJmVGVzdFRocmVh
ZCB7CiAvLyBUaGUgdGVzdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IHRvIGF2b2lkIHVuZWNlc3Nh
cmlseSBsb2FkaW5nIHRoZSBib3RzLgogVEVTVChDcml0aWNhbFNlY3Rpb25UZXN0LCBESVNBQkxF
RF9QZXJmb3JtYW5jZSkgewogICBQZXJmVGVzdFRocmVhZCB0aHJlYWRzWzhdOwotICBFdmVudCBl
dmVudChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudDsKIAogICBzdGF0aWMgY29uc3QgaW50
IGtUaHJlYWRSZXBlYXRzID0gMTAwMDAwMDA7CiAgIHN0YXRpYyBjb25zdCBpbnQga0V4cGVjdGVk
Q291bnQgPSBrVGhyZWFkUmVwZWF0cyAqIGFycmF5c2l6ZSh0aHJlYWRzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
ZXZlbnQuY2MKaW5kZXggNmM5NjM5YjRmZWNjMTExYTgwN2VlYWExOGFlZjAzYmE3MTgxNmJhYS4u
NDJjMjJhMjljY2IwOTY4YTgzN2RlZWU5ZGI2YmRkZWMxZTRlMGFiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnQuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
ZXZlbnQuY2MKQEAgLTI0LDYgKzI0LDggQEAKIAogbmFtZXNwYWNlIHJ0YyB7CiAKK0V2ZW50OjpF
dmVudCgpIDogRXZlbnQoZmFsc2UsIGZhbHNlKSB7fQorCiAjaWYgZGVmaW5lZChXRUJSVENfV0lO
KQogCiBFdmVudDo6RXZlbnQoYm9vbCBtYW51YWxfcmVzZXQsIGJvb2wgaW5pdGlhbGx5X3NpZ25h
bGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9ldmVudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnQuaAppbmRleCA3ZTYxYzRjOGE2ODc4ZmRlYTEzZWI3MDBh
MzljMDI1Y2RmMWNhYTViLi4yZTExMDAyMDY2ZGE5MWZjNTkxODRhYTkwZjE1NmUxZjUyNWRhZjFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9ldmVudC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2V2ZW50LmgKQEAgLTExLDcgKzExLDYgQEAKICNpZm5kZWYgUlRDX0JB
U0VfRVZFTlRfSF8KICNkZWZpbmUgUlRDX0JBU0VfRVZFTlRfSF8KIAotI2luY2x1ZGUgInJ0Y19i
YXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCiAjaW5jbHVk
ZSA8d2luZG93cy5oPgogI2VsaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCkBAIC0yNiw3ICsyNSwx
MCBAQCBjbGFzcyBFdmVudCB7CiAgcHVibGljOgogICBzdGF0aWMgY29uc3QgaW50IGtGb3JldmVy
ID0gLTE7CiAKKyAgRXZlbnQoKTsKICAgRXZlbnQoYm9vbCBtYW51YWxfcmVzZXQsIGJvb2wgaW5p
dGlhbGx5X3NpZ25hbGVkKTsKKyAgRXZlbnQoY29uc3QgRXZlbnQmKSA9IGRlbGV0ZTsKKyAgRXZl
bnQmIG9wZXJhdG9yPShjb25zdCBFdmVudCYpID0gZGVsZXRlOwogICB+RXZlbnQoKTsKIAogICB2
b2lkIFNldCgpOwpAQCAtNDUsOCArNDcsNiBAQCBjbGFzcyBFdmVudCB7CiAgIGNvbnN0IGJvb2wg
aXNfbWFudWFsX3Jlc2V0XzsKICAgYm9vbCBldmVudF9zdGF0dXNfOwogI2VuZGlmCi0KLSAgUlRD
X0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhFdmVudCk7CiB9OwogCiAvLyBUaGlzIGNs
YXNzIGlzIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggQ2hyb21pdW0uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9l
dmVudF90cmFjZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9ldmVudF90cmFjZXIuY2MKaW5kZXggMzFmNDI3MWQzMWUyYTM5ZGI3Yjg4NDEz
ZGMxODY4ZWEzN2NiN2YyYi4uYWY4OGM5ZGRkNGMxMDFjZDg5ZjFkY2JmNDg2YzAzYmZiNDk4MmZj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZXZlbnRfdHJhY2VyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V2ZW50X3RyYWNlci5jYwpAQCAtMTAsNyArMTAsOSBA
QAogI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50X3RyYWNlci5oIgogCiAjaW5jbHVkZSA8aW50dHlw
ZXMuaD4KLQorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVk
ZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAt
MjAsNyArMjIsOSBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5oIgot
I2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcGxh
dGZvcm1fdGhyZWFkX3R5cGVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRp
b25zLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2NoZWNrZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90cmFjZV9ldmVudC5oIgog
CkBAIC04Niw4ICs5MCw3IEBAIGNsYXNzIEV2ZW50TG9nZ2VyIGZpbmFsIHsKICAgICAgIDogbG9n
Z2luZ190aHJlYWRfKEV2ZW50VHJhY2luZ1RocmVhZEZ1bmMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgIkV2ZW50VHJhY2luZ1RocmVhZCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBrTG93UHJpb3JpdHkpLAotICAgICAgICBzaHV0ZG93
bl9ldmVudF8oZmFsc2UsIGZhbHNlKSB7fQorICAgICAgICAgICAgICAgICAgICAgICAga0xvd1By
aW9yaXR5KSB7fQogICB+RXZlbnRMb2dnZXIoKSB7IFJUQ19EQ0hFQ0sodGhyZWFkX2NoZWNrZXJf
LkNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7IH0KIAogICB2b2lkIEFkZFRyYWNlRXZlbnQoY29uc3Qg
Y2hhciogbmFtZSwKQEAgLTI4NiwxOSArMjg5LDE5IEBAIGNsYXNzIEV2ZW50TG9nZ2VyIGZpbmFs
IHsKICAgICAgICAgICB9CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVFJBQ0VfVkFM
VUVfVFlQRV9VSU5UOgotICAgICAgICAgIHByaW50X2xlbmd0aCA9IHNwcmludGZuKCZvdXRwdXRb
MF0sIGtUcmFjZUFyZ0J1ZmZlckxlbmd0aCwgIiVsbHUiLAorICAgICAgICAgIHByaW50X2xlbmd0
aCA9IHNucHJpbnRmKCZvdXRwdXRbMF0sIGtUcmFjZUFyZ0J1ZmZlckxlbmd0aCwgIiVsbHUiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy52YWx1ZS5hc191aW50KTsKICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUUkFDRV9WQUxVRV9UWVBFX0lOVDoKLSAgICAg
ICAgICBwcmludF9sZW5ndGggPSBzcHJpbnRmbigmb3V0cHV0WzBdLCBrVHJhY2VBcmdCdWZmZXJM
ZW5ndGgsICIlbGxkIiwKKyAgICAgICAgICBwcmludF9sZW5ndGggPSBzbnByaW50Zigmb3V0cHV0
WzBdLCBrVHJhY2VBcmdCdWZmZXJMZW5ndGgsICIlbGxkIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcmcudmFsdWUuYXNfaW50KTsKICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBUUkFDRV9WQUxVRV9UWVBFX0RPVUJMRToKLSAgICAgICAgICBwcmludF9sZW5ndGgg
PSBzcHJpbnRmbigmb3V0cHV0WzBdLCBrVHJhY2VBcmdCdWZmZXJMZW5ndGgsICIlZiIsCisgICAg
ICAgICAgcHJpbnRfbGVuZ3RoID0gc25wcmludGYoJm91dHB1dFswXSwga1RyYWNlQXJnQnVmZmVy
TGVuZ3RoLCAiJWYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy52YWx1
ZS5hc19kb3VibGUpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRSQUNFX1ZBTFVF
X1RZUEVfUE9JTlRFUjoKLSAgICAgICAgICBwcmludF9sZW5ndGggPSBzcHJpbnRmbigmb3V0cHV0
WzBdLCBrVHJhY2VBcmdCdWZmZXJMZW5ndGgsICJcIiVwXCIiLAorICAgICAgICAgIHByaW50X2xl
bmd0aCA9IHNucHJpbnRmKCZvdXRwdXRbMF0sIGtUcmFjZUFyZ0J1ZmZlckxlbmd0aCwgIlwiJXBc
IiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLnZhbHVlLmFzX3BvaW50
ZXIpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXZlbnRfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ldmVu
dF91bml0dGVzdC5jYwppbmRleCAwNTA2MTllODQ5NTQxY2FjMDdkMDkwZWZkN2JmYzBmM2I1MGI4
ZDQwLi5hNjUxMTFiYzkwZjdmMzgzN2UzOGQyMzc4YWRjYzQwYThkODk2Yjc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ldmVu
dF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9ldmVudF91bml0dGVzdC5jYwpAQCAtMzIsNyArMzIsNyBAQCBURVNUKEV2
ZW50VGVzdCwgTWFudWFsUmVzZXQpIHsKIH0KIAogVEVTVChFdmVudFRlc3QsIEF1dG9SZXNldCkg
ewotICBFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudDsKICAgQVNTRVJU
X0ZBTFNFKGV2ZW50LldhaXQoMCkpOwogCiAgIGV2ZW50LlNldCgpOwpAQCAtNTksNyArNTksNyBA
QCBjbGFzcyBTaWduYWxlclRocmVhZCB7CiAgICAgICBtZS0+cmVhZGVyXy0+V2FpdChFdmVudDo6
a0ZvcmV2ZXIpOwogICAgIH0KICAgfQotICBFdmVudCBzdG9wX2V2ZW50X3tmYWxzZSwgZmFsc2V9
OworICBFdmVudCBzdG9wX2V2ZW50XzsKICAgRXZlbnQqIHdyaXRlcl87CiAgIEV2ZW50KiByZWFk
ZXJfOwogICBQbGF0Zm9ybVRocmVhZCB0aHJlYWRfOwpAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBT
aWduYWxlclRocmVhZCB7CiAvLyBUaGVzZSB0ZXN0cyBhcmUgZGlzYWJsZWQgYnkgZGVmYXVsdCBh
bmQgb25seSBpbnRlbmRlZCB0byBiZSBydW4gbWFudWFsbHkuCiBURVNUKEV2ZW50VGVzdCwgRElT
QUJMRURfUGVyZm9ybWFuY2VTaW5nbGVUaHJlYWQpIHsKICAgc3RhdGljIGNvbnN0IGludCBrTnVt
SXRlcmF0aW9ucyA9IDEwMDAwMDAwOwotICBFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBF
dmVudCBldmVudDsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrTnVtSXRlcmF0aW9uczsgKytpKSB7
CiAgICAgZXZlbnQuU2V0KCk7CiAgICAgZXZlbnQuV2FpdCgwKTsKQEAgLTc3LDggKzc3LDggQEAg
VEVTVChFdmVudFRlc3QsIERJU0FCTEVEX1BlcmZvcm1hbmNlU2luZ2xlVGhyZWFkKSB7CiAKIFRF
U1QoRXZlbnRUZXN0LCBESVNBQkxFRF9QZXJmb3JtYW5jZU11bHRpVGhyZWFkKSB7CiAgIHN0YXRp
YyBjb25zdCBpbnQga051bUl0ZXJhdGlvbnMgPSAxMDAwMDsKLSAgRXZlbnQgcmVhZChmYWxzZSwg
ZmFsc2UpOwotICBFdmVudCB3cml0ZShmYWxzZSwgZmFsc2UpOworICBFdmVudCByZWFkOworICBF
dmVudCB3cml0ZTsKICAgU2lnbmFsZXJUaHJlYWQgdGhyZWFkOwogICB0aHJlYWQuU3RhcnQoJnJl
YWQsICZ3cml0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL0JVSUxELmduIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvQlVJTEQu
Z24KaW5kZXggYjEwZDBjMTU0NTkyMDYyNjcxYTlmMmFjOWQ4YTkyZjUwMzY4MjZkYS4uZDM2YTQz
ZTk0NjkwNTVlZGNjNGRmNjk1YTNhZDE1ODg0ZWJmNzMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvQlVJ
TEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZXhwZXJpbWVudHMvQlVJTEQuZ24KQEAgLTI4LDExICsyOCwxMSBAQCBydGNfc3RhdGlj
X2xpYnJhcnkoImZpZWxkX3RyaWFsX3BhcnNlciIpIHsKICAgICAiZmllbGRfdHJpYWxfdW5pdHMu
aCIsCiAgIF0KICAgZGVwcyA9IFsKLSAgICAiLi4vOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAi
Li4vLi4vYXBpL3VuaXRzOmRhdGFfcmF0ZSIsCiAgICAgIi4uLy4uL2FwaS91bml0czpkYXRhX3Np
emUiLAogICAgICIuLi8uLi9hcGkvdW5pdHM6dGltZV9kZWx0YSIsCiAgICAgIi4uLy4uL3J0Y19i
YXNlOmNoZWNrcyIsCisgICAgIi4uLy4uL3J0Y19iYXNlOmxvZ2dpbmciLAogICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0KIH0KQEAgLTU2LDEz
ICs1NiwzNiBAQCBydGNfc3RhdGljX2xpYnJhcnkoInF1YWxpdHlfc2NhbGluZ19leHBlcmltZW50
IikgewogICBdCiAgIGRlcHMgPSBbCiAgICAgIi4uLzpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAg
Ii4uLy4uOndlYnJ0Y19jb21tb24iLAogICAgICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVv
X2NvZGVjc19hcGkiLAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAog
ICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgIF0K
IH0KIAorcnRjX3N0YXRpY19saWJyYXJ5KCJub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJp
bWVudCIpIHsKKyAgc291cmNlcyA9IFsKKyAgICAibm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4
cGVyaW1lbnQuY2MiLAorICAgICJub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5o
IiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi86cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIu
Li8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KK30KKworcnRjX3N0YXRpY19saWJy
YXJ5KCJjcHVfc3BlZWRfZXhwZXJpbWVudCIpIHsKKyAgc291cmNlcyA9IFsKKyAgICAiY3B1X3Nw
ZWVkX2V4cGVyaW1lbnQuY2MiLAorICAgICJjcHVfc3BlZWRfZXhwZXJpbWVudC5oIiwKKyAgXQor
ICBkZXBzID0gWworICAgICIuLi86cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAgICIuLi8uLi9zeXN0
ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KK30KKwogcnRjX3N0YXRpY19saWJyYXJ5KCJydHRf
bXVsdF9leHBlcmltZW50IikgewogICBzb3VyY2VzID0gWwogICAgICJydHRfbXVsdF9leHBlcmlt
ZW50LmNjIiwKQEAgLTc0LDI2ICs5Nyw0NCBAQCBydGNfc3RhdGljX2xpYnJhcnkoInJ0dF9tdWx0
X2V4cGVyaW1lbnQiKSB7CiAgIF0KIH0KIAorcnRjX3N0YXRpY19saWJyYXJ5KCJqaXR0ZXJfdXBw
ZXJfYm91bmRfZXhwZXJpbWVudCIpIHsKKyAgc291cmNlcyA9IFsKKyAgICAiaml0dGVyX3VwcGVy
X2JvdW5kX2V4cGVyaW1lbnQuY2MiLAorICAgICJqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVu
dC5oIiwKKyAgXQorICBkZXBzID0gWworICAgICIuLi86cnRjX2Jhc2VfYXBwcm92ZWQiLAorICAg
ICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAorICAgICIvL3RoaXJkX3BhcnR5
L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KK30KKwogaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgIHJ0Y19zb3VyY2Vfc2V0KCJleHBlcmltZW50c191bml0dGVzdHMiKSB7
CiAgICAgdGVzdG9ubHkgPSB0cnVlCiAKICAgICBzb3VyY2VzID0gWwogICAgICAgImNvbmdlc3Rp
b25fY29udHJvbGxlcl9leHBlcmltZW50X3VuaXR0ZXN0LmNjIiwKKyAgICAgICJjcHVfc3BlZWRf
ZXhwZXJpbWVudF91bml0dGVzdC5jYyIsCiAgICAgICAiZmllbGRfdHJpYWxfcGFyc2VyX3VuaXR0
ZXN0LmNjIiwKICAgICAgICJmaWVsZF90cmlhbF91bml0c191bml0dGVzdC5jYyIsCisgICAgICAi
bm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MiLAogICAgICAg
InF1YWxpdHlfc2NhbGluZ19leHBlcmltZW50X3VuaXR0ZXN0LmNjIiwKICAgICAgICJydHRfbXVs
dF9leHBlcmltZW50X3VuaXR0ZXN0LmNjIiwKICAgICBdCiAgICAgZGVwcyA9IFsKICAgICAgICI6
Y29uZ2VzdGlvbl9jb250cm9sbGVyX2V4cGVyaW1lbnQiLAorICAgICAgIjpjcHVfc3BlZWRfZXhw
ZXJpbWVudCIsCiAgICAgICAiOmZpZWxkX3RyaWFsX3BhcnNlciIsCisgICAgICAiOm5vcm1hbGl6
ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50IiwKICAgICAgICI6cXVhbGl0eV9zY2FsaW5nX2V4
cGVyaW1lbnQiLAogICAgICAgIjpydHRfbXVsdF9leHBlcmltZW50IiwKKyAgICAgICIuLjpndW5p
dF9oZWxwZXJzIiwKICAgICAgICIuLi86cnRjX2Jhc2VfdGVzdHNfbWFpbiIsCiAgICAgICAiLi4v
OnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6Zmll
bGRfdHJpYWwiLAogICAgICAgIi4uLy4uL3Rlc3Q6ZmllbGRfdHJpYWwiLAorICAgICAgIi4uLy4u
L3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICBdCiAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL09X
TkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2V4cGVyaW1lbnRzL09XTkVSUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzU1ODcyMjZmOGRhMjI0NTVlMDE0ZWQ5
NjFhMTEyY2UxZmE4ZTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvT1dORVJTCkBAIC0wLDAg
KzEsOCBAQAorcGVyLWZpbGUgYWxyX2V4cGVyaW1lbnQqPXNwcmFuZ0B3ZWJydGMub3JnCitwZXIt
ZmlsZSBjb25nZXN0aW9uX2NvbnRyb2xsZXJfZXhwZXJpbWVudCo9c3J0ZUB3ZWJydGMub3JnCitw
ZXItZmlsZSBjcHVfc3BlZWRfZXhwZXJpbWVudCo9YXNhcGVyc3NvbkB3ZWJydGMub3JnCitwZXIt
ZmlsZSBmaWVsZF90cmlhbCo9c3J0ZUB3ZWJydGMub3JnCitwZXItZmlsZSBqaXR0ZXJfdXBwZXJf
Ym91bmRfZXhwZXJpbWVudCo9c3ByYW5nQHdlYnJ0Yy5vcmcKK3Blci1maWxlIG5vcm1hbGl6ZV9z
aW11bGNhc3Rfc2l6ZV9leHBlcmltZW50Kj1hc2FwZXJzc29uQHdlYnJ0Yy5vcmcKK3Blci1maWxl
IHF1YWxpdHlfc2NhbGluZ19leHBlcmltZW50Kj1hc2FwZXJzc29uQHdlYnJ0Yy5vcmcKK3Blci1m
aWxlIHJ0dF9tdWx0X2V4cGVyaW1lbnQqPW1ob3JvQHdlYnJ0Yy5vcmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1l
bnRzL2Fscl9leHBlcmltZW50LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQuY2MKaW5kZXggZGZm
NWFjZWNjOGI3NTY2YTA4YzE1NjllZTcwZmYxNTA4ZTI2NzQ0NC4uMjVlOTQ4ZDk4YTBlNzY4NGJh
Y2QzOTlkYjY2MmE2OTg1ZDU3ZDM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQuY2MKQEAgLTEwLDkgKzEwLDEwIEBACiAKICNp
bmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5oIgogCisjaW5jbHVk
ZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAot
I2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwu
aCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2Fscl9leHBl
cmltZW50LmgKaW5kZXggNGQ5ZmQwMDEzMDQ5NjU1NDJmZDU1OGQxNDQxMjdlYTMzNzc4NDJmZS4u
ODc2YmQwMjUxNzMwYjZhMDQwY2NhM2FlNWY5MTAzMTEzNWNlOTQ1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVu
dHMvYWxyX2V4cGVyaW1lbnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9hbHJfZXhwZXJpbWVudC5oCkBAIC0xMSw2
ICsxMSw4IEBACiAjaWZuZGVmIFJUQ19CQVNFX0VYUEVSSU1FTlRTX0FMUl9FWFBFUklNRU5UX0hf
CiAjZGVmaW5lIFJUQ19CQVNFX0VYUEVSSU1FTlRTX0FMUl9FWFBFUklNRU5UX0hfCiAKKyNpbmNs
dWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9jcHVfc3BlZWRfZXhwZXJpbWVudC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4
cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBlcmltZW50LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOTU0MGNmMDM5
MGYxYjk5ODk0YWNkMWU0ZjA0ZjQxNzZjNGZkNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9j
cHVfc3BlZWRfZXhwZXJpbWVudC5jYwpAQCAtMCwwICsxLDcwIEBACisvKgorICogIENvcHlyaWdo
dCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1
YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBB
VEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3Vu
ZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAq
LworCisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVkX2V4cGVyaW1lbnQu
aCIKKworI2luY2x1ZGUgPHN0cmluZz4KKworI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
KyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgorCituYW1l
c3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB7Citjb25zdGV4cHIgY2hhciBrRmllbGRUcmlhbFtd
ID0gIldlYlJUQy1WUDgtQ3B1U3BlZWQtQXJtIjsKK2NvbnN0ZXhwciBpbnQga01pblNldHRpbmcg
PSAtMTY7Citjb25zdGV4cHIgaW50IGtNYXhTZXR0aW5nID0gLTE7Cit9ICAvLyBuYW1lc3BhY2UK
KworYWJzbDo6b3B0aW9uYWw8c3RkOjp2ZWN0b3I8Q3B1U3BlZWRFeHBlcmltZW50OjpDb25maWc+
PgorQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRDb25maWdzKCkgeworICBpZiAoIXdlYnJ0Yzo6Zmll
bGRfdHJpYWw6OklzRW5hYmxlZChrRmllbGRUcmlhbCkpCisgICAgcmV0dXJuIGFic2w6Om51bGxv
cHQ7CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZ3JvdXAgPSB3ZWJydGM6OmZpZWxkX3RyaWFsOjpG
aW5kRnVsbE5hbWUoa0ZpZWxkVHJpYWwpOworICBpZiAoZ3JvdXAuZW1wdHkoKSkKKyAgICByZXR1
cm4gYWJzbDo6bnVsbG9wdDsKKworICBzdGQ6OnZlY3RvcjxDb25maWc+IGNvbmZpZ3MoMyk7Cisg
IGlmIChzc2NhbmYoZ3JvdXAuY19zdHIoKSwgIkVuYWJsZWQtJWQsJWQsJWQsJWQsJWQsJWQiLCAm
KGNvbmZpZ3NbMF0ucGl4ZWxzKSwKKyAgICAgICAgICAgICAmKGNvbmZpZ3NbMF0uY3B1X3NwZWVk
KSwgJihjb25maWdzWzFdLnBpeGVscyksCisgICAgICAgICAgICAgJihjb25maWdzWzFdLmNwdV9z
cGVlZCksICYoY29uZmlnc1syXS5waXhlbHMpLAorICAgICAgICAgICAgICYoY29uZmlnc1syXS5j
cHVfc3BlZWQpKSAhPSA2KSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVG9vIGZldyBw
YXJhbWV0ZXJzIHByb3ZpZGVkLiI7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKwor
ICBmb3IgKGNvbnN0IGF1dG8mIGNvbmZpZyA6IGNvbmZpZ3MpIHsKKyAgICBpZiAoY29uZmlnLmNw
dV9zcGVlZCA8IGtNaW5TZXR0aW5nIHx8IGNvbmZpZy5jcHVfc3BlZWQgPiBrTWF4U2V0dGluZykg
eworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiVW5zdXBwb3J0ZWQgY3B1IHNwZWVkIHNl
dHRpbmcsIHZhbHVlIGlnbm9yZWQuIjsKKyAgICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworICAg
IH0KKyAgfQorCisgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgY29uZmlncy5zaXplKCk7ICsraSkg
eworICAgIGlmIChjb25maWdzW2ldLnBpeGVscyA8IGNvbmZpZ3NbaSAtIDFdLnBpeGVscyB8fAor
ICAgICAgICBjb25maWdzW2ldLmNwdV9zcGVlZCA+IGNvbmZpZ3NbaSAtIDFdLmNwdV9zcGVlZCkg
eworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiSW52YWxpZCBwYXJhbWV0ZXIgdmFsdWUg
cHJvdmlkZWQuIjsKKyAgICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworICAgIH0KKyAgfQorCisg
IHJldHVybiBhYnNsOjpvcHRpb25hbDxzdGQ6OnZlY3RvcjxDb25maWc+Pihjb25maWdzKTsKK30K
KworaW50IENwdVNwZWVkRXhwZXJpbWVudDo6R2V0VmFsdWUoaW50IHBpeGVscywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPENvbmZpZz4mIGNvbmZp
Z3MpIHsKKyAgZm9yIChjb25zdCBhdXRvJiBjb25maWcgOiBjb25maWdzKSB7CisgICAgaWYgKHBp
eGVscyA8PSBjb25maWcucGl4ZWxzKQorICAgICAgcmV0dXJuIGNvbmZpZy5jcHVfc3BlZWQ7Cisg
IH0KKyAgcmV0dXJuIGtNaW5TZXR0aW5nOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9leHBlcmltZW50cy9jcHVfc3BlZWRfZXhwZXJpbWVudC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVk
X2V4cGVyaW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmM4MzQwOTQzMDE0MWU1NzAxYWUyMGJhMTQ0Yzdk
NjcyY2U5ZDliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVkX2V4cGVyaW1lbnQu
aApAQCAtMCwwICsxLDQxIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19CQVNF
X0VYUEVSSU1FTlRTX0NQVV9TUEVFRF9FWFBFUklNRU5UX0hfCisjZGVmaW5lIFJUQ19CQVNFX0VY
UEVSSU1FTlRTX0NQVV9TUEVFRF9FWFBFUklNRU5UX0hfCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisK
KyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CitjbGFzcyBDcHVTcGVlZEV4cGVyaW1lbnQgeworIHB1YmxpYzoKKyAgc3RydWN0IENvbmZpZyB7
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbmZpZyYgbykgY29uc3QgeworICAgICAgcmV0
dXJuIHBpeGVscyA9PSBvLnBpeGVscyAmJiBjcHVfc3BlZWQgPT0gby5jcHVfc3BlZWQ7CisgICAg
fQorCisgICAgaW50IHBpeGVsczsgICAgIC8vIFRoZSB2aWRlbyBmcmFtZSBzaXplLgorICAgIGlu
dCBjcHVfc3BlZWQ7ICAvLyBUaGUgfGNwdV9zcGVlZHwgdG8gYmUgdXNlZCBpZiB0aGUgZnJhbWUg
c2l6ZSBpcyBsZXNzCisgICAgICAgICAgICAgICAgICAgIC8vIHRoYW4gb3IgZXF1YWwgdG8gfHBp
eGVsc3wuCisgIH07CisKKyAgLy8gUmV0dXJucyB0aGUgY29uZmlndXJhdGlvbnMgZnJvbSBmaWVs
ZCB0cmlhbCBvbiBzdWNjZXNzLgorICBzdGF0aWMgYWJzbDo6b3B0aW9uYWw8c3RkOjp2ZWN0b3I8
Q29uZmlnPj4gR2V0Q29uZmlncygpOworCisgIC8vIEdldHMgdGhlIGNwdSBzcGVlZCBmcm9tIHRo
ZSB8Y29uZmlnc3wgYmFzZWQgb24gfHBpeGVsc3wuCisgIHN0YXRpYyBpbnQgR2V0VmFsdWUoaW50
IHBpeGVscywgY29uc3Qgc3RkOjp2ZWN0b3I8Q29uZmlnPiYgY29uZmlncyk7Cit9OworCit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfRVhQRVJJTUVOVFNfQ1BV
X1NQRUVEX0VYUEVSSU1FTlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBlcmlt
ZW50X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvY3B1X3NwZWVkX2V4cGVyaW1lbnRfdW5pdHRlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWRjNzgyYzBhZGRiZDY5NDQyMWUzYmJiNTljYjQ3OGJiMzJlZWMyZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2V4cGVyaW1lbnRzL2NwdV9zcGVlZF9leHBlcmltZW50X3VuaXR0ZXN0LmNjCkBA
IC0wLDAgKzEsODUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfYmFzZS9l
eHBlcmltZW50cy9jcHVfc3BlZWRfZXhwZXJpbWVudC5oIgorCisjaW5jbHVkZSAicnRjX2Jhc2Uv
Z3VuaXQuaCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCisjaW5jbHVkZSAidGVzdC9n
bW9jay5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworVEVTVChDcHVTcGVlZEV4cGVyaW1lbnRU
ZXN0LCBHZXRDb25maWdzRmFpbHNJZk5vdEVuYWJsZWQpIHsKKyAgRVhQRUNUX0ZBTFNFKENwdVNw
ZWVkRXhwZXJpbWVudDo6R2V0Q29uZmlncygpKTsKK30KKworVEVTVChDcHVTcGVlZEV4cGVyaW1l
bnRUZXN0LCBHZXRDb25maWdzRmFpbHNGb3JUb29GZXdQYXJhbWV0ZXJzKSB7CisgIHdlYnJ0Yzo6
dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1WUDgt
Q3B1U3BlZWQtQXJtL0VuYWJsZWQtMTAwMCwtMSwyMDAwLC0xMCwzMDAwLyIpOworICBFWFBFQ1Rf
RkFMU0UoQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRDb25maWdzKCkpOworfQorCitURVNUKENwdVNw
ZWVkRXhwZXJpbWVudFRlc3QsIEdldENvbmZpZ3MpIHsKKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRG
aWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisgICAgICAiV2ViUlRDLVZQOC1DcHVTcGVlZC1Bcm0v
RW5hYmxlZC0xMDAwLC0xLDIwMDAsLTEwLDMwMDAsLTE2LyIpOworCisgIGNvbnN0IGFic2w6Om9w
dGlvbmFsPHN0ZDo6dmVjdG9yPENwdVNwZWVkRXhwZXJpbWVudDo6Q29uZmlnPj4ga0NvbmZpZ3Mg
PQorICAgICAgQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRDb25maWdzKCk7CisgIEFTU0VSVF9UUlVF
KGtDb25maWdzKTsKKyAgRVhQRUNUX1RIQVQoKmtDb25maWdzLAorICAgICAgICAgICAgICA6OnRl
c3Rpbmc6OkVsZW1lbnRzQXJlKENwdVNwZWVkRXhwZXJpbWVudDo6Q29uZmlnezEwMDAsIC0xfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcHVTcGVlZEV4cGVyaW1lbnQ6
OkNvbmZpZ3syMDAwLCAtMTB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENwdVNwZWVkRXhwZXJpbWVudDo6Q29uZmlnezMwMDAsIC0xNn0pKTsKK30KKworVEVTVChDcHVT
cGVlZEV4cGVyaW1lbnRUZXN0LCBHZXRWYWx1ZSkgeworICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZp
ZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJSVEMtVlA4LUNwdVNwZWVkLUFybS9F
bmFibGVkLTEwMDAsLTUsMjAwMCwtMTAsMzAwMCwtMTIvIik7CisKKyAgY29uc3QgYWJzbDo6b3B0
aW9uYWw8c3RkOjp2ZWN0b3I8Q3B1U3BlZWRFeHBlcmltZW50OjpDb25maWc+PiBrQ29uZmlncyA9
CisgICAgICBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENvbmZpZ3MoKTsKKyAgQVNTRVJUX1RSVUUo
a0NvbmZpZ3MpOworICBBU1NFUlRfRVEoM3UsICgqa0NvbmZpZ3MpLnNpemUoKSk7CisgIEVYUEVD
VF9FUSgtNSwgQ3B1U3BlZWRFeHBlcmltZW50OjpHZXRWYWx1ZSgxLCAqa0NvbmZpZ3MpKTsKKyAg
RVhQRUNUX0VRKC01LCBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKDEwMDAsICprQ29uZmln
cykpOworICBFWFBFQ1RfRVEoLTEwLCBDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldFZhbHVlKDEwMDAg
KyAxLCAqa0NvbmZpZ3MpKTsKKyAgRVhQRUNUX0VRKC0xMCwgQ3B1U3BlZWRFeHBlcmltZW50OjpH
ZXRWYWx1ZSgyMDAwLCAqa0NvbmZpZ3MpKTsKKyAgRVhQRUNUX0VRKC0xMiwgQ3B1U3BlZWRFeHBl
cmltZW50OjpHZXRWYWx1ZSgyMDAwICsgMSwgKmtDb25maWdzKSk7CisgIEVYUEVDVF9FUSgtMTIs
IENwdVNwZWVkRXhwZXJpbWVudDo6R2V0VmFsdWUoMzAwMCwgKmtDb25maWdzKSk7CisgIEVYUEVD
VF9FUSgtMTYsIENwdVNwZWVkRXhwZXJpbWVudDo6R2V0VmFsdWUoMzAwMCArIDEsICprQ29uZmln
cykpOworfQorCitURVNUKENwdVNwZWVkRXhwZXJpbWVudFRlc3QsIEdldENvbmZpZ3NGYWlsc0Zv
clRvb1NtYWxsVmFsdWUpIHsKKyAgLy8gU3VwcG9ydGVkIHJhbmdlOiBbLTE2LCAtMV0uCisgIHdl
YnJ0Yzo6dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJU
Qy1WUDgtQ3B1U3BlZWQtQXJtL0VuYWJsZWQtMTAwMCwtMSwyMDAwLC0xMCwzMDAwLC0xNy8iKTsK
KyAgRVhQRUNUX0ZBTFNFKENwdVNwZWVkRXhwZXJpbWVudDo6R2V0Q29uZmlncygpKTsKK30KKwor
VEVTVChDcHVTcGVlZEV4cGVyaW1lbnRUZXN0LCBHZXRDb25maWdzRmFpbHNGb3JUb29MYXJnZVZh
bHVlKSB7CisgIC8vIFN1cHBvcnRlZCByYW5nZTogWy0xNiwgLTFdLgorICB3ZWJydGM6OnRlc3Q6
OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJSVEMtVlA4LUNwdVNw
ZWVkLUFybS9FbmFibGVkLTEwMDAsMCwyMDAwLC0xMCwzMDAwLC0xNi8iKTsKKyAgRVhQRUNUX0ZB
TFNFKENwdVNwZWVkRXhwZXJpbWVudDo6R2V0Q29uZmlncygpKTsKK30KKworVEVTVChDcHVTcGVl
ZEV4cGVyaW1lbnRUZXN0LCBHZXRDb25maWdzRmFpbHNJZlBpeGVsc0RlY3JlYXNpbmcpIHsKKyAg
d2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHMoCisgICAgICAiV2Vi
UlRDLVZQOC1DcHVTcGVlZC1Bcm0vRW5hYmxlZC0xMDAwLC01LDk5OSwtMTAsMzAwMCwtMTYvIik7
CisgIEVYUEVDVF9GQUxTRShDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENvbmZpZ3MoKSk7Cit9CisK
K1RFU1QoQ3B1U3BlZWRFeHBlcmltZW50VGVzdCwgR2V0Q29uZmlnc0ZhaWxzSWZDcHVTcGVlZElu
Y3JlYXNpbmcpIHsKKyAgd2VicnRjOjp0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlh
bHMoCisgICAgICAiV2ViUlRDLVZQOC1DcHVTcGVlZC1Bcm0vRW5hYmxlZC0xMDAwLC01LDIwMDAs
LTQsMzAwMCwtMTYvIik7CisgIEVYUEVDVF9GQUxTRShDcHVTcGVlZEV4cGVyaW1lbnQ6OkdldENv
bmZpZ3MoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRz
L2ZpZWxkX3RyaWFsX3BhcnNlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlci5jYwppbmRl
eCBhMmQ3Zjk3YmRlMWY0NjQzZjdlNWVmZGQ0MWEyYTI0YWVmMjlmYjk4Li45MzY0ODdjYjAxNWUw
MjYyZWY5MGEyODAyYWMyNmRhYmYzNDczNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlh
bF9wYXJzZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyLmNjCkBAIC0xNjksNiAr
MTY5LDkgQEAgdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbFBhcmFtZXRlcjxkb3VibGU+OwogdGVt
cGxhdGUgY2xhc3MgRmllbGRUcmlhbFBhcmFtZXRlcjxpbnQ+OwogdGVtcGxhdGUgY2xhc3MgRmll
bGRUcmlhbFBhcmFtZXRlcjxzdGQ6OnN0cmluZz47CiAKK3RlbXBsYXRlIGNsYXNzIEZpZWxkVHJp
YWxDb25zdHJhaW5lZDxkb3VibGU+OwordGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbENvbnN0cmFp
bmVkPGludD47CisKIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxPcHRpb25hbDxkb3VibGU+Owog
dGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbE9wdGlvbmFsPGludD47CiB0ZW1wbGF0ZSBjbGFzcyBG
aWVsZFRyaWFsT3B0aW9uYWw8Ym9vbD47CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF9w
YXJzZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlci5oCmluZGV4IDIyYTg4ODk3MTcwYmM1
NTA3MmZkOGQxZTMxYTBkZDdmMDM3ZDhmZDEuLjhiZGQ5YjVkOGViZTg2MDFhNDRlNmEyMmM5YTc2
OGQ5YmFlNmZmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2V4cGVy
aW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlci5oCkBAIC05Miw2ICs5Miw0MyBAQCBjbGFzcyBGaWVs
ZFRyaWFsUGFyYW1ldGVyIDogcHVibGljIEZpZWxkVHJpYWxQYXJhbWV0ZXJJbnRlcmZhY2Ugewog
ICBUIHZhbHVlXzsKIH07CiAKKy8vIFRoaXMgY2xhc3MgdXNlcyB0aGUgUGFyc2VUeXBlZFBhcmFt
ZXRlciBmdW5jdGlvbiB0byBpbXBsZW1lbnQgYSBwYXJhbWV0ZXIKKy8vIGltcGxlbWVudGF0aW9u
IHdpdGggYW4gZW5mb3JjZWQgZGVmYXVsdCB2YWx1ZSBhbmQgYSByYW5nZSBjb25zdHJhaW50LiBW
YWx1ZXMKKy8vIG91dHNpZGUgdGhlIGNvbmZpZ3VyZWQgcmFuZ2Ugd2lsbCBiZSBpZ25vcmVkLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGaWVsZFRyaWFsQ29uc3RyYWluZWQgOiBwdWJs
aWMgRmllbGRUcmlhbFBhcmFtZXRlckludGVyZmFjZSB7CisgcHVibGljOgorICBGaWVsZFRyaWFs
Q29uc3RyYWluZWQoc3RkOjpzdHJpbmcga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgVCBk
ZWZhdWx0X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6b3B0aW9uYWw8VD4g
bG93ZXJfbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICBhYnNsOjpvcHRpb25hbDxUPiB1
cHBlcl9saW1pdCkKKyAgICAgIDogRmllbGRUcmlhbFBhcmFtZXRlckludGVyZmFjZShrZXkpLAor
ICAgICAgICB2YWx1ZV8oZGVmYXVsdF92YWx1ZSksCisgICAgICAgIGxvd2VyX2xpbWl0Xyhsb3dl
cl9saW1pdCksCisgICAgICAgIHVwcGVyX2xpbWl0Xyh1cHBlcl9saW1pdCkge30KKyAgVCBHZXQo
KSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKyAgb3BlcmF0b3IgVCgpIGNvbnN0IHsgcmV0dXJu
IEdldCgpOyB9CisgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmdmFsdWVf
OyB9CisKKyBwcm90ZWN0ZWQ6CisgIGJvb2wgUGFyc2UoYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJp
bmc+IHN0cl92YWx1ZSkgb3ZlcnJpZGUgeworICAgIGlmIChzdHJfdmFsdWUpIHsKKyAgICAgIGFi
c2w6Om9wdGlvbmFsPFQ+IHZhbHVlID0gUGFyc2VUeXBlZFBhcmFtZXRlcjxUPigqc3RyX3ZhbHVl
KTsKKyAgICAgIGlmICh2YWx1ZSAmJiAoIWxvd2VyX2xpbWl0XyB8fCAqdmFsdWUgPj0gKmxvd2Vy
X2xpbWl0XykgJiYKKyAgICAgICAgICAoIXVwcGVyX2xpbWl0XyB8fCAqdmFsdWUgPD0gKnVwcGVy
X2xpbWl0XykpIHsKKyAgICAgICAgdmFsdWVfID0gKnZhbHVlOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyBwcml2YXRlOgor
ICBUIHZhbHVlXzsKKyAgYWJzbDo6b3B0aW9uYWw8VD4gbG93ZXJfbGltaXRfOworICBhYnNsOjpv
cHRpb25hbDxUPiB1cHBlcl9saW1pdF87Cit9OworCiBjbGFzcyBBYnN0cmFjdEZpZWxkVHJpYWxF
bnVtIDogcHVibGljIEZpZWxkVHJpYWxQYXJhbWV0ZXJJbnRlcmZhY2UgewogIHB1YmxpYzoKICAg
QWJzdHJhY3RGaWVsZFRyaWFsRW51bShzdGQ6OnN0cmluZyBrZXksCkBAIC0xOTEsNiArMjI4LDkg
QEAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxQYXJhbWV0ZXI8aW50PjsKIC8vIFVz
aW5nIHRoZSBnaXZlbiB2YWx1ZSBhcyBpcy4KIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRy
aWFsUGFyYW1ldGVyPHN0ZDo6c3RyaW5nPjsKIAorZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxk
VHJpYWxDb25zdHJhaW5lZDxkb3VibGU+OworZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIEZpZWxkVHJp
YWxDb25zdHJhaW5lZDxpbnQ+OworCiBleHRlcm4gdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbE9w
dGlvbmFsPGRvdWJsZT47CiBleHRlcm4gdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbE9wdGlvbmFs
PGludD47CiBleHRlcm4gdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbE9wdGlvbmFsPGJvb2w+Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfcGFyc2VyX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMv
ZmllbGRfdHJpYWxfcGFyc2VyX3VuaXR0ZXN0LmNjCmluZGV4IGRlOTc3ZWM4YmE4MDk3MjIwMzA0
MDhkNjU5N2Y1N2JhYzE0ZWNiZGMuLjBkMDY3ZjVhNDkxMzhhNzVjZDhjZGUxODcyNGU2NTcyYmM5
YWQ5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3BhcnNlcl91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9l
eHBlcmltZW50cy9maWVsZF90cmlhbF9wYXJzZXJfdW5pdHRlc3QuY2MKQEAgLTk5LDYgKzk5LDE5
IEBAIFRFU1QoRmllbGRUcmlhbFBhcnNlclRlc3QsIElnbm9yZXNJbnZhbGlkKSB7CiAgIEVYUEVD
VF9FUShleHAucGluZy5HZXQoKSwgZmFsc2UpOwogICBFWFBFQ1RfRVEoZXhwLmhhc2guR2V0KCks
ICJhODAiKTsKIH0KK1RFU1QoRmllbGRUcmlhbFBhcnNlclRlc3QsIElnbm9yZXNPdXRPZlJhbmdl
KSB7CisgIEZpZWxkVHJpYWxDb25zdHJhaW5lZDxkb3VibGU+IGxvdygibG93IiwgMTAsIGFic2w6
Om51bGxvcHQsIDEwMCk7CisgIEZpZWxkVHJpYWxDb25zdHJhaW5lZDxkb3VibGU+IGhpZ2goImhp
Z2giLCAxMCwgNSwgYWJzbDo6bnVsbG9wdCk7CisgIFBhcnNlRmllbGRUcmlhbCh7JmxvdywgJmhp
Z2h9LCAibG93OjEwMDAsaGlnaDowIik7CisgIEVYUEVDVF9FUShsb3cuR2V0KCksIDEwKTsKKyAg
RVhQRUNUX0VRKGhpZ2guR2V0KCksIDEwKTsKKyAgUGFyc2VGaWVsZFRyaWFsKHsmbG93LCAmaGln
aH0sICJsb3c6aW5mLGhpZ2g6bmFuIik7CisgIEVYUEVDVF9FUShsb3cuR2V0KCksIDEwKTsKKyAg
RVhQRUNUX0VRKGhpZ2guR2V0KCksIDEwKTsKKyAgUGFyc2VGaWVsZFRyaWFsKHsmbG93LCAmaGln
aH0sICJsb3c6MjAsaGlnaDoyMCIpOworICBFWFBFQ1RfRVEobG93LkdldCgpLCAyMCk7CisgIEVY
UEVDVF9FUShoaWdoLkdldCgpLCAyMCk7Cit9CiBURVNUKEZpZWxkVHJpYWxQYXJzZXJUZXN0LCBQ
YXJzZXNPcHRpb25hbFBhcmFtZXRlcnMpIHsKICAgRmllbGRUcmlhbE9wdGlvbmFsPGludD4gbWF4
X2NvdW50KCJjIiwgYWJzbDo6bnVsbG9wdCk7CiAgIFBhcnNlRmllbGRUcmlhbCh7Jm1heF9jb3Vu
dH0sICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMv
ZmllbGRfdHJpYWxfdW5pdHMuY2MKaW5kZXggZjUzOTc4YjIxMTUzZDRmZDUwMjRlMWM5OTU2NGQ1
N2ViZjkxYWRmNy4uNTMxMWEzYTk0MWM3ODBiOWUwMzVjMGZiMGIzODc4MWM0MzdiYTI4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfdW5pdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJp
YWxfdW5pdHMuY2MKQEAgLTksNiArOSw3IEBACiAgKi8KICNpbmNsdWRlICJydGNfYmFzZS9leHBl
cmltZW50cy9maWVsZF90cmlhbF91bml0cy5oIgogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5nPgogCkBAIC04Niw2ICs4NywxMCBAQCB0ZW1w
bGF0ZSBjbGFzcyBGaWVsZFRyaWFsUGFyYW1ldGVyPERhdGFSYXRlPjsKIHRlbXBsYXRlIGNsYXNz
IEZpZWxkVHJpYWxQYXJhbWV0ZXI8RGF0YVNpemU+OwogdGVtcGxhdGUgY2xhc3MgRmllbGRUcmlh
bFBhcmFtZXRlcjxUaW1lRGVsdGE+OwogCit0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsQ29uc3Ry
YWluZWQ8RGF0YVJhdGU+OwordGVtcGxhdGUgY2xhc3MgRmllbGRUcmlhbENvbnN0cmFpbmVkPERh
dGFTaXplPjsKK3RlbXBsYXRlIGNsYXNzIEZpZWxkVHJpYWxDb25zdHJhaW5lZDxUaW1lRGVsdGE+
OworCiB0ZW1wbGF0ZSBjbGFzcyBGaWVsZFRyaWFsT3B0aW9uYWw8RGF0YVJhdGU+OwogdGVtcGxh
dGUgY2xhc3MgRmllbGRUcmlhbE9wdGlvbmFsPERhdGFTaXplPjsKIHRlbXBsYXRlIGNsYXNzIEZp
ZWxkVHJpYWxPcHRpb25hbDxUaW1lRGVsdGE+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJp
YWxfdW5pdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2V4cGVyaW1lbnRzL2ZpZWxkX3RyaWFsX3VuaXRzLmgKaW5kZXggOTMyYzVjYjQ1MDAx
Y2YwNmU1ODJlMWI5ZGM2NjBmYjkzMTIwODBkZi4uYWY4OGY0YTZjMDBkZjM1MTA2YjljNWNkYTQ2
MzM5NzAxMjU5YTZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJpYWxfdW5pdHMuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBl
cmltZW50cy9maWVsZF90cmlhbF91bml0cy5oCkBAIC0yMSw2ICsyMSwxMCBAQCBleHRlcm4gdGVt
cGxhdGUgY2xhc3MgRmllbGRUcmlhbFBhcmFtZXRlcjxEYXRhUmF0ZT47CiBleHRlcm4gdGVtcGxh
dGUgY2xhc3MgRmllbGRUcmlhbFBhcmFtZXRlcjxEYXRhU2l6ZT47CiBleHRlcm4gdGVtcGxhdGUg
Y2xhc3MgRmllbGRUcmlhbFBhcmFtZXRlcjxUaW1lRGVsdGE+OwogCitleHRlcm4gdGVtcGxhdGUg
Y2xhc3MgRmllbGRUcmlhbENvbnN0cmFpbmVkPERhdGFSYXRlPjsKK2V4dGVybiB0ZW1wbGF0ZSBj
bGFzcyBGaWVsZFRyaWFsQ29uc3RyYWluZWQ8RGF0YVNpemU+OworZXh0ZXJuIHRlbXBsYXRlIGNs
YXNzIEZpZWxkVHJpYWxDb25zdHJhaW5lZDxUaW1lRGVsdGE+OworCiBleHRlcm4gdGVtcGxhdGUg
Y2xhc3MgRmllbGRUcmlhbE9wdGlvbmFsPERhdGFSYXRlPjsKIGV4dGVybiB0ZW1wbGF0ZSBjbGFz
cyBGaWVsZFRyaWFsT3B0aW9uYWw8RGF0YVNpemU+OwogZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIEZp
ZWxkVHJpYWxPcHRpb25hbDxUaW1lRGVsdGE+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvZmllbGRfdHJp
YWxfdW5pdHNfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF91bml0c191bml0dGVzdC5j
YwppbmRleCA4MDc3MWQ5MjZhYmQzN2U3YzgwZmRlOTE4MDRlZmYzNTVkMjc0MGU4Li41NzAyMmMy
ZjIzZjQ2ZTMwYjgyMzEzMTcyYjgzOTJlM2JhM2EyMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVs
ZF90cmlhbF91bml0c191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9maWVsZF90cmlhbF91bml0c191
bml0dGVzdC5jYwpAQCAtNTgsNSArNTgsMjUgQEAgVEVTVChGaWVsZFRyaWFsUGFyc2VyVW5pdHNU
ZXN0LCBQYXJzZXNPdGhlclVuaXRQYXJhbWV0ZXJzKSB7CiAgIEVYUEVDVF9FUSgqZXhwLm1heF9i
dWZmZXIuR2V0T3B0aW9uYWwoKSwgRGF0YVNpemU6OmJ5dGVzKDgpKTsKICAgRVhQRUNUX0VRKGV4
cC5wZXJpb2QuR2V0KCksIFRpbWVEZWx0YTo6bXMoMzAwKSk7CiB9CitURVNUKEZpZWxkVHJpYWxQ
YXJzZXJVbml0c1Rlc3QsIElnbm9yZXNPdXRPZlJhbmdlKSB7CisgIEZpZWxkVHJpYWxDb25zdHJh
aW5lZDxEYXRhUmF0ZT4gcmF0ZSgiciIsIERhdGFSYXRlOjprYnBzKDMwKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFSYXRlOjprYnBzKDEwKSwgRGF0YVJhdGU6
OmticHMoMTAwKSk7CisgIEZpZWxkVHJpYWxDb25zdHJhaW5lZDxUaW1lRGVsdGE+IGRlbHRhKCJk
IiwgVGltZURlbHRhOjptcygzMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRpbWVEZWx0YTo6bXMoMTApLCBUaW1lRGVsdGE6Om1zKDEwMCkpOworICBGaWVsZFRy
aWFsQ29uc3RyYWluZWQ8RGF0YVNpemU+IHNpemUoCisgICAgICAicyIsIERhdGFTaXplOjpieXRl
cygzMCksIERhdGFTaXplOjpieXRlcygxMCksIERhdGFTaXplOjpieXRlcygxMDApKTsKKyAgUGFy
c2VGaWVsZFRyaWFsKHsmcmF0ZSwgJmRlbHRhLCAmc2l6ZX0sICJyOjAsZDowLHM6MCIpOworICBF
WFBFQ1RfRVEocmF0ZS0+a2JwcygpLCAzMCk7CisgIEVYUEVDVF9FUShkZWx0YS0+bXMoKSwgMzAp
OworICBFWFBFQ1RfRVEoc2l6ZS0+Ynl0ZXMoKSwgMzApOworICBQYXJzZUZpZWxkVHJpYWwoeyZy
YXRlLCAmZGVsdGEsICZzaXplfSwgInI6MzAwLGQ6MzAwLHM6MzAwIik7CisgIEVYUEVDVF9FUShy
YXRlLT5rYnBzKCksIDMwKTsKKyAgRVhQRUNUX0VRKGRlbHRhLT5tcygpLCAzMCk7CisgIEVYUEVD
VF9FUShzaXplLT5ieXRlcygpLCAzMCk7CisgIFBhcnNlRmllbGRUcmlhbCh7JnJhdGUsICZkZWx0
YSwgJnNpemV9LCAicjo1MCxkOjUwLHM6NTAiKTsKKyAgRVhQRUNUX0VRKHJhdGUtPmticHMoKSwg
NTApOworICBFWFBFQ1RfRVEoZGVsdGEtPm1zKCksIDUwKTsKKyAgRVhQRUNUX0VRKHNpemUtPmJ5
dGVzKCksIDUwKTsKK30KIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVu
dHMvaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9qaXR0ZXJfdXBwZXJf
Ym91bmRfZXhwZXJpbWVudC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iM2U5MjMwMTliM2NmZDgyZGM2NDhiM2Zm
YTg5MzRkZjQwNmZkYmY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvaml0dGVyX3VwcGVyX2Jv
dW5kX2V4cGVyaW1lbnQuY2MKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMp
IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICov
CisKKyNpbmNsdWRlICJydGNfYmFzZS9leHBlcmltZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhw
ZXJpbWVudC5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHN0cmluZz4KKwor
I2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9maWVsZF90cmlhbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY29uc3QgY2hh
ciBKaXR0ZXJVcHBlckJvdW5kRXhwZXJpbWVudDo6a0ppdHRlclVwcGVyQm91bmRFeHBlcmltZW50
TmFtZVtdID0KKyAgICAiV2ViUlRDLUppdHRlclVwcGVyQm91bmQiOworCithYnNsOjpvcHRpb25h
bDxkb3VibGU+IEppdHRlclVwcGVyQm91bmRFeHBlcmltZW50OjpHZXRVcHBlckJvdW5kU2lnbWFz
KCkgeworICBpZiAoIWZpZWxkX3RyaWFsOjpJc0VuYWJsZWQoa0ppdHRlclVwcGVyQm91bmRFeHBl
cmltZW50TmFtZSkpIHsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorICBjb25zdCBz
dGQ6OnN0cmluZyBncm91cCA9CisgICAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpGaW5kRnVsbE5h
bWUoa0ppdHRlclVwcGVyQm91bmRFeHBlcmltZW50TmFtZSk7CisKKyAgZG91YmxlIHVwcGVyX2Jv
dW5kX3NpZ21hczsKKyAgaWYgKHNzY2FuZihncm91cC5jX3N0cigpLCAiRW5hYmxlZC0lbGYiLCAm
dXBwZXJfYm91bmRfc2lnbWFzKSAhPSAxKSB7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
SW52YWxpZCBudW1iZXIgb2YgcGFyYW1ldGVycyBwcm92aWRlZC4iOworICAgIHJldHVybiBhYnNs
OjpudWxsb3B0OworICB9CisKKyAgaWYgKHVwcGVyX2JvdW5kX3NpZ21hcyA8IDApIHsKKyAgICBS
VENfTE9HKExTX1dBUk5JTkcpIDw8ICJJbnZhbGlkIGppdHRlciB1cHBlciBib3VuZCBzaWdtYXMs
IG11c3QgYmUgPj0gMC4wOiAiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCB1cHBlcl9ib3Vu
ZF9zaWdtYXM7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKworICByZXR1cm4gdXBw
ZXJfYm91bmRfc2lnbWFzOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBl
cmltZW50cy9qaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvaml0dGVyX3Vw
cGVyX2JvdW5kX2V4cGVyaW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjJjZDc5ZWZhNmNjY2ZkN2FjMWE5
MDQ0ZmZkOTcwMGU3OGYyMGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvaml0dGVyX3VwcGVy
X2JvdW5kX2V4cGVyaW1lbnQuaApAQCAtMCwwICsxLDMxIEBACisvKgorICogIENvcHlyaWdodCAo
YykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0
dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQ
QVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91
bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisg
Ki8KKworI2lmbmRlZiBSVENfQkFTRV9FWFBFUklNRU5UU19KSVRURVJfVVBQRVJfQk9VTkRfRVhQ
RVJJTUVOVF9IXworI2RlZmluZSBSVENfQkFTRV9FWFBFUklNRU5UU19KSVRURVJfVVBQRVJfQk9V
TkRfRVhQRVJJTUVOVF9IXworCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorCitu
YW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgSml0dGVyVXBwZXJCb3VuZEV4cGVyaW1lbnQgewor
IHB1YmxpYzoKKyAgLy8gUmV0dXJucyBudWxsb3B0IGlmIGV4cGVyaW1lbnQgaXMgbm90IG9uLCBv
dGhlcndpc2UgcmV0dXJucyB0aGUgY29uZmlndXJlZAorICAvLyB1cHBlciBib3VuZCBmb3IgZnJh
bWUgZGVsYXkgZGVsdGEgdXNlZCBpbiBqaXR0ZXIgZXN0aW1hdGlvbiwgZXhwcmVzc2VkIGFzCisg
IC8vIG51bWJlciBvZiBzdGFuZGFyZCBkZXZpYXRpb25zIG9mIHRoZSBjdXJyZW50IGRldmlhdGlv
biBmcm9tIHRoZSBleHBlY3RlZAorICAvLyBkZWxheS4KKyAgc3RhdGljIGFic2w6Om9wdGlvbmFs
PGRvdWJsZT4gR2V0VXBwZXJCb3VuZFNpZ21hcygpOworCisgIHN0YXRpYyBjb25zdCBjaGFyIGtK
aXR0ZXJVcHBlckJvdW5kRXhwZXJpbWVudE5hbWVbXTsKK307CisKK30gIC8vIG5hbWVzcGFjZSB3
ZWJydGMKKworI2VuZGlmICAvLyBSVENfQkFTRV9FWFBFUklNRU5UU19KSVRURVJfVVBQRVJfQk9V
TkRfRVhQRVJJTUVOVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVsY2FzdF9z
aXplX2V4cGVyaW1lbnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9ub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJp
bWVudC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45Y2U1ZjU3ZjhmMDY1MmQyODNmMmVlN2YzN2QzMDEyNjcwZmQw
ZGMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4
cGVyaW1lbnQuY2MKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUg
V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQor
ICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFV
VEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1
ZGUgInJ0Y19iYXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmlt
ZW50LmgiCisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKKwor
bmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworY29uc3RleHByIGNoYXIga0ZpZWxkVHJp
YWxbXSA9ICJXZWJSVEMtTm9ybWFsaXplU2ltdWxjYXN0UmVzb2x1dGlvbiI7Citjb25zdGV4cHIg
aW50IGtNaW5TZXR0aW5nID0gMDsKK2NvbnN0ZXhwciBpbnQga01heFNldHRpbmcgPSA1OworfSAg
Ly8gbmFtZXNwYWNlCisKK2Fic2w6Om9wdGlvbmFsPGludD4gTm9ybWFsaXplU2ltdWxjYXN0U2l6
ZUV4cGVyaW1lbnQ6OkdldEJhc2UyRXhwb25lbnQoKSB7CisgIGlmICghd2VicnRjOjpmaWVsZF90
cmlhbDo6SXNFbmFibGVkKGtGaWVsZFRyaWFsKSkKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsK
KworICBjb25zdCBzdGQ6OnN0cmluZyBncm91cCA9IHdlYnJ0Yzo6ZmllbGRfdHJpYWw6OkZpbmRG
dWxsTmFtZShrRmllbGRUcmlhbCk7CisgIGlmIChncm91cC5lbXB0eSgpKQorICAgIHJldHVybiBh
YnNsOjpudWxsb3B0OworCisgIGludCBleHBvbmVudDsKKyAgaWYgKHNzY2FuZihncm91cC5jX3N0
cigpLCAiRW5hYmxlZC0lZCIsICZleHBvbmVudCkgIT0gMSkgeworICAgIFJUQ19MT0coTFNfV0FS
TklORykgPDwgIk5vIHBhcmFtZXRlciBwcm92aWRlZC4iOworICAgIHJldHVybiBhYnNsOjpudWxs
b3B0OworICB9CisKKyAgaWYgKGV4cG9uZW50IDwga01pblNldHRpbmcgfHwgZXhwb25lbnQgPiBr
TWF4U2V0dGluZykgeworICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlVuc3VwcG9ydGVkIGV4
cCB2YWx1ZSBwcm92aWRlZCwgdmFsdWUgaWdub3JlZC4iOworICAgIHJldHVybiBhYnNsOjpudWxs
b3B0OworICB9CisKKyAgcmV0dXJuIGFic2w6Om9wdGlvbmFsPGludD4oZXhwb25lbnQpOworfQor
Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9ub3JtYWxpemVfc2lt
dWxjYXN0X3NpemVfZXhwZXJpbWVudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVsY2FzdF9zaXpl
X2V4cGVyaW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjM1ODIwMmIyNzJhZGE0MTRjYzY4NzRiMzYwYTI1
YzdmYjU2N2NiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVsY2FzdF9z
aXplX2V4cGVyaW1lbnQuaApAQCAtMCwwICsxLDI1IEBACisvKgorICogIENvcHlyaWdodCAyMDE4
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
ICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJv
cGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMu
ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0
aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisj
aWZuZGVmIFJUQ19CQVNFX0VYUEVSSU1FTlRTX05PUk1BTElaRV9TSU1VTENBU1RfU0laRV9FWFBF
UklNRU5UX0hfCisjZGVmaW5lIFJUQ19CQVNFX0VYUEVSSU1FTlRTX05PUk1BTElaRV9TSU1VTENB
U1RfU0laRV9FWFBFUklNRU5UX0hfCisKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgi
CisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xhc3MgTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVy
aW1lbnQgeworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0aGUgYmFzZSB0d28gZXhwb25lbnQgZnJv
bSBmaWVsZCB0cmlhbC4KKyAgc3RhdGljIGFic2w6Om9wdGlvbmFsPGludD4gR2V0QmFzZTJFeHBv
bmVudCgpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFJUQ19C
QVNFX0VYUEVSSU1FTlRTX05PUk1BTElaRV9TSU1VTENBU1RfU0laRV9FWFBFUklNRU5UX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9leHBlcmltZW50cy9ub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudF91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2V4cGVyaW1lbnRzL25vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50X3VuaXR0
ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMzN2I4MDkxN2ZlM2M2MGViMWU2Njk4NDQ4YzQ0ZjNlNDBlOGRm
Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9ub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhw
ZXJpbWVudF91bml0dGVzdC5jYwpAQCAtMCwwICsxLDU5IEBACisvKgorICogIENvcHlyaWdodCAy
MDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaW5jbHVkZSAicnRjX2Jhc2UvZXhwZXJpbWVudHMvbm9ybWFsaXplX3NpbXVsY2FzdF9zaXpl
X2V4cGVyaW1lbnQuaCIKKworI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCisjaW5jbHVkZSAi
dGVzdC9maWVsZF90cmlhbC5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworVEVTVChOb3JtYWxp
emVTaW11bGNhc3RTaXplRXhwZXJpbWVudFRlc3QsIEdldEV4cG9uZW50KSB7CisgIHdlYnJ0Yzo6
dGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1Ob3Jt
YWxpemVTaW11bGNhc3RSZXNvbHV0aW9uL0VuYWJsZWQtMi8iKTsKKyAgRVhQRUNUX0VRKDIsIE5v
cm1hbGl6ZVNpbXVsY2FzdFNpemVFeHBlcmltZW50OjpHZXRCYXNlMkV4cG9uZW50KCkpOworfQor
CitURVNUKE5vcm1hbGl6ZVNpbXVsY2FzdFNpemVFeHBlcmltZW50VGVzdCwgR2V0RXhwb25lbnRX
aXRoVHdvUGFyYW1ldGVycykgeworICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZp
ZWxkX3RyaWFscygKKyAgICAgICJXZWJSVEMtTm9ybWFsaXplU2ltdWxjYXN0UmVzb2x1dGlvbi9F
bmFibGVkLTMtNC8iKTsKKyAgRVhQRUNUX0VRKDMsIE5vcm1hbGl6ZVNpbXVsY2FzdFNpemVFeHBl
cmltZW50OjpHZXRCYXNlMkV4cG9uZW50KCkpOworfQorCitURVNUKE5vcm1hbGl6ZVNpbXVsY2Fz
dFNpemVFeHBlcmltZW50VGVzdCwgR2V0RXhwb25lbnRGYWlsc0lmTm90RW5hYmxlZCkgeworICB3
ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygKKyAgICAgICJXZWJS
VEMtTm9ybWFsaXplU2ltdWxjYXN0UmVzb2x1dGlvbi9EaXNhYmxlZC8iKTsKKyAgRVhQRUNUX0ZB
TFNFKE5vcm1hbGl6ZVNpbXVsY2FzdFNpemVFeHBlcmltZW50OjpHZXRCYXNlMkV4cG9uZW50KCkp
OworfQorCitURVNUKE5vcm1hbGl6ZVNpbXVsY2FzdFNpemVFeHBlcmltZW50VGVzdCwKKyAgICAg
R2V0RXhwb25lbnRGYWlsc0ZvckludmFsaWRGaWVsZFRyaWFsKSB7CisgIHdlYnJ0Yzo6dGVzdDo6
U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1Ob3JtYWxpemVT
aW11bGNhc3RSZXNvbHV0aW9uL0VuYWJsZWQtaW52YWxpZC8iKTsKKyAgRVhQRUNUX0ZBTFNFKE5v
cm1hbGl6ZVNpbXVsY2FzdFNpemVFeHBlcmltZW50OjpHZXRCYXNlMkV4cG9uZW50KCkpOworfQor
CitURVNUKE5vcm1hbGl6ZVNpbXVsY2FzdFNpemVFeHBlcmltZW50VGVzdCwKKyAgICAgR2V0RXhw
b25lbnRGYWlsc0Zvck5lZ2F0aXZlT3V0T2ZCb3VuZFZhbHVlKSB7CisgIC8vIFN1cHBvcnRlZCBy
YW5nZTogWzAsIDVdLgorICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3Ry
aWFscygKKyAgICAgICJXZWJSVEMtTm9ybWFsaXplU2ltdWxjYXN0UmVzb2x1dGlvbi9FbmFibGVk
LS0xLyIpOworICBFWFBFQ1RfRkFMU0UoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4cGVyaW1lbnQ6
OkdldEJhc2UyRXhwb25lbnQoKSk7Cit9CisKK1RFU1QoTm9ybWFsaXplU2ltdWxjYXN0U2l6ZUV4
cGVyaW1lbnRUZXN0LAorICAgICBHZXRFeHBvbmVudEZhaWxzRm9yUG9zaXRpdmVPdXRPZkJvdW5k
VmFsdWUpIHsKKyAgLy8gU3VwcG9ydGVkIHJhbmdlOiBbMCwgNV0uCisgIHdlYnJ0Yzo6dGVzdDo6
U2NvcGVkRmllbGRUcmlhbHMgZmllbGRfdHJpYWxzKAorICAgICAgIldlYlJUQy1Ob3JtYWxpemVT
aW11bGNhc3RSZXNvbHV0aW9uL0VuYWJsZWQtNi8iKTsKKyAgRVhQRUNUX0ZBTFNFKE5vcm1hbGl6
ZVNpbXVsY2FzdFNpemVFeHBlcmltZW50OjpHZXRCYXNlMkV4cG9uZW50KCkpOworfQorCit9ICAv
LyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9xdWFsaXR5X3NjYWxpbmdfZXhw
ZXJpbWVudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZXhwZXJpbWVudHMvcXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnQuaAppbmRleCA4MGEy
NWVmMWVlZTU4YjE5MWFkYzBmMWJiNWEwMTU1NTliMWUyMzUxLi4xNDgzM2MwMGIxMjc5NzhjYjZi
NjVlOTI0YzhjMDQ0OWE5ZDMyM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9leHBlcmltZW50cy9xdWFsaXR5X3NjYWxpbmdf
ZXhwZXJpbWVudC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2V4cGVyaW1lbnRzL3F1YWxpdHlfc2NhbGluZ19leHBlcmltZW50LmgKQEAg
LTEyLDcgKzEyLDYgQEAKIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKICNpbmNs
dWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXIuaCIKLSNpbmNsdWRlICJjb21tb25f
dHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IGNsYXNzIFF1YWxpdHlTY2FsaW5nRXhwZXJpbWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlX21kbnNfcmVzcG9u
ZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9mYWtlX21kbnNfcmVzcG9uZGVyLmgKaW5kZXggMzJkNjliYTY4MzZhN2Y5ZmMzOWU2OTc2ZjZl
NjZlMjZhMzk4NzRkMS4uMWU2MGE1ZDlkZTJkMWNjYzRmZGYxNTRiZjZiMzA1OThkNWI2NWJjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZmFrZV9tZG5zX3Jlc3BvbmRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zha2VfbWRuc19yZXNwb25kZXIuaApAQCAtMjEs
MTAgKzIxLDEwIEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCi1jbGFzcyBGYWtlTURuc1Jlc3Bv
bmRlciA6IHB1YmxpYyBNRG5zUmVzcG9uZGVySW50ZXJmYWNlIHsKK2NsYXNzIEZha2VNZG5zUmVz
cG9uZGVyIDogcHVibGljIE1kbnNSZXNwb25kZXJJbnRlcmZhY2UgewogIHB1YmxpYzoKLSAgRmFr
ZU1EbnNSZXNwb25kZXIoKSA9IGRlZmF1bHQ7Ci0gIH5GYWtlTURuc1Jlc3BvbmRlcigpID0gZGVm
YXVsdDsKKyAgZXhwbGljaXQgRmFrZU1kbnNSZXNwb25kZXIocnRjOjpUaHJlYWQqIHRocmVhZCkg
OiB0aHJlYWRfKHRocmVhZCkge30KKyAgfkZha2VNZG5zUmVzcG9uZGVyKCkgPSBkZWZhdWx0Owog
CiAgIHZvaWQgQ3JlYXRlTmFtZUZvckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxsYmFj
aykgb3ZlcnJpZGUgewpAQCAtMzUsNyArMzUsOSBAQCBjbGFzcyBGYWtlTURuc1Jlc3BvbmRlciA6
IHB1YmxpYyBNRG5zUmVzcG9uZGVySW50ZXJmYWNlIHsKICAgICAgIG5hbWUgPSBzdGQ6OnRvX3N0
cmluZyhuZXh0X2F2YWlsYWJsZV9pZF8rKykgKyAiLmxvY2FsIjsKICAgICAgIGFkZHJfbmFtZV9t
YXBfW2FkZHJdID0gbmFtZTsKICAgICB9Ci0gICAgY2FsbGJhY2soYWRkciwgbmFtZSk7CisgICAg
aW52b2tlcl8uQXN5bmNJbnZva2U8dm9pZD4oCisgICAgICAgIFJUQ19GUk9NX0hFUkUsIHRocmVh
ZF8sCisgICAgICAgIFtjYWxsYmFjaywgYWRkciwgbmFtZV0oKSB7IGNhbGxiYWNrKGFkZHIsIG5h
bWUpOyB9KTsKICAgfQogICB2b2lkIFJlbW92ZU5hbWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBB
ZGRyZXNzJiBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVSZW1vdmVkQ2Fs
bGJhY2sgY2FsbGJhY2spIG92ZXJyaWRlIHsKQEAgLTQzLDEyICs0NSwxNiBAQCBjbGFzcyBGYWtl
TURuc1Jlc3BvbmRlciA6IHB1YmxpYyBNRG5zUmVzcG9uZGVySW50ZXJmYWNlIHsKICAgICBpZiAo
aXQgIT0gYWRkcl9uYW1lX21hcF8uZW5kKCkpIHsKICAgICAgIGFkZHJfbmFtZV9tYXBfLmVyYXNl
KGl0KTsKICAgICB9Ci0gICAgY2FsbGJhY2soaXQgIT0gYWRkcl9uYW1lX21hcF8uZW5kKCkpOwor
ICAgIGJvb2wgcmVzdWx0ID0gaXQgIT0gYWRkcl9uYW1lX21hcF8uZW5kKCk7CisgICAgaW52b2tl
cl8uQXN5bmNJbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgdGhyZWFkXywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2ssIHJlc3VsdF0oKSB7IGNhbGxiYWNrKHJlc3Vs
dCk7IH0pOwogICB9CiAKICBwcml2YXRlOgogICB1aW50MzJfdCBuZXh0X2F2YWlsYWJsZV9pZF8g
PSAwOwogICBzdGQ6Om1hcDxydGM6OklQQWRkcmVzcywgc3RkOjpzdHJpbmc+IGFkZHJfbmFtZV9t
YXBfOworICBydGM6OlRocmVhZCogdGhyZWFkXzsKKyAgcnRjOjpBc3luY0ludm9rZXIgaW52b2tl
cl87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlbmV0d29yay5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFrZW5l
dHdvcmsuaAppbmRleCBkNTQyNmEzZTJjOTA5NTU0NTZkZjE3YzJkM2U2NmIyNWMxNmViMDc3Li5j
Yjg5MGVjNTgzZGM4NzZiZTZmNGQ0NGQyZWJkZjA4MDNjMDVhYjU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlbmV0d29y
ay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2Zha2VuZXR3b3JrLmgKQEAgLTgyLDE2ICs4MiwxNyBAQCBjbGFzcyBGYWtlTmV0d29ya01h
bmFnZXIgOiBwdWJsaWMgTmV0d29ya01hbmFnZXJCYXNlLCBwdWJsaWMgTWVzc2FnZUhhbmRsZXIg
ewogICAvLyBNZXNzYWdlSGFuZGxlciBpbnRlcmZhY2UuCiAgIHZpcnR1YWwgdm9pZCBPbk1lc3Nh
Z2UoTWVzc2FnZSogbXNnKSB7IERvVXBkYXRlTmV0d29ya3MoKTsgfQogCi0gIHZvaWQgQ3JlYXRl
TURuc1Jlc3BvbmRlcigpIHsKKyAgdm9pZCBDcmVhdGVNZG5zUmVzcG9uZGVyKCkgewogICAgIGlm
IChtZG5zX3Jlc3BvbmRlcl8gPT0gbnVsbHB0cikgewotICAgICAgbWRuc19yZXNwb25kZXJfID0g
YWJzbDo6bWFrZV91bmlxdWU8d2VicnRjOjpGYWtlTURuc1Jlc3BvbmRlcj4oKTsKKyAgICAgIG1k
bnNfcmVzcG9uZGVyXyA9CisgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8d2VicnRjOjpGYWtl
TWRuc1Jlc3BvbmRlcj4ocnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSk7CiAgICAgfQogICB9CiAKICAg
dXNpbmcgTmV0d29ya01hbmFnZXJCYXNlOjpzZXRfZW51bWVyYXRpb25fcGVybWlzc2lvbjsKICAg
dXNpbmcgTmV0d29ya01hbmFnZXJCYXNlOjpzZXRfZGVmYXVsdF9sb2NhbF9hZGRyZXNzZXM7CiAK
LSAgd2VicnRjOjpNRG5zUmVzcG9uZGVySW50ZXJmYWNlKiBHZXRNRG5zUmVzcG9uZGVyKCkgY29u
c3Qgb3ZlcnJpZGUgeworICB3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1kbnNS
ZXNwb25kZXIoKSBjb25zdCBvdmVycmlkZSB7CiAgICAgcmV0dXJuIG1kbnNfcmVzcG9uZGVyXy5n
ZXQoKTsKICAgfQogCkBAIC0xMzEsNyArMTMyLDcgQEAgY2xhc3MgRmFrZU5ldHdvcmtNYW5hZ2Vy
IDogcHVibGljIE5ldHdvcmtNYW5hZ2VyQmFzZSwgcHVibGljIE1lc3NhZ2VIYW5kbGVyIHsKICAg
SVBBZGRyZXNzIGRlZmF1bHRfbG9jYWxfaXB2NF9hZGRyZXNzXzsKICAgSVBBZGRyZXNzIGRlZmF1
bHRfbG9jYWxfaXB2Nl9hZGRyZXNzXzsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpGYWtl
TURuc1Jlc3BvbmRlcj4gbWRuc19yZXNwb25kZXJfOworICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRj
OjpGYWtlTWRuc1Jlc3BvbmRlcj4gbWRuc19yZXNwb25kZXJfOwogfTsKIAogfSAgLy8gbmFtZXNw
YWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvZmFrZXNzbGlkZW50aXR5LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmFrZXNzbGlkZW50aXR5LmNjCmluZGV4IDgw
YTNlNzg4ODc4NDQxZWQxZGNhNjg5Nzg2M2MzZGI5YjEyMTM2MmIuLjYyYWM5ZGQwMjA3ZDg1NmEw
MWI1MGU4N2E2MmFjMWEzMDljOWNkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2Zha2Vzc2xpZGVudGl0eS5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlc3Ns
aWRlbnRpdHkuY2MKQEAgLTI5LDggKzI5LDggQEAgRmFrZVNTTENlcnRpZmljYXRlOjpGYWtlU1NM
Q2VydGlmaWNhdGUoY29uc3QgRmFrZVNTTENlcnRpZmljYXRlJikgPSBkZWZhdWx0OwogCiBGYWtl
U1NMQ2VydGlmaWNhdGU6On5GYWtlU1NMQ2VydGlmaWNhdGUoKSA9IGRlZmF1bHQ7CiAKLUZha2VT
U0xDZXJ0aWZpY2F0ZSogRmFrZVNTTENlcnRpZmljYXRlOjpHZXRSZWZlcmVuY2UoKSBjb25zdCB7
Ci0gIHJldHVybiBuZXcgRmFrZVNTTENlcnRpZmljYXRlKCp0aGlzKTsKK3N0ZDo6dW5pcXVlX3B0
cjxTU0xDZXJ0aWZpY2F0ZT4gRmFrZVNTTENlcnRpZmljYXRlOjpDbG9uZSgpIGNvbnN0IHsKKyAg
cmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPEZha2VTU0xDZXJ0aWZpY2F0ZT4oKnRoaXMpOwogfQog
CiBzdGQ6OnN0cmluZyBGYWtlU1NMQ2VydGlmaWNhdGU6OlRvUEVNU3RyaW5nKCkgY29uc3QgewpA
QCAtODMsMTAgKzgzLDEwIEBAIEZha2VTU0xJZGVudGl0eTo6RmFrZVNTTElkZW50aXR5KGNvbnN0
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcGVtX3N0cmluZ3MpIHsKIH0KIAogRmFrZVNTTElk
ZW50aXR5OjpGYWtlU1NMSWRlbnRpdHkoY29uc3QgRmFrZVNTTENlcnRpZmljYXRlJiBjZXJ0KQot
ICAgIDogY2VydF9jaGFpbl8oYWJzbDo6bWFrZV91bmlxdWU8U1NMQ2VydENoYWluPigmY2VydCkp
IHt9CisgICAgOiBjZXJ0X2NoYWluXyhhYnNsOjptYWtlX3VuaXF1ZTxTU0xDZXJ0Q2hhaW4+KGNl
cnQuQ2xvbmUoKSkpIHt9CiAKIEZha2VTU0xJZGVudGl0eTo6RmFrZVNTTElkZW50aXR5KGNvbnN0
IEZha2VTU0xJZGVudGl0eSYgbykKLSAgICA6IGNlcnRfY2hhaW5fKG8uY2VydF9jaGFpbl8tPlVu
aXF1ZUNvcHkoKSkge30KKyAgICA6IGNlcnRfY2hhaW5fKG8uY2VydF9jaGFpbl8tPkNsb25lKCkp
IHt9CiAKIEZha2VTU0xJZGVudGl0eTo6fkZha2VTU0xJZGVudGl0eSgpID0gZGVmYXVsdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZmFrZXNzbGlkZW50aXR5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlc3NsaWRlbnRpdHkuaAppbmRleCA0NDk0YTUyNGVmYWI5
MDc5MTY0NjNmZmZiMGM3MTc4NjM2OTc0ZDFkLi5iMTljYmZiYjQ5MmNhMTZlNjZlYzEwNzViNjlm
YTVmOTU1ODRlYTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlc3NsaWRlbnRpdHkuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mYWtlc3NsaWRlbnRpdHkuaApA
QCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAK
KyNpbmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3NzbGlkZW50aXR5LmgiCiAKIG5hbWVzcGFjZSBydGMgewpAQCAtMjgsNyArMjksNyBAQCBjbGFz
cyBGYWtlU1NMQ2VydGlmaWNhdGUgOiBwdWJsaWMgU1NMQ2VydGlmaWNhdGUgewogICB+RmFrZVNT
TENlcnRpZmljYXRlKCkgb3ZlcnJpZGU7CiAKICAgLy8gU1NMQ2VydGlmaWNhdGUgaW1wbGVtZW50
YXRpb24uCi0gIEZha2VTU0xDZXJ0aWZpY2F0ZSogR2V0UmVmZXJlbmNlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4gQ2xvbmUoKSBjb25zdCBvdmVy
cmlkZTsKICAgc3RkOjpzdHJpbmcgVG9QRU1TdHJpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgdm9p
ZCBUb0RFUihCdWZmZXIqIGRlcl9idWZmZXIpIGNvbnN0IG92ZXJyaWRlOwogICBpbnQ2NF90IENl
cnRpZmljYXRlRXhwaXJhdGlvblRpbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGUuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxl
LmNjCmluZGV4IDYyMDI0MTE5ZmNjMTdhNDljNWE3ZDMzMWRhNDJlZjdlZDIyZjY1MDUuLmE3OTM1
MDA2NDZhZjYyM2Q2MDM4OTZiMjM0YTEwZDMxNjJhNmI2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGUuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZS5j
YwpAQCAtMTAsOCArMTAsNiBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvZmlsZS5oIgogCi0jaW5j
bHVkZSA8dXRpbGl0eT4KLQogbmFtZXNwYWNlIHJ0YyB7CiAKIEZpbGU6OkZpbGUoUGxhdGZvcm1G
aWxlIGZpbGUpIDogZmlsZV8oZmlsZSkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGUuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGUuaAppbmRleCA3NWZkOTNk
MTMxMDFlMjVmY2JkYzcyMjFkY2Y5YjlhNTY4ZDNhZjM0Li5iYzA5NzRhZTJhMGJiZjVmMTA4NDBl
ZDU1YWExYzlhMjlkZDk2ZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZS5oCkBAIC0xMSw4ICsxMSw4IEBA
CiAjaWZuZGVmIFJUQ19CQVNFX0ZJTEVfSF8KICNkZWZpbmUgUlRDX0JBU0VfRklMRV9IXwogCisj
aW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0KICNpbmNsdWRlIDxzdHJp
bmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxl
X3Bvc2l4LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZmlsZV9wb3NpeC5jYwppbmRleCBiMGZlYzlmOWZjZWEwMDE0Y2M3NmRkMzBmMDc3MDVm
OGE0MmExNzlmLi40OTIwMTkyODBjNTM1YWY2MTMyN2M2NTJlNDkxNGU3M2ZhOTcxZGVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9maWxlX3Bvc2l4LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL2ZpbGVfcG9zaXguY2MKQEAgLTgsMTcgKzgsMTYgQEAKICAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
ICAqLwogCi0jaW5jbHVkZSAicnRjX2Jhc2UvZmlsZS5oIgotCiAjaW5jbHVkZSA8ZXJybm8uaD4K
ICNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8dW5pc3RkLmg+Ci0KICNpbmNsdWRlIDxsaW1pdHM+CiAKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9maWxlLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvcGxhdGZvcm1fZmlsZS5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0
aW5nc3RyZWFtLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtLmNjCmluZGV4IGM5YTY2M2FhZmZmODY5ZjM3MDZm
MWZkZGRlMzg1MDJiNGQ4NDA1NTkuLmIxZGM1ZmY5OTgxNzg1MWMxYzk1MjFiNGUwODdiMDJhYmU1
MDkzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL2ZpbGVyb3RhdGluZ3N0cmVhbS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW0uY2MK
QEAgLTEzLDE3ICsxMywxNTkgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y3N0
ZGlvPgogI2luY2x1ZGUgPHN0cmluZz4KLQorI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpZiBkZWZp
bmVkKFdFQlJUQ19XSU4pCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgInJ0Y19iYXNl
L3N0cmluZ3V0aWxzLmgiCisjZWxzZQorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPHN5
cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYgIC8vIFdFQlJUQ19XSU4KKwor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9tYXRjaC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2ZpbGV1dGlscy5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L3BhdGh1dGlscy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIC8vIE5vdGU6IFdlIHVzZSBmcHJp
bnRmIGZvciBsb2dnaW5nIGluIHRoZSB3cml0ZSBwYXRocyBvZiB0aGlzIHN0cmVhbSB0byBhdm9p
ZAogLy8gaW5maW5pdGUgbG9vcHMgd2hlbiBsb2dnaW5nLgogCiBuYW1lc3BhY2UgcnRjIHsKIAor
bmFtZXNwYWNlIHsKKworc3RkOjpzdHJpbmcgQWRkVHJhaWxpbmdQYXRoRGVsaW1pdGVySWZOZWVk
ZWQoc3RkOjpzdHJpbmcgZGlyZWN0b3J5KTsKKworLy8gfGRpcnwgbXVzdCBoYXZlIGEgdHJhaWxp
bmcgZGVsaW1pdGVyLiB8cHJlZml4fCBtdXN0IG5vdCBpbmNsdWRlIHdpbGQgY2FyZAorLy8gY2hh
cmFjdGVycy4KK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRGaWxlc1dpdGhQcmVmaXgoY29u
c3Qgc3RkOjpzdHJpbmcmIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHByZWZpeCk7Citib29sIERlbGV0ZUZp
bGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpOworYm9vbCBNb3ZlRmlsZShjb25zdCBzdGQ6OnN0
cmluZyYgb2xkX2ZpbGUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBuZXdfZmlsZSk7Citib29sIElzRmls
ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSk7Citib29sIElzRm9sZGVyKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBmaWxlKTsKK2Fic2w6Om9wdGlvbmFsPHNpemVfdD4gR2V0RmlsZVNpemUoY29uc3Qgc3Rk
OjpzdHJpbmcmIGZpbGUpOworCisjaWYgZGVmaW5lZChXRUJSVENfV0lOKQorCitzdGQ6OnN0cmlu
ZyBBZGRUcmFpbGluZ1BhdGhEZWxpbWl0ZXJJZk5lZWRlZChzdGQ6OnN0cmluZyBkaXJlY3Rvcnkp
IHsKKyAgaWYgKGFic2w6OkVuZHNXaXRoKGRpcmVjdG9yeSwgIlxcIikpIHsKKyAgICByZXR1cm4g
ZGlyZWN0b3J5OworICB9CisgIHJldHVybiBkaXJlY3RvcnkgKyAiXFwiOworfQorCitzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gR2V0RmlsZXNXaXRoUHJlZml4KGNvbnN0IHN0ZDo6c3RyaW5nJiBk
aXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBwcmVmaXgpIHsKKyAgUlRDX0RDSEVDSyhhYnNsOjpFbmRzV2l0aChk
aXJlY3RvcnksICJcXCIpKTsKKyAgV0lOMzJfRklORF9EQVRBIGRhdGE7CisgIEhBTkRMRSBoYW5k
bGU7CisgIGhhbmRsZSA9IDo6RmluZEZpcnN0RmlsZShUb1V0ZjE2KGRpcmVjdG9yeSArIHByZWZp
eCArICcqJykuY19zdHIoKSwgJmRhdGEpOworICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExF
X1ZBTFVFKQorICAgIHJldHVybiB7fTsKKworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZmls
ZV9saXN0OworICBkbyB7CisgICAgZmlsZV9saXN0LmVtcGxhY2VfYmFjayhkaXJlY3RvcnkgKyBU
b1V0ZjgoZGF0YS5jRmlsZU5hbWUpKTsKKyAgfSB3aGlsZSAoOjpGaW5kTmV4dEZpbGUoaGFuZGxl
LCAmZGF0YSkgPT0gVFJVRSk7CisKKyAgOjpGaW5kQ2xvc2UoaGFuZGxlKTsKKyAgcmV0dXJuIGZp
bGVfbGlzdDsKK30KKworYm9vbCBEZWxldGVGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKSB7
CisgIHJldHVybiA6OkRlbGV0ZUZpbGUoVG9VdGYxNihmaWxlKS5jX3N0cigpKSAhPSAwOworfQor
Citib29sIE1vdmVGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvbGRfZmlsZSwgY29uc3Qgc3RkOjpz
dHJpbmcmIG5ld19maWxlKSB7CisgIHJldHVybiA6Ok1vdmVGaWxlKFRvVXRmMTYob2xkX2ZpbGUp
LmNfc3RyKCksIFRvVXRmMTYobmV3X2ZpbGUpLmNfc3RyKCkpICE9IDA7Cit9CisKK2Jvb2wgSXNG
aWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKSB7CisgIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RB
VEEgZGF0YSA9IHswfTsKKyAgaWYgKDAgPT0gOjpHZXRGaWxlQXR0cmlidXRlc0V4KFRvVXRmMTYo
ZmlsZSkuY19zdHIoKSwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmRhdGEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIChkYXRh
LmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpID09IDA7Cit9CisK
K2Jvb2wgSXNGb2xkZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUpIHsKKyAgV0lOMzJfRklMRV9B
VFRSSUJVVEVfREFUQSBkYXRhID0gezB9OworICBpZiAoMCA9PSA6OkdldEZpbGVBdHRyaWJ1dGVz
RXgoVG9VdGYxNihmaWxlKS5jX3N0cigpLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YSkpCisgICAgcmV0dXJuIGZhbHNlOworICBy
ZXR1cm4gKGRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkg
PT0KKyAgICAgICAgIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWTsKK30KKworYWJzbDo6b3B0aW9u
YWw8c2l6ZV90PiBHZXRGaWxlU2l6ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSkgeworICBXSU4z
Ml9GSUxFX0FUVFJJQlVURV9EQVRBIGRhdGEgPSB7MH07CisgIGlmICg6OkdldEZpbGVBdHRyaWJ1
dGVzRXgoVG9VdGYxNihmaWxlKS5jX3N0cigpLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGEpID09IDApCisgICAgcmV0dXJuIGFic2w6Om51
bGxvcHQ7CisgIHJldHVybiBkYXRhLm5GaWxlU2l6ZUxvdzsKK30KKworI2Vsc2UgIC8vIGRlZmlu
ZWQoV0VCUlRDX1dJTikKKworc3RkOjpzdHJpbmcgQWRkVHJhaWxpbmdQYXRoRGVsaW1pdGVySWZO
ZWVkZWQoc3RkOjpzdHJpbmcgZGlyZWN0b3J5KSB7CisgIGlmIChhYnNsOjpFbmRzV2l0aChkaXJl
Y3RvcnksICIvIikpIHsKKyAgICByZXR1cm4gZGlyZWN0b3J5OworICB9CisgIHJldHVybiBkaXJl
Y3RvcnkgKyAiLyI7Cit9CisKK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRGaWxlc1dpdGhQ
cmVmaXgoY29uc3Qgc3RkOjpzdHJpbmcmIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHByZWZpeCkgeworICBS
VENfRENIRUNLKGFic2w6OkVuZHNXaXRoKGRpcmVjdG9yeSwgIi8iKSk7CisgIERJUiogZGlyID0g
OjpvcGVuZGlyKGRpcmVjdG9yeS5jX3N0cigpKTsKKyAgaWYgKGRpciA9PSBudWxscHRyKQorICAg
IHJldHVybiB7fTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGZpbGVfbGlzdDsKKyAgZm9y
IChzdHJ1Y3QgZGlyZW50KiBkaXJlbnQgPSA6OnJlYWRkaXIoZGlyKTsgZGlyZW50OworICAgICAg
IGRpcmVudCA9IDo6cmVhZGRpcihkaXIpKSB7CisgICAgc3RkOjpzdHJpbmcgbmFtZSA9IGRpcmVu
dC0+ZF9uYW1lOworICAgIGlmIChuYW1lLmNvbXBhcmUoMCwgcHJlZml4LnNpemUoKSwgcHJlZml4
KSA9PSAwKSB7CisgICAgICBmaWxlX2xpc3QuZW1wbGFjZV9iYWNrKGRpcmVjdG9yeSArIG5hbWUp
OworICAgIH0KKyAgfQorICA6OmNsb3NlZGlyKGRpcik7CisgIHJldHVybiBmaWxlX2xpc3Q7Cit9
CisKK2Jvb2wgRGVsZXRlRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSkgeworICByZXR1cm4g
Ojp1bmxpbmsoZmlsZS5jX3N0cigpKSA9PSAwOworfQorCitib29sIE1vdmVGaWxlKGNvbnN0IHN0
ZDo6c3RyaW5nJiBvbGRfZmlsZSwgY29uc3Qgc3RkOjpzdHJpbmcmIG5ld19maWxlKSB7CisgIHJl
dHVybiA6OnJlbmFtZShvbGRfZmlsZS5jX3N0cigpLCBuZXdfZmlsZS5jX3N0cigpKSA9PSAwOwor
fQorCitib29sIElzRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSkgeworICBzdHJ1Y3Qgc3Rh
dCBzdDsKKyAgaW50IHJlcyA9IDo6c3RhdChmaWxlLmNfc3RyKCksICZzdCk7CisgIC8vIFRyZWF0
IHN5bWxpbmtzLCBuYW1lZCBwaXBlcywgZXRjLiBhbGwgYXMgZmlsZXMuCisgIHJldHVybiByZXMg
PT0gMCAmJiAhU19JU0RJUihzdC5zdF9tb2RlKTsKK30KKworYm9vbCBJc0ZvbGRlcihjb25zdCBz
dGQ6OnN0cmluZyYgZmlsZSkgeworICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgaW50IHJlcyA9IDo6c3Rh
dChmaWxlLmNfc3RyKCksICZzdCk7CisgIHJldHVybiByZXMgPT0gMCAmJiBTX0lTRElSKHN0LnN0
X21vZGUpOworfQorCithYnNsOjpvcHRpb25hbDxzaXplX3Q+IEdldEZpbGVTaXplKGNvbnN0IHN0
ZDo6c3RyaW5nJiBmaWxlKSB7CisgIHN0cnVjdCBzdGF0IHN0OworICBpZiAoOjpzdGF0KGZpbGUu
Y19zdHIoKSwgJnN0KSAhPSAwKQorICAgIHJldHVybiBhYnNsOjpudWxsb3B0OworICByZXR1cm4g
c3Quc3Rfc2l6ZTsKK30KKworI2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZQorCiBGaWxlUm90YXRp
bmdTdHJlYW06OkZpbGVSb3RhdGluZ1N0cmVhbShjb25zdCBzdGQ6OnN0cmluZyYgZGlyX3BhdGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgZmlsZV9wcmVmaXgpCiAgICAgOiBGaWxlUm90YXRpbmdTdHJlYW0oZGlyX3BhdGgsIGZpbGVf
cHJlZml4LCAwLCAwLCBrUmVhZCkge30KQEAgLTQ2LDcgKzE4OCw3IEBAIEZpbGVSb3RhdGluZ1N0
cmVhbTo6RmlsZVJvdGF0aW5nU3RyZWFtKGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXJfcGF0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhfZmlsZV9zaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9maWxl
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUgbW9kZSkKLSAg
ICA6IGRpcl9wYXRoXyhkaXJfcGF0aCksCisgICAgOiBkaXJfcGF0aF8oQWRkVHJhaWxpbmdQYXRo
RGVsaW1pdGVySWZOZWVkZWQoZGlyX3BhdGgpKSwKICAgICAgIGZpbGVfcHJlZml4XyhmaWxlX3By
ZWZpeCksCiAgICAgICBtb2RlXyhtb2RlKSwKICAgICAgIGZpbGVfc3RyZWFtXyhudWxscHRyKSwK
QEAgLTU1LDcgKzE5Nyw3IEBAIEZpbGVSb3RhdGluZ1N0cmVhbTo6RmlsZVJvdGF0aW5nU3RyZWFt
KGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXJfcGF0aCwKICAgICAgIHJvdGF0aW9uX2luZGV4XygwKSwK
ICAgICAgIGN1cnJlbnRfYnl0ZXNfd3JpdHRlbl8oMCksCiAgICAgICBkaXNhYmxlX2J1ZmZlcmlu
Z18oZmFsc2UpIHsKLSAgUlRDX0RDSEVDSyhGaWxlc3lzdGVtOjpJc0ZvbGRlcihkaXJfcGF0aCkp
OworICBSVENfRENIRUNLKElzRm9sZGVyKGRpcl9wYXRoKSk7CiAgIHN3aXRjaCAobW9kZSkgewog
ICAgIGNhc2Uga1dyaXRlOiB7CiAgICAgICBmaWxlX25hbWVzXy5jbGVhcigpOwpAQCAtNjYsNyAr
MjA4LDcgQEAgRmlsZVJvdGF0aW5nU3RyZWFtOjpGaWxlUm90YXRpbmdTdHJlYW0oY29uc3Qgc3Rk
OjpzdHJpbmcmIGRpcl9wYXRoLAogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Uga1JlYWQ6
IHsKLSAgICAgIGZpbGVfbmFtZXNfID0gR2V0RmlsZXNXaXRoUHJlZml4KCk7CisgICAgICBmaWxl
X25hbWVzXyA9IEdldEZpbGVzV2l0aFByZWZpeChkaXJfcGF0aF8sIGZpbGVfcHJlZml4Xyk7CiAg
ICAgICBzdGQ6OnNvcnQoZmlsZV9uYW1lc18uYmVnaW4oKSwgZmlsZV9uYW1lc18uZW5kKCkpOwog
ICAgICAgaWYgKGZpbGVfbmFtZXNfLnNpemUoKSA+IDApIHsKICAgICAgICAgLy8gfGZpbGVfbmFt
ZXNffCBpcyBzb3J0ZWQgbmV3ZXN0IGZpcnN0LCBzbyByZWFkIGZyb20gdGhlIGVuZC4KQEAgLTE4
NywxMSArMzI5LDcgQEAgYm9vbCBGaWxlUm90YXRpbmdTdHJlYW06OkdldFNpemUoc2l6ZV90KiBz
aXplKSBjb25zdCB7CiAgICpzaXplID0gMDsKICAgc2l6ZV90IHRvdGFsX3NpemUgPSAwOwogICBm
b3IgKGF1dG8gZmlsZV9uYW1lIDogZmlsZV9uYW1lc18pIHsKLSAgICBQYXRobmFtZSBwYXRobmFt
ZShmaWxlX25hbWUpOwotICAgIHNpemVfdCBmaWxlX3NpemUgPSAwOwotICAgIGlmIChGaWxlc3lz
dGVtOjpHZXRGaWxlU2l6ZShmaWxlX25hbWUsICZmaWxlX3NpemUpKSB7Ci0gICAgICB0b3RhbF9z
aXplICs9IGZpbGVfc2l6ZTsKLSAgICB9CisgICAgdG90YWxfc2l6ZSArPSBHZXRGaWxlU2l6ZShm
aWxlX25hbWUpLnZhbHVlX29yKDApOwogICB9CiAgICpzaXplID0gdG90YWxfc2l6ZTsKICAgcmV0
dXJuIHRydWU7CkBAIC0yMDksOSArMzQ3LDEwIEBAIGJvb2wgRmlsZVJvdGF0aW5nU3RyZWFtOjpP
cGVuKCkgewogICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBrV3JpdGU6IHsKICAgICAgIC8v
IERlbGV0ZSBleGlzdGluZyBmaWxlcyB3aGVuIG9wZW5pbmcgZm9yIHdyaXRlLgotICAgICAgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1hdGNoaW5nX2ZpbGVzID0gR2V0RmlsZXNXaXRoUHJlZml4
KCk7Ci0gICAgICBmb3IgKGF1dG8gbWF0Y2hpbmdfZmlsZSA6IG1hdGNoaW5nX2ZpbGVzKSB7Ci0g
ICAgICAgIGlmICghRmlsZXN5c3RlbTo6RGVsZXRlRmlsZShtYXRjaGluZ19maWxlKSkgeworICAg
ICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1hdGNoaW5nX2ZpbGVzID0KKyAgICAgICAgICBH
ZXRGaWxlc1dpdGhQcmVmaXgoZGlyX3BhdGhfLCBmaWxlX3ByZWZpeF8pOworICAgICAgZm9yIChj
b25zdCBhdXRvJiBtYXRjaGluZ19maWxlIDogbWF0Y2hpbmdfZmlsZXMpIHsKKyAgICAgICAgaWYg
KCFEZWxldGVGaWxlKG1hdGNoaW5nX2ZpbGUpKSB7CiAgICAgICAgICAgc3RkOjpmcHJpbnRmKHN0
ZGVyciwgIkZhaWxlZCB0byBkZWxldGU6ICVzXG4iLCBtYXRjaGluZ19maWxlLmNfc3RyKCkpOwog
ICAgICAgICB9CiAgICAgICB9CkBAIC0yODIsMTYgKzQyMSwxNiBAQCB2b2lkIEZpbGVSb3RhdGlu
Z1N0cmVhbTo6Um90YXRlRmlsZXMoKSB7CiAgIC8vIFNlZSBoZWFkZXIgZmlsZSBjb21tZW50cyBm
b3IgZXhhbXBsZS4KICAgUlRDX0RDSEVDS19MVChyb3RhdGlvbl9pbmRleF8sIGZpbGVfbmFtZXNf
LnNpemUoKSk7CiAgIHN0ZDo6c3RyaW5nIGZpbGVfdG9fZGVsZXRlID0gZmlsZV9uYW1lc19bcm90
YXRpb25faW5kZXhfXTsKLSAgaWYgKEZpbGVzeXN0ZW06OklzRmlsZShmaWxlX3RvX2RlbGV0ZSkp
IHsKLSAgICBpZiAoIUZpbGVzeXN0ZW06OkRlbGV0ZUZpbGUoZmlsZV90b19kZWxldGUpKSB7Cisg
IGlmIChJc0ZpbGUoZmlsZV90b19kZWxldGUpKSB7CisgICAgaWYgKCFEZWxldGVGaWxlKGZpbGVf
dG9fZGVsZXRlKSkgewogICAgICAgc3RkOjpmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBkZWxl
dGU6ICVzXG4iLCBmaWxlX3RvX2RlbGV0ZS5jX3N0cigpKTsKICAgICB9CiAgIH0KICAgZm9yIChh
dXRvIGkgPSByb3RhdGlvbl9pbmRleF87IGkgPiAwOyAtLWkpIHsKICAgICBzdGQ6OnN0cmluZyBy
b3RhdGVkX25hbWUgPSBmaWxlX25hbWVzX1tpXTsKICAgICBzdGQ6OnN0cmluZyB1bnJvdGF0ZWRf
bmFtZSA9IGZpbGVfbmFtZXNfW2kgLSAxXTsKLSAgICBpZiAoRmlsZXN5c3RlbTo6SXNGaWxlKHVu
cm90YXRlZF9uYW1lKSkgewotICAgICAgaWYgKCFGaWxlc3lzdGVtOjpNb3ZlRmlsZSh1bnJvdGF0
ZWRfbmFtZSwgcm90YXRlZF9uYW1lKSkgeworICAgIGlmIChJc0ZpbGUodW5yb3RhdGVkX25hbWUp
KSB7CisgICAgICBpZiAoIU1vdmVGaWxlKHVucm90YXRlZF9uYW1lLCByb3RhdGVkX25hbWUpKSB7
CiAgICAgICAgIHN0ZDo6ZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbW92ZTogJXMgdG8gJXNc
biIsCiAgICAgICAgICAgICAgICAgICAgICB1bnJvdGF0ZWRfbmFtZS5jX3N0cigpLCByb3RhdGVk
X25hbWUuY19zdHIoKSk7CiAgICAgICB9CkBAIC0zMDIsMjYgKzQ0MSw2IEBAIHZvaWQgRmlsZVJv
dGF0aW5nU3RyZWFtOjpSb3RhdGVGaWxlcygpIHsKICAgT25Sb3RhdGlvbigpOwogfQogCi1zdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gRmlsZVJvdGF0aW5nU3RyZWFtOjpHZXRGaWxlc1dpdGhQcmVm
aXgoKSBjb25zdCB7Ci0gIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBmaWxlczsKLSAgLy8gSXRl
cmF0ZSBvdmVyIHRoZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LgotICBEaXJlY3RvcnlJdGVyYXRv
ciBpdDsKLSAgUGF0aG5hbWUgZGlyX3BhdGg7Ci0gIGRpcl9wYXRoLlNldEZvbGRlcihkaXJfcGF0
aF8pOwotICBpZiAoIWl0Lkl0ZXJhdGUoZGlyX3BhdGgpKSB7Ci0gICAgcmV0dXJuIGZpbGVzOwot
ICB9Ci0gIGRvIHsKLSAgICBzdGQ6OnN0cmluZyBjdXJyZW50X25hbWUgPSBpdC5OYW1lKCk7Ci0g
ICAgaWYgKGN1cnJlbnRfbmFtZS5zaXplKCkgJiYgIWl0LklzRGlyZWN0b3J5KCkgJiYKLSAgICAg
ICAgY3VycmVudF9uYW1lLmNvbXBhcmUoMCwgZmlsZV9wcmVmaXhfLnNpemUoKSwgZmlsZV9wcmVm
aXhfKSA9PSAwKSB7Ci0gICAgICBQYXRobmFtZSBwYXRoKGRpcl9wYXRoXywgY3VycmVudF9uYW1l
KTsKLSAgICAgIGZpbGVzLnB1c2hfYmFjayhwYXRoLnBhdGhuYW1lKCkpOwotICAgIH0KLSAgfSB3
aGlsZSAoaXQuTmV4dCgpKTsKLSAgcmV0dXJuIGZpbGVzOwotfQotCiBzdGQ6OnN0cmluZyBGaWxl
Um90YXRpbmdTdHJlYW06OkdldEZpbGVQYXRoKHNpemVfdCBpbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9maWxlcykgY29uc3Qgewog
ICBSVENfRENIRUNLX0xUKGluZGV4LCBudW1fZmlsZXMpOwpAQCAtMzMzLDggKzQ1Miw3IEBAIHN0
ZDo6c3RyaW5nIEZpbGVSb3RhdGluZ1N0cmVhbTo6R2V0RmlsZVBhdGgoc2l6ZV90IGluZGV4LAog
ICBSVENfRENIRUNLX0xUKDEgKyBtYXhfZGlnaXRzLCBidWZmZXJfc2l6ZSk7CiAgIHN0ZDo6c25w
cmludGYoZmlsZV9wb3N0Zml4LCBidWZmZXJfc2l6ZSwgIl8lMCp6dSIsIG1heF9kaWdpdHMsIGlu
ZGV4KTsKIAotICBQYXRobmFtZSBmaWxlX3BhdGgoZGlyX3BhdGhfLCBmaWxlX3ByZWZpeF8gKyBm
aWxlX3Bvc3RmaXgpOwotICByZXR1cm4gZmlsZV9wYXRoLnBhdGhuYW1lKCk7CisgIHJldHVybiBk
aXJfcGF0aF8gKyBmaWxlX3ByZWZpeF8gKyBmaWxlX3Bvc3RmaXg7CiB9CiAKIENhbGxTZXNzaW9u
RmlsZVJvdGF0aW5nU3RyZWFtOjpDYWxsU2Vzc2lvbkZpbGVSb3RhdGluZ1N0cmVhbSgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2ZpbGVyb3RhdGluZ3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtLmgKaW5kZXggNGRhYjM0NTVkYjAx
OTNiMjEzMzJhZDVlMTNhMDI4NTA0MjYzMWUwOC4uYzc1ZWUxNTNiNmU0YTYwZTRjMzRmODc1NGUw
ZjE2YTIxM2E4NzVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3Ry
ZWFtLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYgUlRDX0JBU0VfRklMRVJPVEFUSU5HU1RS
RUFNX0hfCiAjZGVmaW5lIFJUQ19CQVNFX0ZJTEVST1RBVElOR1NUUkVBTV9IXwogCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNs
dWRlIDx2ZWN0b3I+CkBAIC0xMDEsOCArMTAyLDYgQEAgY2xhc3MgRmlsZVJvdGF0aW5nU3RyZWFt
IDogcHVibGljIFN0cmVhbUludGVyZmFjZSB7CiAgIC8vIGNyZWF0ZSBuZXcgZmlsZV8wCiAgIHZv
aWQgUm90YXRlRmlsZXMoKTsKIAotICAvLyBSZXR1cm5zIGEgbGlzdCBvZiBmaWxlIG5hbWVzIGlu
IHRoZSBkaXJlY3RvcnkgYmVnaW5uaW5nIHdpdGggdGhlIHByZWZpeC4KLSAgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IEdldEZpbGVzV2l0aFByZWZpeCgpIGNvbnN0OwogICAvLyBQcml2YXRlIHZl
cnNpb24gb2YgR2V0RmlsZVBhdGguCiAgIHN0ZDo6c3RyaW5nIEdldEZpbGVQYXRoKHNpemVfdCBp
bmRleCwgc2l6ZV90IG51bV9maWxlcykgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGVyb3RhdGluZ3N0cmVh
bV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2ZpbGVyb3RhdGluZ3N0cmVhbV91bml0dGVzdC5jYwppbmRleCAxOTA1NTE2MmZk
MDE5NDVkNWJjYWRmMmMxZjdkOWJhMDlmNTM2Yzg5Li4xNzJiZTU3ZWFjYzY5ZDQ4YzljMjVmMGU1
ODc4NDE4NmI5YzcxY2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9maWxlcm90YXRpbmdzdHJlYW1fdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmls
ZXJvdGF0aW5nc3RyZWFtX3VuaXR0ZXN0LmNjCkBAIC0xMyw5ICsxMyw3IEBACiAjaW5jbHVkZSAi
cnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
ZmlsZXV0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9wYXRodXRpbHMuaCIKICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5o
IgogCiBuYW1lc3BhY2UgcnRjIHsKQEAgLTQ2LDEyICs0NCwxNSBAQCBjbGFzcyBNQVlCRV9GaWxl
Um90YXRpbmdTdHJlYW1UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgIHZvaWQgSW5p
dChjb25zdCBzdGQ6OnN0cmluZyYgZGlyX25hbWUsCiAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgZmlsZV9wcmVmaXgsCiAgICAgICAgICAgICBzaXplX3QgbWF4X2ZpbGVfc2l6ZSwKLSAg
ICAgICAgICAgIHNpemVfdCBudW1fbG9nX2ZpbGVzKSB7CisgICAgICAgICAgICBzaXplX3QgbnVt
X2xvZ19maWxlcywKKyAgICAgICAgICAgIGJvb2wgZW5zdXJlX3RyYWlsaW5nX2RlbGltaXRlciA9
IHRydWUpIHsKICAgICBkaXJfcGF0aF8gPSB3ZWJydGM6OnRlc3Q6Ok91dHB1dFBhdGgoKTsKIAog
ICAgIC8vIEFwcGVuZCBwZXItdGVzdCBvdXRwdXQgcGF0aCBpbiBvcmRlciB0byBydW4gd2l0aGlu
IGd0ZXN0IHBhcmFsbGVsLgogICAgIGRpcl9wYXRoXy5hcHBlbmQoZGlyX25hbWUpOwotICAgIGRp
cl9wYXRoXy5wdXNoX2JhY2soUGF0aG5hbWU6OkRlZmF1bHRGb2xkZXJEZWxpbWl0ZXIoKSk7Cisg
ICAgaWYgKGVuc3VyZV90cmFpbGluZ19kZWxpbWl0ZXIpIHsKKyAgICAgIGRpcl9wYXRoXy5hcHBl
bmQod2VicnRjOjp0ZXN0OjprUGF0aERlbGltaXRlcik7CisgICAgfQogICAgIEFTU0VSVF9UUlVF
KHdlYnJ0Yzo6dGVzdDo6Q3JlYXRlRGlyKGRpcl9wYXRoXykpOwogICAgIHN0cmVhbV8ucmVzZXQo
bmV3IEZpbGVSb3RhdGluZ1N0cmVhbShkaXJfcGF0aF8sIGZpbGVfcHJlZml4LCBtYXhfZmlsZV9z
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fbG9nX2Zp
bGVzKSk7CkBAIC0xNTksMTIgKzE2MCwxMiBAQCBURVNUX0YoTUFZQkVfRmlsZVJvdGF0aW5nU3Ry
ZWFtVGVzdCwgV3JpdGVBbmRSZWFkKSB7CiAgIH0KICAgLy8gQ2hlY2sgdGhhdCBleGFjdGx5IHRo
cmVlIGZpbGVzIGV4aXN0LgogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShtZXNz
YWdlcyk7ICsraSkgewotICAgIEVYUEVDVF9UUlVFKEZpbGVzeXN0ZW06OklzRmlsZShzdHJlYW1f
LT5HZXRGaWxlUGF0aChpKSkpOworICAgIEVYUEVDVF9UUlVFKHdlYnJ0Yzo6dGVzdDo6RmlsZUV4
aXN0cyhzdHJlYW1fLT5HZXRGaWxlUGF0aChpKSkpOwogICB9CiAgIHN0ZDo6c3RyaW5nIG1lc3Nh
Z2UoImQiKTsKICAgV3JpdGVBbmRGbHVzaChtZXNzYWdlLmNfc3RyKCksIG1lc3NhZ2Uuc2l6ZSgp
KTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUobWVzc2FnZXMpOyArK2kpIHsK
LSAgICBFWFBFQ1RfVFJVRShGaWxlc3lzdGVtOjpJc0ZpbGUoc3RyZWFtXy0+R2V0RmlsZVBhdGgo
aSkpKTsKKyAgICBFWFBFQ1RfVFJVRSh3ZWJydGM6OnRlc3Q6OkZpbGVFeGlzdHMoc3RyZWFtXy0+
R2V0RmlsZVBhdGgoaSkpKTsKICAgfQogICAvLyBUT0RPKHRrY2hpbik6IE1heWJlIGNoZWNrIGFs
bCB0aGUgZmlsZXMgaW4gdGhlIGRpci4KIApAQCAtMTc0LDYgKzE3NSw1MyBAQCBURVNUX0YoTUFZ
QkVfRmlsZVJvdGF0aW5nU3RyZWFtVGVzdCwgV3JpdGVBbmRSZWFkKSB7CiAgICAgICAgICAgICAg
ICAgICAgZGlyX3BhdGhfLCBrRmlsZVByZWZpeCk7CiB9CiAKKy8vIFRlc3RzIHRoYXQgYSB3cml0
ZSBvcGVyYXRpb24gKHdpdGggZGlyIG5hbWUgd2l0aG91dCBkZWxpbWl0ZXIpIGZvbGxvd2VkIGJ5
IGEKKy8vIHJlYWQgcmV0dXJucyB0aGUgZXhwZWN0ZWQgZGF0YSBhbmQgd3JpdGVzIHRvIHRoZSBl
eHBlY3RlZCBmaWxlcy4KK1RFU1RfRihNQVlCRV9GaWxlUm90YXRpbmdTdHJlYW1UZXN0LCBXcml0
ZVdpdGhvdXREZWxpbWl0ZXJBbmRSZWFkKSB7CisgIEluaXQoIkZpbGVSb3RhdGluZ1N0cmVhbVRl
c3RXcml0ZVdpdGhvdXREZWxpbWl0ZXJBbmRSZWFkIiwga0ZpbGVQcmVmaXgsCisgICAgICAga01h
eEZpbGVTaXplLCAzLAorICAgICAgIC8qIGVuc3VyZV90cmFpbGluZ19kZWxpbWl0ZXIqLyBmYWxz
ZSk7CisKKyAgQVNTRVJUX1RSVUUoc3RyZWFtXy0+T3BlbigpKTsKKyAgLy8gVGhlIHRlc3QgaXMg
c2V0IHVwIHRvIGNyZWF0ZSB0aHJlZSBsb2cgZmlsZXMgb2YgbGVuZ3RoIDIuIFdyaXRlIGFuZCBj
aGVjaworICAvLyBjb250ZW50cy4KKyAgc3RkOjpzdHJpbmcgbWVzc2FnZXNbM10gPSB7ImFhIiwg
ImJiIiwgImNjIn07CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKG1lc3NhZ2Vz
KTsgKytpKSB7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UgPSBtZXNzYWdlc1tpXTsK
KyAgICBXcml0ZUFuZEZsdXNoKG1lc3NhZ2UuY19zdHIoKSwgbWVzc2FnZS5zaXplKCkpOworICB9
CisgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UoImQiKTsKKyAgV3JpdGVBbmRGbHVzaChtZXNzYWdlLmNf
c3RyKCksIG1lc3NhZ2Uuc2l6ZSgpKTsKKworICAvLyBSZW9wZW4gZm9yIHJlYWQuCisgIHN0ZDo6
c3RyaW5nIGV4cGVjdGVkX2NvbnRlbnRzKCJiYmNjZCIpOworICBWZXJpZnlTdHJlYW1SZWFkKGV4
cGVjdGVkX2NvbnRlbnRzLmNfc3RyKCksIGV4cGVjdGVkX2NvbnRlbnRzLnNpemUoKSwKKyAgICAg
ICAgICAgICAgICAgICBkaXJfcGF0aF8gKyB3ZWJydGM6OnRlc3Q6OmtQYXRoRGVsaW1pdGVyLCBr
RmlsZVByZWZpeCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSB3cml0ZSBvcGVyYXRpb24gZm9sbG93
ZWQgYnkgYSByZWFkICh3aXRob3V0IHRyYWlsaW5nIGRlbGltaXRlcikKKy8vIHJldHVybnMgdGhl
IGV4cGVjdGVkIGRhdGEgYW5kIHdyaXRlcyB0byB0aGUgZXhwZWN0ZWQgZmlsZXMuCitURVNUX0Yo
TUFZQkVfRmlsZVJvdGF0aW5nU3RyZWFtVGVzdCwgV3JpdGVBbmRSZWFkV2l0aG91dERlbGltaXRl
cikgeworICBJbml0KCJGaWxlUm90YXRpbmdTdHJlYW1UZXN0V3JpdGVBbmRSZWFkV2l0aG91dERl
bGltaXRlciIsIGtGaWxlUHJlZml4LAorICAgICAgIGtNYXhGaWxlU2l6ZSwgMyk7CisKKyAgQVNT
RVJUX1RSVUUoc3RyZWFtXy0+T3BlbigpKTsKKyAgLy8gVGhlIHRlc3QgaXMgc2V0IHVwIHRvIGNy
ZWF0ZSB0aHJlZSBsb2cgZmlsZXMgb2YgbGVuZ3RoIDIuIFdyaXRlIGFuZCBjaGVjaworICAvLyBj
b250ZW50cy4KKyAgc3RkOjpzdHJpbmcgbWVzc2FnZXNbM10gPSB7ImFhIiwgImJiIiwgImNjIn07
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKG1lc3NhZ2VzKTsgKytpKSB7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UgPSBtZXNzYWdlc1tpXTsKKyAgICBXcml0ZUFu
ZEZsdXNoKG1lc3NhZ2UuY19zdHIoKSwgbWVzc2FnZS5zaXplKCkpOworICB9CisgIHN0ZDo6c3Ry
aW5nIG1lc3NhZ2UoImQiKTsKKyAgV3JpdGVBbmRGbHVzaChtZXNzYWdlLmNfc3RyKCksIG1lc3Nh
Z2Uuc2l6ZSgpKTsKKworICAvLyBSZW9wZW4gZm9yIHJlYWQuCisgIHN0ZDo6c3RyaW5nIGV4cGVj
dGVkX2NvbnRlbnRzKCJiYmNjZCIpOworICBWZXJpZnlTdHJlYW1SZWFkKGV4cGVjdGVkX2NvbnRl
bnRzLmNfc3RyKCksIGV4cGVjdGVkX2NvbnRlbnRzLnNpemUoKSwKKyAgICAgICAgICAgICAgICAg
ICBkaXJfcGF0aF8uc3Vic3RyKDAsIGRpcl9wYXRoXy5zaXplKCkgLSAxKSwga0ZpbGVQcmVmaXgp
OworfQorCiAvLyBUZXN0cyB0aGF0IHdyaXRpbmcgZGF0YSBncmVhdGVyIHRoYW4gdGhlIHRvdGFs
IGNhcGFjaXR5IG9mIHRoZSBmaWxlcwogLy8gb3ZlcndyaXRlcyB0aGUgZmlsZXMgY29ycmVjdGx5
IGFuZCBpcyByZWFkIGNvcnJlY3RseSBhZnRlci4KIFRFU1RfRihNQVlCRV9GaWxlUm90YXRpbmdT
dHJlYW1UZXN0LCBXcml0ZU92ZXJmbG93QW5kUmVhZCkgewpAQCAtMjE4LDcgKzI2Niw3IEBAIGNs
YXNzIE1BWUJFX0NhbGxTZXNzaW9uRmlsZVJvdGF0aW5nU3RyZWFtVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgewogCiAgICAgLy8gQXBwZW5kIHBlci10ZXN0IG91dHB1dCBwYXRoIGluIG9y
ZGVyIHRvIHJ1biB3aXRoaW4gZ3Rlc3QgcGFyYWxsZWwuCiAgICAgZGlyX3BhdGhfLmFwcGVuZChk
aXJfbmFtZSk7Ci0gICAgZGlyX3BhdGhfLnB1c2hfYmFjayhQYXRobmFtZTo6RGVmYXVsdEZvbGRl
ckRlbGltaXRlcigpKTsKKyAgICBkaXJfcGF0aF8uYXBwZW5kKHdlYnJ0Yzo6dGVzdDo6a1BhdGhE
ZWxpbWl0ZXIpOwogICAgIEFTU0VSVF9UUlVFKHdlYnJ0Yzo6dGVzdDo6Q3JlYXRlRGlyKGRpcl9w
YXRoXykpOwogICAgIHN0cmVhbV8ucmVzZXQoCiAgICAgICAgIG5ldyBDYWxsU2Vzc2lvbkZpbGVS
b3RhdGluZ1N0cmVhbShkaXJfcGF0aF8sIG1heF90b3RhbF9sb2dfc2l6ZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmls
ZXV0aWxzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZmlsZXV0aWxzLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDgzZjk3
ZmFlNGMxY2EwNjkxNDc0NTUwOWJjMDQ3MTc4YWU5M2ZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2ZpbGV1dGlscy5jYworKysgL2Rldi9udWxsCkBAIC0xLDEzMCAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDA0IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4g
QW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBm
b3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3Qg
YXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAicnRjX2Jhc2UvZmlsZXV0aWxz
LmgiCi0KLSNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9wYXRodXRpbHMuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9zdHJpbmd1dGlscy5oIgotCi0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotI2luY2x1
ZGUgInJ0Y19iYXNlL3dpbjMyZmlsZXN5c3RlbS5oIgotI2Vsc2UKLSNpbmNsdWRlICJydGNfYmFz
ZS91bml4ZmlsZXN5c3RlbS5oIgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChXRUJSVENfV0lOKQot
I2RlZmluZSBNQVhfUEFUSCAyNjAKLSNlbmRpZgotCi1uYW1lc3BhY2UgcnRjIHsKLQotLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIERpcmVjdG9yeSBJdGVyYXRvciAgIC8vCi0vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyBBIERpcmVjdG9yeUl0ZXJhdG9yIGlzIGNyZWF0ZWQg
d2l0aCBhIGdpdmVuIGRpcmVjdG9yeS4gSXQgb3JpZ2luYWxseSBwb2ludHMKLS8vIHRvIHRoZSBm
aXJzdCBmaWxlIGluIHRoZSBkaXJlY3RvcnksIGFuZCBjYW4gYmUgYWR2YW5lY2Qgd2l0aCBOZXh0
KCkuIFRoaXMKLS8vIGFsbG93cyB5b3UgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IGVhY2ggZmls
ZS4KLQotLy8gQ29uc3RydWN0b3IKLURpcmVjdG9yeUl0ZXJhdG9yOjpEaXJlY3RvcnlJdGVyYXRv
cigpCi0jaWZkZWYgV0VCUlRDX1dJTgotICAgIDogaGFuZGxlXyhJTlZBTElEX0hBTkRMRV9WQUxV
RSkgewotI2Vsc2UKLSAgICA6IGRpcl8obnVsbHB0ciksCi0gICAgICBkaXJlbnRfKG51bGxwdHIp
ewotI2VuZGlmCi19Ci0KLS8vIERlc3RydWN0b3IKLURpcmVjdG9yeUl0ZXJhdG9yOjp+RGlyZWN0
b3J5SXRlcmF0b3IoKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotICBpZiAoaGFuZGxlXyAh
PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICA6OkZpbmRDbG9zZShoYW5kbGVfKTsKLSNlbHNl
Ci0gIGlmIChkaXJfKQotICAgIGNsb3NlZGlyKGRpcl8pOwotI2VuZGlmCi19Ci0KLS8vIFN0YXJ0
cyB0cmF2ZXJzaW5nIGEgZGlyZWN0b3J5LgotLy8gZGlyIGlzIHRoZSBkaXJlY3RvcnkgdG8gdHJh
dmVyc2UKLS8vIHJldHVybnMgdHJ1ZSBpZiB0aGUgZGlyZWN0b3J5IGV4aXN0cyBhbmQgaXMgdmFs
aWQKLWJvb2wgRGlyZWN0b3J5SXRlcmF0b3I6Okl0ZXJhdGUoY29uc3QgUGF0aG5hbWUmIGRpcikg
ewotICBkaXJlY3RvcnlfID0gZGlyLnBhdGhuYW1lKCk7Ci0jaWYgZGVmaW5lZChXRUJSVENfV0lO
KQotICBpZiAoaGFuZGxlXyAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICA6OkZpbmRDbG9z
ZShoYW5kbGVfKTsKLSAgc3RkOjpzdHJpbmcgZCA9IGRpci5wYXRobmFtZSgpICsgJyonOwotICBo
YW5kbGVfID0gOjpGaW5kRmlyc3RGaWxlKFRvVXRmMTYoZCkuY19zdHIoKSwgJmRhdGFfKTsKLSAg
aWYgKGhhbmRsZV8gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgcmV0dXJuIGZhbHNlOwot
I2Vsc2UKLSAgaWYgKGRpcl8gIT0gbnVsbHB0cikKLSAgICBjbG9zZWRpcihkaXJfKTsKLSAgZGly
XyA9IDo6b3BlbmRpcihkaXJlY3RvcnlfLmNfc3RyKCkpOwotICBpZiAoZGlyXyA9PSBudWxscHRy
KQotICAgIHJldHVybiBmYWxzZTsKLSAgZGlyZW50XyA9IHJlYWRkaXIoZGlyXyk7Ci0gIGlmIChk
aXJlbnRfID09IG51bGxwdHIpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmICg6OnN0YXQoc3Rk
OjpzdHJpbmcoZGlyZWN0b3J5XyArIE5hbWUoKSkuY19zdHIoKSwgJnN0YXRfKSAhPSAwKQotICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZgotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gQWR2YW5jZXMg
dG8gdGhlIG5leHQgZmlsZQotLy8gcmV0dXJucyB0cnVlIGlmIHRoZXJlIHdlcmUgbW9yZSBmaWxl
cyBpbiB0aGUgZGlyZWN0b3J5LgotYm9vbCBEaXJlY3RvcnlJdGVyYXRvcjo6TmV4dCgpIHsKLSNp
ZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0gIHJldHVybiA6OkZpbmROZXh0RmlsZShoYW5kbGVfLCAm
ZGF0YV8pID09IFRSVUU7Ci0jZWxzZQotICBkaXJlbnRfID0gOjpyZWFkZGlyKGRpcl8pOwotICBp
ZiAoZGlyZW50XyA9PSBudWxscHRyKQotICAgIHJldHVybiBmYWxzZTsKLQotICByZXR1cm4gOjpz
dGF0KHN0ZDo6c3RyaW5nKGRpcmVjdG9yeV8gKyBOYW1lKCkpLmNfc3RyKCksICZzdGF0XykgPT0g
MDsKLSNlbmRpZgotfQotCi0vLyByZXR1cm5zIHRydWUgaWYgdGhlIGZpbGUgY3VycmVudGx5IHBv
aW50ZWQgdG8gaXMgYSBkaXJlY3RvcnkKLWJvb2wgRGlyZWN0b3J5SXRlcmF0b3I6OklzRGlyZWN0
b3J5KCkgY29uc3QgewotI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLSAgcmV0dXJuIChkYXRhXy5k
d0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSAhPSBGQUxTRTsKLSNl
bHNlCi0gIHJldHVybiBTX0lTRElSKHN0YXRfLnN0X21vZGUpOwotI2VuZGlmCi19Ci0KLS8vIHJl
dHVybnMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgY3VycmVudGx5IHBvaW50ZWQgdG8KLXN0ZDo6c3Ry
aW5nIERpcmVjdG9yeUl0ZXJhdG9yOjpOYW1lKCkgY29uc3QgewotI2lmIGRlZmluZWQoV0VCUlRD
X1dJTikKLSAgcmV0dXJuIFRvVXRmOChkYXRhXy5jRmlsZU5hbWUpOwotI2Vsc2UKLSAgUlRDX0RD
SEVDSyhkaXJlbnRfKTsKLSAgcmV0dXJuIGRpcmVudF8tPmRfbmFtZTsKLSNlbmRpZgotfQotCi1G
aWxlc3lzdGVtSW50ZXJmYWNlKiBGaWxlc3lzdGVtOjpHZXRGaWxlc3lzdGVtKCkgewotI2lmIGRl
ZmluZWQoV0VCUlRDX1dJTikKLSAgc3RhdGljIEZpbGVzeXN0ZW1JbnRlcmZhY2UqIGNvbnN0IGZp
bGVzeXN0ZW0gPSBuZXcgV2luMzJGaWxlc3lzdGVtKCk7Ci0jZWxzZQotICBzdGF0aWMgRmlsZXN5
c3RlbUludGVyZmFjZSogY29uc3QgZmlsZXN5c3RlbSA9IG5ldyBVbml4RmlsZXN5c3RlbSgpOwot
I2VuZGlmCi0KLSAgcmV0dXJuIGZpbGVzeXN0ZW07Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBydGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2ZpbGV1dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvZmlsZXV0aWxzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDEzMmZkODg0NDAxY2ZmNWZmYjAyM2VmZTg1ZThmMDg5NTY3NTFmZjcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmlsZXV0aWxzLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMzMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmbmRlZiBSVENfQkFTRV9GSUxF
VVRJTFNfSF8KLSNkZWZpbmUgUlRDX0JBU0VfRklMRVVUSUxTX0hfCi0KLSNpbmNsdWRlIDxzdHJp
bmc+Ci0KLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2Vs
c2UKLSNpbmNsdWRlIDxkaXJlbnQuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN5
cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0j
ZW5kaWYgIC8vIFdFQlJUQ19XSU4KLQotI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9w
bGF0Zm9ybV9maWxlLmgiCi0KLW5hbWVzcGFjZSBydGMgewotCi1jbGFzcyBGaWxlU3RyZWFtOwot
Y2xhc3MgUGF0aG5hbWU7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBEaXJlY3Rv
cnkgSXRlcmF0b3IgICAvLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gQSBEaXJl
Y3RvcnlJdGVyYXRvciBpcyBjcmVhdGVkIHdpdGggYSBnaXZlbiBkaXJlY3RvcnkuIEl0IG9yaWdp
bmFsbHkgcG9pbnRzCi0vLyB0byB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgZGlyZWN0b3J5LCBhbmQg
Y2FuIGJlIGFkdmFuZWNkIHdpdGggTmV4dCgpLiBUaGlzCi0vLyBhbGxvd3MgeW91IHRvIGdldCBp
bmZvcm1hdGlvbiBhYm91dCBlYWNoIGZpbGUuCi0KLWNsYXNzIERpcmVjdG9yeUl0ZXJhdG9yIHsK
LSAgZnJpZW5kIGNsYXNzIEZpbGVzeXN0ZW07Ci0KLSBwdWJsaWM6Ci0gIC8vIENvbnN0cnVjdG9y
Ci0gIERpcmVjdG9yeUl0ZXJhdG9yKCk7Ci0gIC8vIERlc3RydWN0b3IKLSAgdmlydHVhbCB+RGly
ZWN0b3J5SXRlcmF0b3IoKTsKLQotICAvLyBTdGFydHMgdHJhdmVyc2luZyBhIGRpcmVjdG9yeQot
ICAvLyBkaXIgaXMgdGhlIGRpcmVjdG9yeSB0byB0cmF2ZXJzZQotICAvLyByZXR1cm5zIHRydWUg
aWYgdGhlIGRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIHZhbGlkCi0gIC8vIFRoZSBpdGVyYXRvciB3
aWxsIHBvaW50IHRvIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgZGlyZWN0b3J5Ci0gIHZpcnR1YWwg
Ym9vbCBJdGVyYXRlKGNvbnN0IFBhdGhuYW1lJiBwYXRoKTsKLQotICAvLyBBZHZhbmNlcyB0byB0
aGUgbmV4dCBmaWxlCi0gIC8vIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3ZXJlIG1vcmUgZmlsZXMg
aW4gdGhlIGRpcmVjdG9yeS4KLSAgdmlydHVhbCBib29sIE5leHQoKTsKLQotICAvLyByZXR1cm5z
IHRydWUgaWYgdGhlIGZpbGUgY3VycmVudGx5IHBvaW50ZWQgdG8gaXMgYSBkaXJlY3RvcnkKLSAg
dmlydHVhbCBib29sIElzRGlyZWN0b3J5KCkgY29uc3Q7Ci0KLSAgLy8gcmV0dXJucyB0aGUgbmFt
ZSBvZiB0aGUgZmlsZSBjdXJyZW50bHkgcG9pbnRlZCB0bwotICB2aXJ0dWFsIHN0ZDo6c3RyaW5n
IE5hbWUoKSBjb25zdDsKLQotIHByaXZhdGU6Ci0gIHN0ZDo6c3RyaW5nIGRpcmVjdG9yeV87Ci0j
aWYgZGVmaW5lZChXRUJSVENfV0lOKQotICBXSU4zMl9GSU5EX0RBVEEgZGF0YV87Ci0gIEhBTkRM
RSBoYW5kbGVfOwotI2Vsc2UKLSAgRElSKiBkaXJfOwotICBzdHJ1Y3QgZGlyZW50KiBkaXJlbnRf
OwotICBzdHJ1Y3Qgc3RhdCBzdGF0XzsKLSNlbmRpZgotfTsKLQotY2xhc3MgRmlsZXN5c3RlbUlu
dGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5GaWxlc3lzdGVtSW50ZXJmYWNlKCkge30K
LQotICAvLyBUaGlzIHdpbGwgYXR0ZW1wdCB0byBkZWxldGUgdGhlIHBhdGggbG9jYXRlZCBhdCBm
aWxlbmFtZS4KLSAgLy8gSXQgRENIRUNLcyBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGUgcGF0aCBw
b2ludHMgdG8gYSBmb2xkZXIgb3IgYQotICAvLyBub24tZXhpc3RlbnQgZmlsZS4KLSAgdmlydHVh
bCBib29sIERlbGV0ZUZpbGUoY29uc3QgUGF0aG5hbWUmIGZpbGVuYW1lKSA9IDA7Ci0KLSAgLy8g
VGhpcyBtb3ZlcyBhIGZpbGUgZnJvbSBvbGRfcGF0aCB0byBuZXdfcGF0aCwgd2hlcmUgIm9sZF9w
YXRoIiBpcyBhCi0gIC8vIHBsYWluIGZpbGUuIFRoaXMgRENIRUNLcyBhbmQgcmV0dXJucyBmYWxz
ZSBpZiBvbGRfcGF0aCBwb2ludHMgdG8gYQotICAvLyBkaXJlY3RvcnksIGFuZCByZXR1cm5zIHRy
dWUgaWYgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLgotICB2aXJ0dWFsIGJvb2wgTW92ZUZpbGUoY29u
c3QgUGF0aG5hbWUmIG9sZF9wYXRoLCBjb25zdCBQYXRobmFtZSYgbmV3X3BhdGgpID0gMDsKLQot
ICAvLyBSZXR1cm5zIHRydWUgaWYgcGF0aG5hbWUgcmVmZXJzIHRvIGEgZGlyZWN0b3J5Ci0gIHZp
cnR1YWwgYm9vbCBJc0ZvbGRlcihjb25zdCBQYXRobmFtZSYgcGF0aG5hbWUpID0gMDsKLQotICAv
LyBSZXR1cm5zIHRydWUgaWYgcGF0aG5hbWUgcmVmZXJzIHRvIGEgZmlsZQotICB2aXJ0dWFsIGJv
b2wgSXNGaWxlKGNvbnN0IFBhdGhuYW1lJiBwYXRobmFtZSkgPSAwOwotCi0gIC8vIERldGVybWlu
ZXMgdGhlIHNpemUgb2YgdGhlIGZpbGUgaW5kaWNhdGVkIGJ5IHBhdGguCi0gIHZpcnR1YWwgYm9v
bCBHZXRGaWxlU2l6ZShjb25zdCBQYXRobmFtZSYgcGF0aCwgc2l6ZV90KiBzaXplKSA9IDA7Ci19
OwotCi1jbGFzcyBGaWxlc3lzdGVtIHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBib29sIERlbGV0ZUZp
bGUoY29uc3QgUGF0aG5hbWUmIGZpbGVuYW1lKSB7Ci0gICAgcmV0dXJuIEdldEZpbGVzeXN0ZW0o
KS0+RGVsZXRlRmlsZShmaWxlbmFtZSk7Ci0gIH0KLQotICBzdGF0aWMgYm9vbCBNb3ZlRmlsZShj
b25zdCBQYXRobmFtZSYgb2xkX3BhdGgsIGNvbnN0IFBhdGhuYW1lJiBuZXdfcGF0aCkgewotICAg
IHJldHVybiBHZXRGaWxlc3lzdGVtKCktPk1vdmVGaWxlKG9sZF9wYXRoLCBuZXdfcGF0aCk7Ci0g
IH0KLQotICBzdGF0aWMgYm9vbCBJc0ZvbGRlcihjb25zdCBQYXRobmFtZSYgcGF0aG5hbWUpIHsK
LSAgICByZXR1cm4gR2V0RmlsZXN5c3RlbSgpLT5Jc0ZvbGRlcihwYXRobmFtZSk7Ci0gIH0KLQot
ICBzdGF0aWMgYm9vbCBJc0ZpbGUoY29uc3QgUGF0aG5hbWUmIHBhdGhuYW1lKSB7Ci0gICAgcmV0
dXJuIEdldEZpbGVzeXN0ZW0oKS0+SXNGaWxlKHBhdGhuYW1lKTsKLSAgfQotCi0gIHN0YXRpYyBi
b29sIEdldEZpbGVTaXplKGNvbnN0IFBhdGhuYW1lJiBwYXRoLCBzaXplX3QqIHNpemUpIHsKLSAg
ICByZXR1cm4gR2V0RmlsZXN5c3RlbSgpLT5HZXRGaWxlU2l6ZShwYXRoLCBzaXplKTsKLSAgfQot
Ci0gcHJpdmF0ZToKLSAgc3RhdGljIEZpbGVzeXN0ZW1JbnRlcmZhY2UqIEdldEZpbGVzeXN0ZW0o
KTsKLSAgUlRDX0RJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhGaWxlc3lzdGVtKTsKLX07
Ci0KLX0gIC8vIG5hbWVzcGFjZSBydGMKLQotI2VuZGlmICAvLyBSVENfQkFTRV9GSUxFVVRJTFNf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2ZsYWdzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MKaW5kZXggNGYyOTQ1OTRiZDRhZmNmMjlhM2Y4OWFjMjcw
ZTI4YWJjYmY3NTUzMS4uNmI0M2I5MWUwMjZhY2RjNTg0MjE1ZGQ0ZWI0MmRkYmE1ZTVjMDRhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvZmxhZ3MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MKQEAgLTE1LDcgKzE1LDYgQEAKICNpbmNsdWRlIDxzdHJp
bmcuaD4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L3N0cmluZ3V0aWxzLmgiCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCiAvLyBjbGFuZy1mb3Jt
YXQgb2ZmCkBAIC0yMyw2ICsyMiw4IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUg
PHNoZWxsYXBpLmg+IC8vIG11c3QgY29tZSBhZnRlciB3aW5kb3dzLmgKIC8vIGNsYW5nLWZvcm1h
dCBvbgorCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIgIC8vIEZvciBUb1V0ZjgK
ICNlbmRpZgogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmgKaW5kZXggMzNmNmU1YmRh
MWRiZGE1NGM2ZGY4ZTVmMjY4ZmQ4NjBmZDQ3NjhhZC4uYTA4YmZkMjliODVkNWZmMmIwZDFkYWY1
MTExNjVlY2I0ZjIxMDNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5oCkBAIC0yMyw3ICsyMywxMCBA
QAogI2RlZmluZSBSVENfQkFTRV9GTEFHU19IXwogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tz
LmgiCisKKyNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3Ry
dWN0b3JtYWdpYy5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBydGMgewogCkBAIC0zMyw3ICszNiw3
IEBAIHVuaW9uIEZsYWdWYWx1ZSB7CiAgIC8vIGJvb2wgdmFsdWVzICgnYm9vbCBiID0gImZhbHNl
IjsnIHJlc3VsdHMgaW4gYiA9PSB0cnVlISksIHdlIHBhc3MKICAgLy8gYW5kIGludCBhcmd1bWVu
dCB0byBOZXdfQk9PTCBhcyB0aGlzIGFwcGVhcnMgdG8gYmUgc2FmZXIgLSBzaWdoLgogICAvLyBJ
biBwYXJ0aWN1bGFyLCBpdCBwcmV2ZW50cyB0aGUgKG5vdCB1bmNvbW1vbiEpIGJ1ZyB3aGVyZSBh
IGJvb2wKLSAgLy8gZmxhZyBpcyBkZWZpbmVkIHZpYTogREVGSU5FX2Jvb2woZmxhZywgImZhbHNl
IiwgInNvbWUgY29tbWVudCIpOy4KKyAgLy8gZmxhZyBpcyBkZWZpbmVkIHZpYTogV0VCUlRDX0RF
RklORV9ib29sKGZsYWcsICJmYWxzZSIsICJzb21lIGNvbW1lbnQiKTsuCiAgIHN0YXRpYyBGbGFn
VmFsdWUgTmV3X0JPT0woaW50IGIpIHsKICAgICBGbGFnVmFsdWUgdjsKICAgICB2LmIgPSAoYiAh
PSAwKTsKQEAgLTE1Miw3ICsxNTUsNyBAQCBjbGFzcyBGbGFnIHsKIH07CiAKIC8vIEludGVybmFs
IHVzZSBvbmx5LgotI2RlZmluZSBERUZJTkVfRkxBRyh0eXBlLCBjX3R5cGUsIG5hbWUsIGRlZmF1
bHQsIGNvbW1lbnQpICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgV0VCUlRDX0RFRklORV9G
TEFHKHR5cGUsIGNfdHlwZSwgbmFtZSwgZGVmYXVsdCwgY29tbWVudCkgICAgICAgICAgICBcCiAg
IC8qIGRlZmluZSBhbmQgaW5pdGlhbGl6ZSB0aGUgZmxhZyAqLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICBjX3R5cGUgRkxBR18jI25hbWUgPSAoZGVmYXVsdCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgLyogcmVnaXN0ZXIg
dGhlIGZsYWcgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCkBAIC0xNjEsMjUgKzE2NCwyNSBAQCBjbGFzcyBGbGFnIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydGM6OkZsYWdWYWx1ZTo6TmV3XyMjdHlwZShkZWZhdWx0KSkKIAog
Ly8gSW50ZXJuYWwgdXNlIG9ubHkuCi0jZGVmaW5lIERFQ0xBUkVfRkxBRyhjX3R5cGUsIG5hbWUp
IFwKLSAgLyogZGVjbGFyZSB0aGUgZXh0ZXJuYWwgZmxhZyAqLyAgXAorI2RlZmluZSBXRUJSVENf
REVDTEFSRV9GTEFHKGNfdHlwZSwgbmFtZSkgXAorICAvKiBkZWNsYXJlIHRoZSBleHRlcm5hbCBm
bGFnICovICAgICAgICAgXAogICBleHRlcm4gY190eXBlIEZMQUdfIyNuYW1lCiAKIC8vIFVzZSB0
aGUgZm9sbG93aW5nIG1hY3JvcyB0byBkZWZpbmUgYSBuZXcgZmxhZzoKLSNkZWZpbmUgREVGSU5F
X2Jvb2wobmFtZSwgZGVmYXVsdCwgY29tbWVudCkgXAotICBERUZJTkVfRkxBRyhCT09MLCBib29s
LCBuYW1lLCBkZWZhdWx0LCBjb21tZW50KQotI2RlZmluZSBERUZJTkVfaW50KG5hbWUsIGRlZmF1
bHQsIGNvbW1lbnQpIFwKLSAgREVGSU5FX0ZMQUcoSU5ULCBpbnQsIG5hbWUsIGRlZmF1bHQsIGNv
bW1lbnQpCi0jZGVmaW5lIERFRklORV9mbG9hdChuYW1lLCBkZWZhdWx0LCBjb21tZW50KSBcCi0g
IERFRklORV9GTEFHKEZMT0FULCBkb3VibGUsIG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpCi0jZGVm
aW5lIERFRklORV9zdHJpbmcobmFtZSwgZGVmYXVsdCwgY29tbWVudCkgXAotICBERUZJTkVfRkxB
RyhTVFJJTkcsIGNvbnN0IGNoYXIqLCBuYW1lLCBkZWZhdWx0LCBjb21tZW50KQorI2RlZmluZSBX
RUJSVENfREVGSU5FX2Jvb2wobmFtZSwgZGVmYXVsdCwgY29tbWVudCkgXAorICBXRUJSVENfREVG
SU5FX0ZMQUcoQk9PTCwgYm9vbCwgbmFtZSwgZGVmYXVsdCwgY29tbWVudCkKKyNkZWZpbmUgV0VC
UlRDX0RFRklORV9pbnQobmFtZSwgZGVmYXVsdCwgY29tbWVudCkgXAorICBXRUJSVENfREVGSU5F
X0ZMQUcoSU5ULCBpbnQsIG5hbWUsIGRlZmF1bHQsIGNvbW1lbnQpCisjZGVmaW5lIFdFQlJUQ19E
RUZJTkVfZmxvYXQobmFtZSwgZGVmYXVsdCwgY29tbWVudCkgXAorICBXRUJSVENfREVGSU5FX0ZM
QUcoRkxPQVQsIGRvdWJsZSwgbmFtZSwgZGVmYXVsdCwgY29tbWVudCkKKyNkZWZpbmUgV0VCUlRD
X0RFRklORV9zdHJpbmcobmFtZSwgZGVmYXVsdCwgY29tbWVudCkgXAorICBXRUJSVENfREVGSU5F
X0ZMQUcoU1RSSU5HLCBjb25zdCBjaGFyKiwgbmFtZSwgZGVmYXVsdCwgY29tbWVudCkKIAogLy8g
VXNlIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHRvIGRlY2xhcmUgYSBmbGFnIGRlZmluZWQgZWxzZXdo
ZXJlOgotI2RlZmluZSBERUNMQVJFX2Jvb2wobmFtZSkgREVDTEFSRV9GTEFHKGJvb2wsIG5hbWUp
Ci0jZGVmaW5lIERFQ0xBUkVfaW50KG5hbWUpIERFQ0xBUkVfRkxBRyhpbnQsIG5hbWUpCi0jZGVm
aW5lIERFQ0xBUkVfZmxvYXQobmFtZSkgREVDTEFSRV9GTEFHKGRvdWJsZSwgbmFtZSkKLSNkZWZp
bmUgREVDTEFSRV9zdHJpbmcobmFtZSkgREVDTEFSRV9GTEFHKGNvbnN0IGNoYXIqLCBuYW1lKQor
I2RlZmluZSBXRUJSVENfREVDTEFSRV9ib29sKG5hbWUpIFdFQlJUQ19ERUNMQVJFX0ZMQUcoYm9v
bCwgbmFtZSkKKyNkZWZpbmUgV0VCUlRDX0RFQ0xBUkVfaW50KG5hbWUpIFdFQlJUQ19ERUNMQVJF
X0ZMQUcoaW50LCBuYW1lKQorI2RlZmluZSBXRUJSVENfREVDTEFSRV9mbG9hdChuYW1lKSBXRUJS
VENfREVDTEFSRV9GTEFHKGRvdWJsZSwgbmFtZSkKKyNkZWZpbmUgV0VCUlRDX0RFQ0xBUkVfc3Ry
aW5nKG5hbWUpIFdFQlJUQ19ERUNMQVJFX0ZMQUcoY29uc3QgY2hhciosIG5hbWUpCiAKIC8vIFRo
ZSBnbG9iYWwgbGlzdCBvZiBhbGwgZmxhZ3MuCiBjbGFzcyBGbGFnTGlzdCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9oZWxw
ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9oZWxwZXJzLmgKaW5kZXggZDNiMDljZmQ0OGZiNWJkM2U1YWZkOTNiZDZmODU0YTExYWNlMGVm
Ny4uYTkzYjMyMWVhYjkyNjczZGU5MDNiOWU4N2VjMjY1NjM2NmUzMWU0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaGVscGVy
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL2hlbHBlcnMuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBSVENfQkFTRV9IRUxQRVJT
X0hfCiAjZGVmaW5lIFJUQ19CQVNFX0hFTFBFUlNfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgor
I2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAogbmFtZXNwYWNlIHJ0YyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9odHRwY29tbW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvaHR0cGNvbW1vbi5jYwppbmRleCA3MTZhNDFlMTZlOTNlNzJjNmU5
MGMxNjJiZTYyNWVlMjIxNDU4YjM1Li43OTI2Zjg4NGY5ZDg4MWIzNzVmOGMwZDc3YzA0NjVmMDhl
YTY0ZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9odHRwY29tbW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2h0dHBjb21tb24uY2MKQEAgLTE4LDE3ICsxOCwy
MyBAQAogI2luY2x1ZGUgPHNlY3VyaXR5Lmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgPGN0eXBlLmg+
ICAvLyBmb3IgaXNzcGFjZQorI2luY2x1ZGUgPHN0ZGlvLmg+ICAvLyBmb3Igc3ByaW50ZgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gZm9yIHBhaXIKKyNpbmNs
dWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9jcnlwdHN0cmluZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NyeXB0
c3RyaW5nLmgiICAvLyBmb3IgQ3J5cHRTdHJpbmcKICNpbmNsdWRlICJydGNfYmFzZS9odHRwY29t
bW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L21lc3NhZ2VkaWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgotI2luY2x1ZGUgInJ0
Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2NC9iYXNlNjQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS96
ZXJvX21lbW9yeS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L2Jhc2U2NC9iYXNl
NjQuaCIgIC8vIGZvciBCYXNlNjQKKyNpbmNsdWRlICJydGNfYmFzZS96ZXJvX21lbW9yeS5oIiAg
ICAgICAgICAgICAgICAvLyBmb3IgRXhwbGljaXRaZXJvTWVtb3J5CiAKIG5hbWVzcGFjZSBydGMg
ewogbmFtZXNwYWNlIHsKQEAgLTI2MCw3ICsyNjYsNyBAQCBIdHRwQXV0aFJlc3VsdCBIdHRwQXV0
aGVudGljYXRlKGNvbnN0IGNoYXIqIGNoYWxsZW5nZSwKICAgICByZXR1cm4gSEFSX0lHTk9SRTsK
IAogICAvLyBCQVNJQwotICBpZiAoX3N0cmljbXAoYXV0aF9tZXRob2QuY19zdHIoKSwgImJhc2lj
IikgPT0gMCkgeworICBpZiAoYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShhdXRoX21ldGhvZCwgImJh
c2ljIikpIHsKICAgICBpZiAoY29udGV4dCkKICAgICAgIHJldHVybiBIQVJfQ1JFREVOVElBTFM7
ICAvLyBCYWQgY3JlZGVudGlhbHMKICAgICBpZiAodXNlcm5hbWUuZW1wdHkoKSkKQEAgLTI4OCw3
ICsyOTQsNyBAQCBIdHRwQXV0aFJlc3VsdCBIdHRwQXV0aGVudGljYXRlKGNvbnN0IGNoYXIqIGNo
YWxsZW5nZSwKICAgfQogCiAgIC8vIERJR0VTVAotICBpZiAoX3N0cmljbXAoYXV0aF9tZXRob2Qu
Y19zdHIoKSwgImRpZ2VzdCIpID09IDApIHsKKyAgaWYgKGFic2w6OkVxdWFsc0lnbm9yZUNhc2Uo
YXV0aF9tZXRob2QsICJkaWdlc3QiKSkgewogICAgIGlmIChjb250ZXh0KQogICAgICAgcmV0dXJu
IEhBUl9DUkVERU5USUFMUzsgIC8vIEJhZCBjcmVkZW50aWFscwogICAgIGlmICh1c2VybmFtZS5l
bXB0eSgpKQpAQCAtMzU1LDggKzM2MSw4IEBAIEh0dHBBdXRoUmVzdWx0IEh0dHBBdXRoZW50aWNh
dGUoY29uc3QgY2hhciogY2hhbGxlbmdlLAogCiAjaWYgZGVmaW5lZChXRUJSVENfV0lOKQogI2lm
IDEKLSAgYm9vbCB3YW50X25lZ290aWF0ZSA9IChfc3RyaWNtcChhdXRoX21ldGhvZC5jX3N0cigp
LCAibmVnb3RpYXRlIikgPT0gMCk7Ci0gIGJvb2wgd2FudF9udGxtID0gKF9zdHJpY21wKGF1dGhf
bWV0aG9kLmNfc3RyKCksICJudGxtIikgPT0gMCk7CisgIGJvb2wgd2FudF9uZWdvdGlhdGUgPSBh
YnNsOjpFcXVhbHNJZ25vcmVDYXNlKGF1dGhfbWV0aG9kLCAibmVnb3RpYXRlIik7CisgIGJvb2wg
d2FudF9udGxtID0gYWJzbDo6RXF1YWxzSWdub3JlQ2FzZShhdXRoX21ldGhvZCwgIm50bG0iKTsK
ICAgLy8gU1BORUdPICYgTlRMTQogICBpZiAod2FudF9uZWdvdGlhdGUgfHwgd2FudF9udGxtKSB7
CiAgICAgY29uc3Qgc2l6ZV90IE1BWF9NRVNTQUdFID0gMTIwMDAsIE1BWF9TUE4gPSAyNTY7CkBA
IC0zNzEsNyArMzc3LDcgQEAgSHR0cEF1dGhSZXN1bHQgSHR0cEF1dGhlbnRpY2F0ZShjb25zdCBj
aGFyKiBjaGFsbGVuZ2UsCiAgICAgICByZXR1cm4gSEFSX0lHTk9SRTsKICAgICB9CiAjZWxzZQot
ICAgIHNwcmludGZuKHNwbiwgTUFYX1NQTiwgIkhUVFAvJXMiLCBzZXJ2ZXIuVG9TdHJpbmcoKS5j
X3N0cigpKTsKKyAgICBzbnByaW50ZihzcG4sIE1BWF9TUE4sICJIVFRQLyVzIiwgc2VydmVyLlRv
U3RyaW5nKCkuY19zdHIoKSk7CiAjZW5kaWYKIAogICAgIFNlY0J1ZmZlciBvdXRfc2VjOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvaHR0cGNvbW1vbi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvaHR0cGNvbW1vbi5oCmluZGV4IDU4MWJkMWVlOGE4NmM2MTJjYjYyZjZhYjIz
NDE1M2FkNGQyYzgwOGQuLmZiYWQyODBlMDI1MGEwYjdhZDUzNWQ5MzgzODE3MjdkZDdhY2QxYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2h0dHBjb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9odHRwY29tbW9uLmgKQEAgLTExLDE0ICsxMSw3IEBACiAjaWZu
ZGVmIFJUQ19CQVNFX0hUVFBDT01NT05fSF8KICNkZWZpbmUgUlRDX0JBU0VfSFRUUENPTU1PTl9I
XwogCi0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+
Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2Uvc3RyZWFtLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMu
aCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2lwYWRkcmVzcy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2lwYWRkcmVzcy5jYwppbmRl
eCBjNTJjOWE0YWRkZGFjMzBkYzRlZDAwOWRmZmFlMGFlYzU1ZWRiNmI2Li4wMjdhN2IyMTllMDJh
OWU2YzUzNzBiYzUwNWY1OTNhZDhiNDBhNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9pcGFkZHJlc3MuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvaXBhZGRyZXNz
LmNjCkBAIC0xMSwyNCArMTEsMTcgQEAKICNpZiBkZWZpbmVkKFdFQlJUQ19QT1NJWCkKICNpbmNs
dWRlIDxuZXRpbmV0L2luLmg+CiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPHN5
cy90eXBlcy5oPgogI2lmZGVmIE9QRU5CU0QKICNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+
CiAjZW5kaWYKICNpZm5kZWYgX19uYXRpdmVfY2xpZW50X18KICNpbmNsdWRlIDxuZXRpbmV0L2lw
Lmg+CiAjZW5kaWYKLSNpbmNsdWRlIDxhcnBhL2luZXQuaD4KICNpbmNsdWRlIDxuZXRkYi5oPgot
I2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxzdGRpby5oPgotCiAjaW5j
bHVkZSAicnRjX2Jhc2UvYnl0ZW9yZGVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvaXBhZGRyZXNzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9n
Z2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL25ldGhlbHBlcnMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmd1dGlscy5oIgogCkBAIC0xNjIsMTEgKzE1NSwxMCBAQCBzdGQ6OnN0cmluZyBJ
UEFkZHJlc3M6OlRvU2Vuc2l0aXZlU3RyaW5nKCkgY29uc3QgewogICAgICAgc3RkOjpzdHJpbmcg
cmVzdWx0OwogICAgICAgcmVzdWx0LnJlc2l6ZShJTkVUNl9BRERSU1RSTEVOKTsKICAgICAgIGlu
Nl9hZGRyIGFkZHIgPSBpcHY2X2FkZHJlc3MoKTsKLSAgICAgIHNpemVfdCBsZW4gPQotICAgICAg
ICAgIHJ0Yzo6c3ByaW50Zm4oJihyZXN1bHRbMF0pLCByZXN1bHQuc2l6ZSgpLCAiJXg6JXg6JXg6
eDp4Ong6eDp4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIChhZGRyLnM2X2FkZHJbMF0gPDwg
OCkgKyBhZGRyLnM2X2FkZHJbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAoYWRkci5zNl9h
ZGRyWzJdIDw8IDgpICsgYWRkci5zNl9hZGRyWzNdLAotICAgICAgICAgICAgICAgICAgICAgICAg
KGFkZHIuczZfYWRkcls0XSA8PCA4KSArIGFkZHIuczZfYWRkcls1XSk7CisgICAgICBzaXplX3Qg
bGVuID0gc25wcmludGYoJihyZXN1bHRbMF0pLCByZXN1bHQuc2l6ZSgpLCAiJXg6JXg6JXg6eDp4
Ong6eDp4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkci5zNl9hZGRyWzBdIDw8
IDgpICsgYWRkci5zNl9hZGRyWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRy
LnM2X2FkZHJbMl0gPDwgOCkgKyBhZGRyLnM2X2FkZHJbM10sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGFkZHIuczZfYWRkcls0XSA8PCA4KSArIGFkZHIuczZfYWRkcls1XSk7CiAgICAg
ICByZXN1bHQucmVzaXplKGxlbik7CiAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2tleV9kZXJpdmF0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uva2V5X2Rlcml2YXRpb24uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg4ZTQwN2ViYzVh
OTc0MzEwZDg0MGJhNjljZjQwNTc1Mjk3OGMyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2tleV9kZXJpdmF0aW9u
LmNjCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMg
Z3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmli
dXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNf
YmFzZS9rZXlfZGVyaXZhdGlvbi5oIgorCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5Lmgi
CisjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmgiCisKK25h
bWVzcGFjZSBydGMgeworCitLZXlEZXJpdmF0aW9uOjpLZXlEZXJpdmF0aW9uKCkgPSBkZWZhdWx0
OworS2V5RGVyaXZhdGlvbjo6fktleURlcml2YXRpb24oKSA9IGRlZmF1bHQ7CisKKy8vIHN0YXRp
Yworc3RkOjp1bmlxdWVfcHRyPEtleURlcml2YXRpb24+IEtleURlcml2YXRpb246OkNyZWF0ZSgK
KyAgICBLZXlEZXJpdmF0aW9uQWxnb3JpdGhtIGtleV9kZXJpdmF0aW9uX2FsZ29yaXRobSkgewor
ICBzd2l0Y2ggKGtleV9kZXJpdmF0aW9uX2FsZ29yaXRobSkgeworICAgIGNhc2UgS2V5RGVyaXZh
dGlvbkFsZ29yaXRobTo6SEtERl9TSEEyNTY6CisgICAgICByZXR1cm4gYWJzbDo6bWFrZV91bmlx
dWU8T3BlblNTTEtleURlcml2YXRpb25IS0RGPigpOworICB9CisgIFJUQ19OT1RSRUFDSEVEKCk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2tleV9kZXJpdmF0aW9uLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9rZXlfZGVyaXZh
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZhMzI5YWViNGNlNGM5ZDk4ZWFiZTEwMDYxNjc4YmM5MWI3YjZm
MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9rZXlfZGVyaXZhdGlvbi5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfS0VZX0RFUklWQVRJT05fSF8KKyNkZWZp
bmUgUlRDX0JBU0VfS0VZX0RFUklWQVRJT05fSF8KKworI2luY2x1ZGUgPG1lbW9yeT4KKworI2lu
Y2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0
cnVjdG9ybWFnaWMuaCIKKworbmFtZXNwYWNlIHJ0YyB7CisKKy8vIERlZmluZXMgdGhlIHNldCBv
ZiBrZXkgZGVyaXZhdGlvbiBhbGdvcml0aG1zIHRoYXQgYXJlIHN1cHBvcnRlZC4gSXQgaXMgaWRl
YWwKKy8vIHRvIGtlZXAgdGhpcyBsaXN0IGFzIHNtYWxsIGFzIHBvc3NpYmxlLgorZW51bSBjbGFz
cyBLZXlEZXJpdmF0aW9uQWxnb3JpdGhtIHsKKyAgLy8gVGhpcyBhbGdvcml0aG0gaXMgbm90IHN1
aXRhYmxlIHRvIGdlbmVyYXRlIGEga2V5IGZyb20gYSBwYXNzd29yZC4gUGxlYXNlCisgIC8vIG9u
bHkgdXNlIHdpdGggYSBjcnlwdG9ncmFwaGljYWxseSByYW5kb20gbWFzdGVyIHNlY3JldC4KKyAg
SEtERl9TSEEyNTYKK307CisKKy8vIEtleURlcml2YXRpb24gcHJvdmlkZXMgYSBnZW5lcmljIGlu
dGVyZmFjZSBmb3IgZGVyaXZpbmcga2V5cyBpbiBXZWJSVEMuIFRoaXMKKy8vIGNsYXNzIHNob3Vs
ZCBiZSB1c2VkIG92ZXIgZGlyZWN0bHkgYWNjZXNzaW5nIG9wZW5zc2wgb3IgYm9yaW5nc3NsIHBy
aW1pdGl2ZXMKKy8vIHNvIHRoYXQgd2UgY2FuIG1haW50YWluIHNlcGVyYXRlIGltcGxlbWVudGF0
aW9ucy4KKy8vIEV4YW1wbGU6CisvLyAgIGF1dG8ga2QgPSBLZXlEZXJpdmF0aW9uOjpDcmVhdGUo
S2V5RGVyaXZhdGlvbkFsZ29yaXRobTo6SERLRl9TSEE1MjYpOworLy8gICBpZiAoa2QgPT0gbnVs
bHB0cikgcmV0dXJuOworLy8gICBhdXRvIGRlcml2ZWRfa2V5X29yID0ga2QtPkRlcml2ZUtleShz
ZWNyZXQsIHNhbHQsIGxhYmVsKTsKKy8vICAgaWYgKCFkZXJpdmVkX2tleV9vci5vaygpKSByZXR1
cm47CisvLyAgIERvU29tZXRoaW5nV2l0aEtleShkZXJpdmVkX2tleV9vci52YWx1ZSgpKTsKK2Ns
YXNzIEtleURlcml2YXRpb24geworIHB1YmxpYzoKKyAgS2V5RGVyaXZhdGlvbigpOworICB2aXJ0
dWFsIH5LZXlEZXJpdmF0aW9uKCk7CisKKyAgLy8gRGVyaXZlcyBhIG5ldyBrZXkgZnJvbSBleGlz
dGluZyBrZXkgbWF0ZXJpYWwuCisgIC8vIHNlY3JldCAtIFRoZSByYW5kb20gc2VjcmV0IHZhbHVl
IHlvdSB3aXNoIHRvIGRlcml2ZSBhIGtleSBmcm9tLgorICAvLyBzYWx0IC0gT3B0aW9uYWwgYnV0
IHJlY29tbWVuZGVkIChub24gc2VjcmV0KSBjcnlwdG9ncmFwaGljYWxseSByYW5kb20uCisgIC8v
IGxhYmVsIC0gQSBub24gc2VjcmV0IGJ1dCB1bmlxdWUgbGFiZWwgdmFsdWUgdG8gZGV0ZXJtaW5l
IHRoZSBkZXJpdmF0aW9uLgorICAvLyBkZXJpdmVkX2tleV9ieXRlX3NpemUgLSBUaGlzIG11c3Qg
YmUgYXQgbGVhc3QgMTI4IGJpdHMuCisgIC8vIHJldHVybiAtIEFuIG9wdGlvbmFsIFplcm9PbkZy
ZWVCdWZmZXIgY29udGFpbmluZyB0aGUgZGVyaXZlZCBrZXkgb3IKKyAgLy8gYWJzbDo6bnVsbG9w
dC4gTnVsbG9wdCBpbmRpY2F0ZXMgYSBmYWlsdXJlIGluIGRlcml2YXRpb24uCisgIHZpcnR1YWwg
YWJzbDo6b3B0aW9uYWw8WmVyb09uRnJlZUJ1ZmZlcjx1aW50OF90Pj4gRGVyaXZlS2V5KAorICAg
ICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gc2VjcmV0LAorICAgICAgcnRjOjpBcnJh
eVZpZXc8Y29uc3QgdWludDhfdD4gc2FsdCwKKyAgICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVp
bnQ4X3Q+IGxhYmVsLAorICAgICAgc2l6ZV90IGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSkgPSAwOwor
CisgIC8vIFN0YXRpYyBmYWN0b3J5IHRoYXQgd2lsbCByZXR1cm4gYW4gaW1wbGVtZW50YXRpb24g
dGhhdCBpcyBjYXBhYmxlIG9mCisgIC8vIGhhbmRsaW5nIHRoZSBrZXkgZGVyaXZhdGlvbiB3aXRo
IHRoZSByZXF1ZXN0ZWQgYWxnb3JpdGhtLiBJZiBubworICAvLyBpbXBsZW1lbnRhdGlvbiBpcyBh
dmFpbGFibGUgbnVsbHB0ciB3aWxsIGJlIHJldHVybmVkLgorICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEtleURlcml2YXRpb24+IENyZWF0ZSgKKyAgICAgIEtleURlcml2YXRpb25BbGdvcml0aG0g
a2V5X2Rlcml2YXRpb25fYWxnb3JpdGhtKTsKKworIHByaXZhdGU6CisgIFJUQ19ESVNBTExPV19D
T1BZX0FORF9BU1NJR04oS2V5RGVyaXZhdGlvbik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcnRj
CisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfS0VZX0RFUklWQVRJT05fSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0aW9u
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
bG9jYXRpb24uY2MKaW5kZXggOWM5MGQ5ZWMxNzk3NzQ1YjkxYzczOTY5ODRlZmJjYTkwNjQ3M2I1
YS4uYzk1YWQ5YzQ4OGEwN2Q0MTViMGU5OGU1ZWQ1YTdlMjVlMTkwMDAzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRp
b24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbG9jYXRpb24uY2MKQEAgLTEwLDggKzEwLDYgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNl
L2xvY2F0aW9uLmgiCiAKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgotCiBuYW1l
c3BhY2UgcnRjIHsKIAogTG9jYXRpb246OkxvY2F0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uX25h
bWUsIGNvbnN0IGNoYXIqIGZpbGVfYW5kX2xpbmUpCkBAIC0zMSw3ICsyOSw3IEBAIExvY2F0aW9u
JiBMb2NhdGlvbjo6b3BlcmF0b3I9KGNvbnN0IExvY2F0aW9uJiBvdGhlcikgewogCiBzdGQ6OnN0
cmluZyBMb2NhdGlvbjo6VG9TdHJpbmcoKSBjb25zdCB7CiAgIGNoYXIgYnVmWzI1Nl07Ci0gIHNw
cmludGZuKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlc0AlcyIsIGZ1bmN0aW9uX25hbWVfLCBmaWxlX2Fu
ZF9saW5lXyk7CisgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlc0AlcyIsIGZ1bmN0aW9u
X25hbWVfLCBmaWxlX2FuZF9saW5lXyk7CiAgIHJldHVybiBidWY7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dp
bmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9sb2dnaW5nLmNjCmluZGV4IDQ0ZWMzZjUwYzE5NjFjNzk5Yjg5NmE0M2Y5NDczYmU1ZmYzYjYx
OGIuLjU4YjMzNDVmOWRiNTJlZjM3ZjljZTg2MDBhNGFmZjA0NDA1NjljNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dp
bmcuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbG9nZ2luZy5jYwpAQCAtNzUsNyArNzUsMTIgQEAgQ3JpdGljYWxTZWN0aW9uJiBsb2dD
cml0aWNhbFNjb3BlKCkgewogdm9pZCBMb2dTaW5rOjpPbkxvZ01lc3NhZ2UoY29uc3Qgc3RkOjpz
dHJpbmcmIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dpbmdTZXZlcml0eSBz
ZXZlcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhZykgewot
ICBPbkxvZ01lc3NhZ2UodGFnICsgKCI6ICIgKyBtc2cpKTsKKyAgT25Mb2dNZXNzYWdlKHRhZyAr
ICgiOiAiICsgbXNnKSwgc2V2ZXJpdHkpOworfQorCit2b2lkIExvZ1Npbms6Ok9uTG9nTWVzc2Fn
ZShjb25zdCBzdGQ6OnN0cmluZyYgbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9n
Z2luZ1NldmVyaXR5IC8qIHNldmVyaXR5ICovKSB7CisgIE9uTG9nTWVzc2FnZShtc2cpOwogfQog
CiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZy5oCmluZGV4IDFiZDBj
NzIwNWU2OTI2N2ExZDExNzM4MTdmZjM0MTllZTQ1MzA1YWMuLmM3ZDA4M2U0MmQzN2EzMTkxMjZh
MmFkZjdlNjAzN2I3YjBiNmQ4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmgKQEAgLTUxLDE2
ICs1MSwxNSBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCi0jaWYg
ZGVmaW5lZChXRUJSVENfTUFDKSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQotI2luY2x1ZGUgPENv
cmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL3N0cmluZ192aWV3LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2RlcHJlY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
c3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9pbmxp
bmUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKKworI2lmIGRl
ZmluZWQoV0VCUlRDX01BQykgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKKyNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nX21hYy5oIgorI2VuZGlmICAvLyBXRUJSVENfTUFDCiAKICNpZiAhZGVmaW5l
ZChOREVCVUcpIHx8IGRlZmluZWQoRExPR19BTFdBWVNfT04pCiAjZGVmaW5lIFJUQ19ETE9HX0lT
X09OIDEKQEAgLTcwLDExICs2OSw2IEBACiAKIG5hbWVzcGFjZSBydGMgewogCi0jaWYgZGVmaW5l
ZChXRUJSVENfTUFDKSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQotLy8gUmV0dXJucyBhIFVURjgg
ZGVzY3JpcHRpb24gZnJvbSBhbiBPUyBYIFN0YXR1cyBlcnJvci4KLXN0ZDo6c3RyaW5nIERlc2Ny
aXB0aW9uRnJvbU9TU3RhdHVzKE9TU3RhdHVzIGVycik7Ci0jZW5kaWYKLQogLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwogCiAvLyBOb3RlIHRoYXQgdGhlIG5vbi1zdGFuZGFyZCBMb2dnaW5nU2V2ZXJpdHkgYWxpYXNl
cyBleGlzdCBiZWNhdXNlIHRoZXkgYXJlCkBAIC0xMjEsNiArMTE1LDggQEAgY2xhc3MgTG9nU2lu
ayB7CiAgIHZpcnR1YWwgdm9pZCBPbkxvZ01lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1zZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFnKTsKKyAgdmlydHVhbCB2
b2lkIE9uTG9nTWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkpOwogICB2aXJ0dWFsIHZv
aWQgT25Mb2dNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSA9IDA7CiB9OwogCkBA
IC01MjMsMTAgKzUxOSwxMCBAQCBjbGFzcyBMb2dNZXNzYWdlIHsKICAgICAgID8gc3RhdGljX2Nh
c3Q8dm9pZD4oMCkgICAgICAgICAgICAgICBcCiAgICAgICA6IHJ0Yzo6d2VicnRjX2xvZ2dpbmdf
aW1wbDo6TG9nTWVzc2FnZVZvaWRpZnkoKSYKIAotI2RlZmluZSBSVENfTE9HX0ZJTEVfTElORShz
ZXYsIGZpbGUsIGxpbmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
cnRjOjp3ZWJydGNfbG9nZ2luZ19pbXBsOjpMb2dDYWxsKCkgJiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBydGM6OndlYnJ0Y19sb2dnaW5nX2ltcGw6Okxv
Z1N0cmVhbWVyPD4oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAg
IDw8IHJ0Yzo6d2VicnRjX2xvZ2dpbmdfaW1wbDo6TG9nTWV0YWRhdGEoX19GSUxFX18sIF9fTElO
RV9fLCBzZXYpCisjZGVmaW5lIFJUQ19MT0dfRklMRV9MSU5FKHNldiwgZmlsZSwgbGluZSkgICAg
ICBcCisgIHJ0Yzo6d2VicnRjX2xvZ2dpbmdfaW1wbDo6TG9nQ2FsbCgpICYgICAgICAgICBcCisg
ICAgICBydGM6OndlYnJ0Y19sb2dnaW5nX2ltcGw6OkxvZ1N0cmVhbWVyPD4oKSBcCisgICAgICAg
ICAgPDwgcnRjOjp3ZWJydGNfbG9nZ2luZ19pbXBsOjpMb2dNZXRhZGF0YShmaWxlLCBsaW5lLCBz
ZXYpCiAKICNkZWZpbmUgUlRDX0xPRyhzZXYpIFJUQ19MT0dfRklMRV9MSU5FKHJ0Yzo6c2V2LCBf
X0ZJTEVfXywgX19MSU5FX18pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfbWFjLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX21hYy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU2NWRiNTYwYzE4NzlmMmI4ODAzNzczMzk0MTk4ODBjZjYxODdjNTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9sb2dnaW5nX21hYy5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIw
MTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisj
aWZuZGVmIFJUQ19CQVNFX0xPR0dJTkdfTUFDX0hfCisjZGVmaW5lIFJUQ19CQVNFX0xPR0dJTkdf
TUFDX0hfCisKKyNpZiAhZGVmaW5lZChXRUJSVENfTUFDKSB8fCBkZWZpbmVkKFdFQlJUQ19JT1Mp
CisjZXJyb3IgIk9ubHkgaW5jbHVkZSB0aGlzIGhlYWRlciBpbiBtYWNPUyBidWlsZHMiCisjZW5k
aWYKKworI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KKworI2luY2x1ZGUg
PHN0cmluZz4KKworbmFtZXNwYWNlIHJ0YyB7CisKKy8vIFJldHVybnMgYSBVVEY4IGRlc2NyaXB0
aW9uIGZyb20gYW4gT1MgWCBTdGF0dXMgZXJyb3IuCitzdGQ6OnN0cmluZyBEZXNjcmlwdGlvbkZy
b21PU1N0YXR1cyhPU1N0YXR1cyBlcnIpOworCit9ICAvLyBuYW1lc3BhY2UgcnRjCisKKyNlbmRp
ZiAgLy8gUlRDX0JBU0VfTE9HR0lOR19NQUNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfbWFjLm1tIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ19t
YWMubW0KaW5kZXggMzc4Y2ZiZmNiOWNkMTQ3NzAxMTgwYjMwYjA3Yjg1OTI5N2I1ZmI1Ny4uYmQ1
ZjJiOWQzOGZiZjVlOGQ5MDA3NWJmYmM0OWE0MDAzNjQ0NGI1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ19tYWMu
bW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbG9nZ2luZ19tYWMubW0KQEAgLTgsMTUgKzgsMTUgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCi0jaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmdfbWFj
LmgiCiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0KIG5hbWVzcGFjZSBy
dGMgewogc3RkOjpzdHJpbmcgRGVzY3JpcHRpb25Gcm9tT1NTdGF0dXMoT1NTdGF0dXMgZXJyKSB7
CiAgIE5TRXJyb3IqIGVycm9yID0KICAgICAgIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU09T
U3RhdHVzRXJyb3JEb21haW4gY29kZTplcnIgdXNlckluZm86bmlsXTsKICAgcmV0dXJuIGVycm9y
LmRlc2NyaXB0aW9uLlVURjhTdHJpbmc7CiB9CisKIH0gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L2xvZ2dpbmdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nX3VuaXR0ZXN0LmNjCmluZGV4IDZiMjI2MzkyM2ZhODUw
MWI2N2IzYmRlYWNjMDQ2NzdlMDRjNmRmMzYuLjRkZTFjZjJmZTRjYWFiM2U3ZWRkNDRlYjliZmQ0
NDdhMDZkZmIwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ191bml0dGVzdC5j
YwpAQCAtMjIxLDcgKzIyMSw3IEBAIFRFU1QoTG9nVGVzdCwgU2luZ2xlU3RyZWFtKSB7CiAKICNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKIFRFU1Qo
TG9nVGVzdCwgQ2hlY2tzKSB7Ci0gIEVYUEVDVF9ERUFUSChSVENfRkFUQUwoKSA8PCAibWVzc2Fn
ZSIsCisgIEVYUEVDVF9ERUFUSChGQVRBTCgpIDw8ICJtZXNzYWdlIiwKICAgICAgICAgICAgICAg
ICJcblxuI1xuIgogICAgICAgICAgICAgICAgIiMgRmF0YWwgZXJyb3IgaW46IFxcUyssIGxpbmUg
XFx3K1xuIgogICAgICAgICAgICAgICAgIiMgbGFzdCBzeXN0ZW0gZXJyb3I6IFxcdytcbiIKQEAg
LTI5Miw3ICsyOTIsNyBAQCBjbGFzcyBMb2dUaHJlYWQgewogICBzdGF0aWMgdm9pZCBUaHJlYWRF
bnRyeSh2b2lkKiBwKSB7IHN0YXRpY19jYXN0PExvZ1RocmVhZCo+KHApLT5SdW4oKTsgfQogCiAg
IFBsYXRmb3JtVGhyZWFkIHRocmVhZF87Ci0gIEV2ZW50IGV2ZW50X3tmYWxzZSwgZmFsc2V9Owor
ICBFdmVudCBldmVudF87CiB9OwogCiAvLyBFbnN1cmUgd2UgZG9uJ3QgY3Jhc2ggd2hlbiBhZGRp
bmcvcmVtb3Zpbmcgc3RyZWFtcyB3aGlsZSB0aHJlYWRzIGFyZSBnb2luZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ3Np
bmtzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbG9nc2lua3MuY2MKaW5kZXggNjYyYjFmMjBkZTk3ODVjNzUzNjA4NDBhYTVlZThiMDljN2Q5
ZTcxNy4uYzAxYmFmYmRkMjI4MGY0NTk4OGIyOTI3Y2M3NWJjYjA0ZGE0Zjg2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9n
c2lua3MuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvbG9nc2lua3MuY2MKQEAgLTEwLDEwICsxMCwxMiBAQAogCiAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nc2lua3MuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGNzdGRp
bz4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xv
Z3NpbmtzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9sb2dzaW5rcy5oCmluZGV4IGNhZjRhNWY3MjhhMzc5NDUyNTBkMGY4OTI1NzI5MGI1Y2Jj
NTQ3OTcuLmQwODY3YTIyMDI0YmJkMTVlN2VkZGY4NDU1YzNjOTdkZDBmOTYxNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xv
Z3NpbmtzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvbG9nc2lua3MuaApAQCAtMTEsNiArMTEsNyBAQAogI2lmbmRlZiBSVENfQkFTRV9M
T0dTSU5LU19IXwogI2RlZmluZSBSVENfQkFTRV9MT0dTSU5LU19IXwogCisjaW5jbHVkZSA8c3Rk
ZGVmLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWRu
c19yZXNwb25kZXJfaW50ZXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZG5zX3Jlc3BvbmRlcl9pbnRlcmZhY2UuaAppbmRleCA5ZGJh
ZjU2YWQ4OGYxMDU5YmYzZjNmMDA0OGFhMWMwYTYxNTZhODdiLi43MTkzOGIyNTc2ZDc5ZGQ4YTZj
NzE3ZTZhMjA1ZDQzNjVhYzIxN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZG5zX3Jlc3BvbmRlcl9pbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9t
ZG5zX3Jlc3BvbmRlcl9pbnRlcmZhY2UuaApAQCAtMTIsMzYgKzEyLDM1IEBACiAjZGVmaW5lIFJU
Q19CQVNFX01ETlNfUkVTUE9OREVSX0lOVEVSRkFDRV9IXwogCiAjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHNldD4KICNp
bmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJydGNfYmFzZS9pcGFkZHJlc3MuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCiAv
LyBEZWZpbmVzIGFuIG1ETlMgcmVzcG9uZGVyIHRoYXQgY2FuIGJlIHVzZWQgaW4gSUNFIGNhbmRp
ZGF0ZSBnYXRoZXJpbmcsIHdoZXJlCi0vLyB0aGUgbG9jYWwgSVAgYWRkcmVzc2VzIG9mIGhvc3Qg
Y2FuZGlkYXRlcyBhcmUgb2JmdXNjYXRlZCBieSBtRE5TIGhvc3RuYW1lcy4KLWNsYXNzIE1EbnNS
ZXNwb25kZXJJbnRlcmZhY2UgeworLy8gdGhlIGxvY2FsIElQIGFkZHJlc3NlcyBvZiBob3N0IGNh
bmRpZGF0ZXMgYXJlIHJlcGxhY2VkIGJ5IG1ETlMgaG9zdG5hbWVzLgorY2xhc3MgTWRuc1Jlc3Bv
bmRlckludGVyZmFjZSB7CiAgcHVibGljOgogICB1c2luZyBOYW1lQ3JlYXRlZENhbGxiYWNrID0K
ICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBydGM6OklQQWRkcmVzcyYsIGNvbnN0IHN0
ZDo6c3RyaW5nJik+OwogICB1c2luZyBOYW1lUmVtb3ZlZENhbGxiYWNrID0gc3RkOjpmdW5jdGlv
bjx2b2lkKGJvb2wpPjsKIAotICBNRG5zUmVzcG9uZGVySW50ZXJmYWNlKCkgPSBkZWZhdWx0Owot
ICB2aXJ0dWFsIH5NRG5zUmVzcG9uZGVySW50ZXJmYWNlKCkgPSBkZWZhdWx0OworICBNZG5zUmVz
cG9uZGVySW50ZXJmYWNlKCkgPSBkZWZhdWx0OworICB2aXJ0dWFsIH5NZG5zUmVzcG9uZGVySW50
ZXJmYWNlKCkgPSBkZWZhdWx0OwogCi0gIC8vIEFzeW5jaHJvbm91c2x5IGNyZWF0ZXMgYSB0eXBl
LTQgVVVJRCBob3N0bmFtZSBmb3IgYW4gSVAgYWRkcmVzcy4gVGhlCi0gIC8vIGNyZWF0ZWQgbmFt
ZSBzaG91bGQgYmUgZ2l2ZW4gdG8gfGNhbGxiYWNrfCB3aXRoIHRoZSBhZGRyZXNzIHRoYXQgaXQK
LSAgLy8gcmVwcmVzZW50cy4KKyAgLy8gQXN5bmNocm9ub3VzbHkgY3JlYXRlcyBhbmQgcmV0dXJu
cyBhIG5ldyBuYW1lIHZpYSB8Y2FsbGJhY2t8IGZvciB8YWRkcnwgaWYKKyAgLy8gdGhlcmUgaXMg
bm8gbmFtZSBtYXBwZWQgdG8gaXQgYnkgdGhpcyByZXNwb25kZXIsIGFuZCBpbml0aWFsaXplcyB0
aGUKKyAgLy8gcmVmZXJlbmNlIGNvdW50IG9mIHRoaXMgbmFtZSB0byBvbmUuIE90aGVyd2lzZSB0
aGUgZXhpc3RpbmcgbmFtZSBtYXBwZWQgdG8KKyAgLy8gfGFkZHJ8IGlzIHJldHVybmVkIGFuZCBp
dHMgcmVmZXJlbmNlIGNvdW50IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4KICAgdmlydHVhbCB2b2lk
IENyZWF0ZU5hbWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiBhZGRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxsYmFj
aykgPSAwOwotICAvLyBSZW1vdmVzIHRoZSBuYW1lIG1hcHBlZCB0byB0aGUgZ2l2ZW4gYWRkcmVz
cyBpZiB0aGVyZSBpcyBzdWNoIGFuCi0gIC8vIG5hbWUtYWRkcmVzcyBtYXBwaW5nIHByZXZpb3Vz
bHkgY3JlYXRlZCB2aWEgQ3JlYXRlTmFtZUZvckFkZHJlc3MuIFRoZQotICAvLyByZXN1bHQgb2Yg
d2hldGhlciBhbiBhc3NvY2lhdGVkIG5hbWUtYWRkcmVzcyBtYXBwaW5nIGlzIHJlbW92ZWQgc2hv
dWxkIGJlCi0gIC8vIGdpdmVuIHRvIHxjYWxsYmFja3wuCisgIC8vIERlY3JlbWVudHMgdGhlIHJl
ZmVyZW5jZSBjb3VudCBvZiB0aGUgbWFwcGVkIG5hbWUgb2YgfGFkZHJ8LCBpZgorICAvLyB0aGVy
ZSBpcyBhIG1hcCBjcmVhdGVkIHByZXZpb3VzbHkgdmlhIENyZWF0ZU5hbWVGb3JBZGRyZXNzOyBh
c3luY2hyb25vdXNseQorICAvLyByZW1vdmVzIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIHxhZGRy
fCBhbmQgaXRzIG1hcHBlZCBuYW1lLCBhbmQgcmV0dXJucworICAvLyB0cnVlIHZpYSB8Y2FsbGJh
Y2t8IGlmIHRoZSBkZWNyZW1lbnRlZCByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLgorICAv
LyBPdGhlcndpc2Ugbm8gb3BlcmF0aW9uIGlzIGRvbmUgYW5kIGZhbHNlIGlzIHJldHVybmVkIHZp
YSB8Y2FsbGJhY2t8CisgIC8vIGFzeW5jaHJvbm91c2x5LgogICB2aXJ0dWFsIHZvaWQgUmVtb3Zl
TmFtZUZvckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOYW1lUmVtb3ZlZENhbGxiYWNrIGNhbGxiYWNrKSA9IDA7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvbWVtb3J5L2FsaWduZWRfbWFsbG9jLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5L2FsaWduZWRfbWFsbG9jLmNj
CmluZGV4IGExZDU0YmRiNzg1YThkZmRhNWUzNDkzZDAyNmI5YWM0ZWQzOTIxMTkuLmM4OTNjOTZl
ZjJhZjA4ODNjMDNmYTEyMGVmZjM4NWE1OGUzYWNiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeS9hbGlnbmVkX21h
bGxvYy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9tZW1vcnkvYWxpZ25lZF9tYWxsb2MuY2MKQEAgLTEwLDggKzEwLDggQEAKIAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL21lbW9yeS9hbGlnbmVkX21hbGxvYy5oIgogCi0jaW5jbHVkZSA8c3Rk
bGliLmg+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIGZvciBm
cmVlLCBtYWxsb2MKKyNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIGZvciBtZW1jcHkKIAogI2lmZGVm
IF9XSU4zMgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeV9zdHJlYW0uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZW1vcnlf
c3RyZWFtLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MWRlMDcwYzcyODFjYjhmN2Y0OTk1NzZlNmM2ZGMxMDg3
MTk2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZW1vcnlfc3RyZWFtLmNjCkBAIC0wLDAgKzEsMTQzIEBACisv
KgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisjaW5jbHVkZSAicnRj
X2Jhc2UvbWVtb3J5X3N0cmVhbS5oIgorCituYW1lc3BhY2UgcnRjIHsKKworU3RyZWFtU3RhdGUg
TWVtb3J5U3RyZWFtOjpHZXRTdGF0ZSgpIGNvbnN0IHsKKyAgcmV0dXJuIFNTX09QRU47Cit9CisK
K1N0cmVhbVJlc3VsdCBNZW1vcnlTdHJlYW06OlJlYWQodm9pZCogYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnl0ZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50KiBlcnJvcikgeworICBpZiAoc2Vla19wb3NpdGlvbl8gPj0gZGF0YV9sZW5n
dGhfKSB7CisgICAgcmV0dXJuIFNSX0VPUzsKKyAgfQorICBzaXplX3QgYXZhaWxhYmxlID0gZGF0
YV9sZW5ndGhfIC0gc2Vla19wb3NpdGlvbl87CisgIGlmIChieXRlcyA+IGF2YWlsYWJsZSkgewor
ICAgIC8vIFJlYWQgcGFydGlhbCBidWZmZXIKKyAgICBieXRlcyA9IGF2YWlsYWJsZTsKKyAgfQor
ICBtZW1jcHkoYnVmZmVyLCAmYnVmZmVyX1tzZWVrX3Bvc2l0aW9uX10sIGJ5dGVzKTsKKyAgc2Vl
a19wb3NpdGlvbl8gKz0gYnl0ZXM7CisgIGlmIChieXRlc19yZWFkKSB7CisgICAgKmJ5dGVzX3Jl
YWQgPSBieXRlczsKKyAgfQorICByZXR1cm4gU1JfU1VDQ0VTUzsKK30KKworU3RyZWFtUmVzdWx0
IE1lbW9yeVN0cmVhbTo6V3JpdGUoY29uc3Qgdm9pZCogYnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90KiBieXRlc193cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50KiBlcnJvcikgeworICBzaXplX3QgYXZhaWxhYmxlID0gYnVmZmVyX2xlbmd0
aF8gLSBzZWVrX3Bvc2l0aW9uXzsKKyAgaWYgKDAgPT0gYXZhaWxhYmxlKSB7CisgICAgLy8gSW5j
cmVhc2UgYnVmZmVyIHNpemUgdG8gdGhlIGxhcmdlciBvZjoKKyAgICAvLyBhKSBuZXcgcG9zaXRp
b24gcm91bmRlZCB1cCB0byBuZXh0IDI1NiBieXRlcworICAgIC8vIGIpIGRvdWJsZSB0aGUgcHJl
dmlvdXMgbGVuZ3RoCisgICAgc2l6ZV90IG5ld19idWZmZXJfbGVuZ3RoID0KKyAgICAgICAgc3Rk
OjptYXgoKChzZWVrX3Bvc2l0aW9uXyArIGJ5dGVzKSB8IDB4RkYpICsgMSwgYnVmZmVyX2xlbmd0
aF8gKiAyKTsKKyAgICBTdHJlYW1SZXN1bHQgcmVzdWx0ID0gRG9SZXNlcnZlKG5ld19idWZmZXJf
bGVuZ3RoLCBlcnJvcik7CisgICAgaWYgKFNSX1NVQ0NFU1MgIT0gcmVzdWx0KSB7CisgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBSVENfRENIRUNLKGJ1ZmZlcl9sZW5ndGhfID49IG5l
d19idWZmZXJfbGVuZ3RoKTsKKyAgICBhdmFpbGFibGUgPSBidWZmZXJfbGVuZ3RoXyAtIHNlZWtf
cG9zaXRpb25fOworICB9CisKKyAgaWYgKGJ5dGVzID4gYXZhaWxhYmxlKSB7CisgICAgYnl0ZXMg
PSBhdmFpbGFibGU7CisgIH0KKyAgbWVtY3B5KCZidWZmZXJfW3NlZWtfcG9zaXRpb25fXSwgYnVm
ZmVyLCBieXRlcyk7CisgIHNlZWtfcG9zaXRpb25fICs9IGJ5dGVzOworICBpZiAoZGF0YV9sZW5n
dGhfIDwgc2Vla19wb3NpdGlvbl8pIHsKKyAgICBkYXRhX2xlbmd0aF8gPSBzZWVrX3Bvc2l0aW9u
XzsKKyAgfQorICBpZiAoYnl0ZXNfd3JpdHRlbikgeworICAgICpieXRlc193cml0dGVuID0gYnl0
ZXM7CisgIH0KKyAgcmV0dXJuIFNSX1NVQ0NFU1M7Cit9CisKK3ZvaWQgTWVtb3J5U3RyZWFtOjpD
bG9zZSgpIHsKKyAgLy8gbm90aGluZyB0byBkbworfQorCitib29sIE1lbW9yeVN0cmVhbTo6U2V0
UG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSB7CisgIGlmIChwb3NpdGlvbiA+IGRhdGFfbGVuZ3Ro
XykKKyAgICByZXR1cm4gZmFsc2U7CisgIHNlZWtfcG9zaXRpb25fID0gcG9zaXRpb247CisgIHJl
dHVybiB0cnVlOworfQorCitib29sIE1lbW9yeVN0cmVhbTo6R2V0UG9zaXRpb24oc2l6ZV90KiBw
b3NpdGlvbikgY29uc3QgeworICBpZiAocG9zaXRpb24pCisgICAgKnBvc2l0aW9uID0gc2Vla19w
b3NpdGlvbl87CisgIHJldHVybiB0cnVlOworfQorCitib29sIE1lbW9yeVN0cmVhbTo6R2V0U2l6
ZShzaXplX3QqIHNpemUpIGNvbnN0IHsKKyAgaWYgKHNpemUpCisgICAgKnNpemUgPSBkYXRhX2xl
bmd0aF87CisgIHJldHVybiB0cnVlOworfQorCitib29sIE1lbW9yeVN0cmVhbTo6UmVzZXJ2ZVNp
emUoc2l6ZV90IHNpemUpIHsKKyAgcmV0dXJuIChTUl9TVUNDRVNTID09IERvUmVzZXJ2ZShzaXpl
LCBudWxscHRyKSk7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworTWVtb3J5U3RyZWFt
OjpNZW1vcnlTdHJlYW0oKSB7fQorCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShjb25zdCBj
aGFyKiBkYXRhKSB7CisgIFNldERhdGEoZGF0YSwgc3RybGVuKGRhdGEpKTsKK30KKworTWVtb3J5
U3RyZWFtOjpNZW1vcnlTdHJlYW0oY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgewor
ICBTZXREYXRhKGRhdGEsIGxlbmd0aCk7Cit9CisKK01lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVh
bSgpIHsKKyAgZGVsZXRlW10gYnVmZmVyXzsKK30KKwordm9pZCBNZW1vcnlTdHJlYW06OlNldERh
dGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeworICBkYXRhX2xlbmd0aF8gPSBi
dWZmZXJfbGVuZ3RoXyA9IGxlbmd0aDsKKyAgZGVsZXRlW10gYnVmZmVyXzsKKyAgYnVmZmVyXyA9
IG5ldyBjaGFyW2J1ZmZlcl9sZW5ndGhfXTsKKyAgbWVtY3B5KGJ1ZmZlcl8sIGRhdGEsIGRhdGFf
bGVuZ3RoXyk7CisgIHNlZWtfcG9zaXRpb25fID0gMDsKK30KKworU3RyZWFtUmVzdWx0IE1lbW9y
eVN0cmVhbTo6RG9SZXNlcnZlKHNpemVfdCBzaXplLCBpbnQqIGVycm9yKSB7CisgIGlmIChidWZm
ZXJfbGVuZ3RoXyA+PSBzaXplKQorICAgIHJldHVybiBTUl9TVUNDRVNTOworCisgIGlmIChjaGFy
KiBuZXdfYnVmZmVyID0gbmV3IGNoYXJbc2l6ZV0pIHsKKyAgICBtZW1jcHkobmV3X2J1ZmZlciwg
YnVmZmVyXywgZGF0YV9sZW5ndGhfKTsKKyAgICBkZWxldGVbXSBidWZmZXJfOworICAgIGJ1ZmZl
cl8gPSBuZXdfYnVmZmVyOworICAgIGJ1ZmZlcl9sZW5ndGhfID0gc2l6ZTsKKyAgICByZXR1cm4g
U1JfU1VDQ0VTUzsKKyAgfQorCisgIGlmIChlcnJvcikgeworICAgICplcnJvciA9IEVOT01FTTsK
KyAgfQorICByZXR1cm4gU1JfRVJST1I7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L21lbW9yeV9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL21lbW9yeV9zdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzZmNzFiMzRjMDEwYjIy
NjNlNDc4MDI5MzI5YjFlY2ZkMjcwZDcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5X3N0cmVhbS5oCkBA
IC0wLDAgKzEsNTkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfTUVN
T1JZX1NUUkVBTV9IXworI2RlZmluZSBSVENfQkFTRV9NRU1PUllfU1RSRUFNX0hfCisKKyNpbmNs
dWRlICJydGNfYmFzZS9zdHJlYW0uaCIKKworbmFtZXNwYWNlIHJ0YyB7CisKKy8vIE1lbW9yeVN0
cmVhbSBkeW5hbWljYWxseSByZXNpemVzIHRvIGFjY29tb2RhdGUgd3JpdHRlbiBkYXRhLgorCitj
bGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKKyBwdWJs
aWM6CisgIE1lbW9yeVN0cmVhbSgpOworICBleHBsaWNpdCBNZW1vcnlTdHJlYW0oY29uc3QgY2hh
ciogZGF0YSk7ICAvLyBDYWxscyBTZXREYXRhKGRhdGEsIHN0cmxlbihkYXRhKSkKKyAgTWVtb3J5
U3RyZWFtKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpOyAgLy8gQ2FsbHMgU2V0RGF0
YShkYXRhLCBsZW5ndGgpCisgIH5NZW1vcnlTdHJlYW0oKSBvdmVycmlkZTsKKworICBTdHJlYW1T
dGF0ZSBHZXRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICBTdHJlYW1SZXN1bHQgUmVhZCh2b2lk
KiBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlcywKKyAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90KiBieXRlc19yZWFkLAorICAgICAgICAgICAgICAgICAgICBpbnQqIGVy
cm9yKSBvdmVycmlkZTsKKyAgU3RyZWFtUmVzdWx0IFdyaXRlKGNvbnN0IHZvaWQqIGJ1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlcywKKyAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCogYnl0ZXNfd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgIGludCogZXJyb3Ip
IG92ZXJyaWRlOworICB2b2lkIENsb3NlKCkgb3ZlcnJpZGU7CisgIGJvb2wgU2V0UG9zaXRpb24o
c2l6ZV90IHBvc2l0aW9uKSBvdmVycmlkZTsKKyAgYm9vbCBHZXRQb3NpdGlvbihzaXplX3QqIHBv
c2l0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgYm9vbCBHZXRTaXplKHNpemVfdCogc2l6ZSkgY29u
c3Qgb3ZlcnJpZGU7CisgIGJvb2wgUmVzZXJ2ZVNpemUoc2l6ZV90IHNpemUpIG92ZXJyaWRlOwor
CisgIGNoYXIqIEdldEJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlcl87IH0KKyAgY29uc3QgY2hhciog
R2V0QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gYnVmZmVyXzsgfQorCisgIHZvaWQgU2V0RGF0YShj
b25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKworIHByaXZhdGU6CisgIFN0cmVhbVJl
c3VsdCBEb1Jlc2VydmUoc2l6ZV90IHNpemUsIGludCogZXJyb3IpOworCisgIC8vIEludmFyaWFu
dDogMCA8PSBzZWVrX3Bvc2l0aW9uIDw9IGRhdGFfbGVuZ3RoXyA8PSBidWZmZXJfbGVuZ3RoXwor
ICBjaGFyKiBidWZmZXJfID0gbnVsbHB0cjsKKyAgc2l6ZV90IGJ1ZmZlcl9sZW5ndGhfID0gMDsK
KyAgc2l6ZV90IGRhdGFfbGVuZ3RoXyA9IDA7CisgIHNpemVfdCBzZWVrX3Bvc2l0aW9uXyA9IDA7
Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcnRjCisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfTUVNT1JZ
X1NUUkVBTV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5X3VzYWdlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVtb3J5X3VzYWdlLmNjCmluZGV4IGE3MGM1
NDc1M2ZjNGFmN2M4NTc0MzVjNDhkMmE3NGViMWEyNDRiZjUuLjljZDM2ZDM3MjA5OWFhNDk3YjBi
NDNhYmM4NjZlYmJlMjNjYTY0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lbW9yeV91c2FnZS5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZW1vcnlfdXNhZ2Uu
Y2MKQEAgLTYxLDYgKzYxLDkgQEAgaW50NjRfdCBHZXRQcm9jZXNzUmVzaWRlbnRTaXplQnl0ZXMo
KSB7CiAgICAgcmV0dXJuIC0xOwogICB9CiAgIHJldHVybiBwbWMuV29ya2luZ1NldFNpemU7Cisj
ZWxpZiBkZWZpbmVkKFdFQlJUQ19GVUNIU0lBKQorICBSVENfTE9HX0VSUihMU19FUlJPUikgPDwg
IkdldFByb2Nlc3NSZXNpZGVudFNpemVCeXRlcygpIG5vdCBpbXBsZW1lbnRlZCI7CisgIHJldHVy
biAwOwogI2Vsc2UKICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KICAgc3RhdGljX2Fzc2VydChm
YWxzZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL21lc3NhZ2VkaWdlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmNjCmluZGV4IDljMTBiY2Q0
ODZhNzYxYmJlZDZkZmEzYTM5YjZkYmE4MGRhNDRmODkuLjVhMGQxNmE5YTA0YjY3MmVjNjljZmY3
N2ZjOTgyODc0NTA2NzdhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VkaWdlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5j
YwpAQCAtMTAsOSArMTAsOSBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5o
IgogCi0jaW5jbHVkZSA8bWVtb3J5PgotCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8
Y3N0ZGludD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3Ns
ZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNz
YWdlZGlnZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgKaW5kZXggZmM4MjA4ODU0MzZmOGNlNzFkNDVmNmNiMjE1
M2E3ZWY2MTczYjM5OC4uNzU3ZjkxNDg3NmIwN2U0MTMwNzgxZThlNGJjMTdmYTVmYWE5N2Y5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbWVzc2FnZWRpZ2VzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaApAQCAtMTEsNiArMTEsNyBAQAog
I2lmbmRlZiBSVENfQkFTRV9NRVNTQUdFRElHRVNUX0hfCiAjZGVmaW5lIFJUQ19CQVNFX01FU1NB
R0VESUdFU1RfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0cmluZz4KIAog
bmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZWhhbmRsZXIuaAppbmRl
eCBkZjJkMWFkYThkZGNlY2M0NDkzZTViYTI0NWE4NzQyNzBlYjAzYWY5Li4wYzQwODUzZTIxNDg1
NWM0NjQ3OGM1ZjdhOTBlZmYxNDIyNjRjNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3Nh
Z2VoYW5kbGVyLmgKQEAgLTExLDcgKzExLDYgQEAKICNpZm5kZWYgUlRDX0JBU0VfTUVTU0FHRUhB
TkRMRVJfSF8KICNkZWZpbmUgUlRDX0JBU0VfTUVTU0FHRUhBTkRMRVJfSF8KIAotI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3Ry
dWN0b3JtYWdpYy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbWVzc2FnZXF1ZXVlLmNjCmluZGV4IGE1
NjFhZjQyZWI4MDg0YTc0YTM5YmViYzlhNDQ4ODc3YjYyMzNkOGYuLjIwNDk1MmE3ZTJhYmZiNDIz
Mzg4MzRlMGVjOTM0YzRlYmNmZTVkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlcXVl
dWUuY2MKQEAgLTgsMTMgKzgsMTUgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2F0b21pY29wcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS90aHJlYWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS90cmFjZV9ldmVudC5oIgogCiBuYW1lc3BhY2UgcnRjIHsKQEAgLTM0OCw4ICszNTAs
MTAgQEAgdm9pZCBNZXNzYWdlUXVldWU6OlBvc3QoY29uc3QgTG9jYXRpb24mIHBvc3RlZF9mcm9t
LAogICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBNZXNzYWdlRGF0YSogcGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHRpbWVfc2Vuc2l0aXZlKSB7Ci0gIGlmIChJc1F1aXR0aW5nKCkpCisgIGlmIChJc1F1aXR0aW5n
KCkpIHsKKyAgICBkZWxldGUgcGRhdGE7CiAgICAgcmV0dXJuOworICB9CiAKICAgLy8gS2VlcCB0
aHJlYWQgc2FmZQogICAvLyBBZGQgdGhlIG1lc3NhZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUK
QEAgLTQwNSw2ICs0MDksNyBAQCB2b2lkIE1lc3NhZ2VRdWV1ZTo6RG9EZWxheVBvc3QoY29uc3Qg
TG9jYXRpb24mIHBvc3RlZF9mcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VEYXRhKiBw
ZGF0YSkgewogICBpZiAoSXNRdWl0dGluZygpKSB7CisgICAgZGVsZXRlIHBkYXRhOwogICAgIHJl
dHVybjsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9tZXNzYWdlcXVldWUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oCmluZGV4IGU3ZTQ3
OTI4NWQyMGM4MzM5YTYyZWU2M2VhZjNhYTUwZDA5OWUwMmUuLmMxYjliNWE5MTZhODk1YWMwNmYy
YmRlYjdiNTk5Y2FjNjNkZTc4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL21lc3NhZ2VxdWV1ZS5o
CkBAIC0xNyw3ICsxNyw2IEBACiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8cXVldWU+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAK
ICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCkBAIC0yOCw3ICsyNyw2IEBA
CiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0c2VydmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
dGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFk
X2Fubm90YXRpb25zLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCiAKIG5hbWVz
cGFjZSBydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuY2MKaW5kZXggODExOTM3NjFh
NjNjMDU1YzcyNjkxYTkxZGZjNjNjMDMzMzg5ZTEwZi4uYjAwNWVjYWU3YTBkMWE1YmY2YTBhNmE0
NTgyZDEwYTFjNzhkOWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmF0c2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25hdHNlcnZlci5jYwpAQCAtMTU4
LDcgKzE1OCw3IEBAIHZvaWQgTkFUU2VydmVyOjpPbkludGVybmFsVURQUGFja2V0KEFzeW5jUGFj
a2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tl
dEFkZHJlc3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgaW50NjRfdCYgLyogcGFja2V0X3RpbWVfdXMgKi8pIHsKICAgLy8gUmVh
ZCB0aGUgaW50ZW5kZWQgZGVzdGluYXRpb24gZnJvbSB0aGUgd2lyZS4KICAgU29ja2V0QWRkcmVz
cyBkZXN0X2FkZHI7CiAgIHNpemVfdCBsZW5ndGggPSBVbnBhY2tBZGRyZXNzRnJvbU5BVChidWYs
IHNpemUsICZkZXN0X2FkZHIpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgTkFUU2VydmVyOjpP
bkV4dGVybmFsVURQUGFja2V0KEFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFja2V0VGltZSYgcGFja2V0X3Rp
bWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3Qm
IC8qIHBhY2tldF90aW1lX3VzICovKSB7CiAgIFNvY2tldEFkZHJlc3MgbG9jYWxfYWRkciA9IHNv
Y2tldC0+R2V0TG9jYWxBZGRyZXNzKCk7CiAKICAgLy8gRmluZCB0aGUgdHJhbnNsYXRpb24gZm9y
IHRoaXMgYWRkcmVzc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmF0c2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuaAppbmRleCBmNGNhYmNm
MGQ5YjdlMTMwYjVjOGQyOTlhOTVjNDhiODkxMTBkZTY0Li5kMTZiNTM3MGYwNTA3YzZjODRlZTg4
ODEzNTM5Y2RlOWJlZmM2YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uYXRzZXJ2ZXIuaApAQCAtODEs
MTIgKzgxLDEyIEBAIGNsYXNzIE5BVFNlcnZlciA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8
PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFNvY2tldEFkZHJlc3MmIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAgIHZvaWQgT25FeHRlcm5hbFVE
UFBhY2tldChBc3luY1BhY2tldFNvY2tldCogc29ja2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTb2NrZXRBZGRyZXNzJiBy
ZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUm
IHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3Qm
IHBhY2tldF90aW1lX3VzKTsKIAogIHByaXZhdGU6CiAgIHR5cGVkZWYgc3RkOjpzZXQ8U29ja2V0
QWRkcmVzcywgQWRkckNtcD4gQWRkcmVzc1NldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldGhlbHBlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVyLmgK
aW5kZXggZTg2ZDEyNmNiZjQ1YzZmNzllYTIwMTUxNTUwMTU4OGQxYTU4M2RlYi4uZjk1NjEzODBm
YjdkMjMwMzJhYWU5ZjZiMDZjZTkyMTkzM2MwZWUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVs
cGVyLmgKQEAgLTEwLDcgKzEwLDYgQEAKICNpZm5kZWYgUlRDX0JBU0VfTkVUSEVMUEVSX0hfCiAj
ZGVmaW5lIFJUQ19CQVNFX05FVEhFTFBFUl9IXwogCi0jaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNs
dWRlIDxzdHJpbmc+CiAKIC8vIFRoaXMgaGVhZGVyIGNvbnRhaW5zIGhlbHBlciBmdW5jdGlvbnMg
YW5kIGNvbnN0YW50cyB1c2VkIGJ5IGRpZmZlcmVudCB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVycy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25l
dGhlbHBlcnMuY2MKaW5kZXggYjEyMjFjM2QwMDE0ZGI2MzQ0MThiYmRiZmIxZDdlNjU4NzhjZTg1
Yi4uODFjZDFhZmNlZjRhMDY5ZTZhNzZhMDc2ZGEyMGQxY2UxMDcxYjMxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVs
cGVycy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9uZXRoZWxwZXJzLmNjCkBAIC0yNSwxMCArMjUsOSBAQAogI2VuZGlmCiAjZW5kaWYg
IC8vIGRlZmluZWQoV0VCUlRDX1BPU0lYKSAmJiAhZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykK
IAotI2luY2x1ZGUgInJ0Y19iYXNlL2J5dGVvcmRlci5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9zaWduYWx0aHJlYWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90
L3NpZ3Nsb3QuaCIgIC8vIGZvciBzaWduYWxfd2l0aF90aHJlYWQuLi4KIAogbmFtZXNwYWNlIHJ0
YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL25ldGhlbHBlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldGhlbHBlcnMuaAppbmRleCBmOWQxODhmNjFkMDlhNzc4
MjUxMzczYzczOGRhZTdlODY5MzI0YTFlLi4xMzhmOTU4M2NjY2ExYWNhOGE4MDhmZGFkYzQxMmM4
ZmI0YTgwZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9uZXRoZWxwZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0aGVscGVycy5oCkBAIC0xMiwxOCArMTIs
MTcgQEAKICNkZWZpbmUgUlRDX0JBU0VfTkVUSEVMUEVSU19IXwogCiAjaWYgZGVmaW5lZChXRUJS
VENfUE9TSVgpCi0jaW5jbHVkZSA8bmV0ZGIuaD4KLSNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNs
dWRlIDxzeXMvc29ja2V0Lmg+CiAjZWxpZiBXRUJSVENfV0lOCiAjaW5jbHVkZSA8d2luc29jazIu
aD4gIC8vIE5PTElOVAogI2VuZGlmCiAKLSNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHZlY3Rv
cj4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jcmVzb2x2ZXJpbnRlcmZhY2UuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9pcGFkZHJlc3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zaWduYWx0aHJl
YWQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCi0jaW5jbHVkZSAicnRj
X2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgiCiAKIG5hbWVzcGFjZSBydGMgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9uZXR3b3JrLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbmV0d29yay5jYwppbmRleCA2Nzg4OGVkZTgzNDIzMTBhMDcwNmNmMTNh
ZjgyNGFlOWI1ZjMyOTkyLi41YzdiMDE5ZDY2YzJmZGQzMjU1ZDUyMGNlMzIwM2Y3Yzk2YjkxYmM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9uZXR3b3JrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsuY2MKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRl
ICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29ya21vbml0b3Iu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIgIC8vIGluY2x1ZGVzIHNvbWV0aGluZyB0
aGF0IG1ha2VzIHdpbmRvd3MgaGFwcHkKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJp
bmdzL3N0cmluZ19idWlsZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIK
QEAgLTI2MCw3ICsyNTksNyBAQCBib29sIE5ldHdvcmtNYW5hZ2VyOjpHZXREZWZhdWx0TG9jYWxB
ZGRyZXNzKGludCBmYW1pbHksIElQQWRkcmVzcyogYWRkcikgY29uc3QgewogICByZXR1cm4gZmFs
c2U7CiB9CiAKLXdlYnJ0Yzo6TURuc1Jlc3BvbmRlckludGVyZmFjZSogTmV0d29ya01hbmFnZXI6
OkdldE1EbnNSZXNwb25kZXIoKSBjb25zdCB7Cit3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZh
Y2UqIE5ldHdvcmtNYW5hZ2VyOjpHZXRNZG5zUmVzcG9uZGVyKCkgY29uc3QgewogICByZXR1cm4g
bnVsbHB0cjsKIH0KIApAQCAtMjg2LDcgKzI4NSw3IEBAIHZvaWQgTmV0d29ya01hbmFnZXJCYXNl
OjpHZXRBbnlBZGRyZXNzTmV0d29ya3MoTmV0d29ya0xpc3QqIG5ldHdvcmtzKSB7CiAgICAgICAg
IG5ldyBydGM6Ok5ldHdvcmsoImFueSIsICJhbnkiLCBpcHY0X2FueV9hZGRyZXNzLCAwLCBBREFQ
VEVSX1RZUEVfQU5ZKSk7CiAgICAgaXB2NF9hbnlfYWRkcmVzc19uZXR3b3JrXy0+c2V0X2RlZmF1
bHRfbG9jYWxfYWRkcmVzc19wcm92aWRlcih0aGlzKTsKICAgICBpcHY0X2FueV9hZGRyZXNzX25l
dHdvcmtfLT5BZGRJUChpcHY0X2FueV9hZGRyZXNzKTsKLSAgICBpcHY0X2FueV9hZGRyZXNzX25l
dHdvcmtfLT5TZXRNRG5zUmVzcG9uZGVyKEdldE1EbnNSZXNwb25kZXIoKSk7CisgICAgaXB2NF9h
bnlfYWRkcmVzc19uZXR3b3JrXy0+U2V0TWRuc1Jlc3BvbmRlcihHZXRNZG5zUmVzcG9uZGVyKCkp
OwogICB9CiAgIG5ldHdvcmtzLT5wdXNoX2JhY2soaXB2NF9hbnlfYWRkcmVzc19uZXR3b3JrXy5n
ZXQoKSk7CiAKQEAgLTI5Nyw3ICsyOTYsNyBAQCB2b2lkIE5ldHdvcmtNYW5hZ2VyQmFzZTo6R2V0
QW55QWRkcmVzc05ldHdvcmtzKE5ldHdvcmtMaXN0KiBuZXR3b3JrcykgewogICAgICAgICAgICJh
bnkiLCAiYW55IiwgaXB2Nl9hbnlfYWRkcmVzcywgMCwgQURBUFRFUl9UWVBFX0FOWSkpOwogICAg
ICAgaXB2Nl9hbnlfYWRkcmVzc19uZXR3b3JrXy0+c2V0X2RlZmF1bHRfbG9jYWxfYWRkcmVzc19w
cm92aWRlcih0aGlzKTsKICAgICAgIGlwdjZfYW55X2FkZHJlc3NfbmV0d29ya18tPkFkZElQKGlw
djZfYW55X2FkZHJlc3MpOwotICAgICAgaXB2Nl9hbnlfYWRkcmVzc19uZXR3b3JrXy0+U2V0TURu
c1Jlc3BvbmRlcihHZXRNRG5zUmVzcG9uZGVyKCkpOworICAgICAgaXB2Nl9hbnlfYWRkcmVzc19u
ZXR3b3JrXy0+U2V0TWRuc1Jlc3BvbmRlcihHZXRNZG5zUmVzcG9uZGVyKCkpOwogICAgIH0KICAg
ICBuZXR3b3Jrcy0+cHVzaF9iYWNrKGlwdjZfYW55X2FkZHJlc3NfbmV0d29ya18uZ2V0KCkpOwog
ICB9CkBAIC0zODcsNyArMzg2LDcgQEAgdm9pZCBOZXR3b3JrTWFuYWdlckJhc2U6Ok1lcmdlTmV0
d29ya0xpc3QoY29uc3QgTmV0d29ya0xpc3QmIG5ld19uZXR3b3JrcywKICAgICAgICAgZGVsZXRl
IG5ldDsKICAgICAgIH0KICAgICB9Ci0gICAgbmV0d29ya3NfbWFwX1trZXldLT5TZXRNRG5zUmVz
cG9uZGVyKEdldE1EbnNSZXNwb25kZXIoKSk7CisgICAgbmV0d29ya3NfbWFwX1trZXldLT5TZXRN
ZG5zUmVzcG9uZGVyKEdldE1kbnNSZXNwb25kZXIoKSk7CiAgIH0KICAgLy8gSXQgbWF5IHN0aWxs
IGhhcHBlbiB0aGF0IHRoZSBtZXJnZWQgbGlzdCBpcyBhIHN1YnNldCBvZiB8bmV0d29ya3NffC4K
ICAgLy8gVG8gZGV0ZWN0IHRoaXMgY2hhbmdlLCB3ZSBjb21wYXJlIHRoZWlyIHNpemVzLgpAQCAt
Nzc1LDI2ICs3NzQsMjggQEAgYm9vbCBCYXNpY05ldHdvcmtNYW5hZ2VyOjpDcmVhdGVOZXR3b3Jr
cyhib29sIGluY2x1ZGVfaWdub3JlZCwKIAogI2lmIGRlZmluZWQoV0VCUlRDX0xJTlVYKQogYm9v
bCBJc0RlZmF1bHRSb3V0ZShjb25zdCBzdGQ6OnN0cmluZyYgbmV0d29ya19uYW1lKSB7Ci0gIEZp
bGVTdHJlYW0gZnM7Ci0gIGlmICghZnMuT3BlbigiL3Byb2MvbmV0L3JvdXRlIiwgInIiLCBudWxs
cHRyKSkgeworICBGSUxFKiBmID0gZm9wZW4oIi9wcm9jL25ldC9yb3V0ZSIsICJyIik7CisgIGlm
ICghZikgewogICAgIFJUQ19MT0coTFNfV0FSTklORykKICAgICAgICAgPDwgIkNvdWxkbid0IHJl
YWQgL3Byb2MvbmV0L3JvdXRlLCBza2lwcGluZyBkZWZhdWx0ICIKICAgICAgICAgPDwgInJvdXRl
IGNoZWNrIChhc3N1bWluZyBldmVyeXRoaW5nIGlzIGEgZGVmYXVsdCByb3V0ZSkuIjsKICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgfSBlbHNlIHsKLSAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgIHdoaWxl
IChmcy5SZWFkTGluZSgmbGluZSkgPT0gU1JfU1VDQ0VTUykgewotICAgICAgY2hhciBpZmFjZV9u
YW1lWzI1Nl07Ci0gICAgICB1bnNpZ25lZCBpbnQgaWZhY2VfaXAsIGlmYWNlX2d3LCBpZmFjZV9t
YXNrLCBpZmFjZV9mbGFnczsKLSAgICAgIGlmIChzc2NhbmYobGluZS5jX3N0cigpLCAiJTI1NXMg
JThYICU4WCAlNFggJSpkICUqdSAlKmQgJThYIiwgaWZhY2VfbmFtZSwKLSAgICAgICAgICAgICAg
ICAgJmlmYWNlX2lwLCAmaWZhY2VfZ3csICZpZmFjZV9mbGFncywgJmlmYWNlX21hc2spID09IDUg
JiYKLSAgICAgICAgICBuZXR3b3JrX25hbWUgPT0gaWZhY2VfbmFtZSAmJiBpZmFjZV9tYXNrID09
IDAgJiYKLSAgICAgICAgICAoaWZhY2VfZmxhZ3MgJiAoUlRGX1VQIHwgUlRGX0hPU1QpKSA9PSBS
VEZfVVApIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9CisgIH0KKyAgYm9vbCBpc19k
ZWZhdWx0X3JvdXRlID0gZmFsc2U7CisgIGNoYXIgbGluZVs1MDBdOworICB3aGlsZSAoZmdldHMo
bGluZSwgc2l6ZW9mKGxpbmUpLCBmKSkgeworICAgIGNoYXIgaWZhY2VfbmFtZVsyNTZdOworICAg
IHVuc2lnbmVkIGludCBpZmFjZV9pcCwgaWZhY2VfZ3csIGlmYWNlX21hc2ssIGlmYWNlX2ZsYWdz
OworICAgIGlmIChzc2NhbmYobGluZSwgIiUyNTVzICU4WCAlOFggJTRYICUqZCAlKnUgJSpkICU4
WCIsIGlmYWNlX25hbWUsICZpZmFjZV9pcCwKKyAgICAgICAgICAgICAgICZpZmFjZV9ndywgJmlm
YWNlX2ZsYWdzLCAmaWZhY2VfbWFzaykgPT0gNSAmJgorICAgICAgICBuZXR3b3JrX25hbWUgPT0g
aWZhY2VfbmFtZSAmJiBpZmFjZV9tYXNrID09IDAgJiYKKyAgICAgICAgKGlmYWNlX2ZsYWdzICYg
KFJURl9VUCB8IFJURl9IT1NUKSkgPT0gUlRGX1VQKSB7CisgICAgICBpc19kZWZhdWx0X3JvdXRl
ID0gdHJ1ZTsKKyAgICAgIGJyZWFrOwogICAgIH0KICAgfQotICByZXR1cm4gZmFsc2U7CisgIGZj
bG9zZShmKTsKKyAgcmV0dXJuIGlzX2RlZmF1bHRfcm91dGU7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
bmV0d29yay5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbmV0d29yay5oCmluZGV4IDYwMWUzOWYwMjc3MWQwMzI5M2U4ZDczMDA4YWM4M2Q0YjI3
N2I3ODYuLjhiMWE1ZmNjNWMzZGVkMTE4M2JhODZiODAzN2RkOGQ4NmE5MGQ0Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25l
dHdvcmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9uZXR3b3JrLmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBjbGFzcyBOZXR3b3JrTWFuYWdl
ciA6IHB1YmxpYyBEZWZhdWx0TG9jYWxBZGRyZXNzUHJvdmlkZXIgewogCiAgIC8vIFJldHVybnMg
dGhlIG1ETlMgcmVzcG9uZGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gb2JmdXNjYXRlIHRoZSBsb2Nh
bCBJUAogICAvLyBhZGRyZXNzZXMgb2YgSUNFIGhvc3QgY2FuZGlkYXRlcyBieSBtRE5TIGhvc3Ru
YW1lcy4KLSAgdmlydHVhbCB3ZWJydGM6Ok1EbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1EbnNS
ZXNwb25kZXIoKSBjb25zdDsKKyAgdmlydHVhbCB3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZh
Y2UqIEdldE1kbnNSZXNwb25kZXIoKSBjb25zdDsKIH07CiAKIC8vIEJhc2UgY2xhc3MgZm9yIE5l
dHdvcmtNYW5hZ2VyIGltcGxlbWVudGF0aW9ucy4KQEAgLTM2NywxMSArMzY3LDExIEBAIGNsYXNz
IE5ldHdvcmsgewogICAvLyBjcmVhdGVkIG5hbWUgd2lsbCBiZSByZXNvbHZlZCBieSB0aGUgcmVz
cG9uZGVyLgogICAvLwogICAvLyBUaGUgbUROUyByZXNwb25kZXIsIGlmIG5vdCBudWxsLCBzaG91
bGQgb3V0bGl2ZSB0aGlzIHJ0Yzo6TmV0d29yay4KLSAgdm9pZCBTZXRNRG5zUmVzcG9uZGVyKHdl
YnJ0Yzo6TURuc1Jlc3BvbmRlckludGVyZmFjZSogbWRuc19yZXNwb25kZXIpIHsKKyAgdm9pZCBT
ZXRNZG5zUmVzcG9uZGVyKHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogbWRuc19yZXNw
b25kZXIpIHsKICAgICBtZG5zX3Jlc3BvbmRlcl8gPSBtZG5zX3Jlc3BvbmRlcjsKICAgfQogICAv
LyBSZXR1cm5zIHRoZSBtRE5TIHJlc3BvbmRlciwgd2hpY2ggaXMgbnVsbCBieSBkZWZhdWx0Lgot
ICB3ZWJydGM6Ok1EbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1EbnNSZXNwb25kZXIoKSBjb25z
dCB7CisgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigp
IGNvbnN0IHsKICAgICByZXR1cm4gbWRuc19yZXNwb25kZXJfOwogICB9CiAKQEAgLTQ0Niw3ICs0
NDYsNyBAQCBjbGFzcyBOZXR3b3JrIHsKICAgaW50IHByZWZpeF9sZW5ndGhfOwogICBzdGQ6OnN0
cmluZyBrZXlfOwogICBzdGQ6OnZlY3RvcjxJbnRlcmZhY2VBZGRyZXNzPiBpcHNfOwotICB3ZWJy
dGM6Ok1EbnNSZXNwb25kZXJJbnRlcmZhY2UqIG1kbnNfcmVzcG9uZGVyXyA9IG51bGxwdHI7Cisg
IHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogbWRuc19yZXNwb25kZXJfID0gbnVsbHB0
cjsKICAgaW50IHNjb3BlX2lkXzsKICAgYm9vbCBpZ25vcmVkXzsKICAgQWRhcHRlclR5cGUgdHlw
ZV87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9uZXR3b3JrL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29yay9CVUlMRC5nbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZmJk
YmIxZWRiYjBhZmMyNGUxZjRiYjdjMTM1NDM2YTQ4ZWU4NDJjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29y
ay9CVUlMRC5nbgpAQCAtMCwwICsxLDE5IEBACisjIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorIyB0aGF0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UKKyMgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisjIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorCitpbXBvcnQoIi4uLy4uL3dlYnJ0Yy5nbmki
KQorCitydGNfc291cmNlX3NldCgic2VudF9wYWNrZXQiKSB7CisgIHNvdXJjZXMgPSBbCisgICAg
InNlbnRfcGFja2V0LmNjIiwKKyAgICAic2VudF9wYWNrZXQuaCIsCisgIF0KKyAgZGVwcyA9IFsK
KyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLAorICBd
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44Y2M0OTczN2VmZGVjYTcwODFlMTU1Y2RjNzU0MWU4MzVjMWMwYmVlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5jYwpAQCAtMCwwICsxLDI3IEBACisvKgorICogIENv
cHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRl
bGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBm
aWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBi
ZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJl
ZS4KKyAqLworCisjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29yay9zZW50X3BhY2tldC5oIgorCitu
YW1lc3BhY2UgcnRjIHsKKworUGFja2V0SW5mbzo6UGFja2V0SW5mbygpID0gZGVmYXVsdDsKK1Bh
Y2tldEluZm86OlBhY2tldEluZm8oY29uc3QgUGFja2V0SW5mbyYgaW5mbykgPSBkZWZhdWx0Owor
UGFja2V0SW5mbzo6flBhY2tldEluZm8oKSA9IGRlZmF1bHQ7CisKK1NlbnRQYWNrZXQ6OlNlbnRQ
YWNrZXQoKSA9IGRlZmF1bHQ7CitTZW50UGFja2V0OjpTZW50UGFja2V0KGludDY0X3QgcGFja2V0
X2lkLCBpbnQ2NF90IHNlbmRfdGltZV9tcykKKyAgICA6IHBhY2tldF9pZChwYWNrZXRfaWQpLCBz
ZW5kX3RpbWVfbXMoc2VuZF90aW1lX21zKSB7fQorU2VudFBhY2tldDo6U2VudFBhY2tldChpbnQ2
NF90IHBhY2tldF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBzZW5kX3RpbWVf
bXMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0SW5mbyYgaW5mbykK
KyAgICA6IHBhY2tldF9pZChwYWNrZXRfaWQpLCBzZW5kX3RpbWVfbXMoc2VuZF90aW1lX21zKSwg
aW5mbyhpbmZvKSB7fQorCit9ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3JrL3NlbnRf
cGFja2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNhZDMxY2E5MWMwZjg5MDJi
YjRhZTRhOGRkZjQ3ODAxNGMxYTQzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmsvc2VudF9wYWNrZXQu
aApAQCAtMCwwICsxLDY4IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19CQVNF
X05FVFdPUktfU0VOVF9QQUNLRVRfSF8KKyNkZWZpbmUgUlRDX0JBU0VfTkVUV09SS19TRU5UX1BB
Q0tFVF9IXworCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNp
bmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisKK25hbWVzcGFjZSBydGMgeworCitlbnVt
IGNsYXNzIFBhY2tldFR5cGUgeworICBrVW5rbm93biwKKyAga0RhdGEsCisgIGtJY2VDb25uZWN0
aXZpdHlDaGVjaywKKyAga0ljZUNvbm5lY3Rpdml0eUNoZWNrUmVzcG9uc2UsCisgIGtTdHVuTWVz
c2FnZSwKKyAga1R1cm5NZXNzYWdlLAorfTsKKworZW51bSBjbGFzcyBQYWNrZXRJbmZvUHJvdG9j
b2xUeXBlIHsKKyAga1Vua25vd24sCisgIGtVZHAsCisgIGtUY3AsCisgIGtTc2x0Y3AsCisgIGtU
bHMsCit9OworCitzdHJ1Y3QgUGFja2V0SW5mbyB7CisgIFBhY2tldEluZm8oKTsKKyAgUGFja2V0
SW5mbyhjb25zdCBQYWNrZXRJbmZvJiBpbmZvKTsKKyAgflBhY2tldEluZm8oKTsKKworICBib29s
IGluY2x1ZGVkX2luX2ZlZWRiYWNrID0gZmFsc2U7CisgIGJvb2wgaW5jbHVkZWRfaW5fYWxsb2Nh
dGlvbiA9IGZhbHNlOworICBQYWNrZXRUeXBlIHBhY2tldF90eXBlID0gUGFja2V0VHlwZTo6a1Vu
a25vd247CisgIFBhY2tldEluZm9Qcm90b2NvbFR5cGUgcHJvdG9jb2wgPSBQYWNrZXRJbmZvUHJv
dG9jb2xUeXBlOjprVW5rbm93bjsKKyAgLy8gQSB1bmlxdWUgaWQgYXNzaWduZWQgYnkgdGhlIG5l
dHdvcmsgbWFuYWdlciwgYW5kIGFic2w6Om51bGxvcHQgaWYgbm90IHNldC4KKyAgYWJzbDo6b3B0
aW9uYWw8dWludDE2X3Q+IG5ldHdvcmtfaWQ7CisgIHNpemVfdCBwYWNrZXRfc2l6ZV9ieXRlcyA9
IDA7CisgIHNpemVfdCB0dXJuX292ZXJoZWFkX2J5dGVzID0gMDsKKyAgc2l6ZV90IGlwX292ZXJo
ZWFkX2J5dGVzID0gMDsKK307CisKK3N0cnVjdCBTZW50UGFja2V0IHsKKyAgU2VudFBhY2tldCgp
OworICBTZW50UGFja2V0KGludDY0X3QgcGFja2V0X2lkLCBpbnQ2NF90IHNlbmRfdGltZV9tcyk7
CisgIFNlbnRQYWNrZXQoaW50NjRfdCBwYWNrZXRfaWQsCisgICAgICAgICAgICAgaW50NjRfdCBz
ZW5kX3RpbWVfbXMsCisgICAgICAgICAgICAgY29uc3QgcnRjOjpQYWNrZXRJbmZvJiBpbmZvKTsK
KworICBpbnQ2NF90IHBhY2tldF9pZCA9IC0xOworICBpbnQ2NF90IHNlbmRfdGltZV9tcyA9IC0x
OworICBydGM6OlBhY2tldEluZm8gaW5mbzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBydGMKKwor
I2VuZGlmICAvLyBSVENfQkFTRV9ORVRXT1JLX1NFTlRfUEFDS0VUX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXR3b3Jr
bW9uaXRvci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL25ldHdvcmttb25pdG9yLmNjCmluZGV4IGFkNjgwNWFjZWM3ZTc5OGZmOGE5YzZlYTMz
ZGM5Nzc1NTgwY2JiYjAuLjAxODVlYWI4NTYxM2EzYjE5NTYxYTYxZmU0YWFjYTE2NWYzZmVjZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL25ldHdvcmttb25pdG9yLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmttb25pdG9yLmNjCkBAIC0xMCw3ICsxMCwx
MSBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbmV0d29ya21vbml0b3IuaCIKIAorI2luY2x1ZGUg
PHN0ZGludC5oPgorCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvbG9jYXRpb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAKIG5hbWVz
cGFjZSB7CiBjb25zdCB1aW50MzJfdCBVUERBVEVfTkVUV09SS1NfTUVTU0FHRSA9IDE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9uZXR3b3JrbW9uaXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbmV0d29ya21vbml0b3IuaAppbmRleCBhODRhMzBhZWQyYmMzMzY4NjY1
YjdkNDMxNDc3NWU2M2JmMDU1NjFmLi4xYWQ3NjYzNjY5NmNjOGU2NmZlZGJiZWIwMWZiMjVlNjZj
Yzc3Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9uZXR3b3JrbW9uaXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldHdvcmttb25pdG9yLmgKQEAgLTExLDcg
KzExLDYgQEAKICNpZm5kZWYgUlRDX0JBU0VfTkVUV09SS01PTklUT1JfSF8KICNkZWZpbmUgUlRD
X0JBU0VfTkVUV09SS01PTklUT1JfSF8KIAotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9uZXR3b3JrX2NvbnN0YW50cy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Ro
cmVhZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvbm9vcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL25vb3AuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDE2YThlNmQ1YzEwYjk3MTM0ZTY4YjA4ZTJjNjVlZjJmZmYxNmJkNTIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvbm9vcC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEz
ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMTUgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLS8vIFRoaXMgZmlsZSBpcyBvbmx5IG5lZWRl
ZCB0byBtYWtlIG5pbmphIGhhcHB5IG9uIHNvbWUgcGxhdGZvcm1zLgotLy8gT24gc29tZSBwbGF0
Zm9ybXMgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGxpbmsgYW4gcnRjX3N0YXRpY19saWJyYXJ5Ci0v
LyB3aXRob3V0IGFueSBzb3VyY2UgZmlsZSBsaXN0ZWQgaW4gdGhlIEdOIHRhcmdldC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L25vb3AubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9ub29wLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmE4ZTZkNWMxMGI5
NzEzNGU2OGIwOGUyYzY1ZWYyZmZmMTZiZDUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL25vb3AubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0vKgot
ICogIENvcHlyaWdodCAyMDE1IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
LSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KLSAqLwotCi0vLyBUaGlzIGZpbGUgaXMgb25seSBuZWVkZWQgdG8gbWFrZSBuaW5q
YSBoYXBweSBvbiBzb21lIHBsYXRmb3Jtcy4KLS8vIE9uIHNvbWUgcGxhdGZvcm1zIGl0IGlzIG5v
dCBwb3NzaWJsZSB0byBsaW5rIGFuIHJ0Y19zdGF0aWNfbGlicmFyeQotLy8gd2l0aG91dCBhbnkg
c291cmNlIGZpbGUgbGlzdGVkIGluIHRoZSBHTiB0YXJnZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udWxsc29ja2V0c2Vy
dmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbnVsbHNvY2tldHNlcnZlci5jYwppbmRleCBjODkwYzZmM2RjZjY1M2Y5Njk0ZWZhNmJiYzVm
YzgyOTkxY2FjOTFkLi5lYzA0MmRkMDk1MTdkYzE4ZTdlMWUwNGI4NDlhZTUxNzg1MGEzMGQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9udWxsc29ja2V0c2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bGxzb2NrZXRzZXJ2ZXIuY2MKQEAgLTEzLDcgKzEz
LDcgQEAKIAogbmFtZXNwYWNlIHJ0YyB7CiAKLU51bGxTb2NrZXRTZXJ2ZXI6Ok51bGxTb2NrZXRT
ZXJ2ZXIoKSA6IGV2ZW50XyhmYWxzZSwgZmFsc2UpIHt9CitOdWxsU29ja2V0U2VydmVyOjpOdWxs
U29ja2V0U2VydmVyKCkgPSBkZWZhdWx0OwogTnVsbFNvY2tldFNlcnZlcjo6fk51bGxTb2NrZXRT
ZXJ2ZXIoKSB7fQogCiBib29sIE51bGxTb2NrZXRTZXJ2ZXI6OldhaXQoaW50IGNtcywgYm9vbCBw
cm9jZXNzX2lvKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udWxsc29ja2V0c2VydmVyLmgKaW5k
ZXggNDA4YmNkMWIyZjUxNjM2MjFmMTMxMDE1YjZjNWY2ZGVmYWIzOWMxYS4uNDdhN2ZhNjExODcx
YzQ0MjNkMjUxNmUzOThjOTQ4MGM0ODVmODNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVsbHNvY2tldHNlcnZlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251
bGxzb2NrZXRzZXJ2ZXIuaApAQCAtMTEsNyArMTEsOSBAQAogI2lmbmRlZiBSVENfQkFTRV9OVUxM
U09DS0VUU0VSVkVSX0hfCiAjZGVmaW5lIFJUQ19CQVNFX05VTExTT0NLRVRTRVJWRVJfSF8KIAor
I2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jc29ja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZl
bnQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
b2NrZXRzZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9tb3Zpbmdf
YXZlcmFnZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MjU4MzkyMjdl
YmI4YTRhYWM3YzU5MTEzOGY2MDk0MDUwOGQyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9tb3Zp
bmdfYXZlcmFnZS5jYwpAQCAtMCwwICsxLDYwIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAx
OCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHBy
b3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRT
LiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4g
dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKwor
I2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmgiCisKKyNpbmNsdWRl
IDxhbGdvcml0aG0+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKworbmFtZXNwYWNl
IHJ0YyB7CisKK01vdmluZ0F2ZXJhZ2U6Ok1vdmluZ0F2ZXJhZ2Uoc2l6ZV90IHdpbmRvd19zaXpl
KSA6IGhpc3RvcnlfKHdpbmRvd19zaXplLCAwKSB7CisgIC8vIExpbWl0IHdpbmRvdyBzaXplIHRv
IGF2b2lkIG92ZXJmbG93LgorICBSVENfRENIRUNLX0xFKHdpbmRvd19zaXplLCAoaW50NjRfdHsx
fSA8PCAzMikgLSAxKTsKK30KK01vdmluZ0F2ZXJhZ2U6On5Nb3ZpbmdBdmVyYWdlKCkgPSBkZWZh
dWx0OworCit2b2lkIE1vdmluZ0F2ZXJhZ2U6OkFkZFNhbXBsZShpbnQgc2FtcGxlKSB7CisgIGNv
dW50XysrOworICBzaXplX3QgaW5kZXggPSBjb3VudF8gJSBoaXN0b3J5Xy5zaXplKCk7CisgIGlm
IChjb3VudF8gPiBoaXN0b3J5Xy5zaXplKCkpCisgICAgc3VtXyAtPSBoaXN0b3J5X1tpbmRleF07
CisgIHN1bV8gKz0gc2FtcGxlOworICBoaXN0b3J5X1tpbmRleF0gPSBzYW1wbGU7Cit9CisKK2Fi
c2w6Om9wdGlvbmFsPGludD4gTW92aW5nQXZlcmFnZTo6R2V0QXZlcmFnZVJvdW5kZWREb3duKCkg
Y29uc3QgeworICBpZiAoY291bnRfID09IDApCisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7Cisg
IHJldHVybiBzdW1fIC8gU2l6ZSgpOworfQorCithYnNsOjpvcHRpb25hbDxpbnQ+IE1vdmluZ0F2
ZXJhZ2U6OkdldEF2ZXJhZ2VSb3VuZGVkVG9DbG9zZXN0KCkgY29uc3QgeworICBpZiAoY291bnRf
ID09IDApCisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIHJldHVybiAoc3VtXyArIFNpemUo
KSAvIDIpIC8gU2l6ZSgpOworfQorCithYnNsOjpvcHRpb25hbDxkb3VibGU+IE1vdmluZ0F2ZXJh
Z2U6OkdldFVucm91bmRlZEF2ZXJhZ2UoKSBjb25zdCB7CisgIGlmIChjb3VudF8gPT0gMCkKKyAg
ICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgcmV0dXJuIHN1bV8gLyBzdGF0aWNfY2FzdDxkb3Vi
bGU+KFNpemUoKSk7Cit9CisKK3ZvaWQgTW92aW5nQXZlcmFnZTo6UmVzZXQoKSB7CisgIGNvdW50
XyA9IDA7CisgIHN1bV8gPSAwOworfQorCitzaXplX3QgTW92aW5nQXZlcmFnZTo6U2l6ZSgpIGNv
bnN0IHsKKyAgcmV0dXJuIHN0ZDo6bWluKGNvdW50XywgaGlzdG9yeV8uc2l6ZSgpKTsKK30KK30g
IC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9t
b3ZpbmdfYXZlcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MGU0N2Q4NmY4MTI4ZmNmNzc3NGQ0YmM0NTA5
Njc2OTc1YzYyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5oCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisg
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19CQVNFX05V
TUVSSUNTX01PVklOR19BVkVSQUdFX0hfCisjZGVmaW5lIFJUQ19CQVNFX05VTUVSSUNTX01PVklO
R19BVkVSQUdFX0hfCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhYnNsL3R5cGVz
L29wdGlvbmFsLmgiCisKK25hbWVzcGFjZSBydGMgeworCisvLyBDYWxjdWxhdGVzIGF2ZXJhZ2Ug
b3ZlciBmaXhlZCBzaXplIHdpbmRvdy4gSWYgdGhlcmUgYXJlIGxlc3MgdGhhbiB3aW5kb3cKKy8v
IHNpemUgZWxlbWVudHMsIGNhbGN1bGF0ZXMgYXZlcmFnZSBvZiBhbGwgaW5zZXJ0ZWQgc28gZmFy
IGVsZW1lbnRzLgorLy8KK2NsYXNzIE1vdmluZ0F2ZXJhZ2UgeworIHB1YmxpYzoKKyAgLy8gTWF4
aW11bSBzdXBwb3J0ZWQgd2luZG93IHNpemUgaXMgMl4zMiAtIDEuCisgIGV4cGxpY2l0IE1vdmlu
Z0F2ZXJhZ2Uoc2l6ZV90IHdpbmRvd19zaXplKTsKKyAgfk1vdmluZ0F2ZXJhZ2UoKTsKKyAgLy8g
TW92aW5nQXZlcmFnZSBpcyBuZWl0aGVyIGNvcHlhYmxlIG5vciBtb3ZhYmxlLgorICBNb3ZpbmdB
dmVyYWdlKGNvbnN0IE1vdmluZ0F2ZXJhZ2UmKSA9IGRlbGV0ZTsKKyAgTW92aW5nQXZlcmFnZSYg
b3BlcmF0b3I9KGNvbnN0IE1vdmluZ0F2ZXJhZ2UmKSA9IGRlbGV0ZTsKKworICAvLyBBZGRzIG5l
dyBzYW1wbGUuIElmIHRoZSB3aW5kb3cgaXMgZnVsbCwgdGhlIG9sZGVzdCBlbGVtZW50IGlzIHB1
c2hlZCBvdXQuCisgIHZvaWQgQWRkU2FtcGxlKGludCBzYW1wbGUpOworCisgIC8vIFJldHVybnMg
cm91bmRlZCBkb3duIGF2ZXJhZ2Ugb2YgbGFzdCB8d2luZG93X3NpemV8IGVsZW1lbnRzIG9yIGFs
bAorICAvLyBlbGVtZW50cyBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCBvZiB0aGVtLiBSZXR1cm5z
IG51bGxvcHQgaWYgdGhlcmUgd2VyZQorICAvLyBubyBlbGVtZW50cyBhZGRlZC4KKyAgYWJzbDo6
b3B0aW9uYWw8aW50PiBHZXRBdmVyYWdlUm91bmRlZERvd24oKSBjb25zdDsKKworICAvLyBTYW1l
IGFzIGFib3ZlIGJ1dCByb3VuZGVkIHRvIHRoZSBjbG9zZXN0IGludGVnZXIuCisgIGFic2w6Om9w
dGlvbmFsPGludD4gR2V0QXZlcmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSBjb25zdDsKKworICAvLyBS
ZXR1cm5zIHVucm91bmRlZCBhdmVyYWdlIG92ZXIgdGhlIHdpbmRvdy4KKyAgYWJzbDo6b3B0aW9u
YWw8ZG91YmxlPiBHZXRVbnJvdW5kZWRBdmVyYWdlKCkgY29uc3Q7CisKKyAgLy8gUmVzZXRzIHRv
IHRoZSBpbml0aWFsIHN0YXRlIGJlZm9yZSBhbnkgZWxlbWVudHMgd2VyZSBhZGRlZC4KKyAgdm9p
ZCBSZXNldCgpOworCisgIC8vIFJldHVybnMgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB3aW5k
b3cuCisgIHNpemVfdCBTaXplKCkgY29uc3Q7CisKKyBwcml2YXRlOgorICAvLyBUb3RhbCBudW1i
ZXIgb2Ygc2FtcGxlcyBhZGRlZCB0byB0aGUgY2xhc3Mgc2luY2UgbGFzdCByZXNldC4KKyAgc2l6
ZV90IGNvdW50XyA9IDA7CisgIC8vIFN1bSBvZiB0aGUgc2FtcGxlcyBpbiB0aGUgbW92aW5nIHdp
bmRvdy4KKyAgaW50NjRfdCBzdW1fID0gMDsKKyAgLy8gQ2lyY3VsYXIgYnVmZmVyIGZvciBhbGwg
dGhlIHNhbXBsZXMgaW4gdGhlIG1vdmluZyB3aW5kb3cuCisgIC8vIFNpemUgaXMgYWx3YXlzIHx3
aW5kb3dfc2l6ZXwKKyAgc3RkOjp2ZWN0b3I8aW50PiBoaXN0b3J5XzsKK307CisKK30gIC8vIG5h
bWVzcGFjZSBydGMKKyNlbmRpZiAgLy8gUlRDX0JBU0VfTlVNRVJJQ1NfTU9WSU5HX0FWRVJBR0Vf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5n
X2F2ZXJhZ2VfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJjOWExYWVmODlhMTRiYTkzNjZiZTg4
OGZkMjJiMmQxMzk2MDk1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL21vdmluZ19hdmVyYWdlX3Vu
aXR0ZXN0LmNjCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
CisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5j
bHVkZSAicnRjX2Jhc2UvbnVtZXJpY3MvbW92aW5nX2F2ZXJhZ2UuaCIKKworI2luY2x1ZGUgInRl
c3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHRlc3QgeworCitURVNUKE1vdmluZ0F2ZXJhZ2VUZXN0
LCBFbXB0eUF2ZXJhZ2UpIHsKKyAgcnRjOjpNb3ZpbmdBdmVyYWdlIG1vdmluZ19hdmVyYWdlKDEp
OworICBFWFBFQ1RfRVEoMHUsIG1vdmluZ19hdmVyYWdlLlNpemUoKSk7CisgIEVYUEVDVF9FUShh
YnNsOjpudWxsb3B0LCBtb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSk7Cit9
CisKKy8vIFRlc3Qgc2luZ2xlIHZhbHVlLgorVEVTVChNb3ZpbmdBdmVyYWdlVGVzdCwgT25lRWxl
bWVudCkgeworICBydGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMSk7CisgIG1vdmlu
Z19hdmVyYWdlLkFkZFNhbXBsZSgzKTsKKyAgRVhQRUNUX0VRKDF1LCBtb3ZpbmdfYXZlcmFnZS5T
aXplKCkpOworICBFWFBFQ1RfRVEoMywgKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVk
RG93bigpKTsKK30KKworVEVTVChNb3ZpbmdBdmVyYWdlVGVzdCwgR2V0QXZlcmFnZSkgeworICBy
dGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMTAyNCk7CisgIG1vdmluZ19hdmVyYWdl
LkFkZFNhbXBsZSgxKTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDEpOworICBtb3Zpbmdf
YXZlcmFnZS5BZGRTYW1wbGUoMyk7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgzKTsKKyAg
RVhQRUNUX0VRKCptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSwgMik7Cisg
IEVYUEVDVF9FUSgqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSwg
Mik7Cit9CisKK1RFU1QoTW92aW5nQXZlcmFnZVRlc3QsIEdldEF2ZXJhZ2VSb3VuZGVkRG93blJv
dW5kcykgeworICBydGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoMTAyNCk7CisgIG1v
dmluZ19hdmVyYWdlLkFkZFNhbXBsZSgxKTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDIp
OworICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoMik7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNh
bXBsZSgyKTsKKyAgRVhQRUNUX0VRKCptb3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERv
d24oKSwgMSk7Cit9CisKK1RFU1QoTW92aW5nQXZlcmFnZVRlc3QsIEdldEF2ZXJhZ2VSb3VuZGVk
VG9DbG9zZXN0Um91bmRzKSB7CisgIHJ0Yzo6TW92aW5nQXZlcmFnZSBtb3ZpbmdfYXZlcmFnZSgx
MDI0KTsKKyAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKDEpOworICBtb3ZpbmdfYXZlcmFnZS5B
ZGRTYW1wbGUoMik7CisgIG1vdmluZ19hdmVyYWdlLkFkZFNhbXBsZSgyKTsKKyAgbW92aW5nX2F2
ZXJhZ2UuQWRkU2FtcGxlKDIpOworICBFWFBFQ1RfRVEoKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJh
Z2VSb3VuZGVkVG9DbG9zZXN0KCksIDIpOworfQorCitURVNUKE1vdmluZ0F2ZXJhZ2VUZXN0LCBS
ZXNldCkgeworICBydGM6Ok1vdmluZ0F2ZXJhZ2UgbW92aW5nX2F2ZXJhZ2UoNSk7CisgIG1vdmlu
Z19hdmVyYWdlLkFkZFNhbXBsZSgxKTsKKyAgRVhQRUNUX0VRKDEsICptb3ZpbmdfYXZlcmFnZS5H
ZXRBdmVyYWdlUm91bmRlZERvd24oKSk7CisgIEVYUEVDVF9FUSgxLCAqbW92aW5nX2F2ZXJhZ2Uu
R2V0QXZlcmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSk7CisKKyAgbW92aW5nX2F2ZXJhZ2UuUmVzZXQo
KTsKKworICBFWFBFQ1RfRkFMU0UobW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWREb3du
KCkpOworICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoMTApOworICBFWFBFQ1RfRVEoMTAsICpt
b3ZpbmdfYXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSk7CisgIEVYUEVDVF9FUSgxMCwg
Km1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVkVG9DbG9zZXN0KCkpOworfQorCitURVNU
KE1vdmluZ0F2ZXJhZ2VUZXN0LCBNYW55U2FtcGxlcykgeworICBydGM6Ok1vdmluZ0F2ZXJhZ2Ug
bW92aW5nX2F2ZXJhZ2UoMTApOworICBmb3IgKGludCBpID0gMTsgaSA8IDExOyBpKyspIHsKKyAg
ICBtb3ZpbmdfYXZlcmFnZS5BZGRTYW1wbGUoaSk7CisgIH0KKyAgRVhQRUNUX0VRKCptb3Zpbmdf
YXZlcmFnZS5HZXRBdmVyYWdlUm91bmRlZERvd24oKSwgNSk7CisgIEVYUEVDVF9FUSgqbW92aW5n
X2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWRUb0Nsb3Nlc3QoKSwgNik7CisgIGZvciAoaW50IGkg
PSAxOyBpIDwgMjAwMTsgaSsrKSB7CisgICAgbW92aW5nX2F2ZXJhZ2UuQWRkU2FtcGxlKGkpOwor
ICB9CisgIEVYUEVDVF9FUSgqbW92aW5nX2F2ZXJhZ2UuR2V0QXZlcmFnZVJvdW5kZWREb3duKCks
IDE5OTUpOworICBFWFBFQ1RfRVEoKm1vdmluZ19hdmVyYWdlLkdldEF2ZXJhZ2VSb3VuZGVkVG9D
bG9zZXN0KCksIDE5OTYpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJp
Y3Mvc2FtcGxlX2NvdW50ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL251bWVyaWNzL3NhbXBsZV9jb3VudGVyLmgKaW5kZXggNGZlNzFkMTk0
MjdhMjNlZTIyOWVjZjRkMjFiNjE3MTBkODUwODBlZS4uMThiZDM2YjhmMzA1MmE2NTJhMWFhN2Jl
OTg2ZDZkYjNjOTcxNzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3Mvc2FtcGxlX2NvdW50ZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9udW1lcmlj
cy9zYW1wbGVfY291bnRlci5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIFJUQ19CQVNFX05V
TUVSSUNTX1NBTVBMRV9DT1VOVEVSX0hfCiAjZGVmaW5lIFJUQ19CQVNFX05VTUVSSUNTX1NBTVBM
RV9DT1VOVEVSX0hfCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2luY2x1ZGUgImFic2wvdHlw
ZXMvb3B0aW9uYWwuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsX2tleV9kZXJp
dmF0aW9uX2hrZGYuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9vcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJh
ZjY2NzY0NWIzOWVlNzcwM2NlN2I3NGZmMjA0NTViOWU4YWNhZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5z
c2xfa2V5X2Rlcml2YXRpb25faGtkZi5jYwpAQCAtMCwwICsxLDcwIEBACisvKgorICogIENvcHly
aWdodCAyMDE4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
KyAqLworCisjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmgi
CisKKyNpbmNsdWRlIDxvcGVuc3NsL2RpZ2VzdC5oPgorI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+
CisjaW5jbHVkZSA8b3BlbnNzbC9oa2RmLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KKwor
I2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAicnRj
X2Jhc2UvYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbC5oIgorCituYW1lc3Bh
Y2UgcnRjIHsKKworT3BlblNTTEtleURlcml2YXRpb25IS0RGOjpPcGVuU1NMS2V5RGVyaXZhdGlv
bkhLREYoKSA9IGRlZmF1bHQ7CitPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREY6On5PcGVuU1NMS2V5
RGVyaXZhdGlvbkhLREYoKSA9IGRlZmF1bHQ7CisKK2NvbnN0IHNpemVfdCBPcGVuU1NMS2V5RGVy
aXZhdGlvbkhLREY6OmtNaW5LZXlCeXRlU2l6ZSA9IDE2OworY29uc3Qgc2l6ZV90IE9wZW5TU0xL
ZXlEZXJpdmF0aW9uSEtERjo6a01heEtleUJ5dGVTaXplID0KKyAgICAyNTUgKiBTSEEyNTZfRElH
RVNUX0xFTkdUSDsKK2NvbnN0IHNpemVfdCBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREY6OmtNaW5T
ZWNyZXRCeXRlU2l6ZSA9IDE2OworCithYnNsOjpvcHRpb25hbDxaZXJvT25GcmVlQnVmZmVyPHVp
bnQ4X3Q+PiBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREY6OkRlcml2ZUtleSgKKyAgICBydGM6OkFy
cmF5Vmlldzxjb25zdCB1aW50OF90PiBzZWNyZXQsCisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3Qg
dWludDhfdD4gc2FsdCwKKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBsYWJlbCwK
KyAgICBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKSB7CisgIC8vIFByZXZlbnQgZGVyaXZp
bmcgbGVzcyB0aGFuIDEyOCBiaXRzIG9mIGtleSBtYXRlcmlhbCBvciBtb3JlIHRoYW4gdGhlIG1h
eC4KKyAgaWYgKGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSA8IGtNaW5LZXlCeXRlU2l6ZSB8fAorICAg
ICAgZGVyaXZlZF9rZXlfYnl0ZV9zaXplID4ga01heEtleUJ5dGVTaXplKSB7CisgICAgcmV0dXJu
IGFic2w6Om51bGxvcHQ7CisgIH0KKyAgLy8gVGhlIHNlY3JldCBtdXN0IHJlYWNoIHRoZSBtaW5p
bXVtIG51bWJlciBvZiBiaXRzIHRvIGJlIHNlY3VyZS4KKyAgaWYgKHNlY3JldC5kYXRhKCkgPT0g
bnVsbHB0ciB8fCBzZWNyZXQuc2l6ZSgpIDwga01pblNlY3JldEJ5dGVTaXplKSB7CisgICAgcmV0
dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKyAgLy8gRW1wdHkgbGFiZWxzIGFyZSBhbHdheXMgaW52
YWxpZCBpbiBkZXJpdmF0aW9uLgorICBpZiAobGFiZWwuZGF0YSgpID09IG51bGxwdHIgfHwgbGFi
ZWwuc2l6ZSgpID09IDApIHsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorICAvLyBJ
ZiBhIHJhbmRvbSBzYWx0IGlzIG5vdCBwcm92aWRlZCB1c2UgYWxsIHplcm9zLgorICBydGM6OkJ1
ZmZlciBzYWx0X2J1ZmZlcjsKKyAgaWYgKHNhbHQuZGF0YSgpID09IG51bGxwdHIgfHwgc2FsdC5z
aXplKCkgPT0gMCkgeworICAgIHNhbHRfYnVmZmVyLlNldFNpemUoU0hBMjU2X0RJR0VTVF9MRU5H
VEgpOworICAgIHN0ZDo6ZmlsbChzYWx0X2J1ZmZlci5iZWdpbigpLCBzYWx0X2J1ZmZlci5lbmQo
KSwgMCk7CisgICAgc2FsdCA9IHNhbHRfYnVmZmVyOworICB9CisgIC8vIFRoaXMgYnVmZmVyIHdp
bGwgZXJhc2UgaXRzZWxmIG9uIHJlbGVhc2UuCisgIFplcm9PbkZyZWVCdWZmZXI8dWludDhfdD4g
ZGVyaXZlZF9rZXlfYnVmZmVyKGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSwgMCk7CisgIGlmICghSEtE
RihkZXJpdmVkX2tleV9idWZmZXIuZGF0YSgpLCBkZXJpdmVkX2tleV9idWZmZXIuc2l6ZSgpLCBF
VlBfc2hhMjU2KCksCisgICAgICAgICAgICBzZWNyZXQuZGF0YSgpLCBzZWNyZXQuc2l6ZSgpLCBz
YWx0LmRhdGEoKSwgc2FsdC5zaXplKCksCisgICAgICAgICAgICBsYWJlbC5kYXRhKCksIGxhYmVs
LnNpemUoKSkpIHsKKyAgICByZXR1cm4gYWJzbDo6bnVsbG9wdDsKKyAgfQorICByZXR1cm4gYWJz
bDo6b3B0aW9uYWw8WmVyb09uRnJlZUJ1ZmZlcjx1aW50OF90Pj4oCisgICAgICBzdGQ6Om1vdmUo
ZGVyaXZlZF9rZXlfYnVmZmVyKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29w
ZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWJmNDNjZmFhN2FiYWQ3YTlhMTFhYTVkNTA5NmU4MWVmYTFlZTU5ZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5oCkBAIC0wLDAgKzEsNTQgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfT1BFTlNTTF9LRVlfREVSSVZBVElP
Tl9IS0RGX0hfCisjZGVmaW5lIFJUQ19CQVNFX09QRU5TU0xfS0VZX0RFUklWQVRJT05fSEtERl9I
XworCisjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2tleV9kZXJpdmF0aW9uLmgiCisKK25hbWVzcGFjZSBydGMgeworCisvLyBPcGVuU1NM
S2V5RGVyaXZhdGlvbkhLREYgcHJvdmlkZXMgYSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUKKy8vIEtleURlcml2YXRpb24gaW50ZXJmYWNlIHRvIHN1cHBvcnQgdGhlIEhLREYgYWxnb3Jp
dGhtIHVzaW5nIHRoZQorLy8gT3BlblNTTC9Cb3JpbmdTU0wgaW50ZXJuYWwgaW1wbGVtZW50YXRp
b24uCitjbGFzcyBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYgZmluYWwgOiBwdWJsaWMgS2V5RGVy
aXZhdGlvbiB7CisgcHVibGljOgorICBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYoKTsKKyAgfk9w
ZW5TU0xLZXlEZXJpdmF0aW9uSEtERigpIG92ZXJyaWRlOworCisgIC8vIEdlbmVyYWwgdXNlcnMg
c2hvdWxkbid0IGJlIGdlbmVyYXRpbmcga2V5cyBzbWFsbGVyIHRoYW4gMTI4IGJpdHMuCisgIHN0
YXRpYyBjb25zdCBzaXplX3Qga01pbktleUJ5dGVTaXplOworICAvLyBUaGUgbWF4aW11bSBhdmFp
bGFibGUgZGVyaXZhdGlvbiBzaXplIDI1NSpESUdFU1RfTEVOR1RICisgIHN0YXRpYyBjb25zdCBz
aXplX3Qga01heEtleUJ5dGVTaXplOworICAvLyBUaGUgbWluaW11bSBhY2NlcHRhYmxlIHNlY3Jl
dCBzaXplLgorICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNaW5TZWNyZXRCeXRlU2l6ZTsKKworICAv
LyBEZXJpdmVzIGEgbmV3IGtleSBmcm9tIGV4aXN0aW5nIGtleSBtYXRlcmlhbCB1c2luZyBIS0RG
LgorICAvLyBzZWNyZXQgLSBUaGUgcmFuZG9tIHNlY3JldCB2YWx1ZSB5b3Ugd2lzaCB0byBkZXJp
dmUgYSBrZXkgZnJvbS4KKyAgLy8gc2FsdCAtIE9wdGlvbmFsIChub24gc2VjcmV0KSBjcnlwdG9n
cmFwaGljYWxseSByYW5kb20gdmFsdWUuCisgIC8vIGxhYmVsIC0gQSBub24gc2VjcmV0IGJ1dCB1
bmlxdWUgbGFiZWwgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBkZXJpdmF0aW9uLgorICAvLyBkZXJp
dmVkX2tleV9ieXRlX3NpemUgLSBUaGUgc2l6ZSBvZiB0aGUgZGVyaXZlZCBrZXkuCisgIC8vIHJl
dHVybiAtIEEgWmVyb09uRnJlZUJ1ZmZlciBjb250YWluaW5nIHRoZSBkZXJpdmVkIGtleSBvciBh
biBlcnJvcgorICAvLyBjb25kaXRpb24uIENoZWNraW5nIGVycm9yIGNvZGVzIGlzIGV4cGxpY2l0
IGluIHRoZSBBUEkgYW5kIGVycm9yIHNob3VsZAorICAvLyBuZXZlciBiZSBpZ25vcmVkLgorICBh
YnNsOjpvcHRpb25hbDxaZXJvT25GcmVlQnVmZmVyPHVpbnQ4X3Q+PiBEZXJpdmVLZXkoCisgICAg
ICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiBzZWNyZXQsCisgICAgICBydGM6OkFycmF5
Vmlldzxjb25zdCB1aW50OF90PiBzYWx0LAorICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWlu
dDhfdD4gbGFiZWwsCisgICAgICBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKSBvdmVycmlk
ZTsKKworIHByaXZhdGU6CisgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oT3BlblNTTEtl
eURlcml2YXRpb25IS0RGKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAv
LyBSVENfQkFTRV9PUEVOU1NMX0tFWV9ERVJJVkFUSU9OX0hLREZfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xf
a2V5X2Rlcml2YXRpb25faGtkZl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZl91
bml0dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmRmNDJmZmQzMGQ2YjRmZDM1OWMxNGIxM2QzODgzZGVh
OWFmNGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmX3VuaXR0ZXN0
LmNjCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRj
X2Jhc2Uvb3BlbnNzbF9rZXlfZGVyaXZhdGlvbl9oa2RmLmgiCisKKyNpbmNsdWRlIDx1dGlsaXR5
PgorCisjaW5jbHVkZSAidGVzdC9nbW9jay5oIgorCituYW1lc3BhY2UgcnRjIHsKK25hbWVzcGFj
ZSB7CisKKy8vIFZhbGlkYXRlcyB0aGF0IGEgYmFzaWMgdmFsaWQgY2FsbCB3b3JrcyBjb3JyZWN0
bHkuCitURVNUKE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERiwgRGVyaXZhdGlvbkJhc2ljVGVzdCkg
eworICBydGM6OkJ1ZmZlciBzZWNyZXQoMzIpOworICBydGM6OkJ1ZmZlciBzYWx0KDMyKTsKKyAg
cnRjOjpCdWZmZXIgbGFiZWwoMzIpOworICBjb25zdCBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9z
aXplID0gMTY7CisKKyAgT3BlblNTTEtleURlcml2YXRpb25IS0RGIGhrZGY7CisgIGF1dG8ga2V5
X29yID0gaGtkZi5EZXJpdmVLZXkoc2VjcmV0LCBzYWx0LCBsYWJlbCwgZGVyaXZlZF9rZXlfYnl0
ZV9zaXplKTsKKyAgRVhQRUNUX1RSVUUoa2V5X29yLmhhc192YWx1ZSgpKTsKKyAgWmVyb09uRnJl
ZUJ1ZmZlcjx1aW50OF90PiBrZXkgPSBzdGQ6Om1vdmUoa2V5X29yLnZhbHVlKCkpOworICBFWFBF
Q1RfRVEoZGVyaXZlZF9rZXlfYnl0ZV9zaXplLCBrZXkuc2l6ZSgpKTsKK30KKworLy8gRGVyaXZh
dGlvbiBmYWlscyBpZiBvdXRwdXQgaXMgdG9vIHNtYWxsLgorVEVTVChPcGVuU1NMS2V5RGVyaXZh
dGlvbkhLREYsIERlcml2YXRpb25GYWlsc0lmT3V0cHV0SXNUb29TbWFsbCkgeworICBydGM6OkJ1
ZmZlciBzZWNyZXQoMzIpOworICBydGM6OkJ1ZmZlciBzYWx0KDMyKTsKKyAgcnRjOjpCdWZmZXIg
bGFiZWwoMzIpOworICBjb25zdCBzaXplX3QgZGVyaXZlZF9rZXlfYnl0ZV9zaXplID0gMTU7CisK
KyAgT3BlblNTTEtleURlcml2YXRpb25IS0RGIGhrZGY7CisgIGF1dG8ga2V5X29yID0gaGtkZi5E
ZXJpdmVLZXkoc2VjcmV0LCBzYWx0LCBsYWJlbCwgZGVyaXZlZF9rZXlfYnl0ZV9zaXplKTsKKyAg
RVhQRUNUX0ZBTFNFKGtleV9vci5oYXNfdmFsdWUoKSk7Cit9CisKKy8vIERlcml2YXRpb24gZmFp
bHMgaWYgb3V0cHV0IGlzIHRvbyBsYXJnZS4KK1RFU1QoT3BlblNTTEtleURlcml2YXRpb25IS0RG
LCBEZXJpdmF0aW9uRmFpbHNJZk91dHB1dElzVG9vTGFyZ2UpIHsKKyAgcnRjOjpCdWZmZXIgc2Vj
cmV0KDMyKTsKKyAgcnRjOjpCdWZmZXIgc2FsdCgzMik7CisgIHJ0Yzo6QnVmZmVyIGxhYmVsKDMy
KTsKKyAgY29uc3Qgc2l6ZV90IGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSA9IDI1NiAqIDMyOworCisg
IE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERiBoa2RmOworICBhdXRvIGtleV9vciA9IGhrZGYuRGVy
aXZlS2V5KHNlY3JldCwgc2FsdCwgbGFiZWwsIGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSk7CisgIEVY
UEVDVF9GQUxTRShrZXlfb3IuaGFzX3ZhbHVlKCkpOworfQorCisvLyBWYWxpZGF0ZXMgdGhhdCB0
b28gbGl0dGxlIGtleSBtYXRlcmlhbCBjYXVzZXMgYSBmYWlsdXJlLgorVEVTVChPcGVuU1NMS2V5
RGVyaXZhdGlvbkhLREYsIERlcml2YXRpb25GYWlsc1dpdGhJbnZhbGlkU2VjcmV0KSB7CisgIHJ0
Yzo6QnVmZmVyIHNlY3JldCgxNSk7CisgIHJ0Yzo6QnVmZmVyIHNhbHQoMzIpOworICBydGM6OkJ1
ZmZlciBsYWJlbCgzMik7CisgIGNvbnN0IHNpemVfdCBkZXJpdmVkX2tleV9ieXRlX3NpemUgPSAx
NjsKKworICBPcGVuU1NMS2V5RGVyaXZhdGlvbkhLREYgaGtkZjsKKyAgYXV0byBrZXlfb3JfMCA9
IGhrZGYuRGVyaXZlS2V5KHNlY3JldCwgc2FsdCwgbGFiZWwsIGRlcml2ZWRfa2V5X2J5dGVfc2l6
ZSk7CisgIEVYUEVDVF9GQUxTRShrZXlfb3JfMC5oYXNfdmFsdWUoKSk7CisKKyAgYXV0byBrZXlf
b3JfMSA9IGhrZGYuRGVyaXZlS2V5KG51bGxwdHIsIHNhbHQsIGxhYmVsLCBkZXJpdmVkX2tleV9i
eXRlX3NpemUpOworICBFWFBFQ1RfRkFMU0Uoa2V5X29yXzEuaGFzX3ZhbHVlKCkpOworCisgIHJ0
Yzo6QnVmZmVyIHNlY3JldF9lbXB0eTsKKyAgYXV0byBrZXlfb3JfMiA9CisgICAgICBoa2RmLkRl
cml2ZUtleShzZWNyZXRfZW1wdHksIHNhbHQsIGxhYmVsLCBkZXJpdmVkX2tleV9ieXRlX3NpemUp
OworICBFWFBFQ1RfRkFMU0Uoa2V5X29yXzIuaGFzX3ZhbHVlKCkpOworfQorCisvLyBWYWxpZGF0
ZXMgdGhhdCBIS0RGIHdvcmtzIHdpdGhvdXQgYSBzYWx0IGJlaW5nIHNldC4KK1RFU1QoT3BlblNT
TEtleURlcml2YXRpb25IS0RGLCBEZXJpdmF0aW9uV29ya3NXaXRoTm9TYWx0KSB7CisgIHJ0Yzo6
QnVmZmVyIHNlY3JldCgzMik7CisgIHJ0Yzo6QnVmZmVyIGxhYmVsKDMyKTsKKyAgY29uc3Qgc2l6
ZV90IGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSA9IDE2OworCisgIE9wZW5TU0xLZXlEZXJpdmF0aW9u
SEtERiBoa2RmOworICBhdXRvIGtleV9vciA9IGhrZGYuRGVyaXZlS2V5KHNlY3JldCwgbnVsbHB0
ciwgbGFiZWwsIGRlcml2ZWRfa2V5X2J5dGVfc2l6ZSk7CisgIEVYUEVDVF9UUlVFKGtleV9vci5o
YXNfdmFsdWUoKSk7Cit9CisKKy8vIFZhbGlkYXRlcyB0aGF0IGEgbGFiZWwgaXMgcmVxdWlyZWQg
dG8gd29yayBjb3JyZWN0bHkuCitURVNUKE9wZW5TU0xLZXlEZXJpdmF0aW9uSEtERiwgRGVyaXZh
dGlvblJlcXVpcmVzTGFiZWwpIHsKKyAgcnRjOjpCdWZmZXIgc2VjcmV0KDMyKTsKKyAgcnRjOjpC
dWZmZXIgc2FsdCgzMik7CisgIHJ0Yzo6QnVmZmVyIGxhYmVsKDEpOworICBjb25zdCBzaXplX3Qg
ZGVyaXZlZF9rZXlfYnl0ZV9zaXplID0gMTY7CisKKyAgT3BlblNTTEtleURlcml2YXRpb25IS0RG
IGhrZGY7CisgIGF1dG8ga2V5X29yXzAgPSBoa2RmLkRlcml2ZUtleShzZWNyZXQsIHNhbHQsIGxh
YmVsLCBkZXJpdmVkX2tleV9ieXRlX3NpemUpOworICBFWFBFQ1RfVFJVRShrZXlfb3JfMC5oYXNf
dmFsdWUoKSk7CisgIFplcm9PbkZyZWVCdWZmZXI8dWludDhfdD4ga2V5ID0gc3RkOjptb3ZlKGtl
eV9vcl8wLnZhbHVlKCkpOworICBFWFBFQ1RfRVEoa2V5LnNpemUoKSwgZGVyaXZlZF9rZXlfYnl0
ZV9zaXplKTsKKworICBhdXRvIGtleV9vcl8xID0gaGtkZi5EZXJpdmVLZXkoc2VjcmV0LCBzYWx0
LCBudWxscHRyLCBkZXJpdmVkX2tleV9ieXRlX3NpemUpOworICBFWFBFQ1RfRkFMU0Uoa2V5X29y
XzEuaGFzX3ZhbHVlKCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBy
dGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL29wZW5zc2xhZGFwdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuY2MKaW5kZXggNTAyODRhNjcx
OWZlNDUxNDZhY2U5MjY2ZTBmOWNiZGIzYmQ2MzNkOC4uZmNmYTUzYjdlZTcwZDg0ZWMxYmFhZDAw
Yjg2NzQ1NGU0MzEzOTAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIu
Y2MKQEAgLTEwLDI1ICsxMCwyNSBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbGFkYXB0
ZXIuaCIKIAotI2lmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQotI2luY2x1ZGUgPHVuaXN0ZC5oPgot
I2VuZGlmCisjaW5jbHVkZSA8ZXJybm8uaD4KIAogI2luY2x1ZGUgPG9wZW5zc2wvYmlvLmg+Ci0j
aW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotI2lu
Y2x1ZGUgPG9wZW5zc2wvb3BlbnNzbHYuaD4KICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KICNp
bmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3g1MDl2My5oPgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL29wZW5zc2wuaCIKIAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1
ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3Nh
ZmVfY29udmVyc2lvbnMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ2VuY29kZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCiAKICNpZm5kZWYgT1BFTlNTTF9JU19CT1JJTkdT
U0wKQEAgLTM5MiwxNSArMzkyLDE3IEBAIGludCBPcGVuU1NMQWRhcHRlcjo6QmVnaW5TU0woKSB7
CiAKICAgLy8gRG8gdGhlIGNvbm5lY3QuCiAgIGVyciA9IENvbnRpbnVlU1NMKCk7Ci0gIGlmIChl
cnIgIT0gMCkKKyAgaWYgKGVyciAhPSAwKSB7CiAgICAgZ290byBzc2xfZXJyb3I7CisgIH0KIAog
ICByZXR1cm4gZXJyOwogCiBzc2xfZXJyb3I6CiAgIENsZWFudXAoKTsKLSAgaWYgKGJpbykKKyAg
aWYgKGJpbykgewogICAgIEJJT19mcmVlKGJpbyk7CisgIH0KIAogICByZXR1cm4gZXJyOwogfQpA
QCAtNDI0LDE0ICs0MjYsMTMgQEAgaW50IE9wZW5TU0xBZGFwdGVyOjpDb250aW51ZVNTTCgpIHsK
IAogICAgICAgc3RhdGVfID0gU1NMX0NPTk5FQ1RFRDsKICAgICAgIEFzeW5jU29ja2V0QWRhcHRl
cjo6T25Db25uZWN0RXZlbnQodGhpcyk7Ci0jaWYgMCAgLy8gVE9ETyhiZW53cmlnaHQpOiB3b3Jy
eSBhYm91dCB0aGlzCi0gICAgLy8gRG9uJ3QgbGV0IG91cnNlbHZlcyBnbyBhd2F5IGR1cmluZyB0
aGUgY2FsbGJhY2tzCi0gICAgUFJlZlB0cjxPcGVuU1NMQWRhcHRlcj4gbG9jayh0aGlzKTsKLSAg
ICBSVENfTE9HKExTX0lORk8pIDw8ICIgLS0gb25TdHJlYW1SZWFkYWJsZSI7Ci0gICAgQXN5bmNT
b2NrZXRBZGFwdGVyOjpPblJlYWRFdmVudCh0aGlzKTsKLSAgICBSVENfTE9HKExTX0lORk8pIDw8
ICIgLS0gb25TdHJlYW1Xcml0ZWFibGUiOwotICAgIEFzeW5jU29ja2V0QWRhcHRlcjo6T25Xcml0
ZUV2ZW50KHRoaXMpOwotI2VuZGlmCisgICAgICAvLyBUT0RPKGJlbndyaWdodCk6IFJlZmFjdG9y
IHRoaXMgY29kZSBwYXRoLgorICAgICAgLy8gRG9uJ3QgbGV0IG91cnNlbHZlcyBnbyBhd2F5IGR1
cmluZyB0aGUgY2FsbGJhY2tzCisgICAgICAvLyBQUmVmUHRyPE9wZW5TU0xBZGFwdGVyPiBsb2Nr
KHRoaXMpOworICAgICAgLy8gUlRDX0xPRyhMU19JTkZPKSA8PCAiIC0tIG9uU3RyZWFtUmVhZGFi
bGUiOworICAgICAgLy8gQXN5bmNTb2NrZXRBZGFwdGVyOjpPblJlYWRFdmVudCh0aGlzKTsKKyAg
ICAgIC8vIFJUQ19MT0coTFNfSU5GTykgPDwgIiAtLSBvblN0cmVhbVdyaXRlYWJsZSI7CisgICAg
ICAvLyBBc3luY1NvY2tldEFkYXB0ZXI6Ok9uV3JpdGVFdmVudCh0aGlzKTsKICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9SRUFEOgpAQCAtNDYyLDggKzQ2Myw5IEBAIHZv
aWQgT3BlblNTTEFkYXB0ZXI6OkVycm9yKGNvbnN0IGNoYXIqIGNvbnRleHQsIGludCBlcnIsIGJv
b2wgc2lnbmFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgPDwgIikiOwogICBzdGF0ZV8gPSBT
U0xfRVJST1I7CiAgIFNldEVycm9yKGVycik7Ci0gIGlmIChzaWduYWwpCisgIGlmIChzaWduYWwp
IHsKICAgICBBc3luY1NvY2tldEFkYXB0ZXI6Ok9uQ2xvc2VFdmVudCh0aGlzLCBlcnIpOworICB9
CiB9CiAKIHZvaWQgT3BlblNTTEFkYXB0ZXI6OkNsZWFudXAoKSB7CkBAIC01MjgsMjMgKzUzMCwy
MCBAQCBpbnQgT3BlblNTTEFkYXB0ZXI6OkRvU3NsV3JpdGUoY29uc3Qgdm9pZCogcHYsIHNpemVf
dCBjYiwgaW50KiBlcnJvcikgewogICByZXR1cm4gU09DS0VUX0VSUk9SOwogfQogCi0vLworLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogLy8gQXN5bmNTb2NrZXQgSW1wbGVtZW50YXRpb24KLS8vCisv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIGludCBPcGVuU1NMQWRhcHRlcjo6U2VuZChjb25zdCB2
b2lkKiBwdiwgc2l6ZV90IGNiKSB7CiAgIHN3aXRjaCAoc3RhdGVfKSB7CiAgICAgY2FzZSBTU0xf
Tk9ORToKICAgICAgIHJldHVybiBBc3luY1NvY2tldEFkYXB0ZXI6OlNlbmQocHYsIGNiKTsKLQog
ICAgIGNhc2UgU1NMX1dBSVQ6CiAgICAgY2FzZSBTU0xfQ09OTkVDVElORzoKICAgICAgIFNldEVy
cm9yKEVOT1RDT05OKTsKICAgICAgIHJldHVybiBTT0NLRVRfRVJST1I7Ci0KICAgICBjYXNlIFNT
TF9DT05ORUNURUQ6CiAgICAgICBicmVhazsKLQogICAgIGNhc2UgU1NMX0VSUk9SOgogICAgIGRl
ZmF1bHQ6CiAgICAgICByZXR1cm4gU09DS0VUX0VSUk9SOwpAQCAtNTY3LDggKzU2Niw5IEBAIGlu
dCBPcGVuU1NMQWRhcHRlcjo6U2VuZChjb25zdCB2b2lkKiBwdiwgc2l6ZV90IGNiKSB7CiAgIH0K
IAogICAvLyBPcGVuU1NMIHdpbGwgcmV0dXJuIGFuIGVycm9yIGlmIHdlIHRyeSB0byB3cml0ZSB6
ZXJvIGJ5dGVzCi0gIGlmIChjYiA9PSAwKQorICBpZiAoY2IgPT0gMCkgewogICAgIHJldHVybiAw
OworICB9CiAKICAgcmV0ID0gRG9Tc2xXcml0ZShwdiwgY2IsICZlcnJvcik7CiAKQEAgLTU5NSw3
ICs1OTUsNiBAQCBpbnQgT3BlblNTTEFkYXB0ZXI6OlNlbmQoY29uc3Qgdm9pZCogcHYsIHNpemVf
dCBjYikgewogICAgIC8vIHNpemUuIFRoZSB1c2VyIG9mIHRoaXMgY2xhc3MgY2FuIGNvbnNpZGVy
IGl0IHNlbnQuCiAgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxpbnQ+KGNiKTsKICAgfQot
CiAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTYwOCw3ICs2MDcsNiBAQCBpbnQgT3BlblNTTEFkYXB0
ZXI6OlNlbmRUbyhjb25zdCB2b2lkKiBwdiwKICAgfQogCiAgIFNldEVycm9yKEVOT1RDT05OKTsK
LQogICByZXR1cm4gU09DS0VUX0VSUk9SOwogfQogCkBAIC02MTYsMjggKzYxNCwyNiBAQCBpbnQg
T3BlblNTTEFkYXB0ZXI6OlJlY3Yodm9pZCogcHYsIHNpemVfdCBjYiwgaW50NjRfdCogdGltZXN0
YW1wKSB7CiAgIHN3aXRjaCAoc3RhdGVfKSB7CiAgICAgY2FzZSBTU0xfTk9ORToKICAgICAgIHJl
dHVybiBBc3luY1NvY2tldEFkYXB0ZXI6OlJlY3YocHYsIGNiLCB0aW1lc3RhbXApOwotCiAgICAg
Y2FzZSBTU0xfV0FJVDoKICAgICBjYXNlIFNTTF9DT05ORUNUSU5HOgogICAgICAgU2V0RXJyb3Io
RU5PVENPTk4pOwogICAgICAgcmV0dXJuIFNPQ0tFVF9FUlJPUjsKLQogICAgIGNhc2UgU1NMX0NP
Tk5FQ1RFRDoKICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBTU0xfRVJST1I6CiAgICAgZGVmYXVs
dDoKICAgICAgIHJldHVybiBTT0NLRVRfRVJST1I7CiAgIH0KIAogICAvLyBEb24ndCB0cnVzdCBP
cGVuU1NMIHdpdGggemVybyBieXRlIHJlYWRzCi0gIGlmIChjYiA9PSAwKQorICBpZiAoY2IgPT0g
MCkgewogICAgIHJldHVybiAwOworICB9CiAKICAgc3NsX3JlYWRfbmVlZHNfd3JpdGVfID0gZmFs
c2U7Ci0KICAgaW50IGNvZGUgPSBTU0xfcmVhZChzc2xfLCBwdiwgY2hlY2tlZF9jYXN0PGludD4o
Y2IpKTsKICAgaW50IGVycm9yID0gU1NMX2dldF9lcnJvcihzc2xfLCBjb2RlKTsKKwogICBzd2l0
Y2ggKGVycm9yKSB7CiAgICAgY2FzZSBTU0xfRVJST1JfTk9ORToKICAgICAgIHJldHVybiBjb2Rl
OwpAQCAtNjYwLDcgKzY1Niw2IEBAIGludCBPcGVuU1NMQWRhcHRlcjo6UmVjdih2b2lkKiBwdiwg
c2l6ZV90IGNiLCBpbnQ2NF90KiB0aW1lc3RhbXApIHsKICAgICAgIEVycm9yKCJTU0xfcmVhZCIs
IChjb2RlID8gY29kZSA6IC0xKSwgZmFsc2UpOwogICAgICAgYnJlYWs7CiAgIH0KLQogICByZXR1
cm4gU09DS0VUX0VSUk9SOwogfQogCkBAIC02NzAsMTQgKzY2NSwxMSBAQCBpbnQgT3BlblNTTEFk
YXB0ZXI6OlJlY3ZGcm9tKHZvaWQqIHB2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90KiB0aW1lc3RhbXApIHsKICAgaWYgKHNvY2tldF8tPkdldFN0YXRlKCkgPT0gU29ja2V0
OjpDU19DT05ORUNURUQpIHsKICAgICBpbnQgcmV0ID0gUmVjdihwdiwgY2IsIHRpbWVzdGFtcCk7
Ci0KICAgICAqcGFkZHIgPSBHZXRSZW1vdGVBZGRyZXNzKCk7Ci0KICAgICByZXR1cm4gcmV0Owog
ICB9CiAKICAgU2V0RXJyb3IoRU5PVENPTk4pOwotCiAgIHJldHVybiBTT0NLRVRfRVJST1I7CiB9
CiAKQEAgLTY4OCwxMiArNjgwLDExIEBAIGludCBPcGVuU1NMQWRhcHRlcjo6Q2xvc2UoKSB7CiB9
CiAKIFNvY2tldDo6Q29ublN0YXRlIE9wZW5TU0xBZGFwdGVyOjpHZXRTdGF0ZSgpIGNvbnN0IHsK
LSAgLy8gaWYgKHNpZ25hbF9jbG9zZV8pCi0gIC8vICByZXR1cm4gQ1NfQ09OTkVDVEVEOwogICBD
b25uU3RhdGUgc3RhdGUgPSBzb2NrZXRfLT5HZXRTdGF0ZSgpOwogICBpZiAoKHN0YXRlID09IENT
X0NPTk5FQ1RFRCkgJiYKLSAgICAgICgoc3RhdGVfID09IFNTTF9XQUlUKSB8fCAoc3RhdGVfID09
IFNTTF9DT05ORUNUSU5HKSkpCisgICAgICAoKHN0YXRlXyA9PSBTU0xfV0FJVCkgfHwgKHN0YXRl
XyA9PSBTU0xfQ09OTkVDVElORykpKSB7CiAgICAgc3RhdGUgPSBDU19DT05ORUNUSU5HOworICB9
CiAgIHJldHVybiBzdGF0ZTsKIH0KIApAQCAtNzM2LDggKzcyNyw5IEBAIHZvaWQgT3BlblNTTEFk
YXB0ZXI6Ok9uUmVhZEV2ZW50KEFzeW5jU29ja2V0KiBzb2NrZXQpIHsKICAgICByZXR1cm47CiAg
IH0KIAotICBpZiAoc3RhdGVfICE9IFNTTF9DT05ORUNURUQpCisgIGlmIChzdGF0ZV8gIT0gU1NM
X0NPTk5FQ1RFRCkgewogICAgIHJldHVybjsKKyAgfQogCiAgIC8vIERvbid0IGxldCBvdXJzZWx2
ZXMgZ28gYXdheSBkdXJpbmcgdGhlIGNhbGxiYWNrcwogICAvLyBQUmVmUHRyPE9wZW5TU0xBZGFw
dGVyPiBsb2NrKHRoaXMpOyAvLyBUT0RPKGJlbndyaWdodCk6IGZpeCB0aGlzCkBAIC03NjEsOCAr
NzUzLDkgQEAgdm9pZCBPcGVuU1NMQWRhcHRlcjo6T25Xcml0ZUV2ZW50KEFzeW5jU29ja2V0KiBz
b2NrZXQpIHsKICAgICByZXR1cm47CiAgIH0KIAotICBpZiAoc3RhdGVfICE9IFNTTF9DT05ORUNU
RUQpCisgIGlmIChzdGF0ZV8gIT0gU1NMX0NPTk5FQ1RFRCkgewogICAgIHJldHVybjsKKyAgfQog
CiAgIC8vIERvbid0IGxldCBvdXJzZWx2ZXMgZ28gYXdheSBkdXJpbmcgdGhlIGNhbGxiYWNrcwog
ICAvLyBQUmVmUHRyPE9wZW5TU0xBZGFwdGVyPiBsb2NrKHRoaXMpOyAvLyBUT0RPKGJlbndyaWdo
dCk6IGZpeCB0aGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsYWRhcHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGFkYXB0ZXIuaAppbmRleCA1
MGE3YzA4NDVjYTQ1OWRlZGQyODIxMDVjNzczYWM5N2VhOGEyZDZhLi4yZTNhMzU1ZjQzOWU3NTBl
NWMyMmM4YWE5YmM2YWI2OTZiODVjOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsYWRhcHRlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xh
ZGFwdGVyLmgKQEAgLTExLDI1ICsxMSwyOCBAQAogI2lmbmRlZiBSVENfQkFTRV9PUEVOU1NMQURB
UFRFUl9IXwogI2RlZmluZSBSVENfQkFTRV9PUEVOU1NMQURBUFRFUl9IXwogCi0jaW5jbHVkZSA8
b3BlbnNzbC9vc3NsX3R5cC5oPgotCi0jaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHN0ZGRlZi5o
PgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJp
bmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5Lmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9i
dWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xjZXJ0
aWZpY2F0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xpZGVudGl0eS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL29wZW5zc2xzZXNzaW9uY2FjaGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9z
b2NrZXQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3NsYWRhcHRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRl
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9zc2xzdHJlYW1hZGFwdGVyLmgiCiAKIG5hbWVzcGFjZSBydGMgewogCi1jbGFzcyBPcGVuU1NM
QWRhcHRlciA6IHB1YmxpYyBTU0xBZGFwdGVyLCBwdWJsaWMgTWVzc2FnZUhhbmRsZXIgeworY2xh
c3MgT3BlblNTTEFkYXB0ZXIgZmluYWwgOiBwdWJsaWMgU1NMQWRhcHRlciwgcHVibGljIE1lc3Nh
Z2VIYW5kbGVyIHsKICBwdWJsaWM6CiAgIHN0YXRpYyBib29sIEluaXRpYWxpemVTU0woKTsKICAg
c3RhdGljIGJvb2wgQ2xlYW51cFNTTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNz
bGNlcnRpZmljYXRlLmNjCmluZGV4IDIzNmJlZjU1YzhhYWM5NWE2YzcxNDM3NGI4YTJjMGNlYTc3
YjEyZGMuLjRlMzI1ZGNlYzAxOGZjOTI1MzZhMGNlNWM4MjhjMzJhOTgyOTM4MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29w
ZW5zc2xjZXJ0aWZpY2F0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MKQEAgLTEwLDEwICsxMCw2
IEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKIAotI2luY2x1
ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQogI2lm
IGRlZmluZWQoV0VCUlRDX1dJTikKIC8vIE11c3QgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIG9w
ZW5zc2wgaGVhZGVycy4KICNpbmNsdWRlICJydGNfYmFzZS93aW4zMi5oIiAgLy8gTk9MSU5UCkBA
IC0yMSw2MyArMTcsNjkgQEAKIAogI2luY2x1ZGUgPG9wZW5zc2wvYmlvLmg+CiAjaW5jbHVkZSA8
b3BlbnNzbC9ibi5oPgotI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0jaW5jbHVkZSA8b3Bl
bnNzbC9lcnIuaD4KICNpbmNsdWRlIDxvcGVuc3NsL3BlbS5oPgotI2luY2x1ZGUgPG9wZW5zc2wv
cnNhLmg+CisjaW5jbHVkZSA8dGltZS5oPgogCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNp
b25zLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbC5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L21lc3NhZ2VkaWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsZGlnZXN0LmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
b3BlbnNzbHV0aWxpdHkuaCIKLSNpZm5kZWYgV0VCUlRDX0VYQ0xVREVfQlVJTFRfSU5fU1NMX1JP
T1RfQ0VSVFMKLSNpbmNsdWRlICJydGNfYmFzZS9zc2xyb290cy5oIgotI2VuZGlmICAvLyBXRUJS
VENfRVhDTFVERV9CVUlMVF9JTl9TU0xfUk9PVF9DRVJUUwogCiBuYW1lc3BhY2UgcnRjIHsKLQot
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotLy8gT3BlblNTTENlcnRpZmljYXRlCi0vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8v
IFdlIGNvdWxkIGhhdmUgZXhwb3NlZCBhIG15cmlhZCBvZiBwYXJhbWV0ZXJzIGZvciB0aGUgY3J5
cHRvIHN0dWZmLAotLy8gYnV0IGtlZXBpbmcgaXQgc2ltcGxlIHNlZW1zIGJlc3QuCituYW1lc3Bh
Y2UgewogCiAvLyBSYW5kb20gYml0cyBmb3IgY2VydGlmaWNhdGUgc2VyaWFsIG51bWJlcgogc3Rh
dGljIGNvbnN0IGludCBTRVJJQUxfUkFORF9CSVRTID0gNjQ7CiAKKyNpZiAhZGVmaW5lZChOREVC
VUcpCisvLyBQcmludCBhIGNlcnRpZmljYXRlIHRvIHRoZSBsb2csIGZvciBkZWJ1Z2dpbmcuCitz
dGF0aWMgdm9pZCBQcmludENlcnQoWDUwOSogeDUwOSkgeworICBCSU8qIHRlbXBfbWVtb3J5X2Jp
byA9IEJJT19uZXcoQklPX3NfbWVtKCkpOworICBpZiAoIXRlbXBfbWVtb3J5X2JpbykgeworICAg
IFJUQ19ETE9HX0YoTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gYWxsb2NhdGUgdGVtcG9yYXJ5IG1l
bW9yeSBiaW8iOworICAgIHJldHVybjsKKyAgfQorICBYNTA5X3ByaW50X2V4KHRlbXBfbWVtb3J5
X2JpbywgeDUwOSwgWE5fRkxBR19TRVBfQ1BMVVNfU1BDLCAwKTsKKyAgQklPX3dyaXRlKHRlbXBf
bWVtb3J5X2JpbywgIlwwIiwgMSk7CisgIGNoYXIqIGJ1ZmZlcjsKKyAgQklPX2dldF9tZW1fZGF0
YSh0ZW1wX21lbW9yeV9iaW8sICZidWZmZXIpOworICBSVENfRExPRyhMU19WRVJCT1NFKSA8PCBi
dWZmZXI7CisgIEJJT19mcmVlKHRlbXBfbWVtb3J5X2Jpbyk7Cit9CisjZW5kaWYKKwogLy8gR2Vu
ZXJhdGUgYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSwgd2l0aCB0aGUgcHVibGljIGtleSBmcm9t
IHRoZQogLy8gZ2l2ZW4ga2V5IHBhaXIuIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWlu
ZyB0aGUgcmV0dXJuZWQgb2JqZWN0Lgogc3RhdGljIFg1MDkqIE1ha2VDZXJ0aWZpY2F0ZShFVlBf
UEtFWSogcGtleSwgY29uc3QgU1NMSWRlbnRpdHlQYXJhbXMmIHBhcmFtcykgewogICBSVENfTE9H
KExTX0lORk8pIDw8ICJNYWtpbmcgY2VydGlmaWNhdGUgZm9yICIgPDwgcGFyYW1zLmNvbW1vbl9u
YW1lOwotICBYNTA5KiB4NTA5ID0gbnVsbHB0cjsKKworICBBU04xX0lOVEVHRVIqIGFzbjFfc2Vy
aWFsX251bWJlciA9IG51bGxwdHI7CiAgIEJJR05VTSogc2VyaWFsX251bWJlciA9IG51bGxwdHI7
CisgIFg1MDkqIHg1MDkgPSBudWxscHRyOwogICBYNTA5X05BTUUqIG5hbWUgPSBudWxscHRyOwog
ICB0aW1lX3QgZXBvY2hfb2ZmID0gMDsgIC8vIFRpbWUgb2Zmc2V0IHNpbmNlIGVwb2NoLgogCi0g
IGlmICgoeDUwOSA9IFg1MDlfbmV3KCkpID09IG51bGxwdHIpCisgIGlmICgoeDUwOSA9IFg1MDlf
bmV3KCkpID09IG51bGxwdHIpIHsKICAgICBnb3RvIGVycm9yOwotCi0gIGlmICghWDUwOV9zZXRf
cHVia2V5KHg1MDksIHBrZXkpKQorICB9CisgIGlmICghWDUwOV9zZXRfcHVia2V5KHg1MDksIHBr
ZXkpKSB7CiAgICAgZ290byBlcnJvcjsKLQotICAvLyBzZXJpYWwgbnVtYmVyCi0gIC8vIHRlbXBv
cmFyeSByZWZlcmVuY2UgdG8gc2VyaWFsIG51bWJlciBpbnNpZGUgeDUwOSBzdHJ1Y3QKLSAgQVNO
MV9JTlRFR0VSKiBhc24xX3NlcmlhbF9udW1iZXI7CisgIH0KKyAgLy8gc2VyaWFsIG51bWJlciAt
IHRlbXBvcmFyeSByZWZlcmVuY2UgdG8gc2VyaWFsIG51bWJlciBpbnNpZGUgeDUwOSBzdHJ1Y3QK
ICAgaWYgKChzZXJpYWxfbnVtYmVyID0gQk5fbmV3KCkpID09IG51bGxwdHIgfHwKICAgICAgICFC
Tl9wc2V1ZG9fcmFuZChzZXJpYWxfbnVtYmVyLCBTRVJJQUxfUkFORF9CSVRTLCAwLCAwKSB8fAog
ICAgICAgKGFzbjFfc2VyaWFsX251bWJlciA9IFg1MDlfZ2V0X3NlcmlhbE51bWJlcih4NTA5KSkg
PT0gbnVsbHB0ciB8fAotICAgICAgIUJOX3RvX0FTTjFfSU5URUdFUihzZXJpYWxfbnVtYmVyLCBh
c24xX3NlcmlhbF9udW1iZXIpKQorICAgICAgIUJOX3RvX0FTTjFfSU5URUdFUihzZXJpYWxfbnVt
YmVyLCBhc24xX3NlcmlhbF9udW1iZXIpKSB7CiAgICAgZ290byBlcnJvcjsKLQotICBpZiAoIVg1
MDlfc2V0X3ZlcnNpb24oeDUwOSwgMkwpKSAgLy8gdmVyc2lvbiAzCisgIH0KKyAgLy8gU2V0IHZl
cnNpb24gdG8gWDUwOS5WMworICBpZiAoIVg1MDlfc2V0X3ZlcnNpb24oeDUwOSwgMkwpKSB7CiAg
ICAgZ290byBlcnJvcjsKKyAgfQogCiAgIC8vIFRoZXJlIGFyZSBhIGxvdCBvZiBwb3NzaWJsZSBj
b21wb25lbnRzIGZvciB0aGUgbmFtZSBlbnRyaWVzLiBJbgogICAvLyBvdXIgUDJQIFNTTCBtb2Rl
IGhvd2V2ZXIsIHRoZSBjZXJ0aWZpY2F0ZXMgYXJlIHByZS1leGNoYW5nZWQKQEAgLTkwLDE1ICs5
MiwxNiBAQCBzdGF0aWMgWDUwOSogTWFrZUNlcnRpZmljYXRlKEVWUF9QS0VZKiBwa2V5LCBjb25z
dCBTU0xJZGVudGl0eVBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAhWDUwOV9OQU1FX2FkZF9lbnRy
eV9ieV9OSUQobmFtZSwgTklEX2NvbW1vbk5hbWUsIE1CU1RSSU5HX1VURjgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIqKXBhcmFtcy5jb21tb25fbmFt
ZS5jX3N0cigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgMCkg
fHwKLSAgICAgICFYNTA5X3NldF9zdWJqZWN0X25hbWUoeDUwOSwgbmFtZSkgfHwgIVg1MDlfc2V0
X2lzc3Vlcl9uYW1lKHg1MDksIG5hbWUpKQorICAgICAgIVg1MDlfc2V0X3N1YmplY3RfbmFtZSh4
NTA5LCBuYW1lKSB8fCAhWDUwOV9zZXRfaXNzdWVyX25hbWUoeDUwOSwgbmFtZSkpIHsKICAgICBn
b3RvIGVycm9yOwotCisgIH0KICAgaWYgKCFYNTA5X3RpbWVfYWRqKFg1MDlfZ2V0X25vdEJlZm9y
ZSh4NTA5KSwgcGFyYW1zLm5vdF9iZWZvcmUsICZlcG9jaF9vZmYpIHx8Ci0gICAgICAhWDUwOV90
aW1lX2FkaihYNTA5X2dldF9ub3RBZnRlcih4NTA5KSwgcGFyYW1zLm5vdF9hZnRlciwgJmVwb2No
X29mZikpCisgICAgICAhWDUwOV90aW1lX2FkaihYNTA5X2dldF9ub3RBZnRlcih4NTA5KSwgcGFy
YW1zLm5vdF9hZnRlciwgJmVwb2NoX29mZikpIHsKICAgICBnb3RvIGVycm9yOwotCi0gIGlmICgh
WDUwOV9zaWduKHg1MDksIHBrZXksIEVWUF9zaGEyNTYoKSkpCisgIH0KKyAgaWYgKCFYNTA5X3Np
Z24oeDUwOSwgcGtleSwgRVZQX3NoYTI1NigpKSkgewogICAgIGdvdG8gZXJyb3I7CisgIH0KIAog
ICBCTl9mcmVlKHNlcmlhbF9udW1iZXIpOwogICBYNTA5X05BTUVfZnJlZShuYW1lKTsKQEAgLTEx
MiwyOCArMTE1LDE0IEBAIGVycm9yOgogICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmICFkZWZp
bmVkKE5ERUJVRykKLS8vIFByaW50IGEgY2VydGlmaWNhdGUgdG8gdGhlIGxvZywgZm9yIGRlYnVn
Z2luZy4KLXN0YXRpYyB2b2lkIFByaW50Q2VydChYNTA5KiB4NTA5KSB7Ci0gIEJJTyogdGVtcF9t
ZW1vcnlfYmlvID0gQklPX25ldyhCSU9fc19tZW0oKSk7Ci0gIGlmICghdGVtcF9tZW1vcnlfYmlv
KSB7Ci0gICAgUlRDX0RMT0dfRihMU19FUlJPUikgPDwgIkZhaWxlZCB0byBhbGxvY2F0ZSB0ZW1w
b3JhcnkgbWVtb3J5IGJpbyI7Ci0gICAgcmV0dXJuOwotICB9Ci0gIFg1MDlfcHJpbnRfZXgodGVt
cF9tZW1vcnlfYmlvLCB4NTA5LCBYTl9GTEFHX1NFUF9DUExVU19TUEMsIDApOwotICBCSU9fd3Jp
dGUodGVtcF9tZW1vcnlfYmlvLCAiXDAiLCAxKTsKLSAgY2hhciogYnVmZmVyOwotICBCSU9fZ2V0
X21lbV9kYXRhKHRlbXBfbWVtb3J5X2JpbywgJmJ1ZmZlcik7Ci0gIFJUQ19ETE9HKExTX1ZFUkJP
U0UpIDw8IGJ1ZmZlcjsKLSAgQklPX2ZyZWUodGVtcF9tZW1vcnlfYmlvKTsKLX0KLSNlbmRpZgor
fSAgLy8gbmFtZXNwYWNlCiAKIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6T3BlblNTTENlcnRpZmljYXRl
KFg1MDkqIHg1MDkpIDogeDUwOV8oeDUwOSkgewotICBBZGRSZWZlcmVuY2UoKTsKKyAgUlRDX0RD
SEVDSyh4NTA5XyAhPSBudWxscHRyKTsKKyAgWDUwOV91cF9yZWYoeDUwOV8pOwogfQogCi1PcGVu
U1NMQ2VydGlmaWNhdGUqIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6R2VuZXJhdGUoCitzdGQ6OnVuaXF1
ZV9wdHI8T3BlblNTTENlcnRpZmljYXRlPiBPcGVuU1NMQ2VydGlmaWNhdGU6OkdlbmVyYXRlKAog
ICAgIE9wZW5TU0xLZXlQYWlyKiBrZXlfcGFpciwKICAgICBjb25zdCBTU0xJZGVudGl0eVBhcmFt
cyYgcGFyYW1zKSB7CiAgIFNTTElkZW50aXR5UGFyYW1zIGFjdHVhbF9wYXJhbXMocGFyYW1zKTsK
QEAgLTE0OSwyNSArMTM4LDI3IEBAIE9wZW5TU0xDZXJ0aWZpY2F0ZSogT3BlblNTTENlcnRpZmlj
YXRlOjpHZW5lcmF0ZSgKICNpZiAhZGVmaW5lZChOREVCVUcpCiAgIFByaW50Q2VydCh4NTA5KTsK
ICNlbmRpZgotICBPcGVuU1NMQ2VydGlmaWNhdGUqIHJldCA9IG5ldyBPcGVuU1NMQ2VydGlmaWNh
dGUoeDUwOSk7CisgIGF1dG8gcmV0ID0gYWJzbDo6bWFrZV91bmlxdWU8T3BlblNTTENlcnRpZmlj
YXRlPih4NTA5KTsKICAgWDUwOV9mcmVlKHg1MDkpOwogICByZXR1cm4gcmV0OwogfQogCi1PcGVu
U1NMQ2VydGlmaWNhdGUqIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6RnJvbVBFTVN0cmluZygKK3N0ZDo6
dW5pcXVlX3B0cjxPcGVuU1NMQ2VydGlmaWNhdGU+IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6RnJvbVBF
TVN0cmluZygKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGVtX3N0cmluZykgewogICBCSU8qIGJp
byA9IEJJT19uZXdfbWVtX2J1Zihjb25zdF9jYXN0PGNoYXIqPihwZW1fc3RyaW5nLmNfc3RyKCkp
LCAtMSk7Ci0gIGlmICghYmlvKQorICBpZiAoIWJpbykgewogICAgIHJldHVybiBudWxscHRyOwor
ICB9CisKICAgQklPX3NldF9tZW1fZW9mX3JldHVybihiaW8sIDApOwogICBYNTA5KiB4NTA5ID0K
ICAgICAgIFBFTV9yZWFkX2Jpb19YNTA5KGJpbywgbnVsbHB0ciwgbnVsbHB0ciwgY29uc3RfY2Fz
dDxjaGFyKj4oIlwwIikpOwogICBCSU9fZnJlZShiaW8pOyAgLy8gRnJlZXMgdGhlIEJJTywgYnV0
IG5vdCB0aGUgcG9pbnRlZC10byBzdHJpbmcuCiAKLSAgaWYgKCF4NTA5KQorICBpZiAoIXg1MDkp
IHsKICAgICByZXR1cm4gbnVsbHB0cjsKLQotICBPcGVuU1NMQ2VydGlmaWNhdGUqIHJldCA9IG5l
dyBPcGVuU1NMQ2VydGlmaWNhdGUoeDUwOSk7CisgIH0KKyAgYXV0byByZXQgPSBhYnNsOjptYWtl
X3VuaXF1ZTxPcGVuU1NMQ2VydGlmaWNhdGU+KHg1MDkpOwogICBYNTA5X2ZyZWUoeDUwOSk7CiAg
IHJldHVybiByZXQ7CiB9CkBAIC0yMjksMTkgKzIyMCwxNiBAQCBib29sIE9wZW5TU0xDZXJ0aWZp
Y2F0ZTo6Q29tcHV0ZURpZ2VzdChjb25zdCBYNTA5KiB4NTA5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZGlnZXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGxlbmd0aCkgewotICBjb25zdCBFVlBfTUQq
IG1kOwotICB1bnNpZ25lZCBpbnQgbjsKLQotICBpZiAoIU9wZW5TU0xEaWdlc3Q6OkdldERpZ2Vz
dEVWUChhbGdvcml0aG0sICZtZCkpCisgIGNvbnN0IEVWUF9NRCogbWQgPSBudWxscHRyOworICB1
bnNpZ25lZCBpbnQgbiA9IDA7CisgIGlmICghT3BlblNTTERpZ2VzdDo6R2V0RGlnZXN0RVZQKGFs
Z29yaXRobSwgJm1kKSkgewogICAgIHJldHVybiBmYWxzZTsKLQotICBpZiAoc2l6ZSA8IHN0YXRp
Y19jYXN0PHNpemVfdD4oRVZQX01EX3NpemUobWQpKSkKKyAgfQorICBpZiAoc2l6ZSA8IHN0YXRp
Y19jYXN0PHNpemVfdD4oRVZQX01EX3NpemUobWQpKSkgewogICAgIHJldHVybiBmYWxzZTsKLQor
ICB9CiAgIFg1MDlfZGlnZXN0KHg1MDksIG1kLCBkaWdlc3QsICZuKTsKLQogICAqbGVuZ3RoID0g
bjsKLQogICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjQ5LDE4ICsyMzcsMTggQEAgT3BlblNTTENl
cnRpZmljYXRlOjp+T3BlblNTTENlcnRpZmljYXRlKCkgewogICBYNTA5X2ZyZWUoeDUwOV8pOwog
fQogCi1PcGVuU1NMQ2VydGlmaWNhdGUqIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6R2V0UmVmZXJlbmNl
KCkgY29uc3QgewotICByZXR1cm4gbmV3IE9wZW5TU0xDZXJ0aWZpY2F0ZSh4NTA5Xyk7CitzdGQ6
OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6Q2xvbmUoKSBj
b25zdCB7CisgIHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxPcGVuU1NMQ2VydGlmaWNhdGU+KHg1
MDlfKTsKIH0KIAogc3RkOjpzdHJpbmcgT3BlblNTTENlcnRpZmljYXRlOjpUb1BFTVN0cmluZygp
IGNvbnN0IHsKICAgQklPKiBiaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKICAgaWYgKCFiaW8p
IHsKLSAgICBSVENfRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7CisgICAgUlRDX0ZBVEFM
KCkgPDwgIlVucmVhY2hhYmxlIGNvZGUuIjsKICAgfQogICBpZiAoIVBFTV93cml0ZV9iaW9fWDUw
OShiaW8sIHg1MDlfKSkgewogICAgIEJJT19mcmVlKGJpbyk7Ci0gICAgUlRDX0ZBVEFMKCkgPDwg
InVucmVhY2hhYmxlIGNvZGUiOworICAgIFJUQ19GQVRBTCgpIDw8ICJVbnJlYWNoYWJsZSBjb2Rl
LiI7CiAgIH0KICAgQklPX3dyaXRlKGJpbywgIlwwIiwgMSk7CiAgIGNoYXIqIGJ1ZmZlcjsKQEAg
LTI3MywyNyArMjYxLDIxIEBAIHN0ZDo6c3RyaW5nIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9QRU1T
dHJpbmcoKSBjb25zdCB7CiB2b2lkIE9wZW5TU0xDZXJ0aWZpY2F0ZTo6VG9ERVIoQnVmZmVyKiBk
ZXJfYnVmZmVyKSBjb25zdCB7CiAgIC8vIEluIGNhc2Ugb2YgZmFpbHVyZSwgbWFrZSBzdXJlIHRv
IGxlYXZlIHRoZSBidWZmZXIgZW1wdHkuCiAgIGRlcl9idWZmZXItPlNldFNpemUoMCk7Ci0KICAg
Ly8gQ2FsY3VsYXRlcyB0aGUgREVSIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZSwg
ZnJvbSBzY3JhdGNoLgogICBCSU8qIGJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOwogICBpZiAo
IWJpbykgewotICAgIFJUQ19GQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKyAgICBSVENf
RkFUQUwoKSA8PCAiVW5yZWFjaGFibGUgY29kZS4iOwogICB9CiAgIGlmICghaTJkX1g1MDlfYmlv
KGJpbywgeDUwOV8pKSB7CiAgICAgQklPX2ZyZWUoYmlvKTsKLSAgICBSVENfRkFUQUwoKSA8PCAi
dW5yZWFjaGFibGUgY29kZSI7CisgICAgUlRDX0ZBVEFMKCkgPDwgIlVucmVhY2hhYmxlIGNvZGUu
IjsKICAgfQotICBjaGFyKiBkYXRhOworICBjaGFyKiBkYXRhID0gbnVsbHB0cjsKICAgc2l6ZV90
IGxlbmd0aCA9IEJJT19nZXRfbWVtX2RhdGEoYmlvLCAmZGF0YSk7CiAgIGRlcl9idWZmZXItPlNl
dERhdGEoZGF0YSwgbGVuZ3RoKTsKICAgQklPX2ZyZWUoYmlvKTsKIH0KIAotdm9pZCBPcGVuU1NM
Q2VydGlmaWNhdGU6OkFkZFJlZmVyZW5jZSgpIGNvbnN0IHsKLSAgUlRDX0RDSEVDSyh4NTA5XyAh
PSBudWxscHRyKTsKLSAgWDUwOV91cF9yZWYoeDUwOV8pOwotfQotCiBib29sIE9wZW5TU0xDZXJ0
aWZpY2F0ZTo6b3BlcmF0b3I9PShjb25zdCBPcGVuU1NMQ2VydGlmaWNhdGUmIG90aGVyKSBjb25z
dCB7CiAgIHJldHVybiBYNTA5X2NtcCh4NTA5Xywgb3RoZXIueDUwOV8pID09IDA7CiB9CkBAIC0z
MDIsMTEgKzI4NCw5IEBAIGJvb2wgT3BlblNTTENlcnRpZmljYXRlOjpvcGVyYXRvciE9KGNvbnN0
IE9wZW5TU0xDZXJ0aWZpY2F0ZSYgb3RoZXIpIGNvbnN0IHsKICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwogfQogCi0vLyBEb2N1bWVudGVkIGluIHNzbGlkZW50aXR5LmguCiBpbnQ2NF90IE9w
ZW5TU0xDZXJ0aWZpY2F0ZTo6Q2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpIGNvbnN0IHsKICAg
QVNOMV9USU1FKiBleHBpcmVfdGltZSA9IFg1MDlfZ2V0X25vdEFmdGVyKHg1MDlfKTsKICAgYm9v
bCBsb25nX2Zvcm1hdDsKLQogICBpZiAoZXhwaXJlX3RpbWUtPnR5cGUgPT0gVl9BU04xX1VUQ1RJ
TUUpIHsKICAgICBsb25nX2Zvcm1hdCA9IGZhbHNlOwogICB9IGVsc2UgaWYgKGV4cGlyZV90aW1l
LT50eXBlID09IFZfQVNOMV9HRU5FUkFMSVpFRFRJTUUpIHsKQEAgLTMxNCw3ICsyOTQsNiBAQCBp
bnQ2NF90IE9wZW5TU0xDZXJ0aWZpY2F0ZTo6Q2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgpIGNv
bnN0IHsKICAgfSBlbHNlIHsKICAgICByZXR1cm4gLTE7CiAgIH0KLQogICByZXR1cm4gQVNOMVRp
bWVUb1NlYyhleHBpcmVfdGltZS0+ZGF0YSwgZXhwaXJlX3RpbWUtPmxlbmd0aCwgbG9uZ19mb3Jt
YXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5oCmlu
ZGV4IGM3MzBmZmQwZGM5ZTc2OWM2YmQwZjk3ZDRlZTFlN2JkYzU0MjlmZjIuLjA4ODcyNWMwZDc1
NTY1M2QzYjIzMDM2NWM1NjMzMWNkMDQyYzA2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L29wZW5zc2xjZXJ0aWZpY2F0ZS5oCkBAIC0xMSwzOCArMTEsMzggQEAKICNpZm5kZWYgUlRDX0JB
U0VfT1BFTlNTTENFUlRJRklDQVRFX0hfCiAjZGVmaW5lIFJUQ19CQVNFX09QRU5TU0xDRVJUSUZJ
Q0FURV9IXwogCi0jaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3g1
MDkuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL29zc2xfdHlwLmg+CiAKLSNpbmNsdWRlIDxtZW1vcnk+
CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3Ry
aW5nPgogCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uv
YnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRl
bnRpdHkuaCIKIAotdHlwZWRlZiBzdHJ1Y3Qgc3NsX2N0eF9zdCBTU0xfQ1RYOwotCiBuYW1lc3Bh
Y2UgcnRjIHsKIAogY2xhc3MgT3BlblNTTEtleVBhaXI7CiAKIC8vIE9wZW5TU0xDZXJ0aWZpY2F0
ZSBlbmNhcHN1bGF0ZXMgYW4gT3BlblNTTCBYNTA5KiBjZXJ0aWZpY2F0ZSBvYmplY3QsCiAvLyB3
aGljaCBpcyBhbHNvIHJlZmVyZW5jZSBjb3VudGVkIGluc2lkZSB0aGUgT3BlblNTTCBsaWJyYXJ5
LgotY2xhc3MgT3BlblNTTENlcnRpZmljYXRlIDogcHVibGljIFNTTENlcnRpZmljYXRlIHsKK2Ns
YXNzIE9wZW5TU0xDZXJ0aWZpY2F0ZSBmaW5hbCA6IHB1YmxpYyBTU0xDZXJ0aWZpY2F0ZSB7CiAg
cHVibGljOgogICAvLyBYNTA5IG9iamVjdCBoYXMgaXRzIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1l
bnRlZC4gU28gdGhlIGNhbGxlciBhbmQKICAgLy8gT3BlblNTTENlcnRpZmljYXRlIHNoYXJlIG93
bmVyc2hpcC4KICAgZXhwbGljaXQgT3BlblNTTENlcnRpZmljYXRlKFg1MDkqIHg1MDkpOwogCi0g
IHN0YXRpYyBPcGVuU1NMQ2VydGlmaWNhdGUqIEdlbmVyYXRlKE9wZW5TU0xLZXlQYWlyKiBrZXlf
cGFpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1NMSWRl
bnRpdHlQYXJhbXMmIHBhcmFtcyk7Ci0gIHN0YXRpYyBPcGVuU1NMQ2VydGlmaWNhdGUqIEZyb21Q
RU1TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV9zdHJpbmcpOworICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPE9wZW5TU0xDZXJ0aWZpY2F0ZT4gR2VuZXJhdGUoCisgICAgICBPcGVuU1NMS2V5
UGFpcioga2V5X3BhaXIsCisgICAgICBjb25zdCBTU0xJZGVudGl0eVBhcmFtcyYgcGFyYW1zKTsK
KyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxPcGVuU1NMQ2VydGlmaWNhdGU+IEZyb21QRU1TdHJp
bmcoCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGVtX3N0cmluZyk7CiAKICAgfk9wZW5TU0xD
ZXJ0aWZpY2F0ZSgpIG92ZXJyaWRlOwogCi0gIE9wZW5TU0xDZXJ0aWZpY2F0ZSogR2V0UmVmZXJl
bmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZT4g
Q2xvbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICBYNTA5KiB4NTA5KCkgY29uc3QgeyByZXR1cm4g
eDUwOV87IH0KIApAQCAtNjksOCArNjksNiBAQCBjbGFzcyBPcGVuU1NMQ2VydGlmaWNhdGUgOiBw
dWJsaWMgU1NMQ2VydGlmaWNhdGUgewogICBpbnQ2NF90IENlcnRpZmljYXRlRXhwaXJhdGlvblRp
bWUoKSBjb25zdCBvdmVycmlkZTsKIAogIHByaXZhdGU6Ci0gIHZvaWQgQWRkUmVmZXJlbmNlKCkg
Y29uc3Q7Ci0KICAgWDUwOSogeDUwOV87ICAvLyBOT1QgT1dORUQKICAgUlRDX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihPcGVuU1NMQ2VydGlmaWNhdGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xkaWdl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9vcGVuc3NsZGlnZXN0LmNjCmluZGV4IDliNjQ0YzQ2MGI1YTU4MzRiODM5ZmU2OGYxZjc0YmU5
MGM3YzVjOTMuLmRhOTBiNjVmODIyMWNhOTZjNmEwMzMzOWYyODg3ZDcwYjgyYjVhNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L29wZW5zc2xkaWdlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGRpZ2VzdC5jYwpAQCAtMTAsNyArMTAsNyBAQAogCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbGRpZ2VzdC5oIgogCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiICAvLyBSVENfRENIRUNLLCBS
VENfQ0hFQ0sKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsLmgiCiAKIG5hbWVzcGFjZSBydGMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvb3BlbnNzbGRpZ2VzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGRpZ2VzdC5oCmluZGV4IGM0Y2QxZTAzMTRlZDRl
MGFiZWRjZGJjMDY3NmM4OTAwNmExYjZlYjAuLjgyZGM5YTk2Y2Q4NGJiYWYwYzdjZGFmMjcxYWMy
MjQ3MGFjNTgyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xkaWdlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsZGlnZXN0LmgKQEAgLTEx
LDE0ICsxMSwxNiBAQAogI2lmbmRlZiBSVENfQkFTRV9PUEVOU1NMRElHRVNUX0hfCiAjZGVmaW5l
IFJUQ19CQVNFX09QRU5TU0xESUdFU1RfSF8KIAotI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Cisj
aW5jbHVkZSA8b3BlbnNzbC9iYXNlLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8
c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgogCiBuYW1lc3Bh
Y2UgcnRjIHsKIAogLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGRpZ2VzdCBjbGFzcyB0aGF0
IHVzZXMgT3BlblNTTC4KLWNsYXNzIE9wZW5TU0xEaWdlc3QgOiBwdWJsaWMgTWVzc2FnZURpZ2Vz
dCB7CitjbGFzcyBPcGVuU1NMRGlnZXN0IGZpbmFsIDogcHVibGljIE1lc3NhZ2VEaWdlc3Qgewog
IHB1YmxpYzoKICAgLy8gQ3JlYXRlcyBhbiBPcGVuU1NMRGlnZXN0IHdpdGggfGFsZ29yaXRobXwg
YXMgdGhlIGhhc2ggYWxnb3JpdGhtLgogICBleHBsaWNpdCBPcGVuU1NMRGlnZXN0KGNvbnN0IHN0
ZDo6c3RyaW5nJiBhbGdvcml0aG0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGlkZW50
aXR5LmNjCmluZGV4IGE4YzY5MTk3NzliZWRlNDc5MGY5ZmRmMGYxMTViNTcyY2VkNmU2ODUuLjk4
NTBjODU1ZWExNjc5YTQxMzc5MjY5MGU2NWY5OTg2MmM0ZDQ0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xpZGVu
dGl0eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuY2MKQEAgLTIxLDE4ICsyMSwxNyBAQAogCiAjaW5jbHVk
ZSA8b3BlbnNzbC9iaW8uaD4KICNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0jaW5jbHVkZSA8b3Bl
bnNzbC9jcnlwdG8uaD4KICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgogI2luY2x1ZGUgPG9wZW5z
c2wvcGVtLmg+CiAjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KIAorI2luY2x1ZGUgPHN0ZGludC5o
PgorCiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNp
b25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbC5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L29wZW5zc2xkaWdlc3QuaCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5oIgog
CiBuYW1lc3BhY2UgcnRjIHsKQEAgLTMxNiw3ICszMTUsNyBAQCBjb25zdCBTU0xDZXJ0Q2hhaW4m
IE9wZW5TU0xJZGVudGl0eTo6Y2VydF9jaGFpbigpIGNvbnN0IHsKIAogT3BlblNTTElkZW50aXR5
KiBPcGVuU1NMSWRlbnRpdHk6OkdldFJlZmVyZW5jZSgpIGNvbnN0IHsKICAgcmV0dXJuIG5ldyBP
cGVuU1NMSWRlbnRpdHkoYWJzbDo6V3JhcFVuaXF1ZShrZXlfcGFpcl8tPkdldFJlZmVyZW5jZSgp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6V3JhcFVuaXF1ZShjZXJ0X2No
YWluXy0+Q29weSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfY2hhaW5f
LT5DbG9uZSgpKTsKIH0KIAogYm9vbCBPcGVuU1NMSWRlbnRpdHk6OkNvbmZpZ3VyZUlkZW50aXR5
KFNTTF9DVFgqIGN0eCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGlkZW50aXR5LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuaApp
bmRleCAzNDA0NDI3NmNhNzY1OWJkZDc4NTU0NWJkOWJlZjExYjhjYWY5YzkyLi5mY2Y3ZGViZjkw
NzJmZWIxMzVmNzQ3MmYyNGNkNmIwYzBjYWNlYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9v
cGVuc3NsaWRlbnRpdHkuaApAQCAtMTEsMjQgKzExLDIzIEBACiAjaWZuZGVmIFJUQ19CQVNFX09Q
RU5TU0xJREVOVElUWV9IXwogI2RlZmluZSBSVENfQkFTRV9PUEVOU1NMSURFTlRJVFlfSF8KIAot
I2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC94NTA5Lmg+CisjaW5j
bHVkZSA8b3BlbnNzbC9vc3NsX3R5cC5oPgogCisjaW5jbHVkZSA8Y3RpbWU+CiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZp
Y2F0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5LmgiCiAKLXR5cGVkZWYgc3Ry
dWN0IHNzbF9jdHhfc3QgU1NMX0NUWDsKLQogbmFtZXNwYWNlIHJ0YyB7CiAKIC8vIE9wZW5TU0xL
ZXlQYWlyIGVuY2Fwc3VsYXRlcyBhbiBPcGVuU1NMIEVWUF9QS0VZKiBrZXlwYWlyIG9iamVjdCwK
IC8vIHdoaWNoIGlzIHJlZmVyZW5jZSBjb3VudGVkIGluc2lkZSB0aGUgT3BlblNTTCBsaWJyYXJ5
LgotY2xhc3MgT3BlblNTTEtleVBhaXIgeworY2xhc3MgT3BlblNTTEtleVBhaXIgZmluYWwgewog
IHB1YmxpYzoKICAgZXhwbGljaXQgT3BlblNTTEtleVBhaXIoRVZQX1BLRVkqIHBrZXkpIDogcGtl
eV8ocGtleSkgewogICAgIFJUQ19EQ0hFQ0socGtleV8gIT0gbnVsbHB0cik7CkBAIC01OSw3ICs1
OCw3IEBAIGNsYXNzIE9wZW5TU0xLZXlQYWlyIHsKIAogLy8gSG9sZHMgYSBrZXlwYWlyIGFuZCBj
ZXJ0aWZpY2F0ZSB0b2dldGhlciwgYW5kIGEgbWV0aG9kIHRvIGdlbmVyYXRlCiAvLyB0aGVtIGNv
bnNpc3RlbnRseS4KLWNsYXNzIE9wZW5TU0xJZGVudGl0eSA6IHB1YmxpYyBTU0xJZGVudGl0eSB7
CitjbGFzcyBPcGVuU1NMSWRlbnRpdHkgZmluYWwgOiBwdWJsaWMgU1NMSWRlbnRpdHkgewogIHB1
YmxpYzoKICAgc3RhdGljIE9wZW5TU0xJZGVudGl0eSogR2VuZXJhdGVXaXRoRXhwaXJhdGlvbihj
b25zdCBzdGQ6OnN0cmluZyYgY29tbW9uX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS2V5UGFyYW1zJiBrZXlfcGFyYW1zLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvb3BlbnNzbHN0cmVhbWFkYXB0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Nsc3RyZWFtYWRhcHRlci5jYwppbmRleCBmZDU0
YTA4MmE3ZDczODU4M2U4ODRjODg4ZWVlNTA4MmY5NDM0ZjhlLi43MjdjYjg0YWFlOTVkYTM3NWMy
NDc0YTkyZmJjYzhlYjhkOTFkOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3Nsc3RyZWFtYWRhcHRlci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVu
c3Nsc3RyZWFtYWRhcHRlci5jYwpAQCAtMjIsNiArMjIsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRl
IDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKQEAgLTMxLDYgKzMyLDcgQEAKICNpbmNsdWRlICJydGNf
YmFzZS9vcGVuc3NsYWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xkaWdlc3Qu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFk
LmgiCkBAIC0xODAsOCArMTgyLDkgQEAgc3RhdGljIEJJT19NRVRIT0QqIEJJT19zdHJlYW1fbWV0
aG9kKCkgewogCiBzdGF0aWMgQklPKiBCSU9fbmV3X3N0cmVhbShTdHJlYW1JbnRlcmZhY2UqIHN0
cmVhbSkgewogICBCSU8qIHJldCA9IEJJT19uZXcoQklPX3N0cmVhbV9tZXRob2QoKSk7Ci0gIGlm
IChyZXQgPT0gbnVsbHB0cikKKyAgaWYgKHJldCA9PSBudWxscHRyKSB7CiAgICAgcmV0dXJuIG51
bGxwdHI7CisgIH0KICAgQklPX3NldF9kYXRhKHJldCwgc3RyZWFtKTsKICAgcmV0dXJuIHJldDsK
IH0KQEAgLTE5NiwxNCArMTk5LDE2IEBAIHN0YXRpYyBpbnQgc3RyZWFtX25ldyhCSU8qIGIpIHsK
IH0KIAogc3RhdGljIGludCBzdHJlYW1fZnJlZShCSU8qIGIpIHsKLSAgaWYgKGIgPT0gbnVsbHB0
cikKKyAgaWYgKGIgPT0gbnVsbHB0cikgewogICAgIHJldHVybiAwOworICB9CiAgIHJldHVybiAx
OwogfQogCiBzdGF0aWMgaW50IHN0cmVhbV9yZWFkKEJJTyogYiwgY2hhciogb3V0LCBpbnQgb3V0
bCkgewotICBpZiAoIW91dCkKKyAgaWYgKCFvdXQpIHsKICAgICByZXR1cm4gLTE7CisgIH0KICAg
U3RyZWFtSW50ZXJmYWNlKiBzdHJlYW0gPSBzdGF0aWNfY2FzdDxTdHJlYW1JbnRlcmZhY2UqPihC
SU9fZ2V0X2RhdGEoYikpOwogICBCSU9fY2xlYXJfcmV0cnlfZmxhZ3MoYik7CiAgIHNpemVfdCBy
ZWFkOwpAQCAtMjE4LDggKzIyMyw5IEBAIHN0YXRpYyBpbnQgc3RyZWFtX3JlYWQoQklPKiBiLCBj
aGFyKiBvdXQsIGludCBvdXRsKSB7CiB9CiAKIHN0YXRpYyBpbnQgc3RyZWFtX3dyaXRlKEJJTyog
YiwgY29uc3QgY2hhciogaW4sIGludCBpbmwpIHsKLSAgaWYgKCFpbikKKyAgaWYgKCFpbikgewog
ICAgIHJldHVybiAtMTsKKyAgfQogICBTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSA9IHN0YXRpY19j
YXN0PFN0cmVhbUludGVyZmFjZSo+KEJJT19nZXRfZGF0YShiKSk7CiAgIEJJT19jbGVhcl9yZXRy
eV9mbGFncyhiKTsKICAgc2l6ZV90IHdyaXR0ZW47CkBAIC0yOTYsNyArMzAyLDcgQEAgYm9vbCBP
cGVuU1NMU3RyZWFtQWRhcHRlcjo6U2V0UGVlckNlcnRpZmljYXRlRGlnZXN0KAogICAgIHNpemVf
dCBkaWdlc3RfbGVuLAogICAgIFNTTFBlZXJDZXJ0aWZpY2F0ZURpZ2VzdEVycm9yKiBlcnJvcikg
ewogICBSVENfRENIRUNLKCFwZWVyX2NlcnRpZmljYXRlX3ZlcmlmaWVkXyk7Ci0gIFJUQ19EQ0hF
Q0soIWhhc19wZWVyX2NlcnRpZmljYXRlX2RpZ2VzdCgpKTsKKyAgUlRDX0RDSEVDSyghSGFzUGVl
ckNlcnRpZmljYXRlRGlnZXN0KCkpOwogICBzaXplX3QgZXhwZWN0ZWRfbGVuOwogICBpZiAoZXJy
b3IpIHsKICAgICAqZXJyb3IgPSBTU0xQZWVyQ2VydGlmaWNhdGVEaWdlc3RFcnJvcjo6Tk9ORTsK
QEAgLTM2Miw4ICszNjgsOSBAQCBzdGQ6OnN0cmluZyBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6U3Ns
Q2lwaGVyU3VpdGVUb05hbWUoaW50IGNpcGhlcl9zdWl0ZSkgewogfQogCiBib29sIE9wZW5TU0xT
dHJlYW1BZGFwdGVyOjpHZXRTc2xDaXBoZXJTdWl0ZShpbnQqIGNpcGhlcl9zdWl0ZSkgewotICBp
ZiAoc3RhdGVfICE9IFNTTF9DT05ORUNURUQpCisgIGlmIChzdGF0ZV8gIT0gU1NMX0NPTk5FQ1RF
RCkgewogICAgIHJldHVybiBmYWxzZTsKKyAgfQogCiAgIGNvbnN0IFNTTF9DSVBIRVIqIGN1cnJl
bnRfY2lwaGVyID0gU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2xfKTsKICAgaWYgKGN1cnJlbnRf
Y2lwaGVyID09IG51bGxwdHIpIHsKQEAgLTM4MCwxNyArMzg3LDE5IEBAIGludCBPcGVuU1NMU3Ry
ZWFtQWRhcHRlcjo6R2V0U3NsVmVyc2lvbigpIGNvbnN0IHsKIAogICBpbnQgc3NsX3ZlcnNpb24g
PSBTU0xfdmVyc2lvbihzc2xfKTsKICAgaWYgKHNzbF9tb2RlXyA9PSBTU0xfTU9ERV9EVExTKSB7
Ci0gICAgaWYgKHNzbF92ZXJzaW9uID09IERUTFMxX1ZFUlNJT04pCisgICAgaWYgKHNzbF92ZXJz
aW9uID09IERUTFMxX1ZFUlNJT04pIHsKICAgICAgIHJldHVybiBTU0xfUFJPVE9DT0xfRFRMU18x
MDsKLSAgICBlbHNlIGlmIChzc2xfdmVyc2lvbiA9PSBEVExTMV8yX1ZFUlNJT04pCisgICAgfSBl
bHNlIGlmIChzc2xfdmVyc2lvbiA9PSBEVExTMV8yX1ZFUlNJT04pIHsKICAgICAgIHJldHVybiBT
U0xfUFJPVE9DT0xfRFRMU18xMjsKKyAgICB9CiAgIH0gZWxzZSB7Ci0gICAgaWYgKHNzbF92ZXJz
aW9uID09IFRMUzFfVkVSU0lPTikKKyAgICBpZiAoc3NsX3ZlcnNpb24gPT0gVExTMV9WRVJTSU9O
KSB7CiAgICAgICByZXR1cm4gU1NMX1BST1RPQ09MX1RMU18xMDsKLSAgICBlbHNlIGlmIChzc2xf
dmVyc2lvbiA9PSBUTFMxXzFfVkVSU0lPTikKKyAgICB9IGVsc2UgaWYgKHNzbF92ZXJzaW9uID09
IFRMUzFfMV9WRVJTSU9OKSB7CiAgICAgICByZXR1cm4gU1NMX1BST1RPQ09MX1RMU18xMTsKLSAg
ICBlbHNlIGlmIChzc2xfdmVyc2lvbiA9PSBUTFMxXzJfVkVSU0lPTikKKyAgICB9IGVsc2UgaWYg
KHNzbF92ZXJzaW9uID09IFRMUzFfMl9WRVJTSU9OKSB7CiAgICAgICByZXR1cm4gU1NMX1BST1RP
Q09MX1RMU18xMjsKKyAgICB9CiAgIH0KIAogICByZXR1cm4gLTE7CkBAIC00MDMsMTUgKzQxMiwx
MSBAQCBib29sIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpFeHBvcnRLZXlpbmdNYXRlcmlhbChjb25z
dCBzdGQ6OnN0cmluZyYgbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHVzZV9jb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogcmVzdWx0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlc3VsdF9sZW4pIHsKLSAg
aW50IGk7Ci0KLSAgaSA9IFNTTF9leHBvcnRfa2V5aW5nX21hdGVyaWFsKHNzbF8sIHJlc3VsdCwg
cmVzdWx0X2xlbiwgbGFiZWwuY19zdHIoKSwKKyAgaWYgKFNTTF9leHBvcnRfa2V5aW5nX21hdGVy
aWFsKHNzbF8sIHJlc3VsdCwgcmVzdWx0X2xlbiwgbGFiZWwuY19zdHIoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLmxlbmd0aCgpLCBjb25zdF9jYXN0PHVpbnQ4X3Qq
Pihjb250ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfbGVu
LCB1c2VfY29udGV4dCk7Ci0KLSAgaWYgKGkgIT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHRfbGVuLCB1c2VfY29udGV4dCkgIT0gMSkgewogICAgIHJldHVybiBm
YWxzZTsKLQorICB9CiAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MTksOCArNDI0LDkgQEAgYm9v
bCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6U2V0RHRsc1NydHBDcnlwdG9TdWl0ZXMoCiAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8aW50PiYgY2lwaGVycykgewogICBzdGQ6OnN0cmluZyBpbnRlcm5hbF9j
aXBoZXJzOwogCi0gIGlmIChzdGF0ZV8gIT0gU1NMX05PTkUpCisgIGlmIChzdGF0ZV8gIT0gU1NM
X05PTkUpIHsKICAgICByZXR1cm4gZmFsc2U7CisgIH0KIAogICBmb3IgKHN0ZDo6dmVjdG9yPGlu
dD46OmNvbnN0X2l0ZXJhdG9yIGNpcGhlciA9IGNpcGhlcnMuYmVnaW4oKTsKICAgICAgICBjaXBo
ZXIgIT0gY2lwaGVycy5lbmQoKTsgKytjaXBoZXIpIHsKQEAgLTQyOSw4ICs0MzUsOSBAQCBib29s
IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpTZXREdGxzU3J0cENyeXB0b1N1aXRlcygKICAgICAgICAg
ICsrZW50cnkpIHsKICAgICAgIGlmICgqY2lwaGVyID09IGVudHJ5LT5pZCkgewogICAgICAgICBm
b3VuZCA9IHRydWU7Ci0gICAgICAgIGlmICghaW50ZXJuYWxfY2lwaGVycy5lbXB0eSgpKQorICAg
ICAgICBpZiAoIWludGVybmFsX2NpcGhlcnMuZW1wdHkoKSkgewogICAgICAgICAgIGludGVybmFs
X2NpcGhlcnMgKz0gIjoiOworICAgICAgICB9CiAgICAgICAgIGludGVybmFsX2NpcGhlcnMgKz0g
ZW50cnktPmludGVybmFsX25hbWU7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtNDQyLDgg
KzQ0OSw5IEBAIGJvb2wgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OlNldER0bHNTcnRwQ3J5cHRvU3Vp
dGVzKAogICAgIH0KICAgfQogCi0gIGlmIChpbnRlcm5hbF9jaXBoZXJzLmVtcHR5KCkpCisgIGlm
IChpbnRlcm5hbF9jaXBoZXJzLmVtcHR5KCkpIHsKICAgICByZXR1cm4gZmFsc2U7CisgIH0KIAog
ICBzcnRwX2NpcGhlcnNfID0gaW50ZXJuYWxfY2lwaGVyczsKICAgcmV0dXJuIHRydWU7CkBAIC00
NTEsMTQgKzQ1OSwxNiBAQCBib29sIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpTZXREdGxzU3J0cENy
eXB0b1N1aXRlcygKIAogYm9vbCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6R2V0RHRsc1NydHBDcnlw
dG9TdWl0ZShpbnQqIGNyeXB0b19zdWl0ZSkgewogICBSVENfRENIRUNLKHN0YXRlXyA9PSBTU0xf
Q09OTkVDVEVEKTsKLSAgaWYgKHN0YXRlXyAhPSBTU0xfQ09OTkVDVEVEKQorICBpZiAoc3RhdGVf
ICE9IFNTTF9DT05ORUNURUQpIHsKICAgICByZXR1cm4gZmFsc2U7CisgIH0KIAogICBjb25zdCBT
UlRQX1BST1RFQ1RJT05fUFJPRklMRSogc3J0cF9wcm9maWxlID0KICAgICAgIFNTTF9nZXRfc2Vs
ZWN0ZWRfc3J0cF9wcm9maWxlKHNzbF8pOwogCi0gIGlmICghc3J0cF9wcm9maWxlKQorICBpZiAo
IXNydHBfcHJvZmlsZSkgewogICAgIHJldHVybiBmYWxzZTsKKyAgfQogCiAgICpjcnlwdG9fc3Vp
dGUgPSBzcnRwX3Byb2ZpbGUtPmlkOwogICBSVENfRENIRUNLKCFTcnRwQ3J5cHRvU3VpdGVUb05h
bWUoKmNyeXB0b19zdWl0ZSkuZW1wdHkoKSk7CkBAIC00NzAsOCArNDgwLDggQEAgYm9vbCBPcGVu
U1NMU3RyZWFtQWRhcHRlcjo6SXNUbHNDb25uZWN0ZWQoKSB7CiB9CiAKIGludCBPcGVuU1NMU3Ry
ZWFtQWRhcHRlcjo6U3RhcnRTU0woKSB7CisgIC8vIERvbid0IGFsbG93IFN0YXJ0U1NMIHRvIGJl
IGNhbGxlZCB0d2ljZS4KICAgaWYgKHN0YXRlXyAhPSBTU0xfTk9ORSkgewotICAgIC8vIERvbid0
IGFsbG93IFN0YXJ0U1NMIHRvIGJlIGNhbGxlZCB0d2ljZS4KICAgICByZXR1cm4gLTE7CiAgIH0K
IApAQCAtNTI0LDcgKzUzNCw3IEBAIFN0cmVhbVJlc3VsdCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6
V3JpdGUoY29uc3Qgdm9pZCogZGF0YSwKICAgICAgIHJldHVybiBTUl9CTE9DSzsKIAogICAgIGNh
c2UgU1NMX0NPTk5FQ1RFRDoKLSAgICAgIGlmICh3YWl0aW5nX3RvX3ZlcmlmeV9wZWVyX2NlcnRp
ZmljYXRlKCkpIHsKKyAgICAgIGlmIChXYWl0aW5nVG9WZXJpZnlQZWVyQ2VydGlmaWNhdGUoKSkg
ewogICAgICAgICByZXR1cm4gU1JfQkxPQ0s7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTUz
MiwxNSArNTQyLDE3IEBAIFN0cmVhbVJlc3VsdCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6V3JpdGUo
Y29uc3Qgdm9pZCogZGF0YSwKICAgICBjYXNlIFNTTF9FUlJPUjoKICAgICBjYXNlIFNTTF9DTE9T
RUQ6CiAgICAgZGVmYXVsdDoKLSAgICAgIGlmIChlcnJvcikKKyAgICAgIGlmIChlcnJvcikgewog
ICAgICAgICAqZXJyb3IgPSBzc2xfZXJyb3JfY29kZV87CisgICAgICB9CiAgICAgICByZXR1cm4g
U1JfRVJST1I7CiAgIH0KIAogICAvLyBPcGVuU1NMIHdpbGwgcmV0dXJuIGFuIGVycm9yIGlmIHdl
IHRyeSB0byB3cml0ZSB6ZXJvIGJ5dGVzCiAgIGlmIChkYXRhX2xlbiA9PSAwKSB7Ci0gICAgaWYg
KHdyaXR0ZW4pCisgICAgaWYgKHdyaXR0ZW4pIHsKICAgICAgICp3cml0dGVuID0gMDsKKyAgICB9
CiAgICAgcmV0dXJuIFNSX1NVQ0NFU1M7CiAgIH0KIApAQCAtNTY3LDggKzU3OSw5IEBAIFN0cmVh
bVJlc3VsdCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6V3JpdGUoY29uc3Qgdm9pZCogZGF0YSwKICAg
ICBjYXNlIFNTTF9FUlJPUl9aRVJPX1JFVFVSTjoKICAgICBkZWZhdWx0OgogICAgICAgRXJyb3Io
IlNTTF93cml0ZSIsIChzc2xfZXJyb3IgPyBzc2xfZXJyb3IgOiAtMSksIDAsIGZhbHNlKTsKLSAg
ICAgIGlmIChlcnJvcikKKyAgICAgIGlmIChlcnJvcikgewogICAgICAgICAqZXJyb3IgPSBzc2xf
ZXJyb3JfY29kZV87CisgICAgICB9CiAgICAgICByZXR1cm4gU1JfRVJST1I7CiAgIH0KICAgLy8g
bm90IHJlYWNoZWQKQEAgLTU4MywzMSArNTk2LDI5IEBAIFN0cmVhbVJlc3VsdCBPcGVuU1NMU3Ry
ZWFtQWRhcHRlcjo6UmVhZCh2b2lkKiBkYXRhLAogICAgIGNhc2UgU1NMX05PTkU6CiAgICAgICAv
LyBwYXNzLXRocm91Z2ggaW4gY2xlYXIgdGV4dAogICAgICAgcmV0dXJuIFN0cmVhbUFkYXB0ZXJJ
bnRlcmZhY2U6OlJlYWQoZGF0YSwgZGF0YV9sZW4sIHJlYWQsIGVycm9yKTsKLQogICAgIGNhc2Ug
U1NMX1dBSVQ6CiAgICAgY2FzZSBTU0xfQ09OTkVDVElORzoKICAgICAgIHJldHVybiBTUl9CTE9D
SzsKLQogICAgIGNhc2UgU1NMX0NPTk5FQ1RFRDoKLSAgICAgIGlmICh3YWl0aW5nX3RvX3Zlcmlm
eV9wZWVyX2NlcnRpZmljYXRlKCkpIHsKKyAgICAgIGlmIChXYWl0aW5nVG9WZXJpZnlQZWVyQ2Vy
dGlmaWNhdGUoKSkgewogICAgICAgICByZXR1cm4gU1JfQkxPQ0s7CiAgICAgICB9CiAgICAgICBi
cmVhazsKLQogICAgIGNhc2UgU1NMX0NMT1NFRDoKICAgICAgIHJldHVybiBTUl9FT1M7Ci0KICAg
ICBjYXNlIFNTTF9FUlJPUjoKICAgICBkZWZhdWx0OgotICAgICAgaWYgKGVycm9yKQorICAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgICplcnJvciA9IHNzbF9lcnJvcl9jb2RlXzsKKyAgICAgIH0K
ICAgICAgIHJldHVybiBTUl9FUlJPUjsKICAgfQogCiAgIC8vIERvbid0IHRydXN0IE9wZW5TU0wg
d2l0aCB6ZXJvIGJ5dGUgcmVhZHMKICAgaWYgKGRhdGFfbGVuID09IDApIHsKLSAgICBpZiAocmVh
ZCkKKyAgICBpZiAocmVhZCkgewogICAgICAgKnJlYWQgPSAwOworICAgIH0KICAgICByZXR1cm4g
U1JfU1VDQ0VTUzsKICAgfQogCkBAIC02MjAsOCArNjMxLDkgQEAgU3RyZWFtUmVzdWx0IE9wZW5T
U0xTdHJlYW1BZGFwdGVyOjpSZWFkKHZvaWQqIGRhdGEsCiAgICAgICBSVENfTE9HKExTX1ZFUkJP
U0UpIDw8ICIgLS0gc3VjY2VzcyI7CiAgICAgICBSVENfRENIRUNLX0dUKGNvZGUsIDApOwogICAg
ICAgUlRDX0RDSEVDS19MRShjb2RlLCBkYXRhX2xlbik7Ci0gICAgICBpZiAocmVhZCkKKyAgICAg
IGlmIChyZWFkKSB7CiAgICAgICAgICpyZWFkID0gY29kZTsKKyAgICAgIH0KIAogICAgICAgaWYg
KHNzbF9tb2RlXyA9PSBTU0xfTU9ERV9EVExTKSB7CiAgICAgICAgIC8vIEVuZm9yY2UgYXRvbWlj
IHJlYWRzIC0tIHRoaXMgaXMgYSBzaG9ydCByZWFkCkBAIC02MzAsOCArNjQyLDkgQEAgU3RyZWFt
UmVzdWx0IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpSZWFkKHZvaWQqIGRhdGEsCiAgICAgICAgIGlm
IChwZW5kaW5nKSB7CiAgICAgICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiIC0tIHNob3J0IERU
TFMgcmVhZC4gZmx1c2hpbmciOwogICAgICAgICAgIEZsdXNoSW5wdXQocGVuZGluZyk7Ci0gICAg
ICAgICAgaWYgKGVycm9yKQorICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgKmVy
cm9yID0gU1NFX01TR19UUlVOQzsKKyAgICAgICAgICB9CiAgICAgICAgICAgcmV0dXJuIFNSX0VS
Uk9SOwogICAgICAgICB9CiAgICAgICB9CkBAIC02NTAsOCArNjYzLDkgQEAgU3RyZWFtUmVzdWx0
IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpSZWFkKHZvaWQqIGRhdGEsCiAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgRXJyb3IoIlNTTF9yZWFkIiwgKHNzbF9lcnJvciA/IHNzbF9lcnJv
ciA6IC0xKSwgMCwgZmFsc2UpOwotICAgICAgaWYgKGVycm9yKQorICAgICAgaWYgKGVycm9yKSB7
CiAgICAgICAgICplcnJvciA9IHNzbF9lcnJvcl9jb2RlXzsKKyAgICAgIH0KICAgICAgIHJldHVy
biBTUl9FUlJPUjsKICAgfQogICAvLyBub3QgcmVhY2hlZApAQCAtNjk0LDEzICs3MDgsMTMgQEAg
U3RyZWFtU3RhdGUgT3BlblNTTFN0cmVhbUFkYXB0ZXI6OkdldFN0YXRlKCkgY29uc3QgewogICAg
IGNhc2UgU1NMX0NPTk5FQ1RJTkc6CiAgICAgICByZXR1cm4gU1NfT1BFTklORzsKICAgICBjYXNl
IFNTTF9DT05ORUNURUQ6Ci0gICAgICBpZiAod2FpdGluZ190b192ZXJpZnlfcGVlcl9jZXJ0aWZp
Y2F0ZSgpKSB7CisgICAgICBpZiAoV2FpdGluZ1RvVmVyaWZ5UGVlckNlcnRpZmljYXRlKCkpIHsK
ICAgICAgICAgcmV0dXJuIFNTX09QRU5JTkc7CiAgICAgICB9CiAgICAgICByZXR1cm4gU1NfT1BF
TjsKICAgICBkZWZhdWx0OgogICAgICAgcmV0dXJuIFNTX0NMT1NFRDsKLSAgfTsKKyAgfQogICAv
LyBub3QgcmVhY2hlZAogfQogCkBAIC03MTAsNiArNzI0LDcgQEAgdm9pZCBPcGVuU1NMU3RyZWFt
QWRhcHRlcjo6T25FdmVudChTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSwKICAgaW50IGV2ZW50c190
b19zaWduYWwgPSAwOwogICBpbnQgc2lnbmFsX2Vycm9yID0gMDsKICAgUlRDX0RDSEVDSyhzdHJl
YW0gPT0gdGhpcy0+c3RyZWFtKCkpOworCiAgIGlmICgoZXZlbnRzICYgU0VfT1BFTikpIHsKICAg
ICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8ICJPcGVuU1NMU3RyZWFtQWRhcHRlcjo6T25FdmVudCBT
RV9PUEVOIjsKICAgICBpZiAoc3RhdGVfICE9IFNTTF9XQUlUKSB7CkBAIC03MjMsNiArNzM4LDcg
QEAgdm9pZCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6T25FdmVudChTdHJlYW1JbnRlcmZhY2UqIHN0
cmVhbSwKICAgICAgIH0KICAgICB9CiAgIH0KKwogICBpZiAoKGV2ZW50cyAmIChTRV9SRUFEIHwg
U0VfV1JJVEUpKSkgewogICAgIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIk9wZW5TU0xTdHJlYW1B
ZGFwdGVyOjpPbkV2ZW50IgogICAgICAgICAgICAgICAgICAgICAgICAgPDwgKChldmVudHMgJiBT
RV9SRUFEKSA/ICIgU0VfUkVBRCIgOiAiIikKQEAgLTc0Nyw2ICs3NjMsNyBAQCB2b2lkIE9wZW5T
U0xTdHJlYW1BZGFwdGVyOjpPbkV2ZW50KFN0cmVhbUludGVyZmFjZSogc3RyZWFtLAogICAgICAg
fQogICAgIH0KICAgfQorCiAgIGlmICgoZXZlbnRzICYgU0VfQ0xPU0UpKSB7CiAgICAgUlRDX0xP
RyhMU19WRVJCT1NFKSA8PCAiT3BlblNTTFN0cmVhbUFkYXB0ZXI6Ok9uRXZlbnQoU0VfQ0xPU0Us
ICIgPDwgZXJyCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiKSI7CkBAIC03NTYsOCArNzcz
LDEwIEBAIHZvaWQgT3BlblNTTFN0cmVhbUFkYXB0ZXI6Ok9uRXZlbnQoU3RyZWFtSW50ZXJmYWNl
KiBzdHJlYW0sCiAgICAgUlRDX0RDSEVDSyhzaWduYWxfZXJyb3IgPT0gMCk7CiAgICAgc2lnbmFs
X2Vycm9yID0gZXJyOwogICB9Ci0gIGlmIChldmVudHNfdG9fc2lnbmFsKQorCisgIGlmIChldmVu
dHNfdG9fc2lnbmFsKSB7CiAgICAgU3RyZWFtQWRhcHRlckludGVyZmFjZTo6T25FdmVudChzdHJl
YW0sIGV2ZW50c190b19zaWduYWwsIHNpZ25hbF9lcnJvcik7CisgIH0KIH0KIAogaW50IE9wZW5T
U0xTdHJlYW1BZGFwdGVyOjpCZWdpblNTTCgpIHsKQEAgLTc3MCwxMiArNzg5LDE0IEBAIGludCBP
cGVuU1NMU3RyZWFtQWRhcHRlcjo6QmVnaW5TU0woKSB7CiAgIC8vIEZpcnN0IHNldCB1cCB0aGUg
Y29udGV4dC4KICAgUlRDX0RDSEVDSyhzc2xfY3R4XyA9PSBudWxscHRyKTsKICAgc3NsX2N0eF8g
PSBTZXR1cFNTTENvbnRleHQoKTsKLSAgaWYgKCFzc2xfY3R4XykKKyAgaWYgKCFzc2xfY3R4Xykg
ewogICAgIHJldHVybiAtMTsKKyAgfQogCiAgIGJpbyA9IEJJT19uZXdfc3RyZWFtKHN0YXRpY19j
YXN0PFN0cmVhbUludGVyZmFjZSo+KHN0cmVhbSgpKSk7Ci0gIGlmICghYmlvKQorICBpZiAoIWJp
bykgewogICAgIHJldHVybiAtMTsKKyAgfQogCiAgIHNzbF8gPSBTU0xfbmV3KHNzbF9jdHhfKTsK
ICAgaWYgKCFzc2xfKSB7CkBAIC04MDUsOCArODI2LDkgQEAgaW50IE9wZW5TU0xTdHJlYW1BZGFw
dGVyOjpCZWdpblNTTCgpIHsKICAgLy8gY29tbW9ubHkgc3VwcG9ydGVkLiBCb3JpbmdTU0wgZG9l
c24ndCBuZWVkIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24gYW5kIGhhcwogICAvLyBhIHJlYXNvbmFi
bGUgZGVmYXVsdCBzZXQuCiAgIEVDX0tFWSogZWNkaCA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFt
ZShOSURfWDlfNjJfcHJpbWUyNTZ2MSk7Ci0gIGlmIChlY2RoID09IG51bGxwdHIpCisgIGlmIChl
Y2RoID09IG51bGxwdHIpIHsKICAgICByZXR1cm4gLTE7CisgIH0KICAgU1NMX3NldF9vcHRpb25z
KHNzbF8sIFNTTF9PUF9TSU5HTEVfRUNESF9VU0UpOwogICBTU0xfc2V0X3RtcF9lY2RoKHNzbF8s
IGVjZGgpOwogICBFQ19LRVlfZnJlZShlY2RoKTsKQEAgLTgzMCwxMCArODUyLDEwIEBAIGludCBP
cGVuU1NMU3RyZWFtQWRhcHRlcjo6Q29udGludWVTU0woKSB7CiAgICAgICBSVENfTE9HKExTX1ZF
UkJPU0UpIDw8ICIgLS0gc3VjY2VzcyI7CiAgICAgICAvLyBCeSB0aGlzIHBvaW50LCBPcGVuU1NM
IHNob3VsZCBoYXZlIGdpdmVuIHVzIGEgY2VydGlmaWNhdGUsIG9yIGVycm9yZWQKICAgICAgIC8v
IG91dCBpZiBvbmUgd2FzIG1pc3NpbmcuCi0gICAgICBSVENfRENIRUNLKHBlZXJfY2VydF9jaGFp
bl8gfHwgIWNsaWVudF9hdXRoX2VuYWJsZWQoKSk7CisgICAgICBSVENfRENIRUNLKHBlZXJfY2Vy
dF9jaGFpbl8gfHwgIUdldENsaWVudEF1dGhFbmFibGVkKCkpOwogCiAgICAgICBzdGF0ZV8gPSBT
U0xfQ09OTkVDVEVEOwotICAgICAgaWYgKCF3YWl0aW5nX3RvX3ZlcmlmeV9wZWVyX2NlcnRpZmlj
YXRlKCkpIHsKKyAgICAgIGlmICghV2FpdGluZ1RvVmVyaWZ5UGVlckNlcnRpZmljYXRlKCkpIHsK
ICAgICAgICAgLy8gV2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gc3RhcnQgdGhlIGNvbm5l
Y3Rpb24sIHNvIHNpZ25hbAogICAgICAgICAvLyBTRV9PUEVOLiBJZiB3ZSBuZWVkIGEgY2xpZW50
IGNlcnRpZmljYXRlIGZpbmdlcnByaW50IGFuZCBkb24ndCBoYXZlCiAgICAgICAgIC8vIGl0IHll
dCwgd2UnbGwgaW5zdGVhZCBzaWduYWwgU0VfT1BFTiBpbiBTZXRQZWVyQ2VydGlmaWNhdGVEaWdl
c3QuCkBAIC04ODYsOCArOTA4LDkgQEAgdm9pZCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6RXJyb3Io
Y29uc3QgY2hhciogY29udGV4dCwKICAgc3RhdGVfID0gU1NMX0VSUk9SOwogICBzc2xfZXJyb3Jf
Y29kZV8gPSBlcnI7CiAgIENsZWFudXAoYWxlcnQpOwotICBpZiAoc2lnbmFsKQorICBpZiAoc2ln
bmFsKSB7CiAgICAgU3RyZWFtQWRhcHRlckludGVyZmFjZTo6T25FdmVudChzdHJlYW0oKSwgU0Vf
Q0xPU0UsIGVycik7CisgIH0KIH0KIAogdm9pZCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6Q2xlYW51
cCh1aW50OF90IGFsZXJ0KSB7CkBAIC05OTAsOCArMTAxMyw5IEBAIFNTTF9DVFgqIE9wZW5TU0xT
dHJlYW1BZGFwdGVyOjpTZXR1cFNTTENvbnRleHQoKSB7CiAgIGN0eCA9IFNTTF9DVFhfbmV3KG1l
dGhvZCk7CiAjZW5kaWYgIC8vIE9QRU5TU0xfSVNfQk9SSU5HU1NMCiAKLSAgaWYgKGN0eCA9PSBu
dWxscHRyKQorICBpZiAoY3R4ID09IG51bGxwdHIpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
fQogCiAjaWZkZWYgT1BFTlNTTF9JU19CT1JJTkdTU0wKICAgU1NMX0NUWF9zZXRfbWluX3Byb3Rv
X3ZlcnNpb24oCkBAIC0xMDI2LDcgKzEwNTAsNyBAQCBTU0xfQ1RYKiBPcGVuU1NMU3RyZWFtQWRh
cHRlcjo6U2V0dXBTU0xDb250ZXh0KCkgewogI2VuZGlmCiAKICAgaW50IG1vZGUgPSBTU0xfVkVS
SUZZX1BFRVI7Ci0gIGlmIChjbGllbnRfYXV0aF9lbmFibGVkKCkpIHsKKyAgaWYgKEdldENsaWVu
dEF1dGhFbmFibGVkKCkpIHsKICAgICAvLyBSZXF1aXJlIGEgY2VydGlmaWNhdGUgZnJvbSB0aGUg
Y2xpZW50LgogICAgIC8vIE5vdGU6IE5vcm1hbGx5IHRoaXMgaXMgYWx3YXlzIHRydWUgaW4gcHJv
ZHVjdGlvbiwgYnV0IGl0IG1heSBiZSBkaXNhYmxlZAogICAgIC8vIGZvciB0ZXN0aW5nIHB1cnBv
c2VzIChlLmcuIFNTTEFkYXB0ZXIgdW5pdCB0ZXN0cykuCkBAIC0xMDU4LDcgKzEwODIsNyBAQCBT
U0xfQ1RYKiBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6U2V0dXBTU0xDb250ZXh0KCkgewogfQogCiBi
b29sIE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpWZXJpZnlQZWVyQ2VydGlmaWNhdGUoKSB7Ci0gIGlm
ICghaGFzX3BlZXJfY2VydGlmaWNhdGVfZGlnZXN0KCkgfHwgIXBlZXJfY2VydF9jaGFpbl8gfHwK
KyAgaWYgKCFIYXNQZWVyQ2VydGlmaWNhdGVEaWdlc3QoKSB8fCAhcGVlcl9jZXJ0X2NoYWluXyB8
fAogICAgICAgIXBlZXJfY2VydF9jaGFpbl8tPkdldFNpemUoKSkgewogICAgIFJUQ19MT0coTFNf
V0FSTklORykgPDwgIk1pc3NpbmcgZGlnZXN0IG9yIHBlZXIgY2VydGlmaWNhdGUuIjsKICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMDkxLDcgKzExMTUsNyBAQCBib29sIE9wZW5TU0xTdHJlYW1BZGFw
dGVyOjpWZXJpZnlQZWVyQ2VydGlmaWNhdGUoKSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0
Q2hhaW4+IE9wZW5TU0xTdHJlYW1BZGFwdGVyOjpHZXRQZWVyU1NMQ2VydENoYWluKCkKICAgICBj
b25zdCB7Ci0gIHJldHVybiBwZWVyX2NlcnRfY2hhaW5fID8gcGVlcl9jZXJ0X2NoYWluXy0+VW5p
cXVlQ29weSgpIDogbnVsbHB0cjsKKyAgcmV0dXJuIHBlZXJfY2VydF9jaGFpbl8gPyBwZWVyX2Nl
cnRfY2hhaW5fLT5DbG9uZSgpIDogbnVsbHB0cjsKIH0KIAogaW50IE9wZW5TU0xTdHJlYW1BZGFw
dGVyOjpTU0xWZXJpZnlDYWxsYmFjayhYNTA5X1NUT1JFX0NUWCogc3RvcmUsIHZvaWQqIGFyZykg
ewpAQCAtMTE3NiwxNSArMTIwMCwxNyBAQCBzdGF0aWMgY29uc3QgY2lwaGVyX2xpc3QgT0tfRUNE
U0FfY2lwaGVyc1tdID0gewogYm9vbCBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6SXNBY2NlcHRhYmxl
Q2lwaGVyKGludCBjaXBoZXIsIEtleVR5cGUga2V5X3R5cGUpIHsKICAgaWYgKGtleV90eXBlID09
IEtUX1JTQSkgewogICAgIGZvciAoY29uc3QgY2lwaGVyX2xpc3QmIGMgOiBPS19SU0FfY2lwaGVy
cykgewotICAgICAgaWYgKGNpcGhlciA9PSBjLmNpcGhlcikKKyAgICAgIGlmIChjaXBoZXIgPT0g
Yy5jaXBoZXIpIHsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CiAgICAgfQogICB9CiAK
ICAgaWYgKGtleV90eXBlID09IEtUX0VDRFNBKSB7CiAgICAgZm9yIChjb25zdCBjaXBoZXJfbGlz
dCYgYyA6IE9LX0VDRFNBX2NpcGhlcnMpIHsKLSAgICAgIGlmIChjaXBoZXIgPT0gYy5jaXBoZXIp
CisgICAgICBpZiAoY2lwaGVyID09IGMuY2lwaGVyKSB7CiAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgfQogICAgIH0KICAgfQogCkBAIC0xMTk1LDIyICsxMjIxLDI0IEBAIGJvb2wgT3BlblNT
TFN0cmVhbUFkYXB0ZXI6OklzQWNjZXB0YWJsZUNpcGhlcihjb25zdCBzdGQ6OnN0cmluZyYgY2lw
aGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleVR5
cGUga2V5X3R5cGUpIHsKICAgaWYgKGtleV90eXBlID09IEtUX1JTQSkgewogICAgIGZvciAoY29u
c3QgY2lwaGVyX2xpc3QmIGMgOiBPS19SU0FfY2lwaGVycykgewotICAgICAgaWYgKGNpcGhlciA9
PSBjLmNpcGhlcl9zdHIpCisgICAgICBpZiAoY2lwaGVyID09IGMuY2lwaGVyX3N0cikgewogICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KICAgICB9CiAgIH0KIAogICBpZiAoa2V5X3R5cGUg
PT0gS1RfRUNEU0EpIHsKICAgICBmb3IgKGNvbnN0IGNpcGhlcl9saXN0JiBjIDogT0tfRUNEU0Ff
Y2lwaGVycykgewotICAgICAgaWYgKGNpcGhlciA9PSBjLmNpcGhlcl9zdHIpCisgICAgICBpZiAo
Y2lwaGVyID09IGMuY2lwaGVyX3N0cikgewogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0K
ICAgICB9CiAgIH0KIAogICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgT3BlblNTTFN0cmVhbUFk
YXB0ZXI6OmVuYWJsZV90aW1lX2NhbGxiYWNrX2Zvcl90ZXN0aW5nKCkgewordm9pZCBPcGVuU1NM
U3RyZWFtQWRhcHRlcjo6RW5hYmxlVGltZUNhbGxiYWNrRm9yVGVzdGluZygpIHsKICAgZ191c2Vf
dGltZV9jYWxsYmFja19mb3JfdGVzdGluZyA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xzdHJl
YW1hZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9vcGVuc3Nsc3RyZWFtYWRhcHRlci5oCmluZGV4IDYxZmZjM2RiZmUyZDY1MzhiZDMw
MzFmYzk3MGU3NTJjZWE0ZjQzZmYuLmUwMTJkMTcyYTYyYTBiNDU5NWM5MDVjYzYxMjgxYzQ5ODk3
NTZlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL29wZW5zc2xzdHJlYW1hZGFwdGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHN0cmVhbWFkYXB0ZXIu
aApAQCAtMTMsMTMgKzEzLDE4IEBACiAKICNpbmNsdWRlIDxvcGVuc3NsL29zc2xfdHlwLmg+CiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0
Y19iYXNlL2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL29wZW5zc2xpZGVudGl0eS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Nz
bGlkZW50aXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3N0cmVhbS5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApAQCAtNDcsMTEg
KzUyLDExIEBAIG5hbWVzcGFjZSBydGMgewogCiAvLyBMb29rIGluIHNzbHN0cmVhbWFkYXB0ZXIu
aCBmb3IgZG9jdW1lbnRhdGlvbiBvZiB0aGUgbWV0aG9kcy4KIAotY2xhc3MgT3BlblNTTElkZW50
aXR5OworY2xhc3MgU1NMQ2VydENoYWluOwogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLWNs
YXNzIE9wZW5TU0xTdHJlYW1BZGFwdGVyIDogcHVibGljIFNTTFN0cmVhbUFkYXB0ZXIgeworY2xh
c3MgT3BlblNTTFN0cmVhbUFkYXB0ZXIgZmluYWwgOiBwdWJsaWMgU1NMU3RyZWFtQWRhcHRlciB7
CiAgcHVibGljOgogICBleHBsaWNpdCBPcGVuU1NMU3RyZWFtQWRhcHRlcihTdHJlYW1JbnRlcmZh
Y2UqIHN0cmVhbSk7CiAgIH5PcGVuU1NMU3RyZWFtQWRhcHRlcigpIG92ZXJyaWRlOwpAQCAtMTE1
LDcgKzEyMCw3IEBAIGNsYXNzIE9wZW5TU0xTdHJlYW1BZGFwdGVyIDogcHVibGljIFNTTFN0cmVh
bUFkYXB0ZXIgewogCiAgIC8vIFVzZSBvdXIgdGltZXV0aWxzLmggc291cmNlIG9mIHRpbWluZyBp
biBCb3JpbmdTU0wsIGFsbG93aW5nIHVzIHRvIHRlc3QKICAgLy8gdXNpbmcgYSBmYWtlIGNsb2Nr
LgotICBzdGF0aWMgdm9pZCBlbmFibGVfdGltZV9jYWxsYmFja19mb3JfdGVzdGluZygpOworICBz
dGF0aWMgdm9pZCBFbmFibGVUaW1lQ2FsbGJhY2tGb3JUZXN0aW5nKCk7CiAKICBwcm90ZWN0ZWQ6
CiAgIHZvaWQgT25FdmVudChTdHJlYW1JbnRlcmZhY2UqIHN0cmVhbSwgaW50IGV2ZW50cywgaW50
IGVycikgb3ZlcnJpZGU7CkBAIC0xNzAsMTEgKzE3NSwxMSBAQCBjbGFzcyBPcGVuU1NMU3RyZWFt
QWRhcHRlciA6IHB1YmxpYyBTU0xTdHJlYW1BZGFwdGVyIHsKICAgLy8gU1NMX0NUWF9zZXRfY2Vy
dF92ZXJpZnlfY2FsbGJhY2suCiAgIHN0YXRpYyBpbnQgU1NMVmVyaWZ5Q2FsbGJhY2soWDUwOV9T
VE9SRV9DVFgqIHN0b3JlLCB2b2lkKiBhcmcpOwogCi0gIGJvb2wgd2FpdGluZ190b192ZXJpZnlf
cGVlcl9jZXJ0aWZpY2F0ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gY2xpZW50X2F1dGhfZW5hYmxl
ZCgpICYmICFwZWVyX2NlcnRpZmljYXRlX3ZlcmlmaWVkXzsKKyAgYm9vbCBXYWl0aW5nVG9WZXJp
ZnlQZWVyQ2VydGlmaWNhdGUoKSBjb25zdCB7CisgICAgcmV0dXJuIEdldENsaWVudEF1dGhFbmFi
bGVkKCkgJiYgIXBlZXJfY2VydGlmaWNhdGVfdmVyaWZpZWRfOwogICB9CiAKLSAgYm9vbCBoYXNf
cGVlcl9jZXJ0aWZpY2F0ZV9kaWdlc3QoKSBjb25zdCB7CisgIGJvb2wgSGFzUGVlckNlcnRpZmlj
YXRlRGlnZXN0KCkgY29uc3QgewogICAgIHJldHVybiAhcGVlcl9jZXJ0aWZpY2F0ZV9kaWdlc3Rf
YWxnb3JpdGhtXy5lbXB0eSgpICYmCiAgICAgICAgICAgICFwZWVyX2NlcnRpZmljYXRlX2RpZ2Vz
dF92YWx1ZV8uZW1wdHkoKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsdXRpbGl0
eS5jYwppbmRleCA0NmY0NTQ3NDM2ZTExNThhN2I4MDMwODA0M2Y4ZjY3N2QyNWUxOWU4Li5hM2Yz
MzQ3OGViYzdiMDUxMDBiNzNjYjMwNDI4MWEwMjQ2YjkyNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsdXRpbGl0
eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9vcGVuc3NsdXRpbGl0eS5jYwpAQCAtOSwyOSArOSwyMSBAQAogICovCiAKICNpbmNsdWRl
ICJydGNfYmFzZS9vcGVuc3NsdXRpbGl0eS5oIgotCi0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaWYg
ZGVmaW5lZChXRUJSVENfUE9TSVgpCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQogI2lm
IGRlZmluZWQoV0VCUlRDX1dJTikKIC8vIE11c3QgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIG9w
ZW5zc2wgaGVhZGVycy4KICNpbmNsdWRlICJydGNfYmFzZS93aW4zMi5oIiAgLy8gTk9MSU5UCiAj
ZW5kaWYgICAgICAgICAgICAgICAgICAgICAgIC8vIFdFQlJUQ19XSU4KIAotI2luY2x1ZGUgPG9w
ZW5zc2wvYmlvLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KICNpbmNsdWRlIDxvcGVu
c3NsL2Vyci5oPgogI2luY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgogI2luY2x1ZGUgPG9wZW5zc2wv
eDUwOXYzLmg+CisjaW5jbHVkZSAicnRjX2Jhc2Uvb3BlbnNzbC5oIgorCisjaW5jbHVkZSA8c3Rk
ZGVmLmg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L29wZW5zc2wuaCIKICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKICNp
Zm5kZWYgV0VCUlRDX0VYQ0xVREVfQlVJTFRfSU5fU1NMX1JPT1RfQ0VSVFMKICNpbmNsdWRlICJy
dGNfYmFzZS9zc2xyb290cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2x1dGlsaXR5LmgK
aW5kZXggN2NiMzhiNWI1Mjc2M2E1MWRkYjQwMjU4OTM2YTY1NmJkNjcyMWY5YS4uNzdlZDBiMWU3
Y2NhMWNiNzk2OGE2ODFhY2JmMDY1YTlmYTNjMzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbHV0aWxpdHkuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9v
cGVuc3NsdXRpbGl0eS5oCkBAIC0xMyw3ICsxMyw2IEBACiAKICNpbmNsdWRlIDxvcGVuc3NsL29z
c2xfdHlwLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRp
ZmljYXRlLmgiCiAKIG5hbWVzcGFjZSBydGMgewogLy8gVGhlIG9wZW5zc2wgbmFtZXNwYWNlIGhv
bGRzIHN0YXRpYyBoZWxwZXIgbWV0aG9kcy4gQWxsIG1ldGhvZHMgcmVsYXRlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3B0
aW9uc2ZpbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9vcHRpb25zZmlsZS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM1
ODU5YjRjYzA3NTM2NGI0YmM2MmQxZjg1ZWMzM2RlNTFjMGMxNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcHRpb25zZmlsZS5jYworKysgL2Rldi9udWxsCkBAIC0x
LDE4MSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAyMDA4IFRoZSBXZWJSVEMgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW5jbHVkZSAicnRjX2Jhc2Uvb3B0
aW9uc2ZpbGUuaCIKLQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9s
b2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyZWFtLmgiCi0jaW5jbHVkZSAicnRjX2Jh
c2Uvc3RyaW5nZW5jb2RlLmgiCi0KLW5hbWVzcGFjZSBydGMgewotCi1PcHRpb25zRmlsZTo6T3B0
aW9uc0ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpIDogcGF0aF8ocGF0aCkge30KLQotT3B0
aW9uc0ZpbGU6On5PcHRpb25zRmlsZSgpID0gZGVmYXVsdDsKLQotYm9vbCBPcHRpb25zRmlsZTo6
TG9hZCgpIHsKLSAgb3B0aW9uc18uY2xlYXIoKTsKLSAgLy8gT3BlbiBmaWxlLgotICBGaWxlU3Ry
ZWFtIHN0cmVhbTsKLSAgaW50IGVycjsKLSAgaWYgKCFzdHJlYW0uT3BlbihwYXRoXywgInIiLCAm
ZXJyKSkgewotICAgIFJUQ19MT0dfRihMU19XQVJOSU5HKSA8PCAiQ291bGQgbm90IG9wZW4gZmls
ZSwgZXJyPSIgPDwgZXJyOwotICAgIC8vIFdlIGRvIG5vdCBjb25zaWRlciB0aGlzIGFuIGVycm9y
IGJlY2F1c2Ugd2UgZXhwZWN0IHRoZXJlIHRvIGJlIG5vIGZpbGUKLSAgICAvLyB1bnRpbCB0aGUg
dXNlciBzYXZlcyBhIHNldHRpbmcuCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgLy8gUmVhZCBp
biBhbGwgaXRzIGRhdGEuCi0gIHN0ZDo6c3RyaW5nIGxpbmU7Ci0gIFN0cmVhbVJlc3VsdCByZXM7
Ci0gIGZvciAoOzspIHsKLSAgICByZXMgPSBzdHJlYW0uUmVhZExpbmUoJmxpbmUpOwotICAgIGlm
IChyZXMgIT0gU1JfU1VDQ0VTUykgewotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHNpemVfdCBl
cXVhbHNfcG9zID0gbGluZS5maW5kKCc9Jyk7Ci0gICAgaWYgKGVxdWFsc19wb3MgPT0gc3RkOjpz
dHJpbmc6Om5wb3MpIHsKLSAgICAgIC8vIFdlIGRvIG5vdCBjb25zaWRlciB0aGlzIGFuIGVycm9y
LiBJbnN0ZWFkIHdlIGlnbm9yZSB0aGUgbGluZSBhbmQKLSAgICAgIC8vIGtlZXAgZ29pbmcuCi0g
ICAgICBSVENfTE9HX0YoTFNfV0FSTklORykgPDwgIklnbm9yaW5nIG1hbGZvcm1lZCBsaW5lIGlu
ICIgPDwgcGF0aF87Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0gICAgc3RkOjpzdHJpbmcga2V5
KGxpbmUsIDAsIGVxdWFsc19wb3MpOwotICAgIHN0ZDo6c3RyaW5nIHZhbHVlKGxpbmUsIGVxdWFs
c19wb3MgKyAxLCBsaW5lLmxlbmd0aCgpIC0gKGVxdWFsc19wb3MgKyAxKSk7Ci0gICAgb3B0aW9u
c19ba2V5XSA9IHZhbHVlOwotICB9Ci0gIGlmIChyZXMgIT0gU1JfRU9TKSB7Ci0gICAgUlRDX0xP
R19GKExTX0VSUk9SKSA8PCAiRXJyb3Igd2hlbiByZWFkaW5nIGZyb20gZmlsZSI7Ci0gICAgcmV0
dXJuIGZhbHNlOwotICB9IGVsc2UgewotICAgIHJldHVybiB0cnVlOwotICB9Ci19Ci0KLWJvb2wg
T3B0aW9uc0ZpbGU6OlNhdmUoKSB7Ci0gIC8vIE9wZW4gZmlsZS4KLSAgRmlsZVN0cmVhbSBzdHJl
YW07Ci0gIGludCBlcnI7Ci0gIGlmICghc3RyZWFtLk9wZW4ocGF0aF8sICJ3IiwgJmVycikpIHsK
LSAgICBSVENfTE9HX0YoTFNfRVJST1IpIDw8ICJDb3VsZCBub3Qgb3BlbiBmaWxlLCBlcnI9IiA8
PCBlcnI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIC8vIFdyaXRlIG91dCBhbGwgdGhlIGRh
dGEuCi0gIFN0cmVhbVJlc3VsdCByZXMgPSBTUl9TVUNDRVNTOwotICBzaXplX3Qgd3JpdHRlbjsK
LSAgaW50IGVycm9yOwotICBmb3IgKE9wdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBvcHRp
b25zXy5iZWdpbigpOyBpICE9IG9wdGlvbnNfLmVuZCgpOwotICAgICAgICsraSkgewotICAgIHJl
cyA9Ci0gICAgICAgIHN0cmVhbS5Xcml0ZUFsbChpLT5maXJzdC5jX3N0cigpLCBpLT5maXJzdC5s
ZW5ndGgoKSwgJndyaXR0ZW4sICZlcnJvcik7Ci0gICAgaWYgKHJlcyAhPSBTUl9TVUNDRVNTKSB7
Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgcmVzID0gc3RyZWFtLldyaXRlQWxsKCI9IiwgMSwg
JndyaXR0ZW4sICZlcnJvcik7Ci0gICAgaWYgKHJlcyAhPSBTUl9TVUNDRVNTKSB7Ci0gICAgICBi
cmVhazsKLSAgICB9Ci0gICAgcmVzID0gc3RyZWFtLldyaXRlQWxsKGktPnNlY29uZC5jX3N0cigp
LCBpLT5zZWNvbmQubGVuZ3RoKCksICZ3cml0dGVuLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAmZXJyb3IpOwotICAgIGlmIChyZXMgIT0gU1JfU1VDQ0VTUykgewotICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJlcyA9IHN0cmVhbS5Xcml0ZUFsbCgiXG4iLCAxLCAmd3JpdHRlbiwgJmVycm9y
KTsKLSAgICBpZiAocmVzICE9IFNSX1NVQ0NFU1MpIHsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAg
fQotICBpZiAocmVzICE9IFNSX1NVQ0NFU1MpIHsKLSAgICBSVENfTE9HX0YoTFNfRVJST1IpIDw8
ICJVbmFibGUgdG8gd3JpdGUgdG8gZmlsZSI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9IGVsc2Ug
ewotICAgIHJldHVybiB0cnVlOwotICB9Ci19Ci0KLWJvb2wgT3B0aW9uc0ZpbGU6OklzTGVnYWxO
YW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7Ci0gIGZvciAoc2l6ZV90IHBvcyA9IDA7IHBv
cyA8IG5hbWUubGVuZ3RoKCk7ICsrcG9zKSB7Ci0gICAgaWYgKG5hbWVbcG9zXSA9PSAnXG4nIHx8
IG5hbWVbcG9zXSA9PSAnXFwnIHx8IG5hbWVbcG9zXSA9PSAnPScpIHsKLSAgICAgIC8vIElsbGVn
YWwgY2hhcmFjdGVyLgotICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiSWdub3Jpbmcgb3Bl
cmF0aW9uIGZvciBpbGxlZ2FsIG9wdGlvbiAiIDw8IG5hbWU7Ci0gICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIE9wdGlvbnNGaWxlOjpJc0xl
Z2FsVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7Ci0gIGZvciAoc2l6ZV90IHBvcyA9
IDA7IHBvcyA8IHZhbHVlLmxlbmd0aCgpOyArK3BvcykgewotICAgIGlmICh2YWx1ZVtwb3NdID09
ICdcbicgfHwgdmFsdWVbcG9zXSA9PSAnXFwnKSB7Ci0gICAgICAvLyBJbGxlZ2FsIGNoYXJhY3Rl
ci4KLSAgICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIklnbm9yaW5nIG9wZXJhdGlvbiBmb3Ig
aWxsZWdhbCB2YWx1ZSAiIDw8IHZhbHVlOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
fQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPcHRpb25zRmlsZTo6R2V0U3RyaW5nVmFsdWUo
Y29uc3Qgc3RkOjpzdHJpbmcmIG9wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nKiBvdXRfdmFsKSBjb25zdCB7Ci0gIFJUQ19MT0coTFNfVkVSQk9TRSkg
PDwgIk9wdGlvbnNGaWxlOjpHZXRTdHJpbmdWYWx1ZSAiIDw8IG9wdGlvbjsKLSAgaWYgKCFJc0xl
Z2FsTmFtZShvcHRpb24pKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIE9wdGlvbnNNYXA6
OmNvbnN0X2l0ZXJhdG9yIGkgPSBvcHRpb25zXy5maW5kKG9wdGlvbik7Ci0gIGlmIChpID09IG9w
dGlvbnNfLmVuZCgpKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gICpvdXRfdmFsID0gaS0+
c2Vjb25kOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPcHRpb25zRmlsZTo6R2V0SW50VmFs
dWUoY29uc3Qgc3RkOjpzdHJpbmcmIG9wdGlvbiwgaW50KiBvdXRfdmFsKSBjb25zdCB7Ci0gIFJU
Q19MT0coTFNfVkVSQk9TRSkgPDwgIk9wdGlvbnNGaWxlOjpHZXRJbnRWYWx1ZSAiIDw8IG9wdGlv
bjsKLSAgaWYgKCFJc0xlZ2FsTmFtZShvcHRpb24pKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9
Ci0gIE9wdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBvcHRpb25zXy5maW5kKG9wdGlvbik7
Ci0gIGlmIChpID09IG9wdGlvbnNfLmVuZCgpKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0g
IHJldHVybiBGcm9tU3RyaW5nKGktPnNlY29uZCwgb3V0X3ZhbCk7Ci19Ci0KLWJvb2wgT3B0aW9u
c0ZpbGU6OlNldFN0cmluZ1ZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKLSAg
UlRDX0xPRyhMU19WRVJCT1NFKSA8PCAiT3B0aW9uc0ZpbGU6OlNldFN0cmluZ1ZhbHVlICIgPDwg
b3B0aW9uIDw8ICI6IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHZhbHVlOwotICBpZiAoIUlz
TGVnYWxOYW1lKG9wdGlvbikgfHwgIUlzTGVnYWxWYWx1ZSh2YWx1ZSkpIHsKLSAgICByZXR1cm4g
ZmFsc2U7Ci0gIH0KLSAgb3B0aW9uc19bb3B0aW9uXSA9IHZhbHVlOwotICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBPcHRpb25zRmlsZTo6U2V0SW50VmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIG9w
dGlvbiwgaW50IHZhbHVlKSB7Ci0gIFJUQ19MT0coTFNfVkVSQk9TRSkgPDwgIk9wdGlvbnNGaWxl
OjpTZXRJbnRWYWx1ZSAiIDw8IG9wdGlvbiA8PCAiOiIgPDwgdmFsdWU7Ci0gIGlmICghSXNMZWdh
bE5hbWUob3B0aW9uKSkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBvcHRpb25zX1tvcHRp
b25dID0gVG9TdHJpbmcodmFsdWUpOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPcHRpb25z
RmlsZTo6UmVtb3ZlVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIG9wdGlvbikgewotICBSVENfTE9H
KExTX1ZFUkJPU0UpIDw8ICJPcHRpb25zRmlsZTo6UmVtb3ZlVmFsdWUgIiA8PCBvcHRpb247Ci0g
IGlmICghSXNMZWdhbE5hbWUob3B0aW9uKSkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBv
cHRpb25zXy5lcmFzZShvcHRpb24pOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAgLy8gbmFtZXNw
YWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvb3B0aW9uc2ZpbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wdGlvbnNmaWxlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDU1NjYwZmYyNTk4YmUzZGVjYjJlNTY5NjJlNTVlODUzYmUxNWUyYjIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3B0aW9uc2ZpbGUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDggVGhlIFdl
YlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYg
UlRDX0JBU0VfT1BUSU9OU0ZJTEVfSF8KLSNkZWZpbmUgUlRDX0JBU0VfT1BUSU9OU0ZJTEVfSF8K
LQotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLW5hbWVzcGFjZSBydGMgewot
Ci0vLyBJbXBsZW1lbnRzIHN0b3JhZ2Ugb2Ygc2ltcGxlIG9wdGlvbnMgaW4gYSB0ZXh0IGZpbGUg
b24gZGlzay4gVGhpcyBpcwotLy8gY3Jvc3MtcGxhdGZvcm0sIGJ1dCBpdCBpcyBpbnRlbmRlZCBt
b3N0bHkgZm9yIExpbnV4IHdoZXJlIHRoZXJlIGlzIG5vCi0vLyBmaXJzdC1jbGFzcyBvcHRpb25z
IHN0b3JhZ2Ugc3lzdGVtLgotY2xhc3MgT3B0aW9uc0ZpbGUgewotIHB1YmxpYzoKLSAgT3B0aW9u
c0ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpOwotICB+T3B0aW9uc0ZpbGUoKTsKLQotICAv
LyBMb2FkcyB0aGUgZmlsZSBmcm9tIGRpc2ssIG92ZXJ3cml0aW5nIHRoZSBpbi1tZW1vcnkgdmFs
dWVzLgotICBib29sIExvYWQoKTsKLSAgLy8gU2F2ZXMgdGhlIGNvbnRlbnRzIGluIG1lbW9yeSwg
b3ZlcndyaXRpbmcgdGhlIG9uLWRpc2sgdmFsdWVzLgotICBib29sIFNhdmUoKTsKLQotICBib29s
IEdldFN0cmluZ1ZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24sIHN0ZDo6c3RyaW5nKiBv
dXRfdmFsKSBjb25zdDsKLSAgYm9vbCBHZXRJbnRWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgb3B0
aW9uLCBpbnQqIG91dF92YWwpIGNvbnN0OwotICBib29sIFNldFN0cmluZ1ZhbHVlKGNvbnN0IHN0
ZDo6c3RyaW5nJiBvcHRpb24sIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWwpOwotICBib29sIFNldElu
dFZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24sIGludCB2YWwpOwotICBib29sIFJlbW92
ZVZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBvcHRpb24pOwotCi0gcHJpdmF0ZToKLSAgdHlwZWRl
ZiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IE9wdGlvbnNNYXA7Ci0KLSAgc3Rh
dGljIGJvb2wgSXNMZWdhbE5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotICBzdGF0aWMg
Ym9vbCBJc0xlZ2FsVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKLQotICBzdGQ6OnN0
cmluZyBwYXRoXzsKLSAgT3B0aW9uc01hcCBvcHRpb25zXzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFj
ZSBydGMKLQotI2VuZGlmICAvLyBSVENfQkFTRV9PUFRJT05TRklMRV9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3B0aW9u
c2ZpbGVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9vcHRpb25zZmlsZV91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmM1YmM4MjNmZjQxNThmNzJkYjJjNTA2ZTI2ZjdiODlkMDFkNDU3YS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcHRpb25zZmlsZV91bml0dGVz
dC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAy
MDA4IFRoZSBXZWJSVEMgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAqLwot
Ci0jaW5jbHVkZSA8bWVtb3J5PgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9vcHRpb25zZmlsZS5o
IgotI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCi0KLW5hbWVzcGFjZSBy
dGMgewotCi1zdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RPcHRpb25BID0gInRlc3Qtb3B0
aW9uLWEiOwotc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0T3B0aW9uQiA9ICJ0ZXN0LW9w
dGlvbi1iIjsKLXN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdFN0cmluZzEgPSAiYSBzdHJp
bmciOwotc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0U3RyaW5nMiA9ICJkaWZmZXJlbnQg
c3RyaW5nIjsKLXN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBrT3B0aW9uV2l0aEVxdWFscyA9ICJm
b289YmFyIjsKLXN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBrT3B0aW9uV2l0aE5ld2xpbmUgPSAi
Zm9vXG5iYXIiOwotc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIGtWYWx1ZVdpdGhFcXVhbHMgPSAi
YmF6PXF1dXgiOwotc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIGtWYWx1ZVdpdGhOZXdsaW5lID0g
ImJhelxucXV1eCI7Ci1zdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcga0VtcHR5U3RyaW5nID0gIiI7
Ci1zdGF0aWMgY29uc3QgY2hhciBrT3B0aW9uV2l0aFV0ZjhbXSA9IHsnTycsICAgICdwJywgJ3Qn
LCAnXDMwMicsICdcMjU2JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdpJywgICAgJ28nLCAnbicsICdcMzQyJywgJ1wyMDQnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ1wyNDInLCAnXDAnfTsgIC8vIE9wdChSKWlvKFRNKS4KLXN0YXRp
YyBjb25zdCBjaGFyIGtWYWx1ZVdpdGhVdGY4W10gPSB7Ci0gICAgJ1YnLCAnYScsICAgICdsJywg
ICAgJ1wzMDInLCAnXDI1NicsICd2JywKLSAgICAnZScsICdcMzQyJywgJ1wyMDQnLCAnXDI0Mics
ICdcMCd9OyAgLy8gVmFsKFIpdWUoVE0pLgotc3RhdGljIGludCBrVGVzdEludDEgPSAxMjM0NTsK
LXN0YXRpYyBpbnQga1Rlc3RJbnQyID0gNjc4OTA7Ci1zdGF0aWMgaW50IGtOZWdJbnQgPSAtNjM0
Owotc3RhdGljIGludCBrWmVybyA9IDA7Ci0KLSNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQot
Ly8gRmFpbHMgb24gQW5kcm9pZDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3dlYnJ0Yy9p
c3N1ZXMvZGV0YWlsP2lkPTQzNjQuCi0jZGVmaW5lIE1BWUJFX09wdGlvbnNGaWxlVGVzdCBESVNB
QkxFRF9PcHRpb25zRmlsZVRlc3QKLSNlbHNlCi0jZGVmaW5lIE1BWUJFX09wdGlvbnNGaWxlVGVz
dCBPcHRpb25zRmlsZVRlc3QKLSNlbmRpZgotCi1jbGFzcyBNQVlCRV9PcHRpb25zRmlsZVRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOgotICBNQVlCRV9PcHRpb25zRmlsZVRl
c3QoKSB7Ci0gICAgdGVzdF9maWxlXyA9Ci0gICAgICAgIHdlYnJ0Yzo6dGVzdDo6VGVtcEZpbGVu
YW1lKHdlYnJ0Yzo6dGVzdDo6T3V0cHV0UGF0aCgpLCAiLnRlc3RmaWxlIik7Ci0gICAgT3BlblN0
b3JlKCk7Ci0gIH0KLQotICB+TUFZQkVfT3B0aW9uc0ZpbGVUZXN0KCkgb3ZlcnJpZGUgeyB3ZWJy
dGM6OnRlc3Q6OlJlbW92ZUZpbGUodGVzdF9maWxlXyk7IH0KLQotIHByb3RlY3RlZDoKLSAgdm9p
ZCBPcGVuU3RvcmUoKSB7IHN0b3JlXy5yZXNldChuZXcgT3B0aW9uc0ZpbGUodGVzdF9maWxlXykp
OyB9Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPE9wdGlvbnNGaWxlPiBzdG9yZV87Ci0KLSBwcml2YXRl
OgotICBzdGQ6OnN0cmluZyB0ZXN0X2ZpbGVfOwotfTsKLQotVEVTVF9GKE1BWUJFX09wdGlvbnNG
aWxlVGVzdCwgR2V0U2V0U3RyaW5nKSB7Ci0gIC8vIENsZWFyIGNvbnRlbnRzIG9mIHRoZSBmaWxl
IG9uIGRpc2suCi0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2F2ZSgpKTsKLSAgc3RkOjpzdHJpbmcg
b3V0MSwgb3V0MjsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RP
cHRpb25BLCAmb3V0MSkpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShr
VGVzdE9wdGlvbkIsICZvdXQyKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0U3RyaW5nVmFs
dWUoa1Rlc3RPcHRpb25BLCBrVGVzdFN0cmluZzEpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5T
YXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0
b3JlXy0+U2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25CLCBrVGVzdFN0cmluZzIpKTsKLSAgRVhQ
RUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7
Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCAmb3V0
MSkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkdldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQiwg
Jm91dDIpKTsKLSAgRVhQRUNUX0VRKGtUZXN0U3RyaW5nMSwgb3V0MSk7Ci0gIEVYUEVDVF9FUShr
VGVzdFN0cmluZzIsIG91dDIpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlJlbW92ZVZhbHVlKGtU
ZXN0T3B0aW9uQSkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9U
UlVFKHN0b3JlXy0+TG9hZCgpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5SZW1vdmVWYWx1ZShr
VGVzdE9wdGlvbkIpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1Rf
VFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShzdG9yZV8tPkdldFN0cmluZ1Zh
bHVlKGtUZXN0T3B0aW9uQSwgJm91dDEpKTsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+R2V0U3Ry
aW5nVmFsdWUoa1Rlc3RPcHRpb25CLCAmb3V0MikpOwotfQotCi1URVNUX0YoTUFZQkVfT3B0aW9u
c0ZpbGVUZXN0LCBHZXRTZXRJbnQpIHsKLSAgLy8gQ2xlYXIgY29udGVudHMgb2YgdGhlIGZpbGUg
b24gZGlzay4KLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBpbnQgb3V0MSwgb3V0
MjsKLSAgRVhQRUNUX0ZBTFNFKHN0b3JlXy0+R2V0SW50VmFsdWUoa1Rlc3RPcHRpb25BLCAmb3V0
MSkpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5HZXRJbnRWYWx1ZShrVGVzdE9wdGlvbkIsICZv
dXQyKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0SW50VmFsdWUoa1Rlc3RPcHRpb25BLCBr
VGVzdEludDEpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJV
RShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0SW50VmFsdWUoa1Rl
c3RPcHRpb25CLCBrVGVzdEludDIpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwot
ICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0
SW50VmFsdWUoa1Rlc3RPcHRpb25BLCAmb3V0MSkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkdl
dEludFZhbHVlKGtUZXN0T3B0aW9uQiwgJm91dDIpKTsKLSAgRVhQRUNUX0VRKGtUZXN0SW50MSwg
b3V0MSk7Ci0gIEVYUEVDVF9FUShrVGVzdEludDIsIG91dDIpOwotICBFWFBFQ1RfVFJVRShzdG9y
ZV8tPlJlbW92ZVZhbHVlKGtUZXN0T3B0aW9uQSkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNh
dmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgpKTsKLSAgRVhQRUNUX1RSVUUoc3Rv
cmVfLT5SZW1vdmVWYWx1ZShrVGVzdE9wdGlvbkIpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5T
YXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShz
dG9yZV8tPkdldEludFZhbHVlKGtUZXN0T3B0aW9uQSwgJm91dDEpKTsKLSAgRVhQRUNUX0ZBTFNF
KHN0b3JlXy0+R2V0SW50VmFsdWUoa1Rlc3RPcHRpb25CLCAmb3V0MikpOwotICBFWFBFQ1RfVFJV
RShzdG9yZV8tPlNldEludFZhbHVlKGtUZXN0T3B0aW9uQSwga05lZ0ludCkpOwotICBFWFBFQ1Rf
VFJVRShzdG9yZV8tPkdldEludFZhbHVlKGtUZXN0T3B0aW9uQSwgJm91dDEpKTsKLSAgRVhQRUNU
X0VRKGtOZWdJbnQsIG91dDEpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNldEludFZhbHVlKGtU
ZXN0T3B0aW9uQSwga1plcm8pKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5HZXRJbnRWYWx1ZShr
VGVzdE9wdGlvbkEsICZvdXQxKSk7Ci0gIEVYUEVDVF9FUShrWmVybywgb3V0MSk7Ci19Ci0KLVRF
U1RfRihNQVlCRV9PcHRpb25zRmlsZVRlc3QsIFBlcnNpc3QpIHsKLSAgLy8gQ2xlYXIgY29udGVu
dHMgb2YgdGhlIGZpbGUgb24gZGlzay4KLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwot
ICBFWFBFQ1RfVFJVRShzdG9yZV8tPlNldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQSwga1Rlc3RT
dHJpbmcxKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0SW50VmFsdWUoa1Rlc3RPcHRpb25C
LCBrTmVnSW50KSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2F2ZSgpKTsKLQotICAvLyBMb2Fk
IHRoZSBzYXZlZCBjb250ZW50cyBmcm9tIGFib3ZlLgotICBPcGVuU3RvcmUoKTsKLSAgRVhQRUNU
X1RSVUUoc3RvcmVfLT5Mb2FkKCkpOwotICBzdGQ6OnN0cmluZyBvdXQxOwotICBpbnQgb3V0MjsK
LSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkEsICZvdXQx
KSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0SW50VmFsdWUoa1Rlc3RPcHRpb25CLCAmb3V0
MikpOwotICBFWFBFQ1RfRVEoa1Rlc3RTdHJpbmcxLCBvdXQxKTsKLSAgRVhQRUNUX0VRKGtOZWdJ
bnQsIG91dDIpOwotfQotCi1URVNUX0YoTUFZQkVfT3B0aW9uc0ZpbGVUZXN0LCBTcGVjaWFsQ2hh
cmFjdGVycykgewotICAvLyBDbGVhciBjb250ZW50cyBvZiB0aGUgZmlsZSBvbiBkaXNrLgotICBF
WFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIHN0ZDo6c3RyaW5nIG91dDsKLSAgRVhQRUNU
X0ZBTFNFKHN0b3JlXy0+U2V0U3RyaW5nVmFsdWUoa09wdGlvbldpdGhFcXVhbHMsIGtUZXN0U3Ry
aW5nMSkpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrT3B0aW9uV2l0
aEVxdWFscywgJm91dCkpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVfLT5TZXRTdHJpbmdWYWx1ZShr
T3B0aW9uV2l0aE5ld2xpbmUsIGtUZXN0U3RyaW5nMSkpOwotICBFWFBFQ1RfRkFMU0Uoc3RvcmVf
LT5HZXRTdHJpbmdWYWx1ZShrT3B0aW9uV2l0aE5ld2xpbmUsICZvdXQpKTsKLSAgRVhQRUNUX1RS
VUUoc3RvcmVfLT5TZXRTdHJpbmdWYWx1ZShrT3B0aW9uV2l0aFV0ZjgsIGtWYWx1ZVdpdGhVdGY4
KSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+U2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCBr
VGVzdFN0cmluZzEpKTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1Rf
VFJVRShzdG9yZV8tPkxvYWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0U3RyaW5nVmFs
dWUoa1Rlc3RPcHRpb25BLCAmb3V0KSk7Ci0gIEVYUEVDVF9FUShrVGVzdFN0cmluZzEsIG91dCk7
Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa09wdGlvbldpdGhVdGY4LCAm
b3V0KSk7Ci0gIEVYUEVDVF9FUShrVmFsdWVXaXRoVXRmOCwgb3V0KTsKLSAgRVhQRUNUX0ZBTFNF
KHN0b3JlXy0+U2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25BLCBrVmFsdWVXaXRoTmV3bGluZSkp
OwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkdldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQSwgJm91
dCkpOwotICBFWFBFQ1RfRVEoa1Rlc3RTdHJpbmcxLCBvdXQpOwotICBFWFBFQ1RfVFJVRShzdG9y
ZV8tPlNldFN0cmluZ1ZhbHVlKGtUZXN0T3B0aW9uQSwga1ZhbHVlV2l0aEVxdWFscykpOwotICBF
WFBFQ1RfVFJVRShzdG9yZV8tPlNhdmUoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+TG9hZCgp
KTsKLSAgRVhQRUNUX1RSVUUoc3RvcmVfLT5HZXRTdHJpbmdWYWx1ZShrVGVzdE9wdGlvbkEsICZv
dXQpKTsKLSAgRVhQRUNUX0VRKGtWYWx1ZVdpdGhFcXVhbHMsIG91dCk7Ci0gIEVYUEVDVF9UUlVF
KHN0b3JlXy0+U2V0U3RyaW5nVmFsdWUoa0VtcHR5U3RyaW5nLCBrVGVzdFN0cmluZzIpKTsKLSAg
RVhQRUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQo
KSk7Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa0VtcHR5U3RyaW5nLCAm
b3V0KSk7Ci0gIEVYUEVDVF9FUShrVGVzdFN0cmluZzIsIG91dCk7Ci0gIEVYUEVDVF9UUlVFKHN0
b3JlXy0+U2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25CLCBrRW1wdHlTdHJpbmcpKTsKLSAgRVhQ
RUNUX1RSVUUoc3RvcmVfLT5TYXZlKCkpOwotICBFWFBFQ1RfVFJVRShzdG9yZV8tPkxvYWQoKSk7
Ci0gIEVYUEVDVF9UUlVFKHN0b3JlXy0+R2V0U3RyaW5nVmFsdWUoa1Rlc3RPcHRpb25CLCAmb3V0
KSk7Ci0gIEVYUEVDVF9FUShrRW1wdHlTdHJpbmcsIG91dCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFj
ZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3BhdGh1dGlscy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BhdGh1dGlscy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTk0ZGViN2YwZmMxMzJmYTdjNDM2ZWMxNzQyZTY4Mjk4OTJhMWExMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHMuY2MKKysrIC9kZXYv
bnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRD
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lmIGRlZmluZWQo
V0VCUlRDX1dJTikKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8c2hlbGxhcGkuaD4K
LSNpbmNsdWRlIDxzaGxvYmouaD4KLSNpbmNsdWRlIDx0Y2hhci5oPgotI2VuZGlmICAvLyBXRUJS
VENfV0lOCi0KLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvcGF0aHV0aWxzLmgiCi0jaW5jbHVkZSAi
cnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKLQotbmFtZXNwYWNlIHJ0YyB7Ci0KLXN0YXRpYyBjb25z
dCBjaGFyIEVNUFRZX1NUUltdID0gIiI7Ci0KLS8vIEVYVF9ERUxJTSBzZXBhcmF0ZXMgYSBmaWxl
IGJhc2VuYW1lIGZyb20gZXh0ZW5zaW9uCi1jb25zdCBjaGFyIEVYVF9ERUxJTSA9ICcuJzsKLQot
Ly8gRk9MREVSX0RFTElNUyBzZXBhcmF0ZSBmb2xkZXIgc2VnbWVudHMgYW5kIHRoZSBmaWxlbmFt
ZQotY29uc3QgY2hhciogY29uc3QgRk9MREVSX0RFTElNUyA9ICIvXFwiOwotCi0vLyBERUZBVUxU
X0ZPTERFUl9ERUxJTSBpcyB0aGUgcHJlZmVycmVkIGRlbGltaXRlciBmb3IgdGhpcyBwbGF0Zm9y
bQotI2lmZGVmIFdFQlJUQ19XSU4KLWNvbnN0IGNoYXIgREVGQVVMVF9GT0xERVJfREVMSU0gPSAn
XFwnOwotI2Vsc2UgIC8vICFXRUJSVENfV0lOCi1jb25zdCBjaGFyIERFRkFVTFRfRk9MREVSX0RF
TElNID0gJy8nOwotI2VuZGlmICAvLyAhV0VCUlRDX1dJTgotCi0vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0vLyBQYXRobmFtZSAtIHBhcnNpbmcgb2YgcGF0aG5hbWVzIGludG8gY29tcG9uZW50cywg
YW5kIHZpY2UgdmVyc2EKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotYm9vbCBQYXRobmFtZTo6
SXNGb2xkZXJEZWxpbWl0ZXIoY2hhciBjaCkgewotICByZXR1cm4gKG51bGxwdHIgIT0gOjpzdHJj
aHIoRk9MREVSX0RFTElNUywgY2gpKTsKLX0KLQotY2hhciBQYXRobmFtZTo6RGVmYXVsdEZvbGRl
ckRlbGltaXRlcigpIHsKLSAgcmV0dXJuIERFRkFVTFRfRk9MREVSX0RFTElNOwotfQotCi1QYXRo
bmFtZTo6UGF0aG5hbWUoKQotICAgIDogZm9sZGVyX2RlbGltaXRlcl8oREVGQVVMVF9GT0xERVJf
REVMSU0pIHsKLX0KLQotUGF0aG5hbWU6OlBhdGhuYW1lKGNvbnN0IFBhdGhuYW1lJikgPSBkZWZh
dWx0OwotUGF0aG5hbWU6OlBhdGhuYW1lKFBhdGhuYW1lJiYpID0gZGVmYXVsdDsKLQotUGF0aG5h
bWU6OlBhdGhuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRobmFtZSkKLSAgICA6IGZvbGRlcl9k
ZWxpbWl0ZXJfKERFRkFVTFRfRk9MREVSX0RFTElNKSB7Ci0gIFNldFBhdGhuYW1lKHBhdGhuYW1l
KTsKLX0KLQotUGF0aG5hbWU6OlBhdGhuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb2xkZXIsIGNv
bnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSkKLSAgICA6IGZvbGRlcl9kZWxpbWl0ZXJfKERFRkFV
TFRfRk9MREVSX0RFTElNKSB7Ci0gIFNldFBhdGhuYW1lKGZvbGRlciwgZmlsZW5hbWUpOwotfQot
Ci1QYXRobmFtZSYgUGF0aG5hbWU6Om9wZXJhdG9yPShjb25zdCBQYXRobmFtZSYpID0gZGVmYXVs
dDsKLVBhdGhuYW1lJiBQYXRobmFtZTo6b3BlcmF0b3I9KFBhdGhuYW1lJiYpID0gZGVmYXVsdDsK
LQotc3RkOjpzdHJpbmcgUGF0aG5hbWU6OnBhdGhuYW1lKCkgY29uc3QgewotICBzdGQ6OnN0cmlu
ZyBwYXRobmFtZShmb2xkZXJfKTsKLSAgcGF0aG5hbWUuYXBwZW5kKGJhc2VuYW1lXyk7Ci0gIHBh
dGhuYW1lLmFwcGVuZChleHRlbnNpb25fKTsKLSAgaWYgKHBhdGhuYW1lLmVtcHR5KCkpIHsKLSAg
ICAvLyBJbnN0ZWFkIG9mIHRoZSBlbXB0eSBwYXRobmFtZSwgcmV0dXJuIHRoZSBjdXJyZW50IHdv
cmtpbmcgZGlyZWN0b3J5LgotICAgIHBhdGhuYW1lLnB1c2hfYmFjaygnLicpOwotICAgIHBhdGhu
YW1lLnB1c2hfYmFjayhmb2xkZXJfZGVsaW1pdGVyXyk7Ci0gIH0KLSAgcmV0dXJuIHBhdGhuYW1l
OwotfQotCi12b2lkIFBhdGhuYW1lOjpTZXRQYXRobmFtZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0
aG5hbWUpIHsKLSAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBwb3MgPSBwYXRobmFtZS5maW5kX2xh
c3Rfb2YoRk9MREVSX0RFTElNUyk7Ci0gIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsK
LSAgICBTZXRGb2xkZXIocGF0aG5hbWUuc3Vic3RyKDAsIHBvcyArIDEpKTsKLSAgICBTZXRGaWxl
bmFtZShwYXRobmFtZS5zdWJzdHIocG9zICsgMSkpOwotICB9IGVsc2UgewotICAgIFNldEZvbGRl
cihFTVBUWV9TVFIpOwotICAgIFNldEZpbGVuYW1lKHBhdGhuYW1lKTsKLSAgfQotfQotCi12b2lk
IFBhdGhuYW1lOjpTZXRQYXRobmFtZShjb25zdCBzdGQ6OnN0cmluZyYgZm9sZGVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKSB7Ci0gIFNl
dEZvbGRlcihmb2xkZXIpOwotICBTZXRGaWxlbmFtZShmaWxlbmFtZSk7Ci19Ci0KLXZvaWQgUGF0
aG5hbWU6OlNldEZvbGRlcihjb25zdCBzdGQ6OnN0cmluZyYgZm9sZGVyKSB7Ci0gIGZvbGRlcl8u
YXNzaWduKGZvbGRlcik7Ci0gIC8vIEVuc3VyZSBmb2xkZXIgZW5kcyBpbiBhIHBhdGggZGVsaW1p
dGVyCi0gIGlmICghZm9sZGVyXy5lbXB0eSgpICYmICFJc0ZvbGRlckRlbGltaXRlcihmb2xkZXJf
W2ZvbGRlcl8ubGVuZ3RoKCktMV0pKSB7Ci0gICAgZm9sZGVyXy5wdXNoX2JhY2soZm9sZGVyX2Rl
bGltaXRlcl8pOwotICB9Ci19Ci0KLXZvaWQgUGF0aG5hbWU6OkFwcGVuZEZvbGRlcihjb25zdCBz
dGQ6OnN0cmluZyYgZm9sZGVyKSB7Ci0gIGZvbGRlcl8uYXBwZW5kKGZvbGRlcik7Ci0gIC8vIEVu
c3VyZSBmb2xkZXIgZW5kcyBpbiBhIHBhdGggZGVsaW1pdGVyCi0gIGlmICghZm9sZGVyXy5lbXB0
eSgpICYmICFJc0ZvbGRlckRlbGltaXRlcihmb2xkZXJfW2ZvbGRlcl8ubGVuZ3RoKCktMV0pKSB7
Ci0gICAgZm9sZGVyXy5wdXNoX2JhY2soZm9sZGVyX2RlbGltaXRlcl8pOwotICB9Ci19Ci0KLWJv
b2wgUGF0aG5hbWU6OlNldEJhc2VuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBiYXNlbmFtZSkgewot
ICBpZihiYXNlbmFtZS5maW5kX2ZpcnN0X29mKEZPTERFUl9ERUxJTVMpICE9IHN0ZDo6c3RyaW5n
OjpucG9zKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGJhc2VuYW1lXy5hc3NpZ24oYmFz
ZW5hbWUpOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBQYXRobmFtZTo6U2V0RXh0ZW5zaW9u
KGNvbnN0IHN0ZDo6c3RyaW5nJiBleHRlbnNpb24pIHsKLSAgaWYgKGV4dGVuc2lvbi5maW5kX2Zp
cnN0X29mKEZPTERFUl9ERUxJTVMpICE9IHN0ZDo6c3RyaW5nOjpucG9zIHx8Ci0gICAgZXh0ZW5z
aW9uLmZpbmRfZmlyc3Rfb2YoRVhUX0RFTElNLCAxKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewot
ICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGV4dGVuc2lvbl8uYXNzaWduKGV4dGVuc2lvbik7
Ci0gIC8vIEVuc3VyZSBleHRlbnNpb24gYmVnaW5zIHdpdGggdGhlIGV4dGVuc2lvbiBkZWxpbWl0
ZXIKLSAgaWYgKCFleHRlbnNpb25fLmVtcHR5KCkgJiYgKGV4dGVuc2lvbl9bMF0gIT0gRVhUX0RF
TElNKSkgewotICAgIGV4dGVuc2lvbl8uaW5zZXJ0KGV4dGVuc2lvbl8uYmVnaW4oKSwgRVhUX0RF
TElNKTsKLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RkOjpzdHJpbmcgUGF0aG5hbWU6OmZp
bGVuYW1lKCkgY29uc3QgewotICBzdGQ6OnN0cmluZyBmaWxlbmFtZShiYXNlbmFtZV8pOwotICBm
aWxlbmFtZS5hcHBlbmQoZXh0ZW5zaW9uXyk7Ci0gIHJldHVybiBmaWxlbmFtZTsKLX0KLQotYm9v
bCBQYXRobmFtZTo6U2V0RmlsZW5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lKSB7Ci0g
IHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gZmlsZW5hbWUucmZpbmQoRVhUX0RFTElNKTsK
LSAgaWYgKChwb3MgPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHx8IChwb3MgPT0gMCkpIHsKLSAgICBy
ZXR1cm4gU2V0RXh0ZW5zaW9uKEVNUFRZX1NUUikgJiYgU2V0QmFzZW5hbWUoZmlsZW5hbWUpOwot
ICB9IGVsc2UgewotICAgIHJldHVybiBTZXRFeHRlbnNpb24oZmlsZW5hbWUuc3Vic3RyKHBvcykp
ICYmIFNldEJhc2VuYW1lKGZpbGVuYW1lLnN1YnN0cigwLCBwb3MpKTsKLSAgfQotfQotCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0KLX0gLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGF0aHV0aWxz
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9w
YXRodXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU0M2JlMDczZjI0NWQz
NDA5ZmQ2OTBiNWNmOWNjOTdkYjZlNWE3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9wYXRodXRpbHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8q
Ci0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYgUlRDX0JBU0VfUEFUSFVUSUxTX0hfCi0jZGVmaW5l
IFJUQ19CQVNFX1BBVEhVVElMU19IXwotCi0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVkZSAi
cnRjX2Jhc2UvY2hlY2tzLmgiCi0KLW5hbWVzcGFjZSBydGMgewotCi0vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCi0vLyBQYXRobmFtZSAtIHBhcnNpbmcgb2YgcGF0aG5hbWVzIGludG8gY29tcG9uZW50
cywgYW5kIHZpY2UgdmVyc2EuCi0vLwotLy8gVG8gZXN0YWJsaXNoIGNvbnNpc3RlbnQgdGVybWlu
b2xvZ3ksIGEgZmlsZW5hbWUgbmV2ZXIgY29udGFpbnMgYSBmb2xkZXIKLS8vIGNvbXBvbmVudC4g
IEEgZm9sZGVyIG5ldmVyIGNvbnRhaW5zIGEgZmlsZW5hbWUuICBBIHBhdGhuYW1lIG1heSBpbmNs
dWRlCi0vLyBhIGZvbGRlciBhbmQvb3IgZmlsZW5hbWUgY29tcG9uZW50LiAgSGVyZSBhcmUgc29t
ZSBleGFtcGxlczoKLS8vCi0vLyAgIHBhdGhuYW1lKCkgICAgICAvaG9tZS9qb2huL2V4YW1wbGUu
dHh0Ci0vLyAgIGZvbGRlcigpICAgICAgICAvaG9tZS9qb2huLwotLy8gICBmaWxlbmFtZSgpICAg
ICAgICAgICAgICAgICBleGFtcGxlLnR4dAotLy8gICBwYXJlbnRfZm9sZGVyKCkgL2hvbWUvCi0v
LyAgIGZvbGRlcl9uYW1lKCkgICAgICAgICBqb2huLwotLy8gICBiYXNlbmFtZSgpICAgICAgICAg
ICAgICAgICBleGFtcGxlCi0vLyAgIGV4dGVuc2lvbigpICAgICAgICAgICAgICAgICAgICAgICAu
dHh0Ci0vLwotLy8gQmFzZW5hbWUgbWF5IGJlZ2luLCBlbmQsIGFuZC9vciBpbmNsdWRlIHBlcmlv
ZHMsIGJ1dCBubyBmb2xkZXIgZGVsaW1pdGVycy4KLS8vIElmIGV4dGVuc2lvbiBleGlzdHMsIGl0
IGNvbnNpc3RzIG9mIGEgcGVyaW9kIGZvbGxvd2VkIGJ5IHplcm8gb3IgbW9yZQotLy8gbm9uLXBl
cmlvZC9ub24tZGVsaW1pdGVyIGNoYXJhY3RlcnMsIGFuZCBiYXNlbmFtZSBpcyBub24tZW1wdHku
Ci0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLWNsYXNzIFBhdGhuYW1lIHsKLSBwdWJsaWM6Ci0g
IC8vIEZvbGRlciBkZWxpbWl0ZXJzIGFyZSBzbGFzaCBhbmQgYmFja3NsYXNoCi0gIHN0YXRpYyBi
b29sIElzRm9sZGVyRGVsaW1pdGVyKGNoYXIgY2gpOwotICBzdGF0aWMgY2hhciBEZWZhdWx0Rm9s
ZGVyRGVsaW1pdGVyKCk7Ci0KLSAgUGF0aG5hbWUoKTsKLSAgUGF0aG5hbWUoY29uc3QgUGF0aG5h
bWUmKTsKLSAgUGF0aG5hbWUoUGF0aG5hbWUmJik7Ci0gIFBhdGhuYW1lKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwYXRobmFtZSk7Ci0gIFBhdGhuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmb2xkZXIsIGNv
bnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSk7Ci0KLSAgUGF0aG5hbWUmIG9wZXJhdG9yPShjb25z
dCBQYXRobmFtZSYpOwotICBQYXRobmFtZSYgb3BlcmF0b3I9KFBhdGhuYW1lJiYpOwotCi0gIC8v
IFJldHVybnMgdGhlIGZvbGRlciBhbmQgZmlsZW5hbWUgY29tcG9uZW50cy4gIElmIHRoZSBwYXRo
bmFtZSBpcyBlbXB0eSwKLSAgLy8gcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1
cnJlbnQgZGlyZWN0b3J5IChhcyBhIHJlbGF0aXZlIHBhdGgsCi0gIC8vIGkuZS4sICIuIikuCi0g
IHN0ZDo6c3RyaW5nIHBhdGhuYW1lKCkgY29uc3Q7Ci0gIHZvaWQgU2V0UGF0aG5hbWUoY29uc3Qg
c3RkOjpzdHJpbmcmIHBhdGhuYW1lKTsKLSAgdm9pZCBTZXRQYXRobmFtZShjb25zdCBzdGQ6OnN0
cmluZyYgZm9sZGVyLCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpOwotCi0gIC8vIFNldEZv
bGRlciBhbmQgQXBwZW5kRm9sZGVyIHdpbGwgYXBwZW5kIGEgZm9sZGVyIGRlbGltaXRlciwgaWYg
bmVlZGVkLgotICB2b2lkIFNldEZvbGRlcihjb25zdCBzdGQ6OnN0cmluZyYgZm9sZGVyKTsKLSAg
dm9pZCBBcHBlbmRGb2xkZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGZvbGRlcik7Ci0KLSAgYm9vbCBT
ZXRCYXNlbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgYmFzZW5hbWUpOwotCi0gIC8vIFNldEV4dGVu
c2lvbiB3aWxsIHByZWZpeCBhIHBlcmlvZCwgaWYgbmVlZGVkLgotICBib29sIFNldEV4dGVuc2lv
bihjb25zdCBzdGQ6OnN0cmluZyYgZXh0ZW5zaW9uKTsKLQotICBzdGQ6OnN0cmluZyBmaWxlbmFt
ZSgpIGNvbnN0OwotICBib29sIFNldEZpbGVuYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFt
ZSk7Ci0KLSBwcml2YXRlOgotICBzdGQ6OnN0cmluZyBmb2xkZXJfLCBiYXNlbmFtZV8sIGV4dGVu
c2lvbl87Ci0gIGNoYXIgZm9sZGVyX2RlbGltaXRlcl87Ci19OwotCi19ICAvLyBuYW1lc3BhY2Ug
cnRjCi0KLSNlbmRpZiAgLy8gUlRDX0JBU0VfUEFUSFVUSUxTX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wYXRodXRpbHNf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9wYXRodXRpbHNfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGZhZTRmMGFiYTU5YmY1ZTRmOGU4OWJmOWQ5NTA4ZDBmNTc5ZGJlZTMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGF0aHV0aWxzX3VuaXR0ZXN0LmNjCisrKyAv
ZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNyBUaGUgV2Vi
UlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUg
InJ0Y19iYXNlL3BhdGh1dGlscy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0LmgiCi0KLVRF
U1QoUGF0aG5hbWUsIFJldHVybnNEb3RGb3JFbXB0eVBhdGhuYW1lKSB7Ci0gIGNvbnN0IHN0ZDo6
c3RyaW5nIGtDV0QgPQotICAgICAgc3RkOjpzdHJpbmcoIi4iKSArIHJ0Yzo6UGF0aG5hbWU6OkRl
ZmF1bHRGb2xkZXJEZWxpbWl0ZXIoKTsKLQotICBydGM6OlBhdGhuYW1lIHBhdGgoIi8iLCAiIik7
Ci0gIEVYUEVDVF9UUlVFIChwYXRoLmZpbGVuYW1lKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxT
RShwYXRoLnBhdGhuYW1lKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZygiLyIp
LCBwYXRoLnBhdGhuYW1lKCkpOwotCi0gIHBhdGguU2V0UGF0aG5hbWUoIiIsICJmb28iKTsKLSAg
RVhQRUNUX0ZBTFNFKHBhdGguZmlsZW5hbWUoKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKHBh
dGgucGF0aG5hbWUoKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKCJmb28iKSwg
cGF0aC5wYXRobmFtZSgpKTsKLQotICBwYXRoLlNldFBhdGhuYW1lKCIiLCAiIik7Ci0gIEVYUEVD
VF9UUlVFIChwYXRoLmZpbGVuYW1lKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShwYXRoLnBh
dGhuYW1lKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9FUShrQ1dELCBwYXRoLnBhdGhuYW1lKCkpOwot
Ci0gIHBhdGguU2V0UGF0aG5hbWUoa0NXRCwgIiIpOwotICBFWFBFQ1RfVFJVRSAocGF0aC5maWxl
bmFtZSgpLmVtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UocGF0aC5wYXRobmFtZSgpLmVtcHR5KCkp
OwotICBFWFBFQ1RfRVEoa0NXRCwgcGF0aC5wYXRobmFtZSgpKTsKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2Fs
c29ja2V0c2VydmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3QuY2MKaW5k
ZXggMWUwNDZjMDU3ZTVkODIxMWMyMzVkODU0ZjVkNmNlNzEyZTZiYmFhMy4uNGIzNmNkNWY2MDhl
OGY4N2ZlOWU2ZDViOWQ5MGQ5ZTkxMGU0ZWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXJf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXJfdW5pdHRlc3QuY2MKQEAgLTU0Nyw3ICs1
NDcsMTMgQEAgVGhyZWFkKiBQb3NpeFNpZ25hbERlbGl2ZXJ5VGVzdDo6c2lnbmFsZWRfdGhyZWFk
XyA9IG51bGxwdHI7CiAKIC8vIFRlc3QgcmVjZWl2aW5nIGEgc3luY2hyb25vdXMgc2lnbmFsIHdo
aWxlIG5vdCBpbiBXYWl0KCkgYW5kIHRoZW4gZW50ZXJpbmcKIC8vIFdhaXQoKSBhZnRlcndhcmRz
LgotVEVTVF9GKFBvc2l4U2lnbmFsRGVsaXZlcnlUZXN0LCBSYWlzZVRoZW5XYWl0KSB7CisvLyBU
T0RPKHdlYnJ0Yzo3ODY0KTogRmFpbHMgb24gcmVhbCBpT1MgZGV2aWNlcworI2lmIGRlZmluZWQo
V0VCUlRDX0lPUykgJiYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk1fRkFNSUxZKQorI2RlZmluZSBN
QVlCRV9SYWlzZVRoZW5XYWl0IERJU0FCTEVEX1JhaXNlVGhlbldhaXQKKyNlbHNlCisjZGVmaW5l
IE1BWUJFX1JhaXNlVGhlbldhaXQgUmFpc2VUaGVuV2FpdAorI2VuZGlmCitURVNUX0YoUG9zaXhT
aWduYWxEZWxpdmVyeVRlc3QsIE1BWUJFX1JhaXNlVGhlbldhaXQpIHsKICAgQVNTRVJUX1RSVUUo
c3NfLT5TZXRQb3NpeFNpZ25hbEhhbmRsZXIoU0lHVEVSTSwgJlJlY29yZFNpZ25hbCkpOwogICBy
YWlzZShTSUdURVJNKTsKICAgRVhQRUNUX1RSVUUoc3NfLT5XYWl0KDAsIHRydWUpKTsKQEAgLTU1
Nyw3ICs1NjMsMTMgQEAgVEVTVF9GKFBvc2l4U2lnbmFsRGVsaXZlcnlUZXN0LCBSYWlzZVRoZW5X
YWl0KSB7CiAKIC8vIFRlc3QgdGhhdCB3ZSBjYW4gaGFuZGxlIGdldHRpbmcgdG9ucyBvZiByZXBl
YXRlZCBzaWduYWxzIGFuZCB0aGF0IHdlIHNlZSBhbGwKIC8vIHRoZSBkaWZmZXJlbnQgb25lcy4K
LVRFU1RfRihQb3NpeFNpZ25hbERlbGl2ZXJ5VGVzdCwgSW5zYW5lbHlNYW55U2lnbmFscykgewor
Ly8gVE9ETyh3ZWJydGM6Nzg2NCk6IEZhaWxzIG9uIHJlYWwgaU9TIGRldmljZXMKKyNpZiBkZWZp
bmVkKFdFQlJUQ19JT1MpICYmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNX0ZBTUlMWSkKKyNkZWZp
bmUgTUFZQkVfSW5zYW5lbHlNYW55U2lnbmFscyBESVNBQkxFRF9JbnNhbmVseU1hbnlTaWduYWxz
CisjZWxzZQorI2RlZmluZSBNQVlCRV9JbnNhbmVseU1hbnlTaWduYWxzIEluc2FuZWx5TWFueVNp
Z25hbHMKKyNlbmRpZgorVEVTVF9GKFBvc2l4U2lnbmFsRGVsaXZlcnlUZXN0LCBNQVlCRV9JbnNh
bmVseU1hbnlTaWduYWxzKSB7CiAgIHNzXy0+U2V0UG9zaXhTaWduYWxIYW5kbGVyKFNJR1RFUk0s
ICZSZWNvcmRTaWduYWwpOwogICBzc18tPlNldFBvc2l4U2lnbmFsSGFuZGxlcihTSUdJTlQsICZS
ZWNvcmRTaWduYWwpOwogICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKQEAgLTU5
Nyw3ICs2MDksMTMgQEAgY2xhc3MgUmFpc2VTaWdUZXJtUnVubmFibGUgOiBwdWJsaWMgUnVubmFi
bGUgewogCiAvLyBUZXN0IHRoYXQgaXQgd29ya3Mgbm8gbWF0dGVyIHdoYXQgdGhyZWFkIHRoZSBr
ZXJuZWwgY2hvb3NlcyB0byBnaXZlIHRoZQogLy8gc2lnbmFsIHRvIChzaW5jZSBpdCdzIG5vdCBn
dWFyYW50ZWVkIHRvIGJlIHRoZSBvbmUgdGhhdCBXYWl0KCkgcnVucyBvbikuCi1URVNUX0YoUG9z
aXhTaWduYWxEZWxpdmVyeVRlc3QsIFNpZ25hbE9uRGlmZmVyZW50VGhyZWFkKSB7CisvLyBUT0RP
KHdlYnJ0Yzo3ODY0KTogRmFpbHMgb24gcmVhbCBpT1MgZGV2aWNlcworI2lmIGRlZmluZWQoV0VC
UlRDX0lPUykgJiYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk1fRkFNSUxZKQorI2RlZmluZSBNQVlC
RV9TaWduYWxPbkRpZmZlcmVudFRocmVhZCBESVNBQkxFRF9TaWduYWxPbkRpZmZlcmVudFRocmVh
ZAorI2Vsc2UKKyNkZWZpbmUgTUFZQkVfU2lnbmFsT25EaWZmZXJlbnRUaHJlYWQgU2lnbmFsT25E
aWZmZXJlbnRUaHJlYWQKKyNlbmRpZgorVEVTVF9GKFBvc2l4U2lnbmFsRGVsaXZlcnlUZXN0LCBE
SVNBQkxFRF9TaWduYWxPbkRpZmZlcmVudFRocmVhZCkgewogICBzc18tPlNldFBvc2l4U2lnbmFs
SGFuZGxlcihTSUdURVJNLCAmUmVjb3JkU2lnbmFsKTsKICAgLy8gTWFzayBvdXQgU0lHVEVSTSBz
byB0aGF0IGl0IGNhbid0IGJlIGRlbGl2ZXJlZCB0byB0aGlzIHRocmVhZC4KICAgc2lnc2V0X3Qg
bWFzazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmNjCmluZGV4IGE0YzkwNmEx
ZWQwMjhhZGY2ZGIwYmZmMjUyODQwN2I5MGI5YmNjYzkuLmJhZWZiMjI5MzEzYmQyYTczYTM0ZGQx
MzI0ODA4YTU5MjlkOGQwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BsYXRmb3JtX2ZpbGUuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGxhdGZvcm1fZmlsZS5j
YwpAQCAtMTAsMTQgKzEwLDEzIEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV9maWxl
LmgiCiAKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgotCiAjaWYgZGVmaW5lZChX
RUJSVENfV0lOKQogI2luY2x1ZGUgPGlvLmg+CisKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1
dGlscy5oIiAgLy8gRm9yIFRvVXRmMTYKICNlbHNlCiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNs
dWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0
ZC5oPgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BsYXRmb3JtX3RocmVhZC5jYwpp
bmRleCA3OWQ5ZDUzYWVlZTAyZTBkOGJlMDQxMWIwZTAxOWI2MDc1ZDA3ZTFlLi5iYTg0YjZhZThl
MDQ5NTQ4NzczYzdmZWQ0NzMxNTVkZTVjNmEzNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
cGxhdGZvcm1fdGhyZWFkLmNjCkBAIC0xMCwxNSArMTAsMTcgQEAKIAogI2luY2x1ZGUgInJ0Y19i
YXNlL3BsYXRmb3JtX3RocmVhZC5oIgogCisjaWYgIWRlZmluZWQoV0VCUlRDX1dJTikKKyNpbmNs
dWRlIDxzY2hlZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8dGlt
ZS5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKwogI2luY2x1ZGUgInJ0Y19iYXNlL2F0b21pY29w
cy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Rp
bWV1dGlscy5oIgogCi0jaWYgZGVmaW5lZChXRUJSVENfTElOVVgpCi0jaW5jbHVkZSA8c3lzL3By
Y3RsLmg+Ci0jaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgcnRj
IHsKIG5hbWVzcGFjZSB7CiAjaWYgZGVmaW5lZChXRUJSVENfV0lOKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGxhdGZvcm1f
dGhyZWFkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9wbGF0Zm9ybV90aHJlYWQuaAppbmRleCAzMzkyMWMyMDlkYTAyODliMDc0N2RhYTQ3YjE1
NDViY2E1NDQ2ZDU0Li40N2MyM2RjMWI1YjQ3ZjRiMjk4ODUyMjhmMzhiMzA2ZTIzYWQyYjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9wbGF0Zm9ybV90aHJlYWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaApAQCAtMTEsMTAgKzExLDEy
IEBACiAjaWZuZGVmIFJUQ19CQVNFX1BMQVRGT1JNX1RIUkVBRF9IXwogI2RlZmluZSBSVENfQkFT
RV9QTEFURk9STV9USFJFQURfSF8KIAorI2lmbmRlZiBXRUJSVENfV0lOCisjaW5jbHVkZSA8cHRo
cmVhZC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Y29uc3RydWN0b3JtYWdpYy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2V2ZW50LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
dGhyZWFkX2NoZWNrZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcHJveHlfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wcm94eV91bml0dGVzdC5j
YwppbmRleCBmNDIwMzlmNTBiYTIxMThkZGNjYWFiODQ1YzFkYzk0MGUyYTg0YzAyLi4wMTAxODkz
ODRmOGI3NTcwOTlhZTY4YmM4YTM2ZDBlOThhZTJiZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9wcm94eV91bml0dGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9wcm94eV91bml0dGVzdC5jYwpAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgInJ0Y19iYXNl
L3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuaCIKIAogdXNpbmcgcnRjOjpTb2NrZXQ7Ci11c2luZyBydGM6
OlRocmVhZDsKIHVzaW5nIHJ0Yzo6U29ja2V0QWRkcmVzczsKIAogc3RhdGljIGNvbnN0IFNvY2tl
dEFkZHJlc3Mga1NvY2tzUHJveHlJbnRBZGRyKCIxLjIuMy40IiwgMTA4MCk7CkBAIC00OSw3ICs0
OCw4IEBAIFRFU1RfRihQcm94eVRlc3QsIFRlc3RTb2NrczVDb25uZWN0KSB7CiAgICAgICBzb2Nr
ZXQsIGtTb2Nrc1Byb3h5SW50QWRkciwgIiIsIHJ0Yzo6Q3J5cHRTdHJpbmcoKSk7CiAgIC8vIFRP
RE86IElQdjYtaXplIHRoZXNlIHRlc3RzIHdoZW4gcHJveHkgc3VwcG9ydHMgSVB2Ni4KIAotICBy
dGM6OlRlc3RFY2hvU2VydmVyIHNlcnZlcihUaHJlYWQ6OkN1cnJlbnQoKSwgU29ja2V0QWRkcmVz
cyhJTkFERFJfQU5ZLCAwKSk7CisgIHJ0Yzo6VGVzdEVjaG9TZXJ2ZXIgc2VydmVyKHJ0Yzo6VGhy
ZWFkOjpDdXJyZW50KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvY2tldEFkZHJl
c3MoSU5BRERSX0FOWSwgMCkpOwogCiAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jVENQU29j
a2V0PiBwYWNrZXRfc29ja2V0KAogICAgICAgcnRjOjpBc3luY1RDUFNvY2tldDo6Q3JlYXRlKHBy
b3h5X3NvY2tldCwgU29ja2V0QWRkcmVzcyhJTkFERFJfQU5ZLCAwKSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Byb3h5c2Vy
dmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvcHJveHlzZXJ2ZXIuY2MKaW5kZXggNTVjYWI4MDk3NWMzNmZkMTU0M2U4NGVkYTUxMmFmZjM4
MmJkZTc0Yy4uNzFjNDg3OTA5OWYwNTY0OGM0ODUwNjA5NjM3NGJjYmE5ZDJmNTMwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
cHJveHlzZXJ2ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvcHJveHlzZXJ2ZXIuY2MKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0ZmFjdG9yeS5oIgog
CiBuYW1lc3BhY2UgcnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhY2VfY2hlY2tlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgKaW5kZXgg
NzM1NjdlOThkOGFjMDdkYjc2NmU4MWM4OTdkYjM0YzBkM2FkOGRlYy4uNGQ1NzQ2MDFlYjBiNGJh
NjJhY2U1Y2RiNDZkNjkwYTM0MTNmYTNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVj
a2VyLmgKQEAgLTEyLDcgKzEyLDcgQEAKICNkZWZpbmUgUlRDX0JBU0VfUkFDRV9DSEVDS0VSX0hf
CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9wbGF0
Zm9ybV90aHJlYWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMu
aCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNl
IHJ0YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9yYW5kb20uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3JhbmRvbS5oCmluZGV4IDJmYWE5ODU2ZGM2YWVlMTEwNWNmZWJi
OWZmNmM4YTVkNjA5YjZlMDkuLmUxYzNiYjcwNThlODI2OTc0OTQ5OTQ0OTAwODZmMDI3MTJkYmEw
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3JhbmRvbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3JhbmRvbS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFJU
Q19CQVNFX1JBTkRPTV9IXwogI2RlZmluZSBSVENfQkFTRV9SQU5ET01fSF8KIAorI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPGxpbWl0cz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNr
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmNjCmluZGV4IDAzNDNmMjU2YjI5
M2YwYTExNDQ4ZjE2N2RjYTMxOTBjZjc1MDVkNTYuLjVjN2JkZWZiMGM4Yjk3YTA2OGNhZGQ5MzQ3
N2Y1YTA1ZGI3MjZjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVfbGltaXRlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRlX2xpbWl0ZXIuY2MKQEAg
LTksNiArOSwxMCBAQAogICovCiAKICNpbmNsdWRlICJydGNfYmFzZS9yYXRlX2xpbWl0ZXIuaCIK
KworI2luY2x1ZGUgPGxpbWl0cz4KKworI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIK
ICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogCiBuYW1lc3BhY2Ug
d2VicnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3JhdGVfbGltaXRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmgKaW5kZXggMGJmZGUwZGEy
NTliYjdhNGEyZTVkYTAxMDY3NTNmMDM5M2U5NmYxZS4uNDNlZjg4ZDhmYzM1NmViMGU5MWM5Nzgy
YzE2MjljYjhkYTYzODljMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmgKQEAg
LTExLDExICsxMSwxMyBAQAogI2lmbmRlZiBSVENfQkFTRV9SQVRFX0xJTUlURVJfSF8KICNkZWZp
bmUgUlRDX0JBU0VfUkFURV9MSU1JVEVSX0hfCiAKLSNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAKICNpbmNsdWRlICJydGNfYmFzZS9j
b25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvcmF0ZV9zdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9y
YXRlX2xpbWl0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRlX2xpbWl0ZXJfdW5pdHRlc3QuY2MKaW5kZXggNmVmZWE1
NDU4ZTFiMDg3Y2ZhMjA1Y2UxZTVlMWI0ZjM3MTY1MDg2Zi4uYWMwNjI1ZmExODZmNzljZWIxN2Nk
YzI0MjY0OGEwN2ViZTkxOWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmF0ZV9saW1pdGVyX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVf
bGltaXRlcl91bml0dGVzdC5jYwpAQCAtMTEyLDkgKzExMiw3IEBAIHN0YXRpYyBjb25zdCBpbnQ2
NF90IGtNYXhUaW1lb3V0TXMgPSAzMDAwMDsKIGNsYXNzIFRocmVhZFRhc2sgewogIHB1YmxpYzoK
ICAgZXhwbGljaXQgVGhyZWFkVGFzayhSYXRlTGltaXRlciogcmF0ZV9saW1pdGVyKQotICAgICAg
OiByYXRlX2xpbWl0ZXJfKHJhdGVfbGltaXRlciksCi0gICAgICAgIHN0YXJ0X3NpZ25hbF8oZmFs
c2UsIGZhbHNlKSwKLSAgICAgICAgZW5kX3NpZ25hbF8oZmFsc2UsIGZhbHNlKSB7fQorICAgICAg
OiByYXRlX2xpbWl0ZXJfKHJhdGVfbGltaXRlcikge30KICAgdmlydHVhbCB+VGhyZWFkVGFzaygp
IHt9CiAKICAgdm9pZCBSdW4oKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYXRlX3N0YXRpc3RpY3MuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVfc3RhdGlzdGlj
cy5oCmluZGV4IDY4MDM1YzlhNjhlOThiYTAwMzJiNTdkZDNkYTAwMmQyNmNjMWU5NzYuLmQ0Y2Nj
NTliZjViZGZkMWM4OTM4OGZkN2RmZWYxMmJmZDgwYmUwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGVfc3RhdGlzdGlj
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3JhdGVfc3RhdGlzdGljcy5oCkBAIC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIFJUQ19CQVNF
X1JBVEVfU1RBVElTVElDU19IXwogI2RlZmluZSBSVENfQkFTRV9SQVRFX1NUQVRJU1RJQ1NfSF8K
IAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhdGV0cmFj
a2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvcmF0ZXRyYWNrZXIuY2MKaW5kZXggZTMxZDI2NjI3YWIxOWVkYjI3YzFkYmUwMjBiODgzZTVk
ZjczZDBlOS4uN2M5NmNhOWY2MDg1ODg5MmI5NTUwMWVmMmU2ODYxYjBiMjE3ODk2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
cmF0ZXRyYWNrZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvcmF0ZXRyYWNrZXIuY2MKQEAgLTEwLDggKzEwLDYgQEAKIAogI2luY2x1
ZGUgInJ0Y19iYXNlL3JhdGV0cmFja2VyLmgiCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4KLQogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
cnRjY2VydGlmaWNhdGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5jYwppbmRleCA3ZjAyN2JhNWY4MGY0ODg4NmQ3
M2U1MGJiMzk0NTE2MGY1YTIzYmY5Li44NzUwNjhmNGZjOTg4OTcwZTAyNmY4NzFmMjk2ZjNkMjVm
NWVhMmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5jYwpAQCAtMTQs
NiArMTQsOSBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmlj
YXRlLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKKyNpbmNsdWRlICJydGNf
YmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKQEAgLTI5LDcgKzMyLDcgQEAg
UlRDQ2VydGlmaWNhdGU6OlJUQ0NlcnRpZmljYXRlKFNTTElkZW50aXR5KiBpZGVudGl0eSkgOiBp
ZGVudGl0eV8oaWRlbnRpdHkpIHsKIFJUQ0NlcnRpZmljYXRlOjp+UlRDQ2VydGlmaWNhdGUoKSB7
fQogCiB1aW50NjRfdCBSVENDZXJ0aWZpY2F0ZTo6RXhwaXJlcygpIGNvbnN0IHsKLSAgaW50NjRf
dCBleHBpcmVzID0gc3NsX2NlcnRpZmljYXRlKCkuQ2VydGlmaWNhdGVFeHBpcmF0aW9uVGltZSgp
OworICBpbnQ2NF90IGV4cGlyZXMgPSBHZXRTU0xDZXJ0aWZpY2F0ZSgpLkNlcnRpZmljYXRlRXhw
aXJhdGlvblRpbWUoKTsKICAgaWYgKGV4cGlyZXMgIT0gLTEpCiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihleHBpcmVzKSAqIGtOdW1NaWxsaXNlY3NQZXJTZWM7CiAgIC8vIElmIHRo
ZSBleHBpcmF0aW9uIHRpbWUgY291bGQgbm90IGJlIHJldHJpZXZlZCByZXR1cm4gYW4gZXhwaXJl
ZCB0aW1lc3RhbXAuCkBAIC00MCwxNyArNDMsMjIgQEAgYm9vbCBSVENDZXJ0aWZpY2F0ZTo6SGFz
RXhwaXJlZCh1aW50NjRfdCBub3cpIGNvbnN0IHsKICAgcmV0dXJuIEV4cGlyZXMoKSA8PSBub3c7
CiB9CiAKK2NvbnN0IFNTTENlcnRpZmljYXRlJiBSVENDZXJ0aWZpY2F0ZTo6R2V0U1NMQ2VydGlm
aWNhdGUoKSBjb25zdCB7CisgIHJldHVybiBpZGVudGl0eV8tPmNlcnRpZmljYXRlKCk7Cit9CisK
Ky8vIERlcHJlY2F0ZWQ6IFRPRE8oYmVud3JpZ2h0KSAtIFJlbW92ZSBvbmNlIGNocm9taXVtIGlz
IHVwZGF0ZWQuCiBjb25zdCBTU0xDZXJ0aWZpY2F0ZSYgUlRDQ2VydGlmaWNhdGU6OnNzbF9jZXJ0
aWZpY2F0ZSgpIGNvbnN0IHsKICAgcmV0dXJuIGlkZW50aXR5Xy0+Y2VydGlmaWNhdGUoKTsKIH0K
IAotY29uc3QgU1NMQ2VydENoYWluJiBSVENDZXJ0aWZpY2F0ZTo6c3NsX2NlcnRfY2hhaW4oKSBj
b25zdCB7Citjb25zdCBTU0xDZXJ0Q2hhaW4mIFJUQ0NlcnRpZmljYXRlOjpHZXRTU0xDZXJ0aWZp
Y2F0ZUNoYWluKCkgY29uc3QgewogICByZXR1cm4gaWRlbnRpdHlfLT5jZXJ0X2NoYWluKCk7CiB9
CiAKIFJUQ0NlcnRpZmljYXRlUEVNIFJUQ0NlcnRpZmljYXRlOjpUb1BFTSgpIGNvbnN0IHsKICAg
cmV0dXJuIFJUQ0NlcnRpZmljYXRlUEVNKGlkZW50aXR5Xy0+UHJpdmF0ZUtleVRvUEVNU3RyaW5n
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfY2VydGlmaWNhdGUoKS5Ub1BFTVN0
cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFNTTENlcnRpZmljYXRlKCku
VG9QRU1TdHJpbmcoKSk7CiB9CiAKIHNjb3BlZF9yZWZwdHI8UlRDQ2VydGlmaWNhdGU+IFJUQ0Nl
cnRpZmljYXRlOjpGcm9tUEVNKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlLmgK
aW5kZXggZDU0MjJmOGI0YTQ3ZDJmZTE5MjhiNjEyM2M3YjVjMDcyZTA2MzY0ZC4uNTYxZWEwZjll
N2U5MDZmNGM3OGQwZmExMTk5OWE5YmE4NzJjNzAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9y
dGNjZXJ0aWZpY2F0ZS5oCkBAIC0xMiwxNSArMTIsMTggQEAKICNkZWZpbmUgUlRDX0JBU0VfUlRD
Q0VSVElGSUNBVEVfSF8KIAogI2luY2x1ZGUgPHN0ZGludC5oPgotCiAjaW5jbHVkZSA8bWVtb3J5
PgorI2luY2x1ZGUgPHN0cmluZz4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9z
c2xpZGVudGl0eS5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIAorY2xhc3MgU1NMQ2VydENoYWluOwor
Y2xhc3MgU1NMQ2VydGlmaWNhdGU7CitjbGFzcyBTU0xJZGVudGl0eTsKKwogLy8gVGhpcyBjbGFz
cyBjb250YWlucyBQRU0gc3RyaW5ncyBvZiBhbiBSVENDZXJ0aWZpY2F0ZSdzIHByaXZhdGUga2V5
IGFuZAogLy8gY2VydGlmaWNhdGUgYW5kIGFjdHMgYXMgYSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9m
IFJUQ0NlcnRpZmljYXRlLiBDZXJ0aWZpY2F0ZXMKIC8vIGNhbiBiZSBzZXJpYWxpemVkIGFuZCBk
ZXNlcmlhbGl6ZWQgdG8gYW5kIGZyb20gdGhpcyBmb3JtYXQsIHdoaWNoIGFsbG93cyBmb3IKQEAg
LTU1LDExICs1OCwxNSBAQCBjbGFzcyBSVENDZXJ0aWZpY2F0ZSA6IHB1YmxpYyBSZWZDb3VudElu
dGVyZmFjZSB7CiAgIC8vIENoZWNrcyBpZiB0aGUgY2VydGlmaWNhdGUgaGFzIGV4cGlyZWQsIHdo
ZXJlIHxub3d8IGlzIGV4cHJlc3NlZCBpbiBtcwogICAvLyByZWxhdGl2ZSB0byBlcG9jaCwgMTk3
MC0wMS0wMVQwMDowMDowMFouCiAgIGJvb2wgSGFzRXhwaXJlZCh1aW50NjRfdCBub3cpIGNvbnN0
OworCisgIGNvbnN0IFNTTENlcnRpZmljYXRlJiBHZXRTU0xDZXJ0aWZpY2F0ZSgpIGNvbnN0Owor
ICBjb25zdCBTU0xDZXJ0Q2hhaW4mIEdldFNTTENlcnRpZmljYXRlQ2hhaW4oKSBjb25zdDsKKwor
ICAvLyBEZXByZWNhdGVkOiBUT0RPKGJlbndyaWdodCkgLSBSZW1vdmUgb25jZSBjaHJvbWl1bSBp
cyB1cGRhdGVkLgogICBjb25zdCBTU0xDZXJ0aWZpY2F0ZSYgc3NsX2NlcnRpZmljYXRlKCkgY29u
c3Q7Ci0gIGNvbnN0IFNTTENlcnRDaGFpbiYgc3NsX2NlcnRfY2hhaW4oKSBjb25zdDsKIAogICAv
LyBUT0RPKGhib3MpOiBJZiBwb3NzaWJsZSwgcmVtb3ZlIG9uY2UgUlRDQ2VydGlmaWNhdGUgYW5k
IGl0cwotICAvLyBzc2xfY2VydGlmaWNhdGUoKSBpcyB1c2VkIGluIGFsbCByZWxldmFudCBwbGFj
ZXMuIFNob3VsZCBub3QgcGFzcyBhcm91bmQKKyAgLy8gR2V0U1NMQ2VydGlmaWNhdGUoKSBpcyB1
c2VkIGluIGFsbCByZWxldmFudCBwbGFjZXMuIFNob3VsZCBub3QgcGFzcyBhcm91bmQKICAgLy8g
cmF3IFNTTElkZW50aXR5KiBmb3IgdGhlIHNha2Ugb2YgYWNjZXNzaW5nIFNTTElkZW50aXR5Ojpj
ZXJ0aWZpY2F0ZSgpLgogICAvLyBIb3dldmVyLCBzb21lIHBsYWNlcyBtaWdodCBuZWVkIFNTTElk
ZW50aXR5KiBmb3IgaXRzIHB1YmxpYy9wcml2YXRlIGtleS4uLgogICBTU0xJZGVudGl0eSogaWRl
bnRpdHkoKSBjb25zdCB7IHJldHVybiBpZGVudGl0eV8uZ2V0KCk7IH0KQEAgLTc3LDcgKzg0LDcg
QEAgY2xhc3MgUlRDQ2VydGlmaWNhdGUgOiBwdWJsaWMgUmVmQ291bnRJbnRlcmZhY2UgewogCiAg
cHJpdmF0ZToKICAgLy8gVGhlIFNTTElkZW50aXR5IGlzIHRoZSBvd25lciBvZiB0aGUgU1NMQ2Vy
dGlmaWNhdGUuIFRvIHByb3RlY3Qgb3VyCi0gIC8vIHNzbF9jZXJ0aWZpY2F0ZSgpIHdlIHRha2Ug
b3duZXJzaGlwIG9mIHxpZGVudGl0eV98LgorICAvLyBHZXRTU0xDZXJ0aWZpY2F0ZSgpIHdlIHRh
a2Ugb3duZXJzaGlwIG9mIHxpZGVudGl0eV98LgogICBzdGQ6OnVuaXF1ZV9wdHI8U1NMSWRlbnRp
dHk+IGlkZW50aXR5XzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlZ2VuZXJhdG9yLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2Vy
dGlmaWNhdGVnZW5lcmF0b3IuY2MKaW5kZXggMGI1MWM2MTFiYWRmNTM3MDE0YmQyMDRiM2U1YmFi
Njg1M2ZmYjJlMi4uMTE0YjM1YzY2NThmY2M5ZTU1NzI1ZTdhMzQ0NDU0OWJjMTJkZjg5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvcnRjY2VydGlmaWNhdGVnZW5lcmF0b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRjY2VydGlmaWNhdGVnZW5lcmF0b3IuY2MK
QEAgLTEwLDEwICsxMCwxNSBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2VydGlmaWNhdGVn
ZW5lcmF0b3IuaCIKIAorI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2NhdGlvbi5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL21lc3NhZ2VoYW5kbGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZXF1ZXVl
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnRlZG9iamVjdC5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL3NzbGlkZW50aXR5LmgiCiAKQEAgLTIzLDcgKzI4LDYgQEAgbmFtZXNwYWNlIHsKIAog
Ly8gQSBjZXJ0aWZpY2F0ZXMnIHN1YmplY3QgYW5kIGlzc3VlciBuYW1lLgogY29uc3QgY2hhciBr
SWRlbnRpdHlOYW1lW10gPSAiV2ViUlRDIjsKLQogY29uc3QgdWludDY0X3Qga1llYXJJblNlY29u
ZHMgPSAzNjUgKiAyNCAqIDYwICogNjA7CiAKIGVudW0gewpAQCAtNjAsMTEgKzY0LDkgQEAgY2xh
c3MgUlRDQ2VydGlmaWNhdGVHZW5lcmF0aW9uVGFzayA6IHB1YmxpYyBSZWZDb3VudEludGVyZmFj
ZSwKICAgICBzd2l0Y2ggKG1zZy0+bWVzc2FnZV9pZCkgewogICAgICAgY2FzZSBNU0dfR0VORVJB
VEU6CiAgICAgICAgIFJUQ19EQ0hFQ0sod29ya2VyX3RocmVhZF8tPklzQ3VycmVudCgpKTsKLQog
ICAgICAgICAvLyBQZXJmb3JtIHRoZSBjZXJ0aWZpY2F0ZSBnZW5lcmF0aW9uIHdvcmsgaGVyZSBv
biB0aGUgd29ya2VyIHRocmVhZC4KICAgICAgICAgY2VydGlmaWNhdGVfID0gUlRDQ2VydGlmaWNh
dGVHZW5lcmF0b3I6OkdlbmVyYXRlQ2VydGlmaWNhdGUoCiAgICAgICAgICAgICBrZXlfcGFyYW1z
XywgZXhwaXJlc19tc18pOwotCiAgICAgICAgIC8vIEhhbmRsZSBjYWxsYmFja3Mgb24gc2lnbmFs
aW5nIHRocmVhZC4gUGFzcyBvbiB0aGUgfG1zZy0+cGRhdGF8CiAgICAgICAgIC8vICh3aGljaCBy
ZWZlcmVuY2VzIHx0aGlzfCB3aXRoIHJlZiBjb3VudGluZykgdG8gdGhhdCB0aHJlYWQuCiAgICAg
ICAgIHNpZ25hbGluZ190aHJlYWRfLT5Qb3N0KFJUQ19GUk9NX0hFUkUsIHRoaXMsIE1TR19HRU5F
UkFURV9ET05FLApAQCAtNzIsMTQgKzc0LDEyIEBAIGNsYXNzIFJUQ0NlcnRpZmljYXRlR2VuZXJh
dGlvblRhc2sgOiBwdWJsaWMgUmVmQ291bnRJbnRlcmZhY2UsCiAgICAgICAgIGJyZWFrOwogICAg
ICAgY2FzZSBNU0dfR0VORVJBVEVfRE9ORToKICAgICAgICAgUlRDX0RDSEVDSyhzaWduYWxpbmdf
dGhyZWFkXy0+SXNDdXJyZW50KCkpOwotCiAgICAgICAgIC8vIFBlcmZvcm0gY2FsbGJhY2sgd2l0
aCByZXN1bHQgaGVyZSBvbiB0aGUgc2lnbmFsaW5nIHRocmVhZC4KICAgICAgICAgaWYgKGNlcnRp
ZmljYXRlXykgewogICAgICAgICAgIGNhbGxiYWNrXy0+T25TdWNjZXNzKGNlcnRpZmljYXRlXyk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgY2FsbGJhY2tfLT5PbkZhaWx1cmUoKTsKICAg
ICAgICAgfQotCiAgICAgICAgIC8vIERlc3Ryb3kgfG1zZy0+cGRhdGF8IHdoaWNoIHJlZmVyZW5j
ZXMgfHRoaXN8IHdpdGggcmVmIGNvdW50aW5nLiBUaGlzCiAgICAgICAgIC8vIG1heSByZXN1bHQg
aW4gfHRoaXN8IGJlaW5nIGRlbGV0ZWQgLSBkbyBub3QgdG91Y2ggbWVtYmVyIHZhcmlhYmxlcwog
ICAgICAgICAvLyBhZnRlciB0aGlzIGxpbmUuCkBAIC0xMDUsOSArMTA1LDExIEBAIGNsYXNzIFJU
Q0NlcnRpZmljYXRlR2VuZXJhdGlvblRhc2sgOiBwdWJsaWMgUmVmQ291bnRJbnRlcmZhY2UsCiBz
Y29wZWRfcmVmcHRyPFJUQ0NlcnRpZmljYXRlPiBSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcjo6R2Vu
ZXJhdGVDZXJ0aWZpY2F0ZSgKICAgICBjb25zdCBLZXlQYXJhbXMmIGtleV9wYXJhbXMsCiAgICAg
Y29uc3QgYWJzbDo6b3B0aW9uYWw8dWludDY0X3Q+JiBleHBpcmVzX21zKSB7Ci0gIGlmICgha2V5
X3BhcmFtcy5Jc1ZhbGlkKCkpCisgIGlmICgha2V5X3BhcmFtcy5Jc1ZhbGlkKCkpIHsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgU1NMSWRlbnRpdHkqIGlkZW50aXR5OworICB9CisKKyAgU1NMSWRl
bnRpdHkqIGlkZW50aXR5ID0gbnVsbHB0cjsKICAgaWYgKCFleHBpcmVzX21zKSB7CiAgICAgaWRl
bnRpdHkgPSBTU0xJZGVudGl0eTo6R2VuZXJhdGUoa0lkZW50aXR5TmFtZSwga2V5X3BhcmFtcyk7
CiAgIH0gZWxzZSB7CkBAIC0xMjQsOCArMTI2LDkgQEAgc2NvcGVkX3JlZnB0cjxSVENDZXJ0aWZp
Y2F0ZT4gUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I6OkdlbmVyYXRlQ2VydGlmaWNhdGUoCiAgICAg
aWRlbnRpdHkgPSBTU0xJZGVudGl0eTo6R2VuZXJhdGVXaXRoRXhwaXJhdGlvbihrSWRlbnRpdHlO
YW1lLCBrZXlfcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2VydF9saWZldGltZV9zKTsKICAgfQotICBpZiAoIWlkZW50aXR5KQorICBp
ZiAoIWlkZW50aXR5KSB7CiAgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KICAgc3RkOjp1bmlxdWVf
cHRyPFNTTElkZW50aXR5PiBpZGVudGl0eV9zcHRyKGlkZW50aXR5KTsKICAgcmV0dXJuIFJUQ0Nl
cnRpZmljYXRlOjpDcmVhdGUoc3RkOjptb3ZlKGlkZW50aXR5X3NwdHIpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0
Y2NlcnRpZmljYXRlZ2VuZXJhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZWdlbmVyYXRvci5oCmluZGV4IGE2YzUw
M2E5ZjI5Y2YwNGQ2ZDI2YTA1NzJiZTVlOTc0NDJmZjQ1ZDIuLmZlZDA3NWU2ZGRmNGU2N2I0MzRi
YWFlYWIxYzYzMjlkYWFjM2JjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3J0Y2NlcnRpZmljYXRlZ2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcnRj
Y2VydGlmaWNhdGVnZW5lcmF0b3IuaApAQCAtMTEsNiArMTEsOCBAQAogI2lmbmRlZiBSVENfQkFT
RV9SVENDRVJUSUZJQ0FURUdFTkVSQVRPUl9IXwogI2RlZmluZSBSVENfQkFTRV9SVENDRVJUSUZJ
Q0FURUdFTkVSQVRPUl9IXwogCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKICNpbmNsdWRlICJhYnNs
L3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2FuaXRpemVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zYW5pdGl6ZXIu
aAppbmRleCAyM2E3NDhmODRmYzAyN2Q0Y2RmNWVmYmZiMjQzMGIyZjU2ZDgyZTkzLi44YWYwODI0
YjY3Yzg1YmNkZWRiM2VmYmMzNWU0MTBlNmUwMWFlOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zYW5pdGl6ZXIuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zYW5p
dGl6ZXIuaApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gRm9yIHNp
emVfdC4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5j
bHVkZSAiYWJzbC9tZXRhL3R5cGVfdHJhaXRzLmgiCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX19o
YXNfZmVhdHVyZSkKQEAgLTk4LDEwICs5OCwxMCBAQCBuYW1lc3BhY2Ugc2FuaXRpemVyX2ltcGwg
ewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBib29sIElzVHJpdmlhbGx5Q29w
eWFibGUoKSB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihzdGQ6OmlzX3RyaXZpYWxseV9j
b3B5X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc3RkOjppc190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSB8fAorICByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oYWJzbDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJs
ZTxUPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChhYnNsOjppc190cml2
aWFsbHlfY29weV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICFzdGQ6OmlzX2NvcHlfYXNzaWduYWJsZTxUPjo6dmFsdWUpICYmCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8VD46OnZhbHVlKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHNhbml0aXplcl9pbXBsCkBA
IC0xMjMsOSArMTIzLDExIEBAIGlubGluZSB2b2lkIE1zYW5NYXJrVW5pbml0aWFsaXplZChjb25z
dCBUJiBtZW0pIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVCBNc2FuVW5pbml0
aWFsaXplZChUIHQpIHsKKyNpZiBSVENfSEFTX01TQU4KICAgLy8gVE9ETyhidWdzLndlYnJ0Yy5v
cmcvODc2Mik6IFN3aXRjaCB0byBzdGQ6OmlzX3RyaXZpYWxseV9jb3B5YWJsZSB3aGVuIGl0CiAg
IC8vIGJlY29tZXMgYXZhaWxhYmxlIGluIGRvd25zdHJlYW0gcHJvamVjdHMuCiAgIHN0YXRpY19h
c3NlcnQoc2FuaXRpemVyX2ltcGw6OklzVHJpdmlhbGx5Q29weWFibGU8VD4oKSwgIiIpOworI2Vu
ZGlmCiAgIHJ0Y19Nc2FuTWFya1VuaW5pdGlhbGl6ZWQoJnQsIHNpemVvZihUKSwgMSk7CiAgIHJl
dHVybiB0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgKaW5kZXggYTU4
M2FhOTliNTMzYmIyOWY2OTczYjJmZjI5N2FlMmZiYmEzZmExZS4uYjk2MWZmNTdlODY0YTczOTMy
ODA5MzRkM2IyYzgxMmM3MWI5ZWUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zY29wZWRfcmVm
X3B0ci5oCkBAIC04LDE1NCArOCwxMiBAQAogICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICovCiAKLS8vIE9yaWdpbmFsbHkg
dGhlc2UgY2xhc3NlcyBhcmUgZnJvbSBDaHJvbWl1bS4KLS8vIGh0dHA6Ly9zcmMuY2hyb21pdW0u
b3JnL3ZpZXd2Yy9jaHJvbWUvdHJ1bmsvc3JjL2Jhc2UvbWVtb3J5L3JlZl9jb3VudGVkLmg/dmll
dz1tYXJrdXAKLQotLy8KLS8vIEEgc21hcnQgcG9pbnRlciBjbGFzcyBmb3IgcmVmZXJlbmNlIGNv
dW50ZWQgb2JqZWN0cy4gIFVzZSB0aGlzIGNsYXNzIGluc3RlYWQKLS8vIG9mIGNhbGxpbmcgQWRk
UmVmIGFuZCBSZWxlYXNlIG1hbnVhbGx5IG9uIGEgcmVmZXJlbmNlIGNvdW50ZWQgb2JqZWN0IHRv
Ci0vLyBhdm9pZCBjb21tb24gbWVtb3J5IGxlYWtzIGNhdXNlZCBieSBmb3JnZXR0aW5nIHRvIFJl
bGVhc2UgYW4gb2JqZWN0Ci0vLyByZWZlcmVuY2UuICBTYW1wbGUgdXNhZ2U6Ci0vLwotLy8gICBj
bGFzcyBNeUZvbyA6IHB1YmxpYyBSZWZDb3VudGVkPE15Rm9vPiB7Ci0vLyAgICAuLi4KLS8vICAg
fTsKLS8vCi0vLyAgIHZvaWQgc29tZV9mdW5jdGlvbigpIHsKLS8vICAgICBzY29wZWRfcmVmcHRy
PE15Rm9vPiBmb28gPSBuZXcgTXlGb28oKTsKLS8vICAgICBmb28tPk1ldGhvZChwYXJhbSk7Ci0v
LyAgICAgLy8gfGZvb3wgaXMgcmVsZWFzZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMKLS8v
ICAgfQotLy8KLS8vICAgdm9pZCBzb21lX290aGVyX2Z1bmN0aW9uKCkgewotLy8gICAgIHNjb3Bl
ZF9yZWZwdHI8TXlGb28+IGZvbyA9IG5ldyBNeUZvbygpOwotLy8gICAgIC4uLgotLy8gICAgIGZv
byA9IG51bGxwdHI7ICAvLyBleHBsaWNpdGx5IHJlbGVhc2VzIHxmb298Ci0vLyAgICAgLi4uCi0v
LyAgICAgaWYgKGZvbykKLS8vICAgICAgIGZvby0+TWV0aG9kKHBhcmFtKTsKLS8vICAgfQotLy8K
LS8vIFRoZSBhYm92ZSBleGFtcGxlcyBzaG93IGhvdyBzY29wZWRfcmVmcHRyPFQ+IGFjdHMgbGlr
ZSBhIHBvaW50ZXIgdG8gVC4KLS8vIEdpdmVuIHR3byBzY29wZWRfcmVmcHRyPFQ+IGNsYXNzZXMs
IGl0IGlzIGFsc28gcG9zc2libGUgdG8gZXhjaGFuZ2UKLS8vIHJlZmVyZW5jZXMgYmV0d2VlbiB0
aGUgdHdvIG9iamVjdHMsIGxpa2Ugc286Ci0vLwotLy8gICB7Ci0vLyAgICAgc2NvcGVkX3JlZnB0
cjxNeUZvbz4gYSA9IG5ldyBNeUZvbygpOwotLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+IGI7
Ci0vLwotLy8gICAgIGIuc3dhcChhKTsKLS8vICAgICAvLyBub3csIHxifCByZWZlcmVuY2VzIHRo
ZSBNeUZvbyBvYmplY3QsIGFuZCB8YXwgcmVmZXJlbmNlcyBudWxsLgotLy8gICB9Ci0vLwotLy8g
VG8gbWFrZSBib3RoIHxhfCBhbmQgfGJ8IGluIHRoZSBhYm92ZSBleGFtcGxlIHJlZmVyZW5jZSB0
aGUgc2FtZSBNeUZvbwotLy8gb2JqZWN0LCBzaW1wbHkgdXNlIHRoZSBhc3NpZ25tZW50IG9wZXJh
dG9yOgotLy8KLS8vICAgewotLy8gICAgIHNjb3BlZF9yZWZwdHI8TXlGb28+IGEgPSBuZXcgTXlG
b28oKTsKLS8vICAgICBzY29wZWRfcmVmcHRyPE15Rm9vPiBiOwotLy8KLS8vICAgICBiID0gYTsK
LS8vICAgICAvLyBub3csIHxhfCBhbmQgfGJ8IGVhY2ggb3duIGEgcmVmZXJlbmNlIHRvIHRoZSBz
YW1lIE15Rm9vIG9iamVjdC4KLS8vICAgfQotLy8KLQogI2lmbmRlZiBSVENfQkFTRV9TQ09QRURf
UkVGX1BUUl9IXwogI2RlZmluZSBSVENfQkFTRV9TQ09QRURfUkVGX1BUUl9IXwogCi0jaW5jbHVk
ZSA8bWVtb3J5PgotCi1uYW1lc3BhY2UgcnRjIHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1jbGFz
cyBzY29wZWRfcmVmcHRyIHsKLSBwdWJsaWM6Ci0gIHNjb3BlZF9yZWZwdHIoKSA6IHB0cl8obnVs
bHB0cikge30KLQotICBzY29wZWRfcmVmcHRyKFQqIHApIDogcHRyXyhwKSB7Ci0gICAgaWYgKHB0
cl8pCi0gICAgICBwdHJfLT5BZGRSZWYoKTsKLSAgfQotCi0gIHNjb3BlZF9yZWZwdHIoY29uc3Qg
c2NvcGVkX3JlZnB0cjxUPiYgcikgOiBwdHJfKHIucHRyXykgewotICAgIGlmIChwdHJfKQotICAg
ICAgcHRyXy0+QWRkUmVmKCk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgc2Nv
cGVkX3JlZnB0cihjb25zdCBzY29wZWRfcmVmcHRyPFU+JiByKSA6IHB0cl8oci5nZXQoKSkgewot
ICAgIGlmIChwdHJfKQotICAgICAgcHRyXy0+QWRkUmVmKCk7Ci0gIH0KLQotICAvLyBNb3ZlIGNv
bnN0cnVjdG9ycy4KLSAgc2NvcGVkX3JlZnB0cihzY29wZWRfcmVmcHRyPFQ+JiYgcikgOiBwdHJf
KHIucmVsZWFzZSgpKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICBzY29wZWRfcmVm
cHRyKHNjb3BlZF9yZWZwdHI8VT4mJiByKSA6IHB0cl8oci5yZWxlYXNlKCkpIHt9Ci0KLSAgfnNj
b3BlZF9yZWZwdHIoKSB7Ci0gICAgaWYgKHB0cl8pCi0gICAgICBwdHJfLT5SZWxlYXNlKCk7Ci0g
IH0KLQotICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBwdHJfOyB9Ci0gIG9wZXJhdG9yIFQqKCkg
Y29uc3QgeyByZXR1cm4gcHRyXzsgfQotICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
cHRyXzsgfQotCi0gIC8vIFJldHVybnMgdGhlIChwb3NzaWJseSBudWxsKSByYXcgcG9pbnRlciwg
YW5kIG1ha2VzIHRoZSBzY29wZWRfcmVmcHRyIGhvbGQgYQotICAvLyBudWxsIHBvaW50ZXIsIGFs
bCB3aXRob3V0IHRvdWNoaW5nIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHVuZGVybHlpbmcK
LSAgLy8gcG9pbnRlZC10byBvYmplY3QuIFRoZSBvYmplY3QgaXMgc3RpbGwgcmVmZXJlbmNlIGNv
dW50ZWQsIGFuZCB0aGUgY2FsbGVyIG9mCi0gIC8vIHJlbGVhc2UoKSBpcyBub3cgdGhlIHByb3Vk
IG93bmVyIG9mIG9uZSByZWZlcmVuY2UsIHNvIGl0IGlzIHJlc3BvbnNpYmxlIGZvcgotICAvLyBj
YWxsaW5nIFJlbGVhc2UoKSBvbmNlIG9uIHRoZSBvYmplY3Qgd2hlbiBubyBsb25nZXIgdXNpbmcg
aXQuCi0gIFQqIHJlbGVhc2UoKSB7Ci0gICAgVCogcmV0VmFsID0gcHRyXzsKLSAgICBwdHJfID0g
bnVsbHB0cjsKLSAgICByZXR1cm4gcmV0VmFsOwotICB9Ci0KLSAgc2NvcGVkX3JlZnB0cjxUPiYg
b3BlcmF0b3I9KFQqIHApIHsKLSAgICAvLyBBZGRSZWYgZmlyc3Qgc28gdGhhdCBzZWxmIGFzc2ln
bm1lbnQgc2hvdWxkIHdvcmsKLSAgICBpZiAocCkKLSAgICAgIHAtPkFkZFJlZigpOwotICAgIGlm
IChwdHJfKQotICAgICAgcHRyXy0+UmVsZWFzZSgpOwotICAgIHB0cl8gPSBwOwotICAgIHJldHVy
biAqdGhpczsKLSAgfQotCi0gIHNjb3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShjb25zdCBzY29w
ZWRfcmVmcHRyPFQ+JiByKSB7Ci0gICAgcmV0dXJuICp0aGlzID0gci5wdHJfOwotICB9Ci0KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gIHNjb3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShjb25z
dCBzY29wZWRfcmVmcHRyPFU+JiByKSB7Ci0gICAgcmV0dXJuICp0aGlzID0gci5nZXQoKTsKLSAg
fQotCi0gIHNjb3BlZF9yZWZwdHI8VD4mIG9wZXJhdG9yPShzY29wZWRfcmVmcHRyPFQ+JiYgcikg
ewotICAgIHNjb3BlZF9yZWZwdHI8VD4oc3RkOjptb3ZlKHIpKS5zd2FwKCp0aGlzKTsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgc2NvcGVkX3Jl
ZnB0cjxUPiYgb3BlcmF0b3I9KHNjb3BlZF9yZWZwdHI8VT4mJiByKSB7Ci0gICAgc2NvcGVkX3Jl
ZnB0cjxUPihzdGQ6Om1vdmUocikpLnN3YXAoKnRoaXMpOwotICAgIHJldHVybiAqdGhpczsKLSAg
fQotCi0gIHZvaWQgc3dhcChUKiogcHApIHsKLSAgICBUKiBwID0gcHRyXzsKLSAgICBwdHJfID0g
KnBwOwotICAgICpwcCA9IHA7Ci0gIH0KLQotICB2b2lkIHN3YXAoc2NvcGVkX3JlZnB0cjxUPiYg
cikgeyBzd2FwKCZyLnB0cl8pOyB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIFQqIHB0cl87Ci19OworLy8g
VE9ETyhidWdzLndlYnJ0Yy5vcmcvOTg4Nyk6IFRoaXMgaXMgYSBmb3J3YXJkIGhlYWRlciBmb3Ig
YmFja3dhcmRzCisvLyBjb21wYXRpYmlsaXR5LiBSZW1vdmUgd2hlbiBkb3duc3RyZWFtIGNsaWVu
dHMgYXJlIHVwZGF0ZWQuCiAKLX0gIC8vIG5hbWVzcGFjZSBydGMKKyNpbmNsdWRlICJhcGkvc2Nv
cGVkX3JlZnB0ci5oIgogCiAjZW5kaWYgIC8vIFJUQ19CQVNFX1NDT1BFRF9SRUZfUFRSX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyX2ltcGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyX2lt
cGwuY2MKaW5kZXggMTYwNjljMjVmN2FiMDY0NjcyZDk2ZjNiYjA0MjZiMTQ3OTBkMmI0Ny4uNzE3
Y2I5NTA0MDgzNWE1N2IxNDgwNWJhYjIwMjVjZmFiOTgzODU3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2VxdWVuY2VkX3Rh
c2tfY2hlY2tlcl9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3NlcXVlbmNlZF90YXNrX2NoZWNrZXJfaW1wbC5jYwpAQCAtMTQs
NiArMTQsNyBAQAogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NlcXVlbmNlZF90
YXNrX2NoZWNrZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90YXNrX3F1ZXVlLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3NlcXVlbmNlZF90YXNrX2NoZWNrZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zZXF1ZW5jZWRfdGFza19jaGVja2VyX3Vu
aXR0ZXN0LmNjCmluZGV4IDk2ZTY1NWJhYWQ0ZjM3YzM3MDZiMjNiNzJkMTQxODNlYmZkZjM4MjYu
LjdiNzI0N2M2NGMwMTVmYWQzZjE2NzdmOGFjNzEyYWZlYzliODkwMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NlcXVlbmNl
ZF90YXNrX2NoZWNrZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl91bml0dGVz
dC5jYwpAQCAtMTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAj
aW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L2V2ZW50LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9jaGVj
a2VyLmgiCkBAIC00Myw3ICs0NCw2IEBAIGNsYXNzIENhbGxDYWxsZWRTZXF1ZW50aWFsbHlPblRo
cmVhZCB7CiAgIENhbGxDYWxsZWRTZXF1ZW50aWFsbHlPblRocmVhZChib29sIGV4cGVjdF90cnVl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2VkVGFza0NoZWNrZXIq
IHNlcXVlbmNlZF90YXNrX2NoZWNrZXIpCiAgICAgICA6IGV4cGVjdF90cnVlXyhleHBlY3RfdHJ1
ZSksCi0gICAgICAgIHRocmVhZF9oYXNfcnVuX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAogICAgICAg
ICB0aHJlYWRfKCZSdW4sIHRoaXMsICJjYWxsX2RvX3N0dWZmX29uX3RocmVhZCIpLAogICAgICAg
ICBzZXF1ZW5jZWRfdGFza19jaGVja2VyXyhzZXF1ZW5jZWRfdGFza19jaGVja2VyKSB7CiAgICAg
dGhyZWFkXy5TdGFydCgpOwpAQCAtNzcsNyArNzcsNiBAQCBjbGFzcyBEZWxldGVTZXF1ZW5jZWRD
aGVja2VyT25UaHJlYWQgewogICBleHBsaWNpdCBEZWxldGVTZXF1ZW5jZWRDaGVja2VyT25UaHJl
YWQoCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VxdWVuY2VkVGFza0NoZWNrZXI+IHNlcXVlbmNl
ZF90YXNrX2NoZWNrZXIpCiAgICAgICA6IHRocmVhZF8oJlJ1biwgdGhpcywgImRlbGV0ZV9zZXF1
ZW5jZWRfdGFza19jaGVja2VyX29uX3RocmVhZCIpLAotICAgICAgICB0aHJlYWRfaGFzX3J1bl9l
dmVudF8oZmFsc2UsIGZhbHNlKSwKICAgICAgICAgc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl8oc3Rk
Ojptb3ZlKHNlcXVlbmNlZF90YXNrX2NoZWNrZXIpKSB7CiAgICAgdGhyZWFkXy5TdGFydCgpOwog
ICB9CkBAIC0xMTgsNyArMTE3LDcgQEAgdm9pZCBSdW5NZXRob2RPbkRpZmZlcmVudFRhc2tRdWV1
ZShib29sIGV4cGVjdF90cnVlKSB7CiAKICAgc3RhdGljIGNvbnN0IGNoYXIga1F1ZXVlTmFtZVtd
ID0gIk1ldGhvZE5vdEFsbG93ZWRPbkRpZmZlcmVudFRxIjsKICAgVGFza1F1ZXVlIHF1ZXVlKGtR
dWV1ZU5hbWUpOwotICBFdmVudCBkb25lX2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGRv
bmVfZXZlbnQ7CiAgIHF1ZXVlLlBvc3RUYXNrKFsmc2VxdWVuY2VkX3Rhc2tfY2hlY2tlciwgJmRv
bmVfZXZlbnQsIGV4cGVjdF90cnVlXSB7CiAgICAgaWYgKGV4cGVjdF90cnVlKQogICAgICAgRVhQ
RUNUX1RSVUUoc2VxdWVuY2VkX3Rhc2tfY2hlY2tlci0+Q2FsbGVkU2VxdWVudGlhbGx5KCkpOwpA
QCAtMTM1LDcgKzEzNCw3IEBAIHZvaWQgRGV0YWNoVGhlbkNhbGxGcm9tRGlmZmVyZW50VGFza1F1
ZXVlKGJvb2wgZXhwZWN0X3RydWUpIHsKIAogICBzZXF1ZW5jZWRfdGFza19jaGVja2VyLT5EZXRh
Y2goKTsKIAotICBFdmVudCBkb25lX2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGRvbmVf
ZXZlbnQ7CiAgIFRhc2tRdWV1ZSBxdWV1ZTEoIkRldGFjaFRoZW5DYWxsRnJvbURpZmZlcmVudFRh
c2tRdWV1ZUltcGwxIik7CiAgIHF1ZXVlMS5Qb3N0VGFzayhbJnNlcXVlbmNlZF90YXNrX2NoZWNr
ZXIsICZkb25lX2V2ZW50XSB7CiAgICAgRVhQRUNUX1RSVUUoc2VxdWVuY2VkX3Rhc2tfY2hlY2tl
ci0+Q2FsbGVkU2VxdWVudGlhbGx5KCkpOwpAQCAtMTkzLDcgKzE5Miw3IEBAIFRFU1QoU2VxdWVu
Y2VkVGFza0NoZWNrZXJUZXN0LCBEZXRhY2hGcm9tVGhyZWFkQW5kVXNlT25UYXNrUXVldWUpIHsK
ICAgc2VxdWVuY2VkX3Rhc2tfY2hlY2tlci0+RGV0YWNoKCk7CiAgIHN0YXRpYyBjb25zdCBjaGFy
IGtRdWV1ZU5hbWVbXSA9ICJEZXRhY2hGcm9tVGhyZWFkQW5kVXNlT25UYXNrUXVldWUiOwogICBU
YXNrUXVldWUgcXVldWUoa1F1ZXVlTmFtZSk7Ci0gIEV2ZW50IGRvbmVfZXZlbnQoZmFsc2UsIGZh
bHNlKTsKKyAgRXZlbnQgZG9uZV9ldmVudDsKICAgcXVldWUuUG9zdFRhc2soWyZzZXF1ZW5jZWRf
dGFza19jaGVja2VyLCAmZG9uZV9ldmVudF0gewogICAgIEVYUEVDVF9UUlVFKHNlcXVlbmNlZF90
YXNrX2NoZWNrZXItPkNhbGxlZFNlcXVlbnRpYWxseSgpKTsKICAgICBkb25lX2V2ZW50LlNldCgp
OwpAQCAtMjAzLDcgKzIwMiw3IEBAIFRFU1QoU2VxdWVuY2VkVGFza0NoZWNrZXJUZXN0LCBEZXRh
Y2hGcm9tVGhyZWFkQW5kVXNlT25UYXNrUXVldWUpIHsKIAogVEVTVChTZXF1ZW5jZWRUYXNrQ2hl
Y2tlclRlc3QsIERldGFjaEZyb21UYXNrUXVldWVBbmRVc2VPblRocmVhZCkgewogICBUYXNrUXVl
dWUgcXVldWUoIkRldGFjaEZyb21UYXNrUXVldWVBbmRVc2VPblRocmVhZCIpOwotICBFdmVudCBk
b25lX2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGRvbmVfZXZlbnQ7CiAgIHF1ZXVlLlBv
c3RUYXNrKFsmZG9uZV9ldmVudF0gewogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXF1ZW5jZWRUYXNr
Q2hlY2tlcj4gc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcigKICAgICAgICAgbmV3IFNlcXVlbmNlZFRh
c2tDaGVja2VyKCkpOwpAQCAtMjcxLDcgKzI3MCw3IEBAIHZvaWQgVGVzdEFubm90YXRpb25zT25X
cm9uZ1F1ZXVlKCkgewogICBUZXN0QW5ub3RhdGlvbnMgYW5ub3RhdGlvbnM7CiAgIHN0YXRpYyBj
b25zdCBjaGFyIGtRdWV1ZU5hbWVbXSA9ICJUZXN0QW5ub3RhdGlvbnNPbldyb25nUXVldWVEZWJ1
ZyI7CiAgIFRhc2tRdWV1ZSBxdWV1ZShrUXVldWVOYW1lKTsKLSAgRXZlbnQgZG9uZV9ldmVudChm
YWxzZSwgZmFsc2UpOworICBFdmVudCBkb25lX2V2ZW50OwogICBxdWV1ZS5Qb3N0VGFzayhbJmFu
bm90YXRpb25zLCAmZG9uZV9ldmVudF0gewogICAgIGFubm90YXRpb25zLk1vZGlmeVRlc3RWYXIo
KTsKICAgICBkb25lX2V2ZW50LlNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2lnbmFsdGhyZWFkLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc2lnbmFsdGhyZWFk
LmNjCmluZGV4IGViNzlkYzg0ZmU4ZTU0NjVkYWMxZWU2ZTg5NDRkMGJlNzFiNGVmYjYuLjVkZDkz
ODc5MzE1YzM5ZWFkMGVmMDY1ZmYzYzRmOTIxYjk3MWY4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NpZ25hbHRocmVhZC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zaWduYWx0aHJlYWQuY2MKQEAgLTEwLDggKzEwLDEzIEBACiAKICNpbmNsdWRlICJydGNfYmFz
ZS9zaWduYWx0aHJlYWQuaCIKIAorI2luY2x1ZGUgPG1lbW9yeT4KKwogI2luY2x1ZGUgImFic2wv
bWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL2xvY2F0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbnVsbHNvY2tldHNlcnZl
ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldHNlcnZlci5oIgogCiBuYW1lc3BhY2UgcnRj
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc2lnbmFsdGhyZWFkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zaWduYWx0aHJlYWQuaAppbmRleCAwMjFjZjRkNzhkZjhl
NGEzNWRiOGQ2YjM3Mjc4N2JmYzEwNzgzMGQzLi45MjA4ZTJjMjQ2Nzc4NzUzN2UwODNiNWFkOWY3
M2I1ZjgyNDVkMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zaWduYWx0aHJlYWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zaWduYWx0aHJlYWQuaApAQCAtMTUs
OSArMTUsMTIgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udWxsc29ja2V0
c2VydmVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvbWVzc2FnZWhhbmRsZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdl
cXVldWUuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aGlyZF9wYXJ0eS9zaWdzbG90L3NpZ3Nsb3Qu
aCIKICNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJl
YWRfYW5ub3RhdGlvbnMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tl
dC5jYwppbmRleCBhOTc0OWE0NzNlZTExODFmZTVjOTgwNGU4MzE0MTk3YmM0Y2IxYjFmLi5mMTli
MzQ0MTJmNGE1OGY5NmRjMWEwMTU1ZWUyMTAyMjYwZmI1YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXQuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29j
a2V0LmNjCkBAIC0xMiwxNiArMTIsNCBAQAogCiBuYW1lc3BhY2UgcnRjIHsKIAotUGFja2V0SW5m
bzo6UGFja2V0SW5mbygpID0gZGVmYXVsdDsKLVBhY2tldEluZm86OlBhY2tldEluZm8oY29uc3Qg
UGFja2V0SW5mbyYgaW5mbykgPSBkZWZhdWx0OwotUGFja2V0SW5mbzo6flBhY2tldEluZm8oKSA9
IGRlZmF1bHQ7Ci0KLVNlbnRQYWNrZXQ6OlNlbnRQYWNrZXQoKSA9IGRlZmF1bHQ7Ci1TZW50UGFj
a2V0OjpTZW50UGFja2V0KGludDY0X3QgcGFja2V0X2lkLCBpbnQ2NF90IHNlbmRfdGltZV9tcykK
LSAgICA6IHBhY2tldF9pZChwYWNrZXRfaWQpLCBzZW5kX3RpbWVfbXMoc2VuZF90aW1lX21zKSB7
fQotU2VudFBhY2tldDo6U2VudFBhY2tldChpbnQ2NF90IHBhY2tldF9pZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBzZW5kX3RpbWVfbXMsCi0gICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHJ0Yzo6UGFja2V0SW5mbyYgaW5mbykKLSAgICA6IHBhY2tldF9pZChwYWNrZXRfaWQp
LCBzZW5kX3RpbWVfbXMoc2VuZF90aW1lX21zKSwgaW5mbyhpbmZvKSB7fQotCiB9ICAvLyBuYW1l
c3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldC5oCmluZGV4IGI4MjkwYmIxMzliMmU2OWE1N2Iy
MDc0ZWE1NzYzNTg5ZDQwNjY5Y2YuLmU3ZTgyMTA4Y2QyOWQyYWJkYjMxOWJkMjM2ZDliNjQ3NjEx
YWM1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NvY2tldC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldC5oCkBAIC0yNSw4ICsyNSw4IEBACiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvd2luMzIuaCIKICNlbmRpZgogCi0jaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRp
b25hbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9uZXR3b3JrL3NlbnRfcGFja2V0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29j
a2V0YWRkcmVzcy5oIgogCiAvLyBSYXRoZXIgdGhhbiBjb252ZXJ0aW5nIGVycm9ycyBpbnRvIGEg
cHJpdmF0ZSBuYW1lc3BhY2UsCkBAIC0xMjMsNTAgKzEyMyw2IEBAIGlubGluZSBib29sIElzQmxv
Y2tpbmdFcnJvcihpbnQgZSkgewogICByZXR1cm4gKGUgPT0gRVdPVUxEQkxPQ0spIHx8IChlID09
IEVBR0FJTikgfHwgKGUgPT0gRUlOUFJPR1JFU1MpOwogfQogCi1lbnVtIGNsYXNzIFBhY2tldFR5
cGUgewotICBrVW5rbm93biwKLSAga0RhdGEsCi0gIGtJY2VDb25uZWN0aXZpdHlDaGVjaywKLSAg
a0ljZUNvbm5lY3Rpdml0eUNoZWNrUmVzcG9uc2UsCi0gIGtTdHVuTWVzc2FnZSwKLSAga1R1cm5N
ZXNzYWdlLAotfTsKLQotZW51bSBjbGFzcyBQYWNrZXRJbmZvUHJvdG9jb2xUeXBlIHsKLSAga1Vu
a25vd24sCi0gIGtVZHAsCi0gIGtUY3AsCi0gIGtTc2x0Y3AsCi0gIGtUbHMsCi19OwotCi1zdHJ1
Y3QgUGFja2V0SW5mbyB7Ci0gIFBhY2tldEluZm8oKTsKLSAgUGFja2V0SW5mbyhjb25zdCBQYWNr
ZXRJbmZvJiBpbmZvKTsKLSAgflBhY2tldEluZm8oKTsKLQotICBQYWNrZXRUeXBlIHBhY2tldF90
eXBlID0gUGFja2V0VHlwZTo6a1Vua25vd247Ci0gIFBhY2tldEluZm9Qcm90b2NvbFR5cGUgcHJv
dG9jb2wgPSBQYWNrZXRJbmZvUHJvdG9jb2xUeXBlOjprVW5rbm93bjsKLSAgLy8gQSB1bmlxdWUg
aWQgYXNzaWduZWQgYnkgdGhlIG5ldHdvcmsgbWFuYWdlciwgYW5kIGFic2w6Om51bGxvcHQgaWYg
bm90IHNldC4KLSAgYWJzbDo6b3B0aW9uYWw8dWludDE2X3Q+IG5ldHdvcmtfaWQ7Ci0gIHNpemVf
dCBwYWNrZXRfc2l6ZV9ieXRlcyA9IDA7Ci0gIHNpemVfdCB0dXJuX292ZXJoZWFkX2J5dGVzID0g
MDsKLSAgU29ja2V0QWRkcmVzcyBsb2NhbF9zb2NrZXRfYWRkcmVzczsKLSAgU29ja2V0QWRkcmVz
cyByZW1vdGVfc29ja2V0X2FkZHJlc3M7Ci19OwotCi1zdHJ1Y3QgU2VudFBhY2tldCB7Ci0gIFNl
bnRQYWNrZXQoKTsKLSAgU2VudFBhY2tldChpbnQ2NF90IHBhY2tldF9pZCwgaW50NjRfdCBzZW5k
X3RpbWVfbXMpOwotICBTZW50UGFja2V0KGludDY0X3QgcGFja2V0X2lkLAotICAgICAgICAgICAg
IGludDY0X3Qgc2VuZF90aW1lX21zLAotICAgICAgICAgICAgIGNvbnN0IHJ0Yzo6UGFja2V0SW5m
byYgaW5mbyk7Ci0KLSAgaW50NjRfdCBwYWNrZXRfaWQgPSAtMTsKLSAgaW50NjRfdCBzZW5kX3Rp
bWVfbXMgPSAtMTsKLSAgcnRjOjpQYWNrZXRJbmZvIGluZm87Ci19OwotCiAvLyBHZW5lcmFsIGlu
dGVyZmFjZSBmb3IgdGhlIHNvY2tldCBpbXBsZW1lbnRhdGlvbnMgb2YgdmFyaW91cyBuZXR3b3Jr
cy4gIFRoZQogLy8gbWV0aG9kcyBtYXRjaCB0aG9zZSBvZiBub3JtYWwgVU5JWCBzb2NrZXRzIHZl
cnkgY2xvc2VseS4KIGNsYXNzIFNvY2tldCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGFwdGVycy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFk
YXB0ZXJzLmNjCmluZGV4IGFjZDliNjMzODU4Yzg4MTRmNmQ0YjhmODZjYTFkOWQzZDUxODRlODEu
Ljk0NTE5Mjg4OTE0MmE4ZTA0ZWQzZjlkM2Q3OGNhYjJkZWY4NTJiNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFk
YXB0ZXJzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmNjCkBAIC0xMywyNCArMTMsMjkgQEAKICNlbmRpZgog
CiAjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHRpbWUuaD4KIAogI2lmIGRlZmlu
ZWQoV0VCUlRDX1dJTikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d2luc29jazIu
aD4KICNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorCiAjZGVmaW5lIFNFQ1VSSVRZX1dJTjMyCiAjaW5j
bHVkZSA8c2VjdXJpdHkuaD4KICNlbmRpZgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCisjaW5j
bHVkZSAiYWJzbC9zdHJpbmdzL21hdGNoLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYnVmZmVyLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvYnl0ZWJ1ZmZlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2h0dHBjb21tb24uaCIKICNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0YWRhcHRlcnMuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zdHJp
bmdzL3N0cmluZ19idWlsZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS96ZXJvX21lbW9yeS5oIgpAQCAtNDU3LDcgKzQ2Miw3IEBAIHZv
aWQgQXN5bmNIdHRwc1Byb3h5U29ja2V0OjpQcm9jZXNzTGluZShjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuKSB7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgIH0gZWxzZSBpZiAoKHN0YXRlXyA9PSBQ
U19BVVRIRU5USUNBVEUpICYmCi0gICAgICAgICAgICAgKF9zdHJuaWNtcChkYXRhLCAiUHJveHkt
QXV0aGVudGljYXRlOiIsIDE5KSA9PSAwKSkgeworICAgICAgICAgICAgIGFic2w6OlN0YXJ0c1dp
dGhJZ25vcmVDYXNlKGRhdGEsICJQcm94eS1BdXRoZW50aWNhdGU6IikpIHsKICAgICBzdGQ6OnN0
cmluZyByZXNwb25zZSwgYXV0aF9tZXRob2Q7CiAgICAgc3dpdGNoIChIdHRwQXV0aGVudGljYXRl
KGRhdGEgKyAxOSwgbGVuIC0gMTksIHByb3h5XywgIkNPTk5FQ1QiLCAiLyIsIHVzZXJfLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzXywgY29udGV4dF8sIHJlc3BvbnNlLCBhdXRo
X21ldGhvZCkpIHsKQEAgLTQ4NSwxMiArNDkwLDEyIEBAIHZvaWQgQXN5bmNIdHRwc1Byb3h5U29j
a2V0OjpQcm9jZXNzTGluZShjaGFyKiBkYXRhLCBzaXplX3QgbGVuKSB7CiAgICAgICAgIHVua25v
d25fbWVjaGFuaXNtc18uY2xlYXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICB9IGVsc2Ug
aWYgKF9zdHJuaWNtcChkYXRhLCAiQ29udGVudC1MZW5ndGg6IiwgMTUpID09IDApIHsKKyAgfSBl
bHNlIGlmIChhYnNsOjpTdGFydHNXaXRoSWdub3JlQ2FzZShkYXRhLCAiQ29udGVudC1MZW5ndGg6
IikpIHsKICAgICBjb250ZW50X2xlbmd0aF8gPSBzdHJ0b3VsKGRhdGEgKyAxNSwgMCwgMCk7Ci0g
IH0gZWxzZSBpZiAoX3N0cm5pY21wKGRhdGEsICJQcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZl
IiwgMjgpID09IDApIHsKKyAgfSBlbHNlIGlmIChhYnNsOjpTdGFydHNXaXRoSWdub3JlQ2FzZShk
YXRhLCAiUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZSIpKSB7CiAgICAgZXhwZWN0X2Nsb3Nl
XyA9IGZhbHNlOwogICAgIC8qCi0gIH0gZWxzZSBpZiAoX3N0cm5pY21wKGRhdGEsICJDb25uZWN0
aW9uOiBjbG9zZSIsIDE3KSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoYWJzbDo6U3RhcnRzV2l0aEln
bm9yZUNhc2UoZGF0YSwgIkNvbm5lY3Rpb246IGNsb3NlIikgewogICAgIGV4cGVjdF9jbG9zZV8g
PSB0cnVlOwogICAgICovCiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGFwdGVycy5o
CmluZGV4IGFkODhmZTZiNmZiOGNmMjAwM2JlZWY4MTUzOWMzZTIyMjM4MmQxMGYuLjA2MmY3NWMz
ZmViMWZmZmMzMDA5NDQxNDQ3MTllZWU1MjM4YTc5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
c29ja2V0YWRhcHRlcnMuaApAQCAtMTEsMTMgKzExLDExIEBACiAjaWZuZGVmIFJUQ19CQVNFX1NP
Q0tFVEFEQVBURVJTX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1NPQ0tFVEFEQVBURVJTX0hfCiAKLSNp
bmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5
bmNzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY3J5cHRzdHJpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5n
LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGRyZXNzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGRyZXNz
LmgKaW5kZXggYmZmOGU3NjQ5NWViNzRiY2E1ODk4MjRiOGVkOTMwMjFjY2YyMGIyMS4uYjFhNTJi
OTM3MTZhOGUyNGNhMjhiN2U1ZGVkMTVlZDk5NWVmZDkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRkcmVzcy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3NvY2tldGFkZHJlc3MuaApAQCAtMTUsNyArMTUsNiBAQAogI2lmZGVmIFVOSVRfVEVTVAogI2lu
Y2x1ZGUgPG9zdHJlYW0+ICAvLyBuby1wcmVzdWJtaXQtY2hlY2sgVE9ETyh3ZWJydGM6ODk4MikK
ICNlbmRpZiAgICAgICAgICAgICAgLy8gVU5JVF9URVNUCi0jaW5jbHVkZSA8dmVjdG9yPgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2lwYWRkcmVzcy5oIgogCiAjdW5kZWYgU2V0UG9ydApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29j
a2V0YWRkcmVzc3BhaXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NvY2tldGFkZHJlc3NwYWlyLmgKaW5kZXggNWZmMTQ4YTc1ZDg3NjA0ZTFk
YjFmYzYxZDg0OTBjMWQyZGY3MjJlOS4uNjY5MTM4NmQzYWJmZjhiOWU4ZTQzMGMzYjczNTVkMjk0
NzlmOWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvc29ja2V0YWRkcmVzc3BhaXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRhZGRyZXNzcGFpci5oCkBA
IC0xMSw2ICsxMSw4IEBACiAjaWZuZGVmIFJUQ19CQVNFX1NPQ0tFVEFERFJFU1NQQUlSX0hfCiAj
ZGVmaW5lIFJUQ19CQVNFX1NPQ0tFVEFERFJFU1NQQUlSX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KKwogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldGFkZHJlc3MuaCIKIAogbmFtZXNwYWNlIHJ0
YyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zb2NrZXRzdHJlYW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zb2NrZXRzdHJlYW0uY2MKaW5kZXggMmVhMWNlYzBhYzcz
NmQzNTUwMTEwM2VkYTJlZDA2ZTgxODE1NzRlYy4uODk3ODQwNGNmNDVmMDJkOWQwOTAxNmE2Zjdj
MTU0OTlkMmFiZjQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc29ja2V0c3RyZWFtLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NvY2tldHN0cmVhbS5jYwpAQCAt
MTEsNiArMTEsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldHN0cmVhbS5oIgogCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc29ja2V0LmgiCiAK
IG5hbWVzcGFjZSBydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xhZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xhZGFwdGVyLmgKaW5kZXggNDg0
M2QyNjRmY2NjZDM2NmQ0ODBmNjQzODYxNDEwM2I5ZWE5Nzg1Yi4uN2ViZWRjYWRmMDI2ZmVmOWFi
OWIxYzEzM2FkMzU5OGEzNzU0Y2UwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsYWRhcHRlci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGFkYXB0ZXIuaApA
QCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2UvYXN5bmNzb2NrZXQuaCIKICNp
bmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Nz
bGlkZW50aXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oIgogCiBu
YW1lc3BhY2UgcnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGFkYXB0ZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xhZGFwdGVyX3VuaXR0
ZXN0LmNjCmluZGV4IGVjNTMyYjFjNDQyNjE4ZmYyZDc0ZjU1OGQ1NmM2MDJmNmZkZTI4MDkuLmM4
NGM2NjhjN2UxYTgxMjgxYWY4OTRmMjZlMDVmYjQ1YWZiODVmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGFkYXB0ZXJf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3NsYWRhcHRlcl91bml0dGVzdC5jYwpAQCAtMTUsNiArMTUsNyBAQAogI2lu
Y2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2d1bml0Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvaXBhZGRyZXNzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbWVz
c2FnZWRpZ2VzdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NvY2tldHN0cmVhbS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3NzbGFkYXB0ZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zc2xpZGVudGl0
eS5oIgpAQCAtMjY2LDcgKzI2Nyw3IEBAIGNsYXNzIFNTTEFkYXB0ZXJUZXN0RHVtbXlTZXJ2ZXIg
OiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgIC8vIChlLmcuIGEgV2ViUlRDLWJh
c2VkIGFwcGxpY2F0aW9uIGFuZCBhbiBSRkMgNTc2NiBUVVJOIHNlcnZlciksIHdoZXJlCiAgICAg
Ly8gY2xpZW50cyBhcmUgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgYSBjZXJ0aWZpY2F0ZSBkdXJp
bmcgaGFuZHNoYWtlLgogICAgIC8vIEFjY29yZGluZ2x5LCB3ZSBtdXN0IGRpc2FibGUgY2xpZW50
IGF1dGhlbnRpY2F0aW9uIGhlcmUuCi0gICAgc3NsX3N0cmVhbV9hZGFwdGVyXy0+c2V0X2NsaWVu
dF9hdXRoX2VuYWJsZWQoZmFsc2UpOworICAgIHNzbF9zdHJlYW1fYWRhcHRlcl8tPlNldENsaWVu
dEF1dGhFbmFibGVkRm9yVGVzdGluZyhmYWxzZSk7CiAKICAgICBzc2xfc3RyZWFtX2FkYXB0ZXJf
LT5TZXRJZGVudGl0eShzc2xfaWRlbnRpdHlfLT5HZXRSZWZlcmVuY2UoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Nz
bGNlcnRpZmljYXRlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuY2MKaW5kZXggOWEzOGZjMDM4NGI3MDQ5NDJhMGYy
OGU4N2ExMzcwMjk3YmMyOWNkNS4uOTM0ODQ4ZmI3MzA0NTdiMzk3OGY5MWExNzJjZGVkNjc3NTFl
ZWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuY2MKQEAgLTEwLDEz
ICsxMCwxMiBAQAogCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsY2VydGlmaWNhdGUuaCIKIAotI2lu
Y2x1ZGUgPGN0aW1lPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdHJpbmc+CiAj
aW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
ICNpbmNsdWRlICJydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9zc2xmaW5nZXJwcmludC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3BhcnR5L2Jh
c2U2NC9iYXNlNjQuaCIKQEAgLTMxLDcgKzMwLDcgQEAgU1NMQ2VydGlmaWNhdGVTdGF0czo6U1NM
Q2VydGlmaWNhdGVTdGF0cygKICAgICBzdGQ6OnN0cmluZyYmIGZpbmdlcnByaW50LAogICAgIHN0
ZDo6c3RyaW5nJiYgZmluZ2VycHJpbnRfYWxnb3JpdGhtLAogICAgIHN0ZDo6c3RyaW5nJiYgYmFz
ZTY0X2NlcnRpZmljYXRlLAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZVN0YXRz
PiYmIGlzc3VlcikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGVTdGF0cz4gaXNz
dWVyKQogICAgIDogZmluZ2VycHJpbnQoc3RkOjptb3ZlKGZpbmdlcnByaW50KSksCiAgICAgICBm
aW5nZXJwcmludF9hbGdvcml0aG0oc3RkOjptb3ZlKGZpbmdlcnByaW50X2FsZ29yaXRobSkpLAog
ICAgICAgYmFzZTY0X2NlcnRpZmljYXRlKHN0ZDo6bW92ZShiYXNlNjRfY2VydGlmaWNhdGUpKSwK
QEAgLTU1LDggKzU0LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlU3RhdHM+IFNT
TENlcnRpZmljYXRlOjpHZXRTdGF0cygpIGNvbnN0IHsKICAgLy8gfFNTTENlcnRpZmljYXRlOjpH
ZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG18IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCiAgIC8v
IGltcGxlbWVudGF0aW9uIG9mIHxTU0xDZXJ0aWZpY2F0ZTo6Q29tcHV0ZURpZ2VzdHwuIFRoaXMg
Y3VycmVudGx5IGhhcHBlbnMKICAgLy8gd2l0aCBNRDUtIGFuZCBTSEEtMjI0LXNpZ25lZCBjZXJ0
aWZpY2F0ZXMgd2hlbiBsaW5rZWQgdG8gbGliTlNTLgotICBzdGQ6OnVuaXF1ZV9wdHI8U1NMRmlu
Z2VycHJpbnQ+IHNzbF9maW5nZXJwcmludCgKLSAgICAgIFNTTEZpbmdlcnByaW50OjpDcmVhdGUo
ZGlnZXN0X2FsZ29yaXRobSwgdGhpcykpOworICBzdGQ6OnVuaXF1ZV9wdHI8U1NMRmluZ2VycHJp
bnQ+IHNzbF9maW5nZXJwcmludCA9CisgICAgICBTU0xGaW5nZXJwcmludDo6Q3JlYXRlKGRpZ2Vz
dF9hbGdvcml0aG0sICp0aGlzKTsKICAgaWYgKCFzc2xfZmluZ2VycHJpbnQpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiAgIHN0ZDo6c3RyaW5nIGZpbmdlcnByaW50ID0gc3NsX2ZpbmdlcnByaW50LT5H
ZXRSZmM0NTcyRmluZ2VycHJpbnQoKTsKQEAgLTcxLDQ5ICs3MCwzMCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8U1NMQ2VydGlmaWNhdGVTdGF0cz4gU1NMQ2VydGlmaWNhdGU6OkdldFN0YXRzKCkgY29uc3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
b3ZlKGRlcl9iYXNlNjQpLCBudWxscHRyKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRp
ZmljYXRlPiBTU0xDZXJ0aWZpY2F0ZTo6R2V0VW5pcXVlUmVmZXJlbmNlKCkgY29uc3QgewotICBy
ZXR1cm4gYWJzbDo6V3JhcFVuaXF1ZShHZXRSZWZlcmVuY2UoKSk7Ci19Ci0KIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KIC8vIFNTTENlcnRDaGFpbgogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi1TU0xDZXJ0Q2hhaW46OlNTTENl
cnRDaGFpbihzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+PiBjZXJ0
cykKLSAgICA6IGNlcnRzXyhzdGQ6Om1vdmUoY2VydHMpKSB7fQotCi1TU0xDZXJ0Q2hhaW46OlNT
TENlcnRDaGFpbihjb25zdCBzdGQ6OnZlY3RvcjxTU0xDZXJ0aWZpY2F0ZSo+JiBjZXJ0cykgewot
ICBSVENfRENIRUNLKCFjZXJ0cy5lbXB0eSgpKTsKLSAgY2VydHNfLnJlc2l6ZShjZXJ0cy5zaXpl
KCkpOwotICBzdGQ6OnRyYW5zZm9ybSgKLSAgICAgIGNlcnRzLmJlZ2luKCksIGNlcnRzLmVuZCgp
LCBjZXJ0c18uYmVnaW4oKSwKLSAgICAgIFtdKGNvbnN0IFNTTENlcnRpZmljYXRlKiBjZXJ0KSAt
PiBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IHsKLSAgICAgICAgcmV0dXJuIGNlcnQt
PkdldFVuaXF1ZVJlZmVyZW5jZSgpOwotICAgICAgfSk7CitTU0xDZXJ0Q2hhaW46OlNTTENlcnRD
aGFpbihzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IHNpbmdsZV9jZXJ0KSB7CisgIGNl
cnRzXy5wdXNoX2JhY2soc3RkOjptb3ZlKHNpbmdsZV9jZXJ0KSk7CiB9CiAKLVNTTENlcnRDaGFp
bjo6U1NMQ2VydENoYWluKGNvbnN0IFNTTENlcnRpZmljYXRlKiBjZXJ0KSB7Ci0gIGNlcnRzXy5w
dXNoX2JhY2soY2VydC0+R2V0VW5pcXVlUmVmZXJlbmNlKCkpOwotfQorU1NMQ2VydENoYWluOjpT
U0xDZXJ0Q2hhaW4oc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPj4g
Y2VydHMpCisgICAgOiBjZXJ0c18oc3RkOjptb3ZlKGNlcnRzKSkge30KIAogU1NMQ2VydENoYWlu
OjpTU0xDZXJ0Q2hhaW4oU1NMQ2VydENoYWluJiYgcmhzKSA9IGRlZmF1bHQ7CiAKIFNTTENlcnRD
aGFpbiYgU1NMQ2VydENoYWluOjpvcGVyYXRvcj0oU1NMQ2VydENoYWluJiYpID0gZGVmYXVsdDsK
IAotU1NMQ2VydENoYWluOjp+U1NMQ2VydENoYWluKCkge30KK1NTTENlcnRDaGFpbjo6flNTTENl
cnRDaGFpbigpID0gZGVmYXVsdDsKIAotU1NMQ2VydENoYWluKiBTU0xDZXJ0Q2hhaW46OkNvcHko
KSBjb25zdCB7CitzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydENoYWluPiBTU0xDZXJ0Q2hhaW46OkNs
b25lKCkgY29uc3QgewogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNh
dGU+PiBuZXdfY2VydHMoY2VydHNfLnNpemUoKSk7Ci0gIHN0ZDo6dHJhbnNmb3JtKGNlcnRzXy5i
ZWdpbigpLCBjZXJ0c18uZW5kKCksIG5ld19jZXJ0cy5iZWdpbigpLAotICAgICAgICAgICAgICAg
ICBbXShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+JiBjZXJ0KQotICAgICAg
ICAgICAgICAgICAgICAgLT4gc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiB7Ci0gICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNlcnQtPkdldFVuaXF1ZVJlZmVyZW5jZSgpOwotICAgICAg
ICAgICAgICAgICB9KTsKLSAgcmV0dXJuIG5ldyBTU0xDZXJ0Q2hhaW4oc3RkOjptb3ZlKG5ld19j
ZXJ0cykpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydENoYWluPiBTU0xDZXJ0Q2hhaW46
OlVuaXF1ZUNvcHkoKSBjb25zdCB7Ci0gIHJldHVybiBhYnNsOjpXcmFwVW5pcXVlKENvcHkoKSk7
CisgIHN0ZDo6dHJhbnNmb3JtKAorICAgICAgY2VydHNfLmJlZ2luKCksIGNlcnRzXy5lbmQoKSwg
bmV3X2NlcnRzLmJlZ2luKCksCisgICAgICBbXShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2Vy
dGlmaWNhdGU+JiBjZXJ0KQorICAgICAgICAgIC0+IHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZp
Y2F0ZT4geyByZXR1cm4gY2VydC0+Q2xvbmUoKTsgfSk7CisgIHJldHVybiBhYnNsOjptYWtlX3Vu
aXF1ZTxTU0xDZXJ0Q2hhaW4+KHN0ZDo6bW92ZShuZXdfY2VydHMpKTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPFNTTENlcnRpZmljYXRlU3RhdHM+IFNTTENlcnRDaGFpbjo6R2V0U3RhdHMoKSBjb25z
dCB7CkBAIC0xMzUsNyArMTE1LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlU3Rh
dHM+IFNTTENlcnRDaGFpbjo6R2V0U3RhdHMoKSBjb25zdCB7CiB9CiAKIC8vIHN0YXRpYwotU1NM
Q2VydGlmaWNhdGUqIFNTTENlcnRpZmljYXRlOjpGcm9tUEVNU3RyaW5nKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwZW1fc3RyaW5nKSB7CitzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IFNTTENl
cnRpZmljYXRlOjpGcm9tUEVNU3RyaW5nKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwZW1fc3Ry
aW5nKSB7CiAgIHJldHVybiBPcGVuU1NMQ2VydGlmaWNhdGU6OkZyb21QRU1TdHJpbmcocGVtX3N0
cmluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oCmluZGV4IDI5
YzRkYjU4ZWY1NmM4MDAzNWU4MzJjZDI0MmNhZDcyZTlkYzhkZDQuLmViODFjMjA5ZTRmMGMzMjY1
NjY0ZTAxNWQ3YTczM2M0NDgwNjAwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsY2VydGlm
aWNhdGUuaApAQCAtMTUsMTUgKzE1LDE0IEBACiAjaWZuZGVmIFJUQ19CQVNFX1NTTENFUlRJRklD
QVRFX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1NTTENFUlRJRklDQVRFX0hfCiAKLSNpbmNsdWRlIDxh
bGdvcml0aG0+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNp
bmNsdWRlICJydGNfYmFzZS9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1Y3Rv
cm1hZ2ljLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZWRpZ2VzdC5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL3RpbWV1dGlscy5oIgogCiBuYW1lc3BhY2UgcnRjIHsKIApAQCAtMzEsNyArMzAs
NyBAQCBzdHJ1Y3QgU1NMQ2VydGlmaWNhdGVTdGF0cyB7CiAgIFNTTENlcnRpZmljYXRlU3RhdHMo
c3RkOjpzdHJpbmcmJiBmaW5nZXJwcmludCwKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0
cmluZyYmIGZpbmdlcnByaW50X2FsZ29yaXRobSwKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZyYmIGJhc2U2NF9jZXJ0aWZpY2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGVTdGF0cz4mJiBpc3N1ZXIpOworICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0aWZpY2F0ZVN0YXRzPiBpc3N1ZXIpOwog
ICB+U1NMQ2VydGlmaWNhdGVTdGF0cygpOwogICBzdGQ6OnN0cmluZyBmaW5nZXJwcmludDsKICAg
c3RkOjpzdHJpbmcgZmluZ2VycHJpbnRfYWxnb3JpdGhtOwpAQCAtNTQsMTcgKzUzLDEzIEBAIGNs
YXNzIFNTTENlcnRpZmljYXRlIHsKICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZSBpcwogICAvLyBzdG9yZWQgaW4gKnBlbV9sZW5n
dGggaWYgaXQgaXMgbm9uLW51bGwsIGFuZCBvbmx5IGlmCiAgIC8vIHBhcnNpbmcgd2FzIHN1Y2Nl
c3NmdWwuCi0gIC8vIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGUgcmV0dXJu
ZWQgb2JqZWN0LgotICBzdGF0aWMgU1NMQ2VydGlmaWNhdGUqIEZyb21QRU1TdHJpbmcoY29uc3Qg
c3RkOjpzdHJpbmcmIHBlbV9zdHJpbmcpOwotICB2aXJ0dWFsIH5TU0xDZXJ0aWZpY2F0ZSgpIHt9
CisgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNhdGU+IEZyb21QRU1TdHJpbmco
CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGVtX3N0cmluZyk7CisgIHZpcnR1YWwgflNTTENl
cnRpZmljYXRlKCkgPSBkZWZhdWx0OwogCiAgIC8vIFJldHVybnMgYSBuZXcgU1NMQ2VydGlmaWNh
dGUgb2JqZWN0IGluc3RhbmNlIHdyYXBwaW5nIHRoZSBzYW1lCi0gIC8vIHVuZGVybHlpbmcgY2Vy
dGlmaWNhdGUsIGluY2x1ZGluZyBpdHMgY2hhaW4gaWYgcHJlc2VudC4gIENhbGxlciBpcwotICAv
LyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGUgcmV0dXJuZWQgb2JqZWN0LiBVc2UgR2V0VW5p
cXVlUmVmZXJlbmNlCi0gIC8vIGluc3RlYWQuCi0gIHZpcnR1YWwgU1NMQ2VydGlmaWNhdGUqIEdl
dFJlZmVyZW5jZSgpIGNvbnN0ID0gMDsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8U1NMQ2VydGlmaWNh
dGU+IEdldFVuaXF1ZVJlZmVyZW5jZSgpIGNvbnN0OworICAvLyB1bmRlcmx5aW5nIGNlcnRpZmlj
YXRlLCBpbmNsdWRpbmcgaXRzIGNoYWluIGlmIHByZXNlbnQuCisgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPFNTTENlcnRpZmljYXRlPiBDbG9uZSgpIGNvbnN0ID0gMDsKIAogICAvLyBSZXR1cm5z
IGEgUEVNIGVuY29kZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZS4K
ICAgdmlydHVhbCBzdGQ6OnN0cmluZyBUb1BFTVN0cmluZygpIGNvbnN0ID0gMDsKQEAgLTk1LDEz
ICs5MCwxMCBAQCBjbGFzcyBTU0xDZXJ0aWZpY2F0ZSB7CiAvLyBTU0xDZXJ0Q2hhaW4gaXMgYSBz
aW1wbGUgd3JhcHBlciBmb3IgYSB2ZWN0b3Igb2YgU1NMQ2VydGlmaWNhdGVzLiBJdCBzZXJ2ZXMK
IC8vIHByaW1hcmlseSB0byBlbnN1cmUgcHJvcGVyIG1lbW9yeSBtYW5hZ2VtZW50IChlc3BlY2lh
bGx5IGRlbGV0aW9uKSBvZiB0aGUKIC8vIFNTTENlcnRpZmljYXRlIHBvaW50ZXJzLgotY2xhc3Mg
U1NMQ2VydENoYWluIHsKK2NsYXNzIFNTTENlcnRDaGFpbiBmaW5hbCB7CiAgcHVibGljOgorICBl
eHBsaWNpdCBTU0xDZXJ0Q2hhaW4oc3RkOjp1bmlxdWVfcHRyPFNTTENlcnRpZmljYXRlPiBzaW5n
bGVfY2VydCk7CiAgIGV4cGxpY2l0IFNTTENlcnRDaGFpbihzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8U1NMQ2VydGlmaWNhdGU+PiBjZXJ0cyk7Ci0gIC8vIFRoZXNlIGNvbnN0cnVjdG9ycyBj
b3B5IHRoZSBwcm92aWRlZCBTU0xDZXJ0aWZpY2F0ZShzKSwgc28gdGhlIGNhbGxlcgotICAvLyBy
ZXRhaW5zIG93bmVyc2hpcC4KLSAgZXhwbGljaXQgU1NMQ2VydENoYWluKGNvbnN0IHN0ZDo6dmVj
dG9yPFNTTENlcnRpZmljYXRlKj4mIGNlcnRzKTsKLSAgZXhwbGljaXQgU1NMQ2VydENoYWluKGNv
bnN0IFNTTENlcnRpZmljYXRlKiBjZXJ0KTsKICAgLy8gQWxsb3cgbW92ZSBzZW1hbnRpY3MgZm9y
IHRoZSBvYmplY3QuCiAgIFNTTENlcnRDaGFpbihTU0xDZXJ0Q2hhaW4mJik7CiAgIFNTTENlcnRD
aGFpbiYgb3BlcmF0b3I9KFNTTENlcnRDaGFpbiYmKTsKQEAgLTExNSwxMCArMTA3LDggQEAgY2xh
c3MgU1NMQ2VydENoYWluIHsKICAgY29uc3QgU1NMQ2VydGlmaWNhdGUmIEdldChzaXplX3QgcG9z
KSBjb25zdCB7IHJldHVybiAqKGNlcnRzX1twb3NdKTsgfQogCiAgIC8vIFJldHVybnMgYSBuZXcg
U1NMQ2VydENoYWluIG9iamVjdCBpbnN0YW5jZSB3cmFwcGluZyB0aGUgc2FtZSB1bmRlcmx5aW5n
Ci0gIC8vIGNlcnRpZmljYXRlIGNoYWluLiAgQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVl
aW5nIHRoZSByZXR1cm5lZCBvYmplY3QuCi0gIFNTTENlcnRDaGFpbiogQ29weSgpIGNvbnN0Owot
ICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgcmV0dXJuaW5nIGEgdW5pcXVlX3B0ciBmb3IgY29udmVu
aWVuY2UuCi0gIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0Q2hhaW4+IFVuaXF1ZUNvcHkoKSBjb25z
dDsKKyAgLy8gY2VydGlmaWNhdGUgY2hhaW4uCisgIHN0ZDo6dW5pcXVlX3B0cjxTU0xDZXJ0Q2hh
aW4+IENsb25lKCkgY29uc3Q7CiAKICAgLy8gR2V0cyBpbmZvcm1hdGlvbiAoZmluZ2VycHJpbnQs
IGV0Yy4pIGFib3V0IHRoaXMgY2VydGlmaWNhdGUgY2hhaW4uIFRoaXMgaXMKICAgLy8gdXNlZCBm
b3IgY2VydGlmaWNhdGUgc3RhdHMsIHNlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsZmluZ2VycHJpbnQuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xmaW5nZXJw
cmludC5jYwppbmRleCBiNjUxYTNkNjI4NTIwNWI1NWEyZmIwMzY3NzEwNGIxNWE5N2I3NjYyLi5i
Mjk2ZDMzZGRkOWM0MzEyM2E0MTU0Yjk0YjVmMGYzYTg2NGE4MWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xmaW5nZXJw
cmludC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zc2xmaW5nZXJwcmludC5jYwpAQCAtMTEsNjcgKzExLDgyIEBACiAjaW5jbHVkZSAi
cnRjX2Jhc2Uvc3NsZmluZ2VycHJpbnQuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVk
ZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogCi0j
aW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgorI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9y
eS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9t
ZXNzYWdlZGlnZXN0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2VydGlmaWNhdGUuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3Nz
bGlkZW50aXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAKIG5hbWVz
cGFjZSBydGMgewogCiBTU0xGaW5nZXJwcmludCogU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZShjb25z
dCBzdGQ6OnN0cmluZyYgYWxnb3JpdGhtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgcnRjOjpTU0xJZGVudGl0eSogaWRlbnRpdHkpIHsKLSAgaWYgKCFpZGVu
dGl0eSkgewotICAgIHJldHVybiBudWxscHRyOwotICB9CisgIHJldHVybiBDcmVhdGVVbmlxdWUo
YWxnb3JpdGhtLCAqaWRlbnRpdHkpLnJlbGVhc2UoKTsKK30KIAotICByZXR1cm4gQ3JlYXRlKGFs
Z29yaXRobSwgJihpZGVudGl0eS0+Y2VydGlmaWNhdGUoKSkpOworc3RkOjp1bmlxdWVfcHRyPFNT
TEZpbmdlcnByaW50PiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlVW5pcXVlKAorICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBhbGdvcml0aG0sCisgICAgY29uc3QgcnRjOjpTU0xJZGVudGl0eSYgaWRlbnRp
dHkpIHsKKyAgcmV0dXJuIENyZWF0ZShhbGdvcml0aG0sIGlkZW50aXR5LmNlcnRpZmljYXRlKCkp
OwogfQogCi1TU0xGaW5nZXJwcmludCogU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZShjb25zdCBzdGQ6
OnN0cmluZyYgYWxnb3JpdGhtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcnRjOjpTU0xDZXJ0aWZpY2F0ZSogY2VydCkgeworc3RkOjp1bmlxdWVfcHRyPFNT
TEZpbmdlcnByaW50PiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlKAorICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBhbGdvcml0aG0sCisgICAgY29uc3QgcnRjOjpTU0xDZXJ0aWZpY2F0ZSYgY2VydCkgewog
ICB1aW50OF90IGRpZ2VzdF92YWxbNjRdOwogICBzaXplX3QgZGlnZXN0X2xlbjsKLSAgYm9vbCBy
ZXQgPSBjZXJ0LT5Db21wdXRlRGlnZXN0KGFsZ29yaXRobSwgZGlnZXN0X3ZhbCwgc2l6ZW9mKGRp
Z2VzdF92YWwpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRpZ2VzdF9sZW4p
OworICBib29sIHJldCA9IGNlcnQuQ29tcHV0ZURpZ2VzdChhbGdvcml0aG0sIGRpZ2VzdF92YWws
IHNpemVvZihkaWdlc3RfdmFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRp
Z2VzdF9sZW4pOwogICBpZiAoIXJldCkgewogICAgIHJldHVybiBudWxscHRyOwogICB9Ci0KLSAg
cmV0dXJuIG5ldyBTU0xGaW5nZXJwcmludChhbGdvcml0aG0sIGRpZ2VzdF92YWwsIGRpZ2VzdF9s
ZW4pOworICByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8U1NMRmluZ2VycHJpbnQ+KAorICAgICAg
YWxnb3JpdGhtLCBBcnJheVZpZXc8Y29uc3QgdWludDhfdD4oZGlnZXN0X3ZhbCwgZGlnZXN0X2xl
bikpOwogfQogCiBTU0xGaW5nZXJwcmludCogU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZUZyb21SZmM0
NTcyKAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0aG0sCiAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGZpbmdlcnByaW50KSB7CisgIHJldHVybiBDcmVhdGVVbmlxdWVGcm9tUmZjNDU3Mihh
bGdvcml0aG0sIGZpbmdlcnByaW50KS5yZWxlYXNlKCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxT
U0xGaW5nZXJwcmludD4gU1NMRmluZ2VycHJpbnQ6OkNyZWF0ZVVuaXF1ZUZyb21SZmM0NTcyKAor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0aG0sCisgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGZpbmdlcnByaW50KSB7CiAgIGlmIChhbGdvcml0aG0uZW1wdHkoKSB8fCAhcnRjOjpJc0ZpcHMx
ODBEaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSkKICAgICByZXR1cm4gbnVsbHB0cjsKIAogICBp
ZiAoZmluZ2VycHJpbnQuZW1wdHkoKSkKICAgICByZXR1cm4gbnVsbHB0cjsKIAotICBzaXplX3Qg
dmFsdWVfbGVuOwogICBjaGFyIHZhbHVlW3J0Yzo6TWVzc2FnZURpZ2VzdDo6a01heFNpemVdOwot
ICB2YWx1ZV9sZW4gPSBydGM6OmhleF9kZWNvZGVfd2l0aF9kZWxpbWl0ZXIoCisgIHNpemVfdCB2
YWx1ZV9sZW4gPSBydGM6OmhleF9kZWNvZGVfd2l0aF9kZWxpbWl0ZXIoCiAgICAgICB2YWx1ZSwg
c2l6ZW9mKHZhbHVlKSwgZmluZ2VycHJpbnQuY19zdHIoKSwgZmluZ2VycHJpbnQubGVuZ3RoKCks
ICc6Jyk7CiAgIGlmICghdmFsdWVfbGVuKQogICAgIHJldHVybiBudWxscHRyOwogCi0gIHJldHVy
biBuZXcgU1NMRmluZ2VycHJpbnQoYWxnb3JpdGhtLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
Pih2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfbGVuKTsKKyAgcmV0
dXJuIGFic2w6Om1ha2VfdW5pcXVlPFNTTEZpbmdlcnByaW50PigKKyAgICAgIGFsZ29yaXRobSwK
KyAgICAgIEFycmF5Vmlldzxjb25zdCB1aW50OF90PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
Pih2YWx1ZSksIHZhbHVlX2xlbikpOwogfQogCi1TU0xGaW5nZXJwcmludCogU1NMRmluZ2VycHJp
bnQ6OkNyZWF0ZUZyb21DZXJ0aWZpY2F0ZSgKLSAgICBjb25zdCBSVENDZXJ0aWZpY2F0ZSogY2Vy
dCkgeworc3RkOjp1bmlxdWVfcHRyPFNTTEZpbmdlcnByaW50PiBTU0xGaW5nZXJwcmludDo6Q3Jl
YXRlRnJvbUNlcnRpZmljYXRlKAorICAgIGNvbnN0IFJUQ0NlcnRpZmljYXRlJiBjZXJ0KSB7CiAg
IHN0ZDo6c3RyaW5nIGRpZ2VzdF9hbGc7Ci0gIGlmICghY2VydC0+c3NsX2NlcnRpZmljYXRlKCku
R2V0U2lnbmF0dXJlRGlnZXN0QWxnb3JpdGhtKCZkaWdlc3RfYWxnKSkgeworICBpZiAoIWNlcnQu
R2V0U1NMQ2VydGlmaWNhdGUoKS5HZXRTaWduYXR1cmVEaWdlc3RBbGdvcml0aG0oJmRpZ2VzdF9h
bGcpKSB7CiAgICAgUlRDX0xPRyhMU19FUlJPUikKICAgICAgICAgPDwgIkZhaWxlZCB0byByZXRy
aWV2ZSB0aGUgY2VydGlmaWNhdGUncyBkaWdlc3QgYWxnb3JpdGhtIjsKICAgICByZXR1cm4gbnVs
bHB0cjsKICAgfQogCi0gIFNTTEZpbmdlcnByaW50KiBmaW5nZXJwcmludCA9IENyZWF0ZShkaWdl
c3RfYWxnLCBjZXJ0LT5pZGVudGl0eSgpKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFNTTEZpbmdlcnBy
aW50PiBmaW5nZXJwcmludCA9CisgICAgICBDcmVhdGVVbmlxdWUoZGlnZXN0X2FsZywgKmNlcnQu
aWRlbnRpdHkoKSk7CiAgIGlmICghZmluZ2VycHJpbnQpIHsKICAgICBSVENfTE9HKExTX0VSUk9S
KSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBpZGVudGl0eSBmaW5nZXJwcmludCwgYWxnPSIKICAgICAg
ICAgICAgICAgICAgICAgICA8PCBkaWdlc3RfYWxnOwpAQCAtNzksMTIgKzk0LDE0IEBAIFNTTEZp
bmdlcnByaW50KiBTU0xGaW5nZXJwcmludDo6Q3JlYXRlRnJvbUNlcnRpZmljYXRlKAogICByZXR1
cm4gZmluZ2VycHJpbnQ7CiB9CiAKK1NTTEZpbmdlcnByaW50OjpTU0xGaW5nZXJwcmludChjb25z
dCBzdGQ6OnN0cmluZyYgYWxnb3JpdGhtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFycmF5Vmlldzxjb25zdCB1aW50OF90PiBkaWdlc3RfdmlldykKKyAgICA6IGFsZ29yaXRobShh
bGdvcml0aG0pLCBkaWdlc3QoZGlnZXN0X3ZpZXcuZGF0YSgpLCBkaWdlc3Rfdmlldy5zaXplKCkp
IHt9CisKIFNTTEZpbmdlcnByaW50OjpTU0xGaW5nZXJwcmludChjb25zdCBzdGQ6OnN0cmluZyYg
YWxnb3JpdGhtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qq
IGRpZ2VzdF9pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGlnZXN0
X2xlbikKLSAgICA6IGFsZ29yaXRobShhbGdvcml0aG0pIHsKLSAgZGlnZXN0LlNldERhdGEoZGln
ZXN0X2luLCBkaWdlc3RfbGVuKTsKLX0KKyAgICA6IFNTTEZpbmdlcnByaW50KGFsZ29yaXRobSwg
TWFrZUFycmF5VmlldyhkaWdlc3RfaW4sIGRpZ2VzdF9sZW4pKSB7fQogCiBTU0xGaW5nZXJwcmlu
dDo6U1NMRmluZ2VycHJpbnQoY29uc3QgU1NMRmluZ2VycHJpbnQmIGZyb20pCiAgICAgOiBhbGdv
cml0aG0oZnJvbS5hbGdvcml0aG0pLCBkaWdlc3QoZnJvbS5kaWdlc3QpIHt9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xm
aW5nZXJwcmludC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3NsZmluZ2VycHJpbnQuaAppbmRleCBiMjA0YmM3N2YzMDAyMTFjNzNmNGM0N2My
MTZmMzhiM2I5MWVlZWQ5Li5lYTEwZWRlNzIwNmJhNmYzNjkxZjk3ZjM5MDdiYjAyZmFlMjk1OTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zc2xmaW5nZXJwcmludC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGZpbmdlcnByaW50LmgKQEAgLTExLDMwICsxMSw0
NyBAQAogI2lmbmRlZiBSVENfQkFTRV9TU0xGSU5HRVJQUklOVF9IXwogI2RlZmluZSBSVENfQkFT
RV9TU0xGSU5HRVJQUklOVF9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3Rk
aW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29weW9ud3Jp
dGVidWZmZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5oIgotI2luY2x1
ZGUgInJ0Y19iYXNlL3NzbGlkZW50aXR5LmgiCiAKIG5hbWVzcGFjZSBydGMgewogCitjbGFzcyBS
VENDZXJ0aWZpY2F0ZTsKIGNsYXNzIFNTTENlcnRpZmljYXRlOworY2xhc3MgU1NMSWRlbnRpdHk7
CiAKIHN0cnVjdCBTU0xGaW5nZXJwcmludCB7CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92
ZSBvbmNlIGRvd25zdHJlYW0gcHJvamVjdHMgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhpcy4KICAgc3Rh
dGljIFNTTEZpbmdlcnByaW50KiBDcmVhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTU0xJZGVudGl0eSog
aWRlbnRpdHkpOworICAvLyBUT0RPKHN0ZXZlYW50b24pOiBSZW5hbWUgdG8gQ3JlYXRlIG9uY2Ug
cHJvamVjdHMgaGF2ZSBtaWdyYXRlZC4KKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTU0xGaW5n
ZXJwcmludD4gQ3JlYXRlVW5pcXVlKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRo
bSwKKyAgICAgIGNvbnN0IHJ0Yzo6U1NMSWRlbnRpdHkmIGlkZW50aXR5KTsKIAotICBzdGF0aWMg
U1NMRmluZ2VycHJpbnQqIENyZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYgYWxnb3JpdGhtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlNTTENlcnRpZmljYXRlKiBj
ZXJ0KTsKKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTU0xGaW5nZXJwcmludD4gQ3JlYXRlKAor
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKKyAgICAgIGNvbnN0IHJ0Yzo6U1NM
Q2VydGlmaWNhdGUmIGNlcnQpOwogCisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92ZSBvbmNl
IGRvd25zdHJlYW0gcHJvamVjdHMgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhpcy4KICAgc3RhdGljIFNT
TEZpbmdlcnByaW50KiBDcmVhdGVGcm9tUmZjNDU3Mihjb25zdCBzdGQ6OnN0cmluZyYgYWxnb3Jp
dGhtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBmaW5nZXJwcmludCk7CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbmFtZSB0
byBDcmVhdGVGcm9tUmZjNDU3MiBvbmNlIHByb2plY3RzIGhhdmUgbWlncmF0ZWQuCisgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U1NMRmluZ2VycHJpbnQ+IENyZWF0ZVVuaXF1ZUZyb21SZmM0NTcy
KAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKKyAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBmaW5nZXJwcmludCk7CiAKICAgLy8gQ3JlYXRlcyBhIGZpbmdlcnByaW50IGZyb20g
YSBjZXJ0aWZpY2F0ZSwgdXNpbmcgdGhlIHNhbWUgZGlnZXN0IGFsZ29yaXRobQogICAvLyBhcyB0
aGUgY2VydGlmaWNhdGUncyBzaWduYXR1cmUuCi0gIHN0YXRpYyBTU0xGaW5nZXJwcmludCogQ3Jl
YXRlRnJvbUNlcnRpZmljYXRlKGNvbnN0IFJUQ0NlcnRpZmljYXRlKiBjZXJ0KTsKKyAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxTU0xGaW5nZXJwcmludD4gQ3JlYXRlRnJvbUNlcnRpZmljYXRlKAor
ICAgICAgY29uc3QgUlRDQ2VydGlmaWNhdGUmIGNlcnQpOwogCisgIFNTTEZpbmdlcnByaW50KGNv
bnN0IHN0ZDo6c3RyaW5nJiBhbGdvcml0aG0sCisgICAgICAgICAgICAgICAgIEFycmF5Vmlldzxj
b25zdCB1aW50OF90PiBkaWdlc3Rfdmlldyk7CisgIC8vIFRPRE8oc3RldmVhbnRvbik6IFJlbW92
ZSBvbmNlIGRvd25zdHJlYW0gcHJvamVjdHMgaGF2ZSBtb3ZlZCBvZmYgb2YgdGhpcy4KICAgU1NM
RmluZ2VycHJpbnQoY29uc3Qgc3RkOjpzdHJpbmcmIGFsZ29yaXRobSwKICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCogZGlnZXN0X2luLAogICAgICAgICAgICAgICAgICBzaXplX3QgZGln
ZXN0X2xlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zc2xpZGVudGl0eS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5LmNjCmluZGV4IDgyM2ZjMzg4
YTNjZWYxYjgxNTBmNjBjZjY5OGI4NzM2YTE2NDJiMzcuLjQxZWIzNWQ1ZjUyYjY3MzdlNzFiOTMz
NjE0MGViNzNjYzk3NzFhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5LmNjCkBA
IC0xMSwyMCArMTEsOTUgQEAKIC8vIEhhbmRsaW5nIG9mIGNlcnRpZmljYXRlcyBhbmQga2V5cGFp
cnMgZm9yIFNTTFN0cmVhbUFkYXB0ZXIncyBwZWVyIG1vZGUuCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
c3NsaWRlbnRpdHkuaCIKIAotI2luY2x1ZGUgPGN0aW1lPgorI2luY2x1ZGUgPHN0cmluZy5oPgor
I2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4K
IAotI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9vcGVuc3NsaWRlbnRpdHkuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zc2xmaW5nZXJwcmludC5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGNlcnRpZmljYXRlLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3Bh
cnR5L2Jhc2U2NC9iYXNlNjQuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAog
bmFtZXNwYWNlIHJ0YyB7CiAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEhlbHBlciBGdW5jdGlvbnMKKy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KKworbmFtZXNwYWNlIHsKKy8vIFJlYWQgfG58IGJ5dGVzIGZyb20gQVNOMSBu
dW1iZXIgc3RyaW5nIGF0ICp8cHB8IGFuZCByZXR1cm4gdGhlIG51bWVyaWMgdmFsdWUuCisvLyBV
cGRhdGUgKnxwcHwgYW5kICp8bnB8IHRvIHJlZmxlY3QgbnVtYmVyIG9mIHJlYWQgYnl0ZXMuCisv
LyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85ODYwKSAtIFJlbW92ZSB0aGlzIGNvZGUuCitpbmxpbmUg
aW50IEFTTjFSZWFkSW50KGNvbnN0IHVuc2lnbmVkIGNoYXIqKiBwcCwgc2l6ZV90KiBucCwgc2l6
ZV90IG4pIHsKKyAgY29uc3QgdW5zaWduZWQgY2hhciogcCA9ICpwcDsKKyAgaW50IHggPSAwOwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47IGkrKykgeworICAgIHggPSAxMCAqIHggKyBwW2ld
IC0gJzAnOworICB9CisgICpwcCA9IHAgKyBuOworICAqbnAgPSAqbnAgLSBuOworICByZXR1cm4g
eDsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk4NjAp
IC0gUmVtb3ZlIHRoaXMgY29kZS4KK2ludDY0X3QgQVNOMVRpbWVUb1NlYyhjb25zdCB1bnNpZ25l
ZCBjaGFyKiBzLCBzaXplX3QgbGVuZ3RoLCBib29sIGxvbmdfZm9ybWF0KSB7CisgIHNpemVfdCBi
eXRlc19sZWZ0ID0gbGVuZ3RoOworICAvLyBNYWtlIHN1cmUgdGhlIHN0cmluZyBlbmRzIHdpdGgg
Wi4gIERvaW5nIGl0IGhlcmUgcHJvdGVjdHMgdGhlIHN0cnNwbiBjYWxsCisgIC8vIGZyb20gcnVu
bmluZyBvZmYgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGluIFoncyBhYnNlbnNlLgorICBpZiAobGVu
Z3RoID09IDAgfHwgc1tsZW5ndGggLSAxXSAhPSAnWicpIHsKKyAgICByZXR1cm4gLTE7CisgIH0K
KyAgLy8gTWFrZSBzdXJlIHdlIG9ubHkgaGF2ZSBBU0NJSSBkaWdpdHMgc28gdGhhdCB3ZSBkb24n
dCBuZWVkIHRvIGNsdXR0ZXIgdGhlCisgIC8vIGNvZGUgYmVsb3cgYW5kIEFTTjFSZWFkSW50IHdp
dGggZXJyb3IgY2hlY2tpbmcuCisgIHNpemVfdCBuID0gc3Ryc3BuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KHMpLCAiMDEyMzQ1Njc4OSIpOworICBpZiAobiArIDEgIT0gbGVuZ3RoKSB7
CisgICAgcmV0dXJuIC0xOworICB9CisgIC8vIFJlYWQgb3V0IEFTTjEgeWVhciwgaW4gZWl0aGVy
IDItY2hhciAiVVRDVElNRSIgb3IgNC1jaGFyICJHRU5FUkFMSVpFRFRJTUUiCisgIC8vIGZvcm1h
dC4gIEJvdGggZm9ybWF0IHVzZSBVVEMgaW4gdGhpcyBjb250ZXh0LgorICBpbnQgeWVhciA9IDA7
CisgIGlmIChsb25nX2Zvcm1hdCkgeworICAgIC8vIEFTTjEgZm9ybWF0OiB5eXl5bW1kZGhoW21t
W3NzWy5mZmZdXV1aIHdoZXJlIHRoZSBaIGlzIGxpdGVyYWwsIGJ1dAorICAgIC8vIFJGQyA1Mjgw
IHJlcXVpcmVzIHVzIHRvIG9ubHkgc3VwcG9ydCBleGFjdGx5IHl5eXltbWRkaGhtbXNzWi4KKyAg
ICBpZiAoYnl0ZXNfbGVmdCA8IDExKSB7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHll
YXIgPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDQpOworICAgIHllYXIgLT0gMTkwMDsK
KyAgfSBlbHNlIHsKKyAgICAvLyBBU04xIGZvcm1hdDogeXltbWRkaGhtbVtzc11aIHdoZXJlIHRo
ZSBaIGlzIGxpdGVyYWwsIGJ1dCBSRkMgNTI4MAorICAgIC8vIHJlcXVpcmVzIHVzIHRvIG9ubHkg
c3VwcG9ydCBleGFjdGx5IHl5bW1kZGhobW1zc1ouCisgICAgaWYgKGJ5dGVzX2xlZnQgPCA5KSB7
CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHllYXIgPSBBU04xUmVhZEludCgmcywgJmJ5
dGVzX2xlZnQsIDIpOworICAgIC8vIFBlciBSRkMgNTI4MCA0LjEuMi41LjEKKyAgICBpZiAoeWVh
ciA8IDUwKSB7CisgICAgICB5ZWFyICs9IDEwMDsKKyAgICB9CisgIH0KKworICAvLyBSZWFkIG91
dCByZW1haW5pbmcgQVNOMSB0aW1lIGRhdGEgYW5kIHN0b3JlIGl0IGluIHx0bXwgaW4gZG9jdW1l
bnRlZAorICAvLyBzdGQ6OnRtIGZvcm1hdC4KKyAgdG0gdG07CisgIHRtLnRtX3llYXIgPSB5ZWFy
OworICB0bS50bV9tb24gPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpIC0gMTsKKyAg
dG0udG1fbWRheSA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgMik7CisgIHRtLnRtX2hv
dXIgPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpOworICB0bS50bV9taW4gPSBBU04x
UmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpOworICB0bS50bV9zZWMgPSBBU04xUmVhZEludCgm
cywgJmJ5dGVzX2xlZnQsIDIpOworCisgIC8vIE5vdyBqdXN0IFogc2hvdWxkIHJlbWFpbi4gIEl0
cyBleGlzdGVuY2Ugd2FzIGFzc2VydGVkIGFib3ZlLgorICBpZiAoYnl0ZXNfbGVmdCAhPSAxKSB7
CisgICAgcmV0dXJuIC0xOworICB9CisgIHJldHVybiBUbVRvU2Vjb25kcyh0bSk7Cit9CisKIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KIC8vIEtleVBhcmFtcwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtOTMsMjIgKzE2OCwy
MSBAQCBLZXlUeXBlIEludEtleVR5cGVGYW1pbHlUb0tleVR5cGUoaW50IGtleV90eXBlX2ZhbWls
eSkgewogYm9vbCBTU0xJZGVudGl0eTo6UGVtVG9EZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV90
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBlbV9z
dHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZGVyKSB7Ci0g
IC8vIEZpbmQgdGhlIGlubmVyIGJvZHkuIFdlIG5lZWQgdGhpcyB0byBmdWxmaWxsIHRoZSBjb250
cmFjdCBvZgotICAvLyByZXR1cm5pbmcgcGVtX2xlbmd0aC4KKyAgLy8gRmluZCB0aGUgaW5uZXIg
Ym9keS4gV2UgbmVlZCB0aGlzIHRvIGZ1bGZpbGwgdGhlIGNvbnRyYWN0IG9mIHJldHVybmluZwor
ICAvLyBwZW1fbGVuZ3RoLgogICBzaXplX3QgaGVhZGVyID0gcGVtX3N0cmluZy5maW5kKCItLS0t
LUJFR0lOICIgKyBwZW1fdHlwZSArICItLS0tLSIpOwotICBpZiAoaGVhZGVyID09IHN0ZDo6c3Ry
aW5nOjpucG9zKQorICBpZiAoaGVhZGVyID09IHN0ZDo6c3RyaW5nOjpucG9zKSB7CiAgICAgcmV0
dXJuIGZhbHNlOwotCisgIH0KICAgc2l6ZV90IGJvZHkgPSBwZW1fc3RyaW5nLmZpbmQoIlxuIiwg
aGVhZGVyKTsKLSAgaWYgKGJvZHkgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgIGlmIChib2R5ID09
IHN0ZDo6c3RyaW5nOjpucG9zKSB7CiAgICAgcmV0dXJuIGZhbHNlOwotCisgIH0KICAgc2l6ZV90
IHRyYWlsZXIgPSBwZW1fc3RyaW5nLmZpbmQoIi0tLS0tRU5EICIgKyBwZW1fdHlwZSArICItLS0t
LSIpOwotICBpZiAodHJhaWxlciA9PSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgaWYgKHRyYWlsZXIg
PT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgfQogICBzdGQ6
OnN0cmluZyBpbm5lciA9IHBlbV9zdHJpbmcuc3Vic3RyKGJvZHkgKyAxLCB0cmFpbGVyIC0gKGJv
ZHkgKyAxKSk7Ci0KICAgKmRlciA9IEJhc2U2NDo6RGVjb2RlKGlubmVyLCBCYXNlNjQ6OkRPX1BB
UlNFX1dISVRFIHwgQmFzZTY0OjpET19QQURfQU5ZIHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQmFzZTY0OjpET19URVJNX0JVRkZFUik7CiAgIHJldHVybiB0cnVlOwpAQCAt
MTE4LDE0ICsxOTIsMTIgQEAgc3RkOjpzdHJpbmcgU1NMSWRlbnRpdHk6OkRlclRvUGVtKGNvbnN0
IHN0ZDo6c3RyaW5nJiBwZW1fdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZW5ndGgpIHsKICAgcnRjOjpTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLQog
ICByZXN1bHQgPDwgIi0tLS0tQkVHSU4gIiA8PCBwZW1fdHlwZSA8PCAiLS0tLS1cbiI7CiAKICAg
c3RkOjpzdHJpbmcgYjY0X2VuY29kZWQ7CiAgIEJhc2U2NDo6RW5jb2RlRnJvbUFycmF5KGRhdGEs
IGxlbmd0aCwgJmI2NF9lbmNvZGVkKTsKLQotICAvLyBEaXZpZGUgdGhlIEJhc2UtNjQgZW5jb2Rl
ZCBkYXRhIGludG8gNjQtY2hhcmFjdGVyIGNodW5rcywgYXMgcGVyCi0gIC8vIDQuMy4yLjQgb2Yg
UkZDIDE0MjEuCisgIC8vIERpdmlkZSB0aGUgQmFzZS02NCBlbmNvZGVkIGRhdGEgaW50byA2NC1j
aGFyYWN0ZXIgY2h1bmtzLCBhcyBwZXIgNC4zLjIuNAorICAvLyBvZiBSRkMgMTQyMS4KICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0gNjQ7CiAgIHNpemVfdCBjaHVua3MgPSAoYjY0
X2VuY29kZWQuc2l6ZSgpICsgKGtDaHVua1NpemUgLSAxKSkgLyBrQ2h1bmtTaXplOwogICBmb3Ig
KHNpemVfdCBpID0gMCwgY2h1bmtfb2Zmc2V0ID0gMDsgaSA8IGNodW5rczsKQEAgLTEzMyw5ICsy
MDUsNyBAQCBzdGQ6OnN0cmluZyBTU0xJZGVudGl0eTo6RGVyVG9QZW0oY29uc3Qgc3RkOjpzdHJp
bmcmIHBlbV90eXBlLAogICAgIHJlc3VsdCA8PCBiNjRfZW5jb2RlZC5zdWJzdHIoY2h1bmtfb2Zm
c2V0LCBrQ2h1bmtTaXplKTsKICAgICByZXN1bHQgPDwgIlxuIjsKICAgfQotCiAgIHJlc3VsdCA8
PCAiLS0tLS1FTkQgIiA8PCBwZW1fdHlwZSA8PCAiLS0tLS1cbiI7Ci0KICAgcmV0dXJuIHJlc3Vs
dC5SZWxlYXNlKCk7CiB9CiAKQEAgLTE4Niw3OCArMjU2LDQgQEAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFNTTElkZW50aXR5JiBhLCBjb25zdCBTU0xJZGVudGl0eSYgYikgewogICByZXR1cm4gIShh
ID09IGIpOwogfQogCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBIZWxwZXIgRnVuY3Rpb25zCi0vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCi0KLS8vIFJlYWQgfG58IGJ5dGVzIGZyb20gQVNOMSBudW1iZXIgc3RyaW5nIGF0ICp8
cHB8IGFuZCByZXR1cm4gdGhlIG51bWVyaWMgdmFsdWUuCi0vLyBVcGRhdGUgKnxwcHwgYW5kICp8
bnB8IHRvIHJlZmxlY3QgbnVtYmVyIG9mIHJlYWQgYnl0ZXMuCi1zdGF0aWMgaW5saW5lIGludCBB
U04xUmVhZEludChjb25zdCB1bnNpZ25lZCBjaGFyKiogcHAsIHNpemVfdCogbnAsIHNpemVfdCBu
KSB7Ci0gIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAgPSAqcHA7Ci0gIGludCB4ID0gMDsKLSAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBuOyBpKyspCi0gICAgeCA9IDEwICogeCArIHBbaV0gLSAnMCc7
Ci0gICpwcCA9IHAgKyBuOwotICAqbnAgPSAqbnAgLSBuOwotICByZXR1cm4geDsKLX0KLQotaW50
NjRfdCBBU04xVGltZVRvU2VjKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHMsIHNpemVfdCBsZW5ndGgs
IGJvb2wgbG9uZ19mb3JtYXQpIHsKLSAgc2l6ZV90IGJ5dGVzX2xlZnQgPSBsZW5ndGg7Ci0KLSAg
Ly8gTWFrZSBzdXJlIHRoZSBzdHJpbmcgZW5kcyB3aXRoIFouICBEb2luZyBpdCBoZXJlIHByb3Rl
Y3RzIHRoZSBzdHJzcG4gY2FsbAotICAvLyBmcm9tIHJ1bm5pbmcgb2ZmIHRoZSBlbmQgb2YgdGhl
IHN0cmluZyBpbiBaJ3MgYWJzZW5zZS4KLSAgaWYgKGxlbmd0aCA9PSAwIHx8IHNbbGVuZ3RoIC0g
MV0gIT0gJ1onKQotICAgIHJldHVybiAtMTsKLQotICAvLyBNYWtlIHN1cmUgd2Ugb25seSBoYXZl
IEFTQ0lJIGRpZ2l0cyBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gY2x1dHRlciB0aGUKLSAgLy8g
Y29kZSBiZWxvdyBhbmQgQVNOMVJlYWRJbnQgd2l0aCBlcnJvciBjaGVja2luZy4KLSAgc2l6ZV90
IG4gPSBzdHJzcG4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocyksICIwMTIzNDU2Nzg5
Iik7Ci0gIGlmIChuICsgMSAhPSBsZW5ndGgpCi0gICAgcmV0dXJuIC0xOwotCi0gIGludCB5ZWFy
OwotCi0gIC8vIFJlYWQgb3V0IEFTTjEgeWVhciwgaW4gZWl0aGVyIDItY2hhciAiVVRDVElNRSIg
b3IgNC1jaGFyICJHRU5FUkFMSVpFRFRJTUUiCi0gIC8vIGZvcm1hdC4gIEJvdGggZm9ybWF0IHVz
ZSBVVEMgaW4gdGhpcyBjb250ZXh0LgotICBpZiAobG9uZ19mb3JtYXQpIHsKLSAgICAvLyBBU04x
IGZvcm1hdDogeXl5eW1tZGRoaFttbVtzc1suZmZmXV1dWiB3aGVyZSB0aGUgWiBpcyBsaXRlcmFs
LCBidXQKLSAgICAvLyBSRkMgNTI4MCByZXF1aXJlcyB1cyB0byBvbmx5IHN1cHBvcnQgZXhhY3Rs
eSB5eXl5bW1kZGhobW1zc1ouCi0KLSAgICBpZiAoYnl0ZXNfbGVmdCA8IDExKQotICAgICAgcmV0
dXJuIC0xOwotCi0gICAgeWVhciA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgNCk7Ci0g
ICAgeWVhciAtPSAxOTAwOwotICB9IGVsc2UgewotICAgIC8vIEFTTjEgZm9ybWF0OiB5eW1tZGRo
aG1tW3NzXVogd2hlcmUgdGhlIFogaXMgbGl0ZXJhbCwgYnV0IFJGQyA1MjgwCi0gICAgLy8gcmVx
dWlyZXMgdXMgdG8gb25seSBzdXBwb3J0IGV4YWN0bHkgeXltbWRkaGhtbXNzWi4KLQotICAgIGlm
IChieXRlc19sZWZ0IDwgOSkKLSAgICAgIHJldHVybiAtMTsKLQotICAgIHllYXIgPSBBU04xUmVh
ZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpOwotICAgIGlmICh5ZWFyIDwgNTApICAvLyBQZXIgUkZD
IDUyODAgNC4xLjIuNS4xCi0gICAgICB5ZWFyICs9IDEwMDsKLSAgfQotCi0gIHN0ZDo6dG0gdG07
Ci0gIHRtLnRtX3llYXIgPSB5ZWFyOwotCi0gIC8vIFJlYWQgb3V0IHJlbWFpbmluZyBBU04xIHRp
bWUgZGF0YSBhbmQgc3RvcmUgaXQgaW4gfHRtfCBpbiBkb2N1bWVudGVkCi0gIC8vIHN0ZDo6dG0g
Zm9ybWF0LgotICB0bS50bV9tb24gPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpIC0g
MTsKLSAgdG0udG1fbWRheSA9IEFTTjFSZWFkSW50KCZzLCAmYnl0ZXNfbGVmdCwgMik7Ci0gIHRt
LnRtX2hvdXIgPSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpOwotICB0bS50bV9taW4g
PSBBU04xUmVhZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpOwotICB0bS50bV9zZWMgPSBBU04xUmVh
ZEludCgmcywgJmJ5dGVzX2xlZnQsIDIpOwotCi0gIGlmIChieXRlc19sZWZ0ICE9IDEpIHsKLSAg
ICAvLyBOb3cganVzdCBaIHNob3VsZCByZW1haW4uICBJdHMgZXhpc3RlbmNlIHdhcyBhc3NlcnRl
ZCBhYm92ZS4KLSAgICByZXR1cm4gLTE7Ci0gIH0KLQotICByZXR1cm4gVG1Ub1NlY29uZHModG0p
OwotfQotCiB9ICAvLyBuYW1lc3BhY2UgcnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xpZGVudGl0eS5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsaWRlbnRpdHku
aAppbmRleCAxMzc5ZDczM2JlNWY0ZjFhMmY4NzdjNjRmNWQzZmJhNWZlNzlmZmI1Li4zOWZlZWFi
YWIzMTJjMTQwNTRkMjY1M2E1M2FjMjQzZjU3ZWUwMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xpZGVudGl0eS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Nz
bGlkZW50aXR5LmgKQEAgLTEzLDE5ICsxMywxNSBAQAogI2lmbmRlZiBSVENfQkFTRV9TU0xJREVO
VElUWV9IXwogI2RlZmluZSBSVENfQkFTRV9TU0xJREVOVElUWV9IXwogCi0jaW5jbHVkZSA8YWxn
b3JpdGhtPgotI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRl
IDxjdGltZT4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVk
ZSAicnRjX2Jhc2UvYnVmZmVyLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdp
Yy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL21lc3NhZ2VkaWdlc3QuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9zc2xjZXJ0aWZpY2F0ZS5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgog
CiBuYW1lc3BhY2UgcnRjIHsKIAorY2xhc3MgU1NMQ2VydENoYWluOworY2xhc3MgU1NMQ2VydGlm
aWNhdGU7CisKIC8vIEtUX0xBU1QgaXMgaW50ZW5kZWQgZm9yIHZlY3RvciBkZWNsYXJhdGlvbnMg
YW5kIGxvb3BzIG92ZXIgYWxsIGtleSB0eXBlczsKIC8vIGl0IGRvZXMgbm90IHJlcHJlc2VudCBh
bnkga2V5IHR5cGUgaW4gaXRzZWxmLgogLy8gS1RfREVGQVVMVCBpcyB1c2VkIGFzIHRoZSBkZWZh
dWx0IEtleVR5cGUgZm9yIEtleVBhcmFtcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbGlkZW50aXR5X3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Ns
aWRlbnRpdHlfdW5pdHRlc3QuY2MKaW5kZXggMTMyZTI0MGMyZjVhNWMwZGM0OGM3N2FjODhlNzVl
ODZhM2FjMjhjMC4uYmE1M2QxN2RhNDMxYTJhY2YyYWI2YjE4ZjQxYzhlZDYxNjUxNGRkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3NsaWRlbnRpdHlfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3NsaWRlbnRpdHlfdW5pdHRlc3QuY2MKQEAgLTE0
LDYgKzE0LDcgQEAKICNpbmNsdWRlICJydGNfYmFzZS9mYWtlc3NsaWRlbnRpdHkuaCIKICNpbmNs
dWRlICJydGNfYmFzZS9ndW5pdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2hlbHBlcnMuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9tZXNzYWdlZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Ns
YWRhcHRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3NzbGZpbmdlcnByaW50LmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc3NsaWRlbnRpdHkuaCIKQEAgLTE3OSw3ICsxODAsNyBAQCBJZGVudGl0eUFu
ZEluZm8gQ3JlYXRlRmFrZUlkZW50aXR5QW5kSW5mb0Zyb21EZXJzKAogICBjb25zdCBydGM6OlNT
TENlcnRDaGFpbiYgY2hhaW4gPSBpbmZvLmlkZW50aXR5LT5jZXJ0X2NoYWluKCk7CiAgIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OlNTTEZpbmdlcnByaW50PiBmcDsKICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjaGFpbi5HZXRTaXplKCk7IGkrKykgewotICAgIGZwLnJlc2V0KHJ0Yzo6U1NMRmluZ2Vy
cHJpbnQ6OkNyZWF0ZSgic2hhLTEiLCAmY2hhaW4uR2V0KGkpKSk7CisgICAgZnAgPSBydGM6OlNT
TEZpbmdlcnByaW50OjpDcmVhdGUoInNoYS0xIiwgY2hhaW4uR2V0KGkpKTsKICAgICBFWFBFQ1Rf
VFJVRShmcCk7CiAgICAgaW5mby5maW5nZXJwcmludHMucHVzaF9iYWNrKGZwLT5HZXRSZmM0NTcy
RmluZ2VycHJpbnQoKSk7CiAgIH0KQEAgLTIwMCw3ICsyMDEsNyBAQCBjbGFzcyBTU0xJZGVudGl0
eVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgQVNTRVJUX1RSVUUoaWRlbnRpdHlf
ZWNkc2ExXyk7CiAgICAgQVNTRVJUX1RSVUUoaWRlbnRpdHlfZWNkc2EyXyk7CiAKLSAgICB0ZXN0
X2NlcnRfLnJlc2V0KHJ0Yzo6U1NMQ2VydGlmaWNhdGU6OkZyb21QRU1TdHJpbmcoa1Rlc3RDZXJ0
aWZpY2F0ZSkpOworICAgIHRlc3RfY2VydF8gPSBydGM6OlNTTENlcnRpZmljYXRlOjpGcm9tUEVN
U3RyaW5nKGtUZXN0Q2VydGlmaWNhdGUpOwogICAgIEFTU0VSVF9UUlVFKHRlc3RfY2VydF8pOwog
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyLmNjCmluZGV4IDc0
NmViZDUwMDYzZGNhOGJmYWU2ODk4NWRiZGI2ZWVkN2Y1MzJlMGUuLjljMzNhOWM5MzNjOThhOTA0
MDQ5ZmM4NmJjZjAxMTBhNzdkZmI3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Nsc3Ry
ZWFtYWRhcHRlci5jYwpAQCAtODksNDAgKzg5LDEyIEBAIGJvb2wgSXNHY21DcnlwdG9TdWl0ZU5h
bWUoY29uc3Qgc3RkOjpzdHJpbmcmIGNyeXB0b19zdWl0ZSkgewogICAgICAgICAgIGNyeXB0b19z
dWl0ZSA9PSBDU19BRUFEX0FFU18xMjhfR0NNKTsKIH0KIAotLy8gc3RhdGljCi1DcnlwdG9PcHRp
b25zIENyeXB0b09wdGlvbnM6Ok5vR2NtKCkgewotICBDcnlwdG9PcHRpb25zIG9wdGlvbnM7Ci0g
IG9wdGlvbnMuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gZmFsc2U7Ci0gIHJldHVybiBvcHRp
b25zOwotfQotCi1zdGQ6OnZlY3RvcjxpbnQ+IEdldFN1cHBvcnRlZER0bHNTcnRwQ3J5cHRvU3Vp
dGVzKAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpIHsKLSAg
c3RkOjp2ZWN0b3I8aW50PiBjcnlwdG9fc3VpdGVzOwotICBpZiAoY3J5cHRvX29wdGlvbnMuZW5h
YmxlX2djbV9jcnlwdG9fc3VpdGVzKSB7Ci0gICAgY3J5cHRvX3N1aXRlcy5wdXNoX2JhY2socnRj
OjpTUlRQX0FFQURfQUVTXzI1Nl9HQ00pOwotICAgIGNyeXB0b19zdWl0ZXMucHVzaF9iYWNrKHJ0
Yzo6U1JUUF9BRUFEX0FFU18xMjhfR0NNKTsKLSAgfQotICAvLyBOb3RlOiBTUlRQX0FFUzEyOF9D
TV9TSEExXzgwIGlzIHdoYXQgaXMgcmVxdWlyZWQgdG8gYmUgc3VwcG9ydGVkIChieQotICAvLyBk
cmFmdC1pZXRmLXJ0Y3dlYi1zZWN1cml0eS1hcmNoKSwgYnV0IFNSVFBfQUVTMTI4X0NNX1NIQTFf
MzIgaXMgYWxsb3dlZCBhcwotICAvLyB3ZWxsLCBhbmQgc2F2ZXMgYSBmZXcgYnl0ZXMgcGVyIHBh
Y2tldCBpZiBpdCBlbmRzIHVwIHNlbGVjdGVkLgotICAvLyBBcyB0aGUgY2lwaGVyIHN1aXRlIGlz
IHBvdGVudGlhbGx5IGluc2VjdXJlLCBpdCB3aWxsIG9ubHkgYmUgdXNlZCBpZgotICAvLyBlbmFi
bGVkIGJ5IGJvdGggcGVlcnMuCi0gIGlmIChjcnlwdG9fb3B0aW9ucy5lbmFibGVfYWVzMTI4X3No
YTFfMzJfY3J5cHRvX2NpcGhlcikgewotICAgIGNyeXB0b19zdWl0ZXMucHVzaF9iYWNrKHJ0Yzo6
U1JUUF9BRVMxMjhfQ01fU0hBMV8zMik7Ci0gIH0KLSAgY3J5cHRvX3N1aXRlcy5wdXNoX2JhY2so
cnRjOjpTUlRQX0FFUzEyOF9DTV9TSEExXzgwKTsKLSAgcmV0dXJuIGNyeXB0b19zdWl0ZXM7Ci19
Ci0KIFNTTFN0cmVhbUFkYXB0ZXIqIFNTTFN0cmVhbUFkYXB0ZXI6OkNyZWF0ZShTdHJlYW1JbnRl
cmZhY2UqIHN0cmVhbSkgewogICByZXR1cm4gbmV3IE9wZW5TU0xTdHJlYW1BZGFwdGVyKHN0cmVh
bSk7CiB9CiAKIFNTTFN0cmVhbUFkYXB0ZXI6OlNTTFN0cmVhbUFkYXB0ZXIoU3RyZWFtSW50ZXJm
YWNlKiBzdHJlYW0pCi0gICAgOiBTdHJlYW1BZGFwdGVySW50ZXJmYWNlKHN0cmVhbSksCi0gICAg
ICBpZ25vcmVfYmFkX2NlcnRfKGZhbHNlKSwKLSAgICAgIGNsaWVudF9hdXRoX2VuYWJsZWRfKHRy
dWUpIHt9CisgICAgOiBTdHJlYW1BZGFwdGVySW50ZXJmYWNlKHN0cmVhbSkge30KIAogU1NMU3Ry
ZWFtQWRhcHRlcjo6flNTTFN0cmVhbUFkYXB0ZXIoKSB7fQogCkBAIC0xNjEsOCArMTMzLDEzIEBA
IGJvb2wgU1NMU3RyZWFtQWRhcHRlcjo6SXNBY2NlcHRhYmxlQ2lwaGVyKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBjaXBoZXIsCiBzdGQ6OnN0cmluZyBTU0xTdHJlYW1BZGFwdGVyOjpTc2xDaXBoZXJTdWl0
ZVRvTmFtZShpbnQgY2lwaGVyX3N1aXRlKSB7CiAgIHJldHVybiBPcGVuU1NMU3RyZWFtQWRhcHRl
cjo6U3NsQ2lwaGVyU3VpdGVUb05hbWUoY2lwaGVyX3N1aXRlKTsKIH0KLXZvaWQgU1NMU3RyZWFt
QWRhcHRlcjo6ZW5hYmxlX3RpbWVfY2FsbGJhY2tfZm9yX3Rlc3RpbmcoKSB7Ci0gIE9wZW5TU0xT
dHJlYW1BZGFwdGVyOjplbmFibGVfdGltZV9jYWxsYmFja19mb3JfdGVzdGluZygpOworCisvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCisvLyBUZXN0IG9ubHkgc2V0dGluZ3MKKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KKwordm9pZCBTU0xTdHJlYW1BZGFwdGVyOjpFbmFibGVUaW1lQ2FsbGJhY2tGb3JU
ZXN0aW5nKCkgeworICBPcGVuU1NMU3RyZWFtQWRhcHRlcjo6RW5hYmxlVGltZUNhbGxiYWNrRm9y
VGVzdGluZygpOwogfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xzdHJlYW1h
ZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9zc2xzdHJlYW1hZGFwdGVyLmgKaW5kZXggMmQ0ZTE5ZjliNTBmZWYzMGMwOGNmMDYzYWRm
NjU0NjQxMzNmZmM4NS4uMjVmNGYzMzQ4NmRhZGQ5ODRjOGE0MmJlMWIzMWQzZjJhYTlhYjU4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXIuaApAQCAtNzAsMzQgKzcw
LDYgQEAgYm9vbCBJc0djbUNyeXB0b1N1aXRlKGludCBjcnlwdG9fc3VpdGUpOwogLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBnaXZlbiBjcnlwdG8gc3VpdGUgbmFtZSB1c2VzIGEgR0NNIGNpcGhlci4K
IGJvb2wgSXNHY21DcnlwdG9TdWl0ZU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGNyeXB0b19zdWl0
ZSk7CiAKLXN0cnVjdCBDcnlwdG9PcHRpb25zIHsKLSAgQ3J5cHRvT3B0aW9ucygpIHt9Ci0KLSAg
Ly8gSGVscGVyIG1ldGhvZCB0byByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlIENyeXB0b09wdGlv
bnMgd2l0aCBHQ00gY3J5cHRvCi0gIC8vIHN1aXRlcyBkaXNhYmxlZC4gVGhpcyBtZXRob2Qgc2hv
dWxkIGJlIHVzZWQgaW5zdGVhZCBvZiBkZXBlbmRpbmcgb24gY3VycmVudAotICAvLyBkZWZhdWx0
IHZhbHVlcyBzZXQgYnkgdGhlIGNvbnN0cnVjdG9yLgotICBzdGF0aWMgQ3J5cHRvT3B0aW9ucyBO
b0djbSgpOwotCi0gIC8vIEVuYWJsZSBHQ00gY3J5cHRvIHN1aXRlcyBmcm9tIFJGQyA3NzE0IGZv
ciBTUlRQLiBHQ00gd2lsbCBvbmx5IGJlIHVzZWQKLSAgLy8gaWYgYm90aCBzaWRlcyBlbmFibGUg
aXQuCi0gIGJvb2wgZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzID0gZmFsc2U7Ci0KLSAgLy8gSWYg
c2V0IHRvIHRydWUsIHRoZSAocG90ZW50aWFsbHkgaW5zZWN1cmUpIGNyeXB0byBjaXBoZXIKLSAg
Ly8gU1JUUF9BRVMxMjhfQ01fU0hBMV8zMiB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9m
IHN1cHBvcnRlZCBjaXBoZXJzCi0gIC8vIGR1cmluZyBuZWdvdGlhdGlvbi4gSXQgd2lsbCBvbmx5
IGJlIHVzZWQgaWYgYm90aCBwZWVycyBzdXBwb3J0IGl0IGFuZCBubwotICAvLyBvdGhlciBjaXBo
ZXJzIGdldCBwcmVmZXJyZWQuCi0gIGJvb2wgZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19j
aXBoZXIgPSBmYWxzZTsKLQotICAvLyBJZiBzZXQgdG8gdHJ1ZSwgZW5jcnlwdGVkIFJUUCBoZWFk
ZXIgZXh0ZW5zaW9ucyBhcyBkZWZpbmVkIGluIFJGQyA2OTA0Ci0gIC8vIHdpbGwgYmUgbmVnb3Rp
YXRlZC4gVGhleSB3aWxsIG9ubHkgYmUgdXNlZCBpZiBib3RoIHBlZXJzIHN1cHBvcnQgdGhlbS4K
LSAgYm9vbCBlbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9IGZhbHNlOwot
fTsKLQotLy8gUmV0dXJucyBzdXBwb3J0ZWQgY3J5cHRvIHN1aXRlcywgZ2l2ZW4gfGNyeXB0b19v
cHRpb25zfC4KLS8vIENTX0FFU19DTV8xMjhfSE1BQ19TSEExXzMyIHdpbGwgYmUgcHJlZmVycmVk
IGJ5IGRlZmF1bHQuCi1zdGQ6OnZlY3RvcjxpbnQ+IEdldFN1cHBvcnRlZER0bHNTcnRwQ3J5cHRv
U3VpdGVzKAotICAgIGNvbnN0IHJ0Yzo6Q3J5cHRvT3B0aW9ucyYgY3J5cHRvX29wdGlvbnMpOwot
CiAvLyBTU0xTdHJlYW1BZGFwdGVyIDogQSBTdHJlYW1JbnRlcmZhY2VBZGFwdGVyIHRoYXQgZG9l
cyBTU0wvVExTLgogLy8gQWZ0ZXIgU1NMIGhhcyBiZWVuIHN0YXJ0ZWQsIHRoZSBzdHJlYW0gd2ls
bCBvbmx5IG9wZW4gb24gc3VjY2Vzc2Z1bAogLy8gU1NMIHZlcmlmaWNhdGlvbiBvZiBjZXJ0aWZp
Y2F0ZXMsIGFuZCB0aGUgY29tbXVuaWNhdGlvbiBpcwpAQCAtMTQ0LDEyICsxMTYsNiBAQCBjbGFz
cyBTU0xTdHJlYW1BZGFwdGVyIDogcHVibGljIFN0cmVhbUFkYXB0ZXJJbnRlcmZhY2UgewogICBl
eHBsaWNpdCBTU0xTdHJlYW1BZGFwdGVyKFN0cmVhbUludGVyZmFjZSogc3RyZWFtKTsKICAgflNT
TFN0cmVhbUFkYXB0ZXIoKSBvdmVycmlkZTsKIAotICB2b2lkIHNldF9pZ25vcmVfYmFkX2NlcnQo
Ym9vbCBpZ25vcmUpIHsgaWdub3JlX2JhZF9jZXJ0XyA9IGlnbm9yZTsgfQotICBib29sIGlnbm9y
ZV9iYWRfY2VydCgpIGNvbnN0IHsgcmV0dXJuIGlnbm9yZV9iYWRfY2VydF87IH0KLQotICB2b2lk
IHNldF9jbGllbnRfYXV0aF9lbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBjbGllbnRfYXV0aF9lbmFi
bGVkXyA9IGVuYWJsZWQ7IH0KLSAgYm9vbCBjbGllbnRfYXV0aF9lbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gY2xpZW50X2F1dGhfZW5hYmxlZF87IH0KLQogICAvLyBTcGVjaWZ5IG91ciBTU0wgaWRl
bnRpdHk6IGtleSBhbmQgY2VydGlmaWNhdGUuIFNTTFN0cmVhbSB0YWtlcyBvd25lcnNoaXAKICAg
Ly8gb2YgdGhlIFNTTElkZW50aXR5IG9iamVjdCBhbmQgd2lsbCBmcmVlIGl0IHdoZW4gYXBwcm9w
cmlhdGUuIFNob3VsZCBiZQogICAvLyBjYWxsZWQgbm8gbW9yZSB0aGFuIG9uY2Ugb24gYSBnaXZl
biBTU0xTdHJlYW0gaW5zdGFuY2UuCkBAIC0yNjMsMjIgKzIyOSwzMiBAQCBjbGFzcyBTU0xTdHJl
YW1BZGFwdGVyIDogcHVibGljIFN0cmVhbUFkYXB0ZXJJbnRlcmZhY2UgewogICAvLyBkZXBlbmRp
bmcgb24gc3BlY2lmaWMgU1NMIGltcGxlbWVudGF0aW9uLgogICBzdGF0aWMgc3RkOjpzdHJpbmcg
U3NsQ2lwaGVyU3VpdGVUb05hbWUoaW50IGNpcGhlcl9zdWl0ZSk7CiAKKyAgLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLworICAvLyBUZXN0aW5nIG9ubHkgbWVtYmVyIGZ1bmN0aW9ucworICAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCisKICAgLy8gVXNlIG91ciB0aW1ldXRpbHMuaCBzb3VyY2Ugb2YgdGltaW5nIGlu
IEJvcmluZ1NTTCwgYWxsb3dpbmcgdXMgdG8gdGVzdAogICAvLyB1c2luZyBhIGZha2UgY2xvY2su
Ci0gIHN0YXRpYyB2b2lkIGVuYWJsZV90aW1lX2NhbGxiYWNrX2Zvcl90ZXN0aW5nKCk7CisgIHN0
YXRpYyB2b2lkIEVuYWJsZVRpbWVDYWxsYmFja0ZvclRlc3RpbmcoKTsKKworICAvLyBEZXByZWNh
dGVkLiBEbyBub3QgdXNlIHRoaXMgQVBJIG91dHNpZGUgb2YgdGVzdGluZy4KKyAgLy8gRG8gbm90
IHNldCB0aGlzIHRvIGZhbHNlIG91dHNpZGUgb2YgdGVzdGluZy4KKyAgdm9pZCBTZXRDbGllbnRB
dXRoRW5hYmxlZEZvclRlc3RpbmcoYm9vbCBlbmFibGVkKSB7CisgICAgY2xpZW50X2F1dGhfZW5h
YmxlZF8gPSBlbmFibGVkOworICB9CisKKyAgLy8gRGVwcmVjYXRlZC4gRG8gbm90IHVzZSB0aGlz
IEFQSSBvdXRzaWRlIG9mIHRlc3RpbmcuCisgIC8vIFJldHVybnMgdHJ1ZSBieSBkZWZhdWx0LCBl
bHNlIGZhbHNlIGlmIGV4cGxpY2l0bHkgc2V0IHRvIGRpc2FibGUgY2xpZW50CisgIC8vIGF1dGhl
bnRpY2F0aW9uLgorICBib29sIEdldENsaWVudEF1dGhFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
Y2xpZW50X2F1dGhfZW5hYmxlZF87IH0KIAogICBzaWdzbG90OjpzaWduYWwxPFNTTEhhbmRzaGFr
ZUVycm9yPiBTaWduYWxTU0xIYW5kc2hha2VFcnJvcjsKIAogIHByaXZhdGU6Ci0gIC8vIElmIHRy
dWUsIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgbmVlZCBub3QgbWF0Y2ggdGhlIGNvbmZpZ3VyZWQK
LSAgLy8gc2VydmVyX25hbWUsIGFuZCBpbiBmYWN0IG1pc3NpbmcgY2VydGlmaWNhdGUgYXV0aG9y
aXR5IGFuZCBvdGhlcgotICAvLyB2ZXJpZmljYXRpb24gZXJyb3JzIGFyZSBpZ25vcmVkLgotICBi
b29sIGlnbm9yZV9iYWRfY2VydF87Ci0KICAgLy8gSWYgdHJ1ZSAoZGVmYXVsdCksIHRoZSBjbGll
bnQgaXMgcmVxdWlyZWQgdG8gcHJvdmlkZSBhIGNlcnRpZmljYXRlIGR1cmluZwogICAvLyBoYW5k
c2hha2UuIElmIG5vIGNlcnRpZmljYXRlIGlzIGdpdmVuLCBoYW5kc2hha2UgZmFpbHMuIFRoaXMg
YXBwbGllcyB0bwogICAvLyBzZXJ2ZXIgbW9kZSBvbmx5LgotICBib29sIGNsaWVudF9hdXRoX2Vu
YWJsZWRfOworICBib29sIGNsaWVudF9hdXRoX2VuYWJsZWRfID0gdHJ1ZTsKIH07CiAKIH0gIC8v
IG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3NzbHN0cmVhbWFkYXB0ZXJfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zc2xzdHJlYW1h
ZGFwdGVyX3VuaXR0ZXN0LmNjCmluZGV4IDM0MDNiZGJlNzI3ZWUzM2YwODYyODYwYzlmNzFhYWQx
ZGI2ZDlmZTcuLjZmYmIxZDdjMmNjMDk4MjJkMjZiYTY3ZTlhNzBlYTUyYzMxNWE3MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3NzbHN0cmVhbWFkYXB0ZXJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3Nsc3RyZWFtYWRhcHRlcl91bml0dGVzdC5j
YwpAQCAtMTcsNiArMTcsOCBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL2d1bml0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvaGVscGVycy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL21lbW9yeV9zdHJlYW0uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9tZXNz
YWdlZGlnZXN0LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3NsYWRhcHRlci5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL3NzbGlkZW50aXR5LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Nsc3RyZWFtYWRh
cHRlci5oIgpAQCAtNTg3LDggKzU4OSw3IEBAIGNsYXNzIFNTTFN0cmVhbUFkYXB0ZXJUZXN0QmFz
ZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAogICAgICAgY2hhaW4gPSBjbGllbnRfc3NsXy0+R2V0
UGVlclNTTENlcnRDaGFpbigpOwogICAgIGVsc2UKICAgICAgIGNoYWluID0gc2VydmVyX3NzbF8t
PkdldFBlZXJTU0xDZXJ0Q2hhaW4oKTsKLSAgICByZXR1cm4gKGNoYWluICYmIGNoYWluLT5HZXRT
aXplKCkpID8gY2hhaW4tPkdldCgwKS5HZXRVbmlxdWVSZWZlcmVuY2UoKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxscHRyOworICAgIHJldHVybiAoY2hhaW4g
JiYgY2hhaW4tPkdldFNpemUoKSkgPyBjaGFpbi0+R2V0KDApLkNsb25lKCkgOiBudWxscHRyOwog
ICB9CiAKICAgYm9vbCBHZXRTc2xDaXBoZXJTdWl0ZShib29sIGNsaWVudCwgaW50KiByZXR2YWwp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3N0cmVhbS5jYwppbmRleCBkMWVjMTQwMGRlNjBiMWRlM2ZlZWRhOWY3
NzlhMDA5NjcyZjIxOTBkLi43ODM2MjVjNjdhOTQ2MDI1MTE5MzdhZTQwZDY2MzQzYWE4NTZlM2Iy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS9zdHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvc3RyZWFtLmNjCkBAIC03LDI5ICs3LDIzIEBACiAgKiAgaW4gdGhl
IGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQogICog
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgogICovCi0KLSNpZiBkZWZpbmVkKFdFQlJUQ19QT1NJWCkKLSNpbmNsdWRlIDxzeXMvZmls
ZS5oPgotI2VuZGlmICAvLyBXRUJSVENfUE9TSVgKICNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1
ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+Ci0KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbWVzc2FnZXF1
ZXVlLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyZWFtLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uv
c3RyaW5nZW5jb2RlLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKICNpbmNs
dWRlICJydGNfYmFzZS90aHJlYWQuaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIK
IAogI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisKICNkZWZp
bmUgZmlsZW5vIF9maWxlbm8KKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBydGMgewpAQCAtNzUsMjYgKzY5LDYgQEAgU3RyZWFtUmVzdWx0IFN0
cmVhbUludGVyZmFjZTo6UmVhZEFsbCh2b2lkKiBidWZmZXIsCiAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLVN0cmVhbVJlc3VsdCBTdHJlYW1JbnRlcmZhY2U6OlJlYWRMaW5lKHN0ZDo6c3RyaW5nKiBs
aW5lKSB7Ci0gIGxpbmUtPmNsZWFyKCk7Ci0gIFN0cmVhbVJlc3VsdCByZXN1bHQgPSBTUl9TVUND
RVNTOwotICB3aGlsZSAodHJ1ZSkgewotICAgIGNoYXIgY2g7Ci0gICAgcmVzdWx0ID0gUmVhZCgm
Y2gsIHNpemVvZihjaCksIG51bGxwdHIsIG51bGxwdHIpOwotICAgIGlmIChyZXN1bHQgIT0gU1Jf
U1VDQ0VTUykgewotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChjaCA9PSAnXG4nKSB7Ci0g
ICAgICBicmVhazsKLSAgICB9Ci0gICAgbGluZS0+cHVzaF9iYWNrKGNoKTsKLSAgfQotICBpZiAo
IWxpbmUtPmVtcHR5KCkpIHsgICAvLyBnaXZlIGJhY2sgdGhlIGxpbmUgd2UndmUgY29sbGVjdGVk
IHNvIGZhciB3aXRoCi0gICAgcmVzdWx0ID0gU1JfU1VDQ0VTUzsgIC8vIGEgc3VjY2VzcyBjb2Rl
LiAgT3RoZXJ3aXNlIHJldHVybiB0aGUgbGFzdCBjb2RlCi0gIH0KLSAgcmV0dXJuIHJlc3VsdDsK
LX0KLQogdm9pZCBTdHJlYW1JbnRlcmZhY2U6OlBvc3RFdmVudChUaHJlYWQqIHQsIGludCBldmVu
dHMsIGludCBlcnIpIHsKICAgdC0+UG9zdChSVENfRlJPTV9IRVJFLCB0aGlzLCBNU0dfUE9TVF9F
VkVOVCwKICAgICAgICAgICBuZXcgU3RyZWFtRXZlbnREYXRhKGV2ZW50cywgZXJyKSk7CkBAIC0x
MDQsMTQgKzc4LDYgQEAgdm9pZCBTdHJlYW1JbnRlcmZhY2U6OlBvc3RFdmVudChpbnQgZXZlbnRz
LCBpbnQgZXJyKSB7CiAgIFBvc3RFdmVudChUaHJlYWQ6OkN1cnJlbnQoKSwgZXZlbnRzLCBlcnIp
OwogfQogCi1jb25zdCB2b2lkKiBTdHJlYW1JbnRlcmZhY2U6OkdldFJlYWREYXRhKHNpemVfdCog
ZGF0YV9sZW4pIHsKLSAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQqIFN0cmVhbUludGVyZmFj
ZTo6R2V0V3JpdGVCdWZmZXIoc2l6ZV90KiBidWZfbGVuKSB7Ci0gIHJldHVybiBudWxscHRyOwot
fQotCiBib29sIFN0cmVhbUludGVyZmFjZTo6U2V0UG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSB7
CiAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTEyNCwxMCArOTAsNiBAQCBib29sIFN0cmVhbUludGVy
ZmFjZTo6R2V0U2l6ZShzaXplX3QqIHNpemUpIGNvbnN0IHsKICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFN0cmVhbUludGVyZmFjZTo6R2V0V3JpdGVSZW1haW5pbmcoc2l6ZV90KiBzaXplKSBj
b25zdCB7Ci0gIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBTdHJlYW1JbnRlcmZhY2U6OkZsdXNo
KCkgewogICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xODgsMTAgKzE1MCw2IEBAIGJvb2wgU3RyZWFt
QWRhcHRlckludGVyZmFjZTo6R2V0U2l6ZShzaXplX3QqIHNpemUpIGNvbnN0IHsKICAgcmV0dXJu
IHN0cmVhbV8tPkdldFNpemUoc2l6ZSk7CiB9CiAKLWJvb2wgU3RyZWFtQWRhcHRlckludGVyZmFj
ZTo6R2V0V3JpdGVSZW1haW5pbmcoc2l6ZV90KiBzaXplKSBjb25zdCB7Ci0gIHJldHVybiBzdHJl
YW1fLT5HZXRXcml0ZVJlbWFpbmluZyhzaXplKTsKLX0KLQogYm9vbCBTdHJlYW1BZGFwdGVySW50
ZXJmYWNlOjpSZXNlcnZlU2l6ZShzaXplX3Qgc2l6ZSkgewogICByZXR1cm4gc3RyZWFtXy0+UmVz
ZXJ2ZVNpemUoc2l6ZSk7CiB9CkBAIC0zODksMTQzICszNDcsNiBAQCB2b2lkIEZpbGVTdHJlYW06
OkRvQ2xvc2UoKSB7CiAgIGZjbG9zZShmaWxlXyk7CiB9CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLS8vIE1lbW9yeVN0cmVhbQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1NZW1vcnlTdHJl
YW1CYXNlOjpNZW1vcnlTdHJlYW1CYXNlKCkKLSAgICA6IGJ1ZmZlcl8obnVsbHB0ciksIGJ1ZmZl
cl9sZW5ndGhfKDApLCBkYXRhX2xlbmd0aF8oMCksIHNlZWtfcG9zaXRpb25fKDApIHt9Ci0KLVN0
cmVhbVN0YXRlIE1lbW9yeVN0cmVhbUJhc2U6OkdldFN0YXRlKCkgY29uc3QgewotICByZXR1cm4g
U1NfT1BFTjsKLX0KLQotU3RyZWFtUmVzdWx0IE1lbW9yeVN0cmVhbUJhc2U6OlJlYWQodm9pZCog
YnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ5dGVz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBieXRlc19yZWFk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBlcnJvcikgewotICBp
ZiAoc2Vla19wb3NpdGlvbl8gPj0gZGF0YV9sZW5ndGhfKSB7Ci0gICAgcmV0dXJuIFNSX0VPUzsK
LSAgfQotICBzaXplX3QgYXZhaWxhYmxlID0gZGF0YV9sZW5ndGhfIC0gc2Vla19wb3NpdGlvbl87
Ci0gIGlmIChieXRlcyA+IGF2YWlsYWJsZSkgewotICAgIC8vIFJlYWQgcGFydGlhbCBidWZmZXIK
LSAgICBieXRlcyA9IGF2YWlsYWJsZTsKLSAgfQotICBtZW1jcHkoYnVmZmVyLCAmYnVmZmVyX1tz
ZWVrX3Bvc2l0aW9uX10sIGJ5dGVzKTsKLSAgc2Vla19wb3NpdGlvbl8gKz0gYnl0ZXM7Ci0gIGlm
IChieXRlc19yZWFkKSB7Ci0gICAgKmJ5dGVzX3JlYWQgPSBieXRlczsKLSAgfQotICByZXR1cm4g
U1JfU1VDQ0VTUzsKLX0KLQotU3RyZWFtUmVzdWx0IE1lbW9yeVN0cmVhbUJhc2U6OldyaXRlKGNv
bnN0IHZvaWQqIGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
KiBieXRlc193cml0dGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCogZXJyb3IpIHsKLSAgc2l6ZV90IGF2YWlsYWJsZSA9IGJ1ZmZlcl9sZW5ndGhfIC0gc2Vla19w
b3NpdGlvbl87Ci0gIGlmICgwID09IGF2YWlsYWJsZSkgewotICAgIC8vIEluY3JlYXNlIGJ1ZmZl
ciBzaXplIHRvIHRoZSBsYXJnZXIgb2Y6Ci0gICAgLy8gYSkgbmV3IHBvc2l0aW9uIHJvdW5kZWQg
dXAgdG8gbmV4dCAyNTYgYnl0ZXMKLSAgICAvLyBiKSBkb3VibGUgdGhlIHByZXZpb3VzIGxlbmd0
aAotICAgIHNpemVfdCBuZXdfYnVmZmVyX2xlbmd0aCA9Ci0gICAgICAgIHN0ZDo6bWF4KCgoc2Vl
a19wb3NpdGlvbl8gKyBieXRlcykgfCAweEZGKSArIDEsIGJ1ZmZlcl9sZW5ndGhfICogMik7Ci0g
ICAgU3RyZWFtUmVzdWx0IHJlc3VsdCA9IERvUmVzZXJ2ZShuZXdfYnVmZmVyX2xlbmd0aCwgZXJy
b3IpOwotICAgIGlmIChTUl9TVUNDRVNTICE9IHJlc3VsdCkgewotICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICB9Ci0gICAgUlRDX0RDSEVDSyhidWZmZXJfbGVuZ3RoXyA+PSBuZXdfYnVmZmVyX2xl
bmd0aCk7Ci0gICAgYXZhaWxhYmxlID0gYnVmZmVyX2xlbmd0aF8gLSBzZWVrX3Bvc2l0aW9uXzsK
LSAgfQotCi0gIGlmIChieXRlcyA+IGF2YWlsYWJsZSkgewotICAgIGJ5dGVzID0gYXZhaWxhYmxl
OwotICB9Ci0gIG1lbWNweSgmYnVmZmVyX1tzZWVrX3Bvc2l0aW9uX10sIGJ1ZmZlciwgYnl0ZXMp
OwotICBzZWVrX3Bvc2l0aW9uXyArPSBieXRlczsKLSAgaWYgKGRhdGFfbGVuZ3RoXyA8IHNlZWtf
cG9zaXRpb25fKSB7Ci0gICAgZGF0YV9sZW5ndGhfID0gc2Vla19wb3NpdGlvbl87Ci0gIH0KLSAg
aWYgKGJ5dGVzX3dyaXR0ZW4pIHsKLSAgICAqYnl0ZXNfd3JpdHRlbiA9IGJ5dGVzOwotICB9Ci0g
IHJldHVybiBTUl9TVUNDRVNTOwotfQotCi12b2lkIE1lbW9yeVN0cmVhbUJhc2U6OkNsb3NlKCkg
ewotICAvLyBub3RoaW5nIHRvIGRvCi19Ci0KLWJvb2wgTWVtb3J5U3RyZWFtQmFzZTo6U2V0UG9z
aXRpb24oc2l6ZV90IHBvc2l0aW9uKSB7Ci0gIGlmIChwb3NpdGlvbiA+IGRhdGFfbGVuZ3RoXykK
LSAgICByZXR1cm4gZmFsc2U7Ci0gIHNlZWtfcG9zaXRpb25fID0gcG9zaXRpb247Ci0gIHJldHVy
biB0cnVlOwotfQotCi1ib29sIE1lbW9yeVN0cmVhbUJhc2U6OkdldFBvc2l0aW9uKHNpemVfdCog
cG9zaXRpb24pIGNvbnN0IHsKLSAgaWYgKHBvc2l0aW9uKQotICAgICpwb3NpdGlvbiA9IHNlZWtf
cG9zaXRpb25fOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNZW1vcnlTdHJlYW1CYXNlOjpH
ZXRTaXplKHNpemVfdCogc2l6ZSkgY29uc3QgewotICBpZiAoc2l6ZSkKLSAgICAqc2l6ZSA9IGRh
dGFfbGVuZ3RoXzsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTWVtb3J5U3RyZWFtQmFzZTo6
UmVzZXJ2ZVNpemUoc2l6ZV90IHNpemUpIHsKLSAgcmV0dXJuIChTUl9TVUNDRVNTID09IERvUmVz
ZXJ2ZShzaXplLCBudWxscHRyKSk7Ci19Ci0KLVN0cmVhbVJlc3VsdCBNZW1vcnlTdHJlYW1CYXNl
OjpEb1Jlc2VydmUoc2l6ZV90IHNpemUsIGludCogZXJyb3IpIHsKLSAgcmV0dXJuIChidWZmZXJf
bGVuZ3RoXyA+PSBzaXplKSA/IFNSX1NVQ0NFU1MgOiBTUl9FT1M7Ci19Ci0KLS8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KLQotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oKSB7fQotCi1NZW1vcnlT
dHJlYW06Ok1lbW9yeVN0cmVhbShjb25zdCBjaGFyKiBkYXRhKSB7Ci0gIFNldERhdGEoZGF0YSwg
c3RybGVuKGRhdGEpKTsKLX0KLQotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oY29uc3Qgdm9p
ZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgewotICBTZXREYXRhKGRhdGEsIGxlbmd0aCk7Ci19Ci0K
LU1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpIHsKLSAgZGVsZXRlW10gYnVmZmVyXzsKLX0K
LQotdm9pZCBNZW1vcnlTdHJlYW06OlNldERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxl
bmd0aCkgewotICBkYXRhX2xlbmd0aF8gPSBidWZmZXJfbGVuZ3RoXyA9IGxlbmd0aDsKLSAgZGVs
ZXRlW10gYnVmZmVyXzsKLSAgYnVmZmVyXyA9IG5ldyBjaGFyW2J1ZmZlcl9sZW5ndGhfXTsKLSAg
bWVtY3B5KGJ1ZmZlcl8sIGRhdGEsIGRhdGFfbGVuZ3RoXyk7Ci0gIHNlZWtfcG9zaXRpb25fID0g
MDsKLX0KLQotU3RyZWFtUmVzdWx0IE1lbW9yeVN0cmVhbTo6RG9SZXNlcnZlKHNpemVfdCBzaXpl
LCBpbnQqIGVycm9yKSB7Ci0gIGlmIChidWZmZXJfbGVuZ3RoXyA+PSBzaXplKQotICAgIHJldHVy
biBTUl9TVUNDRVNTOwotCi0gIGlmIChjaGFyKiBuZXdfYnVmZmVyID0gbmV3IGNoYXJbc2l6ZV0p
IHsKLSAgICBtZW1jcHkobmV3X2J1ZmZlciwgYnVmZmVyXywgZGF0YV9sZW5ndGhfKTsKLSAgICBk
ZWxldGVbXSBidWZmZXJfOwotICAgIGJ1ZmZlcl8gPSBuZXdfYnVmZmVyOwotICAgIGJ1ZmZlcl9s
ZW5ndGhfID0gc2l6ZTsKLSAgICByZXR1cm4gU1JfU1VDQ0VTUzsKLSAgfQotCi0gIGlmIChlcnJv
cikgewotICAgICplcnJvciA9IEVOT01FTTsKLSAgfQotICByZXR1cm4gU1JfRVJST1I7Ci19Ci0K
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIEZpZm9CdWZmZXIKIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KQEAgLTc1OCw2OCArNTc5LDQgQEAgU3RyZWFtUmVzdWx0IEZpZm9CdWZmZXI6OldyaXRl
T2Zmc2V0TG9ja2VkKGNvbnN0IHZvaWQqIGJ1ZmZlciwKICAgcmV0dXJuIFNSX1NVQ0NFU1M7CiB9
CiAKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1TdHJlYW1SZXN1bHQgRmxvdyhTdHJlYW1J
bnRlcmZhY2UqIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgIGNoYXIqIGJ1ZmZlciwKLSAgICAg
ICAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVuLAotICAgICAgICAgICAgICAgICAgU3RyZWFt
SW50ZXJmYWNlKiBzaW5rLAotICAgICAgICAgICAgICAgICAgc2l6ZV90KiBkYXRhX2xlbiAvKiA9
IG51bGxwdHIgKi8pIHsKLSAgUlRDX0RDSEVDSyhidWZmZXJfbGVuID4gMCk7Ci0KLSAgU3RyZWFt
UmVzdWx0IHJlc3VsdDsKLSAgc2l6ZV90IGNvdW50LCByZWFkX3Bvcywgd3JpdGVfcG9zOwotICBp
ZiAoZGF0YV9sZW4pIHsKLSAgICByZWFkX3BvcyA9ICpkYXRhX2xlbjsKLSAgfSBlbHNlIHsKLSAg
ICByZWFkX3BvcyA9IDA7Ci0gIH0KLQotICBib29sIGVuZF9vZl9zdHJlYW0gPSBmYWxzZTsKLSAg
ZG8gewotICAgIC8vIFJlYWQgdW50aWwgYnVmZmVyIGlzIGZ1bGwsIGVuZCBvZiBzdHJlYW0sIG9y
IGVycm9yCi0gICAgd2hpbGUgKCFlbmRfb2Zfc3RyZWFtICYmIChyZWFkX3BvcyA8IGJ1ZmZlcl9s
ZW4pKSB7Ci0gICAgICByZXN1bHQgPSBzb3VyY2UtPlJlYWQoYnVmZmVyICsgcmVhZF9wb3MsIGJ1
ZmZlcl9sZW4gLSByZWFkX3BvcywgJmNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOwotICAgICAgaWYgKHJlc3VsdCA9PSBTUl9FT1MpIHsKLSAgICAgICAgZW5kX29m
X3N0cmVhbSA9IHRydWU7Ci0gICAgICB9IGVsc2UgaWYgKHJlc3VsdCAhPSBTUl9TVUNDRVNTKSB7
Ci0gICAgICAgIGlmIChkYXRhX2xlbikgewotICAgICAgICAgICpkYXRhX2xlbiA9IHJlYWRfcG9z
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9IGVsc2UgewotICAg
ICAgICByZWFkX3BvcyArPSBjb3VudDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBXcml0ZSB1
bnRpbCBidWZmZXIgaXMgZW1wdHksIG9yIGVycm9yIChpbmNsdWRpbmcgZW5kIG9mIHN0cmVhbSkK
LSAgICB3cml0ZV9wb3MgPSAwOwotICAgIHdoaWxlICh3cml0ZV9wb3MgPCByZWFkX3Bvcykgewot
ICAgICAgcmVzdWx0ID0gc2luay0+V3JpdGUoYnVmZmVyICsgd3JpdGVfcG9zLCByZWFkX3BvcyAt
IHdyaXRlX3BvcywgJmNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
Ci0gICAgICBpZiAocmVzdWx0ICE9IFNSX1NVQ0NFU1MpIHsKLSAgICAgICAgaWYgKGRhdGFfbGVu
KSB7Ci0gICAgICAgICAgKmRhdGFfbGVuID0gcmVhZF9wb3MgLSB3cml0ZV9wb3M7Ci0gICAgICAg
ICAgaWYgKHdyaXRlX3BvcyA+IDApIHsKLSAgICAgICAgICAgIG1lbW1vdmUoYnVmZmVyLCBidWZm
ZXIgKyB3cml0ZV9wb3MsICpkYXRhX2xlbik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICB3cml0ZV9wb3MgKz0gY291bnQ7Ci0g
ICAgfQotCi0gICAgcmVhZF9wb3MgPSAwOwotICB9IHdoaWxlICghZW5kX29mX3N0cmVhbSk7Ci0K
LSAgaWYgKGRhdGFfbGVuKSB7Ci0gICAgKmRhdGFfbGVuID0gMDsKLSAgfQotICByZXR1cm4gU1Jf
U1VDQ0VTUzsKLX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCiB9ICAvLyBuYW1lc3BhY2Ug
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3N0cmVhbS5oCmluZGV4IDgxYzVlNDE4MDFhNWJhYWQ2NTFiNDJiNWRh
ZGQ4NDUzYjUxMjMzNzguLjQzZTdmNThiYzdjMDk2MTM3MWNhOWNlMWVkODY1YzAwYmFjMGJlNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3N0cmVhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3N0cmVhbS5oCkBAIC0xOCw3ICsxOCw2IEBACiAjaW5jbHVkZSAicnRj
X2Jhc2UvYnVmZmVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0b3JtYWdpYy5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgotI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlaGFuZGxlci5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL21lc3NhZ2VxdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RoaXJkX3Bh
cnR5L3NpZ3Nsb3Qvc2lnc2xvdC5oIgpAQCAtMTA4LDU5ICsxMDcsNiBAQCBjbGFzcyBTdHJlYW1J
bnRlcmZhY2UgOiBwdWJsaWMgTWVzc2FnZUhhbmRsZXIgewogICAvLyBMaWtlIHRoZSBhZm9yZW1l
bnRpb25lZCBtZXRob2QsIGJ1dCBwb3N0cyB0byB0aGUgY3VycmVudCB0aHJlYWQuCiAgIHZvaWQg
UG9zdEV2ZW50KGludCBldmVudHMsIGludCBlcnIpOwogCi0gIC8vCi0gIC8vIE9QVElPTkFMIE9Q
RVJBVElPTlMKLSAgLy8KLSAgLy8gTm90IGFsbCBpbXBsZW1lbnRhdGlvbnMgd2lsbCBzdXBwb3J0
IHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucy4gIEluIGdlbmVyYWwsCi0gIC8vIGEgc3RyZWFtIHdp
bGwgb25seSBzdXBwb3J0IGFuIG9wZXJhdGlvbiBpZiBpdCByZWFzb25hYmx5IGVmZmljaWVudCB0
byBkbwotICAvLyBzby4gIEZvciBleGFtcGxlLCB3aGlsZSBhIHNvY2tldCBjb3VsZCBidWZmZXIg
aW5jb21pbmcgZGF0YSB0byBzdXBwb3J0Ci0gIC8vIHNlZWtpbmcsIGl0IHdpbGwgbm90IGRvIHNv
LiAgSW5zdGVhZCwgYSBidWZmZXJpbmcgc3RyZWFtIGFkYXB0ZXIgc2hvdWxkCi0gIC8vIGJlIHVz
ZWQuCi0gIC8vCi0gIC8vIEV2ZW4gdGhvdWdoIHNldmVyYWwgb2YgdGhlc2Ugb3BlcmF0aW9ucyBh
cmUgcmVsYXRlZCwgeW91IHNob3VsZAotICAvLyBhbHdheXMgdXNlIHdoaWNoZXZlciBvcGVyYXRp
b24gaXMgbW9zdCByZWxldmFudC4KLSAgLy8KLSAgLy8gVGhlIGZvbGxvd2luZyBmb3VyIG1ldGhv
ZHMgYXJlIHVzZWQgdG8gYXZvaWQgY29weWluZyBkYXRhIG11bHRpcGxlIHRpbWVzLgotCi0gIC8v
IEdldFJlYWREYXRhIHJldHVybnMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIHdoaWNoIGlzIG93bmVk
IGJ5IHRoZSBzdHJlYW0uCi0gIC8vIFRoZSBidWZmZXIgY29udGFpbnMgZGF0YV9sZW4gYnl0ZXMu
ICBudWxsIGlzIHJldHVybmVkIGlmIG5vIGRhdGEgaXMKLSAgLy8gYXZhaWxhYmxlLCBvciBpZiB0
aGUgbWV0aG9kIGZhaWxzLiAgSWYgdGhlIGNhbGxlciBwcm9jZXNzZXMgdGhlIGRhdGEsIGl0Ci0g
IC8vIG11c3QgY2FsbCBDb25zdW1lUmVhZERhdGEgd2l0aCB0aGUgbnVtYmVyIG9mIHByb2Nlc3Nl
ZCBieXRlcy4gIEdldFJlYWREYXRhCi0gIC8vIGRvZXMgbm90IHJlcXVpcmUgYSBtYXRjaGluZyBj
YWxsIHRvIENvbnN1bWVSZWFkRGF0YSBpZiB0aGUgZGF0YSBpcyBub3QKLSAgLy8gcHJvY2Vzc2Vk
LiAgUmVhZCBhbmQgQ29uc3VtZVJlYWREYXRhIGludmFsaWRhdGUgdGhlIGJ1ZmZlciByZXR1cm5l
ZCBieQotICAvLyBHZXRSZWFkRGF0YS4KLSAgdmlydHVhbCBjb25zdCB2b2lkKiBHZXRSZWFkRGF0
YShzaXplX3QqIGRhdGFfbGVuKTsKLSAgdmlydHVhbCB2b2lkIENvbnN1bWVSZWFkRGF0YShzaXpl
X3QgdXNlZCkge30KLQotICAvLyBHZXRXcml0ZUJ1ZmZlciByZXR1cm5zIGEgcG9pbnRlciB0byBh
IGJ1ZmZlciB3aGljaCBpcyBvd25lZCBieSB0aGUgc3RyZWFtLgotICAvLyBUaGUgYnVmZmVyIGhh
cyBhIGNhcGFjaXR5IG9mIGJ1Zl9sZW4gYnl0ZXMuICBudWxsIGlzIHJldHVybmVkIGlmIHRoZXJl
IGlzCi0gIC8vIG5vIGJ1ZmZlciBhdmFpbGFibGUsIG9yIGlmIHRoZSBtZXRob2QgZmFpbHMuICBU
aGUgY2FsbCBtYXkgd3JpdGUgZGF0YSB0bwotICAvLyB0aGUgYnVmZmVyLCBhbmQgdGhlbiBjYWxs
IENvbnN1bWVXcml0ZUJ1ZmZlciB3aXRoIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgLy8gd3JpdHRl
bi4gIEdldFdyaXRlQnVmZmVyIGRvZXMgbm90IHJlcXVpcmUgYSBtYXRjaGluZyBjYWxsIHRvCi0g
IC8vIENvbnN1bWVXcml0ZURhdGEgaWYgbm8gZGF0YSBpcyB3cml0dGVuLiAgV3JpdGUsIEZvcmNl
V3JpdGUsIGFuZAotICAvLyBDb25zdW1lV3JpdGVEYXRhIGludmFsaWRhdGUgdGhlIGJ1ZmZlciBy
ZXR1cm5lZCBieSBHZXRXcml0ZUJ1ZmZlci4KLSAgLy8gVE9ETzogQWxsb3cgdGhlIGNhbGxlciB0
byBzcGVjaWZ5IGEgbWluaW11bSBidWZmZXIgc2l6ZS4gIElmIHRoZSBzcGVjaWZpZWQKLSAgLy8g
YW1vdW50IG9mIGJ1ZmZlciBpcyBub3QgeWV0IGF2YWlsYWJsZSwgcmV0dXJuIG51bGwgYW5kIFNp
Z25hbCBTRV9XUklURQotICAvLyB3aGVuIGl0IGlzIGF2YWlsYWJsZS4gIElmIHRoZSByZXF1ZXN0
ZWQgYW1vdW50IGlzIHRvbyBsYXJnZSwgcmV0dXJuIGFuCi0gIC8vIGVycm9yLgotICB2aXJ0dWFs
IHZvaWQqIEdldFdyaXRlQnVmZmVyKHNpemVfdCogYnVmX2xlbik7Ci0gIHZpcnR1YWwgdm9pZCBD
b25zdW1lV3JpdGVCdWZmZXIoc2l6ZV90IHVzZWQpIHt9Ci0KLSAgLy8gV3JpdGUgZGF0YV9sZW4g
Ynl0ZXMgZm91bmQgaW4gZGF0YSwgY2lyY3VtdmVudGluZyBhbnkgdGhyb3R0bGluZyB3aGljaAot
ICAvLyB3b3VsZCBjb3VsZCBjYXVzZSBTUl9CTE9DSyB0byBiZSByZXR1cm5lZC4gIFJldHVybnMg
dHJ1ZSBpZiBhbGwgdGhlIGRhdGEKLSAgLy8gd2FzIHdyaXR0ZW4uICBPdGhlcndpc2UsIHRoZSBt
ZXRob2QgaXMgdW5zdXBwb3J0ZWQsIG9yIGFuIHVucmVjb3ZlcmFibGUKLSAgLy8gZXJyb3Igb2Nj
dXJyZWQsIGFuZCB0aGUgZXJyb3IgdmFsdWUgaXMgc2V0LiAgVGhpcyBtZXRob2Qgc2hvdWxkIGJl
IHVzZWQKLSAgLy8gc3BhcmluZ2x5IHRvIHdyaXRlIGNyaXRpY2FsIGRhdGEgd2hpY2ggc2hvdWxk
IG5vdCBiZSB0aHJvdHRsZWQuICBBIHN0cmVhbQotICAvLyB3aGljaCBjYW5ub3QgY2lyY3VtdmVu
dCBpdHMgYmxvY2tpbmcgY29uc3RyYWludHMgc2hvdWxkIG5vdCBpbXBsZW1lbnQgdGhpcwotICAv
LyBtZXRob2QuCi0gIC8vIE5PVEU6IFRoaXMgaW50ZXJmYWNlIGlzIGJlaW5nIGNvbnNpZGVyZWQg
ZXhwZXJpbWVudGFsbHkgYXQgdGhlIG1vbWVudC4gIEl0Ci0gIC8vIHdvdWxkIGJlIHVzZWQgYnkg
SlVEUCBhbmQgQmFuZHdpZHRoU3RyZWFtIGFzIGEgd2F5IHRvIGNpcmN1bXZlbnQgY2VydGFpbgot
ICAvLyBzb2Z0IGxpbWl0cyBpbiB3cml0aW5nLgotICAvLyB2aXJ0dWFsIGJvb2wgRm9yY2VXcml0
ZShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YV9sZW4sIGludCogZXJyb3IpIHsKLSAgLy8g
IGlmIChlcnJvcikgKmVycm9yID0gLTE7Ci0gIC8vICByZXR1cm4gZmFsc2U7Ci0gIC8vfQotCiAg
IC8vIFNlZWsgdG8gYSBieXRlIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVh
bS4gIFJldHVybnMgZmFsc2UgaWYKICAgLy8gdGhlIHN0cmVhbSBkb2VzIG5vdCBzdXBwb3J0IHNl
ZWtpbmcsIG9yIGNhbm5vdCBzZWVrIHRvIHRoZSBzcGVjaWZpZWQKICAgLy8gcG9zaXRpb24uCkBA
IC0xNzQsMTAgKzEyMCw2IEBAIGNsYXNzIFN0cmVhbUludGVyZmFjZSA6IHB1YmxpYyBNZXNzYWdl
SGFuZGxlciB7CiAgIC8vIGlzIG5vdCBrbm93bi4KICAgdmlydHVhbCBib29sIEdldFNpemUoc2l6
ZV90KiBzaXplKSBjb25zdDsKIAotICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBXcml0ZSgpLWFi
bGUgYnl0ZXMgcmVtYWluaW5nIGJlZm9yZSBlbmQtb2Ytc3RyZWFtLgotICAvLyBSZXR1cm5zIGZh
bHNlIGlmIG5vdCBrbm93bi4KLSAgdmlydHVhbCBib29sIEdldFdyaXRlUmVtYWluaW5nKHNpemVf
dCogc2l6ZSkgY29uc3Q7Ci0KICAgLy8gUmV0dXJuIHRydWUgaWYgZmx1c2ggaXMgc3VjY2Vzc2Z1
bC4KICAgdmlydHVhbCBib29sIEZsdXNoKCk7CiAKQEAgLTIxNCwxMiArMTU2LDYgQEAgY2xhc3Mg
U3RyZWFtSW50ZXJmYWNlIDogcHVibGljIE1lc3NhZ2VIYW5kbGVyIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90KiByZWFkLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9y
KTsKIAotICAvLyBSZWFkTGluZSBpcyBhIGhlbHBlciBmdW5jdGlvbiB3aGljaCByZXBlYXRlZGx5
IGNhbGxzIFJlYWQgdW50aWwgaXQgaGl0cwotICAvLyB0aGUgZW5kLW9mLWxpbmUgY2hhcmFjdGVy
LCBvciBzb21ldGhpbmcgb3RoZXIgdGhhbiBTUl9TVUNDRVNTLgotICAvLyBUT0RPOiB0aGlzIGlz
IHRvbyBpbmVmZmljaWVudCB0byBrZWVwIGhlcmUuICBCcmVhayB0aGlzIG91dCBpbnRvIGEgYnVm
ZmVyZWQKLSAgLy8gcmVhZGxpbmUgb2JqZWN0IG9yIGFkYXB0ZXIKLSAgU3RyZWFtUmVzdWx0IFJl
YWRMaW5lKHN0ZDo6c3RyaW5nKiBsaW5lKTsKLQogIHByb3RlY3RlZDoKICAgU3RyZWFtSW50ZXJm
YWNlKCk7CiAKQEAgLTI1NSwzNyArMTkxLDkgQEAgY2xhc3MgU3RyZWFtQWRhcHRlckludGVyZmFj
ZSA6IHB1YmxpYyBTdHJlYW1JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVy
cm9yKSBvdmVycmlkZTsKICAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlOwogCi0gIC8vIE9wdGlvbmFs
IFN0cmVhbSBJbnRlcmZhY2UKLSAgLyogIE5vdGU6IE1hbnkgc3RyZWFtIGFkYXB0ZXJzIHdlcmUg
aW1wbGVtZW50ZWQgcHJpb3IgdG8gdGhpcyBSZWFkL1dyaXRlCi0gICAgICBpbnRlcmZhY2UuICBU
aGVyZWZvcmUsIGEgc2ltcGxlIHBhc3MgdGhyb3VnaCBvZiBkYXRhIGluIHRob3NlIGNhc2VzIG1h
eQotICAgICAgYmUgYnJva2VuLiAgQXQgYSBsYXRlciB0aW1lLCB3ZSBzaG91bGQgZG8gYSBvbmNl
LW92ZXIgcGFzcyBvZiBhbGwKLSAgICAgIGFkYXB0ZXJzLCBhbmQgbWFrZSB0aGVtIGNvbXBsaWFu
dCB3aXRoIHRoZXNlIGludGVyZmFjZXMsIGFmdGVyIHdoaWNoIHRoaXMKLSAgICAgIGNvZGUgY2Fu
IGJlIHVuY29tbWVudGVkLgotICB2aXJ0dWFsIGNvbnN0IHZvaWQqIEdldFJlYWREYXRhKHNpemVf
dCogZGF0YV9sZW4pIHsKLSAgICByZXR1cm4gc3RyZWFtXy0+R2V0UmVhZERhdGEoZGF0YV9sZW4p
OwotICB9Ci0gIHZpcnR1YWwgdm9pZCBDb25zdW1lUmVhZERhdGEoc2l6ZV90IHVzZWQpIHsKLSAg
ICBzdHJlYW1fLT5Db25zdW1lUmVhZERhdGEodXNlZCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQq
IEdldFdyaXRlQnVmZmVyKHNpemVfdCogYnVmX2xlbikgewotICAgIHJldHVybiBzdHJlYW1fLT5H
ZXRXcml0ZUJ1ZmZlcihidWZfbGVuKTsKLSAgfQotICB2aXJ0dWFsIHZvaWQgQ29uc3VtZVdyaXRl
QnVmZmVyKHNpemVfdCB1c2VkKSB7Ci0gICAgc3RyZWFtXy0+Q29uc3VtZVdyaXRlQnVmZmVyKHVz
ZWQpOwotICB9Ci0gICovCi0KLSAgLyogIE5vdGU6IFRoaXMgaW50ZXJmYWNlIGlzIGN1cnJlbnRs
eSB1bmRlcmdvaW5nIGV2YWx1YXRpb24uCi0gIHZpcnR1YWwgYm9vbCBGb3JjZVdyaXRlKGNvbnN0
IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhX2xlbiwgaW50KiBlcnJvcikgewotICAgIHJldHVybiBz
dHJlYW1fLT5Gb3JjZVdyaXRlKGRhdGEsIGRhdGFfbGVuLCBlcnJvcik7Ci0gIH0KLSAgKi8KLQog
ICBib29sIFNldFBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgb3ZlcnJpZGU7CiAgIGJvb2wgR2V0
UG9zaXRpb24oc2l6ZV90KiBwb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgIGJvb2wgR2V0U2l6
ZShzaXplX3QqIHNpemUpIGNvbnN0IG92ZXJyaWRlOwotICBib29sIEdldFdyaXRlUmVtYWluaW5n
KHNpemVfdCogc2l6ZSkgY29uc3Qgb3ZlcnJpZGU7CiAgIGJvb2wgUmVzZXJ2ZVNpemUoc2l6ZV90
IHNpemUpIG92ZXJyaWRlOwogICBib29sIEZsdXNoKCkgb3ZlcnJpZGU7CiAKQEAgLTM1Myw2OCAr
MjYxLDExIEBAIGNsYXNzIEZpbGVTdHJlYW0gOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKICAg
UlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihGaWxlU3RyZWFtKTsKIH07CiAKLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLS8vIE1lbW9yeVN0cmVhbSBpcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlv
biBvZiBhIFN0cmVhbUludGVyZmFjZSBvdmVyIGluLW1lbW9yeQotLy8gZGF0YS4gIERhdGEgaXMg
cmVhZCBhbmQgd3JpdHRlbiBhdCB0aGUgY3VycmVudCBzZWVrIHBvc2l0aW9uLiAgUmVhZHMgcmV0
dXJuCi0vLyBlbmQtb2Ytc3RyZWFtIHdoZW4gdGhleSByZWFjaCB0aGUgZW5kIG9mIGRhdGEuICBX
cml0ZXMgYWN0dWFsbHkgZXh0ZW5kIHRoZQotLy8gZW5kIG9mIGRhdGEgbWFyay4KLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLQotY2xhc3MgTWVtb3J5U3RyZWFtQmFzZSA6IHB1YmxpYyBTdHJlYW1J
bnRlcmZhY2UgewotIHB1YmxpYzoKLSAgU3RyZWFtU3RhdGUgR2V0U3RhdGUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgU3RyZWFtUmVzdWx0IFJlYWQodm9pZCogYnVmZmVyLAotICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgIHNpemVfdCogYnl0ZXNfcmVh
ZCwKLSAgICAgICAgICAgICAgICAgICAgaW50KiBlcnJvcikgb3ZlcnJpZGU7Ci0gIFN0cmVhbVJl
c3VsdCBXcml0ZShjb25zdCB2b2lkKiBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGJ5dGVzX3dyaXR0ZW4sCi0g
ICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVycmlkZTsKLSAgdm9pZCBDbG9zZSgp
IG92ZXJyaWRlOwotICBib29sIFNldFBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgb3ZlcnJpZGU7
Ci0gIGJvb2wgR2V0UG9zaXRpb24oc2l6ZV90KiBwb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGU7Ci0g
IGJvb2wgR2V0U2l6ZShzaXplX3QqIHNpemUpIGNvbnN0IG92ZXJyaWRlOwotICBib29sIFJlc2Vy
dmVTaXplKHNpemVfdCBzaXplKSBvdmVycmlkZTsKLQotICBjaGFyKiBHZXRCdWZmZXIoKSB7IHJl
dHVybiBidWZmZXJfOyB9Ci0gIGNvbnN0IGNoYXIqIEdldEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IGJ1ZmZlcl87IH0KLQotIHByb3RlY3RlZDoKLSAgTWVtb3J5U3RyZWFtQmFzZSgpOwotCi0gIHZp
cnR1YWwgU3RyZWFtUmVzdWx0IERvUmVzZXJ2ZShzaXplX3Qgc2l6ZSwgaW50KiBlcnJvcik7Ci0K
LSAgLy8gSW52YXJpYW50OiAwIDw9IHNlZWtfcG9zaXRpb24gPD0gZGF0YV9sZW5ndGhfIDw9IGJ1
ZmZlcl9sZW5ndGhfCi0gIGNoYXIqIGJ1ZmZlcl87Ci0gIHNpemVfdCBidWZmZXJfbGVuZ3RoXzsK
LSAgc2l6ZV90IGRhdGFfbGVuZ3RoXzsKLSAgc2l6ZV90IHNlZWtfcG9zaXRpb25fOwotCi0gcHJp
dmF0ZToKLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihNZW1vcnlTdHJlYW1CYXNlKTsK
LX07Ci0KLS8vIE1lbW9yeVN0cmVhbSBkeW5hbWljYWxseSByZXNpemVzIHRvIGFjY29tb2RhdGUg
d3JpdHRlbiBkYXRhLgotCi1jbGFzcyBNZW1vcnlTdHJlYW0gOiBwdWJsaWMgTWVtb3J5U3RyZWFt
QmFzZSB7Ci0gcHVibGljOgotICBNZW1vcnlTdHJlYW0oKTsKLSAgZXhwbGljaXQgTWVtb3J5U3Ry
ZWFtKGNvbnN0IGNoYXIqIGRhdGEpOyAgLy8gQ2FsbHMgU2V0RGF0YShkYXRhLCBzdHJsZW4oZGF0
YSkpCi0gIE1lbW9yeVN0cmVhbShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsgIC8v
IENhbGxzIFNldERhdGEoZGF0YSwgbGVuZ3RoKQotICB+TWVtb3J5U3RyZWFtKCkgb3ZlcnJpZGU7
Ci0KLSAgdm9pZCBTZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwotCi0g
cHJvdGVjdGVkOgotICBTdHJlYW1SZXN1bHQgRG9SZXNlcnZlKHNpemVfdCBzaXplLCBpbnQqIGVy
cm9yKSBvdmVycmlkZTsKLX07Ci0KIC8vIEZpZm9CdWZmZXIgYWxsb3dzIGZvciBlZmZpY2llbnQs
IHRocmVhZC1zYWZlIGJ1ZmZlcmluZyBvZiBkYXRhIGJldHdlZW4KIC8vIHdyaXRlciBhbmQgcmVh
ZGVyLiBBcyB0aGUgZGF0YSBjYW4gd3JhcCBhcm91bmQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLAog
Ly8gTWVtb3J5U3RyZWFtQmFzZSBjYW4ndCBoZWxwIHVzIGhlcmUuCiAKLWNsYXNzIEZpZm9CdWZm
ZXIgOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKK2NsYXNzIEZpZm9CdWZmZXIgZmluYWwgOiBw
dWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIC8vIENyZWF0ZXMgYSBGSUZPIGJ1
ZmZlciB3aXRoIHRoZSBzcGVjaWZpZWQgY2FwYWNpdHkuCiAgIGV4cGxpY2l0IEZpZm9CdWZmZXIo
c2l6ZV90IGxlbmd0aCk7CkBAIC00NTUsMTEgKzMwNiwyOCBAQCBjbGFzcyBGaWZvQnVmZmVyIDog
cHVibGljIFN0cmVhbUludGVyZmFjZSB7CiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGJ5
dGVzX3dyaXR0ZW4sCiAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSBvdmVycmlkZTsK
ICAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlOwotICBjb25zdCB2b2lkKiBHZXRSZWFkRGF0YShzaXpl
X3QqIGRhdGFfbGVuKSBvdmVycmlkZTsKLSAgdm9pZCBDb25zdW1lUmVhZERhdGEoc2l6ZV90IHVz
ZWQpIG92ZXJyaWRlOwotICB2b2lkKiBHZXRXcml0ZUJ1ZmZlcihzaXplX3QqIGJ1Zl9sZW4pIG92
ZXJyaWRlOwotICB2b2lkIENvbnN1bWVXcml0ZUJ1ZmZlcihzaXplX3QgdXNlZCkgb3ZlcnJpZGU7
Ci0gIGJvb2wgR2V0V3JpdGVSZW1haW5pbmcoc2l6ZV90KiBzaXplKSBjb25zdCBvdmVycmlkZTsK
KyAgLy8gR2V0UmVhZERhdGEgcmV0dXJucyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgd2hpY2ggaXMg
b3duZWQgYnkgdGhlIHN0cmVhbS4KKyAgLy8gVGhlIGJ1ZmZlciBjb250YWlucyBkYXRhX2xlbiBi
eXRlcy4gIG51bGwgaXMgcmV0dXJuZWQgaWYgbm8gZGF0YSBpcworICAvLyBhdmFpbGFibGUsIG9y
IGlmIHRoZSBtZXRob2QgZmFpbHMuICBJZiB0aGUgY2FsbGVyIHByb2Nlc3NlcyB0aGUgZGF0YSwg
aXQKKyAgLy8gbXVzdCBjYWxsIENvbnN1bWVSZWFkRGF0YSB3aXRoIHRoZSBudW1iZXIgb2YgcHJv
Y2Vzc2VkIGJ5dGVzLiAgR2V0UmVhZERhdGEKKyAgLy8gZG9lcyBub3QgcmVxdWlyZSBhIG1hdGNo
aW5nIGNhbGwgdG8gQ29uc3VtZVJlYWREYXRhIGlmIHRoZSBkYXRhIGlzIG5vdAorICAvLyBwcm9j
ZXNzZWQuICBSZWFkIGFuZCBDb25zdW1lUmVhZERhdGEgaW52YWxpZGF0ZSB0aGUgYnVmZmVyIHJl
dHVybmVkIGJ5CisgIC8vIEdldFJlYWREYXRhLgorICBjb25zdCB2b2lkKiBHZXRSZWFkRGF0YShz
aXplX3QqIGRhdGFfbGVuKTsKKyAgdm9pZCBDb25zdW1lUmVhZERhdGEoc2l6ZV90IHVzZWQpOwor
ICAvLyBHZXRXcml0ZUJ1ZmZlciByZXR1cm5zIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB3aGljaCBp
cyBvd25lZCBieSB0aGUgc3RyZWFtLgorICAvLyBUaGUgYnVmZmVyIGhhcyBhIGNhcGFjaXR5IG9m
IGJ1Zl9sZW4gYnl0ZXMuICBudWxsIGlzIHJldHVybmVkIGlmIHRoZXJlIGlzCisgIC8vIG5vIGJ1
ZmZlciBhdmFpbGFibGUsIG9yIGlmIHRoZSBtZXRob2QgZmFpbHMuICBUaGUgY2FsbCBtYXkgd3Jp
dGUgZGF0YSB0bworICAvLyB0aGUgYnVmZmVyLCBhbmQgdGhlbiBjYWxsIENvbnN1bWVXcml0ZUJ1
ZmZlciB3aXRoIHRoZSBudW1iZXIgb2YgYnl0ZXMKKyAgLy8gd3JpdHRlbi4gIEdldFdyaXRlQnVm
ZmVyIGRvZXMgbm90IHJlcXVpcmUgYSBtYXRjaGluZyBjYWxsIHRvCisgIC8vIENvbnN1bWVXcml0
ZURhdGEgaWYgbm8gZGF0YSBpcyB3cml0dGVuLiAgV3JpdGUgYW5kCisgIC8vIENvbnN1bWVXcml0
ZURhdGEgaW52YWxpZGF0ZSB0aGUgYnVmZmVyIHJldHVybmVkIGJ5IEdldFdyaXRlQnVmZmVyLgor
ICB2b2lkKiBHZXRXcml0ZUJ1ZmZlcihzaXplX3QqIGJ1Zl9sZW4pOworICB2b2lkIENvbnN1bWVX
cml0ZUJ1ZmZlcihzaXplX3QgdXNlZCk7CisKKyAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgV3Jp
dGUoKS1hYmxlIGJ5dGVzIHJlbWFpbmluZyBiZWZvcmUgZW5kLW9mLXN0cmVhbS4KKyAgLy8gUmV0
dXJucyBmYWxzZSBpZiBub3Qga25vd24uCisgIGJvb2wgR2V0V3JpdGVSZW1haW5pbmcoc2l6ZV90
KiBzaXplKSBjb25zdDsKIAogIHByaXZhdGU6CiAgIC8vIEhlbHBlciBtZXRob2QgdGhhdCBpbXBs
ZW1lbnRzIFJlYWRPZmZzZXQuIENhbGxlciBtdXN0IGFjcXVpcmUgYSBsb2NrCkBAIC00OTUsMjUg
KzM2Myw2IEBAIGNsYXNzIEZpZm9CdWZmZXIgOiBwdWJsaWMgU3RyZWFtSW50ZXJmYWNlIHsKICAg
UlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihGaWZvQnVmZmVyKTsKIH07CiAKLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLQotLy8gRmxvdyBhdHRlbXB0cyB0byBtb3ZlIGJ5dGVzIGZyb20gc291
cmNlIHRvIHNpbmsgdmlhIGJ1ZmZlciBvZiBzaXplCi0vLyBidWZmZXJfbGVuLiAgVGhlIGZ1bmN0
aW9uIHJldHVybnMgU1JfU1VDQ0VTUyB3aGVuIHNvdXJjZSByZWFjaGVzCi0vLyBlbmQtb2Ytc3Ry
ZWFtIChyZXR1cm5zIFNSX0VPUyksIGFuZCBhbGwgdGhlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiBz
dWNjZXNzZnVsCi0vLyB0byBzaW5rLiAgQWx0ZXJuYXRlbHksIGlmIHNvdXJjZSByZXR1cm5zIFNS
X0JMT0NLIG9yIFNSX0VSUk9SLCBvciBpZiBzaW5rCi0vLyByZXR1cm5zIFNSX0JMT0NLLCBTUl9F
UlJPUiwgb3IgU1JfRU9TLCB0aGVuIHRoZSBmdW5jdGlvbiBpbW1lZGlhdGVseSByZXR1cm5zCi0v
LyB3aXRoIHRoZSB1bmV4cGVjdGVkIFN0cmVhbVJlc3VsdCB2YWx1ZS4KLS8vIGRhdGFfbGVuIGlz
IHRoZSBsZW5ndGggb2YgdGhlIHZhbGlkIGRhdGEgaW4gYnVmZmVyLiBpbiBjYXNlIG9mIGVycm9y
Ci0vLyB0aGlzIGlzIHRoZSBkYXRhIHRoYXQgcmVhZCBmcm9tIHNvdXJjZSBidXQgY2FuJ3QgbW92
ZSB0byBkZXN0aW5hdGlvbi4KLS8vIGFzIGEgcGFzcyBpbiBwYXJhbWV0ZXIsIGl0IGluZGljYXRl
cyBkYXRhIGluIGJ1ZmZlciB0aGF0IHNob3VsZCBtb3ZlIHRvIHNpbmsKLVN0cmVhbVJlc3VsdCBG
bG93KFN0cmVhbUludGVyZmFjZSogc291cmNlLAotICAgICAgICAgICAgICAgICAgY2hhciogYnVm
ZmVyLAotICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZW4sCi0gICAgICAgICAgICAg
ICAgICBTdHJlYW1JbnRlcmZhY2UqIHNpbmssCi0gICAgICAgICAgICAgICAgICBzaXplX3QqIGRh
dGFfbGVuID0gbnVsbHB0cik7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQogfSAgLy8gbmFt
ZXNwYWNlIHJ0YwogCiAjZW5kaWYgIC8vIFJUQ19CQVNFX1NUUkVBTV9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyZWFt
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3RyZWFtX3VuaXR0ZXN0LmNjCmluZGV4IDYxNjc4M2NiNGRjNzYwMTFmNjA3OTNh
MDZhMjhiMDhmZjc5ODMyMGUuLjJjYTI1MjZjM2NhYWVhNzBmNDU0M2MwOTg2MmI0YmJjZmFmNGNk
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3N0cmVhbV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJlYW1fdW5pdHRlc3QuY2MKQEAgLTEwNSw1
NiArMTA1LDUyIEBAIFRFU1QoRmlmb0J1ZmZlclRlc3QsIFRlc3RBbGwpIHsKICAgY29uc3Qgdm9p
ZCogcTsKICAgc2l6ZV90IGJ5dGVzOwogICBGaWZvQnVmZmVyIGJ1ZihrU2l6ZSk7Ci0gIFN0cmVh
bUludGVyZmFjZSogc3RyZWFtID0gJmJ1ZjsKIAogICAvLyBUZXN0IGFzc3VtcHRpb25zIGFib3V0
IGJhc2Ugc3RhdGUKLSAgRVhQRUNUX0VRKFNTX09QRU4sIHN0cmVhbS0+R2V0U3RhdGUoKSk7Ci0g
IEVYUEVDVF9FUShTUl9CTE9DSywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVs
bHB0cikpOwotICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHN0cmVhbS0+R2V0UmVhZERhdGEoJmJ5
dGVzKSk7Ci0gIEVYUEVDVF9FUSgoc2l6ZV90KTAsIGJ5dGVzKTsKLSAgc3RyZWFtLT5Db25zdW1l
UmVhZERhdGEoMCk7Ci0gIEVYUEVDVF9UUlVFKG51bGxwdHIgIT0gc3RyZWFtLT5HZXRXcml0ZUJ1
ZmZlcigmYnl0ZXMpKTsKKyAgRVhQRUNUX0VRKFNTX09QRU4sIGJ1Zi5HZXRTdGF0ZSgpKTsKKyAg
RVhQRUNUX0VRKFNSX0JMT0NLLCBidWYuUmVhZChvdXQsIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIp
KTsKKyAgRVhQRUNUX1RSVUUobnVsbHB0ciAhPSBidWYuR2V0V3JpdGVCdWZmZXIoJmJ5dGVzKSk7
CiAgIEVYUEVDVF9FUShrU2l6ZSwgYnl0ZXMpOwotICBzdHJlYW0tPkNvbnN1bWVXcml0ZUJ1ZmZl
cigwKTsKKyAgYnVmLkNvbnN1bWVXcml0ZUJ1ZmZlcigwKTsKIAogICAvLyBUcnkgYSBmdWxsIHdy
aXRlCi0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSwgJmJ5
dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtT
aXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAKICAg
Ly8gVHJ5IGEgd3JpdGUgdGhhdCBzaG91bGQgYmxvY2sKLSAgRVhQRUNUX0VRKFNSX0JMT0NLLCBz
dHJlYW0tPldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShT
Ul9CTE9DSywgYnVmLldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAKICAgLy8g
VHJ5IGEgZnVsbCByZWFkCi0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0
LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYu
UmVhZChvdXQsIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplLCBi
eXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUpKTsKIAogICAvLyBU
cnkgYSByZWFkIHRoYXQgc2hvdWxkIGJsb2NrCi0gIEVYUEVDVF9FUShTUl9CTE9DSywgc3RyZWFt
LT5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfQkxP
Q0ssIGJ1Zi5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogCiAgIC8vIFRyeSBh
IHRvby1iaWcgd3JpdGUKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4s
IGtTaXplICogMiwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBi
dWYuV3JpdGUoaW4sIGtTaXplICogMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShi
eXRlcywga1NpemUpOwogCiAgIC8vIFRyeSBhIHRvby1iaWcgcmVhZAotICBFWFBFQ1RfRVEoU1Jf
U1VDQ0VTUywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUgKiAyLCAmYnl0ZXMsIG51bGxwdHIpKTsK
KyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5SZWFkKG91dCwga1NpemUgKiAyLCAmYnl0ZXMs
IG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBt
ZW1jbXAoaW4sIG91dCwga1NpemUpKTsKIAogICAvLyBUcnkgc29tZSBzbWFsbCB3cml0ZXMgYW5k
IHJlYWRzCi0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAv
IDIsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRl
KGluLCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAy
LCBieXRlcyk7Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6
ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJl
YWQob3V0LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUg
LyAyLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUgLyAyKSk7
Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAvIDIsICZi
eXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBr
U2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRl
cyk7Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAvIDIs
ICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGlu
LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBi
eXRlcyk7Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAv
IDIsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQo
b3V0LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAy
LCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUgLyAyKSk7Ci0g
IEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAvIDIsICZieXRl
cywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6
ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7
CiAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW4sIG91dCwga1NpemUgLyAyKSk7CiAKQEAgLTE2Niw1
MSArMTYyLDUxIEBAIFRFU1QoRmlmb0J1ZmZlclRlc3QsIFRlc3RBbGwpIHsKICAgLy8gWFhYWFdX
V1dXV1dXWFhYWCA0NTY3MDEyMzQ1NjcwMTIzCiAgIC8vIFJSUlJYWFhYWFhYWFJSUlIgLi4uLjAx
MjM0NTY3Li4uLgogICAvLyAuLi4uUlJSUlJSUlIuLi4uIC4uLi4uLi4uLi4uLi4uLi4KLSAgRVhQ
RUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplICogMyAvIDQsICZieXRl
cywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6
ZSAqIDMgLyA0LCAmYnl0ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplICogMyAvIDQs
IGJ5dGVzKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXpl
IC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVh
ZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAv
IDIsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsK
LSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplIC8gMiwgJmJ5
dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtT
aXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVz
KTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gNCwg
JmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQs
IGtTaXplIC8gNCwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDQsIGJ5
dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiArIGtTaXplIC8gMiwgb3V0LCBrU2l6ZSAv
IDQpKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplIC8g
MiwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUo
aW4sIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIs
IGJ5dGVzKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXpl
IC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVh
ZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAv
IDIsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsK
LSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5
dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtT
aXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9FUShrU2l6ZSAvIDIsIGJ5dGVz
KTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSAvIDIpKTsKIAogICAvLyBV
c2UgR2V0V3JpdGVCdWZmZXIgdG8gcmVzZXQgdGhlIHJlYWRfcG9zaXRpb24gZm9yIHRoZSBuZXh0
IHRlc3RzCi0gIHN0cmVhbS0+R2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKLSAgc3RyZWFtLT5Db25z
dW1lV3JpdGVCdWZmZXIoMCk7CisgIGJ1Zi5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOworICBidWYu
Q29uc3VtZVdyaXRlQnVmZmVyKDApOwogCiAgIC8vIFRyeSB1c2luZyBHZXRSZWFkRGF0YSB0byBk
byBhIGZ1bGwgcmVhZAotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiwg
a1NpemUsICZieXRlcywgbnVsbHB0cikpOwotICBxID0gc3RyZWFtLT5HZXRSZWFkRGF0YSgmYnl0
ZXMpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVz
LCBudWxscHRyKSk7CisgIHEgPSBidWYuR2V0UmVhZERhdGEoJmJ5dGVzKTsKICAgRVhQRUNUX1RS
VUUobnVsbHB0ciAhPSBxKTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAgIEVYUEVDVF9F
USgwLCBtZW1jbXAocSwgaW4sIGtTaXplKSk7Ci0gIHN0cmVhbS0+Q29uc3VtZVJlYWREYXRhKGtT
aXplKTsKLSAgRVhQRUNUX0VRKFNSX0JMT0NLLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSwgJmJ5
dGVzLCBudWxscHRyKSk7CisgIGJ1Zi5Db25zdW1lUmVhZERhdGEoa1NpemUpOworICBFWFBFQ1Rf
RVEoU1JfQkxPQ0ssIGJ1Zi5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogCiAg
IC8vIFRyeSB1c2luZyBHZXRSZWFkRGF0YSB0byBkbyBzb21lIHNtYWxsIHJlYWRzCi0gIEVYUEVD
VF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRy
KSk7Ci0gIHEgPSBzdHJlYW0tPkdldFJlYWREYXRhKCZieXRlcyk7CisgIEVYUEVDVF9FUShTUl9T
VUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgcSA9IGJ1
Zi5HZXRSZWFkRGF0YSgmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHEpOwogICBF
WFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChxLCBpbiwga1Np
emUgLyAyKSk7Ci0gIHN0cmVhbS0+Q29uc3VtZVJlYWREYXRhKGtTaXplIC8gMik7Ci0gIHEgPSBz
dHJlYW0tPkdldFJlYWREYXRhKCZieXRlcyk7CisgIGJ1Zi5Db25zdW1lUmVhZERhdGEoa1NpemUg
LyAyKTsKKyAgcSA9IGJ1Zi5HZXRSZWFkRGF0YSgmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxs
cHRyICE9IHEpOwogICBFWFBFQ1RfRVEoa1NpemUgLyAyLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgw
LCBtZW1jbXAocSwgaW4gKyBrU2l6ZSAvIDIsIGtTaXplIC8gMikpOwotICBzdHJlYW0tPkNvbnN1
bWVSZWFkRGF0YShrU2l6ZSAvIDIpOwotICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIHN0cmVhbS0+UmVh
ZChvdXQsIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgYnVmLkNvbnN1bWVSZWFkRGF0YShr
U2l6ZSAvIDIpOworICBFWFBFQ1RfRVEoU1JfQkxPQ0ssIGJ1Zi5SZWFkKG91dCwga1NpemUsICZi
eXRlcywgbnVsbHB0cikpOwogCiAgIC8vIFRyeSB1c2luZyBHZXRSZWFkRGF0YSBpbiBhIHdyYXBh
cm91bmQgY2FzZQogICAvLyBXV1dXV1dXV1dXV1dXV1dXIDAxMjM0NTY3ODlBQkNERUYKQEAgLTIx
OCw0NiArMjE0LDQ2IEBAIFRFU1QoRmlmb0J1ZmZlclRlc3QsIFRlc3RBbGwpIHsKICAgLy8gV1dX
V1dXV1cuLi4uWFhYWCAwMTIzNDU2Ny4uLi5DREVGCiAgIC8vIC4uLi4uLi4uLi4uLlJSUlIgMDEy
MzQ1NjcuLi4uLi4uLgogICAvLyBSUlJSUlJSUi4uLi4uLi4uIC4uLi4uLi4uLi4uLi4uLi4KLSAg
RVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51
bGxwdHIpKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXpl
ICogMyAvIDQsICZieXRlcywgbnVsbHB0cikpOwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3Ry
ZWFtLT5Xcml0ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKLSAgcSA9IHN0cmVh
bS0+R2V0UmVhZERhdGEoJmJ5dGVzKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0
ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywg
YnVmLlJlYWQob3V0LCBrU2l6ZSAqIDMgLyA0LCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNU
X0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIp
KTsKKyAgcSA9IGJ1Zi5HZXRSZWFkRGF0YSgmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRy
ICE9IHEpOwogICBFWFBFQ1RfRVEoa1NpemUgLyA0LCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBt
ZW1jbXAocSwgaW4gKyBrU2l6ZSAqIDMgLyA0LCBrU2l6ZSAvIDQpKTsKLSAgc3RyZWFtLT5Db25z
dW1lUmVhZERhdGEoa1NpemUgLyA0KTsKLSAgcSA9IHN0cmVhbS0+R2V0UmVhZERhdGEoJmJ5dGVz
KTsKKyAgYnVmLkNvbnN1bWVSZWFkRGF0YShrU2l6ZSAvIDQpOworICBxID0gYnVmLkdldFJlYWRE
YXRhKCZieXRlcyk7CiAgIEVYUEVDVF9UUlVFKG51bGxwdHIgIT0gcSk7CiAgIEVYUEVDVF9FUShr
U2l6ZSAvIDIsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChxLCBpbiwga1NpemUgLyAy
KSk7Ci0gIHN0cmVhbS0+Q29uc3VtZVJlYWREYXRhKGtTaXplIC8gMik7CisgIGJ1Zi5Db25zdW1l
UmVhZERhdGEoa1NpemUgLyAyKTsKIAogICAvLyBVc2UgR2V0V3JpdGVCdWZmZXIgdG8gcmVzZXQg
dGhlIHJlYWRfcG9zaXRpb24gZm9yIHRoZSBuZXh0IHRlc3RzCi0gIHN0cmVhbS0+R2V0V3JpdGVC
dWZmZXIoJmJ5dGVzKTsKLSAgc3RyZWFtLT5Db25zdW1lV3JpdGVCdWZmZXIoMCk7CisgIGJ1Zi5H
ZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOworICBidWYuQ29uc3VtZVdyaXRlQnVmZmVyKDApOwogCiAg
IC8vIFRyeSB1c2luZyBHZXRXcml0ZUJ1ZmZlciB0byBkbyBhIGZ1bGwgd3JpdGUKLSAgcCA9IHN0
cmVhbS0+R2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKKyAgcCA9IGJ1Zi5HZXRXcml0ZUJ1ZmZlcigm
Ynl0ZXMpOwogICBFWFBFQ1RfVFJVRShudWxscHRyICE9IHApOwogICBFWFBFQ1RfRVEoa1NpemUs
IGJ5dGVzKTsKICAgbWVtY3B5KHAsIGluLCBrU2l6ZSk7Ci0gIHN0cmVhbS0+Q29uc3VtZVdyaXRl
QnVmZmVyKGtTaXplKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQs
IGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgYnVmLkNvbnN1bWVXcml0ZUJ1ZmZlcihrU2l6
ZSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuUmVhZChvdXQsIGtTaXplLCAmYnl0ZXMs
IG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplLCBieXRlcyk7CiAgIEVYUEVDVF9FUSgwLCBt
ZW1jbXAoaW4sIG91dCwga1NpemUpKTsKIAogICAvLyBUcnkgdXNpbmcgR2V0V3JpdGVCdWZmZXIg
dG8gZG8gc29tZSBzbWFsbCB3cml0ZXMKLSAgcCA9IHN0cmVhbS0+R2V0V3JpdGVCdWZmZXIoJmJ5
dGVzKTsKKyAgcCA9IGJ1Zi5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOwogICBFWFBFQ1RfVFJVRShu
dWxscHRyICE9IHApOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgbWVtY3B5KHAsIGlu
LCBrU2l6ZSAvIDIpOwotICBzdHJlYW0tPkNvbnN1bWVXcml0ZUJ1ZmZlcihrU2l6ZSAvIDIpOwot
ICBwID0gc3RyZWFtLT5HZXRXcml0ZUJ1ZmZlcigmYnl0ZXMpOworICBidWYuQ29uc3VtZVdyaXRl
QnVmZmVyKGtTaXplIC8gMik7CisgIHAgPSBidWYuR2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKICAg
RVhQRUNUX1RSVUUobnVsbHB0ciAhPSBwKTsKICAgRVhQRUNUX0VRKGtTaXplIC8gMiwgYnl0ZXMp
OwogICBtZW1jcHkocCwgaW4gKyBrU2l6ZSAvIDIsIGtTaXplIC8gMik7Ci0gIHN0cmVhbS0+Q29u
c3VtZVdyaXRlQnVmZmVyKGtTaXplIC8gMik7Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJl
YW0tPlJlYWQob3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIGJ1Zi5Db25zdW1lV3Jp
dGVCdWZmZXIoa1NpemUgLyAyKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5SZWFkKG91
dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsK
ICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6ZSkpOwogCkBAIC0yNjcsNTMgKzI2
Myw1MyBAQCBURVNUKEZpZm9CdWZmZXJUZXN0LCBUZXN0QWxsKSB7CiAgIC8vIC4uLi4uLi4uWFhY
WFdXV1cgLi4uLi4uLi44OUFCMDEyMwogICAvLyBXV1dXLi4uLlhYWFhYWFhYIDQ1NjcuLi4uODlB
QjAxMjMKICAgLy8gUlJSUi4uLi5SUlJSUlJSUiAuLi4uLi4uLi4uLi4uLi4uCi0gIEVYUEVDVF9F
UShTUl9TVUNDRVNTLCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAqIDMgLyA0LCAmYnl0ZXMsIG51
bGxwdHIpKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChvdXQsIGtTaXpl
IC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7Ci0gIHAgPSBzdHJlYW0tPkdldFdyaXRlQnVmZmVyKCZi
eXRlcyk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBidWYuV3JpdGUoaW4sIGtTaXplICogMyAv
IDQsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQo
b3V0LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOworICBwID0gYnVmLkdldFdyaXRlQnVm
ZmVyKCZieXRlcyk7CiAgIEVYUEVDVF9UUlVFKG51bGxwdHIgIT0gcCk7CiAgIEVYUEVDVF9FUShr
U2l6ZSAvIDQsIGJ5dGVzKTsKICAgbWVtY3B5KHAsIGluLCBrU2l6ZSAvIDQpOwotICBzdHJlYW0t
PkNvbnN1bWVXcml0ZUJ1ZmZlcihrU2l6ZSAvIDQpOwotICBwID0gc3RyZWFtLT5HZXRXcml0ZUJ1
ZmZlcigmYnl0ZXMpOworICBidWYuQ29uc3VtZVdyaXRlQnVmZmVyKGtTaXplIC8gNCk7CisgIHAg
PSBidWYuR2V0V3JpdGVCdWZmZXIoJmJ5dGVzKTsKICAgRVhQRUNUX1RSVUUobnVsbHB0ciAhPSBw
KTsKICAgRVhQRUNUX0VRKGtTaXplIC8gMiwgYnl0ZXMpOwogICBtZW1jcHkocCwgaW4gKyBrU2l6
ZSAvIDQsIGtTaXplIC8gNCk7Ci0gIHN0cmVhbS0+Q29uc3VtZVdyaXRlQnVmZmVyKGtTaXplIC8g
NCk7Ci0gIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBzdHJlYW0tPlJlYWQob3V0LCBrU2l6ZSAqIDMg
LyA0LCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgYnVmLkNvbnN1bWVXcml0ZUJ1ZmZlcihrU2l6ZSAv
IDQpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6ZSAqIDMgLyA0
LCAmYnl0ZXMsIG51bGxwdHIpKTsKICAgRVhQRUNUX0VRKGtTaXplICogMyAvIDQsIGJ5dGVzKTsK
ICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiArIGtTaXplIC8gMiwgb3V0LCBrU2l6ZSAvIDQpKTsK
ICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0ICsga1NpemUgLyA0LCBrU2l6ZSAvIDQpKTsK
IAogICAvLyBDaGVjayB0aGF0IHRoZSBzdHJlYW0gaXMgbm93IGVtcHR5Ci0gIEVYUEVDVF9FUShT
Ul9CTE9DSywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBF
WFBFQ1RfRVEoU1JfQkxPQ0ssIGJ1Zi5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikp
OwogCiAgIC8vIFRyeSBncm93aW5nIHRoZSBidWZmZXIKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1Ms
IHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgRVhQRUNUX0VR
KFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogICBF
WFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX1RSVUUoYnVmLlNldENhcGFjaXR5KGtT
aXplICogMikpOwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiArIGtT
aXplLCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNTLCBi
dWYuV3JpdGUoaW4gKyBrU2l6ZSwga1NpemUsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1Rf
RVEoa1NpemUsIGJ5dGVzKTsKLSAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIHN0cmVhbS0+UmVhZChv
dXQsIGtTaXplICogMiwgJmJ5dGVzLCBudWxscHRyKSk7CisgIEVYUEVDVF9FUShTUl9TVUNDRVNT
LCBidWYuUmVhZChvdXQsIGtTaXplICogMiwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVYUEVDVF9F
UShrU2l6ZSAqIDIsIGJ5dGVzKTsKICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbiwgb3V0LCBrU2l6
ZSAqIDIpKTsKIAogICAvLyBUcnkgc2hyaW5raW5nIHRoZSBidWZmZXIKLSAgRVhQRUNUX0VRKFNS
X1NVQ0NFU1MsIHN0cmVhbS0+V3JpdGUoaW4sIGtTaXplLCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAg
RVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0
cikpOwogICBFWFBFQ1RfRVEoa1NpemUsIGJ5dGVzKTsKICAgRVhQRUNUX1RSVUUoYnVmLlNldENh
cGFjaXR5KGtTaXplKSk7Ci0gIEVYUEVDVF9FUShTUl9CTE9DSywgc3RyZWFtLT5Xcml0ZShpbiwg
a1NpemUsICZieXRlcywgbnVsbHB0cikpOwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFt
LT5SZWFkKG91dCwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfQkxP
Q0ssIGJ1Zi5Xcml0ZShpbiwga1NpemUsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEo
U1JfU1VDQ0VTUywgYnVmLlJlYWQob3V0LCBrU2l6ZSwgJmJ5dGVzLCBudWxscHRyKSk7CiAgIEVY
UEVDVF9FUShrU2l6ZSwgYnl0ZXMpOwogICBFWFBFQ1RfRVEoMCwgbWVtY21wKGluLCBvdXQsIGtT
aXplKSk7CiAKICAgLy8gV3JpdGUgdG8gdGhlIHN0cmVhbSwgY2xvc2UgaXQsIHJlYWQgdGhlIHJl
bWFpbmluZyBieXRlcwotICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5Xcml0ZShpbiwg
a1NpemUgLyAyLCAmYnl0ZXMsIG51bGxwdHIpKTsKLSAgc3RyZWFtLT5DbG9zZSgpOwotICBFWFBF
Q1RfRVEoU1NfQ0xPU0VELCBzdHJlYW0tPkdldFN0YXRlKCkpOwotICBFWFBFQ1RfRVEoU1JfRU9T
LCBzdHJlYW0tPldyaXRlKGluLCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwotICBFWFBF
Q1RfRVEoU1JfU1VDQ0VTUywgc3RyZWFtLT5SZWFkKG91dCwga1NpemUgLyAyLCAmYnl0ZXMsIG51
bGxwdHIpKTsKKyAgRVhQRUNUX0VRKFNSX1NVQ0NFU1MsIGJ1Zi5Xcml0ZShpbiwga1NpemUgLyAy
LCAmYnl0ZXMsIG51bGxwdHIpKTsKKyAgYnVmLkNsb3NlKCk7CisgIEVYUEVDVF9FUShTU19DTE9T
RUQsIGJ1Zi5HZXRTdGF0ZSgpKTsKKyAgRVhQRUNUX0VRKFNSX0VPUywgYnVmLldyaXRlKGluLCBr
U2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1JfU1VDQ0VTUywgYnVm
LlJlYWQob3V0LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOwogICBFWFBFQ1RfRVEoMCwg
bWVtY21wKGluLCBvdXQsIGtTaXplIC8gMikpOwotICBFWFBFQ1RfRVEoU1JfRU9TLCBzdHJlYW0t
PlJlYWQob3V0LCBrU2l6ZSAvIDIsICZieXRlcywgbnVsbHB0cikpOworICBFWFBFQ1RfRVEoU1Jf
RU9TLCBidWYuUmVhZChvdXQsIGtTaXplIC8gMiwgJmJ5dGVzLCBudWxscHRyKSk7CiB9CiAKIFRF
U1QoRmlmb0J1ZmZlclRlc3QsIEZ1bGxCdWZmZXJDaGVjaykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nX3RvX251
bWJlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3N0cmluZ190b19udW1iZXIuY2MKaW5kZXggOTIwMTI0MmQ1ZjU3OGQ3ZjU1OGVmMWYwNzNh
YzM1YjU1ODQ2N2Q2OS4uNjM0NjUyYjgzZjZiZTJiZWEzNjdmYjkxMjhjMWRhNGRmZmQ5MTMwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2Uvc3RyaW5nX3RvX251bWJlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmNjCkBAIC0xMCw2ICsx
MCw3IEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmgiCiAKKyNpbmNs
dWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPGNlcnJubz4KICNpbmNsdWRlIDxjc3RkbGliPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9zdHJpbmdfdG9fbnVtYmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdfdG9fbnVtYmVyLmgKaW5kZXggN2VhOWYyNTFlZDQ2
OGJiYjZhOGEwY2Y3NmM2ODg4ZDQ5MWMwMzA5ZS4uNGNiNTIxNTk1ZGVmYWRkMmYxMGJmZDZkYWI0
YTM4ZDE1NTM2MTdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nX3RvX251bWJlci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ190b19udW1iZXIu
aApAQCAtMTMsNiArMTMsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmlu
Zz4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9u
YWwuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmNjCmluZGV4IGE1Nzg0NWZm
ZGFkNWE4MGIwYmZjMjRmOWI1NDU5MjJiMDY0ZWYyNmIuLmZjNGUzYmM4ZTczMTVjYzcyMzVjMWYz
Mjc2OWE1YTYxMzUyNTg1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2VuY29kZS5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdlbmNvZGUuY2MK
QEAgLTEwLDggKzEwLDcgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgog
Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjc3Rk
aW8+CiAKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKQEAgLTUxLDY3ICs1MCw2IEBAIHNpemVfdCB1cmxfZGVjb2RlKGNoYXIqIGJ1
ZmZlciwKICAgcmV0dXJuIGJ1ZnBvczsKIH0KIAotc2l6ZV90IHV0ZjhfZGVjb2RlKGNvbnN0IGNo
YXIqIHNvdXJjZSwgc2l6ZV90IHNyY2xlbiwgdW5zaWduZWQgbG9uZyogdmFsdWUpIHsKLSAgY29u
c3QgdW5zaWduZWQgY2hhciogcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KHNvdXJjZSk7Ci0gIGlmICgoc1swXSAmIDB4ODApID09IDB4MDApIHsgIC8vIENoZWNrIHNb
MF0gPT0gMHh4eHh4eHgKLSAgICAqdmFsdWUgPSBzWzBdOwotICAgIHJldHVybiAxOwotICB9Ci0g
IGlmICgoc3JjbGVuIDwgMikgfHwgKChzWzFdICYgMHhDMCkgIT0gMHg4MCkpIHsgIC8vIENoZWNr
IHNbMV0gIT0gMTB4eHh4eHgKLSAgICByZXR1cm4gMDsKLSAgfQotICAvLyBBY2N1bXVsYXRlIHRo
ZSB0cmFpbGVyIGJ5dGUgdmFsdWVzIGluIHZhbHVlMTYsIGFuZCBjb21iaW5lIGl0IHdpdGggdGhl
Ci0gIC8vIHJlbGV2YW50IGJpdHMgZnJvbSBzWzBdLCBvbmNlIHdlJ3ZlIGRldGVybWluZWQgdGhl
IHNlcXVlbmNlIGxlbmd0aC4KLSAgdW5zaWduZWQgbG9uZyB2YWx1ZTE2ID0gKHNbMV0gJiAweDNG
KTsKLSAgaWYgKChzWzBdICYgMHhFMCkgPT0gMHhDMCkgeyAgLy8gQ2hlY2sgc1swXSA9PSAxMTB4
eHh4eAotICAgICp2YWx1ZSA9ICgoc1swXSAmIDB4MUYpIDw8IDYpIHwgdmFsdWUxNjsKLSAgICBy
ZXR1cm4gMjsKLSAgfQotICBpZiAoKHNyY2xlbiA8IDMpIHx8ICgoc1syXSAmIDB4QzApICE9IDB4
ODApKSB7ICAvLyBDaGVjayBzWzJdICE9IDEweHh4eHh4Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAg
dmFsdWUxNiA9ICh2YWx1ZTE2IDw8IDYpIHwgKHNbMl0gJiAweDNGKTsKLSAgaWYgKChzWzBdICYg
MHhGMCkgPT0gMHhFMCkgeyAgLy8gQ2hlY2sgc1swXSA9PSAxMTEweHh4eAotICAgICp2YWx1ZSA9
ICgoc1swXSAmIDB4MEYpIDw8IDEyKSB8IHZhbHVlMTY7Ci0gICAgcmV0dXJuIDM7Ci0gIH0KLSAg
aWYgKChzcmNsZW4gPCA0KSB8fCAoKHNbM10gJiAweEMwKSAhPSAweDgwKSkgeyAgLy8gQ2hlY2sg
c1szXSAhPSAxMHh4eHh4eAotICAgIHJldHVybiAwOwotICB9Ci0gIHZhbHVlMTYgPSAodmFsdWUx
NiA8PCA2KSB8IChzWzNdICYgMHgzRik7Ci0gIGlmICgoc1swXSAmIDB4RjgpID09IDB4RjApIHsg
IC8vIENoZWNrIHNbMF0gPT0gMTExMTB4eHgKLSAgICAqdmFsdWUgPSAoKHNbMF0gJiAweDA3KSA8
PCAxOCkgfCB2YWx1ZTE2OwotICAgIHJldHVybiA0OwotICB9Ci0gIHJldHVybiAwOwotfQotCi1z
aXplX3QgdXRmOF9lbmNvZGUoY2hhciogYnVmZmVyLCBzaXplX3QgYnVmbGVuLCB1bnNpZ25lZCBs
b25nIHZhbHVlKSB7Ci0gIGlmICgodmFsdWUgPD0gMHg3RikgJiYgKGJ1ZmxlbiA+PSAxKSkgewot
ICAgIGJ1ZmZlclswXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlKTsKLSAgICBy
ZXR1cm4gMTsKLSAgfQotICBpZiAoKHZhbHVlIDw9IDB4N0ZGKSAmJiAoYnVmbGVuID49IDIpKSB7
Ci0gICAgYnVmZmVyWzBdID0gMHhDMCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVl
ID4+IDYpOwotICAgIGJ1ZmZlclsxXSA9IDB4ODAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Pih2YWx1ZSAmIDB4M0YpOwotICAgIHJldHVybiAyOwotICB9Ci0gIGlmICgodmFsdWUgPD0gMHhG
RkZGKSAmJiAoYnVmbGVuID49IDMpKSB7Ci0gICAgYnVmZmVyWzBdID0gMHhFMCB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlID4+IDEyKTsKLSAgICBidWZmZXJbMV0gPSAweDgwIHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKHZhbHVlID4+IDYpICYgMHgzRik7Ci0gICAgYnVm
ZmVyWzJdID0gMHg4MCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlICYgMHgzRik7
Ci0gICAgcmV0dXJuIDM7Ci0gIH0KLSAgaWYgKCh2YWx1ZSA8PSAweDFGRkZGRikgJiYgKGJ1Zmxl
biA+PSA0KSkgewotICAgIGJ1ZmZlclswXSA9IDB4RjAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPih2YWx1ZSA+PiAxOCk7Ci0gICAgYnVmZmVyWzFdID0gMHg4MCB8IHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KCh2YWx1ZSA+PiAxMikgJiAweDNGKTsKLSAgICBidWZmZXJbMl0gPSAweDgw
IHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKHZhbHVlID4+IDYpICYgMHgzRik7Ci0gICAg
YnVmZmVyWzNdID0gMHg4MCB8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlICYgMHgz
Rik7Ci0gICAgcmV0dXJuIDQ7Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBjb25zdCBj
aGFyIEhFWFtdID0gIjAxMjM0NTY3ODlhYmNkZWYiOwogCiBjaGFyIGhleF9lbmNvZGUodW5zaWdu
ZWQgY2hhciB2YWwpIHsKQEAgLTEyMiw5ICs2MCw5IEBAIGNoYXIgaGV4X2VuY29kZSh1bnNpZ25l
ZCBjaGFyIHZhbCkgewogYm9vbCBoZXhfZGVjb2RlKGNoYXIgY2gsIHVuc2lnbmVkIGNoYXIqIHZh
bCkgewogICBpZiAoKGNoID49ICcwJykgJiYgKGNoIDw9ICc5JykpIHsKICAgICAqdmFsID0gY2gg
LSAnMCc7Ci0gIH0gZWxzZSBpZiAoKGNoID49ICdBJykgJiYgKGNoIDw9ICdaJykpIHsKKyAgfSBl
bHNlIGlmICgoY2ggPj0gJ0EnKSAmJiAoY2ggPD0gJ0YnKSkgewogICAgICp2YWwgPSAoY2ggLSAn
QScpICsgMTA7Ci0gIH0gZWxzZSBpZiAoKGNoID49ICdhJykgJiYgKGNoIDw9ICd6JykpIHsKKyAg
fSBlbHNlIGlmICgoY2ggPj0gJ2EnKSAmJiAoY2ggPD0gJ2YnKSkgewogICAgICp2YWwgPSAoY2gg
LSAnYScpICsgMTA7CiAgIH0gZWxzZSB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5n
ZW5jb2RlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9zdHJpbmdlbmNvZGUuaAppbmRleCA1ZDQzNmRmZDU3YmEwOGE1NzMwN2Y1YWMzZDMxMDNl
M2ZjZTZlMDgxLi4wOWJmNzdmNDQ2MTUyNWEzYmFmYzFmYTFmYWNhNjljMjk2ZTJkMmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zdHJpbmdlbmNvZGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdlbmNvZGUuaApAQCAtMTEsOSArMTEsMTIgQEAKICNpZm5k
ZWYgUlRDX0JBU0VfU1RSSU5HRU5DT0RFX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1NUUklOR0VOQ09E
RV9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUg
PHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImFic2wvdHlwZXMv
b3B0aW9uYWwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmdfdG9fbnVtYmVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2VuY29kZV91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0
cmluZ2VuY29kZV91bml0dGVzdC5jYwppbmRleCA5YmRjNTkyYzI5YWEwNjYzNzc4YWUyYzdkODZk
Y2E2MDE4MTliMWY0Li5mMjFjNGNiNzhjNmY4NDg0Zjc4NTM1NzI4NDBiZWEyOTMyOTJiOWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9zdHJpbmdlbmNvZGVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5nZW5jb2RlX3VuaXR0ZXN0LmNjCkBA
IC0xNDEsNyArMTQxLDggQEAgVEVTVF9GKEhleEVuY29kZVRlc3QsIFRlc3REZWNvZGVUb29TaG9y
dCkgewogCiAvLyBUZXN0IHRoYXQgZGVjb2Rpbmcgbm9uLWhleCBkYXRhIGZhaWxzLgogVEVTVF9G
KEhleEVuY29kZVRlc3QsIFRlc3REZWNvZGVCb2d1c0RhdGEpIHsKLSAgZGVjX3Jlc18gPSBoZXhf
ZGVjb2RlX3dpdGhfZGVsaW1pdGVyKGRlY29kZWRfLCBzaXplb2YoZGVjb2RlZF8pLCAieHl6Iiwg
MywgMCk7CisgIGRlY19yZXNfID0KKyAgICAgIGhleF9kZWNvZGVfd2l0aF9kZWxpbWl0ZXIoZGVj
b2RlZF8sIHNpemVvZihkZWNvZGVkXyksICJheHl6IiwgNCwgMCk7CiAgIEFTU0VSVF9FUSgwVSwg
ZGVjX3Jlc18pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdzL2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJp
bmdzL2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcuY2MKaW5kZXggYTE0OTM0NDE5ODVmZGM5ZDcyZWUy
NTQxMjE0NjBhMjU4Y2Y2OTdmMy4uN2U5MWMzYjQ5ZGQ0MTU1ODVjMThkY2Y2NTdlMzM5M2I5MjFk
ZWYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvc3RyaW5ncy9hdWRpb19mb3JtYXRfdG9fc3RyaW5nLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3MvYXVk
aW9fZm9ybWF0X3RvX3N0cmluZy5jYwpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSAicnRj
X2Jhc2Uvc3RyaW5ncy9hdWRpb19mb3JtYXRfdG9fc3RyaW5nLmgiCiAKKyNpbmNsdWRlIDx1dGls
aXR5PgorCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgogCiBu
YW1lc3BhY2UgcnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdzL3N0cmlu
Z19idWlsZGVyLmNjCmluZGV4IDJmZDRhYmExOWNkY2RiZDMyZGZlOWU5OTlhMDliOGZmOTJlMzYz
OGQuLmFkZjRmYTllODE5YTM4OWRkNWIxYzJmZTllZGZmOTM2MGRkYzFiNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmlu
Z3Mvc3RyaW5nX2J1aWxkZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5jYwpAQCAtMTAsNiAr
MTAsMTIgQEAKIAogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3Mvc3RyaW5nX2J1aWxkZXIuaCIK
IAorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPGNzdHJpbmc+CisKKyNpbmNsdWRlICJy
dGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX21pbm1h
eC5oIgorCiBuYW1lc3BhY2UgcnRjIHsKIAogU2ltcGxlU3RyaW5nQnVpbGRlcjo6U2ltcGxlU3Ry
aW5nQnVpbGRlcihydGM6OkFycmF5VmlldzxjaGFyPiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdzL3N0
cmluZ19idWlsZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgKaW5kZXggMTg2YzJmN2I5ZDc5ODE2
ZTMxYWNjMDJlYzUwZGFlYTZmZjZkOGZmMi4uMjcwMDFkMWJlNWEzYzEyNTg4ODMwYWIzZGM2MGZj
YTQ2YTczMzU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3Mvc3RyaW5n
X2J1aWxkZXIuaApAQCAtMTIsMTMgKzEyLDExIEBACiAjZGVmaW5lIFJUQ19CQVNFX1NUUklOR1Nf
U1RSSU5HX0JVSUxERVJfSF8KIAogI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxjc3RyaW5n
PgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAiYWJz
bC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCiAjaW5jbHVkZSAiYXBpL2FycmF5X3ZpZXcuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9z
YWZlX21pbm1heC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgogI2luY2x1
ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ3V0aWxzLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRp
bHMuY2MKaW5kZXggNmJhZGRkMTFiZGQzNmQxOTZkYjlmZTMxY2MyOTRhOGZlYTRjYTUzZS4uYzgw
OGViMmNjNDFlZTYwN2MzYjllNzNhOWVjNjBkYjc2MmVlZjFhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHMu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2Uvc3RyaW5ndXRpbHMuY2MKQEAgLTcsOTcgKzcsMjkgQEAKICAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CiAgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8K
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgogCi0jaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ndXRpbHMuaCIKIAogbmFt
ZXNwYWNlIHJ0YyB7CiAKLWJvb2wgbWVtb3J5X2NoZWNrKGNvbnN0IHZvaWQqIG1lbW9yeSwgaW50
IGMsIHNpemVfdCBjb3VudCkgewotICBjb25zdCBjaGFyKiBjaGFyX21lbW9yeSA9IHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihtZW1vcnkpOwotICBjaGFyIGNoYXJfYyA9IHN0YXRpY19jYXN0PGNo
YXI+KGMpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICBpZiAo
Y2hhcl9tZW1vcnlbaV0gIT0gY2hhcl9jKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIHN0cmluZ19tYXRjaChjb25zdCBjaGFyKiB0
YXJnZXQsIGNvbnN0IGNoYXIqIHBhdHRlcm4pIHsKLSAgd2hpbGUgKCpwYXR0ZXJuKSB7Ci0gICAg
aWYgKCpwYXR0ZXJuID09ICcqJykgewotICAgICAgaWYgKCEqKytwYXR0ZXJuKSB7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgd2hpbGUgKCp0YXJnZXQpIHsKLSAgICAgICAg
aWYgKCh0b3VwcGVyKCpwYXR0ZXJuKSA9PSB0b3VwcGVyKCp0YXJnZXQpKSAmJgotICAgICAgICAg
ICAgc3RyaW5nX21hdGNoKHRhcmdldCArIDEsIHBhdHRlcm4gKyAxKSkgewotICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgICsrdGFyZ2V0OwotICAgICAgfQotICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICBpZiAodG91cHBlcigqcGF0dGVybikg
IT0gdG91cHBlcigqdGFyZ2V0KSkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0g
ICAgICArK3RhcmdldDsKLSAgICAgICsrcGF0dGVybjsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuICEq
dGFyZ2V0OwotfQotCi0jaWYgZGVmaW5lZChXRUJSVENfV0lOKQotaW50IGFzY2lpX3N0cmluZ19j
b21wYXJlKGNvbnN0IHdjaGFyX3QqIHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIHMyLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIENoYXJhY3RlclRyYW5zZm9ybWF0aW9uIHRyYW5zZm9ybWF0aW9uKSB7
Ci0gIHdjaGFyX3QgYzEsIGMyOwotICB3aGlsZSAodHJ1ZSkgewotICAgIGlmIChuLS0gPT0gMCkK
LSAgICAgIHJldHVybiAwOwotICAgIGMxID0gdHJhbnNmb3JtYXRpb24oKnMxKTsKLSAgICAvLyBE
b3VibGUgY2hlY2sgdGhhdCBjaGFyYWN0ZXJzIGFyZSBub3QgVVRGLTgKLSAgICBSVENfRENIRUNL
X0xUKCpzMiwgMTI4KTsKLSAgICAvLyBOb3RlOiAqczIgZ2V0cyBpbXBsaWNpdGx5IHByb21vdGVk
IHRvIHdjaGFyX3QKLSAgICBjMiA9IHRyYW5zZm9ybWF0aW9uKCpzMik7Ci0gICAgaWYgKGMxICE9
IGMyKQotICAgICAgcmV0dXJuIChjMSA8IGMyKSA/IC0xIDogMTsKLSAgICBpZiAoIWMxKQotICAg
ICAgcmV0dXJuIDA7Ci0gICAgKytzMTsKLSAgICArK3MyOwotICB9Ci19Ci0KLXNpemVfdCBhc2Nj
cHluKHdjaGFyX3QqIGJ1ZmZlciwKK3NpemVfdCBzdHJjcHluKGNoYXIqIGJ1ZmZlciwKICAgICAg
ICAgICAgICAgIHNpemVfdCBidWZsZW4sCiAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzb3Vy
Y2UsCi0gICAgICAgICAgICAgICBzaXplX3Qgc3JjbGVuKSB7CisgICAgICAgICAgICAgICBzaXpl
X3Qgc3JjbGVuIC8qID0gU0laRV9VTktOT1dOICovKSB7CiAgIGlmIChidWZsZW4gPD0gMCkKICAg
ICByZXR1cm4gMDsKIAogICBpZiAoc3JjbGVuID09IFNJWkVfVU5LTk9XTikgewotICAgIHNyY2xl
biA9IHN0cmxlbm4oc291cmNlLCBidWZsZW4gLSAxKTsKLSAgfSBlbHNlIGlmIChzcmNsZW4gPj0g
YnVmbGVuKSB7CisgICAgc3JjbGVuID0gc3RybGVuKHNvdXJjZSk7CisgIH0KKyAgaWYgKHNyY2xl
biA+PSBidWZsZW4pIHsKICAgICBzcmNsZW4gPSBidWZsZW4gLSAxOwogICB9Ci0jaWYgUlRDX0RD
SEVDS19JU19PTgotICAvLyBEb3VibGUgY2hlY2sgdGhhdCBjaGFyYWN0ZXJzIGFyZSBub3QgVVRG
LTgKLSAgZm9yIChzaXplX3QgcG9zID0gMDsgcG9zIDwgc3JjbGVuOyArK3BvcykKLSAgICBSVENf
RENIRUNLX0xUKHNvdXJjZVtwb3NdLCAxMjgpOwotI2VuZGlmCi0gIHN0ZDo6Y29weShzb3VyY2Us
IHNvdXJjZSArIHNyY2xlbiwgYnVmZmVyKTsKKyAgbWVtY3B5KGJ1ZmZlciwgc291cmNlLCBzcmNs
ZW4pOwogICBidWZmZXJbc3JjbGVuXSA9IDA7CiAgIHJldHVybiBzcmNsZW47CiB9CiAKLSNlbmRp
ZiAgLy8gV0VCUlRDX1dJTgotCiB2b2lkIHJlcGxhY2Vfc3Vic3Rycyhjb25zdCBjaGFyKiBzZWFy
Y2gsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2VhcmNoX2xlbiwKICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHJlcGxhY2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlscy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRp
bHMuaAppbmRleCAyNmM0NjI3ZDVjYTU5ODAzYTRlM2ZiNWRhMjk3Nzg2M2JjYTk3OTcyLi5jOWRh
YmZiOGFhYWZiODViNWViYjI4ZjJmMmI5NjM3ZTc3N2Q0MzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlscy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3N0cmluZ3V0aWxzLmgKQEAgLTEzLDggKzEzLDcgQEAKIAogI2lmICFkZWZpbmVkKFdFQlJUQ19X
RUJLSVRfQlVJTEQpCiAjaW5jbHVkZSA8Y3R5cGUuaD4KLSNlbmRpZgotCisjZW5kaWYgLy8gIWRl
ZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRl
IDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMjMsNiArMjIsNyBAQAogI2luY2x1
ZGUgPG1hbGxvYy5oPgogI2luY2x1ZGUgPHdjaGFyLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgor
CiAjZGVmaW5lIGFsbG9jYSBfYWxsb2NhCiAjZW5kaWYgIC8vIFdFQlJUQ19XSU4KIApAQCAtMzIs
NiArMzIsNyBAQAogI2Vsc2UgIC8vIEJTRAogI2luY2x1ZGUgPGFsbG9jYS5oPgogI2VuZGlmICAv
LyAhQlNECisjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmICAvLyBXRUJSVENfUE9TSVgKIAog
I2luY2x1ZGUgPHN0cmluZz4KQEAgLTQzLDQ5ICs0NCw2IEBACiAjZGVmaW5lIFNUQUNLX0FSUkFZ
KFRZUEUsIExFTikgXAogICBzdGF0aWNfY2FzdDxUWVBFKj4oOjphbGxvY2EoKExFTikgKiBzaXpl
b2YoVFlQRSkpKQogCi1uYW1lc3BhY2UgcnRjIHsKLQotLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRo
ZSBzaW1wbGUgd2lsZGNhcmQgcGF0dGVybiBtYXRjaGVzIHRhcmdldC4KLS8vIEFscGhhIGNoYXJh
Y3RlcnMgaW4gcGF0dGVybiBtYXRjaCBjYXNlLWluc2Vuc2l0aXZlbHkuCi0vLyBBc3Rlcmlza3Mg
aW4gcGF0dGVybiBtYXRjaCAwIG9yIG1vcmUgY2hhcmFjdGVycy4KLS8vIEV4OiBzdHJpbmdfbWF0
Y2goInd3dy5URVNULkdPT0dMRS5DT00iLCAid3d3LiouY29tIikgLT4gdHJ1ZQotYm9vbCBzdHJp
bmdfbWF0Y2goY29uc3QgY2hhciogdGFyZ2V0LCBjb25zdCBjaGFyKiBwYXR0ZXJuKTsKLQotfSAg
Ly8gbmFtZXNwYWNlIHJ0YwotCi0jaWYgIWRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFJlbmFtZSBhIGZldyBjb21tb24gc3RyaW5nIGZ1bmN0
aW9ucyBzbyB0aGV5IGFyZSBjb25zaXN0ZW50IGFjcm9zcyBwbGF0Zm9ybXMuCi0vLyB0b2xvd2Vy
Y2FzZSBpcyBsaWtlIHRvbG93ZXIsIGJ1dCBub3QgY29tcGF0aWJsZSB3aXRoIGVuZC1vZi1maWxl
IHZhbHVlCi0vLwotLy8gSXQncyBub3QgY2xlYXIgaWYgd2Ugd2lsbCBldmVyIHVzZSB3Y2hhcl90
IHN0cmluZ3Mgb24gdW5peC4gIEluIHRoZW9yeSwKLS8vIGFsbCBzdHJpbmdzIHNob3VsZCBiZSBV
dGY4IGFsbCB0aGUgdGltZSwgZXhjZXB0IHdoZW4gaW50ZXJmYWNpbmcgd2l0aCBXaW4zMgotLy8g
QVBJcyB0aGF0IHJlcXVpcmUgVXRmMTYuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1pbmxpbmUg
Y2hhciB0b2xvd2VyY2FzZShjaGFyIGMpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KHRv
bG93ZXIoYykpOwotfQotI2VuZGlmIC8vICFkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCi0K
LSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0KLWlubGluZSB3Y2hhcl90IHRvbG93ZXJjYXNlKHdj
aGFyX3QgYykgewotICByZXR1cm4gc3RhdGljX2Nhc3Q8d2NoYXJfdD4odG93bG93ZXIoYykpOwot
fQotCi0jZW5kaWYgIC8vIFdFQlJUQ19XSU4KLQotI2lmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQot
Ci1pbmxpbmUgaW50IF9zdHJpY21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewot
ICByZXR1cm4gc3RyY2FzZWNtcChzMSwgczIpOwotfQotaW5saW5lIGludCBfc3RybmljbXAoY29u
c3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyLCBzaXplX3QgbikgewotICByZXR1cm4gc3RybmNh
c2VjbXAoczEsIHMyLCBuKTsKLX0KLQotI2VuZGlmICAvLyBXRUJSVENfUE9TSVgKLQogLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogLy8gVHJhaXRzIHNpbXBsaWZpZXMgcG9ydGluZyBzdHJpbmcgZnVu
Y3Rpb25zIHRvIGJlIENUWVBFLWFnbm9zdGljCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC05
NCwxOTEgKzUyLDEyIEBAIG5hbWVzcGFjZSBydGMgewogCiBjb25zdCBzaXplX3QgU0laRV9VTktO
T1dOID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7CiAKLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4K
LXN0cnVjdCBUcmFpdHMgewotICAvLyBTVEwgc3RyaW5nIHR5cGUKLSAgLy8gdHlwZWRlZiBYWFgg
c3RyaW5nOwotICAvLyBOdWxsLXRlcm1pbmF0ZWQgc3RyaW5nCi0gIC8vIGlubGluZSBzdGF0aWMg
Y29uc3QgQ1RZUEUqIGVtcHR5X3N0cigpOwotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot
Ly8gU3RyaW5nIHV0aWxpdGllcyB3aGljaCB3b3JrIHdpdGggY2hhciBvciB3Y2hhcl90Ci0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0KLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4KLWlubGluZSBjb25z
dCBDVFlQRSogbm9ubnVsbChjb25zdCBDVFlQRSogc3RyLCBjb25zdCBDVFlQRSogZGVmX3N0ciA9
IG51bGxwdHIpIHsKLSAgcmV0dXJuIHN0ciA/IHN0ciA6IChkZWZfc3RyID8gZGVmX3N0ciA6IFRy
YWl0czxDVFlQRT46OmVtcHR5X3N0cigpKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIENUWVBFPgot
Y29uc3QgQ1RZUEUqIHN0cmNocihjb25zdCBDVFlQRSogc3RyLCBjb25zdCBDVFlQRSogY2hzKSB7
Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBzdHJbaV07ICsraSkgewotICAgIGZvciAoc2l6ZV90IGog
PSAwOyBjaHNbal07ICsraikgewotICAgICAgaWYgKHN0cltpXSA9PSBjaHNbal0pIHsKLSAgICAg
ICAgcmV0dXJuIHN0ciArIGk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJldHVybiAwOwotfQot
Ci10ZW1wbGF0ZSA8Y2xhc3MgQ1RZUEU+Ci1jb25zdCBDVFlQRSogc3RyY2hybihjb25zdCBDVFlQ
RSogc3RyLCBzaXplX3Qgc2xlbiwgQ1RZUEUgY2gpIHsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzbGVuICYmIHN0cltpXTsgKytpKSB7Ci0gICAgaWYgKHN0cltpXSA9PSBjaCkgewotICAgICAg
cmV0dXJuIHN0ciArIGk7Ci0gICAgfQotICB9Ci0gIHJldHVybiAwOwotfQotCi10ZW1wbGF0ZSA8
Y2xhc3MgQ1RZUEU+Ci1zaXplX3Qgc3RybGVubihjb25zdCBDVFlQRSogYnVmZmVyLCBzaXplX3Qg
YnVmbGVuKSB7Ci0gIHNpemVfdCBidWZwb3MgPSAwOwotICB3aGlsZSAoYnVmZmVyW2J1ZnBvc10g
JiYgKGJ1ZnBvcyA8IGJ1ZmxlbikpIHsKLSAgICArK2J1ZnBvczsKLSAgfQotICByZXR1cm4gYnVm
cG9zOwotfQotCi0vLyBTYWZlIHZlcnNpb25zIG9mIHN0cm5jcHksIHN0cm5jYXQsIHNucHJpbnRm
IGFuZCB2c25wcmludGYgdGhhdCBhbHdheXMKLS8vIG51bGwtdGVybWluYXRlLgotCi10ZW1wbGF0
ZSA8Y2xhc3MgQ1RZUEU+Ci1zaXplX3Qgc3RyY3B5bihDVFlQRSogYnVmZmVyLAotICAgICAgICAg
ICAgICAgc2l6ZV90IGJ1ZmxlbiwKLSAgICAgICAgICAgICAgIGNvbnN0IENUWVBFKiBzb3VyY2Us
Ci0gICAgICAgICAgICAgICBzaXplX3Qgc3JjbGVuID0gU0laRV9VTktOT1dOKSB7Ci0gIGlmIChi
dWZsZW4gPD0gMCkKLSAgICByZXR1cm4gMDsKLQotICBpZiAoc3JjbGVuID09IFNJWkVfVU5LTk9X
TikgewotICAgIHNyY2xlbiA9IHN0cmxlbm4oc291cmNlLCBidWZsZW4gLSAxKTsKLSAgfSBlbHNl
IGlmIChzcmNsZW4gPj0gYnVmbGVuKSB7Ci0gICAgc3JjbGVuID0gYnVmbGVuIC0gMTsKLSAgfQot
ICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIHNyY2xlbiAqIHNpemVvZihDVFlQRSkpOwotICBidWZm
ZXJbc3JjbGVuXSA9IDA7Ci0gIHJldHVybiBzcmNsZW47Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBD
VFlQRT4KLXNpemVfdCBzdHJjYXRuKENUWVBFKiBidWZmZXIsCi0gICAgICAgICAgICAgICBzaXpl
X3QgYnVmbGVuLAotICAgICAgICAgICAgICAgY29uc3QgQ1RZUEUqIHNvdXJjZSwKLSAgICAgICAg
ICAgICAgIHNpemVfdCBzcmNsZW4gPSBTSVpFX1VOS05PV04pIHsKLSAgaWYgKGJ1ZmxlbiA8PSAw
KQotICAgIHJldHVybiAwOwotCi0gIHNpemVfdCBidWZwb3MgPSBzdHJsZW5uKGJ1ZmZlciwgYnVm
bGVuIC0gMSk7Ci0gIHJldHVybiBidWZwb3MgKyBzdHJjcHluKGJ1ZmZlciArIGJ1ZnBvcywgYnVm
bGVuIC0gYnVmcG9zLCBzb3VyY2UsIHNyY2xlbik7Ci19Ci0KLS8vIFNvbWUgY29tcGlsZXJzIChj
bGFuZyBzcGVjaWZpY2FsbHkpIHJlcXVpcmUgdnNwcmludGZuIGJlIGRlZmluZWQgYmVmb3JlCi0v
LyBzcHJpbnRmbi4KLXRlbXBsYXRlIDxjbGFzcyBDVFlQRT4KLXNpemVfdCB2c3ByaW50Zm4oQ1RZ
UEUqIGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgc2l6ZV90IGJ1ZmxlbiwKLSAgICAgICAgICAg
ICAgICAgY29uc3QgQ1RZUEUqIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdz
KSB7Ci0gIGludCBsZW4gPSB2c25wcmludGYoYnVmZmVyLCBidWZsZW4sIGZvcm1hdCwgYXJncyk7
Ci0gIGlmICgobGVuIDwgMCkgfHwgKHN0YXRpY19jYXN0PHNpemVfdD4obGVuKSA+PSBidWZsZW4p
KSB7Ci0gICAgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihidWZsZW4gLSAxKTsKLSAgICBidWZmZXJb
bGVuXSA9IDA7Ci0gIH0KLSAgcmV0dXJuIGxlbjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIENUWVBF
Pgotc2l6ZV90IHNwcmludGZuKENUWVBFKiBidWZmZXIsIHNpemVfdCBidWZsZW4sIGNvbnN0IENU
WVBFKiBmb3JtYXQsIC4uLik7Ci10ZW1wbGF0ZSA8Y2xhc3MgQ1RZUEU+Ci1zaXplX3Qgc3ByaW50
Zm4oQ1RZUEUqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmxlbiwgY29uc3QgQ1RZUEUqIGZvcm1hdCwgLi4u
KSB7Ci0gIHZhX2xpc3QgYXJnczsKLSAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKLSAgc2l6ZV90
IGxlbiA9IHZzcHJpbnRmbihidWZmZXIsIGJ1ZmxlbiwgZm9ybWF0LCBhcmdzKTsKLSAgdmFfZW5k
KGFyZ3MpOwotICByZXR1cm4gbGVuOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBB
bGxvdyBzYWZlIGNvbXBhcmluZyBhbmQgY29weWluZyBhc2NpaSAobm90IFVURi04KSB3aXRoIGJv
dGggd2lkZSBhbmQKLS8vIG5vbi13aWRlIGNoYXJhY3RlciBzdHJpbmdzLgotLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwotCi1pbmxpbmUgaW50IGFzY2NtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hh
ciogczIpIHsKLSAgcmV0dXJuIHN0cmNtcChzMSwgczIpOwotfQotaW5saW5lIGludCBhc2NpY21w
KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4gX3N0cmljbXAoczEs
IHMyKTsKLX0KLWlubGluZSBpbnQgYXNjbmNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciog
czIsIHNpemVfdCBuKSB7Ci0gIHJldHVybiBzdHJuY21wKHMxLCBzMiwgbik7Ci19Ci1pbmxpbmUg
aW50IGFzY25pY21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgc2l6ZV90IG4pIHsK
LSAgcmV0dXJuIF9zdHJuaWNtcChzMSwgczIsIG4pOwotfQotaW5saW5lIHNpemVfdCBhc2NjcHlu
KGNoYXIqIGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmbGVuLAotICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc3JjbGVuID0gU0laRV9VTktOT1dOKSB7Ci0gIHJldHVybiBzdHJjcHluKGJ1
ZmZlciwgYnVmbGVuLCBzb3VyY2UsIHNyY2xlbik7Ci19Ci0KLSNpZiBkZWZpbmVkKFdFQlJUQ19X
SU4pCi0KLXR5cGVkZWYgd2NoYXJfdCAoKkNoYXJhY3RlclRyYW5zZm9ybWF0aW9uKSh3Y2hhcl90
KTsKLWlubGluZSB3Y2hhcl90IGlkZW50aXR5KHdjaGFyX3QgYykgewotICByZXR1cm4gYzsKLX0K
LWludCBhc2NpaV9zdHJpbmdfY29tcGFyZShjb25zdCB3Y2hhcl90KiBzMSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJUcmFuc2Zvcm1hdGlv
biB0cmFuc2Zvcm1hdGlvbik7Ci0KLWlubGluZSBpbnQgYXNjY21wKGNvbnN0IHdjaGFyX3QqIHMx
LCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4gYXNjaWlfc3RyaW5nX2NvbXBhcmUoczEsIHMy
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSwgaWRlbnRpdHkpOwotfQotaW5saW5lIGludCBhc2Np
Y21wKGNvbnN0IHdjaGFyX3QqIHMxLCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4gYXNjaWlf
c3RyaW5nX2NvbXBhcmUoczEsIHMyLCBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSwgdG9sb3dlcmNh
c2UpOwotfQotaW5saW5lIGludCBhc2NuY21wKGNvbnN0IHdjaGFyX3QqIHMxLCBjb25zdCBjaGFy
KiBzMiwgc2l6ZV90IG4pIHsKLSAgcmV0dXJuIGFzY2lpX3N0cmluZ19jb21wYXJlKHMxLCBzMiwg
biwgaWRlbnRpdHkpOwotfQotaW5saW5lIGludCBhc2NuaWNtcChjb25zdCB3Y2hhcl90KiBzMSwg
Y29uc3QgY2hhciogczIsIHNpemVfdCBuKSB7Ci0gIHJldHVybiBhc2NpaV9zdHJpbmdfY29tcGFy
ZShzMSwgczIsIG4sIHRvbG93ZXJjYXNlKTsKLX0KLXNpemVfdCBhc2NjcHluKHdjaGFyX3QqIGJ1
ZmZlciwKKy8vIFNhZmUgdmVyc2lvbiBvZiBzdHJuY3B5IHRoYXQgYWx3YXlzIG51bC10ZXJtaW5h
dGUuCitzaXplX3Qgc3RyY3B5bihjaGFyKiBidWZmZXIsCiAgICAgICAgICAgICAgICBzaXplX3Qg
YnVmbGVuLAogICAgICAgICAgICAgICAgY29uc3QgY2hhciogc291cmNlLAogICAgICAgICAgICAg
ICAgc2l6ZV90IHNyY2xlbiA9IFNJWkVfVU5LTk9XTik7CiAKLSNlbmRpZiAgLy8gV0VCUlRDX1dJ
TgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBUcmFpdHM8Y2hhcj4gc3BlY2lhbGl6YXRp
b25zCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgVHJhaXRz
PGNoYXI+IHsKLSAgdHlwZWRlZiBzdGQ6OnN0cmluZyBzdHJpbmc7Ci0gIGlubGluZSBzdGF0aWMg
Y29uc3QgY2hhciogZW1wdHlfc3RyKCkgeyByZXR1cm4gIiI7IH0KLX07Ci0KLS8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KLS8vIFRyYWl0czx3Y2hhcl90PiBzcGVjaWFsaXphdGlvbnMgKFdpbmRvd3Mg
b25seSwgY3VycmVudGx5KQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0jaWYgZGVmaW5lZChX
RUJSVENfV0lOKQotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IFRyYWl0czx3Y2hhcl90PiB7Ci0gIHR5
cGVkZWYgc3RkOjp3c3RyaW5nIHN0cmluZzsKLSAgaW5saW5lIHN0YXRpYyBjb25zdCB3Y2hhcl90
KiBlbXB0eV9zdHIoKSB7IHJldHVybiBMIiI7IH0KLX07Ci0KLSNlbmRpZiAgLy8gV0VCUlRDX1dJ
TgotCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBVVEYgaGVscGVycyAoV2luZG93cyBvbmx5
KQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5ndXRpbHNfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJp
bmd1dGlsc191bml0dGVzdC5jYwppbmRleCBhNmU2NDY4MGJiNzM1OWQ4MWVkMWFlNGVmZmNiNjM5
NjUwOGI2Y2M2Li42NjNlOTc2OGY2MDhhMzQ2Yzg0MjA0NWExMWNlZDU3MDRlNzZjZjk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zdHJpbmd1dGlsc191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmd1dGlsc191bml0dGVzdC5jYwpAQCAtMTMs
NzAgKzEzLDYgQEAKIAogbmFtZXNwYWNlIHJ0YyB7CiAKLS8vIFRlc3RzIGZvciBzdHJpbmdfbWF0
Y2goKS4KLQotVEVTVChzdHJpbmdfbWF0Y2hUZXN0LCBNYXRjaGVzKSB7Ci0gIEVYUEVDVF9UUlVF
KHN0cmluZ19tYXRjaCgiQS5CLkMuRCIsICJhLmIuYy5kIikpOwotICBFWFBFQ1RfVFJVRShzdHJp
bmdfbWF0Y2goInd3dy5URVNULkdPT0dMRS5DT00iLCAid3d3LiouY29tIikpOwotICBFWFBFQ1Rf
VFJVRShzdHJpbmdfbWF0Y2goIjEyNy4wLjAuMSIsICIxMiouMC4qMSIpKTsKLSAgRVhQRUNUX1RS
VUUoc3RyaW5nX21hdGNoKCIxMjcuMS4wLjIxIiwgIjEyKi4wLioxIikpOwotICBFWFBFQ1RfRkFM
U0Uoc3RyaW5nX21hdGNoKCIxMjcuMC4wLjAiLCAiMTIqLjAuKjEiKSk7Ci0gIEVYUEVDVF9GQUxT
RShzdHJpbmdfbWF0Y2goIjEyNy4wLjAuMCIsICIxMiouMC4qMSIpKTsKLSAgRVhQRUNUX0ZBTFNF
KHN0cmluZ19tYXRjaCgiMTI3LjEuMS4yMSIsICIxMiouMC4qMSIpKTsKLX0KLQotLy8gSXQncyBu
b3QgY2xlYXIgaWYgd2Ugd2lsbCBldmVyIHVzZSB3Y2hhcl90IHN0cmluZ3Mgb24gdW5peC4gIElu
IHRoZW9yeSwKLS8vIGFsbCBzdHJpbmdzIHNob3VsZCBiZSBVdGY4IGFsbCB0aGUgdGltZSwgZXhj
ZXB0IHdoZW4gaW50ZXJmYWNpbmcgd2l0aCBXaW4zMgotLy8gQVBJcyB0aGF0IHJlcXVpcmUgVXRm
MTYuCi0KLSNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0KLS8vIFRlc3RzIGZvciBhc2NpaV9zdHJp
bmdfY29tcGFyZSgpLgotCi0vLyBUZXN0cyBudWxsIGlucHV0LgotVEVTVChhc2NpaV9zdHJpbmdf
Y29tcGFyZVRlc3QsIE51bGxJbnB1dCkgewotICAvLyBUaGUgZm9sbG93aW5nIHJlc3VsdHMgaW4g
YW4gYWNjZXNzIHZpb2xhdGlvbiBpbgotICAvLyBhc2NpaV9zdHJpbmdfY29tcGFyZS4gIElzIHRo
aXMgYSBidWcgb3IgYnkgZGVzaWduPyAgc3RyaW5ndXRpbHMuaAotICAvLyBzaG91bGQgZG9jdW1l
bnQgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGluIHRoaXMgY2FzZS4KLQotICAvLyBFWFBFQ1RfRVEo
MCwgYXNjaWlfc3RyaW5nX2NvbXBhcmUobnVsbHB0ciwgbnVsbHB0ciwgMSwgaWRlbnRpdHkpKTsK
LX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIHR3byBzdHJpbmdzIG9mIGRpZmZlcmVudCBsZW5ndGhz
LgotVEVTVChhc2NpaV9zdHJpbmdfY29tcGFyZVRlc3QsIERpZmZlcmVudExlbmd0aHMpIHsKLSAg
RVhQRUNUX0VRKC0xLCBhc2NpaV9zdHJpbmdfY29tcGFyZShMIlRlc3QiLCAiVGVzdDEiLCA1LCBp
ZGVudGl0eSkpOwotfQotCi0vLyBUZXN0cyB0aGUgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIHNpemUg
aXMgc21hbGxlciB0aGFuIHRoZSBzdHJpbmcKLS8vIGxlbmd0aHMuCi1URVNUKGFzY2lpX3N0cmlu
Z19jb21wYXJlVGVzdCwgU21hbGxCdWZmZXIpIHsKLSAgRVhQRUNUX0VRKDAsIGFzY2lpX3N0cmlu
Z19jb21wYXJlKEwiVGVzdCIsICJUZXN0MSIsIDMsIGlkZW50aXR5KSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoZSBjYXNlIHdoZXJlIHRoZSBidWZmZXIgaXMgbm90IGZ1bGwuCi1URVNUKGFzY2lpX3N0cmlu
Z19jb21wYXJlVGVzdCwgTGFyZ2VCdWZmZXIpIHsKLSAgRVhQRUNUX0VRKDAsIGFzY2lpX3N0cmlu
Z19jb21wYXJlKEwiVGVzdCIsICJUZXN0IiwgMTAsIGlkZW50aXR5KSk7Ci19Ci0KLS8vIFRlc3Rz
IGNvbXBhcmluZyB0d28gZXFhdWwgc3RyaW5ncy4KLVRFU1QoYXNjaWlfc3RyaW5nX2NvbXBhcmVU
ZXN0LCBFcXVhbCkgewotICBFWFBFQ1RfRVEoMCwgYXNjaWlfc3RyaW5nX2NvbXBhcmUoTCJUZXN0
IiwgIlRlc3QiLCA1LCBpZGVudGl0eSkpOwotICBFWFBFQ1RfRVEoMCwgYXNjaWlfc3RyaW5nX2Nv
bXBhcmUoTCJUZVN0IiwgInRFc1QiLCA1LCB0b2xvd2VyY2FzZSkpOwotfQotCi0vLyBUZXN0cyBj
b21wYXJpbmcgYSBzbWxsZXIgc3RyaW5nIHRvIGEgbGFyZ2VyIG9uZS4KLVRFU1QoYXNjaWlfc3Ry
aW5nX2NvbXBhcmVUZXN0LCBMZXNzVGhhbikgewotICBFWFBFQ1RfRVEoLTEsIGFzY2lpX3N0cmlu
Z19jb21wYXJlKEwiYWJjIiwgImFiZCIsIDQsIGlkZW50aXR5KSk7Ci0gIEVYUEVDVF9FUSgtMSwg
YXNjaWlfc3RyaW5nX2NvbXBhcmUoTCJBQkMiLCAiYWJEIiwgNSwgdG9sb3dlcmNhc2UpKTsKLX0K
LQotLy8gVGVzdHMgY29tcGFyaW5nIGEgbGFyZ2VyIHN0cmluZyB0byBhIHNtYWxsZXIgb25lLgot
VEVTVChhc2NpaV9zdHJpbmdfY29tcGFyZVRlc3QsIEdyZWF0ZXJUaGFuKSB7Ci0gIEVYUEVDVF9F
USgxLCBhc2NpaV9zdHJpbmdfY29tcGFyZShMInh5eiIsICJ4eSIsIDUsIGlkZW50aXR5KSk7Ci0g
IEVYUEVDVF9FUSgxLCBhc2NpaV9zdHJpbmdfY29tcGFyZShMImFiYyIsICJBQkIiLCA1LCB0b2xv
d2VyY2FzZSkpOwotfQotI2VuZGlmICAvLyBXRUJSVENfV0lOCi0KIFRFU1Qoc3RyaW5nX3RyaW1f
VGVzdCwgVHJpbW1pbmcpIHsKICAgRVhQRUNUX0VRKCJ0ZW1wIiwgc3RyaW5nX3RyaW0oIlxuXHJc
dCB0ZW1wIFxuXHJcdCIpKTsKICAgRVhQRUNUX0VRKCJ0ZW1wXG5cclx0IHRlbXAiLCBzdHJpbmdf
dHJpbSgiIHRlbXBcblxyXHQgdGVtcCAiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeW5jaHJvbml6YXRpb24vcndfbG9j
a19wb3NpeC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3N5bmNocm9uaXphdGlvbi9yd19sb2NrX3Bvc2l4LmNjCmluZGV4IDdlMzdkYzkyNGZk
ZjgxY2I3MDkxNmUzMWFhNzUwN2I2MmNlNjIwMDMuLjE1ZWYzZDcwNmU4YWVjYWRkZGJjY2ZlZDYx
MThlZWEzMGJkZjRjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5bmNocm9uaXphdGlvbi9yd19sb2NrX3Bvc2l4LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5
bmNocm9uaXphdGlvbi9yd19sb2NrX3Bvc2l4LmNjCkBAIC0xMCw2ICsxMCw4IEBACiAKICNpbmNs
dWRlICJydGNfYmFzZS9zeW5jaHJvbml6YXRpb24vcndfbG9ja19wb3NpeC5oIgogCisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisKIG5hbWVzcGFjZSB3ZWJydGMgewogCiBSV0xvY2tQb3NpeDo6UldMb2Nr
UG9zaXgoKSA6IGxvY2tfKCkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9CVUlMRC5nbgpp
bmRleCBmMjJlZmUxNGEwNDg4ZTMzYjE3OGQ2Y2I2ZWIzNTIyYzQzZjZhY2NjLi5lNWFhMzJiNGVm
MWQ4YzUyMmE4MjQzYTE2YjQ0MDQzYmU3YmMyMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vQlVJTEQuZ24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lz
dGVtL0JVSUxELmduCkBAIC02NSwzICs2NSwxNSBAQCBydGNfc291cmNlX3NldCgicnRjX2V4cG9y
dCIpIHsKICAgICAicnRjX2V4cG9ydC5oIiwKICAgXQogfQorCitpZiAoaXNfbWFjIHx8IGlzX2lv
cykgeworICBydGNfc291cmNlX3NldCgiY29jb2FfdGhyZWFkaW5nIikgeworICAgIHNvdXJjZXMg
PSBbCisgICAgICAiY29jb2FfdGhyZWFkaW5nLmgiLAorICAgICAgImNvY29hX3RocmVhZGluZy5t
bSIsCisgICAgXQorICAgIGRlcHMgPSBbCisgICAgICAiLi46Y2hlY2tzIiwKKyAgICBdCisgIH0K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3N5c3RlbS9jb2NvYV90aHJlYWRpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9jb2NvYV90aHJlYWRpbmcuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MThjYjcxNzg2YmFmMzRhYzBlM2QyODMwZGE4NTE4Mzk4YzJmNzI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2Uvc3lzdGVtL2NvY29hX3RocmVhZGluZy5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX0JBU0VfU1lTVEVNX0NPQ09BX1RIUkVBRElOR19I
XworI2RlZmluZSBSVENfQkFTRV9TWVNURU1fQ09DT0FfVEhSRUFESU5HX0hfCisKKy8vIElmIENv
Y29hIGlzIHRvIGJlIHVzZWQgb24gbW9yZSB0aGFuIG9uZSB0aHJlYWQsIGl0IG11c3Qga25vdyB0
aGF0IHRoZQorLy8gYXBwbGljYXRpb24gaXMgbXVsdGl0aHJlYWRlZC4gIFNpbmNlIGl0J3MgcG9z
c2libGUgdG8gZW50ZXIgQ29jb2EgY29kZQorLy8gZnJvbSB0aHJlYWRzIGNyZWF0ZWQgYnkgcHRo
cmVhZF90aHJlYWRfY3JlYXRlLCBDb2NvYSB3b24ndCBuZWNlc3NhcmlseQorLy8gYmUgYXdhcmUg
dGhhdCB0aGUgYXBwbGljYXRpb24gaXMgbXVsdGl0aHJlYWRlZC4gIFNwYXduaW5nIGFuIE5TVGhy
ZWFkIGlzCisvLyBlbm91Z2ggdG8gZ2V0IENvY29hIHRvIHNldCB1cCBmb3IgbXVsdGl0aHJlYWRl
ZCBvcGVyYXRpb24sIHNvIHRoaXMgaXMgZG9uZQorLy8gaWYgbmVjZXNzYXJ5IGJlZm9yZSBwdGhy
ZWFkX3RocmVhZF9jcmVhdGUgc3Bhd25zIGFueSB0aHJlYWRzLgorLy8KKy8vIGh0dHA6Ly9kZXZl
bG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vQ29jb2EvQ29uY2VwdHVhbC9NdWx0aXRocmVh
ZGluZy9DcmVhdGluZ1RocmVhZHMvY2hhcHRlcl80X3NlY3Rpb25fNC5odG1sCit2b2lkIEluaXRD
b2NvYU11bHRpVGhyZWFkaW5nKCk7CisKKyNlbmRpZiAgLy8gUlRDX0JBU0VfU1lTVEVNX0NPQ09B
X1RIUkVBRElOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2NvY29hX3RocmVhZGluZy5tbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9jb2NvYV90
aHJlYWRpbmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA5ODYyZTdlNWY3NTBkYjA1YWI4ODRlMDViZTI0YjAx
NWNkM2RiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9jb2NvYV90aHJlYWRpbmcubW0KQEAgLTAsMCAr
MSwyNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKyNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vY29j
b2FfdGhyZWFkaW5nLmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCisj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisKK3ZvaWQgSW5pdENvY29hTXVsdGlUaHJlYWRp
bmcoKSB7CisgIHN0YXRpYyBCT09MIGlzX2NvY29hX211bHRpdGhyZWFkZWQgPSBbTlNUaHJlYWQg
aXNNdWx0aVRocmVhZGVkXTsKKyAgaWYgKCFpc19jb2NvYV9tdWx0aXRocmVhZGVkKSB7CisgICAg
Ly8gK1tOU09iamVjdCBjbGFzc10gaXMgaWRlbXBvdGVudC4KKyAgICBbTlNUaHJlYWQgZGV0YWNo
TmV3VGhyZWFkU2VsZWN0b3I6QHNlbGVjdG9yKGNsYXNzKSB0b1RhcmdldDpbTlNPYmplY3QgY2xh
c3NdIHdpdGhPYmplY3Q6bmlsXTsKKyAgICBpc19jb2NvYV9tdWx0aXRocmVhZGVkID0gWUVTOwor
ICAgIFJUQ19EQ0hFQ0soW05TVGhyZWFkIGlzTXVsdGlUaHJlYWRlZF0pOworICB9Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zeXN0ZW0vZmlsZV93cmFwcGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2ZpbGVfd3JhcHBlci5jYwppbmRleCA3MmY1ZjI1
OWRiZGY2ODlhMDM1ODRiYmNkNzUxNWIxMWI5YWI1MDM4Li5jMDMzYTc5MmE1MGMzZTkyMzg4OTYy
NTVhYjZjNjU3ZTM4ODA5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vZmlsZV93cmFwcGVyLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9m
aWxlX3dyYXBwZXIuY2MKQEAgLTEzLDE0ICsxMywxMSBAQAogI2lmZGVmIF9XSU4zMgogI2luY2x1
ZGUgPFdpbmRvd3MuaD4KICNlbHNlCi0jaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8c3Ry
aW5nLmg+CiAjZW5kaWYKIAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKLSNpbmNsdWRlICJydGNfYmFz
ZS9jaGVja3MuaCIKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgewogRklMRSogRmls
ZU9wZW4oY29uc3QgY2hhciogZmlsZV9uYW1lX3V0ZjgsIGJvb2wgcmVhZF9vbmx5KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9zeXN0ZW0vZmlsZV93cmFwcGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vZmlsZV93cmFwcGVyLmgKaW5kZXggNTQxMWIwNGY2
OTkyZDc1ZDNlYWI5MjEyNjkwOTQ5YjAzNmNkYzAwMC4uMGJiODZhMzk3ZjkwNjBiZmU0MzNkOWUz
NTZmNGY5ODlmNjU1NWYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2ZpbGVfd3JhcHBlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9maWxl
X3dyYXBwZXIuaApAQCAtMTQsNyArMTQsNiBAQAogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CiAKLSNpbmNsdWRlICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWls
ZC9pbmNsdWRlKQogI2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogCiAvLyBJ
bXBsZW1lbnRhdGlvbiB0aGF0IGNhbiByZWFkIChleGNsdXNpdmUpIG9yIHdyaXRlIGZyb20vdG8g
YSBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgKaW5kZXgg
YjdhMGZlNDE2ODI2MDgyMTk3Yjk4NDYyNzk4ZjVjYWFiZGJkZGM1OC4uZDFlYjYwYWQ3ODNhNWYx
YzhhN2E4MDc0MmViZmRlZDMxYWI3MzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zeXN0
ZW0vcnRjX2V4cG9ydC5oCkBAIC0xNiw3ICsxNiw3IEBACiAvLyBXaGVuIFdlYlJUQyBpcyBidWls
dCBhcyBhIHN0YXRpYyBsaWJyYXJ5IHRoZSBSVENfRVhQT1JUIG1hY3JvIGV4cGFuZHMgdG8KIC8v
IG5vdGhpbmcuCiAKLSNpZmRlZiBDT01QT05FTlRfQlVJTEQKKyNpZmRlZiBXRUJSVENfRU5BQkxF
X1NZTUJPTF9FWFBPUlQKIAogI2lmZGVmIFdFQlJUQ19XSU4KIApAQCAtMzQsNyArMzQsNyBAQAog
CiAjZW5kaWYgIC8vIFdFQlJUQ19XSU4KIAotI2VuZGlmICAvLyBDT01QT05FTlRfQlVJTEQKKyNl
bmRpZiAgLy8gV0VCUlRDX0VOQUJMRV9TWU1CT0xfRVhQT1JUCiAKICNpZm5kZWYgUlRDX0VYUE9S
VAogI2RlZmluZSBSVENfRVhQT1JUCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlLmgKaW5kZXgg
YjhiMzA3Y2E2YTQwNTgzNTRlNGIxYjg4ODY5ODg0OGI1Mzk0ZTc5My4uODg4ZTIwMzk2N2NkMzY1
YWQwODJiMzNlODA5ZGMxYTc0OWMxNmQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWUu
aApAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMuaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
Y29wZWRfcmVmX3B0ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0Lmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgiCiAKIG5hbWVzcGFjZSBy
dGMgewpAQCAtMTUwLDcgKzE1MSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFz
az4gTmV3Q2xvc3VyZShDbG9zdXJlJiYgY2xvc3VyZSwKIC8vIFRhc2tRdWV1ZSBpdHNlbGYgaGFz
IGJlZW4gZGVsZXRlZCBvciBpdCBtYXkgaGFwcGVuIHN5bmNocm9ub3VzbHkgd2hpbGUgdGhlCiAv
LyBUYXNrUXVldWUgaW5zdGFuY2UgaXMgYmVpbmcgZGVsZXRlZC4gIFRoaXMgbWF5IHZhcnkgZnJv
bSBvbmUgT1MgdG8gdGhlIG5leHQKIC8vIHNvIGFzc3VtcHRpb25zIGFib3V0IGxpZmV0aW1lcyBv
ZiBwZW5kaW5nIHRhc2tzIHNob3VsZCBub3QgYmUgbWFkZS4KLWNsYXNzIFJUQ19MT0NLQUJMRSBU
YXNrUXVldWUgeworY2xhc3MgUlRDX0xPQ0tBQkxFIFJUQ19FWFBPUlQgVGFza1F1ZXVlIHsKICBw
dWJsaWM6CiAgIC8vIFRhc2tRdWV1ZSBwcmlvcml0eSBsZXZlbHMuIE9uIHNvbWUgcGxhdGZvcm1z
IHRoZXNlIHdpbGwgbWFwIHRvIHRocmVhZAogICAvLyBwcmlvcml0aWVzLCBvbiBvdGhlcnMgc3Vj
aCBhcyBNYWMgYW5kIGlPUywgR0NEIHF1ZXVlIHByaW9yaXRpZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVl
X2Zvcl90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS90YXNrX3F1ZXVlX2Zvcl90ZXN0LmgKaW5kZXggNzBjNThmYjUxNmMxYWE2YWQ0M2Vk
ZmVhYTkzYmQzY2FiMmRhY2ExYS4uOTE2MmU4MWI4OGFjZTk1ODJiMDhkOGYyMGQzOTNjYzFlMGEy
NGNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdGFza19xdWV1ZV9mb3JfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfZm9yX3Rlc3QuaApA
QCAtMzMsNyArMzMsNyBAQCBjbGFzcyBSVENfTE9DS0FCTEUgVGFza1F1ZXVlRm9yVGVzdCA6IHB1
YmxpYyBUYXNrUXVldWUgewogICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xvc3VyZT4KICAgdm9pZCBTZW5k
VGFzayhDbG9zdXJlKiB0YXNrKSB7CiAgICAgUlRDX0RDSEVDSyghSXNDdXJyZW50KCkpOwotICAg
IHJ0Yzo6RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgICBydGM6OkV2ZW50IGV2ZW50Owog
ICAgIFBvc3RUYXNrKHJ0Yzo6TmV3Q2xvc3VyZSgKICAgICAgICAgWyZ0YXNrXSgpIHsKICAgICAg
ICAgICBSVENfQ0hFQ0tfRVEoZmFsc2UsIHN0YXRpY19jYXN0PFF1ZXVlZFRhc2sqPih0YXNrKS0+
UnVuKCkpOwpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSVENfTE9DS0FCTEUgVGFza1F1ZXVlRm9y
VGVzdCA6IHB1YmxpYyBUYXNrUXVldWUgewogICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xvc3VyZT4KICAg
dm9pZCBTZW5kVGFzayhDbG9zdXJlJiYgdGFzaykgewogICAgIFJUQ19EQ0hFQ0soIUlzQ3VycmVu
dCgpKTsKLSAgICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgICAgcnRjOjpFdmVu
dCBldmVudDsKICAgICBQb3N0VGFzayhydGM6Ok5ld0Nsb3N1cmUoc3RkOjptb3ZlKHRhc2spLCBb
JmV2ZW50XSgpIHsgZXZlbnQuU2V0KCk7IH0pKTsKICAgICBldmVudC5XYWl0KHJ0Yzo6RXZlbnQ6
OmtGb3JldmVyKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZV9saWJldmVudC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfbGli
ZXZlbnQuY2MKaW5kZXggY2JlZDMzMzRkNzdmZDdhYTg2NTdhYjg5NWE4ZjEzY2VhZWI1NjU4NC4u
MjdiODgwMWJiMGRlMDQ4MzYzMmY0YjhhNzBjMzI1ODUxOTQ2ZGFlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1
ZV9saWJldmVudC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS90YXNrX3F1ZXVlX2xpYmV2ZW50LmNjCkBAIC0xMCwxMSArMTAsMTcgQEAK
IAogI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKIAorI2luY2x1ZGUgPGVycm5vLmg+
CiAjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8c2ln
bmFsLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVk
ZSA8dGltZS5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVk
ZSA8bWVtb3J5PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAK
ICNpZiBkZWZpbmVkKFdFQlJUQ19MSU5VWCkKICNpbmNsdWRlIDxldmVudDIvZXZlbnQuaD4KQEAg
LTIzLDE3ICsyOSwxOCBAQAogI2Vsc2UKICNpbmNsdWRlICJiYXNlL3RoaXJkX3BhcnR5L2xpYmV2
ZW50L2V2ZW50LmgiCiAjZW5kaWYKLQogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xv
Z2dpbmcuaCIKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCisjaW5jbHVkZSAicnRj
X2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9zeXN0ZW0vdW51c2Vk
LmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3Rhc2tfcXVldWVfcG9zaXguaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5ub3RhdGlv
bnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ0YyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9y
dGNfYmFzZS90YXNrX3F1ZXVlX3N0ZGxpYi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfc3RkbGliLmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBmYjBlZDI4Yjk1MWViYzkxMGUxMDM4NzhiMTg5M2FjN2I4MDg4YTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90
YXNrX3F1ZXVlX3N0ZGxpYi5jYwpAQCAtMCwwICsxLDM5OSBAQAorLyoKKyAqICBDb3B5cmlnaHQg
MjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8K
KworI2luY2x1ZGUgInJ0Y19iYXNlL3Rhc2tfcXVldWUuaCIKKworI2luY2x1ZGUgPHN0cmluZy5o
PgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8Y29u
ZGl0aW9uX3ZhcmlhYmxlPgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxxdWV1ZT4KKyNpbmNs
dWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAi
cnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZv
cm1fdGhyZWFkLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIKKyNpbmNsdWRlICJy
dGNfYmFzZS9yZWZjb3VudGVkb2JqZWN0LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fu
bm90YXRpb25zLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCisKK25hbWVzcGFj
ZSBydGMgeworbmFtZXNwYWNlIHsKKwordXNpbmcgUHJpb3JpdHkgPSBUYXNrUXVldWU6OlByaW9y
aXR5OworCitUaHJlYWRQcmlvcml0eSBUYXNrUXVldWVQcmlvcml0eVRvVGhyZWFkUHJpb3JpdHko
UHJpb3JpdHkgcHJpb3JpdHkpIHsKKyAgc3dpdGNoIChwcmlvcml0eSkgeworICAgIGNhc2UgUHJp
b3JpdHk6OkhJR0g6CisgICAgICByZXR1cm4ga1JlYWx0aW1lUHJpb3JpdHk7CisgICAgY2FzZSBQ
cmlvcml0eTo6TE9XOgorICAgICAgcmV0dXJuIGtMb3dQcmlvcml0eTsKKyAgICBjYXNlIFByaW9y
aXR5OjpOT1JNQUw6CisgICAgICByZXR1cm4ga05vcm1hbFByaW9yaXR5OworICAgIGRlZmF1bHQ6
CisgICAgICBSVENfTk9UUkVBQ0hFRCgpOworICAgICAgcmV0dXJuIGtOb3JtYWxQcmlvcml0eTsK
KyAgfQorICByZXR1cm4ga05vcm1hbFByaW9yaXR5OworfQorCit9ICAvLyBuYW1lc3BhY2UKKwor
Y2xhc3MgVGFza1F1ZXVlOjpJbXBsIDogcHVibGljIFJlZkNvdW50SW50ZXJmYWNlIHsKKyBwdWJs
aWM6CisgIEltcGwoY29uc3QgY2hhciogcXVldWVfbmFtZSwgVGFza1F1ZXVlKiBxdWV1ZSwgUHJp
b3JpdHkgcHJpb3JpdHkpOworICB+SW1wbCgpIG92ZXJyaWRlOworCisgIHN0YXRpYyBUYXNrUXVl
dWU6OkltcGwqIEN1cnJlbnQoKTsKKyAgc3RhdGljIFRhc2tRdWV1ZSogQ3VycmVudFF1ZXVlKCk7
CisKKyAgLy8gVXNlZCBmb3IgRENIRUNLaW5nIHRoZSBjdXJyZW50IHF1ZXVlLgorICBib29sIElz
Q3VycmVudCgpIGNvbnN0OworCisgIHRlbXBsYXRlIDxjbGFzcyBDbG9zdXJlLAorICAgICAgICAg
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfY29udmVydGlibGU8CisgICAgICAg
ICAgICAgICAgQ2xvc3VyZSwKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVk
VGFzaz4+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KKyAgdm9pZCBQb3N0VGFzayhDbG9zdXJl
JiYgY2xvc3VyZSkgeworICAgIFBvc3RUYXNrKE5ld0Nsb3N1cmUoc3RkOjpmb3J3YXJkPENsb3N1
cmU+KGNsb3N1cmUpKSk7CisgIH0KKworICB2b2lkIFBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxR
dWV1ZWRUYXNrPiB0YXNrKTsKKyAgdm9pZCBQb3N0VGFza0FuZFJlcGx5KHN0ZDo6dW5pcXVlX3B0
cjxRdWV1ZWRUYXNrPiB0YXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFF1ZXVlZFRhc2s+IHJlcGx5LAorICAgICAgICAgICAgICAgICAgICAgICAgVGFza1F1ZXVl
OjpJbXBsKiByZXBseV9xdWV1ZSk7CisKKyAgdm9pZCBQb3N0RGVsYXllZFRhc2soc3RkOjp1bmlx
dWVfcHRyPFF1ZXVlZFRhc2s+IHRhc2ssIHVpbnQzMl90IG1pbGxpc2Vjb25kcyk7CisKKyAgY2xh
c3MgV29ya2VyVGhyZWFkIDogcHVibGljIFBsYXRmb3JtVGhyZWFkIHsKKyAgIHB1YmxpYzoKKyAg
ICBXb3JrZXJUaHJlYWQoVGhyZWFkUnVuRnVuY3Rpb24gZnVuYywKKyAgICAgICAgICAgICAgICAg
dm9pZCogb2JqLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0aHJlYWRfbmFtZSwKKyAg
ICAgICAgICAgICAgICAgVGhyZWFkUHJpb3JpdHkgcHJpb3JpdHkpCisgICAgICAgIDogUGxhdGZv
cm1UaHJlYWQoZnVuYywgb2JqLCB0aHJlYWRfbmFtZSwgcHJpb3JpdHkpIHt9CisgIH07CisKKyAg
dXNpbmcgT3JkZXJJZCA9IHVpbnQ2NF90OworCisgIHN0cnVjdCBEZWxheWVkRW50cnlUaW1lb3V0
IHsKKyAgICBpbnQ2NF90IG5leHRfZmlyZV9hdF9tc197fTsKKyAgICBPcmRlcklkIG9yZGVyX3t9
OworCisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgRGVsYXllZEVudHJ5VGltZW91dCYgbykgY29u
c3QgeworICAgICAgcmV0dXJuIHN0ZDo6dGllKG5leHRfZmlyZV9hdF9tc18sIG9yZGVyXykgPAor
ICAgICAgICAgICAgIHN0ZDo6dGllKG8ubmV4dF9maXJlX2F0X21zXywgby5vcmRlcl8pOworICAg
IH0KKyAgfTsKKworICBzdHJ1Y3QgTmV4dFRhc2sgeworICAgIGJvb2wgZmluYWxfdGFza197ZmFs
c2V9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPiBydW5fdGFza187CisgICAgaW50
NjRfdCBzbGVlcF90aW1lX21zX3t9OworICB9OworCisgcHJvdGVjdGVkOgorICBOZXh0VGFzayBH
ZXROZXh0VGFzaygpOworCisgcHJpdmF0ZToKKyAgLy8gVGhlIFRocmVhZFF1ZXVlOjpDdXJyZW50
KCkgbWV0aG9kIHJlcXVpcmVzIHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkCisgIC8vIHJldHVybnMg
dGhlIHRhc2sgcXVldWUgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIHRoZSBhY3RpdmUgdGFzawor
ICAvLyBxdWV1ZSBhbmQgdGhpcyB2YXJpYWJsZSBob2xkcyB0aGUgdmFsdWUgbmVlZGVkIGluIHRo
cmVhZF9sb2NhbCB0bworICAvLyBvbiB0aGUgaW5pdGlhbGl6ZWQgd29ya2VyIHRocmVhZCBob2xk
aW5nIHRoZSBxdWV1ZS4KKyAgc3RhdGljIHRocmVhZF9sb2NhbCBUYXNrUXVldWU6OkltcGwqIHRo
cmVhZF9jb250ZXh0XzsKKworICBzdGF0aWMgdm9pZCBUaHJlYWRNYWluKHZvaWQqIGNvbnRleHQp
OworCisgIHZvaWQgUHJvY2Vzc1Rhc2tzKCk7CisKKyAgdm9pZCBOb3RpZnlXYWtlKCk7CisKKyAg
Ly8gVGhlIGJhY2sgcG9pbnRlciBmcm9tIHRoZSBvd25lciB0YXNrIHF1ZXVlIG9iamVjdAorICAv
LyBmcm9tIHRoaXMgaW1wbGVtZW50YXRpb24gZGV0YWlsLgorICBUYXNrUXVldWUqIGNvbnN0IHF1
ZXVlXzsKKworICAvLyBJbmRpY2F0ZXMgaWYgdGhlIHRocmVhZCBoYXMgc3RhcnRlZC4KKyAgRXZl
bnQgc3RhcnRlZF87CisKKyAgLy8gSW5kaWNhdGVzIGlmIHRoZSB0aHJlYWQgaGFzIHN0b3BwZWQu
CisgIEV2ZW50IHN0b3BwZWRfOworCisgIC8vIFNpZ25hbGVkIHdoZW5ldmVyIGEgbmV3IHRhc2sg
aXMgcGVuZGluZy4KKyAgRXZlbnQgZmxhZ19ub3RpZnlfOworCisgIC8vIENvbnRhaW5zIHRoZSBh
Y3RpdmUgd29ya2VyIHRocmVhZCBhc3NpZ25lZCB0byBwcm9jZXNzaW5nCisgIC8vIHRhc2tzIChp
bmNsdWRpbmcgZGVsYXllZCB0YXNrcykuCisgIFdvcmtlclRocmVhZCB0aHJlYWRfOworCisgIHJ0
Yzo6Q3JpdGljYWxTZWN0aW9uIHBlbmRpbmdfbG9ja187CisKKyAgLy8gSW5kaWNhdGVzIGlmIHRo
ZSB3b3JrZXIgdGhyZWFkIG5lZWRzIHRvIHNodXRkb3duIG5vdy4KKyAgYm9vbCB0aHJlYWRfc2hv
dWxkX3F1aXRfIFJUQ19HVUFSREVEX0JZKHBlbmRpbmdfbG9ja18pe2ZhbHNlfTsKKworICAvLyBI
b2xkcyB0aGUgbmV4dCBvcmRlciB0byB1c2UgZm9yIHRoZSBuZXh0IHRhc2sgdG8gYmUKKyAgLy8g
cHV0IGludG8gb25lIG9mIHRoZSBwZW5kaW5nIHF1ZXVlcy4KKyAgT3JkZXJJZCB0aHJlYWRfcG9z
dGluZ19vcmRlcl8gUlRDX0dVQVJERURfQlkocGVuZGluZ19sb2NrXyl7fTsKKworICAvLyBUaGUg
bGlzdCBvZiBhbGwgcGVuZGluZyB0YXNrcyB0aGF0IG5lZWQgdG8gYmUgcHJvY2Vzc2VkIGluIHRo
ZQorICAvLyBGSUZPIHF1ZXVlIG9yZGVyaW5nIG9uIHRoZSB3b3JrZXIgdGhyZWFkLgorICBzdGQ6
OnF1ZXVlPHN0ZDo6cGFpcjxPcmRlcklkLCBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4+PiBw
ZW5kaW5nX3F1ZXVlXworICAgICAgUlRDX0dVQVJERURfQlkocGVuZGluZ19sb2NrXyk7CisKKyAg
Ly8gVGhlIGxpc3Qgb2YgYWxsIHBlbmRpbmcgdGFza3MgdGhhdCBuZWVkIHRvIGJlIHByb2Nlc3Nl
ZCBhdCBhIGZ1dHVyZQorICAvLyB0aW1lIGJhc2VkIHVwb24gYSBkZWxheS4gT24gdGhlIG9mZiBj
aGFuZ2UgdGhlIGRlbGF5ZWQgdGFzayBzaG91bGQKKyAgLy8gaGFwcGVuIGF0IGV4YWN0bHkgdGhl
IHNhbWUgdGltZSBpbnRlcnZhbCBhcyBhbm90aGVyIHRhc2sgdGhlbiB0aGUKKyAgLy8gdGFzayBp
cyBwcm9jZXNzZWQgYmFzZWQgb24gRklGTyBvcmRlcmluZy4gc3RkOjpwcmlvcml0eV9xdWV1ZSB3
YXMKKyAgLy8gY29uc2lkZXJlZCBidXQgcmVqZWN0ZWQgZHVlIHRvIGl0cyBpbmFiaWxpdHkgdG8g
ZXh0cmFjdCB0aGUKKyAgLy8gc3RkOjp1bmlxdWVfcHRyIG91dCBvZiB0aGUgcXVldWUgd2l0aG91
dCB0aGUgcHJlc2VuY2Ugb2YgYSBoYWNrLgorICBzdGQ6Om1hcDxEZWxheWVkRW50cnlUaW1lb3V0
LCBzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4+IGRlbGF5ZWRfcXVldWVfCisgICAgICBSVENf
R1VBUkRFRF9CWShwZW5kaW5nX2xvY2tfKTsKK307CisKKy8vIHN0YXRpYwordGhyZWFkX2xvY2Fs
IFRhc2tRdWV1ZTo6SW1wbCogVGFza1F1ZXVlOjpJbXBsOjp0aHJlYWRfY29udGV4dF8gPSBudWxs
cHRyOworCitUYXNrUXVldWU6OkltcGw6OkltcGwoY29uc3QgY2hhciogcXVldWVfbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBUYXNrUXVldWUqIHF1ZXVlLAorICAgICAgICAgICAgICAgICAg
ICAgIFByaW9yaXR5IHByaW9yaXR5KQorICAgIDogcXVldWVfKHF1ZXVlKSwKKyAgICAgIHN0YXJ0
ZWRfKC8qbWFudWFsX3Jlc2V0PSovZmFsc2UsIC8qaW5pdGlhbGx5X3NpZ25hbGVkPSovZmFsc2Up
LAorICAgICAgc3RvcHBlZF8oLyptYW51YWxfcmVzZXQ9Ki9mYWxzZSwgLyppbml0aWFsbHlfc2ln
bmFsZWQ9Ki9mYWxzZSksCisgICAgICBmbGFnX25vdGlmeV8oLyptYW51YWxfcmVzZXQ9Ki9mYWxz
ZSwgLyppbml0aWFsbHlfc2lnbmFsZWQ9Ki9mYWxzZSksCisgICAgICB0aHJlYWRfKCZUYXNrUXVl
dWU6OkltcGw6OlRocmVhZE1haW4sCisgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAg
IHF1ZXVlX25hbWUsCisgICAgICAgICAgICAgIFRhc2tRdWV1ZVByaW9yaXR5VG9UaHJlYWRQcmlv
cml0eShwcmlvcml0eSkpIHsKKyAgUlRDX0RDSEVDSyhxdWV1ZV9uYW1lKTsKKyAgdGhyZWFkXy5T
dGFydCgpOworICBzdGFydGVkXy5XYWl0KEV2ZW50OjprRm9yZXZlcik7Cit9CisKK1Rhc2tRdWV1
ZTo6SW1wbDo6fkltcGwoKSB7CisgIFJUQ19EQ0hFQ0soIUlzQ3VycmVudCgpKTsKKworICB7Cisg
ICAgQ3JpdFNjb3BlIGxvY2soJnBlbmRpbmdfbG9ja18pOworICAgIHRocmVhZF9zaG91bGRfcXVp
dF8gPSB0cnVlOworICB9CisKKyAgTm90aWZ5V2FrZSgpOworCisgIHN0b3BwZWRfLldhaXQoRXZl
bnQ6OmtGb3JldmVyKTsKKyAgdGhyZWFkXy5TdG9wKCk7Cit9CisKKy8vIHN0YXRpYworVGFza1F1
ZXVlOjpJbXBsKiBUYXNrUXVldWU6OkltcGw6OkN1cnJlbnQoKSB7CisgIHJldHVybiB0aHJlYWRf
Y29udGV4dF87Cit9CisKKy8vIHN0YXRpYworVGFza1F1ZXVlKiBUYXNrUXVldWU6OkltcGw6OkN1
cnJlbnRRdWV1ZSgpIHsKKyAgVGFza1F1ZXVlOjpJbXBsKiBjdXJyZW50ID0gQ3VycmVudCgpOwor
ICByZXR1cm4gY3VycmVudCA/IGN1cnJlbnQtPnF1ZXVlXyA6IG51bGxwdHI7Cit9CisKK2Jvb2wg
VGFza1F1ZXVlOjpJbXBsOjpJc0N1cnJlbnQoKSBjb25zdCB7CisgIHJldHVybiBJc1RocmVhZFJl
ZkVxdWFsKHRocmVhZF8uR2V0VGhyZWFkUmVmKCksIEN1cnJlbnRUaHJlYWRSZWYoKSk7Cit9CisK
K3ZvaWQgVGFza1F1ZXVlOjpJbXBsOjpQb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFz
az4gdGFzaykgeworICB7CisgICAgQ3JpdFNjb3BlIGxvY2soJnBlbmRpbmdfbG9ja18pOworICAg
IE9yZGVySWQgb3JkZXIgPSB0aHJlYWRfcG9zdGluZ19vcmRlcl8rKzsKKworICAgIHBlbmRpbmdf
cXVldWVfLnB1c2goc3RkOjpwYWlyPE9yZGVySWQsIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNr
Pj4oCisgICAgICAgIG9yZGVyLCBzdGQ6Om1vdmUodGFzaykpKTsKKyAgfQorCisgIE5vdGlmeVdh
a2UoKTsKK30KKwordm9pZCBUYXNrUXVldWU6OkltcGw6OlBvc3REZWxheWVkVGFzayhzdGQ6OnVu
aXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgbWlsbGlzZWNvbmRzKSB7CisgIGF1dG8gZmlyZV9hdCA9IHJ0Yzo6
VGltZU1pbGxpcygpICsgbWlsbGlzZWNvbmRzOworCisgIERlbGF5ZWRFbnRyeVRpbWVvdXQgZGVs
YXk7CisgIGRlbGF5Lm5leHRfZmlyZV9hdF9tc18gPSBmaXJlX2F0OworCisgIHsKKyAgICBDcml0
U2NvcGUgbG9jaygmcGVuZGluZ19sb2NrXyk7CisgICAgZGVsYXkub3JkZXJfID0gKyt0aHJlYWRf
cG9zdGluZ19vcmRlcl87CisgICAgZGVsYXllZF9xdWV1ZV9bZGVsYXldID0gc3RkOjptb3ZlKHRh
c2spOworICB9CisKKyAgTm90aWZ5V2FrZSgpOworfQorCit2b2lkIFRhc2tRdWV1ZTo6SW1wbDo6
UG9zdFRhc2tBbmRSZXBseShzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRU
YXNrPiByZXBseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tR
dWV1ZTo6SW1wbCogcmVwbHlfcXVldWUpIHsKKyAgUXVldWVkVGFzayogdGFza19wdHIgPSB0YXNr
LnJlbGVhc2UoKTsKKyAgUXVldWVkVGFzayogcmVwbHlfdGFza19wdHIgPSByZXBseS5yZWxlYXNl
KCk7CisgIFBvc3RUYXNrKFt0YXNrX3B0ciwgcmVwbHlfdGFza19wdHIsIHJlcGx5X3F1ZXVlXSgp
IHsKKyAgICBpZiAodGFza19wdHItPlJ1bigpKQorICAgICAgZGVsZXRlIHRhc2tfcHRyOworCisg
ICAgcmVwbHlfcXVldWUtPlBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPihyZXBs
eV90YXNrX3B0cikpOworICB9KTsKK30KKworVGFza1F1ZXVlOjpJbXBsOjpOZXh0VGFzayBUYXNr
UXVldWU6OkltcGw6OkdldE5leHRUYXNrKCkgeworICBOZXh0VGFzayByZXN1bHR7fTsKKworICBh
dXRvIHRpY2sgPSBydGM6OlRpbWVNaWxsaXMoKTsKKworICBDcml0U2NvcGUgbG9jaygmcGVuZGlu
Z19sb2NrXyk7CisKKyAgaWYgKHRocmVhZF9zaG91bGRfcXVpdF8pIHsKKyAgICByZXN1bHQuZmlu
YWxfdGFza18gPSB0cnVlOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBpZiAoZGVsYXll
ZF9xdWV1ZV8uc2l6ZSgpID4gMCkgeworICAgIGF1dG8gZGVsYXllZF9lbnRyeSA9IGRlbGF5ZWRf
cXVldWVfLmJlZ2luKCk7CisgICAgY29uc3QgYXV0byYgZGVsYXlfaW5mbyA9IGRlbGF5ZWRfZW50
cnktPmZpcnN0OworICAgIGF1dG8mIGRlbGF5X3J1biA9IGRlbGF5ZWRfZW50cnktPnNlY29uZDsK
KyAgICBpZiAodGljayA+PSBkZWxheV9pbmZvLm5leHRfZmlyZV9hdF9tc18pIHsKKyAgICAgIGlm
IChwZW5kaW5nX3F1ZXVlXy5zaXplKCkgPiAwKSB7CisgICAgICAgIGF1dG8mIGVudHJ5ID0gcGVu
ZGluZ19xdWV1ZV8uZnJvbnQoKTsKKyAgICAgICAgYXV0byYgZW50cnlfb3JkZXIgPSBlbnRyeS5m
aXJzdDsKKyAgICAgICAgYXV0byYgZW50cnlfcnVuID0gZW50cnkuc2Vjb25kOworICAgICAgICBp
ZiAoZW50cnlfb3JkZXIgPCBkZWxheV9pbmZvLm9yZGVyXykgeworICAgICAgICAgIHJlc3VsdC5y
dW5fdGFza18gPSBzdGQ6Om1vdmUoZW50cnlfcnVuKTsKKyAgICAgICAgICBwZW5kaW5nX3F1ZXVl
Xy5wb3AoKTsKKyAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICB9CisK
KyAgICAgIHJlc3VsdC5ydW5fdGFza18gPSBzdGQ6Om1vdmUoZGVsYXlfcnVuKTsKKyAgICAgIGRl
bGF5ZWRfcXVldWVfLmVyYXNlKGRlbGF5ZWRfZW50cnkpOworICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICByZXN1bHQuc2xlZXBfdGltZV9tc18gPSBkZWxheV9pbmZvLm5leHRfZmly
ZV9hdF9tc18gLSB0aWNrOworICB9CisKKyAgaWYgKHBlbmRpbmdfcXVldWVfLnNpemUoKSA+IDAp
IHsKKyAgICBhdXRvJiBlbnRyeSA9IHBlbmRpbmdfcXVldWVfLmZyb250KCk7CisgICAgcmVzdWx0
LnJ1bl90YXNrXyA9IHN0ZDo6bW92ZShlbnRyeS5zZWNvbmQpOworICAgIHBlbmRpbmdfcXVldWVf
LnBvcCgpOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gc3RhdGljCit2b2lkIFRh
c2tRdWV1ZTo6SW1wbDo6VGhyZWFkTWFpbih2b2lkKiBjb250ZXh0KSB7CisgIFRhc2tRdWV1ZTo6
SW1wbCogbWUgPSBzdGF0aWNfY2FzdDxUYXNrUXVldWU6OkltcGwqPihjb250ZXh0KTsKKyAgbWUt
PlByb2Nlc3NUYXNrcygpOworfQorCit2b2lkIFRhc2tRdWV1ZTo6SW1wbDo6UHJvY2Vzc1Rhc2tz
KCkgeworICB0aHJlYWRfY29udGV4dF8gPSB0aGlzOworICBzdGFydGVkXy5TZXQoKTsKKworICB3
aGlsZSAodHJ1ZSkgeworICAgIGF1dG8gdGFzayA9IEdldE5leHRUYXNrKCk7CisKKyAgICBpZiAo
dGFzay5maW5hbF90YXNrXykKKyAgICAgIGJyZWFrOworCisgICAgaWYgKHRhc2sucnVuX3Rhc2tf
KSB7CisgICAgICAvLyBwcm9jZXNzIGVudHJ5IGltbWVkaWF0ZWx5IHRoZW4gdHJ5IGFnYWluCisg
ICAgICBRdWV1ZWRUYXNrKiByZWxlYXNlX3B0ciA9IHRhc2sucnVuX3Rhc2tfLnJlbGVhc2UoKTsK
KyAgICAgIGlmIChyZWxlYXNlX3B0ci0+UnVuKCkpCisgICAgICAgIGRlbGV0ZSByZWxlYXNlX3B0
cjsKKworICAgICAgLy8gYXR0ZW1wdCB0byBzbGVlcCBhZ2FpbgorICAgICAgY29udGludWU7Cisg
ICAgfQorCisgICAgaWYgKDAgPT0gdGFzay5zbGVlcF90aW1lX21zXykKKyAgICAgIGZsYWdfbm90
aWZ5Xy5XYWl0KEV2ZW50OjprRm9yZXZlcik7CisgICAgZWxzZQorICAgICAgZmxhZ19ub3RpZnlf
LldhaXQodGFzay5zbGVlcF90aW1lX21zXyk7CisgIH0KKworICBzdG9wcGVkXy5TZXQoKTsKK30K
Kwordm9pZCBUYXNrUXVldWU6OkltcGw6Ok5vdGlmeVdha2UoKSB7CisgIC8vIFRoZSBxdWV1ZSBo
b2xkcyBwZW5kaW5nIHRhc2tzIHRvIGNvbXBsZXRlLiBFaXRoZXIgdGFza3MgYXJlIHRvIGJlCisg
IC8vIGV4ZWN1dGVkIGltbWVkaWF0ZWx5IG9yIHRhc2tzIGFyZSB0byBiZSBydW4gYXQgc29tZSBm
dXR1cmUgZGVsYXllZCB0aW1lLgorICAvLyBGb3IgaW1tZWRpYXRlIHRhc2tzIHRoZSB0YXNrIHF1
ZXVlJ3MgdGhyZWFkIGlzIGJ1c3kgcnVubmluZyB0aGUgdGFzayBhbmQKKyAgLy8gdGhlIHRocmVh
ZCB3aWxsIG5vdCBiZSB3YWl0aW5nIG9uIHRoZSBmbGFnX25vdGlmeV8gZXZlbnQuIElmIG5vIGlt
bWVkaWF0ZQorICAvLyB0YXNrcyBhcmUgYXZhaWxhYmxlIGJ1dCBhIGRlbGF5ZWQgdGFzayBpcyBw
ZW5kaW5nIHRoZW4gdGhlIHRocmVhZCB3aWxsIGJlCisgIC8vIHdhaXRpbmcgb24gZmxhZ19ub3Rp
ZnlfIHdpdGggYSBkZWxheWVkIHRpbWUtb3V0IG9mIHRoZSBuZWFyZXN0IHRpbWVkIHRhc2sKKyAg
Ly8gdG8gcnVuLiBJZiBubyBpbW1lZGlhdGUgb3IgcGVuZGluZyB0YXNrcyBhcmUgYXZhaWxhYmxl
LCB0aGUgdGhyZWFkIHdpbGwKKyAgLy8gd2FpdCBvbiBmbGFnX25vdGlmeV8gdW50aWwgc2lnbmFs
ZWQgdGhhdCBhIHRhc2sgaGFzIGJlZW4gYWRkZWQgKG9yIHRoZQorICAvLyB0aHJlYWQgdG8gYmUg
dG9sZCB0byBzaHV0ZG93bikuCisKKyAgLy8gSW4gYWxsIGNhc2VzLCB3aGVuIGEgbmV3IGltbWVk
aWF0ZSB0YXNrLCBkZWxheWVkIHRhc2ssIG9yIHJlcXVlc3QgdG8KKyAgLy8gc2h1dGRvd24gdGhl
IHRocmVhZCBpcyBhZGRlZCB0aGUgZmxhZ19ub3RpZnlfIGlzIHNpZ25hbGVkIGFmdGVyLiBJZiB0
aGUKKyAgLy8gdGhyZWFkIHdhcyB3YWl0aW5nIHRoZW4gdGhlIHRocmVhZCB3aWxsIHdha2UgdXAg
aW1tZWRpYXRlbHkgYW5kIHJlLWFzc2VzcworICAvLyB3aGF0IHRhc2sgbmVlZHMgdG8gYmUgcnVu
IG5leHQgKGkuZS4gcnVuIGEgdGFzayBub3csIHdhaXQgZm9yIHRoZSBuZWFyZXN0CisgIC8vIHRp
bWVkIGRlbGF5ZWQgdGFzaywgb3Igc2h1dGRvd24gdGhlIHRocmVhZCkuIElmIHRoZSB0aHJlYWQg
d2FzIG5vdCB3YWl0aW5nCisgIC8vIHRoZW4gdGhlIHRocmVhZCB3aWxsIHJlbWFpbmVkIHNpZ25h
bGVkIHRvIHdha2UgdXAgdGhlIG5leHQgdGltZSBhbnkKKyAgLy8gYXR0ZW1wdCB0byB3YWl0IG9u
IHRoZSBmbGFnX25vdGlmeV8gZXZlbnQgb2NjdXJzLgorCisgIC8vIEFueSBpbW1lZGlhdGUgb3Ig
ZGVsYXllZCBwZW5kaW5nIHRhc2sgKG9yIHJlcXVlc3QgdG8gc2h1dGRvd24gdGhlIHRocmVhZCkK
KyAgLy8gbXVzdCBhbHdheXMgYmUgYWRkZWQgdG8gdGhlIHF1ZXVlIHByaW9yIHRvIHNpZ25hbGlu
ZyBmbGFnX25vdGlmeV8gdG8gd2FrZQorICAvLyB1cCB0aGUgcG9zc2libHkgc2xlZXBpbmcgdGhy
ZWFkLiBUaGlzIHByZXZlbnRzIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlCisgIC8vIHRocmVh
ZCBpcyBub3RpZmllZCB0byB3YWtlIHVwIGJ1dCB0aGUgdGFzayBxdWV1ZSdzIHRocmVhZCBmaW5k
cyBub3RoaW5nIHRvCisgIC8vIGRvIHNvIGl0IHdhaXRzIG9uY2UgYWdhaW4gdG8gYmUgc2lnbmFs
ZWQgd2hlcmUgc3VjaCBhIHNpZ25hbCBtYXkgbmV2ZXIKKyAgLy8gaGFwcGVuLgorICBmbGFnX25v
dGlmeV8uU2V0KCk7Cit9CisKKy8vIEJvaWxlcnBsYXRlIGZvciB0aGUgUElNUEwgcGF0dGVybi4K
K1Rhc2tRdWV1ZTo6VGFza1F1ZXVlKGNvbnN0IGNoYXIqIHF1ZXVlX25hbWUsIFByaW9yaXR5IHBy
aW9yaXR5KQorICAgIDogaW1wbF8obmV3IFJlZkNvdW50ZWRPYmplY3Q8VGFza1F1ZXVlOjpJbXBs
PihxdWV1ZV9uYW1lLCB0aGlzLCBwcmlvcml0eSkpIHsKK30KKworVGFza1F1ZXVlOjp+VGFza1F1
ZXVlKCkge30KKworLy8gc3RhdGljCitUYXNrUXVldWUqIFRhc2tRdWV1ZTo6Q3VycmVudCgpIHsK
KyAgcmV0dXJuIFRhc2tRdWV1ZTo6SW1wbDo6Q3VycmVudFF1ZXVlKCk7Cit9CisKKy8vIFVzZWQg
Zm9yIERDSEVDS2luZyB0aGUgY3VycmVudCBxdWV1ZS4KK2Jvb2wgVGFza1F1ZXVlOjpJc0N1cnJl
bnQoKSBjb25zdCB7CisgIHJldHVybiBpbXBsXy0+SXNDdXJyZW50KCk7Cit9CisKK3ZvaWQgVGFz
a1F1ZXVlOjpQb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gdGFzaykgeworICBy
ZXR1cm4gVGFza1F1ZXVlOjppbXBsXy0+UG9zdFRhc2soc3RkOjptb3ZlKHRhc2spKTsKK30KKwor
dm9pZCBUYXNrUXVldWU6OlBvc3RUYXNrQW5kUmVwbHkoc3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRh
c2s+IHRhc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UXVldWVkVGFzaz4gcmVwbHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
YXNrUXVldWUqIHJlcGx5X3F1ZXVlKSB7CisgIHJldHVybiBUYXNrUXVldWU6OmltcGxfLT5Qb3N0
VGFza0FuZFJlcGx5KHN0ZDo6bW92ZSh0YXNrKSwgc3RkOjptb3ZlKHJlcGx5KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlfcXVldWUtPmltcGxfLmdl
dCgpKTsKK30KKwordm9pZCBUYXNrUXVldWU6OlBvc3RUYXNrQW5kUmVwbHkoc3RkOjp1bmlxdWVf
cHRyPFF1ZXVlZFRhc2s+IHRhc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4gcmVwbHkpIHsKKyAgcmV0dXJuIFRhc2tRdWV1ZTo6
aW1wbF8tPlBvc3RUYXNrQW5kUmVwbHkoc3RkOjptb3ZlKHRhc2spLCBzdGQ6Om1vdmUocmVwbHkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsXy5nZXQo
KSk7Cit9CisKK3ZvaWQgVGFza1F1ZXVlOjpQb3N0RGVsYXllZFRhc2soc3RkOjp1bmlxdWVfcHRy
PFF1ZXVlZFRhc2s+IHRhc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IG1pbGxpc2Vjb25kcykgeworICByZXR1cm4gVGFza1F1ZXVlOjppbXBsXy0+UG9zdERlbGF5
ZWRUYXNrKHN0ZDo6bW92ZSh0YXNrKSwgbWlsbGlzZWNvbmRzKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfdW5pdHRlc3QuY2MK
aW5kZXggY2VkZjY4ZTJlODUxMzU5YzUwNWU0YzM0YjE0YjljZDg5YmRhZWU2My4uMGFmMzlhNWU3
MTVmYjE1NzhjMzU5YmU2YzI4Y2M0MWFkM2RkODI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZV91bml0dGVz
dC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS90YXNrX3F1ZXVlX3VuaXR0ZXN0LmNjCkBAIC02NCw3ICs2NCw3IEBAIFRFU1QoVGFza1F1
ZXVlVGVzdCwgQ29uc3RydWN0KSB7CiAKIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdEFuZENoZWNr
Q3VycmVudCkgewogICBzdGF0aWMgY29uc3QgY2hhciBrUXVldWVOYW1lW10gPSAiUG9zdEFuZENo
ZWNrQ3VycmVudCI7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50
OwogICBUYXNrUXVldWUgcXVldWUoa1F1ZXVlTmFtZSk7CiAKICAgLy8gV2UncmUgbm90IHJ1bm5p
bmcgYSB0YXNrLCBzbyB0aGVyZSBzaG91bGRuJ3QgYmUgYSBjdXJyZW50IHF1ZXVlLgpAQCAtMTA2
LDcgKzEwNiw3IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdExhbWJkYSkgewogCiBURVNUKFRh
c2tRdWV1ZVRlc3QsIFBvc3REZWxheWVkWmVybykgewogICBzdGF0aWMgY29uc3QgY2hhciBrUXVl
dWVOYW1lW10gPSAiUG9zdERlbGF5ZWRaZXJvIjsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNl
KTsKKyAgRXZlbnQgZXZlbnQ7CiAgIFRhc2tRdWV1ZSBxdWV1ZShrUXVldWVOYW1lKTsKIAogICBx
dWV1ZS5Qb3N0RGVsYXllZFRhc2soWyZldmVudF0oKSB7IGV2ZW50LlNldCgpOyB9LCAwKTsKQEAg
LTExNSw3ICsxMTUsNyBAQCBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3REZWxheWVkWmVybykgewog
CiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RGcm9tUXVldWUpIHsKICAgc3RhdGljIGNvbnN0IGNo
YXIga1F1ZXVlTmFtZVtdID0gIlBvc3RGcm9tUXVldWUiOwotICBFdmVudCBldmVudChmYWxzZSwg
ZmFsc2UpOworICBFdmVudCBldmVudDsKICAgVGFza1F1ZXVlIHF1ZXVlKGtRdWV1ZU5hbWUpOwog
CiAgIHF1ZXVlLlBvc3RUYXNrKApAQCAtMTI1LDcgKzEyNSw3IEBAIFRFU1QoVGFza1F1ZXVlVGVz
dCwgUG9zdEZyb21RdWV1ZSkgewogCiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3REZWxheWVkKSB7
CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtRdWV1ZU5hbWVbXSA9ICJQb3N0RGVsYXllZCI7Ci0gIEV2
ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBUYXNrUXVldWUgcXVl
dWUoa1F1ZXVlTmFtZSwgVGFza1F1ZXVlOjpQcmlvcml0eTo6SElHSCk7CiAKICAgdWludDMyX3Qg
c3RhcnQgPSBUaW1lKCk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBE
SVNBQkxFRF9Qb3N0RGVsYXllZEhpZ2hSZXMpIHsKICAgRW5hYmxlSGlnaFJlc1RpbWVycyBoaWdo
X3Jlc19zY29wZTsKIAogICBzdGF0aWMgY29uc3QgY2hhciBrUXVldWVOYW1lW10gPSAiUG9zdERl
bGF5ZWRIaWdoUmVzIjsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAgRXZlbnQgZXZl
bnQ7CiAgIFRhc2tRdWV1ZSBxdWV1ZShrUXVldWVOYW1lLCBUYXNrUXVldWU6OlByaW9yaXR5OjpI
SUdIKTsKIAogICB1aW50MzJfdCBzdGFydCA9IFRpbWUoKTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBU
RVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RNdWx0aXBsZURlbGF5ZWQpIHsKIAogICBzdGQ6OnZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8RXZlbnQ+PiBldmVudHM7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwg
MTAwOyArK2kpIHsKLSAgICBldmVudHMucHVzaF9iYWNrKHN0ZDo6dW5pcXVlX3B0cjxFdmVudD4o
bmV3IEV2ZW50KGZhbHNlLCBmYWxzZSkpKTsKKyAgICBldmVudHMucHVzaF9iYWNrKGFic2w6Om1h
a2VfdW5pcXVlPEV2ZW50PigpKTsKICAgICBxdWV1ZS5Qb3N0RGVsYXllZFRhc2soQmluZCgmQ2hl
Y2tDdXJyZW50LCBldmVudHMuYmFjaygpLmdldCgpLCAmcXVldWUpLCBpKTsKICAgfQogCkBAIC0x
NzUsOCArMTc1LDggQEAgVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0TXVsdGlwbGVEZWxheWVkKSB7
CiAKIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdERlbGF5ZWRBZnRlckRlc3RydWN0KSB7CiAgIHN0
YXRpYyBjb25zdCBjaGFyIGtRdWV1ZU5hbWVbXSA9ICJQb3N0RGVsYXllZEFmdGVyRGVzdHJ1Y3Qi
OwotICBFdmVudCBydW4oZmFsc2UsIGZhbHNlKTsKLSAgRXZlbnQgZGVsZXRlZChmYWxzZSwgZmFs
c2UpOworICBFdmVudCBydW47CisgIEV2ZW50IGRlbGV0ZWQ7CiAgIHsKICAgICBUYXNrUXVldWUg
cXVldWUoa1F1ZXVlTmFtZSk7CiAgICAgcXVldWUuUG9zdERlbGF5ZWRUYXNrKApAQCAtMTkxLDcg
KzE5MSw3IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdERlbGF5ZWRBZnRlckRlc3RydWN0KSB7
CiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RBbmRSZXBseSkgewogICBzdGF0aWMgY29uc3QgY2hh
ciBrUG9zdFF1ZXVlW10gPSAiUG9zdFF1ZXVlIjsKICAgc3RhdGljIGNvbnN0IGNoYXIga1JlcGx5
UXVldWVbXSA9ICJSZXBseVF1ZXVlIjsKLSAgRXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAg
RXZlbnQgZXZlbnQ7CiAgIFRhc2tRdWV1ZSBwb3N0X3F1ZXVlKGtQb3N0UXVldWUpOwogICBUYXNr
UXVldWUgcmVwbHlfcXVldWUoa1JlcGx5UXVldWUpOwogCkBAIC0yMDQsNyArMjA0LDcgQEAgVEVT
VChUYXNrUXVldWVUZXN0LCBQb3N0QW5kUmVwbHkpIHsKIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9z
dEFuZFJldXNlKSB7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtQb3N0UXVldWVbXSA9ICJQb3N0UXVl
dWUiOwogICBzdGF0aWMgY29uc3QgY2hhciBrUmVwbHlRdWV1ZVtdID0gIlJlcGx5UXVldWUiOwot
ICBFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVudDsKICAgVGFza1F1ZXVl
IHBvc3RfcXVldWUoa1Bvc3RRdWV1ZSk7CiAgIFRhc2tRdWV1ZSByZXBseV9xdWV1ZShrUmVwbHlR
dWV1ZSk7CiAKQEAgLTI1MSw3ICsyNTEsNyBAQCBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RBbmRS
ZXVzZSkgewogVEVTVChUYXNrUXVldWVUZXN0LCBQb3N0QW5kUmVwbHlMYW1iZGEpIHsKICAgc3Rh
dGljIGNvbnN0IGNoYXIga1Bvc3RRdWV1ZVtdID0gIlBvc3RRdWV1ZSI7CiAgIHN0YXRpYyBjb25z
dCBjaGFyIGtSZXBseVF1ZXVlW10gPSAiUmVwbHlRdWV1ZSI7Ci0gIEV2ZW50IGV2ZW50KGZhbHNl
LCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBUYXNrUXVldWUgcG9zdF9xdWV1ZShrUG9zdFF1
ZXVlKTsKICAgVGFza1F1ZXVlIHJlcGx5X3F1ZXVlKGtSZXBseVF1ZXVlKTsKIApAQCAtMjg3LDcg
KzI4Nyw3IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdENvcHlhYmxlQ2xvc3VyZSkgewogCiAg
IGludCBudW1fY29waWVzID0gMDsKICAgaW50IG51bV9tb3ZlcyA9IDA7Ci0gIEV2ZW50IGV2ZW50
KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogCiAgIHN0YXRpYyBjb25zdCBjaGFyIGtQ
b3N0UXVldWVbXSA9ICJQb3N0Q29weWFibGVDbG9zdXJlIjsKICAgVGFza1F1ZXVlIHBvc3RfcXVl
dWUoa1Bvc3RRdWV1ZSk7CkBAIC0zMjMsNyArMzIzLDcgQEAgVEVTVChUYXNrUXVldWVUZXN0LCBQ
b3N0TW92ZU9ubHlDbG9zdXJlKSB7CiAgIH07CiAKICAgaW50IG51bV9tb3ZlcyA9IDA7Ci0gIEV2
ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBzdGQ6OnVuaXF1ZV9w
dHI8U29tZVN0YXRlPiBzdGF0ZShuZXcgU29tZVN0YXRlKCZldmVudCkpOwogCiAgIHN0YXRpYyBj
b25zdCBjaGFyIGtQb3N0UXVldWVbXSA9ICJQb3N0TW92ZU9ubHlDbG9zdXJlIjsKQEAgLTM0Niw4
ICszNDYsOCBAQCBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RNb3ZlT25seUNsZWFudXApIHsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U29tZVN0YXRlPiBzdGF0ZTsKICAgfTsKIAotICBFdmVudCBldmVu
dF9ydW4oZmFsc2UsIGZhbHNlKTsKLSAgRXZlbnQgZXZlbnRfY2xlYW51cChmYWxzZSwgZmFsc2Up
OworICBFdmVudCBldmVudF9ydW47CisgIEV2ZW50IGV2ZW50X2NsZWFudXA7CiAgIHN0ZDo6dW5p
cXVlX3B0cjxTb21lU3RhdGU+IHN0YXRlX3J1bihuZXcgU29tZVN0YXRlKCZldmVudF9ydW4pKTsK
ICAgc3RkOjp1bmlxdWVfcHRyPFNvbWVTdGF0ZT4gc3RhdGVfY2xlYW51cChuZXcgU29tZVN0YXRl
KCZldmVudF9jbGVhbnVwKSk7CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBURVNUKFRhc2tRdWV1ZVRl
c3QsIFBvc3RNb3ZlT25seUNsZWFudXApIHsKIC8vIHdyaXR0ZW4gaW4gYSB3YXkgdGhhdCBtYWtl
cyBpdCBsaWtlbHkgYW5kIGJ5IHJ1bm5pbmcgd2l0aCAtLWd0ZXN0X3JlcGVhdD0xMDAwCiAvLyB0
aGUgYnVnIHdvdWxkIG9jY3VyLiBBbGFzLCBub3cgaXQgc2hvdWxkIGJlIGZpeGVkLgogVEVTVChU
YXNrUXVldWVUZXN0LCBQb3N0QW5kUmVwbHlEZWFkbG9jaykgewotICBFdmVudCBldmVudChmYWxz
ZSwgZmFsc2UpOworICBFdmVudCBldmVudDsKICAgVGFza1F1ZXVlIHBvc3RfcXVldWUoIlBvc3RR
dWV1ZSIpOwogICBUYXNrUXVldWUgcmVwbHlfcXVldWUoIlJlcGx5UXVldWUiKTsKIApAQCAtMzg0
LDggKzM4NCw4IEBAIFRFU1QoVGFza1F1ZXVlVGVzdCwgUG9zdEFuZFJlcGx5RGVhZGxvY2spIHsK
ICNkZWZpbmUgTUFZQkVfRGVsZXRlVGFza1F1ZXVlQWZ0ZXJQb3N0QW5kUmVwbHkgRGVsZXRlVGFz
a1F1ZXVlQWZ0ZXJQb3N0QW5kUmVwbHkKICNlbmRpZgogVEVTVChUYXNrUXVldWVUZXN0LCBNQVlC
RV9EZWxldGVUYXNrUXVldWVBZnRlclBvc3RBbmRSZXBseSkgewotICBFdmVudCB0YXNrX2RlbGV0
ZWQoZmFsc2UsIGZhbHNlKTsKLSAgRXZlbnQgcmVwbHlfZGVsZXRlZChmYWxzZSwgZmFsc2UpOwor
ICBFdmVudCB0YXNrX2RlbGV0ZWQ7CisgIEV2ZW50IHJlcGx5X2RlbGV0ZWQ7CiAgIGF1dG8qIHRh
c2tfcXVldWUgPSBuZXcgVGFza1F1ZXVlKCJRdWV1ZSIpOwogCiAgIHRhc2tfcXVldWUtPlBvc3RU
YXNrQW5kUmVwbHkoCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBUZXN0UG9zdFRhc2tBbmRSZXBs
eShUYXNrUXVldWUqIHdvcmtfcXVldWUsIEV2ZW50KiBldmVudCkgewogVEVTVChUYXNrUXVldWVU
ZXN0LCBQb3N0QW5kUmVwbHkyKSB7CiAgIHN0YXRpYyBjb25zdCBjaGFyIGtRdWV1ZU5hbWVbXSA9
ICJQb3N0QW5kUmVwbHkyIjsKICAgc3RhdGljIGNvbnN0IGNoYXIga1dvcmtRdWV1ZU5hbWVbXSA9
ICJQb3N0QW5kUmVwbHkyX1dvcmtlciI7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7Cisg
IEV2ZW50IGV2ZW50OwogICBUYXNrUXVldWUgcXVldWUoa1F1ZXVlTmFtZSk7CiAgIFRhc2tRdWV1
ZSB3b3JrX3F1ZXVlKGtXb3JrUXVldWVOYW1lKTsKIApAQCAtNDI1LDcgKzQyNSw3IEBAIFRFU1Qo
VGFza1F1ZXVlVGVzdCwgUG9zdEFuZFJlcGx5MikgewogLy8gSW4gc2l0dWF0aW9ucyBsaWtlIHRo
YXQsIHRhc2tzIHdpbGwgZ2V0IGRyb3BwZWQuCiBURVNUKFRhc2tRdWV1ZVRlc3QsIFBvc3RBTG90
KSB7CiAgIC8vIFRvIGRlc3RydWN0IHRoZSBldmVudCBhZnRlciB0aGUgcXVldWUgaGFzIGdvbmUg
b3V0IG9mIHNjb3BlLgotICBFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBFdmVudCBldmVu
dDsKIAogICBpbnQgdGFza3NfZXhlY3V0ZWQgPSAwOwogICBpbnQgdGFza3NfY2xlYW5lZF91cCA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS90ZXN0Y2xpZW50LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvdGVzdGNsaWVudC5jYwppbmRleCA3YzE1MWM3NTEwMWU3YjA1
ODdmYWFjODAyZDU2MDMxZGE0ZDQyNTRmLi5hNWI5MGRkZDIwMTdkZDZmMjgwYmZhYzdkN2E1YTYy
YTc5NmVhYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS90ZXN0Y2xpZW50LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3RjbGllbnQuY2MKQEAgLTk3LDcgKzk3
LDcgQEAgYm9vbCBUZXN0Q2xpZW50OjpDaGVja05leHRQYWNrZXQoY29uc3QgY2hhciogYnVmLAog
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFja2V0PiBwYWNrZXQgPSBOZXh0UGFja2V0KGtUaW1lb3V0TXMp
OwogICBpZiAocGFja2V0KSB7CiAgICAgcmVzID0gKHBhY2tldC0+c2l6ZSA9PSBzaXplICYmIG1l
bWNtcChwYWNrZXQtPmJ1ZiwgYnVmLCBzaXplKSA9PSAwICYmCi0gICAgICAgICAgIENoZWNrVGlt
ZXN0YW1wKHBhY2tldC0+cGFja2V0X3RpbWUudGltZXN0YW1wKSk7CisgICAgICAgICAgIENoZWNr
VGltZXN0YW1wKHBhY2tldC0+cGFja2V0X3RpbWVfdXMpKTsKICAgICBpZiAoYWRkcikKICAgICAg
ICphZGRyID0gcGFja2V0LT5hZGRyOwogICB9CkBAIC0xNDQsMTAgKzE0NCwxMCBAQCB2b2lkIFRl
c3RDbGllbnQ6Ok9uUGFja2V0KEFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFk
ZHJlc3MmIHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWNr
ZXRUaW1lJiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQ2NF90JiBwYWNrZXRfdGltZV91cykgewogICBDcml0U2NvcGUgY3MoJmNyaXRfKTsKICAgcGFj
a2V0c18ucHVzaF9iYWNrKAotICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UGFja2V0PihyZW1vdGVf
YWRkciwgYnVmLCBzaXplLCBwYWNrZXRfdGltZSkpOworICAgICAgYWJzbDo6bWFrZV91bmlxdWU8
UGFja2V0PihyZW1vdGVfYWRkciwgYnVmLCBzaXplLCBwYWNrZXRfdGltZV91cykpOwogfQogCiB2
b2lkIFRlc3RDbGllbnQ6Ok9uUmVhZHlUb1NlbmQoQXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCkg
ewpAQCAtMTU3LDE0ICsxNTcsMTQgQEAgdm9pZCBUZXN0Q2xpZW50OjpPblJlYWR5VG9TZW5kKEFz
eW5jUGFja2V0U29ja2V0KiBzb2NrZXQpIHsKIFRlc3RDbGllbnQ6OlBhY2tldDo6UGFja2V0KGNv
bnN0IFNvY2tldEFkZHJlc3MmIGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRUaW1lJiBwYWNrZXRfdGltZSkKLSAgICA6IGFk
ZHIoYSksIGJ1ZigwKSwgc2l6ZShzKSwgcGFja2V0X3RpbWUocGFja2V0X3RpbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcGFja2V0X3RpbWVfdXMpCisgICAgOiBhZGRy
KGEpLCBidWYoMCksIHNpemUocyksIHBhY2tldF90aW1lX3VzKHBhY2tldF90aW1lX3VzKSB7CiAg
IGJ1ZiA9IG5ldyBjaGFyW3NpemVdOwogICBtZW1jcHkoYnVmLCBiLCBzaXplKTsKIH0KIAogVGVz
dENsaWVudDo6UGFja2V0OjpQYWNrZXQoY29uc3QgUGFja2V0JiBwKQotICAgIDogYWRkcihwLmFk
ZHIpLCBidWYoMCksIHNpemUocC5zaXplKSwgcGFja2V0X3RpbWUocC5wYWNrZXRfdGltZSkgewor
ICAgIDogYWRkcihwLmFkZHIpLCBidWYoMCksIHNpemUocC5zaXplKSwgcGFja2V0X3RpbWVfdXMo
cC5wYWNrZXRfdGltZV91cykgewogICBidWYgPSBuZXcgY2hhcltzaXplXTsKICAgbWVtY3B5KGJ1
ZiwgcC5idWYsIHNpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGVzdGNsaWVudC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGVzdGNsaWVudC5oCmluZGV4IGEw
ZDk4YjMwZDE2NTRiYzYwZDJhM2Q5NzQxYzg5ZGExNDFkYjUyYWQuLjE2ZmI2YmE2NzdjMjIyNmRm
ODk4YjA5ZWIzZGI5YjRhN2M5NTI2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3RjbGllbnQuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0Y2xpZW50LmgK
QEAgLTI5LDE0ICsyOSwxNCBAQCBjbGFzcyBUZXN0Q2xpZW50IDogcHVibGljIHNpZ3Nsb3Q6Omhh
c19zbG90czw+IHsKICAgICBQYWNrZXQoY29uc3QgU29ja2V0QWRkcmVzcyYgYSwKICAgICAgICAg
ICAgY29uc3QgY2hhciogYiwKICAgICAgICAgICAgc2l6ZV90IHMsCi0gICAgICAgICAgIGNvbnN0
IFBhY2tldFRpbWUmIHBhY2tldF90aW1lKTsKKyAgICAgICAgICAgaW50NjRfdCBwYWNrZXRfdGlt
ZV91cyk7CiAgICAgUGFja2V0KGNvbnN0IFBhY2tldCYgcCk7CiAgICAgdmlydHVhbCB+UGFja2V0
KCk7CiAKICAgICBTb2NrZXRBZGRyZXNzIGFkZHI7CiAgICAgY2hhciogYnVmOwogICAgIHNpemVf
dCBzaXplOwotICAgIFBhY2tldFRpbWUgcGFja2V0X3RpbWU7CisgICAgaW50NjRfdCBwYWNrZXRf
dGltZV91czsKICAgfTsKIAogICAvLyBEZWZhdWx0IHRpbWVvdXQgZm9yIE5leHRQYWNrZXQgcmVh
ZHMuCkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNzIFRlc3RDbGllbnQgOiBwdWJsaWMgc2lnc2xvdDo6
aGFzX3Nsb3RzPD4gewogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAg
ICAgICAgICBzaXplX3QgbGVuLAogICAgICAgICAgICAgICAgIGNvbnN0IFNvY2tldEFkZHJlc3Mm
IHJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tldF90
aW1lKTsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90JiBwYWNrZXRfdGltZV91cyk7CiAg
IHZvaWQgT25SZWFkeVRvU2VuZChBc3luY1BhY2tldFNvY2tldCogc29ja2V0KTsKICAgYm9vbCBD
aGVja1RpbWVzdGFtcChpbnQ2NF90IHBhY2tldF90aW1lc3RhbXApOwogICB2b2lkIEFkdmFuY2VU
aW1lKGludCBtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0ZWNob3NlcnZlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGVzdGVjaG9zZXJ2ZXIuaAppbmRleCA1
ZTcxNGViNjNkZDMwZTBlNjk2NzViMWUwZGY5ZmU0NzlmMmFmZjRhLi45ZmZkNzg2MjJhNDVmNzIw
MmM4OTc1MmIxZTMyOTI3MjRkYTBiOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0ZWNob3NlcnZlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3RlY2hv
c2VydmVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgVGVzdEVjaG9TZXJ2ZXIgOiBwdWJsaWMg
c2lnc2xvdDo6aGFzX3Nsb3RzPD4gewogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwK
ICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICBjb25zdCBTb2Nr
ZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRUaW1l
JiBwYWNrZXRfdGltZSkgeworICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tl
dF90aW1lX3VzICovKSB7CiAgICAgcnRjOjpQYWNrZXRPcHRpb25zIG9wdGlvbnM7CiAgICAgc29j
a2V0LT5TZW5kKGJ1Ziwgc2l6ZSwgb3B0aW9ucyk7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rlc3R1
dGlscy5jYwppbmRleCBiNGE3NDMzZmJkN2YxODMwNTBiNDYyNmY1NThkN2IzMjA1NGM4NzdmLi5m
MzI5MmZkNTlmN2NlZTBiMjBlN2Y4MTk5MmVjMjFlMzI1N2UyNDAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90ZXN0dXRpbHMu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvdGVzdHV0aWxzLmNjCkBAIC0xNCw3NSArMTQsNyBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIAogU3RyZWFtU2luazo6U3RyZWFtU2luaygpID0gZGVmYXVsdDsK
LQogU3RyZWFtU2luazo6flN0cmVhbVNpbmsoKSA9IGRlZmF1bHQ7CiAKLVN0cmVhbVNvdXJjZTo6
U3RyZWFtU291cmNlKCkgewotICBDbGVhcigpOwotfQotCi1TdHJlYW1Tb3VyY2U6On5TdHJlYW1T
b3VyY2UoKSA9IGRlZmF1bHQ7Ci0KLVN0cmVhbVN0YXRlIFN0cmVhbVNvdXJjZTo6R2V0U3RhdGUo
KSBjb25zdCB7Ci0gIHJldHVybiBzdGF0ZV87Ci19Ci0KLVN0cmVhbVJlc3VsdCBTdHJlYW1Tb3Vy
Y2U6OlJlYWQodm9pZCogYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgYnVmZmVyX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
KiByZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGVycm9yKSB7Ci0g
IGlmIChTU19DTE9TRUQgPT0gc3RhdGVfKSB7Ci0gICAgaWYgKGVycm9yKQotICAgICAgKmVycm9y
ID0gLTE7Ci0gICAgcmV0dXJuIFNSX0VSUk9SOwotICB9Ci0gIGlmICgoU1NfT1BFTklORyA9PSBz
dGF0ZV8pIHx8IChyZWFkYWJsZV9kYXRhXy5zaXplKCkgPD0gcmVhZF9ibG9ja18pKSB7Ci0gICAg
cmV0dXJuIFNSX0JMT0NLOwotICB9Ci0gIHNpemVfdCBjb3VudCA9IHN0ZDo6bWluKGJ1ZmZlcl9s
ZW4sIHJlYWRhYmxlX2RhdGFfLnNpemUoKSAtIHJlYWRfYmxvY2tfKTsKLSAgbWVtY3B5KGJ1ZmZl
ciwgJnJlYWRhYmxlX2RhdGFfWzBdLCBjb3VudCk7Ci0gIHNpemVfdCBuZXdfc2l6ZSA9IHJlYWRh
YmxlX2RhdGFfLnNpemUoKSAtIGNvdW50OwotICAvLyBBdm9pZCB1bmRlZmluZWQgYWNjZXNzIGJl
eW9uZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSB2ZWN0b3IuCi0gIC8vIFRoaXMgb25seSBoYXBw
ZW5zIHdoZW4gbmV3X3NpemUgaXMgMC4KLSAgaWYgKGNvdW50IDwgcmVhZGFibGVfZGF0YV8uc2l6
ZSgpKSB7Ci0gICAgbWVtbW92ZSgmcmVhZGFibGVfZGF0YV9bMF0sICZyZWFkYWJsZV9kYXRhX1tj
b3VudF0sIG5ld19zaXplKTsKLSAgfQotICByZWFkYWJsZV9kYXRhXy5yZXNpemUobmV3X3NpemUp
OwotICBpZiAocmVhZCkKLSAgICAqcmVhZCA9IGNvdW50OwotICByZXR1cm4gU1JfU1VDQ0VTUzsK
LX0KLQotU3RyZWFtUmVzdWx0IFN0cmVhbVNvdXJjZTo6V3JpdGUoY29uc3Qgdm9pZCogZGF0YSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkYXRhX2xlbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogd3JpdHRlbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCogZXJyb3IpIHsKLSAgaWYgKFNTX0NMT1NFRCA9PSBz
dGF0ZV8pIHsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAqZXJyb3IgPSAtMTsKLSAgICByZXR1cm4g
U1JfRVJST1I7Ci0gIH0KLSAgaWYgKFNTX09QRU5JTkcgPT0gc3RhdGVfKSB7Ci0gICAgcmV0dXJu
IFNSX0JMT0NLOwotICB9Ci0gIGlmIChTSVpFX1VOS05PV04gIT0gd3JpdGVfYmxvY2tfKSB7Ci0g
ICAgaWYgKHdyaXR0ZW5fZGF0YV8uc2l6ZSgpID49IHdyaXRlX2Jsb2NrXykgewotICAgICAgcmV0
dXJuIFNSX0JMT0NLOwotICAgIH0KLSAgICBpZiAoZGF0YV9sZW4gPiAod3JpdGVfYmxvY2tfIC0g
d3JpdHRlbl9kYXRhXy5zaXplKCkpKSB7Ci0gICAgICBkYXRhX2xlbiA9IHdyaXRlX2Jsb2NrXyAt
IHdyaXR0ZW5fZGF0YV8uc2l6ZSgpOwotICAgIH0KLSAgfQotICBpZiAod3JpdHRlbikKLSAgICAq
d3JpdHRlbiA9IGRhdGFfbGVuOwotICBjb25zdCBjaGFyKiBjZGF0YSA9IHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihkYXRhKTsKLSAgd3JpdHRlbl9kYXRhXy5pbnNlcnQod3JpdHRlbl9kYXRhXy5l
bmQoKSwgY2RhdGEsIGNkYXRhICsgZGF0YV9sZW4pOwotICByZXR1cm4gU1JfU1VDQ0VTUzsKLX0K
LQotdm9pZCBTdHJlYW1Tb3VyY2U6OkNsb3NlKCkgewotICBzdGF0ZV8gPSBTU19DTE9TRUQ7Ci19
Ci0KIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS90ZXN0dXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3Rlc3R1dGlscy5oCmluZGV4IDJhYjRhMzU5NTZhMDU5ZWFjYjc0MzkxNWI1YWUy
OGE3MjU0Y2I1YjguLmFjNzQyMDNjZjlmOTNjZjdiYWEyYTAyZTJkNjljYTY5ODJkZDBiNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3Rlc3R1dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3Rlc3R1dGlscy5oCkBAIC0xOSw5ICsxOSw3IEBACiAjaW5jbHVkZSA8
dmVjdG9yPgogI2luY2x1ZGUgInJ0Y19iYXNlL2FzeW5jc29ja2V0LmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9zdHJlYW0uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKQEAgLTEzNyw5MSArMTM1LDYg
QEAgY2xhc3MgU3RyZWFtU2luayA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIEV2
ZW50TWFwIGV2ZW50c187CiB9OwogCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBTdHJlYW1T
b3VyY2UgLSBJbXBsZW1lbnRzIHN0cmVhbSBpbnRlcmZhY2UgYW5kIHNpbXVsYXRlcyBhc3luY2hy
b25vdXMKLS8vIGV2ZW50cyBvbiB0aGUgc3RyZWFtLCB3aXRob3V0IGEgbmV0d29yay4gIEFsc28g
YnVmZmVycyB3cml0dGVuIGRhdGEuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLWNsYXNzIFN0
cmVhbVNvdXJjZSA6IHB1YmxpYyBTdHJlYW1JbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgU3RyZWFt
U291cmNlKCk7Ci0gIH5TdHJlYW1Tb3VyY2UoKSBvdmVycmlkZTsKLQotICB2b2lkIENsZWFyKCkg
ewotICAgIHJlYWRhYmxlX2RhdGFfLmNsZWFyKCk7Ci0gICAgd3JpdHRlbl9kYXRhXy5jbGVhcigp
OwotICAgIHN0YXRlXyA9IFNTX0NMT1NFRDsKLSAgICByZWFkX2Jsb2NrXyA9IDA7Ci0gICAgd3Jp
dGVfYmxvY2tfID0gU0laRV9VTktOT1dOOwotICB9Ci0gIHZvaWQgUXVldWVTdHJpbmcoY29uc3Qg
Y2hhciogZGF0YSkgeyBRdWV1ZURhdGEoZGF0YSwgc3RybGVuKGRhdGEpKTsgfQotI2lmIGRlZmlu
ZWQoX19HTlVDX18pCi0gIC8vIE5vdGU6IEltcGxpY2l0IHx0aGlzfCBhcmd1bWVudCBjb3VudHMg
YXMgdGhlIGZpcnN0IGFyZ3VtZW50LgotICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJp
bnRmX18sIDIsIDMpKSkKLSNlbmRpZgotICB2b2lkCi0gIFF1ZXVlU3RyaW5nRihjb25zdCBjaGFy
KiBmb3JtYXQsIC4uLikgewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydChhcmdzLCBm
b3JtYXQpOwotICAgIGNoYXIgYnVmZmVyWzEwMjRdOwotICAgIHNpemVfdCBsZW4gPSB2c3ByaW50
Zm4oYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZm9ybWF0LCBhcmdzKTsKLSAgICBSVENfQ0hFQ0so
bGVuIDwgc2l6ZW9mKGJ1ZmZlcikgLSAxKTsKLSAgICB2YV9lbmQoYXJncyk7Ci0gICAgUXVldWVE
YXRhKGJ1ZmZlciwgbGVuKTsKLSAgfQotICB2b2lkIFF1ZXVlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuKSB7Ci0gICAgcmVhZGFibGVfZGF0YV8uaW5zZXJ0KHJlYWRhYmxlX2RhdGFf
LmVuZCgpLCBkYXRhLCBkYXRhICsgbGVuKTsKLSAgICBpZiAoKFNTX09QRU4gPT0gc3RhdGVfKSAm
JiAocmVhZGFibGVfZGF0YV8uc2l6ZSgpID09IGxlbikpIHsKLSAgICAgIFNpZ25hbEV2ZW50KHRo
aXMsIFNFX1JFQUQsIDApOwotICAgIH0KLSAgfQotICBzdGQ6OnN0cmluZyBSZWFkRGF0YSgpIHsK
LSAgICBzdGQ6OnN0cmluZyBkYXRhOwotICAgIC8vIGF2b2lkIGFjY2Vzc2luZyB3cml0dGVuX2Rh
dGFfWzBdIGlmIGl0IGlzIHVuZGVmaW5lZAotICAgIGlmICh3cml0dGVuX2RhdGFfLnNpemUoKSA+
IDApIHsKLSAgICAgIGRhdGEuaW5zZXJ0KDAsICZ3cml0dGVuX2RhdGFfWzBdLCB3cml0dGVuX2Rh
dGFfLnNpemUoKSk7Ci0gICAgfQotICAgIHdyaXR0ZW5fZGF0YV8uY2xlYXIoKTsKLSAgICByZXR1
cm4gZGF0YTsKLSAgfQotICB2b2lkIFNldFN0YXRlKFN0cmVhbVN0YXRlIHN0YXRlKSB7Ci0gICAg
aW50IGV2ZW50cyA9IDA7Ci0gICAgaWYgKChTU19PUEVOSU5HID09IHN0YXRlXykgJiYgKFNTX09Q
RU4gPT0gc3RhdGUpKSB7Ci0gICAgICBldmVudHMgfD0gU0VfT1BFTjsKLSAgICAgIGlmICghcmVh
ZGFibGVfZGF0YV8uZW1wdHkoKSkgewotICAgICAgICBldmVudHMgfD0gU0VfUkVBRDsKLSAgICAg
IH0KLSAgICB9IGVsc2UgaWYgKChTU19DTE9TRUQgIT0gc3RhdGVfKSAmJiAoU1NfQ0xPU0VEID09
IHN0YXRlKSkgewotICAgICAgZXZlbnRzIHw9IFNFX0NMT1NFOwotICAgIH0KLSAgICBzdGF0ZV8g
PSBzdGF0ZTsKLSAgICBpZiAoZXZlbnRzKSB7Ci0gICAgICBTaWduYWxFdmVudCh0aGlzLCBldmVu
dHMsIDApOwotICAgIH0KLSAgfQotICAvLyBXaWxsIGNhdXNlIFJlYWQgdG8gYmxvY2sgd2hlbiB0
aGVyZSBhcmUgcG9zIGJ5dGVzIGluIHRoZSByZWFkIHF1ZXVlLgotICB2b2lkIFNldFJlYWRCbG9j
ayhzaXplX3QgcG9zKSB7IHJlYWRfYmxvY2tfID0gcG9zOyB9Ci0gIC8vIFdpbGwgY2F1c2UgV3Jp
dGUgdG8gYmxvY2sgd2hlbiB0aGVyZSBhcmUgcG9zIGJ5dGVzIGluIHRoZSB3cml0ZSBxdWV1ZS4K
LSAgdm9pZCBTZXRXcml0ZUJsb2NrKHNpemVfdCBwb3MpIHsgd3JpdGVfYmxvY2tfID0gcG9zOyB9
Ci0KLSAgU3RyZWFtU3RhdGUgR2V0U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgU3RyZWFtUmVz
dWx0IFJlYWQodm9pZCogYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmZmVy
X2xlbiwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiByZWFkLAotICAgICAgICAgICAgICAg
ICAgICBpbnQqIGVycm9yKSBvdmVycmlkZTsKLSAgU3RyZWFtUmVzdWx0IFdyaXRlKGNvbnN0IHZv
aWQqIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YV9sZW4sCi0gICAgICAg
ICAgICAgICAgICAgICBzaXplX3QqIHdyaXR0ZW4sCi0gICAgICAgICAgICAgICAgICAgICBpbnQq
IGVycm9yKSBvdmVycmlkZTsKLSAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlOwotCi0gcHJpdmF0ZToK
LSAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxjaGFyPiBCdWZmZXI7Ci0gIEJ1ZmZlciByZWFkYWJsZV9k
YXRhXywgd3JpdHRlbl9kYXRhXzsKLSAgU3RyZWFtU3RhdGUgc3RhdGVfOwotICBzaXplX3QgcmVh
ZF9ibG9ja18sIHdyaXRlX2Jsb2NrXzsKLX07Ci0KIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiB9
ICAvLyBuYW1lc3BhY2Ugd2VicnRjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RoaXJkX3BhcnR5L3NpZ3Nsb3Qvc2lnc2xv
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
dGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgKaW5kZXggYzc3ZTRlNjc1ZGY1MDRhMDg0MjIz
OTMyMjI3ZWFjOGI1NGZiYjQzNS4uOGJkMWM3MDY0YTM4NDFlM2FhYmI3Y2M1ZmQ3MWVkNGQ3ODA2
NTQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2lnc2xvdC9zaWdzbG90LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhpcmRfcGFydHkvc2ln
c2xvdC9zaWdzbG90LmgKQEAgLTk2LDcgKzk2LDYgQEAKICNpZm5kZWYgUlRDX0JBU0VfVEhJUkRf
UEFSVFlfU0lHU0xPVF9TSUdTTE9UX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1RISVJEX1BBUlRZX1NJ
R1NMT1RfU0lHU0xPVF9IXwogCi0jaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8Y3N0cmlu
Zz4KICNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPHNldD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZC5j
YwppbmRleCAyZDU3MDRlMGJlNzgwYTQ3NDhlZTI1NGY3MjM0MjNiNDJmMTY2OWY3Li40ZGQ1ZmQy
MjI0ZjEyYTZhYWViNTJhZTgxY2ZiODQ1YjJiZGI0ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aHJlYWQuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFk
LmNjCkBAIC0yNCwxNCArMjQsNDMgQEAKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDcyMikK
ICNlbmRpZgogCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCiAjaW5j
bHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0
aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L251bGxzb2NrZXRzZXJ2ZXIuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQu
aCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3RpbWV1dGlscy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RyYWNlX2V2ZW50LmgiCiAKKyNpZiBk
ZWZpbmVkKFdFQlJUQ19NQUMpCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL2NvY29hX3RocmVh
ZGluZy5oIgorCisvKgorICogVGhlc2UgYXJlIGZvcndhcmQtZGVjbGFyYXRpb25zIGZvciBtZXRo
b2RzIHRoYXQgYXJlIHBhcnQgb2YgdGhlCisgKiBPYmpDIHJ1bnRpbWUuIFRoZXkgYXJlIGRlY2xh
cmVkIGluIHRoZSBwcml2YXRlIGhlYWRlciBvYmpjLWludGVybmFsLmguCisgKiBUaGVzZSBjYWxs
cyBhcmUgd2hhdCBjbGFuZyBpbnNlcnRzIHdoZW4gdXNpbmcgQGF1dG9yZWxlYXNlcG9vbCBpbiBP
YmpDLAorICogYnV0IGhlcmUgdGhleSBhcmUgdXNlZCBkaXJlY3RseSBpbiBvcmRlciB0byBrZWVw
IHRoaXMgZmlsZSBDKysuCisgKiBodHRwczovL2NsYW5nLmxsdm0ub3JnL2RvY3MvQXV0b21hdGlj
UmVmZXJlbmNlQ291bnRpbmcuaHRtbCNydW50aW1lLXN1cHBvcnQKKyAqLworZXh0ZXJuICJDIiB7
Cit2b2lkKiBvYmpjX2F1dG9yZWxlYXNlUG9vbFB1c2godm9pZCk7Cit2b2lkIG9iamNfYXV0b3Jl
bGVhc2VQb29sUG9wKHZvaWQqIHBvb2wpOworfQorCituYW1lc3BhY2UgeworY2xhc3MgU2NvcGVk
QXV0b1JlbGVhc2VQb29sIHsKKyBwdWJsaWM6CisgIFNjb3BlZEF1dG9SZWxlYXNlUG9vbCgpIDog
cG9vbF8ob2JqY19hdXRvcmVsZWFzZVBvb2xQdXNoKCkpIHt9CisgIH5TY29wZWRBdXRvUmVsZWFz
ZVBvb2woKSB7IG9iamNfYXV0b3JlbGVhc2VQb29sUG9wKHBvb2xfKTsgfQorCisgcHJpdmF0ZToK
KyAgdm9pZCogY29uc3QgcG9vbF87Cit9OworfSAgLy8gbmFtZXNwYWNlCisjZW5kaWYKKwogbmFt
ZXNwYWNlIHJ0YyB7CiAKIFRocmVhZE1hbmFnZXIqIFRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCkg
ewpAQCAtNjEsMTEgKzkwLDEyIEBAIFRocmVhZCogVGhyZWFkOjpDdXJyZW50KCkgewogfQogCiAj
aWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCi0jaWYgIWRlZmluZWQoV0VCUlRDX01BQykKIFRocmVh
ZE1hbmFnZXI6OlRocmVhZE1hbmFnZXIoKSA6IG1haW5fdGhyZWFkX3JlZl8oQ3VycmVudFRocmVh
ZFJlZigpKSB7CisjaWYgZGVmaW5lZChXRUJSVENfTUFDKQorICBJbml0Q29jb2FNdWx0aVRocmVh
ZGluZygpOworI2VuZGlmCiAgIHB0aHJlYWRfa2V5X2NyZWF0ZSgma2V5XywgbnVsbHB0cik7CiB9
Ci0jZW5kaWYKIAogVGhyZWFkKiBUaHJlYWRNYW5hZ2VyOjpDdXJyZW50VGhyZWFkKCkgewogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGhyZWFkKj4ocHRocmVhZF9nZXRzcGVjaWZpYyhrZXlfKSk7CkBA
IC0xOTMsOCArMjIzLDEwIEBAIGJvb2wgVGhyZWFkOjpTZXROYW1lKGNvbnN0IHN0ZDo6c3RyaW5n
JiBuYW1lLCBjb25zdCB2b2lkKiBvYmopIHsKIAogICBuYW1lXyA9IG5hbWU7CiAgIGlmIChvYmop
IHsKLSAgICBjaGFyIGJ1ZlsxNl07Ci0gICAgc3ByaW50Zm4oYnVmLCBzaXplb2YoYnVmKSwgIiAw
eCVwIiwgb2JqKTsKKyAgICAvLyBUaGUgJXAgc3BlY2lmaWVyIHR5cGljYWxseSBwcm9kdWNlIGF0
IG1vc3QgMTYgaGV4IGRpZ2l0cywgcG9zc2libHkgd2l0aCBhCisgICAgLy8gMHggcHJlZml4LiBC
dXQgZm9ybWF0IGlzIGltcGxlbWVudGF0aW9uIGRlZmluZWQsIHNvIGFkZCBzb21lIG1hcmdpbi4K
KyAgICBjaGFyIGJ1ZlszMF07CisgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiAweCVw
Iiwgb2JqKTsKICAgICBuYW1lXyArPSBidWY7CiAgIH0KICAgcmV0dXJuIHRydWU7CkBAIC0zMDAs
NyArMzMyLDYgQEAgdm9pZCBUaHJlYWQ6OkFzc2VydEJsb2NraW5nSXNBbGxvd2VkT25DdXJyZW50
VGhyZWFkKCkgewogfQogCiAvLyBzdGF0aWMKLSNpZiAhZGVmaW5lZChXRUJSVENfTUFDKQogI2lm
IGRlZmluZWQoV0VCUlRDX1dJTikKIERXT1JEIFdJTkFQSSBUaHJlYWQ6OlByZVJ1bihMUFZPSUQg
cHYpIHsKICNlbHNlCkBAIC0zMDksNiArMzQwLDkgQEAgdm9pZCogVGhyZWFkOjpQcmVSdW4odm9p
ZCogcHYpIHsKICAgVGhyZWFkSW5pdCogaW5pdCA9IHN0YXRpY19jYXN0PFRocmVhZEluaXQqPihw
dik7CiAgIFRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPlNldEN1cnJlbnRUaHJlYWQoaW5pdC0+
dGhyZWFkKTsKICAgcnRjOjpTZXRDdXJyZW50VGhyZWFkTmFtZShpbml0LT50aHJlYWQtPm5hbWVf
LmNfc3RyKCkpOworI2lmIGRlZmluZWQoV0VCUlRDX01BQykKKyAgU2NvcGVkQXV0b1JlbGVhc2VQ
b29sIHBvb2w7CisjZW5kaWYKICAgaWYgKGluaXQtPnJ1bm5hYmxlKSB7CiAgICAgaW5pdC0+cnVu
bmFibGUtPlJ1bihpbml0LT50aHJlYWQpOwogICB9IGVsc2UgewpAQCAtMzIyLDcgKzM1Niw2IEBA
IHZvaWQqIFRocmVhZDo6UHJlUnVuKHZvaWQqIHB2KSB7CiAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCiB9Ci0jZW5kaWYKIAogdm9pZCBUaHJlYWQ6OlJ1bigpIHsKICAgUHJvY2Vzc01lc3NhZ2Vz
KGtGb3JldmVyKTsKQEAgLTQ4NSw5ICs1MTgsNiBAQCB2b2lkIFRocmVhZDo6Q2xlYXIoTWVzc2Fn
ZUhhbmRsZXIqIHBoYW5kbGVyLAogICBDbGVhckludGVybmFsKHBoYW5kbGVyLCBpZCwgcmVtb3Zl
ZCk7CiB9CiAKLSNpZiAhZGVmaW5lZChXRUJSVENfTUFDKQotLy8gTm90ZSB0aGF0IHRoZXNlIG1l
dGhvZHMgaGF2ZSBhIHNlcGFyYXRlIGltcGxlbWVudGF0aW9uIGZvciBtYWMgYW5kIGlvcwotLy8g
ZGVmaW5lZCBpbiB3ZWJydGMvcnRjX2Jhc2UvdGhyZWFkX2Rhcndpbi5tbS4KIGJvb2wgVGhyZWFk
OjpQcm9jZXNzTWVzc2FnZXMoaW50IGNtc0xvb3ApIHsKICAgLy8gVXNpbmcgUHJvY2Vzc01lc3Nh
Z2VzIHdpdGggYSBjdXN0b20gY2xvY2sgZm9yIHRlc3RpbmcgYW5kIGEgdGltZSBncmVhdGVyCiAg
IC8vIHRoYW4gMCBkb2Vzbid0IHdvcmssIHNpbmNlIGl0J3Mgbm90IGd1YXJhbnRlZWQgdG8gYWR2
YW5jZSB0aGUgY3VzdG9tCkBAIC00OTgsNiArNTI4LDkgQEAgYm9vbCBUaHJlYWQ6OlByb2Nlc3NN
ZXNzYWdlcyhpbnQgY21zTG9vcCkgewogICBpbnQgY21zTmV4dCA9IGNtc0xvb3A7CiAKICAgd2hp
bGUgKHRydWUpIHsKKyNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpCisgICAgU2NvcGVkQXV0b1JlbGVh
c2VQb29sIHBvb2w7CisjZW5kaWYKICAgICBNZXNzYWdlIG1zZzsKICAgICBpZiAoIUdldCgmbXNn
LCBjbXNOZXh0KSkKICAgICAgIHJldHVybiAhSXNRdWl0dGluZygpOwpAQCAtNTEwLDcgKzU0Myw2
IEBAIGJvb2wgVGhyZWFkOjpQcm9jZXNzTWVzc2FnZXMoaW50IGNtc0xvb3ApIHsKICAgICB9CiAg
IH0KIH0KLSNlbmRpZgogCiBib29sIFRocmVhZDo6V3JhcEN1cnJlbnRXaXRoVGhyZWFkTWFuYWdl
cihUaHJlYWRNYW5hZ2VyKiB0aHJlYWRfbWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgbmVlZF9zeW5jaHJvbml6ZV9hY2Nlc3MpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3RocmVhZC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvdGhyZWFkLmgKaW5kZXggNWE0NjYxMDRhYTI3M2U3NzRhZGM3NTI1Y2FjNTk2MjhlOTRl
NjIzNi4uMDM5MTkyY2U3ZjY3NDY5NWFiMmYxYzc1OGVjMGM4NTQ5N2YyYWE4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhy
ZWFkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvdGhyZWFkLmgKQEAgLTExLDE5ICsxMSwyMiBAQAogI2lmbmRlZiBSVENfQkFTRV9USFJF
QURfSF8KICNkZWZpbmUgUlRDX0JBU0VfVEhSRUFEX0hfCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+
CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9y
PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogCiAjaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCiAj
aW5jbHVkZSA8cHRocmVhZC5oPgogI2VuZGlmCiAjaW5jbHVkZSAicnRjX2Jhc2UvY29uc3RydWN0
b3JtYWdpYy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvY2F0aW9uLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvbWVzc2FnZWhhbmRsZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9tZXNzYWdlcXVldWUu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMuaCIKKyNpbmNsdWRl
ICJydGNfYmFzZS9zb2NrZXRzZXJ2ZXIuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWRfYW5u
b3RhdGlvbnMuaCIKIAogI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKICNpbmNsdWRlICJydGNfYmFz
ZS93aW4zMi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkX2Rhcndpbi5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZF9kYXJ3aW4ubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0MDQ4NDljNzJiNGNlZmQ1NmYxZjU0NTcwOTJjZmYwYTIz
ZDdhYTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkX2Rh
cndpbi5tbQorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IDIwMTcgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICov
Ci0KLSNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKLQotI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuaCIKLQot
LyoKLSAqIFRoaXMgZmlsZSBjb250YWlucyBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlv
bnMgZm9yIHNldmVyYWwKLSAqIG1ldGhvZHMgaW4gcnRjOjpUaHJlYWQuCi0gKi8KLQotbmFtZXNw
YWNlIHsKLXZvaWQgSW5pdENvY29hTXVsdGlUaHJlYWRpbmcoKSB7Ci0gIGlmIChbTlNUaHJlYWQg
aXNNdWx0aVRocmVhZGVkXSA9PSBOTykgewotICAgIC8vIFRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhp
cyBhdXRvcmVsZWFzZSBwb29sIGlzIHRvIGF2b2lkIGEgY29uc29sZQotICAgIC8vIG1lc3NhZ2Ug
b24gTGVvcGFyZCB0aGF0IHRlbGxzIHVzIHdlJ3JlIGF1dG9yZWxlYXNpbmcgdGhlIHRocmVhZAot
ICAgIC8vIHdpdGggbm8gYXV0b3JlbGVhc2UgcG9vbCBpbiBwbGFjZS4KLSAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgIFtOU1RocmVhZCBkZXRhY2hOZXdUaHJlYWRTZWxlY3RvcjpAc2VsZWN0
b3IoY2xhc3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9UYXJnZXQ6W05TT2Jq
ZWN0IGNsYXNzXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoT2JqZWN0Om5pbF07
Ci0gICAgfQotICB9Ci0KLSAgUlRDX0RDSEVDSyhbTlNUaHJlYWQgaXNNdWx0aVRocmVhZGVkXSk7
Ci19Ci19Ci0KLW5hbWVzcGFjZSBydGMgewotCi1UaHJlYWRNYW5hZ2VyOjpUaHJlYWRNYW5hZ2Vy
KCkgOiBtYWluX3RocmVhZF9yZWZfKEN1cnJlbnRUaHJlYWRSZWYoKSkgewotICBwdGhyZWFkX2tl
eV9jcmVhdGUoJmtleV8sIG51bGxwdHIpOwotICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhbGVy
dCB0aGUgY29jb2EgcnVudGltZSBvZiB0aGUgZmFjdCB0aGF0Ci0gIC8vIHdlIGFyZSBydW5uaW5n
IGluIGEgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4KLSAgSW5pdENvY29hTXVsdGlUaHJlYWRp
bmcoKTsKLX0KLQotLy8gc3RhdGljCi12b2lkKiBUaHJlYWQ6OlByZVJ1bih2b2lkKiBwdikgewot
ICBUaHJlYWRJbml0KiBpbml0ID0gc3RhdGljX2Nhc3Q8VGhyZWFkSW5pdCo+KHB2KTsKLSAgVGhy
ZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+U2V0Q3VycmVudFRocmVhZChpbml0LT50aHJlYWQpOwot
ICBydGM6OlNldEN1cnJlbnRUaHJlYWROYW1lKGluaXQtPnRocmVhZC0+bmFtZV8uY19zdHIoKSk7
Ci0gIEBhdXRvcmVsZWFzZXBvb2wgewotICAgIGlmIChpbml0LT5ydW5uYWJsZSkgewotICAgICAg
aW5pdC0+cnVubmFibGUtPlJ1bihpbml0LT50aHJlYWQpOwotICAgIH0gZWxzZSB7Ci0gICAgICBp
bml0LT50aHJlYWQtPlJ1bigpOwotICAgIH0KLSAgfQotICBUaHJlYWRNYW5hZ2VyOjpJbnN0YW5j
ZSgpLT5TZXRDdXJyZW50VGhyZWFkKG51bGxwdHIpOwotICBkZWxldGUgaW5pdDsKLSAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KLWJvb2wgVGhyZWFkOjpQcm9jZXNzTWVzc2FnZXMoaW50IGNtc0xvb3Ap
IHsKLSAgaW50NjRfdCBtc0VuZCA9IChrRm9yZXZlciA9PSBjbXNMb29wKSA/IDAgOiBUaW1lQWZ0
ZXIoY21zTG9vcCk7Ci0gIGludCBjbXNOZXh0ID0gY21zTG9vcDsKLQotICB3aGlsZSAodHJ1ZSkg
ewotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgTWVzc2FnZSBtc2c7Ci0gICAgICBpZiAo
IUdldCgmbXNnLCBjbXNOZXh0KSkKLSAgICAgICAgcmV0dXJuICFJc1F1aXR0aW5nKCk7Ci0gICAg
ICBEaXNwYXRjaCgmbXNnKTsKLQotICAgICAgaWYgKGNtc0xvb3AgIT0ga0ZvcmV2ZXIpIHsKLSAg
ICAgICAgY21zTmV4dCA9IHN0YXRpY19jYXN0PGludD4oVGltZVVudGlsKG1zRW5kKSk7Ci0gICAg
ICAgIGlmIChjbXNOZXh0IDwgMCkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAg
ICB9Ci0gIH0KLX0KLX0gIC8vIG5hbWVzcGFjZSBydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RocmVhZF91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Ro
cmVhZF91bml0dGVzdC5jYwppbmRleCBkNWM1M2Y4YTdjYzBhMjdmYzRmYTY0N2JmOTdkMWNmNmYy
OWNjMmVjLi43ZTM5MmFmZmQ5NGE1YjBhN2JkYmUzODA5ZTNiNmE2OGQ3MWQzZDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90
aHJlYWRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvdGhyZWFkX3VuaXR0ZXN0LmNjCkBAIC02OSw3ICs2OSw3IEBAIGNs
YXNzIFNvY2tldENsaWVudCA6IHB1YmxpYyBUZXN0R2VuZXJhdG9yLCBwdWJsaWMgc2lnc2xvdDo6
aGFzX3Nsb3RzPD4gewogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwKICAgICAgICAg
ICAgICAgICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICBjb25zdCBTb2NrZXRBZGRyZXNz
JiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICBjb25zdCBQYWNrZXRUaW1lJiBwYWNrZXRf
dGltZSkgeworICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIHBhY2tldF90aW1lX3VzKSB7
CiAgICAgRVhQRUNUX0VRKHNpemUsIHNpemVvZih1aW50MzJfdCkpOwogICAgIHVpbnQzMl90IHBy
ZXYgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmKVswXTsKICAgICB1aW50
MzJfdCByZXN1bHQgPSBOZXh0KHByZXYpOwpAQCAtNDcwLDkgKzQ3MCw5IEBAIFRFU1RfRihBc3lu
Y0ludm9rZVRlc3QsIEtpbGxJbnZva2VyRHVyaW5nRXhlY3V0ZSkgewogICAvLyBVc2UgdGhlc2Ug
ZXZlbnRzIHRvIGdldCBpbiBhIHN0YXRlIHdoZXJlIHRoZSBmdW5jdG9yIGlzIGluIHRoZSBtaWRk
bGUgb2YKICAgLy8gZXhlY3V0aW5nLCBhbmQgdGhlbiB0byB3YWl0IGZvciBpdCB0byBmaW5pc2gs
IGVuc3VyaW5nIHRoZSAiRVhQRUNUX0ZBTFNFIgogICAvLyBpcyBydW4uCi0gIEV2ZW50IGZ1bmN0
b3Jfc3RhcnRlZChmYWxzZSwgZmFsc2UpOwotICBFdmVudCBmdW5jdG9yX2NvbnRpbnVlKGZhbHNl
LCBmYWxzZSk7Ci0gIEV2ZW50IGZ1bmN0b3JfZmluaXNoZWQoZmFsc2UsIGZhbHNlKTsKKyAgRXZl
bnQgZnVuY3Rvcl9zdGFydGVkOworICBFdmVudCBmdW5jdG9yX2NvbnRpbnVlOworICBFdmVudCBm
dW5jdG9yX2ZpbmlzaGVkOwogCiAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpDcmVhdGVXaXRoU29j
a2V0U2VydmVyKCk7CiAgIHRocmVhZC0+U3RhcnQoKTsKQEAgLTUwNyw3ICs1MDcsNyBAQCBURVNU
X0YoQXN5bmNJbnZva2VUZXN0LCBLaWxsSW52b2tlckR1cmluZ0V4ZWN1dGUpIHsKIC8vIGRlc3Ry
b3llZC4gVGhpcyBzaG91bGRuJ3QgZGVhZGxvY2sgb3IgY3Jhc2g7IHRoaXMgc2Vjb25kIGludm9j
YXRpb24gc2hvdWxkCiAvLyBqdXN0IGJlIGlnbm9yZWQuCiBURVNUX0YoQXN5bmNJbnZva2VUZXN0
LCBLaWxsSW52b2tlckR1cmluZ0V4ZWN1dGVXaXRoUmVlbnRyYW50SW52b2tlKSB7Ci0gIEV2ZW50
IGZ1bmN0b3Jfc3RhcnRlZChmYWxzZSwgZmFsc2UpOworICBFdmVudCBmdW5jdG9yX3N0YXJ0ZWQ7
CiAgIC8vIEZsYWcgdXNlZCB0byB2ZXJpZnkgdGhhdCB0aGUgcmVjdXJzaXZlbHkgaW52b2tlZCB0
YXNrIG5ldmVyIGFjdHVhbGx5IHJ1bnMuCiAgIGJvb2wgcmVlbnRyYW50X2Z1bmN0b3JfcnVuID0g
ZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y19iYXNlL3RpbWVzdGFtcGFsaWduZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aW1lc3RhbXBhbGlnbmVyLmNjCmluZGV4
IGE5YmNhZmJkYzVmNWFkY2JkMmY2ZTY1ZTZlODVhMzllYzhhODY4ZTguLmYyZGExMDE3MjcxMTBk
NDdhZWI5OWMwZGUyY2M0M2I0MzRjZTYxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWVzdGFtcGFsaWduZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGlt
ZXN0YW1wYWxpZ25lci5jYwpAQCAtOCw2ICs4LDcgQEAKICAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KICAqLwogCisjaW5jbHVk
ZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxsaW1pdHM+CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3RpbWV1dGlscy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGlscy5jYwppbmRleCBkZThmYzMyNTljMjhlYzRl
N2MwN2RmNWE1NmY4ZTQ5NzMzNjA5NzM3Li5kYzViNjExZjY0N2JlYzk0NTIyMDZkZTA1MmQ3ZTVm
YjY5ZjQ1OTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS90aW1ldXRpbHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGltZXV0aWxzLmNjCkBAIC0xNCw2ICsxNCw3
IEBACiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNpZiBkZWZpbmVkKFdFQlJUQ19NQUMpCiAjaW5j
bHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZl
X2NvbnZlcnNpb25zLmgiCiAjZW5kaWYKICNlbmRpZgogCkBAIC0yOCw3ICsyOSw2IEBACiAjZW5k
aWYKIAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgotI2luY2x1ZGUgInJ0Y19iYXNlL251
bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMu
aCIKIAogbmFtZXNwYWNlIHJ0YyB7CkBAIC0xNTQsNyArMTU0LDcgQEAgaW50NjRfdCBUaW1lc3Rh
bXBXcmFwQXJvdW5kSGFuZGxlcjo6VW53cmFwKHVpbnQzMl90IHRzKSB7CiAgIHJldHVybiB0cyAr
IChudW1fd3JhcF8gPDwgMzIpOwogfQogCi1pbnQ2NF90IFRtVG9TZWNvbmRzKGNvbnN0IHN0ZDo6
dG0mIHRtKSB7CitpbnQ2NF90IFRtVG9TZWNvbmRzKGNvbnN0IHRtJiB0bSkgewogICBzdGF0aWMg
c2hvcnQgaW50IG1kYXlzWzEyXSA9IHszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMw
LCAzMSwgMzAsIDMxfTsKICAgc3RhdGljIHNob3J0IGludCBjdW11bF9tZGF5c1sxMl0gPSB7MCwg
ICAzMSwgIDU5LCAgOTAsICAxMjAsIDE1MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS90aW1ldXRpbHMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rp
bWV1dGlscy5oCmluZGV4IDNhNDEyYTQ3Y2Y4NDI1YmM5ZjFhNGUzMzAwZDU2ZDQ1MDFjY2E1YWMu
LjRlMzhhMDMxNDA5ZjBmMDVhYjU4Mzg3NzRiYzdlZWYxMGE2OTA3YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGls
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3RpbWV1dGlscy5oCkBAIC0xMyw4ICsxMyw2IEBACiAKICNpbmNsdWRlIDxzdGRpbnQuaD4K
ICNpbmNsdWRlIDx0aW1lLmg+Ci0KLSNpbmNsdWRlIDxjdGltZT4KICNpbmNsdWRlIDxzdHJpbmc+
CiAKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKQEAgLTExMCwxMCArMTA4LDEwIEBAIGNs
YXNzIFRpbWVzdGFtcFdyYXBBcm91bmRIYW5kbGVyIHsKICAgaW50NjRfdCBudW1fd3JhcF87CiB9
OwogCi0vLyBDb252ZXJ0IGZyb20gc3RkOjp0bSwgd2hpY2ggaXMgcmVsYXRpdmUgdG8gMTkwMC0w
MS0wMSAwMDowMCB0byBudW1iZXIgb2YKLS8vIHNlY29uZHMgZnJvbSAxOTcwLTAxLTAxIDAwOjAw
ICgiZXBvY2giKS4gIERvbid0IHJldHVybiB0aW1lX3Qgc2luY2UgdGhhdAorLy8gQ29udmVydCBm
cm9tIHRtLCB3aGljaCBpcyByZWxhdGl2ZSB0byAxOTAwLTAxLTAxIDAwOjAwIHRvIG51bWJlciBv
ZgorLy8gc2Vjb25kcyBmcm9tIDE5NzAtMDEtMDEgMDA6MDAgKCJlcG9jaCIpLiBEb24ndCByZXR1
cm4gdGltZV90IHNpbmNlIHRoYXQKIC8vIGlzIHN0aWxsIDMyIGJpdHMgb24gbWFueSBzeXN0ZW1z
LgotaW50NjRfdCBUbVRvU2Vjb25kcyhjb25zdCBzdGQ6OnRtJiB0bSk7CitpbnQ2NF90IFRtVG9T
ZWNvbmRzKGNvbnN0IHRtJiB0bSk7CiAKIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIG1pY3Jvc2Vj
b25kcyBzaW5jZSBKYW51YXJ5IDEsIDE5NzAsIFVUQy4KIC8vIFVzZWZ1bCBtYWlubHkgd2hlbiBw
cm9kdWNpbmcgbG9ncyB0byBiZSBjb3JyZWxhdGVkIHdpdGggb3RoZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3RpbWV1dGls
c191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL3RpbWV1dGlsc191bml0dGVzdC5jYwppbmRleCAwZTE5NDlhZWUzMTEyNWJkMzZh
NzIxMjAwMzM4NDE2ZTAyYjA3Yzk2Li41NzdlZmRhMDI1NWIwM2NiNjc5ZjQ1OTViZGViYzU1NTlj
ZjQ4MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS90aW1ldXRpbHNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGltZXV0aWxzX3VuaXR0ZXN0LmNj
CkBAIC0yNjIsNyArMjYyLDcgQEAgVEVTVChGYWtlQ2xvY2ssIFNldHRpbmdUaW1lV2FrZXNUaHJl
YWRzKSB7CiAgIHdvcmtlci0+U3RhcnQoKTsKIAogICAvLyBQb3N0IGFuIGV2ZW50IHRoYXQgd29u
J3QgYmUgZXhlY3V0ZWQgZm9yIDEwIHNlY29uZHMuCi0gIEV2ZW50IG1lc3NhZ2VfaGFuZGxlcl9k
aXNwYXRjaGVkKGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IG1lc3NhZ2VfaGFuZGxlcl9kaXNwYXRj
aGVkOwogICBhdXRvIGZ1bmN0b3IgPSBbJm1lc3NhZ2VfaGFuZGxlcl9kaXNwYXRjaGVkXSB7CiAg
ICAgbWVzc2FnZV9oYW5kbGVyX2Rpc3BhdGNoZWQuU2V0KCk7CiAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy9C
VUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3VuaXRzL0JVSUxELmduCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjNzIyYmJjN2I4ZTcwZmIyMDZmODA2YzEx
MmI2MWRkYmZlOTg1YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy9CVUlMRC5nbgpAQCAtMCwwICsxLDM3
IEBACisjIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyMgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorIyBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisj
IGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlLgorCitpbXBvcnQoIi4uLy4uL3dlYnJ0Yy5nbmkiKQorCitydGNfc291cmNlX3NldCgidW5p
dF9iYXNlIikgeworICB2aXNpYmlsaXR5ID0gWworICAgICIuLi8uLi9hcGkvdW5pdHM6KiIsCisg
ICAgIjoqIiwKKyAgXQorICBzb3VyY2VzID0gWworICAgICJ1bml0X2Jhc2UuaCIsCisgIF0KKwor
ICBkZXBzID0gWworICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICIuLi8uLi9ydGNf
YmFzZTpzYWZlX2NvbnZlcnNpb25zIiwKKyAgXQorfQorCitpZiAocnRjX2luY2x1ZGVfdGVzdHMp
IHsKKyAgcnRjX3NvdXJjZV9zZXQoInVuaXRzX3VuaXR0ZXN0cyIpIHsKKyAgICB0ZXN0b25seSA9
IHRydWUKKyAgICBzb3VyY2VzID0gWworICAgICAgInVuaXRfYmFzZV91bml0dGVzdC5jYyIsCisg
ICAgXQorICAgIGRlcHMgPSBbCisgICAgICAiOnVuaXRfYmFzZSIsCisgICAgICAiLi4vLi4vdGVz
dDp0ZXN0X3N1cHBvcnQiLAorICAgIF0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0
cy91bml0X2Jhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTAzYTMyOTkzNzY2NzY0MmNmYTcwZjdhMTdkMjll
MzMzYjRmMDY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmgKQEAgLTAsMCArMSwzMDQg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
CisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorICovCisjaWZuZGVmIFJUQ19CQVNFX1VOSVRTX1VOSVRfQkFTRV9I
XworI2RlZmluZSBSVENfQkFTRV9VTklUU19VTklUX0JBU0VfSF8KKworI2luY2x1ZGUgPHN0ZGlu
dC5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxs
aW1pdHM+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyNpbmNsdWRlICJydGNfYmFzZS9jaGVj
a3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHJ0Y191bml0c19pbXBsIHsKKworLy8gVW5p
dEJhc2UgaXMgYSBiYXNlIGNsYXNzIGZvciBpbXBsZW1lbnRpbmcgY3VzdG9tIHZhbHVlIHR5cGVz
IHdpdGggYSBzcGVjaWZpYworLy8gdW5pdC4gSXQgcHJvdmlkZXMgdHlwZSBzYWZldHkgYW5kIHNv
bW1vbmx5IHVzZWZ1bCBvcGVyYXRpb25zLiBUaGUgdW5kZWx5aW5nCisvLyBzdG9yYWdlIGlzIGFs
d2F5cyBhbiBpbnQ2NF90LCBpdCdzIHVwIHRvIHRoZSB1bml0IGltcGxlbWVudGF0aW9uIHRvIGNo
b29zZQorLy8gd2hhdCBzY2FsZSBpdCByZXByZXNlbnRzLgorLy8KKy8vIEl0J3MgdXNlZCBsaWtl
OgorLy8gY2xhc3MgTXlVbml0OiBwdWJsaWMgVW5pdEJhc2U8TXlVbml0PiB7Li4ufTsKKy8vCisv
LyBVbml0X1QgaXMgdGhlIHN1YmNsYXNzIHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWMgdW5pdC4K
K3RlbXBsYXRlIDxjbGFzcyBVbml0X1Q+CitjbGFzcyBVbml0QmFzZSB7CisgcHVibGljOgorICBV
bml0QmFzZSgpID0gZGVsZXRlOworICBzdGF0aWMgY29uc3RleHByIFVuaXRfVCBaZXJvKCkgeyBy
ZXR1cm4gVW5pdF9UKDApOyB9CisgIHN0YXRpYyBjb25zdGV4cHIgVW5pdF9UIFBsdXNJbmZpbml0
eSgpIHsgcmV0dXJuIFVuaXRfVChQbHVzSW5maW5pdHlWYWwoKSk7IH0KKyAgc3RhdGljIGNvbnN0
ZXhwciBVbml0X1QgTWludXNJbmZpbml0eSgpIHsgcmV0dXJuIFVuaXRfVChNaW51c0luZmluaXR5
VmFsKCkpOyB9CisKKyAgY29uc3RleHByIGJvb2wgSXNaZXJvKCkgY29uc3QgeyByZXR1cm4gdmFs
dWVfID09IDA7IH0KKyAgY29uc3RleHByIGJvb2wgSXNGaW5pdGUoKSBjb25zdCB7IHJldHVybiAh
SXNJbmZpbml0ZSgpOyB9CisgIGNvbnN0ZXhwciBib29sIElzSW5maW5pdGUoKSBjb25zdCB7Cisg
ICAgcmV0dXJuIHZhbHVlXyA9PSBQbHVzSW5maW5pdHlWYWwoKSB8fCB2YWx1ZV8gPT0gTWludXNJ
bmZpbml0eVZhbCgpOworICB9CisgIGNvbnN0ZXhwciBib29sIElzUGx1c0luZmluaXR5KCkgY29u
c3QgeyByZXR1cm4gdmFsdWVfID09IFBsdXNJbmZpbml0eVZhbCgpOyB9CisgIGNvbnN0ZXhwciBi
b29sIElzTWludXNJbmZpbml0eSgpIGNvbnN0IHsKKyAgICByZXR1cm4gdmFsdWVfID09IE1pbnVz
SW5maW5pdHlWYWwoKTsKKyAgfQorCisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VW5pdF9UJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB2YWx1ZV8gPT0gb3RoZXIudmFsdWVf
OworICB9CisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVW5pdF9UJiBvdGhlcikg
Y29uc3QgeworICAgIHJldHVybiB2YWx1ZV8gIT0gb3RoZXIudmFsdWVfOworICB9CisgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICAgIHJl
dHVybiB2YWx1ZV8gPD0gb3RoZXIudmFsdWVfOworICB9CisgIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPj0oY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB2YWx1ZV8gPj0g
b3RoZXIudmFsdWVfOworICB9CisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBVbml0
X1QmIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyA+IG90aGVyLnZhbHVlXzsKKyAg
fQorICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3Qg
eworICAgIHJldHVybiB2YWx1ZV8gPCBvdGhlci52YWx1ZV87CisgIH0KKworIHByb3RlY3RlZDoK
KyAgdGVtcGxhdGUgPGludDY0X3QgdmFsdWU+CisgIHN0YXRpYyBjb25zdGV4cHIgVW5pdF9UIEZy
b21TdGF0aWNWYWx1ZSgpIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlID49IDAgfHwgIVVuaXRf
VDo6b25lX3NpZGVkLCAiIik7CisgICAgc3RhdGljX2Fzc2VydCh2YWx1ZSA+IE1pbnVzSW5maW5p
dHlWYWwoKSwgIiIpOworICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPCBQbHVzSW5maW5pdHlWYWwo
KSwgIiIpOworICAgIHJldHVybiBVbml0X1QodmFsdWUpOworICB9CisKKyAgdGVtcGxhdGUgPGlu
dDY0X3QgZnJhY3Rpb25fdmFsdWUsIGludDY0X3QgRGVub21pbmF0b3I+CisgIHN0YXRpYyBjb25z
dGV4cHIgVW5pdF9UIEZyb21TdGF0aWNGcmFjdGlvbigpIHsKKyAgICBzdGF0aWNfYXNzZXJ0KGZy
YWN0aW9uX3ZhbHVlID49IDAgfHwgIVVuaXRfVDo6b25lX3NpZGVkLCAiIik7CisgICAgc3RhdGlj
X2Fzc2VydChmcmFjdGlvbl92YWx1ZSA+IE1pbnVzSW5maW5pdHlWYWwoKSAvIERlbm9taW5hdG9y
LCAiIik7CisgICAgc3RhdGljX2Fzc2VydChmcmFjdGlvbl92YWx1ZSA8IFBsdXNJbmZpbml0eVZh
bCgpIC8gRGVub21pbmF0b3IsICIiKTsKKyAgICByZXR1cm4gVW5pdF9UKGZyYWN0aW9uX3ZhbHVl
ICogRGVub21pbmF0b3IpOworICB9CisKKyAgdGVtcGxhdGUgPAorICAgICAgdHlwZW5hbWUgVCwK
KyAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVl
Pjo6dHlwZSogPSBudWxscHRyPgorICBzdGF0aWMgVW5pdF9UIEZyb21WYWx1ZShUIHZhbHVlKSB7
CisgICAgaWYgKFVuaXRfVDo6b25lX3NpZGVkKQorICAgICAgUlRDX0RDSEVDS19HRSh2YWx1ZSwg
MCk7CisgICAgUlRDX0RDSEVDS19HVCh2YWx1ZSwgTWludXNJbmZpbml0eVZhbCgpKTsKKyAgICBS
VENfRENIRUNLX0xUKHZhbHVlLCBQbHVzSW5maW5pdHlWYWwoKSk7CisgICAgcmV0dXJuIFVuaXRf
VChydGM6OmRjaGVja2VkX2Nhc3Q8aW50NjRfdD4odmFsdWUpKTsKKyAgfQorICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwKKyAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
ZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6dHlwZSogPQorICAgICAgICAgICAgICAgIG51bGxw
dHI+CisgIHN0YXRpYyBVbml0X1QgRnJvbVZhbHVlKFQgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUg
PT0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKSkgeworICAgICAgcmV0dXJuIFBs
dXNJbmZpbml0eSgpOworICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gLXN0ZDo6bnVtZXJpY19saW1p
dHM8VD46OmluZmluaXR5KCkpIHsKKyAgICAgIHJldHVybiBNaW51c0luZmluaXR5KCk7CisgICAg
fSBlbHNlIHsKKyAgICAgIFJUQ19EQ0hFQ0soIXN0ZDo6aXNuYW4odmFsdWUpKTsKKyAgICAgIHJl
dHVybiBGcm9tVmFsdWUocnRjOjpkY2hlY2tlZF9jYXN0PGludDY0X3Q+KHZhbHVlKSk7CisgICAg
fQorICB9CisKKyAgdGVtcGxhdGUgPAorICAgICAgaW50NjRfdCBEZW5vbWluYXRvciwKKyAgICAg
IHR5cGVuYW1lIFQsCisgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVn
cmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KKyAgc3RhdGljIFVuaXRfVCBGcm9tRnJh
Y3Rpb24oVCB2YWx1ZSkgeworICAgIGlmIChVbml0X1Q6Om9uZV9zaWRlZCkKKyAgICAgIFJUQ19E
Q0hFQ0tfR0UodmFsdWUsIDApOworICAgIFJUQ19EQ0hFQ0tfR1QodmFsdWUsIE1pbnVzSW5maW5p
dHlWYWwoKSAvIERlbm9taW5hdG9yKTsKKyAgICBSVENfRENIRUNLX0xUKHZhbHVlLCBQbHVzSW5m
aW5pdHlWYWwoKSAvIERlbm9taW5hdG9yKTsKKyAgICByZXR1cm4gVW5pdF9UKHJ0Yzo6ZGNoZWNr
ZWRfY2FzdDxpbnQ2NF90Pih2YWx1ZSAqIERlbm9taW5hdG9yKSk7CisgIH0KKyAgdGVtcGxhdGUg
PGludDY0X3QgRGVub21pbmF0b3IsCisgICAgICAgICAgICB0eXBlbmFtZSBULAorICAgICAgICAg
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFs
dWU+Ojp0eXBlKiA9CisgICAgICAgICAgICAgICAgbnVsbHB0cj4KKyAgc3RhdGljIFVuaXRfVCBG
cm9tRnJhY3Rpb24oVCB2YWx1ZSkgeworICAgIHJldHVybiBGcm9tVmFsdWUodmFsdWUgKiBEZW5v
bWluYXRvcik7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludDY0X3Q+CisgIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlw
ZSBUb1ZhbHVlKCkgY29uc3QgeworICAgIFJUQ19EQ0hFQ0soSXNGaW5pdGUoKSk7CisgICAgcmV0
dXJuIHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPih2YWx1ZV8pOworICB9CisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgorICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9h
dGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBlCisgIFRvVmFsdWUoKSBjb25zdCB7CisgICAg
cmV0dXJuIElzUGx1c0luZmluaXR5KCkKKyAgICAgICAgICAgICAgID8gc3RkOjpudW1lcmljX2xp
bWl0czxUPjo6aW5maW5pdHkoKQorICAgICAgICAgICAgICAgOiBJc01pbnVzSW5maW5pdHkoKSA/
IC1zdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogdmFsdWVfOworICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICBjb25zdGV4cHIgVCBUb1ZhbHVlT3IoVCBmYWxsYmFja192YWx1ZSkgY29uc3QgeworICAgIHJl
dHVybiBJc0Zpbml0ZSgpID8gdmFsdWVfIDogZmFsbGJhY2tfdmFsdWU7CisgIH0KKworICB0ZW1w
bGF0ZSA8aW50NjRfdCBEZW5vbWluYXRvciwgdHlwZW5hbWUgVCA9IGludDY0X3Q+CisgIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlwZSBU
b0ZyYWN0aW9uKCkKKyAgICAgIGNvbnN0IHsKKyAgICBSVENfRENIRUNLKElzRmluaXRlKCkpOwor
ICAgIGlmIChVbml0X1Q6Om9uZV9zaWRlZCkgeworICAgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRf
Y2FzdDxUPigKKyAgICAgICAgICBEaXZSb3VuZFBvc2l0aXZlVG9OZWFyZXN0KHZhbHVlXywgRGVu
b21pbmF0b3IpKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHJ0Yzo6ZGNoZWNrZWRfY2Fz
dDxUPihEaXZSb3VuZFRvTmVhcmVzdCh2YWx1ZV8sIERlbm9taW5hdG9yKSk7CisgICAgfQorICB9
CisgIHRlbXBsYXRlIDxpbnQ2NF90IERlbm9taW5hdG9yLCB0eXBlbmFtZSBUPgorICBjb25zdGV4
cHIgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFs
dWUsIFQ+Ojp0eXBlCisgIFRvRnJhY3Rpb24oKSBjb25zdCB7CisgICAgcmV0dXJuIFRvVmFsdWU8
VD4oKSAqICgxIC8gc3RhdGljX2Nhc3Q8VD4oRGVub21pbmF0b3IpKTsKKyAgfQorCisgIHRlbXBs
YXRlIDxpbnQ2NF90IERlbm9taW5hdG9yPgorICBjb25zdGV4cHIgaW50NjRfdCBUb0ZyYWN0aW9u
T3IoaW50NjRfdCBmYWxsYmFja192YWx1ZSkgY29uc3QgeworICAgIHJldHVybiBJc0Zpbml0ZSgp
ID8gVW5pdF9UOjpvbmVfc2lkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERpdlJv
dW5kUG9zaXRpdmVUb05lYXJlc3QodmFsdWVfLCBEZW5vbWluYXRvcikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IERpdlJvdW5kVG9OZWFyZXN0KHZhbHVlXywgRGVub21pbmF0b3IpCisg
ICAgICAgICAgICAgICAgICAgICAgOiBmYWxsYmFja192YWx1ZTsKKyAgfQorCisgIHRlbXBsYXRl
IDxpbnQ2NF90IEZhY3RvciwgdHlwZW5hbWUgVCA9IGludDY0X3Q+CisgIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPjo6dHlwZSBUb011bHRpcGxl
KCkKKyAgICAgIGNvbnN0IHsKKyAgICBSVENfRENIRUNLX0dFKFRvVmFsdWUoKSwgc3RkOjpudW1l
cmljX2xpbWl0czxUPjo6bWluKCkgLyBGYWN0b3IpOworICAgIFJUQ19EQ0hFQ0tfTEUoVG9WYWx1
ZSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSAvIEZhY3Rvcik7CisgICAgcmV0dXJu
IHJ0Yzo6ZGNoZWNrZWRfY2FzdDxUPihUb1ZhbHVlKCkgKiBGYWN0b3IpOworICB9CisgIHRlbXBs
YXRlIDxpbnQ2NF90IEZhY3RvciwgdHlwZW5hbWUgVD4KKyAgY29uc3RleHByIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZQor
ICBUb011bHRpcGxlKCkgY29uc3QgeworICAgIHJldHVybiBUb1ZhbHVlPFQ+KCkgKiBGYWN0b3I7
CisgIH0KKworICBleHBsaWNpdCBjb25zdGV4cHIgVW5pdEJhc2UoaW50NjRfdCB2YWx1ZSkgOiB2
YWx1ZV8odmFsdWUpIHt9CisKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8Y2xhc3MgUmVsYXRpdmVV
bml0X1Q+CisgIGZyaWVuZCBjbGFzcyBSZWxhdGl2ZVVuaXQ7CisKKyAgc3RhdGljIGlubGluZSBj
b25zdGV4cHIgaW50NjRfdCBQbHVzSW5maW5pdHlWYWwoKSB7CisgICAgcmV0dXJuIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOworICB9CisgIHN0YXRpYyBpbmxpbmUgY29uc3Rl
eHByIGludDY0X3QgTWludXNJbmZpbml0eVZhbCgpIHsKKyAgICByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ2NF90Pjo6bWluKCk7CisgIH0KKworICBVbml0X1QmIEFzU3ViQ2xhc3NSZWYo
KSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFVuaXRfVCY+KCp0aGlzKTsgfQorICBjb25zdGV4
cHIgY29uc3QgVW5pdF9UJiBBc1N1YkNsYXNzUmVmKCkgY29uc3QgeworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVuaXRfVCY+KCp0aGlzKTsKKyAgfQorICAvLyBBc3N1bWVzIHRo
YXQgbiA+PSAwIGFuZCBkID4gMC4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IERpdlJvdW5k
UG9zaXRpdmVUb05lYXJlc3QoaW50NjRfdCBuLCBpbnQ2NF90IGQpIHsKKyAgICByZXR1cm4gKG4g
KyBkIC8gMikgLyBkOworICB9CisgIC8vIEFzc3VtZXMgdGhhdCBkID4gMC4KKyAgc3RhdGljIGNv
bnN0ZXhwciBpbnQ2NF90IERpdlJvdW5kVG9OZWFyZXN0KGludDY0X3QgbiwgaW50NjRfdCBkKSB7
CisgICAgcmV0dXJuIChuICsgKG4gPj0gMCA/IGQgLyAyIDogLWQgLyAyKSkgLyBkOworICB9CisK
KyAgaW50NjRfdCB2YWx1ZV87Cit9OworCisvLyBFeHRlbmRzIFVuaXRCYXNlIHRvIHByb3ZpZGUg
b3BlcmF0aW9ucyBmb3IgcmVsYXRpdmUgdW5pdHMsIHRoYXQgaXMsIHVuaXRzCisvLyB0aGF0IGhh
dmUgYSBtZWFuaW5nZnVsIHJlbGF0aW9uIGJldHdlZW4gdmFsdWVzIHN1Y2ggdGhhdCBhICs9IGIg
aXMgYQorLy8gc2Vuc2libGUgdGhpbmcgdG8gZG8uIEZvciBhLGIgPC0gc2FtZSB1bml0LgordGVt
cGxhdGUgPGNsYXNzIFVuaXRfVD4KK2NsYXNzIFJlbGF0aXZlVW5pdCA6IHB1YmxpYyBVbml0QmFz
ZTxVbml0X1Q+IHsKKyBwdWJsaWM6CisgIFVuaXRfVCBDbGFtcGVkKFVuaXRfVCBtaW5fdmFsdWUs
IFVuaXRfVCBtYXhfdmFsdWUpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RkOjptYXgobWluX3ZhbHVl
LAorICAgICAgICAgICAgICAgICAgICBzdGQ6Om1pbihVbml0QmFzZTxVbml0X1Q+OjpBc1N1YkNs
YXNzUmVmKCksIG1heF92YWx1ZSkpOworICB9CisgIHZvaWQgQ2xhbXAoVW5pdF9UIG1pbl92YWx1
ZSwgVW5pdF9UIG1heF92YWx1ZSkgeworICAgICp0aGlzID0gQ2xhbXBlZChtaW5fdmFsdWUsIG1h
eF92YWx1ZSk7CisgIH0KKyAgVW5pdF9UIG9wZXJhdG9yKyhjb25zdCBVbml0X1Qgb3RoZXIpIGNv
bnN0IHsKKyAgICBpZiAodGhpcy0+SXNQbHVzSW5maW5pdHkoKSB8fCBvdGhlci5Jc1BsdXNJbmZp
bml0eSgpKSB7CisgICAgICBSVENfRENIRUNLKCF0aGlzLT5Jc01pbnVzSW5maW5pdHkoKSk7Cisg
ICAgICBSVENfRENIRUNLKCFvdGhlci5Jc01pbnVzSW5maW5pdHkoKSk7CisgICAgICByZXR1cm4g
dGhpcy0+UGx1c0luZmluaXR5KCk7CisgICAgfSBlbHNlIGlmICh0aGlzLT5Jc01pbnVzSW5maW5p
dHkoKSB8fCBvdGhlci5Jc01pbnVzSW5maW5pdHkoKSkgeworICAgICAgUlRDX0RDSEVDSyghdGhp
cy0+SXNQbHVzSW5maW5pdHkoKSk7CisgICAgICBSVENfRENIRUNLKCFvdGhlci5Jc1BsdXNJbmZp
bml0eSgpKTsKKyAgICAgIHJldHVybiB0aGlzLT5NaW51c0luZmluaXR5KCk7CisgICAgfQorICAg
IHJldHVybiBVbml0QmFzZTxVbml0X1Q+OjpGcm9tVmFsdWUodGhpcy0+VG9WYWx1ZSgpICsgb3Ro
ZXIuVG9WYWx1ZSgpKTsKKyAgfQorICBVbml0X1Qgb3BlcmF0b3ItKGNvbnN0IFVuaXRfVCBvdGhl
cikgY29uc3QgeworICAgIGlmICh0aGlzLT5Jc1BsdXNJbmZpbml0eSgpIHx8IG90aGVyLklzTWlu
dXNJbmZpbml0eSgpKSB7CisgICAgICBSVENfRENIRUNLKCF0aGlzLT5Jc01pbnVzSW5maW5pdHko
KSk7CisgICAgICBSVENfRENIRUNLKCFvdGhlci5Jc1BsdXNJbmZpbml0eSgpKTsKKyAgICAgIHJl
dHVybiB0aGlzLT5QbHVzSW5maW5pdHkoKTsKKyAgICB9IGVsc2UgaWYgKHRoaXMtPklzTWludXNJ
bmZpbml0eSgpIHx8IG90aGVyLklzUGx1c0luZmluaXR5KCkpIHsKKyAgICAgIFJUQ19EQ0hFQ0so
IXRoaXMtPklzUGx1c0luZmluaXR5KCkpOworICAgICAgUlRDX0RDSEVDSyghb3RoZXIuSXNNaW51
c0luZmluaXR5KCkpOworICAgICAgcmV0dXJuIHRoaXMtPk1pbnVzSW5maW5pdHkoKTsKKyAgICB9
CisgICAgcmV0dXJuIFVuaXRCYXNlPFVuaXRfVD46OkZyb21WYWx1ZSh0aGlzLT5Ub1ZhbHVlKCkg
LSBvdGhlci5Ub1ZhbHVlKCkpOworICB9CisgIFVuaXRfVCYgb3BlcmF0b3IrPShjb25zdCBVbml0
X1Qgb3RoZXIpIHsKKyAgICAqdGhpcyA9ICp0aGlzICsgb3RoZXI7CisgICAgcmV0dXJuIHRoaXMt
PkFzU3ViQ2xhc3NSZWYoKTsKKyAgfQorICBVbml0X1QmIG9wZXJhdG9yLT0oY29uc3QgVW5pdF9U
IG90aGVyKSB7CisgICAgKnRoaXMgPSAqdGhpcyAtIG90aGVyOworICAgIHJldHVybiB0aGlzLT5B
c1N1YkNsYXNzUmVmKCk7CisgIH0KKyAgY29uc3RleHByIGRvdWJsZSBvcGVyYXRvci8oY29uc3Qg
VW5pdF9UIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIFVuaXRCYXNlPFVuaXRfVD46OnRlbXBs
YXRlIFRvVmFsdWU8ZG91YmxlPigpIC8KKyAgICAgICAgICAgb3RoZXIudGVtcGxhdGUgVG9WYWx1
ZTxkb3VibGU+KCk7CisgIH0KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUsIFVuaXRfVD46OnR5cGUg
b3BlcmF0b3IvKAorICAgICAgY29uc3QgVCYgc2NhbGFyKSBjb25zdCB7CisgICAgcmV0dXJuIFVu
aXRCYXNlPFVuaXRfVD46OkZyb21WYWx1ZSgKKyAgICAgICAgc3RkOjpyb3VuZChVbml0QmFzZTxV
bml0X1Q+Ojp0ZW1wbGF0ZSBUb1ZhbHVlPGludDY0X3Q+KCkgLyBzY2FsYXIpKTsKKyAgfQorICBV
bml0X1Qgb3BlcmF0b3IqKGNvbnN0IGRvdWJsZSBzY2FsYXIpIGNvbnN0IHsKKyAgICByZXR1cm4g
VW5pdEJhc2U8VW5pdF9UPjo6RnJvbVZhbHVlKHN0ZDo6cm91bmQodGhpcy0+VG9WYWx1ZSgpICog
c2NhbGFyKSk7CisgIH0KKyAgVW5pdF9UIG9wZXJhdG9yKihjb25zdCBpbnQ2NF90IHNjYWxhcikg
Y29uc3QgeworICAgIHJldHVybiBVbml0QmFzZTxVbml0X1Q+OjpGcm9tVmFsdWUodGhpcy0+VG9W
YWx1ZSgpICogc2NhbGFyKTsKKyAgfQorICBVbml0X1Qgb3BlcmF0b3IqKGNvbnN0IGludDMyX3Qg
c2NhbGFyKSBjb25zdCB7CisgICAgcmV0dXJuIFVuaXRCYXNlPFVuaXRfVD46OkZyb21WYWx1ZSh0
aGlzLT5Ub1ZhbHVlKCkgKiBzY2FsYXIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIHVzaW5nIFVu
aXRCYXNlPFVuaXRfVD46OlVuaXRCYXNlOworfTsKKwordGVtcGxhdGUgPGNsYXNzIFVuaXRfVD4K
K2lubGluZSBVbml0X1Qgb3BlcmF0b3IqKGNvbnN0IGRvdWJsZSBzY2FsYXIsIGNvbnN0IFJlbGF0
aXZlVW5pdDxVbml0X1Q+IG90aGVyKSB7CisgIHJldHVybiBvdGhlciAqIHNjYWxhcjsKK30KK3Rl
bXBsYXRlIDxjbGFzcyBVbml0X1Q+CitpbmxpbmUgVW5pdF9UIG9wZXJhdG9yKihjb25zdCBpbnQ2
NF90IHNjYWxhciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbGF0aXZlVW5pdDxV
bml0X1Q+IG90aGVyKSB7CisgIHJldHVybiBvdGhlciAqIHNjYWxhcjsKK30KK3RlbXBsYXRlIDxj
bGFzcyBVbml0X1Q+CitpbmxpbmUgVW5pdF9UIG9wZXJhdG9yKihjb25zdCBpbnQzMl90JiBzY2Fs
YXIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWxhdGl2ZVVuaXQ8VW5pdF9UPiBv
dGhlcikgeworICByZXR1cm4gb3RoZXIgKiBzY2FsYXI7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBy
dGNfdW5pdHNfaW1wbAorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gUlRD
X0JBU0VfVU5JVFNfVU5JVF9CQVNFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy91bml0X2Jhc2VfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91
bml0cy91bml0X2Jhc2VfdW5pdHRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhjODUwM2RlY2I0NzgzM2U0
OWQwZGYxNmQyMDM5Y2IwYWMwNGNmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3VuaXRzL3VuaXRfYmFzZV91bml0
dGVzdC5jYwpAQCAtMCwwICsxLDIzNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNs
dWRlICJydGNfYmFzZS91bml0cy91bml0X2Jhc2UuaCIKKworI2luY2x1ZGUgInRlc3QvZ3Rlc3Qu
aCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgeworY2xhc3MgVGVzdFVuaXQgZmlu
YWwgOiBwdWJsaWMgcnRjX3VuaXRzX2ltcGw6OlJlbGF0aXZlVW5pdDxUZXN0VW5pdD4geworIHB1
YmxpYzoKKyAgVGVzdFVuaXQoKSA9IGRlbGV0ZTsKKworICB1c2luZyBVbml0QmFzZTo6RnJvbVN0
YXRpY1ZhbHVlOworICB1c2luZyBVbml0QmFzZTo6RnJvbVZhbHVlOworICB1c2luZyBVbml0QmFz
ZTo6VG9WYWx1ZTsKKyAgdXNpbmcgVW5pdEJhc2U6OlRvVmFsdWVPcjsKKworICB0ZW1wbGF0ZSA8
aW50NjRfdCBraWxvPgorICBzdGF0aWMgY29uc3RleHByIFRlc3RVbml0IEZyb21TdGF0aWNLaWxv
KCkgeworICAgIHJldHVybiBGcm9tU3RhdGljRnJhY3Rpb248a2lsbywgMTAwMD4oKTsKKyAgfQor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIFRlc3RVbml0IEZyb21LaWxvKFQga2ls
bykgeworICAgIHJldHVybiBGcm9tRnJhY3Rpb248MTAwMD4oa2lsbyk7CisgIH0KKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQgPSBpbnQ2NF90PgorICBUIFRvS2lsbygpIGNvbnN0IHsKKyAgICByZXR1
cm4gVW5pdEJhc2U6OlRvRnJhY3Rpb248MTAwMCwgVD4oKTsKKyAgfQorICBjb25zdGV4cHIgaW50
NjRfdCBUb0tpbG9PcihpbnQ2NF90IGZhbGxiYWNrKSBjb25zdCB7CisgICAgcmV0dXJuIFVuaXRC
YXNlOjpUb0ZyYWN0aW9uT3I8MTAwMD4oZmFsbGJhY2spOworICB9CisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgorICBjb25zdGV4cHIgVCBUb01pbGxpKCkgY29uc3QgeworICAgIHJldHVybiBVbml0
QmFzZTo6VG9NdWx0aXBsZTwxMDAwLCBUPigpOworICB9CisKKyBwcml2YXRlOgorICBmcmllbmQg
Y2xhc3MgVW5pdEJhc2U8VGVzdFVuaXQ+OworICBzdGF0aWMgY29uc3RleHByIGJvb2wgb25lX3Np
ZGVkID0gZmFsc2U7CisgIHVzaW5nIFJlbGF0aXZlVW5pdDxUZXN0VW5pdD46OlJlbGF0aXZlVW5p
dDsKK307Cit9ICAvLyBuYW1lc3BhY2UKK25hbWVzcGFjZSB0ZXN0IHsKK1RFU1QoVW5pdEJhc2VU
ZXN0LCBDb25zdEV4cHIpIHsKKyAgY29uc3RleHByIGludDY0X3Qga1ZhbHVlID0gLTEyMzQ1Owor
ICBjb25zdGV4cHIgVGVzdFVuaXQga1Rlc3RVbml0WmVybyA9IFRlc3RVbml0OjpaZXJvKCk7Cisg
IGNvbnN0ZXhwciBUZXN0VW5pdCBrVGVzdFVuaXRQbHVzSW5mID0gVGVzdFVuaXQ6OlBsdXNJbmZp
bml0eSgpOworICBjb25zdGV4cHIgVGVzdFVuaXQga1Rlc3RVbml0TWludXNJbmYgPSBUZXN0VW5p
dDo6TWludXNJbmZpbml0eSgpOworICBzdGF0aWNfYXNzZXJ0KGtUZXN0VW5pdFplcm8uSXNaZXJv
KCksICIiKTsKKyAgc3RhdGljX2Fzc2VydChrVGVzdFVuaXRQbHVzSW5mLklzUGx1c0luZmluaXR5
KCksICIiKTsKKyAgc3RhdGljX2Fzc2VydChrVGVzdFVuaXRNaW51c0luZi5Jc01pbnVzSW5maW5p
dHkoKSwgIiIpOworICBzdGF0aWNfYXNzZXJ0KGtUZXN0VW5pdFBsdXNJbmYuVG9LaWxvT3IoLTEp
ID09IC0xLCAiIik7CisKKyAgc3RhdGljX2Fzc2VydChrVGVzdFVuaXRQbHVzSW5mID4ga1Rlc3RV
bml0WmVybywgIiIpOworCisgIGNvbnN0ZXhwciBUZXN0VW5pdCBrVGVzdFVuaXRLaWxvID0gVGVz
dFVuaXQ6OkZyb21TdGF0aWNLaWxvPGtWYWx1ZT4oKTsKKyAgY29uc3RleHByIFRlc3RVbml0IGtU
ZXN0VW5pdFZhbHVlID0gVGVzdFVuaXQ6OkZyb21TdGF0aWNWYWx1ZTxrVmFsdWU+KCk7CisKKyAg
c3RhdGljX2Fzc2VydChrVGVzdFVuaXRLaWxvLlRvS2lsb09yKDApID09IGtWYWx1ZSwgIiIpOwor
ICBzdGF0aWNfYXNzZXJ0KGtUZXN0VW5pdFZhbHVlLlRvVmFsdWVPcigwKSA9PSBrVmFsdWUsICIi
KTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIEdldEJhY2tTYW1lVmFsdWVzKSB7CisgIGNvbnN0
IGludDY0X3Qga1ZhbHVlID0gNDk5OworICBmb3IgKGludCBzaWduID0gLTE7IHNpZ24gPD0gMTsg
KytzaWduKSB7CisgICAgaW50NjRfdCB2YWx1ZSA9IGtWYWx1ZSAqIHNpZ247CisgICAgRVhQRUNU
X0VRKFRlc3RVbml0OjpGcm9tS2lsbyh2YWx1ZSkuVG9LaWxvKCksIHZhbHVlKTsKKyAgICBFWFBF
Q1RfRVEoVGVzdFVuaXQ6OkZyb21WYWx1ZSh2YWx1ZSkuVG9WYWx1ZTxpbnQ2NF90PigpLCB2YWx1
ZSk7CisgIH0KKyAgRVhQRUNUX0VRKFRlc3RVbml0OjpaZXJvKCkuVG9WYWx1ZTxpbnQ2NF90Pigp
LCAwKTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIEdldERpZmZlcmVudFByZWZpeCkgeworICBj
b25zdCBpbnQ2NF90IGtWYWx1ZSA9IDMwMDAwMDA7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6RnJv
bVZhbHVlKGtWYWx1ZSkuVG9LaWxvKCksIGtWYWx1ZSAvIDEwMDApOworICBFWFBFQ1RfRVEoVGVz
dFVuaXQ6OkZyb21LaWxvKGtWYWx1ZSkuVG9WYWx1ZTxpbnQ2NF90PigpLCBrVmFsdWUgKiAxMDAw
KTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIElkZW50aXR5Q2hlY2tzKSB7CisgIGNvbnN0IGlu
dDY0X3Qga1ZhbHVlID0gMzAwMDsKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6Olplcm8oKS5Jc1pl
cm8oKSk7CisgIEVYUEVDVF9GQUxTRShUZXN0VW5pdDo6RnJvbUtpbG8oa1ZhbHVlKS5Jc1plcm8o
KSk7CisKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpLklzSW5maW5pdGUo
KSk7CisgIEVYUEVDVF9UUlVFKFRlc3RVbml0OjpNaW51c0luZmluaXR5KCkuSXNJbmZpbml0ZSgp
KTsKKyAgRVhQRUNUX0ZBTFNFKFRlc3RVbml0OjpaZXJvKCkuSXNJbmZpbml0ZSgpKTsKKyAgRVhQ
RUNUX0ZBTFNFKFRlc3RVbml0OjpGcm9tS2lsbygta1ZhbHVlKS5Jc0luZmluaXRlKCkpOworICBF
WFBFQ1RfRkFMU0UoVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZSkuSXNJbmZpbml0ZSgpKTsKKwor
ICBFWFBFQ1RfRkFMU0UoVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpLklzRmluaXRlKCkpOworICBF
WFBFQ1RfRkFMU0UoVGVzdFVuaXQ6Ok1pbnVzSW5maW5pdHkoKS5Jc0Zpbml0ZSgpKTsKKyAgRVhQ
RUNUX1RSVUUoVGVzdFVuaXQ6OkZyb21LaWxvKC1rVmFsdWUpLklzRmluaXRlKCkpOworICBFWFBF
Q1RfVFJVRShUZXN0VW5pdDo6RnJvbUtpbG8oa1ZhbHVlKS5Jc0Zpbml0ZSgpKTsKKyAgRVhQRUNU
X1RSVUUoVGVzdFVuaXQ6Olplcm8oKS5Jc0Zpbml0ZSgpKTsKKworICBFWFBFQ1RfVFJVRShUZXN0
VW5pdDo6UGx1c0luZmluaXR5KCkuSXNQbHVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9GQUxTRShU
ZXN0VW5pdDo6TWludXNJbmZpbml0eSgpLklzUGx1c0luZmluaXR5KCkpOworCisgIEVYUEVDVF9U
UlVFKFRlc3RVbml0OjpNaW51c0luZmluaXR5KCkuSXNNaW51c0luZmluaXR5KCkpOworICBFWFBF
Q1RfRkFMU0UoVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpLklzTWludXNJbmZpbml0eSgpKTsKK30K
KworVEVTVChVbml0QmFzZVRlc3QsIENvbXBhcmlzb25PcGVyYXRvcnMpIHsKKyAgY29uc3QgaW50
NjRfdCBrU21hbGwgPSA0NTA7CisgIGNvbnN0IGludDY0X3Qga0xhcmdlID0gNDUxOworICBjb25z
dCBUZXN0VW5pdCBzbWFsbCA9IFRlc3RVbml0OjpGcm9tS2lsbyhrU21hbGwpOworICBjb25zdCBU
ZXN0VW5pdCBsYXJnZSA9IFRlc3RVbml0OjpGcm9tS2lsbyhrTGFyZ2UpOworCisgIEVYUEVDVF9F
UShUZXN0VW5pdDo6WmVybygpLCBUZXN0VW5pdDo6RnJvbUtpbG8oMCkpOworICBFWFBFQ1RfRVEo
VGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpLCBUZXN0VW5pdDo6UGx1c0luZmluaXR5KCkpOworICBF
WFBFQ1RfRVEoc21hbGwsIFRlc3RVbml0OjpGcm9tS2lsbyhrU21hbGwpKTsKKyAgRVhQRUNUX0xF
KHNtYWxsLCBUZXN0VW5pdDo6RnJvbUtpbG8oa1NtYWxsKSk7CisgIEVYUEVDVF9HRShzbWFsbCwg
VGVzdFVuaXQ6OkZyb21LaWxvKGtTbWFsbCkpOworICBFWFBFQ1RfTkUoc21hbGwsIFRlc3RVbml0
OjpGcm9tS2lsbyhrTGFyZ2UpKTsKKyAgRVhQRUNUX0xFKHNtYWxsLCBUZXN0VW5pdDo6RnJvbUtp
bG8oa0xhcmdlKSk7CisgIEVYUEVDVF9MVChzbWFsbCwgVGVzdFVuaXQ6OkZyb21LaWxvKGtMYXJn
ZSkpOworICBFWFBFQ1RfR0UobGFyZ2UsIFRlc3RVbml0OjpGcm9tS2lsbyhrU21hbGwpKTsKKyAg
RVhQRUNUX0dUKGxhcmdlLCBUZXN0VW5pdDo6RnJvbUtpbG8oa1NtYWxsKSk7CisgIEVYUEVDVF9M
VChUZXN0VW5pdDo6WmVybygpLCBzbWFsbCk7CisgIEVYUEVDVF9HVChUZXN0VW5pdDo6WmVybygp
LCBUZXN0VW5pdDo6RnJvbUtpbG8oLWtTbWFsbCkpOworICBFWFBFQ1RfR1QoVGVzdFVuaXQ6Olpl
cm8oKSwgVGVzdFVuaXQ6OkZyb21LaWxvKC1rU21hbGwpKTsKKworICBFWFBFQ1RfR1QoVGVzdFVu
aXQ6OlBsdXNJbmZpbml0eSgpLCBsYXJnZSk7CisgIEVYUEVDVF9MVChUZXN0VW5pdDo6TWludXNJ
bmZpbml0eSgpLCBUZXN0VW5pdDo6WmVybygpKTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIENs
YW1waW5nKSB7CisgIGNvbnN0IFRlc3RVbml0IHVwcGVyID0gVGVzdFVuaXQ6OkZyb21LaWxvKDgw
MCk7CisgIGNvbnN0IFRlc3RVbml0IGxvd2VyID0gVGVzdFVuaXQ6OkZyb21LaWxvKDEwMCk7Cisg
IGNvbnN0IFRlc3RVbml0IHVuZGVyID0gVGVzdFVuaXQ6OkZyb21LaWxvKDEwMCk7CisgIGNvbnN0
IFRlc3RVbml0IGluc2lkZSA9IFRlc3RVbml0OjpGcm9tS2lsbyg1MDApOworICBjb25zdCBUZXN0
VW5pdCBvdmVyID0gVGVzdFVuaXQ6OkZyb21LaWxvKDEwMDApOworICBFWFBFQ1RfRVEodW5kZXIu
Q2xhbXBlZChsb3dlciwgdXBwZXIpLCBsb3dlcik7CisgIEVYUEVDVF9FUShpbnNpZGUuQ2xhbXBl
ZChsb3dlciwgdXBwZXIpLCBpbnNpZGUpOworICBFWFBFQ1RfRVEob3Zlci5DbGFtcGVkKGxvd2Vy
LCB1cHBlciksIHVwcGVyKTsKKworICBUZXN0VW5pdCBtdXRhYmxlX2RlbHRhID0gbG93ZXI7Cisg
IG11dGFibGVfZGVsdGEuQ2xhbXAobG93ZXIsIHVwcGVyKTsKKyAgRVhQRUNUX0VRKG11dGFibGVf
ZGVsdGEsIGxvd2VyKTsKKyAgbXV0YWJsZV9kZWx0YSA9IGluc2lkZTsKKyAgbXV0YWJsZV9kZWx0
YS5DbGFtcChsb3dlciwgdXBwZXIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9kZWx0YSwgaW5zaWRl
KTsKKyAgbXV0YWJsZV9kZWx0YSA9IG92ZXI7CisgIG11dGFibGVfZGVsdGEuQ2xhbXAobG93ZXIs
IHVwcGVyKTsKKyAgRVhQRUNUX0VRKG11dGFibGVfZGVsdGEsIHVwcGVyKTsKK30KKworVEVTVChV
bml0QmFzZVRlc3QsIENhbkJlSW5pdGl0aWFsaXplZEZyb21MYXJnZUludCkgeworICBjb25zdCBp
bnQga01heEludCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgIEVYUEVDVF9F
UShUZXN0VW5pdDo6RnJvbUtpbG8oa01heEludCkuVG9WYWx1ZTxpbnQ2NF90PigpLAorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50NjRfdD4oa01heEludCkgKiAxMDAwKTsKK30KKworVEVTVChV
bml0QmFzZVRlc3QsIENvbnZlcnRzVG9BbmRGcm9tRG91YmxlKSB7CisgIGNvbnN0IGludDY0X3Qg
a1ZhbHVlID0gMTcwMTc7CisgIGNvbnN0IGRvdWJsZSBrTWlsbGlEb3VibGUgPSBrVmFsdWUgKiAx
ZTM7CisgIGNvbnN0IGRvdWJsZSBrVmFsdWVEb3VibGUgPSBrVmFsdWU7CisgIGNvbnN0IGRvdWJs
ZSBrS2lsb0RvdWJsZSA9IGtWYWx1ZSAqIDFlLTM7CisKKyAgRVhQRUNUX0VRKFRlc3RVbml0OjpG
cm9tVmFsdWUoa1ZhbHVlKS5Ub0tpbG88ZG91YmxlPigpLCBrS2lsb0RvdWJsZSk7CisgIEVYUEVD
VF9FUShUZXN0VW5pdDo6RnJvbUtpbG8oa0tpbG9Eb3VibGUpLlRvVmFsdWU8aW50NjRfdD4oKSwg
a1ZhbHVlKTsKKworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OkZyb21WYWx1ZShrVmFsdWUpLlRvVmFs
dWU8ZG91YmxlPigpLCBrVmFsdWVEb3VibGUpOworICBFWFBFQ1RfRVEoVGVzdFVuaXQ6OkZyb21W
YWx1ZShrVmFsdWVEb3VibGUpLlRvVmFsdWU8aW50NjRfdD4oKSwga1ZhbHVlKTsKKworICBFWFBF
Q1RfTkVBUihUZXN0VW5pdDo6RnJvbVZhbHVlKGtWYWx1ZSkuVG9NaWxsaTxkb3VibGU+KCksIGtN
aWxsaURvdWJsZSwgMSk7CisKKyAgY29uc3QgZG91YmxlIGtQbHVzSW5maW5pdHkgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgIGNvbnN0IGRvdWJsZSBrTWludXNJ
bmZpbml0eSA9IC1rUGx1c0luZmluaXR5OworCisgIEVYUEVDVF9FUShUZXN0VW5pdDo6UGx1c0lu
ZmluaXR5KCkuVG9LaWxvPGRvdWJsZT4oKSwga1BsdXNJbmZpbml0eSk7CisgIEVYUEVDVF9FUShU
ZXN0VW5pdDo6TWludXNJbmZpbml0eSgpLlRvS2lsbzxkb3VibGU+KCksIGtNaW51c0luZmluaXR5
KTsKKyAgRVhQRUNUX0VRKFRlc3RVbml0OjpQbHVzSW5maW5pdHkoKS5Ub1ZhbHVlPGRvdWJsZT4o
KSwga1BsdXNJbmZpbml0eSk7CisgIEVYUEVDVF9FUShUZXN0VW5pdDo6TWludXNJbmZpbml0eSgp
LlRvVmFsdWU8ZG91YmxlPigpLCBrTWludXNJbmZpbml0eSk7CisgIEVYUEVDVF9FUShUZXN0VW5p
dDo6UGx1c0luZmluaXR5KCkuVG9NaWxsaTxkb3VibGU+KCksIGtQbHVzSW5maW5pdHkpOworICBF
WFBFQ1RfRVEoVGVzdFVuaXQ6Ok1pbnVzSW5maW5pdHkoKS5Ub01pbGxpPGRvdWJsZT4oKSwga01p
bnVzSW5maW5pdHkpOworCisgIEVYUEVDVF9UUlVFKFRlc3RVbml0OjpGcm9tS2lsbyhrUGx1c0lu
ZmluaXR5KS5Jc1BsdXNJbmZpbml0eSgpKTsKKyAgRVhQRUNUX1RSVUUoVGVzdFVuaXQ6OkZyb21L
aWxvKGtNaW51c0luZmluaXR5KS5Jc01pbnVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9UUlVFKFRl
c3RVbml0OjpGcm9tVmFsdWUoa1BsdXNJbmZpbml0eSkuSXNQbHVzSW5maW5pdHkoKSk7CisgIEVY
UEVDVF9UUlVFKFRlc3RVbml0OjpGcm9tVmFsdWUoa01pbnVzSW5maW5pdHkpLklzTWludXNJbmZp
bml0eSgpKTsKK30KKworVEVTVChVbml0QmFzZVRlc3QsIE1hdGhPcGVyYXRpb25zKSB7CisgIGNv
bnN0IGludDY0X3Qga1ZhbHVlQSA9IDI2NzsKKyAgY29uc3QgaW50NjRfdCBrVmFsdWVCID0gNDUw
OworICBjb25zdCBUZXN0VW5pdCBkZWx0YV9hID0gVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZUEp
OworICBjb25zdCBUZXN0VW5pdCBkZWx0YV9iID0gVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZUIp
OworICBFWFBFQ1RfRVEoKGRlbHRhX2EgKyBkZWx0YV9iKS5Ub0tpbG8oKSwga1ZhbHVlQSArIGtW
YWx1ZUIpOworICBFWFBFQ1RfRVEoKGRlbHRhX2EgLSBkZWx0YV9iKS5Ub0tpbG8oKSwga1ZhbHVl
QSAtIGtWYWx1ZUIpOworCisgIGNvbnN0IGludDMyX3Qga0ludDMyVmFsdWUgPSAxMjM7CisgIGNv
bnN0IGRvdWJsZSBrRmxvYXRWYWx1ZSA9IDEyMy4wOworICBFWFBFQ1RfRVEoKFRlc3RVbml0OjpG
cm9tVmFsdWUoa1ZhbHVlQSkgKiBrVmFsdWVCKS5Ub1ZhbHVlPGludDY0X3Q+KCksCisgICAgICAg
ICAgICBrVmFsdWVBICoga1ZhbHVlQik7CisgIEVYUEVDVF9FUSgoVGVzdFVuaXQ6OkZyb21WYWx1
ZShrVmFsdWVBKSAqIGtJbnQzMlZhbHVlKS5Ub1ZhbHVlPGludDY0X3Q+KCksCisgICAgICAgICAg
ICBrVmFsdWVBICoga0ludDMyVmFsdWUpOworICBFWFBFQ1RfRVEoKFRlc3RVbml0OjpGcm9tVmFs
dWUoa1ZhbHVlQSkgKiBrRmxvYXRWYWx1ZSkuVG9WYWx1ZTxpbnQ2NF90PigpLAorICAgICAgICAg
ICAga1ZhbHVlQSAqIGtGbG9hdFZhbHVlKTsKKworICBFWFBFQ1RfRVEoKGRlbHRhX2IgLyAxMCku
VG9LaWxvKCksIGtWYWx1ZUIgLyAxMCk7CisgIEVYUEVDVF9FUShkZWx0YV9iIC8gZGVsdGFfYSwg
c3RhdGljX2Nhc3Q8ZG91YmxlPihrVmFsdWVCKSAvIGtWYWx1ZUEpOworCisgIFRlc3RVbml0IG11
dGFibGVfZGVsdGEgPSBUZXN0VW5pdDo6RnJvbUtpbG8oa1ZhbHVlQSk7CisgIG11dGFibGVfZGVs
dGEgKz0gVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZUIpOworICBFWFBFQ1RfRVEobXV0YWJsZV9k
ZWx0YSwgVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZUEgKyBrVmFsdWVCKSk7CisgIG11dGFibGVf
ZGVsdGEgLT0gVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZUIpOworICBFWFBFQ1RfRVEobXV0YWJs
ZV9kZWx0YSwgVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZUEpKTsKK30KKworVEVTVChVbml0QmFz
ZVRlc3QsIEluZmluaXR5T3BlcmF0aW9ucykgeworICBjb25zdCBpbnQ2NF90IGtWYWx1ZSA9IDI2
NzsKKyAgY29uc3QgVGVzdFVuaXQgZmluaXRlID0gVGVzdFVuaXQ6OkZyb21LaWxvKGtWYWx1ZSk7
CisgIEVYUEVDVF9UUlVFKChUZXN0VW5pdDo6UGx1c0luZmluaXR5KCkgKyBmaW5pdGUpLklzUGx1
c0luZmluaXR5KCkpOworICBFWFBFQ1RfVFJVRSgoVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpIC0g
ZmluaXRlKS5Jc1BsdXNJbmZpbml0eSgpKTsKKyAgRVhQRUNUX1RSVUUoKGZpbml0ZSArIFRlc3RV
bml0OjpQbHVzSW5maW5pdHkoKSkuSXNQbHVzSW5maW5pdHkoKSk7CisgIEVYUEVDVF9UUlVFKChm
aW5pdGUgLSBUZXN0VW5pdDo6TWludXNJbmZpbml0eSgpKS5Jc1BsdXNJbmZpbml0eSgpKTsKKwor
ICBFWFBFQ1RfVFJVRSgoVGVzdFVuaXQ6Ok1pbnVzSW5maW5pdHkoKSArIGZpbml0ZSkuSXNNaW51
c0luZmluaXR5KCkpOworICBFWFBFQ1RfVFJVRSgoVGVzdFVuaXQ6Ok1pbnVzSW5maW5pdHkoKSAt
IGZpbml0ZSkuSXNNaW51c0luZmluaXR5KCkpOworICBFWFBFQ1RfVFJVRSgoZmluaXRlICsgVGVz
dFVuaXQ6Ok1pbnVzSW5maW5pdHkoKSkuSXNNaW51c0luZmluaXR5KCkpOworICBFWFBFQ1RfVFJV
RSgoZmluaXRlIC0gVGVzdFVuaXQ6OlBsdXNJbmZpbml0eSgpKS5Jc01pbnVzSW5maW5pdHkoKSk7
Cit9Cit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
dW5pdHRlc3RfbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3VuaXR0ZXN0X21haW4uY2MKaW5kZXggOGQ0ZmYyZGYyZDM5MzBjZjdlZDRj
ODU5ZTE5N2Y5MWY0M2NlMDgzYy4uNWZkM2E5OTY4NzZmOGRjYTM1NDRkMDg4NDQxMjU0Nzc0NzAw
OTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdW5pdHRlc3RfbWFpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0dGVzdF9tYWluLmNjCkBAIC0yMiw3ICsy
Miw2IEBACiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZmllbGRfdHJpYWwuaCIK
ICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgiCiAjaW5jbHVkZSAi
dGVzdC9maWVsZF90cmlhbC5oIgotI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxz
LmgiCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCiAjaW5jbHVkZSAicnRjX2Jhc2Uvd2luMzJz
b2NrZXRpbml0LmgiCkBAIC0zMiwxOSArMzEsMjAgQEAKICNpbmNsdWRlICJ0ZXN0L2lvcy90ZXN0
X3N1cHBvcnQuaCIKICNlbmRpZgogCi1ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgInByaW50cyB0
aGlzIG1lc3NhZ2UiKTsKLURFRklORV9zdHJpbmcobG9nLCAiIiwgImxvZ2dpbmcgb3B0aW9ucyB0
byB1c2UiKTsKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2Us
ICJwcmludHMgdGhpcyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhsb2csICIiLCAi
bG9nZ2luZyBvcHRpb25zIHRvIHVzZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgZm9y
Y2VfZmllbGR0cmlhbHMsCiAgICAgIiIsCiAgICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVy
aW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgogICAgICJFLmcuIHJ1
bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZS8i
CiAgICAgIiB3aWxsIGFzc2lnbiB0aGUgZ3JvdXAgRW5hYmxlIHRvIGZpZWxkIHRyaWFsIFdlYlJU
Qy1Gb29GZWF0dXJlLiIpOwogI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLURFRklORV9pbnQoY3J0
X2JyZWFrX2FsbG9jLCAtMSwgIm1lbW9yeSBhbGxvY2F0aW9uIHRvIGJyZWFrIG9uIik7Ci1ERUZJ
TkVfYm9vbChkZWZhdWx0X2Vycm9yX2hhbmRsZXJzLAotICAgICAgICAgICAgZmFsc2UsCi0gICAg
ICAgICAgICAibGVhdmUgdGhlIGRlZmF1bHQgZXhjZXB0aW9uL2RiZyBoYW5kbGVyIGZ1bmN0aW9u
cyBpbiBwbGFjZSIpOworV0VCUlRDX0RFRklORV9pbnQoY3J0X2JyZWFrX2FsbG9jLCAtMSwgIm1l
bW9yeSBhbGxvY2F0aW9uIHRvIGJyZWFrIG9uIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAg
ZGVmYXVsdF9lcnJvcl9oYW5kbGVycywKKyAgICBmYWxzZSwKKyAgICAibGVhdmUgdGhlIGRlZmF1
bHQgZXhjZXB0aW9uL2RiZyBoYW5kbGVyIGZ1bmN0aW9ucyBpbiBwbGFjZSIpOwogCiB2b2lkIFRl
c3RJbnZhbGlkUGFyYW1ldGVySGFuZGxlcihjb25zdCB3Y2hhcl90KiBleHByZXNzaW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogZnVuY3Rpb24sCkBA
IC04MSw3ICs4MSw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICBy
ZXR1cm4gMDsKICAgfQogCi0gIHdlYnJ0Yzo6dGVzdDo6U2V0RXhlY3V0YWJsZVBhdGgoYXJndlsw
XSk7CiAgIHdlYnJ0Yzo6dGVzdDo6VmFsaWRhdGVGaWVsZFRyaWFsc1N0cmluZ09yRGllKEZMQUdf
Zm9yY2VfZmllbGR0cmlhbHMpOwogICAvLyBJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5nIHN0b3Jl
cyB0aGUgY2hhciosIHNvIHRoZSBjaGFyIGFycmF5IG11c3Qgb3V0bGl2ZQogICAvLyB0aGUgYXBw
bGljYXRpb24uCkBAIC0xMTgsNyArMTE3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFy
Z3ZbXSkgewogCiAgIC8vIEluaXRpYWxpemUgU1NMIHdoaWNoIGFyZSB1c2VkIGJ5IHNldmVyYWwg
dGVzdHMuCiAgIHJ0Yzo6SW5pdGlhbGl6ZVNTTCgpOwotICBydGM6OlNTTFN0cmVhbUFkYXB0ZXI6
OmVuYWJsZV90aW1lX2NhbGxiYWNrX2Zvcl90ZXN0aW5nKCk7CisgIHJ0Yzo6U1NMU3RyZWFtQWRh
cHRlcjo6RW5hYmxlVGltZUNhbGxiYWNrRm9yVGVzdGluZygpOwogCiAjaWYgZGVmaW5lZChXRUJS
VENfSU9TKQogICBydGM6OnRlc3Q6OkluaXRUZXN0U3VpdGUoUlVOX0FMTF9URVNUUywgYXJnYywg
YXJndiwgZmFsc2UpOwpAQCAtMTM4LDUgKzEzNywxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciogYXJndltdKSB7CiAgICAgX0NydFNldFJlcG9ydEhvb2syKF9DUlRfUlBUSE9PS19SRU1PVkUs
IFRlc3RDcnRSZXBvcnRIYW5kbGVyKTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChBRERSRVNTX1NB
TklUSVpFUikgfHwgZGVmaW5lZChMRUFLX1NBTklUSVpFUikgfHwgIFwKKyAgICBkZWZpbmVkKE1F
TU9SWV9TQU5JVElaRVIpIHx8IGRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikgfHwgXAorICAgIGRl
ZmluZWQoVU5ERUZJTkVEX1NBTklUSVpFUikKKyAgLy8gV2Ugd2FudCB0aGUgdGVzdCBmbGFnZ2Vk
IGFzIGZhaWxlZCBvbmx5IGZvciBzYW5pdGl6ZXIgZGVmZWN0cywKKyAgLy8gaW4gd2hpY2ggY2Fz
ZSB0aGUgc2FuaXRpemVyIHdpbGwgb3ZlcnJpZGUgZXhpdCBjb2RlIHdpdGggNjYuCisgIHJldHVy
biAwOworI2VuZGlmCisKICAgcmV0dXJuIHJlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3VuaXhmaWxlc3lzdGVtLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5p
eGZpbGVzeXN0ZW0uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyM2MzNGM4Yzk0
M2Y4NzNkOGNiZmFmMTI1ZjVkNzFiODljODUzMGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgInJ0Y19iYXNlL3VuaXhmaWxl
c3lzdGVtLmgiCi0KLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5j
bHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQu
aD4KLQotI2lmIGRlZmluZWQoV0VCUlRDX01BQykgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKLSNp
bmNsdWRlIDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+Ci0jaW5jbHVkZSA8SU9LaXQvSU9D
RkJ1bmRsZS5oPgotI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+Ci0jaW5jbHVkZSAicnRjX2Jhc2Uv
bWFjdXRpbHMuaCIKLSNlbmRpZiAgLy8gV0VCUlRDX01BQyAmJiAhZGVmaW5lZChXRUJSVENfSU9T
KQotCi0jaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpICYmICFkZWZpbmVkKFdFQlJUQ19NQUMpIHx8
IGRlZmluZWQoV0VCUlRDX0lPUykKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBkZWZpbmVk
KFdFQlJUQ19BTkRST0lEKQotI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KLSNlbGlmICFkZWZpbmVk
KF9fbmF0aXZlX2NsaWVudF9fKQotI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+Ci0jZW5kaWYgIC8v
ICAhZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNs
dWRlIDxwd2QuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2VuZGlmICAvLyBXRUJSVENfUE9TSVgg
JiYgIVdFQlJUQ19NQUMgfHwgV0VCUlRDX0lPUwotCi0jaWYgZGVmaW5lZChXRUJSVENfTElOVVgp
ICYmICFkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVk
ZSA8YWxnb3JpdGhtPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSAm
JiAhZGVmaW5lZChfX0dMSUJDX18pCi0jaW5jbHVkZSA8c3lzL3N5c2xpbWl0cy5oPgotI2VuZGlm
Ci0KLSNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9maWxldXRpbHMuaCIKLSNpbmNsdWRlICJydGNf
YmFzZS9wYXRodXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKLSNpbmNsdWRl
ICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgotCi1uYW1lc3BhY2UgcnRjIHsKLQotVW5peEZpbGVz
eXN0ZW06OlVuaXhGaWxlc3lzdGVtKCkge30KLQotVW5peEZpbGVzeXN0ZW06On5Vbml4RmlsZXN5
c3RlbSgpIHt9Ci0KLWJvb2wgVW5peEZpbGVzeXN0ZW06OkRlbGV0ZUZpbGUoY29uc3QgUGF0aG5h
bWUmIGZpbGVuYW1lKSB7Ci0gIFJUQ19MT0coTFNfSU5GTykgPDwgIkRlbGV0aW5nIGZpbGU6IiA8
PCBmaWxlbmFtZS5wYXRobmFtZSgpOwotCi0gIGlmICghSXNGaWxlKGZpbGVuYW1lKSkgewotICAg
IFJUQ19EQ0hFQ0soSXNGaWxlKGZpbGVuYW1lKSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0g
IHJldHVybiA6OnVubGluayhmaWxlbmFtZS5wYXRobmFtZSgpLmNfc3RyKCkpID09IDA7Ci19Ci0K
LWJvb2wgVW5peEZpbGVzeXN0ZW06Ok1vdmVGaWxlKGNvbnN0IFBhdGhuYW1lJiBvbGRfcGF0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhdGhuYW1lJiBuZXdfcGF0aCkg
ewotICBpZiAoIUlzRmlsZShvbGRfcGF0aCkpIHsKLSAgICBSVENfRENIRUNLKElzRmlsZShvbGRf
cGF0aCkpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBSVENfTE9HKExTX1ZFUkJPU0UpIDw8
ICJNb3ZpbmcgIiA8PCBvbGRfcGF0aC5wYXRobmFtZSgpIDw8ICIgdG8gIgotICAgICAgICAgICAg
ICAgICAgICAgIDw8IG5ld19wYXRoLnBhdGhuYW1lKCk7Ci0gIGlmIChyZW5hbWUob2xkX3BhdGgu
cGF0aG5hbWUoKS5jX3N0cigpLCBuZXdfcGF0aC5wYXRobmFtZSgpLmNfc3RyKCkpICE9IDApIHsK
LSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVW5peEZp
bGVzeXN0ZW06OklzRm9sZGVyKGNvbnN0IFBhdGhuYW1lJiBwYXRoKSB7Ci0gIHN0cnVjdCBzdGF0
IHN0OwotICBpZiAoc3RhdChwYXRoLnBhdGhuYW1lKCkuY19zdHIoKSwgJnN0KSA8IDApCi0gICAg
cmV0dXJuIGZhbHNlOwotICByZXR1cm4gU19JU0RJUihzdC5zdF9tb2RlKTsKLX0KLQotYm9vbCBV
bml4RmlsZXN5c3RlbTo6SXNGaWxlKGNvbnN0IFBhdGhuYW1lJiBwYXRobmFtZSkgewotICBzdHJ1
Y3Qgc3RhdCBzdDsKLSAgaW50IHJlcyA9IDo6c3RhdChwYXRobmFtZS5wYXRobmFtZSgpLmNfc3Ry
KCksICZzdCk7Ci0gIC8vIFRyZWF0IHN5bWxpbmtzLCBuYW1lZCBwaXBlcywgZXRjLiBhbGwgYXMg
ZmlsZXMuCi0gIHJldHVybiByZXMgPT0gMCAmJiAhU19JU0RJUihzdC5zdF9tb2RlKTsKLX0KLQot
Ym9vbCBVbml4RmlsZXN5c3RlbTo6R2V0RmlsZVNpemUoY29uc3QgUGF0aG5hbWUmIHBhdGhuYW1l
LCBzaXplX3QqIHNpemUpIHsKLSAgc3RydWN0IHN0YXQgc3Q7Ci0gIGlmICg6OnN0YXQocGF0aG5h
bWUucGF0aG5hbWUoKS5jX3N0cigpLCAmc3QpICE9IDApCi0gICAgcmV0dXJuIGZhbHNlOwotICAq
c2l6ZSA9IHN0LnN0X3NpemU7Ci0gIHJldHVybiB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
cnRjCi0KLSNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQotZXh0ZXJuICJDIiBpbnQgX19h
dHRyaWJ1dGVfXygod2VhaykpCi1saW5rKGNvbnN0IGNoYXIqIG9sZHBhdGgsIGNvbnN0IGNoYXIq
IG5ld3BhdGgpIHsKLSAgZXJybm8gPSBFQUNDRVM7Ci0gIHJldHVybiAtMTsKLX0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X2Jhc2UvdW5peGZpbGVzeXN0ZW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3VuaXhmaWxlc3lzdGVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDcxMWQ3YjNlYTE5MmUxNDljOTExMWEwZDk0YjllOGZkY2VlZGEyNzYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5peGZpbGVzeXN0ZW0uaAorKysg
L2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IDIwMDQgVGhlIFdl
YlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAq
ICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBj
b250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNpZm5kZWYg
UlRDX0JBU0VfVU5JWEZJTEVTWVNURU1fSF8KLSNkZWZpbmUgUlRDX0JBU0VfVU5JWEZJTEVTWVNU
RU1fSF8KLQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCi0jaW5jbHVkZSAicnRjX2Jhc2UvZmls
ZXV0aWxzLmgiCi0KLW5hbWVzcGFjZSBydGMgewotCi1jbGFzcyBVbml4RmlsZXN5c3RlbSA6IHB1
YmxpYyBGaWxlc3lzdGVtSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIFVuaXhGaWxlc3lzdGVtKCk7
Ci0gIH5Vbml4RmlsZXN5c3RlbSgpIG92ZXJyaWRlOwotCi0gIC8vIFRoaXMgd2lsbCBhdHRlbXB0
IHRvIGRlbGV0ZSB0aGUgZmlsZSBsb2NhdGVkIGF0IGZpbGVuYW1lLgotICAvLyBJdCB3aWxsIGZh
aWwgd2l0aCBWRVJJWSBpZiB5b3UgcGFzcyBpdCBhIG5vbi1leGlzdGFudCBmaWxlLCBvciBhIGRp
cmVjdG9yeS4KLSAgYm9vbCBEZWxldGVGaWxlKGNvbnN0IFBhdGhuYW1lJiBmaWxlbmFtZSkgb3Zl
cnJpZGU7Ci0KLSAgLy8gVGhpcyBtb3ZlcyBhIGZpbGUgZnJvbSBvbGRfcGF0aCB0byBuZXdfcGF0
aCwgd2hlcmUgImZpbGUiIGNhbiBiZSBhIHBsYWluCi0gIC8vIGZpbGUgb3IgZGlyZWN0b3J5LCB3
aGljaCB3aWxsIGJlIG1vdmVkIHJlY3Vyc2l2ZWx5LgotICAvLyBSZXR1cm5zIHRydWUgaWYgZnVu
Y3Rpb24gc3VjY2VlZHMuCi0gIGJvb2wgTW92ZUZpbGUoY29uc3QgUGF0aG5hbWUmIG9sZF9wYXRo
LCBjb25zdCBQYXRobmFtZSYgbmV3X3BhdGgpIG92ZXJyaWRlOwotCi0gIC8vIFJldHVybnMgdHJ1
ZSBpZiBhIHBhdGhuYW1lIGlzIGEgZGlyZWN0b3J5Ci0gIGJvb2wgSXNGb2xkZXIoY29uc3QgUGF0
aG5hbWUmIHBhdGhuYW1lKSBvdmVycmlkZTsKLQotICAvLyBSZXR1cm5zIHRydWUgb2YgcGF0aG5h
bWUgcmVwcmVzZW50cyBhbiBleGlzdGluZyBmaWxlCi0gIGJvb2wgSXNGaWxlKGNvbnN0IFBhdGhu
YW1lJiBwYXRobmFtZSkgb3ZlcnJpZGU7Ci0KLSAgYm9vbCBHZXRGaWxlU2l6ZShjb25zdCBQYXRo
bmFtZSYgcGF0aCwgc2l6ZV90KiBzaXplKSBvdmVycmlkZTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFj
ZSBydGMKLQotI2VuZGlmICAvLyBSVENfQkFTRV9VTklYRklMRVNZU1RFTV9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvdmly
dHVhbHNvY2tldF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRfdW5pdHRlc3QuY2MKaW5kZXggZDJiZmY1
NDY4ODM3YmQxNmQ5MzAzODMxYjU4NDM2ZmMzN2FkNzU3Yi4uZDQ0ZjQ2YTY1ZTVjMTQ4M2Q1NWNj
ZGMxMDgyYzNmNTM1ZGZiOWZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldF91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0
dWFsc29ja2V0X3VuaXR0ZXN0LmNjCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RydWN0IFJlY2VpdmVy
IDogcHVibGljIE1lc3NhZ2VIYW5kbGVyLCBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhLAogICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgU29ja2V0QWRkcmVzcyYg
cmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tldFRpbWUmIHBhY2tl
dF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3QmIC8qIHBhY2tldF90
aW1lX3VzICovKSB7CiAgICAgQVNTRVJUX0VRKHNvY2tldC5nZXQoKSwgcyk7CiAgICAgQVNTRVJU
X0dFKHNpemUsIDRVKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRz
ZXJ2ZXIuY2MKaW5kZXggYWU0MGQ3ODg4ZjU1MWJmN2M1YWJjYjg4YmE0YTc3ZjY2YzQwYjc2YS4u
YmZjZTBmNTQ1NDFlOWQxODE2YzZkMTMyYjY2ZTM3Mjk2NDE3MDJhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNv
Y2tldHNlcnZlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNjCkBAIC01MjUsNyArNTI1LDYgQEAg
VmlydHVhbFNvY2tldFNlcnZlcjo6VmlydHVhbFNvY2tldFNlcnZlcigpIDogVmlydHVhbFNvY2tl
dFNlcnZlcihudWxscHRyKSB7fQogCiBWaXJ0dWFsU29ja2V0U2VydmVyOjpWaXJ0dWFsU29ja2V0
U2VydmVyKEZha2VDbG9jayogZmFrZV9jbG9jaykKICAgICA6IGZha2VfY2xvY2tfKGZha2VfY2xv
Y2spLAotICAgICAgd2FrZXVwXygvKm1hbnVhbF9yZXNldD0qL2ZhbHNlLCAvKmluaXRpYWxseV9z
aWduYWxlZD0qL2ZhbHNlKSwKICAgICAgIG1zZ19xdWV1ZV8obnVsbHB0ciksCiAgICAgICBzdG9w
X29uX2lkbGVfKGZhbHNlKSwKICAgICAgIG5leHRfaXB2NF8oa0luaXRpYWxOZXh0SVB2NCksCkBA
IC0xMDI3LDggKzEwMjYsOSBAQCB2b2lkIFZpcnR1YWxTb2NrZXRTZXJ2ZXI6OlVwZGF0ZURlbGF5
RGlzdHJpYnV0aW9uKCkgewogICB9CiB9CiAKKwogc3RhdGljIGRvdWJsZSBOb3JtYWwoZG91Ymxl
IHgsIGRvdWJsZSBtZWFuLCBkb3VibGUgc3RkZGV2KSB7Ci0gIHN0YXRpYyBjb25zdCBkb3VibGUg
UEkgPSA0ICogYXRhbigxLjApOworICBzdGF0aWMgZG91YmxlIFBJID0gNCAqIGF0YW4oMS4wKTsK
ICAgZG91YmxlIGEgPSAoeCAtIG1lYW4pICogKHggLSBtZWFuKSAvICgyICogc3RkZGV2ICogc3Rk
ZGV2KTsKICAgcmV0dXJuIGV4cCgtYSkgLyAoc3RkZGV2ICogc3FydCgyICogUEkpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3dlYWtfcHRyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2Vha19wdHJfdW5pdHRlc3QuY2MKaW5kZXggOTU0MTcxODM0
ZTY3YjI5MDQ0ZTY3NDQ4YmI4OGVmNTI0OWIwNzRmMi4uNjZmMmI0ZGY1YjE4ZmQ4ZjYyOTliNTgz
MzRkNjE5NGMyNWM1NGI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2Vha19wdHJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2Vha19wdHJfdW5p
dHRlc3QuY2MKQEAgLTIwMiw3ICsyMDIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4KIHN0ZDo6dW5p
cXVlX3B0cjxUPiBOZXdPYmplY3RDcmVhdGVkT25UYXNrUXVldWUoKSB7CiAgIHN0ZDo6dW5pcXVl
X3B0cjxUPiBvYmo7CiAgIFRhc2tRdWV1ZSBxdWV1ZSgiTmV3T2JqZWN0Q3JlYXRlZE9uVGFza1F1
ZXVlIik7Ci0gIEV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIEV2ZW50IGV2ZW50OwogICBx
dWV1ZS5Qb3N0VGFzayhbJmV2ZW50LCAmb2JqXSB7CiAgICAgb2JqLnJlc2V0KG5ldyBUKCkpOwog
ICAgIGV2ZW50LlNldCgpOwpAQCAtMjI5LDcgKzIyOSw3IEBAIFRFU1QoV2Vha1B0clRlc3QsIFdl
YWtQdHJJbml0aWF0ZUFuZFVzZU9uRGlmZmVyZW50VGhyZWFkcykgewogICAvLyBDcmVhdGUgd2Vh
ayBwdHIgb24gbWFpbiB0aHJlYWQKICAgV2Vha1B0cjxUYXJnZXQ+IHdlYWtfcHRyID0gdGFyZ2V0
LT5mYWN0b3J5LkdldFdlYWtQdHIoKTsKICAgcnRjOjpUYXNrUXVldWUgcXVldWUoInF1ZXVlIik7
Ci0gIHJ0Yzo6RXZlbnQgZG9uZShmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGRvbmU7CiAg
IHF1ZXVlLlBvc3RUYXNrKFsmXSB7CiAgICAgLy8gRGVyZWZlcmVuY2UgYW5kIGludmFsaWRlIHdl
YWtfcHRyIG9uIGFub3RoZXIgdGhyZWFkLgogICAgIEVYUEVDVF9FUSh3ZWFrX3B0ci5nZXQoKSwg
dGFyZ2V0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dpbjMyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2luMzIuY2MKaW5kZXggZDgxZDY4NWYxNmMwZjI4
YzBkY2QzZThhNzVlYzdjOWViZGE4ZTAxMC4uZTM0ODJlMzIzODQ0OGY2ZTVmMjYxNGU0NjU5OTU2
YzhiMmE1ZDJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvd2luMzIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2luMzIuY2MKQEAgLTcyLDkgKzcyLDkgQEAgY29u
c3QgY2hhciogaW5ldF9udG9wX3Y0KGNvbnN0IHZvaWQqIHNyYywgY2hhciogZHN0LCBzb2NrbGVu
X3Qgc2l6ZSkgewogICB9CiAgIGNvbnN0IHN0cnVjdCBpbl9hZGRyKiBhc19pbl9hZGRyID0KICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IGluX2FkZHIqPihzcmMpOwotICBydGM6
OnNwcmludGZuKGRzdCwgc2l6ZSwgIiVkLiVkLiVkLiVkIiwgYXNfaW5fYWRkci0+U191bi5TX3Vu
X2Iuc19iMSwKLSAgICAgICAgICAgICAgICBhc19pbl9hZGRyLT5TX3VuLlNfdW5fYi5zX2IyLCBh
c19pbl9hZGRyLT5TX3VuLlNfdW5fYi5zX2IzLAotICAgICAgICAgICAgICAgIGFzX2luX2FkZHIt
PlNfdW4uU191bl9iLnNfYjQpOworICBzbnByaW50Zihkc3QsIHNpemUsICIlZC4lZC4lZC4lZCIs
IGFzX2luX2FkZHItPlNfdW4uU191bl9iLnNfYjEsCisgICAgICAgICAgIGFzX2luX2FkZHItPlNf
dW4uU191bl9iLnNfYjIsIGFzX2luX2FkZHItPlNfdW4uU191bl9iLnNfYjMsCisgICAgICAgICAg
IGFzX2luX2FkZHItPlNfdW4uU191bl9iLnNfYjQpOwogICByZXR1cm4gZHN0OwogfQogCkBAIC0x
MjcsNyArMTI3LDcgQEAgY29uc3QgY2hhciogaW5ldF9udG9wX3Y2KGNvbnN0IHZvaWQqIHNyYywg
Y2hhciogZHN0LCBzb2NrbGVuX3Qgc2l6ZSkgewogICAgICpjdXJzb3IrKyA9ICc6JzsKICAgICAq
Y3Vyc29yKysgPSAnOic7CiAgICAgaWYgKG1heHBvcyA9PSA0KSB7Ci0gICAgICBjdXJzb3IgKz0g
cnRjOjpzcHJpbnRmbihjdXJzb3IsIElORVQ2X0FERFJTVFJMRU4gLSAyLCAiZmZmZjoiKTsKKyAg
ICAgIGN1cnNvciArPSBzbnByaW50ZihjdXJzb3IsIElORVQ2X0FERFJTVFJMRU4gLSAyLCAiZmZm
ZjoiKTsKICAgICB9CiAgICAgY29uc3Qgc3RydWN0IGluX2FkZHIqIGFzX3Y0ID0KICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3QgaW5fYWRkcio+KCYoYXNfc2hvcnRzWzZdKSk7
CkBAIC0xMzYsOCArMTM2LDggQEAgY29uc3QgY2hhciogaW5ldF9udG9wX3Y2KGNvbnN0IHZvaWQq
IHNyYywgY2hhciogZHN0LCBzb2NrbGVuX3Qgc2l6ZSkgewogICB9IGVsc2UgewogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgcnVuX2FycmF5X3NpemU7ICsraSkgewogICAgICAgaWYgKHJ1bnBvc1tp
XSA9PSAtMSkgewotICAgICAgICBjdXJzb3IgKz0gcnRjOjpzcHJpbnRmbihjdXJzb3IsIElORVQ2
X0FERFJTVFJMRU4gLSAoY3Vyc29yIC0gZHN0KSwgIiV4IiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV0d29ya1RvSG9zdDE2KGFzX3Nob3J0c1tpXSkpOworICAgICAgICBjdXJz
b3IgKz0gc25wcmludGYoY3Vyc29yLCBJTkVUNl9BRERSU1RSTEVOIC0gKGN1cnNvciAtIGRzdCks
ICIleCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXR3b3JrVG9Ib3N0MTYoYXNfc2hv
cnRzW2ldKSk7CiAgICAgICAgIGlmIChpICE9IDcgJiYgcnVucG9zW2kgKyAxXSAhPSAxKSB7CiAg
ICAgICAgICAgKmN1cnNvcisrID0gJzonOwogICAgICAgICB9CkBAIC0yMjQsOCArMjI0LDggQEAg
aW50IGluZXRfcHRvbl92Nihjb25zdCBjaGFyKiBzcmMsIHZvaWQqIGRzdCkgewogICAgICAgKihy
ZWFkY3Vyc29yICsgMikgIT0gMCkgewogICAgIC8vIENoZWNrIGZvciBwZXJpb2RzLCB3aGljaCB3
ZSdsbCB0YWtlIGFzIGEgc2lnbiBvZiB2NCBhZGRyZXNzZXMuCiAgICAgY29uc3QgY2hhciogYWRk
cnN0YXJ0ID0gcmVhZGN1cnNvciArIDI7Ci0gICAgaWYgKHJ0Yzo6c3RyY2hyKGFkZHJzdGFydCwg
Ii4iKSkgewotICAgICAgY29uc3QgY2hhciogY29sb24gPSBydGM6OnN0cmNocihhZGRyc3RhcnQs
ICI6OiIpOworICAgIGlmIChzdHJjaHIoYWRkcnN0YXJ0LCAnLicpKSB7CisgICAgICBjb25zdCBj
aGFyKiBjb2xvbiA9IHN0cmNocihhZGRyc3RhcnQsICc6Jyk7CiAgICAgICBpZiAoY29sb24pIHsK
ICAgICAgICAgdWludDE2X3QgYV9zaG9ydDsKICAgICAgICAgaW50IGJ5dGVzcmVhZCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS93aW4zMmZpbGVzeXN0ZW0uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMmZpbGVzeXN0ZW0uY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGI1MDBlNWU2MjliOGE2ZmM1MDdhNjIyZmZhN2VkNWQ5MmM2Y2Q5MzkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvd2luMzJmaWxlc3lzdGVtLmNj
CisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAwNCBU
aGUgV2ViUlRDIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAg
QWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhl
IEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2lu
Y2x1ZGUgInJ0Y19iYXNlL3dpbjMyZmlsZXN5c3RlbS5oIgotCi0jaW5jbHVkZSA8c2hlbGxhcGku
aD4KLSNpbmNsdWRlIDxzaGxvYmouaD4KLSNpbmNsdWRlIDx0Y2hhci5oPgotI2luY2x1ZGUgInJ0
Y19iYXNlL3dpbjMyLmgiCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJydGNfYmFz
ZS9hcnJheXNpemUuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLSNpbmNsdWRlICJy
dGNfYmFzZS9maWxldXRpbHMuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9wYXRodXRpbHMuaCIKLSNp
bmNsdWRlICJydGNfYmFzZS9zdHJlYW0uaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGls
cy5oIgotCi0vLyBJbiBzZXZlcmFsIHBsYWNlcyBpbiB0aGlzIGZpbGUsIHdlIHRlc3QgdGhlIGlu
dGVncml0eSBsZXZlbCBvZiB0aGUgcHJvY2VzcwotLy8gYmVmb3JlIGNhbGxpbmcgR2V0TG9uZ1Bh
dGhOYW1lLiBXZSBkbyB0aGlzIGJlY2F1c2UgY2FsbGluZyBHZXRMb25nUGF0aE5hbWUKLS8vIHdo
ZW4gcnVubmluZyB1bmRlciBwcm90ZWN0ZWQgbW9kZSBJRSAoYSBsb3cgaW50ZWdyaXR5IHByb2Nl
c3MpIGNhbiByZXN1bHQgaW4KLS8vIGEgdmlydHVhbGl6ZWQgcGF0aCBiZWluZyByZXR1cm5lZCwg
d2hpY2ggaXMgd3JvbmcgaWYgeW91IG9ubHkgcGxhbiB0byByZWFkLgotLy8gVE9ETzogV2FpdGlu
ZyB0byBoZWFyIGJhY2sgZnJvbSBJRSB0ZWFtIG9uIHdoZXRoZXIgdGhpcyBpcyB0aGUKLS8vIGJl
c3QgYXBwcm9hY2g7IElFSXNQcm90ZWN0ZWRNb2RlUHJvY2VzcyBpcyBhbm90aGVyIHBvc3NpYmxl
IHNvbHV0aW9uLgotCi1uYW1lc3BhY2UgcnRjIHsKLQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06OkRl
bGV0ZUZpbGUoY29uc3QgUGF0aG5hbWUmIGZpbGVuYW1lKSB7Ci0gIFJUQ19MT0coTFNfSU5GTykg
PDwgIkRlbGV0aW5nIGZpbGUgIiA8PCBmaWxlbmFtZS5wYXRobmFtZSgpOwotICBpZiAoIUlzRmls
ZShmaWxlbmFtZSkpIHsKLSAgICBSVENfRENIRUNLKElzRmlsZShmaWxlbmFtZSkpOwotICAgIHJl
dHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4gOjpEZWxldGVGaWxlKFRvVXRmMTYoZmlsZW5hbWUu
cGF0aG5hbWUoKSkuY19zdHIoKSkgIT0gMDsKLX0KLQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06Ok1v
dmVGaWxlKGNvbnN0IFBhdGhuYW1lJiBvbGRfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBQYXRobmFtZSYgbmV3X3BhdGgpIHsKLSAgaWYgKCFJc0ZpbGUob2xkX3Bh
dGgpKSB7Ci0gICAgUlRDX0RDSEVDSyhJc0ZpbGUob2xkX3BhdGgpKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci0gIH0KLSAgUlRDX0xPRyhMU19JTkZPKSA8PCAiTW92aW5nICIgPDwgb2xkX3BhdGgucGF0
aG5hbWUoKSA8PCAiIHRvICIKLSAgICAgICAgICAgICAgICAgICA8PCBuZXdfcGF0aC5wYXRobmFt
ZSgpOwotICByZXR1cm4gOjpNb3ZlRmlsZShUb1V0ZjE2KG9sZF9wYXRoLnBhdGhuYW1lKCkpLmNf
c3RyKCksCi0gICAgICAgICAgICAgICAgICAgIFRvVXRmMTYobmV3X3BhdGgucGF0aG5hbWUoKSku
Y19zdHIoKSkgIT0gMDsKLX0KLQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06OklzRm9sZGVyKGNvbnN0
IFBhdGhuYW1lJiBwYXRoKSB7Ci0gIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgZGF0YSA9IHsw
fTsKLSAgaWYgKDAgPT0gOjpHZXRGaWxlQXR0cmlidXRlc0V4KFRvVXRmMTYocGF0aC5wYXRobmFt
ZSgpKS5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmlsZUV4
SW5mb1N0YW5kYXJkLCAmZGF0YSkpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gKGRhdGEu
ZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgPT0KLSAgICAgICAg
IEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWTsKLX0KLQotYm9vbCBXaW4zMkZpbGVzeXN0ZW06Oklz
RmlsZShjb25zdCBQYXRobmFtZSYgcGF0aCkgewotICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRB
IGRhdGEgPSB7MH07Ci0gIGlmICgwID09IDo6R2V0RmlsZUF0dHJpYnV0ZXNFeChUb1V0ZjE2KHBh
dGgucGF0aG5hbWUoKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmRhdGEpKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0
dXJuIChkYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpID09
IDA7Ci19Ci0KLWJvb2wgV2luMzJGaWxlc3lzdGVtOjpHZXRGaWxlU2l6ZShjb25zdCBQYXRobmFt
ZSYgcGF0aG5hbWUsIHNpemVfdCogc2l6ZSkgewotICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRB
IGRhdGEgPSB7MH07Ci0gIGlmICg6OkdldEZpbGVBdHRyaWJ1dGVzRXgoVG9VdGYxNihwYXRobmFt
ZS5wYXRobmFtZSgpKS5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEZp
bGVFeEluZm9TdGFuZGFyZCwgJmRhdGEpID09IDApCi0gICAgcmV0dXJuIGZhbHNlOwotICAqc2l6
ZSA9IGRhdGEubkZpbGVTaXplTG93OwotICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAgLy8gbmFtZXNw
YWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvd2luMzJmaWxlc3lzdGVtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMmZpbGVzeXN0ZW0uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZDI2NzQxZTY3Yjg3MDQ4ZTE4MWZjZjAxMTMyMDhhZjVmYWQ4
NzNkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMmZpbGVz
eXN0ZW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IDIwMDQgVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFU
RU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICov
Ci0KLSNpZm5kZWYgUlRDX0JBU0VfV0lOMzJGSUxFU1lTVEVNX0hfCi0jZGVmaW5lIFJUQ19CQVNF
X1dJTjMyRklMRVNZU1RFTV9IXwotCi0jaW5jbHVkZSAiZmlsZXV0aWxzLmgiCi0KLW5hbWVzcGFj
ZSBydGMgewotCi1jbGFzcyBXaW4zMkZpbGVzeXN0ZW0gOiBwdWJsaWMgRmlsZXN5c3RlbUludGVy
ZmFjZSB7Ci0gcHVibGljOgotICAvLyBUaGlzIHdpbGwgYXR0ZW1wdCB0byBkZWxldGUgdGhlIHBh
dGggbG9jYXRlZCBhdCBmaWxlbmFtZS4KLSAgLy8gSWYgdGhlIHBhdGggcG9pbnRzIHRvIGEgZm9s
ZGVyLCBpdCB3aWxsIGZhaWwgd2l0aCBWRVJJRlkKLSAgYm9vbCBEZWxldGVGaWxlKGNvbnN0IFBh
dGhuYW1lJiBmaWxlbmFtZSkgb3ZlcnJpZGU7Ci0KLSAgLy8gVGhpcyBtb3ZlcyBhIGZpbGUgZnJv
bSBvbGRfcGF0aCB0byBuZXdfcGF0aC4gSWYgdGhlIG5ldyBwYXRoIGlzIG9uIGEKLSAgLy8gZGlm
ZmVyZW50IHZvbHVtZSB0aGFuIHRoZSBvbGQsIGl0IHdpbGwgYXR0ZW1wdCB0byBjb3B5IGFuZCB0
aGVuIGRlbGV0ZQotICAvLyB0aGUgZm9sZGVyCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZmls
ZSBpcyBzdWNjZXNzZnVsbHkgbW92ZWQKLSAgYm9vbCBNb3ZlRmlsZShjb25zdCBQYXRobmFtZSYg
b2xkX3BhdGgsIGNvbnN0IFBhdGhuYW1lJiBuZXdfcGF0aCkgb3ZlcnJpZGU7Ci0KLSAgLy8gUmV0
dXJucyB0cnVlIGlmIGEgcGF0aG5hbWUgaXMgYSBkaXJlY3RvcnkKLSAgYm9vbCBJc0ZvbGRlcihj
b25zdCBQYXRobmFtZSYgcGF0aG5hbWUpIG92ZXJyaWRlOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBp
ZiBhIGZpbGUgZXhpc3RzIGF0IHBhdGgKLSAgYm9vbCBJc0ZpbGUoY29uc3QgUGF0aG5hbWUmIHBh
dGgpIG92ZXJyaWRlOwotCi0gIGJvb2wgR2V0RmlsZVNpemUoY29uc3QgUGF0aG5hbWUmIHBhdGgs
IHNpemVfdCogc2l6ZSkgb3ZlcnJpZGU7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgcnRjCi0KLSNl
bmRpZiAgLy8gUlRDX0JBU0VfV0lOMzJGSUxFU1lTVEVNX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS93aW4zMnNvY2tldHNl
cnZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3dpbjMyc29ja2V0c2VydmVyLmNjCmluZGV4IGNhYjc1MWE2MzE3M2FiZmRjOTc5ZmVjYTJh
MzgwNmNkNzYxZmY3MjMuLjIzMGYzZWQ0NmY5MDU3ZThlZDY3ODhlZTYyODlmZjZlYWNhZTE4NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3dpbjMyc29ja2V0c2VydmVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3dpbjMyc29ja2V0c2VydmVyLmNjCkBAIC0xNiw2
ICsxNiw3IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvYnl0ZW9yZGVyLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3RpbWV1dGlscy5oIiAgLy8gRm9yIFRpbWUsIFRpbWVTaW5jZQogI2luY2x1ZGUg
InJ0Y19iYXNlL3dpbjMyd2luZG93LmgiCiAKIG5hbWVzcGFjZSBydGMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvemVyb19t
ZW1vcnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3plcm9fbWVtb3J5LmgKaW5kZXggY2I0NjQ2YzFmZTRiMzU5ZjcxYWNiYTdjZDA4MDhmNDk0
ZTQ2MzRjOS4uZjY5N2JjYmQ2YjgxYzc2MmIxNTY3YmJjZTZjNTYxNWYyNWUzMmU4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
emVyb19tZW1vcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS96ZXJvX21lbW9yeS5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaWZuZGVmIFJU
Q19CQVNFX1pFUk9fTUVNT1JZX0hfCiAjZGVmaW5lIFJUQ19CQVNFX1pFUk9fTUVNT1JZX0hfCiAK
KyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAogI2luY2x1ZGUg
ImFwaS9hcnJheV92aWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvQlVJTEQuZ24KaW5kZXggMjUyYWVjNDU0
N2Y0M2ExMmNkMWFlNTkwOTA4NDA0YzYxZDg2ZjczMi4uNTIxNGJjM2JkMGYyNGZiZjk0MmRjYmQw
YjRhOTJhZjdlMzA4MTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9CVUlMRC5nbgpAQCAtMjUsOSArMjUs
NiBAQCBncm91cCgicnRjX3Rvb2xzIikgewogICAgICAgIjpwc25yX3NzaW1fYW5hbHl6ZXIiLAog
ICAgICAgIjpyZ2JhX3RvX2k0MjBfY29udmVydGVyIiwKICAgICBdCi0gICAgaWYgKHJ0Y19pbmNs
dWRlX2ludGVybmFsX2F1ZGlvX2RldmljZSkgewotICAgICAgZGVwcyArPSBbICI6Zm9yY2VfbWlj
X3ZvbHVtZV9tYXgiIF0KLSAgICB9CiAgICAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAg
ICAgIGRlcHMgKz0gWyAiOmNoYXJ0X3Byb3RvIiBdCiAgICAgfQpAQCAtMzksOCArMzYsMTAgQEAg
Z3JvdXAoInJ0Y190b29scyIpIHsKICAgICAgICI6dG9vbHNfdW5pdHRlc3RzIiwKICAgICBdCiAg
ICAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKKyAgICAgIGlmICghYnVpbGRfd2l0aF9jaHJv
bWl1bSkgeworICAgICAgICBkZXBzICs9IFsgIjpldmVudF9sb2dfdmlzdWFsaXplciIgXQorICAg
ICAgfQogICAgICAgZGVwcyArPSBbCi0gICAgICAgICI6ZXZlbnRfbG9nX3Zpc3VhbGl6ZXIiLAog
ICAgICAgICAiOnJ0cF9hbmFseXplciIsCiAgICAgICAgICI6dW5wYWNrX2FlY2R1bXAiLAogICAg
ICAgICAibmV0d29ya190ZXN0ZXIiLApAQCAtODksNiArODgsMTIgQEAgcnRjX3N0YXRpY19saWJy
YXJ5KCJ2aWRlb19maWxlX3dyaXRlciIpIHsKIAogcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlb19x
dWFsaXR5X2FuYWx5c2lzIikgewogICBzb3VyY2VzID0gWworICAgICJmcmFtZV9hbmFseXplci9s
aW5lYXJfbGVhc3Rfc3F1YXJlcy5jYyIsCisgICAgImZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFz
dF9zcXVhcmVzLmgiLAorICAgICJmcmFtZV9hbmFseXplci92aWRlb19jb2xvcl9hbGlnbmVyLmNj
IiwKKyAgICAiZnJhbWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5oIiwKKyAgICAiZnJh
bWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lci5jYyIsCisgICAgImZyYW1lX2FuYWx5
emVyL3ZpZGVvX2dlb21ldHJ5X2FsaWduZXIuaCIsCiAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVv
X3F1YWxpdHlfYW5hbHlzaXMuY2MiLAogICAgICJmcmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5
X2FuYWx5c2lzLmgiLAogICAgICJmcmFtZV9hbmFseXplci92aWRlb190ZW1wb3JhbF9hbGlnbmVy
LmNjIiwKQEAgLTk2LDYgKzEwMSw4IEBAIHJ0Y19zdGF0aWNfbGlicmFyeSgidmlkZW9fcXVhbGl0
eV9hbmFseXNpcyIpIHsKICAgXQogICBkZXBzID0gWwogICAgICI6dmlkZW9fZmlsZV9yZWFkZXIi
LAorICAgICIuLi9hcGk6YXJyYXlfdmlldyIsCisgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFt
ZSIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKICAgICAiLi4vY29tbW9u
X3ZpZGVvIiwKICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKQEAgLTIxMSwyMCArMjE4LDYgQEAg
aWYgKCFidWlsZF93aXRoX2Nocm9taXVtKSB7CiAgICAgXQogICB9CiAKLSAgIyBJdCBkb2Vzbid0
IG1ha2Ugc2Vuc2UgdG8gYnVpbGQgdGhpcyB0b29sIHdpdGhvdXQgdGhlIEFETSBlbmFibGVkLgot
ICBpZiAocnRjX2luY2x1ZGVfaW50ZXJuYWxfYXVkaW9fZGV2aWNlKSB7Ci0gICAgcnRjX2V4ZWN1
dGFibGUoImZvcmNlX21pY192b2x1bWVfbWF4IikgewotICAgICAgc291cmNlcyA9IFsKLSAgICAg
ICAgImZvcmNlX21pY192b2x1bWVfbWF4L2ZvcmNlX21pY192b2x1bWVfbWF4LmNjIiwKLSAgICAg
IF0KLQotICAgICAgZGVwcyA9IFsKLSAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlIiwK
LSAgICAgICAgIi4uL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZV9pbXBsIiwKLSAg
ICAgIF0KLSAgICB9Ci0gIH0KLQogICBpZiAocnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgIHBy
b3RvX2xpYnJhcnkoImNoYXJ0X3Byb3RvIikgewogICAgICAgc291cmNlcyA9IFsKQEAgLTI3Miwx
MCArMjY1LDEzIEBAIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogCiAgICAgICAgICMgVE9E
Tyhrd2liZXJnKTogUmVtb3ZlIHRoaXMgZGVwZW5kZW5jeS4KICAgICAgICAgIi4uL2FwaS9hdWRp
b19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCisgICAgICAgICIuLi9hcGkvdHJhbnNwb3J0Omdv
b2dfY2MiLAogICAgICAgICAiLi4vbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIiLAogICAg
ICAgICAiLi4vbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYzpkZWxheV9iYXNl
ZF9id2UiLAogICAgICAgICAiLi4vbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yzplc3RpbWF0b3JzIiwKKyAgICAgICAgIi4uL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L3J0cDp0cmFuc3BvcnRfZmVlZGJhY2siLAogICAgICAgICAiLi4vbW9kdWxlcy9wYWNpbmciLAor
ICAgICAgICAiLi4vbW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IiLAogICAgICAgICAi
Li4vbW9kdWxlcy9ydHBfcnRjcCIsCiAgICAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnkiLAogICAgICAgXQpAQCAtMjg0LDcgKzI4MCw3IEBAIGlmICghYnVpbGRfd2l0
aF9jaHJvbWl1bSkgewogfQogCiBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKLSAgaWYgKHJ0Y19l
bmFibGVfcHJvdG9idWYpIHsKKyAgaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYgJiYgIWJ1aWxkX3dp
dGhfY2hyb21pdW0pIHsKICAgICBydGNfZXhlY3V0YWJsZSgiZXZlbnRfbG9nX3Zpc3VhbGl6ZXIi
KSB7CiAgICAgICB0ZXN0b25seSA9IHRydWUKICAgICAgIHNvdXJjZXMgPSBbCkBAIC0zNDcsNyAr
MzQzLDEwIEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgIHRlc3Rvbmx5ID0gdHJ1ZQog
CiAgICAgc291cmNlcyA9IFsKKyAgICAgICJmcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1
YXJlc191bml0dGVzdC5jYyIsCiAgICAgICAiZnJhbWVfYW5hbHl6ZXIvcmVmZXJlbmNlX2xlc3Nf
dmlkZW9fYW5hbHlzaXNfdW5pdHRlc3QuY2MiLAorICAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVv
X2NvbG9yX2FsaWduZXJfdW5pdHRlc3QuY2MiLAorICAgICAgImZyYW1lX2FuYWx5emVyL3ZpZGVv
X2dlb21ldHJ5X2FsaWduZXJfdW5pdHRlc3QuY2MiLAogICAgICAgImZyYW1lX2FuYWx5emVyL3Zp
ZGVvX3F1YWxpdHlfYW5hbHlzaXNfdW5pdHRlc3QuY2MiLAogICAgICAgImZyYW1lX2FuYWx5emVy
L3ZpZGVvX3RlbXBvcmFsX2FsaWduZXJfdW5pdHRlc3QuY2MiLAogICAgICAgImZyYW1lX2VkaXRp
bmcvZnJhbWVfZWRpdGluZ191bml0dGVzdC5jYyIsCkBAIC0zNjQsOCArMzYzLDYgQEAgaWYgKHJ0
Y19pbmNsdWRlX3Rlc3RzKSB7CiAKICAgICBkZXBzID0gWwogICAgICAgIjpjb21tYW5kX2xpbmVf
cGFyc2VyIiwKLSAgICAgICI6ZnJhbWVfZWRpdGluZ19saWIiLAotICAgICAgIjpyZWZlcmVuY2Vf
bGVzc192aWRlb19hbmFseXNpc19saWIiLAogICAgICAgIjp2aWRlb19maWxlX3JlYWRlciIsCiAg
ICAgICAiOnZpZGVvX2ZpbGVfd3JpdGVyIiwKICAgICAgICI6dmlkZW9fcXVhbGl0eV9hbmFseXNp
cyIsCkBAIC0zNzQsMTAgKzM3MSwxOSBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAg
ICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICAgIi4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAg
ICIuLi90ZXN0OnRlc3RfbWFpbiIsCisgICAgICAiLi4vdGVzdDp0ZXN0X3N1cHBvcnQiLAogICAg
ICAgIi8vdGVzdGluZy9ndGVzdCIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fi
c2wvbWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2xpYnl1diIsCiAgICAgXQogCisgICAg
aWYgKCFidWlsZF93aXRoX2Nocm9taXVtKSB7CisgICAgICBkZXBzICs9IFsKKyAgICAgICAgIjpm
cmFtZV9lZGl0aW5nX2xpYiIsCisgICAgICAgICI6cmVmZXJlbmNlX2xlc3NfdmlkZW9fYW5hbHlz
aXNfbGliIiwKKyAgICAgIF0KKyAgICB9CisKICAgICBpZiAocnRjX2VuYWJsZV9wcm90b2J1Zikg
ewogICAgICAgZGVwcyArPSBbICJuZXR3b3JrX3Rlc3RlcjpuZXR3b3JrX3Rlc3Rlcl91bml0dGVz
dHMiIF0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvREVQUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y190b29scy9ERVBTCmluZGV4IGQ5YjE2MmNkMTVmYjJjNzA0NTk3YmFh
ZDFhYTIwZjRmZDNiODkyY2UuLjQwMTVhZTI2NWFjOGU0OTIwODc3NGU3Yjk2YmIxZmFiYWI4NGQ1
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y190b29scy9ERVBTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y190b29scy9ERVBTCkBAIC03LDYgKzcsNyBAQCBpbmNsdWRlX3J1bGVzID0gWwog
ICAiK21vZHVsZXMvYXVkaW9fY29kaW5nL25ldGVxL3Rvb2xzIiwKICAgIittb2R1bGVzL2F1ZGlv
X3Byb2Nlc3NpbmciLAogICAiK21vZHVsZXMvYml0cmF0ZV9jb250cm9sbGVyIiwKKyAgIittb2R1
bGVzL3JlbW90ZV9iaXRyYXRlX2VzdGltYXRvciIsCiAgICIrbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIiLAogICAiK21vZHVsZXMvcGFjaW5nIiwKICAgIittb2R1bGVzL3J0cF9ydGNwIiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y190b29scy9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfdG9vbHMvT1dORVJTCmluZGV4IGMxYjg3YzliZGNhMzdlMDg4MWQwM2JjNjgxYjMwZTdi
ZTc4NjcwYjguLjc3Mzg1ZmNkMzE2MTc3YTdjMWM1NjU4NGUxYjE0OTIzMDVhZGFlNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29s
cy9PV05FUlMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX3Rvb2xzL09XTkVSUwpAQCAtMywzICszLDYgQEAgcGVyLWZpbGUgQlVJTEQuZ249KgogcGhv
Z2x1bmRAd2VicnRjLm9yZwogb3ByeXBpbkB3ZWJydGMub3JnCiBtYm9uYWRlaUB3ZWJydGMub3Jn
CisKKyMgRm9yIHZpZGVvIGFuYWx5c2lzIHRvb2xzCittYWdqZWRAd2VicnRjLm9yZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xz
L2FnYy9hY3Rpdml0eV9tZXRyaWMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYWdjL2FjdGl2aXR5X21ldHJpYy5jYwppbmRleCBiNGVkM2Zh
Y2IzNTliNWE4MWJhODNiM2Q0ZTUyZmNhNzUzNGNkM2ZhLi45YjIyNzZmMTZmMWY1ZTI3NTM2Zjk1
OGQ5ZDllOTcyZjg1OTllZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYWdjL2FjdGl2aXR5X21ldHJpYy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYWdjL2Fj
dGl2aXR5X21ldHJpYy5jYwpAQCAtMzAsMzIgKzMwLDM0IEBACiBzdGF0aWMgY29uc3QgaW50IGtB
Z2NBbmFsV2luZG93U2FtcGxlcyA9IDEwMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBrRGVmYXVsdEFj
dGl2aXR5VGhyZXNob2xkID0gMC4zZjsKIAotREVGSU5FX2Jvb2woc3RhbmRhbG9uZV92YWQsIHRy
dWUsICJlbmFibGUgc3RhbmQtYWxvbmUgVkFEIik7Ci1ERUZJTkVfc3RyaW5nKHRydWVfdmFkLAot
ICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIm5hbWUgb2YgYSBmaWxlIGNvbnRhaW5p
bmcgdHJ1ZSBWQUQgaW4gJ2ludCciCi0gICAgICAgICAgICAgICIgZm9ybWF0Iik7Ci1ERUZJTkVf
c3RyaW5nKHZpZGVvX3ZhZCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJuYW1l
IG9mIGEgZmlsZSBjb250YWluaW5nIHZpZGVvIFZBRCAoYWN0aXZpdHkiCi0gICAgICAgICAgICAg
ICIgcHJvYmFiaWxpdGllcykgaW4gZG91YmxlIGZvcm1hdC4gT25lIGFjdGl2aXR5IHBlciAxMG1z
IGlzIgotICAgICAgICAgICAgICAiIHJlcXVpcmVkLiBJZiBubyBmaWxlIGlzIGdpdmVuIHRoZSB2
aWRlbyBpbmZvcm1hdGlvbiBpcyBub3QiCi0gICAgICAgICAgICAgICIgaW5jb3Jwb3JhdGVkLiBO
ZWdhdGl2ZSBhY3Rpdml0eSBpcyBpbnRlcnByZXRlZCBhcyB2aWRlbyBpcyIKLSAgICAgICAgICAg
ICAgIiBub3QgYWRhcHRlZCBhbmQgdGhlIHN0YXRpc3RpY3MgYXJlIG5vdCBjb21wdXRlZCBkdXJp
bmciCi0gICAgICAgICAgICAgICIgdGhlIGxlYXJuaW5nIHBoYXNlLiBOb3RlIHRoYXQgdGhlIG5l
Z2F0aXZlIHZpZGVvIGFjdGl2aXRpZXMiCi0gICAgICAgICAgICAgICIgYXJlIE9OTFkgYWxsb3dl
ZCBhdCB0aGUgYmVnaW5uaW5nLiIpOwotREVGSU5FX3N0cmluZyhyZXN1bHQsCi0gICAgICAgICAg
ICAgICIiLAotICAgICAgICAgICAgICAibmFtZSBvZiBhIGZpbGUgdG8gd3JpdGUgdGhlIHJlc3Vs
dHMuIFRoZSByZXN1bHRzIgotICAgICAgICAgICAgICAiIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhl
IGVuZCBvZiB0aGUgZmlsZS4gVGhpcyBpcyBvcHRpb25hbC4iKTsKLURFRklORV9zdHJpbmcoYXVk
aW9fY29udGVudCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJuYW1lIG9mIGEg
ZmlsZSB3aGVyZSBhdWRpbyBjb250ZW50IGlzIHdyaXR0ZW4iCi0gICAgICAgICAgICAgICIgdG8s
IGluIGRvdWJsZSBmb3JtYXQuIik7Ci1ERUZJTkVfZmxvYXQoYWN0aXZpdHlfdGhyZXNob2xkLAot
ICAgICAgICAgICAgIGtEZWZhdWx0QWN0aXZpdHlUaHJlc2hvbGQsCi0gICAgICAgICAgICAgIkFj
dGl2aXR5IHRocmVzaG9sZCIpOwotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhp
cyBtZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2Jvb2woc3RhbmRhbG9uZV92YWQsIHRydWUsICJl
bmFibGUgc3RhbmQtYWxvbmUgVkFEIik7CitXRUJSVENfREVGSU5FX3N0cmluZyh0cnVlX3ZhZCwK
KyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIm5hbWUgb2Yg
YSBmaWxlIGNvbnRhaW5pbmcgdHJ1ZSBWQUQgaW4gJ2ludCciCisgICAgICAgICAgICAgICAgICAg
ICAiIGZvcm1hdCIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgdmlkZW9fdmFkLAorICAg
ICIiLAorICAgICJuYW1lIG9mIGEgZmlsZSBjb250YWluaW5nIHZpZGVvIFZBRCAoYWN0aXZpdHki
CisgICAgIiBwcm9iYWJpbGl0aWVzKSBpbiBkb3VibGUgZm9ybWF0LiBPbmUgYWN0aXZpdHkgcGVy
IDEwbXMgaXMiCisgICAgIiByZXF1aXJlZC4gSWYgbm8gZmlsZSBpcyBnaXZlbiB0aGUgdmlkZW8g
aW5mb3JtYXRpb24gaXMgbm90IgorICAgICIgaW5jb3Jwb3JhdGVkLiBOZWdhdGl2ZSBhY3Rpdml0
eSBpcyBpbnRlcnByZXRlZCBhcyB2aWRlbyBpcyIKKyAgICAiIG5vdCBhZGFwdGVkIGFuZCB0aGUg
c3RhdGlzdGljcyBhcmUgbm90IGNvbXB1dGVkIGR1cmluZyIKKyAgICAiIHRoZSBsZWFybmluZyBw
aGFzZS4gTm90ZSB0aGF0IHRoZSBuZWdhdGl2ZSB2aWRlbyBhY3Rpdml0aWVzIgorICAgICIgYXJl
IE9OTFkgYWxsb3dlZCBhdCB0aGUgYmVnaW5uaW5nLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmco
CisgICAgcmVzdWx0LAorICAgICIiLAorICAgICJuYW1lIG9mIGEgZmlsZSB0byB3cml0ZSB0aGUg
cmVzdWx0cy4gVGhlIHJlc3VsdHMiCisgICAgIiB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQg
b2YgdGhlIGZpbGUuIFRoaXMgaXMgb3B0aW9uYWwuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhh
dWRpb19jb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAg
ICAgICAibmFtZSBvZiBhIGZpbGUgd2hlcmUgYXVkaW8gY29udGVudCBpcyB3cml0dGVuIgorICAg
ICAgICAgICAgICAgICAgICAgIiB0bywgaW4gZG91YmxlIGZvcm1hdC4iKTsKK1dFQlJUQ19ERUZJ
TkVfZmxvYXQoYWN0aXZpdHlfdGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICBrRGVmYXVs
dEFjdGl2aXR5VGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAiQWN0aXZpdHkgdGhyZXNo
b2xkIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBtZXNz
YWdlIik7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9ERVBT
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2Jh
cmNvZGVfdG9vbHMvREVQUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAzMjVhNjVh
YTFlMzQ0OTkwMTIwY2YyMmYyZDM0YTIzODA4ZTIwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9ERVBTCisrKyAvZGV2L251bGwKQEAgLTEs
MTMgKzAsMCBAQAotIyBUaGlzIGlzIHRyaW1tZWQgZG93biB2ZXJzaW9uIG9mIHRoZSBtYWluIHRv
b2xzIERFUFMgZmlsZSB3aGljaCBpcyB0byBiZSB1c2VkCi0jIGluIENocm9taXVtcyBQeUF1dG8g
V2ViUlRDIHZpZGVvIHF1YWxpdHkgbWVhc3VyZW1lbnQgdGVzdC4gV2Ugd2lsbCBvbmx5Ci0jIG5l
ZWQgdGhlIFp4aW5nIGRlcGVuZGVuY2llcyBhcyB3ZSBvbmx5IHVzZSB0aGUgYmFyY29kZSB0b29s
cyBpbiB0aGlzIHRlc3QuCi0KLWRlcHMgPSB7Ci0gICMgVXNlZCBieSBiYXJjb2RlX3Rvb2xzCi0g
ICJiYXJjb2RlX3Rvb2xzL3RoaXJkX3BhcnR5L3p4aW5nL2NvcmUiOgotICAgICJodHRwOi8venhp
bmcuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NvcmVAMjM0OSIsCi0KLSAgIyBVc2VkIGJ5IGJh
cmNvZGVfdG9vbHMKLSAgImJhcmNvZGVfdG9vbHMvdGhpcmRfcGFydHkvenhpbmcvamF2YXNlIjoK
LSAgICAiaHR0cDovL3p4aW5nLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9qYXZhc2VAMjM0OSIs
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9SRUFETUUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9SRUFETUUKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyM2U3OTgwNjRkZWYyMmM5OWQ2NjgzODNmYmQ4ZGRj
Y2M0MzU3NjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNv
ZGVfdG9vbHMvUkVBRE1FCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotVGhpcyBmaWxl
IGV4cGxhaW5zIGhvdyB0byBnZXQgdGhlIGRlcGVuZGVuY2llcyBuZWVkZWQgZm9yIHRoZSBiYXJj
b2RlIHRvb2xzLgotCi1iYXJjb2RlX2VuY29kZXIucHkKLT09PT09PT09PT09PT09PT09PQotVGhp
cyBzY3JpcHQgZGVwZW5kcyBvbjoKLSogWnhpbmcgKEphdmEgdmVyc2lvbikKLSogQW50IChtdXN0
IGJlIGluc3RhbGxlZCBtYW51YWxseSkKLSogSmF2YQotCi1UbyBhdXRvbWF0aWNhbGx5IGRvd25s
b2FkIFp4aW5nIGZvciB0aGUgZW5jb2RlciBzY3JpcHQsIGNoZWNrb3V0IHRoaXMgZGlyZWN0b3J5
Ci1hcyBhIHNlcGFyYXRlIGdjbGllbnQgc29sdXRpb24sIGxpa2UgdGhpczoKLWdjbGllbnQgY29u
ZmlnIGh0dHA6Ly93ZWJydGMuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL3dlYnJ0Yy9ydGNfdG9v
bHMvYmFyY29kZV90b29scwotZ2NsaWVudCBzeW5jCi1UaGVuIHRoZSBaeGluZyBKYXZhIHNvdXJj
ZSBjb2RlIHdpbGwgYmUgcHV0IGluIHRoaXJkX3BhcnR5L3p4aW5nLgotCi1JbiBvcmRlciB0byBy
dW4gYmFyY29kZV9lbmNvZGVyLnB5IHlvdSB0aGVuIG5lZWQgdG8gYnVpbGQ6Ci0qIHp4aW5nL2Nv
cmUvY29yZS5qYXIKLSogenhpbmcvamF2YXNlL2phdmFzZS5qYXIKLVRoZXNlIGFyZSBjb21waWxl
ZCB1c2luZyBBbnQgYnkgcnVubmluZyBidWlsZF96eGluZy5weToKLXB5dGhvbiBidWlsZF96eGlu
Zy5weQotCi1Gb3IgbW9yZSBpbmZvIGFib3V0IFp4aW5nLCBzZWUgaHR0cHM6Ly9jb2RlLmdvb2ds
ZS5jb20vcC96eGluZy8KLQotCi1iYXJjb2RlX2RlY29kZXIucHkKLT09PT09PT09PT09PT09PT09
PQotVGhpcyBzY3JpcHQgZGVwZW5kcyBvbjoKLSogWnhpbmcgKEMrKyB2ZXJzaW9uKS4gWW91IG5l
ZWQgdG8gY2hlY2tvdXQgZnJvbSBTdWJ2ZXJzaW9uIGFuZCBidWlsZCB0aGUgbGlicwotICBhbmQg
enhpbmcgU0NvbnMgdGFyZ2V0cy4gU1ZOIFVSTDogaHR0cDovL3p4aW5nLmdvb2dsZWNvZGUuY29t
L3N2bi90cnVuay9jcHAKLSogRkZNUEVHIGZtcGVnIDAuMTEuMQotCi1UaGVzZSBkZXBlbmRlbmNp
ZXMgbXVzdCBiZSBwcmVjb21waWxlZCBzZXBhcmF0ZWx5IGJlZm9yZSBydW5uaW5nIHRoZSBzY3Jp
cHQuCi1NYWtlIHN1cmUgdG8gYWRkIEZGTVBFRyB0byB0aGUgUEFUSCBlbnZpcm9ubWVudCB2YXJp
YWJsZSBhbmQgcHJvdmlkZSB0aGUgcGF0aAotdG8gdGhlIHp4aW5nIGV4ZWN1dGFibGUgdXNpbmcg
dGhlIG1hbmRhdG9yeSBjb21tYW5kIGxpbmUgZmxhZyB0byB0aGUgc2NyaXB0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2Jh
cmNvZGVfdG9vbHMvYmFyY29kZV9kZWNvZGVyLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvYmFyY29kZV9kZWNvZGVy
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzhlNDdmMWJhYzcyNDMwNzkzOWUz
OGVmODQ2ODc4ZTBlYjE0YmNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190
b29scy9iYXJjb2RlX3Rvb2xzL2JhcmNvZGVfZGVjb2Rlci5weQorKysgL2Rldi9udWxsCkBAIC0x
LDI5NSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChjKSAyMDEy
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
Ci0jIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQotIyB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0jIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0KLWltcG9ydCBvcHRwYXJzZQot
aW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICMg
TWFrZSBzdXJlIHdlIGFsd2F5cyBjYW4gaW1wb3J0IGhlbHBlcl9mdW5jdGlvbnMuCi0gIHN5cy5w
YXRoLmFwcGVuZChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotCi1pbXBvcnQgaGVscGVyX2Z1
bmN0aW9ucwotCi0jIENocm9tZSBicm93c2VydGVzdHMgd2lsbCB0aHJvdyBhd2F5IHN0ZGVycjsg
YXZvaWQgdGhhdCBvdXRwdXQgZ2V0cyBsb3N0Lgotc3lzLnN0ZGVyciA9IHN5cy5zdGRvdXQKLQot
Ci1kZWYgQ29udmVydFl1dlRvUG5nRmlsZXMoeXV2X2ZpbGVfbmFtZSwgeXV2X2ZyYW1lX3dpZHRo
LCB5dXZfZnJhbWVfaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9kaXJl
Y3RvcnksIGZmbXBlZ19wYXRoKToKLSAgIiIiQ29udmVydHMgYSBZVVYgdmlkZW8gZmlsZSBpbnRv
IFBORyBmcmFtZXMuCi0KLSAgVGhlIGZ1bmN0aW9uIHVzZXMgZmZtcGVnIHRvIGNvbnZlcnQgdGhl
IFlVViBmaWxlLiBUaGUgb3V0cHV0IG9mIGZmbXBlZyBpcyBpbgotICB0aGUgZm9ybSBmcmFtZV94
eHh4LnBuZywgd2hlcmUgeHh4eCBpcyB0aGUgZnJhbWUgbnVtYmVyLCBzdGFydGluZyBmcm9tIDAw
MDEuCi0KLSAgQXJnczoKLSAgICB5dXZfZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9mIHRo
ZSBZVVYgZmlsZS4KLSAgICB5dXZfZnJhbWVfd2lkdGgoaW50KTogVGhlIHdpZHRoIG9mIG9uZSBZ
VVYgZnJhbWUuCi0gICAgeXV2X2ZyYW1lX2hlaWdodChpbnQpOiBUaGUgaGVpZ2h0IG9mIG9uZSBZ
VVYgZnJhbWUuCi0gICAgb3V0cHV0X2RpcmVjdG9yeShzdHJpbmcpOiBUaGUgb3V0cHV0IGRpcmVj
dG9yeSB3aGVyZSB0aGUgUE5HIGZyYW1lcyB3aWxsIGJlCi0gICAgICBzdG9yZWQuCi0gICAgZmZt
cGVnX3BhdGgoc3RyaW5nKTogVGhlIHBhdGggdG8gdGhlIGZmbXBlZyBleGVjdXRhYmxlLiBJZiBO
b25lLCB0aGUgUEFUSAotICAgICAgd2lsbCBiZSBzZWFyY2hlZCBmb3IgaXQuCi0KLSAgUmV0dXJu
OgotICAgIChib29sKTogVHJ1ZSBpZiB0aGUgY29udmVyc2lvbiB3YXMgT0suCi0gICIiIgotICBz
aXplX3N0cmluZyA9IHN0cih5dXZfZnJhbWVfd2lkdGgpICsgJ3gnICsgc3RyKHl1dl9mcmFtZV9o
ZWlnaHQpCi0gIG91dHB1dF9maWxlc19wYXR0ZXJuID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXJl
Y3RvcnksICdmcmFtZV8lMDRkLnBuZycpCi0gIGlmIG5vdCBmZm1wZWdfcGF0aDoKLSAgICBmZm1w
ZWdfcGF0aCA9ICdmZm1wZWcuZXhlJyBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBlbHNlICdm
Zm1wZWcnCi0gIGlmIHl1dl9maWxlX25hbWUuZW5kc3dpdGgoJy55dXYnKToKLSAgICBjb21tYW5k
ID0gW2ZmbXBlZ19wYXRoLCAnLXMnLCAnJXMnICUgc2l6ZV9zdHJpbmcsICctaScsICclcycKLSAg
ICAgICAgICAgICAgICUgeXV2X2ZpbGVfbmFtZSwgJy1mJywgJ2ltYWdlMicsICctdmNvZGVjJywg
J3BuZycsCi0gICAgICAgICAgICAgICAnJXMnICUgb3V0cHV0X2ZpbGVzX3BhdHRlcm5dCi0gIGVs
c2U6Ci0gICAgY29tbWFuZCA9IFtmZm1wZWdfcGF0aCwgJy1pJywgJyVzJyAlIHl1dl9maWxlX25h
bWUsICctZicsICdpbWFnZTInLAotICAgICAgICAgICAgICAgJy12Y29kZWMnLCAncG5nJywgJyVz
JyAlIG91dHB1dF9maWxlc19wYXR0ZXJuXQotICB0cnk6Ci0gICAgcHJpbnQgJ0NvbnZlcnRpbmcg
WVVWIGZpbGUgdG8gUE5HIGltYWdlcyAobWF5IHRha2UgYSB3aGlsZSkuLi4nCi0gICAgcHJpbnQg
JyAnLmpvaW4oY29tbWFuZCkKLSAgICBoZWxwZXJfZnVuY3Rpb25zLlJ1blNoZWxsQ29tbWFuZCgK
LSAgICAgICAgY29tbWFuZCwgZmFpbF9tc2c9J0Vycm9yIGR1cmluZyBZVVYgdG8gUE5HIGNvbnZl
cnNpb24nKQotICBleGNlcHQgaGVscGVyX2Z1bmN0aW9ucy5IZWxwZXJFcnJvciwgZXJyOgotICAg
IHByaW50ICdFcnJvciBleGVjdXRpbmcgY29tbWFuZDogJXMuIEVycm9yOiAlcycgJSAoY29tbWFu
ZCwgZXJyKQotICAgIHJldHVybiBGYWxzZQotICBleGNlcHQgT1NFcnJvcjoKLSAgICBwcmludCAn
RGlkIG5vdCBmaW5kICVzLiBIYXZlIHlvdSBpbnN0YWxsZWQgaXQ/JyAlIGZmbXBlZ19wYXRoCi0g
ICAgcmV0dXJuIEZhbHNlCi0gIHJldHVybiBUcnVlCi0KLQotZGVmIERlY29kZUZyYW1lcyhpbnB1
dF9kaXJlY3RvcnksIHp4aW5nX3BhdGgpOgotICAiIiJEZWNvZGVzIHRoZSBiYXJjb2RlcyBvdmVy
bGFpZCBpbiBlYWNoIGZyYW1lLgotCi0gIFRoZSBmdW5jdGlvbiB1c2VzIHRoZSBaeGluZyBjb21t
YW5kLWxpbmUgdG9vbCBmcm9tIHRoZSBaeGluZyBDKysgZGlzdHJpYnV0aW9uCi0gIHRvIGRlY29k
ZSB0aGUgYmFyY29kZSBpbiBldmVyeSBQTkcgZnJhbWUgZnJvbSB0aGUgaW5wdXQgZGlyZWN0b3J5
LiBUaGUgZnJhbWVzCi0gIHNob3VsZCBiZSBuYW1lZCBmcmFtZV94eHh4LnBuZywgd2hlcmUgeHh4
eCBpcyB0aGUgZnJhbWUgbnVtYmVyLiBUaGUgZnJhbWUKLSAgbnVtYmVycyBzaG91bGQgYmUgY29u
c2VjdXRpdmUgYW5kIHNob3VsZCBzdGFydCBmcm9tIDAwMDEuCi0gIFRoZSBkZWNvZGluZyByZXN1
bHRzIGluIGEgZnJhbWVfeHh4eC50eHQgZmlsZSBmb3IgZXZlcnkgc3VjY2Vzc2Z1bGx5IGRlY29k
ZWQKLSAgYmFyY29kZS4gVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZWNvZGVkIGJhcmNvZGUgYXMg
MTItZGlnaXQgc3RyaW5nIChVUEMtQQotICBmb3JtYXQ6IDExIGRpZ2l0cyBjb250ZW50ICsgb25l
IGNoZWNrIGRpZ2l0KS4KLQotICBBcmdzOgotICAgIGlucHV0X2RpcmVjdG9yeShzdHJpbmcpOiBU
aGUgaW5wdXQgZGlyZWN0b3J5IGZyb20gd2hlcmUgdGhlIFBORyBmcmFtZXMgYXJlCi0gICAgICBy
ZWFkLgotICAgIHp4aW5nX3BhdGgoc3RyaW5nKTogVGhlIHBhdGggdG8gdGhlIHp4aW5nIGJpbmFy
eS4gSWYgc3BlY2lmaWVkIGFzIE5vbmUsCi0gICAgICB0aGUgUEFUSCB3aWxsIGJlIHNlYXJjaGVk
IGZvciBpdC4KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1ZSBpZiB0aGUgZGVjb2Rpbmcgc3Vj
Y2VlZGVkLgotICAiIiIKLSAgaWYgbm90IHp4aW5nX3BhdGg6Ci0gICAgenhpbmdfcGF0aCA9ICd6
eGluZy5leGUnIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIGVsc2UgJ3p4aW5nJwotICBwcmlu
dCAnRGVjb2RpbmcgYmFyY29kZXMgZnJvbSBQTkcgZmlsZXMgd2l0aCAlcy4uLicgJSB6eGluZ19w
YXRoCi0gIHJldHVybiBoZWxwZXJfZnVuY3Rpb25zLlBlcmZvcm1BY3Rpb25PbkFsbEZpbGVzKAot
ICAgICAgZGlyZWN0b3J5PWlucHV0X2RpcmVjdG9yeSwgZmlsZV9wYXR0ZXJuPSdmcmFtZV8nLAot
ICAgICAgZmlsZV9leHRlbnNpb249J3BuZycsIHN0YXJ0X251bWJlcj0xLCBhY3Rpb249X0RlY29k
ZUJhcmNvZGVJbkZpbGUsCi0gICAgICBjb21tYW5kX2xpbmVfZGVjb2Rlcj16eGluZ19wYXRoKQot
Ci0KLWRlZiBfRGVjb2RlQmFyY29kZUluRmlsZShmaWxlX25hbWUsIGNvbW1hbmRfbGluZV9kZWNv
ZGVyKToKLSAgIiIiRGVjb2RlcyB0aGUgYmFyY29kZSBpbiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIg
b2YgYSBQTkcgZmlsZS4KLQotICBBcmdzOgotICAgIGZpbGVfbmFtZShzdHJpbmcpOiBGaWxlIG5h
bWUgb2YgdGhlIFBORyBmaWxlLgotICAgIGNvbW1hbmRfbGluZV9kZWNvZGVyKHN0cmluZyk6IFRo
ZSBaWGluZyBjb21tYW5kLWxpbmUgZGVjb2RpbmcgdG9vbC4KLQotICBSZXR1cm46Ci0gICAgKGJv
b2wpOiBUcnVlIHVwb24gc3VjY2VzcywgRmFsc2Ugb3RoZXJ3aXNlLgotICAiIiIKLSAgY29tbWFu
ZCA9IFtjb21tYW5kX2xpbmVfZGVjb2RlciwgJy0tdHJ5LWhhcmRlcicsICctLWR1bXAtcmF3Jywg
ZmlsZV9uYW1lXQotICB0cnk6Ci0gICAgb3V0ID0gaGVscGVyX2Z1bmN0aW9ucy5SdW5TaGVsbENv
bW1hbmQoCi0gICAgICAgIGNvbW1hbmQsIGZhaWxfbXNnPSdFcnJvciBkdXJpbmcgZGVjb2Rpbmcg
b2YgJXMnICUgZmlsZV9uYW1lKQotICAgIHRleHRfZmlsZSA9IG9wZW4oJyVzLnR4dCcgJSBmaWxl
X25hbWVbOi00XSwgJ3cnKQotICAgIHRleHRfZmlsZS53cml0ZShvdXQpCi0gICAgdGV4dF9maWxl
LmNsb3NlKCkKLSAgZXhjZXB0IGhlbHBlcl9mdW5jdGlvbnMuSGVscGVyRXJyb3IsIGVycjoKLSAg
ICBwcmludCAnQmFyY29kZSBpbiAlcyBjYW5ub3QgYmUgZGVjb2RlZC4nICUgZmlsZV9uYW1lCi0g
ICAgcHJpbnQgZXJyCi0gICAgcmV0dXJuIEZhbHNlCi0gIGV4Y2VwdCBPU0Vycm9yOgotICAgIHBy
aW50ICdEaWQgbm90IGZpbmQgJXMuIEhhdmUgeW91IGluc3RhbGxlZCBpdD8nICUgY29tbWFuZF9s
aW5lX2RlY29kZXIKLSAgICByZXR1cm4gRmFsc2UKLSAgcmV0dXJuIFRydWUKLQotCi1kZWYgX0dl
bmVyYXRlU3RhdHNGaWxlKHN0YXRzX2ZpbGVfbmFtZSwgaW5wdXRfZGlyZWN0b3J5PScuJyk6Ci0g
ICIiIkdlbmVyYXRlIHN0YXRpc3RpY3MgZmlsZS4KLQotICBUaGUgZnVuY3Rpb24gZ2VuZXJhdGVz
IGEgc3RhdGlzdGljcyBmaWxlLiBUaGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXJlIGluIHRoZQot
ICBmb3JtYXQgPGZyYW1lX25hbWU+IDxiYXJjb2RlPiwgd2hlcmUgZnJhbWUgbmFtZSBpcyB0aGUg
bmFtZSBvZiBldmVyeSBmcmFtZQotICAoZWZmZWN0aXZlbHkgdGhlIGZyYW1lIG51bWJlcikgYW5k
IGJhcmNvZGUgaXMgdGhlIGRlY29kZWQgYmFyY29kZS4gVGhlIGZyYW1lcwotICBhbmQgdGhlIGhl
bHBlciAudHh0IGZpbGVzIGFyZSByZW1vdmVkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIHVzZWQuCi0g
ICIiIgotICBmaWxlX3ByZWZpeCA9IG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksICdmcmFt
ZV8nKQotICBzdGF0c19maWxlID0gb3BlbihzdGF0c19maWxlX25hbWUsICd3JykKLQotICBwcmlu
dCAnR2VuZXJhdGluZyBzdGF0cyBmaWxlOiAlcycgJSBzdGF0c19maWxlX25hbWUKLSAgZm9yIGkg
aW4gcmFuZ2UoMSwgX0NvdW50RnJhbWVzSW4oaW5wdXRfZGlyZWN0b3J5PWlucHV0X2RpcmVjdG9y
eSkgKyAxKToKLSAgICBmcmFtZV9udW1iZXIgPSBoZWxwZXJfZnVuY3Rpb25zLlplcm9QYWQoaSkK
LSAgICBiYXJjb2RlX2ZpbGVfbmFtZSA9IGZpbGVfcHJlZml4ICsgZnJhbWVfbnVtYmVyICsgJy50
eHQnCi0gICAgcG5nX2ZyYW1lID0gZmlsZV9wcmVmaXggKyBmcmFtZV9udW1iZXIgKyAnLnBuZycK
LSAgICBlbnRyeV9mcmFtZV9udW1iZXIgPSBoZWxwZXJfZnVuY3Rpb25zLlplcm9QYWQoaS0xKQot
ICAgIGVudHJ5ID0gJ2ZyYW1lXycgKyBlbnRyeV9mcmFtZV9udW1iZXIgKyAnICcKLQotICAgIGlm
IG9zLnBhdGguaXNmaWxlKGJhcmNvZGVfZmlsZV9uYW1lKToKLSAgICAgIGJhcmNvZGUgPSBfUmVh
ZEJhcmNvZGVGcm9tVGV4dEZpbGUoYmFyY29kZV9maWxlX25hbWUpCi0gICAgICBvcy5yZW1vdmUo
YmFyY29kZV9maWxlX25hbWUpCi0KLSAgICAgIGlmIF9DaGVja0JhcmNvZGUoYmFyY29kZSk6Ci0g
ICAgICAgIGVudHJ5ICs9IChoZWxwZXJfZnVuY3Rpb25zLlplcm9QYWQoaW50KGJhcmNvZGVbMDox
MV0pKSArICdcbicpCi0gICAgICBlbHNlOgotICAgICAgICBlbnRyeSArPSAnQmFyY29kZSBlcnJv
clxuJyAgIyBCYXJjb2RlIGlzIHdyb25nbHkgZGV0ZWN0ZWQuCi0gICAgZWxzZTogICMgQmFyY29k
ZSBmaWxlIGRvZXNuJ3QgZXhpc3QuCi0gICAgICBlbnRyeSArPSAnQmFyY29kZSBlcnJvclxuJwot
Ci0gICAgc3RhdHNfZmlsZS53cml0ZShlbnRyeSkKLSAgICBvcy5yZW1vdmUocG5nX2ZyYW1lKQot
Ci0gIHN0YXRzX2ZpbGUuY2xvc2UoKQotCi0KLWRlZiBfUmVhZEJhcmNvZGVGcm9tVGV4dEZpbGUo
YmFyY29kZV9maWxlX25hbWUpOgotICAiIiJSZWFkcyB0aGUgZGVjb2RlZCBiYXJjb2RlIGZvciBh
IC50eHQgZmlsZS4KLQotICBBcmdzOgotICAgIGJhcmNvZGVfZmlsZV9uYW1lKHN0cmluZyk6IFRo
ZSBuYW1lIG9mIHRoZSAudHh0IGZpbGUuCi0gIFJldHVybjoKLSAgICAoc3RyaW5nKTogVGhlIGRl
Y29kZWQgYmFyY29kZS4KLSAgIiIiCi0gIGJhcmNvZGVfZmlsZSA9IG9wZW4oYmFyY29kZV9maWxl
X25hbWUsICdyJykKLSAgYmFyY29kZSA9IGJhcmNvZGVfZmlsZS5yZWFkKCkKLSAgYmFyY29kZV9m
aWxlLmNsb3NlKCkKLSAgcmV0dXJuIGJhcmNvZGUKLQotCi1kZWYgX0NoZWNrQmFyY29kZShiYXJj
b2RlKToKLSAgIiIiQ2hlY2sgd2VhdGhlciB0aGUgVVBDLUEgYmFyY29kZSB3YXMgZGVjb2RlZCBj
b3JyZWN0bHkuCi0KLSAgVGhpcyBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSBjaGVjayBkaWdpdCBv
ZiB0aGUgcHJvdmlkZWQgYmFyY29kZSBhbmQgY29tcGFyZXMKLSAgaXQgdG8gdGhlIGNoZWNrIGRp
Z2l0IHRoYXQgd2FzIGRlY29kZWQuCi0KLSAgQXJnczoKLSAgICBiYXJjb2RlKHN0cmluZyk6IFRo
ZSBiYXJjb2RlICgxMi1kaWdpdCkuCi0gIFJldHVybjoKLSAgICAoYm9vbCk6IFRydWUgaWYgdGhl
IGJhcmNvZGUgd2FzIGRlY29kZWQgY29ycmVjdGx5LgotICAiIiIKLSAgaWYgbGVuKGJhcmNvZGUp
ICE9IDEyOgotICAgIHJldHVybiBGYWxzZQotCi0gIHIxID0gcmFuZ2UoMCwgMTEsIDIpICAjIE9k
ZCBkaWdpdHMKLSAgcjIgPSByYW5nZSgxLCAxMCwgMikgICMgRXZlbiBkaWdpdHMgZXhjZXB0IGxh
c3QKLSAgZHN1bSA9IDAKLSAgIyBTdW0gYWxsIHRoZSBldmVuIGRpZ2l0cwotICBmb3IgaSBpbiBy
MToKLSAgICBkc3VtICs9IGludChiYXJjb2RlW2ldKQotICAjIE11bHRpcGx5IHRoZSBzdW0gYnkg
MwotICBkc3VtICo9IDMKLSAgIyBBZGQgYWxsIHRoZSBldmVuIGRpZ2l0cyBleGNlcHQgdGhlIGNo
ZWNrIGRpZ2l0ICgxMnRoIGRpZ2l0KQotICBmb3IgaSBpbiByMjoKLSAgICBkc3VtICs9IGludChi
YXJjb2RlW2ldKQotICAjIEdldCB0aGUgbW9kdWxvIDEwCi0gIGRzdW0gPSBkc3VtICUgMTAKLSAg
IyBJZiBub3QgMCBzdWJzdHJhY3QgZnJvbSAxMAotICBpZiBkc3VtICE9IDA6Ci0gICAgZHN1bSA9
IDEwIC0gZHN1bQotICAjIENvbXBhcmUgcmVzdWx0IGFuZCBjaGVjayBkaWdpdAotICByZXR1cm4g
ZHN1bSA9PSBpbnQoYmFyY29kZVsxMV0pCi0KLQotZGVmIF9Db3VudEZyYW1lc0luKGlucHV0X2Rp
cmVjdG9yeT0nLicpOgotICAiIiJDYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgZnJhbWVzIGluIHRo
ZSBpbnB1dCBkaXJlY3RvcnkuCi0KLSAgVGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIG51bWJl
ciBvZiBmcmFtZXMgaW4gdGhlIGlucHV0IGRpcmVjdG9yeS4gVGhlCi0gIGZyYW1lcyBzaG91bGQg
YmUgbmFtZWQgZnJhbWVfeHh4eC5wbmcsIHdoZXJlIHh4eHggaXMgdGhlIG51bWJlciBvZiB0aGUg
ZnJhbWUuCi0gIFRoZSBudW1iZXJzIHNob3VsZCBzdGFydCBmcm9tIDEgYW5kIHNob3VsZCBiZSBj
b25zZWN1dGl2ZS4KLQotICBBcmdzOgotICAgIGlucHV0X2RpcmVjdG9yeShzdHJpbmcpOiBUaGUg
aW5wdXQgZGlyZWN0b3J5LgotICBSZXR1cm46Ci0gICAgKGludCk6IFRoZSBudW1iZXIgb2YgZnJh
bWVzLgotICAiIiIKLSAgZmlsZV9wcmVmaXggPSBvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0b3J5
LCAnZnJhbWVfJykKLSAgZmlsZV9leGlzdHMgPSBUcnVlCi0gIG51bSA9IDEKLQotICB3aGlsZSBm
aWxlX2V4aXN0czoKLSAgICBmaWxlX25hbWUgPSAoZmlsZV9wcmVmaXggKyBoZWxwZXJfZnVuY3Rp
b25zLlplcm9QYWQobnVtKSArICcucG5nJykKLSAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX25h
bWUpOgotICAgICAgbnVtICs9IDEKLSAgICBlbHNlOgotICAgICAgZmlsZV9leGlzdHMgPSBGYWxz
ZQotICByZXR1cm4gbnVtIC0gMQotCi0KLWRlZiBfUGFyc2VBcmdzKCk6Ci0gICIiIlJlZ2lzdGVy
cyB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMuIiIiCi0gIHVzYWdlID0gInVzYWdlOiAlcHJvZyBb
b3B0aW9uc10iCi0gIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT11c2FnZSkK
LQotICBwYXJzZXIuYWRkX29wdGlvbignLS16eGluZ19wYXRoJywgdHlwZT0nc3RyaW5nJywKLSAg
ICAgICAgICAgICAgICAgICAgaGVscD0oJ1RoZSBwYXRoIHRvIHdoZXJlIHRoZSB6eGluZyBleGVj
dXRhYmxlIGlzIGxvY2F0ZWQuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lmIG9taXR0
ZWQsIGl0IHdpbGwgYmUgYXNzdW1lZCB0byBiZSBwcmVzZW50IGluIHRoZSAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICdQQVRIIHdpdGggdGhlIG5hbWUgenhpbmdbLmV4ZV0uJykpCi0gIHBh
cnNlci5hZGRfb3B0aW9uKCctLWZmbXBlZ19wYXRoJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ1RoZSBwYXRoIHRvIHdoZXJlIHRoZSBmZm1wZWcgZXhlY3V0YWJs
ZSBpcyBsb2NhdGVkLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdJZiBvbWl0dGVkLCBp
dCB3aWxsIGJlIGFzc3VtZWQgdG8gYmUgcHJlc2VudCBpbiB0aGUgJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAnUEFUSCB3aXRoIHRoZSBuYW1lIGZmbXBlZ1suZXhlXS4nKSkKLSAgcGFyc2Vy
LmFkZF9vcHRpb24oJy0teXV2X2ZyYW1lX3dpZHRoJywgdHlwZT0naW50JywgZGVmYXVsdD02NDAs
Ci0gICAgICAgICAgICAgICAgICAgIGhlbHA9J1dpZHRoIG9mIHRoZSBZVVYgZmlsZVwncyBmcmFt
ZXMuIERlZmF1bHQ6ICVkZWZhdWx0JykKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0teXV2X2ZyYW1l
X2hlaWdodCcsIHR5cGU9J2ludCcsIGRlZmF1bHQ9NDgwLAotICAgICAgICAgICAgICAgICAgICBo
ZWxwPSdIZWlnaHQgb2YgdGhlIFlVViBmaWxlXCdzIGZyYW1lcy4gRGVmYXVsdDogJWRlZmF1bHQn
KQotICBwYXJzZXIuYWRkX29wdGlvbignLS15dXZfZmlsZScsIHR5cGU9J3N0cmluZycsIGRlZmF1
bHQ9J291dHB1dC55dXYnLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSdUaGUgWVVWIGZpbGUg
dG8gYmUgZGVjb2RlZC4gRGVmYXVsdDogJWRlZmF1bHQnKQotICBwYXJzZXIuYWRkX29wdGlvbign
LS1zdGF0c19maWxlJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nc3RhdHMudHh0JywKLSAgICAg
ICAgICAgICAgICAgICAgaGVscD0nVGhlIG91dHB1dCBzdGF0cyBmaWxlLiBEZWZhdWx0OiAlZGVm
YXVsdCcpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLXBuZ193b3JraW5nX2RpcicsIHR5cGU9J3N0
cmluZycsIGRlZmF1bHQ9Jy4nLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnVGhlIGRpcmVj
dG9yeSBmb3IgdGVtcG9yYXJ5IFBORyBpbWFnZXMgdG8gYmUgc3RvcmVkICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2luIHdoZW4gZGVjb2RpbmcgZnJvbSBZVVYgYmVmb3JlIHRoZXlcJ3Jl
IGJhcmNvZGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVjb2RlZC4gSWYgdXNpbmcg
V2luZG93cyBhbmQgYSBDeWd3aW4tY29tcGlsZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAnenhpbmcuZXhlLCB5b3Ugc2hvdWxkIGtlZXAgdGhlIGRlZmF1bHQgdmFsdWUgdG8gJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAnYXZvaWQgcHJvYmxlbXMuIERlZmF1bHQ6ICVkZWZhdWx0
JykpCi0gIG9wdGlvbnMsIF8gPSBwYXJzZXIucGFyc2VfYXJncygpCi0gIHJldHVybiBvcHRpb25z
Ci0KLQotZGVmIG1haW4oKToKLSAgIiIiVGhlIG1haW4gZnVuY3Rpb24uCi0KLSAgQSBzaW1wbGUg
aW52b2NhdGlvbiBpczoKLSAgLi93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvYmFyY29k
ZV9kZWNvZGVyLnB5Ci0gIC0teXV2X2ZpbGU9PHBhdGhfYW5kX25hbWVfb2Zfb3ZlcmxhaWRfeXV2
X3ZpZGVvPgotICAtLXl1dl9mcmFtZV93aWR0aD02NDAgLS15dXZfZnJhbWVfaGVpZ2h0PTQ4MAot
ICAtLXN0YXRzX2ZpbGU9PHBhdGhfYW5kX25hbWVfdG9fc3RhdHNfZmlsZT4KLSAgIiIiCi0gIG9w
dGlvbnMgPSBfUGFyc2VBcmdzKCkKLQotICAjIENvbnZlcnQgdGhlIG92ZXJsYWlkIFlVViB2aWRl
byBpbnRvIGEgc2V0IG9mIFBORyBmcmFtZXMuCi0gIGlmIG5vdCBDb252ZXJ0WXV2VG9QbmdGaWxl
cyhvcHRpb25zLnl1dl9maWxlLCBvcHRpb25zLnl1dl9mcmFtZV93aWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbnMueXV2X2ZyYW1lX2hlaWdodCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dHB1dF9kaXJlY3Rvcnk9b3B0aW9ucy5wbmdfd29ya2luZ19k
aXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZm1wZWdfcGF0aD1vcHRpb25zLmZm
bXBlZ19wYXRoKToKLSAgICBwcmludCAnQW4gZXJyb3Igb2NjdXJyZWQgY29udmVydGluZyBmcm9t
IFlVViB0byBQTkcgZnJhbWVzLicKLSAgICByZXR1cm4gLTEKLQotICAjIERlY29kZSB0aGUgYmFy
Y29kZXMgZnJvbSB0aGUgUE5HIGZyYW1lcy4KLSAgaWYgbm90IERlY29kZUZyYW1lcyhpbnB1dF9k
aXJlY3Rvcnk9b3B0aW9ucy5wbmdfd29ya2luZ19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAg
enhpbmdfcGF0aD1vcHRpb25zLnp4aW5nX3BhdGgpOgotICAgIHByaW50ICdBbiBlcnJvciBvY2N1
cnJlZCBkZWNvZGluZyBiYXJjb2RlcyBmcm9tIFBORyBmcmFtZXMuJwotICAgIHJldHVybiAtMgot
Ci0gICMgR2VuZXJhdGUgc3RhdGlzdGljcyBmaWxlLgotICBfR2VuZXJhdGVTdGF0c0ZpbGUob3B0
aW9ucy5zdGF0c19maWxlLAotICAgICAgICAgICAgICAgICAgICAgaW5wdXRfZGlyZWN0b3J5PW9w
dGlvbnMucG5nX3dvcmtpbmdfZGlyKQotICBwcmludCAnQ29tcGxldGVkIGJhcmNvZGUgZGVjb2Rp
bmcuJwotICByZXR1cm4gMAotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBzeXMuZXhp
dChtYWluKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9iYXJjb2RlX2VuY29kZXIucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90
b29scy9iYXJjb2RlX2VuY29kZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlh
YjhiNTA3NTQyMzk5MmY5MmI4YzdmODczOTNjZTAyY2U5ZTZiOTAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMvYmFyY29kZV9lbmNvZGVyLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMzcyICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgot
IyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0jCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0jIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSMgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotIyBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
LQotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotaW1wb3J0IGhlbHBl
cl9mdW5jdGlvbnMKLQotX0RFRkFVTFRfQkFSQ09ERV9XSURUSCA9IDM1MgotX0RFRkFVTFRfQkFS
Q09ERVNfRklMRSA9ICdiYXJjb2Rlcy55dXYnCi0KLQotZGVmIEdlbmVyYXRlVXBjYUJhcmNvZGVz
KG51bWJlcl9vZl9iYXJjb2RlcywgYmFyY29kZV93aWR0aCwgYmFyY29kZV9oZWlnaHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2RpcmVjdG9yeT0nLicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcGF0aF90b196eGluZz0nenhpbmctcmVhZC1vbmx5Jyk6Ci0gICIiIkdlbmVy
YXRlcyBVUEMtQSBiYXJjb2Rlcy4KLQotICBUaGlzIGZ1bmN0aW9uIGdlbmVyYXRlcyBhIG51bWJl
cl9vZl9iYXJjb2RlcyBVUEMtQSBiYXJjb2Rlcy4gVGhlIGZ1bmN0aW9uCi0gIGNhbGxzIGFuIGV4
YW1wbGUgSmF2YSBlbmNvZGVyIGZyb20gdGhlIFp4aW5nIGxpYnJhcnkuIFRoZSBiYXJjb2RlcyBh
cmUKLSAgZ2VuZXJhdGVkIGFzIFBORyBpbWFnZXMuIFRoZSB3aWR0aCBvZiB0aGUgYmFyY29kZXMg
c2hvdWxkbid0IGJlIGxlc3MgdGhhbiAxMDIKLSAgcGl4ZWxzIGJlY2F1c2Ugb3RoZXJ3aXNlIFp4
aW5nIGNhbid0IHByb3Blcmx5IGdlbmVyYXRlIHRoZSBiYXJjb2Rlcy4KLQotICBBcmdzOgotICAg
IG51bWJlcl9vZl9iYXJjb2RlcyhpbnQpOiBUaGUgbnVtYmVyIG9mIGJhcmNvZGVzIHRvIGdlbmVy
YXRlLgotICAgIGJhcmNvZGVfd2lkdGgoaW50KTogV2lkdGggb2YgYmFyY29kZSBpbiBwaXhlbHMu
Ci0gICAgYmFyY29kZV9oZWlnaHQoaW50KTogSGVpZ2h0IG9mIGJhcmNvZGUgaW4gcGl4ZWxzLgot
ICAgIG91dHB1dF9kaXJlY3Rvcnkoc3RyaW5nKTogT3V0cHV0IGRpcmVjdG9yeSB3aGVyZSB0byBz
dG9yZSBnZW5lcmF0ZWQKLSAgICAgIGJhcmNvZGVzLgotICAgIHBhdGhfdG9fenhpbmcoc3RyaW5n
KTogVGhlIHBhdGggdG8gWnhpbmcuCi0KLSAgUmV0dXJuOgotICAgIChib29sKTogVHJ1ZSBpZiB0
aGUgY29udmVyc2lvbiBpcyBzdWNjZXNzZnVsLgotICAiIiIKLSAgYmFzZV9maWxlX25hbWUgPSBv
cy5wYXRoLmpvaW4ob3V0cHV0X2RpcmVjdG9yeSwgImJhcmNvZGVfIikKLSAgamFycyA9IF9Gb3Jt
SmFyc1N0cmluZyhwYXRoX3RvX3p4aW5nKQotICBjb21tYW5kX2xpbmVfZW5jb2RlciA9ICdjb20u
Z29vZ2xlLnp4aW5nLmNsaWVudC5qMnNlLkNvbW1hbmRMaW5lRW5jb2RlcicKLSAgYmFyY29kZV93
aWR0aCA9IHN0cihiYXJjb2RlX3dpZHRoKQotICBiYXJjb2RlX2hlaWdodCA9IHN0cihiYXJjb2Rl
X2hlaWdodCkKLQotICBlcnJvcnMgPSBGYWxzZQotICBmb3IgaSBpbiByYW5nZShudW1iZXJfb2Zf
YmFyY29kZXMpOgotICAgIHN1ZmZpeCA9IGhlbHBlcl9mdW5jdGlvbnMuWmVyb1BhZChpKQotICAg
ICMgQmFyY29kZXMgc3RhcnRpbmcgZnJvbSAwCi0gICAgY29udGVudCA9IGhlbHBlcl9mdW5jdGlv
bnMuWmVyb1BhZChpLCAxMSkKLSAgICBvdXRwdXRfZmlsZV9uYW1lID0gYmFzZV9maWxlX25hbWUg
KyBzdWZmaXggKyAiLnBuZyIKLQotICAgIGNvbW1hbmQgPSBbImphdmEiLCAiLWNwIiwgamFycywg
Y29tbWFuZF9saW5lX2VuY29kZXIsCi0gICAgICAgICAgICAgICAiLS1iYXJjb2RlX2Zvcm1hdD1V
UENfQSIsICItLWhlaWdodD0lcyIgJSBiYXJjb2RlX2hlaWdodCwKLSAgICAgICAgICAgICAgICIt
LXdpZHRoPSVzIiAlIGJhcmNvZGVfd2lkdGgsCi0gICAgICAgICAgICAgICAiLS1vdXRwdXQ9JXMi
ICUgKG91dHB1dF9maWxlX25hbWUpLCAiJXMiICUgKGNvbnRlbnQpXQotICAgIHRyeToKLSAgICAg
IGhlbHBlcl9mdW5jdGlvbnMuUnVuU2hlbGxDb21tYW5kKAotICAgICAgICAgIGNvbW1hbmQsIGZh
aWxfbXNnPSgnRXJyb3IgZHVyaW5nIGJhcmNvZGUgJXMgZ2VuZXJhdGlvbicgJSBjb250ZW50KSkK
LSAgICBleGNlcHQgaGVscGVyX2Z1bmN0aW9ucy5IZWxwZXJFcnJvciBhcyBlcnI6Ci0gICAgICBw
cmludCA+PiBzeXMuc3RkZXJyLCBlcnIKLSAgICAgIGVycm9ycyA9IFRydWUKLSAgcmV0dXJuIG5v
dCBlcnJvcnMKLQotCi1kZWYgQ29udmVydFBuZ1RvWXV2QmFyY29kZXMoaW5wdXRfZGlyZWN0b3J5
PScuJywgb3V0cHV0X2RpcmVjdG9yeT0nLicpOgotICAiIiJDb252ZXJ0cyBQTkcgYmFyY29kZXMg
dG8gWVVWIGJhcmNvZGUgaW1hZ2VzLgotCi0gIFRoaXMgZnVuY3Rpb24gcmVhZHMgYWxsIHRoZSBQ
TkcgZmlsZXMgZnJvbSB0aGUgaW5wdXQgZGlyZWN0b3J5IHdoaWNoIGFyZSBpbgotICB0aGUgZm9y
bWF0IGZyYW1lX3h4eHgucG5nLCB3aGVyZSB4eHh4IGlzIHRoZSBudW1iZXIgb2YgdGhlIGZyYW1l
LCBzdGFydGluZwotICBmcm9tIDAwMDAuIFRoZSBmcmFtZXMgc2hvdWxkIGJlIGNvbnNlY3V0aXZl
IG51bWJlcnMuIFRoZSBvdXRwdXQgWVVWIGZpbGUgaXMKLSAgbmFtZWQgZnJhbWVfeHh4eC55dXYu
IFRoZSBmdW5jdGlvbiB1c2VzIGZmbXBlZyB0byBkbyB0aGUgY29udmVyc2lvbi4KLQotICBBcmdz
OgotICAgIGlucHV0X2RpcmVjdG9yeShzdHJpbmcpOiBUaGUgaW5wdXQgZGlyZWNvdHJ5IHRvIHJl
YWQgdGhlIFBORyBiYXJjb2RlcyBmcm9tLgotICAgIG91dHB1dF9kaXJlY3Rvcnkoc3RyaW5nKTog
VGhlIHB1dHB1dCBkaXJlY3RvcnkgdG8gd3JpdGUgdGhlIFlVViBmaWxlcyB0by4KLSAgUmV0dXJu
OgotICAgIChib29sKTogVHJ1ZSBpZiB0aGUgY29udmVyc2lvbiB3YXMgd2l0aG91dCBlcnJvcnMu
Ci0gICIiIgotICByZXR1cm4gaGVscGVyX2Z1bmN0aW9ucy5QZXJmb3JtQWN0aW9uT25BbGxGaWxl
cygKLSAgICAgIGlucHV0X2RpcmVjdG9yeSwgJ2JhcmNvZGVfJywgJ3BuZycsIDAsIF9Db252ZXJ0
VG9ZdXZBbmREZWxldGUsCi0gICAgICBvdXRwdXRfZGlyZWN0b3J5PW91dHB1dF9kaXJlY3Rvcnks
IHBhdHRlcm49J2JhcmNvZGVfJykKLQotCi1kZWYgX0NvbnZlcnRUb1l1dkFuZERlbGV0ZShvdXRw
dXRfZGlyZWN0b3J5LCBmaWxlX25hbWUsIHBhdHRlcm4pOgotICAiIiJDb252ZXJ0cyBhIFBORyBm
aWxlIHRvIGEgWVVWIGZpbGUgYW5kIGRlbGV0ZXMgdGhlIFBORyBmaWxlLgotCi0gIEFyZ3M6Ci0g
ICAgb3V0cHV0X2RpcmVjdG9yeShzdHJpbmcpOiBUaGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhl
IFlVViBmaWxlLgotICAgIGZpbGVfbmFtZShzdHJpbmcpOiBUaGUgUE5HIGZpbGUgbmFtZS4KLSAg
ICBwYXR0ZXJuKHN0cmluZyk6IFRoZSBmaWxlIHBhdHRlcm4gb2YgdGhlIFBORy9ZVVYgZmlsZS4g
VGhlIFBORy9ZVVYgZmlsZXMgYXJlCi0gICAgICBuYW1lZCBwYXR0ZXJueHguLngucG5nL3l1diwg
d2hlcmUgeHguLnggYXJlIGRpZ2l0cyBzdGFydGluZyBmcm9tIDAwLi4wLgotICBSZXR1cm46Ci0g
ICAgKGJvb2wpOiBUcnVlIHVwb24gc3VjY2Vzc2Z1bCBjb252ZXJzaW9uLCBmYWxzZSBvdGhlcndp
c2UuCi0gICIiIgotICAjIFBhdHRlcm4gc2hvdWxkIGJlIGluIGZpbGUgbmFtZQotICBpZiBub3Qg
cGF0dGVybiBpbiBmaWxlX25hbWU6Ci0gICAgcmV0dXJuIEZhbHNlCi0gIHBhdHRlcm5fcG9zaXRp
b24gPSBmaWxlX25hbWUucmZpbmQocGF0dGVybikKLQotICAjIFN0cmlwIHRoZSBwYXRoIHRvIHRo
ZSBQTkcgZmlsZSBhbmQgcmVwbGFjZSB0aGUgcG5nIGV4dGVuc2lvbiB3aXRoIHl1dgotICB5dXZf
ZmlsZV9uYW1lID0gZmlsZV9uYW1lW3BhdHRlcm5fcG9zaXRpb246LTNdICsgJ3l1dicKLSAgeXV2
X2ZpbGVfbmFtZSA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyZWN0b3J5LCB5dXZfZmlsZV9uYW1l
KQotCi0gIGNvbW1hbmQgPSBbJ2ZmbXBlZycsICctaScsICclcycgJSAoZmlsZV9uYW1lKSwgJy1w
aXhfZm10JywgJ3l1djQyMHAnLAotICAgICAgICAgICAgICclcycgJSAoeXV2X2ZpbGVfbmFtZSld
Ci0gIHRyeToKLSAgICBoZWxwZXJfZnVuY3Rpb25zLlJ1blNoZWxsQ29tbWFuZCgKLSAgICAgICAg
Y29tbWFuZCwgZmFpbF9tc2c9KCdFcnJvciBkdXJpbmcgUE5HIHRvIFlVViBjb252ZXJzaW9uIG9m
ICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX25hbWUpKQotICAgIG9zLnJl
bW92ZShmaWxlX25hbWUpCi0gIGV4Y2VwdCBoZWxwZXJfZnVuY3Rpb25zLkhlbHBlckVycm9yIGFz
IGVycjoKLSAgICBwcmludCA+PiBzeXMuc3RkZXJyLCBlcnIKLSAgICByZXR1cm4gRmFsc2UKLSAg
cmV0dXJuIFRydWUKLQotCi1kZWYgQ29tYmluZVl1dkZyYW1lc0ludG9PbmVGaWxlKG91dHB1dF9m
aWxlX25hbWUsIGlucHV0X2RpcmVjdG9yeT0nLicpOgotICAiIiJDb21iaW5lcyBzZXZlcmFsIFlV
ViBmcmFtZXMgaW50byBvbmUgWVVWIHZpZGVvIGZpbGUuCi0KLSAgVGhlIGZ1bmN0aW9uIGNvbWJp
bmVzIHRoZSBZVVYgZnJhbWVzIGZyb20gaW5wdXRfZGlyZWN0b3J5IGludG8gb25lIFlVViB2aWRl
bwotICBmaWxlLiBUaGUgZnJhbWVzIHNob3VsZCBiZSBuYW1lZCBpbiB0aGUgZm9ybWF0IGZyYW1l
X3h4eHgueXV2IHdoZXJlIHh4eHgKLSAgc3RhbmRzIGZvciB0aGUgZnJhbWUgbnVtYmVyLiBUaGUg
bnVtYmVycyBoYXZlIHRvIGJlIGNvbnNlY3V0aXZlIGFuZCBzdGFydCBmcm9tCi0gIDAwMDAuIFRo
ZSBZVVYgZnJhbWVzIGFyZSByZW1vdmVkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGFkZGVkIHRvIHRo
ZSB2aWRlby4KLQotICBBcmdzOgotICAgIG91dHB1dF9maWxlX25hbWUoc3RyaW5nKTogVGhlIG5h
bWUgb2YgdGhlIGZpbGUgdG8gcHJvZHVjZS4KLSAgICBpbnB1dF9kaXJlY3Rvcnkoc3RyaW5nKTog
VGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIHRoZSBZVVYgZnJhbWVzIGFyZSByZWFkLgotICBSZXR1
cm46Ci0gICAgKGJvb2wpOiBUcnVlIGlmIHRoZSBmcmFtZSBzdGl0Y2hpbmcgd2VudCBPSy4KLSAg
IiIiCi0gIG91dHB1dF9maWxlID0gb3BlbihvdXRwdXRfZmlsZV9uYW1lLCAid2IiKQotICBzdWNj
ZXNzID0gaGVscGVyX2Z1bmN0aW9ucy5QZXJmb3JtQWN0aW9uT25BbGxGaWxlcygKLSAgICAgIGlu
cHV0X2RpcmVjdG9yeSwgJ2JhcmNvZGVfJywgJ3l1dicsIDAsIF9BZGRUb0ZpbGVBbmREZWxldGUs
Ci0gICAgICBvdXRwdXRfZmlsZT1vdXRwdXRfZmlsZSkKLSAgb3V0cHV0X2ZpbGUuY2xvc2UoKQot
ICByZXR1cm4gc3VjY2VzcwotCi1kZWYgX0FkZFRvRmlsZUFuZERlbGV0ZShvdXRwdXRfZmlsZSwg
ZmlsZV9uYW1lKToKLSAgIiIiQWRkcyB0aGUgY29udGVudHMgb2YgYSBmaWxlIHRvIGEgcHJldmlv
dXNseSBvcGVuZWQgZmlsZS4KLQotICBBcmdzOgotICAgIG91dHB1dF9maWxlKGZpbGUpOiBUaGUg
b3VwdXQgZmlsZSwgcHJldmlvdXNseSBvcGVuZWQuCi0gICAgZmlsZV9uYW1lKHN0cmluZyk6IFRo
ZSBmaWxlIG5hbWUgb2YgdGhlIGZpbGUgdG8gYWRkIHRvIHRoZSBvdXRwdXQgZmlsZS4KLQotICBS
ZXR1cm46Ci0gICAgKGJvb2wpOiBUcnVlIGlmIHN1Y2Nlc3NmdWwsIEZhbHNlIG90aGVyd2lzZS4K
LSAgIiIiCi0gIGlucHV0X2ZpbGUgPSBvcGVuKGZpbGVfbmFtZSwgInJiIikKLSAgaW5wdXRfZmls
ZV9jb250ZW50cyA9IGlucHV0X2ZpbGUucmVhZCgpCi0gIG91dHB1dF9maWxlLndyaXRlKGlucHV0
X2ZpbGVfY29udGVudHMpCi0gIGlucHV0X2ZpbGUuY2xvc2UoKQotICB0cnk6Ci0gICAgb3MucmVt
b3ZlKGZpbGVfbmFtZSkKLSAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICBwcmludCA+PiBzeXMu
c3RkZXJyLCAnRXJyb3IgZGVsZXRpbmcgZmlsZSAlcy5cbkVycm9yOiAlcycgJSAoZmlsZV9uYW1l
LCBlKQotICAgIHJldHVybiBGYWxzZQotICByZXR1cm4gVHJ1ZQotCi0KLWRlZiBfT3ZlcmxheUJh
cmNvZGVBbmRCYXNlRnJhbWVzKGJhcmNvZGVzX2ZpbGUsIGJhc2VfZmlsZSwgb3V0cHV0X2ZpbGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJjb2Rlc19jb21wb25lbnRfc2l6
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX2NvbXBvbmVudF9zaXpl
cyk6Ci0gICIiIk92ZXJsYXlzIHRoZSBuZXh0IFlVViBmcmFtZSBmcm9tIGEgZmlsZSB3aXRoIGEg
YmFyY29kZS4KLQotICBBcmdzOgotICAgIGJhcmNvZGVzX2ZpbGUoRmlsZU9iamVjdCk6IFRoZSBZ
VVYgZmlsZSBjb250YWluaW5nIHRoZSBiYXJjb2RlcyAob3BlbmVkKS4KLSAgICBiYXNlX2ZpbGUo
RmlsZU9iamVjdCk6IFRoZSBiYXNlIFlVViBmaWxlIChvcGVuZWQpLgotICAgIG91dHB1dF9maWxl
KEZpbGVPYmplY3QpOiBUaGUgb3V0cHV0IG92ZXJsYWlkIGZpbGUgKG9wZW5lZCkuCi0gICAgYmFy
Y29kZXNfY29tcG9uZW50X3NpemVzKGxpc3Qgb2YgdHVwbGVzKTogVGhlIHdpZHRoIGFuZCBoZWln
aHQgb2YgZWFjaCBZLCBVCi0gICAgICBhbmQgViBwbGFuZSBvZiB0aGUgYmFyY29kZXMgWVVWIGZp
bGUuCi0gICAgYmFzZV9jb21wb25lbnRfc2l6ZXMobGlzdCBvZiB0dXBsZXMpOiBUaGUgd2lkdGgg
YW5kIGhlaWdodCBvZiBlYWNoIFksIFUgYW5kCi0gICAgICBWIHBsYW5lIG9mIHRoZSBiYXNlIFlV
ViBmaWxlLgotICBSZXR1cm46Ci0gICAgKGJvb2wpOiBUcnVlIGlmIHRoZXJlIGFyZSBtb3JlIHBs
YW5lcyAoaS5lLiBmcmFtZXMpIGluIHRoZSBiYXNlIGZpbGUsIGZhbHNlCi0gICAgICBvdGhlcndp
c2UuCi0gICIiIgotICAjIFdlIHdpbGwgbG9vcCB0aHJlZSB0aW1lcyAtIG9uY2UgZm9yIHRoZSBZ
LCBVIGFuZCBWIHBsYW5lcwotICBmb3IgKChiYXJjb2RlX2NvbXBfd2lkdGgsIGJhcmNvZGVfY29t
cF9oZWlnaHQpLAotICAgICAgKGJhc2VfY29tcF93aWR0aCwgYmFzZV9jb21wX2hlaWdodCkpIGlu
IHppcChiYXJjb2Rlc19jb21wb25lbnRfc2l6ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfY29tcG9uZW50X3NpemVzKToKLSAgICBmb3Ig
YmFzZV9yb3cgaW4gcmFuZ2UoYmFzZV9jb21wX2hlaWdodCk6Ci0gICAgICBiYXJjb2RlX3BsYW5l
X3RyYXZlcnNlZCA9IEZhbHNlCi0gICAgICBpZiAoYmFzZV9yb3cgPCBiYXJjb2RlX2NvbXBfaGVp
Z2h0KSBhbmQgbm90IGJhcmNvZGVfcGxhbmVfdHJhdmVyc2VkOgotICAgICAgICBiYXJjb2RlX3Bs
YW5lID0gYmFyY29kZXNfZmlsZS5yZWFkKGJhcmNvZGVfY29tcF93aWR0aCkKLSAgICAgICAgaWYg
YmFyY29kZV9wbGFuZSA9PSAiIjoKLSAgICAgICAgICBiYXJjb2RlX3BsYW5lX3RyYXZlcnNlZCA9
IFRydWUKLSAgICAgIGVsc2U6Ci0gICAgICAgIGJhcmNvZGVfcGxhbmVfdHJhdmVyc2VkID0gVHJ1
ZQotICAgICAgYmFzZV9wbGFuZSA9IGJhc2VfZmlsZS5yZWFkKGJhc2VfY29tcF93aWR0aCkKLQot
ICAgICAgaWYgYmFzZV9wbGFuZSA9PSAiIjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAg
IGlmIG5vdCBiYXJjb2RlX3BsYW5lX3RyYXZlcnNlZDoKLSAgICAgICAgIyBTdWJzdGl0dXRlIHBh
cnQgb2YgdGhlIGJhc2UgY29tcG9uZW50IHdpdGggdGhlIHRvcCBjb21wb25lbnQKLSAgICAgICAg
b3V0cHV0X2ZpbGUud3JpdGUoYmFyY29kZV9wbGFuZSkKLSAgICAgICAgYmFzZV9wbGFuZSA9IGJh
c2VfcGxhbmVbYmFyY29kZV9jb21wX3dpZHRoOl0KLSAgICAgIG91dHB1dF9maWxlLndyaXRlKGJh
c2VfcGxhbmUpCi0gIHJldHVybiBUcnVlCi0KLQotZGVmIE92ZXJsYXlZdXZGaWxlcyhiYXJjb2Rl
X3dpZHRoLCBiYXJjb2RlX2hlaWdodCwgYmFzZV93aWR0aCwgYmFzZV9oZWlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgIGJhcmNvZGVzX2ZpbGVfbmFtZSwgYmFzZV9maWxlX25hbWUsIG91dHB1dF9m
aWxlX25hbWUpOgotICAiIiJPdmVybGF5cyB0d28gWVVWIGZpbGVzIHN0YXJ0aW5nIGZyb20gdGhl
IHVwcGVyIGxlZnQgY29ybmVyIG9mIGJvdGguCi0KLSAgQXJnczoKLSAgICBiYXJjb2RlX3dpZHRo
KGludCk6IFRoZSB3aWR0aCBvZiB0aGUgYmFyY29kZSAodG8gYmUgb3ZlcmxhaWQpLgotICAgIGJh
cmNvZGVfaGVpZ2h0KGludCk6IFRoZSBoZWlnaHQgb2YgdGhlIGJhcmNvZGUgKHRvIGJlIG92ZXJs
YWlkKS4KLSAgICBiYXNlX3dpZHRoKGludCk6IFRoZSB3aWR0aCBvZiBhIGZyYW1lIG9mIHRoZSBi
YXNlIGZpbGUuCi0gICAgYmFzZV9oZWlnaHQoaW50KTogVGhlIGhlaWdodCBvZiBhIGZyYW1lIG9m
IHRoZSBiYXNlIGZpbGUuCi0gICAgYmFyY29kZXNfZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1l
IG9mIHRoZSBZVVYgZmlsZSBjb250YWluaW5nIHRoZSBZVVYKLSAgICAgIGJhcmNvZGVzLgotICAg
IGJhc2VfZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9mIHRoZSBiYXNlIFlVViBmaWxlLgot
ICAgIG91dHB1dF9maWxlX25hbWUoc3RyaW5nKTogVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBmaWxl
IHdoZXJlIHRoZSBvdmVybGFpZAotICAgICAgdmlkZW8gd2lsbCBiZSB3cml0dGVuLgotICAiIiIK
LSAgIyBDb21wb25lbnQgc2l6ZXMgPSBbWV9zaXplcywgVV9zaXplcywgVl9zaXplc10KLSAgYmFy
Y29kZXNfY29tcG9uZW50X3NpemVzID0gWyhiYXJjb2RlX3dpZHRoLCBiYXJjb2RlX2hlaWdodCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFyY29kZV93aWR0aC8yLCBiYXJjb2Rl
X2hlaWdodC8yKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXJjb2RlX3dpZHRo
LzIsIGJhcmNvZGVfaGVpZ2h0LzIpXQotICBiYXNlX2NvbXBvbmVudF9zaXplcyA9IFsoYmFzZV93
aWR0aCwgYmFzZV9oZWlnaHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZV93aWR0
aC8yLCBiYXNlX2hlaWdodC8yKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhc2Vfd2lk
dGgvMiwgYmFzZV9oZWlnaHQvMildCi0KLSAgYmFyY29kZXNfZmlsZSA9IG9wZW4oYmFyY29kZXNf
ZmlsZV9uYW1lLCAncmInKQotICBiYXNlX2ZpbGUgPSBvcGVuKGJhc2VfZmlsZV9uYW1lLCAncmIn
KQotICBvdXRwdXRfZmlsZSA9IG9wZW4ob3V0cHV0X2ZpbGVfbmFtZSwgJ3diJykKLQotICBkYXRh
X2xlZnQgPSBUcnVlCi0gIHdoaWxlIGRhdGFfbGVmdDoKLSAgICBkYXRhX2xlZnQgPSBfT3Zlcmxh
eUJhcmNvZGVBbmRCYXNlRnJhbWVzKGJhcmNvZGVzX2ZpbGUsIGJhc2VfZmlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyY29kZXNfY29tcG9uZW50
X3NpemVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZV9jb21wb25lbnRfc2l6ZXMpCi0KLSAgYmFyY29kZXNfZmlsZS5jbG9zZSgpCi0gIGJhc2VfZmls
ZS5jbG9zZSgpCi0gIG91dHB1dF9maWxlLmNsb3NlKCkKLQotCi1kZWYgQ2FsY3VsYXRlRnJhbWVz
TnVtYmVyRnJvbVl1dih5dXZfd2lkdGgsIHl1dl9oZWlnaHQsIGZpbGVfbmFtZSk6Ci0gICIiIkNh
bGN1bGF0ZXMgdGhlIG51bWJlciBvZiBmcmFtZXMgb2YgYSBZVVYgdmlkZW8uCi0KLSAgQXJnczoK
LSAgICB5dXZfd2lkdGgoaW50KTogV2lkdGggb2YgYSBmcmFtZSBvZiB0aGUgeXV2IGZpbGUuCi0g
ICAgeXV2X2hlaWdodChpbnQpOiBIZWlnaHQgb2YgYSBmcmFtZSBvZiB0aGUgWVVWIGZpbGUuCi0g
ICAgZmlsZV9uYW1lKHN0cmluZyk6IFRoZSBuYW1lIG9mIHRoZSBZVVYgZmlsZS4KLSAgUmV0dXJu
OgotICAgIChpbnQpOiBUaGUgbnVtYmVyIG9mIGZyYW1lcyBpbiB0aGUgWVVWIGZpbGUuCi0gICIi
IgotICBmaWxlX3NpemUgPSBvcy5wYXRoLmdldHNpemUoZmlsZV9uYW1lKQotCi0gIHlfcGxhbmVf
c2l6ZSA9IHl1dl93aWR0aCAqIHl1dl9oZWlnaHQKLSAgdV9wbGFuZV9zaXplID0gKHl1dl93aWR0
aC8yKSAqICh5dXZfaGVpZ2h0LzIpICAjIEVxdWFscyB0byBWIHBsYW5lIHNpemUgdG9vCi0gIGZy
YW1lX3NpemUgPSB5X3BsYW5lX3NpemUgKyAoMiAqIHVfcGxhbmVfc2l6ZSkKLSAgcmV0dXJuIGlu
dChmaWxlX3NpemUvZnJhbWVfc2l6ZSkgICMgU2hvdWxkIGJlIGludCBhbnl3YXkKLQotCi1kZWYg
X0Zvcm1KYXJzU3RyaW5nKHBhdGhfdG9fenhpbmcpOgotICAiIiJGb3JtcyB0aGUgdGhlIFp4aW5n
IGNvcmUgYW5kIGphdmFzZSBqYXJzIGFyZ3VtZW50LgotCi0gIEFyZ3M6Ci0gICAgcGF0aF90b196
eGluZyhzdHJpbmcpOiBUaGUgcGF0aCB0byB0aGUgWnhpbmcgY2hlY2tvdXQgZm9sZGVyLgotICBS
ZXR1cm46Ci0gICAgKHN0cmluZyk6IFRoZSBuZXdseSBmb3JtZWQgamFycyBhcmd1bWVudC4KLSAg
IiIiCi0gIGphdmFzZV9qYXIgPSBvcy5wYXRoLmpvaW4ocGF0aF90b196eGluZywgImphdmFzZSIs
ICJqYXZhc2UuamFyIikKLSAgY29yZV9qYXIgPSBvcy5wYXRoLmpvaW4ocGF0aF90b196eGluZywg
ImNvcmUiLCAiY29yZS5qYXIiKQotICBkZWxpbWl0ZXIgPSAnOicKLSAgaWYgb3MubmFtZSAhPSAn
cG9zaXgnOgotICAgIGRlbGltaXRlciA9ICc7JwotICByZXR1cm4gamF2YXNlX2phciArIGRlbGlt
aXRlciArIGNvcmVfamFyCi0KLWRlZiBfUGFyc2VBcmdzKCk6Ci0gICIiIlJlZ2lzdGVycyB0aGUg
Y29tbWFuZC1saW5lIG9wdGlvbnMuIiIiCi0gIHVzYWdlID0gInVzYWdlOiAlcHJvZyBbb3B0aW9u
c10iCi0gIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT11c2FnZSkKLQotICBw
YXJzZXIuYWRkX29wdGlvbignLS1iYXJjb2RlX3dpZHRoJywgdHlwZT0naW50JywKLSAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1fREVGQVVMVF9CQVJDT0RFX1dJRFRILAotICAgICAgICAgICAg
ICAgICAgICBoZWxwPSgnV2lkdGggb2YgdGhlIGJhcmNvZGVzIHRvIGJlIG92ZXJsYWlkIG9uIHRv
cCBvZiB0aGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcgYmFzZSBmaWxlLiBEZWZhdWx0
OiAlZGVmYXVsdCcpKQotICBwYXJzZXIuYWRkX29wdGlvbignLS1iYXJjb2RlX2hlaWdodCcsIHR5
cGU9J2ludCcsIGRlZmF1bHQ9MzIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdIZWlnaHQg
b2YgdGhlIGJhcmNvZGVzIHRvIGJlIG92ZXJsYWlkIG9uIHRvcCBvZiB0aGUnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICcgYmFzZSBmaWxlLiBEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBwYXJz
ZXIuYWRkX29wdGlvbignLS1iYXNlX2ZyYW1lX3dpZHRoJywgdHlwZT0naW50JywgZGVmYXVsdD0z
NTIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdXaWR0aCBvZiB0aGUgYmFzZSBZVVYgZmls
ZVwncyBmcmFtZXMuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZh
dWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLWJhc2VfZnJhbWVfaGVpZ2h0JywgdHlwZT0n
aW50JywgZGVmYXVsdD0yODgsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdIZWlnaHQgb2Yg
dGhlIHRvcCBZVVYgZmlsZVwncyBmcmFtZXMuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
J0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLWJhcmNvZGVzX3l1
dicsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRf
QkFSQ09ERVNfRklMRSwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1RoZSBZVVYgZmlsZSB3
aXRoIHRoZSBiYXJjb2RlcyBpbiBZVVYuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Rl
ZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLWJhc2VfeXV2JywgdHlw
ZT0nc3RyaW5nJywgZGVmYXVsdD0nYmFzZS55dXYnLAotICAgICAgICAgICAgICAgICAgICBoZWxw
PSgnVGhlIGJhc2UgWVVWIGZpbGUgdG8gYmUgb3ZlcmxhaWQuICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLW91
dHB1dF95dXYnLCB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PSdvdXRwdXQueXV2JywKLSAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ1RoZSBvdXRwdXQgWVVWIGZpbGUgY29udGFpbmluZyB0aGUgYmFz
ZSBvdmVybGFpZCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyB3aXRoIHRoZSBiYXJjb2Rl
cy4gRGVmYXVsdDogJWRlZmF1bHQnKSkKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0tcG5nX2JhcmNv
ZGVzX291dHB1dF9kaXInLCB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PScuJywKLSAgICAgICAgICAg
ICAgICAgICAgaGVscD0oJ091dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIFBORyBiYXJjb2RlcyB3
aWxsIGJlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC4gRGVmYXVsdDog
JWRlZmF1bHQnKSkKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy0tcG5nX2JhcmNvZGVzX2lucHV0X2Rp
cicsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9Jy4nLAotICAgICAgICAgICAgICAgICAgICBoZWxw
PSgnSW5wdXQgZGlyZWN0b3J5IGZyb20gd2hlcmUgdGhlIFBORyBiYXJjb2RlcyB3aWxsIGJlICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYWQuIERlZmF1bHQ6ICVkZWZhdWx0JykpCi0g
IHBhcnNlci5hZGRfb3B0aW9uKCctLXl1dl9iYXJjb2Rlc19vdXRwdXRfZGlyJywgdHlwZT0nc3Ry
aW5nJywgZGVmYXVsdD0nLicsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdPdXRwdXQgZGly
ZWN0b3J5IHdoZXJlIHRoZSBZVVYgYmFyY29kZXMgd2lsbCBiZSAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICdnZW5lcmF0ZWQuIERlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRf
b3B0aW9uKCctLXl1dl9mcmFtZXNfaW5wdXRfZGlyJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0n
LicsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdJbnB1dCBkaXJlY3RvcnkgZnJvbSB3aGVy
ZSB0aGUgWVVWIHdpbGwgYmUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAncmVhZCBiZWZv
cmUgY29tYmluYXRpb24uIERlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9u
KCctLXp4aW5nX2RpcicsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9J3p4aW5nJywKLSAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ1BhdGggdG8gdGhlIFp4aW5nIGJhcmNvZGVzIGxpYnJhcnkuICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCi0gIG9wdGlv
bnMgPSBwYXJzZXIucGFyc2VfYXJncygpWzBdCi0gIHJldHVybiBvcHRpb25zCi0KLQotZGVmIG1h
aW4oKToKLSAgIiIiVGhlIG1haW4gZnVuY3Rpb24uCi0KLSAgQSBzaW1wbGUgaW52b2NhdGlvbiB3
aWxsIGJlOgotICAuL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29scy9iYXJjb2RlX2VuY29k
ZXIucHkgLS1iYXJjb2RlX2hlaWdodD0zMgotICAtLWJhc2VfZnJhbWVfd2lkdGg9MzUyIC0tYmFz
ZV9mcmFtZV9oZWlnaHQ9Mjg4Ci0gIC0tYmFzZV95dXY9PHBhdGhfYW5kX25hbWVfb2ZfYmFzZV9m
aWxlPgotICAtLW91dHB1dF95dXY9PHBhdGggYW5kIG5hbWVfb2Zfb3V0cHV0X2ZpbGU+Ci0gICIi
IgotICBvcHRpb25zID0gX1BhcnNlQXJncygpCi0gICMgVGhlIGJhcmNvZGVzIHdpdGggd2lsbCBi
ZSBkaWZmZXJlbnQgdGhhbiB0aGUgYmFzZSBmcmFtZSB3aWR0aCBvbmx5IGlmCi0gICMgZXhwbGlj
aXRseSBzcGVjaWZpZWQgYXQgdGhlIGNvbW1hbmQgbGluZS4KLSAgaWYgb3B0aW9ucy5iYXJjb2Rl
X3dpZHRoID09IF9ERUZBVUxUX0JBUkNPREVfV0lEVEg6Ci0gICAgb3B0aW9ucy5iYXJjb2RlX3dp
ZHRoID0gb3B0aW9ucy5iYXNlX2ZyYW1lX3dpZHRoCi0gICMgSWYgdGhlIHVzZXIgcHJvdmlkZXMg
YSB2YWx1ZSBmb3IgdGhlIGJhcmNvZGVzIFlVViB2aWRlbyBmaWxlLCB3ZSB3aWxsIGtlZXAKLSAg
IyBpdC4gT3RoZXJ3aXNlIHdlIGNyZWF0ZSBhIHRlbXAgZmlsZSB3aGljaCBpcyByZW1vdmVkIGFm
dGVyIGl0IGhhcyBiZWVuIHVzZWQuCi0gIGtlZXBfYmFyY29kZXNfeXV2X2ZpbGUgPSBGYWxzZQot
ICBpZiBvcHRpb25zLmJhcmNvZGVzX3l1diAhPSBfREVGQVVMVF9CQVJDT0RFU19GSUxFOgotICAg
IGtlZXBfYmFyY29kZXNfeXV2X2ZpbGUgPSBUcnVlCi0KLSAgIyBDYWxjdWxhdGUgdGhlIG51bWJl
ciBvZiBiYXJjb2RlcyAtIGl0IGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZnJhbWVzIGluCi0g
ICMgdGhlIGJhc2UgZmlsZS4KLSAgbnVtYmVyX29mX2JhcmNvZGVzID0gQ2FsY3VsYXRlRnJhbWVz
TnVtYmVyRnJvbVl1digKLSAgICAgIG9wdGlvbnMuYmFzZV9mcmFtZV93aWR0aCwgb3B0aW9ucy5i
YXNlX2ZyYW1lX2hlaWdodCwgb3B0aW9ucy5iYXNlX3l1dikKLQotICBzY3JpcHRfZGlyID0gb3Mu
cGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkpCi0gIHp4aW5nX2RpciA9
IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAndGhpcmRfcGFydHknLCAnenhpbmcnKQotICAjIEdl
bmVyYXRlIGJhcmNvZGVzIC0gd2lsbCBnZW5lcmF0ZSB0aGVtIGluIFBORy4KLSAgR2VuZXJhdGVV
cGNhQmFyY29kZXMobnVtYmVyX29mX2JhcmNvZGVzLCBvcHRpb25zLmJhcmNvZGVfd2lkdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYmFyY29kZV9oZWlnaHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dF9kaXJlY3Rvcnk9b3B0aW9ucy5wbmdfYmFyY29kZXNfb3V0cHV0
X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgcGF0aF90b196eGluZz16eGluZ19kaXIpCi0g
ICMgQ29udmVydCB0aGUgUE5HIGJhcmNvZGVzIHRvIHRvIFlVViBmb3JtYXQuCi0gIENvbnZlcnRQ
bmdUb1l1dkJhcmNvZGVzKG9wdGlvbnMucG5nX2JhcmNvZGVzX2lucHV0X2RpciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9ucy55dXZfYmFyY29kZXNfb3V0cHV0X2RpcikKLSAgIyBD
b21iaW5lIHRoZSBZVVYgYmFyY29kZXMgaW50byBvbmUgWVVWIGZpbGUuCi0gIENvbWJpbmVZdXZG
cmFtZXNJbnRvT25lRmlsZShvcHRpb25zLmJhcmNvZGVzX3l1diwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlucHV0X2RpcmVjdG9yeT1vcHRpb25zLnl1dl9mcmFtZXNfaW5wdXRfZGly
KQotICAjIE92ZXJsYXkgdGhlIGJhcmNvZGVzIG92ZXIgdGhlIGJhc2UgZmlsZS4KLSAgT3Zlcmxh
eVl1dkZpbGVzKG9wdGlvbnMuYmFyY29kZV93aWR0aCwgb3B0aW9ucy5iYXJjb2RlX2hlaWdodCwK
LSAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYmFzZV9mcmFtZV93aWR0aCwgb3B0aW9ucy5iYXNl
X2ZyYW1lX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYmFyY29kZXNfeXV2LCBv
cHRpb25zLmJhc2VfeXV2LCBvcHRpb25zLm91dHB1dF95dXYpCi0KLSAgaWYgbm90IGtlZXBfYmFy
Y29kZXNfeXV2X2ZpbGU6Ci0gICAgIyBSZW1vdmUgdGhlIHRlbXBvcmFyeSBiYXJjb2RlcyBZVVYg
ZmlsZQotICAgIG9zLnJlbW92ZShvcHRpb25zLmJhcmNvZGVzX3l1dikKLQotCi1pZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvYmFyY29kZV90b29s
cy9idWlsZF96eGluZy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL2J1aWxkX3p4aW5nLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5MjY5NmE3OGMyYzM2ZmQxMjNhOWZjMTI1MzFkYzM0YzJlZDBlOWQ2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xz
L2J1aWxkX3p4aW5nLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAoYykgMjAxMiBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotIyB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSMgdHJlZS4gQW4g
YWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3Vu
ZAotIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5Ci0jIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZSB0cmVlLgotCi1pbXBvcnQgb3MKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lz
Ci0KLQotZGVmIFJ1bkFudEJ1aWxkQ29tbWFuZChwYXRoX3RvX2FudF9idWlsZF9maWxlKToKLSAg
IiIiVHJpZXMgdG8gYnVpbGQgdGhlIHBhc3NlZCBidWlsZCBmaWxlIHdpdGggYW50LiIiIgotICBh
bnRfZXhlY3V0YWJsZSA9ICdhbnQnCi0gIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAg
IGlmIG9zLmdldGVudignQU5UX0hPTUUnKToKLSAgICAgIGFudF9leGVjdXRhYmxlID0gb3MucGF0
aC5qb2luKG9zLmdldGVudignQU5UX0hPTUUnKSwgJ2JpbicsICdhbnQuYmF0JykKLSAgICBlbHNl
OgotICAgICAgYW50X2V4ZWN1dGFibGUgPSAnYW50LmJhdCcKLSAgY21kID0gW2FudF9leGVjdXRh
YmxlLCAnLWJ1aWxkZmlsZScsIHBhdGhfdG9fYW50X2J1aWxkX2ZpbGVdCi0gIHRyeToKLSAgICBw
cm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zeXMuc3Rkb3V0LCBzdGRlcnI9
c3lzLnN0ZGVycikKLSAgICBwcm9jZXNzLndhaXQoKQotICAgIGlmIHByb2Nlc3MucmV0dXJuY29k
ZSAhPSAwOgotICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgJ0ZhaWxlZCB0byBleGVjdXRlOiAl
cycgJSAnICcuam9pbihjbWQpCi0gICAgcmV0dXJuIHByb2Nlc3MucmV0dXJuY29kZQotICBleGNl
cHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKLSAgICBwcmludCA+PiBzeXMu
c3RkZXJyLCAnRmFpbGVkIHRvIGV4ZWN1dGU6ICVzLlxuQ2F1c2U6ICVzJyAlICgnICcuam9pbihj
bWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGUpCi0gICAgcmV0dXJuIC0xCi0KLWRlZiBtYWluKCk6Ci0gIGNvcmVfYnVp
bGQgPSBvcy5wYXRoLmpvaW4oJ3RoaXJkX3BhcnR5JywgJ3p4aW5nJywgJ2NvcmUnLCAnYnVpbGQu
eG1sJykKLSAgUnVuQW50QnVpbGRDb21tYW5kKGNvcmVfYnVpbGQpCi0KLSAgamF2YXNlX2J1aWxk
ID0gb3MucGF0aC5qb2luKCd0aGlyZF9wYXJ0eScsICd6eGluZycsICdqYXZhc2UnLCAnYnVpbGQu
eG1sJykKLSAgcmV0dXJuIFJ1bkFudEJ1aWxkQ29tbWFuZChqYXZhc2VfYnVpbGQpCi0KLQotaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNv
ZGVfdG9vbHMvaGVscGVyX2Z1bmN0aW9ucy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9iYXJjb2RlX3Rvb2xzL2hlbHBlcl9mdW5jdGlvbnMu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyNzMyMmY0MWY5MjY3MGI3MTFhZTVm
OGE4YTdiNjA3MWUxNDA3YzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rv
b2xzL2JhcmNvZGVfdG9vbHMvaGVscGVyX2Z1bmN0aW9ucy5weQorKysgL2Rldi9udWxsCkBAIC0x
LDEwNSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChjKSAyMDEy
IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
Ci0jIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZQotIyB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBy
aWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0jIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29u
dHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0KLWltcG9ydCBtdWx0aXByb2Nl
c3NpbmcKLWltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLQotX0RFRkFV
TFRfUEFERElORyA9IDQKLQotCi1jbGFzcyBIZWxwZXJFcnJvcihFeGNlcHRpb24pOgotICAiIiJF
eGNlcHRpb24gcmFpc2VkIGZvciBlcnJvcnMgaW4gdGhlIGhlbHBlci4iIiIKLSAgcGFzcwotCi0K
LWRlZiBaZXJvUGFkKG51bWJlciwgcGFkZGluZz1fREVGQVVMVF9QQURESU5HKToKLSAgIiIiQ29u
dmVydHMgYW4gaW50IGludG8gYSB6ZXJvIHBhZGRlZCBzdHJpbmcuCi0KLSAgQXJnczoKLSAgICBu
dW1iZXIoaW50KTogVGhlIG51bWJlciB0byBjb252ZXJ0LgotICAgIHBhZGRpbmcoaW50KTogVGhl
IG51bWJlciBvZiBjaGFycyBpbiB0aGUgb3V0cHV0LiBOb3RlIHRoYXQgaWYgeW91IHBhc3MgZm9y
Ci0gICAgICBleGFtcGxlIG51bWJlcj0yMzQ1NiBhbmQgcGFkZGluZz00LCB0aGUgb3V0cHV0IHdp
bGwgc3RpbGwgYmUgJzIzNDU2JywKLSAgICAgIGkuZS4gaXQgd2lsbCBub3QgYmUgY3JvcHBlZC4g
SWYgeW91IHBhc3MgbnVtYmVyPTIgYW5kIHBhZGRpbmc9NCwgdGhlCi0gICAgICByZXR1cm4gdmFs
dWUgd2lsbCBiZSAnMDAwMicuCi0gIFJldHVybjoKLSAgICAoc3RyaW5nKTogVGhlIHplcm8gcGFk
ZGVkIG51bWJlciBjb252ZXJ0ZWQgdG8gc3RyaW5nLgotICAiIiIKLSAgcmV0dXJuIHN0cihudW1i
ZXIpLnpmaWxsKHBhZGRpbmcpCi0KLQotZGVmIFJ1blNoZWxsQ29tbWFuZChjbWRfbGlzdCwgZmFp
bF9tc2c9Tm9uZSk6Ci0gICIiIkV4ZWN1dGVzIGEgY29tbWFuZC4KLQotICBBcmdzOgotICAgIGNt
ZF9saXN0KGxpc3QpOiBDb21tYW5kIGxpc3QgdG8gZXhlY3V0ZS4KLSAgICBmYWlsX21zZyhzdHJp
bmcpOiBNZXNzYWdlIGRlc2NyaWJpbmcgdGhlIGVycm9yIGluIGNhc2UgdGhlIGNvbW1hbmQgZmFp
bHMuCi0KLSAgUmV0dXJuOgotICAgIChzdHJpbmcpOiBUaGUgc3RhbmRhcmQgb3V0cHV0IGZyb20g
cnVubmluZyB0aGUgY29tbWFuZC4KLQotICBSYWlzZToKLSAgICBIZWxwZXJFcnJvcjogSWYgY29t
bWFuZCBmYWlscy4KLSAgIiIiCi0gIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZF9saXN0
LCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICBvdXRwdXQsIGVycm9yID0gcHJvY2Vzcy5jb21tdW5p
Y2F0ZSgpCi0gIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgotICAgIGlmIGZhaWxfbXNnOgot
ICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgZmFpbF9tc2cKLSAgICByYWlzZSBIZWxwZXJFcnJv
cignRmFpbGVkIHRvIHJ1biAlczogY29tbWFuZCByZXR1cm5lZCAlZCBhbmQgcHJpbnRlZCAnCi0g
ICAgICAgICAgICAgICAgICAgICAgJyVzIGFuZCAlcycgJSAoJyAnLmpvaW4oY21kX2xpc3QpLCBw
cm9jZXNzLnJldHVybmNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0LCBlcnJvcikpCi0gIHJldHVybiBvdXRwdXQuc3RyaXAoKQotCi0KLWRlZiBQZXJmb3Jt
QWN0aW9uT25BbGxGaWxlcyhkaXJlY3RvcnksIGZpbGVfcGF0dGVybiwgZmlsZV9leHRlbnNpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbnVtYmVyLCBhY3Rpb24sICoqa3dh
cmdzKToKLSAgIiIiRnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIGdpdmVuIGFjdGlvbiBvbiBhbGwg
ZmlsZXMgbWF0Y2hpbmcgYSBwYXR0ZXJuLgotCi0gIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgZmls
ZXMgYXJlIG5hbWVkIGZpbGVfcGF0dGVybnh4eHguZmlsZV9leHRlbnNpb24sIHdoZXJlCi0gIHh4
eHggYXJlIGRpZ2l0cyBzdGFydGluZyBmcm9tIHN0YXJ0X251bWJlci4KLQotICBBcmdzOgotICAg
IGRpcmVjdG9yeShzdHJpbmcpOiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBmaWxlcyBsaXZlLgot
ICAgIGZpbGVfcGF0dGVybihzdHJpbmcpOiBUaGUgbmFtZSBwYXR0ZXJuIG9mIHRoZSBmaWxlcy4K
LSAgICBmaWxlX2V4dGVuc2lvbihzdHJpbmcpOiBUaGUgZmlsZXMnIGV4dGVuc2lvbi4KLSAgICBz
dGFydF9udW1iZXIoaW50KTogRnJvbSB3aGVyZSB0byBzdGFydCB0byBjb3VudCBmcmFtZXMuCi0g
ICAgYWN0aW9uKGZ1bmN0aW9uKTogVGhlIGFjdGlvbiB0byBiZSBwZXJmb3JtZWQgb3ZlciB0aGUg
ZmlsZXMuIE11c3QgcmV0dXJuCi0gICAgICAgIEZhbHNlIGlmIHRoZSBhY3Rpb24gZmFpbGVkLCBU
cnVlIG90aGVyd2lzZS4gSXQgc2hvdWxkIHRha2UgYSBmaWxlIG5hbWUKLSAgICAgICAgYXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGFuZCAqKmt3YXJncyBhcyBhcmd1bWVudHMuIFRoZSBmdW5jdGlvbiBt
dXN0IGJlCi0gICAgICAgIHBvc3NpYmxlIHRvIHBpY2tsZSwgc28gaXQgY2Fubm90IGJlIGEgYm91
bmQgZnVuY3Rpb24gKGZvciBpbnN0YW5jZSkuCi0KLSAgUmV0dXJuOgotICAgIChib29sKTogV2hl
dGhlciBwZXJmb3JtaW5nIHRoZSBhY3Rpb24gb3ZlciBhbGwgZmlsZXMgd2FzIHN1Y2Nlc3NmdWwg
b3Igbm90LgotICAiIiIKLSAgZmlsZV9wcmVmaXggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBm
aWxlX3BhdHRlcm4pCi0gIGZpbGVfbnVtYmVyID0gc3RhcnRfbnVtYmVyCi0KLSAgcHJvY2Vzc19w
b29sID0gbXVsdGlwcm9jZXNzaW5nLlBvb2wocHJvY2Vzc2VzPW11bHRpcHJvY2Vzc2luZy5jcHVf
Y291bnQoKSkKLSAgcmVzdWx0cyA9IFtdCi0gIHdoaWxlIFRydWU6Ci0gICAgemVyb19wYWRkZWRf
ZmlsZV9udW1iZXIgPSBaZXJvUGFkKGZpbGVfbnVtYmVyKQotICAgIGZpbGVfbmFtZSA9IGZpbGVf
cHJlZml4ICsgemVyb19wYWRkZWRfZmlsZV9udW1iZXIgKyAnLicgKyBmaWxlX2V4dGVuc2lvbgot
ICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShmaWxlX25hbWUpOgotICAgICAgYnJlYWsKLSAgICBm
dXR1cmUgPSBwcm9jZXNzX3Bvb2wuYXBwbHlfYXN5bmMoYWN0aW9uLCBhcmdzPShmaWxlX25hbWUs
KSwga3dkcz1rd2FyZ3MpCi0gICAgcmVzdWx0cy5hcHBlbmQoZnV0dXJlKQotICAgIGZpbGVfbnVt
YmVyICs9IDEKLQotICBzdWNjZXNzZnVsID0gVHJ1ZQotICBmb3IgcmVzdWx0IGluIHJlc3VsdHM6
Ci0gICAgaWYgbm90IHJlc3VsdC5nZXQoKToKLSAgICAgIHByaW50ICJBdCBsZWFzdCBvbmUgYWN0
aW9uICVzIGZhaWxlZCBmb3IgZmlsZXMgJXN4eHh4LiVzLiIgJSAoCi0gICAgICAgICAgYWN0aW9u
LCBmaWxlX3BhdHRlcm4sIGZpbGVfZXh0ZW5zaW9uKQotICAgICAgc3VjY2Vzc2Z1bCA9IEZhbHNl
Ci0KLSAgcHJvY2Vzc19wb29sLmNsb3NlKCkKLSAgcmV0dXJuIHN1Y2Nlc3NmdWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9i
YXJjb2RlX3Rvb2xzL3l1dl9jcm9wcGVyLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2JhcmNvZGVfdG9vbHMveXV2X2Nyb3BwZXIucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwOWYwN2RjOWNjN2FkOTBlYzJkNDI5MTY3Zjky
YjUzYTc4MmNmM2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2Jh
cmNvZGVfdG9vbHMveXV2X2Nyb3BwZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAoYykgMjAxMiBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotIyB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
LSMgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAotIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5Ci0jIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwot
aW1wb3J0IHN5cwotCi0KLWRlZiBfQ3JvcE9uZUZyYW1lKHl1dl9maWxlLCBvdXRwdXRfZmlsZSwg
Y29tcG9uZW50X3NpemVzKToKLSAgIiIiQ3JvcHMgb25lIGZyYW1lLgotCi0gIFRoaXMgZnVuY3Rp
b24gY3JvcHMgb25lIGZyYW1lIGdvaW5nIHRocm91Z2ggYWxsIHRoZSBZVVYgcGxhbmVzIGFuZCBj
cm9wcGluZwotICByZXNwZWN0aXZlIGFtb3VudCBvZiByb3dzLgotCi0gIEFyZ3M6Ci0gICAgeXV2
X2ZpbGUoZmlsZSk6IFRoZSBvcGVuZWQgKGZvciBiaW5hcnkgcmVhZGluZykgWVVWIGZpbGUuCi0g
ICAgb3V0cHV0X2ZpbGUoZmlsZSk6IFRoZSBvcGVuZWQgKGZvciBiaW5hcnkgd3JpdGluZykgZmls
ZS4KLSAgICBjb21wb25lbnRfc2l6ZXMobGlzdCBvZiAzIDMtcGxlcyk6IFRoZSBsaXN0IGNvbnRh
aW5zIHRoZSBzaXplcyBmb3IgYWxsIHRoZQotICAgICAgcGxhbmVzIChZLCBVLCBWKSBvZiB0aGUg
WVVWIGZpbGUgcGx1cyB0aGUgY3JvcF9oZWlnaHQgc2NhbGVkIGZvciBldmVyeQotICAgICAgcGxh
bmUuIFRoZSBzaXplcyBlcXVhbCB3aWR0aCwgaGVpZ2h0IGFuZCBjcm9wX2hlaWdodCBmb3IgdGhl
IFkgcGxhbmUsCi0gICAgICBhbmQgYXJlIGVxdWFsIHRvIHdpZHRoLzIsIGhlaWdodC8yIGFuZCBj
cm9wX2hlaWdodC8yIGZvciB0aGUgVSBhbmQgVgotICAgICAgcGxhbmVzLgotICBSZXR1cm46Ci0g
ICAgKGJvb2wpOiBUcnVlIGlmIHRoZXJlIGFyZSBtb3JlIGZyYW1lcyB0byBjcm9wLCBGYWxzZSBv
dGhlcndpc2UuCi0gICIiIgotICBmb3IgY29tcF93aWR0aCwgY29tcF9oZWlnaHQsIGNvbXBfY3Jv
cF9oZWlnaHQgaW4gY29tcG9uZW50X3NpemVzOgotICAgIGZvciByb3cgaW4gcmFuZ2UoY29tcF9o
ZWlnaHQpOgotICAgICAgIyBSZWFkIHRoZSBwbGFuZSBkYXRhIGZvciB0aGlzIHJvdy4KLSAgICAg
IHl1dl9wbGFuZSA9IHl1dl9maWxlLnJlYWQoY29tcF93aWR0aCkKLQotICAgICAgIyBJZiB0aGUg
cGxhbmUgaXMgZW1wdHksIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBmaWxlLgotICAg
ICAgaWYgeXV2X3BsYW5lID09ICIiOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgIyBP
bmx5IHdyaXRlIHRoZSBwbGFuZSBkYXRhIGZvciB0aGUgcm93cyBiaWdnZXIgdGhhbiBjcm9wX2hl
aWdodC4KLSAgICAgIGlmIHJvdyA+PSBjb21wX2Nyb3BfaGVpZ2h0OgotICAgICAgICBvdXRwdXRf
ZmlsZS53cml0ZSh5dXZfcGxhbmUpCi0gIHJldHVybiBUcnVlCi0KLQotZGVmIENyb3BGcmFtZXMo
eXV2X2ZpbGVfbmFtZSwgb3V0cHV0X2ZpbGVfbmFtZSwgd2lkdGgsIGhlaWdodCwgY3JvcF9oZWln
aHQpOgotICAiIiJDcm9wcyByb3dzIG9mIHBpeGVscyBmcm9tIHRoZSB0b3Agb2YgdGhlIFlVViBm
cmFtZXMuCi0KLSAgVGhpcyBmdW5jdGlvbiBnb2VzIHRocm91Z2ggYWxsIHRoZSBmcmFtZXMgaW4g
YSB2aWRlbyBhbmQgY3JvcHMgdGhlIGNyb3BfaGVpZ2h0Ci0gIHRvcCBwaXhlbCByb3dzIG9mIGV2
ZXJ5IGZyYW1lLgotCi0gIEFyZ3M6Ci0gICAgeXV2X2ZpbGVfbmFtZShzdHJpbmcpOiBUaGUgbmFt
ZSBvZiB0aGUgWVVWIGZpbGUgdG8gYmUgY3JvcHBlZC4KLSAgICBvdXRwdXRfZmlsZV9uYW1lKHN0
cmluZyk6IFRoZSBuYW1lIG9mIHRoZSBvdXRwdXQgZmlsZSB3aGVyZSB0aGUgcmVzdWx0IHdpbGwK
LSAgICAgIGJlIHdyaXR0ZW4uCi0gICAgd2lkdGgoaW50KTogVGhlIHdpZHRoIG9mIHRoZSBvcmln
aW5hbCBZVVYgZmlsZS4KLSAgICBoZWlnaHQoaW50KTogVGhlIGhlaWdodCBvZiB0aGUgb3JpZ2lu
YWwgWVVWIGZpbGUuCi0gICAgY3JvcF9oZWlnaHQoaW50KTogVGhlIGhlaWdodCAodGhlIG51bWJl
ciBvZiBwaXhlbCByb3dzKSB0byBiZSBjcm9wcGVkIGZyb20KLSAgICAgIHRoZSBmcmFtZXMuCi0g
ICIiIgotICAjIENvbXBvbmVudCBzaXplcyA9IFtZX3NpemVzLCBVX3NpemVzLCBWX3NpemVzXS4K
LSAgY29tcG9uZW50X3NpemVzID0gWyh3aWR0aCwgaGVpZ2h0LCBjcm9wX2hlaWdodCksCi0gICAg
ICAgICAgICAgICAgICAgICAod2lkdGgvMiwgaGVpZ2h0LzIsIGNyb3BfaGVpZ2h0LzIpLAotICAg
ICAgICAgICAgICAgICAgICAgKHdpZHRoLzIsIGhlaWdodC8yLCBjcm9wX2hlaWdodC8yKV0KLQot
ICB5dXZfZmlsZSA9IG9wZW4oeXV2X2ZpbGVfbmFtZSwgJ3JiJykKLSAgb3V0cHV0X2ZpbGUgPSBv
cGVuKG91dHB1dF9maWxlX25hbWUsICd3YicpCi0KLSAgZGF0YV9sZWZ0ID0gVHJ1ZQotICB3aGls
ZSBkYXRhX2xlZnQ6Ci0gICAgZGF0YV9sZWZ0ID0gX0Nyb3BPbmVGcmFtZSh5dXZfZmlsZSwgb3V0
cHV0X2ZpbGUsIGNvbXBvbmVudF9zaXplcykKLQotICB5dXZfZmlsZS5jbG9zZSgpCi0gIG91dHB1
dF9maWxlLmNsb3NlKCkKLQotCi1kZWYgX1BhcnNlQXJncygpOgotICAiIiJSZWdpc3RlcnMgdGhl
IGNvbW1hbmQtbGluZSBvcHRpb25zLiIiIgotICB1c2FnZSA9ICJ1c2FnZTogJXByb2cgW29wdGlv
bnNdIgotICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9dXNhZ2UpCi0KLSAg
cGFyc2VyLmFkZF9vcHRpb24oJy0td2lkdGgnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PTM1MiwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1dpZHRoIG9mIHRo
ZSBZVVYgZmlsZVwncyBmcmFtZXMuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1
bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLWhlaWdodCcsIHR5cGU9J2lu
dCcsIGRlZmF1bHQ9Mjg4LAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnSGVpZ2h0IG9mIHRo
ZSBZVVYgZmlsZVwncyBmcmFtZXMuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlZmF1
bHQ6ICVkZWZhdWx0JykpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctLWNyb3BfaGVpZ2h0JywgdHlw
ZT0naW50JywgZGVmYXVsdD0zMiwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0hvdyBtdWNo
IG9mIHRoZSB0b3Agb2YgdGhlIFlVViBmaWxlIHRvIGNyb3AuICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0hhcyB0byBiZSBtb2R1bGUgb2YgMi4gRGVmYXVsdDogJWRlZmF1bHQnKSkKLSAg
cGFyc2VyLmFkZF9vcHRpb24oJy0teXV2X2ZpbGUnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAg
ICAgICAgICAgICBoZWxwPSgnVGhlIFlVViBmaWxlIHRvIGJlIGNyb3BwZWQuJykpCi0gIHBhcnNl
ci5hZGRfb3B0aW9uKCctLW91dHB1dF9maWxlJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nb3V0
cHV0Lnl1dicsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdUaGUgb3V0cHV0IFlVViBmaWxl
IGNvbnRhaW5pbmcgdGhlIGNyb3BwZWQgWVVWLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICdEZWZhdWx0OiAlZGVmYXVsdCcpKQotICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKVsw
XQotICBpZiBub3Qgb3B0aW9ucy55dXZfZmlsZToKLSAgICBwYXJzZXIuZXJyb3IoJ3l1dl9maWxl
IGFyZ3VtZW50IG1pc3NpbmcuIFBsZWFzZSBzcGVjaWZ5IGlucHV0IFlVViBmaWxlIScpCi0gIHJl
dHVybiBvcHRpb25zCi0KLQotZGVmIG1haW4oKToKLSAgIiIiQSB0b29sIHRvIGNyb3Agcm93cyBv
ZiBwaXhlbHMgZnJvbSB0aGUgdG9wIHBhcnQgb2YgYSBZVVYgZmlsZS4KLQotICBBIHNpbXBsZSBp
bnZvY2F0aW9uIHdpbGwgYmU6Ci0gIC4veXV2X2Nyb3BwZXIucHkgLS13aWR0aD02NDAgLS1oZWln
aHQ9NDgwIC0tY3JvcF9oZWlnaHQ9MzIKLSAgLS15dXZfZmlsZT08cGF0aF9hbmRfbmFtZV9vZl95
dXZfZmlsZT4KLSAgLS1vdXRwdXRfeXV2PTxwYXRoIGFuZCBuYW1lX29mX291dHB1dF9maWxlPgot
ICAiIiIKLSAgb3B0aW9ucyA9IF9QYXJzZUFyZ3MoKQotCi0gIGlmIG9zLnBhdGguZ2V0c2l6ZShv
cHRpb25zLnl1dl9maWxlKSA9PSAwOgotICAgIHN5cy5zdGRlcnIud3JpdGUoJ0Vycm9yOiBUaGUg
WVVWIGZpbGUgeW91IGhhdmUgcGFzc2VkIGhhcyBzaXplIDAuIFRoZSAnCi0gICAgICAgICAgICAg
ICAgICAgICAncHJvZHVjZWQgb3V0cHV0IHdpbGwgYWxzbyBoYXZlIHNpemUgMC5cbicpCi0gICAg
cmV0dXJuIC0xCi0KLSAgQ3JvcEZyYW1lcyhvcHRpb25zLnl1dl9maWxlLCBvcHRpb25zLm91dHB1
dF9maWxlLCBvcHRpb25zLndpZHRoLAotICAgICAgICAgICAgIG9wdGlvbnMuaGVpZ2h0LCBvcHRp
b25zLmNyb3BfaGVpZ2h0KQotICByZXR1cm4gMAotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9jb21wYXJlX3ZpZGVvcy5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9jb21wYXJlX3Zp
ZGVvcy5weQppbmRleCA3OTc5MDQzOWIxNzZkYWFjMTkxNzI3Y2QwYzIxN2M5NDZkNTI1NzlkLi4w
Y2I0YTZkZGIxOTlmNTYwZjQ2N2M0ZGRkOWIyNTUxY2Y0NDNjNjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvY29tcGFyZV92
aWRlb3MucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX3Rvb2xzL2NvbXBhcmVfdmlkZW9zLnB5CkBAIC03LDYgKzcsNyBAQAogIyBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CiAjIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgog
CitpbXBvcnQganNvbgogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwK
QEAgLTQ1LDI1ICs0NiwxNSBAQCBkZWYgX1BhcnNlQXJncygpOgogICBwYXJzZXIuYWRkX29wdGlv
bignLS12bWFmX3Bob25lX21vZGVsJywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAg
ICAgICAgICAgaGVscD0nV2hldGhlciB0byB1c2UgcGhvbmUgbW9kZWwgaW4gVk1BRi4nKQogICBw
YXJzZXIuYWRkX29wdGlvbignLS1iYXJjb2RlX2RlY29kZXInLCB0eXBlPSdzdHJpbmcnLAotICAg
ICAgICAgICAgICAgICAgICBoZWxwPSgnUGF0aCB0byB0aGUgYmFyY29kZSBkZWNvZGVyIHNjcmlw
dC4gQnkgZGVmYXVsdCwgd2UgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lsbCBhc3N1
bWUgd2UgY2FuIGZpbmQgaXQgaW4gYmFyY29kZV90b29scy8nCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICdyZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeS4nKSkKKyAgICAgICAgICAgICAgICAg
ICAgaGVscD0oJ0RFUFJFQ0FURUQnKSkKICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZmZtcGVnX3Bh
dGgnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSgnVGhlIHBhdGgg
dG8gd2hlcmUgdGhlIGZmbXBlZyBleGVjdXRhYmxlIGlzIGxvY2F0ZWQuICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0lmIG9taXR0ZWQsIGl0IHdpbGwgYmUgYXNzdW1lZCB0byBiZSBwcmVz
ZW50IGluIHRoZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdQQVRIIHdpdGggdGhlIG5h
bWUgZmZtcGVnWy5leGVdLicpKQorICAgICAgICAgICAgICAgICAgICBoZWxwPSgnREVQUkVDQVRF
RCcpKQogICBwYXJzZXIuYWRkX29wdGlvbignLS16eGluZ19wYXRoJywgdHlwZT0nc3RyaW5nJywK
LSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1RoZSBwYXRoIHRvIHdoZXJlIHRoZSB6eGluZyBl
eGVjdXRhYmxlIGlzIGxvY2F0ZWQuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lmIG9t
aXR0ZWQsIGl0IHdpbGwgYmUgYXNzdW1lZCB0byBiZSBwcmVzZW50IGluIHRoZSAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICdQQVRIIHdpdGggdGhlIG5hbWUgenhpbmdbLmV4ZV0uJykpCisg
ICAgICAgICAgICAgICAgICAgIGhlbHA9KCdERVBSRUNBVEVEJykpCiAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLXN0YXRzX2ZpbGVfcmVmJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nc3RhdHNfcmVm
LnR4dCcsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCdQYXRoIHRvIHRoZSB0ZW1wb3Jhcnkg
c3RhdHMgZmlsZSB0byBiZSBjcmVhdGVkIGFuZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICd1c2VkIGZvciB0aGUgcmVmZXJlbmNlIHZpZGVvIGZpbGUuICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0RlZmF1bHQ6ICVkZWZhdWx0JykpCisgICAgICAgICAgICAgICAgICAgIGhlbHA9
KCdERVBSRUNBVEVEJykpCiAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXN0YXRzX2ZpbGVfdGVzdCcs
IHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3N0YXRzX3Rlc3Qu
dHh0JywKLSAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1BhdGggdG8gdGhlIHRlbXBvcmFyeSBz
dGF0cyBmaWxlIHRvIGJlIGNyZWF0ZWQgYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
J3VzZWQgZm9yIHRoZSB0ZXN0IHZpZGVvIGZpbGUuIERlZmF1bHQ6ICVkZWZhdWx0JykpCisgICAg
ICAgICAgICAgICAgICAgIGhlbHA9KCdERVBSRUNBVEVEJykpCiAgIHBhcnNlci5hZGRfb3B0aW9u
KCctLXN0YXRzX2ZpbGUnLCB0eXBlPSdzdHJpbmcnLAogICAgICAgICAgICAgICAgICAgICBoZWxw
PSgnREVQUkVDQVRFRCcpKQogICBwYXJzZXIuYWRkX29wdGlvbignLS15dXZfZnJhbWVfd2lkdGgn
LCB0eXBlPSdpbnQnLCBkZWZhdWx0PTY0MCwKQEAgLTc0LDExICs2NSw2IEBAIGRlZiBfUGFyc2VB
cmdzKCk6CiAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1doZXJlIHRvIHN0b3JlIHBlcmYgcmVz
dWx0cyBpbiBjaGFydGpzb24gZm9ybWF0LicpCiAgIG9wdGlvbnMsIF8gPSBwYXJzZXIucGFyc2Vf
YXJncygpCiAKLSAgaWYgb3B0aW9ucy5zdGF0c19maWxlOgotICAgIG9wdGlvbnMuc3RhdHNfZmls
ZV90ZXN0ID0gb3B0aW9ucy5zdGF0c19maWxlCi0gICAgcHJpbnQgKCdXQVJOSU5HOiBVc2luZyBk
ZXByZWNhdGVkIHN3aXRjaCAtLXN0YXRzX2ZpbGUuICcKLSAgICAgICAgICAgJ1RoZSBuZXcgZmxh
ZyBpcyAtLXN0YXRzX2ZpbGVfdGVzdC4nKQotCiAgIGlmIG5vdCBvcHRpb25zLnJlZl92aWRlbzoK
ICAgICBwYXJzZXIuZXJyb3IoJ1lvdSBtdXN0IHByb3ZpZGUgYSBwYXRoIHRvIHRoZSByZWZlcmVu
Y2UgdmlkZW8hJykKICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9wdGlvbnMucmVmX3ZpZGVvKToK
QEAgLTEwNywzNCArOTMsNiBAQCBkZWYgX0Rldk51bGwoKToKICAgIiIiCiAgIHJldHVybiBvcGVu
KG9zLmRldm51bGwsICdyJykKIAotZGVmIERlY29kZUJhcmNvZGVzSW5WaWRlbyhvcHRpb25zLCBw
YXRoX3RvX2RlY29kZXIsIHZpZGVvLCBzdGF0X2ZpbGUpOgotICAjIFJ1biBiYXJjb2RlIGRlY29k
ZXIgb24gdGhlIHRlc3QgdmlkZW8gdG8gaWRlbnRpZnkgZnJhbWUgbnVtYmVycy4KLSAgcG5nX3dv
cmtpbmdfZGlyZWN0b3J5ID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gIGNtZCA9IFsKLSAgICBzeXMu
ZXhlY3V0YWJsZSwKLSAgICBwYXRoX3RvX2RlY29kZXIsCi0gICAgJy0teXV2X2ZpbGU9JXMnICUg
dmlkZW8sCi0gICAgJy0teXV2X2ZyYW1lX3dpZHRoPSVkJyAlIG9wdGlvbnMueXV2X2ZyYW1lX3dp
ZHRoLAotICAgICctLXl1dl9mcmFtZV9oZWlnaHQ9JWQnICUgb3B0aW9ucy55dXZfZnJhbWVfaGVp
Z2h0LAotICAgICctLXN0YXRzX2ZpbGU9JXMnICUgc3RhdF9maWxlLAotICAgICctLXBuZ193b3Jr
aW5nX2Rpcj0lcycgJSBwbmdfd29ya2luZ19kaXJlY3RvcnksCi0gIF0KLSAgaWYgb3B0aW9ucy56
eGluZ19wYXRoOgotICAgIGNtZC5hcHBlbmQoJy0tenhpbmdfcGF0aD0lcycgJSBvcHRpb25zLnp4
aW5nX3BhdGgpCi0gIGlmIG9wdGlvbnMuZmZtcGVnX3BhdGg6Ci0gICAgY21kLmFwcGVuZCgnLS1m
Zm1wZWdfcGF0aD0lcycgJSBvcHRpb25zLmZmbXBlZ19wYXRoKQotCi0KLSAgYmFyY29kZV9kZWNv
ZGVyID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZGluPV9EZXZOdWxsKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN5cy5zdGRvdXQsIHN0ZGVycj1zeXMu
c3RkZXJyKQotICBiYXJjb2RlX2RlY29kZXIud2FpdCgpCi0KLSAgc2h1dGlsLnJtdHJlZShwbmdf
d29ya2luZ19kaXJlY3RvcnkpCi0gIGlmIGJhcmNvZGVfZGVjb2Rlci5yZXR1cm5jb2RlICE9IDA6
Ci0gICAgcHJpbnQgJ0ZhaWxlZCB0byBydW4gYmFyY29kZSBkZWNvZGVyIHNjcmlwdC4nCi0gICAg
cmV0dXJuIDEKLSAgcmV0dXJuIDAKLQogCiBkZWYgX1J1bkZyYW1lQW5hbHl6ZXIob3B0aW9ucywg
eXV2X2RpcmVjdG9yeT1Ob25lKToKICAgIiIiUnVuIGZyYW1lIGFuYWx5emVyIHRvIGNvbXBhcmUg
dGhlIHZpZGVvcyBhbmQgcHJpbnQgb3V0cHV0LiIiIgpAQCAtMTYyLDEyICsxMjAsOSBAQCBkZWYg
X1J1bkZyYW1lQW5hbHl6ZXIob3B0aW9ucywgeXV2X2RpcmVjdG9yeT1Ob25lKToKICAgcmV0dXJu
IGZyYW1lX2FuYWx5emVyLnJldHVybmNvZGUKIAogCi1kZWYgX1J1blZtYWYob3B0aW9ucywgeXV2
X2RpcmVjdG9yeSk6CitkZWYgX1J1blZtYWYob3B0aW9ucywgeXV2X2RpcmVjdG9yeSwgbG9nZmls
ZSk6CiAgICIiIiBSdW4gVk1BRiB0byBjb21wYXJlIHZpZGVvcyBhbmQgcHJpbnQgb3V0cHV0Lgog
Ci0gIFRoZSBwcm92aWRlZCB2bWFmIGRpcmVjdG9yeSBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gYSBj
Kysgd3JhcHBlciBleGVjdXRhYmxlCi0gIGFuZCBhIG1vZGVsLgotCiAgIFRoZSB5dXZfZGlyZWN0
b3J5IGlzIGFzc3VtZWQgdG8gaGF2ZSBiZWVuIHBvcHVsYXRlZCB3aXRoIGEgcmVmZXJlbmNlIGFu
ZCB0ZXN0CiAgIHZpZGVvIGluIC55dXYgZm9ybWF0LCB3aXRoIG5hbWVzIGFjY29yZGluZyB0byB0
aGUgbGFiZWwuCiAgICIiIgpAQCAtMTc5LDI2ICsxMzQsMjkgQEAgZGVmIF9SdW5WbWFmKG9wdGlv
bnMsIHl1dl9kaXJlY3RvcnkpOgogICAgIG9zLnBhdGguam9pbih5dXZfZGlyZWN0b3J5LCAicmVm
Lnl1diIpLAogICAgIG9zLnBhdGguam9pbih5dXZfZGlyZWN0b3J5LCAidGVzdC55dXYiKSwKICAg
ICBvcHRpb25zLnZtYWZfbW9kZWwsCisgICAgJy0tbG9nJywKKyAgICBsb2dmaWxlLAorICAgICct
LWxvZy1mbXQnLAorICAgICdqc29uJywKICAgXQogICBpZiBvcHRpb25zLnZtYWZfcGhvbmVfbW9k
ZWw6CiAgICAgY21kLmFwcGVuZCgnLS1waG9uZS1tb2RlbCcpCiAKICAgdm1hZiA9IHN1YnByb2Nl
c3MuUG9wZW4oY21kLCBzdGRpbj1fRGV2TnVsbCgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3lzLnN0ZGVycikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Rkb3V0PXN5cy5zdGRvdXQsIHN0ZGVycj1zeXMuc3RkZXJyKQogICB2
bWFmLndhaXQoKQogICBpZiB2bWFmLnJldHVybmNvZGUgIT0gMDoKICAgICBwcmludCAnRmFpbGVk
IHRvIHJ1biBWTUFGLicKICAgICByZXR1cm4gMQotICBvdXRwdXQgPSB2bWFmLnN0ZG91dC5yZWFk
KCkKLSAgIyBFeHRyYWN0IHNjb3JlIGZyb20gVk1BRiBvdXRwdXQuCi0gIHRyeToKLSAgICBzY29y
ZSA9IGZsb2F0KG91dHB1dC5zcGxpdCgnXG4nKVsyXS5zcGxpdCgpWzNdKQotICBleGNlcHQgKFZh
bHVlRXJyb3IsIEluZGV4RXJyb3IpOgotICAgIHByaW50ICdFcnJvciBpbiBWTUFGIG91dHB1dCAo
ZXhwZWN0ZWQgIlZNQUYgc2NvcmUgPSBbZmxvYXRdIiBvbiBsaW5lIDMpOicKLSAgICBwcmludCBv
dXRwdXQKLSAgICByZXR1cm4gMQogCi0gIHByaW50ICdSRVNVTFQgVm1hZjogJXM9ICVmJyAlIChv
cHRpb25zLmxhYmVsLCBzY29yZSkKKyAgIyBSZWFkIHBlci1mcmFtZSBzY29yZXMgZnJvbSBWTUFG
IG91dHB1dCBhbmQgcHJpbnQuCisgIHdpdGggb3Blbihsb2dmaWxlKSBhcyBmOgorICAgIHZtYWZf
ZGF0YSA9IGpzb24ubG9hZChmKQorICAgIHZtYWZfc2NvcmVzID0gW10KKyAgICBmb3IgZnJhbWUg
aW4gdm1hZl9kYXRhWydmcmFtZXMnXToKKyAgICAgIHZtYWZfc2NvcmVzLmFwcGVuZChmcmFtZVsn
bWV0cmljcyddWyd2bWFmJ10pCisgICAgcHJpbnQgJ1JFU1VMVCBWTUFGOiAlcz0nICUgb3B0aW9u
cy5sYWJlbCwgdm1hZl9zY29yZXMKKwogICByZXR1cm4gMAogCiAKQEAgLTIxMyw0MCArMTcxLDI0
IEBAIGRlZiBtYWluKCk6CiAKICAgUnVubmluZyB2bWFmIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcg
YXJndW1lbnRzOgogICAtLXZtYWYsIC0tdm1hZl9tb2RlbCwgLS15dXZfZnJhbWVfd2lkdGgsIC0t
eXV2X2ZyYW1lX2hlaWdodAotCi0gIE5vdGljZSB0aGF0IHRoZSBwcmVyZXF1aXNpdGVzIGZvciBi
YXJjb2RlX2RlY29kZXIucHkgYWxzbyBhcHBsaWVzIHRvIHRoaXMKLSAgc2NyaXB0LiBUaGUgbWVh
bnMgdGhlIGZvbGxvd2luZyBleGVjdXRhYmxlcyBoYXZlIHRvIGJlIGF2YWlsYWJsZSBpbiB0aGUg
UEFUSDoKLSAgKiB6eGluZwotICAqIGZmbXBlZwogICAiIiIKICAgb3B0aW9ucyA9IF9QYXJzZUFy
Z3MoKQogCi0gIGlmIG9wdGlvbnMuYmFyY29kZV9kZWNvZGVyOgotICAgIHBhdGhfdG9fZGVjb2Rl
ciA9IG9wdGlvbnMuYmFyY29kZV9kZWNvZGVyCi0gIGVsc2U6Ci0gICAgcGF0aF90b19kZWNvZGVy
ID0gb3MucGF0aC5qb2luKFNDUklQVF9ESVIsICdiYXJjb2RlX3Rvb2xzJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2JhcmNvZGVfZGVjb2Rlci5weScpCi0KLSAgaWYgRGVj
b2RlQmFyY29kZXNJblZpZGVvKG9wdGlvbnMsIHBhdGhfdG9fZGVjb2RlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMucmVmX3ZpZGVvLCBvcHRpb25zLnN0YXRzX2ZpbGVfcmVm
KSAhPSAwOgotICAgIHJldHVybiAxCi0gIGlmIERlY29kZUJhcmNvZGVzSW5WaWRlbyhvcHRpb25z
LCBwYXRoX3RvX2RlY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnRl
c3RfdmlkZW8sIG9wdGlvbnMuc3RhdHNfZmlsZV90ZXN0KSAhPSAwOgotICAgIHJldHVybiAxCi0K
ICAgaWYgb3B0aW9ucy52bWFmOgogICAgIHRyeToKICAgICAgICMgRGlyZWN0b3J5IHRvIHNhdmUg
dGVtcG9yYXJ5IFlVViBmaWxlcyBmb3IgVk1BRiBpbiBmcmFtZV9hbmFseXplci4KICAgICAgIHl1
dl9kaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgIF8sIHZtYWZfbG9nZmlsZSA9
IHRlbXBmaWxlLm1rc3RlbXAoKQogCiAgICAgICAjIFJ1biBmcmFtZSBhbmFseXplciB0byBjb21w
YXJlIHRoZSB2aWRlb3MgYW5kIHByaW50IG91dHB1dC4KICAgICAgIGlmIF9SdW5GcmFtZUFuYWx5
emVyKG9wdGlvbnMsIHl1dl9kaXJlY3Rvcnk9eXV2X2RpcmVjdG9yeSkgIT0gMDoKICAgICAgICAg
cmV0dXJuIDEKIAogICAgICAgIyBSdW4gVk1BRiBmb3IgZnVydGhlciB2aWRlbyBjb21wYXJpc29u
IGFuZCBwcmludCBvdXRwdXQuCi0gICAgICByZXR1cm4gX1J1blZtYWYob3B0aW9ucywgeXV2X2Rp
cmVjdG9yeSkKKyAgICAgIHJldHVybiBfUnVuVm1hZihvcHRpb25zLCB5dXZfZGlyZWN0b3J5LCB2
bWFmX2xvZ2ZpbGUpCiAgICAgZmluYWxseToKICAgICAgIHNodXRpbC5ybXRyZWUoeXV2X2RpcmVj
dG9yeSkKKyAgICAgIG9zLnJlbW92ZSh2bWFmX2xvZ2ZpbGUpCiAgIGVsc2U6CiAgICAgcmV0dXJu
IF9SdW5GcmFtZUFuYWx5emVyKG9wdGlvbnMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXpl
ci9hbmFseXplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9hbmFseXplci5jYwppbmRleCA0M2NiZDY5
ZmM4ZTE4Yzk0NjE3MjlkMzUyZmRhZWIwYjBkMzE4NWU1Li4zYmRmYmYzMmEwZTFiNTE2YTU0OTc4
NDUxMjQzMjUyYzA5MzRjMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZXZlbnRfbG9nX3Zpc3VhbGl6ZXIvYW5hbHl6ZXIu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rv
b2xzL2V2ZW50X2xvZ192aXN1YWxpemVyL2FuYWx5emVyLmNjCkBAIC0xOCw2ICsxOCw3IEBACiAj
aW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgImFic2wvbWVtb3J5L21lbW9yeS5oIgorI2lu
Y2x1ZGUgImFwaS90cmFuc3BvcnQvZ29vZ19jY19mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9h
dWRpb19yZWNlaXZlX3N0cmVhbS5oIgogI2luY2x1ZGUgImNhbGwvYXVkaW9fc2VuZF9zdHJlYW0u
aCIKICNpbmNsdWRlICJjYWxsL2NhbGwuaCIKQEAgLTM2LDggKzM3LDkgQEAKICNpbmNsdWRlICJt
b2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2JpdHJhdGVfZXN0aW1hdG9yLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9i
YXNlZF9id2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9pbmNs
dWRlL3JlY2VpdmVfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJtb2R1
bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9pbmNsdWRlL3NlbmRfc2lkZV9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9ydHAv
dHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9w
YWNrZXRfcm91dGVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0
b3IvaW5jbHVkZS9id2VfZGVmaW5lcy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5j
bHVkZS9ydHBfcnRjcC5oIgogI2luY2x1ZGUgIm1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydHBf
cnRjcF9kZWZpbmVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9w
YWNrZXQuaCIKQEAgLTE3NSwxMyArMTc3LDEzIEBAIGNvbnN0ZXhwciBmbG9hdCBrQm90dG9tTWFy
Z2luID0gMC4wMmY7CiBjb25zdGV4cHIgZmxvYXQga1RvcE1hcmdpbiA9IDAuMDVmOwogCiBhYnNs
OjpvcHRpb25hbDxkb3VibGU+IE5ldHdvcmtEZWxheURpZmZfQWJzU2VuZFRpbWUoCi0gICAgY29u
c3QgTG9nZ2VkUnRwUGFja2V0JiBvbGRfcGFja2V0LAotICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tl
dCYgbmV3X3BhY2tldCkgewotICBpZiAob2xkX3BhY2tldC5oZWFkZXIuZXh0ZW5zaW9uLmhhc0Fi
c29sdXRlU2VuZFRpbWUgJiYKLSAgICAgIG5ld19wYWNrZXQuaGVhZGVyLmV4dGVuc2lvbi5oYXNB
YnNvbHV0ZVNlbmRUaW1lKSB7CisgICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIG9s
ZF9wYWNrZXQsCisgICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIG5ld19wYWNrZXQp
IHsKKyAgaWYgKG9sZF9wYWNrZXQucnRwLmhlYWRlci5leHRlbnNpb24uaGFzQWJzb2x1dGVTZW5k
VGltZSAmJgorICAgICAgbmV3X3BhY2tldC5ydHAuaGVhZGVyLmV4dGVuc2lvbi5oYXNBYnNvbHV0
ZVNlbmRUaW1lKSB7CiAgICAgaW50NjRfdCBzZW5kX3RpbWVfZGlmZiA9IFdyYXBwaW5nRGlmZmVy
ZW5jZSgKLSAgICAgICAgbmV3X3BhY2tldC5oZWFkZXIuZXh0ZW5zaW9uLmFic29sdXRlU2VuZFRp
bWUsCi0gICAgICAgIG9sZF9wYWNrZXQuaGVhZGVyLmV4dGVuc2lvbi5hYnNvbHV0ZVNlbmRUaW1l
LCAxdWwgPDwgMjQpOworICAgICAgICBuZXdfcGFja2V0LnJ0cC5oZWFkZXIuZXh0ZW5zaW9uLmFi
c29sdXRlU2VuZFRpbWUsCisgICAgICAgIG9sZF9wYWNrZXQucnRwLmhlYWRlci5leHRlbnNpb24u
YWJzb2x1dGVTZW5kVGltZSwgMXVsIDw8IDI0KTsKICAgICBpbnQ2NF90IHJlY3ZfdGltZV9kaWZm
ID0KICAgICAgICAgbmV3X3BhY2tldC5sb2dfdGltZV91cygpIC0gb2xkX3BhY2tldC5sb2dfdGlt
ZV91cygpOwogICAgIGRvdWJsZSBkZWxheV9jaGFuZ2VfdXMgPQpAQCAtMTkzLDM0ICsxOTUsMzEg
QEAgYWJzbDo6b3B0aW9uYWw8ZG91YmxlPiBOZXR3b3JrRGVsYXlEaWZmX0Fic1NlbmRUaW1lKAog
fQogCiBhYnNsOjpvcHRpb25hbDxkb3VibGU+IE5ldHdvcmtEZWxheURpZmZfQ2FwdHVyZVRpbWUo
Ci0gICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0JiBvbGRfcGFja2V0LAotICAgIGNvbnN0IExvZ2dl
ZFJ0cFBhY2tldCYgbmV3X3BhY2tldCkgewotICBpbnQ2NF90IHNlbmRfdGltZV9kaWZmID0gV3Jh
cHBpbmdEaWZmZXJlbmNlKAotICAgICAgbmV3X3BhY2tldC5oZWFkZXIudGltZXN0YW1wLCBvbGRf
cGFja2V0LmhlYWRlci50aW1lc3RhbXAsIDF1bGwgPDwgMzIpOworICAgIGNvbnN0IExvZ2dlZFJ0
cFBhY2tldEluY29taW5nJiBvbGRfcGFja2V0LAorICAgIGNvbnN0IExvZ2dlZFJ0cFBhY2tldElu
Y29taW5nJiBuZXdfcGFja2V0LAorICAgIGNvbnN0IGRvdWJsZSBzYW1wbGVfcmF0ZSkgeworICBp
bnQ2NF90IHNlbmRfdGltZV9kaWZmID0KKyAgICAgIFdyYXBwaW5nRGlmZmVyZW5jZShuZXdfcGFj
a2V0LnJ0cC5oZWFkZXIudGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9w
YWNrZXQucnRwLmhlYWRlci50aW1lc3RhbXAsIDF1bGwgPDwgMzIpOwogICBpbnQ2NF90IHJlY3Zf
dGltZV9kaWZmID0gbmV3X3BhY2tldC5sb2dfdGltZV91cygpIC0gb2xkX3BhY2tldC5sb2dfdGlt
ZV91cygpOwogCi0gIGNvbnN0IGRvdWJsZSBrVmlkZW9TYW1wbGVSYXRlID0gOTAwMDA7Ci0gIC8v
IFRPRE8odGVyZWxpdXMpOiBXZSB0cmVhdCBhbGwgc3RyZWFtcyBhcyB2aWRlbyBmb3Igbm93LCBl
dmVuIHRob3VnaAotICAvLyBhdWRpbyBtaWdodCBiZSBzYW1wbGVkIGF0IGUuZy4gMTZrSHosIGJl
Y2F1c2UgaXQgaXMgcmVhbGx5IGRpZmZpY3VsdCB0bwotICAvLyBmaWd1cmUgb3V0IHRoZSB0cnVl
IHNhbXBsaW5nIHJhdGUgb2YgYSBzdHJlYW0uIFRoZSBlZmZlY3QgaXMgdGhhdCB0aGUKLSAgLy8g
ZGVsYXkgd2lsbCBiZSBzY2FsZWQgaW5jb3JyZWN0bHkgZm9yIG5vbi12aWRlbyBzdHJlYW1zLgot
CiAgIGRvdWJsZSBkZWxheV9jaGFuZ2UgPQogICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihyZWN2
X3RpbWVfZGlmZikgLyAxMDAwIC0KLSAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oc2VuZF90aW1l
X2RpZmYpIC8ga1ZpZGVvU2FtcGxlUmF0ZSAqIDEwMDA7CisgICAgICBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHNlbmRfdGltZV9kaWZmKSAvIHNhbXBsZV9yYXRlICogMTAwMDsKICAgaWYgKGRlbGF5X2No
YW5nZSA8IC0xMDAwMCB8fCAxMDAwMCA8IGRlbGF5X2NoYW5nZSkgewogICAgIFJUQ19MT0coTFNf
V0FSTklORykgPDwgIlZlcnkgbGFyZ2UgZGVsYXkgY2hhbmdlLiBUaW1lc3RhbXBzIGNvcnJlY3Q/
IjsKLSAgICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJPbGQgY2FwdHVyZSB0aW1lICIgPDwgb2xk
X3BhY2tldC5oZWFkZXIudGltZXN0YW1wCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCBy
ZWNlaXZlZCB0aW1lICIgPDwgb2xkX3BhY2tldC5sb2dfdGltZV91cygpOwotICAgIFJUQ19MT0co
TFNfV0FSTklORykgPDwgIk5ldyBjYXB0dXJlIHRpbWUgIiA8PCBuZXdfcGFja2V0LmhlYWRlci50
aW1lc3RhbXAKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsIHJlY2VpdmVkIHRpbWUgIiA8
PCBuZXdfcGFja2V0LmxvZ190aW1lX3VzKCk7CisgICAgUlRDX0xPRyhMU19XQVJOSU5HKSA8PCAi
T2xkIGNhcHR1cmUgdGltZSAiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBvbGRfcGFja2V0
LnJ0cC5oZWFkZXIudGltZXN0YW1wIDw8ICIsIHJlY2VpdmVkIHRpbWUgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgb2xkX3BhY2tldC5sb2dfdGltZV91cygpOworICAgIFJUQ19MT0coTFNf
V0FSTklORykgPDwgIk5ldyBjYXB0dXJlIHRpbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAg
PDwgbmV3X3BhY2tldC5ydHAuaGVhZGVyLnRpbWVzdGFtcCA8PCAiLCByZWNlaXZlZCB0aW1lICIK
KyAgICAgICAgICAgICAgICAgICAgICAgIDw8IG5ld19wYWNrZXQubG9nX3RpbWVfdXMoKTsKICAg
ICBSVENfTE9HKExTX1dBUk5JTkcpIDw8ICJSZWNlaXZlIHRpbWUgZGlmZmVyZW5jZSAiIDw8IHJl
Y3ZfdGltZV9kaWZmIDw8ICIgPSAiCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNf
Y2FzdDxkb3VibGU+KHJlY3ZfdGltZV9kaWZmKSAvCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga051bU1pY3Jvc2Vjc1BlclNlYwogICAgICAgICAgICAgICAgICAgICAgICAgPDwgInMi
OwogICAgIFJUQ19MT0coTFNfV0FSTklORykgPDwgIlNlbmQgdGltZSBkaWZmZXJlbmNlICIgPDwg
c2VuZF90aW1lX2RpZmYgPDwgIiA9ICIKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN0YXRp
Y19jYXN0PGRvdWJsZT4oc2VuZF90aW1lX2RpZmYpIC8KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrVmlkZW9TYW1wbGVSYXRlCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0
aWNfY2FzdDxkb3VibGU+KHNlbmRfdGltZV9kaWZmKSAvIHNhbXBsZV9yYXRlCiAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCAicyI7CiAgIH0KICAgcmV0dXJuIGRlbGF5X2NoYW5nZTsKQEAgLTI3
NCw5ICsyNzMsMTAgQEAgdm9pZCBBY2N1bXVsYXRlUGFpcnMoCiAgIGZvciAoc2l6ZV90IGkgPSAx
OyBpIDwgZGF0YS5zaXplKCk7IGkrKykgewogICAgIGZsb2F0IHggPSBmeChkYXRhW2ldKTsKICAg
ICBhYnNsOjpvcHRpb25hbDxSZXN1bHRUeXBlPiB5ID0gZnkoZGF0YVtpIC0gMV0sIGRhdGFbaV0p
OwotICAgIGlmICh5KQorICAgIGlmICh5KSB7CiAgICAgICBzdW0gKz0gKnk7Ci0gICAgcmVzdWx0
LT5wb2ludHMuZW1wbGFjZV9iYWNrKHgsIHN0YXRpY19jYXN0PGZsb2F0PihzdW0pKTsKKyAgICAg
IHJlc3VsdC0+cG9pbnRzLmVtcGxhY2VfYmFjayh4LCBzdGF0aWNfY2FzdDxmbG9hdD4oc3VtKSk7
CisgICAgfQogICB9CiB9CiAKQEAgLTQ4NiwxNyArNDg2LDE1IEBAIEV2ZW50TG9nQW5hbHl6ZXI6
OkV2ZW50TG9nQW5hbHl6ZXIoY29uc3QgUGFyc2VkUnRjRXZlbnRMb2dOZXcmIGxvZywKICAgICAg
ICAgICAgICAgICAgICA8PCAiIChMT0dfU1RBUlQsIExPR19FTkQpIHNlZ21lbnRzIGluIGxvZy4i
OwogfQogCi1jbGFzcyBCaXRyYXRlT2JzZXJ2ZXIgOiBwdWJsaWMgTmV0d29ya0NoYW5nZWRPYnNl
cnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBSZW1vdGVCaXRyYXRlT2JzZXJ2
ZXIgeworY2xhc3MgQml0cmF0ZU9ic2VydmVyIDogcHVibGljIFJlbW90ZUJpdHJhdGVPYnNlcnZl
ciB7CiAgcHVibGljOgogICBCaXRyYXRlT2JzZXJ2ZXIoKSA6IGxhc3RfYml0cmF0ZV9icHNfKDAp
LCBiaXRyYXRlX3VwZGF0ZWRfKGZhbHNlKSB7fQogCi0gIHZvaWQgT25OZXR3b3JrQ2hhbmdlZCh1
aW50MzJfdCBiaXRyYXRlX2JwcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnJh
Y3Rpb25fbG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0X21zLAotICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBwcm9iaW5nX2ludGVydmFsX21zKSBvdmVycmlk
ZSB7Ci0gICAgbGFzdF9iaXRyYXRlX2Jwc18gPSBiaXRyYXRlX2JwczsKLSAgICBiaXRyYXRlX3Vw
ZGF0ZWRfID0gdHJ1ZTsKKyAgdm9pZCBVcGRhdGUoTmV0d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRl
KSB7CisgICAgaWYgKHVwZGF0ZS50YXJnZXRfcmF0ZSkgeworICAgICAgbGFzdF9iaXRyYXRlX2Jw
c18gPSB1cGRhdGUudGFyZ2V0X3JhdGUtPnRhcmdldF9yYXRlLmJwcygpOworICAgICAgYml0cmF0
ZV91cGRhdGVkXyA9IHRydWU7CisgICAgfQogICB9CiAKICAgdm9pZCBPblJlY2VpdmVCaXRyYXRl
Q2hhbmdlZChjb25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4mIHNzcmNzLApAQCAtNzM3LDcxICs3
MzUsNTggQEAgdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVJbmNvbWluZ1BhY2tldExvc3NH
cmFwaChQbG90KiBwbG90KSB7CiAgIHBsb3QtPlNldFRpdGxlKCJFc3RpbWF0ZWQgaW5jb21pbmcg
bG9zcyByYXRlIik7CiB9CiAKLXZvaWQgRXZlbnRMb2dBbmFseXplcjo6Q3JlYXRlSW5jb21pbmdE
ZWxheURlbHRhR3JhcGgoUGxvdCogcGxvdCkgewotICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6
IHBhcnNlZF9sb2dfLnJ0cF9wYWNrZXRzX2J5X3NzcmMoa0luY29taW5nUGFja2V0KSkgewordm9p
ZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVJbmNvbWluZ0RlbGF5R3JhcGgoUGxvdCogcGxvdCkg
eworICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHBhcnNlZF9sb2dfLmluY29taW5nX3J0cF9w
YWNrZXRzX2J5X3NzcmMoKSkgewogICAgIC8vIEZpbHRlciBvbiBTU1JDLgogICAgIGlmICghTWF0
Y2hpbmdTc3JjKHN0cmVhbS5zc3JjLCBkZXNpcmVkX3NzcmNfKSB8fAotICAgICAgICBJc0F1ZGlv
U3NyYyhrSW5jb21pbmdQYWNrZXQsIHN0cmVhbS5zc3JjKSB8fAotICAgICAgICAhSXNWaWRlb1Nz
cmMoa0luY29taW5nUGFja2V0LCBzdHJlYW0uc3NyYykgfHwKICAgICAgICAgSXNSdHhTc3JjKGtJ
bmNvbWluZ1BhY2tldCwgc3RyZWFtLnNzcmMpKSB7CiAgICAgICBjb250aW51ZTsKICAgICB9CiAK
LSAgICBUaW1lU2VyaWVzIGNhcHR1cmVfdGltZV9kYXRhKAotICAgICAgICBHZXRTdHJlYW1OYW1l
KGtJbmNvbWluZ1BhY2tldCwgc3RyZWFtLnNzcmMpICsgIiBjYXB0dXJlLXRpbWUiLAotICAgICAg
ICBMaW5lU3R5bGU6OmtCYXIpOwotICAgIGF1dG8gVG9DYWxsVGltZSA9IFt0aGlzXShjb25zdCBM
b2dnZWRSdHBQYWNrZXQmIHBhY2tldCkgewotICAgICAgcmV0dXJuIHRoaXMtPlRvQ2FsbFRpbWVT
ZWMocGFja2V0LmxvZ190aW1lX3VzKCkpOwotICAgIH07Ci0gICAgUHJvY2Vzc1BhaXJzPExvZ2dl
ZFJ0cFBhY2tldCwgZG91YmxlPigKLSAgICAgICAgVG9DYWxsVGltZSwgTmV0d29ya0RlbGF5RGlm
Zl9DYXB0dXJlVGltZSwgc3RyZWFtLnBhY2tldF92aWV3LAotICAgICAgICAmY2FwdHVyZV90aW1l
X2RhdGEpOwotICAgIHBsb3QtPkFwcGVuZFRpbWVTZXJpZXMoc3RkOjptb3ZlKGNhcHR1cmVfdGlt
ZV9kYXRhKSk7Ci0KLSAgICBUaW1lU2VyaWVzIHNlbmRfdGltZV9kYXRhKAotICAgICAgICBHZXRT
dHJlYW1OYW1lKGtJbmNvbWluZ1BhY2tldCwgc3RyZWFtLnNzcmMpICsgIiBhYnMtc2VuZC10aW1l
IiwKLSAgICAgICAgTGluZVN0eWxlOjprQmFyKTsKLSAgICBQcm9jZXNzUGFpcnM8TG9nZ2VkUnRw
UGFja2V0LCBkb3VibGU+KFRvQ2FsbFRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOZXR3b3JrRGVsYXlEaWZmX0Fic1NlbmRUaW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLnBhY2tldF92aWV3LCAmc2VuZF90
aW1lX2RhdGEpOwotICAgIHBsb3QtPkFwcGVuZFRpbWVTZXJpZXMoc3RkOjptb3ZlKHNlbmRfdGlt
ZV9kYXRhKSk7Ci0gIH0KLQotICBwbG90LT5TZXRYQXhpcyhUb0NhbGxUaW1lU2VjKGJlZ2luX3Rp
bWVfKSwgY2FsbF9kdXJhdGlvbl9zXywgIlRpbWUgKHMpIiwKLSAgICAgICAgICAgICAgICAga0xl
ZnRNYXJnaW4sIGtSaWdodE1hcmdpbik7Ci0gIHBsb3QtPlNldFN1Z2dlc3RlZFlBeGlzKDAsIDEs
ICJMYXRlbmN5IGNoYW5nZSAobXMpIiwga0JvdHRvbU1hcmdpbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAga1RvcE1hcmdpbik7Ci0gIHBsb3QtPlNldFRpdGxlKCJOZXR3b3JrIGxhdGVuY3kg
ZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbnNlY3V0aXZlIHBhY2tldHMiKTsKLX0KLQotdm9pZCBFdmVu
dExvZ0FuYWx5emVyOjpDcmVhdGVJbmNvbWluZ0RlbGF5R3JhcGgoUGxvdCogcGxvdCkgewotICBm
b3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHBhcnNlZF9sb2dfLnJ0cF9wYWNrZXRzX2J5X3NzcmMo
a0luY29taW5nUGFja2V0KSkgewotICAgIC8vIEZpbHRlciBvbiBTU1JDLgotICAgIGlmICghTWF0
Y2hpbmdTc3JjKHN0cmVhbS5zc3JjLCBkZXNpcmVkX3NzcmNfKSB8fAotICAgICAgICBJc0F1ZGlv
U3NyYyhrSW5jb21pbmdQYWNrZXQsIHN0cmVhbS5zc3JjKSB8fAotICAgICAgICAhSXNWaWRlb1Nz
cmMoa0luY29taW5nUGFja2V0LCBzdHJlYW0uc3NyYykgfHwKLSAgICAgICAgSXNSdHhTc3JjKGtJ
bmNvbWluZ1BhY2tldCwgc3RyZWFtLnNzcmMpKSB7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8TG9n
Z2VkUnRwUGFja2V0SW5jb21pbmc+JiBwYWNrZXRzID0KKyAgICAgICAgc3RyZWFtLmluY29taW5n
X3BhY2tldHM7CisgICAgaWYgKHBhY2tldHMuc2l6ZSgpIDwgMTAwKSB7CisgICAgICBSVENfTE9H
KExTX1dBUk5JTkcpIDw8ICJDYW4ndCBlc3RpbWF0ZSB0aGUgUlRQIGNsb2NrIGZyZXF1ZW5jeSB3
aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcGFja2V0cy5zaXplKCkgPDwgIiBw
YWNrZXRzIGluIHRoZSBzdHJlYW0uIjsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBpbnQ2
NF90IGVuZF90aW1lX3VzID0gbG9nX3NlZ21lbnRzXy5lbXB0eSgpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA/IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxvZ19zZWdtZW50c18uZnJvbnQoKS5zZWNvbmQ7
CisgICAgYWJzbDo6b3B0aW9uYWw8dWludDMyX3Q+IGVzdGltYXRlZF9mcmVxdWVuY3kgPQorICAg
ICAgICBFc3RpbWF0ZVJ0cENsb2NrRnJlcXVlbmN5KHBhY2tldHMsIGVuZF90aW1lX3VzKTsKKyAg
ICBpZiAoIWVzdGltYXRlZF9mcmVxdWVuY3kpCisgICAgICBjb250aW51ZTsKKyAgICBjb25zdCBk
b3VibGUgZnJlcXVlbmN5X2h6ID0gKmVzdGltYXRlZF9mcmVxdWVuY3k7CisgICAgaWYgKElzVmlk
ZW9Tc3JjKGtJbmNvbWluZ1BhY2tldCwgc3RyZWFtLnNzcmMpICYmIGZyZXF1ZW5jeV9oeiAhPSA5
MDAwMCkgeworICAgICAgUlRDX0xPRyhMU19XQVJOSU5HKQorICAgICAgICAgIDw8ICJWaWRlbyBz
dHJlYW0gc2hvdWxkIHVzZSBhIDkwIGtIeiBjbG9jayBidXQgYXBwZWFycyB0byB1c2UgIgorICAg
ICAgICAgIDw8IGZyZXF1ZW5jeV9oeiAvIDEwMDAgPDwgIi4gRGlzY2FyZGluZy4iOwogICAgICAg
Y29udGludWU7CiAgICAgfQogCisgICAgYXV0byBUb0NhbGxUaW1lID0gW3RoaXNdKGNvbnN0IExv
Z2dlZFJ0cFBhY2tldEluY29taW5nJiBwYWNrZXQpIHsKKyAgICAgIHJldHVybiB0aGlzLT5Ub0Nh
bGxUaW1lU2VjKHBhY2tldC5sb2dfdGltZV91cygpKTsKKyAgICB9OworICAgIGF1dG8gVG9OZXR3
b3JrRGVsYXkgPSBbZnJlcXVlbmN5X2h6XSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IExvZ2dlZFJ0cFBhY2tldEluY29taW5nJiBvbGRfcGFja2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTG9nZ2VkUnRwUGFja2V0SW5jb21pbmcmIG5ld19wYWNr
ZXQpIHsKKyAgICAgIHJldHVybiBOZXR3b3JrRGVsYXlEaWZmX0NhcHR1cmVUaW1lKG9sZF9wYWNr
ZXQsIG5ld19wYWNrZXQsIGZyZXF1ZW5jeV9oeik7CisgICAgfTsKKwogICAgIFRpbWVTZXJpZXMg
Y2FwdHVyZV90aW1lX2RhdGEoCiAgICAgICAgIEdldFN0cmVhbU5hbWUoa0luY29taW5nUGFja2V0
LCBzdHJlYW0uc3NyYykgKyAiIGNhcHR1cmUtdGltZSIsCiAgICAgICAgIExpbmVTdHlsZTo6a0xp
bmUpOwotICAgIGF1dG8gVG9DYWxsVGltZSA9IFt0aGlzXShjb25zdCBMb2dnZWRSdHBQYWNrZXQm
IHBhY2tldCkgewotICAgICAgcmV0dXJuIHRoaXMtPlRvQ2FsbFRpbWVTZWMocGFja2V0LmxvZ190
aW1lX3VzKCkpOwotICAgIH07Ci0gICAgQWNjdW11bGF0ZVBhaXJzPExvZ2dlZFJ0cFBhY2tldCwg
ZG91YmxlPigKLSAgICAgICAgVG9DYWxsVGltZSwgTmV0d29ya0RlbGF5RGlmZl9DYXB0dXJlVGlt
ZSwgc3RyZWFtLnBhY2tldF92aWV3LAotICAgICAgICAmY2FwdHVyZV90aW1lX2RhdGEpOworICAg
IEFjY3VtdWxhdGVQYWlyczxMb2dnZWRSdHBQYWNrZXRJbmNvbWluZywgZG91YmxlPigKKyAgICAg
ICAgVG9DYWxsVGltZSwgVG9OZXR3b3JrRGVsYXksIHBhY2tldHMsICZjYXB0dXJlX3RpbWVfZGF0
YSk7CiAgICAgcGxvdC0+QXBwZW5kVGltZVNlcmllcyhzdGQ6Om1vdmUoY2FwdHVyZV90aW1lX2Rh
dGEpKTsKIAogICAgIFRpbWVTZXJpZXMgc2VuZF90aW1lX2RhdGEoCiAgICAgICAgIEdldFN0cmVh
bU5hbWUoa0luY29taW5nUGFja2V0LCBzdHJlYW0uc3NyYykgKyAiIGFicy1zZW5kLXRpbWUiLAog
ICAgICAgICBMaW5lU3R5bGU6OmtMaW5lKTsKLSAgICBBY2N1bXVsYXRlUGFpcnM8TG9nZ2VkUnRw
UGFja2V0LCBkb3VibGU+KAotICAgICAgICBUb0NhbGxUaW1lLCBOZXR3b3JrRGVsYXlEaWZmX0Fi
c1NlbmRUaW1lLCBzdHJlYW0ucGFja2V0X3ZpZXcsCi0gICAgICAgICZzZW5kX3RpbWVfZGF0YSk7
Ci0gICAgcGxvdC0+QXBwZW5kVGltZVNlcmllcyhzdGQ6Om1vdmUoc2VuZF90aW1lX2RhdGEpKTsK
KyAgICBBY2N1bXVsYXRlUGFpcnM8TG9nZ2VkUnRwUGFja2V0SW5jb21pbmcsIGRvdWJsZT4oCisg
ICAgICAgIFRvQ2FsbFRpbWUsIE5ldHdvcmtEZWxheURpZmZfQWJzU2VuZFRpbWUsIHBhY2tldHMs
ICZzZW5kX3RpbWVfZGF0YSk7CisgICAgcGxvdC0+QXBwZW5kVGltZVNlcmllc0lmTm90RW1wdHko
c3RkOjptb3ZlKHNlbmRfdGltZV9kYXRhKSk7CiAgIH0KIAogICBwbG90LT5TZXRYQXhpcyhUb0Nh
bGxUaW1lU2VjKGJlZ2luX3RpbWVfKSwgY2FsbF9kdXJhdGlvbl9zXywgIlRpbWUgKHMpIiwKQEAg
LTEwODEsMTAgKzEwNjYsMTUgQEAgdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVTZW5kU2lk
ZUJ3ZVNpbXVsYXRpb25HcmFwaChQbG90KiBwbG90KSB7CiAgIFJ0Y0V2ZW50TG9nTnVsbEltcGwg
bnVsbF9ldmVudF9sb2c7CiAgIFBhY2tldFJvdXRlciBwYWNrZXRfcm91dGVyOwogICBQYWNlZFNl
bmRlciBwYWNlcigmY2xvY2ssICZwYWNrZXRfcm91dGVyLCAmbnVsbF9ldmVudF9sb2cpOwotICBT
ZW5kU2lkZUNvbmdlc3Rpb25Db250cm9sbGVyIGNjKCZjbG9jaywgJm9ic2VydmVyLCAmbnVsbF9l
dmVudF9sb2csICZwYWNlcik7CisgIFRyYW5zcG9ydEZlZWRiYWNrQWRhcHRlciB0cmFuc3BvcnRf
ZmVlZGJhY2soJmNsb2NrKTsKKyAgYXV0byBmYWN0b3J5ID0gR29vZ0NjTmV0d29ya0NvbnRyb2xs
ZXJGYWN0b3J5KCZudWxsX2V2ZW50X2xvZyk7CisgIFRpbWVEZWx0YSBwcm9jZXNzX2ludGVydmFs
ID0gZmFjdG9yeS5HZXRQcm9jZXNzSW50ZXJ2YWwoKTsKICAgLy8gVE9ETyhob2xtZXIpOiBMb2cg
dGhlIGNhbGwgY29uZmlnIGFuZCB1c2UgdGhhdCBoZXJlIGluc3RlYWQuCiAgIHN0YXRpYyBjb25z
dCB1aW50MzJfdCBrRGVmYXVsdFN0YXJ0Qml0cmF0ZUJwcyA9IDMwMDAwMDsKLSAgY2MuU2V0Qndl
Qml0cmF0ZXMoMCwga0RlZmF1bHRTdGFydEJpdHJhdGVCcHMsIC0xKTsKKyAgTmV0d29ya0NvbnRy
b2xsZXJDb25maWcgY2NfY29uZmlnOworICBjY19jb25maWcuY29uc3RyYWludHMuYXRfdGltZSA9
IFRpbWVzdGFtcDo6dXMoY2xvY2suVGltZUluTWljcm9zZWNvbmRzKCkpOworICBjY19jb25maWcu
Y29uc3RyYWludHMuc3RhcnRpbmdfcmF0ZSA9IERhdGFSYXRlOjpicHMoa0RlZmF1bHRTdGFydEJp
dHJhdGVCcHMpOworICBhdXRvIGdvb2dfY2MgPSBmYWN0b3J5LkNyZWF0ZShjY19jb25maWcpOwog
CiAgIFRpbWVTZXJpZXMgdGltZV9zZXJpZXMoIkRlbGF5LWJhc2VkIGVzdGltYXRlIiwgTGluZVN0
eWxlOjprU3RlcCwKICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludFN0eWxlOjprSGlnaGxp
Z2h0KTsKQEAgLTExMDcsMTIgKzEwOTcsMTIgQEAgdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVh
dGVTZW5kU2lkZUJ3ZVNpbXVsYXRpb25HcmFwaChQbG90KiBwbG90KSB7CiAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50NjRfdD4ocnRjcF9pdGVyYXRvci0+bG9nX3RpbWVfdXMoKSk7CiAgICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOwogICB9OworICBpbnQ2
NF90IG5leHRfcHJvY2Vzc190aW1lX3VzXyA9IGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygpOwog
CiAgIGF1dG8gTmV4dFByb2Nlc3NUaW1lID0gWyZdKCkgewogICAgIGlmIChydGNwX2l0ZXJhdG9y
ICE9IGluY29taW5nX3J0Y3AuZW5kKCkgfHwKICAgICAgICAgcnRwX2l0ZXJhdG9yICE9IG91dGdv
aW5nX3J0cC5lbmQoKSkgewotICAgICAgcmV0dXJuIGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygp
ICsKLSAgICAgICAgICAgICBzdGQ6Om1heDxpbnQ2NF90PihjYy5UaW1lVW50aWxOZXh0UHJvY2Vz
cygpICogMTAwMCwgMCk7CisgICAgICByZXR1cm4gbmV4dF9wcm9jZXNzX3RpbWVfdXNfOwogICAg
IH0KICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7CiAgIH07
CkBAIC0xMTI5LDI0ICsxMTE5LDMyIEBAIHZvaWQgRXZlbnRMb2dBbmFseXplcjo6Q3JlYXRlU2Vu
ZFNpZGVCd2VTaW11bGF0aW9uR3JhcGgoUGxvdCogcGxvdCkgewogICBBY2tub3dsZWRnZWRCaXRy
YXRlRXN0aW1hdG9yIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvcigKICAgICAgIGFic2w6
Om1ha2VfdW5pcXVlPEJpdHJhdGVFc3RpbWF0b3I+KCkpOwogI2VuZGlmICAvLyAhKEJXRV9URVNU
X0xPR0dJTkdfQ09NUElMRV9USU1FX0VOQUJMRSkKLSAgaW50NjRfdCB0aW1lX3VzID0gc3RkOjpt
aW4oTmV4dFJ0cFRpbWUoKSwgTmV4dFJ0Y3BUaW1lKCkpOworICBpbnQ2NF90IHRpbWVfdXMgPQor
ICAgICAgc3RkOjptaW4oe05leHRSdHBUaW1lKCksIE5leHRSdGNwVGltZSgpLCBOZXh0UHJvY2Vz
c1RpbWUoKX0pOwogICBpbnQ2NF90IGxhc3RfdXBkYXRlX3VzID0gMDsKICAgd2hpbGUgKHRpbWVf
dXMgIT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpIHsKICAgICBjbG9jay5B
ZHZhbmNlVGltZU1pY3Jvc2Vjb25kcyh0aW1lX3VzIC0gY2xvY2suVGltZUluTWljcm9zZWNvbmRz
KCkpOwogICAgIGlmIChjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSA+PSBOZXh0UnRjcFRpbWUo
KSkgewogICAgICAgUlRDX0RDSEVDS19FUShjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSwgTmV4
dFJ0Y3BUaW1lKCkpOwotICAgICAgY2MuT25UcmFuc3BvcnRGZWVkYmFjayhydGNwX2l0ZXJhdG9y
LT50cmFuc3BvcnRfZmVlZGJhY2spOwotICAgICAgc3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+
IGZlZWRiYWNrID0gY2MuR2V0VHJhbnNwb3J0RmVlZGJhY2tWZWN0b3IoKTsKLSAgICAgIFNvcnRQ
YWNrZXRGZWVkYmFja1ZlY3RvcigmZmVlZGJhY2spOworCisgICAgICBhdXRvIGZlZWRiYWNrX21z
ZyA9IHRyYW5zcG9ydF9mZWVkYmFjay5Qcm9jZXNzVHJhbnNwb3J0RmVlZGJhY2soCisgICAgICAg
ICAgcnRjcF9pdGVyYXRvci0+dHJhbnNwb3J0X2ZlZWRiYWNrKTsKICAgICAgIGFic2w6Om9wdGlv
bmFsPHVpbnQzMl90PiBiaXRyYXRlX2JwczsKLSAgICAgIGlmICghZmVlZGJhY2suZW1wdHkoKSkg
eworICAgICAgaWYgKGZlZWRiYWNrX21zZykgeworICAgICAgICBvYnNlcnZlci5VcGRhdGUoZ29v
Z19jYy0+T25UcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2soKmZlZWRiYWNrX21zZykpOworICAgICAg
ICBzdGQ6OnZlY3RvcjxQYWNrZXRGZWVkYmFjaz4gZmVlZGJhY2sgPQorICAgICAgICAgICAgdHJh
bnNwb3J0X2ZlZWRiYWNrLkdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCk7CisgICAgICAgIFNv
cnRQYWNrZXRGZWVkYmFja1ZlY3RvcigmZmVlZGJhY2spOworICAgICAgICBpZiAoIWZlZWRiYWNr
LmVtcHR5KCkpIHsKICNpZiAhKEJXRV9URVNUX0xPR0dJTkdfQ09NUElMRV9USU1FX0VOQUJMRSkK
LSAgICAgICAgYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLkluY29taW5nUGFja2V0RmVl
ZGJhY2tWZWN0b3IoZmVlZGJhY2spOworICAgICAgICAgIGFja25vd2xlZGdlZF9iaXRyYXRlX2Vz
dGltYXRvci5JbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKGZlZWRiYWNrKTsKICNlbmRpZiAg
Ly8gIShCV0VfVEVTVF9MT0dHSU5HX0NPTVBJTEVfVElNRV9FTkFCTEUpCi0gICAgICAgIGZvciAo
Y29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tldCA6IGZlZWRiYWNrKQotICAgICAgICAgIGFja2Vk
X2JpdHJhdGUuVXBkYXRlKHBhY2tldC5wYXlsb2FkX3NpemUsIHBhY2tldC5hcnJpdmFsX3RpbWVf
bXMpOwotICAgICAgICBiaXRyYXRlX2JwcyA9IGFja2VkX2JpdHJhdGUuUmF0ZShmZWVkYmFjay5i
YWNrKCkuYXJyaXZhbF90aW1lX21zKTsKKyAgICAgICAgICBmb3IgKGNvbnN0IFBhY2tldEZlZWRi
YWNrJiBwYWNrZXQgOiBmZWVkYmFjaykKKyAgICAgICAgICAgIGFja2VkX2JpdHJhdGUuVXBkYXRl
KHBhY2tldC5wYXlsb2FkX3NpemUsIHBhY2tldC5hcnJpdmFsX3RpbWVfbXMpOworICAgICAgICAg
IGJpdHJhdGVfYnBzID0gYWNrZWRfYml0cmF0ZS5SYXRlKGZlZWRiYWNrLmJhY2soKS5hcnJpdmFs
X3RpbWVfbXMpOworICAgICAgICB9CiAgICAgICB9CisKICAgICAgIGZsb2F0IHggPSBUb0NhbGxU
aW1lU2VjKGNsb2NrLlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKICAgICAgIGZsb2F0IHkgPSBiaXRy
YXRlX2Jwcy52YWx1ZV9vcigwKSAvIDEwMDA7CiAgICAgICBhY2tlZF90aW1lX3Nlcmllcy5wb2lu
dHMuZW1wbGFjZV9iYWNrKHgsIHkpOwpAQCAtMTE2MSwxOSArMTE1OSwyNSBAQCB2b2lkIEV2ZW50
TG9nQW5hbHl6ZXI6OkNyZWF0ZVNlbmRTaWRlQndlU2ltdWxhdGlvbkdyYXBoKFBsb3QqIHBsb3Qp
IHsKICAgICAgIGNvbnN0IFJ0cFBhY2tldFR5cGUmIHJ0cF9wYWNrZXQgPSAqcnRwX2l0ZXJhdG9y
LT5zZWNvbmQ7CiAgICAgICBpZiAocnRwX3BhY2tldC5ydHAuaGVhZGVyLmV4dGVuc2lvbi5oYXNU
cmFuc3BvcnRTZXF1ZW5jZU51bWJlcikgewogICAgICAgICBSVENfRENIRUNLKHJ0cF9wYWNrZXQu
cnRwLmhlYWRlci5leHRlbnNpb24uaGFzVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIpOwotICAgICAg
ICBjYy5BZGRQYWNrZXQocnRwX3BhY2tldC5ydHAuaGVhZGVyLnNzcmMsCi0gICAgICAgICAgICAg
ICAgICAgICBydHBfcGFja2V0LnJ0cC5oZWFkZXIuZXh0ZW5zaW9uLnRyYW5zcG9ydFNlcXVlbmNl
TnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgcnRwX3BhY2tldC5ydHAudG90YWxfbGVuZ3Ro
LCBQYWNlZFBhY2tldEluZm8oKSk7CisgICAgICAgIHRyYW5zcG9ydF9mZWVkYmFjay5BZGRQYWNr
ZXQoCisgICAgICAgICAgICBydHBfcGFja2V0LnJ0cC5oZWFkZXIuc3NyYywKKyAgICAgICAgICAg
IHJ0cF9wYWNrZXQucnRwLmhlYWRlci5leHRlbnNpb24udHJhbnNwb3J0U2VxdWVuY2VOdW1iZXIs
CisgICAgICAgICAgICBydHBfcGFja2V0LnJ0cC50b3RhbF9sZW5ndGgsIFBhY2VkUGFja2V0SW5m
bygpKTsKICAgICAgICAgcnRjOjpTZW50UGFja2V0IHNlbnRfcGFja2V0KAogICAgICAgICAgICAg
cnRwX3BhY2tldC5ydHAuaGVhZGVyLmV4dGVuc2lvbi50cmFuc3BvcnRTZXF1ZW5jZU51bWJlciwK
ICAgICAgICAgICAgIHJ0cF9wYWNrZXQucnRwLmxvZ190aW1lX3VzKCkgLyAxMDAwKTsKLSAgICAg
ICAgY2MuT25TZW50UGFja2V0KHNlbnRfcGFja2V0KTsKKyAgICAgICAgYXV0byBzZW50X21zZyA9
IHRyYW5zcG9ydF9mZWVkYmFjay5Qcm9jZXNzU2VudFBhY2tldChzZW50X3BhY2tldCk7CisgICAg
ICAgIGlmIChzZW50X21zZykKKyAgICAgICAgICBvYnNlcnZlci5VcGRhdGUoZ29vZ19jYy0+T25T
ZW50UGFja2V0KCpzZW50X21zZykpOwogICAgICAgfQogICAgICAgKytydHBfaXRlcmF0b3I7CiAg
ICAgfQogICAgIGlmIChjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSA+PSBOZXh0UHJvY2Vzc1Rp
bWUoKSkgewogICAgICAgUlRDX0RDSEVDS19FUShjbG9jay5UaW1lSW5NaWNyb3NlY29uZHMoKSwg
TmV4dFByb2Nlc3NUaW1lKCkpOwotICAgICAgY2MuUHJvY2VzcygpOworICAgICAgUHJvY2Vzc0lu
dGVydmFsIG1zZzsKKyAgICAgIG1zZy5hdF90aW1lID0gVGltZXN0YW1wOjp1cyhjbG9jay5UaW1l
SW5NaWNyb3NlY29uZHMoKSk7CisgICAgICBvYnNlcnZlci5VcGRhdGUoZ29vZ19jYy0+T25Qcm9j
ZXNzSW50ZXJ2YWwobXNnKSk7CisgICAgICBuZXh0X3Byb2Nlc3NfdGltZV91c18gKz0gcHJvY2Vz
c19pbnRlcnZhbC51cygpOwogICAgIH0KICAgICBpZiAob2JzZXJ2ZXIuR2V0QW5kUmVzZXRCaXRy
YXRlVXBkYXRlZCgpIHx8CiAgICAgICAgIHRpbWVfdXMgLSBsYXN0X3VwZGF0ZV91cyA+PSAxZTYp
IHsKQEAgLTEyNzcsOSArMTI4MSwxMCBAQCB2b2lkIEV2ZW50TG9nQW5hbHl6ZXI6OkNyZWF0ZVJl
Y2VpdmVTaWRlQndlU2ltdWxhdGlvbkdyYXBoKFBsb3QqIHBsb3QpIHsKIHZvaWQgRXZlbnRMb2dB
bmFseXplcjo6Q3JlYXRlTmV0d29ya0RlbGF5RmVlZGJhY2tHcmFwaChQbG90KiBwbG90KSB7CiAg
IFRpbWVTZXJpZXMgbGF0ZV9mZWVkYmFja19zZXJpZXMoIkxhdGUgZmVlZGJhY2sgcmVzdWx0cy4i
LCBMaW5lU3R5bGU6OmtOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBv
aW50U3R5bGU6OmtIaWdobGlnaHQpOwotICBUaW1lU2VyaWVzIHRpbWVfc2VyaWVzKCJOZXR3b3Jr
IERlbGF5IENoYW5nZSIsIExpbmVTdHlsZTo6a0xpbmUsCisgIFRpbWVTZXJpZXMgdGltZV9zZXJp
ZXMoIk5ldHdvcmsgZGVsYXkiLCBMaW5lU3R5bGU6OmtMaW5lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIFBvaW50U3R5bGU6OmtIaWdobGlnaHQpOwotICBpbnQ2NF90IGVzdGltYXRlZF9iYXNl
X2RlbGF5X21zID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7CisgIGludDY0
X3QgbWluX3NlbmRfcmVjZWl2ZV9kaWZmX21zID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWF4KCk7CisgIGludDY0X3QgbWluX3J0dF9tcyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
NjRfdD46Om1heCgpOwogCiAgIGludDY0X3QgcHJldl95ID0gMDsKICAgZm9yIChhdXRvIHBhY2tl
dCA6IEdldE5ldHdvcmtUcmFjZShwYXJzZWRfbG9nXykpIHsKQEAgLTEyOTIsMTYgKzEyOTcsMjIg
QEAgdm9pZCBFdmVudExvZ0FuYWx5emVyOjpDcmVhdGVOZXR3b3JrRGVsYXlGZWVkYmFja0dyYXBo
KFBsb3QqIHBsb3QpIHsKICAgICB9CiAgICAgaW50NjRfdCB5ID0gcGFja2V0LmFycml2YWxfdGlt
ZV9tcyAtIHBhY2tldC5zZW5kX3RpbWVfbXM7CiAgICAgcHJldl95ID0geTsKLSAgICBlc3RpbWF0
ZWRfYmFzZV9kZWxheV9tcyA9IHN0ZDo6bWluKHksIGVzdGltYXRlZF9iYXNlX2RlbGF5X21zKTsK
KyAgICBpbnQ2NF90IHJ0dF9tcyA9IHBhY2tldC5mZWVkYmFja19hcnJpdmFsX3RpbWVfbXMgLSBw
YWNrZXQuc2VuZF90aW1lX21zOworICAgIG1pbl9ydHRfbXMgPSBzdGQ6Om1pbihydHRfbXMsIG1p
bl9ydHRfbXMpOworICAgIG1pbl9zZW5kX3JlY2VpdmVfZGlmZl9tcyA9IHN0ZDo6bWluKHksIG1p
bl9zZW5kX3JlY2VpdmVfZGlmZl9tcyk7CiAgICAgdGltZV9zZXJpZXMucG9pbnRzLmVtcGxhY2Vf
YmFjayh4LCB5KTsKICAgfQogCi0gIC8vIFdlIGFzc3VtZSB0aGF0IHRoZSBiYXNlIG5ldHdvcmsg
ZGVsYXkgKHcvbyBxdWV1ZXMpIGlzIHRoZSBtaW4gZGVsYXkKLSAgLy8gb2JzZXJ2ZWQgZHVyaW5n
IHRoZSBjYWxsLgorICAvLyBXZSBhc3N1bWUgdGhhdCB0aGUgYmFzZSBuZXR3b3JrIGRlbGF5ICh3
L28gcXVldWVzKSBpcyBlcXVhbCB0byBoYWxmCisgIC8vIHRoZSBtaW5pbXVtIFJUVC4gVGhlcmVm
b3JlIHJlc2NhbGUgdGhlIGRlbGF5cyBieSBzdWJ0cmFjdGluZyB0aGUgbWluaW11bQorICAvLyBv
YnNlcnZlZCAxLXdheXMgZGVsYXkgYW5kIGFkZCBoYWxmIHRoZSBtaW51bXVtIFJUVC4KKyAgY29u
c3QgaW50NjRfdCBlc3RpbWF0ZWRfY2xvY2tfb2Zmc2V0X21zID0KKyAgICAgIG1pbl9zZW5kX3Jl
Y2VpdmVfZGlmZl9tcyAtIG1pbl9ydHRfbXMgLyAyOwogICBmb3IgKFRpbWVTZXJpZXNQb2ludCYg
cG9pbnQgOiB0aW1lX3Nlcmllcy5wb2ludHMpCi0gICAgcG9pbnQueSAtPSBlc3RpbWF0ZWRfYmFz
ZV9kZWxheV9tczsKKyAgICBwb2ludC55IC09IGVzdGltYXRlZF9jbG9ja19vZmZzZXRfbXM7CiAg
IGZvciAoVGltZVNlcmllc1BvaW50JiBwb2ludCA6IGxhdGVfZmVlZGJhY2tfc2VyaWVzLnBvaW50
cykKLSAgICBwb2ludC55IC09IGVzdGltYXRlZF9iYXNlX2RlbGF5X21zOworICAgIHBvaW50Lnkg
LT0gZXN0aW1hdGVkX2Nsb2NrX29mZnNldF9tczsKKwogICAvLyBBZGQgdGhlIGRhdGEgc2V0IHRv
IHRoZSBwbG90LgogICBwbG90LT5BcHBlbmRUaW1lU2VyaWVzSWZOb3RFbXB0eShzdGQ6Om1vdmUo
dGltZV9zZXJpZXMpKTsKICAgcGxvdC0+QXBwZW5kVGltZVNlcmllc0lmTm90RW1wdHkoc3RkOjpt
b3ZlKGxhdGVfZmVlZGJhY2tfc2VyaWVzKSk7CkBAIC0xMzA5LDcgKzEzMjAsNyBAQCB2b2lkIEV2
ZW50TG9nQW5hbHl6ZXI6OkNyZWF0ZU5ldHdvcmtEZWxheUZlZWRiYWNrR3JhcGgoUGxvdCogcGxv
dCkgewogICBwbG90LT5TZXRYQXhpcyhUb0NhbGxUaW1lU2VjKGJlZ2luX3RpbWVfKSwgY2FsbF9k
dXJhdGlvbl9zXywgIlRpbWUgKHMpIiwKICAgICAgICAgICAgICAgICAga0xlZnRNYXJnaW4sIGtS
aWdodE1hcmdpbik7CiAgIHBsb3QtPlNldFN1Z2dlc3RlZFlBeGlzKDAsIDEwLCAiRGVsYXkgKG1z
KSIsIGtCb3R0b21NYXJnaW4sIGtUb3BNYXJnaW4pOwotICBwbG90LT5TZXRUaXRsZSgiTmV0d29y
ayBEZWxheSBDaGFuZ2UuIik7CisgIHBsb3QtPlNldFRpdGxlKCJOZXR3b3JrIGRlbGF5IChiYXNl
ZCBvbiBwZXItcGFja2V0IGZlZWRiYWNrKSIpOwogfQogCiB2b2lkIEV2ZW50TG9nQW5hbHl6ZXI6
OkNyZWF0ZVBhY2VyRGVsYXlHcmFwaChQbG90KiBwbG90KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZXZlbnRfbG9nX3Zp
c3VhbGl6ZXIvYW5hbHl6ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9hbmFseXplci5oCmluZGV4IDRi
OGMyN2M5NTE3ZDBjYmNjMDQwMWQ0OGFiMTE4Y2MyM2Q5MDEyOGEuLmM2NjA2YzJiMWYxNmIxMjJk
MzViMmUxZmQ2ZjNjZWQzZWJmOWU2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9hbmFs
eXplci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y190b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9hbmFseXplci5oCkBAIC00NSw3ICs0NSw2IEBA
IGNsYXNzIEV2ZW50TG9nQW5hbHl6ZXIgewogCiAgIHZvaWQgQ3JlYXRlSW5jb21pbmdQYWNrZXRM
b3NzR3JhcGgoUGxvdCogcGxvdCk7CiAKLSAgdm9pZCBDcmVhdGVJbmNvbWluZ0RlbGF5RGVsdGFH
cmFwaChQbG90KiBwbG90KTsKICAgdm9pZCBDcmVhdGVJbmNvbWluZ0RlbGF5R3JhcGgoUGxvdCog
cGxvdCk7CiAKICAgdm9pZCBDcmVhdGVGcmFjdGlvbkxvc3NHcmFwaChQbG90KiBwbG90KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190
b29scy9ldmVudF9sb2dfdmlzdWFsaXplci9tYWluLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2V2ZW50X2xvZ192aXN1YWxpemVyL21haW4u
Y2MKaW5kZXggMGMzNjg5YzFiY2FlM2EwZmRkMDAzODYyYjFkOGRmZjQ0ZGFiMmVlMS4uMGI0ZTc2
MTdlNjA2OGQ3NTZmMzkwZjRiZTJjNzRjYzkxZWJjYTYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2V2ZW50X2xvZ192aXN1
YWxpemVyL21haW4uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX3Rvb2xzL2V2ZW50X2xvZ192aXN1YWxpemVyL21haW4uY2MKQEAgLTIwLDE1MSAr
MjAsMTY5IEBACiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3Qv
dGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKLURFRklORV9zdHJpbmcocGxvdF9wcm9maWxlLAot
ICAgICAgICAgICAgICAiZGVmYXVsdCIsCi0gICAgICAgICAgICAgICJBIHByb2ZpbGUgdGhhdCBz
ZWxlY3RzIGEgY2VydGFpbiBzdWJzZXQgb2YgdGhlIHBsb3RzLiBDdXJyZW50bHkgIgotICAgICAg
ICAgICAgICAiZGVmaW5lZCBwcm9maWxlcyBhcmUgXCJhbGxcIiwgXCJub25lXCIsIFwic2VuZHNp
ZGVfYndlXCIsIgotICAgICAgICAgICAgICAiXCJyZWNlaXZlc2lkZV9id2VcIiBhbmQgXCJkZWZh
dWx0XCIiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIHBsb3RfcHJvZmlsZSwKKyAgICAi
ZGVmYXVsdCIsCisgICAgIkEgcHJvZmlsZSB0aGF0IHNlbGVjdHMgYSBjZXJ0YWluIHN1YnNldCBv
ZiB0aGUgcGxvdHMuIEN1cnJlbnRseSAiCisgICAgImRlZmluZWQgcHJvZmlsZXMgYXJlIFwiYWxs
XCIsIFwibm9uZVwiLCBcInNlbmRzaWRlX2J3ZVwiLCIKKyAgICAiXCJyZWNlaXZlc2lkZV9id2Vc
IiBhbmQgXCJkZWZhdWx0XCIiKTsKIAotREVGSU5FX2Jvb2wocGxvdF9pbmNvbWluZ19wYWNrZXRf
c2l6ZXMsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IGJhciBncmFwaCBz
aG93aW5nIHRoZSBzaXplIG9mIGVhY2ggaW5jb21pbmcgcGFja2V0LiIpOwotREVGSU5FX2Jvb2wo
cGxvdF9vdXRnb2luZ19wYWNrZXRfc2l6ZXMsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAg
ICAgICJQbG90IGJhciBncmFwaCBzaG93aW5nIHRoZSBzaXplIG9mIGVhY2ggb3V0Z29pbmcgcGFj
a2V0LiIpOwotREVGSU5FX2Jvb2wocGxvdF9pbmNvbWluZ19wYWNrZXRfY291bnQsCi0gICAgICAg
ICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IHRoZSBhY2N1bXVsYXRlZCBudW1iZXIgb2Yg
cGFja2V0cyBmb3IgZWFjaCBpbmNvbWluZyBzdHJlYW0uIik7Ci1ERUZJTkVfYm9vbChwbG90X291
dGdvaW5nX3BhY2tldF9jb3VudCwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBs
b3QgdGhlIGFjY3VtdWxhdGVkIG51bWJlciBvZiBwYWNrZXRzIGZvciBlYWNoIG91dGdvaW5nIHN0
cmVhbS4iKTsKLURFRklORV9ib29sKHBsb3RfYXVkaW9fcGxheW91dCwKLSAgICAgICAgICAgIGZh
bHNlLAotICAgICAgICAgICAgIlBsb3QgYmFyIGdyYXBoIHNob3dpbmcgdGhlIHRpbWUgYmV0d2Vl
biBlYWNoIGF1ZGlvIHBsYXlvdXQuIik7Ci1ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2xldmVsLAot
ICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUGxvdCBsaW5lIGdyYXBoIHNob3dpbmcg
dGhlIGF1ZGlvIGxldmVsIG9mIGluY29taW5nIGF1ZGlvLiIpOwotREVGSU5FX2Jvb2wocGxvdF9p
bmNvbWluZ19zZXF1ZW5jZV9udW1iZXJfZGVsdGEsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAg
ICAgICAgICJQbG90IHRoZSBzZXF1ZW5jZSBudW1iZXIgZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbnNl
Y3V0aXZlIGluY29taW5nICIKLSAgICAgICAgICAgICJwYWNrZXRzLiIpOwotREVGSU5FX2Jvb2wo
Ci0gICAgcGxvdF9pbmNvbWluZ19kZWxheV9kZWx0YSwKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90
X2luY29taW5nX3BhY2tldF9zaXplcywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAiUGxvdCBiYXIgZ3JhcGggc2hvd2luZyB0aGUgc2l6ZSBvZiBlYWNoIGlu
Y29taW5nIHBhY2tldC4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X291dGdvaW5nX3BhY2tl
dF9zaXplcywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAi
UGxvdCBiYXIgZ3JhcGggc2hvd2luZyB0aGUgc2l6ZSBvZiBlYWNoIG91dGdvaW5nIHBhY2tldC4i
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBwbG90X2luY29taW5nX3BhY2tldF9jb3VudCwK
ICAgICBmYWxzZSwKLSAgICAiUGxvdCB0aGUgZGlmZmVyZW5jZSBpbiAxLXdheSBwYXRoIGRlbGF5
IGJldHdlZW4gY29uc2VjdXRpdmUgcGFja2V0cy4iKTsKLURFRklORV9ib29sKHBsb3RfaW5jb21p
bmdfZGVsYXksCi0gICAgICAgICAgICB0cnVlLAotICAgICAgICAgICAgIlBsb3QgdGhlIDEtd2F5
IHBhdGggZGVsYXkgZm9yIGluY29taW5nIHBhY2tldHMsIG5vcm1hbGl6ZWQgc28gIgotICAgICAg
ICAgICAgInRoYXQgdGhlIGZpcnN0IHBhY2tldCBoYXMgZGVsYXkgMC4iKTsKLURFRklORV9ib29s
KHBsb3RfaW5jb21pbmdfbG9zc19yYXRlLAotICAgICAgICAgICAgdHJ1ZSwKLSAgICAgICAgICAg
ICJDb21wdXRlIHRoZSBsb3NzIHJhdGUgZm9yIGluY29taW5nIHBhY2tldHMgdXNpbmcgYSBtZXRo
b2QgdGhhdCdzICIKLSAgICAgICAgICAgICJzaW1pbGFyIHRvIHRoZSBvbmUgdXNlZCBmb3IgUlRD
UCBTUiBhbmQgUlIgZnJhY3Rpb24gbG9zdC4gTm90ZSAiCi0gICAgICAgICAgICAidGhhdCB0aGUg
bG9zcyByYXRlIGNhbiBiZSBuZWdhdGl2ZSBpZiBwYWNrZXRzIGFyZSBkdXBsaWNhdGVkIG9yICIK
LSAgICAgICAgICAgICJyZW9yZGVyZWQuIik7Ci1ERUZJTkVfYm9vbChwbG90X2luY29taW5nX2Jp
dHJhdGUsCi0gICAgICAgICAgICB0cnVlLAotICAgICAgICAgICAgIlBsb3QgdGhlIHRvdGFsIGJp
dHJhdGUgdXNlZCBieSBhbGwgaW5jb21pbmcgc3RyZWFtcy4iKTsKLURFRklORV9ib29sKHBsb3Rf
b3V0Z29pbmdfYml0cmF0ZSwKLSAgICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAiUGxvdCB0
aGUgdG90YWwgYml0cmF0ZSB1c2VkIGJ5IGFsbCBvdXRnb2luZyBzdHJlYW1zLiIpOwotREVGSU5F
X2Jvb2wocGxvdF9pbmNvbWluZ19zdHJlYW1fYml0cmF0ZSwKLSAgICAgICAgICAgIHRydWUsCi0g
ICAgICAgICAgICAiUGxvdCB0aGUgYml0cmF0ZSB1c2VkIGJ5IGVhY2ggaW5jb21pbmcgc3RyZWFt
LiIpOwotREVGSU5FX2Jvb2wocGxvdF9vdXRnb2luZ19zdHJlYW1fYml0cmF0ZSwKLSAgICAgICAg
ICAgIHRydWUsCi0gICAgICAgICAgICAiUGxvdCB0aGUgYml0cmF0ZSB1c2VkIGJ5IGVhY2ggb3V0
Z29pbmcgc3RyZWFtLiIpOwotREVGSU5FX2Jvb2wocGxvdF9zaW11bGF0ZWRfcmVjZWl2ZXNpZGVf
YndlLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiUnVuIHRoZSByZWNlaXZlLXNp
ZGUgYmFuZHdpZHRoIGVzdGltYXRvciB3aXRoIHRoZSBpbmNvbWluZyBydHAgIgotICAgICAgICAg
ICAgInBhY2tldHMgYW5kIHBsb3QgdGhlIHJlc3VsdGluZyBlc3RpbWF0ZS4iKTsKLURFRklORV9i
b29sKHBsb3Rfc2ltdWxhdGVkX3NlbmRzaWRlX2J3ZSwKLSAgICAgICAgICAgIGZhbHNlLAotICAg
ICAgICAgICAgIlJ1biB0aGUgc2VuZC1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0b3Igd2l0aCB0aGUg
b3V0Z29pbmcgcnRwIGFuZCAiCi0gICAgICAgICAgICAiaW5jb21pbmcgcnRjcCBhbmQgcGxvdCB0
aGUgcmVzdWx0aW5nIGVzdGltYXRlLiIpOwotREVGSU5FX2Jvb2wocGxvdF9uZXR3b3JrX2RlbGF5
X2ZlZWRiYWNrLAotICAgICAgICAgICAgdHJ1ZSwKLSAgICAgICAgICAgICJDb21wdXRlIG5ldHdv
cmsgZGVsYXkgYmFzZWQgb24gc2VudCBwYWNrZXRzIGFuZCB0aGUgcmVjZWl2ZWQgIgotICAgICAg
ICAgICAgInRyYW5zcG9ydCBmZWVkYmFjay4iKTsKLURFRklORV9ib29sKHBsb3RfZnJhY3Rpb25f
bG9zc19mZWVkYmFjaywKLSAgICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAiUGxvdCBwYWNr
ZXQgbG9zcyBpbiBwZXJjZW50IGZvciBvdXRnb2luZyBwYWNrZXRzIChhcyBwZXJjZWl2ZWQgYnkg
IgotICAgICAgICAgICAgInRoZSBzZW5kLXNpZGUgYmFuZHdpZHRoIGVzdGltYXRvcikuIik7Ci1E
RUZJTkVfYm9vbChwbG90X3BhY2VyX2RlbGF5LAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAg
ICAgICAiUGxvdCB0aGUgdGltZSBlYWNoIHNlbnQgcGFja2V0IGhhcyBzcGVudCBpbiB0aGUgcGFj
ZXIgKGJhc2VkIG9uICIKLSAgICAgICAgICAgICJ0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBS
VFAgdGltZXN0YW1wIGFuZCB0aGUgc2VuZCAiCi0gICAgICAgICAgICAidGltZXN0YW1wKS4iKTsK
LURFRklORV9ib29sKHBsb3RfdGltZXN0YW1wcywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAg
ICAgICAgIlBsb3QgdGhlIHJ0cCB0aW1lc3RhbXBzIG9mIGFsbCBydHAgYW5kIHJ0Y3AgcGFja2V0
cyBvdmVyIHRpbWUuIik7Ci1ERUZJTkVfYm9vbChwbG90X3J0Y3BfZGV0YWlscywKLSAgICAgICAg
ICAgIGZhbHNlLAotICAgICAgICAgICAgIlBsb3QgdGhlIGNvbnRlbnRzIG9mIGFsbCByZXBvcnQg
YmxvY2tzIGluIGFsbCBzZW5kZXIgYW5kIHJlY2VpdmVyICIKLSAgICAgICAgICAgICJyZXBvcnRz
LiBUaGlzIGluY2x1ZGVzIGZyYWN0aW9uIGxvc3QsIGN1bXVsYXRpdmUgbnVtYmVyIG9mIGxvc3Qg
IgotICAgICAgICAgICAgInBhY2tldHMsIGV4dGVuZGVkIGhpZ2hlc3Qgc2VxdWVuY2UgbnVtYmVy
IGFuZCB0aW1lIHNpbmNlIGxhc3QgIgotICAgICAgICAgICAgInJlY2VpdmVkIFNSLiIpOwotREVG
SU5FX2Jvb2wocGxvdF9hdWRpb19lbmNvZGVyX2JpdHJhdGVfYnBzLAotICAgICAgICAgICAgZmFs
c2UsCi0gICAgICAgICAgICAiUGxvdCB0aGUgYXVkaW8gZW5jb2RlciB0YXJnZXQgYml0cmF0ZS4i
KTsKLURFRklORV9ib29sKHBsb3RfYXVkaW9fZW5jb2Rlcl9mcmFtZV9sZW5ndGhfbXMsCi0gICAg
ICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIGZyYW1l
IGxlbmd0aC4iKTsKLURFRklORV9ib29sKAorICAgICJQbG90IHRoZSBhY2N1bXVsYXRlZCBudW1i
ZXIgb2YgcGFja2V0cyBmb3IgZWFjaCBpbmNvbWluZyBzdHJlYW0uIik7CitXRUJSVENfREVGSU5F
X2Jvb2woCisgICAgcGxvdF9vdXRnb2luZ19wYWNrZXRfY291bnQsCisgICAgZmFsc2UsCisgICAg
IlBsb3QgdGhlIGFjY3VtdWxhdGVkIG51bWJlciBvZiBwYWNrZXRzIGZvciBlYWNoIG91dGdvaW5n
IHN0cmVhbS4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBwbG90X2F1ZGlvX3BsYXlvdXQs
CisgICAgZmFsc2UsCisgICAgIlBsb3QgYmFyIGdyYXBoIHNob3dpbmcgdGhlIHRpbWUgYmV0d2Vl
biBlYWNoIGF1ZGlvIHBsYXlvdXQuIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGxvdF9h
dWRpb19sZXZlbCwKKyAgICBmYWxzZSwKKyAgICAiUGxvdCBsaW5lIGdyYXBoIHNob3dpbmcgdGhl
IGF1ZGlvIGxldmVsIG9mIGluY29taW5nIGF1ZGlvLiIpOworV0VCUlRDX0RFRklORV9ib29sKAor
ICAgIHBsb3RfaW5jb21pbmdfc2VxdWVuY2VfbnVtYmVyX2RlbHRhLAorICAgIGZhbHNlLAorICAg
ICJQbG90IHRoZSBzZXF1ZW5jZSBudW1iZXIgZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbnNlY3V0aXZl
IGluY29taW5nICIKKyAgICAicGFja2V0cy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBw
bG90X2luY29taW5nX2RlbGF5LAorICAgIHRydWUsCisgICAgIlBsb3QgdGhlIDEtd2F5IHBhdGgg
ZGVsYXkgZm9yIGluY29taW5nIHBhY2tldHMsIG5vcm1hbGl6ZWQgc28gIgorICAgICJ0aGF0IHRo
ZSBmaXJzdCBwYWNrZXQgaGFzIGRlbGF5IDAuIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAg
cGxvdF9pbmNvbWluZ19sb3NzX3JhdGUsCisgICAgdHJ1ZSwKKyAgICAiQ29tcHV0ZSB0aGUgbG9z
cyByYXRlIGZvciBpbmNvbWluZyBwYWNrZXRzIHVzaW5nIGEgbWV0aG9kIHRoYXQncyAiCisgICAg
InNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIGZvciBSVENQIFNSIGFuZCBSUiBmcmFjdGlvbiBsb3N0
LiBOb3RlICIKKyAgICAidGhhdCB0aGUgbG9zcyByYXRlIGNhbiBiZSBuZWdhdGl2ZSBpZiBwYWNr
ZXRzIGFyZSBkdXBsaWNhdGVkIG9yICIKKyAgICAicmVvcmRlcmVkLiIpOworV0VCUlRDX0RFRklO
RV9ib29sKHBsb3RfaW5jb21pbmdfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICB0cnVlLAor
ICAgICAgICAgICAgICAgICAgICJQbG90IHRoZSB0b3RhbCBiaXRyYXRlIHVzZWQgYnkgYWxsIGlu
Y29taW5nIHN0cmVhbXMuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9vdXRnb2luZ19iaXRy
YXRlLAorICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgIlBsb3Qg
dGhlIHRvdGFsIGJpdHJhdGUgdXNlZCBieSBhbGwgb3V0Z29pbmcgc3RyZWFtcy4iKTsKK1dFQlJU
Q19ERUZJTkVfYm9vbChwbG90X2luY29taW5nX3N0cmVhbV9iaXRyYXRlLAorICAgICAgICAgICAg
ICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgIlBsb3QgdGhlIGJpdHJhdGUgdXNlZCBi
eSBlYWNoIGluY29taW5nIHN0cmVhbS4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X291dGdv
aW5nX3N0cmVhbV9iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAg
ICAgICAgICAgIlBsb3QgdGhlIGJpdHJhdGUgdXNlZCBieSBlYWNoIG91dGdvaW5nIHN0cmVhbS4i
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICBwbG90X3NpbXVsYXRlZF9yZWNlaXZlc2lkZV9i
d2UsCisgICAgZmFsc2UsCisgICAgIlJ1biB0aGUgcmVjZWl2ZS1zaWRlIGJhbmR3aWR0aCBlc3Rp
bWF0b3Igd2l0aCB0aGUgaW5jb21pbmcgcnRwICIKKyAgICAicGFja2V0cyBhbmQgcGxvdCB0aGUg
cmVzdWx0aW5nIGVzdGltYXRlLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHBsb3Rfc2lt
dWxhdGVkX3NlbmRzaWRlX2J3ZSwKKyAgICBmYWxzZSwKKyAgICAiUnVuIHRoZSBzZW5kLXNpZGUg
YmFuZHdpZHRoIGVzdGltYXRvciB3aXRoIHRoZSBvdXRnb2luZyBydHAgYW5kICIKKyAgICAiaW5j
b21pbmcgcnRjcCBhbmQgcGxvdCB0aGUgcmVzdWx0aW5nIGVzdGltYXRlLiIpOworV0VCUlRDX0RF
RklORV9ib29sKAorICAgIHBsb3RfbmV0d29ya19kZWxheV9mZWVkYmFjaywKKyAgICB0cnVlLAor
ICAgICJDb21wdXRlIG5ldHdvcmsgZGVsYXkgYmFzZWQgb24gc2VudCBwYWNrZXRzIGFuZCB0aGUg
cmVjZWl2ZWQgIgorICAgICJ0cmFuc3BvcnQgZmVlZGJhY2suIik7CitXRUJSVENfREVGSU5FX2Jv
b2woCisgICAgcGxvdF9mcmFjdGlvbl9sb3NzX2ZlZWRiYWNrLAorICAgIHRydWUsCisgICAgIlBs
b3QgcGFja2V0IGxvc3MgaW4gcGVyY2VudCBmb3Igb3V0Z29pbmcgcGFja2V0cyAoYXMgcGVyY2Vp
dmVkIGJ5ICIKKyAgICAidGhlIHNlbmQtc2lkZSBiYW5kd2lkdGggZXN0aW1hdG9yKS4iKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbCgKKyAgICBwbG90X3BhY2VyX2RlbGF5LAorICAgIGZhbHNlLAorICAg
ICJQbG90IHRoZSB0aW1lIGVhY2ggc2VudCBwYWNrZXQgaGFzIHNwZW50IGluIHRoZSBwYWNlciAo
YmFzZWQgb24gIgorICAgICJ0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBSVFAgdGltZXN0YW1w
IGFuZCB0aGUgc2VuZCAiCisgICAgInRpbWVzdGFtcCkuIik7CitXRUJSVENfREVGSU5FX2Jvb2wo
CisgICAgcGxvdF90aW1lc3RhbXBzLAorICAgIGZhbHNlLAorICAgICJQbG90IHRoZSBydHAgdGlt
ZXN0YW1wcyBvZiBhbGwgcnRwIGFuZCBydGNwIHBhY2tldHMgb3ZlciB0aW1lLiIpOworV0VCUlRD
X0RFRklORV9ib29sKAorICAgIHBsb3RfcnRjcF9kZXRhaWxzLAorICAgIGZhbHNlLAorICAgICJQ
bG90IHRoZSBjb250ZW50cyBvZiBhbGwgcmVwb3J0IGJsb2NrcyBpbiBhbGwgc2VuZGVyIGFuZCBy
ZWNlaXZlciAiCisgICAgInJlcG9ydHMuIFRoaXMgaW5jbHVkZXMgZnJhY3Rpb24gbG9zdCwgY3Vt
dWxhdGl2ZSBudW1iZXIgb2YgbG9zdCAiCisgICAgInBhY2tldHMsIGV4dGVuZGVkIGhpZ2hlc3Qg
c2VxdWVuY2UgbnVtYmVyIGFuZCB0aW1lIHNpbmNlIGxhc3QgIgorICAgICJyZWNlaXZlZCBTUi4i
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2VuY29kZXJfYml0cmF0ZV9icHMsCisg
ICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlBsb3QgdGhlIGF1
ZGlvIGVuY29kZXIgdGFyZ2V0IGJpdHJhdGUuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9h
dWRpb19lbmNvZGVyX2ZyYW1lX2xlbmd0aF9tcywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAiUGxvdCB0aGUgYXVkaW8gZW5jb2RlciBmcmFtZSBsZW5ndGgu
Iik7CitXRUJSVENfREVGSU5FX2Jvb2woCiAgICAgcGxvdF9hdWRpb19lbmNvZGVyX3BhY2tldF9s
b3NzLAogICAgIGZhbHNlLAogICAgICJQbG90IHRoZSB1cGxpbmsgcGFja2V0IGxvc3MgZnJhY3Rp
b24gd2hpY2ggaXMgc2VudCB0byB0aGUgYXVkaW8gZW5jb2Rlci4iKTsKLURFRklORV9ib29sKHBs
b3RfYXVkaW9fZW5jb2Rlcl9mZWMsIGZhbHNlLCAiUGxvdCB0aGUgYXVkaW8gZW5jb2RlciBGRUMu
Iik7Ci1ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2VuY29kZXJfZHR4LCBmYWxzZSwgIlBsb3QgdGhl
IGF1ZGlvIGVuY29kZXIgRFRYLiIpOwotREVGSU5FX2Jvb2wocGxvdF9hdWRpb19lbmNvZGVyX251
bV9jaGFubmVscywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlBsb3QgdGhlIGF1
ZGlvIGVuY29kZXIgbnVtYmVyIG9mIGNoYW5uZWxzLiIpOwotREVGSU5FX2Jvb2wocGxvdF9uZXRl
cV9zdGF0cywgZmFsc2UsICJQbG90IHRoZSBOZXRFcSBzdGF0aXN0aWNzLiIpOwotREVGSU5FX2Jv
b2wocGxvdF9pY2VfY2FuZGlkYXRlX3BhaXJfY29uZmlnLAotICAgICAgICAgICAgZmFsc2UsCi0g
ICAgICAgICAgICAiUGxvdCB0aGUgSUNFIGNhbmRpZGF0ZSBwYWlyIGNvbmZpZyBldmVudHMuIik7
Ci1ERUZJTkVfYm9vbChwbG90X2ljZV9jb25uZWN0aXZpdHlfY2hlY2ssCi0gICAgICAgICAgICBm
YWxzZSwKLSAgICAgICAgICAgICJQbG90IHRoZSBJQ0UgY2FuZGlkYXRlIHBhaXIgY29ubmVjdGl2
aXR5IGNoZWNrcy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2VuY29kZXJfZmVj
LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJQbG90IHRo
ZSBhdWRpbyBlbmNvZGVyIEZFQy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X2F1ZGlvX2Vu
Y29kZXJfZHR4LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAg
ICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIERUWC4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90
X2F1ZGlvX2VuY29kZXJfbnVtX2NoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAor
ICAgICAgICAgICAgICAgICAgICJQbG90IHRoZSBhdWRpbyBlbmNvZGVyIG51bWJlciBvZiBjaGFu
bmVscy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X25ldGVxX3N0YXRzLCBmYWxzZSwgIlBs
b3QgdGhlIE5ldEVxIHN0YXRpc3RpY3MuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocGxvdF9pY2Vf
Y2FuZGlkYXRlX3BhaXJfY29uZmlnLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAg
ICAgICAgICAgICAgICJQbG90IHRoZSBJQ0UgY2FuZGlkYXRlIHBhaXIgY29uZmlnIGV2ZW50cy4i
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbChwbG90X2ljZV9jb25uZWN0aXZpdHlfY2hlY2ssCisgICAg
ICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlBsb3QgdGhlIElDRSBj
YW5kaWRhdGUgcGFpciBjb25uZWN0aXZpdHkgY2hlY2tzLiIpOwogCi1ERUZJTkVfc3RyaW5nKAor
V0VCUlRDX0RFRklORV9zdHJpbmcoCiAgICAgZm9yY2VfZmllbGR0cmlhbHMsCiAgICAgIiIsCiAg
ICAgIkZpZWxkIHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2gg
Y2FuIGJlIGZvcmNlZC4gIgogICAgICJFLmcuIHJ1bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJp
YWxzPVdlYlJUQy1Gb29GZWF0dXJlL0VuYWJsZWQvIgogICAgICIgd2lsbCBhc3NpZ24gdGhlIGdy
b3VwIEVuYWJsZWQgdG8gZmllbGQgdHJpYWwgV2ViUlRDLUZvb0ZlYXR1cmUuIE11bHRpcGxlICIK
ICAgICAidHJpYWxzIGFyZSBzZXBhcmF0ZWQgYnkgXCIvXCIiKTsKLURFRklORV9zdHJpbmcod2F2
X2ZpbGVuYW1lLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIlBhdGggdG8gd2F2
IGZpbGUgdXNlZCBmb3Igc2ltdWxhdGlvbiBvZiBqaXR0ZXIgYnVmZmVyIik7Ci1ERUZJTkVfYm9v
bChoZWxwLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKTsKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKHdhdl9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAg
ICAgICAgICAgIlBhdGggdG8gd2F2IGZpbGUgdXNlZCBmb3Igc2ltdWxhdGlvbiBvZiBqaXR0ZXIg
YnVmZmVyIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBt
ZXNzYWdlIik7CiAKLURFRklORV9ib29sKHNob3dfZGV0ZWN0b3Jfc3RhdGUsCi0gICAgICAgICAg
ICBmYWxzZSwKLSAgICAgICAgICAgICJTaG93IHRoZSBzdGF0ZSBvZiB0aGUgZGVsYXkgYmFzZWQg
QldFIGRldGVjdG9yIG9uIHRoZSB0b3RhbCAiCi0gICAgICAgICAgICAiYml0cmF0ZSBncmFwaCIp
OworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHNob3dfZGV0ZWN0b3Jfc3RhdGUsCisgICAgZmFs
c2UsCisgICAgIlNob3cgdGhlIHN0YXRlIG9mIHRoZSBkZWxheSBiYXNlZCBCV0UgZGV0ZWN0b3Ig
b24gdGhlIHRvdGFsICIKKyAgICAiYml0cmF0ZSBncmFwaCIpOwogCi1ERUZJTkVfYm9vbChzaG93
X2Fscl9zdGF0ZSwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlNob3cgdGhlIHN0
YXRlIEFMUiBzdGF0ZSBvbiB0aGUgdG90YWwgYml0cmF0ZSBncmFwaCIpOworV0VCUlRDX0RFRklO
RV9ib29sKHNob3dfYWxyX3N0YXRlLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAg
ICAgICAgICAgICAgICJTaG93IHRoZSBzdGF0ZSBBTFIgc3RhdGUgb24gdGhlIHRvdGFsIGJpdHJh
dGUgZ3JhcGgiKTsKIAotREVGSU5FX2Jvb2wocGFyc2VfdW5jb25maWd1cmVkX2hlYWRlcl9leHRl
bnNpb25zLAotICAgICAgICAgICAgdHJ1ZSwKLSAgICAgICAgICAgICJBdHRlbXB0IHRvIHBhcnNl
IHVuY29uZmlndXJlZCBoZWFkZXIgZXh0ZW5zaW9ucyB1c2luZyB0aGUgZGVmYXVsdCAiCi0gICAg
ICAgICAgICAiV2ViUlRDIG1hcHBpbmcuIFRoaXMgY2FuIGdpdmUgdmVyeSBtaXNsZWFkaW5nIHJl
c3VsdHMgaWYgdGhlICIKLSAgICAgICAgICAgICJhcHBsaWNhdGlvbiBuZWdvdGlhdGVzIGEgZGlm
ZmVyZW50IG1hcHBpbmcuIik7CitXRUJSVENfREVGSU5FX2Jvb2woCisgICAgcGFyc2VfdW5jb25m
aWd1cmVkX2hlYWRlcl9leHRlbnNpb25zLAorICAgIHRydWUsCisgICAgIkF0dGVtcHQgdG8gcGFy
c2UgdW5jb25maWd1cmVkIGhlYWRlciBleHRlbnNpb25zIHVzaW5nIHRoZSBkZWZhdWx0ICIKKyAg
ICAiV2ViUlRDIG1hcHBpbmcuIFRoaXMgY2FuIGdpdmUgdmVyeSBtaXNsZWFkaW5nIHJlc3VsdHMg
aWYgdGhlICIKKyAgICAiYXBwbGljYXRpb24gbmVnb3RpYXRlcyBhIGRpZmZlcmVudCBtYXBwaW5n
LiIpOwogCi1ERUZJTkVfYm9vbChwcmludF90cmlhZ2VfYWxlcnRzLAotICAgICAgICAgICAgZmFs
c2UsCi0gICAgICAgICAgICAiUHJpbnQgdHJpYWdlIGFsZXJ0cywgaS5lLiBhIGxpc3Qgb2YgcG90
ZW50aWFsIHByb2JsZW1zLiIpOworV0VCUlRDX0RFRklORV9ib29sKHByaW50X3RyaWFnZV9hbGVy
dHMsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIlByaW50
IHRyaWFnZSBhbGVydHMsIGkuZS4gYSBsaXN0IG9mIHBvdGVudGlhbCBwcm9ibGVtcy4iKTsKIAot
REVGSU5FX2Jvb2wobm9ybWFsaXplX3RpbWUsCi0gICAgICAgICAgICB0cnVlLAotICAgICAgICAg
ICAgIk5vcm1hbGl6ZSB0aGUgbG9nIHRpbWVzdGFtcHMgc28gdGhhdCB0aGUgY2FsbCBzdGFydHMg
YXQgdGltZSAwLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIG5vcm1hbGl6ZV90aW1lLAor
ICAgIHRydWUsCisgICAgIk5vcm1hbGl6ZSB0aGUgbG9nIHRpbWVzdGFtcHMgc28gdGhhdCB0aGUg
Y2FsbCBzdGFydHMgYXQgdGltZSAwLiIpOwogCi1ERUZJTkVfYm9vbChwcm90b2J1Zl9vdXRwdXQs
Ci0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJPdXRwdXQgY2hhcnRzIGFzIHByb3Rv
YnVmIGluc3RlYWQgb2YgcHl0aG9uIGNvZGUuIik7CitXRUJSVENfREVGSU5FX2Jvb2wocHJvdG9i
dWZfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAg
ICJPdXRwdXQgY2hhcnRzIGFzIHByb3RvYnVmIGluc3RlYWQgb2YgcHl0aG9uIGNvZGUuIik7CiAK
IHZvaWQgU2V0QWxsUGxvdEZsYWdzKGJvb2wgc2V0dGluZyk7CiAKQEAgLTE5NCw3ICsyMTIsNiBA
QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgIH0gZWxzZSBpZiAoc3RyY21w
KEZMQUdfcGxvdF9wcm9maWxlLCAicmVjZWl2ZXNpZGVfYndlIikgPT0gMCkgewogICAgIFNldEFs
bFBsb3RGbGFncyhmYWxzZSk7CiAgICAgRkxBR19wbG90X2luY29taW5nX3BhY2tldF9zaXplcyA9
IHRydWU7Ci0gICAgRkxBR19wbG90X2luY29taW5nX2RlbGF5X2RlbHRhID0gdHJ1ZTsKICAgICBG
TEFHX3Bsb3RfaW5jb21pbmdfZGVsYXkgPSB0cnVlOwogICAgIEZMQUdfcGxvdF9pbmNvbWluZ19s
b3NzX3JhdGUgPSB0cnVlOwogICAgIEZMQUdfcGxvdF9pbmNvbWluZ19iaXRyYXRlID0gdHJ1ZTsK
QEAgLTIxOCw3ICsyMzUsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAg
ICAgcmV0dXJuIDA7CiAgIH0KIAotICB3ZWJydGM6OnRlc3Q6OlNldEV4ZWN1dGFibGVQYXRoKGFy
Z3ZbMF0pOwogICB3ZWJydGM6OnRlc3Q6OlZhbGlkYXRlRmllbGRUcmlhbHNTdHJpbmdPckRpZShG
TEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsKICAgLy8gSW5pdEZpZWxkVHJpYWxzRnJvbVN0cmluZyBz
dG9yZXMgdGhlIGNoYXIqLCBzbyB0aGUgY2hhciBhcnJheSBtdXN0IG91dGxpdmUKICAgLy8gdGhl
IGFwcGxpY2F0aW9uLgpAQCAtMjM2LDkgKzI1Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiBhcmd2W10pIHsKIAogICBpZiAoIXBhcnNlZF9sb2cuUGFyc2VGaWxlKGZpbGVuYW1lKSkgewog
ICAgIHN0ZDo6Y2VyciA8PCAiQ291bGQgbm90IHBhcnNlIHRoZSBlbnRpcmUgbG9nIGZpbGUuIiA8
PCBzdGQ6OmVuZGw7Ci0gICAgc3RkOjpjZXJyIDw8ICJQcm9jZWVkaW5nIHRvIGFuYWx5emUgdGhl
IGZpcnN0ICIKLSAgICAgICAgICAgICAgPDwgcGFyc2VkX2xvZy5HZXROdW1iZXJPZkV2ZW50cygp
IDw8ICIgZXZlbnRzIGluIHRoZSBmaWxlLiIKLSAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwor
ICAgIHN0ZDo6Y2VyciA8PCAiT25seSB0aGUgcGFyc2FibGUgZXZlbnRzIHdpbGwgYmUgYW5hbHl6
ZWQuIiA8PCBzdGQ6OmVuZGw7CiAgIH0KIAogICB3ZWJydGM6OkV2ZW50TG9nQW5hbHl6ZXIgYW5h
bHl6ZXIocGFyc2VkX2xvZywgRkxBR19ub3JtYWxpemVfdGltZSk7CkBAIC0yNzcsOSArMjkxLDYg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICBpZiAoRkxBR19wbG90X2lu
Y29taW5nX3NlcXVlbmNlX251bWJlcl9kZWx0YSkgewogICAgIGFuYWx5emVyLkNyZWF0ZVNlcXVl
bmNlTnVtYmVyR3JhcGgoY29sbGVjdGlvbi0+QXBwZW5kTmV3UGxvdCgpKTsKICAgfQotICBpZiAo
RkxBR19wbG90X2luY29taW5nX2RlbGF5X2RlbHRhKSB7Ci0gICAgYW5hbHl6ZXIuQ3JlYXRlSW5j
b21pbmdEZWxheURlbHRhR3JhcGgoY29sbGVjdGlvbi0+QXBwZW5kTmV3UGxvdCgpKTsKLSAgfQog
ICBpZiAoRkxBR19wbG90X2luY29taW5nX2RlbGF5KSB7CiAgICAgYW5hbHl6ZXIuQ3JlYXRlSW5j
b21pbmdEZWxheUdyYXBoKGNvbGxlY3Rpb24tPkFwcGVuZE5ld1Bsb3QoKSk7CiAgIH0KQEAgLTQ2
Niw3ICs0NzcsNiBAQCB2b2lkIFNldEFsbFBsb3RGbGFncyhib29sIHNldHRpbmcpIHsKICAgRkxB
R19wbG90X2F1ZGlvX3BsYXlvdXQgPSBzZXR0aW5nOwogICBGTEFHX3Bsb3RfYXVkaW9fbGV2ZWwg
PSBzZXR0aW5nOwogICBGTEFHX3Bsb3RfaW5jb21pbmdfc2VxdWVuY2VfbnVtYmVyX2RlbHRhID0g
c2V0dGluZzsKLSAgRkxBR19wbG90X2luY29taW5nX2RlbGF5X2RlbHRhID0gc2V0dGluZzsKICAg
RkxBR19wbG90X2luY29taW5nX2RlbGF5ID0gc2V0dGluZzsKICAgRkxBR19wbG90X2luY29taW5n
X2xvc3NfcmF0ZSA9IHNldHRpbmc7CiAgIEZMQUdfcGxvdF9pbmNvbWluZ19iaXRyYXRlID0gc2V0
dGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y190b29scy9mb3JjZV9taWNfdm9sdW1lX21heC9mb3JjZV9taWNfdm9sdW1lX21heC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9m
b3JjZV9taWNfdm9sdW1lX21heC9mb3JjZV9taWNfdm9sdW1lX21heC5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmNkMWIzNmQ5MDQ3Yjg5Y2U5NTlhNjhiZmM2NTliMWVmOTRmZGIw
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZm9yY2VfbWljX3Zv
bHVtZV9tYXgvZm9yY2VfbWljX3ZvbHVtZV9tYXguY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1OCAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAoYykgMjAxMyBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotLy8gVGhpcyB1dGlsaXR5IHdpbGwgcG9y
dGFibHkgZm9yY2UgdGhlIHZvbHVtZSBvZiB0aGUgZGVmYXVsdCBtaWNyb3Bob25lIHRvIG1heC4K
LQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9p
bmNsdWRlL2F1ZGlvX2RldmljZS5oIgotCi11c2luZyB3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxl
OwotCi0jaWYgZGVmaW5lZChfV0lOMzIpCi0jZGVmaW5lIERFRkFVTFRfSU5QVVRfREVWSUNFIChB
dWRpb0RldmljZU1vZHVsZTo6a0RlZmF1bHRDb21tdW5pY2F0aW9uRGV2aWNlKQotI2Vsc2UKLSNk
ZWZpbmUgREVGQVVMVF9JTlBVVF9ERVZJQ0UgKDApCi0jZW5kaWYKLQotaW50IG1haW4oaW50IC8q
YXJnYyovLCBjaGFyKiAvKmFyZ3YqLyBbXSkgewotICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUg
dGhlIEFETS4KLSAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBhZG0oCi0g
ICAgICBBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRlKEF1ZGlvRGV2aWNlTW9kdWxlOjprUGxhdGZv
cm1EZWZhdWx0QXVkaW8pKTsKLSAgaWYgKCFhZG0uZ2V0KCkpIHsKLSAgICBmcHJpbnRmKHN0ZGVy
ciwgIkZhaWxlZCB0byBjcmVhdGUgQXVkaW8gRGV2aWNlIE1vZHVsZS5cbiIpOwotICAgIHJldHVy
biAxOwotICB9Ci0gIGlmIChhZG0tPkluaXQoKSAhPSAwKSB7Ci0gICAgZnByaW50ZihzdGRlcnIs
ICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBBdWRpbyBEZXZpY2UgTW9kdWxlLlxuIik7Ci0gICAgcmV0
dXJuIDE7Ci0gIH0KLSAgaWYgKGFkbS0+U2V0UmVjb3JkaW5nRGV2aWNlKERFRkFVTFRfSU5QVVRf
REVWSUNFKSAhPSAwKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gc2V0IHRoZSBk
ZWZhdWx0IGlucHV0IGRldmljZS5cbiIpOwotICAgIHJldHVybiAxOwotICB9Ci0gIGlmIChhZG0t
PkluaXRNaWNyb3Bob25lKCkgIT0gMCkgewotICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRv
IHRvIGluaXRpYWxpemUgdGhlIG1pY3JvcGhvbmUuXG4iKTsKLSAgICByZXR1cm4gMTsKLSAgfQot
Ci0gIC8vIFNldCBtaWMgdm9sdW1lIHRvIG1heC4KLSAgdWludDMyX3QgbWF4X3ZvbCA9IDA7Ci0g
IGlmIChhZG0tPk1heE1pY3JvcGhvbmVWb2x1bWUoJm1heF92b2wpICE9IDApIHsKLSAgICBmcHJp
bnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgbWF4IHZvbHVtZS5cbiIpOwotICAgIHJldHVybiAx
OwotICB9Ci0gIGlmIChhZG0tPlNldE1pY3JvcGhvbmVWb2x1bWUobWF4X3ZvbCkgIT0gMCkgewot
ICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHNldCBtaWMgdm9sdW1lLlxuIik7Ci0gICAg
cmV0dXJuIDE7Ci0gIH0KLQotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci9m
cmFtZV9hbmFseXplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci9mcmFtZV9hbmFseXplci5jYwppbmRleCA4OTQ0
MGVhOTg0NWEyNWVmMTU4OTg4MTFkYjY3ZDMwMWFmZmJjYWYxLi5mYjVmOGRlMjI3YWZiYzIyOTQ5
ZDA1ZGRlZjRlMGFlYWNhMDQ5MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvZnJhbWVfYW5hbHl6
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2ZyYW1lX2FuYWx5emVyLmNjCkBAIC0xNSw3ICsxNSwxMCBA
QAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJydGNf
YmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5n
dXRpbHMuaCIKKyNpbmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fY29sb3Jf
YWxpZ25lci5oIgorI2luY2x1ZGUgInJ0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19nZW9t
ZXRyeV9hbGlnbmVyLmgiCiAjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVv
X3F1YWxpdHlfYW5hbHlzaXMuaCIKICNpbmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIv
dmlkZW9fdGVtcG9yYWxfYWxpZ25lci5oIgogI2luY2x1ZGUgInJ0Y190b29scy9zaW1wbGVfY29t
bWFuZF9saW5lX3BhcnNlci5oIgpAQCAtMTMzLDggKzEzNiwzNSBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhciogYXJndltdKSB7CiAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4gbWF0Y2hpbmdf
aW5kaWNlcyA9CiAgICAgICB3ZWJydGM6OnRlc3Q6OkZpbmRNYXRjaGluZ0ZyYW1lSW5kaWNlcyhy
ZWZlcmVuY2VfdmlkZW8sIHRlc3RfdmlkZW8pOwogCi0gIHJlc3VsdHMuZnJhbWVzID0KLSAgICAg
IHdlYnJ0Yzo6dGVzdDo6UnVuQW5hbHlzaXMocmVmZXJlbmNlX3ZpZGVvLCB0ZXN0X3ZpZGVvLCBt
YXRjaGluZ19pbmRpY2VzKTsKKyAgLy8gQWxpZ24gdGhlIHJlZmVyZW5jZSB2aWRlbyBib3RoIHRl
bXBvcmFsbHkgYW5kIGdlb21ldHJpY2FsbHkuIEkuZS4gYWxpZ24gdGhlCisgIC8vIGZyYW1lcyB0
byBtYXRjaCB1cCBpbiBvcmRlciB0byB0aGUgdGVzdCB2aWRlbywgYW5kIGFsaWduIGEgY3JvcCBy
ZWdpb24gb2YKKyAgLy8gdGhlIHJlZmVyZW5jZSB2aWRlbyB0byBtYXRjaCB1cCB0byB0aGUgdGVz
dCB2aWRlby4KKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6dGVzdDo6VmlkZW8+
IGFsaWduZWRfcmVmZXJlbmNlX3ZpZGVvID0KKyAgICAgIEFkanVzdENyb3BwaW5nKFJlb3JkZXJW
aWRlbyhyZWZlcmVuY2VfdmlkZW8sIG1hdGNoaW5nX2luZGljZXMpLAorICAgICAgICAgICAgICAg
ICAgICAgdGVzdF92aWRlbyk7CisKKyAgLy8gQ2FsY3VsYXRlIGlmIHRoZXJlIGlzIGFueSBzeXN0
ZW1hdGljIGNvbG9yIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgcmVmZXJlbmNlCisgIC8vIGFuZCB0
ZXN0IHZpZGVvLgorICBjb25zdCB3ZWJydGM6OnRlc3Q6OkNvbG9yVHJhbnNmb3JtYXRpb25NYXRy
aXggY29sb3JfdHJhbnNmb3JtYXRpb24gPQorICAgICAgQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1h
dGlvbk1hdHJpeChhbGlnbmVkX3JlZmVyZW5jZV92aWRlbywgdGVzdF92aWRlbyk7CisKKyAgY2hh
ciBidWZbMjU2XTsKKyAgcnRjOjpTaW1wbGVTdHJpbmdCdWlsZGVyIHN0cmluZ19idWlsZGVyKGJ1
Zik7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgc3RyaW5nX2J1aWxkZXIg
PDwgIlxuIjsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7ICsraikKKyAgICAgIHN0cmluZ19i
dWlsZGVyLkFwcGVuZEZvcm1hdCgiJTYuMmYgIiwgY29sb3JfdHJhbnNmb3JtYXRpb25baV1bal0p
OworICB9CisgIHByaW50ZigiQWRqdXN0aW5nIHRlc3QgdmlkZW8gd2l0aCBjb2xvciB0cmFuc2Zv
cm1hdGlvbjogJXNcbiIsCisgICAgICAgICBzdHJpbmdfYnVpbGRlci5zdHIoKSk7CisKKyAgLy8g
QWRqdXN0IGFsbCBmcmFtZXMgaW4gdGhlIHRlc3QgdmlkZW8gd2l0aCB0aGUgY2FsY3VsYXRlZCBj
b2xvcgorICAvLyB0cmFuc2Zvcm1hdGlvbi4KKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6dGVzdDo6VmlkZW8+IGNvbG9yX2FkanVzdGVkX3Rlc3RfdmlkZW8gPQorICAgICAgQWRq
dXN0Q29sb3JzKGNvbG9yX3RyYW5zZm9ybWF0aW9uLCB0ZXN0X3ZpZGVvKTsKKworICByZXN1bHRz
LmZyYW1lcyA9IHdlYnJ0Yzo6dGVzdDo6UnVuQW5hbHlzaXMoCisgICAgICBhbGlnbmVkX3JlZmVy
ZW5jZV92aWRlbywgY29sb3JfYWRqdXN0ZWRfdGVzdF92aWRlbywgbWF0Y2hpbmdfaW5kaWNlcyk7
CiAKICAgY29uc3Qgc3RkOjp2ZWN0b3I8d2VicnRjOjp0ZXN0OjpDbHVzdGVyPiBjbHVzdGVycyA9
CiAgICAgICB3ZWJydGM6OnRlc3Q6OkNhbGN1bGF0ZUZyYW1lQ2x1c3RlcnMobWF0Y2hpbmdfaW5k
aWNlcyk7CkBAIC0xNTEsMjAgKzE4MSwxNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJn
dltdKSB7CiAgIGlmICghY2hhcnRqc29uX3Jlc3VsdF9maWxlLmVtcHR5KCkpIHsKICAgICB3ZWJy
dGM6OnRlc3Q6OldyaXRlUGVyZlJlc3VsdHMoY2hhcnRqc29uX3Jlc3VsdF9maWxlKTsKICAgfQot
ICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjp0ZXN0OjpWaWRlbz4gcmVvcmRlcmVkX3ZpZGVv
ID0KLSAgICAgIHdlYnJ0Yzo6dGVzdDo6R2VuZXJhdGVBbGlnbmVkUmVmZXJlbmNlVmlkZW8ocmVm
ZXJlbmNlX3ZpZGVvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaGluZ19pbmRpY2VzKTsKICAgc3RkOjpzdHJpbmcgYWxpZ25lZF9vdXRwdXRf
ZmlsZSA9IHBhcnNlci5HZXRGbGFnKCJhbGlnbmVkX291dHB1dF9maWxlIik7CiAgIGlmICghYWxp
Z25lZF9vdXRwdXRfZmlsZS5lbXB0eSgpKSB7Ci0gICAgd2VicnRjOjp0ZXN0OjpXcml0ZVZpZGVv
VG9GaWxlKHJlb3JkZXJlZF92aWRlbywgYWxpZ25lZF9vdXRwdXRfZmlsZSwKKyAgICB3ZWJydGM6
OnRlc3Q6OldyaXRlVmlkZW9Ub0ZpbGUoYWxpZ25lZF9yZWZlcmVuY2VfdmlkZW8sIGFsaWduZWRf
b3V0cHV0X2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZnBzPSov
MzApOwogICB9CiAgIHN0ZDo6c3RyaW5nIHl1dl9kaXJlY3RvcnkgPSBwYXJzZXIuR2V0RmxhZygi
eXV2X2RpcmVjdG9yeSIpOwogICBpZiAoIXl1dl9kaXJlY3RvcnkuZW1wdHkoKSkgewotICAgIHdl
YnJ0Yzo6dGVzdDo6V3JpdGVWaWRlb1RvRmlsZShyZW9yZGVyZWRfdmlkZW8sCisgICAgd2VicnRj
Ojp0ZXN0OjpXcml0ZVZpZGVvVG9GaWxlKGFsaWduZWRfcmVmZXJlbmNlX3ZpZGVvLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKb2luRmlsZW5hbWUoeXV2X2RpcmVjdG9yeSwg
InJlZi55dXYiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmcHM9Ki8z
MCk7Ci0gICAgd2VicnRjOjp0ZXN0OjpXcml0ZVZpZGVvVG9GaWxlKHRlc3RfdmlkZW8sCisgICAg
d2VicnRjOjp0ZXN0OjpXcml0ZVZpZGVvVG9GaWxlKGNvbG9yX2FkanVzdGVkX3Rlc3RfdmlkZW8s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpvaW5GaWxlbmFtZSh5dXZfZGly
ZWN0b3J5LCAidGVzdC55dXYiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LypmcHM9Ki8zMCk7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1
YXJlcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190
b29scy9mcmFtZV9hbmFseXplci9saW5lYXJfbGVhc3Rfc3F1YXJlcy5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MDZkMjEyZDE3NGFiZTlkNzZjZTIwMDM5YTBiYTgzZTNmZTg0MmRkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2Zy
YW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzLmNjCkBAIC0wLDAgKzEsMjAwIEBACisv
KgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInJ0Y190b29scy9mcmFtZV9hbmFseXpl
ci9saW5lYXJfbGVhc3Rfc3F1YXJlcy5oIgorCisjaW5jbHVkZSA8bnVtZXJpYz4KKyNpbmNsdWRl
IDx1dGlsaXR5PgorCisjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCisjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsK
KwordGVtcGxhdGUgPGNsYXNzIFQ+Cit1c2luZyBNYXRyaXggPSBzdGQ6OnZhbGFycmF5PHN0ZDo6
dmFsYXJyYXk8VD4+OworCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlw
ZW5hbWUgVD4KK1IgRG90UHJvZHVjdChjb25zdCBzdGQ6OnZhbGFycmF5PFQ+JiBhLCBjb25zdCBz
dGQ6OnZhbGFycmF5PFQ+JiBiKSB7CisgIFJUQ19DSEVDS19FUShhLnNpemUoKSwgYi5zaXplKCkp
OworICByZXR1cm4gc3RkOjppbm5lcl9wcm9kdWN0KHN0ZDo6YmVnaW4oYSksIHN0ZDo6ZW5kKGEp
LCBzdGQ6OmJlZ2luKGIpLCBSKDApKTsKK30KKworLy8gQ2FsY3VsYXRlcyBhXlQgKiBiLgordGVt
cGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQ+CitNYXRyaXg8Uj4gTWF0cml4TXVsdGlwbHko
Y29uc3QgTWF0cml4PFQ+JiBhLCBjb25zdCBNYXRyaXg8VD4mIGIpIHsKKyAgTWF0cml4PFI+IHJl
c3VsdChzdGQ6OnZhbGFycmF5PFI+KGEuc2l6ZSgpKSwgYi5zaXplKCkpOworICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGEuc2l6ZSgpOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IGIuc2l6ZSgpOyArK2opCisgICAgICByZXN1bHRbal1baV0gPSBEb3RQcm9kdWN0PFI+KGFbaV0s
IGJbal0pOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitNYXRyaXg8VD4gVHJhbnNwb3NlKGNvbnN0IE1hdHJpeDxUPiYgbWF0cml4KSB7CisgIGlm
IChtYXRyaXguc2l6ZSgpID09IDApCisgICAgcmV0dXJuIE1hdHJpeDxUPigpOworICBjb25zdCBz
aXplX3Qgcm93cyA9IG1hdHJpeC5zaXplKCk7CisgIGNvbnN0IHNpemVfdCBjb2x1bW5zID0gbWF0
cml4WzBdLnNpemUoKTsKKyAgTWF0cml4PFQ+IHJlc3VsdChzdGQ6OnZhbGFycmF5PFQ+KHJvd3Mp
LCBjb2x1bW5zKTsKKworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvd3M7ICsraSkgeworICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgY29sdW1uczsgKytqKQorICAgICAgcmVzdWx0W2pdW2ld
ID0gbWF0cml4W2ldW2pdOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gQ29udmVy
dCB2YWxhcnJheSBmcm9tIHR5cGUgVCB0byB0eXBlIFIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUiwg
dHlwZW5hbWUgVD4KK3N0ZDo6dmFsYXJyYXk8Uj4gQ29udmVydFRvKGNvbnN0IHN0ZDo6dmFsYXJy
YXk8VD4mIHYpIHsKKyAgc3RkOjp2YWxhcnJheTxSPiByZXN1bHQodi5zaXplKCkpOworICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHYuc2l6ZSgpOyArK2kpCisgICAgcmVzdWx0W2ldID0gc3RhdGlj
X2Nhc3Q8Uj4odltpXSk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIENvbnZlcnQgdmFsYXJy
YXkgTWF0cml4IGZyb20gdHlwZSBUIHRvIHR5cGUgUi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0
eXBlbmFtZSBUPgorTWF0cml4PFI+IENvbnZlcnRUbyhjb25zdCBNYXRyaXg8VD4mIG1hdCkgewor
ICBNYXRyaXg8Uj4gcmVzdWx0KG1hdC5zaXplKCkpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1hdC5zaXplKCk7ICsraSkKKyAgICByZXN1bHRbaV0gPSBDb252ZXJ0VG88Uj4obWF0W2ldKTsK
KyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gQ29udmVydCBmcm9tIHZhbGFycmF5IE1hdHJpeCBi
YWNrIHRvIHRoZSBtb3JlIGNvbnZlbnRpb25hbCBzdGQ6OnZlY3Rvci4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8VD4+IFRvVmVjdG9yTWF0cml4KGNvbnN0
IE1hdHJpeDxUPiYgbSkgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxUPj4gcmVzdWx0Owor
ICBmb3IgKGNvbnN0IHN0ZDo6dmFsYXJyYXk8VD4mIHYgOiBtKQorICAgIHJlc3VsdC5lbXBsYWNl
X2JhY2soc3RkOjpiZWdpbih2KSwgc3RkOjplbmQodikpOworICByZXR1cm4gcmVzdWx0OworfQor
CisvLyBDcmVhdGUgYSB2YWxhcnJheSBNYXRyaXggZnJvbSBhIGNvbnZlbnRpb25hbCBzdGQ6OnZl
Y3Rvci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorTWF0cml4PFQ+IEZyb21WZWN0b3JNYXRyaXgo
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8VD4+JiBtYXQpIHsKKyAgTWF0cml4PFQ+IHJl
c3VsdChtYXQuc2l6ZSgpKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXQuc2l6ZSgpOyAr
K2kpCisgICAgcmVzdWx0W2ldID0gc3RkOjp2YWxhcnJheTxUPihtYXRbaV0uZGF0YSgpLCBtYXRb
aV0uc2l6ZSgpKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gUmV0dXJucyB8bWF0cml4X3Rv
X2ludmVydHxeLTEgKiB8cmlnaHRfaGFuZF9tYXRyaXh8LiB8bWF0cml4X3RvX2ludmVydHwgbXVz
dAorLy8gaGF2ZSBzcXVhcmUgc2l6ZS4KK01hdHJpeDxkb3VibGU+IEdhdXNzaWFuRWxpbWluYXRp
b24oTWF0cml4PGRvdWJsZT4gbWF0cml4X3RvX2ludmVydCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWF0cml4PGRvdWJsZT4gcmlnaHRfaGFuZF9tYXRyaXgpIHsKKyAgLy8g
fG58IGlzIHRoZSB3aWR0aC9oZWlnaHQgb2YgfG1hdHJpeF90b19pbnZlcnR8LgorICBjb25zdCBz
aXplX3QgbiA9IG1hdHJpeF90b19pbnZlcnQuc2l6ZSgpOworICAvLyBNYWtlIHN1cmUgfG1hdHJp
eF90b19pbnZlcnR8IGhhcyBzcXVhcmUgc2l6ZS4KKyAgZm9yIChjb25zdCBzdGQ6OnZhbGFycmF5
PGRvdWJsZT4mIGNvbHVtbiA6IG1hdHJpeF90b19pbnZlcnQpCisgICAgUlRDX0NIRUNLX0VRKG4s
IGNvbHVtbi5zaXplKCkpOworICAvLyBNYWtlIHN1cmUgfHJpZ2h0X2hhbmRfbWF0cml4fCBoYXMg
Y29ycmVjdCBzaXplLgorICBmb3IgKGNvbnN0IHN0ZDo6dmFsYXJyYXk8ZG91YmxlPiYgY29sdW1u
IDogcmlnaHRfaGFuZF9tYXRyaXgpCisgICAgUlRDX0NIRUNLX0VRKG4sIGNvbHVtbi5zaXplKCkp
OworCisgIC8vIFRyYW5zcG9zZSB0aGUgbWF0cmljZXMgYmVmb3JlIGFuZCBhZnRlciBzbyB0aGF0
IHdlIGNhbiBwZXJmb3JtIEdhdXNzaWFuCisgIC8vIGVsaW1pbmF0aW9uIG9uIHRoZSBjb2x1bW5z
IGluc3RlYWQgb2YgdGhlIHJvd3MsIHNpbmNlIHRoYXQgaXMgZWFzaWVyIHdpdGgKKyAgLy8gb3Vy
IHJlcHJlc2VudGF0aW9uLgorICBtYXRyaXhfdG9faW52ZXJ0ID0gVHJhbnNwb3NlKG1hdHJpeF90
b19pbnZlcnQpOworICByaWdodF9oYW5kX21hdHJpeCA9IFRyYW5zcG9zZShyaWdodF9oYW5kX21h
dHJpeCk7CisKKyAgLy8gTG9vcCBvdmVyIHRoZSBkaWFnb25hbCBvZiB8bWF0cml4X3RvX2ludmVy
dHwgYW5kIHBlcmZvcm0gY29sdW1uIHJlZHVjdGlvbi4KKyAgLy8gQ29sdW1uIHJlZHVjdGlvbiBp
cyBhIHNlcXVlbmNlIG9mIGVsZW1lbnRhcnkgY29sdW1uIG9wZXJhdGlvbnMgdGhhdCBpcworICAv
LyBwZXJmb3JtZWQgb24gYm90aCB8bWF0cml4X3RvX2ludmVydHwgYW5kIHxyaWdodF9oYW5kX21h
dHJpeHwgdW50aWwKKyAgLy8gfG1hdHJpeF90b19pbnZlcnR8IGhhcyBiZWVuIHRyYW5zZm9ybWVk
IHRvIHRoZSBpZGVudGl0eSBtYXRyaXguCisgIGZvciAoc2l6ZV90IGRpYWdvbmFsX2luZGV4ID0g
MDsgZGlhZ29uYWxfaW5kZXggPCBuOyArK2RpYWdvbmFsX2luZGV4KSB7CisgICAgLy8gTWFrZSBz
dXJlIHRoZSBkaWFnb25hbCBlbGVtZW50IGhhcyB0aGUgaGlnaGVzdCBhYnNvbHV0ZSB2YWx1ZSBi
eQorICAgIC8vIHN3YXBwaW5nIGNvbHVtbnMgaWYgbmVjZXNzYXJ5LgorICAgIGZvciAoc2l6ZV90
IGNvbHVtbiA9IGRpYWdvbmFsX2luZGV4ICsgMTsgY29sdW1uIDwgbjsgKytjb2x1bW4pIHsKKyAg
ICAgIGlmIChzdGQ6OmFicyhtYXRyaXhfdG9faW52ZXJ0W2NvbHVtbl1bZGlhZ29uYWxfaW5kZXhd
KSA+CisgICAgICAgICAgc3RkOjphYnMobWF0cml4X3RvX2ludmVydFtkaWFnb25hbF9pbmRleF1b
ZGlhZ29uYWxfaW5kZXhdKSkgeworICAgICAgICBzdGQ6OnN3YXAobWF0cml4X3RvX2ludmVydFtj
b2x1bW5dLCBtYXRyaXhfdG9faW52ZXJ0W2RpYWdvbmFsX2luZGV4XSk7CisgICAgICAgIHN0ZDo6
c3dhcChyaWdodF9oYW5kX21hdHJpeFtjb2x1bW5dLCByaWdodF9oYW5kX21hdHJpeFtkaWFnb25h
bF9pbmRleF0pOworICAgICAgfQorICAgIH0KKworICAgIC8vIFJlZHVjZSB0aGUgZGlhZ29uYWwg
ZWxlbWVudCB0byBiZSAxLCBieSBkaXZpZGluZyB0aGUgY29sdW1uIHdpdGggdGhhdAorICAgIC8v
IHZhbHVlLiBJZiB0aGUgZGlhZ29uYWwgZWxlbWVudCBpcyAwLCBpdCBtZWFucyB0aGUgc3lzdGVt
IG9mIGVxdWF0aW9ucyBoYXMKKyAgICAvLyBtYW55IHNvbHV0aW9ucywgYW5kIGluIHRoYXQgY2Fz
ZSB3ZSB3aWxsIHJldHVybiBhbiBhcmJpdHJhcnkgc29sdXRpb24uCisgICAgaWYgKG1hdHJpeF90
b19pbnZlcnRbZGlhZ29uYWxfaW5kZXhdW2RpYWdvbmFsX2luZGV4XSA9PSAwLjApIHsKKyAgICAg
IFJUQ19MT0coTFNfV0FSTklORykgPDwgIk1hdHJpeCBpcyBub3QgaW52ZXJ0aWJsZSwgaWdub3Jp
bmcuIjsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBjb25zdCBkb3VibGUgZGlhZ29uYWxf
ZWxlbWVudCA9CisgICAgICAgIG1hdHJpeF90b19pbnZlcnRbZGlhZ29uYWxfaW5kZXhdW2RpYWdv
bmFsX2luZGV4XTsKKyAgICBtYXRyaXhfdG9faW52ZXJ0W2RpYWdvbmFsX2luZGV4XSAvPSBkaWFn
b25hbF9lbGVtZW50OworICAgIHJpZ2h0X2hhbmRfbWF0cml4W2RpYWdvbmFsX2luZGV4XSAvPSBk
aWFnb25hbF9lbGVtZW50OworCisgICAgLy8gRWxpbWluYXRlIHRoZSBvdGhlciBlbnRyaWVzIGlu
IHJvdyB8ZGlhZ29uYWxfaW5kZXh8IGJ5IG1ha2luZyB0aGVtIHplcm8uCisgICAgZm9yIChzaXpl
X3QgY29sdW1uID0gMDsgY29sdW1uIDwgbjsgKytjb2x1bW4pIHsKKyAgICAgIGlmIChjb2x1bW4g
PT0gZGlhZ29uYWxfaW5kZXgpCisgICAgICAgIGNvbnRpbnVlOworICAgICAgY29uc3QgZG91Ymxl
IHJvd19lbGVtZW50ID0gbWF0cml4X3RvX2ludmVydFtjb2x1bW5dW2RpYWdvbmFsX2luZGV4XTsK
KyAgICAgIG1hdHJpeF90b19pbnZlcnRbY29sdW1uXSAtPQorICAgICAgICAgIHJvd19lbGVtZW50
ICogbWF0cml4X3RvX2ludmVydFtkaWFnb25hbF9pbmRleF07CisgICAgICByaWdodF9oYW5kX21h
dHJpeFtjb2x1bW5dIC09CisgICAgICAgICAgcm93X2VsZW1lbnQgKiByaWdodF9oYW5kX21hdHJp
eFtkaWFnb25hbF9pbmRleF07CisgICAgfQorICB9CisKKyAgLy8gVHJhbnNwb3NlIHRoZSByZXN1
bHQgYmVmb3JlIHJldHVybmluZyBpdCwgZXhwbGFpbmVkIGluIGNvbW1lbnQgYWJvdmUuCisgIHJl
dHVybiBUcmFuc3Bvc2UocmlnaHRfaGFuZF9tYXRyaXgpOworfQorCit9ICAvLyBuYW1lc3BhY2UK
KworSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXM6OkluY3JlbWVudGFsTGluZWFyTGVhc3RT
cXVhcmVzKCkgPSBkZWZhdWx0OworSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXM6On5JbmNy
ZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlcygpID0gZGVmYXVsdDsKKwordm9pZCBJbmNyZW1lbnRh
bExpbmVhckxlYXN0U3F1YXJlczo6QWRkT2JzZXJ2YXRpb25zKAorICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+PiYgeCwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnZlY3Rvcjx1aW50OF90Pj4mIHkpIHsKKyAgaWYgKHguZW1wdHkoKSB8fCB5LmVtcHR5KCkpCisg
ICAgcmV0dXJuOworICAvLyBNYWtlIHN1cmUgYWxsIGNvbHVtbnMgYXJlIHRoZSBzYW1lIHNpemUu
CisgIGNvbnN0IHNpemVfdCBuID0geFswXS5zaXplKCk7CisgIGZvciAoY29uc3Qgc3RkOjp2ZWN0
b3I8dWludDhfdD4mIGNvbHVtbiA6IHgpCisgICAgUlRDX0NIRUNLX0VRKG4sIGNvbHVtbi5zaXpl
KCkpOworICBmb3IgKGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBjb2x1bW4gOiB5KQorICAg
IFJUQ19DSEVDS19FUShuLCBjb2x1bW4uc2l6ZSgpKTsKKworICAvLyBXZSB3aWxsIG11bHRpcGx5
IHRoZSB1aW50OF90IHZhbHVlcyB0b2dldGhlciwgc28gd2UgbmVlZCB0byBleHBhbmQgdG8gYQor
ICAvLyB0eXBlIHRoYXQgY2FuIHNhZmVseSBzdG9yZSB0aG9zZSB2YWx1ZXMsIGkuZS4gdWludDE2
X3QuCisgIGNvbnN0IE1hdHJpeDx1aW50MTZfdD4gdW5wYWNrZWRfeCA9IENvbnZlcnRUbzx1aW50
MTZfdD4oRnJvbVZlY3Rvck1hdHJpeCh4KSk7CisgIGNvbnN0IE1hdHJpeDx1aW50MTZfdD4gdW5w
YWNrZWRfeSA9IENvbnZlcnRUbzx1aW50MTZfdD4oRnJvbVZlY3Rvck1hdHJpeCh5KSk7CisKKyAg
Y29uc3QgTWF0cml4PHVpbnQ2NF90PiB4eCA9IE1hdHJpeE11bHRpcGx5PHVpbnQ2NF90Pih1bnBh
Y2tlZF94LCB1bnBhY2tlZF94KTsKKyAgY29uc3QgTWF0cml4PHVpbnQ2NF90PiB4eSA9IE1hdHJp
eE11bHRpcGx5PHVpbnQ2NF90Pih1bnBhY2tlZF94LCB1bnBhY2tlZF95KTsKKyAgaWYgKHN1bV94
eCAmJiBzdW1feHkpIHsKKyAgICAqc3VtX3h4ICs9IHh4OworICAgICpzdW1feHkgKz0geHk7Cisg
IH0gZWxzZSB7CisgICAgc3VtX3h4ID0geHg7CisgICAgc3VtX3h5ID0geHk7CisgIH0KK30KKwor
c3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZG91YmxlPj4KK0luY3JlbWVudGFsTGluZWFyTGVhc3RT
cXVhcmVzOjpHZXRCZXN0U29sdXRpb24oKSBjb25zdCB7CisgIFJUQ19DSEVDSyhzdW1feHggJiYg
c3VtX3h5KSA8PCAiTm8gb2JzZXJ2YXRpb25zIGhhdmUgYmVlbiBhZGRlZCI7CisgIHJldHVybiBU
b1ZlY3Rvck1hdHJpeChHYXVzc2lhbkVsaW1pbmF0aW9uKENvbnZlcnRUbzxkb3VibGU+KCpzdW1f
eHgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0
VG88ZG91YmxlPigqc3VtX3h5KSkpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVh
cmVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9v
bHMvZnJhbWVfYW5hbHl6ZXIvbGluZWFyX2xlYXN0X3NxdWFyZXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjA3
ZGMxYmRlNjQwYWZiNzkyZjFkYzc2MjViM2U2M2Q4YjU4MmIzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1l
X2FuYWx5emVyL2xpbmVhcl9sZWFzdF9zcXVhcmVzLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX1RPT0xTX0ZSQU1FX0FOQUxZWkVSX0xJTkVB
Ul9MRUFTVF9TUVVBUkVTX0hfCisjZGVmaW5lIFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9MSU5F
QVJfTEVBU1RfU1FVQVJFU19IXworCisjaW5jbHVkZSA8dmFsYXJyYXk+CisjaW5jbHVkZSA8dmVj
dG9yPgorI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKKworbmFtZXNwYWNlIHdlYnJ0
YyB7CituYW1lc3BhY2UgdGVzdCB7CisKKy8vIFRoaXMgY2xhc3MgaXMgdXNlZCBmb3IgZmluZGlu
ZyBhIG1hdHJpeCBiIHRoYXQgcm91Z2hseSBzb2x2ZXMgdGhlIGVxdWF0aW9uOgorLy8geSA9IHgg
KiBiLiBUaGlzIGlzIGdlbmVyYWxseSBpbXBvc3NpYmxlIHRvIGRvIGV4YWN0bHksIHNvIHRoZSBw
cm9ibGVtIGlzCisvLyByZXBocmFzZWQgYXMgZmluZGluZyB0aGUgbWF0cml4IGIgdGhhdCBtaW5p
bWl6ZXMgdGhlIGRpZmZlcmVuY2U6CisvLyB8eSAtIHggKiBifF4yLiBDYWxsaW5nIG11bHRpcGxl
IEFkZE9ic2VydmF0aW9ucygpIGlzIGVxdWl2YWxlbnQgdG8KKy8vIGNvbmNhdGVuYXRpbmcgdGhl
IG9ic2VydmF0aW9uIHZlY3RvcnMgYW5kIGNhbGxpbmcgQWRkT2JzZXJ2YXRpb25zKCkgb25jZS4g
VGhlCisvLyByZWFzb24gZm9yIGRvaW5nIGl0IGluY3JlbWVudGFsbHkgaXMgdGhhdCB3ZSBjYW4n
dCBzdG9yZSB0aGUgcmF3IFlVViB2YWx1ZXMKKy8vIGZvciBhIHdob2xlIHZpZGVvIGZpbGUgaW4g
bWVtb3J5IGF0IG9uY2UuIFRoaXMgY2xhc3MgaGFzIGEgY29uc3RhbnQgbWVtb3J5CisvLyBmb290
cHJpbnQsIHJlZ2FyZGxlc3MgaG93IG1heSB0aW1lcyBBZGRPYnNlcnZhdGlvbnMoKSBpcyBjYWxs
ZWQuCitjbGFzcyBJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlcyB7CisgcHVibGljOgorICBJ
bmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlcygpOworICB+SW5jcmVtZW50YWxMaW5lYXJMZWFz
dFNxdWFyZXMoKTsKKworICAvLyBBZGQgYSBudW1iZXIgb2Ygb2JzZXJ2YXRpb25zLiBUaGUgc3Vi
dmVjdG9ycyBvZiB4IGFuZCB5IG11c3QgaGF2ZSB0aGUgc2FtZQorICAvLyBsZW5ndGguCisgIHZv
aWQgQWRkT2JzZXJ2YXRpb25zKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+
PiYgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0
b3I8dWludDhfdD4+JiB5KTsKKworICAvLyBDYWxjdWxhdGUgYW5kIHJldHVybiB0aGUgYmVzdCBs
aW5lYXIgc29sdXRpb24sIGdpdmVuIHRoZSBvYnNlcnZhdGlvbnMgc28KKyAgLy8gZmFyLgorICBz
dGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjxkb3VibGU+PiBHZXRCZXN0U29sdXRpb24oKSBjb25zdDsK
KworIHByaXZhdGU6CisgIC8vIFJ1bm5pbmcgc3VtIG9mIHheVCAqIHguCisgIGFic2w6Om9wdGlv
bmFsPHN0ZDo6dmFsYXJyYXk8c3RkOjp2YWxhcnJheTx1aW50NjRfdD4+PiBzdW1feHg7CisgIC8v
IFJ1bm5pbmcgc3VtIG9mIHheVCAqIHkuCisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6dmFsYXJyYXk8
c3RkOjp2YWxhcnJheTx1aW50NjRfdD4+PiBzdW1feHk7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
dGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFJUQ19UT09MU19GUkFN
RV9BTkFMWVpFUl9MSU5FQVJfTEVBU1RfU1FVQVJFU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVy
L2xpbmVhcl9sZWFzdF9zcXVhcmVzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL2xpbmVhcl9sZWFz
dF9zcXVhcmVzX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwNzRhYWNjZTg1NmE4ZmY2Mzk2OTZi
ODg2MDYyNGE5ZWQ5OWM3Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvbGluZWFyX2xl
YXN0X3NxdWFyZXNfdW5pdHRlc3QuY2MKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqICBDb3B5cmln
aHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVs
bGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZp
bGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgorICovCisKKyNpbmNsdWRlICJydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvbGluZWFyX2xlYXN0
X3NxdWFyZXMuaCIKKworI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHdlYnJ0
YyB7CituYW1lc3BhY2UgdGVzdCB7CisKK1RFU1QoTGluZWFyTGVhc3RTcXVhcmVzLCBTY2FsYXJJ
ZGVudGl0eU9uZU9ic2VydmF0aW9uKSB7CisgIEluY3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVz
IGxsczsKKyAgbGxzLkFkZE9ic2VydmF0aW9ucyh7ezF9fSwge3sxfX0pOworICBFWFBFQ1RfRVEo
c3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZG91YmxlPj4oe3sxLjB9fSksIGxscy5HZXRCZXN0U29s
dXRpb24oKSk7Cit9CisKK1RFU1QoTGluZWFyTGVhc3RTcXVhcmVzLCBTY2FsYXJJZGVudGl0eVR3
b09ic2VydmF0aW9uc09uZUNhbGwpIHsKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMg
bGxzOworICBsbHMuQWRkT2JzZXJ2YXRpb25zKHt7MSwgMn19LCB7ezEsIDJ9fSk7CisgIEVYUEVD
VF9FUShzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjxkb3VibGU+Pih7ezEuMH19KSwgbGxzLkdldEJl
c3RTb2x1dGlvbigpKTsKK30KKworVEVTVChMaW5lYXJMZWFzdFNxdWFyZXMsIFNjYWxhcklkZW50
aXR5VHdvT2JzZXJ2YXRpb25zVHdvQ2FsbHMpIHsKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNx
dWFyZXMgbGxzOworICBsbHMuQWRkT2JzZXJ2YXRpb25zKHt7MX19LCB7ezF9fSk7CisgIGxscy5B
ZGRPYnNlcnZhdGlvbnMoe3syfX0sIHt7Mn19KTsKKyAgRVhQRUNUX0VRKHN0ZDo6dmVjdG9yPHN0
ZDo6dmVjdG9yPGRvdWJsZT4+KHt7MS4wfX0pLCBsbHMuR2V0QmVzdFNvbHV0aW9uKCkpOworfQor
CitURVNUKExpbmVhckxlYXN0U3F1YXJlcywgTWF0cml4SWRlbnRpdHlPbmVPYnNlcnZhdGlvbikg
eworICBJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlcyBsbHM7CisgIGxscy5BZGRPYnNlcnZh
dGlvbnMoe3sxLCAyfSwgezMsIDR9fSwge3sxLCAyfSwgezMsIDR9fSk7CisgIEVYUEVDVF9FUShz
dGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjxkb3VibGU+Pih7ezEuMCwgMC4wfSwgezAuMCwgMS4wfX0p
LAorICAgICAgICAgICAgbGxzLkdldEJlc3RTb2x1dGlvbigpKTsKK30KKworVEVTVChMaW5lYXJM
ZWFzdFNxdWFyZXMsIE1hdHJpeE1hbnlPYnNlcnZhdGlvbnMpIHsKKyAgSW5jcmVtZW50YWxMaW5l
YXJMZWFzdFNxdWFyZXMgbGxzOworICAvLyBUZXN0IHRoYXQgd2UgY2FuIGZpbmQgdGhlIHNvbHV0
aW9uIG9mIHRoZSBvdmVyc3BlY2lmaWVkIGVxdWF0aW9uIHN5c3RlbToKKyAgLy8gWzEsIDJdIFsx
LCAzXSA9IFs1LCAgMTFdCisgIC8vIFszLCA0XSBbMiwgNF0gICBbMTEsIDI1XQorICAvLyBbNSwg
Nl0gICAgICAgICAgWzE3LCAzOV0KKyAgbGxzLkFkZE9ic2VydmF0aW9ucyh7ezF9LCB7Mn19LCB7
ezV9LCB7MTF9fSk7CisgIGxscy5BZGRPYnNlcnZhdGlvbnMoe3szfSwgezR9fSwge3sxMX0sIHsy
NX19KTsKKyAgbGxzLkFkZE9ic2VydmF0aW9ucyh7ezV9LCB7Nn19LCB7ezE3fSwgezM5fX0pOwor
CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4+IHJlc3VsdCA9IGxscy5H
ZXRCZXN0U29sdXRpb24oKTsKKyAgLy8gV2UgYWxsb3cgc29tZSBudW1lcmljYWwgZmxleGliaWxp
dHkgaGVyZS4KKyAgRVhQRUNUX0RPVUJMRV9FUSgxLjAsIHJlc3VsdFswXVswXSk7CisgIEVYUEVD
VF9ET1VCTEVfRVEoMi4wLCByZXN1bHRbMF1bMV0pOworICBFWFBFQ1RfRE9VQkxFX0VRKDMuMCwg
cmVzdWx0WzFdWzBdKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSg0LjAsIHJlc3VsdFsxXVsxXSk7Cit9
CisKK1RFU1QoTGluZWFyTGVhc3RTcXVhcmVzLCBNYXRyaXhWZWN0b3JPbmVPYnNlcnZhdGlvbikg
eworICBJbmNyZW1lbnRhbExpbmVhckxlYXN0U3F1YXJlcyBsbHM7CisgIC8vIFRlc3QgdGhhdCB3
ZSBjYW4gZmluZCB0aGUgc29sdXRpb24gb2YgdGhlIG92ZXJzcGVjaWZpZWQgZXF1YXRpb24gc3lz
dGVtOgorICAvLyBbMSwgMl0gWzFdID0gWzVdCisgIC8vIFszLCA0XSBbMl0gICBbMTFdCisgIC8v
IFs1LCA2XSAgICAgICBbMTddCisgIGxscy5BZGRPYnNlcnZhdGlvbnMoe3sxLCAzLCA1fSwgezIs
IDQsIDZ9fSwge3s1LCAxMSwgMTd9fSk7CisKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0
b3I8ZG91YmxlPj4gcmVzdWx0ID0gbGxzLkdldEJlc3RTb2x1dGlvbigpOworICAvLyBXZSBhbGxv
dyBzb21lIG51bWVyaWNhbCBmbGV4aWJpbGl0eSBoZXJlLgorICBFWFBFQ1RfRE9VQkxFX0VRKDEu
MCwgcmVzdWx0WzBdWzBdKTsKKyAgRVhQRUNUX0RPVUJMRV9FUSgyLjAsIHJlc3VsdFswXVsxXSk7
Cit9CisKK1RFU1QoTGluZWFyTGVhc3RTcXVhcmVzLCBMaW5lYXJMZWFzdFNxdWFyZXNOb25QZXJm
ZWN0U29sdXRpb24pIHsKKyAgSW5jcmVtZW50YWxMaW5lYXJMZWFzdFNxdWFyZXMgbGxzOworICAv
LyBUZXN0IHRoYXQgd2UgY2FuIGZpbmQgdGhlIG5vbi1wZXJmZWN0IHNvbHV0aW9uIG9mIHRoZSBv
dmVyc3BlY2lmaWVkCisgIC8vIGVxdWF0aW9uIHN5c3RlbToKKyAgLy8gWzFdIFsyMF0gPSBbMjFd
CisgIC8vIFsyXSAgICAgICAgWzM5XQorICAvLyBbM10gICAgICAgIFs2MF0KKyAgLy8gWzJdICAg
ICAgICBbNDFdCisgIC8vIFsxXSAgICAgICAgWzE5XQorICBsbHMuQWRkT2JzZXJ2YXRpb25zKHt7
MSwgMiwgMywgMiwgMX19LCB7ezIxLCAzOSwgNjAsIDQxLCAxOX19KTsKKworICBFWFBFQ1RfRE9V
QkxFX0VRKDIwLjAsIGxscy5HZXRCZXN0U29sdXRpb24oKVswXVswXSk7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6
ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19jb2xvcl9hbGlnbmVy
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdhZmIxZTQ2OTUwZjk5MjFmOTAwYWFhNmExZDE4OWUwYTJhNWQyMmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5jYwpAQCAt
MCwwICsxLDIzOSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UK
KyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh
bnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfdG9v
bHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lci5oIgorCisjaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGRlcXVlPgorI2luY2x1ZGUgPGxp
bWl0cz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJhcGkvYXJyYXlfdmlldy5oIgor
I2luY2x1ZGUgImFwaS92aWRlby9pNDIwX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9yZWZjb3VudGVkb2JqZWN0LmgiCisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVy
L2xpbmVhcl9sZWFzdF9zcXVhcmVzLmgiCisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5
emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5
dXYvaW5jbHVkZS9saWJ5dXYvY29tcGFyZS5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1
di9pbmNsdWRlL2xpYnl1di9wbGFuYXJfZnVuY3Rpb25zLmgiCisjaW5jbHVkZSAidGhpcmRfcGFy
dHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L3NjYWxlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
bmFtZXNwYWNlIHRlc3QgeworCituYW1lc3BhY2UgeworCisvLyBIZWxwZXIgZnVuY3Rpb24gZm9y
IEFkanVzdENvbG9ycygpLiBUaGlzIGZ1bmN0aW9ucyBjYWxjdWxhdGVzIGEgc2luZ2xlIG91dHB1
dAorLy8gcm93IGZvciB5IHdpdGggdGhlIGdpdmVuIGNvbG9yIGNvZWZmaWNpZW50cy4gVGhlIHUv
diBjaGFubmVscyBhcmUgYXNzdW1lZCB0bworLy8gYmUgc3Vic2FtcGxlZCBieSBhIGZhY3RvciBv
ZiAyLCB3aGljaCBpcyB0aGUgY2FzZSBvZiBJNDIwLgordm9pZCBDYWxjdWxhdGVZQ2hhbm5lbChy
dGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PiB5X2RhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IHVfZGF0YSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gdl9kYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCA0PiYgY29lZmYsCisgICAgICAg
ICAgICAgICAgICAgICAgIHJ0Yzo6QXJyYXlWaWV3PHVpbnQ4X3Q+IG91dHB1dCkgeworICBSVENf
Q0hFQ0tfRVEoeV9kYXRhLnNpemUoKSwgb3V0cHV0LnNpemUoKSk7CisgIC8vIEVhY2ggdS92IGVs
ZW1lbnQgcmVwcmVzZW50cyB0d28geSBlbGVtZW50cy4gTWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdo
IHRvCisgIC8vIGNvdmVyIHRoZSBZIHZhbHVlcy4KKyAgUlRDX0NIRUNLX0dFKHVfZGF0YS5zaXpl
KCkgKiAyLCB5X2RhdGEuc2l6ZSgpKTsKKyAgUlRDX0NIRUNLX0dFKHZfZGF0YS5zaXplKCkgKiAy
LCB5X2RhdGEuc2l6ZSgpKTsKKworICAvLyBEbyB0d28gcGl4ZWxzIGF0IGEgdGltZSBzaW5jZSB1
L3YgYXJlIHN1YnNhbXBsZWQuCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICogMiA8IHlfZGF0YS5z
aXplKCkgLSAxOyArK2kpIHsKKyAgICBjb25zdCBmbG9hdCB1dl9jb250cmlidXRpb24gPQorICAg
ICAgICBjb2VmZlsxXSAqIHVfZGF0YVtpXSArIGNvZWZmWzJdICogdl9kYXRhW2ldICsgY29lZmZb
M107CisKKyAgICBjb25zdCBmbG9hdCB2YWwwID0gY29lZmZbMF0gKiB5X2RhdGFbaSAqIDIgKyAw
XSArIHV2X2NvbnRyaWJ1dGlvbjsKKyAgICBjb25zdCBmbG9hdCB2YWwxID0gY29lZmZbMF0gKiB5
X2RhdGFbaSAqIDIgKyAxXSArIHV2X2NvbnRyaWJ1dGlvbjsKKworICAgIC8vIENsYW1wIHJlc3Vs
dCB0byBhIGJ5dGUuCisgICAgb3V0cHV0W2kgKiAyICsgMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90
PigKKyAgICAgICAgc3RkOjpyb3VuZChzdGQ6Om1heCgwLjBmLCBzdGQ6Om1pbih2YWwwLCAyNTUu
MGYpKSkpOworICAgIG91dHB1dFtpICogMiArIDFdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oCisg
ICAgICAgIHN0ZDo6cm91bmQoc3RkOjptYXgoMC4wZiwgc3RkOjptaW4odmFsMSwgMjU1LjBmKSkp
KTsKKyAgfQorCisgIC8vIEhhbmRsZSB0aGUgbGFzdCBwaXhlbCBmb3Igb2RkIHdpZHRocy4KKyAg
aWYgKHlfZGF0YS5zaXplKCkgJSAyID09IDEpIHsKKyAgICBjb25zdCBmbG9hdCB2YWwgPSBjb2Vm
ZlswXSAqIHlfZGF0YVt5X2RhdGEuc2l6ZSgpIC0gMV0gKworICAgICAgICAgICAgICAgICAgICAg
IGNvZWZmWzFdICogdV9kYXRhWyh5X2RhdGEuc2l6ZSgpIC0gMSkgLyAyXSArCisgICAgICAgICAg
ICAgICAgICAgICAgY29lZmZbMl0gKiB2X2RhdGFbKHlfZGF0YS5zaXplKCkgLSAxKSAvIDJdICsg
Y29lZmZbM107CisgICAgb3V0cHV0W3lfZGF0YS5zaXplKCkgLSAxXSA9CisgICAgICAgIHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHN0ZDo6cm91bmQoc3RkOjptYXgoMC4wZiwgc3RkOjptaW4odmFsLCAy
NTUuMGYpKSkpOworICB9Cit9CisKKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgQWRqdXN0Q29sb3Jz
KCkuIFRoaXMgZnVuY3Rpb25zIGNhbGN1bGF0ZXMgYSBzaW5nbGUgb3V0cHV0CisvLyByb3cgZm9y
IGVpdGhlciB1IG9yIHYsIHdpdGggdGhlIGdpdmVuIGNvbG9yIGNvZWZmaWNpZW50cy4gWSwgVSwg
YW5kIFYgYXJlCisvLyBhc3N1bWVkIHRvIGJlIHRoZSBzYW1lIHNpemUsIGkuZS4gbm8gc3Vic2Ft
cGxpbmcuCit2b2lkIENhbGN1bGF0ZVVWQ2hhbm5lbChydGM6OkFycmF5Vmlldzxjb25zdCB1aW50
OF90PiB5X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmlldzxjb25z
dCB1aW50OF90PiB1X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmll
dzxjb25zdCB1aW50OF90PiB2X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OmFycmF5PGZsb2F0LCA0PiYgY29lZmYsCisgICAgICAgICAgICAgICAgICAgICAgICBydGM6
OkFycmF5Vmlldzx1aW50OF90PiBvdXRwdXQpIHsKKyAgUlRDX0NIRUNLX0VRKHlfZGF0YS5zaXpl
KCksIHVfZGF0YS5zaXplKCkpOworICBSVENfQ0hFQ0tfRVEoeV9kYXRhLnNpemUoKSwgdl9kYXRh
LnNpemUoKSk7CisgIFJUQ19DSEVDS19FUSh5X2RhdGEuc2l6ZSgpLCBvdXRwdXQuc2l6ZSgpKTsK
KworICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHlfZGF0YS5zaXplKCk7ICsreCkgeworICAgIGNv
bnN0IGZsb2F0IHZhbCA9IGNvZWZmWzBdICogeV9kYXRhW3hdICsgY29lZmZbMV0gKiB1X2RhdGFb
eF0gKworICAgICAgICAgICAgICAgICAgICAgIGNvZWZmWzJdICogdl9kYXRhW3hdICsgY29lZmZb
M107CisgICAgLy8gQ2xhbXAgcmVzdWx0IHRvIGEgYnl0ZS4KKyAgICBvdXRwdXRbeF0gPQorICAg
ICAgICBzdGF0aWNfY2FzdDx1aW50OF90PihzdGQ6OnJvdW5kKHN0ZDo6bWF4KDAuMGYsIHN0ZDo6
bWluKHZhbCwgMjU1LjBmKSkpKTsKKyAgfQorfQorCisvLyBDb252ZXJ0IGEgZnJhbWUgdG8gZm91
ciB2ZWN0b3JzIGNvbnNpc3Rpbmcgb2YgW3ksIHUsIHYsIDFdLgorc3RkOjp2ZWN0b3I8c3RkOjp2
ZWN0b3I8dWludDhfdD4+IEZsYXR0ZW5ZdXZEYXRhKAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgZnJhbWUpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2
ZWN0b3I8dWludDhfdD4+IHJlc3VsdCgKKyAgICAgIDQsIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGZy
YW1lLT5DaHJvbWFXaWR0aCgpICogZnJhbWUtPkNocm9tYUhlaWdodCgpKSk7CisKKyAgLy8gRG93
bnNjYWxlIHRoZSBZIHBsYW5lIHNvIHRoYXQgYWxsIFlVViBwbGFuZXMgYXJlIHRoZSBzYW1lIHNp
emUuCisgIGxpYnl1djo6U2NhbGVQbGFuZShmcmFtZS0+RGF0YVkoKSwgZnJhbWUtPlN0cmlkZVko
KSwgZnJhbWUtPndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+aGVpZ2h0KCks
IHJlc3VsdFswXS5kYXRhKCksIGZyYW1lLT5DaHJvbWFXaWR0aCgpLAorICAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPkNocm9tYVdpZHRoKCksIGZyYW1lLT5DaHJvbWFIZWlnaHQoKSwKKyAgICAg
ICAgICAgICAgICAgICAgIGxpYnl1djo6a0ZpbHRlckJveCk7CisKKyAgbGlieXV2OjpDb3B5UGxh
bmUoZnJhbWUtPkRhdGFVKCksIGZyYW1lLT5TdHJpZGVVKCksIHJlc3VsdFsxXS5kYXRhKCksCisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5DaHJvbWFXaWR0aCgpLCBmcmFtZS0+Q2hyb21hV2lk
dGgoKSwKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPkNocm9tYUhlaWdodCgpKTsKKworICBs
aWJ5dXY6OkNvcHlQbGFuZShmcmFtZS0+RGF0YVYoKSwgZnJhbWUtPlN0cmlkZVYoKSwgcmVzdWx0
WzJdLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPkNocm9tYVdpZHRoKCksIGZy
YW1lLT5DaHJvbWFXaWR0aCgpLAorICAgICAgICAgICAgICAgICAgICBmcmFtZS0+Q2hyb21hSGVp
Z2h0KCkpOworCisgIHN0ZDo6ZmlsbChyZXN1bHRbM10uYmVnaW4oKSwgcmVzdWx0WzNdLmVuZCgp
LCAxdSk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBWZWN0b3JUb0NvbG9yTWF0cml4KAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9y
PGRvdWJsZT4+JiB2KSB7CisgIENvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggY29sb3JfdHJhbnNm
b3JtYXRpb247CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgZm9yIChpbnQg
aiA9IDA7IGogPCA0OyArK2opCisgICAgICBjb2xvcl90cmFuc2Zvcm1hdGlvbltpXVtqXSA9IHZb
aV1bal07CisgIH0KKyAgcmV0dXJuIGNvbG9yX3RyYW5zZm9ybWF0aW9uOworfQorCit9ICAvLyBu
YW1lc3BhY2UKKworQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCBDYWxjdWxhdGVDb2xvclRyYW5z
Zm9ybWF0aW9uTWF0cml4KAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVy
SW50ZXJmYWNlPiYgcmVmZXJlbmNlX2ZyYW1lLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0
cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgdGVzdF9mcmFtZSkgeworICBJbmNyZW1lbnRhbExpbmVh
ckxlYXN0U3F1YXJlcyBpbmNyZW1lbnRhbF9sbHM7CisgIGluY3JlbWVudGFsX2xscy5BZGRPYnNl
cnZhdGlvbnMoRmxhdHRlbll1dkRhdGEodGVzdF9mcmFtZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmxhdHRlbll1dkRhdGEocmVmZXJlbmNlX2ZyYW1lKSk7CisgIHJldHVy
biBWZWN0b3JUb0NvbG9yTWF0cml4KGluY3JlbWVudGFsX2xscy5HZXRCZXN0U29sdXRpb24oKSk7
Cit9CisKK0NvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+JiByZWZlcmVu
Y2VfdmlkZW8sCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgdGVzdF92aWRl
bykgeworICBSVENfQ0hFQ0tfR0UocmVmZXJlbmNlX3ZpZGVvLT5udW1iZXJfb2ZfZnJhbWVzKCks
CisgICAgICAgICAgICAgICB0ZXN0X3ZpZGVvLT5udW1iZXJfb2ZfZnJhbWVzKCkpOworCisgIElu
Y3JlbWVudGFsTGluZWFyTGVhc3RTcXVhcmVzIGluY3JlbWVudGFsX2xsczsKKyAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB0ZXN0X3ZpZGVvLT5udW1iZXJfb2ZfZnJhbWVzKCk7ICsraSkgeworICAg
IGluY3JlbWVudGFsX2xscy5BZGRPYnNlcnZhdGlvbnMoCisgICAgICAgIEZsYXR0ZW5ZdXZEYXRh
KHRlc3RfdmlkZW8tPkdldEZyYW1lKGkpKSwKKyAgICAgICAgRmxhdHRlbll1dkRhdGEocmVmZXJl
bmNlX3ZpZGVvLT5HZXRGcmFtZShpKSkpOworICB9CisKKyAgcmV0dXJuIFZlY3RvclRvQ29sb3JN
YXRyaXgoaW5jcmVtZW50YWxfbGxzLkdldEJlc3RTb2x1dGlvbigpKTsKK30KKworcnRjOjpzY29w
ZWRfcmVmcHRyPFZpZGVvPiBBZGp1c3RDb2xvcnMoCisgICAgY29uc3QgQ29sb3JUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgY29sb3JfdHJhbnNmb3JtYXRpb24sCisgICAgY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPFZpZGVvPiYgdmlkZW8pIHsKKyAgY2xhc3MgQ29sb3JBZGp1c3RlZFZpZGVvIDogcHVi
bGljIHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxWaWRlbz4geworICAgcHVibGljOgorICAgIENvbG9y
QWRqdXN0ZWRWaWRlbyhjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb2xvcl90cmFu
c2Zvcm1hdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVm
cHRyPFZpZGVvPiYgdmlkZW8pCisgICAgICAgIDogY29sb3JfdHJhbnNmb3JtYXRpb25fKGNvbG9y
X3RyYW5zZm9ybWF0aW9uKSwgdmlkZW9fKHZpZGVvKSB7fQorCisgICAgaW50IHdpZHRoKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmlkZW9fLT53aWR0aCgpOyB9CisgICAgaW50IGhlaWdodCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpZGVvXy0+aGVpZ2h0KCk7IH0KKyAgICBzaXplX3Qg
bnVtYmVyX29mX2ZyYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICAgIHJldHVybiB2aWRlb18t
Pm51bWJlcl9vZl9mcmFtZXMoKTsKKyAgICB9CisKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8STQy
MEJ1ZmZlckludGVyZmFjZT4gR2V0RnJhbWUoCisgICAgICAgIHNpemVfdCBpbmRleCkgY29uc3Qg
b3ZlcnJpZGUgeworICAgICAgcmV0dXJuIEFkanVzdENvbG9ycyhjb2xvcl90cmFuc2Zvcm1hdGlv
bl8sIHZpZGVvXy0+R2V0RnJhbWUoaW5kZXgpKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAg
Y29uc3QgQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb2xvcl90cmFuc2Zvcm1hdGlvbl87Cisg
ICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiB2aWRlb187CisgIH07CisKKyAgcmV0
dXJuIG5ldyBDb2xvckFkanVzdGVkVmlkZW8oY29sb3JfdHJhbnNmb3JtYXRpb24sIHZpZGVvKTsK
K30KKworcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IEFkanVzdENvbG9y
cygKKyAgICBjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb2xvcl9tYXRyaXgsCisg
ICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+JiBmcmFtZSkg
eworICAvLyBBbGxvY2F0ZSBJNDIwIGJ1ZmZlciB0aGF0IHdpbGwgaG9sZCB0aGUgY29sb3IgYWRq
dXN0ZWQgZnJhbWUuCisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVyPiBhZGp1c3RlZF9m
cmFtZSA9CisgICAgICBJNDIwQnVmZmVyOjpDcmVhdGUoZnJhbWUtPndpZHRoKCksIGZyYW1lLT5o
ZWlnaHQoKSk7CisKKyAgLy8gQ3JlYXRlIGEgZG93bnNjYWxlZCBZIHBsYW5lIHdpdGggdGhlIHNh
bWUgc2l6ZSBhcyB0aGUgVS9WIHBsYW5lcyB0bworICAvLyBzaW1wbGlmeSBjb252ZXJ0aW5nIHRo
ZSBVL1YgcGxhbmVzLgorICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBkb3duc2NhbGVkX3lfcGxhbmUo
ZnJhbWUtPkNocm9tYVdpZHRoKCkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPkNocm9tYUhlaWdodCgpKTsKKyAgbGlieXV2OjpTY2FsZVBsYW5lKGZy
YW1lLT5EYXRhWSgpLCBmcmFtZS0+U3RyaWRlWSgpLCBmcmFtZS0+d2lkdGgoKSwKKyAgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5oZWlnaHQoKSwgZG93bnNjYWxlZF95X3BsYW5lLmRhdGEoKSwK
KyAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5DaHJvbWFXaWR0aCgpLCBmcmFtZS0+Q2hyb21h
V2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5DaHJvbWFIZWlnaHQoKSwgbGli
eXV2OjprRmlsdGVyQm94KTsKKworICAvLyBGaWxsIGluIHRoZSBhZGp1c3RlZCBkYXRhIHJvdyBi
eSByb3cuCisgIGZvciAoaW50IHkgPSAwOyB5IDwgZnJhbWUtPmhlaWdodCgpOyArK3kpIHsKKyAg
ICBjb25zdCBpbnQgaGFsZl95ID0geSAvIDI7CisgICAgcnRjOjpBcnJheVZpZXc8Y29uc3QgdWlu
dDhfdD4geV9yb3coZnJhbWUtPkRhdGFZKCkgKyBmcmFtZS0+U3RyaWRlWSgpICogeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+d2lkdGgoKSk7CisgICAg
cnRjOjpBcnJheVZpZXc8Y29uc3QgdWludDhfdD4gdV9yb3coCisgICAgICAgIGZyYW1lLT5EYXRh
VSgpICsgZnJhbWUtPlN0cmlkZVUoKSAqIGhhbGZfeSwgZnJhbWUtPkNocm9tYVdpZHRoKCkpOwor
ICAgIHJ0Yzo6QXJyYXlWaWV3PGNvbnN0IHVpbnQ4X3Q+IHZfcm93KAorICAgICAgICBmcmFtZS0+
RGF0YVYoKSArIGZyYW1lLT5TdHJpZGVWKCkgKiBoYWxmX3ksIGZyYW1lLT5DaHJvbWFXaWR0aCgp
KTsKKyAgICBydGM6OkFycmF5Vmlldzx1aW50OF90PiBvdXRwdXRfeV9yb3coCisgICAgICAgIGFk
anVzdGVkX2ZyYW1lLT5NdXRhYmxlRGF0YVkoKSArIGFkanVzdGVkX2ZyYW1lLT5TdHJpZGVZKCkg
KiB5LAorICAgICAgICBmcmFtZS0+d2lkdGgoKSk7CisKKyAgICBDYWxjdWxhdGVZQ2hhbm5lbCh5
X3JvdywgdV9yb3csIHZfcm93LCBjb2xvcl9tYXRyaXhbMF0sIG91dHB1dF95X3Jvdyk7CisKKyAg
ICAvLyBDaHJvbWEgY2hhbm5lbHMgb25seSBleGlzdCBldmVyeSBzZWNvbmQgcm93IGZvciBJNDIw
LgorICAgIGlmICh5ICUgMiA9PSAwKSB7CisgICAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1aW50
OF90PiBkb3duc2NhbGVkX3lfcm93KAorICAgICAgICAgIGRvd25zY2FsZWRfeV9wbGFuZS5kYXRh
KCkgKyBmcmFtZS0+Q2hyb21hV2lkdGgoKSAqIGhhbGZfeSwKKyAgICAgICAgICBmcmFtZS0+Q2hy
b21hV2lkdGgoKSk7CisgICAgICBydGM6OkFycmF5Vmlldzx1aW50OF90PiBvdXRwdXRfdV9yb3co
CisgICAgICAgICAgYWRqdXN0ZWRfZnJhbWUtPk11dGFibGVEYXRhVSgpICsgYWRqdXN0ZWRfZnJh
bWUtPlN0cmlkZVUoKSAqIGhhbGZfeSwKKyAgICAgICAgICBmcmFtZS0+Q2hyb21hV2lkdGgoKSk7
CisgICAgICBydGM6OkFycmF5Vmlldzx1aW50OF90PiBvdXRwdXRfdl9yb3coCisgICAgICAgICAg
YWRqdXN0ZWRfZnJhbWUtPk11dGFibGVEYXRhVigpICsgYWRqdXN0ZWRfZnJhbWUtPlN0cmlkZVYo
KSAqIGhhbGZfeSwKKyAgICAgICAgICBmcmFtZS0+Q2hyb21hV2lkdGgoKSk7CisKKyAgICAgIENh
bGN1bGF0ZVVWQ2hhbm5lbChkb3duc2NhbGVkX3lfcm93LCB1X3Jvdywgdl9yb3csIGNvbG9yX21h
dHJpeFsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfdV9yb3cpOworICAgICAg
Q2FsY3VsYXRlVVZDaGFubmVsKGRvd25zY2FsZWRfeV9yb3csIHVfcm93LCB2X3JvdywgY29sb3Jf
bWF0cml4WzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF92X3Jvdyk7CisgICAg
fQorICB9CisKKyAgcmV0dXJuIGFkanVzdGVkX2ZyYW1lOworfQorCit9ICAvLyBuYW1lc3BhY2Ug
dGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVv
X2NvbG9yX2FsaWduZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19jb2xvcl9hbGlnbmVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTk3Y2JmNjU4MjlmNjgyNmY2ZTIxY2I4MjkxYzMzNmJmYjdhNGRhZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190
b29scy9mcmFtZV9hbmFseXplci92aWRlb19jb2xvcl9hbGlnbmVyLmgKQEAgLTAsMCArMSw0OSBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBB
biBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZv
dW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBh
dXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qg
b2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpZm5kZWYgUlRDX1RPT0xTX0ZSQU1FX0FOQUxZ
WkVSX1ZJREVPX0NPTE9SX0FMSUdORVJfSF8KKyNkZWZpbmUgUlRDX1RPT0xTX0ZSQU1FX0FOQUxZ
WkVSX1ZJREVPX0NPTE9SX0FMSUdORVJfSF8KKworI2luY2x1ZGUgPGFycmF5PgorCisjaW5jbHVk
ZSAicnRjX3Rvb2xzL3ZpZGVvX2ZpbGVfcmVhZGVyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
bmFtZXNwYWNlIHRlc3QgeworCisvLyBSZXByZXNlbnRzIGEgbGluZWFyIGNvbG9yIHRyYW5zZm9y
bWF0aW9uIGZyb20gW3ksIHUsIHZdIHRvIFt5JywgdScsIHYnXQorLy8gdGhyb3VnaCB0aGUgZXF1
YXRpb246IFt5JywgdScsIHYnXSA9IFt5LCB1LCB2LCAxXSAqIG1hdHJpeC4KK3VzaW5nIENvbG9y
VHJhbnNmb3JtYXRpb25NYXRyaXggPSBzdGQ6OmFycmF5PHN0ZDo6YXJyYXk8ZmxvYXQsIDQ+LCAz
PjsKKworLy8gQ2FsY3VsYXRlIHRoZSBvcHRpbWFsIGNvbG9yIHRyYW5zZm9ybWF0aW9uIHRoYXQg
c2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIHRlc3QKKy8vIHZpZGVvIHRvIG1hdGNoIGFzIGNsb3Nl
bHkgYXMgcG9zc2libGUgdG8gdGhlIHJlZmVyZW5jZSB2aWRlby4KK0NvbG9yVHJhbnNmb3JtYXRp
b25NYXRyaXggQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICBjb25zdCBy
dGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+JiByZWZlcmVuY2VfdmlkZW8sCisgICAgY29uc3QgcnRj
OjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgdGVzdF92aWRlbyk7CisKKy8vIENhbGN1bGF0ZSBjb2xv
ciB0cmFuc2Zvcm1hdGlvbiBmb3IgYSBzaW5nbGUgSTQyMCBmcmFtZS4KK0NvbG9yVHJhbnNmb3Jt
YXRpb25NYXRyaXggQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICBjb25z
dCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHJlZmVyZW5jZV9mcmFt
ZSwKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHRl
c3RfZnJhbWUpOworCisvLyBBcHBseSBhIGNvbG9yIHRyYW5zZm9ybWF0aW9uIHRvIGEgdmlkZW8u
CitydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+IEFkanVzdENvbG9ycygKKyAgICBjb25zdCBDb2xv
clRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb2xvcl9tYXRyaXgsCisgICAgY29uc3QgcnRjOjpzY29w
ZWRfcmVmcHRyPFZpZGVvPiYgdmlkZW8pOworCisvLyBBcHBseSBhIGNvbG9yIHRyYW5zZm9ybWF0
aW9uIHRvIGEgc2luZ2xlIEk0MjAgZnJhbWUuCitydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZl
ckludGVyZmFjZT4gQWRqdXN0Q29sb3JzKAorICAgIGNvbnN0IENvbG9yVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGNvbG9yX21hdHJpeCwKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1
ZmZlckludGVyZmFjZT4mIGZyYW1lKTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBSVENfVE9PTFNfRlJBTUVfQU5BTFlaRVJfVklE
RU9fQ09MT1JfQUxJR05FUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2Fs
aWduZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fY29sb3JfYWxpZ25lcl91bml0dGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjBkNmY0NTllNzA1MmI1ZmFkYjBhNGFhYmY5ZGZhNDY1YWNjOTBl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXJfdW5pdHRl
c3QuY2MKQEAgLTAsMCArMSwxNzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBX
ZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkg
cmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwg
Y29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVk
ZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2NvbG9yX2FsaWduZXIuaCIKKworI2lu
Y2x1ZGUgInJ0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5X2FuYWx5c2lzLmgi
CisjaW5jbHVkZSAicnRjX3Rvb2xzL3ZpZGVvX2ZpbGVfcmVhZGVyLmgiCisjaW5jbHVkZSAidGVz
dC9ndGVzdC5oIgorI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCisjaW5j
bHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L3NjYWxlLmgiCisKK25hbWVz
cGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCituYW1lc3BhY2UgeworCitjb25zdCBD
b2xvclRyYW5zZm9ybWF0aW9uTWF0cml4IGtJZGVudGl0eUNvbG9yTWF0cml4ID0geworICAgIHt7
MSwgMCwgMCwgMH0sIHswLCAxLCAwLCAwfSwgezAsIDAsIDEsIDB9fX07CisKK3ZvaWQgRXhwZWN0
TmVhcihjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4JiBleHBlY3RlZCwKKyAgICAgICAg
ICAgICAgICBjb25zdCBDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4JiBhY3R1YWwpIHsKKyAgLy8g
VGhlIHNjYWxpbmcgZmFjdG9yIG9uIHkvdS92IHNob3VsZCBiZSBwcmV0dHkgcHJlY2lzZS4KKyAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IDM7
ICsraikKKyAgICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkW2ldW2pdLCBhY3R1YWxbaV1bal0sIC8q
IGFic19lcnJvcj0gKi8gMS4wZS0zKQorICAgICAgICAgIDw8ICJhdCBlbGVtZW50IGk6ICIgPDwg
aSA8PCAiLCBqOiAiIDw8IGo7CisgIH0KKyAgLy8gVGhlIG9mZnNldCBjYW4gYmUgbGVzcyBwcmVj
aXNlIHNpbmNlIHRoZSByYW5nZSBpcyBbMCwgMjU1XS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAz
OyArK2kpCisgICAgRVhQRUNUX05FQVIoZXhwZWN0ZWRbaV1bM10sIGFjdHVhbFtpXVszXSwgLyog
YWJzX2Vycm9yPSAqLyAwLjEpCisgICAgICAgIDw8ICJhdCBlbGVtZW50IGk6ICIgPDwgaTsKK30K
KworfSAgLy8gbmFtZXNwYWNlCisKK2NsYXNzIFZpZGVvQ29sb3JBbGlnbmVyVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdm9pZCBTZXRVcCgpIHsKKyAgICBy
ZWZlcmVuY2VfdmlkZW9fID0KKyAgICAgICAgT3Blbll1dkZpbGUoUmVzb3VyY2VQYXRoKCJmb3Jl
bWFuXzEyOHg5NiIsICJ5dXYiKSwgMTI4LCA5Nik7CisgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNl
X3ZpZGVvXyk7CisgIH0KKworICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+IHJlZmVyZW5jZV92
aWRlb187Cit9OworCitURVNUX0YoVmlkZW9Db2xvckFsaWduZXJUZXN0LCBBZGp1c3RDb2xvcnNG
cmFtZUlkZW50aXR5KSB7CisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50
ZXJmYWNlPiB0ZXN0X2ZyYW1lID0KKyAgICAgIHJlZmVyZW5jZV92aWRlb18tPkdldEZyYW1lKDAp
OworCisgIC8vIEFzc3VtZSBwZXJmZWN0IG1hdGNoLCBpLmUuIHNzaW0gPT0gMS4KKyAgRVhQRUNU
X0VRKDEuMCwKKyAgICAgICAgICAgIFNzaW0odGVzdF9mcmFtZSwgQWRqdXN0Q29sb3JzKGtJZGVu
dGl0eUNvbG9yTWF0cml4LCB0ZXN0X2ZyYW1lKSkpOworfQorCitURVNUX0YoVmlkZW9Db2xvckFs
aWduZXJUZXN0LCBBZGp1c3RDb2xvcnNGcmFtZTF4MSkgeworICBjb25zdCBDb2xvclRyYW5zZm9y
bWF0aW9uTWF0cml4IGNvbG9yX21hdHJpeCA9IHsKKyAgICAgIHt7MSwgMiwgMywgNH0sIHs1LCA2
LCA3LCA4fSwgezksIDEwLCAxMSwgMTJ9fX07CisKKyAgY29uc3QgdWludDhfdCBkYXRhX3lbXSA9
IHsyfTsKKyAgY29uc3QgdWludDhfdCBkYXRhX3VbXSA9IHs2fTsKKyAgY29uc3QgdWludDhfdCBk
YXRhX3ZbXSA9IHs3fTsKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRl
cmZhY2U+IGk0MjBfYnVmZmVyID0gSTQyMEJ1ZmZlcjo6Q29weSgKKyAgICAgIC8qIHdpZHRoPSAq
LyAxLCAvKiBoZWlnaHQ9ICovIDEsIGRhdGFfeSwgLyogc3RyaWRlX3k9ICovIDEsIGRhdGFfdSwK
KyAgICAgIC8qIHN0cmlkZV91PSAqLyAxLCBkYXRhX3YsIC8qIHN0cmlkZV92PSAqLyAxKTsKKwor
ICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gYWRqdXN0ZWRf
YnVmZmVyID0KKyAgICAgIEFkanVzdENvbG9ycyhjb2xvcl9tYXRyaXgsIGk0MjBfYnVmZmVyKTsK
KworICBFWFBFQ1RfRVEoMiAqIDEgKyA2ICogMiArIDcgKiAzICsgNCwgYWRqdXN0ZWRfYnVmZmVy
LT5EYXRhWSgpWzBdKTsKKyAgRVhQRUNUX0VRKDIgKiA1ICsgNiAqIDYgKyA3ICogNyArIDgsIGFk
anVzdGVkX2J1ZmZlci0+RGF0YVUoKVswXSk7CisgIEVYUEVDVF9FUSgyICogOSArIDYgKiAxMCAr
IDcgKiAxMSArIDEyLCBhZGp1c3RlZF9idWZmZXItPkRhdGFWKClbMF0pOworfQorCitURVNUX0Yo
VmlkZW9Db2xvckFsaWduZXJUZXN0LCBBZGp1c3RDb2xvcnNGcmFtZTF4MU5lZ2F0aXZlKSB7Cisg
IGNvbnN0IENvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggY29sb3JfbWF0cml4ID0geworICAgICAg
e3stMSwgMCwgMCwgMjU1fSwgezAsIC0xLCAwLCAyNTV9LCB7MCwgMCwgLTEsIDI1NX19fTsKKwor
ICBjb25zdCB1aW50OF90IGRhdGFfeVtdID0gezJ9OworICBjb25zdCB1aW50OF90IGRhdGFfdVtd
ID0gezZ9OworICBjb25zdCB1aW50OF90IGRhdGFfdltdID0gezd9OworICBjb25zdCBydGM6OnNj
b3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gaTQyMF9idWZmZXIgPSBJNDIwQnVmZmVy
OjpDb3B5KAorICAgICAgLyogd2lkdGg9ICovIDEsIC8qIGhlaWdodD0gKi8gMSwgZGF0YV95LCAv
KiBzdHJpZGVfeT0gKi8gMSwgZGF0YV91LAorICAgICAgLyogc3RyaWRlX3U9ICovIDEsIGRhdGFf
diwgLyogc3RyaWRlX3Y9ICovIDEpOworCisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIw
QnVmZmVySW50ZXJmYWNlPiBhZGp1c3RlZF9idWZmZXIgPQorICAgICAgQWRqdXN0Q29sb3JzKGNv
bG9yX21hdHJpeCwgaTQyMF9idWZmZXIpOworCisgIEVYUEVDVF9FUSgyNTUgLSAyLCBhZGp1c3Rl
ZF9idWZmZXItPkRhdGFZKClbMF0pOworICBFWFBFQ1RfRVEoMjU1IC0gNiwgYWRqdXN0ZWRfYnVm
ZmVyLT5EYXRhVSgpWzBdKTsKKyAgRVhQRUNUX0VRKDI1NSAtIDcsIGFkanVzdGVkX2J1ZmZlci0+
RGF0YVYoKVswXSk7Cit9CisKK1RFU1RfRihWaWRlb0NvbG9yQWxpZ25lclRlc3QsIEFkanVzdENv
bG9yc0ZyYW1lMngyKSB7CisgIGNvbnN0IENvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXggY29sb3Jf
bWF0cml4ID0geworICAgICAge3sxLCAyLCAzLCA0fSwgezUsIDYsIDcsIDh9LCB7OSwgMTAsIDEx
LCAxMn19fTsKKworICBjb25zdCB1aW50OF90IGRhdGFfeVtdID0gezAsIDEsIDMsIDR9OworICBj
b25zdCB1aW50OF90IGRhdGFfdVtdID0gezZ9OworICBjb25zdCB1aW50OF90IGRhdGFfdltdID0g
ezd9OworICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gaTQy
MF9idWZmZXIgPSBJNDIwQnVmZmVyOjpDb3B5KAorICAgICAgLyogd2lkdGg9ICovIDIsIC8qIGhl
aWdodD0gKi8gMiwgZGF0YV95LCAvKiBzdHJpZGVfeT0gKi8gMiwgZGF0YV91LAorICAgICAgLyog
c3RyaWRlX3U9ICovIDEsIGRhdGFfdiwgLyogc3RyaWRlX3Y9ICovIDEpOworCisgIGNvbnN0IHJ0
Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBhZGp1c3RlZF9idWZmZXIgPQor
ICAgICAgQWRqdXN0Q29sb3JzKGNvbG9yX21hdHJpeCwgaTQyMF9idWZmZXIpOworCisgIEVYUEVD
VF9FUSgwICogMSArIDYgKiAyICsgNyAqIDMgKyA0LCBhZGp1c3RlZF9idWZmZXItPkRhdGFZKClb
MF0pOworICBFWFBFQ1RfRVEoMSAqIDEgKyA2ICogMiArIDcgKiAzICsgNCwgYWRqdXN0ZWRfYnVm
ZmVyLT5EYXRhWSgpWzFdKTsKKyAgRVhQRUNUX0VRKDMgKiAxICsgNiAqIDIgKyA3ICogMyArIDQs
IGFkanVzdGVkX2J1ZmZlci0+RGF0YVkoKVsyXSk7CisgIEVYUEVDVF9FUSg0ICogMSArIDYgKiAy
ICsgNyAqIDMgKyA0LCBhZGp1c3RlZF9idWZmZXItPkRhdGFZKClbM10pOworCisgIEVYUEVDVF9F
USgyICogNSArIDYgKiA2ICsgNyAqIDcgKyA4LCBhZGp1c3RlZF9idWZmZXItPkRhdGFVKClbMF0p
OworICBFWFBFQ1RfRVEoMiAqIDkgKyA2ICogMTAgKyA3ICogMTEgKyAxMiwgYWRqdXN0ZWRfYnVm
ZmVyLT5EYXRhVigpWzBdKTsKK30KKworVEVTVF9GKFZpZGVvQ29sb3JBbGlnbmVyVGVzdCwgQ2Fs
Y3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeElkZW50aXR5KSB7CisgIEVYUEVDVF9FUShr
SWRlbnRpdHlDb2xvck1hdHJpeCwgQ2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlX3ZpZGVvXywg
cmVmZXJlbmNlX3ZpZGVvXykpOworfQorCitURVNUX0YoVmlkZW9Db2xvckFsaWduZXJUZXN0LCBD
YWxjdWxhdGVDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4T2Zmc2V0KSB7CisgIGNvbnN0IHVpbnQ4
X3Qgc21hbGxfZGF0YV95W10gPSB7MCwgMSwgMiwgIDMsICA0LCAgNSwgIDYsICA3LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTV9
OworICBjb25zdCB1aW50OF90IHNtYWxsX2RhdGFfdVtdID0gezE1LCAxMywgMTcsIDI5fTsKKyAg
Y29uc3QgdWludDhfdCBzbWFsbF9kYXRhX3ZbXSA9IHszLCAyMDAsIDE3MCwgMjl9OworICBjb25z
dCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gc21hbGxfaTQyMF9idWZm
ZXIgPQorICAgICAgSTQyMEJ1ZmZlcjo6Q29weSgKKyAgICAgICAgICAvKiB3aWR0aD0gKi8gNCwg
LyogaGVpZ2h0PSAqLyA0LCBzbWFsbF9kYXRhX3ksIC8qIHN0cmlkZV95PSAqLyA0LAorICAgICAg
ICAgIHNtYWxsX2RhdGFfdSwgLyogc3RyaWRlX3U9ICovIDIsIHNtYWxsX2RhdGFfdiwgLyogc3Ry
aWRlX3Y9ICovIDIpOworCisgIHVpbnQ4X3QgYmlnX2RhdGFfeVsxNl07CisgIHVpbnQ4X3QgYmln
X2RhdGFfdVs0XTsKKyAgdWludDhfdCBiaWdfZGF0YV92WzRdOworICAvLyBDcmVhdGUgYW5vdGhl
ciBJNDIwIGZyYW1lIHdoZXJlIGFsbCB2YWx1ZXMgYXJlIDEwIGJpZ2dlci4KKyAgZm9yIChpbnQg
aSA9IDA7IGkgPCAxNjsgKytpKQorICAgIGJpZ19kYXRhX3lbaV0gPSBzbWFsbF9kYXRhX3lbaV0g
KyAxMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgYmlnX2RhdGFfdVtpXSA9
IHNtYWxsX2RhdGFfdVtpXSArIDEwOworICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkKKyAg
ICBiaWdfZGF0YV92W2ldID0gc21hbGxfZGF0YV92W2ldICsgMTA7CisKKyAgY29uc3QgcnRjOjpz
Y29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGJpZ19pNDIwX2J1ZmZlciA9CisgICAg
ICBJNDIwQnVmZmVyOjpDb3B5KAorICAgICAgICAgIC8qIHdpZHRoPSAqLyA0LCAvKiBoZWlnaHQ9
ICovIDQsIGJpZ19kYXRhX3ksIC8qIHN0cmlkZV95PSAqLyA0LAorICAgICAgICAgIGJpZ19kYXRh
X3UsIC8qIHN0cmlkZV91PSAqLyAyLCBiaWdfZGF0YV92LCAvKiBzdHJpZGVfdj0gKi8gMik7CisK
KyAgY29uc3QgQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb2xvcl9tYXRyaXggPQorICAgICAg
Q2FsY3VsYXRlQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeChiaWdfaTQyMF9idWZmZXIsIHNtYWxs
X2k0MjBfYnVmZmVyKTsKKworICBFeHBlY3ROZWFyKHt7ezEsIDAsIDAsIDEwfSwgezAsIDEsIDAs
IDEwfSwgezAsIDAsIDEsIDEwfX19LCBjb2xvcl9tYXRyaXgpOworfQorCitURVNUX0YoVmlkZW9D
b2xvckFsaWduZXJUZXN0LCBDYWxjdWxhdGVDb2xvclRyYW5zZm9ybWF0aW9uTWF0cml4KSB7Cisg
IC8vIEFyYml0cmFyeSBjb2xvciB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisgIGNvbnN0IENvbG9y
VHJhbnNmb3JtYXRpb25NYXRyaXggb3JnX2NvbG9yX21hdHJpeCA9IHsKKyAgICAgIHt7MC44LCAw
LjA1LCAwLjA0LCAtNH0sIHstMC4yLCAwLjcsIDAuMSwgMTB9LCB7MC4xLCAwLjIsIDAuNCwgMjB9
fX07CisKKyAgY29uc3QgQ29sb3JUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXN1bHRfY29sb3JfbWF0
cml4ID0KKyAgICAgIENhbGN1bGF0ZUNvbG9yVHJhbnNmb3JtYXRpb25NYXRyaXgoCisgICAgICAg
ICAgQWRqdXN0Q29sb3JzKG9yZ19jb2xvcl9tYXRyaXgsIHJlZmVyZW5jZV92aWRlb18pLCByZWZl
cmVuY2VfdmlkZW9fKTsKKworICBFeHBlY3ROZWFyKG9yZ19jb2xvcl9tYXRyaXgsIHJlc3VsdF9j
b2xvcl9tYXRyaXgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNl
IHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX2dlb21ldHJ5X2FsaWduZXIuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJh
bWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2NiYzA1
MWM5YmYxMzNjMWZkZjFlOWNiN2Y1MmY1MDZjMDZjYzVmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2Fu
YWx5emVyL3ZpZGVvX2dlb21ldHJ5X2FsaWduZXIuY2MKQEAgLTAsMCArMSwxNzggQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3Zp
ZGVvX2dlb21ldHJ5X2FsaWduZXIuaCIKKworI2luY2x1ZGUgPG1hcD4KKworI2luY2x1ZGUgImFw
aS92aWRlby9pNDIwX2J1ZmZlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorI2lu
Y2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50ZWRvYmplY3QuaCIKKyNpbmNsdWRlICJydGNfdG9vbHMv
ZnJhbWVfYW5hbHl6ZXIvdmlkZW9fcXVhbGl0eV9hbmFseXNpcy5oIgorI2luY2x1ZGUgInRoaXJk
X3BhcnR5L2xpYnl1di9pbmNsdWRlL2xpYnl1di9zY2FsZS5oIgorCituYW1lc3BhY2Ugd2VicnRj
IHsKK25hbWVzcGFjZSB0ZXN0IHsKKworbmFtZXNwYWNlIHsKKworYm9vbCBJc1ZhbGlkUmVnaW9u
KGNvbnN0IENyb3BSZWdpb24mIHJlZ2lvbiwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIGZyYW1lKSB7CisgIHJldHVybiBy
ZWdpb24ubGVmdCA+PSAwICYmIHJlZ2lvbi5yaWdodCA+PSAwICYmIHJlZ2lvbi50b3AgPj0gMCAm
JgorICAgICAgICAgcmVnaW9uLmJvdHRvbSA+PSAwICYmIHJlZ2lvbi5sZWZ0ICsgcmVnaW9uLnJp
Z2h0IDwgZnJhbWUtPndpZHRoKCkgJiYKKyAgICAgICAgIHJlZ2lvbi50b3AgKyByZWdpb24uYm90
dG9tIDwgZnJhbWUtPmhlaWdodCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworcnRjOjpzY29w
ZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IENyb3BBbmRab29tKAorICAgIGNvbnN0IENy
b3BSZWdpb24mIGNyb3BfcmVnaW9uLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIw
QnVmZmVySW50ZXJmYWNlPiYgZnJhbWUpIHsKKyAgUlRDX0NIRUNLKElzVmFsaWRSZWdpb24oY3Jv
cF9yZWdpb24sIGZyYW1lKSk7CisKKyAgY29uc3QgaW50IHV2X2Nyb3BfbGVmdCA9IGNyb3BfcmVn
aW9uLmxlZnQgLyAyOworICBjb25zdCBpbnQgdXZfY3JvcF90b3AgPSBjcm9wX3JlZ2lvbi50b3Ag
LyAyOworCisgIGNvbnN0IGludCBjcm9wcGVkX3dpZHRoID0KKyAgICAgIGZyYW1lLT53aWR0aCgp
IC0gY3JvcF9yZWdpb24ubGVmdCAtIGNyb3BfcmVnaW9uLnJpZ2h0OworICBjb25zdCBpbnQgY3Jv
cHBlZF9oZWlnaHQgPQorICAgICAgZnJhbWUtPmhlaWdodCgpIC0gY3JvcF9yZWdpb24udG9wIC0g
Y3JvcF9yZWdpb24uYm90dG9tOworCisgIC8vIENyb3AgYnkgb25seSBhZGp1c3RpbmcgcG9pbnRl
cnMuCisgIGNvbnN0IHVpbnQ4X3QqIHlfcGxhbmUgPQorICAgICAgZnJhbWUtPkRhdGFZKCkgKyBm
cmFtZS0+U3RyaWRlWSgpICogY3JvcF9yZWdpb24udG9wICsgY3JvcF9yZWdpb24ubGVmdDsKKyAg
Y29uc3QgdWludDhfdCogdV9wbGFuZSA9CisgICAgICBmcmFtZS0+RGF0YVUoKSArIGZyYW1lLT5T
dHJpZGVVKCkgKiB1dl9jcm9wX3RvcCArIHV2X2Nyb3BfbGVmdDsKKyAgY29uc3QgdWludDhfdCog
dl9wbGFuZSA9CisgICAgICBmcmFtZS0+RGF0YVYoKSArIGZyYW1lLT5TdHJpZGVWKCkgKiB1dl9j
cm9wX3RvcCArIHV2X2Nyb3BfbGVmdDsKKworICAvLyBTdHJldGNoIHRoZSBjcm9wcGVkIGZyYW1l
IHRvIHRoZSBvcmlnaW5hbCBzaXplIHVzaW5nIGxpYnl1di4KKyAgcnRjOjpzY29wZWRfcmVmcHRy
PEk0MjBCdWZmZXI+IGFkanVzdGVkX2ZyYW1lID0KKyAgICAgIEk0MjBCdWZmZXI6OkNyZWF0ZShm
cmFtZS0+d2lkdGgoKSwgZnJhbWUtPmhlaWdodCgpKTsKKyAgbGlieXV2OjpJNDIwU2NhbGUoeV9w
bGFuZSwgZnJhbWUtPlN0cmlkZVkoKSwgdV9wbGFuZSwgZnJhbWUtPlN0cmlkZVUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgdl9wbGFuZSwgZnJhbWUtPlN0cmlkZVYoKSwgY3JvcHBlZF93aWR0aCwg
Y3JvcHBlZF9oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIGFkanVzdGVkX2ZyYW1lLT5NdXRh
YmxlRGF0YVkoKSwgYWRqdXN0ZWRfZnJhbWUtPlN0cmlkZVkoKSwKKyAgICAgICAgICAgICAgICAg
ICAgYWRqdXN0ZWRfZnJhbWUtPk11dGFibGVEYXRhVSgpLCBhZGp1c3RlZF9mcmFtZS0+U3RyaWRl
VSgpLAorICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZF9mcmFtZS0+TXV0YWJsZURhdGFWKCks
IGFkanVzdGVkX2ZyYW1lLT5TdHJpZGVWKCksCisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT53
aWR0aCgpLCBmcmFtZS0+aGVpZ2h0KCksIGxpYnl1djo6a0ZpbHRlckJpbGluZWFyKTsKKworICBy
ZXR1cm4gYWRqdXN0ZWRfZnJhbWU7Cit9CisKK0Nyb3BSZWdpb24gQ2FsY3VsYXRlQ3JvcFJlZ2lv
bigKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIHJl
ZmVyZW5jZV9mcmFtZSwKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlcklu
dGVyZmFjZT4mIHRlc3RfZnJhbWUpIHsKKyAgUlRDX0NIRUNLX0VRKHJlZmVyZW5jZV9mcmFtZS0+
d2lkdGgoKSwgdGVzdF9mcmFtZS0+d2lkdGgoKSk7CisgIFJUQ19DSEVDS19FUShyZWZlcmVuY2Vf
ZnJhbWUtPmhlaWdodCgpLCB0ZXN0X2ZyYW1lLT5oZWlnaHQoKSk7CisKKyAgQ3JvcFJlZ2lvbiBi
ZXN0X3JlZ2lvbjsKKyAgZG91YmxlIGJlc3Rfc3NpbSA9IFNzaW0ocmVmZXJlbmNlX2ZyYW1lLCB0
ZXN0X2ZyYW1lKTsKKworICB0eXBlZGVmIGludCBDcm9wUmVnaW9uOjoqQ3JvcFBhcmFtZXRlcjsK
KyAgQ3JvcFBhcmFtZXRlciBjcm9wX3BhcmFtZXRlcnNbNF0gPSB7JkNyb3BSZWdpb246OmxlZnQs
ICZDcm9wUmVnaW9uOjp0b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZDcm9wUmVnaW9uOjpyaWdodCwgJkNyb3BSZWdpb246OmJvdHRvbX07CisKKyAgd2hpbGUgKHRy
dWUpIHsKKyAgICAvLyBGaW5kIHRoZSBwYXJhbWV0ZXIgaW4gd2hpY2ggZGlyZWN0aW9uIFNTSU0g
aW1wcm92ZXMgdGhlIG1vc3QuCisgICAgQ3JvcFBhcmFtZXRlciBiZXN0X3BhcmFtZXRlciA9IG51
bGxwdHI7CisgICAgY29uc3QgQ3JvcFJlZ2lvbiBwcmV2X2Jlc3RfcmVnaW9uID0gYmVzdF9yZWdp
b247CisKKyAgICBmb3IgKENyb3BQYXJhbWV0ZXIgY3JvcF9wYXJhbWV0ZXIgOiBjcm9wX3BhcmFt
ZXRlcnMpIHsKKyAgICAgIENyb3BSZWdpb24gdGVzdF9yZWdpb24gPSBwcmV2X2Jlc3RfcmVnaW9u
OworICAgICAgKysodGVzdF9yZWdpb24uKmNyb3BfcGFyYW1ldGVyKTsKKworICAgICAgaWYgKCFJ
c1ZhbGlkUmVnaW9uKHRlc3RfcmVnaW9uLCByZWZlcmVuY2VfZnJhbWUpKQorICAgICAgICBjb250
aW51ZTsKKworICAgICAgY29uc3QgZG91YmxlIHNzaW0gPQorICAgICAgICAgIFNzaW0oQ3JvcEFu
ZFpvb20odGVzdF9yZWdpb24sIHJlZmVyZW5jZV9mcmFtZSksIHRlc3RfZnJhbWUpOworCisgICAg
ICBpZiAoc3NpbSA+IGJlc3Rfc3NpbSkgeworICAgICAgICBiZXN0X3NzaW0gPSBzc2ltOworICAg
ICAgICBiZXN0X3BhcmFtZXRlciA9IGNyb3BfcGFyYW1ldGVyOworICAgICAgICBiZXN0X3JlZ2lv
biA9IHRlc3RfcmVnaW9uOworICAgICAgfQorICAgIH0KKworICAgIC8vIE5vIGltcHJvdmVtZW50
IGFtb25nIGFueSBkaXJlY3Rpb24sIHN0b3AgaXRlcmF0aW9uLgorICAgIGlmIChiZXN0X3BhcmFt
ZXRlciA9PSBudWxscHRyKQorICAgICAgYnJlYWs7CisKKyAgICAvLyBJdGVyYXRlIGluIHRoZSBi
ZXN0IGRpcmVjdGlvbiBhcyBsb25nIGFzIGl0IGltcHJvdmVzIFNTSU0uCisgICAgZm9yIChDcm9w
UmVnaW9uIHRlc3RfcmVnaW9uID0gYmVzdF9yZWdpb247CisgICAgICAgICBJc1ZhbGlkUmVnaW9u
KHRlc3RfcmVnaW9uLCByZWZlcmVuY2VfZnJhbWUpOworICAgICAgICAgKysodGVzdF9yZWdpb24u
KmJlc3RfcGFyYW1ldGVyKSkgeworICAgICAgY29uc3QgZG91YmxlIHNzaW0gPQorICAgICAgICAg
IFNzaW0oQ3JvcEFuZFpvb20odGVzdF9yZWdpb24sIHJlZmVyZW5jZV9mcmFtZSksIHRlc3RfZnJh
bWUpOworICAgICAgaWYgKHNzaW0gPD0gYmVzdF9zc2ltKQorICAgICAgICBicmVhazsKKworICAg
ICAgYmVzdF9zc2ltID0gc3NpbTsKKyAgICAgIGJlc3RfcmVnaW9uID0gdGVzdF9yZWdpb247Cisg
ICAgfQorICB9CisKKyAgcmV0dXJuIGJlc3RfcmVnaW9uOworfQorCitydGM6OnNjb3BlZF9yZWZw
dHI8STQyMEJ1ZmZlckludGVyZmFjZT4gQWRqdXN0Q3JvcHBpbmcoCisgICAgY29uc3QgcnRjOjpz
Y29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+JiByZWZlcmVuY2VfZnJhbWUsCisgICAg
Y29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+JiB0ZXN0X2ZyYW1l
KSB7CisgIHJldHVybiBDcm9wQW5kWm9vbShDYWxjdWxhdGVDcm9wUmVnaW9uKHJlZmVyZW5jZV9m
cmFtZSwgdGVzdF9mcmFtZSksCisgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VfZnJhbWUp
OworfQorCitydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+IEFkanVzdENyb3BwaW5nKAorICAgIGNv
bnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4mIHJlZmVyZW5jZV92aWRlbywKKyAgICBjb25z
dCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+JiB0ZXN0X3ZpZGVvKSB7CisgIGNsYXNzIENyb3Bw
ZWRWaWRlbyA6IHB1YmxpYyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8VmlkZW8+IHsKKyAgIHB1Ymxp
YzoKKyAgICBDcm9wcGVkVmlkZW8oY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgcmVm
ZXJlbmNlX3ZpZGVvLAorICAgICAgICAgICAgICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8
VmlkZW8+JiB0ZXN0X3ZpZGVvKQorICAgICAgICA6IHJlZmVyZW5jZV92aWRlb18ocmVmZXJlbmNl
X3ZpZGVvKSwgdGVzdF92aWRlb18odGVzdF92aWRlbykgeworICAgICAgUlRDX0NIRUNLX0VRKHJl
ZmVyZW5jZV92aWRlby0+bnVtYmVyX29mX2ZyYW1lcygpLAorICAgICAgICAgICAgICAgICAgIHRl
c3RfdmlkZW8tPm51bWJlcl9vZl9mcmFtZXMoKSk7CisgICAgICBSVENfQ0hFQ0tfRVEocmVmZXJl
bmNlX3ZpZGVvLT53aWR0aCgpLCB0ZXN0X3ZpZGVvLT53aWR0aCgpKTsKKyAgICAgIFJUQ19DSEVD
S19FUShyZWZlcmVuY2VfdmlkZW8tPmhlaWdodCgpLCB0ZXN0X3ZpZGVvLT5oZWlnaHQoKSk7Cisg
ICAgfQorCisgICAgaW50IHdpZHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdGVzdF92aWRl
b18tPndpZHRoKCk7IH0KKyAgICBpbnQgaGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dGVzdF92aWRlb18tPmhlaWdodCgpOyB9CisgICAgc2l6ZV90IG51bWJlcl9vZl9mcmFtZXMoKSBj
b25zdCBvdmVycmlkZSB7CisgICAgICByZXR1cm4gdGVzdF92aWRlb18tPm51bWJlcl9vZl9mcmFt
ZXMoKTsKKyAgICB9CisKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFj
ZT4gR2V0RnJhbWUoCisgICAgICAgIHNpemVfdCBpbmRleCkgY29uc3Qgb3ZlcnJpZGUgeworICAg
ICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IHJlZmVyZW5j
ZV9mcmFtZSA9CisgICAgICAgICAgcmVmZXJlbmNlX3ZpZGVvXy0+R2V0RnJhbWUoaW5kZXgpOwor
CisgICAgICAvLyBPbmx5IGNhbGN1bGF0ZSBjcm9wcGluZyByZWdpb24gb25jZSBwZXIgZnJhbWUg
c2luY2UgaXQncyBleHBlbnNpdmUuCisgICAgICBpZiAoIWNyb3BfcmVnaW9uc18uY291bnQoaW5k
ZXgpKSB7CisgICAgICAgIGNyb3BfcmVnaW9uc19baW5kZXhdID0KKyAgICAgICAgICAgIENhbGN1
bGF0ZUNyb3BSZWdpb24ocmVmZXJlbmNlX2ZyYW1lLCB0ZXN0X3ZpZGVvXy0+R2V0RnJhbWUoaW5k
ZXgpKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIENyb3BBbmRab29tKGNyb3BfcmVnaW9uc19b
aW5kZXhdLCByZWZlcmVuY2VfZnJhbWUpOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBjb25z
dCBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+IHJlZmVyZW5jZV92aWRlb187CisgICAgY29uc3Qg
cnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiB0ZXN0X3ZpZGVvXzsKKyAgICAvLyBNdXRhYmxlIHNp
bmNlIHRoaXMgaXMgYSBjYWNoZSB0aGF0IGFmZmVjdHMgcGVyZm9ybWFuY2UgYW5kIG5vdCBsb2dp
Y2FsCisgICAgLy8gYmVoYXZpb3IuCisgICAgbXV0YWJsZSBzdGQ6Om1hcDxzaXplX3QsIENyb3BS
ZWdpb24+IGNyb3BfcmVnaW9uc187CisgIH07CisKKyAgcmV0dXJuIG5ldyBDcm9wcGVkVmlkZW8o
cmVmZXJlbmNlX3ZpZGVvLCB0ZXN0X3ZpZGVvKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QK
K30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19nZW9t
ZXRyeV9hbGlnbmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ3NjY3YjBkMTM1ZGEyNjNlZTQwZDAwMDJmMGI0OTM3ZjFkYTZlNmEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
dG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lci5oCkBAIC0wLDAgKzEs
NTcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRo
b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJl
ZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBi
ZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2pl
Y3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFJUQ19UT09MU19GUkFNRV9B
TkFMWVpFUl9WSURFT19HRU9NRVRSWV9BTElHTkVSX0hfCisjZGVmaW5lIFJUQ19UT09MU19GUkFN
RV9BTkFMWVpFUl9WSURFT19HRU9NRVRSWV9BTElHTkVSX0hfCisKKyNpbmNsdWRlICJhcGkvdmlk
ZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCisjaW5jbHVkZSAicnRjX3Rvb2xzL3ZpZGVvX2ZpbGVf
cmVhZGVyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIHRlc3QgeworCitzdHJ1
Y3QgQ3JvcFJlZ2lvbiB7CisgIC8vIEVhY2ggdmFsdWUgcmVwcmVzZW50cyBob3cgbXVjaCB0byBj
cm9wIGZyb20gZWFjaCBzaWRlLiBMZWZ0IGlzIHdoZXJlIHg9MCwKKyAgLy8gYW5kIHRvcCBpcyB3
aGVyZSB5PTAuIEFsbCB2YWx1ZXMgZXF1YWwgdG8gemVybyByZXByZXNlbnRzIG5vIGNyb3BwaW5n
LgorICBpbnQgbGVmdCA9IDA7CisgIGludCByaWdodCA9IDA7CisgIGludCB0b3AgPSAwOworICBp
bnQgYm90dG9tID0gMDsKK307CisKKy8vIENyb3BzIGFuZCB6b29tcyBpbiBvbiB0aGUgY3JvcHBl
ZCByZWdpb24gc28gdGhhdCB0aGUgcmV0dXJuZWQgZnJhbWUgaGFzIHRoZQorLy8gc2FtZSByZXNv
bHV0aW9uIGFzIHRoZSBpbnB1dCBmcmFtZS4KK3J0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVy
SW50ZXJmYWNlPiBDcm9wQW5kWm9vbSgKKyAgICBjb25zdCBDcm9wUmVnaW9uJiBjcm9wX3JlZ2lv
biwKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4mIGZy
YW1lKTsKKworLy8gQ2FsY3VsYXRlIHRoZSBvcHRpbWFsIGNyb3BwaW5nIHJlZ2lvbiBvbiB0aGUg
cmVmZXJlbmNlIGZyYW1lIHRvIG1heGltaXplIFNTSU0KKy8vIHRvIHRoZSB0ZXN0IGZyYW1lLgor
Q3JvcFJlZ2lvbiBDYWxjdWxhdGVDcm9wUmVnaW9uKAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgcmVmZXJlbmNlX2ZyYW1lLAorICAgIGNvbnN0IHJ0
Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgdGVzdF9mcmFtZSk7CisKKy8v
IFJldHVybnMgYSBjcm9wcGVkIGFuZCB6b29tZWQgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNlIGZy
YW1lIHRoYXQgbWF0Y2hlcyB1cAorLy8gdG8gdGhlIHRlc3QgZnJhbWUuIFRoaXMgaXMgYSBzaW1w
bGUgaGVscGVyIGZ1bmN0aW9uIG9uIHRvcCBvZgorLy8gQ2FsY3VsYXRlQ3JvcFJlZ2lvbigpIGFu
ZCBDcm9wQW5kWm9vbSgpLgorcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+
IEFkanVzdENyb3BwaW5nKAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVy
SW50ZXJmYWNlPiYgcmVmZXJlbmNlX2ZyYW1lLAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0
cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgdGVzdF9mcmFtZSk7CisKKy8vIFJldHVybnMgYSBjcm9w
cGVkIGFuZCB6b29tZWQgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNlIHZpZGVvIHRoYXQgbWF0Y2hl
cyB1cAorLy8gdG8gdGhlIHRlc3QgdmlkZW8uIEZyYW1lcyBhcmUgaW5kaXZpZHVhbGx5IGFkanVz
dGVkIGZvciBjcm9wcGluZy4KK3J0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4gQWRqdXN0Q3JvcHBp
bmcoCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVvPiYgcmVmZXJlbmNlX3ZpZGVv
LAorICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4mIHRlc3RfdmlkZW8pOworCit9
ICAvLyBuYW1lc3BhY2UgdGVzdAorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8v
IFJUQ19UT09MU19GUkFNRV9BTkFMWVpFUl9WSURFT19HRU9NRVRSWV9BTElHTkVSX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9v
bHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lcl91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9h
bmFseXplci92aWRlb19nZW9tZXRyeV9hbGlnbmVyX3VuaXR0ZXN0LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUy
NmY3NzcyZTFiOTIwNDZlOTAwZGZiNDBhM2FmYzZhNWY3YmQxNWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJh
bWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lcl91bml0dGVzdC5jYwpAQCAtMCwwICsx
LDE1MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJydGNfdG9vbHMvZnJh
bWVfYW5hbHl6ZXIvdmlkZW9fZ2VvbWV0cnlfYWxpZ25lci5oIgorCisjaW5jbHVkZSA8dmVjdG9y
PgorCisjaW5jbHVkZSAicnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5h
bHlzaXMuaCIKKyNpbmNsdWRlICJydGNfdG9vbHMvdmlkZW9fZmlsZV9yZWFkZXIuaCIKKyNpbmNs
dWRlICJ0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMu
aCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKK2NsYXNzIFZpZGVv
R2VvbWV0cnlBbGlnbmVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3Rl
ZDoKKyAgdm9pZCBTZXRVcCgpIHsKKyAgICByZWZlcmVuY2VfdmlkZW9fID0KKyAgICAgICAgT3Bl
bll1dkZpbGUoUmVzb3VyY2VQYXRoKCJmb3JlbWFuXzEyOHg5NiIsICJ5dXYiKSwgMTI4LCA5Nik7
CisgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlX3ZpZGVvXyk7CisKKyAgICAvLyBWZXJ5IHNpbXBs
ZSA0eDQgZnJhbWUgdXNlZCBmb3IgdmVyeWluZyBDcm9wQW5kWm9vbS4KKyAgICBjb25zdCB1aW50
OF90IGRhdGFfeVtdID0gezAsIDEsIDIsICAzLCAgNCwgIDUsICA2LCAgNywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTV9OworICAgIGNv
bnN0IHVpbnQ4X3QgZGF0YV91W10gPSB7MCwgMSwgMiwgM307CisgICAgY29uc3QgdWludDhfdCBk
YXRhX3ZbXSA9IHswLCAxLCAyLCAzfTsKKyAgICB0ZXN0X2ZyYW1lXyA9IEk0MjBCdWZmZXI6OkNv
cHkoCisgICAgICAgIC8qIHdpZHRoPSAqLyA0LCAvKiBoZWlnaHQ9ICovIDQsIGRhdGFfeSwgLyog
c3RyaWRlX3k9ICovIDQsIGRhdGFfdSwKKyAgICAgICAgLyogc3RyaWRlX3U9ICovIDIsIGRhdGFf
diwgLyogc3RyaWRlX3Y9ICovIDIpOworICB9CisKKyAgcnRjOjpzY29wZWRfcmVmcHRyPFZpZGVv
PiByZWZlcmVuY2VfdmlkZW9fOworICBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVy
ZmFjZT4gdGVzdF9mcmFtZV87Cit9OworCisvLyBUZWFjaCBndGVzdCBob3cgdG8gY29tcGFyZSBD
cm9wUmVnaW9ucy4KK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBDcm9wUmVnaW9uJiBhLCBjb25zdCBD
cm9wUmVnaW9uJiBiKSB7CisgIHJldHVybiBhLmxlZnQgPT0gYi5sZWZ0ICYmIGEudG9wID09IGIu
dG9wICYmIGEucmlnaHQgPT0gYi5yaWdodCAmJgorICAgICAgICAgYS5ib3R0b20gPT0gYi5ib3R0
b207Cit9CisKK1RFU1RfRihWaWRlb0dlb21ldHJ5QWxpZ25lclRlc3QsIENyb3BBbmRab29tSWRl
bnRpdHkpIHsKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+
IGZyYW1lID0KKyAgICAgIHJlZmVyZW5jZV92aWRlb18tPkdldEZyYW1lKDApOworCisgIC8vIEFz
c3VtZSBwZXJmZWN0IG1hdGNoLCBpLmUuIFNTSU0gPT0gMS4KKyAgQ3JvcFJlZ2lvbiBpZGVudGl0
eV9yZWdpb247CisgIEVYUEVDVF9FUSgxLjAsIFNzaW0oZnJhbWUsIENyb3BBbmRab29tKGlkZW50
aXR5X3JlZ2lvbiwgZnJhbWUpKSk7Cit9CisKK1RFU1RfRihWaWRlb0dlb21ldHJ5QWxpZ25lclRl
c3QsIENyb3BBbmRab29tTGVmdCkgeworICBDcm9wUmVnaW9uIHJlZ2lvbjsKKyAgcmVnaW9uLmxl
ZnQgPSAyOworICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4g
Y3JvcHBlZF9mcmFtZSA9CisgICAgICBDcm9wQW5kWm9vbShyZWdpb24sIHRlc3RfZnJhbWVfKTsK
KyAgRVhQRUNUX0VRKHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KAorICAgICAgICAgICAgICAgIHsyLCAy
LCAzLCAzLCA2LCA2LCA3LCA3LCAxMCwgMTAsIDExLCAxMSwgMTQsIDE0LCAxNSwgMTV9KSwKKyAg
ICAgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRhdGFZKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9wcGVkX2ZyYW1lLT5EYXRhWSgpICsg
MTYpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oezEsIDEsIDMs
IDN9KSwKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRhdGFVKCks
IGNyb3BwZWRfZnJhbWUtPkRhdGFVKCkgKyA0KSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0ZDo6
dmVjdG9yPHVpbnQ4X3Q+KHsxLCAxLCAzLCAzfSksCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90
Pihjcm9wcGVkX2ZyYW1lLT5EYXRhVigpLCBjcm9wcGVkX2ZyYW1lLT5EYXRhVigpICsgNCkpOwor
fQorCitURVNUX0YoVmlkZW9HZW9tZXRyeUFsaWduZXJUZXN0LCBDcm9wQW5kWm9vbVRvcCkgewor
ICBDcm9wUmVnaW9uIHJlZ2lvbjsKKyAgcmVnaW9uLnRvcCA9IDI7CisgIGNvbnN0IHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiBjcm9wcGVkX2ZyYW1lID0KKyAgICAgIENy
b3BBbmRab29tKHJlZ2lvbiwgdGVzdF9mcmFtZV8pOworICBFWFBFQ1RfRVEoc3RkOjp2ZWN0b3I8
dWludDhfdD4oCisgICAgICAgICAgICAgICAgezgsIDksIDEwLCAxMSwgMTAsIDExLCAxMiwgMTMs
IDEyLCAxMywgMTQsIDE1LCAxMiwgMTMsIDE0LCAxNX0pLAorICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8dWludDhfdD4oY3JvcHBlZF9mcmFtZS0+RGF0YVkoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyb3BwZWRfZnJhbWUtPkRhdGFZKCkgKyAxNikpOworICBFWFBFQ1RfRVEo
CisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pih7MiwgMywgMiwgM30pLAorICAgICAgc3RkOjp2
ZWN0b3I8dWludDhfdD4oY3JvcHBlZF9mcmFtZS0+RGF0YVUoKSwgY3JvcHBlZF9mcmFtZS0+RGF0
YVUoKSArIDQpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oezIs
IDMsIDIsIDN9KSwKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNyb3BwZWRfZnJhbWUtPkRh
dGFWKCksIGNyb3BwZWRfZnJhbWUtPkRhdGFWKCkgKyA0KSk7Cit9CisKK1RFU1RfRihWaWRlb0dl
b21ldHJ5QWxpZ25lclRlc3QsIENyb3BBbmRab29tUmlnaHQpIHsKKyAgQ3JvcFJlZ2lvbiByZWdp
b247CisgIHJlZ2lvbi5yaWdodCA9IDI7CisgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIw
QnVmZmVySW50ZXJmYWNlPiBjcm9wcGVkX2ZyYW1lID0KKyAgICAgIENyb3BBbmRab29tKHJlZ2lv
biwgdGVzdF9mcmFtZV8pOworICBFWFBFQ1RfRVEoc3RkOjp2ZWN0b3I8dWludDhfdD4oCisgICAg
ICAgICAgICAgICAgezAsIDAsIDEsIDEsIDQsIDQsIDUsIDUsIDgsIDgsIDksIDksIDEyLCAxMiwg
MTMsIDEzfSksCisgICAgICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pihjcm9wcGVkX2ZyYW1l
LT5EYXRhWSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JvcHBlZF9mcmFt
ZS0+RGF0YVkoKSArIDE2KSk7CisgIEVYUEVDVF9FUSgKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4
X3Q+KHswLCAwLCAyLCAyfSksCisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pihjcm9wcGVkX2Zy
YW1lLT5EYXRhVSgpLCBjcm9wcGVkX2ZyYW1lLT5EYXRhVSgpICsgNCkpOworICBFWFBFQ1RfRVEo
CisgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90Pih7MCwgMCwgMiwgMn0pLAorICAgICAgc3RkOjp2
ZWN0b3I8dWludDhfdD4oY3JvcHBlZF9mcmFtZS0+RGF0YVYoKSwgY3JvcHBlZF9mcmFtZS0+RGF0
YVYoKSArIDQpKTsKK30KKworVEVTVF9GKFZpZGVvR2VvbWV0cnlBbGlnbmVyVGVzdCwgQ3JvcEFu
ZFpvb21Cb3R0b20pIHsKKyAgQ3JvcFJlZ2lvbiByZWdpb247CisgIHJlZ2lvbi5ib3R0b20gPSAy
OworICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8STQyMEJ1ZmZlckludGVyZmFjZT4gY3JvcHBl
ZF9mcmFtZSA9CisgICAgICBDcm9wQW5kWm9vbShyZWdpb24sIHRlc3RfZnJhbWVfKTsKKyAgRVhQ
RUNUX0VRKAorICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4oezAsIDEsIDIsIDMsIDIsIDMsIDQs
IDUsIDQsIDUsIDYsIDcsIDQsIDUsIDYsIDd9KSwKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+
KGNyb3BwZWRfZnJhbWUtPkRhdGFZKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9w
cGVkX2ZyYW1lLT5EYXRhWSgpICsgMTYpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgc3RkOjp2ZWN0
b3I8dWludDhfdD4oezAsIDEsIDAsIDF9KSwKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KGNy
b3BwZWRfZnJhbWUtPkRhdGFVKCksIGNyb3BwZWRfZnJhbWUtPkRhdGFVKCkgKyA0KSk7CisgIEVY
UEVDVF9FUSgKKyAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHswLCAxLCAwLCAxfSksCisgICAg
ICBzdGQ6OnZlY3Rvcjx1aW50OF90Pihjcm9wcGVkX2ZyYW1lLT5EYXRhVigpLCBjcm9wcGVkX2Zy
YW1lLT5EYXRhVigpICsgNCkpOworfQorCitURVNUX0YoVmlkZW9HZW9tZXRyeUFsaWduZXJUZXN0
LCBDYWxjdWxhdGVDcm9wUmVnaW9uSWRlbnRpdHkpIHsKKyAgY29uc3QgcnRjOjpzY29wZWRfcmVm
cHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGZyYW1lID0KKyAgICAgIHJlZmVyZW5jZV92aWRlb18t
PkdldEZyYW1lKDApOworICBDcm9wUmVnaW9uIGlkZW50aXR5X3JlZ2lvbjsKKyAgRVhQRUNUX0VR
KGlkZW50aXR5X3JlZ2lvbiwgQ2FsY3VsYXRlQ3JvcFJlZ2lvbihmcmFtZSwgZnJhbWUpKTsKK30K
KworVEVTVF9GKFZpZGVvR2VvbWV0cnlBbGlnbmVyVGVzdCwgQ2FsY3VsYXRlQ3JvcFJlZ2lvbkFy
Yml0cmFyeSkgeworICAvLyBBcmJpdHJhcnkgY3JvcCByZWdpb24uCisgIENyb3BSZWdpb24gY3Jv
cF9yZWdpb247CisgIGNyb3BfcmVnaW9uLmxlZnQgPSAyOworICBjcm9wX3JlZ2lvbi50b3AgPSA0
OworICBjcm9wX3JlZ2lvbi5yaWdodCA9IDU7CisgIGNyb3BfcmVnaW9uLmJvdHRvbSA9IDM7CisK
KyAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPEk0MjBCdWZmZXJJbnRlcmZhY2U+IGZyYW1lID0K
KyAgICAgIHJlZmVyZW5jZV92aWRlb18tPkdldEZyYW1lKDApOworCisgIEVYUEVDVF9FUShjcm9w
X3JlZ2lvbiwKKyAgICAgICAgICAgIENhbGN1bGF0ZUNyb3BSZWdpb24oZnJhbWUsIENyb3BBbmRa
b29tKGNyb3BfcmVnaW9uLCBmcmFtZSkpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30g
IC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9mcmFtZV9hbmFseXplci92aWRlb19xdWFsaXR5
X2FuYWx5c2lzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMuY2MKaW5kZXgg
MWMzMGQwOGM1NjU1MWJhMzk1MWNkYzNjZmY0ZjBlZDM3NjE2YjMyOS4uNDAwMjY4MDJjNzc0M2Rh
ODQxMjk0MjA5YmRhYWJmMWVlODIyMGFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1
YWxpdHlfYW5hbHlzaXMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3F1YWxpdHlfYW5hbHlzaXMu
Y2MKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bnVt
ZXJpYz4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJ0ZXN0L3Rl
c3RzdXBwb3J0L3BlcmZfdGVzdC5oIgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNs
dWRlL2xpYnl1di9jb21wYXJlLmgiCiAjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1
ZGUvbGlieXV2L2NvbnZlcnQuaCIKQEAgLTU2LDE2ICs1NywxMSBAQCBzdGQ6OnZlY3RvcjxBbmFs
eXNpc1Jlc3VsdD4gUnVuQW5hbHlzaXMoCiAgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6dGVzdDo6VmlkZW8+JiB0ZXN0X3ZpZGVvLAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNp
emVfdD4mIHRlc3RfZnJhbWVfaW5kaWNlcykgewogICBzdGQ6OnZlY3RvcjxBbmFseXNpc1Jlc3Vs
dD4gcmVzdWx0czsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2ZyYW1lX2luZGljZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAvLyBJZ25vcmUgZHVwbGljYXRlZCBmcmFtZXMgaW4gdGhlIHRl
c3QgdmlkZW8uCi0gICAgaWYgKGkgPiAwICYmIHRlc3RfZnJhbWVfaW5kaWNlc1tpXSA9PSB0ZXN0
X2ZyYW1lX2luZGljZXNbaSAtIDFdKQotICAgICAgY29udGludWU7Ci0KKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0ZXN0X3ZpZGVvLT5udW1iZXJfb2ZfZnJhbWVzKCk7ICsraSkgewogICAgIGNv
bnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgdGVzdF9mcmFtZSA9
CiAgICAgICAgIHRlc3RfdmlkZW8tPkdldEZyYW1lKGkpOwogICAgIGNvbnN0IHJ0Yzo6c2NvcGVk
X3JlZnB0cjxJNDIwQnVmZmVySW50ZXJmYWNlPiYgcmVmZXJlbmNlX2ZyYW1lID0KLSAgICAgICAg
cmVmZXJlbmNlX3ZpZGVvLT5HZXRGcmFtZSh0ZXN0X2ZyYW1lX2luZGljZXNbaV0gJQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZV92aWRlby0+bnVtYmVyX29mX2Zy
YW1lcygpKTsKKyAgICAgICAgcmVmZXJlbmNlX3ZpZGVvLT5HZXRGcmFtZShpKTsKIAogICAgIC8v
IEZpbGwgaW4gdGhlIHJlc3VsdCBzdHJ1Y3QuCiAgICAgQW5hbHlzaXNSZXN1bHQgcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X3Rvb2xzL2ZyYW1lX2FuYWx5emVyL3ZpZGVvX3RlbXBvcmFsX2FsaWduZXIuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6
ZXIvdmlkZW9fdGVtcG9yYWxfYWxpZ25lci5jYwppbmRleCAyZWJmZmJjNGU3NWIzYmU0MDBkOWVk
OGQ0ZDY4NDQ4MWRhYjFjZTgwLi5mYTI1ZjczZjhlMTQ0OGM4N2Q0MGQ3Nzk5ZTJkOTAxMWU4ZDA0
M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfdG9vbHMvZnJhbWVfYW5hbHl6ZXIvdmlkZW9fdGVtcG9yYWxfYWxpZ25lci5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvZnJh
bWVfYW5hbHl6ZXIvdmlkZW9fdGVtcG9yYWxfYWxpZ25lci5jYwpAQCAtMjE1LDcgKzIxNSw3IEBA
IHN0ZDo6dmVjdG9yPHNpemVfdD4gRmluZE1hdGNoaW5nRnJhbWVJbmRpY2VzKAogCiBydGM6OnNj
b3BlZF9yZWZwdHI8VmlkZW8+IFJlb3JkZXJWaWRlbyhjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8
VmlkZW8+JiB2aWRlbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIGluZGljZXMpIHsKLSAgcmV0dXJuIG5ldyBSZW9yZGVy
ZWRWaWRlbyh2aWRlbywgaW5kaWNlcyk7CisgIHJldHVybiBuZXcgUmVvcmRlcmVkVmlkZW8obmV3
IExvb3BpbmdWaWRlbyh2aWRlbyksIGluZGljZXMpOwogfQogCiBydGM6OnNjb3BlZF9yZWZwdHI8
VmlkZW8+IEdlbmVyYXRlQWxpZ25lZFJlZmVyZW5jZVZpZGVvKApAQCAtMjI4LDcgKzIyOCw3IEBA
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4gR2VuZXJhdGVBbGlnbmVkUmVmZXJlbmNlVmlkZW8o
CiBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW8+IEdlbmVyYXRlQWxpZ25lZFJlZmVyZW5jZVZpZGVv
KAogICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxWaWRlbz4mIHJlZmVyZW5jZV92aWRlbywK
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiBpbmRpY2VzKSB7Ci0gIHJldHVybiBSZW9y
ZGVyVmlkZW8obmV3IExvb3BpbmdWaWRlbyhyZWZlcmVuY2VfdmlkZW8pLCBpbmRpY2VzKTsKKyAg
cmV0dXJuIFJlb3JkZXJWaWRlbyhyZWZlcmVuY2VfdmlkZW8sIGluZGljZXMpOwogfQogCiB9ICAv
LyBuYW1lc3BhY2UgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVyL0JVSUxELmduIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVz
dGVyL0JVSUxELmduCmluZGV4IGE1MDM2ZGNlYTljZDE4NjAwMWQ4ZDQ5M2Y0MTI1NzUwMDkyZTcy
YjYuLjQ3YjgxNDMwNDcyYjE3OTU3NGIwNTZhMzNmYWVkOGIwNjYyNGRiY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9uZXR3
b3JrX3Rlc3Rlci9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvbmV0d29ya190ZXN0ZXIvQlVJTEQuZ24KQEAgLTYsOCArNiw4
IEBACiAjIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0
aG9ycyBtYXkKICMgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCiAKLWltcG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCiBpbXBvcnQoIi8v
dGhpcmRfcGFydHkvcHJvdG9idWYvcHJvdG9fbGlicmFyeS5nbmkiKQoraW1wb3J0KCIuLi8uLi93
ZWJydGMuZ25pIikKIAogaWYgKHJ0Y19lbmFibGVfcHJvdG9idWYpIHsKICAgcHJvdG9fbGlicmFy
eSgibmV0d29ya190ZXN0ZXJfY29uZmlnX3Byb3RvIikgewpAQCAtNDQsNiArNDQsNyBAQCBpZiAo
cnRjX2VuYWJsZV9wcm90b2J1ZikgewogICAgICAgIi4uLy4uL3AycCIsCiAgICAgICAiLi4vLi4v
cnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpwcm90b2J1Zl91dGlscyIs
CisgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi4uLy4uL3J0Y19iYXNl
OnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfdGFza19xdWV1
ZSIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6c2VxdWVuY2VkX3Rhc2tfY2hlY2tlciIsCkBAIC04
MCw3ICs4MSw3IEBAIGlmIChydGNfZW5hYmxlX3Byb3RvYnVmKSB7CiAKICAgICBkZXBzID0gWwog
ICAgICAgIjpuZXR3b3JrX3Rlc3RlciIsCi0gICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2Vf
dGVzdHNfdXRpbHMiLAorICAgICAgIi4uLy4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAg
ICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9y
dCIsCiAgICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci90ZXN0
X2NvbnRyb2xsZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfdG9vbHMvbmV0d29ya190ZXN0ZXIvdGVzdF9jb250cm9sbGVyLmNjCmluZGV4IGU1YmQ5
MmVmYTkzYzZkYjE1NTA1NDhhYjYyODg3NWYyNTliNWIwODEuLjliZmRmYTc3MzJjODIwZTg2MDE5
ZmQ5MTMxODA4MzRjMTg4NGMwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci90ZXN0X2NvbnRyb2xs
ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRj
X3Rvb2xzL25ldHdvcmtfdGVzdGVyL3Rlc3RfY29udHJvbGxlci5jYwpAQCAtMTAsNiArMTAsOSBA
QAogCiAjaW5jbHVkZSAicnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVyL3Rlc3RfY29udHJvbGxlci5o
IgogCisjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3RocmVhZC5oIgorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIAogVGVzdENvbnRyb2xsZXI6OlRlc3RD
b250cm9sbGVyKGludCBtaW5fcG9ydCwKQEAgLTI0LDE3ICsyNywxNSBAQCBUZXN0Q29udHJvbGxl
cjo6VGVzdENvbnRyb2xsZXIoaW50IG1pbl9wb3J0LAogICBSVENfRENIRUNLX1JVTl9PTigmdGVz
dF9jb250cm9sbGVyX3RocmVhZF9jaGVja2VyXyk7CiAgIHBhY2tldF9zZW5kZXJfY2hlY2tlcl8u
RGV0YWNoKCk7CiAgIHNlbmRfZGF0YV8uZmlsbCg0Mik7Ci0gIGF1dG8gc29ja2V0ID0KKyAgdWRw
X3NvY2tldF8gPQogICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+
KHNvY2tldF9mYWN0b3J5Xy5DcmVhdGVVZHBTb2NrZXQoCiAgICAgICAgICAgcnRjOjpTb2NrZXRB
ZGRyZXNzKHJ0Yzo6R2V0QW55SVAoQUZfSU5FVCksIDApLCBtaW5fcG9ydCwgbWF4X3BvcnQpKTsK
LSAgc29ja2V0LT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3QodGhpcywgJlRlc3RDb250cm9sbGVy
OjpPblJlYWRQYWNrZXQpOwotICB1ZHBfdHJhbnNwb3J0Xy5yZXNldCgKLSAgICAgIG5ldyBjcmlj
a2V0OjpVZHBUcmFuc3BvcnQoIm5ldHdvcmsgdGVzdGVyIHRyYW5zcG9ydCIsIHN0ZDo6bW92ZShz
b2NrZXQpKSk7CisgIHVkcF9zb2NrZXRfLT5TaWduYWxSZWFkUGFja2V0LmNvbm5lY3QodGhpcywg
JlRlc3RDb250cm9sbGVyOjpPblJlYWRQYWNrZXQpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVy
OjpTZW5kQ29ubmVjdFRvKGNvbnN0IHN0ZDo6c3RyaW5nJiBob3N0bmFtZSwgaW50IHBvcnQpIHsK
ICAgUlRDX0RDSEVDS19SVU5fT04oJnRlc3RfY29udHJvbGxlcl90aHJlYWRfY2hlY2tlcl8pOwot
ICB1ZHBfdHJhbnNwb3J0Xy0+U2V0UmVtb3RlQWRkcmVzcyhydGM6OlNvY2tldEFkZHJlc3MoaG9z
dG5hbWUsIHBvcnQpKTsKKyAgcmVtb3RlX2FkZHJlc3NfID0gcnRjOjpTb2NrZXRBZGRyZXNzKGhv
c3RuYW1lLCBwb3J0KTsKICAgTmV0d29ya1Rlc3RlclBhY2tldCBwYWNrZXQ7CiAgIHBhY2tldC5z
ZXRfdHlwZShOZXR3b3JrVGVzdGVyUGFja2V0OjpIQU5EX1NIQUtJTkcpOwogICBTZW5kRGF0YShw
YWNrZXQsIGFic2w6Om51bGxvcHQpOwpAQCAtNTcsOCArNTgsOCBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpTZW5kRGF0YShjb25zdCBOZXR3b3JrVGVzdGVyUGFja2V0JiBwYWNrZXQsCiAgIHBhY2tl
dC5TZXJpYWxpemVUb0FycmF5KCZzZW5kX2RhdGFfWzFdLCBzdGQ6Om51bWVyaWNfbGltaXRzPGNo
YXI+OjptYXgoKSk7CiAgIGlmIChkYXRhX3NpemUgJiYgKmRhdGFfc2l6ZSA+IHBhY2tldF9zaXpl
KQogICAgIHBhY2tldF9zaXplID0gKmRhdGFfc2l6ZTsKLSAgdWRwX3RyYW5zcG9ydF8tPlNlbmRQ
YWNrZXQoc2VuZF9kYXRhXy5kYXRhKCksIHBhY2tldF9zaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydGM6OlBhY2tldE9wdGlvbnMoKSwgMCk7CisgIHVkcF9zb2NrZXRfLT5TZW5k
VG8oKGNvbnN0IHZvaWQqKXNlbmRfZGF0YV8uZGF0YSgpLCBwYWNrZXRfc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICByZW1vdGVfYWRkcmVzc18sIHJ0Yzo6UGFja2V0T3B0aW9ucygpKTsKIH0K
IAogdm9pZCBUZXN0Q29udHJvbGxlcjo6T25UZXN0RG9uZSgpIHsKQEAgLTgwLDcgKzgxLDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQq
IHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBk
YXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBy
ZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6
OlBhY2tldFRpbWUmIHBhY2tldF90aW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaW50NjRfdCYgcGFja2V0X3RpbWVfdXMpIHsKICAgUlRDX0RDSEVDS19SVU5f
T04oJnRlc3RfY29udHJvbGxlcl90aHJlYWRfY2hlY2tlcl8pOwogICBzaXplX3QgcGFja2V0X3Np
emUgPSBkYXRhWzBdOwogICBzdGQ6OnN0cmluZyByZWNlaXZlX2RhdGEoJmRhdGFbMV0sIHBhY2tl
dF9zaXplKTsKQEAgLTkxLDcgKzkyLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6T25SZWFkUGFj
a2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICBjYXNlIE5ldHdvcmtUZXN0
ZXJQYWNrZXQ6OkhBTkRfU0hBS0lORzogewogICAgICAgTmV0d29ya1Rlc3RlclBhY2tldCBwYWNr
ZXQ7CiAgICAgICBwYWNrZXQuc2V0X3R5cGUoTmV0d29ya1Rlc3RlclBhY2tldDo6VEVTVF9TVEFS
VCk7Ci0gICAgICB1ZHBfdHJhbnNwb3J0Xy0+U2V0UmVtb3RlQWRkcmVzcyhyZW1vdGVfYWRkcik7
CisgICAgICByZW1vdGVfYWRkcmVzc18gPSByZW1vdGVfYWRkcjsKICAgICAgIFNlbmREYXRhKHBh
Y2tldCwgYWJzbDo6bnVsbG9wdCk7CiAgICAgICBwYWNrZXRfc2VuZGVyXy5yZXNldChuZXcgUGFj
a2V0U2VuZGVyKHRoaXMsIGNvbmZpZ19maWxlX3BhdGhfKSk7CiAgICAgICBwYWNrZXRfc2VuZGVy
Xy0+U3RhcnRTZW5kaW5nKCk7CkBAIC0xMDksNyArMTEwLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6T25SZWFkUGFja2V0KHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIHNvY2tldCwKICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIE5ldHdvcmtUZXN0ZXJQYWNrZXQ6OlRFU1RfREFUQTogewot
ICAgICAgcGFja2V0LnNldF9hcnJpdmFsX3RpbWVzdGFtcChwYWNrZXRfdGltZS50aW1lc3RhbXAp
OworICAgICAgcGFja2V0LnNldF9hcnJpdmFsX3RpbWVzdGFtcChwYWNrZXRfdGltZV91cyk7CiAg
ICAgICBwYWNrZXQuc2V0X3BhY2tldF9zaXplKGxlbik7CiAgICAgICBwYWNrZXRfbG9nZ2VyXy5M
b2dQYWNrZXQocGFja2V0KTsKICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVyL3Rl
c3RfY29udHJvbGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX3Rvb2xzL25ldHdvcmtfdGVzdGVyL3Rlc3RfY29udHJvbGxlci5oCmluZGV4IGNmNjVl
MTc0NTk1NjE2OTk1ZjNmZDM4NzMyMzRlMDkyYjA4ZmMzOGQuLmE2NTI3MmEwOWQxZWI0MGE1ZjBi
OTBmNTM3ZWY3YjhiYjYyMjIyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy9uZXR3b3JrX3Rlc3Rlci90ZXN0X2NvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
dG9vbHMvbmV0d29ya190ZXN0ZXIvdGVzdF9jb250cm9sbGVyLmgKQEAgLTE4LDcgKzE4LDcgQEAK
ICNpbmNsdWRlIDx1dGlsaXR5PgogCiAjaW5jbHVkZSAicDJwL2Jhc2UvYmFzaWNwYWNrZXRzb2Nr
ZXRmYWN0b3J5LmgiCi0jaW5jbHVkZSAicDJwL2Jhc2UvdWRwdHJhbnNwb3J0LmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25z
dHJ1Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvaWdub3JlX3d1bmRlZi5oIgogI2lu
Y2x1ZGUgInJ0Y190b29scy9uZXR3b3JrX3Rlc3Rlci9wYWNrZXRfbG9nZ2VyLmgiCkBAIC02MCw3
ICs2MCw3IEBAIGNsYXNzIFRlc3RDb250cm9sbGVyIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90
czw+IHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSwKICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpTb2Nr
ZXRBZGRyZXNzJiByZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcnRjOjpQ
YWNrZXRUaW1lJiBwYWNrZXRfdGltZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDY0
X3QmIHBhY2tldF90aW1lX3VzKTsKICAgcnRjOjpUaHJlYWRDaGVja2VyIHRlc3RfY29udHJvbGxl
cl90aHJlYWRfY2hlY2tlcl87CiAgIHJ0Yzo6U2VxdWVuY2VkVGFza0NoZWNrZXIgcGFja2V0X3Nl
bmRlcl9jaGVja2VyXzsKICAgcnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnkgc29ja2V0X2Zh
Y3RvcnlfOwpAQCAtNzAsNyArNzAsOCBAQCBjbGFzcyBUZXN0Q29udHJvbGxlciA6IHB1YmxpYyBz
aWdzbG90OjpoYXNfc2xvdHM8PiB7CiAgIGJvb2wgbG9jYWxfdGVzdF9kb25lXyBSVENfR1VBUkRF
RF9CWShsb2NhbF90ZXN0X2RvbmVfbG9ja18pOwogICBib29sIHJlbW90ZV90ZXN0X2RvbmVfOwog
ICBzdGQ6OmFycmF5PGNoYXIsIGtFdGhlcm5ldE10dT4gc2VuZF9kYXRhXzsKLSAgc3RkOjp1bmlx
dWVfcHRyPGNyaWNrZXQ6OlVkcFRyYW5zcG9ydD4gdWRwX3RyYW5zcG9ydF87CisgIHN0ZDo6dW5p
cXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiB1ZHBfc29ja2V0XzsKKyAgcnRjOjpTb2Nr
ZXRBZGRyZXNzIHJlbW90ZV9hZGRyZXNzXzsKICAgc3RkOjp1bmlxdWVfcHRyPFBhY2tldFNlbmRl
cj4gcGFja2V0X3NlbmRlcl87CiAKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXN0
Q29udHJvbGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvdW5wYWNrX2FlY2R1bXAvdW5wYWNrLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL3VucGFja19hZWNkdW1w
L3VucGFjay5jYwppbmRleCA0Yzc1NjA4ZTc0ODhhNjA0MzVmYzExY2YxNDQ4OTY2NmEyOGM2M2Nh
Li4xNDJiNDk3MzBhMzYxNzBiNjU3NjE3NGE1YjczMTIyOGZkNjU3YmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfdG9vbHMvdW5wYWNr
X2FlY2R1bXAvdW5wYWNrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y190b29scy91bnBhY2tfYWVjZHVtcC91bnBhY2suY2MKQEAgLTI5LDI3ICsy
OSwzNCBAQCBSVENfUFVTSF9JR05PUklOR19XVU5ERUYoKQogUlRDX1BPUF9JR05PUklOR19XVU5E
RUYoKQogCiAvLyBUT0RPKGFuZHJldyk6IHVucGFjayBtb3JlIG9mIHRoZSBkYXRhLgotREVGSU5F
X3N0cmluZyhpbnB1dF9maWxlLCAiaW5wdXQiLCAiVGhlIG5hbWUgb2YgdGhlIGlucHV0IHN0cmVh
bSBmaWxlLiIpOwotREVGSU5FX3N0cmluZyhvdXRwdXRfZmlsZSwKLSAgICAgICAgICAgICAgInJl
Zl9vdXQiLAotICAgICAgICAgICAgICAiVGhlIG5hbWUgb2YgdGhlIHJlZmVyZW5jZSBvdXRwdXQg
c3RyZWFtIGZpbGUuIik7Ci1ERUZJTkVfc3RyaW5nKHJldmVyc2VfZmlsZSwKLSAgICAgICAgICAg
ICAgInJldmVyc2UiLAotICAgICAgICAgICAgICAiVGhlIG5hbWUgb2YgdGhlIHJldmVyc2UgaW5w
dXQgc3RyZWFtIGZpbGUuIik7Ci1ERUZJTkVfc3RyaW5nKGRlbGF5X2ZpbGUsICJkZWxheS5pbnQz
MiIsICJUaGUgbmFtZSBvZiB0aGUgZGVsYXkgZmlsZS4iKTsKLURFRklORV9zdHJpbmcoZHJpZnRf
ZmlsZSwgImRyaWZ0LmludDMyIiwgIlRoZSBuYW1lIG9mIHRoZSBkcmlmdCBmaWxlLiIpOwotREVG
SU5FX3N0cmluZyhsZXZlbF9maWxlLCAibGV2ZWwuaW50MzIiLCAiVGhlIG5hbWUgb2YgdGhlIGxl
dmVsIGZpbGUuIik7Ci1ERUZJTkVfc3RyaW5nKGtleXByZXNzX2ZpbGUsICJrZXlwcmVzcy5ib29s
IiwgIlRoZSBuYW1lIG9mIHRoZSBrZXlwcmVzcyBmaWxlLiIpOwotREVGSU5FX3N0cmluZyhjYWxs
b3JkZXJfZmlsZSwKLSAgICAgICAgICAgICAgImNhbGxvcmRlciIsCi0gICAgICAgICAgICAgICJU
aGUgbmFtZSBvZiB0aGUgcmVuZGVyL2NhcHR1cmUgY2FsbCBvcmRlciBmaWxlLiIpOwotREVGSU5F
X3N0cmluZyhzZXR0aW5nc19maWxlLCAic2V0dGluZ3MudHh0IiwgIlRoZSBuYW1lIG9mIHRoZSBz
ZXR0aW5ncyBmaWxlLiIpOwotREVGSU5FX2Jvb2woZnVsbCwgZmFsc2UsICJVbnBhY2sgdGhlIGZ1
bGwgc2V0IG9mIGZpbGVzIChub3JtYWxseSBub3QgbmVlZGVkKS4iKTsKLURFRklORV9ib29sKHJh
dywgZmFsc2UsICJXcml0ZSByYXcgZGF0YSBpbnN0ZWFkIG9mIGEgV0FWIGZpbGUuIik7Ci1ERUZJ
TkVfYm9vbCh0ZXh0LAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiV3JpdGUgbm9u
LWF1ZGlvIGZpbGVzIGFzIHRleHQgZmlsZXMgaW5zdGVhZCBvZiBiaW5hcnkgZmlsZXMuIik7Ci1E
RUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMgbWVzc2FnZS4iKTsKK1dFQlJUQ19E
RUZJTkVfc3RyaW5nKGlucHV0X2ZpbGUsICJpbnB1dCIsICJUaGUgbmFtZSBvZiB0aGUgaW5wdXQg
c3RyZWFtIGZpbGUuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhvdXRwdXRfZmlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICJyZWZfb3V0IiwKKyAgICAgICAgICAgICAgICAgICAgICJUaGUgbmFt
ZSBvZiB0aGUgcmVmZXJlbmNlIG91dHB1dCBzdHJlYW0gZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVf
c3RyaW5nKHJldmVyc2VfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICJyZXZlcnNlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICJUaGUgbmFtZSBvZiB0aGUgcmV2ZXJzZSBpbnB1dCBzdHJlYW0g
ZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGRlbGF5X2ZpbGUsICJkZWxheS5pbnQzMiIs
ICJUaGUgbmFtZSBvZiB0aGUgZGVsYXkgZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGRy
aWZ0X2ZpbGUsICJkcmlmdC5pbnQzMiIsICJUaGUgbmFtZSBvZiB0aGUgZHJpZnQgZmlsZS4iKTsK
K1dFQlJUQ19ERUZJTkVfc3RyaW5nKGxldmVsX2ZpbGUsICJsZXZlbC5pbnQzMiIsICJUaGUgbmFt
ZSBvZiB0aGUgbGV2ZWwgZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGtleXByZXNzX2Zp
bGUsCisgICAgICAgICAgICAgICAgICAgICAia2V5cHJlc3MuYm9vbCIsCisgICAgICAgICAgICAg
ICAgICAgICAiVGhlIG5hbWUgb2YgdGhlIGtleXByZXNzIGZpbGUuIik7CitXRUJSVENfREVGSU5F
X3N0cmluZyhjYWxsb3JkZXJfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICJjYWxsb3JkZXIi
LAorICAgICAgICAgICAgICAgICAgICAgIlRoZSBuYW1lIG9mIHRoZSByZW5kZXIvY2FwdHVyZSBj
YWxsIG9yZGVyIGZpbGUuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhzZXR0aW5nc19maWxlLAor
ICAgICAgICAgICAgICAgICAgICAgInNldHRpbmdzLnR4dCIsCisgICAgICAgICAgICAgICAgICAg
ICAiVGhlIG5hbWUgb2YgdGhlIHNldHRpbmdzIGZpbGUuIik7CitXRUJSVENfREVGSU5FX2Jvb2wo
ZnVsbCwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiVW5w
YWNrIHRoZSBmdWxsIHNldCBvZiBmaWxlcyAobm9ybWFsbHkgbm90IG5lZWRlZCkuIik7CitXRUJS
VENfREVGSU5FX2Jvb2wocmF3LCBmYWxzZSwgIldyaXRlIHJhdyBkYXRhIGluc3RlYWQgb2YgYSBX
QVYgZmlsZS4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICB0ZXh0LAorICAgIGZhbHNlLAor
ICAgICJXcml0ZSBub24tYXVkaW8gZmlsZXMgYXMgdGV4dCBmaWxlcyBpbnN0ZWFkIG9mIGJpbmFy
eSBmaWxlcy4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChoZWxwLCBmYWxzZSwgIlByaW50IHRoaXMg
bWVzc2FnZS4iKTsKIAogI2RlZmluZSBQUklOVF9DT05GSUcoZmllbGRfbmFtZSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgaWYgKG1zZy5oYXNfIyNmaWVsZF9u
YW1lKCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC04
Nyw2ICs5NCwxMCBAQCB2b2lkIFdyaXRlQ2FsbE9yZGVyRGF0YShjb25zdCBib29sIHJlbmRlcl9j
YWxsLAogICBXcml0ZURhdGEoJmNhbGxfdHlwZSwgc2l6ZW9mKGNhbGxfdHlwZSksIGZpbGUsIGZp
bGVuYW1lLmNfc3RyKCkpOwogfQogCitib29sIFdyaXRpbmdDYWxsT3JkZXJGaWxlKCkgeworICBy
ZXR1cm4gRkxBR19mdWxsOworfQorCiB9ICAvLyBuYW1lc3BhY2UKIAogaW50IGRvX21haW4oaW50
IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewpAQCAtMTI1LDcgKzEzNiw5IEBAIGludCBkb19tYWluKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKIAogICBydGM6OlN0cmluZ0J1aWxkZXIgY2FsbG9yZGVy
X3Jhd19uYW1lOwogICBjYWxsb3JkZXJfcmF3X25hbWUgPDwgRkxBR19jYWxsb3JkZXJfZmlsZSA8
PCAiLmNoYXIiOwotICBGSUxFKiBjYWxsb3JkZXJfY2hhcl9maWxlID0gT3BlbkZpbGUoY2FsbG9y
ZGVyX3Jhd19uYW1lLnN0cigpLCAid2IiKTsKKyAgRklMRSogY2FsbG9yZGVyX2NoYXJfZmlsZSA9
IFdyaXRpbmdDYWxsT3JkZXJGaWxlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA/IE9wZW5GaWxlKGNhbGxvcmRlcl9yYXdfbmFtZS5zdHIoKSwgIndiIikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxwdHI7CiAgIEZJTEUqIHNldHRpbmdzX2ZpbGUg
PSBPcGVuRmlsZShGTEFHX3NldHRpbmdzX2ZpbGUsICJ3YiIpOwogCiAgIHdoaWxlIChSZWFkTWVz
c2FnZUZyb21GaWxlKGRlYnVnX2ZpbGUsICZldmVudF9tc2cpKSB7CkBAIC0xNjMsOCArMTc2LDEw
IEBAIGludCBkb19tYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV2ZXJzZV9yYXdfZmlsZS5nZXQoKSk7CiAgICAgICB9CiAgICAgICBpZiAoRkxB
R19mdWxsKSB7Ci0gICAgICAgIFdyaXRlQ2FsbE9yZGVyRGF0YSh0cnVlIC8qIHJlbmRlcl9jYWxs
ICovLCBjYWxsb3JkZXJfY2hhcl9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxB
R19jYWxsb3JkZXJfZmlsZSk7CisgICAgICAgIGlmIChXcml0aW5nQ2FsbE9yZGVyRmlsZSgpKSB7
CisgICAgICAgICAgV3JpdGVDYWxsT3JkZXJEYXRhKHRydWUgLyogcmVuZGVyX2NhbGwgKi8sIGNh
bGxvcmRlcl9jaGFyX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQUdfY2Fs
bG9yZGVyX2ZpbGUpOworICAgICAgICB9CiAgICAgICB9CiAgICAgfSBlbHNlIGlmIChldmVudF9t
c2cudHlwZSgpID09IEV2ZW50OjpTVFJFQU0pIHsKICAgICAgIGZyYW1lX2NvdW50Kys7CkBAIC0y
MjIsOCArMjM3LDEwIEBAIGludCBkb19tYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAg
ICAgIH0KIAogICAgICAgaWYgKEZMQUdfZnVsbCkgewotICAgICAgICBXcml0ZUNhbGxPcmRlckRh
dGEoZmFsc2UgLyogcmVuZGVyX2NhbGwgKi8sIGNhbGxvcmRlcl9jaGFyX2ZpbGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBGTEFHX2NhbGxvcmRlcl9maWxlKTsKKyAgICAgICAgaWYgKFdy
aXRpbmdDYWxsT3JkZXJGaWxlKCkpIHsKKyAgICAgICAgICBXcml0ZUNhbGxPcmRlckRhdGEoZmFs
c2UgLyogcmVuZGVyX2NhbGwgKi8sIGNhbGxvcmRlcl9jaGFyX2ZpbGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZMQUdfY2FsbG9yZGVyX2ZpbGUpOworICAgICAgICB9CiAgICAgICAg
IGlmIChtc2cuaGFzX2RlbGF5KCkpIHsKICAgICAgICAgICBzdGF0aWMgRklMRSogZGVsYXlfZmls
ZSA9IE9wZW5GaWxlKEZMQUdfZGVsYXlfZmlsZSwgIndiIik7CiAgICAgICAgICAgaW50MzJfdCBk
ZWxheSA9IG1zZy5kZWxheSgpOwpAQCAtMzU5LDkgKzM3NiwxMSBAQCBpbnQgZG9fbWFpbihpbnQg
YXJnYywgY2hhciogYXJndltdKSB7CiAgICAgICAgIG91dHB1dF93YXZfZmlsZS5yZXNldChuZXcg
V2F2V3JpdGVyKAogICAgICAgICAgICAgb3V0cHV0X25hbWUuc3RyKCksIG91dHB1dF9zYW1wbGVf
cmF0ZSwgbnVtX291dHB1dF9jaGFubmVscykpOwogCi0gICAgICAgIHJ0Yzo6U3RyaW5nQnVpbGRl
ciBjYWxsb3JkZXJfbmFtZTsKLSAgICAgICAgY2FsbG9yZGVyX25hbWUgPDwgRkxBR19jYWxsb3Jk
ZXJfZmlsZSA8PCBmcmFtZV9jb3VudCA8PCAiLmNoYXIiOwotICAgICAgICBjYWxsb3JkZXJfY2hh
cl9maWxlID0gT3BlbkZpbGUoY2FsbG9yZGVyX25hbWUuc3RyKCksICJ3YiIpOworICAgICAgICBp
ZiAoV3JpdGluZ0NhbGxPcmRlckZpbGUoKSkgeworICAgICAgICAgIHJ0Yzo6U3RyaW5nQnVpbGRl
ciBjYWxsb3JkZXJfbmFtZTsKKyAgICAgICAgICBjYWxsb3JkZXJfbmFtZSA8PCBGTEFHX2NhbGxv
cmRlcl9maWxlIDw8IGZyYW1lX2NvdW50IDw8ICIuY2hhciI7CisgICAgICAgICAgY2FsbG9yZGVy
X2NoYXJfZmlsZSA9IE9wZW5GaWxlKGNhbGxvcmRlcl9uYW1lLnN0cigpLCAid2IiKTsKKyAgICAg
ICAgfQogICAgICAgfQogICAgIH0KICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL3ZpZGVvX2FuYWx5c2lzLnB5IGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX3Rvb2xzL3ZpZGVvX2Fu
YWx5c2lzLnB5CmluZGV4IGE1ZDI2N2IwYjI5YTNhMzA2Y2U2OTZiNWRjZTdiZmE5NjQ4MDhlY2Qu
LjBjMjI2MTdlY2YyMTBiYTc4N2FlOTk4MjVjYjU3NDcwNjMxMzQzNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y190b29scy92aWRlb19h
bmFseXNpcy5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfdG9vbHMvdmlkZW9fYW5hbHlzaXMucHkKQEAgLTc5LDcgKzc5LDcgQEAgZGVmIF9QYXJz
ZUFyZ3MoKToKICAgICAgICAgICAgICAgICAgICAgaGVscD0nUGF0aCB0byB0aGUgZnJhbWUgYW5h
bHl6ZXIgZXhlY3V0YWJsZS4nCiAgICAgICAgICAgICAgICAgICAgICdEZWZhdWx0OiAlZGVmYXVs
dCcpCiAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXp4aW5nX3BhdGgnLCB0eXBlPSdzdHJpbmcnLAot
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdQYXRoIHRvIHRoZSB6ZWJyYSB4aW5nIGJhcmNvZGUg
YW5hbHl6ZXIuJykKKyAgICAgICAgICAgICAgICAgICAgaGVscD0nREVQUkVDQVRFRC4nKQogICBw
YXJzZXIuYWRkX29wdGlvbignLS1yZWZfcmVjX2RpcicsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9
J3JlZicsCiAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1BhdGggdG8gd2hlcmUgcmVmZXJlbmNl
IHJlY29yZGluZ3Mgd2lsbCBiZSBjcmVhdGVkLicKICAgICAgICAgICAgICAgICAgICAgJ0lkZWFs
bHkga2VlcCB0aGUgcmVmIGFuZCB0ZXN0IGRpcmVjdG9yaWVzIG9uIHNlcGFyYXRlJwpAQCAtMTE4
LDggKzExOCw2IEBAIGRlZiBfUGFyc2VBcmdzKCk6CiAgICAgICAgICAgICAgICAgICAgJ2dlbmVy
YXRlZCEnKQogICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3B0aW9ucy5mcmFtZV9hbmFseXplcik6
CiAgICAgcGFyc2VyLndhcm5pbmcoJ0Nhbm5vdCBmaW5kIGZyYW1lX2FuYWx5emVyLCBubyBtZXRy
aWNzIHdpbGwgYmUgZ2VuZXJhdGVkIScpCi0gIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcHRpb25z
Lnp4aW5nX3BhdGgpOgotICAgIHBhcnNlci53YXJuaW5nKCdDYW5ub3QgZmluZCBaZWJyYSBYaW5n
LCBubyBtZXRyaWNzIHdpbGwgYmUgZ2VuZXJhdGVkIScpCiAKICAgcmV0dXJuIG9wdGlvbnMKIApA
QCAtNDQyLDEyICs0NDAsNiBAQCBkZWYgQ29tcGFyZVZpZGVvcyhvcHRpb25zLCBjcm9wcGVkX3Jl
Zl9maWxlLCBjcm9wcGVkX3Rlc3RfZmlsZSk6CiAgICAgJy0tcmVmX3ZpZGVvPSVzJyAlIGNyb3Bw
ZWRfcmVmX2ZpbGUsCiAgICAgJy0tdGVzdF92aWRlbz0lcycgJSBjcm9wcGVkX3Rlc3RfZmlsZSwK
ICAgICAnLS1mcmFtZV9hbmFseXplcj0lcycgJSBvcy5wYXRoLmFic3BhdGgob3B0aW9ucy5mcmFt
ZV9hbmFseXplciksCi0gICAgJy0tenhpbmdfcGF0aD0lcycgJSBvcHRpb25zLnp4aW5nX3BhdGgs
Ci0gICAgJy0tZmZtcGVnX3BhdGg9JXMnICUgb3B0aW9ucy5mZm1wZWcsCi0gICAgJy0tc3RhdHNf
ZmlsZV9yZWY9JXNfc3RhdHMudHh0JyAlCi0gICAgICAgIG9zLnBhdGguam9pbihvcy5wYXRoLmRp
cm5hbWUoY3JvcHBlZF9yZWZfZmlsZSksIGNyb3BwZWRfcmVmX2ZpbGUpLAotICAgICctLXN0YXRz
X2ZpbGVfdGVzdD0lc19zdGF0cy50eHQnICUKLSAgICAgICAgb3MucGF0aC5qb2luKG9zLnBhdGgu
ZGlybmFtZShjcm9wcGVkX3Rlc3RfZmlsZSksIGNyb3BwZWRfdGVzdF9maWxlKSwKICAgICAnLS15
dXZfZnJhbWVfaGVpZ2h0PSVkJyAlIGNyb3BfaGVpZ2h0LAogICAgICctLXl1dl9mcmFtZV93aWR0
aD0lZCcgJSBjcm9wX3dpZHRoCiAgIF0KQEAgLTQ3Miw3ICs0NjQsNiBAQCBkZWYgbWFpbigpOgog
ICAgIC0tYXBwX25hbWUgQXBwUlRDTW9iaWxlIFwKICAgICAtLWZmbXBlZyAuL2ZmbXBlZyAtLXJl
Zl92aWRlb19kZXZpY2U9L2Rldi92aWRlbzAgXAogICAgIC0tdGVzdF92aWRlb19kZXZpY2U9L2Rl
di92aWRlbzEgXAotICAgIC0tenhpbmdfcGF0aCAuL3p4aW5nIFwKICAgICAtLXRlc3RfY3JvcF9w
YXJhbWV0ZXJzICdjcm9wPTk1MDo0MjA6MTMwOjU2JyBcCiAgICAgLS1yZWZfY3JvcF9wYXJhbWV0
ZXJzICdoZmxpcCwgY3JvcD05NTA6NDIwOjEzMDo1NicgXAogICAgIC0tcmVmX3JlY19kaXIgL3Rt
cC9yZWYgXApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL0JVSUxELmduCmluZGV4IGI0ZjE5M2QxZjMyNmE2YTU1MGIzMjExMWE1MGE5OWM0
ZTkwMmI2ODUuLjYwZWE0NzM0ZTk1MjBjMTgxZGI1MWFjZTRhN2UzN2EwMDYyMWUyMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9CVUlM
RC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
QlVJTEQuZ24KQEAgLTgsOCArOCw4IEBACiAKIGltcG9ydCgiLi4vd2VicnRjLmduaSIpCiBpZiAo
aXNfaW9zKSB7Ci0gIGltcG9ydCgiLy9idWlsZC9jb25maWcvaW9zL3J1bGVzLmduaSIpCiAgIGlt
cG9ydCgiLy9idWlsZC9jb25maWcvaW9zL2lvc19zZGsuZ25pIikKKyAgaW1wb3J0KCIvL2J1aWxk
L2NvbmZpZy9pb3MvcnVsZXMuZ25pIikKIH0KIGlmIChpc19tYWMpIHsKICAgaW1wb3J0KCIvL2J1
aWxkL2NvbmZpZy9tYWMvcnVsZXMuZ25pIikKQEAgLTQwLDYgKzQwLDcgQEAgaWYgKGlzX2lvcyB8
fCBpc19tYWMpIHsKICAgICAgICJvYmpjL0ZyYW1ld29yay9IZWFkZXJzIiwgICMgVE9ETyhidWdz
LndlYnJ0Yy5vcmcvOTYyNyk6IFJlbW92ZSB0aGlzLgogICAgIF0KICAgICBjZmxhZ3MgPSBbCisg
ICAgICAiLVdpbXBsaWNpdC1yZXRhaW4tc2VsZiIsCiAgICAgICAiLVdzdHJpY3Qtb3ZlcmZsb3ci
LAogICAgICAgIi1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiLAogICAgIF0KQEAgLTI2Miw2
ICsyNjMsOCBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgICAgICAgICIuLi9zeXN0ZW1f
d3JhcHBlcnM6bWV0cmljcyIsCiAgICAgICAgIF0KIAorICAgICAgICBsaWJzID0gWyAiQXVkaW9U
b29sYm94LmZyYW1ld29yayIgXQorCiAgICAgICAgIGlmIChpc19jbGFuZykgewogICAgICAgICAg
ICMgU3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgQ2hyb21pdW0gQ2xhbmcgcGx1Z2luCiAgICAg
ICAgICAgIyAoYnVncy53ZWJydGMub3JnLzE2MykuCkBAIC0yODcsNiArMjkwLDggQEAgaWYgKGlz
X2lvcyB8fCBpc19tYWMpIHsKIAogICAgICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpjb21tb25f
Y29uZmlnX29iamMiIF0KIAorICAgICAgICBsaWJzID0gWyAiQVZGb3VuZGF0aW9uLmZyYW1ld29y
ayIgXQorCiAgICAgICAgIGRlcHMgPSBbCiAgICAgICAgICAgIjphdWRpb19zZXNzaW9uX29ic2Vy
dmVyIiwKICAgICAgICAgICAiOmJhc2Vfb2JqYyIsCkBAIC03NTYsOCArNzYxLDggQEAgaWYgKGlz
X2lvcyB8fCBpc19tYWMpIHsKICAgICAgIGRlcHMgPSBbCiAgICAgICAgICI6YmFzZV9vYmpjIiwK
ICAgICAgICAgIjpoZWxwZXJzX29iamMiLAorICAgICAgICAiLi4vYXBpL3ZpZGVvOmVuY29kZWRf
aW1hZ2UiLAogICAgICAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwK
LSAgICAgICAgIi4uL2NvbW1vbl92aWRlbyIsCiAgICAgICAgICIuLi9tb2R1bGVzOm1vZHVsZV9h
cGkiLAogICAgICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJm
YWNlIiwKICAgICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKQEAgLTc5Myw2ICs3OTgsOCBA
QCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rp
b24vUlRDQ29uZmlndXJhdGlvbitQcml2YXRlLmgiLAogICAgICAgICAib2JqYy9hcGkvcGVlcmNv
bm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5oIiwKICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25u
ZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24ubW0iLAorICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5l
Y3Rpb24vUlRDQ3J5cHRvT3B0aW9ucy5oIiwKKyAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0
aW9uL1JUQ0NyeXB0b09wdGlvbnMubW0iLAogICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rp
b24vUlRDRGF0YUNoYW5uZWwrUHJpdmF0ZS5oIiwKICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25u
ZWN0aW9uL1JUQ0RhdGFDaGFubmVsLmgiLAogICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rp
b24vUlRDRGF0YUNoYW5uZWwubW0iLApAQCAtOTAzLDYgKzkxMCw3IEBAIGlmIChpc19pb3MgfHwg
aXNfbWFjKSB7CiAgICAgICAgICI6dmlkZW9yZW5kZXJlcmFkYXB0ZXJfb2JqYyIsCiAgICAgICAg
ICI6dmlkZW9zb3VyY2Vfb2JqYyIsCiAgICAgICAgICI6dmlkZW90b29sYm94X29iamMiLAorICAg
ICAgICAiLi4vYXBpOmNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5IiwKICAgICAgICAgIi4u
L2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAgICAgIi4uL2FwaS9hdWRp
b19jb2RlY3M6YXVkaW9fY29kZWNzX2FwaSIsCiAgICAgICAgICIuLi9hcGkvYXVkaW9fY29kZWNz
OmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5IiwKQEAgLTkxMyw5ICs5MjEsOSBAQCBpZiAo
aXNfaW9zIHx8IGlzX21hYykgewogICAgICAgICAiLi4vbWVkaWE6cnRjX21lZGlhX2Jhc2UiLAog
ICAgICAgICAiLi4vbW9kdWxlczptb2R1bGVfYXBpIiwKICAgICAgICAgIi4uL21vZHVsZXMvYXVk
aW9fZGV2aWNlOmF1ZGlvX2RldmljZV9hcGkiLAorICAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nOmFwaSIsCiAgICAgICAgICIuLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVk
aW9fcHJvY2Vzc2luZyIsCiAgICAgICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19j
b2RlY19pbnRlcmZhY2UiLAotICAgICAgICAiLi4vcGM6Y3JlYXRlX3BjX2ZhY3RvcnkiLAogICAg
ICAgICAiLi4vcGM6cGVlcmNvbm5lY3Rpb24iLAogICAgICAgICAiLi4vcnRjX2Jhc2U6Y2hlY2tz
IiwKICAgICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlIiwKQEAgLTEwMzEsNiArMTAzOSw3IEBA
IGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAgICAgICAib2JqYy91bml0dGVzdHMvUlRD
UGVlckNvbm5lY3Rpb25GYWN0b3J5X3hjdGVzdC5tIiwKICAgICAgICAgICAgICJvYmpjL3VuaXR0
ZXN0cy9mcmFtZV9idWZmZXJfaGVscGVycy5oIiwKICAgICAgICAgICAgICJvYmpjL3VuaXR0ZXN0
cy9mcmFtZV9idWZmZXJfaGVscGVycy5tbSIsCisgICAgICAgICAgICAib2JqYy91bml0dGVzdHMv
bmFsdV9yZXdyaXRlcl94Y3Rlc3QubW0iLAogICAgICAgICAgIF0KIAogICAgICAgICAgICMgVE9E
TyhwZXRlcmhhbnNwZXJzKTogUmVlbmFibGUgdGhlc2UgdGVzdHMgb24gc2ltdWxhdG9yLgpAQCAt
MTA1Myw2ICsxMDYyLDcgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMpIHsKICAgICAgICAgICAgICI6
bmF0aXZlX2FwaV9hdWRpb19kZXZpY2VfbW9kdWxlIiwKICAgICAgICAgICAgICI6bmF0aXZlX3Zp
ZGVvIiwKICAgICAgICAgICAgICI6cGVlcmNvbm5lY3Rpb25mYWN0b3J5X2Jhc2Vfb2JqYyIsCisg
ICAgICAgICAgICAiOnZpZGVvX3Rvb2xib3hfY2MiLAogICAgICAgICAgICAgIjp2aWRlb2NhcHR1
cmVfb2JqYyIsCiAgICAgICAgICAgICAiOnZpZGVvY29kZWNfb2JqYyIsCiAgICAgICAgICAgICAi
OnZpZGVvZnJhbWVidWZmZXJfb2JqYyIsCkBAIC0xMDYzLDggKzEwNzMsOCBAQCBpZiAoaXNfaW9z
IHx8IGlzX21hYykgewogICAgICAgICAgICAgIi4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKICAg
ICAgICAgICAgICIuLi9tZWRpYTpydGNfbWVkaWFfdGVzdHNfdXRpbHMiLAogICAgICAgICAgICAg
Ii4uL21vZHVsZXM6bW9kdWxlX2FwaSIsCisgICAgICAgICAgICAiLi4vcnRjX2Jhc2U6Z3VuaXRf
aGVscGVycyIsCiAgICAgICAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2UiLAotICAgICAgICAg
ICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICAgICAgICIuLi9z
eXN0ZW1fd3JhcHBlcnM6c3lzdGVtX3dyYXBwZXJzIiwKICAgICAgICAgICAgICIvL3RoaXJkX3Bh
cnR5L2xpYnl1diIsCiAgICAgICAgICAgXQpAQCAtMTA5OCw3ICsxMTA4LDcgQEAgaWYgKGlzX2lv
cyB8fCBpc19tYWMpIHsKICAgICAgICAgcnRjX2lvc194Y3Rlc3RfdGVzdCgic2RrX3VuaXR0ZXN0
cyIpIHsKICAgICAgICAgICBpbmZvX3BsaXN0ID0gIi8vdGVzdC9pb3MvSW5mby5wbGlzdCIKICAg
ICAgICAgICBzb3VyY2VzID0gWwotICAgICAgICAgICAgIm9iamMvdW5pdHRlc3RzL21haW4ubSIs
CisgICAgICAgICAgICAib2JqYy91bml0dGVzdHMvbWFpbi5tbSIsCiAgICAgICAgICAgXQogCiAg
ICAgICAgICAgX2J1bmRsZV9pZF9zdWZmaXggPSBpb3NfZ2VuZXJpY190ZXN0X2J1bmRsZV9pZF9z
dWZmaXgKQEAgLTExMDcsNiArMTExNyw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAg
ICAgICAgICAiOnBlZXJjb25uZWN0aW9uZmFjdG9yeV9iYXNlX29iamMiLAogICAgICAgICAgICAg
IjpzZGtfdW5pdHRlc3RzX2J1bmRsZV9kYXRhIiwKICAgICAgICAgICAgICI6c2RrX3VuaXR0ZXN0
c19zb3VyY2VzIiwKKyAgICAgICAgICAgICIvL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICAg
ICBdCiAgICAgICAgICAgbGRmbGFncyA9IFsgIi1hbGxfbG9hZCIgXQogICAgICAgICB9CkBAIC0x
MTE2LDcgKzExMjcsNyBAQCBpZiAoaXNfaW9zIHx8IGlzX21hYykgewogICAgICAgICAgIGluZm9f
cGxpc3QgPSAiLy90ZXN0L2lvcy9JbmZvLnBsaXN0IgogICAgICAgICAgIHNvdXJjZXMgPSBbCiAg
ICAgICAgICAgICAib2JqYy91bml0dGVzdHMvUlRDRG9Ob3RQdXRDUGx1c1BsdXNJbkZyYW1ld29y
a0hlYWRlcnNfeGN0ZXN0Lm0iLAotICAgICAgICAgICAgIm9iamMvdW5pdHRlc3RzL21haW4ubSIs
CisgICAgICAgICAgICAib2JqYy91bml0dGVzdHMvbWFpbi5tbSIsCiAgICAgICAgICAgXQogCiAg
ICAgICAgICAgX2J1bmRsZV9pZF9zdWZmaXggPSBpb3NfZ2VuZXJpY190ZXN0X2J1bmRsZV9pZF9z
dWZmaXgKQEAgLTExMjQsNiArMTEzNSw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAg
ICAgICAgZGVwcyA9IFsKICAgICAgICAgICAgICI6ZnJhbWV3b3JrX29iamMrbGluayIsCiAgICAg
ICAgICAgICAiOmlvc19mcmFtZXdvcmtfYnVuZGxlIiwKKyAgICAgICAgICAgICIvL3Rlc3Q6dGVz
dF9zdXBwb3J0IiwKICAgICAgICAgICBdCiAgICAgICAgIH0KICAgICAgIH0KQEAgLTExNzAsNiAr
MTE4Miw3IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAgICAgIjp2aWRlb2ZyYW1l
YnVmZmVyX29iamMiLAogICAgICAgICAgICI6dmlkZW9zb3VyY2Vfb2JqYyIsCiAgICAgICAgICAg
Ijp2aWRlb3Rvb2xib3hfb2JqYyIsCisgICAgICAgICAgIi4uL2FwaTpsaWJqaW5nbGVfcGVlcmNv
bm5lY3Rpb25fYXBpIiwKICAgICAgICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczphdWRpb19jb2Rl
Y3NfYXBpIiwKICAgICAgICAgICAiLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2Rl
Y29kZXJfZmFjdG9yeSIsCiAgICAgICAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9h
dWRpb19lbmNvZGVyX2ZhY3RvcnkiLApAQCAtMTE3NywxMSArMTE5MCwxMiBAQCBpZiAoaXNfaW9z
IHx8IGlzX21hYykgewogICAgICAgICAgICIuLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCiAgICAg
ICAgICAgIi4uL21vZHVsZXM6bW9kdWxlX2FwaSIsCiAgICAgICAgICAgIi4uL21vZHVsZXMvYXVk
aW9fZGV2aWNlOmF1ZGlvX2RldmljZV9hcGkiLAorICAgICAgICAgICIuLi9tb2R1bGVzL2F1ZGlv
X3Byb2Nlc3Npbmc6YXBpIiwKICAgICAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
OmF1ZGlvX3Byb2Nlc3NpbmciLAogICAgICAgICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2
aWRlb19jb2RlY19pbnRlcmZhY2UiLAotICAgICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV90
ZXN0c191dGlscyIsCisgICAgICAgICAgIi4uL3J0Y19iYXNlOmd1bml0X2hlbHBlcnMiLAogICAg
ICAgICAgICIuLi9ydGNfYmFzZS9zeXN0ZW06dW51c2VkIiwKLSAgICAgICAgICAiLy90ZXN0OnRl
c3Rfc3VwcG9ydCIsCisgICAgICAgICAgIi4uL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICAg
ICAiLy90aGlyZF9wYXJ0eS9vY21vY2siLAogICAgICAgICBdCiAKQEAgLTEyNjksNiArMTI4Myw3
IEBAIGlmIChpc19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25u
ZWN0aW9uL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oIiwKICAgICAgICAgICAib2JqYy9hcGkvcGVl
cmNvbm5lY3Rpb24vUlRDVHJhY2luZy5oIiwKICAgICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5l
Y3Rpb24vUlRDQ2VydGlmaWNhdGUuaCIsCisgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0
aW9uL1JUQ0NyeXB0b09wdGlvbnMuaCIsCiAgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0
aW9uL1JUQ1ZpZGVvU291cmNlLmgiLAogICAgICAgICAgICJvYmpjL2FwaS9wZWVyY29ubmVjdGlv
bi9SVENWaWRlb1RyYWNrLmgiLAogICAgICAgICAgICJvYmpjL2FwaS92aWRlb19jb2RlYy9SVENW
aWRlb0NvZGVjQ29uc3RhbnRzLmgiLApAQCAtMTM1Nyw2ICsxMzcyLDcgQEAgaWYgKGlzX2lvcyB8
fCBpc19tYWMpIHsKICAgICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQXVkaW9U
cmFjay5oIiwKICAgICAgICAgICAib2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ2VydGlmaWNh
dGUuaCIsCiAgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRp
b24uaCIsCisgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlv
bnMuaCIsCiAgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0RhdGFDaGFubmVs
LmgiLAogICAgICAgICAgICJvYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENEYXRhQ2hhbm5lbENv
bmZpZ3VyYXRpb24uaCIsCiAgICAgICAgICAgIm9iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0R0
bWZTZW5kZXIuaCIsCkBAIC0xNTkwLDcgKzE2MDYsMTAgQEAgaWYgKGlzX2lvcyB8fCBpc19tYWMp
IHsKICAgICB9CiAKICAgICBydGNfc3RhdGljX2xpYnJhcnkoInZpZGVvX3Rvb2xib3hfY2MiKSB7
Ci0gICAgICB2aXNpYmlsaXR5ID0gWyAiOnZpZGVvdG9vbGJveF9vYmpjIiBdCisgICAgICB2aXNp
YmlsaXR5ID0gWworICAgICAgICAiOnZpZGVvdG9vbGJveF9vYmpjIiwKKyAgICAgICAgIjpzZGtf
dW5pdHRlc3RzX3NvdXJjZXMiLAorICAgICAgXQogICAgICAgc291cmNlcyA9IFsKICAgICAgICAg
Im9iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmNjIiwKICAgICAgICAgIm9iamMv
Y29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmgiLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRp
ZXMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdFV0aWxpdGllcy5tbQppbmRleCAyZDk1OGI3NmRiZTc4MzE3Mjc5YjQ3MGY0ZWZi
M2ZjYWQ4YjgzYmQ5Li42NWVlZmEzNmYyZGZiMjA2OWVjY2E3Y2FhNDkyMjRiMjYyOTU1YmJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQpAQCAtMjksOCAr
MjksOSBAQAogI2ltcG9ydCAiV2ViUlRDL1JUQ1ZpZGVvQ29kZWNIMjY0LmgiCiAKICNpbmNsdWRl
ICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJ5dXYv
aW5jbHVkZS9saWJ5dXYvY29udmVydF9mcm9tLmgiCiAjaW5jbHVkZSAibmF0aXZlL3NyYy9vYmpj
X2ZyYW1lX2J1ZmZlci5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYnl1di9pbmNsdWRlL2xp
Ynl1di9jb252ZXJ0X2Zyb20uaCIKKyNpbmNsdWRlICJ3ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgi
CiAjaW5jbHVkZSAiRnJhbWV3b3JrL0hlYWRlcnMvV2ViUlRDL1JUQ1ZpZGVvQ29kZWNGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiRnJhbWV3b3JrL0hlYWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZXdvcmsvSGVhZGVycy9XZWJSVEMvUlRDVmlkZW9GcmFtZUJ1ZmZlci5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9CVUlMRC5nbgppbmRleCA2M2M1YmQyMGMxMDQzNmIwMDAwMzJi
MTAyNWVmNjkzNTk3YmFiODZjLi5lZGM1ZGEzMGI3OWRhNzYzZGJjNzQzMDRkZjM5YWNiNzk3Y2Nm
MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9CVUlMRC5nbgpAQCAtNyw5ICs3LDkgQEAKICMgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CiAKIGlmIChpc19hbmRyb2lkKSB7Ci0gIGltcG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCiAgIGlt
cG9ydCgiLy9idWlsZC9jb25maWcvYW5kcm9pZC9jb25maWcuZ25pIikKICAgaW1wb3J0KCIvL2J1
aWxkL2NvbmZpZy9hbmRyb2lkL3J1bGVzLmduaSIpCisgIGltcG9ydCgiLi4vLi4vd2VicnRjLmdu
aSIpCiAKICAgZ3JvdXAoImFuZHJvaWQiKSB7CiAgICAgaWYgKCFidWlsZF93aXRoX2Nocm9taXVt
ICYmIGlzX2FuZHJvaWQpIHsKQEAgLTM4LDYgKzM4LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAg
ICBkZXBzID0gWwogICAgICAgIjphdWRpb19hcGlfamF2YSIsCiAgICAgICAiOmJhc2VfamF2YSIs
CisgICAgICAiOmJ1aWx0aW5fYXVkaW9fY29kZWNzX2phdmEiLAogICAgICAgIjpjYW1lcmFfamF2
YSIsCiAgICAgICAiOmRlZmF1bHRfdmlkZW9fY29kZWNfZmFjdG9yeV9qYXZhIiwKICAgICAgICI6
ZmlsZXZpZGVvX2phdmEiLApAQCAtMTEwLDIzICsxMTEsMjIgQEAgaWYgKGlzX2FuZHJvaWQpIHsK
ICAgICBwdWJsaWNfZGVwcyA9IFsgICMgbm8tcHJlc3VibWl0LWNoZWNrIFRPRE8od2VicnRjOjg2
MDMpCiAgICAgICAiOmF1ZGlvX2puaSIsCiAgICAgICAiOmJhc2Vfam5pIiwKKyAgICAgICI6YnVp
bHRpbl9hdWRpb19jb2RlY3Nfam5pIiwKKyAgICAgICI6ZGVmYXVsdF92aWRlb19jb2RlY19mYWN0
b3J5X2puaSIsCiAgICAgICAiOmphdmFfYXVkaW9fZGV2aWNlX21vZHVsZV9qbmkiLAorICAgICAg
IjpsZWdhY3lfaHdjb2RlY3Nfam5pIiwKICAgICAgICI6bWVkaWFfam5pIiwKICAgICAgICI6cGVl
cmNvbm5lY3Rpb25fam5pIiwKICAgICAgICI6dmlkZW9fam5pIiwKLSAgICAgICIuLi8uLi9wYzpj
cmVhdGVfcGNfZmFjdG9yeSIsCisgICAgICAiLi4vLi4vYXBpOmNyZWF0ZV9wZWVyY29ubmVjdGlv
bl9mYWN0b3J5IiwKICAgICBdCiAgIH0KIAogICBydGNfc3RhdGljX2xpYnJhcnkoImxpYmppbmds
ZV9wZWVyY29ubmVjdGlvbl9tZXRyaWNzX2RlZmF1bHRfam5pIikgewogICAgIHZpc2liaWxpdHkg
PSBbICIqIiBdCi0KLSAgICBhbGxvd19wb2lzb24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3Mi
IF0gICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvNzkyNSk6IFJlbW92ZS4KLQogICAgIHNvdXJjZXMg
PSBbCiAgICAgICAic3JjL2puaS9hbmRyb2lkbWV0cmljcy5jYyIsCiAgICAgXQotCiAgICAgZGVw
cyA9IFsKICAgICAgICI6YmFzZV9qbmkiLAogICAgICAgIjpnZW5lcmF0ZWRfbWV0cmljc19qbmki
LApAQCAtMjA0LDcgKzIwNCwxMSBAQCBpZiAoaXNfYW5kcm9pZCkgewogICB9CiAKICAgcnRjX2Fu
ZHJvaWRfbGlicmFyeSgiYXVkaW9fYXBpX2phdmEiKSB7Ci0gICAgamF2YV9maWxlcyA9IFsgImFw
aS9vcmcvd2VicnRjL2F1ZGlvL0F1ZGlvRGV2aWNlTW9kdWxlLmphdmEiIF0KKyAgICBqYXZhX2Zp
bGVzID0gWworICAgICAgImFwaS9vcmcvd2VicnRjL2F1ZGlvL0F1ZGlvRGV2aWNlTW9kdWxlLmph
dmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL0F1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5Lmph
dmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL0F1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5Lmph
dmEiLAorICAgIF0KIAogICAgIGRlcHMgPSBbCiAgICAgICAiOmJhc2VfamF2YSIsCkBAIC0yNTAs
NiArMjU0LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9WaWRl
b0ZyYW1lRHJhd2VyLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL1l1dkNvbnZlcnRlci5q
YXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9ZdXZIZWxwZXIuamF2YSIsCisgICAgICAiYXBp
L29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25lci5qYXZhIiwKICAgICAgICJzcmMvamF2YS9vcmcv
d2VicnRjL0VnbEJhc2UxMC5qYXZhIiwKICAgICAgICJzcmMvamF2YS9vcmcvd2VicnRjL0VnbEJh
c2UxNC5qYXZhIiwKICAgICAgICJzcmMvamF2YS9vcmcvd2VicnRjL0dsR2VuZXJpY0RyYXdlci5q
YXZhIiwKQEAgLTI3Niw5ICsyODEsMTEgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICJhcGkv
b3JnL3dlYnJ0Yy9BdWRpb1NvdXJjZS5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9BdWRp
b1RyYWNrLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0NhbGxTZXNzaW9uRmlsZVJvdGF0
aW5nTG9nU2luay5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9DcnlwdG9PcHRpb25zLmph
dmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0RhdGFDaGFubmVsLmphdmEiLAogICAgICAgImFw
aS9vcmcvd2VicnRjL0R0bWZTZW5kZXIuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvRmVj
Q29udHJvbGxlckZhY3RvcnlGYWN0b3J5SW50ZXJmYWNlLmphdmEiLAorICAgICAgImFwaS9vcmcv
d2VicnRjL01lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkuamF2YSIsCiAgICAgICAiYXBpL29y
Zy93ZWJydGMvRnJhbWVEZWNyeXB0b3IuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvRnJh
bWVFbmNyeXB0b3IuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvSWNlQ2FuZGlkYXRlLmph
dmEiLApAQCAtMjk1LDYgKzMwMiw3IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgICAiYXBpL29y
Zy93ZWJydGMvUGVlckNvbm5lY3Rpb24uamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvUGVl
ckNvbm5lY3Rpb25EZXBlbmRlbmNpZXMuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvUGVl
ckNvbm5lY3Rpb25GYWN0b3J5LmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL1J0Y0NlcnRp
ZmljYXRlUGVtLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL1JUQ1N0YXRzLmphdmEiLAog
ICAgICAgImFwaS9vcmcvd2VicnRjL1JUQ1N0YXRzQ29sbGVjdG9yQ2FsbGJhY2suamF2YSIsCiAg
ICAgICAiYXBpL29yZy93ZWJydGMvUlRDU3RhdHNSZXBvcnQuamF2YSIsCkBAIC0zMTcsNiArMzI1
LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBkZXBzID0gWwogICAgICAgIjphdWRpb19hcGlf
amF2YSIsCiAgICAgICAiOmJhc2VfamF2YSIsCisgICAgICAiOmJ1aWx0aW5fYXVkaW9fY29kZWNz
X2phdmEiLAogICAgICAgIjpkZWZhdWx0X3ZpZGVvX2NvZGVjX2ZhY3RvcnlfamF2YSIsCiAgICAg
ICAiOmxvZ2dpbmdfamF2YSIsCiAgICAgICAiOnN3Y29kZWNzX2phdmEiLApAQCAtNDI2LDYgKzQz
NSwxNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgIF0KICAgfQogCisgIHJ0Y19hbmRyb2lkX2xp
YnJhcnkoImJ1aWx0aW5fYXVkaW9fY29kZWNzX2phdmEiKSB7CisgICAgamF2YV9maWxlcyA9IFsK
KyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3Rvcnku
amF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlG
YWN0b3J5LmphdmEiLAorICAgIF0KKworICAgIGRlcHMgPSBbCisgICAgICAiOmF1ZGlvX2FwaV9q
YXZhIiwKKyAgICBdCisgIH0KKwogICBydGNfYW5kcm9pZF9saWJyYXJ5KCJzY3JlZW5jYXB0dXJl
cl9qYXZhIikgewogICAgIGphdmFfZmlsZXMgPSBbICJhcGkvb3JnL3dlYnJ0Yy9TY3JlZW5DYXB0
dXJlckFuZHJvaWQuamF2YSIgXQogCkBAIC00NDksMTggKzQ2OSw0NCBAQCBpZiAoaXNfYW5kcm9p
ZCkgewogICAgIF0KICAgfQogCisgIHJ0Y19hbmRyb2lkX2xpYnJhcnkoImxpYnZweF92cDhfamF2
YSIpIHsKKyAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICAgIGphdmFfZmlsZXMgPSBbCisgICAg
ICAiYXBpL29yZy93ZWJydGMvTGlidnB4VnA4RGVjb2Rlci5qYXZhIiwKKyAgICAgICJhcGkvb3Jn
L3dlYnJ0Yy9MaWJ2cHhWcDhFbmNvZGVyLmphdmEiLAorICAgIF0KKyAgICBkZXBzID0gWworICAg
ICAgIjpiYXNlX2phdmEiLAorICAgICAgIjp2aWRlb19hcGlfamF2YSIsCisgICAgICAiOnZpZGVv
X2phdmEiLAorICAgICAgIi8vcnRjX2Jhc2U6YmFzZV9qYXZhIiwKKyAgICBdCisgIH0KKworICBy
dGNfYW5kcm9pZF9saWJyYXJ5KCJsaWJ2cHhfdnA5X2phdmEiKSB7CisgICAgdmlzaWJpbGl0eSA9
IFsgIioiIF0KKyAgICBqYXZhX2ZpbGVzID0gWworICAgICAgImFwaS9vcmcvd2VicnRjL0xpYnZw
eFZwOURlY29kZXIuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvTGlidnB4VnA5RW5jb2Rl
ci5qYXZhIiwKKyAgICBdCisgICAgZGVwcyA9IFsKKyAgICAgICI6YmFzZV9qYXZhIiwKKyAgICAg
ICI6dmlkZW9fYXBpX2phdmEiLAorICAgICAgIjp2aWRlb19qYXZhIiwKKyAgICAgICIvL3J0Y19i
YXNlOmJhc2VfamF2YSIsCisgICAgXQorICB9CisKICAgcnRjX2FuZHJvaWRfbGlicmFyeSgic3dj
b2RlY3NfamF2YSIpIHsKICAgICBqYXZhX2ZpbGVzID0gWwogICAgICAgImFwaS9vcmcvd2VicnRj
L1NvZnR3YXJlVmlkZW9EZWNvZGVyRmFjdG9yeS5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0
Yy9Tb2Z0d2FyZVZpZGVvRW5jb2RlckZhY3RvcnkuamF2YSIsCi0gICAgICAic3JjL2phdmEvb3Jn
L3dlYnJ0Yy9WUDhFbmNvZGVyLmphdmEiLAotICAgICAgInNyYy9qYXZhL29yZy93ZWJydGMvVlA4
RGVjb2Rlci5qYXZhIiwKLSAgICAgICJzcmMvamF2YS9vcmcvd2VicnRjL1ZQOUVuY29kZXIuamF2
YSIsCi0gICAgICAic3JjL2phdmEvb3JnL3dlYnJ0Yy9WUDlEZWNvZGVyLmphdmEiLAogICAgIF0K
IAogICAgIGRlcHMgPSBbCiAgICAgICAiOmJhc2VfamF2YSIsCisgICAgICAiOmxpYnZweF92cDhf
amF2YSIsCisgICAgICAiOmxpYnZweF92cDlfamF2YSIsCiAgICAgICAiOnZpZGVvX2FwaV9qYXZh
IiwKICAgICAgICI6dmlkZW9famF2YSIsCiAgICAgICAiLy9ydGNfYmFzZTpiYXNlX2phdmEiLApA
QCAtNTExLDIzICs1NTcsNjYgQEAgaWYgKGlzX2FuZHJvaWQpIHsKIAogICAgIGRlcHMgPSBbCiAg
ICAgICAiOmJhc2Vfam5pIiwKKyAgICAgICI6YnVpbHRpbl9hdWRpb19jb2RlY3Nfam5pIiwKICAg
ICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
IiwKICAgICAgICIuLi8uLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9m
YWN0b3J5IiwKKyAgICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAg
ICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZyIsCiAg
ICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgIF0KICAgfQogCi0g
IHJ0Y19zdGF0aWNfbGlicmFyeSgidmlkZW9fam5pIikgewotICAgIHNvdXJjZXMgPSBbXQorICBy
dGNfc3RhdGljX2xpYnJhcnkoImJ1aWx0aW5fYXVkaW9fY29kZWNzX2puaSIpIHsKKyAgICBzb3Vy
Y2VzID0gWworICAgICAgInNyYy9qbmkvYnVpbHRpbmF1ZGlvZGVjb2RlcmZhY3RvcnlmYWN0b3J5
LmNjIiwKKyAgICAgICJzcmMvam5pL2J1aWx0aW5hdWRpb2VuY29kZXJmYWN0b3J5ZmFjdG9yeS5j
YyIsCisgICAgXQorCiAgICAgZGVwcyA9IFsKLSAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6
ZmllbGRfdHJpYWwiLAorICAgICAgIjpiYXNlX2puaSIsCisgICAgICAiOmdlbmVyYXRlZF9idWls
dGluX2F1ZGlvX2NvZGVjc19qbmkiLAorICAgICAgIjpuYXRpdmVfYXBpX2puaSIsCisgICAgICAi
Li4vLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeSIsCisg
ICAgICAiLi4vLi4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9y
eSIsCisgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAogICAgIF0KKyAg
fQogCi0gICAgc291cmNlcyArPSBbCisgICMgQ29ycmVzcG9uZHMgdG8gTWVkaWFDb2RlY1ZpZGVv
RW5jb2Rlci9EZWNvZGVyIGluIEphdmEuCisgIHJ0Y19zdGF0aWNfbGlicmFyeSgibGVnYWN5X2h3
Y29kZWNzX2puaSIpIHsKKyAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorICAgIGFsbG93X3BvaXNv
biA9IFsgInNvZnR3YXJlX3ZpZGVvX2NvZGVjcyIgXQorICAgIHNvdXJjZXMgPSBbCiAgICAgICAi
c3JjL2puaS9hbmRyb2lkbWVkaWFjb2RlY2NvbW1vbi5oIiwKICAgICAgICJzcmMvam5pL2FuZHJv
aWRtZWRpYWRlY29kZXIuY2MiLAogICAgICAgInNyYy9qbmkvYW5kcm9pZG1lZGlhZW5jb2Rlci5j
YyIsCisgICAgXQorICAgIGRlcHMgPSBbCisgICAgICAiOmJhc2Vfam5pIiwKKyAgICAgICI6ZGVm
YXVsdF92aWRlb19jb2RlY19mYWN0b3J5X2puaSIsCisgICAgICAiOmdlbmVyYXRlZF92aWRlb19q
bmkiLAorICAgICAgIjpuYXRpdmVfYXBpX2puaSIsCisgICAgICAiOnZpZGVvX2puaSIsCisgICAg
ICAiOnZpZGVvZnJhbWVfam5pIiwKKyAgICAgICIuLi8uLjp3ZWJydGNfY29tbW9uIiwKKyAgICAg
ICIuLi8uLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2NvZGVjc19hcGkiLAorICAgICAgIi4uLy4u
L2NvbW1vbl92aWRlbzpjb21tb25fdmlkZW8iLAorICAgICAgIi4uLy4uL21lZGlhOnJ0Y19pbnRl
cm5hbF92aWRlb19jb2RlY3MiLAorICAgICAgIi4uLy4uL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwK
KyAgICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZhY2Ui
LAorICAgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOnZpZGVvX2NvZGluZ191dGlsaXR5
IiwKKyAgICAgICIuLi8uLi9ydGNfYmFzZTpjaGVja3MiLAorICAgICAgIi4uLy4uL3J0Y19iYXNl
OnJ0Y19iYXNlIiwKKyAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZV9hcGkiLAor
ICAgICAgIi4uLy4uL3J0Y19iYXNlOnNlcXVlbmNlZF90YXNrX2NoZWNrZXIiLAorICAgICAgIi4u
Ly4uL3J0Y19iYXNlOndlYWtfcHRyIiwKKyAgICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6Zmll
bGRfdHJpYWwiLAorICAgICAgIi8vdGhpcmRfcGFydHkvbGlieXV2IiwKKyAgICBdCisgIH0KKwor
ICBydGNfc3RhdGljX2xpYnJhcnkoInZpZGVvX2puaSIpIHsKKyAgICBzb3VyY2VzID0gWwogICAg
ICAgInNyYy9qbmkvYW5kcm9pZHZpZGVvdHJhY2tzb3VyY2UuY2MiLAogICAgICAgInNyYy9qbmkv
YW5kcm9pZHZpZGVvdHJhY2tzb3VyY2UuaCIsCiAgICAgICAic3JjL2puaS9lbmNvZGVkaW1hZ2Uu
Y2MiLApAQCAtNTQwLDYgKzYyOSw3IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgICAic3JjL2pu
aS9udjEyYnVmZmVyLmNjIiwKICAgICAgICJzcmMvam5pL252MjFidWZmZXIuY2MiLAogICAgICAg
InNyYy9qbmkvcGMvdmlkZW8uY2MiLAorICAgICAgInNyYy9qbmkvdGltZXN0YW1wYWxpZ25lci5j
YyIsCiAgICAgICAic3JjL2puaS92aWRlb2NvZGVjaW5mby5jYyIsCiAgICAgICAic3JjL2puaS92
aWRlb2NvZGVjaW5mby5oIiwKICAgICAgICJzcmMvam5pL3ZpZGVvY29kZWNzdGF0dXMuY2MiLApA
QCAtNTYxLDM2ICs2NTEsMjUgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICJzcmMvam5pL3l1
dmhlbHBlci5jYyIsCiAgICAgXQogCi0gICAgZGVwcyArPSBbCisgICAgZGVwcyA9IFsKICAgICAg
ICI6YmFzZV9qbmkiLAogICAgICAgIjpnZW5lcmF0ZWRfdmlkZW9fam5pIiwKICAgICAgICI6bmF0
aXZlX2FwaV9qbmkiLAogICAgICAgIjp2aWRlb2ZyYW1lX2puaSIsCi0gICAgICAiOnZwOF9qbmki
LCAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy83OTI1KTogUmVtb3ZlLgotICAgICAgIjp2cDlfam5p
IiwgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvNzkyNSk6IFJlbW92ZS4KICAgICAgICIuLi8uLjp3
ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi8uLi9hcGk6bGliamluZ2xlX3BlZXJjb25uZWN0aW9u
X2FwaSIsCisgICAgICAiLi4vLi4vYXBpL3ZpZGVvOmVuY29kZWRfaW1hZ2UiLAogICAgICAgIi4u
Ly4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCi0gICAgICAiLi4vLi4vYXBpL3ZpZGVvX2NvZGVj
czpidWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeSIsCi0gICAgICAiLi4vLi4vYXBpL3ZpZGVv
X2NvZGVjczpidWlsdGluX3ZpZGVvX2VuY29kZXJfZmFjdG9yeSIsCiAgICAgICAiLi4vLi4vYXBp
L3ZpZGVvX2NvZGVjczpydGNfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlcnMiLAogICAgICAgIi4u
Ly4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgICAiLi4vLi4vY29t
bW9uX3ZpZGVvOmNvbW1vbl92aWRlbyIsCi0gICAgICAiLi4vLi4vbWVkaWE6cnRjX2F1ZGlvX3Zp
ZGVvIiwKLSAgICAgICIuLi8uLi9tZWRpYTpydGNfaDI2NF9wcm9maWxlX2lkIiwKLSAgICAgICIu
Li8uLi9tZWRpYTpydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIiwKICAgICAgICIuLi8uLi9tZWRp
YTpydGNfbWVkaWFfYmFzZSIsCi0gICAgICAiLi4vLi4vbW9kdWxlcy91dGlsaXR5OnV0aWxpdHki
LAogICAgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOmNvZGVjX2dsb2JhbHNfaGVhZGVy
cyIsCiAgICAgICAiLi4vLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJm
YWNlIiwKICAgICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RpbmdfdXRp
bGl0eSIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAgICIuLi8uLi9ydGNf
YmFzZTpydGNfYmFzZSIsCi0gICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAotICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKLSAgICAgICIuLi8uLi9y
dGNfYmFzZTpzZXF1ZW5jZWRfdGFza19jaGVja2VyIiwKLSAgICAgICIuLi8uLi9ydGNfYmFzZTp3
ZWFrX3B0ciIsCi0gICAgICAiLi4vLi4vcnRjX2Jhc2UvbWVtb3J5OmFsaWduZWRfbWFsbG9jIiwK
KyAgICAgICIuLi8uLi9ydGNfYmFzZTpydGNfdGFza19xdWV1ZV9hcGkiLAogICAgICAgIi8vdGhp
cmRfcGFydHkvbGlieXV2IiwKICAgICBdCiAgIH0KQEAgLTYwNiw2ICs2ODUsOCBAQCBpZiAoaXNf
YW5kcm9pZCkgewogICAgICAgInNyYy9qbmkvcGMvYW5kcm9pZG5ldHdvcmttb25pdG9yLmgiLAog
ICAgICAgInNyYy9qbmkvcGMvYXVkaW90cmFjay5jYyIsCiAgICAgICAic3JjL2puaS9wYy9jYWxs
c2Vzc2lvbmZpbGVyb3RhdGluZ2xvZ3NpbmsuY2MiLAorICAgICAgInNyYy9qbmkvcGMvY3J5cHRv
b3B0aW9ucy5jYyIsCisgICAgICAic3JjL2puaS9wYy9jcnlwdG9vcHRpb25zLmgiLAogICAgICAg
InNyYy9qbmkvcGMvZGF0YWNoYW5uZWwuY2MiLAogICAgICAgInNyYy9qbmkvcGMvZGF0YWNoYW5u
ZWwuaCIsCiAgICAgICAic3JjL2puaS9wYy9kdG1mc2VuZGVyLmNjIiwKQEAgLTYyNCw2ICs3MDUs
OCBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgInNyYy9qbmkvcGMvcGVlcmNvbm5lY3Rpb24u
aCIsCiAgICAgICAic3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MiLAogICAgICAg
InNyYy9qbmkvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmgiLAorICAgICAgInNyYy9qbmkvcGMv
cnRjY2VydGlmaWNhdGUuY2MiLAorICAgICAgInNyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuaCIs
CiAgICAgICAic3JjL2puaS9wYy9ydGNzdGF0c2NvbGxlY3RvcmNhbGxiYWNrd3JhcHBlci5jYyIs
CiAgICAgICAic3JjL2puaS9wYy9ydGNzdGF0c2NvbGxlY3RvcmNhbGxiYWNrd3JhcHBlci5oIiwK
ICAgICAgICJzcmMvam5pL3BjL3J0cHBhcmFtZXRlcnMuY2MiLApAQCAtNjY5LDYgKzc1Miw3IEBA
IGlmIChpc19hbmRyb2lkKSB7CiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6c3RyaW5ndXRpbHMiLAog
ICAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVyczpmaWVsZF90cmlhbCIsCiAgICAgICAiLy90aGly
ZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fi
c2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCiAgICAgXQogICB9CiAKQEAgLTY4NSw2ICs3
NjksNTAgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBdCiAgIH0KIAorICBydGNfc3RhdGljX2xp
YnJhcnkoImRlZmF1bHRfdmlkZW9fY29kZWNfZmFjdG9yeV9qbmkiKSB7CisgICAgdmlzaWJpbGl0
eSA9IFsgIioiIF0KKyAgICBhbGxvd19wb2lzb24gPSBbICJzb2Z0d2FyZV92aWRlb19jb2RlY3Mi
IF0KKyAgICBkZXBzID0gWworICAgICAgIjpzd2NvZGVjc19qbmkiLAorICAgICAgIjp2aWRlb19q
bmkiLAorICAgIF0KKyAgfQorCisgIHJ0Y19zdGF0aWNfbGlicmFyeSgibGlidnB4X3ZwOF9qbmki
KSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgICBhbGxvd19wb2lzb24gPSBbICJzb2Z0
d2FyZV92aWRlb19jb2RlY3MiIF0KKyAgICBzb3VyY2VzID0gWworICAgICAgInNyYy9qbmkvdnA4
Y29kZWMuY2MiLAorICAgIF0KKyAgICBkZXBzID0gWworICAgICAgIjpiYXNlX2puaSIsCisgICAg
ICAiOmdlbmVyYXRlZF9saWJ2cHhfdnA4X2puaSIsCisgICAgICAiOnZpZGVvX2puaSIsCisgICAg
ICAiLi4vLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6d2VicnRjX3ZwOCIsCisgICAgXQorICB9CisK
KyAgcnRjX3N0YXRpY19saWJyYXJ5KCJsaWJ2cHhfdnA5X2puaSIpIHsKKyAgICB2aXNpYmlsaXR5
ID0gWyAiKiIgXQorICAgIGFsbG93X3BvaXNvbiA9IFsgInNvZnR3YXJlX3ZpZGVvX2NvZGVjcyIg
XQorICAgIHNvdXJjZXMgPSBbCisgICAgICAic3JjL2puaS92cDljb2RlYy5jYyIsCisgICAgXQor
ICAgIGRlcHMgPSBbCisgICAgICAiOmJhc2Vfam5pIiwKKyAgICAgICI6Z2VuZXJhdGVkX2xpYnZw
eF92cDlfam5pIiwKKyAgICAgICI6dmlkZW9fam5pIiwKKyAgICAgICIuLi8uLi9tb2R1bGVzL3Zp
ZGVvX2NvZGluZzp3ZWJydGNfdnA5IiwKKyAgICBdCisgIH0KKworICBydGNfc3RhdGljX2xpYnJh
cnkoInN3Y29kZWNzX2puaSIpIHsKKyAgICBkZXBzID0gWworICAgICAgIjpsaWJ2cHhfdnA4X2pu
aSIsCisgICAgICAiOmxpYnZweF92cDlfam5pIiwKKyAgICBdCisgIH0KKwogICAjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCiAgICMgTmF0aXZlIEFQSSB0YXJnZXRzICMKICAgIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwpAQCAtNzY5LDEwICs4OTcsNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAjIG9iamVj
dHMuCiAgIHJ0Y19zdGF0aWNfbGlicmFyeSgibmF0aXZlX2FwaV9jb2RlY3MiKSB7CiAgICAgdmlz
aWJpbGl0eSA9IFsgIioiIF0KLSAgICBhbGxvd19wb2lzb24gPSBbCi0gICAgICAiYXVkaW9fY29k
ZWNzIiwgICMgVE9ETyhidWdzLndlYnJ0Yy5vcmcvODM5Nik6IFJlbW92ZS4KLSAgICAgICJzb2Z0
d2FyZV92aWRlb19jb2RlY3MiLCAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy83OTI1KTogUmVtb3Zl
LgotICAgIF0KKyAgICBhbGxvd19wb2lzb24gPSBbICJhdWRpb19jb2RlY3MiIF0gICMgVE9ETyhi
dWdzLndlYnJ0Yy5vcmcvODM5Nik6IFJlbW92ZS4KICAgICBzb3VyY2VzID0gWwogICAgICAgIm5h
dGl2ZV9hcGkvY29kZWNzL3dyYXBwZXIuY2MiLAogICAgICAgIm5hdGl2ZV9hcGkvY29kZWNzL3dy
YXBwZXIuaCIsCkBAIC03OTIsMTQgKzkxNywxMCBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAjIEFQ
SSBmb3IgY3JlYXRpbmcgSmF2YSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSBDKysgZXF1aXZh
bGVudHMuCiAgIHJ0Y19zdGF0aWNfbGlicmFyeSgibmF0aXZlX2FwaV9wZWVyY29ubmVjdGlvbiIp
IHsKICAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQotCi0gICAgYWxsb3dfcG9pc29uID0gWyAic29m
dHdhcmVfdmlkZW9fY29kZWNzIiBdICAjIFRPRE8oYnVncy53ZWJydGMub3JnLzc5MjUpOiBSZW1v
dmUuCi0KICAgICBzb3VyY2VzID0gWwogICAgICAgIm5hdGl2ZV9hcGkvcGVlcmNvbm5lY3Rpb24v
cGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjIiwKICAgICAgICJuYXRpdmVfYXBpL3BlZXJjb25uZWN0
aW9uL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5oIiwKICAgICBdCi0KICAgICBkZXBzID0gWwogICAg
ICAgIjpiYXNlX2puaSIsCiAgICAgICAiOnBlZXJjb25uZWN0aW9uX2puaSIsCkBAIC04MTMsMTAg
KzkzNCw3IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICMgdmlkZW8gaW50ZXJmYWNlcyBmcm9tIHRo
ZWlyIEphdmEgZXF1aXZhbGVudHMuCiAgIHJ0Y19zdGF0aWNfbGlicmFyeSgibmF0aXZlX2FwaV92
aWRlbyIpIHsKICAgICB2aXNpYmlsaXR5ID0gWyAiKiIgXQotICAgIGFsbG93X3BvaXNvbiA9IFsK
LSAgICAgICJhdWRpb19jb2RlY3MiLCAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84Mzk2KTogUmVt
b3ZlLgotICAgICAgInNvZnR3YXJlX3ZpZGVvX2NvZGVjcyIsICAjIFRPRE8oYnVncy53ZWJydGMu
b3JnLzc5MjUpOiBSZW1vdmUuCi0gICAgXQorICAgIGFsbG93X3BvaXNvbiA9IFsgImF1ZGlvX2Nv
ZGVjcyIgXSAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84Mzk2KTogUmVtb3ZlLgogICAgIHNvdXJj
ZXMgPSBbCiAgICAgICAibmF0aXZlX2FwaS92aWRlby92aWRlb3NvdXJjZS5jYyIsCiAgICAgICAi
bmF0aXZlX2FwaS92aWRlby92aWRlb3NvdXJjZS5oIiwKQEAgLTgyOSw2ICs5NDcsNyBAQCBpZiAo
aXNfYW5kcm9pZCkgewogICAgICAgIjp2aWRlb2ZyYW1lX2puaSIsCiAgICAgICAiLy9hcGk6bGli
amluZ2xlX3BlZXJjb25uZWN0aW9uX2FwaSIsCiAgICAgICAiLy9hcGkvdmlkZW86dmlkZW9fZnJh
bWUiLAorICAgICAgIi8vcnRjX2Jhc2U6cnRjX2Jhc2UiLAogICAgICAgIi8vcnRjX2Jhc2U6cnRj
X2Jhc2VfYXBwcm92ZWQiLAogICAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21l
bW9yeSIsCiAgICAgXQpAQCAtODkxLDYgKzEwMTAsNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAg
ICAgIi4uLy4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAogICAgICAgIi4uLy4uL21lZGlh
OnJ0Y19hdWRpb192aWRlbyIsCiAgICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6YXVk
aW9fZGV2aWNlIiwKKyAgICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwK
ICAgICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZyIs
CiAgICAgXQogICB9CkBAIC05MjksMzAgKzEwNDksNiBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAg
IF0KICAgfQogCi0gIHJ0Y19zdGF0aWNfbGlicmFyeSgidnA4X2puaSIpIHsKLSAgICBzb3VyY2Vz
ID0gWwotICAgICAgInNyYy9qbmkvdnA4Y29kZWMuY2MiLAotICAgIF0KLQotICAgIGRlcHMgPSBb
Ci0gICAgICAiOmJhc2Vfam5pIiwKLSAgICAgICI6Z2VuZXJhdGVkX3ZwOF9qbmkiLAotICAgICAg
Ii4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nOndlYnJ0Y192cDgiLAotICAgIF0KLSAgfQotCi0g
IHJ0Y19zdGF0aWNfbGlicmFyeSgidnA5X2puaSIpIHsKLSAgICBzb3VyY2VzID0gWwotICAgICAg
InNyYy9qbmkvdnA5Y29kZWMuY2MiLAotICAgIF0KLQotICAgIGRlcHMgPSBbCi0gICAgICAiOmJh
c2Vfam5pIiwKLSAgICAgICI6Z2VuZXJhdGVkX3ZwOV9qbmkiLAotICAgICAgIi4uLy4uL21vZHVs
ZXMvdmlkZW9fY29kaW5nOndlYnJ0Y192cDkiLAotICAgIF0KLSAgfQotCiAgIHJ0Y19zdGF0aWNf
bGlicmFyeSgibG9nZ2luZ19qbmkiKSB7CiAgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KICAgICBz
b3VyY2VzID0gWwpAQCAtOTgxLDYgKzEwNzcsNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAg
IjpiYXNlX2puaSIsCiAgICAgICAiOmdlbmVyYXRlZF9hdWRpb19kZXZpY2VfbW9kdWxlX2Jhc2Vf
am5pIiwKICAgICAgICI6bmF0aXZlX2FwaV9qbmkiLAorICAgICAgIi4uLy4uL21vZHVsZXMvYXVk
aW9fZGV2aWNlOmF1ZGlvX2RldmljZV9hcGkiLAogICAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9f
ZGV2aWNlOmF1ZGlvX2RldmljZV9idWZmZXIiLAogICAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNr
cyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLApAQCAtMTExNCw2
ICsxMjExLDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9KYXZh
STQyMEJ1ZmZlci5qYXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9NZWRpYUNvZGVjVmlkZW9E
ZWNvZGVyLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL01lZGlhQ29kZWNWaWRlb0VuY29k
ZXIuamF2YSIsCisgICAgICAiYXBpL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25lci5qYXZhIiwK
ICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9WaWRlb0NvZGVjSW5mby5qYXZhIiwKICAgICAgICJhcGkv
b3JnL3dlYnJ0Yy9WaWRlb0NvZGVjU3RhdHVzLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRj
L1ZpZGVvRGVjb2Rlci5qYXZhIiwKQEAgLTExNDAsMTAgKzEyMzgsMTAgQEAgaWYgKGlzX2FuZHJv
aWQpIHsKICAgICBqbmlfZ2VuZXJhdG9yX2luY2x1ZGUgPSAiLy9zZGsvYW5kcm9pZC9zcmMvam5p
L2puaV9nZW5lcmF0b3JfaGVscGVyLmgiCiAgIH0KIAotICBnZW5lcmF0ZV9qbmkoImdlbmVyYXRl
ZF92cDhfam5pIikgeworICBnZW5lcmF0ZV9qbmkoImdlbmVyYXRlZF9saWJ2cHhfdnA4X2puaSIp
IHsKICAgICBzb3VyY2VzID0gWwotICAgICAgInNyYy9qYXZhL29yZy93ZWJydGMvVlA4RGVjb2Rl
ci5qYXZhIiwKLSAgICAgICJzcmMvamF2YS9vcmcvd2VicnRjL1ZQOEVuY29kZXIuamF2YSIsCisg
ICAgICAiYXBpL29yZy93ZWJydGMvTGlidnB4VnA4RGVjb2Rlci5qYXZhIiwKKyAgICAgICJhcGkv
b3JnL3dlYnJ0Yy9MaWJ2cHhWcDhFbmNvZGVyLmphdmEiLAogICAgIF0KIAogICAgIGpuaV9wYWNr
YWdlID0gIiIKQEAgLTExNTEsMTAgKzEyNDksMTAgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICBq
bmlfZ2VuZXJhdG9yX2luY2x1ZGUgPSAiLy9zZGsvYW5kcm9pZC9zcmMvam5pL2puaV9nZW5lcmF0
b3JfaGVscGVyLmgiCiAgIH0KIAotICBnZW5lcmF0ZV9qbmkoImdlbmVyYXRlZF92cDlfam5pIikg
eworICBnZW5lcmF0ZV9qbmkoImdlbmVyYXRlZF9saWJ2cHhfdnA5X2puaSIpIHsKICAgICBzb3Vy
Y2VzID0gWwotICAgICAgInNyYy9qYXZhL29yZy93ZWJydGMvVlA5RGVjb2Rlci5qYXZhIiwKLSAg
ICAgICJzcmMvamF2YS9vcmcvd2VicnRjL1ZQOUVuY29kZXIuamF2YSIsCisgICAgICAiYXBpL29y
Zy93ZWJydGMvTGlidnB4VnA5RGVjb2Rlci5qYXZhIiwKKyAgICAgICJhcGkvb3JnL3dlYnJ0Yy9M
aWJ2cHhWcDlFbmNvZGVyLmphdmEiLAogICAgIF0KIAogICAgIGpuaV9wYWNrYWdlID0gIiIKQEAg
LTExNjYsNiArMTI2NCw3IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgc291cmNlcyA9IFsKICAg
ICAgICJhcGkvb3JnL3dlYnJ0Yy9BdWRpb1RyYWNrLmphdmEiLAogICAgICAgImFwaS9vcmcvd2Vi
cnRjL0NhbGxTZXNzaW9uRmlsZVJvdGF0aW5nTG9nU2luay5qYXZhIiwKKyAgICAgICJhcGkvb3Jn
L3dlYnJ0Yy9DcnlwdG9PcHRpb25zLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0RhdGFD
aGFubmVsLmphdmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL0R0bWZTZW5kZXIuamF2YSIsCiAg
ICAgICAiYXBpL29yZy93ZWJydGMvSWNlQ2FuZGlkYXRlLmphdmEiLApAQCAtMTE3OCw2ICsxMjc3
LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9SVENTdGF0cy5q
YXZhIiwKICAgICAgICJhcGkvb3JnL3dlYnJ0Yy9SVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrLmph
dmEiLAogICAgICAgImFwaS9vcmcvd2VicnRjL1JUQ1N0YXRzUmVwb3J0LmphdmEiLAorICAgICAg
ImFwaS9vcmcvd2VicnRjL1J0Y0NlcnRpZmljYXRlUGVtLmphdmEiLAogICAgICAgImFwaS9vcmcv
d2VicnRjL1J0cFBhcmFtZXRlcnMuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvUnRwUmVj
ZWl2ZXIuamF2YSIsCiAgICAgICAiYXBpL29yZy93ZWJydGMvUnRwU2VuZGVyLmphdmEiLApAQCAt
MTIwMyw2ICsxMzAzLDE2IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgam5pX2dlbmVyYXRvcl9p
bmNsdWRlID0gIi8vc2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfZ2VuZXJhdG9yX2hlbHBlci5oIgog
ICB9CiAKKyAgZ2VuZXJhdGVfam5pKCJnZW5lcmF0ZWRfYnVpbHRpbl9hdWRpb19jb2RlY3Nfam5p
IikgeworICAgIHNvdXJjZXMgPSBbCisgICAgICAiYXBpL29yZy93ZWJydGMvQnVpbHRpbkF1ZGlv
RGVjb2RlckZhY3RvcnlGYWN0b3J5LmphdmEiLAorICAgICAgImFwaS9vcmcvd2VicnRjL0J1aWx0
aW5BdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeS5qYXZhIiwKKyAgICBdCisgICAgam5pX3BhY2th
Z2UgPSAiIgorICAgIG5hbWVzcGFjZSA9ICJ3ZWJydGM6OmpuaSIKKyAgICBqbmlfZ2VuZXJhdG9y
X2luY2x1ZGUgPSAiLy9zZGsvYW5kcm9pZC9zcmMvam5pL2puaV9nZW5lcmF0b3JfaGVscGVyLmgi
CisgIH0KKwogICAjIEdlbmVyYXRlZCBKTkkgZm9yIG5hdGl2ZSBBUEkgdGFyZ2V0cwogCiAgIGdl
bmVyYXRlX2puaSgiZ2VuZXJhdGVkX25hdGl2ZV9hcGlfam5pIikgewpAQCAtMTI1NSw2ICsxMzY1
LDcgQEAgaWYgKGlzX2FuZHJvaWQpIHsKIAogICAgICAgamF2YV9maWxlcyA9IFsKICAgICAgICAg
Imluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0FuZHJvaWRWaWRlb0RlY29kZXJJ
bnN0cnVtZW50YXRpb25UZXN0LmphdmEiLAorICAgICAgICAiaW5zdHJ1bWVudGF0aW9udGVzdHMv
c3JjL29yZy93ZWJydGMvQnVpbHRpbkF1ZGlvQ29kZWNzRmFjdG9yeUZhY3RvcnlUZXN0LmphdmEi
LAogICAgICAgICAiaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMUNh
cHR1cmVyVXNpbmdCeXRlQnVmZmVyVGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlv
bnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYTFDYXB0dXJlclVzaW5nVGV4dHVyZVRlc3QuamF2
YSIsCiAgICAgICAgICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmEy
Q2FwdHVyZXJUZXN0LmphdmEiLApAQCAtMTI3MCwxMSArMTM4MSwxMyBAQCBpZiAoaXNfYW5kcm9p
ZCkgewogICAgICAgICAiaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvUGVlckNv
bm5lY3Rpb25GYWN0b3J5VGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3Rz
L3NyYy9vcmcvd2VicnRjL1BlZXJDb25uZWN0aW9uVGVzdC5qYXZhIiwKICAgICAgICAgImluc3Ry
dW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1JlbmRlcmVyQ29tbW9uVGVzdC5qYXZhIiwK
KyAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1J0Y0NlcnRpZmlj
YXRlUGVtVGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcv
d2VicnRjL1N1cmZhY2VUZXh0dXJlSGVscGVyVGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1l
bnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1N1cmZhY2VWaWV3UmVuZGVyZXJPbk1lYXN1cmVU
ZXN0LmphdmEiLAogICAgICAgICAiaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMv
VGVzdENvbnN0YW50cy5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9v
cmcvd2VicnRjL1ZpZGVvRmlsZVJlbmRlcmVyVGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1l
bnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1ZpZGVvRnJhbWVCdWZmZXJUZXN0LmphdmEiLAor
ICAgICAgICAiaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvVGltZXN0YW1wQWxp
Z25lclRlc3QuamF2YSIsCiAgICAgICAgICJpbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dl
YnJ0Yy9XZWJSdGNKbmlCb290VGVzdC5qYXZhIiwKICAgICAgICAgImluc3RydW1lbnRhdGlvbnRl
c3RzL3NyYy9vcmcvd2VicnRjL1l1dkhlbHBlclRlc3QuamF2YSIsCiAgICAgICBdCkBAIC0xMjk0
LDYgKzE0MDcsNyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgICAiLy9ydGNfYmFzZTpiYXNl
X2phdmEiLAogICAgICAgICAiLy90aGlyZF9wYXJ0eS9hbmRyb2lkX3N1cHBvcnRfdGVzdF9ydW5u
ZXI6cnVsZXNfamF2YSIsCiAgICAgICAgICIvL3RoaXJkX3BhcnR5L2FuZHJvaWRfc3VwcG9ydF90
ZXN0X3J1bm5lcjpydW5uZXJfamF2YSIsCisgICAgICAgICIvL3RoaXJkX3BhcnR5L2dvb2dsZS10
cnV0aDpnb29nbGVfdHJ1dGhfamF2YSIsCiAgICAgICAgICIvL3RoaXJkX3BhcnR5L2p1bml0IiwK
ICAgICAgIF0KIApAQCAtMTM3MSwyMyArMTQ4NSwyMyBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAg
ICAgIjpuYXRpdmVfYXBpX3ZpZGVvIiwKICAgICAgICI6b3BlbnNsZXNfYXVkaW9fZGV2aWNlX21v
ZHVsZSIsCiAgICAgICAiOnZpZGVvX2puaSIsCi0gICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJz
OnN5c3RlbV93cmFwcGVycyIsCi0gICAgICAiLy9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVk
aW9fZGVjb2Rlcl9mYWN0b3J5IiwKLSAgICAgICIvL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9h
dWRpb19lbmNvZGVyX2ZhY3RvcnkiLAotICAgICAgIi8vYXBpL3ZpZGVvOnZpZGVvX2ZyYW1lIiwK
LSAgICAgICIvL21lZGlhOnJ0Y19hdWRpb192aWRlbyIsCi0gICAgICAiLy9tZWRpYTpydGNfaW50
ZXJuYWxfdmlkZW9fY29kZWNzIiwKLSAgICAgICIvL21lZGlhOnJ0Y19tZWRpYV9iYXNlIiwKLSAg
ICAgICIvL21vZHVsZXMvYXVkaW9fZGV2aWNlOmF1ZGlvX2RldmljZSIsCi0gICAgICAiLy9tb2R1
bGVzL2F1ZGlvX2RldmljZTptb2NrX2F1ZGlvX2RldmljZSIsCi0gICAgICAiLy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3Npbmc6YXVkaW9fcHJvY2Vzc2luZyIsCi0gICAgICAiLy9tb2R1bGVzL3V0aWxp
dHk6dXRpbGl0eSIsCi0gICAgICAiLy9wYzpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24iLAotICAg
ICAgIi8vcnRjX2Jhc2U6Y2hlY2tzIiwKLSAgICAgICIvL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJv
dmVkIiwKLSAgICAgICIvL3Rlc3Q6ZmlsZXV0aWxzIiwKLSAgICAgICIvL3Rlc3Q6dGVzdF9zdXBw
b3J0IiwKLSAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAorICAgICAgIi4uLy4uL2FwaS9hdWRpb19j
b2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3RvcnkiLAorICAgICAgIi4uLy4uL2FwaS9h
dWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkiLAorICAgICAgIi4uLy4u
L2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCisgICAgICAiLi4vLi4vbWVkaWE6cnRjX2F1ZGlvX3Zp
ZGVvIiwKKyAgICAgICIuLi8uLi9tZWRpYTpydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIiwKKyAg
ICAgICIuLi8uLi9tZWRpYTpydGNfbWVkaWFfYmFzZSIsCisgICAgICAiLi4vLi4vbW9kdWxlcy9h
dWRpb19kZXZpY2U6YXVkaW9fZGV2aWNlIiwKKyAgICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX2Rl
dmljZTptb2NrX2F1ZGlvX2RldmljZSIsCisgICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9j
ZXNzaW5nOmFwaSIsCisgICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nOmF1ZGlv
X3Byb2Nlc3NpbmciLAorICAgICAgIi4uLy4uL21vZHVsZXMvdXRpbGl0eTp1dGlsaXR5IiwKKyAg
ICAgICIuLi8uLi9wYzpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb24iLAorICAgICAgIi4uLy4uL3J0
Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAorICAgICAgIi4uLy4uL3Rlc3Q6ZmlsZXV0aWxzIiwKKyAgICAgICIuLi8uLi90ZXN0OnRlc3Rf
c3VwcG9ydCIsCisgICAgICAiLi4vLi4vdGVzdGluZy9ndGVzdCIsCiAgICAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgICBdCiAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9v
cmcvd2VicnRjL0F1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5LmphdmEgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9B
dWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkM2UyNjI4OTZjYWI4
NDQ0MWU0YTdkMmI3ZjgzOGZiNTljM2FiODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0
Yy9BdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKK3BhY2thZ2Ugb3JnLndlYnJ0YzsKKworLyoqCisgKiBJbXBsZW1lbnRh
dGlvbnMgb2YgdGhpcyBpbnRlcmZhY2UgY2FuIGNyZWF0ZSBhIG5hdGl2ZSB7QGNvZGUgd2VicnRj
OjpBdWRpb0RlY29kZXJGYWN0b3J5fS4KKyAqLworcHVibGljIGludGVyZmFjZSBBdWRpb0RlY29k
ZXJGYWN0b3J5RmFjdG9yeSB7CisgIC8qKgorICAgKiBSZXR1cm5zIGEgcG9pbnRlciB0byBhIHtA
Y29kZSB3ZWJydGM6OkF1ZGlvRGVjb2RlckZhY3Rvcnl9LiBUaGUgY2FsbGVyIHRha2VzIG93bmVy
c2hpcC4KKyAgICovCisgIGxvbmcgY3JlYXRlTmF0aXZlQXVkaW9EZWNvZGVyRmFjdG9yeSgpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkuamF2
YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L2FwaS9vcmcvd2VicnRjL0F1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LmphdmEKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODE0YjcxYWJhMWYwNjBkNjZlZTBjM2EzMDRmODRjNDNlYjM5ZTY1MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL2FwaS9vcmcvd2VicnRjL0F1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LmphdmEKQEAgLTAs
MCArMSwyMSBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0
aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4g
YmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9q
ZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworcGFja2FnZSBvcmcud2VicnRjOworCisv
KioKKyAqIEltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGludGVyZmFjZSBjYW4gY3JlYXRlIGEgbmF0
aXZlIHtAY29kZSB3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnl9LgorICovCitwdWJsaWMgaW50
ZXJmYWNlIEF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5IHsKKyAgLyoqCisgICAqIFJldHVybnMg
YSBwb2ludGVyIHRvIGEge0Bjb2RlIHdlYnJ0Yzo6QXVkaW9FbmNvZGVyRmFjdG9yeX0uIFRoZSBj
YWxsZXIgdGFrZXMgb3duZXJzaGlwLgorICAgKi8KKyAgbG9uZyBjcmVhdGVOYXRpdmVBdWRpb0Vu
Y29kZXJGYWN0b3J5KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9E
ZWNvZGVyRmFjdG9yeUZhY3RvcnkuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0J1aWx0aW5BdWRpb0RlY29k
ZXJGYWN0b3J5RmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlYmMxOWYyNWRjZWVhM2JmYTRlZmE4
ODExNTg1MDQ0NTllYmVmMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGlu
QXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDIzIEBACisvKgorICog
IENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRo
ZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAq
ICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2Ug
dHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisKKy8qKgorICogQ3JlYXRlcyBhIG5h
dGl2ZSB7QGNvZGUgd2VicnRjOjpBdWRpb0RlY29kZXJGYWN0b3J5fSB3aXRoIHRoZSBidWlsdGlu
IGF1ZGlvIGRlY29kZXJzLgorICovCitwdWJsaWMgY2xhc3MgQnVpbHRpbkF1ZGlvRGVjb2RlckZh
Y3RvcnlGYWN0b3J5IGltcGxlbWVudHMgQXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkgeworICBA
T3ZlcnJpZGUKKyAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZlQXVkaW9EZWNvZGVyRmFjdG9yeSgp
IHsKKyAgICByZXR1cm4gbmF0aXZlQ3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKTsK
KyAgfQorCisgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUJ1aWx0aW5B
dWRpb0RlY29kZXJGYWN0b3J5KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9CdWlsdGlu
QXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0J1aWx0aW5BdWRp
b0VuY29kZXJGYWN0b3J5RmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ODRkNGMzYjk4ZDZjZDdk
M2MyYmI1ZDVhNGEwMWI5M2IzMGMyZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9C
dWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDIzIEBACisv
KgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRp
b25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICog
IGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBt
YXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisKKy8qKgorICogVGhpcyBj
bGFzcyBjcmVhdGVzIGEgbmF0aXZlIHtAY29kZSB3ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnl9
IHdpdGggdGhlIGJ1aWx0aW4gYXVkaW8gZW5jb2RlcnMuCisgKi8KK3B1YmxpYyBjbGFzcyBCdWls
dGluQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkgaW1wbGVtZW50cyBBdWRpb0VuY29kZXJGYWN0
b3J5RmFjdG9yeSB7CisgIEBPdmVycmlkZQorICBwdWJsaWMgbG9uZyBjcmVhdGVOYXRpdmVBdWRp
b0VuY29kZXJGYWN0b3J5KCkgeworICAgIHJldHVybiBuYXRpdmVDcmVhdGVCdWlsdGluQXVkaW9F
bmNvZGVyRmFjdG9yeSgpOworICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0
aXZlQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9v
cmcvd2VicnRjL0NyeXB0b09wdGlvbnMuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0NyeXB0b09wdGlvbnMu
amF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43N2I5NTUyYWFkODdhNzE4ZDYyMTI4ODEwODYxOGRkZjg1NjMxZTkw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvQ3J5cHRvT3B0aW9ucy5qYXZhCkBAIC0w
LDAgKzEsMTQ1IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisK
Ky8qKgorICogQ3J5cHRvT3B0aW9ucyBkZWZpbmVzIGFkdmFuY2VkIGNyeXB0b2dyYXBoaWMgc2V0
dGluZ3MgZm9yIG5hdGl2ZSBXZWJSVEMuCisgKiBUaGVzZSBzZXR0aW5ncyBtdXN0IGJlIHBhc3Nl
ZCBpbnRvIFJUQ0NvbmZpZ3VyYXRpb24uIFdlYlJUQyBpcyBzZWN1ciBieQorICogZGVmYXVsdCBh
bmQgeW91IHNob3VsZCBub3QgbmVlZCB0byBzZXQgYW55IG9mIHRoZXNlIG9wdGlvbnMgdW5sZXNz
IHlvdSBhcmUKKyAqIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBhbiBhZGRpdGlvbmFsIGNyeXB0
byBmZWF0dXJlIHN1Y2ggYXMgQUVTX0dDTQorICogc3VwcG9ydC4gVGhpcyBjbGFzcyBpcyB0aGUg
SmF2YSBiaW5kaW5nIG9mIG5hdGl2ZSBhcGkvY3J5cHRvL2NyeXB0b29wdGlvbnMuaAorICovCitw
dWJsaWMgZmluYWwgY2xhc3MgQ3J5cHRvT3B0aW9ucyB7CisgIC8qKgorICAgKiBTUlRQIFJlbGF0
ZWQgUGVlciBDb25uZWN0aW9uIE9wdGlvbnMuCisgICAqLworICBwdWJsaWMgZmluYWwgY2xhc3Mg
U3J0cCB7CisgICAgLyoqCisgICAgICogRW5hYmxlIEdDTSBjcnlwdG8gc3VpdGVzIGZyb20gUkZD
IDc3MTQgZm9yIFNSVFAuIEdDTSB3aWxsIG9ubHkgYmUgdXNlZAorICAgICAqIGlmIGJvdGggc2lk
ZXMgZW5hYmxlIGl0CisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGVuYWJsZUdj
bUNyeXB0b1N1aXRlczsKKyAgICAvKioKKyAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIChwb3Rl
bnRpYWxseSBpbnNlY3VyZSkgY3J5cHRvIGNpcGhlcgorICAgICAqIFNSVFBfQUVTMTI4X0NNX1NI
QTFfMzIgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2lwaGVycwor
ICAgICAqIGR1cmluZyBuZWdvdGlhdGlvbi4gSXQgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYm90aCBw
ZWVycyBzdXBwb3J0IGl0IGFuZCBubworICAgICAqIG90aGVyIGNpcGhlcnMgZ2V0IHByZWZlcnJl
ZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gZW5hYmxlQWVzMTI4U2hhMV8z
MkNyeXB0b0NpcGhlcjsKKyAgICAvKioKKyAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgZW5jcnlwdGVk
IFJUUCBoZWFkZXIgZXh0ZW5zaW9ucyBhcyBkZWZpbmVkIGluIFJGQyA2OTA0CisgICAgICogd2ls
bCBiZSBuZWdvdGlhdGVkLiBUaGV5IHdpbGwgb25seSBiZSB1c2VkIGlmIGJvdGggcGVlcnMgc3Vw
cG9ydCB0aGVtLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBlbmFibGVFbmNy
eXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zOworCisgICAgcHJpdmF0ZSBTcnRwKGJvb2xlYW4gZW5h
YmxlR2NtQ3J5cHRvU3VpdGVzLCBib29sZWFuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBo
ZXIsCisgICAgICAgIGJvb2xlYW4gZW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucykg
eworICAgICAgdGhpcy5lbmFibGVHY21DcnlwdG9TdWl0ZXMgPSBlbmFibGVHY21DcnlwdG9TdWl0
ZXM7CisgICAgICB0aGlzLmVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIgPSBlbmFibGVB
ZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOworICAgICAgdGhpcy5lbmFibGVFbmNyeXB0ZWRSdHBI
ZWFkZXJFeHRlbnNpb25zID0gZW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczsKKyAg
ICB9CisKKyAgICBAQ2FsbGVkQnlOYXRpdmUoIlNydHAiKQorICAgIHB1YmxpYyBib29sZWFuIGdl
dEVuYWJsZUdjbUNyeXB0b1N1aXRlcygpIHsKKyAgICAgIHJldHVybiBlbmFibGVHY21DcnlwdG9T
dWl0ZXM7CisgICAgfQorCisgICAgQENhbGxlZEJ5TmF0aXZlKCJTcnRwIikKKyAgICBwdWJsaWMg
Ym9vbGVhbiBnZXRFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKCkgeworICAgICAgcmV0
dXJuIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7CisgICAgfQorCisgICAgQENhbGxl
ZEJ5TmF0aXZlKCJTcnRwIikKKyAgICBwdWJsaWMgYm9vbGVhbiBnZXRFbmFibGVFbmNyeXB0ZWRS
dHBIZWFkZXJFeHRlbnNpb25zKCkgeworICAgICAgcmV0dXJuIGVuYWJsZUVuY3J5cHRlZFJ0cEhl
YWRlckV4dGVuc2lvbnM7CisgICAgfQorICB9CisKKyAgLyoqCisgICAqIE9wdGlvbnMgdG8gYmUg
dXNlZCB3aGVuIHRoZSBGcmFtZUVuY3J5cHRvciAvIEZyYW1lRGVjcnlwdG9yIEFQSXMgYXJlIHVz
ZWQuCisgICAqLworICBwdWJsaWMgZmluYWwgY2xhc3MgU0ZyYW1lIHsKKyAgICAvKioKKyAgICAg
KiBJZiBzZXQgYWxsIFJ0cFNlbmRlcnMgbXVzdCBoYXZlIGFuIEZyYW1lRW5jcnlwdG9yIGF0dGFj
aGVkIHRvIHRoZW0gYmVmb3JlCisgICAgICogdGhleSBhcmUgYWxsb3dlZCB0byBzZW5kIHBhY2tl
dHMuIEFsbCBSdHBSZWNlaXZlcnMgbXVzdCBoYXZlIGEKKyAgICAgKiBGcmFtZURlY3J5cHRvciBh
dHRhY2hlZCB0byB0aGVtIGJlZm9yZSB0aGV5IGFyZSBhYmxlIHRvIHJlY2VpdmUgcGFja2V0cy4K
KyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlwdGlv
bjsKKworICAgIHByaXZhdGUgU0ZyYW1lKGJvb2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbikg
eworICAgICAgdGhpcy5yZXF1aXJlRnJhbWVFbmNyeXB0aW9uID0gcmVxdWlyZUZyYW1lRW5jcnlw
dGlvbjsKKyAgICB9CisKKyAgICBAQ2FsbGVkQnlOYXRpdmUoIlNGcmFtZSIpCisgICAgcHVibGlj
IGJvb2xlYW4gZ2V0UmVxdWlyZUZyYW1lRW5jcnlwdGlvbigpIHsKKyAgICAgIHJldHVybiByZXF1
aXJlRnJhbWVFbmNyeXB0aW9uOworICAgIH0KKyAgfQorCisgIHByaXZhdGUgZmluYWwgU3J0cCBz
cnRwOworICBwcml2YXRlIGZpbmFsIFNGcmFtZSBzZnJhbWU7CisKKyAgcHJpdmF0ZSBDcnlwdG9P
cHRpb25zKGJvb2xlYW4gZW5hYmxlR2NtQ3J5cHRvU3VpdGVzLCBib29sZWFuIGVuYWJsZUFlczEy
OFNoYTFfMzJDcnlwdG9DaXBoZXIsCisgICAgICBib29sZWFuIGVuYWJsZUVuY3J5cHRlZFJ0cEhl
YWRlckV4dGVuc2lvbnMsIGJvb2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbikgeworICAgIHRo
aXMuc3J0cCA9IG5ldyBTcnRwKAorICAgICAgICBlbmFibGVHY21DcnlwdG9TdWl0ZXMsIGVuYWJs
ZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIsIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVu
c2lvbnMpOworICAgIHRoaXMuc2ZyYW1lID0gbmV3IFNGcmFtZShyZXF1aXJlRnJhbWVFbmNyeXB0
aW9uKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgQnVpbGRlciBidWlsZGVyKCkgeworICAgIHJl
dHVybiBuZXcgQnVpbGRlcigpOworICB9CisKKyAgQENhbGxlZEJ5TmF0aXZlCisgIHB1YmxpYyBT
cnRwIGdldFNydHAoKSB7CisgICAgcmV0dXJuIHNydHA7CisgIH0KKworICBAQ2FsbGVkQnlOYXRp
dmUKKyAgcHVibGljIFNGcmFtZSBnZXRTRnJhbWUoKSB7CisgICAgcmV0dXJuIHNmcmFtZTsKKyAg
fQorCisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQnVpbGRlciB7CisgICAgcHJpdmF0ZSBib29sZWFu
IGVuYWJsZUdjbUNyeXB0b1N1aXRlczsKKyAgICBwcml2YXRlIGJvb2xlYW4gZW5hYmxlQWVzMTI4
U2hhMV8zMkNyeXB0b0NpcGhlcjsKKyAgICBwcml2YXRlIGJvb2xlYW4gZW5hYmxlRW5jcnlwdGVk
UnRwSGVhZGVyRXh0ZW5zaW9uczsKKyAgICBwcml2YXRlIGJvb2xlYW4gcmVxdWlyZUZyYW1lRW5j
cnlwdGlvbjsKKworICAgIHByaXZhdGUgQnVpbGRlcigpIHt9CisKKyAgICBwdWJsaWMgQnVpbGRl
ciBzZXRFbmFibGVHY21DcnlwdG9TdWl0ZXMoYm9vbGVhbiBlbmFibGVHY21DcnlwdG9TdWl0ZXMp
IHsKKyAgICAgIHRoaXMuZW5hYmxlR2NtQ3J5cHRvU3VpdGVzID0gZW5hYmxlR2NtQ3J5cHRvU3Vp
dGVzOworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIEJ1aWxkZXIgc2V0
RW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcihib29sZWFuIGVuYWJsZUFlczEyOFNoYTFf
MzJDcnlwdG9DaXBoZXIpIHsKKyAgICAgIHRoaXMuZW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0Np
cGhlciA9IGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7CisgICAgICByZXR1cm4gdGhp
czsKKyAgICB9CisKKyAgICBwdWJsaWMgQnVpbGRlciBzZXRFbmFibGVFbmNyeXB0ZWRSdHBIZWFk
ZXJFeHRlbnNpb25zKAorICAgICAgICBib29sZWFuIGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4
dGVuc2lvbnMpIHsKKyAgICAgIHRoaXMuZW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9u
cyA9IGVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnM7CisgICAgICByZXR1cm4gdGhp
czsKKyAgICB9CisKKyAgICBwdWJsaWMgQnVpbGRlciBzZXRSZXF1aXJlRnJhbWVFbmNyeXB0aW9u
KGJvb2xlYW4gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbikgeworICAgICAgdGhpcy5yZXF1aXJlRnJh
bWVFbmNyeXB0aW9uID0gcmVxdWlyZUZyYW1lRW5jcnlwdGlvbjsKKyAgICAgIHJldHVybiB0aGlz
OworICAgIH0KKworICAgIHB1YmxpYyBDcnlwdG9PcHRpb25zIGNyZWF0ZUNyeXB0b09wdGlvbnMo
KSB7CisgICAgICByZXR1cm4gbmV3IENyeXB0b09wdGlvbnMoZW5hYmxlR2NtQ3J5cHRvU3VpdGVz
LCBlbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyLAorICAgICAgICAgIGVuYWJsZUVuY3J5
cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMsIHJlcXVpcmVGcmFtZUVuY3J5cHRpb24pOworICAgIH0K
KyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvRWdsUmVuZGVyZXIuamF2YSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcv
d2VicnRjL0VnbFJlbmRlcmVyLmphdmEKaW5kZXggZDBhMWQ5OGIyYmRlZmNhOTU5ZGNjNGQ4NTRj
MWY2OTQyNzA1N2MwYy4uZTgxMDA1MzAwMzYxODNjZjMzYTc4MWRjYWMyZTJkMzcxZjlkMDI0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvYXBpL29yZy93ZWJydGMvRWdsUmVuZGVyZXIuamF2YQorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0
Yy9FZ2xSZW5kZXJlci5qYXZhCkBAIC0xNyw2ICsxNyw3IEBAIGltcG9ydCBhbmRyb2lkLm9wZW5n
bC5HTEVTMjA7CiBpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOwogaW1wb3J0IGFuZHJvaWQub3Mu
SGFuZGxlclRocmVhZDsKIGltcG9ydCBhbmRyb2lkLm9zLkxvb3BlcjsKK2ltcG9ydCBhbmRyb2lk
Lm9zLk1lc3NhZ2U7CiBpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2U7CiBpbXBvcnQgamF2YS5u
aW8uQnl0ZUJ1ZmZlcjsKIGltcG9ydCBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdDsKQEAgLTc5LDYg
KzgwLDI5IEBAIHB1YmxpYyBjbGFzcyBFZ2xSZW5kZXJlciBpbXBsZW1lbnRzIFZpZGVvU2luayB7
CiAgICAgfQogICB9CiAKKyAgLyoqCisgICAqIEhhbmRsZXIgdGhhdCB0cmlnZ2VycyBhIGNhbGxi
YWNrIHdoZW4gYW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhcHBlbnMgd2hlbiBoYW5kbGluZyBhIG1l
c3NhZ2UuCisgICAqLworICBwcml2YXRlIHN0YXRpYyBjbGFzcyBIYW5kbGVyV2l0aEV4Y2VwdGlv
bkNhbGxiYWNrIGV4dGVuZHMgSGFuZGxlciB7CisgICAgcHJpdmF0ZSBmaW5hbCBSdW5uYWJsZSBl
eGNlcHRpb25DYWxsYmFjazsKKworICAgIHB1YmxpYyBIYW5kbGVyV2l0aEV4Y2VwdGlvbkNhbGxi
YWNrKExvb3BlciBsb29wZXIsIFJ1bm5hYmxlIGV4Y2VwdGlvbkNhbGxiYWNrKSB7CisgICAgICBz
dXBlcihsb29wZXIpOworICAgICAgdGhpcy5leGNlcHRpb25DYWxsYmFjayA9IGV4Y2VwdGlvbkNh
bGxiYWNrOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNo
TWVzc2FnZShNZXNzYWdlIG1zZykgeworICAgICAgdHJ5IHsKKyAgICAgICAgc3VwZXIuZGlzcGF0
Y2hNZXNzYWdlKG1zZyk7CisgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICBM
b2dnaW5nLmUoVEFHLCAiRXhjZXB0aW9uIG9uIEVnbFJlbmRlcmVyIHRocmVhZCIsIGUpOworICAg
ICAgICBleGNlcHRpb25DYWxsYmFjay5ydW4oKTsKKyAgICAgICAgdGhyb3cgZTsKKyAgICAgIH0K
KyAgICB9CisgIH0KKwogICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIG5hbWU7CiAKICAgLy8gfHJl
bmRlclRocmVhZEhhbmRsZXJ8IGlzIGEgaGFuZGxlciBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHxy
ZW5kZXJUaHJlYWR8LCBhbmQgaXMgc3luY2hyb25pemVkCkBAIC0xMDEsNiArMTI1LDcgQEAgcHVi
bGljIGNsYXNzIEVnbFJlbmRlcmVyIGltcGxlbWVudHMgVmlkZW9TaW5rIHsKICAgQE51bGxhYmxl
IHByaXZhdGUgRWdsQmFzZSBlZ2xCYXNlOwogICBwcml2YXRlIGZpbmFsIFZpZGVvRnJhbWVEcmF3
ZXIgZnJhbWVEcmF3ZXIgPSBuZXcgVmlkZW9GcmFtZURyYXdlcigpOwogICBATnVsbGFibGUgcHJp
dmF0ZSBSZW5kZXJlckNvbW1vbi5HbERyYXdlciBkcmF3ZXI7CisgIHByaXZhdGUgYm9vbGVhbiB1
c2VQcmVzZW50YXRpb25UaW1lU3RhbXA7CiAgIHByaXZhdGUgZmluYWwgTWF0cml4IGRyYXdNYXRy
aXggPSBuZXcgTWF0cml4KCk7CiAKICAgLy8gUGVuZGluZyBmcmFtZSB0byByZW5kZXIuIFNlcnZl
cyBhcyBhIHF1ZXVlIHdpdGggc2l6ZSAxLiBTeW5jaHJvbml6ZWQgb24gfGZyYW1lTG9ja3wuCkBA
IC0xNjEsMjAgKzE4NiwzMSBAQCBwdWJsaWMgY2xhc3MgRWdsUmVuZGVyZXIgaW1wbGVtZW50cyBW
aWRlb1NpbmsgewogICAgKiBJbml0aWFsaXplIHRoaXMgY2xhc3MsIHNoYXJpbmcgcmVzb3VyY2Vz
IHdpdGggfHNoYXJlZENvbnRleHR8LiBUaGUgY3VzdG9tIHxkcmF3ZXJ8IHdpbGwgYmUgdXNlZAog
ICAgKiBmb3IgZHJhd2luZyBmcmFtZXMgb24gdGhlIEVHTFN1cmZhY2UuIFRoaXMgY2xhc3MgaXMg
cmVzcG9uc2libGUgZm9yIGNhbGxpbmcgcmVsZWFzZSgpIG9uCiAgICAqIHxkcmF3ZXJ8LiBJdCBp
cyBhbGxvd2VkIHRvIGNhbGwgaW5pdCgpIHRvIHJlaW5pdGlhbGl6ZSB0aGUgcmVuZGVyZXIgYWZ0
ZXIgYSBwcmV2aW91cwotICAgKiBpbml0KCkvcmVsZWFzZSgpIGN5Y2xlLgorICAgKiBpbml0KCkv
cmVsZWFzZSgpIGN5Y2xlLiBJZiB1c2VQcmVzZW50YXRpb25UaW1lU3RhbXAgaXMgdHJ1ZSwgZWds
UHJlc2VudGF0aW9uVGltZUFORFJPSUQgd2lsbCBiZQorICAgKiBzZXQgd2l0aCB0aGUgZnJhbWUg
dGltZXN0YW1wcywgd2hpY2ggc3BlY2lmaWVzIGRlc2lyZWQgcHJlc2VudGF0aW9uIHRpbWUgYW5k
IG1pZ2h0IGJlIHVzZWZ1bAorICAgKiBmb3IgZS5nLiBzeW5jaW5nIGF1ZGlvIGFuZCB2aWRlby4K
ICAgICovCiAgIHB1YmxpYyB2b2lkIGluaXQoQE51bGxhYmxlIGZpbmFsIEVnbEJhc2UuQ29udGV4
dCBzaGFyZWRDb250ZXh0LCBmaW5hbCBpbnRbXSBjb25maWdBdHRyaWJ1dGVzLAotICAgICAgUmVu
ZGVyZXJDb21tb24uR2xEcmF3ZXIgZHJhd2VyKSB7CisgICAgICBSZW5kZXJlckNvbW1vbi5HbERy
YXdlciBkcmF3ZXIsIGJvb2xlYW4gdXNlUHJlc2VudGF0aW9uVGltZVN0YW1wKSB7CiAgICAgc3lu
Y2hyb25pemVkIChoYW5kbGVyTG9jaykgewogICAgICAgaWYgKHJlbmRlclRocmVhZEhhbmRsZXIg
IT0gbnVsbCkgewogICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKG5hbWUg
KyAiQWxyZWFkeSBpbml0aWFsaXplZCIpOwogICAgICAgfQogICAgICAgbG9nRCgiSW5pdGlhbGl6
aW5nIEVnbFJlbmRlcmVyIik7CiAgICAgICB0aGlzLmRyYXdlciA9IGRyYXdlcjsKKyAgICAgIHRo
aXMudXNlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gdXNlUHJlc2VudGF0aW9uVGltZVN0YW1wOwog
CiAgICAgICBmaW5hbCBIYW5kbGVyVGhyZWFkIHJlbmRlclRocmVhZCA9IG5ldyBIYW5kbGVyVGhy
ZWFkKG5hbWUgKyAiRWdsUmVuZGVyZXIiKTsKICAgICAgIHJlbmRlclRocmVhZC5zdGFydCgpOwot
ICAgICAgcmVuZGVyVGhyZWFkSGFuZGxlciA9IG5ldyBIYW5kbGVyKHJlbmRlclRocmVhZC5nZXRM
b29wZXIoKSk7CisgICAgICByZW5kZXJUaHJlYWRIYW5kbGVyID0KKyAgICAgICAgICBuZXcgSGFu
ZGxlcldpdGhFeGNlcHRpb25DYWxsYmFjayhyZW5kZXJUaHJlYWQuZ2V0TG9vcGVyKCksIG5ldyBS
dW5uYWJsZSgpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZv
aWQgcnVuKCkgeworICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKGhhbmRsZXJMb2NrKSB7Cisg
ICAgICAgICAgICAgICAgcmVuZGVyVGhyZWFkSGFuZGxlciA9IG51bGw7CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKICAgICAgIC8vIENyZWF0ZSBFR0wgY29u
dGV4dCBvbiB0aGUgbmV3bHkgY3JlYXRlZCByZW5kZXIgdGhyZWFkLiBJdCBzaG91bGQgYmUgcG9z
c2libHkgdG8gY3JlYXRlIHRoZQogICAgICAgLy8gY29udGV4dCBvbiB0aGlzIHRocmVhZCBhbmQg
bWFrZSBpdCBjdXJyZW50IG9uIHRoZSByZW5kZXIgdGhyZWFkLCBidXQgdGhpcyBjYXVzZXMgZmFp
bHVyZSBvbgogICAgICAgLy8gc29tZSBNYXJ2ZWwgYmFzZWQgSkIgZGV2aWNlcy4gaHR0cHM6Ly9i
dWdzLmNocm9taXVtLm9yZy9wL3dlYnJ0Yy9pc3N1ZXMvZGV0YWlsP2lkPTYzNTAuCkBAIC0xOTgs
NiArMjM0LDE2IEBAIHB1YmxpYyBjbGFzcyBFZ2xSZW5kZXJlciBpbXBsZW1lbnRzIFZpZGVvU2lu
ayB7CiAgICAgfQogICB9CiAKKyAgLyoqCisgICAqIFNhbWUgYXMgYWJvdmUgd2l0aCB1c2VQcmVz
ZW50YXRpb25UaW1lU3RhbXAgc2V0IHRvIGZhbHNlLgorICAgKgorICAgKiBAc2VlICNpbml0KEVn
bEJhc2UuQ29udGV4dCwgaW50W10sIFJlbmRlcmVyQ29tbW9uLkdsRHJhd2VyLCBib29sZWFuKQor
ICAgKi8KKyAgcHVibGljIHZvaWQgaW5pdChATnVsbGFibGUgZmluYWwgRWdsQmFzZS5Db250ZXh0
IHNoYXJlZENvbnRleHQsIGZpbmFsIGludFtdIGNvbmZpZ0F0dHJpYnV0ZXMsCisgICAgICBSZW5k
ZXJlckNvbW1vbi5HbERyYXdlciBkcmF3ZXIpIHsKKyAgICBpbml0KHNoYXJlZENvbnRleHQsIGNv
bmZpZ0F0dHJpYnV0ZXMsIGRyYXdlciwgLyogdXNlUHJlc2VudGF0aW9uVGltZVN0YW1wPSAqLyBm
YWxzZSk7CisgIH0KKwogICBwdWJsaWMgdm9pZCBjcmVhdGVFZ2xTdXJmYWNlKFN1cmZhY2Ugc3Vy
ZmFjZSkgewogICAgIGNyZWF0ZUVnbFN1cmZhY2VJbnRlcm5hbChzdXJmYWNlKTsKICAgfQpAQCAt
NTg1LDcgKzYzMSwxMSBAQCBwdWJsaWMgY2xhc3MgRWdsUmVuZGVyZXIgaW1wbGVtZW50cyBWaWRl
b1NpbmsgewogICAgICAgICAgIGVnbEJhc2Uuc3VyZmFjZVdpZHRoKCksIGVnbEJhc2Uuc3VyZmFj
ZUhlaWdodCgpKTsKIAogICAgICAgZmluYWwgbG9uZyBzd2FwQnVmZmVyc1N0YXJ0VGltZU5zID0g
U3lzdGVtLm5hbm9UaW1lKCk7Ci0gICAgICBlZ2xCYXNlLnN3YXBCdWZmZXJzKCk7CisgICAgICBp
ZiAodXNlUHJlc2VudGF0aW9uVGltZVN0YW1wKSB7CisgICAgICAgIGVnbEJhc2Uuc3dhcEJ1ZmZl
cnMoZnJhbWUuZ2V0VGltZXN0YW1wTnMoKSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBlZ2xC
YXNlLnN3YXBCdWZmZXJzKCk7CisgICAgICB9CiAKICAgICAgIGZpbmFsIGxvbmcgY3VycmVudFRp
bWVOcyA9IFN5c3RlbS5uYW5vVGltZSgpOwogICAgICAgc3luY2hyb25pemVkIChzdGF0aXN0aWNz
TG9jaykgewpAQCAtNjUyLDcgKzcwMiw3IEBAIHB1YmxpYyBjbGFzcyBFZ2xSZW5kZXJlciBpbXBs
ZW1lbnRzIFZpZGVvU2luayB7CiAgIH0KIAogICBwcml2YXRlIFN0cmluZyBhdmVyYWdlVGltZUFz
U3RyaW5nKGxvbmcgc3VtVGltZU5zLCBpbnQgY291bnQpIHsKLSAgICByZXR1cm4gKGNvdW50IDw9
IDApID8gIk5BIiA6IFRpbWVVbml0Lk5BTk9TRUNPTkRTLnRvTWljcm9zKHN1bVRpbWVOcyAvIGNv
dW50KSArICIgzrxzIjsKKyAgICByZXR1cm4gKGNvdW50IDw9IDApID8gIk5BIiA6IFRpbWVVbml0
Lk5BTk9TRUNPTkRTLnRvTWljcm9zKHN1bVRpbWVOcyAvIGNvdW50KSArICIgdXMiOwogICB9CiAK
ICAgcHJpdmF0ZSB2b2lkIGxvZ1N0YXRpc3RpY3MoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0
Yy9MaWJ2cHhWcDhEZWNvZGVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDhEZWNvZGVyLmph
dmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTRhZDBhYTEzN2M3NTIwZWJiNTkwOWUwZWUzNGFiMmRhNWNmNWRlZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL0xpYnZweFZwOERlY29kZXIuamF2YQpAQCAt
MCwwICsxLDIwIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2pl
Y3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor
ICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFu
dCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGlu
ZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworcGFja2FnZSBvcmcud2VicnRj
OworCitwdWJsaWMgY2xhc3MgTGlidnB4VnA4RGVjb2RlciBleHRlbmRzIFdyYXBwZWROYXRpdmVW
aWRlb0RlY29kZXIgeworICBAT3ZlcnJpZGUKKyAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZlVmlk
ZW9EZWNvZGVyKCkgeworICAgIHJldHVybiBuYXRpdmVDcmVhdGVEZWNvZGVyKCk7CisgIH0KKwor
ICBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlRGVjb2RlcigpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
YXBpL29yZy93ZWJydGMvTGlidnB4VnA4RW5jb2Rlci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTGlidnB4
VnA4RW5jb2Rlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiZTllNTJjMTQyMWYyNDFjNGNjYzkxODk5YmUx
NTkyMDNlM2E2ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDhFbmNv
ZGVyLmphdmEKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKK3BhY2th
Z2Ugb3JnLndlYnJ0YzsKKworcHVibGljIGNsYXNzIExpYnZweFZwOEVuY29kZXIgZXh0ZW5kcyBX
cmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyIHsKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBsb25nIGNy
ZWF0ZU5hdGl2ZVZpZGVvRW5jb2RlcigpIHsKKyAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRW5jb2Rl
cigpOworICB9CisKKyAgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsK
KworICBAT3ZlcnJpZGUKKyAgcHVibGljIGJvb2xlYW4gaXNIYXJkd2FyZUVuY29kZXIoKSB7Cisg
ICAgcmV0dXJuIGZhbHNlOworICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhW
cDlEZWNvZGVyLmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDlEZWNvZGVyLmphdmEKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTBhMjQ0MzNhM2VmNzQxY2M5YjgxZDQ1ZTA3NmVjMjI4YmM0ZGI2YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL2FwaS9vcmcvd2VicnRjL0xpYnZweFZwOURlY29kZXIuamF2YQpAQCAtMCwwICsxLDIy
IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworcGFja2FnZSBvcmcud2VicnRjOworCitwdWJs
aWMgY2xhc3MgTGlidnB4VnA5RGVjb2RlciBleHRlbmRzIFdyYXBwZWROYXRpdmVWaWRlb0RlY29k
ZXIgeworICBAT3ZlcnJpZGUKKyAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZlVmlkZW9EZWNvZGVy
KCkgeworICAgIHJldHVybiBuYXRpdmVDcmVhdGVEZWNvZGVyKCk7CisgIH0KKworICBzdGF0aWMg
bmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlRGVjb2RlcigpOworCisgIHN0YXRpYyBuYXRpdmUgYm9v
bGVhbiBuYXRpdmVJc1N1cHBvcnRlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTGli
dnB4VnA5RW5jb2Rlci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTGlidnB4VnA5RW5jb2Rlci5qYXZhCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEyMTFhZTkzZmI4YWM1YTE3OWQzZjc3ZGFiZjdlM2M5ZjI2ODVmMzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9MaWJ2cHhWcDlFbmNvZGVyLmphdmEKQEAgLTAsMCAr
MSwyNyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1
dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0
cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2Fu
IGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJv
amVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKK3BhY2thZ2Ugb3JnLndlYnJ0YzsKKwor
cHVibGljIGNsYXNzIExpYnZweFZwOUVuY29kZXIgZXh0ZW5kcyBXcmFwcGVkTmF0aXZlVmlkZW9F
bmNvZGVyIHsKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBsb25nIGNyZWF0ZU5hdGl2ZVZpZGVvRW5j
b2RlcigpIHsKKyAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRW5jb2RlcigpOworICB9CisKKyAgc3Rh
dGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsKKworICBAT3ZlcnJpZGUKKyAg
cHVibGljIGJvb2xlYW4gaXNIYXJkd2FyZUVuY29kZXIoKSB7CisgICAgcmV0dXJuIGZhbHNlOwor
ICB9CisKKyAgc3RhdGljIG5hdGl2ZSBib29sZWFuIG5hdGl2ZUlzU3VwcG9ydGVkKCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9NZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5LmphdmEg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9h
cGkvb3JnL3dlYnJ0Yy9NZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5LmphdmEKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzE2YTM3YTZkNzc3NTM5YTQ2MGZjMjk0NmRmMWEyMjBhZmZhMjM2NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL2FwaS9vcmcvd2VicnRjL01lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkuamF2YQpAQCAt
MCwwICsxLDIyIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisK
Ky8qKgorICogRmFjdG9yeSBmb3IgY3JlYXRpbmcgd2VicnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rv
cnkgaW5zdGFuY2VzLgorICovCitwdWJsaWMgaW50ZXJmYWNlIE1lZGlhVHJhbnNwb3J0RmFjdG9y
eUZhY3RvcnkgeworICAvKioKKyAgICogRHluYW1pY2FsbHkgYWxsb2NhdGVzIGEgd2VicnRjOjpN
ZWRpYVRyYW5zcG9ydEZhY3RvcnkgaW5zdGFuY2UgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGl0
LgorICAgKiBUaGUgY2FsbGVyIHRha2VzIG93bmVyc2hpcCBvZiB0aGUgb2JqZWN0LgorICAgKi8K
KyAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZlTWVkaWFUcmFuc3BvcnRGYWN0b3J5KCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9OZXR3b3JrTW9uaXRvci5qYXZhIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMv
TmV0d29ya01vbml0b3IuamF2YQppbmRleCBiYTZiYWUwZWQ4MzQ5ODMyMTY1NmRlYjgyNTFmZDE2
YjVkMjU4NzUxLi45NzY0YTBjYjM1NGZmNzcyYWEzYTM1NTU0NzlkNDFhYjgwMmVmNWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9hcGkvb3JnL3dlYnJ0Yy9OZXR3b3JrTW9uaXRvci5qYXZhCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRj
L05ldHdvcmtNb25pdG9yLmphdmEKQEAgLTE0LDExICsxNCwxMCBAQCBpbXBvcnQgc3RhdGljIG9y
Zy53ZWJydGMuTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LklOVkFMSURfTkVUX0lEOwogCiBpbXBv
cnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5vcy5CdWlsZDsKLWlt
cG9ydCBqYXZheC5hbm5vdGF0aW9uLk51bGxhYmxlOwogaW1wb3J0IGphdmEudXRpbC5BcnJheUxp
c3Q7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgb3JnLndlYnJ0Yy5OZXR3b3JrTW9u
aXRvckF1dG9EZXRlY3QuQ29ubmVjdGlvblR5cGU7Ci1pbXBvcnQgb3JnLndlYnJ0Yy5OZXR3b3Jr
TW9uaXRvckF1dG9EZXRlY3QuTmV0d29ya0luZm9ybWF0aW9uOworaW1wb3J0IGphdmF4LmFubm90
YXRpb24uTnVsbGFibGU7CitpbXBvcnQgb3JnLndlYnJ0Yy5OZXR3b3JrTW9uaXRvckF1dG9EZXRl
Y3Q7CiAKIC8qKgogICogQm9ycm93ZWQgZnJvbSBDaHJvbWl1bSdzCkBAIC0zMyw3ICszMiw3IEBA
IHB1YmxpYyBjbGFzcyBOZXR3b3JrTW9uaXRvciB7CiAgICAqIEFsZXJ0ZWQgd2hlbiB0aGUgY29u
bmVjdGlvbiB0eXBlIG9mIHRoZSBuZXR3b3JrIGNoYW5nZXMuIFRoZSBhbGVydCBpcyBmaXJlZCBv
biB0aGUgVUkgdGhyZWFkLgogICAgKi8KICAgcHVibGljIGludGVyZmFjZSBOZXR3b3JrT2JzZXJ2
ZXIgewotICAgIHB1YmxpYyB2b2lkIG9uQ29ubmVjdGlvblR5cGVDaGFuZ2VkKENvbm5lY3Rpb25U
eXBlIGNvbm5lY3Rpb25UeXBlKTsKKyAgICBwdWJsaWMgdm9pZCBvbkNvbm5lY3Rpb25UeXBlQ2hh
bmdlZChOZXR3b3JrTW9uaXRvckF1dG9EZXRlY3QuQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5
cGUpOwogICB9CiAKICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJOZXR3b3Jr
TW9uaXRvciI7CkBAIC01NSwxMyArNTQsMTMgQEAgcHVibGljIGNsYXNzIE5ldHdvcmtNb25pdG9y
IHsKICAgLy8gQWxzbyBndWFyZGVkIGJ5IGF1dG9EZXRlY3RMb2NrLgogICBwcml2YXRlIGludCBu
dW1PYnNlcnZlcnM7CiAKLSAgcHJpdmF0ZSB2b2xhdGlsZSBDb25uZWN0aW9uVHlwZSBjdXJyZW50
Q29ubmVjdGlvblR5cGU7CisgIHByaXZhdGUgdm9sYXRpbGUgTmV0d29ya01vbml0b3JBdXRvRGV0
ZWN0LkNvbm5lY3Rpb25UeXBlIGN1cnJlbnRDb25uZWN0aW9uVHlwZTsKIAogICBwcml2YXRlIE5l
dHdvcmtNb25pdG9yKCkgewogICAgIG5hdGl2ZU5ldHdvcmtPYnNlcnZlcnMgPSBuZXcgQXJyYXlM
aXN0PExvbmc+KCk7CiAgICAgbmV0d29ya09ic2VydmVycyA9IG5ldyBBcnJheUxpc3Q8TmV0d29y
a09ic2VydmVyPigpOwogICAgIG51bU9ic2VydmVycyA9IDA7Ci0gICAgY3VycmVudENvbm5lY3Rp
b25UeXBlID0gQ29ubmVjdGlvblR5cGUuQ09OTkVDVElPTl9VTktOT1dOOworICAgIGN1cnJlbnRD
b25uZWN0aW9uVHlwZSA9IE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5Db25uZWN0aW9uVHlwZS5D
T05ORUNUSU9OX1VOS05PV047CiAgIH0KIAogICAvLyBUT0RPKHNha2FsKTogUmVtb3ZlIG9uY2Ug
ZG93bnN0cmVhbSBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQuCkBAIC0xNTUsNyArMTU0
LDcgQEAgcHVibGljIGNsYXNzIE5ldHdvcmtNb25pdG9yIHsKICAgICByZXR1cm4gQnVpbGQuVkVS
U0lPTi5TREtfSU5UOwogICB9CiAKLSAgcHJpdmF0ZSBDb25uZWN0aW9uVHlwZSBnZXRDdXJyZW50
Q29ubmVjdGlvblR5cGUoKSB7CisgIHByaXZhdGUgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNv
bm5lY3Rpb25UeXBlIGdldEN1cnJlbnRDb25uZWN0aW9uVHlwZSgpIHsKICAgICByZXR1cm4gY3Vy
cmVudENvbm5lY3Rpb25UeXBlOwogICB9CiAKQEAgLTE2OSwxMiArMTY4LDEzIEBAIHB1YmxpYyBj
bGFzcyBOZXR3b3JrTW9uaXRvciB7CiAgICAgcmV0dXJuIG5ldyBOZXR3b3JrTW9uaXRvckF1dG9E
ZXRlY3QobmV3IE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5PYnNlcnZlcigpIHsKIAogICAgICAg
QE92ZXJyaWRlCi0gICAgICBwdWJsaWMgdm9pZCBvbkNvbm5lY3Rpb25UeXBlQ2hhbmdlZChDb25u
ZWN0aW9uVHlwZSBuZXdDb25uZWN0aW9uVHlwZSkgeworICAgICAgcHVibGljIHZvaWQgb25Db25u
ZWN0aW9uVHlwZUNoYW5nZWQoCisgICAgICAgICAgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNv
bm5lY3Rpb25UeXBlIG5ld0Nvbm5lY3Rpb25UeXBlKSB7CiAgICAgICAgIHVwZGF0ZUN1cnJlbnRD
b25uZWN0aW9uVHlwZShuZXdDb25uZWN0aW9uVHlwZSk7CiAgICAgICB9CiAKICAgICAgIEBPdmVy
cmlkZQotICAgICAgcHVibGljIHZvaWQgb25OZXR3b3JrQ29ubmVjdChOZXR3b3JrSW5mb3JtYXRp
b24gbmV0d29ya0luZm8pIHsKKyAgICAgIHB1YmxpYyB2b2lkIG9uTmV0d29ya0Nvbm5lY3QoTmV0
d29ya01vbml0b3JBdXRvRGV0ZWN0Lk5ldHdvcmtJbmZvcm1hdGlvbiBuZXR3b3JrSW5mbykgewog
ICAgICAgICBub3RpZnlPYnNlcnZlcnNPZk5ldHdvcmtDb25uZWN0KG5ldHdvcmtJbmZvKTsKICAg
ICAgIH0KIApAQCAtMTg1LDEzICsxODUsMTUgQEAgcHVibGljIGNsYXNzIE5ldHdvcmtNb25pdG9y
IHsKICAgICB9LCBhcHBDb250ZXh0KTsKICAgfQogCi0gIHByaXZhdGUgdm9pZCB1cGRhdGVDdXJy
ZW50Q29ubmVjdGlvblR5cGUoQ29ubmVjdGlvblR5cGUgbmV3Q29ubmVjdGlvblR5cGUpIHsKKyAg
cHJpdmF0ZSB2b2lkIHVwZGF0ZUN1cnJlbnRDb25uZWN0aW9uVHlwZSgKKyAgICAgIE5ldHdvcmtN
b25pdG9yQXV0b0RldGVjdC5Db25uZWN0aW9uVHlwZSBuZXdDb25uZWN0aW9uVHlwZSkgewogICAg
IGN1cnJlbnRDb25uZWN0aW9uVHlwZSA9IG5ld0Nvbm5lY3Rpb25UeXBlOwogICAgIG5vdGlmeU9i
c2VydmVyc09mQ29ubmVjdGlvblR5cGVDaGFuZ2UobmV3Q29ubmVjdGlvblR5cGUpOwogICB9CiAK
ICAgLyoqIEFsZXJ0cyBhbGwgb2JzZXJ2ZXJzIG9mIGEgY29ubmVjdGlvbiBjaGFuZ2UuICovCi0g
IHByaXZhdGUgdm9pZCBub3RpZnlPYnNlcnZlcnNPZkNvbm5lY3Rpb25UeXBlQ2hhbmdlKENvbm5l
Y3Rpb25UeXBlIG5ld0Nvbm5lY3Rpb25UeXBlKSB7CisgIHByaXZhdGUgdm9pZCBub3RpZnlPYnNl
cnZlcnNPZkNvbm5lY3Rpb25UeXBlQ2hhbmdlKAorICAgICAgTmV0d29ya01vbml0b3JBdXRvRGV0
ZWN0LkNvbm5lY3Rpb25UeXBlIG5ld0Nvbm5lY3Rpb25UeXBlKSB7CiAgICAgTGlzdDxMb25nPiBu
YXRpdmVPYnNlcnZlcnMgPSBnZXROYXRpdmVOZXR3b3JrT2JzZXJ2ZXJzU3luYygpOwogICAgIGZv
ciAoTG9uZyBuYXRpdmVPYnNlcnZlciA6IG5hdGl2ZU9ic2VydmVycykgewogICAgICAgbmF0aXZl
Tm90aWZ5Q29ubmVjdGlvblR5cGVDaGFuZ2VkKG5hdGl2ZU9ic2VydmVyKTsKQEAgLTIwNiw3ICsy
MDgsOCBAQCBwdWJsaWMgY2xhc3MgTmV0d29ya01vbml0b3IgewogICAgIH0KICAgfQogCi0gIHBy
aXZhdGUgdm9pZCBub3RpZnlPYnNlcnZlcnNPZk5ldHdvcmtDb25uZWN0KE5ldHdvcmtJbmZvcm1h
dGlvbiBuZXR3b3JrSW5mbykgeworICBwcml2YXRlIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzT2ZOZXR3
b3JrQ29ubmVjdCgKKyAgICAgIE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5OZXR3b3JrSW5mb3Jt
YXRpb24gbmV0d29ya0luZm8pIHsKICAgICBMaXN0PExvbmc+IG5hdGl2ZU9ic2VydmVycyA9IGdl
dE5hdGl2ZU5ldHdvcmtPYnNlcnZlcnNTeW5jKCk7CiAgICAgZm9yIChMb25nIG5hdGl2ZU9ic2Vy
dmVyIDogbmF0aXZlT2JzZXJ2ZXJzKSB7CiAgICAgICBuYXRpdmVOb3RpZnlPZk5ldHdvcmtDb25u
ZWN0KG5hdGl2ZU9ic2VydmVyLCBuZXR3b3JrSW5mbyk7CkBAIC0yMjEsNyArMjI0LDcgQEAgcHVi
bGljIGNsYXNzIE5ldHdvcmtNb25pdG9yIHsKICAgfQogCiAgIHByaXZhdGUgdm9pZCB1cGRhdGVP
YnNlcnZlckFjdGl2ZU5ldHdvcmtMaXN0KGxvbmcgbmF0aXZlT2JzZXJ2ZXIpIHsKLSAgICBMaXN0
PE5ldHdvcmtJbmZvcm1hdGlvbj4gbmV0d29ya0luZm9MaXN0OworICAgIExpc3Q8TmV0d29ya01v
bml0b3JBdXRvRGV0ZWN0Lk5ldHdvcmtJbmZvcm1hdGlvbj4gbmV0d29ya0luZm9MaXN0OwogICAg
IHN5bmNocm9uaXplZCAoYXV0b0RldGVjdExvY2spIHsKICAgICAgIG5ldHdvcmtJbmZvTGlzdCA9
IChhdXRvRGV0ZWN0ID09IG51bGwpID8gbnVsbCA6IGF1dG9EZXRlY3QuZ2V0QWN0aXZlTmV0d29y
a0xpc3QoKTsKICAgICB9CkBAIC0yMjksNyArMjMyLDggQEAgcHVibGljIGNsYXNzIE5ldHdvcmtN
b25pdG9yIHsKICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBOZXR3b3JrSW5mb3JtYXRpb25b
XSBuZXR3b3JrSW5mb3MgPSBuZXcgTmV0d29ya0luZm9ybWF0aW9uW25ldHdvcmtJbmZvTGlzdC5z
aXplKCldOworICAgIE5ldHdvcmtNb25pdG9yQXV0b0RldGVjdC5OZXR3b3JrSW5mb3JtYXRpb25b
XSBuZXR3b3JrSW5mb3MgPQorICAgICAgICBuZXcgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0Lk5l
dHdvcmtJbmZvcm1hdGlvbltuZXR3b3JrSW5mb0xpc3Quc2l6ZSgpXTsKICAgICBuZXR3b3JrSW5m
b3MgPSBuZXR3b3JrSW5mb0xpc3QudG9BcnJheShuZXR3b3JrSW5mb3MpOwogICAgIG5hdGl2ZU5v
dGlmeU9mQWN0aXZlTmV0d29ya0xpc3QobmF0aXZlT2JzZXJ2ZXIsIG5ldHdvcmtJbmZvcyk7CiAg
IH0KQEAgLTI3NCwxNyArMjc4LDE4IEBAIHB1YmxpYyBjbGFzcyBOZXR3b3JrTW9uaXRvciB7CiAK
ICAgLyoqIENoZWNrcyBpZiB0aGVyZSBjdXJyZW50bHkgaXMgY29ubmVjdGl2aXR5LiAqLwogICBw
dWJsaWMgc3RhdGljIGJvb2xlYW4gaXNPbmxpbmUoKSB7Ci0gICAgQ29ubmVjdGlvblR5cGUgY29u
bmVjdGlvblR5cGUgPSBnZXRJbnN0YW5jZSgpLmdldEN1cnJlbnRDb25uZWN0aW9uVHlwZSgpOwot
ICAgIHJldHVybiBjb25uZWN0aW9uVHlwZSAhPSBDb25uZWN0aW9uVHlwZS5DT05ORUNUSU9OX05P
TkU7CisgICAgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LkNvbm5lY3Rpb25UeXBlIGNvbm5lY3Rp
b25UeXBlID0KKyAgICAgICAgZ2V0SW5zdGFuY2UoKS5nZXRDdXJyZW50Q29ubmVjdGlvblR5cGUo
KTsKKyAgICByZXR1cm4gY29ubmVjdGlvblR5cGUgIT0gTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0
LkNvbm5lY3Rpb25UeXBlLkNPTk5FQ1RJT05fTk9ORTsKICAgfQogCiAgIHByaXZhdGUgbmF0aXZl
IHZvaWQgbmF0aXZlTm90aWZ5Q29ubmVjdGlvblR5cGVDaGFuZ2VkKGxvbmcgbmF0aXZlQW5kcm9p
ZE5ldHdvcmtNb25pdG9yKTsKICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVOb3RpZnlPZk5l
dHdvcmtDb25uZWN0KAotICAgICAgbG9uZyBuYXRpdmVBbmRyb2lkTmV0d29ya01vbml0b3IsIE5l
dHdvcmtJbmZvcm1hdGlvbiBuZXR3b3JrSW5mbyk7CisgICAgICBsb25nIG5hdGl2ZUFuZHJvaWRO
ZXR3b3JrTW9uaXRvciwgTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0Lk5ldHdvcmtJbmZvcm1hdGlv
biBuZXR3b3JrSW5mbyk7CiAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlTm90aWZ5T2ZOZXR3
b3JrRGlzY29ubmVjdCgKICAgICAgIGxvbmcgbmF0aXZlQW5kcm9pZE5ldHdvcmtNb25pdG9yLCBs
b25nIG5ldHdvcmtIYW5kbGUpOwogICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZU5vdGlmeU9m
QWN0aXZlTmV0d29ya0xpc3QoCi0gICAgICBsb25nIG5hdGl2ZUFuZHJvaWROZXR3b3JrTW9uaXRv
ciwgTmV0d29ya0luZm9ybWF0aW9uW10gbmV0d29ya0luZm9zKTsKKyAgICAgIGxvbmcgbmF0aXZl
QW5kcm9pZE5ldHdvcmtNb25pdG9yLCBOZXR3b3JrTW9uaXRvckF1dG9EZXRlY3QuTmV0d29ya0lu
Zm9ybWF0aW9uW10gbmV0d29ya0luZm9zKTsKIAogICAvLyBGb3IgdGVzdGluZyBvbmx5LgogICBA
TnVsbGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL05ldHdvcmtNb25pdG9yQXV0b0RldGVj
dC5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvYXBpL29yZy93ZWJydGMvTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0LmphdmEKaW5kZXgg
M2Q3NGY1ZmQ3YzVkYTRkODJjOTRjMmU5Y2RlY2RmNGEwMWI5YWNkMS4uMTc5ZjgzZDM3NjFiZTFi
YzUwOGIyNmRkYzNkMWJlNmZjNzdmZDNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTmV0d29y
a01vbml0b3JBdXRvRGV0ZWN0LmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvTmV0d29ya01vbml0b3JB
dXRvRGV0ZWN0LmphdmEKQEAgLTI5Nyw3ICsyOTcsOCBAQCBwdWJsaWMgY2xhc3MgTmV0d29ya01v
bml0b3JBdXRvRGV0ZWN0IGV4dGVuZHMgQnJvYWRjYXN0UmVjZWl2ZXIgewogICAgICAgICAgIC8v
IGh0dHBzOi8vYW5kcm9pZC5nb29nbGVzb3VyY2UuY29tL3BsYXRmb3JtL2ZyYW1ld29ya3MvYmFz
ZS8rL2Q2YTc5ODBkCiAgICAgICAgICAgTmV0d29ya0luZm8gdW5kZXJseWluZ0FjdGl2ZU5ldHdv
cmtJbmZvID0gY29ubmVjdGl2aXR5TWFuYWdlci5nZXRBY3RpdmVOZXR3b3JrSW5mbygpOwogICAg
ICAgICAgIC8vIFdlIHVzZSB0aGUgTmV0d29ya0luZm8gb2YgdGhlIHVuZGVybHlpbmcgbmV0d29y
ayBpZiBpdCBpcyBub3Qgb2YgVFlQRV9WUE4gaXRzZWxmLgotICAgICAgICAgIGlmICh1bmRlcmx5
aW5nQWN0aXZlTmV0d29ya0luZm8uZ2V0VHlwZSgpICE9IENvbm5lY3Rpdml0eU1hbmFnZXIuVFlQ
RV9WUE4pIHsKKyAgICAgICAgICBpZiAodW5kZXJseWluZ0FjdGl2ZU5ldHdvcmtJbmZvICE9IG51
bGwKKyAgICAgICAgICAgICAgJiYgdW5kZXJseWluZ0FjdGl2ZU5ldHdvcmtJbmZvLmdldFR5cGUo
KSAhPSBDb25uZWN0aXZpdHlNYW5hZ2VyLlRZUEVfVlBOKSB7CiAgICAgICAgICAgICByZXR1cm4g
bmV3IE5ldHdvcmtTdGF0ZShuZXR3b3JrSW5mby5pc0Nvbm5lY3RlZCgpLCBDb25uZWN0aXZpdHlN
YW5hZ2VyLlRZUEVfVlBOLCAtMSwKICAgICAgICAgICAgICAgICB1bmRlcmx5aW5nQWN0aXZlTmV0
d29ya0luZm8uZ2V0VHlwZSgpLCB1bmRlcmx5aW5nQWN0aXZlTmV0d29ya0luZm8uZ2V0U3VidHlw
ZSgpKTsKICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlv
bi5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvYXBpL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb24uamF2YQppbmRleCA4NGQ0OWViYjhh
N2RjZDQxMmQ0MDk2YjljMmNiMGExNzJkMzliMmNhLi40N2M1NGVlNTQ5YzRmOThhODYwZTM0MDEz
MDY3ZGZiZThkOTY4YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvbi5q
YXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL2FwaS9vcmcvd2VicnRjL1BlZXJDb25uZWN0aW9uLmphdmEKQEAgLTE0LDYgKzE0LDkg
QEAgaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rp
b25zOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmF4LmFubm90YXRpb24uTnVs
bGFibGU7CitpbXBvcnQgb3JnLndlYnJ0Yy5EYXRhQ2hhbm5lbDsKK2ltcG9ydCBvcmcud2VicnRj
Lk1lZGlhU3RyZWFtVHJhY2s7CitpbXBvcnQgb3JnLndlYnJ0Yy5SdHBUcmFuc2NlaXZlcjsKIAog
LyoqCiAgKiBKYXZhLWxhbmQgdmVyc2lvbiBvZiB0aGUgUGVlckNvbm5lY3Rpb24gQVBJczsgd3Jh
cHMgdGhlIEMrKyBBUEkKQEAgLTUwLDYgKzUzLDIxIEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVj
dGlvbiB7CiAgICAgfQogICB9CiAKKyAgLyoqIFRyYWNrcyBQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSAqLworICBwdWJsaWMgZW51bSBQZWVyQ29ubmVjdGlvblN0
YXRlIHsKKyAgICBORVcsCisgICAgQ09OTkVDVElORywKKyAgICBDT05ORUNURUQsCisgICAgRElT
Q09OTkVDVEVELAorICAgIEZBSUxFRCwKKyAgICBDTE9TRUQ7CisKKyAgICBAQ2FsbGVkQnlOYXRp
dmUoIlBlZXJDb25uZWN0aW9uU3RhdGUiKQorICAgIHN0YXRpYyBQZWVyQ29ubmVjdGlvblN0YXRl
IGZyb21OYXRpdmVJbmRleChpbnQgbmF0aXZlSW5kZXgpIHsKKyAgICAgIHJldHVybiB2YWx1ZXMo
KVtuYXRpdmVJbmRleF07CisgICAgfQorICB9CisKICAgLyoqIFRyYWNrcyBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6VGxzQ2VydFBvbGljeSAqLwogICBwdWJsaWMgZW51bSBUbHNDZXJ0UG9saWN5
IHsKICAgICBUTFNfQ0VSVF9QT0xJQ1lfU0VDVVJFLApAQCAtNzksNiArOTcsMTAgQEAgcHVibGlj
IGNsYXNzIFBlZXJDb25uZWN0aW9uIHsKICAgICAvKiogVHJpZ2dlcmVkIHdoZW4gdGhlIEljZUNv
bm5lY3Rpb25TdGF0ZSBjaGFuZ2VzLiAqLwogICAgIEBDYWxsZWRCeU5hdGl2ZSgiT2JzZXJ2ZXIi
KSB2b2lkIG9uSWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUgbmV3U3RhdGUp
OwogCisgICAgLyoqIFRyaWdnZXJlZCB3aGVuIHRoZSBQZWVyQ29ubmVjdGlvblN0YXRlIGNoYW5n
ZXMuICovCisgICAgQENhbGxlZEJ5TmF0aXZlKCJPYnNlcnZlciIpCisgICAgZGVmYXVsdCB2b2lk
IG9uQ29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlIG5ld1N0YXRlKSB7fQorCiAg
ICAgLyoqIFRyaWdnZXJlZCB3aGVuIHRoZSBJQ0UgY29ubmVjdGlvbiByZWNlaXZpbmcgc3RhdHVz
IGNoYW5nZXMuICovCiAgICAgQENhbGxlZEJ5TmF0aXZlKCJPYnNlcnZlciIpIHZvaWQgb25JY2VD
b25uZWN0aW9uUmVjZWl2aW5nQ2hhbmdlKGJvb2xlYW4gcmVjZWl2aW5nKTsKIApAQCAtMzg1LDYg
KzQwNyw3IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbiB7CiAgICAgcHVibGljIEljZVRy
YW5zcG9ydHNUeXBlIGljZVRyYW5zcG9ydHNUeXBlOwogICAgIHB1YmxpYyBMaXN0PEljZVNlcnZl
cj4gaWNlU2VydmVyczsKICAgICBwdWJsaWMgQnVuZGxlUG9saWN5IGJ1bmRsZVBvbGljeTsKKyAg
ICBATnVsbGFibGUgcHVibGljIFJ0Y0NlcnRpZmljYXRlUGVtIGNlcnRpZmljYXRlOwogICAgIHB1
YmxpYyBSdGNwTXV4UG9saWN5IHJ0Y3BNdXhQb2xpY3k7CiAgICAgcHVibGljIFRjcENhbmRpZGF0
ZVBvbGljeSB0Y3BDYW5kaWRhdGVQb2xpY3k7CiAgICAgcHVibGljIENhbmRpZGF0ZU5ldHdvcmtQ
b2xpY3kgY2FuZGlkYXRlTmV0d29ya1BvbGljeTsKQEAgLTQ2MSw2ICs0ODQsMjUgQEAgcHVibGlj
IGNsYXNzIFBlZXJDb25uZWN0aW9uIHsKICAgICAvLyBldmVyeSBvZmZlci9hbnN3ZXIgbmVnb3Rp
YXRpb24uVGhpcyBpcyBvbmx5IGludGVuZGVkIHRvIGJlIGEgd29ya2Fyb3VuZCBmb3IgY3JidWcu
Y29tLzgzNTk1OAogICAgIHB1YmxpYyBib29sZWFuIGFjdGl2ZVJlc2V0U3J0cFBhcmFtczsKIAor
ICAgIC8qCisgICAgICogRXhwZXJpbWVudGFsIGZsYWcgdGhhdCBlbmFibGVzIGEgdXNlIG9mIG1l
ZGlhIHRyYW5zcG9ydC4gSWYgdGhpcyBpcyB0cnVlLCB0aGUgbWVkaWEgdHJhbnNwb3J0CisgICAg
ICogZmFjdG9yeSBNVVNUIGJlIHByb3ZpZGVkIHRvIHRoZSBQZWVyQ29ubmVjdGlvbkZhY3Rvcnku
CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gdXNlTWVkaWFUcmFuc3BvcnQ7CisKKyAgICAv
KgorICAgICAqIEV4cGVyaW1lbnRhbCBmbGFnIHRoYXQgZW5hYmxlcyBhIHVzZSBvZiBtZWRpYSB0
cmFuc3BvcnQgZm9yIGRhdGEgY2hhbm5lbHMuIElmIHRoaXMgaXMgdHJ1ZSwKKyAgICAgKiB0aGUg
bWVkaWEgdHJhbnNwb3J0IGZhY3RvcnkgTVVTVCBiZSBwcm92aWRlZCB0byB0aGUgUGVlckNvbm5l
Y3Rpb25GYWN0b3J5LgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHVzZU1lZGlhVHJhbnNw
b3J0Rm9yRGF0YUNoYW5uZWxzOworCisgICAgLyoqCisgICAgICogRGVmaW5lcyBhZHZhbmNlZCBv
cHRpb25hbCBjcnlwdG9ncmFwaGljIHNldHRpbmdzIHJlbGF0ZWQgdG8gU1JUUCBhbmQKKyAgICAg
KiBmcmFtZSBlbmNyeXB0aW9uIGZvciBuYXRpdmUgV2ViUlRDLiBTZXR0aW5nIHRoaXMgd2lsbCBv
dmVyd3JpdGUgYW55CisgICAgICogb3B0aW9ucyBzZXQgdGhyb3VnaCB0aGUgUGVlckNvbm5lY3Rp
b25GYWN0b3J5ICh3aGljaCBpcyBkZXByZWNhdGVkKS4KKyAgICAgKi8KKyAgICBATnVsbGFibGUg
cHVibGljIENyeXB0b09wdGlvbnMgY3J5cHRvT3B0aW9uczsKKwogICAgIC8vIFRPRE8oZGVhZGJl
ZWYpOiBJbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBkZWZhdWx0cyBoZXJlLCB3ZSBzaG91bGQg
ZG8KICAgICAvLyBzb21ldGhpbmcgdG8gcGljayB1cCB0aGUgZGVmYXVsdHMgZnJvbSBDKysuIFRo
ZSBPYmplY3RpdmUtQyBlcXVpdmFsZW50CiAgICAgLy8gb2YgUlRDQ29uZmlndXJhdGlvbiBkb2Vz
IHRoYXQuCkBAIC01MDAsNiArNTQyLDkgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uIHsK
ICAgICAgIG5ldHdvcmtQcmVmZXJlbmNlID0gQWRhcHRlclR5cGUuVU5LTk9XTjsKICAgICAgIHNk
cFNlbWFudGljcyA9IFNkcFNlbWFudGljcy5QTEFOX0I7CiAgICAgICBhY3RpdmVSZXNldFNydHBQ
YXJhbXMgPSBmYWxzZTsKKyAgICAgIHVzZU1lZGlhVHJhbnNwb3J0ID0gZmFsc2U7CisgICAgICB1
c2VNZWRpYVRyYW5zcG9ydEZvckRhdGFDaGFubmVscyA9IGZhbHNlOworICAgICAgY3J5cHRvT3B0
aW9ucyA9IG51bGw7CiAgICAgfQogCiAgICAgQENhbGxlZEJ5TmF0aXZlKCJSVENDb25maWd1cmF0
aW9uIikKQEAgLTUxNyw2ICs1NjIsMTIgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uIHsK
ICAgICAgIHJldHVybiBidW5kbGVQb2xpY3k7CiAgICAgfQogCisgICAgQE51bGxhYmxlCisgICAg
QENhbGxlZEJ5TmF0aXZlKCJSVENDb25maWd1cmF0aW9uIikKKyAgICBSdGNDZXJ0aWZpY2F0ZVBl
bSBnZXRDZXJ0aWZpY2F0ZSgpIHsKKyAgICAgIHJldHVybiBjZXJ0aWZpY2F0ZTsKKyAgICB9CisK
ICAgICBAQ2FsbGVkQnlOYXRpdmUoIlJUQ0NvbmZpZ3VyYXRpb24iKQogICAgIFJ0Y3BNdXhQb2xp
Y3kgZ2V0UnRjcE11eFBvbGljeSgpIHsKICAgICAgIHJldHVybiBydGNwTXV4UG9saWN5OwpAQCAt
NjkyLDYgKzc0MywyMiBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb24gewogICAgIGJvb2xl
YW4gZ2V0QWN0aXZlUmVzZXRTcnRwUGFyYW1zKCkgewogICAgICAgcmV0dXJuIGFjdGl2ZVJlc2V0
U3J0cFBhcmFtczsKICAgICB9CisKKyAgICBAQ2FsbGVkQnlOYXRpdmUoIlJUQ0NvbmZpZ3VyYXRp
b24iKQorICAgIGJvb2xlYW4gZ2V0VXNlTWVkaWFUcmFuc3BvcnQoKSB7CisgICAgICByZXR1cm4g
dXNlTWVkaWFUcmFuc3BvcnQ7CisgICAgfQorCisgICAgQENhbGxlZEJ5TmF0aXZlKCJSVENDb25m
aWd1cmF0aW9uIikKKyAgICBib29sZWFuIGdldFVzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5u
ZWxzKCkgeworICAgICAgcmV0dXJuIHVzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzOwor
ICAgIH0KKworICAgIEBOdWxsYWJsZQorICAgIEBDYWxsZWRCeU5hdGl2ZSgiUlRDQ29uZmlndXJh
dGlvbiIpCisgICAgQ3J5cHRvT3B0aW9ucyBnZXRDcnlwdG9PcHRpb25zKCkgeworICAgICAgcmV0
dXJuIGNyeXB0b09wdGlvbnM7CisgICAgfQogICB9OwogCiAgIHByaXZhdGUgZmluYWwgTGlzdDxN
ZWRpYVN0cmVhbT4gbG9jYWxTdHJlYW1zID0gbmV3IEFycmF5TGlzdDw+KCk7CkBAIC03MjEsNiAr
Nzg4LDEwIEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvbiB7CiAgICAgcmV0dXJuIG5hdGl2
ZUdldFJlbW90ZURlc2NyaXB0aW9uKCk7CiAgIH0KIAorICBwdWJsaWMgUnRjQ2VydGlmaWNhdGVQ
ZW0gZ2V0Q2VydGlmaWNhdGUoKSB7CisgICAgcmV0dXJuIG5hdGl2ZUdldENlcnRpZmljYXRlKCk7
CisgIH0KKwogICBwdWJsaWMgRGF0YUNoYW5uZWwgY3JlYXRlRGF0YUNoYW5uZWwoU3RyaW5nIGxh
YmVsLCBEYXRhQ2hhbm5lbC5Jbml0IGluaXQpIHsKICAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRGF0
YUNoYW5uZWwobGFiZWwsIGluaXQpOwogICB9CkBAIC0xMDQ0LDYgKzExMTUsMTAgQEAgcHVibGlj
IGNsYXNzIFBlZXJDb25uZWN0aW9uIHsKICAgICByZXR1cm4gbmF0aXZlSWNlQ29ubmVjdGlvblN0
YXRlKCk7CiAgIH0KIAorICBwdWJsaWMgUGVlckNvbm5lY3Rpb25TdGF0ZSBjb25uZWN0aW9uU3Rh
dGUoKSB7CisgICAgcmV0dXJuIG5hdGl2ZUNvbm5lY3Rpb25TdGF0ZSgpOworICB9CisKICAgcHVi
bGljIEljZUdhdGhlcmluZ1N0YXRlIGljZUdhdGhlcmluZ1N0YXRlKCkgewogICAgIHJldHVybiBu
YXRpdmVJY2VHYXRoZXJpbmdTdGF0ZSgpOwogICB9CkBAIC0xMTA3LDYgKzExODIsNyBAQCBwdWJs
aWMgY2xhc3MgUGVlckNvbm5lY3Rpb24gewogICBwcml2YXRlIG5hdGl2ZSBsb25nIG5hdGl2ZUdl
dE5hdGl2ZVBlZXJDb25uZWN0aW9uKCk7CiAgIHByaXZhdGUgbmF0aXZlIFNlc3Npb25EZXNjcmlw
dGlvbiBuYXRpdmVHZXRMb2NhbERlc2NyaXB0aW9uKCk7CiAgIHByaXZhdGUgbmF0aXZlIFNlc3Np
b25EZXNjcmlwdGlvbiBuYXRpdmVHZXRSZW1vdGVEZXNjcmlwdGlvbigpOworICBwcml2YXRlIG5h
dGl2ZSBSdGNDZXJ0aWZpY2F0ZVBlbSBuYXRpdmVHZXRDZXJ0aWZpY2F0ZSgpOwogICBwcml2YXRl
IG5hdGl2ZSBEYXRhQ2hhbm5lbCBuYXRpdmVDcmVhdGVEYXRhQ2hhbm5lbChTdHJpbmcgbGFiZWws
IERhdGFDaGFubmVsLkluaXQgaW5pdCk7CiAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlQ3Jl
YXRlT2ZmZXIoU2RwT2JzZXJ2ZXIgb2JzZXJ2ZXIsIE1lZGlhQ29uc3RyYWludHMgY29uc3RyYWlu
dHMpOwogICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZUNyZWF0ZUFuc3dlcihTZHBPYnNlcnZl
ciBvYnNlcnZlciwgTWVkaWFDb25zdHJhaW50cyBjb25zdHJhaW50cyk7CkBAIC0xMTE3LDYgKzEx
OTMsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb24gewogICBwcml2YXRlIG5hdGl2ZSBi
b29sZWFuIG5hdGl2ZVNldEJpdHJhdGUoSW50ZWdlciBtaW4sIEludGVnZXIgY3VycmVudCwgSW50
ZWdlciBtYXgpOwogICBwcml2YXRlIG5hdGl2ZSBTaWduYWxpbmdTdGF0ZSBuYXRpdmVTaWduYWxp
bmdTdGF0ZSgpOwogICBwcml2YXRlIG5hdGl2ZSBJY2VDb25uZWN0aW9uU3RhdGUgbmF0aXZlSWNl
Q29ubmVjdGlvblN0YXRlKCk7CisgIHByaXZhdGUgbmF0aXZlIFBlZXJDb25uZWN0aW9uU3RhdGUg
bmF0aXZlQ29ubmVjdGlvblN0YXRlKCk7CiAgIHByaXZhdGUgbmF0aXZlIEljZUdhdGhlcmluZ1N0
YXRlIG5hdGl2ZUljZUdhdGhlcmluZ1N0YXRlKCk7CiAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0
aXZlQ2xvc2UoKTsKICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlUGVl
ckNvbm5lY3Rpb25PYnNlcnZlcihPYnNlcnZlciBvYnNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3Jn
L3dlYnJ0Yy9QZWVyQ29ubmVjdGlvbkZhY3RvcnkuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1BlZXJDb25u
ZWN0aW9uRmFjdG9yeS5qYXZhCmluZGV4IGViOThlOTIzZjZjYzg1NmNmODA2MGU1ZGVjNjdlOTAz
YjhlYzlkZTAuLjAxOGZiNzZlODU3MGM0Mzc5YzRmMzFhM2RhNjZlZjlmYjcyMzRiOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL2FwaS9vcmcvd2VicnRjL1BlZXJDb25uZWN0aW9uRmFjdG9yeS5qYXZhCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcv
d2VicnRjL1BlZXJDb25uZWN0aW9uRmFjdG9yeS5qYXZhCkBAIC0xNCw2ICsxNCw3IEBAIGltcG9y
dCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9y
dCBqYXZheC5hbm5vdGF0aW9uLk51bGxhYmxlOwogaW1wb3J0IG9yZy53ZWJydGMuTG9nZ2luZy5T
ZXZlcml0eTsKK2ltcG9ydCBvcmcud2VicnRjLlBlZXJDb25uZWN0aW9uOwogaW1wb3J0IG9yZy53
ZWJydGMuYXVkaW8uQXVkaW9EZXZpY2VNb2R1bGU7CiBpbXBvcnQgb3JnLndlYnJ0Yy5hdWRpby5M
ZWdhY3lBdWRpb0RldmljZU1vZHVsZTsKIApAQCAtMTIyLDggKzEyMyw2IEBAIHB1YmxpYyBjbGFz
cyBQZWVyQ29ubmVjdGlvbkZhY3RvcnkgewogICAgIHB1YmxpYyBpbnQgbmV0d29ya0lnbm9yZU1h
c2s7CiAgICAgcHVibGljIGJvb2xlYW4gZGlzYWJsZUVuY3J5cHRpb247CiAgICAgcHVibGljIGJv
b2xlYW4gZGlzYWJsZU5ldHdvcmtNb25pdG9yOwotICAgIHB1YmxpYyBib29sZWFuIGVuYWJsZUFl
czEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7Ci0gICAgcHVibGljIGJvb2xlYW4gZW5hYmxlR2NtQ3J5
cHRvU3VpdGVzOwogCiAgICAgQENhbGxlZEJ5TmF0aXZlKCJPcHRpb25zIikKICAgICBpbnQgZ2V0
TmV0d29ya0lnbm9yZU1hc2soKSB7CkBAIC0xMzksMjUgKzEzOCwyMCBAQCBwdWJsaWMgY2xhc3Mg
UGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKICAgICBib29sZWFuIGdldERpc2FibGVOZXR3b3JrTW9u
aXRvcigpIHsKICAgICAgIHJldHVybiBkaXNhYmxlTmV0d29ya01vbml0b3I7CiAgICAgfQotCi0g
ICAgQENhbGxlZEJ5TmF0aXZlKCJPcHRpb25zIikKLSAgICBib29sZWFuIGdldEVuYWJsZUFlczEy
OFNoYTFfMzJDcnlwdG9DaXBoZXIoKSB7Ci0gICAgICByZXR1cm4gZW5hYmxlQWVzMTI4U2hhMV8z
MkNyeXB0b0NpcGhlcjsKLSAgICB9Ci0KLSAgICBAQ2FsbGVkQnlOYXRpdmUoIk9wdGlvbnMiKQot
ICAgIGJvb2xlYW4gZ2V0RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKCkgewotICAgICAgcmV0dXJuIGVu
YWJsZUdjbUNyeXB0b1N1aXRlczsKLSAgICB9CiAgIH0KIAogICBwdWJsaWMgc3RhdGljIGNsYXNz
IEJ1aWxkZXIgewotICAgIHByaXZhdGUgQE51bGxhYmxlIE9wdGlvbnMgb3B0aW9uczsKLSAgICBw
cml2YXRlIEBOdWxsYWJsZSBBdWRpb0RldmljZU1vZHVsZSBhdWRpb0RldmljZU1vZHVsZSA9IG5l
dyBMZWdhY3lBdWRpb0RldmljZU1vZHVsZSgpOwotICAgIHByaXZhdGUgQE51bGxhYmxlIFZpZGVv
RW5jb2RlckZhY3RvcnkgZW5jb2RlckZhY3Rvcnk7Ci0gICAgcHJpdmF0ZSBATnVsbGFibGUgVmlk
ZW9EZWNvZGVyRmFjdG9yeSBkZWNvZGVyRmFjdG9yeTsKLSAgICBwcml2YXRlIEBOdWxsYWJsZSBB
dWRpb1Byb2Nlc3NpbmdGYWN0b3J5IGF1ZGlvUHJvY2Vzc2luZ0ZhY3Rvcnk7Ci0gICAgcHJpdmF0
ZSBATnVsbGFibGUgRmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5SW50ZXJmYWNlIGZlY0NvbnRy
b2xsZXJGYWN0b3J5RmFjdG9yeTsKKyAgICBATnVsbGFibGUgcHJpdmF0ZSBPcHRpb25zIG9wdGlv
bnM7CisgICAgQE51bGxhYmxlIHByaXZhdGUgQXVkaW9EZXZpY2VNb2R1bGUgYXVkaW9EZXZpY2VN
b2R1bGUgPSBuZXcgTGVnYWN5QXVkaW9EZXZpY2VNb2R1bGUoKTsKKyAgICBwcml2YXRlIEF1ZGlv
RW5jb2RlckZhY3RvcnlGYWN0b3J5IGF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5ID0KKyAgICAg
ICAgbmV3IEJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSgpOworICAgIHByaXZhdGUg
QXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkgYXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkgPQor
ICAgICAgICBuZXcgQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5KCk7CisgICAgQE51
bGxhYmxlIHByaXZhdGUgVmlkZW9FbmNvZGVyRmFjdG9yeSB2aWRlb0VuY29kZXJGYWN0b3J5Owor
ICAgIEBOdWxsYWJsZSBwcml2YXRlIFZpZGVvRGVjb2RlckZhY3RvcnkgdmlkZW9EZWNvZGVyRmFj
dG9yeTsKKyAgICBATnVsbGFibGUgcHJpdmF0ZSBBdWRpb1Byb2Nlc3NpbmdGYWN0b3J5IGF1ZGlv
UHJvY2Vzc2luZ0ZhY3Rvcnk7CisgICAgQE51bGxhYmxlIHByaXZhdGUgRmVjQ29udHJvbGxlckZh
Y3RvcnlGYWN0b3J5SW50ZXJmYWNlIGZlY0NvbnRyb2xsZXJGYWN0b3J5RmFjdG9yeTsKKyAgICBA
TnVsbGFibGUgcHJpdmF0ZSBNZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5IG1lZGlhVHJhbnNw
b3J0RmFjdG9yeUZhY3Rvcnk7CiAKICAgICBwcml2YXRlIEJ1aWxkZXIoKSB7fQogCkBAIC0xNzEs
MTMgKzE2NSwzMyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKICAgICAg
IHJldHVybiB0aGlzOwogICAgIH0KIAotICAgIHB1YmxpYyBCdWlsZGVyIHNldFZpZGVvRW5jb2Rl
ckZhY3RvcnkoVmlkZW9FbmNvZGVyRmFjdG9yeSBlbmNvZGVyRmFjdG9yeSkgewotICAgICAgdGhp
cy5lbmNvZGVyRmFjdG9yeSA9IGVuY29kZXJGYWN0b3J5OworICAgIHB1YmxpYyBCdWlsZGVyIHNl
dEF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5KAorICAgICAgICBBdWRpb0VuY29kZXJGYWN0b3J5
RmFjdG9yeSBhdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSkgeworICAgICAgaWYgKGF1ZGlvRW5j
b2RlckZhY3RvcnlGYWN0b3J5ID09IG51bGwpIHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxB
cmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICJQZWVyQ29ubmVjdGlvbkZhY3RvcnkuQnVp
bGRlciBkb2VzIG5vdCBhY2NlcHQgYSBudWxsIEF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5LiIp
OworICAgICAgfQorICAgICAgdGhpcy5hdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSA9IGF1ZGlv
RW5jb2RlckZhY3RvcnlGYWN0b3J5OworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAg
cHVibGljIEJ1aWxkZXIgc2V0QXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkoCisgICAgICAgIEF1
ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5IGF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5KSB7Cisg
ICAgICBpZiAoYXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnkgPT0gbnVsbCkgeworICAgICAgICB0
aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgIlBlZXJDb25u
ZWN0aW9uRmFjdG9yeS5CdWlsZGVyIGRvZXMgbm90IGFjY2VwdCBhIG51bGwgQXVkaW9EZWNvZGVy
RmFjdG9yeUZhY3RvcnkuIik7CisgICAgICB9CisgICAgICB0aGlzLmF1ZGlvRGVjb2RlckZhY3Rv
cnlGYWN0b3J5ID0gYXVkaW9EZWNvZGVyRmFjdG9yeUZhY3Rvcnk7CisgICAgICByZXR1cm4gdGhp
czsKKyAgICB9CisKKyAgICBwdWJsaWMgQnVpbGRlciBzZXRWaWRlb0VuY29kZXJGYWN0b3J5KFZp
ZGVvRW5jb2RlckZhY3RvcnkgdmlkZW9FbmNvZGVyRmFjdG9yeSkgeworICAgICAgdGhpcy52aWRl
b0VuY29kZXJGYWN0b3J5ID0gdmlkZW9FbmNvZGVyRmFjdG9yeTsKICAgICAgIHJldHVybiB0aGlz
OwogICAgIH0KIAotICAgIHB1YmxpYyBCdWlsZGVyIHNldFZpZGVvRGVjb2RlckZhY3RvcnkoVmlk
ZW9EZWNvZGVyRmFjdG9yeSBkZWNvZGVyRmFjdG9yeSkgewotICAgICAgdGhpcy5kZWNvZGVyRmFj
dG9yeSA9IGRlY29kZXJGYWN0b3J5OworICAgIHB1YmxpYyBCdWlsZGVyIHNldFZpZGVvRGVjb2Rl
ckZhY3RvcnkoVmlkZW9EZWNvZGVyRmFjdG9yeSB2aWRlb0RlY29kZXJGYWN0b3J5KSB7CisgICAg
ICB0aGlzLnZpZGVvRGVjb2RlckZhY3RvcnkgPSB2aWRlb0RlY29kZXJGYWN0b3J5OwogICAgICAg
cmV0dXJuIHRoaXM7CiAgICAgfQogCkBAIC0xOTYsOSArMjEwLDE3IEBAIHB1YmxpYyBjbGFzcyBQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnkgewogICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfQogCisgICAg
LyoqIFNldHMgYSBNZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5IGZvciBhIFBlZXJDb25uZWN0
aW9uRmFjdG9yeS4gKi8KKyAgICBwdWJsaWMgQnVpbGRlciBzZXRNZWRpYVRyYW5zcG9ydEZhY3Rv
cnlGYWN0b3J5KAorICAgICAgICBNZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5IG1lZGlhVHJh
bnNwb3J0RmFjdG9yeUZhY3RvcnkpIHsKKyAgICAgIHRoaXMubWVkaWFUcmFuc3BvcnRGYWN0b3J5
RmFjdG9yeSA9IG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3Rvcnk7CisgICAgICByZXR1cm4gdGhp
czsKKyAgICB9CisKICAgICBwdWJsaWMgUGVlckNvbm5lY3Rpb25GYWN0b3J5IGNyZWF0ZVBlZXJD
b25uZWN0aW9uRmFjdG9yeSgpIHsKLSAgICAgIHJldHVybiBuZXcgUGVlckNvbm5lY3Rpb25GYWN0
b3J5KG9wdGlvbnMsIGF1ZGlvRGV2aWNlTW9kdWxlLCBlbmNvZGVyRmFjdG9yeSwgZGVjb2RlckZh
Y3RvcnksCi0gICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nRmFjdG9yeSwgZmVjQ29udHJvbGxlckZh
Y3RvcnlGYWN0b3J5KTsKKyAgICAgIHJldHVybiBuZXcgUGVlckNvbm5lY3Rpb25GYWN0b3J5KG9w
dGlvbnMsIGF1ZGlvRGV2aWNlTW9kdWxlLCBhdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeSwKKyAg
ICAgICAgICBhdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeSwgdmlkZW9FbmNvZGVyRmFjdG9yeSwg
dmlkZW9EZWNvZGVyRmFjdG9yeSwKKyAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdGYWN0b3J5LCBm
ZWNDb250cm9sbGVyRmFjdG9yeUZhY3RvcnksIG1lZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3Rvcnkp
OwogICAgIH0KICAgfQogCkBAIC0yNzcsMTUgKzI5OSwyNCBAQCBwdWJsaWMgY2xhc3MgUGVlckNv
bm5lY3Rpb25GYWN0b3J5IHsKICAgfQogCiAgIHByaXZhdGUgUGVlckNvbm5lY3Rpb25GYWN0b3J5
KE9wdGlvbnMgb3B0aW9ucywgQE51bGxhYmxlIEF1ZGlvRGV2aWNlTW9kdWxlIGF1ZGlvRGV2aWNl
TW9kdWxlLAotICAgICAgQE51bGxhYmxlIFZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2RlckZhY3Rv
cnksIEBOdWxsYWJsZSBWaWRlb0RlY29kZXJGYWN0b3J5IGRlY29kZXJGYWN0b3J5LAorICAgICAg
QXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkgYXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnksCisg
ICAgICBBdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeSBhdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9y
eSwKKyAgICAgIEBOdWxsYWJsZSBWaWRlb0VuY29kZXJGYWN0b3J5IHZpZGVvRW5jb2RlckZhY3Rv
cnksCisgICAgICBATnVsbGFibGUgVmlkZW9EZWNvZGVyRmFjdG9yeSB2aWRlb0RlY29kZXJGYWN0
b3J5LAogICAgICAgQE51bGxhYmxlIEF1ZGlvUHJvY2Vzc2luZ0ZhY3RvcnkgYXVkaW9Qcm9jZXNz
aW5nRmFjdG9yeSwKLSAgICAgIEBOdWxsYWJsZSBGZWNDb250cm9sbGVyRmFjdG9yeUZhY3RvcnlJ
bnRlcmZhY2UgZmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5KSB7CisgICAgICBATnVsbGFibGUg
RmVjQ29udHJvbGxlckZhY3RvcnlGYWN0b3J5SW50ZXJmYWNlIGZlY0NvbnRyb2xsZXJGYWN0b3J5
RmFjdG9yeSwKKyAgICAgIEBOdWxsYWJsZSBNZWRpYVRyYW5zcG9ydEZhY3RvcnlGYWN0b3J5IG1l
ZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkpIHsKICAgICBjaGVja0luaXRpYWxpemVIYXNCZWVu
Q2FsbGVkKCk7CiAgICAgbmF0aXZlRmFjdG9yeSA9IG5hdGl2ZUNyZWF0ZVBlZXJDb25uZWN0aW9u
RmFjdG9yeShDb250ZXh0VXRpbHMuZ2V0QXBwbGljYXRpb25Db250ZXh0KCksIG9wdGlvbnMsCiAg
ICAgICAgIGF1ZGlvRGV2aWNlTW9kdWxlID09IG51bGwgPyAwIDogYXVkaW9EZXZpY2VNb2R1bGUu
Z2V0TmF0aXZlQXVkaW9EZXZpY2VNb2R1bGVQb2ludGVyKCksCi0gICAgICAgIGVuY29kZXJGYWN0
b3J5LCBkZWNvZGVyRmFjdG9yeSwKKyAgICAgICAgYXVkaW9FbmNvZGVyRmFjdG9yeUZhY3Rvcnku
Y3JlYXRlTmF0aXZlQXVkaW9FbmNvZGVyRmFjdG9yeSgpLAorICAgICAgICBhdWRpb0RlY29kZXJG
YWN0b3J5RmFjdG9yeS5jcmVhdGVOYXRpdmVBdWRpb0RlY29kZXJGYWN0b3J5KCksIHZpZGVvRW5j
b2RlckZhY3RvcnksCisgICAgICAgIHZpZGVvRGVjb2RlckZhY3RvcnksCiAgICAgICAgIGF1ZGlv
UHJvY2Vzc2luZ0ZhY3RvcnkgPT0gbnVsbCA/IDAgOiBhdWRpb1Byb2Nlc3NpbmdGYWN0b3J5LmNy
ZWF0ZU5hdGl2ZSgpLAotICAgICAgICBmZWNDb250cm9sbGVyRmFjdG9yeUZhY3RvcnkgPT0gbnVs
bCA/IDAgOiBmZWNDb250cm9sbGVyRmFjdG9yeUZhY3RvcnkuY3JlYXRlTmF0aXZlKCkpOworICAg
ICAgICBmZWNDb250cm9sbGVyRmFjdG9yeUZhY3RvcnkgPT0gbnVsbCA/IDAgOiBmZWNDb250cm9s
bGVyRmFjdG9yeUZhY3RvcnkuY3JlYXRlTmF0aXZlKCksCisgICAgICAgIG1lZGlhVHJhbnNwb3J0
RmFjdG9yeUZhY3RvcnkgPT0gbnVsbAorICAgICAgICAgICAgPyAwCisgICAgICAgICAgICA6IG1l
ZGlhVHJhbnNwb3J0RmFjdG9yeUZhY3RvcnkuY3JlYXRlTmF0aXZlTWVkaWFUcmFuc3BvcnRGYWN0
b3J5KCkpOwogICAgIGlmIChuYXRpdmVGYWN0b3J5ID09IDApIHsKICAgICAgIHRocm93IG5ldyBS
dW50aW1lRXhjZXB0aW9uKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBQZWVyQ29ubmVjdGlvbkZhY3Rv
cnkhIik7CiAgICAgfQpAQCAtMzY5LDkgKzQwMCwyNSBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5l
Y3Rpb25GYWN0b3J5IHsKICAgICByZXR1cm4gbmV3IE1lZGlhU3RyZWFtKG5hdGl2ZUNyZWF0ZUxv
Y2FsTWVkaWFTdHJlYW0obmF0aXZlRmFjdG9yeSwgbGFiZWwpKTsKICAgfQogCi0gIHB1YmxpYyBW
aWRlb1NvdXJjZSBjcmVhdGVWaWRlb1NvdXJjZShib29sZWFuIGlzU2NyZWVuY2FzdCkgeworICAv
KioKKyAgICogQ3JlYXRlIHZpZGVvIHNvdXJjZSB3aXRoIGdpdmVuIHBhcmFtZXRlcnMuIElmIGFs
aWduVGltZXN0YW1wcyBpcyBmYWxzZSwgdGhlIGNhbGxlciBpcworICAgKiByZXNwb25zaWJsZSBm
b3IgYWxpZ25pbmcgdGhlIGZyYW1lIHRpbWVzdGFtcHMgdG8gcnRjOjpUaW1lTmFub3MoKS4gVGhp
cyBjYW4gYmUgdXNlZCB0byBhY2hpZXZlCisgICAqIGhpZ2hlciBhY2N1cmFjeSBpZiB0aGVyZSBp
cyBhIGJpZyBkZWxheSBiZXR3ZWVuIGZyYW1lIGNyZWF0aW9uIGFuZCBmcmFtZXMgYmVpbmcgZGVs
aXZlcmVkIHRvCisgICAqIHRoZSByZXR1cm5lZCB2aWRlbyBzb3VyY2UuIElmIGFsaWduVGltZXN0
YW1wcyBpcyB0cnVlLCB0aW1lc3RhbXBzIHdpbGwgYmUgYWxpZ25lZCB0bworICAgKiBydGM6OlRp
bWVOYW5vcygpIHdoZW4gdGhleSBhcnJpdmUgdG8gdGhlIHJldHVybmVkIHZpZGVvIHNvdXJjZS4K
KyAgICovCisgIHB1YmxpYyBWaWRlb1NvdXJjZSBjcmVhdGVWaWRlb1NvdXJjZShib29sZWFuIGlz
U2NyZWVuY2FzdCwgYm9vbGVhbiBhbGlnblRpbWVzdGFtcHMpIHsKICAgICBjaGVja1BlZXJDb25u
ZWN0aW9uRmFjdG9yeUV4aXN0cygpOwotICAgIHJldHVybiBuZXcgVmlkZW9Tb3VyY2UobmF0aXZl
Q3JlYXRlVmlkZW9Tb3VyY2UobmF0aXZlRmFjdG9yeSwgaXNTY3JlZW5jYXN0KSk7CisgICAgcmV0
dXJuIG5ldyBWaWRlb1NvdXJjZShuYXRpdmVDcmVhdGVWaWRlb1NvdXJjZShuYXRpdmVGYWN0b3J5
LCBpc1NjcmVlbmNhc3QsIGFsaWduVGltZXN0YW1wcykpOworICB9CisKKyAgLyoqCisgICAqIFNh
bWUgYXMgYWJvdmUgd2l0aCBhbGlnblRpbWVzdGFtcHMgc2V0IHRvIHRydWUuCisgICAqCisgICAq
IEBzZWUgI2NyZWF0ZVZpZGVvU291cmNlKGJvb2xlYW4sIGJvb2xlYW4pCisgICAqLworICBwdWJs
aWMgVmlkZW9Tb3VyY2UgY3JlYXRlVmlkZW9Tb3VyY2UoYm9vbGVhbiBpc1NjcmVlbmNhc3QpIHsK
KyAgICByZXR1cm4gY3JlYXRlVmlkZW9Tb3VyY2UoaXNTY3JlZW5jYXN0LCAvKiBhbGlnblRpbWVz
dGFtcHM9ICovIHRydWUpOwogICB9CiAKICAgcHVibGljIFZpZGVvVHJhY2sgY3JlYXRlVmlkZW9U
cmFjayhTdHJpbmcgaWQsIFZpZGVvU291cmNlIHNvdXJjZSkgewpAQCAtNDg2LDE1ICs1MzMsMTgg
QEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uRmFjdG9yeSB7CiAgIHByaXZhdGUgc3RhdGlj
IG5hdGl2ZSB2b2lkIG5hdGl2ZVNodXRkb3duSW50ZXJuYWxUcmFjZXIoKTsKICAgcHJpdmF0ZSBz
dGF0aWMgbmF0aXZlIGJvb2xlYW4gbmF0aXZlU3RhcnRJbnRlcm5hbFRyYWNpbmdDYXB0dXJlKFN0
cmluZyB0cmFjaW5nRmlsZW5hbWUpOwogICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRp
dmVTdG9wSW50ZXJuYWxUcmFjaW5nQ2FwdHVyZSgpOworCiAgIHByaXZhdGUgc3RhdGljIG5hdGl2
ZSBsb25nIG5hdGl2ZUNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeShDb250ZXh0IGNvbnRleHQs
IE9wdGlvbnMgb3B0aW9ucywKLSAgICAgIGxvbmcgbmF0aXZlQXVkaW9EZXZpY2VNb2R1bGUsIFZp
ZGVvRW5jb2RlckZhY3RvcnkgZW5jb2RlckZhY3RvcnksCi0gICAgICBWaWRlb0RlY29kZXJGYWN0
b3J5IGRlY29kZXJGYWN0b3J5LCBsb25nIG5hdGl2ZUF1ZGlvUHJvY2Vzc29yLAotICAgICAgbG9u
ZyBuYXRpdmVGZWNDb250cm9sbGVyRmFjdG9yeSk7CisgICAgICBsb25nIG5hdGl2ZUF1ZGlvRGV2
aWNlTW9kdWxlLCBsb25nIGF1ZGlvRW5jb2RlckZhY3RvcnksIGxvbmcgYXVkaW9EZWNvZGVyRmFj
dG9yeSwKKyAgICAgIFZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2RlckZhY3RvcnksIFZpZGVvRGVj
b2RlckZhY3RvcnkgZGVjb2RlckZhY3RvcnksCisgICAgICBsb25nIG5hdGl2ZUF1ZGlvUHJvY2Vz
c29yLCBsb25nIG5hdGl2ZUZlY0NvbnRyb2xsZXJGYWN0b3J5LCBsb25nIG1lZGlhVHJhbnNwb3J0
RmFjdG9yeSk7CisKICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlUGVl
ckNvbm5lY3Rpb24obG9uZyBmYWN0b3J5LAogICAgICAgUGVlckNvbm5lY3Rpb24uUlRDQ29uZmln
dXJhdGlvbiBydGNDb25maWcsIE1lZGlhQ29uc3RyYWludHMgY29uc3RyYWludHMsIGxvbmcgbmF0
aXZlT2JzZXJ2ZXIsCiAgICAgICBTU0xDZXJ0aWZpY2F0ZVZlcmlmaWVyIHNzbENlcnRpZmljYXRl
VmVyaWZpZXIpOwogICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVDcmVhdGVMb2Nh
bE1lZGlhU3RyZWFtKGxvbmcgZmFjdG9yeSwgU3RyaW5nIGxhYmVsKTsKLSAgcHJpdmF0ZSBzdGF0
aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlVmlkZW9Tb3VyY2UobG9uZyBmYWN0b3J5LCBib29s
ZWFuIGlzX3NjcmVlbmNhc3QpOworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVD
cmVhdGVWaWRlb1NvdXJjZSgKKyAgICAgIGxvbmcgZmFjdG9yeSwgYm9vbGVhbiBpc19zY3JlZW5j
YXN0LCBib29sZWFuIGFsaWduVGltZXN0YW1wcyk7CiAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBs
b25nIG5hdGl2ZUNyZWF0ZVZpZGVvVHJhY2soCiAgICAgICBsb25nIGZhY3RvcnksIFN0cmluZyBp
ZCwgbG9uZyBuYXRpdmVWaWRlb1NvdXJjZSk7CiAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBsb25n
IG5hdGl2ZUNyZWF0ZUF1ZGlvU291cmNlKGxvbmcgZmFjdG9yeSwgTWVkaWFDb25zdHJhaW50cyBj
b25zdHJhaW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9SdGNDZXJ0aWZpY2F0ZVBlbS5q
YXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvYXBpL29yZy93ZWJydGMvUnRjQ2VydGlmaWNhdGVQZW0uamF2YQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDcw
MTM1YjNlMTJmMjdlZjc1MzU5NmI0NWY5Y2U5ZGRmOTQxNWYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBp
L29yZy93ZWJydGMvUnRjQ2VydGlmaWNhdGVQZW0uamF2YQpAQCAtMCwwICsxLDc1IEBACisvKgor
ICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25h
bCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGlu
IHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkK
KyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53ZWJydGM7CisKK2ltcG9ydCBvcmcud2VicnRj
LlBlZXJDb25uZWN0aW9uOworCisvKioKKyAqIEVhc2lseSBzdG9yYWJsZS9zZXJpYWxpemFibGUg
dmVyc2lvbiBvZiBhIG5hdGl2ZSBDKysgUlRDQ2VydGlmaWNhdGVQRU0uCisgKi8KK3B1YmxpYyBj
bGFzcyBSdGNDZXJ0aWZpY2F0ZVBlbSB7CisgIC8qKiBQRU0gc3RyaW5nIHJlcHJlc2VudGF0aW9u
IG9mIHRoZSBwcml2YXRlIGtleS4gKi8KKyAgcHVibGljIGZpbmFsIFN0cmluZyBwcml2YXRlS2V5
OworICAvKiogUEVNIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2VydGlmaWNhdGUuICov
CisgIHB1YmxpYyBmaW5hbCBTdHJpbmcgY2VydGlmaWNhdGU7CisgIC8qKiBEZWZhdWx0IGV4cGly
YXRpb24gdGltZSBvZiAzMCBkYXlzLiAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIERF
RkFVTFRfRVhQSVJZID0gNjAgKiA2MCAqIDI0ICogMzA7CisKKyAgLyoqIEluc3RhbnRpYXRlIGFu
IFJ0Y0NlcnRpZmljYXRlUGVtIG9iamVjdCBmcm9tIHN0b3JlZCBzdHJpbmdzLiAqLworICBAQ2Fs
bGVkQnlOYXRpdmUKKyAgcHVibGljIFJ0Y0NlcnRpZmljYXRlUGVtKFN0cmluZyBwcml2YXRlS2V5
LCBTdHJpbmcgY2VydGlmaWNhdGUpIHsKKyAgICB0aGlzLnByaXZhdGVLZXkgPSBwcml2YXRlS2V5
OworICAgIHRoaXMuY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZTsKKyAgfQorCisgIEBDYWxsZWRC
eU5hdGl2ZQorICBTdHJpbmcgZ2V0UHJpdmF0ZUtleSgpIHsKKyAgICByZXR1cm4gcHJpdmF0ZUtl
eTsKKyAgfQorCisgIEBDYWxsZWRCeU5hdGl2ZQorICBTdHJpbmcgZ2V0Q2VydGlmaWNhdGUoKSB7
CisgICAgcmV0dXJuIGNlcnRpZmljYXRlOworICB9CisKKyAgLyoqCisgICAqIEdlbmVyYXRlIGEg
bmV3IFJ0Y0NlcnRpZmljYXRlUGVtIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YgS2V5VHlw
ZSA9IEVDRFNBIGFuZAorICAgKiBleHBpcmVzID0gMzAgZGF5cy4KKyAgICovCisgIHB1YmxpYyBz
dGF0aWMgUnRjQ2VydGlmaWNhdGVQZW0gZ2VuZXJhdGVDZXJ0aWZpY2F0ZSgpIHsKKyAgICByZXR1
cm4gbmF0aXZlR2VuZXJhdGVDZXJ0aWZpY2F0ZShQZWVyQ29ubmVjdGlvbi5LZXlUeXBlLkVDRFNB
LCBERUZBVUxUX0VYUElSWSk7CisgIH0KKworICAvKioKKyAgICogR2VuZXJhdGUgYSBuZXcgUnRj
Q2VydGlmaWNhdGVQZW0gd2l0aCBhIGN1c3RvbSBLZXlUeXBlIGFuZCB0aGUgZGVmYXVsdCBzZXR0
aW5nIG9mCisgICAqIGV4cGlyZXMgPSAzMCBkYXlzLgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBS
dGNDZXJ0aWZpY2F0ZVBlbSBnZW5lcmF0ZUNlcnRpZmljYXRlKFBlZXJDb25uZWN0aW9uLktleVR5
cGUga2V5VHlwZSkgeworICAgIHJldHVybiBuYXRpdmVHZW5lcmF0ZUNlcnRpZmljYXRlKGtleVR5
cGUsIERFRkFVTFRfRVhQSVJZKTsKKyAgfQorCisgIC8qKgorICAgKiBHZW5lcmF0ZSBhIG5ldyBS
dGNDZXJ0aWZpY2F0ZVBlbSB3aXRoIGEgY3VzdG9tIGV4cGlyZXMgYW5kIHRoZSBkZWZhdWx0IHNl
dHRpbmcgb2YKKyAgICogS2V5VHlwZSA9IEVDRFNBLgorICAgKi8KKyAgcHVibGljIHN0YXRpYyBS
dGNDZXJ0aWZpY2F0ZVBlbSBnZW5lcmF0ZUNlcnRpZmljYXRlKGxvbmcgZXhwaXJlcykgeworICAg
IHJldHVybiBuYXRpdmVHZW5lcmF0ZUNlcnRpZmljYXRlKFBlZXJDb25uZWN0aW9uLktleVR5cGUu
RUNEU0EsIGV4cGlyZXMpOworICB9CisKKyAgLyoqIEdlbmVyYXRlIGEgbmV3IFJ0Y0NlcnRpZmlj
YXRlUGVtIHdpdGggYSBjdXN0b20gS2V5VHlwZSBhbmQgYSBjdXN0b20gZXhwaXJlcy4gKi8KKyAg
cHVibGljIHN0YXRpYyBSdGNDZXJ0aWZpY2F0ZVBlbSBnZW5lcmF0ZUNlcnRpZmljYXRlKAorICAg
ICAgUGVlckNvbm5lY3Rpb24uS2V5VHlwZSBrZXlUeXBlLCBsb25nIGV4cGlyZXMpIHsKKyAgICBy
ZXR1cm4gbmF0aXZlR2VuZXJhdGVDZXJ0aWZpY2F0ZShrZXlUeXBlLCBleHBpcmVzKTsKKyAgfQor
CisgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBSdGNDZXJ0aWZpY2F0ZVBlbSBuYXRpdmVHZW5lcmF0
ZUNlcnRpZmljYXRlKAorICAgICAgUGVlckNvbm5lY3Rpb24uS2V5VHlwZSBrZXlUeXBlLCBsb25n
IGV4cGlyZXMpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvUnRwVHJhbnNjZWl2ZXIuamF2
YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L2FwaS9vcmcvd2VicnRjL1J0cFRyYW5zY2VpdmVyLmphdmEKaW5kZXggYTRhNWFhMDU0MDU4MWM2
MTFiMDE3YWFlZGY2OWJhMDU0MmNkMGZmZi4uN2Y4NzVlNmM4ZWFkNDZkMjgxYzMxMzFlOTZjNzJi
YTU1NDkyNzhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvUnRwVHJhbnNjZWl2ZXIuamF2YQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9hcGkvb3JnL3dlYnJ0Yy9SdHBUcmFuc2NlaXZlci5qYXZhCkBAIC0xMyw2ICsxMyw3IEBAIHBh
Y2thZ2Ugb3JnLndlYnJ0YzsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGph
dmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBvcmcu
d2VicnRjLk1lZGlhU3RyZWFtVHJhY2s7CiAKIC8qKgogICogSmF2YSB3cmFwcGVyIGZvciBhIEMr
KyBSdHBUcmFuc2NlaXZlckludGVyZmFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1NvZnR3
YXJlVmlkZW9EZWNvZGVyRmFjdG9yeS5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0Rl
Y29kZXJGYWN0b3J5LmphdmEKaW5kZXggODZkZmI3YTJjNmYyMTFlY2E0MWZiYzNhOWM0MWE2M2Vh
MjAwNzMzMy4uZjQyMWYxNmIxYTFmOGI5N2JmZjA3ZTNiOWM3MzgwYTZiOWNlOTFiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvYXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0RlY29kZXJGYWN0b3J5LmphdmEKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBp
L29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0RlY29kZXJGYWN0b3J5LmphdmEKQEAgLTI3LDEwICsy
NywxMCBAQCBwdWJsaWMgY2xhc3MgU29mdHdhcmVWaWRlb0RlY29kZXJGYWN0b3J5IGltcGxlbWVu
dHMgVmlkZW9EZWNvZGVyRmFjdG9yeSB7CiAgIEBPdmVycmlkZQogICBwdWJsaWMgVmlkZW9EZWNv
ZGVyIGNyZWF0ZURlY29kZXIoVmlkZW9Db2RlY0luZm8gY29kZWNUeXBlKSB7CiAgICAgaWYgKGNv
ZGVjVHlwZS5nZXROYW1lKCkuZXF1YWxzSWdub3JlQ2FzZSgiVlA4IikpIHsKLSAgICAgIHJldHVy
biBuZXcgVlA4RGVjb2RlcigpOworICAgICAgcmV0dXJuIG5ldyBMaWJ2cHhWcDhEZWNvZGVyKCk7
CiAgICAgfQotICAgIGlmIChjb2RlY1R5cGUuZ2V0TmFtZSgpLmVxdWFsc0lnbm9yZUNhc2UoIlZQ
OSIpICYmIFZQOURlY29kZXIubmF0aXZlSXNTdXBwb3J0ZWQoKSkgewotICAgICAgcmV0dXJuIG5l
dyBWUDlEZWNvZGVyKCk7CisgICAgaWYgKGNvZGVjVHlwZS5nZXROYW1lKCkuZXF1YWxzSWdub3Jl
Q2FzZSgiVlA5IikgJiYgTGlidnB4VnA5RGVjb2Rlci5uYXRpdmVJc1N1cHBvcnRlZCgpKSB7Cisg
ICAgICByZXR1cm4gbmV3IExpYnZweFZwOURlY29kZXIoKTsKICAgICB9CiAKICAgICByZXR1cm4g
bnVsbDsKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljIGNsYXNzIFNvZnR3YXJlVmlkZW9EZWNvZGVy
RmFjdG9yeSBpbXBsZW1lbnRzIFZpZGVvRGVjb2RlckZhY3RvcnkgewogICAgIExpc3Q8VmlkZW9D
b2RlY0luZm8+IGNvZGVjcyA9IG5ldyBBcnJheUxpc3Q8VmlkZW9Db2RlY0luZm8+KCk7CiAKICAg
ICBjb2RlY3MuYWRkKG5ldyBWaWRlb0NvZGVjSW5mbygiVlA4IiwgbmV3IEhhc2hNYXA8PigpKSk7
Ci0gICAgaWYgKFZQOURlY29kZXIubmF0aXZlSXNTdXBwb3J0ZWQoKSkgeworICAgIGlmIChMaWJ2
cHhWcDlEZWNvZGVyLm5hdGl2ZUlzU3VwcG9ydGVkKCkpIHsKICAgICAgIGNvZGVjcy5hZGQobmV3
IFZpZGVvQ29kZWNJbmZvKCJWUDkiLCBuZXcgSGFzaE1hcDw+KCkpKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL2FwaS9vcmcvd2VicnRjL1NvZnR3YXJlVmlkZW9FbmNvZGVyRmFjdG9yeS5qYXZhIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29y
Zy93ZWJydGMvU29mdHdhcmVWaWRlb0VuY29kZXJGYWN0b3J5LmphdmEKaW5kZXggYTJkZGYzNmMz
ODlkN2MxNDI5MzlhY2JkNjM4NjI3ZmNhYmY2Y2FlYi4uM2MzNmM0ZDU2YTI4MzMxMzE1MWZkOWZl
ZGFmODgzNzY3NDdhMjM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0Vu
Y29kZXJGYWN0b3J5LmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU29mdHdhcmVWaWRlb0VuY29kZXJG
YWN0b3J5LmphdmEKQEAgLTIwLDEwICsyMCwxMCBAQCBwdWJsaWMgY2xhc3MgU29mdHdhcmVWaWRl
b0VuY29kZXJGYWN0b3J5IGltcGxlbWVudHMgVmlkZW9FbmNvZGVyRmFjdG9yeSB7CiAgIEBPdmVy
cmlkZQogICBwdWJsaWMgVmlkZW9FbmNvZGVyIGNyZWF0ZUVuY29kZXIoVmlkZW9Db2RlY0luZm8g
aW5mbykgewogICAgIGlmIChpbmZvLm5hbWUuZXF1YWxzSWdub3JlQ2FzZSgiVlA4IikpIHsKLSAg
ICAgIHJldHVybiBuZXcgVlA4RW5jb2RlcigpOworICAgICAgcmV0dXJuIG5ldyBMaWJ2cHhWcDhF
bmNvZGVyKCk7CiAgICAgfQotICAgIGlmIChpbmZvLm5hbWUuZXF1YWxzSWdub3JlQ2FzZSgiVlA5
IikgJiYgVlA5RW5jb2Rlci5uYXRpdmVJc1N1cHBvcnRlZCgpKSB7Ci0gICAgICByZXR1cm4gbmV3
IFZQOUVuY29kZXIoKTsKKyAgICBpZiAoaW5mby5uYW1lLmVxdWFsc0lnbm9yZUNhc2UoIlZQOSIp
ICYmIExpYnZweFZwOUVuY29kZXIubmF0aXZlSXNTdXBwb3J0ZWQoKSkgeworICAgICAgcmV0dXJu
IG5ldyBMaWJ2cHhWcDlFbmNvZGVyKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGw7CkBAIC0z
OCw3ICszOCw3IEBAIHB1YmxpYyBjbGFzcyBTb2Z0d2FyZVZpZGVvRW5jb2RlckZhY3RvcnkgaW1w
bGVtZW50cyBWaWRlb0VuY29kZXJGYWN0b3J5IHsKICAgICBMaXN0PFZpZGVvQ29kZWNJbmZvPiBj
b2RlY3MgPSBuZXcgQXJyYXlMaXN0PFZpZGVvQ29kZWNJbmZvPigpOwogCiAgICAgY29kZWNzLmFk
ZChuZXcgVmlkZW9Db2RlY0luZm8oIlZQOCIsIG5ldyBIYXNoTWFwPD4oKSkpOwotICAgIGlmIChW
UDlFbmNvZGVyLm5hdGl2ZUlzU3VwcG9ydGVkKCkpIHsKKyAgICBpZiAoTGlidnB4VnA5RW5jb2Rl
ci5uYXRpdmVJc1N1cHBvcnRlZCgpKSB7CiAgICAgICBjb2RlY3MuYWRkKG5ldyBWaWRlb0NvZGVj
SW5mbygiVlA5IiwgbmV3IEhhc2hNYXA8PigpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3Jn
L3dlYnJ0Yy9TdXJmYWNlVGV4dHVyZUhlbHBlci5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvU3VyZmFjZVRl
eHR1cmVIZWxwZXIuamF2YQppbmRleCBiYjY3ZDFmOWZlMGE2MmM3MDEwOWE5MjQ4MjI1MmM0YzQ0
ZGUwZTBiLi4yOWRmNjg4OTAxZTE2MjZkMWYzZTA0NmE2ZDQxZjk5ZDc0ODZiZDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9hcGkvb3JnL3dlYnJ0Yy9TdXJmYWNlVGV4dHVyZUhlbHBlci5qYXZhCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2Vi
cnRjL1N1cmZhY2VUZXh0dXJlSGVscGVyLmphdmEKQEAgLTM2LDEwICszNiwxNCBAQCBwdWJsaWMg
Y2xhc3MgU3VyZmFjZVRleHR1cmVIZWxwZXIgewogICAvKioKICAgICogQ29uc3RydWN0IGEgbmV3
IFN1cmZhY2VUZXh0dXJlSGVscGVyIHNoYXJpbmcgT3BlbkdMIHJlc291cmNlcyB3aXRoIHxzaGFy
ZWRDb250ZXh0fC4gQSBkZWRpY2F0ZWQKICAgICogdGhyZWFkIGFuZCBoYW5kbGVyIGlzIGNyZWF0
ZWQgZm9yIGhhbmRsaW5nIHRoZSBTdXJmYWNlVGV4dHVyZS4gTWF5IHJldHVybiBudWxsIGlmIEVH
TCBmYWlscyB0bwotICAgKiBpbml0aWFsaXplIGEgcGl4ZWwgYnVmZmVyIHN1cmZhY2UgYW5kIG1h
a2UgaXQgY3VycmVudC4KKyAgICogaW5pdGlhbGl6ZSBhIHBpeGVsIGJ1ZmZlciBzdXJmYWNlIGFu
ZCBtYWtlIGl0IGN1cnJlbnQuIElmIGFsaWduVGltZXN0YW1wcyBpcyB0cnVlLCB0aGUgZnJhbWUK
KyAgICogdGltZXN0YW1wcyB3aWxsIGJlIGFsaWduZWQgdG8gcnRjOjpUaW1lTmFub3MoKS4gSWYg
ZnJhbWUgdGltZXN0YW1wcyBhcmUgYWxpZ25lZCB0bworICAgKiBydGM6OlRpbWVOYW5vcygpIHRo
ZXJlIGlzIG5vIG5lZWQgZm9yIGFsaWduaW5nIHRpbWVzdGFtcHMgYWdhaW4gaW4KKyAgICogUGVl
ckNvbm5lY3Rpb25GYWN0b3J5LmNyZWF0ZVZpZGVvU291cmNlKCkuIFRoaXMgbWFrZXMgdGhlIHRp
bWVzdGFtcHMgbW9yZSBhY2N1cmF0ZSBhbmQKKyAgICogY2xvc2VyIHRvIGFjdHVhbCBjcmVhdGlv
biB0aW1lLgogICAgKi8KICAgcHVibGljIHN0YXRpYyBTdXJmYWNlVGV4dHVyZUhlbHBlciBjcmVh
dGUoCi0gICAgICBmaW5hbCBTdHJpbmcgdGhyZWFkTmFtZSwgZmluYWwgRWdsQmFzZS5Db250ZXh0
IHNoYXJlZENvbnRleHQpIHsKKyAgICAgIGZpbmFsIFN0cmluZyB0aHJlYWROYW1lLCBmaW5hbCBF
Z2xCYXNlLkNvbnRleHQgc2hhcmVkQ29udGV4dCwgYm9vbGVhbiBhbGlnblRpbWVzdGFtcHMpIHsK
ICAgICBmaW5hbCBIYW5kbGVyVGhyZWFkIHRocmVhZCA9IG5ldyBIYW5kbGVyVGhyZWFkKHRocmVh
ZE5hbWUpOwogICAgIHRocmVhZC5zdGFydCgpOwogICAgIGZpbmFsIEhhbmRsZXIgaGFuZGxlciA9
IG5ldyBIYW5kbGVyKHRocmVhZC5nZXRMb29wZXIoKSk7CkBAIC01Myw3ICs1Nyw3IEBAIHB1Ymxp
YyBjbGFzcyBTdXJmYWNlVGV4dHVyZUhlbHBlciB7CiAgICAgICBAT3ZlcnJpZGUKICAgICAgIHB1
YmxpYyBTdXJmYWNlVGV4dHVyZUhlbHBlciBjYWxsKCkgewogICAgICAgICB0cnkgewotICAgICAg
ICAgIHJldHVybiBuZXcgU3VyZmFjZVRleHR1cmVIZWxwZXIoc2hhcmVkQ29udGV4dCwgaGFuZGxl
cik7CisgICAgICAgICAgcmV0dXJuIG5ldyBTdXJmYWNlVGV4dHVyZUhlbHBlcihzaGFyZWRDb250
ZXh0LCBoYW5kbGVyLCBhbGlnblRpbWVzdGFtcHMpOwogICAgICAgICB9IGNhdGNoIChSdW50aW1l
RXhjZXB0aW9uIGUpIHsKICAgICAgICAgICBMb2dnaW5nLmUoVEFHLCB0aHJlYWROYW1lICsgIiBj
cmVhdGUgZmFpbHVyZSIsIGUpOwogICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtNjIsMTEgKzY2
LDIyIEBAIHB1YmxpYyBjbGFzcyBTdXJmYWNlVGV4dHVyZUhlbHBlciB7CiAgICAgfSk7CiAgIH0K
IAorICAvKioKKyAgICogU2FtZSBhcyBhYm92ZSB3aXRoIGFsaWduVGltZXN0YW1wcyBzZXQgdG8g
ZmFsc2UuCisgICAqCisgICAqIEBzZWUgI2NyZWF0ZShTdHJpbmcsIEVnbEJhc2UuQ29udGV4dCwg
Ym9vbGVhbikKKyAgICovCisgIHB1YmxpYyBzdGF0aWMgU3VyZmFjZVRleHR1cmVIZWxwZXIgY3Jl
YXRlKAorICAgICAgZmluYWwgU3RyaW5nIHRocmVhZE5hbWUsIGZpbmFsIEVnbEJhc2UuQ29udGV4
dCBzaGFyZWRDb250ZXh0KSB7CisgICAgcmV0dXJuIGNyZWF0ZSh0aHJlYWROYW1lLCBzaGFyZWRD
b250ZXh0LCAvKiBhbGlnblRpbWVzdGFtcHM9ICovIGZhbHNlKTsKKyAgfQorCiAgIHByaXZhdGUg
ZmluYWwgSGFuZGxlciBoYW5kbGVyOwogICBwcml2YXRlIGZpbmFsIEVnbEJhc2UgZWdsQmFzZTsK
ICAgcHJpdmF0ZSBmaW5hbCBTdXJmYWNlVGV4dHVyZSBzdXJmYWNlVGV4dHVyZTsKICAgcHJpdmF0
ZSBmaW5hbCBpbnQgb2VzVGV4dHVyZUlkOwogICBwcml2YXRlIGZpbmFsIFl1dkNvbnZlcnRlciB5
dXZDb252ZXJ0ZXIgPSBuZXcgWXV2Q29udmVydGVyKCk7CisgIEBOdWxsYWJsZSBwcml2YXRlIGZp
bmFsIFRpbWVzdGFtcEFsaWduZXIgdGltZXN0YW1wQWxpZ25lcjsKIAogICAvLyBUaGVzZSB2YXJp
YWJsZXMgYXJlIG9ubHkgYWNjZXNzZWQgZnJvbSB0aGUgfGhhbmRsZXJ8IHRocmVhZC4KICAgQE51
bGxhYmxlIHByaXZhdGUgVmlkZW9TaW5rIGxpc3RlbmVyOwpAQCAtOTUsMTEgKzExMCwxMyBAQCBw
dWJsaWMgY2xhc3MgU3VyZmFjZVRleHR1cmVIZWxwZXIgewogICAgIH0KICAgfTsKIAotICBwcml2
YXRlIFN1cmZhY2VUZXh0dXJlSGVscGVyKEVnbEJhc2UuQ29udGV4dCBzaGFyZWRDb250ZXh0LCBI
YW5kbGVyIGhhbmRsZXIpIHsKKyAgcHJpdmF0ZSBTdXJmYWNlVGV4dHVyZUhlbHBlcigKKyAgICAg
IEVnbEJhc2UuQ29udGV4dCBzaGFyZWRDb250ZXh0LCBIYW5kbGVyIGhhbmRsZXIsIGJvb2xlYW4g
YWxpZ25UaW1lc3RhbXBzKSB7CiAgICAgaWYgKGhhbmRsZXIuZ2V0TG9vcGVyKCkuZ2V0VGhyZWFk
KCkgIT0gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKSkgewogICAgICAgdGhyb3cgbmV3IElsbGVnYWxT
dGF0ZUV4Y2VwdGlvbigiU3VyZmFjZVRleHR1cmVIZWxwZXIgbXVzdCBiZSBjcmVhdGVkIG9uIHRo
ZSBoYW5kbGVyIHRocmVhZCIpOwogICAgIH0KICAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyOwor
ICAgIHRoaXMudGltZXN0YW1wQWxpZ25lciA9IGFsaWduVGltZXN0YW1wcyA/IG5ldyBUaW1lc3Rh
bXBBbGlnbmVyKCkgOiBudWxsOwogCiAgICAgZWdsQmFzZSA9IEVnbEJhc2UuY3JlYXRlKHNoYXJl
ZENvbnRleHQsIEVnbEJhc2UuQ09ORklHX1BJWEVMX0JVRkZFUik7CiAgICAgdHJ5IHsKQEAgLTI2
NCw3ICsyODEsMTAgQEAgcHVibGljIGNsYXNzIFN1cmZhY2VUZXh0dXJlSGVscGVyIHsKIAogICAg
IGZpbmFsIGZsb2F0W10gdHJhbnNmb3JtTWF0cml4ID0gbmV3IGZsb2F0WzE2XTsKICAgICBzdXJm
YWNlVGV4dHVyZS5nZXRUcmFuc2Zvcm1NYXRyaXgodHJhbnNmb3JtTWF0cml4KTsKLSAgICBmaW5h
bCBsb25nIHRpbWVzdGFtcE5zID0gc3VyZmFjZVRleHR1cmUuZ2V0VGltZXN0YW1wKCk7CisgICAg
bG9uZyB0aW1lc3RhbXBOcyA9IHN1cmZhY2VUZXh0dXJlLmdldFRpbWVzdGFtcCgpOworICAgIGlm
ICh0aW1lc3RhbXBBbGlnbmVyICE9IG51bGwpIHsKKyAgICAgIHRpbWVzdGFtcE5zID0gdGltZXN0
YW1wQWxpZ25lci50cmFuc2xhdGVUaW1lc3RhbXAodGltZXN0YW1wTnMpOworICAgIH0KICAgICBp
ZiAodGV4dHVyZVdpZHRoID09IDAgfHwgdGV4dHVyZUhlaWdodCA9PSAwKSB7CiAgICAgICB0aHJv
dyBuZXcgUnVudGltZUV4Y2VwdGlvbigiVGV4dHVyZSBzaXplIGhhcyBub3QgYmVlbiBzZXQuIik7
CiAgICAgfQpAQCAtMjg5LDUgKzMwOSw4IEBAIHB1YmxpYyBjbGFzcyBTdXJmYWNlVGV4dHVyZUhl
bHBlciB7CiAgICAgc3VyZmFjZVRleHR1cmUucmVsZWFzZSgpOwogICAgIGVnbEJhc2UucmVsZWFz
ZSgpOwogICAgIGhhbmRsZXIuZ2V0TG9vcGVyKCkucXVpdCgpOworICAgIGlmICh0aW1lc3RhbXBB
bGlnbmVyICE9IG51bGwpIHsKKyAgICAgIHRpbWVzdGFtcEFsaWduZXIuZGlzcG9zZSgpOworICAg
IH0KICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25lci5qYXZh
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
YXBpL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNGJlZDRk
OGZiYTQ0ODRkNWQxZWE1ZTg0YTBhMWEyOGYyOTk1NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkvb3Jn
L3dlYnJ0Yy9UaW1lc3RhbXBBbGlnbmVyLmphdmEKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqICBD
b3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50
ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCisgKi8KKworcGFja2FnZSBvcmcud2VicnRjOworCisvKioKKyAqIFRoZSBUaW1lc3RhbXBB
bGlnbmVyIGNsYXNzIGhlbHBzIHRyYW5zbGF0aW5nIGNhbWVyYSB0aW1lc3RhbXBzIGludG8gdGhl
IHNhbWUgdGltZXNjYWxlIGFzIGlzCisgKiB1c2VkIGJ5IHJ0Yzo6VGltZU5hbm9zKCkuIFNvbWUg
Y2FtZXJhcyBoYXZlIGJ1aWx0IGluIHRpbWVzdGFtcGluZyB3aGljaCBpcyBtb3JlIGFjY3VyYXRl
IHRoYW4KKyAqIHJlYWRpbmcgdGhlIHN5c3RlbSBjbG9jaywgYnV0IHVzaW5nIGEgZGlmZmVyZW50
IGVwb2NoIGFuZCB1bmtub3duIGNsb2NrIGRyaWZ0LiBGcmFtZSB0aW1lc3RhbXBzCisgKiBpbiB3
ZWJydGMgc2hvdWxkIHVzZSBydGM6OlRpbWVOYW5vcyAoc3lzdGVtIG1vbm90b25pYyB0aW1lKSwg
YW5kIHRoaXMgY2xhc3MgcHJvdmlkZXMgYSBmaWx0ZXIKKyAqIHdoaWNoIGxldHMgdXMgdXNlIHRo
ZSBydGM6OlRpbWVOYW5vcyB0aW1lc2NhbGUsIGFuZCBhdCB0aGUgc2FtZSB0aW1lIHRha2UgYWR2
YW50YWdlIG9mIGhpZ2hlcgorICogYWNjdXJhY3kgb2YgdGhlIGNhbWVyYSBjbG9jay4gVGhpcyBj
bGFzcyBpcyBhIHdyYXBwZXIgb24gdG9wIG9mIHJ0Yzo6VGltZXN0YW1wQWxpZ25lci4KKyAqLwor
cHVibGljIGNsYXNzIFRpbWVzdGFtcEFsaWduZXIgeworICAvKioKKyAgICogV3JhcHBlciBhcm91
bmQgcnRjOjpUaW1lTmFub3MoKS4gVGhpcyBpcyBub3JtYWxseSBzYW1lIGFzIFN5c3RlbS5uYW5v
VGltZSgpLCBidXQgY2FsbCB0aGlzCisgICAqIGZ1bmN0aW9uIHRvIGJlIHNhZmUuCisgICAqLwor
ICBwdWJsaWMgc3RhdGljIGxvbmcgZ2V0UnRjVGltZU5hbm9zKCkgeworICAgIHJldHVybiBuYXRp
dmVSdGNUaW1lTmFub3MoKTsKKyAgfQorCisgIHByaXZhdGUgdm9sYXRpbGUgbG9uZyBuYXRpdmVU
aW1lc3RhbXBBbGlnbmVyID0gbmF0aXZlQ3JlYXRlVGltZXN0YW1wQWxpZ25lcigpOworCisgIC8q
KgorICAgKiBUcmFuc2xhdGVzIGNhbWVyYSB0aW1lc3RhbXBzIHRvIHRoZSBzYW1lIHRpbWVzY2Fs
ZSBhcyBpcyB1c2VkIGJ5IHJ0Yzo6VGltZU5hbm9zKCkuCisgICAqIHxjYW1lcmFUaW1lTnN8IGlz
IGFzc3VtZWQgdG8gYmUgYWNjdXJhdGUsIGJ1dCB3aXRoIGFuIHVua25vd24gZXBvY2ggYW5kIGNs
b2NrIGRyaWZ0LiBSZXR1cm5zCisgICAqIHRoZSB0cmFuc2xhdGVkIHRpbWVzdGFtcC4KKyAgICov
CisgIHB1YmxpYyBsb25nIHRyYW5zbGF0ZVRpbWVzdGFtcChsb25nIGNhbWVyYVRpbWVOcykgewor
ICAgIGNoZWNrTmF0aXZlQWxpZ25lckV4aXN0cygpOworICAgIHJldHVybiBuYXRpdmVUcmFuc2xh
dGVUaW1lc3RhbXAobmF0aXZlVGltZXN0YW1wQWxpZ25lciwgY2FtZXJhVGltZU5zKTsKKyAgfQor
CisgIC8qKiBEaXNwb3NlIG5hdGl2ZSB0aW1lc3RhbXAgYWxpZ25lci4gKi8KKyAgcHVibGljIHZv
aWQgZGlzcG9zZSgpIHsKKyAgICBjaGVja05hdGl2ZUFsaWduZXJFeGlzdHMoKTsKKyAgICBuYXRp
dmVSZWxlYXNlVGltZXN0YW1wQWxpZ25lcihuYXRpdmVUaW1lc3RhbXBBbGlnbmVyKTsKKyAgICBu
YXRpdmVUaW1lc3RhbXBBbGlnbmVyID0gMDsKKyAgfQorCisgIHByaXZhdGUgdm9pZCBjaGVja05h
dGl2ZUFsaWduZXJFeGlzdHMoKSB7CisgICAgaWYgKG5hdGl2ZVRpbWVzdGFtcEFsaWduZXIgPT0g
MCkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVGltZXN0YW1wQWxp
Z25lciBoYXMgYmVlbiBkaXNwb3NlZC4iKTsKKyAgICB9CisgIH0KKworICBwcml2YXRlIHN0YXRp
YyBuYXRpdmUgbG9uZyBuYXRpdmVSdGNUaW1lTmFub3MoKTsKKyAgcHJpdmF0ZSBzdGF0aWMgbmF0
aXZlIGxvbmcgbmF0aXZlQ3JlYXRlVGltZXN0YW1wQWxpZ25lcigpOworICBwcml2YXRlIHN0YXRp
YyBuYXRpdmUgdm9pZCBuYXRpdmVSZWxlYXNlVGltZXN0YW1wQWxpZ25lcihsb25nIHRpbWVzdGFt
cEFsaWduZXIpOworICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgbG9uZyBuYXRpdmVUcmFuc2xhdGVU
aW1lc3RhbXAobG9uZyB0aW1lc3RhbXBBbGlnbmVyLCBsb25nIGNhbWVyYVRpbWVOcyk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9hcGkvb3JnL3dlYnJ0Yy9WaWRlb0VuY29kZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1Zp
ZGVvRW5jb2Rlci5qYXZhCmluZGV4IDhkYzc1ODI5MjZiMjQzYWI5ZDYwZDIyOGU2NmI1YzAzNmNm
YWZlMmIuLmFmYzVjZDAyMzlkMWE1YTJlMjA4MmNhOTFkZDdjOGEzNGY1OGUwYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L2FwaS9vcmcvd2VicnRjL1ZpZGVvRW5jb2Rlci5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1ZpZGVv
RW5jb2Rlci5qYXZhCkBAIC0yMTAsMTQgKzIxMCw2IEBAIHB1YmxpYyBpbnRlcmZhY2UgVmlkZW9F
bmNvZGVyIHsKICAgICovCiAgIEBDYWxsZWRCeU5hdGl2ZSBWaWRlb0NvZGVjU3RhdHVzIGVuY29k
ZShWaWRlb0ZyYW1lIGZyYW1lLCBFbmNvZGVJbmZvIGluZm8pOwogCi0gIC8qKgotICAgKiBJbmZv
cm1zIHRoZSBlbmNvZGVyIG9mIHRoZSBwYWNrZXQgbG9zcyBhbmQgdGhlIHJvdW5kLXRyaXAgdGlt
ZSBvZiB0aGUgbmV0d29yay4KLSAgICoKLSAgICogQHBhcmFtIHBhY2tldExvc3MgSG93IG1hbnkg
cGFja2V0cyBhcmUgbG9zdCBvbiBhdmVyYWdlIHBlciAyNTUgcGFja2V0cy4KLSAgICogQHBhcmFt
IHJvdW5kVHJpcFRpbWVNcyBSb3VuZC10cmlwIHRpbWUgb2YgdGhlIG5ldHdvcmsgaW4gbWlsbGlz
ZWNvbmRzLgotICAgKi8KLSAgQENhbGxlZEJ5TmF0aXZlIFZpZGVvQ29kZWNTdGF0dXMgc2V0Q2hh
bm5lbFBhcmFtZXRlcnMoc2hvcnQgcGFja2V0TG9zcywgbG9uZyByb3VuZFRyaXBUaW1lTXMpOwot
CiAgIC8qKiBTZXRzIHRoZSBiaXRyYXRlIGFsbG9jYXRpb24gYW5kIHRoZSB0YXJnZXQgZnJhbWVy
YXRlIGZvciB0aGUgZW5jb2Rlci4gKi8KICAgQENhbGxlZEJ5TmF0aXZlIFZpZGVvQ29kZWNTdGF0
dXMgc2V0UmF0ZUFsbG9jYXRpb24oQml0cmF0ZUFsbG9jYXRpb24gYWxsb2NhdGlvbiwgaW50IGZy
YW1lcmF0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1ZpZGVvU291cmNlLmphdmEgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9hcGkv
b3JnL3dlYnJ0Yy9WaWRlb1NvdXJjZS5qYXZhCmluZGV4IDdmOWYzZTUzMjNmZjUzMGY4M2YxNzFi
NTdiOTdmZTQxZmEzM2NhYzcuLmE4ZWY2NjIwYWNmY2I0YTQzYzliY2RlZjZhZmQyODRlZDlkOTA4
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL2FwaS9vcmcvd2VicnRjL1ZpZGVvU291cmNlLmphdmEKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvYXBpL29yZy93
ZWJydGMvVmlkZW9Tb3VyY2UuamF2YQpAQCAtMzAsNyArMzAsMjAgQEAgcHVibGljIGNsYXNzIFZp
ZGVvU291cmNlIGV4dGVuZHMgTWVkaWFTb3VyY2UgewogICAgKiBtYWludGFpbiB0aGUgaW5wdXQg
b3JpZW50YXRpb24sIHNvIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIGUuZy4gMTI4MHg3MjAgb3IgNzIw
eDEyODAgaXMgcmVxdWVzdGVkLgogICAgKi8KICAgcHVibGljIHZvaWQgYWRhcHRPdXRwdXRGb3Jt
YXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZnBzKSB7Ci0gICAgbmF0aXZlQWRhcHRPdXRw
dXRGb3JtYXQoZ2V0TmF0aXZlVmlkZW9UcmFja1NvdXJjZSgpLCB3aWR0aCwgaGVpZ2h0LCBmcHMp
OworICAgIGZpbmFsIGludCBtYXhTaWRlID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7CisgICAg
ZmluYWwgaW50IG1pblNpZGUgPSBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KTsKKyAgICBhZGFwdE91
dHB1dEZvcm1hdChtYXhTaWRlLCBtaW5TaWRlLCBtaW5TaWRlLCBtYXhTaWRlLCBmcHMpOworICB9
CisKKyAgLyoqCisgICAqIFNhbWUgYXMgYWJvdmUsIGJ1dCBhbGxvd3Mgc2V0dGluZyB0d28gZGlm
ZmVyZW50IHRhcmdldCByZXNvbHV0aW9ucyBkZXBlbmRpbmcgb24gaW5jb21pbmcKKyAgICogZnJh
bWUgb3JpZW50YXRpb24uIFRoaXMgZ2l2ZXMgbW9yZSBmaW5lLWdyYWluZWQgY29udHJvbCBhbmQg
Y2FuIGUuZy4gYmUgdXNlZCB0byBmb3JjZSBsYW5kc2NhcGUKKyAgICogdmlkZW8gdG8gYmUgY3Jv
cHBlZCB0byBwb3J0cmFpdCB2aWRlby4KKyAgICovCisgIHB1YmxpYyB2b2lkIGFkYXB0T3V0cHV0
Rm9ybWF0KAorICAgICAgaW50IGxhbmRzY2FwZVdpZHRoLCBpbnQgbGFuZHNjYXBlSGVpZ2h0LCBp
bnQgcG9ydHJhaXRXaWR0aCwgaW50IHBvcnRyYWl0SGVpZ2h0LCBpbnQgZnBzKSB7CisgICAgbmF0
aXZlQWRhcHRPdXRwdXRGb3JtYXQoZ2V0TmF0aXZlVmlkZW9UcmFja1NvdXJjZSgpLCBsYW5kc2Nh
cGVXaWR0aCwgbGFuZHNjYXBlSGVpZ2h0LAorICAgICAgICBwb3J0cmFpdFdpZHRoLCBwb3J0cmFp
dEhlaWdodCwgZnBzKTsKICAgfQogCiAgIHB1YmxpYyBDYXB0dXJlck9ic2VydmVyIGdldENhcHR1
cmVyT2JzZXJ2ZXIoKSB7CkBAIC00NCw1ICs1Nyw2IEBAIHB1YmxpYyBjbGFzcyBWaWRlb1NvdXJj
ZSBleHRlbmRzIE1lZGlhU291cmNlIHsKIAogICAvLyBSZXR1cm5zIHNvdXJjZS0+aW50ZXJuYWwo
KSBmcm9tIHdlYnJ0Yzo6VmlkZW9UcmFja1NvdXJjZVByb3h5LgogICBwcml2YXRlIHN0YXRpYyBu
YXRpdmUgbG9uZyBuYXRpdmVHZXRJbnRlcm5hbFNvdXJjZShsb25nIHNvdXJjZSk7Ci0gIHByaXZh
dGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZUFkYXB0T3V0cHV0Rm9ybWF0KGxvbmcgc291cmNl
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBmcHMpOworICBwcml2YXRlIHN0YXRpYyBuYXRp
dmUgdm9pZCBuYXRpdmVBZGFwdE91dHB1dEZvcm1hdChsb25nIHNvdXJjZSwgaW50IGxhbmRzY2Fw
ZVdpZHRoLAorICAgICAgaW50IGxhbmRzY2FwZUhlaWdodCwgaW50IHBvcnRyYWl0V2lkdGgsIGlu
dCBwb3J0cmFpdEhlaWdodCwgaW50IGZwcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250
ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9Db2RlY3NGYWN0b3J5RmFjdG9yeVRlc3Qu
amF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0J1aWx0aW5BdWRpb0NvZGVj
c0ZhY3RvcnlGYWN0b3J5VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2ZWUwZTkzMmUxY2MyMDJhZmRk
ZDFkOWJhN2ZlMzRlZTU3NzUxNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0
cy9zcmMvb3JnL3dlYnJ0Yy9CdWlsdGluQXVkaW9Db2RlY3NGYWN0b3J5RmFjdG9yeVRlc3QuamF2
YQpAQCAtMCwwICsxLDU4IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCitwYWNrYWdlIG9yZy53ZWJy
dGM7CisKK2ltcG9ydCBzdGF0aWMgY29tLmdvb2dsZS5jb21tb24udHJ1dGguVHJ1dGguYXNzZXJ0
VGhhdDsKKworaW1wb3J0IGFuZHJvaWQuc3VwcG9ydC50ZXN0LmZpbHRlcnMuU21hbGxUZXN0Owor
CitpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9y
dCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuSlVu
aXQ0OworCitAUnVuV2l0aChKVW5pdDQuY2xhc3MpCitwdWJsaWMgZmluYWwgY2xhc3MgQnVpbHRp
bkF1ZGlvQ29kZWNzRmFjdG9yeUZhY3RvcnlUZXN0IHsKKyAgQEJlZm9yZQorICBwdWJsaWMgdm9p
ZCBzZXRVcCgpIHsKKyAgICBTeXN0ZW0ubG9hZExpYnJhcnkoVGVzdENvbnN0YW50cy5OQVRJVkVf
TElCUkFSWSk7CisgIH0KKworICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRl
c3RBdWRpb0VuY29kZXJGYWN0b3J5RmFjdG9yeVRlc3QoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAg
ICBCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkgZmFjdG9yeSA9IG5ldyBCdWlsdGlu
QXVkaW9FbmNvZGVyRmFjdG9yeUZhY3RvcnkoKTsKKyAgICBsb25nIGFlZiA9IDA7CisgICAgdHJ5
IHsKKyAgICAgIGFlZiA9IGZhY3RvcnkuY3JlYXRlTmF0aXZlQXVkaW9FbmNvZGVyRmFjdG9yeSgp
OworICAgICAgYXNzZXJ0VGhhdChhZWYpLmlzTm90RXF1YWxUbygwKTsKKyAgICB9IGZpbmFsbHkg
eworICAgICAgaWYgKGFlZiAhPSAwKSB7CisgICAgICAgIEpuaUNvbW1vbi5uYXRpdmVSZWxlYXNl
UmVmKGFlZik7CisgICAgICB9CisgICAgfQorICB9CisKKyAgQFRlc3QKKyAgQFNtYWxsVGVzdAor
ICBwdWJsaWMgdm9pZCB0ZXN0QXVkaW9EZWNvZGVyRmFjdG9yeUZhY3RvcnlUZXN0KCkgdGhyb3dz
IEV4Y2VwdGlvbiB7CisgICAgQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5IGZhY3Rv
cnkgPSBuZXcgQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlGYWN0b3J5KCk7CisgICAgbG9uZyBh
ZGYgPSAwOworICAgIHRyeSB7CisgICAgICBhZGYgPSBmYWN0b3J5LmNyZWF0ZU5hdGl2ZUF1ZGlv
RGVjb2RlckZhY3RvcnkoKTsKKyAgICAgIGFzc2VydFRoYXQoYWRmKS5pc05vdEVxdWFsVG8oMCk7
CisgICAgfSBmaW5hbGx5IHsKKyAgICAgIGlmIChhZGYgIT0gMCkgeworICAgICAgICBKbmlDb21t
b24ubmF0aXZlUmVsZWFzZVJlZihhZGYpOworICAgICAgfQorICAgIH0KKyAgfQorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMUNhcHR1cmVyVXNp
bmdCeXRlQnVmZmVyVGVzdC5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMv
Q2FtZXJhMUNhcHR1cmVyVXNpbmdCeXRlQnVmZmVyVGVzdC5qYXZhCmluZGV4IGVmNzY2OTEwMmY5
YmI2NDhiNmRiMTU0MjExMDRjOWIwNjZlOWIzNWQuLjE3YjA5NzdkNTk1ZmQyN2FmZjU4NjYxZWY5
YWE3ZDFjYzdkODc1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2Vi
cnRjL0NhbWVyYTFDYXB0dXJlclVzaW5nQnl0ZUJ1ZmZlclRlc3QuamF2YQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50
YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmExQ2FwdHVyZXJVc2luZ0J5dGVCdWZmZXJU
ZXN0LmphdmEKQEAgLTE2OSw2ICsxNjksMTQgQEAgcHVibGljIGNsYXNzIENhbWVyYTFDYXB0dXJl
clVzaW5nQnl0ZUJ1ZmZlclRlc3QgewogICAgIGZpeHR1cmVzLnNjYWxlQ2FtZXJhT3V0cHV0KCk7
CiAgIH0KIAorICAvLyBUaGlzIHRlc3QgdGhhdCBmcmFtZXMgZm9yd2FyZGVkIHRvIGEgcmVuZGVy
ZXIgaXMgY3JvcHBlZCB0byBhIG5ldyBvcmllbnRhdGlvbiBpZgorICAvLyBhZGFwdE91dHB1dEZv
cm1hdCBpcyBjYWxsZWQgaW4gc3VjaCBhIHdheS4gVGhpcyB0ZXN0IGJvdGggSmF2YSBhbmQgQysr
IHBhcnRzIG9mIG9mIHRoZSBzdGFjay4KKyAgQFRlc3QKKyAgQE1lZGl1bVRlc3QKKyAgcHVibGlj
IHZvaWQgdGVzdENyb3BDYW1lcmFPdXRwdXQoKSB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24g
eworICAgIGZpeHR1cmVzLmNyb3BDYW1lcmFPdXRwdXQoKTsKKyAgfQorCiAgIC8vIFRoaXMgdGVz
dCB0aGF0IGFuIGVycm9yIGlzIHJlcG9ydGVkIGlmIHRoZSBjYW1lcmEgaXMgYWxyZWFkeSBvcGVu
ZWQKICAgLy8gd2hlbiBDYW1lcmFWaWRlb0NhcHR1cmVyIGlzIHN0YXJ0ZWQuCiAgIEBUZXN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmExQ2FwdHVy
ZXJVc2luZ1RleHR1cmVUZXN0LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0
Yy9DYW1lcmExQ2FwdHVyZXJVc2luZ1RleHR1cmVUZXN0LmphdmEKaW5kZXggMjhmYTgyNWFkNzRl
NjFjYzk0MDZiMzJkMjRiOWI2ZGJlNjBjODg1NS4uNGRjMDAzNzI2YTcxOTZjNjI2YTQ3NTYwZjk0
OTE4YzQxNTExNTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJy
dGMvQ2FtZXJhMUNhcHR1cmVyVXNpbmdUZXh0dXJlVGVzdC5qYXZhCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlv
bnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYTFDYXB0dXJlclVzaW5nVGV4dHVyZVRlc3QuamF2
YQpAQCAtMTcyLDYgKzE3MiwxNCBAQCBwdWJsaWMgY2xhc3MgQ2FtZXJhMUNhcHR1cmVyVXNpbmdU
ZXh0dXJlVGVzdCB7CiAgICAgZml4dHVyZXMuc2NhbGVDYW1lcmFPdXRwdXQoKTsKICAgfQogCisg
IC8vIFRoaXMgdGVzdCB0aGF0IGZyYW1lcyBmb3J3YXJkZWQgdG8gYSByZW5kZXJlciBpcyBjcm9w
cGVkIHRvIGEgbmV3IG9yaWVudGF0aW9uIGlmCisgIC8vIGFkYXB0T3V0cHV0Rm9ybWF0IGlzIGNh
bGxlZCBpbiBzdWNoIGEgd2F5LiBUaGlzIHRlc3QgYm90aCBKYXZhIGFuZCBDKysgcGFydHMgb2Yg
b2YgdGhlIHN0YWNrLgorICBAVGVzdAorICBATWVkaXVtVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0
Q3JvcENhbWVyYU91dHB1dCgpIHRocm93cyBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CisgICAgZml4
dHVyZXMuY3JvcENhbWVyYU91dHB1dCgpOworICB9CisKICAgLy8gVGhpcyB0ZXN0IHRoYXQgYW4g
ZXJyb3IgaXMgcmVwb3J0ZWQgaWYgdGhlIGNhbWVyYSBpcyBhbHJlYWR5IG9wZW5lZAogICAvLyB3
aGVuIENhbWVyYVZpZGVvQ2FwdHVyZXIgaXMgc3RhcnRlZC4KICAgQFRlc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2lu
c3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYTJDYXB0dXJlclRlc3QuamF2
YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYTJDYXB0dXJlclRlc3Qu
amF2YQppbmRleCA3N2U4ZDc3ZjBhZWYxZDY1NjhiMWM3YWRhNTM0ZGNiOGM2NDExYmMxLi5mYmE5
NDMxNzZhODU4NmMyOGVjZjQ5MTg3MTM5MjJiNGJmYTRmNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50
YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9DYW1lcmEyQ2FwdHVyZXJUZXN0LmphdmEKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5z
dHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhMkNhcHR1cmVyVGVzdC5qYXZh
CkBAIC0zMDIsNiArMzAyLDE0IEBAIHB1YmxpYyBjbGFzcyBDYW1lcmEyQ2FwdHVyZXJUZXN0IHsK
ICAgICBmaXh0dXJlcy5zY2FsZUNhbWVyYU91dHB1dCgpOwogICB9CiAKKyAgLy8gVGhpcyB0ZXN0
IHRoYXQgZnJhbWVzIGZvcndhcmRlZCB0byBhIHJlbmRlcmVyIGlzIGNyb3BwZWQgdG8gYSBuZXcg
b3JpZW50YXRpb24gaWYKKyAgLy8gYWRhcHRPdXRwdXRGb3JtYXQgaXMgY2FsbGVkIGluIHN1Y2gg
YSB3YXkuIFRoaXMgdGVzdCBib3RoIEphdmEgYW5kIEMrKyBwYXJ0cyBvZiBvZiB0aGUgc3RhY2su
CisgIEBUZXN0CisgIEBNZWRpdW1UZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDcm9wQ2FtZXJhT3V0
cHV0KCkgdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uIHsKKyAgICBmaXh0dXJlcy5jcm9wQ2Ft
ZXJhT3V0cHV0KCk7CisgIH0KKwogICAvLyBUaGlzIHRlc3QgdGhhdCBhbiBlcnJvciBpcyByZXBv
cnRlZCBpZiB0aGUgY2FtZXJhIGlzIGFscmVhZHkgb3BlbmVkCiAgIC8vIHdoZW4gQ2FtZXJhVmlk
ZW9DYXB0dXJlciBpcyBzdGFydGVkLgogICBAVGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9u
dGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhVmlkZW9DYXB0dXJlclRlc3RGaXh0dXJlcy5qYXZh
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQv
aW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvQ2FtZXJhVmlkZW9DYXB0dXJlclRl
c3RGaXh0dXJlcy5qYXZhCmluZGV4IGRkMGQ3ODBkZjA4YzcxOTYyNjAyNjFlZDE4MmQ5YjgzY2M5
ZTViNmQuLmI0N2ZlZTA4ZDE1Nzk2ZjIzNDk4OTYxMjNkY2EwYWM0M2MzYmVlYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL0NhbWVyYVZpZGVvQ2FwdHVyZXJU
ZXN0Rml4dHVyZXMuamF2YQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9D
YW1lcmFWaWRlb0NhcHR1cmVyVGVzdEZpeHR1cmVzLmphdmEKQEAgLTY4OCw2ICs2ODgsNDkgQEAg
Y2xhc3MgQ2FtZXJhVmlkZW9DYXB0dXJlclRlc3RGaXh0dXJlcyB7CiAgICAgYXNzZXJ0VHJ1ZShn
b3RFeHBlY3RlZFJlc29sdXRpb24pOwogICB9CiAKKyAgcHVibGljIHZvaWQgY3JvcENhbWVyYU91
dHB1dCgpIHRocm93cyBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CisgICAgZmluYWwgQ2FwdHVyZXJJ
bnN0YW5jZSBjYXB0dXJlckluc3RhbmNlID0gY3JlYXRlQ2FwdHVyZXIoZmFsc2UgLyogaW5pdGlh
bGl6ZSAqLyk7CisgICAgZmluYWwgVmlkZW9UcmFja1dpdGhSZW5kZXJlciB2aWRlb1RyYWNrV2l0
aFJlbmRlcmVyID0KKyAgICAgICAgY3JlYXRlVmlkZW9UcmFja1dpdGhSZW5kZXJlcihjYXB0dXJl
ckluc3RhbmNlLmNhcHR1cmVyKTsKKyAgICBhc3NlcnRUcnVlKHZpZGVvVHJhY2tXaXRoUmVuZGVy
ZXIucmVuZGVyZXJDYWxsYmFja3Mud2FpdEZvck5leHRGcmFtZVRvUmVuZGVyKCkgPiAwKTsKKwor
ICAgIGZpbmFsIGludCBzdGFydFdpZHRoID0gdmlkZW9UcmFja1dpdGhSZW5kZXJlci5yZW5kZXJl
ckNhbGxiYWNrcy5mcmFtZVdpZHRoKCk7CisgICAgZmluYWwgaW50IHN0YXJ0SGVpZ2h0ID0gdmlk
ZW9UcmFja1dpdGhSZW5kZXJlci5yZW5kZXJlckNhbGxiYWNrcy5mcmFtZUhlaWdodCgpOworICAg
IGZpbmFsIGludCBmcmFtZVJhdGUgPSAzMDsKKyAgICBmaW5hbCBpbnQgY3JvcFdpZHRoOworICAg
IGZpbmFsIGludCBjcm9wSGVpZ2h0OworICAgIGlmIChzdGFydFdpZHRoID4gc3RhcnRIZWlnaHQp
IHsKKyAgICAgIC8vIExhbmRzY2FwZSBpbnB1dCwgcmVxdWVzdCBwb3J0cmFpdCBvdXRwdXQuCisg
ICAgICBjcm9wV2lkdGggPSAzNjA7CisgICAgICBjcm9wSGVpZ2h0ID0gNjQwOworICAgIH0gZWxz
ZSB7CisgICAgICAvLyBQb3J0cmFpdCBpbnB1dCwgcmVxdWVzdCBsYW5kc2NhcGUgb3V0cHV0Lgor
ICAgICAgY3JvcFdpZHRoID0gNjQwOworICAgICAgY3JvcEhlaWdodCA9IDYzMDsKKyAgICB9CisK
KyAgICAvLyBSZXF1ZXN0IGRpZmZlcmVudCBvdXRwdXQgb3JpZW50YXRpb24gdGhhbiBpbnB1dC4K
KyAgICB2aWRlb1RyYWNrV2l0aFJlbmRlcmVyLnNvdXJjZS5hZGFwdE91dHB1dEZvcm1hdCgKKyAg
ICAgICAgY3JvcFdpZHRoLCBjcm9wSGVpZ2h0LCBjcm9wV2lkdGgsIGNyb3BIZWlnaHQsIGZyYW1l
UmF0ZSk7CisKKyAgICBib29sZWFuIGdvdEV4cGVjdGVkT3JpZW50YXRpb24gPSBmYWxzZTsKKyAg
ICBpbnQgbnVtYmVyT2ZJbnNwZWN0ZWRGcmFtZXMgPSAwOworCisgICAgZG8geworICAgICAgdmlk
ZW9UcmFja1dpdGhSZW5kZXJlci5yZW5kZXJlckNhbGxiYWNrcy53YWl0Rm9yTmV4dEZyYW1lVG9S
ZW5kZXIoKTsKKyAgICAgICsrbnVtYmVyT2ZJbnNwZWN0ZWRGcmFtZXM7CisKKyAgICAgIGdvdEV4
cGVjdGVkT3JpZW50YXRpb24gPSAoY3JvcFdpZHRoID4gY3JvcEhlaWdodCkKKyAgICAgICAgICA9
PSAodmlkZW9UcmFja1dpdGhSZW5kZXJlci5yZW5kZXJlckNhbGxiYWNrcy5mcmFtZVdpZHRoKCkK
KyAgICAgICAgICAgICAgICAgPiB2aWRlb1RyYWNrV2l0aFJlbmRlcmVyLnJlbmRlcmVyQ2FsbGJh
Y2tzLmZyYW1lSGVpZ2h0KCkpOworICAgIH0gd2hpbGUgKCFnb3RFeHBlY3RlZE9yaWVudGF0aW9u
ICYmIG51bWJlck9mSW5zcGVjdGVkRnJhbWVzIDwgMzApOworCisgICAgZGlzcG9zZUNhcHR1cmVy
KGNhcHR1cmVySW5zdGFuY2UpOworICAgIGRpc3Bvc2VWaWRlb1RyYWNrV2l0aFJlbmRlcmVyKHZp
ZGVvVHJhY2tXaXRoUmVuZGVyZXIpOworCisgICAgYXNzZXJ0VHJ1ZShnb3RFeHBlY3RlZE9yaWVu
dGF0aW9uKTsKKyAgfQorCiAgIHB1YmxpYyB2b2lkIHN0YXJ0V2hpbGVDYW1lcmFJc0FscmVhZHlP
cGVuKCkgdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uIHsKICAgICBmaW5hbCBTdHJpbmcgY2Ft
ZXJhTmFtZSA9IHRlc3RPYmplY3RGYWN0b3J5LmdldE5hbWVPZkJhY2tGYWNpbmdEZXZpY2UoKTsK
ICAgICAvLyBBdCB0aGlzIHBvaW50IGNhbWVyYSBpcyBub3QgYWN0dWFsbHkgb3BlbmVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvUGVlckNvbm5lY3Rpb25U
ZXN0LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlv
blRlc3QuamF2YQppbmRleCA3ZDBlZGM1OThlNmM2NjhjOTBiNGRiMjI1OTE2M2I2MTljNzZkNDUx
Li4yMDYzMTk5ZTcyZGVhODUwNzMyNjkwOGU2NWFjYmYyN2UyNWIyYWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9pbnN0
cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvblRlc3QuamF2YQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9pbnN0cnVtZW50YXRpb250ZXN0cy9zcmMvb3JnL3dlYnJ0Yy9QZWVyQ29ubmVjdGlvblRlc3Qu
amF2YQpAQCAtMTEsNiArMTEsNyBAQAogcGFja2FnZSBvcmcud2VicnRjOwogCiBpbXBvcnQgc3Rh
dGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVu
aXQuQXNzZXJ0LmFzc2VydE5vdEVxdWFsczsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2Vy
dC5hc3NlcnRGYWxzZTsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3RO
dWxsOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE51bGw7CkBAIC00NCw2
ICs0NSw3IEBAIGltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CiBpbXBvcnQgb3JnLndl
YnJ0Yy5NZXRyaWNzLkhpc3RvZ3JhbUluZm87CiBpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVj
dGlvbi5JY2VDb25uZWN0aW9uU3RhdGU7CiBpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlv
bi5JY2VHYXRoZXJpbmdTdGF0ZTsKK2ltcG9ydCBvcmcud2VicnRjLlBlZXJDb25uZWN0aW9uLlBl
ZXJDb25uZWN0aW9uU3RhdGU7CiBpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbi5TaWdu
YWxpbmdTdGF0ZTsKIAogLyoqIEVuZC10by1lbmQgdGVzdHMgZm9yIFBlZXJDb25uZWN0aW9uLmph
dmEuICovCkBAIC03Myw2ICs3NSw3IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3Qg
ewogICAgIHByaXZhdGUgaW50IGV4cGVjdGVkVHJhY2tzQWRkZWQ7CiAgICAgcHJpdmF0ZSBRdWV1
ZTxTaWduYWxpbmdTdGF0ZT4gZXhwZWN0ZWRTaWduYWxpbmdDaGFuZ2VzID0gbmV3IEFycmF5RGVx
dWU8PigpOwogICAgIHByaXZhdGUgUXVldWU8SWNlQ29ubmVjdGlvblN0YXRlPiBleHBlY3RlZElj
ZUNvbm5lY3Rpb25DaGFuZ2VzID0gbmV3IEFycmF5RGVxdWU8PigpOworICAgIHByaXZhdGUgUXVl
dWU8UGVlckNvbm5lY3Rpb25TdGF0ZT4gZXhwZWN0ZWRDb25uZWN0aW9uQ2hhbmdlcyA9IG5ldyBB
cnJheURlcXVlPD4oKTsKICAgICBwcml2YXRlIFF1ZXVlPEljZUdhdGhlcmluZ1N0YXRlPiBleHBl
Y3RlZEljZUdhdGhlcmluZ0NoYW5nZXMgPSBuZXcgQXJyYXlEZXF1ZTw+KCk7CiAgICAgcHJpdmF0
ZSBRdWV1ZTxTdHJpbmc+IGV4cGVjdGVkQWRkU3RyZWFtTGFiZWxzID0gbmV3IEFycmF5RGVxdWU8
PigpOwogICAgIHByaXZhdGUgUXVldWU8U3RyaW5nPiBleHBlY3RlZFJlbW92ZVN0cmVhbUxhYmVs
cyA9IG5ldyBBcnJheURlcXVlPD4oKTsKQEAgLTE4NywxMSArMTkwLDI5IEBAIHB1YmxpYyBjbGFz
cyBQZWVyQ29ubmVjdGlvblRlc3QgewogICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkSWNlQ29u
bmVjdGlvbkNoYW5nZXMucmVtb3ZlKCksIG5ld1N0YXRlKTsKICAgICB9CiAKKyAgICAvLyBUT0RP
KGJ1Z3Mud2VicnRjLm9yZy84NDkxKTogUmVtb3ZlIE5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2sg
c3VwcHJlc3Npb24uCisgICAgQFN1cHByZXNzV2FybmluZ3MoIk5vU3luY2hyb25pemVkTWV0aG9k
Q2hlY2siKQorICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBleHBlY3RDb25uZWN0aW9uQ2hh
bmdlKFBlZXJDb25uZWN0aW9uU3RhdGUgbmV3U3RhdGUpIHsKKyAgICAgIGV4cGVjdGVkQ29ubmVj
dGlvbkNoYW5nZXMuYWRkKG5ld1N0YXRlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICAv
LyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NDkxKTogUmVtb3ZlIE5vU3luY2hyb25pemVkTWV0aG9k
Q2hlY2sgc3VwcHJlc3Npb24uCisgICAgQFN1cHByZXNzV2FybmluZ3MoIk5vU3luY2hyb25pemVk
TWV0aG9kQ2hlY2siKQorICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBvbkNvbm5lY3Rpb25D
aGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdTdGF0ZSkgeworICAgICAgaWYgKGV4cGVjdGVk
Q29ubmVjdGlvbkNoYW5nZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRs
bihuYW1lICsgIiBnb3QgYW4gdW5leHBlY3RlZCBEVExTIGNvbm5lY3Rpb24gY2hhbmdlICIgKyBu
ZXdTdGF0ZSk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0RXF1YWxz
KGV4cGVjdGVkQ29ubmVjdGlvbkNoYW5nZXMucmVtb3ZlKCksIG5ld1N0YXRlKTsKKyAgICB9CisK
ICAgICBAT3ZlcnJpZGUKICAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy84NDkxKTogUmVtb3Zl
IE5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2sgc3VwcHJlc3Npb24uCiAgICAgQFN1cHByZXNzV2Fy
bmluZ3MoIk5vU3luY2hyb25pemVkTWV0aG9kQ2hlY2siKQogICAgIHB1YmxpYyBzeW5jaHJvbml6
ZWQgdm9pZCBvbkljZUNvbm5lY3Rpb25SZWNlaXZpbmdDaGFuZ2UoYm9vbGVhbiByZWNlaXZpbmcp
IHsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuYW1lICsgIkdvdCBhbiBJQ0UgY29ubmVjdGlv
biByZWNlaXZpbmcgY2hhbmdlICIgKyByZWNlaXZpbmcpOworICAgICAgU3lzdGVtLm91dC5wcmlu
dGxuKG5hbWUgKyAiIGdvdCBhbiBJQ0UgY29ubmVjdGlvbiByZWNlaXZpbmcgY2hhbmdlICIgKyBy
ZWNlaXZpbmcpOwogICAgIH0KIAogICAgIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzg0OTEpOiBS
ZW1vdmUgTm9TeW5jaHJvbml6ZWRNZXRob2RDaGVjayBzdXBwcmVzc2lvbi4KQEAgLTY2Myw2ICs2
ODQsNDUgQEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uVGVzdCB7CiAgICAgYXNzZXJ0Tm90
TnVsbChvZmZlcmluZ1BDKTsKICAgfQogCisgIEBUZXN0CisgIEBTbWFsbFRlc3QKKyAgcHVibGlj
IHZvaWQgdGVzdENyZWF0aW9uV2l0aENlcnRpZmljYXRlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Cisg
ICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZhY3RvcnkgPSBQZWVyQ29ubmVjdGlvbkZhY3Rvcnku
YnVpbGRlcigpLmNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOworICAgIFBlZXJDb25uZWN0
aW9uLlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnID0gbmV3IFBlZXJDb25uZWN0aW9uLlJUQ0NvbmZp
Z3VyYXRpb24oQXJyYXlzLmFzTGlzdCgpKTsKKworICAgIC8vIFRlc3QgY2VydGlmaWNhdGUuCisg
ICAgUnRjQ2VydGlmaWNhdGVQZW0gb3JpZ2luYWxDZXJ0ID0gUnRjQ2VydGlmaWNhdGVQZW0uZ2Vu
ZXJhdGVDZXJ0aWZpY2F0ZSgpOworICAgIGNvbmZpZy5jZXJ0aWZpY2F0ZSA9IG9yaWdpbmFsQ2Vy
dDsKKworICAgIE9ic2VydmVyRXhwZWN0YXRpb25zIG9mZmVyaW5nRXhwZWN0YXRpb25zID0gbmV3
IE9ic2VydmVyRXhwZWN0YXRpb25zKCJQQ1Rlc3Q6b2ZmZXJlciIpOworICAgIFBlZXJDb25uZWN0
aW9uIG9mZmVyaW5nUEMgPSBmYWN0b3J5LmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZywgb2Zm
ZXJpbmdFeHBlY3RhdGlvbnMpOworCisgICAgUnRjQ2VydGlmaWNhdGVQZW0gcmVzdG9yZWRDZXJ0
ID0gb2ZmZXJpbmdQQy5nZXRDZXJ0aWZpY2F0ZSgpOworICAgIGFzc2VydEVxdWFscyhvcmlnaW5h
bENlcnQucHJpdmF0ZUtleSwgcmVzdG9yZWRDZXJ0LnByaXZhdGVLZXkpOworICAgIGFzc2VydEVx
dWFscyhvcmlnaW5hbENlcnQuY2VydGlmaWNhdGUsIHJlc3RvcmVkQ2VydC5jZXJ0aWZpY2F0ZSk7
CisgIH0KKworICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDcmVhdGlv
bldpdGhDcnlwdG9PcHRpb25zKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgUGVlckNvbm5lY3Rp
b25GYWN0b3J5IGZhY3RvcnkgPSBQZWVyQ29ubmVjdGlvbkZhY3RvcnkuYnVpbGRlcigpLmNyZWF0
ZVBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOworICAgIFBlZXJDb25uZWN0aW9uLlJUQ0NvbmZpZ3Vy
YXRpb24gY29uZmlnID0gbmV3IFBlZXJDb25uZWN0aW9uLlJUQ0NvbmZpZ3VyYXRpb24oQXJyYXlz
LmFzTGlzdCgpKTsKKworICAgIGFzc2VydE51bGwoY29uZmlnLmNyeXB0b09wdGlvbnMpOworCisg
ICAgQ3J5cHRvT3B0aW9ucyBjcnlwdG9PcHRpb25zID0gQ3J5cHRvT3B0aW9ucy5idWlsZGVyKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldEVuYWJsZUdjbUNyeXB0
b1N1aXRlcyh0cnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0
RW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcih0cnVlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAuc2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9u
cyh0cnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0UmVxdWly
ZUZyYW1lRW5jcnlwdGlvbih0cnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAuY3JlYXRlQ3J5cHRvT3B0aW9ucygpOworICAgIGNvbmZpZy5jcnlwdG9PcHRpb25zID0g
Y3J5cHRvT3B0aW9uczsKKworICAgIE9ic2VydmVyRXhwZWN0YXRpb25zIG9mZmVyaW5nRXhwZWN0
YXRpb25zID0gbmV3IE9ic2VydmVyRXhwZWN0YXRpb25zKCJQQ1Rlc3Q6b2ZmZXJlciIpOworICAg
IFBlZXJDb25uZWN0aW9uIG9mZmVyaW5nUEMgPSBmYWN0b3J5LmNyZWF0ZVBlZXJDb25uZWN0aW9u
KGNvbmZpZywgb2ZmZXJpbmdFeHBlY3RhdGlvbnMpOworICAgIGFzc2VydE5vdE51bGwob2ZmZXJp
bmdQQyk7CisgIH0KKwogICBAVGVzdAogICBATWVkaXVtVGVzdAogICBwdWJsaWMgdm9pZCB0ZXN0
Q29tcGxldGVTZXNzaW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CkBAIC03NTksMTIgKzgxOSwxNCBA
QCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKIAogICAgIHNkcExhdGNoID0gbmV3
IFNkcE9ic2VydmVyTGF0Y2goKTsKICAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0U2ln
bmFsaW5nQ2hhbmdlKFNpZ25hbGluZ1N0YXRlLlNUQUJMRSk7CisgICAgYW5zd2VyaW5nRXhwZWN0
YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNU
SU5HKTsKICAgICBhbnN3ZXJpbmdQQy5zZXRMb2NhbERlc2NyaXB0aW9uKHNkcExhdGNoLCBhbnN3
ZXJTZHApOwogICAgIGFzc2VydFRydWUoc2RwTGF0Y2guYXdhaXQoKSk7CiAgICAgYXNzZXJ0TnVs
bChzZHBMYXRjaC5nZXRTZHAoKSk7CiAKICAgICBzZHBMYXRjaCA9IG5ldyBTZHBPYnNlcnZlckxh
dGNoKCk7CiAgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0U2lnbmFsaW5nQ2hhbmdlKFNp
Z25hbGluZ1N0YXRlLkhBVkVfTE9DQUxfT0ZGRVIpOworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25z
LmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5DT05ORUNUSU5HKTsK
ICAgICBvZmZlcmluZ1BDLnNldExvY2FsRGVzY3JpcHRpb24oc2RwTGF0Y2gsIG9mZmVyU2RwKTsK
ICAgICBhc3NlcnRUcnVlKHNkcExhdGNoLmF3YWl0KCkpOwogICAgIGFzc2VydE51bGwoc2RwTGF0
Y2guZ2V0U2RwKCkpOwpAQCAtNzc0LDYgKzgzNiw5IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVj
dGlvblRlc3QgewogCiAgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlv
bkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUuQ0hFQ0tJTkcpOwogICAgIG9mZmVyaW5nRXhwZWN0
YXRpb25zLmV4cGVjdEljZUNvbm5lY3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNPTk5F
Q1RFRCk7CisgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQ
ZWVyQ29ubmVjdGlvblN0YXRlLk5FVyk7CisgICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0
Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RJTkcpOworICAgIG9m
ZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25T
dGF0ZS5DT05ORUNURUQpOwogICAgIC8vIFRPRE8oYmVtYXNjKTogdW5jb21tZW50IG9uY2UgZGVs
aXZlcnkgb2YgSUNFQ29tcGxldGVkIGlzIHJlbGlhYmxlCiAgICAgLy8gKGh0dHBzOi8vY29kZS5n
b29nbGUuY29tL3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9MzAyMSkuCiAgICAgLy8KQEAgLTc4
MSw2ICs4NDYsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKICAgICAvLyAg
ICAgSWNlQ29ubmVjdGlvblN0YXRlLkNPTVBMRVRFRCk7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRp
b25zLmV4cGVjdEljZUNvbm5lY3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNIRUNLSU5H
KTsKICAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJ
Y2VDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKTsKKyAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMu
ZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCk7CiAK
ICAgICBvZmZlcmluZ1BDLnNldFJlbW90ZURlc2NyaXB0aW9uKHNkcExhdGNoLCBhbnN3ZXJTZHAp
OwogICAgIGFzc2VydFRydWUoc2RwTGF0Y2guYXdhaXQoKSk7CkBAIC05ODksMTIgKzEwNTUsMTQg
QEAgcHVibGljIGNsYXNzIFBlZXJDb25uZWN0aW9uVGVzdCB7CiAKICAgICBzZHBMYXRjaCA9IG5l
dyBTZHBPYnNlcnZlckxhdGNoKCk7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdFNp
Z25hbGluZ0NoYW5nZShTaWduYWxpbmdTdGF0ZS5TVEFCTEUpOworICAgIGFuc3dlcmluZ0V4cGVj
dGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVD
VElORyk7CiAgICAgYW5zd2VyaW5nUEMuc2V0TG9jYWxEZXNjcmlwdGlvbihzZHBMYXRjaCwgYW5z
d2VyU2RwKTsKICAgICBhc3NlcnRUcnVlKHNkcExhdGNoLmF3YWl0KCkpOwogICAgIGFzc2VydE51
bGwoc2RwTGF0Y2guZ2V0U2RwKCkpOwogCiAgICAgc2RwTGF0Y2ggPSBuZXcgU2RwT2JzZXJ2ZXJM
YXRjaCgpOwogICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdFNpZ25hbGluZ0NoYW5nZShT
aWduYWxpbmdTdGF0ZS5IQVZFX0xPQ0FMX09GRkVSKTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9u
cy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7
CiAgICAgb2ZmZXJpbmdQQy5zZXRMb2NhbERlc2NyaXB0aW9uKHNkcExhdGNoLCBvZmZlclNkcCk7
CiAgICAgYXNzZXJ0VHJ1ZShzZHBMYXRjaC5hd2FpdCgpKTsKICAgICBhc3NlcnROdWxsKHNkcExh
dGNoLmdldFNkcCgpKTsKQEAgLTEwMDMsMTAgKzEwNzEsMTQgQEAgcHVibGljIGNsYXNzIFBlZXJD
b25uZWN0aW9uVGVzdCB7CiAKICAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25u
ZWN0aW9uQ2hhbmdlKEljZUNvbm5lY3Rpb25TdGF0ZS5DSEVDS0lORyk7CiAgICAgb2ZmZXJpbmdF
eHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUu
Q09OTkVDVEVEKTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hh
bmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuTkVXKTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5l
eHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVElORyk7Cisg
ICAgb2ZmZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVj
dGlvblN0YXRlLkNPTk5FQ1RFRCk7CiAgICAgLy8gVE9ETyhiZW1hc2MpOiB1bmNvbW1lbnQgb25j
ZSBkZWxpdmVyeSBvZiBJQ0VDb21wbGV0ZWQgaXMgcmVsaWFibGUKICAgICAvLyAoaHR0cHM6Ly9j
b2RlLmdvb2dsZS5jb20vcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD0zMDIxKS4KICAgICBhbnN3
ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9u
U3RhdGUuQ0hFQ0tJTkcpOwogICAgIGFuc3dlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25u
ZWN0aW9uQ2hhbmdlKEljZUNvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpOworICAgIGFuc3dlcmlu
Z0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUu
Q09OTkVDVEVEKTsKIAogICAgIG9mZmVyaW5nUEMuc2V0UmVtb3RlRGVzY3JpcHRpb24oc2RwTGF0
Y2gsIGFuc3dlclNkcCk7CiAgICAgYXNzZXJ0VHJ1ZShzZHBMYXRjaC5hd2FpdCgpKTsKQEAgLTEx
MzksNiArMTIxMSw3IEBAIHB1YmxpYyBjbGFzcyBQZWVyQ29ubmVjdGlvblRlc3QgewogICAgIG9m
ZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdFNpZ25hbGluZ0NoYW5nZShTaWduYWxpbmdTdGF0ZS5I
QVZFX0xPQ0FMX09GRkVSKTsKICAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDYW5k
aWRhdGVzKDIpOwogICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUdhdGhlcmluZ0No
YW5nZShJY2VHYXRoZXJpbmdTdGF0ZS5DT01QTEVURSk7CisgICAgb2ZmZXJpbmdFeHBlY3RhdGlv
bnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RJTkcp
OwogICAgIG9mZmVyaW5nUEMuc2V0TG9jYWxEZXNjcmlwdGlvbihzZHBMYXRjaCwgb2ZmZXJTZHAp
OwogICAgIGFzc2VydFRydWUoc2RwTGF0Y2guYXdhaXQoKSk7CiAgICAgYXNzZXJ0TnVsbChzZHBM
YXRjaC5nZXRTZHAoKSk7CkBAIC0xMTcwLDYgKzEyNDMsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNv
bm5lY3Rpb25UZXN0IHsKICAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0U2lnbmFsaW5n
Q2hhbmdlKFNpZ25hbGluZ1N0YXRlLlNUQUJMRSk7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25z
LmV4cGVjdEljZUNhbmRpZGF0ZXMoMik7CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVj
dEljZUdhdGhlcmluZ0NoYW5nZShJY2VHYXRoZXJpbmdTdGF0ZS5DT01QTEVURSk7CisgICAgYW5z
d2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25T
dGF0ZS5DT05ORUNUSU5HKTsKICAgICBhbnN3ZXJpbmdQQy5zZXRMb2NhbERlc2NyaXB0aW9uKHNk
cExhdGNoLCBhbnN3ZXJTZHApOwogICAgIGFzc2VydFRydWUoc2RwTGF0Y2guYXdhaXQoKSk7CiAg
ICAgYXNzZXJ0TnVsbChzZHBMYXRjaC5nZXRTZHAoKSk7CkBAIC0xMTgxLDYgKzEyNTUsOSBAQCBw
dWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0IHsKIAogICAgIG9mZmVyaW5nRXhwZWN0YXRp
b25zLmV4cGVjdEljZUNvbm5lY3Rpb25DaGFuZ2UoSWNlQ29ubmVjdGlvblN0YXRlLkNIRUNLSU5H
KTsKICAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RJY2VDb25uZWN0aW9uQ2hhbmdlKElj
ZUNvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpOworICAgIG9mZmVyaW5nRXhwZWN0YXRpb25zLmV4
cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0ZS5ORVcpOworICAgIG9mZmVy
aW5nRXhwZWN0YXRpb25zLmV4cGVjdENvbm5lY3Rpb25DaGFuZ2UoUGVlckNvbm5lY3Rpb25TdGF0
ZS5DT05ORUNUSU5HKTsKKyAgICBvZmZlcmluZ0V4cGVjdGF0aW9ucy5leHBlY3RDb25uZWN0aW9u
Q2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKTsKICAgICAvLyBUT0RPKGJlbWFz
Yyk6IHVuY29tbWVudCBvbmNlIGRlbGl2ZXJ5IG9mIElDRUNvbXBsZXRlZCBpcyByZWxpYWJsZQog
ICAgIC8vIChodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3dlYnJ0Yy9pc3N1ZXMvZGV0YWlsP2lk
PTMwMjEpLgogICAgIC8vCkBAIC0xMTg4LDYgKzEyNjUsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNv
bm5lY3Rpb25UZXN0IHsKICAgICAvLyAgICAgSWNlQ29ubmVjdGlvblN0YXRlLkNPTVBMRVRFRCk7
CiAgICAgYW5zd2VyaW5nRXhwZWN0YXRpb25zLmV4cGVjdEljZUNvbm5lY3Rpb25DaGFuZ2UoSWNl
Q29ubmVjdGlvblN0YXRlLkNIRUNLSU5HKTsKICAgICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhw
ZWN0SWNlQ29ubmVjdGlvbkNoYW5nZShJY2VDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKTsKKyAg
ICBhbnN3ZXJpbmdFeHBlY3RhdGlvbnMuZXhwZWN0Q29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVj
dGlvblN0YXRlLkNPTk5FQ1RFRCk7CiAKICAgICBvZmZlcmluZ1BDLnNldFJlbW90ZURlc2NyaXB0
aW9uKHNkcExhdGNoLCBhbnN3ZXJTZHApOwogICAgIGFzc2VydFRydWUoc2RwTGF0Y2guYXdhaXQo
KSk7CkBAIC0xNTczLDYgKzE2NTEsNyBAQCBwdWJsaWMgY2xhc3MgUGVlckNvbm5lY3Rpb25UZXN0
IHsKICAgICBhc3NlcnRUcnVlKGV4cGVjdGF0aW9ucy53YWl0Rm9yQWxsRXhwZWN0YXRpb25zVG9C
ZVNhdGlzZmllZChUSU1FT1VUX1NFQ09ORFMpKTsKIAogICAgIGV4cGVjdGF0aW9ucy5leHBlY3RJ
Y2VDb25uZWN0aW9uQ2hhbmdlKEljZUNvbm5lY3Rpb25TdGF0ZS5DTE9TRUQpOworICAgIGV4cGVj
dGF0aW9ucy5leHBlY3RDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9uU3RhdGUuQ0xPU0VE
KTsKICAgICBleHBlY3RhdGlvbnMuZXhwZWN0U2lnbmFsaW5nQ2hhbmdlKFNpZ25hbGluZ1N0YXRl
LkNMT1NFRCk7CiAgICAgcGMuY2xvc2UoKTsKICAgICBhc3NlcnRUcnVlKGV4cGVjdGF0aW9ucy53
YWl0Rm9yQWxsRXhwZWN0YXRpb25zVG9CZVNhdGlzZmllZChUSU1FT1VUX1NFQ09ORFMpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1J0Y0NlcnRpZmljYXRl
UGVtVGVzdC5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvUnRjQ2VydGlm
aWNhdGVQZW1UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBmMjk1Yzk0MmY1N2ZmNGY4YmQzYmFkYzY3
YzEyODdkOTEzMGRiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9v
cmcvd2VicnRjL1J0Y0NlcnRpZmljYXRlUGVtVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzMgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlv
bmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAg
aW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1h
eQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorICovCisKK3BhY2thZ2Ugb3JnLndlYnJ0YzsKKworaW1wb3J0IHN0YXRpYyBj
b20uZ29vZ2xlLmNvbW1vbi50cnV0aC5UcnV0aC5hc3NlcnRUaGF0OworCitpbXBvcnQgYW5kcm9p
ZC5zdXBwb3J0LnRlc3QuZmlsdGVycy5TbWFsbFRlc3Q7CitpbXBvcnQgb3JnLmNocm9taXVtLmJh
c2UudGVzdC5CYXNlSlVuaXQ0Q2xhc3NSdW5uZXI7CitpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsK
K2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7
CitpbXBvcnQgb3JnLndlYnJ0Yy5QZWVyQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcud2VicnRjLlJ0
Y0NlcnRpZmljYXRlUGVtOworCisvKiogVGVzdHMgZm9yIFJ0Y0NlcnRpZmljYXRlUGVtLmphdmEu
ICovCitAUnVuV2l0aChCYXNlSlVuaXQ0Q2xhc3NSdW5uZXIuY2xhc3MpCitwdWJsaWMgY2xhc3Mg
UnRjQ2VydGlmaWNhdGVQZW1UZXN0IHsKKyAgQEJlZm9yZQorICBwdWJsaWMgdm9pZCBzZXRVcCgp
IHsKKyAgICBTeXN0ZW0ubG9hZExpYnJhcnkoVGVzdENvbnN0YW50cy5OQVRJVkVfTElCUkFSWSk7
CisgIH0KKworICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RDb25zdHJ1
Y3RvcigpIHsKKyAgICBSdGNDZXJ0aWZpY2F0ZVBlbSBvcmlnaW5hbCA9IFJ0Y0NlcnRpZmljYXRl
UGVtLmdlbmVyYXRlQ2VydGlmaWNhdGUoKTsKKyAgICBSdGNDZXJ0aWZpY2F0ZVBlbSByZWNyZWF0
ZWQgPSBuZXcgUnRjQ2VydGlmaWNhdGVQZW0ob3JpZ2luYWwucHJpdmF0ZUtleSwgb3JpZ2luYWwu
Y2VydGlmaWNhdGUpOworICAgIGFzc2VydFRoYXQob3JpZ2luYWwucHJpdmF0ZUtleSkuaXNFcXVh
bFRvKHJlY3JlYXRlZC5wcml2YXRlS2V5KTsKKyAgICBhc3NlcnRUaGF0KG9yaWdpbmFsLmNlcnRp
ZmljYXRlKS5pc0VxdWFsVG8ocmVjcmVhdGVkLmNlcnRpZmljYXRlKTsKKyAgfQorCisgIEBUZXN0
CisgIEBTbWFsbFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEdlbmVyYXRlQ2VydGlmaWNhdGVEZWZh
dWx0cygpIHsKKyAgICBSdGNDZXJ0aWZpY2F0ZVBlbSBydGNDZXJ0aWZpY2F0ZSA9IFJ0Y0NlcnRp
ZmljYXRlUGVtLmdlbmVyYXRlQ2VydGlmaWNhdGUoKTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRp
ZmljYXRlLnByaXZhdGVLZXkpLmlzTm90RW1wdHkoKTsKKyAgICBhc3NlcnRUaGF0KHJ0Y0NlcnRp
ZmljYXRlLmNlcnRpZmljYXRlKS5pc05vdEVtcHR5KCk7CisgIH0KKworICBAVGVzdAorICBAU21h
bGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RHZW5lcmF0ZUNlcnRpZmljYXRlQ3VzdG9tS2V5VHlw
ZURlZmF1bHRFeHBpcmVzKCkgeworICAgIFJ0Y0NlcnRpZmljYXRlUGVtIHJ0Y0NlcnRpZmljYXRl
ID0KKyAgICAgICAgUnRjQ2VydGlmaWNhdGVQZW0uZ2VuZXJhdGVDZXJ0aWZpY2F0ZShQZWVyQ29u
bmVjdGlvbi5LZXlUeXBlLlJTQSk7CisgICAgYXNzZXJ0VGhhdChydGNDZXJ0aWZpY2F0ZS5wcml2
YXRlS2V5KS5pc05vdEVtcHR5KCk7CisgICAgYXNzZXJ0VGhhdChydGNDZXJ0aWZpY2F0ZS5jZXJ0
aWZpY2F0ZSkuaXNOb3RFbXB0eSgpOworICB9CisKKyAgQFRlc3QKKyAgQFNtYWxsVGVzdAorICBw
dWJsaWMgdm9pZCB0ZXN0R2VuZXJhdGVDZXJ0aWZpY2F0ZUN1c3RvbUV4cGlyZXNEZWZhdWx0S2V5
VHlwZSgpIHsKKyAgICBSdGNDZXJ0aWZpY2F0ZVBlbSBydGNDZXJ0aWZpY2F0ZSA9IFJ0Y0NlcnRp
ZmljYXRlUGVtLmdlbmVyYXRlQ2VydGlmaWNhdGUoNjAgKiA2MCAqIDI0KTsKKyAgICBhc3NlcnRU
aGF0KHJ0Y0NlcnRpZmljYXRlLnByaXZhdGVLZXkpLmlzTm90RW1wdHkoKTsKKyAgICBhc3NlcnRU
aGF0KHJ0Y0NlcnRpZmljYXRlLmNlcnRpZmljYXRlKS5pc05vdEVtcHR5KCk7CisgIH0KKworICBA
VGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RHZW5lcmF0ZUNlcnRpZmljYXRl
Q3VzdG9tS2V5VHlwZUFuZEV4cGlyZXMoKSB7CisgICAgUnRjQ2VydGlmaWNhdGVQZW0gcnRjQ2Vy
dGlmaWNhdGUgPQorICAgICAgICBSdGNDZXJ0aWZpY2F0ZVBlbS5nZW5lcmF0ZUNlcnRpZmljYXRl
KFBlZXJDb25uZWN0aW9uLktleVR5cGUuUlNBLCA2MCAqIDYwICogMjQpOworICAgIGFzc2VydFRo
YXQocnRjQ2VydGlmaWNhdGUucHJpdmF0ZUtleSkuaXNOb3RFbXB0eSgpOworICAgIGFzc2VydFRo
YXQocnRjQ2VydGlmaWNhdGUuY2VydGlmaWNhdGUpLmlzTm90RW1wdHkoKTsKKyAgfQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2Fu
ZHJvaWQvaW5zdHJ1bWVudGF0aW9udGVzdHMvc3JjL29yZy93ZWJydGMvVGltZXN0YW1wQWxpZ25l
clRlc3QuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcvd2VicnRjL1RpbWVzdGFtcEFs
aWduZXJUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ5NDRiNTdmOWQ2NTRkODlkYjAwN2U0ODQwN2E2
MTgwYzY3YjRhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL2luc3RydW1lbnRhdGlvbnRlc3RzL3NyYy9vcmcv
d2VicnRjL1RpbWVzdGFtcEFsaWduZXJUZXN0LmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg
aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0
aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Cisg
KiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
IHRyZWUuCisgKi8KKworcGFja2FnZSBvcmcud2VicnRjOworCitpbXBvcnQgYW5kcm9pZC5zdXBw
b3J0LnRlc3QuZmlsdGVycy5TbWFsbFRlc3Q7CitpbXBvcnQgb3JnLmNocm9taXVtLmJhc2UudGVz
dC5wYXJhbXMuQmFzZUpVbml0NFJ1bm5lckRlbGVnYXRlOworaW1wb3J0IG9yZy5jaHJvbWl1bS5i
YXNlLnRlc3QucGFyYW1zLlBhcmFtZXRlckFubm90YXRpb25zLlVzZVJ1bm5lckRlbGVnYXRlOwor
aW1wb3J0IG9yZy5qdW5pdC5CZWZvcmVDbGFzczsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKwor
QFVzZVJ1bm5lckRlbGVnYXRlKEJhc2VKVW5pdDRSdW5uZXJEZWxlZ2F0ZS5jbGFzcykKK3B1Ymxp
YyBjbGFzcyBUaW1lc3RhbXBBbGlnbmVyVGVzdCB7CisgIEBCZWZvcmVDbGFzcworICBwdWJsaWMg
c3RhdGljIHZvaWQgc2V0VXAoKSB7CisgICAgU3lzdGVtLmxvYWRMaWJyYXJ5KFRlc3RDb25zdGFu
dHMuTkFUSVZFX0xJQlJBUlkpOworICB9CisKKyAgQFRlc3QKKyAgQFNtYWxsVGVzdAorICBwdWJs
aWMgdm9pZCB0ZXN0R2V0UnRjVGltZU5hbm9zKCkgeworICAgIFRpbWVzdGFtcEFsaWduZXIuZ2V0
UnRjVGltZU5hbm9zKCk7CisgIH0KKworICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2
b2lkIHRlc3REaXNwb3NlKCkgeworICAgIGZpbmFsIFRpbWVzdGFtcEFsaWduZXIgdGltZXN0YW1w
QWxpZ25lciA9IG5ldyBUaW1lc3RhbXBBbGlnbmVyKCk7CisgICAgdGltZXN0YW1wQWxpZ25lci5k
aXNwb3NlKCk7CisgIH0KKworICBAVGVzdAorICBAU21hbGxUZXN0CisgIHB1YmxpYyB2b2lkIHRl
c3RUcmFuc2xhdGVUaW1lc3RhbXAoKSB7CisgICAgZmluYWwgVGltZXN0YW1wQWxpZ25lciB0aW1l
c3RhbXBBbGlnbmVyID0gbmV3IFRpbWVzdGFtcEFsaWduZXIoKTsKKyAgICB0aW1lc3RhbXBBbGln
bmVyLnRyYW5zbGF0ZVRpbWVzdGFtcCgvKiBjYW1lcmFUaW1lTnM9ICovIDEyMyk7CisgICAgdGlt
ZXN0YW1wQWxpZ25lci5kaXNwb3NlKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV9hcGkvdmlk
ZW8vdmlkZW9zb3VyY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfYXBpL3ZpZGVvL3ZpZGVvc291cmNlLmNjCmluZGV4IDRj
MzAyZGEwZWQ5ZWIwYjM4YzMxMWYwMTNmNjQ0M2U0ZmY2OTIyMzYuLmFhZTFkZTdmZjAzNDJhMGVi
NWNjYzcxNWRjN2ZhZWE3YzRlNGQ5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV9hcGkvdmlkZW8vdmlkZW9z
b3VyY2UuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvbmF0aXZlX2FwaS92aWRlby92aWRlb3NvdXJjZS5jYwpAQCAtMjUsMTIgKzI1
LDE0IEBAIGNsYXNzIEphdmFWaWRlb1RyYWNrU291cmNlSW1wbCA6IHB1YmxpYyBKYXZhVmlkZW9U
cmFja1NvdXJjZUludGVyZmFjZSB7CiAgcHVibGljOgogICBKYXZhVmlkZW9UcmFja1NvdXJjZUlt
cGwoSk5JRW52KiBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6OlRocmVhZCog
c2lnbmFsaW5nX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfc2Ny
ZWVuY2FzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfc2NyZWVuY2FzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxpZ25fdGltZXN0YW1wcykKICAgICAg
IDogYW5kcm9pZF92aWRlb190cmFja19zb3VyY2VfKAogICAgICAgICAgICAgbmV3IHJ0Yzo6UmVm
Q291bnRlZE9iamVjdDxqbmk6OkFuZHJvaWRWaWRlb1RyYWNrU291cmNlPigKICAgICAgICAgICAg
ICAgICBzaWduYWxpbmdfdGhyZWFkLAogICAgICAgICAgICAgICAgIGVudiwKLSAgICAgICAgICAg
ICAgICBpc19zY3JlZW5jYXN0KSksCisgICAgICAgICAgICAgICAgaXNfc2NyZWVuY2FzdCwKKyAg
ICAgICAgICAgICAgICBhbGlnbl90aW1lc3RhbXBzKSksCiAgICAgICAgIG5hdGl2ZV9jYXB0dXJl
cl9vYnNlcnZlcl8oam5pOjpDcmVhdGVKYXZhTmF0aXZlQ2FwdHVyZXJPYnNlcnZlcigKICAgICAg
ICAgICAgIGVudiwKICAgICAgICAgICAgIGFuZHJvaWRfdmlkZW9fdHJhY2tfc291cmNlXykpIHt9
CkBAIC05Niw5ICs5OCwxMCBAQCBjbGFzcyBKYXZhVmlkZW9UcmFja1NvdXJjZUltcGwgOiBwdWJs
aWMgSmF2YVZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2UgewogcnRjOjpzY29wZWRfcmVmcHRyPEph
dmFWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlPiBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCiAgICAg
Sk5JRW52KiBqbmksCiAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWQsCi0gICAgYm9v
bCBpc19zY3JlZW5jYXN0KSB7CisgICAgYm9vbCBpc19zY3JlZW5jYXN0LAorICAgIGJvb2wgYWxp
Z25fdGltZXN0YW1wcykgewogICByZXR1cm4gbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxKYXZh
VmlkZW9UcmFja1NvdXJjZUltcGw+KAotICAgICAgam5pLCBzaWduYWxpbmdfdGhyZWFkLCBpc19z
Y3JlZW5jYXN0KTsKKyAgICAgIGpuaSwgc2lnbmFsaW5nX3RocmVhZCwgaXNfc2NyZWVuY2FzdCwg
YWxpZ25fdGltZXN0YW1wcyk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L25hdGl2ZV9hcGkvdmlkZW8vdmlkZW9zb3VyY2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV9hcGkvdmlkZW8vdmlkZW9zb3Vy
Y2UuaAppbmRleCAwYzRmMzMzNDJlYmFkNmQ0YjU5NzlkYWYzY2FlZTk3NjAzYjA2Zjg3Li43NWVi
ZGJjZTMwMjYzZTMwODU1NDA0MTRmMTI4M2Y2MTAzNjFhMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfYXBp
L3ZpZGVvL3ZpZGVvc291cmNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX2FwaS92aWRlby92aWRlb3NvdXJjZS5oCkBA
IC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8am5pLmg+CiAKICNpbmNsdWRlICJhcGkvbWVkaWFz
dHJlYW1pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKICNpbmNsdWRl
ICJzZGsvYW5kcm9pZC9uYXRpdmVfYXBpL2puaS9zY29wZWRfamF2YV9yZWYuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CkBAIC0zMiw3ICszMyw4IEBAIGNsYXNzIEphdmFWaWRlb1RyYWNrU291cmNl
SW50ZXJmYWNlIDogcHVibGljIFZpZGVvVHJhY2tTb3VyY2VJbnRlcmZhY2UgewogcnRjOjpzY29w
ZWRfcmVmcHRyPEphdmFWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlPiBDcmVhdGVKYXZhVmlkZW9T
b3VyY2UoCiAgICAgSk5JRW52KiBlbnYsCiAgICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJl
YWQsCi0gICAgYm9vbCBpc19zY3JlZW5jYXN0KTsKKyAgICBib29sIGlzX3NjcmVlbmNhc3QsCisg
ICAgYm9vbCBhbGlnbl90aW1lc3RhbXBzKTsKIAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9uYXRpdmVfdW5pdHRlc3RzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9uYXRpdmVfdW5pdHRlc3RzL2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfdW5pdHRlc3Qu
Y2MKaW5kZXggNWU0NjA1MmI5MDA0ODE1NmJmMWMzZDY5OGEyNTEzNjg0ZGY4ZDM2OS4uOThkNTg1
Mzg3YTA0ZDhiNjY0NjdmZTJlYWNlZTQ2MGZkOTdiMmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3VuaXR0
ZXN0cy9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0
dGVzdHMvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV91bml0dGVzdC5jYwpAQCAtMTUsNiArMTUs
NyBAQAogI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fZGV2aWNlL2luY2x1ZGUvbW9ja19hdWRpb190
cmFuc3BvcnQuaCIKICNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9z
Y29wZWRfcmVmX3B0ci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgpAQCAtMjUs
NyArMjYsNiBAQAogI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvYXVkaW9fZGV2aWNlL2F1
ZGlvX2RldmljZV9tb2R1bGUuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL2F1ZGlv
X2RldmljZS9vcGVuc2xlc19jb21tb24uaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5p
L2puaV9oZWxwZXJzLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRf
d3JhcHBlci5oIgogI2luY2x1ZGUgInRlc3QvZ21vY2suaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0
LmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKQEAgLTM2NCw3ICsz
NjQsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFuc3BvcnRBbmRyb2lkIDogcHVibGljIHRlc3Q6Ok1v
Y2tBdWRpb1RyYW5zcG9ydCB7CiAKICAgLy8gU2V0IGRlZmF1bHQgYWN0aW9ucyBvZiB0aGUgbW9j
ayBvYmplY3QuIFdlIGFyZSBkZWxlZ2F0aW5nIHRvIGZha2UKICAgLy8gaW1wbGVtZW50YXRpb25z
IChvZiBBdWRpb1N0cmVhbUludGVyZmFjZSkgaGVyZS4KLSAgdm9pZCBIYW5kbGVDYWxsYmFja3Mo
RXZlbnRXcmFwcGVyKiB0ZXN0X2lzX2RvbmUsCisgIHZvaWQgSGFuZGxlQ2FsbGJhY2tzKHJ0Yzo6
RXZlbnQqIHRlc3RfaXNfZG9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9TdHJlYW1J
bnRlcmZhY2UqIGF1ZGlvX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bV9j
YWxsYmFja3MpIHsKICAgICB0ZXN0X2lzX2RvbmVfID0gdGVzdF9pc19kb25lOwpAQCAtNDQ3LDcg
KzQ0Nyw3IEBAIGNsYXNzIE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQgOiBwdWJsaWMgdGVzdDo6
TW9ja0F1ZGlvVHJhbnNwb3J0IHsKICAgYm9vbCByZWNfbW9kZSgpIGNvbnN0IHsgcmV0dXJuIHR5
cGVfICYga1JlY29yZGluZzsgfQogCiAgcHJpdmF0ZToKLSAgRXZlbnRXcmFwcGVyKiB0ZXN0X2lz
X2RvbmVfOworICBydGM6OkV2ZW50KiB0ZXN0X2lzX2RvbmVfOwogICBzaXplX3QgbnVtX2NhbGxi
YWNrc187CiAgIGludCB0eXBlXzsKICAgc2l6ZV90IHBsYXlfY291bnRfOwpAQCAtNDU5LDcgKzQ1
OSw3IEBAIGNsYXNzIE1vY2tBdWRpb1RyYW5zcG9ydEFuZHJvaWQgOiBwdWJsaWMgdGVzdDo6TW9j
a0F1ZGlvVHJhbnNwb3J0IHsKIC8vIEF1ZGlvRGV2aWNlVGVzdCB0ZXN0IGZpeHR1cmUuCiBjbGFz
cyBBdWRpb0RldmljZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICBwcm90ZWN0ZWQ6
Ci0gIEF1ZGlvRGV2aWNlVGVzdCgpIDogdGVzdF9pc19kb25lXyhFdmVudFdyYXBwZXI6OkNyZWF0
ZSgpKSB7CisgIEF1ZGlvRGV2aWNlVGVzdCgpIHsKICAgICAvLyBPbmUtdGltZSBpbml0aWFsaXph
dGlvbiBvZiBKVk0gYW5kIGFwcGxpY2F0aW9uIGNvbnRleHQuIEVuc3VyZXMgdGhhdCB3ZQogICAg
IC8vIGNhbiBkbyBjYWxscyBiZXR3ZWVuIEMrKyBhbmQgSmF2YS4gSW5pdGlhbGl6ZXMgYm90aCBK
YXZhIGFuZCBPcGVuU0wgRVMKICAgICAvLyBpbXBsZW1lbnRhdGlvbnMuCkBAIC02ODMsNyArNjgz
LDcgQEAgY2xhc3MgQXVkaW9EZXZpY2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAK
ICAgSk5JRW52KiBqbmlfOwogICBzdGQ6OnVuaXF1ZV9wdHI8SmF2YVBhcmFtUmVmPGpvYmplY3Q+
PiBjb250ZXh0XzsKLSAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50V3JhcHBlcj4gdGVzdF9pc19kb25l
XzsKKyAgcnRjOjpFdmVudCB0ZXN0X2lzX2RvbmVfOwogICBydGM6OnNjb3BlZF9yZWZwdHI8QXVk
aW9EZXZpY2VNb2R1bGU+IGF1ZGlvX2RldmljZV87CiAgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2Jq
ZWN0PiBhdWRpb19tYW5hZ2VyXzsKICAgQXVkaW9QYXJhbWV0ZXJzIG91dHB1dF9wYXJhbWV0ZXJz
XzsKQEAgLTg4MCwxNCArODgwLDE0IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0b3BSZWNv
cmRpbmdSZXF1aXJlc0luaXRUb1Jlc3RhcnQpIHsKIC8vIGF1ZGlvIHNhbXBsZXMgdG8gcGxheSBv
dXQgdXNpbmcgdGhlIE5lZWRNb3JlUGxheURhdGEgY2FsbGJhY2suCiBURVNUX0YoQXVkaW9EZXZp
Y2VUZXN0LCBTdGFydFBsYXlvdXRWZXJpZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNw
b3J0QW5kcm9pZCBtb2NrKGtQbGF5b3V0KTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9p
c19kb25lXy5nZXQoKSwgbnVsbHB0ciwga051bUNhbGxiYWNrcyk7CisgIG1vY2suSGFuZGxlQ2Fs
bGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKICAgRVhQRUNU
X0NBTEwobW9jaywgTmVlZE1vcmVQbGF5RGF0YShwbGF5b3V0X2ZyYW1lc19wZXJfMTBtc19idWZm
ZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQnl0ZXNQZXJTYW1w
bGUsIHBsYXlvdXRfY2hhbm5lbHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwbGF5b3V0X3NhbXBsZV9yYXRlKCksIE5vdE51bGwoKSwgXywgXywgXykpCiAgICAgICAu
VGltZXMoQXRMZWFzdChrTnVtQ2FsbGJhY2tzKSk7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZp
Y2UoKS0+UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKCZtb2NrKSk7CiAgIFN0YXJ0UGxheW91dCgpOwot
ICB0ZXN0X2lzX2RvbmVfLT5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKKyAgdGVz
dF9pc19kb25lXy5XYWl0KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAgU3RvcFBsYXlv
dXQoKTsKIH0KIApAQCAtODk1LDcgKzg5NSw3IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIFN0
YXJ0UGxheW91dFZlcmlmeUNhbGxiYWNrcykgewogLy8gYXVkaW8gc2FtcGxlcyB2aWEgdGhlIFJl
Y29yZGVkRGF0YUlzQXZhaWxhYmxlIGNhbGxiYWNrLgogVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwg
U3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKICAgTW9ja0F1ZGlvVHJhbnNwb3J0QW5k
cm9pZCBtb2NrKGtSZWNvcmRpbmcpOwotICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lzX2Rv
bmVfLmdldCgpLCBudWxscHRyLCBrTnVtQ2FsbGJhY2tzKTsKKyAgbW9jay5IYW5kbGVDYWxsYmFj
a3MoJnRlc3RfaXNfZG9uZV8sIG51bGxwdHIsIGtOdW1DYWxsYmFja3MpOwogICBFWFBFQ1RfQ0FM
TCgKICAgICAgIG1vY2ssIFJlY29yZGVkRGF0YUlzQXZhaWxhYmxlKE5vdE51bGwoKSwgcmVjb3Jk
X2ZyYW1lc19wZXJfMTBtc19idWZmZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtCeXRlc1BlclNhbXBsZSwgcmVjb3JkX2NoYW5uZWxzKCksCkBAIC05MDQsNyArOTA0
LDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlDYWxsYmFj
a3MpIHsKIAogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxs
YmFjaygmbW9jaykpOwogICBTdGFydFJlY29yZGluZygpOwotICB0ZXN0X2lzX2RvbmVfLT5XYWl0
KGtUZXN0VGltZU91dEluTWlsbGlzZWNvbmRzKTsKKyAgdGVzdF9pc19kb25lXy5XYWl0KGtUZXN0
VGltZU91dEluTWlsbGlzZWNvbmRzKTsKICAgU3RvcFJlY29yZGluZygpOwogfQogCkBAIC05MTIs
NyArOTEyLDcgQEAgVEVTVF9GKEF1ZGlvRGV2aWNlVGVzdCwgU3RhcnRSZWNvcmRpbmdWZXJpZnlD
YWxsYmFja3MpIHsKIC8vIGFjdGl2ZSBpbiBib3RoIGRpcmVjdGlvbnMuCiBURVNUX0YoQXVkaW9E
ZXZpY2VUZXN0LCBTdGFydFBsYXlvdXRBbmRSZWNvcmRpbmdWZXJpZnlDYWxsYmFja3MpIHsKICAg
TW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZCBtb2NrKGtQbGF5b3V0IHwga1JlY29yZGluZyk7Ci0g
IG1vY2suSGFuZGxlQ2FsbGJhY2tzKHRlc3RfaXNfZG9uZV8uZ2V0KCksIG51bGxwdHIsIGtOdW1D
YWxsYmFja3MpOworICBtb2NrLkhhbmRsZUNhbGxiYWNrcygmdGVzdF9pc19kb25lXywgbnVsbHB0
ciwga051bUNhbGxiYWNrcyk7CiAgIEVYUEVDVF9DQUxMKG1vY2ssIE5lZWRNb3JlUGxheURhdGEo
cGxheW91dF9mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga0J5dGVzUGVyU2FtcGxlLCBwbGF5b3V0X2NoYW5uZWxzKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheW91dF9zYW1wbGVfcmF0ZSgpLCBO
b3ROdWxsKCksIF8sIF8sIF8pKQpAQCAtOTI1LDcgKzkyNSw3IEBAIFRFU1RfRihBdWRpb0Rldmlj
ZVRlc3QsIFN0YXJ0UGxheW91dEFuZFJlY29yZGluZ1ZlcmlmeUNhbGxiYWNrcykgewogICBFWFBF
Q1RfRVEoMCwgYXVkaW9fZGV2aWNlKCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwog
ICBTdGFydFBsYXlvdXQoKTsKICAgU3RhcnRSZWNvcmRpbmcoKTsKLSAgdGVzdF9pc19kb25lXy0+
V2FpdChrVGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CisgIHRlc3RfaXNfZG9uZV8uV2FpdChr
VGVzdFRpbWVPdXRJbk1pbGxpc2Vjb25kcyk7CiAgIFN0b3BSZWNvcmRpbmcoKTsKICAgU3RvcFBs
YXlvdXQoKTsKIH0KQEAgLTk0MSwxMiArOTQxLDExIEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3Qs
IFJ1blBsYXlvdXRXaXRoRmlsZUFzU291cmNlKSB7CiAgIHN0ZDo6c3RyaW5nIGZpbGVfbmFtZSA9
IEdldEZpbGVOYW1lKHBsYXlvdXRfc2FtcGxlX3JhdGUoKSk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxG
aWxlQXVkaW9TdHJlYW0+IGZpbGVfYXVkaW9fc3RyZWFtKAogICAgICAgbmV3IEZpbGVBdWRpb1N0
cmVhbShudW1fY2FsbGJhY2tzLCBmaWxlX25hbWUsIHBsYXlvdXRfc2FtcGxlX3JhdGUoKSkpOwot
ICBtb2NrLkhhbmRsZUNhbGxiYWNrcyh0ZXN0X2lzX2RvbmVfLmdldCgpLCBmaWxlX2F1ZGlvX3N0
cmVhbS5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgbnVtX2NhbGxiYWNrcyk7CisgIG1v
Y2suSGFuZGxlQ2FsbGJhY2tzKCZ0ZXN0X2lzX2RvbmVfLCBmaWxlX2F1ZGlvX3N0cmVhbS5nZXQo
KSwgbnVtX2NhbGxiYWNrcyk7CiAgIC8vIFNldE1heFBsYXlvdXRWb2x1bWUoKTsKICAgRVhQRUNU
X0VRKDAsIGF1ZGlvX2RldmljZSgpLT5SZWdpc3RlckF1ZGlvQ2FsbGJhY2soJm1vY2spKTsKICAg
U3RhcnRQbGF5b3V0KCk7Ci0gIHRlc3RfaXNfZG9uZV8tPldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxs
aXNlY29uZHMpOworICB0ZXN0X2lzX2RvbmVfLldhaXQoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29u
ZHMpOwogICBTdG9wUGxheW91dCgpOwogfQogCkBAIC0xMDg0LDEzICsxMDgzLDEzIEBAIFRFU1Rf
RihBdWRpb0RldmljZVRlc3QsIERJU0FCTEVEX1J1blBsYXlvdXRBbmRSZWNvcmRpbmdJbkZ1bGxE
dXBsZXgpIHsKICAgTmljZU1vY2s8TW9ja0F1ZGlvVHJhbnNwb3J0QW5kcm9pZD4gbW9jayhrUGxh
eW91dCB8IGtSZWNvcmRpbmcpOwogICBzdGQ6OnVuaXF1ZV9wdHI8Rmlmb0F1ZGlvU3RyZWFtPiBm
aWZvX2F1ZGlvX3N0cmVhbSgKICAgICAgIG5ldyBGaWZvQXVkaW9TdHJlYW0ocGxheW91dF9mcmFt
ZXNfcGVyXzEwbXNfYnVmZmVyKCkpKTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19k
b25lXy5nZXQoKSwgZmlmb19hdWRpb19zdHJlYW0uZ2V0KCksCisgIG1vY2suSGFuZGxlQ2FsbGJh
Y2tzKCZ0ZXN0X2lzX2RvbmVfLCBmaWZvX2F1ZGlvX3N0cmVhbS5nZXQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAga0Z1bGxEdXBsZXhUaW1lSW5TZWMgKiBrTnVtQ2FsbGJhY2tzUGVyU2Vjb25k
KTsKICAgU2V0TWF4UGxheW91dFZvbHVtZSgpOwogICBFWFBFQ1RfRVEoMCwgYXVkaW9fZGV2aWNl
KCktPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygmbW9jaykpOwogICBTdGFydFJlY29yZGluZygpOwog
ICBTdGFydFBsYXlvdXQoKTsKLSAgdGVzdF9pc19kb25lXy0+V2FpdCgKKyAgdGVzdF9pc19kb25l
Xy5XYWl0KAogICAgICAgc3RkOjptYXgoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMsIDEwMDAg
KiBrRnVsbER1cGxleFRpbWVJblNlYykpOwogICBTdG9wUGxheW91dCgpOwogICBTdG9wUmVjb3Jk
aW5nKCk7CkBAIC0xMTE3LDE0ICsxMTE2LDE0IEBAIFRFU1RfRihBdWRpb0RldmljZVRlc3QsIERJ
U0FCTEVEX01lYXN1cmVMb29wYmFja0xhdGVuY3kpIHsKICAgTmljZU1vY2s8TW9ja0F1ZGlvVHJh
bnNwb3J0QW5kcm9pZD4gbW9jayhrUGxheW91dCB8IGtSZWNvcmRpbmcpOwogICBzdGQ6OnVuaXF1
ZV9wdHI8TGF0ZW5jeU1lYXN1cmluZ0F1ZGlvU3RyZWFtPiBsYXRlbmN5X2F1ZGlvX3N0cmVhbSgK
ICAgICAgIG5ldyBMYXRlbmN5TWVhc3VyaW5nQXVkaW9TdHJlYW0ocGxheW91dF9mcmFtZXNfcGVy
XzEwbXNfYnVmZmVyKCkpKTsKLSAgbW9jay5IYW5kbGVDYWxsYmFja3ModGVzdF9pc19kb25lXy5n
ZXQoKSwgbGF0ZW5jeV9hdWRpb19zdHJlYW0uZ2V0KCksCisgIG1vY2suSGFuZGxlQ2FsbGJhY2tz
KCZ0ZXN0X2lzX2RvbmVfLCBsYXRlbmN5X2F1ZGlvX3N0cmVhbS5nZXQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAga01lYXN1cmVMYXRlbmN5VGltZUluU2VjICoga051bUNhbGxiYWNrc1BlclNl
Y29uZCk7CiAgIEVYUEVDVF9FUSgwLCBhdWRpb19kZXZpY2UoKS0+UmVnaXN0ZXJBdWRpb0NhbGxi
YWNrKCZtb2NrKSk7CiAgIFNldE1heFBsYXlvdXRWb2x1bWUoKTsKICAgRGlzYWJsZUJ1aWx0SW5B
RUNJZkF2YWlsYWJsZSgpOwogICBTdGFydFJlY29yZGluZygpOwogICBTdGFydFBsYXlvdXQoKTsK
LSAgdGVzdF9pc19kb25lXy0+V2FpdCgKKyAgdGVzdF9pc19kb25lXy5XYWl0KAogICAgICAgc3Rk
OjptYXgoa1Rlc3RUaW1lT3V0SW5NaWxsaXNlY29uZHMsIDEwMDAgKiBrTWVhc3VyZUxhdGVuY3lU
aW1lSW5TZWMpKTsKICAgU3RvcFBsYXlvdXQoKTsKICAgU3RvcFJlY29yZGluZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvbmF0aXZlX3VuaXR0ZXN0cy9vcmcvd2VicnRjL0phdmFWaWRlb1NvdXJjZVRlc3RIZWxwZXIu
amF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL25hdGl2ZV91bml0dGVzdHMvb3JnL3dlYnJ0Yy9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVy
LmphdmEKaW5kZXggYmRlMzRlOTVjZjYzMzNiMGQ5MjUwMWU2NmEyMjBlOTgwMzU5NTVlNC4uMzA5
Yzc4NjU0ZWYzNjZkNjU1YzU4MWQ1YjkzYjM2ZGU1MDA0OWFjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3Vu
aXR0ZXN0cy9vcmcvd2VicnRjL0phdmFWaWRlb1NvdXJjZVRlc3RIZWxwZXIuamF2YQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRp
dmVfdW5pdHRlc3RzL29yZy93ZWJydGMvSmF2YVZpZGVvU291cmNlVGVzdEhlbHBlci5qYXZhCkBA
IC0yNCw4ICsyNCw5IEBAIHB1YmxpYyBjbGFzcyBKYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyIHsK
ICAgfQogCiAgIEBDYWxsZWRCeU5hdGl2ZQotICBwdWJsaWMgc3RhdGljIHZvaWQgZGVsaXZlckZy
YW1lKGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHJvdGF0aW9uLCBDYXB0dXJlck9ic2VydmVy
IG9ic2VydmVyKSB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBkZWxpdmVyRnJhbWUoCisgICAgICBp
bnQgd2lkdGgsIGludCBoZWlnaHQsIGludCByb3RhdGlvbiwgbG9uZyB0aW1lc3RhbXBOcywgQ2Fw
dHVyZXJPYnNlcnZlciBvYnNlcnZlcikgewogICAgIG9ic2VydmVyLm9uRnJhbWVDYXB0dXJlZCgK
LSAgICAgICAgbmV3IFZpZGVvRnJhbWUoSmF2YUk0MjBCdWZmZXIuYWxsb2NhdGUod2lkdGgsIGhl
aWdodCksIHJvdGF0aW9uLCAwIC8qIHRpbWVzdGFtcE5zPSAqLykpOworICAgICAgICBuZXcgVmlk
ZW9GcmFtZShKYXZhSTQyMEJ1ZmZlci5hbGxvY2F0ZSh3aWR0aCwgaGVpZ2h0KSwgcm90YXRpb24s
IHRpbWVzdGFtcE5zKSk7CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25hdGl2ZV91bml0dGVzdHMvdmlkZW8v
dmlkZW9zb3VyY2VfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9uYXRpdmVfdW5pdHRlc3RzL3ZpZGVvL3ZpZGVvc291cmNl
X3VuaXR0ZXN0LmNjCmluZGV4IGI1OGVkMWE0NWE1NGVkMDdiOWQ4N2ZjMjQzMDgyYmQ5ZGUwNzBj
N2IuLjdlY2Y5ZjhlYjRiOGEwZjc4OTY1M2FlZjZlZDY3OWMzMzU0OGIzODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL25h
dGl2ZV91bml0dGVzdHMvdmlkZW8vdmlkZW9zb3VyY2VfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvbmF0aXZlX3Vu
aXR0ZXN0cy92aWRlby92aWRlb3NvdXJjZV91bml0dGVzdC5jYwpAQCAtNDAsOSArNDAsOSBAQCBU
RVNUKEphdmFWaWRlb1NvdXJjZVRlc3QsIENyZWF0ZUphdmFWaWRlb1NvdXJjZSkgewogICBydGM6
OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPldyYXBDdXJyZW50VGhyZWFkKCk7CiAKICAgcnRj
OjpzY29wZWRfcmVmcHRyPEphdmFWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlPiB2aWRlb190cmFj
a19zb3VyY2UgPQotICAgICAgQ3JlYXRlSmF2YVZpZGVvU291cmNlKGVudiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRU
aHJlYWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5j
YXN0ICovKTsKKyAgICAgIENyZWF0ZUphdmFWaWRlb1NvdXJjZSgKKyAgICAgICAgICBlbnYsIHJ0
Yzo6VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+Q3VycmVudFRocmVhZCgpLAorICAgICAgICAg
IGZhbHNlIC8qIGlzX3NjcmVlbmNhc3QgKi8sIHRydWUgLyogYWxpZ25fdGltZXN0YW1wcyAqLyk7
CiAKICAgQVNTRVJUX05FKG51bGxwdHIsIHZpZGVvX3RyYWNrX3NvdXJjZSk7CiAgIEVYUEVDVF9O
RShudWxscHRyLApAQCAtNTcsOSArNTcsOSBAQCBURVNUKEphdmFWaWRlb1NvdXJjZVRlc3QsIE9u
RnJhbWVDYXB0dXJlZEZyYW1lSXNEZWxpdmVyZWRUb1NpbmspIHsKICAgcnRjOjpUaHJlYWRNYW5h
Z2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVudFRocmVhZCgpOwogCiAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxKYXZhVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZT4gdmlkZW9fdHJhY2tfc291cmNlID0K
LSAgICAgIENyZWF0ZUphdmFWaWRlb1NvdXJjZShlbnYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaXNfc2NyZWVuY2FzdCAqLyk7Cisg
ICAgICBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCisgICAgICAgICAgZW52LCBydGM6OlRocmVhZE1h
bmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKKyAgICAgICAgICBmYWxzZSAvKiBp
c19zY3JlZW5jYXN0ICovLCB0cnVlIC8qIGFsaWduX3RpbWVzdGFtcHMgKi8pOwogICB2aWRlb190
cmFja19zb3VyY2UtPkFkZE9yVXBkYXRlU2luaygmdGVzdF92aWRlb19zaW5rLCBydGM6OlZpZGVv
U2lua1dhbnRzKCkpOwogCiAgIGpuaTo6SmF2YV9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyX3N0
YXJ0Q2FwdHVyZSgKQEAgLTY4LDggKzY4LDkgQEAgVEVTVChKYXZhVmlkZW9Tb3VyY2VUZXN0LCBP
bkZyYW1lQ2FwdHVyZWRGcmFtZUlzRGVsaXZlcmVkVG9TaW5rKSB7CiAgIGNvbnN0IGludCB3aWR0
aCA9IDIwOwogICBjb25zdCBpbnQgaGVpZ2h0ID0gMzI7CiAgIGNvbnN0IGludCByb3RhdGlvbiA9
IDE4MDsKKyAgY29uc3QgaW50NjRfdCB0aW1lc3RhbXAgPSA5ODc2NTQzMjE7CiAgIGpuaTo6SmF2
YV9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyX2RlbGl2ZXJGcmFtZSgKLSAgICAgIGVudiwgd2lk
dGgsIGhlaWdodCwgcm90YXRpb24sCisgICAgICBlbnYsIHdpZHRoLCBoZWlnaHQsIHJvdGF0aW9u
LCB0aW1lc3RhbXAsCiAgICAgICB2aWRlb190cmFja19zb3VyY2UtPkdldEphdmFWaWRlb0NhcHR1
cmVyT2JzZXJ2ZXIoZW52KSk7CiAKICAgc3RkOjp2ZWN0b3I8VmlkZW9GcmFtZT4gZnJhbWVzID0g
dGVzdF92aWRlb19zaW5rLkdldEZyYW1lcygpOwpAQCAtODAsMTUgKzgxLDQ5IEBAIFRFU1QoSmF2
YVZpZGVvU291cmNlVGVzdCwgT25GcmFtZUNhcHR1cmVkRnJhbWVJc0RlbGl2ZXJlZFRvU2luaykg
ewogICBFWFBFQ1RfRVEocm90YXRpb24sIGZyYW1lLnJvdGF0aW9uKCkpOwogfQogCitURVNUKEph
dmFWaWRlb1NvdXJjZVRlc3QsCisgICAgIE9uRnJhbWVDYXB0dXJlZEZyYW1lSXNEZWxpdmVyZWRU
b1NpbmtXaXRoUHJlc2VydmVkVGltZXN0YW1wKSB7CisgIFRlc3RWaWRlb1NpbmsgdGVzdF92aWRl
b19zaW5rOworCisgIEpOSUVudiogZW52ID0gQXR0YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7
CisgIC8vIFdyYXAgdGVzdCB0aHJlYWQgc28gaXQgY2FuIGJlIHVzZWQgYXMgdGhlIHNpZ25hbGlu
ZyB0aHJlYWQuCisgIHJ0Yzo6VGhyZWFkTWFuYWdlcjo6SW5zdGFuY2UoKS0+V3JhcEN1cnJlbnRU
aHJlYWQoKTsKKworICBydGM6OnNjb3BlZF9yZWZwdHI8SmF2YVZpZGVvVHJhY2tTb3VyY2VJbnRl
cmZhY2U+IHZpZGVvX3RyYWNrX3NvdXJjZSA9CisgICAgICBDcmVhdGVKYXZhVmlkZW9Tb3VyY2Uo
CisgICAgICAgICAgZW52LCBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRU
aHJlYWQoKSwKKyAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovLCBmYWxzZSAvKiBh
bGlnbl90aW1lc3RhbXBzICovKTsKKyAgdmlkZW9fdHJhY2tfc291cmNlLT5BZGRPclVwZGF0ZVNp
bmsoJnRlc3RfdmlkZW9fc2luaywgcnRjOjpWaWRlb1NpbmtXYW50cygpKTsKKworICBqbmk6Okph
dmFfSmF2YVZpZGVvU291cmNlVGVzdEhlbHBlcl9zdGFydENhcHR1cmUoCisgICAgICBlbnYsIHZp
ZGVvX3RyYWNrX3NvdXJjZS0+R2V0SmF2YVZpZGVvQ2FwdHVyZXJPYnNlcnZlcihlbnYpLAorICAg
ICAgdHJ1ZSAvKiBzdWNjZXNzICovKTsKKyAgY29uc3QgaW50IHdpZHRoID0gMjA7CisgIGNvbnN0
IGludCBoZWlnaHQgPSAzMjsKKyAgY29uc3QgaW50IHJvdGF0aW9uID0gMTgwOworICBjb25zdCBp
bnQ2NF90IHRpbWVzdGFtcCA9IDk4NzY1NDMyMTsKKyAgam5pOjpKYXZhX0phdmFWaWRlb1NvdXJj
ZVRlc3RIZWxwZXJfZGVsaXZlckZyYW1lKAorICAgICAgZW52LCB3aWR0aCwgaGVpZ2h0LCByb3Rh
dGlvbiwgOTg3NjU0MzIxLAorICAgICAgdmlkZW9fdHJhY2tfc291cmNlLT5HZXRKYXZhVmlkZW9D
YXB0dXJlck9ic2VydmVyKGVudikpOworCisgIHN0ZDo6dmVjdG9yPFZpZGVvRnJhbWU+IGZyYW1l
cyA9IHRlc3RfdmlkZW9fc2luay5HZXRGcmFtZXMoKTsKKyAgQVNTRVJUX0VRKDF1LCBmcmFtZXMu
c2l6ZSgpKTsKKyAgd2VicnRjOjpWaWRlb0ZyYW1lIGZyYW1lID0gZnJhbWVzWzBdOworICBFWFBF
Q1RfRVEod2lkdGgsIGZyYW1lLndpZHRoKCkpOworICBFWFBFQ1RfRVEoaGVpZ2h0LCBmcmFtZS5o
ZWlnaHQoKSk7CisgIEVYUEVDVF9FUShyb3RhdGlvbiwgZnJhbWUucm90YXRpb24oKSk7CisgIEVY
UEVDVF9FUSh0aW1lc3RhbXAgLyAxMDAwLCBmcmFtZS50aW1lc3RhbXBfdXMoKSk7Cit9CisKIFRF
U1QoSmF2YVZpZGVvU291cmNlVGVzdCwgQ2FwdHVyZXJTdGFydGVkU3VjY2Vzc1N0YXRlQmVjb21l
c0xpdmUpIHsKICAgSk5JRW52KiBlbnYgPSBBdHRhY2hDdXJyZW50VGhyZWFkSWZOZWVkZWQoKTsK
ICAgLy8gV3JhcCB0ZXN0IHRocmVhZCBzbyBpdCBjYW4gYmUgdXNlZCBhcyB0aGUgc2lnbmFsaW5n
IHRocmVhZC4KICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVudFRo
cmVhZCgpOwogCiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxKYXZhVmlkZW9UcmFja1NvdXJjZUludGVy
ZmFjZT4gdmlkZW9fdHJhY2tfc291cmNlID0KLSAgICAgIENyZWF0ZUphdmFWaWRlb1NvdXJjZShl
bnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0
YW5jZSgpLT5DdXJyZW50VGhyZWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFs
c2UgLyogaXNfc2NyZWVuY2FzdCAqLyk7CisgICAgICBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCisg
ICAgICAgICAgZW52LCBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJl
YWQoKSwKKyAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovLCB0cnVlIC8qIGFsaWdu
X3RpbWVzdGFtcHMgKi8pOwogCiAgIGpuaTo6SmF2YV9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVy
X3N0YXJ0Q2FwdHVyZSgKICAgICAgIGVudiwgdmlkZW9fdHJhY2tfc291cmNlLT5HZXRKYXZhVmlk
ZW9DYXB0dXJlck9ic2VydmVyKGVudiksCkBAIC0xMDQsOSArMTM5LDkgQEAgVEVTVChKYXZhVmlk
ZW9Tb3VyY2VUZXN0LCBDYXB0dXJlclN0YXJ0ZWRGYWlsdXJlU3RhdGVCZWNvbWVzRW5kZWQpIHsK
ICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVudFRocmVhZCgpOwog
CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxKYXZhVmlkZW9UcmFja1NvdXJjZUludGVyZmFjZT4gdmlk
ZW9fdHJhY2tfc291cmNlID0KLSAgICAgIENyZWF0ZUphdmFWaWRlb1NvdXJjZShlbnYsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5D
dXJyZW50VGhyZWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaXNf
c2NyZWVuY2FzdCAqLyk7CisgICAgICBDcmVhdGVKYXZhVmlkZW9Tb3VyY2UoCisgICAgICAgICAg
ZW52LCBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwKKyAg
ICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovLCB0cnVlIC8qIGFsaWduX3RpbWVzdGFt
cHMgKi8pOwogCiAgIGpuaTo6SmF2YV9KYXZhVmlkZW9Tb3VyY2VUZXN0SGVscGVyX3N0YXJ0Q2Fw
dHVyZSgKICAgICAgIGVudiwgdmlkZW9fdHJhY2tfc291cmNlLT5HZXRKYXZhVmlkZW9DYXB0dXJl
ck9ic2VydmVyKGVudiksCkBAIC0xMjIsOSArMTU3LDkgQEAgVEVTVChKYXZhVmlkZW9Tb3VyY2VU
ZXN0LCBDYXB0dXJlclN0b3BwZWRTdGF0ZUJlY29tZXNFbmRlZCkgewogICBydGM6OlRocmVhZE1h
bmFnZXI6Okluc3RhbmNlKCktPldyYXBDdXJyZW50VGhyZWFkKCk7CiAKICAgcnRjOjpzY29wZWRf
cmVmcHRyPEphdmFWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlPiB2aWRlb190cmFja19zb3VyY2Ug
PQotICAgICAgQ3JlYXRlSmF2YVZpZGVvU291cmNlKGVudiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBydGM6OlRocmVhZE1hbmFnZXI6Okluc3RhbmNlKCktPkN1cnJlbnRUaHJlYWQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpc19zY3JlZW5jYXN0ICovKTsK
KyAgICAgIENyZWF0ZUphdmFWaWRlb1NvdXJjZSgKKyAgICAgICAgICBlbnYsIHJ0Yzo6VGhyZWFk
TWFuYWdlcjo6SW5zdGFuY2UoKS0+Q3VycmVudFRocmVhZCgpLAorICAgICAgICAgIGZhbHNlIC8q
IGlzX3NjcmVlbmNhc3QgKi8sIHRydWUgLyogYWxpZ25fdGltZXN0YW1wcyAqLyk7CiAKICAgam5p
OjpKYXZhX0phdmFWaWRlb1NvdXJjZVRlc3RIZWxwZXJfc3RhcnRDYXB0dXJlKAogICAgICAgZW52
LCB2aWRlb190cmFja19zb3VyY2UtPkdldEphdmFWaWRlb0NhcHR1cmVyT2JzZXJ2ZXIoZW52KSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvSGFyZHdhcmVWaWRlb0VuY29kZXIuamF2YSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3Ny
Yy9qYXZhL29yZy93ZWJydGMvSGFyZHdhcmVWaWRlb0VuY29kZXIuamF2YQppbmRleCBlYmY5ZGUz
NzRmMTRiMDFkOTNhMTgxY2Y3YmUyNzY1ZjZkNDM4N2Q5Li5jMzZhNjhjZDIxYjdmMWI1MzBmZTE0
ODM4MWY4ODM2NWY0ZjI5MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL0hhcmR3YXJl
VmlkZW9FbmNvZGVyLmphdmEKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9IYXJkd2FyZVZpZGVvRW5j
b2Rlci5qYXZhCkBAIC00MDMsMTIgKzQwMyw2IEBAIGNsYXNzIEhhcmR3YXJlVmlkZW9FbmNvZGVy
IGltcGxlbWVudHMgVmlkZW9FbmNvZGVyIHsKICAgICByZXR1cm4gVmlkZW9Db2RlY1N0YXR1cy5P
SzsKICAgfQogCi0gIEBPdmVycmlkZQotICBwdWJsaWMgVmlkZW9Db2RlY1N0YXR1cyBzZXRDaGFu
bmVsUGFyYW1ldGVycyhzaG9ydCBwYWNrZXRMb3NzLCBsb25nIHJvdW5kVHJpcFRpbWVNcykgewot
ICAgIGVuY29kZVRocmVhZENoZWNrZXIuY2hlY2tJc09uVmFsaWRUaHJlYWQoKTsKLSAgICByZXR1
cm4gVmlkZW9Db2RlY1N0YXR1cy5PSzsgLy8gTm8gb3AuCi0gIH0KLQogICBAT3ZlcnJpZGUKICAg
cHVibGljIFZpZGVvQ29kZWNTdGF0dXMgc2V0UmF0ZUFsbG9jYXRpb24oQml0cmF0ZUFsbG9jYXRp
b24gYml0cmF0ZUFsbG9jYXRpb24sIGludCBmcmFtZXJhdGUpIHsKICAgICBlbmNvZGVUaHJlYWRD
aGVja2VyLmNoZWNrSXNPblZhbGlkVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2Vi
cnRjL05hdGl2ZUNhcHR1cmVyT2JzZXJ2ZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvTmF0aXZl
Q2FwdHVyZXJPYnNlcnZlci5qYXZhCmluZGV4IDI0ODY5ODE4YTY2YTM4ZTljMDNlMTIyYTBhM2E5
MDQyMzgwYzNjOGUuLmY2NzNiMjQ4ODViMmI2MmVlZGMyMGFiMjBlYjY1ZmUxOGExMzg3OTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvTmF0aXZlQ2FwdHVyZXJPYnNlcnZlci5qYXZhCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L3NyYy9qYXZhL29yZy93ZWJydGMvTmF0aXZlQ2FwdHVyZXJPYnNlcnZlci5qYXZhCkBAIC0xMSw2
ICsxMSw3IEBACiBwYWNrYWdlIG9yZy53ZWJydGM7CiAKIGltcG9ydCBqYXZheC5hbm5vdGF0aW9u
Lk51bGxhYmxlOworaW1wb3J0IG9yZy53ZWJydGMuVmlkZW9GcmFtZTsKIAogLyoqCiAgKiBJbXBs
ZW1lbnRzIFZpZGVvQ2FwdHVyZXIuQ2FwdHVyZXJPYnNlcnZlciBhbmQgZmVlZHMgZnJhbWVzIHRv
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOERlY29kZXIuamF2YSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29y
Zy93ZWJydGMvVlA4RGVjb2Rlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
YjI5YzM0OWM3YTEwMjE4NzE3YjlmYzY5NGZlMDQwNTZhYjEzZWM5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvVlA4RGVjb2Rl
ci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
KGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVj
dHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUg
UEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZv
dW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgot
ICovCi0KLXBhY2thZ2Ugb3JnLndlYnJ0YzsKLQotY2xhc3MgVlA4RGVjb2RlciBleHRlbmRzIFdy
YXBwZWROYXRpdmVWaWRlb0RlY29kZXIgewotICBAT3ZlcnJpZGUKLSAgcHVibGljIGxvbmcgY3Jl
YXRlTmF0aXZlVmlkZW9EZWNvZGVyKCkgewotICAgIHJldHVybiBuYXRpdmVDcmVhdGVEZWNvZGVy
KCk7Ci0gIH0KLQotICBzdGF0aWMgbmF0aXZlIGxvbmcgbmF0aXZlQ3JlYXRlRGVjb2RlcigpOwot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9WUDhFbmNvZGVyLmphdmEgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9v
cmcvd2VicnRjL1ZQOEVuY29kZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzJmOGY1MDQxNzdkZWVlZjljM2VhN2M3NzU4NTJkYTI4ZTQzYjRlNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOEVuY29k
ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxl
Y3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotICogIGluIHRoZSBmaWxl
IFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKLSAqICBiZSBm
b3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4K
LSAqLwotCi1wYWNrYWdlIG9yZy53ZWJydGM7Ci0KLWNsYXNzIFZQOEVuY29kZXIgZXh0ZW5kcyBX
cmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyIHsKLSAgQE92ZXJyaWRlCi0gIHB1YmxpYyBsb25nIGNy
ZWF0ZU5hdGl2ZVZpZGVvRW5jb2RlcigpIHsKLSAgICByZXR1cm4gbmF0aXZlQ3JlYXRlRW5jb2Rl
cigpOwotICB9Ci0KLSAgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNyZWF0ZUVuY29kZXIoKTsK
LQotICBAT3ZlcnJpZGUKLSAgcHVibGljIGJvb2xlYW4gaXNIYXJkd2FyZUVuY29kZXIoKSB7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQ
OURlY29kZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvVlA5RGVjb2Rlci5qYXZhCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmZlZTJkMzYyYjJhZTU4Mzc1OGNiZWI5ZGNkMWFkN2Rh
OWVlMWI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9q
YXZhL29yZy93ZWJydGMvVlA5RGVjb2Rlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhv
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVl
LiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJl
IGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVj
dCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJv
b3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLXBhY2thZ2Ugb3JnLndlYnJ0YzsKLQotY2xh
c3MgVlA5RGVjb2RlciBleHRlbmRzIFdyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIgewotICBAT3Zl
cnJpZGUKLSAgcHVibGljIGxvbmcgY3JlYXRlTmF0aXZlVmlkZW9EZWNvZGVyKCkgewotICAgIHJl
dHVybiBuYXRpdmVDcmVhdGVEZWNvZGVyKCk7Ci0gIH0KLQotICBzdGF0aWMgbmF0aXZlIGxvbmcg
bmF0aXZlQ3JlYXRlRGVjb2RlcigpOwotCi0gIHN0YXRpYyBuYXRpdmUgYm9vbGVhbiBuYXRpdmVJ
c1N1cHBvcnRlZCgpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2phdmEvb3JnL3dlYnJ0Yy9WUDlFbmNvZGVy
LmphdmEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5k
cm9pZC9zcmMvamF2YS9vcmcvd2VicnRjL1ZQOUVuY29kZXIuamF2YQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYmM3MDViZDljNjAxN2ViNjY0NDljNzI3ZjM2NDA3MTVmNzE5MTNkZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcv
d2VicnRjL1ZQOUVuY29kZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8q
Ci0gKiAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAot
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KLSAqLwotCi1wYWNrYWdlIG9yZy53ZWJydGM7Ci0KLWNsYXNzIFZQOUVu
Y29kZXIgZXh0ZW5kcyBXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyIHsKLSAgQE92ZXJyaWRlCi0g
IHB1YmxpYyBsb25nIGNyZWF0ZU5hdGl2ZVZpZGVvRW5jb2RlcigpIHsKLSAgICByZXR1cm4gbmF0
aXZlQ3JlYXRlRW5jb2RlcigpOwotICB9Ci0KLSAgc3RhdGljIG5hdGl2ZSBsb25nIG5hdGl2ZUNy
ZWF0ZUVuY29kZXIoKTsKLQotICBAT3ZlcnJpZGUKLSAgcHVibGljIGJvb2xlYW4gaXNIYXJkd2Fy
ZUVuY29kZXIoKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgc3RhdGljIG5hdGl2ZSBi
b29sZWFuIG5hdGl2ZUlzU3VwcG9ydGVkKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvamF2YS9vcmcvd2Vi
cnRjL1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvV3Jh
cHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5qYXZhCmluZGV4IDA3ZTg0Mjg2MjEwMTIwNzEwN2NmZDQy
NzgzYmI5ZDYwNTBhNTFkNWIuLjk1OWNhZmNhNTY5MDdjMGExOGJmNTFjNjZmOGJmYWIyNjFjY2My
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rl
ci5qYXZhCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qYXZhL29yZy93ZWJydGMvV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5q
YXZhCkBAIC0zMiwxMSArMzIsNiBAQCBhYnN0cmFjdCBjbGFzcyBXcmFwcGVkTmF0aXZlVmlkZW9F
bmNvZGVyIGltcGxlbWVudHMgVmlkZW9FbmNvZGVyIHsKICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0
ZWRPcGVyYXRpb25FeGNlcHRpb24oIk5vdCBpbXBsZW1lbnRlZC4iKTsKICAgfQogCi0gIEBPdmVy
cmlkZQotICBwdWJsaWMgVmlkZW9Db2RlY1N0YXR1cyBzZXRDaGFubmVsUGFyYW1ldGVycyhzaG9y
dCBwYWNrZXRMb3NzLCBsb25nIHJvdW5kVHJpcFRpbWVNcykgewotICAgIHRocm93IG5ldyBVbnN1
cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiTm90IGltcGxlbWVudGVkLiIpOwotICB9Ci0KICAg
QE92ZXJyaWRlCiAgIHB1YmxpYyBWaWRlb0NvZGVjU3RhdHVzIHNldFJhdGVBbGxvY2F0aW9uKEJp
dHJhdGVBbGxvY2F0aW9uIGFsbG9jYXRpb24sIGludCBmcmFtZXJhdGUpIHsKICAgICB0aHJvdyBu
ZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIk5vdCBpbXBsZW1lbnRlZC4iKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9h
bmRyb2lkL3NyYy9qbmkvYW5kcm9pZG1lZGlhZGVjb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZG1lZGlh
ZGVjb2Rlci5jYwppbmRleCA0N2RkYWFjNDY3MmViMDFkYTBjMjQxNDc0NzlkNWEzY2IxZTFjZjQx
Li40ZGY1MDgyOWMzNmIxMGUxYzBlMDA5OTIxMjNjNTM2OGQ5ZmQ4ZmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMv
am5pL2FuZHJvaWRtZWRpYWRlY29kZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkbWVkaWFkZWNvZGVy
LmNjCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1
ZGUvbGlieXV2L3ZpZGVvX2NvbW1vbi5oIgogCiB1c2luZyBydGM6OkJpbmQ7Ci11c2luZyBydGM6
OlRocmVhZDsKIHVzaW5nIHJ0Yzo6VGhyZWFkTWFuYWdlcjsKIG5hbWVzcGFjZSB3ZWJydGMgewog
bmFtZXNwYWNlIGpuaSB7CkBAIC0xMjEsNyArMTIwLDcgQEAgY2xhc3MgTWVkaWFDb2RlY1ZpZGVv
RGVjb2RlciA6IHB1YmxpYyBWaWRlb0RlY29kZXIsIHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVy
IHsKIAogICAvLyBTdGF0ZSB0aGF0IGlzIGNvbnN0YW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhp
cyBvYmplY3Qgb25jZSB0aGUgY3RvcgogICAvLyByZXR1cm5zLgotICBzdGQ6OnVuaXF1ZV9wdHI8
VGhyZWFkPgorICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+CiAgICAgICBjb2RlY190aHJl
YWRfOyAgLy8gVGhyZWFkIG9uIHdoaWNoIHRvIG9wZXJhdGUgTWVkaWFDb2RlYy4KICAgU2NvcGVk
SmF2YUdsb2JhbFJlZjxqb2JqZWN0PiBqX21lZGlhX2NvZGVjX3ZpZGVvX2RlY29kZXJfOwogCkBA
IC0xMzcsNyArMTM2LDcgQEAgTWVkaWFDb2RlY1ZpZGVvRGVjb2Rlcjo6TWVkaWFDb2RlY1ZpZGVv
RGVjb2RlcihKTklFbnYqIGpuaSwKICAgICAgIGluaXRlZF8oZmFsc2UpLAogICAgICAgc3dfZmFs
bGJhY2tfcmVxdWlyZWRfKGZhbHNlKSwKICAgICAgIHVzZV9zdXJmYWNlXyh1c2Vfc3VyZmFjZSks
Ci0gICAgICBjb2RlY190aHJlYWRfKFRocmVhZDo6Q3JlYXRlKCkpLAorICAgICAgY29kZWNfdGhy
ZWFkXyhydGM6OlRocmVhZDo6Q3JlYXRlKCkpLAogICAgICAgal9tZWRpYV9jb2RlY192aWRlb19k
ZWNvZGVyXygKICAgICAgICAgICBqbmksCiAgICAgICAgICAgSmF2YV9NZWRpYUNvZGVjVmlkZW9E
ZWNvZGVyX0NvbnN0cnVjdG9yKGpuaSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZG1lZGlh
ZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZG1lZGlhZW5jb2Rlci5jYwppbmRleCA0MzViYzcxM2E4
NTgwY2Q5YWI0ZjFhOTY3MTY4MGUxNGE4OTg0OWJjLi4wOWIyY2NmNDNmNDBjZDQ5MWJlYTA1NjE4
YmIyYmFiYmUxMTY3MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRtZWRpYWVuY29kZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS9hbmRyb2lkbWVkaWFlbmNvZGVyLmNjCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5j
bHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L3ZpZGVvX2NvbW1vbi5oIgog
CiB1c2luZyBydGM6OkJpbmQ7Ci11c2luZyBydGM6OlRocmVhZDsKIHVzaW5nIHJ0Yzo6VGhyZWFk
TWFuYWdlcjsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0xMDUsMTMgKzEwNCw5IEBAIGNsYXNz
IE1lZGlhQ29kZWNWaWRlb0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgaW50MzJf
dCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soCiAgICAgICBFbmNvZGVkSW1hZ2VDYWxs
YmFjayogY2FsbGJhY2spIG92ZXJyaWRlOwogICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZTsK
LSAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCAvKiBwYWNrZXRfbG9zcyAq
LywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IC8qIHJ0dCAqLykgb3Zl
cnJpZGU7CiAgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxs
b2NhdGlvbiYgcmF0ZV9hbGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IGZyYW1lX3JhdGUpIG92ZXJyaWRlOwotCi0gIGJvb2wgU3VwcG9ydHNOYXRpdmVIYW5k
bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBoYXNfZWdsX2NvbnRleHRfOyB9Ci0gIGNvbnN0
IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICBFbmNvZGVySW5m
byBHZXRFbmNvZGVySW5mbygpIGNvbnN0IG92ZXJyaWRlOwogCiAgIC8vIEZpbGxzIHRoZSBpbnB1
dCBidWZmZXIgd2l0aCBkYXRhIGZyb20gdGhlIGJ1ZmZlcnMgcGFzc2VkIGFzIHBhcmFtZXRlcnMu
CiAgIGJvb2wgRmlsbElucHV0QnVmZmVyKEpOSUVudiogam5pLApAQCAtMTgwLDcgKzE3NSw3IEBA
IGNsYXNzIE1lZGlhQ29kZWNWaWRlb0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAg
Ly8gdHJ1ZSBvbiBzdWNjZXNzLgogICBib29sIERlbGl2ZXJQZW5kaW5nT3V0cHV0cyhKTklFbnYq
IGpuaSk7CiAKLSAgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRp
bmdzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIFZpZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIEdl
dFNjYWxpbmdTZXR0aW5nc0ludGVybmFsKCkgY29uc3Q7CiAKICAgLy8gRGlzcGxheXMgZW5jb2Rl
ciBzdGF0aXN0aWNzLgogICB2b2lkIExvZ1N0YXRpc3RpY3MoYm9vbCBmb3JjZV9sb2cpOwpAQCAt
MjcxLDYgKzI2Niw3IEBAIGNsYXNzIE1lZGlhQ29kZWNWaWRlb0VuY29kZXIgOiBwdWJsaWMgVmlk
ZW9FbmNvZGVyIHsKICAgc2l6ZV90IGdvZl9pZHhfOwogCiAgIGNvbnN0IGJvb2wgaGFzX2VnbF9j
b250ZXh0XzsKKyAgRW5jb2RlckluZm8gZW5jb2Rlcl9pbmZvXzsKIAogICAvLyBUZW1wb3Jhcnkg
Zml4IGZvciBWUDguCiAgIC8vIFNlbmRzIGEga2V5IGZyYW1lIGlmIGZyYW1lcyBhcmUgbGFyZ2Vs
eSBzcGFjZWQgYXBhcnQgKHBvc3NpYmx5CkBAIC0zNTgsMTcgKzM1NCwxNiBAQCBpbnQzMl90IE1l
ZGlhQ29kZWNWaWRlb0VuY29kZXI6OkluaXRFbmNvZGUoY29uc3QgVmlkZW9Db2RlYyogY29kZWNf
c2V0dGluZ3MsCiAgICAgQUxPR0QgPDwgIkguMjY0IHByb2ZpbGU6ICIgPDwgcHJvZmlsZV87CiAg
IH0KIAorICBlbmNvZGVyX2luZm9fLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSBoYXNfZWdsX2Nv
bnRleHRfOworICBlbmNvZGVyX2luZm9fLmltcGxlbWVudGF0aW9uX25hbWUgPSAiTWVkaWFDb2Rl
YyI7CisgIGVuY29kZXJfaW5mb18uc2NhbGluZ19zZXR0aW5ncyA9IEdldFNjYWxpbmdTZXR0aW5n
c0ludGVybmFsKCk7CisKICAgcmV0dXJuIEluaXRFbmNvZGVJbnRlcm5hbCgKICAgICAgIGluaXRf
d2lkdGgsIGluaXRfaGVpZ2h0LCBjb2RlY19zZXR0aW5ncy0+c3RhcnRCaXRyYXRlLAogICAgICAg
Y29kZWNfc2V0dGluZ3MtPm1heEZyYW1lcmF0ZSwKICAgICAgIGNvZGVjX3NldHRpbmdzLT5leHBl
Y3RfZW5jb2RlX2Zyb21fdGV4dHVyZSAmJiBoYXNfZWdsX2NvbnRleHRfKTsKIH0KIAotaW50MzJf
dCBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCAv
KiBwYWNrZXRfbG9zcyAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50NjRfdCAvKiBydHQgKi8pIHsKLSAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19PSzsKLX0KLQogYm9vbCBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpSZXNldENvZGVj
KCkgewogICBSVENfRENIRUNLX0NBTExFRF9TRVFVRU5USUFMTFkoJmVuY29kZXJfcXVldWVfY2hl
Y2tlcl8pOwogICBBTE9HRSA8PCAiUmVzZXQiOwpAQCAtOTMwLDYgKzkyNSwxMCBAQCBpbnQzMl90
IE1lZGlhQ29kZWNWaWRlb0VuY29kZXI6OlNldFJhdGVBbGxvY2F0aW9uKAogICByZXR1cm4gV0VC
UlRDX1ZJREVPX0NPREVDX09LOwogfQogCitWaWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIE1lZGlh
Q29kZWNWaWRlb0VuY29kZXI6OkdldEVuY29kZXJJbmZvKCkgY29uc3QgeworICByZXR1cm4gZW5j
b2Rlcl9pbmZvXzsKK30KKwogYm9vbCBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpEZWxpdmVyUGVu
ZGluZ091dHB1dHMoSk5JRW52KiBqbmkpIHsKICAgUlRDX0RDSEVDS19DQUxMRURfU0VRVUVOVElB
TExZKCZlbmNvZGVyX3F1ZXVlX2NoZWNrZXJfKTsKIApAQCAtMTE0OCw4ICsxMTQ3LDggQEAgdm9p
ZCBNZWRpYUNvZGVjVmlkZW9FbmNvZGVyOjpMb2dTdGF0aXN0aWNzKGJvb2wgZm9yY2VfbG9nKSB7
CiAgIH0KIH0KIAotVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgTWVkaWFDb2RlY1ZpZGVv
RW5jb2Rlcjo6R2V0U2NhbGluZ1NldHRpbmdzKCkKLSAgICBjb25zdCB7CitWaWRlb0VuY29kZXI6
OlNjYWxpbmdTZXR0aW5ncworTWVkaWFDb2RlY1ZpZGVvRW5jb2Rlcjo6R2V0U2NhbGluZ1NldHRp
bmdzSW50ZXJuYWwoKSBjb25zdCB7CiAgIGlmICghc2NhbGVfKQogICAgIHJldHVybiBWaWRlb0Vu
Y29kZXI6OlNjYWxpbmdTZXR0aW5nczo6a09mZjsKIApAQCAtMTIwNiwxMCArMTIwNSw2IEBAIFZp
ZGVvRW5jb2Rlcjo6U2NhbGluZ1NldHRpbmdzIE1lZGlhQ29kZWNWaWRlb0VuY29kZXI6OkdldFNj
YWxpbmdTZXR0aW5ncygpCiAgIHJldHVybiBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5nczo6
a09mZjsKIH0KIAotY29uc3QgY2hhciogTWVkaWFDb2RlY1ZpZGVvRW5jb2Rlcjo6SW1wbGVtZW50
YXRpb25OYW1lKCkgY29uc3QgewotICByZXR1cm4gIk1lZGlhQ29kZWMiOwotfQotCiBzdGF0aWMg
dm9pZCBKTklfTWVkaWFDb2RlY1ZpZGVvRW5jb2Rlcl9GaWxsSW5wdXRCdWZmZXIoCiAgICAgSk5J
RW52KiBqbmksCiAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3Jj
L2puaS9hbmRyb2lkbmV0d29ya21vbml0b3IuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRuZXR3b3JrbW9uaXRv
ci5jYwppbmRleCBiMTM1MWVmMWUxYjc0NTU1MDQ5NzU2MWY5YmMwZDE5MmY5NTEyZjc2Li43YWMx
NzI4MWY5N2NhZjlmY2U3MzYxZTU0N2U2ZDliZTJkNzBjOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2Fu
ZHJvaWRuZXR3b3JrbW9uaXRvci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2FuZHJvaWRuZXR3b3JrbW9uaXRvci5j
YwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2JpbmQuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9pcGFkZHJlc3MuaCIKKyNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9z
dHJpbmdfYnVpbGRlci5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF9iYXNlX2pu
aS9qbmkvTmV0d29ya01vbml0b3JBdXRvRGV0ZWN0X2puaS5oIgogI2luY2x1ZGUgInNkay9hbmRy
b2lkL2dlbmVyYXRlZF9iYXNlX2puaS9qbmkvTmV0d29ya01vbml0b3Jfam5pLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9zcmMvam5pL2FuZHJvaWR2aWRlb3RyYWNrc291cmNlLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkdmlkZW90
cmFja3NvdXJjZS5jYwppbmRleCA0MWQ0Mjc4YWM5Y2YzYWFkNDdjMWZhYTZkNmQyODM2MDA1YzFm
ODlmLi5lNzI4NTBmMjQ5ODhiMDQ4N2E4ODUwYmEwNTExYzdjNGI1YjFlNGJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL2FuZHJvaWR2aWRlb3RyYWNrc291cmNlLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZHZpZGVv
dHJhY2tzb3VyY2UuY2MKQEAgLTI1LDEwICsyNSwxMiBAQCBjb25zdCBpbnQga1JlcXVpcmVkUmVz
b2x1dGlvbkFsaWdubWVudCA9IDI7CiAKIEFuZHJvaWRWaWRlb1RyYWNrU291cmNlOjpBbmRyb2lk
VmlkZW9UcmFja1NvdXJjZShydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKTklFbnYqIGpuaSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3Nj
cmVlbmNhc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc19zY3JlZW5jYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgYWxpZ25fdGltZXN0YW1wcykKICAgICA6IEFkYXB0ZWRWaWRl
b1RyYWNrU291cmNlKGtSZXF1aXJlZFJlc29sdXRpb25BbGlnbm1lbnQpLAogICAgICAgc2lnbmFs
aW5nX3RocmVhZF8oc2lnbmFsaW5nX3RocmVhZCksCi0gICAgICBpc19zY3JlZW5jYXN0Xyhpc19z
Y3JlZW5jYXN0KSB7CisgICAgICBpc19zY3JlZW5jYXN0Xyhpc19zY3JlZW5jYXN0KSwKKyAgICAg
IGFsaWduX3RpbWVzdGFtcHNfKGFsaWduX3RpbWVzdGFtcHMpIHsKICAgUlRDX0xPRyhMU19JTkZP
KSA8PCAiQW5kcm9pZFZpZGVvVHJhY2tTb3VyY2UgY3RvciI7CiAgIGNhbWVyYV90aHJlYWRfY2hl
Y2tlcl8uRGV0YWNoRnJvbVRocmVhZCgpOwogfQpAQCAtNzUsNyArNzcsOSBAQCB2b2lkIEFuZHJv
aWRWaWRlb1RyYWNrU291cmNlOjpPbkZyYW1lQ2FwdHVyZWQoCiAKICAgaW50NjRfdCBjYW1lcmFf
dGltZV91cyA9IHRpbWVzdGFtcF9ucyAvIHJ0Yzo6a051bU5hbm9zZWNzUGVyTWljcm9zZWM7CiAg
IGludDY0X3QgdHJhbnNsYXRlZF9jYW1lcmFfdGltZV91cyA9Ci0gICAgICB0aW1lc3RhbXBfYWxp
Z25lcl8uVHJhbnNsYXRlVGltZXN0YW1wKGNhbWVyYV90aW1lX3VzLCBydGM6OlRpbWVNaWNyb3Mo
KSk7CisgICAgICBhbGlnbl90aW1lc3RhbXBzXyA/IHRpbWVzdGFtcF9hbGlnbmVyXy5UcmFuc2xh
dGVUaW1lc3RhbXAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmFfdGltZV91
cywgcnRjOjpUaW1lTWljcm9zKCkpCisgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbWVyYV90
aW1lX3VzOwogCiAgIGludCBhZGFwdGVkX3dpZHRoOwogICBpbnQgYWRhcHRlZF9oZWlnaHQ7CkBA
IC04NCwxMCArODgsMTkgQEAgdm9pZCBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZTo6T25GcmFtZUNh
cHR1cmVkKAogICBpbnQgY3JvcF94OwogICBpbnQgY3JvcF95OwogCi0gIGlmICghQWRhcHRGcmFt
ZSh3aWR0aCwgaGVpZ2h0LCBjYW1lcmFfdGltZV91cywgJmFkYXB0ZWRfd2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAmYWRhcHRlZF9oZWlnaHQsICZjcm9wX3dpZHRoLCAmY3JvcF9oZWlnaHQsICZj
cm9wX3gsCi0gICAgICAgICAgICAgICAgICAmY3JvcF95KSkgewotICAgIHJldHVybjsKKyAgaWYg
KHJvdGF0aW9uICUgMTgwID09IDApIHsKKyAgICBpZiAoIUFkYXB0RnJhbWUod2lkdGgsIGhlaWdo
dCwgY2FtZXJhX3RpbWVfdXMsICZhZGFwdGVkX3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAm
YWRhcHRlZF9oZWlnaHQsICZjcm9wX3dpZHRoLCAmY3JvcF9oZWlnaHQsICZjcm9wX3gsCisgICAg
ICAgICAgICAgICAgICAgICZjcm9wX3kpKSB7CisgICAgICByZXR1cm47CisgICAgfQorICB9IGVs
c2UgeworICAgIC8vIFN3YXAgYWxsIHdpZHRoL2hlaWdodCBhbmQgeC95LgorICAgIGlmICghQWRh
cHRGcmFtZShoZWlnaHQsIHdpZHRoLCBjYW1lcmFfdGltZV91cywgJmFkYXB0ZWRfaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAmYWRhcHRlZF93aWR0aCwgJmNyb3BfaGVpZ2h0LCAmY3JvcF93
aWR0aCwgJmNyb3BfeSwKKyAgICAgICAgICAgICAgICAgICAgJmNyb3BfeCkpIHsKKyAgICAgIHJl
dHVybjsKKyAgICB9CiAgIH0KIAogICBydGM6OnNjb3BlZF9yZWZwdHI8VmlkZW9GcmFtZUJ1ZmZl
cj4gYnVmZmVyID0KQEAgLTEwMywxMiArMTE2LDE2IEBAIHZvaWQgQW5kcm9pZFZpZGVvVHJhY2tT
b3VyY2U6Ok9uRnJhbWVDYXB0dXJlZCgKICAgT25GcmFtZShWaWRlb0ZyYW1lKGJ1ZmZlciwgcm90
YXRpb24sIHRyYW5zbGF0ZWRfY2FtZXJhX3RpbWVfdXMpKTsKIH0KIAotdm9pZCBBbmRyb2lkVmlk
ZW9UcmFja1NvdXJjZTo6T25PdXRwdXRGb3JtYXRSZXF1ZXN0KGludCB3aWR0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAor
dm9pZCBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZTo6T25PdXRwdXRGb3JtYXRSZXF1ZXN0KGludCBs
YW5kc2NhcGVfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGxhbmRzY2FwZV9oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcnRyYWl0X3dpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3J0cmFp
dF9oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGZwcykgewotICBjcmlja2V0OjpWaWRlb0Zvcm1hdCBmb3JtYXQod2lkdGgsIGhl
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OlZpZGVvRm9ybWF0
OjpGcHNUb0ludGVydmFsKGZwcyksIDApOwotICB2aWRlb19hZGFwdGVyKCktPk9uT3V0cHV0Rm9y
bWF0UmVxdWVzdChmb3JtYXQpOworICB2aWRlb19hZGFwdGVyKCktPk9uT3V0cHV0Rm9ybWF0UmVx
dWVzdCgKKyAgICAgIHN0ZDo6bWFrZV9wYWlyKGxhbmRzY2FwZV93aWR0aCwgbGFuZHNjYXBlX2hl
aWdodCksCisgICAgICBsYW5kc2NhcGVfd2lkdGggKiBsYW5kc2NhcGVfaGVpZ2h0LAorICAgICAg
c3RkOjptYWtlX3BhaXIocG9ydHJhaXRfd2lkdGgsIHBvcnRyYWl0X2hlaWdodCksCisgICAgICBw
b3J0cmFpdF93aWR0aCAqIHBvcnRyYWl0X2hlaWdodCwgZnBzKTsKIH0KIAogfSAgLy8gbmFtZXNw
YWNlIGpuaQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hbmRyb2lkdmlkZW90cmFja3NvdXJjZS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2pu
aS9hbmRyb2lkdmlkZW90cmFja3NvdXJjZS5oCmluZGV4IDhmMDkyYzFiMDQxZDZhZWEzYjQ5NTJi
NjA3YjJjOWE3MjE4MmRlNGMuLjRmODQ0MmU1Nzc4MTU4MGZkZDE5YjI4N2M0YjhlNzAzYzVjNTRm
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9hbmRyb2lkL3NyYy9qbmkvYW5kcm9pZHZpZGVvdHJhY2tzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5p
L2FuZHJvaWR2aWRlb3RyYWNrc291cmNlLmgKQEAgLTI5LDcgKzI5LDggQEAgY2xhc3MgQW5kcm9p
ZFZpZGVvVHJhY2tTb3VyY2UgOiBwdWJsaWMgcnRjOjpBZGFwdGVkVmlkZW9UcmFja1NvdXJjZSB7
CiAgcHVibGljOgogICBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZShydGM6OlRocmVhZCogc2lnbmFs
aW5nX3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgSk5JRW52KiBqbmksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfc2NyZWVuY2FzdCA9IGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19zY3JlZW5jYXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGFsaWduX3RpbWVzdGFtcHMpOwogICB+QW5kcm9pZFZpZGVvVHJhY2tT
b3VyY2UoKSBvdmVycmlkZTsKIAogICBib29sIGlzX3NjcmVlbmNhc3QoKSBjb25zdCBvdmVycmlk
ZTsKQEAgLTUzLDE1ICs1NCwyMCBAQCBjbGFzcyBBbmRyb2lkVmlkZW9UcmFja1NvdXJjZSA6IHB1
YmxpYyBydGM6OkFkYXB0ZWRWaWRlb1RyYWNrU291cmNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SmF2YVJlZjxqb2JqZWN0PiYgal92aWRlb19mcmFtZV9idWZmZXIpOwogCi0gIHZvaWQgT25PdXRw
dXRGb3JtYXRSZXF1ZXN0KGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGZwcyk7CisgIHZvaWQg
T25PdXRwdXRGb3JtYXRSZXF1ZXN0KGludCBsYW5kc2NhcGVfd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBsYW5kc2NhcGVfaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgcG9ydHJhaXRfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBwb3J0cmFpdF9oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBmcHMpOwogCiAgcHJpdmF0ZToKICAgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ190aHJlYWRfOwog
ICBydGM6OkFzeW5jSW52b2tlciBpbnZva2VyXzsKICAgcnRjOjpUaHJlYWRDaGVja2VyIGNhbWVy
YV90aHJlYWRfY2hlY2tlcl87CiAgIFNvdXJjZVN0YXRlIHN0YXRlXzsKLSAgcnRjOjpUaW1lc3Rh
bXBBbGlnbmVyIHRpbWVzdGFtcF9hbGlnbmVyXzsKICAgY29uc3QgYm9vbCBpc19zY3JlZW5jYXN0
XzsKKyAgcnRjOjpUaW1lc3RhbXBBbGlnbmVyIHRpbWVzdGFtcF9hbGlnbmVyXzsKKyAgY29uc3Qg
Ym9vbCBhbGlnbl90aW1lc3RhbXBzXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBqbmkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qbmkvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9tb2R1bGUuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2F1
ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfbW9kdWxlLmNjCmluZGV4IGRjM2E4ZmU0YmE1NTNhN2Rh
ZTE0MjhjMzJlMDQ0MWE2NjRjMjZhN2UuLmUwNGEwMWZhZWFkMWJmNjBjM2M2ZjRlMWMxOGNiZDUy
ZWY4ZGRlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9tb2R1
bGUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvc3JjL2puaS9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX21vZHVsZS5jYwpAQCAt
MTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgIm1vZHVsZXMv
YXVkaW9fZGV2aWNlL2F1ZGlvX2RldmljZV9idWZmZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9j
aGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2UvcmVmY291bnRlZG9iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hdWRpb19kZXZpY2UvYXVk
aW9fZGV2aWNlX21vZHVsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9hdWRpb19kZXZpY2UvYXVkaW9fZGV2aWNlX21vZHVs
ZS5oCmluZGV4IGNkZGQzZTA2NzY5Nzg1NTU5NDAzODliMzQ5MmU2MTAyMmViZTFmMDIuLjQ3NmRh
MTRjZWI5MjgyNWU5YzMzNDg5MjQ0MWViZjQwNWNkOGJlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYXVk
aW9fZGV2aWNlL2F1ZGlvX2RldmljZV9tb2R1bGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2F1ZGlvX2RldmljZS9h
dWRpb19kZXZpY2VfbW9kdWxlLmgKQEAgLTE0LDEwICsxNCwxMyBAQAogI2luY2x1ZGUgPG1lbW9y
eT4KIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKLSNpbmNsdWRlICJtb2R1bGVz
L2F1ZGlvX2RldmljZS9hdWRpb19kZXZpY2VfYnVmZmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy9h
dWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9p
ZC9uYXRpdmVfYXBpL2puaS9zY29wZWRfamF2YV9yZWYuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CisKK2NsYXNzIEF1ZGlvRGV2aWNlQnVmZmVyOworCiBuYW1lc3BhY2Ugam5pIHsKIAogY2xhc3Mg
QXVkaW9JbnB1dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2J1aWx0aW5hdWRpb2RlY29kZXJmYWN0b3J5
ZmFjdG9yeS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9hbmRyb2lkL3NyYy9qbmkvYnVpbHRpbmF1ZGlvZGVjb2RlcmZhY3RvcnlmYWN0b3J5LmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY4YTI4NDM2Mzc0OTY3NjRkNDE4NDEyYzNjOWY0NGRmNDY5OTI2MmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvam5pL2J1aWx0aW5hdWRpb2RlY29kZXJmYWN0b3J5ZmFjdG9yeS5jYwpA
QCAtMCwwICsxLDI4IEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVj
dCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisg
KiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50
IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5n
IHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSAic2RrL2FuZHJv
aWQvZ2VuZXJhdGVkX2J1aWx0aW5fYXVkaW9fY29kZWNzX2puaS9qbmkvQnVpbHRpbkF1ZGlvRGVj
b2RlckZhY3RvcnlGYWN0b3J5X2puaS5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL25hdGl2ZV9h
cGkvam5pL2phdmFfdHlwZXMuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL2puaV9o
ZWxwZXJzLmgiCisKKyNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVj
b2Rlcl9mYWN0b3J5LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworbmFtZXNwYWNlIGpuaSB7CisK
K3N0YXRpYyBqbG9uZworSk5JX0J1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5RmFjdG9yeV9DcmVh
dGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgKKyAgICBKTklFbnYqIGVudiwKKyAgICBjb25z
dCBKYXZhUGFyYW1SZWY8amNsYXNzPiYgamNhbGxlcikgeworICByZXR1cm4gTmF0aXZlVG9KYXZh
UG9pbnRlcihDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpLnJlbGVhc2UoKSk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBqbmkKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lk
L3NyYy9qbmkvYnVpbHRpbmF1ZGlvZW5jb2RlcmZhY3RvcnlmYWN0b3J5LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9idWls
dGluYXVkaW9lbmNvZGVyZmFjdG9yeWZhY3RvcnkuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFhZWZiYTlhYjI3
OGVmNjQzZGIwMjJkNjBlMjc5ZTkxYWNlODJiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvYnVp
bHRpbmF1ZGlvZW5jb2RlcmZhY3RvcnlmYWN0b3J5LmNjCkBAIC0wLDAgKzEsMjggQEAKKy8qCisg
KiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRfYnVpbHRpbl9h
dWRpb19jb2RlY3Nfam5pL2puaS9CdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUZhY3Rvcnlfam5p
LmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvbmF0aXZlX2FwaS9qbmkvamF2YV90eXBlcy5oIgor
I2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvam5pX2hlbHBlcnMuaCIKKworI2luY2x1ZGUg
ImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2Ugam5pIHsKKworc3RhdGljIGpsb25nCitKTklfQnVp
bHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlGYWN0b3J5X0NyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJG
YWN0b3J5KAorICAgIEpOSUVudiogZW52LAorICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+
JiBqY2FsbGVyKSB7CisgIHJldHVybiBOYXRpdmVUb0phdmFQb2ludGVyKENyZWF0ZUJ1aWx0aW5B
dWRpb0VuY29kZXJGYWN0b3J5KCkucmVsZWFzZSgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGpu
aQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9lbmNvZGVkaW1hZ2Uu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9zcmMvam5pL2VuY29kZWRpbWFnZS5jYwppbmRleCBjMGVhMjhlMmRjMzIzOTI3YThlMjdiMDBk
NzNkZjdjN2U1ZDNkYzYxLi4yMWY4MzM2NGQ5N2Q2N2E1ZjU5NDk3ODRjNTVkZGFhMDZhYTE1ZmU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvYW5kcm9pZC9zcmMvam5pL2VuY29kZWRpbWFnZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL2VuY29kZWRpbWFn
ZS5jYwpAQCAtMTAsNyArMTAsNyBAQAogCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9l
bmNvZGVkaW1hZ2UuaCIKIAotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2Zy
YW1lLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS90aW1ldXRpbHMuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0ZWRfdmlk
ZW9fam5pL2puaS9FbmNvZGVkSW1hZ2Vfam5pLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvbmF0
aXZlX2FwaS9qbmkvamF2YV90eXBlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfZ2VuZXJhdG9y
X2hlbHBlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvc3JjL2puaS9qbmlfZ2VuZXJhdG9yX2hlbHBlci5oCmluZGV4IDUzZTFkODQxMjdk
N2I2MWIyNzZiYzMxNjA2NjIxNDllMmIxODBlMmIuLmU2ZDZmN2VmMTU5ZDY4YWE1NDI1NDBmMTMx
ZTA0N2U1MzRkYTQxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvam5pX2dlbmVyYXRvcl9oZWxwZXIuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9zcmMvam5pL2puaV9nZW5lcmF0b3JfaGVscGVyLmgKQEAgLTMzLDEyICszMyw2IEBACiAgIFJU
Q19DSEVDSygham5pLT5FeGNlcHRpb25DaGVjaygpKSBcCiAgICAgICA8PCAoam5pLT5FeGNlcHRp
b25EZXNjcmliZSgpLCBqbmktPkV4Y2VwdGlvbkNsZWFyKCksICIiKQogCi1uYW1lc3BhY2Ugam5p
X2dlbmVyYXRvciB7Ci1pbmxpbmUgdm9pZCBDaGVja0V4Y2VwdGlvbihKTklFbnYqIGVudikgewot
ICBDSEVDS19FWENFUFRJT04oZW52KTsKLX0KLX0gIC8vIG5hbWVzcGFjZSBqbmlfZ2VuZXJhdG9y
Ci0KIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgaW5pdGlhbGl6
ZSB8YXRvbWljX2NsYXNzX2lkfCB0byBjb250YWluIGEgZ2xvYmFsIHJlZiB0bwpAQCAtODYsNCAr
ODAsODAgQEAgdXNpbmcgd2VicnRjOjpNZXRob2RJRDsKIH0gIC8vIG5hbWVzcGFjZSBhbmRyb2lk
CiB9ICAvLyBuYW1lc3BhY2UgYmFzZQogCituYW1lc3BhY2Ugam5pX2dlbmVyYXRvciB7Citpbmxp
bmUgdm9pZCBDaGVja0V4Y2VwdGlvbihKTklFbnYqIGVudikgeworICBDSEVDS19FWENFUFRJT04o
ZW52KTsKK30KKworLy8gQSAzMiBiaXQgbnVtYmVyIGNvdWxkIGJlIGFuIGFkZHJlc3Mgb24gc3Rh
Y2suIFJhbmRvbSA2NCBiaXQgbWFya2VyIG9uIHRoZQorLy8gc3RhY2sgaXMgbXVjaCBsZXNzIGxp
a2VseSB0byBiZSBwcmVzZW50IG9uIHN0YWNrLgorY29uc3RleHByIHVpbnQ2NF90IGtKbmlTdGFj
a01hcmtlclZhbHVlID0gMHhiZGJkZWYxYmViY2FkZTFiOworCisvLyBDb250ZXh0IGFib3V0IHRo
ZSBKTkkgY2FsbCB3aXRoIGV4Y2VwdGlvbiBjaGVja2VkIHRvIGJlIHN0b3JlZCBpbiBzdGFjay4K
K3N0cnVjdCBCQVNFX0VYUE9SVCBKbmlKYXZhQ2FsbENvbnRleHRVbmNoZWNrZWQgeworICBpbmxp
bmUgSm5pSmF2YUNhbGxDb250ZXh0VW5jaGVja2VkKCkgeworLy8gVE9ETyhzc2lkKTogSW1wbGVt
ZW50IGZvciBvdGhlciBhcmNoaXRlY3R1cmVzLgorI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVm
aW5lZChfX2FhcmNoNjRfXykKKyAgICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB0aGlzIG1ldGhvZCBk
b2VzIG5vdCBpbmNyZW1lbnQgdGhlIHN0YWNrIHBvaW50ZXIuCisgICAgYXNtIHZvbGF0aWxlKCJt
b3YgJTAsIHNwIiA6ICI9ciIoc3ApKTsKKyNlbHNlCisgICAgc3AgPSAwOworI2VuZGlmCisgIH0K
KworICAvLyBGb3JjZSBubyBpbmxpbmUgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KKyAgdGVtcGxhdGUg
PGJhc2U6OmFuZHJvaWQ6Ok1ldGhvZElEOjpUeXBlIHR5cGU+CisgIHZvaWQgSW5pdChKTklFbnYq
IGVudiwKKyAgICAgICAgICAgIGpjbGFzcyBjbGF6eiwKKyAgICAgICAgICAgIGNvbnN0IGNoYXIq
IG1ldGhvZF9uYW1lLAorICAgICAgICAgICAgY29uc3QgY2hhciogam5pX3NpZ25hdHVyZSwKKyAg
ICAgICAgICAgIHN0ZDo6YXRvbWljPGptZXRob2RJRD4qIGF0b21pY19tZXRob2RfaWQpIHsKKyAg
ICBlbnYxID0gZW52OworCisgICAgLy8gTWFrZSBzdXJlIGNvbXBpbGVyIGRvZXNuJ3Qgb3B0aW1p
emUgb3V0IHRoZSBhc3NpZ25tZW50LgorICAgIG1lbWNweSgmbWFya2VyLCAma0puaVN0YWNrTWFy
a2VyVmFsdWUsIHNpemVvZihrSm5pU3RhY2tNYXJrZXJWYWx1ZSkpOworICAgIC8vIEdldHMgUEMg
b2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24uCisgICAgcGMgPSByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApKTsKKworICAgIG1ldGhvZF9pZCA9IGJh
c2U6OmFuZHJvaWQ6Ok1ldGhvZElEOjpMYXp5R2V0PHR5cGU+KAorICAgICAgICBlbnYsIGNsYXp6
LCBtZXRob2RfbmFtZSwgam5pX3NpZ25hdHVyZSwgYXRvbWljX21ldGhvZF9pZCk7CisgIH0KKwor
ICB+Sm5pSmF2YUNhbGxDb250ZXh0VW5jaGVja2VkKCkgeworICAgIC8vIFJlc2V0IHNvIHRoYXQg
c3B1cmlvdXMgbWFya2VyIGZpbmRzIGFyZSBhdm9pZGVkLgorICAgIG1lbXNldCgmbWFya2VyLCAw
LCBzaXplb2YobWFya2VyKSk7CisgIH0KKworICB1aW50NjRfdCBtYXJrZXI7CisgIHVpbnRwdHJf
dCBzcDsKKyAgdWludHB0cl90IHBjOworCisgIEpOSUVudiogZW52MTsKKyAgam1ldGhvZElEIG1l
dGhvZF9pZDsKK307CisKKy8vIENvbnRleHQgYWJvdXQgdGhlIEpOSSBjYWxsIHdpdGggZXhjZXB0
aW9uIHVuY2hlY2tlZCB0byBiZSBzdG9yZWQgaW4gc3RhY2suCitzdHJ1Y3QgQkFTRV9FWFBPUlQg
Sm5pSmF2YUNhbGxDb250ZXh0Q2hlY2tlZCB7CisgIC8vIEZvcmNlIG5vIGlubGluZSB0byByZWR1
Y2UgY29kZSBzaXplLgorICB0ZW1wbGF0ZSA8YmFzZTo6YW5kcm9pZDo6TWV0aG9kSUQ6OlR5cGUg
dHlwZT4KKyAgdm9pZCBJbml0KEpOSUVudiogZW52LAorICAgICAgICAgICAgamNsYXNzIGNsYXp6
LAorICAgICAgICAgICAgY29uc3QgY2hhciogbWV0aG9kX25hbWUsCisgICAgICAgICAgICBjb25z
dCBjaGFyKiBqbmlfc2lnbmF0dXJlLAorICAgICAgICAgICAgc3RkOjphdG9taWM8am1ldGhvZElE
PiogYXRvbWljX21ldGhvZF9pZCkgeworICAgIGJhc2UuSW5pdDx0eXBlPihlbnYsIGNsYXp6LCBt
ZXRob2RfbmFtZSwgam5pX3NpZ25hdHVyZSwgYXRvbWljX21ldGhvZF9pZCk7CisgICAgLy8gUmVz
ZXQgfHBjfCB0byBjb3JyZWN0IGNhbGxlci4KKyAgICBiYXNlLnBjID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7CisgIH0KKworICB+Sm5p
SmF2YUNhbGxDb250ZXh0Q2hlY2tlZCgpIHsgam5pX2dlbmVyYXRvcjo6Q2hlY2tFeGNlcHRpb24o
YmFzZS5lbnYxKTsgfQorCisgIEpuaUphdmFDYWxsQ29udGV4dFVuY2hlY2tlZCBiYXNlOworfTsK
Kworc3RhdGljX2Fzc2VydChzaXplb2YoSm5pSmF2YUNhbGxDb250ZXh0Q2hlY2tlZCkgPT0KKyAg
ICAgICAgICAgICAgICAgIHNpemVvZihKbmlKYXZhQ2FsbENvbnRleHRVbmNoZWNrZWQpLAorICAg
ICAgICAgICAgICAiU3RhY2sgdW53aW5kZXIgY2Fubm90IHdvcmsgd2l0aCBzdHJ1Y3RzIG9mIGRp
ZmZlcmVudCBzaXplcy4iKTsKK30gIC8vIG5hbWVzcGFjZSBqbmlfZ2VuZXJhdG9yCisKICNlbmRp
ZiAgLy8gU0RLX0FORFJPSURfU1JDX0pOSV9KTklfR0VORVJBVE9SX0hFTFBFUl9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS9wYy9jcnlwdG9vcHRpb25zLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9jcnlwdG9vcHRpb25zLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBmMzhiMTNmNzhiZGQ3MzNlOTYyYjg1YWY2OTg3OWQyMTQ5MWY3ZTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL2NyeXB0b29wdGlvbnMuY2MKQEAgLTAsMCArMSw0MyBA
QAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMv
Y3J5cHRvb3B0aW9ucy5oIgorCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3BlZXJj
b25uZWN0aW9uX2puaS9qbmkvQ3J5cHRvT3B0aW9uc19qbmkuaCIKKworbmFtZXNwYWNlIHdlYnJ0
YyB7CituYW1lc3BhY2Ugam5pIHsKKworYWJzbDo6b3B0aW9uYWw8Q3J5cHRvT3B0aW9ucz4gSmF2
YVRvTmF0aXZlT3B0aW9uYWxDcnlwdG9PcHRpb25zKAorICAgIEpOSUVudiogam5pLAorICAgIGNv
bnN0IEphdmFSZWY8am9iamVjdD4mIGpfY3J5cHRvX29wdGlvbnMpIHsKKyAgaWYgKGpfY3J5cHRv
X29wdGlvbnMuaXNfbnVsbCgpKSB7CisgICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKwor
ICBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gal9zcnRwID0KKyAgICAgIEphdmFfQ3J5cHRv
T3B0aW9uc19nZXRTcnRwKGpuaSwgal9jcnlwdG9fb3B0aW9ucyk7CisgIFNjb3BlZEphdmFMb2Nh
bFJlZjxqb2JqZWN0PiBqX3NmcmFtZSA9CisgICAgICBKYXZhX0NyeXB0b09wdGlvbnNfZ2V0U0Zy
YW1lKGpuaSwgal9jcnlwdG9fb3B0aW9ucyk7CisKKyAgQ3J5cHRvT3B0aW9ucyBuYXRpdmVfY3J5
cHRvX29wdGlvbnM7CisgIG5hdGl2ZV9jcnlwdG9fb3B0aW9ucy5zcnRwLmVuYWJsZV9nY21fY3J5
cHRvX3N1aXRlcyA9CisgICAgICBKYXZhX1NydHBfZ2V0RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKGpu
aSwgal9zcnRwKTsKKyAgbmF0aXZlX2NyeXB0b19vcHRpb25zLnNydHAuZW5hYmxlX2FlczEyOF9z
aGExXzMyX2NyeXB0b19jaXBoZXIgPQorICAgICAgSmF2YV9TcnRwX2dldEVuYWJsZUFlczEyOFNo
YTFfMzJDcnlwdG9DaXBoZXIoam5pLCBqX3NydHApOworICBuYXRpdmVfY3J5cHRvX29wdGlvbnMu
c3J0cC5lbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9CisgICAgICBKYXZh
X1NydHBfZ2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucyhqbmksIGpfc3J0cCk7
CisgIG5hdGl2ZV9jcnlwdG9fb3B0aW9ucy5zZnJhbWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9u
ID0KKyAgICAgIEphdmFfU0ZyYW1lX2dldFJlcXVpcmVGcmFtZUVuY3J5cHRpb24oam5pLCBqX3Nm
cmFtZSk7CisgIHJldHVybiBhYnNsOjpvcHRpb25hbDxDcnlwdG9PcHRpb25zPihuYXRpdmVfY3J5
cHRvX29wdGlvbnMpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugam5pCit9ICAvLyBuYW1lc3BhY2Ug
d2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL2NyeXB0b29wdGlvbnMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvY3J5
cHRvb3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4OTAyNjRhNTVjNmYyYzM4ODAyNzkxOGViZDkxMmI3
NGMzNzIwZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL2NyeXB0b29wdGlvbnMuaApAQCAt
MCwwICsxLDMwIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBh
dXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAg
dHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNh
biBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHBy
b2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRo
ZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaWZuZGVmIFNES19BTkRST0lEX1NS
Q19KTklfUENfQ1JZUFRPT1BUSU9OU19IXworI2RlZmluZSBTREtfQU5EUk9JRF9TUkNfSk5JX1BD
X0NSWVBUT09QVElPTlNfSF8KKworI2luY2x1ZGUgPGpuaS5oPgorCisjaW5jbHVkZSAiYWJzbC90
eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFwaS9jcnlwdG8vY3J5cHRvb3B0aW9ucy5oIgor
I2luY2x1ZGUgInNkay9hbmRyb2lkL25hdGl2ZV9hcGkvam5pL3Njb3BlZF9qYXZhX3JlZi5oIgor
CituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSBqbmkgeworCithYnNsOjpvcHRpb25hbDxD
cnlwdG9PcHRpb25zPiBKYXZhVG9OYXRpdmVPcHRpb25hbENyeXB0b09wdGlvbnMoCisgICAgSk5J
RW52KiBqbmksCisgICAgY29uc3QgSmF2YVJlZjxqb2JqZWN0PiYgal9jcnlwdG9fb3B0aW9ucyk7
CisKK30gIC8vIG5hbWVzcGFjZSBqbmkKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlm
ICAvLyBTREtfQU5EUk9JRF9TUkNfSk5JX1BDX0NSWVBUT09QVElPTlNfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3Ny
Yy9qbmkvcGMvbnVsbF92aWRlby5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvbnVsbF92aWRlby5jYwppbmRleCAwZTBi
ODBkNDYxMmYyNWU4NzRiOTBkOGVhNWE3MjI0MDMxNjQ2NzRhLi41NGE0MDFkNjA1YzE5MTI4M2Fl
N2ZjZmZlNDY0NzI5NDIwMjExY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL251bGxfdmlkZW8uY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS9wYy9udWxsX3ZpZGVvLmNjCkBAIC0zMSw3ICszMSw4IEBAIFZpZGVvRGVjb2Rl
ckZhY3RvcnkqIENyZWF0ZVZpZGVvRGVjb2RlckZhY3RvcnkoCiB2b2lkKiBDcmVhdGVWaWRlb1Nv
dXJjZShKTklFbnYqIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBz
aWduYWxpbmdfdGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHdv
cmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBqYm9vbGVhbiBpc19zY3JlZW5j
YXN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgamJvb2xlYW4gYWxpZ25fdGltZXN0YW1wcykgewogICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9vd25lZGZhY3RvcnlhbmR0
aHJlYWRzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvc3JjL2puaS9wYy9vd25lZGZhY3RvcnlhbmR0aHJlYWRzLmNjCmluZGV4IDk5ODdm
MjUyMjc1ZTMyN2MyZGRhZDRmMzgwNDlkMGM4ODllOTQ5OWUuLjJkNjJlYTMyYTEzMWNjNWUxMzZi
ODJhMTQ3YjMwZjBkNzk3NzJhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvb3duZWRmYWN0b3J5YW5k
dGhyZWFkcy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL293bmVkZmFjdG9yeWFuZHRocmVhZHMuY2MKQEAgLTIx
LDkgKzIxLDkgQEAgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBmYWN0b3J5RnJvbUph
dmEoamxvbmcgal9wKSB7CiB9CiAKIE93bmVkRmFjdG9yeUFuZFRocmVhZHM6Ok93bmVkRmFjdG9y
eUFuZFRocmVhZHMoCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZD4gbmV0d29ya190aHJlYWQs
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZD4gd29ya2VyX3RocmVhZCwKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8VGhyZWFkPiBzaWduYWxpbmdfdGhyZWFkLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OlRocmVhZD4gbmV0d29ya190aHJlYWQsCisgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhy
ZWFkPiB3b3JrZXJfdGhyZWFkLAorICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gc2ln
bmFsaW5nX3RocmVhZCwKICAgICBydGM6Ok5ldHdvcmtNb25pdG9yRmFjdG9yeSogbmV0d29ya19t
b25pdG9yX2ZhY3RvcnksCiAgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBmYWN0
b3J5KQogICAgIDogbmV0d29ya190aHJlYWRfKHN0ZDo6bW92ZShuZXR3b3JrX3RocmVhZCkpLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvc3JjL2puaS9wYy9vd25lZGZhY3RvcnlhbmR0aHJlYWRzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL293
bmVkZmFjdG9yeWFuZHRocmVhZHMuaAppbmRleCAyZWE4NTcwMjgyZDk1NWNhMDAwNjE4ZjEwM2Mz
MDk3NGM0NGNjOWU4Li5iYWNkNDJkZmNkNmMxN2Y3OTBjZWFiNWRmZTg0ZjkwYjM0OTMzNmEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9zcmMvam5pL3BjL293bmVkZmFjdG9yeWFuZHRocmVhZHMuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3Bj
L293bmVkZmFjdG9yeWFuZHRocmVhZHMuaApAQCAtMTgsOCArMTgsNiBAQAogI2luY2x1ZGUgImFw
aS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZC5o
IgogCi11c2luZyBydGM6OlRocmVhZDsKLQogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2Ug
am5pIHsKIApAQCAtMzMsMTggKzMxLDE4IEBAIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFj
ZSogZmFjdG9yeUZyb21KYXZhKGpsb25nIGpfcCk7CiAvLyBzaW5nbGUgdGhpbmcgZm9yIEphdmEg
dG8gaG9sZCBhbmQgZXZlbnR1YWxseSBmcmVlLgogY2xhc3MgT3duZWRGYWN0b3J5QW5kVGhyZWFk
cyB7CiAgcHVibGljOgotICBPd25lZEZhY3RvcnlBbmRUaHJlYWRzKHN0ZDo6dW5pcXVlX3B0cjxU
aHJlYWQ+IG5ldHdvcmtfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxUaHJlYWQ+IHdvcmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFRocmVhZD4gc2lnbmFsaW5nX3RocmVhZCwKKyAgT3duZWRGYWN0b3J5
QW5kVGhyZWFkcyhzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IG5ldHdvcmtfdGhyZWFkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gd29y
a2VyX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRj
OjpUaHJlYWQ+IHNpZ25hbGluZ190aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcnRj
OjpOZXR3b3JrTW9uaXRvckZhY3RvcnkqIG5ldHdvcmtfbW9uaXRvcl9mYWN0b3J5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9y
eSk7CiAKICAgfk93bmVkRmFjdG9yeUFuZFRocmVhZHMoKTsKIAogICBQZWVyQ29ubmVjdGlvbkZh
Y3RvcnlJbnRlcmZhY2UqIGZhY3RvcnkoKSB7IHJldHVybiBmYWN0b3J5XzsgfQotICBUaHJlYWQq
IG5ldHdvcmtfdGhyZWFkKCkgeyByZXR1cm4gbmV0d29ya190aHJlYWRfLmdldCgpOyB9Ci0gIFRo
cmVhZCogc2lnbmFsaW5nX3RocmVhZCgpIHsgcmV0dXJuIHNpZ25hbGluZ190aHJlYWRfLmdldCgp
OyB9Ci0gIFRocmVhZCogd29ya2VyX3RocmVhZCgpIHsgcmV0dXJuIHdvcmtlcl90aHJlYWRfLmdl
dCgpOyB9CisgIHJ0Yzo6VGhyZWFkKiBuZXR3b3JrX3RocmVhZCgpIHsgcmV0dXJuIG5ldHdvcmtf
dGhyZWFkXy5nZXQoKTsgfQorICBydGM6OlRocmVhZCogc2lnbmFsaW5nX3RocmVhZCgpIHsgcmV0
dXJuIHNpZ25hbGluZ190aHJlYWRfLmdldCgpOyB9CisgIHJ0Yzo6VGhyZWFkKiB3b3JrZXJfdGhy
ZWFkKCkgeyByZXR1cm4gd29ya2VyX3RocmVhZF8uZ2V0KCk7IH0KICAgcnRjOjpOZXR3b3JrTW9u
aXRvckZhY3RvcnkqIG5ldHdvcmtfbW9uaXRvcl9mYWN0b3J5KCkgewogICAgIHJldHVybiBuZXR3
b3JrX21vbml0b3JfZmFjdG9yeV87CiAgIH0KQEAgLTUyLDkgKzUwLDkgQEAgY2xhc3MgT3duZWRG
YWN0b3J5QW5kVGhyZWFkcyB7CiAgIHZvaWQgSW52b2tlSmF2YUNhbGxiYWNrc09uRmFjdG9yeVRo
cmVhZHMoKTsKIAogIHByaXZhdGU6Ci0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWQ+IG5l
dHdvcmtfdGhyZWFkXzsKLSAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFRocmVhZD4gd29ya2VyX3Ro
cmVhZF87Ci0gIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWQ+IHNpZ25hbGluZ190aHJlYWRf
OworICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IG5ldHdvcmtfdGhyZWFkXzsK
KyAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiB3b3JrZXJfdGhyZWFkXzsKKyAg
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBzaWduYWxpbmdfdGhyZWFkXzsKICAg
cnRjOjpOZXR3b3JrTW9uaXRvckZhY3RvcnkqIG5ldHdvcmtfbW9uaXRvcl9mYWN0b3J5XzsKICAg
UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBmYWN0b3J5XzsgIC8vIENvbnN0IGFmdGVy
IGN0b3IgZXhjZXB0IGR0b3IuCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9wZWVyY29ubmVjdGlv
bi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3NyYy9qbmkvcGMvcGVlcmNvbm5lY3Rpb24uY2MKaW5kZXggNzlkYTc5N2UzODg3N2Q4YmZl
ZTQwYjNkMjg5ZThlNTc4MjA2MjllZi4uMDUxNWNlMjY0ZTczOWQ3Y2Y1MzE1ZGVjOTkwNWY5MTc4
NWUwMWY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbi5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5p
L3BjL3BlZXJjb25uZWN0aW9uLmNjCkBAIC00MywxMCArNDMsMTIgQEAKICNpbmNsdWRlICJzZGsv
YW5kcm9pZC9nZW5lcmF0ZWRfcGVlcmNvbm5lY3Rpb25fam5pL2puaS9QZWVyQ29ubmVjdGlvbl9q
bmkuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9uYXRpdmVfYXBpL2puaS9qYXZhX3R5cGVzLmgi
CiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfaGVscGVycy5oIgorI2luY2x1ZGUg
InNkay9hbmRyb2lkL3NyYy9qbmkvcGMvY3J5cHRvb3B0aW9ucy5oIgogI2luY2x1ZGUgInNkay9h
bmRyb2lkL3NyYy9qbmkvcGMvZGF0YWNoYW5uZWwuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9z
cmMvam5pL3BjL2ljZWNhbmRpZGF0ZS5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkv
cGMvbWVkaWFjb25zdHJhaW50cy5oIgogI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMv
bWVkaWFzdHJlYW10cmFjay5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRj
Y2VydGlmaWNhdGUuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL3J0Y3N0YXRz
Y29sbGVjdG9yY2FsbGJhY2t3cmFwcGVyLmgiCiAjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2pu
aS9wYy9ydHBzZW5kZXIuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL3BjL3NkcG9i
c2VydmVyLmgiCkBAIC0xMjksNiArMTMxLDggQEAgdm9pZCBKYXZhVG9OYXRpdmVSVENDb25maWd1
cmF0aW9uKAogICAgICAgSmF2YV9SVENDb25maWd1cmF0aW9uX2dldEJ1bmRsZVBvbGljeShqbmks
IGpfcnRjX2NvbmZpZyk7CiAgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX3J0Y3BfbXV4
X3BvbGljeSA9CiAgICAgICBKYXZhX1JUQ0NvbmZpZ3VyYXRpb25fZ2V0UnRjcE11eFBvbGljeShq
bmksIGpfcnRjX2NvbmZpZyk7CisgIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX3J0Y19j
ZXJ0aWZpY2F0ZSA9CisgICAgICBKYXZhX1JUQ0NvbmZpZ3VyYXRpb25fZ2V0Q2VydGlmaWNhdGUo
am5pLCBqX3J0Y19jb25maWcpOwogICBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gal90Y3Bf
Y2FuZGlkYXRlX3BvbGljeSA9CiAgICAgICBKYXZhX1JUQ0NvbmZpZ3VyYXRpb25fZ2V0VGNwQ2Fu
ZGlkYXRlUG9saWN5KGpuaSwgal9ydGNfY29uZmlnKTsKICAgU2NvcGVkSmF2YUxvY2FsUmVmPGpv
YmplY3Q+IGpfY2FuZGlkYXRlX25ldHdvcmtfcG9saWN5ID0KQEAgLTE0MywxMSArMTQ3LDIwIEBA
IHZvaWQgSmF2YVRvTmF0aXZlUlRDQ29uZmlndXJhdGlvbigKICAgICAgIEphdmFfUlRDQ29uZmln
dXJhdGlvbl9nZXROZXR3b3JrUHJlZmVyZW5jZShqbmksIGpfcnRjX2NvbmZpZyk7CiAgIFNjb3Bl
ZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX3NkcF9zZW1hbnRpY3MgPQogICAgICAgSmF2YV9SVEND
b25maWd1cmF0aW9uX2dldFNkcFNlbWFudGljcyhqbmksIGpfcnRjX2NvbmZpZyk7CisgIFNjb3Bl
ZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBqX2NyeXB0b19vcHRpb25zID0KKyAgICAgIEphdmFfUlRD
Q29uZmlndXJhdGlvbl9nZXRDcnlwdG9PcHRpb25zKGpuaSwgal9ydGNfY29uZmlnKTsKIAogICBy
dGNfY29uZmlnLT50eXBlID0gSmF2YVRvTmF0aXZlSWNlVHJhbnNwb3J0c1R5cGUoam5pLCBqX2lj
ZV90cmFuc3BvcnRzX3R5cGUpOwogICBydGNfY29uZmlnLT5idW5kbGVfcG9saWN5ID0gSmF2YVRv
TmF0aXZlQnVuZGxlUG9saWN5KGpuaSwgal9idW5kbGVfcG9saWN5KTsKICAgcnRjX2NvbmZpZy0+
cnRjcF9tdXhfcG9saWN5ID0KICAgICAgIEphdmFUb05hdGl2ZVJ0Y3BNdXhQb2xpY3koam5pLCBq
X3J0Y3BfbXV4X3BvbGljeSk7CisgIGlmICghal9ydGNfY2VydGlmaWNhdGUuaXNfbnVsbCgpKSB7
CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHJ0Yzo6UlRDQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRl
ID0KKyAgICAgICAgcnRjOjpSVENDZXJ0aWZpY2F0ZTo6RnJvbVBFTSgKKyAgICAgICAgICAgIEph
dmFUb05hdGl2ZVJUQ0NlcnRpZmljYXRlUEVNKGpuaSwgal9ydGNfY2VydGlmaWNhdGUpKTsKKyAg
ICBSVENfQ0hFQ0soY2VydGlmaWNhdGUgIT0gbnVsbHB0cikgPDwgInN1cHBsaWVkIGNlcnRpZmlj
YXRlIGlzIG1hbGZvcm1lZC4iOworICAgIHJ0Y19jb25maWctPmNlcnRpZmljYXRlcy5wdXNoX2Jh
Y2soY2VydGlmaWNhdGUpOworICB9CiAgIHJ0Y19jb25maWctPnRjcF9jYW5kaWRhdGVfcG9saWN5
ID0KICAgICAgIEphdmFUb05hdGl2ZVRjcENhbmRpZGF0ZVBvbGljeShqbmksIGpfdGNwX2NhbmRp
ZGF0ZV9wb2xpY3kpOwogICBydGNfY29uZmlnLT5jYW5kaWRhdGVfbmV0d29ya19wb2xpY3kgPQpA
QCAtMjM0LDYgKzI0NywxMyBAQCB2b2lkIEphdmFUb05hdGl2ZVJUQ0NvbmZpZ3VyYXRpb24oCiAg
IHJ0Y19jb25maWctPnNkcF9zZW1hbnRpY3MgPSBKYXZhVG9OYXRpdmVTZHBTZW1hbnRpY3Moam5p
LCBqX3NkcF9zZW1hbnRpY3MpOwogICBydGNfY29uZmlnLT5hY3RpdmVfcmVzZXRfc3J0cF9wYXJh
bXMgPQogICAgICAgSmF2YV9SVENDb25maWd1cmF0aW9uX2dldEFjdGl2ZVJlc2V0U3J0cFBhcmFt
cyhqbmksIGpfcnRjX2NvbmZpZyk7CisgIHJ0Y19jb25maWctPnVzZV9tZWRpYV90cmFuc3BvcnQg
PQorICAgICAgSmF2YV9SVENDb25maWd1cmF0aW9uX2dldFVzZU1lZGlhVHJhbnNwb3J0KGpuaSwg
al9ydGNfY29uZmlnKTsKKyAgcnRjX2NvbmZpZy0+dXNlX21lZGlhX3RyYW5zcG9ydF9mb3JfZGF0
YV9jaGFubmVscyA9CisgICAgICBKYXZhX1JUQ0NvbmZpZ3VyYXRpb25fZ2V0VXNlTWVkaWFUcmFu
c3BvcnRGb3JEYXRhQ2hhbm5lbHMoam5pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpfcnRjX2NvbmZpZyk7CisgIHJ0Y19j
b25maWctPmNyeXB0b19vcHRpb25zID0KKyAgICAgIEphdmFUb05hdGl2ZU9wdGlvbmFsQ3J5cHRv
T3B0aW9ucyhqbmksIGpfY3J5cHRvX29wdGlvbnMpOwogfQogCiBydGM6OktleVR5cGUgR2V0UnRj
Q29uZmlnS2V5VHlwZShKTklFbnYqIGVudiwKQEAgLTI3OSw2ICsyOTksMTQgQEAgdm9pZCBQZWVy
Q29ubmVjdGlvbk9ic2VydmVySm5pOjpPbkljZUNvbm5lY3Rpb25DaGFuZ2UoCiAgICAgICBKYXZh
X0ljZUNvbm5lY3Rpb25TdGF0ZV9mcm9tTmF0aXZlSW5kZXgoZW52LCBuZXdfc3RhdGUpKTsKIH0K
IAordm9pZCBQZWVyQ29ubmVjdGlvbk9ic2VydmVySm5pOjpPbkNvbm5lY3Rpb25DaGFuZ2UoCisg
ICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRl
KSB7CisgIEpOSUVudiogZW52ID0gQXR0YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7CisgIEph
dmFfT2JzZXJ2ZXJfb25Db25uZWN0aW9uQ2hhbmdlKGVudiwgal9vYnNlcnZlcl9nbG9iYWxfLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKYXZhX1BlZXJDb25uZWN0aW9uU3Rh
dGVfZnJvbU5hdGl2ZUluZGV4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW52LCBzdGF0aWNfY2FzdDxpbnQ+KG5ld19zdGF0ZSkpKTsKK30KKwogdm9pZCBQZWVyQ29u
bmVjdGlvbk9ic2VydmVySm5pOjpPbkljZUNvbm5lY3Rpb25SZWNlaXZpbmdDaGFuZ2UoYm9vbCBy
ZWNlaXZpbmcpIHsKICAgSk5JRW52KiBlbnYgPSBBdHRhY2hDdXJyZW50VGhyZWFkSWZOZWVkZWQo
KTsKICAgSmF2YV9PYnNlcnZlcl9vbkljZUNvbm5lY3Rpb25SZWNlaXZpbmdDaGFuZ2UoZW52LCBq
X29ic2VydmVyX2dsb2JhbF8sCkBAIC00MjksNiArNDU3LDE2IEBAIHN0YXRpYyBTY29wZWRKYXZh
TG9jYWxSZWY8am9iamVjdD4gSk5JX1BlZXJDb25uZWN0aW9uX0dldFJlbW90ZURlc2NyaXB0aW9u
KAogICByZXR1cm4gc2RwID8gTmF0aXZlVG9KYXZhU2Vzc2lvbkRlc2NyaXB0aW9uKGpuaSwgc2Rw
KSA6IG51bGxwdHI7CiB9CiAKK3N0YXRpYyBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gSk5J
X1BlZXJDb25uZWN0aW9uX0dldENlcnRpZmljYXRlKAorICAgIEpOSUVudiogam5pLAorICAgIGNv
bnN0IEphdmFQYXJhbVJlZjxqb2JqZWN0PiYgal9wYykgeworICBjb25zdCBQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBydGNfY29uZmlnID0KKyAgICAgIEV4dHJhY3RO
YXRpdmVQQyhqbmksIGpfcGMpLT5HZXRDb25maWd1cmF0aW9uKCk7CisgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxydGM6OlJUQ0NlcnRpZmljYXRlPiBjZXJ0aWZpY2F0ZSA9CisgICAgICBydGNfY29uZmln
LmNlcnRpZmljYXRlc1swXTsKKyAgcmV0dXJuIE5hdGl2ZVRvSmF2YVJUQ0NlcnRpZmljYXRlUEVN
KGpuaSwgY2VydGlmaWNhdGUtPlRvUEVNKCkpOworfQorCiBzdGF0aWMgU2NvcGVkSmF2YUxvY2Fs
UmVmPGpvYmplY3Q+IEpOSV9QZWVyQ29ubmVjdGlvbl9DcmVhdGVEYXRhQ2hhbm5lbCgKICAgICBK
TklFbnYqIGpuaSwKICAgICBjb25zdCBKYXZhUGFyYW1SZWY8am9iamVjdD4mIGpfcGMsCkBAIC03
MjIsNiArNzYwLDE0IEBAIHN0YXRpYyBTY29wZWRKYXZhTG9jYWxSZWY8am9iamVjdD4gSk5JX1Bl
ZXJDb25uZWN0aW9uX0ljZUNvbm5lY3Rpb25TdGF0ZSgKICAgICAgIGVudiwgRXh0cmFjdE5hdGl2
ZVBDKGVudiwgal9wYyktPmljZV9jb25uZWN0aW9uX3N0YXRlKCkpOwogfQogCitzdGF0aWMgU2Nv
cGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+IEpOSV9QZWVyQ29ubmVjdGlvbl9Db25uZWN0aW9uU3Rh
dGUoCisgICAgSk5JRW52KiBlbnYsCisgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpvYmplY3Q+JiBq
X3BjKSB7CisgIHJldHVybiBKYXZhX1BlZXJDb25uZWN0aW9uU3RhdGVfZnJvbU5hdGl2ZUluZGV4
KAorICAgICAgZW52LAorICAgICAgc3RhdGljX2Nhc3Q8aW50PihFeHRyYWN0TmF0aXZlUEMoZW52
LCBqX3BjKS0+cGVlcl9jb25uZWN0aW9uX3N0YXRlKCkpKTsKK30KKwogc3RhdGljIFNjb3BlZEph
dmFMb2NhbFJlZjxqb2JqZWN0PiBKTklfUGVlckNvbm5lY3Rpb25fSWNlR2F0aGVyaW5nU3RhdGUo
CiAgICAgSk5JRW52KiBlbnYsCiAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpvYmplY3Q+JiBqX3Bj
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJjb25uZWN0aW9uLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJj
b25uZWN0aW9uLmgKaW5kZXggZjIwMTY2NzI3ZWEwYjQ5NTRiMDZhMTIxZWNjYzkzY2M2Y2FjNzVj
MC4uYTlkN2IzOWMzZDQyMTdjZTJlYzgyNTdhMTM5N2ZiNjg3MjNlMjk4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3Jj
L2puaS9wYy9wZWVyY29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvcGVlcmNvbm5lY3Rpb24uaApA
QCAtNTEsNiArNTEsOCBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbk9ic2VydmVySm5pIDogcHVibGlj
IFBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIgewogICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlNpZ25hbGluZ1N0YXRlIG5ld19zdGF0ZSkgb3ZlcnJpZGU7CiAgIHZvaWQgT25JY2VDb25uZWN0
aW9uQ2hhbmdlKAogICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25T
dGF0ZSBuZXdfc3RhdGUpIG92ZXJyaWRlOworICB2b2lkIE9uQ29ubmVjdGlvbkNoYW5nZSgKKyAg
ICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVjdGlvblN0YXRlIG5ld19zdGF0
ZSkgb3ZlcnJpZGU7CiAgIHZvaWQgT25JY2VDb25uZWN0aW9uUmVjZWl2aW5nQ2hhbmdlKGJvb2wg
cmVjZWl2aW5nKSBvdmVycmlkZTsKICAgdm9pZCBPbkljZUdhdGhlcmluZ0NoYW5nZSgKICAgICAg
IFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VHYXRoZXJpbmdTdGF0ZSBuZXdfc3RhdGUpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMv
am5pL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYwppbmRleCAzZGU3OTU1NWE2M2MxZGQ4MDVj
YWUxMzUzMzhkYjRhYWUzOGVjYzk5Li5jMmI4YjljNWQ3ZGZhN2JmZTJlYjg0MTZhOGUxMjJmNDAx
NjY3MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYwpAQCAtNTAsMTAgKzUwLDYgQEAgSmF2
YVRvTmF0aXZlUGVlckNvbm5lY3Rpb25GYWN0b3J5T3B0aW9ucyhKTklFbnYqIGpuaSwKICAgYm9v
bCBkaXNhYmxlX2VuY3J5cHRpb24gPSBKYXZhX09wdGlvbnNfZ2V0RGlzYWJsZUVuY3J5cHRpb24o
am5pLCBvcHRpb25zKTsKICAgYm9vbCBkaXNhYmxlX25ldHdvcmtfbW9uaXRvciA9CiAgICAgICBK
YXZhX09wdGlvbnNfZ2V0RGlzYWJsZU5ldHdvcmtNb25pdG9yKGpuaSwgb3B0aW9ucyk7Ci0gIGJv
b2wgZW5hYmxlX2FlczEyOF9zaGExXzMyX2NyeXB0b19jaXBoZXIgPQotICAgICAgSmF2YV9PcHRp
b25zX2dldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIoam5pLCBvcHRpb25zKTsKLSAg
Ym9vbCBlbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPQotICAgICAgSmF2YV9PcHRpb25zX2dldEVu
YWJsZUdjbUNyeXB0b1N1aXRlcyhqbmksIG9wdGlvbnMpOwogCiAgIFBlZXJDb25uZWN0aW9uRmFj
dG9yeUludGVyZmFjZTo6T3B0aW9ucyBuYXRpdmVfb3B0aW9uczsKIApAQCAtNjMsMTAgKzU5LDYg
QEAgSmF2YVRvTmF0aXZlUGVlckNvbm5lY3Rpb25GYWN0b3J5T3B0aW9ucyhKTklFbnYqIGpuaSwK
ICAgbmF0aXZlX29wdGlvbnMuZGlzYWJsZV9lbmNyeXB0aW9uID0gZGlzYWJsZV9lbmNyeXB0aW9u
OwogICBuYXRpdmVfb3B0aW9ucy5kaXNhYmxlX25ldHdvcmtfbW9uaXRvciA9IGRpc2FibGVfbmV0
d29ya19tb25pdG9yOwogCi0gIG5hdGl2ZV9vcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9h
ZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0KLSAgICAgIGVuYWJsZV9hZXMxMjhfc2hhMV8z
Ml9jcnlwdG9fY2lwaGVyOwotICBuYXRpdmVfb3B0aW9ucy5jcnlwdG9fb3B0aW9ucy5lbmFibGVf
Z2NtX2NyeXB0b19zdWl0ZXMgPQotICAgICAgZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzOwogICBy
ZXR1cm4gbmF0aXZlX29wdGlvbnM7CiB9CiAKQEAgLTE5OSwxNSArMTkxLDIxIEBAIHN0YXRpYyB2
b2lkIEpOSV9QZWVyQ29ubmVjdGlvbkZhY3RvcnlfU2h1dGRvd25JbnRlcm5hbFRyYWNlcigKICAg
cnRjOjp0cmFjaW5nOjpTaHV0ZG93bkludGVybmFsVHJhY2VyKCk7CiB9CiAKKy8vIEZvbGxvd2lu
ZyBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbDoKKy8vIHxhdWRpb19kZXZpY2VfbW9kdWxlfCwgfGpl
bmNvZGVyX2ZhY3Rvcnl8LCB8amRlY29kZXJfZmFjdG9yeXwsCisvLyB8YXVkaW9fcHJvY2Vzc29y
fCwgfG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5fCwgfGZlY19jb250cm9sbGVyX2ZhY3Rvcnl8Lgog
amxvbmcgQ3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5Rm9ySmF2YSgKICAgICBKTklFbnYqIGpu
aSwKICAgICBjb25zdCBKYXZhUGFyYW1SZWY8am9iamVjdD4mIGpjb250ZXh0LAogICAgIGNvbnN0
IEphdmFQYXJhbVJlZjxqb2JqZWN0PiYgam9wdGlvbnMsCiAgICAgcnRjOjpzY29wZWRfcmVmcHRy
PEF1ZGlvRGV2aWNlTW9kdWxlPiBhdWRpb19kZXZpY2VfbW9kdWxlLAorICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjxBdWRpb0VuY29kZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnksCisgICAg
cnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+IGF1ZGlvX2RlY29kZXJfZmFj
dG9yeSwKICAgICBjb25zdCBKYXZhUGFyYW1SZWY8am9iamVjdD4mIGplbmNvZGVyX2ZhY3Rvcnks
CiAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpvYmplY3Q+JiBqZGVjb2Rlcl9mYWN0b3J5LAogICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGF1ZGlvX3Byb2Nlc3NvciwKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+IGZlY19jb250
cm9sbGVyX2ZhY3RvcnkpIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29udHJvbGxlckZhY3Rv
cnlJbnRlcmZhY2U+IGZlY19jb250cm9sbGVyX2ZhY3RvcnksCisgICAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhVHJhbnNwb3J0RmFjdG9yeT4gbWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpIHsKICAgLy8g
dGFsay8gYXNzdW1lcyBwcmV0dHkgd2lkZWx5IHRoYXQgdGhlIGN1cnJlbnQgVGhyZWFkIGlzIFRo
cmVhZE1hbmFnZXInZCwgYnV0CiAgIC8vIFRocmVhZE1hbmFnZXIgb25seSBXcmFwQ3VycmVudFRo
cmVhZCgpcyB0aGUgdGhyZWFkIHdoZXJlIGl0IGlzIGZpcnN0CiAgIC8vIGNyZWF0ZWQuICBTaW5j
ZSB0aGUgc2VtYW50aWNzIGFyb3VuZCB3aGVuIGF1dG8td3JhcHBpbmcgaGFwcGVucyBpbgpAQCAt
MjI5LDggKzIyNyw2IEBAIGpsb25nIENyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUZvckphdmEo
CiAgIFJUQ19DSEVDSyhzaWduYWxpbmdfdGhyZWFkLT5TdGFydCgpKSA8PCAiRmFpbGVkIHRvIHN0
YXJ0IHRocmVhZCI7CiAKICAgcnRjOjpOZXR3b3JrTW9uaXRvckZhY3RvcnkqIG5ldHdvcmtfbW9u
aXRvcl9mYWN0b3J5ID0gbnVsbHB0cjsKLSAgYXV0byBhdWRpb19lbmNvZGVyX2ZhY3RvcnkgPSBD
cmVhdGVBdWRpb0VuY29kZXJGYWN0b3J5KCk7Ci0gIGF1dG8gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
ID0gQ3JlYXRlQXVkaW9EZWNvZGVyRmFjdG9yeSgpOwogCiAgIFBlZXJDb25uZWN0aW9uRmFjdG9y
eUludGVyZmFjZTo6T3B0aW9ucyBvcHRpb25zOwogICBib29sIGhhc19vcHRpb25zID0gIWpvcHRp
b25zLmlzX251bGwoKTsKQEAgLTI1NywxMiArMjUzLDE5IEBAIGpsb25nIENyZWF0ZVBlZXJDb25u
ZWN0aW9uRmFjdG9yeUZvckphdmEoCiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVy
RmFjdG9yeT4oCiAgICAgICAgICAgQ3JlYXRlVmlkZW9EZWNvZGVyRmFjdG9yeShqbmksIGpkZWNv
ZGVyX2ZhY3RvcnkpKSwKICAgICAgIGF1ZGlvX21peGVyLCBhdWRpb19wcm9jZXNzb3IpKTsKKyAg
UGVlckNvbm5lY3Rpb25GYWN0b3J5RGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llczsKKyAgZGVwZW5k
ZW5jaWVzLm5ldHdvcmtfdGhyZWFkID0gbmV0d29ya190aHJlYWQuZ2V0KCk7CisgIGRlcGVuZGVu
Y2llcy53b3JrZXJfdGhyZWFkID0gd29ya2VyX3RocmVhZC5nZXQoKTsKKyAgZGVwZW5kZW5jaWVz
LnNpZ25hbGluZ190aHJlYWQgPSBzaWduYWxpbmdfdGhyZWFkLmdldCgpOworICBkZXBlbmRlbmNp
ZXMubWVkaWFfZW5naW5lID0gc3RkOjptb3ZlKG1lZGlhX2VuZ2luZSk7CisgIGRlcGVuZGVuY2ll
cy5jYWxsX2ZhY3RvcnkgPSBzdGQ6Om1vdmUoY2FsbF9mYWN0b3J5KTsKKyAgZGVwZW5kZW5jaWVz
LmV2ZW50X2xvZ19mYWN0b3J5ID0gc3RkOjptb3ZlKHJ0Y19ldmVudF9sb2dfZmFjdG9yeSk7Cisg
IGRlcGVuZGVuY2llcy5mZWNfY29udHJvbGxlcl9mYWN0b3J5ID0gc3RkOjptb3ZlKGZlY19jb250
cm9sbGVyX2ZhY3RvcnkpOworICBkZXBlbmRlbmNpZXMubWVkaWFfdHJhbnNwb3J0X2ZhY3Rvcnkg
PSBzdGQ6Om1vdmUobWVkaWFfdHJhbnNwb3J0X2ZhY3RvcnkpOwogCiAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IGZhY3RvcnkoCi0gICAgICBDcmVh
dGVNb2R1bGFyUGVlckNvbm5lY3Rpb25GYWN0b3J5KAotICAgICAgICAgIG5ldHdvcmtfdGhyZWFk
LmdldCgpLCB3b3JrZXJfdGhyZWFkLmdldCgpLCBzaWduYWxpbmdfdGhyZWFkLmdldCgpLAotICAg
ICAgICAgIHN0ZDo6bW92ZShtZWRpYV9lbmdpbmUpLCBzdGQ6Om1vdmUoY2FsbF9mYWN0b3J5KSwK
LSAgICAgICAgICBzdGQ6Om1vdmUocnRjX2V2ZW50X2xvZ19mYWN0b3J5KSwgc3RkOjptb3ZlKGZl
Y19jb250cm9sbGVyX2ZhY3RvcnkpKSk7CisgICAgICBDcmVhdGVNb2R1bGFyUGVlckNvbm5lY3Rp
b25GYWN0b3J5KHN0ZDo6bW92ZShkZXBlbmRlbmNpZXMpKSk7CisKICAgUlRDX0NIRUNLKGZhY3Rv
cnkpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIHRoZSBwZWVyIGNvbm5lY3Rpb24gZmFjdG9yeTsgIgog
ICAgICAgICAgICAgICAgICAgICAgPDwgIldlYlJUQy9saWJqaW5nbGUgaW5pdCBsaWtlbHkgZmFp
bGVkIG9uIHRoaXMgZGV2aWNlIjsKICAgLy8gVE9ETyhob25naGFpeik6IE1heWJlIHB1dCB0aGUg
b3B0aW9ucyBhcyB0aGUgYXJndW1lbnQgb2YKQEAgLTI4MywyMSArMjg2LDM5IEBAIHN0YXRpYyBq
bG9uZyBKTklfUGVlckNvbm5lY3Rpb25GYWN0b3J5X0NyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9y
eSgKICAgICBjb25zdCBKYXZhUGFyYW1SZWY8am9iamVjdD4mIGpjb250ZXh0LAogICAgIGNvbnN0
IEphdmFQYXJhbVJlZjxqb2JqZWN0PiYgam9wdGlvbnMsCiAgICAgamxvbmcgbmF0aXZlX2F1ZGlv
X2RldmljZV9tb2R1bGUsCisgICAgamxvbmcgbmF0aXZlX2F1ZGlvX2VuY29kZXJfZmFjdG9yeSwK
KyAgICBqbG9uZyBuYXRpdmVfYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LAogICAgIGNvbnN0IEphdmFQ
YXJhbVJlZjxqb2JqZWN0PiYgamVuY29kZXJfZmFjdG9yeSwKICAgICBjb25zdCBKYXZhUGFyYW1S
ZWY8am9iamVjdD4mIGpkZWNvZGVyX2ZhY3RvcnksCiAgICAgamxvbmcgbmF0aXZlX2F1ZGlvX3By
b2Nlc3NvciwKLSAgICBqbG9uZyBuYXRpdmVfZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSkgeworICAg
IGpsb25nIG5hdGl2ZV9mZWNfY29udHJvbGxlcl9mYWN0b3J5LAorICAgIGpsb25nIG5hdGl2ZV9t
ZWRpYV90cmFuc3BvcnRfZmFjdG9yeSkgewogICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Qcm9j
ZXNzaW5nPiBhdWRpb19wcm9jZXNzb3IgPQogICAgICAgcmVpbnRlcnByZXRfY2FzdDxBdWRpb1By
b2Nlc3NpbmcqPihuYXRpdmVfYXVkaW9fcHJvY2Vzc29yKTsKKyAgQXVkaW9FbmNvZGVyRmFjdG9y
eSogYXVkaW9fZW5jb2Rlcl9mYWN0b3J5X3B0ciA9CisgICAgICByZWludGVycHJldF9jYXN0PEF1
ZGlvRW5jb2RlckZhY3RvcnkqPihuYXRpdmVfYXVkaW9fZW5jb2Rlcl9mYWN0b3J5KTsKKyAgcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGF1ZGlvX2VuY29kZXJfZmFjdG9y
eSgKKyAgICAgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeV9wdHIpOworICAvLyBSZWxlYXNlIHRoZSBj
YWxsZXIncyByZWZlcmVuY2UgY291bnQuCisgIGF1ZGlvX2VuY29kZXJfZmFjdG9yeS0+UmVsZWFz
ZSgpOworICBBdWRpb0RlY29kZXJGYWN0b3J5KiBhdWRpb19kZWNvZGVyX2ZhY3RvcnlfcHRyID0K
KyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9EZWNvZGVyRmFjdG9yeSo+KG5hdGl2ZV9hdWRp
b19kZWNvZGVyX2ZhY3RvcnkpOworICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9EZWNvZGVyRmFj
dG9yeT4gYXVkaW9fZGVjb2Rlcl9mYWN0b3J5KAorICAgICAgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5
X3B0cik7CisgIC8vIFJlbGVhc2UgdGhlIGNhbGxlcidzIHJlZmVyZW5jZSBjb3VudC4KKyAgYXVk
aW9fZGVjb2Rlcl9mYWN0b3J5LT5SZWxlYXNlKCk7CiAgIHN0ZDo6dW5pcXVlX3B0cjxGZWNDb250
cm9sbGVyRmFjdG9yeUludGVyZmFjZT4gZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSgKICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8RmVjQ29udHJvbGxlckZhY3RvcnlJbnRlcmZhY2UqPigKICAgICAgICAg
ICBuYXRpdmVfZmVjX2NvbnRyb2xsZXJfZmFjdG9yeSkpOworICBzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFUcmFuc3BvcnRGYWN0b3J5PiBtZWRpYV90cmFuc3BvcnRfZmFjdG9yeSgKKyAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8TWVkaWFUcmFuc3BvcnRGYWN0b3J5Kj4obmF0aXZlX21lZGlhX3RyYW5zcG9y
dF9mYWN0b3J5KSk7CiAgIHJldHVybiBDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnlGb3JKYXZh
KAogICAgICAgam5pLCBqY29udGV4dCwgam9wdGlvbnMsCiAgICAgICByZWludGVycHJldF9jYXN0
PEF1ZGlvRGV2aWNlTW9kdWxlKj4obmF0aXZlX2F1ZGlvX2RldmljZV9tb2R1bGUpLAotICAgICAg
amVuY29kZXJfZmFjdG9yeSwgamRlY29kZXJfZmFjdG9yeSwKKyAgICAgIGF1ZGlvX2VuY29kZXJf
ZmFjdG9yeSwgYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LCBqZW5jb2Rlcl9mYWN0b3J5LAorICAgICAg
amRlY29kZXJfZmFjdG9yeSwKICAgICAgIGF1ZGlvX3Byb2Nlc3NvciA/IGF1ZGlvX3Byb2Nlc3Nv
ciA6IENyZWF0ZUF1ZGlvUHJvY2Vzc2luZygpLAotICAgICAgc3RkOjptb3ZlKGZlY19jb250cm9s
bGVyX2ZhY3RvcnkpKTsKKyAgICAgIHN0ZDo6bW92ZShmZWNfY29udHJvbGxlcl9mYWN0b3J5KSwg
c3RkOjptb3ZlKG1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyB2b2lkIEpO
SV9QZWVyQ29ubmVjdGlvbkZhY3RvcnlfRnJlZUZhY3RvcnkoSk5JRW52KiwKQEAgLTM5NiwxOCAr
NDE3LDIwIEBAIHN0YXRpYyBqbG9uZyBKTklfUGVlckNvbm5lY3Rpb25GYWN0b3J5X0NyZWF0ZVBl
ZXJDb25uZWN0aW9uKAogICAgICAgUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3Vy
YXRpb25UeXBlOjprQWdncmVzc2l2ZSk7CiAgIEphdmFUb05hdGl2ZVJUQ0NvbmZpZ3VyYXRpb24o
am5pLCBqX3J0Y19jb25maWcsICZydGNfY29uZmlnKTsKIAotICAvLyBHZW5lcmF0ZSBub24tZGVm
YXVsdCBjZXJ0aWZpY2F0ZS4KLSAgcnRjOjpLZXlUeXBlIGtleV90eXBlID0gR2V0UnRjQ29uZmln
S2V5VHlwZShqbmksIGpfcnRjX2NvbmZpZyk7Ci0gIGlmIChrZXlfdHlwZSAhPSBydGM6OktUX0RF
RkFVTFQpIHsKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4gY2Vy
dGlmaWNhdGUgPQotICAgICAgICBydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yOjpHZW5lcmF0
ZUNlcnRpZmljYXRlKAotICAgICAgICAgICAgcnRjOjpLZXlQYXJhbXMoa2V5X3R5cGUpLCBhYnNs
OjpudWxsb3B0KTsKLSAgICBpZiAoIWNlcnRpZmljYXRlKSB7Ci0gICAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiRmFpbGVkIHRvIGdlbmVyYXRlIGNlcnRpZmljYXRlLiBLZXlUeXBlOiAiCi0gICAg
ICAgICAgICAgICAgICAgICAgICA8PCBrZXlfdHlwZTsKLSAgICAgIHJldHVybiAwOworICBpZiAo
cnRjX2NvbmZpZy5jZXJ0aWZpY2F0ZXMuZW1wdHkoKSkgeworICAgIC8vIEdlbmVyYXRlIG5vbi1k
ZWZhdWx0IGNlcnRpZmljYXRlLgorICAgIHJ0Yzo6S2V5VHlwZSBrZXlfdHlwZSA9IEdldFJ0Y0Nv
bmZpZ0tleVR5cGUoam5pLCBqX3J0Y19jb25maWcpOworICAgIGlmIChrZXlfdHlwZSAhPSBydGM6
OktUX0RFRkFVTFQpIHsKKyAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxydGM6OlJUQ0NlcnRpZmlj
YXRlPiBjZXJ0aWZpY2F0ZSA9CisgICAgICAgICAgcnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRv
cjo6R2VuZXJhdGVDZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgcnRjOjpLZXlQYXJhbXMoa2V5
X3R5cGUpLCBhYnNsOjpudWxsb3B0KTsKKyAgICAgIGlmICghY2VydGlmaWNhdGUpIHsKKyAgICAg
ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBnZW5lcmF0ZSBjZXJ0aWZpY2F0ZS4g
S2V5VHlwZTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBrZXlfdHlwZTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgICBydGNfY29uZmlnLmNlcnRpZmljYXRlcy5wdXNo
X2JhY2soY2VydGlmaWNhdGUpOwogICAgIH0KLSAgICBydGNfY29uZmlnLmNlcnRpZmljYXRlcy5w
dXNoX2JhY2soY2VydGlmaWNhdGUpOwogICB9CiAKICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhQ29u
c3RyYWludHNJbnRlcmZhY2U+IGNvbnN0cmFpbnRzOwpAQCAtNDM3LDEyICs0NjAsMTMgQEAgc3Rh
dGljIGpsb25nIEpOSV9QZWVyQ29ubmVjdGlvbkZhY3RvcnlfQ3JlYXRlVmlkZW9Tb3VyY2UoCiAg
ICAgSk5JRW52KiBqbmksCiAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mLAogICAgIGps
b25nIG5hdGl2ZV9mYWN0b3J5LAotICAgIGpib29sZWFuIGlzX3NjcmVlbmNhc3QpIHsKKyAgICBq
Ym9vbGVhbiBpc19zY3JlZW5jYXN0LAorICAgIGpib29sZWFuIGFsaWduX3RpbWVzdGFtcHMpIHsK
ICAgT3duZWRGYWN0b3J5QW5kVGhyZWFkcyogZmFjdG9yeSA9CiAgICAgICByZWludGVycHJldF9j
YXN0PE93bmVkRmFjdG9yeUFuZFRocmVhZHMqPihuYXRpdmVfZmFjdG9yeSk7CiAgIHJldHVybiBq
bG9uZ0Zyb21Qb2ludGVyKENyZWF0ZVZpZGVvU291cmNlKGpuaSwgZmFjdG9yeS0+c2lnbmFsaW5n
X3RocmVhZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
YWN0b3J5LT53b3JrZXJfdGhyZWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzX3NjcmVlbmNhc3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaXNfc2NyZWVuY2FzdCwgYWxpZ25fdGltZXN0YW1wcykpOwogfQog
CiBzdGF0aWMgamxvbmcgSk5JX1BlZXJDb25uZWN0aW9uRmFjdG9yeV9DcmVhdGVWaWRlb1RyYWNr
KApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL2FuZHJvaWQvc3JjL2puaS9wYy9ydGNjZXJ0aWZpY2F0ZS5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRjY2Vy
dGlmaWNhdGUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM1OThjY2UwOWUzNWM2YTRhYzJmMTFmMGRkNWZjZmQx
YWY5ZTE2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuY2MKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3Qg
YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICog
IHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBj
YW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBw
cm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInNkay9hbmRyb2lk
L3NyYy9qbmkvcGMvcnRjY2VydGlmaWNhdGUuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMv
am5pL3BjL2ljZWNhbmRpZGF0ZS5oIgorCisjaW5jbHVkZSAicnRjX2Jhc2UvcmVmY291bnQuaCIK
KyNpbmNsdWRlICJydGNfYmFzZS9ydGNjZXJ0aWZpY2F0ZS5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3J0Y2NlcnRpZmljYXRlZ2VuZXJhdG9yLmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJh
dGVkX3BlZXJjb25uZWN0aW9uX2puaS9qbmkvUnRjQ2VydGlmaWNhdGVQZW1fam5pLmgiCisjaW5j
bHVkZSAic2RrL2FuZHJvaWQvbmF0aXZlX2FwaS9qbmkvamF2YV90eXBlcy5oIgorI2luY2x1ZGUg
InNkay9hbmRyb2lkL3NyYy9qbmkvam5pX2hlbHBlcnMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CituYW1lc3BhY2Ugam5pIHsKKworcnRjOjpSVENDZXJ0aWZpY2F0ZVBFTSBKYXZhVG9OYXRpdmVS
VENDZXJ0aWZpY2F0ZVBFTSgKKyAgICBKTklFbnYqIGpuaSwKKyAgICBjb25zdCBKYXZhUmVmPGpv
YmplY3Q+JiBqX3J0Y19jZXJ0aWZpY2F0ZSkgeworICBTY29wZWRKYXZhTG9jYWxSZWY8anN0cmlu
Zz4gcHJpdmF0ZWtleV9maWVsZCA9CisgICAgICBKYXZhX1J0Y0NlcnRpZmljYXRlUGVtX2dldFBy
aXZhdGVLZXkoam5pLCBqX3J0Y19jZXJ0aWZpY2F0ZSk7CisgIFNjb3BlZEphdmFMb2NhbFJlZjxq
c3RyaW5nPiBjZXJ0aWZpY2F0ZV9maWVsZCA9CisgICAgICBKYXZhX1J0Y0NlcnRpZmljYXRlUGVt
X2dldENlcnRpZmljYXRlKGpuaSwgal9ydGNfY2VydGlmaWNhdGUpOworICByZXR1cm4gcnRjOjpS
VENDZXJ0aWZpY2F0ZVBFTShKYXZhVG9OYXRpdmVTdHJpbmcoam5pLCBwcml2YXRla2V5X2ZpZWxk
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSmF2YVRvTmF0aXZlU3RyaW5nKGpu
aSwgY2VydGlmaWNhdGVfZmllbGQpKTsKK30KKworU2NvcGVkSmF2YUxvY2FsUmVmPGpvYmplY3Q+
IE5hdGl2ZVRvSmF2YVJUQ0NlcnRpZmljYXRlUEVNKAorICAgIEpOSUVudiogam5pLAorICAgIGNv
bnN0IHJ0Yzo6UlRDQ2VydGlmaWNhdGVQRU0mIGNlcnRpZmljYXRlKSB7CisgIHJldHVybiBKYXZh
X1J0Y0NlcnRpZmljYXRlUGVtX0NvbnN0cnVjdG9yKAorICAgICAgam5pLCBOYXRpdmVUb0phdmFT
dHJpbmcoam5pLCBjZXJ0aWZpY2F0ZS5wcml2YXRlX2tleSgpKSwKKyAgICAgIE5hdGl2ZVRvSmF2
YVN0cmluZyhqbmksIGNlcnRpZmljYXRlLmNlcnRpZmljYXRlKCkpKTsKK30KKworc3RhdGljIFNj
b3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0PiBKTklfUnRjQ2VydGlmaWNhdGVQZW1fR2VuZXJhdGVD
ZXJ0aWZpY2F0ZSgKKyAgICBKTklFbnYqIGpuaSwKKyAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNs
YXNzPiYsCisgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpvYmplY3Q+JiBqX2tleV90eXBlLAorICAg
IGpsb25nIGpfZXhwaXJlcykgeworICBydGM6OktleVR5cGUga2V5X3R5cGUgPSBKYXZhVG9OYXRp
dmVLZXlUeXBlKGpuaSwgal9rZXlfdHlwZSk7CisgIHVpbnQ2NF90IGV4cGlyZXMgPSAodWludDY0
X3Qpal9leHBpcmVzOworICBydGM6OnNjb3BlZF9yZWZwdHI8cnRjOjpSVENDZXJ0aWZpY2F0ZT4g
Y2VydGlmaWNhdGUgPQorICAgICAgcnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcjo6R2VuZXJh
dGVDZXJ0aWZpY2F0ZSgKKyAgICAgICAgICBydGM6OktleVBhcmFtcyhrZXlfdHlwZSksIGV4cGly
ZXMpOworICBydGM6OlJUQ0NlcnRpZmljYXRlUEVNIHBlbSA9IGNlcnRpZmljYXRlLT5Ub1BFTSgp
OworICByZXR1cm4gSmF2YV9SdGNDZXJ0aWZpY2F0ZVBlbV9Db25zdHJ1Y3RvcigKKyAgICAgIGpu
aSwgTmF0aXZlVG9KYXZhU3RyaW5nKGpuaSwgcGVtLnByaXZhdGVfa2V5KCkpLAorICAgICAgTmF0
aXZlVG9KYXZhU3RyaW5nKGpuaSwgcGVtLmNlcnRpZmljYXRlKCkpKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIGpuaQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9y
dGNjZXJ0aWZpY2F0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy9ydGNjZXJ0aWZpY2F0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3
ZDFmNzVkMTM5OTNkNTBjYmVhYTZlZDdmNjE1NmM4Mjk2NTlhZGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9z
cmMvam5pL3BjL3J0Y2NlcnRpZmljYXRlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqICBDb3B5
cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxs
ZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmls
ZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUg
Zm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUu
CisgKi8KKworI2lmbmRlZiBTREtfQU5EUk9JRF9TUkNfSk5JX1BDX1JUQ0NFUlRJRklDQVRFX0hf
CisjZGVmaW5lIFNES19BTkRST0lEX1NSQ19KTklfUENfUlRDQ0VSVElGSUNBVEVfSF8KKworI2lu
Y2x1ZGUgInJ0Y19iYXNlL3JlZmNvdW50LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcnRjY2VydGlm
aWNhdGUuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9uYXRpdmVfYXBpL2puaS9qYXZhX3R5cGVz
LmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfaGVscGVycy5oIgorCituYW1l
c3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSBqbmkgeworCitydGM6OlJUQ0NlcnRpZmljYXRlUEVN
IEphdmFUb05hdGl2ZVJUQ0NlcnRpZmljYXRlUEVNKAorICAgIEpOSUVudiogam5pLAorICAgIGNv
bnN0IEphdmFSZWY8am9iamVjdD4mIGpfcnRjX2NlcnRpZmljYXRlKTsKKworU2NvcGVkSmF2YUxv
Y2FsUmVmPGpvYmplY3Q+IE5hdGl2ZVRvSmF2YVJUQ0NlcnRpZmljYXRlUEVNKAorICAgIEpOSUVu
diogZW52LAorICAgIGNvbnN0IHJ0Yzo6UlRDQ2VydGlmaWNhdGVQRU0mIGNlcnRpZmljYXRlKTsK
KworfSAgLy8gbmFtZXNwYWNlIGpuaQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYg
IC8vIFNES19BTkRST0lEX1NSQ19KTklfUENfUlRDQ0VSVElGSUNBVEVfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3Ny
Yy9qbmkvcGMvdmlkZW8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3BjL3ZpZGVvLmNjCmluZGV4IGRkMTBmZDUxY2I2YWQ1
ZjRmNzcwZjI4OGIyN2ZhZmJkN2ZjMDgzZGQuLmM3YzZlNzZkNWQ5YmE3M2UwNWI5MDBkM2JmNWUw
YzBjMTBlNTViYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvdmlkZW8uY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy92
aWRlby5jYwpAQCAtNDQsMTAgKzQ0LDExIEBAIFZpZGVvRGVjb2RlckZhY3RvcnkqIENyZWF0ZVZp
ZGVvRGVjb2RlckZhY3RvcnkoCiB2b2lkKiBDcmVhdGVWaWRlb1NvdXJjZShKTklFbnYqIGVudiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpUaHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBqYm9vbGVhbiBpc19zY3JlZW5jYXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgamJvb2xlYW4gYWxpZ25fdGltZXN0YW1wcykgewogICBydGM6OnNjb3BlZF9yZWZwdHI8
QW5kcm9pZFZpZGVvVHJhY2tTb3VyY2U+IHNvdXJjZSgKLSAgICAgIG5ldyBydGM6OlJlZkNvdW50
ZWRPYmplY3Q8QW5kcm9pZFZpZGVvVHJhY2tTb3VyY2U+KHNpZ25hbGluZ190aHJlYWQsIGVudiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzX3NjcmVlbmNhc3QpKTsKKyAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8QW5kcm9p
ZFZpZGVvVHJhY2tTb3VyY2U+KAorICAgICAgICAgIHNpZ25hbGluZ190aHJlYWQsIGVudiwgaXNf
c2NyZWVuY2FzdCwgYWxpZ25fdGltZXN0YW1wcykpOwogICByZXR1cm4gVmlkZW9UcmFja1NvdXJj
ZVByb3h5OjpDcmVhdGUoc2lnbmFsaW5nX3RocmVhZCwgd29ya2VyX3RocmVhZCwgc291cmNlKQog
ICAgICAgLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvcGMvdmlkZW8uaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
cGMvdmlkZW8uaAppbmRleCAxODM3NzBiODIwNjI4MzkwMmY3OWIzNWY2MDczYjZlYWY3OWU5OGZi
Li4wNDM5MGVhNDUzZWEwYTNiOGNlMTJiMWI0ZTM1ZmNiOGU3ZTY1MGQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMv
am5pL3BjL3ZpZGVvLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS9wYy92aWRlby5oCkBAIC0zNiw3ICszNiw4IEBAIFZp
ZGVvRGVjb2RlckZhY3RvcnkqIENyZWF0ZVZpZGVvRGVjb2RlckZhY3RvcnkoCiB2b2lkKiBDcmVh
dGVWaWRlb1NvdXJjZShKTklFbnYqIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6
VGhyZWFkKiBzaWduYWxpbmdfdGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpU
aHJlYWQqIHdvcmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBqYm9vbGVhbiBp
c19zY3JlZW5jYXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGpib29sZWFuIGlzX3NjcmVl
bmNhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBqYm9vbGVhbiBhbGlnbl90aW1lc3RhbXBz
KTsKIAogfSAgLy8gbmFtZXNwYWNlIGpuaQogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS90aW1lc3RhbXBhbGlnbmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS90aW1lc3RhbXBhbGlnbmVyLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFiZTliMGZkYzUxMzQ1NGY1MGRjYjJiNmJmZDEyYjdiYWMxMGJiYjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3RpbWVzdGFtcGFsaWduZXIuY2MKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgPGpuaS5oPgorCisjaW5jbHVkZSAicnRj
X2Jhc2UvdGltZXN0YW1wYWxpZ25lci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5o
IgorI2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF92aWRlb19qbmkvam5pL1RpbWVzdGFt
cEFsaWduZXJfam5pLmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfaGVscGVy
cy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSBqbmkgeworCitzdGF0aWMgamxv
bmcgSk5JX1RpbWVzdGFtcEFsaWduZXJfUnRjVGltZU5hbm9zKAorICAgIEpOSUVudiogZW52LAor
ICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+JiBqX2NhbGxlcikgeworICByZXR1cm4gcnRj
OjpUaW1lTmFub3MoKTsKK30KKworc3RhdGljIGpsb25nIEpOSV9UaW1lc3RhbXBBbGlnbmVyX0Ny
ZWF0ZVRpbWVzdGFtcEFsaWduZXIoCisgICAgSk5JRW52KiBlbnYsCisgICAgY29uc3QgSmF2YVBh
cmFtUmVmPGpjbGFzcz4mIGpfY2FsbGVyKSB7CisgIHJldHVybiBqbG9uZ0Zyb21Qb2ludGVyKG5l
dyBydGM6OlRpbWVzdGFtcEFsaWduZXIoKSk7Cit9CisKK3N0YXRpYyB2b2lkIEpOSV9UaW1lc3Rh
bXBBbGlnbmVyX1JlbGVhc2VUaW1lc3RhbXBBbGlnbmVyKAorICAgIEpOSUVudiogZW52LAorICAg
IGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+JiBqX2NhbGxlciwKKyAgICBqbG9uZyB0aW1lc3Rh
bXBfYWxpZ25lcikgeworICBkZWxldGUgcmVpbnRlcnByZXRfY2FzdDxydGM6OlRpbWVzdGFtcEFs
aWduZXIqPih0aW1lc3RhbXBfYWxpZ25lcik7Cit9CisKK3N0YXRpYyBqbG9uZyBKTklfVGltZXN0
YW1wQWxpZ25lcl9UcmFuc2xhdGVUaW1lc3RhbXAoCisgICAgSk5JRW52KiBlbnYsCisgICAgY29u
c3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mIGpfY2FsbGVyLAorICAgIGpsb25nIHRpbWVzdGFtcF9h
bGlnbmVyLAorICAgIGpsb25nIGNhbWVyYV90aW1lX25zKSB7CisgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHJ0Yzo6VGltZXN0YW1wQWxpZ25lcio+KHRpbWVzdGFtcF9hbGlnbmVyKQorICAgICAg
ICAgICAgIC0+VHJhbnNsYXRlVGltZXN0YW1wKGNhbWVyYV90aW1lX25zIC8gcnRjOjprTnVtTmFu
b3NlY3NQZXJNaWNyb3NlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGM6
OlRpbWVNaWNyb3MoKSkgKgorICAgICAgICAgcnRjOjprTnVtTmFub3NlY3NQZXJNaWNyb3NlYzsK
K30KKworfSAgLy8gbmFtZXNwYWNlIGpuaQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS92aWRlb2VuY29kZXJ3cmFwcGVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb2VuY29kZXJ3cmFw
cGVyLmNjCmluZGV4IDYzODFjNjNjYjA2ZjkwNzI5NjgxNzhkY2EwOWIxNDRlOTBkYzkwMGQuLjFl
NGI4NGVhYzYwZjJiN2M5YmFkZWYxYWMxY2JlMDUyYjlhYWU5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
dmlkZW9lbmNvZGVyd3JhcHBlci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZpZGVvZW5jb2RlcndyYXBwZXIuY2MK
QEAgLTMyLDggKzMyLDYgQEAgbmFtZXNwYWNlIGpuaSB7CiBWaWRlb0VuY29kZXJXcmFwcGVyOjpW
aWRlb0VuY29kZXJXcmFwcGVyKEpOSUVudiogam5pLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBKYXZhUmVmPGpvYmplY3Q+JiBqX2VuY29kZXIpCiAgICAg
OiBlbmNvZGVyXyhqbmksIGpfZW5jb2RlciksIGludF9hcnJheV9jbGFzc18oR2V0Q2xhc3Moam5p
LCAiW0kiKSkgewotICBpbXBsZW1lbnRhdGlvbl9uYW1lXyA9IEdldEltcGxlbWVudGF0aW9uTmFt
ZShqbmkpOwotCiAgIGluaXRpYWxpemVkXyA9IGZhbHNlOwogICBudW1fcmVzZXRzXyA9IDA7CiB9
CkBAIC04Miw2ICs4MCwxMCBAQCBpbnQzMl90IFZpZGVvRW5jb2RlcldyYXBwZXI6OkluaXRFbmNv
ZGVJbnRlcm5hbChKTklFbnYqIGpuaSkgewogICAgICAgam5pLCBKYXZhX1ZpZGVvRW5jb2Rlcl9p
bml0RW5jb2RlKGpuaSwgZW5jb2Rlcl8sIHNldHRpbmdzLCBjYWxsYmFjaykpOwogICBSVENfTE9H
KExTX0lORk8pIDw8ICJpbml0RW5jb2RlOiAiIDw8IHN0YXR1czsKIAorICBlbmNvZGVyX2luZm9f
LnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSB0cnVlOworICBlbmNvZGVyX2luZm9fLmltcGxlbWVu
dGF0aW9uX25hbWUgPSBHZXRJbXBsZW1lbnRhdGlvbk5hbWUoam5pKTsKKyAgZW5jb2Rlcl9pbmZv
Xy5zY2FsaW5nX3NldHRpbmdzID0gR2V0U2NhbGluZ1NldHRpbmdzSW50ZXJuYWwoam5pKTsKKwog
ICBpZiAoc3RhdHVzID09IFdFQlJUQ19WSURFT19DT0RFQ19PSykgewogICAgIGluaXRpYWxpemVk
XyA9IHRydWU7CiAgIH0KQEAgLTEzNiwxNCArMTM4LDYgQEAgaW50MzJfdCBWaWRlb0VuY29kZXJX
cmFwcGVyOjpFbmNvZGUoCiAgIHJldHVybiBIYW5kbGVSZXR1cm5Db2RlKGpuaSwgcmV0LCAiZW5j
b2RlIik7CiB9CiAKLWludDMyX3QgVmlkZW9FbmNvZGVyV3JhcHBlcjo6U2V0Q2hhbm5lbFBhcmFt
ZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0KSB7Ci0gIEpOSUVudiogam5pID0gQXR0
YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7Ci0gIFNjb3BlZEphdmFMb2NhbFJlZjxqb2JqZWN0
PiByZXQgPSBKYXZhX1ZpZGVvRW5jb2Rlcl9zZXRDaGFubmVsUGFyYW1ldGVycygKLSAgICAgIGpu
aSwgZW5jb2Rlcl8sIChqc2hvcnQpcGFja2V0X2xvc3MsIChqbG9uZylydHQpOwotICByZXR1cm4g
SGFuZGxlUmV0dXJuQ29kZShqbmksIHJldCwgInNldENoYW5uZWxQYXJhbWV0ZXJzIik7Ci19Ci0K
IGludDMyX3QgVmlkZW9FbmNvZGVyV3JhcHBlcjo6U2V0UmF0ZUFsbG9jYXRpb24oCiAgICAgY29u
c3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYWxsb2NhdGlvbiwKICAgICB1aW50MzJfdCBmcmFt
ZXJhdGUpIHsKQEAgLTE1Niw5ICsxNTAsMTIgQEAgaW50MzJfdCBWaWRlb0VuY29kZXJXcmFwcGVy
OjpTZXRSYXRlQWxsb2NhdGlvbigKICAgcmV0dXJuIEhhbmRsZVJldHVybkNvZGUoam5pLCByZXQs
ICJzZXRSYXRlQWxsb2NhdGlvbiIpOwogfQogCi1WaWRlb0VuY29kZXJXcmFwcGVyOjpTY2FsaW5n
U2V0dGluZ3MgVmlkZW9FbmNvZGVyV3JhcHBlcjo6R2V0U2NhbGluZ1NldHRpbmdzKCkKLSAgICBj
b25zdCB7Ci0gIEpOSUVudiogam5pID0gQXR0YWNoQ3VycmVudFRocmVhZElmTmVlZGVkKCk7CitW
aWRlb0VuY29kZXI6OkVuY29kZXJJbmZvIFZpZGVvRW5jb2RlcldyYXBwZXI6OkdldEVuY29kZXJJ
bmZvKCkgY29uc3QgeworICByZXR1cm4gZW5jb2Rlcl9pbmZvXzsKK30KKworVmlkZW9FbmNvZGVy
V3JhcHBlcjo6U2NhbGluZ1NldHRpbmdzCitWaWRlb0VuY29kZXJXcmFwcGVyOjpHZXRTY2FsaW5n
U2V0dGluZ3NJbnRlcm5hbChKTklFbnYqIGpuaSkgY29uc3QgewogICBTY29wZWRKYXZhTG9jYWxS
ZWY8am9iamVjdD4gal9zY2FsaW5nX3NldHRpbmdzID0KICAgICAgIEphdmFfVmlkZW9FbmNvZGVy
X2dldFNjYWxpbmdTZXR0aW5ncyhqbmksIGVuY29kZXJfKTsKICAgYm9vbCBpc09uID0KQEAgLTIw
NiwxNCArMjAzLDYgQEAgVmlkZW9FbmNvZGVyV3JhcHBlcjo6U2NhbGluZ1NldHRpbmdzIFZpZGVv
RW5jb2RlcldyYXBwZXI6OkdldFNjYWxpbmdTZXR0aW5ncygpCiAgIH0KIH0KIAotYm9vbCBWaWRl
b0VuY29kZXJXcmFwcGVyOjpTdXBwb3J0c05hdGl2ZUhhbmRsZSgpIGNvbnN0IHsKLSAgcmV0dXJu
IHRydWU7Ci19Ci0KLWNvbnN0IGNoYXIqIFZpZGVvRW5jb2RlcldyYXBwZXI6OkltcGxlbWVudGF0
aW9uTmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxlbWVudGF0aW9uX25hbWVfLmNfc3RyKCk7
Ci19Ci0KIHZvaWQgVmlkZW9FbmNvZGVyV3JhcHBlcjo6T25FbmNvZGVkRnJhbWUoSk5JRW52KiBq
bmksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFS
ZWY8am9iamVjdD4mIGpfY2FsbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBKYXZhUmVmPGpvYmplY3Q+JiBqX2J1ZmZlciwKQEAgLTM4NSw3ICszNzQs
NiBAQCBDb2RlY1NwZWNpZmljSW5mbyBWaWRlb0VuY29kZXJXcmFwcGVyOjpQYXJzZUNvZGVjU3Bl
Y2lmaWNJbmZvKAogICBDb2RlY1NwZWNpZmljSW5mbyBpbmZvOwogICBtZW1zZXQoJmluZm8sIDAs
IHNpemVvZihpbmZvKSk7CiAgIGluZm8uY29kZWNUeXBlID0gY29kZWNfc2V0dGluZ3NfLmNvZGVj
VHlwZTsKLSAgaW5mby5jb2RlY19uYW1lID0gaW1wbGVtZW50YXRpb25fbmFtZV8uY19zdHIoKTsK
IAogICBzd2l0Y2ggKGNvZGVjX3NldHRpbmdzXy5jb2RlY1R5cGUpIHsKICAgICBjYXNlIGtWaWRl
b0NvZGVjVlA4OgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb2VuY29kZXJ3cmFwcGVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5p
L3ZpZGVvZW5jb2RlcndyYXBwZXIuaAppbmRleCBjMzA1NjA1MDNjYjc1ZWY5YWE1NDJkMTgxOTA1
NTM5YWU2NGQ0ZGQ4Li4zNjE4Zjc4NDczNzVlNTkwMzQ1Y2Y3N2MzMDg5ZWMwZDY3Y2ZkMTJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
YW5kcm9pZC9zcmMvam5pL3ZpZGVvZW5jb2RlcndyYXBwZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZpZGVvZW5j
b2RlcndyYXBwZXIuaApAQCAtNDUsMTQgKzQ1LDEwIEBAIGNsYXNzIFZpZGVvRW5jb2RlcldyYXBw
ZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNT
cGVjaWZpY0luZm8qIGNvZGVjX3NwZWNpZmljX2luZm8sCiAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPEZyYW1lVHlwZT4qIGZyYW1lX3R5cGVzKSBvdmVycmlkZTsKIAotICBpbnQz
Ml90IFNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0
dCkgb3ZlcnJpZGU7Ci0KICAgaW50MzJfdCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRlb0Jp
dHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IGZyYW1lcmF0ZSkgb3ZlcnJpZGU7CiAKLSAgU2NhbGluZ1NldHRpbmdzIEdldFNj
YWxpbmdTZXR0aW5ncygpIGNvbnN0IG92ZXJyaWRlOwotCi0gIGJvb2wgU3VwcG9ydHNOYXRpdmVI
YW5kbGUoKSBjb25zdCBvdmVycmlkZTsKKyAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBj
b25zdCBvdmVycmlkZTsKIAogICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgYnkgSk5JLgogICB2
b2lkIE9uRW5jb2RlZEZyYW1lKEpOSUVudiogam5pLApAQCAtNjYsOCArNjIsNiBAQCBjbGFzcyBW
aWRlb0VuY29kZXJXcmFwcGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgICAgICAgICAgICAg
ICAgICAgICAgamJvb2xlYW4gY29tcGxldGVfZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSmF2YVJlZjxqb2JqZWN0PiYgal9xcCk7CiAKLSAgY29uc3QgY2hhciogSW1wbGVtZW50
YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICBwcml2YXRlOgogICBzdHJ1Y3QgRnJhbWVF
eHRyYUluZm8gewogICAgIGludDY0X3QgY2FwdHVyZV90aW1lX25zOyAgLy8gVXNlZCBhcyBhbiBp
ZGVudGlmaWVyIG9mIHRoZSBmcmFtZS4KQEAgLTkyLDExICs4NiwxMSBAQCBjbGFzcyBWaWRlb0Vu
Y29kZXJXcmFwcGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgICAgICBjb25zdCBWaWRlb0Jp
dHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9uKTsKICAgc3RkOjpzdHJpbmcgR2V0SW1wbGVtZW50
YXRpb25OYW1lKEpOSUVudiogam5pKSBjb25zdDsKIAorICBTY2FsaW5nU2V0dGluZ3MgR2V0U2Nh
bGluZ1NldHRpbmdzSW50ZXJuYWwoSk5JRW52KiBqbmkpIGNvbnN0OworCiAgIGNvbnN0IFNjb3Bl
ZEphdmFHbG9iYWxSZWY8am9iamVjdD4gZW5jb2Rlcl87CiAgIGNvbnN0IFNjb3BlZEphdmFHbG9i
YWxSZWY8amNsYXNzPiBpbnRfYXJyYXlfY2xhc3NfOwogCi0gIHN0ZDo6c3RyaW5nIGltcGxlbWVu
dGF0aW9uX25hbWVfOwotCiAgIHJ0Yzo6VGFza1F1ZXVlKiBlbmNvZGVyX3F1ZXVlXzsKICAgc3Rk
OjpkZXF1ZTxGcmFtZUV4dHJhSW5mbz4gZnJhbWVfZXh0cmFfaW5mb3NfOwogICBFbmNvZGVkSW1h
Z2VDYWxsYmFjayogY2FsbGJhY2tfOwpAQCAtMTA0LDYgKzk4LDcgQEAgY2xhc3MgVmlkZW9FbmNv
ZGVyV3JhcHBlciA6IHB1YmxpYyBWaWRlb0VuY29kZXIgewogICBpbnQgbnVtX3Jlc2V0c187CiAg
IGludCBudW1iZXJfb2ZfY29yZXNfOwogICBWaWRlb0NvZGVjIGNvZGVjX3NldHRpbmdzXzsKKyAg
RW5jb2RlckluZm8gZW5jb2Rlcl9pbmZvXzsKICAgSDI2NEJpdHN0cmVhbVBhcnNlciBoMjY0X2Jp
dHN0cmVhbV9wYXJzZXJfOwogCiAgIC8vIFZQOSB2YXJpYWJsZXMgdG8gcG9wdWxhdGUgY29kZWMg
c3BlY2lmaWMgc3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92aWRlb3NvdXJjZS5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9q
bmkvdmlkZW9zb3VyY2UuY2MKaW5kZXggMDliNTM4ZWJjMjY1YmE5ODdlMGMyMmM2YmNjMzk1MTMx
ZTg1NTA3Zi4uMzdiYTBiMDRiMTE1MTAxNTQ3ZTMxNjQ1N2ZiY2E5NjhjNWE5NTMzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL2FuZHJv
aWQvc3JjL2puaS92aWRlb3NvdXJjZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZpZGVvc291cmNlLmNjCkBAIC0z
MywxMyArMzMsMTYgQEAgc3RhdGljIGpsb25nIEpOSV9WaWRlb1NvdXJjZV9HZXRJbnRlcm5hbFNv
dXJjZShKTklFbnYqIGpuaSwKIHN0YXRpYyB2b2lkIEpOSV9WaWRlb1NvdXJjZV9BZGFwdE91dHB1
dEZvcm1hdChKTklFbnYqIGpuaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNzPiYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamxvbmcgal9zb3VyY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBqX3dpZHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppbnQgal9oZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBqX2xhbmRz
Y2FwZV93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaW50IGpfbGFuZHNjYXBlX2hlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaW50IGpfcG9ydHJhaXRfd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBqX3BvcnRyYWl0X2hlaWdodCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IGpfZnBzKSB7
CiAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlZpZGVvU291cmNlX25hdGl2ZUFkYXB0T3V0cHV0Rm9y
bWF0IjsKICAgQW5kcm9pZFZpZGVvVHJhY2tTb3VyY2UqIHNvdXJjZSA9CiAgICAgICBBbmRyb2lk
VmlkZW9UcmFja1NvdXJjZUZyb21KYXZhUHJveHkoal9zb3VyY2UpOwotICBzb3VyY2UtPk9uT3V0
cHV0Rm9ybWF0UmVxdWVzdChqX3dpZHRoLCBqX2hlaWdodCwgal9mcHMpOworICBzb3VyY2UtPk9u
T3V0cHV0Rm9ybWF0UmVxdWVzdChqX2xhbmRzY2FwZV93aWR0aCwgal9sYW5kc2NhcGVfaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqX3BvcnRyYWl0X3dpZHRoLCBqX3Bv
cnRyYWl0X2hlaWdodCwgal9mcHMpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ugam5pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9p
ZC9zcmMvam5pL3ZwOGNvZGVjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL2FuZHJvaWQvc3JjL2puaS92cDhjb2RlYy5jYwppbmRleCAyOTVhMDNhNjEw
NzcwZjA2Yjk0NDUxMWNmZTAwM2EyYzI3NWM5ZmM1Li4yNzU2YjEwMmZhZjE5MzI0ZWMwZDZiNGUw
OTFjM2ZiZDZjNDE3ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZwOGNvZGVjLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkv
dnA4Y29kZWMuY2MKQEAgLTExLDIwICsxMSwyMCBAQAogI2luY2x1ZGUgPGpuaS5oPgogCiAjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgotI2lu
Y2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF92cDhfam5pL2puaS9WUDhEZWNvZGVyX2puaS5o
IgotI2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF92cDhfam5pL2puaS9WUDhFbmNvZGVy
X2puaS5oIgorI2luY2x1ZGUgInNkay9hbmRyb2lkL2dlbmVyYXRlZF9saWJ2cHhfdnA4X2puaS9q
bmkvTGlidnB4VnA4RGVjb2Rlcl9qbmkuaCIKKyNpbmNsdWRlICJzZGsvYW5kcm9pZC9nZW5lcmF0
ZWRfbGlidnB4X3ZwOF9qbmkvam5pL0xpYnZweFZwOEVuY29kZXJfam5pLmgiCiAjaW5jbHVkZSAi
c2RrL2FuZHJvaWQvc3JjL2puaS9qbmlfaGVscGVycy5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsK
IG5hbWVzcGFjZSBqbmkgewogCi1zdGF0aWMgamxvbmcgSk5JX1ZQOEVuY29kZXJfQ3JlYXRlRW5j
b2RlcihKTklFbnYqIGpuaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+Jikgeworc3RhdGljIGpsb25nIEpOSV9MaWJ2
cHhWcDhFbmNvZGVyX0NyZWF0ZUVuY29kZXIoSk5JRW52KiBqbmksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKYXZhUGFyYW1SZWY8amNsYXNz
PiYpIHsKICAgcmV0dXJuIGpsb25nRnJvbVBvaW50ZXIoVlA4RW5jb2Rlcjo6Q3JlYXRlKCkucmVs
ZWFzZSgpKTsKIH0KIAotc3RhdGljIGpsb25nIEpOSV9WUDhEZWNvZGVyX0NyZWF0ZURlY29kZXIo
Sk5JRW52KiBqbmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBKYXZhUGFyYW1SZWY8amNsYXNzPiYpIHsKK3N0YXRpYyBqbG9uZyBKTklfTGlidnB4VnA4
RGVjb2Rlcl9DcmVhdGVEZWNvZGVyKEpOSUVudiogam5pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mKSB7
CiAgIHJldHVybiBqbG9uZ0Zyb21Qb2ludGVyKFZQOERlY29kZXI6OkNyZWF0ZSgpLnJlbGVhc2Uo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdnA5Y29kZWMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC9zcmMvam5pL3ZwOWNvZGVjLmNj
CmluZGV4IGNhNzEyZTZkODY1NGQxZWM1ZTkwMjM4ZDhmMmI3YjdiN2Y1OTQyZmEuLjkyZjk3NTRk
NTYzMzExYTA3M2VjMmI4YTMxNGM2NmUxYTMwZmQ1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRyb2lkL3NyYy9qbmkvdnA5Y29k
ZWMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L2FuZHJvaWQvc3JjL2puaS92cDljb2RlYy5jYwpAQCAtMTEsMzAgKzExLDMwIEBACiAjaW5jbHVk
ZSA8am5pLmg+CiAKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L2lu
Y2x1ZGUvdnA5LmgiCi0jaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3ZwOV9qbmkvam5p
L1ZQOURlY29kZXJfam5pLmgiCi0jaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVkX3ZwOV9q
bmkvam5pL1ZQOUVuY29kZXJfam5pLmgiCisjaW5jbHVkZSAic2RrL2FuZHJvaWQvZ2VuZXJhdGVk
X2xpYnZweF92cDlfam5pL2puaS9MaWJ2cHhWcDlEZWNvZGVyX2puaS5oIgorI2luY2x1ZGUgInNk
ay9hbmRyb2lkL2dlbmVyYXRlZF9saWJ2cHhfdnA5X2puaS9qbmkvTGlidnB4VnA5RW5jb2Rlcl9q
bmkuaCIKICNpbmNsdWRlICJzZGsvYW5kcm9pZC9zcmMvam5pL2puaV9oZWxwZXJzLmgiCiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIGpuaSB7CiAKLXN0YXRpYyBqbG9uZyBKTklfVlA5
RW5jb2Rlcl9DcmVhdGVFbmNvZGVyKEpOSUVudiogam5pLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mIHcpIHsKK3N0
YXRpYyBqbG9uZyBKTklfTGlidnB4VnA5RW5jb2Rlcl9DcmVhdGVFbmNvZGVyKEpOSUVudiogam5p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SmF2YVBhcmFtUmVmPGpjbGFzcz4mIHcpIHsKICAgcmV0dXJuIGpsb25nRnJvbVBvaW50ZXIoVlA5
RW5jb2Rlcjo6Q3JlYXRlKCkucmVsZWFzZSgpKTsKIH0KIAotc3RhdGljIGpib29sZWFuIEpOSV9W
UDlFbmNvZGVyX0lzU3VwcG9ydGVkKEpOSUVudiogam5pLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+Jikgeworc3Rh
dGljIGpib29sZWFuIEpOSV9MaWJ2cHhWcDlFbmNvZGVyX0lzU3VwcG9ydGVkKEpOSUVudiogam5p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEphdmFQYXJhbVJlZjxqY2xhc3M+JikgewogICByZXR1cm4gIVN1cHBvcnRlZFZQOUNvZGVjcygp
LmVtcHR5KCk7CiB9CiAKLXN0YXRpYyBqbG9uZyBKTklfVlA5RGVjb2Rlcl9DcmVhdGVEZWNvZGVy
KEpOSUVudiogam5pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4mIHcpIHsKK3N0YXRpYyBqbG9uZyBKTklfTGlidnB4
VnA5RGVjb2Rlcl9DcmVhdGVEZWNvZGVyKEpOSUVudiogam5pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSmF2YVBhcmFtUmVmPGpjbGFzcz4m
IHcpIHsKICAgcmV0dXJuIGpsb25nRnJvbVBvaW50ZXIoVlA5RGVjb2Rlcjo6Q3JlYXRlKCkucmVs
ZWFzZSgpKTsKIH0KIAotc3RhdGljIGpib29sZWFuIEpOSV9WUDlEZWNvZGVyX0lzU3VwcG9ydGVk
KEpOSUVudiogam5pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+Jikgeworc3RhdGljIGpib29sZWFuIEpOSV9MaWJ2
cHhWcDlEZWNvZGVyX0lzU3VwcG9ydGVkKEpOSUVudiogam5pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEphdmFQYXJhbVJlZjxqY2xhc3M+
JikgewogICByZXR1cm4gIVN1cHBvcnRlZFZQOUNvZGVjcygpLmVtcHR5KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9hbmRy
b2lkL3Rlc3RzL3NyYy9vcmcvd2VicnRjL0NyeXB0b09wdGlvbnNUZXN0LmphdmEgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC90ZXN0cy9zcmMv
b3JnL3dlYnJ0Yy9DcnlwdG9PcHRpb25zVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwMzgxMWU2ZmNh
ZDUyYzg1MDRkNjhjNjdlOTI1NzljYjIyZjQ5ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvYW5kcm9pZC90ZXN0cy9zcmMv
b3JnL3dlYnJ0Yy9DcnlwdG9PcHRpb25zVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgorICovCisKK3BhY2thZ2Ugb3JnLndlYnJ0YzsKKworaW1wb3J0IHN0YXRpYyBjb20u
Z29vZ2xlLmNvbW1vbi50cnV0aC5UcnV0aC5hc3NlcnRUaGF0OworCitpbXBvcnQgb3JnLmNocm9t
aXVtLnRlc3RpbmcubG9jYWwuTG9jYWxSb2JvbGVjdHJpY1Rlc3RSdW5uZXI7CitpbXBvcnQgb3Jn
Lmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworaW1wb3J0IG9y
Zy5yb2JvbGVjdHJpYy5hbm5vdGF0aW9uLkNvbmZpZzsKK2ltcG9ydCBvcmcud2VicnRjLkNyeXB0
b09wdGlvbnM7CisKK0BSdW5XaXRoKExvY2FsUm9ib2xlY3RyaWNUZXN0UnVubmVyLmNsYXNzKQor
QENvbmZpZyhtYW5pZmVzdCA9IENvbmZpZy5OT05FKQorcHVibGljIGNsYXNzIENyeXB0b09wdGlv
bnNUZXN0IHsKKyAgLy8gVmFsaWRhdGVzIHRoZSBidWlsZGVyIGJ1aWxkcyBieSBkZWZhdWx0IGFs
bCBmYWxzZSBvcHRpb25zLgorICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0QnVpbGRlckRlZmF1
bHRzQXJlRmFsc2UoKSB7CisgICAgQ3J5cHRvT3B0aW9ucyBjcnlwdG9PcHRpb25zID0gQ3J5cHRv
T3B0aW9ucy5idWlsZGVyKCkuY3JlYXRlQ3J5cHRvT3B0aW9ucygpOworICAgIGFzc2VydFRoYXQo
Y3J5cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKCkpLmlzRmFs
c2UoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUFl
czEyOFNoYTFfMzJDcnlwdG9DaXBoZXIoKSkuaXNGYWxzZSgpOworICAgIGFzc2VydFRoYXQoY3J5
cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9u
cygpKS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNGcmFtZSgp
LmdldFJlcXVpcmVGcmFtZUVuY3J5cHRpb24oKSkuaXNGYWxzZSgpOworICB9CisKKyAgLy8gVmFs
aWRhdGVzIHRoZSBidWlsZGVyIHNldHMgdGhlIGNvcnJlY3QgcGFyYW1ldGVycy4KKyAgQFRlc3QK
KyAgcHVibGljIHZvaWQgdGVzdEJ1aWxkZXJDb3JyZWN0bHlJbml0aWFsaXppbmdHY21DcnlwdG8o
KSB7CisgICAgQ3J5cHRvT3B0aW9ucyBjcnlwdG9PcHRpb25zID0KKyAgICAgICAgQ3J5cHRvT3B0
aW9ucy5idWlsZGVyKCkuc2V0RW5hYmxlR2NtQ3J5cHRvU3VpdGVzKHRydWUpLmNyZWF0ZUNyeXB0
b09wdGlvbnMoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVu
YWJsZUdjbUNyeXB0b1N1aXRlcygpKS5pc1RydWUoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09w
dGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIoKSkuaXNG
YWxzZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxl
RW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucygpKS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0VGhh
dChjcnlwdG9PcHRpb25zLmdldFNGcmFtZSgpLmdldFJlcXVpcmVGcmFtZUVuY3J5cHRpb24oKSku
aXNGYWxzZSgpOworICB9CisKKyAgQFRlc3QKKyAgcHVibGljIHZvaWQgdGVzdEJ1aWxkZXJDb3Jy
ZWN0bHlJbml0aWFsaXppbmdBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKCkgeworICAgIENyeXB0
b09wdGlvbnMgY3J5cHRvT3B0aW9ucyA9CisgICAgICAgIENyeXB0b09wdGlvbnMuYnVpbGRlcigp
LnNldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIodHJ1ZSkuY3JlYXRlQ3J5cHRvT3B0
aW9ucygpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxl
R2NtQ3J5cHRvU3VpdGVzKCkpLmlzRmFsc2UoKTsKKyAgICBhc3NlcnRUaGF0KGNyeXB0b09wdGlv
bnMuZ2V0U3J0cCgpLmdldEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXIoKSkuaXNUcnVl
KCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVFbmNy
eXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zKCkpLmlzRmFsc2UoKTsKKyAgICBhc3NlcnRUaGF0KGNy
eXB0b09wdGlvbnMuZ2V0U0ZyYW1lKCkuZ2V0UmVxdWlyZUZyYW1lRW5jcnlwdGlvbigpKS5pc0Zh
bHNlKCk7CisgIH0KKworICBAVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0QnVpbGRlckNvcnJlY3Rs
eUluaXRpYWxpemluZ0VuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMoKSB7CisgICAgQ3J5cHRv
T3B0aW9ucyBjcnlwdG9PcHRpb25zID0KKyAgICAgICAgQ3J5cHRvT3B0aW9ucy5idWlsZGVyKCku
c2V0RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucyh0cnVlKS5jcmVhdGVDcnlwdG9P
cHRpb25zKCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFi
bGVHY21DcnlwdG9TdWl0ZXMoKSkuaXNGYWxzZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0
aW9ucy5nZXRTcnRwKCkuZ2V0RW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcigpKS5pc0Zh
bHNlKCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5nZXRFbmFibGVF
bmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zKCkpLmlzVHJ1ZSgpOworICAgIGFzc2VydFRoYXQo
Y3J5cHRvT3B0aW9ucy5nZXRTRnJhbWUoKS5nZXRSZXF1aXJlRnJhbWVFbmNyeXB0aW9uKCkpLmlz
RmFsc2UoKTsKKyAgfQorCisgIEBUZXN0CisgIHB1YmxpYyB2b2lkIHRlc3RCdWlsZGVyQ29ycmVj
dGx5SW5pdGlhbGl6aW5nUmVxdWlyZUZyYW1lRW5jcnlwdGlvbigpIHsKKyAgICBDcnlwdG9PcHRp
b25zIGNyeXB0b09wdGlvbnMgPQorICAgICAgICBDcnlwdG9PcHRpb25zLmJ1aWxkZXIoKS5zZXRS
ZXF1aXJlRnJhbWVFbmNyeXB0aW9uKHRydWUpLmNyZWF0ZUNyeXB0b09wdGlvbnMoKTsKKyAgICBh
c3NlcnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUdjbUNyeXB0b1N1aXRl
cygpKS5pc0ZhbHNlKCk7CisgICAgYXNzZXJ0VGhhdChjcnlwdG9PcHRpb25zLmdldFNydHAoKS5n
ZXRFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKCkpLmlzRmFsc2UoKTsKKyAgICBhc3Nl
cnRUaGF0KGNyeXB0b09wdGlvbnMuZ2V0U3J0cCgpLmdldEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRl
ckV4dGVuc2lvbnMoKSkuaXNGYWxzZSgpOworICAgIGFzc2VydFRoYXQoY3J5cHRvT3B0aW9ucy5n
ZXRTRnJhbWUoKS5nZXRSZXF1aXJlRnJhbWVFbmNyeXB0aW9uKCkpLmlzVHJ1ZSgpOworICB9Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy9QZWVyQ29ubmVjdGlvbi9SVENIMjY0UHJvZmlsZUxl
dmVsSWQubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy9QZWVyQ29ubmVjdGlvbi9SVENIMjY0UHJvZmlsZUxldmVs
SWQubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0YTU2ODk0MTdjMjA3MzcyNzhh
OGIyYjAyMmYxMjFmZmU5OTY2MmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvRnJhbWV3b3JrL0NsYXNzZXMvUGVlckNvbm5lY3Rpb24vUlRDSDI2NFByb2ZpbGVMZXZl
bElkLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
MjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCi0gKgot
ICovCi0KLSNpbXBvcnQgIldlYlJUQy9SVENWaWRlb0NvZGVjSDI2NC5oIgotCi0jaW5jbHVkZSAi
bWVkaWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2ZWxfaWQuaCIKLQotQGludGVyZmFjZSBSVENIMjY0
UHJvZmlsZUxldmVsSWQgKCkKLQotQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENIMjY0
UHJvZmlsZSBwcm9maWxlOwotQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENIMjY0TGV2
ZWwgbGV2ZWw7Ci1AcHJvcGVydHkobm9uYXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICpoZXhTdHJp
bmc7Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFJUQ0gyNjRQcm9maWxlTGV2ZWxJZAotCi1A
c3ludGhlc2l6ZSBwcm9maWxlID0gX3Byb2ZpbGU7Ci1Ac3ludGhlc2l6ZSBsZXZlbCA9IF9sZXZl
bDsKLUBzeW50aGVzaXplIGhleFN0cmluZyA9IF9oZXhTdHJpbmc7Ci0KLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEhleFN0cmluZzooTlNTdHJpbmcgKiloZXhTdHJpbmcgewotICBpZiAoc2VsZiA9
IFtzdXBlciBpbml0XSkgewotICAgIHNlbGYuaGV4U3RyaW5nID0gaGV4U3RyaW5nOwotCi0gICAg
YWJzbDo6b3B0aW9uYWw8d2VicnRjOjpIMjY0OjpQcm9maWxlTGV2ZWxJZD4gcHJvZmlsZV9sZXZl
bF9pZCA9Ci0gICAgICAgIHdlYnJ0Yzo6SDI2NDo6UGFyc2VQcm9maWxlTGV2ZWxJZChbaGV4U3Ry
aW5nIGNTdHJpbmdVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7Ci0gICAgaWYg
KHByb2ZpbGVfbGV2ZWxfaWQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgIHNlbGYucHJvZmlsZSA9IHN0
YXRpY19jYXN0PFJUQ0gyNjRQcm9maWxlPihwcm9maWxlX2xldmVsX2lkLT5wcm9maWxlKTsKLSAg
ICAgIHNlbGYubGV2ZWwgPSBzdGF0aWNfY2FzdDxSVENIMjY0TGV2ZWw+KHByb2ZpbGVfbGV2ZWxf
aWQtPmxldmVsKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFByb2ZpbGU6KFJUQ0gyNjRQcm9maWxlKXByb2ZpbGUgbGV2ZWw6KFJUQ0gy
NjRMZXZlbClsZXZlbCB7Ci0gIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgc2VsZi5w
cm9maWxlID0gcHJvZmlsZTsKLSAgICBzZWxmLmxldmVsID0gbGV2ZWw7Ci0KLSAgICBhYnNsOjpv
cHRpb25hbDxzdGQ6OnN0cmluZz4gaGV4X3N0cmluZyA9Ci0gICAgICAgIHdlYnJ0Yzo6SDI2NDo6
UHJvZmlsZUxldmVsSWRUb1N0cmluZyh3ZWJydGM6OkgyNjQ6OlByb2ZpbGVMZXZlbElkKAotICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8d2VicnRjOjpIMjY0OjpQcm9maWxlPihwcm9maWxlKSwgc3Rh
dGljX2Nhc3Q8d2VicnRjOjpIMjY0OjpMZXZlbD4obGV2ZWwpKSk7Ci0gICAgc2VsZi5oZXhTdHJp
bmcgPQotICAgICAgICBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6aGV4X3N0cmluZy52YWx1
ZV9vcigiIikuY19zdHIoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gIH0KLSAg
cmV0dXJuIHNlbGY7Ci19Ci0KLUBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9n
Z2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9hcGkvbG9nZ2luZy9SVENDYWxsYmFja0xvZ2dlci5oCmluZGV4IDQ4NjdiMzFlMzY1Y2MxYjgz
YjQ3YzA5NjY3NzRiNjU1MDQ5ZWVkOGMuLjJiY2UwM2ZlMGY4YWM1ZTA5NDZlMTY5OGZkNWQyN2Vi
ZWUxNWNmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2VyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL2xvZ2dp
bmcvUlRDQ2FsbGJhY2tMb2dnZXIuaApAQCAtMTUsNiArMTUsMTAgQEAKIAogTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KIAordHlwZWRlZiB2b2lkICheUlRDQ2FsbGJhY2tMb2dnZXJNZXNzYWdlSGFu
ZGxlcikoTlNTdHJpbmcgKm1lc3NhZ2UpOwordHlwZWRlZiB2b2lkICheUlRDQ2FsbGJhY2tMb2dn
ZXJNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyKShOU1N0cmluZyAqbWVzc2FnZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRDTG9n
Z2luZ1NldmVyaXR5IHNldmVyaXR5KTsKKwogLy8gVGhpcyBjbGFzcyBpbnRlcmNlcHRzIFdlYlJU
QyBsb2dzIGFuZCBmb3J3YXJkcyB0aGVtIHRvIGEgcmVnaXN0ZXJlZCBibG9jay4KIC8vIFRoaXMg
Y2xhc3MgaXMgbm90IHRocmVhZHNhZmUuCiBSVENfT0JKQ19FWFBPUlQKQEAgLTIzLDEwICsyNywx
MiBAQCBSVENfT0JKQ19FWFBPUlQKIC8vIFRoZSBzZXZlcml0eSBsZXZlbCB0byBjYXB0dXJlLiBU
aGUgZGVmYXVsdCBpcyBrUlRDTG9nZ2luZ1NldmVyaXR5SW5mby4KIEBwcm9wZXJ0eShub25hdG9t
aWMsIGFzc2lnbikgUlRDTG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5OwogCi0vLyBUaGUgY2FsbGJh
Y2sgd2lsbCBiZSBjYWxsZWQgb24gdGhlIHNhbWUgdGhyZWFkIHRoYXQgZG9lcyB0aGUgbG9nZ2lu
Zywgc28KLS8vIGlmIHRoZSBsb2dnaW5nIGNhbGxiYWNrIGNhbiBiZSBzbG93IGl0IG1heSBiZSBh
IGdvb2QgaWRlYSB0byBpbXBsZW1lbnQKLS8vIGRpc3BhdGNoaW5nIHRvIHNvbWUgb3RoZXIgcXVl
dWUuCi0tICh2b2lkKXN0YXJ0OihudWxsYWJsZSB2b2lkICheKShOU1N0cmluZyopKWNhbGxiYWNr
OworLy8gVGhlIGNhbGxiYWNrIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgb24gdGhlIHNhbWUgdGhy
ZWFkIHRoYXQgZG9lcyB0aGUKKy8vIGxvZ2dpbmcsIHNvIGlmIHRoZSBsb2dnaW5nIGNhbGxiYWNr
IGNhbiBiZSBzbG93IGl0IG1heSBiZSBhIGdvb2QgaWRlYQorLy8gdG8gaW1wbGVtZW50IGRpc3Bh
dGNoaW5nIHRvIHNvbWUgb3RoZXIgcXVldWUuCistICh2b2lkKXN0YXJ0OihudWxsYWJsZSBSVEND
YWxsYmFja0xvZ2dlck1lc3NhZ2VIYW5kbGVyKWhhbmRsZXI7CistICh2b2lkKXN0YXJ0V2l0aE1l
c3NhZ2VBbmRTZXZlcml0eUhhbmRsZXI6CisgICAgICAgIChudWxsYWJsZSBSVENDYWxsYmFja0xv
Z2dlck1lc3NhZ2VBbmRTZXZlcml0eUhhbmRsZXIpaGFuZGxlcjsKIAogLSAodm9pZClzdG9wOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvbG9nZ2luZy9SVENDYWxsYmFja0xvZ2dlci5tbSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxi
YWNrTG9nZ2VyLm1tCmluZGV4IDg0NDBkNjM3OTFlZjUyYWQyMjA2MTQyNTc4NWM0ZTQ0ODAwYzQ2
NTAuLjliYmI1MzA0MzQwOWEyN2M1NmE2NGM1YTE3Y2I4NGE5ZGMwZmI4ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9s
b2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2VyLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9sb2dnaW5nL1JUQ0NhbGxiYWNrTG9nZ2Vy
Lm1tCkBAIC0xOCwxMSArMTgsOCBAQAogCiBjbGFzcyBDYWxsYmFja0xvZ1NpbmsgOiBwdWJsaWMg
cnRjOjpMb2dTaW5rIHsKICBwdWJsaWM6Ci0gIENhbGxiYWNrTG9nU2luayh2b2lkICheY2FsbGJh
Y2tIYW5kbGVyKShOU1N0cmluZyAqbWVzc2FnZSkpIHsKLSAgICBjYWxsYmFja19oYW5kbGVyXyA9
IGNhbGxiYWNrSGFuZGxlcjsKLSAgfQotCi0gIH5DYWxsYmFja0xvZ1NpbmsoKSBvdmVycmlkZSB7
IGNhbGxiYWNrX2hhbmRsZXJfID0gbmlsOyB9CisgIENhbGxiYWNrTG9nU2luayhSVENDYWxsYmFj
a0xvZ2dlck1lc3NhZ2VIYW5kbGVyIGNhbGxiYWNrSGFuZGxlcikKKyAgICAgIDogY2FsbGJhY2tf
aGFuZGxlcl8oY2FsbGJhY2tIYW5kbGVyKSB7fQogCiAgIHZvaWQgT25Mb2dNZXNzYWdlKGNvbnN0
IHN0ZDo6c3RyaW5nICZtZXNzYWdlKSBvdmVycmlkZSB7CiAgICAgaWYgKGNhbGxiYWNrX2hhbmRs
ZXJfKSB7CkBAIC0zMSwxMiArMjgsNDcgQEAgY2xhc3MgQ2FsbGJhY2tMb2dTaW5rIDogcHVibGlj
IHJ0Yzo6TG9nU2luayB7CiAgIH0KIAogIHByaXZhdGU6Ci0gIHZvaWQgKF5jYWxsYmFja19oYW5k
bGVyXykoTlNTdHJpbmcgKm1lc3NhZ2UpOworICBSVENDYWxsYmFja0xvZ2dlck1lc3NhZ2VIYW5k
bGVyIGNhbGxiYWNrX2hhbmRsZXJfOworfTsKKworY2xhc3MgQ2FsbGJhY2tXaXRoU2V2ZXJpdHlM
b2dTaW5rIDogcHVibGljIHJ0Yzo6TG9nU2luayB7CisgcHVibGljOgorICBDYWxsYmFja1dpdGhT
ZXZlcml0eUxvZ1NpbmsoUlRDQ2FsbGJhY2tMb2dnZXJNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVy
IGNhbGxiYWNrSGFuZGxlcikKKyAgICAgIDogY2FsbGJhY2tfaGFuZGxlcl8oY2FsbGJhY2tIYW5k
bGVyKSB7fQorCisgIHZvaWQgT25Mb2dNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdl
KSBvdmVycmlkZSB7IFJUQ19OT1RSRUFDSEVEKCk7IH0KKworICB2b2lkIE9uTG9nTWVzc2FnZShj
b25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwgcnRjOjpMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkp
IG92ZXJyaWRlIHsKKyAgICBpZiAoY2FsbGJhY2tfaGFuZGxlcl8pIHsKKyAgICAgIFJUQ0xvZ2dp
bmdTZXZlcml0eSBsb2dnaW5nU2V2ZXJpdHkgPSBOYXRpdmVTZXZlcml0eVRvT2JqY1NldmVyaXR5
KHNldmVyaXR5KTsKKyAgICAgIGNhbGxiYWNrX2hhbmRsZXJfKFtOU1N0cmluZyBzdHJpbmdXaXRo
VVRGOFN0cmluZzptZXNzYWdlLmNfc3RyKCldLCBsb2dnaW5nU2V2ZXJpdHkpOworICAgIH0KKyAg
fQorCisgcHJpdmF0ZToKKyAgc3RhdGljIFJUQ0xvZ2dpbmdTZXZlcml0eSBOYXRpdmVTZXZlcml0
eVRvT2JqY1NldmVyaXR5KHJ0Yzo6TG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5KSB7CisgICAgc3dp
dGNoIChzZXZlcml0eSkgeworICAgICAgY2FzZSBydGM6OkxTX1NFTlNJVElWRToKKyAgICAgICAg
cmV0dXJuIFJUQ0xvZ2dpbmdTZXZlcml0eVNlbnNpdGl2ZTsKKyAgICAgIGNhc2UgcnRjOjpMU19W
RVJCT1NFOgorICAgICAgICByZXR1cm4gUlRDTG9nZ2luZ1NldmVyaXR5VmVyYm9zZTsKKyAgICAg
IGNhc2UgcnRjOjpMU19JTkZPOgorICAgICAgICByZXR1cm4gUlRDTG9nZ2luZ1NldmVyaXR5SW5m
bzsKKyAgICAgIGNhc2UgcnRjOjpMU19XQVJOSU5HOgorICAgICAgICByZXR1cm4gUlRDTG9nZ2lu
Z1NldmVyaXR5V2FybmluZzsKKyAgICAgIGNhc2UgcnRjOjpMU19FUlJPUjoKKyAgICAgICAgcmV0
dXJuIFJUQ0xvZ2dpbmdTZXZlcml0eUVycm9yOworICAgICAgY2FzZSBydGM6OkxTX05PTkU6Cisg
ICAgICAgIHJldHVybiBSVENMb2dnaW5nU2V2ZXJpdHlOb25lOworICAgIH0KKyAgfQorCisgIFJU
Q0NhbGxiYWNrTG9nZ2VyTWVzc2FnZUFuZFNldmVyaXR5SGFuZGxlciBjYWxsYmFja19oYW5kbGVy
XzsKIH07CiAKIEBpbXBsZW1lbnRhdGlvbiBSVENDYWxsYmFja0xvZ2dlciB7CiAgIEJPT0wgX2hh
c1N0YXJ0ZWQ7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxDYWxsYmFja0xvZ1Npbms+IF9sb2dTaW5rOwor
ICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpMb2dTaW5rPiBfbG9nU2luazsKIH0KIAogQHN5bnRoZXNp
emUgc2V2ZXJpdHkgPSBfc2V2ZXJpdHk7CkBAIC01MywxMiArODUsMjQgQEAgLSAodm9pZClkZWFs
bG9jIHsKICAgW3NlbGYgc3RvcF07CiB9CiAKLS0gKHZvaWQpc3RhcnQ6KG51bGxhYmxlIHZvaWQg
KF4pKE5TU3RyaW5nICopKWNhbGxiYWNrIHsKKy0gKHZvaWQpc3RhcnQ6KG51bGxhYmxlIFJUQ0Nh
bGxiYWNrTG9nZ2VyTWVzc2FnZUhhbmRsZXIpaGFuZGxlciB7CisgIGlmIChfaGFzU3RhcnRlZCkg
eworICAgIHJldHVybjsKKyAgfQorCisgIF9sb2dTaW5rLnJlc2V0KG5ldyBDYWxsYmFja0xvZ1Np
bmsoaGFuZGxlcikpOworCisgIHJ0Yzo6TG9nTWVzc2FnZTo6QWRkTG9nVG9TdHJlYW0oX2xvZ1Np
bmsuZ2V0KCksIFtzZWxmIHJ0Y1NldmVyaXR5XSk7CisgIF9oYXNTdGFydGVkID0gWUVTOworfQor
CistICh2b2lkKXN0YXJ0V2l0aE1lc3NhZ2VBbmRTZXZlcml0eUhhbmRsZXI6CisgICAgICAgIChu
dWxsYWJsZSBSVENDYWxsYmFja0xvZ2dlck1lc3NhZ2VBbmRTZXZlcml0eUhhbmRsZXIpaGFuZGxl
ciB7CiAgIGlmIChfaGFzU3RhcnRlZCkgewogICAgIHJldHVybjsKICAgfQogCi0gIF9sb2dTaW5r
LnJlc2V0KG5ldyBDYWxsYmFja0xvZ1NpbmsoY2FsbGJhY2spKTsKKyAgX2xvZ1NpbmsucmVzZXQo
bmV3IENhbGxiYWNrV2l0aFNldmVyaXR5TG9nU2luayhoYW5kbGVyKSk7CiAKICAgcnRjOjpMb2dN
ZXNzYWdlOjpBZGRMb2dUb1N0cmVhbShfbG9nU2luay5nZXQoKSwgW3NlbGYgcnRjU2V2ZXJpdHld
KTsKICAgX2hhc1N0YXJ0ZWQgPSBZRVM7CkBAIC03OCw2ICsxMjIsOCBAQCAtICh2b2lkKXN0b3Ag
ewogCiAtIChydGM6OkxvZ2dpbmdTZXZlcml0eSlydGNTZXZlcml0eSB7CiAgIHN3aXRjaCAoX3Nl
dmVyaXR5KSB7CisgICAgY2FzZSBSVENMb2dnaW5nU2V2ZXJpdHlTZW5zaXRpdmU6CisgICAgICBy
ZXR1cm4gcnRjOjpMU19TRU5TSVRJVkU7CiAgICAgY2FzZSBSVENMb2dnaW5nU2V2ZXJpdHlWZXJi
b3NlOgogICAgICAgcmV0dXJuIHJ0Yzo6TFNfVkVSQk9TRTsKICAgICBjYXNlIFJUQ0xvZ2dpbmdT
ZXZlcml0eUluZm86CkBAIC04Niw2ICsxMzIsOCBAQCAtIChydGM6OkxvZ2dpbmdTZXZlcml0eSly
dGNTZXZlcml0eSB7CiAgICAgICByZXR1cm4gcnRjOjpMU19XQVJOSU5HOwogICAgIGNhc2UgUlRD
TG9nZ2luZ1NldmVyaXR5RXJyb3I6CiAgICAgICByZXR1cm4gcnRjOjpMU19FUlJPUjsKKyAgICBj
YXNlIFJUQ0xvZ2dpbmdTZXZlcml0eU5vbmU6CisgICAgICByZXR1cm4gcnRjOjpMU19OT05FOwog
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENDb25maWd1cmF0aW9uLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVl
cmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5oCmluZGV4IDlmYjhiNGRmMzU5MWQ3YTY3YTE1
ZDc0ZWE5ZTE3NWE1ZWFjMGJmOGEuLmY5ZTZlZGZkOTc0MTVhODIxOTBiMzc5Mzk5OWIzMTdlMDdk
MjU3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENDb25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3Bl
ZXJjb25uZWN0aW9uL1JUQ0NvbmZpZ3VyYXRpb24uaApAQCAtMTEsNiArMTEsNyBAQAogI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKICNpbXBvcnQgIlJUQ0NlcnRpZmljYXRlLmgi
CisjaW1wb3J0ICJSVENDcnlwdG9PcHRpb25zLmgiCiAjaW1wb3J0ICJSVENNYWNyb3MuaCIKIAog
QGNsYXNzIFJUQ0ljZVNlcnZlcjsKQEAgLTkxLDYgKzkyLDE5IEBAIFJUQ19PQkpDX0VYUE9SVAog
QHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENDYW5kaWRhdGVOZXR3b3JrUG9saWN5IGNh
bmRpZGF0ZU5ldHdvcmtQb2xpY3k7CiBAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIFJUQ0Nv
bnRpbnVhbEdhdGhlcmluZ1BvbGljeSBjb250aW51YWxHYXRoZXJpbmdQb2xpY3k7CiAKKy8qKiBJ
ZiBzZXQgdG8gWUVTLCBkb24ndCBnYXRoZXIgSVB2NiBJQ0UgY2FuZGlkYXRlcy4KKyAqICBEZWZh
dWx0IGlzIE5PLgorICovCitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgZGlzYWJs
ZUlQVjY7CisKKy8qKiBJZiBzZXQgdG8gWUVTLCBkb24ndCBnYXRoZXIgSVB2NiBJQ0UgY2FuZGlk
YXRlcyBvbiBXaS1GaS4KKyAqICBPbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgb24gc3BlY2lmaWMg
ZGV2aWNlcy4gQ2VydGFpbiBwaG9uZXMgZGlzYWJsZSBJUHY2CisgKiAgd2hlbiB0aGUgc2NyZWVu
IGlzIHR1cm5lZCBvZmYgYW5kIGl0IHdvdWxkIGJlIGJldHRlciB0byBqdXN0IGRpc2FibGUgdGhl
CisgKiAgSVB2NiBJQ0UgY2FuZGlkYXRlcyBvbiBXaS1GaSBpbiB0aG9zZSBjYXNlcy4KKyAqICBE
ZWZhdWx0IGlzIE5PLgorICovCitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgZGlz
YWJsZUlQVjZPbldpRmk7CisKIC8qKiBCeSBkZWZhdWx0LCB0aGUgUGVlckNvbm5lY3Rpb24gd2ls
bCB1c2UgYSBsaW1pdGVkIG51bWJlciBvZiBJUHY2IG5ldHdvcmsKICAqICBpbnRlcmZhY2VzLCBp
biBvcmRlciB0byBhdm9pZCB0b28gbWFueSBJQ0UgY2FuZGlkYXRlIHBhaXJzIGJlaW5nIGNyZWF0
ZWQKICAqICBhbmQgZGVsYXlpbmcgSUNFIGNvbXBsZXRpb24uCkBAIC0xNjgsNiArMTgyLDM1IEBA
IFJUQ19PQkpDX0VYUE9SVAogICovCiBAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wg
YWN0aXZlUmVzZXRTcnRwUGFyYW1zOwogCisvKioKKyAqIElmIE1lZGlhVHJhbnNwb3J0RmFjdG9y
eSBpcyBwcm92aWRlZCBpbiBQZWVyQ29ubmVjdGlvbkZhY3RvcnksIHRoaXMgZmxhZyBpbmZvcm1z
IFBlZXJDb25uZWN0aW9uCisgKiB0aGF0IGl0IHNob3VsZCB1c2UgdGhlIE1lZGlhVHJhbnNwb3J0
SW50ZXJmYWNlLgorICovCitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgdXNlTWVk
aWFUcmFuc3BvcnQ7CisKKy8qKgorICogSWYgTWVkaWFUcmFuc3BvcnRGYWN0b3J5IGlzIHByb3Zp
ZGVkIGluIFBlZXJDb25uZWN0aW9uRmFjdG9yeSwgdGhpcyBmbGFnIGluZm9ybXMgUGVlckNvbm5l
Y3Rpb24KKyAqIHRoYXQgaXQgc2hvdWxkIHVzZSB0aGUgTWVkaWFUcmFuc3BvcnRJbnRlcmZhY2Ug
Zm9yIGRhdGEgY2hhbm5lbHMuCisgKi8KK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgQk9P
TCB1c2VNZWRpYVRyYW5zcG9ydEZvckRhdGFDaGFubmVsczsKKworLyoqCisgKiBEZWZpbmVzIGFk
dmFuY2VkIG9wdGlvbmFsIGNyeXB0b2dyYXBoaWMgc2V0dGluZ3MgcmVsYXRlZCB0byBTUlRQIGFu
ZAorICogZnJhbWUgZW5jcnlwdGlvbiBmb3IgbmF0aXZlIFdlYlJUQy4gU2V0dGluZyB0aGlzIHdp
bGwgb3ZlcndyaXRlIGFueQorICogb3B0aW9ucyBzZXQgdGhyb3VnaCB0aGUgUGVlckNvbm5lY3Rp
b25GYWN0b3J5ICh3aGljaCBpcyBkZXByZWNhdGVkKS4KKyAqLworQHByb3BlcnR5KG5vbmF0b21p
YywgbnVsbGFibGUpIFJUQ0NyeXB0b09wdGlvbnMgKmNyeXB0b09wdGlvbnM7CisKKy8qKgorICog
VGltZSBpbnRlcnZhbCBiZXR3ZWVuIGF1ZGlvIFJUQ1AgcmVwb3J0cy4KKyAqLworQHByb3BlcnR5
KG5vbmF0b21pYywgYXNzaWduKSBpbnQgcnRjcEF1ZGlvUmVwb3J0SW50ZXJ2YWxNczsKKworLyoq
CisgKiBUaW1lIGludGVydmFsIGJldHdlZW4gdmlkZW8gUlRDUCByZXBvcnRzLgorICovCitAcHJv
cGVydHkobm9uYXRvbWljLCBhc3NpZ24pIGludCBydGNwVmlkZW9SZXBvcnRJbnRlcnZhbE1zOwor
CiAtIChpbnN0YW5jZXR5cGUpaW5pdDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9u
L1JUQ0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5tbQpp
bmRleCA3M2EwZmE5YWE1ZmQ4MGRiNGNkMjdjZDI5M2I2NTBiN2I4MDA2OTVmLi40MDQxZjgzOTlm
YzhiMzU1NjdjYmQ5ODlhMjU0MjdlZWI0YmExZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24v
UlRDQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ29uZmlndXJhdGlvbi5t
bQpAQCAtMzEsNiArMzEsOCBAQCBAc3ludGhlc2l6ZSBydGNwTXV4UG9saWN5ID0gX3J0Y3BNdXhQ
b2xpY3k7CiBAc3ludGhlc2l6ZSB0Y3BDYW5kaWRhdGVQb2xpY3kgPSBfdGNwQ2FuZGlkYXRlUG9s
aWN5OwogQHN5bnRoZXNpemUgY2FuZGlkYXRlTmV0d29ya1BvbGljeSA9IF9jYW5kaWRhdGVOZXR3
b3JrUG9saWN5OwogQHN5bnRoZXNpemUgY29udGludWFsR2F0aGVyaW5nUG9saWN5ID0gX2NvbnRp
bnVhbEdhdGhlcmluZ1BvbGljeTsKK0BzeW50aGVzaXplIGRpc2FibGVJUFY2ID0gX2Rpc2FibGVJ
UFY2OworQHN5bnRoZXNpemUgZGlzYWJsZUlQVjZPbldpRmkgPSBfZGlzYWJsZUlQVjZPbldpRmk7
CiBAc3ludGhlc2l6ZSBtYXhJUHY2TmV0d29ya3MgPSBfbWF4SVB2Nk5ldHdvcmtzOwogQHN5bnRo
ZXNpemUgZGlzYWJsZUxpbmtMb2NhbE5ldHdvcmtzID0gX2Rpc2FibGVMaW5rTG9jYWxOZXR3b3Jr
czsKIEBzeW50aGVzaXplIGF1ZGlvSml0dGVyQnVmZmVyTWF4UGFja2V0cyA9IF9hdWRpb0ppdHRl
ckJ1ZmZlck1heFBhY2tldHM7CkBAIC00OCw2ICs1MCwxMSBAQCBAc3ludGhlc2l6ZSBpY2VSZWdh
dGhlckludGVydmFsUmFuZ2UgPSBfaWNlUmVnYXRoZXJJbnRlcnZhbFJhbmdlOwogQHN5bnRoZXNp
emUgc2RwU2VtYW50aWNzID0gX3NkcFNlbWFudGljczsKIEBzeW50aGVzaXplIHR1cm5DdXN0b21p
emVyID0gX3R1cm5DdXN0b21pemVyOwogQHN5bnRoZXNpemUgYWN0aXZlUmVzZXRTcnRwUGFyYW1z
ID0gX2FjdGl2ZVJlc2V0U3J0cFBhcmFtczsKK0BzeW50aGVzaXplIHVzZU1lZGlhVHJhbnNwb3J0
ID0gX3VzZU1lZGlhVHJhbnNwb3J0OworQHN5bnRoZXNpemUgdXNlTWVkaWFUcmFuc3BvcnRGb3JE
YXRhQ2hhbm5lbHMgPSBfdXNlTWVkaWFUcmFuc3BvcnRGb3JEYXRhQ2hhbm5lbHM7CitAc3ludGhl
c2l6ZSBjcnlwdG9PcHRpb25zID0gX2NyeXB0b09wdGlvbnM7CitAc3ludGhlc2l6ZSBydGNwQXVk
aW9SZXBvcnRJbnRlcnZhbE1zID0gX3J0Y3BBdWRpb1JlcG9ydEludGVydmFsTXM7CitAc3ludGhl
c2l6ZSBydGNwVmlkZW9SZXBvcnRJbnRlcnZhbE1zID0gX3J0Y3BWaWRlb1JlcG9ydEludGVydmFs
TXM7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0IHsKICAgLy8gQ29weSBkZWZhdWx0cy4KQEAgLTg2
LDYgKzkzLDggQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlQ29uZmlndXJhdGlvbjoK
ICAgICBjb25maWcuY29udGludWFsX2dhdGhlcmluZ19wb2xpY3k7CiAgICAgX2NvbnRpbnVhbEdh
dGhlcmluZ1BvbGljeSA9CiAgICAgICAgIFtbc2VsZiBjbGFzc10gY29udGludWFsR2F0aGVyaW5n
UG9saWN5Rm9yTmF0aXZlUG9saWN5Om5hdGl2ZVBvbGljeV07CisgICAgX2Rpc2FibGVJUFY2ID0g
Y29uZmlnLmRpc2FibGVfaXB2NjsKKyAgICBfZGlzYWJsZUlQVjZPbldpRmkgPSBjb25maWcuZGlz
YWJsZV9pcHY2X29uX3dpZmk7CiAgICAgX21heElQdjZOZXR3b3JrcyA9IGNvbmZpZy5tYXhfaXB2
Nl9uZXR3b3JrczsKICAgICBfZGlzYWJsZUxpbmtMb2NhbE5ldHdvcmtzID0gY29uZmlnLmRpc2Fi
bGVfbGlua19sb2NhbF9uZXR3b3JrczsKICAgICBfYXVkaW9KaXR0ZXJCdWZmZXJNYXhQYWNrZXRz
ID0gY29uZmlnLmF1ZGlvX2ppdHRlcl9idWZmZXJfbWF4X3BhY2tldHM7CkBAIC05Myw2ICsxMDIs
OCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOYXRpdmVDb25maWd1cmF0aW9uOgogICAgIF9p
Y2VDb25uZWN0aW9uUmVjZWl2aW5nVGltZW91dCA9IGNvbmZpZy5pY2VfY29ubmVjdGlvbl9yZWNl
aXZpbmdfdGltZW91dDsKICAgICBfaWNlQmFja3VwQ2FuZGlkYXRlUGFpclBpbmdJbnRlcnZhbCA9
CiAgICAgICAgIGNvbmZpZy5pY2VfYmFja3VwX2NhbmRpZGF0ZV9wYWlyX3BpbmdfaW50ZXJ2YWw7
CisgICAgX3VzZU1lZGlhVHJhbnNwb3J0ID0gY29uZmlnLnVzZV9tZWRpYV90cmFuc3BvcnQ7Cisg
ICAgX3VzZU1lZGlhVHJhbnNwb3J0Rm9yRGF0YUNoYW5uZWxzID0gY29uZmlnLnVzZV9tZWRpYV90
cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHM7CiAgICAgX2tleVR5cGUgPSBSVENFbmNyeXB0aW9u
S2V5VHlwZUVDRFNBOwogICAgIF9pY2VDYW5kaWRhdGVQb29sU2l6ZSA9IGNvbmZpZy5pY2VfY2Fu
ZGlkYXRlX3Bvb2xfc2l6ZTsKICAgICBfc2hvdWxkUHJ1bmVUdXJuUG9ydHMgPSBjb25maWcucHJ1
bmVfdHVybl9wb3J0czsKQEAgLTExMCwxNCArMTIxLDI3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aE5hdGl2ZUNvbmZpZ3VyYXRpb246CiAgICAgX3NkcFNlbWFudGljcyA9IFtbc2VsZiBjbGFz
c10gc2RwU2VtYW50aWNzRm9yTmF0aXZlU2RwU2VtYW50aWNzOmNvbmZpZy5zZHBfc2VtYW50aWNz
XTsKICAgICBfdHVybkN1c3RvbWl6ZXIgPSBjb25maWcudHVybl9jdXN0b21pemVyOwogICAgIF9h
Y3RpdmVSZXNldFNydHBQYXJhbXMgPSBjb25maWcuYWN0aXZlX3Jlc2V0X3NydHBfcGFyYW1zOwor
ICAgIGlmIChjb25maWcuY3J5cHRvX29wdGlvbnMpIHsKKyAgICAgIF9jcnlwdG9PcHRpb25zID0g
W1tSVENDcnlwdG9PcHRpb25zIGFsbG9jXQorICAgICAgICAgICAgICAgaW5pdFdpdGhTcnRwRW5h
YmxlR2NtQ3J5cHRvU3VpdGVzOmNvbmZpZy5jcnlwdG9fb3B0aW9ucy0+c3J0cAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZW5hYmxlX2djbV9j
cnlwdG9fc3VpdGVzCisgICAgICAgICAgICAgc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9D
aXBoZXI6Y29uZmlnLmNyeXB0b19vcHRpb25zLT5zcnRwCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5
cHRvX2NpcGhlcgorICAgICAgICAgIHNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNp
b25zOmNvbmZpZy5jcnlwdG9fb3B0aW9ucy0+c3J0cAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZW5hYmxlX2VuY3J5cHRlZF9ydHBfaGVhZGVy
X2V4dGVuc2lvbnMKKyAgICAgICAgICAgICAgICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlw
dGlvbjpjb25maWcuY3J5cHRvX29wdGlvbnMtPnNmcmFtZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9u
XTsKKyAgICB9CisgICAgX3J0Y3BBdWRpb1JlcG9ydEludGVydmFsTXMgPSBjb25maWcuYXVkaW9f
cnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMoKTsKKyAgICBfcnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxN
cyA9IGNvbmZpZy52aWRlb19ydGNwX3JlcG9ydF9pbnRlcnZhbF9tcygpOwogICB9CiAgIHJldHVy
biBzZWxmOwogfQogCiAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uIHsKLSAgc3RhdGljIE5TU3Ry
aW5nICpmb3JtYXRTdHJpbmcgPQotICAgICAgQCJSVENDb25maWd1cmF0aW9uOiAiCi0gICAgICBA
IntcbiVAXG4lQFxuJUBcbiVAXG4lQFxuJUBcbiVAXG4lQFxuJWRcbiVkXG4lZFxuJWRcbiVkXG4l
ZFxuJWRcbiVAXG4lQFxuJWRcbiVkXG4lZFxufVxuIjsKKyAgc3RhdGljIE5TU3RyaW5nICpmb3Jt
YXRTdHJpbmcgPSBAIlJUQ0NvbmZpZ3VyYXRpb246ICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBAIntcbiVAXG4lQFxuJUBcbiVAXG4lQFxuJUBcbiVAXG4lQFxuJWRcbiVkXG4l
ZFxuJWRcbiVkXG4lZFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiJWRc
biVAXG4lQFxuJWRcbiVkXG4lZFxuJWRcbiVkXG4lQFxufVxuIjsKIAogICByZXR1cm4gW05TU3Ry
aW5nCiAgICAgICBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdFN0cmluZywKQEAgLTEzOSw4ICsxNjMs
MTEgQEAgLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbiB7CiAgICAgICAgICAgICAgICAgICAgICAg
IF9pY2VDaGVja01pbkludGVydmFsLAogICAgICAgICAgICAgICAgICAgICAgICBfaWNlUmVnYXRo
ZXJJbnRlcnZhbFJhbmdlLAogICAgICAgICAgICAgICAgICAgICAgICBfZGlzYWJsZUxpbmtMb2Nh
bE5ldHdvcmtzLAorICAgICAgICAgICAgICAgICAgICAgICBfZGlzYWJsZUlQVjYsCisgICAgICAg
ICAgICAgICAgICAgICAgIF9kaXNhYmxlSVBWNk9uV2lGaSwKICAgICAgICAgICAgICAgICAgICAg
ICAgX21heElQdjZOZXR3b3JrcywKLSAgICAgICAgICAgICAgICAgICAgICAgX2FjdGl2ZVJlc2V0
U3J0cFBhcmFtc107CisgICAgICAgICAgICAgICAgICAgICAgIF9hY3RpdmVSZXNldFNydHBQYXJh
bXMsCisgICAgICAgICAgICAgICAgICAgICAgIF91c2VNZWRpYVRyYW5zcG9ydF07CiB9CiAKICNw
cmFnbWEgbWFyayAtIFByaXZhdGUKQEAgLTE2Niw2ICsxOTMsOCBAQCAtICh3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uICopCiAgICAgICBuYXRpdmVDYW5k
aWRhdGVOZXR3b3JrUG9saWN5Rm9yUG9saWN5Ol9jYW5kaWRhdGVOZXR3b3JrUG9saWN5XTsKICAg
bmF0aXZlQ29uZmlnLT5jb250aW51YWxfZ2F0aGVyaW5nX3BvbGljeSA9IFtbc2VsZiBjbGFzc10K
ICAgICAgIG5hdGl2ZUNvbnRpbnVhbEdhdGhlcmluZ1BvbGljeUZvclBvbGljeTpfY29udGludWFs
R2F0aGVyaW5nUG9saWN5XTsKKyAgbmF0aXZlQ29uZmlnLT5kaXNhYmxlX2lwdjYgPSBfZGlzYWJs
ZUlQVjY7CisgIG5hdGl2ZUNvbmZpZy0+ZGlzYWJsZV9pcHY2X29uX3dpZmkgPSBfZGlzYWJsZUlQ
VjZPbldpRmk7CiAgIG5hdGl2ZUNvbmZpZy0+bWF4X2lwdjZfbmV0d29ya3MgPSBfbWF4SVB2Nk5l
dHdvcmtzOwogICBuYXRpdmVDb25maWctPmRpc2FibGVfbGlua19sb2NhbF9uZXR3b3JrcyA9IF9k
aXNhYmxlTGlua0xvY2FsTmV0d29ya3M7CiAgIG5hdGl2ZUNvbmZpZy0+YXVkaW9faml0dGVyX2J1
ZmZlcl9tYXhfcGFja2V0cyA9IF9hdWRpb0ppdHRlckJ1ZmZlck1heFBhY2tldHM7CkBAIC0xNzUs
NiArMjA0LDggQEAgLSAod2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmln
dXJhdGlvbiAqKQogICAgICAgX2ljZUNvbm5lY3Rpb25SZWNlaXZpbmdUaW1lb3V0OwogICBuYXRp
dmVDb25maWctPmljZV9iYWNrdXBfY2FuZGlkYXRlX3BhaXJfcGluZ19pbnRlcnZhbCA9CiAgICAg
ICBfaWNlQmFja3VwQ2FuZGlkYXRlUGFpclBpbmdJbnRlcnZhbDsKKyAgbmF0aXZlQ29uZmlnLT51
c2VfbWVkaWFfdHJhbnNwb3J0ID0gX3VzZU1lZGlhVHJhbnNwb3J0OworICBuYXRpdmVDb25maWct
PnVzZV9tZWRpYV90cmFuc3BvcnRfZm9yX2RhdGFfY2hhbm5lbHMgPSBfdXNlTWVkaWFUcmFuc3Bv
cnRGb3JEYXRhQ2hhbm5lbHM7CiAgIHJ0Yzo6S2V5VHlwZSBrZXlUeXBlID0KICAgICAgIFtbc2Vs
ZiBjbGFzc10gbmF0aXZlRW5jcnlwdGlvbktleVR5cGVGb3JLZXlUeXBlOl9rZXlUeXBlXTsKICAg
aWYgKF9jZXJ0aWZpY2F0ZSAhPSBudWxscHRyKSB7CkBAIC0yMjIsNiArMjUzLDIwIEBAIC0gKHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gKikKICAgICBu
YXRpdmVDb25maWctPnR1cm5fY3VzdG9taXplciA9IF90dXJuQ3VzdG9taXplcjsKICAgfQogICBu
YXRpdmVDb25maWctPmFjdGl2ZV9yZXNldF9zcnRwX3BhcmFtcyA9IF9hY3RpdmVSZXNldFNydHBQ
YXJhbXMgPyB0cnVlIDogZmFsc2U7CisgIGlmIChfY3J5cHRvT3B0aW9ucykgeworICAgIHdlYnJ0
Yzo6Q3J5cHRvT3B0aW9ucyBuYXRpdmVDcnlwdG9PcHRpb25zOworICAgIG5hdGl2ZUNyeXB0b09w
dGlvbnMuc3J0cC5lbmFibGVfZ2NtX2NyeXB0b19zdWl0ZXMgPQorICAgICAgICBfY3J5cHRvT3B0
aW9ucy5zcnRwRW5hYmxlR2NtQ3J5cHRvU3VpdGVzID8gdHJ1ZSA6IGZhbHNlOworICAgIG5hdGl2
ZUNyeXB0b09wdGlvbnMuc3J0cC5lbmFibGVfYWVzMTI4X3NoYTFfMzJfY3J5cHRvX2NpcGhlciA9
CisgICAgICAgIF9jcnlwdG9PcHRpb25zLnNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lw
aGVyID8gdHJ1ZSA6IGZhbHNlOworICAgIG5hdGl2ZUNyeXB0b09wdGlvbnMuc3J0cC5lbmFibGVf
ZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyA9CisgICAgICAgIF9jcnlwdG9PcHRpb25z
LnNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zID8gdHJ1ZSA6IGZhbHNlOwor
ICAgIG5hdGl2ZUNyeXB0b09wdGlvbnMuc2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbiA9
CisgICAgICAgIF9jcnlwdG9PcHRpb25zLnNmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb24gPyB0
cnVlIDogZmFsc2U7CisgICAgbmF0aXZlQ29uZmlnLT5jcnlwdG9fb3B0aW9ucyA9IGFic2w6Om9w
dGlvbmFsPHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucz4obmF0aXZlQ3J5cHRvT3B0aW9ucyk7CisgIH0K
KyAgbmF0aXZlQ29uZmlnLT5zZXRfYXVkaW9fcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMoX3J0Y3BB
dWRpb1JlcG9ydEludGVydmFsTXMpOworICBuYXRpdmVDb25maWctPnNldF92aWRlb19ydGNwX3Jl
cG9ydF9pbnRlcnZhbF9tcyhfcnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxNcyk7CiAgIHJldHVybiBu
YXRpdmVDb25maWcucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRD
Q3J5cHRvT3B0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlvbnMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNDY1YmI1YTczYmRmYjhlMzdmODgyNTE0YTljYjE2OTZjMDNjZmNiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NyeXB0b09wdGlvbnMuaApAQCAtMCwwICsxLDYzIEBA
CisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
KworI2ltcG9ydCAiUlRDTWFjcm9zLmgiCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKKy8q
KgorICogT2JqZWN0aXZlLUMgYmluZGluZ3MgZm9yIHdlYnJ0Yzo6Q3J5cHRvT3B0aW9ucy4gVGhp
cyBBUEkgaGFkIHRvIGJlIGZsYXR0ZW5lZAorICogYXMgT2JqZWN0aXZlLUMgZG9lc24ndCBzdXBw
b3J0IG5lc3RlZCBzdHJ1Y3R1cmVzLgorICovCitSVENfT0JKQ19FWFBPUlQKK0BpbnRlcmZhY2Ug
UlRDQ3J5cHRvT3B0aW9ucyA6IE5TT2JqZWN0CisKKy8qKgorICogRW5hYmxlIEdDTSBjcnlwdG8g
c3VpdGVzIGZyb20gUkZDIDc3MTQgZm9yIFNSVFAuIEdDTSB3aWxsIG9ubHkgYmUgdXNlZAorICog
aWYgYm90aCBzaWRlcyBlbmFibGUgaXQKKyAqLworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWdu
KSBCT09MIHNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXM7CisvKioKKyAqIElmIHNldCB0byB0cnVl
LCB0aGUgKHBvdGVudGlhbGx5IGluc2VjdXJlKSBjcnlwdG8gY2lwaGVyCisgKiBTUlRQX0FFUzEy
OF9DTV9TSEExXzMyIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGNp
cGhlcnMKKyAqIGR1cmluZyBuZWdvdGlhdGlvbi4gSXQgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYm90
aCBwZWVycyBzdXBwb3J0IGl0IGFuZCBubworICogb3RoZXIgY2lwaGVycyBnZXQgcHJlZmVycmVk
LgorICovCitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgc3J0cEVuYWJsZUFlczEy
OFNoYTFfMzJDcnlwdG9DaXBoZXI7CisvKioKKyAqIElmIHNldCB0byB0cnVlLCBlbmNyeXB0ZWQg
UlRQIGhlYWRlciBleHRlbnNpb25zIGFzIGRlZmluZWQgaW4gUkZDIDY5MDQKKyAqIHdpbGwgYmUg
bmVnb3RpYXRlZC4gVGhleSB3aWxsIG9ubHkgYmUgdXNlZCBpZiBib3RoIHBlZXJzIHN1cHBvcnQg
dGhlbS4KKyAqLworQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09MIHNydHBFbmFibGVF
bmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zOworCisvKioKKyAqIElmIHNldCBhbGwgUnRwU2Vu
ZGVycyBtdXN0IGhhdmUgYW4gRnJhbWVFbmNyeXB0b3IgYXR0YWNoZWQgdG8gdGhlbSBiZWZvcmUK
KyAqIHRoZXkgYXJlIGFsbG93ZWQgdG8gc2VuZCBwYWNrZXRzLiBBbGwgUnRwUmVjZWl2ZXJzIG11
c3QgaGF2ZSBhCisgKiBGcmFtZURlY3J5cHRvciBhdHRhY2hlZCB0byB0aGVtIGJlZm9yZSB0aGV5
IGFyZSBhYmxlIHRvIHJlY2VpdmUgcGFja2V0cy4KKyAqLworQHByb3BlcnR5KG5vbmF0b21pYywg
YXNzaWduKSBCT09MIHNmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb247CisKKy8qKgorICogSW5p
dGlhbGl6ZXMgQ3J5cHRvT3B0aW9ucyB3aXRoIGFsbCBwb3NzaWJsZSBvcHRpb25zIHNldCBleHBs
aWNpdGx5LiBUaGlzCisgKiBpcyBkb25lIHdoZW4gY29udmVydGluZyBmcm9tIGEgbmF0aXZlIFJU
Q0NvbmZpZ3VyYXRpb24uY3J5cHRvX29wdGlvbnMuCisgKi8KKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXM6KEJPT0wpc3J0cEVuYWJsZUdjbUNyeXB0b1N1
aXRlcworICAgICAgICAgICAgICBzcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjoo
Qk9PTClzcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcgorICAgICAgICAgICBzcnRw
RW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczooQk9PTClzcnRwRW5hYmxlRW5jcnlw
dGVkUnRwSGVhZGVyRXh0ZW5zaW9ucworICAgICAgICAgICAgICAgICAgICAgc2ZyYW1lUmVxdWly
ZUZyYW1lRW5jcnlwdGlvbjooQk9PTClzZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uCisgICAg
TlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKKworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5B
VkFJTEFCTEU7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVl
cmNvbm5lY3Rpb24vUlRDQ3J5cHRvT3B0aW9ucy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENDcnlwdG9P
cHRpb25zLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwNTlmNzU1OTk0ZTc0MzAzMDMyMWRhNWYyZTA0MzJmMGIy
MTFmZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDQ3J5cHRvT3B0aW9ucy5t
bQpAQCAtMCwwICsxLDMzIEBACisvKgorICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJv
amVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhhdCBj
YW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNl
CisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdy
YW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0
aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxl
IGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW1wb3J0ICJSVENDcnlw
dG9PcHRpb25zLmgiCisKK0BpbXBsZW1lbnRhdGlvbiBSVENDcnlwdG9PcHRpb25zCisKK0BzeW50
aGVzaXplIHNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXMgPSBfc3J0cEVuYWJsZUdjbUNyeXB0b1N1
aXRlczsKK0BzeW50aGVzaXplIHNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyID0g
X3NydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOworQHN5bnRoZXNpemUgc3J0cEVu
YWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMgPSBfc3J0cEVuYWJsZUVuY3J5cHRlZFJ0
cEhlYWRlckV4dGVuc2lvbnM7CitAc3ludGhlc2l6ZSBzZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0
aW9uID0gX3NmcmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb247CisKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXM6KEJPT0wpc3J0cEVuYWJsZUdjbUNyeXB0
b1N1aXRlcworICAgICAgICAgICAgICBzcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhl
cjooQk9PTClzcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcgorICAgICAgICAgICBz
cnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczooQk9PTClzcnRwRW5hYmxlRW5j
cnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucworICAgICAgICAgICAgICAgICAgICAgc2ZyYW1lUmVx
dWlyZUZyYW1lRW5jcnlwdGlvbjooQk9PTClzZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uIHsK
KyAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICBfc3J0cEVuYWJsZUdjbUNyeXB0b1N1
aXRlcyA9IHNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXM7CisgICAgX3NydHBFbmFibGVBZXMxMjhT
aGExXzMyQ3J5cHRvQ2lwaGVyID0gc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7
CisgICAgX3NydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zID0gc3J0cEVuYWJs
ZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnM7CisgICAgX3NmcmFtZVJlcXVpcmVGcmFtZUVu
Y3J5cHRpb24gPSBzZnJhbWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uOworICB9CisgIHJldHVybiBz
ZWxmOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdl
K1ByaXZhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5oCmluZGV4
IDFiMTI1ZjEwMzlhMjJmMjI5ZjA5MmI5YTc2Y2YzNDJiMDhjNmJjNDEuLmM3N2E3YWQ4NWQ3YmI3
YThkYmI1ZjBhOGNkNzEwOTU3N2Q1ODJlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENF
bmNvZGVkSW1hZ2UrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2Ur
UHJpdmF0ZS5oCkBAIC0xMCw3ICsxMCw3IEBACiAKICNpbXBvcnQgImJhc2UvUlRDRW5jb2RlZElt
YWdlLmgiCiAKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgor
I2luY2x1ZGUgImFwaS92aWRlby9lbmNvZGVkX2ltYWdlLmgiCiAKIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0
ZS5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbQppbmRleCA5NGNi
MWYxMTBmOTZjZjAzY2Q1MWFkN2JlZDQ1MGUxNWI4MjE4OTQ3Li5mOTkwMWJkMzI3ZThmMjRiY2Yw
YmYxNzZiMDA0ZmY5ZTFhZjVhNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2Rl
ZEltYWdlK1ByaXZhdGUubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2
YXRlLm1tCkBAIC0zNSw3ICszNSw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZUVu
Y29kZWRJbWFnZTood2VicnRjOjpFbmNvZGVkSW1hZ2UpZW5jb2RlZEltYWdlIHsKICAgICBzZWxm
LmNvbnRlbnRUeXBlID0gKGVuY29kZWRJbWFnZS5jb250ZW50X3R5cGVfID09IHdlYnJ0Yzo6Vmlk
ZW9Db250ZW50VHlwZTo6U0NSRUVOU0hBUkUpID8KICAgICAgICAgUlRDVmlkZW9Db250ZW50VHlw
ZVNjcmVlbnNoYXJlIDoKICAgICAgICAgUlRDVmlkZW9Db250ZW50VHlwZVVuc3BlY2lmaWVkOwot
ICAgIHNlbGYuc3BhdGlhbEluZGV4ID0gZW5jb2RlZEltYWdlLlNwYXRpYWxJbmRleCgpID8gKmVu
Y29kZWRJbWFnZS5TcGF0aWFsSW5kZXgoKSA6IDA7CiAgIH0KIAogICByZXR1cm4gc2VsZjsKQEAg
LTU3LDExICs1NiwxMSBAQCAtICh3ZWJydGM6OkVuY29kZWRJbWFnZSluYXRpdmVFbmNvZGVkSW1h
Z2UgewogICBlbmNvZGVkSW1hZ2Uucm90YXRpb25fID0gd2VicnRjOjpWaWRlb1JvdGF0aW9uKHNl
bGYucm90YXRpb24pOwogICBlbmNvZGVkSW1hZ2UuX2NvbXBsZXRlRnJhbWUgPSBzZWxmLmNvbXBs
ZXRlRnJhbWU7CiAgIGVuY29kZWRJbWFnZS5xcF8gPSBzZWxmLnFwID8gc2VsZi5xcC5pbnRWYWx1
ZSA6IC0xOworICBlbmNvZGVkSW1hZ2UuU2V0U3BhdGlhbEluZGV4KHNlbGYuc3BhdGlhbEluZGV4
KTsKICAgZW5jb2RlZEltYWdlLmNvbnRlbnRfdHlwZV8gPSAoc2VsZi5jb250ZW50VHlwZSA9PSBS
VENWaWRlb0NvbnRlbnRUeXBlU2NyZWVuc2hhcmUpID8KICAgICAgIHdlYnJ0Yzo6VmlkZW9Db250
ZW50VHlwZTo6U0NSRUVOU0hBUkUgOgogICAgICAgd2VicnRjOjpWaWRlb0NvbnRlbnRUeXBlOjpV
TlNQRUNJRklFRDsKLSAgaWYgKHNlbGYuc3BhdGlhbEluZGV4KQotICAgIGVuY29kZWRJbWFnZS5T
ZXRTcGF0aWFsSW5kZXgoc2VsZi5zcGF0aWFsSW5kZXgpOworCiAgIHJldHVybiBlbmNvZGVkSW1h
Z2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENGaWVsZFRyaWFscy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJj
b25uZWN0aW9uL1JUQ0ZpZWxkVHJpYWxzLmgKaW5kZXggZWZmYzQ3MDY4NmY4MTBiNDAxNWYyM2I1
MWM0YTRjMWYzOTE3NDBlYi4uY2Y2NDhkMzJjM2E5MTA4MWJlYjFkMjcxZjU1YzlkMmJhMjIxNzIw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0ZpZWxkVHJpYWxzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25u
ZWN0aW9uL1JUQ0ZpZWxkVHJpYWxzLmgKQEAgLTIwLDI0ICsyMCwxMiBAQCBSVENfRVhURVJOIE5T
U3RyaW5nICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxBdWRpb0ZvcmNlQUJXRU5vVFdDQ0tleTsKIFJU
Q19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbFNlbmRTaWRlQndlV2l0aE92
ZXJoZWFkS2V5OwogUlRDX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IGtSVENGaWVsZFRyaWFsRmxl
eEZlYzAzQWR2ZXJ0aXNlZEtleTsKIFJUQ19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmll
bGRUcmlhbEZsZXhGZWMwM0tleTsKLVJUQ19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmll
bGRUcmlhbEltcHJvdmVkQml0cmF0ZUVzdGltYXRlS2V5OwogUlRDX0VYVEVSTiBOU1N0cmluZyAq
IGNvbnN0IGtSVENGaWVsZFRyaWFsSDI2NEhpZ2hQcm9maWxlS2V5OwogUlRDX0VYVEVSTiBOU1N0
cmluZyAqIGNvbnN0IGtSVENGaWVsZFRyaWFsTWluaW1pemVSZXNhbXBsaW5nT25Nb2JpbGVLZXk7
CiAKIC8qKiBUaGUgdmFsaWQgdmFsdWUgZm9yIGZpZWxkIHRyaWFscyBhYm92ZS4gKi8KIFJUQ19F
WFRFUk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEVuYWJsZWRWYWx1ZTsKIAotLyoq
IFVzZSBhIHN0cmluZyByZXR1cm5lZCBieSBSVENGaWVsZFRyaWFsTWVkaWFuU2xvcGVGaWx0ZXJW
YWx1ZSBhcyB0aGUgdmFsdWUuICovCi1SVENfRVhURVJOIE5TU3RyaW5nICogY29uc3Qga1JUQ0Zp
ZWxkVHJpYWxNZWRpYW5TbG9wZUZpbHRlcktleTsKLVJUQ19FWFRFUk4gTlNTdHJpbmcgKlJUQ0Zp
ZWxkVHJpYWxNZWRpYW5TbG9wZUZpbHRlclZhbHVlKAotICAgIHNpemVfdCB3aW5kb3dTaXplLCBk
b3VibGUgdGhyZXNob2xkR2Fpbik7Ci0KLS8qKiBVc2UgYSBzdHJpbmcgcmV0dXJuZWQgYnkgUlRD
RmllbGRUcmlhbFRyZW5kbGluZUZpbHRlclZhbHVlIGFzIHRoZSB2YWx1ZS4gKi8KLVJUQ19FWFRF
Uk4gTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbFRyZW5kbGluZUZpbHRlcktleTsKLS8q
KiBSZXR1cm5zIGEgdmFsaWQgdmFsdWUgZm9yIGtSVENGaWVsZFRyaWFsVHJlbmRsaW5lRmlsdGVy
S2V5LiAqLwotUlRDX0VYVEVSTiBOU1N0cmluZyAqUlRDRmllbGRUcmlhbFRyZW5kbGluZUZpbHRl
clZhbHVlKAotICAgIHNpemVfdCB3aW5kb3dTaXplLCBkb3VibGUgc21vb3RoaW5nQ29lZmYsIGRv
dWJsZSB0aHJlc2hvbGRHYWluKTsKLQogLyoqIEluaXRpYWxpemUgZmllbGQgdHJpYWxzIHVzaW5n
IGEgZGljdGlvbmFyeSBtYXBwaW5nIGZpZWxkIHRyaWFsIGtleXMgdG8gdGhlaXIKICAqIHZhbHVl
cy4gU2VlIGFib3ZlIGZvciB2YWxpZCBrZXlzIGFuZCB2YWx1ZXMuIE11c3QgYmUgY2FsbGVkIGJl
Zm9yZSBhbnkgb3RoZXIKICAqIGNhbGwgaW50byBXZWJSVEMuIFNlZTogd2VicnRjL3N5c3RlbV93
cmFwcGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENGaWVsZFRyaWFscy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENGaWVsZFRyaWFscy5tbQppbmRleCAy
MjEyYzdkZWM5NzE0Yjc5OWJkMjkxZjU3ZmYxMzZmZDg1NGM2MjA2Li4xMjdjZTZmZWI4OWYzN2Qz
YTQxNGI1NWM5MDczMThhNGNkNTQzMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRmll
bGRUcmlhbHMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0ZpZWxkVHJpYWxzLm1tCkBAIC0yMyw5
ICsyMyw2IEBAIE5TU3RyaW5nICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxBdWRpb0ZvcmNlQUJXRU5v
VFdDQ0tleSA9IEAiV2ViUlRDLUF1ZGlvLUFCV0VOb1RXCiBOU1N0cmluZyAqIGNvbnN0IGtSVENG
aWVsZFRyaWFsU2VuZFNpZGVCd2VXaXRoT3ZlcmhlYWRLZXkgPSBAIldlYlJUQy1TZW5kU2lkZUJ3
ZS1XaXRoT3ZlcmhlYWQiOwogTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEZsZXhGZWMw
M0FkdmVydGlzZWRLZXkgPSBAIldlYlJUQy1GbGV4RkVDLTAzLUFkdmVydGlzZWQiOwogTlNTdHJp
bmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEZsZXhGZWMwM0tleSA9IEAiV2ViUlRDLUZsZXhGRUMt
MDMiOwotTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbEltcHJvdmVkQml0cmF0ZUVzdGlt
YXRlS2V5ID0gQCJXZWJSVEMtSW1wcm92ZWRCaXRyYXRlRXN0aW1hdGUiOwotTlNTdHJpbmcgKiBj
b25zdCBrUlRDRmllbGRUcmlhbE1lZGlhblNsb3BlRmlsdGVyS2V5ID0gQCJXZWJSVEMtQndlTWVk
aWFuU2xvcGVGaWx0ZXIiOwotTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlhbFRyZW5kbGlu
ZUZpbHRlcktleSA9IEAiV2ViUlRDLUJ3ZVRyZW5kbGluZUZpbHRlciI7CiBOU1N0cmluZyAqIGNv
bnN0IGtSVENGaWVsZFRyaWFsSDI2NEhpZ2hQcm9maWxlS2V5ID0gQCJXZWJSVEMtSDI2NEhpZ2hQ
cm9maWxlIjsKIE5TU3RyaW5nICogY29uc3Qga1JUQ0ZpZWxkVHJpYWxNaW5pbWl6ZVJlc2FtcGxp
bmdPbk1vYmlsZUtleSA9CiAgICAgQCJXZWJSVEMtQXVkaW8tTWluaW1pemVSZXNhbXBsaW5nT25N
b2JpbGUiOwpAQCAtMzMsMTggKzMwLDYgQEAgTlNTdHJpbmcgKiBjb25zdCBrUlRDRmllbGRUcmlh
bEVuYWJsZWRWYWx1ZSA9IEAiRW5hYmxlZCI7CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Y2hh
cltdPiBnRmllbGRUcmlhbEluaXRTdHJpbmc7CiAKLU5TU3RyaW5nICpSVENGaWVsZFRyaWFsTWVk
aWFuU2xvcGVGaWx0ZXJWYWx1ZSgKLSAgICBzaXplX3Qgd2luZG93U2l6ZSwgZG91YmxlIHRocmVz
aG9sZEdhaW4pIHsKLSAgTlNTdHJpbmcgKmZvcm1hdCA9IEAiRW5hYmxlZC0lenUsJWxmIjsKLSAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdCwgd2luZG93U2l6ZSwgdGhy
ZXNob2xkR2Fpbl07Ci19Ci0KLU5TU3RyaW5nICpSVENGaWVsZFRyaWFsVHJlbmRsaW5lRmlsdGVy
VmFsdWUoCi0gICAgc2l6ZV90IHdpbmRvd1NpemUsIGRvdWJsZSBzbW9vdGhpbmdDb2VmZiwgZG91
YmxlIHRocmVzaG9sZEdhaW4pIHsKLSAgTlNTdHJpbmcgKmZvcm1hdCA9IEAiRW5hYmxlZC0lenUs
JWxmLCVsZiI7Ci0gIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIHdp
bmRvd1NpemUsIHNtb290aGluZ0NvZWZmLCB0aHJlc2hvbGRHYWluXTsKLX0KLQogdm9pZCBSVENJ
bml0RmllbGRUcmlhbERpY3Rpb25hcnkoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5n
ICo+ICpmaWVsZFRyaWFscykgewogICBpZiAoIWZpZWxkVHJpYWxzKSB7CiAgICAgUlRDTG9nV2Fy
bmluZyhAIk5vIGZpZWxkVHJpYWxzIHByb3ZpZGVkLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0
aW9uL1JUQ1BlZXJDb25uZWN0aW9uK1ByaXZhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29u
bmVjdGlvbitQcml2YXRlLmgKaW5kZXggYjY0NDBjZDQzNGE4NTdlYmQ3YTMyMTZmODJmYjMzM2I5
NzdiMjRjMS4uZDI2ZWIyZTU5MjU1NGJkMjNjZmI0ZGI4YTE4NzEzZGNjNzMyMTExMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uK1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNv
bm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb24rUHJpdmF0ZS5oCkBAIC0zOSw2ICszOSw4IEBAIGNs
YXNzIFBlZXJDb25uZWN0aW9uRGVsZWdhdGVBZGFwdGVyIDogcHVibGljIFBlZXJDb25uZWN0aW9u
T2JzZXJ2ZXIgewogCiAgIHZvaWQgT25JY2VDb25uZWN0aW9uQ2hhbmdlKFBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSBvdmVycmlkZTsKIAorICB2
b2lkIE9uQ29ubmVjdGlvbkNoYW5nZShQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5l
Y3Rpb25TdGF0ZSBuZXdfc3RhdGUpIG92ZXJyaWRlOworCiAgIHZvaWQgT25JY2VHYXRoZXJpbmdD
aGFuZ2UoUGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUdhdGhlcmluZ1N0YXRlIG5ld19zdGF0
ZSkgb3ZlcnJpZGU7CiAKICAgdm9pZCBPbkljZUNhbmRpZGF0ZShjb25zdCBJY2VDYW5kaWRhdGVJ
bnRlcmZhY2UgKmNhbmRpZGF0ZSkgb3ZlcnJpZGU7CkBAIC04NSwxMSArODcsMTkgQEAgY2xhc3Mg
UGVlckNvbm5lY3Rpb25EZWxlZ2F0ZUFkYXB0ZXIgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25PYnNl
cnZlciB7CiArICh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9u
U3RhdGUpbmF0aXZlSWNlQ29ubmVjdGlvblN0YXRlRm9yU3RhdGU6CiAgICAgICAgIChSVENJY2VD
b25uZWN0aW9uU3RhdGUpc3RhdGU7CiAKKysgKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OlBlZXJDb25uZWN0aW9uU3RhdGUpbmF0aXZlQ29ubmVjdGlvblN0YXRlRm9yU3RhdGU6Cisg
ICAgICAgIChSVENQZWVyQ29ubmVjdGlvblN0YXRlKXN0YXRlOworCiArIChSVENJY2VDb25uZWN0
aW9uU3RhdGUpaWNlQ29ubmVjdGlvblN0YXRlRm9yTmF0aXZlU3RhdGU6CiAgICAgICAgICh3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJY2VDb25uZWN0aW9uU3RhdGUpbmF0aXZlU3Rh
dGU7CiAKKysgKFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUpY29ubmVjdGlvblN0YXRlRm9yTmF0aXZl
U3RhdGU6CisgICAgICAgICh3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29u
bmVjdGlvblN0YXRlKW5hdGl2ZVN0YXRlOworCiArIChOU1N0cmluZyAqKXN0cmluZ0ZvckljZUNv
bm5lY3Rpb25TdGF0ZTooUlRDSWNlQ29ubmVjdGlvblN0YXRlKXN0YXRlOwogCisrIChOU1N0cmlu
ZyAqKXN0cmluZ0ZvckNvbm5lY3Rpb25TdGF0ZTooUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSlzdGF0
ZTsKKwogKyAod2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6SWNlR2F0aGVyaW5nU3Rh
dGUpbmF0aXZlSWNlR2F0aGVyaW5nU3RhdGVGb3JTdGF0ZToKICAgICAgICAgKFJUQ0ljZUdhdGhl
cmluZ1N0YXRlKXN0YXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDAxNzllYzBl
MjZkZjkzYWI1MWVlMmI3ZGY1NzIyYzFmMmZmNGNiYTEuLjM5M2E1MGJjODk4NGVjOTljMDE0Yjc0
ZTYzNDFlNWU3YWYyNmM1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC01Nyw2ICs1
NywxNiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBSVENJY2VDb25uZWN0aW9uU3RhdGUp
IHsKICAgUlRDSWNlQ29ubmVjdGlvblN0YXRlQ291bnQsCiB9OwogCisvKiogUmVwcmVzZW50cyB0
aGUgY29tYmluZWQgaWNlK2R0bHMgY29ubmVjdGlvbiBzdGF0ZSBvZiB0aGUgcGVlciBjb25uZWN0
aW9uLiAqLwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUlRDUGVlckNvbm5lY3Rpb25TdGF0
ZSkgeworICBSVENQZWVyQ29ubmVjdGlvblN0YXRlTmV3LAorICBSVENQZWVyQ29ubmVjdGlvblN0
YXRlQ29ubmVjdGluZywKKyAgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNvbm5lY3RlZCwKKyAgUlRD
UGVlckNvbm5lY3Rpb25TdGF0ZURpc2Nvbm5lY3RlZCwKKyAgUlRDUGVlckNvbm5lY3Rpb25TdGF0
ZUZhaWxlZCwKKyAgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNsb3NlZCwKK307CisKIC8qKiBSZXBy
ZXNlbnRzIHRoZSBpY2UgZ2F0aGVyaW5nIHN0YXRlIG9mIHRoZSBwZWVyIGNvbm5lY3Rpb24uICov
CiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBSVENJY2VHYXRoZXJpbmdTdGF0ZSkgewogICBS
VENJY2VHYXRoZXJpbmdTdGF0ZU5ldywKQEAgLTExNSwxMSArMTI1LDE0IEBAIFJUQ19PQkpDX0VY
UE9SVAogICogIFRoaXMgaXMgb25seSBjYWxsZWQgd2l0aCBSVENTZHBTZW1hbnRpY3NVbmlmaWVk
UGxhbiBzcGVjaWZpZWQuCiAgKi8KIEBvcHRpb25hbAorLyoqIENhbGxlZCBhbnkgdGltZSB0aGUg
UGVlckNvbm5lY3Rpb25TdGF0ZSBjaGFuZ2VzLiAqLworLSAodm9pZClwZWVyQ29ubmVjdGlvbjoo
UlRDUGVlckNvbm5lY3Rpb24gKilwZWVyQ29ubmVjdGlvbgorICAgIGRpZENoYW5nZUNvbm5lY3Rp
b25TdGF0ZTooUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSluZXdTdGF0ZTsKKwogLSAodm9pZClwZWVy
Q29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rpb24gKilwZWVyQ29ubmVjdGlvbgogICAgIGRpZFN0
YXJ0UmVjZWl2aW5nT25UcmFuc2NlaXZlcjooUlRDUnRwVHJhbnNjZWl2ZXIgKil0cmFuc2NlaXZl
cjsKIAogLyoqIENhbGxlZCB3aGVuIGEgcmVjZWl2ZXIgYW5kIGl0cyB0cmFjayBhcmUgY3JlYXRl
ZC4gKi8KLUBvcHRpb25hbAogLSAodm9pZClwZWVyQ29ubmVjdGlvbjooUlRDUGVlckNvbm5lY3Rp
b24gKilwZWVyQ29ubmVjdGlvbgogICAgICAgICBkaWRBZGRSZWNlaXZlcjooUlRDUnRwUmVjZWl2
ZXIgKilydHBSZWNlaXZlcgogICAgICAgICAgICAgICAgc3RyZWFtczooTlNBcnJheTxSVENNZWRp
YVN0cmVhbSAqPiAqKW1lZGlhU3RyZWFtczsKQEAgLTE0NSw2ICsxNTgsNyBAQCBSVENfT0JKQ19F
WFBPUlQKIEBwcm9wZXJ0eShub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uICpyZW1vdGVEZXNjcmlwdGlvbjsKIEBwcm9wZXJ0eShub25hdG9taWMsIHJl
YWRvbmx5KSBSVENTaWduYWxpbmdTdGF0ZSBzaWduYWxpbmdTdGF0ZTsKIEBwcm9wZXJ0eShub25h
dG9taWMsIHJlYWRvbmx5KSBSVENJY2VDb25uZWN0aW9uU3RhdGUgaWNlQ29ubmVjdGlvblN0YXRl
OworQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUg
Y29ubmVjdGlvblN0YXRlOwogQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIFJUQ0ljZUdh
dGhlcmluZ1N0YXRlIGljZUdhdGhlcmluZ1N0YXRlOwogQHByb3BlcnR5KG5vbmF0b21pYywgcmVh
ZG9ubHksIGNvcHkpIFJUQ0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb247CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQ
ZWVyQ29ubmVjdGlvbi5tbQppbmRleCA1Mjc3NDg5NzQ3YjBiOWQzODhhMDM5YzBmM2M4MDcwMjUy
NzcyZTJjLi5iNTlkYWZlYzM1ZmY5MjI1NDkzM2E3NGU5YmExNTBkNzc1NTRkM2IxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9h
cGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9u
L1JUQ1BlZXJDb25uZWN0aW9uLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5
PgogCiAjaW5jbHVkZSAiYXBpL2pzZXBpY2VjYW5kaWRhdGUuaCIKKyNpbmNsdWRlICJhcGkvbWVk
aWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgog
CiBOU1N0cmluZyAqIGNvbnN0IGtSVENQZWVyQ29ubmVjdGlvbkVycm9yRG9tYWluID0KQEAgLTE3
NCwxMSArMTc1LDE3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25EZWxlZ2F0ZUFkYXB0ZXI6Ok9uUmVu
ZWdvdGlhdGlvbk5lZWRlZCgpIHsKIAogdm9pZCBQZWVyQ29ubmVjdGlvbkRlbGVnYXRlQWRhcHRl
cjo6T25JY2VDb25uZWN0aW9uQ2hhbmdlKAogICAgIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpJ
Y2VDb25uZWN0aW9uU3RhdGUgbmV3X3N0YXRlKSB7Ci0gIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSBz
dGF0ZSA9Ci0gICAgICBbW1JUQ1BlZXJDb25uZWN0aW9uIGNsYXNzXSBpY2VDb25uZWN0aW9uU3Rh
dGVGb3JOYXRpdmVTdGF0ZTpuZXdfc3RhdGVdOwotICBSVENQZWVyQ29ubmVjdGlvbiAqcGVlcl9j
b25uZWN0aW9uID0gcGVlcl9jb25uZWN0aW9uXzsKLSAgW3BlZXJfY29ubmVjdGlvbi5kZWxlZ2F0
ZSBwZWVyQ29ubmVjdGlvbjpwZWVyX2Nvbm5lY3Rpb24KLSAgICAgICAgICAgICAgIGRpZENoYW5n
ZUljZUNvbm5lY3Rpb25TdGF0ZTpzdGF0ZV07CisgIFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSBzdGF0
ZSA9IFtSVENQZWVyQ29ubmVjdGlvbiBpY2VDb25uZWN0aW9uU3RhdGVGb3JOYXRpdmVTdGF0ZTpu
ZXdfc3RhdGVdOworICBbcGVlcl9jb25uZWN0aW9uXy5kZWxlZ2F0ZSBwZWVyQ29ubmVjdGlvbjpw
ZWVyX2Nvbm5lY3Rpb25fIGRpZENoYW5nZUljZUNvbm5lY3Rpb25TdGF0ZTpzdGF0ZV07Cit9CisK
K3ZvaWQgUGVlckNvbm5lY3Rpb25EZWxlZ2F0ZUFkYXB0ZXI6Ok9uQ29ubmVjdGlvbkNoYW5nZSgK
KyAgICBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UGVlckNvbm5lY3Rpb25TdGF0ZSBuZXdfc3Rh
dGUpIHsKKyAgaWYgKFtwZWVyX2Nvbm5lY3Rpb25fLmRlbGVnYXRlCisgICAgICAgICAgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZWVyQ29ubmVjdGlvbjpkaWRDaGFuZ2VDb25uZWN0aW9u
U3RhdGU6KV0pIHsKKyAgICBSVENQZWVyQ29ubmVjdGlvblN0YXRlIHN0YXRlID0gW1JUQ1BlZXJD
b25uZWN0aW9uIGNvbm5lY3Rpb25TdGF0ZUZvck5hdGl2ZVN0YXRlOm5ld19zdGF0ZV07CisgICAg
W3BlZXJfY29ubmVjdGlvbl8uZGVsZWdhdGUgcGVlckNvbm5lY3Rpb246cGVlcl9jb25uZWN0aW9u
XyBkaWRDaGFuZ2VDb25uZWN0aW9uU3RhdGU6c3RhdGVdOworICB9CiB9CiAKIHZvaWQgUGVlckNv
bm5lY3Rpb25EZWxlZ2F0ZUFkYXB0ZXI6Ok9uSWNlR2F0aGVyaW5nQ2hhbmdlKApAQCAtMzIxLDYg
KzMyOCwxMCBAQCAtIChSVENJY2VDb25uZWN0aW9uU3RhdGUpaWNlQ29ubmVjdGlvblN0YXRlIHsK
ICAgICAgIF9wZWVyQ29ubmVjdGlvbi0+aWNlX2Nvbm5lY3Rpb25fc3RhdGUoKV07CiB9CiAKKy0g
KFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUpY29ubmVjdGlvblN0YXRlIHsKKyAgcmV0dXJuIFtbc2Vs
ZiBjbGFzc10gY29ubmVjdGlvblN0YXRlRm9yTmF0aXZlU3RhdGU6X3BlZXJDb25uZWN0aW9uLT5w
ZWVyX2Nvbm5lY3Rpb25fc3RhdGUoKV07Cit9CisKIC0gKFJUQ0ljZUdhdGhlcmluZ1N0YXRlKWlj
ZUdhdGhlcmluZ1N0YXRlIHsKICAgcmV0dXJuIFtbc2VsZiBjbGFzc10gaWNlR2F0aGVyaW5nU3Rh
dGVGb3JOYXRpdmVTdGF0ZToKICAgICAgIF9wZWVyQ29ubmVjdGlvbi0+aWNlX2dhdGhlcmluZ19z
dGF0ZSgpXTsKQEAgLTYzMSw2ICs2NDIsNTkgQEAgKyAoTlNTdHJpbmcgKilzdHJpbmdGb3JTaWdu
YWxpbmdTdGF0ZTooUlRDU2lnbmFsaW5nU3RhdGUpc3RhdGUgewogICB9CiB9CiAKKysgKHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGUpbmF0aXZlQ29u
bmVjdGlvblN0YXRlRm9yU3RhdGU6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvblN0YXRlKXN0
YXRlIHsKKyAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0
ZU5ldzoKKyAgICAgIHJldHVybiB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVy
Q29ubmVjdGlvblN0YXRlOjprTmV3OworICAgIGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNv
bm5lY3Rpbmc6CisgICAgICByZXR1cm4gd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
UGVlckNvbm5lY3Rpb25TdGF0ZTo6a0Nvbm5lY3Rpbmc7CisgICAgY2FzZSBSVENQZWVyQ29ubmVj
dGlvblN0YXRlQ29ubmVjdGVkOgorICAgICAgcmV0dXJuIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDb25uZWN0ZWQ7CisgICAgY2FzZSBSVENQ
ZWVyQ29ubmVjdGlvblN0YXRlRmFpbGVkOgorICAgICAgcmV0dXJuIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtGYWlsZWQ7CisgICAgY2FzZSBS
VENQZWVyQ29ubmVjdGlvblN0YXRlRGlzY29ubmVjdGVkOgorICAgICAgcmV0dXJuIHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtEaXNjb25uZWN0
ZWQ7CisgICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0YXRlQ2xvc2VkOgorICAgICAgcmV0dXJu
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtD
bG9zZWQ7CisgIH0KK30KKworKyAoUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSljb25uZWN0aW9uU3Rh
dGVGb3JOYXRpdmVTdGF0ZToKKyAgICAgICAgKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OlBlZXJDb25uZWN0aW9uU3RhdGUpbmF0aXZlU3RhdGUgeworICBzd2l0Y2ggKG5hdGl2ZVN0
YXRlKSB7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29u
bmVjdGlvblN0YXRlOjprTmV3OgorICAgICAgcmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVO
ZXc7CisgICAgY2FzZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpQZWVyQ29ubmVj
dGlvblN0YXRlOjprQ29ubmVjdGluZzoKKyAgICAgIHJldHVybiBSVENQZWVyQ29ubmVjdGlvblN0
YXRlQ29ubmVjdGluZzsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDb25uZWN0ZWQ6CisgICAgICByZXR1cm4gUlRDUGVlckNv
bm5lY3Rpb25TdGF0ZUNvbm5lY3RlZDsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtGYWlsZWQ6CisgICAgICByZXR1cm4gUlRD
UGVlckNvbm5lY3Rpb25TdGF0ZUZhaWxlZDsKKyAgICBjYXNlIHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtEaXNjb25uZWN0ZWQ6CisgICAgICBy
ZXR1cm4gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZURpc2Nvbm5lY3RlZDsKKyAgICBjYXNlIHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlBlZXJDb25uZWN0aW9uU3RhdGU6OmtDbG9zZWQ6
CisgICAgICByZXR1cm4gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUNsb3NlZDsKKyAgfQorfQorCisr
IChOU1N0cmluZyAqKXN0cmluZ0ZvckNvbm5lY3Rpb25TdGF0ZTooUlRDUGVlckNvbm5lY3Rpb25T
dGF0ZSlzdGF0ZSB7CisgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFJUQ1BlZXJDb25uZWN0
aW9uU3RhdGVOZXc6CisgICAgICByZXR1cm4gQCJORVciOworICAgIGNhc2UgUlRDUGVlckNvbm5l
Y3Rpb25TdGF0ZUNvbm5lY3Rpbmc6CisgICAgICByZXR1cm4gQCJDT05ORUNUSU5HIjsKKyAgICBj
YXNlIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVDb25uZWN0ZWQ6CisgICAgICByZXR1cm4gQCJDT05O
RUNURUQiOworICAgIGNhc2UgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZUZhaWxlZDoKKyAgICAgIHJl
dHVybiBAIkZBSUxFRCI7CisgICAgY2FzZSBSVENQZWVyQ29ubmVjdGlvblN0YXRlRGlzY29ubmVj
dGVkOgorICAgICAgcmV0dXJuIEAiRElTQ09OTkVDVEVEIjsKKyAgICBjYXNlIFJUQ1BlZXJDb25u
ZWN0aW9uU3RhdGVDbG9zZWQ6CisgICAgICByZXR1cm4gQCJDTE9TRUQiOworICB9Cit9CisKICsg
KHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OkljZUNvbm5lY3Rpb25TdGF0ZSkKICAg
ICBuYXRpdmVJY2VDb25uZWN0aW9uU3RhdGVGb3JTdGF0ZTooUlRDSWNlQ29ubmVjdGlvblN0YXRl
KXN0YXRlIHsKICAgc3dpdGNoIChzdGF0ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JU
Q1BlZXJDb25uZWN0aW9uRmFjdG9yeStOYXRpdmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29u
bmVjdGlvbkZhY3RvcnkrTmF0aXZlLmgKaW5kZXggNjBhYTA4ZjdjYTNhMDIzZmFhMDNjMzMyOWZi
Y2VhYzFlNzFhNGUyYS4uMjc1MmNmNDExNzY2YjkwNDZmNDEyMzIzMmYzNGY0YTQ1YTcwMWE5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeStOYXRpdmUu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5K05hdGl2ZS5oCkBA
IC0xNyw2ICsxNyw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgQXVkaW9EZXZpY2VNb2R1
bGU7CiBjbGFzcyBBdWRpb0VuY29kZXJGYWN0b3J5OwogY2xhc3MgQXVkaW9EZWNvZGVyRmFjdG9y
eTsKK2NsYXNzIE1lZGlhVHJhbnNwb3J0RmFjdG9yeTsKIGNsYXNzIFZpZGVvRW5jb2RlckZhY3Rv
cnk7CiBjbGFzcyBWaWRlb0RlY29kZXJGYWN0b3J5OwogY2xhc3MgQXVkaW9Qcm9jZXNzaW5nOwpA
QCAtNDksNiArNTAsMjUgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+
KWF1ZGlvUHJvY2Vzc2luZ01vZHVsZTsKIAorLSAoaW5zdGFuY2V0eXBlKQorICAgIGluaXRXaXRo
TmF0aXZlQXVkaW9FbmNvZGVyRmFjdG9yeToKKyAgICAgICAgKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvRW5jb2RlckZhY3Rvcnk+KWF1ZGlvRW5jb2RlckZhY3RvcnkKKyAgICAgICAg
ICAgIG5hdGl2ZUF1ZGlvRGVjb2RlckZhY3Rvcnk6CisgICAgICAgICAgICAgICAgKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGVjb2RlckZhY3Rvcnk+KWF1ZGlvRGVjb2RlckZhY3Rv
cnkKKyAgICAgICAgICAgIG5hdGl2ZVZpZGVvRW5jb2RlckZhY3Rvcnk6CisgICAgICAgICAgICAg
ICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+KXZpZGVvRW5j
b2RlckZhY3RvcnkKKyAgICAgICAgICAgIG5hdGl2ZVZpZGVvRGVjb2RlckZhY3Rvcnk6CisgICAg
ICAgICAgICAgICAgKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+
KXZpZGVvRGVjb2RlckZhY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgYXVkaW9EZXZpY2VNb2R1
bGU6KG51bGxhYmxlIHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGUgKilhdWRpb0RldmljZU1vZHVs
ZQorICAgICAgICAgICAgICAgIGF1ZGlvUHJvY2Vzc2luZ01vZHVsZToKKyAgICAgICAgICAgICAg
ICAgICAgKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvUHJvY2Vzc2luZz4pYXVkaW9Q
cm9jZXNzaW5nTW9kdWxlCisgICAgICAgICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5Ogor
ICAgICAgICAgICAgICAgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6TWVkaWFUcmFuc3Bv
cnRGYWN0b3J5PiltZWRpYVRyYW5zcG9ydEZhY3Rvcnk7CisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEVuY29kZXJGYWN0b3J5OihudWxsYWJsZSBpZDxSVENWaWRlb0VuY29kZXJGYWN0b3J5Pill
bmNvZGVyRmFjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlckZhY3Rvcnk6KG51
bGxhYmxlIGlkPFJUQ1ZpZGVvRGVjb2RlckZhY3Rvcnk+KWRlY29kZXJGYWN0b3J5CisgICAgICAg
ICAgICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgIChz
dGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+KW1lZGlhVHJhbnNw
b3J0RmFjdG9yeTsKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVl
cmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5Lm1tIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JU
Q1BlZXJDb25uZWN0aW9uRmFjdG9yeS5tbQppbmRleCA0MDNkYjA0MGZiODYyMjY0OGQ0ODMyYTBl
YzIwODYwOTdhYjM3ZDc4Li40ODQ3NmYyMzY4ZjAxNDUyNDBkZWI1MGU0NTRjZTY5Mzg5NzljZmU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5Lm1tCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnkubW0KQEAgLTUwLDYgKzUw
LDcgQEAKIC8vIFRPRE8oemhpaHVhbmcpOiBSZW1vdmUgbm9nbmNoZWNrIG9uY2UgTWVkaWFFbmdp
bmVJbnRlcmZhY2UgaXMgbW92ZWQgdG8gQysrCiAvLyBBUEkgbGF5ZXIuCiAjaW5jbHVkZSAiYWJz
bC9tZW1vcnkvbWVtb3J5LmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdpbmUvd2VicnRjbWVkaWFlbmdpbmUuaCIgIC8vIG5v
Z25jaGVjawogCiBAaW1wbGVtZW50YXRpb24gUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5IHsKQEAg
LTgwLDEyICs4MSwxNSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdCB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIG5hdGl2ZVZpZGVvRGVjb2RlckZhY3Rvcnk6d2VicnRjOjpPYmpDVG9OYXRpdmVWaWRl
b0RlY29kZXJGYWN0b3J5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbW1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0IGFsbG9jXSBpbml0XSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0RldmljZU1vZHVsZTpbc2VsZiBh
dWRpb0RldmljZU1vZHVsZV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvUHJvY2Vz
c2luZ01vZHVsZTpudWxscHRyXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvUHJv
Y2Vzc2luZ01vZHVsZTpudWxscHRyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVRy
YW5zcG9ydEZhY3Rvcnk6bnVsbHB0cl07CiAjZW5kaWYKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRW5jb2RlckZhY3Rvcnk6KG51bGxhYmxlIGlkPFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnk+
KWVuY29kZXJGYWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyRmFjdG9yeToo
bnVsbGFibGUgaWQ8UlRDVmlkZW9EZWNvZGVyRmFjdG9yeT4pZGVjb2RlckZhY3RvcnkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjb2RlckZhY3Rvcnk6KG51bGxhYmxlIGlkPFJUQ1ZpZGVv
RGVjb2RlckZhY3Rvcnk+KWRlY29kZXJGYWN0b3J5CisgICAgICAgICAgICAgICAgIG1lZGlhVHJh
bnNwb3J0RmFjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpNZWRpYVRyYW5zcG9ydEZhY3Rvcnk+KW1lZGlhVHJhbnNwb3J0RmFjdG9yeSB7CiAjaWZk
ZWYgSEFWRV9OT19NRURJQQogICByZXR1cm4gW3NlbGYgaW5pdFdpdGhOb01lZGlhXTsKICNlbHNl
CkBAIC0xMDIsOSArMTA2LDE2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVuY29kZXJGYWN0
b3J5OihudWxsYWJsZSBpZDxSVENWaWRlb0VuY29kZXJGYWN0b3J5PillbmNvCiAgICAgICAgICAg
ICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRW5jb2RlckZhY3Rvcnk6c3RkOjptb3ZlKG5hdGl2ZV9l
bmNvZGVyX2ZhY3RvcnkpCiAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRGVjb2Rl
ckZhY3Rvcnk6c3RkOjptb3ZlKG5hdGl2ZV9kZWNvZGVyX2ZhY3RvcnkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXVkaW9EZXZpY2VNb2R1bGU6W3NlbGYgYXVkaW9EZXZpY2VNb2R1
bGVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6bnVs
bHB0cl07CisgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6
bnVsbHB0cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5
OnN0ZDo6bW92ZShtZWRpYVRyYW5zcG9ydEZhY3RvcnkpXTsKICNlbmRpZgogfQorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRW5jb2RlckZhY3Rvcnk6KG51bGxhYmxlIGlkPFJUQ1ZpZGVvRW5jb2Rl
ckZhY3Rvcnk+KWVuY29kZXJGYWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVy
RmFjdG9yeToobnVsbGFibGUgaWQ8UlRDVmlkZW9EZWNvZGVyRmFjdG9yeT4pZGVjb2RlckZhY3Rv
cnkgeworICByZXR1cm4gW3NlbGYgaW5pdFdpdGhFbmNvZGVyRmFjdG9yeTplbmNvZGVyRmFjdG9y
eQorICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyRmFjdG9yeTpkZWNvZGVyRmFjdG9yeQor
ICAgICAgICAgICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9yeTpudWxscHRyXTsKK30KIAogLSAo
aW5zdGFuY2V0eXBlKWluaXROYXRpdmUgewogICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewpA
QCAtMTUyLDIwICsxNjMsNTcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlQXVkaW9F
bmNvZGVyRmFjdG9yeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxs
YWJsZSB3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlICopYXVkaW9EZXZpY2VNb2R1bGUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1By
b2Nlc3Npbmc+KWF1ZGlvUHJvY2Vzc2luZ01vZHVsZSB7CisgIHJldHVybiBbc2VsZiBpbml0V2l0
aE5hdGl2ZUF1ZGlvRW5jb2RlckZhY3Rvcnk6YXVkaW9FbmNvZGVyRmFjdG9yeQorICAgICAgICAg
ICAgICAgICAgICAgICBuYXRpdmVBdWRpb0RlY29kZXJGYWN0b3J5OmF1ZGlvRGVjb2RlckZhY3Rv
cnkKKyAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlVmlkZW9FbmNvZGVyRmFjdG9yeTpzdGQ6
Om1vdmUodmlkZW9FbmNvZGVyRmFjdG9yeSkKKyAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZl
VmlkZW9EZWNvZGVyRmFjdG9yeTpzdGQ6Om1vdmUodmlkZW9EZWNvZGVyRmFjdG9yeSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0RldmljZU1vZHVsZTphdWRpb0RldmljZU1v
ZHVsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOmF1
ZGlvUHJvY2Vzc2luZ01vZHVsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFUcmFu
c3BvcnRGYWN0b3J5Om51bGxwdHJdOworfQorCistIChpbnN0YW5jZXR5cGUpCisgICAgaW5pdFdp
dGhOYXRpdmVBdWRpb0VuY29kZXJGYWN0b3J5OgorICAgICAgICAocnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6QXVkaW9FbmNvZGVyRmFjdG9yeT4pYXVkaW9FbmNvZGVyRmFjdG9yeQorICAgICAg
ICAgICAgbmF0aXZlQXVkaW9EZWNvZGVyRmFjdG9yeToKKyAgICAgICAgICAgICAgICAocnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZWNvZGVyRmFjdG9yeT4pYXVkaW9EZWNvZGVyRmFj
dG9yeQorICAgICAgICAgICAgbmF0aXZlVmlkZW9FbmNvZGVyRmFjdG9yeToKKyAgICAgICAgICAg
ICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4pdmlkZW9F
bmNvZGVyRmFjdG9yeQorICAgICAgICAgICAgbmF0aXZlVmlkZW9EZWNvZGVyRmFjdG9yeToKKyAg
ICAgICAgICAgICAgICAoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9y
eT4pdmlkZW9EZWNvZGVyRmFjdG9yeQorICAgICAgICAgICAgICAgICAgICBhdWRpb0RldmljZU1v
ZHVsZToobnVsbGFibGUgd2VicnRjOjpBdWRpb0RldmljZU1vZHVsZSAqKWF1ZGlvRGV2aWNlTW9k
dWxlCisgICAgICAgICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOgorICAgICAgICAgICAg
ICAgICAgICAocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9Qcm9jZXNzaW5nPilhdWRp
b1Byb2Nlc3NpbmdNb2R1bGUKKyAgICAgICAgICAgICAgICBtZWRpYVRyYW5zcG9ydEZhY3Rvcnk6
CisgICAgICAgICAgICAgICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpNZWRpYVRyYW5z
cG9ydEZhY3Rvcnk+KW1lZGlhVHJhbnNwb3J0RmFjdG9yeSB7CiAjaWZkZWYgSEFWRV9OT19NRURJ
QQogICByZXR1cm4gW3NlbGYgaW5pdFdpdGhOb01lZGlhXTsKICNlbHNlCiAgIGlmIChzZWxmID0g
W3NlbGYgaW5pdE5hdGl2ZV0pIHsKLSAgICBfbmF0aXZlRmFjdG9yeSA9IHdlYnJ0Yzo6Q3JlYXRl
UGVlckNvbm5lY3Rpb25GYWN0b3J5KF9uZXR3b3JrVGhyZWFkLmdldCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dvcmtlclRocmVh
ZC5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9zaWduYWxpbmdUaHJlYWQuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0RldmljZU1vZHVsZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
ZGlvRW5jb2RlckZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdWRpb0RlY29kZXJGYWN0b3J5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHZpZGVv
RW5jb2RlckZhY3RvcnkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHZpZGVvRGVjb2RlckZhY3RvcnkpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwgIC8vIGF1ZGlvIG1peGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGUpOworICAgIGlmICghYXVk
aW9Qcm9jZXNzaW5nTW9kdWxlKSBhdWRpb1Byb2Nlc3NpbmdNb2R1bGUgPSB3ZWJydGM6OkF1ZGlv
UHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlj
a2V0OjpNZWRpYUVuZ2luZUludGVyZmFjZT4gbWVkaWFfZW5naW5lID0KKyAgICAgICAgY3JpY2tl
dDo6V2ViUnRjTWVkaWFFbmdpbmVGYWN0b3J5OjpDcmVhdGUoYXVkaW9EZXZpY2VNb2R1bGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRW5j
b2RlckZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF1ZGlvRGVjb2RlckZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZSh2aWRlb0VuY29kZXJGYWN0b3J5KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3Zl
KHZpZGVvRGVjb2RlckZhY3RvcnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLCAgLy8gYXVkaW8gbWl4ZXIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxl
KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkNhbGxGYWN0b3J5SW50ZXJmYWNlPiBj
YWxsX2ZhY3RvcnkgPSB3ZWJydGM6OkNyZWF0ZUNhbGxGYWN0b3J5KCk7CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8d2VicnRjOjpSdGNFdmVudExvZ0ZhY3RvcnlJbnRlcmZhY2U+IGV2ZW50X2xvZ19m
YWN0b3J5ID0KKyAgICAgICAgd2VicnRjOjpDcmVhdGVSdGNFdmVudExvZ0ZhY3RvcnkoKTsKKyAg
ICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeURlcGVuZGVuY2llcyBkZXBlbmRlbmNpZXM7
CisgICAgZGVwZW5kZW5jaWVzLm5ldHdvcmtfdGhyZWFkID0gX25ldHdvcmtUaHJlYWQuZ2V0KCk7
CisgICAgZGVwZW5kZW5jaWVzLndvcmtlcl90aHJlYWQgPSBfd29ya2VyVGhyZWFkLmdldCgpOwor
ICAgIGRlcGVuZGVuY2llcy5zaWduYWxpbmdfdGhyZWFkID0gX3NpZ25hbGluZ1RocmVhZC5nZXQo
KTsKKyAgICBkZXBlbmRlbmNpZXMubWVkaWFfZW5naW5lID0gc3RkOjptb3ZlKG1lZGlhX2VuZ2lu
ZSk7CisgICAgZGVwZW5kZW5jaWVzLmNhbGxfZmFjdG9yeSA9IHN0ZDo6bW92ZShjYWxsX2ZhY3Rv
cnkpOworICAgIGRlcGVuZGVuY2llcy5ldmVudF9sb2dfZmFjdG9yeSA9IHN0ZDo6bW92ZShldmVu
dF9sb2dfZmFjdG9yeSk7CisgICAgZGVwZW5kZW5jaWVzLm1lZGlhX3RyYW5zcG9ydF9mYWN0b3J5
ID0gc3RkOjptb3ZlKG1lZGlhVHJhbnNwb3J0RmFjdG9yeSk7CisgICAgX25hdGl2ZUZhY3Rvcnkg
PSB3ZWJydGM6OkNyZWF0ZU1vZHVsYXJQZWVyQ29ubmVjdGlvbkZhY3Rvcnkoc3RkOjptb3ZlKGRl
cGVuZGVuY2llcykpOwogICAgIE5TQXNzZXJ0KF9uYXRpdmVGYWN0b3J5LCBAIkZhaWxlZCB0byBp
bml0aWFsaXplIFBlZXJDb25uZWN0aW9uRmFjdG9yeSEiKTsKICAgfQogICByZXR1cm4gc2VsZjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlCdWlsZGVy
Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIubW0KaW5k
ZXggYTI2YTYzOWUyOGU0NGYyMWI4YzI3NTZkNGZkMGMyMTM3ZDI3MTE1Yy4uMGFkYWEzMGU0ZjA4
ODk0NmI2ZGY0NzUwNGZjNWI5MTE4OWZiZWFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JU
Q1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1Bl
ZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIubW0KQEAgLTEzLDYgKzEzLDcgQEAKIAogI2luY2x1
ZGUgImFwaS9hdWRpb19jb2RlY3MvYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAi
YXBpL2F1ZGlvX2NvZGVjcy9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkv
bWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mv
dmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRl
b19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNs
dWRlL2F1ZGlvX2RldmljZS5oIgpAQCAtMjUsNiArMjYsNyBAQCBAaW1wbGVtZW50YXRpb24gUlRD
UGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlciB7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkF1ZGlvRGVjb2RlckZhY3Rvcnk+IF9hdWRpb0RlY29kZXJGYWN0b3J5OwogICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RldmljZU1vZHVsZT4gX2F1ZGlvRGV2aWNlTW9kdWxl
OwogICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc+IF9hdWRpb1By
b2Nlc3NpbmdNb2R1bGU7CisgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6Ok1lZGlhVHJhbnNwb3J0
RmFjdG9yeT4gX21lZGlhVHJhbnNwb3J0RmFjdG9yeTsKIH0KIAogKyAoUlRDUGVlckNvbm5lY3Rp
b25GYWN0b3J5QnVpbGRlciAqKWJ1aWxkZXIgewpAQCAtMzgsNyArNDAsOCBAQCAtIChSVENQZWVy
Q29ubmVjdGlvbkZhY3RvcnkgKiljcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICBuYXRpdmVWaWRlb0VuY29kZXJGYWN0b3J5OnN0ZDo6bW92ZShf
dmlkZW9FbmNvZGVyRmFjdG9yeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlVmlk
ZW9EZWNvZGVyRmFjdG9yeTpzdGQ6Om1vdmUoX3ZpZGVvRGVjb2RlckZhY3RvcnkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9EZXZpY2VNb2R1bGU6X2F1ZGlvRGV2aWNl
TW9kdWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1
bGU6X2F1ZGlvUHJvY2Vzc2luZ01vZHVsZV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6X2F1ZGlvUHJvY2Vzc2luZ01vZHVsZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVkaWFUcmFuc3BvcnRGYWN0b3J5OnN0ZDo6bW92ZShfbWVk
aWFUcmFuc3BvcnRGYWN0b3J5KV07CiB9CiAKIC0gKHZvaWQpc2V0VmlkZW9FbmNvZGVyRmFjdG9y
eTooc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4pdmlkZW9FbmNv
ZGVyRmFjdG9yeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb25G
YWN0b3J5T3B0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeU9w
dGlvbnMuaAppbmRleCBhZjMyN2Y5ODdiMjdiY2E3N2IxNDhkMzBmOTgwZDk2MjY0NmIzZGY3Li40
YmVjODY5NWJkYmYxOTc5ZjUwNzM5ZWY5NWM2NGFkZTEzNTkwYjA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNv
bm5lY3Rpb24vUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlPcHRpb25zLmgKQEAgLTMxLDEwICszMSw2IEBA
IFJUQ19PQkpDX0VYUE9SVAogCiBAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgaWdu
b3JlRXRoZXJuZXROZXR3b3JrQWRhcHRlcjsKIAotQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWdu
KSBCT09MIGVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI7Ci0KLUBwcm9wZXJ0eShub25h
dG9taWMsIGFzc2lnbikgQk9PTCBlbmFibGVHY21DcnlwdG9TdWl0ZXM7Ci0KIC0gKGluc3RhbmNl
dHlwZSlpbml0IE5TX0RFU0lHTkFURURfSU5JVElBTElaRVI7CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9w
ZWVyY29ubmVjdGlvbi9SVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlPcHRpb25zLm1tIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25u
ZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeU9wdGlvbnMubW0KaW5kZXggMTAzYTEzMDM5
MGMwNjJiYzZlYzc2Y2EwYWU3N2MwZjUyZmVjM2ZlOS4uZjBjYzZhNmM4MWYwYzExZWY2MjJjZTJi
M2UyODNlMjkzYmQyMGEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0
aW9uRmFjdG9yeU9wdGlvbnMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9u
RmFjdG9yeU9wdGlvbnMubW0KQEAgLTM0LDggKzM0LDYgQEAgQHN5bnRoZXNpemUgaWdub3JlVlBO
TmV0d29ya0FkYXB0ZXIgPSBfaWdub3JlVlBOTmV0d29ya0FkYXB0ZXI7CiBAc3ludGhlc2l6ZSBp
Z25vcmVDZWxsdWxhck5ldHdvcmtBZGFwdGVyID0gX2lnbm9yZUNlbGx1bGFyTmV0d29ya0FkYXB0
ZXI7CiBAc3ludGhlc2l6ZSBpZ25vcmVXaUZpTmV0d29ya0FkYXB0ZXIgPSBfaWdub3JlV2lGaU5l
dHdvcmtBZGFwdGVyOwogQHN5bnRoZXNpemUgaWdub3JlRXRoZXJuZXROZXR3b3JrQWRhcHRlciA9
IF9pZ25vcmVFdGhlcm5ldE5ldHdvcmtBZGFwdGVyOwotQHN5bnRoZXNpemUgZW5hYmxlQWVzMTI4
U2hhMV8zMkNyeXB0b0NpcGhlciA9IF9lbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyOwot
QHN5bnRoZXNpemUgZW5hYmxlR2NtQ3J5cHRvU3VpdGVzID0gX2VuYWJsZUdjbUNyeXB0b1N1aXRl
czsKIAogLSAoaW5zdGFuY2V0eXBlKWluaXQgewogICByZXR1cm4gW3N1cGVyIGluaXRdOwpAQCAt
NTIsOSArNTAsNiBAQCAtICh3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTo6
T3B0aW9ucyluYXRpdmVPcHRpb25zIHsKICAgc2V0TmV0d29ya0JpdCgmb3B0aW9ucywgcnRjOjpB
REFQVEVSX1RZUEVfV0lGSSwgc2VsZi5pZ25vcmVXaUZpTmV0d29ya0FkYXB0ZXIpOwogICBzZXRO
ZXR3b3JrQml0KCZvcHRpb25zLCBydGM6OkFEQVBURVJfVFlQRV9FVEhFUk5FVCwgc2VsZi5pZ25v
cmVFdGhlcm5ldE5ldHdvcmtBZGFwdGVyKTsKIAotICBvcHRpb25zLmNyeXB0b19vcHRpb25zLmVu
YWJsZV9hZXMxMjhfc2hhMV8zMl9jcnlwdG9fY2lwaGVyID0gc2VsZi5lbmFibGVBZXMxMjhTaGEx
XzMyQ3J5cHRvQ2lwaGVyOwotICBvcHRpb25zLmNyeXB0b19vcHRpb25zLmVuYWJsZV9nY21fY3J5
cHRvX3N1aXRlcyA9IHNlbGYuZW5hYmxlR2NtQ3J5cHRvU3VpdGVzOwotCiAgIHJldHVybiBvcHRp
b25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUnRwVHJhbnNjZWl2ZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9w
ZWVyY29ubmVjdGlvbi9SVENSdHBUcmFuc2NlaXZlci5oCmluZGV4IDhiOTYyZTQ4ODRiMTQyZjI5
YjQ2MjZiYTcwZDQ4NmUyYjJmOWI2NzUuLjhlZjNmYzFkNDJlN2EzMDE3ODYwOGUzNjQxYWU5OGRl
YzdiYTdmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENSdHBUcmFuc2NlaXZlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENSdHBUcmFuc2NlaXZlci5oCkBAIC0yOCw2ICsyOCw3IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uKSB7CiAg
KiAgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIuCiAgKiAgaHR0cHM6Ly93M2MuZ2l0
aHViLmlvL3dlYnJ0Yy1wYy8jZG9tLXJ0Y3J0cHRyYW5zY2VpdmVyaW5pdAogICovCitSVENfT0JK
Q19FWFBPUlQKIEBpbnRlcmZhY2UgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IDogTlNPYmplY3QKIAog
LyoqIERpcmVjdGlvbiBvZiB0aGUgUlRDUnRwVHJhbnNjZWl2ZXIuIFNlZSBSVENSdHBUcmFuc2Nl
aXZlci5kaXJlY3Rpb24uICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9Tb3Vy
Y2UrUHJpdmF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvU291cmNlK1ByaXZhdGUuaAppbmRl
eCAyNDQxZTBjZGJlNjI0OGFhZWJiM2U4OGVlNDA5MjU3ZDQ0ZDBlZmU2Li44MjhhYWQ4N2JkMDc0
OThjZTk0MmUyODUxZGQ5NWEwYmQ5MWFiOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRD
VmlkZW9Tb3VyY2UrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb1NvdXJjZStQ
cml2YXRlLmgKQEAgLTEzLDYgKzEzLDcgQEAKICNpbXBvcnQgIlJUQ01lZGlhU291cmNlK1ByaXZh
dGUuaCIKIAogI2luY2x1ZGUgImFwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oIgorI2luY2x1ZGUg
InJ0Y19iYXNlL3RocmVhZC5oIgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9i
YXNlL1JUQ0xvZ2dpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2Jhc2UvUlRDTG9nZ2luZy5oCmluZGV4IGJlNjJkYjI1YjU2OWM4NDQzZWUw
NTI1Y2IyODVhZmRjNTZjNjFmZmMuLmIyMGE0YjRkNDI4YjU4MDYwMGUwNzQ2NGMzNjYwMjQxZWVk
MTMzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2Jhc2UvUlRDTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDTG9nZ2luZy5oCkBAIC0xNCwx
MCArMTQsMTIgQEAKIAogLy8gU3Vic2V0IG9mIHJ0Yzo6TG9nZ2luZ1NldmVyaXR5LgogdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgUlRDTG9nZ2luZ1NldmVyaXR5KSB7CisgIFJUQ0xvZ2dpbmdT
ZXZlcml0eVNlbnNpdGl2ZSwKICAgUlRDTG9nZ2luZ1NldmVyaXR5VmVyYm9zZSwKICAgUlRDTG9n
Z2luZ1NldmVyaXR5SW5mbywKICAgUlRDTG9nZ2luZ1NldmVyaXR5V2FybmluZywKICAgUlRDTG9n
Z2luZ1NldmVyaXR5RXJyb3IsCisgIFJUQ0xvZ2dpbmdTZXZlcml0eU5vbmUsCiB9OwogCiAvLyBX
cmFwcGVyIGZvciBDKysgUlRDX0xPRyhzZXYpIG1hY3Jvcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDTG9nZ2lu
Zy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2Jhc2UvUlRDTG9nZ2luZy5tbQppbmRleCA1YzhmOWZiNGY4YmY5NDRmMTgxOGY0NDg0ZGFmY2E1
NDMwZjYxYTlhLi4zYWFlNDdhMjQwY2M0MDBhMmIyZmYwYjBiZjFiZjAzNDU0MzY5Mzg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9iYXNlL1JUQ0xvZ2dpbmcubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENMb2dnaW5nLm1tCkBAIC0xNCw2ICsxNCw4IEBA
CiAKIHJ0Yzo6TG9nZ2luZ1NldmVyaXR5IFJUQ0dldE5hdGl2ZUxvZ2dpbmdTZXZlcml0eShSVENM
b2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkpIHsKICAgc3dpdGNoIChzZXZlcml0eSkgeworICAgIGNh
c2UgUlRDTG9nZ2luZ1NldmVyaXR5U2Vuc2l0aXZlOgorICAgICAgcmV0dXJuIHJ0Yzo6TFNfU0VO
U0lUSVZFOwogICAgIGNhc2UgUlRDTG9nZ2luZ1NldmVyaXR5VmVyYm9zZToKICAgICAgIHJldHVy
biBydGM6OkxTX1ZFUkJPU0U7CiAgICAgY2FzZSBSVENMb2dnaW5nU2V2ZXJpdHlJbmZvOgpAQCAt
MjIsNiArMjQsOCBAQCBydGM6OkxvZ2dpbmdTZXZlcml0eSBSVENHZXROYXRpdmVMb2dnaW5nU2V2
ZXJpdHkoUlRDTG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5KSB7CiAgICAgICByZXR1cm4gcnRjOjpM
U19XQVJOSU5HOwogICAgIGNhc2UgUlRDTG9nZ2luZ1NldmVyaXR5RXJyb3I6CiAgICAgICByZXR1
cm4gcnRjOjpMU19FUlJPUjsKKyAgICBjYXNlIFJUQ0xvZ2dpbmdTZXZlcml0eU5vbmU6CisgICAg
ICByZXR1cm4gcnRjOjpMU19OT05FOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvY2FwdHVy
ZXIvUlRDQ2FtZXJhVmlkZW9DYXB0dXJlci5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9jYXB0dXJlci9SVENDYW1lcmFWaWRl
b0NhcHR1cmVyLm0KaW5kZXggMjkwOTQwNWU3ZDhjNTExYzU4MDA0OGMzODFkYmYzZmJhMzJlZGU5
Ny4uZGI4MzNiMzk4Y2JmMWNjMTIxMWQ5OTZkM2IyMWY5NzU3MjI0ODg5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9u
ZW50cy9jYXB0dXJlci9SVENDYW1lcmFWaWRlb0NhcHR1cmVyLm0KKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9jYXB0dXJl
ci9SVENDYW1lcmFWaWRlb0NhcHR1cmVyLm0KQEAgLTI2LDE4ICsyNiwxOCBAQAogCiBAaW50ZXJm
YWNlIFJUQ0NhbWVyYVZpZGVvQ2FwdHVyZXIgKCk8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0U2Ft
cGxlQnVmZmVyRGVsZWdhdGU+CiBAcHJvcGVydHkobm9uYXRvbWljLCByZWFkb25seSkgZGlzcGF0
Y2hfcXVldWVfdCBmcmFtZVF1ZXVlOworQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBBVkNh
cHR1cmVEZXZpY2UgKmN1cnJlbnREZXZpY2U7CitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24p
IEJPT0wgaGFzUmV0cmllZE9uRmF0YWxFcnJvcjsKK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2ln
bikgQk9PTCBpc1J1bm5pbmc7CisvLyBXaWxsIHRoZSBzZXNzaW9uIGJlIHJ1bm5pbmcgb25jZSBh
bGwgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMgaGF2ZSBiZWVuIGNvbXBsZXRlZD8KK0Bwcm9wZXJ0
eShub25hdG9taWMsIGFzc2lnbikgQk9PTCB3aWxsQmVSdW5uaW5nOwogQGVuZAogCiBAaW1wbGVt
ZW50YXRpb24gUlRDQ2FtZXJhVmlkZW9DYXB0dXJlciB7CiAgIEFWQ2FwdHVyZVZpZGVvRGF0YU91
dHB1dCAqX3ZpZGVvRGF0YU91dHB1dDsKICAgQVZDYXB0dXJlU2Vzc2lvbiAqX2NhcHR1cmVTZXNz
aW9uOwotICBBVkNhcHR1cmVEZXZpY2UgKl9jdXJyZW50RGV2aWNlOwogICBGb3VyQ2hhckNvZGUg
X3ByZWZlcnJlZE91dHB1dFBpeGVsRm9ybWF0OwogICBGb3VyQ2hhckNvZGUgX291dHB1dFBpeGVs
Rm9ybWF0OwotICBCT09MIF9oYXNSZXRyaWVkT25GYXRhbEVycm9yOwotICBCT09MIF9pc1J1bm5p
bmc7Ci0gIC8vIFdpbGwgdGhlIHNlc3Npb24gYmUgcnVubmluZyBvbmNlIGFsbCBhc3luY2hyb25v
dXMgb3BlcmF0aW9ucyBoYXZlIGJlZW4gY29tcGxldGVkPwotICBCT09MIF93aWxsQmVSdW5uaW5n
OwogICBSVENWaWRlb1JvdGF0aW9uIF9yb3RhdGlvbjsKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAg
IFVJRGV2aWNlT3JpZW50YXRpb24gX29yaWVudGF0aW9uOwpAQCAtNDYsNiArNDYsMTAgQEAgQGlt
cGxlbWVudGF0aW9uIFJUQ0NhbWVyYVZpZGVvQ2FwdHVyZXIgewogCiBAc3ludGhlc2l6ZSBmcmFt
ZVF1ZXVlID0gX2ZyYW1lUXVldWU7CiBAc3ludGhlc2l6ZSBjYXB0dXJlU2Vzc2lvbiA9IF9jYXB0
dXJlU2Vzc2lvbjsKK0BzeW50aGVzaXplIGN1cnJlbnREZXZpY2UgPSBfY3VycmVudERldmljZTsK
K0BzeW50aGVzaXplIGhhc1JldHJpZWRPbkZhdGFsRXJyb3IgPSBfaGFzUmV0cmllZE9uRmF0YWxF
cnJvcjsKK0BzeW50aGVzaXplIGlzUnVubmluZyA9IF9pc1J1bm5pbmc7CitAc3ludGhlc2l6ZSB3
aWxsQmVSdW5uaW5nID0gX3dpbGxCZVJ1bm5pbmc7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0IHsK
ICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRGVsZWdhdGU6bmlsIGNhcHR1cmVTZXNzaW9uOltbQVZD
YXB0dXJlU2Vzc2lvbiBhbGxvY10gaW5pdF1dOwpAQCAtMTU3LDI1ICsxNjEsMjYgQEAgLSAodm9p
ZClzdGFydENhcHR1cmVXaXRoRGV2aWNlOihBVkNhcHR1cmVEZXZpY2UgKilkZXZpY2UKICAgICAg
ICAgICAgICAgICAgICAgICBbW1VJRGV2aWNlIGN1cnJlbnREZXZpY2VdIGJlZ2luR2VuZXJhdGlu
Z0RldmljZU9yaWVudGF0aW9uTm90aWZpY2F0aW9uc107CiAjZW5kaWYKIAotICAgICAgICAgICAg
ICAgICAgICAgIF9jdXJyZW50RGV2aWNlID0gZGV2aWNlOworICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuY3VycmVudERldmljZSA9IGRldmljZTsKIAogICAgICAgICAgICAgICAgICAgICAgIE5T
RXJyb3IgKmVycm9yID0gbmlsOwotICAgICAgICAgICAgICAgICAgICAgIGlmICghW19jdXJyZW50
RGV2aWNlIGxvY2tGb3JDb25maWd1cmF0aW9uOiZlcnJvcl0pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFJUQ0xvZ0Vycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiRmFpbGVk
IHRvIGxvY2sgZGV2aWNlICVALiBFcnJvcjogJUAiLCBfY3VycmVudERldmljZSwgZXJyb3IudXNl
ckluZm8pOworICAgICAgICAgICAgICAgICAgICAgIGlmICghW3NlbGYuY3VycmVudERldmljZSBs
b2NrRm9yQ29uZmlndXJhdGlvbjomZXJyb3JdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBS
VENMb2dFcnJvcihAIkZhaWxlZCB0byBsb2NrIGRldmljZSAlQC4gRXJyb3I6ICVAIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudERldmljZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLnVzZXJJbmZvKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBfd2lsbEJlUnVubmluZyA9IE5POworICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi53aWxsQmVSdW5uaW5nID0gTk87CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgIFtzZWxmIHJlY29uZmlndXJlQ2FwdHVyZVNlc3Npb25JbnB1dF07CiAgICAg
ICAgICAgICAgICAgICAgICAgW3NlbGYgdXBkYXRlT3JpZW50YXRpb25dOwogICAgICAgICAgICAg
ICAgICAgICAgIFtzZWxmIHVwZGF0ZURldmljZUNhcHR1cmVGb3JtYXQ6Zm9ybWF0IGZwczpmcHNd
OwogICAgICAgICAgICAgICAgICAgICAgIFtzZWxmIHVwZGF0ZVZpZGVvRGF0YU91dHB1dFBpeGVs
Rm9ybWF0OmZvcm1hdF07Ci0gICAgICAgICAgICAgICAgICAgICAgW19jYXB0dXJlU2Vzc2lvbiBz
dGFydFJ1bm5pbmddOwotICAgICAgICAgICAgICAgICAgICAgIFtfY3VycmVudERldmljZSB1bmxv
Y2tGb3JDb25maWd1cmF0aW9uXTsKLSAgICAgICAgICAgICAgICAgICAgICBfaXNSdW5uaW5nID0g
WUVTOworICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmNhcHR1cmVTZXNzaW9uIHN0YXJ0UnVu
bmluZ107CisgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY3VycmVudERldmljZSB1bmxvY2tG
b3JDb25maWd1cmF0aW9uXTsKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlzUnVubmluZyA9
IFlFUzsKICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgfQpAQCAtMTg4LDE2ICsxOTMsMTYgQEAgLSAodm9pZClzdG9wQ2FwdHVyZVdp
dGhDb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhh
bmQKICAgICAgIGRpc3BhdGNoQXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hlclR5cGVDYXB0dXJlU2Vz
c2lvbgogICAgICAgICAgICAgICAgICAgICBibG9jazpeewogICAgICAgICAgICAgICAgICAgICAg
IFJUQ0xvZ0luZm8oIlN0b3AiKTsKLSAgICAgICAgICAgICAgICAgICAgICBfY3VycmVudERldmlj
ZSA9IG5pbDsKLSAgICAgICAgICAgICAgICAgICAgICBmb3IgKEFWQ2FwdHVyZURldmljZUlucHV0
ICpvbGRJbnB1dCBpbiBbX2NhcHR1cmVTZXNzaW9uLmlucHV0cyBjb3B5XSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgW19jYXB0dXJlU2Vzc2lvbiByZW1vdmVJbnB1dDpvbGRJbnB1dF07Cisg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50RGV2aWNlID0gbmlsOworICAgICAgICAg
ICAgICAgICAgICAgIGZvciAoQVZDYXB0dXJlRGV2aWNlSW5wdXQgKm9sZElucHV0IGluIFtzZWxm
LmNhcHR1cmVTZXNzaW9uLmlucHV0cyBjb3B5XSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
W3NlbGYuY2FwdHVyZVNlc3Npb24gcmVtb3ZlSW5wdXQ6b2xkSW5wdXRdOwogICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICBbX2NhcHR1cmVTZXNzaW9uIHN0b3BS
dW5uaW5nXTsKKyAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5jYXB0dXJlU2Vzc2lvbiBzdG9w
UnVubmluZ107CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAgICAgICAgICAgICAgICAgICAgICAg
W1tVSURldmljZSBjdXJyZW50RGV2aWNlXSBlbmRHZW5lcmF0aW5nRGV2aWNlT3JpZW50YXRpb25O
b3RpZmljYXRpb25zXTsKICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgIF9pc1J1bm5pbmcg
PSBOTzsKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlzUnVubmluZyA9IE5POwogICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICB9CkBA
IC0zNDAsNyArMzQ1LDcgQEAgLSAodm9pZCloYW5kbGVDYXB0dXJlU2Vzc2lvbkRpZFN0YXJ0UnVu
bmluZzooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24gewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJsb2NrOl57CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBJZiB3ZSBzdWNjZXNzZnVsbHkgcmVzdGFydGVkIGFmdGVyIGFuIHVua25vd24gZXJyb3IsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvdyBmdXR1cmUgcmV0cmllcyBv
biBmYXRhbCBlcnJvcnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaGFzUmV0
cmllZE9uRmF0YWxFcnJvciA9IE5POworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5oYXNSZXRyaWVkT25GYXRhbEVycm9yID0gTk87CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfV07CiB9CiAKQEAgLTM1MiwxMCArMzU3LDEwIEBAIC0gKHZvaWQpaGFuZGxlRmF0
YWxFcnJvciB7CiAgIFtSVENEaXNwYXRjaGVyCiAgICAgICBkaXNwYXRjaEFzeW5jT25UeXBlOlJU
Q0Rpc3BhdGNoZXJUeXBlQ2FwdHVyZVNlc3Npb24KICAgICAgICAgICAgICAgICAgICAgYmxvY2s6
XnsKLSAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9oYXNSZXRyaWVkT25GYXRhbEVycm9yKSB7
CisgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWxmLmhhc1JldHJpZWRPbkZhdGFsRXJyb3Ip
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ0xvZ1dhcm5pbmcoQCJBdHRlbXB0aW5nIHRv
IHJlY292ZXIgZnJvbSBmYXRhbCBjYXB0dXJlIGVycm9yLiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgW3NlbGYgaGFuZGxlTm9uRmF0YWxFcnJvcl07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBfaGFzUmV0cmllZE9uRmF0YWxFcnJvciA9IFlFUzsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuaGFzUmV0cmllZE9uRmF0YWxFcnJvciA9IFlFUzsKICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgUlRDTG9nRXJyb3IoQCJQcmV2aW91
cyBmYXRhbCBlcnJvciByZWNvdmVyeSBmYWlsZWQuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtMzY2LDggKzM3MSw4IEBAIC0gKHZvaWQpaGFuZGxlTm9uRmF0YWxFcnJvciB7CiAgIFtS
VENEaXNwYXRjaGVyIGRpc3BhdGNoQXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hlclR5cGVDYXB0dXJl
U2Vzc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSVENMb2coQCJSZXN0YXJ0aW5nIGNhcHR1cmUgc2Vz
c2lvbiBhZnRlciBlcnJvci4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChfaXNSdW5uaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfY2Fw
dHVyZVNlc3Npb24gc3RhcnRSdW5uaW5nXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzZWxmLmlzUnVubmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbc2VsZi5jYXB0dXJlU2Vzc2lvbiBzdGFydFJ1bm5pbmddOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dOwog
fQpAQCAtMzc5LDkgKzM4NCw5IEBAIC0gKHZvaWQpaGFuZGxlTm9uRmF0YWxFcnJvciB7CiAtICh2
b2lkKWhhbmRsZUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5v
dGlmaWNhdGlvbiB7CiAgIFtSVENEaXNwYXRjaGVyIGRpc3BhdGNoQXN5bmNPblR5cGU6UlRDRGlz
cGF0Y2hlclR5cGVDYXB0dXJlU2Vzc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJsb2NrOl57Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2lzUnVubmlu
ZyAmJiAhX2NhcHR1cmVTZXNzaW9uLmlzUnVubmluZykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHNlbGYuaXNSdW5uaW5nICYmICFzZWxmLmNhcHR1cmVTZXNzaW9uLmlz
UnVubmluZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVENMb2coQCJS
ZXN0YXJ0aW5nIGNhcHR1cmUgc2Vzc2lvbiBvbiBhY3RpdmUuIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtfY2FwdHVyZVNlc3Npb24gc3RhcnRSdW5uaW5nXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY2FwdHVyZVNlc3Npb24gc3RhcnRS
dW5uaW5nXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvY2FwdHVyZXIvUlRD
RmlsZVZpZGVvQ2FwdHVyZXIubSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvY2FwdHVyZXIvUlRDRmlsZVZpZGVvQ2FwdHVyZXIu
bQppbmRleCAwMDE0M2U5MDlmZDBhYTAyZmU3NzFmODBkNzkwZTk2Nzc4NDg3OTlhLi4yMDdhMjFk
OGMwZDNmNjkxNWQyMjhhZjRjYzIxZDJiZDgwNTAwYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL2NhcHR1
cmVyL1JUQ0ZpbGVWaWRlb0NhcHR1cmVyLm0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9jYXB0dXJlci9SVENGaWxlVmlk
ZW9DYXB0dXJlci5tCkBAIC0yNywxNSArMjcsMjEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgUlRDRmlsZVZpZGVvQ2FwdHVyZXJTdGF0dXMpIHsKICAgUlRDRmlsZVZpZGVvQ2FwdHVyZXJT
dGF0dXNTdG9wcGVkCiB9OwogCitAaW50ZXJmYWNlIFJUQ0ZpbGVWaWRlb0NhcHR1cmVyICgpCitA
cHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIENNVGltZSBsYXN0UHJlc2VudGF0aW9uVGltZTsK
K0Bwcm9wZXJ0eShub25hdG9taWMsIHN0cm9uZykgTlNVUkwgKmZpbGVVUkw7CitAZW5kCisKIEBp
bXBsZW1lbnRhdGlvbiBSVENGaWxlVmlkZW9DYXB0dXJlciB7CiAgIEFWQXNzZXRSZWFkZXIgKl9y
ZWFkZXI7CiAgIEFWQXNzZXRSZWFkZXJUcmFja091dHB1dCAqX291dFRyYWNrOwogICBSVENGaWxl
VmlkZW9DYXB0dXJlclN0YXR1cyBfc3RhdHVzOwotICBDTVRpbWUgX2xhc3RQcmVzZW50YXRpb25U
aW1lOwogICBkaXNwYXRjaF9xdWV1ZV90IF9mcmFtZVF1ZXVlOwotICBOU1VSTCAqX2ZpbGVVUkw7
CiB9CiAKK0BzeW50aGVzaXplIGxhc3RQcmVzZW50YXRpb25UaW1lID0gX2xhc3RQcmVzZW50YXRp
b25UaW1lOworQHN5bnRoZXNpemUgZmlsZVVSTCA9IF9maWxlVVJMOworCiAtICh2b2lkKXN0YXJ0
Q2FwdHVyaW5nRnJvbUZpbGVOYW1lZDooTlNTdHJpbmcgKiluYW1lT2ZGaWxlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb25FcnJvcjooUlRDRmlsZVZpZGVvQ2FwdHVyZXJFcnJvckJsb2Nr
KWVycm9yQmxvY2sgewogICBpZiAoX3N0YXR1cyA9PSBSVENGaWxlVmlkZW9DYXB0dXJlclN0YXR1
c1N0YXJ0ZWQpIHsKQEAgLTYyLDkgKzY4LDkgQEAgLSAodm9pZClzdGFydENhcHR1cmluZ0Zyb21G
aWxlTmFtZWQ6KE5TU3RyaW5nICopbmFtZU9mRmlsZQogICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIF9sYXN0UHJlc2VudGF0aW9uVGltZSA9IENNVGltZU1ha2UoMCwgMCk7CisgICAgc2VsZi5s
YXN0UHJlc2VudGF0aW9uVGltZSA9IENNVGltZU1ha2UoMCwgMCk7CiAKLSAgICBfZmlsZVVSTCA9
IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aEZvckZpbGVdOworICAgIHNlbGYuZmlsZVVSTCA9
IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aEZvckZpbGVdOwogICAgIFtzZWxmIHNldHVwUmVh
ZGVyT25FcnJvcjplcnJvckJsb2NrXTsKICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRl
cmVyL21ldGFsL1JUQ01UTFJlbmRlcmVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9yZW5kZXJlci9tZXRhbC9SVENNVExS
ZW5kZXJlci5tbQppbmRleCA4ZjM3MmJjZGJkODE1MmZiZDI1Y2NkNGJhM2ViZWNmMTFmMWFkZTVh
Li5mYjQ3OGQyNTMzMWU5Y2NlYzE0OTQwMTJmNjAyMDk2NzdmOTFmNjkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25l
bnRzL3JlbmRlcmVyL21ldGFsL1JUQ01UTFJlbmRlcmVyLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvcmVuZGVyZXIv
bWV0YWwvUlRDTVRMUmVuZGVyZXIubW0KQEAgLTE3Niw3ICsxNzYsOCBAQCAtIChCT09MKXNldHVw
VGV4dHVyZXNGb3JGcmFtZToobm9ubnVsbCBSVENWaWRlb0ZyYW1lICopZnJhbWUgewogICBSVENW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uOwogICBOU1ZhbHVlICpyb3RhdGlvbk92ZXJyaWRlID0gc2Vs
Zi5yb3RhdGlvbk92ZXJyaWRlOwogICBpZiAocm90YXRpb25PdmVycmlkZSkgewotI2lmIGRlZmlu
ZWQoX19JUEhPTkVfMTFfMCkgJiYgKF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0g
X19JUEhPTkVfMTFfMCkKKyNpZiBkZWZpbmVkKF9fSVBIT05FXzExXzApICYmIGRlZmluZWQoX19J
UEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCkgJiYgXAorICAgIChfX0lQSE9ORV9PU19WRVJT
SU9OX01BWF9BTExPV0VEID49IF9fSVBIT05FXzExXzApCiAgICAgaWYgKEBhdmFpbGFibGUoaU9T
IDExLCAqKSkgewogICAgICAgW3JvdGF0aW9uT3ZlcnJpZGUgZ2V0VmFsdWU6JnJvdGF0aW9uIHNp
emU6c2l6ZW9mKHJvdGF0aW9uKV07CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3JlbmRl
cmVyL21ldGFsL1JUQ01UTFZpZGVvVmlldy5tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy9yZW5kZXJlci9tZXRhbC9SVENNVExW
aWRlb1ZpZXcubQppbmRleCA3YWQxZDc5ZDNlM2Y2ZDYzYmU0NmRmZTA4NjExNjE4MTFhOWFhNTQz
Li5mODU3NWMwY2ZlZDUyZmM0YTU1YjhmNjIxNWZlOGIzY2I1ODY1NjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25l
bnRzL3JlbmRlcmVyL21ldGFsL1JUQ01UTFZpZGVvVmlldy5tCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvcmVuZGVyZXIv
bWV0YWwvUlRDTVRMVmlkZW9WaWV3Lm0KQEAgLTE0MSw2ICsxNDEsMTAgQEAgLSAodm9pZClkcmF3
SW5NVEtWaWV3Oihub25udWxsIE1US1ZpZXcgKil2aWV3IHsKICAgICByZXR1cm47CiAgIH0KIAor
ICBpZiAoQ0dSZWN0SXNFbXB0eSh2aWV3LmJvdW5kcykpIHsKKyAgICByZXR1cm47CisgIH0KKwog
ICBSVENNVExSZW5kZXJlciAqcmVuZGVyZXI7CiAgIGlmIChbdmlkZW9GcmFtZS5idWZmZXIgaXNL
aW5kT2ZDbGFzczpbUlRDQ1ZQaXhlbEJ1ZmZlciBjbGFzc11dKSB7CiAgICAgUlRDQ1ZQaXhlbEJ1
ZmZlciAqYnVmZmVyID0gKFJUQ0NWUGl4ZWxCdWZmZXIqKXZpZGVvRnJhbWUuYnVmZmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0Lm1tIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0Lm1tCmluZGV4IDYzMTcwMTMxODBkYWEzNzEy
YWQ3MjIyNWUwZDZmOGE2MDU5YzUxNzcuLjFjMThmYWIxN2RmOTY0NTYzZWVjZDhlMmU0MmVkZDBm
MDgwZWU0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2
NC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQubW0KQEAgLTY3
LDEyICs2NywyMyBAQCB2b2lkIGRlY29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayh2b2lkICpkZWNv
ZGVyUmVmLAogLy8gRGVjb2Rlci4KIEBpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0RlY29kZXJIMjY0
IHsKICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIF92aWRlb0Zvcm1hdDsKKyAgQ01NZW1v
cnlQb29sUmVmIF9tZW1vcnlQb29sOwogICBWVERlY29tcHJlc3Npb25TZXNzaW9uUmVmIF9kZWNv
bXByZXNzaW9uU2Vzc2lvbjsKICAgUlRDVmlkZW9EZWNvZGVyQ2FsbGJhY2sgX2NhbGxiYWNrOwog
ICBPU1N0YXR1cyBfZXJyb3I7CiB9CiAKKy0gKGluc3RhbmNldHlwZSlpbml0IHsKKyAgc2VsZiA9
IFtzdXBlciBpbml0XTsKKyAgaWYgKHNlbGYpIHsKKyAgICBfbWVtb3J5UG9vbCA9IENNTWVtb3J5
UG9vbENyZWF0ZShuaWwpOworICB9CisgIHJldHVybiBzZWxmOworfQorCiAtICh2b2lkKWRlYWxs
b2MgeworICBDTU1lbW9yeVBvb2xJbnZhbGlkYXRlKF9tZW1vcnlQb29sKTsKKyAgQ0ZSZWxlYXNl
KF9tZW1vcnlQb29sKTsKICAgW3NlbGYgZGVzdHJveURlY29tcHJlc3Npb25TZXNzaW9uXTsKICAg
W3NlbGYgc2V0VmlkZW9Gb3JtYXQ6bnVsbHB0cl07CiB9CkBAIC0xMjUsNyArMTM2LDggQEAgLSAo
TlNJbnRlZ2VyKWRlY29kZTooUlRDRW5jb2RlZEltYWdlICopaW5wdXRJbWFnZQogICBpZiAoIXdl
YnJ0Yzo6SDI2NEFubmV4QkJ1ZmZlclRvQ01TYW1wbGVCdWZmZXIoKHVpbnQ4X3QgKilpbnB1dElt
YWdlLmJ1ZmZlci5ieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlucHV0SW1hZ2UuYnVmZmVyLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92aWRlb0Zvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzYW1wbGVCdWZmZXIpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2FtcGxlQnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21lbW9y
eVBvb2wpKSB7CiAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKICAgfQogICBS
VENfRENIRUNLKHNhbXBsZUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL25h
bHVfcmV3cml0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL25hbHVfcmV3cml0ZXIuY2MKaW5kZXgg
YTg0OWQzZjA1M2UzOWQyMWUzOTAxZWQ0NTU5YTc1MDg2MmQ0NmNmYS4uNTVlZDFjMmI0Y2EzNzAw
ZTA4MDRhZGUyY2JiZWEwZTgwN2IxZTVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9u
YWx1X3Jld3JpdGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvbmFsdV9yZXdyaXRlci5jYwpA
QCAtMTYwLDcgKzE2MCw4IEBAIGJvb2wgSDI2NENNU2FtcGxlQnVmZmVyVG9Bbm5leEJCdWZmZXIo
CiBib29sIEgyNjRBbm5leEJCdWZmZXJUb0NNU2FtcGxlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGFu
bmV4Yl9idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBhbm5leGJfYnVmZmVyX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiB2aWRlb19mb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENNU2FtcGxlQnVmZmVyUmVmKiBvdXRfc2FtcGxl
X2J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiogb3V0X3NhbXBsZV9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENNTWVtb3J5UG9vbFJlZiBtZW1vcnlfcG9vbCkgewogICBSVENfRENIRUNL
KGFubmV4Yl9idWZmZXIpOwogICBSVENfRENIRUNLKG91dF9zYW1wbGVfYnVmZmVyKTsKICAgUlRD
X0RDSEVDSyh2aWRlb19mb3JtYXQpOwpAQCAtMTg1LDExICsxODYsMTEgQEAgYm9vbCBIMjY0QW5u
ZXhCQnVmZmVyVG9DTVNhbXBsZUJ1ZmZlcihjb25zdCB1aW50OF90KiBhbm5leGJfYnVmZmVyLAog
ICB9CiAKICAgLy8gQWxsb2NhdGUgbWVtb3J5IGFzIGEgYmxvY2sgYnVmZmVyLgotICAvLyBUT0RP
KHRrY2hpbik6IGZpZ3VyZSBvdXQgaG93IHRvIHVzZSBhIHBvb2wuCiAgIENNQmxvY2tCdWZmZXJS
ZWYgYmxvY2tfYnVmZmVyID0gbnVsbHB0cjsKKyAgQ0ZBbGxvY2F0b3JSZWYgYmxvY2tfYWxsb2Nh
dG9yID0gQ01NZW1vcnlQb29sR2V0QWxsb2NhdG9yKG1lbW9yeV9wb29sKTsKICAgT1NTdGF0dXMg
c3RhdHVzID0gQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jaygKLSAgICAgIG51bGxw
dHIsIG51bGxwdHIsIHJlYWRlci5CeXRlc1JlbWFpbmluZygpLCBudWxscHRyLCBudWxscHRyLCAw
LAotICAgICAgcmVhZGVyLkJ5dGVzUmVtYWluaW5nKCksIGtDTUJsb2NrQnVmZmVyQXNzdXJlTWVt
b3J5Tm93RmxhZywKKyAgICAgIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIHJlYWRlci5C
eXRlc1JlbWFpbmluZygpLCBibG9ja19hbGxvY2F0b3IsCisgICAgICBudWxscHRyLCAwLCByZWFk
ZXIuQnl0ZXNSZW1haW5pbmcoKSwga0NNQmxvY2tCdWZmZXJBc3N1cmVNZW1vcnlOb3dGbGFnLAog
ICAgICAgJmJsb2NrX2J1ZmZlcik7CiAgIGlmIChzdGF0dXMgIT0ga0NNQmxvY2tCdWZmZXJOb0Vy
cikgewogICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGJsb2NrIGJ1
ZmZlci4iOwpAQCAtMTk5LDggKzIwMCw5IEBAIGJvb2wgSDI2NEFubmV4QkJ1ZmZlclRvQ01TYW1w
bGVCdWZmZXIoY29uc3QgdWludDhfdCogYW5uZXhiX2J1ZmZlciwKICAgLy8gTWFrZSBzdXJlIGJs
b2NrIGJ1ZmZlciBpcyBjb250aWd1b3VzLgogICBDTUJsb2NrQnVmZmVyUmVmIGNvbnRpZ3VvdXNf
YnVmZmVyID0gbnVsbHB0cjsKICAgaWYgKCFDTUJsb2NrQnVmZmVySXNSYW5nZUNvbnRpZ3VvdXMo
YmxvY2tfYnVmZmVyLCAwLCAwKSkgewotICAgIHN0YXR1cyA9IENNQmxvY2tCdWZmZXJDcmVhdGVD
b250aWd1b3VzKAotICAgICAgICBudWxscHRyLCBibG9ja19idWZmZXIsIG51bGxwdHIsIG51bGxw
dHIsIDAsIDAsIDAsICZjb250aWd1b3VzX2J1ZmZlcik7CisgICAgc3RhdHVzID0gQ01CbG9ja0J1
ZmZlckNyZWF0ZUNvbnRpZ3VvdXMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmxvY2tfYnVmZmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX2FsbG9jYXRv
ciwgbnVsbHB0ciwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmY29udGlndW91c19idWZmZXIpOwogICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsK
ICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gZmxhdHRlbiBub24tY29udGln
dW91cyBibG9jayBidWZmZXI6ICIKICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN0YXR1czsK
QEAgLTIzNiw5ICsyMzgsOSBAQCBib29sIEgyNjRBbm5leEJCdWZmZXJUb0NNU2FtcGxlQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGFubmV4Yl9idWZmZXIsCiAgIH0KIAogICAvLyBDcmVhdGUgc2FtcGxl
IGJ1ZmZlci4KLSAgc3RhdHVzID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUobnVsbHB0ciwgY29udGln
dW91c19idWZmZXIsIHRydWUsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsIHZpZGVvX2Zvcm1hdCwgMSwgMCwgbnVsbHB0ciwgMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgb3V0X3NhbXBsZV9idWZmZXIpOworICBzdGF0
dXMgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb250aWd1b3Vz
X2J1ZmZlciwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwg
bnVsbHB0ciwgdmlkZW9fZm9ybWF0LCAxLCAwLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCBudWxscHRyLCBvdXRfc2FtcGxlX2J1ZmZlcik7CiAgIGlmIChzdGF0
dXMgIT0gbm9FcnIpIHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0
ZSBzYW1wbGUgYnVmZmVyLiI7CiAgICAgQ0ZSZWxlYXNlKGNvbnRpZ3VvdXNfYnVmZmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvbmFsdV9yZXdyaXRlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19j
b2RlYy9uYWx1X3Jld3JpdGVyLmgKaW5kZXggY2Q1YTUxMDc5YWI1YjIyNTg3N2QwMGNlMjM1YzY3
ZDBiMWViMGU5OC4uYTBjMWFhOTBhZjU3NTlkZTM5YjVkMDZjMjIxZDI4NDI5NDM4OTg3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvY29tcG9uZW50cy92aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRl
b19jb2RlYy9uYWx1X3Jld3JpdGVyLmgKQEAgLTQ0LDcgKzQ0LDggQEAgYm9vbCBIMjY0Q01TYW1w
bGVCdWZmZXJUb0FubmV4QkJ1ZmZlcigKIGJvb2wgSDI2NEFubmV4QkJ1ZmZlclRvQ01TYW1wbGVC
dWZmZXIoY29uc3QgdWludDhfdCogYW5uZXhiX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGFubmV4Yl9idWZmZXJfc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIHZp
ZGVvX2Zvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ01TYW1w
bGVCdWZmZXJSZWYqIG91dF9zYW1wbGVfYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYqIG91dF9zYW1wbGVfYnVmZmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTU1lbW9yeVBvb2xSZWYgbWVtb3J5
X3Bvb2wpOwogCiAvLyBSZXR1cm5zIGEgdmlkZW8gZm9ybWF0IGRlc2NyaXB0aW9uIGNyZWF0ZWQg
ZnJvbSB0aGUgc3BzL3BwcyBpbmZvcm1hdGlvbiBpbgogLy8gdGhlIEFubmV4IEIgYnVmZmVyLiBJ
ZiB0aGVyZSBpcyBubyBzdWNoIGluZm9ybWF0aW9uLCBudWxscHRyIGlzIHJldHVybmVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvY29tcG9uZW50cy92aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oCmluZGV4IGFiZTlkZmNhOTNi
MDRiZjU1MmVjMDMwMmI4MDc1OTdkZjI2MWVkYjEuLjQzMmEzODI1NzQ2NGIyNmNiNTMyMzRjOGEz
N2FmNjdkNThlZjgwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ0NW
UGl4ZWxCdWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVm
ZmVyLmgKQEAgLTE3LDcgKzE3LDYgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogLyoqIFJU
Q1ZpZGVvRnJhbWVCdWZmZXIgY29udGFpbmluZyBhIENWUGl4ZWxCdWZmZXJSZWYgKi8KIFJUQ19P
QkpDX0VYUE9SVAotX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0NWUGl4
ZWxCdWZmZXIiKSkpCiBAaW50ZXJmYWNlIFJUQ0NWUGl4ZWxCdWZmZXIgOiBOU09iamVjdCA8UlRD
VmlkZW9GcmFtZUJ1ZmZlcj4KIAogQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIENWUGl4
ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1JUQ0NhbWVyYVByZXZpZXdW
aWV3Lm0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9oZWxwZXJzL1JUQ0NhbWVyYVByZXZpZXdWaWV3Lm0KaW5kZXggMmFkZDQ2Y2Y3MWY2YTQ3ZGIw
NWY5ODNjNDY5ZTNmNDAxYjBlMzZmZi4uYWRjNjJjYzMwYWY0OTdiZGMxNjY0NGEzMTgxZTU5YTQ1
YzhkZDM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvaGVscGVycy9SVENDYW1lcmFQcmV2aWV3Vmlldy5tCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2hlbHBlcnMvUlRD
Q2FtZXJhUHJldmlld1ZpZXcubQpAQCAtNDcsMTkgKzQ3LDIyIEBAIC0gKHZvaWQpc2V0Q2FwdHVy
ZVNlc3Npb246KEFWQ2FwdHVyZVNlc3Npb24gKiljYXB0dXJlU2Vzc2lvbiB7CiAgIGlmIChfY2Fw
dHVyZVNlc3Npb24gPT0gY2FwdHVyZVNlc3Npb24pIHsKICAgICByZXR1cm47CiAgIH0KLSAgW1JU
Q0Rpc3BhdGNoZXIgZGlzcGF0Y2hBc3luY09uVHlwZTpSVENEaXNwYXRjaGVyVHlwZU1haW4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jazpeewotICAgIF9jYXB0dXJlU2Vzc2lv
biA9IGNhcHR1cmVTZXNzaW9uOwotICAgIEFWQ2FwdHVyZVZpZGVvUHJldmlld0xheWVyICpwcmV2
aWV3TGF5ZXIgPSBbc2VsZiBwcmV2aWV3TGF5ZXJdOwotICAgIFtSVENEaXNwYXRjaGVyIGRpc3Bh
dGNoQXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hlclR5cGVDYXB0dXJlU2Vzc2lvbgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2s6XnsKLSAgICAgIHByZXZpZXdMYXllci5zZXNz
aW9uID0gY2FwdHVyZVNlc3Npb247Ci0gICAgICBbUlRDRGlzcGF0Y2hlciBkaXNwYXRjaEFzeW5j
T25UeXBlOlJUQ0Rpc3BhdGNoZXJUeXBlTWFpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJsb2NrOl57Ci0gICAgICAgIFtzZWxmIHNldENvcnJlY3RWaWRlb09yaWVudGF0aW9uXTsK
LSAgICAgIH1dOwotICAgIH1dOwotICB9XTsKKyAgW1JUQ0Rpc3BhdGNoZXIKKyAgICAgIGRpc3Bh
dGNoQXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hlclR5cGVNYWluCisgICAgICAgICAgICAgICAgICAg
IGJsb2NrOl57CisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXB0dXJlU2Vzc2lvbiA9IGNh
cHR1cmVTZXNzaW9uOworICAgICAgICAgICAgICAgICAgICAgIEFWQ2FwdHVyZVZpZGVvUHJldmll
d0xheWVyICpwcmV2aWV3TGF5ZXIgPSBbc2VsZiBwcmV2aWV3TGF5ZXJdOworICAgICAgICAgICAg
ICAgICAgICAgIFtSVENEaXNwYXRjaGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bh
dGNoQXN5bmNPblR5cGU6UlRDRGlzcGF0Y2hlclR5cGVDYXB0dXJlU2Vzc2lvbgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOl57CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3TGF5ZXIuc2Vzc2lvbiA9IGNhcHR1cmVT
ZXNzaW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JUQ0Rp
c3BhdGNoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aXNwYXRjaEFzeW5jT25UeXBlOlJUQ0Rpc3BhdGNoZXJUeXBlTWFpbgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2s6XnsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW3NlbGYgc2V0Q29ycmVjdFZpZGVvT3JpZW50YXRpb25dOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV07CisgICAgICAgICAgICAgICAgICAgIH1d
OwogfQogCiAtICh2b2lkKWxheW91dFN1YnZpZXdzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2hlbHBlcnMvVUlEZXZpY2Ur
UlRDRGV2aWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9oZWxwZXJzL1VJRGV2aWNlK1JUQ0RldmljZS5oCmluZGV4IGViMzllYTljYzRkNzY3
MzQxYTNmN2FhMzk2Yjk4ZTcwNmZiMTNlMDQuLjczNjIzNzU4MmZlODI4YmQ3MzZlNWM4YzBiZGRl
YWU0ZThiZWJhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2hlbHBlcnMvVUlEZXZpY2UrUlRDRGV2aWNlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvaGVscGVycy9V
SURldmljZStSVENEZXZpY2UuaApAQCAtMzQsNiArMzQsOSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBSVENEZXZpY2VUeXBlKSB7CiAgIFJUQ0RldmljZVR5cGVJUGhvbmU4LAogICBSVENE
ZXZpY2VUeXBlSVBob25lOFBsdXMsCiAgIFJUQ0RldmljZVR5cGVJUGhvbmVYLAorICBSVENEZXZp
Y2VUeXBlSVBob25lWFMsCisgIFJUQ0RldmljZVR5cGVJUGhvbmVYU01heCwKKyAgUlRDRGV2aWNl
VHlwZUlQaG9uZVhSLAogICBSVENEZXZpY2VUeXBlSVBvZFRvdWNoMUcsCiAgIFJUQ0RldmljZVR5
cGVJUG9kVG91Y2gyRywKICAgUlRDRGV2aWNlVHlwZUlQb2RUb3VjaDNHLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvaGVscGVy
cy9VSURldmljZStSVENEZXZpY2UubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1VJRGV2aWNlK1JUQ0RldmljZS5tbQppbmRleCA5
NmFkYjlhZjc4MGUxM2YwOTg4MmVhZDdkODQ4YWVlN2M2MTZjMDkwLi42ZjY4ZTlmN2EwZGE0NmIw
NGU1YTk3OTUwOTg3NGQ2ZDJhM2FhMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9oZWxwZXJzL1VJRGV2aWNlK1JUQ0Rldmlj
ZS5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9oZWxwZXJzL1VJRGV2aWNlK1JUQ0RldmljZS5tbQpAQCAtMTcsODEgKzE3LDg1IEBAIEBp
bXBsZW1lbnRhdGlvbiBVSURldmljZSAoUlRDRGV2aWNlKQogCiArIChSVENEZXZpY2VUeXBlKWRl
dmljZVR5cGUgewogICBOU0RpY3Rpb25hcnkgKm1hY2hpbmVOYW1lVG9UeXBlID0gQHsKLSAgICBA
ImlQaG9uZTEsMSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTFHKSwKLSAgICBAImlQaG9uZTEsMiI6
IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTNHKSwKLSAgICBAImlQaG9uZTIsMSI6IEAoUlRDRGV2aWNl
VHlwZUlQaG9uZTNHUyksCi0gICAgQCJpUGhvbmUzLDEiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU0
KSwKLSAgICBAImlQaG9uZTMsMiI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTQpLAotICAgIEAiaVBo
b25lMywzIjogQChSVENEZXZpY2VUeXBlSVBob25lNFZlcml6b24pLAotICAgIEAiaVBob25lNCwx
IjogQChSVENEZXZpY2VUeXBlSVBob25lNFMpLAotICAgIEAiaVBob25lNSwxIjogQChSVENEZXZp
Y2VUeXBlSVBob25lNUdTTSksCi0gICAgQCJpUGhvbmU1LDIiOiBAKFJUQ0RldmljZVR5cGVJUGhv
bmU1R1NNX0NETUEpLAotICAgIEAiaVBob25lNSwzIjogQChSVENEZXZpY2VUeXBlSVBob25lNUNH
U00pLAotICAgIEAiaVBob25lNSw0IjogQChSVENEZXZpY2VUeXBlSVBob25lNUNHU01fQ0RNQSks
Ci0gICAgQCJpUGhvbmU2LDEiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1U0dTTSksCi0gICAgQCJp
UGhvbmU2LDIiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1U0dTTV9DRE1BKSwKLSAgICBAImlQaG9u
ZTcsMSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTZQbHVzKSwKLSAgICBAImlQaG9uZTcsMiI6IEAo
UlRDRGV2aWNlVHlwZUlQaG9uZTYpLAotICAgIEAiaVBob25lOCwxIjogQChSVENEZXZpY2VUeXBl
SVBob25lNlMpLAotICAgIEAiaVBob25lOCwyIjogQChSVENEZXZpY2VUeXBlSVBob25lNlNQbHVz
KSwKLSAgICBAImlQaG9uZTgsNCI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVNFKSwKLSAgICBAImlQ
aG9uZTksMSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTcpLAotICAgIEAiaVBob25lOSwyIjogQChS
VENEZXZpY2VUeXBlSVBob25lN1BsdXMpLAotICAgIEAiaVBob25lOSwzIjogQChSVENEZXZpY2VU
eXBlSVBob25lNyksCi0gICAgQCJpUGhvbmU5LDQiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU3UGx1
cyksCi0gICAgQCJpUGhvbmUxMCwxIjogQChSVENEZXZpY2VUeXBlSVBob25lOCksCi0gICAgQCJp
UGhvbmUxMCwyIjogQChSVENEZXZpY2VUeXBlSVBob25lOFBsdXMpLAotICAgIEAiaVBob25lMTAs
MyI6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVgpLAotICAgIEAiaVBob25lMTAsNCI6IEAoUlRDRGV2
aWNlVHlwZUlQaG9uZTgpLAotICAgIEAiaVBob25lMTAsNSI6IEAoUlRDRGV2aWNlVHlwZUlQaG9u
ZThQbHVzKSwKLSAgICBAImlQaG9uZTEwLDYiOiBAKFJUQ0RldmljZVR5cGVJUGhvbmVYKSwKLSAg
ICBAImlQb2QxLDEiOiBAKFJUQ0RldmljZVR5cGVJUG9kVG91Y2gxRyksCi0gICAgQCJpUG9kMiwx
IjogQChSVENEZXZpY2VUeXBlSVBvZFRvdWNoMkcpLAotICAgIEAiaVBvZDMsMSI6IEAoUlRDRGV2
aWNlVHlwZUlQb2RUb3VjaDNHKSwKLSAgICBAImlQb2Q0LDEiOiBAKFJUQ0RldmljZVR5cGVJUG9k
VG91Y2g0RyksCi0gICAgQCJpUG9kNSwxIjogQChSVENEZXZpY2VUeXBlSVBvZFRvdWNoNUcpLAot
ICAgIEAiaVBvZDcsMSI6IEAoUlRDRGV2aWNlVHlwZUlQb2RUb3VjaDZHKSwKLSAgICBAImlQYWQx
LDEiOiBAKFJUQ0RldmljZVR5cGVJUGFkKSwKLSAgICBAImlQYWQyLDEiOiBAKFJUQ0RldmljZVR5
cGVJUGFkMldpZmkpLAotICAgIEAiaVBhZDIsMiI6IEAoUlRDRGV2aWNlVHlwZUlQYWQyR1NNKSwK
LSAgICBAImlQYWQyLDMiOiBAKFJUQ0RldmljZVR5cGVJUGFkMkNETUEpLAotICAgIEAiaVBhZDIs
NCI6IEAoUlRDRGV2aWNlVHlwZUlQYWQyV2lmaTIpLAotICAgIEAiaVBhZDIsNSI6IEAoUlRDRGV2
aWNlVHlwZUlQYWRNaW5pV2lmaSksCi0gICAgQCJpUGFkMiw2IjogQChSVENEZXZpY2VUeXBlSVBh
ZE1pbmlHU00pLAotICAgIEAiaVBhZDIsNyI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pR1NNX0NE
TUEpLAotICAgIEAiaVBhZDMsMSI6IEAoUlRDRGV2aWNlVHlwZUlQYWQzV2lmaSksCi0gICAgQCJp
UGFkMywyIjogQChSVENEZXZpY2VUeXBlSVBhZDNHU01fQ0RNQSksCi0gICAgQCJpUGFkMywzIjog
QChSVENEZXZpY2VUeXBlSVBhZDNHU00pLAotICAgIEAiaVBhZDMsNCI6IEAoUlRDRGV2aWNlVHlw
ZUlQYWQ0V2lmaSksCi0gICAgQCJpUGFkMyw1IjogQChSVENEZXZpY2VUeXBlSVBhZDRHU00pLAot
ICAgIEAiaVBhZDMsNiI6IEAoUlRDRGV2aWNlVHlwZUlQYWQ0R1NNX0NETUEpLAotICAgIEAiaVBh
ZDQsMSI6IEAoUlRDRGV2aWNlVHlwZUlQYWRBaXJXaWZpKSwKLSAgICBAImlQYWQ0LDIiOiBAKFJU
Q0RldmljZVR5cGVJUGFkQWlyQ2VsbHVsYXIpLAotICAgIEAiaVBhZDQsMyI6IEAoUlRDRGV2aWNl
VHlwZUlQYWRBaXJXaWZpQ2VsbHVsYXIpLAotICAgIEAiaVBhZDQsNCI6IEAoUlRDRGV2aWNlVHlw
ZUlQYWRNaW5pMkdXaWZpKSwKLSAgICBAImlQYWQ0LDUiOiBAKFJUQ0RldmljZVR5cGVJUGFkTWlu
aTJHQ2VsbHVsYXIpLAotICAgIEAiaVBhZDQsNiI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMkdX
aWZpQ2VsbHVsYXIpLAotICAgIEAiaVBhZDQsNyI6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMyks
Ci0gICAgQCJpUGFkNCw4IjogQChSVENEZXZpY2VUeXBlSVBhZE1pbmkzKSwKLSAgICBAImlQYWQ0
LDkiOiBAKFJUQ0RldmljZVR5cGVJUGFkTWluaTMpLAotICAgIEAiaVBhZDUsMSI6IEAoUlRDRGV2
aWNlVHlwZUlQYWRNaW5pNCksCi0gICAgQCJpUGFkNSwyIjogQChSVENEZXZpY2VUeXBlSVBhZE1p
bmk0KSwKLSAgICBAImlQYWQ1LDMiOiBAKFJUQ0RldmljZVR5cGVJUGFkQWlyMiksCi0gICAgQCJp
UGFkNSw0IjogQChSVENEZXZpY2VUeXBlSVBhZEFpcjIpLAotICAgIEAiaVBhZDYsMyI6IEAoUlRD
RGV2aWNlVHlwZUlQYWRQcm85SW5jaCksCi0gICAgQCJpUGFkNiw0IjogQChSVENEZXZpY2VUeXBl
SVBhZFBybzlJbmNoKSwKLSAgICBAImlQYWQ2LDciOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTJJ
bmNoKSwKLSAgICBAImlQYWQ2LDgiOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTJJbmNoKSwKLSAg
ICBAImlQYWQ2LDExIjogQChSVENEZXZpY2VUeXBlSVBhZDUpLAotICAgIEAiaVBhZDYsMTIiOiBA
KFJUQ0RldmljZVR5cGVJUGFkNSksCi0gICAgQCJpUGFkNywxIjogQChSVENEZXZpY2VUeXBlSVBh
ZFBybzEySW5jaDIpLAotICAgIEAiaVBhZDcsMiI6IEAoUlRDRGV2aWNlVHlwZUlQYWRQcm8xMklu
Y2gyKSwKLSAgICBAImlQYWQ3LDMiOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTBJbmNoKSwKLSAg
ICBAImlQYWQ3LDQiOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTBJbmNoKSwKLSAgICBAImlQYWQ3
LDUiOiBAKFJUQ0RldmljZVR5cGVJUGFkNiksCi0gICAgQCJpUGFkNyw2IjogQChSVENEZXZpY2VU
eXBlSVBhZDYpLAotICAgIEAiaTM4NiI6IEAoUlRDRGV2aWNlVHlwZVNpbXVsYXRvcmkzODYpLAot
ICAgIEAieDg2XzY0IjogQChSVENEZXZpY2VUeXBlU2ltdWxhdG9yeDg2XzY0KSwKKyAgICBAImlQ
aG9uZTEsMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmUxRyksCisgICAgQCJpUGhvbmUxLDIiIDog
QChSVENEZXZpY2VUeXBlSVBob25lM0cpLAorICAgIEAiaVBob25lMiwxIiA6IEAoUlRDRGV2aWNl
VHlwZUlQaG9uZTNHUyksCisgICAgQCJpUGhvbmUzLDEiIDogQChSVENEZXZpY2VUeXBlSVBob25l
NCksCisgICAgQCJpUGhvbmUzLDIiIDogQChSVENEZXZpY2VUeXBlSVBob25lNCksCisgICAgQCJp
UGhvbmUzLDMiIDogQChSVENEZXZpY2VUeXBlSVBob25lNFZlcml6b24pLAorICAgIEAiaVBob25l
NCwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTRTKSwKKyAgICBAImlQaG9uZTUsMSIgOiBAKFJU
Q0RldmljZVR5cGVJUGhvbmU1R1NNKSwKKyAgICBAImlQaG9uZTUsMiIgOiBAKFJUQ0RldmljZVR5
cGVJUGhvbmU1R1NNX0NETUEpLAorICAgIEAiaVBob25lNSwzIiA6IEAoUlRDRGV2aWNlVHlwZUlQ
aG9uZTVDR1NNKSwKKyAgICBAImlQaG9uZTUsNCIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1Q0dT
TV9DRE1BKSwKKyAgICBAImlQaG9uZTYsMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU1U0dTTSks
CisgICAgQCJpUGhvbmU2LDIiIDogQChSVENEZXZpY2VUeXBlSVBob25lNVNHU01fQ0RNQSksCisg
ICAgQCJpUGhvbmU3LDEiIDogQChSVENEZXZpY2VUeXBlSVBob25lNlBsdXMpLAorICAgIEAiaVBo
b25lNywyIiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZTYpLAorICAgIEAiaVBob25lOCwxIiA6IEAo
UlRDRGV2aWNlVHlwZUlQaG9uZTZTKSwKKyAgICBAImlQaG9uZTgsMiIgOiBAKFJUQ0RldmljZVR5
cGVJUGhvbmU2U1BsdXMpLAorICAgIEAiaVBob25lOCw0IiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9u
ZVNFKSwKKyAgICBAImlQaG9uZTksMSIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU3KSwKKyAgICBA
ImlQaG9uZTksMiIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmU3UGx1cyksCisgICAgQCJpUGhvbmU5
LDMiIDogQChSVENEZXZpY2VUeXBlSVBob25lNyksCisgICAgQCJpUGhvbmU5LDQiIDogQChSVENE
ZXZpY2VUeXBlSVBob25lN1BsdXMpLAorICAgIEAiaVBob25lMTAsMSIgOiBAKFJUQ0RldmljZVR5
cGVJUGhvbmU4KSwKKyAgICBAImlQaG9uZTEwLDIiIDogQChSVENEZXZpY2VUeXBlSVBob25lOFBs
dXMpLAorICAgIEAiaVBob25lMTAsMyIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmVYKSwKKyAgICBA
ImlQaG9uZTEwLDQiIDogQChSVENEZXZpY2VUeXBlSVBob25lOCksCisgICAgQCJpUGhvbmUxMCw1
IiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZThQbHVzKSwKKyAgICBAImlQaG9uZTEwLDYiIDogQChS
VENEZXZpY2VUeXBlSVBob25lWCksCisgICAgQCJpUGhvbmUxMSwyIiA6IEAoUlRDRGV2aWNlVHlw
ZUlQaG9uZVhTKSwKKyAgICBAImlQaG9uZTExLDQiIDogQChSVENEZXZpY2VUeXBlSVBob25lWFNN
YXgpLAorICAgIEAiaVBob25lMTEsNiIgOiBAKFJUQ0RldmljZVR5cGVJUGhvbmVYU01heCksCisg
ICAgQCJpUGhvbmUxMSw4IiA6IEAoUlRDRGV2aWNlVHlwZUlQaG9uZVhSKSwKKyAgICBAImlQb2Qx
LDEiIDogQChSVENEZXZpY2VUeXBlSVBvZFRvdWNoMUcpLAorICAgIEAiaVBvZDIsMSIgOiBAKFJU
Q0RldmljZVR5cGVJUG9kVG91Y2gyRyksCisgICAgQCJpUG9kMywxIiA6IEAoUlRDRGV2aWNlVHlw
ZUlQb2RUb3VjaDNHKSwKKyAgICBAImlQb2Q0LDEiIDogQChSVENEZXZpY2VUeXBlSVBvZFRvdWNo
NEcpLAorICAgIEAiaVBvZDUsMSIgOiBAKFJUQ0RldmljZVR5cGVJUG9kVG91Y2g1RyksCisgICAg
QCJpUG9kNywxIiA6IEAoUlRDRGV2aWNlVHlwZUlQb2RUb3VjaDZHKSwKKyAgICBAImlQYWQxLDEi
IDogQChSVENEZXZpY2VUeXBlSVBhZCksCisgICAgQCJpUGFkMiwxIiA6IEAoUlRDRGV2aWNlVHlw
ZUlQYWQyV2lmaSksCisgICAgQCJpUGFkMiwyIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQyR1NNKSwK
KyAgICBAImlQYWQyLDMiIDogQChSVENEZXZpY2VUeXBlSVBhZDJDRE1BKSwKKyAgICBAImlQYWQy
LDQiIDogQChSVENEZXZpY2VUeXBlSVBhZDJXaWZpMiksCisgICAgQCJpUGFkMiw1IiA6IEAoUlRD
RGV2aWNlVHlwZUlQYWRNaW5pV2lmaSksCisgICAgQCJpUGFkMiw2IiA6IEAoUlRDRGV2aWNlVHlw
ZUlQYWRNaW5pR1NNKSwKKyAgICBAImlQYWQyLDciIDogQChSVENEZXZpY2VUeXBlSVBhZE1pbmlH
U01fQ0RNQSksCisgICAgQCJpUGFkMywxIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQzV2lmaSksCisg
ICAgQCJpUGFkMywyIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWQzR1NNX0NETUEpLAorICAgIEAiaVBh
ZDMsMyIgOiBAKFJUQ0RldmljZVR5cGVJUGFkM0dTTSksCisgICAgQCJpUGFkMyw0IiA6IEAoUlRD
RGV2aWNlVHlwZUlQYWQ0V2lmaSksCisgICAgQCJpUGFkMyw1IiA6IEAoUlRDRGV2aWNlVHlwZUlQ
YWQ0R1NNKSwKKyAgICBAImlQYWQzLDYiIDogQChSVENEZXZpY2VUeXBlSVBhZDRHU01fQ0RNQSks
CisgICAgQCJpUGFkNCwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRBaXJXaWZpKSwKKyAgICBAImlQ
YWQ0LDIiIDogQChSVENEZXZpY2VUeXBlSVBhZEFpckNlbGx1bGFyKSwKKyAgICBAImlQYWQ0LDMi
IDogQChSVENEZXZpY2VUeXBlSVBhZEFpcldpZmlDZWxsdWxhciksCisgICAgQCJpUGFkNCw0IiA6
IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMkdXaWZpKSwKKyAgICBAImlQYWQ0LDUiIDogQChSVENE
ZXZpY2VUeXBlSVBhZE1pbmkyR0NlbGx1bGFyKSwKKyAgICBAImlQYWQ0LDYiIDogQChSVENEZXZp
Y2VUeXBlSVBhZE1pbmkyR1dpZmlDZWxsdWxhciksCisgICAgQCJpUGFkNCw3IiA6IEAoUlRDRGV2
aWNlVHlwZUlQYWRNaW5pMyksCisgICAgQCJpUGFkNCw4IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRN
aW5pMyksCisgICAgQCJpUGFkNCw5IiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pMyksCisgICAg
QCJpUGFkNSwxIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pNCksCisgICAgQCJpUGFkNSwyIiA6
IEAoUlRDRGV2aWNlVHlwZUlQYWRNaW5pNCksCisgICAgQCJpUGFkNSwzIiA6IEAoUlRDRGV2aWNl
VHlwZUlQYWRBaXIyKSwKKyAgICBAImlQYWQ1LDQiIDogQChSVENEZXZpY2VUeXBlSVBhZEFpcjIp
LAorICAgIEAiaVBhZDYsMyIgOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvOUluY2gpLAorICAgIEAi
aVBhZDYsNCIgOiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvOUluY2gpLAorICAgIEAiaVBhZDYsNyIg
OiBAKFJUQ0RldmljZVR5cGVJUGFkUHJvMTJJbmNoKSwKKyAgICBAImlQYWQ2LDgiIDogQChSVENE
ZXZpY2VUeXBlSVBhZFBybzEySW5jaCksCisgICAgQCJpUGFkNiwxMSIgOiBAKFJUQ0RldmljZVR5
cGVJUGFkNSksCisgICAgQCJpUGFkNiwxMiIgOiBAKFJUQ0RldmljZVR5cGVJUGFkNSksCisgICAg
QCJpUGFkNywxIiA6IEAoUlRDRGV2aWNlVHlwZUlQYWRQcm8xMkluY2gyKSwKKyAgICBAImlQYWQ3
LDIiIDogQChSVENEZXZpY2VUeXBlSVBhZFBybzEySW5jaDIpLAorICAgIEAiaVBhZDcsMyIgOiBA
KFJUQ0RldmljZVR5cGVJUGFkUHJvMTBJbmNoKSwKKyAgICBAImlQYWQ3LDQiIDogQChSVENEZXZp
Y2VUeXBlSVBhZFBybzEwSW5jaCksCisgICAgQCJpUGFkNyw1IiA6IEAoUlRDRGV2aWNlVHlwZUlQ
YWQ2KSwKKyAgICBAImlQYWQ3LDYiIDogQChSVENEZXZpY2VUeXBlSVBhZDYpLAorICAgIEAiaTM4
NiIgOiBAKFJUQ0RldmljZVR5cGVTaW11bGF0b3JpMzg2KSwKKyAgICBAIng4Nl82NCIgOiBAKFJU
Q0RldmljZVR5cGVTaW11bGF0b3J4ODZfNjQpLAogICB9OwogCiAgIFJUQ0RldmljZVR5cGUgZGV2
aWNlVHlwZSA9IFJUQ0RldmljZVR5cGVVbmtub3duOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL2FwaS92aWRlb19j
YXB0dXJlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvbmF0aXZlL2FwaS92aWRlb19jYXB0dXJlci5oCmluZGV4IDViNmYzZjkzOWJhYTdjNjYy
MzM1ZDc5MWU2ODgwNjkzMzg5YTFkNTEuLmQ2ZjM5NmI0NzAxY2FjNTcwOGIwZjY3NmRhNDY2MzY2
NTRmMzZhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL25hdGl2ZS9hcGkvdmlkZW9fY2FwdHVyZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9uYXRpdmUvYXBpL3Zp
ZGVvX2NhcHR1cmVyLmgKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1ZGUgImFwaS9tZWRpYXN0
cmVhbWludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9uYXRpdmUvc3JjL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeS5tbQppbmRleCBjNGM4NWNjNmFiOTAzNTM1ZTVlZjAxZTdjZjVh
ODE1MzFkMTcwZTZmLi5hZTQ1MDMzYTU3MGYxYzE5ODlkYjMxYzU0ZTFmYmVmMTllZmM0YTE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9uYXRpdmUvc3JjL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMv
b2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KQEAgLTg2LDI4ICs4NiwyNiBAQCBjbGFzcyBP
YmpDVmlkZW9FbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgICAgICAgICAgICAgICAg
IGZyYW1lVHlwZXM6cnRjRnJhbWVUeXBlc107CiAgIH0KIAotICBpbnQzMl90IFNldENoYW5uZWxQ
YXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgeyByZXR1cm4gV0VC
UlRDX1ZJREVPX0NPREVDX09LOyB9Ci0KICAgaW50MzJfdCBTZXRSYXRlcyh1aW50MzJfdCBiaXRy
YXRlLCB1aW50MzJfdCBmcmFtZXJhdGUpIHsKICAgICByZXR1cm4gW2VuY29kZXJfIHNldEJpdHJh
dGU6Yml0cmF0ZSBmcmFtZXJhdGU6ZnJhbWVyYXRlXTsKICAgfQogCiAgIGludDMyX3QgU2V0UmF0
ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgYWxsb2NhdGlvbiwgdWlu
dDMyX3QgZnJhbWVyYXRlKSB7Ci0gICAgUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqYml0cmF0
ZUFsbG9jYXRpb24gPQotICAgICAgW1tSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGFsbG9jXSBp
bml0V2l0aE5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb246JmFsbG9jYXRpb25dOwotICAgIHJl
dHVybiBbZW5jb2Rlcl8gc2V0UmF0ZUFsbG9jYXRpb246IGJpdHJhdGVBbGxvY2F0aW9uIGZyYW1l
cmF0ZTpmcmFtZXJhdGVdOworICAgIGF1dG8gKnJ0Y0FsbG9jYXRpb24gPSBbW1JUQ1ZpZGVvQml0
cmF0ZUFsbG9jYXRpb24gYWxsb2NdIGluaXRXaXRoTmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlv
bjomYWxsb2NhdGlvbl07CisgICAgcmV0dXJuIFtlbmNvZGVyXyBzZXRSYXRlQWxsb2NhdGlvbjog
cnRjQWxsb2NhdGlvbiBmcmFtZXJhdGU6ZnJhbWVyYXRlXTsKICAgfQogCi0gIGJvb2wgU3VwcG9y
dHNOYXRpdmVIYW5kbGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgIFZpZGVvRW5jb2Rlcjo6
RW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCB7CisgICAgRW5jb2RlckluZm8gaW5m
bzsKKyAgICBpbmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSB0cnVlOworICAgIGluZm8uaW1w
bGVtZW50YXRpb25fbmFtZSA9IGltcGxlbWVudGF0aW9uX25hbWVfOwogCi0gIFZpZGVvRW5jb2Rl
cjo6U2NhbGluZ1NldHRpbmdzIEdldFNjYWxpbmdTZXR0aW5ncygpIGNvbnN0IHsKICAgICBSVENW
aWRlb0VuY29kZXJRcFRocmVzaG9sZHMgKnFwX3RocmVzaG9sZHMgPSBbZW5jb2Rlcl8gc2NhbGlu
Z1NldHRpbmdzXTsKLSAgICByZXR1cm4gcXBfdGhyZXNob2xkcyA/IFNjYWxpbmdTZXR0aW5ncyhx
cF90aHJlc2hvbGRzLmxvdywgcXBfdGhyZXNob2xkcy5oaWdoKSA6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBTY2FsaW5nU2V0dGluZ3M6OmtPZmY7CisgICAgaW5mby5zY2FsaW5nX3NldHRp
bmdzID0gcXBfdGhyZXNob2xkcyA/IFNjYWxpbmdTZXR0aW5ncyhxcF90aHJlc2hvbGRzLmxvdywg
cXBfdGhyZXNob2xkcy5oaWdoKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNjYWxpbmdTZXR0aW5nczo6a09mZjsKKyAgICByZXR1cm4gaW5mbzsKICAgfQog
Ci0gIGNvbnN0IGNoYXIgKkltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGltcGxl
bWVudGF0aW9uX25hbWVfLmNfc3RyKCk7IH0KLQogIHByaXZhdGU6CiAgIGlkPFJUQ1ZpZGVvRW5j
b2Rlcj4gZW5jb2Rlcl87CiAgIGNvbnN0IHN0ZDo6c3RyaW5nIGltcGxlbWVudGF0aW9uX25hbWVf
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvdW5pdHRlc3RzL1JUQ0F1ZGlvRGV2aWNlTW9kdWxlX3hjdGVzdC5tbSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9S
VENBdWRpb0RldmljZU1vZHVsZV94Y3Rlc3QubW0KaW5kZXggNjg5ZGU1ODFkMDRlYWY1OGFlNDcz
Y2NkZmU1MjE4M2IwMjU2NDM3ZS4uNTVkNDhjMjhiYTcxZTkzZjAzZjlkZWI3ODczZjU0MTEzYzBj
MWVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0F1ZGlvRGV2aWNlTW9kdWxlX3hjdGVzdC5tbQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0
dGVzdHMvUlRDQXVkaW9EZXZpY2VNb2R1bGVfeGN0ZXN0Lm1tCkBAIC0xMjgsMTcgKzEyOCwyMCBA
QCBzdGF0aWMgY29uc3QgTlNVSW50ZWdlciBrRnVsbER1cGxleFRpbWVJblNlYyA9IDEwOwogc3Rh
dGljIGNvbnN0IE5TVUludGVnZXIga051bUlnbm9yZUZpcnN0Q2FsbGJhY2tzID0gNTA7CiAKIEBp
bnRlcmZhY2UgUlRDQXVkaW9EZXZpY2VNb2R1bGVUZXN0cyA6IFhDVGVzdENhc2UgewotCiAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlPiBhdWRpb0RldmljZU1v
ZHVsZTsKLSAgd2VicnRjOjpBdWRpb1BhcmFtZXRlcnMgcGxheW91dFBhcmFtZXRlcnM7Ci0gIHdl
YnJ0Yzo6QXVkaW9QYXJhbWV0ZXJzIHJlY29yZFBhcmFtZXRlcnM7CiAgIE1vY2tBdWRpb1RyYW5z
cG9ydCBtb2NrOwogfQogCitAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIHdlYnJ0Yzo6QXVk
aW9QYXJhbWV0ZXJzIHBsYXlvdXRQYXJhbWV0ZXJzOworQHByb3BlcnR5KG5vbmF0b21pYywgYXNz
aWduKSB3ZWJydGM6OkF1ZGlvUGFyYW1ldGVycyByZWNvcmRQYXJhbWV0ZXJzOworCiBAZW5kCiAK
IEBpbXBsZW1lbnRhdGlvbiBSVENBdWRpb0RldmljZU1vZHVsZVRlc3RzCiAKK0BzeW50aGVzaXpl
IHBsYXlvdXRQYXJhbWV0ZXJzOworQHN5bnRoZXNpemUgcmVjb3JkUGFyYW1ldGVyczsKKwogLSAo
dm9pZClzZXRVcCB7CiAgIFtzdXBlciBzZXRVcF07CiAgIGF1ZGlvRGV2aWNlTW9kdWxlID0gd2Vi
cnRjOjpDcmVhdGVBdWRpb0RldmljZU1vZHVsZSgpOwpAQCAtMjU0LDEwICsyNTcsMTAgQEAgLSAo
dm9pZCl0ZXN0U3RhcnRQbGF5b3V0T25Ud29JbnN0YW5jZXMgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCAqZWxhcHNlZF90aW1lX21zLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCAqbnRwX3RpbWVfbXMpIHsKICAg
ICBuU2FtcGxlc091dCA9IG5TYW1wbGVzOwotICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCBw
bGF5b3V0UGFyYW1ldGVycy5mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpOworICAgIFhDVEFzc2Vy
dEVxdWFsKG5TYW1wbGVzLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBtc19i
dWZmZXIoKSk7CiAgICAgWENUQXNzZXJ0RXF1YWwobkJ5dGVzUGVyU2FtcGxlLCBrQnl0ZXNQZXJT
YW1wbGUpOwotICAgIFhDVEFzc2VydEVxdWFsKG5DaGFubmVscywgcGxheW91dFBhcmFtZXRlcnMu
Y2hhbm5lbHMoKSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwoKGludCkgc2FtcGxlc1BlclNlYywgcGxh
eW91dFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwobkNoYW5u
ZWxzLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLmNoYW5uZWxzKCkpOworICAgIFhDVEFzc2VydEVx
dWFsKChpbnQpc2FtcGxlc1BlclNlYywgc2VsZi5wbGF5b3V0UGFyYW1ldGVycy5zYW1wbGVfcmF0
ZSgpKTsKICAgICBYQ1RBc3NlcnROb3RFcXVhbCgodm9pZCopTlVMTCwgYXVkaW9TYW1wbGVzKTsK
IAogICAgIHJldHVybiAwOwpAQCAtMjkxLDEwICsyOTQsMTAgQEAgLSAodm9pZCl0ZXN0U3RhcnRQ
bGF5b3V0T25Ud29JbnN0YW5jZXMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDY0X3QgKmVsYXBzZWRfdGltZV9tcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90ICpudHBfdGltZV9tcykgewogICAgIG5TYW1wbGVzT3V0
ID0gblNhbXBsZXM7Ci0gICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHBsYXlvdXRQYXJhbWV0
ZXJzLmZyYW1lc19wZXJfMTBtc19idWZmZXIoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoblNhbXBs
ZXMsIHNlbGYucGxheW91dFBhcmFtZXRlcnMuZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKTsKICAg
ICBYQ1RBc3NlcnRFcXVhbChuQnl0ZXNQZXJTYW1wbGUsIGtCeXRlc1BlclNhbXBsZSk7Ci0gICAg
WENUQXNzZXJ0RXF1YWwobkNoYW5uZWxzLCBwbGF5b3V0UGFyYW1ldGVycy5jaGFubmVscygpKTsK
LSAgICBYQ1RBc3NlcnRFcXVhbCgoaW50KSBzYW1wbGVzUGVyU2VjLCBwbGF5b3V0UGFyYW1ldGVy
cy5zYW1wbGVfcmF0ZSgpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbChuQ2hhbm5lbHMsIHNlbGYucGxh
eW91dFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoKGludClzYW1w
bGVzUGVyU2VjLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLnNhbXBsZV9yYXRlKCkpOwogICAgIFhD
VEFzc2VydE5vdEVxdWFsKCh2b2lkKilOVUxMLCBhdWRpb1NhbXBsZXMpOwogICAgIGlmICgrK251
bV9jYWxsYmFja3MgPT0ga051bUNhbGxiYWNrcykgewogICAgICAgW3BsYXlvdXRFeHBlY3RhdGlv
biBmdWxmaWxsXTsKQEAgLTMzMCwxMCArMzMzLDEwIEBAIC0gKHZvaWQpdGVzdFN0YXJ0UGxheW91
dFZlcmlmeUNhbGxiYWNrcyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90ICplbGFwc2VkX3RpbWVfbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQ2NF90ICpudHBfdGltZV9tcykgewogICAgIG5TYW1wbGVzT3V0ID0gblNh
bXBsZXM7Ci0gICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHBsYXlvdXRQYXJhbWV0ZXJzLmZy
YW1lc19wZXJfMTBtc19idWZmZXIoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHNl
bGYucGxheW91dFBhcmFtZXRlcnMuZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKTsKICAgICBYQ1RB
c3NlcnRFcXVhbChuQnl0ZXNQZXJTYW1wbGUsIGtCeXRlc1BlclNhbXBsZSk7Ci0gICAgWENUQXNz
ZXJ0RXF1YWwobkNoYW5uZWxzLCBwbGF5b3V0UGFyYW1ldGVycy5jaGFubmVscygpKTsKLSAgICBY
Q1RBc3NlcnRFcXVhbCgoaW50KSBzYW1wbGVzUGVyU2VjLCBwbGF5b3V0UGFyYW1ldGVycy5zYW1w
bGVfcmF0ZSgpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbChuQ2hhbm5lbHMsIHNlbGYucGxheW91dFBh
cmFtZXRlcnMuY2hhbm5lbHMoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoKGludClzYW1wbGVzUGVy
U2VjLCBzZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLnNhbXBsZV9yYXRlKCkpOwogICAgIFhDVEFzc2Vy
dE5vdEVxdWFsKCh2b2lkKilOVUxMLCBhdWRpb1NhbXBsZXMpOwogICAgIGlmICgrK251bV9jYWxs
YmFja3MgPT0ga051bUNhbGxiYWNrcykgewogICAgICAgW3BsYXlvdXRFeHBlY3RhdGlvbiBmdWxm
aWxsXTsKQEAgLTM2NiwxMCArMzY5LDEwIEBAIC0gKHZvaWQpdGVzdFN0YXJ0UmVjb3JkaW5nVmVy
aWZ5Q2FsbGJhY2tzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGJvb2wga2V5UHJlc3NlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90JiBuZXdNaWNMZXZlbCkgewogICAgIFhDVEFzc2VydE5vdEVxdWFsKCh2b2lk
KilOVUxMLCBhdWRpb1NhbXBsZXMpOwotICAgIFhDVEFzc2VydEVxdWFsKG5TYW1wbGVzLCByZWNv
cmRQYXJhbWV0ZXJzLmZyYW1lc19wZXJfMTBtc19idWZmZXIoKSk7CisgICAgWENUQXNzZXJ0RXF1
YWwoblNhbXBsZXMsIHNlbGYucmVjb3JkUGFyYW1ldGVycy5mcmFtZXNfcGVyXzEwbXNfYnVmZmVy
KCkpOwogICAgIFhDVEFzc2VydEVxdWFsKG5CeXRlc1BlclNhbXBsZSwga0J5dGVzUGVyU2FtcGxl
KTsKLSAgICBYQ1RBc3NlcnRFcXVhbChuQ2hhbm5lbHMsIHJlY29yZFBhcmFtZXRlcnMuY2hhbm5l
bHMoKSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwoKGludCkgc2FtcGxlc1BlclNlYywgcmVjb3JkUGFy
YW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbChuQ2hhbm5lbHMsIHNl
bGYucmVjb3JkUGFyYW1ldGVycy5jaGFubmVscygpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbCgoaW50
KXNhbXBsZXNQZXJTZWMsIHNlbGYucmVjb3JkUGFyYW1ldGVycy5zYW1wbGVfcmF0ZSgpKTsKICAg
ICBYQ1RBc3NlcnRFcXVhbCgwLCBjbG9ja0RyaWZ0KTsKICAgICBYQ1RBc3NlcnRFcXVhbCgwdSwg
Y3VycmVudE1pY0xldmVsKTsKICAgICBYQ1RBc3NlcnRGYWxzZShrZXlQcmVzc2VkKTsKQEAgLTQw
NSwxMCArNDA4LDEwIEBAIC0gKHZvaWQpdGVzdFN0YXJ0UGxheW91dEFuZFJlY29yZGluZ1Zlcmlm
eUNhbGxiYWNrcyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2
NF90ICplbGFwc2VkX3RpbWVfbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQ2NF90ICpudHBfdGltZV9tcykgewogICAgIG5TYW1wbGVzT3V0ID0gblNhbXBsZXM7
Ci0gICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHBsYXlvdXRQYXJhbWV0ZXJzLmZyYW1lc19w
ZXJfMTBtc19idWZmZXIoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoblNhbXBsZXMsIHNlbGYucGxh
eW91dFBhcmFtZXRlcnMuZnJhbWVzX3Blcl8xMG1zX2J1ZmZlcigpKTsKICAgICBYQ1RBc3NlcnRF
cXVhbChuQnl0ZXNQZXJTYW1wbGUsIGtCeXRlc1BlclNhbXBsZSk7Ci0gICAgWENUQXNzZXJ0RXF1
YWwobkNoYW5uZWxzLCBwbGF5b3V0UGFyYW1ldGVycy5jaGFubmVscygpKTsKLSAgICBYQ1RBc3Nl
cnRFcXVhbCgoaW50KSBzYW1wbGVzUGVyU2VjLCBwbGF5b3V0UGFyYW1ldGVycy5zYW1wbGVfcmF0
ZSgpKTsKKyAgICBYQ1RBc3NlcnRFcXVhbChuQ2hhbm5lbHMsIHNlbGYucGxheW91dFBhcmFtZXRl
cnMuY2hhbm5lbHMoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwoKGludClzYW1wbGVzUGVyU2VjLCBz
ZWxmLnBsYXlvdXRQYXJhbWV0ZXJzLnNhbXBsZV9yYXRlKCkpOwogICAgIFhDVEFzc2VydE5vdEVx
dWFsKCh2b2lkKilOVUxMLCBhdWRpb1NhbXBsZXMpOwogICAgIGlmIChjYWxsYmFja0NvdW50Kysg
Pj0ga051bUNhbGxiYWNrcykgewogICAgICAgW3BsYXlvdXRFeHBlY3RhdGlvbiBmdWxmaWxsXTsK
QEAgLTQyOCwxMCArNDMxLDEwIEBAIC0gKHZvaWQpdGVzdFN0YXJ0UGxheW91dEFuZFJlY29yZGlu
Z1ZlcmlmeUNhbGxiYWNrcyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBib29sIGtleVByZXNzZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCYgbmV3TWljTGV2ZWwpIHsKICAgICBYQ1RBc3NlcnROb3RFcXVhbCgo
dm9pZCopTlVMTCwgYXVkaW9TYW1wbGVzKTsKLSAgICBYQ1RBc3NlcnRFcXVhbChuU2FtcGxlcywg
cmVjb3JkUGFyYW1ldGVycy5mcmFtZXNfcGVyXzEwbXNfYnVmZmVyKCkpOworICAgIFhDVEFzc2Vy
dEVxdWFsKG5TYW1wbGVzLCBzZWxmLnJlY29yZFBhcmFtZXRlcnMuZnJhbWVzX3Blcl8xMG1zX2J1
ZmZlcigpKTsKICAgICBYQ1RBc3NlcnRFcXVhbChuQnl0ZXNQZXJTYW1wbGUsIGtCeXRlc1BlclNh
bXBsZSk7Ci0gICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxzLCByZWNvcmRQYXJhbWV0ZXJzLmNo
YW5uZWxzKCkpOwotICAgIFhDVEFzc2VydEVxdWFsKChpbnQpIHNhbXBsZXNQZXJTZWMsIHJlY29y
ZFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwobkNoYW5uZWxz
LCBzZWxmLnJlY29yZFBhcmFtZXRlcnMuY2hhbm5lbHMoKSk7CisgICAgWENUQXNzZXJ0RXF1YWwo
KGludClzYW1wbGVzUGVyU2VjLCBzZWxmLnJlY29yZFBhcmFtZXRlcnMuc2FtcGxlX3JhdGUoKSk7
CiAgICAgWENUQXNzZXJ0RXF1YWwoMCwgY2xvY2tEcmlmdCk7CiAgICAgWENUQXNzZXJ0RXF1YWwo
MHUsIGN1cnJlbnRNaWNMZXZlbCk7CiAgICAgWENUQXNzZXJ0RmFsc2Uoa2V5UHJlc3NlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy91bml0dGVzdHMvUlRDQ2FsbGJhY2tMb2dnZXJfeGN0ZXN0Lm0gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQ2FsbGJh
Y2tMb2dnZXJfeGN0ZXN0Lm0KaW5kZXggNGEwYTJiM2U2ZDE1YmQ3MWQ5NmE1OTIyMjJhY2Q1YTM0
NzRjMmE5ZS4uY2VhYTc2MmYxZjhhMWYwOTdkNTFjNTVlMDkyNTJkOTJlZDk5YjcxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
dW5pdHRlc3RzL1JUQ0NhbGxiYWNrTG9nZ2VyX3hjdGVzdC5tCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENDYWxsYmFj
a0xvZ2dlcl94Y3Rlc3QubQpAQCAtNDksNiArNDksMjMgQEAgLSAodm9pZCl0ZXN0Q2FsbGJhY2tH
ZXRzQ2FsbGVkRm9yQXBwcm9wcmlhdGVMZXZlbCB7CiAgIFtzZWxmIHdhaXRGb3JFeHBlY3RhdGlv
bnM6QFsgY2FsbGJhY2tFeHBlY3RhdGlvbiBdIHRpbWVvdXQ6MTAuMF07CiB9CiAKKy0gKHZvaWQp
dGVzdENhbGxiYWNrV2l0aFNldmVyaXR5R2V0c0NhbGxlZEZvckFwcHJvcHJpYXRlTGV2ZWwgewor
ICBzZWxmLmxvZ2dlci5zZXZlcml0eSA9IFJUQ0xvZ2dpbmdTZXZlcml0eVdhcm5pbmc7CisKKyAg
WENUZXN0RXhwZWN0YXRpb24gKmNhbGxiYWNrRXhwZWN0YXRpb24gPSBbc2VsZiBleHBlY3RhdGlv
bldpdGhEZXNjcmlwdGlvbjpAImNhbGxiYWNrV2FybmluZyJdOworCisgIFtzZWxmLmxvZ2dlcgor
ICAgICAgc3RhcnRXaXRoTWVzc2FnZUFuZFNldmVyaXR5SGFuZGxlcjpeKE5TU3RyaW5nICptZXNz
YWdlLCBSVENMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkpIHsKKyAgICAgICAgWENUQXNzZXJ0VHJ1
ZShbbWVzc2FnZSBoYXNTdWZmaXg6QCJIb3JyaWJsZSBlcnJvclxuIl0pOworICAgICAgICBYQ1RB
c3NlcnRFcXVhbChzZXZlcml0eSwgUlRDTG9nZ2luZ1NldmVyaXR5RXJyb3IpOworICAgICAgICBb
Y2FsbGJhY2tFeHBlY3RhdGlvbiBmdWxmaWxsXTsKKyAgICAgIH1dOworCisgIFJUQ0xvZ0Vycm9y
KCJIb3JyaWJsZSBlcnJvciIpOworCisgIFtzZWxmIHdhaXRGb3JFeHBlY3RhdGlvbnM6QFsgY2Fs
bGJhY2tFeHBlY3RhdGlvbiBdIHRpbWVvdXQ6MTAuMF07Cit9CisKIC0gKHZvaWQpdGVzdENhbGxi
YWNrRG9lc05vdEdldENhbGxlZEZvck90aGVyTGV2ZWxzIHsKICAgc2VsZi5sb2dnZXIuc2V2ZXJp
dHkgPSBSVENMb2dnaW5nU2V2ZXJpdHlFcnJvcjsKIApAQCAtNjYsMTIgKzgzLDc2IEBAIC0gKHZv
aWQpdGVzdENhbGxiYWNrRG9lc05vdEdldENhbGxlZEZvck90aGVyTGV2ZWxzIHsKICAgW3NlbGYg
d2FpdEZvckV4cGVjdGF0aW9uczpAWyBjYWxsYmFja0V4cGVjdGF0aW9uIF0gdGltZW91dDoxMC4w
XTsKIH0KIAorLSAodm9pZCl0ZXN0Q2FsbGJhY2tXaXRoU2V2ZXJpdHlEb2VzTm90R2V0Q2FsbGVk
Rm9yT3RoZXJMZXZlbHMgeworICBzZWxmLmxvZ2dlci5zZXZlcml0eSA9IFJUQ0xvZ2dpbmdTZXZl
cml0eUVycm9yOworCisgIFhDVGVzdEV4cGVjdGF0aW9uICpjYWxsYmFja0V4cGVjdGF0aW9uID0g
W3NlbGYgZXhwZWN0YXRpb25XaXRoRGVzY3JpcHRpb246QCJjYWxsYmFja0Vycm9yIl07CisKKyAg
W3NlbGYubG9nZ2VyCisgICAgICBzdGFydFdpdGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVyOl4o
TlNTdHJpbmcgKm1lc3NhZ2UsIFJUQ0xvZ2dpbmdTZXZlcml0eSBzZXZlcml0eSkgeworICAgICAg
ICBYQ1RBc3NlcnRUcnVlKFttZXNzYWdlIGhhc1N1ZmZpeDpAIkhvcnJpYmxlIGVycm9yXG4iXSk7
CisgICAgICAgIFhDVEFzc2VydEVxdWFsKHNldmVyaXR5LCBSVENMb2dnaW5nU2V2ZXJpdHlFcnJv
cik7CisgICAgICAgIFtjYWxsYmFja0V4cGVjdGF0aW9uIGZ1bGZpbGxdOworICAgICAgfV07CisK
KyAgUlRDTG9nSW5mbygiSnVzdCBzb21lIGluZm8iKTsKKyAgUlRDTG9nV2FybmluZygiV2Fybmlu
ZyB3YXJuaW5nIik7CisgIFJUQ0xvZ0Vycm9yKCJIb3JyaWJsZSBlcnJvciIpOworCisgIFtzZWxm
IHdhaXRGb3JFeHBlY3RhdGlvbnM6QFsgY2FsbGJhY2tFeHBlY3RhdGlvbiBdIHRpbWVvdXQ6MTAu
MF07Cit9CisKKy0gKHZvaWQpdGVzdENhbGxiYWNrRG9lc05vdGdldENhbGxlZEZvclNldmVyaXR5
Tm9uZSB7CisgIHNlbGYubG9nZ2VyLnNldmVyaXR5ID0gUlRDTG9nZ2luZ1NldmVyaXR5Tm9uZTsK
KworICBYQ1Rlc3RFeHBlY3RhdGlvbiAqY2FsbGJhY2tFeHBlY3RhdGlvbiA9IFtzZWxmIGV4cGVj
dGF0aW9uV2l0aERlc2NyaXB0aW9uOkAidW5leHBlY3RlZENhbGxiYWNrIl07CisKKyAgW3NlbGYu
bG9nZ2VyIHN0YXJ0Ol4oTlNTdHJpbmcgKm1lc3NhZ2UpIHsKKyAgICBbY2FsbGJhY2tFeHBlY3Rh
dGlvbiBmdWxmaWxsXTsKKyAgICBYQ1RBc3NlcnRUcnVlKGZhbHNlKTsKKyAgfV07CisKKyAgUlRD
TG9nSW5mbygiSnVzdCBzb21lIGluZm8iKTsKKyAgUlRDTG9nV2FybmluZygiV2FybmluZyB3YXJu
aW5nIik7CisgIFJUQ0xvZ0Vycm9yKCJIb3JyaWJsZSBlcnJvciIpOworCisgIFhDVFdhaXRlciAq
d2FpdGVyID0gW1tYQ1RXYWl0ZXIgYWxsb2NdIGluaXRdOworICBYQ1RXYWl0ZXJSZXN1bHQgcmVz
dWx0ID0gW3dhaXRlciB3YWl0Rm9yRXhwZWN0YXRpb25zOkBbIGNhbGxiYWNrRXhwZWN0YXRpb24g
XSB0aW1lb3V0OjEuMF07CisgIFhDVEFzc2VydEVxdWFsKHJlc3VsdCwgWENUV2FpdGVyUmVzdWx0
VGltZWRPdXQpOworfQorCistICh2b2lkKXRlc3RDYWxsYmFja1dpdGhTZXZlcml0eURvZXNOb3Rn
ZXRDYWxsZWRGb3JTZXZlcml0eU5vbmUgeworICBzZWxmLmxvZ2dlci5zZXZlcml0eSA9IFJUQ0xv
Z2dpbmdTZXZlcml0eU5vbmU7CisKKyAgWENUZXN0RXhwZWN0YXRpb24gKmNhbGxiYWNrRXhwZWN0
YXRpb24gPSBbc2VsZiBleHBlY3RhdGlvbldpdGhEZXNjcmlwdGlvbjpAInVuZXhwZWN0ZWRDYWxs
YmFjayJdOworCisgIFtzZWxmLmxvZ2dlcgorICAgICAgc3RhcnRXaXRoTWVzc2FnZUFuZFNldmVy
aXR5SGFuZGxlcjpeKE5TU3RyaW5nICptZXNzYWdlLCBSVENMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJp
dHkpIHsKKyAgICAgICAgW2NhbGxiYWNrRXhwZWN0YXRpb24gZnVsZmlsbF07CisgICAgICAgIFhD
VEFzc2VydFRydWUoZmFsc2UpOworICAgICAgfV07CisKKyAgUlRDTG9nSW5mbygiSnVzdCBzb21l
IGluZm8iKTsKKyAgUlRDTG9nV2FybmluZygiV2FybmluZyB3YXJuaW5nIik7CisgIFJUQ0xvZ0Vy
cm9yKCJIb3JyaWJsZSBlcnJvciIpOworCisgIFhDVFdhaXRlciAqd2FpdGVyID0gW1tYQ1RXYWl0
ZXIgYWxsb2NdIGluaXRdOworICBYQ1RXYWl0ZXJSZXN1bHQgcmVzdWx0ID0gW3dhaXRlciB3YWl0
Rm9yRXhwZWN0YXRpb25zOkBbIGNhbGxiYWNrRXhwZWN0YXRpb24gXSB0aW1lb3V0OjEuMF07Cisg
IFhDVEFzc2VydEVxdWFsKHJlc3VsdCwgWENUV2FpdGVyUmVzdWx0VGltZWRPdXQpOworfQorCiAt
ICh2b2lkKXRlc3RTdGFydGluZ1dpdGhOaWxDYWxsYmFja0RvZXNOb3RDcmFzaCB7CiAgIFtzZWxm
LmxvZ2dlciBzdGFydDpuaWxdOwogCiAgIFJUQ0xvZ0Vycm9yKCJIb3JyaWJsZSBlcnJvciIpOwog
fQogCistICh2b2lkKXRlc3RTdGFydGluZ1dpdGhOaWxDYWxsYmFja1dpdGhTZXZlcml0eURvZXNO
b3RDcmFzaCB7CisgIFtzZWxmLmxvZ2dlciBzdGFydFdpdGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5k
bGVyOm5pbF07CisKKyAgUlRDTG9nRXJyb3IoIkhvcnJpYmxlIGVycm9yIik7Cit9CisKIC0gKHZv
aWQpdGVzdFN0b3BDYWxsYmFja0xvZ2dlciB7CiAgIFhDVGVzdEV4cGVjdGF0aW9uICpjYWxsYmFj
a0V4cGVjdGF0aW9uID0gW3NlbGYgZXhwZWN0YXRpb25XaXRoRGVzY3JpcHRpb246QCJzdG9wcGVk
Il07CiAKQEAgLTg4LDYgKzE2OSwyMyBAQCAtICh2b2lkKXRlc3RTdG9wQ2FsbGJhY2tMb2dnZXIg
ewogICBYQ1RBc3NlcnRFcXVhbChyZXN1bHQsIFhDVFdhaXRlclJlc3VsdFRpbWVkT3V0KTsKIH0K
IAorLSAodm9pZCl0ZXN0U3RvcENhbGxiYWNrV2l0aFNldmVyaXR5TG9nZ2VyIHsKKyAgWENUZXN0
RXhwZWN0YXRpb24gKmNhbGxiYWNrRXhwZWN0YXRpb24gPSBbc2VsZiBleHBlY3RhdGlvbldpdGhE
ZXNjcmlwdGlvbjpAInN0b3BwZWQiXTsKKworICBbc2VsZi5sb2dnZXIKKyAgICAgIHN0YXJ0V2l0
aE1lc3NhZ2VBbmRTZXZlcml0eUhhbmRsZXI6XihOU1N0cmluZyAqbWVzc2FnZSwgUlRDTG9nZ2lu
Z1NldmVyaXR5IGxvZ2dpbmdTZXJ2ZXJpdHkpIHsKKyAgICAgICAgW2NhbGxiYWNrRXhwZWN0YXRp
b24gZnVsZmlsbF07CisgICAgICB9XTsKKworICBbc2VsZi5sb2dnZXIgc3RvcF07CisKKyAgUlRD
TG9nSW5mbygiSnVzdCBzb21lIGluZm8iKTsKKworICBYQ1RXYWl0ZXIgKndhaXRlciA9IFtbWENU
V2FpdGVyIGFsbG9jXSBpbml0XTsKKyAgWENUV2FpdGVyUmVzdWx0IHJlc3VsdCA9IFt3YWl0ZXIg
d2FpdEZvckV4cGVjdGF0aW9uczpAWyBjYWxsYmFja0V4cGVjdGF0aW9uIF0gdGltZW91dDoxLjBd
OworICBYQ1RBc3NlcnRFcXVhbChyZXN1bHQsIFhDVFdhaXRlclJlc3VsdFRpbWVkT3V0KTsKK30K
KwogLSAodm9pZCl0ZXN0RGVzdHJveWluZ0NhbGxiYWNrTG9nZ2VyIHsKICAgWENUZXN0RXhwZWN0
YXRpb24gKmNhbGxiYWNrRXhwZWN0YXRpb24gPSBbc2VsZiBleHBlY3RhdGlvbldpdGhEZXNjcmlw
dGlvbjpAImRlc3Ryb3llZCJdOwogCkBAIC0xMDQsNCArMjAyLDQzIEBAIC0gKHZvaWQpdGVzdERl
c3Ryb3lpbmdDYWxsYmFja0xvZ2dlciB7CiAgIFhDVEFzc2VydEVxdWFsKHJlc3VsdCwgWENUV2Fp
dGVyUmVzdWx0VGltZWRPdXQpOwogfQogCistICh2b2lkKXRlc3REZXN0cm95aW5nQ2FsbGJhY2tX
aXRoU2V2ZXJpdHlMb2dnZXIgeworICBYQ1Rlc3RFeHBlY3RhdGlvbiAqY2FsbGJhY2tFeHBlY3Rh
dGlvbiA9IFtzZWxmIGV4cGVjdGF0aW9uV2l0aERlc2NyaXB0aW9uOkAiZGVzdHJveWVkIl07CisK
KyAgW3NlbGYubG9nZ2VyCisgICAgICBzdGFydFdpdGhNZXNzYWdlQW5kU2V2ZXJpdHlIYW5kbGVy
Ol4oTlNTdHJpbmcgKm1lc3NhZ2UsIFJUQ0xvZ2dpbmdTZXZlcml0eSBsb2dnaW5nU2VydmVyaXR5
KSB7CisgICAgICAgIFtjYWxsYmFja0V4cGVjdGF0aW9uIGZ1bGZpbGxdOworICAgICAgfV07CisK
KyAgc2VsZi5sb2dnZXIgPSBuaWw7CisKKyAgUlRDTG9nSW5mbygiSnVzdCBzb21lIGluZm8iKTsK
KworICBYQ1RXYWl0ZXIgKndhaXRlciA9IFtbWENUV2FpdGVyIGFsbG9jXSBpbml0XTsKKyAgWENU
V2FpdGVyUmVzdWx0IHJlc3VsdCA9IFt3YWl0ZXIgd2FpdEZvckV4cGVjdGF0aW9uczpAWyBjYWxs
YmFja0V4cGVjdGF0aW9uIF0gdGltZW91dDoxLjBdOworICBYQ1RBc3NlcnRFcXVhbChyZXN1bHQs
IFhDVFdhaXRlclJlc3VsdFRpbWVkT3V0KTsKK30KKworLSAodm9pZCl0ZXN0Q2FsbGJhY2tXaXRo
U2V2ZXJpdHlMb2dnZXJDYW5ub3RTdGFydFR3aWNlIHsKKyAgc2VsZi5sb2dnZXIuc2V2ZXJpdHkg
PSBSVENMb2dnaW5nU2V2ZXJpdHlXYXJuaW5nOworCisgIFhDVGVzdEV4cGVjdGF0aW9uICpjYWxs
YmFja0V4cGVjdGF0aW9uID0gW3NlbGYgZXhwZWN0YXRpb25XaXRoRGVzY3JpcHRpb246QCJjYWxs
YmFja1dhcm5pbmciXTsKKworICBbc2VsZi5sb2dnZXIKKyAgICAgIHN0YXJ0V2l0aE1lc3NhZ2VB
bmRTZXZlcml0eUhhbmRsZXI6XihOU1N0cmluZyAqbWVzc2FnZSwgUlRDTG9nZ2luZ1NldmVyaXR5
IGxvZ2dpbmdTZXJ2ZXJpdHkpIHsKKyAgICAgICAgWENUQXNzZXJ0VHJ1ZShbbWVzc2FnZSBoYXNT
dWZmaXg6QCJIb3JyaWJsZSBlcnJvclxuIl0pOworICAgICAgICBYQ1RBc3NlcnRFcXVhbChsb2dn
aW5nU2VydmVyaXR5LCBSVENMb2dnaW5nU2V2ZXJpdHlFcnJvcik7CisgICAgICAgIFtjYWxsYmFj
a0V4cGVjdGF0aW9uIGZ1bGZpbGxdOworICAgICAgfV07CisKKyAgW3NlbGYubG9nZ2VyIHN0YXJ0
Ol4oTlNTdHJpbmcgKm1lc3NhZ2UpIHsKKyAgICBbY2FsbGJhY2tFeHBlY3RhdGlvbiBmdWxmaWxs
XTsKKyAgICBYQ1RBc3NlcnRUcnVlKGZhbHNlKTsKKyAgfV07CisKKyAgUlRDTG9nRXJyb3IoIkhv
cnJpYmxlIGVycm9yIik7CisKKyAgW3NlbGYgd2FpdEZvckV4cGVjdGF0aW9uczpAWyBjYWxsYmFj
a0V4cGVjdGF0aW9uIF0gdGltZW91dDoxMC4wXTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3Rz
L1JUQ0NlcnRpZmljYXRlVGVzdC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENDZXJ0aWZpY2F0ZVRlc3QubW0KaW5kZXgg
MjU4NWEyNzgxMThlOTliZjM3NWI0MDFiMTNiODRmMDYyNWQ0ZTA1Zi4uNWJmMWViM2ZlNDcwNzQ3
N2ZmYjg0MjIzYjU1NGY0NmFlODRkNTZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0NlcnRpZmljYXRl
VGVzdC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy91bml0dGVzdHMvUlRDQ2VydGlmaWNhdGVUZXN0Lm1tCkBAIC03MSw3ICs3MSw3IEBA
IC0gKHZvaWQpdGVzdENlcnRpZmljYXRlSXNVc2VkSW5Db25maWcgewogCiBAZW5kCiAKLVRFU1Qo
Q2VydGlmaWNhdGVUZXN0LCBDZXJ0aWZpY2F0ZUlzVXNlZEluQ29uZmlnKSB7CitURVNUKENlcnRp
ZmljYXRlVGVzdCwgRElTQUJMRURfQ2VydGlmaWNhdGVJc1VzZWRJbkNvbmZpZykgewogICBSVEND
ZXJ0aWZpY2F0ZVRlc3QgKnRlc3QgPSBbW1JUQ0NlcnRpZmljYXRlVGVzdCBhbGxvY10gaW5pdF07
CiAgIFt0ZXN0IHRlc3RDZXJ0aWZpY2F0ZUlzVXNlZEluQ29uZmlnXTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0
ZXN0cy9SVENDb25maWd1cmF0aW9uVGVzdC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENDb25maWd1cmF0aW9uVGVzdC5t
bQppbmRleCAxZWY3MThhZDQ5NThkZTdkNzc2ZmY1OWJiNzQzM2QwNTcwM2E5OWZjLi5mMzFmY2Zk
ODU4ZDkyOWY2MDY0Zjg3YzQ4ZWYxMDdhNDZlOGJmOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDQ29u
ZmlndXJhdGlvblRlc3QubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ0NvbmZpZ3VyYXRpb25UZXN0Lm1tCkBAIC01
MCw2ICs1MCwxMiBAQCAtICh2b2lkKXRlc3RDb252ZXJzaW9uVG9OYXRpdmVDb25maWd1cmF0aW9u
IHsKICAgICAgIFJUQ0NvbnRpbnVhbEdhdGhlcmluZ1BvbGljeUdhdGhlckNvbnRpbnVhbGx5Owog
ICBjb25maWcuc2hvdWxkUHJ1bmVUdXJuUG9ydHMgPSBZRVM7CiAgIGNvbmZpZy5pY2VSZWdhdGhl
ckludGVydmFsUmFuZ2UgPSByYW5nZTsKKyAgY29uZmlnLmNyeXB0b09wdGlvbnMgPSBbW1JUQ0Ny
eXB0b09wdGlvbnMgYWxsb2NdIGluaXRXaXRoU3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlczpZRVMK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnRwRW5h
YmxlQWVzMTI4U2hhMV8zMkNyeXB0b0NpcGhlcjpZRVMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5z
aW9uczpZRVMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlwdGlvbjpZRVNdOworICBjb25maWcucnRj
cEF1ZGlvUmVwb3J0SW50ZXJ2YWxNcyA9IDI1MDA7CisgIGNvbmZpZy5ydGNwVmlkZW9SZXBvcnRJ
bnRlcnZhbE1zID0gMzc1MDsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbj4KICAgICAgIG5hdGl2ZUNvbmZpZyhbY29u
ZmlnIGNyZWF0ZU5hdGl2ZUNvbmZpZ3VyYXRpb25dKTsKQEAgLTc4LDYgKzg0LDEyIEBAIC0gKHZv
aWQpdGVzdENvbnZlcnNpb25Ub05hdGl2ZUNvbmZpZ3VyYXRpb24gewogICBFWFBFQ1RfRVEodHJ1
ZSwgbmF0aXZlQ29uZmlnLT5wcnVuZV90dXJuX3BvcnRzKTsKICAgRVhQRUNUX0VRKHJhbmdlLm1p
biwgbmF0aXZlQ29uZmlnLT5pY2VfcmVnYXRoZXJfaW50ZXJ2YWxfcmFuZ2UtPm1pbigpKTsKICAg
RVhQRUNUX0VRKHJhbmdlLm1heCwgbmF0aXZlQ29uZmlnLT5pY2VfcmVnYXRoZXJfaW50ZXJ2YWxf
cmFuZ2UtPm1heCgpKTsKKyAgRVhQRUNUX0VRKHRydWUsIG5hdGl2ZUNvbmZpZy0+Y3J5cHRvX29w
dGlvbnMtPnNydHAuZW5hYmxlX2djbV9jcnlwdG9fc3VpdGVzKTsKKyAgRVhQRUNUX0VRKHRydWUs
IG5hdGl2ZUNvbmZpZy0+Y3J5cHRvX29wdGlvbnMtPnNydHAuZW5hYmxlX2FlczEyOF9zaGExXzMy
X2NyeXB0b19jaXBoZXIpOworICBFWFBFQ1RfRVEodHJ1ZSwgbmF0aXZlQ29uZmlnLT5jcnlwdG9f
b3B0aW9ucy0+c3J0cC5lbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyk7Cisg
IEVYUEVDVF9FUSh0cnVlLCBuYXRpdmVDb25maWctPmNyeXB0b19vcHRpb25zLT5zZnJhbWUucmVx
dWlyZV9mcmFtZV9lbmNyeXB0aW9uKTsKKyAgRVhQRUNUX0VRKDI1MDAsIG5hdGl2ZUNvbmZpZy0+
YXVkaW9fcnRjcF9yZXBvcnRfaW50ZXJ2YWxfbXMoKSk7CisgIEVYUEVDVF9FUSgzNzUwLCBuYXRp
dmVDb25maWctPnZpZGVvX3J0Y3BfcmVwb3J0X2ludGVydmFsX21zKCkpOwogfQogCiAtICh2b2lk
KXRlc3ROYXRpdmVDb252ZXJzaW9uVG9Db25maWd1cmF0aW9uIHsKQEAgLTEwMyw2ICsxMTUsMTIg
QEAgLSAodm9pZCl0ZXN0TmF0aXZlQ29udmVyc2lvblRvQ29uZmlndXJhdGlvbiB7CiAgICAgICBS
VENDb250aW51YWxHYXRoZXJpbmdQb2xpY3lHYXRoZXJDb250aW51YWxseTsKICAgY29uZmlnLnNo
b3VsZFBydW5lVHVyblBvcnRzID0gWUVTOwogICBjb25maWcuaWNlUmVnYXRoZXJJbnRlcnZhbFJh
bmdlID0gcmFuZ2U7CisgIGNvbmZpZy5jcnlwdG9PcHRpb25zID0gW1tSVENDcnlwdG9PcHRpb25z
IGFsbG9jXSBpbml0V2l0aFNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXM6WUVTCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3J0cEVuYWJsZUFlczEyOFNo
YTFfMzJDcnlwdG9DaXBoZXI6Tk8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9uczpOTworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZnJh
bWVSZXF1aXJlRnJhbWVFbmNyeXB0aW9uOk5PXTsKKyAgY29uZmlnLnJ0Y3BBdWRpb1JlcG9ydElu
dGVydmFsTXMgPSAxNTAwOworICBjb25maWcucnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxNcyA9IDIx
NTA7CiAKICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlv
biAqbmF0aXZlQ29uZmlnID0KICAgICAgIFtjb25maWcgY3JlYXRlTmF0aXZlQ29uZmlndXJhdGlv
bl07CkBAIC0xMzAsNiArMTQ4LDIxIEBAIC0gKHZvaWQpdGVzdE5hdGl2ZUNvbnZlcnNpb25Ub0Nv
bmZpZ3VyYXRpb24gewogICBFWFBFQ1RfRVEoY29uZmlnLnNob3VsZFBydW5lVHVyblBvcnRzLCBu
ZXdDb25maWcuc2hvdWxkUHJ1bmVUdXJuUG9ydHMpOwogICBFWFBFQ1RfRVEoY29uZmlnLmljZVJl
Z2F0aGVySW50ZXJ2YWxSYW5nZS5taW4sIG5ld0NvbmZpZy5pY2VSZWdhdGhlckludGVydmFsUmFu
Z2UubWluKTsKICAgRVhQRUNUX0VRKGNvbmZpZy5pY2VSZWdhdGhlckludGVydmFsUmFuZ2UubWF4
LCBuZXdDb25maWcuaWNlUmVnYXRoZXJJbnRlcnZhbFJhbmdlLm1heCk7CisgIEVYUEVDVF9FUShj
b25maWcuY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxlR2NtQ3J5cHRvU3VpdGVzLAorICAgICAgICAg
ICAgbmV3Q29uZmlnLmNyeXB0b09wdGlvbnMuc3J0cEVuYWJsZUdjbUNyeXB0b1N1aXRlcyk7Cisg
IEVYUEVDVF9FUShjb25maWcuY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxlQWVzMTI4U2hhMV8zMkNy
eXB0b0NpcGhlciwKKyAgICAgICAgICAgIG5ld0NvbmZpZy5jcnlwdG9PcHRpb25zLnNydHBFbmFi
bGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVyKTsKKyAgRVhQRUNUX0VRKGNvbmZpZy5jcnlwdG9P
cHRpb25zLnNydHBFbmFibGVFbmNyeXB0ZWRSdHBIZWFkZXJFeHRlbnNpb25zLAorICAgICAgICAg
ICAgbmV3Q29uZmlnLmNyeXB0b09wdGlvbnMuc3J0cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4
dGVuc2lvbnMpOworICBFWFBFQ1RfRVEoY29uZmlnLmNyeXB0b09wdGlvbnMuc2ZyYW1lUmVxdWly
ZUZyYW1lRW5jcnlwdGlvbiwKKyAgICAgICAgICAgIG5ld0NvbmZpZy5jcnlwdG9PcHRpb25zLnNm
cmFtZVJlcXVpcmVGcmFtZUVuY3J5cHRpb24pOworICBFWFBFQ1RfRVEoY29uZmlnLnJ0Y3BBdWRp
b1JlcG9ydEludGVydmFsTXMsIG5ld0NvbmZpZy5ydGNwQXVkaW9SZXBvcnRJbnRlcnZhbE1zKTsK
KyAgRVhQRUNUX0VRKGNvbmZpZy5ydGNwVmlkZW9SZXBvcnRJbnRlcnZhbE1zLCBuZXdDb25maWcu
cnRjcFZpZGVvUmVwb3J0SW50ZXJ2YWxNcyk7Cit9CisKKy0gKHZvaWQpdGVzdERlZmF1bHRWYWx1
ZXMgeworICBSVENDb25maWd1cmF0aW9uICpjb25maWcgPSBbW1JUQ0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdOworICBFWFBFQ1RfRVEoY29uZmlnLmNyeXB0b09wdGlvbnMsIG5pbCk7CiB9CiAK
IEBlbmQKQEAgLTEzOSw1ICsxNzIsNiBAQCBURVNUKFJUQ0NvbmZpZ3VyYXRpb25UZXN0LCBOYXRp
dmVDb25maWd1cmF0aW9uQ29udmVyc2lvblRlc3QpIHsKICAgICBSVENDb25maWd1cmF0aW9uVGVz
dCAqdGVzdCA9IFtbUlRDQ29uZmlndXJhdGlvblRlc3QgYWxsb2NdIGluaXRdOwogICAgIFt0ZXN0
IHRlc3RDb252ZXJzaW9uVG9OYXRpdmVDb25maWd1cmF0aW9uXTsKICAgICBbdGVzdCB0ZXN0TmF0
aXZlQ29udmVyc2lvblRvQ29uZmlndXJhdGlvbl07CisgICAgW3Rlc3QgdGVzdERlZmF1bHRWYWx1
ZXNdOwogICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVp
bGRlclRlc3QubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy91bml0dGVzdHMvUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlclRlc3QubW0K
aW5kZXggOWJiNTE3OTUyMWYzNGExNjFjY2UzZTE1Zjc2MjNmZmQ1N2VkNTgwNC4uNWY4ODlhNjk5
ZGE2MTA4NTExOTAwNDNlM2FjZmRmZDc2N2JkOWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ1BlZXJD
b25uZWN0aW9uRmFjdG9yeUJ1aWxkZXJUZXN0Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENQZWVyQ29ubmVjdGlv
bkZhY3RvcnlCdWlsZGVyVGVzdC5tbQpAQCAtMjIsNiArMjIsNyBAQCBleHRlcm4gIkMiIHsKIAog
I2luY2x1ZGUgImFwaS9hdWRpb19jb2RlY3MvYnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3Rvcnku
aCIKICNpbmNsdWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5LmgiCisjaW5jbHVkZSAiYXBpL21lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUg
ImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9k
dWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRpb19kZXZpY2UuaCIKQEAgLTQ5LDcgKzUwLDgg
QEAgLSAodm9pZCl0ZXN0QnVpbGRlciB7CiAgICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRW5jb2Rl
ckZhY3Rvcnk6bnVsbHB0cgogICAgICAgICAgICAgICBuYXRpdmVWaWRlb0RlY29kZXJGYWN0b3J5
Om51bGxwdHIKICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0RldmljZU1vZHVsZTpudWxscHRy
Ci0gICAgICAgICAgICAgICAgICBhdWRpb1Byb2Nlc3NpbmdNb2R1bGU6bnVsbHB0cl0pOworICAg
ICAgICAgICAgICAgICAgYXVkaW9Qcm9jZXNzaW5nTW9kdWxlOm51bGxwdHIKKyAgICAgICAgICAg
ICAgICAgIG1lZGlhVHJhbnNwb3J0RmFjdG9yeTpudWxscHRyXSk7CiAjZW5kaWYKICAgUlRDUGVl
ckNvbm5lY3Rpb25GYWN0b3J5QnVpbGRlciogYnVpbGRlciA9IFtbUlRDUGVlckNvbm5lY3Rpb25G
YWN0b3J5QnVpbGRlciBhbGxvY10gaW5pdF07CiAgIFJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeSog
cGVlckNvbm5lY3Rpb25GYWN0b3J5ID0gW2J1aWxkZXIgY3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0
b3J5XTsKQEAgLTY5LDcgKzcxLDggQEAgLSAodm9pZCl0ZXN0RGVmYXVsdENvbXBvbmVudHNCdWls
ZGVyIHsKICAgICAgICAgICAgICAgbmF0aXZlVmlkZW9FbmNvZGVyRmFjdG9yeTpudWxscHRyCiAg
ICAgICAgICAgICAgIG5hdGl2ZVZpZGVvRGVjb2RlckZhY3Rvcnk6bnVsbHB0cgogICAgICAgICAg
ICAgICAgICAgICAgIGF1ZGlvRGV2aWNlTW9kdWxlOm51bGxwdHIKLSAgICAgICAgICAgICAgICAg
IGF1ZGlvUHJvY2Vzc2luZ01vZHVsZTpudWxscHRyXSk7CisgICAgICAgICAgICAgICAgICBhdWRp
b1Byb2Nlc3NpbmdNb2R1bGU6bnVsbHB0cgorICAgICAgICAgICAgICAgICAgbWVkaWFUcmFuc3Bv
cnRGYWN0b3J5Om51bGxwdHJdKTsKICNlbmRpZgogICBSVENQZWVyQ29ubmVjdGlvbkZhY3RvcnlC
dWlsZGVyKiBidWlsZGVyID0gW1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeUJ1aWxkZXIgZGVmYXVs
dEJ1aWxkZXJdOwogICBSVENQZWVyQ29ubmVjdGlvbkZhY3RvcnkqIHBlZXJDb25uZWN0aW9uRmFj
dG9yeSA9IFtidWlsZGVyIGNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0
dGVzdHMvUlRDUGVlckNvbm5lY3Rpb25UZXN0Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL1JUQ1BlZXJDb25uZWN0aW9uVGVz
dC5tbQppbmRleCAyOGZkZWU2YTJiZDZlZDgxZTA3MDBiNGVjMTEwYTI0YjJjYTBhM2NkLi4zNTMy
MjU4Nzk5NmQ5OGFjNjc2OWIwNjU1YTY0OGIxOWEzYWQ5ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvUlRD
UGVlckNvbm5lY3Rpb25UZXN0Lm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9SVENQZWVyQ29ubmVjdGlvblRlc3QubW0K
QEAgLTE2LDYgKzE2LDcgQEAKIAogI2ltcG9ydCAiYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZp
Z3VyYXRpb24rUHJpdmF0ZS5oIgogI2ltcG9ydCAiYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0NvbmZp
Z3VyYXRpb24uaCIKKyNpbXBvcnQgImFwaS9wZWVyY29ubmVjdGlvbi9SVENDcnlwdG9PcHRpb25z
LmgiCiAjaW1wb3J0ICJhcGkvcGVlcmNvbm5lY3Rpb24vUlRDSWNlU2VydmVyLmgiCiAjaW1wb3J0
ICJhcGkvcGVlcmNvbm5lY3Rpb24vUlRDTWVkaWFDb25zdHJhaW50cy5oIgogI2ltcG9ydCAiYXBp
L3BlZXJjb25uZWN0aW9uL1JUQ1BlZXJDb25uZWN0aW9uLmgiCkBAIC01MCw2ICs1MSwxMCBAQCAt
ICh2b2lkKXRlc3RDb25maWd1cmF0aW9uR2V0dGVyIHsKICAgICAgIFJUQ0NvbnRpbnVhbEdhdGhl
cmluZ1BvbGljeUdhdGhlckNvbnRpbnVhbGx5OwogICBjb25maWcuc2hvdWxkUHJ1bmVUdXJuUG9y
dHMgPSBZRVM7CiAgIGNvbmZpZy5hY3RpdmVSZXNldFNydHBQYXJhbXMgPSBZRVM7CisgIGNvbmZp
Zy5jcnlwdG9PcHRpb25zID0gW1tSVENDcnlwdG9PcHRpb25zIGFsbG9jXSBpbml0V2l0aFNydHBF
bmFibGVHY21DcnlwdG9TdWl0ZXM6WUVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3J0cEVuYWJsZUFlczEyOFNoYTFfMzJDcnlwdG9DaXBoZXI6WUVT
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3J0cEVuYWJs
ZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnM6Tk8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ZyYW1lUmVxdWlyZUZyYW1lRW5jcnlw
dGlvbjpOT107CiAKICAgUlRDTWVkaWFDb25zdHJhaW50cyAqY29udHJhaW50cyA9IFtbUlRDTWVk
aWFDb25zdHJhaW50cyBhbGxvY10gaW5pdFdpdGhNYW5kYXRvcnlDb25zdHJhaW50czpAe30KICAg
ICAgIG9wdGlvbmFsQ29uc3RyYWludHM6bmlsXTsKQEAgLTg5LDYgKzk0LDE0IEBAIC0gKHZvaWQp
dGVzdENvbmZpZ3VyYXRpb25HZXR0ZXIgewogICBFWFBFQ1RfRVEoY29uZmlnLmNvbnRpbnVhbEdh
dGhlcmluZ1BvbGljeSwgbmV3Q29uZmlnLmNvbnRpbnVhbEdhdGhlcmluZ1BvbGljeSk7CiAgIEVY
UEVDVF9FUShjb25maWcuc2hvdWxkUHJ1bmVUdXJuUG9ydHMsIG5ld0NvbmZpZy5zaG91bGRQcnVu
ZVR1cm5Qb3J0cyk7CiAgIEVYUEVDVF9FUShjb25maWcuYWN0aXZlUmVzZXRTcnRwUGFyYW1zLCBu
ZXdDb25maWcuYWN0aXZlUmVzZXRTcnRwUGFyYW1zKTsKKyAgRVhQRUNUX0VRKGNvbmZpZy5jcnlw
dG9PcHRpb25zLnNydHBFbmFibGVHY21DcnlwdG9TdWl0ZXMsCisgICAgICAgICAgICBuZXdDb25m
aWcuY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxlR2NtQ3J5cHRvU3VpdGVzKTsKKyAgRVhQRUNUX0VR
KGNvbmZpZy5jcnlwdG9PcHRpb25zLnNydHBFbmFibGVBZXMxMjhTaGExXzMyQ3J5cHRvQ2lwaGVy
LAorICAgICAgICAgICAgbmV3Q29uZmlnLmNyeXB0b09wdGlvbnMuc3J0cEVuYWJsZUFlczEyOFNo
YTFfMzJDcnlwdG9DaXBoZXIpOworICBFWFBFQ1RfRVEoY29uZmlnLmNyeXB0b09wdGlvbnMuc3J0
cEVuYWJsZUVuY3J5cHRlZFJ0cEhlYWRlckV4dGVuc2lvbnMsCisgICAgICAgICAgICBuZXdDb25m
aWcuY3J5cHRvT3B0aW9ucy5zcnRwRW5hYmxlRW5jcnlwdGVkUnRwSGVhZGVyRXh0ZW5zaW9ucyk7
CisgIEVYUEVDVF9FUShjb25maWcuY3J5cHRvT3B0aW9ucy5zZnJhbWVSZXF1aXJlRnJhbWVFbmNy
eXB0aW9uLAorICAgICAgICAgICAgbmV3Q29uZmlnLmNyeXB0b09wdGlvbnMuc2ZyYW1lUmVxdWly
ZUZyYW1lRW5jcnlwdGlvbik7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9tYWluLm0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVz
dHMvbWFpbi5tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTdmYjRmNDc5YzA1NmU3
YzJhM2ZhMjhkOGNhNTdmNTg2ZGNhNGFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL3VuaXR0ZXN0cy9tYWluLm0KKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAyMDE3IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCi0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCi0gKiAgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAot
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKLSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRo
ZSBzb3VyY2UgdHJlZS4KLSAqLwotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
LSNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2
W10pIHsKLSAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgcmV0dXJuIFVJQXBwbGljYXRpb25NYWlu
KGFyZ2MsIGFyZ3YsIG5pbCwgbmlsKTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL21haW4ubW0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0
dGVzdHMvbWFpbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2E4OGE2NGQzZDc0ZTM1ZGE4ZWUwNTVlNzg4MDEw
ODIzZDZmYTZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvdW5pdHRlc3RzL21haW4ubW0KQEAgLTAsMCArMSwyMSBA
QAorLyoKKyAqICBDb3B5cmlnaHQgMjAxNyBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQK
KyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv
cnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+
CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2luY2x1ZGUgInRlc3QvaW9zL2NvdmVyYWdlX3V0
aWxfaW9zLmgiCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKKyAgcnRjOjp0
ZXN0OjpDb25maWd1cmVDb3ZlcmFnZVJlcG9ydFBhdGgoKTsKKworICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICByZXR1cm4gVUlBcHBsaWNhdGlvbk1haW4oYXJnYywgYXJndiwgbmlsLCBuaWwpOwor
ICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvbmFsdV9yZXdyaXRlcl94Y3Rlc3QubW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvbmFs
dV9yZXdyaXRlcl94Y3Rlc3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIwNDk5MDFjNTFhYjc3NjU2YjkzNDdi
MmVkMzAxZjBkMzQyMDYxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0ZXN0cy9uYWx1X3Jld3JpdGVyX3hj
dGVzdC5tbQpAQCAtMCwwICsxLDQxNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2Vi
UlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICog
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl
IHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJp
Z2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNv
bnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhP
UlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUg
ImNvbW1vbl92aWRlby9oMjY0L2gyNjRfY29tbW9uLmgiCisjaW5jbHVkZSAiY29tcG9uZW50cy92
aWRlb19jb2RlYy9uYWx1X3Jld3JpdGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXpl
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvZ3VuaXQuaCIKKworI2ltcG9ydCA8WENUZXN0L1hDVGVz
dC5oPgorCisjaWYgVEFSR0VUX09TX0lQSE9ORQorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91
bmRhdGlvbi5oPgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNlbmRpZgorCitAaW50ZXJmYWNl
IE5hbHVSZXdyaXRlclRlc3RzIDogWENUZXN0Q2FzZQorCitAZW5kCisKK3N0YXRpYyBjb25zdCB1
aW50OF90IE5BTFVfVEVTVF9EQVRBXzBbXSA9IHsweEFBLCAweEJCLCAweENDfTsKK3N0YXRpYyBj
b25zdCB1aW50OF90IE5BTFVfVEVTVF9EQVRBXzFbXSA9IHsweERFLCAweEFELCAweEJFLCAweEVG
fTsKKworLy8gY2xhbmctZm9ybWF0IG9mZgorc3RhdGljIGNvbnN0IHVpbnQ4X3QgU1BTX1BQU19C
VUZGRVJbXSA9IHsKKyAgLy8gU1BTIG5hbHUuCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4
MjcsIDB4NDIsIDB4MDAsIDB4MUUsIDB4QUIsIDB4NDAsIDB4RjAsIDB4MjgsCisgIDB4RDMsIDB4
NzAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgIC8vIFBQUyBuYWx1LgorICAweDAwLCAweDAw
LCAweDAwLCAweDAxLCAweDI4LCAweENFLCAweDNDLCAweDMwfTsKKy8vIGNsYW5nLWZvcm1hdCBv
bgorCitAaW1wbGVtZW50YXRpb24gTmFsdVJld3JpdGVyVGVzdHMKKworLSAodm9pZCl0ZXN0Q3Jl
YXRlVmlkZW9Gb3JtYXREZXNjcmlwdGlvbiB7CisgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJl
ZiBkZXNjcmlwdGlvbiA9CisgICAgICB3ZWJydGM6OkNyZWF0ZVZpZGVvRm9ybWF0RGVzY3JpcHRp
b24oU1BTX1BQU19CVUZGRVIsIGFycmF5c2l6ZShTUFNfUFBTX0JVRkZFUikpOworICBYQ1RBc3Nl
cnRUcnVlKGRlc2NyaXB0aW9uKTsKKyAgaWYgKGRlc2NyaXB0aW9uKSB7CisgICAgQ0ZSZWxlYXNl
KGRlc2NyaXB0aW9uKTsKKyAgICBkZXNjcmlwdGlvbiA9IG51bGxwdHI7CisgIH0KKworICAvLyBj
bGFuZy1mb3JtYXQgb2ZmCisgIGNvbnN0IHVpbnQ4X3Qgc3BzX3Bwc19ub3RfYXRfc3RhcnRfYnVm
ZmVyW10gPSB7CisgICAgLy8gQWRkIHNvbWUgbm9uLVNQUy9QUFMgTkFMVXMgYXQgdGhlIGJlZ2lu
bmluZworICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDEsIDB4RkYs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisgICAgMHhBQiwgMHgzMywgMHgyMSwKKyAgICAvLyBT
UFMgbmFsdS4KKyAgICAweDAwLCAweDAwLCAweDAxLCAweDI3LCAweDQyLCAweDAwLCAweDFFLCAw
eEFCLCAweDQwLCAweEYwLCAweDI4LCAweEQzLAorICAgIDB4NzAsIDB4MjAsIDB4MjAsIDB4MjAs
IDB4MjAsCisgICAgLy8gUFBTIG5hbHUuCisgICAgMHgwMCwgMHgwMCwgMHgwMSwgMHgyOCwgMHhD
RSwgMHgzQywgMHgzMH07CisgIC8vIGNsYW5nLWZvcm1hdCBvbgorICBkZXNjcmlwdGlvbiA9IHdl
YnJ0Yzo6Q3JlYXRlVmlkZW9Gb3JtYXREZXNjcmlwdGlvbihzcHNfcHBzX25vdF9hdF9zdGFydF9i
dWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFycmF5c2l6ZShzcHNfcHBzX25vdF9hdF9zdGFydF9idWZmZXIpKTsKKworICBYQ1RBc3Nl
cnRUcnVlKGRlc2NyaXB0aW9uKTsKKworICBpZiAoZGVzY3JpcHRpb24pIHsKKyAgICBDRlJlbGVh
c2UoZGVzY3JpcHRpb24pOworICAgIGRlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgfQorCisgIGNv
bnN0IHVpbnQ4X3Qgb3RoZXJfYnVmZmVyW10gPSB7MHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgy
OH07CisgIFhDVEFzc2VydEZhbHNlKHdlYnJ0Yzo6Q3JlYXRlVmlkZW9Gb3JtYXREZXNjcmlwdGlv
bihvdGhlcl9idWZmZXIsIGFycmF5c2l6ZShvdGhlcl9idWZmZXIpKSk7Cit9CisKKy0gKHZvaWQp
dGVzdFJlYWRFbXB0eUlucHV0IHsKKyAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rlc3RfZGF0YVtd
ID0gezB4MDB9OworICB3ZWJydGM6OkFubmV4QkJ1ZmZlclJlYWRlciByZWFkZXIoYW5uZXhfYl90
ZXN0X2RhdGEsIDApOworICBjb25zdCB1aW50OF90KiBuYWx1ID0gbnVsbHB0cjsKKyAgc2l6ZV90
IG5hbHVfbGVuZ3RoID0gMDsKKyAgWENUQXNzZXJ0RXF1YWwoMHUsIHJlYWRlci5CeXRlc1JlbWFp
bmluZygpKTsKKyAgWENUQXNzZXJ0RmFsc2UocmVhZGVyLlJlYWROYWx1KCZuYWx1LCAmbmFsdV9s
ZW5ndGgpKTsKKyAgWENUQXNzZXJ0RXF1YWwobnVsbHB0ciwgbmFsdSk7CisgIFhDVEFzc2VydEVx
dWFsKDB1LCBuYWx1X2xlbmd0aCk7Cit9CisKKy0gKHZvaWQpdGVzdFJlYWRTaW5nbGVOYWx1IHsK
KyAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rlc3RfZGF0YVtdID0gezB4MDAsIDB4MDAsIDB4MDAs
IDB4MDEsIDB4QUF9OworICB3ZWJydGM6OkFubmV4QkJ1ZmZlclJlYWRlciByZWFkZXIoYW5uZXhf
Yl90ZXN0X2RhdGEsIGFycmF5c2l6ZShhbm5leF9iX3Rlc3RfZGF0YSkpOworICBjb25zdCB1aW50
OF90KiBuYWx1ID0gbnVsbHB0cjsKKyAgc2l6ZV90IG5hbHVfbGVuZ3RoID0gMDsKKyAgWENUQXNz
ZXJ0RXF1YWwoYXJyYXlzaXplKGFubmV4X2JfdGVzdF9kYXRhKSwgcmVhZGVyLkJ5dGVzUmVtYWlu
aW5nKCkpOworICBYQ1RBc3NlcnRUcnVlKHJlYWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVfbGVu
Z3RoKSk7CisgIFhDVEFzc2VydEVxdWFsKGFubmV4X2JfdGVzdF9kYXRhICsgNCwgbmFsdSk7Cisg
IFhDVEFzc2VydEVxdWFsKDF1LCBuYWx1X2xlbmd0aCk7CisgIFhDVEFzc2VydEVxdWFsKDB1LCBy
ZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydEZhbHNlKHJlYWRlci5SZWFkTmFs
dSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2VydEVxdWFsKG51bGxwdHIsIG5hbHUp
OworICBYQ1RBc3NlcnRFcXVhbCgwdSwgbmFsdV9sZW5ndGgpOworfQorCistICh2b2lkKXRlc3RS
ZWFkU2luZ2xlTmFsdTNCeXRlSGVhZGVyIHsKKyAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rlc3Rf
ZGF0YVtdID0gezB4MDAsIDB4MDAsIDB4MDEsIDB4QUF9OworICB3ZWJydGM6OkFubmV4QkJ1ZmZl
clJlYWRlciByZWFkZXIoYW5uZXhfYl90ZXN0X2RhdGEsIGFycmF5c2l6ZShhbm5leF9iX3Rlc3Rf
ZGF0YSkpOworICBjb25zdCB1aW50OF90KiBuYWx1ID0gbnVsbHB0cjsKKyAgc2l6ZV90IG5hbHVf
bGVuZ3RoID0gMDsKKyAgWENUQXNzZXJ0RXF1YWwoYXJyYXlzaXplKGFubmV4X2JfdGVzdF9kYXRh
KSwgcmVhZGVyLkJ5dGVzUmVtYWluaW5nKCkpOworICBYQ1RBc3NlcnRUcnVlKHJlYWRlci5SZWFk
TmFsdSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2VydEVxdWFsKGFubmV4X2JfdGVz
dF9kYXRhICsgMywgbmFsdSk7CisgIFhDVEFzc2VydEVxdWFsKDF1LCBuYWx1X2xlbmd0aCk7Cisg
IFhDVEFzc2VydEVxdWFsKDB1LCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2Vy
dEZhbHNlKHJlYWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2Vy
dEVxdWFsKG51bGxwdHIsIG5hbHUpOworICBYQ1RBc3NlcnRFcXVhbCgwdSwgbmFsdV9sZW5ndGgp
OworfQorCistICh2b2lkKXRlc3RSZWFkTWlzc2luZ05hbHUgeworICAvLyBjbGFuZy1mb3JtYXQg
b2ZmCisgIGNvbnN0IHVpbnQ4X3QgYW5uZXhfYl90ZXN0X2RhdGFbXSA9IHsweDAxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkZ9OworICAv
LyBjbGFuZy1mb3JtYXQgb24KKyAgd2VicnRjOjpBbm5leEJCdWZmZXJSZWFkZXIgcmVhZGVyKGFu
bmV4X2JfdGVzdF9kYXRhLCBhcnJheXNpemUoYW5uZXhfYl90ZXN0X2RhdGEpKTsKKyAgY29uc3Qg
dWludDhfdCogbmFsdSA9IG51bGxwdHI7CisgIHNpemVfdCBuYWx1X2xlbmd0aCA9IDA7CisgIFhD
VEFzc2VydEVxdWFsKDB1LCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydEZh
bHNlKHJlYWRlci5SZWFkTmFsdSgmbmFsdSwgJm5hbHVfbGVuZ3RoKSk7CisgIFhDVEFzc2VydEVx
dWFsKG51bGxwdHIsIG5hbHUpOworICBYQ1RBc3NlcnRFcXVhbCgwdSwgbmFsdV9sZW5ndGgpOwor
fQorCistICh2b2lkKXRlc3RSZWFkTXVsdGlwbGVOYWx1cyB7CisgIC8vIGNsYW5nLWZvcm1hdCBv
ZmYKKyAgY29uc3QgdWludDhfdCBhbm5leF9iX3Rlc3RfZGF0YVtdID0gezB4MDAsIDB4MDAsIDB4
MDAsIDB4MDEsIDB4RkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAs
IDB4RkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwLCAweDAw
LCAweDAxLCAweEFBLCAweEJCfTsKKyAgLy8gY2xhbmctZm9ybWF0IG9uCisgIHdlYnJ0Yzo6QW5u
ZXhCQnVmZmVyUmVhZGVyIHJlYWRlcihhbm5leF9iX3Rlc3RfZGF0YSwgYXJyYXlzaXplKGFubmV4
X2JfdGVzdF9kYXRhKSk7CisgIGNvbnN0IHVpbnQ4X3QqIG5hbHUgPSBudWxscHRyOworICBzaXpl
X3QgbmFsdV9sZW5ndGggPSAwOworICBYQ1RBc3NlcnRFcXVhbChhcnJheXNpemUoYW5uZXhfYl90
ZXN0X2RhdGEpLCByZWFkZXIuQnl0ZXNSZW1haW5pbmcoKSk7CisgIFhDVEFzc2VydFRydWUocmVh
ZGVyLlJlYWROYWx1KCZuYWx1LCAmbmFsdV9sZW5ndGgpKTsKKyAgWENUQXNzZXJ0RXF1YWwoYW5u
ZXhfYl90ZXN0X2RhdGEgKyA0LCBuYWx1KTsKKyAgWENUQXNzZXJ0RXF1YWwoOHUsIG5hbHVfbGVu
Z3RoKTsKKyAgWENUQXNzZXJ0RXF1YWwoNXUsIHJlYWRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAg
WENUQXNzZXJ0VHJ1ZShyZWFkZXIuUmVhZE5hbHUoJm5hbHUsICZuYWx1X2xlbmd0aCkpOworICBY
Q1RBc3NlcnRFcXVhbChhbm5leF9iX3Rlc3RfZGF0YSArIDE1LCBuYWx1KTsKKyAgWENUQXNzZXJ0
RXF1YWwoMnUsIG5hbHVfbGVuZ3RoKTsKKyAgWENUQXNzZXJ0RXF1YWwoMHUsIHJlYWRlci5CeXRl
c1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0RmFsc2UocmVhZGVyLlJlYWROYWx1KCZuYWx1LCAm
bmFsdV9sZW5ndGgpKTsKKyAgWENUQXNzZXJ0RXF1YWwobnVsbHB0ciwgbmFsdSk7CisgIFhDVEFz
c2VydEVxdWFsKDB1LCBuYWx1X2xlbmd0aCk7Cit9CisKKy0gKHZvaWQpdGVzdEVtcHR5T3V0cHV0
QnVmZmVyIHsKKyAgY29uc3QgdWludDhfdCBleHBlY3RlZF9idWZmZXJbXSA9IHsweDAwfTsKKyAg
Y29uc3Qgc2l6ZV90IGJ1ZmZlcl9zaXplID0gMTsKKyAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3Rb
XT4gYnVmZmVyKG5ldyB1aW50OF90W2J1ZmZlcl9zaXplXSk7CisgIG1lbXNldChidWZmZXIuZ2V0
KCksIDAsIGJ1ZmZlcl9zaXplKTsKKyAgd2VicnRjOjpBdmNjQnVmZmVyV3JpdGVyIHdyaXRlcihi
dWZmZXIuZ2V0KCksIDApOworICBYQ1RBc3NlcnRFcXVhbCgwdSwgd3JpdGVyLkJ5dGVzUmVtYWlu
aW5nKCkpOworICBYQ1RBc3NlcnRGYWxzZSh3cml0ZXIuV3JpdGVOYWx1KE5BTFVfVEVTVF9EQVRB
XzAsIGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8wKSkpOworICBYQ1RBc3NlcnRFcXVhbCgwLCBt
ZW1jbXAoZXhwZWN0ZWRfYnVmZmVyLCBidWZmZXIuZ2V0KCksIGFycmF5c2l6ZShleHBlY3RlZF9i
dWZmZXIpKSk7Cit9CisKKy0gKHZvaWQpdGVzdFdyaXRlU2luZ2xlTmFsdSB7CisgIGNvbnN0IHVp
bnQ4X3QgZXhwZWN0ZWRfYnVmZmVyW10gPSB7CisgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAz
LCAweEFBLCAweEJCLCAweENDLAorICB9OworICBjb25zdCBzaXplX3QgYnVmZmVyX3NpemUgPSBh
cnJheXNpemUoTkFMVV9URVNUX0RBVEFfMCkgKyA0OworICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhf
dFtdPiBidWZmZXIobmV3IHVpbnQ4X3RbYnVmZmVyX3NpemVdKTsKKyAgd2VicnRjOjpBdmNjQnVm
ZmVyV3JpdGVyIHdyaXRlcihidWZmZXIuZ2V0KCksIGJ1ZmZlcl9zaXplKTsKKyAgWENUQXNzZXJ0
RXF1YWwoYnVmZmVyX3NpemUsIHdyaXRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0
VHJ1ZSh3cml0ZXIuV3JpdGVOYWx1KE5BTFVfVEVTVF9EQVRBXzAsIGFycmF5c2l6ZShOQUxVX1RF
U1RfREFUQV8wKSkpOworICBYQ1RBc3NlcnRFcXVhbCgwdSwgd3JpdGVyLkJ5dGVzUmVtYWluaW5n
KCkpOworICBYQ1RBc3NlcnRGYWxzZSh3cml0ZXIuV3JpdGVOYWx1KE5BTFVfVEVTVF9EQVRBXzEs
IGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8xKSkpOworICBYQ1RBc3NlcnRFcXVhbCgwLCBtZW1j
bXAoZXhwZWN0ZWRfYnVmZmVyLCBidWZmZXIuZ2V0KCksIGFycmF5c2l6ZShleHBlY3RlZF9idWZm
ZXIpKSk7Cit9CisKKy0gKHZvaWQpdGVzdFdyaXRlTXVsdGlwbGVOYWx1cyB7CisgIC8vIGNsYW5n
LWZvcm1hdCBvZmYKKyAgY29uc3QgdWludDhfdCBleHBlY3RlZF9idWZmZXJbXSA9IHsKKyAgICAw
eDAwLCAweDAwLCAweDAwLCAweDAzLCAweEFBLCAweEJCLCAweENDLAorICAgIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDQsIDB4REUsIDB4QUQsIDB4QkUsIDB4RUYKKyAgfTsKKyAgLy8gY2xhbmctZm9y
bWF0IG9uCisgIGNvbnN0IHNpemVfdCBidWZmZXJfc2l6ZSA9IGFycmF5c2l6ZShOQUxVX1RFU1Rf
REFUQV8wKSArIGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8xKSArIDg7CisgIHN0ZDo6dW5pcXVl
X3B0cjx1aW50OF90W10+IGJ1ZmZlcihuZXcgdWludDhfdFtidWZmZXJfc2l6ZV0pOworICB3ZWJy
dGM6OkF2Y2NCdWZmZXJXcml0ZXIgd3JpdGVyKGJ1ZmZlci5nZXQoKSwgYnVmZmVyX3NpemUpOwor
ICBYQ1RBc3NlcnRFcXVhbChidWZmZXJfc2l6ZSwgd3JpdGVyLkJ5dGVzUmVtYWluaW5nKCkpOwor
ICBYQ1RBc3NlcnRUcnVlKHdyaXRlci5Xcml0ZU5hbHUoTkFMVV9URVNUX0RBVEFfMCwgYXJyYXlz
aXplKE5BTFVfVEVTVF9EQVRBXzApKSk7CisgIFhDVEFzc2VydEVxdWFsKGJ1ZmZlcl9zaXplIC0g
KGFycmF5c2l6ZShOQUxVX1RFU1RfREFUQV8wKSArIDQpLCB3cml0ZXIuQnl0ZXNSZW1haW5pbmco
KSk7CisgIFhDVEFzc2VydFRydWUod3JpdGVyLldyaXRlTmFsdShOQUxVX1RFU1RfREFUQV8xLCBh
cnJheXNpemUoTkFMVV9URVNUX0RBVEFfMSkpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMHUsIHdyaXRl
ci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0RXF1YWwoMCwgbWVtY21wKGV4cGVjdGVk
X2J1ZmZlciwgYnVmZmVyLmdldCgpLCBhcnJheXNpemUoZXhwZWN0ZWRfYnVmZmVyKSkpOworfQor
CistICh2b2lkKXRlc3RPdmVyZmxvdyB7CisgIGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRfYnVmZmVy
W10gPSB7MHgwMCwgMHgwMCwgMHgwMH07CisgIGNvbnN0IHNpemVfdCBidWZmZXJfc2l6ZSA9IGFy
cmF5c2l6ZShOQUxVX1RFU1RfREFUQV8wKTsKKyAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4g
YnVmZmVyKG5ldyB1aW50OF90W2J1ZmZlcl9zaXplXSk7CisgIG1lbXNldChidWZmZXIuZ2V0KCks
IDAsIGJ1ZmZlcl9zaXplKTsKKyAgd2VicnRjOjpBdmNjQnVmZmVyV3JpdGVyIHdyaXRlcihidWZm
ZXIuZ2V0KCksIGJ1ZmZlcl9zaXplKTsKKyAgWENUQXNzZXJ0RXF1YWwoYnVmZmVyX3NpemUsIHdy
aXRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENUQXNzZXJ0RmFsc2Uod3JpdGVyLldyaXRlTmFs
dShOQUxVX1RFU1RfREFUQV8wLCBhcnJheXNpemUoTkFMVV9URVNUX0RBVEFfMCkpKTsKKyAgWENU
QXNzZXJ0RXF1YWwoYnVmZmVyX3NpemUsIHdyaXRlci5CeXRlc1JlbWFpbmluZygpKTsKKyAgWENU
QXNzZXJ0RXF1YWwoMCwgbWVtY21wKGV4cGVjdGVkX2J1ZmZlciwgYnVmZmVyLmdldCgpLCBhcnJh
eXNpemUoZXhwZWN0ZWRfYnVmZmVyKSkpOworfQorCistICh2b2lkKXRlc3RIMjY0QW5uZXhCQnVm
ZmVyVG9DTVNhbXBsZUJ1ZmZlciB7CisgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgY29uc3QgdWlu
dDhfdCBhbm5leF9iX3Rlc3RfZGF0YVtdID0geworICAgIDB4MDAsCisgICAgMHgwMCwgMHgwMCwg
MHgwMSwKKyAgICAweDAxLCAweDAwLCAweDAwLCAweEZGLCAvLyBmaXJzdCBjaHVuaywgNCBieXRl
cworICAgIDB4MDAsIDB4MDAsIDB4MDEsCisgICAgMHhBQSwgMHhGRiwgLy8gc2Vjb25kIGNodW5r
LCAyIGJ5dGVzCisgICAgMHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweEJCfTsgIC8vIHRoaXJkIGNo
dW5rLCAxIGJ5dGUsIHdpbGwgbm90IGZpdCBpbnRvIG91dHB1dCBhcnJheQorCisgIGNvbnN0IHVp
bnQ4X3QgZXhwZWN0ZWRfY21zYW1wbGVfZGF0YVtdID0geworICAgIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDQsCisgICAgMHgwMSwgMHgwMCwgMHgwMCwgMHhGRiwgLy8gZmlyc3QgY2h1bmssIDQgYnl0
ZXMKKyAgICAweDAwLCAweDAwLCAweDAwLCAweDAyLAorICAgIDB4QUEsIDB4RkZ9OyAvLyBzZWNv
bmQgY2h1bmssIDIgYnl0ZXMKKyAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgQ01NZW1vcnlQb29s
UmVmIG1lbW9yeV9wb29sID0gQ01NZW1vcnlQb29sQ3JlYXRlKG5pbCk7CisgIENNU2FtcGxlQnVm
ZmVyUmVmIG91dF9zYW1wbGVfYnVmZmVyID0gbmlsOworICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRp
b25SZWYgZGVzY3JpcHRpb24gPSBbc2VsZiBjcmVhdGVEZXNjcmlwdGlvbl07CisKKyAgQm9vbGVh
biByZXN1bHQgPSB3ZWJydGM6OkgyNjRBbm5leEJCdWZmZXJUb0NNU2FtcGxlQnVmZmVyKGFubmV4
X2JfdGVzdF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXJyYXlzaXplKGFubmV4X2JfdGVzdF9kYXRhKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJm91dF9zYW1wbGVfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Bvb2wpOworCisgIFhD
VEFzc2VydFRydWUocmVzdWx0KTsKKworICBYQ1RBc3NlcnRFcXVhbChkZXNjcmlwdGlvbiwgQ01T
YW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihvdXRfc2FtcGxlX2J1ZmZlcikpOworCisg
IGNoYXIqIGRhdGFfcHRyID0gbnVsbHB0cjsKKyAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja19idWZm
ZXIgPSBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIob3V0X3NhbXBsZV9idWZmZXIpOworICBz
aXplX3QgYmxvY2tfYnVmZmVyX3NpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChibG9j
a19idWZmZXIpOworICBDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoYmxvY2tfYnVmZmVyLCAw
LCBudWxscHRyLCBudWxscHRyLCAmZGF0YV9wdHIpOworICBYQ1RBc3NlcnRFcXVhbChibG9ja19i
dWZmZXJfc2l6ZSwgYXJyYXlzaXplKGFubmV4X2JfdGVzdF9kYXRhKSk7CisKKyAgaW50IGRhdGFf
Y29tcGFyaXNvbl9yZXN1bHQgPQorICAgICAgbWVtY21wKGV4cGVjdGVkX2Ntc2FtcGxlX2RhdGEs
IGRhdGFfcHRyLCBhcnJheXNpemUoZXhwZWN0ZWRfY21zYW1wbGVfZGF0YSkpOworCisgIFhDVEFz
c2VydEVxdWFsKDAsIGRhdGFfY29tcGFyaXNvbl9yZXN1bHQpOworCisgIGlmIChkZXNjcmlwdGlv
bikgeworICAgIENGUmVsZWFzZShkZXNjcmlwdGlvbik7CisgICAgZGVzY3JpcHRpb24gPSBudWxs
cHRyOworICB9CisKKyAgQ01NZW1vcnlQb29sSW52YWxpZGF0ZShtZW1vcnlfcG9vbCk7CisgIENG
UmVsZWFzZShtZW1vcnlfcG9vbCk7Cit9CisKKy0gKHZvaWQpdGVzdEgyNjRDTVNhbXBsZUJ1ZmZl
clRvQW5uZXhCQnVmZmVyIHsKKyAgLy8gY2xhbmctZm9ybWF0IG9mZgorICBjb25zdCB1aW50OF90
IGNtc2FtcGxlX2RhdGFbXSA9IHsKKyAgICAweDAwLCAweDAwLCAweDAwLCAweDA0LAorICAgIDB4
MDEsIDB4MDAsIDB4MDAsIDB4RkYsIC8vIGZpcnN0IGNodW5rLCA0IGJ5dGVzCisgICAgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMiwKKyAgICAweEFBLCAweEZGfTsgLy8gc2Vjb25kIGNodW5rLCAyIGJ5
dGVzCisKKyAgY29uc3QgdWludDhfdCBleHBlY3RlZF9hbm5leF9iX2RhdGFbXSA9IHsKKyAgICAw
eDAwLCAweDAwLCAweDAwLCAweDAxLAorICAgIDB4MDEsIDB4MDAsIDB4MDAsIDB4RkYsIC8vIGZp
cnN0IGNodW5rLCA0IGJ5dGVzCisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweEFB
LCAweEZGfTsgLy8gc2Vjb25kIGNodW5rLCAyIGJ5dGVzCisgIC8vIGNsYW5nLWZvcm1hdCBvbgor
CisgIHJ0Yzo6QnVmZmVyIGFubmV4Yl9idWZmZXIoYXJyYXlzaXplKGNtc2FtcGxlX2RhdGEpKTsK
KyAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlcj4gb3V0X2hl
YWRlcl9wdHI7CisgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZV9idWZmZXIgPQorICAgICAgW3Nl
bGYgY3JlYXRlQ01TYW1wbGVCdWZmZXJSZWY6KHZvaWQqKWNtc2FtcGxlX2RhdGEgY21zYW1wbGVT
aXplOmFycmF5c2l6ZShjbXNhbXBsZV9kYXRhKV07CisKKyAgQm9vbGVhbiByZXN1bHQgPSB3ZWJy
dGM6OkgyNjRDTVNhbXBsZUJ1ZmZlclRvQW5uZXhCQnVmZmVyKHNhbXBsZV9idWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBpc19rZXlmcmFtZSAqLyBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhbm5leGJfYnVmZmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9oZWFk
ZXJfcHRyKTsKKworICBYQ1RBc3NlcnRUcnVlKHJlc3VsdCk7CisKKyAgWENUQXNzZXJ0RXF1YWwo
YXJyYXlzaXplKGV4cGVjdGVkX2FubmV4X2JfZGF0YSksIGFubmV4Yl9idWZmZXIuc2l6ZSgpKTsK
KworICBpbnQgZGF0YV9jb21wYXJpc29uX3Jlc3VsdCA9CisgICAgICBtZW1jbXAoZXhwZWN0ZWRf
YW5uZXhfYl9kYXRhLCBhbm5leGJfYnVmZmVyLmRhdGEoKSwgYXJyYXlzaXplKGV4cGVjdGVkX2Fu
bmV4X2JfZGF0YSkpOworCisgIFhDVEFzc2VydEVxdWFsKDAsIGRhdGFfY29tcGFyaXNvbl9yZXN1
bHQpOworCisgIHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlciogb3V0X2hlYWRlciA9IG91
dF9oZWFkZXJfcHRyLmdldCgpOworCisgIFhDVEFzc2VydEVxdWFsKDIsIChpbnQpb3V0X2hlYWRl
ci0+U2l6ZSgpKTsKKworICBYQ1RBc3NlcnRFcXVhbCg0LCAoaW50KW91dF9oZWFkZXItPk9mZnNl
dCgwKSk7CisgIFhDVEFzc2VydEVxdWFsKDQsIChpbnQpb3V0X2hlYWRlci0+TGVuZ3RoKDApKTsK
KyAgWENUQXNzZXJ0RXF1YWwoMCwgKGludClvdXRfaGVhZGVyLT5UaW1lRGlmZigwKSk7CisgIFhD
VEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+UGF5bG9hZFR5cGUoMCkpOworCisgIFhD
VEFzc2VydEVxdWFsKDEyLCAoaW50KW91dF9oZWFkZXItPk9mZnNldCgxKSk7CisgIFhDVEFzc2Vy
dEVxdWFsKDIsIChpbnQpb3V0X2hlYWRlci0+TGVuZ3RoKDEpKTsKKyAgWENUQXNzZXJ0RXF1YWwo
MCwgKGludClvdXRfaGVhZGVyLT5UaW1lRGlmZigxKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChp
bnQpb3V0X2hlYWRlci0+UGF5bG9hZFR5cGUoMSkpOworfQorCistICh2b2lkKXRlc3RIMjY0Q01T
YW1wbGVCdWZmZXJUb0FubmV4QkJ1ZmZlcldpdGhLZXlmcmFtZSB7CisgIC8vIGNsYW5nLWZvcm1h
dCBvZmYKKyAgY29uc3QgdWludDhfdCBjbXNhbXBsZV9kYXRhW10gPSB7CisgICAgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwNCwKKyAgICAweDAxLCAweDAwLCAweDAwLCAweEZGLCAvLyBmaXJzdCBjaHVu
aywgNCBieXRlcworICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsCisgICAgMHhBQSwgMHhGRn07
IC8vIHNlY29uZCBjaHVuaywgMiBieXRlcworCisgIGNvbnN0IHVpbnQ4X3QgZXhwZWN0ZWRfYW5u
ZXhfYl9kYXRhW10gPSB7CisgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweDAxLCAw
eDAwLCAweDAwLCAweEZGLCAvLyBmaXJzdCBjaHVuaywgNCBieXRlcworICAgIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDEsCisgICAgMHhBQSwgMHhGRn07IC8vIHNlY29uZCBjaHVuaywgMiBieXRlcwor
ICAvLyBjbGFuZy1mb3JtYXQgb24KKworICBydGM6OkJ1ZmZlciBhbm5leGJfYnVmZmVyKGFycmF5
c2l6ZShjbXNhbXBsZV9kYXRhKSk7CisgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlJUUEZyYWdt
ZW50YXRpb25IZWFkZXI+IG91dF9oZWFkZXJfcHRyOworICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGVfYnVmZmVyID0KKyAgICAgIFtzZWxmIGNyZWF0ZUNNU2FtcGxlQnVmZmVyUmVmOih2b2lkKilj
bXNhbXBsZV9kYXRhIGNtc2FtcGxlU2l6ZTphcnJheXNpemUoY21zYW1wbGVfZGF0YSldOworCisg
IEJvb2xlYW4gcmVzdWx0ID0gd2VicnRjOjpIMjY0Q01TYW1wbGVCdWZmZXJUb0FubmV4QkJ1ZmZl
cihzYW1wbGVfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogaXNfa2V5ZnJhbWUgKi8gdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhbm5leGJf
YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJm91dF9oZWFkZXJfcHRyKTsKKworICBYQ1RBc3NlcnRUcnVlKHJlc3VsdCk7
CisKKyAgWENUQXNzZXJ0RXF1YWwoYXJyYXlzaXplKFNQU19QUFNfQlVGRkVSKSArIGFycmF5c2l6
ZShleHBlY3RlZF9hbm5leF9iX2RhdGEpLAorICAgICAgICAgICAgICAgICBhbm5leGJfYnVmZmVy
LnNpemUoKSk7CisKKyAgWENUQXNzZXJ0RXF1YWwoMCwgbWVtY21wKFNQU19QUFNfQlVGRkVSLCBh
bm5leGJfYnVmZmVyLmRhdGEoKSwgYXJyYXlzaXplKFNQU19QUFNfQlVGRkVSKSkpOworCisgIFhD
VEFzc2VydEVxdWFsKDAsCisgICAgICAgICAgICAgICAgIG1lbWNtcChleHBlY3RlZF9hbm5leF9i
X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBhbm5leGJfYnVmZmVyLmRhdGEoKSArIGFy
cmF5c2l6ZShTUFNfUFBTX0JVRkZFUiksCisgICAgICAgICAgICAgICAgICAgICAgICBhcnJheXNp
emUoZXhwZWN0ZWRfYW5uZXhfYl9kYXRhKSkpOworCisgIHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlv
bkhlYWRlciogb3V0X2hlYWRlciA9IG91dF9oZWFkZXJfcHRyLmdldCgpOworCisgIFhDVEFzc2Vy
dEVxdWFsKDQsIChpbnQpb3V0X2hlYWRlci0+U2l6ZSgpKTsKKworICBYQ1RBc3NlcnRFcXVhbCg0
LCAoaW50KW91dF9oZWFkZXItPk9mZnNldCgwKSk7CisgIFhDVEFzc2VydEVxdWFsKDE0LCAoaW50
KW91dF9oZWFkZXItPkxlbmd0aCgwKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hl
YWRlci0+VGltZURpZmYoMCkpOworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFkZXIt
PlBheWxvYWRUeXBlKDApKTsKKworICBYQ1RBc3NlcnRFcXVhbCgyMiwgKGludClvdXRfaGVhZGVy
LT5PZmZzZXQoMSkpOworICBYQ1RBc3NlcnRFcXVhbCg0LCAoaW50KW91dF9oZWFkZXItPkxlbmd0
aCgxKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+VGltZURpZmYoMSkp
OworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFkZXItPlBheWxvYWRUeXBlKDEpKTsK
KworICBYQ1RBc3NlcnRFcXVhbCgzMCwgKGludClvdXRfaGVhZGVyLT5PZmZzZXQoMikpOworICBY
Q1RBc3NlcnRFcXVhbCg0LCAoaW50KW91dF9oZWFkZXItPkxlbmd0aCgyKSk7CisgIFhDVEFzc2Vy
dEVxdWFsKDAsIChpbnQpb3V0X2hlYWRlci0+VGltZURpZmYoMikpOworICBYQ1RBc3NlcnRFcXVh
bCgwLCAoaW50KW91dF9oZWFkZXItPlBheWxvYWRUeXBlKDIpKTsKKworICBYQ1RBc3NlcnRFcXVh
bCgzOCwgKGludClvdXRfaGVhZGVyLT5PZmZzZXQoMykpOworICBYQ1RBc3NlcnRFcXVhbCgyLCAo
aW50KW91dF9oZWFkZXItPkxlbmd0aCgzKSk7CisgIFhDVEFzc2VydEVxdWFsKDAsIChpbnQpb3V0
X2hlYWRlci0+VGltZURpZmYoMykpOworICBYQ1RBc3NlcnRFcXVhbCgwLCAoaW50KW91dF9oZWFk
ZXItPlBheWxvYWRUeXBlKDMpKTsKK30KKworLSAoQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVm
KWNyZWF0ZURlc2NyaXB0aW9uIHsKKyAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2Ny
aXB0aW9uID0KKyAgICAgIHdlYnJ0Yzo6Q3JlYXRlVmlkZW9Gb3JtYXREZXNjcmlwdGlvbihTUFNf
UFBTX0JVRkZFUiwgYXJyYXlzaXplKFNQU19QUFNfQlVGRkVSKSk7CisgIFhDVEFzc2VydFRydWUo
ZGVzY3JpcHRpb24pOworICByZXR1cm4gZGVzY3JpcHRpb247Cit9CisKKy0gKENNU2FtcGxlQnVm
ZmVyUmVmKWNyZWF0ZUNNU2FtcGxlQnVmZmVyUmVmOih2b2lkKiljbXNhbXBsZURhdGEgY21zYW1w
bGVTaXplOihzaXplX3QpY21zYW1wbGVTaXplIHsKKyAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
X2J1ZmZlciA9IG5pbDsKKyAgT1NTdGF0dXMgc3RhdHVzOworCisgIENNVmlkZW9Gb3JtYXREZXNj
cmlwdGlvblJlZiBkZXNjcmlwdGlvbiA9IFtzZWxmIGNyZWF0ZURlc2NyaXB0aW9uXTsKKyAgQ01C
bG9ja0J1ZmZlclJlZiBibG9ja19idWZmZXIgPSBudWxscHRyOworCisgIHN0YXR1cyA9IENNQmxv
Y2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2sobnVsbHB0ciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNhbXBsZURhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zYW1wbGVTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc2FtcGxlU2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9y
eU5vd0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmJsb2NrX2J1ZmZlcik7CisKKyAgc3RhdHVzID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUobnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfYnVmZmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNhbXBsZV9idWZm
ZXIpOworCisgIHJldHVybiBzYW1wbGVfYnVmZmVyOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVz
dHMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnlfdGVzdHMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy91bml0dGVzdHMvb2JqY192aWRlb19l
bmNvZGVyX2ZhY3RvcnlfdGVzdHMubW0KaW5kZXggZDAwOWQ1MWJiYTMxNTQ1NDdjMmJjMTRlZWQy
Y2FmNjMwNjYyNjViMC4uNTBjMzBjMGM3NDQyNzUzMzcxNjA3YTAxZmIwZmU1ZGVlYTJmZTlmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvdW5pdHRlc3RzL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5X3Rlc3RzLm1tCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL3VuaXR0
ZXN0cy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeV90ZXN0cy5tbQpAQCAtODIsNyArODIsNiBA
QCBURVNUKE9iakNWaWRlb0VuY29kZXJGYWN0b3J5VGVzdCwgRW5jb2RlUmV0dXJuc09LT25TdWNj
ZXNzKSB7CiAgIHdlYnJ0Yzo6VmlkZW9GcmFtZSBmcmFtZShidWZmZXIsIHdlYnJ0Yzo6a1ZpZGVv
Um90YXRpb25fMCwgMCk7CiAgIHdlYnJ0Yzo6Q29kZWNTcGVjaWZpY0luZm8gaW5mbzsKICAgaW5m
by5jb2RlY1R5cGUgPSB3ZWJydGM6OmtWaWRlb0NvZGVjSDI2NDsKLSAgaW5mby5jb2RlY19uYW1l
ID0gIkgyNjQiOwogICBzdGQ6OnZlY3Rvcjx3ZWJydGM6OkZyYW1lVHlwZT4gZnJhbWVfdHlwZXM7
CiAKICAgRVhQRUNUX0VRKGVuY29kZXItPkVuY29kZShmcmFtZSwgJmluZm8sICZmcmFtZV90eXBl
cyksIFdFQlJUQ19WSURFT19DT0RFQ19PSyk7CkBAIC05OSw3ICs5OCw2IEBAIFRFU1QoT2JqQ1Zp
ZGVvRW5jb2RlckZhY3RvcnlUZXN0LCBFbmNvZGVSZXR1cm5zRXJyb3JPbkZhaWwpIHsKICAgd2Vi
cnRjOjpWaWRlb0ZyYW1lIGZyYW1lKGJ1ZmZlciwgd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wLCAw
KTsKICAgd2VicnRjOjpDb2RlY1NwZWNpZmljSW5mbyBpbmZvOwogICBpbmZvLmNvZGVjVHlwZSA9
IHdlYnJ0Yzo6a1ZpZGVvQ29kZWNIMjY0OwotICBpbmZvLmNvZGVjX25hbWUgPSAiSDI2NCI7CiAg
IHN0ZDo6dmVjdG9yPHdlYnJ0Yzo6RnJhbWVUeXBlPiBmcmFtZV90eXBlczsKIAogICBFWFBFQ1Rf
RVEoZW5jb2Rlci0+RW5jb2RlKGZyYW1lLCAmaW5mbywgJmZyYW1lX3R5cGVzKSwgV0VCUlRDX1ZJ
REVPX0NPREVDX0VSUk9SKTsKQEAgLTExNywxMiArMTE1LDYgQEAgVEVTVChPYmpDVmlkZW9FbmNv
ZGVyRmFjdG9yeVRlc3QsIFJlbGVhc2VFbmNvZGVSZXR1cm5zRXJyb3JPbkZhaWwpIHsKICAgRVhQ
RUNUX0VRKGVuY29kZXItPlJlbGVhc2UoKSwgV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SKTsKIH0K
IAotVEVTVChPYmpDVmlkZW9FbmNvZGVyRmFjdG9yeVRlc3QsIFNldENoYW5uZWxQYXJhbWV0ZXJz
QWx3YXlzUmV0dXJuc09LKSB7Ci0gIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rl
cj4gZW5jb2RlciA9IEdldE9iakNFbmNvZGVyKENyZWF0ZUVycm9yRW5jb2RlckZhY3RvcnkoKSk7
Ci0KLSAgRVhQRUNUX0VRKGVuY29kZXItPlNldENoYW5uZWxQYXJhbWV0ZXJzKDEsIDEpLCBXRUJS
VENfVklERU9fQ09ERUNfT0spOwotfQotCiBURVNUKE9iakNWaWRlb0VuY29kZXJGYWN0b3J5VGVz
dCwgU2V0UmF0ZXNSZXR1cm5zT0tPblN1Y2Nlc3MpIHsKICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0
Yzo6VmlkZW9FbmNvZGVyPiBlbmNvZGVyID0gR2V0T2JqQ0VuY29kZXIoQ3JlYXRlT0tFbmNvZGVy
RmFjdG9yeSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc3RhdHMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zdGF0cy9CVUlMRC5nbgppbmRleCBkZTMwMGYxOGNmMmZhZjNiOTRiNmY1
OTAwZmVkNWY3YmJkMTUyNzc4Li5jNjdhNWJlMzY1NGRlNjIyNDQ0MmVhMTNmOTU0OGE3MGNjMzU1
OGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zdGF0cy9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zdGF0cy9CVUlMRC5nbgpAQCAtNDAsNiArNDAsNyBAQCBydGNfc291cmNlX3NldCgi
cnRjX3N0YXRzX3Rlc3RfdXRpbHMiKSB7CiAgIGRlcHMgPSBbCiAgICAgIjpydGNfc3RhdHMiLAog
ICAgICIuLi9hcGk6cnRjX3N0YXRzX2FwaSIsCisgICAgIi4uL3J0Y19iYXNlL3N5c3RlbTpydGNf
ZXhwb3J0IiwKICAgXQogfQogCkBAIC01Niw5ICs1Nyw5IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0
cykgewogICAgICAgIjpydGNfc3RhdHNfdGVzdF91dGlscyIsCiAgICAgICAiLi4vYXBpOnJ0Y19z
dGF0c19hcGkiLAogICAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgICAiLi4vcnRjX2Jh
c2U6Z3VuaXRfaGVscGVycyIsCiAgICAgICAiLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQi
LAogICAgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX21haW4iLAotICAgICAgIi4uL3J0
Y19iYXNlOnJ0Y19iYXNlX3Rlc3RzX3V0aWxzIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfanNv
biIsCiAgICAgXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zdGF0cy9ydGNzdGF0c19vYmplY3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3RhdHMvcnRjc3RhdHNfb2JqZWN0cy5jYwppbmRleCBk
Y2MxMTgwZjE2ZjEwZmZjMjg1YWRiZmU2NzAyZjE2NmM3MWVhODUxLi5jZDUyYTU1OTcxYmViYTNl
ZmZmNjkwNTdhYWUyZTYyMDZmZDU3MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdGF0cy9ydGNzdGF0c19vYmplY3RzLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0YXRzL3J0Y3N0YXRzX29i
amVjdHMuY2MKQEAgLTM3NCw3ICszNzQsOSBAQCBXRUJSVENfUlRDU1RBVFNfSU1QTChSVENNZWRp
YVN0cmVhbVRyYWNrU3RhdHMsIFJUQ1N0YXRzLCAidHJhY2siLAogICAgICAgICAgICAgICAgICAg
ICAgJnRvdGFsX3NhbXBsZXNfcmVjZWl2ZWQsCiAgICAgICAgICAgICAgICAgICAgICAmdG90YWxf
c2FtcGxlc19kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICZjb25jZWFsZWRfc2FtcGxl
cywKLSAgICAgICAgICAgICAgICAgICAgICZjb25jZWFsbWVudF9ldmVudHMpOworICAgICAgICAg
ICAgICAgICAgICAgJmNvbmNlYWxtZW50X2V2ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICZq
aXR0ZXJfYnVmZmVyX2ZsdXNoZXMsCisgICAgICAgICAgICAgICAgICAgICAmZGVsYXllZF9wYWNr
ZXRfb3V0YWdlX3NhbXBsZXMpOwogLy8gY2xhbmctZm9ybWF0IG9uCiAKIFJUQ01lZGlhU3RyZWFt
VHJhY2tTdGF0czo6UlRDTWVkaWFTdHJlYW1UcmFja1N0YXRzKGNvbnN0IHN0ZDo6c3RyaW5nJiBp
ZCwKQEAgLTQxMCw3ICs0MTIsOSBAQCBSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHM6OlJUQ01lZGlh
U3RyZWFtVHJhY2tTdGF0cyhzdGQ6OnN0cmluZyYmIGlkLAogICAgICAgdG90YWxfc2FtcGxlc19y
ZWNlaXZlZCgidG90YWxTYW1wbGVzUmVjZWl2ZWQiKSwKICAgICAgIHRvdGFsX3NhbXBsZXNfZHVy
YXRpb24oInRvdGFsU2FtcGxlc0R1cmF0aW9uIiksCiAgICAgICBjb25jZWFsZWRfc2FtcGxlcygi
Y29uY2VhbGVkU2FtcGxlcyIpLAotICAgICAgY29uY2VhbG1lbnRfZXZlbnRzKCJjb25jZWFsbWVu
dEV2ZW50cyIpIHsKKyAgICAgIGNvbmNlYWxtZW50X2V2ZW50cygiY29uY2VhbG1lbnRFdmVudHMi
KSwKKyAgICAgIGppdHRlcl9idWZmZXJfZmx1c2hlcygiaml0dGVyQnVmZmVyRmx1c2hlcyIpLAor
ICAgICAgZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMoImRlbGF5ZWRQYWNrZXRPdXRhZ2VT
YW1wbGVzIikgewogICBSVENfRENIRUNLKGtpbmQgPT0gUlRDTWVkaWFTdHJlYW1UcmFja0tpbmQ6
OmtBdWRpbyB8fAogICAgICAgICAgICAgIGtpbmQgPT0gUlRDTWVkaWFTdHJlYW1UcmFja0tpbmQ6
OmtWaWRlbyk7CiB9CkBAIC00NDIsNyArNDQ2LDkgQEAgUlRDTWVkaWFTdHJlYW1UcmFja1N0YXRz
OjpSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHMoCiAgICAgICB0b3RhbF9zYW1wbGVzX3JlY2VpdmVk
KG90aGVyLnRvdGFsX3NhbXBsZXNfcmVjZWl2ZWQpLAogICAgICAgdG90YWxfc2FtcGxlc19kdXJh
dGlvbihvdGhlci50b3RhbF9zYW1wbGVzX2R1cmF0aW9uKSwKICAgICAgIGNvbmNlYWxlZF9zYW1w
bGVzKG90aGVyLmNvbmNlYWxlZF9zYW1wbGVzKSwKLSAgICAgIGNvbmNlYWxtZW50X2V2ZW50cyhv
dGhlci5jb25jZWFsbWVudF9ldmVudHMpIHt9CisgICAgICBjb25jZWFsbWVudF9ldmVudHMob3Ro
ZXIuY29uY2VhbG1lbnRfZXZlbnRzKSwKKyAgICAgIGppdHRlcl9idWZmZXJfZmx1c2hlcyhvdGhl
ci5qaXR0ZXJfYnVmZmVyX2ZsdXNoZXMpLAorICAgICAgZGVsYXllZF9wYWNrZXRfb3V0YWdlX3Nh
bXBsZXMob3RoZXIuZGVsYXllZF9wYWNrZXRfb3V0YWdlX3NhbXBsZXMpIHt9CiAKIFJUQ01lZGlh
U3RyZWFtVHJhY2tTdGF0czo6flJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cygpIHt9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0YXRzL3Rl
c3QvcnRjdGVzdHN0YXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zdGF0cy90ZXN0L3J0Y3Rlc3RzdGF0cy5oCmluZGV4IDdjOGUxMDUxZmYxMGFjZTQ1Njhj
MjU3NDlhOTJkNzk2YmJjYWQ4YTUuLmE3ZDJjOTFkYTA2MWQyNDUyMjUxYjg2MGZmMDJjMGE1ZDEy
OWM3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3N0YXRzL3Rlc3QvcnRjdGVzdHN0YXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc3RhdHMvdGVzdC9ydGN0ZXN0c3RhdHMuaApAQCAtMTUsMTAg
KzE1LDExIEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYXBpL3N0YXRzL3J0Y3N0
YXRzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2Uvc3lzdGVtL3J0Y19leHBvcnQuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKLWNsYXNzIFJUQ1Rlc3RTdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7Citj
bGFzcyBSVENfRVhQT1JUIFJUQ1Rlc3RTdGF0cyA6IHB1YmxpYyBSVENTdGF0cyB7CiAgcHVibGlj
OgogICBXRUJSVENfUlRDU1RBVFNfREVDTCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zdHlsZS1ndWlkZS5tZCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0eWxlLWd1aWRlLm1kCmluZGV4IDJhMzVm
ZGM1ZDFhNDc2ZWQ3NTY5MmUyMTAxNDgxZTM2NzY4M2U3YWIuLjM5MWM0NWI2NDRkMDQxYTg5NDI0
MDFhZDNkZWJkNmRlODQxNjFjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0eWxlLWd1aWRlLm1kCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N0eWxlLWd1aWRlLm1kCkBAIC03Nyw2ICs3NywxOCBA
QCBpbnN0ZWFkIG9mICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVzZQogCiBTZWUgW3RoZSBz
b3VyY2VdKGFwaS9hcnJheV92aWV3LmgpIGZvciBtb3JlIGRldGFpbGVkIGRvY3MuCiAKKyMjIyBg
YWJzbDo6b3B0aW9uYWw8VD5gIGFzIGZ1bmN0aW9uIGFyZ3VtZW50CisKK2BhYnNsOjpvcHRpb25h
bDxUPmAgaXMgZ2VuZXJhbGx5IGEgZ29vZCBjaG9pY2Ugd2hlbiB5b3Ugd2FudCB0byBwYXNzIGEK
K3Bvc3NpYmx5IG1pc3NpbmcgYFRgIHRvIGEgZnVuY3Rpb24mbWRhc2g7cHJvdmlkZWQgb2YgY291
cnNlIHRoYXQgYFRgCitpcyBhIHR5cGUgdGhhdCBpdCBtYWtlcyBzZW5zZSB0byBwYXNzIGJ5IHZh
bHVlLgorCitIb3dldmVyLCB3aGVuIHlvdSB3YW50IHRvIGF2b2lkIHBhc3MtYnktdmFsdWUsIGdl
bmVyYWxseSAqKmRvIG5vdCBwYXNzCitgY29uc3QgYWJzbDo6b3B0aW9uYWw8VD4mYDsgdXNlIGBj
b25zdCBUKmAgaW5zdGVhZC4qKiBgY29uc3QKK2Fic2w6Om9wdGlvbmFsPFQ+JmAgZm9yY2VzIHRo
ZSBjYWxsZXIgdG8gc3RvcmUgdGhlIGBUYCBpbiBhbgorYGFic2w6Om9wdGlvbmFsPFQ+YDsgYGNv
bnN0IFQqYCwgb24gdGhlIG90aGVyIGhhbmQsIG1ha2VzIG5vCithc3N1bXB0aW9ucyBhYm91dCBo
b3cgdGhlIGBUYCBpcyBzdG9yZWQuCisKICMjIyBzaWdzbG90CiAKIHNpZ3Nsb3QgaXMgYSBsaWdo
dHdlaWdodCBsaWJyYXJ5IHRoYXQgYWRkcyBhIHNpZ25hbC9zbG90IGxhbmd1YWdlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3Jh
cHBlcnMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zeXN0ZW1fd3JhcHBlcnMvQlVJTEQuZ24KaW5kZXggZWI2MDA1MjI2NTkzYjRlZWE0NGIxOWZk
OTRhZmU4MzBiODM5MWRiYy4uZGE4M2QxMmU4ZGIxOTE5NDI4YTQ5MzkxYWIxMTQ2YTQwZjhlZjNi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c3lzdGVtX3dyYXBwZXJzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9CVUlMRC5nbgpAQCAtMzMsNyArMzMsNyBA
QCBydGNfc3RhdGljX2xpYnJhcnkoInN5c3RlbV93cmFwcGVycyIpIHsKICAgbGlicyA9IFtdCiAg
IGRlcHMgPSBbCiAgICAgIjpjcHVfZmVhdHVyZXNfYXBpIiwKLSAgICAiLi46d2VicnRjX2NvbW1v
biIsCisgICAgIi4uL2FwaTphcnJheV92aWV3IiwKICAgICAiLi4vbW9kdWxlczptb2R1bGVfYXBp
X3B1YmxpYyIsCiAgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCiAgICAgIi4uL3J0Y19iYXNlL3N5
bmNocm9uaXphdGlvbjpyd19sb2NrX3dyYXBwZXIiLApAQCAtODksOSArODksNiBAQCBydGNfc291
cmNlX3NldCgiY3B1X2ZlYXR1cmVzX2FwaSIpIHsKICAgc291cmNlcyA9IFsKICAgICAiaW5jbHVk
ZS9jcHVfZmVhdHVyZXNfd3JhcHBlci5oIiwKICAgXQotICBkZXBzID0gWwotICAgICIuLjp3ZWJy
dGNfY29tbW9uIiwKLSAgXQogfQogCiBydGNfc291cmNlX3NldCgiZmllbGRfdHJpYWwiKSB7CkBA
IC0xMDUsNiArMTAyLDE2IEBAIHJ0Y19zb3VyY2Vfc2V0KCJmaWVsZF90cmlhbCIpIHsKICAgaWYg
KHJ0Y19leGNsdWRlX2ZpZWxkX3RyaWFsX2RlZmF1bHQpIHsKICAgICBkZWZpbmVzID0gWyAiV0VC
UlRDX0VYQ0xVREVfRklFTERfVFJJQUxfREVGQVVMVCIgXQogICB9CisgIGlmIChidWlsZF93aXRo
X2Nocm9taXVtKSB7CisgICAgIyBXaGVuIFdlYlJUQyBpcyBidWlsdCBhcyBwYXJ0IG9mIENocm9t
aXVtIGl0IHNob3VsZCBleGNsdWRlIHRoZSBkZWZhdWx0CisgICAgIyBpbXBsZW1lbnRhdGlvbiBv
ZiBmaWVsZF90cmlhbCB1bmxlc3MgaXQgaXMgYnVpbGRpbmcgZm9yIE5BQ0wgb3IKKyAgICAjIENo
cm9tZWNhc3QuCisgICAgaWYgKCFpc19uYWNsICYmICFpc19jaHJvbWVjYXN0KSB7CisgICAgICBk
ZXBzID0gWworICAgICAgICAiLi4vLi4vd2VicnRjX292ZXJyaWRlczpmaWVsZF90cmlhbCIsCisg
ICAgICBdCisgICAgfQorICB9CiB9CiAKIHJ0Y19zb3VyY2Vfc2V0KCJtZXRyaWNzIikgewpAQCAt
MTIzLDYgKzEzMCw5IEBAIHJ0Y19zb3VyY2Vfc2V0KCJtZXRyaWNzIikgewogICAgICIuLi9ydGNf
YmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgIF0K
KyAgaWYgKGJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKKyAgICBkZXBzICs9IFsgIi4uLy4uL3dlYnJ0
Y19vdmVycmlkZXM6bWV0cmljcyIgXQorICB9CiB9CiAKIGlmIChpc19hbmRyb2lkICYmICFidWls
ZF93aXRoX21vemlsbGEpIHsKQEAgLTE2Niw2ICsxNzYsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICAgICIuLjp3ZWJydGNfY29tbW9uIiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNf
YmFzZV9hcHByb3ZlZCIsCiAgICAgICAiLi4vdGVzdDp0ZXN0X21haW4iLAorICAgICAgIi4uL3Rl
c3Q6dGVzdF9zdXBwb3J0IiwKICAgICAgICIvL3Rlc3RpbmcvZ3Rlc3QiLAogICAgIF0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVt
X3dyYXBwZXJzL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3N5c3RlbV93cmFwcGVycy9PV05FUlMKaW5kZXggMTNiMDhhMzZlZjhmNDgyYjQ5YjZhZmYy
YTI4NGFmMGQzMTAyNzVmZC4uYTA4ZjYxMTRiOTI3NWRmMTJkZTQ1YzE1ZWZlZjI0ZmVmOTlkODNk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c3lzdGVtX3dyYXBwZXJzL09XTkVSUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvT1dORVJTCkBAIC0yLDcgKzIsNiBAQCBoZW5y
aWthQHdlYnJ0Yy5vcmcKIG1mbG9kbWFuQHdlYnJ0Yy5vcmcKIG5pa2xhcy5lbmJvbUB3ZWJydGMu
b3JnCiBuaXNzZUB3ZWJydGMub3JnCi1wZXJrakB3ZWJydGMub3JnCiAKICMgVGhlc2UgYXJlIGZv
ciB0aGUgY29tbW9uIGNhc2Ugb2YgYWRkaW5nIG9yIHJlbmFtaW5nIGZpbGVzLiBJZiB5b3UncmUg
ZG9pbmcKICMgc3RydWN0dXJhbCBjaGFuZ2VzLCBwbGVhc2UgZ2V0IGEgcmV2aWV3IGZyb20gYSBy
ZXZpZXdlciBpbiB0aGlzIGZpbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2lu
Y2x1ZGUvY2xvY2suaAppbmRleCA0YjZlYWI4ZWRjZWJlNTk4YTNiOGRjYWQ4MzA4MWFiMjQzYjJm
MmM1Li5mMWZjMTFmMTcyOThlODc2MmM5M2NjYmRjNjg0NjA0M2EyMWIxNGRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBl
cnMvaW5jbHVkZS9jbG9jay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgKQEAgLTExLDYgKzExLDcg
QEAKICNpZm5kZWYgU1lTVEVNX1dSQVBQRVJTX0lOQ0xVREVfQ0xPQ0tfSF8KICNkZWZpbmUgU1lT
VEVNX1dSQVBQRVJTX0lOQ0xVREVfQ0xPQ0tfSF8KIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KIAogI2luY2x1ZGUgInJ0Y19iYXNlL3N5bmNocm9uaXphdGlvbi9yd19s
b2NrX3dyYXBwZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL2V2ZW50X3dyYXBwZXIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9p
bmNsdWRlL2V2ZW50X3dyYXBwZXIuaAppbmRleCAwNTMxZGRiNTYzOGJlMGVjZTg0NTZlOThmNmMz
ZjQyMWQ1OWY1NzBlLi45ODllNzkyOWIzOWEwODE4MjMwMTExMGFlNGYyYjUyMmY5OTFiNGViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0
ZW1fd3JhcHBlcnMvaW5jbHVkZS9ldmVudF93cmFwcGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvZXZlbnRf
d3JhcHBlci5oCkBAIC0xMiwxMSArMTIsNyBAQAogI2RlZmluZSBTWVNURU1fV1JBUFBFUlNfSU5D
TFVERV9FVkVOVF9XUkFQUEVSX0hfCiAKIG5hbWVzcGFjZSB3ZWJydGMgewotZW51bSBFdmVudFR5
cGVXcmFwcGVyIHsKLSAga0V2ZW50U2lnbmFsZWQgPSAxLAotICBrRXZlbnRFcnJvciA9IDIsCi0g
IGtFdmVudFRpbWVvdXQgPSAzCi19OworZW51bSBFdmVudFR5cGVXcmFwcGVyIHsga0V2ZW50U2ln
bmFsZWQgPSAxLCBrRXZlbnRUaW1lb3V0ID0gMiB9OwogCiAjZGVmaW5lIFdFQlJUQ19FVkVOVF9J
TkZJTklURSAweGZmZmZmZmZmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9p
bmNsdWRlL21ldHJpY3MuaAppbmRleCAyYTJjZGEwMmQwM2Y1OWEzNGQ2MjEwODhlYThlYTljMDZj
NDU1MDEyLi5mMDBlY2YyNjIyYWVmZDgxNzcxNzA4NmI2M2FiNGViNGQ5YjMzOTI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9tZXRyaWNzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oCkBAIC0xNSw3
ICsxNSw2IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIAotI2luY2x1
ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAi
cnRjX2Jhc2UvYXRvbWljb3BzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL3J0cF90b19udHBfZXN0aW1hdG9yLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9ydHBf
dG9fbnRwX2VzdGltYXRvci5oCmluZGV4IGQ3MDA5ZDhiMWY0NTA0ZGI1ZDcyODNiZmE3OWQ5MmUy
ODg5ZjQ0NWMuLmMyNDRjNGZmMjc0NTIwOWJmZDQ4ZWM0NWQ5YzhiNjQzNGFlZmNlNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93
cmFwcGVycy9pbmNsdWRlL3J0cF90b19udHBfZXN0aW1hdG9yLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvcnRw
X3RvX250cF9lc3RpbWF0b3IuaApAQCAtMTEsMTAgKzExLDEyIEBACiAjaWZuZGVmIFNZU1RFTV9X
UkFQUEVSU19JTkNMVURFX1JUUF9UT19OVFBfRVNUSU1BVE9SX0hfCiAjZGVmaW5lIFNZU1RFTV9X
UkFQUEVSU19JTkNMVURFX1JUUF9UT19OVFBfRVNUSU1BVE9SX0hfCiAKKyNpbmNsdWRlIDxzdGRp
bnQuaD4KICNpbmNsdWRlIDxsaXN0PgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5o
IgorI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVy
aWNzL21vdmluZ19tZWRpYW5fZmlsdGVyLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2lu
Y2x1ZGUvbnRwX3RpbWUuaCIKIApAQCAtNDAsMjMgKzQyLDEzIEBAIGNsYXNzIFJ0cFRvTnRwRXN0
aW1hdG9yIHsKIAogICAvLyBFc3RpbWF0ZWQgcGFyYW1ldGVycyBmcm9tIFJUUCBhbmQgTlRQIHRp
bWVzdGFtcCBwYWlycyBpbiB8bWVhc3VyZW1lbnRzX3wuCiAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsK
LSAgICAvLyBJbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gaW50IGJlY2F1c2UgTW92aW5nTWVkaWFu
RmlsdGVyIHJldHVybnMgMAotICAgIC8vIGludGVybmFsbHkgaWYgbm8gc2FtcGxlcyBhcmUgcHJl
c2VudC4gSG93ZXZlciwgaXQgc2hvdWxkIG5ldmVyIGhhcHBlbiBhcwotICAgIC8vIHdlIGRvbid0
IGFzayBzbW9vdGhpbmdfZmlsdGVyXyB0byByZXR1cm4gYW55dGhpbmcgaWYgdGhlcmUgd2VyZSBu
bwotICAgIC8vIHNhbXBsZXMuCi0gICAgUGFyYW1ldGVycyhjb25zdCBpbnQmIHZhbHVlKSB7ICAv
LyBOT0xJTlQKLSAgICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgfQogICAgIFBhcmFtZXRlcnMo
KSA6IGZyZXF1ZW5jeV9raHooMC4wKSwgb2Zmc2V0X21zKDAuMCkge30KIAorICAgIFBhcmFtZXRl
cnMoZG91YmxlIGZyZXF1ZW5jeV9raHosIGRvdWJsZSBvZmZzZXRfbXMpCisgICAgICAgIDogZnJl
cXVlbmN5X2toeihmcmVxdWVuY3lfa2h6KSwgb2Zmc2V0X21zKG9mZnNldF9tcykge30KKwogICAg
IGRvdWJsZSBmcmVxdWVuY3lfa2h6OwogICAgIGRvdWJsZSBvZmZzZXRfbXM7Ci0KLSAgICAvLyBO
ZWVkZWQgdG8gbWFrZSBpdCB3b3JrIGluc2lkZSBNb3ZpbmdNZWRpYW5GaWx0ZXIKLSAgICBib29s
IG9wZXJhdG9yPChjb25zdCBQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFBhcmFtZXRlcnMmIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9y
PD0oY29uc3QgUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3Q7CiAgIH07CiAKICAgLy8gVXBkYXRlcyBtZWFz
dXJlbWVudHMgd2l0aCBSVFAvTlRQIHRpbWVzdGFtcCBwYWlyIGZyb20gYSBSVENQIHNlbmRlciBy
ZXBvcnQuCkBAIC02OCw3ICs2MCw3IEBAIGNsYXNzIFJ0cFRvTnRwRXN0aW1hdG9yIHsKIAogICAv
LyBDb252ZXJ0cyBhbiBSVFAgdGltZXN0YW1wIHRvIHRoZSBOVFAgZG9tYWluIGluIG1pbGxpc2Vj
b25kcy4KICAgLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZS4KLSAg
Ym9vbCBFc3RpbWF0ZShpbnQ2NF90IHJ0cF90aW1lc3RhbXAsIGludDY0X3QqIHJ0cF90aW1lc3Rh
bXBfbXMpIGNvbnN0OworICBib29sIEVzdGltYXRlKGludDY0X3QgcnRwX3RpbWVzdGFtcCwgaW50
NjRfdCogbnRwX3RpbWVzdGFtcF9tcykgY29uc3Q7CiAKICAgLy8gUmV0dXJucyBlc3RpbWF0ZWQg
cnRwIHRvIG50cCBsaW5lYXIgdHJhbnNmb3JtIHBhcmFtZXRlcnMuCiAgIGNvbnN0IGFic2w6Om9w
dGlvbmFsPFBhcmFtZXRlcnM+IHBhcmFtcygpIGNvbnN0OwpAQCAtODAsOCArNzIsNyBAQCBjbGFz
cyBSdHBUb050cEVzdGltYXRvciB7CiAKICAgaW50IGNvbnNlY3V0aXZlX2ludmFsaWRfc2FtcGxl
c187CiAgIHN0ZDo6bGlzdDxSdGNwTWVhc3VyZW1lbnQ+IG1lYXN1cmVtZW50c187Ci0gIE1vdmlu
Z01lZGlhbkZpbHRlcjxQYXJhbWV0ZXJzPiBzbW9vdGhpbmdfZmlsdGVyXzsKLSAgYm9vbCBwYXJh
bXNfY2FsY3VsYXRlZF87CisgIGFic2w6Om9wdGlvbmFsPFBhcmFtZXRlcnM+IHBhcmFtc187CiAg
IG11dGFibGUgVGltZXN0YW1wVW53cmFwcGVyIHVud3JhcHBlcl87CiB9OwogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9jbG9jay5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvY2xvY2su
Y2MKaW5kZXggMzVhYjVmMDg3ODM3OWVjZjU1YzViZWE4NWQ5ZjFhYzU2ZTMyMDM2ZC4uNGY1ZDlj
ZmYxZjNhM2E3M2MzOWFiYjMyYWRmNzcxM2RhOWIwZTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9j
bG9jay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
eXN0ZW1fd3JhcHBlcnMvc291cmNlL2Nsb2NrLmNjCkBAIC0xNyw2ICsxNyw4IEBACiAKICNpbmNs
dWRlIDxtbXN5c3RlbS5oPgogCisjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgi
CisKICNlbGlmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQogCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4K
QEAgLTI0LDcgKzI2LDYgQEAKIAogI2VuZGlmICAvLyBkZWZpbmVkKFdFQlJUQ19QT1NJWCkKIAot
I2luY2x1ZGUgInJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3N5bmNocm9uaXphdGlvbi9yd19sb2NrX3dyYXBwZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS90
aW1ldXRpbHMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9ldmVudC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvZXZl
bnQuY2MKaW5kZXggZDFkMmNkYWZmMDc3Y2MzY2JiM2Q0YjI3Nzg0YjVhMmQxMzhjNWQ1ZS4uMGM0
Y2UxMDE1N2MyMTYxMTE2OWRiYmViNzNjZDA5MzE4ZDU5MDI2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJj
ZS9ldmVudC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL2V2ZW50LmNjCkBAIC0xNCw5ICsxNCw2IEBACiAjaW5j
bHVkZSA8d2luZG93cy5oPgogI2VsaWYgZGVmaW5lZChXRUJSVENfTUFDKSAmJiAhZGVmaW5lZChX
RUJSVENfSU9TKQogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2
aWNlcy5oPgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSNlbHNlCi0jaW5jbHVkZSA8cHRocmVhZC5o
PgogI2VuZGlmCiAKICNpbmNsdWRlICJydGNfYmFzZS9ldmVudC5oIgpAQCAtMjUsNyArMjIsNiBA
QCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogY2xhc3MgRXZlbnRXcmFwcGVySW1wbCA6IHB1YmxpYyBF
dmVudFdyYXBwZXIgewogIHB1YmxpYzoKLSAgRXZlbnRXcmFwcGVySW1wbCgpIDogZXZlbnRfKGZh
bHNlLCBmYWxzZSkge30KICAgfkV2ZW50V3JhcHBlckltcGwoKSBvdmVycmlkZSB7fQogCiAgIGJv
b2wgU2V0KCkgb3ZlcnJpZGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9maWVsZF90cmlhbC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVy
cy9zb3VyY2UvZmllbGRfdHJpYWwuY2MKaW5kZXggNjAxNThmNDg4NjViYzUxYWFmZDdhMzcxMzIz
NTI0YWI1YzJmZWFiMy4uYWM3MTMxMTQ0YWVmMmI5NzEzNTAwZmMzNjNmYTQ5YmMzNjE3NTllMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lz
dGVtX3dyYXBwZXJzL3NvdXJjZS9maWVsZF90cmlhbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL2ZpZWxkX3Ry
aWFsLmNjCkBAIC05LDYgKzksNyBAQAogCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1
ZGUvZmllbGRfdHJpYWwuaCIKIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0cmlu
Zz4KIAogLy8gU2ltcGxlIGZpZWxkIHRyaWFsIGltcGxlbWVudGF0aW9uLCB3aGljaCBhbGxvd3Mg
Y2xpZW50IHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL3J0cF90b19udHBfZXN0aW1hdG9yLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJz
L3NvdXJjZS9ydHBfdG9fbnRwX2VzdGltYXRvci5jYwppbmRleCA3MzBjNGY2NjkxZmNjYzE0ZGNm
MjQwMDQxY2IyNDBmZDFmMjM1MDAyLi40YmJmNjA5NmQ5MGM1Y2MxNjRjN2ViNGM3NmY4M2IzYjkw
ZmU0NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL3J0cF90b19udHBfZXN0aW1hdG9yLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVy
cy9zb3VyY2UvcnRwX3RvX250cF9lc3RpbWF0b3IuY2MKQEAgLTEwLDMwICsxMCwyMyBAQAogCiAj
aW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvcnRwX3RvX250cF9lc3RpbWF0b3IuaCIK
IAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPHZlY3Rv
cj4KKworI2luY2x1ZGUgImFwaS9hcnJheV92aWV3LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hl
Y2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUgInN5c3RlbV93
cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNl
IHsKLS8vIE51bWJlciBvZiBSVENQIFNSIHJlcG9ydHMgdG8gdXNlIHRvIG1hcCBiZXR3ZWVuIFJU
UCBhbmQgTlRQLgotY29uc3Qgc2l6ZV90IGtOdW1SdGNwUmVwb3J0c1RvVXNlID0gMjsKLS8vIE51
bWJlciBvZiBwYXJhbWV0ZXJzIHNhbXBsZXMgdXNlZCB0byBzbW9vdGguCi1jb25zdCBzaXplX3Qg
a051bVNhbXBsZXNUb1Ntb290aCA9IDIwOwotCi0vLyBDYWxjdWxhdGVzIHRoZSBSVFAgdGltZXN0
YW1wIGZyZXF1ZW5jeSBmcm9tIHR3byBwYWlycyBvZiBOVFAvUlRQIHRpbWVzdGFtcHMuCi1ib29s
IENhbGN1bGF0ZUZyZXF1ZW5jeShpbnQ2NF90IG50cF9tczEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBydHBfdGltZXN0YW1wMSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDY0X3QgbnRwX21zMiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJ0cF90aW1l
c3RhbXAyLAotICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlKiBmcmVxdWVuY3lfa2h6KSB7
Ci0gIGlmIChudHBfbXMxIDw9IG50cF9tczIpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gICpmcmVx
dWVuY3lfa2h6ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihydHBfdGltZXN0YW1wMSAtIHJ0cF90aW1l
c3RhbXAyKSAvCi0gICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihudHBfbXMx
IC0gbnRwX21zMik7Ci0gIHJldHVybiB0cnVlOwotfQorLy8gTWF4aW11bSBudW1iZXIgb2YgUlRD
UCBTUiByZXBvcnRzIHRvIHVzZSB0byBtYXAgYmV0d2VlbiBSVFAgYW5kIE5UUC4KK2NvbnN0IHNp
emVfdCBrTnVtUnRjcFJlcG9ydHNUb1VzZSA9IDIwOworLy8gRG9uJ3QgYWxsb3cgTlRQIHRpbWVz
dGFtcHMgdG8ganVtcCBtb3JlIHRoYW4gMSBob3VyLiBDaG9zZW4gYXJiaXRyYXJ5IGFzIGJpZwor
Ly8gZW5vdWdoIHRvIG5vdCBhZmZlY3Qgbm9ybWFsIHVzZS1jYXNlcy4gWWV0IGl0IGlzIHNtYWxs
ZXIgdGhhbiBSVFAgd3JhcC1hcm91bmQKKy8vIGhhbGYtcGVyaW9kICg5MGtoeiBSVFAgY2xvY2sg
d3JhcC1hcm91bmRzIGV2ZXJ5IDEzLjI1IGhvdXJzKS4gQWZ0ZXIgaGFsZiBvZgorLy8gd3JhcC1h
cm91bmQgcGVyaW9kIGl0IGlzIGltcG9zc2libGUgdG8gdW53cmFwIFJUUCB0aW1lc3RhbXBzIGNv
cnJlY3RseS4KK2NvbnN0IGludCBrTWF4QWxsb3dlZFJ0Y3BOdHBJbnRlcnZhbE1zID0gNjAgKiA2
MCAqIDEwMDA7CiAKIGJvb2wgQ29udGFpbnMoY29uc3Qgc3RkOjpsaXN0PFJ0cFRvTnRwRXN0aW1h
dG9yOjpSdGNwTWVhc3VyZW1lbnQ+JiBtZWFzdXJlbWVudHMsCiAgICAgICAgICAgICAgIGNvbnN0
IFJ0cFRvTnRwRXN0aW1hdG9yOjpSdGNwTWVhc3VyZW1lbnQmIG90aGVyKSB7CkBAIC00MywyOSAr
MzYsNDcgQEAgYm9vbCBDb250YWlucyhjb25zdCBzdGQ6Omxpc3Q8UnRwVG9OdHBFc3RpbWF0b3I6
OlJ0Y3BNZWFzdXJlbWVudD4mIG1lYXN1cmVtZW50cywKICAgfQogICByZXR1cm4gZmFsc2U7CiB9
Ci19ICAvLyBuYW1lc3BhY2UKIAotYm9vbCBSdHBUb050cEVzdGltYXRvcjo6UGFyYW1ldGVyczo6
b3BlcmF0b3I8KGNvbnN0IFBhcmFtZXRlcnMmIG90aGVyKSBjb25zdCB7Ci0gIGlmIChmcmVxdWVu
Y3lfa2h6IDwgb3RoZXIuZnJlcXVlbmN5X2toeiAtIDFlLTYpIHsKLSAgICByZXR1cm4gdHJ1ZTsK
LSAgfSBlbHNlIGlmIChmcmVxdWVuY3lfa2h6ID4gb3RoZXIuZnJlcXVlbmN5X2toeiArIDFlLTYp
IHsKKy8vIEdpdmVuIHhbXSBhbmQgeVtdIHdyaXRlcyBvdXQgc3VjaCBrIGFuZCBiIHRoYXQgbGlu
ZSB5PWsqeCtiIGFwcHJveGltYXRlcworLy8gZ2l2ZW4gcG9pbnRzIGluIHRoZSBiZXN0IHdheSAo
TGVhc3QgU3F1YXJlcyBNZXRob2QpLgorYm9vbCBMaW5lYXJSZWdyZXNzaW9uKHJ0Yzo6QXJyYXlW
aWV3PGNvbnN0IGRvdWJsZT4geCwKKyAgICAgICAgICAgICAgICAgICAgICBydGM6OkFycmF5Vmll
dzxjb25zdCBkb3VibGU+IHksCisgICAgICAgICAgICAgICAgICAgICAgZG91YmxlKiBrLAorICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSogYikgeworICBzaXplX3QgbiA9IHguc2l6ZSgpOwor
ICBpZiAobiA8IDIpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGlmICh5LnNpemUoKSAhPSBuKQog
ICAgIHJldHVybiBmYWxzZTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gb2Zmc2V0X21zIDwgb3Ro
ZXIub2Zmc2V0X21zIC0gMWUtNjsKKworICBkb3VibGUgYXZnX3ggPSAwOworICBkb3VibGUgYXZn
X3kgPSAwOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgeworICAgIGF2Z194ICs9
IHhbaV07CisgICAgYXZnX3kgKz0geVtpXTsKKyAgfQorICBhdmdfeCAvPSBuOworICBhdmdfeSAv
PSBuOworCisgIGRvdWJsZSB2YXJpYW5jZV94ID0gMDsKKyAgZG91YmxlIGNvdmFyaWFuY2VfeHkg
PSAwOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgeworICAgIGRvdWJsZSBub3Jt
YWxpemVkX3ggPSB4W2ldIC0gYXZnX3g7CisgICAgZG91YmxlIG5vcm1hbGl6ZWRfeSA9IHlbaV0g
LSBhdmdfeTsKKyAgICB2YXJpYW5jZV94ICs9IG5vcm1hbGl6ZWRfeCAqIG5vcm1hbGl6ZWRfeDsK
KyAgICBjb3ZhcmlhbmNlX3h5ICs9IG5vcm1hbGl6ZWRfeCAqIG5vcm1hbGl6ZWRfeTsKICAgfQot
fQogCi1ib29sIFJ0cFRvTnRwRXN0aW1hdG9yOjpQYXJhbWV0ZXJzOjpvcGVyYXRvcj09KGNvbnN0
IFBhcmFtZXRlcnMmIG90aGVyKSBjb25zdCB7Ci0gIHJldHVybiAhKG90aGVyIDwgKnRoaXMgfHwg
KnRoaXMgPCBvdGhlcik7Ci19CisgIGlmIChzdGQ6OmZhYnModmFyaWFuY2VfeCkgPCAxZS04KQor
ICAgIHJldHVybiBmYWxzZTsKIAotYm9vbCBSdHBUb050cEVzdGltYXRvcjo6UGFyYW1ldGVyczo6
b3BlcmF0b3IhPShjb25zdCBQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QgewotICByZXR1cm4gb3Ro
ZXIgPCAqdGhpcyB8fCAqdGhpcyA8IG90aGVyOworICAqayA9IHN0YXRpY19jYXN0PGRvdWJsZT4o
Y292YXJpYW5jZV94eSAvIHZhcmlhbmNlX3gpOworICAqYiA9IHN0YXRpY19jYXN0PGRvdWJsZT4o
YXZnX3kgLSAoKmspICogYXZnX3gpOworICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSdHBUb050
cEVzdGltYXRvcjo6UGFyYW1ldGVyczo6b3BlcmF0b3I8PShjb25zdCBQYXJhbWV0ZXJzJiBvdGhl
cikgY29uc3QgewotICByZXR1cm4gIShvdGhlciA8ICp0aGlzKTsKLX0KK30gIC8vIG5hbWVzcGFj
ZQogCiBSdHBUb050cEVzdGltYXRvcjo6UnRjcE1lYXN1cmVtZW50OjpSdGNwTWVhc3VyZW1lbnQo
dWludDMyX3QgbnRwX3NlY3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgbnRwX2ZyYWMsCkBAIC04MiwzMSArOTMsMjkgQEAgYm9v
bCBSdHBUb050cEVzdGltYXRvcjo6UnRjcE1lYXN1cmVtZW50OjpJc0VxdWFsKAogfQogCiAvLyBD
bGFzcyBmb3IgY29udmVydGluZyBhbiBSVFAgdGltZXN0YW1wIHRvIHRoZSBOVFAgZG9tYWluLgot
UnRwVG9OdHBFc3RpbWF0b3I6OlJ0cFRvTnRwRXN0aW1hdG9yKCkKLSAgICA6IGNvbnNlY3V0aXZl
X2ludmFsaWRfc2FtcGxlc18oMCksCi0gICAgICBzbW9vdGhpbmdfZmlsdGVyXyhrTnVtU2FtcGxl
c1RvU21vb3RoKSwKLSAgICAgIHBhcmFtc19jYWxjdWxhdGVkXyhmYWxzZSkge30KK1J0cFRvTnRw
RXN0aW1hdG9yOjpSdHBUb050cEVzdGltYXRvcigpIDogY29uc2VjdXRpdmVfaW52YWxpZF9zYW1w
bGVzXygwKSB7fQogCiBSdHBUb050cEVzdGltYXRvcjo6flJ0cFRvTnRwRXN0aW1hdG9yKCkge30K
IAogdm9pZCBSdHBUb050cEVzdGltYXRvcjo6VXBkYXRlUGFyYW1ldGVycygpIHsKLSAgaWYgKG1l
YXN1cmVtZW50c18uc2l6ZSgpICE9IGtOdW1SdGNwUmVwb3J0c1RvVXNlKQorICBpZiAobWVhc3Vy
ZW1lbnRzXy5zaXplKCkgPCAyKQogICAgIHJldHVybjsKIAotICBQYXJhbWV0ZXJzIHBhcmFtczsK
LSAgaW50NjRfdCB0aW1lc3RhbXBfbmV3ID0gbWVhc3VyZW1lbnRzXy5mcm9udCgpLnVud3JhcHBl
ZF9ydHBfdGltZXN0YW1wOwotICBpbnQ2NF90IHRpbWVzdGFtcF9vbGQgPSBtZWFzdXJlbWVudHNf
LmJhY2soKS51bndyYXBwZWRfcnRwX3RpbWVzdGFtcDsKLQotICBpbnQ2NF90IG50cF9tc19uZXcg
PSBtZWFzdXJlbWVudHNfLmZyb250KCkubnRwX3RpbWUuVG9NcygpOwotICBpbnQ2NF90IG50cF9t
c19vbGQgPSBtZWFzdXJlbWVudHNfLmJhY2soKS5udHBfdGltZS5Ub01zKCk7CisgIHN0ZDo6dmVj
dG9yPGRvdWJsZT4geDsKKyAgc3RkOjp2ZWN0b3I8ZG91YmxlPiB5OworICB4LnJlc2VydmUobWVh
c3VyZW1lbnRzXy5zaXplKCkpOworICB5LnJlc2VydmUobWVhc3VyZW1lbnRzXy5zaXplKCkpOwor
ICBmb3IgKGF1dG8gaXQgPSBtZWFzdXJlbWVudHNfLmJlZ2luKCk7IGl0ICE9IG1lYXN1cmVtZW50
c18uZW5kKCk7ICsraXQpIHsKKyAgICB4LnB1c2hfYmFjayhpdC0+dW53cmFwcGVkX3J0cF90aW1l
c3RhbXApOworICAgIHkucHVzaF9iYWNrKGl0LT5udHBfdGltZS5Ub01zKCkpOworICB9CisgIGRv
dWJsZSBzbG9wZSwgb2Zmc2V0OwogCi0gIGlmICghQ2FsY3VsYXRlRnJlcXVlbmN5KG50cF9tc19u
ZXcsIHRpbWVzdGFtcF9uZXcsIG50cF9tc19vbGQsIHRpbWVzdGFtcF9vbGQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICZwYXJhbXMuZnJlcXVlbmN5X2toeikpIHsKKyAgaWYgKCFMaW5lYXJS
ZWdyZXNzaW9uKHgsIHksICZzbG9wZSwgJm9mZnNldCkpIHsKICAgICByZXR1cm47CiAgIH0KLSAg
cGFyYW1zLm9mZnNldF9tcyA9IHRpbWVzdGFtcF9uZXcgLSBwYXJhbXMuZnJlcXVlbmN5X2toeiAq
IG50cF9tc19uZXc7Ci0gIHBhcmFtc19jYWxjdWxhdGVkXyA9IHRydWU7Ci0gIHNtb290aGluZ19m
aWx0ZXJfLkluc2VydChwYXJhbXMpOworCisgIHBhcmFtc18uZW1wbGFjZSgxIC8gc2xvcGUsIG9m
ZnNldCk7CiB9CiAKIGJvb2wgUnRwVG9OdHBFc3RpbWF0b3I6OlVwZGF0ZU1lYXN1cmVtZW50cyh1
aW50MzJfdCBudHBfc2VjcywKQEAgLTEzMiw3ICsxNDEsOCBAQCBib29sIFJ0cFRvTnRwRXN0aW1h
dG9yOjpVcGRhdGVNZWFzdXJlbWVudHModWludDMyX3QgbnRwX3NlY3MsCiAgIGlmICghbWVhc3Vy
ZW1lbnRzXy5lbXB0eSgpKSB7CiAgICAgaW50NjRfdCBvbGRfcnRwX3RpbWVzdGFtcCA9IG1lYXN1
cmVtZW50c18uZnJvbnQoKS51bndyYXBwZWRfcnRwX3RpbWVzdGFtcDsKICAgICBpbnQ2NF90IG9s
ZF9udHBfbXMgPSBtZWFzdXJlbWVudHNfLmZyb250KCkubnRwX3RpbWUuVG9NcygpOwotICAgIGlm
IChudHBfbXNfbmV3IDw9IG9sZF9udHBfbXMpIHsKKyAgICBpZiAobnRwX21zX25ldyA8PSBvbGRf
bnRwX21zIHx8CisgICAgICAgIG50cF9tc19uZXcgPiBvbGRfbnRwX21zICsga01heEFsbG93ZWRS
dGNwTnRwSW50ZXJ2YWxNcykgewogICAgICAgaW52YWxpZF9zYW1wbGUgPSB0cnVlOwogICAgIH0g
ZWxzZSBpZiAodW53cmFwcGVkX3J0cF90aW1lc3RhbXAgPD0gb2xkX3J0cF90aW1lc3RhbXApIHsK
ICAgICAgIFJUQ19MT0coTFNfV0FSTklORykKQEAgLTE1Miw4ICsxNjIsNyBAQCBib29sIFJ0cFRv
TnRwRXN0aW1hdG9yOjpVcGRhdGVNZWFzdXJlbWVudHModWludDMyX3QgbnRwX3NlY3MsCiAgICAg
UlRDX0xPRyhMU19XQVJOSU5HKSA8PCAiTXVsdGlwbGUgY29uc2VjdXRpdmVseSBpbnZhbGlkIFJU
Q1AgU1IgcmVwb3J0cywgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsZWFyaW5nIG1l
YXN1cmVtZW50cy4iOwogICAgIG1lYXN1cmVtZW50c18uY2xlYXIoKTsKLSAgICBzbW9vdGhpbmdf
ZmlsdGVyXy5SZXNldCgpOwotICAgIHBhcmFtc19jYWxjdWxhdGVkXyA9IGZhbHNlOworICAgIHBh
cmFtc18gPSBhYnNsOjpudWxsb3B0OwogICB9CiAgIGNvbnNlY3V0aXZlX2ludmFsaWRfc2FtcGxl
c18gPSAwOwogCkBAIC0xNzAsMzUgKzE3OSwyOSBAQCBib29sIFJ0cFRvTnRwRXN0aW1hdG9yOjpV
cGRhdGVNZWFzdXJlbWVudHModWludDMyX3QgbnRwX3NlY3MsCiB9CiAKIGJvb2wgUnRwVG9OdHBF
c3RpbWF0b3I6OkVzdGltYXRlKGludDY0X3QgcnRwX3RpbWVzdGFtcCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QqIHJ0cF90aW1lc3RhbXBfbXMpIGNvbnN0IHsKLSAg
aWYgKCFwYXJhbXNfY2FsY3VsYXRlZF8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90KiBudHBfdGltZXN0YW1wX21zKSBjb25zdCB7CisgIGlmICghcGFyYW1zXykKICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgaW50NjRfdCBydHBfdGltZXN0YW1wX3Vud3JhcHBlZCA9IHVu
d3JhcHBlcl8uVW53cmFwKHJ0cF90aW1lc3RhbXApOwogCi0gIFBhcmFtZXRlcnMgcGFyYW1zID0g
c21vb3RoaW5nX2ZpbHRlcl8uR2V0RmlsdGVyZWRWYWx1ZSgpOwotCiAgIC8vIHBhcmFtc19jYWxj
dWxhdGVkXyBzaG91bGQgbm90IGJlIHRydWUgdW5sZXNzIG1zIHBhcmFtcy5mcmVxdWVuY3lfa2h6
IGhhcwogICAvLyBiZWVuIGNhbGN1bGF0ZWQgdG8gc29tZXRoaW5nIG5vbiB6ZXJvLgotICBSVENf
RENIRUNLX05FKHBhcmFtcy5mcmVxdWVuY3lfa2h6LCAwLjApOworICBSVENfRENIRUNLX05FKHBh
cmFtc18tPmZyZXF1ZW5jeV9raHosIDAuMCk7CiAgIGRvdWJsZSBydHBfbXMgPQotICAgICAgKHN0
YXRpY19jYXN0PGRvdWJsZT4ocnRwX3RpbWVzdGFtcF91bndyYXBwZWQpIC0gcGFyYW1zLm9mZnNl
dF9tcykgLwotICAgICAgICAgIHBhcmFtcy5mcmVxdWVuY3lfa2h6ICsKLSAgICAgIDAuNWY7Cisg
ICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHJ0cF90aW1lc3RhbXBfdW53cmFwcGVkKSAvIHBhcmFt
c18tPmZyZXF1ZW5jeV9raHogKworICAgICAgcGFyYW1zXy0+b2Zmc2V0X21zICsgMC41ZjsKIAog
ICBpZiAocnRwX21zIDwgMCkKICAgICByZXR1cm4gZmFsc2U7CiAKLSAgKnJ0cF90aW1lc3RhbXBf
bXMgPSBydHBfbXM7CisgICpudHBfdGltZXN0YW1wX21zID0gcnRwX21zOworCiAgIHJldHVybiB0
cnVlOwogfQogCiBjb25zdCBhYnNsOjpvcHRpb25hbDxSdHBUb050cEVzdGltYXRvcjo6UGFyYW1l
dGVycz4gUnRwVG9OdHBFc3RpbWF0b3I6OnBhcmFtcygpCiAgICAgY29uc3QgewotICBhYnNsOjpv
cHRpb25hbDxQYXJhbWV0ZXJzPiByZXM7Ci0gIGlmIChwYXJhbXNfY2FsY3VsYXRlZF8pIHsKLSAg
ICByZXMuZW1wbGFjZShzbW9vdGhpbmdfZmlsdGVyXy5HZXRGaWx0ZXJlZFZhbHVlKCkpOwotICB9
Ci0gIHJldHVybiByZXM7CisgIHJldHVybiBwYXJhbXNfOwogfQogfSAgLy8gbmFtZXNwYWNlIHdl
YnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9ydHBfdG9fbnRwX2VzdGltYXRvcl91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFw
cGVycy9zb3VyY2UvcnRwX3RvX250cF9lc3RpbWF0b3JfdW5pdHRlc3QuY2MKaW5kZXggMDY0N2Vj
OGNhZDYzOThjMjZjNWJiYmRiZWY1ZGFjNDU1N2JiM2Q0MC4uYjBiODNiYmJiMWM3NjY2YjRlNjE1
NTM4MjU0ODBjYzI2OWNmMzM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9ydHBfdG9fbnRwX2VzdGlt
YXRvcl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL3J0cF90b19udHBfZXN0aW1hdG9yX3VuaXR0
ZXN0LmNjCkBAIC05LDExICs5LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVy
cy9pbmNsdWRlL3J0cF90b19udHBfZXN0aW1hdG9yLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvcmFu
ZG9tLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5h
bWVzcGFjZSB7CiBjb25zdCB1aW50MzJfdCBrT25lTXNJbk50cEZyYWMgPSA0Mjk0OTY3OworY29u
c3QgdWludDMyX3Qga09uZUhvdXJJbk50cFNlYyA9IDYwICogNjA7CiBjb25zdCB1aW50MzJfdCBr
VGltZXN0YW1wVGlja3NQZXJNcyA9IDkwOwogfSAgLy8gbmFtZXNwYWNlCiAKQEAgLTIyNCw2ICsy
MjYsMjIgQEAgVEVTVChVcGRhdGVSdGNwTWVhc3VyZW1lbnRUZXN0cywgRmFpbHNGb3JPbGROdHAp
IHsKICAgICAgIGVzdGltYXRvci5VcGRhdGVNZWFzdXJlbWVudHMobnRwX3NlYywgbnRwX2ZyYWMs
IHRpbWVzdGFtcCwgJm5ld19zcikpOwogfQogCitURVNUKFVwZGF0ZVJ0Y3BNZWFzdXJlbWVudFRl
c3RzLCBGYWlsc0ZvclRvb05ld050cCkgeworICBSdHBUb050cEVzdGltYXRvciBlc3RpbWF0b3I7
CisgIHVpbnQzMl90IG50cF9zZWMgPSAxOworICB1aW50MzJfdCBudHBfZnJhYyA9IDY5OTkyNTA1
MDsKKyAgdWludDMyX3QgdGltZXN0YW1wID0gMHgxMjM0NTY3ODsKKyAgYm9vbCBuZXdfc3I7Cisg
IEVYUEVDVF9UUlVFKAorICAgICAgZXN0aW1hdG9yLlVwZGF0ZU1lYXN1cmVtZW50cyhudHBfc2Vj
LCBudHBfZnJhYywgdGltZXN0YW1wLCAmbmV3X3NyKSk7CisgIEVYUEVDVF9UUlVFKG5ld19zcik7
CisgIC8vIE50cCB0aW1lIGZyb20gZmFyIGZ1dHVyZSwgbGlzdCBub3QgdXBkYXRlZC4KKyAgbnRw
X3NlYyArPSBrT25lSG91ckluTnRwU2VjICogMjsKKyAgdGltZXN0YW1wICs9IGtUaW1lc3RhbXBU
aWNrc1Blck1zICogMTA7CisgIEVYUEVDVF9GQUxTRSgKKyAgICAgIGVzdGltYXRvci5VcGRhdGVN
ZWFzdXJlbWVudHMobnRwX3NlYywgbnRwX2ZyYWMsIHRpbWVzdGFtcCwgJm5ld19zcikpOworfQor
CiBURVNUKFVwZGF0ZVJ0Y3BNZWFzdXJlbWVudFRlc3RzLCBGYWlsc0ZvckVxdWFsVGltZXN0YW1w
KSB7CiAgIFJ0cFRvTnRwRXN0aW1hdG9yIGVzdGltYXRvcjsKICAgdWludDMyX3QgbnRwX3NlYyA9
IDA7CkBAIC0yOTIsNCArMzEwLDM3IEBAIFRFU1QoUnRwVG9OdHBUZXN0cywgRmFpbHNGb3JOb1Bh
cmFtZXRlcnMpIHsKICAgRVhQRUNUX0ZBTFNFKGVzdGltYXRvci5Fc3RpbWF0ZSh0aW1lc3RhbXAs
ICZ0aW1lc3RhbXBfbXMpKTsKIH0KIAorVEVTVChSdHBUb050cFRlc3RzLCBBdmVyYWdlc0Vycm9y
T3V0KSB7CisgIFJ0cFRvTnRwRXN0aW1hdG9yIGVzdGltYXRvcjsKKyAgdWludDMyX3QgbnRwX3Nl
YyA9IDE7CisgIHVpbnQzMl90IG50cF9mcmFjID0gOTAwMDAwMDA7ICAvLyBNb3JlIHRoYW4gMSBt
cy4KKyAgdWludDMyX3QgdGltZXN0YW1wID0gMHgxMjM0NTY3ODsKKyAgY29uc3QgaW50IGtOdHBT
ZWNTdGVwID0gMTsgIC8vIDEgc2Vjb25kLgorICBjb25zdCBpbnQga1J0cFRpY2tzUGVyTXMgPSA5
MDsKKyAgY29uc3QgaW50IGtSdHBTdGVwID0ga1J0cFRpY2tzUGVyTXMgKiAxMDAwOworICBib29s
IG5ld19zcjsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBlc3RpbWF0b3IuVXBkYXRlTWVhc3VyZW1l
bnRzKG50cF9zZWMsIG50cF9mcmFjLCB0aW1lc3RhbXAsICZuZXdfc3IpKTsKKyAgRVhQRUNUX1RS
VUUobmV3X3NyKTsKKworICBSYW5kb20gcmFuZCgxMTIzNTM2TCk7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgLy8gQWR2YW5jZSBib3RoIHRpbWVzdGFtcHMgYnkg
ZXhhY3RseSAxIHNlY29uZC4KKyAgICBudHBfc2VjICs9IGtOdHBTZWNTdGVwOworICAgIHRpbWVz
dGFtcCArPSBrUnRwU3RlcDsKKyAgICAvLyBBZGQgdXB0byAxbXMgb2YgZXJyb3JzIHRvIE5UUCBh
bmQgUlRQIHRpbWVzdGFtcHMgcGFzc2VkIHRvIGVzdGltYXRvci4KKyAgICBFWFBFQ1RfVFJVRShl
c3RpbWF0b3IuVXBkYXRlTWVhc3VyZW1lbnRzKAorICAgICAgICBudHBfc2VjLAorICAgICAgICBu
dHBfZnJhYyArIHJhbmQuUmFuZCgtc3RhdGljX2Nhc3Q8aW50PihrT25lTXNJbk50cEZyYWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGtPbmVNc0luTnRw
RnJhYykpLAorICAgICAgICB0aW1lc3RhbXAgKyByYW5kLlJhbmQoLWtSdHBUaWNrc1Blck1zLCBr
UnRwVGlja3NQZXJNcyksICZuZXdfc3IpKTsKKyAgICBFWFBFQ1RfVFJVRShuZXdfc3IpOworCisg
ICAgaW50NjRfdCBlc3RpbWF0ZWRfbnRwX21zOworICAgIEVYUEVDVF9UUlVFKGVzdGltYXRvci5F
c3RpbWF0ZSh0aW1lc3RhbXAsICZlc3RpbWF0ZWRfbnRwX21zKSk7CisgICAgLy8gQWxsb3cgdXB0
byAyIG1zIG9mIGVycm9yLgorICAgIEVYUEVDVF9ORUFSKE50cFRpbWUobnRwX3NlYywgbnRwX2Zy
YWMpLlRvTXMoKSwgZXN0aW1hdGVkX250cF9tcywgMik7CisgIH0KK30KKwogfTsgIC8vIG5hbWVz
cGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L0JVSUxELmduCmluZGV4IDI4MTQ2ZTA1OTljZGU5YjU1MjAwYjNkNmZh
OWU3NzFiMTA5ZDVmMGQuLjdjZDdiM2VhYTFmYjkzNzI0YTI2ZDc0Y2RkNjkyNjVhMTVjZjA1Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9CVUlMRC5nbgpAQCAtMTM3LDYgKzEzNyw4IEBAIGlmIChpc19pb3MpIHsKICAgICB0
ZXN0b25seSA9IHRydWUKICAgICB2aXNpYmlsaXR5ID0gWyAiOnRlc3Rfc3VwcG9ydCIgXQogICAg
IHNvdXJjZXMgPSBbCisgICAgICAiaW9zL2NvdmVyYWdlX3V0aWxfaW9zLmgiLAorICAgICAgImlv
cy9jb3ZlcmFnZV91dGlsX2lvcy5tbSIsCiAgICAgICAiaW9zL3Rlc3Rfc3VwcG9ydC5oIiwKICAg
ICAgICJpb3MvdGVzdF9zdXBwb3J0Lm1tIiwKICAgICBdCkBAIC0xNDQsNiArMTQ2LDE1IEBAIGlm
IChpc19pb3MpIHsKICAgICAgICI6cGVyZl90ZXN0IiwKICAgICAgICIuLi9zZGs6aGVscGVyc19v
YmpjIiwKICAgICBdCisgICAgY29uZmlncyArPSBbICI6dGVzdF9zdXBwb3J0X29iamNfY29uZmln
IiBdCisgIH0KKworICBjb25maWcoInRlc3Rfc3VwcG9ydF9vYmpjX2NvbmZpZyIpIHsKKyAgICBk
ZWZpbmVzID0gW10KKworICAgIGlmICh1c2VfY2xhbmdfY292ZXJhZ2UpIHsKKyAgICAgIGRlZmlu
ZXMgKz0gWyAiV0VCUlRDX0lPU19FTkFCTEVfQ09WRVJBR0UiIF0KKyAgICB9CiAgIH0KIH0KIApA
QCAtMTk2LDI0ICsyMDcsNDEgQEAgcnRjX3NvdXJjZV9zZXQoInRlc3Rfc3VwcG9ydCIpIHsKIH0K
IAogaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7Ci0gIHJ0Y19zb3VyY2Vfc2V0KCJ0ZXN0X21haW4i
KSB7CisgIHJ0Y19zb3VyY2Vfc2V0KCJ0ZXN0X21haW5fbGliIikgewogICAgIHZpc2liaWxpdHkg
PSBbICIqIiBdCiAgICAgdGVzdG9ubHkgPSB0cnVlCiAgICAgc291cmNlcyA9IFsKLSAgICAgICJ0
ZXN0X21haW4uY2MiLAorICAgICAgInRlc3RfbWFpbl9saWIuY2MiLAorICAgICAgInRlc3RfbWFp
bl9saWIuaCIsCiAgICAgXQogCi0gICAgcHVibGljX2RlcHMgPSBbCi0gICAgICAiOnRlc3Rfc3Vw
cG9ydCIsCi0gICAgXQogICAgIGRlcHMgPSBbCiAgICAgICAiOmZpZWxkX3RyaWFsIiwKLSAgICAg
ICI6ZmlsZXV0aWxzIiwKICAgICAgICI6cGVyZl90ZXN0IiwKKyAgICAgICI6dGVzdF9zdXBwb3J0
IiwKICAgICAgICIuLi9ydGNfYmFzZTpydGNfYmFzZSIsCiAgICAgICAiLi4vc3lzdGVtX3dyYXBw
ZXJzOmZpZWxkX3RyaWFsIiwKICAgICAgICIuLi9zeXN0ZW1fd3JhcHBlcnM6bWV0cmljcyIsCiAg
ICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv
YWJzbC9tZW1vcnk6bWVtb3J5IiwKKworICAgICAgIyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy85Nzky
KTogVGhpcyBpcyBuZWVkZWQgZm9yIGRvd25zdHJlYW0gcHJvamVjdHMgb24KKyAgICAgICMgQW5k
cm9pZCwgd2hlcmUgaXQncyByZXBsYWNlZCBieSBhbiBpbnRlcm5hbCB2ZXJzaW9uIG9mIGZpbGV1
dGlscyB0aGF0CisgICAgICAjIGhhcyBhIGNlcnRhaW4gZmxhZy4gUmVtb3ZlIHRoaXMgb25jZSB0
aGUgaW50ZXJuYWwgZmlsZXV0aWxzIGhhcyBiZWVuCisgICAgICAjIGVsaW1pbmF0ZWQuCisgICAg
ICAiLi4vdGVzdDpmaWxldXRpbHMiLAorICAgIF0KKyAgfQorCisgIHJ0Y19zb3VyY2Vfc2V0KCJ0
ZXN0X21haW4iKSB7CisgICAgdmlzaWJpbGl0eSA9IFsgIioiIF0KKyAgICB0ZXN0b25seSA9IHRy
dWUKKyAgICBzb3VyY2VzID0gWworICAgICAgInRlc3RfbWFpbi5jYyIsCisgICAgXQorCisgICAg
ZGVwcyA9IFsKKyAgICAgICI6dGVzdF9tYWluX2xpYiIsCiAgICAgXQogICB9CiAKQEAgLTMwOSw2
ICszMzcsOCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICI6dmlkZW9fdGVzdF9z
dXBwb3J0IiwKICAgICAgICIuLi9hcGk6Y3JlYXRlX3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmVfYXBp
IiwKICAgICAgICIuLi9hcGk6c2ltdWxjYXN0X3Rlc3RfZml4dHVyZV9hcGkiLAorICAgICAgIi4u
L2FwaS90ZXN0L3ZpZGVvOmZ1bmN0aW9uX3ZpZGVvX2ZhY3RvcnkiLAorICAgICAgIi4uL2FwaS92
aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAgICAgIi4u
L2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKICAgICAgICIuLi9tb2R1bGVzL3J0cF9ydGNw
OnJ0cF9ydGNwIiwKICAgICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NhcHR1cmUiLApAQCAtMzYwLDcg
KzM5MCwxMCBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKIAogaWYgKGlzX2lvcykgewogICBy
dGNfc291cmNlX3NldCgiZmlsZXV0aWxzX2lvc19vYmpjIikgewotICAgIHZpc2liaWxpdHkgPSBb
ICI6ZmlsZXV0aWxzIiBdCisgICAgdmlzaWJpbGl0eSA9IFsKKyAgICAgICI6ZmlsZXV0aWxzIiwK
KyAgICAgICI6ZmlsZXV0aWxzX292ZXJyaWRlX2ltcGwiLAorICAgIF0KICAgICBzb3VyY2VzID0g
WwogICAgICAgInRlc3RzdXBwb3J0L2lvc2ZpbGV1dGlscy5oIiwKICAgICAgICJ0ZXN0c3VwcG9y
dC9pb3NmaWxldXRpbHMubW0iLApAQCAtMzc2LDcgKzQwOSwxMCBAQCBpZiAoaXNfaW9zKSB7CiAK
IGlmIChpc19tYWMpIHsKICAgcnRjX3NvdXJjZV9zZXQoImZpbGV1dGlsc19tYWNfb2JqYyIpIHsK
LSAgICB2aXNpYmlsaXR5ID0gWyAiOmZpbGV1dGlscyIgXQorICAgIHZpc2liaWxpdHkgPSBbCisg
ICAgICAiOmZpbGV1dGlscyIsCisgICAgICAiOmZpbGV1dGlsc19vdmVycmlkZV9pbXBsIiwKKyAg
ICBdCiAgICAgc291cmNlcyA9IFsKICAgICAgICJ0ZXN0c3VwcG9ydC9tYWNmaWxldXRpbHMuaCIs
CiAgICAgICAidGVzdHN1cHBvcnQvbWFjZmlsZXV0aWxzLm1tIiwKQEAgLTM5NSw2ICs0MzEsNDIg
QEAgcnRjX3NvdXJjZV9zZXQoImZpbGV1dGlscyIpIHsKICAgICAidGVzdHN1cHBvcnQvZmlsZXV0
aWxzLmgiLAogICBdCiAgIGRlcHMgPSBbCisgICAgIjpmaWxldXRpbHNfb3ZlcnJpZGVfYXBpIiwK
KyAgICAiOmZpbGV1dGlsc19vdmVycmlkZV9pbXBsIiwKKyAgICAiLi46d2VicnRjX2NvbW1vbiIs
CisgICAgIi4uL3J0Y19iYXNlOmNoZWNrcyIsCisgICAgIi4uL3J0Y19iYXNlOnJ0Y19iYXNlX2Fw
cHJvdmVkIiwKKyAgICAiLi4vcnRjX2Jhc2Uvc3lzdGVtOmFyY2giLAorICAgICIvL3RoaXJkX3Bh
cnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlczpvcHRpb25hbCIsCisgIF0KKyAgaWYgKGlzX2lvcykg
eworICAgIGRlcHMgKz0gWyAiOmZpbGV1dGlsc19pb3Nfb2JqYyIgXQorICB9CisgIGlmIChpc19t
YWMpIHsKKyAgICBkZXBzICs9IFsgIjpmaWxldXRpbHNfbWFjX29iamMiIF0KKyAgfQorICBpZiAo
aXNfd2luKSB7CisgICAgZGVwcyArPSBbICIuLi9ydGNfYmFzZTpydGNfYmFzZSIgXQorICB9Cit9
CisKKyMgV2Ugc2VwYXJhdGUgaGVhZGVyIGludG8gb3duIHRhcmdldCB0byBtYWtlIGl0IHBvc3Np
YmxlIGZvciBkb3duc3RyZWFtCisjIHByb2plY3RzIHRvIG92ZXJyaWRlIGltcGxlbWVudGF0aW9u
LgorcnRjX3NvdXJjZV9zZXQoImZpbGV1dGlsc19vdmVycmlkZV9hcGkiKSB7CisgIHRlc3Rvbmx5
ID0gdHJ1ZQorICBzb3VyY2VzID0gWworICAgICJ0ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJp
ZGUuaCIsCisgIF0KK30KKworcnRjX3NvdXJjZV9zZXQoImZpbGV1dGlsc19vdmVycmlkZV9pbXBs
IikgeworICB0ZXN0b25seSA9IHRydWUKKyAgdmlzaWJpbGl0eSA9IFsgIjpmaWxldXRpbHMiIF0K
KyAgc291cmNlcyA9IFsKKyAgICAidGVzdHN1cHBvcnQvZmlsZXV0aWxzX292ZXJyaWRlLmNjIiwK
KyAgXQorICBkZXBzID0gWworICAgICI6ZmlsZXV0aWxzX292ZXJyaWRlX2FwaSIsCiAgICAgIi4u
OndlYnJ0Y19jb21tb24iLAogICAgICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNf
YmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCkBAIC01MjMsNiArNTk1LDggQEAgcnRjX3NvdXJjZV9z
ZXQoImZha2VfdmlkZW9fY29kZWNzIikgewogICAgICJmYWtlX2RlY29kZXIuaCIsCiAgICAgImZh
a2VfZW5jb2Rlci5jYyIsCiAgICAgImZha2VfZW5jb2Rlci5oIiwKKyAgICAiZmFrZV92cDhfZGVj
b2Rlci5jYyIsCisgICAgImZha2VfdnA4X2RlY29kZXIuaCIsCiAgICAgImZha2VfdnA4X2VuY29k
ZXIuY2MiLAogICAgICJmYWtlX3ZwOF9lbmNvZGVyLmgiLAogICBdCkBAIC01MzIsNyArNjA2LDkg
QEAgcnRjX3NvdXJjZV9zZXQoImZha2VfdmlkZW9fY29kZWNzIikgewogICB9CiAgIGRlcHMgPSBb
CiAgICAgIi4uOndlYnJ0Y19jb21tb24iLAorICAgICIuLi9hcGkvdmlkZW86ZW5jb2RlZF9pbWFn
ZSIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZV9pNDIwIiwKKyAgICAiLi4vYXBpL3Zp
ZGVvX2NvZGVjczpjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycyIsCiAgICAgIi4uL2FwaS92aWRl
b19jb2RlY3M6dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgIi4uL2NvbW1vbl92aWRlbzpjb21tb25f
dmlkZW8iLAogICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp2aWRlb19jb2RlY19pbnRlcmZh
Y2UiLApAQCAtNTYwLDggKzYzNiw2IEBAIHJ0Y19zb3VyY2Vfc2V0KCJ0ZXN0X2NvbW1vbiIpIHsK
ICAgICAiZW5jb2Rlcl9zZXR0aW5ncy5jYyIsCiAgICAgImVuY29kZXJfc2V0dGluZ3MuaCIsCiAg
ICAgImZha2VfdmlkZW9yZW5kZXJlci5oIiwKLSAgICAiZnVuY3Rpb25fdmlkZW9fZGVjb2Rlcl9m
YWN0b3J5LmgiLAotICAgICJmdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIsCiAgICAg
ImxheWVyX2ZpbHRlcmluZ190cmFuc3BvcnQuY2MiLAogICAgICJsYXllcl9maWx0ZXJpbmdfdHJh
bnNwb3J0LmgiLAogICAgICJtb2NrX3RyYW5zcG9ydC5jYyIsCkBAIC01OTksNiArNjczLDkgQEAg
cnRjX3NvdXJjZV9zZXQoInRlc3RfY29tbW9uIikgewogICAgICIuLi9hcGk6dHJhbnNwb3J0X2Fw
aSIsCiAgICAgIi4uL2FwaS9hdWRpb19jb2RlY3M6YnVpbHRpbl9hdWRpb19kZWNvZGVyX2ZhY3Rv
cnkiLAogICAgICIuLi9hcGkvYXVkaW9fY29kZWNzOmJ1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0
b3J5IiwKKyAgICAiLi4vYXBpL3Rlc3QvdmlkZW86ZnVuY3Rpb25fdmlkZW9fZmFjdG9yeSIsCisg
ICAgIi4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnki
LAorICAgICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAg
ICAgIi4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgIi4uL2FwaS92aWRlb19jb2RlY3M6
dmlkZW9fY29kZWNzX2FwaSIsCiAgICAgIi4uL2F1ZGlvIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY2FsbF90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jYWxsX3Rlc3QuY2MK
aW5kZXggZjRmYmYyMjFiZTkwZjU0ZTg3ZmRkODY1MGVhODJiNjg0ZjY4MDM1YS4uNmUyNWI4NWE1
NmM3MjUzODVlMzVkMmU4YjNlNWRjODRiNDZhMTBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jYWxsX3Rlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jYWxsX3Rlc3QuY2MK
QEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNs
dWRlICJhcGkvYXVkaW9fY29kZWNzL2J1aWx0aW5fYXVkaW9fZGVjb2Rlcl9mYWN0b3J5LmgiCiAj
aW5jbHVkZSAiYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5o
IgorI2luY2x1ZGUgImFwaS92aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2Zh
Y3RvcnkuaCIKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2VuY29kZXJfY29uZmln
LmgiCiAjaW5jbHVkZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwv
cnRwX3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaCIKQEAgLTM5LDcgKzQwLDggQEAgQ2FsbFRl
c3Q6OkNhbGxUZXN0KCkKICAgICAgIHNlbmRfZXZlbnRfbG9nXyhSdGNFdmVudExvZzo6Q3JlYXRl
TnVsbCgpKSwKICAgICAgIHJlY3ZfZXZlbnRfbG9nXyhSdGNFdmVudExvZzo6Q3JlYXRlTnVsbCgp
KSwKICAgICAgIHNlbmRlcl9jYWxsX3RyYW5zcG9ydF9jb250cm9sbGVyXyhudWxscHRyKSwKLSAg
ICAgIGF1ZGlvX3NlbmRfY29uZmlnXyhudWxscHRyKSwKKyAgICAgIGF1ZGlvX3NlbmRfY29uZmln
XygvKnNlbmRfdHJhbnNwb3J0PSovbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAv
Km1lZGlhX3RyYW5zcG9ydD0qL251bGxwdHIpLAogICAgICAgYXVkaW9fc2VuZF9zdHJlYW1fKG51
bGxwdHIpLAogICAgICAgYmJyX25ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5XyhuZXcgQmJyTmV0
d29ya0NvbnRyb2xsZXJGYWN0b3J5KCkpLAogICAgICAgZmFrZV9lbmNvZGVyX2ZhY3RvcnlfKFt0
aGlzXSgpIHsKQEAgLTUzLDYgKzU1LDcgQEAgQ2FsbFRlc3Q6OkNhbGxUZXN0KCkKICAgICAgICAg
cmV0dXJuIGZha2VfZW5jb2RlcjsKICAgICAgIH0pLAogICAgICAgZmFrZV9kZWNvZGVyX2ZhY3Rv
cnlfKFtdKCkgeyByZXR1cm4gYWJzbDo6bWFrZV91bmlxdWU8RmFrZURlY29kZXI+KCk7IH0pLAor
ICAgICAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8oQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0
ZUFsbG9jYXRvckZhY3RvcnkoKSksCiAgICAgICBudW1fdmlkZW9fc3RyZWFtc18oMSksCiAgICAg
ICBudW1fYXVkaW9fc3RyZWFtc18oMCksCiAgICAgICBudW1fZmxleGZlY19zdHJlYW1zXygwKSwK
QEAgLTc1LDcgKzc4LDcgQEAgdm9pZCBDYWxsVGVzdDo6UnVuQmFzZVRlc3QoQmFzZVRlc3QqIHRl
c3QpIHsKICAgICBudW1fZmxleGZlY19zdHJlYW1zXyA9IHRlc3QtPkdldE51bUZsZXhmZWNTdHJl
YW1zKCk7CiAgICAgUlRDX0RDSEVDSyhudW1fdmlkZW9fc3RyZWFtc18gPiAwIHx8IG51bV9hdWRp
b19zdHJlYW1zXyA+IDApOwogICAgIENhbGw6OkNvbmZpZyBzZW5kX2NvbmZpZyhzZW5kX2V2ZW50
X2xvZ18uZ2V0KCkpOwotICAgIHRlc3QtPk1vZGlmeVNlbmRlckNhbGxDb25maWcoJnNlbmRfY29u
ZmlnKTsKKyAgICB0ZXN0LT5Nb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKCZzZW5kX2NvbmZpZy5i
aXRyYXRlX2NvbmZpZyk7CiAgICAgaWYgKG51bV9hdWRpb19zdHJlYW1zXyA+IDApIHsKICAgICAg
IENyZWF0ZUZha2VBdWRpb0RldmljZXModGVzdC0+Q3JlYXRlQ2FwdHVyZXIoKSwgdGVzdC0+Q3Jl
YXRlUmVuZGVyZXIoKSk7CiAgICAgICB0ZXN0LT5PbkZha2VBdWRpb0RldmljZXNDcmVhdGVkKGZh
a2Vfc2VuZF9hdWRpb19kZXZpY2VfLmdldCgpLApAQCAtOTksNyArMTAyLDcgQEAgdm9pZCBDYWxs
VGVzdDo6UnVuQmFzZVRlc3QoQmFzZVRlc3QqIHRlc3QpIHsKICAgICB9CiAgICAgaWYgKHRlc3Qt
PlNob3VsZENyZWF0ZVJlY2VpdmVycygpKSB7CiAgICAgICBDYWxsOjpDb25maWcgcmVjdl9jb25m
aWcocmVjdl9ldmVudF9sb2dfLmdldCgpKTsKLSAgICAgIHRlc3QtPk1vZGlmeVJlY2VpdmVyQ2Fs
bENvbmZpZygmcmVjdl9jb25maWcpOworICAgICAgdGVzdC0+TW9kaWZ5UmVjZWl2ZXJCaXRyYXRl
Q29uZmlnKCZyZWN2X2NvbmZpZy5iaXRyYXRlX2NvbmZpZyk7CiAgICAgICBpZiAobnVtX2F1ZGlv
X3N0cmVhbXNfID4gMCkgewogICAgICAgICBBdWRpb1N0YXRlOjpDb25maWcgYXVkaW9fc3RhdGVf
Y29uZmlnOwogICAgICAgICBhdWRpb19zdGF0ZV9jb25maWcuYXVkaW9fbWl4ZXIgPSBBdWRpb01p
eGVySW1wbDo6Q3JlYXRlKCk7CkBAIC0xNjMsNiArMTY2LDcgQEAgdm9pZCBDYWxsVGVzdDo6UnVu
QmFzZVRlc3QoQmFzZVRlc3QqIHRlc3QpIHsKICAgICAgIGludCBoZWlnaHQgPSBrRGVmYXVsdEhl
aWdodDsKICAgICAgIGludCBmcmFtZV9yYXRlID0ga0RlZmF1bHRGcmFtZXJhdGU7CiAgICAgICB0
ZXN0LT5Nb2RpZnlWaWRlb0NhcHR1cmVTdGFydFJlc29sdXRpb24oJndpZHRoLCAmaGVpZ2h0LCAm
ZnJhbWVfcmF0ZSk7CisgICAgICB0ZXN0LT5Nb2RpZnlWaWRlb0RlZ3JhZGF0aW9uUHJlZmVyZW5j
ZSgmZGVncmFkYXRpb25fcHJlZmVyZW5jZV8pOwogICAgICAgQ3JlYXRlRnJhbWVHZW5lcmF0b3JD
YXB0dXJlcihmcmFtZV9yYXRlLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgIHRlc3QtPk9uRnJhbWVH
ZW5lcmF0b3JDYXB0dXJlckNyZWF0ZWQoZnJhbWVfZ2VuZXJhdG9yX2NhcHR1cmVyXyk7CiAgICAg
fQpAQCAtMjMyLDYgKzIzNiw4IEBAIHZvaWQgQ2FsbFRlc3Q6OkNyZWF0ZVZpZGVvU2VuZENvbmZp
ZyhWaWRlb1NlbmRTdHJlYW06OkNvbmZpZyogdmlkZW9fY29uZmlnLAogICBSVENfRENIRUNLX0xF
KG51bV92aWRlb19zdHJlYW1zICsgbnVtX3VzZWRfc3NyY3MsIGtOdW1Tc3Jjcyk7CiAgICp2aWRl
b19jb25maWcgPSBWaWRlb1NlbmRTdHJlYW06OkNvbmZpZyhzZW5kX3RyYW5zcG9ydCk7CiAgIHZp
ZGVvX2NvbmZpZy0+ZW5jb2Rlcl9zZXR0aW5ncy5lbmNvZGVyX2ZhY3RvcnkgPSAmZmFrZV9lbmNv
ZGVyX2ZhY3RvcnlfOworICB2aWRlb19jb25maWctPmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9h
bGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQo
KTsKICAgdmlkZW9fY29uZmlnLT5ydHAucGF5bG9hZF9uYW1lID0gIkZBS0UiOwogICB2aWRlb19j
b25maWctPnJ0cC5wYXlsb2FkX3R5cGUgPSBrRmFrZVZpZGVvU2VuZFBheWxvYWRUeXBlOwogICB2
aWRlb19jb25maWctPnJ0cC5leHRlbnNpb25zLnB1c2hfYmFjaygKQEAgLTI1OSw3ICsyNjUsOCBA
QCB2b2lkIENhbGxUZXN0OjpDcmVhdGVBdWRpb0FuZEZlY1NlbmRDb25maWdzKHNpemVfdCBudW1f
YXVkaW9fc3RyZWFtcywKICAgUlRDX0RDSEVDS19MRShudW1fYXVkaW9fc3RyZWFtcywgMSk7CiAg
IFJUQ19EQ0hFQ0tfTEUobnVtX2ZsZXhmZWNfc3RyZWFtcywgMSk7CiAgIGlmIChudW1fYXVkaW9f
c3RyZWFtcyA+IDApIHsKLSAgICBBdWRpb1NlbmRTdHJlYW06OkNvbmZpZyBhdWRpb19zZW5kX2Nv
bmZpZyhzZW5kX3RyYW5zcG9ydCk7CisgICAgQXVkaW9TZW5kU3RyZWFtOjpDb25maWcgYXVkaW9f
c2VuZF9jb25maWcoc2VuZF90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgICBhdWRp
b19zZW5kX2NvbmZpZy5ydHAuc3NyYyA9IGtBdWRpb1NlbmRTc3JjOwogICAgIGF1ZGlvX3NlbmRf
Y29uZmlnLnNlbmRfY29kZWNfc3BlYyA9IEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnOjpTZW5kQ29k
ZWNTcGVjKAogICAgICAgICBrQXVkaW9TZW5kUGF5bG9hZFR5cGUsIHsib3B1cyIsIDQ4MDAwLCAy
LCB7eyJzdGVyZW8iLCAiMSJ9fX0pOwpAQCAtNzI2LDkgKzczMywxMCBAQCB2b2lkIEJhc2VUZXN0
OjpPbkZha2VBdWRpb0RldmljZXNDcmVhdGVkKAogICAgIFRlc3RBdWRpb0RldmljZU1vZHVsZSog
c2VuZF9hdWRpb19kZXZpY2UsCiAgICAgVGVzdEF1ZGlvRGV2aWNlTW9kdWxlKiByZWN2X2F1ZGlv
X2RldmljZSkge30KIAotdm9pZCBCYXNlVGVzdDo6TW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxs
OjpDb25maWcqIGNvbmZpZykge30KK3ZvaWQgQmFzZVRlc3Q6Ok1vZGlmeVNlbmRlckJpdHJhdGVD
b25maWcoQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykge30KIAotdm9pZCBCYXNl
VGVzdDo6TW9kaWZ5UmVjZWl2ZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSB7fQor
dm9pZCBCYXNlVGVzdDo6TW9kaWZ5UmVjZWl2ZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVDb25zdHJh
aW50cyogYml0cmF0ZV9jb25maWcpIHsKK30KIAogdm9pZCBCYXNlVGVzdDo6T25SdHBUcmFuc3Bv
cnRDb250cm9sbGVyU2VuZENyZWF0ZWQoCiAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmQq
IGNvbnRyb2xsZXIpIHt9CkBAIC03NDIsOCArNzUwLDggQEAgdGVzdDo6UGFja2V0VHJhbnNwb3J0
KiBCYXNlVGVzdDo6Q3JlYXRlU2VuZFRyYW5zcG9ydCgKICAgICAgIHRhc2tfcXVldWUsIHNlbmRl
cl9jYWxsLCB0aGlzLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtTZW5kZXIsCiAgICAgICBDYWxs
VGVzdDo6cGF5bG9hZF90eXBlX21hcF8sCiAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0
d29ya1BpcGU+KAotICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1h
a2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKTsKKyAgICAg
ICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAorICAgICAgICAgIGFic2w6Om1ha2VfdW5p
cXVlPFNpbXVsYXRlZE5ldHdvcms+KEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpKTsK
IH0KIAogdGVzdDo6UGFja2V0VHJhbnNwb3J0KiBCYXNlVGVzdDo6Q3JlYXRlUmVjZWl2ZVRyYW5z
cG9ydCgKQEAgLTc1Miw4ICs3NjAsOCBAQCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQqIEJhc2VUZXN0
OjpDcmVhdGVSZWNlaXZlVHJhbnNwb3J0KAogICAgICAgdGFza19xdWV1ZSwgbnVsbHB0ciwgdGhp
cywgdGVzdDo6UGFja2V0VHJhbnNwb3J0OjprUmVjZWl2ZXIsCiAgICAgICBDYWxsVGVzdDo6cGF5
bG9hZF90eXBlX21hcF8sCiAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+
KAotICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVl
PFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKTsKKyAgICAgICAgICBDbG9j
azo6R2V0UmVhbFRpbWVDbG9jaygpLAorICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVs
YXRlZE5ldHdvcms+KEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpKTsKIH0KIAogc2l6
ZV90IEJhc2VUZXN0OjpHZXROdW1WaWRlb1N0cmVhbXMoKSBjb25zdCB7CkBAIC03NzcsNiArNzg1
LDkgQEAgdm9pZCBCYXNlVGVzdDo6TW9kaWZ5VmlkZW9DYXB0dXJlU3RhcnRSZXNvbHV0aW9uKGlu
dCogd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50KiBoZWlndCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQqIGZyYW1lX3JhdGUpIHt9CiAKK3ZvaWQgQmFzZVRlc3Q6Ok1vZGlmeVZpZGVv
RGVncmFkYXRpb25QcmVmZXJlbmNlKAorICAgIERlZ3JhZGF0aW9uUHJlZmVyZW5jZSogZGVncmFk
YXRpb25fcHJlZmVyZW5jZSkge30KKwogdm9pZCBCYXNlVGVzdDo6T25WaWRlb1N0cmVhbXNDcmVh
dGVkKAogICAgIFZpZGVvU2VuZFN0cmVhbSogc2VuZF9zdHJlYW0sCiAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8VmlkZW9SZWNlaXZlU3RyZWFtKj4mIHJlY2VpdmVfc3RyZWFtcykge30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY2FsbF90
ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Nh
bGxfdGVzdC5oCmluZGV4IDdhNWMzZTliOGMxYTAwZWQ3MDZmODA0MmQxOTIyMTA2NzczNzE2NjMu
Ljg5NjFiN2ZjY2IzZjkzOTBlMTI2OTEyNzk5MTRlYmM2NDI1Mzg5ZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY2FsbF90ZXN0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jYWxs
X3Rlc3QuaApAQCAtMTMsNiArMTMsOSBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2
ZWN0b3I+CiAKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19kZWNvZGVy
X2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19lbmNv
ZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fYml0cmF0ZV9hbGxvY2F0
b3JfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwvY2FsbC5oIgogI2luY2x1ZGUgImNhbGwvcnRw
X3RyYW5zcG9ydF9jb250cm9sbGVyX3NlbmQuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVu
dF9sb2cvcnRjX2V2ZW50X2xvZy5oIgpAQCAtMjIsOCArMjUsNiBAQAogI2luY2x1ZGUgInRlc3Qv
ZmFrZV92aWRlb3JlbmRlcmVyLmgiCiAjaW5jbHVkZSAidGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmgi
CiAjaW5jbHVkZSAidGVzdC9mcmFtZV9nZW5lcmF0b3JfY2FwdHVyZXIuaCIKLSNpbmNsdWRlICJ0
ZXN0L2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgotI2luY2x1ZGUgInRlc3QvZnVu
Y3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVzdC9ydHBfcnRjcF9v
YnNlcnZlci5oIgogI2luY2x1ZGUgInRlc3Qvc2luZ2xlX3RocmVhZGVkX3Rhc2tfcXVldWUuaCIK
IApAQCAtMjA1LDYgKzIwNiw3IEBAIGNsYXNzIENhbGxUZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9FbmNvZGVyRmFjdG9yeSBmYWtlX2VuY29kZXJf
ZmFjdG9yeV87CiAgIGludCBmYWtlX2VuY29kZXJfbWF4X2JpdHJhdGVfID0gLTE7CiAgIHRlc3Q6
OkZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9yeSBmYWtlX2RlY29kZXJfZmFjdG9yeV87CisgIHN0
ZDo6dW5pcXVlX3B0cjxWaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5PiBiaXRyYXRlX2FsbG9j
YXRvcl9mYWN0b3J5XzsKICAgLy8gTnVtYmVyIG9mIHNpbXVsY2FzdCBzdWJzdHJlYW1zLgogICBz
aXplX3QgbnVtX3ZpZGVvX3N0cmVhbXNfOwogICBzaXplX3QgbnVtX2F1ZGlvX3N0cmVhbXNfOwpA
QCAtMjQxLDggKzI0Myw4IEBAIGNsYXNzIEJhc2VUZXN0IDogcHVibGljIFJ0cFJ0Y3BPYnNlcnZl
ciB7CiAgICAgICBUZXN0QXVkaW9EZXZpY2VNb2R1bGUqIHNlbmRfYXVkaW9fZGV2aWNlLAogICAg
ICAgVGVzdEF1ZGlvRGV2aWNlTW9kdWxlKiByZWN2X2F1ZGlvX2RldmljZSk7CiAKLSAgdmlydHVh
bCB2b2lkIE1vZGlmeVNlbmRlckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpOwotICB2
aXJ0dWFsIHZvaWQgTW9kaWZ5UmVjZWl2ZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmln
KTsKKyAgdmlydHVhbCB2b2lkIE1vZGlmeVNlbmRlckJpdHJhdGVDb25maWcoQml0cmF0ZUNvbnN0
cmFpbnRzKiBiaXRyYXRlX2NvbmZpZyk7CisgIHZpcnR1YWwgdm9pZCBNb2RpZnlSZWNlaXZlckJp
dHJhdGVDb25maWcoQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZyk7CiAKICAgdmly
dHVhbCB2b2lkIE9uUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRDcmVhdGVkKAogICAgICAgUnRw
VHJhbnNwb3J0Q29udHJvbGxlclNlbmQqIGNvbnRyb2xsZXIpOwpAQCAtMjYxLDYgKzI2Myw5IEBA
IGNsYXNzIEJhc2VUZXN0IDogcHVibGljIFJ0cFJ0Y3BPYnNlcnZlciB7CiAgIHZpcnR1YWwgdm9p
ZCBNb2RpZnlWaWRlb0NhcHR1cmVTdGFydFJlc29sdXRpb24oaW50KiB3aWR0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGhlaWd0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogZnJhbWVf
cmF0ZSk7CisgIHZpcnR1YWwgdm9pZCBNb2RpZnlWaWRlb0RlZ3JhZGF0aW9uUHJlZmVyZW5jZSgK
KyAgICAgIERlZ3JhZGF0aW9uUHJlZmVyZW5jZSogZGVncmFkYXRpb25fcHJlZmVyZW5jZSk7CisK
ICAgdmlydHVhbCB2b2lkIE9uVmlkZW9TdHJlYW1zQ3JlYXRlZCgKICAgICAgIFZpZGVvU2VuZFN0
cmVhbSogc2VuZF9zdHJlYW0sCiAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb1JlY2VpdmVT
dHJlYW0qPiYgcmVjZWl2ZV9zdHJlYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvY29uZmlndXJhYmxlX2ZyYW1lX3NpemVfZW5j
b2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
Y29uZmlndXJhYmxlX2ZyYW1lX3NpemVfZW5jb2Rlci5jYwppbmRleCBjMGZlMjk2NmU4NWZmMjFi
NzEyYWQ0ODI4MmE5NGFlYTk1ODg1ODM1Li5iZGQ2MWQwMzJmYzgzNGExZDhkOTllNmMyNDE2YmZj
NDM4YmQ2NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L2NvbmZpZ3VyYWJsZV9mcmFtZV9zaXplX2VuY29kZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jb25maWd1cmFibGVf
ZnJhbWVfc2l6ZV9lbmNvZGVyLmNjCkBAIC0xMiw3ICsxMiw3IEBACiAKICNpbmNsdWRlIDxzdHJp
bmcuaD4KIAotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCisj
aW5jbHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NoZWNrcy5oIgogCkBAIC01NCw3ICs1NCw5IEBAIGludDMyX3QgQ29uZmlndXJhYmxl
RnJhbWVTaXplRW5jb2Rlcjo6RW5jb2RlKAogICBDb2RlY1NwZWNpZmljSW5mbyBzcGVjaWZpY3t9
OwogICBzcGVjaWZpYy5jb2RlY1R5cGUgPSBjb2RlY190eXBlXzsKICAgY2FsbGJhY2tfLT5PbkVu
Y29kZWRJbWFnZShlbmNvZGVkSW1hZ2UsICZzcGVjaWZpYywgZnJhZ21lbnRhdGlvbik7Ci0KKyAg
aWYgKHBvc3RfZW5jb2RlX2NhbGxiYWNrXykgeworICAgICgqcG9zdF9lbmNvZGVfY2FsbGJhY2tf
KSgpOworICB9CiAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CiAKQEAgLTY4LDEx
ICs3MCw2IEBAIGludDMyX3QgQ29uZmlndXJhYmxlRnJhbWVTaXplRW5jb2Rlcjo6UmVsZWFzZSgp
IHsKICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKIH0KIAotaW50MzJfdCBDb25maWd1
cmFibGVGcmFtZVNpemVFbmNvZGVyOjpTZXRDaGFubmVsUGFyYW1ldGVycyh1aW50MzJfdCBwYWNr
ZXRfbG9zcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBydHQpIHsKLSAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19P
SzsKLX0KLQogaW50MzJfdCBDb25maWd1cmFibGVGcmFtZVNpemVFbmNvZGVyOjpTZXRSYXRlQWxs
b2NhdGlvbigKICAgICBjb25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9uLAog
ICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgewpAQCAtODksNSArODYsMTAgQEAgdm9pZCBDb25maWd1
cmFibGVGcmFtZVNpemVFbmNvZGVyOjpTZXRDb2RlY1R5cGUoVmlkZW9Db2RlY1R5cGUgY29kZWNf
dHlwZSkgewogICBjb2RlY190eXBlXyA9IGNvZGVjX3R5cGU7CiB9CiAKK3ZvaWQgQ29uZmlndXJh
YmxlRnJhbWVTaXplRW5jb2Rlcjo6UmVnaXN0ZXJQb3N0RW5jb2RlQ2FsbGJhY2soCisgICAgc3Rk
OjpmdW5jdGlvbjx2b2lkKHZvaWQpPiBwb3N0X2VuY29kZV9jYWxsYmFjaykgeworICBwb3N0X2Vu
Y29kZV9jYWxsYmFja18gPSBzdGQ6Om1vdmUocG9zdF9lbmNvZGVfY2FsbGJhY2spOworfQorCiB9
ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9jb25maWd1cmFi
bGVfZnJhbWVfc2l6ZV9lbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2NvbmZpZ3VyYWJsZV9mcmFtZV9zaXplX2VuY29kZXIuaAppbmRleCAx
ZGM5ZTQ4ZjQ3ZjVhYjdiZjBjNDc4MDM4ZThiZGY1ODMxYmM1OWRkLi5mODgxNTEzZmNjMjczNjFm
N2EwNGI0YmY2OGFlNTU3MGQzZWE4NzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2NvbmZpZ3VyYWJsZV9mcmFtZV9zaXplX2VuY29k
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L2NvbmZpZ3VyYWJsZV9mcmFtZV9zaXplX2VuY29kZXIuaApAQCAtMzcsOCArMzcsNiBAQCBjbGFz
cyBDb25maWd1cmFibGVGcmFtZVNpemVFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAK
ICAgaW50MzJfdCBSZWxlYXNlKCkgb3ZlcnJpZGU7CiAKLSAgaW50MzJfdCBTZXRDaGFubmVsUGFy
YW1ldGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlOwotCiAg
IGludDMyX3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYg
YWxsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZXJh
dGUpIG92ZXJyaWRlOwogCkBAIC00Niw4ICs0NCwxMyBAQCBjbGFzcyBDb25maWd1cmFibGVGcmFt
ZVNpemVFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAKICAgdm9pZCBTZXRDb2RlY1R5
cGUoVmlkZW9Db2RlY1R5cGUgY29kZWNfdHlwZV8pOwogCisgIHZvaWQgUmVnaXN0ZXJQb3N0RW5j
b2RlQ2FsbGJhY2soCisgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQodm9pZCk+IHBvc3RfZW5jb2Rl
X2NhbGxiYWNrKTsKKwogIHByaXZhdGU6CiAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFj
a187CisgIGFic2w6Om9wdGlvbmFsPHN0ZDo6ZnVuY3Rpb248dm9pZCh2b2lkKT4+IHBvc3RfZW5j
b2RlX2NhbGxiYWNrXzsKKwogICBjb25zdCBzaXplX3QgbWF4X2ZyYW1lX3NpemVfOwogICBzaXpl
X3QgY3VycmVudF9mcmFtZV9zaXplXzsKICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gYnVm
ZmVyXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3QvZGlyZWN0X3RyYW5zcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZGlyZWN0X3RyYW5zcG9ydC5jYwppbmRleCA2YWE4YzkxNThm
MGRlNjcyMGUyMjViYjQ4ZWFlNDYzYTc5YTUzMzEzLi5mZDczNjkxNzFhMjIwMGM3MTRkNDk3Mjdk
YTFmNjBmNTczODVjYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L2RpcmVjdF90cmFuc3BvcnQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9kaXJlY3RfdHJhbnNwb3J0LmNjCkBA
IC03Miw2ICs3Miw4IEBAIGJvb2wgRGlyZWN0VHJhbnNwb3J0OjpTZW5kUnRwKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsCiAgIGlmIChzZW5kX2NhbGxfKSB7CiAgICAgcnRjOjpTZW50UGFja2V0IHNlbnRf
cGFja2V0KG9wdGlvbnMucGFja2V0X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgICBzZW50X3BhY2tldC5pbmZvLmlu
Y2x1ZGVkX2luX2ZlZWRiYWNrID0gb3B0aW9ucy5pbmNsdWRlZF9pbl9mZWVkYmFjazsKKyAgICBz
ZW50X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2FsbG9jYXRpb24gPSBvcHRpb25zLmluY2x1ZGVk
X2luX2FsbG9jYXRpb247CiAgICAgc2VudF9wYWNrZXQuaW5mby5wYWNrZXRfc2l6ZV9ieXRlcyA9
IGxlbmd0aDsKICAgICBzZW50X3BhY2tldC5pbmZvLnBhY2tldF90eXBlID0gcnRjOjpQYWNrZXRU
eXBlOjprRGF0YTsKICAgICBzZW5kX2NhbGxfLT5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9lbmNvZGVyX3NldHRpbmdzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9lbmNvZGVyX3NldHRpbmdzLmNjCmluZGV4IDk0NTU1OWI0ZWUwMmVlODU1
MTlmNzMzYmE4NWQ2ODljNzEyOTk3MGUuLmJmYmQyYmRlYzQ3YTk4MzQ5OTFhMTM3YzNlOTUyMWZm
NzU5MGFkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvZW5jb2Rlcl9zZXR0aW5ncy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2VuY29kZXJfc2V0dGluZ3MuY2MKQEAgLTYxLDYg
KzYxLDE0IEBAIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBDcmVhdGVWaWRlb1N0cmVhbXMoCiAg
ICAgICAgICAgICAgID8gc3RyZWFtLnRhcmdldF9iaXRyYXRlX2JwcwogICAgICAgICAgICAgICA6
IERlZmF1bHRWaWRlb1N0cmVhbUZhY3Rvcnk6OmtNYXhCaXRyYXRlUGVyU3RyZWFtW2ldOwogICAg
ICAgdGFyZ2V0X2JpdHJhdGVfYnBzID0gc3RkOjptaW4obWF4X2JpdHJhdGVfYnBzLCB0YXJnZXRf
Yml0cmF0ZV9icHMpOworCisgICAgICBpZiAoc3RyZWFtLm1heF9mcmFtZXJhdGUgPiAwKSB7Cisg
ICAgICAgIHN0cmVhbV9zZXR0aW5nc1tpXS5tYXhfZnJhbWVyYXRlID0gc3RyZWFtLm1heF9mcmFt
ZXJhdGU7CisgICAgICB9CisgICAgICBpZiAoc3RyZWFtLm51bV90ZW1wb3JhbF9sYXllcnMpIHsK
KyAgICAgICAgUlRDX0RDSEVDS19HRSgqc3RyZWFtLm51bV90ZW1wb3JhbF9sYXllcnMsIDEpOwor
ICAgICAgICBzdHJlYW1fc2V0dGluZ3NbaV0ubnVtX3RlbXBvcmFsX2xheWVycyA9IHN0cmVhbS5u
dW1fdGVtcG9yYWxfbGF5ZXJzOworICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICBtYXhfYml0
cmF0ZV9icHMgPSBzdGQ6Om1pbigKICAgICAgICAgICBiaXRyYXRlX2xlZnRfYnBzLCBEZWZhdWx0
VmlkZW9TdHJlYW1GYWN0b3J5OjprTWF4Qml0cmF0ZVBlclN0cmVhbVtpXSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfZW5j
b2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
ZmFrZV9lbmNvZGVyLmNjCmluZGV4IGJjM2M3YjEwODdiNGVhMGY2YTk1ODc5YzdhZTQ3MjZhMzEx
OTE3OWMuLmRkYWJhNzdhNGY0NWViYTEzNzA4ZGI4YWI2ZTliOWE0NDNlZWUwNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV9l
bmNvZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvZmFrZV9lbmNvZGVyLmNjCkBAIC0xNSwxNiArMTUsMzMgQEAKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8bWVtb3J5PgogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAv
LyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFwaS92
aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlk
ZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvc2xlZXAu
aCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CituYW1lc3BhY2Ugewor
Y29uc3QgaW50IGtLZXlmcmFtZVNpemVGYWN0b3IgPSA1OworCisvLyBJbnZlcnNlIG9mIHByb3Bv
cnRpb24gb2YgZnJhbWVzIGFzc2lnbmVkIHRvIGVhY2ggdGVtcG9yYWwgbGF5ZXIgZm9yIGFsbAor
Ly8gcG9zc2libGUgdGVtcG9yYWwgbGF5ZXJzIG51bWJlcnMuCitjb25zdCBpbnQga1RlbXBvcmFs
TGF5ZXJSYXRlRmFjdG9yWzRdWzRdID0geworICAgIHsxLCAwLCAwLCAwfSwgIC8vIDEvMQorICAg
IHsyLCAyLCAwLCAwfSwgIC8vIDEvMiArIDEvMgorICAgIHs0LCA0LCAyLCAwfSwgIC8vIDEvNCAr
IDEvNCArIDEvMgorICAgIHs4LCA4LCA0LCAyfSwgIC8vIDEvOCArIDEvOCArIDEvNCArIDEvMgor
fTsKKwordm9pZCBXcml0ZUNvdW50ZXIodW5zaWduZWQgY2hhciogcGF5bG9hZCwgdWludDMyX3Qg
Y291bnRlcikgeworICBwYXlsb2FkWzBdID0gKGNvdW50ZXIgJiAweDAwRkYpOworICBwYXlsb2Fk
WzFdID0gKGNvdW50ZXIgJiAweEZGMDApID4+IDg7CisgIHBheWxvYWRbMl0gPSAoY291bnRlciAm
IDB4RkYwMDAwKSA+PiAxNjsKKyAgcGF5bG9hZFszXSA9IChjb3VudGVyICYgMHhGRjAwMDAwMCkg
Pj4gMjQ7Cit9CiAKLWNvbnN0IGludCBrS2V5ZnJhbWVTaXplRmFjdG9yID0gMTA7Cit9OyAgLy8g
bmFtZXNwYWNlCiAKIEZha2VFbmNvZGVyOjpGYWtlRW5jb2RlcihDbG9jayogY2xvY2spCiAgICAg
OiBjbG9ja18oY2xvY2spLApAQCAtMzIsNiArNDksNyBAQCBGYWtlRW5jb2Rlcjo6RmFrZUVuY29k
ZXIoQ2xvY2sqIGNsb2NrKQogICAgICAgY29uZmlndXJlZF9pbnB1dF9mcmFtZXJhdGVfKC0xKSwK
ICAgICAgIG1heF90YXJnZXRfYml0cmF0ZV9rYnBzXygtMSksCiAgICAgICBwZW5kaW5nX2tleWZy
YW1lXyh0cnVlKSwKKyAgICAgIGNvdW50ZXJfKDApLAogICAgICAgZGVidF9ieXRlc18oMCkgewog
ICAvLyBHZW5lcmF0ZSBzb21lIGFyYml0cmFyeSBub3QtYWxsLXplcm8gZGF0YQogICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemVvZihlbmNvZGVkX2J1ZmZlcl8pOyArK2kpIHsKQEAgLTQ2LDYg
KzY0LDcgQEAgdm9pZCBGYWtlRW5jb2Rlcjo6U2V0TWF4Qml0cmF0ZShpbnQgbWF4X2ticHMpIHsK
ICAgUlRDX0RDSEVDS19HRShtYXhfa2JwcywgLTEpOyAgLy8gbWF4X2ticHMgPT0gLTEgZGlzYWJs
ZXMgaXQuCiAgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0X3NlY3RfKTsKICAgbWF4X3RhcmdldF9i
aXRyYXRlX2ticHNfID0gbWF4X2ticHM7CisgIFNldFJhdGVBbGxvY2F0aW9uKHRhcmdldF9iaXRy
YXRlXywgY29uZmlndXJlZF9pbnB1dF9mcmFtZXJhdGVfKTsKIH0KIAogaW50MzJfdCBGYWtlRW5j
b2Rlcjo6SW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBjb25maWcsCkBAIC03MSw2ICs5MCw3
IEBAIGludDMyX3QgRmFrZUVuY29kZXI6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBpbnB1dF9p
bWFnZSwKICAgaW50IGZyYW1lcmF0ZTsKICAgVmlkZW9Db2RlY01vZGUgbW9kZTsKICAgYm9vbCBr
ZXlmcmFtZTsKKyAgdWludDMyX3QgY291bnRlcjsKICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGNz
KCZjcml0X3NlY3RfKTsKICAgICBtYXhfZnJhbWVyYXRlID0gY29uZmlnXy5tYXhGcmFtZXJhdGU7
CkBAIC04OCwxMyArMTA4LDE1IEBAIGludDMyX3QgRmFrZUVuY29kZXI6OkVuY29kZShjb25zdCBW
aWRlb0ZyYW1lJiBpbnB1dF9pbWFnZSwKICAgICB9CiAgICAga2V5ZnJhbWUgPSBwZW5kaW5nX2tl
eWZyYW1lXzsKICAgICBwZW5kaW5nX2tleWZyYW1lXyA9IGZhbHNlOworICAgIGNvdW50ZXIgPSBj
b3VudGVyXysrOwogICB9CiAKICAgRnJhbWVJbmZvIGZyYW1lX2luZm8gPQogICAgICAgTmV4dEZy
YW1lKGZyYW1lX3R5cGVzLCBrZXlmcmFtZSwgbnVtX3NpbXVsY2FzdF9zdHJlYW1zLCB0YXJnZXRf
Yml0cmF0ZSwKICAgICAgICAgICAgICAgICBzaW11bGNhc3Rfc3RyZWFtcywgZnJhbWVyYXRlKTsK
ICAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgZnJhbWVfaW5mby5sYXllcnMuc2l6ZSgpOyArK2kp
IHsKLSAgICBpZiAoZnJhbWVfaW5mby5sYXllcnNbaV0uc2l6ZSA9PSAwKSB7CisgICAgY29uc3Rl
eHByIGludCBrTWluUGF5TG9hZExlbmd0aCA9IDE0OworICAgIGlmIChmcmFtZV9pbmZvLmxheWVy
c1tpXS5zaXplIDwga01pblBheUxvYWRMZW5ndGgpIHsKICAgICAgIC8vIERyb3AgdGhpcyB0ZW1w
b3JhbCBsYXllci4KICAgICAgIGNvbnRpbnVlOwogICAgIH0KQEAgLTEwNCw3ICsxMjYsMTAgQEAg
aW50MzJfdCBGYWtlRW5jb2Rlcjo6RW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2ltYWdl
LAogICAgIHNwZWNpZmljcy5jb2RlY1R5cGUgPSBrVmlkZW9Db2RlY0dlbmVyaWM7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gZW5jb2RlZF9idWZmZXIoCiAgICAgICAgIG5ldyB1aW50
OF90W2ZyYW1lX2luZm8ubGF5ZXJzW2ldLnNpemVdKTsKLSAgICBtZW1jcHkoZW5jb2RlZF9idWZm
ZXIuZ2V0KCksIGVuY29kZWRfYnVmZmVyXywgZnJhbWVfaW5mby5sYXllcnNbaV0uc2l6ZSk7Cisg
ICAgbWVtY3B5KGVuY29kZWRfYnVmZmVyLmdldCgpLCBlbmNvZGVkX2J1ZmZlcl8sCisgICAgICAg
ICAgIGZyYW1lX2luZm8ubGF5ZXJzW2ldLnNpemUgLSA0KTsKKyAgICAvLyBXcml0ZSBhIGNvdW50
ZXIgdG8gdGhlIGltYWdlIHRvIG1ha2UgZWFjaCBmcmFtZSB1bmlxdWUuCisgICAgV3JpdGVDb3Vu
dGVyKGVuY29kZWRfYnVmZmVyLmdldCgpICsgZnJhbWVfaW5mby5sYXllcnNbaV0uc2l6ZSAtIDQs
IGNvdW50ZXIpOwogICAgIEVuY29kZWRJbWFnZSBlbmNvZGVkKGVuY29kZWRfYnVmZmVyLmdldCgp
LCBmcmFtZV9pbmZvLmxheWVyc1tpXS5zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVvZihlbmNvZGVkX2J1ZmZlcl8pKTsKICAgICBlbmNvZGVkLlNldFRpbWVzdGFtcChpbnB1dF9p
bWFnZS50aW1lc3RhbXAoKSk7CkBAIC0xMTgsNyArMTQzLDYgQEAgaW50MzJfdCBGYWtlRW5jb2Rl
cjo6RW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGlucHV0X2ltYWdlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA/IFZpZGVvQ29udGVudFR5cGU6OlNDUkVFTlNIQVJFCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogVmlkZW9Db250ZW50VHlwZTo6VU5TUEVDSUZJRUQ7
CiAgICAgZW5jb2RlZC5TZXRTcGF0aWFsSW5kZXgoaSk7Ci0gICAgc3BlY2lmaWNzLmNvZGVjX25h
bWUgPSBJbXBsZW1lbnRhdGlvbk5hbWUoKTsKICAgICBpZiAoY2FsbGJhY2stPk9uRW5jb2RlZElt
YWdlKGVuY29kZWQsICZzcGVjaWZpY3MsIG51bGxwdHIpLmVycm9yICE9CiAgICAgICAgIEVuY29k
ZWRJbWFnZUNhbGxiYWNrOjpSZXN1bHQ6Ok9LKSB7CiAgICAgICByZXR1cm4gLTE7CkBAIC0xNDYs
NiArMTcwLDcgQEAgRmFrZUVuY29kZXI6OkZyYW1lSW5mbyBGYWtlRW5jb2Rlcjo6TmV4dEZyYW1l
KAogICAgIH0KICAgfQogCisgIHJ0Yzo6Q3JpdFNjb3BlIGNzKCZjcml0X3NlY3RfKTsKICAgZm9y
ICh1aW50OF90IGkgPSAwOyBpIDwgbnVtX3NpbXVsY2FzdF9zdHJlYW1zOyArK2kpIHsKICAgICBp
ZiAodGFyZ2V0X2JpdHJhdGUuR2V0Qml0cmF0ZShpLCAwKSA+IDApIHsKICAgICAgIGludCB0ZW1w
b3JhbF9pZCA9IGxhc3RfZnJhbWVfaW5mb18ubGF5ZXJzLnNpemUoKSA+IGkKQEAgLTE2Niw3ICsx
OTEsOSBAQCBGYWtlRW5jb2Rlcjo6RnJhbWVJbmZvIEZha2VFbmNvZGVyOjpOZXh0RnJhbWUoCiAg
ICAgaWYgKGZyYW1lX2luZm8ua2V5ZnJhbWUpIHsKICAgICAgIGxheWVyX2luZm8udGVtcG9yYWxf
aWQgPSAwOwogICAgICAgc2l6ZV90IGF2Z19mcmFtZV9zaXplID0KLSAgICAgICAgICAodGFyZ2V0
X2JpdHJhdGUuR2V0Qml0cmF0ZShpLCAwKSArIDcpIC8gKDggKiBmcmFtZXJhdGUpOworICAgICAg
ICAgICh0YXJnZXRfYml0cmF0ZS5HZXRCaXRyYXRlKGksIDApICsgNykgKgorICAgICAgICAgIGtU
ZW1wb3JhbExheWVyUmF0ZUZhY3RvcltmcmFtZV9pbmZvLmxheWVycy5zaXplKCkgLSAxXVtpXSAv
CisgICAgICAgICAgKDggKiBmcmFtZXJhdGUpOwogCiAgICAgICAvLyBUaGUgZmlyc3QgZnJhbWUg
aXMgYSBrZXkgZnJhbWUgYW5kIHNob3VsZCBiZSBsYXJnZXIuCiAgICAgICAvLyBTdG9yZSB0aGUg
b3ZlcnNob290IGJ5dGVzIGFuZCBkaXN0cmlidXRlIHRoZW0gb3ZlciB0aGUgY29taW5nIGZyYW1l
cywKQEAgLTE3NSw3ICsyMDIsOCBAQCBGYWtlRW5jb2Rlcjo6RnJhbWVJbmZvIEZha2VFbmNvZGVy
OjpOZXh0RnJhbWUoCiAgICAgICBsYXllcl9pbmZvLnNpemUgPSBrS2V5ZnJhbWVTaXplRmFjdG9y
ICogYXZnX2ZyYW1lX3NpemU7CiAgICAgfSBlbHNlIHsKICAgICAgIHNpemVfdCBhdmdfZnJhbWVf
c2l6ZSA9Ci0gICAgICAgICAgKHRhcmdldF9iaXRyYXRlLkdldEJpdHJhdGUoaSwgbGF5ZXJfaW5m
by50ZW1wb3JhbF9pZCkgKyA3KSAvCisgICAgICAgICAgKHRhcmdldF9iaXRyYXRlLkdldEJpdHJh
dGUoaSwgbGF5ZXJfaW5mby50ZW1wb3JhbF9pZCkgKyA3KSAqCisgICAgICAgICAga1RlbXBvcmFs
TGF5ZXJSYXRlRmFjdG9yW2ZyYW1lX2luZm8ubGF5ZXJzLnNpemUoKSAtIDFdW2ldIC8KICAgICAg
ICAgICAoOCAqIGZyYW1lcmF0ZSk7CiAgICAgICBsYXllcl9pbmZvLnNpemUgPSBhdmdfZnJhbWVf
c2l6ZTsKICAgICAgIGlmIChkZWJ0X2J5dGVzXyA+IDApIHsKQEAgLTIwMSwxMCArMjI5LDYgQEAg
aW50MzJfdCBGYWtlRW5jb2Rlcjo6UmVsZWFzZSgpIHsKICAgcmV0dXJuIDA7CiB9CiAKLWludDMy
X3QgRmFrZUVuY29kZXI6OlNldENoYW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90IHBhY2tldF9sb3Nz
LCBpbnQ2NF90IHJ0dCkgewotICByZXR1cm4gMDsKLX0KLQogaW50MzJfdCBGYWtlRW5jb2Rlcjo6
U2V0UmF0ZUFsbG9jYXRpb24oCiAgICAgY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgcmF0
ZV9hbGxvY2F0aW9uLAogICAgIHVpbnQzMl90IGZyYW1lcmF0ZSkgewpAQCAtMjM2LDggKzI2MCwx
MCBAQCBpbnQzMl90IEZha2VFbmNvZGVyOjpTZXRSYXRlQWxsb2NhdGlvbigKIH0KIAogY29uc3Qg
Y2hhciogRmFrZUVuY29kZXI6OmtJbXBsZW1lbnRhdGlvbk5hbWUgPSAiZmFrZV9lbmNvZGVyIjsK
LWNvbnN0IGNoYXIqIEZha2VFbmNvZGVyOjpJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCB7Ci0g
IHJldHVybiBrSW1wbGVtZW50YXRpb25OYW1lOworVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBG
YWtlRW5jb2Rlcjo6R2V0RW5jb2RlckluZm8oKSBjb25zdCB7CisgIEVuY29kZXJJbmZvIGluZm87
CisgIGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSA9IGtJbXBsZW1lbnRhdGlvbk5hbWU7CisgIHJl
dHVybiBpbmZvOwogfQogCiBpbnQgRmFrZUVuY29kZXI6OkdldENvbmZpZ3VyZWRJbnB1dEZyYW1l
cmF0ZSgpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV9lbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfZW5jb2Rlci5oCmluZGV4IDY3YWNlYmVjNjlj
OTRiNzI3MGY2ZmQyODcxM2ZmZWY3OGRmMzg5NWYuLmRhMzhmMTFiNDU2Y2ZhYmFhNDdlNDY0NmQ1
MGZmY2IzNmFiZWIzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV9lbmNvZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX2VuY29kZXIuaApAQCAtMTUsNyArMTUs
NiBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvdmlk
ZW9fZW5jb2Rlci5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxk
L2luY2x1ZGUpCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCiAjaW5jbHVk
ZSAicnRjX2Jhc2Uvc2VxdWVuY2VkX3Rhc2tfY2hlY2tlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L3Rhc2tfcXVldWUuaCIKQEAgLTQxLDExICs0MCwxMCBAQCBjbGFzcyBGYWtlRW5jb2RlciA6IHB1
YmxpYyBWaWRlb0VuY29kZXIgewogICBpbnQzMl90IFJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxs
YmFjaygKICAgICAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAg
IGludDMyX3QgUmVsZWFzZSgpIG92ZXJyaWRlOwotICBpbnQzMl90IFNldENoYW5uZWxQYXJhbWV0
ZXJzKHVpbnQzMl90IHBhY2tldF9sb3NzLCBpbnQ2NF90IHJ0dCkgb3ZlcnJpZGU7CiAgIGludDMy
X3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiYgcmF0ZV9h
bGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYW1lcmF0
ZSkgb3ZlcnJpZGU7Ci0gIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogICBpbnQgR2V0Q29uZmlndXJlZElucHV0RnJhbWVyYXRlKCkgY29uc3Q7CisgIEVu
Y29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgc3RhdGljIGNv
bnN0IGNoYXIqIGtJbXBsZW1lbnRhdGlvbk5hbWU7CiAKQEAgLTcxLDcgKzY5LDcgQEAgY2xhc3Mg
RmFrZUVuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKICAgICAgICAgICAgICAgICAgICAg
ICBTaW11bGNhc3RTdHJlYW0gc2ltdWxjYXN0X3N0cmVhbXNba01heFNpbXVsY2FzdFN0cmVhbXNd
LAogICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZXJhdGUpOwogCi0gIEZyYW1lSW5mbyBs
YXN0X2ZyYW1lX2luZm9fOworICBGcmFtZUluZm8gbGFzdF9mcmFtZV9pbmZvXyBSVENfR1VBUkRF
RF9CWShjcml0X3NlY3RfKTsKICAgQ2xvY2sqIGNvbnN0IGNsb2NrXzsKIAogICBWaWRlb0NvZGVj
IGNvbmZpZ18gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CkBAIC04MCw2ICs3OCw3IEBAIGNs
YXNzIEZha2VFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7CiAgIGludCBjb25maWd1cmVk
X2lucHV0X2ZyYW1lcmF0ZV8gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CiAgIGludCBtYXhf
dGFyZ2V0X2JpdHJhdGVfa2Jwc18gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CiAgIGJvb2wg
cGVuZGluZ19rZXlmcmFtZV8gUlRDX0dVQVJERURfQlkoY3JpdF9zZWN0Xyk7CisgIHVpbnQzMl90
IGNvdW50ZXJfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8pOwogICBydGM6OkNyaXRpY2FsU2Vj
dGlvbiBjcml0X3NlY3RfOwogCiAgIHVpbnQ4X3QgZW5jb2RlZF9idWZmZXJfWzEwMDAwMF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L2Zha2VfdnA4X2RlY29kZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2RlY29kZXIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE1YmIyMTQ5ZGVh
NGYyZWY2ZWM3OWU5YmIzNThkYjIzOGJiYjJiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhfZGVjb2Rlci5j
YwpAQCAtMCwwICsxLDc3IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRD
IHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0
cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRy
aWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInRl
c3QvZmFrZV92cDhfZGVjb2Rlci5oIgorCisjaW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVy
LmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvdGltZXV0aWxzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworbmFtZXNwYWNlIHRlc3QgeworCituYW1lc3BhY2UgeworLy8gUmVhZCB3aWR0aCBhbmQgaGVp
Z2h0IGZyb20gdGhlIHBheWxvYWQgb2YgdGhlIGZyYW1lIGlmIGl0IGlzIGEga2V5IGZyYW1lIHRo
ZQorLy8gc2FtZSB3YXkgYXMgdGhlIHJlYWwgVlA4IGRlY29kZXIuCisvLyBGYWtlRW5jb2RlciB3
cml0ZXMgd2lkdGgsIGhlaWdodCBhbmQgZnJhbWUgdHlwZS4KK3ZvaWQgUGFyc2VGYWtlVnA4KGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIGludCogd2lkdGgsIGludCogaGVpZ2h0KSB7CisgIGJv
b2wga2V5X2ZyYW1lID0gZGF0YVswXSA9PSAwOworICBpZiAoa2V5X2ZyYW1lKSB7CisgICAgKndp
ZHRoID0gKChkYXRhWzddIDw8IDgpICsgZGF0YVs2XSkgJiAweDNGRkY7CisgICAgKmhlaWdodCA9
ICgoZGF0YVs5XSA8PCA4KSArIGRhdGFbOF0pICYgMHgzRkZGOworICB9Cit9Cit9ICAvLyBuYW1l
c3BhY2UKKworRmFrZVZwOERlY29kZXI6OkZha2VWcDhEZWNvZGVyKCkgOiBjYWxsYmFja18obnVs
bHB0ciksIHdpZHRoXygwKSwgaGVpZ2h0XygwKSB7fQorCitpbnQzMl90IEZha2VWcDhEZWNvZGVy
OjpJbml0RGVjb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNvbmZpZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50MzJfdCBudW1iZXJfb2ZfY29yZXMpIHsKKyAgcmV0dXJuIFdF
QlJUQ19WSURFT19DT0RFQ19PSzsKK30KKworaW50MzJfdCBGYWtlVnA4RGVjb2Rlcjo6RGVjb2Rl
KGNvbnN0IEVuY29kZWRJbWFnZSYgaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBtaXNzaW5nX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHJlbmRlcl90aW1lX21zKSB7CisgIGNvbnN0ZXhw
ciBzaXplX3Qga01pblBheUxvYWRIZWFkZXJMZW5ndGggPSAxMDsKKyAgaWYgKGlucHV0Ll9sZW5n
dGggPCBrTWluUGF5TG9hZEhlYWRlckxlbmd0aCkgeworICAgIHJldHVybiBXRUJSVENfVklERU9f
Q09ERUNfRVJST1I7CisgIH0KKyAgUGFyc2VGYWtlVnA4KGlucHV0Ll9idWZmZXIsICZ3aWR0aF8s
ICZoZWlnaHRfKTsKKworICBWaWRlb0ZyYW1lIGZyYW1lKEk0MjBCdWZmZXI6OkNyZWF0ZSh3aWR0
aF8sIGhlaWdodF8pLAorICAgICAgICAgICAgICAgICAgIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25f
MCwKKyAgICAgICAgICAgICAgICAgICByZW5kZXJfdGltZV9tcyAqIHJ0Yzo6a051bU1pY3Jvc2Vj
c1Blck1pbGxpc2VjKTsKKyAgZnJhbWUuc2V0X3RpbWVzdGFtcChpbnB1dC5UaW1lc3RhbXAoKSk7
CisgIGZyYW1lLnNldF9udHBfdGltZV9tcyhpbnB1dC5udHBfdGltZV9tc18pOworCisgIGNhbGxi
YWNrXy0+RGVjb2RlZChmcmFtZSwgLypkZWNvZGVfdGltZV9tcz0qL2Fic2w6Om51bGxvcHQsCisg
ICAgICAgICAgICAgICAgICAgICAvKnFwPSovYWJzbDo6bnVsbG9wdCk7CisKKyAgcmV0dXJuIFdF
QlJUQ19WSURFT19DT0RFQ19PSzsKK30KKworaW50MzJfdCBGYWtlVnA4RGVjb2Rlcjo6UmVnaXN0
ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKAorICAgIERlY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxs
YmFjaykgeworICBjYWxsYmFja18gPSBjYWxsYmFjazsKKyAgcmV0dXJuIFdFQlJUQ19WSURFT19D
T0RFQ19PSzsKK30KKworaW50MzJfdCBGYWtlVnA4RGVjb2Rlcjo6UmVsZWFzZSgpIHsKKyAgcmV0
dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKK30KKworY29uc3QgY2hhciogRmFrZVZwOERlY29k
ZXI6OmtJbXBsZW1lbnRhdGlvbk5hbWUgPSAiZmFrZV92cDhfZGVjb2RlciI7Citjb25zdCBjaGFy
KiBGYWtlVnA4RGVjb2Rlcjo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3QgeworICByZXR1cm4g
a0ltcGxlbWVudGF0aW9uTmFtZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhfZGVjb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9kZWNvZGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTc0YWY0MDNkNjkyMDQwZDZhNTZkNTQ2YTIzYzA1YTY0YzVhYmEwOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFr
ZV92cDhfZGVjb2Rlci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAy
MDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlCisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwg
cHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVO
VFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBp
biB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLwor
CisjaWZuZGVmIFRFU1RfRkFLRV9WUDhfREVDT0RFUl9IXworI2RlZmluZSBURVNUX0ZBS0VfVlA4
X0RFQ09ERVJfSF8KKworI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlk
ZW9fY29kZWNfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUv
Y2xvY2suaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CisKK2NsYXNz
IEZha2VWcDhEZWNvZGVyIDogcHVibGljIFZpZGVvRGVjb2RlciB7CisgcHVibGljOgorICBGYWtl
VnA4RGVjb2RlcigpOworICB+RmFrZVZwOERlY29kZXIoKSBvdmVycmlkZSB7fQorCisgIGludDMy
X3QgSW5pdERlY29kZShjb25zdCBWaWRlb0NvZGVjKiBjb25maWcsCisgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IG51bWJlcl9vZl9jb3Jlcykgb3ZlcnJpZGU7CisKKyAgaW50MzJfdCBEZWNv
ZGUoY29uc3QgRW5jb2RlZEltYWdlJiBpbnB1dCwKKyAgICAgICAgICAgICAgICAgYm9vbCBtaXNz
aW5nX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNv
ZGVjX3NwZWNpZmljX2luZm8sCisgICAgICAgICAgICAgICAgIGludDY0X3QgcmVuZGVyX3RpbWVf
bXMpIG92ZXJyaWRlOworCisgIGludDMyX3QgUmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNr
KAorICAgICAgRGVjb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKKworICBp
bnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZTsKKworICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlv
bk5hbWUoKSBjb25zdCBvdmVycmlkZTsKKworICBzdGF0aWMgY29uc3QgY2hhcioga0ltcGxlbWVu
dGF0aW9uTmFtZTsKKworIHByaXZhdGU6CisgIERlY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFj
a187CisgIGludCB3aWR0aF87CisgIGludCBoZWlnaHRfOworfTsKKworfSAgLy8gbmFtZXNwYWNl
IHRlc3QKK30gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBURVNUX0ZBS0VfVlA4
X0RFQ09ERVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhfZW5jb2Rlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZmFrZV92cDhfZW5jb2Rlci5jYwppbmRleCA0MDM4
ODM3Nzk4MzE1NjAxYWQ4MTJlY2I2M2VkOWFhZWM1YmM0ZmFjLi45MTgwYmVjMDQ5OTZiNjg4NTgz
ZmVhNjU2N2UxZmEwNDc4Y2ExNGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29kZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVy
LmNjCkBAIC0xMCw4ICsxMCw4IEBACiAKICNpbmNsdWRlICJ0ZXN0L2Zha2VfdnA4X2VuY29kZXIu
aCIKIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUp
Ci0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90
ZW1wb3JhbF9sYXllcnMuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL2NyZWF0ZV92cDhf
dGVtcG9yYWxfbGF5ZXJzLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92cDhfdGVtcG9y
YWxfbGF5ZXJzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRl
b19jb2RlY19pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNs
dWRlL3ZpZGVvX2Vycm9yX2NvZGVzLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rpbmcv
dXRpbGl0eS9zaW11bGNhc3RfdXRpbGl0eS5oIgpAQCAtMjAsNiArMjAsMjYgQEAKICNpbmNsdWRl
ICJydGNfYmFzZS9yYW5kb20uaCIKICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKIAor
bmFtZXNwYWNlIHsKKworLy8gV3JpdGUgd2lkdGggYW5kIGhlaWdodCB0byB0aGUgcGF5bG9hZCB0
aGUgc2FtZSB3YXkgYXMgdGhlIHJlYWwgZW5jb2RlciBkb2VzLgorLy8gSXQgcmVxdWlyZXMgdGhh
dCB8cGF5bG9hZHwgaGFzIGEgc2l6ZSBvZiBhdCBsZWFzdCBrTWluUGF5TG9hZEhlYWRlckxlbmd0
aC4KK3ZvaWQgV3JpdGVGYWtlVnA4KHVuc2lnbmVkIGNoYXIqIHBheWxvYWQsCisgICAgICAgICAg
ICAgICAgICBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgYm9vbCBrZXlfZnJhbWUpIHsKKyAgcGF5bG9hZFswXSA9IGtleV9mcmFtZSA/
IDAgOiAweDAxOworCisgIGlmIChrZXlfZnJhbWUpIHsKKyAgICBwYXlsb2FkWzldID0gKGhlaWdo
dCAmIDB4M0YwMCkgPj4gODsKKyAgICBwYXlsb2FkWzhdID0gKGhlaWdodCAmIDB4MDBGRik7CisK
KyAgICBwYXlsb2FkWzddID0gKHdpZHRoICYgMHgzRjAwKSA+PiA4OworICAgIHBheWxvYWRbNl0g
PSAod2lkdGggJiAweDAwRkYpOworICB9Cit9Cit9ICAvLyBuYW1lc3BhY2UKKwogbmFtZXNwYWNl
IHdlYnJ0YyB7CiAKIG5hbWVzcGFjZSB0ZXN0IHsKQEAgLTYzLDE4ICs4MywxOCBAQCB2b2lkIEZh
a2VWUDhFbmNvZGVyOjpTZXR1cFRlbXBvcmFsTGF5ZXJzKGNvbnN0IFZpZGVvQ29kZWMmIGNvZGVj
KSB7CiAKICAgaW50IG51bV9zdHJlYW1zID0gU2ltdWxjYXN0VXRpbGl0eTo6TnVtYmVyT2ZTaW11
bGNhc3RTdHJlYW1zKGNvZGVjKTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3RyZWFtczsg
KytpKSB7Ci0gICAgVGVtcG9yYWxMYXllcnNUeXBlIHR5cGU7CisgICAgVnA4VGVtcG9yYWxMYXll
cnNUeXBlIHR5cGU7CiAgICAgaW50IG51bV90ZW1wb3JhbF9sYXllcnMgPQogICAgICAgICBTaW11
bGNhc3RVdGlsaXR5OjpOdW1iZXJPZlRlbXBvcmFsTGF5ZXJzKGNvZGVjLCBpKTsKICAgICBpZiAo
U2ltdWxjYXN0VXRpbGl0eTo6SXNDb25mZXJlbmNlTW9kZVNjcmVlbnNoYXJlKGNvZGVjKSAmJiBp
ID09IDApIHsKLSAgICAgIHR5cGUgPSBUZW1wb3JhbExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1p
YzsKKyAgICAgIHR5cGUgPSBWcDhUZW1wb3JhbExheWVyc1R5cGU6OmtCaXRyYXRlRHluYW1pYzsK
ICAgICAgIC8vIExlZ2FjeSBzY3JlZW5zaGFyZSBsYXllcnMgc3VwcG9ydHMgbWF4IDIgbGF5ZXJz
LgogICAgICAgbnVtX3RlbXBvcmFsX2xheWVycyA9IHN0ZDo6bWF4PGludD4oMiwgbnVtX3RlbXBv
cmFsX2xheWVycyk7CiAgICAgfSBlbHNlIHsKLSAgICAgIHR5cGUgPSBUZW1wb3JhbExheWVyc1R5
cGU6OmtGaXhlZFBhdHRlcm47CisgICAgICB0eXBlID0gVnA4VGVtcG9yYWxMYXllcnNUeXBlOjpr
Rml4ZWRQYXR0ZXJuOwogICAgIH0KICAgICB0ZW1wb3JhbF9sYXllcnNfLmVtcGxhY2VfYmFjaygK
LSAgICAgICAgVGVtcG9yYWxMYXllcnM6OkNyZWF0ZVRlbXBvcmFsTGF5ZXJzKHR5cGUsIG51bV90
ZW1wb3JhbF9sYXllcnMpKTsKKyAgICAgICAgQ3JlYXRlVnA4VGVtcG9yYWxMYXllcnModHlwZSwg
bnVtX3RlbXBvcmFsX2xheWVycykpOwogICB9CiB9CiAKQEAgLTg1LDcgKzEwNSw2IEBAIHZvaWQg
RmFrZVZQOEVuY29kZXI6OlBvcHVsYXRlQ29kZWNTcGVjaWZpYyhDb2RlY1NwZWNpZmljSW5mbyog
Y29kZWNfc3BlY2lmaWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgdGltZXN0YW1wKSB7CiAgIFJUQ19EQ0hFQ0tfQ0FMTEVEX1NFUVVFTlRJQUxM
WSgmc2VxdWVuY2VfY2hlY2tlcl8pOwogICBjb2RlY19zcGVjaWZpYy0+Y29kZWNUeXBlID0ga1Zp
ZGVvQ29kZWNWUDg7Ci0gIGNvZGVjX3NwZWNpZmljLT5jb2RlY19uYW1lID0gSW1wbGVtZW50YXRp
b25OYW1lKCk7CiAgIENvZGVjU3BlY2lmaWNJbmZvVlA4KiB2cDhJbmZvID0gJihjb2RlY19zcGVj
aWZpYy0+Y29kZWNTcGVjaWZpYy5WUDgpOwogICB2cDhJbmZvLT5rZXlJZHggPSBrTm9LZXlJZHg7
CiAgIHZwOEluZm8tPm5vblJlZmVyZW5jZSA9IGZhbHNlOwpAQCAtMTA1LDkgKzEyNCwyMCBAQCBF
bmNvZGVkSW1hZ2VDYWxsYmFjazo6UmVzdWx0IEZha2VWUDhFbmNvZGVyOjpPbkVuY29kZWRJbWFn
ZSgKICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRfaW1hZ2UuX2ZyYW1lVHlwZSwgc3Ry
ZWFtX2lkeCwKICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRfaW1hZ2UuVGltZXN0YW1w
KCkpOwogCisgIC8vIFdyaXRlIHdpZHRoIGFuZCBoZWlnaHQgdG8gdGhlIHBheWxvYWQgdGhlIHNh
bWUgd2F5IGFzIHRoZSByZWFsIGVuY29kZXIKKyAgLy8gZG9lcy4KKyAgV3JpdGVGYWtlVnA4KGVu
Y29kZWRfaW1hZ2UuX2J1ZmZlciwgZW5jb2RlZF9pbWFnZS5fZW5jb2RlZFdpZHRoLAorICAgICAg
ICAgICAgICAgZW5jb2RlZF9pbWFnZS5fZW5jb2RlZEhlaWdodCwKKyAgICAgICAgICAgICAgIGVu
Y29kZWRfaW1hZ2UuX2ZyYW1lVHlwZSA9PSBrVmlkZW9GcmFtZUtleSk7CiAgIHJldHVybiBjYWxs
YmFja18tPk9uRW5jb2RlZEltYWdlKGVuY29kZWRfaW1hZ2UsICZvdmVycmlkZWRfc3BlY2lmaWNf
aW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRzKTsKIH0K
IAorVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBGYWtlVlA4RW5jb2Rlcjo6R2V0RW5jb2Rlcklu
Zm8oKSBjb25zdCB7CisgIEVuY29kZXJJbmZvIGluZm87CisgIGluZm8uaW1wbGVtZW50YXRpb25f
bmFtZSA9ICJGYWtlVnA4RW5jb2RlciI7CisgIHJldHVybiBpbmZvOworfQorCiB9ICAvLyBuYW1l
c3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNvZGVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4
X2VuY29kZXIuaAppbmRleCA3NTE4ZTNhMmRiNWQzNTg0MDVmZmMxNmM4NmE3M2QwMjU3MWM4Y2U0
Li5hNGQ2M2E5YWUzMGE2NzAxY2EwYmIyYTZlYjM5YzQ5NWYwN2IxMWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2Vu
Y29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2Zha2VfdnA4X2VuY29kZXIuaApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9j
b2RlY3MvdnA4L2luY2x1ZGUvdnA4X3RlbXBvcmFsX2xheWVycy5oIgorI2luY2x1ZGUgImFwaS92
aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1ZGUgInRlc3QvZmFrZV9l
bmNvZGVyLmgiCiAKICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKQEAgLTM3
LDEyICszNywxMiBAQCBjbGFzcyBGYWtlVlA4RW5jb2RlciA6IHB1YmxpYyBGYWtlRW5jb2Rlciwg
cHVibGljIEVuY29kZWRJbWFnZUNhbGxiYWNrIHsKIAogICBpbnQzMl90IFJlbGVhc2UoKSBvdmVy
cmlkZTsKIAotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiRmFrZVZwOEVuY29kZXIiOyB9Ci0KICAgUmVzdWx0IE9uRW5jb2RlZEltYWdl
KGNvbnN0IEVuY29kZWRJbWFnZSYgZW5jb2RlZEltYWdlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ29kZWNTcGVjaWZpY0luZm8qIGNvZGVjU3BlY2lmaWNJbmZvLAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUlRQRnJhZ21lbnRhdGlvbkhlYWRlciogZnJhZ21lbnRzKSBv
dmVycmlkZTsKIAorICBFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0IG92ZXJyaWRl
OworCiAgcHJpdmF0ZToKICAgdm9pZCBTZXR1cFRlbXBvcmFsTGF5ZXJzKGNvbnN0IFZpZGVvQ29k
ZWMmIGNvZGVjKTsKICAgdm9pZCBQb3B1bGF0ZUNvZGVjU3BlY2lmaWMoQ29kZWNTcGVjaWZpY0lu
Zm8qIGNvZGVjX3NwZWNpZmljLApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBGYWtlVlA4RW5jb2Rl
ciA6IHB1YmxpYyBGYWtlRW5jb2RlciwgcHVibGljIEVuY29kZWRJbWFnZUNhbGxiYWNrIHsKICAg
cnRjOjpTZXF1ZW5jZWRUYXNrQ2hlY2tlciBzZXF1ZW5jZV9jaGVja2VyXzsKICAgRW5jb2RlZElt
YWdlQ2FsbGJhY2sqIGNhbGxiYWNrXyBSVENfR1VBUkRFRF9CWShzZXF1ZW5jZV9jaGVja2VyXyk7
CiAKLSAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRlbXBvcmFsTGF5ZXJzPj4gdGVtcG9y
YWxfbGF5ZXJzXworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VnA4VGVtcG9yYWxMYXll
cnM+PiB0ZW1wb3JhbF9sYXllcnNfCiAgICAgICBSVENfR1VBUkRFRF9CWShzZXF1ZW5jZV9jaGVj
a2VyXyk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29kZXJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Zha2VfdnA4X2VuY29kZXJfdW5p
dHRlc3QuY2MKaW5kZXggYzc5YmEwYzU1MTVjNWZkNjU0MDRiZGEwNThjZWUwYzgyZGFlYjQzOC4u
NGU1NzZmZTljOWMyNTM2NGYxNDg5YzlmMTk5ODg1ZmFhMjg5OTE1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mYWtlX3ZwOF9lbmNv
ZGVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvZmFrZV92cDhfZW5jb2Rlcl91bml0dGVzdC5jYwpAQCAtMTQsMTEgKzE0LDEx
IEBACiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYXBpL3Rlc3Qv
Y3JlYXRlX3NpbXVsY2FzdF90ZXN0X2ZpeHR1cmUuaCIKICNpbmNsdWRlICJhcGkvdGVzdC9zaW11
bGNhc3RfdGVzdF9maXh0dXJlLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25f
dmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rp
b25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvdXRpbGl0eS9zaW11bGNhc3RfdGVzdF9maXh0dXJlX2ltcGwuaCIKLSNpbmNsdWRlICJ0ZXN0
L2Zha2VfZGVjb2Rlci5oIgorI2luY2x1ZGUgInRlc3QvZmFrZV92cDhfZGVjb2Rlci5oIgogI2lu
Y2x1ZGUgInRlc3QvZmFrZV92cDhfZW5jb2Rlci5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25f
dmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19l
bmNvZGVyX2ZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7
CkBAIC0zMiw3ICszMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaW11bGNhc3RUZXN0Rml4dHVyZT4g
Q3JlYXRlU3BlY2lmaWNTaW11bGNhc3RUZXN0Rml4dHVyZSgpIHsKICAgICAgIH0pOwogICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyRmFjdG9yeT4gZGVjb2Rlcl9mYWN0b3J5ID0KICAgICAg
IGFic2w6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFjdG9yeT4oCi0gICAgICAg
ICAgW10oKSB7IHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlRGVjb2Rlcj4oKTsgfSk7Cisg
ICAgICAgICAgW10oKSB7IHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlVnA4RGVjb2Rlcj4o
KTsgfSk7CiAgIHJldHVybiBDcmVhdGVTaW11bGNhc3RUZXN0Rml4dHVyZShzdGQ6Om1vdmUoZW5j
b2Rlcl9mYWN0b3J5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bW92ZShkZWNvZGVyX2ZhY3RvcnkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2RwVmlkZW9Gb3JtYXQoIlZQOCIpKTsKQEAgLTk5LDUgKzk5LDEwIEBAIFRFU1QoVGVzdEZh
a2VWcDhDb2RlYywgVGVzdFNwYXRpb1RlbXBvcmFsTGF5ZXJzMzMzUGF0dGVybkVuY29kZXIpIHsK
ICAgZml4dHVyZS0+VGVzdFNwYXRpb1RlbXBvcmFsTGF5ZXJzMzMzUGF0dGVybkVuY29kZXIoKTsK
IH0KIAorVEVTVChUZXN0RmFrZVZwOENvZGVjLCBUZXN0RGVjb2RlV2lkdGhIZWlnaHRTZXQpIHsK
KyAgYXV0byBmaXh0dXJlID0gQ3JlYXRlU3BlY2lmaWNTaW11bGNhc3RUZXN0Rml4dHVyZSgpOwor
ICBmaXh0dXJlLT5UZXN0RGVjb2RlV2lkdGhIZWlnaHRTZXQoKTsKK30KKwogfSAgLy8gbmFtZXNw
YWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnJhbWVfZ2VuZXJhdG9yLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mcmFtZV9nZW5l
cmF0b3IuY2MKaW5kZXggYWNkNjNmOTMxMjIwYjU4ODM2YjFmNWNiYjAzZTZkY2Y0ZGE2YjA2MC4u
ZjZmZDI4NWMxYTEzZWFlZWRhZjA4NTNlMzA4MGRkMjJhZjU1NTE1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mcmFtZV9nZW5lcmF0
b3IuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9mcmFtZV9nZW5lcmF0b3IuY2MKQEAgLTM5MCwxMSArMzkwLDExIEBAIGNsYXNzIFNjcm9sbGlu
Z0ltYWdlRnJhbWVHZW5lcmF0b3IgOiBwdWJsaWMgRnJhbWVHZW5lcmF0b3IgewogICAgICAgICAg
ICAgICAgICAgIChwaXhlbHNfc2Nyb2xsZWRfeCAvIDIpOwogCiAgICAgY3VycmVudF9mcmFtZV8g
PSB3ZWJydGM6OlZpZGVvRnJhbWUoCi0gICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8
d2VicnRjOjpXcmFwcGVkSTQyMEJ1ZmZlcj4oCi0gICAgICAgICAgICB0YXJnZXRfd2lkdGhfLCB0
YXJnZXRfaGVpZ2h0XywgJmk0MjBfYnVmZmVyLT5EYXRhWSgpW29mZnNldF95XSwKLSAgICAgICAg
ICAgIGk0MjBfYnVmZmVyLT5TdHJpZGVZKCksICZpNDIwX2J1ZmZlci0+RGF0YVUoKVtvZmZzZXRf
dV0sCi0gICAgICAgICAgICBpNDIwX2J1ZmZlci0+U3RyaWRlVSgpLCAmaTQyMF9idWZmZXItPkRh
dGFWKClbb2Zmc2V0X3ZdLAotICAgICAgICAgICAgaTQyMF9idWZmZXItPlN0cmlkZVYoKSwgS2Vl
cFJlZlVudGlsRG9uZShpNDIwX2J1ZmZlcikpLAorICAgICAgICBXcmFwSTQyMEJ1ZmZlcih0YXJn
ZXRfd2lkdGhfLCB0YXJnZXRfaGVpZ2h0XywKKyAgICAgICAgICAgICAgICAgICAgICAgJmk0MjBf
YnVmZmVyLT5EYXRhWSgpW29mZnNldF95XSwgaTQyMF9idWZmZXItPlN0cmlkZVkoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgJmk0MjBfYnVmZmVyLT5EYXRhVSgpW29mZnNldF91XSwgaTQyMF9i
dWZmZXItPlN0cmlkZVUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgJmk0MjBfYnVmZmVyLT5E
YXRhVigpW29mZnNldF92XSwgaTQyMF9idWZmZXItPlN0cmlkZVYoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgS2VlcFJlZlVudGlsRG9uZShpNDIwX2J1ZmZlcikpLAogICAgICAgICBrVmlkZW9S
b3RhdGlvbl8wLCAwKTsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdW5jdGlv
bl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTg0Zjg1MzRiZTAwYmI1OTAxZTlhYjc5OTQyMzAxOGYzMDM5YmUwMS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1bmN0aW9uX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKGMpIDIwMTgg
VGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4g
IEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotICogIGJlIGZvdW5kIGluIHRo
ZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICovCi0KLSNp
Zm5kZWYgVEVTVF9GVU5DVElPTl9WSURFT19ERUNPREVSX0ZBQ1RPUllfSF8KLSNkZWZpbmUgVEVT
VF9GVU5DVElPTl9WSURFT19ERUNPREVSX0ZBQ1RPUllfSF8KLQotI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVj
dG9yPgotCi0jaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBfdmlkZW9fZm9ybWF0LmgiCi0j
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKLSNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1uYW1lc3BhY2Ug
dGVzdCB7Ci0KLS8vIEEgZGVjb2RlciBmYWN0b3J5IHByb2R1Y2luZyBkZWNvZGVycyBieSBjYWxs
aW5nIGEgc3VwcGxpZWQgY3JlYXRlIGZ1bmN0aW9uLgotY2xhc3MgRnVuY3Rpb25WaWRlb0RlY29k
ZXJGYWN0b3J5IGZpbmFsIDogcHVibGljIFZpZGVvRGVjb2RlckZhY3RvcnkgewotIHB1YmxpYzoK
LSAgZXhwbGljaXQgRnVuY3Rpb25WaWRlb0RlY29kZXJGYWN0b3J5KAotICAgICAgc3RkOjpmdW5j
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyPigpPiBjcmVhdGUpCi0gICAgICA6IGNy
ZWF0ZV8oW2NyZWF0ZV0oY29uc3QgU2RwVmlkZW9Gb3JtYXQmKSB7IHJldHVybiBjcmVhdGUoKTsg
fSkge30KLSAgZXhwbGljaXQgRnVuY3Rpb25WaWRlb0RlY29kZXJGYWN0b3J5KAotICAgICAgc3Rk
OjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVyPihjb25zdCBTZHBWaWRlb0Zv
cm1hdCYpPgotICAgICAgICAgIGNyZWF0ZSkKLSAgICAgIDogY3JlYXRlXyhzdGQ6Om1vdmUoY3Jl
YXRlKSkge30KLQotICAvLyBVbnVzZWQgYnkgdGVzdHMuCi0gIHN0ZDo6dmVjdG9yPFNkcFZpZGVv
Rm9ybWF0PiBHZXRTdXBwb3J0ZWRGb3JtYXRzKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIFJUQ19O
T1RSRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHt9OwotICB9Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvRGVjb2Rlcj4gQ3JlYXRlVmlkZW9EZWNvZGVyKAotICAgICAgY29uc3QgU2RwVmlkZW9Gb3Jt
YXQmIGZvcm1hdCkgb3ZlcnJpZGUgewotICAgIHJldHVybiBjcmVhdGVfKGZvcm1hdCk7Ci0gIH0K
LQotIHByaXZhdGU6Ci0gIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFZpZGVv
RGVjb2Rlcj4oY29uc3QgU2RwVmlkZW9Gb3JtYXQmKT4KLSAgICAgIGNyZWF0ZV87Ci19OwotCi19
ICAvLyBuYW1lc3BhY2UgdGVzdAotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8v
IFRFU1RfRlVOQ1RJT05fVklERU9fREVDT0RFUl9GQUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1bmN0aW9uX3ZpZGVv
X2VuY29kZXJfZmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNTY3Mzk3ZjZjMGM2OTc5OTRjNjBiNTE0OWIxZDZkYzM3YWE0MGQw
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1bmN0aW9uX3ZpZGVvX2Vu
Y29kZXJfZmFjdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFs
IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCi0gKiAgaW4g
dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQot
ICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJj
ZSB0cmVlLgotICovCi0KLSNpZm5kZWYgVEVTVF9GVU5DVElPTl9WSURFT19FTkNPREVSX0ZBQ1RP
UllfSF8KLSNkZWZpbmUgVEVTVF9GVU5DVElPTl9WSURFT19FTkNPREVSX0ZBQ1RPUllfSF8KLQot
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHV0aWxp
dHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9zZHBf
dmlkZW9fZm9ybWF0LmgiCi0jaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVy
X2ZhY3RvcnkuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKLQotbmFtZXNwYWNlIHdl
YnJ0YyB7Ci1uYW1lc3BhY2UgdGVzdCB7Ci0KLS8vIEFuIGVuY29kZXIgZmFjdG9yeSBwcm9kdWNp
bmcgZW5jb2RlcnMgYnkgY2FsbGluZyBhIHN1cHBsaWVkIGNyZWF0ZQotLy8gZnVuY3Rpb24uCi1j
bGFzcyBGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgZmluYWwgOiBwdWJsaWMgVmlkZW9FbmNv
ZGVyRmFjdG9yeSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBGdW5jdGlvblZpZGVvRW5jb2RlckZh
Y3RvcnkoCi0gICAgICBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+
KCk+IGNyZWF0ZSkKLSAgICAgIDogY3JlYXRlXyhbY3JlYXRlXShjb25zdCBTZHBWaWRlb0Zvcm1h
dCYpIHsgcmV0dXJuIGNyZWF0ZSgpOyB9KSB7fQotICBleHBsaWNpdCBGdW5jdGlvblZpZGVvRW5j
b2RlckZhY3RvcnkoCi0gICAgICBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Vu
Y29kZXI+KGNvbnN0IFNkcFZpZGVvRm9ybWF0Jik+Ci0gICAgICAgICAgY3JlYXRlKQotICAgICAg
OiBjcmVhdGVfKHN0ZDo6bW92ZShjcmVhdGUpKSB7fQotCi0gIC8vIFVudXNlZCBieSB0ZXN0cy4K
LSAgc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IEdldFN1cHBvcnRlZEZvcm1hdHMoKSBjb25z
dCBvdmVycmlkZSB7Ci0gICAgUlRDX05PVFJFQUNIRUQoKTsKLSAgICByZXR1cm4ge307Ci0gIH0K
LQotICBDb2RlY0luZm8gUXVlcnlWaWRlb0VuY29kZXIoCi0gICAgICBjb25zdCBTZHBWaWRlb0Zv
cm1hdCYgLyogZm9ybWF0ICovKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgQ29kZWNJbmZvIGNvZGVj
X2luZm87Ci0gICAgY29kZWNfaW5mby5pc19oYXJkd2FyZV9hY2NlbGVyYXRlZCA9IGZhbHNlOwot
ICAgIGNvZGVjX2luZm8uaGFzX2ludGVybmFsX3NvdXJjZSA9IGZhbHNlOwotICAgIHJldHVybiBj
b2RlY19pbmZvOwotICB9Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gQ3JlYXRl
VmlkZW9FbmNvZGVyKAotICAgICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgb3ZlcnJp
ZGUgewotICAgIHJldHVybiBjcmVhdGVfKGZvcm1hdCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4oY29uc3QgU2Rw
VmlkZW9Gb3JtYXQmKT4KLSAgICAgIGNyZWF0ZV87Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgdGVz
dAotfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwotCi0jZW5kaWYgIC8vIFRFU1RfRlVOQ1RJT05fVklE
RU9fRU5DT0RFUl9GQUNUT1JZX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvQlVJTEQuZ24KaW5kZXgg
Y2NjMTVhNjEwMDVlOWQzYWU4NjJmMDBjNjJkMmQ1YTY4OWYzYTQ5Ny4uNDNkZTVmOTk4Y2VmNjEw
ODAwMDQxOGQwZTdmYzVjOTUwNGRhZjZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL0JVSUxELmduCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9CVUlMRC5n
bgpAQCAtNiw5ICs2LDkgQEAKICMgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRp
bmcgcHJvamVjdCBhdXRob3JzIG1heQogIyBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGlu
IHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KIAotaW1wb3J0KCIuLi8uLi93ZWJydGMuZ25p
IikKIGltcG9ydCgiLy9idWlsZC9jb25maWcvZmVhdHVyZXMuZ25pIikKIGltcG9ydCgiLy90ZXN0
aW5nL2xpYmZ1enplci9mdXp6ZXJfdGVzdC5nbmkiKQoraW1wb3J0KCIuLi8uLi93ZWJydGMuZ25p
IikKIAogcnRjX3N0YXRpY19saWJyYXJ5KCJ3ZWJydGNfZnV6emVyX21haW4iKSB7CiAgIHNvdXJj
ZXMgPSBbCkBAIC0xMjUsNyArMTI1LDYgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJmb3J3YXJkX2Vy
cm9yX2NvcnJlY3Rpb25fZnV6emVyIikgewogICAgICIuLi8uLi9tb2R1bGVzL3J0cF9ydGNwOnJ0
cF9ydGNwX2Zvcm1hdCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwK
ICAgXQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49NTAwMCIgXQogfQogCiB3ZWJy
dGNfZnV6emVyX3Rlc3QoImZsZXhmZWNfaGVhZGVyX3JlYWRlcl9mdXp6ZXIiKSB7CkBAIC0xNDgs
NyArMTQ3LDYgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJmbGV4ZmVjX3NlbmRlcl9mdXp6ZXIiKSB7
CiAgICAgIi4uLy4uL21vZHVsZXMvcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAiLi4v
Li4vc3lzdGVtX3dyYXBwZXJzIiwKICAgXQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9s
ZW49MjAwIiBdCiB9CiAKIHdlYnJ0Y19mdXp6ZXJfdGVzdCgidWxwZmVjX2hlYWRlcl9yZWFkZXJf
ZnV6emVyIikgewpAQCAtMTg2LDcgKzE4NCw2IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgidWxwZmVj
X3JlY2VpdmVyX2Z1enplciIpIHsKICAgICAiLi4vLi4vbW9kdWxlcy9ydHBfcnRjcDpydHBfcnRj
cF9mb3JtYXQiLAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgIF0K
LSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJtYXhfbGVuPTIwMDAiIF0KIH0KIAogd2VicnRjX2Z1
enplcl90ZXN0KCJmbGV4ZmVjX3JlY2VpdmVyX2Z1enplciIpIHsKQEAgLTE5OCw3ICsxOTUsNiBA
QCB3ZWJydGNfZnV6emVyX3Rlc3QoImZsZXhmZWNfcmVjZWl2ZXJfZnV6emVyIikgewogICAgICIu
Li8uLi9tb2R1bGVzL3J0cF9ydGNwOnJ0cF9ydGNwX2Zvcm1hdCIsCiAgICAgIi4uLy4uL3J0Y19i
YXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgXQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1h
eF9sZW49MjAwMCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoInBhY2tldF9idWZmZXJfZnV6
emVyIikgewpAQCAtMjA5LDcgKzIwNSw2IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgicGFja2V0X2J1
ZmZlcl9mdXp6ZXIiKSB7CiAgICAgIi4uLy4uL21vZHVsZXMvdmlkZW9fY29kaW5nLyIsCiAgICAg
Ii4uLy4uL3N5c3RlbV93cmFwcGVycyIsCiAgIF0KLSAgbGliZnV6emVyX29wdGlvbnMgPSBbICJt
YXhfbGVuPTIwMDAwMCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoInJ0Y3BfcmVjZWl2ZXJf
ZnV6emVyIikgewpAQCAtMjgzLDggKzI3OCw2IEBAIHdlYnJ0Y19mdXp6ZXJfdGVzdCgiYXVkaW9f
ZGVjb2Rlcl9pbGJjX2Z1enplciIpIHsKICAgICAiOmF1ZGlvX2RlY29kZXJfZnV6emVyIiwKICAg
ICAiLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aWxiYyIsCiAgIF0KLQotICBsaWJmdXp6ZXJf
b3B0aW9ucyA9IFsgIm1heF9sZW49MTAwMDAiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJh
dWRpb19kZWNvZGVyX2lzYWNfZnV6emVyIikgewpAQCAtMjk1LDggKzI4OCw2IEBAIHdlYnJ0Y19m
dXp6ZXJfdGVzdCgiYXVkaW9fZGVjb2Rlcl9pc2FjX2Z1enplciIpIHsKICAgICAiOmF1ZGlvX2Rl
Y29kZXJfZnV6emVyIiwKICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6aXNhYyIsCiAg
IF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49MjAwMDAiIF0KIH0KIAogd2Vi
cnRjX2Z1enplcl90ZXN0KCJhdWRpb19kZWNvZGVyX2lzYWNfaW5jb21pbmdfcGFja2V0X2Z1enpl
ciIpIHsKQEAgLTMwNyw4ICsyOTgsNiBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoImF1ZGlvX2RlY29k
ZXJfaXNhY19pbmNvbWluZ19wYWNrZXRfZnV6emVyIikgewogICAgICI6YXVkaW9fZGVjb2Rlcl9m
dXp6ZXIiLAogICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzppc2FjIiwKICAgXQotCi0g
IGxpYmZ1enplcl9vcHRpb25zID0gWyAibWF4X2xlbj0yMDAwMCIgXQogfQogCiB3ZWJydGNfZnV6
emVyX3Rlc3QoImF1ZGlvX2RlY29kZXJfaXNhY2ZpeF9mdXp6ZXIiKSB7CkBAIC0zMTksOCArMzA4
LDYgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJhdWRpb19kZWNvZGVyX2lzYWNmaXhfZnV6emVyIikg
ewogICAgICI6YXVkaW9fZGVjb2Rlcl9mdXp6ZXIiLAogICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlv
X2NvZGluZzppc2FjX2ZpeCIsCiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9s
ZW49MjAwMDAiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJhdWRpb19kZWNvZGVyX29wdXNf
ZnV6emVyIikgewpAQCAtMzc3LDEwICszNjQsNyBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoIm5ldGVx
X3J0cF9mdXp6ZXIiKSB7CiAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOnBjbTE2YiIs
CiAgICAgIi4uLy4uL21vZHVsZXMvcnRwX3J0Y3A6cnRwX3J0Y3BfZm9ybWF0IiwKICAgICAiLi4v
Li4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICIuLi8uLi9ydGNfYmFzZTpydGNf
YmFzZV90ZXN0c191dGlscyIsCiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9s
ZW49MTAwMDAwIiBdCiB9CiAKIHdlYnJ0Y19mdXp6ZXJfdGVzdCgibmV0ZXFfc2lnbmFsX2Z1enpl
ciIpIHsKQEAgLTM5NCwxMCArMzc4LDcgQEAgd2VicnRjX2Z1enplcl90ZXN0KCJuZXRlcV9zaWdu
YWxfZnV6emVyIikgewogICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX2NvZGluZzpuZXRlcV90b29s
c19taW5pbWFsIiwKICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19jb2Rpbmc6cGNtMTZiIiwKICAg
ICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jhc2VfYXBwcm92ZWQiLAotICAgICIuLi8uLi9ydGNfYmFz
ZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgIF0KLQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsg
Im1heF9sZW49MTAwMDAwIiBdCiB9CiAKIHdlYnJ0Y19mdXp6ZXJfdGVzdCgicmVzaWR1YWxfZWNo
b19kZXRlY3Rvcl9mdXp6ZXIiKSB7CkBAIC00MjAsNyArNDAxLDYgQEAgd2VicnRjX2Z1enplcl90
ZXN0KCJzZHBfcGFyc2VyX2Z1enplciIpIHsKICAgICAiLi4vLi4vcGM6bGliamluZ2xlX3BlZXJj
b25uZWN0aW9uIiwKICAgXQogICBzZWVkX2NvcnB1cyA9ICJjb3Jwb3JhL3NkcC1jb3JwdXMiCi0g
IGxpYmZ1enplcl9vcHRpb25zID0gWyAibWF4X2xlbj0xNjM4NCIgXQogfQogCiB3ZWJydGNfZnV6
emVyX3Rlc3QoInN0dW5fcGFyc2VyX2Z1enplciIpIHsKQEAgLTQ4Nyw2ICs0NjcsNyBAQCBydGNf
c3RhdGljX2xpYnJhcnkoImF1ZGlvX3Byb2Nlc3NpbmdfZnV6emVyX2hlbHBlciIpIHsKICAgICAi
OmZ1enpfZGF0YV9oZWxwZXIiLAogICAgICIuLi8uLi9hcGkvYXVkaW86YXVkaW9fZnJhbWVfYXBp
IiwKICAgICAiLi4vLi4vbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nIiwKKyAgICAiLi4vLi4vbW9k
dWxlcy9hdWRpb19wcm9jZXNzaW5nOmFwaSIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOmNoZWNrcyIs
CiAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAiLy90aGlyZF9w
YXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwiLApAQCAtNTAxLDEwICs0ODIsMTMg
QEAgd2VicnRjX2Z1enplcl90ZXN0KCJhdWRpb19wcm9jZXNzaW5nX2Z1enplciIpIHsKICAgICAi
OmF1ZGlvX3Byb2Nlc3NpbmdfZnV6emVyX2hlbHBlciIsCiAgICAgIi4uLy4uL2FwaS9hdWRpbzph
ZWMzX2ZhY3RvcnkiLAogICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmciLAorICAg
ICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Npbmc6YXBpIiwKICAgICAiLi4vLi4vbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL2FlYzMiLAotICAgICIuLi8uLi9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvYWVjX2R1bXA6bW9ja19hZWNfZHVtcCIsCisgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9f
cHJvY2Vzc2luZy9hZWNfZHVtcCIsCisgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2lu
Zy9hZWNfZHVtcDphZWNfZHVtcF9pbXBsIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6cHRyX3V0aWwi
LAogICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCisgICAgIi4uLy4uL3J0
Y19iYXNlOnJ0Y190YXNrX3F1ZXVlIiwKICAgICAiLi4vLi4vcnRjX2Jhc2U6c2FmZV9taW5tYXgi
LAogICAgICIuLi8uLi9zeXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICIvL3RoaXJk
X3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9tZW1vcnkiLApAQCAtNTE5LDEzICs1MDMsMTMgQEAgd2Vi
cnRjX2Z1enplcl90ZXN0KCJhZ2NfZnV6emVyIikgewogICBkZXBzID0gWwogICAgICI6ZnV6el9k
YXRhX2hlbHBlciIsCiAgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZyIsCisgICAg
Ii4uLy4uL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZzphcGkiLAogICAgICIuLi8uLi9ydGNfYmFz
ZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwK
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQogCiAgIHNl
ZWRfY29ycHVzID0gImNvcnBvcmEvYWdjLWNvcnB1cyIKLSAgbGliZnV6emVyX29wdGlvbnMgPSBb
ICJtYXhfbGVuPTIwMDAwMCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3QoImNvbWZvcnRfbm9p
c2VfZGVjb2Rlcl9mdXp6ZXIiKSB7CkBAIC01MzQsMTEgKzUxOCw5IEBAIHdlYnJ0Y19mdXp6ZXJf
dGVzdCgiY29tZm9ydF9ub2lzZV9kZWNvZGVyX2Z1enplciIpIHsKICAgXQogICBkZXBzID0gWwog
ICAgICIuLi8uLi9hcGk6YXJyYXlfdmlldyIsCi0gICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fY29k
aW5nOmNuZyIsCisgICAgIi4uLy4uL21vZHVsZXMvYXVkaW9fY29kaW5nOndlYnJ0Y19jbmciLAog
ICAgICIuLi8uLi9ydGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCiAgIF0KLQotICBsaWJmdXp6
ZXJfb3B0aW9ucyA9IFsgIm1heF9sZW49NTAwMCIgXQogfQogCiB3ZWJydGNfZnV6emVyX3Rlc3Qo
InJ0cF9mcmFtZV9yZWZlcmVuY2VfZmluZGVyX2Z1enplciIpIHsKQEAgLTU1MSw3ICs1MzMsNiBA
QCB3ZWJydGNfZnV6emVyX3Rlc3QoInJ0cF9mcmFtZV9yZWZlcmVuY2VfZmluZGVyX2Z1enplciIp
IHsKICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKICAgICAiLy90aGlyZF9wYXJ0eS9hYnNl
aWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgXQotICBsaWJmdXp6ZXJfb3B0aW9ucyA9IFsgIm1heF9s
ZW49MjAwMDAiIF0KIH0KIAogd2VicnRjX2Z1enplcl90ZXN0KCJmcmFtZV9idWZmZXIyX2Z1enpl
ciIpIHsKQEAgLTU2Miw1ICs1NDMsNCBAQCB3ZWJydGNfZnV6emVyX3Rlc3QoImZyYW1lX2J1ZmZl
cjJfZnV6emVyIikgewogICAgICIuLi8uLi9tb2R1bGVzL3ZpZGVvX2NvZGluZy8iLAogICAgICIu
Li8uLi9zeXN0ZW1fd3JhcHBlcnM6c3lzdGVtX3dyYXBwZXJzIiwKICAgXQotICBsaWJmdXp6ZXJf
b3B0aW9ucyA9IFsgIm1heF9sZW49MTAwMDAiIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hZ2NfZnV6emVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJz
L2FnY19mdXp6ZXIuY2MKaW5kZXggNWJkOTIxZTc0ZGFlM2I5OTg1OWNjZjUyMjE0Y2MxMWZhYmEw
OWY0MC4uZjJjOTA0ODBjODM1ZWFkZWUzZGIyMjg5MjIyYTVjY2FkZWI5OWU4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJz
L2FnY19mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mdXp6ZXJzL2FnY19mdXp6ZXIuY2MKQEAgLTEwOSw2ICsxMDksOSBAQCB2b2lk
IEZ1enpHYWluQ29udHJvbGxlcih0ZXN0OjpGdXp6RGF0YUhlbHBlciogZnV6el9kYXRhLCBHYWlu
Q29udHJvbEltcGwqIGdjaSkgewogfSAgLy8gbmFtZXNwYWNlCiAKIHZvaWQgRnV6ek9uZUlucHV0
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGlmIChzaXplID4gMjAwMDAw
KSB7CisgICAgcmV0dXJuOworICB9CiAgIHRlc3Q6OkZ1enpEYXRhSGVscGVyIGZ1enpfZGF0YShy
dGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PihkYXRhLCBzaXplKSk7CiAgIHJ0Yzo6Q3JpdGlj
YWxTZWN0aW9uIGNyaXRfY2FwdHVyZTsKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF9yZW5k
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rlcl9pbGJjX2Z1enplci5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVy
X2lsYmNfZnV6emVyLmNjCmluZGV4IGE2ODcyNWQ2YWFjZDE2MmUyYTJmYjQwZjY5YTExMTBmYzc0
MDI3YjMuLjg1NDg2NDVjNjNmOWI3NjdhNTk1MmI3NjAxY2IyYzBmMWMzZGFiZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVy
cy9hdWRpb19kZWNvZGVyX2lsYmNfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lsYmNfZnV6
emVyLmNjCkBAIC0xMyw2ICsxMyw5IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogdm9pZCBGdXp6
T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUg
PiAxMDAwMCkgeworICAgIHJldHVybjsKKyAgfQogICBBdWRpb0RlY29kZXJJbGJjSW1wbCBkZWM7
CiAgIHN0YXRpYyBjb25zdCBpbnQga1NhbXBsZVJhdGVIeiA9IDgwMDA7CiAgIHN0YXRpYyBjb25z
dCBzaXplX3Qga0FsbG9jYXRlZE91cHV0U2l6ZVNhbXBsZXMgPSBrU2FtcGxlUmF0ZUh6IC8gMTA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lz
YWNfZnV6emVyLmNjCmluZGV4IGU3OTk5NmUwNWIyOGEzNGJmMTFkMWI4OTY5NzQwNmI0NmQxMjBl
NzAuLmI1NzkwODM5NTZjNmJjZTA2NGJlNGY5OGI3NWU5NWYwMDNiNjdlMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9h
dWRpb19kZWNvZGVyX2lzYWNfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNfZnV6emVy
LmNjCkBAIC0xMyw2ICsxMyw5IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogdm9pZCBGdXp6T25l
SW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYgKHNpemUgPiAy
MDAwMCkgeworICAgIHJldHVybjsKKyAgfQogICBjb25zdCBpbnQgc2FtcGxlX3JhdGVfaHogPSBz
aXplICUgMiA9PSAwID8gMTYwMDAgOiAzMjAwMDsgICAgIC8vIDE2IG9yIDMyIGtIei4KICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBrQWxsb2NhdGVkT3VwdXRTaXplU2FtcGxlcyA9IDMyMDAwIC8gMTA7
ICAvLyAxMDAgbXMuCiAgIGludDE2X3Qgb3V0cHV0W2tBbGxvY2F0ZWRPdXB1dFNpemVTYW1wbGVz
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNfaW5jb21pbmdfcGFja2V0X2Z1enplci5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVy
cy9hdWRpb19kZWNvZGVyX2lzYWNfaW5jb21pbmdfcGFja2V0X2Z1enplci5jYwppbmRleCA1NjQ1
MTQyYTAzNGZhMjMyNmNhMTUzZTIzOTMxOTRiZWM5NDYyNjg0Li45YmQ2MjM0ZmExNDk1ZTcxNzVm
YzAxMjIxZTM2ZWFlMjRhNjMwM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fZGVjb2Rlcl9pc2FjX2luY29t
aW5nX3BhY2tldF9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX2RlY29kZXJfaXNhY19pbmNvbWluZ19wYWNr
ZXRfZnV6emVyLmNjCkBAIC0xMyw2ICsxMyw5IEBACiAKIG5hbWVzcGFjZSB3ZWJydGMgewogdm9p
ZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgaWYg
KHNpemUgPiAyMDAwMCkgeworICAgIHJldHVybjsKKyAgfQogICBBdWRpb0RlY29kZXJJc2FjRmxv
YXRJbXBsIGRlYygxNjAwMCk7CiAgIEZ1enpBdWRpb0RlY29kZXJJbmNvbWluZ1BhY2tldChkYXRh
LCBzaXplLCAmZGVjKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9hdWRpb19kZWNvZGVyX2lzYWNmaXhfZnV6emVy
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6
ZXJzL2F1ZGlvX2RlY29kZXJfaXNhY2ZpeF9mdXp6ZXIuY2MKaW5kZXggNDQ0Mzk1YjE3ZGYyMGM1
YzlkOTBjOTIwOGUxZDBjZjIwNTI1NTM1NC4uNjQ3N2RjMzYxYmRkZDc3N2Y2MGI4MzBiYWYyMTA1
MGMzZGYwN2ExYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9mdXp6ZXJzL2F1ZGlvX2RlY29kZXJfaXNhY2ZpeF9mdXp6ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJz
L2F1ZGlvX2RlY29kZXJfaXNhY2ZpeF9mdXp6ZXIuY2MKQEAgLTEzLDYgKzEzLDkgQEAKIAogbmFt
ZXNwYWNlIHdlYnJ0YyB7CiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkgeworICBpZiAoc2l6ZSA+IDIwMDAwKSB7CisgICAgcmV0dXJuOworICB9CiAg
IHN0YXRpYyBjb25zdCBpbnQga1NhbXBsZVJhdGVIeiA9IDE2MDAwOwogICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGtBbGxvY2F0ZWRPdXB1dFNpemVTYW1wbGVzID0gMTYwMDAgLyAxMDsgIC8vIDEwMCBt
cy4KICAgaW50MTZfdCBvdXRwdXRba0FsbG9jYXRlZE91cHV0U2l6ZVNhbXBsZXNdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6
ZXJzL2F1ZGlvX3Byb2Nlc3NpbmdfY29uZmlnc19mdXp6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fcHJvY2Vzc2luZ19j
b25maWdzX2Z1enplci5jYwppbmRleCA4MTE3YzUyYWFmMmIzMTVmN2YwNjZiNGIxOTI5MTk4OTFh
NDFkMzMzLi5kZDAwMTM2ODRlZGJjYmNmMzQwODFmYWYzOGFlMjE0MjFiZmIyMzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enpl
cnMvYXVkaW9fcHJvY2Vzc2luZ19jb25maWdzX2Z1enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fcHJvY2Vzc2lu
Z19jb25maWdzX2Z1enplci5jYwpAQCAtMTMsMTAgKzEzLDExIEBACiAKICNpbmNsdWRlICJhYnNs
L21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhcGkvYXVkaW8vZWNob19jYW5jZWxsZXIzX2Zh
Y3RvcnkuaCIKLSNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjX2R1bXAvbW9j
a19hZWNfZHVtcC5oIgorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWNfZHVt
cC9hZWNfZHVtcF9mYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n
L2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2FycmF5c2l6
ZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCisjaW5jbHVk
ZSAicnRjX2Jhc2UvdGFza19xdWV1ZS5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNs
dWRlL2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidGVzdC9mdXp6ZXJzL2F1ZGlvX3Byb2Nlc3Np
bmdfZnV6emVyX2hlbHBlci5oIgogI2luY2x1ZGUgInRlc3QvZnV6emVycy9mdXp6X2RhdGFfaGVs
cGVyLmgiCkBAIC0yNSwzNiArMjYsNDUgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2Ug
ewogCiBjb25zdCBzdGQ6OnN0cmluZyBrRmllbGRUcmlhbE5hbWVzW10gPSB7Ci0gICAgIldlYlJU
Qy1BZWMzVHJhbnNwYXJlbnRNb2RlS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzU3RhdGlv
bmFyeVJlbmRlckltcHJvdmVtZW50c0tpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM0VuZm9y
Y2VEZWxheUFmdGVyUmVhbGlnbm1lbnRLaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRDLUFlYzNVc2VT
aG9ydERlbGF5RXN0aW1hdG9yV2luZG93IiwKLSAgICAiV2ViUlRDLUFlYzNSZXZlcmJCYXNlZE9u
UmVuZGVyS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzUmV2ZXJiTW9kZWxsaW5nS2lsbFN3
aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzRmlsdGVyQW5hbHl6ZXJQcmVwcm9jZXNzb3JLaWxsU3dp
dGNoIiwKLSAgICAiV2ViUlRDLUFlYzNUcmFuc3BhcmVuY3lJbXByb3ZlbWVudHNLaWxsU3dpdGNo
IiwKLSAgICAiV2ViUlRDLUFlYzNTb2Z0VHJhbnNwYXJlbnRNb2RlS2lsbFN3aXRjaCIsCi0gICAg
IldlYlJUQy1BZWMzT3ZlcnJpZGVFY2hvUGF0aEdhaW5LaWxsU3dpdGNoIiwKLSAgICAiV2ViUlRD
LUFlYzNaZXJvRXh0ZXJuYWxEZWxheUhlYWRyb29tS2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1B
ZWMzRG93blNhbXBsaW5nRmFjdG9yOEtpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM0FkYXB0
RXJsZU9uTG93UmVuZGVyS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzQWdjR2FpbkNoYW5n
ZVJlc3BvbnNlS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzQm91bmRlZE5lYXJlbmRLaWxs
U3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNFYXJseVNoYWRvd0ZpbHRlckp1bXBzdGFydEtpbGxT
d2l0Y2giLAorICAgICJXZWJSVEMtQWVjM0VuYWJsZUFkYXB0aXZlRWNob1JldmVyYkVzdGltYXRp
b24iLAorICAgICJXZWJSVEMtQWVjM0VuYWJsZUxlZ2FjeURvbWluYW50TmVhcmVuZCIsCisgICAg
IldlYlJUQy1BZWMzRW5hYmxlVW5pdHlJbml0aWFsUmFtcHVwR2FpbiIsCisgICAgIldlYlJUQy1B
ZWMzRW5hYmxlVW5pdHlOb25aZXJvUmFtcHVwR2FpbiIsCiAgICAgIldlYlJUQy1BZWMzRW5mb3Jj
ZVNrZXdIeXN0ZXJlc2lzMSIsCiAgICAgIldlYlJUQy1BZWMzRW5mb3JjZVNrZXdIeXN0ZXJlc2lz
MiIsCi0gICAgIldlYlJUQy1BZWMzTmV3U3VwcHJlc3Npb25LaWxsU3dpdGNoIiwKLSAgICAiV2Vi
UlRDLUFlYzNMaW5lYXJNb2RlV2l0aERpdmVyZ2VkRmlsdGVyS2lsbFN3aXRjaCIsCisgICAgIldl
YlJUQy1BZWMzRmlsdGVyQW5hbHl6ZXJQcmVwcm9jZXNzb3JLaWxsU3dpdGNoIiwKICAgICAiV2Vi
UlRDLUFlYzNNaXNhZGp1c3RtZW50RXN0aW1hdG9yS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1B
ZWMzTmV3RmlsdGVyUGFyYW1zS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzTmV3UmVuZGVy
QnVmZmVyaW5nS2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMzT3ZlcnJpZGVFY2hvUGF0aEdh
aW5LaWxsU3dpdGNoIiwKICAgICAiV2ViUlRDLUFlYzNSYXBpZEFnY0dhaW5SZWNvdmVyeUtpbGxT
d2l0Y2giLAotICAgICJXZWJSVEMtQWVjM1Nsb3dGaWx0ZXJBZGFwdGF0aW9uS2lsbFN3aXRjaCIs
Ci0gICAgIldlYlJUQy1BZWMzU21vb3RoVXBkYXRlc1RhaWxGcmVxUmVzcEtpbGxTd2l0Y2giLAot
ICAgICJXZWJSVEMtQWVjM1N1cHByZXNzb3JOZWFyZW5kQXZlcmFnaW5nS2lsbFN3aXRjaCIsCi0g
ICAgIldlYlJUQy1BZWMzQWdjR2FpbkNoYW5nZVJlc3BvbnNlS2lsbFN3aXRjaCIsCisgICAgIldl
YlJUQy1BZWMzUmVzZXRFcmxlQXRHYWluQ2hhbmdlc0tpbGxTd2l0Y2giLAorICAgICJXZWJSVEMt
QWVjM1JldmVyYkJhc2VkT25SZW5kZXJLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNSZXZl
cmJNb2RlbGxpbmdLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNTaGFkb3dGaWx0ZXJCb29z
dGVkSnVtcHN0YXJ0S2lsbFN3aXRjaCIsCiAgICAgIldlYlJUQy1BZWMzU2hhZG93RmlsdGVySnVt
cHN0YXJ0S2lsbFN3aXRjaCIsCi0gICAgIldlYlJUQy1BZWMzRWFybHlMaW5lYXJGaWx0ZXJVc2Fn
ZUtpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM1Nob3J0SW5pdGlhbFN0YXRlS2lsbFN3aXRj
aCIsCisgICAgIldlYlJUQy1BZWMzU2hvcnRSZXZlcmJLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRD
LUFlYzNTbW9vdGhTaWduYWxUcmFuc2l0aW9uc0tpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVj
M1Ntb290aFVwZGF0ZXNUYWlsRnJlcVJlc3BLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNT
b2Z0VHJhbnNwYXJlbnRNb2RlS2lsbFN3aXRjaCIsCiAgICAgIldlYlJUQy1BZWMzU3RhbmRhcmRO
b25saW5lYXJSZXZlcmJNb2RlbEtpbGxTd2l0Y2giLAotICAgICJXZWJSVEMtQWVjM0VuYWJsZUFk
YXB0aXZlRWNob1JldmVyYkVzdGltYXRpb24ifTsKKyAgICAiV2ViUlRDLUFlYzNTdHJpY3REaXZl
cmdlbmNlQ2hlY2tLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFlYzNVc2VMZWdhY3lOb3JtYWxT
dXBwcmVzc29yVHVuaW5nIiwKKyAgICAiV2ViUlRDLUFlYzNVc2VPZmZzZXRCbG9ja3MiLAorICAg
ICJXZWJSVEMtQWVjM1VzZVNob3J0RGVsYXlFc3RpbWF0b3JXaW5kb3ciLAorICAgICJXZWJSVEMt
QWVjM1VzZVN0YXRpb25hcml0eVByb3BlcnRpZXNLaWxsU3dpdGNoIiwKKyAgICAiV2ViUlRDLUFl
YzNVdGlsaXplU2hhZG93RmlsdGVyT3V0cHV0S2lsbFN3aXRjaCIsCisgICAgIldlYlJUQy1BZWMz
WmVyb0V4dGVybmFsRGVsYXlIZWFkcm9vbUtpbGxTd2l0Y2giLAorICAgICJXZWJSVEMtQWVjM0Vh
cmx5RGVsYXlEZXRlY3Rpb25LaWxsU3dpdGNoIiwKK307CiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b1Byb2Nlc3Npbmc+IENyZWF0ZUFwbSh0ZXN0OjpGdXp6RGF0YUhlbHBlciogZnV6el9kYXRhLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBm
aWVsZF90cmlhbF9zdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZyogZmllbGRfdHJpYWxfc3RyaW5nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6VGFza1F1ZXVlKiB3b3JrZXJfcXVldWUp
IHsKICAgLy8gUGFyc2UgYm9vbGVhbiB2YWx1ZXMgZm9yIG9wdGlvbmFsbHkgZW5hYmxpbmcgZGlm
ZmVyZW50CiAgIC8vIGNvbmZpZ3VyYWJsZSBwdWJsaWMgY29tcG9uZW50cyBvZiBBUE0uCiAgIGJv
b2wgZXhwX2FnYyA9IGZ1enpfZGF0YS0+UmVhZE9yRGVmYXVsdFZhbHVlKHRydWUpOwpAQCAtNzks
MTIgKzg5LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Byb2Nlc3Npbmc+IENyZWF0ZUFwbSh0
ZXN0OjpGdXp6RGF0YUhlbHBlciogZnV6el9kYXRhLAogCiAgIC8vIFJlYWQgYW4gaW50OCB2YWx1
ZSwgYnV0IGRvbid0IGxldCBpdCBiZSB0b28gbGFyZ2Ugb3Igc21hbGwuCiAgIGNvbnN0IGZsb2F0
IGdhaW5fY29udHJvbGxlcjJfZ2Fpbl9kYiA9Ci0gICAgICBydGM6OlNhZmVDbGFtcDxpbnQ+KGZ1
enpfZGF0YS0+UmVhZE9yRGVmYXVsdFZhbHVlPGludDhfdD4oMCksIC01MCwgNTApOworICAgICAg
cnRjOjpTYWZlQ2xhbXA8aW50PihmdXp6X2RhdGEtPlJlYWRPckRlZmF1bHRWYWx1ZTxpbnQ4X3Q+
KDApLCAtNDAsIDQwKTsKIAogICBjb25zdGV4cHIgc2l6ZV90IGtOdW1GaWVsZFRyaWFscyA9IGFy
cmF5c2l6ZShrRmllbGRUcmlhbE5hbWVzKTsKICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHJlYWQgZGF0
YSB0eXBlIGhhcyBlbm91Z2ggYml0cyB0byBmdXp6IHRoZSBmaWVsZCB0cmlhbHMuCi0gIHVzaW5n
IEZpZWxkVHJpYWxCaXRtYXNrVHlwZSA9IHVpbnQzMl90OwotICBSVENfRENIRUNLX0xFKGtOdW1G
aWVsZFRyaWFscywgc2l6ZW9mKEZpZWxkVHJpYWxCaXRtYXNrVHlwZSkgKiA4KTsKKyAgdXNpbmcg
RmllbGRUcmlhbEJpdG1hc2tUeXBlID0gdWludDY0X3Q7CisgIHN0YXRpY19hc3NlcnQoa051bUZp
ZWxkVHJpYWxzIDw9IHNpemVvZihGaWVsZFRyaWFsQml0bWFza1R5cGUpICogOCwKKyAgICAgICAg
ICAgICAgICAiRmllbGRUcmlhbEJpdG1hc2tUeXBlIGlzIG5vdCBsYXJnZSBlbm91Z2guIik7CiAg
IHN0ZDo6Yml0c2V0PGtOdW1GaWVsZFRyaWFscz4gZmllbGRfdHJpYWxfYml0bWFzaygKICAgICAg
IGZ1enpfZGF0YS0+UmVhZE9yRGVmYXVsdFZhbHVlPEZpZWxkVHJpYWxCaXRtYXNrVHlwZT4oMCkp
OwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtOdW1GaWVsZFRyaWFsczsgKytpKSB7CkBAIC0x
MjksOCArMTQwLDkgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvUHJvY2Vzc2luZz4gQ3JlYXRlQXBt
KHRlc3Q6OkZ1enpEYXRhSGVscGVyKiBmdXp6X2RhdGEsCiAgICAgICAgICAgLlNldEVjaG9Db250
cm9sRmFjdG9yeShzdGQ6Om1vdmUoZWNob19jb250cm9sX2ZhY3RvcnkpKQogICAgICAgICAgIC5D
cmVhdGUoY29uZmlnKSk7CiAKLSAgYXBtLT5BdHRhY2hBZWNEdW1wKAotICAgICAgYWJzbDo6bWFr
ZV91bmlxdWU8dGVzdGluZzo6TmljZU1vY2s8d2VicnRjOjp0ZXN0OjpNb2NrQWVjRHVtcD4+KCkp
OworI2lmZGVmIFdFQlJUQ19MSU5VWAorICBhcG0tPkF0dGFjaEFlY0R1bXAoQWVjRHVtcEZhY3Rv
cnk6OkNyZWF0ZSgiL2Rldi9udWxsIiwgLTEsIHdvcmtlcl9xdWV1ZSkpOworI2VuZGlmCiAKICAg
d2VicnRjOjpBdWRpb1Byb2Nlc3Npbmc6OkNvbmZpZyBhcG1fY29uZmlnOwogICBhcG1fY29uZmln
LmVjaG9fY2FuY2VsbGVyLmVuYWJsZWQgPSB1c2VfYWVjIHx8IHVzZV9hZWNtOwpAQCAtMTM5LDcg
KzE1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Byb2Nlc3Npbmc+IENyZWF0ZUFwbSh0ZXN0
OjpGdXp6RGF0YUhlbHBlciogZnV6el9kYXRhLAogICBhcG1fY29uZmlnLmhpZ2hfcGFzc19maWx0
ZXIuZW5hYmxlZCA9IGhwZjsKICAgYXBtX2NvbmZpZy5nYWluX2NvbnRyb2xsZXIyLmVuYWJsZWQg
PSB1c2VfYWdjMl9saW1pdGVyOwogCi0gIGFwbV9jb25maWcuZ2Fpbl9jb250cm9sbGVyMi5maXhl
ZF9nYWluX2RiID0gZ2Fpbl9jb250cm9sbGVyMl9nYWluX2RiOworICBhcG1fY29uZmlnLmdhaW5f
Y29udHJvbGxlcjIuZml4ZWRfZGlnaXRhbC5nYWluX2RiID0gZ2Fpbl9jb250cm9sbGVyMl9nYWlu
X2RiOwogCiAgIGFwbS0+QXBwbHlDb25maWcoYXBtX2NvbmZpZyk7CiAKQEAgLTE1OCw3ICsxNzAs
MTAgQEAgdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
IHsKICAgLy8gVGhpcyBzdHJpbmcgbXVzdCBiZSBpbiBzY29wZSBkdXJpbmcgZXhlY3V0aW9uLCBh
Y2NvcmRpbmcgdG8gZG9jdW1lbnRhdGlvbgogICAvLyBmb3IgZmllbGRfdHJpYWwuaC4gSGVuY2Ug
aXQncyBjcmVhdGVkIGhlcmUgYW5kIG5vdCBpbiBDcmVhdGVBcG0uCiAgIHN0ZDo6c3RyaW5nIGZp
ZWxkX3RyaWFsX3N0cmluZyA9ICIiOwotICBhdXRvIGFwbSA9IENyZWF0ZUFwbSgmZnV6el9kYXRh
LCAmZmllbGRfdHJpYWxfc3RyaW5nKTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUYXNrUXVl
dWU+IHdvcmtlcl9xdWV1ZSgKKyAgICAgIG5ldyBydGM6OlRhc2tRdWV1ZSgicnRjLWxvdy1wcmlv
IiwgcnRjOjpUYXNrUXVldWU6OlByaW9yaXR5OjpMT1cpKTsKKyAgYXV0byBhcG0gPSBDcmVhdGVB
cG0oJmZ1enpfZGF0YSwgJmZpZWxkX3RyaWFsX3N0cmluZywgd29ya2VyX3F1ZXVlLmdldCgpKTsK
IAogICBpZiAoYXBtKSB7CiAgICAgRnV6ekF1ZGlvUHJvY2Vzc2luZygmZnV6el9kYXRhLCBzdGQ6
Om1vdmUoYXBtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fcHJvY2Vzc2luZ19mdXp6ZXJfaGVscGVyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJz
L2F1ZGlvX3Byb2Nlc3NpbmdfZnV6emVyX2hlbHBlci5jYwppbmRleCAwNzNhYjE3YmQ5MzFjNGJi
ZWMxMzNkMGU5MGFkNWMxYjNjYmFmNGMzLi5kZWM0ZTFmMDVlNGQ0MjJhNGRmZWY4NmE2ODBmYTQz
MGJlMDc2Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L2Z1enplcnMvYXVkaW9fcHJvY2Vzc2luZ19mdXp6ZXJfaGVscGVyLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVy
cy9hdWRpb19wcm9jZXNzaW5nX2Z1enplcl9oZWxwZXIuY2MKQEAgLTEzMCwxMCArMTMwLDggQEAg
dm9pZCBGdXp6QXVkaW9Qcm9jZXNzaW5nKHRlc3Q6OkZ1enpEYXRhSGVscGVyKiBmdXp6X2RhdGEs
CiAgICAgICB9CiAgICAgfQogCi0gICAgLy8gTWFrZSBjYWxscyB0byBzdGF0cyBnYXRoZXJpbmcg
ZnVuY3Rpb25zIHRvIGNvdmVyIHRoZXNlCi0gICAgLy8gY29kZXdheXMuCi0gICAgc3RhdGljX2Nh
c3Q8dm9pZD4oYXBtLT5HZXRTdGF0aXN0aWNzKCkpOwotICAgIHN0YXRpY19jYXN0PHZvaWQ+KGFw
bS0+R2V0U3RhdGlzdGljcyh0cnVlKSk7CisgICAgLy8gQ292ZXIgc3RhdHMgZ2F0aGVyaW5nIGNv
ZGUgcGF0aHMuCisgICAgc3RhdGljX2Nhc3Q8dm9pZD4oYXBtLT5HZXRTdGF0aXN0aWNzKHRydWUg
LypoYXNfcmVtb3RlX3RyYWNrcyovKSk7CiAgICAgc3RhdGljX2Nhc3Q8dm9pZD4oYXBtLT5VcGRh
dGVIaXN0b2dyYW1zT25DYWxsRW5kKCkpOwogCiAgICAgUlRDX0RDSEVDS19ORShhcG1fcmV0dXJu
X2NvZGUsIEF1ZGlvUHJvY2Vzc2luZzo6a0JhZERhdGFMZW5ndGhFcnJvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMv
Y29tZm9ydF9ub2lzZV9kZWNvZGVyX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9jb21mb3J0X25vaXNlX2RlY29kZXJfZnV6
emVyLmNjCmluZGV4IDUwMTY2ZDdkZjc3ODI1MDA0MWU1MmRjNTc3ZTE3NGI0YTQ4Yjk0Y2UuLjdm
NDRhZjk5ZmI1MzAzNWQ0M2M3MjVmYmE5Mzc3OTgwMGJmOTJmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9jb21mb3J0
X25vaXNlX2RlY29kZXJfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9jb21mb3J0X25vaXNlX2RlY29kZXJfZnV6emVy
LmNjCkBAIC01MCw2ICs1MCw5IEBAIHZvaWQgRnV6ek9uZUlucHV0VGVzdChydGM6OkFycmF5Vmll
dzxjb25zdCB1aW50OF90PiBkYXRhKSB7CiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogCiB2b2lkIEZ1
enpPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAoc2l6
ZSA+IDUwMDApIHsKKyAgICByZXR1cm47CisgIH0KICAgdGVzdDo6RnV6ek9uZUlucHV0VGVzdChy
dGM6OkFycmF5Vmlldzxjb25zdCB1aW50OF90PihkYXRhLCBzaXplKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVy
cy9mbGV4ZmVjX3JlY2VpdmVyX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mbGV4ZmVjX3JlY2VpdmVyX2Z1enplci5jYwpp
bmRleCBkOTZhMzI4ZmEyYzU4YmZlZjBhNWVhNTRjNDMxY2QyMDJhMTE1ZDRmLi5jNTAzNGJiOTMz
ZWU4M2I0NmExOGZjNDBhMWE4ZjY5Yjk1M2I5ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZmxleGZlY19yZWNlaXZl
cl9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9mdXp6ZXJzL2ZsZXhmZWNfcmVjZWl2ZXJfZnV6emVyLmNjCkBAIC0yNSw3ICsyNSw3
IEBAIGNsYXNzIER1bW15Q2FsbGJhY2sgOiBwdWJsaWMgUmVjb3ZlcmVkUGFja2V0UmVjZWl2ZXIg
ewogCiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ewogICBjb25zdGV4cHIgc2l6ZV90IGtNaW5EYXRhTmVlZGVkID0gMTI7Ci0gIGlmIChzaXplIDwg
a01pbkRhdGFOZWVkZWQpIHsKKyAgaWYgKHNpemUgPCBrTWluRGF0YU5lZWRlZCB8fCBzaXplID4g
MjAwMCkgewogICAgIHJldHVybjsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZmxleGZlY19zZW5kZXJfZnV6
emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9m
dXp6ZXJzL2ZsZXhmZWNfc2VuZGVyX2Z1enplci5jYwppbmRleCA4ZTc5Zjk1Y2YzZmVlMzIzYWM1
MDJlM2RkMmNkMDIzMWExYWFhMGQ0Li40ODgyZjdkZjUxYTVjNmJmZmYzODI0ZGMwMDA0YjcwYjM1
MWQ3NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L2Z1enplcnMvZmxleGZlY19zZW5kZXJfZnV6emVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mbGV4ZmVjX3Nl
bmRlcl9mdXp6ZXIuY2MKQEAgLTMxLDEwICszMSw5IEBAIGNvbnN0IHN0ZDo6dmVjdG9yPFJ0cEV4
dGVuc2lvblNpemU+IGtOb1J0cEhlYWRlckV4dGVuc2lvblNpemVzOwogCiB2b2lkIEZ1enpPbmVJ
bnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewogICBzaXplX3QgaSA9IDA7
Ci0gIGlmIChzaXplIDwgNSkgeworICBpZiAoc2l6ZSA8IDUgfHwgc2l6ZSA+IDIwMCkgewogICAg
IHJldHVybjsKICAgfQotCiAgIFNpbXVsYXRlZENsb2NrIGNsb2NrKDEgKyBkYXRhW2krK10pOwog
ICBGbGV4ZmVjU2VuZGVyIHNlbmRlcihrRmxleGZlY1BheWxvYWRUeXBlLCBrRmxleGZlY1NzcmMs
IGtNZWRpYVNzcmMsIGtOb01pZCwKICAgICAgICAgICAgICAgICAgICAgICAga05vUnRwSGVhZGVy
RXh0ZW5zaW9ucywga05vUnRwSGVhZGVyRXh0ZW5zaW9uU2l6ZXMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZm9yd2Fy
ZF9lcnJvcl9jb3JyZWN0aW9uX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25fZnV6
emVyLmNjCmluZGV4IDlkNWI4NzI0MzRhZDMxNjNjNjU5ODA5MjRjZDljODg3M2FiYzdlMmUuLjJl
YjM1N2I3NGE4MTQyNmJkM2M1ZjI2YmQ4NDliYzhiNTE1NzVjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mb3J3YXJk
X2Vycm9yX2NvcnJlY3Rpb25fZnV6emVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mb3J3YXJkX2Vycm9yX2NvcnJlY3Rpb25f
ZnV6emVyLmNjCkBAIC0yNiw2ICsyNiw5IEBAIGNvbnN0ZXhwciBzaXplX3Qga01heFBhY2tldHNJ
bkJ1ZmZlciA9IDQ4OwogfSAgLy8gbmFtZXNwYWNlCiAKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgIGlmIChzaXplID4gNTAwMCkgeworICAg
IHJldHVybjsKKyAgfQogICAvLyBPYmplY3QgdW5kZXIgdGVzdC4KICAgc3RkOjp1bmlxdWVfcHRy
PEZvcndhcmRFcnJvckNvcnJlY3Rpb24+IGZlYyA9CiAgICAgICBGb3J3YXJkRXJyb3JDb3JyZWN0
aW9uOjpDcmVhdGVGbGV4ZmVjKGtGZWNTc3JjLCBrTWVkaWFTc3JjKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9mcmFt
ZV9idWZmZXIyX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvZnV6emVycy9mcmFtZV9idWZmZXIyX2Z1enplci5jYwppbmRleCAyZDU4MzA5
NzljMTI0ZTQwOWM3ZjRhYTE5YTIzZWYxNTcxOTA1M2VhLi5hNTU5MTA0MWZmNjliMDkxYTMxYTM1
ZGQzNWJlMzJmYTRjMDRkOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvZnJhbWVfYnVmZmVyMl9mdXp6ZXIuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJz
L2ZyYW1lX2J1ZmZlcjJfZnV6emVyLmNjCkBAIC02Myw2ICs2Myw5IEBAIGNsYXNzIEZ1enp5RnJh
bWVPYmplY3QgOiBwdWJsaWMgdmlkZW9fY29kaW5nOjpFbmNvZGVkRnJhbWUgewogfSAgLy8gbmFt
ZXNwYWNlCiAKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7CisgIGlmIChzaXplID4gMTAwMDApIHsKKyAgICByZXR1cm47CisgIH0KICAgRGF0YVJl
YWRlciByZWFkZXIoZGF0YSwgc2l6ZSk7CiAgIENsb2NrKiBjbG9jayA9IENsb2NrOjpHZXRSZWFs
VGltZUNsb2NrKCk7CiAgIFZDTUppdHRlckVzdGltYXRvciBqaXR0ZXJfZXN0aW1hdG9yKGNsb2Nr
LCAwLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvZnV6emVycy9tZG5zX3BhcnNlcl9mdXp6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvbWRuc19wYXJzZXJfZnV6
emVyLmNjCmluZGV4IGMzZjc2NWVmNzg3YjQ4MmIwOThjMGU4ODE5ODIzNDVjM2E5ZGE3ZTguLjI5
NGY2ODMyMjZjMDc2MDNmOGUzZmI4ODc1MDVjOTc2ZTdiNGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9tZG5zX3Bh
cnNlcl9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mdXp6ZXJzL21kbnNfcGFyc2VyX2Z1enplci5jYwpAQCAtMTksNyArMTksNyBA
QCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogdm9pZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgTWVzc2FnZUJ1ZmZlclJlYWRlciBidWYocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwotICBhdXRvIG1kbnNfbXNnID0gYWJz
bDo6bWFrZV91bmlxdWU8TURuc01lc3NhZ2U+KCk7CisgIGF1dG8gbWRuc19tc2cgPSBhYnNsOjpt
YWtlX3VuaXF1ZTxNZG5zTWVzc2FnZT4oKTsKICAgbWRuc19tc2ctPlJlYWQoJmJ1Zik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvZnV6emVycy9uZXRlcV9ydHBfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL25ldGVxX3J0cF9mdXp6ZXIuY2MKaW5kZXgg
OGFhNmJlNTlkZDBlMWM4ZDc0Y2Y5YmMxZDg3MzUxMDNlMDNiMjc5OC4uOTRkYmVmMzllYmU1ZWRl
ZWM0NmEzYzJlNWIwYzE0NjA5NDZhZDg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL25ldGVxX3J0cF9mdXp6ZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6
ZXJzL25ldGVxX3J0cF9mdXp6ZXIuY2MKQEAgLTE0Niw2ICsxNDYsOSBAQCB2b2lkIEZ1enpPbmVJ
bnB1dFRlc3QoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKIH0gIC8vIG5hbWVz
cGFjZSB0ZXN0CiAKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKSB7CisgIGlmIChzaXplID4gMTAwMDAwKSB7CisgICAgcmV0dXJuOworICB9CiAgIHRl
c3Q6OkZ1enpPbmVJbnB1dFRlc3QoZGF0YSwgc2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9uZXRlcV9z
aWduYWxfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9mdXp6ZXJzL25ldGVxX3NpZ25hbF9mdXp6ZXIuY2MKaW5kZXggMTZlNzc2MDcyYmMy
ZjFjYzYyZTZjMTE0OTA5MWJmNzQ1NDZhZDg5Ni4uMjUzMDJjMzFhODg1N2ExMGFjMDIyODU4NDM4
NGY5MzY4YWRiOTljNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL25ldGVxX3NpZ25hbF9mdXp6ZXIuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL25ldGVx
X3NpZ25hbF9mdXp6ZXIuY2MKQEAgLTE0MCw4ICsxNDAsOSBAQCBjbGFzcyBGdXp6U2lnbmFsSW5w
dXQgOiBwdWJsaWMgTmV0RXFJbnB1dCB7CiB9ICAvLyBuYW1lc3BhY2UKIAogdm9pZCBGdXp6T25l
SW5wdXRUZXN0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gIGlmIChzaXpl
IDwgMSkKKyAgaWYgKHNpemUgPCAxIHx8IHNpemUgPiA5MDAwMCkgewogICAgIHJldHVybjsKKyAg
fQogCiAgIEZ1enpEYXRhSGVscGVyIGZ1enpfZGF0YShydGM6OkFycmF5Vmlldzxjb25zdCB1aW50
OF90PihkYXRhLCBzaXplKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9wYWNrZXRfYnVmZmVyX2Z1enplci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9w
YWNrZXRfYnVmZmVyX2Z1enplci5jYwppbmRleCBkMjI2NzY0Y2IyNWQ4MmJmZjg1ZmRlNDhkZTg3
ODk1Yjk3NTBiZWFkLi41NmQxNTU3MDcyZjQ3ZjUyNTE2ZjA5NWY3ZThkMmIwNmVmZTFiNGVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L2Z1enplcnMvcGFja2V0X2J1ZmZlcl9mdXp6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3BhY2tldF9idWZmZXJfZnV6emVy
LmNjCkBAIC0yMSw2ICsyMSw5IEBAIGNsYXNzIE51bGxDYWxsYmFjayA6IHB1YmxpYyB2aWRlb19j
b2Rpbmc6Ok9uUmVjZWl2ZWRGcmFtZUNhbGxiYWNrIHsKIH0gIC8vIG5hbWVzcGFjZQogCiB2b2lk
IEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBpZiAo
c2l6ZSA+IDIwMDAwMCkgeworICAgIHJldHVybjsKKyAgfQogICBWQ01QYWNrZXQgcGFja2V0Owog
ICBOdWxsQ2FsbGJhY2sgY2FsbGJhY2s7CiAgIFNpbXVsYXRlZENsb2NrIGNsb2NrKDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9m
dXp6ZXJzL3J0Y3BfcmVjZWl2ZXJfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0Y3BfcmVjZWl2ZXJfZnV6emVyLmNjCmlu
ZGV4IGNkNzYzZDBmNjA1ODgwNDE2MzAyYjUwYTJiYTMyMjRkZDIxNTI0ZTkuLjdmOGNhYmFmZDY4
ZWE0OGJlYjlhNGI4N2U5NTcwY2M0ZTMwM2RlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9ydGNwX3JlY2VpdmVyX2Z1
enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2Z1enplcnMvcnRjcF9yZWNlaXZlcl9mdXp6ZXIuY2MKQEAgLTE1LDYgKzE1LDggQEAKIG5h
bWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHsKIAorY29uc3RleHByIGludCBrUnRjcEludGVy
dmFsTXMgPSAxMDAwOworCiBjbGFzcyBOdWxsTW9kdWxlUnRwUnRjcCA6IHB1YmxpYyBSVENQUmVj
ZWl2ZXI6Ok1vZHVsZVJ0cFJ0Y3AgewogIHB1YmxpYzoKICAgdm9pZCBTZXRUbW1ibihzdGQ6OnZl
Y3RvcjxydGNwOjpUbW1iSXRlbT4pIG92ZXJyaWRlIHt9CkBAIC0zMCw3ICszMiw3IEBAIHZvaWQg
RnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CiAgIFNpbXVs
YXRlZENsb2NrIGNsb2NrKDEyMzQpOwogCiAgIFJUQ1BSZWNlaXZlciByZWNlaXZlcigmY2xvY2ss
IGZhbHNlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwgJnJ0cF9ydGNwX21vZHVsZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLCBrUnRjcEludGVydmFsTXMsICZydHBfcnRjcF9tb2R1bGUpOwogCiAg
IHJlY2VpdmVyLkluY29taW5nUGFja2V0KGRhdGEsIHNpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0cF9m
cmFtZV9yZWZlcmVuY2VfZmluZGVyX2Z1enplci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9ydHBfZnJhbWVfcmVmZXJlbmNlX2ZpbmRl
cl9mdXp6ZXIuY2MKaW5kZXggZmQ5ODg5MmEwNDgwZmQ5Y2YwZWI0MGVmYmU4YTQ4ODE3NGQyMWMw
ZC4uNTdkN2E5NjIzYTA3YTBkMTI4ODdlZTc2MTg0MzNlMmE5NGUxNzg3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0
cF9mcmFtZV9yZWZlcmVuY2VfZmluZGVyX2Z1enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvcnRwX2ZyYW1lX3JlZmVyZW5j
ZV9maW5kZXJfZnV6emVyLmNjCkBAIC0xMDEsNiArMTAxLDkgQEAgY2xhc3MgRnV6enlQYWNrZXRC
dWZmZXIgOiBwdWJsaWMgdmlkZW9fY29kaW5nOjpQYWNrZXRCdWZmZXIgewogfSAgLy8gbmFtZXNw
YWNlCiAKIHZvaWQgRnV6ek9uZUlucHV0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KSB7CisgIGlmIChzaXplID4gMjAwMDApIHsKKyAgICByZXR1cm47CisgIH0KICAgRGF0YVJlYWRl
ciByZWFkZXIoZGF0YSwgc2l6ZSk7CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGdXp6eVBhY2tldEJ1
ZmZlcj4gcGIobmV3IEZ1enp5UGFja2V0QnVmZmVyKCZyZWFkZXIpKTsKICAgTnVsbENhbGxiYWNr
IGNiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC9mdXp6ZXJzL3J0cF9wYWNrZXRfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3J0cF9wYWNrZXRfZnV6emVyLmNj
CmluZGV4IDhiZjhlNzRhYmE5NGNmNzM0NWE1ZGZmMWVjMTYwYmE1OWViY2M0ZmMuLmY3NzRjMGNi
OGIwMTg0MzQzNjAxYThmMmZmYmM2MjMwOTAyNzk0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9ydHBfcGFja2V0X2Z1
enplci5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90
ZXN0L2Z1enplcnMvcnRwX3BhY2tldF9mdXp6ZXIuY2MKQEAgLTEyMSw2ICsxMjEsMTEgQEAgdm9p
ZCBGdXp6T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgICAg
ICAgcGFja2V0LkdldEV4dGVuc2lvbjxSdHBHZW5lcmljRnJhbWVEZXNjcmlwdG9yRXh0ZW5zaW9u
PigmZGVzY3JpcHRvcik7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQorICAgICAgY2FzZSBrUnRw
RXh0ZW5zaW9uQ29sb3JTcGFjZTogeworICAgICAgICBDb2xvclNwYWNlIGNvbG9yX3NwYWNlOwor
ICAgICAgICBwYWNrZXQuR2V0RXh0ZW5zaW9uPENvbG9yU3BhY2VFeHRlbnNpb24+KCZjb2xvcl9z
cGFjZSk7CisgICAgICAgIGJyZWFrOworICAgICAgfQogICAgIH0KICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJz
L3NkcF9wYXJzZXJfZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3NkcF9wYXJzZXJfZnV6emVyLmNjCmluZGV4IGU0NzE1NmM1
NzFlNWNkOTAxNTMwYzBkYjZkOGQ4N2Y1MTBhNzg3MTQuLjc2M2RiYzU5NGFjYjc0MTI1YmMzMjhl
Y2NlODgxYWI5YWZlNmUzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy9zZHBfcGFyc2VyX2Z1enplci5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2Z1enplcnMvc2Rw
X3BhcnNlcl9mdXp6ZXIuY2MKQEAgLTE1LDYgKzE1LDkgQEAKIAogbmFtZXNwYWNlIHdlYnJ0YyB7
CiB2b2lkIEZ1enpPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewor
ICBpZiAoc2l6ZSA+IDE2Mzg0KSB7CisgICAgcmV0dXJuOworICB9CiAgIHN0ZDo6c3RyaW5nIG1l
c3NhZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwogICB3ZWJy
dGM6OlNkcFBhcnNlRXJyb3IgZXJyb3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvZnV6emVycy91bHBmZWNfcmVjZWl2ZXJfZnV6
emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9m
dXp6ZXJzL3VscGZlY19yZWNlaXZlcl9mdXp6ZXIuY2MKaW5kZXggNmI3NGYzYWM5NWQ0ZDNmZjNh
ZDI5MDc0YTEyZjY3NDEwYzE3NDI5OC4uN2NiMGZjNjFiNWQyZjIwYmNkNWM0MmI3MDlkMWM4Yzdi
ZDVkMmMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC9mdXp6ZXJzL3VscGZlY19yZWNlaXZlcl9mdXp6ZXIuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9mdXp6ZXJzL3VscGZlY19y
ZWNlaXZlcl9mdXp6ZXIuY2MKQEAgLTI1LDcgKzI1LDcgQEAgY2xhc3MgRHVtbXlDYWxsYmFjayA6
IHB1YmxpYyBSZWNvdmVyZWRQYWNrZXRSZWNlaXZlciB7CiAKIHZvaWQgRnV6ek9uZUlucHV0KGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CiAgIGNvbnN0ZXhwciBzaXplX3Qga01p
bkRhdGFOZWVkZWQgPSAxMjsKLSAgaWYgKHNpemUgPCBrTWluRGF0YU5lZWRlZCkgeworICBpZiAo
c2l6ZSA8IGtNaW5EYXRhTmVlZGVkIHx8IHNpemUgPiAyMDAwKSB7CiAgICAgcmV0dXJuOwogICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvaW9zL2NvdmVyYWdlX3V0aWxfaW9zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lvcy9jb3ZlcmFnZV91dGlsX2lvcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmExN2I2OWRjYTgwMTFiMWQyMTZlM2NiYjhkZGU4NmQ4Nzc5ZmFiYmYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lvcy9j
b3ZlcmFnZV91dGlsX2lvcy5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIw
MTggVGhlIFdlYlJUQyBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5U
Uy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGlu
IHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisK
KyNpZm5kZWYgVEVTVF9JT1NfQ09WRVJBR0VfVVRJTF9JT1NfSF8KKyNkZWZpbmUgVEVTVF9JT1Nf
Q09WRVJBR0VfVVRJTF9JT1NfSF8KKworbmFtZXNwYWNlIHJ0YyB7CituYW1lc3BhY2UgdGVzdCB7
CisKKy8vIEluIGRlYnVnIGJ1aWxkcywgaWYgSU9TX0VOQUJMRV9DT1ZFUkFHRSBpcyBkZWZpbmVk
LCBzZXRzIHRoZSBmaWxlbmFtZSBvZiB0aGUKKy8vIGNvdmVyYWdlIGZpbGUuIE90aGVyd2lzZSwg
aXQgZG9lcyBub3RoaW5nLgordm9pZCBDb25maWd1cmVDb3ZlcmFnZVJlcG9ydFBhdGgoKTsKKwor
fSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5hbWVzcGFjZSBydGMKKworI2VuZGlmICAvLyBU
RVNUX0lPU19DT1ZFUkFHRV9VVElMX0lPU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9pb3MvY292ZXJhZ2VfdXRpbF9pb3MubW0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lvcy9jb3Zl
cmFnZV91dGlsX2lvcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjFhMTZkZWYyNDc0NmE4ZmZkMGZkMjJkOWFj
NzJiMmQyNDg0YWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9pb3MvY292ZXJhZ2VfdXRpbF9pb3MubW0KQEAgLTAsMCAr
MSw0MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUu
IEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUg
Zm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0
IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CisKKyNpZmRlZiBXRUJSVENfSU9TX0VOQUJMRV9DT1ZFUkFHRQorZXh0ZXJuICJDIiB2
b2lkIF9fbGx2bV9wcm9maWxlX3NldF9maWxlbmFtZShjb25zdCBjaGFyKiBuYW1lKTsKKyNlbmRp
ZgorCituYW1lc3BhY2UgcnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKwordm9pZCBDb25maWd1cmVD
b3ZlcmFnZVJlcG9ydFBhdGgoKSB7CisjaWZkZWYgV0VCUlRDX0lPU19FTkFCTEVfQ09WRVJBR0UK
KyAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlX3Rva2VuOworICBkaXNwYXRjaF9vbmNlKCZv
bmNlX3Rva2VuLCBeeworICAgIC8vIFdyaXRlcyB0aGUgcHJvZnJhdyBmaWxlIHRvIHRoZSBEb2N1
bWVudHMgZGlyZWN0b3J5LCB3aGVyZSB0aGUgYXBwIGhhcworICAgIC8vIHdyaXRlIHJpZ2h0cy4K
KyAgICBOU0FycmF5KiBwYXRocyA9CisgICAgICAgIE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVz
SW5Eb21haW5zKE5TRG9jdW1lbnREaXJlY3RvcnksIE5TVXNlckRvbWFpbk1hc2ssIFlFUyk7Cisg
ICAgTlNTdHJpbmcqIGRvY3VtZW50c19kaXJlY3RvcnkgPSBbcGF0aHMgZmlyc3RPYmplY3RdOwor
ICAgIE5TU3RyaW5nKiBmaWxlX25hbWUgPSBbZG9jdW1lbnRzX2RpcmVjdG9yeSBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJjb3ZlcmFnZS5wcm9mcmF3Il07CisKKyAgICAvLyBGb3Ig
ZG9jdW1lbnRhdGlvbiwgc2VlOgorICAgIC8vIGh0dHA6Ly9jbGFuZy5sbHZtLm9yZy9kb2NzL1Nv
dXJjZUJhc2VkQ29kZUNvdmVyYWdlLmh0bWwKKyAgICBfX2xsdm1fcHJvZmlsZV9zZXRfZmlsZW5h
bWUoW2ZpbGVfbmFtZSBjU3RyaW5nVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10p
OworCisgICAgLy8gUHJpbnQgdGhlIHBhdGggZm9yIGVhc2llciByZXRyaWV2YWwuCisgICAgTlNM
b2coQCJDb3ZlcmFnZSBkYXRhIGF0ICVALiIsIGZpbGVfbmFtZSk7CisgIH0pOworI2VuZGlmICAv
LyBpZmRlZiBXRUJSVENfSU9TX0VOQUJMRV9DT1ZFUkFHRQorfQorCit9ICAvLyBuYW1lc3BhY2Ug
dGVzdAorfSAgLy8gbmFtZXNwYWNlIHJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9pb3MvdGVzdF9zdXBwb3J0Lm1tIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9pb3MvdGVzdF9zdXBwb3J0
Lm1tCmluZGV4IGZlYzU5Nzg4NTQ5N2Q2YmEyOTk2Y2RlYmI2YmQ5NmJkMjIwY2YwNmIuLjg2MDA1
OTc0ZmIyMjE2YzYzNjVjYzUwYzE2N2IzOTY4YTgyNDRkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvaW9zL3Rlc3Rfc3VwcG9ydC5t
bQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L2lv
cy90ZXN0X3N1cHBvcnQubW0KQEAgLTEwLDYgKzEwLDcgQEAKIAogI2ltcG9ydCA8VUlLaXQvVUlL
aXQuaD4KIAorI2luY2x1ZGUgInRlc3QvaW9zL2NvdmVyYWdlX3V0aWxfaW9zLmgiCiAjaW5jbHVk
ZSAidGVzdC9pb3MvdGVzdF9zdXBwb3J0LmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9w
ZXJmX3Rlc3QuaCIKIApAQCAtNzAsNiArNzEsOCBAQCAtIChCT09MKWFwcGxpY2F0aW9uOihVSUFw
cGxpY2F0aW9uICopYXBwbGljYXRpb24KIH0KIAogLSAodm9pZClydW5UZXN0cyB7CisgIHJ0Yzo6
dGVzdDo6Q29uZmlndXJlQ292ZXJhZ2VSZXBvcnRQYXRoKCk7CisKICAgaW50IGV4aXRTdGF0dXMg
PSBnX3Rlc3Rfc3VpdGUoKTsKIAogICBpZiAoZ19zYXZlX2NoYXJ0anNvbl9yZXN1bHQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qv
cnRwX2ZpbGVfcmVhZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L3J0cF9maWxlX3JlYWRlci5oCmluZGV4IDQ5MTM1MjJiYTcwMWE2YWQ4MTAwNDc3
YjVjZTNjZTk1OWJjODBiZjMuLjgwNTA0NGY1MmY5ZjljNzM5OWM4MjQ5MTBmMTlkMTIxMTNlZmY5
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rlc3QvcnRwX2ZpbGVfcmVhZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9ydHBfZmlsZV9yZWFkZXIuaApAQCAtMTMsOCArMTMsNiBAQAog
I2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJjb21tb25fdHlw
ZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQotCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5h
bWVzcGFjZSB0ZXN0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9ydHBfZmlsZV93cml0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnRwX2ZpbGVfd3JpdGVyLmgKaW5kZXggNDQ5
NmNhNGEyNWZkYzA4NjdmMTc3YTQ5YmI3YTVlMDI1Nzk5MGJlNi4uNWU1NjBkNzM3NTYwYTQ3NzJi
ZTM5ZDkzMjE1ZGExOTI1ZDFjMDU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydHBfZmlsZV93cml0ZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J0cF9maWxlX3dyaXRlci5o
CkBAIC0xMiw3ICsxMiw2IEBACiAKICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpbmNsdWRlICJjb21t
b25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgInRlc3QvcnRw
X2ZpbGVfcmVhZGVyLmgiCiAKIG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydHBfcnRjcF9vYnNlcnZl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydHBf
cnRjcF9vYnNlcnZlci5oCmluZGV4IGM5NzQ0MTA5NTUzNzQyZTdmZDk2NTEzY2NmYWEzYmViMGFi
NGI3ZTIuLmQ0YWFkZmUwZGFkYWYwZjkzZmUzMDg2ZTM5ODU3NDZiZWFhNDZkMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnRwX3J0
Y3Bfb2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L3J0cF9ydGNwX29ic2VydmVyLmgKQEAgLTcxLDkgKzcxLDcgQEAgY2xhc3MgUnRw
UnRjcE9ic2VydmVyIHsKICBwcm90ZWN0ZWQ6CiAgIFJ0cFJ0Y3BPYnNlcnZlcigpIDogUnRwUnRj
cE9ic2VydmVyKDApIHt9CiAgIGV4cGxpY2l0IFJ0cFJ0Y3BPYnNlcnZlcihpbnQgZXZlbnRfdGlt
ZW91dF9tcykKLSAgICAgIDogb2JzZXJ2YXRpb25fY29tcGxldGVfKGZhbHNlLCBmYWxzZSksCi0g
ICAgICAgIHBhcnNlcl8oUnRwSGVhZGVyUGFyc2VyOjpDcmVhdGUoKSksCi0gICAgICAgIHRpbWVv
dXRfbXNfKGV2ZW50X3RpbWVvdXRfbXMpIHsKKyAgICAgIDogcGFyc2VyXyhSdHBIZWFkZXJQYXJz
ZXI6OkNyZWF0ZSgpKSwgdGltZW91dF9tc18oZXZlbnRfdGltZW91dF9tcykgewogICAgIHBhcnNl
cl8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9uKGtSdHBFeHRlbnNpb25UcmFuc21pc3Npb25U
aW1lT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtUT2Zm
c2V0RXh0ZW5zaW9uSWQpOwogICAgIHBhcnNlcl8tPlJlZ2lzdGVyUnRwSGVhZGVyRXh0ZW5zaW9u
KGtSdHBFeHRlbnNpb25BYnNvbHV0ZVNlbmRUaW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydW5fbG9vcC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvcnVuX2xvb3AuY2MKaW5kZXgg
ZGMyZWMxOGVlYTc5ZjRkNDZjZTdlYzM5Y2I0ZmI4MGNlYzI0MDA4ZS4uMDUyNjYyYTQ2NGU5NDIy
OWQ0NjIxZGI3NGNlNjA1NTViM2JmOTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9ydW5fbG9vcC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3J1bl9sb29wLmNjCkBAIC0xNCw3
ICsxNCw3IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIAotdm9pZCBQ
cmVzc0VudGVyVG9Db250aW51ZSgpIHsKK3ZvaWQgUHJlc3NFbnRlclRvQ29udGludWUoU2luZ2xl
VGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nJikgewogICBwdXRzKCI+PiBQcmVzcyBFTlRFUiB0
byBjb250aW51ZS4uLiIpOwogICB3aGlsZSAoZ2V0YyhzdGRpbikgIT0gJ1xuJyAmJiAhZmVvZihz
dGRpbikpCiAgICAgOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9ydW5fbG9vcC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9ydW5fbG9vcC5oCmluZGV4IDkwMDYzZGMzZTg3M2Q3ZmYyNDk4
MTJmYzUwYmUwNzlmOGNmZmE3MzEuLjM2YmZhMDY2OTcwOGFiZThhYmJiZTAzMWU3NmNhMTcwYjky
ZjhiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rlc3QvcnVuX2xvb3AuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L3J1bl9sb29wLmgKQEAgLTEwLDExICsxMCwxMyBAQAogI2lmbmRlZiBU
RVNUX1JVTl9MT09QX0hfCiAjZGVmaW5lIFRFU1RfUlVOX0xPT1BfSF8KIAorI2luY2x1ZGUgInRl
c3Qvc2luZ2xlX3RocmVhZGVkX3Rhc2tfcXVldWUuaCIKKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiBu
YW1lc3BhY2UgdGVzdCB7CiAKIC8vIEJsb2NrcyB1bnRpbCB0aGUgdXNlciBwcmVzc2VzIGVudGVy
Lgotdm9pZCBQcmVzc0VudGVyVG9Db250aW51ZSgpOwordm9pZCBQcmVzc0VudGVyVG9Db250aW51
ZShTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmcgJnRhc2tfcXVldWUpOwogCiB9ICAv
LyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9CVUlM
RC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2Nl
bmFyaW8vQlVJTEQuZ24KaW5kZXggMzcwM2FhODRlNzJlNmM1Y2I1NjM5NjA3YTNjNjMzYzMwOGRm
ODYxMy4uZTliZGE1MTEyY2I4YWM5YmQ2MmY4MGI2ODI0MmI5N2RjMjAxOTgxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJp
by9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3NjZW5hcmlvL0JVSUxELmduCkBAIC0zNywxNCArMzcsMTUgQEAgaWYgKHJ0Y19pbmNs
dWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vOnRlc3RfY29tbW9uIiwKICAgICAgICIuLi86dGVzdF9z
dXBwb3J0IiwKICAgICAgICIuLi86dmlkZW9fdGVzdF9jb21tb24iLAotICAgICAgIi4uLy4uOndl
YnJ0Y19jb21tb24iLAogICAgICAgIi4uLy4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25f
YXBpIiwKICAgICAgICIuLi8uLi9hcGk6dHJhbnNwb3J0X2FwaSIsCiAgICAgICAiLi4vLi4vYXBp
L2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeSIsCiAgICAgICAiLi4v
Li4vYXBpL2F1ZGlvX2NvZGVjczpidWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeSIsCisgICAg
ICAiLi4vLi4vYXBpL3Rlc3QvdmlkZW86ZnVuY3Rpb25fdmlkZW9fZmFjdG9yeSIsCiAgICAgICAi
Li4vLi4vYXBpL3VuaXRzOmRhdGFfcmF0ZSIsCiAgICAgICAiLi4vLi4vYXBpL3VuaXRzOnRpbWVf
ZGVsdGEiLAogICAgICAgIi4uLy4uL2FwaS91bml0czp0aW1lc3RhbXAiLAorICAgICAgIi4uLy4u
L2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAogICAg
ICAgIi4uLy4uL2FwaS92aWRlbzp2aWRlb19mcmFtZSIsCiAgICAgICAiLi4vLi4vYXBpL3ZpZGVv
OnZpZGVvX2ZyYW1lX2k0MjAiLAogICAgICAgIi4uLy4uL2FwaS92aWRlb19jb2RlY3M6dmlkZW9f
Y29kZWNzX2FwaSIsCkBAIC04Miw2ICs4Myw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewog
ICAgICAgIi4uLy4uL3J0Y19iYXNlOnJ0Y19iYXNlX2FwcHJvdmVkIiwKICAgICAgICIuLi8uLi9y
dGNfYmFzZTpydGNfYmFzZV90ZXN0c191dGlscyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRj
X3Rhc2tfcXVldWUiLAorICAgICAgIi4uLy4uL3J0Y19iYXNlOnNhZmVfbWlubWF4IiwKICAgICAg
ICIuLi8uLi9ydGNfYmFzZTpzZXF1ZW5jZWRfdGFza19jaGVja2VyIiwKICAgICAgICIuLi8uLi9y
dGNfYmFzZTpzdHJpbmd1dGlscyIsCiAgICAgICAiLi4vLi4vc3lzdGVtX3dyYXBwZXJzIiwKQEAg
LTk0LDYgKzk2LDkgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgfSBlbHNlIGlmIChp
c19pb3MgfHwgaXNfbWFjKSB7CiAgICAgICBkZXBzICs9IFsgIi4uLy4uL21vZHVsZXMvdmlkZW9f
Y29kaW5nOm9iamNfY29kZWNfZmFjdG9yeV9oZWxwZXIiIF0KICAgICB9CisgICAgaWYgKHJ0Y19l
bmFibGVfcHJvdG9idWYpIHsKKyAgICAgIGRlcHMgKz0gWyAiLi4vLi4vbW9kdWxlcy9hdWRpb19j
b2Rpbmc6YW5hX2NvbmZpZ19wcm90byIgXQorICAgIH0KICAgICBpZiAoIWJ1aWxkX3dpdGhfY2hy
b21pdW0gJiYgaXNfY2xhbmcpIHsKICAgICAgIHN1cHByZXNzZWRfY29uZmlncyArPSBbICIvL2J1
aWxkL2NvbmZpZy9jbGFuZzpmaW5kX2JhZF9jb25zdHJ1Y3RzIiBdCiAgICAgfQpAQCAtMTExLDEx
ICsxMTYsMTAgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rlc3RzKSB7CiAgICAgICAiLi4vLi4vbG9nZ2lu
Zzptb2NrcyIsCiAgICAgICAiLi4vLi4vcnRjX2Jhc2U6Y2hlY2tzIiwKICAgICAgICIuLi8uLi9y
dGNfYmFzZTpydGNfYmFzZV9hcHByb3ZlZCIsCi0gICAgICAiLi4vLi4vcnRjX2Jhc2U6cnRjX2Jh
c2VfdGVzdHNfdXRpbHMiLAogICAgICAgIi4uLy4uL3N5c3RlbV93cmFwcGVycyIsCisgICAgICAi
Li4vLi4vc3lzdGVtX3dyYXBwZXJzOmZpZWxkX3RyaWFsIiwKICAgICAgICIuLi8uLi90ZXN0OmZp
ZWxkX3RyaWFsIiwKICAgICAgICIuLi8uLi90ZXN0OnRlc3Rfc3VwcG9ydCIsCi0gICAgICAiLy9z
eXN0ZW1fd3JhcHBlcnM6ZmllbGRfdHJpYWwiLAogICAgICAgIi8vdGVzdGluZy9nbW9jayIsCiAg
ICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvbWVtb3J5IiwKICAgICBdCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Nj
ZW5hcmlvL2F1ZGlvX3N0cmVhbS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vYXVkaW9fc3RyZWFtLmNjCmluZGV4IGJkMzE3ZDk3ZDhi
N2M0ODgxOWEwZGZlNjVhMWNiODY4Nzg4YzZlMWUuLjgzNTliZDA5ZWM1OGVjZTE5ZWY5YmNmZDI2
YjBkZjViY2EwODc0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vYXVkaW9fc3RyZWFtLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vYXVkaW9fc3Ry
ZWFtLmNjCkBAIC05LDEwICs5LDU4IEBACiAgKi8KICNpbmNsdWRlICJ0ZXN0L3NjZW5hcmlvL2F1
ZGlvX3N0cmVhbS5oIgogCisjaW5jbHVkZSAicnRjX2Jhc2UvYml0cmF0ZWFsbG9jYXRpb25zdHJh
dGVneS5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCiAKKyNpZiBXRUJSVENfRU5BQkxF
X1BST1RPQlVGCitSVENfUFVTSF9JR05PUklOR19XVU5ERUYoKQorI2lmZGVmIFdFQlJUQ19BTkRS
T0lEX1BMQVRGT1JNX0JVSUxECisjaW5jbHVkZSAiZXh0ZXJuYWwvd2VicnRjL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9hdWRpb19uZXR3b3JrX2FkYXB0b3IvY29uZmlnLnBiLmgiCisjZWxz
ZQorI2luY2x1ZGUgIm1vZHVsZXMvYXVkaW9fY29kaW5nL2F1ZGlvX25ldHdvcmtfYWRhcHRvci9j
b25maWcucGIuaCIKKyNlbmRpZgorUlRDX1BPUF9JR05PUklOR19XVU5ERUYoKQorI2VuZGlmCisK
IG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgeworbmFtZXNwYWNlIHsKK2Fic2w6
Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBDcmVhdGVBZGFwdGF0aW9uU3RyaW5nKAorICAgIEF1ZGlv
U3RyZWFtQ29uZmlnOjpOZXR3b3JrQWRhcHRhdGlvbiBjb25maWcpIHsKKyNpZiBXRUJSVENfRU5B
QkxFX1BST1RPQlVGCisKKyAgYXVkaW9fbmV0d29ya19hZGFwdG9yOjpjb25maWc6OkNvbnRyb2xs
ZXJNYW5hZ2VyIGNvbnRfY29uZjsKKyAgaWYgKGNvbmZpZy5mcmFtZS5tYXhfcmF0ZV9mb3JfNjBf
bXMuSXNGaW5pdGUoKSkgeworICAgIGF1dG8gY29udHJvbGxlciA9CisgICAgICAgIGNvbnRfY29u
Zi5hZGRfY29udHJvbGxlcnMoKS0+bXV0YWJsZV9mcmFtZV9sZW5ndGhfY29udHJvbGxlcigpOwor
ICAgIGNvbnRyb2xsZXItPnNldF9mbF9kZWNyZWFzaW5nX3BhY2tldF9sb3NzX2ZyYWN0aW9uKAor
ICAgICAgICBjb25maWcuZnJhbWUubWluX3BhY2tldF9sb3NzX2Zvcl9kZWNyZWFzZSk7CisgICAg
Y29udHJvbGxlci0+c2V0X2ZsX2luY3JlYXNpbmdfcGFja2V0X2xvc3NfZnJhY3Rpb24oCisgICAg
ICAgIGNvbmZpZy5mcmFtZS5tYXhfcGFja2V0X2xvc3NfZm9yX2luY3JlYXNlKTsKKworICAgIGNv
bnRyb2xsZXItPnNldF9mbF8yMG1zX3RvXzYwbXNfYmFuZHdpZHRoX2JwcygKKyAgICAgICAgY29u
ZmlnLmZyYW1lLm1pbl9yYXRlX2Zvcl8yMF9tcy5icHM8aW50MzJfdD4oKSk7CisgICAgY29udHJv
bGxlci0+c2V0X2ZsXzYwbXNfdG9fMjBtc19iYW5kd2lkdGhfYnBzKAorICAgICAgICBjb25maWcu
ZnJhbWUubWF4X3JhdGVfZm9yXzYwX21zLmJwczxpbnQzMl90PigpKTsKKworICAgIGlmIChjb25m
aWcuZnJhbWUubWF4X3JhdGVfZm9yXzEyMF9tcy5Jc0Zpbml0ZSgpKSB7CisgICAgICBjb250cm9s
bGVyLT5zZXRfZmxfNjBtc190b18xMjBtc19iYW5kd2lkdGhfYnBzKAorICAgICAgICAgIGNvbmZp
Zy5mcmFtZS5taW5fcmF0ZV9mb3JfNjBfbXMuYnBzPGludDMyX3Q+KCkpOworICAgICAgY29udHJv
bGxlci0+c2V0X2ZsXzEyMG1zX3RvXzYwbXNfYmFuZHdpZHRoX2JwcygKKyAgICAgICAgICBjb25m
aWcuZnJhbWUubWF4X3JhdGVfZm9yXzEyMF9tcy5icHM8aW50MzJfdD4oKSk7CisgICAgfQorICB9
CisgIGNvbnRfY29uZi5hZGRfY29udHJvbGxlcnMoKS0+bXV0YWJsZV9iaXRyYXRlX2NvbnRyb2xs
ZXIoKTsKKyAgc3RkOjpzdHJpbmcgY29uZmlnX3N0cmluZyA9IGNvbnRfY29uZi5TZXJpYWxpemVB
c1N0cmluZygpOworICByZXR1cm4gY29uZmlnX3N0cmluZzsKKyNlbHNlCisgIFJUQ19MT0coTFNf
RVJST1IpIDw8ICJhdWRpb19uZXR3b3JrX2FkYXB0YXRpb24gaXMgZW5hYmxlZCIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIiBidXQgV0VCUlRDX0VOQUJMRV9QUk9UT0JVRiBpcyBmYWxzZS5cbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIklnbm9yaW5nIHNldHRpbmdzLiI7CisgIHJldHVybiBh
YnNsOjpudWxsb3B0OworI2VuZGlmICAvLyBXRUJSVENfRU5BQkxFX1BST1RPQlVGCit9Cit9ICAv
LyBuYW1lc3BhY2UKIAogU2VuZEF1ZGlvU3RyZWFtOjpTZW5kQXVkaW9TdHJlYW0oCiAgICAgQ2Fs
bENsaWVudCogc2VuZGVyLApAQCAtMjAsNyArNjgsOCBAQCBTZW5kQXVkaW9TdHJlYW06OlNlbmRB
dWRpb1N0cmVhbSgKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9FbmNvZGVyRmFjdG9yeT4g
ZW5jb2Rlcl9mYWN0b3J5LAogICAgIFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQpCiAgICAgOiBz
ZW5kZXJfKHNlbmRlciksIGNvbmZpZ18oY29uZmlnKSB7Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29u
ZmlnIHNlbmRfY29uZmlnKHNlbmRfdHJhbnNwb3J0KTsKKyAgQXVkaW9TZW5kU3RyZWFtOjpDb25m
aWcgc2VuZF9jb25maWcoc2VuZF90cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qbWVkaWFfdHJhbnNwb3J0PSovbnVsbHB0cik7CiAgIHNzcmNfID0gc2Vu
ZGVyLT5HZXROZXh0QXVkaW9Tc3JjKCk7CiAgIHNlbmRfY29uZmlnLnJ0cC5zc3JjID0gc3NyY187
CiAgIFNkcEF1ZGlvRm9ybWF0OjpQYXJhbWV0ZXJzIHNkcF9wYXJhbXM7CkBAIC00Miw2ICs5MSwx
MCBAQCBTZW5kQXVkaW9TdHJlYW06OlNlbmRBdWRpb1N0cmVhbSgKICAgICBzZW5kX2NvbmZpZy5z
ZW5kX2NvZGVjX3NwZWMtPnRhcmdldF9iaXRyYXRlX2JwcyA9CiAgICAgICAgIGNvbmZpZy5lbmNv
ZGVyLmZpeGVkX3JhdGUtPmJwcygpOwogCisgIGlmIChjb25maWcubmV0d29ya19hZGFwdGF0aW9u
KSB7CisgICAgc2VuZF9jb25maWcuYXVkaW9fbmV0d29ya19hZGFwdG9yX2NvbmZpZyA9CisgICAg
ICAgIENyZWF0ZUFkYXB0YXRpb25TdHJpbmcoY29uZmlnLmFkYXB0KTsKKyAgfQogICBpZiAoY29u
ZmlnLmVuY29kZXIuYWxsb2NhdGVfYml0cmF0ZSB8fAogICAgICAgY29uZmlnLnN0cmVhbS5pbl9i
YW5kd2lkdGhfZXN0aW1hdGlvbikgewogICAgIERhdGFSYXRlIG1pbl9yYXRlID0gRGF0YVJhdGU6
OkluZmluaXR5KCk7CkBAIC01NCwxMSArMTA3LDIwIEBAIFNlbmRBdWRpb1N0cmVhbTo6U2VuZEF1
ZGlvU3RyZWFtKAogICAgICAgbWF4X3JhdGUgPSAqY29uZmlnLmVuY29kZXIubWF4X3JhdGU7CiAg
ICAgfQogICAgIGlmIChmaWVsZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtU2VuZFNpZGVCd2Ut
V2l0aE92ZXJoZWFkIikpIHsKLSAgICAgIFRpbWVEZWx0YSBmcmFtZV9sZW5ndGggPSBjb25maWcu
ZW5jb2Rlci5pbml0aWFsX2ZyYW1lX2xlbmd0aDsKKyAgICAgIFRpbWVEZWx0YSBtaW5fZnJhbWVf
bGVuZ3RoID0gVGltZURlbHRhOjptcygyMCk7CisgICAgICAvLyBOb3RlLCBkZXBlbmRzIG9uIFdF
QlJUQ19PUFVTX1NVUFBPUlRfMTIwTVNfUFRJTUUgYmVpbmcgc2V0LCB3aGljaCBpcworICAgICAg
Ly8gdGhlIGRlZmF1bHQuCisgICAgICBUaW1lRGVsdGEgbWF4X2ZyYW1lX2xlbmd0aCA9IFRpbWVE
ZWx0YTo6bXMoMTIwKTsKICAgICAgIERhdGFTaXplIHJ0cF9vdmVyaGVhZCA9IERhdGFTaXplOjpi
eXRlcygxMik7Ci0gICAgICBEYXRhU2l6ZSB0b3RhbF9vdmVyaGVhZCA9IGNvbmZpZy5zdHJlYW0u
cGFja2V0X292ZXJoZWFkICsgcnRwX292ZXJoZWFkOwotICAgICAgbWluX3JhdGUgKz0gdG90YWxf
b3ZlcmhlYWQgLyBmcmFtZV9sZW5ndGg7Ci0gICAgICBtYXhfcmF0ZSArPSB0b3RhbF9vdmVyaGVh
ZCAvIGZyYW1lX2xlbmd0aDsKKyAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1
ZGUgcnRwIGV4dGVuc2lvbiBvdmVyaGVhZCBhbmQgd2lsbCBub3QKKyAgICAgIC8vIGZvbGxvdyB1
cGRhdGVzIGluIHRoZSB0cmFuc3BvcnQgb3ZlcmhlYWQgb3ZlciB0aW1lLgorICAgICAgRGF0YVNp
emUgdG90YWxfb3ZlcmhlYWQgPQorICAgICAgICAgIHNlbmRlcl8tPnRyYW5zcG9ydF8ucGFja2V0
X292ZXJoZWFkKCkgKyBydHBfb3ZlcmhlYWQ7CisKKyAgICAgIG1pbl9yYXRlICs9IHRvdGFsX292
ZXJoZWFkIC8gbWF4X2ZyYW1lX2xlbmd0aDsKKyAgICAgIC8vIEluIFdlYlJUQ1ZvaWNlRW5naW5l
IHRoZSBtYXggcmF0ZSBpcyBhbHNvIGJhc2VkIG9uIHRoZSBtYXggZnJhbWUKKyAgICAgIC8vIGxl
bmd0aC4KKyAgICAgIG1heF9yYXRlICs9IHRvdGFsX292ZXJoZWFkIC8gbWluX2ZyYW1lX2xlbmd0
aDsKICAgICB9CiAgICAgc2VuZF9jb25maWcubWluX2JpdHJhdGVfYnBzID0gbWluX3JhdGUuYnBz
KCk7CiAgICAgc2VuZF9jb25maWcubWF4X2JpdHJhdGVfYnBzID0gbWF4X3JhdGUuYnBzKCk7CkBA
IC03MCwxMyArMTMyLDE3IEBAIFNlbmRBdWRpb1N0cmVhbTo6U2VuZEF1ZGlvU3RyZWFtKAogICAg
ICAgICB7UnRwRXh0ZW5zaW9uOjprVHJhbnNwb3J0U2VxdWVuY2VOdW1iZXJVcmksIDh9fTsKICAg
fQogCi0gIGlmIChjb25maWcuc3RyZWFtLnJhdGVfYWxsb2NhdGlvbl9wcmlvcml0eSkgeworICBp
ZiAoY29uZmlnLmVuY29kZXIucHJpb3JpdHlfcmF0ZSkgewogICAgIHNlbmRfY29uZmlnLnRyYWNr
X2lkID0gc2VuZGVyLT5HZXROZXh0UHJpb3JpdHlJZCgpOworICAgIHNlbmRlcl8tPmNhbGxfLT5T
ZXRCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5KAorICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxy
dGM6OkF1ZGlvUHJpb3JpdHlCaXRyYXRlQWxsb2NhdGlvblN0cmF0ZWd5PigKKyAgICAgICAgICAg
IHNlbmRfY29uZmlnLnRyYWNrX2lkLAorICAgICAgICAgICAgY29uZmlnLmVuY29kZXIucHJpb3Jp
dHlfcmF0ZS0+YnBzPHVpbnQzMl90PigpKSk7CiAgIH0KICAgc2VuZF9zdHJlYW1fID0gc2VuZGVy
Xy0+Y2FsbF8tPkNyZWF0ZUF1ZGlvU2VuZFN0cmVhbShzZW5kX2NvbmZpZyk7CiAgIGlmIChmaWVs
ZF90cmlhbDo6SXNFbmFibGVkKCJXZWJSVEMtU2VuZFNpZGVCd2UtV2l0aE92ZXJoZWFkIikpIHsK
ICAgICBzZW5kZXItPmNhbGxfLT5PbkF1ZGlvVHJhbnNwb3J0T3ZlcmhlYWRDaGFuZ2VkKAotICAg
ICAgICBjb25maWcuc3RyZWFtLnBhY2tldF9vdmVyaGVhZC5ieXRlcygpKTsKKyAgICAgICAgc2Vu
ZGVyXy0+dHJhbnNwb3J0Xy5wYWNrZXRfb3ZlcmhlYWQoKS5ieXRlcygpKTsKICAgfQogfQogCkBA
IC04NiwxNyArMTUyLDE5IEBAIFNlbmRBdWRpb1N0cmVhbTo6flNlbmRBdWRpb1N0cmVhbSgpIHsK
IAogdm9pZCBTZW5kQXVkaW9TdHJlYW06OlN0YXJ0KCkgewogICBzZW5kX3N0cmVhbV8tPlN0YXJ0
KCk7CisgIHNlbmRlcl8tPmNhbGxfLT5TaWduYWxDaGFubmVsTmV0d29ya1N0YXRlKE1lZGlhVHlw
ZTo6QVVESU8sIGtOZXR3b3JrVXApOwogfQogCi1ib29sIFNlbmRBdWRpb1N0cmVhbTo6VHJ5RGVs
aXZlclBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlY2VpdmVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKLSAgLy8gUmVt
b3ZlcyBhZGRlZCBvdmVyaGVhZCBiZWZvcmUgZGVsaXZlcmluZyBSVENQIHBhY2tldCB0byBzZW5k
ZXIuCi0gIFJUQ19EQ0hFQ0tfR0UocGFja2V0LnNpemUoKSwgY29uZmlnXy5zdHJlYW0ucGFja2V0
X292ZXJoZWFkLmJ5dGVzKCkpOwotICBwYWNrZXQuU2V0U2l6ZShwYWNrZXQuc2l6ZSgpIC0gY29u
ZmlnXy5zdHJlYW0ucGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwotICBzZW5kZXJfLT5EZWxpdmVy
UGFja2V0KE1lZGlhVHlwZTo6QVVESU8sIHBhY2tldCwgYXRfdGltZSk7Ci0gIHJldHVybiB0cnVl
OworQ29sdW1uUHJpbnRlciBTZW5kQXVkaW9TdHJlYW06OlN0YXRzUHJpbnRlcigpIHsKKyAgcmV0
dXJuIENvbHVtblByaW50ZXI6OkxhbWJkYSgKKyAgICAgICJhdWRpb190YXJnZXRfcmF0ZSIsCisg
ICAgICBbdGhpc10ocnRjOjpTaW1wbGVTdHJpbmdCdWlsZGVyJiBzYikgeworICAgICAgICBBdWRp
b1NlbmRTdHJlYW06OlN0YXRzIHN0YXRzID0gc2VuZF9zdHJlYW1fLT5HZXRTdGF0cygpOworICAg
ICAgICBzYi5BcHBlbmRGb3JtYXQoIiUuMGxmIiwgc3RhdHMudGFyZ2V0X2JpdHJhdGVfYnBzIC8g
OC4wKTsKKyAgICAgIH0sCisgICAgICA2NCk7CiB9CisKIFJlY2VpdmVBdWRpb1N0cmVhbTo6UmVj
ZWl2ZUF1ZGlvU3RyZWFtKAogICAgIENhbGxDbGllbnQqIHJlY2VpdmVyLAogICAgIEF1ZGlvU3Ry
ZWFtQ29uZmlnIGNvbmZpZywKQEAgLTEwOCwxMSArMTc2LDEzIEBAIFJlY2VpdmVBdWRpb1N0cmVh
bTo6UmVjZWl2ZUF1ZGlvU3RyZWFtKAogICByZWN2X2NvbmZpZy5ydHAubG9jYWxfc3NyYyA9IENh
bGxUZXN0OjprUmVjZWl2ZXJMb2NhbEF1ZGlvU3NyYzsKICAgcmVjdl9jb25maWcucnRjcF9zZW5k
X3RyYW5zcG9ydCA9IGZlZWRiYWNrX3RyYW5zcG9ydDsKICAgcmVjdl9jb25maWcucnRwLnJlbW90
ZV9zc3JjID0gc2VuZF9zdHJlYW0tPnNzcmNfOworICByZWNlaXZlci0+c3NyY19tZWRpYV90eXBl
c19bcmVjdl9jb25maWcucnRwLnJlbW90ZV9zc3JjXSA9IE1lZGlhVHlwZTo6QVVESU87CiAgIGlm
IChjb25maWcuc3RyZWFtLmluX2JhbmR3aWR0aF9lc3RpbWF0aW9uKSB7CiAgICAgcmVjdl9jb25m
aWcucnRwLnRyYW5zcG9ydF9jYyA9IHRydWU7CiAgICAgcmVjdl9jb25maWcucnRwLmV4dGVuc2lv
bnMgPSB7CiAgICAgICAgIHtSdHBFeHRlbnNpb246OmtUcmFuc3BvcnRTZXF1ZW5jZU51bWJlclVy
aSwgOH19OwogICB9CisgIHJlY2VpdmVyXy0+QWRkRXh0ZW5zaW9ucyhyZWN2X2NvbmZpZy5ydHAu
ZXh0ZW5zaW9ucyk7CiAgIHJlY3ZfY29uZmlnLmRlY29kZXJfZmFjdG9yeSA9IGRlY29kZXJfZmFj
dG9yeTsKICAgcmVjdl9jb25maWcuZGVjb2Rlcl9tYXAgPSB7CiAgICAgICB7Q2FsbFRlc3Q6OmtB
dWRpb1NlbmRQYXlsb2FkVHlwZSwgeyJvcHVzIiwgNDgwMDAsIDJ9fX07CkBAIC0xMjMsNDkgKzE5
MywyNiBAQCBSZWNlaXZlQXVkaW9TdHJlYW06On5SZWNlaXZlQXVkaW9TdHJlYW0oKSB7CiAgIHJl
Y2VpdmVyXy0+Y2FsbF8tPkRlc3Ryb3lBdWRpb1JlY2VpdmVTdHJlYW0ocmVjZWl2ZV9zdHJlYW1f
KTsKIH0KIAotYm9vbCBSZWNlaXZlQXVkaW9TdHJlYW06OlRyeURlbGl2ZXJQYWNrZXQocnRjOjpD
b3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSB7Ci0gIFJUQ19EQ0hFQ0tfR0UocGFj
a2V0LnNpemUoKSwgY29uZmlnXy5zdHJlYW0ucGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwotICBw
YWNrZXQuU2V0U2l6ZShwYWNrZXQuc2l6ZSgpIC0gY29uZmlnXy5zdHJlYW0ucGFja2V0X292ZXJo
ZWFkLmJ5dGVzKCkpOwotICByZWNlaXZlcl8tPkRlbGl2ZXJQYWNrZXQoTWVkaWFUeXBlOjpBVURJ
TywgcGFja2V0LCBhdF90aW1lKTsKLSAgcmV0dXJuIHRydWU7Cit2b2lkIFJlY2VpdmVBdWRpb1N0
cmVhbTo6U3RhcnQoKSB7CisgIHJlY2VpdmVfc3RyZWFtXy0+U3RhcnQoKTsKKyAgcmVjZWl2ZXJf
LT5jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdvcmtTdGF0ZShNZWRpYVR5cGU6OkFVRElPLCBrTmV0
d29ya1VwKTsKIH0KIAogQXVkaW9TdHJlYW1QYWlyOjp+QXVkaW9TdHJlYW1QYWlyKCkgPSBkZWZh
dWx0OwogCiBBdWRpb1N0cmVhbVBhaXI6OkF1ZGlvU3RyZWFtUGFpcigKICAgICBDYWxsQ2xpZW50
KiBzZW5kZXIsCi0gICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAg
dWludDY0X3Qgc2VuZF9yZWNlaXZlcl9pZCwKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9F
bmNvZGVyRmFjdG9yeT4gZW5jb2Rlcl9mYWN0b3J5LAogICAgIENhbGxDbGllbnQqIHJlY2VpdmVy
LAotICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmssCi0gICAgdWludDY0
X3QgcmV0dXJuX3JlY2VpdmVyX2lkLAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0RlY29k
ZXJGYWN0b3J5PiBkZWNvZGVyX2ZhY3RvcnksCiAgICAgQXVkaW9TdHJlYW1Db25maWcgY29uZmln
KQogICAgIDogY29uZmlnXyhjb25maWcpLAotICAgICAgc2VuZF9saW5rXyhzZW5kX2xpbmspLAot
ICAgICAgcmV0dXJuX2xpbmtfKHJldHVybl9saW5rKSwKLSAgICAgIHNlbmRfdHJhbnNwb3J0Xyhz
ZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgc2VuZF9saW5rLmZyb250KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgc2VuZF9yZWNlaXZlcl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICBj
b25maWcuc3RyZWFtLnBhY2tldF9vdmVyaGVhZCksCi0gICAgICByZXR1cm5fdHJhbnNwb3J0Xyhy
ZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9saW5rLmZyb250KCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fcmVjZWl2ZXJfaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb25maWcuc3RyZWFtLnBhY2tldF9vdmVyaGVhZCksCi0gICAgICBzZW5kX3N0
cmVhbV8oc2VuZGVyLCBjb25maWcsIGVuY29kZXJfZmFjdG9yeSwgJnNlbmRfdHJhbnNwb3J0Xyks
CisgICAgICBzZW5kX3N0cmVhbV8oc2VuZGVyLCBjb25maWcsIGVuY29kZXJfZmFjdG9yeSwgJnNl
bmRlci0+dHJhbnNwb3J0XyksCiAgICAgICByZWNlaXZlX3N0cmVhbV8ocmVjZWl2ZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICZzZW5kX3N0
cmVhbV8sCiAgICAgICAgICAgICAgICAgICAgICAgZGVjb2Rlcl9mYWN0b3J5LAotICAgICAgICAg
ICAgICAgICAgICAgICZyZXR1cm5fdHJhbnNwb3J0XykgewotICBOZXR3b3JrTm9kZTo6Um91dGUo
c2VuZF90cmFuc3BvcnRfLlJlY2VpdmVySWQoKSwgc2VuZF9saW5rXywKLSAgICAgICAgICAgICAg
ICAgICAgICZyZWNlaXZlX3N0cmVhbV8pOwotICBOZXR3b3JrTm9kZTo6Um91dGUocmV0dXJuX3Ry
YW5zcG9ydF8uUmVjZWl2ZXJJZCgpLCByZXR1cm5fbGlua18sCi0gICAgICAgICAgICAgICAgICAg
ICAmc2VuZF9zdHJlYW1fKTsKLX0KKyAgICAgICAgICAgICAgICAgICAgICAmcmVjZWl2ZXItPnRy
YW5zcG9ydF8pIHt9CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiB9ICAvLyBuYW1lc3BhY2Ugd2Vi
cnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3NjZW5hcmlvL2F1ZGlvX3N0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9hdWRpb19zdHJlYW0uaAppbmRleCAxN2I4
YmMzNzBlZmQzZDE5MjE1OThiODYwZmIwZjg3YjMwMjM4OTI2Li4zYWIwYTFmMmRlZjc0YzllYmQ4
N2QzNWM5ZWNiNTc4YTIzZDJmZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2F1ZGlvX3N0cmVhbS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vYXVk
aW9fc3RyZWFtLmgKQEAgLTI0LDExICsyNCwxMiBAQCBuYW1lc3BhY2UgdGVzdCB7CiAKIC8vIFNl
bmRBdWRpb1N0cmVhbSByZXByZXNlbnRzIHNlbmRpbmcgb2YgYXVkaW8uIEl0IGNhbiBiZSB1c2Vk
IGZvciBzdGFydGluZyB0aGUKIC8vIHN0cmVhbSBpZiBuZWNjZXNzYXJ5LgotY2xhc3MgU2VuZEF1
ZGlvU3RyZWFtIDogcHVibGljIE5ldHdvcmtSZWNlaXZlckludGVyZmFjZSB7CitjbGFzcyBTZW5k
QXVkaW9TdHJlYW0gewogIHB1YmxpYzoKICAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihT
ZW5kQXVkaW9TdHJlYW0pOwogICB+U2VuZEF1ZGlvU3RyZWFtKCk7CiAgIHZvaWQgU3RhcnQoKTsK
KyAgQ29sdW1uUHJpbnRlciBTdGF0c1ByaW50ZXIoKTsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBj
bGFzcyBTY2VuYXJpbzsKQEAgLTM4LDExICszOSw2IEBAIGNsYXNzIFNlbmRBdWRpb1N0cmVhbSA6
IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgewogICAgICAgICAgICAgICAgICAgQXVk
aW9TdHJlYW1Db25maWcgY29uZmlnLAogICAgICAgICAgICAgICAgICAgcnRjOjpzY29wZWRfcmVm
cHRyPEF1ZGlvRW5jb2RlckZhY3Rvcnk+IGVuY29kZXJfZmFjdG9yeSwKICAgICAgICAgICAgICAg
ICAgIFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQpOwotICAvLyBIYW5kbGVzIFJUQ1AgZmVlZGJh
Y2sgZm9yIHRoaXMgc3RyZWFtLgotICBib29sIFRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25X
cml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNl
aXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBhdF90aW1lKSBvdmVycmlk
ZTsKLQogICBBdWRpb1NlbmRTdHJlYW0qIHNlbmRfc3RyZWFtXyA9IG51bGxwdHI7CiAgIENhbGxD
bGllbnQqIGNvbnN0IHNlbmRlcl87CiAgIGNvbnN0IEF1ZGlvU3RyZWFtQ29uZmlnIGNvbmZpZ187
CkBAIC01MCwxMCArNDYsMTEgQEAgY2xhc3MgU2VuZEF1ZGlvU3RyZWFtIDogcHVibGljIE5ldHdv
cmtSZWNlaXZlckludGVyZmFjZSB7CiB9OwogCiAvLyBSZWNlaXZlQXVkaW9TdHJlYW0gcmVwcmVz
ZW50cyBhbiBhdWRpbyByZWNlaXZlci4gSXQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseS4KLWNsYXNz
IFJlY2VpdmVBdWRpb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2Ugewor
Y2xhc3MgUmVjZWl2ZUF1ZGlvU3RyZWFtIHsKICBwdWJsaWM6CiAgIFJUQ19ESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oUmVjZWl2ZUF1ZGlvU3RyZWFtKTsKICAgflJlY2VpdmVBdWRpb1N0cmVhbSgp
OworICB2b2lkIFN0YXJ0KCk7CiAKICBwcml2YXRlOgogICBmcmllbmQgY2xhc3MgU2NlbmFyaW87
CkBAIC02Myw5ICs2MCw2IEBAIGNsYXNzIFJlY2VpdmVBdWRpb1N0cmVhbSA6IHB1YmxpYyBOZXR3
b3JrUmVjZWl2ZXJJbnRlcmZhY2UgewogICAgICAgICAgICAgICAgICAgICAgU2VuZEF1ZGlvU3Ry
ZWFtKiBzZW5kX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjxBdWRpb0RlY29kZXJGYWN0b3J5PiBkZWNvZGVyX2ZhY3RvcnksCiAgICAgICAgICAgICAgICAg
ICAgICBUcmFuc3BvcnQqIGZlZWRiYWNrX3RyYW5zcG9ydCk7Ci0gIGJvb2wgVHJ5RGVsaXZlclBh
Y2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ2NF90IHJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1w
IGF0X3RpbWUpIG92ZXJyaWRlOwogICBBdWRpb1JlY2VpdmVTdHJlYW0qIHJlY2VpdmVfc3RyZWFt
XyA9IG51bGxwdHI7CiAgIENhbGxDbGllbnQqIGNvbnN0IHJlY2VpdmVyXzsKICAgY29uc3QgQXVk
aW9TdHJlYW1Db25maWcgY29uZmlnXzsKQEAgLTg0LDIzICs3OCwxMyBAQCBjbGFzcyBBdWRpb1N0
cmVhbVBhaXIgewogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyBTY2VuYXJpbzsKICAgQXVkaW9T
dHJlYW1QYWlyKENhbGxDbGllbnQqIHNlbmRlciwKLSAgICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPE5ldHdvcmtOb2RlKj4gc2VuZF9saW5rLAotICAgICAgICAgICAgICAgICAgdWludDY0X3Qg
c2VuZF9yZWNlaXZlcl9pZCwKICAgICAgICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxB
dWRpb0VuY29kZXJGYWN0b3J5PiBlbmNvZGVyX2ZhY3RvcnksCi0KICAgICAgICAgICAgICAgICAg
IENhbGxDbGllbnQqIHJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0
d29ya05vZGUqPiByZXR1cm5fbGluaywKLSAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJldHVy
bl9yZWNlaXZlcl9pZCwKICAgICAgICAgICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRp
b0RlY29kZXJGYWN0b3J5PiBkZWNvZGVyX2ZhY3RvcnksCiAgICAgICAgICAgICAgICAgICBBdWRp
b1N0cmVhbUNvbmZpZyBjb25maWcpOwogCiAgcHJpdmF0ZToKICAgY29uc3QgQXVkaW9TdHJlYW1D
b25maWcgY29uZmlnXzsKLSAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmtfOwot
ICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rXzsKLSAgTmV0d29ya05vZGVU
cmFuc3BvcnQgc2VuZF90cmFuc3BvcnRfOwotICBOZXR3b3JrTm9kZVRyYW5zcG9ydCByZXR1cm5f
dHJhbnNwb3J0XzsKLQogICBTZW5kQXVkaW9TdHJlYW0gc2VuZF9zdHJlYW1fOwogICBSZWNlaXZl
QXVkaW9TdHJlYW0gcmVjZWl2ZV9zdHJlYW1fOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vY2FsbF9jbGllbnQu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5h
cmlvL2NhbGxfY2xpZW50LmNjCmluZGV4IDQ3Y2MzYmM1N2I4MmQyNTM2ZTIyZmNkZTllNjJjMzdi
YTQzZDI2MGUuLjg2ZWI0ZGMxZGI2YTQwYTVmODUxNjlhMzZmZTJlNDY0MTFjZTUzYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2Nl
bmFyaW8vY2FsbF9jbGllbnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9jYWxsX2NsaWVudC5jYwpAQCAtMjEsNiArMjEsMzkg
QEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CiBuYW1lc3BhY2UgewogY29u
c3QgY2hhcioga1ByaW9yaXR5U3RyZWFtSWQgPSAicHJpb3JpdHktdHJhY2siOworCitDYWxsQ2xp
ZW50RmFrZUF1ZGlvIEluaXRBdWRpbygpIHsKKyAgQ2FsbENsaWVudEZha2VBdWRpbyBzZXR1cDsK
KyAgYXV0byBjYXB0dXJlciA9IFRlc3RBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRlUHVsc2VkTm9p
c2VDYXB0dXJlcigyNTYsIDQ4MDAwKTsKKyAgYXV0byByZW5kZXJlciA9IFRlc3RBdWRpb0Rldmlj
ZU1vZHVsZTo6Q3JlYXRlRGlzY2FyZFJlbmRlcmVyKDQ4MDAwKTsKKyAgc2V0dXAuZmFrZV9hdWRp
b19kZXZpY2UgPSBUZXN0QXVkaW9EZXZpY2VNb2R1bGU6OkNyZWF0ZVRlc3RBdWRpb0RldmljZU1v
ZHVsZSgKKyAgICAgIHN0ZDo6bW92ZShjYXB0dXJlciksIHN0ZDo6bW92ZShyZW5kZXJlciksIDEu
Zik7CisgIHNldHVwLmFwbSA9IEF1ZGlvUHJvY2Vzc2luZ0J1aWxkZXIoKS5DcmVhdGUoKTsKKyAg
c2V0dXAuZmFrZV9hdWRpb19kZXZpY2UtPkluaXQoKTsKKyAgQXVkaW9TdGF0ZTo6Q29uZmlnIGF1
ZGlvX3N0YXRlX2NvbmZpZzsKKyAgYXVkaW9fc3RhdGVfY29uZmlnLmF1ZGlvX21peGVyID0gQXVk
aW9NaXhlckltcGw6OkNyZWF0ZSgpOworICBhdWRpb19zdGF0ZV9jb25maWcuYXVkaW9fcHJvY2Vz
c2luZyA9IHNldHVwLmFwbTsKKyAgYXVkaW9fc3RhdGVfY29uZmlnLmF1ZGlvX2RldmljZV9tb2R1
bGUgPSBzZXR1cC5mYWtlX2F1ZGlvX2RldmljZTsKKyAgc2V0dXAuYXVkaW9fc3RhdGUgPSBBdWRp
b1N0YXRlOjpDcmVhdGUoYXVkaW9fc3RhdGVfY29uZmlnKTsKKyAgc2V0dXAuZmFrZV9hdWRpb19k
ZXZpY2UtPlJlZ2lzdGVyQXVkaW9DYWxsYmFjaygKKyAgICAgIHNldHVwLmF1ZGlvX3N0YXRlLT5h
dWRpb190cmFuc3BvcnQoKSk7CisgIHJldHVybiBzZXR1cDsKK30KKworQ2FsbCogQ3JlYXRlQ2Fs
bChDYWxsQ2xpZW50Q29uZmlnIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgTG9nZ2luZ05ldHdv
cmtDb250cm9sbGVyRmFjdG9yeSogbmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnlfLAorICAgICAg
ICAgICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9TdGF0ZT4gYXVkaW9fc3RhdGUpIHsK
KyAgQ2FsbENvbmZpZyBjYWxsX2NvbmZpZyhuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV8tPkdl
dEV2ZW50TG9nKCkpOworICBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5tYXhfYml0cmF0ZV9i
cHMgPQorICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5tYXhfcmF0ZS5icHNfb3IoLTEpOwor
ICBjYWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5taW5fYml0cmF0ZV9icHMgPQorICAgICAgY29u
ZmlnLnRyYW5zcG9ydC5yYXRlcy5taW5fcmF0ZS5icHMoKTsKKyAgY2FsbF9jb25maWcuYml0cmF0
ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMgPQorICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRl
cy5zdGFydF9yYXRlLmJwcygpOworICBjYWxsX2NvbmZpZy5uZXR3b3JrX2NvbnRyb2xsZXJfZmFj
dG9yeSA9IG5ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5XzsKKyAgY2FsbF9jb25maWcuYXVkaW9f
c3RhdGUgPSBhdWRpb19zdGF0ZTsKKyAgcmV0dXJuIENhbGw6OkNyZWF0ZShjYWxsX2NvbmZpZyk7
Cit9CiB9CiAKIExvZ2dpbmdOZXR3b3JrQ29udHJvbGxlckZhY3Rvcnk6OkxvZ2dpbmdOZXR3b3Jr
Q29udHJvbGxlckZhY3RvcnkoCkBAIC0xMDcsMzEgKzE0MCwxNyBAQCBDYWxsQ2xpZW50OjpDYWxs
Q2xpZW50KENsb2NrKiBjbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcg
bG9nX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBDYWxsQ2xpZW50Q29uZmlnIGNv
bmZpZykKICAgICA6IGNsb2NrXyhjbG9jayksCi0gICAgICBuZXR3b3JrX2NvbnRyb2xsZXJfZmFj
dG9yeV8obG9nX2ZpbGVuYW1lLCBjb25maWcudHJhbnNwb3J0KSB7Ci0gIENhbGxDb25maWcgY2Fs
bF9jb25maWcobmV0d29ya19jb250cm9sbGVyX2ZhY3RvcnlfLkdldEV2ZW50TG9nKCkpOwotICBj
YWxsX2NvbmZpZy5iaXRyYXRlX2NvbmZpZy5tYXhfYml0cmF0ZV9icHMgPQotICAgICAgY29uZmln
LnRyYW5zcG9ydC5yYXRlcy5tYXhfcmF0ZS5icHNfb3IoLTEpOwotICBjYWxsX2NvbmZpZy5iaXRy
YXRlX2NvbmZpZy5taW5fYml0cmF0ZV9icHMgPQotICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRl
cy5taW5fcmF0ZS5icHMoKTsKLSAgY2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcuc3RhcnRfYml0
cmF0ZV9icHMgPQotICAgICAgY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlLmJwcygp
OwotICBjYWxsX2NvbmZpZy5uZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeSA9ICZuZXR3b3JrX2Nv
bnRyb2xsZXJfZmFjdG9yeV87Ci0gIGNhbGxfY29uZmlnLmF1ZGlvX3N0YXRlID0gSW5pdEF1ZGlv
KCk7Ci0gIGNhbGxfLnJlc2V0KENhbGw6OkNyZWF0ZShjYWxsX2NvbmZpZykpOwotICBpZiAoIWNv
bmZpZy5wcmlvcml0eV90YXJnZXRfcmF0ZS5Jc1plcm8oKSAmJgotICAgICAgY29uZmlnLnByaW9y
aXR5X3RhcmdldF9yYXRlLklzRmluaXRlKCkpIHsKLSAgICBjYWxsXy0+U2V0Qml0cmF0ZUFsbG9j
YXRpb25TdHJhdGVneSgKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8cnRjOjpBdWRpb1ByaW9y
aXR5Qml0cmF0ZUFsbG9jYXRpb25TdHJhdGVneT4oCi0gICAgICAgICAgICBrUHJpb3JpdHlTdHJl
YW1JZCwgY29uZmlnLnByaW9yaXR5X3RhcmdldF9yYXRlLmJwcygpKSk7Ci0gIH0KKyAgICAgIG5l
dHdvcmtfY29udHJvbGxlcl9mYWN0b3J5Xyhsb2dfZmlsZW5hbWUsIGNvbmZpZy50cmFuc3BvcnQp
LAorICAgICAgZmFrZV9hdWRpb19zZXR1cF8oSW5pdEF1ZGlvKCkpLAorICAgICAgY2FsbF8oQ3Jl
YXRlQ2FsbChjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICZuZXR3b3JrX2NvbnRyb2xs
ZXJfZmFjdG9yeV8sCisgICAgICAgICAgICAgICAgICAgICAgIGZha2VfYXVkaW9fc2V0dXBfLmF1
ZGlvX3N0YXRlKSksCisgICAgICB0cmFuc3BvcnRfKGNsb2NrXywgY2FsbF8uZ2V0KCkpLAorICAg
ICAgaGVhZGVyX3BhcnNlcl8oUnRwSGVhZGVyUGFyc2VyOjpDcmVhdGUoKSkgewogfSAgLy8gbmFt
ZXNwYWNlIHRlc3QKIAotQ2FsbENsaWVudDo6fkNhbGxDbGllbnQoKSB7fQotCi12b2lkIENhbGxD
bGllbnQ6OkRlbGl2ZXJQYWNrZXQoTWVkaWFUeXBlIG1lZGlhX3R5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIHsKLSAgY2FsbF8tPlJl
Y2VpdmVyKCktPkRlbGl2ZXJQYWNrZXQobWVkaWFfdHlwZSwgcGFja2V0LCBhdF90aW1lLnVzKCkp
OworQ2FsbENsaWVudDo6fkNhbGxDbGllbnQoKSB7CisgIGRlbGV0ZSBoZWFkZXJfcGFyc2VyXzsK
IH0KIAogQ29sdW1uUHJpbnRlciBDYWxsQ2xpZW50OjpTdGF0c1ByaW50ZXIoKSB7CkBAIC0xNDks
NiArMTY4LDI2IEBAIENhbGw6OlN0YXRzIENhbGxDbGllbnQ6OkdldFN0YXRzKCkgewogICByZXR1
cm4gY2FsbF8tPkdldFN0YXRzKCk7CiB9CiAKK2Jvb2wgQ2FsbENsaWVudDo6VHJ5RGVsaXZlclBh
Y2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUaW1lc3RhbXAgYXRfdGltZSkgeworICAvLyBSZW1vdmVzIGFkZGVkIG92ZXJo
ZWFkIGJlZm9yZSBkZWxpdmVyaW5nIHBhY2tldCB0byBzZW5kZXIuCisgIFJUQ19EQ0hFQ0tfR0Uo
cGFja2V0LnNpemUoKSwgcm91dGVfb3ZlcmhlYWRfLmF0KHJlY2VpdmVyKS5ieXRlcygpKTsKKyAg
cGFja2V0LlNldFNpemUocGFja2V0LnNpemUoKSAtIHJvdXRlX292ZXJoZWFkXy5hdChyZWNlaXZl
cikuYnl0ZXMoKSk7CisKKyAgTWVkaWFUeXBlIG1lZGlhX3R5cGUgPSBNZWRpYVR5cGU6OkFOWTsK
KyAgaWYgKCFSdHBIZWFkZXJQYXJzZXI6OklzUnRjcChwYWNrZXQuY2RhdGEoKSwgcGFja2V0LnNp
emUoKSkpIHsKKyAgICBSVFBIZWFkZXIgaGVhZGVyOworICAgIGJvb2wgc3VjY2VzcyA9CisgICAg
ICAgIGhlYWRlcl9wYXJzZXJfLT5QYXJzZShwYWNrZXQuY2RhdGEoKSwgcGFja2V0LnNpemUoKSwg
JmhlYWRlcik7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1l
ZGlhX3R5cGUgPSBzc3JjX21lZGlhX3R5cGVzX1toZWFkZXIuc3NyY107CisgIH0KKyAgY2FsbF8t
PlJlY2VpdmVyKCktPkRlbGl2ZXJQYWNrZXQobWVkaWFfdHlwZSwgcGFja2V0LCBhdF90aW1lLnVz
KCkpOworICByZXR1cm4gdHJ1ZTsKK30KKwogdWludDMyX3QgQ2FsbENsaWVudDo6R2V0TmV4dFZp
ZGVvU3NyYygpIHsKICAgUlRDX0NIRUNLX0xUKG5leHRfdmlkZW9fc3NyY19pbmRleF8sIENhbGxU
ZXN0OjprTnVtU3NyY3MpOwogICByZXR1cm4gQ2FsbFRlc3Q6OmtWaWRlb1NlbmRTc3Jjc1tuZXh0
X3ZpZGVvX3NzcmNfaW5kZXhfKytdOwpAQCAtMTcwLDIxICsyMDksMTIgQEAgc3RkOjpzdHJpbmcg
Q2FsbENsaWVudDo6R2V0TmV4dFByaW9yaXR5SWQoKSB7CiAgIHJldHVybiBrUHJpb3JpdHlTdHJl
YW1JZDsKIH0KIAotcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvU3RhdGU+IENhbGxDbGllbnQ6Oklu
aXRBdWRpbygpIHsKLSAgYXV0byBjYXB0dXJlciA9IFRlc3RBdWRpb0RldmljZU1vZHVsZTo6Q3Jl
YXRlUHVsc2VkTm9pc2VDYXB0dXJlcigyNTYsIDQ4MDAwKTsKLSAgYXV0byByZW5kZXJlciA9IFRl
c3RBdWRpb0RldmljZU1vZHVsZTo6Q3JlYXRlRGlzY2FyZFJlbmRlcmVyKDQ4MDAwKTsKLSAgZmFr
ZV9hdWRpb19kZXZpY2VfID0gVGVzdEF1ZGlvRGV2aWNlTW9kdWxlOjpDcmVhdGVUZXN0QXVkaW9E
ZXZpY2VNb2R1bGUoCi0gICAgICBzdGQ6Om1vdmUoY2FwdHVyZXIpLCBzdGQ6Om1vdmUocmVuZGVy
ZXIpLCAxLmYpOwotICBhcG1fID0gQXVkaW9Qcm9jZXNzaW5nQnVpbGRlcigpLkNyZWF0ZSgpOwot
ICBmYWtlX2F1ZGlvX2RldmljZV8tPkluaXQoKTsKLSAgQXVkaW9TdGF0ZTo6Q29uZmlnIGF1ZGlv
X3N0YXRlX2NvbmZpZzsKLSAgYXVkaW9fc3RhdGVfY29uZmlnLmF1ZGlvX21peGVyID0gQXVkaW9N
aXhlckltcGw6OkNyZWF0ZSgpOwotICBhdWRpb19zdGF0ZV9jb25maWcuYXVkaW9fcHJvY2Vzc2lu
ZyA9IGFwbV87Ci0gIGF1ZGlvX3N0YXRlX2NvbmZpZy5hdWRpb19kZXZpY2VfbW9kdWxlID0gZmFr
ZV9hdWRpb19kZXZpY2VfOwotICBhdXRvIGF1ZGlvX3N0YXRlID0gQXVkaW9TdGF0ZTo6Q3JlYXRl
KGF1ZGlvX3N0YXRlX2NvbmZpZyk7Ci0gIGZha2VfYXVkaW9fZGV2aWNlXy0+UmVnaXN0ZXJBdWRp
b0NhbGxiYWNrKGF1ZGlvX3N0YXRlLT5hdWRpb190cmFuc3BvcnQoKSk7Ci0gIHJldHVybiBhdWRp
b19zdGF0ZTsKK3ZvaWQgQ2FsbENsaWVudDo6QWRkRXh0ZW5zaW9ucyhzdGQ6OnZlY3RvcjxSdHBF
eHRlbnNpb24+IGV4dGVuc2lvbnMpIHsKKyAgZm9yIChjb25zdCBhdXRvJiBleHRlbnNpb24gOiBl
eHRlbnNpb25zKQorICAgIGhlYWRlcl9wYXJzZXJfLT5SZWdpc3RlclJ0cEhlYWRlckV4dGVuc2lv
bihleHRlbnNpb24pOwogfQogCitDYWxsQ2xpZW50UGFpcjo6fkNhbGxDbGllbnRQYWlyKCkgPSBk
ZWZhdWx0OworCiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogfSAgLy8gbmFtZXNwYWNlIHdlYnJ0Ywpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9zY2VuYXJpby9jYWxsX2NsaWVudC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9jYWxsX2NsaWVudC5oCmluZGV4IDgwZTJmYWYxNjI2
YWZkMWQwYjdhYzRkNGY3Y2Y4OGIxZDk5ODg3NzYuLmExMmUwNmEwNjU2NDg5Nzk5NDBiYjg0MWQy
NGM2NTgwNDFlZGQ2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vY2FsbF9jbGllbnQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL2NhbGxfY2xpZW50
LmgKQEAgLTE3LDggKzE3LDEwIEBACiAjaW5jbHVkZSAibG9nZ2luZy9ydGNfZXZlbnRfbG9nL3J0
Y19ldmVudF9sb2cuaCIKICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS9pbmNsdWRlL3Rl
c3RfYXVkaW9fZGV2aWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xs
ZXIvdGVzdC9jb250cm9sbGVyX3ByaW50ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNw
L2luY2x1ZGUvcnRwX2hlYWRlcl9wYXJzZXIuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jb25zdHJ1
Y3Rvcm1hZ2ljLmgiCiAjaW5jbHVkZSAidGVzdC9zY2VuYXJpby9jb2x1bW5fcHJpbnRlci5oIgor
I2luY2x1ZGUgInRlc3Qvc2NlbmFyaW8vbmV0d29ya19ub2RlLmgiCiAjaW5jbHVkZSAidGVzdC9z
Y2VuYXJpby9zY2VuYXJpb19jb25maWcuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC00NSwx
MCArNDcsMTUgQEAgY2xhc3MgTG9nZ2luZ05ldHdvcmtDb250cm9sbGVyRmFjdG9yeQogICBGSUxF
KiBjY19vdXRfID0gbnVsbHB0cjsKIH07CiAKK3N0cnVjdCBDYWxsQ2xpZW50RmFrZUF1ZGlvIHsK
KyAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvUHJvY2Vzc2luZz4gYXBtOworICBydGM6OnNjb3Bl
ZF9yZWZwdHI8VGVzdEF1ZGlvRGV2aWNlTW9kdWxlPiBmYWtlX2F1ZGlvX2RldmljZTsKKyAgcnRj
OjpzY29wZWRfcmVmcHRyPEF1ZGlvU3RhdGU+IGF1ZGlvX3N0YXRlOworfTsKIC8vIENhbGxDbGll
bnQgcmVwcmVzZW50cyBhIHBhcnRpY2lwYW50IGluIGEgY2FsbCBzY2VuYXJpby4gSXQgaXMgY3Jl
YXRlZCBieSB0aGUKIC8vIFNjZW5hcmlvIGNsYXNzIGFuZCBpcyB1c2VkIGFzIHNlbmRlciBhbmQg
cmVjZWl2ZXIgd2hlbiBzZXR0aW5nIHVwIGEgbWVkaWEKIC8vIHN0cmVhbSBzZXNzaW9uLgotY2xh
c3MgQ2FsbENsaWVudCB7CitjbGFzcyBDYWxsQ2xpZW50IDogcHVibGljIE5ldHdvcmtSZWNlaXZl
ckludGVyZmFjZSB7CiAgcHVibGljOgogICBDYWxsQ2xpZW50KENsb2NrKiBjbG9jaywgc3RkOjpz
dHJpbmcgbG9nX2ZpbGVuYW1lLCBDYWxsQ2xpZW50Q29uZmlnIGNvbmZpZyk7CiAgIFJUQ19ESVNB
TExPV19DT1BZX0FORF9BU1NJR04oQ2FsbENsaWVudCk7CkBAIC01NiwzNyArNjMsNjMgQEAgY2xh
c3MgQ2FsbENsaWVudCB7CiAgIH5DYWxsQ2xpZW50KCk7CiAgIENvbHVtblByaW50ZXIgU3RhdHNQ
cmludGVyKCk7CiAgIENhbGw6OlN0YXRzIEdldFN0YXRzKCk7CisgIERhdGFSYXRlIHNlbmRfYmFu
ZHdpZHRoKCkgeworICAgIHJldHVybiBEYXRhUmF0ZTo6YnBzKEdldFN0YXRzKCkuc2VuZF9iYW5k
d2lkdGhfYnBzKTsKKyAgfQorCisgIGJvb2wgVHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldy
aXRlQnVmZmVyIHBhY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlY2Vp
dmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIG92ZXJyaWRl
OwogCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFNjZW5hcmlvOworICBmcmllbmQgY2xhc3Mg
Q2FsbENsaWVudFBhaXI7CiAgIGZyaWVuZCBjbGFzcyBTZW5kVmlkZW9TdHJlYW07CisgIGZyaWVu
ZCBjbGFzcyBWaWRlb1N0cmVhbVBhaXI7CiAgIGZyaWVuZCBjbGFzcyBSZWNlaXZlVmlkZW9TdHJl
YW07CiAgIGZyaWVuZCBjbGFzcyBTZW5kQXVkaW9TdHJlYW07CiAgIGZyaWVuZCBjbGFzcyBSZWNl
aXZlQXVkaW9TdHJlYW07CisgIGZyaWVuZCBjbGFzcyBBdWRpb1N0cmVhbVBhaXI7CiAgIGZyaWVu
ZCBjbGFzcyBOZXR3b3JrTm9kZVRyYW5zcG9ydDsKLSAgLy8gVE9ETyhzcnRlKTogQ29uc2lkZXIg
dXNpbmcgdGhlIENvbHVtbnByaW50ZXIgaW50ZXJmYWNlIGZvciB0aGlzLgotICB2b2lkIERlbGl2
ZXJQYWNrZXQoTWVkaWFUeXBlIG1lZGlhX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICBydGM6
OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFt
cCBhdF90aW1lKTsKICAgdWludDMyX3QgR2V0TmV4dFZpZGVvU3NyYygpOwogICB1aW50MzJfdCBH
ZXROZXh0QXVkaW9Tc3JjKCk7CiAgIHVpbnQzMl90IEdldE5leHRSdHhTc3JjKCk7CiAgIHN0ZDo6
c3RyaW5nIEdldE5leHRQcmlvcml0eUlkKCk7CisgIHZvaWQgQWRkRXh0ZW5zaW9ucyhzdGQ6OnZl
Y3RvcjxSdHBFeHRlbnNpb24+IGV4dGVuc2lvbnMpOwogCiAgIENsb2NrKiBjbG9ja187CiAgIExv
Z2dpbmdOZXR3b3JrQ29udHJvbGxlckZhY3RvcnkgbmV0d29ya19jb250cm9sbGVyX2ZhY3Rvcnlf
OworICBDYWxsQ2xpZW50RmFrZUF1ZGlvIGZha2VfYXVkaW9fc2V0dXBfOwogICBzdGQ6OnVuaXF1
ZV9wdHI8Q2FsbD4gY2FsbF87Ci0KLSAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvU3RhdGU+IElu
aXRBdWRpbygpOwotCi0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb1Byb2Nlc3Npbmc+IGFwbV87
Ci0gIHJ0Yzo6c2NvcGVkX3JlZnB0cjxUZXN0QXVkaW9EZXZpY2VNb2R1bGU+IGZha2VfYXVkaW9f
ZGV2aWNlXzsKKyAgTmV0d29ya05vZGVUcmFuc3BvcnQgdHJhbnNwb3J0XzsKKyAgUnRwSGVhZGVy
UGFyc2VyKiBjb25zdCBoZWFkZXJfcGFyc2VyXzsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8RmVjQ29u
dHJvbGxlckZhY3RvcnlJbnRlcmZhY2U+IGZlY19jb250cm9sbGVyX2ZhY3RvcnlfOworICAvLyBT
dG9yZXMgdGhlIGNvbmZpZ3VyZWQgb3ZlcmhlYWQgcGVyIGtub3duIGluY29tbWluZyByb3V0ZS4g
VGhpcyBpcyB1c2VkIHRvCisgIC8vIHN1YnRyYWN0IHRoZSBvdmVyaGVhZCBiZWZvcmUgcHJvY2Vz
c2luZy4KKyAgc3RkOjptYXA8dWludDY0X3QsIERhdGFTaXplPiByb3V0ZV9vdmVyaGVhZF87CiAg
IGludCBuZXh0X3ZpZGVvX3NzcmNfaW5kZXhfID0gMDsKICAgaW50IG5leHRfcnR4X3NzcmNfaW5k
ZXhfID0gMDsKICAgaW50IG5leHRfYXVkaW9fc3NyY19pbmRleF8gPSAwOwogICBpbnQgbmV4dF9w
cmlvcml0eV9pbmRleF8gPSAwOworICBzdGQ6Om1hcDx1aW50MzJfdCwgTWVkaWFUeXBlPiBzc3Jj
X21lZGlhX3R5cGVzXzsKK307CisKK2NsYXNzIENhbGxDbGllbnRQYWlyIHsKKyBwdWJsaWM6Cisg
IFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04oQ2FsbENsaWVudFBhaXIpOworICB+Q2FsbENs
aWVudFBhaXIoKTsKKyAgQ2FsbENsaWVudCogZmlyc3QoKSB7IHJldHVybiBmaXJzdF87IH0KKyAg
Q2FsbENsaWVudCogc2Vjb25kKCkgeyByZXR1cm4gc2Vjb25kXzsgfQorICBzdGQ6OnBhaXI8Q2Fs
bENsaWVudCosIENhbGxDbGllbnQqPiBmb3J3YXJkKCkgeyByZXR1cm4ge2ZpcnN0KCksIHNlY29u
ZCgpfTsgfQorICBzdGQ6OnBhaXI8Q2FsbENsaWVudCosIENhbGxDbGllbnQqPiByZXZlcnNlKCkg
eyByZXR1cm4ge3NlY29uZCgpLCBmaXJzdCgpfTsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGNs
YXNzIFNjZW5hcmlvOworICBDYWxsQ2xpZW50UGFpcihDYWxsQ2xpZW50KiBmaXJzdCwgQ2FsbENs
aWVudCogc2Vjb25kKQorICAgICAgOiBmaXJzdF8oZmlyc3QpLCBzZWNvbmRfKHNlY29uZCkge30K
KyAgQ2FsbENsaWVudCogY29uc3QgZmlyc3RfOworICBDYWxsQ2xpZW50KiBjb25zdCBzZWNvbmRf
OwogfTsKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Nj
ZW5hcmlvL25ldHdvcmtfbm9kZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vbmV0d29ya19ub2RlLmNjCmluZGV4IGZmMTM4OTM5YWJi
MWVmZDUxYzFhZTRhNThiYTE3OTUwMGRkZGJhY2EuLmIzOWQ2N2JkMjVjODkwOWEzMjAzNWQzYWVh
YThhM2UzZGMzZTFjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vbmV0d29ya19ub2RlLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vbmV0d29ya19u
b2RlLmNjCkBAIC0xMiw2ICsxMiw4IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAorI2luY2x1ZGUgInJ0Y19iYXNlL251bWVyaWNzL3NhZmVfbWlubWF4LmgiCisK
IG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewogbmFtZXNwYWNlIHsKQEAgLTE2
OCwyOSArMTcwLDI5IEBAIFNpbXVsYXRpb25Ob2RlOjpTaW11bGF0aW9uTm9kZSgKICAgICAgIHNp
bXVsYXRlZF9uZXR3b3JrXyhzaW11bGF0aW9uKSwKICAgICAgIGNvbmZpZ18oY29uZmlnKSB7fQog
Ci1OZXR3b3JrTm9kZVRyYW5zcG9ydDo6TmV0d29ya05vZGVUcmFuc3BvcnQoQ2FsbENsaWVudCog
c2VuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdv
cmtOb2RlKiBzZW5kX25ldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50NjRfdCByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEYXRhU2l6ZSBwYWNrZXRfb3ZlcmhlYWQpCi0gICAgOiBzZW5kZXJfKHNlbmRl
ciksCi0gICAgICBzZW5kX25ldF8oc2VuZF9uZXQpLAotICAgICAgcmVjZWl2ZXJfaWRfKHJlY2Vp
dmVyKSwKLSAgICAgIHBhY2tldF9vdmVyaGVhZF8ocGFja2V0X292ZXJoZWFkKSB7fQorTmV0d29y
a05vZGVUcmFuc3BvcnQ6Ok5ldHdvcmtOb2RlVHJhbnNwb3J0KGNvbnN0IENsb2NrKiBzZW5kZXJf
Y2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbCog
c2VuZGVyX2NhbGwpCisgICAgOiBzZW5kZXJfY2xvY2tfKHNlbmRlcl9jbG9jayksIHNlbmRlcl9j
YWxsXyhzZW5kZXJfY2FsbCkge30KIAogTmV0d29ya05vZGVUcmFuc3BvcnQ6On5OZXR3b3JrTm9k
ZVRyYW5zcG9ydCgpID0gZGVmYXVsdDsKIAogYm9vbCBOZXR3b3JrTm9kZVRyYW5zcG9ydDo6U2Vu
ZFJ0cChjb25zdCB1aW50OF90KiBwYWNrZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFBhY2tldE9wdGlvbnMmIG9wdGlvbnMpIHsKLSAgaW50NjRfdCBzZW5kX3RpbWVfbXMg
PSBzZW5kZXJfLT5jbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpOworICBpbnQ2NF90IHNlbmRf
dGltZV9tcyA9IHNlbmRlcl9jbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpOwogICBydGM6OlNl
bnRQYWNrZXQgc2VudF9wYWNrZXQ7CiAgIHNlbnRfcGFja2V0LnBhY2tldF9pZCA9IG9wdGlvbnMu
cGFja2V0X2lkOworICBzZW50X3BhY2tldC5pbmZvLmluY2x1ZGVkX2luX2ZlZWRiYWNrID0gb3B0
aW9ucy5pbmNsdWRlZF9pbl9mZWVkYmFjazsKKyAgc2VudF9wYWNrZXQuaW5mby5pbmNsdWRlZF9p
bl9hbGxvY2F0aW9uID0gb3B0aW9ucy5pbmNsdWRlZF9pbl9hbGxvY2F0aW9uOwogICBzZW50X3Bh
Y2tldC5zZW5kX3RpbWVfbXMgPSBzZW5kX3RpbWVfbXM7CiAgIHNlbnRfcGFja2V0LmluZm8ucGFj
a2V0X3NpemVfYnl0ZXMgPSBsZW5ndGg7CiAgIHNlbnRfcGFja2V0LmluZm8ucGFja2V0X3R5cGUg
PSBydGM6OlBhY2tldFR5cGU6OmtEYXRhOwotICBzZW5kZXJfLT5jYWxsXy0+T25TZW50UGFja2V0
KHNlbnRfcGFja2V0KTsKKyAgc2VuZGVyX2NhbGxfLT5PblNlbnRQYWNrZXQoc2VudF9wYWNrZXQp
OwogCiAgIFRpbWVzdGFtcCBzZW5kX3RpbWUgPSBUaW1lc3RhbXA6Om1zKHNlbmRfdGltZV9tcyk7
CisgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJmNyaXRfc2VjdF8pOworICBpZiAoIXNlbmRfbmV0XykK
KyAgICByZXR1cm4gZmFsc2U7CiAgIHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgYnVmZmVyKHBhY2tl
dCwgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggKyBwYWNr
ZXRfb3ZlcmhlYWRfLmJ5dGVzKCkpOwogICBidWZmZXIuU2V0U2l6ZShsZW5ndGggKyBwYWNrZXRf
b3ZlcmhlYWRfLmJ5dGVzKCkpOwpAQCAtMTk5LDEzICsyMDEsMjkgQEAgYm9vbCBOZXR3b3JrTm9k
ZVRyYW5zcG9ydDo6U2VuZFJ0cChjb25zdCB1aW50OF90KiBwYWNrZXQsCiAKIGJvb2wgTmV0d29y
a05vZGVUcmFuc3BvcnQ6OlNlbmRSdGNwKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90IGxl
bmd0aCkgewogICBydGM6OkNvcHlPbldyaXRlQnVmZmVyIGJ1ZmZlcihwYWNrZXQsIGxlbmd0aCk7
Ci0gIFRpbWVzdGFtcCBzZW5kX3RpbWUgPSBUaW1lc3RhbXA6Om1zKHNlbmRlcl8tPmNsb2NrXy0+
VGltZUluTWlsbGlzZWNvbmRzKCkpOworICBUaW1lc3RhbXAgc2VuZF90aW1lID0gVGltZXN0YW1w
OjptcyhzZW5kZXJfY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKSk7CisgIHJ0Yzo6Q3JpdFNj
b3BlIGNyaXQoJmNyaXRfc2VjdF8pOwogICBidWZmZXIuU2V0U2l6ZShsZW5ndGggKyBwYWNrZXRf
b3ZlcmhlYWRfLmJ5dGVzKCkpOworICBpZiAoIXNlbmRfbmV0XykKKyAgICByZXR1cm4gZmFsc2U7
CiAgIHJldHVybiBzZW5kX25ldF8tPlRyeURlbGl2ZXJQYWNrZXQoYnVmZmVyLCByZWNlaXZlcl9p
ZF8sIHNlbmRfdGltZSk7CiB9CiAKLXVpbnQ2NF90IE5ldHdvcmtOb2RlVHJhbnNwb3J0OjpSZWNl
aXZlcklkKCkgY29uc3QgewotICByZXR1cm4gcmVjZWl2ZXJfaWRfOwordm9pZCBOZXR3b3JrTm9k
ZVRyYW5zcG9ydDo6Q29ubmVjdChOZXR3b3JrTm9kZSogc2VuZF9ub2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlcl9pZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemUgcGFja2V0X292ZXJoZWFkKSB7CisgIHJ0
Yzo6Q3JpdFNjb3BlIGNyaXQoJmNyaXRfc2VjdF8pOworICBzZW5kX25ldF8gPSBzZW5kX25vZGU7
CisgIHJlY2VpdmVyX2lkXyA9IHJlY2VpdmVyX2lkOworICBwYWNrZXRfb3ZlcmhlYWRfID0gcGFj
a2V0X292ZXJoZWFkOworCisgIHJ0Yzo6TmV0d29ya1JvdXRlIHJvdXRlOworICByb3V0ZS5jb25u
ZWN0ZWQgPSB0cnVlOworICByb3V0ZS5sb2NhbF9uZXR3b3JrX2lkID0gcmVjZWl2ZXJfaWQ7Cisg
IHJvdXRlLnJlbW90ZV9uZXR3b3JrX2lkID0gcmVjZWl2ZXJfaWQ7CisgIHN0ZDo6c3RyaW5nIHRy
YW5zcG9ydF9uYW1lID0gImR1bW15IjsKKyAgc2VuZGVyX2NhbGxfLT5HZXRUcmFuc3BvcnRDb250
cm9sbGVyU2VuZCgpLT5Pbk5ldHdvcmtSb3V0ZUNoYW5nZWQoCisgICAgICB0cmFuc3BvcnRfbmFt
ZSwgcm91dGUpOwogfQogCiBDcm9zc1RyYWZmaWNTb3VyY2U6OkNyb3NzVHJhZmZpY1NvdXJjZShO
ZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UqIHRhcmdldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vbmV0d29ya19ub2Rl
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5h
cmlvL25ldHdvcmtfbm9kZS5oCmluZGV4IGFmNmRiMGEwMDk5Y2MzODdmZGI0NzA4Yjk4ZGUxYmE1
OTVmNGNlYjIuLjRlOTBmNmYyNTJhMmM3Y2Y1ZGU3NmI4OGRkMDlhN2U5MDdhODY4NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2Nl
bmFyaW8vbmV0d29ya19ub2RlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9uZXR3b3JrX25vZGUuaApAQCAtMTgsMTAgKzE4LDEw
IEBACiAKICNpbmNsdWRlICJhcGkvY2FsbC90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJhcGkvdW5p
dHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAiY2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAiY2FsbC9z
aW11bGF0ZWRfbmV0d29yay5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NvbnN0cnVjdG9ybWFnaWMu
aCIKICNpbmNsdWRlICJydGNfYmFzZS9jb3B5b253cml0ZWJ1ZmZlci5oIgotI2luY2x1ZGUgInRl
c3Qvc2NlbmFyaW8vY2FsbF9jbGllbnQuaCIKICNpbmNsdWRlICJ0ZXN0L3NjZW5hcmlvL2NvbHVt
bl9wcmludGVyLmgiCiAjaW5jbHVkZSAidGVzdC9zY2VuYXJpby9zY2VuYXJpb19jb25maWcuaCIK
IApAQCAtMTE5LDIzICsxMTksMzAgQEAgY2xhc3MgU2ltdWxhdGlvbk5vZGUgOiBwdWJsaWMgTmV0
d29ya05vZGUgewogCiBjbGFzcyBOZXR3b3JrTm9kZVRyYW5zcG9ydCA6IHB1YmxpYyBUcmFuc3Bv
cnQgewogIHB1YmxpYzoKLSAgTmV0d29ya05vZGVUcmFuc3BvcnQoQ2FsbENsaWVudCogc2VuZGVy
LAotICAgICAgICAgICAgICAgICAgICAgICBOZXR3b3JrTm9kZSogc2VuZF9uZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAg
ICBEYXRhU2l6ZSBwYWNrZXRfb3ZlcmhlYWQpOworICBOZXR3b3JrTm9kZVRyYW5zcG9ydChjb25z
dCBDbG9jayogc2VuZGVyX2Nsb2NrLCBDYWxsKiBzZW5kZXJfY2FsbCk7CiAgIH5OZXR3b3JrTm9k
ZVRyYW5zcG9ydCgpIG92ZXJyaWRlOwogCiAgIGJvb2wgU2VuZFJ0cChjb25zdCB1aW50OF90KiBw
YWNrZXQsCiAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgY29u
c3QgUGFja2V0T3B0aW9ucyYgb3B0aW9ucykgb3ZlcnJpZGU7CiAgIGJvb2wgU2VuZFJ0Y3AoY29u
c3QgdWludDhfdCogcGFja2V0LCBzaXplX3QgbGVuZ3RoKSBvdmVycmlkZTsKLSAgdWludDY0X3Qg
UmVjZWl2ZXJJZCgpIGNvbnN0OworCisgIHZvaWQgQ29ubmVjdChOZXR3b3JrTm9kZSogc2VuZF9u
b2RlLAorICAgICAgICAgICAgICAgdWludDY0X3QgcmVjZWl2ZXJfaWQsCisgICAgICAgICAgICAg
ICBEYXRhU2l6ZSBwYWNrZXRfb3ZlcmhlYWQpOworCisgIERhdGFTaXplIHBhY2tldF9vdmVyaGVh
ZCgpIHsKKyAgICBydGM6OkNyaXRTY29wZSBjcml0KCZjcml0X3NlY3RfKTsKKyAgICByZXR1cm4g
cGFja2V0X292ZXJoZWFkXzsKKyAgfQogCiAgcHJpdmF0ZToKLSAgQ2FsbENsaWVudCogY29uc3Qg
c2VuZGVyXzsKLSAgTmV0d29ya05vZGUqIGNvbnN0IHNlbmRfbmV0XzsKLSAgY29uc3QgdWludDY0
X3QgcmVjZWl2ZXJfaWRfOwotICBjb25zdCBEYXRhU2l6ZSBwYWNrZXRfb3ZlcmhlYWRfOworICBy
dGM6OkNyaXRpY2FsU2VjdGlvbiBjcml0X3NlY3RfOworICBjb25zdCBDbG9jayogY29uc3Qgc2Vu
ZGVyX2Nsb2NrXzsKKyAgQ2FsbCogY29uc3Qgc2VuZGVyX2NhbGxfOworICBOZXR3b3JrTm9kZSog
c2VuZF9uZXRfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8pID0gbnVsbHB0cjsKKyAgdWludDY0
X3QgcmVjZWl2ZXJfaWRfIFJUQ19HVUFSREVEX0JZKGNyaXRfc2VjdF8pID0gMDsKKyAgRGF0YVNp
emUgcGFja2V0X292ZXJoZWFkXyBSVENfR1VBUkRFRF9CWShjcml0X3NlY3RfKSA9IERhdGFTaXpl
OjpaZXJvKCk7CiB9OwogCiAvLyBDcm9zc1RyYWZmaWNTb3VyY2UgaXMgY3JlYXRlZCBieSBhIFNj
ZW5hcmlvIGFuZCBnZW5lcmF0ZXMgY3Jvc3MgdHJhZmZpYy4gSXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFy
aW8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Nj
ZW5hcmlvL3NjZW5hcmlvLmNjCmluZGV4IDdlYjA5ZThiYjdhMWQxMjQ4NjI0MzI3YWI0YmFhZTJl
YWVhMzkxYzUuLjc1ODk4NzhkNWJhMzUzOTc4ZjUzMGNjMmZiYzA2NjliZDVlNjRiYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2Nl
bmFyaW8vc2NlbmFyaW8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpby5jYwpAQCAtMTYsNyArMTYsNyBAQAogI2lu
Y2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxl
dXRpbHMuaCIKIAotREVGSU5FX2Jvb2woc2NlbmFyaW9fbG9ncywgZmFsc2UsICJTYXZlIGxvZ3Mg
ZnJvbSBzY2VuYXJpbyBmcmFtZXdvcmsuIik7CitXRUJSVENfREVGSU5FX2Jvb2woc2NlbmFyaW9f
bG9ncywgZmFsc2UsICJTYXZlIGxvZ3MgZnJvbSBzY2VuYXJpbyBmcmFtZXdvcmsuIik7CiAKIG5h
bWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIHRlc3QgewpAQCAtNzUsNiArNzUsOCBAQCBTY2Vu
YXJpbzo6U2NlbmFyaW8oc3RkOjpzdHJpbmcgZmlsZV9uYW1lLCBib29sIHJlYWxfdGltZSkKIH0K
IAogU2NlbmFyaW86On5TY2VuYXJpbygpIHsKKyAgaWYgKHN0YXJ0X3RpbWVfLklzRmluaXRlKCkp
CisgICAgU3RvcCgpOwogICBpZiAoIXJlYWxfdGltZV9tb2RlXykKICAgICBydGM6OlNldENsb2Nr
Rm9yVGVzdGluZyhudWxscHRyKTsKIH0KQEAgLTEyMywxNCArMTI1LDUwIEBAIENhbGxDbGllbnQq
IFNjZW5hcmlvOjpDcmVhdGVDbGllbnQoCiAgIHJldHVybiBDcmVhdGVDbGllbnQobmFtZSwgY29u
ZmlnKTsKIH0KIAorQ2FsbENsaWVudFBhaXIqIFNjZW5hcmlvOjpDcmVhdGVSb3V0ZXMoQ2FsbENs
aWVudCogZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENhbGxDbGllbnQqIHNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmsp
IHsKKyAgcmV0dXJuIENyZWF0ZVJvdXRlcyhmaXJzdCwgc2VuZF9saW5rLAorICAgICAgICAgICAg
ICAgICAgICAgIERhdGFTaXplOjpieXRlcyhQYWNrZXRPdmVyaGVhZDo6a0RlZmF1bHQpLCBzZWNv
bmQsCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2xpbmssIERhdGFTaXplOjpieXRlcyhQ
YWNrZXRPdmVyaGVhZDo6a0RlZmF1bHQpKTsKK30KKworQ2FsbENsaWVudFBhaXIqIFNjZW5hcmlv
OjpDcmVhdGVSb3V0ZXMoQ2FsbENsaWVudCogZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFTaXplIGZpcnN0X292ZXJo
ZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbENsaWVudCog
c2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERhdGFTaXplIHNlY29uZF9vdmVyaGVhZCkgeworICBDYWxsQ2xpZW50UGFp
ciogY2xpZW50X3BhaXIgPSBuZXcgQ2FsbENsaWVudFBhaXIoZmlyc3QsIHNlY29uZCk7CisgIENo
YW5nZVJvdXRlKGNsaWVudF9wYWlyLT5mb3J3YXJkKCksIHNlbmRfbGluaywgZmlyc3Rfb3Zlcmhl
YWQpOworICBDaGFuZ2VSb3V0ZShjbGllbnRfcGFpci0+cmV2ZXJzZSgpLCByZXR1cm5fbGluaywg
c2Vjb25kX292ZXJoZWFkKTsKKyAgY2xpZW50X3BhaXJzXy5lbXBsYWNlX2JhY2soY2xpZW50X3Bh
aXIpOworICByZXR1cm4gY2xpZW50X3BhaXI7Cit9CisKK3ZvaWQgU2NlbmFyaW86OkNoYW5nZVJv
dXRlKHN0ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMp
IHsKKyAgQ2hhbmdlUm91dGUoY2xpZW50cywgb3Zlcl9ub2RlcywgRGF0YVNpemU6OmJ5dGVzKFBh
Y2tldE92ZXJoZWFkOjprRGVmYXVsdCkpOworfQorCit2b2lkIFNjZW5hcmlvOjpDaGFuZ2VSb3V0
ZShzdGQ6OnBhaXI8Q2FsbENsaWVudCosIENhbGxDbGllbnQqPiBjbGllbnRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBvdmVyX25vZGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemUgb3ZlcmhlYWQpIHsKKyAgdWludDY0
X3Qgcm91dGVfaWQgPSBuZXh0X3JvdXRlX2lkXysrOworICBjbGllbnRzLnNlY29uZC0+cm91dGVf
b3ZlcmhlYWRfLmluc2VydCh7cm91dGVfaWQsIG92ZXJoZWFkfSk7CisgIE5ldHdvcmtOb2RlOjpS
b3V0ZShyb3V0ZV9pZCwgb3Zlcl9ub2RlcywgY2xpZW50cy5zZWNvbmQpOworICBjbGllbnRzLmZp
cnN0LT50cmFuc3BvcnRfLkNvbm5lY3Qob3Zlcl9ub2Rlcy5mcm9udCgpLCByb3V0ZV9pZCwgb3Zl
cmhlYWQpOworfQorCiBTaW11bGF0ZWRUaW1lQ2xpZW50KiBTY2VuYXJpbzo6Q3JlYXRlU2ltdWxh
dGVkVGltZUNsaWVudCgKICAgICBzdGQ6OnN0cmluZyBuYW1lLAogICAgIFNpbXVsYXRlZFRpbWVD
bGllbnRDb25maWcgY29uZmlnLAogICAgIHN0ZDo6dmVjdG9yPFBhY2tldFN0cmVhbUNvbmZpZz4g
c3RyZWFtX2NvbmZpZ3MsCiAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmss
CiAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaykgewotICB1aW50NjRf
dCBzZW5kX2lkID0gbmV4dF9yZWNlaXZlcl9pZF8rKzsKLSAgdWludDY0X3QgcmV0dXJuX2lkID0g
bmV4dF9yZWNlaXZlcl9pZF8rKzsKKyAgdWludDY0X3Qgc2VuZF9pZCA9IG5leHRfcm91dGVfaWRf
Kys7CisgIHVpbnQ2NF90IHJldHVybl9pZCA9IG5leHRfcm91dGVfaWRfKys7CiAgIFNpbXVsYXRl
ZFRpbWVDbGllbnQqIGNsaWVudCA9IG5ldyBTaW11bGF0ZWRUaW1lQ2xpZW50KAogICAgICAgR2V0
RnVsbFBhdGhPckVtcHR5KG5hbWUpLCBjb25maWcsIHN0cmVhbV9jb25maWdzLCBzZW5kX2xpbmss
IHJldHVybl9saW5rLAogICAgICAgc2VuZF9pZCwgcmV0dXJuX2lkLCBOb3coKSk7CkBAIC0xNzks
MjEgKzIxNywyMSBAQCBOZXR3b3JrTm9kZSogU2NlbmFyaW86OkNyZWF0ZU5ldHdvcmtOb2RlKAog
dm9pZCBTY2VuYXJpbzo6VHJpZ2dlclBhY2tldEJ1cnN0KHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2Rl
Kj4gb3Zlcl9ub2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bnVtX3BhY2tldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBh
Y2tldF9zaXplKSB7Ci0gIGludDY0X3QgcmVjZWl2ZXJfaWQgPSBuZXh0X3JlY2VpdmVyX2lkXysr
OwotICBOZXR3b3JrTm9kZTo6Um91dGUocmVjZWl2ZXJfaWQsIG92ZXJfbm9kZXMsICZudWxsX3Jl
Y2VpdmVyXyk7CisgIGludDY0X3Qgcm91dGVfaWQgPSBuZXh0X3JvdXRlX2lkXysrOworICBOZXR3
b3JrTm9kZTo6Um91dGUocm91dGVfaWQsIG92ZXJfbm9kZXMsICZudWxsX3JlY2VpdmVyXyk7CiAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX3BhY2tldHM7ICsraSkKICAgICBvdmVyX25vZGVz
WzBdLT5UcnlEZWxpdmVyUGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIocGFja2V0X3NpemUp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJfaWQsIE5vdygp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlX2lkLCBOb3coKSk7
CiB9CiAKIHZvaWQgU2NlbmFyaW86Ok5ldHdvcmtEZWxheWVkQWN0aW9uKHN0ZDo6dmVjdG9yPE5l
dHdvcmtOb2RlKj4gb3Zlcl9ub2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBwYWNrZXRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBhY3Rpb24pIHsKLSAgaW50NjRfdCByZWNlaXZlcl9p
ZCA9IG5leHRfcmVjZWl2ZXJfaWRfKys7CisgIGludDY0X3Qgcm91dGVfaWQgPSBuZXh0X3JvdXRl
X2lkXysrOwogICBhY3Rpb25fcmVjZWl2ZXJzXy5lbXBsYWNlX2JhY2sobmV3IEFjdGlvblJlY2Vp
dmVyKGFjdGlvbikpOwotICBOZXR3b3JrTm9kZTo6Um91dGUocmVjZWl2ZXJfaWQsIG92ZXJfbm9k
ZXMsIGFjdGlvbl9yZWNlaXZlcnNfLmJhY2soKS5nZXQoKSk7Ci0gIG92ZXJfbm9kZXNbMF0tPlRy
eURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcihwYWNrZXRfc2l6ZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJfaWQsIE5vdygpKTsKKyAgTmV0
d29ya05vZGU6OlJvdXRlKHJvdXRlX2lkLCBvdmVyX25vZGVzLCBhY3Rpb25fcmVjZWl2ZXJzXy5i
YWNrKCkuZ2V0KCkpOworICBvdmVyX25vZGVzWzBdLT5UcnlEZWxpdmVyUGFja2V0KHJ0Yzo6Q29w
eU9uV3JpdGVCdWZmZXIocGFja2V0X3NpemUpLCByb3V0ZV9pZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOb3coKSk7CiB9CiAKIENyb3NzVHJhZmZpY1NvdXJjZSogU2NlbmFy
aW86OkNyZWF0ZUNyb3NzVHJhZmZpYygKQEAgLTIwNyw2NSArMjQ1LDQ2IEBAIENyb3NzVHJhZmZp
Y1NvdXJjZSogU2NlbmFyaW86OkNyZWF0ZUNyb3NzVHJhZmZpYygKIENyb3NzVHJhZmZpY1NvdXJj
ZSogU2NlbmFyaW86OkNyZWF0ZUNyb3NzVHJhZmZpYygKICAgICBzdGQ6OnZlY3RvcjxOZXR3b3Jr
Tm9kZSo+IG92ZXJfbm9kZXMsCiAgICAgQ3Jvc3NUcmFmZmljQ29uZmlnIGNvbmZpZykgewotICBp
bnQ2NF90IHJlY2VpdmVyX2lkID0gbmV4dF9yZWNlaXZlcl9pZF8rKzsKKyAgaW50NjRfdCByb3V0
ZV9pZCA9IG5leHRfcm91dGVfaWRfKys7CiAgIGNyb3NzX3RyYWZmaWNfc291cmNlc18uZW1wbGFj
ZV9iYWNrKAotICAgICAgbmV3IENyb3NzVHJhZmZpY1NvdXJjZShvdmVyX25vZGVzLmZyb250KCks
IHJlY2VpdmVyX2lkLCBjb25maWcpKTsKKyAgICAgIG5ldyBDcm9zc1RyYWZmaWNTb3VyY2Uob3Zl
cl9ub2Rlcy5mcm9udCgpLCByb3V0ZV9pZCwgY29uZmlnKSk7CiAgIENyb3NzVHJhZmZpY1NvdXJj
ZSogbm9kZSA9IGNyb3NzX3RyYWZmaWNfc291cmNlc18uYmFjaygpLmdldCgpOwotICBOZXR3b3Jr
Tm9kZTo6Um91dGUocmVjZWl2ZXJfaWQsIG92ZXJfbm9kZXMsICZudWxsX3JlY2VpdmVyXyk7Cisg
IE5ldHdvcmtOb2RlOjpSb3V0ZShyb3V0ZV9pZCwgb3Zlcl9ub2RlcywgJm51bGxfcmVjZWl2ZXJf
KTsKICAgRXZlcnkoY29uZmlnLm1pbl9wYWNrZXRfaW50ZXJ2YWwsCiAgICAgICAgIFt0aGlzLCBu
b2RlXShUaW1lRGVsdGEgZGVsdGEpIHsgbm9kZS0+UHJvY2VzcyhOb3coKSwgZGVsdGEpOyB9KTsK
ICAgcmV0dXJuIG5vZGU7CiB9CiAKIFZpZGVvU3RyZWFtUGFpciogU2NlbmFyaW86OkNyZWF0ZVZp
ZGVvU3RyZWFtKAotICAgIENhbGxDbGllbnQqIHNlbmRlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3
b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICBzdGQ6
OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJldHVybl9saW5rLAorICAgIHN0ZDo6cGFpcjxDYWxsQ2xp
ZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMsCiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKFZpZGVv
U3RyZWFtQ29uZmlnKik+IGNvbmZpZ19tb2RpZmllcikgewogICBWaWRlb1N0cmVhbUNvbmZpZyBj
b25maWc7CiAgIGNvbmZpZ19tb2RpZmllcigmY29uZmlnKTsKLSAgcmV0dXJuIENyZWF0ZVZpZGVv
U3RyZWFtKHNlbmRlciwgc2VuZF9saW5rLCByZWNlaXZlciwgcmV0dXJuX2xpbmssIGNvbmZpZyk7
CisgIHJldHVybiBDcmVhdGVWaWRlb1N0cmVhbShjbGllbnRzLCBjb25maWcpOwogfQogCiBWaWRl
b1N0cmVhbVBhaXIqIFNjZW5hcmlvOjpDcmVhdGVWaWRlb1N0cmVhbSgKLSAgICBDYWxsQ2xpZW50
KiBzZW5kZXIsCi0gICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAg
Q2FsbENsaWVudCogcmVjZWl2ZXIsCi0gICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1
cm5fbGluaywKKyAgICBzdGQ6OnBhaXI8Q2FsbENsaWVudCosIENhbGxDbGllbnQqPiBjbGllbnRz
LAogICAgIFZpZGVvU3RyZWFtQ29uZmlnIGNvbmZpZykgewotICB1aW50NjRfdCBzZW5kX3JlY2Vp
dmVyX2lkID0gbmV4dF9yZWNlaXZlcl9pZF8rKzsKLSAgdWludDY0X3QgcmV0dXJuX3JlY2VpdmVy
X2lkID0gbmV4dF9yZWNlaXZlcl9pZF8rKzsKLQogICB2aWRlb19zdHJlYW1zXy5lbXBsYWNlX2Jh
Y2soCi0gICAgICBuZXcgVmlkZW9TdHJlYW1QYWlyKHNlbmRlciwgc2VuZF9saW5rLCBzZW5kX3Jl
Y2VpdmVyX2lkLCByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2xp
bmssIHJldHVybl9yZWNlaXZlcl9pZCwgY29uZmlnKSk7CisgICAgICBuZXcgVmlkZW9TdHJlYW1Q
YWlyKGNsaWVudHMuZmlyc3QsIGNsaWVudHMuc2Vjb25kLCBjb25maWcpKTsKICAgcmV0dXJuIHZp
ZGVvX3N0cmVhbXNfLmJhY2soKS5nZXQoKTsKIH0KIAogQXVkaW9TdHJlYW1QYWlyKiBTY2VuYXJp
bzo6Q3JlYXRlQXVkaW9TdHJlYW0oCi0gICAgQ2FsbENsaWVudCogc2VuZGVyLAotICAgIHN0ZDo6
dmVjdG9yPE5ldHdvcmtOb2RlKj4gc2VuZF9saW5rLAotICAgIENhbGxDbGllbnQqIHJlY2VpdmVy
LAotICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmssCisgICAgc3RkOjpw
YWlyPENhbGxDbGllbnQqLCBDYWxsQ2xpZW50Kj4gY2xpZW50cywKICAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQoQXVkaW9TdHJlYW1Db25maWcqKT4gY29uZmlnX21vZGlmaWVyKSB7CiAgIEF1ZGlvU3Ry
ZWFtQ29uZmlnIGNvbmZpZzsKICAgY29uZmlnX21vZGlmaWVyKCZjb25maWcpOwotICByZXR1cm4g
Q3JlYXRlQXVkaW9TdHJlYW0oc2VuZGVyLCBzZW5kX2xpbmssIHJlY2VpdmVyLCByZXR1cm5fbGlu
aywgY29uZmlnKTsKKyAgcmV0dXJuIENyZWF0ZUF1ZGlvU3RyZWFtKGNsaWVudHMsIGNvbmZpZyk7
CiB9CiAKIEF1ZGlvU3RyZWFtUGFpciogU2NlbmFyaW86OkNyZWF0ZUF1ZGlvU3RyZWFtKAotICAg
IENhbGxDbGllbnQqIHNlbmRlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRf
bGluaywKLSAgICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICBzdGQ6OnZlY3RvcjxOZXR3b3Jr
Tm9kZSo+IHJldHVybl9saW5rLAorICAgIHN0ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVu
dCo+IGNsaWVudHMsCiAgICAgQXVkaW9TdHJlYW1Db25maWcgY29uZmlnKSB7Ci0gIHVpbnQ2NF90
IHNlbmRfcmVjZWl2ZXJfaWQgPSBuZXh0X3JlY2VpdmVyX2lkXysrOwotICB1aW50NjRfdCByZXR1
cm5fcmVjZWl2ZXJfaWQgPSBuZXh0X3JlY2VpdmVyX2lkXysrOwotCi0gIGF1ZGlvX3N0cmVhbXNf
LmVtcGxhY2VfYmFjayhuZXcgQXVkaW9TdHJlYW1QYWlyKAotICAgICAgc2VuZGVyLCBzZW5kX2xp
bmssIHNlbmRfcmVjZWl2ZXJfaWQsIGF1ZGlvX2VuY29kZXJfZmFjdG9yeV8sIHJlY2VpdmVyLAot
ICAgICAgcmV0dXJuX2xpbmssIHJldHVybl9yZWNlaXZlcl9pZCwgYXVkaW9fZGVjb2Rlcl9mYWN0
b3J5XywgY29uZmlnKSk7CisgIGF1ZGlvX3N0cmVhbXNfLmVtcGxhY2VfYmFjaygKKyAgICAgIG5l
dyBBdWRpb1N0cmVhbVBhaXIoY2xpZW50cy5maXJzdCwgYXVkaW9fZW5jb2Rlcl9mYWN0b3J5Xywg
Y2xpZW50cy5zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2RlY29kZXJf
ZmFjdG9yeV8sIGNvbmZpZykpOwogICByZXR1cm4gYXVkaW9fc3RyZWFtc18uYmFjaygpLmdldCgp
OwogfQogCkBAIC0yODgsMzcgKzMwNywyMCBAQCB2b2lkIFNjZW5hcmlvOjpBdChUaW1lRGVsdGEg
b2Zmc2V0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pIHsKIH0KIAogdm9pZCBTY2Vu
YXJpbzo6UnVuRm9yKFRpbWVEZWx0YSBkdXJhdGlvbikgewotICBSdW5VbnRpbChkdXJhdGlvbiwg
VGltZURlbHRhOjpQbHVzSW5maW5pdHkoKSwgW10oKSB7IHJldHVybiBmYWxzZTsgfSk7CisgIFJ1
blVudGlsKER1cmF0aW9uKCkgKyBkdXJhdGlvbik7Cit9CisKK3ZvaWQgU2NlbmFyaW86OlJ1blVu
dGlsKFRpbWVEZWx0YSBtYXhfZHVyYXRpb24pIHsKKyAgUnVuVW50aWwobWF4X2R1cmF0aW9uLCBU
aW1lRGVsdGE6OlBsdXNJbmZpbml0eSgpLCBbXSgpIHsgcmV0dXJuIGZhbHNlOyB9KTsKIH0KIAog
dm9pZCBTY2VuYXJpbzo6UnVuVW50aWwoVGltZURlbHRhIG1heF9kdXJhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgIFRpbWVEZWx0YSBwb2xsX2ludGVydmFsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpmdW5jdGlvbjxib29sKCk+IGV4aXRfZnVuY3Rpb24pIHsKLSAgc3RhcnRf
dGltZV8gPSBUaW1lc3RhbXA6OnVzKGNsb2NrXy0+VGltZUluTWljcm9zZWNvbmRzKCkpOwotICBm
b3IgKGF1dG8mIGFjdGl2aXR5IDogcmVwZWF0ZWRfYWN0aXZpdGllc18pIHsKLSAgICBhY3Rpdml0
eS0+U2V0U3RhcnRUaW1lKHN0YXJ0X3RpbWVfKTsKLSAgfQorICBpZiAoc3RhcnRfdGltZV8uSXNJ
bmZpbml0ZSgpKQorICAgIFN0YXJ0KCk7CiAKLSAgZm9yIChhdXRvJiBzdHJlYW1fcGFpciA6IHZp
ZGVvX3N0cmVhbXNfKQotICAgIHN0cmVhbV9wYWlyLT5yZWNlaXZlKCktPnJlY2VpdmVfc3RyZWFt
Xy0+U3RhcnQoKTsKLSAgZm9yIChhdXRvJiBzdHJlYW1fcGFpciA6IGF1ZGlvX3N0cmVhbXNfKQot
ICAgIHN0cmVhbV9wYWlyLT5yZWNlaXZlKCktPnJlY2VpdmVfc3RyZWFtXy0+U3RhcnQoKTsKLSAg
Zm9yIChhdXRvJiBzdHJlYW1fcGFpciA6IHZpZGVvX3N0cmVhbXNfKSB7Ci0gICAgaWYgKHN0cmVh
bV9wYWlyLT5jb25maWdfLmF1dG9zdGFydCkgewotICAgICAgc3RyZWFtX3BhaXItPnNlbmQoKS0+
U3RhcnQoKTsKLSAgICB9Ci0gIH0KLSAgZm9yIChhdXRvJiBzdHJlYW1fcGFpciA6IGF1ZGlvX3N0
cmVhbXNfKSB7Ci0gICAgaWYgKHN0cmVhbV9wYWlyLT5jb25maWdfLmF1dG9zdGFydCkgewotICAg
ICAgc3RyZWFtX3BhaXItPnNlbmQoKS0+U3RhcnQoKTsKLSAgICB9Ci0gIH0KLSAgZm9yIChhdXRv
JiBjYWxsIDogY2xpZW50c18pIHsKLSAgICBjYWxsLT5jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdv
cmtTdGF0ZShNZWRpYVR5cGU6OkFVRElPLCBrTmV0d29ya1VwKTsKLSAgICBjYWxsLT5jYWxsXy0+
U2lnbmFsQ2hhbm5lbE5ldHdvcmtTdGF0ZShNZWRpYVR5cGU6OlZJREVPLCBrTmV0d29ya1VwKTsK
LSAgfQotCi0gIHJ0Yzo6RXZlbnQgZG9uZV8oZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBk
b25lXzsKICAgd2hpbGUgKCFleGl0X2Z1bmN0aW9uKCkgJiYgRHVyYXRpb24oKSA8IG1heF9kdXJh
dGlvbikgewogICAgIFRpbWVzdGFtcCBjdXJyZW50X3RpbWUgPSBOb3coKTsKICAgICBUaW1lRGVs
dGEgZHVyYXRpb24gPSBjdXJyZW50X3RpbWUgLSBzdGFydF90aW1lXzsKQEAgLTM0Niw2ICszNDgs
MzIgQEAgdm9pZCBTY2VuYXJpbzo6UnVuVW50aWwoVGltZURlbHRhIG1heF9kdXJhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwKTsKICAgICB9CiAg
IH0KK30KKwordm9pZCBTY2VuYXJpbzo6U3RhcnQoKSB7CisgIHN0YXJ0X3RpbWVfID0gVGltZXN0
YW1wOjp1cyhjbG9ja18tPlRpbWVJbk1pY3Jvc2Vjb25kcygpKTsKKyAgZm9yIChhdXRvJiBhY3Rp
dml0eSA6IHJlcGVhdGVkX2FjdGl2aXRpZXNfKSB7CisgICAgYWN0aXZpdHktPlNldFN0YXJ0VGlt
ZShzdGFydF90aW1lXyk7CisgIH0KKworICBmb3IgKGF1dG8mIHN0cmVhbV9wYWlyIDogdmlkZW9f
c3RyZWFtc18pCisgICAgc3RyZWFtX3BhaXItPnJlY2VpdmUoKS0+U3RhcnQoKTsKKyAgZm9yIChh
dXRvJiBzdHJlYW1fcGFpciA6IGF1ZGlvX3N0cmVhbXNfKQorICAgIHN0cmVhbV9wYWlyLT5yZWNl
aXZlKCktPlN0YXJ0KCk7CisgIGZvciAoYXV0byYgc3RyZWFtX3BhaXIgOiB2aWRlb19zdHJlYW1z
XykgeworICAgIGlmIChzdHJlYW1fcGFpci0+Y29uZmlnXy5hdXRvc3RhcnQpIHsKKyAgICAgIHN0
cmVhbV9wYWlyLT5zZW5kKCktPlN0YXJ0KCk7CisgICAgfQorICB9CisgIGZvciAoYXV0byYgc3Ry
ZWFtX3BhaXIgOiBhdWRpb19zdHJlYW1zXykgeworICAgIGlmIChzdHJlYW1fcGFpci0+Y29uZmln
Xy5hdXRvc3RhcnQpIHsKKyAgICAgIHN0cmVhbV9wYWlyLT5zZW5kKCktPlN0YXJ0KCk7CisgICAg
fQorICB9Cit9CisKK3ZvaWQgU2NlbmFyaW86OlN0b3AoKSB7CisgIFJUQ19EQ0hFQ0soc3RhcnRf
dGltZV8uSXNGaW5pdGUoKSk7CiAgIGZvciAoYXV0byYgc3RyZWFtX3BhaXIgOiB2aWRlb19zdHJl
YW1zXykgewogICAgIHN0cmVhbV9wYWlyLT5zZW5kKCktPnZpZGVvX2NhcHR1cmVyXy0+U3RvcCgp
OwogICAgIHN0cmVhbV9wYWlyLT5zZW5kKCktPnNlbmRfc3RyZWFtXy0+U3RvcCgpOwpAQCAtMzU2
LDYgKzM4NCw3IEBAIHZvaWQgU2NlbmFyaW86OlJ1blVudGlsKFRpbWVEZWx0YSBtYXhfZHVyYXRp
b24sCiAgICAgc3RyZWFtX3BhaXItPnJlY2VpdmUoKS0+cmVjZWl2ZV9zdHJlYW1fLT5TdG9wKCk7
CiAgIGZvciAoYXV0byYgc3RyZWFtX3BhaXIgOiBhdWRpb19zdHJlYW1zXykKICAgICBzdHJlYW1f
cGFpci0+cmVjZWl2ZSgpLT5yZWNlaXZlX3N0cmVhbV8tPlN0b3AoKTsKKyAgc3RhcnRfdGltZV8g
PSBUaW1lc3RhbXA6OlBsdXNJbmZpbml0eSgpOwogfQogCiBUaW1lc3RhbXAgU2NlbmFyaW86Ok5v
dygpIHsKQEAgLTM2Myw2ICszOTIsOCBAQCBUaW1lc3RhbXAgU2NlbmFyaW86Ok5vdygpIHsKIH0K
IAogVGltZURlbHRhIFNjZW5hcmlvOjpEdXJhdGlvbigpIHsKKyAgaWYgKHN0YXJ0X3RpbWVfLklz
SW5maW5pdGUoKSkKKyAgICByZXR1cm4gVGltZURlbHRhOjpaZXJvKCk7CiAgIHJldHVybiBOb3co
KSAtIHN0YXJ0X3RpbWVfOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvLmgK
aW5kZXggMDU4NzZhYzQ5YzE1NjM4NzJmMjZlZDM4ZGMwMDY4MzllODQ5MDM3OS4uMzhiZWY0NDJl
Y2RkNTMwMjk1MTM3NjhkY2VhMTJlYjU1NzM3OTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpby5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFy
aW8vc2NlbmFyaW8uaApAQCAtNzgsNiArNzgsMjUgQEAgY2xhc3MgU2NlbmFyaW8gewogICAgICAg
c3RkOjpzdHJpbmcgbmFtZSwKICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChDYWxsQ2xpZW50Q29u
ZmlnKik+IGNvbmZpZ19tb2RpZmllcik7CiAKKyAgQ2FsbENsaWVudFBhaXIqIENyZWF0ZVJvdXRl
cyhDYWxsQ2xpZW50KiBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDYWxsQ2xpZW50KiBzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluayk7CisKKyAgQ2FsbENsaWVu
dFBhaXIqIENyZWF0ZVJvdXRlcyhDYWxsQ2xpZW50KiBmaXJzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSBmaXJzdF9vdmVyaGVhZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsQ2xpZW50KiBzZWNvbmQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGlu
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSBzZWNvbmRfb3Zlcmhl
YWQpOworCisgIHZvaWQgQ2hhbmdlUm91dGUoc3RkOjpwYWlyPENhbGxDbGllbnQqLCBDYWxsQ2xp
ZW50Kj4gY2xpZW50cywKKyAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9k
ZSo+IG92ZXJfbm9kZXMpOworCisgIHZvaWQgQ2hhbmdlUm91dGUoc3RkOjpwYWlyPENhbGxDbGll
bnQqLCBDYWxsQ2xpZW50Kj4gY2xpZW50cywKKyAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rv
cjxOZXR3b3JrTm9kZSo+IG92ZXJfbm9kZXMsCisgICAgICAgICAgICAgICAgICAgRGF0YVNpemUg
b3ZlcmhlYWQpOworCiAgIFNpbXVsYXRlZFRpbWVDbGllbnQqIENyZWF0ZVNpbXVsYXRlZFRpbWVD
bGllbnQoCiAgICAgICBzdGQ6OnN0cmluZyBuYW1lLAogICAgICAgU2ltdWxhdGVkVGltZUNsaWVu
dENvbmZpZyBjb25maWcsCkBAIC04NiwyOCArMTA1LDE4IEBAIGNsYXNzIFNjZW5hcmlvIHsKICAg
ICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xpbmspOwogCiAgIFZpZGVvU3Ry
ZWFtUGFpciogQ3JlYXRlVmlkZW9TdHJlYW0oCi0gICAgICBDYWxsQ2xpZW50KiBzZW5kZXIsCi0g
ICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICAgIENhbGxDbGll
bnQqIHJlY2VpdmVyLAotICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGlu
aywKKyAgICAgIHN0ZDo6cGFpcjxDYWxsQ2xpZW50KiwgQ2FsbENsaWVudCo+IGNsaWVudHMsCiAg
ICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoVmlkZW9TdHJlYW1Db25maWcqKT4gY29uZmlnX21vZGlm
aWVyKTsKLSAgVmlkZW9TdHJlYW1QYWlyKiBDcmVhdGVWaWRlb1N0cmVhbShDYWxsQ2xpZW50KiBz
ZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8
TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ2FsbENsaWVudCogcmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiByZXR1cm5fbGluaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWcpOwor
ICBWaWRlb1N0cmVhbVBhaXIqIENyZWF0ZVZpZGVvU3RyZWFtKAorICAgICAgc3RkOjpwYWlyPENh
bGxDbGllbnQqLCBDYWxsQ2xpZW50Kj4gY2xpZW50cywKKyAgICAgIFZpZGVvU3RyZWFtQ29uZmln
IGNvbmZpZyk7CiAKICAgQXVkaW9TdHJlYW1QYWlyKiBDcmVhdGVBdWRpb1N0cmVhbSgKLSAgICAg
IENhbGxDbGllbnQqIHNlbmRlciwKLSAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gc2Vu
ZF9saW5rLAotICAgICAgQ2FsbENsaWVudCogcmVjZWl2ZXIsCi0gICAgICBzdGQ6OnZlY3RvcjxO
ZXR3b3JrTm9kZSo+IHJldHVybl9saW5rLAorICAgICAgc3RkOjpwYWlyPENhbGxDbGllbnQqLCBD
YWxsQ2xpZW50Kj4gY2xpZW50cywKICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChBdWRpb1N0cmVh
bUNvbmZpZyopPiBjb25maWdfbW9kaWZpZXIpOwotICBBdWRpb1N0cmVhbVBhaXIqIENyZWF0ZUF1
ZGlvU3RyZWFtKENhbGxDbGllbnQqIHNlbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+
IHJldHVybl9saW5rLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlv
U3RyZWFtQ29uZmlnIGNvbmZpZyk7CisgIEF1ZGlvU3RyZWFtUGFpciogQ3JlYXRlQXVkaW9TdHJl
YW0oCisgICAgICBzdGQ6OnBhaXI8Q2FsbENsaWVudCosIENhbGxDbGllbnQqPiBjbGllbnRzLAor
ICAgICAgQXVkaW9TdHJlYW1Db25maWcgY29uZmlnKTsKIAogICBDcm9zc1RyYWZmaWNTb3VyY2Uq
IENyZWF0ZUNyb3NzVHJhZmZpYygKICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gb3Zl
cl9ub2RlcywKQEAgLTEzMSw5ICsxNDAsMTIgQEAgY2xhc3MgU2NlbmFyaW8gewogICAvLyBSdW5z
IHRoZSBzY2VuYXJpbyBmb3IgdGhlIGdpdmVuIHRpbWUgb3IgdW50aWwgdGhlIGV4aXQgZnVuY3Rp
b24gcmV0dXJucwogICAvLyB0cnVlLgogICB2b2lkIFJ1bkZvcihUaW1lRGVsdGEgZHVyYXRpb24p
OworICB2b2lkIFJ1blVudGlsKFRpbWVEZWx0YSBtYXhfZHVyYXRpb24pOwogICB2b2lkIFJ1blVu
dGlsKFRpbWVEZWx0YSBtYXhfZHVyYXRpb24sCiAgICAgICAgICAgICAgICAgVGltZURlbHRhIHBy
b2JlX2ludGVydmFsLAogICAgICAgICAgICAgICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbCgpPiBleGl0
X2Z1bmN0aW9uKTsKKyAgdm9pZCBTdGFydCgpOworICB2b2lkIFN0b3AoKTsKIAogICAvLyBUcmln
Z2VycyBzZW5kaW5nIG9mIGR1bW15IHBhY2tldHMgb3ZlciB0aGUgZ2l2ZW4gbm9kZXMuCiAgIHZv
aWQgVHJpZ2dlclBhY2tldEJ1cnN0KHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gb3Zlcl9ub2Rl
cywKQEAgLTE2Nyw2ICsxNzksNyBAQCBjbGFzcyBTY2VuYXJpbyB7CiAgIHJ0Yzo6RmFrZUNsb2Nr
IGV2ZW50X2xvZ19mYWtlX2Nsb2NrXzsKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Q2FsbENsaWVudD4+IGNsaWVudHNfOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2Fs
bENsaWVudFBhaXI+PiBjbGllbnRfcGFpcnNfOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya05vZGU+PiBuZXR3b3JrX25vZGVzXzsKICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPENyb3NzVHJhZmZpY1NvdXJjZT4+IGNyb3NzX3RyYWZmaWNfc291cmNlc187CiAgIHN0
ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1N0cmVhbVBhaXI+PiB2aWRlb19zdHJlYW1z
XzsKQEAgLTE3OSw3ICsxOTIsNyBAQCBjbGFzcyBTY2VuYXJpbyB7CiAgIHN0ZDo6dmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxQZW5kaW5nQWN0aXZpdHk+PiBwZW5kaW5nX2FjdGl2aXRpZXNfOwogICBz
dGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVzUHJpbnRlcj4+IHByaW50ZXJzXzsKIAot
ICBpbnQ2NF90IG5leHRfcmVjZWl2ZXJfaWRfID0gNDAwMDA7CisgIGludDY0X3QgbmV4dF9yb3V0
ZV9pZF8gPSA0MDAwMDsKICAgcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGVjb2RlckZhY3Rvcnk+
IGF1ZGlvX2RlY29kZXJfZmFjdG9yeV87CiAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxBdWRpb0VuY29k
ZXJGYWN0b3J5PiBhdWRpb19lbmNvZGVyX2ZhY3RvcnlfOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlv
X2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVz
dC9zY2VuYXJpby9zY2VuYXJpb19jb25maWcuaAppbmRleCBlNjUyZTJjZTM5MjFkZjlkNjM0OTU3
YzFkMDVhMWRjODQ0M2U5N2ExLi44OGZkYjhhZjAxNzM1Y2JjMDU2N2MxYjE1NDhhNTMxY2QzY2Zl
MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvX2NvbmZpZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2NlbmFyaW9fY29uZmlnLmgK
QEAgLTI4LDcgKzI4LDEyIEBAIHN0cnVjdCBQYWNrZXRPdmVyaGVhZCB7CiAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IGtJcHY2ID0gNDA7CiAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtVZHAg
PSA4OwogICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3J0cCA9IDEwOwotICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBrVHVybiA9IDQ7CisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTdHVu
ID0gNDsKKyAgLy8gVFVSTiBtZXNzYWdlcyBjYW4gYmUgc2VudCBlaXRoZXIgd2l0aCBvciB3aXRo
b3V0IGFuIGVzdGFibGllc2hlZCBjaGFubmVsLgorICAvLyBJbiB0aGUgbGF0dGVyIGNhc2UsIGEg
VFVSTiBTZW5kL0RhdGEgSW5kaWNhdGlvbiBpcyBzZW50IHdoaWNoIGhhcworICAvLyBzaWduaWZp
Y2FudGx5IG1vcmUgb3ZlcmhlYWQuCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtUdXJuQ2hh
bm5lbE1lc3NhZ2UgPSA0OworICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrVHVybkluZGljYXRp
b25NZXNzYWdlID0gMzY7CiAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtEZWZhdWx0ID0ga0lw
djQgKyBrVWRwICsga1NydHA7CiB9Owogc3RydWN0IFRyYW5zcG9ydENvbnRyb2xsZXJDb25maWcg
ewpAQCAtNDYsNyArNTEsNiBAQCBzdHJ1Y3QgVHJhbnNwb3J0Q29udHJvbGxlckNvbmZpZyB7CiAK
IHN0cnVjdCBDYWxsQ2xpZW50Q29uZmlnIHsKICAgVHJhbnNwb3J0Q29udHJvbGxlckNvbmZpZyB0
cmFuc3BvcnQ7Ci0gIERhdGFSYXRlIHByaW9yaXR5X3RhcmdldF9yYXRlID0gRGF0YVJhdGU6Olpl
cm8oKTsKIH07CiAKIHN0cnVjdCBTaW11bGF0ZWRUaW1lQ2xpZW50Q29uZmlnIHsKQEAgLTcxLDYg
Kzc1LDEwIEBAIHN0cnVjdCBQYWNrZXRTdHJlYW1Db25maWcgewogc3RydWN0IFZpZGVvU3RyZWFt
Q29uZmlnIHsKICAgYm9vbCBhdXRvc3RhcnQgPSB0cnVlOwogICBzdHJ1Y3QgU291cmNlIHsKKyAg
ICBlbnVtIGNsYXNzIENvbnRlbnRUeXBlIHsKKyAgICAgIGtWaWRlbywKKyAgICAgIGtTY3JlZW4s
CisgICAgfSBjb250ZW50X3R5cGUgPSBDb250ZW50VHlwZTo6a1ZpZGVvOwogICAgIGVudW0gQ2Fw
dHVyZSB7CiAgICAgICBrR2VuZXJhdG9yLAogICAgICAga1ZpZGVvRmlsZSwKQEAgLTEwMyw2ICsx
MTEsNyBAQCBzdHJ1Y3QgVmlkZW9TdHJlYW1Db25maWcgewogICAgIGFic2w6Om9wdGlvbmFsPGlu
dD4ga2V5X2ZyYW1lX2ludGVydmFsID0gMzAwMDsKIAogICAgIGFic2w6Om9wdGlvbmFsPERhdGFS
YXRlPiBtYXhfZGF0YV9yYXRlOworICAgIGFic2w6Om9wdGlvbmFsPGludD4gbWF4X2ZyYW1lcmF0
ZTsKICAgICBzaXplX3QgbnVtX3NpbXVsY2FzdF9zdHJlYW1zID0gMTsKICAgICB1c2luZyBEZWdy
YWRhdGlvblByZWZlcmVuY2UgPSBEZWdyYWRhdGlvblByZWZlcmVuY2U7CiAgICAgRGVncmFkYXRp
b25QcmVmZXJlbmNlIGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UgPQpAQCAtMTE0LDEwICsxMjMsMTAg
QEAgc3RydWN0IFZpZGVvU3RyZWFtQ29uZmlnIHsKICAgICB+U3RyZWFtKCk7CiAgICAgYm9vbCBw
YWNrZXRfZmVlZGJhY2sgPSB0cnVlOwogICAgIGJvb2wgdXNlX3J0eCA9IHRydWU7CisgICAgRGF0
YVJhdGUgcGFkX3RvX3JhdGUgPSBEYXRhUmF0ZTo6WmVybygpOwogICAgIFRpbWVEZWx0YSBuYWNr
X2hpc3RvcnlfdGltZSA9IFRpbWVEZWx0YTo6bXMoMTAwMCk7CiAgICAgYm9vbCB1c2VfZmxleGZl
YyA9IGZhbHNlOwogICAgIGJvb2wgdXNlX3VscGZlYyA9IGZhbHNlOwotICAgIERhdGFTaXplIHBh
Y2tldF9vdmVyaGVhZCA9IERhdGFTaXplOjpieXRlcyhQYWNrZXRPdmVyaGVhZDo6a0RlZmF1bHQp
OwogICB9IHN0cmVhbTsKICAgc3RydWN0IFJlbmRlcmVyIHsKICAgICBlbnVtIFR5cGUgeyBrRmFr
ZSB9IHR5cGUgPSBrRmFrZTsKQEAgLTEzMiw2ICsxNDEsMTcgQEAgc3RydWN0IEF1ZGlvU3RyZWFt
Q29uZmlnIHsKICAgc3RydWN0IFNvdXJjZSB7CiAgICAgaW50IGNoYW5uZWxzID0gMTsKICAgfSBz
b3VyY2U7CisgIGJvb2wgbmV0d29ya19hZGFwdGF0aW9uID0gZmFsc2U7CisgIHN0cnVjdCBOZXR3
b3JrQWRhcHRhdGlvbiB7CisgICAgc3RydWN0IEZyYW1lTGVuZ3RoIHsKKyAgICAgIGRvdWJsZSBt
aW5fcGFja2V0X2xvc3NfZm9yX2RlY3JlYXNlID0gMDsKKyAgICAgIGRvdWJsZSBtYXhfcGFja2V0
X2xvc3NfZm9yX2luY3JlYXNlID0gMTsKKyAgICAgIERhdGFSYXRlIG1pbl9yYXRlX2Zvcl8yMF9t
cyA9IERhdGFSYXRlOjpaZXJvKCk7CisgICAgICBEYXRhUmF0ZSBtYXhfcmF0ZV9mb3JfNjBfbXMg
PSBEYXRhUmF0ZTo6SW5maW5pdHkoKTsKKyAgICAgIERhdGFSYXRlIG1pbl9yYXRlX2Zvcl82MF9t
cyA9IERhdGFSYXRlOjpaZXJvKCk7CisgICAgICBEYXRhUmF0ZSBtYXhfcmF0ZV9mb3JfMTIwX21z
ID0gRGF0YVJhdGU6OkluZmluaXR5KCk7CisgICAgfSBmcmFtZTsKKyAgfSBhZGFwdDsKICAgc3Ry
dWN0IEVuY29kZXIgewogICAgIEVuY29kZXIoKTsKICAgICBFbmNvZGVyKGNvbnN0IEVuY29kZXIm
KTsKQEAgLTE0MCw2ICsxNjAsNyBAQCBzdHJ1Y3QgQXVkaW9TdHJlYW1Db25maWcgewogICAgIGFi
c2w6Om9wdGlvbmFsPERhdGFSYXRlPiBmaXhlZF9yYXRlOwogICAgIGFic2w6Om9wdGlvbmFsPERh
dGFSYXRlPiBtaW5fcmF0ZTsKICAgICBhYnNsOjpvcHRpb25hbDxEYXRhUmF0ZT4gbWF4X3JhdGU7
CisgICAgYWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IHByaW9yaXR5X3JhdGU7CiAgICAgVGltZURl
bHRhIGluaXRpYWxfZnJhbWVfbGVuZ3RoID0gVGltZURlbHRhOjptcygyMCk7CiAgIH0gZW5jb2Rl
cjsKICAgc3RydWN0IFN0cmVhbSB7CkBAIC0xNDcsOCArMTY4LDYgQEAgc3RydWN0IEF1ZGlvU3Ry
ZWFtQ29uZmlnIHsKICAgICBTdHJlYW0oY29uc3QgU3RyZWFtJik7CiAgICAgflN0cmVhbSgpOwog
ICAgIGJvb2wgaW5fYmFuZHdpZHRoX2VzdGltYXRpb24gPSBmYWxzZTsKLSAgICBib29sIHJhdGVf
YWxsb2NhdGlvbl9wcmlvcml0eSA9IGZhbHNlOwotICAgIERhdGFTaXplIHBhY2tldF9vdmVyaGVh
ZCA9IERhdGFTaXplOjpieXRlcyhQYWNrZXRPdmVyaGVhZDo6a0RlZmF1bHQpOwogICB9IHN0cmVh
bTsKICAgc3RydWN0IFJlbmRlciB7CiAgICAgc3RkOjpzdHJpbmcgc3luY19ncm91cDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2Nl
bmFyaW8vc2NlbmFyaW9fdGVzdHMvYmJyX3BlcmZvcm1hbmNlLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb190ZXN0cy9i
YnJfcGVyZm9ybWFuY2UuY2MKaW5kZXggZTg3Y2M2OGRkMzFmNzBjOGY4ZmNlM2YwZGRhNzU3YTZh
Mjc1OWQyOS4uMjhjYWJjMDcwZmRhMDdmYjc2NjNhMTMwZTRmODc3OTVjMTg3ZjU0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2Vu
YXJpby9zY2VuYXJpb190ZXN0cy9iYnJfcGVyZm9ybWFuY2UuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb190ZXN0
cy9iYnJfcGVyZm9ybWFuY2UuY2MKQEAgLTE2NywzMSArMTY3LDMxIEBAIFRFU1RfUChCYnJTY2Vu
YXJpb1Rlc3QsIFJlY2VpdmVzVmlkZW8pIHsKICAgbmV0X2NvbmYuc2ltdWxhdGlvbi5kZWxheV9z
dGRfZGV2ID0gY29uZl8uc2NlbmFyaW8uZGVsYXlfbm9pc2U7CiAgIFNpbXVsYXRpb25Ob2RlKiBz
ZW5kX25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUobmV0X2NvbmYpOwogICBTaW11bGF0aW9u
Tm9kZSogcmV0X25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlvbk5vZGUobmV0X2NvbmYpOwotICBWaWRl
b1N0cmVhbVBhaXIqIGFsaWNlX3ZpZGVvID0gcy5DcmVhdGVWaWRlb1N0cmVhbSgKLSAgICAgIGFs
aWNlLCB7c2VuZF9uZXR9LCBib2IsIHtyZXRfbmV0fSwgWyZdKFZpZGVvU3RyZWFtQ29uZmlnKiBj
KSB7CisgIGF1dG8gcm91dGUgPSBzLkNyZWF0ZVJvdXRlcyhhbGljZSwge3NlbmRfbmV0fSwgYm9i
LCB7cmV0X25ldH0pOworCisgIFZpZGVvU3RyZWFtUGFpciogYWxpY2VfdmlkZW8gPQorICAgICAg
cy5DcmVhdGVWaWRlb1N0cmVhbShyb3V0ZS0+Zm9yd2FyZCgpLCBbJl0oVmlkZW9TdHJlYW1Db25m
aWcqIGMpIHsKICAgICAgICAgYy0+ZW5jb2Rlci5mYWtlLm1heF9yYXRlID0gRGF0YVJhdGU6Omti
cHMoMTgwMCk7CiAgICAgICB9KTsKLSAgcy5DcmVhdGVBdWRpb1N0cmVhbShhbGljZSwge3NlbmRf
bmV0fSwgYm9iLCB7cmV0X25ldH0sCi0gICAgICAgICAgICAgICAgICAgICAgWyZdKEF1ZGlvU3Ry
ZWFtQ29uZmlnKiBjKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZl8udHVuaW5n
LnVzZV9iYnIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+c3RyZWFtLmluX2JhbmR3
aWR0aF9lc3RpbWF0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+ZW5j
b2Rlci5maXhlZF9yYXRlID0gRGF0YVJhdGU6OmticHMoMzEpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgIH0pOworICBzLkNyZWF0ZUF1ZGlvU3RyZWFt
KHJvdXRlLT5mb3J3YXJkKCksIFsmXShBdWRpb1N0cmVhbUNvbmZpZyogYykgeworICAgIGlmIChj
b25mXy50dW5pbmcudXNlX2JicikgeworICAgICAgYy0+c3RyZWFtLmluX2JhbmR3aWR0aF9lc3Rp
bWF0aW9uID0gdHJ1ZTsKKyAgICAgIGMtPmVuY29kZXIuZml4ZWRfcmF0ZSA9IERhdGFSYXRlOjpr
YnBzKDMxKTsKKyAgICB9CisgIH0pOwogCiAgIFZpZGVvU3RyZWFtUGFpciogYm9iX3ZpZGVvID0g
bnVsbHB0cjsKICAgaWYgKGNvbmZfLnNjZW5hcmlvLnJldHVybl90cmFmZmljKSB7Ci0gICAgYm9i
X3ZpZGVvID0gcy5DcmVhdGVWaWRlb1N0cmVhbSgKLSAgICAgICAgYm9iLCB7cmV0X25ldH0sIGFs
aWNlLCB7c2VuZF9uZXR9LCBbJl0oVmlkZW9TdHJlYW1Db25maWcqIGMpIHsKKyAgICBib2Jfdmlk
ZW8gPQorICAgICAgICBzLkNyZWF0ZVZpZGVvU3RyZWFtKHJvdXRlLT5yZXZlcnNlKCksIFsmXShW
aWRlb1N0cmVhbUNvbmZpZyogYykgewogICAgICAgICAgIGMtPmVuY29kZXIuZmFrZS5tYXhfcmF0
ZSA9IERhdGFSYXRlOjprYnBzKDE4MDApOwogICAgICAgICB9KTsKLSAgICBzLkNyZWF0ZUF1ZGlv
U3RyZWFtKGJvYiwge3JldF9uZXR9LCBhbGljZSwge3NlbmRfbmV0fSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFsmXShBdWRpb1N0cmVhbUNvbmZpZyogYykgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoY29uZl8udHVuaW5nLnVzZV9iYnIpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjLT5zdHJlYW0uaW5fYmFuZHdpZHRoX2VzdGltYXRpb24gPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGMtPmVuY29kZXIuZml4ZWRfcmF0ZSA9IERhdGFSYXRlOjpr
YnBzKDMxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgcy5DcmVhdGVBdWRpb1N0cmVhbShyb3V0ZS0+cmV2ZXJzZSgpLCBbJl0o
QXVkaW9TdHJlYW1Db25maWcqIGMpIHsKKyAgICAgIGlmIChjb25mXy50dW5pbmcudXNlX2Jicikg
eworICAgICAgICBjLT5zdHJlYW0uaW5fYmFuZHdpZHRoX2VzdGltYXRpb24gPSB0cnVlOworICAg
ICAgICBjLT5lbmNvZGVyLmZpeGVkX3JhdGUgPSBEYXRhUmF0ZTo6a2JwcygzMSk7CisgICAgICB9
CisgICAgfSk7CiAgIH0KICAgQ3Jvc3NUcmFmZmljQ29uZmlnIGNyb3NzX2NvbmZpZzsKICAgY3Jv
c3NfY29uZmlnLnBlYWtfcmF0ZSA9IGNvbmZfLnNjZW5hcmlvLmNyb3NzX3RyYWZmaWM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Nj
ZW5hcmlvL3NjZW5hcmlvX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zY2VuYXJpb191bml0dGVzdC5jYwppbmRleCAz
MDVmODY2MGNjZDc0NGU5ZTdmNTYzZDhmMzNlMmJmZGMyNGM4Y2UzLi45NzI4NWQzOTE0NTlmMmNm
YzhjM2FmYzY2NWIzODFjODE1MWY3Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NjZW5hcmlvX3VuaXR0ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2Nl
bmFyaW8vc2NlbmFyaW9fdW5pdHRlc3QuY2MKQEAgLTIxLDE0ICsyMSwxOSBAQCBURVNUKFNjZW5h
cmlvVGVzdCwgU3RhcnRzQW5kU3RvcHNXaXRob3V0RXJyb3JzKSB7CiAgIE5ldHdvcmtOb2RlQ29u
ZmlnIG5ldHdvcmtfY29uZmlnOwogICBhdXRvIGFsaWNlX25ldCA9IHMuQ3JlYXRlU2ltdWxhdGlv
bk5vZGUobmV0d29ya19jb25maWcpOwogICBhdXRvIGJvYl9uZXQgPSBzLkNyZWF0ZVNpbXVsYXRp
b25Ob2RlKG5ldHdvcmtfY29uZmlnKTsKKyAgYXV0byByb3V0ZSA9IHMuQ3JlYXRlUm91dGVzKGFs
aWNlLCB7YWxpY2VfbmV0fSwgYm9iLCB7Ym9iX25ldH0pOwogCiAgIFZpZGVvU3RyZWFtQ29uZmln
IHZpZGVvX3N0cmVhbV9jb25maWc7Ci0gIHMuQ3JlYXRlVmlkZW9TdHJlYW0oYWxpY2UsIHthbGlj
ZV9uZXR9LCBib2IsIHtib2JfbmV0fSwgdmlkZW9fc3RyZWFtX2NvbmZpZyk7Ci0gIHMuQ3JlYXRl
VmlkZW9TdHJlYW0oYm9iLCB7Ym9iX25ldH0sIGFsaWNlLCB7YWxpY2VfbmV0fSwgdmlkZW9fc3Ry
ZWFtX2NvbmZpZyk7CisgIHMuQ3JlYXRlVmlkZW9TdHJlYW0ocm91dGUtPmZvcndhcmQoKSwgdmlk
ZW9fc3RyZWFtX2NvbmZpZyk7CisgIHMuQ3JlYXRlVmlkZW9TdHJlYW0ocm91dGUtPnJldmVyc2Uo
KSwgdmlkZW9fc3RyZWFtX2NvbmZpZyk7CiAKICAgQXVkaW9TdHJlYW1Db25maWcgYXVkaW9fc3Ry
ZWFtX2NvbmZpZzsKLSAgcy5DcmVhdGVBdWRpb1N0cmVhbShhbGljZSwge2FsaWNlX25ldH0sIGJv
Yiwge2JvYl9uZXR9LCBhdWRpb19zdHJlYW1fY29uZmlnKTsKLSAgcy5DcmVhdGVBdWRpb1N0cmVh
bShib2IsIHtib2JfbmV0fSwgYWxpY2UsIHthbGljZV9uZXR9LCBhdWRpb19zdHJlYW1fY29uZmln
KTsKKyAgYXVkaW9fc3RyZWFtX2NvbmZpZy5lbmNvZGVyLm1pbl9yYXRlID0gRGF0YVJhdGU6Omti
cHMoNik7CisgIGF1ZGlvX3N0cmVhbV9jb25maWcuZW5jb2Rlci5tYXhfcmF0ZSA9IERhdGFSYXRl
OjprYnBzKDY0KTsKKyAgYXVkaW9fc3RyZWFtX2NvbmZpZy5lbmNvZGVyLmFsbG9jYXRlX2JpdHJh
dGUgPSB0cnVlOworICBhdWRpb19zdHJlYW1fY29uZmlnLnN0cmVhbS5pbl9iYW5kd2lkdGhfZXN0
aW1hdGlvbiA9IGZhbHNlOworICBzLkNyZWF0ZUF1ZGlvU3RyZWFtKHJvdXRlLT5mb3J3YXJkKCks
IGF1ZGlvX3N0cmVhbV9jb25maWcpOworICBzLkNyZWF0ZUF1ZGlvU3RyZWFtKHJvdXRlLT5yZXZl
cnNlKCksIGF1ZGlvX3N0cmVhbV9jb25maWcpOwogCiAgIENyb3NzVHJhZmZpY0NvbmZpZyBjcm9z
c190cmFmZmljX2NvbmZpZzsKICAgcy5DcmVhdGVDcm9zc1RyYWZmaWMoe2FsaWNlX25ldH0sIGNy
b3NzX3RyYWZmaWNfY29uZmlnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2ltdWxhdGVkX3RpbWUuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NpbXVs
YXRlZF90aW1lLmNjCmluZGV4IGYyOWE4MmM0NTUwMjlmMjM5NjE0ZjNjMWVhYTQyZGNkMTZmOWIz
MTMuLmE1OTc3ZTdkOTY1ZDIzNmU5OTU0ZTM4MDFkZTRlMTQ1MWRjOTgxM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8v
c2ltdWxhdGVkX3RpbWUuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdGVzdC9zY2VuYXJpby9zaW11bGF0ZWRfdGltZS5jYwpAQCAtMTQ0LDcgKzE0NCw3
IEBAIFRyYW5zcG9ydFBhY2tldHNGZWVkYmFjayBTaW11bGF0ZWRTZW5kZXI6OlB1bGxGZWVkYmFj
a1JlcG9ydCgKICAgICAgICAgfQogICAgICAgfQogCi0gICAgICBkYXRhX2luX2ZsaWdodF8gLT0g
ZmVlZGJhY2suc2VudF9wYWNrZXQtPnNpemU7CisgICAgICBkYXRhX2luX2ZsaWdodF8gLT0gZmVl
ZGJhY2suc2VudF9wYWNrZXQuc2l6ZTsKICAgICAgIHJlcG9ydC5wYWNrZXRfZmVlZGJhY2tzLnB1
c2hfYmFjayhmZWVkYmFjayk7CiAgICAgfQogICB9CkBAIC0yNTIsMTEgKzI1MiwxMiBAQCBTaW11
bGF0ZWRUaW1lQ2xpZW50OjpTaW11bGF0ZWRUaW1lQ2xpZW50KAogICAgICAgcmV0dXJuX2xpbmtf
KHJldHVybl9saW5rKSwKICAgICAgIHNlbmRlcl8oc2VuZF9saW5rLmZyb250KCksIHNlbmRfcmVj
ZWl2ZXJfaWQpLAogICAgICAgZmVlZGJhY2tfKGNvbmZpZywgcmV0dXJuX3JlY2VpdmVyX2lkLCBy
ZXR1cm5fbGluay5mcm9udCgpKSB7CisgIGN1cnJlbnRfY29udHJhaW50c18uYXRfdGltZSA9IGF0
X3RpbWU7CisgIGN1cnJlbnRfY29udHJhaW50c18uc3RhcnRpbmdfcmF0ZSA9IGNvbmZpZy50cmFu
c3BvcnQucmF0ZXMuc3RhcnRfcmF0ZTsKKyAgY3VycmVudF9jb250cmFpbnRzXy5taW5fZGF0YV9y
YXRlID0gY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5taW5fcmF0ZTsKKyAgY3VycmVudF9jb250cmFp
bnRzXy5tYXhfZGF0YV9yYXRlID0gY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5tYXhfcmF0ZTsKICAg
TmV0d29ya0NvbnRyb2xsZXJDb25maWcgaW5pdGlhbF9jb25maWc7Ci0gIGluaXRpYWxfY29uZmln
LmNvbnN0cmFpbnRzLmF0X3RpbWUgPSBhdF90aW1lOwotICBpbml0aWFsX2NvbmZpZy5jb25zdHJh
aW50cy5zdGFydGluZ19yYXRlID0gY29uZmlnLnRyYW5zcG9ydC5yYXRlcy5zdGFydF9yYXRlOwot
ICBpbml0aWFsX2NvbmZpZy5jb25zdHJhaW50cy5taW5fZGF0YV9yYXRlID0gY29uZmlnLnRyYW5z
cG9ydC5yYXRlcy5taW5fcmF0ZTsKLSAgaW5pdGlhbF9jb25maWcuY29uc3RyYWludHMubWF4X2Rh
dGFfcmF0ZSA9IGNvbmZpZy50cmFuc3BvcnQucmF0ZXMubWF4X3JhdGU7CisgIGluaXRpYWxfY29u
ZmlnLmNvbnN0cmFpbnRzID0gY3VycmVudF9jb250cmFpbnRzXzsKICAgY29uZ2VzdGlvbl9jb250
cm9sbGVyXyA9IG5ldHdvcmtfY29udHJvbGxlcl9mYWN0b3J5Xy5DcmVhdGUoaW5pdGlhbF9jb25m
aWcpOwogICBmb3IgKGF1dG8mIHN0cmVhbV9jb25maWcgOiBzdHJlYW1fY29uZmlncykKICAgICBw
YWNrZXRfc3RyZWFtc18uZW1wbGFjZV9iYWNrKG5ldyBQYWNrZXRTdHJlYW0oc3RyZWFtX2NvbmZp
ZykpOwpAQCAtMjgzLDkgKzI4NCw5IEBAIGJvb2wgU2ltdWxhdGVkVGltZUNsaWVudDo6VHJ5RGVs
aXZlclBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHJhd19idWZmZXIsCiAgIGZvciAoUGFj
a2V0UmVzdWx0JiBmZWVkYmFjayA6IHJlcG9ydC5wYWNrZXRfZmVlZGJhY2tzKSB7CiAgICAgaWYg
KHBhY2tldF9sb2dfKQogICAgICAgZnByaW50ZihwYWNrZXRfbG9nXywgIiUiIFBSSWQ2NCAiICUi
IFBSSWQ2NCAiICUuM2xmICUuM2xmICUuM2xmXG4iLAotICAgICAgICAgICAgICBmZWVkYmFjay5z
ZW50X3BhY2tldC0+c2VxdWVuY2VfbnVtYmVyLAotICAgICAgICAgICAgICBmZWVkYmFjay5zZW50
X3BhY2tldC0+c2l6ZS5ieXRlcygpLAotICAgICAgICAgICAgICBmZWVkYmFjay5zZW50X3BhY2tl
dC0+c2VuZF90aW1lLnNlY29uZHM8ZG91YmxlPigpLAorICAgICAgICAgICAgICBmZWVkYmFjay5z
ZW50X3BhY2tldC5zZXF1ZW5jZV9udW1iZXIsCisgICAgICAgICAgICAgIGZlZWRiYWNrLnNlbnRf
cGFja2V0LnNpemUuYnl0ZXMoKSwKKyAgICAgICAgICAgICAgZmVlZGJhY2suc2VudF9wYWNrZXQu
c2VuZF90aW1lLnNlY29uZHM8ZG91YmxlPigpLAogICAgICAgICAgICAgICBmZWVkYmFjay5yZWNl
aXZlX3RpbWUuc2Vjb25kczxkb3VibGU+KCksCiAgICAgICAgICAgICAgIGF0X3RpbWUuc2Vjb25k
czxkb3VibGU+KCkpOwogICB9CkBAIC0zMDcsNiArMzA4LDcgQEAgdm9pZCBTaW11bGF0ZWRUaW1l
Q2xpZW50OjpVcGRhdGUoTmV0d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRlKSB7CiAgICAgRGF0YVJh
dGUgcmF0ZV9wZXJfc3RyZWFtID0KICAgICAgICAgdXBkYXRlLnRhcmdldF9yYXRlLT50YXJnZXRf
cmF0ZSAqIHJhdGlvX3Blcl9zdHJlYW07CiAgICAgdGFyZ2V0X3JhdGVfID0gdXBkYXRlLnRhcmdl
dF9yYXRlLT50YXJnZXRfcmF0ZTsKKyAgICBsaW5rX2NhcGFjaXR5XyA9IHVwZGF0ZS50YXJnZXRf
cmF0ZS0+bmV0d29ya19lc3RpbWF0ZS5iYW5kd2lkdGg7CiAgICAgZm9yIChhdXRvJiBzdHJlYW0g
OiBwYWNrZXRfc3RyZWFtc18pCiAgICAgICBzdHJlYW0tPk9uVGFyZ2V0UmF0ZVVwZGF0ZShyYXRl
X3Blcl9zdHJlYW0pOwogICB9CkBAIC0zMzYsMTAgKzMzOCwyMiBAQCB2b2lkIFNpbXVsYXRlZFRp
bWVDbGllbnQ6OlByb2Nlc3NGcmFtZXMoVGltZXN0YW1wIGF0X3RpbWUpIHsKICAgfQogfQogCit2
b2lkIFNpbXVsYXRlZFRpbWVDbGllbnQ6OlRyaWdnZXJGYWtlUmVyb3V0ZShUaW1lc3RhbXAgYXRf
dGltZSkgeworICBOZXR3b3JrUm91dGVDaGFuZ2UgbXNnOworICBtc2cuYXRfdGltZSA9IGF0X3Rp
bWU7CisgIG1zZy5jb25zdHJhaW50cyA9IGN1cnJlbnRfY29udHJhaW50c187CisgIG1zZy5jb25z
dHJhaW50cy5hdF90aW1lID0gYXRfdGltZTsKKyAgVXBkYXRlKGNvbmdlc3Rpb25fY29udHJvbGxl
cl8tPk9uTmV0d29ya1JvdXRlQ2hhbmdlKG1zZykpOworfQorCiBUaW1lRGVsdGEgU2ltdWxhdGVk
VGltZUNsaWVudDo6R2V0TmV0d29ya0NvbnRyb2xsZXJQcm9jZXNzSW50ZXJ2YWwoKSBjb25zdCB7
CiAgIHJldHVybiBuZXR3b3JrX2NvbnRyb2xsZXJfZmFjdG9yeV8uR2V0UHJvY2Vzc0ludGVydmFs
KCk7CiB9CiAKK0RhdGFSYXRlIFNpbXVsYXRlZFRpbWVDbGllbnQ6OmxpbmtfY2FwYWNpdHkoKSBj
b25zdCB7CisgIHJldHVybiBsaW5rX2NhcGFjaXR5XzsKK30KKwogZG91YmxlIFNpbXVsYXRlZFRp
bWVDbGllbnQ6OnRhcmdldF9yYXRlX2ticHMoKSBjb25zdCB7CiAgIHJldHVybiB0YXJnZXRfcmF0
ZV8ua2Jwczxkb3VibGU+KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NpbXVsYXRlZF90aW1lLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NjZW5hcmlvL3NpbXVs
YXRlZF90aW1lLmgKaW5kZXggYjljNmRlMTI0ZDQxZjVkNTNhYmU5MjgxOWI1ZWE2NWRkNDEyYmQ0
Yi4uNzlmZGY4NDU3MzZkMjZhNDQyZjE3ZTFiNjJjNjgwMjg5ZTMwZDU4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby9z
aW11bGF0ZWRfdGltZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3Qvc2NlbmFyaW8vc2ltdWxhdGVkX3RpbWUuaApAQCAtMTI5LDggKzEyOSwxMCBA
QCBjbGFzcyBTaW11bGF0ZWRUaW1lQ2xpZW50IDogTmV0d29ya1JlY2VpdmVySW50ZXJmYWNlIHsK
ICAgdm9pZCBDb25nZXN0aW9uUHJvY2VzcyhUaW1lc3RhbXAgYXRfdGltZSk7CiAgIHZvaWQgUGFj
ZXJQcm9jZXNzKFRpbWVzdGFtcCBhdF90aW1lKTsKICAgdm9pZCBQcm9jZXNzRnJhbWVzKFRpbWVz
dGFtcCBhdF90aW1lKTsKKyAgdm9pZCBUcmlnZ2VyRmFrZVJlcm91dGUoVGltZXN0YW1wIGF0X3Rp
bWUpOwogICBUaW1lRGVsdGEgR2V0TmV0d29ya0NvbnRyb2xsZXJQcm9jZXNzSW50ZXJ2YWwoKSBj
b25zdDsKICAgZG91YmxlIHRhcmdldF9yYXRlX2ticHMoKSBjb25zdDsKKyAgRGF0YVJhdGUgbGlu
a19jYXBhY2l0eSgpIGNvbnN0OwogCiAgIGJvb2wgVHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlP
bldyaXRlQnVmZmVyIHBhY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJl
Y2VpdmVyLApAQCAtMTQ0LDcgKzE0Niw5IEBAIGNsYXNzIFNpbXVsYXRlZFRpbWVDbGllbnQgOiBO
ZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgewogICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHJl
dHVybl9saW5rXzsKICAgU2ltdWxhdGVkU2VuZGVyIHNlbmRlcl87CiAgIFNpbXVsYXRlZEZlZWRi
YWNrIGZlZWRiYWNrXzsKKyAgVGFyZ2V0UmF0ZUNvbnN0cmFpbnRzIGN1cnJlbnRfY29udHJhaW50
c187CiAgIERhdGFSYXRlIHRhcmdldF9yYXRlXyA9IERhdGFSYXRlOjpJbmZpbml0eSgpOworICBE
YXRhUmF0ZSBsaW5rX2NhcGFjaXR5XyA9IERhdGFSYXRlOjpJbmZpbml0eSgpOwogICBGSUxFKiBw
YWNrZXRfbG9nXyA9IG51bGxwdHI7CiAKICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBh
Y2tldFN0cmVhbT4+IHBhY2tldF9zdHJlYW1zXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFyaW8vdmlkZW9fc3RyZWFtLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJp
by92aWRlb19zdHJlYW0uY2MKaW5kZXggYjg1MDM0ZmZiMjAyMjMzMDJiNjkyMzIzNThhZWIzNTk3
YmRmZDAzYy4uMzYzOTkyMzRhZGNhZjk4ZDJhYjZjNDY4MTg2MTRiM2Y1ZGQ2YzFjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2Vu
YXJpby92aWRlb19zdHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby92aWRlb19zdHJlYW0uY2MKQEAgLTEyLDEzICsxMiwx
NCBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVk
ZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5j
bHVkZSAiYXBpL3ZpZGVvL2J1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5o
IgogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKICNpbmNsdWRlICJtZWRp
YS9lbmdpbmUvaW50ZXJuYWxkZWNvZGVyZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2lu
ZS9pbnRlcm5hbGVuY29kZXJmYWN0b3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL3dlYnJ0
Y3ZpZGVvZW5naW5lLmgiCiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKICNpbmNsdWRlICJ0
ZXN0L2Zha2VfZW5jb2Rlci5oIgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAidGVzdC9zY2VuYXJpby9oYXJkd2FyZV9jb2RlY3MuaCIK
ICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgogCkBAIC0xMzEsMTEgKzEz
MiwyMCBAQCBWaWRlb0VuY29kZXJDb25maWcgQ3JlYXRlVmlkZW9FbmNvZGVyQ29uZmlnKFZpZGVv
U3RyZWFtQ29uZmlnIGNvbmZpZykgewogICBzaXplX3QgbnVtX3N0cmVhbXMgPSBjb25maWcuZW5j
b2Rlci5udW1fc2ltdWxjYXN0X3N0cmVhbXM7CiAgIFZpZGVvRW5jb2RlckNvbmZpZyBlbmNvZGVy
X2NvbmZpZzsKICAgZW5jb2Rlcl9jb25maWcuY29kZWNfdHlwZSA9IGNvbmZpZy5lbmNvZGVyLmNv
ZGVjOwotICBlbmNvZGVyX2NvbmZpZy5jb250ZW50X3R5cGUgPSBWaWRlb0VuY29kZXJDb25maWc6
OkNvbnRlbnRUeXBlOjprUmVhbHRpbWVWaWRlbzsKKyAgc3dpdGNoIChjb25maWcuc291cmNlLmNv
bnRlbnRfdHlwZSkgeworICAgIGNhc2UgVmlkZW9TdHJlYW1Db25maWc6OlNvdXJjZTo6Q29udGVu
dFR5cGU6OmtWaWRlbzoKKyAgICAgIGVuY29kZXJfY29uZmlnLmNvbnRlbnRfdHlwZSA9CisgICAg
ICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1JlYWx0aW1lVmlkZW87Cisg
ICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvU3RyZWFtQ29uZmlnOjpTb3VyY2U6OkNvbnRlbnRU
eXBlOjprU2NyZWVuOgorICAgICAgZW5jb2Rlcl9jb25maWcuY29udGVudF90eXBlID0gVmlkZW9F
bmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1NjcmVlbjsKKyAgICAgIGJyZWFrOworICB9CiAg
IGVuY29kZXJfY29uZmlnLnZpZGVvX2Zvcm1hdCA9CiAgICAgICBTZHBWaWRlb0Zvcm1hdChDb2Rl
Y1R5cGVUb1BheWxvYWRTdHJpbmcoY29uZmlnLmVuY29kZXIuY29kZWMpLCB7fSk7CiAgIGVuY29k
ZXJfY29uZmlnLm51bWJlcl9vZl9zdHJlYW1zID0gbnVtX3N0cmVhbXM7CiAgIGVuY29kZXJfY29u
ZmlnLnNpbXVsY2FzdF9sYXllcnMgPSBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4obnVtX3N0cmVh
bXMpOworICBlbmNvZGVyX2NvbmZpZy5taW5fdHJhbnNtaXRfYml0cmF0ZV9icHMgPSBjb25maWcu
c3RyZWFtLnBhZF90b19yYXRlLmJwcygpOwogCiAgIHN0ZDo6c3RyaW5nIGNyaWNrZXRfY29kZWMg
PSBDb2RlY1R5cGVUb0NvZGVjTmFtZShjb25maWcuZW5jb2Rlci5jb2RlYyk7CiAgIGlmICghY3Jp
Y2tldF9jb2RlYy5lbXB0eSgpKSB7CkBAIC0xNTMsNiArMTYzLDEyIEBAIFZpZGVvRW5jb2RlckNv
bmZpZyBDcmVhdGVWaWRlb0VuY29kZXJDb25maWcoVmlkZW9TdHJlYW1Db25maWcgY29uZmlnKSB7
CiAgIH0KICAgZW5jb2Rlcl9jb25maWcuZW5jb2Rlcl9zcGVjaWZpY19zZXR0aW5ncyA9CiAgICAg
ICBDcmVhdGVFbmNvZGVyU3BlY2lmaWNTZXR0aW5ncyhjb25maWcpOworICBpZiAoY29uZmlnLmVu
Y29kZXIubWF4X2ZyYW1lcmF0ZSkgeworICAgIGZvciAoYXV0byYgbGF5ZXIgOiBlbmNvZGVyX2Nv
bmZpZy5zaW11bGNhc3RfbGF5ZXJzKSB7CisgICAgICBsYXllci5tYXhfZnJhbWVyYXRlID0gKmNv
bmZpZy5lbmNvZGVyLm1heF9mcmFtZXJhdGU7CisgICAgfQorICB9CisKICAgcmV0dXJuIGVuY29k
ZXJfY29uZmlnOwogfQogfSAgLy8gbmFtZXNwYWNlCkBAIC0xOTMsMTEgKzIwOSwxMyBAQCBTZW5k
VmlkZW9TdHJlYW06OlNlbmRWaWRlb1N0cmVhbShDYWxsQ2xpZW50KiBzZW5kZXIsCiAgICAgY2Fz
ZSBFbmNvZGVyOjpJbXBsZW1lbnRhdGlvbjo6a0Zha2U6CiAgICAgICBpZiAoY29uZmlnLmVuY29k
ZXIuY29kZWMgPT0gQ29kZWM6OmtWaWRlb0NvZGVjR2VuZXJpYykgewogICAgICAgICBlbmNvZGVy
X2ZhY3RvcnlfID0KLSAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uVmlkZW9F
bmNvZGVyRmFjdG9yeT4oW3RoaXMsIGNvbmZpZ10oKSB7CisgICAgICAgICAgICBhYnNsOjptYWtl
X3VuaXF1ZTxGdW5jdGlvblZpZGVvRW5jb2RlckZhY3Rvcnk+KFt0aGlzXSgpIHsKKyAgICAgICAg
ICAgICAgcnRjOjpDcml0U2NvcGUgY3MoJmNyaXRfKTsKICAgICAgICAgICAgICAgYXV0byBlbmNv
ZGVyID0KICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkZha2VFbmNv
ZGVyPihzZW5kZXJfLT5jbG9ja18pOwotICAgICAgICAgICAgICBpZiAoY29uZmlnLmVuY29kZXIu
ZmFrZS5tYXhfcmF0ZS5Jc0Zpbml0ZSgpKQotICAgICAgICAgICAgICAgIGVuY29kZXItPlNldE1h
eEJpdHJhdGUoY29uZmlnLmVuY29kZXIuZmFrZS5tYXhfcmF0ZS5rYnBzKCkpOworICAgICAgICAg
ICAgICBmYWtlX2VuY29kZXJzXy5wdXNoX2JhY2soZW5jb2Rlci5nZXQoKSk7CisgICAgICAgICAg
ICAgIGlmIChjb25maWdfLmVuY29kZXIuZmFrZS5tYXhfcmF0ZS5Jc0Zpbml0ZSgpKQorICAgICAg
ICAgICAgICAgIGVuY29kZXItPlNldE1heEJpdHJhdGUoY29uZmlnXy5lbmNvZGVyLmZha2UubWF4
X3JhdGUua2JwcygpKTsKICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZXI7CiAgICAgICAgICAg
ICB9KTsKICAgICAgIH0gZWxzZSB7CkBAIC0yMTMsOSArMjMxLDE1IEBAIFNlbmRWaWRlb1N0cmVh
bTo6U2VuZFZpZGVvU3RyZWFtKENhbGxDbGllbnQqIHNlbmRlciwKICAgfQogICBSVENfQ0hFQ0so
ZW5jb2Rlcl9mYWN0b3J5Xyk7CiAKKyAgYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8gPSBDcmVh
dGVCdWlsdGluVmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeSgpOworICBSVENfQ0hFQ0soYml0
cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8pOworCiAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnIHNl
bmRfY29uZmlnID0KICAgICAgIENyZWF0ZVZpZGVvU2VuZFN0cmVhbUNvbmZpZyhjb25maWcsIHNz
cmNzXywgc2VuZF90cmFuc3BvcnQpOwogICBzZW5kX2NvbmZpZy5lbmNvZGVyX3NldHRpbmdzLmVu
Y29kZXJfZmFjdG9yeSA9IGVuY29kZXJfZmFjdG9yeV8uZ2V0KCk7CisgIHNlbmRfY29uZmlnLmVu
Y29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICBiaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5Xy5nZXQoKTsKKwogICBWaWRlb0VuY29kZXJDb25maWcgZW5jb2Rl
cl9jb25maWcgPSBDcmVhdGVWaWRlb0VuY29kZXJDb25maWcoY29uZmlnKTsKIAogICBzZW5kX3N0
cmVhbV8gPSBzZW5kZXJfLT5jYWxsXy0+Q3JlYXRlVmlkZW9TZW5kU3RyZWFtKApAQCAtMjMyLDI5
ICsyNTYsMzQgQEAgU2VuZFZpZGVvU3RyZWFtOjp+U2VuZFZpZGVvU3RyZWFtKCkgewogdm9pZCBT
ZW5kVmlkZW9TdHJlYW06OlN0YXJ0KCkgewogICBzZW5kX3N0cmVhbV8tPlN0YXJ0KCk7CiAgIHZp
ZGVvX2NhcHR1cmVyXy0+U3RhcnQoKTsKKyAgc2VuZGVyXy0+Y2FsbF8tPlNpZ25hbENoYW5uZWxO
ZXR3b3JrU3RhdGUoTWVkaWFUeXBlOjpWSURFTywga05ldHdvcmtVcCk7CiB9CiAKLWJvb2wgU2Vu
ZFZpZGVvU3RyZWFtOjpUcnlEZWxpdmVyUGFja2V0KHJ0Yzo6Q29weU9uV3JpdGVCdWZmZXIgcGFj
a2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVj
ZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lc3RhbXAg
YXRfdGltZSkgewotICAvLyBSZW1vdmVzIGFkZGVkIG92ZXJoZWFkIGJlZm9yZSBkZWxpdmVyaW5n
IFJUQ1AgcGFja2V0IHRvIHNlbmRlci4KLSAgUlRDX0RDSEVDS19HRShwYWNrZXQuc2l6ZSgpLCBj
b25maWdfLnN0cmVhbS5wYWNrZXRfb3ZlcmhlYWQuYnl0ZXMoKSk7Ci0gIHBhY2tldC5TZXRTaXpl
KHBhY2tldC5zaXplKCkgLSBjb25maWdfLnN0cmVhbS5wYWNrZXRfb3ZlcmhlYWQuYnl0ZXMoKSk7
Ci0gIHNlbmRlcl8tPkRlbGl2ZXJQYWNrZXQoTWVkaWFUeXBlOjpWSURFTywgcGFja2V0LCBhdF90
aW1lKTsKLSAgcmV0dXJuIHRydWU7Cit2b2lkIFNlbmRWaWRlb1N0cmVhbTo6VXBkYXRlQ29uZmln
KAorICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChWaWRlb1N0cmVhbUNvbmZpZyopPiBtb2RpZmllcikg
eworICBydGM6OkNyaXRTY29wZSBjcygmY3JpdF8pOworICBWaWRlb1N0cmVhbUNvbmZpZyBwcmlv
cl9jb25maWcgPSBjb25maWdfOworICBtb2RpZmllcigmY29uZmlnXyk7CisgIGlmIChwcmlvcl9j
b25maWcuZW5jb2Rlci5mYWtlLm1heF9yYXRlICE9IGNvbmZpZ18uZW5jb2Rlci5mYWtlLm1heF9y
YXRlKSB7CisgICAgZm9yIChhdXRvKiBlbmNvZGVyIDogZmFrZV9lbmNvZGVyc18pIHsKKyAgICAg
IGVuY29kZXItPlNldE1heEJpdHJhdGUoY29uZmlnXy5lbmNvZGVyLmZha2UubWF4X3JhdGUua2Jw
cygpKTsKKyAgICB9CisgIH0KKyAgLy8gVE9ETyhzcnRlKTogQWRkIG1vcmUgY29uZGl0aW9ucyB0
aGF0IHNob3VsZCBjYXVzZSByZWNvbmZpZ3VyYXRpb24uCisgIGlmIChwcmlvcl9jb25maWcuZW5j
b2Rlci5tYXhfZnJhbWVyYXRlICE9IGNvbmZpZ18uZW5jb2Rlci5tYXhfZnJhbWVyYXRlKSB7Cisg
ICAgVmlkZW9FbmNvZGVyQ29uZmlnIGVuY29kZXJfY29uZmlnID0gQ3JlYXRlVmlkZW9FbmNvZGVy
Q29uZmlnKGNvbmZpZ18pOworICAgIHNlbmRfc3RyZWFtXy0+UmVjb25maWd1cmVWaWRlb0VuY29k
ZXIoc3RkOjptb3ZlKGVuY29kZXJfY29uZmlnKSk7CisgIH0KKyAgaWYgKHByaW9yX2NvbmZpZy5z
b3VyY2UuZnJhbWVyYXRlICE9IGNvbmZpZ18uc291cmNlLmZyYW1lcmF0ZSkgeworICAgIFNldENh
cHR1cmVGcmFtZXJhdGUoY29uZmlnXy5zb3VyY2UuZnJhbWVyYXRlKTsKKyAgfQogfQogCiB2b2lk
IFNlbmRWaWRlb1N0cmVhbTo6U2V0Q2FwdHVyZUZyYW1lcmF0ZShpbnQgZnJhbWVyYXRlKSB7CiAg
IFJUQ19DSEVDSyhmcmFtZV9nZW5lcmF0b3JfKQogICAgICAgPDwgIkZyYW1lcmF0ZSBjaGFuZ2Ug
b25seSBpbXBsZW1lbnRlZCBmb3IgZ2VuZXJhdG9ycyI7CiAgIGZyYW1lX2dlbmVyYXRvcl8tPkNo
YW5nZUZyYW1lcmF0ZShmcmFtZXJhdGUpOwotfQogCi12b2lkIFNlbmRWaWRlb1N0cmVhbTo6U2V0
TWF4RnJhbWVyYXRlKGFic2w6Om9wdGlvbmFsPGludD4gbWF4X2ZyYW1lcmF0ZSkgewotICBWaWRl
b0VuY29kZXJDb25maWcgZW5jb2Rlcl9jb25maWcgPSBDcmVhdGVWaWRlb0VuY29kZXJDb25maWco
Y29uZmlnXyk7Ci0gIFJUQ19EQ0hFQ0tfRVEoZW5jb2Rlcl9jb25maWcuc2ltdWxjYXN0X2xheWVy
cy5zaXplKCksIDEpOwotICBlbmNvZGVyX2NvbmZpZy5zaW11bGNhc3RfbGF5ZXJzWzBdLm1heF9m
cmFtZXJhdGUgPSBtYXhfZnJhbWVyYXRlLnZhbHVlX29yKC0xKTsKLSAgc2VuZF9zdHJlYW1fLT5S
ZWNvbmZpZ3VyZVZpZGVvRW5jb2RlcihzdGQ6Om1vdmUoZW5jb2Rlcl9jb25maWcpKTsKIH0KIAog
VmlkZW9TZW5kU3RyZWFtOjpTdGF0cyBTZW5kVmlkZW9TdHJlYW06OkdldFN0YXRzKCkgY29uc3Qg
ewpAQCAtMjg0LDE1ICszMTMsMTQgQEAgUmVjZWl2ZVZpZGVvU3RyZWFtOjpSZWNlaXZlVmlkZW9T
dHJlYW0oQ2FsbENsaWVudCogcmVjZWl2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTZW5kVmlkZW9TdHJlYW0qIHNlbmRfc3RyZWFtLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNob3Nlbl9zdHJlYW0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc3BvcnQqIGZlZWRiYWNrX3RyYW5zcG9y
dCkKLSAgICA6IHJlY2VpdmVyXyhyZWNlaXZlciksCi0gICAgICBjb25maWdfKGNvbmZpZyksCi0g
ICAgICBkZWNvZGVyX2ZhY3RvcnlfKGFic2w6Om1ha2VfdW5pcXVlPEludGVybmFsRGVjb2RlckZh
Y3Rvcnk+KCkpIHsKKyAgICA6IHJlY2VpdmVyXyhyZWNlaXZlciksIGNvbmZpZ18oY29uZmlnKSB7
CiAgIHJlbmRlcmVyXyA9IGFic2w6Om1ha2VfdW5pcXVlPEZha2VWaWRlb1JlbmRlcmVyPigpOwog
ICBWaWRlb1JlY2VpdmVTdHJlYW06OkNvbmZpZyByZWN2X2NvbmZpZyhmZWVkYmFja190cmFuc3Bv
cnQpOwogICByZWN2X2NvbmZpZy5ydHAucmVtYiA9ICFjb25maWcuc3RyZWFtLnBhY2tldF9mZWVk
YmFjazsKICAgcmVjdl9jb25maWcucnRwLnRyYW5zcG9ydF9jYyA9IGNvbmZpZy5zdHJlYW0ucGFj
a2V0X2ZlZWRiYWNrOwogICByZWN2X2NvbmZpZy5ydHAubG9jYWxfc3NyYyA9IENhbGxUZXN0Ojpr
UmVjZWl2ZXJMb2NhbFZpZGVvU3NyYzsKICAgcmVjdl9jb25maWcucnRwLmV4dGVuc2lvbnMgPSBH
ZXRWaWRlb1J0cEV4dGVuc2lvbnMoY29uZmlnKTsKKyAgcmVjZWl2ZXJfLT5BZGRFeHRlbnNpb25z
KHJlY3ZfY29uZmlnLnJ0cC5leHRlbnNpb25zKTsKICAgUlRDX0RDSEVDSyghY29uZmlnLnN0cmVh
bS51c2VfcnR4IHx8CiAgICAgICAgICAgICAgY29uZmlnLnN0cmVhbS5uYWNrX2hpc3RvcnlfdGlt
ZSA+IFRpbWVEZWx0YTo6WmVybygpKTsKICAgcmVjdl9jb25maWcucnRwLm5hY2sucnRwX2hpc3Rv
cnlfbXMgPSBjb25maWcuc3RyZWFtLm5hY2tfaGlzdG9yeV90aW1lLm1zKCk7CkBAIC0zMDAsMTQg
KzMyOCwyNCBAQCBSZWNlaXZlVmlkZW9TdHJlYW06OlJlY2VpdmVWaWRlb1N0cmVhbShDYWxsQ2xp
ZW50KiByZWNlaXZlciwKICAgcmVjdl9jb25maWcucmVuZGVyZXIgPSByZW5kZXJlcl8uZ2V0KCk7
CiAgIGlmIChjb25maWcuc3RyZWFtLnVzZV9ydHgpIHsKICAgICByZWN2X2NvbmZpZy5ydHAucnR4
X3NzcmMgPSBzZW5kX3N0cmVhbS0+cnR4X3NzcmNzX1tjaG9zZW5fc3RyZWFtXTsKKyAgICByZWNl
aXZlci0+c3NyY19tZWRpYV90eXBlc19bcmVjdl9jb25maWcucnRwLnJ0eF9zc3JjXSA9IE1lZGlh
VHlwZTo6VklERU87CiAgICAgcmVjdl9jb25maWcucnRwCiAgICAgICAgIC5ydHhfYXNzb2NpYXRl
ZF9wYXlsb2FkX3R5cGVzW0NhbGxUZXN0OjprU2VuZFJ0eFBheWxvYWRUeXBlXSA9CiAgICAgICAg
IENvZGVjVHlwZVRvUGF5bG9hZFR5cGUoY29uZmlnLmVuY29kZXIuY29kZWMpOwogICB9CiAgIHJl
Y3ZfY29uZmlnLnJ0cC5yZW1vdGVfc3NyYyA9IHNlbmRfc3RyZWFtLT5zc3Jjc19bY2hvc2VuX3N0
cmVhbV07CisgIHJlY2VpdmVyLT5zc3JjX21lZGlhX3R5cGVzX1tyZWN2X2NvbmZpZy5ydHAucmVt
b3RlX3NzcmNdID0gTWVkaWFUeXBlOjpWSURFTzsKKwogICBWaWRlb1JlY2VpdmVTdHJlYW06OkRl
Y29kZXIgZGVjb2RlciA9CiAgICAgICBDcmVhdGVNYXRjaGluZ0RlY29kZXIoQ29kZWNUeXBlVG9Q
YXlsb2FkVHlwZShjb25maWcuZW5jb2Rlci5jb2RlYyksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ29kZWNUeXBlVG9QYXlsb2FkU3RyaW5nKGNvbmZpZy5lbmNvZGVyLmNvZGVjKSk7Cisg
IGlmIChjb25maWcuZW5jb2Rlci5jb2RlYyA9PQorICAgICAgVmlkZW9TdHJlYW1Db25maWc6OkVu
Y29kZXI6OkNvZGVjOjprVmlkZW9Db2RlY0dlbmVyaWMpIHsKKyAgICBkZWNvZGVyX2ZhY3Rvcnlf
ID0gYWJzbDo6bWFrZV91bmlxdWU8RnVuY3Rpb25WaWRlb0RlY29kZXJGYWN0b3J5PigKKyAgICAg
ICAgW10oKSB7IHJldHVybiBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlRGVjb2Rlcj4oKTsgfSk7Cisg
IH0gZWxzZSB7CisgICAgZGVjb2Rlcl9mYWN0b3J5XyA9IGFic2w6Om1ha2VfdW5pcXVlPEludGVy
bmFsRGVjb2RlckZhY3Rvcnk+KCk7CisgIH0KICAgZGVjb2Rlci5kZWNvZGVyX2ZhY3RvcnkgPSBk
ZWNvZGVyX2ZhY3RvcnlfLmdldCgpOwogICByZWN2X2NvbmZpZy5kZWNvZGVycy5wdXNoX2JhY2so
ZGVjb2Rlcik7CiAKQEAgLTMxNiw2ICszNTQsNyBAQCBSZWNlaXZlVmlkZW9TdHJlYW06OlJlY2Vp
dmVWaWRlb1N0cmVhbShDYWxsQ2xpZW50KiByZWNlaXZlciwKICAgICBGbGV4ZmVjUmVjZWl2ZVN0
cmVhbTo6Q29uZmlnIGZsZXhmZWNfY29uZmlnKGZlZWRiYWNrX3RyYW5zcG9ydCk7CiAgICAgZmxl
eGZlY19jb25maWcucGF5bG9hZF90eXBlID0gQ2FsbFRlc3Q6OmtGbGV4ZmVjUGF5bG9hZFR5cGU7
CiAgICAgZmxleGZlY19jb25maWcucmVtb3RlX3NzcmMgPSBDYWxsVGVzdDo6a0ZsZXhmZWNTZW5k
U3NyYzsKKyAgICByZWNlaXZlci0+c3NyY19tZWRpYV90eXBlc19bZmxleGZlY19jb25maWcucmVt
b3RlX3NzcmNdID0gTWVkaWFUeXBlOjpWSURFTzsKICAgICBmbGV4ZmVjX2NvbmZpZy5wcm90ZWN0
ZWRfbWVkaWFfc3NyY3MgPSBzZW5kX3N0cmVhbS0+cnR4X3NzcmNzXzsKICAgICBmbGV4ZmVjX2Nv
bmZpZy5sb2NhbF9zc3JjID0gcmVjdl9jb25maWcucnRwLmxvY2FsX3NzcmM7CiAgICAgZmxlY2Zl
Y19zdHJlYW1fID0KQEAgLTMzNyw0NiArMzc2LDIzIEBAIFJlY2VpdmVWaWRlb1N0cmVhbTo6flJl
Y2VpdmVWaWRlb1N0cmVhbSgpIHsKICAgICByZWNlaXZlcl8tPmNhbGxfLT5EZXN0cm95RmxleGZl
Y1JlY2VpdmVTdHJlYW0oZmxlY2ZlY19zdHJlYW1fKTsKIH0KIAotYm9vbCBSZWNlaXZlVmlkZW9T
dHJlYW06OlRyeURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcCBh
dF90aW1lKSB7Ci0gIFJUQ19EQ0hFQ0tfR0UocGFja2V0LnNpemUoKSwgY29uZmlnXy5zdHJlYW0u
cGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwotICBwYWNrZXQuU2V0U2l6ZShwYWNrZXQuc2l6ZSgp
IC0gY29uZmlnXy5zdHJlYW0ucGFja2V0X292ZXJoZWFkLmJ5dGVzKCkpOwotICByZWNlaXZlcl8t
PkRlbGl2ZXJQYWNrZXQoTWVkaWFUeXBlOjpWSURFTywgcGFja2V0LCBhdF90aW1lKTsKLSAgcmV0
dXJuIHRydWU7Cit2b2lkIFJlY2VpdmVWaWRlb1N0cmVhbTo6U3RhcnQoKSB7CisgIHJlY2VpdmVf
c3RyZWFtXy0+U3RhcnQoKTsKKyAgcmVjZWl2ZXJfLT5jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdv
cmtTdGF0ZShNZWRpYVR5cGU6OlZJREVPLCBrTmV0d29ya1VwKTsKIH0KIAogVmlkZW9TdHJlYW1Q
YWlyOjp+VmlkZW9TdHJlYW1QYWlyKCkgPSBkZWZhdWx0OwogCiBWaWRlb1N0cmVhbVBhaXI6OlZp
ZGVvU3RyZWFtUGFpcihDYWxsQ2xpZW50KiBzZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9kZSo+IHNlbmRfbGluaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNlbmRfcmVjZWl2ZXJfaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsQ2xpZW50KiByZWNlaXZlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0
dXJuX2xpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCByZXR1
cm5fcmVjZWl2ZXJfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb1N0
cmVhbUNvbmZpZyBjb25maWcpCiAgICAgOiBjb25maWdfKGNvbmZpZyksCi0gICAgICBzZW5kX2xp
bmtfKHNlbmRfbGluayksCi0gICAgICByZXR1cm5fbGlua18ocmV0dXJuX2xpbmspLAotICAgICAg
c2VuZF90cmFuc3BvcnRfKHNlbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICBzZW5kX2xpbmsu
ZnJvbnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICBzZW5kX3JlY2VpdmVyX2lkLAotICAgICAg
ICAgICAgICAgICAgICAgIGNvbmZpZy5zdHJlYW0ucGFja2V0X292ZXJoZWFkKSwKLSAgICAgIHJl
dHVybl90cmFuc3BvcnRfKHJlY2VpdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
X2xpbmsuZnJvbnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9yZWNlaXZlcl9p
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zdHJlYW0ucGFja2V0X292ZXJoZWFk
KSwKLSAgICAgIHNlbmRfc3RyZWFtXyhzZW5kZXIsIGNvbmZpZywgJnNlbmRfdHJhbnNwb3J0Xyks
CisgICAgICBzZW5kX3N0cmVhbV8oc2VuZGVyLCBjb25maWcsICZzZW5kZXItPnRyYW5zcG9ydF8p
LAogICAgICAgcmVjZWl2ZV9zdHJlYW1fKHJlY2VpdmVyLAogICAgICAgICAgICAgICAgICAgICAg
IGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAmc2VuZF9zdHJlYW1fLAogICAgICAgICAg
ICAgICAgICAgICAgIC8qY2hvc2VuX3N0cmVhbT0qLzAsCi0gICAgICAgICAgICAgICAgICAgICAg
JnJldHVybl90cmFuc3BvcnRfKSB7Ci0gIE5ldHdvcmtOb2RlOjpSb3V0ZShzZW5kX3RyYW5zcG9y
dF8uUmVjZWl2ZXJJZCgpLCBzZW5kX2xpbmtfLAotICAgICAgICAgICAgICAgICAgICAgJnJlY2Vp
dmVfc3RyZWFtXyk7Ci0gIE5ldHdvcmtOb2RlOjpSb3V0ZShyZXR1cm5fdHJhbnNwb3J0Xy5SZWNl
aXZlcklkKCksIHJldHVybl9saW5rXywKLSAgICAgICAgICAgICAgICAgICAgICZzZW5kX3N0cmVh
bV8pOwotfQorICAgICAgICAgICAgICAgICAgICAgICZyZWNlaXZlci0+dHJhbnNwb3J0Xykge30K
IAogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2NlbmFy
aW8vdmlkZW9fc3RyZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90ZXN0L3NjZW5hcmlvL3ZpZGVvX3N0cmVhbS5oCmluZGV4IGU2Njk2MTgzYTdlYmQ1MDNj
ZmVlMDUyN2U3OGNhYzA0OGVjOWI2MDEuLmViZjljOTUxYjcwNjkyMzU5NjUxODA1ODA2OGRjNjRi
ZWJjM2JkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3Qvc2NlbmFyaW8vdmlkZW9fc3RyZWFtLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zY2VuYXJpby92aWRlb19zdHJlYW0uaApA
QCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgInJ0Y19iYXNl
L2NvbnN0cnVjdG9ybWFnaWMuaCIKKyNpbmNsdWRlICJ0ZXN0L2Zha2VfZW5jb2Rlci5oIgogI2lu
Y2x1ZGUgInRlc3QvZnJhbWVfZ2VuZXJhdG9yX2NhcHR1cmVyLmgiCiAjaW5jbHVkZSAidGVzdC9z
Y2VuYXJpby9jYWxsX2NsaWVudC5oIgogI2luY2x1ZGUgInRlc3Qvc2NlbmFyaW8vY29sdW1uX3By
aW50ZXIuaCIKQEAgLTI1LDE1ICsyNiwxNSBAQCBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFj
ZSB0ZXN0IHsKIC8vIFNlbmRWaWRlb1N0cmVhbSBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGNo
YW5naW5nIHBhcmFtZXRlcnMgYW5kIHJldHJpZXZpbmcKIC8vIHN0YXRlcyBhdCBydW4gdGltZS4K
LWNsYXNzIFNlbmRWaWRlb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2Ug
eworY2xhc3MgU2VuZFZpZGVvU3RyZWFtIHsKICBwdWJsaWM6CiAgIFJUQ19ESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oU2VuZFZpZGVvU3RyZWFtKTsKICAgflNlbmRWaWRlb1N0cmVhbSgpOwogICB2
b2lkIFNldENhcHR1cmVGcmFtZXJhdGUoaW50IGZyYW1lcmF0ZSk7Ci0gIHZvaWQgU2V0TWF4RnJh
bWVyYXRlKGFic2w6Om9wdGlvbmFsPGludD4gbWF4X2ZyYW1lcmF0ZSk7CiAgIFZpZGVvU2VuZFN0
cmVhbTo6U3RhdHMgR2V0U3RhdHMoKSBjb25zdDsKICAgQ29sdW1uUHJpbnRlciBTdGF0c1ByaW50
ZXIoKTsKICAgdm9pZCBTdGFydCgpOworICB2b2lkIFVwZGF0ZUNvbmZpZyhzdGQ6OmZ1bmN0aW9u
PHZvaWQoVmlkZW9TdHJlYW1Db25maWcqKT4gbW9kaWZpZXIpOwogCiAgcHJpdmF0ZToKICAgZnJp
ZW5kIGNsYXNzIFNjZW5hcmlvOwpAQCAtNDMsMjUgKzQ0LDI4IEBAIGNsYXNzIFNlbmRWaWRlb1N0
cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgewogICBTZW5kVmlkZW9TdHJl
YW0oQ2FsbENsaWVudCogc2VuZGVyLAogICAgICAgICAgICAgICAgICAgVmlkZW9TdHJlYW1Db25m
aWcgY29uZmlnLAogICAgICAgICAgICAgICAgICAgVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCk7
Ci0gIGJvb2wgVHJ5RGVsaXZlclBhY2tldChydGM6OkNvcHlPbldyaXRlQnVmZmVyIHBhY2tldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlY2VpdmVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpIG92ZXJyaWRlOwogCisgIHJ0Yzo6Q3JpdGlj
YWxTZWN0aW9uIGNyaXRfOwogICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gc3NyY3NfOwogICBzdGQ6
OnZlY3Rvcjx1aW50MzJfdD4gcnR4X3NzcmNzXzsKICAgVmlkZW9TZW5kU3RyZWFtKiBzZW5kX3N0
cmVhbV8gPSBudWxscHRyOwogICBDYWxsQ2xpZW50KiBjb25zdCBzZW5kZXJfOwotICBjb25zdCBW
aWRlb1N0cmVhbUNvbmZpZyBjb25maWdfOworICBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWdfIFJU
Q19HVUFSREVEX0JZKGNyaXRfKTsKICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rv
cnk+IGVuY29kZXJfZmFjdG9yeV87CisgIHN0ZDo6dmVjdG9yPHRlc3Q6OkZha2VFbmNvZGVyKj4g
ZmFrZV9lbmNvZGVyc18gUlRDX0dVQVJERURfQlkoY3JpdF8pOworICBzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4gYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV87
CiAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0VmlkZW9DYXB0dXJlcj4gdmlkZW9fY2FwdHVyZXJfOwog
ICBGcmFtZUdlbmVyYXRvckNhcHR1cmVyKiBmcmFtZV9nZW5lcmF0b3JfID0gbnVsbHB0cjsKKyAg
aW50IG5leHRfbG9jYWxfbmV0d29ya19pZF8gPSAwOworICBpbnQgbmV4dF9yZW1vdGVfbmV0d29y
a19pZF8gPSAwOwogfTsKIAogLy8gUmVjZWl2ZVZpZGVvU3RyZWFtIHJlcHJlc2VudHMgYSB2aWRl
byByZWNlaXZlci4gSXQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseS4KLWNsYXNzIFJlY2VpdmVWaWRl
b1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJbnRlcmZhY2UgeworY2xhc3MgUmVjZWl2
ZVZpZGVvU3RyZWFtIHsKICBwdWJsaWM6CiAgIFJUQ19ESVNBTExPV19DT1BZX0FORF9BU1NJR04o
UmVjZWl2ZVZpZGVvU3RyZWFtKTsKICAgflJlY2VpdmVWaWRlb1N0cmVhbSgpOworICB2b2lkIFN0
YXJ0KCk7CiAKICBwcml2YXRlOgogICBmcmllbmQgY2xhc3MgU2NlbmFyaW87CkBAIC03MSw5ICs3
NSw3IEBAIGNsYXNzIFJlY2VpdmVWaWRlb1N0cmVhbSA6IHB1YmxpYyBOZXR3b3JrUmVjZWl2ZXJJ
bnRlcmZhY2UgewogICAgICAgICAgICAgICAgICAgICAgU2VuZFZpZGVvU3RyZWFtKiBzZW5kX3N0
cmVhbSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjaG9zZW5fc3RyZWFtLAogICAgICAg
ICAgICAgICAgICAgICAgVHJhbnNwb3J0KiBmZWVkYmFja190cmFuc3BvcnQpOwotICBib29sIFRy
eURlbGl2ZXJQYWNrZXQocnRjOjpDb3B5T25Xcml0ZUJ1ZmZlciBwYWNrZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB1aW50NjRfdCByZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFRpbWVzdGFtcCBhdF90aW1lKSBvdmVycmlkZTsKKwogICBWaWRlb1JlY2VpdmVTdHJlYW0qIHJl
Y2VpdmVfc3RyZWFtXyA9IG51bGxwdHI7CiAgIEZsZXhmZWNSZWNlaXZlU3RyZWFtKiBmbGVjZmVj
X3N0cmVhbV8gPSBudWxscHRyOwogICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpWaWRlb1NpbmtJbnRl
cmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPj4gcmVuZGVyZXJfOwpAQCAtOTUsMTggKzk3LDEwIEBA
IGNsYXNzIFZpZGVvU3RyZWFtUGFpciB7CiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFNjZW5h
cmlvOwogICBWaWRlb1N0cmVhbVBhaXIoQ2FsbENsaWVudCogc2VuZGVyLAotICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8TmV0d29ya05vZGUqPiBzZW5kX2xpbmssCi0gICAgICAgICAgICAg
ICAgICB1aW50NjRfdCBzZW5kX3JlY2VpdmVyX2lkLAogICAgICAgICAgICAgICAgICAgQ2FsbENs
aWVudCogcmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxOZXR3b3JrTm9k
ZSo+IHJldHVybl9saW5rLAotICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmV0dXJuX3JlY2Vp
dmVyX2lkLAogICAgICAgICAgICAgICAgICAgVmlkZW9TdHJlYW1Db25maWcgY29uZmlnKTsKIAog
ICBjb25zdCBWaWRlb1N0cmVhbUNvbmZpZyBjb25maWdfOwotICBzdGQ6OnZlY3RvcjxOZXR3b3Jr
Tm9kZSo+IHNlbmRfbGlua187Ci0gIHN0ZDo6dmVjdG9yPE5ldHdvcmtOb2RlKj4gcmV0dXJuX2xp
bmtfOwotICBOZXR3b3JrTm9kZVRyYW5zcG9ydCBzZW5kX3RyYW5zcG9ydF87Ci0gIE5ldHdvcmtO
b2RlVHJhbnNwb3J0IHJldHVybl90cmFuc3BvcnRfOwogCiAgIFNlbmRWaWRlb1N0cmVhbSBzZW5k
X3N0cmVhbV87CiAgIFJlY2VpdmVWaWRlb1N0cmVhbSByZWNlaXZlX3N0cmVhbV87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Npbmds
ZV90aHJlYWRlZF90YXNrX3F1ZXVlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC9zaW5nbGVfdGhyZWFkZWRfdGFza19xdWV1ZS5jYwppbmRleCBhZDdh
NTAzMjdiOTAwYmYyNTBhYjIzMTM4MTQzN2VmNmM1MmE5Mjg4Li41YzM1YzJlNDNiMDkzOWY5MTZj
Mjc4NDMxNDE2ODRkYzI5ODVlNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NpbmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2luZ2xl
X3RocmVhZGVkX3Rhc2tfcXVldWUuY2MKQEAgLTMyLDEwICszMiw3IEBAIFNpbmdsZVRocmVhZGVk
VGFza1F1ZXVlRm9yVGVzdGluZzo6UXVldWVkVGFzazo6flF1ZXVlZFRhc2soKSA9IGRlZmF1bHQ7
CiAKIFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZzo6U2luZ2xlVGhyZWFkZWRUYXNr
UXVldWVGb3JUZXN0aW5nKAogICAgIGNvbnN0IGNoYXIqIG5hbWUpCi0gICAgOiB0aHJlYWRfKFJ1
biwgdGhpcywgbmFtZSksCi0gICAgICBydW5uaW5nXyh0cnVlKSwKLSAgICAgIG5leHRfdGFza19p
ZF8oMCksCi0gICAgICB3YWtlX3VwXyhmYWxzZSwgZmFsc2UpIHsKKyAgICA6IHRocmVhZF8oUnVu
LCB0aGlzLCBuYW1lKSwgcnVubmluZ18odHJ1ZSksIG5leHRfdGFza19pZF8oMCkgewogICB0aHJl
YWRfLlN0YXJ0KCk7CiB9CiAKQEAgLTgzLDcgKzgwLDcgQEAgU2luZ2xlVGhyZWFkZWRUYXNrUXVl
dWVGb3JUZXN0aW5nOjpQb3N0RGVsYXllZFRhc2soVGFzayB0YXNrLAogfQogCiB2b2lkIFNpbmds
ZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZzo6U2VuZFRhc2soVGFzayB0YXNrKSB7Ci0gIHJ0
Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKICAgUG9zdFRh
c2soWyZ0YXNrLCAmZG9uZV0oKSB7CiAgICAgdGFzaygpOwogICAgIGRvbmUuU2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Np
bmdsZV90aHJlYWRlZF90YXNrX3F1ZXVlX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC9zaW5nbGVfdGhyZWFkZWRfdGFza19xdWV1ZV91
bml0dGVzdC5jYwppbmRleCAwODRmMGQ3ZThjYmI4MjEyY2ZlMjcxNjUzMjA2NmJjOTVjZDMxMGMz
Li4wNDk2MTY1MGM3NjBlMTRhYjJjYjQwNzg2OGJmYTJlZGVhZTAzNmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3NpbmdsZV90aHJl
YWRlZF90YXNrX3F1ZXVlX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvc2luZ2xlX3RocmVhZGVkX3Rhc2tfcXVldWVfdW5pdHRl
c3QuY2MKQEAgLTM3LDcgKzM3LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRl
c3RpbmdUZXN0LCBFeGVjdXRlc1Bvc3RlZFRhc2tzKSB7CiAgIFNpbmdsZVRocmVhZGVkVGFza1F1
ZXVlRm9yVGVzdGluZyB0YXNrX3F1ZXVlKCJ0YXNrX3F1ZXVlIik7CiAKICAgc3RkOjphdG9taWM8
Ym9vbD4gZXhlY3V0ZWQoZmFsc2UpOwotICBydGM6OkV2ZW50IGRvbmUodHJ1ZSwgZmFsc2UpOwor
ICBydGM6OkV2ZW50IGRvbmU7CiAKICAgdGFza19xdWV1ZS5Qb3N0VGFzayhbJmV4ZWN1dGVkLCAm
ZG9uZV0oKSB7CiAgICAgZXhlY3V0ZWQuc3RvcmUodHJ1ZSk7CkBAIC02MCwxNCArNjAsMTQgQEAg
VEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LAogCiAgIHN0ZDo6dmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxydGM6OkV2ZW50Pj4gZG9uZV9ldmVudHM7CiAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwga0NvdW50OyBpKyspIHsKLSAgICBkb25lX2V2ZW50cy5lbXBsYWNlX2Jh
Y2soYWJzbDo6bWFrZV91bmlxdWU8cnRjOjpFdmVudD4oZmFsc2UsIGZhbHNlKSk7CisgICAgZG9u
ZV9ldmVudHMuZW1wbGFjZV9iYWNrKGFic2w6Om1ha2VfdW5pcXVlPHJ0Yzo6RXZlbnQ+KCkpOwog
ICB9CiAKICAgLy8gVG8gYXZvaWQgdGhlIHRhc2tzIHdoaWNoIGNvbXByaXNlIHRoZSBhY3R1YWwg
dGVzdCBmcm9tIHJ1bm5pbmcgYmVmb3JlIHRoZXkKICAgLy8gaGF2ZSBhbGwgYmUgcG9zdGVkLCB3
aGljaCBjb3VsZCByZXN1bHQgaW4gb25seSBvbmUgdGFzayBldmVyIGJlaW5nIGluIHRoZQogICAv
LyBxdWV1ZSBhdCBhbnkgZ2l2ZW4gdGltZSwgcG9zdCBvbmUgd2FpdGluZyB0YXNrIHRoYXQgd291
bGQgYmxvY2sgdGhlCiAgIC8vIHRhc2stcXVldWUsIGFuZCB1bmJsb2NrIG9ubHkgYWZ0ZXIgYWxs
IHRhc2tzIGhhdmUgYmVlbiBwb3N0ZWQuCi0gIHJ0Yzo6RXZlbnQgcmVuZGV6dm91cyh0cnVlLCBm
YWxzZSk7CisgIHJ0Yzo6RXZlbnQgcmVuZGV6dm91czsKICAgdGFza19xdWV1ZS5Qb3N0VGFzaygK
ICAgICAgIFsmcmVuZGV6dm91c10oKSB7IEFTU0VSVF9UUlVFKHJlbmRlenZvdXMuV2FpdChrTWF4
V2FpdFRpbWVNcykpOyB9KTsKIApAQCAtOTUsNyArOTUsNyBAQCBURVNUKFNpbmdsZVRocmVhZGVk
VGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIFBvc3RUb1Rhc2tRdWV1ZUZyb21Pd25UaHJlYWQpIHsK
ICAgU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nIHRhc2tfcXVldWUoInRhc2tfcXVl
dWUiKTsKIAogICBzdGQ6OmF0b21pYzxib29sPiBleGVjdXRlZChmYWxzZSk7Ci0gIHJ0Yzo6RXZl
bnQgZG9uZSh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKIAogICBhdXRvIGludGVy
bmFsbHlfcG9zdGVkX3Rhc2sgPSBbJmV4ZWN1dGVkLCAmZG9uZV0oKSB7CiAgICAgZXhlY3V0ZWQu
c3RvcmUodHJ1ZSk7CkBAIC0xMjQsNyArMTI0LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tR
dWV1ZUZvclRlc3RpbmdUZXN0LCBUYXNrc0V4ZWN1dGVkSW5TZXF1ZW5jZSkgewogCiAgIC8vIFBy
ZXZlbnQgdGhlIGNoYWluIGZyb20gYmVpbmcgc2V0IGluIG1vdGlvbiBiZWZvcmUgd2UndmUgaGFk
IHRpbWUgdG8KICAgLy8gc2NoZWR1bGUgaXQgYWxsLCBsZXN0IHRoZSBxdWV1ZSBvbmx5IGNvbnRh
aW4gb25lIHRhc2sgYXQgYSB0aW1lLgotICBydGM6OkV2ZW50IHJlbmRlenZvdXModHJ1ZSwgZmFs
c2UpOworICBydGM6OkV2ZW50IHJlbmRlenZvdXM7CiAgIHRhc2tfcXVldWUuUG9zdFRhc2soCiAg
ICAgICBbJnJlbmRlenZvdXNdKCkgeyBBU1NFUlRfVFJVRShyZW5kZXp2b3VzLldhaXQoa01heFdh
aXRUaW1lTXMpKTsgfSk7CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCBURVNUKFNpbmdsZVRocmVhZGVk
VGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIFRhc2tzRXhlY3V0ZWRJblNlcXVlbmNlKSB7CiAgIH0K
IAogICAvLyBUaGUgdGVzdCB3aWxsIHdhaXQgZm9yIHRoZSB0YXNrLXF1ZXVlIHRvIGZpbmlzaC4K
LSAgcnRjOjpFdmVudCBkb25lKHRydWUsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogICB0
YXNrX3F1ZXVlLlBvc3RUYXNrKFsmZG9uZV0oKSB7IGRvbmUuU2V0KCk7IH0pOwogCiAgIHJlbmRl
enZvdXMuU2V0KCk7ICAvLyBTZXQgdGhlIGNoYWluIGluIG1vdGlvbi4KQEAgLTE1MCw3ICsxNTAs
NyBAQCBURVNUKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIEV4ZWN1dGVz
UG9zdGVkRGVsYXllZFRhc2spIHsKICAgU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5n
IHRhc2tfcXVldWUoInRhc2tfcXVldWUiKTsKIAogICBzdGQ6OmF0b21pYzxib29sPiBleGVjdXRl
ZChmYWxzZSk7Ci0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQg
ZG9uZTsKIAogICBjb25zdGV4cHIgaW50NjRfdCBkZWxheV9tcyA9IDIwOwogICBzdGF0aWNfYXNz
ZXJ0KGRlbGF5X21zIDwga01heFdhaXRUaW1lTXMgLyAyLCAiRGVsYXkgdG9vIGxvbmcgZm9yIHRl
c3RzLiIpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIFRFU1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVG
b3JUZXN0aW5nVGVzdCwgRG9lc05vdEV4ZWN1dGVEZWxheWVkVGFza1Rvb1Nvb24pIHsKICAgdGFz
a19xdWV1ZS5Qb3N0RGVsYXllZFRhc2soWyZleGVjdXRlZF0oKSB7IGV4ZWN1dGVkLnN0b3JlKHRy
dWUpOyB9LCBkZWxheV9tcyk7CiAKICAgLy8gV2FpdCBsZXNzIHRoYW4gaXMgZW5vdWdoLCBtYWtl
IHN1cmUgdGhlIHRhc2sgd2FzIG5vdCB5ZXQgZXhlY3V0ZWQuCi0gIHJ0Yzo6RXZlbnQgbm90X2Rv
bmUodHJ1ZSwgZmFsc2UpOworICBydGM6OkV2ZW50IG5vdF9kb25lOwogICBBU1NFUlRfRkFMU0Uo
bm90X2RvbmUuV2FpdChkZWxheV9tcyAvIDIpKTsKICAgRVhQRUNUX0ZBTFNFKGV4ZWN1dGVkLmxv
YWQoKSk7CiB9CkBAIC0xOTUsNyArMTk1LDcgQEAgVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1
ZUZvclRlc3RpbmdUZXN0LAogICBzdGF0aWNfYXNzZXJ0KGVhcmxpZXJfZGVsYXlfbXMgKyBsYXRl
cl9kZWxheV9tcyA8IGtNYXhXYWl0VGltZU1zIC8gMiwKICAgICAgICAgICAgICAgICAiRGVsYXkg
dG9vIGxvbmcgZm9yIHRlc3RzLiIpOwogCi0gIHJ0Yzo6RXZlbnQgZG9uZSh0cnVlLCBmYWxzZSk7
CisgIHJ0Yzo6RXZlbnQgZG9uZTsKIAogICBhdXRvIGVhcmxpZXJfdGFzayA9IFsmZWFybGllcl9l
eGVjdXRlZCwgJmxhdGVyX2V4ZWN1dGVkXSgpIHsKICAgICBFWFBFQ1RfRkFMU0UobGF0ZXJfZXhl
Y3V0ZWQubG9hZCgpKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBURVNUKFNpbmdsZVRocmVhZGVkVGFz
a1F1ZXVlRm9yVGVzdGluZ1Rlc3QsCiAgIHN0YXRpY19hc3NlcnQoZWFybGllcl9kZWxheV9tcyAr
IGxhdGVyX2RlbGF5X21zIDwga01heFdhaXRUaW1lTXMgLyAyLAogICAgICAgICAgICAgICAgICJE
ZWxheSB0b28gbG9uZyBmb3IgdGVzdHMuIik7CiAKLSAgcnRjOjpFdmVudCBkb25lKHRydWUsIGZh
bHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogCiAgIGF1dG8gZWFybGllcl90YXNrID0gWyZlYXJs
aWVyX2V4ZWN1dGVkLCAmbGF0ZXJfZXhlY3V0ZWRdKCkgewogICAgIEVYUEVDVF9GQUxTRShsYXRl
cl9leGVjdXRlZC5sb2FkKCkpOwpAQCAtMjUzLDExICsyNTMsMTEgQEAgVEVTVChTaW5nbGVUaHJl
YWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LAogVEVTVChTaW5nbGVUaHJlYWRlZFRhc2tRdWV1
ZUZvclRlc3RpbmdUZXN0LCBFeHRlcm5hbFRocmVhZENhbmNlbHNUYXNrKSB7CiAgIFNpbmdsZVRo
cmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZyB0YXNrX3F1ZXVlKCJ0YXNrX3F1ZXVlIik7CiAKLSAg
cnRjOjpFdmVudCBkb25lKHRydWUsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBkb25lOwogCiAgIC8v
IFByZXZlbnQgdGhlIHRvLWJlLWNhbmNlbGxlZCB0YXNrIGZyb20gYmVpbmcgZXhlY3V0ZWQgYmVm
b3JlIHdlJ3ZlIGhhZAogICAvLyB0aW1lIHRvIGNhbmNlbCBpdC4KLSAgcnRjOjpFdmVudCByZW5k
ZXp2b3VzKHRydWUsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCByZW5kZXp2b3VzOwogICB0YXNrX3F1
ZXVlLlBvc3RUYXNrKAogICAgICAgWyZyZW5kZXp2b3VzXSgpIHsgQVNTRVJUX1RSVUUocmVuZGV6
dm91cy5XYWl0KGtNYXhXYWl0VGltZU1zKSk7IH0pOwogCkBAIC0yNzksMTAgKzI3OSwxMCBAQCBU
RVNUKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3QsIEV4dGVybmFsVGhyZWFk
Q2FuY2Vsc1Rhc2spIHsKIFRFU1QoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nVGVz
dCwgSW50ZXJuYWxUaHJlYWRDYW5jZWxzVGFzaykgewogICBTaW5nbGVUaHJlYWRlZFRhc2tRdWV1
ZUZvclRlc3RpbmcgdGFza19xdWV1ZSgidGFza19xdWV1ZSIpOwogCi0gIHJ0Yzo6RXZlbnQgZG9u
ZSh0cnVlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZG9uZTsKIAogICAvLyBQcmV2ZW50IHRoZSBj
aGFpbiBmcm9tIGJlaW5nIHNldC1vZmYgYmVmb3JlIHdlJ3ZlIHNldCBldmVyeXRoaW5nIHVwLgot
ICBydGM6OkV2ZW50IHJlbmRlenZvdXModHJ1ZSwgZmFsc2UpOworICBydGM6OkV2ZW50IHJlbmRl
enZvdXM7CiAgIHRhc2tfcXVldWUuUG9zdFRhc2soCiAgICAgICBbJnJlbmRlenZvdXNdKCkgeyBB
U1NFUlRfVFJVRShyZW5kZXp2b3VzLldhaXQoa01heFdhaXRUaW1lTXMpKTsgfSk7CiAKQEAgLTMx
Niw3ICszMTYsNyBAQCBURVNUKFNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVzdGluZ1Rlc3Qs
IFNlbmRUYXNrKSB7CiAgIHRhc2tfcXVldWUuU2VuZFRhc2soWyZleGVjdXRlZF0oKSB7CiAgICAg
Ly8gSW50ZW50aW9uYWxseSBkZWxheSwgc28gdGhhdCBpZiBTZW5kVGFzayBkaWRuJ3QgYmxvY2ss
IHRoZSBzZW5kZXIgdGhyZWFkCiAgICAgLy8gd291bGQgaGF2ZSB0aW1lIHRvIHJlYWQgfGV4ZWN1
dGVkfC4KLSAgICBydGM6OkV2ZW50IGRlbGF5KHRydWUsIGZhbHNlKTsKKyAgICBydGM6OkV2ZW50
IGRlbGF5OwogICAgIEFTU0VSVF9GQUxTRShkZWxheS5XYWl0KDEwMDApKTsKICAgICBleGVjdXRl
ZC5zdG9yZSh0cnVlKTsKICAgfSk7CkBAIC0zMzUsNyArMzM1LDcgQEAgVEVTVChTaW5nbGVUaHJl
YWRlZFRhc2tRdWV1ZUZvclRlc3RpbmdUZXN0LAogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRh
c2tzOyBpKyspIHsKICAgICB0YXNrX3F1ZXVlLT5Qb3N0VGFzayhbJmNvdW50ZXJdKCkgewogICAg
ICAgc3RkOjphdG9taWNfZmV0Y2hfYWRkKCZjb3VudGVyLCBzdGF0aWNfY2FzdDxzaXplX3Q+KDEp
KTsKLSAgICAgIHJ0Yzo6RXZlbnQgZGVsYXkodHJ1ZSwgZmFsc2UpOworICAgICAgcnRjOjpFdmVu
dCBkZWxheTsKICAgICAgIEFTU0VSVF9GQUxTRShkZWxheS5XYWl0KDUwMCkpOwogICAgIH0pOwog
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90ZXN0L3Rlc3RfbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvdGVzdF9tYWluLmNjCmluZGV4IGM4ZDBiMWI1ODRlNmE3NWM5NWYwNzZhNmRm
NzVhN2MzMDllMDY1Y2YuLjFhMzExZjYzYzI3OWNjOWI4ODI5ZGVjZmE5YjVjY2Q0MjkwMWFmOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvdGVzdF9tYWluLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rlc3QvdGVzdF9tYWluLmNjCkBAIC04LDEyOSArOCwxNSBAQAogICogIGJlIGZvdW5k
IGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgogICov
CiAKLSNpbmNsdWRlIDxmc3RyZWFtPgorI2luY2x1ZGUgPG1lbW9yeT4KIAotI2luY2x1ZGUgInJ0
Y19iYXNlL2ZsYWdzLmgiCi0jaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgotI2luY2x1ZGUg
InJ0Y19iYXNlL3RocmVhZC5oIgotI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Zp
ZWxkX3RyaWFsLmgiCi0jaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5o
IgotI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKLSNpbmNsdWRlICJ0ZXN0L2dtb2NrLmgi
Ci0jaW5jbHVkZSAidGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmls
ZXV0aWxzLmgiCi0jaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9wZXJmX3Rlc3QuaCIKLQotI2lm
IGRlZmluZWQoV0VCUlRDX1dJTikKLSNpbmNsdWRlICJydGNfYmFzZS93aW4zMnNvY2tldGluaXQu
aCIKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChXRUJSVENfSU9TKQotI2luY2x1ZGUgInRlc3QvaW9z
L3Rlc3Rfc3VwcG9ydC5oIgotCi1ERUZJTkVfc3RyaW5nKE5TVHJlYXRVbmtub3duQXJndW1lbnRz
QXNPcGVuLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkludGVudGlvbmFsbHkg
aWdub3JlZCBmbGFnIGludGVuZGVkIGZvciBpT1Mgc2ltdWxhdG9yLiIpOwotREVGSU5FX3N0cmlu
ZyhBcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUsCi0gICAgICAgICAgICAgICIiLAotICAgICAg
ICAgICAgICAiSW50ZW50aW9uYWxseSBpZ25vcmVkIGZsYWcgaW50ZW5kZWQgZm9yIGlPUyBzaW11
bGF0b3IuIik7Ci1ERUZJTkVfYm9vbCgKLSAgICBzYXZlX2NoYXJ0anNvbl9yZXN1bHQsCi0gICAg
ZmFsc2UsCi0gICAgIlN0b3JlIHRoZSBwZXJmIHJlc3VsdHMgaW4gRG9jdW1lbnRzL3BlcmZfcmVz
dWx0Lmpzb24gaW4gdGhlIGZvcm1hdCAiCi0gICAgImRlc2NyaWJlZCBieSAiCi0gICAgImh0dHBz
Oi8vZ2l0aHViLmNvbS9jYXRhcHVsdC1wcm9qZWN0L2NhdGFwdWx0L2Jsb2IvbWFzdGVyL2Rhc2hi
b2FyZC9kb2NzLyIKLSAgICAiZGF0YS1mb3JtYXQubWQuIik7Ci0KLSNlbHNlCi0KLURFRklORV9z
dHJpbmcoCi0gICAgaXNvbGF0ZWRfc2NyaXB0X3Rlc3Rfb3V0cHV0LAotICAgICIiLAotICAgICJQ
YXRoIHRvIG91dHB1dCBhbiBlbXB0eSBKU09OIGZpbGUgd2hpY2ggQ2hyb21pdW0gaW5mcmEgcmVx
dWlyZXMuIik7Ci0KLURFRklORV9zdHJpbmcoCi0gICAgaXNvbGF0ZWRfc2NyaXB0X3Rlc3RfcGVy
Zl9vdXRwdXQsCi0gICAgIiIsCi0gICAgIlBhdGggd2hlcmUgdGhlIHBlcmYgcmVzdWx0cyBzaG91
bGQgYmUgc3RvcmVkIGluIHRoZSBKU09OIGZvcm1hdCBkZXNjcmliZWQgIgotICAgICJieSAiCi0g
ICAgImh0dHBzOi8vZ2l0aHViLmNvbS9jYXRhcHVsdC1wcm9qZWN0L2NhdGFwdWx0L2Jsb2IvbWFz
dGVyL2Rhc2hib2FyZC9kb2NzLyIKLSAgICAiZGF0YS1mb3JtYXQubWQuIik7Ci0KLSNlbmRpZgot
Ci1ERUZJTkVfYm9vbChsb2dzLCBmYWxzZSwgInByaW50IGxvZ3MgdG8gc3RkZXJyIik7Ci0KLURF
RklORV9zdHJpbmcoCi0gICAgZm9yY2VfZmllbGR0cmlhbHMsCi0gICAgIiIsCi0gICAgIkZpZWxk
IHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZv
cmNlZC4gIgotICAgICJFLmcuIHJ1bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJU
Qy1Gb29GZWF0dXJlL0VuYWJsZS8iCi0gICAgIiB3aWxsIGFzc2lnbiB0aGUgZ3JvdXAgRW5hYmxl
IHRvIGZpZWxkIHRyaWFsIFdlYlJUQy1Gb29GZWF0dXJlLiIpOwotCi1ERUZJTkVfYm9vbChoZWxw
LCBmYWxzZSwgIlByaW50IHRoaXMgbWVzc2FnZS4iKTsKKyNpbmNsdWRlICJ0ZXN0L3Rlc3RfbWFp
bl9saWIuaCIKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewotICA6OnRlc3Rp
bmc6OkluaXRHb29nbGVNb2NrKCZhcmdjLCBhcmd2KTsKLQotICAvLyBEZWZhdWx0IHRvIExTX0lO
Rk8sIGV2ZW4gZm9yIHJlbGVhc2UgYnVpbGRzIHRvIHByb3ZpZGUgYmV0dGVyIHRlc3QgbG9nZ2lu
Zy4KLSAgLy8gVE9ETyhwYm9zKTogQ29uc2lkZXIgYWRkaW5nIGEgY29tbWFuZC1saW5lIG92ZXJy
aWRlLgotICBpZiAocnRjOjpMb2dNZXNzYWdlOjpHZXRMb2dUb0RlYnVnKCkgPiBydGM6OkxTX0lO
Rk8pCi0gICAgcnRjOjpMb2dNZXNzYWdlOjpMb2dUb0RlYnVnKHJ0Yzo6TFNfSU5GTyk7Ci0KLSAg
aWYgKHJ0Yzo6RmxhZ0xpc3Q6OlNldEZsYWdzRnJvbUNvbW1hbmRMaW5lKCZhcmdjLCBhcmd2LCBm
YWxzZSkpIHsKLSAgICByZXR1cm4gMTsKLSAgfQotICBpZiAoRkxBR19oZWxwKSB7Ci0gICAgcnRj
OjpGbGFnTGlzdDo6UHJpbnQobnVsbHB0ciwgZmFsc2UpOwotICAgIHJldHVybiAwOworICBzdGQ6
OnVuaXF1ZV9wdHI8d2VicnRjOjpUZXN0TWFpbj4gbWFpbiA9IHdlYnJ0Yzo6VGVzdE1haW46OkNy
ZWF0ZSgpOworICBpbnQgZXJyX2NvZGUgPSBtYWluLT5Jbml0KCZhcmdjLCBhcmd2KTsKKyAgaWYg
KGVycl9jb2RlICE9IDApIHsKKyAgICByZXR1cm4gZXJyX2NvZGU7CiAgIH0KLQotICB3ZWJydGM6
OnRlc3Q6OlNldEV4ZWN1dGFibGVQYXRoKGFyZ3ZbMF0pOwotICB3ZWJydGM6OnRlc3Q6OlZhbGlk
YXRlRmllbGRUcmlhbHNTdHJpbmdPckRpZShGTEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsKLSAgLy8g
SW5pdEZpZWxkVHJpYWxzRnJvbVN0cmluZyBzdG9yZXMgdGhlIGNoYXIqLCBzbyB0aGUgY2hhciBh
cnJheSBtdXN0IG91dGxpdmUKLSAgLy8gdGhlIGFwcGxpY2F0aW9uLgotICB3ZWJydGM6OmZpZWxk
X3RyaWFsOjpJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5nKEZMQUdfZm9yY2VfZmllbGR0cmlhbHMp
OwotICB3ZWJydGM6Om1ldHJpY3M6OkVuYWJsZSgpOwotCi0jaWYgZGVmaW5lZChXRUJSVENfV0lO
KQotICBydGM6OldpbnNvY2tJbml0aWFsaXplciB3aW5zb2NrX2luaXQ7Ci0jZW5kaWYKLQotICBy
dGM6OkxvZ01lc3NhZ2U6OlNldExvZ1RvU3RkZXJyKEZMQUdfbG9ncyk7Ci0KLSAgLy8gRW5zdXJl
IHRoYXQgbWFpbiB0aHJlYWQgZ2V0cyB3cmFwcGVkIGFzIGFuIHJ0Yzo6VGhyZWFkLgotICAvLyBU
T0RPKGJ1Z3Mud2VicnQub3JnLzk3MTQpOiBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gYXZvaWQgd3Jh
cHBpbmcgdGhlIG1haW4KLSAgLy8gdGhyZWFkLCBvciBsZWF2ZSBpdCB0byBpbmRpdmlkdWFsIHRl
c3RzIHRoYXQgbmVlZCBpdC4gQnV0IGFzIGxvbmcgYXMgd2UKLSAgLy8gaGF2ZSBhdXRvbWF0aWMg
dGhyZWFkIHdyYXBwaW5nLCB3ZSBuZWVkIHRoaXMgdG8gYXZvaWQgdGhhdCBzb21lIG90aGVyCi0g
IC8vIHJhbmRvbSB0aHJlYWQgKHdoaWNoIG9uZSBkZXBlbmRpbmcgb24gd2hpY2ggdGVzdHMgYXJl
IHJ1bikgZ2V0cwotICAvLyBhdXRvbWF0aWNhbGx5IHdyYXBwZWQuCi0gIHJ0Yzo6VGhyZWFkTWFu
YWdlcjo6SW5zdGFuY2UoKS0+V3JhcEN1cnJlbnRUaHJlYWQoKTsKLSAgUlRDX0NIRUNLKHJ0Yzo6
VGhyZWFkOjpDdXJyZW50KCkpOwotCi0jaWYgZGVmaW5lZChXRUJSVENfSU9TKQotCi0gIHJ0Yzo6
dGVzdDo6SW5pdFRlc3RTdWl0ZShSVU5fQUxMX1RFU1RTLCBhcmdjLCBhcmd2LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRkxBR19zYXZlX2NoYXJ0anNvbl9yZXN1bHQpOwotICBydGM6OnRl
c3Q6OlJ1blRlc3RzRnJvbUlPU0FwcCgpOwotCi0jZWxzZQotCi0gIGludCBleGl0X2NvZGUgPSBS
VU5fQUxMX1RFU1RTKCk7Ci0KLSAgc3RkOjpzdHJpbmcgY2hhcnRqc29uX3Jlc3VsdF9maWxlID0g
RkxBR19pc29sYXRlZF9zY3JpcHRfdGVzdF9wZXJmX291dHB1dDsKLSAgaWYgKCFjaGFydGpzb25f
cmVzdWx0X2ZpbGUuZW1wdHkoKSkgewotICAgIHdlYnJ0Yzo6dGVzdDo6V3JpdGVQZXJmUmVzdWx0
cyhjaGFydGpzb25fcmVzdWx0X2ZpbGUpOwotICB9Ci0KLSAgc3RkOjpzdHJpbmcgcmVzdWx0X2Zp
bGVuYW1lID0gRkxBR19pc29sYXRlZF9zY3JpcHRfdGVzdF9vdXRwdXQ7Ci0gIGlmICghcmVzdWx0
X2ZpbGVuYW1lLmVtcHR5KCkpIHsKLSAgICBzdGQ6Om9mc3RyZWFtIHJlc3VsdF9maWxlKHJlc3Vs
dF9maWxlbmFtZSk7Ci0gICAgcmVzdWx0X2ZpbGUgPDwgIntcInZlcnNpb25cIjogM30iOwotICAg
IHJlc3VsdF9maWxlLmNsb3NlKCk7Ci0gIH0KLQotICByZXR1cm4gZXhpdF9jb2RlOwotCi0jZW5k
aWYKKyAgcmV0dXJuIG1haW4tPlJ1bihhcmdjLCBhcmd2KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9tYWluX2xpYi5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdF9t
YWluX2xpYi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTE0NGM5OGZjYjkzNDdhMDdkNjRmZTcxMTc4OTVmNjEz
NWFiZTg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdGVzdC90ZXN0X21haW5fbGliLmNjCkBAIC0wLDAgKzEsMTc3IEBACisvKgor
ICogIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgInRlc3QvdGVzdF9tYWluX2xpYi5oIgorCisj
aW5jbHVkZSA8ZnN0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJhYnNsL21l
bW9yeS9tZW1vcnkuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJydGNfYmFzZS90aHJlYWQuaCIKKyNpbmNsdWRl
ICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgorI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCIKKyNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFs
LmgiCisjaW5jbHVkZSAidGVzdC9nbW9jay5oIgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKKyNp
bmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgorI2luY2x1ZGUgInRlc3QvdGVz
dHN1cHBvcnQvcGVyZl90ZXN0LmgiCisKKyNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCisjaW5jbHVk
ZSAicnRjX2Jhc2Uvd2luMzJzb2NrZXRpbml0LmgiCisjZW5kaWYKKworI2lmIGRlZmluZWQoV0VC
UlRDX0lPUykKKyNpbmNsdWRlICJ0ZXN0L2lvcy90ZXN0X3N1cHBvcnQuaCIKKworV0VCUlRDX0RF
RklORV9zdHJpbmcoTlNUcmVhdFVua25vd25Bcmd1bWVudHNBc09wZW4sCisgICAgICAgICAgICAg
ICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbGx5IGlnbm9yZWQg
ZmxhZyBpbnRlbmRlZCBmb3IgaU9TIHNpbXVsYXRvci4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KEFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICIiLAor
ICAgICAgICAgICAgICAgICAgICAgIkludGVudGlvbmFsbHkgaWdub3JlZCBmbGFnIGludGVuZGVk
IGZvciBpT1Mgc2ltdWxhdG9yLiIpOworV0VCUlRDX0RFRklORV9ib29sKAorICAgIHNhdmVfY2hh
cnRqc29uX3Jlc3VsdCwKKyAgICBmYWxzZSwKKyAgICAiU3RvcmUgdGhlIHBlcmYgcmVzdWx0cyBp
biBEb2N1bWVudHMvcGVyZl9yZXN1bHQuanNvbiBpbiB0aGUgZm9ybWF0ICIKKyAgICAiZGVzY3Jp
YmVkIGJ5ICIKKyAgICAiaHR0cHM6Ly9naXRodWIuY29tL2NhdGFwdWx0LXByb2plY3QvY2F0YXB1
bHQvYmxvYi9tYXN0ZXIvZGFzaGJvYXJkL2RvY3MvIgorICAgICJkYXRhLWZvcm1hdC5tZC4iKTsK
KworI2Vsc2UKKworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgaXNvbGF0ZWRfc2NyaXB0X3Rl
c3Rfb3V0cHV0LAorICAgICIiLAorICAgICJQYXRoIHRvIG91dHB1dCBhbiBlbXB0eSBKU09OIGZp
bGUgd2hpY2ggQ2hyb21pdW0gaW5mcmEgcmVxdWlyZXMuIik7CisKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKAorICAgIGlzb2xhdGVkX3NjcmlwdF90ZXN0X3BlcmZfb3V0cHV0LAorICAgICIiLAorICAg
ICJQYXRoIHdoZXJlIHRoZSBwZXJmIHJlc3VsdHMgc2hvdWxkIGJlIHN0b3JlZCBpbiB0aGUgSlNP
TiBmb3JtYXQgZGVzY3JpYmVkICIKKyAgICAiYnkgIgorICAgICJodHRwczovL2dpdGh1Yi5jb20v
Y2F0YXB1bHQtcHJvamVjdC9jYXRhcHVsdC9ibG9iL21hc3Rlci9kYXNoYm9hcmQvZG9jcy8iCisg
ICAgImRhdGEtZm9ybWF0Lm1kLiIpOworCisjZW5kaWYKKworV0VCUlRDX0RFRklORV9ib29sKGxv
Z3MsIGZhbHNlLCAicHJpbnQgbG9ncyB0byBzdGRlcnIiKTsKKworV0VCUlRDX0RFRklORV9zdHJp
bmcoCisgICAgZm9yY2VfZmllbGR0cmlhbHMsCisgICAgIiIsCisgICAgIkZpZWxkIHRyaWFscyBj
b250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZvcmNlZC4gIgor
ICAgICJFLmcuIHJ1bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1Gb29GZWF0
dXJlL0VuYWJsZS8iCisgICAgIiB3aWxsIGFzc2lnbiB0aGUgZ3JvdXAgRW5hYmxlIHRvIGZpZWxk
IHRyaWFsIFdlYlJUQy1Gb29GZWF0dXJlLiIpOworCitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwg
ZmFsc2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitu
YW1lc3BhY2UgeworCitjbGFzcyBUZXN0TWFpbkltcGwgOiBwdWJsaWMgVGVzdE1haW4geworIHB1
YmxpYzoKKyAgaW50IEluaXQoaW50KiBhcmdjLCBjaGFyKiBhcmd2W10pIG92ZXJyaWRlIHsKKyAg
ICA6OnRlc3Rpbmc6OkluaXRHb29nbGVNb2NrKGFyZ2MsIGFyZ3YpOworCisgICAgLy8gRGVmYXVs
dCB0byBMU19JTkZPLCBldmVuIGZvciByZWxlYXNlIGJ1aWxkcyB0byBwcm92aWRlIGJldHRlciB0
ZXN0CisgICAgLy8gbG9nZ2luZy4KKyAgICAvLyBUT0RPKHBib3MpOiBDb25zaWRlciBhZGRpbmcg
YSBjb21tYW5kLWxpbmUgb3ZlcnJpZGUuCisgICAgaWYgKHJ0Yzo6TG9nTWVzc2FnZTo6R2V0TG9n
VG9EZWJ1ZygpID4gcnRjOjpMU19JTkZPKQorICAgICAgcnRjOjpMb2dNZXNzYWdlOjpMb2dUb0Rl
YnVnKHJ0Yzo6TFNfSU5GTyk7CisKKyAgICBpZiAocnRjOjpGbGFnTGlzdDo6U2V0RmxhZ3NGcm9t
Q29tbWFuZExpbmUoYXJnYywgYXJndiwgZmFsc2UpKSB7CisgICAgICByZXR1cm4gMTsKKyAgICB9
CisgICAgaWYgKEZMQUdfaGVscCkgeworICAgICAgcnRjOjpGbGFnTGlzdDo6UHJpbnQobnVsbHB0
ciwgZmFsc2UpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gVE9ETyhidWdzLndl
YnJ0Yy5vcmcvOTc5Mik6IHdlIG5lZWQgdG8gcmVmZXJlbmNlIHNvbWV0aGluZyBmcm9tCisgICAg
Ly8gZmlsZXV0aWxzLmggc28gdGhhdCBvdXIgZG93bnN0cmVhbSBoYWNrIHdoZXJlIHdlIHJlcGxh
Y2UgZmlsZXV0aWxzLmNjCisgICAgLy8gd29ya3MuIE90aGVyd2lzZSB0aGUgZG93bnN0cmVhbSBm
bGFnIGltcGxlbWVudGF0aW9uIHdpbGwgdGFrZSBvdmVyIGFuZAorICAgIC8vIGJvdGNoIHRoZSBm
bGFnIGludHJvZHVjZWQgYnkgdGhlIGhhY2suIFJlbW92ZSB0aGlzIGF3ZnVsIHRoaW5nIG9uY2Ug
dGhlCisgICAgLy8gZG93bnN0cmVhbSBpbXBsZW1lbnRhdGlvbiBoYXMgYmVlbiBlbGltaW5hdGVk
LgorICAgICh2b2lkKXdlYnJ0Yzo6dGVzdDo6Sm9pbkZpbGVuYW1lKCJob3JyaWJsZSIsICJoYWNr
Iik7CisKKyAgICB3ZWJydGM6OnRlc3Q6OlZhbGlkYXRlRmllbGRUcmlhbHNTdHJpbmdPckRpZShG
TEFHX2ZvcmNlX2ZpZWxkdHJpYWxzKTsKKyAgICAvLyBJbml0RmllbGRUcmlhbHNGcm9tU3RyaW5n
IHN0b3JlcyB0aGUgY2hhciosIHNvIHRoZSBjaGFyIGFycmF5IG11c3QKKyAgICAvLyBvdXRsaXZl
IHRoZSBhcHBsaWNhdGlvbi4KKyAgICB3ZWJydGM6OmZpZWxkX3RyaWFsOjpJbml0RmllbGRUcmlh
bHNGcm9tU3RyaW5nKEZMQUdfZm9yY2VfZmllbGR0cmlhbHMpOworICAgIHdlYnJ0Yzo6bWV0cmlj
czo6RW5hYmxlKCk7CisKKyNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCisgICAgd2luc29ja19pbml0
XyA9IGFic2w6Om1ha2VfdW5pcXVlPHJ0Yzo6V2luc29ja0luaXRpYWxpemVyPigpOworI2VuZGlm
CisKKyAgICBydGM6OkxvZ01lc3NhZ2U6OlNldExvZ1RvU3RkZXJyKEZMQUdfbG9ncyk7CisKKyAg
ICAvLyBFbnN1cmUgdGhhdCBtYWluIHRocmVhZCBnZXRzIHdyYXBwZWQgYXMgYW4gcnRjOjpUaHJl
YWQuCisgICAgLy8gVE9ETyhidWdzLndlYnJ0Lm9yZy85NzE0KTogSXQgbWlnaHQgYmUgYmV0dGVy
IHRvIGF2b2lkIHdyYXBwaW5nIHRoZSBtYWluCisgICAgLy8gdGhyZWFkLCBvciBsZWF2ZSBpdCB0
byBpbmRpdmlkdWFsIHRlc3RzIHRoYXQgbmVlZCBpdC4gQnV0IGFzIGxvbmcgYXMgd2UKKyAgICAv
LyBoYXZlIGF1dG9tYXRpYyB0aHJlYWQgd3JhcHBpbmcsIHdlIG5lZWQgdGhpcyB0byBhdm9pZCB0
aGF0IHNvbWUgb3RoZXIKKyAgICAvLyByYW5kb20gdGhyZWFkICh3aGljaCBvbmUgZGVwZW5kaW5n
IG9uIHdoaWNoIHRlc3RzIGFyZSBydW4pIGdldHMKKyAgICAvLyBhdXRvbWF0aWNhbGx5IHdyYXBw
ZWQuCisgICAgcnRjOjpUaHJlYWRNYW5hZ2VyOjpJbnN0YW5jZSgpLT5XcmFwQ3VycmVudFRocmVh
ZCgpOworICAgIFJUQ19DSEVDSyhydGM6OlRocmVhZDo6Q3VycmVudCgpKTsKKyAgICByZXR1cm4g
MDsKKyAgfQorCisgIGludCBSdW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgb3ZlcnJpZGUgewor
I2lmIGRlZmluZWQoV0VCUlRDX0lPUykKKyAgICBydGM6OnRlc3Q6OkluaXRUZXN0U3VpdGUoUlVO
X0FMTF9URVNUUywgYXJnYywgYXJndiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxB
R19zYXZlX2NoYXJ0anNvbl9yZXN1bHQpOworICAgIHJ0Yzo6dGVzdDo6UnVuVGVzdHNGcm9tSU9T
QXBwKCk7CisgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIGludCBleGl0X2NvZGUgPSBSVU5fQUxM
X1RFU1RTKCk7CisKKyAgICBzdGQ6OnN0cmluZyBjaGFydGpzb25fcmVzdWx0X2ZpbGUgPSBGTEFH
X2lzb2xhdGVkX3NjcmlwdF90ZXN0X3BlcmZfb3V0cHV0OworICAgIGlmICghY2hhcnRqc29uX3Jl
c3VsdF9maWxlLmVtcHR5KCkpIHsKKyAgICAgIHdlYnJ0Yzo6dGVzdDo6V3JpdGVQZXJmUmVzdWx0
cyhjaGFydGpzb25fcmVzdWx0X2ZpbGUpOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIHJlc3Vs
dF9maWxlbmFtZSA9IEZMQUdfaXNvbGF0ZWRfc2NyaXB0X3Rlc3Rfb3V0cHV0OworICAgIGlmICgh
cmVzdWx0X2ZpbGVuYW1lLmVtcHR5KCkpIHsKKyAgICAgIHN0ZDo6b2ZzdHJlYW0gcmVzdWx0X2Zp
bGUocmVzdWx0X2ZpbGVuYW1lKTsKKyAgICAgIHJlc3VsdF9maWxlIDw8ICJ7XCJ2ZXJzaW9uXCI6
IDN9IjsKKyAgICAgIHJlc3VsdF9maWxlLmNsb3NlKCk7CisgICAgfQorCisjaWYgZGVmaW5lZChB
RERSRVNTX1NBTklUSVpFUikgfHwgZGVmaW5lZChMRUFLX1NBTklUSVpFUikgfHwgIFwKKyAgICBk
ZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpIHx8IGRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikgfHwg
XAorICAgIGRlZmluZWQoVU5ERUZJTkVEX1NBTklUSVpFUikKKyAgICAvLyBXZSB3YW50IHRoZSB0
ZXN0IGZsYWdnZWQgYXMgZmFpbGVkIG9ubHkgZm9yIHNhbml0aXplciBkZWZlY3RzLAorICAgIC8v
IGluIHdoaWNoIGNhc2UgdGhlIHNhbml0aXplciB3aWxsIG92ZXJyaWRlIGV4aXQgY29kZSB3aXRo
IDY2LgorICAgIHJldHVybiAwOworI2VuZGlmCisKKyAgICByZXR1cm4gZXhpdF9jb2RlOworI2Vu
ZGlmCisgIH0KKworICB+VGVzdE1haW5JbXBsKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworCisgcHJp
dmF0ZToKKyNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCisgIHN0ZDo6dW5pcXVlX3B0cjxydGM6Oldp
bnNvY2tJbml0aWFsaXplcj4gd2luc29ja19pbml0XzsKKyNlbmRpZgorfTsKKworfSAgLy8gbmFt
ZXNwYWNlCisKK3N0ZDo6dW5pcXVlX3B0cjxUZXN0TWFpbj4gVGVzdE1haW46OkNyZWF0ZSgpIHsK
KyAgcmV0dXJuIGFic2w6Om1ha2VfdW5pcXVlPFRlc3RNYWluSW1wbD4oKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0X21haW5fbGliLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RfbWFpbl9saWIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NGRkNzY0YWUyNGQzZGZiODYzZjZlYzEzNGE0ZDY5M2U4ZGQwMzBmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0X21h
aW5fbGliLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhl
IFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UK
KyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9m
IHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0
eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisjaWZuZGVm
IFRFU1RfVEVTVF9NQUlOX0xJQl9IXworI2RlZmluZSBURVNUX1RFU1RfTUFJTl9MSUJfSF8KKwor
I2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIENsYXNzIHRvIGlu
aXRpYWxpemUgdGVzdCBlbnZpcm9ubWVudCBhbmQgcnVuIHRlc3RzLgorY2xhc3MgVGVzdE1haW4g
eworIHB1YmxpYzoKKyAgdmlydHVhbCB+VGVzdE1haW4oKSB7fQorCisgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8VGVzdE1haW4+IENyZWF0ZSgpOworCisgIC8vIEluaXRpYWxpemVzIHRlc3QgZW52
aXJvbm1lbnQuIENsaWVudHMgY2FuIGFkZCB0aGVpciBvd24gaW5pdGlhbGl6YXRpb24KKyAgLy8g
c3RlcHMgYWZ0ZXIgY2FsbCB0byB0aGlzIG1ldGhvZCBhbmQgYmVmb3JlIHJ1bm5pbmcgdGVzdHMu
CisgIC8vIFJldHVybnMgMCBpZiBpbml0aWFsaXphdGlvbiB3YXMgc3VjY2Vzc2Z1bCBhbmQgbm9u
IDAgb3RoZXJ3aXNlLgorICB2aXJ0dWFsIGludCBJbml0KGludCogYXJnYywgY2hhciogYXJndltd
KSA9IDA7CisKKyAgLy8gUnVucyB0ZXN0IGVuZCByZXR1cm4gcmVzdWx0IGVycm9yIGNvZGUuIDAg
LSBubyBlcnJvcnMuCisgIHZpcnR1YWwgaW50IFJ1bihpbnQgYXJnYywgY2hhciogYXJndltdKSA9
IDA7CisKKyBwcm90ZWN0ZWQ6CisgIFRlc3RNYWluKCkgPSBkZWZhdWx0OworfTsKKworfSAgLy8g
bmFtZXNwYWNlIHdlYnJ0YworCisjZW5kaWYgIC8vIFRFU1RfVEVTVF9NQUlOX0xJQl9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90
ZXN0c3VwcG9ydC9maWxldXRpbHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5jYwppbmRleCBjYjg4NDcyZTQy
NWJmMmFmYzZhODk4ODY0YzkzMDljYmQ0ZWJiNTM1Li5hNzFkOGY4ZGI1N2Q1N2VlOTQwMzQxMTRk
YjRiNjhlMDI4OGU2OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1
dGlscy5jYwpAQCAtNTksMzUgKzU5LDE3IEBACiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXpl
LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uvc3Ry
aW5ndXRpbHMuaCIKKyNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlsc19vdmVycmlk
ZS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKIAotbmFtZXNwYWNl
IHsKLQogI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKIGNvbnN0IGNoYXIqIGtQYXRoRGVsaW1pdGVy
ID0gIlxcIjsKICNlbHNlCiBjb25zdCBjaGFyKiBrUGF0aERlbGltaXRlciA9ICIvIjsKICNlbmRp
ZgogCi0jaWYgZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKLS8vIFRoaXMgaXMgYSBzcGVjaWFsIGNh
c2UgaW4gQ2hyb21lIGluZnJhc3RydWN0dXJlLiBTZWUKLS8vIGJhc2UvdGVzdC90ZXN0X3N1cHBv
cnRfYW5kcm9pZC5jYy4KLWNvbnN0IGNoYXIqIGtBbmRyb2lkQ2hyb21pdW1UZXN0c1Jvb3QgPSAi
L3NkY2FyZC9jaHJvbWl1bV90ZXN0c19yb290LyI7Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKFdF
QlJUQ19JT1MpCi1jb25zdCBjaGFyKiBrUmVzb3VyY2VzRGlyTmFtZSA9ICJyZXNvdXJjZXMiOwot
I2VuZGlmCi0KLWNoYXIgcmVsYXRpdmVfZGlyX3BhdGhbRklMRU5BTUVfTUFYXTsKLWJvb2wgcmVs
YXRpdmVfZGlyX3BhdGhfc2V0ID0gZmFsc2U7Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1jb25zdCBj
aGFyKiBrQ2Fubm90RmluZFByb2plY3RSb290RGlyID0gIkVSUk9SX0NBTk5PVF9GSU5EX1BST0pF
Q1RfUk9PVF9ESVIiOwotCiBzdGQ6OnN0cmluZyBEaXJOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBw
YXRoKSB7CiAgIGlmIChwYXRoLmVtcHR5KCkpCiAgICAgcmV0dXJuICIiOwpAQCAtMTAxLDI3ICs4
Myw2IEBAIHN0ZDo6c3RyaW5nIERpck5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpIHsKICAg
cmV0dXJuIHJlc3VsdC5zdWJzdHIoMCwgcmVzdWx0LmZpbmRfbGFzdF9vZihrUGF0aERlbGltaXRl
cikpOwogfQogCi12b2lkIFNldEV4ZWN1dGFibGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRo
KSB7Ci0gIHN0ZDo6c3RyaW5nIHdvcmtpbmdfZGlyID0gV29ya2luZ0RpcigpOwotICBzdGQ6OnN0
cmluZyB0ZW1wX3BhdGggPSBwYXRoOwotCi0gIC8vIEhhbmRsZSBhYnNvbHV0ZSBwYXRoczsgY29u
dmVydCB0aGVtIHRvIHJlbGF0aXZlIHBhdGhzIHRvIHRoZSB3b3JraW5nIGRpci4KLSAgaWYgKHBh
dGguZmluZCh3b3JraW5nX2RpcikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICB0ZW1wX3Bh
dGggPSBwYXRoLnN1YnN0cih3b3JraW5nX2Rpci5sZW5ndGgoKSArIDEpOwotICB9Ci0vLyBPbiBX
aW5kb3dzLCB3aGVuIHRlc3RzIGFyZSBydW4gdW5kZXIgbWVtb3J5IHRvb2xzIGxpa2UgRHJNZW1v
cnkgYW5kIFRTYW4sCi0vLyBzbGFzaGVzIG9jY3VyIGluIHRoZSBwYXRoIGFzIGRpcmVjdG9yeSBz
ZXBhcmF0b3JzLiBNYWtlIHN1cmUgd2UgcmVwbGFjZQotLy8gc3VjaCBjYXNlcyB3aXRoIGJhY2tz
bGFzaGVzIGluIG9yZGVyIGZvciB0aGUgcGF0aHMgdG8gYmUgY29ycmVjdC4KLSNpZmRlZiBXSU4z
MgotICBzdGQ6OnJlcGxhY2UodGVtcF9wYXRoLmJlZ2luKCksIHRlbXBfcGF0aC5lbmQoKSwgJy8n
LCAnXFwnKTsKLSNlbmRpZgotCi0gIC8vIFRyaW0gYXdheSB0aGUgZXhlY3V0YWJsZSBuYW1lOyBv
bmx5IHN0b3JlIHRoZSByZWxhdGl2ZSBkaXIgcGF0aC4KLSAgdGVtcF9wYXRoID0gRGlyTmFtZSh0
ZW1wX3BhdGgpOwotICBzdHJuY3B5KHJlbGF0aXZlX2Rpcl9wYXRoLCB0ZW1wX3BhdGguY19zdHIo
KSwgRklMRU5BTUVfTUFYKTsKLSAgcmVsYXRpdmVfZGlyX3BhdGhfc2V0ID0gdHJ1ZTsKLX0KLQog
Ym9vbCBGaWxlRXhpc3RzKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpIHsKICAgc3RydWN0
IHN0YXQgZmlsZV9pbmZvID0gezB9OwogICByZXR1cm4gc3RhdChmaWxlX25hbWUuY19zdHIoKSwg
JmZpbGVfaW5mbykgPT0gMDsKQEAgLTEzMyw2OSArOTQsMTIgQEAgYm9vbCBEaXJFeGlzdHMoY29u
c3Qgc3RkOjpzdHJpbmcmIGRpcmVjdG9yeV9uYW1lKSB7CiAgICAgICAgICBTX0lTRElSKGRpcmVj
dG9yeV9pbmZvLnN0X21vZGUpOwogfQogCi0vLyBGaW5kcyB0aGUgV2ViUlRDIHNyYyBkaXIuCi0v
LyBUaGUgcmV0dXJuZWQgcGF0aCBhbHdheXMgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IuCi1z
dGQ6OnN0cmluZyBQcm9qZWN0Um9vdFBhdGgoKSB7Ci0jaWYgZGVmaW5lZChXRUJSVENfQU5EUk9J
RCkKLSAgcmV0dXJuIGtBbmRyb2lkQ2hyb21pdW1UZXN0c1Jvb3Q7Ci0jZWxpZiBkZWZpbmVkIFdF
QlJUQ19JT1MKLSAgcmV0dXJuIElPU1Jvb3RQYXRoKCk7Ci0jZWxpZiBkZWZpbmVkKFdFQlJUQ19N
QUMpCi0gIHN0ZDo6c3RyaW5nIHBhdGg7Ci0gIEdldE5TRXhlY3V0YWJsZVBhdGgoJnBhdGgpOwot
ICBzdGQ6OnN0cmluZyBleGVfZGlyID0gRGlyTmFtZShwYXRoKTsKLSAgLy8gT24gTWFjLCB0ZXN0
cyBleGVjdXRlIGluIG91dC9XaGF0ZXZlciwgc28gc3JjIGlzIHR3byBsZXZlbHMgdXAgZXhjZXB0
IGlmCi0gIC8vIHRoZSB0ZXN0IGlzIGJ1bmRsZWQgKHdoaWNoIG91ciB0ZXN0cyBhcmUgbm90KSwg
aW4gd2hpY2ggY2FzZSBpdCdzIDUgbGV2ZWxzLgotICByZXR1cm4gRGlyTmFtZShEaXJOYW1lKGV4
ZV9kaXIpKSArIGtQYXRoRGVsaW1pdGVyOwotI2VsaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCi0g
IGNoYXIgYnVmW1BBVEhfTUFYXTsKLSAgc3NpemVfdCBjb3VudCA9IDo6cmVhZGxpbmsoIi9wcm9j
L3NlbGYvZXhlIiwgYnVmLCBhcnJheXNpemUoYnVmKSk7Ci0gIGlmIChjb3VudCA8PSAwKSB7Ci0g
ICAgUlRDX05PVFJFQUNIRUQoKSA8PCAiVW5hYmxlIHRvIHJlc29sdmUgL3Byb2Mvc2VsZi9leGUu
IjsKLSAgICByZXR1cm4ga0Nhbm5vdEZpbmRQcm9qZWN0Um9vdERpcjsKLSAgfQotICAvLyBPbiBQ
T1NJWCwgdGVzdHMgZXhlY3V0ZSBpbiBvdXQvV2hhdGV2ZXIsIHNvIHNyYyBpcyB0d28gbGV2ZWxz
IHVwLgotICBzdGQ6OnN0cmluZyBleGVfZGlyID0gRGlyTmFtZShzdGQ6OnN0cmluZyhidWYsIGNv
dW50KSk7Ci0gIHJldHVybiBEaXJOYW1lKERpck5hbWUoZXhlX2RpcikpICsga1BhdGhEZWxpbWl0
ZXI7Ci0jZWxpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCi0gIHdjaGFyX3QgYnVmW01BWF9QQVRIXTsK
LSAgYnVmWzBdID0gMDsKLSAgaWYgKEdldE1vZHVsZUZpbGVOYW1lKE5VTEwsIGJ1ZiwgTUFYX1BB
VEgpID09IDApCi0gICAgcmV0dXJuIGtDYW5ub3RGaW5kUHJvamVjdFJvb3REaXI7Ci0KLSAgc3Rk
OjpzdHJpbmcgZXhlX3BhdGggPSBydGM6OlRvVXRmOChzdGQ6OndzdHJpbmcoYnVmKSk7Ci0gIHN0
ZDo6c3RyaW5nIGV4ZV9kaXIgPSBEaXJOYW1lKGV4ZV9wYXRoKTsKLSAgcmV0dXJuIERpck5hbWUo
RGlyTmFtZShleGVfZGlyKSkgKyBrUGF0aERlbGltaXRlcjsKLSNlbmRpZgotfQotCiBzdGQ6OnN0
cmluZyBPdXRwdXRQYXRoKCkgewotI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKLSAgcmV0dXJuIElP
U091dHB1dFBhdGgoKTsKLSNlbGlmIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCi0gIHJldHVybiBr
QW5kcm9pZENocm9taXVtVGVzdHNSb290OwotI2Vsc2UKLSAgc3RkOjpzdHJpbmcgcGF0aCA9IFBy
b2plY3RSb290UGF0aCgpOwotICBSVENfRENIRUNLX05FKHBhdGgsIGtDYW5ub3RGaW5kUHJvamVj
dFJvb3REaXIpOwotICBwYXRoICs9ICJvdXQiOwotICBpZiAoIUNyZWF0ZURpcihwYXRoKSkgewot
ICAgIHJldHVybiAiLi8iOwotICB9Ci0gIHJldHVybiBwYXRoICsga1BhdGhEZWxpbWl0ZXI7Ci0j
ZW5kaWYKKyAgcmV0dXJuIHdlYnJ0Yzo6dGVzdDo6aW50ZXJuYWw6Ok91dHB1dFBhdGgoKTsKIH0K
IAogc3RkOjpzdHJpbmcgV29ya2luZ0RpcigpIHsKLSNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lE
KQotICByZXR1cm4ga0FuZHJvaWRDaHJvbWl1bVRlc3RzUm9vdDsKLSNlbmRpZgotICBjaGFyIHBh
dGhfYnVmZmVyW0ZJTEVOQU1FX01BWF07Ci0gIGlmICghR0VUX0NVUlJFTlRfRElSKHBhdGhfYnVm
ZmVyLCBzaXplb2YocGF0aF9idWZmZXIpKSkgewotICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90
IGdldCBjdXJyZW50IGRpcmVjdG9yeSFcbiIpOwotICAgIHJldHVybiAiLi8iOwotICB9IGVsc2Ug
ewotICAgIHJldHVybiBzdGQ6OnN0cmluZyhwYXRoX2J1ZmZlcik7Ci0gIH0KKyAgcmV0dXJuIHdl
YnJ0Yzo6dGVzdDo6aW50ZXJuYWw6OldvcmtpbmdEaXIoKTsKIH0KIAogLy8gR2VuZXJhdGUgYSB0
ZW1wb3JhcnkgZmlsZW5hbWUgaW4gYSBzYWZlIHdheS4KQEAgLTMyMiwzMCArMjI2LDcgQEAgYm9v
bCBSZW1vdmVGaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpIHsKIAogc3RkOjpzdHJp
bmcgUmVzb3VyY2VQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHRlbnNpb24pIHsKLSNpZiBkZWZpbmVkKFdF
QlJUQ19JT1MpCi0gIHJldHVybiBJT1NSZXNvdXJjZVBhdGgobmFtZSwgZXh0ZW5zaW9uKTsKLSNl
bHNlCi0gIHN0ZDo6c3RyaW5nIHBsYXRmb3JtID0gIndpbiI7Ci0jaWZkZWYgV0VCUlRDX0xJTlVY
Ci0gIHBsYXRmb3JtID0gImxpbnV4IjsKLSNlbmRpZiAgLy8gV0VCUlRDX0xJTlVYCi0jaWZkZWYg
V0VCUlRDX01BQwotICBwbGF0Zm9ybSA9ICJtYWMiOwotI2VuZGlmICAvLyBXRUJSVENfTUFDCi0j
aWZkZWYgV0VCUlRDX0FORFJPSUQKLSAgcGxhdGZvcm0gPSAiYW5kcm9pZCI7Ci0jZW5kaWYgIC8v
IFdFQlJUQ19BTkRST0lECi0KLSAgc3RkOjpzdHJpbmcgcmVzb3VyY2VzX3BhdGggPQotICAgICAg
UHJvamVjdFJvb3RQYXRoKCkgKyBrUmVzb3VyY2VzRGlyTmFtZSArIGtQYXRoRGVsaW1pdGVyOwot
ICBzdGQ6OnN0cmluZyByZXNvdXJjZV9maWxlID0KLSAgICAgIHJlc291cmNlc19wYXRoICsgbmFt
ZSArICJfIiArIHBsYXRmb3JtICsgIi4iICsgZXh0ZW5zaW9uOwotICBpZiAoRmlsZUV4aXN0cyhy
ZXNvdXJjZV9maWxlKSkgewotICAgIHJldHVybiByZXNvdXJjZV9maWxlOwotICB9Ci0gIC8vIEZh
bGwgYmFjayBvbiBuYW1lIHdpdGhvdXQgcGxhdGZvcm0uCi0gIHJldHVybiByZXNvdXJjZXNfcGF0
aCArIG5hbWUgKyAiLiIgKyBleHRlbnNpb247Ci0jZW5kaWYgIC8vIGRlZmluZWQgKFdFQlJUQ19J
T1MpCisgIHJldHVybiB3ZWJydGM6OnRlc3Q6OmludGVybmFsOjpSZXNvdXJjZVBhdGgobmFtZSwg
ZXh0ZW5zaW9uKTsKIH0KIAogc3RkOjpzdHJpbmcgSm9pbkZpbGVuYW1lKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBkaXIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1
dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90
ZXN0c3VwcG9ydC9maWxldXRpbHMuaAppbmRleCA1ZmYwMTk2MDBlZDU5ODFlY2ZlZjI1NDYxMTY5
ZTk3NWQ0OTIyOTZhLi44YTE4Njk4OGQ2MzgwODZkMTY0NDViZTIxZjVmZTE0YzFkYjU2N2YxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0
L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgKQEAgLTI1LDYgKzI1
LDkgQEAgbmFtZXNwYWNlIHRlc3QgewogLy8gdG8gZmluZCB0aGUgcHJvamVjdCByb290LgogZXh0
ZXJuIGNvbnN0IGNoYXIqIGtDYW5ub3RGaW5kUHJvamVjdFJvb3REaXI7CiAKKy8vIFNsYXNoIG9y
IGJhY2tzbGFzaCwgZGVwZW5kaW5nIG9uIHBsYXRmb3JtLiBOVUwtdGVybWluYXRlZCBzdHJpbmcu
CitleHRlcm4gY29uc3QgY2hhcioga1BhdGhEZWxpbWl0ZXI7CisKIC8vIFJldHVybnMgdGhlIGFi
c29sdXRlIHBhdGggdG8gdGhlIG91dHB1dCBkaXJlY3Rvcnkgd2hlcmUgbG9nIGZpbGVzIGFuZCBv
dGhlcgogLy8gdGVzdCBhcnRpZmFjdHMgc2hvdWxkIGJlIHB1dC4gVGhlIG91dHB1dCBkaXJlY3Rv
cnkgaXMgZ2VuZXJhbGx5IGEgZGlyZWN0b3J5CiAvLyBuYW1lZCAib3V0IiBhdCB0aGUgcHJvamVj
dCByb290LiBUaGlzIHJvb3QgaXMgYXNzdW1lZCB0byBiZSB0d28gbGV2ZWxzIGFib3ZlCkBAIC01
MSwxOCArNTQsOCBAQCBzdGQ6OnN0cmluZyBUZW1wRmlsZW5hbWUoY29uc3Qgc3RkOjpzdHJpbmcm
IGRpciwgY29uc3Qgc3RkOjpzdHJpbmcmIHByZWZpeCk7CiBzdGQ6OnN0cmluZyBHZW5lcmF0ZVRl
bXBGaWxlbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgZGlyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHByZWZpeCk7CiAKLS8vIFJldHVybnMgYSBw
YXRoIHRvIGEgcmVzb3VyY2UgZmlsZSBmb3IgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgcGxhdGZv
cm0uCi0vLyBBZGFwdHMgdG8gd2hhdCBmaWxlbmFtZXMgYXJlIGN1cnJlbnRseSBwcmVzZW50IGlu
IHRoZQotLy8gW3Byb2plY3Qtcm9vdF0vcmVzb3VyY2VzLyBkaXIuCi0vLyBSZXR1cm5zIGFuIGFi
c29sdXRlIHBhdGggYWNjb3JkaW5nIHRvIHRoaXMgcHJpb3JpdHkgbGlzdCAodGhlIGRpcmVjdG9y
eQotLy8gcGFydCBvZiB0aGUgcGF0aCBpcyBsZWZ0IG91dCBmb3IgcmVhZGFiaWxpdHkpOgotLy8g
MS4gW25hbWVdX1twbGF0Zm9ybV1fW2FyY2hpdGVjdHVyZV0uW2V4dGVuc2lvbl0KLS8vIDIuIFtu
YW1lXV9bcGxhdGZvcm1dLltleHRlbnNpb25dCi0vLyAzLiBbbmFtZV1fW2FyY2hpdGVjdHVyZV0u
W2V4dGVuc2lvbl0KLS8vIDQuIFtuYW1lXS5bZXh0ZW5zaW9uXQotLy8gV2hlcmUKLS8vICogcGxh
dGZvcm0gaXMgZWl0aGVyIG9mICJ3aW4iLCAibWFjIiBvciAibGludXgiLgotLy8gKiBhcmNoaXRl
Y3R1cmUgaXMgZWl0aGVyIG9mICIzMiIgb3IgIjY0Ii4KKy8vIFJldHVybnMgYSBwYXRoIHRvIGEg
cmVzb3VyY2UgZmlsZSBpbiBbcHJvamVjdC1yb290XS9yZXNvdXJjZXMvIGRpci4KKy8vIFJldHVy
bnMgYW4gYWJzb2x1dGUgcGF0aAogLy8KIC8vIEFyZ3VtZW50czoKIC8vICAgIG5hbWUgLSBOYW1l
IG9mIHRoZSByZXNvdXJjZSBmaWxlLiBJZiBhIHBsYWluIGZpbGVuYW1lIChubyBkaXJlY3Rvcnkg
cGF0aCkKQEAgLTExMCwxNSArMTAzLDYgQEAgc3RkOjpzdHJpbmcgRGlyTmFtZShjb25zdCBzdGQ6
OnN0cmluZyYgcGF0aCk7CiAvLyBlbXB0eSBvciBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdC9p
cyByZWFkYWJsZS4KIHNpemVfdCBHZXRGaWxlU2l6ZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5h
bWUpOwogCi0vLyBTZXRzIHRoZSBleGVjdXRhYmxlIHBhdGgsIGkuZS4gdGhlIHBhdGggdG8gdGhl
IGV4ZWN1dGFibGUgdGhhdCBpcyBiZWluZyB1c2VkCi0vLyB3aGVuIGxhdW5jaGluZyBpdC4gVGhp
cyBpcyB1c3VhbGx5IHRoZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeQot
Ly8gYnV0IGNhbiBhbHNvIGJlIGFuIGFic29sdXRlIHBhdGguIFRoZSBpbnRlbnRpb24gd2l0aCB0
aGlzIGZ1bmN0aW9uIGlzIHRvIHBhc3MKLS8vIHRoZSBhcmd2WzBdIGJlaW5nIHNlbnQgaW50byB0
aGUgbWFpbiBmdW5jdGlvbiB0byBtYWtlIGl0IHBvc3NpYmxlIGZvcgotLy8gZmlsZXV0aWxzLmgg
dG8gZmluZCB0aGUgY29ycmVjdCBwcm9qZWN0IHBhdGhzIGV2ZW4gd2hlbiB0aGUgd29ya2luZyBk
aXJlY3RvcnkKLS8vIGlzIG91dHNpZGUgdGhlIHByb2plY3QgdHJlZSAod2hpY2ggaGFwcGVucyBp
biBzb21lIGNhc2VzKS4KLS8vIFRPRE8oYnVncy53ZWJydGMub3JnLzk3OTIpOiBEZXByZWNhdGVk
IC0gZ29pbmcgYXdheSBzb29uLgotdm9pZCBTZXRFeGVjdXRhYmxlUGF0aChjb25zdCBzdGQ6OnN0
cmluZyYgcGF0aF90b19leGVjdXRhYmxlKTsKLQogfSAgLy8gbmFtZXNwYWNlIHRlc3QKIH0gIC8v
IG5hbWVzcGFjZSB3ZWJydGMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBw
b3J0L2ZpbGV1dGlsc19vdmVycmlkZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODQwNjljMTBkZDRmNjEwY2Ri
ZWE5MDZhY2Y2MWFhMzIzYjJhMGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfb3Zl
cnJpZGUuY2MKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRo
ZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
CisgKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBB
bGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5j
bHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfb3ZlcnJpZGUuaCIKKworI2lmIGRlZmlu
ZWQoV0VCUlRDX1dJTikKKyNpbmNsdWRlIDxkaXJlY3QuaD4KKyNpbmNsdWRlIDx0Y2hhci5oPgor
I2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y29k
ZWN2dD4KKyNpbmNsdWRlIDxsb2NhbGU+CisKKyNpbmNsdWRlICJTaGx3YXBpLmgiCisjaW5jbHVk
ZSAiV2luRGVmLmgiCisKKyNpbmNsdWRlICJydGNfYmFzZS93aW4zMi5oIgorI2RlZmluZSBHRVRf
Q1VSUkVOVF9ESVIgX2dldGN3ZAorI2Vsc2UKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRl
IDx1bmlzdGQuaD4KKyNkZWZpbmUgR0VUX0NVUlJFTlRfRElSIGdldGN3ZAorI2VuZGlmCisKKyNp
ZiBkZWZpbmVkKFdFQlJUQ19JT1MpCisjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9pb3NmaWxl
dXRpbHMuaCIKKyNlbmRpZgorCisjaWYgZGVmaW5lZChXRUJSVENfTUFDKQorI2luY2x1ZGUgInRl
c3QvdGVzdHN1cHBvcnQvbWFjZmlsZXV0aWxzLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImFic2wv
dHlwZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9hcnJheXNpemUuaCIKKyNpbmNs
dWRlICJydGNfYmFzZS9jaGVja3MuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5o
IgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFjZSB0ZXN0IHsKKworc3RkOjpzdHJpbmcg
RGlyTmFtZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCk7Citib29sIENyZWF0ZURpcihjb25zdCBz
dGQ6OnN0cmluZyYgZGlyZWN0b3J5X25hbWUpOworCituYW1lc3BhY2UgaW50ZXJuYWwgeworCitu
YW1lc3BhY2UgeworI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKK2NvbnN0IGNoYXIqIGtQYXRoRGVs
aW1pdGVyID0gIlxcIjsKKyNlbGlmICFkZWZpbmVkKFdFQlJUQ19JT1MpCitjb25zdCBjaGFyKiBr
UGF0aERlbGltaXRlciA9ICIvIjsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChXRUJSVENfQU5EUk9J
RCkKKy8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgaW4gQ2hyb21lIGluZnJhc3RydWN0dXJlLiBT
ZWUKKy8vIGJhc2UvdGVzdC90ZXN0X3N1cHBvcnRfYW5kcm9pZC5jYy4KK2NvbnN0IGNoYXIqIGtB
bmRyb2lkQ2hyb21pdW1UZXN0c1Jvb3QgPSAiL3NkY2FyZC9jaHJvbWl1bV90ZXN0c19yb290LyI7
CisjZW5kaWYKKworI2lmICFkZWZpbmVkKFdFQlJUQ19JT1MpCitjb25zdCBjaGFyKiBrUmVzb3Vy
Y2VzRGlyTmFtZSA9ICJyZXNvdXJjZXMiOworI2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZQorCisv
LyBGaW5kcyB0aGUgV2ViUlRDIHNyYyBkaXIuCisvLyBUaGUgcmV0dXJuZWQgcGF0aCBhbHdheXMg
ZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IuCithYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4g
UHJvamVjdFJvb3RQYXRoKCkgeworI2lmIGRlZmluZWQoV0VCUlRDX0FORFJPSUQpCisgIHJldHVy
biBrQW5kcm9pZENocm9taXVtVGVzdHNSb290OworI2VsaWYgZGVmaW5lZCBXRUJSVENfSU9TCisg
IHJldHVybiBJT1NSb290UGF0aCgpOworI2VsaWYgZGVmaW5lZChXRUJSVENfTUFDKQorICBzdGQ6
OnN0cmluZyBwYXRoOworICBHZXROU0V4ZWN1dGFibGVQYXRoKCZwYXRoKTsKKyAgc3RkOjpzdHJp
bmcgZXhlX2RpciA9IERpck5hbWUocGF0aCk7CisgIC8vIE9uIE1hYywgdGVzdHMgZXhlY3V0ZSBp
biBvdXQvV2hhdGV2ZXIsIHNvIHNyYyBpcyB0d28gbGV2ZWxzIHVwIGV4Y2VwdCBpZgorICAvLyB0
aGUgdGVzdCBpcyBidW5kbGVkICh3aGljaCBvdXIgdGVzdHMgYXJlIG5vdCksIGluIHdoaWNoIGNh
c2UgaXQncyA1IGxldmVscy4KKyAgcmV0dXJuIERpck5hbWUoRGlyTmFtZShleGVfZGlyKSkgKyBr
UGF0aERlbGltaXRlcjsKKyNlbGlmIGRlZmluZWQoV0VCUlRDX1BPU0lYKQorICBjaGFyIGJ1ZltQ
QVRIX01BWF07CisgIHNzaXplX3QgY291bnQgPSA6OnJlYWRsaW5rKCIvcHJvYy9zZWxmL2V4ZSIs
IGJ1ZiwgYXJyYXlzaXplKGJ1ZikpOworICBpZiAoY291bnQgPD0gMCkgeworICAgIFJUQ19OT1RS
RUFDSEVEKCkgPDwgIlVuYWJsZSB0byByZXNvbHZlIC9wcm9jL3NlbGYvZXhlLiI7CisgICAgcmV0
dXJuIGFic2w6Om51bGxvcHQ7CisgIH0KKyAgLy8gT24gUE9TSVgsIHRlc3RzIGV4ZWN1dGUgaW4g
b3V0L1doYXRldmVyLCBzbyBzcmMgaXMgdHdvIGxldmVscyB1cC4KKyAgc3RkOjpzdHJpbmcgZXhl
X2RpciA9IERpck5hbWUoc3RkOjpzdHJpbmcoYnVmLCBjb3VudCkpOworICByZXR1cm4gRGlyTmFt
ZShEaXJOYW1lKGV4ZV9kaXIpKSArIGtQYXRoRGVsaW1pdGVyOworI2VsaWYgZGVmaW5lZChXRUJS
VENfV0lOKQorICB3Y2hhcl90IGJ1ZltNQVhfUEFUSF07CisgIGJ1ZlswXSA9IDA7CisgIGlmIChH
ZXRNb2R1bGVGaWxlTmFtZShOVUxMLCBidWYsIE1BWF9QQVRIKSA9PSAwKQorICAgIHJldHVybiBh
YnNsOjpudWxsb3B0OworCisgIHN0ZDo6c3RyaW5nIGV4ZV9wYXRoID0gcnRjOjpUb1V0Zjgoc3Rk
Ojp3c3RyaW5nKGJ1ZikpOworICBzdGQ6OnN0cmluZyBleGVfZGlyID0gRGlyTmFtZShleGVfcGF0
aCk7CisgIHJldHVybiBEaXJOYW1lKERpck5hbWUoZXhlX2RpcikpICsga1BhdGhEZWxpbWl0ZXI7
CisjZW5kaWYKK30KKworc3RkOjpzdHJpbmcgT3V0cHV0UGF0aCgpIHsKKyNpZiBkZWZpbmVkKFdF
QlJUQ19JT1MpCisgIHJldHVybiBJT1NPdXRwdXRQYXRoKCk7CisjZWxpZiBkZWZpbmVkKFdFQlJU
Q19BTkRST0lEKQorICByZXR1cm4ga0FuZHJvaWRDaHJvbWl1bVRlc3RzUm9vdDsKKyNlbHNlCisg
IGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBwYXRoX29wdCA9IFByb2plY3RSb290UGF0aCgp
OworICBSVENfRENIRUNLKHBhdGhfb3B0KTsKKyAgc3RkOjpzdHJpbmcgcGF0aCA9ICpwYXRoX29w
dCArICJvdXQiOworICBpZiAoIUNyZWF0ZURpcihwYXRoKSkgeworICAgIHJldHVybiAiLi8iOwor
ICB9CisgIHJldHVybiBwYXRoICsga1BhdGhEZWxpbWl0ZXI7CisjZW5kaWYKK30KKworc3RkOjpz
dHJpbmcgV29ya2luZ0RpcigpIHsKKyNpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQorICByZXR1
cm4ga0FuZHJvaWRDaHJvbWl1bVRlc3RzUm9vdDsKKyNlbmRpZgorICBjaGFyIHBhdGhfYnVmZmVy
W0ZJTEVOQU1FX01BWF07CisgIGlmICghR0VUX0NVUlJFTlRfRElSKHBhdGhfYnVmZmVyLCBzaXpl
b2YocGF0aF9idWZmZXIpKSkgeworICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGdldCBjdXJy
ZW50IGRpcmVjdG9yeSFcbiIpOworICAgIHJldHVybiAiLi8iOworICB9IGVsc2UgeworICAgIHJl
dHVybiBzdGQ6OnN0cmluZyhwYXRoX2J1ZmZlcik7CisgIH0KK30KKworc3RkOjpzdHJpbmcgUmVz
b3VyY2VQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHRlbnNpb24pIHsKKyNpZiBkZWZpbmVkKFdFQlJUQ19J
T1MpCisgIHJldHVybiBJT1NSZXNvdXJjZVBhdGgobmFtZSwgZXh0ZW5zaW9uKTsKKyNlbHNlCisg
IGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBwYXRoX29wdCA9IFByb2plY3RSb290UGF0aCgp
OworICBSVENfRENIRUNLKHBhdGhfb3B0KTsKKyAgc3RkOjpzdHJpbmcgcmVzb3VyY2VzX3BhdGgg
PSAqcGF0aF9vcHQgKyBrUmVzb3VyY2VzRGlyTmFtZSArIGtQYXRoRGVsaW1pdGVyOworICByZXR1
cm4gcmVzb3VyY2VzX3BhdGggKyBuYW1lICsgIi4iICsgZXh0ZW5zaW9uOworI2VuZGlmCit9CisK
K30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3QKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzX292ZXJyaWRlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2Zp
bGV1dGlsc19vdmVycmlkZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0MWM3Njg2MDcxNmFkNzg5MmVkZGRiZDgz
NTk5MzFjZjIwYjAyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlsc19vdmVycmlkZS5o
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBXZWJSVEMg
cHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisgKiAgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291
cmNlCisgKiAgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRz
IGdyYW50IGNhbiBiZSBmb3VuZAorICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJp
YnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKyAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm
aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAqLworCisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpZm5kZWYgVEVTVF9URVNUU1VQUE9SVF9GSUxF
VVRJTFNfT1ZFUlJJREVfSF8KKyNkZWZpbmUgVEVTVF9URVNUU1VQUE9SVF9GSUxFVVRJTFNfT1ZF
UlJJREVfSF8KKworbmFtZXNwYWNlIHdlYnJ0YyB7CituYW1lc3BhY2UgdGVzdCB7CituYW1lc3Bh
Y2UgaW50ZXJuYWwgeworCisvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBvdXRw
dXQgZGlyZWN0b3J5IHdoZXJlIGxvZyBmaWxlcyBhbmQgb3RoZXIKKy8vIHRlc3QgYXJ0aWZhY3Rz
IHNob3VsZCBiZSBwdXQuIFRoZSBvdXRwdXQgZGlyZWN0b3J5IGlzIGdlbmVyYWxseSBhIGRpcmVj
dG9yeQorLy8gbmFtZWQgIm91dCIgYXQgdGhlIHByb2plY3Qgcm9vdC4gVGhpcyByb290IGlzIGFz
c3VtZWQgdG8gYmUgdHdvIGxldmVscyBhYm92ZQorLy8gd2hlcmUgdGhlIHRlc3QgYmluYXJ5IGlz
IGxvY2F0ZWQ7IHRoaXMgaXMgYmVjYXVzZSB0ZXN0cyBleGVjdXRlIGluIGEgZGlyCisvLyBvdXQv
V2hhdGV2ZXIgcmVsYXRpdmUgdG8gdGhlIHByb2plY3Qgcm9vdC4gVGhpcyBjb252ZW50aW9uIGlz
IGFsc28gZm9sbG93ZWQKKy8vIGluIENocm9taXVtLgorLy8KKy8vIFRoZSBleGNlcHRpb24gaXMg
QW5kcm9pZCB3aGVyZSB3ZSB1c2UgL3NkY2FyZC8gaW5zdGVhZC4KKy8vCisvLyBJZiBzeW1ib2xp
YyBsaW5rcyBvY2N1ciBpbiB0aGUgcGF0aCB0aGV5IHdpbGwgYmUgcmVzb2x2ZWQgYW5kIHRoZSBh
Y3R1YWwKKy8vIGRpcmVjdG9yeSB3aWxsIGJlIHJldHVybmVkLgorLy8KKy8vIFJldHVybnMgdGhl
IHBhdGggV0lUSCBhIHRyYWlsaW5nIHBhdGggZGVsaW1pdGVyLiBJZiB0aGUgcHJvamVjdCByb290
IGlzIG5vdAorLy8gZm91bmQsIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5ICgiLi8iKSBp
cyByZXR1cm5lZCBhcyBhIGZhbGxiYWNrLgorc3RkOjpzdHJpbmcgT3V0cHV0UGF0aCgpOworCisv
LyBHZXRzIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGZvciB0aGUgZXhlY3V0aW5nIHBy
b2dyYW0uCisvLyBSZXR1cm5zICIuLyIgaWYgZm9yIHNvbWUgcmVhc29uIGl0IGlzIG5vdCBwb3Nz
aWJsZSB0byBmaW5kIHRoZSB3b3JraW5nCisvLyBkaXJlY3RvcnkuCitzdGQ6OnN0cmluZyBXb3Jr
aW5nRGlyKCk7CisKKy8vIFJldHVybnMgYSBwYXRoIHRvIGEgcmVzb3VyY2UgZmlsZSBpbiBbcHJv
amVjdC1yb290XS9yZXNvdXJjZXMvIGRpci4KKy8vIFJldHVybnMgYW4gYWJzb2x1dGUgcGF0aAor
Ly8KKy8vIEFyZ3VtZW50czoKKy8vICAgIG5hbWUgLSBOYW1lIG9mIHRoZSByZXNvdXJjZSBmaWxl
LiBJZiBhIHBsYWluIGZpbGVuYW1lIChubyBkaXJlY3RvcnkgcGF0aCkKKy8vICAgICAgICAgICBp
cyBzdXBwbGllZCwgdGhlIGZpbGUgaXMgYXNzdW1lZCB0byBiZSBsb2NhdGVkIGluIHJlc291cmNl
cy8KKy8vICAgICAgICAgICBJZiBhIGRpcmVjdG9yeSBwYXRoIGlzIHByZXBlbmRlZCB0byB0aGUg
ZmlsZW5hbWUsIGEgc3ViZGlyZWN0b3J5CisvLyAgICAgICAgICAgaGllcmFyY2h5IHJlZmxlY3Rp
bmcgdGhhdCBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgcHJlc2VudC4KKy8vICAgIGV4dGVuc2lvbiAt
IEZpbGUgZXh0ZW5zaW9uLCB3aXRob3V0IHRoZSBkb3QsIGkuZS4gImJtcCIgb3IgInl1diIuCitz
dGQ6OnN0cmluZyBSZXNvdXJjZVBhdGgoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBleHRlbnNpb24pOworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8v
IG5hbWVzcGFjZSB0ZXN0Cit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCisKKyNlbmRpZiAgLy8gVEVT
VF9URVNUU1VQUE9SVF9GSUxFVVRJTFNfT1ZFUlJJREVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvZmlsZXV0
aWxzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfdW5pdHRlc3QuY2MKaW5kZXggYzZkYzg2ZGVi
MjAwYTNjM2MwMmQyOGQxMDRlMjY1MjY2ODcwOTgyYS4uZDM5ZjQ2ODAwNDE4ZGE3YzM3Njc2OGZh
ZDEyM2VlNzE5Njk2MDRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHNfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3Vw
cG9ydC9maWxldXRpbHNfdW5pdHRlc3QuY2MKQEAgLTI0LDkgKzI0LDYgQEAKIAogI2lmZGVmIFdJ
TjMyCiAjZGVmaW5lIGNoZGlyIF9jaGRpcgotc3RhdGljIGNvbnN0IGNoYXIqIGtQYXRoRGVsaW1p
dGVyID0gIlxcIjsKLSNlbHNlCi1zdGF0aWMgY29uc3QgY2hhcioga1BhdGhEZWxpbWl0ZXIgPSAi
LyI7CiAjZW5kaWYKIAogdXNpbmcgOjp0ZXN0aW5nOjpFbmRzV2l0aDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQv
anBlZ19mcmFtZV93cml0ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L2pwZWdfZnJhbWVfd3JpdGVyLmNjCmluZGV4IDUzN2U4
NWNmYTVlNTVmMTAwMjkxMTQ0MzJhMjVlOTc3ZjY4YjVmOTguLjhiZjFlZTQ2MzBlMWYzYjg0YTdk
YTQzZmQxNzFjOWQxYjEyNjM0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvanBlZ19mcmFtZV93cml0ZXIuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0
c3VwcG9ydC9qcGVnX2ZyYW1lX3dyaXRlci5jYwpAQCAtMTAsNyArMTAsNiBAQAogCiAjaW5jbHVk
ZSA8c3RkaW8uaD4KIAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxk
L2luY2x1ZGUpCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19s
aWJ5dXYuaCIKICNpbmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKICNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L3Rlc3RfYXJ0aWZhY3RzLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC90ZXN0X2Fy
dGlmYWN0cy5jYwppbmRleCAwZjdlMGNkNGZmODY2MDZkMGI5YWIyY2NmYmNjYTM1MmEzOTBkN2Vl
Li45NDM4Y2VmYmM0ZmQ3ZTE4NmJiYzIyZWZiN2RhYmNhMjg0OWE0NGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0
L3Rlc3RfYXJ0aWZhY3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvdGVzdF9hcnRpZmFjdHMuY2MKQEAgLTI0LDkgKzI0
LDkgQEAgY29uc3Qgc3RkOjpzdHJpbmcmIERlZmF1bHRBcnRpZmFjdFBhdGgoKSB7CiB9CiB9ICAv
LyBuYW1lc3BhY2UKIAotREVGSU5FX3N0cmluZyh0ZXN0X2FydGlmYWN0c19kaXIsCi0gICAgICAg
ICAgICAgIERlZmF1bHRBcnRpZmFjdFBhdGgoKS5jX3N0cigpLAotICAgICAgICAgICAgICAiVGhl
IG91dHB1dCBmb2xkZXIgd2hlcmUgdGVzdCBvdXRwdXQgc2hvdWxkIGJlIHNhdmVkLiIpOworV0VC
UlRDX0RFRklORV9zdHJpbmcodGVzdF9hcnRpZmFjdHNfZGlyLAorICAgICAgICAgICAgICAgICAg
ICAgRGVmYXVsdEFydGlmYWN0UGF0aCgpLmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAi
VGhlIG91dHB1dCBmb2xkZXIgd2hlcmUgdGVzdCBvdXRwdXQgc2hvdWxkIGJlIHNhdmVkLiIpOwog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSB0ZXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvdGVz
dF9hcnRpZmFjdHNfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90ZXN0L3Rlc3RzdXBwb3J0L3Rlc3RfYXJ0aWZhY3RzX3VuaXR0ZXN0LmNjCmlu
ZGV4IGM0MjNjZDkwZWFkYTkwOGFmM2M5MmZmYTlkZTJlMWY4NjE5NmRkYjkuLmRmMDJkMjdjNjcy
NWQ2MTY3MjI2ZWYyNDEwZjU3MDQwNTEzYzM5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3QvdGVzdHN1cHBvcnQvdGVzdF9hcnRpZmFj
dHNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdGVzdC90ZXN0c3VwcG9ydC90ZXN0X2FydGlmYWN0c191bml0dGVzdC5jYwpAQCAtMTYs
MTIgKzE2LDExIEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9maWxlLmgiCiAjaW5jbHVkZSAicnRj
X2Jhc2UvZmxhZ3MuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9wYXRodXRpbHMuaCIKICNpbmNsdWRl
ICJydGNfYmFzZS9wbGF0Zm9ybV9maWxlLmgiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC5oIgogI2lu
Y2x1ZGUgInRlc3QvdGVzdHN1cHBvcnQvZmlsZXV0aWxzLmgiCiAKLURFQ0xBUkVfc3RyaW5nKHRl
c3RfYXJ0aWZhY3RzX2Rpcik7CitXRUJSVENfREVDTEFSRV9zdHJpbmcodGVzdF9hcnRpZmFjdHNf
ZGlyKTsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgdGVzdCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3ZjbV9jYXB0
dXJlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC92
Y21fY2FwdHVyZXIuaAppbmRleCA1OWRmNGM3MWUyYWE4NjNlMWJjZDg5ZjZmMDAxM2FmZjRhYjkz
NDIwLi41ZjQ3MDdmOTExNTUxZjQ0OWNiOGNmNDJmNDZiNjQwMzYxODBmN2ZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3ZjbV9jYXB0
dXJlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rl
c3QvdmNtX2NhcHR1cmVyLmgKQEAgLTEyLDcgKzEyLDYgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4K
IAotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAj
aW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKICNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NhcHR1cmUvdmlkZW9fY2FwdHVyZS5oIgogI2luY2x1ZGUg
InJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC92aWRlb19lbmNvZGVyX3Byb3h5X2ZhY3Rv
cnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvdmlk
ZW9fZW5jb2Rlcl9wcm94eV9mYWN0b3J5LmgKaW5kZXggZTcyODljMDM5OWUyNjY3ZWU4ZjEzMjU2
NjQ4ZDYwMzc1NWUzNDVmNC4uOWU1ZWExMmNlMmJjYmI5MzgyZjMzNTM4MWI1NTliOTU3NDBkZDcy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dGVzdC92aWRlb19lbmNvZGVyX3Byb3h5X2ZhY3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3ZpZGVvX2VuY29kZXJfcHJveHlfZmFjdG9y
eS5oCkBAIC03MSwyMyArNzEsMTcgQEAgY2xhc3MgVmlkZW9FbmNvZGVyUHJveHlGYWN0b3J5IGZp
bmFsIDogcHVibGljIFZpZGVvRW5jb2RlckZhY3RvcnkgewogICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgbWF4X3BheWxvYWRfc2l6ZSkgb3ZlcnJpZGUgewogICAgICAgcmV0dXJuIGVuY29k
ZXJfLT5Jbml0RW5jb2RlKGNvbmZpZywgbnVtYmVyX29mX2NvcmVzLCBtYXhfcGF5bG9hZF9zaXpl
KTsKICAgICB9Ci0gICAgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1Nl
dHRpbmdzKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgICAgcmV0dXJuIGVuY29kZXJfLT5HZXRTY2Fs
aW5nU2V0dGluZ3MoKTsKLSAgICB9CiAgICAgaW50MzJfdCBSZWdpc3RlckVuY29kZUNvbXBsZXRl
Q2FsbGJhY2soCiAgICAgICAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJp
ZGUgewogICAgICAgcmV0dXJuIGVuY29kZXJfLT5SZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJh
Y2soY2FsbGJhY2spOwogICAgIH0KICAgICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZSB7IHJl
dHVybiBlbmNvZGVyXy0+UmVsZWFzZSgpOyB9Ci0gICAgaW50MzJfdCBTZXRDaGFubmVsUGFyYW1l
dGVycyh1aW50MzJfdCBwYWNrZXRfbG9zcywgaW50NjRfdCBydHQpIG92ZXJyaWRlIHsKLSAgICAg
IHJldHVybiBlbmNvZGVyXy0+U2V0Q2hhbm5lbFBhcmFtZXRlcnMocGFja2V0X2xvc3MsIHJ0dCk7
Ci0gICAgfQogICAgIGludDMyX3QgU2V0UmF0ZUFsbG9jYXRpb24oY29uc3QgVmlkZW9CaXRyYXRl
QWxsb2NhdGlvbiYgcmF0ZV9hbGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgZnJhbWVyYXRlKSBvdmVycmlkZSB7CiAgICAgICByZXR1cm4gZW5jb2Rlcl8t
PlNldFJhdGVBbGxvY2F0aW9uKHJhdGVfYWxsb2NhdGlvbiwgZnJhbWVyYXRlKTsKICAgICB9Ci0g
ICAgY29uc3QgY2hhciogSW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3Qgb3ZlcnJpZGUgewotICAg
ICAgcmV0dXJuIGVuY29kZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKTsKKyAgICBWaWRlb0VuY29k
ZXI6OkVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgICAg
cmV0dXJuIGVuY29kZXJfLT5HZXRFbmNvZGVySW5mbygpOwogICAgIH0KIAogICAgIFZpZGVvRW5j
b2RlciogY29uc3QgZW5jb2Rlcl87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3dpbi9ydW5fbG9vcF93aW4uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90ZXN0L3dpbi9ydW5fbG9vcF93aW4uY2MK
aW5kZXggMjhkYzkzMzRlMDg2ZmY1OTE5YzYzOWJkNjYwMjc1ZjU2ODUxYjllNC4uZWU5MzYzNThm
YTZkMmJlMDNmYTc1OThiZDg0ODcwYjQ3YjVmOTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdGVzdC93aW4vcnVuX2xvb3Bfd2luLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rlc3Qvd2luL3J1
bl9sb29wX3dpbi5jYwpAQCAtMTgsMTUgKzE4LDE4IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5h
bWVzcGFjZSB0ZXN0IHsKIAotdm9pZCBQcmVzc0VudGVyVG9Db250aW51ZSgpIHsKK3ZvaWQgUHJl
c3NFbnRlclRvQ29udGludWUoU2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nICZ0YXNr
X3F1ZXVlKSB7CiAgIHB1dHMoIj4+IFByZXNzIEVOVEVSIHRvIGNvbnRpbnVlLi4uIik7CiAKLSAg
TVNHIG1zZzsKLSAgQk9PTCByZXQ7Ci0gIHdoaWxlICgocmV0ID0gR2V0TWVzc2FnZSgmbXNnLCBO
VUxMLCAwLCAwKSkgIT0gMCkgewotICAgIGFzc2VydChyZXQgIT0gLTEpOwotICAgIFRyYW5zbGF0
ZU1lc3NhZ2UoJm1zZyk7Ci0gICAgRGlzcGF0Y2hNZXNzYWdlKCZtc2cpOworICB3aGlsZSAoIV9r
YmhpdCgpIHx8IF9nZXRjaCgpICE9ICdccicpIHsKKyAgICAvLyBEcml2ZSB0aGUgbWVzc2FnZSBs
b29wIGZvciB0aGUgdGhyZWFkIHJ1bm5pbmcgdGhlIHRhc2tfcXVldWUKKyAgICB0YXNrX3F1ZXVl
LlNlbmRUYXNrKFsmXSgpIHsKKyAgICAgIE1TRyBtc2c7CisgICAgICBpZiAoUGVla01lc3NhZ2Uo
Jm1zZywgTlVMTCwgMCwgMCwgUE1fUkVNT1ZFKSkgeworICAgICAgICBUcmFuc2xhdGVNZXNzYWdl
KCZtc2cpOworICAgICAgICBEaXNwYXRjaE1lc3NhZ2UoJm1zZyk7CisgICAgICB9CisgICAgfSk7
CiAgIH0KIH0KIH0gIC8vIG5hbWVzcGFjZSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvYW5kcm9pZC9zdXBwcmVz
c2lvbnMueG1sIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9v
bHNfd2VicnRjL2FuZHJvaWQvc3VwcHJlc3Npb25zLnhtbAppbmRleCA2N2U1YjQxNjUzMDJmZTgz
YzFiZmVjY2E2ZWM4NmEyMzUyMmRhMTlhLi40NTM3NWMyZmU3MWM4ZDM2MjZjY2Y5ZmQwMWU2MzA1
ZDVlY2EzMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90b29sc193ZWJydGMvYW5kcm9pZC9zdXBwcmVzc2lvbnMueG1sCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9hbmRyb2lk
L3N1cHByZXNzaW9ucy54bWwKQEAgLTIyLDcgKzIyLDEwIEBACiAKICAgPGlzc3VlIGlkPSJHb29n
bGVBcHBJbmRleGluZ1dhcm5pbmciIHNldmVyaXR5PSJpZ25vcmUiLz4KICAgPGlzc3VlIGlkPSJN
aXNzaW5nUmVnaXN0ZXJlZCIgc2V2ZXJpdHk9Imlnbm9yZSIvPgotCisgIDxpc3N1ZSBpZD0iTGlu
dEVycm9yIj4KKyAgICA8IS0tIFdlIG5vIGxvbmdlciBzdXBwbHkgY2xhc3MgZmlsZXMgdG8gbGlu
dC4gLS0+CisgICAgPGlnbm9yZSByZWdleHA9Ik5vIGAuY2xhc3NgIGZpbGVzIHdlcmUgZm91bmQg
aW4gcHJvamVjdCIvPgorICA8L2lzc3VlPgogICA8IS0tIFRoZXNlIGFyZSBqdXN0IGZyb20gdGhl
IGR1bW15IEFuZHJvaWRNYW5pZmVzdC54bWwgd2UgdXNlIGZvciBsaW50aW5nLgogICAgICAgIEl0
J3MgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoaXMgZmlsZS4gLS0+CiAgIDxpc3N1ZSBpZD0i
TWlzc2luZ0FwcGxpY2F0aW9uSWNvbiIgc2V2ZXJpdHk9Imlnbm9yZSIvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2F1
dG9yb2xsZXIvcm9sbF9kZXBzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdG9vbHNfd2VicnRjL2F1dG9yb2xsZXIvcm9sbF9kZXBzLnB5CmluZGV4IDk5OTlj
NmY2YWZiZjZkZjFkYTExMGQxNTIwMzlmMmRhMjBjMzhkZjUuLmQzYThiZGJjYThmOWZiMjdmMmYx
MTM0Zjg4ZGQwNTFkOWVlMWRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9hdXRvcm9sbGVyL3JvbGxfZGVwcy5weQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvYXV0b3JvbGxlci9yb2xsX2RlcHMucHkKQEAgLTcwLDYgKzcwLDggQEAgQU5EUk9JRF9ERVBT
X0VORCA9IHInPT09IEFORFJPSURfREVQUyBHZW5lcmF0ZWQgQ29kZSBFbmQgPT09JwogIyBMb2Nh
dGlvbiBvZiBhdXRvbWljYWxseSBnYXRoZXJlZCBhbmRyb2lkIGRlcHMuCiBBTkRST0lEX0RFUFNf
UEFUSCA9ICdzcmMvdGhpcmRfcGFydHkvYW5kcm9pZF9kZXBzLycKIAorTk9USUZZX0VNQUlMID0g
J3dlYnJ0Yy10cm9vcGVyQGdyb3RhdGlvbnMuYXBwc3BvdG1haWwuY29tJworCiAKIHN5cy5wYXRo
LmFwcGVuZChvcy5wYXRoLmpvaW4oQ0hFQ0tPVVRfU1JDX0RJUiwgJ2J1aWxkJykpCiBpbXBvcnQg
ZmluZF9kZXBvdF90b29scwpAQCAtMjU2LDggKzI1OCw5IEBAIGRlZiBCdWlsZERlcHNlbnRyeURp
Y3QoZGVwc19kaWN0KToKIAogCiBkZWYgX0ZpbmRDaGFuZ2VkQ2lwZFBhY2thZ2VzKHBhdGgsIG9s
ZF9wa2dzLCBuZXdfcGtncyk6Ci0gIGFzc2VydCAoe3BbJ3BhY2thZ2UnXSBmb3IgcCBpbiBvbGRf
cGtnc30gPT0KLSAgICAgICAgICB7cFsncGFja2FnZSddIGZvciBwIGluIG5ld19wa2dzfSkKKyAg
cGtnc19lcXVhbCA9ICh7cFsncGFja2FnZSddIGZvciBwIGluIG9sZF9wa2dzfSA9PQorICAgICAg
e3BbJ3BhY2thZ2UnXSBmb3IgcCBpbiBuZXdfcGtnc30pCisgIGFzc2VydCBwa2dzX2VxdWFsLCAn
T2xkOiAlc1xuIE5ldzogJXMnICUgKG9sZF9wa2dzLCBuZXdfcGtncykKICAgZm9yIG9sZF9wa2cg
aW4gb2xkX3BrZ3M6CiAgICAgZm9yIG5ld19wa2cgaW4gbmV3X3BrZ3M6CiAgICAgICBvbGRfdmVy
c2lvbiA9IG9sZF9wa2dbJ3ZlcnNpb24nXQpAQCAtNTkyLDEwICs1OTUsMTEgQEAgZGVmIF9VcGxv
YWRDTChjb21taXRfcXVldWVfbW9kZSk6CiAgICAgLSAxOiBSdW4gdHJ5Ym90cyBidXQgZG8gbm90
IHN1Ym1pdCB0byBDUS4KICAgICAtIDA6IFNraXAgQ1EsIHVwbG9hZCBvbmx5LgogICAiIiIKLSAg
Y21kID0gWydnaXQnLCAnY2wnLCAndXBsb2FkJywgJy0tZm9yY2UnLCAnLS1ieXBhc3MtaG9va3Mn
XQorICBjbWQgPSBbJ2dpdCcsICdjbCcsICd1cGxvYWQnLCAnLS1mb3JjZScsICctLWJ5cGFzcy1o
b29rcycsICctLXNlbmQtbWFpbCddCisgIGNtZC5leHRlbmQoWyctLWNjJywgTk9USUZZX0VNQUlM
XSkKICAgaWYgY29tbWl0X3F1ZXVlX21vZGUgPj0gMjoKICAgICBsb2dnaW5nLmluZm8oJ1NlbmRp
bmcgdGhlIENMIHRvIHRoZSBDUS4uLicpCi0gICAgY21kLmV4dGVuZChbJy0tdXNlLWNvbW1pdC1x
dWV1ZScsICctLXNlbmQtbWFpbCddKQorICAgIGNtZC5leHRlbmQoWyctLXVzZS1jb21taXQtcXVl
dWUnXSkKICAgZWxpZiBjb21taXRfcXVldWVfbW9kZSA+PSAxOgogICAgIGxvZ2dpbmcuaW5mbygn
U3RhcnRpbmcgQ1EgZHJ5IHJ1bi4uLicpCiAgICAgY21kLmV4dGVuZChbJy0tY3EtZHJ5LXJ1bidd
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL2NvdmVyYWdlL2dlbmVyYXRlX2NvdmVyYWdlX2NvbW1hbmQucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvY292ZXJh
Z2UvZ2VuZXJhdGVfY292ZXJhZ2VfY29tbWFuZC5weQppbmRleCBhNDAyZjM4ZGE3ZDQ1ODkzZGJh
NzdkMzJhZGM4M2VhY2IzMTJkMDczLi44NTY2NjY4MTZkZmYxNjU5ZDJmNjgxYTYyODA3ZjQ3NzI3
OGMzZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90b29sc193ZWJydGMvY292ZXJhZ2UvZ2VuZXJhdGVfY292ZXJhZ2VfY29tbWFuZC5weQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvY292ZXJhZ2UvZ2VuZXJhdGVfY292ZXJhZ2VfY29tbWFuZC5weQpAQCAtMjIsMTMgKzIyLDEz
IEBAIFRFU1RTID0gWwogICAndmlkZW9fZW5naW5lX3Rlc3RzJywKICAgJ3Rvb2xzX3VuaXR0ZXN0
cycsCiAgICd0ZXN0X3N1cHBvcnRfdW5pdHRlc3RzJywKKyAgJ3Nsb3dfdGVzdHMnLAogICAnc3lz
dGVtX3dyYXBwZXJzX3VuaXR0ZXN0cycsCiAgICdydGNfdW5pdHRlc3RzJywKICAgJ3J0Y19zdGF0
c191bml0dGVzdHMnLAogICAncnRjX3BjX3VuaXR0ZXN0cycsCiAgICdydGNfbWVkaWFfdW5pdHRl
c3RzJywKICAgJ3BlZXJjb25uZWN0aW9uX3VuaXR0ZXN0cycsCi0gICdvcnRjX3VuaXR0ZXN0cycs
CiAgICdtb2R1bGVzX3VuaXR0ZXN0cycsCiAgICdtb2R1bGVzX3Rlc3RzJywKICAgJ2xvd19iYW5k
d2lkdGhfYXVkaW9fdGVzdCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvY292ZXJhZ2UvZ2VuZXJhdGVfaW9zX2NvdmVy
YWdlX2NvbW1hbmQucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvY292ZXJhZ2UvZ2VuZXJhdGVfaW9zX2NvdmVyYWdlX2NvbW1hbmQucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjgxZWUyYzYyYjBhNzVkMmU5YWNlOWMyYWZjOTVmZjZkYjYyYzhkNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rvb2xzX3dlYnJ0Yy9jb3ZlcmFnZS9nZW5lcmF0ZV9pb3NfY292ZXJhZ2VfY29tbWFuZC5weQpA
QCAtMCwwICsxLDE3NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoYykg
MjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMK
KyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZQorIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290
IG9mIHRoZSBzb3VyY2UKKyMgdHJlZS4gQW4gYWRkaXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVy
dHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAorIyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxs
IGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisjIGJlIGZvdW5kIGluIHRoZSBBVVRI
T1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorCisiIiJHZW5lcmF0ZXMg
Y29tbWFuZC1saW5lIGluc3RydWN0aW9ucyB0byBwcm9kdWNlIG9uZS10aW1lIGlPUyBjb3ZlcmFn
ZSB1c2luZworY292ZXJhZ2UucHkuCisKK1RoaXMgc2NyaXB0IGlzIHVzYWJsZSBmb3IgYm90aCBy
ZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvci4KK0J1dCBmb3IgcmVhbCBkZXZpY2VzIGFjdHVhbCBl
eGVjdXRpb24gc2hvdWxkIGJlIGRvbmUgbWFudWFsbHkgZnJvbSBYY29kZQorYW5kIGNvdmVyYWdl
LnByb2ZyYXcgZmlsZXMgc2hvdWxkIGJlIGFsc28gY29waWVkIG1hbnVhbGx5IGZyb20gdGhlIGRl
dmljZS4KKworQWRkaXRpb25hbCBwcmVyZXF1aXNpdGVzOgorCisxLiBYY29kZSAxMCsgd2l0aCBp
UGhvbmUgU2ltdWxhdG9yIFNESy4gQ2FuIGJlIGluc3RhbGxlZCBieSBjb21tYW5kOgorICAgJCBt
YWNfdG9vbGNoYWluIGluc3RhbGwgLWtpbmQgaW9zIC14Y29kZS12ZXJzaW9uIDEwbDIzMm0gXAor
ICAgICAtb3V0cHV0LWRpciBidWlsZC9tYWNfZmlsZXMvWGNvZGUuYXBwCisKKzIuIEZvciBjb21w
dXRpbmcgY292ZXJhZ2Ugb24gcmVhbCBkZXZpY2UgeW91IHByb2JhYmx5IGFsc28gbmVlZCB0byBh
cHBseQorZm9sbG93aW5nIHBhdGNoIHRvIGNvZGVfY292ZXJhZ2UvY292ZXJhZ2UucHkgc2NyaXB0
OgorCis9PT09PT09PT09IEJFR0lOTklORyBPRiBQQVRDSCA9PT09PT09PT09CistLS0gYS9jb2Rl
X2NvdmVyYWdlL2NvdmVyYWdlLnB5CisrKysgYi9jb2RlX2NvdmVyYWdlL2NvdmVyYWdlLnB5CitA
QCAtNjkzLDggKzY5Myw3IEBAIGRlZiBfQWRkQXJjaEFyZ3VtZW50Rm9ySU9TSWZOZWVkZWQoY21k
X2xpc3QsIG51bV9hcmNocyk6CisgICB0byB1c2UsIGFuZCBvbmUgYXJjaGl0ZWN0dXJlIG5lZWRz
IHRvIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBiaW5hcnkuCisgICAiIiAiCitpZiBfSXNJT1MoKToK
Ky0gICAgY21kX2xpc3QuZXh0ZW5kKFsnLWFyY2g9eDg2XzY0J10gKiBudW1fYXJjaHMpCisrICAg
IGNtZF9saXN0LmV4dGVuZChbJy1hcmNoPWFybTY0J10gKiBudW1fYXJjaHMpCisKKworZGVmIF9H
ZXRCaW5hcnlQYXRoKGNvbW1hbmQpOgorQEAgLTgzNiw4ICs4MzUsOCBAQCBkZWYgX0dldEJpbmFy
eVBhdGhzRnJvbVRhcmdldHModGFyZ2V0cywgYnVpbGRfZGlyKToKKyAgYmluYXJ5X3BhdGggPSBv
cy5wYXRoLmpvaW4oYnVpbGRfZGlyLCB0YXJnZXQpCisgIGlmIGNvdmVyYWdlX3V0aWxzLkdldEhv
c3RQbGF0Zm9ybSgpID09ICd3aW4nOgorICAgIGJpbmFyeV9wYXRoICs9ICcuZXhlJworKyAgICBl
bGlmIGNvdmVyYWdlX3V0aWxzLkdldEhvc3RQbGF0Zm9ybSgpID09ICdtYWMnOgorKyAgICAgIGJp
bmFyeV9wYXRoICs9ICcuYXBwLyVzJyAlIHRhcmdldAorCitpZiBvcy5wYXRoLmV4aXN0cyhiaW5h
cnlfcGF0aCk6CisgIGJpbmFyeV9wYXRocy5hcHBlbmQoYmluYXJ5X3BhdGgpCis9PT09PT09PT09
IEVORElORyBPRiBQQVRDSCA9PT09PT09PT09CisKKyIiIgorCitpbXBvcnQgc3lzCisKK0RJUkVD
VE9SWSA9ICdvdXQvY292ZXJhZ2UnCisKK1RFU1RTID0gWworICAnYXVkaW9fZGVjb2Rlcl91bml0
dGVzdHMnLAorICAnY29tbW9uX2F1ZGlvX3VuaXR0ZXN0cycsCisgICdjb21tb25fdmlkZW9fdW5p
dHRlc3RzJywKKyAgJ21vZHVsZXNfdGVzdHMnLAorICAnbW9kdWxlc191bml0dGVzdHMnLAorICAn
cnRjX21lZGlhX3VuaXR0ZXN0cycsCisgICdydGNfcGNfdW5pdHRlc3RzJywKKyAgJ3J0Y19zdGF0
c191bml0dGVzdHMnLAorICAncnRjX3VuaXR0ZXN0cycsCisgICdzbG93X3Rlc3RzJywKKyAgJ3N5
c3RlbV93cmFwcGVyc191bml0dGVzdHMnLAorICAndGVzdF9zdXBwb3J0X3VuaXR0ZXN0cycsCisg
ICd0b29sc191bml0dGVzdHMnLAorICAndmlkZW9fY2FwdHVyZV90ZXN0cycsCisgICd2aWRlb19l
bmdpbmVfdGVzdHMnLAorICAnd2VicnRjX25vbnBhcmFsbGVsX3Rlc3RzJywKK10KKworWENfVEVT
VFMgPSBbCisgICdhcHBydGNtb2JpbGVfdGVzdHMnLAorICAnc2RrX2ZyYW1ld29ya191bml0dGVz
dHMnLAorICAnc2RrX3VuaXR0ZXN0cycsCitdCisKKworZGVmIEZvcm1hdElvc3NpbVRlc3QodGVz
dF9uYW1lLCBpc194Y3Rlc3Q9RmFsc2UpOgorICBhcmdzID0gWyclcy8lcy5hcHAnICUgKERJUkVD
VE9SWSwgdGVzdF9uYW1lKV0KKyAgaWYgaXNfeGN0ZXN0OgorICAgIGFyZ3MgKz0gWyclcy8lc19t
b2R1bGUueGN0ZXN0JyAlIChESVJFQ1RPUlksIHRlc3RfbmFtZSldCisKKyAgcmV0dXJuICctYyBc
JyVzL2lvc3NpbSAlc1wnJyAlIChESVJFQ1RPUlksICcgJy5qb2luKGFyZ3MpKQorCisKK2RlZiBH
ZXRHTkFyZ3MoaXNfc2ltdWxhdG9yKToKKyAgdGFyZ2V0X2NwdSA9ICd4NjQnIGlmIGlzX3NpbXVs
YXRvciBlbHNlICdhcm02NCcKKyAgcmV0dXJuIChbXSArCisgICAgICAgICAgWyd0YXJnZXRfb3M9
ImlvcyInXSArCisgICAgICAgICAgWyd0YXJnZXRfY3B1PSIlcyInICUgdGFyZ2V0X2NwdV0gKwor
ICAgICAgICAgIFsndXNlX2NsYW5nX2NvdmVyYWdlPXRydWUnXSArCisgICAgICAgICAgWydpc19j
b21wb25lbnRfYnVpbGQ9ZmFsc2UnXSArCisgICAgICAgICAgWydkY2hlY2tfYWx3YXlzX29uPXRy
dWUnXSkKKworCitkZWYgR2VuZXJhdGVJT1NTaW11bGF0b3JDb21tYW5kKCk6CisgIGduX2FyZ3Nf
c3RyaW5nID0gJyAnLmpvaW4oR2V0R05BcmdzKGlzX3NpbXVsYXRvcj1UcnVlKSkKKyAgZ25fY21k
ID0gWydnbicsICdnZW4nLCBESVJFQ1RPUlksICctLWFyZ3M9XCclc1wnJyAlIGduX2FyZ3Nfc3Ry
aW5nXQorCisgIGNvdmVyYWdlX2NtZCA9ICgKKyAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJ3Rvb2xz
L2NvZGVfY292ZXJhZ2UvY292ZXJhZ2UucHknXSArCisgICAgICBbIiVzLmFwcCIgJSB0IGZvciB0
IGluIFhDX1RFU1RTICsgVEVTVFNdICsKKyAgICAgIFsnLWIgJXMnICUgRElSRUNUT1JZLCAnLW8g
b3V0L3JlcG9ydCddICsKKyAgICAgIFsnLWk9XCcuKi9vdXQvLip8LiovdGhpcmRfcGFydHkvLip8
Lip0ZXN0LipcJyddICsKKyAgICAgIFtGb3JtYXRJb3NzaW1UZXN0KHQsIGlzX3hjdGVzdD1UcnVl
KSBmb3IgdCBpbiBYQ19URVNUU10gKworICAgICAgW0Zvcm1hdElvc3NpbVRlc3QodCwgaXNfeGN0
ZXN0PUZhbHNlKSBmb3IgdCBpbiBURVNUU10KKyAgKQorCisgIHByaW50ICdUbyBnZXQgY29kZSBj
b3ZlcmFnZSB1c2luZyBpT1Mgc2ltdWxhdG9yIGp1c3QgcnVuIGZvbGxvd2luZyBjb21tYW5kczon
CisgIHByaW50ICcnCisgIHByaW50ICcgJy5qb2luKGduX2NtZCkKKyAgcHJpbnQgJycKKyAgcHJp
bnQgJyAnLmpvaW4oY292ZXJhZ2VfY21kKQorICByZXR1cm4gMAorCisKK2RlZiBHZW5lcmF0ZUlP
U0RldmljZUNvbW1hbmQoKToKKyAgZ25fYXJnc19zdHJpbmcgPSAnICcuam9pbihHZXRHTkFyZ3Mo
aXNfc2ltdWxhdG9yPUZhbHNlKSkKKworICBjb3ZlcmFnZV9yZXBvcnRfY21kID0gKAorICAgICAg
W3N5cy5leGVjdXRhYmxlLCAndG9vbHMvY29kZV9jb3ZlcmFnZS9jb3ZlcmFnZS5weSddICsKKyAg
ICAgIFsnJXMuYXBwJyAlIHQgZm9yIHQgaW4gVEVTVFNdICsKKyAgICAgIFsnLWIgJXMnICUgRElS
RUNUT1JZXSArCisgICAgICBbJy1vIG91dC9yZXBvcnQnXSArCisgICAgICBbJy1wICVzL21lcmdl
ZC5wcm9mZGF0YScgJSBESVJFQ1RPUlldICsKKyAgICAgIFsnLWk9XCcuKi9vdXQvLip8LiovdGhp
cmRfcGFydHkvLip8Lip0ZXN0LipcJyddCisgICkKKworICBwcmludCAnQ29tcHV0aW5nIGNvZGUg
Y292ZXJhZ2UgZm9yIHJlYWwgaU9TIGRldmljZSBpcyBhIGxpdHRsZSBiaXQgdGVkaW91cy4nCisg
IHByaW50ICcnCisgIHByaW50ICdZb3Ugd2lsbCBuZWVkOicKKyAgcHJpbnQgJycKKyAgcHJpbnQg
JzEuIEdlbmVyYXRlIHhjb2RlIHByb2plY3QgYW5kIG9wZW4gaXQgd2l0aCBYY29kZSAxMCs6Jwor
ICBwcmludCAnICBnbiBnZW4gJXMgLS1pZGU9eGNvZGUgLS1hcmdzPVwnJXNcJycgJSAoRElSRUNU
T1JZLCBnbl9hcmdzX3N0cmluZykKKyAgcHJpbnQgJyAgb3BlbiAlcy9hbGwueGN3b3Jrc3BhY2Un
ICUgRElSRUNUT1JZCisgIHByaW50ICcnCisgIHByaW50ICcyLiBFeGVjdXRlIHRoZXNlIFJ1biB0
YXJnZXRzIG1hbnVhbGx5IHdpdGggWGNvZGUgUnVuIGJ1dHRvbiBhbmQgJworICBwcmludCAnbWFu
dWFsbHkgc2F2ZSBnZW5lcmF0ZWQgY292ZXJhZ2UucHJvZnJhdyBmaWxlIHRvICVzOicgJSBESVJF
Q1RPUlkKKyAgcHJpbnQgJ1xuJy5qb2luKCctICVzJyAlIHQgZm9yIHQgaW4gVEVTVFMpCisgIHBy
aW50ICcnCisgIHByaW50ICczLiBFeGVjdXRlIHRoZXNlIFRlc3QgdGFyZ2V0cyBtYW51YWxseSB3
aXRoIFhjb2RlIFRlc3QgYnV0dG9uIGFuZCAnCisgIHByaW50ICdtYW51YWxseSBzYXZlIGdlbmVy
YXRlZCBjb3ZlcmFnZS5wcm9mcmF3IGZpbGUgdG8gJXM6JyAlIERJUkVDVE9SWQorICBwcmludCAn
XG4nLmpvaW4oJy0gJXMnICUgdCBmb3IgdCBpbiBYQ19URVNUUykKKyAgcHJpbnQgJycKKyAgcHJp
bnQgJzQuIE1lcmdlICoucHJvZnJhdyBmaWxlcyB0byAqLnByb2ZkYXRhIHVzaW5nIGxsdm0tcHJv
ZmRhdGEgdG9vbDonCisgIHByaW50ICgnICBidWlsZC9tYWNfZmlsZXMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9Ub29sY2hhaW5zLycgKworICAgICAgICAgJ1hjb2RlRGVmYXVsdC54Y3Rv
b2xjaGFpbi91c3IvYmluL2xsdm0tcHJvZmRhdGEgbWVyZ2UgJyArCisgICAgICAgICAnLW8gJXMv
bWVyZ2VkLnByb2ZkYXRhICcgJSBESVJFQ1RPUlkgKworICAgICAgICAgJy1zcGFyc2U9dHJ1ZSAl
cy8qLnByb2ZyYXcnICUgRElSRUNUT1JZKQorICBwcmludCAnJworICBwcmludCAnNS4gR2VuZXJh
dGUgY292ZXJhZ2UgcmVwb3J0OicKKyAgcHJpbnQgJyAgJyArICcgJy5qb2luKGNvdmVyYWdlX3Jl
cG9ydF9jbWQpCisgIHJldHVybiAwCisKKworZGVmIE1haW4oKToKKyAgaWYgbGVuKHN5cy5hcmd2
KSA8IDI6CisgICAgcHJpbnQgJ1BsZWFzZSBzcGVjaWZ5IHR5cGUgb2YgY292ZXJhZ2U6JworICAg
IHByaW50ICcgICVzIHNpbXVsYXRvcicgJSBzeXMuYXJndlswXQorICAgIHByaW50ICcgICVzIGRl
dmljZScgJSBzeXMuYXJndlswXQorICBlbGlmIHN5cy5hcmd2WzFdID09ICdzaW11bGF0b3InOgor
ICAgIEdlbmVyYXRlSU9TU2ltdWxhdG9yQ29tbWFuZCgpCisgIGVsaWYgc3lzLmFyZ3ZbMV0gPT0g
J2RldmljZSc6CisgICAgR2VuZXJhdGVJT1NEZXZpY2VDb21tYW5kKCkKKyAgZWxzZToKKyAgICBw
cmludCAnVW5zdXBwb3J0ZWQgdHlwZSBvZiBjb3ZlcmFnZScKKworICByZXR1cm4gMAorCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICBzeXMuZXhpdChNYWluKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvZ25f
Y2hlY2tfYXV0b2ZpeC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rvb2xzX3dlYnJ0Yy9nbl9jaGVja19hdXRvZml4LnB5CmluZGV4IGI5Mzk2MzZkMGM4MzFl
OTI4NzcyMzg5YWI1ZjE5MTU1ZWRkZWZhNmYuLmU0NGY3MTIyZGZmZjllZjAzN2NiYzlkNDYwNjJj
Y2M5NDYyYTc1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9nbl9jaGVja19hdXRvZml4LnB5CisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9nbl9jaGVja19h
dXRvZml4LnB5CkBAIC0zMSw2ICszMSw5IEBAIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1
bHRkaWN0CiAKIFNDUklQVF9ESVIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9f
ZmlsZV9fKSkKIAorQ0hST01JVU1fRElSUyA9IFsnYmFzZScsICdidWlsZCcsICdidWlsZHRvb2xz
JywKKyAgICAgICAgICAgICAgICAgJ3Rlc3RpbmcnLCAndGhpcmRfcGFydHknLCAndG9vbHMnXQor
CiBUQVJHRVRfUkUgPSByZS5jb21waWxlKAogICAgIHInKD9QPGluZGVudGF0aW9uX2xldmVsPlxz
KilcdypcKCIoP1A8dGFyZ2V0X25hbWU+XHcqKSJcKSB7JCcpCiAKQEAgLTg4LDIyICs5MSw0OCBA
QCBkZWYgRml4RXJyb3JzKGZpbGVuYW1lLCBtaXNzaW5nX2RlcHMsIGRlbGV0ZWRfc291cmNlcyk6
CiAKICAgUnVuKFsnZ24nLCAnZm9ybWF0JywgZmlsZW5hbWVdKQogCitkZWYgRmlyc3ROb25FbXB0
eShpdGVyYWJsZSk6CisgICIiIlJldHVybiBmaXJzdCBpdGVtIHdoaWNoIGV2YWx1YXRlcyB0byBU
cnVlLCBvciBmYWxsYmFjayB0byBOb25lLiIiIgorICByZXR1cm4gbmV4dCgoeCBmb3IgeCBpbiBp
dGVyYWJsZSBpZiB4KSwgTm9uZSkKKwogZGVmIFJlYmFzZShiYXNlX3BhdGgsIGRlcGVuZGVuY3lf
cGF0aCwgZGVwZW5kZW5jeSk6Ci0gIGJhc2VfcGF0aCA9IGJhc2VfcGF0aC5zcGxpdChvcy5wYXRo
LnNlcCkKLSAgZGVwZW5kZW5jeV9wYXRoID0gZGVwZW5kZW5jeV9wYXRoLnNwbGl0KG9zLnBhdGgu
c2VwKQotCi0gIGZpcnN0X2RpZmZlcmVuY2UgPSBOb25lCi0gIHNob3J0ZXN0X2xlbmd0aCA9IG1p
bihsZW4oZGVwZW5kZW5jeV9wYXRoKSwgbGVuKGJhc2VfcGF0aCkpCi0gIGZvciBpIGluIHJhbmdl
KHNob3J0ZXN0X2xlbmd0aCk6Ci0gICAgaWYgZGVwZW5kZW5jeV9wYXRoW2ldICE9IGJhc2VfcGF0
aFtpXToKLSAgICAgIGZpcnN0X2RpZmZlcmVuY2UgPSBpCi0gICAgICBicmVhawotCi0gIGZpcnN0
X2RpZmZlcmVuY2UgPSBmaXJzdF9kaWZmZXJlbmNlIG9yIHNob3J0ZXN0X2xlbmd0aAotICBiYXNl
X3BhdGggPSBiYXNlX3BhdGhbZmlyc3RfZGlmZmVyZW5jZTpdCi0gIGRlcGVuZGVuY3lfcGF0aCA9
IGRlcGVuZGVuY3lfcGF0aFtmaXJzdF9kaWZmZXJlbmNlOl0KLSAgcmV0dXJuIChvcy5wYXRoLnNl
cC5qb2luKChbJy4uJ10gKiBsZW4oYmFzZV9wYXRoKSkgKyBkZXBlbmRlbmN5X3BhdGgpICsKLSAg
ICAgICAgICAnOicgKyBkZXBlbmRlbmN5KQorICAiIiJBZGFwdCBwYXRocyBzbyB0aGV5IHdvcmsg
Ym90aCBpbiBzdGFuZC1hbG9uZSBXZWJSVEMgYW5kIENocm9taXVtIHRyZWUuCisKKyAgVG8gY29w
ZSB3aXRoIHZhcnlpbmcgdG9wLWxldmVsIGRpcmVjdG9yeSAoV2ViUlRDIFZTIENocm9taXVtKSwg
d2UgdXNlOgorICAgICogcmVsYXRpdmUgcGF0aHMgZm9yIFdlYlJUQyBtb2R1bGVzLgorICAgICog
YWJzb2x1dGUgcGF0aHMgZm9yIHNoYXJlZCBvbmVzLgorICBFLmcuICcvL2NvbW1vbl9hdWRpby8u
Li4nIC0+ICcuLi8uLi9jb21tb25fYXVkaW8vJworICAgICAgICcvL3RoaXJkX3BhcnR5Ly4uLicg
cmVtYWlucyBhcyBpcy4KKworICBBcmdzOgorICAgIGJhc2VfcGF0aDogY3VycmVudCBtb2R1bGUg
cGF0aCAgKEUuZy4gJy8vdmlkZW8nKQorICAgIGRlcGVuZGVuY3lfcGF0aDogcGF0aCBmcm9tIHJv
b3QgKEUuZy4gJy8vcnRjX2Jhc2UvdGltZScpCisgICAgZGVwZW5kZW5jeTogdGFyZ2V0IGl0c2Vs
ZiAgICAgICAoRS5nLiAndGltZXN0YW1wX2V4dHJhcG9sYXRvcicpCisKKyAgUmV0dXJuczoKKyAg
ICBGdWxsIHRhcmdldCBwYXRoIChFLmcuICcuLi9ydGNfYmFzZS90aW1lOnRpbWVzdGFtcF9leHRy
YXBvbGF0b3InKS4KKyAgIiIiCisKKyAgcm9vdCA9IEZpcnN0Tm9uRW1wdHkoZGVwZW5kZW5jeV9w
YXRoLnNwbGl0KCcvJykpCisgIGlmIHJvb3QgaW4gQ0hST01JVU1fRElSUzoKKyAgICAjIENocm9t
aXVtIHBhdGhzIG11c3QgcmVtYWluIGFic29sdXRlLiBFLmcuIC8vdGhpcmRfcGFydHkvL2Fic2Vp
bC1jcHAuLi4KKyAgICByZWJhc2VkID0gZGVwZW5kZW5jeV9wYXRoCisgIGVsc2U6CisgICAgYmFz
ZV9wYXRoID0gYmFzZV9wYXRoLnNwbGl0KG9zLnBhdGguc2VwKQorICAgIGRlcGVuZGVuY3lfcGF0
aCA9IGRlcGVuZGVuY3lfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKKworICAgIGZpcnN0X2RpZmZl
cmVuY2UgPSBOb25lCisgICAgc2hvcnRlc3RfbGVuZ3RoID0gbWluKGxlbihkZXBlbmRlbmN5X3Bh
dGgpLCBsZW4oYmFzZV9wYXRoKSkKKyAgICBmb3IgaSBpbiByYW5nZShzaG9ydGVzdF9sZW5ndGgp
OgorICAgICAgaWYgZGVwZW5kZW5jeV9wYXRoW2ldICE9IGJhc2VfcGF0aFtpXToKKyAgICAgICAg
Zmlyc3RfZGlmZmVyZW5jZSA9IGkKKyAgICAgICAgYnJlYWsKKworICAgIGZpcnN0X2RpZmZlcmVu
Y2UgPSBmaXJzdF9kaWZmZXJlbmNlIG9yIHNob3J0ZXN0X2xlbmd0aAorICAgIGJhc2VfcGF0aCA9
IGJhc2VfcGF0aFtmaXJzdF9kaWZmZXJlbmNlOl0KKyAgICBkZXBlbmRlbmN5X3BhdGggPSBkZXBl
bmRlbmN5X3BhdGhbZmlyc3RfZGlmZmVyZW5jZTpdCisgICAgcmViYXNlZCA9IG9zLnBhdGguc2Vw
LmpvaW4oKFsnLi4nXSAqIGxlbihiYXNlX3BhdGgpKSArIGRlcGVuZGVuY3lfcGF0aCkKKyAgcmV0
dXJuIHJlYmFzZWQgKyAnOicgKyBkZXBlbmRlbmN5CiAKIGRlZiBtYWluKCk6CiAgIGRlbGV0ZWRf
c291cmNlcyA9IHNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TMzJfRGVidWcu
anNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9EZWJ1Zy5qc29uCmluZGV4IGQyOTY2ZWMzYWQ0
ZDY3ZWNlMGU4N2VkZjJiYzViZDViNmFhNTJmYWQuLmIxNDgwOWZmM2Q0ZWZmYzNkYzc3M2JlOWJh
ZTQzM2M0NTdhMzgxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9EZWJ1Zy5q
c29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xz
X3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9EZWJ1Zy5qc29uCkBAIC0xLDYgKzEsNyBA
QAogewogICAiY29tbWVudHMiOiBbCi0gICAgIkJ1aWxkZXIgZm9yIDMyLWJpdCBkZXZpY2VzLiIK
KyAgICAiQnVpbGRlciBmb3IgMzItYml0IGRldmljZXMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNh
Y2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNp
b24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2Fy
Z3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TMzJfUmVsZWFzZS5qc29uIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lv
cy9jbGllbnQud2VicnRjL2lPUzMyX1JlbGVhc2UuanNvbgppbmRleCBlNzJhMjI5MTc4N2M3MGY5
ZTMwMWI3OGE2NmRmNTZhMTRjZjNlNGE1Li45NzI2MzI1NmRlOTkxOWM5YjFmN2U5MzJiYmY0ZGQ0
Y2RlZjhmMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TMzJfUmVsZWFzZS5qc29u
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9SZWxlYXNlLmpzb24KQEAgLTEsNiArMSw3IEBA
CiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiQnVpbGRlciBmb3IgMzItYml0IGRldmljZXMuIgor
ICAgICJCdWlsZGVyIGZvciAzMi1iaXQgZGV2aWNlcy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2Fj
aGUgZW50cnkgaW4gY3ItYnVpbGRidWNrZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lv
bi4iCiAgIF0sCiAgICJ4Y29kZSBidWlsZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJn
cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1MzMl9TaW1fRGVidWdfKGlPU185
LjApLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29s
c193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TMzJfU2ltX0RlYnVnXyhpT1NfOS4wKS5qc29u
CmluZGV4IDdhNTZkNDYxODA3NTA2OGNlYjc0YjExNDQxOGMyNGZhNjZiN2NiNmEuLjAzYjI3MmJi
NTM0N2IzY2RkMjg5MDQ2OWUzMTM4YWQ0ZmFjOTE1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50Lndl
YnJ0Yy9pT1MzMl9TaW1fRGVidWdfKGlPU185LjApLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRj
L2lPUzMyX1NpbV9EZWJ1Z18oaU9TXzkuMCkuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNv
bW1lbnRzIjogWwotICAgICJUZXN0cyBmb3IgMzItYml0IGlPUyBzaW11bGF0b3JzLiIKKyAgICAi
VGVzdHMgZm9yIDMyLWJpdCBpT1Mgc2ltdWxhdG9ycy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2Fj
aGUgZW50cnkgaW4gY3ItYnVpbGRidWNrZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lv
bi4iCiAgIF0sCiAgICJ4Y29kZSBidWlsZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJn
cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9EZWJ1Zy5qc29uIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9j
bGllbnQud2VicnRjL2lPUzY0X0RlYnVnLmpzb24KaW5kZXggNjUzMmM5MGY1MDk3YmFiOGU2ZTNj
MGNkNjZkNmQ1ZjZjYzdmNWNmMi4uZjFmYjdmYTcxOTAxYTgwZDMzMzg5Mzk4MzA2MTA1MDE5Mjhi
ODE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X0RlYnVnLmpzb24KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lv
cy9jbGllbnQud2VicnRjL2lPUzY0X0RlYnVnLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJj
b21tZW50cyI6IFsKLSAgICAiQnVpbGRlciBmb3IgNjQtYml0IGRldmljZXMuIgorICAgICJCdWls
ZGVyIGZvciA2NC1iaXQgZGV2aWNlcy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50cnkg
aW4gY3ItYnVpbGRidWNrZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAgIF0s
CiAgICJ4Y29kZSBidWlsZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xz
X3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9SZWxlYXNlLmpzb24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53
ZWJydGMvaU9TNjRfUmVsZWFzZS5qc29uCmluZGV4IDhjYTQ2NGMzYzQzMDA1NTVmYzhhNjg5NjU4
YWE5Mjk4ZTJkMGRhNzQuLmMyNTU1YzZhMTcwZDQyMGE5Y2I0NmM0ZmY2MDNkZTI5MTcyZDQ2NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9SZWxlYXNlLmpzb24KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9j
bGllbnQud2VicnRjL2lPUzY0X1JlbGVhc2UuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNv
bW1lbnRzIjogWwotICAgICJCdWlsZGVyIGZvciA2NC1iaXQgZGV2aWNlcy4iCisgICAgIkJ1aWxk
ZXIgZm9yIDY0LWJpdCBkZXZpY2VzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBp
biBjci1idWlsZGJ1Y2tldC5jZmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwK
ICAgInhjb2RlIGJ1aWxkIHZlcnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzEwLjApLmpzb24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMv
aW9zL2NsaWVudC53ZWJydGMvaU9TNjRfU2ltX0RlYnVnXyhpT1NfMTAuMCkuanNvbgppbmRleCBl
NzU5ZDk1ZTM2ODZiOTcyYzUyNGQ5OGM5YTJkMDFkODA3NWJiNTYxLi5kOGE3MWY2NjVhMzQyYWQ5
MTM1MzdhZjgwYjYzMGQ0ODk3NjkxMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9T
NjRfU2ltX0RlYnVnXyhpT1NfMTAuMCkuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRf
U2ltX0RlYnVnXyhpT1NfMTAuMCkuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRz
IjogWwotICAgICJUZXN0cyBmb3IgNjQtYml0IGlPUyBzaW11bGF0b3JzLiIKKyAgICAiVGVzdHMg
Zm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50
cnkgaW4gY3ItYnVpbGRidWNrZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAg
IF0sCiAgICJ4Y29kZSBidWlsZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9pT1M2NF9TaW1fRGVidWdfKGlPU18xMS4wKS5q
c29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2Vi
cnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzExLjApLmpzb24KaW5k
ZXggM2RhZDkxYmE2NGY3ZTNmYWY3OGQ0MTg4NjI0YWQ0ODIzZTQ4YmMyNS4uYzMwMzA4OGI0NDk3
N2UxMDg1NmZkMzk0ZWUwOTlhNTRlY2ZjODlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRj
L2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzExLjApLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lP
UzY0X1NpbV9EZWJ1Z18oaU9TXzExLjApLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21t
ZW50cyI6IFsKLSAgICAiVGVzdHMgZm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRl
c3RzIGZvciA2NC1iaXQgaU9TIHNpbXVsYXRvcnMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hl
IGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24u
IgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3Mi
OiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJydGMvaU9TNjRfU2ltX0RlYnVnXyhpT1NfOS4w
KS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL2lvcy9jbGllbnQud2VicnRjL2lPUzY0X1NpbV9EZWJ1Z18oaU9TXzkuMCkuanNvbgpp
bmRleCBkMjdjZGFhNDVmNTQwYzU2YTA4MjdjZGE2YWFhNmY5MzlkZmJlZDc5Li5iY2Y1MmQ3Mjgz
MjZlY2IyNzhjNWQxMjQ0NmU3YjkxMzU5MjBkZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2NsaWVudC53ZWJy
dGMvaU9TNjRfU2ltX0RlYnVnXyhpT1NfOS4wKS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvY2xpZW50LndlYnJ0Yy9p
T1M2NF9TaW1fRGVidWdfKGlPU185LjApLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21t
ZW50cyI6IFsKLSAgICAiVGVzdHMgZm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRl
c3RzIGZvciA2NC1iaXQgaU9TIHNpbXVsYXRvcnMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hl
IGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24u
IgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3Mi
OiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvaW9zL2dlbmVyYXRlX21vZHVsZW1hcC5weSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvZ2VuZXJhdGVfbW9k
dWxlbWFwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1YmQzZDg3NWU3Y2QwYTA2MmM3NWZjMGEyZmYxM2ZjN2Qx
ZmU2NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2dlbmVyYXRlX21vZHVsZW1hcC5weQpAQCAtMCww
ICsxLDMyIEBACisjIENvcHlyaWdodCAoYykgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9y
cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyMgdHJlZS4gQW4gYWRk
aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor
IyBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisjIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNv
dXJjZSB0cmVlLgorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBzeXMKKworZGVmIEdlbmVyYXRl
TW9kdWxlbWFwKCk6CisgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0
aW9uPSdHZW5lcmF0ZSBtb2R1bGVtYXAnKQorICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbyIsICIt
LW91dCIsIHR5cGU9c3RyLCBoZWxwPSJPdXRwdXQgZmlsZS4iKQorICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItbiIsICItLW5hbWUiLCB0eXBlPXN0ciwgaGVscD0iTmFtZSBvZiBiaW5hcnkuIikKKwor
ICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgIHdpdGggb3BlbihhcmdzLm91dCwgInci
KSBhcyBvdXRmaWxlOgorICAgIG1vZHVsZV90ZW1wbGF0ZSA9ICdmcmFtZXdvcmsgbW9kdWxlICVz
IHtcbicgXAorICAgICAgICAgICAgICAgICAgICAgICcgIHVtYnJlbGxhIGhlYWRlciAiJXMuaCJc
bicgXAorICAgICAgICAgICAgICAgICAgICAgICdcbicgXAorICAgICAgICAgICAgICAgICAgICAg
ICcgIGV4cG9ydCAqXG4nIFwKKyAgICAgICAgICAgICAgICAgICAgICAnICBtb2R1bGUgKiB7IGV4
cG9ydCAqIH1cbicgXAorICAgICAgICAgICAgICAgICAgICAgICd9XG4nICUgKGFyZ3MubmFtZSwg
YXJncy5uYW1lKQorICAgIG91dGZpbGUud3JpdGUobW9kdWxlX3RlbXBsYXRlKQorICByZXR1cm4g
MAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIHN5cy5leGl0KEdlbmVyYXRlTW9k
dWxlbWFwKCkpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9E
ZWJ1Zy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9v
bHNfd2VicnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X0RlYnVnLmpzb24KaW5k
ZXggN2MzYjNjZWUxZGExMjhhZGM2YjNiY2EwODUzYTE4NGU1ZTRlM2IzMy4uYTk3ZDhiNzA2Zjgy
MTUwZmQyMzZlMTE4NTVhYjRiZDM3YTc3YWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC5jbGll
bnQud2VicnRjL2lPUzY0X0RlYnVnLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRj
L2lPUzY0X0RlYnVnLmpzb24KQEAgLTIxLDYgKzIxLDcgQEAKICAgInRlc3RzIjogWwogICAgIHsK
ICAgICAgICJpbmNsdWRlIjogInJlYWxfZGV2aWNlX3Rlc3RzLmpzb24iLAorICAgICAgImRldmlj
ZSB0eXBlIjogImlQaG9uZSA2cyIsCiAgICAgICAib3MiOiAiMTEuNC4xIiwKICAgICAgICJkaW1l
bnNpb25zIjogWwogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2ludGVybmFsLmNsaWVudC53ZWJy
dGMvaU9TNjRfUGVyZi5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X1BlcmYu
anNvbgppbmRleCBiNTM1NzY2MWE4NDI3YjIxY2YzZWIzNzIyNmM3MjY3NDk4ZjhkOWFiLi44OGJm
ZTc1MjY0YWQ1NmIyNTUyYWZkMDFiMzRiZmFiOWE5YTRiOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2ludGVy
bmFsLmNsaWVudC53ZWJydGMvaU9TNjRfUGVyZi5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50
LndlYnJ0Yy9pT1M2NF9QZXJmLmpzb24KQEAgLTIxLDEzICsyMSw4IEBACiAgICJ0ZXN0cyI6IFsK
ICAgICB7CiAgICAgICAiaW5jbHVkZSI6ICJwZXJmX3Rlc3RzLmpzb24iLAorICAgICAgImRldmlj
ZSB0eXBlIjogImlQaG9uZSA3IiwKICAgICAgICJvcyI6ICIxMS40LjEiLAotICAgICAgImRpbWVu
c2lvbnMiOiBbCi0gICAgICAgIHsKLSAgICAgICAgICAib3MiOiAiTWFjIiwKLSAgICAgICAgICAi
cG9vbCI6ICJDaHJvbWUiCi0gICAgICAgIH0KLSAgICAgIF0KICAgICB9CiAgIF0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2NF9SZWxlYXNlLmpzb24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL2lu
dGVybmFsLmNsaWVudC53ZWJydGMvaU9TNjRfUmVsZWFzZS5qc29uCmluZGV4IGFjODRkYjEwYmY1
YzYyMjhmMzdjMGY5OTJjZDgwODI2Zjc3N2M1NDQuLmQ3NWNkZTA3ZmY2ODFiYTY5ZDAyOTFlNGNi
MDk2ODI2MmMwYjY5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwuY2xpZW50LndlYnJ0Yy9pT1M2
NF9SZWxlYXNlLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC5jbGllbnQud2VicnRjL2lPUzY0X1JlbGVh
c2UuanNvbgpAQCAtMjIsNiArMjIsNyBAQAogICAidGVzdHMiOiBbCiAgICAgewogICAgICAgImlu
Y2x1ZGUiOiAicmVhbF9kZXZpY2VfdGVzdHMuanNvbiIsCisgICAgICAiZGV2aWNlIHR5cGUiOiAi
aVBob25lIDZzIiwKICAgICAgICJvcyI6ICIxMS40LjEiLAogICAgICAgImRpbWVuc2lvbnMiOiBb
CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvaW50ZXJuYWwudHJ5c2VydmVyLndlYnJ0Yy9pb3Nf
YXJtNjRfcGVyZi5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdG9vbHNfd2VicnRjL2lvcy9pbnRlcm5hbC50cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9w
ZXJmLmpzb24KaW5kZXggMDIzMGM3NGE5MmFkMDdkMTU4ZWYwNDg0MjNhNzY5NTM3OGU2ZDIzNy4u
MGMzMDU4MWRhMWRmMDEwNzZkODhiZjgzOGI1MDdjNDVkYjNlMmM3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9p
bnRlcm5hbC50cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9wZXJmLmpzb24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy9pbnRl
cm5hbC50cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9wZXJmLmpzb24KQEAgLTIzLDEyICsyMyw2
IEBACiAgICAgICAiaW5jbHVkZSI6ICJwZXJmX3RyeWJvdF90ZXN0cy5qc29uIiwKICAgICAgICJk
ZXZpY2UgdHlwZSI6ICJpUGhvbmUgNyIsCiAgICAgICAib3MiOiAiMTEuMC4zIiwKLSAgICAgICJk
aW1lbnNpb25zIjogWwotICAgICAgICB7Ci0gICAgICAgICAgIm9zIjogIk1hYyIsCi0gICAgICAg
ICAgInBvb2wiOiAiQ2hyb21lIgotICAgICAgICB9Ci0gICAgICBdCiAgICAgfQogICBdCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29s
c193ZWJydGMvaW9zL3Rlc3RzL2NvbW1vbl90ZXN0cy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90ZXN0cy9jb21tb25fdGVz
dHMuanNvbgppbmRleCA1ZWViNDA4Mzg3ZmVjNDczNzEyZDRjNjc5ZWFiYTgzYjFlNTJmMDZjLi43
NDU5NTAzZDdmMDY4MzI1MzliYWY0NzNmNDBjOGZhYzQzOTIyZDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Rl
c3RzL2NvbW1vbl90ZXN0cy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdGVzdHMvY29tbW9uX3Rlc3RzLmpzb24KQEAg
LTI3LDkgKzI3LDYgQEAKICAgICB7CiAgICAgICAiYXBwIjogIm1vZHVsZXNfdW5pdHRlc3RzIgog
ICAgIH0sCi0gICAgewotICAgICAgImFwcCI6ICJvcnRjX3VuaXR0ZXN0cyIKLSAgICB9LAogICAg
IHsKICAgICAgICJhcHAiOiAicnRjX21lZGlhX3VuaXR0ZXN0cyIKICAgICB9LApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRj
L2lvcy90ZXN0cy9yZWFsX2RldmljZV90ZXN0cy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90ZXN0cy9yZWFsX2RldmljZV90
ZXN0cy5qc29uCmluZGV4IDg0MTc0NzBkZGI4ODJlMjk4NTJjOTA0OGFlMGM3OWIxYmJlZDllM2Iu
LmRjZWU1MTY4OGQ2Y2Y5ZmQ1NWZhYTBhZTQ3MWVmMmJkNGY1MTQzNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3Mv
dGVzdHMvcmVhbF9kZXZpY2VfdGVzdHMuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Rlc3RzL3JlYWxfZGV2aWNlX3Rl
c3RzLmpzb24KQEAgLTEyLDkgKzEyLDYgQEAKICAgICB7CiAgICAgICAiYXBwIjogIm1vZHVsZXNf
dW5pdHRlc3RzIgogICAgIH0sCi0gICAgewotICAgICAgImFwcCI6ICJvcnRjX3VuaXR0ZXN0cyIK
LSAgICB9LAogICAgIHsKICAgICAgICJhcHAiOiAicnRjX3BjX3VuaXR0ZXN0cyIKICAgICB9LApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9v
bHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczMyX3NpbV9pb3M5X2RiZy5qc29uIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lv
cy90cnlzZXJ2ZXIud2VicnRjL2lvczMyX3NpbV9pb3M5X2RiZy5qc29uCmluZGV4IDI5YTExM2Q0
MTM4OGM3ZmViNmViOWViMzU4YzM0MDc1ZmMwMjVmZjEuLjFlYWNjOTI5NWZiMWE3MmJmY2NlMzZl
YWUyNzM5MjlkY2M4MjVkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3MzMl9z
aW1faW9zOV9kYmcuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zMzJfc2ltX2lvczlf
ZGJnLmpzb24KQEAgLTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVzdHMg
Zm9yIDMyLWJpdCBpT1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3RzIGZvciAzMi1iaXQgaU9TIHNp
bXVsYXRvcnMuIiwKKyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVj
a2V0LmNmZyB3aGVuIGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVp
bGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Ry
eXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lvczEwX2RiZy5qc29uIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2Vi
cnRjL2lvczY0X3NpbV9pb3MxMF9kYmcuanNvbgppbmRleCA2NDg0Y2ExMDUwZGUwZWFhNGYxOWQ4
MTAwNWJmMDVkMGI2N2Y2YTBhLi44Y2VjZjRhNDFlZjU5OWU1NWE4ZWE2M2NiNjZjZmQ3MjE2NWY3
OTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lvczEwX2RiZy5q
c29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xz
X3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3M2NF9zaW1faW9zMTBfZGJnLmpzb24KQEAg
LTEsNiArMSw3IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVzdHMgZm9yIDY0LWJpdCBp
T1Mgc2ltdWxhdG9ycy4iCisgICAgIlRlc3RzIGZvciA2NC1iaXQgaU9TIHNpbXVsYXRvcnMuIiwK
KyAgICAiTk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVu
IGNoYW5naW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6
ICIxMGwyMzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJy
dGMvaW9zNjRfc2ltX2lvczExX2RiZy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvczY0X3Np
bV9pb3MxMV9kYmcuanNvbgppbmRleCBiNTRmMjEyYWNiZDY4YWRjMWVkNDI2ZWI0MWU5ZjZhYzQ5
MGY5Zjk3Li4zYTVmN2MwY2Y2YjBmN2RkMDQxMzJkNWI0ZmZkYjk0MjI5ZTY2MjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJy
dGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lvczExX2RiZy5qc29uCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3Mv
dHJ5c2VydmVyLndlYnJ0Yy9pb3M2NF9zaW1faW9zMTFfZGJnLmpzb24KQEAgLTEsNiArMSw3IEBA
CiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiVGVzdHMgZm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9y
cy4iCisgICAgIlRlc3RzIGZvciA2NC1iaXQgaU9TIHNpbXVsYXRvcnMuIiwKKyAgICAiTk9URTog
VXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5naW5nIHhj
b2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwyMzJtIiwK
ICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2lt
X2lvczlfZGJnLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zNjRfc2ltX2lvczlfZGJnLmpz
b24KaW5kZXggZmRmYTdiMzgyZDVhZTJhMDlmMjlmMjllNTMxZTAzZmYxMTk0YzMxZi4uNmM5ODQ4
ZWU2ZGQ5Njg3MTU2NzI4MTBjYWIwZDVjMWVjNWI3MzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2
ZXIud2VicnRjL2lvczY0X3NpbV9pb3M5X2RiZy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0
Yy9pb3M2NF9zaW1faW9zOV9kYmcuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNvbW1lbnRz
IjogWwotICAgICJUZXN0cyBmb3IgNjQtYml0IGlPUyBzaW11bGF0b3JzLiIKKyAgICAiVGVzdHMg
Zm9yIDY0LWJpdCBpT1Mgc2ltdWxhdG9ycy4iLAorICAgICJOT1RFOiBVcGRhdGUgY2FjaGUgZW50
cnkgaW4gY3ItYnVpbGRidWNrZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVyc2lvbi4iCiAg
IF0sCiAgICJ4Y29kZSBidWlsZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25fYXJncyI6IFsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3NfYXJtNjRfZGJnLmpzb24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3Ry
eXNlcnZlci53ZWJydGMvaW9zX2FybTY0X2RiZy5qc29uCmluZGV4IDc1OTRjZDJhMzZkNjZlNmM4
ZGNlYjYwOTkyMjdjYTQ1ZmJlODBkMDIuLjQzYWRkNjcxMGU2YzU3MjlhMzIyZGM5MmJiYjE4NTU5
NzcwN2Y2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3NfYXJtNjRfZGJnLmpz
b24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9kYmcuanNvbgpAQCAtMSw2ICsx
LDcgQEAKIHsKICAgImNvbW1lbnRzIjogWwotICAgICJCdWlsZGVyIGZvciA2NC1iaXQgZGV2aWNl
cy4iCisgICAgIkJ1aWxkZXIgZm9yIDY0LWJpdCBkZXZpY2VzLiIsCisgICAgIk5PVEU6IFVwZGF0
ZSBjYWNoZSBlbnRyeSBpbiBjci1idWlsZGJ1Y2tldC5jZmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2
ZXJzaW9uLiIKICAgXSwKICAgInhjb2RlIGJ1aWxkIHZlcnNpb24iOiAiMTBsMjMybSIsCiAgICJn
bl9hcmdzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19hcm02NF9yZWwu
anNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dl
YnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3NfYXJtNjRfcmVsLmpzb24KaW5kZXggMDhhZTdl
MTk4MzMyMTI0YjMxZTQ1MzY0NjdlN2Y4MjY3MzljZjA4MC4uOTVhNTdlNTIyNjJlNTJhZTZmZWVl
OTVhMzVjZmJhZDc2ZGU1ZTQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19h
cm02NF9yZWwuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zX2FybTY0X3JlbC5qc29u
CkBAIC0xLDYgKzEsNyBAQAogewogICAiY29tbWVudHMiOiBbCi0gICAgIkJ1aWxkZXIgZm9yIDY0
LWJpdCBkZXZpY2VzLiIKKyAgICAiQnVpbGRlciBmb3IgNjQtYml0IGRldmljZXMuIiwKKyAgICAi
Tk9URTogVXBkYXRlIGNhY2hlIGVudHJ5IGluIGNyLWJ1aWxkYnVja2V0LmNmZyB3aGVuIGNoYW5n
aW5nIHhjb2RlIHZlcnNpb24uIgogICBdLAogICAieGNvZGUgYnVpbGQgdmVyc2lvbiI6ICIxMGwy
MzJtIiwKICAgImduX2FyZ3MiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9z
X2RiZy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9v
bHNfd2VicnRjL2lvcy90cnlzZXJ2ZXIud2VicnRjL2lvc19kYmcuanNvbgppbmRleCBlOWQwNmMy
YTc2MTQwMDQ4ODA5ZWJiMjM1YTQ2N2YwMmQ3MDI0Zjc4Li44YmU5ZTk1YzBmMGI1YWExY2QzMmI4
Yzk2ZTY2YWFkNTI1MmNjZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9zL3RyeXNlcnZlci53ZWJydGMvaW9zX2Ri
Zy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rv
b2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3NfZGJnLmpzb24KQEAgLTEsNiArMSw3
IEBACiB7CiAgICJjb21tZW50cyI6IFsKLSAgICAiQnVpbGRlciBmb3IgMzItYml0IGRldmljZXMu
IgorICAgICJCdWlsZGVyIGZvciAzMi1iaXQgZGV2aWNlcy4iLAorICAgICJOT1RFOiBVcGRhdGUg
Y2FjaGUgZW50cnkgaW4gY3ItYnVpbGRidWNrZXQuY2ZnIHdoZW4gY2hhbmdpbmcgeGNvZGUgdmVy
c2lvbi4iCiAgIF0sCiAgICJ4Y29kZSBidWlsZCB2ZXJzaW9uIjogIjEwbDIzMm0iLAogICAiZ25f
YXJncyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3NfcmVsLmpzb24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvaW9z
L3RyeXNlcnZlci53ZWJydGMvaW9zX3JlbC5qc29uCmluZGV4IDQ1MjFlZjUxNTM3MjE1NTc1OTM3
NmE3M2FiZWNjNTFmNTIwYjQyMDUuLmY2NDQ5NDBjN2M0MDBkOGQxOGZlZmM0NGFhODQ1MzU3M2Fm
YzBhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Rvb2xzX3dlYnJ0Yy9pb3MvdHJ5c2VydmVyLndlYnJ0Yy9pb3NfcmVsLmpzb24KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL2lv
cy90cnlzZXJ2ZXIud2VicnRjL2lvc19yZWwuanNvbgpAQCAtMSw2ICsxLDcgQEAKIHsKICAgImNv
bW1lbnRzIjogWwotICAgICJCdWlsZGVyIGZvciAzMi1iaXQgZGV2aWNlcy4iCisgICAgIkJ1aWxk
ZXIgZm9yIDMyLWJpdCBkZXZpY2VzLiIsCisgICAgIk5PVEU6IFVwZGF0ZSBjYWNoZSBlbnRyeSBp
biBjci1idWlsZGJ1Y2tldC5jZmcgd2hlbiBjaGFuZ2luZyB4Y29kZSB2ZXJzaW9uLiIKICAgXSwK
ICAgInhjb2RlIGJ1aWxkIHZlcnNpb24iOiAiMTBsMjMybSIsCiAgICJnbl9hcmdzIjogWwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL2xpYnMvZ2VuZXJhdGVfbGljZW5zZXMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbGlicy9nZW5lcmF0ZV9saWNlbnNlcy5w
eQppbmRleCA4OTJmYjQ2YzA1MTc4ZjRlNWI0OTU3NmFiNGRlNGUzNzc2MmUzNjRhLi5kMWE3NmE2
NGVlYzFhMzU0NjdmMWVkZTk4ZWVmN2Y5NjI3MzM5ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbGlicy9nZW5lcmF0
ZV9saWNlbnNlcy5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90b29sc193ZWJydGMvbGlicy9nZW5lcmF0ZV9saWNlbnNlcy5weQpAQCAtMzYsNyArMzYs
NiBAQCBMSUJfVE9fTElDRU5TRVNfRElDVCA9IHsKICAgICAnYmF6ZWwnOiBbJ3RoaXJkX3BhcnR5
L2JhemVsL0xJQ0VOU0UnXSwKICAgICAnYm9yaW5nc3NsJzogWyd0aGlyZF9wYXJ0eS9ib3Jpbmdz
c2wvc3JjL0xJQ0VOU0UnXSwKICAgICAnZXJyb3Jwcm9uZSc6IFsndGhpcmRfcGFydHkvZXJyb3Jw
cm9uZS9MSUNFTlNFJ10sCi0gICAgJ2V4cGF0JzogWyd0aGlyZF9wYXJ0eS9leHBhdC9maWxlcy9D
T1BZSU5HJ10sCiAgICAgJ2ZpYXQnOiBbJ3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvdGhpcmRf
cGFydHkvZmlhdC9MSUNFTlNFJ10sCiAgICAgJ2d1YXZhJzogWyd0aGlyZF9wYXJ0eS9ndWF2YS9M
SUNFTlNFJ10sCiAgICAgJ2lqYXInOiBbJ3RoaXJkX3BhcnR5L2lqYXIvTElDRU5TRSddLApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNf
d2VicnRjL21iL2duX2lzb2xhdGVfbWFwLnB5bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9nbl9pc29sYXRlX21hcC5weWwKaW5kZXgg
ZmVjYzU2YzM4ZTFkMWVhNjk0ODg5YjAwYjY2MTU0MDdlY2ViMGQxMy4uZDcyYmJkYzAwOTBhZjg0
OGJmODljMjZjOWVlM2IzMmQxN2FmNTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL2duX2lzb2xhdGVfbWFwLnB5
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193
ZWJydGMvbWIvZ25faXNvbGF0ZV9tYXAucHlsCkBAIC04MiwxMCArODIsNiBAQAogICAgICJsYWJl
bCI6ICIvL21vZHVsZXM6bW9kdWxlc191bml0dGVzdHMiLAogICAgICJ0eXBlIjogIndpbmRvd2Vk
X3Rlc3RfbGF1bmNoZXIiLAogICB9LAotICAib3J0Y191bml0dGVzdHMiOiB7Ci0gICAgImxhYmVs
IjogIi8vb3J0YzpvcnRjX3VuaXR0ZXN0cyIsCi0gICAgInR5cGUiOiAiY29uc29sZV90ZXN0X2xh
dW5jaGVyIiwKLSAgfSwKICAgInBlZXJjb25uZWN0aW9uX3VuaXR0ZXN0cyI6IHsKICAgICAibGFi
ZWwiOiAiLy9wYzpwZWVyY29ubmVjdGlvbl91bml0dGVzdHMiLAogICAgICJ0eXBlIjogImNvbnNv
bGVfdGVzdF9sYXVuY2hlciIsCkBAIC0xMDYsNiArMTAyLDEwIEBACiAgICAgImxhYmVsIjogIi8v
OnJ0Y191bml0dGVzdHMiLAogICAgICJ0eXBlIjogImNvbnNvbGVfdGVzdF9sYXVuY2hlciIsCiAg
IH0sCisgICJzbG93X3Rlc3RzIjogeworICAgICJsYWJlbCI6ICIvLzpzbG93X3Rlc3RzIiwKKyAg
ICAidHlwZSI6ICJjb25zb2xlX3Rlc3RfbGF1bmNoZXIiLAorICB9LAogICAic3lzdGVtX3dyYXBw
ZXJzX3VuaXR0ZXN0cyI6IHsKICAgICAibGFiZWwiOiAiLy9zeXN0ZW1fd3JhcHBlcnM6c3lzdGVt
X3dyYXBwZXJzX3VuaXR0ZXN0cyIsCiAgICAgInR5cGUiOiAiY29uc29sZV90ZXN0X2xhdW5jaGVy
IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Rvb2xzX3dlYnJ0Yy9tYi9tYi5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9tYi5weQppbmRleCA3ZjE5NmJiNzMzODQ2YzhjZjAw
MzFhZjExNzgyZjI1OTM5Njk5ZWI5Li40ODVmY2ViODU4Yzk4YWEzOWQyZTlmZmUyM2M2NjE0Zjdl
MGRkMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy90b29sc193ZWJydGMvbWIvbWIucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL21iLnB5CkBAIC04MzMsNiArODMzLDcg
QEAgY2xhc3MgTWV0YUJ1aWxkV3JhcHBlcihvYmplY3QpOgogICAgICAgJy4uLy4uL3Rlc3Rpbmcv
dGVzdF9lbnYucHknLAogICAgIF0KIAorICAgIG11c3RfcmV0cnkgPSBGYWxzZQogICAgIGlmIHRl
c3RfdHlwZSA9PSAnc2NyaXB0JzoKICAgICAgIGNtZGxpbmUgPSBbJy4uLy4uLycgKyBzZWxmLlRv
U3JjUmVsUGF0aChpc29sYXRlX21hcFt0YXJnZXRdWydzY3JpcHQnXSldCiAgICAgZWxpZiBpc19h
bmRyb2lkOgpAQCAtODc0LDEyICs4NzUsMjEgQEAgY2xhc3MgTWV0YUJ1aWxkV3JhcHBlcihvYmpl
Y3QpOgogICAgICAgICAgICAgIyBzbyBpdCBjYW4gZXhpdCBjbGVhbmx5IGFuZCByZXBvcnQgcmVz
dWx0cywgaW5zdGVhZCBvZiBiZWluZwogICAgICAgICAgICAgIyBpbnRlcnJ1cHRlZCBieSBzd2Fy
bWluZyBhbmQgbm90IHJlcG9ydGluZyBhbnl0aGluZy4KICAgICAgICAgICAgICctLXRpbWVvdXQ9
JXMnICUgdGltZW91dCwKLSAgICAgICAgICAgICctLXJldHJ5X2ZhaWxlZD0zJywKICAgICAgICAg
XQogICAgICAgICBpZiB0ZXN0X3R5cGUgPT0gJ25vbl9wYXJhbGxlbF9jb25zb2xlX3Rlc3RfbGF1
bmNoZXInOgogICAgICAgICAgICMgU3RpbGwgdXNlIHRoZSBndGVzdC1wYXJhbGxlbC13cmFwcGVy
LnB5IHNjcmlwdCBzaW5jZSB3ZSBuZWVkIGl0IHRvCiAgICAgICAgICAgIyBydW4gdGVzdHMgb24g
c3dhcm1pbmcsIGJ1dCBkb24ndCBleGVjdXRlIHRlc3RzIGluIHBhcmFsbGVsLgogICAgICAgICAg
IGNtZGxpbmUuYXBwZW5kKCctLXdvcmtlcnM9MScpCisgICAgICAgIG11c3RfcmV0cnkgPSBUcnVl
CisKKyAgICAgIGFzYW4gPSAnaXNfYXNhbj10cnVlJyBpbiB2YWxzWydnbl9hcmdzJ10KKyAgICAg
IGxzYW4gPSAnaXNfbHNhbj10cnVlJyBpbiB2YWxzWydnbl9hcmdzJ10KKyAgICAgIG1zYW4gPSAn
aXNfbXNhbj10cnVlJyBpbiB2YWxzWydnbl9hcmdzJ10KKyAgICAgIHRzYW4gPSAnaXNfdHNhbj10
cnVlJyBpbiB2YWxzWydnbl9hcmdzJ10KKyAgICAgIHNhbml0aXplciA9IGFzYW4gb3IgbHNhbiBv
ciBtc2FuIG9yIHRzYW4KKyAgICAgIGlmIG11c3RfcmV0cnkgYW5kIG5vdCBzYW5pdGl6ZXI6Cisg
ICAgICAgICMgUmV0cnkgd291bGQgaGlkZSBtb3N0IHNhbml0aXplcnMgZGV0ZWN0aW9ucy4KKyAg
ICAgICAgY21kbGluZS5hcHBlbmQoJy0tcmV0cnlfZmFpbGVkPTMnKQogCiAgICAgICBleGVjdXRh
YmxlX3ByZWZpeCA9ICcuXFwnIGlmIHNlbGYucGxhdGZvcm0gPT0gJ3dpbjMyJyBlbHNlICcuLycK
ICAgICAgIGV4ZWN1dGFibGVfc3VmZml4ID0gJy5leGUnIGlmIHNlbGYucGxhdGZvcm0gPT0gJ3dp
bjMyJyBlbHNlICcnCkBAIC04ODcsMTEgKzg5Nyw2IEBAIGNsYXNzIE1ldGFCdWlsZFdyYXBwZXIo
b2JqZWN0KToKIAogICAgICAgY21kbGluZS5hcHBlbmQoZXhlY3V0YWJsZSkKIAotICAgICAgYXNh
biA9ICdpc19hc2FuPXRydWUnIGluIHZhbHNbJ2duX2FyZ3MnXQotICAgICAgbHNhbiA9ICdpc19s
c2FuPXRydWUnIGluIHZhbHNbJ2duX2FyZ3MnXQotICAgICAgbXNhbiA9ICdpc19tc2FuPXRydWUn
IGluIHZhbHNbJ2duX2FyZ3MnXQotICAgICAgdHNhbiA9ICdpc190c2FuPXRydWUnIGluIHZhbHNb
J2duX2FyZ3MnXQotCiAgICAgICBjbWRsaW5lLmV4dGVuZChbCiAgICAgICAgICAgJy0tYXNhbj0l
ZCcgJSBhc2FuLAogICAgICAgICAgICctLWxzYW49JWQnICUgbHNhbiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy9tYi9t
Yl9jb25maWcucHlsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dG9vbHNfd2VicnRjL21iL21iX2NvbmZpZy5weWwKaW5kZXggNTZjODU4MzdmZTZhNWExMGFiMTIx
MzkxOTNmYzdjNDBjNDdkZTgzOC4uNTQ5ZWU0Y2I2OGVjYmUxYThlOWQ2YTQwZDkzMDg2MzdkOTQx
YTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdG9vbHNfd2VicnRjL21iL21iX2NvbmZpZy5weWwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL21iX2NvbmZpZy5weWwKQEAg
LTI0LDcgKzI0LDYgQEAKICAgICAgICdpT1MzMiBSZWxlYXNlJzogJ2lvcycsCiAgICAgICAnaU9T
NjQgRGVidWcnOiAnaW9zJywKICAgICAgICdpT1M2NCBSZWxlYXNlJzogJ2lvcycsCi0gICAgICAn
aU9TMzIgU2ltIERlYnVnIChpT1MgOS4wKSc6ICdpb3MnLAogICAgICAgJ2lPUzY0IFNpbSBEZWJ1
ZyAoaU9TIDkuMCknOiAnaW9zJywKICAgICAgICdpT1M2NCBTaW0gRGVidWcgKGlPUyAxMC4wKSc6
ICdpb3MnLAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy90b29sc193ZWJydGMvbWIvbWJfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvbWIvbWJfdW5pdHRlc3QucHkK
aW5kZXggMDkwOTNjMDZiYWU5ODUxMWY1YTVmNDBiODJkYjAxYzUzN2Q3MWM0YS4uMGU3MTczYWJi
NGNlNjZhNjc1NTY4NmUzNTEyZDY2YTAxYTc0NmViMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL21iL21iX3VuaXR0ZXN0
LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xz
X3dlYnJ0Yy9tYi9tYl91bml0dGVzdC5weQpAQCAtMzgyLDggKzM4Miw4IEBAIGNsYXNzIFVuaXRU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgJy0tb3V0cHV0X2Rpcj0ke0lTT0xBVEVE
X09VVERJUn0vdGVzdF9sb2dzJywKICAgICAgICAgJy0tZ3Rlc3RfY29sb3I9bm8nLAogICAgICAg
ICAnLS10aW1lb3V0PTUwMCcsCi0gICAgICAgICctLXJldHJ5X2ZhaWxlZD0zJywKICAgICAgICAg
Jy0td29ya2Vycz0xJywKKyAgICAgICAgJy0tcmV0cnlfZmFpbGVkPTMnLAogICAgICAgICAnLi9i
YXNlX3VuaXR0ZXN0cycsCiAgICAgICAgICctLWFzYW49MCcsCiAgICAgICAgICctLWxzYW49MCcs
CkBAIC01MDIsOCArNTAyLDggQEAgY2xhc3MgVW5pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICAnLS1vdXRwdXRfZGlyPSR7SVNPTEFURURfT1VURElSfS90ZXN0X2xvZ3MnLAogICAg
ICAgICAnLS1ndGVzdF9jb2xvcj1ubycsCiAgICAgICAgICctLXRpbWVvdXQ9OTAwJywKLSAgICAg
ICAgJy0tcmV0cnlfZmFpbGVkPTMnLAogICAgICAgICAnLS13b3JrZXJzPTEnLAorICAgICAgICAn
LS1yZXRyeV9mYWlsZWQ9MycsCiAgICAgICAgICcuL2Jhc2VfdW5pdHRlc3RzJywKICAgICAgICAg
Jy0tYXNhbj0wJywKICAgICAgICAgJy0tbHNhbj0wJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Rvb2xzX3dlYnJ0Yy92aWRlb19xdWFsaXR5
X3Rvb2xjaGFpbi9saW51eC96eGluZy5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL2xpbnV4
L3p4aW5nLnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2OWE2YWM0MzcxZjNj
ZTVjYzcxMGNmZmU2M2E0Mzk2MWE1NWY1YmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWluL2xpbnV4L3p4aW5nLnNoYTEK
KysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0zZTJhMjVlYWEyZTIwN2ExZTU2OWM2NTg1ZTUw
YWRkYjIwYmNhODlhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL3ZpZGVv
X3F1YWxpdHlfdG9vbGNoYWluL21hYy96eGluZy5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9vbGNoYWlu
L21hYy96eGluZy5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjQ5NmU3Y2U2
YTkwNGU2MTY4MGMyMGNiMTJiYzQ5MTcyNzc4MzdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Rvb2xzX3dlYnJ0Yy92aWRlb19xdWFsaXR5X3Rvb2xjaGFpbi9tYWMvenhpbmcuc2hh
MQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTY3NzhlM2FjNDg5ZjRmYzE4YTFlZDEyNTJi
YmQ2ZWNhNTRjOTk2MGUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvdmlk
ZW9fcXVhbGl0eV90b29sY2hhaW4vd2luL3p4aW5nLmV4ZS5zaGExIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdG9vbHNfd2VicnRjL3ZpZGVvX3F1YWxpdHlfdG9v
bGNoYWluL3dpbi96eGluZy5leGUuc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGU1MjkwZmIzNDZjNTNhZjg2NmYzOWM0MDg0ZDcxN2U5ZDI3ZmZkNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy90b29sc193ZWJydGMvdmlkZW9fcXVhbGl0eV90b29sY2hhaW4vd2lu
L3p4aW5nLmV4ZS5zaGExCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotODZjYTMxNDg3Nzgw
Nzk2NjVhZDViOTQ1OTMxMWQzNDNhMTg2NTk0MwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vQlVJTEQuZ24KaW5kZXggMzI3M2ZkYTI1ZDU1Mjg2OGViOTU4MDVmMmU1NGIyN2JlMDc5
Y2E1YS4uYjUzZDczMGFlMDdlMDZmODAwNGUzNTUzNmNhZTcyMmExYTVhNmVjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQu
Z24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
QlVJTEQuZ24KQEAgLTUyLDcgKzUyLDcgQEAgcnRjX3N0YXRpY19saWJyYXJ5KCJ2aWRlbyIpIHsK
ICAgfQogCiAgIGRlcHMgPSBbCi0gICAgIi4uOndlYnJ0Y19jb21tb24iLAorICAgICI6ZnJhbWVf
ZHVtcGluZ19kZWNvZGVyIiwKICAgICAiLi4vYXBpOmZlY19jb250cm9sbGVyX2FwaSIsCiAgICAg
Ii4uL2FwaTpsaWJqaW5nbGVfcGVlcmNvbm5lY3Rpb25fYXBpIiwKICAgICAiLi4vYXBpOnRyYW5z
cG9ydF9hcGkiLApAQCAtMTMzLDYgKzEzMywyNSBAQCBydGNfc291cmNlX3NldCgidmlkZW9fc3Ry
ZWFtX2RlY29kZXJfaW1wbCIpIHsKICAgXQogfQogCitydGNfc291cmNlX3NldCgiZnJhbWVfZHVt
cGluZ19kZWNvZGVyIikgeworICB2aXNpYmlsaXR5ID0gWyAiKiIgXQorCisgIHNvdXJjZXMgPSBb
CisgICAgImZyYW1lX2R1bXBpbmdfZGVjb2Rlci5jYyIsCisgICAgImZyYW1lX2R1bXBpbmdfZGVj
b2Rlci5oIiwKKyAgXQorCisgIGRlcHMgPSBbCisgICAgIi4uL2FwaS92aWRlbzplbmNvZGVkX2Zy
YW1lIiwKKyAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKKyAgICAi
Li4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kZWNfaW50ZXJmYWNlIiwKKyAgICAiLi4v
bW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kaW5nIiwKKyAgICAiLi4vbW9kdWxlcy92aWRl
b19jb2Rpbmc6dmlkZW9fY29kaW5nX3V0aWxpdHkiLAorICAgICIuLi9ydGNfYmFzZTpydGNfYmFz
ZV9hcHByb3ZlZCIsCisgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL21lbW9yeSIs
CisgIF0KK30KKwogcnRjX3NvdXJjZV9zZXQoInZpZGVvX3N0cmVhbV9lbmNvZGVyX2ltcGwiKSB7
CiAgIHZpc2liaWxpdHkgPSBbICIqIiBdCiAKQEAgLTE1Miw3ICsxNzEsOSBAQCBydGNfc291cmNl
X3NldCgidmlkZW9fc3RyZWFtX2VuY29kZXJfaW1wbCIpIHsKICAgfQogCiAgIGRlcHMgPSBbCisg
ICAgIi4uL2FwaS92aWRlbzplbmNvZGVkX2ltYWdlIiwKICAgICAiLi4vYXBpL3ZpZGVvOnZpZGVv
X2JpdHJhdGVfYWxsb2NhdG9yIiwKKyAgICAiLi4vYXBpL3ZpZGVvOnZpZGVvX2JpdHJhdGVfYWxs
b2NhdG9yX2ZhY3RvcnkiLAogICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAogICAgICIu
Li9hcGkvdmlkZW86dmlkZW9fZnJhbWVfaTQyMCIsCiAgICAgIi4uL2FwaS92aWRlbzp2aWRlb19z
dHJlYW1fZW5jb2RlciIsCkBAIC0yMDMsMTUgKzIyNCwxOSBAQCBpZiAocnRjX2luY2x1ZGVfdGVz
dHMpIHsKICAgICAgICJ2aWRlb19xdWFsaXR5X3Rlc3QuaCIsCiAgICAgXQogICAgIGRlcHMgPSBb
CisgICAgICAiOmZyYW1lX2R1bXBpbmdfZGVjb2RlciIsCiAgICAgICAiLi4vYXBpOmZlY19jb250
cm9sbGVyX2FwaSIsCiAgICAgICAiLi4vYXBpOnRlc3RfZGVwZW5kZW5jeV9mYWN0b3J5IiwKICAg
ICAgICIuLi9hcGk6dmlkZW9fcXVhbGl0eV90ZXN0X2ZpeHR1cmVfYXBpIiwKKyAgICAgICIuLi9h
cGkvdmlkZW86YnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5IiwKKyAgICAg
ICIuLi9hcGkvdmlkZW86dmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSIsCiAgICAgICAi
Li4vY2FsbDpmYWtlX25ldHdvcmsiLAogICAgICAgIi4uL2NhbGw6c2ltdWxhdGVkX25ldHdvcmsi
LAogICAgICAgIi4uL2xvZ2dpbmc6cnRjX2V2ZW50X2xvZ19hcGkiLAogICAgICAgIi4uL2xvZ2dp
bmc6cnRjX2V2ZW50X2xvZ19pbXBsX291dHB1dCIsCiAgICAgICAiLi4vbWVkaWE6cnRjX2F1ZGlv
X3ZpZGVvIiwKICAgICAgICIuLi9tZWRpYTpydGNfaW50ZXJuYWxfdmlkZW9fY29kZWNzIiwKKyAg
ICAgICIuLi9tZWRpYTpydGNfdnA4X2VuY29kZXJfc2ltdWxjYXN0X3Byb3h5IiwKICAgICAgICIu
Li9tb2R1bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfYXBpIiwKICAgICAgICIuLi9tb2R1
bGVzL2F1ZGlvX2RldmljZTphdWRpb19kZXZpY2VfbW9kdWxlX2Zyb21faW5wdXRfYW5kX291dHB1
dCIsCiAgICAgICAiLi4vbW9kdWxlcy9hdWRpb19kZXZpY2U6d2luZG93c19jb3JlX2F1ZGlvX3V0
aWxpdHkiLApAQCAtMzUwLDcgKzM3NSw3IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAg
ICAgInJlcGxheS5jYyIsCiAgICAgXQogICAgIGRlcHMgPSBbCi0gICAgICAiLi46d2VicnRjX2Nv
bW1vbiIsCisgICAgICAiLi4vYXBpL3Rlc3QvdmlkZW86ZnVuY3Rpb25fdmlkZW9fZmFjdG9yeSIs
CiAgICAgICAiLi4vYXBpL3ZpZGVvX2NvZGVjczp2aWRlb19jb2RlY3NfYXBpIiwKICAgICAgICIu
Li9jYWxsOmNhbGxfaW50ZXJmYWNlcyIsCiAgICAgICAiLi4vY29tbW9uX3ZpZGVvIiwKQEAgLTM4
NCw2ICs0MDksNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICBkZWZpbmVzID0gW10K
ICAgICBzb3VyY2VzID0gWwogICAgICAgImNhbGxfc3RhdHNfdW5pdHRlc3QuY2MiLAorICAgICAg
ImNwdV9zY2FsaW5nX3Rlc3RzLmNjIiwKICAgICAgICJlbmNvZGVyX3J0Y3BfZmVlZGJhY2tfdW5p
dHRlc3QuY2MiLAogICAgICAgImVuZF90b19lbmRfdGVzdHMvYmFuZHdpZHRoX3Rlc3RzLmNjIiwK
ICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL2NhbGxfb3BlcmF0aW9uX3Rlc3RzLmNjIiwKQEAgLTM5
MSw2ICs0MTcsNyBAQCBpZiAocnRjX2luY2x1ZGVfdGVzdHMpIHsKICAgICAgICJlbmRfdG9fZW5k
X3Rlc3RzL2NvbmZpZ190ZXN0cy5jYyIsCiAgICAgICAiZW5kX3RvX2VuZF90ZXN0cy9leHRlbmRl
ZF9yZXBvcnRzX3Rlc3RzLmNjIiwKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL2ZlY190ZXN0cy5j
YyIsCisgICAgICAiZW5kX3RvX2VuZF90ZXN0cy9mcmFtZV9lbmNyeXB0aW9uX3Rlc3RzLmNjIiwK
ICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL2hpc3RvZ3JhbV90ZXN0cy5jYyIsCiAgICAgICAiZW5k
X3RvX2VuZF90ZXN0cy9tdWx0aV9jb2RlY19yZWNlaXZlX3Rlc3RzLmNjIiwKICAgICAgICJlbmRf
dG9fZW5kX3Rlc3RzL211bHRpX3N0cmVhbV90ZXN0ZXIuY2MiLApAQCAtMzk4LDcgKzQyNSw2IEBA
IGlmIChydGNfaW5jbHVkZV90ZXN0cykgewogICAgICAgImVuZF90b19lbmRfdGVzdHMvbXVsdGlf
c3RyZWFtX3Rlc3RzLmNjIiwKICAgICAgICJlbmRfdG9fZW5kX3Rlc3RzL25ldHdvcmtfc3RhdGVf
dGVzdHMuY2MiLAogICAgICAgImVuZF90b19lbmRfdGVzdHMvcHJvYmluZ190ZXN0cy5jYyIsCi0g
ICAgICAiZW5kX3RvX2VuZF90ZXN0cy9yZWNlaXZlX3RpbWVfdGVzdHMuY2MiLAogICAgICAgImVu
ZF90b19lbmRfdGVzdHMvcmV0cmFuc21pc3Npb25fdGVzdHMuY2MiLAogICAgICAgImVuZF90b19l
bmRfdGVzdHMvcnRwX3J0Y3BfdGVzdHMuY2MiLAogICAgICAgImVuZF90b19lbmRfdGVzdHMvc3Ny
Y190ZXN0cy5jYyIsCkBAIC00MjQsOSArNDUwLDE1IEBAIGlmIChydGNfaW5jbHVkZV90ZXN0cykg
ewogICAgICAgIjp2aWRlbyIsCiAgICAgICAiOnZpZGVvX21vY2tzIiwKICAgICAgICI6dmlkZW9f
c3RyZWFtX2VuY29kZXJfaW1wbCIsCisgICAgICAiLi4vYXBpOmZha2VfZnJhbWVfZGVjcnlwdG9y
IiwKKyAgICAgICIuLi9hcGk6ZmFrZV9mcmFtZV9lbmNyeXB0b3IiLAogICAgICAgIi4uL2FwaTpz
aW11bGF0ZWRfbmV0d29ya19hcGkiLAorICAgICAgIi4uL2FwaS90ZXN0L3ZpZGVvOmZ1bmN0aW9u
X3ZpZGVvX2ZhY3RvcnkiLAorICAgICAgIi4uL2FwaS92aWRlbzpidWlsdGluX3ZpZGVvX2JpdHJh
dGVfYWxsb2NhdG9yX2ZhY3RvcnkiLAorICAgICAgIi4uL2FwaS92aWRlbzplbmNvZGVkX2ltYWdl
IiwKICAgICAgICIuLi9hcGkvdmlkZW86dmlkZW9fZnJhbWUiLAogICAgICAgIi4uL2FwaS92aWRl
bzp2aWRlb19mcmFtZV9pNDIwIiwKKyAgICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOmNyZWF0ZV92
cDhfdGVtcG9yYWxfbGF5ZXJzIiwKICAgICAgICIuLi9hcGkvdmlkZW9fY29kZWNzOnZpZGVvX2Nv
ZGVjc19hcGkiLAogICAgICAgIi4uL2NhbGw6Y2FsbF9pbnRlcmZhY2VzIiwKICAgICAgICIuLi9j
YWxsOmZha2VfbmV0d29yayIsCkBAIC00NDMsNiArNDc1LDcgQEAgaWYgKHJ0Y19pbmNsdWRlX3Rl
c3RzKSB7CiAgICAgICAiLi4vbWVkaWE6cnRjX21lZGlhIiwKICAgICAgICIuLi9tZWRpYTpydGNf
bWVkaWFfYmFzZSIsCiAgICAgICAiLi4vbWVkaWE6cnRjX21lZGlhX3Rlc3RzX3V0aWxzIiwKKyAg
ICAgICIuLi9tZWRpYTpydGNfc2ltdWxjYXN0X2VuY29kZXJfYWRhcHRlciIsCiAgICAgICAiLi4v
bW9kdWxlczptb2R1bGVfYXBpIiwKICAgICAgICIuLi9tb2R1bGVzL3BhY2luZyIsCiAgICAgICAi
Li4vbW9kdWxlcy9ydHBfcnRjcCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9jYWxsX3N0YXRzX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vY2FsbF9zdGF0c191bml0
dGVzdC5jYwppbmRleCA3MWZhYTY5MmE1NzhhOTZlYmUzMmU5YTVkNDQ5ZmRlYjA0MjUyYWIxLi5k
YzZjNjlhZjllOThjNzFiNTYzOGIyZGQzNGJiMjM1MjQ1YmJlN2E4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9jYWxsX3N0YXRzX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL2NhbGxfc3RhdHNfdW5pdHRlc3QuY2MKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgQ2Fs
bFN0YXRzVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogfTsKIAogVEVTVF9GKENhbGxT
dGF0c1Rlc3QsIEFkZEFuZFRyaWdnZXJDYWxsYmFjaykgewotICBydGM6OkV2ZW50IGV2ZW50KGZh
bHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBpbnQ2NF90IGtSdHQgPSAyNTsKIApAQCAtNzcsNyArNzcsNyBAQCBURVNUX0YoQ2FsbFN0
YXRzVGVzdCwgQWRkQW5kVHJpZ2dlckNhbGxiYWNrKSB7CiB9CiAKIFRFU1RfRihDYWxsU3RhdHNU
ZXN0LCBQcm9jZXNzVGltZSkgewotICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7Cisg
IHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQ2NF90IGtS
dHQgPSAxMDA7CiAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50NjRfdCBrUnR0MiA9IDgwOwpA
QCAtMTI4LDggKzEyOCw4IEBAIFRFU1RfRihDYWxsU3RhdHNUZXN0LCBNdWx0aXBsZU9ic2VydmVy
cykgewogICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGludDY0X3Qga1J0dCA9IDEwMDsKIAogICAv
LyBWZXJpZnkgYm90aCBvYnNlcnZlcnMgYXJlIHVwZGF0ZWQuCi0gIHJ0Yzo6RXZlbnQgZXYxKGZh
bHNlLCBmYWxzZSk7Ci0gIHJ0Yzo6RXZlbnQgZXYyKGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZl
bnQgZXYxOworICBydGM6OkV2ZW50IGV2MjsKICAgRVhQRUNUX0NBTEwoc3RhdHNfb2JzZXJ2ZXJf
MSwgT25SdHRVcGRhdGUoa1J0dCwga1J0dCkpCiAgICAgICAuVGltZXMoQW55TnVtYmVyKCkpCiAg
ICAgICAuV2lsbE9uY2UoSW52b2tlV2l0aG91dEFyZ3MoWyZldjFdIHsgZXYxLlNldCgpOyB9KSkK
QEAgLTE2Nyw3ICsxNjcsNyBAQCBURVNUX0YoQ2FsbFN0YXRzVGVzdCwgTXVsdGlwbGVPYnNlcnZl
cnMpIHsKIAogICAvLyBGbHVzaCB0aGUgcXVldWUgb24gdGhlIHByb2Nlc3MgdGhyZWFkIHRvIG1h
a2Ugc3VyZSB3ZSByZXR1cm4gYWZ0ZXIKICAgLy8gUHJvY2VzcygpIGhhcyBiZWVuIGNhbGxlZC4K
LSAgcnRjOjpFdmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGV2ZW50Owog
ICBwcm9jZXNzX3RocmVhZF8tPlBvc3RUYXNrKHJ0Yzo6TmV3Q2xvc3VyZShbJmV2ZW50XSgpIHsg
ZXZlbnQuU2V0KCk7IH0pKTsKICAgZXZlbnQuV2FpdChydGM6OkV2ZW50OjprRm9yZXZlcik7CiB9
CkBAIC0xODMsNyArMTgzLDcgQEAgVEVTVF9GKENhbGxTdGF0c1Rlc3QsIENoYW5nZVJ0dCkgewog
ICBjYWxsX3N0YXRzXy5SZWdpc3RlclN0YXRzT2JzZXJ2ZXIoJnN0YXRzX29ic2VydmVyKTsKICAg
UnRjcFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0cyA9ICZjYWxsX3N0YXRzXzsKIAotICBydGM6OkV2
ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZXZlbnQ7CiAKICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBpbnQ2NF90IGtGaXJzdFJ0dCA9IDEwMDsKICAgc3RhdGljIGNvbnN0
ZXhwciBjb25zdCBpbnQ2NF90IGtMb3dSdHQgPSBrRmlyc3RSdHQgLSAyMDsKQEAgLTI0MCw3ICsy
NDAsNyBAQCBURVNUX0YoQ2FsbFN0YXRzVGVzdCwgQ2hhbmdlUnR0KSB7CiB9CiAKIFRFU1RfRihD
YWxsU3RhdHNUZXN0LCBMYXN0UHJvY2Vzc2VkUnR0KSB7Ci0gIHJ0Yzo6RXZlbnQgZXZlbnQoZmFs
c2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBldmVudDsKICAgTW9ja1N0YXRzT2JzZXJ2ZXIgc3Rh
dHNfb2JzZXJ2ZXI7CiAgIGNhbGxfc3RhdHNfLlJlZ2lzdGVyU3RhdHNPYnNlcnZlcigmc3RhdHNf
b2JzZXJ2ZXIpOwogICBSdGNwUnR0U3RhdHMqIHJ0Y3BfcnR0X3N0YXRzID0gJmNhbGxfc3RhdHNf
OwpAQCAtMjg5LDcgKzI4OSw3IEBAIFRFU1RfRihDYWxsU3RhdHNUZXN0LCBMYXN0UHJvY2Vzc2Vk
UnR0KSB7CiAKIFRFU1RfRihDYWxsU3RhdHNUZXN0LCBQcm9kdWNlc0hpc3RvZ3JhbU1ldHJpY3Mp
IHsKICAgbWV0cmljczo6UmVzZXQoKTsKLSAgcnRjOjpFdmVudCBldmVudChmYWxzZSwgZmFsc2Up
OworICBydGM6OkV2ZW50IGV2ZW50OwogICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGludDY0X3Qg
a1J0dCA9IDEyMzsKICAgUnRjcFJ0dFN0YXRzKiBydGNwX3J0dF9zdGF0cyA9ICZjYWxsX3N0YXRz
XzsKICAgTW9ja1N0YXRzT2JzZXJ2ZXIgc3RhdHNfb2JzZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9jcHVfc2NhbGluZ190
ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L2NwdV9zY2FsaW5nX3Rlc3RzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwOGYwNWUwNTI0N2RiOWYyMzZjM2Yy
ZDA4MTA4ZTM5YjFkMzdiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9jcHVfc2NhbGluZ190ZXN0cy5jYwpAQCAtMCww
ICsxLDEzMSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0
IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAq
ICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQg
Y2FuIGJlIGZvdW5kCisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcg
cHJvamVjdCBhdXRob3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4g
dGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJ0ZXN0L2NhbGxf
dGVzdC5oIgorI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKKyNpbmNsdWRlICJ0ZXN0L2Zy
YW1lX2dlbmVyYXRvcl9jYXB0dXJlci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK25hbWVzcGFj
ZSB7Citjb25zdGV4cHIgaW50IGtXaWR0aCA9IDEyODA7Citjb25zdGV4cHIgaW50IGtIZWlnaHQg
PSA3MjA7Citjb25zdGV4cHIgaW50IGtGcHMgPSAyODsKK30gIC8vIG5hbWVzcGFjZQorCisvLyBN
aW5pbWFsIG5vcm1hbCB1c2FnZSBhdCBzdGFydCwgdGhlbiA2MHMgb3ZlcnVzZS4KK2NsYXNzIENw
dU92ZXJ1c2VUZXN0IDogcHVibGljIHRlc3Q6OkNhbGxUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIENw
dU92ZXJ1c2VUZXN0KCkKKyAgICAgIDogZmllbGRfdHJpYWxzXygiV2ViUlRDLUZvcmNlU2ltdWxh
dGVkT3ZlcnVzZUludGVydmFsTXMvMS02MDAwMC02MDAwMC8iKSB7CisgIH0KKworICB2b2lkIFJ1
blRlc3RBbmRDaGVja0ZvckFkYXB0YXRpb24oCisgICAgICBjb25zdCBEZWdyYWRhdGlvblByZWZl
cmVuY2UmIGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UsCisgICAgICBib29sIGV4cGVjdF9hZGFwdGF0
aW9uKTsKKworICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHNfOworfTsKKwor
dm9pZCBDcHVPdmVydXNlVGVzdDo6UnVuVGVzdEFuZENoZWNrRm9yQWRhcHRhdGlvbigKKyAgICBj
b25zdCBEZWdyYWRhdGlvblByZWZlcmVuY2UmIGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UsCisgICAg
Ym9vbCBleHBlY3RfYWRhcHRhdGlvbikgeworICBjbGFzcyBPdmVydXNlT2JzZXJ2ZXIKKyAgICAg
IDogcHVibGljIHRlc3Q6OlNlbmRUZXN0LAorICAgICAgICBwdWJsaWMgdGVzdDo6RnJhbWVHZW5l
cmF0b3JDYXB0dXJlcjo6U2lua1dhbnRzT2JzZXJ2ZXIgeworICAgcHVibGljOgorICAgIE92ZXJ1
c2VPYnNlcnZlcihjb25zdCBEZWdyYWRhdGlvblByZWZlcmVuY2UmIGRlZ3JhZGF0aW9uX3ByZWZl
cmVuY2UsCisgICAgICAgICAgICAgICAgICAgIGJvb2wgZXhwZWN0X2FkYXB0YXRpb24pCisgICAg
ICAgIDogU2VuZFRlc3QoZXhwZWN0X2FkYXB0YXRpb24gPyBrTG9uZ1RpbWVvdXRNcyA6IGtEZWZh
dWx0VGltZW91dE1zKSwKKyAgICAgICAgICBkZWdyYWRhdGlvbl9wcmVmZXJlbmNlXyhkZWdyYWRh
dGlvbl9wcmVmZXJlbmNlKSwKKyAgICAgICAgICBleHBlY3RfYWRhcHRhdGlvbl8oZXhwZWN0X2Fk
YXB0YXRpb24pIHt9CisKKyAgIHByaXZhdGU6CisgICAgdm9pZCBPbkZyYW1lR2VuZXJhdG9yQ2Fw
dHVyZXJDcmVhdGVkKAorICAgICAgICB0ZXN0OjpGcmFtZUdlbmVyYXRvckNhcHR1cmVyKiBmcmFt
ZV9nZW5lcmF0b3JfY2FwdHVyZXIpIG92ZXJyaWRlIHsKKyAgICAgIGZyYW1lX2dlbmVyYXRvcl9j
YXB0dXJlci0+U2V0U2lua1dhbnRzT2JzZXJ2ZXIodGhpcyk7CisgICAgICAvLyBTZXQgaW5pdGlh
bCByZXNvbHV0aW9uLgorICAgICAgZnJhbWVfZ2VuZXJhdG9yX2NhcHR1cmVyLT5DaGFuZ2VSZXNv
bHV0aW9uKGtXaWR0aCwga0hlaWdodCk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIHdoZW4gRnJh
bWVHZW5lcmF0b3JDYXB0dXJlcjo6QWRkT3JVcGRhdGVTaW5rIGlzIGNhbGxlZC4KKyAgICB2b2lk
IE9uU2lua1dhbnRzQ2hhbmdlZChydGM6OlZpZGVvU2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiog
c2luaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydGM6OlZpZGVvU2lua1dh
bnRzJiB3YW50cykgb3ZlcnJpZGUgeworICAgICAgaWYgKHdhbnRzLm1heF9waXhlbF9jb3VudCA9
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpICYmCisgICAgICAgICAgd2FudHMubWF4
X2ZyYW1lcmF0ZV9mcHMgPT0ga0ZwcykgeworICAgICAgICAvLyBNYXggY29uZmlndXJlZCBmcmFt
ZXJhdGUgaXMgaW5pdGlhbGx5IHNldC4KKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAg
c3dpdGNoIChkZWdyYWRhdGlvbl9wcmVmZXJlbmNlXykgeworICAgICAgICBjYXNlIERlZ3JhZGF0
aW9uUHJlZmVyZW5jZTo6TUFJTlRBSU5fRlJBTUVSQVRFOgorICAgICAgICAgIEVYUEVDVF9MVCh3
YW50cy5tYXhfcGl4ZWxfY291bnQsIGtXaWR0aCAqIGtIZWlnaHQpOworICAgICAgICAgIG9ic2Vy
dmF0aW9uX2NvbXBsZXRlXy5TZXQoKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
ZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX1JFU09MVVRJT046CisgICAgICAgICAgRVhQ
RUNUX0xUKHdhbnRzLm1heF9mcmFtZXJhdGVfZnBzLCBrRnBzKTsKKyAgICAgICAgICBvYnNlcnZh
dGlvbl9jb21wbGV0ZV8uU2V0KCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVn
cmFkYXRpb25QcmVmZXJlbmNlOjpCQUxBTkNFRDoKKyAgICAgICAgICBpZiAod2FudHMubWF4X3Bp
eGVsX2NvdW50ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkgJiYKKyAgICAgICAg
ICAgICAgd2FudHMubWF4X2ZyYW1lcmF0ZV9mcHMgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+
OjptYXgoKSkgeworICAgICAgICAgICAgLy8gfGFkYXB0X2NvdW50ZXJzX3wgbWFwIGluIFZpZGVv
U3RyZWFtRW5jb2RlciBpcyByZXNldCB3aGVuCisgICAgICAgICAgICAvLyBiYWxhbmNlZCBtb2Rl
IGlzIHNldC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgICBFWFBF
Q1RfVFJVRSh3YW50cy5tYXhfcGl4ZWxfY291bnQgPCBrV2lkdGggKiBrSGVpZ2h0IHx8CisgICAg
ICAgICAgICAgICAgICAgICAgd2FudHMubWF4X2ZyYW1lcmF0ZV9mcHMgPCBrRnBzKTsKKyAgICAg
ICAgICBvYnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7CisgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgUlRDX05PVFJFQUNIRUQoKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICB2b2lkIE1vZGlmeVZpZGVvQ29uZmlncygKKyAgICAgICAgVmlkZW9TZW5kU3RyZWFt
OjpDb25maWcqIHNlbmRfY29uZmlnLAorICAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1JlY2VpdmVT
dHJlYW06OkNvbmZpZz4qIHJlY2VpdmVfY29uZmlncywKKyAgICAgICAgVmlkZW9FbmNvZGVyQ29u
ZmlnKiBlbmNvZGVyX2NvbmZpZykgb3ZlcnJpZGUgeworICAgICAgRVhQRUNUX0ZBTFNFKGVuY29k
ZXJfY29uZmlnLT5zaW11bGNhc3RfbGF5ZXJzLmVtcHR5KCkpOworICAgICAgZW5jb2Rlcl9jb25m
aWctPnNpbXVsY2FzdF9sYXllcnNbMF0ubWF4X2ZyYW1lcmF0ZSA9IGtGcHM7CisgICAgfQorCisg
ICAgdm9pZCBNb2RpZnlWaWRlb0RlZ3JhZGF0aW9uUHJlZmVyZW5jZSgKKyAgICAgICAgRGVncmFk
YXRpb25QcmVmZXJlbmNlKiBkZWdyYWRhdGlvbl9wcmVmZXJlbmNlKSBvdmVycmlkZSB7CisgICAg
ICAqZGVncmFkYXRpb25fcHJlZmVyZW5jZSA9IGRlZ3JhZGF0aW9uX3ByZWZlcmVuY2VfOworICAg
IH0KKworICAgIHZvaWQgUGVyZm9ybVRlc3QoKSBvdmVycmlkZSB7CisgICAgICBFWFBFQ1RfRVEo
ZXhwZWN0X2FkYXB0YXRpb25fLCBXYWl0KCkpCisgICAgICAgICAgPDwgIlRpbWVkIG91dCB3aGls
ZSB3YWl0aW5nIGZvciBhIHNjYWxlIGRvd24uIjsKKyAgICB9CisKKyAgICBjb25zdCBEZWdyYWRh
dGlvblByZWZlcmVuY2UgZGVncmFkYXRpb25fcHJlZmVyZW5jZV87CisgICAgY29uc3QgYm9vbCBl
eHBlY3RfYWRhcHRhdGlvbl87CisgIH0gdGVzdChkZWdyYWRhdGlvbl9wcmVmZXJlbmNlLCBleHBl
Y3RfYWRhcHRhdGlvbik7CisKKyAgUnVuQmFzZVRlc3QoJnRlc3QpOworfQorCitURVNUX0YoQ3B1
T3ZlcnVzZVRlc3QsIEFkYXB0c0Rvd25JblJlc29sdXRpb25Pbk92ZXJ1c2UpIHsKKyAgUnVuVGVz
dEFuZENoZWNrRm9yQWRhcHRhdGlvbihEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX0ZS
QU1FUkFURSwgdHJ1ZSk7Cit9CisKK1RFU1RfRihDcHVPdmVydXNlVGVzdCwgQWRhcHRzRG93bklu
RnBzT25PdmVydXNlKSB7CisgIFJ1blRlc3RBbmRDaGVja0ZvckFkYXB0YXRpb24oRGVncmFkYXRp
b25QcmVmZXJlbmNlOjpNQUlOVEFJTl9SRVNPTFVUSU9OLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRydWUpOworfQorCitURVNUX0YoQ3B1T3ZlcnVzZVRlc3QsIEFkYXB0c0Rvd25J
blJlc29sdXRpb25PckZwc09uT3ZlcnVzZSkgeworICBSdW5UZXN0QW5kQ2hlY2tGb3JBZGFwdGF0
aW9uKERlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6QkFMQU5DRUQsIHRydWUpOworfQorCitURVNUX0Yo
Q3B1T3ZlcnVzZVRlc3QsIE5vQWRhcHREb3duT25PdmVydXNlKSB7CisgIFJ1blRlc3RBbmRDaGVj
a0ZvckFkYXB0YXRpb24oRGVncmFkYXRpb25QcmVmZXJlbmNlOjpESVNBQkxFRCwgZmFsc2UpOwor
fQorfSAgLy8gbmFtZXNwYWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9iYW5kd2lkdGhf
dGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9lbmRfdG9fZW5kX3Rlc3RzL2JhbmR3aWR0aF90ZXN0cy5jYwppbmRleCBhYjVlNTY4N2I5OTdi
YWJlYmI0MjBjMzdmNmY1MTY2ZjA0YjM5N2MzLi5hMzVmMDhjM2Y1ZjZiZTNlNmIyNjIxNDE4YTE5
MjkwNTlhOGIyYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2JhbmR3aWR0aF90ZXN0cy5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9f
ZW5kX3Rlc3RzL2JhbmR3aWR0aF90ZXN0cy5jYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5j
bHVkZSAiYXBpL3Rlc3Qvc2ltdWxhdGVkX25ldHdvcmsuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8v
YnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2Fs
bC9mYWtlX25ldHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsu
aCIKICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3AuaCIKQEAgLTE0
NSw3ICsxNDYsNiBAQCBURVNUX0YoQmFuZHdpZHRoRW5kVG9FbmRUZXN0LCBSZW1iV2l0aFNlbmRT
aWRlQndlKSB7CiAgICAgICAgICAgc2VuZGVyX3NzcmNfKDApLAogICAgICAgICAgIHJlbWJfYml0
cmF0ZV9icHNfKDEwMDAwMDApLAogICAgICAgICAgIHJlY2VpdmVfdHJhbnNwb3J0XyhudWxscHRy
KSwKLSAgICAgICAgICBzdG9wX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAogICAgICAgICAgIHBvbGxl
cl90aHJlYWRfKCZCaXRyYXRlU3RhdHNQb2xsaW5nVGhyZWFkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIkJpdHJhdGVTdGF0c1BvbGxp
bmdUaHJlYWQiKSwKQEAgLTE2MCwxNSArMTYwLDE1IEBAIFRFU1RfRihCYW5kd2lkdGhFbmRUb0Vu
ZFRlc3QsIFJlbWJXaXRoU2VuZFNpZGVCd2UpIHsKICAgICAgICAgICB0YXNrX3F1ZXVlLCBudWxs
cHRyLCB0aGlzLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtSZWNlaXZlciwKICAgICAgICAgICBw
YXlsb2FkX3R5cGVfbWFwXywKICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29y
a1BpcGU+KAotICAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAotICAgICAg
ICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAg
ICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSkpOworICAgICAgICAgICAg
ICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWRO
ZXR3b3JrPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1
aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpKTsKICAgICAgIHJldHVybiByZWNlaXZlX3Ry
YW5zcG9ydF87CiAgICAgfQogCi0gICAgdm9pZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6
OkNvbmZpZyogY29uZmlnKSBvdmVycmlkZSB7CisgICAgdm9pZCBNb2RpZnlTZW5kZXJCaXRyYXRl
Q29uZmlnKAorICAgICAgICBCaXRyYXRlQ29uc3RyYWludHMqIGJpdHJhdGVfY29uZmlnKSBvdmVy
cmlkZSB7CiAgICAgICAvLyBTZXQgYSBoaWdoIHN0YXJ0IGJpdHJhdGUgdG8gcmVkdWNlIHRoZSB0
ZXN0IGNvbXBsZXRpb24gdGltZS4KLSAgICAgIGNvbmZpZy0+Yml0cmF0ZV9jb25maWcuc3RhcnRf
Yml0cmF0ZV9icHMgPSByZW1iX2JpdHJhdGVfYnBzXzsKKyAgICAgIGJpdHJhdGVfY29uZmlnLT5z
dGFydF9iaXRyYXRlX2JwcyA9IHJlbWJfYml0cmF0ZV9icHNfOwogICAgIH0KIAogICAgIHZvaWQg
TW9kaWZ5VmlkZW9Db25maWdzKApAQCAtMjc0LDYgKzI3NCw4IEBAIFRFU1RfRihCYW5kd2lkdGhF
bmRUb0VuZFRlc3QsIFJlcG9ydHNTZXRFbmNvZGVyUmF0ZXMpIHsKICAgICAgICAgICB0YXNrX3F1
ZXVlXyh0YXNrX3F1ZXVlKSwKICAgICAgICAgICBzZW5kX3N0cmVhbV8obnVsbHB0ciksCiAgICAg
ICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyh0aGlzKSwKKyAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRv
cl9mYWN0b3J5XygKKyAgICAgICAgICAgICAgQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9j
YXRvckZhY3RvcnkoKSksCiAgICAgICAgICAgYml0cmF0ZV9rYnBzXygwKSB7fQogCiAgICAgdm9p
ZCBPblZpZGVvU3RyZWFtc0NyZWF0ZWQoCkBAIC0yODcsNiArMjg5LDggQEAgVEVTVF9GKEJhbmR3
aWR0aEVuZFRvRW5kVGVzdCwgUmVwb3J0c1NldEVuY29kZXJSYXRlcykgewogICAgICAgICBzdGQ6
OnZlY3RvcjxWaWRlb1JlY2VpdmVTdHJlYW06OkNvbmZpZz4qIHJlY2VpdmVfY29uZmlncywKICAg
ICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnKiBlbmNvZGVyX2NvbmZpZykgb3ZlcnJpZGUgewogICAg
ICAgc2VuZF9jb25maWctPmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gJmVuY29k
ZXJfZmFjdG9yeV87CisgICAgICBzZW5kX2NvbmZpZy0+ZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5ID0KKyAgICAgICAgICBiaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5
Xy5nZXQoKTsKICAgICAgIFJUQ19EQ0hFQ0tfRVEoMSwgZW5jb2Rlcl9jb25maWctPm51bWJlcl9v
Zl9zdHJlYW1zKTsKICAgICB9CiAKQEAgLTM0NSw2ICszNDksNyBAQCBURVNUX0YoQmFuZHdpZHRo
RW5kVG9FbmRUZXN0LCBSZXBvcnRzU2V0RW5jb2RlclJhdGVzKSB7CiAgICAgcnRjOjpDcml0aWNh
bFNlY3Rpb24gY3JpdF87CiAgICAgVmlkZW9TZW5kU3RyZWFtKiBzZW5kX3N0cmVhbV87CiAgICAg
dGVzdDo6VmlkZW9FbmNvZGVyUHJveHlGYWN0b3J5IGVuY29kZXJfZmFjdG9yeV87CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+IGJpdHJhdGVfYWxsb2Nh
dG9yX2ZhY3RvcnlfOwogICAgIHVpbnQzMl90IGJpdHJhdGVfa2Jwc18gUlRDX0dVQVJERURfQlko
Y3JpdF8pOwogICB9IHRlc3QoJnRhc2tfcXVldWVfKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9j
YWxsX29wZXJhdGlvbl90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvY2FsbF9vcGVyYXRpb25fdGVzdHMuY2MK
aW5kZXggMmFjZDFiOWZlODEyOTE4NzAxYWQ2ZjZmNmM4MGY2ZDU3MTMyYzUxZi4uZWMzY2E4NGJm
YjU0N2MxMGQ2NDM5YzliYzNlMzE3YzM2YjA2MGY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9jYWxs
X29wZXJhdGlvbl90ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2NhbGxfb3BlcmF0aW9uX3Rlc3RzLmNj
CkBAIC05Miw4ICs5Miw2IEBAIFRFU1RfUChDYWxsT3BlcmF0aW9uRW5kVG9FbmRUZXN0LCBSZW5k
ZXJzU2luZ2xlRGVsYXllZEZyYW1lKSB7CiAKICAgY2xhc3MgUmVuZGVyZXIgOiBwdWJsaWMgcnRj
OjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4gewogICAgcHVibGljOgotICAgIFJlbmRl
cmVyKCkgOiBldmVudF8oZmFsc2UsIGZhbHNlKSB7fQotCiAgICAgdm9pZCBPbkZyYW1lKGNvbnN0
IFZpZGVvRnJhbWUmIHZpZGVvX2ZyYW1lKSBvdmVycmlkZSB7CiAgICAgICBTbGVlcE1zKGtSZW5k
ZXJEZWxheU1zKTsKICAgICAgIGV2ZW50Xy5TZXQoKTsKQEAgLTExNCwxNSArMTEyLDE1IEBAIFRF
U1RfUChDYWxsT3BlcmF0aW9uRW5kVG9FbmRUZXN0LCBSZW5kZXJzU2luZ2xlRGVsYXllZEZyYW1l
KSB7CiAKICAgICBzZW5kZXJfdHJhbnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGly
ZWN0VHJhbnNwb3J0PigKICAgICAgICAgJnRhc2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtl
X3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1l
Q2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9u
Q29uZmlnKCkpKSwKKyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihD
bG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0Jl
aGF2aW9yQ29uZmlnKCkpKSwKICAgICAgICAgc2VuZGVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5
cGVfbWFwXyk7CiAgICAgcmVjZWl2ZXJfdHJhbnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVz
dDo6RGlyZWN0VHJhbnNwb3J0PigKICAgICAgICAgJnRhc2tfcXVldWVfLAotICAgICAgICBhYnNs
OjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJl
YWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11
bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQ
aXBlPihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0
d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAgICAgcmVjZWl2ZXJfY2FsbF8uZ2V0KCksIHBh
eWxvYWRfdHlwZV9tYXBfKTsKICAgICBzZW5kZXJfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihyZWNl
aXZlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CiAgICAgcmVjZWl2ZXJfdHJhbnNwb3J0LT5TZXRSZWNl
aXZlcihzZW5kZXJfY2FsbF8tPlJlY2VpdmVyKCkpOwpAQCAtMTYxLDggKzE1OSw2IEBAIFRFU1Rf
UChDYWxsT3BlcmF0aW9uRW5kVG9FbmRUZXN0LCBSZW5kZXJzU2luZ2xlRGVsYXllZEZyYW1lKSB7
CiBURVNUX1AoQ2FsbE9wZXJhdGlvbkVuZFRvRW5kVGVzdCwgVHJhbnNtaXRzRmlyc3RGcmFtZSkg
ewogICBjbGFzcyBSZW5kZXJlciA6IHB1YmxpYyBydGM6OlZpZGVvU2lua0ludGVyZmFjZTxWaWRl
b0ZyYW1lPiB7CiAgICBwdWJsaWM6Ci0gICAgUmVuZGVyZXIoKSA6IGV2ZW50XyhmYWxzZSwgZmFs
c2UpIHt9Ci0KICAgICB2b2lkIE9uRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9fZnJhbWUp
IG92ZXJyaWRlIHsgZXZlbnRfLlNldCgpOyB9CiAKICAgICBib29sIFdhaXQoKSB7IHJldHVybiBl
dmVudF8uV2FpdChrRGVmYXVsdFRpbWVvdXRNcyk7IH0KQEAgLTE4MiwxNSArMTc4LDE1IEBAIFRF
U1RfUChDYWxsT3BlcmF0aW9uRW5kVG9FbmRUZXN0LCBUcmFuc21pdHNGaXJzdEZyYW1lKSB7CiAK
ICAgICBzZW5kZXJfdHJhbnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGlyZWN0VHJh
bnNwb3J0PigKICAgICAgICAgJnRhc2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtlX3VuaXF1
ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2so
KSwgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmln
KCkpKSwKKyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihDbG9jazo6
R2V0UmVhbFRpbWVDbG9jaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9y
Q29uZmlnKCkpKSwKICAgICAgICAgc2VuZGVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFw
Xyk7CiAgICAgcmVjZWl2ZXJfdHJhbnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVzdDo6RGly
ZWN0VHJhbnNwb3J0PigKICAgICAgICAgJnRhc2tfcXVldWVfLAotICAgICAgICBhYnNsOjptYWtl
X3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1l
Q2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9u
Q29uZmlnKCkpKSwKKyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPihD
bG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0d29ya0Jl
aGF2aW9yQ29uZmlnKCkpKSwKICAgICAgICAgcmVjZWl2ZXJfY2FsbF8uZ2V0KCksIHBheWxvYWRf
dHlwZV9tYXBfKTsKICAgICBzZW5kZXJfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihyZWNlaXZlcl9j
YWxsXy0+UmVjZWl2ZXIoKSk7CiAgICAgcmVjZWl2ZXJfdHJhbnNwb3J0LT5TZXRSZWNlaXZlcihz
ZW5kZXJfY2FsbF8tPlJlY2VpdmVyKCkpOwpAQCAtMjIxLDc5ICsyMTcsNCBAQCBURVNUX1AoQ2Fs
bE9wZXJhdGlvbkVuZFRvRW5kVGVzdCwgVHJhbnNtaXRzRmlyc3RGcmFtZSkgewogICB9KTsKIH0K
IAotVEVTVF9QKENhbGxPcGVyYXRpb25FbmRUb0VuZFRlc3QsIE9ic2VydmVyc0VuY29kZWRGcmFt
ZXMpIHsKLSAgY2xhc3MgRW5jb2RlZEZyYW1lVGVzdE9ic2VydmVyIDogcHVibGljIEVuY29kZWRG
cmFtZU9ic2VydmVyIHsKLSAgIHB1YmxpYzoKLSAgICBFbmNvZGVkRnJhbWVUZXN0T2JzZXJ2ZXIo
KQotICAgICAgICA6IGxlbmd0aF8oMCksIGZyYW1lX3R5cGVfKGtFbXB0eUZyYW1lKSwgY2FsbGVk
XyhmYWxzZSwgZmFsc2UpIHt9Ci0gICAgdmlydHVhbCB+RW5jb2RlZEZyYW1lVGVzdE9ic2VydmVy
KCkge30KLQotICAgIHZpcnR1YWwgdm9pZCBFbmNvZGVkRnJhbWVDYWxsYmFjayhjb25zdCBFbmNv
ZGVkRnJhbWUmIGVuY29kZWRfZnJhbWUpIHsKLSAgICAgIGZyYW1lX3R5cGVfID0gZW5jb2RlZF9m
cmFtZS5mcmFtZV90eXBlXzsKLSAgICAgIGxlbmd0aF8gPSBlbmNvZGVkX2ZyYW1lLmxlbmd0aF87
Ci0gICAgICBidWZmZXJfLnJlc2V0KG5ldyB1aW50OF90W2xlbmd0aF9dKTsKLSAgICAgIG1lbWNw
eShidWZmZXJfLmdldCgpLCBlbmNvZGVkX2ZyYW1lLmRhdGFfLCBsZW5ndGhfKTsKLSAgICAgIGNh
bGxlZF8uU2V0KCk7Ci0gICAgfQotCi0gICAgYm9vbCBXYWl0KCkgeyByZXR1cm4gY2FsbGVkXy5X
YWl0KGtEZWZhdWx0VGltZW91dE1zKTsgfQotCi0gICBwcml2YXRlOgotICAgIHN0ZDo6dW5pcXVl
X3B0cjx1aW50OF90W10+IGJ1ZmZlcl87Ci0gICAgc2l6ZV90IGxlbmd0aF87Ci0gICAgRnJhbWVU
eXBlIGZyYW1lX3R5cGVfOwotICAgIHJ0Yzo6RXZlbnQgY2FsbGVkXzsKLSAgfTsKLQotICBFbmNv
ZGVkRnJhbWVUZXN0T2JzZXJ2ZXIgcG9zdF9lbmNvZGVfb2JzZXJ2ZXI7Ci0gIHRlc3Q6OkZyYW1l
Rm9yd2FyZGVyIGZvcndhcmRlcjsKLSAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkZyYW1lR2VuZXJh
dG9yPiBmcmFtZV9nZW5lcmF0b3I7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkRpcmVjdFRy
YW5zcG9ydD4gc2VuZGVyX3RyYW5zcG9ydDsKLSAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkRpcmVj
dFRyYW5zcG9ydD4gcmVjZWl2ZXJfdHJhbnNwb3J0OwotCi0gIHRhc2tfcXVldWVfLlNlbmRUYXNr
KFsmXSgpIHsKLSAgICBDcmVhdGVDYWxscygpOwotCi0gICAgc2VuZGVyX3RyYW5zcG9ydCA9IGFi
c2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4oCi0gICAgICAgICZ0YXNrX3F1
ZXVlXywKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAg
ICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVs
YXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSksCi0gICAgICAgIHNlbmRlcl9jYWxs
Xy5nZXQoKSwgcGF5bG9hZF90eXBlX21hcF8pOwotICAgIHJlY2VpdmVyX3RyYW5zcG9ydCA9IGFi
c2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4oCi0gICAgICAgICZ0YXNrX3F1
ZXVlXywKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAg
ICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVs
YXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSksCi0gICAgICAgIHJlY2VpdmVyX2Nh
bGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7Ci0gICAgc2VuZGVyX3RyYW5zcG9ydC0+U2V0
UmVjZWl2ZXIocmVjZWl2ZXJfY2FsbF8tPlJlY2VpdmVyKCkpOwotICAgIHJlY2VpdmVyX3RyYW5z
cG9ydC0+U2V0UmVjZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZlcigpKTsKLQotICAgIENyZWF0
ZVNlbmRDb25maWcoMSwgMCwgMCwgc2VuZGVyX3RyYW5zcG9ydC5nZXQoKSk7Ci0gICAgQ3JlYXRl
TWF0Y2hpbmdSZWNlaXZlQ29uZmlncyhyZWNlaXZlcl90cmFuc3BvcnQuZ2V0KCkpOwotICAgIEdl
dFZpZGVvU2VuZENvbmZpZygpLT5wb3N0X2VuY29kZV9jYWxsYmFjayA9ICZwb3N0X2VuY29kZV9v
YnNlcnZlcjsKLQotICAgIENyZWF0ZVZpZGVvU3RyZWFtcygpOwotICAgIFN0YXJ0KCk7Ci0KLSAg
ICBmcmFtZV9nZW5lcmF0b3IgPSB0ZXN0OjpGcmFtZUdlbmVyYXRvcjo6Q3JlYXRlU3F1YXJlR2Vu
ZXJhdG9yKAotICAgICAgICBrRGVmYXVsdFdpZHRoLCBrRGVmYXVsdEhlaWdodCwgYWJzbDo6bnVs
bG9wdCwgYWJzbDo6bnVsbG9wdCk7Ci0gICAgR2V0VmlkZW9TZW5kU3RyZWFtKCktPlNldFNvdXJj
ZSgmZm9yd2FyZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVncmFk
YXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9GUkFNRVJBVEUpOwotICAgIGZvcndhcmRlci5JbmNv
bWluZ0NhcHR1cmVkRnJhbWUoKmZyYW1lX2dlbmVyYXRvci0+TmV4dEZyYW1lKCkpOwotICB9KTsK
LQotICBFWFBFQ1RfVFJVRShwb3N0X2VuY29kZV9vYnNlcnZlci5XYWl0KCkpCi0gICAgICA8PCAi
VGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHNlbmQtc2lkZSBlbmNvZGVkLWZyYW1lIGNhbGxi
YWNrLiI7Ci0KLSAgdGFza19xdWV1ZV8uU2VuZFRhc2soW3RoaXMsICZzZW5kZXJfdHJhbnNwb3J0
LCAmcmVjZWl2ZXJfdHJhbnNwb3J0XSgpIHsKLSAgICBTdG9wKCk7Ci0gICAgRGVzdHJveVN0cmVh
bXMoKTsKLSAgICBzZW5kZXJfdHJhbnNwb3J0LnJlc2V0KCk7Ci0gICAgcmVjZWl2ZXJfdHJhbnNw
b3J0LnJlc2V0KCk7Ci0gICAgRGVzdHJveUNhbGxzKCk7Ci0gIH0pOwotfQotCiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2NvZGVjX3Rlc3RzLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0
cy9jb2RlY190ZXN0cy5jYwppbmRleCBmYWQzYWM3ZWRlZjNkMGRhYmMzZDJhMTVmODg4NjY5Zjgx
MzFmYmI4Li42N2VmNjExYTcwODg4MjNkN2QyZGRjNDMzMzJlNDhhNmEwZGZlNmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRf
dG9fZW5kX3Rlc3RzL2NvZGVjX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvY29kZWNfdGVzdHMuY2MK
QEAgLTgsNiArOCw3IEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUg
cm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCiAgKi8KIAorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVv
L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlhL2VuZ2lu
ZS9pbnRlcm5hbGRlY29kZXJmYWN0b3J5LmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVy
bmFsZW5jb2RlcmZhY3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl
Y3MvaDI2NC9pbmNsdWRlL2gyNjQuaCIKQEAgLTE4LDcgKzE5LDYgQEAKICNpbmNsdWRlICJ0ZXN0
L2NhbGxfdGVzdC5oIgogI2luY2x1ZGUgInRlc3QvZW5jb2Rlcl9zZXR0aW5ncy5oIgogI2luY2x1
ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2Vu
Y29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CkBAIC0xMTgsNyArMTE4LDcgQEAgVEVTVF9QKENvZGVjRW5kVG9FbmRUZXN0LCBTZW5k
c0FuZFJlY2VpdmVzVlA4Um90YXRpb245MCkgewogICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9CiAK
LSNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQ
OSkKIFRFU1RfUChDb2RlY0VuZFRvRW5kVGVzdCwgU2VuZHNBbmRSZWNlaXZlc1ZQOSkgewogICB0
ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2Rlcl9mYWN0b3J5KAogICAgICAg
W10oKSB7IHJldHVybiBWUDlFbmNvZGVyOjpDcmVhdGUoKTsgfSk7CkBAIC0xNzcsNyArMTc3LDcg
QEAgVEVTVF9QKENvZGVjRW5kVG9FbmRUZXN0LCBTZW5kc0FuZFJlY2VpdmVzTXVsdGlwbGV4Vmlk
ZW9Sb3RhdGlvbjkwKSB7CiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KIAotI2VuZGlmICAvLyAh
ZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJMRV9W
UDkpCiAKICNpZiBkZWZpbmVkKFdFQlJUQ19VU0VfSDI2NCkKIGNsYXNzIEVuZFRvRW5kVGVzdEgy
NjQgOiBwdWJsaWMgdGVzdDo6Q2FsbFRlc3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2NvbmZpZ190
ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L2VuZF90b19lbmRfdGVzdHMvY29uZmlnX3Rlc3RzLmNjCmluZGV4IGQzMmIxMTE4YjdjMzIxNzQ3
MTI0ZTg4NzkyZTY2YjcxMTYyOTlhNDguLjFkMzM1ODljOWQxY2VkN2NmMDI4MjA3MzMwZTMyZDU3
MzIwODFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvY29uZmlnX3Rlc3RzLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVz
dHMvY29uZmlnX3Rlc3RzLmNjCkBAIC00OSw2ICs0OSwxMiBAQCBURVNUX0YoQ29uZmlnRW5kVG9F
bmRUZXN0LCBWZXJpZnlEZWZhdWx0U2VuZENvbmZpZ1BhcmFtZXRlcnMpIHsKICAgICAgIDw8ICJF
bmFibGluZyBSVFggcmVxdWlyZXMgcnRwbWFwOiBydHggbmVnb3RpYXRpb24uIjsKICAgRVhQRUNU
X1RSVUUoZGVmYXVsdF9zZW5kX2NvbmZpZy5ydHAuZXh0ZW5zaW9ucy5lbXB0eSgpKQogICAgICAg
PDwgIkVuYWJsaW5nIFJUUCBleHRlbnNpb25zIHJlcXVpcmUgbmVnb3RpYXRpb24uIjsKKyAgRVhQ
RUNUX0VRKG51bGxwdHIsIGRlZmF1bHRfc2VuZF9jb25maWcuZnJhbWVfZW5jcnlwdG9yKQorICAg
ICAgPDwgIkVuYWJsaW5nIEZyYW1lIEVuY3J5cHRpb24gcmVxdWlyZXMgYSBmcmFtZSBlbmNyeXB0
b3IgdG8gYmUgYXR0YWNoZWQiOworICBFWFBFQ1RfRkFMU0UoCisgICAgICBkZWZhdWx0X3NlbmRf
Y29uZmlnLmNyeXB0b19vcHRpb25zLnNmcmFtZS5yZXF1aXJlX2ZyYW1lX2VuY3J5cHRpb24pCisg
ICAgICA8PCAiRW5hYmxpbmcgUmVxdWlyZSBGcmFtZSBFbmNyeXB0aW9uIG1lYW5zIGFuIGVuY3J5
cHRvciBtdXN0IGJlICIKKyAgICAgICAgICJhdHRhY2hlZCI7CiAKICAgVmVyaWZ5RW1wdHlOYWNr
Q29uZmlnKGRlZmF1bHRfc2VuZF9jb25maWcucnRwLm5hY2spOwogICBWZXJpZnlFbXB0eVVscGZl
Y0NvbmZpZyhkZWZhdWx0X3NlbmRfY29uZmlnLnJ0cC51bHBmZWMpOwpAQCAtNzAsMTIgKzc2LDE2
IEBAIFRFU1RfRihDb25maWdFbmRUb0VuZFRlc3QsIFZlcmlmeURlZmF1bHRWaWRlb1JlY2VpdmVD
b25maWdQYXJhbWV0ZXJzKSB7CiAgICAgICA8PCAiRW5hYmxpbmcgUlRYIHJlcXVpcmVzIHJ0cG1h
cDogcnR4IG5lZ290aWF0aW9uLiI7CiAgIEVYUEVDVF9UUlVFKGRlZmF1bHRfcmVjZWl2ZV9jb25m
aWcucnRwLmV4dGVuc2lvbnMuZW1wdHkoKSkKICAgICAgIDw8ICJFbmFibGluZyBSVFAgZXh0ZW5z
aW9ucyByZXF1aXJlIG5lZ290aWF0aW9uLiI7Ci0KICAgVmVyaWZ5RW1wdHlOYWNrQ29uZmlnKGRl
ZmF1bHRfcmVjZWl2ZV9jb25maWcucnRwLm5hY2spOwogICBFWFBFQ1RfRVEoLTEsIGRlZmF1bHRf
cmVjZWl2ZV9jb25maWcucnRwLnVscGZlY19wYXlsb2FkX3R5cGUpCiAgICAgICA8PCAiRW5hYmxp
bmcgVUxQRkVDIHJlcXVpcmVzIHJ0cG1hcDogdWxwZmVjIG5lZ290aWF0aW9uLiI7CiAgIEVYUEVD
VF9FUSgtMSwgZGVmYXVsdF9yZWNlaXZlX2NvbmZpZy5ydHAucmVkX3BheWxvYWRfdHlwZSkKICAg
ICAgIDw8ICJFbmFibGluZyBVTFBGRUMgcmVxdWlyZXMgcnRwbWFwOiByZWQgbmVnb3RpYXRpb24u
IjsKKyAgRVhQRUNUX0VRKG51bGxwdHIsIGRlZmF1bHRfcmVjZWl2ZV9jb25maWcuZnJhbWVfZGVj
cnlwdG9yKQorICAgICAgPDwgIkVuYWJsaW5nIEZyYW1lIERlY3J5cHRpb24gcmVxdWlyZXMgYSBm
cmFtZSBkZWNyeXB0b3IgdG8gYmUgYXR0YWNoZWQiOworICBFWFBFQ1RfRkFMU0UoCisgICAgICBk
ZWZhdWx0X3JlY2VpdmVfY29uZmlnLmNyeXB0b19vcHRpb25zLnNmcmFtZS5yZXF1aXJlX2ZyYW1l
X2VuY3J5cHRpb24pCisgICAgICA8PCAiRW5hYmxpbmcgUmVxdWlyZSBGcmFtZSBFbmNyeXB0aW9u
IG1lYW5zIGEgZGVjcnlwdG9yIG11c3QgYmUgYXR0YWNoZWQiOwogfQogCiBURVNUX0YoQ29uZmln
RW5kVG9FbmRUZXN0LCBWZXJpZnlEZWZhdWx0RmxleGZlY1JlY2VpdmVDb25maWdQYXJhbWV0ZXJz
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2V4dGVuZGVkX3JlcG9ydHNfdGVzdHMuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rl
c3RzL2V4dGVuZGVkX3JlcG9ydHNfdGVzdHMuY2MKaW5kZXggYmE1Y2E2OTNmMmI1ZThkNWJhODNm
YjZkM2VhMWMxZWRkNjFkMTgyMi4uNGRlMDQ0MWIzZGZjNDQ0ZmZlM2UwMjJkN2ViZTk0ODNkMDc0
ZWYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9leHRlbmRlZF9yZXBvcnRzX3Rlc3RzLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19l
bmRfdGVzdHMvZXh0ZW5kZWRfcmVwb3J0c190ZXN0cy5jYwpAQCAtOCw5ICs4LDExIEBACiAgKiAg
YmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUuCiAgKi8KIAorI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9jb25m
aWcuaCIKICNpbmNsdWRlICJjYWxsL2Zha2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2Fs
bC9zaW11bGF0ZWRfbmV0d29yay5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCisjaW5j
bHVkZSAidGVzdC9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKICNpbmNs
dWRlICJ0ZXN0L3J0Y3BfcGFja2V0X3BhcnNlci5oIgogCkBAIC0yMSwxMiArMjMsMTQgQEAgY2xh
c3MgRXh0ZW5kZWRSZXBvcnRzRW5kVG9FbmRUZXN0IDogcHVibGljIHRlc3Q6OkNhbGxUZXN0IHt9
OwogY2xhc3MgUnRjcFhyT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKICBw
dWJsaWM6CiAgIFJ0Y3BYck9ic2VydmVyKGJvb2wgZW5hYmxlX3JydHIsCi0gICAgICAgICAgICAg
ICAgIGJvb2wgZW5hYmxlX3RhcmdldF9iaXRyYXRlLAotICAgICAgICAgICAgICAgICBib29sIGVu
YWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlKQorICAgICAgICAgICAgICAgICBib29sIGV4cGVjdF90
YXJnZXRfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGVfemVyb190YXJnZXRf
Yml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlw
ZSBjb250ZW50X3R5cGUpCiAgICAgICA6IEVuZFRvRW5kVGVzdCh0ZXN0OjpDYWxsVGVzdDo6a0Rl
ZmF1bHRUaW1lb3V0TXMpLAogICAgICAgICBlbmFibGVfcnJ0cl8oZW5hYmxlX3JydHIpLAotICAg
ICAgICBlbmFibGVfdGFyZ2V0X2JpdHJhdGVfKGVuYWJsZV90YXJnZXRfYml0cmF0ZSksCisgICAg
ICAgIGV4cGVjdF90YXJnZXRfYml0cmF0ZV8oZXhwZWN0X3RhcmdldF9iaXRyYXRlKSwKICAgICAg
ICAgZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGVfKGVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRl
KSwKKyAgICAgICAgY29udGVudF90eXBlXyhjb250ZW50X3R5cGUpLAogICAgICAgICBzZW50X3J0
Y3Bfc3JfKDApLAogICAgICAgICBzZW50X3J0Y3BfcnJfKDApLAogICAgICAgICBzZW50X3J0Y3Bf
cnJ0cl8oMCksCkBAIC05NSw3ICs5OSw3IEBAIGNsYXNzIFJ0Y3BYck9ic2VydmVyIDogcHVibGlj
IHRlc3Q6OkVuZFRvRW5kVGVzdCB7CiAKICAgICBpZiAoc2VudF9ydGNwX3NyXyA+IGtOdW1SdGNw
UmVwb3J0UGFja2V0c1RvT2JzZXJ2ZSAmJgogICAgICAgICBzZW50X3J0Y3BfcnJfID4ga051bVJ0
Y3BSZXBvcnRQYWNrZXRzVG9PYnNlcnZlICYmCi0gICAgICAgIChzZW50X3J0Y3BfdGFyZ2V0X2Jp
dHJhdGVfIHx8ICFlbmFibGVfdGFyZ2V0X2JpdHJhdGVfKSAmJgorICAgICAgICAoc2VudF9ydGNw
X3RhcmdldF9iaXRyYXRlXyB8fCAhZXhwZWN0X3RhcmdldF9iaXRyYXRlXykgJiYKICAgICAgICAg
KHNlbnRfemVyb19ydGNwX3RhcmdldF9iaXRyYXRlXyB8fCAhZW5hYmxlX3plcm9fdGFyZ2V0X2Jp
dHJhdGVfKSkgewogICAgICAgaWYgKGVuYWJsZV9ycnRyXykgewogICAgICAgICBFWFBFQ1RfR1Qo
c2VudF9ydGNwX3JydHJfLCAwKTsKQEAgLTEwNCw3ICsxMDgsNyBAQCBjbGFzcyBSdGNwWHJPYnNl
cnZlciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QgewogICAgICAgICBFWFBFQ1RfRVEoc2Vu
dF9ydGNwX3JydHJfLCAwKTsKICAgICAgICAgRVhQRUNUX0VRKHNlbnRfcnRjcF9kbHJyXywgMCk7
CiAgICAgICB9Ci0gICAgICBFWFBFQ1RfRVEoZW5hYmxlX3RhcmdldF9iaXRyYXRlXywgc2VudF9y
dGNwX3RhcmdldF9iaXRyYXRlXyk7CisgICAgICBFWFBFQ1RfRVEoZXhwZWN0X3RhcmdldF9iaXRy
YXRlXywgc2VudF9ydGNwX3RhcmdldF9iaXRyYXRlXyk7CiAgICAgICBFWFBFQ1RfRVEoZW5hYmxl
X3plcm9fdGFyZ2V0X2JpdHJhdGVfLCBzZW50X3plcm9fcnRjcF90YXJnZXRfYml0cmF0ZV8pOwog
ICAgICAgb2JzZXJ2YXRpb25fY29tcGxldGVfLlNldCgpOwogICAgIH0KQEAgLTE0NCwxMCArMTQ4
LDcgQEAgY2xhc3MgUnRjcFhyT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsK
ICAgICAgICgqcmVjZWl2ZV9jb25maWdzKVswXS5kZWNvZGVyc1swXS52aWRlb19mb3JtYXQgPQog
ICAgICAgICAgIFNkcFZpZGVvRm9ybWF0KHNlbmRfY29uZmlnLT5ydHAucGF5bG9hZF9uYW1lKTsK
ICAgICB9Ci0gICAgaWYgKGVuYWJsZV90YXJnZXRfYml0cmF0ZV8pIHsKLSAgICAgIC8vIFRhcmdl
dEJpdHJhdGUgb25seSBzaWduYWxlZCBmb3Igc2NyZWVuc2hhcmluZy4KLSAgICAgIGVuY29kZXJf
Y29uZmlnLT5jb250ZW50X3R5cGUgPSBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjpr
U2NyZWVuOwotICAgIH0KKyAgICBlbmNvZGVyX2NvbmZpZy0+Y29udGVudF90eXBlID0gY29udGVu
dF90eXBlXzsKICAgICAoKnJlY2VpdmVfY29uZmlncylbMF0ucnRwLnJ0Y3BfbW9kZSA9IFJ0Y3BN
b2RlOjprUmVkdWNlZFNpemU7CiAgICAgKCpyZWNlaXZlX2NvbmZpZ3MpWzBdLnJ0cC5ydGNwX3hy
LnJlY2VpdmVyX3JlZmVyZW5jZV90aW1lX3JlcG9ydCA9CiAgICAgICAgIGVuYWJsZV9ycnRyXzsK
QEAgLTE2Miw1MCArMTYzLDY1IEBAIGNsYXNzIFJ0Y3BYck9ic2VydmVyIDogcHVibGljIHRlc3Q6
OkVuZFRvRW5kVGVzdCB7CiAKICAgcnRjOjpDcml0aWNhbFNlY3Rpb24gY3JpdF87CiAgIGNvbnN0
IGJvb2wgZW5hYmxlX3JydHJfOwotICBjb25zdCBib29sIGVuYWJsZV90YXJnZXRfYml0cmF0ZV87
CisgIGNvbnN0IGJvb2wgZXhwZWN0X3RhcmdldF9iaXRyYXRlXzsKICAgY29uc3QgYm9vbCBlbmFi
bGVfemVyb190YXJnZXRfYml0cmF0ZV87CisgIGNvbnN0IFZpZGVvRW5jb2RlckNvbmZpZzo6Q29u
dGVudFR5cGUgY29udGVudF90eXBlXzsKICAgaW50IHNlbnRfcnRjcF9zcl87CiAgIGludCBzZW50
X3J0Y3BfcnJfIFJUQ19HVUFSREVEX0JZKCZjcml0Xyk7CiAgIGludCBzZW50X3J0Y3BfcnJ0cl8g
UlRDX0dVQVJERURfQlkoJmNyaXRfKTsKICAgYm9vbCBzZW50X3J0Y3BfdGFyZ2V0X2JpdHJhdGVf
IFJUQ19HVUFSREVEX0JZKCZjcml0Xyk7CiAgIGJvb2wgc2VudF96ZXJvX3J0Y3BfdGFyZ2V0X2Jp
dHJhdGVfIFJUQ19HVUFSREVEX0JZKCZjcml0Xyk7CiAgIGludCBzZW50X3J0Y3BfZGxycl87Ci0g
IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBmb3J3YXJkX3RyYW5zcG9ydF9jb25maWdf
OworICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGZvcndhcmRfdHJhbnNwb3J0X2NvbmZp
Z187CiAgIFNpbXVsYXRlZE5ldHdvcmsqIHNlbmRfc2ltdWxhdGVkX25ldHdvcmtfOwogfTsKIAog
VEVTVF9GKEV4dGVuZGVkUmVwb3J0c0VuZFRvRW5kVGVzdCwKICAgICAgICBUZXN0RXh0ZW5kZWRS
ZXBvcnRzV2l0aFJydHJXaXRob3V0VGFyZ2V0Qml0cmF0ZSkgewotICBSdGNwWHJPYnNlcnZlciB0
ZXN0KC8qZW5hYmxlX3JydHI9Ki90cnVlLCAvKmVuYWJsZV90YXJnZXRfYml0cmF0ZT0qL2ZhbHNl
LAotICAgICAgICAgICAgICAgICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9m
YWxzZSk7CisgIFJ0Y3BYck9ic2VydmVyIHRlc3QoLyplbmFibGVfcnJ0cj0qL3RydWUsIC8qZXhw
ZWN0X3RhcmdldF9iaXRyYXRlPSovZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgLyplbmFi
bGVfemVyb190YXJnZXRfYml0cmF0ZT0qL2ZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIFZp
ZGVvRW5jb2RlckNvbmZpZzo6Q29udGVudFR5cGU6OmtSZWFsdGltZVZpZGVvKTsKICAgUnVuQmFz
ZVRlc3QoJnRlc3QpOwogfQogCiBURVNUX0YoRXh0ZW5kZWRSZXBvcnRzRW5kVG9FbmRUZXN0LAog
ICAgICAgIFRlc3RFeHRlbmRlZFJlcG9ydHNXaXRob3V0UnJ0cldpdGhvdXRUYXJnZXRCaXRyYXRl
KSB7Ci0gIFJ0Y3BYck9ic2VydmVyIHRlc3QoLyplbmFibGVfcnJ0cj0qL2ZhbHNlLCAvKmVuYWJs
ZV90YXJnZXRfYml0cmF0ZT0qL2ZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIC8qZW5hYmxl
X3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSk7CisgIFJ0Y3BYck9ic2VydmVyIHRlc3QoLypl
bmFibGVfcnJ0cj0qL2ZhbHNlLCAvKmV4cGVjdF90YXJnZXRfYml0cmF0ZT0qL2ZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJhdGU9Ki9mYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAgICBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjpr
UmVhbHRpbWVWaWRlbyk7CiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KIAogVEVTVF9GKEV4dGVu
ZGVkUmVwb3J0c0VuZFRvRW5kVGVzdCwKICAgICAgICBUZXN0RXh0ZW5kZWRSZXBvcnRzV2l0aFJy
dHJXaXRoVGFyZ2V0Qml0cmF0ZSkgewotICBSdGNwWHJPYnNlcnZlciB0ZXN0KC8qZW5hYmxlX3Jy
dHI9Ki90cnVlLCAvKmVuYWJsZV90YXJnZXRfYml0cmF0ZT0qL3RydWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgLyplbmFibGVfemVyb190YXJnZXRfYml0cmF0ZT0qL2ZhbHNlKTsKKyAgUnRjcFhy
T2JzZXJ2ZXIgdGVzdCgvKmVuYWJsZV9ycnRyPSovdHJ1ZSwgLypleHBlY3RfdGFyZ2V0X2JpdHJh
dGU9Ki90cnVlLAorICAgICAgICAgICAgICAgICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2Jp
dHJhdGU9Ki9mYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBWaWRlb0VuY29kZXJDb25maWc6
OkNvbnRlbnRUeXBlOjprU2NyZWVuKTsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCiBURVNU
X0YoRXh0ZW5kZWRSZXBvcnRzRW5kVG9FbmRUZXN0LAogICAgICAgIFRlc3RFeHRlbmRlZFJlcG9y
dHNXaXRob3V0UnJ0cldpdGhUYXJnZXRCaXRyYXRlKSB7Ci0gIFJ0Y3BYck9ic2VydmVyIHRlc3Qo
LyplbmFibGVfcnJ0cj0qL2ZhbHNlLCAvKmVuYWJsZV90YXJnZXRfYml0cmF0ZT0qL3RydWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgLyplbmFibGVfemVyb190YXJnZXRfYml0cmF0ZT0qL2ZhbHNl
KTsKKyAgUnRjcFhyT2JzZXJ2ZXIgdGVzdCgvKmVuYWJsZV9ycnRyPSovZmFsc2UsIC8qZXhwZWN0
X3RhcmdldF9iaXRyYXRlPSovdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAvKmVuYWJsZV96
ZXJvX3RhcmdldF9iaXRyYXRlPSovZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgVmlkZW9F
bmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1NjcmVlbik7CisgIFJ1bkJhc2VUZXN0KCZ0ZXN0
KTsKK30KKworVEVTVF9GKEV4dGVuZGVkUmVwb3J0c0VuZFRvRW5kVGVzdCwKKyAgICAgICBUZXN0
RXh0ZW5kZWRSZXBvcnRzV2l0aG91dFJydHJXaXRoVGFyZ2V0Qml0cmF0ZUZyb21GaWVsZFRyaWFs
KSB7CisgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFscygiV2ViUlRDLVRhcmdl
dC1CaXRyYXRlLVJ0Y3AvRW5hYmxlZC8iKTsKKyAgUnRjcFhyT2JzZXJ2ZXIgdGVzdCgvKmVuYWJs
ZV9ycnRyPSovZmFsc2UsIC8qZXhwZWN0X3RhcmdldF9iaXRyYXRlPSovdHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAvKmVuYWJsZV96ZXJvX3RhcmdldF9iaXRyYXRlPSovZmFsc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1JlYWx0
aW1lVmlkZW8pOwogICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9CiAKIFRFU1RfRihFeHRlbmRlZFJl
cG9ydHNFbmRUb0VuZFRlc3QsCiAgICAgICAgVGVzdEV4dGVuZGVkUmVwb3J0c0NhblNpZ25hbFpl
cm9UYXJnZXRCaXRyYXRlKSB7Ci0gIFJ0Y3BYck9ic2VydmVyIHRlc3QoLyplbmFibGVfcnJ0cj0q
L2ZhbHNlLCAvKmVuYWJsZV90YXJnZXRfYml0cmF0ZT0qL3RydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgLyplbmFibGVfemVyb190YXJnZXRfYml0cmF0ZT0qL3RydWUpOworICBSdGNwWHJPYnNl
cnZlciB0ZXN0KC8qZW5hYmxlX3JydHI9Ki9mYWxzZSwgLypleHBlY3RfdGFyZ2V0X2JpdHJhdGU9
Ki90cnVlLAorICAgICAgICAgICAgICAgICAgICAgIC8qZW5hYmxlX3plcm9fdGFyZ2V0X2JpdHJh
dGU9Ki90cnVlLAorICAgICAgICAgICAgICAgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZzo6Q29u
dGVudFR5cGU6OmtTY3JlZW4pOwogICBSdW5CYXNlVGVzdCgmdGVzdCk7CiB9CiB9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2ZlY190ZXN0cy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMv
ZmVjX3Rlc3RzLmNjCmluZGV4IDAzMDBkMTJmOGJjYWM2ZDJhYTI4YmViZmZkMTI1MTg2ODk0Mzgz
ZjMuLjJjNTNjY2M3Y2JlYzM0MDk5ZDc4ODA5ZmQ1N2Y2NmY0NDFhNjkzYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19l
bmRfdGVzdHMvZmVjX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvZmVjX3Rlc3RzLmNjCkBAIC05LDYg
KzksNyBAQAogICovCiAKICNpbmNsdWRlICJhcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgor
I2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5o
IgogI2luY2x1ZGUgImNhbGwvZmFrZV9uZXR3b3JrX3BpcGUuaCIKICNpbmNsdWRlICJjYWxsL3Np
bXVsYXRlZF9uZXR3b3JrLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZGVjb2Rl
cmZhY3RvcnkuaCIKQEAgLTE2LDcgKzE3LDYgQEAKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2Nv
ZGluZy9jb2RlY3MvdnA4L2luY2x1ZGUvdnA4LmgiCiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3Qu
aCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlv
bl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5j
bHVkZSAidGVzdC9ydGNwX3BhY2tldF9wYXJzZXIuaCIKIApAQCAtMjM0LDcgKzIzNCw3IEBAIGNs
YXNzIEZsZXhmZWNSZW5kZXJPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QsCiAg
ICAgICBDYWxsKiBzZW5kZXJfY2FsbCkgb3ZlcnJpZGUgewogICAgIC8vIEF0IGxvdyBSVFQgKDwg
a0xvd1J0dE5hY2tNcykgLT4gTkFDSyBvbmx5LCBubyBGRUMuCiAgICAgY29uc3QgaW50IGtOZXR3
b3JrRGVsYXlNcyA9IDEwMDsKLSAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29u
ZmlnOworICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICAgIGNvbmZp
Zy5xdWV1ZV9kZWxheV9tcyA9IGtOZXR3b3JrRGVsYXlNczsKICAgICByZXR1cm4gbmV3IHRlc3Q6
OlBhY2tldFRyYW5zcG9ydCgKICAgICAgICAgdGFza19xdWV1ZSwgc2VuZGVyX2NhbGwsIHRoaXMs
IHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1NlbmRlciwKQEAgLTQyMSw3ICs0MjEsNyBAQCBURVNU
X0YoRmVjRW5kVG9FbmRUZXN0LCBSZWNlaXZlZFVscGZlY1BhY2tldHNOb3ROYWNrZWQpIHsKICAg
ICAgIC8vIEF0IGxvdyBSVFQgKDwga0xvd1J0dE5hY2tNcykgLT4gTkFDSyBvbmx5LCBubyBGRUMu
CiAgICAgICAvLyBDb25maWd1cmUgc29tZSBuZXR3b3JrIGRlbGF5LgogICAgICAgY29uc3QgaW50
IGtOZXR3b3JrRGVsYXlNcyA9IDUwOwotICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29u
ZmlnIGNvbmZpZzsKKyAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwog
ICAgICAgY29uZmlnLnF1ZXVlX2RlbGF5X21zID0ga05ldHdvcmtEZWxheU1zOwogICAgICAgcmV0
dXJuIG5ldyB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQoCiAgICAgICAgICAgdGFza19xdWV1ZSwgc2Vu
ZGVyX2NhbGwsIHRoaXMsIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1NlbmRlciwKQEAgLTQzMyw5
ICs0MzMsMTAgQEAgVEVTVF9GKEZlY0VuZFRvRW5kVGVzdCwgUmVjZWl2ZWRVbHBmZWNQYWNrZXRz
Tm90TmFja2VkKSB7CiAKICAgICAvLyBUT0RPKGhvbG1lcik6IEludmVzdGlnYXRlIHdoeSB3ZSBk
b24ndCBzZW5kIEZFQyBwYWNrZXRzIHdoZW4gdGhlIGJpdHJhdGUKICAgICAvLyBpcyAxMCBrYnBz
LgotICAgIHZvaWQgTW9kaWZ5U2VuZGVyQ2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZykg
b3ZlcnJpZGUgeworICAgIHZvaWQgTW9kaWZ5U2VuZGVyQml0cmF0ZUNvbmZpZygKKyAgICAgICAg
Qml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykgb3ZlcnJpZGUgewogICAgICAgY29u
c3QgaW50IGtNaW5CaXRyYXRlQnBzID0gMzAwMDA7Ci0gICAgICBjb25maWctPmJpdHJhdGVfY29u
ZmlnLm1pbl9iaXRyYXRlX2JwcyA9IGtNaW5CaXRyYXRlQnBzOworICAgICAgYml0cmF0ZV9jb25m
aWctPm1pbl9iaXRyYXRlX2JwcyA9IGtNaW5CaXRyYXRlQnBzOwogICAgIH0KIAogICAgIHZvaWQg
TW9kaWZ5VmlkZW9Db25maWdzKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9mcmFtZV9lbmNyeXB0aW9u
X3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vZW5kX3RvX2VuZF90ZXN0cy9mcmFtZV9lbmNyeXB0aW9uX3Rlc3RzLmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhjZDdiNDc4NDkzNTk0MDEyYWZhYzE3Y2YzNTYzZTk3ZWM0MTQ4ZjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRf
dG9fZW5kX3Rlc3RzL2ZyYW1lX2VuY3J5cHRpb25fdGVzdHMuY2MKQEAgLTAsMCArMSw4MSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0
aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAq
ICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMg
bWF5CisgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCisgKi8KKworI2luY2x1ZGUgImFwaS90ZXN0L2Zha2VfZnJhbWVfZGVjcnlw
dG9yLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3QvZmFrZV9mcmFtZV9lbmNyeXB0b3IuaCIKKyNpbmNs
dWRlICJtZWRpYS9lbmdpbmUvaW50ZXJuYWxkZWNvZGVyZmFjdG9yeS5oIgorI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKKyNpbmNsdWRlICJ0
ZXN0L2NhbGxfdGVzdC5oIgorI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKKyNpbmNsdWRl
ICJ0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBGcmFtZUVuY3J5
cHRpb25FbmRUb0VuZFRlc3QgOiBwdWJsaWMgdGVzdDo6Q2FsbFRlc3QgeworIHB1YmxpYzoKKyAg
RnJhbWVFbmNyeXB0aW9uRW5kVG9FbmRUZXN0KCkgPSBkZWZhdWx0OworCisgcHJpdmF0ZToKKyAg
Ly8gR2VuZXJpY0Rlc2NyaXB0b3IgaXMgcmVxdWlyZWQgZm9yIEZyYW1lRW5jcnlwdGlvbiB0byB3
b3JrLgorICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbHNfeyJXZWJSVEMtR2Vu
ZXJpY0Rlc2NyaXB0b3IvRW5hYmxlZC8ifTsKK307CisKKy8vIFZhbGlkYXRlcyB0aGF0IHBheWxv
YWRzIGNhbm5vdCBiZSBzZW50IHdpdGhvdXQgYSBmcmFtZSBlbmNyeXB0b3IgYW5kIGZyYW1lCisv
LyBkZWNyeXB0b3IgYXR0YWNoZWQuCitURVNUX0YoRnJhbWVFbmNyeXB0aW9uRW5kVG9FbmRUZXN0
LCBSZXF1aXJlRnJhbWVFbmNyeXB0aW9uRW5mb3JjZWQpIHsKKyAgY2xhc3MgRGVjcnlwdGVkRnJh
bWVPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFt
ZT4geworICAgcHVibGljOgorICAgIERlY3J5cHRlZEZyYW1lT2JzZXJ2ZXIoKQorICAgICAgICA6
IEVuZFRvRW5kVGVzdChrRGVmYXVsdFRpbWVvdXRNcyksCisgICAgICAgICAgZW5jb2Rlcl9mYWN0
b3J5XyhbXSgpIHsgcmV0dXJuIFZQOEVuY29kZXI6OkNyZWF0ZSgpOyB9KSB7fQorCisgICBwcml2
YXRlOgorICAgIHZvaWQgTW9kaWZ5VmlkZW9Db25maWdzKAorICAgICAgICBWaWRlb1NlbmRTdHJl
YW06OkNvbmZpZyogc2VuZF9jb25maWcsCisgICAgICAgIHN0ZDo6dmVjdG9yPFZpZGVvUmVjZWl2
ZVN0cmVhbTo6Q29uZmlnPiogcmVjZWl2ZV9jb25maWdzLAorICAgICAgICBWaWRlb0VuY29kZXJD
b25maWcqIGVuY29kZXJfY29uZmlnKSBvdmVycmlkZSB7CisgICAgICAvLyBVc2UgVlA4IGluc3Rl
YWQgb2YgRkFLRS4KKyAgICAgIHNlbmRfY29uZmlnLT5lbmNvZGVyX3NldHRpbmdzLmVuY29kZXJf
ZmFjdG9yeSA9ICZlbmNvZGVyX2ZhY3RvcnlfOworICAgICAgc2VuZF9jb25maWctPnJ0cC5wYXls
b2FkX25hbWUgPSAiVlA4IjsKKyAgICAgIHNlbmRfY29uZmlnLT5ydHAucGF5bG9hZF90eXBlID0g
a1ZpZGVvU2VuZFBheWxvYWRUeXBlOworICAgICAgc2VuZF9jb25maWctPmZyYW1lX2VuY3J5cHRv
ciA9IG5ldyBGYWtlRnJhbWVFbmNyeXB0b3IoKTsKKyAgICAgIHNlbmRfY29uZmlnLT5jcnlwdG9f
b3B0aW9ucy5zZnJhbWUucmVxdWlyZV9mcmFtZV9lbmNyeXB0aW9uID0gdHJ1ZTsKKyAgICAgIGVu
Y29kZXJfY29uZmlnLT5jb2RlY190eXBlID0ga1ZpZGVvQ29kZWNWUDg7CisgICAgICBWaWRlb1Jl
Y2VpdmVTdHJlYW06OkRlY29kZXIgZGVjb2RlciA9CisgICAgICAgICAgdGVzdDo6Q3JlYXRlTWF0
Y2hpbmdEZWNvZGVyKCpzZW5kX2NvbmZpZyk7CisgICAgICBkZWNvZGVyLmRlY29kZXJfZmFjdG9y
eSA9ICZkZWNvZGVyX2ZhY3RvcnlfOworICAgICAgZm9yIChhdXRvJiByZWN2X2NvbmZpZyA6ICpy
ZWNlaXZlX2NvbmZpZ3MpIHsKKyAgICAgICAgcmVjdl9jb25maWcuZGVjb2RlcnMuY2xlYXIoKTsK
KyAgICAgICAgcmVjdl9jb25maWcuZGVjb2RlcnMucHVzaF9iYWNrKGRlY29kZXIpOworICAgICAg
ICByZWN2X2NvbmZpZy5yZW5kZXJlciA9IHRoaXM7CisgICAgICAgIHJlY3ZfY29uZmlnLmZyYW1l
X2RlY3J5cHRvciA9IG5ldyBGYWtlRnJhbWVEZWNyeXB0b3IoKTsKKyAgICAgICAgcmVjdl9jb25m
aWcuY3J5cHRvX29wdGlvbnMuc2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbiA9IHRydWU7
CisgICAgICB9CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUgdGhhdCByb3RhdGlvbiBpcyBwcmVz
ZXJ2ZWQuCisgICAgdm9pZCBPbkZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVvX2ZyYW1lKSBv
dmVycmlkZSB7CisgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7CisgICAgfQorCisg
ICAgdm9pZCBQZXJmb3JtVGVzdCgpIG92ZXJyaWRlIHsKKyAgICAgIEVYUEVDVF9UUlVFKFdhaXQo
KSkKKyAgICAgICAgICA8PCAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGRlY3J5cHRlZCBmcmFtZXMg
dG8gYmUgcmVuZGVyZWQuIjsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNv
ZGVyPiBlbmNvZGVyXzsKKyAgICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgZW5j
b2Rlcl9mYWN0b3J5XzsKKyAgICBJbnRlcm5hbERlY29kZXJGYWN0b3J5IGRlY29kZXJfZmFjdG9y
eV87CisgIH0gdGVzdDsKKworICBSdW5CYXNlVGVzdCgmdGVzdCk7Cit9Cit9ICAvLyBuYW1lc3Bh
Y2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL2hpc3RvZ3JhbV90ZXN0cy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVz
dHMvaGlzdG9ncmFtX3Rlc3RzLmNjCmluZGV4IGE0YWEwYzgxMGE5NjI5NWE5ZjAwYzhmM2JlYzA4
ZDc0OThmZjYyMmUuLjMxMjkyNGM5ODZiODYyYzgxYWFlNjAwY2EwNjdhNmE5MWU1ZTRmYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L2VuZF90b19lbmRfdGVzdHMvaGlzdG9ncmFtX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvaGlzdG9n
cmFtX3Rlc3RzLmNjCkBAIC05LDEwICs5LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgImFic2wvdHlw
ZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19l
bmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA4L2luY2x1ZGUvdnA4LmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0
cmljcy5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCi0jaW5jbHVkZSAidGVzdC9mdW5j
dGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAK
IG5hbWVzcGFjZSB3ZWJydGMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9jb2RlY19yZWNl
aXZlX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9jb2RlY19yZWNlaXZlX3Rlc3RzLmNjCmluZGV4
IGUxM2JjMzUxY2ExY2M3MDczOGE0MWJjMzBhMzMyZmQxZGM3Yjk4N2EuLmM1OGYwZmUxNmE4ZTJl
YWQwNTcwOWE4NjEyN2IzOWQ1NzRjMjNkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvbXVsdGlfY29k
ZWNfcmVjZWl2ZV90ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL211bHRpX2NvZGVjX3JlY2VpdmVfdGVz
dHMuY2MKQEAgLTksMTMgKzksMTMgQEAKICAqLwogCiAjaW5jbHVkZSAiYXBpL3Rlc3Qvc2ltdWxh
dGVkX25ldHdvcmsuaCIKKyNpbmNsdWRlICJhcGkvdGVzdC92aWRlby9mdW5jdGlvbl92aWRlb19l
bmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJjYWxsL2Zha2VfbmV0d29ya19waXBlLmgiCiAj
aW5jbHVkZSAiY2FsbC9zaW11bGF0ZWRfbmV0d29yay5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlk
ZW9fY29kaW5nL2NvZGVjcy9oMjY0L2luY2x1ZGUvaDI2NC5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
dmlkZW9fY29kaW5nL2NvZGVjcy92cDgvaW5jbHVkZS92cDguaCIKICNpbmNsdWRlICJtb2R1bGVz
L3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L2luY2x1ZGUvdnA5LmgiCiAjaW5jbHVkZSAidGVzdC9j
YWxsX3Rlc3QuaCIKLSNpbmNsdWRlICJ0ZXN0L2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9y
eS5oIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC01
MSwyOSArNTEsNiBAQCBpbnQgUmVtb3ZlT2xkZXJPckVxdWFsKHVpbnQzMl90IHRpbWVzdGFtcCwg
c3RkOjp2ZWN0b3I8dWludDMyX3Q+KiB0aW1lc3RhbXBzKSB7CiAgIHJldHVybiBudW1fcmVtb3Zl
ZDsKIH0KIAotY2xhc3MgVmlkZW9TdHJlYW1GYWN0b3J5VGVzdAotICAgIDogcHVibGljIFZpZGVv
RW5jb2RlckNvbmZpZzo6VmlkZW9TdHJlYW1GYWN0b3J5SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0g
IGV4cGxpY2l0IFZpZGVvU3RyZWFtRmFjdG9yeVRlc3Qoc2l6ZV90IG51bV90ZW1wb3JhbF9sYXll
cnMpCi0gICAgICA6IG51bV90ZW1wb3JhbF9sYXllcnNfKG51bV90ZW1wb3JhbF9sYXllcnMpIHt9
Ci0KLSBwcml2YXRlOgotICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gQ3JlYXRlRW5jb2RlclN0
cmVhbXMoCi0gICAgICBpbnQgd2lkdGgsCi0gICAgICBpbnQgaGVpZ2h0LAotICAgICAgY29uc3Qg
VmlkZW9FbmNvZGVyQ29uZmlnJiBlbmNvZGVyX2NvbmZpZykgb3ZlcnJpZGUgewotICAgIHN0ZDo6
dmVjdG9yPFZpZGVvU3RyZWFtPiBzdHJlYW1zID0KLSAgICAgICAgdGVzdDo6Q3JlYXRlVmlkZW9T
dHJlYW1zKHdpZHRoLCBoZWlnaHQsIGVuY29kZXJfY29uZmlnKTsKLQotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZW5jb2Rlcl9jb25maWcubnVtYmVyX29mX3N0cmVhbXM7ICsraSkKLSAgICAg
IHN0cmVhbXNbaV0ubnVtX3RlbXBvcmFsX2xheWVycyA9IG51bV90ZW1wb3JhbF9sYXllcnNfOwot
Ci0gICAgcmV0dXJuIHN0cmVhbXM7Ci0gIH0KLQotICBjb25zdCBzaXplX3QgbnVtX3RlbXBvcmFs
X2xheWVyc187Ci19OwotCiBjbGFzcyBGcmFtZU9ic2VydmVyIDogcHVibGljIHRlc3Q6OlJ0cFJ0
Y3BPYnNlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJ
bnRlcmZhY2U8VmlkZW9GcmFtZT4gewogIHB1YmxpYzoKQEAgLTE1MywxOCArMTMwLDE2IEBAIGNs
YXNzIE11bHRpQ29kZWNSZWNlaXZlVGVzdCA6IHB1YmxpYyB0ZXN0OjpDYWxsVGVzdCB7CiAgICAg
ICAgICAgJnRhc2tfcXVldWVfLCBzZW5kZXJfY2FsbF8uZ2V0KCksICZvYnNlcnZlcl8sCiAgICAg
ICAgICAgdGVzdDo6UGFja2V0VHJhbnNwb3J0OjprU2VuZGVyLCBrUGF5bG9hZFR5cGVNYXAsCiAg
ICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICAg
ICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSwKLSAgICAgICAgICAgICAgYWJzbDo6bWFrZV91
bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29y
a1NpbXVsYXRpb25Db25maWcoKSkpKSk7CisgICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGlt
ZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlv
ckNvbmZpZygpKSkpKTsKICAgICAgIHNlbmRfdHJhbnNwb3J0Xy0+U2V0UmVjZWl2ZXIocmVjZWl2
ZXJfY2FsbF8tPlJlY2VpdmVyKCkpOwogCiAgICAgICByZWNlaXZlX3RyYW5zcG9ydF8ucmVzZXQo
bmV3IHRlc3Q6OlBhY2tldFRyYW5zcG9ydCgKICAgICAgICAgICAmdGFza19xdWV1ZV8sIHJlY2Vp
dmVyX2NhbGxfLmdldCgpLCAmb2JzZXJ2ZXJfLAogICAgICAgICAgIHRlc3Q6OlBhY2tldFRyYW5z
cG9ydDo6a1JlY2VpdmVyLCBrUGF5bG9hZFR5cGVNYXAsCiAgICAgICAgICAgYWJzbDo6bWFrZV91
bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1l
Q2xvY2soKSwKLSAgICAgICAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29y
az4oCi0gICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkp
KSk7CisgICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6Om1ha2Vf
dW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSkpKTsKICAgICAg
IHJlY2VpdmVfdHJhbnNwb3J0Xy0+U2V0UmVjZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZlcigp
KTsKICAgICB9KTsKICAgfQpAQCAtMjE5LDkgKzE5NCw5IEBAIHZvaWQgTXVsdGlDb2RlY1JlY2Vp
dmVUZXN0OjpDb25maWd1cmVFbmNvZGVyKGNvbnN0IENvZGVjQ29uZmlnJiBjb25maWcpIHsKICAg
ICAgIFBheWxvYWROYW1lVG9QYXlsb2FkVHlwZShjb25maWcucGF5bG9hZF9uYW1lKTsKICAgR2V0
VmlkZW9FbmNvZGVyQ29uZmlnKCktPmNvZGVjX3R5cGUgPQogICAgICAgUGF5bG9hZFN0cmluZ1Rv
Q29kZWNUeXBlKGNvbmZpZy5wYXlsb2FkX25hbWUpOwotICBHZXRWaWRlb0VuY29kZXJDb25maWco
KS0+dmlkZW9fc3RyZWFtX2ZhY3RvcnkgPQotICAgICAgbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVj
dDxWaWRlb1N0cmVhbUZhY3RvcnlUZXN0PigKLSAgICAgICAgICBjb25maWcubnVtX3RlbXBvcmFs
X2xheWVycyk7CisgIEVYUEVDVF9FUSgxdSwgR2V0VmlkZW9FbmNvZGVyQ29uZmlnKCktPnNpbXVs
Y2FzdF9sYXllcnMuc2l6ZSgpKTsKKyAgR2V0VmlkZW9FbmNvZGVyQ29uZmlnKCktPnNpbXVsY2Fz
dF9sYXllcnNbMF0ubnVtX3RlbXBvcmFsX2xheWVycyA9CisgICAgICBjb25maWcubnVtX3RlbXBv
cmFsX2xheWVyczsKIH0KIAogdm9pZCBNdWx0aUNvZGVjUmVjZWl2ZVRlc3Q6OlJ1blRlc3RXaXRo
Q29kZWNzKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdGVyLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90
ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdGVyLmNjCmluZGV4IDdkNjY5NzYwMDFhZGIyZmQ0NTY0Njdj
ZTdmNGNiNzZlYmJmMjUyYTIuLjVkNWRhNjVjYThmN2Y4MDUxMmVjYzBmNmE4MGRkNTZlYTVlZmJm
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvbXVsdGlfc3RyZWFtX3Rlc3Rlci5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rl
c3RzL211bHRpX3N0cmVhbV90ZXN0ZXIuY2MKQEAgLTE1LDYgKzE1LDggQEAKICNpbmNsdWRlIDx2
ZWN0b3I+CiAKICNpbmNsdWRlICJhcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgorI2luY2x1
ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgorI2lu
Y2x1ZGUgImFwaS92aWRlby9idWlsdGluX3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rvcnku
aCIKICNpbmNsdWRlICJjYWxsL2Zha2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9z
aW11bGF0ZWRfbmV0d29yay5oIgogI2luY2x1ZGUgImxvZ2dpbmcvcnRjX2V2ZW50X2xvZy9ydGNf
ZXZlbnRfbG9nLmgiCkBAIC0yMiw3ICsyNCw2IEBACiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0
LmgiCiAjaW5jbHVkZSAidGVzdC9lbmNvZGVyX3NldHRpbmdzLmgiCi0jaW5jbHVkZSAidGVzdC9m
dW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiAK
QEAgLTU0LDYgKzU1LDggQEAgdm9pZCBNdWx0aVN0cmVhbVRlc3Rlcjo6UnVuVGVzdCgpIHsKICAg
dGVzdDo6RnJhbWVHZW5lcmF0b3JDYXB0dXJlciogZnJhbWVfZ2VuZXJhdG9yc1trTnVtU3RyZWFt
c107CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9FbmNvZGVyRmFjdG9yeSBlbmNvZGVyX2ZhY3Rvcnko
CiAgICAgICBbXSgpIHsgcmV0dXJuIFZQOEVuY29kZXI6OkNyZWF0ZSgpOyB9KTsKKyAgc3RkOjp1
bmlxdWVfcHRyPFZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rvcnk+IGJpdHJhdGVfYWxsb2NhdG9y
X2ZhY3RvcnkgPQorICAgICAgQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZhY3Rv
cnkoKTsKICAgSW50ZXJuYWxEZWNvZGVyRmFjdG9yeSBkZWNvZGVyX2ZhY3Rvcnk7CiAKICAgdGFz
a19xdWV1ZV8tPlNlbmRUYXNrKFsmXSgpIHsKQEAgLTc1LDYgKzc4LDggQEAgdm9pZCBNdWx0aVN0
cmVhbVRlc3Rlcjo6UnVuVGVzdCgpIHsKICAgICAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnIHNl
bmRfY29uZmlnKHNlbmRlcl90cmFuc3BvcnQuZ2V0KCkpOwogICAgICAgc2VuZF9jb25maWcucnRw
LnNzcmNzLnB1c2hfYmFjayhzc3JjKTsKICAgICAgIHNlbmRfY29uZmlnLmVuY29kZXJfc2V0dGlu
Z3MuZW5jb2Rlcl9mYWN0b3J5ID0gJmVuY29kZXJfZmFjdG9yeTsKKyAgICAgIHNlbmRfY29uZmln
LmVuY29kZXJfc2V0dGluZ3MuYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICAgICAg
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5nZXQoKTsKICAgICAgIHNlbmRfY29uZmlnLnJ0cC5w
YXlsb2FkX25hbWUgPSAiVlA4IjsKICAgICAgIHNlbmRfY29uZmlnLnJ0cC5wYXlsb2FkX3R5cGUg
PSBrVmlkZW9QYXlsb2FkVHlwZTsKICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZyBlbmNvZGVyX2Nv
bmZpZzsKQEAgLTE0Myw5ICsxNDgsOSBAQCB0ZXN0OjpEaXJlY3RUcmFuc3BvcnQqIE11bHRpU3Ry
ZWFtVGVzdGVyOjpDcmVhdGVTZW5kVHJhbnNwb3J0KAogICAgIENhbGwqIHNlbmRlcl9jYWxsKSB7
CiAgIHJldHVybiBuZXcgdGVzdDo6RGlyZWN0VHJhbnNwb3J0KAogICAgICAgdGFza19xdWV1ZSwK
LSAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oQ2xvY2s6OkdldFJlYWxU
aW1lQ2xvY2soKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkp
LAorICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKKyAgICAgICAgICBD
bG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAorICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNp
bXVsYXRlZE5ldHdvcms+KEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpLAogICAgICAg
c2VuZGVyX2NhbGwsIHBheWxvYWRfdHlwZV9tYXBfKTsKIH0KIApAQCAtMTU0LDkgKzE1OSw5IEBA
IHRlc3Q6OkRpcmVjdFRyYW5zcG9ydCogTXVsdGlTdHJlYW1UZXN0ZXI6OkNyZWF0ZVJlY2VpdmVU
cmFuc3BvcnQoCiAgICAgQ2FsbCogcmVjZWl2ZXJfY2FsbCkgewogICByZXR1cm4gbmV3IHRlc3Q6
OkRpcmVjdFRyYW5zcG9ydCgKICAgICAgIHRhc2tfcXVldWUsCi0gICAgICBhYnNsOjptYWtlX3Vu
aXF1ZTxGYWtlTmV0d29ya1BpcGU+KENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVs
YXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgIGFic2w6Om1ha2Vf
dW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCisgICAgICAgICAgQ2xvY2s6OkdldFJlYWxUaW1lQ2xv
Y2soKSwKKyAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPihCdWls
dEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAgIHJlY2VpdmVyX2NhbGwsIHBheWxv
YWRfdHlwZV9tYXBfKTsKIH0KIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRf
dGVzdHMvbXVsdGlfc3RyZWFtX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdHMu
Y2MKaW5kZXggZGJlYWQyNDU2NGZlMGQ3MGJlMDAwMWZhZjEyNTkyNjM5Y2FiNGM1Yi4uOWM3NTRm
YjcwYTU3ZGU2N2ZkMDJhMDQ0MjBlODdmMTk2NWMzNWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9t
dWx0aV9zdHJlYW1fdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9tdWx0aV9zdHJlYW1fdGVzdHMuY2MK
QEAgLTMwLDEwICszMCw3IEBAIFRFU1RfRihNdWx0aVN0cmVhbUVuZFRvRW5kVGVzdCwgU2VuZHNB
bmRSZWNlaXZlc011bHRpcGxlU3RyZWFtcykgewogICAgIFZpZGVvT3V0cHV0T2JzZXJ2ZXIoY29u
c3QgTXVsdGlTdHJlYW1UZXN0ZXI6OkNvZGVjU2V0dGluZ3MmIHNldHRpbmdzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3Qgc3NyYywKICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3Q6OkZyYW1lR2VuZXJhdG9yQ2FwdHVyZXIqKiBmcmFtZV9nZW5lcmF0b3IpCi0gICAgICAgIDog
c2V0dGluZ3NfKHNldHRpbmdzKSwKLSAgICAgICAgICBzc3JjXyhzc3JjKSwKLSAgICAgICAgICBm
cmFtZV9nZW5lcmF0b3JfKGZyYW1lX2dlbmVyYXRvciksCi0gICAgICAgICAgZG9uZV8oZmFsc2Us
IGZhbHNlKSB7fQorICAgICAgICA6IHNldHRpbmdzXyhzZXR0aW5ncyksIHNzcmNfKHNzcmMpLCBm
cmFtZV9nZW5lcmF0b3JfKGZyYW1lX2dlbmVyYXRvcikge30KIAogICAgIHZvaWQgT25GcmFtZShj
b25zdCBWaWRlb0ZyYW1lJiB2aWRlb19mcmFtZSkgb3ZlcnJpZGUgewogICAgICAgRVhQRUNUX0VR
KHNldHRpbmdzXy53aWR0aCwgdmlkZW9fZnJhbWUud2lkdGgoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rl
c3RzL25ldHdvcmtfc3RhdGVfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL25ldHdvcmtfc3RhdGVfdGVzdHMu
Y2MKaW5kZXggOTM3Nzc3ZjZiMzQ3OTI3NjUwNjczOWQyNWEzODY5YzBjZWE2YzBjOC4uZDY2NjM0
YTEzNWYzMmFhNjZiYjAzMmZhMTNiYTlmN2IxM2QyMjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9u
ZXR3b3JrX3N0YXRlX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvbmV0d29ya19zdGF0ZV90ZXN0cy5j
YwpAQCAtMTE4LDkgKzExOCw5IEBAIHZvaWQgTmV0d29ya1N0YXRlRW5kVG9FbmRUZXN0OjpWZXJp
ZnlOZXdWaWRlb1JlY2VpdmVTdHJlYW1zUmVzcGVjdE5ldHdvcmtTdGF0ZSgKICAgICByZWNlaXZl
cl9jYWxsXy0+U2lnbmFsQ2hhbm5lbE5ldHdvcmtTdGF0ZShuZXR3b3JrX3RvX2JyaW5nX3VwLCBr
TmV0d29ya1VwKTsKICAgICBzZW5kZXJfdHJhbnNwb3J0ID0gYWJzbDo6bWFrZV91bmlxdWU8dGVz
dDo6RGlyZWN0VHJhbnNwb3J0PigKICAgICAgICAgJnRhc2tfcXVldWVfLAotICAgICAgICBhYnNs
OjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KAotICAgICAgICAgICAgQ2xvY2s6OkdldFJl
YWxUaW1lQ2xvY2soKSwgYWJzbDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11
bGF0aW9uQ29uZmlnKCkpKSwKKyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQ
aXBlPihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluTmV0
d29ya0JlaGF2aW9yQ29uZmlnKCkpKSwKICAgICAgICAgc2VuZGVyX2NhbGxfLmdldCgpLCBwYXls
b2FkX3R5cGVfbWFwXyk7CiAgICAgc2VuZGVyX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIocmVjZWl2
ZXJfY2FsbF8tPlJlY2VpdmVyKCkpOwogICAgIENyZWF0ZVNlbmRDb25maWcoMSwgMCwgMCwgc2Vu
ZGVyX3RyYW5zcG9ydC5nZXQoKSk7CkBAIC0xNTgsOCArMTU4LDYgQEAgVEVTVF9GKE5ldHdvcmtT
dGF0ZUVuZFRvRW5kVGVzdCwgUmVzcGVjdHNOZXR3b3JrU3RhdGUpIHsKICAgICAgICAgOiBFbmRU
b0VuZFRlc3Qoa0RlZmF1bHRUaW1lb3V0TXMpLAogICAgICAgICAgIEZha2VFbmNvZGVyKENsb2Nr
OjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgICAgIHRhc2tfcXVldWVfKHRhc2tfcXVldWUp
LAotICAgICAgICAgIGVuY29kZWRfZnJhbWVzXyhmYWxzZSwgZmFsc2UpLAotICAgICAgICAgIHBh
Y2tldF9ldmVudF8oZmFsc2UsIGZhbHNlKSwKICAgICAgICAgICBzZW5kZXJfY2FsbF8obnVsbHB0
ciksCiAgICAgICAgICAgcmVjZWl2ZXJfY2FsbF8obnVsbHB0ciksCiAgICAgICAgICAgZW5jb2Rl
cl9mYWN0b3J5Xyh0aGlzKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcHJvYmluZ190ZXN0cy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19l
bmRfdGVzdHMvcHJvYmluZ190ZXN0cy5jYwppbmRleCA3ZGZmNjU3YWQwMzk3Y2JmOTYzNDBhOTRj
ZjQzN2Y2MDYyMGMwYzk0Li43OTcwZDRhMWJmNzk4OWI5NWZmYzY5ZDNmNzZjYjliMjk2YmViNzQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92
aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3Byb2JpbmdfdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9wcm9i
aW5nX3Rlc3RzLmNjCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIFByb2JpbmdUZXN0IDogcHVibGlj
IHRlc3Q6OkVuZFRvRW5kVGVzdCB7CiAgICAgICAgIHN0YXRlXygwKSwKICAgICAgICAgc2VuZGVy
X2NhbGxfKG51bGxwdHIpIHt9CiAKLSAgdm9pZCBNb2RpZnlTZW5kZXJDYWxsQ29uZmlnKENhbGw6
OkNvbmZpZyogY29uZmlnKSBvdmVycmlkZSB7Ci0gICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5z
dGFydF9iaXRyYXRlX2JwcyA9IHN0YXJ0X2JpdHJhdGVfYnBzXzsKKyAgdm9pZCBNb2RpZnlTZW5k
ZXJCaXRyYXRlQ29uZmlnKEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcpIG92ZXJy
aWRlIHsKKyAgICBiaXRyYXRlX2NvbmZpZy0+c3RhcnRfYml0cmF0ZV9icHMgPSBzdGFydF9iaXRy
YXRlX2Jwc187CiAgIH0KIAogICB2b2lkIE9uQ2FsbHNDcmVhdGVkKENhbGwqIHNlbmRlcl9jYWxs
LCBDYWxsKiByZWNlaXZlcl9jYWxsKSBvdmVycmlkZSB7CkBAIC0yMjEsNyArMjIxLDcgQEAgVEVT
VF9QKFByb2JpbmdFbmRUb0VuZFRlc3QsIFByb2JlT25WaWRlb0VuY29kZXJSZWNvbmZpZ3VyYXRp
b24pIHsKICAgICAgICAgdGVzdDo6U2luZ2xlVGhyZWFkZWRUYXNrUXVldWVGb3JUZXN0aW5nKiB0
YXNrX3F1ZXVlLAogICAgICAgICBDYWxsKiBzZW5kZXJfY2FsbCkgb3ZlcnJpZGUgewogICAgICAg
YXV0byBuZXR3b3JrID0KLSAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3
b3JrPihEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSk7CisgICAgICAgICAgYWJzbDo6
bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZp
ZygpKTsKICAgICAgIHNlbmRfc2ltdWxhdGVkX25ldHdvcmtfID0gbmV0d29yay5nZXQoKTsKICAg
ICAgIHJldHVybiBuZXcgdGVzdDo6UGFja2V0VHJhbnNwb3J0KAogICAgICAgICAgIHRhc2tfcXVl
dWUsIHNlbmRlcl9jYWxsLCB0aGlzLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtTZW5kZXIsCkBA
IC0yNDUsNyArMjQ1LDcgQEAgVEVTVF9QKFByb2JpbmdFbmRUb0VuZFRlc3QsIFByb2JlT25WaWRl
b0VuY29kZXJSZWNvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgICAgIC8vIGJpdHJhdGUpLgogICAg
ICAgICAgICAgaWYgKHN0YXRzLnNlbmRfYmFuZHdpZHRoX2JwcyA+PSAyNTAwMDAgJiYKICAgICAg
ICAgICAgICAgICBzdGF0cy5zZW5kX2JhbmR3aWR0aF9icHMgPD0gMzUwMDAwKSB7Ci0gICAgICAg
ICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBjb25maWc7CisgICAgICAgICAg
ICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICAgICAgICAgICAgICBj
b25maWcubGlua19jYXBhY2l0eV9rYnBzID0gMjAwOwogICAgICAgICAgICAgICBzZW5kX3NpbXVs
YXRlZF9uZXR3b3JrXy0+U2V0Q29uZmlnKGNvbmZpZyk7CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCBU
RVNUX1AoUHJvYmluZ0VuZFRvRW5kVGVzdCwgUHJvYmVPblZpZGVvRW5jb2RlclJlY29uZmlndXJh
dGlvbikgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAg
ICAgaWYgKHN0YXRzLnNlbmRfYmFuZHdpZHRoX2JwcyA8PSAyMTAwMDApIHsKLSAgICAgICAgICAg
ICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIGNvbmZpZzsKKyAgICAgICAgICAgICAg
QnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBjb25maWc7CiAgICAgICAgICAgICAgIGNvbmZp
Zy5saW5rX2NhcGFjaXR5X2ticHMgPSA1MDAwOwogICAgICAgICAgICAgICBzZW5kX3NpbXVsYXRl
ZF9uZXR3b3JrXy0+U2V0Q29uZmlnKGNvbmZpZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcmVj
ZWl2ZV90aW1lX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9yZWNlaXZlX3RpbWVfdGVzdHMuY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYTY2ZjFkM2Q2N2UyNzZlNTdiMGE4ODMwOGNmMTg0
NzBiYWI0ZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2Vu
ZF90ZXN0cy9yZWNlaXZlX3RpbWVfdGVzdHMuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotICogIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQotICogIHRyZWUuIEFu
IGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91
bmQKLSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1
dGhvcnMgbWF5Ci0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBv
ZiB0aGUgc291cmNlIHRyZWUuCi0gKi8KLQotI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsYXRlZF9u
ZXR3b3JrLmgiCi0jaW5jbHVkZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oIgotI2luY2x1ZGUg
ImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNl
Y3Rpb24uaCIKLSNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKLSNpbmNsdWRlICJ0ZXN0
L2NhbGxfdGVzdC5oIgotI2luY2x1ZGUgInRlc3QvZmllbGRfdHJpYWwuaCIKLSNpbmNsdWRlICJ0
ZXN0L3J0Y3BfcGFja2V0X3BhcnNlci5oIgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLW5hbWVzcGFj
ZSB7Ci0KLS8vIFRoaXMgdGVzdGVyIHNpbXVsYXRlcyBhIHNlcmllcyBvZiBjbG9jayByZXNldCBl
dmVudHMgd2hlcmUgZGlmZmVyZW50IG9mZnNldHMKLS8vIGFyZSBhZGRlZCB0byB0aGUgcmVjZWl2
ZSB0aW1lLiBJdCBkZXRlY3RzIGp1bXBzIGluIHRoZSByZXN1bHRpbmcgcmVwb3J0ZWQKLS8vIHJl
Y2VpdmUgdGltZXMgb2YgbW9yZSB0aGFuIDIwMCBtcy4KLWNsYXNzIFJlcG9ydGVkUmVjZWl2ZVRp
bWVUZXN0ZXIgOiBwdWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKLSBwdWJsaWM6Ci0gIHN0cnVj
dCBUaW1lSnVtcCB7Ci0gICAgaW50NjRfdCBhdF9zZW5kX3RpbWVfbXM7Ci0gICAgaW50NjRfdCBh
ZGRfb2Zmc2V0X21zOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBrU3RvcCA9IDA7Ci0g
IH07Ci0KLSAgUmVwb3J0ZWRSZWNlaXZlVGltZVRlc3RlcigpCi0gICAgICA6IEVuZFRvRW5kVGVz
dCh0ZXN0OjpDYWxsVGVzdDo6a0RlZmF1bHRUaW1lb3V0TXMpIHsKLSAgICAvLyBUaGVzZSBzaG91
bGQgYmUgbGV0IHRyb3VnaCB3aXRob3V0IGNvcnJlY3Rpb24gYW5kIGZpbHRlcmVkIGlmIGNvcnJl
Y3Rpb24KLSAgICAvLyBpcyBlbmFibGVkLgotICAgIGp1bXBzXy5wdXNoKHs1MDAsIDIwMDB9KTsK
LSAgICBqdW1wc18ucHVzaCh7MTAwMCwgLTQwMH0pOwotICAgIGp1bXBzXy5wdXNoKHsxNTAwLCAy
MDAwMDAwfSk7Ci0gICAganVtcHNfLnB1c2goezE3MDAsIFRpbWVKdW1wOjprU3RvcH0pOwotICB9
Ci0gIGJvb2wgSnVtcEluUmVwb3J0ZWRUaW1lcygpIHsgcmV0dXJuIGp1bXBfaW5fcmVwb3J0ZWRf
dGltZXNfOyB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIEFjdGlvbiBPblJlY2VpdmVSdGNwKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIG92ZXJyaWRlIHsKLSAgICB0ZXN0OjpSdGNwUGFj
a2V0UGFyc2VyIHBhcnNlcjsKLSAgICBFWFBFQ1RfVFJVRShwYXJzZXIuUGFyc2UoZGF0YSwgbGVu
Z3RoKSk7Ci0gICAgY29uc3QgYXV0byYgZmIgPSBwYXJzZXIudHJhbnNwb3J0X2ZlZWRiYWNrKCk7
Ci0gICAgaWYgKGZiLT5udW1fcGFja2V0cygpID4gMCkgewotICAgICAgaW50NjRfdCBhcnJpdmFs
X3RpbWVfdXMgPSBmYi0+R2V0QmFzZVRpbWVVcygpOwotICAgICAgZm9yIChjb25zdCBhdXRvJiBw
a3QgOiBmYi0+R2V0UmVjZWl2ZWRQYWNrZXRzKCkpIHsKLSAgICAgICAgYXJyaXZhbF90aW1lX3Vz
ICs9IHBrdC5kZWx0YV91cygpOwotICAgICAgICBpZiAobGFzdF9hcnJpdmFsX3RpbWVfdXNfICE9
IDApIHsKLSAgICAgICAgICBpbnQ2NF90IGRlbHRhX3VzID0gYXJyaXZhbF90aW1lX3VzIC0gbGFz
dF9hcnJpdmFsX3RpbWVfdXNfOwotICAgICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGNyaXQoJnNlbmRf
dGltZXNfY3JpdF8pOwotICAgICAgICAgIGlmIChzZW5kX3RpbWVzX3VzXy5zaXplKCkgPj0gMikg
ewotICAgICAgICAgICAgaW50NjRfdCBncm91bmRfdHJ1dGhfZGVsdGFfdXMgPQotICAgICAgICAg
ICAgICAgIHNlbmRfdGltZXNfdXNfWzFdIC0gc2VuZF90aW1lc191c19bMF07Ci0gICAgICAgICAg
ICBzZW5kX3RpbWVzX3VzXy5wb3BfZnJvbnQoKTsKLSAgICAgICAgICAgIGludDY0X3QgZGVsdGFf
ZGlmZl9tcyA9IChkZWx0YV91cyAtIGdyb3VuZF90cnV0aF9kZWx0YV91cykgLyAxMDAwOwotICAg
ICAgICAgICAgaWYgKHN0ZDo6YWJzKGRlbHRhX2RpZmZfbXMpID4gMjAwKSB7Ci0gICAgICAgICAg
ICAgIGp1bXBfaW5fcmVwb3J0ZWRfdGltZXNfID0gdHJ1ZTsKLSAgICAgICAgICAgICAgb2JzZXJ2
YXRpb25fY29tcGxldGVfLlNldCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBsYXN0X2Fycml2YWxfdGltZV91c18gPSBhcnJpdmFsX3RpbWVfdXM7Ci0g
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiBTRU5EX1BBQ0tFVDsKLSAgfQotICBBY3Rpb24gT25T
ZW5kUnRwKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIG92ZXJyaWRlIHsKLSAg
ICB7Ci0gICAgICBydGM6OkNyaXRTY29wZSBjcml0KCZzZW5kX3RpbWVzX2NyaXRfKTsKLSAgICAg
IHNlbmRfdGltZXNfdXNfLnB1c2hfYmFjayhydGM6OlRpbWVNaWNyb3MoKSk7Ci0gICAgfQotICAg
IGludDY0X3Qgbm93X21zID0gcnRjOjpUaW1lTWlsbGlzKCk7Ci0gICAgaWYgKCFmaXJzdF9zZW5k
X3RpbWVfbXNfKQotICAgICAgZmlyc3Rfc2VuZF90aW1lX21zXyA9IG5vd19tczsKLSAgICBpbnQ2
NF90IHNlbmRfdGltZV9tcyA9IG5vd19tcyAtIGZpcnN0X3NlbmRfdGltZV9tc187Ci0gICAgaWYg
KHNlbmRfdGltZV9tcyA+PSBqdW1wc18uZnJvbnQoKS5hdF9zZW5kX3RpbWVfbXMpIHsKLSAgICAg
IGlmIChqdW1wc18uZnJvbnQoKS5hZGRfb2Zmc2V0X21zID09IFRpbWVKdW1wOjprU3RvcCkgewot
ICAgICAgICBvYnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7Ci0gICAgICAgIGp1bXBzXy5wb3Ao
KTsKLSAgICAgICAgcmV0dXJuIFNFTkRfUEFDS0VUOwotICAgICAgfQotICAgICAgY2xvY2tfb2Zm
c2V0X21zXyArPSBqdW1wc18uZnJvbnQoKS5hZGRfb2Zmc2V0X21zOwotICAgICAgc2VuZF9waXBl
Xy0+U2V0Q2xvY2tPZmZzZXQoY2xvY2tfb2Zmc2V0X21zXyk7Ci0gICAgICBqdW1wc18ucG9wKCk7
Ci0gICAgfQotICAgIHJldHVybiBTRU5EX1BBQ0tFVDsKLSAgfQotICB0ZXN0OjpQYWNrZXRUcmFu
c3BvcnQqIENyZWF0ZVNlbmRUcmFuc3BvcnQoCi0gICAgICB0ZXN0OjpTaW5nbGVUaHJlYWRlZFRh
c2tRdWV1ZUZvclRlc3RpbmcqIHRhc2tfcXVldWUsCi0gICAgICBDYWxsKiBzZW5kZXJfY2FsbCkg
b3ZlcnJpZGUgewotICAgIGF1dG8gcGlwZSA9IGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3Jr
UGlwZT4oCi0gICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCi0gICAgICAgIGFic2w6
Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNv
bmZpZygpKSk7Ci0gICAgc2VuZF9waXBlXyA9IHBpcGUuZ2V0KCk7Ci0gICAgcmV0dXJuIHNlbmRf
dHJhbnNwb3J0XyA9IG5ldyB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQoCi0gICAgICAgICAgICAgICB0
YXNrX3F1ZXVlLCBzZW5kZXJfY2FsbCwgdGhpcywgdGVzdDo6UGFja2V0VHJhbnNwb3J0OjprU2Vu
ZGVyLAotICAgICAgICAgICAgICAgdGVzdDo6Q2FsbFRlc3Q6OnBheWxvYWRfdHlwZV9tYXBfLCBz
dGQ6Om1vdmUocGlwZSkpOwotICB9Ci0gIHZvaWQgUGVyZm9ybVRlc3QoKSBvdmVycmlkZSB7Ci0g
ICAgb2JzZXJ2YXRpb25fY29tcGxldGVfLldhaXQodGVzdDo6Q2FsbFRlc3Q6OmtEZWZhdWx0VGlt
ZW91dE1zKTsKLSAgfQotICBzaXplX3QgR2V0TnVtVmlkZW9TdHJlYW1zKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMTsgfQotICBzaXplX3QgR2V0TnVtQXVkaW9TdHJlYW1zKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQotCi0gcHJpdmF0ZToKLSAgaW50NjRfdCBsYXN0X2Fycml2YWxf
dGltZV91c18gPSAwOwotICBpbnQ2NF90IGZpcnN0X3NlbmRfdGltZV9tc18gPSAwOwotICBydGM6
OkNyaXRpY2FsU2VjdGlvbiBzZW5kX3RpbWVzX2NyaXRfOwotICBzdGQ6OmRlcXVlPGludDY0X3Q+
IHNlbmRfdGltZXNfdXNfIFJUQ19HVUFSREVEX0JZKHNlbmRfdGltZXNfY3JpdF8pOwotICBib29s
IGp1bXBfaW5fcmVwb3J0ZWRfdGltZXNfID0gZmFsc2U7Ci0gIEZha2VOZXR3b3JrUGlwZSogc2Vu
ZF9waXBlXzsKLSAgdGVzdDo6UGFja2V0VHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydF87Ci0gIGlu
dDY0X3QgY2xvY2tfb2Zmc2V0X21zXyA9IDA7Ci0gIHN0ZDo6cXVldWU8VGltZUp1bXA+IGp1bXBz
XzsKLX07Ci19ICAvLyBuYW1lc3BhY2UKLQotY2xhc3MgUmVjZWl2ZVRpbWVFbmRUb0VuZFRlc3Qg
OiBwdWJsaWMgdGVzdDo6Q2FsbFRlc3QgewotIHB1YmxpYzoKLSAgUmVjZWl2ZVRpbWVFbmRUb0Vu
ZFRlc3QoKSB7fQotCi0gIHZpcnR1YWwgflJlY2VpdmVUaW1lRW5kVG9FbmRUZXN0KCkge30KLX07
Ci0KLVRFU1RfRihSZWNlaXZlVGltZUVuZFRvRW5kVGVzdCwgUmVjZWl2ZVRpbWVKdW1wc1dpdGhv
dXRGaWVsZFRyaWFsKSB7Ci0gIC8vIFdpdGhvdXQgdGhlIGZpZWxkIHRyaWFsLCB0aGUganVtcHMg
aW4gY2xvY2sgb2Zmc2V0IHNob3VsZCBiZSBsZXQgdHJvdWdoIGFuZAotICAvLyBiZSBkZXRlY3Rl
ZC4KLSAgUmVwb3J0ZWRSZWNlaXZlVGltZVRlc3RlciB0ZXN0OwotICBSdW5CYXNlVGVzdCgmdGVz
dCk7Ci0gIEVYUEVDVF9UUlVFKHRlc3QuSnVtcEluUmVwb3J0ZWRUaW1lcygpKTsKLX0KLQotVEVT
VF9GKFJlY2VpdmVUaW1lRW5kVG9FbmRUZXN0LCBSZWNlaXZlVGltZVN0ZWFkeVdpdGhGaWVsZFRy
aWFsKSB7Ci0gIC8vIFNpbmNlIGFsbCB0aGUgYWRkZWQganVtcHMgYnkgdGhlIHRlc3RlciBhcmUg
b3V0c2lkZSB0aGUgaW50ZXJ2YWwgb2YgLTEwMCBtcwotICAvLyB0byAxMDAwIG1zLCB0aGV5IHNo
b3VsZCBhbGwgYmUgZmlsdGVyZWQgYnkgdGhlIGZpZWxkIHRyaWFsIGJlbG93LCBhbmQgbm8KLSAg
Ly8ganVtcHMgc2hvdWxkIGJlIGRldGVjdGVkLgotICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBm
aWVsZF90cmlhbCgKLSAgICAgICJXZWJSVEMtQndlUmVjZWl2ZVRpbWVDb3JyZWN0aW9uL0VuYWJs
ZWQsLTEwMCwxMDAwLyIpOwotICBSZXBvcnRlZFJlY2VpdmVUaW1lVGVzdGVyIHRlc3Q7Ci0gIFJ1
bkJhc2VUZXN0KCZ0ZXN0KTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3QuSnVtcEluUmVwb3J0ZWRUaW1l
cygpKTsKLX0KLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcmV0
cmFuc21pc3Npb25fdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3JldHJhbnNtaXNzaW9uX3Rlc3RzLmNjCmlu
ZGV4IDczYTU1ODVlNzQ3MTkxYjJlMzg1ODY3YWJmMjcyNTc0NzU3MjhlZjEuLmQxYTY5ZTNlZDMx
ODFjOWY1YmM1ZGE3OGI5NzZlNmY4NzY1OThmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvcmV0cmFu
c21pc3Npb25fdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9yZXRyYW5zbWlzc2lvbl90ZXN0cy5jYwpA
QCAtOSwxMyArOSwxMyBAQAogICovCiAKICNpbmNsdWRlICJhcGkvdGVzdC9zaW11bGF0ZWRfbmV0
d29yay5oIgorI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJf
ZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwvZmFrZV9uZXR3b3JrX3BpcGUuaCIKICNpbmNsdWRl
ICJjYWxsL3NpbXVsYXRlZF9uZXR3b3JrLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2Rp
bmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL3NsZWVwLmgiCiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKICNpbmNsdWRlICJ0
ZXN0L2ZpZWxkX3RyaWFsLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVy
X2ZhY3RvcnkuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9ydGNw
X3BhY2tldF9wYXJzZXIuaCIKIApAQCAtMTMxLDkgKzEzMSw4IEBAIFRFU1RfRihSZXRyYW5zbWlz
c2lvbkVuZFRvRW5kVGVzdCwgUmVjZWl2ZXNOYWNrQW5kUmV0cmFuc21pdHNBdWRpbykgewogICAg
ICAgICAgIHRhc2tfcXVldWUsIG51bGxwdHIsIHRoaXMsIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6
a1JlY2VpdmVyLAogICAgICAgICAgIHBheWxvYWRfdHlwZV9tYXBfLAogICAgICAgICAgIGFic2w6
Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCi0gICAgICAgICAgICAgIENsb2NrOjpHZXRS
ZWFsVGltZUNsb2NrKCksCi0gICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRl
ZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29u
ZmlnKCkpKSk7CisgICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFic2w6
Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSkpOwog
ICAgICAgcmVjZWl2ZV90cmFuc3BvcnRfID0gcmVjZWl2ZV90cmFuc3BvcnQ7CiAgICAgICByZXR1
cm4gcmVjZWl2ZV90cmFuc3BvcnQ7CiAgICAgfQpAQCAtMTY2LDcgKzE2NSw2IEBAIFRFU1RfRihS
ZXRyYW5zbWlzc2lvbkVuZFRvRW5kVGVzdCwgUmVjZWl2ZXNOYWNrQW5kUmV0cmFuc21pdHNBdWRp
bykgewogICAgIHZvaWQgTW9kaWZ5QXVkaW9Db25maWdzKAogICAgICAgICBBdWRpb1NlbmRTdHJl
YW06OkNvbmZpZyogc2VuZF9jb25maWcsCiAgICAgICAgIHN0ZDo6dmVjdG9yPEF1ZGlvUmVjZWl2
ZVN0cmVhbTo6Q29uZmlnPiogcmVjZWl2ZV9jb25maWdzKSBvdmVycmlkZSB7Ci0gICAgICBzZW5k
X2NvbmZpZy0+cnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgPSBrTmFja1J0cEhpc3RvcnlNczsKICAg
ICAgICgqcmVjZWl2ZV9jb25maWdzKVswXS5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyA9IGtOYWNr
UnRwSGlzdG9yeU1zOwogICAgICAgbG9jYWxfc3NyY18gPSAoKnJlY2VpdmVfY29uZmlncylbMF0u
cnRwLmxvY2FsX3NzcmM7CiAgICAgICByZW1vdGVfc3NyY18gPSAoKnJlY2VpdmVfY29uZmlncylb
MF0ucnRwLnJlbW90ZV9zc3JjOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9ydHBfcnRjcF90ZXN0cy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90
b19lbmRfdGVzdHMvcnRwX3J0Y3BfdGVzdHMuY2MKaW5kZXggN2Q5NmRjY2E3NjEwZWRhMmJhMjU4
YmE0Y2NmMjgxMjFjOGJiYmNiYi4uZjE5YzZhZDNmYWE1ZjZhNDE4NzBjMzg1OGRhOGI1NDBhYjJi
ZGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9ydHBfcnRjcF90ZXN0cy5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3Rz
L3J0cF9ydGNwX3Rlc3RzLmNjCkBAIC0yODIsMTMgKzI4MiwxMyBAQCB2b2lkIFJ0cFJ0Y3BFbmRU
b0VuZFRlc3Q6OlRlc3RSdHBTdGF0ZVByZXNlcnZhdGlvbigKICAgICAgICAgdGVzdDo6UGFja2V0
VHJhbnNwb3J0OjprU2VuZGVyLCBwYXlsb2FkX3R5cGVfbWFwXywKICAgICAgICAgYWJzbDo6bWFr
ZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGlt
ZUNsb2NrKCksIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlv
bkNvbmZpZygpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkpKTsKICAgICByZWNlaXZlX3RyYW5zcG9y
dCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OlBhY2tldFRyYW5zcG9ydD4oCiAgICAgICAgICZ0
YXNrX3F1ZXVlXywgbnVsbHB0ciwgJm9ic2VydmVyLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtS
ZWNlaXZlciwKICAgICAgICAgcGF5bG9hZF90eXBlX21hcF8sCiAgICAgICAgIGFic2w6Om1ha2Vf
dW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCiAgICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVD
bG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25D
b25maWcoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
dWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnKCkpKSk7CiAgICAgc2VuZF90cmFuc3BvcnQtPlNl
dFJlY2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5SZWNlaXZlcigpKTsKICAgICByZWNlaXZlX3RyYW5z
cG9ydC0+U2V0UmVjZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZlcigpKTsKIApAQCAtNDc0LDcg
KzQ3NCw3IEBAIFRFU1RfRihSdHBSdGNwRW5kVG9FbmRUZXN0LCBESVNBQkxFRF9UZXN0RmxleGZl
Y1J0cFN0YXRlUHJlc2VydmF0aW9uKSB7CiAgIHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsK
ICAgICBDcmVhdGVDYWxscygpOwogCi0gICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmln
IGxvc3N5X2RlbGF5ZWRfbGluazsKKyAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGxv
c3N5X2RlbGF5ZWRfbGluazsKICAgICBsb3NzeV9kZWxheWVkX2xpbmsubG9zc19wZXJjZW50ID0g
MjsKICAgICBsb3NzeV9kZWxheWVkX2xpbmsucXVldWVfZGVsYXlfbXMgPSA1MDsKIApAQCAtNDg2
LDcgKzQ4Niw3IEBAIFRFU1RfRihSdHBSdGNwRW5kVG9FbmRUZXN0LCBESVNBQkxFRF9UZXN0Rmxl
eGZlY1J0cFN0YXRlUHJlc2VydmF0aW9uKSB7CiAgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1
ZTxTaW11bGF0ZWROZXR3b3JrPihsb3NzeV9kZWxheWVkX2xpbmspKSk7CiAgICAgc2VuZF90cmFu
c3BvcnQtPlNldFJlY2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5SZWNlaXZlcigpKTsKIAotICAgIERl
ZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBmbGF3bGVzc19saW5rOworICAgIEJ1aWx0SW5O
ZXR3b3JrQmVoYXZpb3JDb25maWcgZmxhd2xlc3NfbGluazsKICAgICByZWNlaXZlX3RyYW5zcG9y
dCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OlBhY2tldFRyYW5zcG9ydD4oCiAgICAgICAgICZ0
YXNrX3F1ZXVlXywgbnVsbHB0ciwgJm9ic2VydmVyLCB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQ6OmtS
ZWNlaXZlciwKICAgICAgICAgcGF5bG9hZF90eXBlX21hcF8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3Rz
L3NzcmNfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3NzcmNfdGVzdHMuY2MKaW5kZXggYzAzYjQ5NDc3ZDYw
YThiZTgyODU1MTlkM2VhZjk2MmRmMjkyYWJmZi4uODZmYWEwNDY1YjVmYjNjMWQ4ZGRhODgyYWIz
OWNlZmQ5YTkyOTk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9zc3JjX3Rlc3RzLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRf
dGVzdHMvc3NyY190ZXN0cy5jYwpAQCAtNDgsNyArNDgsNyBAQCBURVNUX0YoU3NyY0VuZFRvRW5k
VGVzdCwgVW5rbm93blJ0cFBhY2tldEdpdmVzVW5rbm93blNzcmNSZXR1cm5Db2RlKSB7CiAgIGNs
YXNzIFBhY2tldElucHV0T2JzZXJ2ZXIgOiBwdWJsaWMgUGFja2V0UmVjZWl2ZXIgewogICAgcHVi
bGljOgogICAgIGV4cGxpY2l0IFBhY2tldElucHV0T2JzZXJ2ZXIoUGFja2V0UmVjZWl2ZXIqIHJl
Y2VpdmVyKQotICAgICAgICA6IHJlY2VpdmVyXyhyZWNlaXZlciksIGRlbGl2ZXJlZF9wYWNrZXRf
KGZhbHNlLCBmYWxzZSkge30KKyAgICAgICAgOiByZWNlaXZlcl8ocmVjZWl2ZXIpIHt9CiAKICAg
ICBib29sIFdhaXQoKSB7IHJldHVybiBkZWxpdmVyZWRfcGFja2V0Xy5XYWl0KGtEZWZhdWx0VGlt
ZW91dE1zKTsgfQogCkBAIC04MiwxNSArODIsMTUgQEAgVEVTVF9GKFNzcmNFbmRUb0VuZFRlc3Qs
IFVua25vd25SdHBQYWNrZXRHaXZlc1Vua25vd25Tc3JjUmV0dXJuQ29kZSkgewogCiAgICAgc2Vu
ZF90cmFuc3BvcnQgPSBhYnNsOjptYWtlX3VuaXF1ZTx0ZXN0OjpEaXJlY3RUcmFuc3BvcnQ+KAog
ICAgICAgICAmdGFza19xdWV1ZV8sCi0gICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3
b3JrUGlwZT4oCi0gICAgICAgICAgICBDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjpt
YWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpLAorICAg
ICAgICBhYnNsOjptYWtlX3VuaXF1ZTxGYWtlTmV0d29ya1BpcGU+KENsb2NrOjpHZXRSZWFsVGlt
ZUNsb2NrKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJz
bDo6bWFrZV91bmlxdWU8U2ltdWxhdGVkTmV0d29yaz4oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKSkp
LAogICAgICAgICBzZW5kZXJfY2FsbF8uZ2V0KCksIHBheWxvYWRfdHlwZV9tYXBfKTsKICAgICBy
ZWNlaXZlX3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRpcmVjdFRyYW5zcG9y
dD4oCiAgICAgICAgICZ0YXNrX3F1ZXVlXywKLSAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8RmFr
ZU5ldHdvcmtQaXBlPigKLSAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIGFi
c2w6Om1ha2VfdW5pcXVlPFNpbXVsYXRlZE5ldHdvcms+KAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZygpKSks
CisgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oQ2xvY2s6OkdldFJl
YWxUaW1lQ2xvY2soKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZp
ZygpKSksCiAgICAgICAgIHJlY2VpdmVyX2NhbGxfLmdldCgpLCBwYXlsb2FkX3R5cGVfbWFwXyk7
CiAgICAgaW5wdXRfb2JzZXJ2ZXIgPQogICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxQYWNrZXRJ
bnB1dE9ic2VydmVyPihyZWNlaXZlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5k
X3Rlc3RzL3N0YXRzX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vZW5kX3RvX2VuZF90ZXN0cy9zdGF0c190ZXN0cy5jYwppbmRleCBhZjZi
YmRhMTY4ZTI0NGRlYzc3NjBmZThhNTE0MDVlYTQ1OTgwMzc5Li5kNmU5MmM4YWYyMDNhZWY1Y2Jl
ZjU0NDE3ZmJkMjgwMDk0NmI5ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3N0YXRzX3Rlc3RzLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2Vu
ZF90b19lbmRfdGVzdHMvc3RhdHNfdGVzdHMuY2MKQEAgLTksNiArOSw3IEBACiAgKi8KIAogI2lu
Y2x1ZGUgImFwaS90ZXN0L3NpbXVsYXRlZF9uZXR3b3JrLmgiCisjaW5jbHVkZSAiYXBpL3Rlc3Qv
dmlkZW8vZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiY2FsbC9m
YWtlX25ldHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25ldHdvcmsuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3J0cF9ydGNwL3NvdXJjZS9ydHBfdXRpbGl0eS5oIgpAQCAtMTgs
NyArMTksNiBAQAogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL3NsZWVwLmgiCiAj
aW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0L2Zha2VfZW5jb2Rlci5o
IgotI2luY2x1ZGUgInRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAidGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRlc3QvcnRjcF9wYWNrZXRfcGFyc2VyLmgi
CiAKQEAgLTQ3LDggKzQ3LDcgQEAgVEVTVF9GKFN0YXRzRW5kVG9FbmRUZXN0LCBHZXRTdGF0cykg
ewogICAgICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksIDEwKTsKICAgICAg
ICAgICB9KSwKICAgICAgICAgICBzZW5kX3N0cmVhbV8obnVsbHB0ciksCi0gICAgICAgICAgZXhw
ZWN0ZWRfc2VuZF9zc3Jjc18oKSwKLSAgICAgICAgICBjaGVja19zdGF0c19ldmVudF8oZmFsc2Us
IGZhbHNlKSB7fQorICAgICAgICAgIGV4cGVjdGVkX3NlbmRfc3NyY3NfKCkge30KIAogICAgcHJp
dmF0ZToKICAgICBBY3Rpb24gT25TZW5kUnRwKGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwgc2l6ZV90
IGxlbmd0aCkgb3ZlcnJpZGUgewpAQCAtMjMxLDcgKzIzMCw3IEBAIFRFU1RfRihTdGF0c0VuZFRv
RW5kVGVzdCwgR2V0U3RhdHMpIHsKICAgICB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQqIENyZWF0ZVNl
bmRUcmFuc3BvcnQoCiAgICAgICAgIHRlc3Q6OlNpbmdsZVRocmVhZGVkVGFza1F1ZXVlRm9yVGVz
dGluZyogdGFza19xdWV1ZSwKICAgICAgICAgQ2FsbCogc2VuZGVyX2NhbGwpIG92ZXJyaWRlIHsK
LSAgICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBuZXR3b3JrX2NvbmZpZzsKKyAg
ICAgIEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgbmV0d29ya19jb25maWc7CiAgICAgICBu
ZXR3b3JrX2NvbmZpZy5sb3NzX3BlcmNlbnQgPSA1OwogICAgICAgcmV0dXJuIG5ldyB0ZXN0OjpQ
YWNrZXRUcmFuc3BvcnQoCiAgICAgICAgICAgdGFza19xdWV1ZSwgc2VuZGVyX2NhbGwsIHRoaXMs
IHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1NlbmRlciwKQEAgLTI0MCw4ICsyMzksOSBAQCBURVNU
X0YoU3RhdHNFbmRUb0VuZFRlc3QsIEdldFN0YXRzKSB7CiAgICAgICAgICAgICAgIENsb2NrOjpH
ZXRSZWFsVGltZUNsb2NrKCksCiAgICAgICAgICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPFNpbXVs
YXRlZE5ldHdvcms+KG5ldHdvcmtfY29uZmlnKSkpOwogICAgIH0KLSAgICB2b2lkIE1vZGlmeVNl
bmRlckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpIG92ZXJyaWRlIHsKLSAgICAgIGNv
bmZpZy0+Yml0cmF0ZV9jb25maWcuc3RhcnRfYml0cmF0ZV9icHMgPSBrU3RhcnRCaXRyYXRlQnBz
OworICAgIHZvaWQgTW9kaWZ5U2VuZGVyQml0cmF0ZUNvbmZpZygKKyAgICAgICAgQml0cmF0ZUNv
bnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykgb3ZlcnJpZGUgeworICAgICAgYml0cmF0ZV9jb25m
aWctPnN0YXJ0X2JpdHJhdGVfYnBzID0ga1N0YXJ0Qml0cmF0ZUJwczsKICAgICB9CiAKICAgICAv
LyBUaGlzIHRlc3QgdXNlIG90aGVyIFZpZGVvU3RyZWFtIHNldHRpbmdzIHRoYW4gdGhlIHRoZSBk
ZWZhdWx0IHNldHRpbmdzCkBAIC01MTUsOSArNTE1LDkgQEAgVEVTVF9GKFN0YXRzRW5kVG9FbmRU
ZXN0LCBNQVlCRV9Db250ZW50VHlwZVN3aXRjaGVzKSB7CiAgIG1ldHJpY3M6OlJlc2V0KCk7CiAK
ICAgQ2FsbDo6Q29uZmlnIHNlbmRfY29uZmlnKHNlbmRfZXZlbnRfbG9nXy5nZXQoKSk7Ci0gIHRl
c3QuTW9kaWZ5U2VuZGVyQ2FsbENvbmZpZygmc2VuZF9jb25maWcpOworICB0ZXN0Lk1vZGlmeVNl
bmRlckJpdHJhdGVDb25maWcoJnNlbmRfY29uZmlnLmJpdHJhdGVfY29uZmlnKTsKICAgQ2FsbDo6
Q29uZmlnIHJlY3ZfY29uZmlnKHJlY3ZfZXZlbnRfbG9nXy5nZXQoKSk7Ci0gIHRlc3QuTW9kaWZ5
UmVjZWl2ZXJDYWxsQ29uZmlnKCZyZWN2X2NvbmZpZyk7CisgIHRlc3QuTW9kaWZ5UmVjZWl2ZXJC
aXRyYXRlQ29uZmlnKCZyZWN2X2NvbmZpZy5iaXRyYXRlX2NvbmZpZyk7CiAKICAgVmlkZW9FbmNv
ZGVyQ29uZmlnIGVuY29kZXJfY29uZmlnX3dpdGhfc2NyZWVuc2hhcmU7CiAKQEAgLTcxMyw3ICs3
MTMsNyBAQCBURVNUX0YoU3RhdHNFbmRUb0VuZFRlc3QsIENhbGxSZXBvcnRzUnR0Rm9yU2VuZGVy
KSB7CiAgIHN0ZDo6dW5pcXVlX3B0cjx0ZXN0OjpEaXJlY3RUcmFuc3BvcnQ+IHJlY2VpdmVyX3Ry
YW5zcG9ydDsKIAogICB0YXNrX3F1ZXVlXy5TZW5kVGFzayhbdGhpcywgJnNlbmRlcl90cmFuc3Bv
cnQsICZyZWNlaXZlcl90cmFuc3BvcnRdKCkgewotICAgIERlZmF1bHROZXR3b3JrU2ltdWxhdGlv
bkNvbmZpZyBjb25maWc7CisgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBjb25maWc7
CiAgICAgY29uZmlnLnF1ZXVlX2RlbGF5X21zID0ga1NlbmREZWxheU1zOwogICAgIENyZWF0ZUNh
bGxzKCk7CiAgICAgc2VuZGVyX3RyYW5zcG9ydCA9IGFic2w6Om1ha2VfdW5pcXVlPHRlc3Q6OkRp
cmVjdFRyYW5zcG9ydD4oCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby9lbmRfdG9fZW5kX3Rlc3RzL3RyYW5zcG9ydF9mZWVkYmFja190
ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L2VuZF90b19lbmRfdGVzdHMvdHJhbnNwb3J0X2ZlZWRiYWNrX3Rlc3RzLmNjCmluZGV4IDE0Mzdj
ZDQ2ZTQ4NWViNGYzNjk5MDcxMjM5ZWRlMjhiY2UyZWZhMTQuLjk0ZGIwMzgzMzA1MTk4ZTYwMTZm
NTY3ZDgyNGM1NDc4MTFkMGQ0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvdHJhbnNwb3J0X2ZlZWRi
YWNrX3Rlc3RzLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL2VuZF90b19lbmRfdGVzdHMvdHJhbnNwb3J0X2ZlZWRiYWNrX3Rlc3RzLmNjCkBA
IC01NSwxMCArNTUsOSBAQCBURVNUX1AoVHJhbnNwb3J0RmVlZGJhY2tFbmRUb0VuZFRlc3QsIEFz
c2lnbnNUcmFuc3BvcnRTZXF1ZW5jZU51bWJlcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6bWFrZV91bmlxdWU8RmFrZU5ldHdvcmtQaXBlPigKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3b3JrPigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25m
aWcoKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5OZXR3b3Jr
QmVoYXZpb3JDb25maWcoKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kZXJfY2Fs
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZF90eXBlX21hcCksCi0gICAgICAg
ICAgZG9uZV8oZmFsc2UsIGZhbHNlKSwKICAgICAgICAgICBwYXJzZXJfKFJ0cEhlYWRlclBhcnNl
cjo6Q3JlYXRlKCkpLAogICAgICAgICAgIGZpcnN0X21lZGlhX3NzcmNfKGZpcnN0X21lZGlhX3Nz
cmMpLAogICAgICAgICAgIHJ0eF90b19tZWRpYV9zc3Jjc18oc3NyY19tYXApLApAQCAtNDE1LDgg
KzQxNCw5IEBAIFRFU1RfUChUcmFuc3BvcnRGZWVkYmFja0VuZFRvRW5kVGVzdCwKICAgICAgIEVY
UEVDVF9UUlVFKHBhcnNlci5QYXJzZShkYXRhLCBsZW5ndGgpKTsKICAgICAgIHJldHVybiBwYXJz
ZXIudHJhbnNwb3J0X2ZlZWRiYWNrKCktPm51bV9wYWNrZXRzKCkgPiAwOwogICAgIH0KLSAgICB2
b2lkIE1vZGlmeVNlbmRlckNhbGxDb25maWcoQ2FsbDo6Q29uZmlnKiBjb25maWcpIG92ZXJyaWRl
IHsKLSAgICAgIGNvbmZpZy0+Yml0cmF0ZV9jb25maWcubWF4X2JpdHJhdGVfYnBzID0gMzAwMDAw
OworICAgIHZvaWQgTW9kaWZ5U2VuZGVyQml0cmF0ZUNvbmZpZygKKyAgICAgICAgQml0cmF0ZUNv
bnN0cmFpbnRzKiBiaXRyYXRlX2NvbmZpZykgb3ZlcnJpZGUgeworICAgICAgYml0cmF0ZV9jb25m
aWctPm1heF9iaXRyYXRlX2JwcyA9IDMwMDAwMDsKICAgICB9CiAKICAgICB2b2lkIFBlcmZvcm1U
ZXN0KCkgb3ZlcnJpZGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vZnJhbWVfZHVtcGluZ19kZWNvZGVyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZnJhbWVfZHVtcGluZ19kZWNv
ZGVyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc3OTg1MTFiNTQzOWEzYmE3MWNmYzhlY2MzMDYyZWJkMDM3OTRl
MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby9mcmFtZV9kdW1waW5nX2RlY29kZXIuY2MKQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKKyAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKyAqICB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5k
CisgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRo
b3JzIG1heQorICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlLgorICovCisKKyNpbmNsdWRlICJ2aWRlby9mcmFtZV9kdW1waW5nX2Rl
Y29kZXIuaCIKKworI2luY2x1ZGUgPHV0aWxpdHk+CisKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVv
X2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2ludGVyZmFjZS5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworRnJhbWVEdW1waW5nRGVjb2Rlcjo6RnJhbWVEdW1waW5nRGVjb2RlcihzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9EZWNvZGVyPiBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydGM6OlBsYXRmb3JtRmlsZSBmaWxlKQorICAgIDogZGVjb2Rlcl8o
c3RkOjptb3ZlKGRlY29kZXIpKSwKKyAgICAgIHdyaXRlcl8oSXZmRmlsZVdyaXRlcjo6V3JhcChy
dGM6OkZpbGUoZmlsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYnl0
ZV9saW1pdD0gKi8gMTAwMDAwMDAwKSkge30KKworRnJhbWVEdW1waW5nRGVjb2Rlcjo6fkZyYW1l
RHVtcGluZ0RlY29kZXIoKSA9IGRlZmF1bHQ7CisKK2ludDMyX3QgRnJhbWVEdW1waW5nRGVjb2Rl
cjo6SW5pdERlY29kZShjb25zdCBWaWRlb0NvZGVjKiBjb2RlY19zZXR0aW5ncywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IG51bWJlcl9vZl9jb3Jlcykg
eworICByZXR1cm4gZGVjb2Rlcl8tPkluaXREZWNvZGUoY29kZWNfc2V0dGluZ3MsIG51bWJlcl9v
Zl9jb3Jlcyk7Cit9CisKK2ludDMyX3QgRnJhbWVEdW1waW5nRGVjb2Rlcjo6RGVjb2RlKAorICAg
IGNvbnN0IEVuY29kZWRJbWFnZSYgaW5wdXRfaW1hZ2UsCisgICAgYm9vbCBtaXNzaW5nX2ZyYW1l
cywKKyAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5mbywKKyAg
ICBpbnQ2NF90IHJlbmRlcl90aW1lX21zKSB7CisgIGludDMyX3QgcmV0ID0gZGVjb2Rlcl8tPkRl
Y29kZShpbnB1dF9pbWFnZSwgbWlzc2luZ19mcmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb2RlY19zcGVjaWZpY19pbmZvLCByZW5kZXJfdGltZV9tcyk7CisgIHdyaXRl
cl8tPldyaXRlRnJhbWUoaW5wdXRfaW1hZ2UsIGNvZGVjX3NwZWNpZmljX2luZm8tPmNvZGVjVHlw
ZSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworaW50MzJfdCBGcmFtZUR1bXBpbmdEZWNvZGVyOjpS
ZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soCisgICAgRGVjb2RlZEltYWdlQ2FsbGJhY2sq
IGNhbGxiYWNrKSB7CisgIHJldHVybiBkZWNvZGVyXy0+UmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNh
bGxiYWNrKGNhbGxiYWNrKTsKK30KKworaW50MzJfdCBGcmFtZUR1bXBpbmdEZWNvZGVyOjpSZWxl
YXNlKCkgeworICByZXR1cm4gZGVjb2Rlcl8tPlJlbGVhc2UoKTsKK30KKworYm9vbCBGcmFtZUR1
bXBpbmdEZWNvZGVyOjpQcmVmZXJzTGF0ZURlY29kaW5nKCkgY29uc3QgeworICByZXR1cm4gZGVj
b2Rlcl8tPlByZWZlcnNMYXRlRGVjb2RpbmcoKTsKK30KKworY29uc3QgY2hhciogRnJhbWVEdW1w
aW5nRGVjb2Rlcjo6SW1wbGVtZW50YXRpb25OYW1lKCkgY29uc3QgeworICByZXR1cm4gZGVjb2Rl
cl8tPkltcGxlbWVudGF0aW9uTmFtZSgpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9mcmFtZV9kdW1waW5nX2RlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL2ZyYW1lX2R1bXBpbmdfZGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUx
OWU5YjRkYjA4OWQ4MzVhMmYzZWI4MjU1OTQwZTI3MWZlYzA5MGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9mcmFtZV9k
dW1waW5nX2RlY29kZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogIENvcHlyaWdodCAoYykg
MjAxOCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZQorICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3Qgb2YgdGhlIHNvdXJjZQorICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFs
IHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKyAqICBpbiB0aGUgZmlsZSBQQVRF
TlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5CisgKiAgYmUgZm91bmQg
aW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgKi8K
KworI2lmbmRlZiBWSURFT19GUkFNRV9EVU1QSU5HX0RFQ09ERVJfSF8KKyNkZWZpbmUgVklERU9f
RlJBTUVfRFVNUElOR19ERUNPREVSX0hfCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKKyNpbmNsdWRl
ICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3Zp
ZGVvX2NvZGluZy91dGlsaXR5L2l2Zl9maWxlX3dyaXRlci5oIgorI2luY2x1ZGUgInJ0Y19iYXNl
L3BsYXRmb3JtX2ZpbGUuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKKy8vIEEgZGVjb2RlciB3
cmFwcGVyIHRoYXQgd3JpdGVzIHRoZSBlbmNvZGVkIGZyYW1lcyB0byBhIGZpbGUuCitjbGFzcyBG
cmFtZUR1bXBpbmdEZWNvZGVyIDogcHVibGljIFZpZGVvRGVjb2RlciB7CisgcHVibGljOgorICBG
cmFtZUR1bXBpbmdEZWNvZGVyKHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+IGRlY29kZXIs
CisgICAgICAgICAgICAgICAgICAgICAgcnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSk7CisgIH5GcmFt
ZUR1bXBpbmdEZWNvZGVyKCkgb3ZlcnJpZGU7CisKKyAgaW50MzJfdCBJbml0RGVjb2RlKGNvbnN0
IFZpZGVvQ29kZWMqIGNvZGVjX3NldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgaW50MzJf
dCBudW1iZXJfb2ZfY29yZXMpIG92ZXJyaWRlOworICBpbnQzMl90IERlY29kZShjb25zdCBFbmNv
ZGVkSW1hZ2UmIGlucHV0X2ltYWdlLAorICAgICAgICAgICAgICAgICBib29sIG1pc3NpbmdfZnJh
bWVzLAorICAgICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3Bl
Y2lmaWNfaW5mbywKKyAgICAgICAgICAgICAgICAgaW50NjRfdCByZW5kZXJfdGltZV9tcykgb3Zl
cnJpZGU7CisgIGludDMyX3QgUmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKAorICAgICAg
RGVjb2RlZEltYWdlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKKyAgaW50MzJfdCBSZWxl
YXNlKCkgb3ZlcnJpZGU7CisgIGJvb2wgUHJlZmVyc0xhdGVEZWNvZGluZygpIGNvbnN0IG92ZXJy
aWRlOworICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZTsK
KworIHByaXZhdGU6CisgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0RlY29kZXI+IGRlY29kZXJfOwor
ICBzdGQ6OnVuaXF1ZV9wdHI8SXZmRmlsZVdyaXRlcj4gd3JpdGVyXzsKK307CisKK30gIC8vIG5h
bWVzcGFjZSB3ZWJydGMKKworI2VuZGlmICAvLyBWSURFT19GUkFNRV9EVU1QSU5HX0RFQ09ERVJf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL2Z1bGxfc3RhY2tfdGVzdHMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby9mdWxsX3N0YWNrX3Rlc3RzLmNjCmluZGV4IDc3ZGEyNTM0NDg5
YTJhYWU4MDI3ZGM3OWVhODM4YTEyZDFlYjk2N2MuLjlhOGQyNTJiZmNjNTFjNmZhZDEzYjU0MTY5
MDE2MTg3MDIxMDRlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL2Z1bGxfc3RhY2tfdGVzdHMuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vZnVsbF9zdGFja190ZXN0cy5jYwpA
QCAtMjIsMjEgKzIyLDI0IEBACiBuYW1lc3BhY2Ugd2VicnRjIHsKIG5hbWVzcGFjZSBmbGFncyB7
CiAKLURFRklORV9zdHJpbmcocnRjX2V2ZW50X2xvZ19uYW1lLAotICAgICAgICAgICAgICAiIiwK
LSAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBydGMgZXZlbnQgbG9nLiBUd28gZmlsZXMgIgot
ICAgICAgICAgICAgICAid2l0aCBcIl9zZW5kXCIgYW5kIFwiX3JlY3ZcIiBzdWZmaXhlcyB3aWxs
IGJlIGNyZWF0ZWQuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhydGNfZXZlbnRfbG9nX25hbWUs
CisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJGaWxlbmFt
ZSBmb3IgcnRjIGV2ZW50IGxvZy4gVHdvIGZpbGVzICIKKyAgICAgICAgICAgICAgICAgICAgICJ3
aXRoIFwiX3NlbmRcIiBhbmQgXCJfcmVjdlwiIHN1ZmZpeGVzIHdpbGwgYmUgY3JlYXRlZC4iKTsK
IHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nTmFtZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0
ZDo6c3RyaW5nPihGTEFHX3J0Y19ldmVudF9sb2dfbmFtZSk7CiB9Ci1ERUZJTkVfc3RyaW5nKHJ0
cF9kdW1wX25hbWUsICIiLCAiRmlsZW5hbWUgZm9yIGR1bXBlZCByZWNlaXZlZCBSVFAgc3RyZWFt
LiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcocnRwX2R1bXBfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBkdW1wZWQgcmVj
ZWl2ZWQgUlRQIHN0cmVhbS4iKTsKIHN0ZDo6c3RyaW5nIFJ0cER1bXBOYW1lKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfcnRwX2R1bXBfbmFtZSk7CiB9Ci1ERUZJ
TkVfc3RyaW5nKGVuY29kZWRfZnJhbWVfcGF0aCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAg
ICAgICAgICJUaGUgYmFzZSBwYXRoIGZvciBlbmNvZGVkIGZyYW1lIGxvZ3MuIENyZWF0ZWQgZmls
ZXMgd2lsbCBoYXZlICIKLSAgICAgICAgICAgICAgInRoZSBmb3JtIDxlbmNvZGVkX2ZyYW1lX3Bh
dGg+LjxuPi4ocmVjdnxzZW5kLjxtPikuaXZmIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAg
ICBlbmNvZGVkX2ZyYW1lX3BhdGgsCisgICAgIiIsCisgICAgIlRoZSBiYXNlIHBhdGggZm9yIGVu
Y29kZWQgZnJhbWUgbG9ncy4gQ3JlYXRlZCBmaWxlcyB3aWxsIGhhdmUgIgorICAgICJ0aGUgZm9y
bSA8ZW5jb2RlZF9mcmFtZV9wYXRoPi48bj4uKHJlY3Z8c2VuZC48bT4pLml2ZiIpOwogc3RkOjpz
dHJpbmcgRW5jb2RlZEZyYW1lUGF0aCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3Ry
aW5nPihGTEFHX2VuY29kZWRfZnJhbWVfcGF0aCk7CiB9CkBAIC00NywxMCArNTAsMTAgQEAgbmFt
ZXNwYWNlIHdlYnJ0YyB7CiAKIG5hbWVzcGFjZSB7CiBzdGF0aWMgY29uc3QgaW50IGtGdWxsU3Rh
Y2tUZXN0RHVyYXRpb25TZWNzID0gNDU7Ci1jb25zdCBjaGFyIGtTY3JlZW5zaGFyZVNpbXVsY2Fz
dEV4cGVyaW1lbnRbXSA9Ci0gICAgIldlYlJUQy1TaW11bGNhc3RTY3JlZW5zaGFyZS9FbmFibGVk
LyI7CiBjb25zdCBjaGFyIGtQYWNlclB1c2hCYWNrRXhwZXJpbWVudFtdID0KICAgICAiV2ViUlRD
LVBhY2VyUHVzaGJhY2tFeHBlcmltZW50L0VuYWJsZWQvIjsKK2NvbnN0IGNoYXIga1ZwOFRydXN0
ZWRSYXRlQ29udHJvbGxlckZpZWxkVHJpYWxbXSA9CisgICAgIldlYlJUQy1MaWJ2cHhWcDhUcnVz
dGVkUmF0ZUNvbnRyb2xsZXIvRW5hYmxlZC8iOwogCiBzdHJ1Y3QgUGFyYW1zV2l0aExvZ2dpbmcg
OiBwdWJsaWMgVmlkZW9RdWFsaXR5VGVzdDo6UGFyYW1zIHsKICBwdWJsaWM6CkBAIC01OCw3ICs2
MSw3IEBAIHN0cnVjdCBQYXJhbXNXaXRoTG9nZ2luZyA6IHB1YmxpYyBWaWRlb1F1YWxpdHlUZXN0
OjpQYXJhbXMgewogICAgIC8vIFVzZSB0aGVzZSBsb2dnaW5nIGZsYWdzIGJ5IGRlZmF1bHQsIGZv
ciBldmVyeXRoaW5nLgogICAgIGxvZ2dpbmcgPSB7ZmxhZ3M6OlJ0Y0V2ZW50TG9nTmFtZSgpLCBm
bGFnczo6UnRwRHVtcE5hbWUoKSwKICAgICAgICAgICAgICAgIGZsYWdzOjpFbmNvZGVkRnJhbWVQ
YXRoKCl9OwotICAgIHRoaXMtPmNvbmZpZyA9IERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZp
ZygpOworICAgIHRoaXMtPmNvbmZpZyA9IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcoKTsK
ICAgfQogfTsKIApAQCAtMTA2LDcgKzEwOSw3IEBAIGNsYXNzIEdlbmVyaWNEZXNjcmlwdG9yVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08c3RkOjpzdHJpbmc+IHsKICAgYm9v
bCBnZW5lcmljX2Rlc2NyaXB0b3JfZW5hYmxlZF87CiB9OwogCi0jaWYgIWRlZmluZWQoUlRDX0RJ
U0FCTEVfVlA5KQorI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiBURVNUKEZ1bGxTdGFja1Rl
c3QsIEZvcmVtYW5DaWZXaXRob3V0UGFja2V0TG9zc1ZwOSkgewogICBhdXRvIGZpeHR1cmUgPSBD
cmVhdGVWaWRlb1F1YWxpdHlUZXN0Rml4dHVyZSgpOwogICBQYXJhbXNXaXRoTG9nZ2luZyBmb3Jl
bWFuX2NpZjsKQEAgLTE4Nyw3ICsxOTAsNyBAQCBURVNUKEZ1bGxTdGFja1Rlc3QsIEdlbmVyYXRv
cldpdGhvdXRQYWNrZXRMb3NzTXVsdGlwbGV4STQyMEFGcmFtZSkgewogICBmaXh0dXJlLT5SdW5X
aXRoQW5hbHl6ZXIoZ2VuZXJhdG9yKTsKIH0KIAotI2VuZGlmICAvLyAhZGVmaW5lZChSVENfRElT
QUJMRV9WUDkpCisjZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKICNpZiBkZWZp
bmVkKFdFQlJUQ19MSU5VWCkKIC8vIENyYXNoZXMgb24gdGhlIGxpbnV4IHRydXN0eSBwZXJmIGJv
dDogYnVncy53ZWJydGMub3JnLzkxMjkuCkBAIC0yMzQsNiArMjM3LDI1IEBAIFRFU1RfUChHZW5l
cmljRGVzY3JpcHRvclRlc3QsIEZvcmVtYW5DaWYzMGticHNXaXRob3V0UGFja2V0TG9zcykgewog
ICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6ZXIoZm9yZW1hbl9jaWYpOwogfQogCisvLyBUT0RPKHdl
YnJ0Yzo5NzIyKTogUmVtb3ZlIHdoZW4gZXhwZXJpbWVudCBpcyBjbGVhbmVkIHVwLgorVEVTVF9Q
KEdlbmVyaWNEZXNjcmlwdG9yVGVzdCwKKyAgICAgICBGb3JlbWFuQ2lmMzBrYnBzV2l0aG91dFBh
Y2tldExvc3NUcnVzdGVkUmF0ZUNvbnRyb2wpIHsKKyAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMg
b3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAgQXBwZW5kRmllbGRUcmlhbHMoa1ZwOFRydXN0
ZWRSYXRlQ29udHJvbGxlckZpZWxkVHJpYWwpKTsKKyAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlk
ZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKKworICBQYXJhbXNXaXRoTG9nZ2luZyBmb3JlbWFuX2Np
ZjsKKyAgZm9yZW1hbl9jaWYuY2FsbC5zZW5kX3NpZGVfYndlID0gdHJ1ZTsKKyAgZm9yZW1hbl9j
aWYudmlkZW9bMF0gPSB7dHJ1ZSwgIDM1MiwgICAgICAgICAgMjg4LCAxMCwgMzAwMDAsIDMwMDAw
LCAzMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsICJWUDgiLCAgICAgICAg
MSwgICAwLCAgMCwgICAgIGZhbHNlLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFsc2UsICJmb3JlbWFuX2NpZiJ9OworICBmb3JlbWFuX2NpZi5hbmFseXplciA9IHsKKyAgICAg
IEdldFRlc3ROYW1lKCJmb3JlbWFuX2NpZl8zMGticHNfbmV0X2RlbGF5XzBfMF9wbHJfMF90cnVz
dGVkX3JhdGVfY3RybCIpLAorICAgICAgMC4wLCAwLjAsIGtGdWxsU3RhY2tUZXN0RHVyYXRpb25T
ZWNzfTsKKyAgZm9yZW1hbl9jaWYuY2FsbC5nZW5lcmljX2Rlc2NyaXB0b3IgPSBHZW5lcmljRGVz
Y3JpcHRvckVuYWJsZWQoKTsKKyAgZml4dHVyZS0+UnVuV2l0aEFuYWx5emVyKGZvcmVtYW5fY2lm
KTsKK30KKwogLy8gTGluayBjYXBhY2l0eSBiZWxvdyBkZWZhdWx0IHN0YXJ0IHJhdGUuIEF1dG9t
YXRpYyBkb3duIHNjYWxpbmcgZW5hYmxlZC4KIFRFU1QoRnVsbFN0YWNrVGVzdCwgRm9yZW1hbkNp
ZkxpbmsxNTBrYnBzV2l0aG91dFBhY2tldExvc3MpIHsKICAgYXV0byBmaXh0dXJlID0gQ3JlYXRl
VmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKQEAgLTM2NSw5ICszODcsOSBAQCBURVNUX1AoR2Vu
ZXJpY0Rlc2NyaXB0b3JUZXN0LCBGb3JlbWFuQ2lmUGxyNUgyNjQpIHsKIH0KIAogVEVTVChGdWxs
U3RhY2tUZXN0LCBGb3JlbWFuQ2lmUGxyNUgyNjRTcHNQcHNJZHJJc0tleWZyYW1lKSB7Ci0gIGF1
dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CiAgIHRlc3Q6OlNj
b3BlZEZpZWxkVHJpYWxzIG92ZXJyaWRlX2ZpZWxkX3RyaWFscygKICAgICAgIEFwcGVuZEZpZWxk
VHJpYWxzKCJXZWJSVEMtU3BzUHBzSWRySXNIMjY0S2V5ZnJhbWUvRW5hYmxlZC8iKSk7CisgIGF1
dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CiAKICAgUGFyYW1z
V2l0aExvZ2dpbmcgZm9yZW1hbl9jaWY7CiAgIGZvcmVtYW5fY2lmLmNhbGwuc2VuZF9zaWRlX2J3
ZSA9IHRydWU7CkBAIC01MjEsMTYgKzU0MywyMSBAQCBURVNUKEZ1bGxTdGFja1Rlc3QsIENvbmZl
cmVuY2VNb3Rpb25IZDIwMDBrYnBzMTAwbXNMaW1pdGVkUXVldWUpIHsKICAgZml4dHVyZS0+UnVu
V2l0aEFuYWx5emVyKGNvbmZfbW90aW9uX2hkKTsKIH0KIAotVEVTVChGdWxsU3RhY2tUZXN0LCBD
b25mZXJlbmNlTW90aW9uSGQxVExNb2RlcmF0ZUxpbWl0cykgeworLy8gVE9ETyh3ZWJydGM6OTcy
Mik6IFJlbW92ZSB3aGVuIGV4cGVyaW1lbnQgaXMgY2xlYW5lZCB1cC4KK1RFU1QoRnVsbFN0YWNr
VGVzdCwgQ29uZmVyZW5jZU1vdGlvbkhkMVRMTW9kZXJhdGVMaW1pdHNXaGl0ZWxpc3RWcDgpIHsK
KyAgdGVzdDo6U2NvcGVkRmllbGRUcmlhbHMgb3ZlcnJpZGVfZmllbGRfdHJpYWxzKAorICAgICAg
QXBwZW5kRmllbGRUcmlhbHMoa1ZwOFRydXN0ZWRSYXRlQ29udHJvbGxlckZpZWxkVHJpYWwpKTsK
ICAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKKwogICBQ
YXJhbXNXaXRoTG9nZ2luZyBjb25mX21vdGlvbl9oZDsKICAgY29uZl9tb3Rpb25faGQuY2FsbC5z
ZW5kX3NpZGVfYndlID0gdHJ1ZTsKICAgY29uZl9tb3Rpb25faGQudmlkZW9bMF0gPSB7CiAgICAg
ICB0cnVlLCAgICAxMjgwLCAgICA3MjAsICAgNTAsICAgIDMwMDAwLAogICAgICAgMzAwMDAwMCwg
MzAwMDAwMCwgZmFsc2UsICJWUDgiLCAxLAogICAgICAgLTEsICAgICAgMCwgICAgICAgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgIkNvbmZlcmVuY2VNb3Rpb25fMTI4MF83MjBfNTAifTsKLSAgY29uZl9t
b3Rpb25faGQuYW5hbHl6ZXIgPSB7ImNvbmZlcmVuY2VfbW90aW9uX2hkXzF0bF9tb2RlcmF0ZV9s
aW1pdHMiLCAwLjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCwga0Z1bGxTdGFj
a1Rlc3REdXJhdGlvblNlY3N9OworICBjb25mX21vdGlvbl9oZC5hbmFseXplciA9IHsKKyAgICAg
ICJjb25mZXJlbmNlX21vdGlvbl9oZF8xdGxfbW9kZXJhdGVfbGltaXRzX3RydXN0ZWRfcmF0ZV9j
dHJsIiwgMC4wLCAwLjAsCisgICAgICBrRnVsbFN0YWNrVGVzdER1cmF0aW9uU2Vjc307CiAgIGNv
bmZfbW90aW9uX2hkLmNvbmZpZy0+cXVldWVfbGVuZ3RoX3BhY2tldHMgPSA1MDsKICAgY29uZl9t
b3Rpb25faGQuY29uZmlnLT5sb3NzX3BlcmNlbnQgPSAzOwogICBjb25mX21vdGlvbl9oZC5jb25m
aWctPnF1ZXVlX2RlbGF5X21zID0gMTAwOwpAQCAtNTkyLDE3ICs2MTksNDAgQEAgVEVTVChGdWxs
U3RhY2tUZXN0LCBDb25mZXJlbmNlTW90aW9uSGQ0VExNb2RlcmF0ZUxpbWl0cykgewogfQogCiBU
RVNUKEZ1bGxTdGFja1Rlc3QsIENvbmZlcmVuY2VNb3Rpb25IZDNUTE1vZGVyYXRlTGltaXRzQWx0
VExQYXR0ZXJuKSB7Ci0gIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0
dXJlKCk7CiAgIHRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIGZpZWxkX3RyaWFsKAogICAgICAgQXBw
ZW5kRmllbGRUcmlhbHMoIldlYlJUQy1Vc2VTaG9ydFZQOFRMM1BhdHRlcm4vRW5hYmxlZC8iKSk7
CisgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CisgIFBh
cmFtc1dpdGhMb2dnaW5nIGNvbmZfbW90aW9uX2hkOworICBjb25mX21vdGlvbl9oZC5jYWxsLnNl
bmRfc2lkZV9id2UgPSB0cnVlOworICBjb25mX21vdGlvbl9oZC52aWRlb1swXSA9IHsKKyAgICAg
IHRydWUsICAxMjgwLCAgICA3MjAsICAgICA1MCwKKyAgICAgIDMwMDAwLCAzMDAwMDAwLCAzMDAw
MDAwLCBmYWxzZSwKKyAgICAgICJWUDgiLCAzLCAgICAgICAtMSwgICAgICAwLAorICAgICAgZmFs
c2UsIGZhbHNlLCAgIGZhbHNlLCAgICJDb25mZXJlbmNlTW90aW9uXzEyODBfNzIwXzUwIn07Cisg
IGNvbmZfbW90aW9uX2hkLmFuYWx5emVyID0geyJjb25mZXJlbmNlX21vdGlvbl9oZF8zdGxfYWx0
X21vZGVyYXRlX2xpbWl0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCwgMC4w
LCBrRnVsbFN0YWNrVGVzdER1cmF0aW9uU2Vjc307CisgIGNvbmZfbW90aW9uX2hkLmNvbmZpZy0+
cXVldWVfbGVuZ3RoX3BhY2tldHMgPSA1MDsKKyAgY29uZl9tb3Rpb25faGQuY29uZmlnLT5sb3Nz
X3BlcmNlbnQgPSAzOworICBjb25mX21vdGlvbl9oZC5jb25maWctPnF1ZXVlX2RlbGF5X21zID0g
MTAwOworICBjb25mX21vdGlvbl9oZC5jb25maWctPmxpbmtfY2FwYWNpdHlfa2JwcyA9IDIwMDA7
CisgIGZpeHR1cmUtPlJ1bldpdGhBbmFseXplcihjb25mX21vdGlvbl9oZCk7Cit9CisKK1RFU1Qo
RnVsbFN0YWNrVGVzdCwKKyAgICAgQ29uZmVyZW5jZU1vdGlvbkhkM1RMTW9kZXJhdGVMaW1pdHNB
bHRUTFBhdHRlcm5BbmRCYXNlSGVhdnlUTEFsbG9jYXRpb24pIHsKKyAgYXV0byBmaXh0dXJlID0g
Q3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKKyAgdGVzdDo6U2NvcGVkRmllbGRUcmlh
bHMgZmllbGRfdHJpYWwoCisgICAgICBBcHBlbmRGaWVsZFRyaWFscygiV2ViUlRDLVVzZVNob3J0
VlA4VEwzUGF0dGVybi9FbmFibGVkLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJXZWJSVEMt
VXNlQmFzZUhlYXZ5VlA4VEwzUmF0ZUFsbG9jYXRpb24vRW5hYmxlZC8iKSk7CiAgIFBhcmFtc1dp
dGhMb2dnaW5nIGNvbmZfbW90aW9uX2hkOwogICBjb25mX21vdGlvbl9oZC5jYWxsLnNlbmRfc2lk
ZV9id2UgPSB0cnVlOwogICBjb25mX21vdGlvbl9oZC52aWRlb1swXSA9IHsKICAgICAgIHRydWUs
ICAgIDEyODAsICAgIDcyMCwgICA1MCwgICAgMzAwMDAsCiAgICAgICAzMDAwMDAwLCAzMDAwMDAw
LCBmYWxzZSwgIlZQOCIsIDMsCiAgICAgICAtMSwgICAgICAwLCAgICAgICBmYWxzZSwgZmFsc2Us
IGZhbHNlLCAiQ29uZmVyZW5jZU1vdGlvbl8xMjgwXzcyMF81MCJ9OwotICBjb25mX21vdGlvbl9o
ZC5hbmFseXplciA9IHsiY29uZmVyZW5jZV9tb3Rpb25faGRfM3RsX2FsdF9tb2RlcmF0ZV9saW1p
dHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAsIDAuMCwga0Z1bGxTdGFja1Rl
c3REdXJhdGlvblNlY3N9OworICBjb25mX21vdGlvbl9oZC5hbmFseXplciA9IHsKKyAgICAgICJj
b25mZXJlbmNlX21vdGlvbl9oZF8zdGxfYWx0X2hlYXZ5X21vZGVyYXRlX2xpbWl0cyIsIDAuMCwg
MC4wLAorICAgICAga0Z1bGxTdGFja1Rlc3REdXJhdGlvblNlY3N9OwogICBjb25mX21vdGlvbl9o
ZC5jb25maWctPnF1ZXVlX2xlbmd0aF9wYWNrZXRzID0gNTA7CiAgIGNvbmZfbW90aW9uX2hkLmNv
bmZpZy0+bG9zc19wZXJjZW50ID0gMzsKICAgY29uZl9tb3Rpb25faGQuY29uZmlnLT5xdWV1ZV9k
ZWxheV9tcyA9IDEwMDsKQEAgLTYxMCw3ICs2NjAsNyBAQCBURVNUKEZ1bGxTdGFja1Rlc3QsIENv
bmZlcmVuY2VNb3Rpb25IZDNUTE1vZGVyYXRlTGltaXRzQWx0VExQYXR0ZXJuKSB7CiAgIGZpeHR1
cmUtPlJ1bldpdGhBbmFseXplcihjb25mX21vdGlvbl9oZCk7CiB9CiAKLSNpZiAhZGVmaW5lZChS
VENfRElTQUJMRV9WUDkpCisjaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIFRFU1QoRnVsbFN0
YWNrVGVzdCwgQ29uZmVyZW5jZU1vdGlvbkhkMjAwMGticHMxMDBtc0xpbWl0ZWRRdWV1ZVZQOSkg
ewogICBhdXRvIGZpeHR1cmUgPSBDcmVhdGVWaWRlb1F1YWxpdHlUZXN0Rml4dHVyZSgpOwogICBQ
YXJhbXNXaXRoTG9nZ2luZyBjb25mX21vdGlvbl9oZDsKQEAgLTY0Miw5ICs2OTIsMTUgQEAgVEVT
VChGdWxsU3RhY2tUZXN0LCBTY3JlZW5zaGFyZVNsaWRlc1ZQOF8yVEwpIHsKICAgZml4dHVyZS0+
UnVuV2l0aEFuYWx5emVyKHNjcmVlbnNoYXJlKTsKIH0KIAorLy8gVE9ETyhidWdzLndlYnJ0Yy5v
cmcvOTg0MCk6IEludmVzdGlnYXRlIHdoeSBpcyB0aGlzIHRlc3QgZmxha3kgb24gTUFDLgorI2lm
ICFkZWZpbmVkKFdFQlJUQ19NQUMpCitjb25zdCBjaGFyIGtTY3JlZW5zaGFyZVNpbXVsY2FzdEV4
cGVyaW1lbnRbXSA9CisgICAgIldlYlJUQy1TaW11bGNhc3RTY3JlZW5zaGFyZS9FbmFibGVkLyI7
CisKIFRFU1QoRnVsbFN0YWNrVGVzdCwgU2NyZWVuc2hhcmVTbGlkZXNWUDhfM1RMX1NpbXVsY2Fz
dCkgeworICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbCgKKyAgICAgIEFwcGVu
ZEZpZWxkVHJpYWxzKGtTY3JlZW5zaGFyZVNpbXVsY2FzdEV4cGVyaW1lbnQpKTsKICAgYXV0byBm
aXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKLSAgdGVzdDo6U2NvcGVk
RmllbGRUcmlhbHMgZmllbGRfdHJpYWwoa1NjcmVlbnNoYXJlU2ltdWxjYXN0RXhwZXJpbWVudCk7
CiAgIFBhcmFtc1dpdGhMb2dnaW5nIHNjcmVlbnNoYXJlOwogICBzY3JlZW5zaGFyZS5jYWxsLnNl
bmRfc2lkZV9id2UgPSB0cnVlOwogICBzY3JlZW5zaGFyZS5zY3JlZW5zaGFyZVswXSA9IHt0cnVl
LCBmYWxzZSwgMTB9OwpAQCAtNjcwLDYgKzcyNiw3IEBAIFRFU1QoRnVsbFN0YWNrVGVzdCwgU2Ny
ZWVuc2hhcmVTbGlkZXNWUDhfM1RMX1NpbXVsY2FzdCkgewogICAgICAgZmFsc2V9OwogICBmaXh0
dXJlLT5SdW5XaXRoQW5hbHl6ZXIoc2NyZWVuc2hhcmUpOwogfQorI2VuZGlmICAvLyAhZGVmaW5l
ZChXRUJSVENfTUFDKQogCiBURVNUKEZ1bGxTdGFja1Rlc3QsIFNjcmVlbnNoYXJlU2xpZGVzVlA4
XzJUTF9TY3JvbGwpIHsKICAgYXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZp
eHR1cmUoKTsKQEAgLTc3MSw3ICs4MjgsNyBAQCBjb25zdCBQYXJhbXNXaXRoTG9nZ2luZzo6Vmlk
ZW8ga1NpbXVsY2FzdFZwOFZpZGVvTG93ID0gewogICAgIDE1MDAwMCwgMjAwMDAwLCBmYWxzZSwg
IlZQOCIsIDMsCiAgICAgMiwgICAgICA0MDAwMDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsICJDb25m
ZXJlbmNlTW90aW9uXzEyODBfNzIwXzUwIn07CiAKLSNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9W
UDkpCisjaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKIFRFU1QoRnVsbFN0YWNrVGVzdCwgU2Ny
ZWVuc2hhcmVTbGlkZXNWUDlfMlNMKSB7CiAgIGF1dG8gZml4dHVyZSA9IENyZWF0ZVZpZGVvUXVh
bGl0eVRlc3RGaXh0dXJlKCk7CiAgIFBhcmFtc1dpdGhMb2dnaW5nIHNjcmVlbnNoYXJlOwpAQCAt
ODkxLDkgKzk0OCwyOCBAQCBURVNUKEZ1bGxTdGFja1Rlc3QsIFZQOUtTVkNfM1NMX01lZGl1bV9O
ZXR3b3JrX1Jlc3RyaWN0ZWQpIHsKICAgc2ltdWxjYXN0LmNvbmZpZy0+cXVldWVfZGVsYXlfbXMg
PSAxMDA7CiAgIGZpeHR1cmUtPlJ1bldpdGhBbmFseXplcihzaW11bGNhc3QpOwogfQorCisvLyBU
T0RPKHdlYnJ0Yzo5NzIyKTogUmVtb3ZlIHdoZW4gZXhwZXJpbWVudCBpcyBjbGVhbmVkIHVwLgor
VEVTVChGdWxsU3RhY2tUZXN0LCBWUDlLU1ZDXzNTTF9NZWRpdW1fTmV0d29ya19SZXN0cmljdGVk
X1RydXN0ZWRfUmF0ZSkgeworICB3ZWJydGM6OnRlc3Q6OlNjb3BlZEZpZWxkVHJpYWxzIG92ZXJy
aWRlX3RyaWFscygKKyAgICAgIEFwcGVuZEZpZWxkVHJpYWxzKCJXZWJSVEMtVnA5SXNzdWVLZXlG
cmFtZU9uTGF5ZXJEZWFjdGl2YXRpb24vRW5hYmxlZC8iCisgICAgICAgICAgICAgICAgICAgICAg
ICAiV2ViUlRDLUxpYnZweFZwOVRydXN0ZWRSYXRlQ29udHJvbGxlci9FbmFibGVkLyIpKTsKKyAg
YXV0byBmaXh0dXJlID0gQ3JlYXRlVmlkZW9RdWFsaXR5VGVzdEZpeHR1cmUoKTsKKyAgUGFyYW1z
V2l0aExvZ2dpbmcgc2ltdWxjYXN0OworICBzaW11bGNhc3QuY2FsbC5zZW5kX3NpZGVfYndlID0g
dHJ1ZTsKKyAgc2ltdWxjYXN0LnZpZGVvWzBdID0ga1N2Y1ZwOVZpZGVvOworICBzaW11bGNhc3Qu
YW5hbHl6ZXIgPSB7InZwOWtzdmNfM3NsX21lZGl1bV9uZXR3b3JrX3Jlc3RyaWN0ZWRfdHJ1c3Rl
ZF9yYXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAuMCwgMC4wLCBrRnVsbFN0YWNrVGVz
dER1cmF0aW9uU2Vjc307CisgIHNpbXVsY2FzdC5zc1swXSA9IHsKKyAgICAgIHN0ZDo6dmVjdG9y
PFZpZGVvU3RyZWFtPigpLCAgMCwgICAgMywgLTEsIEludGVyTGF5ZXJQcmVkTW9kZTo6a09uS2V5
UGljLAorICAgICAgc3RkOjp2ZWN0b3I8U3BhdGlhbExheWVyPigpLCBmYWxzZX07CisgIHNpbXVs
Y2FzdC5jb25maWctPmxpbmtfY2FwYWNpdHlfa2JwcyA9IDEwMDA7CisgIHNpbXVsY2FzdC5jb25m
aWctPnF1ZXVlX2RlbGF5X21zID0gMTAwOworICBmaXh0dXJlLT5SdW5XaXRoQW5hbHl6ZXIoc2lt
dWxjYXN0KTsKK30KICNlbmRpZiAgLy8gIWRlZmluZWQoV0VCUlRDX01BQykKIAotI2VuZGlmICAv
LyAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJM
RV9WUDkpCiAKIC8vIEFuZHJvaWQgYm90cyBjYW4ndCBoYW5kbGUgRnVsbEhELCBzbyBkaXNhYmxl
IHRoZSB0ZXN0LgogLy8gVE9ETyhidWdzLndlYnJ0Yy5vcmcvOTIyMCk6IEludmVzdGlnYXRlIHNv
dXJjZSBvZiBmbGFraW5lc3Mgb24gTWFjLgpAQCAtMTEwNCw3ICsxMTgwLDggQEAgSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoRnVsbFN0YWNrVGVzdCwKIGNsYXNzIER1YWxTdHJlYW1zVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7fTsKIAogLy8gRGlzYWJsZSBkdWFs
IHZpZGVvIHRlc3Qgb24gbW9iaWxlIGRldmljZSBiZWN1YXNlIGl0J3MgdG9vIGhlYXZ5LgotI2lm
ICFkZWZpbmVkKFdFQlJUQ19BTkRST0lEKSAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQorLy8gVE9E
TyhidWdzLndlYnJ0Yy5vcmcvOTg0MCk6IEludmVzdGlnYXRlIHdoeSBpcyB0aGlzIHRlc3QgZmxh
a3kgb24gTUFDLgorI2lmICFkZWZpbmVkKFdFQlJUQ19BTkRST0lEKSAmJiAhZGVmaW5lZChXRUJS
VENfSU9TKSAmJiAhZGVmaW5lZChXRUJSVENfTUFDKQogVEVTVF9QKER1YWxTdHJlYW1zVGVzdCwK
ICAgICAgICBNb2RlcmF0ZWx5UmVzdHJpY3RlZF9TbGlkZXNWcDhfM1RMX1NpbXVsY2FzdF9WaWRl
b19TaW11bGNhc3RfSGlnaCkgewogICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlh
bCgKQEAgLTExNjgsNyArMTI0NSw4IEBAIFRFU1RfUChEdWFsU3RyZWFtc1Rlc3QsCiAgIGF1dG8g
Zml4dHVyZSA9IENyZWF0ZVZpZGVvUXVhbGl0eVRlc3RGaXh0dXJlKCk7CiAgIGZpeHR1cmUtPlJ1
bldpdGhBbmFseXplcihkdWFsX3N0cmVhbXMpOwogfQotI2VuZGlmICAvLyAhZGVmaW5lZChXRUJS
VENfQU5EUk9JRCkgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKKyNlbmRpZiAgLy8gIWRlZmluZWQo
V0VCUlRDX0FORFJPSUQpICYmICFkZWZpbmVkKFdFQlJUQ19JT1MpICYmCisgICAgICAgIC8vICFk
ZWZpbmVkKFdFQlJUQ19NQUMpCiAKIFRFU1RfUChEdWFsU3RyZWFtc1Rlc3QsIENvbmZlcmVuY2Vf
UmVzdHJpY3RlZCkgewogICB0ZXN0OjpTY29wZWRGaWVsZFRyaWFscyBmaWVsZF90cmlhbCgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L292ZXJ1c2VfZnJhbWVfZGV0ZWN0b3JfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9vdmVydXNlX2ZyYW1lX2RldGVjdG9yX3VuaXR0
ZXN0LmNjCmluZGV4IGFjMDE5NzU0YzU0ZTI2MWRhMTdmYWI4OWM5NjQwMWQ2N2VjNjFjYjguLjkx
MDUwZDUwNTZmMDFiNGNmZTc5OGQyODgzNzQxY2Y0M2IzYzhjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL292ZXJ1c2VfZnJhbWVf
ZGV0ZWN0b3JfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vb3ZlcnVzZV9mcmFtZV9kZXRlY3Rvcl91bml0dGVzdC5jYwpAQCAt
MTAsOCArMTAsOCBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCisjaW5jbHVkZSAiYXBpL3ZpZGVv
L2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIuaCIKLSNp
bmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgogI2luY2x1ZGUgIm1v
ZHVsZXMvdmlkZW9fY29kaW5nL3V0aWxpdHkvcXVhbGl0eV9zY2FsZXIuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS9ldmVudC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2Zha2VjbG9jay5oIgpAQCAtNDA2
LDcgKzQwNiw3IEBAIFRFU1RfRihPdmVydXNlRnJhbWVEZXRlY3RvclRlc3QsIFVwZGF0ZXNFeGlz
dGluZ1NhbXBsZXMpIHsKIFRFU1RfRihPdmVydXNlRnJhbWVEZXRlY3RvclRlc3QsIFJ1bk9uVHFO
b3JtYWxVc2FnZSkgewogICBydGM6OlRhc2tRdWV1ZSBxdWV1ZSgiT3ZlcnVzZUZyYW1lRGV0ZWN0
b3JUZXN0UXVldWUiKTsKIAotICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0
Yzo6RXZlbnQgZXZlbnQ7CiAgIHF1ZXVlLlBvc3RUYXNrKFt0aGlzLCAmZXZlbnRdIHsKICAgICBv
dmVydXNlX2RldGVjdG9yXy0+U3RhcnRDaGVja0Zvck92ZXJ1c2Uob3B0aW9uc18sIG9ic2VydmVy
Xyk7CiAgICAgZXZlbnQuU2V0KCk7CkBAIC04NzAsNyArODcwLDcgQEAgVEVTVF9GKE92ZXJ1c2VG
cmFtZURldGVjdG9yVGVzdDIsIFVwZGF0ZXNFeGlzdGluZ1NhbXBsZXMpIHsKIFRFU1RfRihPdmVy
dXNlRnJhbWVEZXRlY3RvclRlc3QyLCBSdW5PblRxTm9ybWFsVXNhZ2UpIHsKICAgcnRjOjpUYXNr
UXVldWUgcXVldWUoIk92ZXJ1c2VGcmFtZURldGVjdG9yVGVzdFF1ZXVlIik7CiAKLSAgcnRjOjpF
dmVudCBldmVudChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGV2ZW50OwogICBxdWV1ZS5Q
b3N0VGFzayhbdGhpcywgJmV2ZW50XSB7CiAgICAgb3ZlcnVzZV9kZXRlY3Rvcl8tPlN0YXJ0Q2hl
Y2tGb3JPdmVydXNlKG9wdGlvbnNfLCBvYnNlcnZlcl8pOwogICAgIGV2ZW50LlNldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
cGljdHVyZV9pZF90ZXN0cy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3ZpZGVvL3BpY3R1cmVfaWRfdGVzdHMuY2MKaW5kZXggMTU1ZGExM2FlNDlkYzQ5Njdh
YmE5YWIyNzY5MGYzODNjNWZmMzdmNC4uNmNlMGM5OWZmZTdiMzI3MDFhYTI1Mjg5YzEwZWRkZTU3
ZDIyOTEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vcGljdHVyZV9pZF90ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9waWN0dXJlX2lkX3Rlc3RzLmNjCkBAIC05LDYg
KzksNyBAQAogICovCiAKICNpbmNsdWRlICJhcGkvdGVzdC9zaW11bGF0ZWRfbmV0d29yay5oIgor
I2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5o
IgogI2luY2x1ZGUgImNhbGwvZmFrZV9uZXR3b3JrX3BpcGUuaCIKICNpbmNsdWRlICJjYWxsL3Np
bXVsYXRlZF9uZXR3b3JrLmgiCiAjaW5jbHVkZSAibWVkaWEvZW5naW5lL2ludGVybmFsZW5jb2Rl
cmZhY3RvcnkuaCIKQEAgLTE5LDcgKzIwLDYgQEAKICNpbmNsdWRlICJydGNfYmFzZS9udW1lcmlj
cy9zYWZlX2NvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3Mvc2VxdWVu
Y2VfbnVtYmVyX3V0aWwuaCIKICNpbmNsdWRlICJ0ZXN0L2NhbGxfdGVzdC5oIgotI2luY2x1ZGUg
InRlc3QvZnVuY3Rpb25fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCiAKIG5hbWVzcGFjZSB3ZWJy
dGMgewogbmFtZXNwYWNlIHsKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFBpY3R1cmVJZFRlc3Q6
OlNldHVwRW5jb2RlcihWaWRlb0VuY29kZXJGYWN0b3J5KiBlbmNvZGVyX2ZhY3RvcnksCiAgICAg
ICAgIHRlc3Q6OlBhY2tldFRyYW5zcG9ydDo6a1NlbmRlciwgcGF5bG9hZF90eXBlX21hcF8sCiAg
ICAgICAgIGFic2w6Om1ha2VfdW5pcXVlPEZha2VOZXR3b3JrUGlwZT4oCiAgICAgICAgICAgICBD
bG9jazo6R2V0UmVhbFRpbWVDbG9jaygpLCBhYnNsOjptYWtlX3VuaXF1ZTxTaW11bGF0ZWROZXR3
b3JrPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0
TmV0d29ya1NpbXVsYXRpb25Db25maWcoKSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZygpKSkpKTsKIAog
ICAgIENyZWF0ZVNlbmRDb25maWcoa051bVNpbXVsY2FzdFN0cmVhbXMsIDAsIDAsIHNlbmRfdHJh
bnNwb3J0Xy5nZXQoKSk7CiAgICAgR2V0VmlkZW9TZW5kQ29uZmlnKCktPmVuY29kZXJfc2V0dGlu
Z3MuZW5jb2Rlcl9mYWN0b3J5ID0gZW5jb2Rlcl9mYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcXVhbGl0eV9zY2FsaW5n
X3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vcXVhbGl0eV9zY2FsaW5nX3Rlc3RzLmNjCmluZGV4IDliMWQwZmFlZmYyMTI4YzdlYWNjYzI0
ZTcyYjE3Njg2NzAyNzc5MDQuLjAxMzI4ZjgxOTI1NzI1ZjIwNjJiMGRmYzQ2MmM3NDExYmM5OWNj
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL3F1YWxpdHlfc2NhbGluZ190ZXN0cy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9xdWFsaXR5X3NjYWxpbmdfdGVzdHMuY2MKQEAg
LTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgImFwaS90ZXN0
L3ZpZGVvL2Z1bmN0aW9uX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIm1lZGlh
L2VuZ2luZS9pbnRlcm5hbGVuY29kZXJmYWN0b3J5LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRl
b19jb2RpbmcvY29kZWNzL2gyNjQvaW5jbHVkZS9oMjY0LmgiCiAjaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOC5oIgpAQCAtMTcsNyArMTgsNiBAQAog
I2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9maWVsZF90cmlhbC5o
IgogI2luY2x1ZGUgInRlc3QvZnJhbWVfZ2VuZXJhdG9yX2NhcHR1cmVyLmgiCi0jaW5jbHVkZSAi
dGVzdC9mdW5jdGlvbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIHdlYnJ0
YyB7CiBuYW1lc3BhY2UgewpAQCAtMTAzLDggKzEwMyw5IEBAIHZvaWQgUXVhbGl0eVNjYWxpbmdU
ZXN0OjpSdW5UZXN0KFZpZGVvRW5jb2RlckZhY3RvcnkqIGVuY29kZXJfZmFjdG9yeSwKICAgICAg
IGlmICh3YW50cy5tYXhfcGl4ZWxfY291bnQgPCBrV2lkdGggKiBrSGVpZ2h0KQogICAgICAgICBv
YnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7CiAgICAgfQotICAgIHZvaWQgTW9kaWZ5U2VuZGVy
Q2FsbENvbmZpZyhDYWxsOjpDb25maWcqIGNvbmZpZykgb3ZlcnJpZGUgewotICAgICAgY29uZmln
LT5iaXRyYXRlX2NvbmZpZy5zdGFydF9iaXRyYXRlX2JwcyA9IHN0YXJ0X2Jwc187CisgICAgdm9p
ZCBNb2RpZnlTZW5kZXJCaXRyYXRlQ29uZmlnKAorICAgICAgICBCaXRyYXRlQ29uc3RyYWludHMq
IGJpdHJhdGVfY29uZmlnKSBvdmVycmlkZSB7CisgICAgICBiaXRyYXRlX2NvbmZpZy0+c3RhcnRf
Yml0cmF0ZV9icHMgPSBzdGFydF9icHNfOwogICAgIH0KIAogICAgIHZvaWQgTW9kaWZ5VmlkZW9D
b25maWdzKApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vcmVjZWl2ZV9zdGF0aXN0aWNzX3Byb3h5LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVjZWl2ZV9zdGF0aXN0aWNzX3Byb3h5
LmNjCmluZGV4IGNjZDJjMjBmNjVmOGE3MjllZWQxZGQ1NmQxNzdjY2VhYWNlOGVkN2MuLmUyMGI3
ZDI5NGZkNjIyNDk0MmM3Nzk4YWU2NjQwM2I1ZDgzNTdkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGlj
c19wcm94eS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby9yZWNlaXZlX3N0YXRpc3RpY3NfcHJveHkuY2MKQEAgLTc1OSw2ICs3NTksOSBAQCB2
b2lkIFJlY2VpdmVTdGF0aXN0aWNzUHJveHk6Ok9uUmVuZGVyZWRGcmFtZShjb25zdCBWaWRlb0Zy
YW1lJiBmcmFtZSkgewogICBSVENfRENIRUNLX0dUKGhlaWdodCwgMCk7CiAgIGludDY0X3Qgbm93
X21zID0gY2xvY2tfLT5UaW1lSW5NaWxsaXNlY29uZHMoKTsKICAgcnRjOjpDcml0U2NvcGUgbG9j
aygmY3JpdF8pOworCisgIHZpZGVvX3F1YWxpdHlfb2JzZXJ2ZXJfLT5PblJlbmRlcmVkRnJhbWUo
bm93X21zKTsKKwogICBDb250ZW50U3BlY2lmaWNTdGF0cyogY29udGVudF9zcGVjaWZpY19zdGF0
cyA9CiAgICAgICAmY29udGVudF9zcGVjaWZpY19zdGF0c19bbGFzdF9jb250ZW50X3R5cGVfXTsK
ICAgcmVuZGVyc19mcHNfZXN0aW1hdG9yXy5VcGRhdGUoMSwgbm93X21zKTsKQEAgLTgxMyw4ICs4
MTYsMTUgQEAgdm9pZCBSZWNlaXZlU3RhdGlzdGljc1Byb3h5OjpPbkNvbXBsZXRlRnJhbWUoYm9v
bCBpc19rZXlmcmFtZSwKICAgICArK3N0YXRzXy5mcmFtZV9jb3VudHMuZGVsdGFfZnJhbWVzOwog
ICB9CiAKKyAgLy8gQ29udGVudCB0eXBlIGV4dGVuc2lvbiBpcyBzZXQgb25seSBmb3Iga2V5ZnJh
bWVzIGFuZCBzaG91bGQgYmUgcHJvcGFnYXRlZAorICAvLyBmb3IgYWxsIHRoZSBmb2xsb3dpbmcg
ZGVsdGEgZnJhbWVzLiBIZXJlIHdlIG1heSByZWNlaXZlIGZyYW1lcyBvdXQgb2Ygb3JkZXIKKyAg
Ly8gYW5kIG1pc2NhdGVnb3Jpc2Ugc29tZSBkZWx0YSBmcmFtZXMgbmVhciB0aGUgbGF5ZXIgc3dp
dGNoLgorICAvLyBUaGlzIG1heSBzbGlnaHRseSBvZmZzZXQgY2FsY3VsYXRlZCBiaXRyYXRlIGFu
ZCBrZXlmcmFtZXMgcGVybWlsbGUgbWV0cmljcy4KKyAgVmlkZW9Db250ZW50VHlwZSBwcm9wYWdh
dGVkX2NvbnRlbnRfdHlwZSA9CisgICAgICBpc19rZXlmcmFtZSA/IGNvbnRlbnRfdHlwZSA6IGxh
c3RfY29udGVudF90eXBlXzsKKwogICBDb250ZW50U3BlY2lmaWNTdGF0cyogY29udGVudF9zcGVj
aWZpY19zdGF0cyA9Ci0gICAgICAmY29udGVudF9zcGVjaWZpY19zdGF0c19bY29udGVudF90eXBl
XTsKKyAgICAgICZjb250ZW50X3NwZWNpZmljX3N0YXRzX1twcm9wYWdhdGVkX2NvbnRlbnRfdHlw
ZV07CiAKICAgY29udGVudF9zcGVjaWZpY19zdGF0cy0+dG90YWxfbWVkaWFfYnl0ZXMgKz0gc2l6
ZV9ieXRlczsKICAgaWYgKGlzX2tleWZyYW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0YXRpc3RpY3NfcHJv
eHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Jl
Y2VpdmVfc3RhdGlzdGljc19wcm94eS5oCmluZGV4IDRkYWVmZTA0N2Q2NTg5OTRlODkzYmQ4MzUz
MzIwYzNjMjgxZmM2ZGUuLjEwMGU3NTExNmM0NzM2MDAyMGMyOTQwMzZkZjRlMThiNTk5MTI4NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94eS5oCkBA
IC0xOCw4ICsxOCw2IEBACiAKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5j
bHVkZSAiY2FsbC92aWRlb19yZWNlaXZlX3N0cmVhbS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBl
cy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCi0jaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2lu
Y2x1ZGUvZnJhbWVfY2FsbGJhY2suaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9p
bmNsdWRlL3ZpZGVvX2NvZGluZ19kZWZpbmVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3JpdGlj
YWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJpY3MvaGlzdG9ncmFtX3BlcmNl
bnRpbGVfY291bnRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvdmlkZW8vcmVjZWl2ZV9zdGF0aXN0aWNzX3Byb3h5X3VuaXR0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVjZWl2
ZV9zdGF0aXN0aWNzX3Byb3h5X3VuaXR0ZXN0LmNjCmluZGV4IGI4YTk2YjJmNWU4MjQyNDgzNTEy
ODU2MDZlMDkzYWNmNjVlMDE4YzIuLmI3NGU0NjAxYWFiMGE5MTZlODQ5NmFjM2VhMDI0YmUxZWEx
MTA0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94eV91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZWNlaXZlX3N0YXRp
c3RpY3NfcHJveHlfdW5pdHRlc3QuY2MKQEAgLTEwNTcsMTUgKzEwNTcsMTkgQEAgVEVTVF9QKFJl
Y2VpdmVTdGF0aXN0aWNzUHJveHlUZXN0LCBGcmVlemVzQXJlUmVwb3J0ZWQpIHsKICAgY29uc3Qg
aW50IGtGcmVlemVEZWxheU1zID0gMjAwOwogICBjb25zdCBpbnQga0NhbGxEdXJhdGlvbk1zID0K
ICAgICAgIGtNaW5SZXF1aXJlZFNhbXBsZXMgKiBrSW50ZXJGcmFtZURlbGF5TXMgKyBrRnJlZXpl
RGVsYXlNczsKKyAgd2VicnRjOjpWaWRlb0ZyYW1lIGZyYW1lKHdlYnJ0Yzo6STQyMEJ1ZmZlcjo6
Q3JlYXRlKDEsIDEpLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VicnRjOjpr
VmlkZW9Sb3RhdGlvbl8wKTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrTWluUmVxdWlyZWRTYW1w
bGVzOyArK2kpIHsKICAgICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25EZWNvZGVkRnJhbWUoYWJzbDo6
bnVsbG9wdCwga1dpZHRoLCBrSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZW50X3R5cGUpOworICAgIHN0YXRpc3RpY3NfcHJveHlfLT5PblJlbmRlcmVk
RnJhbWUoZnJhbWUpOwogICAgIGZha2VfY2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtJ
bnRlckZyYW1lRGVsYXlNcyk7CiAgIH0KICAgLy8gQWRkIGV4dHJhIGZyZWV6ZS4KICAgZmFrZV9j
bG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa0ZyZWV6ZURlbGF5TXMpOwogICBzdGF0aXN0
aWNzX3Byb3h5Xy0+T25EZWNvZGVkRnJhbWUoYWJzbDo6bnVsbG9wdCwga1dpZHRoLCBrSGVpZ2h0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlKTsKKyAg
c3RhdGlzdGljc19wcm94eV8tPk9uUmVuZGVyZWRGcmFtZShmcmFtZSk7CiAKICAgc3RhdGlzdGlj
c19wcm94eV8ucmVzZXQoKTsKICAgY29uc3QgaW50IGtFeHBlY3RlZFRpbWVCZXR3ZWVuRnJlZXpl
cyA9CkBAIC0xMDk1LDkgKzEwOTksMTIgQEAgVEVTVF9QKFJlY2VpdmVTdGF0aXN0aWNzUHJveHlU
ZXN0LCBQYXVzZXNBcmVJZ25vcmVkKSB7CiAgIGNvbnN0IFZpZGVvQ29udGVudFR5cGUgY29udGVu
dF90eXBlID0gR2V0UGFyYW0oKTsKICAgY29uc3QgaW50IGtJbnRlckZyYW1lRGVsYXlNcyA9IDMz
OwogICBjb25zdCBpbnQga1BhdXNlRHVyYXRpb25NcyA9IDEwMDAwOworICB3ZWJydGM6OlZpZGVv
RnJhbWUgZnJhbWUod2VicnRjOjpJNDIwQnVmZmVyOjpDcmVhdGUoMSwgMSksIDAsIDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzApOwogICBmb3Ig
KGludCBpID0gMDsgaSA8PSBrTWluUmVxdWlyZWRTYW1wbGVzOyArK2kpIHsKICAgICBzdGF0aXN0
aWNzX3Byb3h5Xy0+T25EZWNvZGVkRnJhbWUoYWJzbDo6bnVsbG9wdCwga1dpZHRoLCBrSGVpZ2h0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGUpOwor
ICAgIHN0YXRpc3RpY3NfcHJveHlfLT5PblJlbmRlcmVkRnJhbWUoZnJhbWUpOwogICAgIGZha2Vf
Y2xvY2tfLkFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtJbnRlckZyYW1lRGVsYXlNcyk7CiAgIH0K
ICAgLy8gQWRkIGEgcGF1c2UuCkBAIC0xMTA4LDYgKzExMTUsNyBAQCBURVNUX1AoUmVjZWl2ZVN0
YXRpc3RpY3NQcm94eVRlc3QsIFBhdXNlc0FyZUlnbm9yZWQpIHsKICAgZm9yIChpbnQgaSA9IDA7
IGkgPD0ga01pblJlcXVpcmVkU2FtcGxlcyAqIDM7ICsraSkgewogICAgIHN0YXRpc3RpY3NfcHJv
eHlfLT5PbkRlY29kZWRGcmFtZShhYnNsOjpudWxsb3B0LCBrV2lkdGgsIGtIZWlnaHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSk7CisgICAgc3Rh
dGlzdGljc19wcm94eV8tPk9uUmVuZGVyZWRGcmFtZShmcmFtZSk7CiAgICAgZmFrZV9jbG9ja18u
QWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa0ludGVyRnJhbWVEZWxheU1zKTsKICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9y
ZXBsYXkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9yZXBsYXkuY2MKaW5kZXggNWMxN2U1YjNiN2Q5NDdiZDg0NmU5ZjY5NjdiZjFkMWEyM2EwYjQ1
My4uMmMxYzhhNTVhZDRmNWY4NTI3Y2IxNjJlODU1NWQxOWIyOGFjYjY0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVwbGF5LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Jl
cGxheS5jYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxz
c3RyZWFtPgogCisjaW5jbHVkZSAiYXBpL3Rlc3QvdmlkZW8vZnVuY3Rpb25fdmlkZW9fZGVjb2Rl
cl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyLmgi
CiAjaW5jbHVkZSAiY2FsbC9jYWxsLmgiCiAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2xpYnl1di9p
bmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKQEAgLTMyLDcgKzMzLDYgQEAKICNpbmNsdWRlICJ0ZXN0
L2NhbGxfdGVzdC5oIgogI2luY2x1ZGUgInRlc3QvZW5jb2Rlcl9zZXR0aW5ncy5oIgogI2luY2x1
ZGUgInRlc3QvZmFrZV9kZWNvZGVyLmgiCi0jaW5jbHVkZSAidGVzdC9mdW5jdGlvbl92aWRlb19k
ZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVz
dC9udWxsX3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgInRlc3QvcnRwX2ZpbGVfcmVhZGVyLmgiCkBA
IC03MiwzOSArNzIsMzkgQEAgbmFtZXNwYWNlIGZsYWdzIHsKIC8vIFRPRE8ocGJvcyk6IE11bHRp
cGxlIHJlY2VpdmVycy4KIAogLy8gRmxhZyBmb3IgcGF5bG9hZCB0eXBlLgotREVGSU5FX2ludCht
ZWRpYV9wYXlsb2FkX3R5cGUsCi0gICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprUGF5bG9hZFR5
cGVWUDgsCi0gICAgICAgICAgICJNZWRpYSBwYXlsb2FkIHR5cGUiKTsKK1dFQlJUQ19ERUZJTkVf
aW50KG1lZGlhX3BheWxvYWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0
OjprUGF5bG9hZFR5cGVWUDgsCisgICAgICAgICAgICAgICAgICAiTWVkaWEgcGF5bG9hZCB0eXBl
Iik7CiBzdGF0aWMgaW50IE1lZGlhUGF5bG9hZFR5cGUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KEZMQUdfbWVkaWFfcGF5bG9hZF90eXBlKTsKIH0KIAogLy8gRmxhZyBmb3IgUkVEIHBh
eWxvYWQgdHlwZS4KLURFRklORV9pbnQocmVkX3BheWxvYWRfdHlwZSwKLSAgICAgICAgICAgdGVz
dDo6Q2FsbFRlc3Q6OmtSZWRQYXlsb2FkVHlwZSwKLSAgICAgICAgICAgIlJFRCBwYXlsb2FkIHR5
cGUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KHJlZF9wYXlsb2FkX3R5cGUsCisgICAgICAgICAgICAg
ICAgICB0ZXN0OjpDYWxsVGVzdDo6a1JlZFBheWxvYWRUeXBlLAorICAgICAgICAgICAgICAgICAg
IlJFRCBwYXlsb2FkIHR5cGUiKTsKIHN0YXRpYyBpbnQgUmVkUGF5bG9hZFR5cGUoKSB7CiAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfcmVkX3BheWxvYWRfdHlwZSk7CiB9CiAKIC8vIEZs
YWcgZm9yIFVMUEZFQyBwYXlsb2FkIHR5cGUuCi1ERUZJTkVfaW50KHVscGZlY19wYXlsb2FkX3R5
cGUsCi0gICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprVWxwZmVjUGF5bG9hZFR5cGUsCi0gICAg
ICAgICAgICJVTFBGRUMgcGF5bG9hZCB0eXBlIik7CitXRUJSVENfREVGSU5FX2ludCh1bHBmZWNf
cGF5bG9hZF90eXBlLAorICAgICAgICAgICAgICAgICAgdGVzdDo6Q2FsbFRlc3Q6OmtVbHBmZWNQ
YXlsb2FkVHlwZSwKKyAgICAgICAgICAgICAgICAgICJVTFBGRUMgcGF5bG9hZCB0eXBlIik7CiBz
dGF0aWMgaW50IFVscGZlY1BheWxvYWRUeXBlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihGTEFHX3VscGZlY19wYXlsb2FkX3R5cGUpOwogfQogCi1ERUZJTkVfaW50KG1lZGlhX3BheWxv
YWRfdHlwZV9ydHgsCi0gICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprU2VuZFJ0eFBheWxvYWRU
eXBlLAotICAgICAgICAgICAiTWVkaWEgb3ZlciBSVFggcGF5bG9hZCB0eXBlIik7CitXRUJSVENf
REVGSU5FX2ludChtZWRpYV9wYXlsb2FkX3R5cGVfcnR4LAorICAgICAgICAgICAgICAgICAgdGVz
dDo6Q2FsbFRlc3Q6OmtTZW5kUnR4UGF5bG9hZFR5cGUsCisgICAgICAgICAgICAgICAgICAiTWVk
aWEgb3ZlciBSVFggcGF5bG9hZCB0eXBlIik7CiBzdGF0aWMgaW50IE1lZGlhUGF5bG9hZFR5cGVS
dHgoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbWVkaWFfcGF5bG9hZF90eXBl
X3J0eCk7CiB9CiAKLURFRklORV9pbnQocmVkX3BheWxvYWRfdHlwZV9ydHgsCi0gICAgICAgICAg
IHRlc3Q6OkNhbGxUZXN0OjprUnR4UmVkUGF5bG9hZFR5cGUsCi0gICAgICAgICAgICJSRUQgb3Zl
ciBSVFggcGF5bG9hZCB0eXBlIik7CitXRUJSVENfREVGSU5FX2ludChyZWRfcGF5bG9hZF90eXBl
X3J0eCwKKyAgICAgICAgICAgICAgICAgIHRlc3Q6OkNhbGxUZXN0OjprUnR4UmVkUGF5bG9hZFR5
cGUsCisgICAgICAgICAgICAgICAgICAiUkVEIG92ZXIgUlRYIHBheWxvYWQgdHlwZSIpOwogc3Rh
dGljIGludCBSZWRQYXlsb2FkVHlwZVJ0eCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
RkxBR19yZWRfcGF5bG9hZF90eXBlX3J0eCk7CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgY29uc3Qg
c3RkOjpzdHJpbmcmIERlZmF1bHRTc3JjKCkgewogICAgICAgc3RkOjp0b19zdHJpbmcodGVzdDo6
Q2FsbFRlc3Q6OmtWaWRlb1NlbmRTc3Jjc1swXSk7CiAgIHJldHVybiBzc3JjOwogfQotREVGSU5F
X3N0cmluZyhzc3JjLCBEZWZhdWx0U3NyYygpLmNfc3RyKCksICJJbmNvbWluZyBTU1JDIik7CitX
RUJSVENfREVGSU5FX3N0cmluZyhzc3JjLCBEZWZhdWx0U3NyYygpLmNfc3RyKCksICJJbmNvbWlu
ZyBTU1JDIik7CiBzdGF0aWMgdWludDMyX3QgU3NyYygpIHsKICAgcmV0dXJuIHJ0Yzo6U3RyaW5n
VG9OdW1iZXI8dWludDMyX3Q+KEZMQUdfc3NyYykudmFsdWUoKTsKIH0KQEAgLTEyNSw1NCArMTI1
LDU2IEBAIGNvbnN0IHN0ZDo6c3RyaW5nJiBEZWZhdWx0U3NyY1J0eCgpIHsKICAgICAgIHN0ZDo6
dG9fc3RyaW5nKHRlc3Q6OkNhbGxUZXN0OjprU2VuZFJ0eFNzcmNzWzBdKTsKICAgcmV0dXJuIHNz
cmNfcnR4OwogfQotREVGSU5FX3N0cmluZyhzc3JjX3J0eCwgRGVmYXVsdFNzcmNSdHgoKS5jX3N0
cigpLCAiSW5jb21pbmcgUlRYIFNTUkMiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHNzcmNfcnR4
LCBEZWZhdWx0U3NyY1J0eCgpLmNfc3RyKCksICJJbmNvbWluZyBSVFggU1NSQyIpOwogc3RhdGlj
IHVpbnQzMl90IFNzcmNSdHgoKSB7CiAgIHJldHVybiBydGM6OlN0cmluZ1RvTnVtYmVyPHVpbnQz
Ml90PihGTEFHX3NzcmNfcnR4KS52YWx1ZSgpOwogfQogCiAvLyBGbGFnIGZvciBhYnMtc2VuZC10
aW1lIGlkLgotREVGSU5FX2ludChhYnNfc2VuZF90aW1lX2lkLCAtMSwgIlJUUCBleHRlbnNpb24g
SUQgZm9yIGFicy1zZW5kLXRpbWUiKTsKK1dFQlJUQ19ERUZJTkVfaW50KGFic19zZW5kX3RpbWVf
aWQsIC0xLCAiUlRQIGV4dGVuc2lvbiBJRCBmb3IgYWJzLXNlbmQtdGltZSIpOwogc3RhdGljIGlu
dCBBYnNTZW5kVGltZUlkKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2Fic19z
ZW5kX3RpbWVfaWQpOwogfQogCiAvLyBGbGFnIGZvciB0cmFuc21pc3Npb24tb2Zmc2V0IGlkLgot
REVGSU5FX2ludCh0cmFuc21pc3Npb25fb2Zmc2V0X2lkLAotICAgICAgICAgICAtMSwKLSAgICAg
ICAgICAgIlJUUCBleHRlbnNpb24gSUQgZm9yIHRyYW5zbWlzc2lvbi1vZmZzZXQiKTsKK1dFQlJU
Q19ERUZJTkVfaW50KHRyYW5zbWlzc2lvbl9vZmZzZXRfaWQsCisgICAgICAgICAgICAgICAgICAt
MSwKKyAgICAgICAgICAgICAgICAgICJSVFAgZXh0ZW5zaW9uIElEIGZvciB0cmFuc21pc3Npb24t
b2Zmc2V0Iik7CiBzdGF0aWMgaW50IFRyYW5zbWlzc2lvbk9mZnNldElkKCkgewogICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihGTEFHX3RyYW5zbWlzc2lvbl9vZmZzZXRfaWQpOwogfQogCiAvLyBG
bGFnIGZvciBydHBkdW1wIGlucHV0IGZpbGUuCi1ERUZJTkVfc3RyaW5nKGlucHV0X2ZpbGUsICIi
LCAiaW5wdXQgZmlsZSIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoaW5wdXRfZmlsZSwgIiIsICJp
bnB1dCBmaWxlIik7CiBzdGF0aWMgc3RkOjpzdHJpbmcgSW5wdXRGaWxlKCkgewogICByZXR1cm4g
c3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfaW5wdXRfZmlsZSk7CiB9CiAKLURFRklORV9z
dHJpbmcoY29uZmlnX2ZpbGUsICIiLCAiY29uZmlnIGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3Ry
aW5nKGNvbmZpZ19maWxlLCAiIiwgImNvbmZpZyBmaWxlIik7CiBzdGF0aWMgc3RkOjpzdHJpbmcg
Q29uZmlnRmlsZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2Nv
bmZpZ19maWxlKTsKIH0KIAogLy8gRmxhZyBmb3IgcmF3IG91dHB1dCBmaWxlcy4KLURFRklORV9z
dHJpbmcob3V0X2Jhc2UsICIiLCAiQmFzZW5hbWUgKGV4Y2x1ZGluZyAuanBnKSBmb3IgcmF3IG91
dHB1dCIpOworV0VCUlRDX0RFRklORV9zdHJpbmcob3V0X2Jhc2UsICIiLCAiQmFzZW5hbWUgKGV4
Y2x1ZGluZyAuanBnKSBmb3IgcmF3IG91dHB1dCIpOwogc3RhdGljIHN0ZDo6c3RyaW5nIE91dEJh
c2UoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19vdXRfYmFzZSk7
CiB9CiAKLURFRklORV9zdHJpbmcoZGVjb2Rlcl9iaXRzdHJlYW1fZmlsZW5hbWUsICIiLCAiRGVj
b2RlciBiaXRzdHJlYW0gb3V0cHV0IGZpbGUiKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKGRlY29k
ZXJfYml0c3RyZWFtX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAg
ICAgICAgICAgICAgICAiRGVjb2RlciBiaXRzdHJlYW0gb3V0cHV0IGZpbGUiKTsKIHN0YXRpYyBz
dGQ6OnN0cmluZyBEZWNvZGVyQml0c3RyZWFtRmlsZW5hbWUoKSB7CiAgIHJldHVybiBzdGF0aWNf
Y2FzdDxzdGQ6OnN0cmluZz4oRkxBR19kZWNvZGVyX2JpdHN0cmVhbV9maWxlbmFtZSk7CiB9CiAK
IC8vIEZsYWcgZm9yIHZpZGVvIGNvZGVjLgotREVGSU5FX3N0cmluZyhjb2RlYywgIlZQOCIsICJW
aWRlbyBjb2RlYyIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoY29kZWMsICJWUDgiLCAiVmlkZW8g
Y29kZWMiKTsKIHN0YXRpYyBzdGQ6OnN0cmluZyBDb2RlYygpIHsKICAgcmV0dXJuIHN0YXRpY19j
YXN0PHN0ZDo6c3RyaW5nPihGTEFHX2NvZGVjKTsKIH0KIAotREVGSU5FX2Jvb2woaGVscCwgZmFs
c2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFs
c2UsICJQcmludCB0aGlzIG1lc3NhZ2UuIik7CiB9ICAvLyBuYW1lc3BhY2UgZmxhZ3MKIAogc3Rh
dGljIGNvbnN0IHVpbnQzMl90IGtSZWNlaXZlckxvY2FsU3NyYyA9IDB4MTIzNDU2OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcmVw
b3J0X2Jsb2NrX3N0YXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9yZXBvcnRfYmxvY2tfc3RhdHMuaAppbmRleCAyNDFmZWM3NmE2OTkyMzg0Mjk1
OWRjYWM4NjRlODYwYzBjNDczNzVhLi45MGJhZGY3MDg2MmZjMWFiNzBkNmE0YjEyOTY3NTQ5ODhj
NDUxNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9yZXBvcnRfYmxvY2tfc3RhdHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9yZXBvcnRfYmxvY2tfc3RhdHMuaApAQCAtMTQs
NyArMTQsNyBAQAogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRl
ICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQorI2luY2x1ZGUgIm1v
ZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9ydGNwX3N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJtb2R1
bGVzL3J0cF9ydGNwL2luY2x1ZGUvcnRwX3J0Y3BfZGVmaW5lcy5oIgogCiBuYW1lc3BhY2Ugd2Vi
cnRjIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVy
LmNjCmluZGV4IDY0ZWM1NDRiNzBhNmYxYjMyODg4NDBiYWM0MDA2NTA2Y2Y5MDNjNDAuLmZkZjAy
ZmYzMjlkNzQxZmFmMjg5MDg0ZTM4YWQ4YWE3ZTczOGI0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1f
cmVjZWl2ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvdmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlci5jYwpAQCAtMTYsNyArMTYsNiBAQAog
CiAjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAKLSNpbmNsdWRlICJjb21tb25fdHlw
ZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVk
aWFjb25zdGFudHMuaCIKICNpbmNsdWRlICJtb2R1bGVzL3BhY2luZy9wYWNrZXRfcm91dGVyLmgi
CiAjaW5jbHVkZSAibW9kdWxlcy9yZW1vdGVfYml0cmF0ZV9lc3RpbWF0b3IvaW5jbHVkZS9yZW1v
dGVfYml0cmF0ZV9lc3RpbWF0b3IuaCIKQEAgLTUwLDcgKzQ5LDcgQEAgbmFtZXNwYWNlIHsKIC8v
IFRPRE8ocGhpbGlwZWwpOiBDaGFuZ2Uga1BhY2tldEJ1ZmZlclN0YXJ0U2l6ZSBiYWNrIHRvIDMy
IGluIE02MyBzZWU6CiAvLyAgICAgICAgICAgICAgICAgY3JidWcuY29tLzc1Mjg4NgogY29uc3Rl
eHByIGludCBrUGFja2V0QnVmZmVyU3RhcnRTaXplID0gNTEyOwotY29uc3RleHByIGludCBrUGFj
a2V0QnVmZmVyTWF4U2l4ZSA9IDIwNDg7Citjb25zdGV4cHIgaW50IGtQYWNrZXRCdWZmZXJNYXhT
aXplID0gMjA0ODsKIH0gIC8vIG5hbWVzcGFjZQogCiBzdGQ6OnVuaXF1ZV9wdHI8UnRwUnRjcD4g
Q3JlYXRlUnRwUnRjcE1vZHVsZSgKQEAgLTk1LDcgKzk0LDggQEAgUnRwVmlkZW9TdHJlYW1SZWNl
aXZlcjo6UnRwVmlkZW9TdHJlYW1SZWNlaXZlcigKICAgICBQcm9jZXNzVGhyZWFkKiBwcm9jZXNz
X3RocmVhZCwKICAgICBOYWNrU2VuZGVyKiBuYWNrX3NlbmRlciwKICAgICBLZXlGcmFtZVJlcXVl
c3RTZW5kZXIqIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVyLAotICAgIHZpZGVvX2NvZGluZzo6T25D
b21wbGV0ZUZyYW1lQ2FsbGJhY2sqIGNvbXBsZXRlX2ZyYW1lX2NhbGxiYWNrKQorICAgIHZpZGVv
X2NvZGluZzo6T25Db21wbGV0ZUZyYW1lQ2FsbGJhY2sqIGNvbXBsZXRlX2ZyYW1lX2NhbGxiYWNr
LAorICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVf
ZGVjcnlwdG9yKQogICAgIDogY2xvY2tfKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAg
ICAgY29uZmlnXygqY29uZmlnKSwKICAgICAgIHBhY2tldF9yb3V0ZXJfKHBhY2tldF9yb3V0ZXIp
LApAQCAtMTEzLDExICsxMTMsMTAgQEAgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6UnRwVmlkZW9T
dHJlYW1SZWNlaXZlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tl
dF9yb3V0ZXIpKSwKICAgICAgIGNvbXBsZXRlX2ZyYW1lX2NhbGxiYWNrXyhjb21wbGV0ZV9mcmFt
ZV9jYWxsYmFjayksCiAgICAgICBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcl8oa2V5ZnJhbWVfcmVx
dWVzdF9zZW5kZXIpLAotICAgICAgaGFzX3JlY2VpdmVkX2ZyYW1lXyhmYWxzZSkgeworICAgICAg
aGFzX3JlY2VpdmVkX2ZyYW1lXyhmYWxzZSksCisgICAgICBmcmFtZV9kZWNyeXB0b3JfKGZyYW1l
X2RlY3J5cHRvcikgewogICBjb25zdGV4cHIgYm9vbCByZW1iX2NhbmRpZGF0ZSA9IHRydWU7CiAg
IHBhY2tldF9yb3V0ZXJfLT5BZGRSZWNlaXZlUnRwTW9kdWxlKHJ0cF9ydGNwXy5nZXQoKSwgcmVt
Yl9jYW5kaWRhdGUpOwotICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXy0+UmVnaXN0ZXJSdHBTdGF0
aXN0aWNzQ2FsbGJhY2socmVjZWl2ZV9zdGF0c19wcm94eSk7Ci0gIHJ0cF9yZWNlaXZlX3N0YXRp
c3RpY3NfLT5SZWdpc3RlclJ0Y3BTdGF0aXN0aWNzQ2FsbGJhY2socmVjZWl2ZV9zdGF0c19wcm94
eSk7CiAKICAgUlRDX0RDSEVDSyhjb25maWdfLnJ0cC5ydGNwX21vZGUgIT0gUnRjcE1vZGU6OmtP
ZmYpCiAgICAgICA8PCAiQSBzdHJlYW0gc2hvdWxkIG5vdCBiZSBjb25maWd1cmVkIHdpdGggUlRD
UCBkaXNhYmxlZC4gVGhpcyB2YWx1ZSBpcyAiCkBAIC0xNDcsMTQgKzE0NiwyOSBAQCBSdHBWaWRl
b1N0cmVhbVJlY2VpdmVyOjpSdHBWaWRlb1N0cmVhbVJlY2VpdmVyKAogICBwcm9jZXNzX3RocmVh
ZF8tPlJlZ2lzdGVyTW9kdWxlKHJ0cF9ydGNwXy5nZXQoKSwgUlRDX0ZST01fSEVSRSk7CiAKICAg
aWYgKGNvbmZpZ18ucnRwLm5hY2sucnRwX2hpc3RvcnlfbXMgIT0gMCkgewotICAgIG5hY2tfbW9k
dWxlXy5yZXNldCgKLSAgICAgICAgbmV3IE5hY2tNb2R1bGUoY2xvY2tfLCBuYWNrX3NlbmRlciwg
a2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIpKTsKKyAgICBuYWNrX21vZHVsZV8gPSBhYnNsOjptYWtl
X3VuaXF1ZTxOYWNrTW9kdWxlPihjbG9ja18sIG5hY2tfc2VuZGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZyYW1lX3JlcXVlc3Rfc2VuZGVy
KTsKICAgICBwcm9jZXNzX3RocmVhZF8tPlJlZ2lzdGVyTW9kdWxlKG5hY2tfbW9kdWxlXy5nZXQo
KSwgUlRDX0ZST01fSEVSRSk7CiAgIH0KIAorICAvLyBUaGUgZ3JvdXAgaGVyZSBtdXN0IGJlIGEg
cG9zaXRpdmUgcG93ZXIgb2YgMiwgaW4gd2hpY2ggY2FzZSB0aGF0IGlzIHVzZWQgYXMKKyAgLy8g
c2l6ZS4gQWxsIG90aGVyIHZhbHVlcyBzaGFsbCByZXN1bHQgaW4gdGhlIGRlZmF1bHQgdmFsdWUg
YmVpbmcgdXNlZC4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZ3JvdXBfbmFtZSA9CisgICAgICB3ZWJy
dGM6OmZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUoIldlYlJUQy1QYWNrZXRCdWZmZXJNYXhTaXpl
Iik7CisgIGludCBwYWNrZXRfYnVmZmVyX21heF9zaXplID0ga1BhY2tldEJ1ZmZlck1heFNpemU7
CisgIGlmICghZ3JvdXBfbmFtZS5lbXB0eSgpICYmCisgICAgICAoc3NjYW5mKGdyb3VwX25hbWUu
Y19zdHIoKSwgIiVkIiwgJnBhY2tldF9idWZmZXJfbWF4X3NpemUpICE9IDEgfHwKKyAgICAgICBw
YWNrZXRfYnVmZmVyX21heF9zaXplIDw9IDAgfHwKKyAgICAgICAvLyBWZXJpZnkgdGhhdCB0aGUg
bnVtYmVyIGlzIGEgcG9zaXRpdmUgcG93ZXIgb2YgMi4KKyAgICAgICAocGFja2V0X2J1ZmZlcl9t
YXhfc2l6ZSAmIChwYWNrZXRfYnVmZmVyX21heF9zaXplIC0gMSkpICE9IDApKSB7CisgICAgUlRD
X0xPRyhMU19XQVJOSU5HKSA8PCAiSW52YWxpZCBwYWNrZXQgYnVmZmVyIG1heCBzaXplOiAiIDw8
IGdyb3VwX25hbWU7CisgICAgcGFja2V0X2J1ZmZlcl9tYXhfc2l6ZSA9IGtQYWNrZXRCdWZmZXJN
YXhTaXplOworICB9CisKICAgcGFja2V0X2J1ZmZlcl8gPSB2aWRlb19jb2Rpbmc6OlBhY2tldEJ1
ZmZlcjo6Q3JlYXRlKAotICAgICAgY2xvY2tfLCBrUGFja2V0QnVmZmVyU3RhcnRTaXplLCBrUGFj
a2V0QnVmZmVyTWF4U2l4ZSwgdGhpcyk7Ci0gIHJlZmVyZW5jZV9maW5kZXJfLnJlc2V0KG5ldyB2
aWRlb19jb2Rpbmc6OlJ0cEZyYW1lUmVmZXJlbmNlRmluZGVyKHRoaXMpKTsKKyAgICAgIGNsb2Nr
Xywga1BhY2tldEJ1ZmZlclN0YXJ0U2l6ZSwgcGFja2V0X2J1ZmZlcl9tYXhfc2l6ZSwgdGhpcyk7
CisgIHJlZmVyZW5jZV9maW5kZXJfID0KKyAgICAgIGFic2w6Om1ha2VfdW5pcXVlPHZpZGVvX2Nv
ZGluZzo6UnRwRnJhbWVSZWZlcmVuY2VGaW5kZXI+KHRoaXMpOwogfQogCiBSdHBWaWRlb1N0cmVh
bVJlY2VpdmVyOjp+UnRwVmlkZW9TdHJlYW1SZWNlaXZlcigpIHsKQEAgLTIwMiwxNCArMjE2LDE1
IEBAIGludDMyX3QgUnRwVmlkZW9TdHJlYW1SZWNlaXZlcjo6T25SZWNlaXZlZFBheWxvYWREYXRh
KAogICAgIHNpemVfdCBwYXlsb2FkX3NpemUsCiAgICAgY29uc3QgV2ViUnRjUlRQSGVhZGVyKiBy
dHBfaGVhZGVyKSB7CiAgIHJldHVybiBPblJlY2VpdmVkUGF5bG9hZERhdGEocGF5bG9hZF9kYXRh
LCBwYXlsb2FkX3NpemUsIHJ0cF9oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWJzbDo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzbDo6
bnVsbG9wdCwgZmFsc2UpOwogfQogCiBpbnQzMl90IFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6Ok9u
UmVjZWl2ZWRQYXlsb2FkRGF0YSgKICAgICBjb25zdCB1aW50OF90KiBwYXlsb2FkX2RhdGEsCiAg
ICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwKICAgICBjb25zdCBXZWJSdGNSVFBIZWFkZXIqIHJ0cF9o
ZWFkZXIsCi0gICAgY29uc3QgYWJzbDo6b3B0aW9uYWw8UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRv
cj4mIGdlbmVyaWNfZGVzY3JpcHRvcikgeworICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFJ0cEdl
bmVyaWNGcmFtZURlc2NyaXB0b3I+JiBnZW5lcmljX2Rlc2NyaXB0b3IsCisgICAgYm9vbCBpc19y
ZWNvdmVyZWQpIHsKICAgV2ViUnRjUlRQSGVhZGVyIHJ0cF9oZWFkZXJfd2l0aF9udHAgPSAqcnRw
X2hlYWRlcjsKICAgcnRwX2hlYWRlcl93aXRoX250cC5udHBfdGltZV9tcyA9CiAgICAgICBudHBf
ZXN0aW1hdG9yXy5Fc3RpbWF0ZShydHBfaGVhZGVyLT5oZWFkZXIudGltZXN0YW1wKTsKQEAgLTIy
MSw3ICsyMzYsOCBAQCBpbnQzMl90IFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6Ok9uUmVjZWl2ZWRQ
YXlsb2FkRGF0YSgKICAgICAgICAgcnRwX2hlYWRlci0+ZnJhbWVUeXBlID09IGtWaWRlb0ZyYW1l
S2V5OwogCiAgICAgcGFja2V0LnRpbWVzTmFja2VkID0gbmFja19tb2R1bGVfLT5PblJlY2VpdmVk
UGFja2V0KAotICAgICAgICBydHBfaGVhZGVyLT5oZWFkZXIuc2VxdWVuY2VOdW1iZXIsIGlzX2tl
eWZyYW1lKTsKKyAgICAgICAgcnRwX2hlYWRlci0+aGVhZGVyLnNlcXVlbmNlTnVtYmVyLCBpc19r
ZXlmcmFtZSwgaXNfcmVjb3ZlcmVkKTsKKwogICB9IGVsc2UgewogICAgIHBhY2tldC50aW1lc05h
Y2tlZCA9IC0xOwogICB9CkBAIC0zMDIsNyArMzE4LDggQEAgdm9pZCBSdHBWaWRlb1N0cmVhbVJl
Y2VpdmVyOjpPblJ0cFBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAg
ICAgICBsYXN0X3JlY2VpdmVkX3J0cF9zeXN0ZW1fdGltZV9tc18gPSBub3dfbXM7CiAKICAgICAg
IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBjc3JjcyA9IHBhY2tldC5Dc3JjcygpOwotICAgICAgY29u
dHJpYnV0aW5nX3NvdXJjZXNfLlVwZGF0ZShub3dfbXMsIGNzcmNzKTsKKyAgICAgIGNvbnRyaWJ1
dGluZ19zb3VyY2VzXy5VcGRhdGUobm93X21zLCBjc3JjcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogYXVkaW8gbGV2ZWwgKi9hYnNsOjpudWxsb3B0KTsKICAgICB9CiAg
ICAgLy8gUGVyaW9kaWNhbGx5IGxvZyB0aGUgUlRQIGhlYWRlciBvZiBpbmNvbWluZyBwYWNrZXRz
LgogICAgIGlmIChub3dfbXMgLSBsYXN0X3BhY2tldF9sb2dfbXNfID4ga1BhY2tldExvZ0ludGVy
dmFsTXMpIHsKQEAgLTM2MywxMCArMzgwLDYxIEBAIGludDMyX3QgUnRwVmlkZW9TdHJlYW1SZWNl
aXZlcjo6UmVzZW5kUGFja2V0cyhjb25zdCB1aW50MTZfdCogc2VxdWVuY2VfbnVtYmVycywKIAog
dm9pZCBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyOjpPblJlY2VpdmVkRnJhbWUoCiAgICAgc3RkOjp1
bmlxdWVfcHRyPHZpZGVvX2NvZGluZzo6UnRwRnJhbWVPYmplY3Q+IGZyYW1lKSB7CisgIC8vIFJl
cXVlc3QgYSBrZXkgZnJhbWUgYXMgc29vbiBhcyBwb3NzaWJsZS4KKyAgYm9vbCBrZXlfZnJhbWVf
cmVxdWVzdGVkID0gZmFsc2U7CiAgIGlmICghaGFzX3JlY2VpdmVkX2ZyYW1lXykgewogICAgIGhh
c19yZWNlaXZlZF9mcmFtZV8gPSB0cnVlOwotICAgIGlmIChmcmFtZS0+RnJhbWVUeXBlKCkgIT0g
a1ZpZGVvRnJhbWVLZXkpCisgICAgaWYgKGZyYW1lLT5GcmFtZVR5cGUoKSAhPSBrVmlkZW9GcmFt
ZUtleSkgeworICAgICAga2V5X2ZyYW1lX3JlcXVlc3RlZCA9IHRydWU7CiAgICAgICBrZXlmcmFt
ZV9yZXF1ZXN0X3NlbmRlcl8tPlJlcXVlc3RLZXlGcmFtZSgpOworICAgIH0KKyAgfQorCisgIC8v
IE9wdGlvbmFsbHkgYXR0ZW1wdCB0byBkZWNyeXB0IHRoZSByYXcgdmlkZW8gZnJhbWUgaWYgaXQg
d2FzIHByb3ZpZGVkLgorICBpZiAoZnJhbWVfZGVjcnlwdG9yXyAhPSBudWxscHRyKSB7CisgICAg
Ly8gV2hlbiB1c2luZyBlbmNyeXB0aW9uIHdlIGV4cGVjdCB0aGUgZnJhbWUgdG8gaGF2ZSB0aGUg
Z2VuZXJpYyBkZXNjcmlwdG9yLgorICAgIGFic2w6Om9wdGlvbmFsPFJ0cEdlbmVyaWNGcmFtZURl
c2NyaXB0b3I+IGRlc2NyaXB0b3IgPQorICAgICAgICBmcmFtZS0+R2V0R2VuZXJpY0ZyYW1lRGVz
Y3JpcHRvcigpOworICAgIGlmICghZGVzY3JpcHRvcikgeworICAgICAgUlRDX0xPRyhMU19FUlJP
UikgPDwgIk5vIGdlbmVyaWMgZnJhbWUgZGVzY3JpcHRvciBmb3VuZCBkcm9wcGluZyBmcmFtZS4i
OworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJldHJpZXZlIHRoZSBiaXRzdHJlYW0g
b2YgdGhlIGVuY3J5cHRlZCB2aWRlbyBmcmFtZS4KKyAgICBydGM6OkFycmF5Vmlldzxjb25zdCB1
aW50OF90PiBlbmNyeXB0ZWRfZnJhbWVfYml0c3RyZWFtKGZyYW1lLT5CdWZmZXIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lLT5zaXplKCkpOworICAgIC8vIFJldHJpZXZlIHRoZSBtYXhpbXVtIHBvc3NpYmxlIHNpemUg
b2YgdGhlIGRlY3J5cHRlZCBwYXlsb2FkLgorICAgIGNvbnN0IHNpemVfdCBtYXhfcGxhaW50ZXh0
X2J5dGVfc2l6ZSA9CisgICAgICAgIGZyYW1lX2RlY3J5cHRvcl8tPkdldE1heFBsYWludGV4dEJ5
dGVTaXplKGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5zaXplKCkpOworICAgIFJUQ19DSEVD
SyhtYXhfcGxhaW50ZXh0X2J5dGVfc2l6ZSA8PSBmcmFtZS0+c2l6ZSgpKTsKKyAgICAvLyBQbGFj
ZSB0aGUgZGVjcnlwdGVkIGZyYW1lIGlubGluZSBpbnRvIHRoZSBleGlzdGluZyBmcmFtZS4KKyAg
ICBydGM6OkFycmF5Vmlldzx1aW50OF90PiBpbmxpbmVfZGVjcnlwdGVkX2JpdHN0cmVhbShmcmFt
ZS0+TXV0YWJsZUJ1ZmZlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1heF9wbGFpbnRleHRfYnl0ZV9zaXplKTsKKworICAgIC8vIEF0
dGVtcHQgdG8gZGVjcnlwdCB0aGUgdmlkZW8gZnJhbWUuCisgICAgc2l6ZV90IGJ5dGVzX3dyaXR0
ZW4gPSAwOworICAgIGlmIChmcmFtZV9kZWNyeXB0b3JfLT5EZWNyeXB0KAorICAgICAgICAgICAg
Y3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywgLypjc3Jjcz0qL3t9LAorICAgICAgICAgICAgLyph
ZGRpdGlvbmFsX2RhdGE9Ki9udWxscHRyLCBlbmNyeXB0ZWRfZnJhbWVfYml0c3RyZWFtLAorICAg
ICAgICAgICAgaW5saW5lX2RlY3J5cHRlZF9iaXRzdHJlYW0sICZieXRlc193cml0dGVuKSAhPSAw
KSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFoYXNfcmVjZWl2ZWRfZGVjcnlw
dGVkX2ZyYW1lXyAmJiAha2V5X2ZyYW1lX3JlcXVlc3RlZCkgeworICAgICAgaGFzX3JlY2VpdmVk
X2RlY3J5cHRlZF9mcmFtZV8gPSB0cnVlOworICAgICAgaWYgKGZyYW1lLT5GcmFtZVR5cGUoKSAh
PSBrVmlkZW9GcmFtZUtleSkgeworICAgICAgICBrZXlmcmFtZV9yZXF1ZXN0X3NlbmRlcl8tPlJl
cXVlc3RLZXlGcmFtZSgpOworICAgICAgfQorICAgIH0KKworICAgIFJUQ19DSEVDSyhieXRlc193
cml0dGVuIDw9IG1heF9wbGFpbnRleHRfYnl0ZV9zaXplKTsKKyAgICAvLyBVcGRhdGUgdGhlIGZy
YW1lIHRvIGNvbnRhaW4ganVzdCB0aGUgd3JpdHRlbiBieXRlcy4KKyAgICBmcmFtZS0+U2V0TGVu
Z3RoKGJ5dGVzX3dyaXR0ZW4pOworICB9IGVsc2UgaWYgKGNvbmZpZ18uY3J5cHRvX29wdGlvbnMu
c2ZyYW1lLnJlcXVpcmVfZnJhbWVfZW5jcnlwdGlvbikgeworICAgIFJUQ19MT0coTFNfV0FSTklO
RykgPDwgIkZyYW1lIGRlY3J5cHRpb24gcmVxdWlyZWQgYnV0IG5vdCBhdHRhY2hlZCB0byB0aGlz
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJlYW0uIERyb3BwaW5nICBmcmFtZS4i
OworICAgIHJldHVybjsKICAgfQogCiAgIHJlZmVyZW5jZV9maW5kZXJfLT5NYW5hZ2VGcmFtZShz
dGQ6Om1vdmUoZnJhbWUpKTsKQEAgLTQ1OSw4ICs1MjcsNiBAQCB2b2lkIFJ0cFZpZGVvU3RyZWFt
UmVjZWl2ZXI6OlJlY2VpdmVQYWNrZXQoY29uc3QgUnRwUGFja2V0UmVjZWl2ZWQmIHBhY2tldCkg
ewogICB3ZWJydGNfcnRwX2hlYWRlci52aWRlb19oZWFkZXIoKS5jb250ZW50X3R5cGUgPSBWaWRl
b0NvbnRlbnRUeXBlOjpVTlNQRUNJRklFRDsKICAgd2VicnRjX3J0cF9oZWFkZXIudmlkZW9faGVh
ZGVyKCkudmlkZW9fdGltaW5nLmZsYWdzID0KICAgICAgIFZpZGVvU2VuZFRpbWluZzo6a0ludmFs
aWQ7Ci0gIHdlYnJ0Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLnBsYXlvdXRfZGVsYXkubWlu
X21zID0gLTE7Ci0gIHdlYnJ0Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLnBsYXlvdXRfZGVs
YXkubWF4X21zID0gLTE7CiAgIHdlYnJ0Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLmlzX2xh
c3RfcGFja2V0X2luX2ZyYW1lID0KICAgICAgIHdlYnJ0Y19ydHBfaGVhZGVyLmhlYWRlci5tYXJr
ZXJCaXQ7CiAKQEAgLTQ4NiwxMiArNTUyLDIzIEBAIHZvaWQgUnRwVmlkZW9TdHJlYW1SZWNlaXZl
cjo6UmVjZWl2ZVBhY2tldChjb25zdCBSdHBQYWNrZXRSZWNlaXZlZCYgcGFja2V0KSB7CiAgICAg
ICAgIHdlYnJ0Y19ydHBfaGVhZGVyLmhlYWRlci5tYXJrZXJCaXQgfHwKICAgICAgICAgKGdlbmVy
aWNfZGVzY3JpcHRvcl93aXJlLT5MYXN0U3ViRnJhbWVJbkZyYW1lKCkgJiYKICAgICAgICAgIGdl
bmVyaWNfZGVzY3JpcHRvcl93aXJlLT5MYXN0UGFja2V0SW5TdWJGcmFtZSgpKTsKKworICAgIGlm
IChnZW5lcmljX2Rlc2NyaXB0b3Jfd2lyZS0+Rmlyc3RQYWNrZXRJblN1YkZyYW1lKCkpIHsKKyAg
ICAgIHdlYnJ0Y19ydHBfaGVhZGVyLmZyYW1lVHlwZSA9CisgICAgICAgICAgZ2VuZXJpY19kZXNj
cmlwdG9yX3dpcmUtPkZyYW1lRGVwZW5kZW5jaWVzRGlmZnMoKS5lbXB0eSgpCisgICAgICAgICAg
ICAgID8ga1ZpZGVvRnJhbWVLZXkKKyAgICAgICAgICAgICAgOiBrVmlkZW9GcmFtZURlbHRhOwor
ICAgIH0KKworICAgIHdlYnJ0Y19ydHBfaGVhZGVyLnZpZGVvX2hlYWRlcigpLndpZHRoID0gZ2Vu
ZXJpY19kZXNjcmlwdG9yX3dpcmUtPldpZHRoKCk7CisgICAgd2VicnRjX3J0cF9oZWFkZXIudmlk
ZW9faGVhZGVyKCkuaGVpZ2h0ID0gZ2VuZXJpY19kZXNjcmlwdG9yX3dpcmUtPkhlaWdodCgpOwog
ICB9IGVsc2UgewogICAgIGdlbmVyaWNfZGVzY3JpcHRvcl93aXJlLnJlc2V0KCk7CiAgIH0KIAog
ICBPblJlY2VpdmVkUGF5bG9hZERhdGEocGFyc2VkX3BheWxvYWQucGF5bG9hZCwgcGFyc2VkX3Bh
eWxvYWQucGF5bG9hZF9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAmd2VicnRjX3J0
cF9oZWFkZXIsIGdlbmVyaWNfZGVzY3JpcHRvcl93aXJlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICZ3ZWJydGNfcnRwX2hlYWRlciwgZ2VuZXJpY19kZXNjcmlwdG9yX3dpcmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICBwYWNrZXQucmVjb3ZlcmVkKCkpOwogfQogCiB2b2lkIFJ0cFZpZGVv
U3RyZWFtUmVjZWl2ZXI6OlBhcnNlQW5kSGFuZGxlRW5jYXBzdWxhdGluZ0hlYWRlcigKQEAgLTUy
Myw3ICs2MDAsOCBAQCB2b2lkIFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXI6Ok5vdGlmeVJlY2VpdmVy
T2ZFbXB0eVBhY2tldCh1aW50MTZfdCBzZXFfbnVtKSB7CiAgIHJlZmVyZW5jZV9maW5kZXJfLT5Q
YWRkaW5nUmVjZWl2ZWQoc2VxX251bSk7CiAgIHBhY2tldF9idWZmZXJfLT5QYWRkaW5nUmVjZWl2
ZWQoc2VxX251bSk7CiAgIGlmIChuYWNrX21vZHVsZV8pIHsKLSAgICBuYWNrX21vZHVsZV8tPk9u
UmVjZWl2ZWRQYWNrZXQoc2VxX251bSwgLyogaXNfa2V5ZnJhbWUgPSAqLyBmYWxzZSk7CisgICAg
bmFja19tb2R1bGVfLT5PblJlY2VpdmVkUGFja2V0KHNlcV9udW0sIC8qIGlzX2tleWZyYW1lID0g
Ki8gZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlzIF9yZWNv
dmVyZWQgPSAqLyBmYWxzZSk7CiAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcnRw
X3ZpZGVvX3N0cmVhbV9yZWNlaXZlci5oCmluZGV4IGNhNWQ3YTBhYmQ5NDI1ODE0N2IxZjZiOWIy
YWFiYzU5YWRhNTUzYjAuLmEyMDA2ZDFiYjJhMDg3MjQ2YTY4MGI2ZWVkMDU3ZTJkMjRhZjBiNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL3J0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyLmgK
QEAgLTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKIAor
I2luY2x1ZGUgImFwaS9jcnlwdG8vZnJhbWVkZWNyeXB0b3JpbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2NvZGVjLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBfcGFj
a2V0X3NpbmtfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9zeW5jYWJsZS5oIgpAQCAtNjcs
NyArNjgsOCBAQCBjbGFzcyBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyIDogcHVibGljIFJlY292ZXJl
ZFBhY2tldFJlY2VpdmVyLAogICAgICAgUHJvY2Vzc1RocmVhZCogcHJvY2Vzc190aHJlYWQsCiAg
ICAgICBOYWNrU2VuZGVyKiBuYWNrX3NlbmRlciwKICAgICAgIEtleUZyYW1lUmVxdWVzdFNlbmRl
cioga2V5ZnJhbWVfcmVxdWVzdF9zZW5kZXIsCi0gICAgICB2aWRlb19jb2Rpbmc6Ok9uQ29tcGxl
dGVGcmFtZUNhbGxiYWNrKiBjb21wbGV0ZV9mcmFtZV9jYWxsYmFjayk7CisgICAgICB2aWRlb19j
b2Rpbmc6Ok9uQ29tcGxldGVGcmFtZUNhbGxiYWNrKiBjb21wbGV0ZV9mcmFtZV9jYWxsYmFjaywK
KyAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRvckludGVyZmFjZT4gZnJhbWVf
ZGVjcnlwdG9yKTsKICAgflJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXIoKSBvdmVycmlkZTsKIAogICB2
b2lkIEFkZFJlY2VpdmVDb2RlYyhjb25zdCBWaWRlb0NvZGVjJiB2aWRlb19jb2RlYywKQEAgLTEw
Miw3ICsxMDQsOCBAQCBjbGFzcyBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyIDogcHVibGljIFJlY292
ZXJlZFBhY2tldFJlY2VpdmVyLAogICAgICAgY29uc3QgdWludDhfdCogcGF5bG9hZF9kYXRhLAog
ICAgICAgc2l6ZV90IHBheWxvYWRfc2l6ZSwKICAgICAgIGNvbnN0IFdlYlJ0Y1JUUEhlYWRlciog
cnRwX2hlYWRlciwKLSAgICAgIGNvbnN0IGFic2w6Om9wdGlvbmFsPFJ0cEdlbmVyaWNGcmFtZURl
c2NyaXB0b3I+JiBnZW5lcmljX2Rlc2NyaXB0b3IpOworICAgICAgY29uc3QgYWJzbDo6b3B0aW9u
YWw8UnRwR2VuZXJpY0ZyYW1lRGVzY3JpcHRvcj4mIGdlbmVyaWNfZGVzY3JpcHRvciwKKyAgICAg
IGJvb2wgaXNfcmVjb3ZlcmVkKTsKIAogICAvLyBJbXBsZW1lbnRzIFJlY292ZXJlZFBhY2tldFJl
Y2VpdmVyLgogICB2b2lkIE9uUmVjb3ZlcmVkUGFja2V0KGNvbnN0IHVpbnQ4X3QqIHBhY2tldCwg
c2l6ZV90IHBhY2tldF9sZW5ndGgpIG92ZXJyaWRlOwpAQCAtMjAzLDYgKzIwNiwxMSBAQCBjbGFz
cyBSdHBWaWRlb1N0cmVhbVJlY2VpdmVyIDogcHVibGljIFJlY292ZXJlZFBhY2tldFJlY2VpdmVy
LAogICAgICAgUlRDX0dVQVJERURfQlkocnRwX3NvdXJjZXNfbG9ja18pOwogICBhYnNsOjpvcHRp
b25hbDxpbnQ2NF90PiBsYXN0X3JlY2VpdmVkX3J0cF9zeXN0ZW1fdGltZV9tc18KICAgICAgIFJU
Q19HVUFSREVEX0JZKHJ0cF9zb3VyY2VzX2xvY2tfKTsKKworICAvLyBFMkVFIFZpZGVvIEZyYW1l
IERlY3J5cHRvciAoT3B0aW9uYWwpCisgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxGcmFtZURlY3J5cHRv
ckludGVyZmFjZT4gZnJhbWVfZGVjcnlwdG9yXzsKKyAgLy8gU2V0IHRvIHRydWUgb24gdGhlIGZp
cnN0IHN1Y2Nlc3NzZnVsbHkgZGVjcnlwdGVkIGZyYW1lLgorICBib29sIGhhc19yZWNlaXZlZF9k
ZWNyeXB0ZWRfZnJhbWVfID0gZmFsc2U7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9ydHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZl
cl91bml0dGVzdC5jYwppbmRleCBlYzJiZjMzNGU5YjZkMGU3OTg0ZmU4YzY2NTEwMDc0OWE0MTY5
NjUzLi4xMGM1ZTdlZWJjZTJhZjFmY2IwY2NjOWM5ZjRlMjZmYWUzNWNlNzZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9ydHBfdmlk
ZW9fc3RyZWFtX3JlY2VpdmVyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3J0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXJfdW5p
dHRlc3QuY2MKQEAgLTEzMyw3ICsxMzMsNyBAQCBjbGFzcyBSdHBWaWRlb1N0cmVhbVJlY2VpdmVy
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgJm1vY2tfdHJhbnNwb3J0Xywg
bnVsbHB0ciwgJnBhY2tldF9yb3V0ZXJfLCAmY29uZmlnXywKICAgICAgICAgcnRwX3JlY2VpdmVf
c3RhdGlzdGljc18uZ2V0KCksIG51bGxwdHIsIHByb2Nlc3NfdGhyZWFkXy5nZXQoKSwKICAgICAg
ICAgJm1vY2tfbmFja19zZW5kZXJfLCAmbW9ja19rZXlfZnJhbWVfcmVxdWVzdF9zZW5kZXJfLAot
ICAgICAgICAmbW9ja19vbl9jb21wbGV0ZV9mcmFtZV9jYWxsYmFja18pOworICAgICAgICAmbW9j
a19vbl9jb21wbGV0ZV9mcmFtZV9jYWxsYmFja18sIG51bGxwdHIpOwogICB9CiAKICAgV2ViUnRj
UlRQSGVhZGVyIEdldERlZmF1bHRQYWNrZXQoKSB7CkBAIC01NjgsMTAgKzU2OCw4IEBAIFRFU1Rf
RihSdHBWaWRlb1N0cmVhbVJlY2VpdmVyVGVzdCwgUGFyc2VHZW5lcmljRGVzY3JpcHRvclR3b1Bh
Y2tldHMpIHsKICAgZmlyc3RfcGFja2V0X2Rlc2NyaXB0b3IuU2V0Rmlyc3RTdWJGcmFtZUluRnJh
bWUodHJ1ZSk7CiAgIGZpcnN0X3BhY2tldF9kZXNjcmlwdG9yLlNldExhc3RTdWJGcmFtZUluRnJh
bWUodHJ1ZSk7CiAgIGZpcnN0X3BhY2tldF9kZXNjcmlwdG9yLlNldEZyYW1lSWQoMTAwKTsKLSAg
Zmlyc3RfcGFja2V0X2Rlc2NyaXB0b3IuU2V0VGVtcG9yYWxMYXllcigxKTsKICAgZmlyc3RfcGFj
a2V0X2Rlc2NyaXB0b3IuU2V0U3BhdGlhbExheWVyc0JpdG1hc2soMSA8PCBrU3BhdGlhbEluZGV4
KTsKLSAgZmlyc3RfcGFja2V0X2Rlc2NyaXB0b3IuQWRkRnJhbWVEZXBlbmRlbmN5RGlmZig5MCk7
Ci0gIGZpcnN0X3BhY2tldF9kZXNjcmlwdG9yLkFkZEZyYW1lRGVwZW5kZW5jeURpZmYoODApOwor
ICBmaXJzdF9wYWNrZXRfZGVzY3JpcHRvci5TZXRSZXNvbHV0aW9uKDQ4MCwgMzYwKTsKICAgRVhQ
RUNUX1RSVUUoZmlyc3RfcGFja2V0LlNldEV4dGVuc2lvbjxSdHBHZW5lcmljRnJhbWVEZXNjcmlw
dG9yRXh0ZW5zaW9uPigKICAgICAgIGZpcnN0X3BhY2tldF9kZXNjcmlwdG9yKSk7CiAKQEAgLTYw
NiwxMCArNjA0LDEwIEBAIFRFU1RfRihSdHBWaWRlb1N0cmVhbVJlY2VpdmVyVGVzdCwgUGFyc2VH
ZW5lcmljRGVzY3JpcHRvclR3b1BhY2tldHMpIHsKIAogICBFWFBFQ1RfQ0FMTChtb2NrX29uX2Nv
bXBsZXRlX2ZyYW1lX2NhbGxiYWNrXywgRG9PbkNvbXBsZXRlRnJhbWUpCiAgICAgICAuV2lsbE9u
Y2UoSW52b2tlKFtrU3BhdGlhbEluZGV4XSh2aWRlb19jb2Rpbmc6OkVuY29kZWRGcmFtZSogZnJh
bWUpIHsKLSAgICAgICAgRVhQRUNUX0VRKGZyYW1lLT5udW1fcmVmZXJlbmNlcywgMlUpOwotICAg
ICAgICBFWFBFQ1RfRVEoZnJhbWUtPnJlZmVyZW5jZXNbMF0sIGZyYW1lLT5pZC5waWN0dXJlX2lk
IC0gOTApOwotICAgICAgICBFWFBFQ1RfRVEoZnJhbWUtPnJlZmVyZW5jZXNbMV0sIGZyYW1lLT5p
ZC5waWN0dXJlX2lkIC0gODApOworICAgICAgICBFWFBFQ1RfRVEoZnJhbWUtPm51bV9yZWZlcmVu
Y2VzLCAwVSk7CiAgICAgICAgIEVYUEVDVF9FUShmcmFtZS0+aWQuc3BhdGlhbF9sYXllciwga1Nw
YXRpYWxJbmRleCk7CisgICAgICAgIEVYUEVDVF9FUShmcmFtZS0+RW5jb2RlZEltYWdlKCkuX2Vu
Y29kZWRXaWR0aCwgNDgwdSk7CisgICAgICAgIEVYUEVDVF9FUShmcmFtZS0+RW5jb2RlZEltYWdl
KCkuX2VuY29kZWRIZWlnaHQsIDM2MHUpOwogICAgICAgfSkpOwogCiAgIHJ0cF92aWRlb19zdHJl
YW1fcmVjZWl2ZXJfLT5PblJ0cFBhY2tldChzZWNvbmRfcGFja2V0KTsKQEAgLTYyOCw0ICs2MjYs
MTMgQEAgVEVTVF9GKFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXJUZXN0LCBSZXBlYXRlZFNlY29uZGFy
eVNpbmtEaXNhbGxvd2VkKSB7CiB9CiAjZW5kaWYKIAorLy8gSW5pdGlhbGl6YXRpb24gb2YgV2Vi
UnRjUlRQSGVhZGVyIGlzIGEgYml0IGNvbnZvbHV0ZWQsIHdpdGggc29tZSBmaWVsZHMKKy8vIHpl
cm8taW5pdGlhbGl6ZWQuIFJ0cFZpZGVvU3RyZWFtUmVjZWl2ZXIgZGVwZW5kcyBvbiBwcm9wZXIg
ZGVmYXVsdCB2YWx1ZXMgZm9yCisvLyB0aGUgcGxheW91dCBkZWxheS4KK1RFU1QoV2ViUnRjUlRQ
SGVhZGVyLCBEZWZhdWx0UGxheW91dERlbGF5SXNVbnNwZWNpZmllZCkgeworICBXZWJSdGNSVFBI
ZWFkZXIgd2VicnRjX3J0cF9oZWFkZXIgPSB7fTsKKyAgRVhQRUNUX0VRKHdlYnJ0Y19ydHBfaGVh
ZGVyLnZpZGVvX2hlYWRlcigpLnBsYXlvdXRfZGVsYXkubWluX21zLCAtMSk7CisgIEVYUEVDVF9F
USh3ZWJydGNfcnRwX2hlYWRlci52aWRlb19oZWFkZXIoKS5wbGF5b3V0X2RlbGF5Lm1heF9tcywg
LTEpOworfQorCiB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zY3JlZW5zaGFyZV9sb29wYmFj
ay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Nj
cmVlbnNoYXJlX2xvb3BiYWNrLmNjCmluZGV4IDFkNmU4N2U3MWZmNGJhOTJlNDdjYzc0ZDlhZThi
MDIwYjNlMzllMDEuLjQ2OTY2NjY5MDg3MDdkNDUwZTJhM2ZiM2ExN2U2MmEyMDYzNmNhZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVv
L3NjcmVlbnNoYXJlX2xvb3BiYWNrLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NjcmVlbnNoYXJlX2xvb3BiYWNrLmNjCkBAIC0xMiw3ICsx
Miw2IEBACiAKICNpbmNsdWRlICJydGNfYmFzZS9mbGFncy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdlbmNvZGUuaCIKICNpbmNsdWRl
ICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlhbC5oIgogI2luY2x1ZGUgInRlc3Qv
ZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCkBAIC0yMyw3MyArMjIsNzYg
QEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgZmxhZ3MgewogCiAvLyBGbGFncyBjb21t
b24gd2l0aCB2aWRlbyBsb29wYmFjaywgd2l0aCBkaWZmZXJlbnQgZGVmYXVsdCB2YWx1ZXMuCi1E
RUZJTkVfaW50KHdpZHRoLCAxODUwLCAiVmlkZW8gd2lkdGggKGNyb3BzIHNvdXJjZSkuIik7CitX
RUJSVENfREVGSU5FX2ludCh3aWR0aCwgMTg1MCwgIlZpZGVvIHdpZHRoIChjcm9wcyBzb3VyY2Up
LiIpOwogc2l6ZV90IFdpZHRoKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihGTEFH
X3dpZHRoKTsKIH0KIAotREVGSU5FX2ludChoZWlnaHQsIDExMTAsICJWaWRlbyBoZWlnaHQgKGNy
b3BzIHNvdXJjZSkuIik7CitXRUJSVENfREVGSU5FX2ludChoZWlnaHQsIDExMTAsICJWaWRlbyBo
ZWlnaHQgKGNyb3BzIHNvdXJjZSkuIik7CiBzaXplX3QgSGVpZ2h0KCkgewogICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihGTEFHX2hlaWdodCk7CiB9CiAKLURFRklORV9pbnQoZnBzLCA1LCAi
RnJhbWVzIHBlciBzZWNvbmQuIik7CitXRUJSVENfREVGSU5FX2ludChmcHMsIDUsICJGcmFtZXMg
cGVyIHNlY29uZC4iKTsKIGludCBGcHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZM
QUdfZnBzKTsKIH0KIAotREVGSU5FX2ludChtaW5fYml0cmF0ZSwgNTAsICJDYWxsIGFuZCBzdHJl
YW0gbWluIGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KG1pbl9iaXRyYXRl
LCA1MCwgIkNhbGwgYW5kIHN0cmVhbSBtaW4gYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IE1pbkJp
dHJhdGVLYnBzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX21pbl9iaXRyYXRl
KTsKIH0KIAotREVGSU5FX2ludChzdGFydF9iaXRyYXRlLCAzMDAsICJDYWxsIHN0YXJ0IGJpdHJh
dGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHN0YXJ0X2JpdHJhdGUsIDMwMCwgIkNh
bGwgc3RhcnQgYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IFN0YXJ0Qml0cmF0ZUticHMoKSB7CiAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc3RhcnRfYml0cmF0ZSk7CiB9CiAKLURFRklO
RV9pbnQodGFyZ2V0X2JpdHJhdGUsIDIwMCwgIlN0cmVhbSB0YXJnZXQgYml0cmF0ZSBpbiBrYnBz
LiIpOworV0VCUlRDX0RFRklORV9pbnQodGFyZ2V0X2JpdHJhdGUsIDIwMCwgIlN0cmVhbSB0YXJn
ZXQgYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IFRhcmdldEJpdHJhdGVLYnBzKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3RhcmdldF9iaXRyYXRlKTsKIH0KIAotREVGSU5FX2lu
dChtYXhfYml0cmF0ZSwgMTAwMCwgIkNhbGwgYW5kIHN0cmVhbSBtYXggYml0cmF0ZSBpbiBrYnBz
LiIpOworV0VCUlRDX0RFRklORV9pbnQobWF4X2JpdHJhdGUsIDEwMDAsICJDYWxsIGFuZCBzdHJl
YW0gbWF4IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBNYXhCaXRyYXRlS2JwcygpIHsKICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19tYXhfYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQo
bnVtX3RlbXBvcmFsX2xheWVycywgMiwgIk51bWJlciBvZiB0ZW1wb3JhbCBsYXllcnMgdG8gdXNl
LiIpOworV0VCUlRDX0RFRklORV9pbnQobnVtX3RlbXBvcmFsX2xheWVycywgMiwgIk51bWJlciBv
ZiB0ZW1wb3JhbCBsYXllcnMgdG8gdXNlLiIpOwogaW50IE51bVRlbXBvcmFsTGF5ZXJzKCkgewog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX251bV90ZW1wb3JhbF9sYXllcnMpOwogfQog
CiAvLyBGbGFncyBjb21tb24gd2l0aCB2aWRlbyBsb29wYmFjaywgd2l0aCBlcXVhbCBkZWZhdWx0
IHZhbHVlcy4KLURFRklORV9zdHJpbmcoY29kZWMsICJWUDgiLCAiVmlkZW8gY29kZWMgdG8gdXNl
LiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoY29kZWMsICJWUDgiLCAiVmlkZW8gY29kZWMgdG8g
dXNlLiIpOwogc3RkOjpzdHJpbmcgQ29kZWMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6
OnN0cmluZz4oRkxBR19jb2RlYyk7CiB9CiAKLURFRklORV9zdHJpbmcocnRjX2V2ZW50X2xvZ19u
YW1lLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBydGMg
ZXZlbnQgbG9nLiBUd28gZmlsZXMgIgotICAgICAgICAgICAgICAid2l0aCBcIl9zZW5kXCIgYW5k
IFwiX3JlY3ZcIiBzdWZmaXhlcyB3aWxsIGJlIGNyZWF0ZWQuIik7CitXRUJSVENfREVGSU5FX3N0
cmluZyhydGNfZXZlbnRfbG9nX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAg
ICAgICAgICAgICAgICAgICJGaWxlbmFtZSBmb3IgcnRjIGV2ZW50IGxvZy4gVHdvIGZpbGVzICIK
KyAgICAgICAgICAgICAgICAgICAgICJ3aXRoIFwiX3NlbmRcIiBhbmQgXCJfcmVjdlwiIHN1ZmZp
eGVzIHdpbGwgYmUgY3JlYXRlZC4iKTsKIHN0ZDo6c3RyaW5nIFJ0Y0V2ZW50TG9nTmFtZSgpIHsK
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3J0Y19ldmVudF9sb2dfbmFt
ZSk7CiB9CiAKLURFRklORV9zdHJpbmcocnRwX2R1bXBfbmFtZSwgIiIsICJGaWxlbmFtZSBmb3Ig
ZHVtcGVkIHJlY2VpdmVkIFJUUCBzdHJlYW0uIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhydHBf
ZHVtcF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAg
ICAiRmlsZW5hbWUgZm9yIGR1bXBlZCByZWNlaXZlZCBSVFAgc3RyZWFtLiIpOwogc3RkOjpzdHJp
bmcgUnRwRHVtcE5hbWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxB
R19ydHBfZHVtcF9uYW1lKTsKIH0KIAotREVGSU5FX2ludChzZWxlY3RlZF90bCwKLSAgICAgICAg
ICAgLTEsCi0gICAgICAgICAgICJUZW1wb3JhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0x
IHRvIGRpc2FibGUgZmlsdGVyaW5nLiIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgc2VsZWN0
ZWRfdGwsCisgICAgLTEsCisgICAgIlRlbXBvcmFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZS4g
LTEgdG8gZGlzYWJsZSBmaWx0ZXJpbmcuIik7CiBpbnQgU2VsZWN0ZWRUTCgpIHsKICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oRkxBR19zZWxlY3RlZF90bCk7CiB9CiAKLURFRklORV9pbnQoCitX
RUJSVENfREVGSU5FX2ludCgKICAgICBkdXJhdGlvbiwKICAgICAwLAogICAgICJEdXJhdGlvbiBv
ZiB0aGUgdGVzdCBpbiBzZWNvbmRzLiBJZiAwLCByZW5kZXJlZCB3aWxsIGJlIHNob3duIGluc3Rl
YWQuIik7CkBAIC05Nyw3MSArOTksNzQgQEAgaW50IER1cmF0aW9uU2VjcygpIHsKICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oRkxBR19kdXJhdGlvbik7CiB9CiAKLURFRklORV9zdHJpbmcob3V0
cHV0X2ZpbGVuYW1lLCAiIiwgIlRhcmdldCBncmFwaCBkYXRhIGZpbGVuYW1lLiIpOworV0VCUlRD
X0RFRklORV9zdHJpbmcob3V0cHV0X2ZpbGVuYW1lLCAiIiwgIlRhcmdldCBncmFwaCBkYXRhIGZp
bGVuYW1lLiIpOwogc3RkOjpzdHJpbmcgT3V0cHV0RmlsZW5hbWUoKSB7CiAgIHJldHVybiBzdGF0
aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19vdXRwdXRfZmlsZW5hbWUpOwogfQogCi1ERUZJTkVf
c3RyaW5nKGdyYXBoX3RpdGxlLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIklm
IGVtcHR5LCB0aXRsZSB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LiIpOworV0VCUlRD
X0RFRklORV9zdHJpbmcoZ3JhcGhfdGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAg
ICAgICAgICAgICAgICAgICAgICJJZiBlbXB0eSwgdGl0bGUgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0
b21hdGljYWxseS4iKTsKIHN0ZDo6c3RyaW5nIEdyYXBoVGl0bGUoKSB7CiAgIHJldHVybiBzdGF0
aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19ncmFwaF90aXRsZSk7CiB9CiAKLURFRklORV9pbnQo
bG9zc19wZXJjZW50LCAwLCAiUGVyY2VudGFnZSBvZiBwYWNrZXRzIHJhbmRvbWx5IGxvc3QuIik7
CitXRUJSVENfREVGSU5FX2ludChsb3NzX3BlcmNlbnQsIDAsICJQZXJjZW50YWdlIG9mIHBhY2tl
dHMgcmFuZG9tbHkgbG9zdC4iKTsKIGludCBMb3NzUGVyY2VudCgpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4oRkxBR19sb3NzX3BlcmNlbnQpOwogfQogCi1ERUZJTkVfaW50KGxpbmtfY2Fw
YWNpdHksCi0gICAgICAgICAgIDAsCi0gICAgICAgICAgICJDYXBhY2l0eSAoa2Jwcykgb2YgdGhl
IGZha2UgbGluay4gMCBtZWFucyBpbmZpbml0ZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KGxpbmtf
Y2FwYWNpdHksCisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIkNhcGFj
aXR5IChrYnBzKSBvZiB0aGUgZmFrZSBsaW5rLiAwIG1lYW5zIGluZmluaXRlLiIpOwogaW50IExp
bmtDYXBhY2l0eUticHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbGlua19j
YXBhY2l0eSk7CiB9CiAKLURFRklORV9pbnQocXVldWVfc2l6ZSwgMCwgIlNpemUgb2YgdGhlIGJv
dHRsZW5lY2sgbGluayBxdWV1ZSBpbiBwYWNrZXRzLiIpOworV0VCUlRDX0RFRklORV9pbnQocXVl
dWVfc2l6ZSwKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiU2l6ZSBv
ZiB0aGUgYm90dGxlbmVjayBsaW5rIHF1ZXVlIGluIHBhY2tldHMuIik7CiBpbnQgUXVldWVTaXpl
KCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3F1ZXVlX3NpemUpOwogfQogCi1E
RUZJTkVfaW50KGF2Z19wcm9wYWdhdGlvbl9kZWxheV9tcywKLSAgICAgICAgICAgMCwKLSAgICAg
ICAgICAgIkF2ZXJhZ2UgbGluayBwcm9wYWdhdGlvbiBkZWxheSBpbiBtcy4iKTsKK1dFQlJUQ19E
RUZJTkVfaW50KGF2Z19wcm9wYWdhdGlvbl9kZWxheV9tcywKKyAgICAgICAgICAgICAgICAgIDAs
CisgICAgICAgICAgICAgICAgICAiQXZlcmFnZSBsaW5rIHByb3BhZ2F0aW9uIGRlbGF5IGluIG1z
LiIpOwogaW50IEF2Z1Byb3BhZ2F0aW9uRGVsYXlNcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oRkxBR19hdmdfcHJvcGFnYXRpb25fZGVsYXlfbXMpOwogfQogCi1ERUZJTkVfaW50KHN0
ZF9wcm9wYWdhdGlvbl9kZWxheV9tcywKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkxpbmsg
cHJvcGFnYXRpb24gZGVsYXkgc3RhbmRhcmQgZGV2aWF0aW9uIGluIG1zLiIpOworV0VCUlRDX0RF
RklORV9pbnQoc3RkX3Byb3BhZ2F0aW9uX2RlbGF5X21zLAorICAgICAgICAgICAgICAgICAgMCwK
KyAgICAgICAgICAgICAgICAgICJMaW5rIHByb3BhZ2F0aW9uIGRlbGF5IHN0YW5kYXJkIGRldmlh
dGlvbiBpbiBtcy4iKTsKIGludCBTdGRQcm9wYWdhdGlvbkRlbGF5TXMoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KEZMQUdfc3RkX3Byb3BhZ2F0aW9uX2RlbGF5X21zKTsKIH0KIAotREVG
SU5FX2ludChudW1fc3RyZWFtcywgMCwgIk51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cgb3IgYW5h
bHl6ZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KG51bV9zdHJlYW1zLCAwLCAiTnVtYmVyIG9mIHN0
cmVhbXMgdG8gc2hvdyBvciBhbmFseXplLiIpOwogaW50IE51bVN0cmVhbXMoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfbnVtX3N0cmVhbXMpOwogfQogCi1ERUZJTkVfaW50KHNl
bGVjdGVkX3N0cmVhbSwKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIklEIG9mIHRoZSBzdHJl
YW0gdG8gc2hvdyBvciBhbmFseXplLiAiCi0gICAgICAgICAgICJTZXQgdG8gdGhlIG51bWJlciBv
ZiBzdHJlYW1zIHRvIHNob3cgdGhlbSBhbGwuIik7CitXRUJSVENfREVGSU5FX2ludChzZWxlY3Rl
ZF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIklEIG9m
IHRoZSBzdHJlYW0gdG8gc2hvdyBvciBhbmFseXplLiAiCisgICAgICAgICAgICAgICAgICAiU2V0
IHRvIHRoZSBudW1iZXIgb2Ygc3RyZWFtcyB0byBzaG93IHRoZW0gYWxsLiIpOwogaW50IFNlbGVj
dGVkU3RyZWFtKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NlbGVjdGVkX3N0
cmVhbSk7CiB9CiAKLURFRklORV9pbnQobnVtX3NwYXRpYWxfbGF5ZXJzLCAxLCAiTnVtYmVyIG9m
IHNwYXRpYWwgbGF5ZXJzIHRvIHVzZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KG51bV9zcGF0aWFs
X2xheWVycywgMSwgIk51bWJlciBvZiBzcGF0aWFsIGxheWVycyB0byB1c2UuIik7CiBpbnQgTnVt
U3BhdGlhbExheWVycygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19udW1fc3Bh
dGlhbF9sYXllcnMpOwogfQogCi1ERUZJTkVfaW50KGludGVyX2xheWVyX3ByZWQsCi0gICAgICAg
ICAgIDAsCi0gICAgICAgICAgICJJbnRlci1sYXllciBwcmVkaWN0aW9uIG1vZGUuICIKLSAgICAg
ICAgICAgIjAgLSBlbmFibGVkLCAxIC0gZGlzYWJsZWQsIDIgLSBlbmFibGVkIG9ubHkgZm9yIGtl
eSBwaWN0dXJlcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KAorICAgIGludGVyX2xheWVyX3ByZWQs
CisgICAgMCwKKyAgICAiSW50ZXItbGF5ZXIgcHJlZGljdGlvbiBtb2RlLiAiCisgICAgIjAgLSBl
bmFibGVkLCAxIC0gZGlzYWJsZWQsIDIgLSBlbmFibGVkIG9ubHkgZm9yIGtleSBwaWN0dXJlcy4i
KTsKIEludGVyTGF5ZXJQcmVkTW9kZSBJbnRlckxheWVyUHJlZCgpIHsKICAgaWYgKEZMQUdfaW50
ZXJfbGF5ZXJfcHJlZCA9PSAwKSB7CiAgICAgcmV0dXJuIEludGVyTGF5ZXJQcmVkTW9kZTo6a09u
OwpAQCAtMTczLDU4ICsxNzgsNjUgQEAgSW50ZXJMYXllclByZWRNb2RlIEludGVyTGF5ZXJQcmVk
KCkgewogICB9CiB9CiAKLURFRklORV9pbnQoc2VsZWN0ZWRfc2wsCi0gICAgICAgICAgIC0xLAot
ICAgICAgICAgICAiU3BhdGlhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRpc2Fi
bGUgZmlsdGVyaW5nLiIpOworV0VCUlRDX0RFRklORV9pbnQoc2VsZWN0ZWRfc2wsCisgICAgICAg
ICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICJTcGF0aWFsIGxheWVyIHRvIHNob3cg
b3IgYW5hbHl6ZS4gLTEgdG8gZGlzYWJsZSBmaWx0ZXJpbmcuIik7CiBpbnQgU2VsZWN0ZWRTTCgp
IHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zZWxlY3RlZF9zbCk7CiB9CiAKLURF
RklORV9zdHJpbmcoc3RyZWFtMCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJD
b21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHN0cmVhbSAj
MC4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIHN0cmVhbTAsCisgICAgIiIsCisgICAg
IkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBWaWRlb1N0cmVhbSBmb3Igc3RyZWFt
ICMwLiIpOwogc3RkOjpzdHJpbmcgU3RyZWFtMCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0
ZDo6c3RyaW5nPihGTEFHX3N0cmVhbTApOwogfQogCi1ERUZJTkVfc3RyaW5nKHN0cmVhbTEsCi0g
ICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBk
ZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZvciBzdHJlYW0gIzEuIik7CitXRUJSVENfREVGSU5FX3N0
cmluZygKKyAgICBzdHJlYW0xLAorICAgICIiLAorICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVz
IGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHN0cmVhbSAjMS4iKTsKIHN0ZDo6c3RyaW5nIFN0
cmVhbTEoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zdHJlYW0x
KTsKIH0KIAotREVGSU5FX3N0cmluZyhzbDAsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAg
ICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3Ig
bGF5ZXIgIzAuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzbDAsCisgICAgIiIsCisg
ICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxh
eWVyICMwLiIpOwogc3RkOjpzdHJpbmcgU0wwKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3Rk
OjpzdHJpbmc+KEZMQUdfc2wwKTsKIH0KIAotREVGSU5FX3N0cmluZyhzbDEsCi0gICAgICAgICAg
ICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5n
IFNwYXRpYWxMYXllciBmb3IgbGF5ZXIgIzEuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAg
ICBzbDEsCisgICAgIiIsCisgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBT
cGF0aWFsTGF5ZXIgZm9yIGxheWVyICMxLiIpOwogc3RkOjpzdHJpbmcgU0wxKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc2wxKTsKIH0KIAotREVGSU5FX3N0cmlu
ZyhlbmNvZGVkX2ZyYW1lX3BhdGgsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAi
VGhlIGJhc2UgcGF0aCBmb3IgZW5jb2RlZCBmcmFtZSBsb2dzLiBDcmVhdGVkIGZpbGVzIHdpbGwg
aGF2ZSAiCi0gICAgICAgICAgICAgICJ0aGUgZm9ybSA8ZW5jb2RlZF9mcmFtZV9wYXRoPi48bj4u
KHJlY3Z8c2VuZC48bT4pLml2ZiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgZW5jb2Rl
ZF9mcmFtZV9wYXRoLAorICAgICIiLAorICAgICJUaGUgYmFzZSBwYXRoIGZvciBlbmNvZGVkIGZy
YW1lIGxvZ3MuIENyZWF0ZWQgZmlsZXMgd2lsbCBoYXZlICIKKyAgICAidGhlIGZvcm0gPGVuY29k
ZWRfZnJhbWVfcGF0aD4uPG4+LihyZWN2fHNlbmQuPG0+KS5pdmYiKTsKIHN0ZDo6c3RyaW5nIEVu
Y29kZWRGcmFtZVBhdGgoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxB
R19lbmNvZGVkX2ZyYW1lX3BhdGgpOwogfQogCi1ERUZJTkVfYm9vbChsb2dzLCBmYWxzZSwgInBy
aW50IGxvZ3MgdG8gc3RkZXJyIik7CitXRUJSVENfREVGSU5FX2Jvb2wobG9ncywgZmFsc2UsICJw
cmludCBsb2dzIHRvIHN0ZGVyciIpOwogCi1ERUZJTkVfYm9vbChzZW5kX3NpZGVfYndlLCB0cnVl
LCAiVXNlIHNlbmQtc2lkZSBiYW5kd2lkdGggZXN0aW1hdGlvbiIpOworV0VCUlRDX0RFRklORV9i
b29sKHNlbmRfc2lkZV9id2UsIHRydWUsICJVc2Ugc2VuZC1zaWRlIGJhbmR3aWR0aCBlc3RpbWF0
aW9uIik7CiAKLURFRklORV9ib29sKGdlbmVyaWNfZGVzY3JpcHRvciwgZmFsc2UsICJVc2UgdGhl
IGdlbmVyaWMgZnJhbWUgZGVzY3JpcHRvci4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbChnZW5lcmlj
X2Rlc2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgIlVzZSB0aGUgZ2VuZXJpYyBmcmFtZSBkZXNjcmlwdG9yLiIpOwogCi1ERUZJTkVfYm9vbChh
bGxvd19yZW9yZGVyaW5nLCBmYWxzZSwgIkFsbG93IHBhY2tldCByZW9yZGVyaW5nIHRvIG9jY3Vy
Iik7CitXRUJSVENfREVGSU5FX2Jvb2woYWxsb3dfcmVvcmRlcmluZywgZmFsc2UsICJBbGxvdyBw
YWNrZXQgcmVvcmRlcmluZyB0byBvY2N1ciIpOwogCi1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RF
RklORV9zdHJpbmcoCiAgICAgZm9yY2VfZmllbGR0cmlhbHMsCiAgICAgIiIsCiAgICAgIkZpZWxk
IHRyaWFscyBjb250cm9sIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGNvZGUgd2hpY2ggY2FuIGJlIGZv
cmNlZC4gIgpAQCAtMjMzLDEyICsyNDUsMTQgQEAgREVGSU5FX3N0cmluZygKICAgICAidHJpYWxz
IGFyZSBzZXBhcmF0ZWQgYnkgXCIvXCIiKTsKIAogLy8gU2NyZWVuc2hhcmUtc3BlY2lmaWMgZmxh
Z3MuCi1ERUZJTkVfaW50KG1pbl90cmFuc21pdF9iaXRyYXRlLCA0MDAsICJNaW4gdHJhbnNtaXQg
Yml0cmF0ZSBpbmNsLiBwYWRkaW5nLiIpOworV0VCUlRDX0RFRklORV9pbnQobWluX3RyYW5zbWl0
X2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICA0MDAsCisgICAgICAgICAgICAgICAgICAiTWlu
IHRyYW5zbWl0IGJpdHJhdGUgaW5jbC4gcGFkZGluZy4iKTsKIGludCBNaW5UcmFuc21pdEJpdHJh
dGVLYnBzKCkgewogICByZXR1cm4gRkxBR19taW5fdHJhbnNtaXRfYml0cmF0ZTsKIH0KIAotREVG
SU5FX2Jvb2woCitXRUJSVENfREVGSU5FX2Jvb2woCiAgICAgZ2VuZXJhdGVfc2xpZGVzLAogICAg
IGZhbHNlLAogICAgICJXaGV0aGVyIHRvIHVzZSByYW5kb21seSBnZW5lcmF0ZWQgc2xpZGVzIG9y
IHJlYWQgdGhlbSBmcm9tIGZpbGVzLiIpOwpAQCAtMjQ2LDE0ICsyNjAsMTQgQEAgYm9vbCBHZW5l
cmF0ZVNsaWRlcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19nZW5lcmF0ZV9z
bGlkZXMpOwogfQogCi1ERUZJTkVfaW50KHNsaWRlX2NoYW5nZV9pbnRlcnZhbCwKLSAgICAgICAg
ICAgMTAsCi0gICAgICAgICAgICJJbnRlcnZhbCAoaW4gc2Vjb25kcykgYmV0d2VlbiBzaW11bGF0
ZWQgc2xpZGUgY2hhbmdlcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNsaWRlX2NoYW5nZV9pbnRl
cnZhbCwKKyAgICAgICAgICAgICAgICAgIDEwLAorICAgICAgICAgICAgICAgICAgIkludGVydmFs
IChpbiBzZWNvbmRzKSBiZXR3ZWVuIHNpbXVsYXRlZCBzbGlkZSBjaGFuZ2VzLiIpOwogaW50IFNs
aWRlQ2hhbmdlSW50ZXJ2YWwoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2xp
ZGVfY2hhbmdlX2ludGVydmFsKTsKIH0KIAotREVGSU5FX2ludCgKK1dFQlJUQ19ERUZJTkVfaW50
KAogICAgIHNjcm9sbF9kdXJhdGlvbiwKICAgICAwLAogICAgICJEdXJhdGlvbiAoaW4gc2Vjb25k
cykgZHVyaW5nIHdoaWNoIGEgc2xpZGUgd2lsbCBiZSBzY3JvbGxlZCBpbnRvIHBsYWNlLiIpOwpA
QCAtMjYxLDkgKzI3NSwxMCBAQCBpbnQgU2Nyb2xsRHVyYXRpb24oKSB7CiAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KEZMQUdfc2Nyb2xsX2R1cmF0aW9uKTsKIH0KIAotREVGSU5FX3N0cmluZyhz
bGlkZXMsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEtc2VwYXJhdGVk
IGxpc3Qgb2YgKi55dXYgZmlsZXMgdG8gZGlzcGxheSBhcyBzbGlkZXMuIik7CitXRUJSVENfREVG
SU5FX3N0cmluZygKKyAgICBzbGlkZXMsCisgICAgIiIsCisgICAgIkNvbW1hLXNlcGFyYXRlZCBs
aXN0IG9mICoueXV2IGZpbGVzIHRvIGRpc3BsYXkgYXMgc2xpZGVzLiIpOwogc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IFNsaWRlcygpIHsKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHNsaWRl
czsKICAgc3RkOjpzdHJpbmcgc2xpZGVzX2xpc3QgPSBGTEFHX3NsaWRlczsKQEAgLTI3MSwxMiAr
Mjg2LDEyIEBAIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBTbGlkZXMoKSB7CiAgIHJldHVybiBz
bGlkZXM7CiB9CiAKLURFRklORV9ib29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2Fn
ZSIpOworV0VCUlRDX0RFRklORV9ib29sKGhlbHAsIGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2Fn
ZSIpOwogCiB9ICAvLyBuYW1lc3BhY2UgZmxhZ3MKIAogdm9pZCBMb29wYmFjaygpIHsKLSAgRGVm
YXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmlnIHBpcGVfY29uZmlnOworICBCdWlsdEluTmV0d29y
a0JlaGF2aW9yQ29uZmlnIHBpcGVfY29uZmlnOwogICBwaXBlX2NvbmZpZy5sb3NzX3BlcmNlbnQg
PSBmbGFnczo6TG9zc1BlcmNlbnQoKTsKICAgcGlwZV9jb25maWcubGlua19jYXBhY2l0eV9rYnBz
ID0gZmxhZ3M6OkxpbmtDYXBhY2l0eUticHMoKTsKICAgcGlwZV9jb25maWcucXVldWVfbGVuZ3Ro
X3BhY2tldHMgPSBmbGFnczo6UXVldWVTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX2RlbGF5X3N0YXRzLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX2RlbGF5
X3N0YXRzLmgKaW5kZXggMzMzNzg5OTA2OWEwMDYwOTc2NjAwMzBiYTAwNWRlY2ZkYTAyYTU3Ni4u
YjQ0NTE2YjI4NTU0MWFiYTA4MWYxMTBiMzE2ZmUyMmRlOWMwYmFiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9kZWxheV9z
dGF0cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL3NlbmRfZGVsYXlfc3RhdHMuaApAQCAtMTYsNyArMTYsNiBAQAogI2luY2x1ZGUgPHNldD4K
IAogI2luY2x1ZGUgImNhbGwvdmlkZW9fc2VuZF9zdHJlYW0uaCIKLSNpbmNsdWRlICJjb21tb25f
dHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgInJ0Y19iYXNlL2Ny
aXRpY2Fsc2VjdGlvbi5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5o
IgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2Nsb2NrLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX3N0
YXRpc3RpY3NfcHJveHkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy92aWRlby9zZW5kX3N0YXRpc3RpY3NfcHJveHkuY2MKaW5kZXggOTgzOWVkN2EzYjcwOTRi
ZGZmZTc0ZGU4MzRkMWY3NzMxNWVjYmFmYi4uMjRlOTY0MTk0NzE0NTAzNzQ4ZjIwNTUzMzFjY2I1
OTU5N2Y3ZDFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGljc19wcm94
eS5jYwpAQCAtMTUsNyArMTUsNiBAQAogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx1dGls
aXR5PgogCi0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVk
ZSkKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2NvZGVjX2lu
dGVyZmFjZS5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19i
YXNlL2xvZ2dpbmcuaCIKQEAgLTgyMywxMCArODIyLDEzIEBAIHZvaWQgU2VuZFN0YXRpc3RpY3NQ
cm94eTo6VXBkYXRlRW5jb2RlckZhbGxiYWNrU3RhdHMoCiAKICAgY29uc3QgaW50NjRfdCBub3df
bXMgPSBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpOwogICBib29sIGlzX2FjdGl2ZSA9IGZh
bGxiYWNrX2luZm8tPmlzX2FjdGl2ZTsKLSAgaWYgKGNvZGVjX2luZm8tPmNvZGVjX25hbWUgIT0g
c3RhdHNfLmVuY29kZXJfaW1wbGVtZW50YXRpb25fbmFtZSkgeworICBpZiAoZW5jb2Rlcl9jaGFu
Z2VkXykgewogICAgIC8vIEltcGxlbWVudGF0aW9uIGNoYW5nZWQuCi0gICAgaXNfYWN0aXZlID0g
c3RyY21wKGNvZGVjX2luZm8tPmNvZGVjX25hbWUsIGtWcDhTd0NvZGVjTmFtZSkgPT0gMDsKLSAg
ICBpZiAoIWlzX2FjdGl2ZSAmJiBzdGF0c18uZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbl9uYW1lICE9
IGtWcDhTd0NvZGVjTmFtZSkgeworICAgIGNvbnN0IGJvb2wgbGFzdF93YXNfdnA4X3NvZnR3YXJl
ID0KKyAgICAgICAgZW5jb2Rlcl9jaGFuZ2VkXy0+cHJldmlvdXNfZW5jb2Rlcl9pbXBsZW1lbnRh
dGlvbiA9PSBrVnA4U3dDb2RlY05hbWU7CisgICAgaXNfYWN0aXZlID0gZW5jb2Rlcl9jaGFuZ2Vk
Xy0+bmV3X2VuY29kZXJfaW1wbGVtZW50YXRpb24gPT0ga1ZwOFN3Q29kZWNOYW1lOworICAgIGVu
Y29kZXJfY2hhbmdlZF8ucmVzZXQoKTsKKyAgICBpZiAoIWlzX2FjdGl2ZSAmJiAhbGFzdF93YXNf
dnA4X3NvZnR3YXJlKSB7CiAgICAgICAvLyBGaXJzdCBvciBub3QgYSBWUDggU1cgY2hhbmdlLCB1
cGRhdGUgc3RhdHMgb24gbmV4dCBjYWxsLgogICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg2NSw3
ICs4NjcsNyBAQCB2b2lkIFNlbmRTdGF0aXN0aWNzUHJveHk6OlVwZGF0ZUZhbGxiYWNrRGlzYWJs
ZWRTdGF0cygKICAgfQogCiAgIGlmICghSXNGb3JjZWRGYWxsYmFja1Bvc3NpYmxlKGNvZGVjX2lu
Zm8sIHNpbXVsY2FzdF9pbmRleCkgfHwKLSAgICAgIHN0cmNtcChjb2RlY19pbmZvLT5jb2RlY19u
YW1lLCBrVnA4U3dDb2RlY05hbWUpID09IDApIHsKKyAgICAgIHN0YXRzXy5lbmNvZGVyX2ltcGxl
bWVudGF0aW9uX25hbWUgPT0ga1ZwOFN3Q29kZWNOYW1lKSB7CiAgICAgdW1hX2NvbnRhaW5lcl8t
PmZhbGxiYWNrX2luZm9fZGlzYWJsZWRfLmlzX3Bvc3NpYmxlID0gZmFsc2U7CiAgICAgcmV0dXJu
OwogICB9CkBAIC04OTUsMTMgKzg5Nyw5IEBAIHZvaWQgU2VuZFN0YXRpc3RpY3NQcm94eTo6T25T
ZW5kRW5jb2RlZEltYWdlKAogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcml0Xyk7CiAgICsrc3Rh
dHNfLmZyYW1lc19lbmNvZGVkOwogICBpZiAoY29kZWNfaW5mbykgewotICAgIGlmIChjb2RlY19p
bmZvLT5jb2RlY19uYW1lKSB7Ci0gICAgICBVcGRhdGVFbmNvZGVyRmFsbGJhY2tTdGF0cygKLSAg
ICAgICAgICBjb2RlY19pbmZvLAotICAgICAgICAgIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRXaWR0
aCAqIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRIZWlnaHQsCi0gICAgICAgICAgc2ltdWxjYXN0X2lk
eCk7Ci0gICAgICBzdGF0c18uZW5jb2Rlcl9pbXBsZW1lbnRhdGlvbl9uYW1lID0gY29kZWNfaW5m
by0+Y29kZWNfbmFtZTsKLSAgICB9CisgICAgVXBkYXRlRW5jb2RlckZhbGxiYWNrU3RhdHMoCisg
ICAgICAgIGNvZGVjX2luZm8sIGVuY29kZWRfaW1hZ2UuX2VuY29kZWRXaWR0aCAqIGVuY29kZWRf
aW1hZ2UuX2VuY29kZWRIZWlnaHQsCisgICAgICAgIHNpbXVsY2FzdF9pZHgpOwogICB9CiAKICAg
aWYgKHN0YXRpY19jYXN0PHNpemVfdD4oc2ltdWxjYXN0X2lkeCkgPj0gcnRwX2NvbmZpZ18uc3Ny
Y3Muc2l6ZSgpKSB7CkBAIC05ODEsNiArOTc5LDE0IEBAIHZvaWQgU2VuZFN0YXRpc3RpY3NQcm94
eTo6T25TZW5kRW5jb2RlZEltYWdlKAogICB9CiB9CiAKK3ZvaWQgU2VuZFN0YXRpc3RpY3NQcm94
eTo6T25FbmNvZGVySW1wbGVtZW50YXRpb25DaGFuZ2VkKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBpbXBsZW1lbnRhdGlvbl9uYW1lKSB7CisgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRfKTsK
KyAgZW5jb2Rlcl9jaGFuZ2VkXyA9IEVuY29kZXJDaGFuZ2VFdmVudHtzdGF0c18uZW5jb2Rlcl9p
bXBsZW1lbnRhdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGltcGxlbWVudGF0aW9uX25hbWV9OworICBzdGF0c18uZW5jb2Rlcl9pbXBsZW1lbnRhdGlv
bl9uYW1lID0gaW1wbGVtZW50YXRpb25fbmFtZTsKK30KKwogaW50IFNlbmRTdGF0aXN0aWNzUHJv
eHk6OkdldElucHV0RnJhbWVSYXRlKCkgY29uc3QgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZj
cml0Xyk7CiAgIHJldHVybiByb3VuZCh1bWFfY29udGFpbmVyXy0+aW5wdXRfZnJhbWVfcmF0ZV90
cmFja2VyXy5Db21wdXRlUmF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGljc19wcm94eS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0
aWNzX3Byb3h5LmgKaW5kZXggYjU4NjhkMDg5MDcyN2YwNTI2MGU5MDMwYjQ1NzA5MDlmZDJmNDE4
Ni4uNzMxNmYzYjU1YWVjMGQzNGZkNWY1YWEwOTJlMGYxOWNhODg5YmM0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vc2VuZF9zdGF0
aXN0aWNzX3Byb3h5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmgKQEAgLTE4LDcgKzE4LDYgQEAKIAog
I2luY2x1ZGUgImFwaS92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlcl9vYnNlcnZlci5oIgogI2lu
Y2x1ZGUgImNhbGwvdmlkZW9fc2VuZF9zdHJlYW0uaCIKLSNpbmNsdWRlICJjb21tb25fdHlwZXMu
aCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29k
aW5nL2luY2x1ZGUvdmlkZW9fY29kZWNfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92
aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RpbmdfZGVmaW5lcy5oIgogI2luY2x1ZGUgInJ0
Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5oIgpAQCAtNTMsNiArNTIsMTAgQEAgY2xhc3MgU2VuZFN0
YXRpc3RpY3NQcm94eSA6IHB1YmxpYyBWaWRlb1N0cmVhbUVuY29kZXJPYnNlcnZlciwKIAogICB2
b2lkIE9uU2VuZEVuY29kZWRJbWFnZShjb25zdCBFbmNvZGVkSW1hZ2UmIGVuY29kZWRfaW1hZ2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2Rl
Y19pbmZvKSBvdmVycmlkZTsKKworICB2b2lkIE9uRW5jb2RlckltcGxlbWVudGF0aW9uQ2hhbmdl
ZCgKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbXBsZW1lbnRhdGlvbl9uYW1lKSBvdmVycmlk
ZTsKKwogICAvLyBVc2VkIHRvIHVwZGF0ZSBpbmNvbWluZyBmcmFtZSByYXRlLgogICB2b2lkIE9u
SW5jb21pbmdGcmFtZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRlOwogCkBAIC0yNDEs
NiArMjQ0LDE0IEBAIGNsYXNzIFNlbmRTdGF0aXN0aWNzUHJveHkgOiBwdWJsaWMgVmlkZW9TdHJl
YW1FbmNvZGVyT2JzZXJ2ZXIsCiAKICAgYWJzbDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdF9vdXRs
aWVyX3RpbWVzdGFtcF8gUlRDX0dVQVJERURfQlkoY3JpdF8pOwogCisgIHN0cnVjdCBFbmNvZGVy
Q2hhbmdlRXZlbnQgeworICAgIHN0ZDo6c3RyaW5nIHByZXZpb3VzX2VuY29kZXJfaW1wbGVtZW50
YXRpb247CisgICAgc3RkOjpzdHJpbmcgbmV3X2VuY29kZXJfaW1wbGVtZW50YXRpb247CisgIH07
CisgIC8vIFN0b3JlcyB0aGUgbGFzdCBjaGFuZ2UgaW4gZW5jb2RlciBpbXBsZW1lbnRhdGlvbiBp
biBhbiBvcHRpb25hbCwgc28gdGhhdAorICAvLyB0aGUgZXZlbnQgY2FuIGJlIGNvbnN1bWVkLgor
ICBhYnNsOjpvcHRpb25hbDxFbmNvZGVyQ2hhbmdlRXZlbnQ+IGVuY29kZXJfY2hhbmdlZF87CisK
ICAgLy8gQ29udGFpbnMgc3RhdHMgdXNlZCBmb3IgVU1BIGhpc3RvZ3JhbXMuIFRoZXNlIHN0YXRz
IHdpbGwgYmUgcmVzZXQgaWYKICAgLy8gY29udGVudCB0eXBlIGNoYW5nZXMgYmV0d2VlbiByZWFs
LXRpbWUgdmlkZW8gYW5kIHNjcmVlbnNoYXJlLCBzaW5jZSB0aGVzZQogICAvLyB3aWxsIGJlIHJl
cG9ydGVkIHNlcGFyYXRlbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX3N0YXRpc3RpY3NfcHJveHlfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby9zZW5kX3N0
YXRpc3RpY3NfcHJveHlfdW5pdHRlc3QuY2MKaW5kZXggM2QyN2M3MTJjNmI2YTM3MjdmOWY5OTNi
ZGIxNmQxYTMxMmRhZjQ0My4uNTg2ZDU3ZmIyODQ4ODBmZmYxNzMzZWM5ZTdjODIwNTViNDhmMzM5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vc2VuZF9zdGF0aXN0aWNzX3Byb3h5X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3NlbmRfc3RhdGlzdGljc19wcm94
eV91bml0dGVzdC5jYwpAQCAtMjE2NywxMyArMjE2Nyw5IEBAIFRFU1RfRihTZW5kU3RhdGlzdGlj
c1Byb3h5VGVzdCwgRmVjQml0cmF0ZU5vdFJlcG9ydGVkV2hlbk5vdEVuYWJsZWQpIHsKIH0KIAog
VEVTVF9GKFNlbmRTdGF0aXN0aWNzUHJveHlUZXN0LCBHZXRTdGF0c1JlcG9ydHNFbmNvZGVySW1w
bGVtZW50YXRpb25OYW1lKSB7Ci0gIGNvbnN0IGNoYXIqIGtOYW1lID0gImVuY29kZXJOYW1lIjsK
LSAgRW5jb2RlZEltYWdlIGVuY29kZWRfaW1hZ2U7Ci0gIENvZGVjU3BlY2lmaWNJbmZvIGNvZGVj
X2luZm87Ci0gIGNvZGVjX2luZm8uY29kZWNfbmFtZSA9IGtOYW1lOwotICBzdGF0aXN0aWNzX3By
b3h5Xy0+T25TZW5kRW5jb2RlZEltYWdlKGVuY29kZWRfaW1hZ2UsICZjb2RlY19pbmZvKTsKLSAg
RVhQRUNUX1NUUkVRKAotICAgICAga05hbWUsIHN0YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygp
LmVuY29kZXJfaW1wbGVtZW50YXRpb25fbmFtZS5jX3N0cigpKTsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcga05hbWUgPSAiZW5jb2Rlck5hbWUiOworICBzdGF0aXN0aWNzX3Byb3h5Xy0+T25FbmNvZGVy
SW1wbGVtZW50YXRpb25DaGFuZ2VkKGtOYW1lKTsKKyAgRVhQRUNUX0VRKGtOYW1lLCBzdGF0aXN0
aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5lbmNvZGVyX2ltcGxlbWVudGF0aW9uX25hbWUpOwogfQog
CiBURVNUX0YoU2VuZFN0YXRpc3RpY3NQcm94eVRlc3QsIFZwOVN2Y0xvd1NwYXRpYWxMYXllckRv
ZXNOb3RVcGRhdGVSZXNvbHV0aW9uKSB7CkBAIC0yMjE5LDcgKzIyMTUsNiBAQCBjbGFzcyBGb3Jj
ZWRGYWxsYmFja1Rlc3QgOiBwdWJsaWMgU2VuZFN0YXRpc3RpY3NQcm94eVRlc3QgewogICAgICAg
OiBTZW5kU3RhdGlzdGljc1Byb3h5VGVzdChmaWVsZF90cmlhbHMpIHsKICAgICBjb2RlY19pbmZv
Xy5jb2RlY1R5cGUgPSBrVmlkZW9Db2RlY1ZQODsKICAgICBjb2RlY19pbmZvXy5jb2RlY1NwZWNp
ZmljLlZQOC50ZW1wb3JhbElkeCA9IDA7Ci0gICAgY29kZWNfaW5mb18uY29kZWNfbmFtZSA9ICJm
YWtlX2NvZGVjIjsKICAgICBlbmNvZGVkX2ltYWdlXy5fZW5jb2RlZFdpZHRoID0ga1dpZHRoOwog
ICAgIGVuY29kZWRfaW1hZ2VfLl9lbmNvZGVkSGVpZ2h0ID0ga0hlaWdodDsKICAgICBlbmNvZGVk
X2ltYWdlXy5TZXRTcGF0aWFsSW5kZXgoMCk7CkBAIC0yMjI5LDYgKzIyMjQsOCBAQCBjbGFzcyBG
b3JjZWRGYWxsYmFja1Rlc3QgOiBwdWJsaWMgU2VuZFN0YXRpc3RpY3NQcm94eVRlc3QgewogCiAg
cHJvdGVjdGVkOgogICB2b2lkIEluc2VydEVuY29kZWRGcmFtZXMoaW50IG51bV9mcmFtZXMsIGlu
dCBpbnRlcnZhbF9tcykgeworICAgIHN0YXRpc3RpY3NfcHJveHlfLT5PbkVuY29kZXJJbXBsZW1l
bnRhdGlvbkNoYW5nZWQoY29kZWNfbmFtZV8pOworCiAgICAgLy8gRmlyc3QgZnJhbWUgaXMgbm90
IHVwZGF0aW5nIHN0YXRzLCBpbnNlcnQgaW5pdGlhbCBmcmFtZS4KICAgICBpZiAoc3RhdGlzdGlj
c19wcm94eV8tPkdldFN0YXRzKCkuZnJhbWVzX2VuY29kZWQgPT0gMCkgewogICAgICAgc3RhdGlz
dGljc19wcm94eV8tPk9uU2VuZEVuY29kZWRJbWFnZShlbmNvZGVkX2ltYWdlXywgJmNvZGVjX2lu
Zm9fKTsKQEAgLTIyNDMsNiArMjI0MCw3IEBAIGNsYXNzIEZvcmNlZEZhbGxiYWNrVGVzdCA6IHB1
YmxpYyBTZW5kU3RhdGlzdGljc1Byb3h5VGVzdCB7CiAKICAgRW5jb2RlZEltYWdlIGVuY29kZWRf
aW1hZ2VfOwogICBDb2RlY1NwZWNpZmljSW5mbyBjb2RlY19pbmZvXzsKKyAgc3RkOjpzdHJpbmcg
Y29kZWNfbmFtZV87CiAgIGNvbnN0IHN0ZDo6c3RyaW5nIGtQcmVmaXggPSAiV2ViUlRDLlZpZGVv
LkVuY29kZXIuRm9yY2VkU3ciOwogICBjb25zdCBpbnQga0ZyYW1lSW50ZXJ2YWxNcyA9IDEwMDA7
CiAgIGNvbnN0IGludCBrTWluRnJhbWVzID0gMjA7ICAvLyBNaW4gcnVuIHRpbWUgMjAgc2VjLgpA
QCAtMjMyMSw3ICsyMzE5LDcgQEAgVEVTVF9GKEZvcmNlZEZhbGxiYWNrRW5hYmxlZCwgRW50ZXJl
ZExvd1Jlc29sdXRpb25Ob3RTZXRJZk5vdExpYnZweCkgewogfQogCiBURVNUX0YoRm9yY2VkRmFs
bGJhY2tFbmFibGVkLCBFbnRlcmVkTG93UmVzb2x1dGlvblNldElmTGlidnB4KSB7Ci0gIGNvZGVj
X2luZm9fLmNvZGVjX25hbWUgPSAibGlidnB4IjsKKyAgY29kZWNfbmFtZV8gPSAibGlidnB4IjsK
ICAgSW5zZXJ0RW5jb2RlZEZyYW1lcygxLCBrRnJhbWVJbnRlcnZhbE1zKTsKICAgRVhQRUNUX1RS
VUUoc3RhdGlzdGljc19wcm94eV8tPkdldFN0YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRp
b24pOwogfQpAQCAtMjMzMyw3ICsyMzMxLDcgQEAgVEVTVF9GKEZvcmNlZEZhbGxiYWNrRGlzYWJs
ZWQsIEVudGVyZWRMb3dSZXNvbHV0aW9uTm90U2V0SWZBYm92ZU1heFBpeGVscykgewogfQogCiBU
RVNUX0YoRm9yY2VkRmFsbGJhY2tEaXNhYmxlZCwgRW50ZXJlZExvd1Jlc29sdXRpb25Ob3RTZXRJ
ZkxpYnZweCkgewotICBjb2RlY19pbmZvXy5jb2RlY19uYW1lID0gImxpYnZweCI7CisgIGNvZGVj
X25hbWVfID0gImxpYnZweCI7CiAgIEluc2VydEVuY29kZWRGcmFtZXMoMSwga0ZyYW1lSW50ZXJ2
YWxNcyk7CiAgIEVYUEVDVF9GQUxTRShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNf
ZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7CiB9CkBAIC0yMzUxLDcgKzIzNDksNyBAQCBURVNUX0Yo
Rm9yY2VkRmFsbGJhY2tFbmFibGVkLCBPbmVGYWxsYmFja0V2ZW50KSB7CiAgIEVYUEVDVF9GQUxT
RShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1dGlv
bik7CiAgIEluc2VydEVuY29kZWRGcmFtZXMoMTUsIDEwMDApOwogICBFWFBFQ1RfRkFMU0Uoc3Rh
dGlzdGljc19wcm94eV8tPkdldFN0YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwot
ICBjb2RlY19pbmZvXy5jb2RlY19uYW1lID0gImxpYnZweCI7CisgIGNvZGVjX25hbWVfID0gImxp
YnZweCI7CiAgIEluc2VydEVuY29kZWRGcmFtZXMoNSwgMTAwMCk7CiAgIEVYUEVDVF9UUlVFKHN0
YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygpLmhhc19lbnRlcmVkX2xvd19yZXNvbHV0aW9uKTsK
IApAQCAtMjM2OSwxOCArMjM2NywxOCBAQCBURVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFibGVkLCBU
aHJlZUZhbGxiYWNrRXZlbnRzKSB7CiAgIC8vIFRocmVlIGNoYW5nZXMuIFZpZGVvOiA2MDAwMCBt
cywgZmFsbGJhY2s6IDE1MDAwIG1zICgyNSUpLgogICBJbnNlcnRFbmNvZGVkRnJhbWVzKDEwLCAx
MDAwKTsKICAgRVhQRUNUX0ZBTFNFKHN0YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygpLmhhc19l
bnRlcmVkX2xvd19yZXNvbHV0aW9uKTsKLSAgY29kZWNfaW5mb18uY29kZWNfbmFtZSA9ICJsaWJ2
cHgiOworICBjb2RlY19uYW1lXyA9ICJsaWJ2cHgiOwogICBJbnNlcnRFbmNvZGVkRnJhbWVzKDE1
LCA1MDApOwogICBFWFBFQ1RfVFJVRShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNf
ZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7Ci0gIGNvZGVjX2luZm9fLmNvZGVjX25hbWUgPSAibm90
bGlidnB4IjsKKyAgY29kZWNfbmFtZV8gPSAibm90bGlidnB4IjsKICAgSW5zZXJ0RW5jb2RlZEZy
YW1lcygyMCwgMTAwMCk7CiAgIEluc2VydEVuY29kZWRGcmFtZXMoMywga01heEZyYW1lRGlmZk1z
KTsgIC8vIFNob3VsZCBub3QgYmUgaW5jbHVkZWQuCiAgIEluc2VydEVuY29kZWRGcmFtZXMoMTAs
IDEwMDApOwogICBFWFBFQ1RfVFJVRShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3RhdHMoKS5oYXNf
ZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7Ci0gIGNvZGVjX2luZm9fLmNvZGVjX25hbWUgPSAibm90
bGlidnB4MiI7CisgIGNvZGVjX25hbWVfID0gIm5vdGxpYnZweDIiOwogICBJbnNlcnRFbmNvZGVk
RnJhbWVzKDEwLCA1MDApOwogICBFWFBFQ1RfVFJVRShzdGF0aXN0aWNzX3Byb3h5Xy0+R2V0U3Rh
dHMoKS5oYXNfZW50ZXJlZF9sb3dfcmVzb2x1dGlvbik7Ci0gIGNvZGVjX2luZm9fLmNvZGVjX25h
bWUgPSAibGlidnB4IjsKKyAgY29kZWNfbmFtZV8gPSAibGlidnB4IjsKICAgSW5zZXJ0RW5jb2Rl
ZEZyYW1lcygxNSwgNTAwKTsKICAgRVhQRUNUX1RSVUUoc3RhdGlzdGljc19wcm94eV8tPkdldFN0
YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwogCkBAIC0yMzkzLDcgKzIzOTEsNyBA
QCBURVNUX0YoRm9yY2VkRmFsbGJhY2tFbmFibGVkLCBUaHJlZUZhbGxiYWNrRXZlbnRzKSB7CiAK
IFRFU1RfRihGb3JjZWRGYWxsYmFja0VuYWJsZWQsIE5vRmFsbGJhY2tJZkFib3ZlTWF4UGl4ZWxz
KSB7CiAgIGVuY29kZWRfaW1hZ2VfLl9lbmNvZGVkV2lkdGggPSBrV2lkdGggKyAxOwotICBjb2Rl
Y19pbmZvXy5jb2RlY19uYW1lID0gImxpYnZweCI7CisgIGNvZGVjX25hbWVfID0gImxpYnZweCI7
CiAgIEluc2VydEVuY29kZWRGcmFtZXMoa01pbkZyYW1lcywga0ZyYW1lSW50ZXJ2YWxNcyk7CiAK
ICAgRVhQRUNUX0ZBTFNFKHN0YXRpc3RpY3NfcHJveHlfLT5HZXRTdGF0cygpLmhhc19lbnRlcmVk
X2xvd19yZXNvbHV0aW9uKTsKQEAgLTI0MDQsNyArMjQwMiw3IEBAIFRFU1RfRihGb3JjZWRGYWxs
YmFja0VuYWJsZWQsIE5vRmFsbGJhY2tJZkFib3ZlTWF4UGl4ZWxzKSB7CiAKIFRFU1RfRihGb3Jj
ZWRGYWxsYmFja0VuYWJsZWQsIEZhbGxiYWNrSWZBdE1heFBpeGVscykgewogICBlbmNvZGVkX2lt
YWdlXy5fZW5jb2RlZFdpZHRoID0ga1dpZHRoOwotICBjb2RlY19pbmZvXy5jb2RlY19uYW1lID0g
ImxpYnZweCI7CisgIGNvZGVjX25hbWVfID0gImxpYnZweCI7CiAgIEluc2VydEVuY29kZWRGcmFt
ZXMoa01pbkZyYW1lcywga0ZyYW1lSW50ZXJ2YWxNcyk7CiAKICAgRVhQRUNUX1RSVUUoc3RhdGlz
dGljc19wcm94eV8tPkdldFN0YXRzKCkuaGFzX2VudGVyZWRfbG93X3Jlc29sdXRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
c3ZfbG9vcGJhY2suY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby9zdl9sb29wYmFjay5jYwppbmRleCBmZDcyYzk5OTEyNGQxNTVhNWU0MDRhOWQ2YzIy
NjI0MTQ5MTE4ZDFiLi4xZmY0OTU2Y2EyOTUwY2ViZjE3OTcyMzA0NGQ5YWVkMTAwM2M5NWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by9zdl9sb29wYmFjay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby9zdl9sb29wYmFjay5jYwpAQCAtMTIsNyArMTIsNiBAQAogCiAjaW5jbHVk
ZSAicnRjX2Jhc2UvZmxhZ3MuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCi0jaW5j
bHVkZSAicnRjX2Jhc2Uvc3RyaW5nZW5jb2RlLmgiCiAjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJz
L2luY2x1ZGUvZmllbGRfdHJpYWwuaCIKICNpbmNsdWRlICJ0ZXN0L2ZpZWxkX3RyaWFsLmgiCiAj
aW5jbHVkZSAidGVzdC9ndGVzdC5oIgpAQCAtMzQsNzMgKzMzLDc5IEBAIEludGVyTGF5ZXJQcmVk
TW9kZSBJbnRUb0ludGVyTGF5ZXJQcmVkTW9kZShpbnQgaW50ZXJfbGF5ZXJfcHJlZCkgewogfQog
CiAvLyBGbGFncyBmb3IgdmlkZW8uCi1ERUZJTkVfaW50KHZ3aWR0aCwgNjQwLCAiVmlkZW8gd2lk
dGguIik7CitXRUJSVENfREVGSU5FX2ludCh2d2lkdGgsIDY0MCwgIlZpZGVvIHdpZHRoLiIpOwog
c2l6ZV90IFZpZGVvV2lkdGgoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdf
dndpZHRoKTsKIH0KIAotREVGSU5FX2ludCh2aGVpZ2h0LCA0ODAsICJWaWRlbyBoZWlnaHQuIik7
CitXRUJSVENfREVGSU5FX2ludCh2aGVpZ2h0LCA0ODAsICJWaWRlbyBoZWlnaHQuIik7CiBzaXpl
X3QgVmlkZW9IZWlnaHQoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdfdmhl
aWdodCk7CiB9CiAKLURFRklORV9pbnQodmZwcywgMzAsICJWaWRlbyBmcmFtZXMgcGVyIHNlY29u
ZC4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZmcHMsIDMwLCAiVmlkZW8gZnJhbWVzIHBlciBzZWNv
bmQuIik7CiBpbnQgVmlkZW9GcHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdf
dmZwcyk7CiB9CiAKLURFRklORV9pbnQoY2FwdHVyZV9kZXZpY2VfaW5kZXgsCi0gICAgICAgICAg
IDAsCi0gICAgICAgICAgICJDYXB0dXJlIGRldmljZSB0byBzZWxlY3QgZm9yIHZpZGVvIHN0cmVh
bSIpOworV0VCUlRDX0RFRklORV9pbnQoY2FwdHVyZV9kZXZpY2VfaW5kZXgsCisgICAgICAgICAg
ICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIkNhcHR1cmUgZGV2aWNlIHRvIHNlbGVjdCBm
b3IgdmlkZW8gc3RyZWFtIik7CiBzaXplX3QgR2V0Q2FwdHVyZURldmljZSgpIHsKICAgcmV0dXJu
IHN0YXRpY19jYXN0PHNpemVfdD4oRkxBR19jYXB0dXJlX2RldmljZV9pbmRleCk7CiB9CiAKLURF
RklORV9pbnQodnRhcmdldF9iaXRyYXRlLCA0MDAsICJWaWRlbyBzdHJlYW0gdGFyZ2V0IGJpdHJh
dGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZ0YXJnZXRfYml0cmF0ZSwgNDAwLCAi
VmlkZW8gc3RyZWFtIHRhcmdldCBiaXRyYXRlIGluIGticHMuIik7CiBpbnQgVmlkZW9UYXJnZXRC
aXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR192dGFyZ2V0X2Jp
dHJhdGUpOwogfQogCi1ERUZJTkVfaW50KHZtaW5fYml0cmF0ZSwgMTAwLCAiVmlkZW8gc3RyZWFt
IG1pbiBiaXRyYXRlIGluIGticHMuIik7CitXRUJSVENfREVGSU5FX2ludCh2bWluX2JpdHJhdGUs
IDEwMCwgIlZpZGVvIHN0cmVhbSBtaW4gYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IFZpZGVvTWlu
Qml0cmF0ZUticHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfdm1pbl9iaXRy
YXRlKTsKIH0KIAotREVGSU5FX2ludCh2bWF4X2JpdHJhdGUsIDIwMDAsICJWaWRlbyBzdHJlYW0g
bWF4IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZtYXhfYml0cmF0ZSwg
MjAwMCwgIlZpZGVvIHN0cmVhbSBtYXggYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IFZpZGVvTWF4
Qml0cmF0ZUticHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfdm1heF9iaXRy
YXRlKTsKIH0KIAotREVGSU5FX2Jvb2woc3VzcGVuZF9iZWxvd19taW5fYml0cmF0ZSwKLSAgICAg
ICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlN1c3BlbmRzIHZpZGVvIGJlbG93IHRoZSBjb25m
aWd1cmVkIG1pbiBiaXRyYXRlLiIpOworV0VCUlRDX0RFRklORV9ib29sKHN1c3BlbmRfYmVsb3df
bWluX2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgIlN1c3BlbmRzIHZpZGVvIGJlbG93IHRoZSBjb25maWd1cmVkIG1pbiBiaXRyYXRlLiIpOwog
Ci1ERUZJTkVfaW50KHZudW1fdGVtcG9yYWxfbGF5ZXJzLAotICAgICAgICAgICAxLAotICAgICAg
ICAgICAiTnVtYmVyIG9mIHRlbXBvcmFsIGxheWVycyBmb3IgdmlkZW8uIFNldCB0byAxLTQgdG8g
b3ZlcnJpZGUuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICB2bnVtX3RlbXBvcmFsX2xheWVy
cywKKyAgICAxLAorICAgICJOdW1iZXIgb2YgdGVtcG9yYWwgbGF5ZXJzIGZvciB2aWRlby4gU2V0
IHRvIDEtNCB0byBvdmVycmlkZS4iKTsKIGludCBWaWRlb051bVRlbXBvcmFsTGF5ZXJzKCkgewog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3ZudW1fdGVtcG9yYWxfbGF5ZXJzKTsKIH0K
IAotREVGSU5FX2ludCh2bnVtX3N0cmVhbXMsIDAsICJOdW1iZXIgb2YgdmlkZW8gc3RyZWFtcyB0
byBzaG93IG9yIGFuYWx5emUuIik7CitXRUJSVENfREVGSU5FX2ludCh2bnVtX3N0cmVhbXMsCisg
ICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiB2aWRlbyBz
dHJlYW1zIHRvIHNob3cgb3IgYW5hbHl6ZS4iKTsKIGludCBWaWRlb051bVN0cmVhbXMoKSB7CiAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfdm51bV9zdHJlYW1zKTsKIH0KIAotREVGSU5F
X2ludCh2bnVtX3NwYXRpYWxfbGF5ZXJzLCAxLCAiTnVtYmVyIG9mIHZpZGVvIHNwYXRpYWwgbGF5
ZXJzIHRvIHVzZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHZudW1fc3BhdGlhbF9sYXllcnMsCisg
ICAgICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiB2aWRlbyBz
cGF0aWFsIGxheWVycyB0byB1c2UuIik7CiBpbnQgVmlkZW9OdW1TcGF0aWFsTGF5ZXJzKCkgewog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3ZudW1fc3BhdGlhbF9sYXllcnMpOwogfQog
Ci1ERUZJTkVfaW50KHZpbnRlcl9sYXllcl9wcmVkLAotICAgICAgICAgICAyLAotICAgICAgICAg
ICAiVmlkZW8gaW50ZXItbGF5ZXIgcHJlZGljdGlvbiBtb2RlLiAiCi0gICAgICAgICAgICIwIC0g
ZW5hYmxlZCwgMSAtIGRpc2FibGVkLCAyIC0gZW5hYmxlZCBvbmx5IGZvciBrZXkgcGljdHVyZXMu
Iik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICB2aW50ZXJfbGF5ZXJfcHJlZCwKKyAgICAyLAor
ICAgICJWaWRlbyBpbnRlci1sYXllciBwcmVkaWN0aW9uIG1vZGUuICIKKyAgICAiMCAtIGVuYWJs
ZWQsIDEgLSBkaXNhYmxlZCwgMiAtIGVuYWJsZWQgb25seSBmb3Iga2V5IHBpY3R1cmVzLiIpOwog
SW50ZXJMYXllclByZWRNb2RlIFZpZGVvSW50ZXJMYXllclByZWQoKSB7CiAgIHJldHVybiBJbnRU
b0ludGVyTGF5ZXJQcmVkTW9kZShGTEFHX3ZpbnRlcl9sYXllcl9wcmVkKTsKIH0KIAotREVGSU5F
X3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAgIHZzdHJlYW0wLAogICAgICIiLAog
ICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHZp
ZGVvIHN0cmVhbSAjMC4iKTsKQEAgLTEwOCw3ICsxMTMsNyBAQCBzdGQ6OnN0cmluZyBWaWRlb1N0
cmVhbTAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR192c3RyZWFt
MCk7CiB9CiAKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICB2c3Ry
ZWFtMSwKICAgICAiIiwKICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFZp
ZGVvU3RyZWFtIGZvciB2aWRlbyBzdHJlYW0gIzEuIik7CkBAIC0xMTYsNyArMTIxLDcgQEAgc3Rk
OjpzdHJpbmcgVmlkZW9TdHJlYW0xKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJp
bmc+KEZMQUdfdnN0cmVhbTEpOwogfQogCi1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9z
dHJpbmcoCiAgICAgdnNsMCwKICAgICAiIiwKICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBk
ZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3IgdmlkZW8gbGF5ZXIgIzAuIik7CkBAIC0xMjQsNyAr
MTI5LDcgQEAgc3RkOjpzdHJpbmcgVmlkZW9TTDAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxz
dGQ6OnN0cmluZz4oRkxBR192c2wwKTsKIH0KIAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJ
TkVfc3RyaW5nKAogICAgIHZzbDEsCiAgICAgIiIsCiAgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1
ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIHZpZGVvIGxheWVyICMxLiIpOwpAQCAtMTMy
LDk4ICsxMzcsMTA1IEBAIHN0ZDo6c3RyaW5nIFZpZGVvU0wxKCkgewogICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfdnNsMSk7CiB9CiAKLURFRklORV9pbnQodnNlbGVjdGVk
X3RsLAotICAgICAgICAgICAtMSwKLSAgICAgICAgICAgIlRlbXBvcmFsIGxheWVyIHRvIHNob3cg
b3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUuIC0xIHRvIGRpc2FibGUgIgotICAgICAgICAgICAi
ZmlsdGVyaW5nLiIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgdnNlbGVjdGVkX3RsLAorICAg
IC0xLAorICAgICJUZW1wb3JhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNo
YXJlLiAtMSB0byBkaXNhYmxlICIKKyAgICAiZmlsdGVyaW5nLiIpOwogaW50IFZpZGVvU2VsZWN0
ZWRUTCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR192c2VsZWN0ZWRfdGwpOwog
fQogCi1ERUZJTkVfaW50KHZzZWxlY3RlZF9zdHJlYW0sCi0gICAgICAgICAgIDAsCi0gICAgICAg
ICAgICJJRCBvZiB0aGUgc3RyZWFtIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUu
IgotICAgICAgICAgICAiU2V0IHRvIHRoZSBudW1iZXIgb2Ygc3RyZWFtcyB0byBzaG93IHRoZW0g
YWxsLiIpOworV0VCUlRDX0RFRklORV9pbnQodnNlbGVjdGVkX3N0cmVhbSwKKyAgICAgICAgICAg
ICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiSUQgb2YgdGhlIHN0cmVhbSB0byBzaG93IG9y
IGFuYWx5emUgZm9yIHNjcmVlbnNoYXJlLiIKKyAgICAgICAgICAgICAgICAgICJTZXQgdG8gdGhl
IG51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cgdGhlbSBhbGwuIik7CiBpbnQgVmlkZW9TZWxlY3Rl
ZFN0cmVhbSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR192c2VsZWN0ZWRfc3Ry
ZWFtKTsKIH0KIAotREVGSU5FX2ludCh2c2VsZWN0ZWRfc2wsCi0gICAgICAgICAgIC0xLAotICAg
ICAgICAgICAiU3BhdGlhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNoYXJl
LiAtMSB0byBkaXNhYmxlICIKLSAgICAgICAgICAgImZpbHRlcmluZy4iKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KAorICAgIHZzZWxlY3RlZF9zbCwKKyAgICAtMSwKKyAgICAiU3BhdGlhbCBsYXllciB0
byBzaG93IG9yIGFuYWx5emUgZm9yIHNjcmVlbnNoYXJlLiAtMSB0byBkaXNhYmxlICIKKyAgICAi
ZmlsdGVyaW5nLiIpOwogaW50IFZpZGVvU2VsZWN0ZWRTTCgpIHsKICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oRkxBR192c2VsZWN0ZWRfc2wpOwogfQogCiAvLyBGbGFncyBmb3Igc2NyZWVuc2hh
cmUuCi1ERUZJTkVfaW50KG1pbl90cmFuc21pdF9iaXRyYXRlLAotICAgICAgICAgICA0MDAsCi0g
ICAgICAgICAgICJNaW4gdHJhbnNtaXQgYml0cmF0ZSBpbmNsLiBwYWRkaW5nIGZvciBzY3JlZW5z
aGFyZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KG1pbl90cmFuc21pdF9iaXRyYXRlLAorICAgICAg
ICAgICAgICAgICAgNDAwLAorICAgICAgICAgICAgICAgICAgIk1pbiB0cmFuc21pdCBiaXRyYXRl
IGluY2wuIHBhZGRpbmcgZm9yIHNjcmVlbnNoYXJlLiIpOwogaW50IFNjcmVlbnNoYXJlTWluVHJh
bnNtaXRCaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIEZMQUdfbWluX3RyYW5zbWl0X2JpdHJhdGU7
CiB9CiAKLURFRklORV9pbnQoc3dpZHRoLCAxODUwLCAiU2NyZWVuc2hhcmUgd2lkdGggKGNyb3Bz
IHNvdXJjZSkuIik7CitXRUJSVENfREVGSU5FX2ludChzd2lkdGgsIDE4NTAsICJTY3JlZW5zaGFy
ZSB3aWR0aCAoY3JvcHMgc291cmNlKS4iKTsKIHNpemVfdCBTY3JlZW5zaGFyZVdpZHRoKCkgewog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihGTEFHX3N3aWR0aCk7CiB9CiAKLURFRklORV9p
bnQoc2hlaWdodCwgMTExMCwgIlNjcmVlbnNoYXJlIGhlaWdodCAoY3JvcHMgc291cmNlKS4iKTsK
K1dFQlJUQ19ERUZJTkVfaW50KHNoZWlnaHQsIDExMTAsICJTY3JlZW5zaGFyZSBoZWlnaHQgKGNy
b3BzIHNvdXJjZSkuIik7CiBzaXplX3QgU2NyZWVuc2hhcmVIZWlnaHQoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdfc2hlaWdodCk7CiB9CiAKLURFRklORV9pbnQoc2Zwcywg
NSwgIkZyYW1lcyBwZXIgc2Vjb25kIGZvciBzY3JlZW5zaGFyZS4iKTsKK1dFQlJUQ19ERUZJTkVf
aW50KHNmcHMsIDUsICJGcmFtZXMgcGVyIHNlY29uZCBmb3Igc2NyZWVuc2hhcmUuIik7CiBpbnQg
U2NyZWVuc2hhcmVGcHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2Zwcyk7
CiB9CiAKLURFRklORV9pbnQoc3RhcmdldF9iaXRyYXRlLCAxMDAsICJTY3JlZW5zaGFyZSBzdHJl
YW0gdGFyZ2V0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHN0YXJnZXRf
Yml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgIDEwMCwKKyAgICAgICAgICAgICAgICAgICJTY3Jl
ZW5zaGFyZSBzdHJlYW0gdGFyZ2V0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBTY3JlZW5zaGFy
ZVRhcmdldEJpdHJhdGVLYnBzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3N0
YXJnZXRfYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQoc21pbl9iaXRyYXRlLCAxMDAsICJTY3Jl
ZW5zaGFyZSBzdHJlYW0gbWluIGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50
KHNtaW5fYml0cmF0ZSwgMTAwLCAiU2NyZWVuc2hhcmUgc3RyZWFtIG1pbiBiaXRyYXRlIGluIGti
cHMuIik7CiBpbnQgU2NyZWVuc2hhcmVNaW5CaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4oRkxBR19zbWluX2JpdHJhdGUpOwogfQogCi1ERUZJTkVfaW50KHNtYXhfYml0
cmF0ZSwgMjAwMCwgIlNjcmVlbnNoYXJlIHN0cmVhbSBtYXggYml0cmF0ZSBpbiBrYnBzLiIpOwor
V0VCUlRDX0RFRklORV9pbnQoc21heF9iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgMjAwMCwK
KyAgICAgICAgICAgICAgICAgICJTY3JlZW5zaGFyZSBzdHJlYW0gbWF4IGJpdHJhdGUgaW4ga2Jw
cy4iKTsKIGludCBTY3JlZW5zaGFyZU1heEJpdHJhdGVLYnBzKCkgewogICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihGTEFHX3NtYXhfYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQoc251bV90ZW1w
b3JhbF9sYXllcnMsCi0gICAgICAgICAgIDIsCi0gICAgICAgICAgICJOdW1iZXIgb2YgdGVtcG9y
YWwgbGF5ZXJzIHRvIHVzZSBpbiBzY3JlZW5zaGFyZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNu
dW1fdGVtcG9yYWxfbGF5ZXJzLAorICAgICAgICAgICAgICAgICAgMiwKKyAgICAgICAgICAgICAg
ICAgICJOdW1iZXIgb2YgdGVtcG9yYWwgbGF5ZXJzIHRvIHVzZSBpbiBzY3JlZW5zaGFyZS4iKTsK
IGludCBTY3JlZW5zaGFyZU51bVRlbXBvcmFsTGF5ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihGTEFHX3NudW1fdGVtcG9yYWxfbGF5ZXJzKTsKIH0KIAotREVGSU5FX2ludChzbnVt
X3N0cmVhbXMsCi0gICAgICAgICAgIDAsCi0gICAgICAgICAgICJOdW1iZXIgb2Ygc2NyZWVuc2hh
cmUgc3RyZWFtcyB0byBzaG93IG9yIGFuYWx5emUuIik7CitXRUJSVENfREVGSU5FX2ludChzbnVt
X3N0cmVhbXMsCisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgIk51bWJl
ciBvZiBzY3JlZW5zaGFyZSBzdHJlYW1zIHRvIHNob3cgb3IgYW5hbHl6ZS4iKTsKIGludCBTY3Jl
ZW5zaGFyZU51bVN0cmVhbXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc251
bV9zdHJlYW1zKTsKIH0KIAotREVGSU5FX2ludChzbnVtX3NwYXRpYWxfbGF5ZXJzLAotICAgICAg
ICAgICAxLAotICAgICAgICAgICAiTnVtYmVyIG9mIHNjcmVlbnNoYXJlIHNwYXRpYWwgbGF5ZXJz
IHRvIHVzZS4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNudW1fc3BhdGlhbF9sYXllcnMsCisgICAg
ICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiBzY3JlZW5zaGFy
ZSBzcGF0aWFsIGxheWVycyB0byB1c2UuIik7CiBpbnQgU2NyZWVuc2hhcmVOdW1TcGF0aWFsTGF5
ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NudW1fc3BhdGlhbF9sYXll
cnMpOwogfQogCi1ERUZJTkVfaW50KHNpbnRlcl9sYXllcl9wcmVkLAotICAgICAgICAgICAwLAot
ICAgICAgICAgICAiU2NyZWVuc2hhcmUgaW50ZXItbGF5ZXIgcHJlZGljdGlvbiBtb2RlLiAiCi0g
ICAgICAgICAgICIwIC0gZW5hYmxlZCwgMSAtIGRpc2FibGVkLCAyIC0gZW5hYmxlZCBvbmx5IGZv
ciBrZXkgcGljdHVyZXMuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICBzaW50ZXJfbGF5ZXJf
cHJlZCwKKyAgICAwLAorICAgICJTY3JlZW5zaGFyZSBpbnRlci1sYXllciBwcmVkaWN0aW9uIG1v
ZGUuICIKKyAgICAiMCAtIGVuYWJsZWQsIDEgLSBkaXNhYmxlZCwgMiAtIGVuYWJsZWQgb25seSBm
b3Iga2V5IHBpY3R1cmVzLiIpOwogSW50ZXJMYXllclByZWRNb2RlIFNjcmVlbnNoYXJlSW50ZXJM
YXllclByZWQoKSB7CiAgIHJldHVybiBJbnRUb0ludGVyTGF5ZXJQcmVkTW9kZShGTEFHX3NpbnRl
cl9sYXllcl9wcmVkKTsKIH0KIAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5n
KAogICAgIHNzdHJlYW0wLAogICAgICIiLAogICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRl
c2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHNjcmVlbnNoYXJlIHN0cmVhbSAjMC4iKTsKQEAgLTIz
MSw3ICsyNDMsNyBAQCBzdGQ6OnN0cmluZyBTY3JlZW5zaGFyZVN0cmVhbTAoKSB7CiAgIHJldHVy
biBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zc3RyZWFtMCk7CiB9CiAKLURFRklORV9z
dHJpbmcoCitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICBzc3RyZWFtMSwKICAgICAiIiwKICAg
ICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZvciBzY3Jl
ZW5zaGFyZSBzdHJlYW0gIzEuIik7CkBAIC0yMzksNyArMjUxLDcgQEAgc3RkOjpzdHJpbmcgU2Ny
ZWVuc2hhcmVTdHJlYW0xKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZM
QUdfc3N0cmVhbTEpOwogfQogCi1ERUZJTkVfc3RyaW5nKAorV0VCUlRDX0RFRklORV9zdHJpbmco
CiAgICAgc3NsMCwKICAgICAiIiwKICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmli
aW5nIFNwYXRpYWxMYXllciBmb3Igc2NyZWVuc2hhcmUgbGF5ZXIgIzAuIik7CkBAIC0yNDcsNyAr
MjU5LDcgQEAgc3RkOjpzdHJpbmcgU2NyZWVuc2hhcmVTTDAoKSB7CiAgIHJldHVybiBzdGF0aWNf
Y2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zc2wwKTsKIH0KIAotREVGSU5FX3N0cmluZygKK1dFQlJU
Q19ERUZJTkVfc3RyaW5nKAogICAgIHNzbDEsCiAgICAgIiIsCiAgICAgIkNvbW1hIHNlcGFyYXRl
ZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIHNjcmVlbnNoYXJlIGxheWVyICMx
LiIpOwpAQCAtMjU1LDMxICsyNjcsMzMgQEAgc3RkOjpzdHJpbmcgU2NyZWVuc2hhcmVTTDEoKSB7
CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19zc2wxKTsKIH0KIAotREVG
SU5FX2ludChzc2VsZWN0ZWRfdGwsCi0gICAgICAgICAgIC0xLAotICAgICAgICAgICAiVGVtcG9y
YWwgbGF5ZXIgdG8gc2hvdyBvciBhbmFseXplIGZvciBzY3JlZW5zaGFyZS4gLTEgdG8gZGlzYWJs
ZSAiCi0gICAgICAgICAgICJmaWx0ZXJpbmcuIik7CitXRUJSVENfREVGSU5FX2ludCgKKyAgICBz
c2VsZWN0ZWRfdGwsCisgICAgLTEsCisgICAgIlRlbXBvcmFsIGxheWVyIHRvIHNob3cgb3IgYW5h
bHl6ZSBmb3Igc2NyZWVuc2hhcmUuIC0xIHRvIGRpc2FibGUgIgorICAgICJmaWx0ZXJpbmcuIik7
CiBpbnQgU2NyZWVuc2hhcmVTZWxlY3RlZFRMKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihGTEFHX3NzZWxlY3RlZF90bCk7CiB9CiAKLURFRklORV9pbnQoc3NlbGVjdGVkX3N0cmVhbSwK
LSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIklEIG9mIHRoZSBzdHJlYW0gdG8gc2hvdyBvciBh
bmFseXplIGZvciBzY3JlZW5zaGFyZS4iCi0gICAgICAgICAgICJTZXQgdG8gdGhlIG51bWJlciBv
ZiBzdHJlYW1zIHRvIHNob3cgdGhlbSBhbGwuIik7CitXRUJSVENfREVGSU5FX2ludChzc2VsZWN0
ZWRfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJJRCBv
ZiB0aGUgc3RyZWFtIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUuIgorICAgICAg
ICAgICAgICAgICAgIlNldCB0byB0aGUgbnVtYmVyIG9mIHN0cmVhbXMgdG8gc2hvdyB0aGVtIGFs
bC4iKTsKIGludCBTY3JlZW5zaGFyZVNlbGVjdGVkU3RyZWFtKCkgewogICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihGTEFHX3NzZWxlY3RlZF9zdHJlYW0pOwogfQogCi1ERUZJTkVfaW50KHNzZWxl
Y3RlZF9zbCwKLSAgICAgICAgICAgLTEsCi0gICAgICAgICAgICJTcGF0aWFsIGxheWVyIHRvIHNo
b3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVuc2hhcmUuIC0xIHRvIGRpc2FibGUgIgotICAgICAgICAg
ICAiZmlsdGVyaW5nLiIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgc3NlbGVjdGVkX3NsLAor
ICAgIC0xLAorICAgICJTcGF0aWFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZSBmb3Igc2NyZWVu
c2hhcmUuIC0xIHRvIGRpc2FibGUgIgorICAgICJmaWx0ZXJpbmcuIik7CiBpbnQgU2NyZWVuc2hh
cmVTZWxlY3RlZFNMKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3NzZWxlY3Rl
ZF9zbCk7CiB9CiAKLURFRklORV9ib29sKAorV0VCUlRDX0RFRklORV9ib29sKAogICAgIGdlbmVy
YXRlX3NsaWRlcywKICAgICBmYWxzZSwKICAgICAiV2hldGhlciB0byB1c2UgcmFuZG9tbHkgZ2Vu
ZXJhdGVkIHNsaWRlcyBvciByZWFkIHRoZW0gZnJvbSBmaWxlcy4iKTsKQEAgLTI4NywxNCArMzAx
LDE0IEBAIGJvb2wgR2VuZXJhdGVTbGlkZXMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KEZMQUdfZ2VuZXJhdGVfc2xpZGVzKTsKIH0KIAotREVGSU5FX2ludChzbGlkZV9jaGFuZ2VfaW50
ZXJ2YWwsCi0gICAgICAgICAgIDEwLAotICAgICAgICAgICAiSW50ZXJ2YWwgKGluIHNlY29uZHMp
IGJldHdlZW4gc2ltdWxhdGVkIHNsaWRlIGNoYW5nZXMuIik7CitXRUJSVENfREVGSU5FX2ludChz
bGlkZV9jaGFuZ2VfaW50ZXJ2YWwsCisgICAgICAgICAgICAgICAgICAxMCwKKyAgICAgICAgICAg
ICAgICAgICJJbnRlcnZhbCAoaW4gc2Vjb25kcykgYmV0d2VlbiBzaW11bGF0ZWQgc2xpZGUgY2hh
bmdlcy4iKTsKIGludCBTbGlkZUNoYW5nZUludGVydmFsKCkgewogICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihGTEFHX3NsaWRlX2NoYW5nZV9pbnRlcnZhbCk7CiB9CiAKLURFRklORV9pbnQoCitX
RUJSVENfREVGSU5FX2ludCgKICAgICBzY3JvbGxfZHVyYXRpb24sCiAgICAgMCwKICAgICAiRHVy
YXRpb24gKGluIHNlY29uZHMpIGR1cmluZyB3aGljaCBhIHNsaWRlIHdpbGwgYmUgc2Nyb2xsZWQg
aW50byBwbGFjZS4iKTsKQEAgLTMwMiw5ICszMTYsMTAgQEAgaW50IFNjcm9sbER1cmF0aW9uKCkg
ewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3Njcm9sbF9kdXJhdGlvbik7CiB9CiAK
LURFRklORV9zdHJpbmcoc2xpZGVzLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAg
IkNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICoueXV2IGZpbGVzIHRvIGRpc3BsYXkgYXMgc2xpZGVz
LiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgc2xpZGVzLAorICAgICIiLAorICAgICJD
b21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAqLnl1diBmaWxlcyB0byBkaXNwbGF5IGFzIHNsaWRlcy4i
KTsKIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBTbGlkZXMoKSB7CiAgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiBzbGlkZXM7CiAgIHN0ZDo6c3RyaW5nIHNsaWRlc19saXN0ID0gRkxBR19zbGlk
ZXM7CkBAIC0zMTMsMzEgKzMyOCwzMSBAQCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gU2xpZGVz
KCkgewogfQogCiAvLyBGbGFncyBjb21tb24gd2l0aCBzY3JlZW5zaGFyZSBhbmQgdmlkZW8gbG9v
cGJhY2ssIHdpdGggZXF1YWwgZGVmYXVsdCB2YWx1ZXMuCi1ERUZJTkVfaW50KHN0YXJ0X2JpdHJh
dGUsIDYwMCwgIkNhbGwgc3RhcnQgYml0cmF0ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklORV9p
bnQoc3RhcnRfYml0cmF0ZSwgNjAwLCAiQ2FsbCBzdGFydCBiaXRyYXRlIGluIGticHMuIik7CiBp
bnQgU3RhcnRCaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19z
dGFydF9iaXRyYXRlKTsKIH0KIAotREVGSU5FX3N0cmluZyhjb2RlYywgIlZQOCIsICJWaWRlbyBj
b2RlYyB0byB1c2UuIik7CitXRUJSVENfREVGSU5FX3N0cmluZyhjb2RlYywgIlZQOCIsICJWaWRl
byBjb2RlYyB0byB1c2UuIik7CiBzdGQ6OnN0cmluZyBDb2RlYygpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX2NvZGVjKTsKIH0KIAotREVGSU5FX2Jvb2woYW5hbHl6
ZV92aWRlbywKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIkFuYWx5emUgdmlkZW8g
c3RyZWFtIChpZiAtLWR1cmF0aW9uIGlzIHByZXNlbnQpIik7CitXRUJSVENfREVGSU5FX2Jvb2wo
YW5hbHl6ZV92aWRlbywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAiQW5hbHl6ZSB2aWRlbyBzdHJlYW0gKGlmIC0tZHVyYXRpb24gaXMgcHJlc2VudCkiKTsK
IGJvb2wgQW5hbHl6ZVZpZGVvKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oRkxBR19h
bmFseXplX3ZpZGVvKTsKIH0KIAotREVGSU5FX2Jvb2woYW5hbHl6ZV9zY3JlZW5zaGFyZSwKLSAg
ICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIkFuYWx5emUgc2NyZWVuc2hhcmUgc3RyZWFt
IChpZiAtLWR1cmF0aW9uIGlzIHByZXNlbnQpIik7CitXRUJSVENfREVGSU5FX2Jvb2woYW5hbHl6
ZV9zY3JlZW5zaGFyZSwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAiQW5hbHl6ZSBzY3JlZW5zaGFyZSBzdHJlYW0gKGlmIC0tZHVyYXRpb24gaXMgcHJlc2Vu
dCkiKTsKIGJvb2wgQW5hbHl6ZVNjcmVlbnNoYXJlKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8
Ym9vbD4oRkxBR19hbmFseXplX3NjcmVlbnNoYXJlKTsKIH0KIAotREVGSU5FX2ludCgKK1dFQlJU
Q19ERUZJTkVfaW50KAogICAgIGR1cmF0aW9uLAogICAgIDAsCiAgICAgIkR1cmF0aW9uIG9mIHRo
ZSB0ZXN0IGluIHNlY29uZHMuIElmIDAsIHJlbmRlcmVkIHdpbGwgYmUgc2hvd24gaW5zdGVhZC4i
KTsKQEAgLTM0NSwxMDAgKzM2MCwxMTMgQEAgaW50IER1cmF0aW9uU2VjcygpIHsKICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oRkxBR19kdXJhdGlvbik7CiB9CiAKLURFRklORV9zdHJpbmcob3V0
cHV0X2ZpbGVuYW1lLCAiIiwgIlRhcmdldCBncmFwaCBkYXRhIGZpbGVuYW1lLiIpOworV0VCUlRD
X0RFRklORV9zdHJpbmcob3V0cHV0X2ZpbGVuYW1lLCAiIiwgIlRhcmdldCBncmFwaCBkYXRhIGZp
bGVuYW1lLiIpOwogc3RkOjpzdHJpbmcgT3V0cHV0RmlsZW5hbWUoKSB7CiAgIHJldHVybiBzdGF0
aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19vdXRwdXRfZmlsZW5hbWUpOwogfQogCi1ERUZJTkVf
c3RyaW5nKGdyYXBoX3RpdGxlLAotICAgICAgICAgICAgICAiIiwKLSAgICAgICAgICAgICAgIklm
IGVtcHR5LCB0aXRsZSB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LiIpOworV0VCUlRD
X0RFRklORV9zdHJpbmcoZ3JhcGhfdGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAiIiwKKyAg
ICAgICAgICAgICAgICAgICAgICJJZiBlbXB0eSwgdGl0bGUgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0
b21hdGljYWxseS4iKTsKIHN0ZDo6c3RyaW5nIEdyYXBoVGl0bGUoKSB7CiAgIHJldHVybiBzdGF0
aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR19ncmFwaF90aXRsZSk7CiB9CiAKLURFRklORV9pbnQo
bG9zc19wZXJjZW50LCAwLCAiUGVyY2VudGFnZSBvZiBwYWNrZXRzIHJhbmRvbWx5IGxvc3QuIik7
CitXRUJSVENfREVGSU5FX2ludChsb3NzX3BlcmNlbnQsIDAsICJQZXJjZW50YWdlIG9mIHBhY2tl
dHMgcmFuZG9tbHkgbG9zdC4iKTsKIGludCBMb3NzUGVyY2VudCgpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4oRkxBR19sb3NzX3BlcmNlbnQpOwogfQogCi1ERUZJTkVfaW50KGF2Z19idXJz
dF9sb3NzX2xlbmd0aCwgLTEsICJBdmVyYWdlIGJ1cnN0IGxlbmd0aCBvZiBsb3N0IHBhY2tldHMu
Iik7CitXRUJSVENfREVGSU5FX2ludChhdmdfYnVyc3RfbG9zc19sZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICJBdmVyYWdlIGJ1cnN0IGxlbmd0aCBvZiBs
b3N0IHBhY2tldHMuIik7CiBpbnQgQXZnQnVyc3RMb3NzTGVuZ3RoKCkgewogICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihGTEFHX2F2Z19idXJzdF9sb3NzX2xlbmd0aCk7CiB9CiAKLURFRklORV9p
bnQobGlua19jYXBhY2l0eSwKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAgIkNhcGFjaXR5IChr
YnBzKSBvZiB0aGUgZmFrZSBsaW5rLiAwIG1lYW5zIGluZmluaXRlLiIpOworV0VCUlRDX0RFRklO
RV9pbnQobGlua19jYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAg
ICAgICAiQ2FwYWNpdHkgKGticHMpIG9mIHRoZSBmYWtlIGxpbmsuIDAgbWVhbnMgaW5maW5pdGUu
Iik7CiBpbnQgTGlua0NhcGFjaXR5S2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
RkxBR19saW5rX2NhcGFjaXR5KTsKIH0KIAotREVGSU5FX2ludChxdWV1ZV9zaXplLCAwLCAiU2l6
ZSBvZiB0aGUgYm90dGxlbmVjayBsaW5rIHF1ZXVlIGluIHBhY2tldHMuIik7CitXRUJSVENfREVG
SU5FX2ludChxdWV1ZV9zaXplLAorICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAg
ICAgICJTaXplIG9mIHRoZSBib3R0bGVuZWNrIGxpbmsgcXVldWUgaW4gcGFja2V0cy4iKTsKIGlu
dCBRdWV1ZVNpemUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfcXVldWVfc2l6
ZSk7CiB9CiAKLURFRklORV9pbnQoYXZnX3Byb3BhZ2F0aW9uX2RlbGF5X21zLAotICAgICAgICAg
ICAwLAotICAgICAgICAgICAiQXZlcmFnZSBsaW5rIHByb3BhZ2F0aW9uIGRlbGF5IGluIG1zLiIp
OworV0VCUlRDX0RFRklORV9pbnQoYXZnX3Byb3BhZ2F0aW9uX2RlbGF5X21zLAorICAgICAgICAg
ICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICJBdmVyYWdlIGxpbmsgcHJvcGFnYXRpb24g
ZGVsYXkgaW4gbXMuIik7CiBpbnQgQXZnUHJvcGFnYXRpb25EZWxheU1zKCkgewogICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihGTEFHX2F2Z19wcm9wYWdhdGlvbl9kZWxheV9tcyk7CiB9CiAKLURF
RklORV9zdHJpbmcocnRjX2V2ZW50X2xvZ19uYW1lLAotICAgICAgICAgICAgICAiIiwKLSAgICAg
ICAgICAgICAgIkZpbGVuYW1lIGZvciBydGMgZXZlbnQgbG9nLiBUd28gZmlsZXMgIgotICAgICAg
ICAgICAgICAid2l0aCBcIl9zZW5kXCIgYW5kIFwiX3JlY3ZcIiBzdWZmaXhlcyB3aWxsIGJlIGNy
ZWF0ZWQuICIKLSAgICAgICAgICAgICAgIldvcmtzIG9ubHkgd2hlbiAtLWR1cmF0aW9uIGlzIHNl
dC4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKHJ0Y19ldmVudF9sb2dfbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBydGMg
ZXZlbnQgbG9nLiBUd28gZmlsZXMgIgorICAgICAgICAgICAgICAgICAgICAgIndpdGggXCJfc2Vu
ZFwiIGFuZCBcIl9yZWN2XCIgc3VmZml4ZXMgd2lsbCBiZSBjcmVhdGVkLiAiCisgICAgICAgICAg
ICAgICAgICAgICAiV29ya3Mgb25seSB3aGVuIC0tZHVyYXRpb24gaXMgc2V0LiIpOwogc3RkOjpz
dHJpbmcgUnRjRXZlbnRMb2dOYW1lKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJp
bmc+KEZMQUdfcnRjX2V2ZW50X2xvZ19uYW1lKTsKIH0KIAotREVGSU5FX3N0cmluZyhydHBfZHVt
cF9uYW1lLCAiIiwgIkZpbGVuYW1lIGZvciBkdW1wZWQgcmVjZWl2ZWQgUlRQIHN0cmVhbS4iKTsK
K1dFQlJUQ19ERUZJTkVfc3RyaW5nKHJ0cF9kdW1wX25hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICJGaWxlbmFtZSBmb3IgZHVtcGVkIHJlY2VpdmVk
IFJUUCBzdHJlYW0uIik7CiBzdGQ6OnN0cmluZyBSdHBEdW1wTmFtZSgpIHsKICAgcmV0dXJuIHN0
YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3J0cF9kdW1wX25hbWUpOwogfQogCi1ERUZJTkVf
aW50KHN0ZF9wcm9wYWdhdGlvbl9kZWxheV9tcywKLSAgICAgICAgICAgMCwKLSAgICAgICAgICAg
IkxpbmsgcHJvcGFnYXRpb24gZGVsYXkgc3RhbmRhcmQgZGV2aWF0aW9uIGluIG1zLiIpOworV0VC
UlRDX0RFRklORV9pbnQoc3RkX3Byb3BhZ2F0aW9uX2RlbGF5X21zLAorICAgICAgICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgICAgICAgICJMaW5rIHByb3BhZ2F0aW9uIGRlbGF5IHN0YW5kYXJk
IGRldmlhdGlvbiBpbiBtcy4iKTsKIGludCBTdGRQcm9wYWdhdGlvbkRlbGF5TXMoKSB7CiAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc3RkX3Byb3BhZ2F0aW9uX2RlbGF5X21zKTsKIH0K
IAotREVGSU5FX3N0cmluZyhlbmNvZGVkX2ZyYW1lX3BhdGgsCi0gICAgICAgICAgICAgICIiLAot
ICAgICAgICAgICAgICAiVGhlIGJhc2UgcGF0aCBmb3IgZW5jb2RlZCBmcmFtZSBsb2dzLiBDcmVh
dGVkIGZpbGVzIHdpbGwgaGF2ZSAiCi0gICAgICAgICAgICAgICJ0aGUgZm9ybSA8ZW5jb2RlZF9m
cmFtZV9wYXRoPi48bj4uKHJlY3Z8c2VuZC48bT4pLml2ZiIpOworV0VCUlRDX0RFRklORV9zdHJp
bmcoCisgICAgZW5jb2RlZF9mcmFtZV9wYXRoLAorICAgICIiLAorICAgICJUaGUgYmFzZSBwYXRo
IGZvciBlbmNvZGVkIGZyYW1lIGxvZ3MuIENyZWF0ZWQgZmlsZXMgd2lsbCBoYXZlICIKKyAgICAi
dGhlIGZvcm0gPGVuY29kZWRfZnJhbWVfcGF0aD4uPG4+LihyZWN2fHNlbmQuPG0+KS5pdmYiKTsK
IHN0ZDo6c3RyaW5nIEVuY29kZWRGcmFtZVBhdGgoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxz
dGQ6OnN0cmluZz4oRkxBR19lbmNvZGVkX2ZyYW1lX3BhdGgpOwogfQogCi1ERUZJTkVfYm9vbChs
b2dzLCBmYWxzZSwgInByaW50IGxvZ3MgdG8gc3RkZXJyIik7CitXRUJSVENfREVGSU5FX2Jvb2wo
bG9ncywgZmFsc2UsICJwcmludCBsb2dzIHRvIHN0ZGVyciIpOwogCi1ERUZJTkVfYm9vbChzZW5k
X3NpZGVfYndlLCB0cnVlLCAiVXNlIHNlbmQtc2lkZSBiYW5kd2lkdGggZXN0aW1hdGlvbiIpOwor
V0VCUlRDX0RFRklORV9ib29sKHNlbmRfc2lkZV9id2UsIHRydWUsICJVc2Ugc2VuZC1zaWRlIGJh
bmR3aWR0aCBlc3RpbWF0aW9uIik7CiAKLURFRklORV9ib29sKGdlbmVyaWNfZGVzY3JpcHRvciwg
ZmFsc2UsICJVc2UgdGhlIGdlbmVyaWMgZnJhbWUgZGVzY3JpcHRvci4iKTsKK1dFQlJUQ19ERUZJ
TkVfYm9vbChnZW5lcmljX2Rlc2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgIlVzZSB0aGUgZ2VuZXJpYyBmcmFtZSBkZXNjcmlwdG9yLiIpOwog
Ci1ERUZJTkVfYm9vbChhbGxvd19yZW9yZGVyaW5nLCBmYWxzZSwgIkFsbG93IHBhY2tldCByZW9y
ZGVyaW5nIHRvIG9jY3VyIik7CitXRUJSVENfREVGSU5FX2Jvb2woYWxsb3dfcmVvcmRlcmluZywg
ZmFsc2UsICJBbGxvdyBwYWNrZXQgcmVvcmRlcmluZyB0byBvY2N1ciIpOwogCi1ERUZJTkVfYm9v
bCh1c2VfdWxwZmVjLCBmYWxzZSwgIlVzZSBSRUQrVUxQRkVDIGZvcndhcmQgZXJyb3IgY29ycmVj
dGlvbi4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCh1c2VfdWxwZmVjLAorICAgICAgICAgICAgICAg
ICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICJVc2UgUkVEK1VMUEZFQyBmb3J3YXJkIGVy
cm9yIGNvcnJlY3Rpb24uIik7CiAKLURFRklORV9ib29sKHVzZV9mbGV4ZmVjLCBmYWxzZSwgIlVz
ZSBGbGV4RkVDIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbi4iKTsKK1dFQlJUQ19ERUZJTkVfYm9v
bCh1c2VfZmxleGZlYywgZmFsc2UsICJVc2UgRmxleEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rp
b24uIik7CiAKLURFRklORV9ib29sKGF1ZGlvLCBmYWxzZSwgIkFkZCBhdWRpbyBzdHJlYW0iKTsK
K1dFQlJUQ19ERUZJTkVfYm9vbChhdWRpbywgZmFsc2UsICJBZGQgYXVkaW8gc3RyZWFtIik7CiAK
LURFRklORV9ib29sKGF1ZGlvX3ZpZGVvX3N5bmMsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAg
ICAgICAgICJTeW5jIGF1ZGlvIGFuZCB2aWRlbyBzdHJlYW0gKG5vIGVmZmVjdCBpZiIKLSAgICAg
ICAgICAgICIgYXVkaW8gaXMgZmFsc2UpIik7CitXRUJSVENfREVGSU5FX2Jvb2woYXVkaW9fdmlk
ZW9fc3luYywKKyAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAi
U3luYyBhdWRpbyBhbmQgdmlkZW8gc3RyZWFtIChubyBlZmZlY3QgaWYiCisgICAgICAgICAgICAg
ICAgICAgIiBhdWRpbyBpcyBmYWxzZSkiKTsKIAotREVGSU5FX2Jvb2woYXVkaW9fZHR4LCBmYWxz
ZSwgIkVuYWJsZSBhdWRpbyBEVFggKG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSkiKTsKK1dF
QlJUQ19ERUZJTkVfYm9vbChhdWRpb19kdHgsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgIkVuYWJsZSBhdWRpbyBEVFggKG5vIGVmZmVjdCBpZiBhdWRpbyBp
cyBmYWxzZSkiKTsKIAotREVGSU5FX2Jvb2wodmlkZW8sIHRydWUsICJBZGQgdmlkZW8gc3RyZWFt
Iik7CitXRUJSVENfREVGSU5FX2Jvb2wodmlkZW8sIHRydWUsICJBZGQgdmlkZW8gc3RyZWFtIik7
CiAKLURFRklORV9zdHJpbmcoCitXRUJSVENfREVGSU5FX3N0cmluZygKICAgICBmb3JjZV9maWVs
ZHRyaWFscywKICAgICAiIiwKICAgICAiRmllbGQgdHJpYWxzIGNvbnRyb2wgZXhwZXJpbWVudGFs
IGZlYXR1cmUgY29kZSB3aGljaCBjYW4gYmUgZm9yY2VkLiAiCkBAIC00NDcsMTUgKzQ3NSwxNiBA
QCBERUZJTkVfc3RyaW5nKAogICAgICJ0cmlhbHMgYXJlIHNlcGFyYXRlZCBieSBcIi9cIiIpOwog
CiAvLyBWaWRlby1zcGVjaWZpYyBmbGFncy4KLURFRklORV9zdHJpbmcodmNsaXAsCi0gICAgICAg
ICAgICAgICIiLAotICAgICAgICAgICAgICAiTmFtZSBvZiB0aGUgY2xpcCB0byBzaG93LiBJZiBl
bXB0eSwgdGhlIGNhbWVyYSBpcyB1c2VkLiBVc2UgIgotICAgICAgICAgICAgICAiXCJHZW5lcmF0
b3JcIiBmb3IgY2hyb21hIGdlbmVyYXRvci4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAg
IHZjbGlwLAorICAgICIiLAorICAgICJOYW1lIG9mIHRoZSBjbGlwIHRvIHNob3cuIElmIGVtcHR5
LCB0aGUgY2FtZXJhIGlzIHVzZWQuIFVzZSAiCisgICAgIlwiR2VuZXJhdG9yXCIgZm9yIGNocm9t
YSBnZW5lcmF0b3IuIik7CiBzdGQ6OnN0cmluZyBWaWRlb0NsaXAoKSB7CiAgIHJldHVybiBzdGF0
aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxBR192Y2xpcCk7CiB9CiAKLURFRklORV9ib29sKGhlbHAs
IGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOworV0VCUlRDX0RFRklORV9ib29sKGhlbHAs
IGZhbHNlLCAicHJpbnRzIHRoaXMgbWVzc2FnZSIpOwogCiB9ICAvLyBuYW1lc3BhY2UgZmxhZ3MK
IApAQCAtNDc1LDcgKzUwNCw3IEBAIHZvaWQgTG9vcGJhY2soKSB7CiAgICAgc2NyZWVuc2hhcmVf
aWR4ID0gMDsKICAgfQogCi0gIERlZmF1bHROZXR3b3JrU2ltdWxhdGlvbkNvbmZpZyBwaXBlX2Nv
bmZpZzsKKyAgQnVpbHRJbk5ldHdvcmtCZWhhdmlvckNvbmZpZyBwaXBlX2NvbmZpZzsKICAgcGlw
ZV9jb25maWcubG9zc19wZXJjZW50ID0gZmxhZ3M6Okxvc3NQZXJjZW50KCk7CiAgIHBpcGVfY29u
ZmlnLmF2Z19idXJzdF9sb3NzX2xlbmd0aCA9IGZsYWdzOjpBdmdCdXJzdExvc3NMZW5ndGgoKTsK
ICAgcGlwZV9jb25maWcubGlua19jYXBhY2l0eV9rYnBzID0gZmxhZ3M6OkxpbmtDYXBhY2l0eUti
cHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3RyYW5zcG9ydF9hZGFwdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby90cmFuc3BvcnRfYWRhcHRlci5oCmluZGV4IDhlYzUzZmRm
MjVhOTE2YzcxMDI5YzdkZWFlMjRiNTg4N2ZlMjcyYWYuLjc4Njg1OGIwZTIxYzc0MTAzNDEwZWM0
ZmViMmQ0NGVjNDg5OWFlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3RyYW5zcG9ydF9hZGFwdGVyLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdHJhbnNwb3J0X2FkYXB0ZXIu
aApAQCAtMTMsNyArMTMsNiBAQAogI2luY2x1ZGUgPGF0b21pYz4KIAogI2luY2x1ZGUgImFwaS9j
YWxsL3RyYW5zcG9ydC5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBlcy5oIiAgLy8gTk9MSU5UKGJ1
aWxkL2luY2x1ZGUpCiAKIG5hbWVzcGFjZSB3ZWJydGMgewogbmFtZXNwYWNlIGludGVybmFsIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Zp
ZGVvL3ZpZGVvX2FuYWx5emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vdmlkZW9fYW5hbHl6ZXIuY2MKaW5kZXggMDVhYmUxZmNmM2IyNDBiMjI5
ZTIzZDJkZDAyMTM3NDExYWUyZDgzMS4uMWZkMjJmZjgwNjBiMDk0YTVkZDg1NDFiODlkNGI1YjRl
OGMyZTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vdmlkZW9fYW5hbHl6ZXIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fYW5hbHl6ZXIuY2MKQEAgLTE4LDE3ICsx
OCwxOCBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2ZsYWdzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2Uv
Zm9ybWF0X21hY3Jvcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL21lbW9yeV91c2FnZS5oIgotI2lu
Y2x1ZGUgInJ0Y19iYXNlL3BhdGh1dGlscy5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9p
bmNsdWRlL2NwdV9pbmZvLmgiCiAjaW5jbHVkZSAidGVzdC9jYWxsX3Rlc3QuaCIKKyNpbmNsdWRl
ICJ0ZXN0L3Rlc3RzdXBwb3J0L2ZpbGV1dGlscy5oIgogI2luY2x1ZGUgInRlc3QvdGVzdHN1cHBv
cnQvZnJhbWVfd3JpdGVyLmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9wZXJmX3Rlc3Qu
aCIKICNpbmNsdWRlICJ0ZXN0L3Rlc3RzdXBwb3J0L3Rlc3RfYXJ0aWZhY3RzLmgiCiAKLURFRklO
RV9ib29sKHNhdmVfd29yc3RfZnJhbWUsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAg
ICJFbmFibGUgc2F2aW5nIGEgZnJhbWUgd2l0aCB0aGUgbG93ZXN0IFBTTlIgdG8gYSBqcGVnIGZp
bGUgaW4gdGhlICIKLSAgICAgICAgICAgICJ0ZXN0X2FydGlmYWN0c19kaXIiKTsKK1dFQlJUQ19E
RUZJTkVfYm9vbCgKKyAgICBzYXZlX3dvcnN0X2ZyYW1lLAorICAgIGZhbHNlLAorICAgICJFbmFi
bGUgc2F2aW5nIGEgZnJhbWUgd2l0aCB0aGUgbG93ZXN0IFBTTlIgdG8gYSBqcGVnIGZpbGUgaW4g
dGhlICIKKyAgICAidGVzdF9hcnRpZmFjdHNfZGlyIik7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
bmFtZXNwYWNlIHsKQEAgLTcwLDcgKzcxLDYgQEAgVmlkZW9BbmFseXplcjo6VmlkZW9BbmFseXpl
cih0ZXN0OjpMYXllckZpbHRlcmluZ1RyYW5zcG9ydCogdHJhbnNwb3J0LAogICAgICAgc2VsZWN0
ZWRfc3RyZWFtXyhzZWxlY3RlZF9zdHJlYW0pLAogICAgICAgc2VsZWN0ZWRfc2xfKHNlbGVjdGVk
X3NsKSwKICAgICAgIHNlbGVjdGVkX3RsXyhzZWxlY3RlZF90bCksCi0gICAgICBwcmVfZW5jb2Rl
X3Byb3h5Xyh0aGlzKSwKICAgICAgIGxhc3RfZmVjX2J5dGVzXygwKSwKICAgICAgIGZyYW1lc190
b19wcm9jZXNzXyhkdXJhdGlvbl9mcmFtZXMpLAogICAgICAgZnJhbWVzX3JlY29yZGVkXygwKSwK
QEAgLTkxLDcgKzkxLDYgQEAgVmlkZW9BbmFseXplcjo6VmlkZW9BbmFseXplcih0ZXN0OjpMYXll
ckZpbHRlcmluZ1RyYW5zcG9ydCogdHJhbnNwb3J0LAogICAgICAgYXZnX3NzaW1fdGhyZXNob2xk
Xyhhdmdfc3NpbV90aHJlc2hvbGQpLAogICAgICAgaXNfcXVpY2tfdGVzdF9lbmFibGVkXyhpc19x
dWlja190ZXN0X2VuYWJsZWQpLAogICAgICAgc3RhdHNfcG9sbGluZ190aHJlYWRfKCZQb2xsU3Rh
dHNUaHJlYWQsIHRoaXMsICJTdGF0c1BvbGxlciIpLAotICAgICAgY29tcGFyaXNvbl9hdmFpbGFi
bGVfZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAgICAgICBkb25lXyh0cnVlLCBmYWxzZSksCiAgICAg
ICBjbG9ja18oY2xvY2spLAogICAgICAgc3RhcnRfbXNfKGNsb2NrLT5UaW1lSW5NaWxsaXNlY29u
ZHMoKSkgewpAQCAtMjMxLDEwICsyMzAsMTAgQEAgdm9pZCBWaWRlb0FuYWx5emVyOjpQcmVFbmNv
ZGVPbkZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVvX2ZyYW1lKSB7CiAgIH0KIH0KIAotdm9p
ZCBWaWRlb0FuYWx5emVyOjpFbmNvZGVkRnJhbWVDYWxsYmFjayhjb25zdCBFbmNvZGVkRnJhbWUm
IGVuY29kZWRfZnJhbWUpIHsKK3ZvaWQgVmlkZW9BbmFseXplcjo6UG9zdEVuY29kZU9uRnJhbWUo
c2l6ZV90IHN0cmVhbV9pZCwgdWludDMyX3QgdGltZXN0YW1wKSB7CiAgIHJ0Yzo6Q3JpdFNjb3Bl
IGxvY2soJmNyaXRfKTsKLSAgaWYgKCFmaXJzdF9zZW50X3RpbWVzdGFtcF8gJiYgZW5jb2RlZF9m
cmFtZS5zdHJlYW1faWRfID09IHNlbGVjdGVkX3N0cmVhbV8pIHsKLSAgICBmaXJzdF9zZW50X3Rp
bWVzdGFtcF8gPSBlbmNvZGVkX2ZyYW1lLnRpbWVzdGFtcF87CisgIGlmICghZmlyc3Rfc2VudF90
aW1lc3RhbXBfICYmIHN0cmVhbV9pZCA9PSBzZWxlY3RlZF9zdHJlYW1fKSB7CisgICAgZmlyc3Rf
c2VudF90aW1lc3RhbXBfID0gdGltZXN0YW1wOwogICB9CiB9CiAKQEAgLTM2NiwxMCArMzY1LDYg
QEAgdm9pZCBWaWRlb0FuYWx5emVyOjpXYWl0KCkgewogICBzdGF0c19wb2xsaW5nX3RocmVhZF8u
U3RvcCgpOwogfQogCi1ydGM6OlZpZGVvU2lua0ludGVyZmFjZTxWaWRlb0ZyYW1lPiogVmlkZW9B
bmFseXplcjo6cHJlX2VuY29kZV9wcm94eSgpIHsKLSAgcmV0dXJuICZwcmVfZW5jb2RlX3Byb3h5
XzsKLX0KLQogdm9pZCBWaWRlb0FuYWx5emVyOjpTdGFydE1lYXN1cmluZ0NwdVByb2Nlc3NUaW1l
KCkgewogICBydGM6OkNyaXRTY29wZSBsb2NrKCZjcHVfbWVhc3VyZW1lbnRfbG9ja18pOwogICBj
cHVfdGltZV8gLT0gcnRjOjpHZXRQcm9jZXNzQ3B1VGltZU5hbm9zKCk7CkBAIC02MTEsNyArNjA2
LDcgQEAgdm9pZCBWaWRlb0FuYWx5emVyOjpQcmludFJlc3VsdHMoKSB7CiAgICAgc3RkOjpzdHJp
bmcgb3V0cHV0X2RpcjsKICAgICB0ZXN0OjpHZXRUZXN0QXJ0aWZhY3RzRGlyKCZvdXRwdXRfZGly
KTsKICAgICBzdGQ6OnN0cmluZyBvdXRwdXRfcGF0aCA9Ci0gICAgICAgIHJ0Yzo6UGF0aG5hbWUo
b3V0cHV0X2RpciwgdGVzdF9sYWJlbF8gKyAiLmpwZyIpLnBhdGhuYW1lKCk7CisgICAgICAgIHRl
c3Q6OkpvaW5GaWxlbmFtZShvdXRwdXRfZGlyLCB0ZXN0X2xhYmVsXyArICIuanBnIik7CiAgICAg
UlRDX0xPRyhMU19JTkZPKSA8PCAiU2F2aW5nIHdvcnN0IGZyYW1lIHRvICIgPDwgb3V0cHV0X3Bh
dGg7CiAgICAgdGVzdDo6SnBlZ0ZyYW1lV3JpdGVyIGZyYW1lX3dyaXRlcihvdXRwdXRfcGF0aCk7
CiAgICAgUlRDX0NIRUNLKApAQCAtODQxLDEzICs4MzYsNiBAQCBWaWRlb0FuYWx5emVyOjpTYW1w
bGU6OlNhbXBsZShpbnQgZHJvcHBlZCwKICAgICAgIHBzbnIocHNuciksCiAgICAgICBzc2ltKHNz
aW0pIHt9CiAKLVZpZGVvQW5hbHl6ZXI6OlByZUVuY29kZVByb3h5OjpQcmVFbmNvZGVQcm94eShW
aWRlb0FuYWx5emVyKiBwYXJlbnQpCi0gICAgOiBwYXJlbnRfKHBhcmVudCkge30KLQotdm9pZCBW
aWRlb0FuYWx5emVyOjpQcmVFbmNvZGVQcm94eTo6T25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2
aWRlb19mcmFtZSkgewotICBwYXJlbnRfLT5QcmVFbmNvZGVPbkZyYW1lKHZpZGVvX2ZyYW1lKTsK
LX0KLQogVmlkZW9BbmFseXplcjo6Q2FwdHVyZWRGcmFtZUZvcndhcmRlcjo6Q2FwdHVyZWRGcmFt
ZUZvcndhcmRlcigKICAgICBWaWRlb0FuYWx5emVyKiBhbmFseXplciwKICAgICBDbG9jayogY2xv
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby92aWRlb19hbmFseXplci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fYW5hbHl6ZXIuaAppbmRleCA2ODFkMWY0NjRmNDgxYzZl
N2JhZjNmMWZmNjFmZGNhZTJmNDBkN2NkLi5kMmM0ZmE4NGNkYTNhMTViMzdlNjAwNzY5OGI3YmNj
OWY5N2ZhZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy92aWRlby92aWRlb19hbmFseXplci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX2FuYWx5emVyLmgKQEAgLTI1LDggKzI1
LDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiAKIGNsYXNzIFZpZGVvQW5hbHl6ZXIgOiBwdWJsaWMg
UGFja2V0UmVjZWl2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFRyYW5zcG9ydCwK
LSAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8Vmlk
ZW9GcmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgcHVibGljIEVuY29kZWRGcmFtZU9ic2Vy
dmVyIHsKKyAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgcnRjOjpWaWRlb1NpbmtJbnRlcmZh
Y2U8VmlkZW9GcmFtZT4gewogIHB1YmxpYzoKICAgVmlkZW9BbmFseXplcih0ZXN0OjpMYXllckZp
bHRlcmluZ1RyYW5zcG9ydCogdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB0ZXN0X2xhYmVsLApAQCAtNjEsOSArNjAsNyBAQCBjbGFzcyBWaWRlb0FuYWx5emVy
IDogcHVibGljIFBhY2tldFJlY2VpdmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDY0X3QgcGFja2V0X3RpbWVfdXMpIG92ZXJyaWRlOwogCiAgIHZvaWQgUHJlRW5jb2RlT25G
cmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb19mcmFtZSk7Ci0KLSAgLy8gRW5jb2RlZEZyYW1l
T2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24sIHdpcmVkIHRvIHBvc3RfZW5jb2RlX2NhbGxiYWNrLgot
ICB2b2lkIEVuY29kZWRGcmFtZUNhbGxiYWNrKGNvbnN0IEVuY29kZWRGcmFtZSYgZW5jb2RlZF9m
cmFtZSkgb3ZlcnJpZGU7CisgIHZvaWQgUG9zdEVuY29kZU9uRnJhbWUoc2l6ZV90IHN0cmVhbV9p
ZCwgdWludDMyX3QgdGltZXN0YW1wKTsKIAogICBib29sIFNlbmRSdHAoY29uc3QgdWludDhfdCog
cGFja2V0LAogICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKQEAgLTczLDggKzcwLDYgQEAg
Y2xhc3MgVmlkZW9BbmFseXplciA6IHB1YmxpYyBQYWNrZXRSZWNlaXZlciwKICAgdm9pZCBPbkZy
YW1lKGNvbnN0IFZpZGVvRnJhbWUmIHZpZGVvX2ZyYW1lKSBvdmVycmlkZTsKICAgdm9pZCBXYWl0
KCk7CiAKLSAgcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4qIHByZV9lbmNvZGVf
cHJveHkoKTsKLQogICB2b2lkIFN0YXJ0TWVhc3VyaW5nQ3B1UHJvY2Vzc1RpbWUoKTsKICAgdm9p
ZCBTdG9wTWVhc3VyaW5nQ3B1UHJvY2Vzc1RpbWUoKTsKICAgdm9pZCBTdGFydEV4Y2x1ZGluZ0Nw
dVRocmVhZFRpbWUoKTsKQEAgLTEzMiwxNyArMTI3LDYgQEAgY2xhc3MgVmlkZW9BbmFseXplciA6
IHB1YmxpYyBQYWNrZXRSZWNlaXZlciwKICAgICBkb3VibGUgc3NpbTsKICAgfTsKIAotICAvLyBU
aGlzIGNsYXNzIHJlY2VpdmVzIHRoZSBzZW5kLXNpZGUgT25GcmFtZSBjYWxsYmFjayBhbmQgaXMg
cHJvdmlkZWQgdG8gbm90Ci0gIC8vIGNvbmZsaWN0IHdpdGggdGhlIHJlY2VpdmVyLXNpZGUgcmVu
ZGVyZXIgY2FsbGJhY2suCi0gIGNsYXNzIFByZUVuY29kZVByb3h5IDogcHVibGljIHJ0Yzo6Vmlk
ZW9TaW5rSW50ZXJmYWNlPFZpZGVvRnJhbWU+IHsKLSAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBQ
cmVFbmNvZGVQcm94eShWaWRlb0FuYWx5emVyKiBwYXJlbnQpOwotICAgIHZvaWQgT25GcmFtZShj
b25zdCBWaWRlb0ZyYW1lJiB2aWRlb19mcmFtZSkgb3ZlcnJpZGU7Ci0KLSAgIHByaXZhdGU6Ci0g
ICAgVmlkZW9BbmFseXplciogY29uc3QgcGFyZW50XzsKLSAgfTsKLQogICAvLyBJbXBsZW1lbnRz
IFZpZGVvU2lua0ludGVyZmFjZSB0byByZWNlaXZlIGNhcHR1cmVkIGZyYW1lcyBmcm9tIGEKICAg
Ly8gRnJhbWVHZW5lcmF0b3JDYXB0dXJlci4gSW1wbGVtZW50cyBWaWRlb1NvdXJjZUludGVyZmFj
ZSB0byBiZSBhYmxlIHRvIGFjdAogICAvLyBhcyBhIHNvdXJjZSB0byBWaWRlb1NlbmRTdHJlYW0u
CkBAIC0yMjEsNyArMjA1LDYgQEAgY2xhc3MgVmlkZW9BbmFseXplciA6IHB1YmxpYyBQYWNrZXRS
ZWNlaXZlciwKICAgY29uc3Qgc2l6ZV90IHNlbGVjdGVkX3N0cmVhbV87CiAgIGNvbnN0IGludCBz
ZWxlY3RlZF9zbF87CiAgIGNvbnN0IGludCBzZWxlY3RlZF90bF87Ci0gIFByZUVuY29kZVByb3h5
IHByZV9lbmNvZGVfcHJveHlfOwogCiAgIHJ0Yzo6Q3JpdGljYWxTZWN0aW9uIGNvbXBhcmlzb25f
bG9ja187CiAgIHN0ZDo6dmVjdG9yPFNhbXBsZT4gc2FtcGxlc18gUlRDX0dVQVJERURfQlkoY29t
cGFyaXNvbl9sb2NrXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19sb29wYmFjay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX2xvb3BiYWNrLmNjCmluZGV4IDU3
NTkwZWQxNDQ5NTQ3NTZlOTA5NzM2NmE3YzA5YTc2ZWIwM2MxZjEuLjRjZGRkYjk0ZTUyODU4NTBk
OTNkOTNiMDk4ZWM4MTNkNzJiMGUzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX2xvb3BiYWNrLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX2xvb3BiYWNr
LmNjCkBAIC0yMiw2MSArMjIsNjIgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgZmxh
Z3MgewogCiAvLyBGbGFncyBjb21tb24gd2l0aCBzY3JlZW5zaGFyZSBsb29wYmFjaywgd2l0aCBk
aWZmZXJlbnQgZGVmYXVsdCB2YWx1ZXMuCi1ERUZJTkVfaW50KHdpZHRoLCA2NDAsICJWaWRlbyB3
aWR0aC4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHdpZHRoLCA2NDAsICJWaWRlbyB3aWR0aC4iKTsK
IHNpemVfdCBXaWR0aCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oRkxBR193aWR0
aCk7CiB9CiAKLURFRklORV9pbnQoaGVpZ2h0LCA0ODAsICJWaWRlbyBoZWlnaHQuIik7CitXRUJS
VENfREVGSU5FX2ludChoZWlnaHQsIDQ4MCwgIlZpZGVvIGhlaWdodC4iKTsKIHNpemVfdCBIZWln
aHQoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEZMQUdfaGVpZ2h0KTsKIH0KIAot
REVGSU5FX2ludChmcHMsIDMwLCAiRnJhbWVzIHBlciBzZWNvbmQuIik7CitXRUJSVENfREVGSU5F
X2ludChmcHMsIDMwLCAiRnJhbWVzIHBlciBzZWNvbmQuIik7CiBpbnQgRnBzKCkgewogICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX2Zwcyk7CiB9CiAKLURFRklORV9pbnQoY2FwdHVyZV9k
ZXZpY2VfaW5kZXgsIDAsICJDYXB0dXJlIGRldmljZSB0byBzZWxlY3QiKTsKK1dFQlJUQ19ERUZJ
TkVfaW50KGNhcHR1cmVfZGV2aWNlX2luZGV4LCAwLCAiQ2FwdHVyZSBkZXZpY2UgdG8gc2VsZWN0
Iik7CiBzaXplX3QgR2V0Q2FwdHVyZURldmljZSgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4oRkxBR19jYXB0dXJlX2RldmljZV9pbmRleCk7CiB9CiAKLURFRklORV9pbnQobWluX2Jp
dHJhdGUsIDUwLCAiQ2FsbCBhbmQgc3RyZWFtIG1pbiBiaXRyYXRlIGluIGticHMuIik7CitXRUJS
VENfREVGSU5FX2ludChtaW5fYml0cmF0ZSwgNTAsICJDYWxsIGFuZCBzdHJlYW0gbWluIGJpdHJh
dGUgaW4ga2Jwcy4iKTsKIGludCBNaW5CaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oRkxBR19taW5fYml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQoc3RhcnRfYml0cmF0
ZSwgMzAwLCAiQ2FsbCBzdGFydCBiaXRyYXRlIGluIGticHMuIik7CitXRUJSVENfREVGSU5FX2lu
dChzdGFydF9iaXRyYXRlLCAzMDAsICJDYWxsIHN0YXJ0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGlu
dCBTdGFydEJpdHJhdGVLYnBzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3N0
YXJ0X2JpdHJhdGUpOwogfQogCi1ERUZJTkVfaW50KHRhcmdldF9iaXRyYXRlLCA4MDAsICJTdHJl
YW0gdGFyZ2V0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHRhcmdldF9i
aXRyYXRlLCA4MDAsICJTdHJlYW0gdGFyZ2V0IGJpdHJhdGUgaW4ga2Jwcy4iKTsKIGludCBUYXJn
ZXRCaXRyYXRlS2JwcygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR190YXJnZXRf
Yml0cmF0ZSk7CiB9CiAKLURFRklORV9pbnQobWF4X2JpdHJhdGUsIDgwMCwgIkNhbGwgYW5kIHN0
cmVhbSBtYXggYml0cmF0ZSBpbiBrYnBzLiIpOworV0VCUlRDX0RFRklORV9pbnQobWF4X2JpdHJh
dGUsIDgwMCwgIkNhbGwgYW5kIHN0cmVhbSBtYXggYml0cmF0ZSBpbiBrYnBzLiIpOwogaW50IE1h
eEJpdHJhdGVLYnBzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX21heF9iaXRy
YXRlKTsKIH0KIAotREVGSU5FX2Jvb2woc3VzcGVuZF9iZWxvd19taW5fYml0cmF0ZSwKLSAgICAg
ICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlN1c3BlbmRzIHZpZGVvIGJlbG93IHRoZSBjb25m
aWd1cmVkIG1pbiBiaXRyYXRlLiIpOworV0VCUlRDX0RFRklORV9ib29sKHN1c3BlbmRfYmVsb3df
bWluX2JpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgIlN1c3BlbmRzIHZpZGVvIGJlbG93IHRoZSBjb25maWd1cmVkIG1pbiBiaXRyYXRlLiIpOwog
Ci1ERUZJTkVfaW50KG51bV90ZW1wb3JhbF9sYXllcnMsCi0gICAgICAgICAgIDEsCi0gICAgICAg
ICAgICJOdW1iZXIgb2YgdGVtcG9yYWwgbGF5ZXJzLiBTZXQgdG8gMS00IHRvIG92ZXJyaWRlLiIp
OworV0VCUlRDX0RFRklORV9pbnQobnVtX3RlbXBvcmFsX2xheWVycywKKyAgICAgICAgICAgICAg
ICAgIDEsCisgICAgICAgICAgICAgICAgICAiTnVtYmVyIG9mIHRlbXBvcmFsIGxheWVycy4gU2V0
IHRvIDEtNCB0byBvdmVycmlkZS4iKTsKIGludCBOdW1UZW1wb3JhbExheWVycygpIHsKICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19udW1fdGVtcG9yYWxfbGF5ZXJzKTsKIH0KIAotREVG
SU5FX2ludChpbnRlcl9sYXllcl9wcmVkLAotICAgICAgICAgICAyLAotICAgICAgICAgICAiSW50
ZXItbGF5ZXIgcHJlZGljdGlvbiBtb2RlLiAiCi0gICAgICAgICAgICIwIC0gZW5hYmxlZCwgMSAt
IGRpc2FibGVkLCAyIC0gZW5hYmxlZCBvbmx5IGZvciBrZXkgcGljdHVyZXMuIik7CitXRUJSVENf
REVGSU5FX2ludCgKKyAgICBpbnRlcl9sYXllcl9wcmVkLAorICAgIDIsCisgICAgIkludGVyLWxh
eWVyIHByZWRpY3Rpb24gbW9kZS4gIgorICAgICIwIC0gZW5hYmxlZCwgMSAtIGRpc2FibGVkLCAy
IC0gZW5hYmxlZCBvbmx5IGZvciBrZXkgcGljdHVyZXMuIik7CiBJbnRlckxheWVyUHJlZE1vZGUg
SW50ZXJMYXllclByZWQoKSB7CiAgIGlmIChGTEFHX2ludGVyX2xheWVyX3ByZWQgPT0gMCkgewog
ICAgIHJldHVybiBJbnRlckxheWVyUHJlZE1vZGU6OmtPbjsKQEAgLTg5LDE5ICs5MCwyMCBAQCBJ
bnRlckxheWVyUHJlZE1vZGUgSW50ZXJMYXllclByZWQoKSB7CiB9CiAKIC8vIEZsYWdzIGNvbW1v
biB3aXRoIHNjcmVlbnNoYXJlIGxvb3BiYWNrLCB3aXRoIGVxdWFsIGRlZmF1bHQgdmFsdWVzLgot
REVGSU5FX3N0cmluZyhjb2RlYywgIlZQOCIsICJWaWRlbyBjb2RlYyB0byB1c2UuIik7CitXRUJS
VENfREVGSU5FX3N0cmluZyhjb2RlYywgIlZQOCIsICJWaWRlbyBjb2RlYyB0byB1c2UuIik7CiBz
dGQ6OnN0cmluZyBDb2RlYygpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nPihG
TEFHX2NvZGVjKTsKIH0KIAotREVGSU5FX2ludChzZWxlY3RlZF90bCwKLSAgICAgICAgICAgLTEs
Ci0gICAgICAgICAgICJUZW1wb3JhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0xIHRvIGRp
c2FibGUgZmlsdGVyaW5nLiIpOworV0VCUlRDX0RFRklORV9pbnQoCisgICAgc2VsZWN0ZWRfdGws
CisgICAgLTEsCisgICAgIlRlbXBvcmFsIGxheWVyIHRvIHNob3cgb3IgYW5hbHl6ZS4gLTEgdG8g
ZGlzYWJsZSBmaWx0ZXJpbmcuIik7CiBpbnQgU2VsZWN0ZWRUTCgpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4oRkxBR19zZWxlY3RlZF90bCk7CiB9CiAKLURFRklORV9pbnQoCitXRUJSVENf
REVGSU5FX2ludCgKICAgICBkdXJhdGlvbiwKICAgICAwLAogICAgICJEdXJhdGlvbiBvZiB0aGUg
dGVzdCBpbiBzZWNvbmRzLiBJZiAwLCByZW5kZXJlZCB3aWxsIGJlIHNob3duIGluc3RlYWQuIik7
CkBAIC0xMDksMTc3ICsxMTEsMTk2IEBAIGludCBEdXJhdGlvblNlY3MoKSB7CiAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KEZMQUdfZHVyYXRpb24pOwogfQogCi1ERUZJTkVfc3RyaW5nKG91dHB1
dF9maWxlbmFtZSwgIiIsICJUYXJnZXQgZ3JhcGggZGF0YSBmaWxlbmFtZS4iKTsKK1dFQlJUQ19E
RUZJTkVfc3RyaW5nKG91dHB1dF9maWxlbmFtZSwgIiIsICJUYXJnZXQgZ3JhcGggZGF0YSBmaWxl
bmFtZS4iKTsKIHN0ZDo6c3RyaW5nIE91dHB1dEZpbGVuYW1lKCkgewogICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfb3V0cHV0X2ZpbGVuYW1lKTsKIH0KIAotREVGSU5FX3N0
cmluZyhncmFwaF90aXRsZSwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJJZiBl
bXB0eSwgdGl0bGUgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4iKTsKK1dFQlJUQ19E
RUZJTkVfc3RyaW5nKGdyYXBoX3RpdGxlLAorICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAg
ICAgICAgICAgICAgICAgICAiSWYgZW1wdHksIHRpdGxlIHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9t
YXRpY2FsbHkuIik7CiBzdGQ6OnN0cmluZyBHcmFwaFRpdGxlKCkgewogICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfZ3JhcGhfdGl0bGUpOwogfQogCi1ERUZJTkVfaW50KGxv
c3NfcGVyY2VudCwgMCwgIlBlcmNlbnRhZ2Ugb2YgcGFja2V0cyByYW5kb21seSBsb3N0LiIpOwor
V0VCUlRDX0RFRklORV9pbnQobG9zc19wZXJjZW50LCAwLCAiUGVyY2VudGFnZSBvZiBwYWNrZXRz
IHJhbmRvbWx5IGxvc3QuIik7CiBpbnQgTG9zc1BlcmNlbnQoKSB7CiAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KEZMQUdfbG9zc19wZXJjZW50KTsKIH0KIAotREVGSU5FX2ludChhdmdfYnVyc3Rf
bG9zc19sZW5ndGgsIC0xLCAiQXZlcmFnZSBidXJzdCBsZW5ndGggb2YgbG9zdCBwYWNrZXRzLiIp
OworV0VCUlRDX0RFRklORV9pbnQoYXZnX2J1cnN0X2xvc3NfbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAiQXZlcmFnZSBidXJzdCBsZW5ndGggb2YgbG9z
dCBwYWNrZXRzLiIpOwogaW50IEF2Z0J1cnN0TG9zc0xlbmd0aCgpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4oRkxBR19hdmdfYnVyc3RfbG9zc19sZW5ndGgpOwogfQogCi1ERUZJTkVfaW50
KGxpbmtfY2FwYWNpdHksCi0gICAgICAgICAgIDAsCi0gICAgICAgICAgICJDYXBhY2l0eSAoa2Jw
cykgb2YgdGhlIGZha2UgbGluay4gMCBtZWFucyBpbmZpbml0ZS4iKTsKK1dFQlJUQ19ERUZJTkVf
aW50KGxpbmtfY2FwYWNpdHksCisgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAg
ICAgIkNhcGFjaXR5IChrYnBzKSBvZiB0aGUgZmFrZSBsaW5rLiAwIG1lYW5zIGluZmluaXRlLiIp
OwogaW50IExpbmtDYXBhY2l0eUticHMoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZM
QUdfbGlua19jYXBhY2l0eSk7CiB9CiAKLURFRklORV9pbnQocXVldWVfc2l6ZSwgMCwgIlNpemUg
b2YgdGhlIGJvdHRsZW5lY2sgbGluayBxdWV1ZSBpbiBwYWNrZXRzLiIpOworV0VCUlRDX0RFRklO
RV9pbnQocXVldWVfc2l6ZSwKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAg
ICAiU2l6ZSBvZiB0aGUgYm90dGxlbmVjayBsaW5rIHF1ZXVlIGluIHBhY2tldHMuIik7CiBpbnQg
UXVldWVTaXplKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX3F1ZXVlX3NpemUp
OwogfQogCi1ERUZJTkVfaW50KGF2Z19wcm9wYWdhdGlvbl9kZWxheV9tcywKLSAgICAgICAgICAg
MCwKLSAgICAgICAgICAgIkF2ZXJhZ2UgbGluayBwcm9wYWdhdGlvbiBkZWxheSBpbiBtcy4iKTsK
K1dFQlJUQ19ERUZJTkVfaW50KGF2Z19wcm9wYWdhdGlvbl9kZWxheV9tcywKKyAgICAgICAgICAg
ICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAiQXZlcmFnZSBsaW5rIHByb3BhZ2F0aW9uIGRl
bGF5IGluIG1zLiIpOwogaW50IEF2Z1Byb3BhZ2F0aW9uRGVsYXlNcygpIHsKICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oRkxBR19hdmdfcHJvcGFnYXRpb25fZGVsYXlfbXMpOwogfQogCi1ERUZJ
TkVfc3RyaW5nKHJ0Y19ldmVudF9sb2dfbmFtZSwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAg
ICAgICAgICJGaWxlbmFtZSBmb3IgcnRjIGV2ZW50IGxvZy4gVHdvIGZpbGVzICIKLSAgICAgICAg
ICAgICAgIndpdGggXCJfc2VuZFwiIGFuZCBcIl9yZWN2XCIgc3VmZml4ZXMgd2lsbCBiZSBjcmVh
dGVkLiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcocnRjX2V2ZW50X2xvZ19uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAiRmlsZW5hbWUgZm9yIHJ0
YyBldmVudCBsb2cuIFR3byBmaWxlcyAiCisgICAgICAgICAgICAgICAgICAgICAid2l0aCBcIl9z
ZW5kXCIgYW5kIFwiX3JlY3ZcIiBzdWZmaXhlcyB3aWxsIGJlIGNyZWF0ZWQuIik7CiBzdGQ6OnN0
cmluZyBSdGNFdmVudExvZ05hbWUoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmlu
Zz4oRkxBR19ydGNfZXZlbnRfbG9nX25hbWUpOwogfQogCi1ERUZJTkVfc3RyaW5nKHJ0cF9kdW1w
X25hbWUsICIiLCAiRmlsZW5hbWUgZm9yIGR1bXBlZCByZWNlaXZlZCBSVFAgc3RyZWFtLiIpOwor
V0VCUlRDX0RFRklORV9zdHJpbmcocnRwX2R1bXBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICIiLAorICAgICAgICAgICAgICAgICAgICAgIkZpbGVuYW1lIGZvciBkdW1wZWQgcmVjZWl2ZWQg
UlRQIHN0cmVhbS4iKTsKIHN0ZDo6c3RyaW5nIFJ0cER1bXBOYW1lKCkgewogICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfcnRwX2R1bXBfbmFtZSk7CiB9CiAKLURFRklORV9p
bnQoc3RkX3Byb3BhZ2F0aW9uX2RlbGF5X21zLAotICAgICAgICAgICAwLAotICAgICAgICAgICAi
TGluayBwcm9wYWdhdGlvbiBkZWxheSBzdGFuZGFyZCBkZXZpYXRpb24gaW4gbXMuIik7CitXRUJS
VENfREVGSU5FX2ludChzdGRfcHJvcGFnYXRpb25fZGVsYXlfbXMsCisgICAgICAgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgICAgICAgIkxpbmsgcHJvcGFnYXRpb24gZGVsYXkgc3RhbmRhcmQg
ZGV2aWF0aW9uIGluIG1zLiIpOwogaW50IFN0ZFByb3BhZ2F0aW9uRGVsYXlNcygpIHsKICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zdGRfcHJvcGFnYXRpb25fZGVsYXlfbXMpOwogfQog
Ci1ERUZJTkVfaW50KG51bV9zdHJlYW1zLCAwLCAiTnVtYmVyIG9mIHN0cmVhbXMgdG8gc2hvdyBv
ciBhbmFseXplLiIpOworV0VCUlRDX0RFRklORV9pbnQobnVtX3N0cmVhbXMsIDAsICJOdW1iZXIg
b2Ygc3RyZWFtcyB0byBzaG93IG9yIGFuYWx5emUuIik7CiBpbnQgTnVtU3RyZWFtcygpIHsKICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19udW1fc3RyZWFtcyk7CiB9CiAKLURFRklORV9p
bnQoc2VsZWN0ZWRfc3RyZWFtLAotICAgICAgICAgICAwLAotICAgICAgICAgICAiSUQgb2YgdGhl
IHN0cmVhbSB0byBzaG93IG9yIGFuYWx5emUuICIKLSAgICAgICAgICAgIlNldCB0byB0aGUgbnVt
YmVyIG9mIHN0cmVhbXMgdG8gc2hvdyB0aGVtIGFsbC4iKTsKK1dFQlJUQ19ERUZJTkVfaW50KHNl
bGVjdGVkX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAi
SUQgb2YgdGhlIHN0cmVhbSB0byBzaG93IG9yIGFuYWx5emUuICIKKyAgICAgICAgICAgICAgICAg
ICJTZXQgdG8gdGhlIG51bWJlciBvZiBzdHJlYW1zIHRvIHNob3cgdGhlbSBhbGwuIik7CiBpbnQg
U2VsZWN0ZWRTdHJlYW0oKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KEZMQUdfc2VsZWN0
ZWRfc3RyZWFtKTsKIH0KIAotREVGSU5FX2ludChudW1fc3BhdGlhbF9sYXllcnMsIDEsICJOdW1i
ZXIgb2Ygc3BhdGlhbCBsYXllcnMgdG8gdXNlLiIpOworV0VCUlRDX0RFRklORV9pbnQobnVtX3Nw
YXRpYWxfbGF5ZXJzLCAxLCAiTnVtYmVyIG9mIHNwYXRpYWwgbGF5ZXJzIHRvIHVzZS4iKTsKIGlu
dCBOdW1TcGF0aWFsTGF5ZXJzKCkgewogICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihGTEFHX251
bV9zcGF0aWFsX2xheWVycyk7CiB9CiAKLURFRklORV9pbnQoc2VsZWN0ZWRfc2wsCi0gICAgICAg
ICAgIC0xLAotICAgICAgICAgICAiU3BhdGlhbCBsYXllciB0byBzaG93IG9yIGFuYWx5emUuIC0x
IHRvIGRpc2FibGUgZmlsdGVyaW5nLiIpOworV0VCUlRDX0RFRklORV9pbnQoc2VsZWN0ZWRfc2ws
CisgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICJTcGF0aWFsIGxheWVy
IHRvIHNob3cgb3IgYW5hbHl6ZS4gLTEgdG8gZGlzYWJsZSBmaWx0ZXJpbmcuIik7CiBpbnQgU2Vs
ZWN0ZWRTTCgpIHsKICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oRkxBR19zZWxlY3RlZF9zbCk7
CiB9CiAKLURFRklORV9zdHJpbmcoc3RyZWFtMCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAg
ICAgICAgICJDb21tYSBzZXBhcmF0ZWQgdmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9y
IHN0cmVhbSAjMC4iKTsKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAorICAgIHN0cmVhbTAsCisgICAg
IiIsCisgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBWaWRlb1N0cmVhbSBm
b3Igc3RyZWFtICMwLiIpOwogc3RkOjpzdHJpbmcgU3RyZWFtMCgpIHsKICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHN0ZDo6c3RyaW5nPihGTEFHX3N0cmVhbTApOwogfQogCi1ERUZJTkVfc3RyaW5nKHN0
cmVhbTEsCi0gICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVk
IHZhbHVlcyBkZXNjcmliaW5nIFZpZGVvU3RyZWFtIGZvciBzdHJlYW0gIzEuIik7CitXRUJSVENf
REVGSU5FX3N0cmluZygKKyAgICBzdHJlYW0xLAorICAgICIiLAorICAgICJDb21tYSBzZXBhcmF0
ZWQgdmFsdWVzIGRlc2NyaWJpbmcgVmlkZW9TdHJlYW0gZm9yIHN0cmVhbSAjMS4iKTsKIHN0ZDo6
c3RyaW5nIFN0cmVhbTEoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4oRkxB
R19zdHJlYW0xKTsKIH0KIAotREVGSU5FX3N0cmluZyhzbDAsCi0gICAgICAgICAgICAgICIiLAot
ICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBkZXNjcmliaW5nIFNwYXRpYWxM
YXllciBmb3IgbGF5ZXIgIzAuIik7CitXRUJSVENfREVGSU5FX3N0cmluZygKKyAgICBzbDAsCisg
ICAgIiIsCisgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVzY3JpYmluZyBTcGF0aWFsTGF5
ZXIgZm9yIGxheWVyICMwLiIpOwogc3RkOjpzdHJpbmcgU0wwKCkgewogICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc2wwKTsKIH0KIAotREVGSU5FX3N0cmluZyhzbDEsCi0g
ICAgICAgICAgICAgICIiLAotICAgICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIHZhbHVlcyBk
ZXNjcmliaW5nIFNwYXRpYWxMYXllciBmb3IgbGF5ZXIgIzEuIik7CitXRUJSVENfREVGSU5FX3N0
cmluZygKKyAgICBzbDEsCisgICAgIiIsCisgICAgIkNvbW1hIHNlcGFyYXRlZCB2YWx1ZXMgZGVz
Y3JpYmluZyBTcGF0aWFsTGF5ZXIgZm9yIGxheWVyICMxLiIpOwogc3RkOjpzdHJpbmcgU0wxKCkg
ewogICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc+KEZMQUdfc2wxKTsKIH0KIAotREVG
SU5FX3N0cmluZyhlbmNvZGVkX2ZyYW1lX3BhdGgsCi0gICAgICAgICAgICAgICIiLAotICAgICAg
ICAgICAgICAiVGhlIGJhc2UgcGF0aCBmb3IgZW5jb2RlZCBmcmFtZSBsb2dzLiBDcmVhdGVkIGZp
bGVzIHdpbGwgaGF2ZSAiCi0gICAgICAgICAgICAgICJ0aGUgZm9ybSA8ZW5jb2RlZF9mcmFtZV9w
YXRoPi48bj4uKHJlY3Z8c2VuZC48bT4pLml2ZiIpOworV0VCUlRDX0RFRklORV9zdHJpbmcoCisg
ICAgZW5jb2RlZF9mcmFtZV9wYXRoLAorICAgICIiLAorICAgICJUaGUgYmFzZSBwYXRoIGZvciBl
bmNvZGVkIGZyYW1lIGxvZ3MuIENyZWF0ZWQgZmlsZXMgd2lsbCBoYXZlICIKKyAgICAidGhlIGZv
cm0gPGVuY29kZWRfZnJhbWVfcGF0aD4uPG4+LihyZWN2fHNlbmQuPG0+KS5pdmYiKTsKIHN0ZDo6
c3RyaW5nIEVuY29kZWRGcmFtZVBhdGgoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0
cmluZz4oRkxBR19lbmNvZGVkX2ZyYW1lX3BhdGgpOwogfQogCi1ERUZJTkVfYm9vbChsb2dzLCBm
YWxzZSwgInByaW50IGxvZ3MgdG8gc3RkZXJyIik7CitXRUJSVENfREVGSU5FX2Jvb2wobG9ncywg
ZmFsc2UsICJwcmludCBsb2dzIHRvIHN0ZGVyciIpOwogCi1ERUZJTkVfYm9vbChzZW5kX3NpZGVf
YndlLCB0cnVlLCAiVXNlIHNlbmQtc2lkZSBiYW5kd2lkdGggZXN0aW1hdGlvbiIpOworV0VCUlRD
X0RFRklORV9ib29sKHNlbmRfc2lkZV9id2UsIHRydWUsICJVc2Ugc2VuZC1zaWRlIGJhbmR3aWR0
aCBlc3RpbWF0aW9uIik7CiAKLURFRklORV9ib29sKGdlbmVyaWNfZGVzY3JpcHRvciwgZmFsc2Us
ICJVc2UgdGhlIGdlbmVyaWMgZnJhbWUgZGVzY3JpcHRvci4iKTsKK1dFQlJUQ19ERUZJTkVfYm9v
bChnZW5lcmljX2Rlc2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAg
ICAgICAgICAgICAgIlVzZSB0aGUgZ2VuZXJpYyBmcmFtZSBkZXNjcmlwdG9yLiIpOwogCi1ERUZJ
TkVfYm9vbChhbGxvd19yZW9yZGVyaW5nLCBmYWxzZSwgIkFsbG93IHBhY2tldCByZW9yZGVyaW5n
IHRvIG9jY3VyIik7CitXRUJSVENfREVGSU5FX2Jvb2woYWxsb3dfcmVvcmRlcmluZywgZmFsc2Us
ICJBbGxvdyBwYWNrZXQgcmVvcmRlcmluZyB0byBvY2N1ciIpOwogCi1ERUZJTkVfYm9vbCh1c2Vf
dWxwZmVjLCBmYWxzZSwgIlVzZSBSRUQrVUxQRkVDIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbi4i
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbCh1c2VfdWxwZmVjLAorICAgICAgICAgICAgICAgICAgIGZh
bHNlLAorICAgICAgICAgICAgICAgICAgICJVc2UgUkVEK1VMUEZFQyBmb3J3YXJkIGVycm9yIGNv
cnJlY3Rpb24uIik7CiAKLURFRklORV9ib29sKHVzZV9mbGV4ZmVjLCBmYWxzZSwgIlVzZSBGbGV4
RkVDIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbi4iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCh1c2Vf
ZmxleGZlYywgZmFsc2UsICJVc2UgRmxleEZFQyBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24uIik7
CiAKLURFRklORV9ib29sKGF1ZGlvLCBmYWxzZSwgIkFkZCBhdWRpbyBzdHJlYW0iKTsKK1dFQlJU
Q19ERUZJTkVfYm9vbChhdWRpbywgZmFsc2UsICJBZGQgYXVkaW8gc3RyZWFtIik7CiAKLURFRklO
RV9ib29sKHVzZV9yZWFsX2FkbSwKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgIlVz
ZSByZWFsIEFETSBpbnN0ZWFkIG9mIGZha2UgKG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBmYWxzZSki
KTsKK1dFQlJUQ19ERUZJTkVfYm9vbCgKKyAgICB1c2VfcmVhbF9hZG0sCisgICAgZmFsc2UsCisg
ICAgIlVzZSByZWFsIEFETSBpbnN0ZWFkIG9mIGZha2UgKG5vIGVmZmVjdCBpZiBhdWRpbyBpcyBm
YWxzZSkiKTsKIAotREVGSU5FX2Jvb2woYXVkaW9fdmlkZW9fc3luYywKLSAgICAgICAgICAgIGZh
bHNlLAotICAgICAgICAgICAgIlN5bmMgYXVkaW8gYW5kIHZpZGVvIHN0cmVhbSAobm8gZWZmZWN0
IGlmIgotICAgICAgICAgICAgIiBhdWRpbyBpcyBmYWxzZSkiKTsKK1dFQlJUQ19ERUZJTkVfYm9v
bChhdWRpb192aWRlb19zeW5jLAorICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAg
ICAgICAgICAgICJTeW5jIGF1ZGlvIGFuZCB2aWRlbyBzdHJlYW0gKG5vIGVmZmVjdCBpZiIKKyAg
ICAgICAgICAgICAgICAgICAiIGF1ZGlvIGlzIGZhbHNlKSIpOwogCi1ERUZJTkVfYm9vbChhdWRp
b19kdHgsIGZhbHNlLCAiRW5hYmxlIGF1ZGlvIERUWCAobm8gZWZmZWN0IGlmIGF1ZGlvIGlzIGZh
bHNlKSIpOworV0VCUlRDX0RFRklORV9ib29sKGF1ZGlvX2R0eCwKKyAgICAgICAgICAgICAgICAg
ICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAiRW5hYmxlIGF1ZGlvIERUWCAobm8gZWZmZWN0
IGlmIGF1ZGlvIGlzIGZhbHNlKSIpOwogCi1ERUZJTkVfYm9vbCh2aWRlbywgdHJ1ZSwgIkFkZCB2
aWRlbyBzdHJlYW0iKTsKK1dFQlJUQ19ERUZJTkVfYm9vbCh2aWRlbywgdHJ1ZSwgIkFkZCB2aWRl
byBzdHJlYW0iKTsKIAotREVGSU5FX3N0cmluZygKK1dFQlJUQ19ERUZJTkVfc3RyaW5nKAogICAg
IGZvcmNlX2ZpZWxkdHJpYWxzLAogICAgICIiLAogICAgICJGaWVsZCB0cmlhbHMgY29udHJvbCBl
eHBlcmltZW50YWwgZmVhdHVyZSBjb2RlIHdoaWNoIGNhbiBiZSBmb3JjZWQuICIKLSAgICAiRS5n
LiBydW5uaW5nIHdpdGggLS1mb3JjZV9maWVsZHRyaWFscz1XZWJSVEMtRm9vRmVhdHVyZS9FbmFi
bGUvIgorICAgICJFLmcuIHJ1bm5pbmcgd2l0aCAtLWZvcmNlX2ZpZWxkdHJpYWxzPVdlYlJUQy1G
b29GZWF0dXJlL0VuYWJsZWQvIgogICAgICIgd2lsbCBhc3NpZ24gdGhlIGdyb3VwIEVuYWJsZSB0
byBmaWVsZCB0cmlhbCBXZWJSVEMtRm9vRmVhdHVyZS4gTXVsdGlwbGUgIgogICAgICJ0cmlhbHMg
YXJlIHNlcGFyYXRlZCBieSBcIi9cIiIpOwogCiAvLyBWaWRlby1zcGVjaWZpYyBmbGFncy4KLURF
RklORV9zdHJpbmcoY2xpcCwKLSAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICAgICJOYW1l
IG9mIHRoZSBjbGlwIHRvIHNob3cuIElmIGVtcHR5LCB1c2luZyBjaHJvbWEgZ2VuZXJhdG9yLiIp
OworV0VCUlRDX0RFRklORV9zdHJpbmcoCisgICAgY2xpcCwKKyAgICAiIiwKKyAgICAiTmFtZSBv
ZiB0aGUgY2xpcCB0byBzaG93LiBJZiBlbXB0eSwgdXNpbmcgY2hyb21hIGdlbmVyYXRvci4iKTsK
IHN0ZDo6c3RyaW5nIENsaXAoKSB7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZz4o
RkxBR19jbGlwKTsKIH0KIAotREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBt
ZXNzYWdlIik7CitXRUJSVENfREVGSU5FX2Jvb2woaGVscCwgZmFsc2UsICJwcmludHMgdGhpcyBt
ZXNzYWdlIik7CiAKIH0gIC8vIG5hbWVzcGFjZSBmbGFncwogCiB2b2lkIExvb3BiYWNrKCkgewot
ICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgcGlwZV9jb25maWc7CisgIEJ1aWx0SW5O
ZXR3b3JrQmVoYXZpb3JDb25maWcgcGlwZV9jb25maWc7CiAgIHBpcGVfY29uZmlnLmxvc3NfcGVy
Y2VudCA9IGZsYWdzOjpMb3NzUGVyY2VudCgpOwogICBwaXBlX2NvbmZpZy5hdmdfYnVyc3RfbG9z
c19sZW5ndGggPSBmbGFnczo6QXZnQnVyc3RMb3NzTGVuZ3RoKCk7CiAgIHBpcGVfY29uZmlnLmxp
bmtfY2FwYWNpdHlfa2JwcyA9IGZsYWdzOjpMaW5rQ2FwYWNpdHlLYnBzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19x
dWFsaXR5X29ic2VydmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vdmlkZW9fcXVhbGl0eV9vYnNlcnZlci5jYwppbmRleCBiMDVjMzUzNWUwY2U3
MTcxNTIzMjFmNGE2YjBhNmZhNTE0NDc4ZDA5Li5jNGE1NzRhYmZlMGU2MGExODI4NzljNTM0OWYx
MzM2ODc4ZWY0MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X29ic2VydmVyLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfb2Jz
ZXJ2ZXIuY2MKQEAgLTM0LDcgKzM0LDkgQEAgY29uc3QgaW50IGtCbG9ja3lRcFRocmVzaG9sZFZw
OSA9IDYwOyAgLy8gVE9ETyhpbG5payk6IHR1bmUgdGhpcyB2YWx1ZS4KIAogVmlkZW9RdWFsaXR5
T2JzZXJ2ZXI6OlZpZGVvUXVhbGl0eU9ic2VydmVyKFZpZGVvQ29udGVudFR5cGUgY29udGVudF90
eXBlKQogICAgIDogbGFzdF9mcmFtZV9kZWNvZGVkX21zXygtMSksCisgICAgICBsYXN0X2ZyYW1l
X3JlbmRlcmVkX21zXygtMSksCiAgICAgICBudW1fZnJhbWVzX2RlY29kZWRfKDApLAorICAgICAg
bnVtX2ZyYW1lc19yZW5kZXJlZF8oMCksCiAgICAgICBmaXJzdF9mcmFtZV9kZWNvZGVkX21zXygt
MSksCiAgICAgICBsYXN0X2ZyYW1lX3BpeGVsc18oMCksCiAgICAgICBsYXN0X2ZyYW1lX3FwXygw
KSwKQEAgLTExOSw2ICsxMjEsNDYgQEAgdm9pZCBWaWRlb1F1YWxpdHlPYnNlcnZlcjo6VXBkYXRl
SGlzdG9ncmFtcygpIHsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCBsb2dfc3RyZWFtLnN0cigpOwog
fQogCit2b2lkIFZpZGVvUXVhbGl0eU9ic2VydmVyOjpPblJlbmRlcmVkRnJhbWUoaW50NjRfdCBu
b3dfbXMpIHsKKyAgaWYgKG51bV9mcmFtZXNfcmVuZGVyZWRfID09IDApIHsKKyAgICBsYXN0X3Vu
ZnJlZXplX3RpbWVfID0gbm93X21zOworICB9CisKKyAgKytudW1fZnJhbWVzX3JlbmRlcmVkXzsK
KworICBpZiAoIWlzX3BhdXNlZF8gJiYgbnVtX2ZyYW1lc19yZW5kZXJlZF8gPiAxKSB7CisgICAg
Ly8gUHJvY2VzcyBpbnRlci1mcmFtZSBkZWxheS4KKyAgICBpbnQ2NF90IGludGVyZnJhbWVfZGVs
YXlfbXMgPSBub3dfbXMgLSBsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXzsKKyAgICByZW5kZXJfaW50
ZXJmcmFtZV9kZWxheXNfLkFkZChpbnRlcmZyYW1lX2RlbGF5X21zKTsKKyAgICBhYnNsOjpvcHRp
b25hbDxpbnQ+IGF2Z19pbnRlcmZyYW1lX2RlbGF5ID0KKyAgICAgICAgcmVuZGVyX2ludGVyZnJh
bWVfZGVsYXlzXy5Bdmcoa01pbkZyYW1lU2FtcGxlc1RvRGV0ZWN0RnJlZXplKTsKKyAgICAvLyBD
aGVjayBpZiBpdCB3YXMgYSBmcmVlemUuCisgICAgaWYgKGF2Z19pbnRlcmZyYW1lX2RlbGF5ICYm
CisgICAgICAgIGludGVyZnJhbWVfZGVsYXlfbXMgPj0KKyAgICAgICAgICAgIHN0ZDo6bWF4KDMg
KiAqYXZnX2ludGVyZnJhbWVfZGVsYXksCisgICAgICAgICAgICAgICAgICAgICAqYXZnX2ludGVy
ZnJhbWVfZGVsYXkgKyBrTWluSW5jcmVhc2VGb3JGcmVlemVNcykpIHsKKyAgICAgIGZyZWV6ZXNf
ZHVyYXRpb25zXy5BZGQoaW50ZXJmcmFtZV9kZWxheV9tcyk7CisgICAgICBzbW9vdGhfcGxheWJh
Y2tfZHVyYXRpb25zXy5BZGQobGFzdF9mcmFtZV9yZW5kZXJlZF9tc18gLQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfdW5mcmVlemVfdGltZV8pOworICAgICAgbGFz
dF91bmZyZWV6ZV90aW1lXyA9IG5vd19tczsKKyAgICB9CisgIH0KKworICBpZiAoaXNfcGF1c2Vk
XykgeworICAgIC8vIElmIHRoZSBzdHJlYW0gd2FzIHBhdXNlZCBzaW5jZSB0aGUgcHJldmlvdXMg
ZnJhbWUsIGRvIG5vdCBjb3VudCB0aGUKKyAgICAvLyBwYXVzZSB0b3dhcmQgc21vb3RoIHBsYXli
YWNrLiBFeHBsaWNpdGx5IGNvdW50IHRoZSBwYXJ0IGJlZm9yZSBpdCBhbmQKKyAgICAvLyBzdGFy
dCB0aGUgbmV3IHNtb290aCBwbGF5YmFjayBpbnRlcnZhbCBmcm9tIHRoaXMgZnJhbWUuCisgICAg
aXNfcGF1c2VkXyA9IGZhbHNlOworICAgIGlmIChsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXyA+IGxh
c3RfdW5mcmVlemVfdGltZV8pIHsKKyAgICAgIHNtb290aF9wbGF5YmFja19kdXJhdGlvbnNfLkFk
ZChsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGFzdF91bmZyZWV6ZV90aW1lXyk7CisgICAgfQorICAgIGxhc3RfdW5mcmVlemVf
dGltZV8gPSBub3dfbXM7CisgIH0KKworICBsYXN0X2ZyYW1lX3JlbmRlcmVkX21zXyA9IG5vd19t
czsKK30KKwogdm9pZCBWaWRlb1F1YWxpdHlPYnNlcnZlcjo6T25EZWNvZGVkRnJhbWUoYWJzbDo6
b3B0aW9uYWw8dWludDhfdD4gcXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgaGVpZ2h0LApAQCAtMTI2LDcgKzE2OCw2IEBAIHZvaWQgVmlkZW9RdWFsaXR5T2Jz
ZXJ2ZXI6Ok9uRGVjb2RlZEZyYW1lKGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+IHFwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9Db2RlY1R5cGUgY29kZWMp
IHsKICAgaWYgKG51bV9mcmFtZXNfZGVjb2RlZF8gPT0gMCkgewogICAgIGZpcnN0X2ZyYW1lX2Rl
Y29kZWRfbXNfID0gbm93X21zOwotICAgIGxhc3RfdW5mcmVlemVfdGltZV8gPSBub3dfbXM7CiAg
IH0KIAogICArK251bV9mcmFtZXNfZGVjb2RlZF87CkBAIC0xMzQsMjEgKzE3NSwxNCBAQCB2b2lk
IFZpZGVvUXVhbGl0eU9ic2VydmVyOjpPbkRlY29kZWRGcmFtZShhYnNsOjpvcHRpb25hbDx1aW50
OF90PiBxcCwKICAgaWYgKCFpc19wYXVzZWRfICYmIG51bV9mcmFtZXNfZGVjb2RlZF8gPiAxKSB7
CiAgICAgLy8gUHJvY2VzcyBpbnRlci1mcmFtZSBkZWxheS4KICAgICBpbnQ2NF90IGludGVyZnJh
bWVfZGVsYXlfbXMgPSBub3dfbXMgLSBsYXN0X2ZyYW1lX2RlY29kZWRfbXNfOwotICAgIGludGVy
ZnJhbWVfZGVsYXlzXy5BZGQoaW50ZXJmcmFtZV9kZWxheV9tcyk7CisgICAgZGVjb2RlX2ludGVy
ZnJhbWVfZGVsYXlzXy5BZGQoaW50ZXJmcmFtZV9kZWxheV9tcyk7CiAgICAgYWJzbDo6b3B0aW9u
YWw8aW50PiBhdmdfaW50ZXJmcmFtZV9kZWxheSA9Ci0gICAgICAgIGludGVyZnJhbWVfZGVsYXlz
Xy5Bdmcoa01pbkZyYW1lU2FtcGxlc1RvRGV0ZWN0RnJlZXplKTsKLSAgICAvLyBDaGVjayBpZiBp
dCB3YXMgYSBmcmVlemUuCi0gICAgaWYgKGF2Z19pbnRlcmZyYW1lX2RlbGF5ICYmCi0gICAgICAg
IGludGVyZnJhbWVfZGVsYXlfbXMgPj0KKyAgICAgICAgZGVjb2RlX2ludGVyZnJhbWVfZGVsYXlz
Xy5Bdmcoa01pbkZyYW1lU2FtcGxlc1RvRGV0ZWN0RnJlZXplKTsKKyAgICAvLyBDb3VudCBzcGF0
aWFsIG1ldHJpY3MgaWYgdGhlcmUgd2VyZSBubyBmcmVlemUuCisgICAgaWYgKCFhdmdfaW50ZXJm
cmFtZV9kZWxheSB8fAorICAgICAgICBpbnRlcmZyYW1lX2RlbGF5X21zIDwKICAgICAgICAgICAg
IHN0ZDo6bWF4KDMgKiAqYXZnX2ludGVyZnJhbWVfZGVsYXksCiAgICAgICAgICAgICAgICAgICAg
ICAqYXZnX2ludGVyZnJhbWVfZGVsYXkgKyBrTWluSW5jcmVhc2VGb3JGcmVlemVNcykpIHsKLSAg
ICAgIGZyZWV6ZXNfZHVyYXRpb25zXy5BZGQoaW50ZXJmcmFtZV9kZWxheV9tcyk7Ci0gICAgICBz
bW9vdGhfcGxheWJhY2tfZHVyYXRpb25zXy5BZGQobGFzdF9mcmFtZV9kZWNvZGVkX21zXyAtCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF91bmZyZWV6ZV90aW1lXyk7
Ci0gICAgICBsYXN0X3VuZnJlZXplX3RpbWVfID0gbm93X21zOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAvLyBPbmx5IGNvdW50IGludGVyLWZyYW1lIGRlbGF5IGFzIHBsYXliYWNrIHRpbWUgaWYgdGhl
cmUKLSAgICAgIC8vIHdhcyBubyBmcmVlemUuCiAgICAgICB0aW1lX2luX3Jlc29sdXRpb25fbXNf
W2N1cnJlbnRfcmVzb2x1dGlvbl9dICs9IGludGVyZnJhbWVfZGVsYXlfbXM7CiAgICAgICBhYnNs
OjpvcHRpb25hbDxpbnQ+IHFwX2Jsb2NreV90aHJlc2hvbGQ7CiAgICAgICAvLyBUT0RPKGlsbmlr
KTogYWRkIG90aGVyIGNvZGVjIHR5cGVzIHdoZW4gd2UgaGF2ZSBRUCBmb3IgdGhlbS4KQEAgLTE2
OCwxOCArMjAyLDYgQEAgdm9pZCBWaWRlb1F1YWxpdHlPYnNlcnZlcjo6T25EZWNvZGVkRnJhbWUo
YWJzbDo6b3B0aW9uYWw8dWludDhfdD4gcXAsCiAgICAgfQogICB9CiAKLSAgaWYgKGlzX3BhdXNl
ZF8pIHsKLSAgICAvLyBJZiB0aGUgc3RyZWFtIHdhcyBwYXVzZWQgc2luY2UgdGhlIHByZXZpb3Vz
IGZyYW1lLCBkbyBub3QgY291bnQgdGhlCi0gICAgLy8gcGF1c2UgdG93YXJkIHNtb290aCBwbGF5
YmFjay4gRXhwbGljaXRseSBjb3VudCB0aGUgcGFydCBiZWZvcmUgaXQgYW5kCi0gICAgLy8gc3Rh
cnQgdGhlIG5ldyBzbW9vdGggcGxheWJhY2sgaW50ZXJ2YWwgZnJvbSB0aGlzIGZyYW1lLgotICAg
IGlzX3BhdXNlZF8gPSBmYWxzZTsKLSAgICBpZiAobGFzdF9mcmFtZV9kZWNvZGVkX21zXyA+IGxh
c3RfdW5mcmVlemVfdGltZV8pIHsKLSAgICAgIHNtb290aF9wbGF5YmFja19kdXJhdGlvbnNfLkFk
ZChsYXN0X2ZyYW1lX2RlY29kZWRfbXNfIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsYXN0X3VuZnJlZXplX3RpbWVfKTsKLSAgICB9Ci0gICAgbGFzdF91bmZyZWV6ZV90
aW1lXyA9IG5vd19tczsKLSAgfQotCiAgIGludDY0X3QgcGl4ZWxzID0gd2lkdGggKiBoZWlnaHQ7
CiAgIGlmIChwaXhlbHMgPj0ga1BpeGVsc0luSGlnaFJlc29sdXRpb24pIHsKICAgICBjdXJyZW50
X3Jlc29sdXRpb25fID0gUmVzb2x1dGlvbjo6SGlnaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfb2JzZXJ2
ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Zp
ZGVvX3F1YWxpdHlfb2JzZXJ2ZXIuaAppbmRleCA4YmE0YWYzOTg0MmE4ZGUwMTA2ODNlMWNkYTc0
NDhjMWY2ZDNkYmIxLi43NGYyMDFlOGM0NWY1M2Y1NjdlZTBjOTc1OWY4NTk4Y2I3MzQ0ZjdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by92aWRlb19xdWFsaXR5X29ic2VydmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcXVhbGl0eV9vYnNlcnZlci5oCkBAIC0xNSw4
ICsxNSw4IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRp
b25hbC5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19jb2RlY190eXBlLmgiCiAjaW5jbHVk
ZSAiYXBpL3ZpZGVvL3ZpZGVvX2NvbnRlbnRfdHlwZS5oIgotI2luY2x1ZGUgImNvbW1vbl90eXBl
cy5oIiAgLy8gTk9MSU5UKGJ1aWxkL2luY2x1ZGUpCiAjaW5jbHVkZSAicnRjX2Jhc2UvbnVtZXJp
Y3Mvc2FtcGxlX2NvdW50ZXIuaCIKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC0zNSw2ICszNSw3
IEBAIGNsYXNzIFZpZGVvUXVhbGl0eU9ic2VydmVyIHsKICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qgbm93X21zLAogICAgICAg
ICAgICAgICAgICAgICAgIFZpZGVvQ29kZWNUeXBlIGNvZGVjKTsKKyAgdm9pZCBPblJlbmRlcmVk
RnJhbWUoaW50NjRfdCBub3dfbXMpOwogCiAgIHZvaWQgT25TdHJlYW1JbmFjdGl2ZSgpOwogCkBA
IC00OCwxMyArNDksMTYgQEAgY2xhc3MgVmlkZW9RdWFsaXR5T2JzZXJ2ZXIgewogICB9OwogCiAg
IGludDY0X3QgbGFzdF9mcmFtZV9kZWNvZGVkX21zXzsKKyAgaW50NjRfdCBsYXN0X2ZyYW1lX3Jl
bmRlcmVkX21zXzsKICAgaW50NjRfdCBudW1fZnJhbWVzX2RlY29kZWRfOworICBpbnQ2NF90IG51
bV9mcmFtZXNfcmVuZGVyZWRfOwogICBpbnQ2NF90IGZpcnN0X2ZyYW1lX2RlY29kZWRfbXNfOwog
ICBpbnQ2NF90IGxhc3RfZnJhbWVfcGl4ZWxzXzsKICAgdWludDhfdCBsYXN0X2ZyYW1lX3FwXzsK
ICAgLy8gRGVjb2RlZCB0aW1lc3RhbXAgb2YgdGhlIGxhc3QgZGVsYXllZCBmcmFtZS4KICAgaW50
NjRfdCBsYXN0X3VuZnJlZXplX3RpbWVfOwotICBydGM6OlNhbXBsZUNvdW50ZXIgaW50ZXJmcmFt
ZV9kZWxheXNfOworICBydGM6OlNhbXBsZUNvdW50ZXIgcmVuZGVyX2ludGVyZnJhbWVfZGVsYXlz
XzsKKyAgcnRjOjpTYW1wbGVDb3VudGVyIGRlY29kZV9pbnRlcmZyYW1lX2RlbGF5c187CiAgIC8v
IEFuIGludGVyLWZyYW1lIGRlbGF5IGlzIGNvdW50ZWQgYXMgYSBmcmVlemUgaWYgaXQncyBzaWdu
aWZpY2FudGx5IGxvbmdlcgogICAvLyB0aGFuIGF2ZXJhZ2UgaW50ZXItZnJhbWUgZGVsYXkuCiAg
IHJ0Yzo6U2FtcGxlQ291bnRlciBmcmVlemVzX2R1cmF0aW9uc187CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by92aWRlb19xdWFsaXR5X3Rlc3QuY2MKaW5kZXggMmEzYmU2NzJkNzYwNjhhMTQxNTQzZTg5MGJh
MWQ4YjYxYjViYzlhYi4uZDZjY2I2NTIyZTU4MzIxNzdmYzViNDg1MzI5ZGFkZDkxYTAyNzY3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlk
ZW8vdmlkZW9fcXVhbGl0eV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfdGVzdC5jYwpAQCAtMTYsNiArMTYs
NyBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJh
cGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5j
bHVkZSAiY2FsbC9mYWtlX25ldHdvcmtfcGlwZS5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVk
X25ldHdvcmsuaCIKICNpbmNsdWRlICJsb2dnaW5nL3J0Y19ldmVudF9sb2cvb3V0cHV0L3J0Y19l
dmVudF9sb2dfb3V0cHV0X2ZpbGUuaCIKQEAgLTM1LDcgKzM2LDcgQEAKICNpbmNsdWRlICJ0ZXN0
L3J1bl9sb29wLmgiCiAjaW5jbHVkZSAidGVzdC90ZXN0c3VwcG9ydC9maWxldXRpbHMuaCIKICNp
bmNsdWRlICJ0ZXN0L3ZpZGVvX3JlbmRlcmVyLmgiCi0jaW5jbHVkZSAidmlkZW8vdmlkZW9fYW5h
bHl6ZXIuaCIKKyNpbmNsdWRlICJ2aWRlby9mcmFtZV9kdW1waW5nX2RlY29kZXIuaCIKICNpZmRl
ZiBXRUJSVENfV0lOCiAjaW5jbHVkZSAibW9kdWxlcy9hdWRpb19kZXZpY2UvaW5jbHVkZS9hdWRp
b19kZXZpY2VfZmFjdG9yeS5oIgogI2VuZGlmCkBAIC03NSw2MSArNzYsMTYgQEAgY2xhc3MgVmlk
ZW9TdHJlYW1GYWN0b3J5CiAgIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBzdHJlYW1zXzsKIH07
CiAKLS8vIEEgZGVjb2RlciB3cmFwcGVyIHRoYXQgd3JpdGVzIHRoZSBlbmNvZGVkIGZyYW1lcyB0
byBhIGZpbGUuCi1jbGFzcyBGcmFtZUR1bXBpbmdEZWNvZGVyIDogcHVibGljIFZpZGVvRGVjb2Rl
ciB7CisvLyBUaGlzIHdyYXBwZXIgcHJvdmlkZXMgdHdvIGZlYXR1cmVzIG5lZWRlZCBieSB0aGUg
dmlkZW8gcXVhbGl0eSB0ZXN0czoKKy8vICAxLiBJbnZva2UgVmlkZW9BbmFseXplciBjYWxsYmFj
a3MgYmVmb3JlIGFuZCBhZnRlciBlbmNvZGluZyBlYWNoIGZyYW1lLgorLy8gIDIuIFdyaXRlIHRo
ZSBlbmNvZGVkIGZyYW1lcyB0byBmaWxlLCBvbmUgZmlsZSBwZXIgc2ltdWxjYXN0IGxheWVyLgor
Y2xhc3MgUXVhbGl0eVRlc3RWaWRlb0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlIEVuY29kZWRJbWFnZUNhbGxiYWNr
IHsKICBwdWJsaWM6Ci0gIEZyYW1lRHVtcGluZ0RlY29kZXIoc3RkOjp1bmlxdWVfcHRyPFZpZGVv
RGVjb2Rlcj4gZGVjb2RlciwKLSAgICAgICAgICAgICAgICAgICAgICBydGM6OlBsYXRmb3JtRmls
ZSBmaWxlKQotICAgICAgOiBkZWNvZGVyXyhzdGQ6Om1vdmUoZGVjb2RlcikpLAotICAgICAgICB3
cml0ZXJfKEl2ZkZpbGVXcml0ZXI6OldyYXAocnRjOjpGaWxlKGZpbGUpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogYnl0ZV9saW1pdD0gKi8gMTAwMDAwMDAwKSkge30K
LQotICBpbnQzMl90IEluaXREZWNvZGUoY29uc3QgVmlkZW9Db2RlYyogY29kZWNfc2V0dGluZ3Ms
Ci0gICAgICAgICAgICAgICAgICAgICBpbnQzMl90IG51bWJlcl9vZl9jb3Jlcykgb3ZlcnJpZGUg
ewotICAgIHJldHVybiBkZWNvZGVyXy0+SW5pdERlY29kZShjb2RlY19zZXR0aW5ncywgbnVtYmVy
X29mX2NvcmVzKTsKLSAgfQotCi0gIGludDMyX3QgRGVjb2RlKGNvbnN0IEVuY29kZWRJbWFnZSYg
aW5wdXRfaW1hZ2UsCi0gICAgICAgICAgICAgICAgIGJvb2wgbWlzc2luZ19mcmFtZXMsCi0gICAg
ICAgICAgICAgICAgIGNvbnN0IENvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY19zcGVjaWZpY19pbmZv
LAotICAgICAgICAgICAgICAgICBpbnQ2NF90IHJlbmRlcl90aW1lX21zKSBvdmVycmlkZSB7Ci0g
ICAgaW50MzJfdCByZXQgPSBkZWNvZGVyXy0+RGVjb2RlKGlucHV0X2ltYWdlLCBtaXNzaW5nX2Zy
YW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNfc3BlY2lmaWNf
aW5mbywgcmVuZGVyX3RpbWVfbXMpOwotICAgIHdyaXRlcl8tPldyaXRlRnJhbWUoaW5wdXRfaW1h
Z2UsIGNvZGVjX3NwZWNpZmljX2luZm8tPmNvZGVjVHlwZSk7Ci0KLSAgICByZXR1cm4gcmV0Owot
ICB9Ci0KLSAgaW50MzJfdCBSZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soCi0gICAgICBE
ZWNvZGVkSW1hZ2VDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlIHsKLSAgICByZXR1cm4gZGVj
b2Rlcl8tPlJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayhjYWxsYmFjayk7Ci0gIH0KLQot
ICBpbnQzMl90IFJlbGVhc2UoKSBvdmVycmlkZSB7IHJldHVybiBkZWNvZGVyXy0+UmVsZWFzZSgp
OyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBkZWNvZGVyIHByZWZlciB0byBkZWNvZGUg
ZnJhbWVzIGxhdGUuCi0gIC8vIFRoYXQgaXMsIGl0IGNhbiBub3QgZGVjb2RlIGluZmluaXRlIG51
bWJlciBvZiBmcmFtZXMgYmVmb3JlIHRoZSBkZWNvZGVkCi0gIC8vIGZyYW1lIGlzIGNvbnN1bWVk
LgotICBib29sIFByZWZlcnNMYXRlRGVjb2RpbmcoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgcmV0
dXJuIGRlY29kZXJfLT5QcmVmZXJzTGF0ZURlY29kaW5nKCk7Ci0gIH0KLQotICBjb25zdCBjaGFy
KiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIGRlY29k
ZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgc3RkOjp1bmlx
dWVfcHRyPFZpZGVvRGVjb2Rlcj4gZGVjb2Rlcl87Ci0gIHN0ZDo6dW5pcXVlX3B0cjxJdmZGaWxl
V3JpdGVyPiB3cml0ZXJfOwotfTsKLQotLy8gQW4gZW5jb2RlciB3cmFwcGVyIHRoYXQgd3JpdGVz
IHRoZSBlbmNvZGVkIGZyYW1lcyB0byBmaWxlLCBvbmUgcGVyIHNpbXVsY2FzdAotLy8gbGF5ZXIu
Ci1jbGFzcyBGcmFtZUR1bXBpbmdFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciwgcHJpdmF0
ZSBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7Ci0gcHVibGljOgotICBGcmFtZUR1bXBpbmdFbmNvZGVy
KHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IGVuY29kZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpQbGF0Zm9ybUZpbGU+IGZpbGVzKQotICAgICAgOiBlbmNv
ZGVyXyhzdGQ6Om1vdmUoZW5jb2RlcikpIHsKKyAgUXVhbGl0eVRlc3RWaWRlb0VuY29kZXIoc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gZW5jb2RlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmlkZW9BbmFseXplciogYW5hbHl6ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6dmVjdG9yPHJ0Yzo6UGxhdGZvcm1GaWxlPiBmaWxlcykKKyAgICAgIDogZW5jb2Rlcl8o
c3RkOjptb3ZlKGVuY29kZXIpKSwgYW5hbHl6ZXJfKGFuYWx5emVyKSB7CiAgICAgZm9yIChydGM6
OlBsYXRmb3JtRmlsZSBmaWxlIDogZmlsZXMpIHsKICAgICAgIHdyaXRlcnNfLnB1c2hfYmFjaygK
ICAgICAgICAgICBJdmZGaWxlV3JpdGVyOjpXcmFwKHJ0Yzo6RmlsZShmaWxlKSwgLyogYnl0ZV9s
aW1pdD0gKi8gMTAwMDAwMDAwKSk7CkBAIC0xNTEsMTEgKzEwNywxMSBAQCBjbGFzcyBGcmFtZUR1
bXBpbmdFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVkSW1hZ2VD
YWxsYmFjayB7CiAgIGludDMyX3QgRW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLAogICAg
ICAgICAgICAgICAgICBjb25zdCBDb2RlY1NwZWNpZmljSW5mbyogY29kZWNfc3BlY2lmaWNfaW5m
bywKICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RnJhbWVUeXBlPiogZnJhbWVf
dHlwZXMpIHsKKyAgICBpZiAoYW5hbHl6ZXJfKSB7CisgICAgICBhbmFseXplcl8tPlByZUVuY29k
ZU9uRnJhbWUoZnJhbWUpOworICAgIH0KICAgICByZXR1cm4gZW5jb2Rlcl8tPkVuY29kZShmcmFt
ZSwgY29kZWNfc3BlY2lmaWNfaW5mbywgZnJhbWVfdHlwZXMpOwogICB9Ci0gIGludDMyX3QgU2V0
Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0X2xvc3MsIGludDY0X3QgcnR0KSBvdmVy
cmlkZSB7Ci0gICAgcmV0dXJuIGVuY29kZXJfLT5TZXRDaGFubmVsUGFyYW1ldGVycyhwYWNrZXRf
bG9zcywgcnR0KTsKLSAgfQogICBpbnQzMl90IFNldFJhdGVzKHVpbnQzMl90IGJpdHJhdGUsIHVp
bnQzMl90IGZyYW1lcmF0ZSkgb3ZlcnJpZGUgewogICAgIHJldHVybiBlbmNvZGVyXy0+U2V0UmF0
ZXMoYml0cmF0ZSwgZnJhbWVyYXRlKTsKICAgfQpAQCAtMTYzLDE0ICsxMTksOCBAQCBjbGFzcyBG
cmFtZUR1bXBpbmdFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVk
SW1hZ2VDYWxsYmFjayB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJh
bWVyYXRlKSBvdmVycmlkZSB7CiAgICAgcmV0dXJuIGVuY29kZXJfLT5TZXRSYXRlQWxsb2NhdGlv
bihhbGxvY2F0aW9uLCBmcmFtZXJhdGUpOwogICB9Ci0gIFNjYWxpbmdTZXR0aW5ncyBHZXRTY2Fs
aW5nU2V0dGluZ3MoKSBjb25zdCBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIGVuY29kZXJfLT5HZXRT
Y2FsaW5nU2V0dGluZ3MoKTsKLSAgfQotICBib29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29u
c3Qgb3ZlcnJpZGUgewotICAgIHJldHVybiBlbmNvZGVyXy0+U3VwcG9ydHNOYXRpdmVIYW5kbGUo
KTsKLSAgfQotICBjb25zdCBjaGFyKiBJbXBsZW1lbnRhdGlvbk5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7Ci0gICAgcmV0dXJuIGVuY29kZXJfLT5JbXBsZW1lbnRhdGlvbk5hbWUoKTsKKyAgRW5jb2Rl
ckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBvdmVycmlkZSB7CisgICAgcmV0dXJuIGVuY29k
ZXJfLT5HZXRFbmNvZGVySW5mbygpOwogICB9CiAKICBwcml2YXRlOgpAQCAtMTg2LDYgKzEzNiwx
MCBAQCBjbGFzcyBGcmFtZUR1bXBpbmdFbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciwgcHJp
dmF0ZSBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7CiAgICAgICAgIHNpbXVsY2FzdF9pbmRleCA9IGVu
Y29kZWRfaW1hZ2UuU3BhdGlhbEluZGV4KCkudmFsdWVfb3IoMCk7CiAgICAgICB9CiAgICAgICBS
VENfRENIRUNLX0dFKHNpbXVsY2FzdF9pbmRleCwgMCk7CisgICAgICBpZiAoYW5hbHl6ZXJfKSB7
CisgICAgICAgIGFuYWx5emVyXy0+UG9zdEVuY29kZU9uRnJhbWUoc2ltdWxjYXN0X2luZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRfaW1hZ2UuVGltZXN0
YW1wKCkpOworICAgICAgfQogICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oc2ltdWxjYXN0
X2luZGV4KSA8IHdyaXRlcnNfLnNpemUoKSkgewogICAgICAgICB3cml0ZXJzX1tzaW11bGNhc3Rf
aW5kZXhdLT5Xcml0ZUZyYW1lKGVuY29kZWRfaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNfc3BlY2lmaWNfaW5mby0+Y29kZWNUeXBlKTsK
QEAgLTIwMiw2ICsxNTYsNyBAQCBjbGFzcyBGcmFtZUR1bXBpbmdFbmNvZGVyIDogcHVibGljIFZp
ZGVvRW5jb2RlciwgcHJpdmF0ZSBFbmNvZGVkSW1hZ2VDYWxsYmFjayB7CiAKICAgc3RkOjp1bmlx
dWVfcHRyPFZpZGVvRW5jb2Rlcj4gZW5jb2Rlcl87CiAgIEVuY29kZWRJbWFnZUNhbGxiYWNrKiBj
YWxsYmFja18gPSBudWxscHRyOworICBWaWRlb0FuYWx5emVyKiBjb25zdCBhbmFseXplcl87CiAg
IHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJdmZGaWxlV3JpdGVyPj4gd3JpdGVyc187CiB9
OwogCkBAIC0yMjgsNyArMTgzLDggQEAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRGVjb2Rlcj4gVmlk
ZW9RdWFsaXR5VGVzdDo6Q3JlYXRlVmlkZW9EZWNvZGVyKAogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9FbmNvZGVyPiBWaWRlb1F1YWxpdHlUZXN0OjpDcmVhdGVWaWRlb0VuY29kZXIoCi0gICAg
Y29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgeworICAgIGNvbnN0IFNkcFZpZGVvRm9ybWF0
JiBmb3JtYXQsCisgICAgVmlkZW9BbmFseXplciogYW5hbHl6ZXIpIHsKICAgc3RkOjp1bmlxdWVf
cHRyPFZpZGVvRW5jb2Rlcj4gZW5jb2RlcjsKICAgaWYgKGZvcm1hdC5uYW1lID09ICJWUDgiKSB7
CiAgICAgZW5jb2RlciA9IGFic2w6Om1ha2VfdW5pcXVlPFZQOEVuY29kZXJTaW11bGNhc3RQcm94
eT4oCkBAIC0yNDUsMTIgKzIwMSwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBW
aWRlb1F1YWxpdHlUZXN0OjpDcmVhdGVWaWRlb0VuY29kZXIoCiAgICAgc2IgPDwgc2VuZF9sb2dz
XysrOwogICAgIHN0ZDo6c3RyaW5nIHByZWZpeCA9CiAgICAgICAgIHBhcmFtc18ubG9nZ2luZy5l
bmNvZGVkX2ZyYW1lX2Jhc2VfcGF0aCArICIuIiArIHNiLnN0cigpICsgIi5zZW5kLiI7Ci0gICAg
ZW5jb2RlciA9IGFic2w6Om1ha2VfdW5pcXVlPEZyYW1lRHVtcGluZ0VuY29kZXI+KAotICAgICAg
ICBzdGQ6Om1vdmUoZW5jb2RlciksIHN0ZDo6dmVjdG9yPHJ0Yzo6UGxhdGZvcm1GaWxlPigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3J0Yzo6Q3JlYXRlUGxhdGZvcm1GaWxlKHBy
ZWZpeCArICIxLml2ZiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRjOjpD
cmVhdGVQbGF0Zm9ybUZpbGUocHJlZml4ICsgIjIuaXZmIiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydGM6OkNyZWF0ZVBsYXRmb3JtRmlsZShwcmVmaXggKyAiMy5pdmYiKX0p
KTsKKyAgICBlbmNvZGVyID0gYWJzbDo6bWFrZV91bmlxdWU8UXVhbGl0eVRlc3RWaWRlb0VuY29k
ZXI+KAorICAgICAgICBzdGQ6Om1vdmUoZW5jb2RlciksIGFuYWx5emVyLAorICAgICAgICBzdGQ6
OnZlY3RvcjxydGM6OlBsYXRmb3JtRmlsZT4oCisgICAgICAgICAgICB7cnRjOjpDcmVhdGVQbGF0
Zm9ybUZpbGUocHJlZml4ICsgIjEuaXZmIiksCisgICAgICAgICAgICAgcnRjOjpDcmVhdGVQbGF0
Zm9ybUZpbGUocHJlZml4ICsgIjIuaXZmIiksCisgICAgICAgICAgICAgcnRjOjpDcmVhdGVQbGF0
Zm9ybUZpbGUocHJlZml4ICsgIjMuaXZmIil9KSk7CisgIH0gZWxzZSBpZiAoYW5hbHl6ZXIpIHsK
KyAgICBlbmNvZGVyID0gYWJzbDo6bWFrZV91bmlxdWU8UXVhbGl0eVRlc3RWaWRlb0VuY29kZXI+
KAorICAgICAgICBzdGQ6Om1vdmUoZW5jb2RlciksIGFuYWx5emVyLCBzdGQ6OnZlY3RvcjxydGM6
OlBsYXRmb3JtRmlsZT4oKSk7CiAgIH0KKwogICByZXR1cm4gZW5jb2RlcjsKIH0KIApAQCAtMjYx
LDExICsyMjIsMTggQEAgVmlkZW9RdWFsaXR5VGVzdDo6VmlkZW9RdWFsaXR5VGVzdCgKICAgICAg
ICAgcmV0dXJuIHRoaXMtPkNyZWF0ZVZpZGVvRGVjb2Rlcihmb3JtYXQpOwogICAgICAgfSksCiAg
ICAgICB2aWRlb19lbmNvZGVyX2ZhY3RvcnlfKFt0aGlzXShjb25zdCBTZHBWaWRlb0Zvcm1hdCYg
Zm9ybWF0KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLT5DcmVhdGVWaWRlb0VuY29kZXIoZm9ybWF0
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMtPkNyZWF0ZVZpZGVvRW5jb2Rlcihmb3JtYXQsIG51bGxw
dHIpOwogICAgICAgfSksCisgICAgICB2aWRlb19lbmNvZGVyX2ZhY3Rvcnlfd2l0aF9hbmFseXpl
cl8oCisgICAgICAgICAgW3RoaXNdKGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIHsKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLT5DcmVhdGVWaWRlb0VuY29kZXIoZm9ybWF0LCBhbmFseXpl
cl8uZ2V0KCkpOworICAgICAgICAgIH0pLAorICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3Jf
ZmFjdG9yeV8oCisgICAgICAgICAgQ3JlYXRlQnVpbHRpblZpZGVvQml0cmF0ZUFsbG9jYXRvckZh
Y3RvcnkoKSksCiAgICAgICByZWNlaXZlX2xvZ3NfKDApLAogICAgICAgc2VuZF9sb2dzXygwKSwK
LSAgICAgIGluamVjdGlvbl9jb21wb25lbnRzXyhzdGQ6Om1vdmUoaW5qZWN0aW9uX2NvbXBvbmVu
dHMpKSB7CisgICAgICBpbmplY3Rpb25fY29tcG9uZW50c18oc3RkOjptb3ZlKGluamVjdGlvbl9j
b21wb25lbnRzKSksCisgICAgICBudW1fdmlkZW9fc3RyZWFtc18oMCkgewogICBpZiAoaW5qZWN0
aW9uX2NvbXBvbmVudHNfID09IG51bGxwdHIpIHsKICAgICBpbmplY3Rpb25fY29tcG9uZW50c18g
PSBhYnNsOjptYWtlX3VuaXF1ZTxJbmplY3Rpb25Db21wb25lbnRzPigpOwogICB9CkBAIC0yOTQs
NyArMjYyLDYgQEAgVmlkZW9RdWFsaXR5VGVzdDo6UGFyYW1zOjpQYXJhbXMoKQogICAgICAgYXVk
aW8oe2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfSksCiAgICAgICBzY3JlZW5zaGFyZXt7ZmFs
c2UsIGZhbHNlLCAxMCwgMH0sIHtmYWxzZSwgZmFsc2UsIDEwLCAwfX0sCiAgICAgICBhbmFseXpl
cih7IiIsIDAuMCwgMC4wLCAwLCAiIiwgIiJ9KSwKLSAgICAgIHBpcGUoKSwKICAgICAgIGNvbmZp
ZyhhYnNsOjpudWxsb3B0KSwKICAgICAgIHNze3tzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4oKSwg
MCwgMCwgLTEsIEludGVyTGF5ZXJQcmVkTW9kZTo6a09uLAogICAgICAgICAgIHN0ZDo6dmVjdG9y
PFNwYXRpYWxMYXllcj4oKX0sCkBAIC0zMzEsOSArMjk4LDcgQEAgdm9pZCBWaWRlb1F1YWxpdHlU
ZXN0OjpDaGVja1BhcmFtc0FuZEluamVjdGlvbkNvbXBvbmVudHMoKSB7CiAgIH0KICAgaWYgKCFw
YXJhbXNfLmNvbmZpZyAmJiBpbmplY3Rpb25fY29tcG9uZW50c18tPnNlbmRlcl9uZXR3b3JrID09
IG51bGxwdHIgJiYKICAgICAgIGluamVjdGlvbl9jb21wb25lbnRzXy0+cmVjZWl2ZXJfbmV0d29y
ayA9PSBudWxscHRyKSB7Ci0gICAgLy8gVE9ETyh0aXRvdmFydGVtKSByZXBsYWNlIHdpdGggZGVm
YXVsdCBjb25maWcgY3JlYXRpb24gd2hlbiByZW1vdmluZwotICAgIC8vIHBpcGUuCi0gICAgcGFy
YW1zXy5jb25maWcgPSBwYXJhbXNfLnBpcGU7CisgICAgcGFyYW1zXy5jb25maWcgPSBCdWlsdElu
TmV0d29ya0JlaGF2aW9yQ29uZmlnKCk7CiAgIH0KICAgUlRDX0NIRUNLKAogICAgICAgKHBhcmFt
c18uY29uZmlnICYmIGluamVjdGlvbl9jb21wb25lbnRzXy0+c2VuZGVyX25ldHdvcmsgPT0gbnVs
bHB0ciAmJgpAQCAtNTk0LDcgKzU1OSwxMCBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OlNldHVw
VmlkZW8oVHJhbnNwb3J0KiBzZW5kX3RyYW5zcG9ydCwKICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgdmlkZW9fc2VuZF9jb25maWdzX1t2aWRlb19pZHhdLmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rl
cl9mYWN0b3J5ID0KLSAgICAgICAgJnZpZGVvX2VuY29kZXJfZmFjdG9yeV87CisgICAgICAgICh2
aWRlb19pZHggPT0gMCkgPyAmdmlkZW9fZW5jb2Rlcl9mYWN0b3J5X3dpdGhfYW5hbHl6ZXJfCisg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAmdmlkZW9fZW5jb2Rlcl9mYWN0b3J5XzsKKyAgICB2
aWRlb19zZW5kX2NvbmZpZ3NfW3ZpZGVvX2lkeF0uZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2Fs
bG9jYXRvcl9mYWN0b3J5ID0KKyAgICAgICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9y
eV8uZ2V0KCk7CiAKICAgICB2aWRlb19zZW5kX2NvbmZpZ3NfW3ZpZGVvX2lkeF0ucnRwLnBheWxv
YWRfbmFtZSA9CiAgICAgICAgIHBhcmFtc18udmlkZW9bdmlkZW9faWR4XS5jb2RlYzsKQEAgLTcw
Miw2ICs2NzAsMTAgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpTZXR1cFZpZGVvKFRyYW5zcG9y
dCogc2VuZF90cmFuc3BvcnQsCiAgICAgICAgIHZwOV9zZXR0aW5ncy5udW1iZXJPZlNwYXRpYWxM
YXllcnMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigKICAgICAgICAgICAgIHBhcmFtc18u
c3NbdmlkZW9faWR4XS5udW1fc3BhdGlhbF9sYXllcnMpOwogICAgICAgICB2cDlfc2V0dGluZ3Mu
aW50ZXJMYXllclByZWQgPSBwYXJhbXNfLnNzW3ZpZGVvX2lkeF0uaW50ZXJfbGF5ZXJfcHJlZDsK
KyAgICAgICAgLy8gSGlnaCBGUFMgdnA5IHNjcmVlbnNoYXJlIHJlcXVpcmVzIGZsZXhpYmxlIG1v
ZGUuCisgICAgICAgIGlmIChwYXJhbXNfLnZpZGVvW3ZpZGVvX2lkeF0uZnBzID4gNSkgeworICAg
ICAgICAgIHZwOV9zZXR0aW5ncy5mbGV4aWJsZU1vZGUgPSB0cnVlOworICAgICAgICB9CiAgICAg
ICAgIHZpZGVvX2VuY29kZXJfY29uZmlnc19bdmlkZW9faWR4XS5lbmNvZGVyX3NwZWNpZmljX3Nl
dHRpbmdzID0KICAgICAgICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8CiAgICAgICAg
ICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpWcDlFbmNvZGVyU3BlY2lmaWNTZXR0aW5ncz4o
dnA5X3NldHRpbmdzKTsKQEAgLTc4Myw2ICs3NTUsOCBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6
OlNldHVwVGh1bWJuYWlscyhUcmFuc3BvcnQqIHNlbmRfdHJhbnNwb3J0LAogICAgIC8vIFRPRE8o
bmlzc2UpOiBDb3VsZCB1c2UgYSBzaW1wbGVyIFZQOC1vbmx5IGVuY29kZXIgZmFjdG9yeS4KICAg
ICB0aHVtYm5haWxfc2VuZF9jb25maWcuZW5jb2Rlcl9zZXR0aW5ncy5lbmNvZGVyX2ZhY3Rvcnkg
PQogICAgICAgICAmdmlkZW9fZW5jb2Rlcl9mYWN0b3J5XzsKKyAgICB0aHVtYm5haWxfc2VuZF9j
b25maWcuZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5ID0KKyAgICAg
ICAgdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeV8uZ2V0KCk7CiAgICAgdGh1bWJuYWls
X3NlbmRfY29uZmlnLnJ0cC5wYXlsb2FkX25hbWUgPSBwYXJhbXNfLnZpZGVvWzBdLmNvZGVjOwog
ICAgIHRodW1ibmFpbF9zZW5kX2NvbmZpZy5ydHAucGF5bG9hZF90eXBlID0ga1BheWxvYWRUeXBl
VlA4OwogICAgIHRodW1ibmFpbF9zZW5kX2NvbmZpZy5ydHAubmFjay5ydHBfaGlzdG9yeV9tcyA9
IGtOYWNrUnRwSGlzdG9yeU1zOwpAQCAtMTA0Myw3ICsxMDE3LDYgQEAgdm9pZCBWaWRlb1F1YWxp
dHlUZXN0OjpSdW5XaXRoQW5hbHl6ZXIoY29uc3QgUGFyYW1zJiBwYXJhbXMpIHsKICAgc3RkOjp1
bmlxdWVfcHRyPHRlc3Q6OkxheWVyRmlsdGVyaW5nVHJhbnNwb3J0PiBzZW5kX3RyYW5zcG9ydDsK
ICAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkRpcmVjdFRyYW5zcG9ydD4gcmVjdl90cmFuc3BvcnQ7
CiAgIEZJTEUqIGdyYXBoX2RhdGFfb3V0cHV0X2ZpbGUgPSBudWxscHRyOwotICBzdGQ6OnVuaXF1
ZV9wdHI8VmlkZW9BbmFseXplcj4gYW5hbHl6ZXI7CiAKICAgcGFyYW1zXyA9IHBhcmFtczsKICAg
Ly8gVE9ETyhpdmljYSk6IE1lcmdlIHdpdGggUnVuV2l0aFJlbmRlcmVyIGFuZCB1c2UgYSBmbGFn
IC8gYXJndW1lbnQgdG8KQEAgLTExMDAsNyArMTA3Myw3IEBAIHZvaWQgVmlkZW9RdWFsaXR5VGVz
dDo6UnVuV2l0aEFuYWx5emVyKGNvbnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAgIGlmIChncmFwaF90
aXRsZS5lbXB0eSgpKQogICAgIGdyYXBoX3RpdGxlID0gVmlkZW9RdWFsaXR5VGVzdDo6R2VuZXJh
dGVHcmFwaFRpdGxlKCk7CiAgIGJvb2wgaXNfcXVpY2tfdGVzdF9lbmFibGVkID0gZmllbGRfdHJp
YWw6OklzRW5hYmxlZCgiV2ViUlRDLVF1aWNrUGVyZlRlc3QiKTsKLSAgYW5hbHl6ZXIgPSBhYnNs
OjptYWtlX3VuaXF1ZTxWaWRlb0FuYWx5emVyPigKKyAgYW5hbHl6ZXJfID0gYWJzbDo6bWFrZV91
bmlxdWU8VmlkZW9BbmFseXplcj4oCiAgICAgICBzZW5kX3RyYW5zcG9ydC5nZXQoKSwgcGFyYW1z
Xy5hbmFseXplci50ZXN0X2xhYmVsLAogICAgICAgcGFyYW1zXy5hbmFseXplci5hdmdfcHNucl90
aHJlc2hvbGQsIHBhcmFtc18uYW5hbHl6ZXIuYXZnX3NzaW1fdGhyZXNob2xkLAogICAgICAgaXNf
cXVpY2tfdGVzdF9lbmFibGVkCkBAIC0xMTE0LDI2ICsxMDg3LDIzIEBAIHZvaWQgVmlkZW9RdWFs
aXR5VGVzdDo6UnVuV2l0aEFuYWx5emVyKGNvbnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICBp
c19xdWlja190ZXN0X2VuYWJsZWQsIGNsb2NrXywgcGFyYW1zXy5sb2dnaW5nLnJ0cF9kdW1wX25h
bWUpOwogCiAgIHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsKLSAgICBhbmFseXplci0+U2V0
Q2FsbChzZW5kZXJfY2FsbF8uZ2V0KCkpOwotICAgIGFuYWx5emVyLT5TZXRSZWNlaXZlcihyZWNl
aXZlcl9jYWxsXy0+UmVjZWl2ZXIoKSk7Ci0gICAgc2VuZF90cmFuc3BvcnQtPlNldFJlY2VpdmVy
KGFuYWx5emVyLmdldCgpKTsKKyAgICBhbmFseXplcl8tPlNldENhbGwoc2VuZGVyX2NhbGxfLmdl
dCgpKTsKKyAgICBhbmFseXplcl8tPlNldFJlY2VpdmVyKHJlY2VpdmVyX2NhbGxfLT5SZWNlaXZl
cigpKTsKKyAgICBzZW5kX3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIoYW5hbHl6ZXJfLmdldCgpKTsK
ICAgICByZWN2X3RyYW5zcG9ydC0+U2V0UmVjZWl2ZXIoc2VuZGVyX2NhbGxfLT5SZWNlaXZlcigp
KTsKIAotICAgIFNldHVwVmlkZW8oYW5hbHl6ZXIuZ2V0KCksIHJlY3ZfdHJhbnNwb3J0LmdldCgp
KTsKLSAgICBTZXR1cFRodW1ibmFpbHMoYW5hbHl6ZXIuZ2V0KCksIHJlY3ZfdHJhbnNwb3J0Lmdl
dCgpKTsKKyAgICBTZXR1cFZpZGVvKGFuYWx5emVyXy5nZXQoKSwgcmVjdl90cmFuc3BvcnQuZ2V0
KCkpOworICAgIFNldHVwVGh1bWJuYWlscyhhbmFseXplcl8uZ2V0KCksIHJlY3ZfdHJhbnNwb3J0
LmdldCgpKTsKICAgICB2aWRlb19yZWNlaXZlX2NvbmZpZ3NfW3BhcmFtc18uc3NbMF0uc2VsZWN0
ZWRfc3RyZWFtXS5yZW5kZXJlciA9Ci0gICAgICAgIGFuYWx5emVyLmdldCgpOwotICAgIEdldFZp
ZGVvU2VuZENvbmZpZygpLT5wcmVfZW5jb2RlX2NhbGxiYWNrID0gYW5hbHl6ZXItPnByZV9lbmNv
ZGVfcHJveHkoKTsKLSAgICBSVENfRENIRUNLKCFHZXRWaWRlb1NlbmRDb25maWcoKS0+cG9zdF9l
bmNvZGVfY2FsbGJhY2spOwotICAgIEdldFZpZGVvU2VuZENvbmZpZygpLT5wb3N0X2VuY29kZV9j
YWxsYmFjayA9IGFuYWx5emVyLmdldCgpOworICAgICAgICBhbmFseXplcl8uZ2V0KCk7CiAKICAg
ICBDcmVhdGVGbGV4ZmVjU3RyZWFtcygpOwogICAgIENyZWF0ZVZpZGVvU3RyZWFtcygpOwotICAg
IGFuYWx5emVyLT5TZXRTZW5kU3RyZWFtKHZpZGVvX3NlbmRfc3RyZWFtc19bMF0pOworICAgIGFu
YWx5emVyXy0+U2V0U2VuZFN0cmVhbSh2aWRlb19zZW5kX3N0cmVhbXNfWzBdKTsKICAgICBpZiAo
dmlkZW9fcmVjZWl2ZV9zdHJlYW1zXy5zaXplKCkgPT0gMSkKLSAgICAgIGFuYWx5emVyLT5TZXRS
ZWNlaXZlU3RyZWFtKHZpZGVvX3JlY2VpdmVfc3RyZWFtc19bMF0pOworICAgICAgYW5hbHl6ZXJf
LT5TZXRSZWNlaXZlU3RyZWFtKHZpZGVvX3JlY2VpdmVfc3RyZWFtc19bMF0pOwogCi0gICAgR2V0
VmlkZW9TZW5kU3RyZWFtKCktPlNldFNvdXJjZShhbmFseXplci0+T3V0cHV0SW50ZXJmYWNlKCks
CisgICAgR2V0VmlkZW9TZW5kU3RyZWFtKCktPlNldFNvdXJjZShhbmFseXplcl8tPk91dHB1dElu
dGVyZmFjZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVncmFkYXRp
b25fcHJlZmVyZW5jZV8pOwogICAgIFNldHVwVGh1bWJuYWlsQ2FwdHVyZXJzKHBhcmFtc18uY2Fs
bC5udW1fdGh1bWJuYWlscyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aHVtYm5haWxf
c2VuZF9zdHJlYW1zXy5zaXplKCk7ICsraSkgewpAQCAtMTE0Myw3ICsxMTEzLDggQEAgdm9pZCBW
aWRlb1F1YWxpdHlUZXN0OjpSdW5XaXRoQW5hbHl6ZXIoY29uc3QgUGFyYW1zJiBwYXJhbXMpIHsK
IAogICAgIENyZWF0ZUNhcHR1cmVycygpOwogCi0gICAgYW5hbHl6ZXItPlNldFNvdXJjZSh2aWRl
b19jYXB0dXJlcnNfWzBdLmdldCgpLCBwYXJhbXNfLnNzWzBdLmluZmVyX3N0cmVhbXMpOworICAg
IGFuYWx5emVyXy0+U2V0U291cmNlKHZpZGVvX2NhcHR1cmVyc19bMF0uZ2V0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zXy5zc1swXS5pbmZlcl9zdHJlYW1zKTsKIAogICAgIGZv
ciAoc2l6ZV90IHZpZGVvX2lkeCA9IDE7IHZpZGVvX2lkeCA8IG51bV92aWRlb19zdHJlYW1zXzsg
Kyt2aWRlb19pZHgpIHsKICAgICAgIHZpZGVvX3NlbmRfc3RyZWFtc19bdmlkZW9faWR4XS0+U2V0
U291cmNlKApAQCAtMTE1MywxNiArMTEyNCwxNiBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OlJ1
bldpdGhBbmFseXplcihjb25zdCBQYXJhbXMmIHBhcmFtcykgewogICAgIGlmIChwYXJhbXNfLmF1
ZGlvLmVuYWJsZWQpIHsKICAgICAgIFNldHVwQXVkaW8oc2VuZF90cmFuc3BvcnQuZ2V0KCkpOwog
ICAgICAgU3RhcnRBdWRpb1N0cmVhbXMoKTsKLSAgICAgIGFuYWx5emVyLT5TZXRBdWRpb1JlY2Vp
dmVTdHJlYW0oYXVkaW9fcmVjZWl2ZV9zdHJlYW1zX1swXSk7CisgICAgICBhbmFseXplcl8tPlNl
dEF1ZGlvUmVjZWl2ZVN0cmVhbShhdWRpb19yZWNlaXZlX3N0cmVhbXNfWzBdKTsKICAgICB9CiAg
ICAgU3RhcnRWaWRlb1N0cmVhbXMoKTsKICAgICBTdGFydFRodW1ibmFpbHMoKTsKLSAgICBhbmFs
eXplci0+U3RhcnRNZWFzdXJpbmdDcHVQcm9jZXNzVGltZSgpOworICAgIGFuYWx5emVyXy0+U3Rh
cnRNZWFzdXJpbmdDcHVQcm9jZXNzVGltZSgpOwogICAgIFN0YXJ0VmlkZW9DYXB0dXJlKCk7CiAg
ICAgU3RhcnRUaHVtYm5haWxDYXB0dXJlKCk7CiAgIH0pOwogCi0gIGFuYWx5emVyLT5XYWl0KCk7
CisgIGFuYWx5emVyXy0+V2FpdCgpOwogCiAgIHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsK
ICAgICBTdG9wVGh1bWJuYWlsQ2FwdHVyZSgpOwpAQCAtMTE4MSw2ICsxMTUyLDcgQEAgdm9pZCBW
aWRlb1F1YWxpdHlUZXN0OjpSdW5XaXRoQW5hbHl6ZXIoY29uc3QgUGFyYW1zJiBwYXJhbXMpIHsK
IAogICAgIERlc3Ryb3lDYWxscygpOwogICB9KTsKKyAgYW5hbHl6ZXJfID0gbnVsbHB0cjsKIH0K
IAogcnRjOjpzY29wZWRfcmVmcHRyPEF1ZGlvRGV2aWNlTW9kdWxlPiBWaWRlb1F1YWxpdHlUZXN0
OjpDcmVhdGVBdWRpb0RldmljZSgpIHsKQEAgLTEyMzksNyArMTIxMSw4IEBAIHZvaWQgVmlkZW9R
dWFsaXR5VGVzdDo6SW5pdGlhbGl6ZUF1ZGlvRGV2aWNlKENhbGw6OkNvbmZpZyogc2VuZF9jYWxs
X2NvbmZpZywKIH0KIAogdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpTZXR1cEF1ZGlvKFRyYW5zcG9y
dCogdHJhbnNwb3J0KSB7Ci0gIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGF1ZGlvX3NlbmRfY29u
ZmlnKHRyYW5zcG9ydCk7CisgIEF1ZGlvU2VuZFN0cmVhbTo6Q29uZmlnIGF1ZGlvX3NlbmRfY29u
ZmlnKHRyYW5zcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyptZWRpYV90cmFuc3BvcnQ9Ki9udWxscHRyKTsKICAgYXVkaW9fc2VuZF9jb25maWcucnRw
LnNzcmMgPSBrQXVkaW9TZW5kU3NyYzsKIAogICAvLyBBZGQgZXh0ZW5zaW9uIHRvIGVuYWJsZSBh
dWRpbyBzZW5kIHNpZGUgQldFLCBhbmQgYWxsb3cgYXVkaW8gYml0IHJhdGUKQEAgLTEyNzgsNyAr
MTI1MSwyOCBAQCB2b2lkIFZpZGVvUXVhbGl0eVRlc3Q6OlJ1bldpdGhSZW5kZXJlcnMoY29uc3Qg
UGFyYW1zJiBwYXJhbXMpIHsKICAgc3RkOjp1bmlxdWVfcHRyPHRlc3Q6OkRpcmVjdFRyYW5zcG9y
dD4gcmVjdl90cmFuc3BvcnQ7CiAgIHN0ZDo6dW5pcXVlX3B0cjx0ZXN0OjpWaWRlb1JlbmRlcmVy
PiBsb2NhbF9wcmV2aWV3OwogICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8dGVzdDo6Vmlk
ZW9SZW5kZXJlcj4+IGxvb3BiYWNrX3JlbmRlcmVyczsKLSAgUnRjRXZlbnRMb2dOdWxsSW1wbCBu
dWxsX2V2ZW50X2xvZzsKKworICBpZiAoIXBhcmFtcy5sb2dnaW5nLnJ0Y19ldmVudF9sb2dfbmFt
ZS5lbXB0eSgpKSB7CisgICAgc2VuZF9ldmVudF9sb2dfID0gUnRjRXZlbnRMb2c6OkNyZWF0ZShS
dGNFdmVudExvZzo6RW5jb2RpbmdUeXBlOjpMZWdhY3kpOworICAgIHJlY3ZfZXZlbnRfbG9nXyA9
IFJ0Y0V2ZW50TG9nOjpDcmVhdGUoUnRjRXZlbnRMb2c6OkVuY29kaW5nVHlwZTo6TGVnYWN5KTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRjRXZlbnRMb2dPdXRwdXRGaWxlPiBzZW5kX291dHB1dCgK
KyAgICAgICAgYWJzbDo6bWFrZV91bmlxdWU8UnRjRXZlbnRMb2dPdXRwdXRGaWxlPigKKyAgICAg
ICAgICAgIHBhcmFtcy5sb2dnaW5nLnJ0Y19ldmVudF9sb2dfbmFtZSArICJfc2VuZCIsCisgICAg
ICAgICAgICBSdGNFdmVudExvZzo6a1VubGltaXRlZE91dHB1dCkpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxSdGNFdmVudExvZ091dHB1dEZpbGU+IHJlY3Zfb3V0cHV0KAorICAgICAgICBhYnNsOjpt
YWtlX3VuaXF1ZTxSdGNFdmVudExvZ091dHB1dEZpbGU+KAorICAgICAgICAgICAgcGFyYW1zLmxv
Z2dpbmcucnRjX2V2ZW50X2xvZ19uYW1lICsgIl9yZWN2IiwKKyAgICAgICAgICAgIFJ0Y0V2ZW50
TG9nOjprVW5saW1pdGVkT3V0cHV0KSk7CisgICAgYm9vbCBldmVudF9sb2dfc3RhcnRlZCA9Cisg
ICAgICAgIHNlbmRfZXZlbnRfbG9nXy0+U3RhcnRMb2dnaW5nKHN0ZDo6bW92ZShzZW5kX291dHB1
dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qb3V0cHV0X3Blcmlv
ZF9tcz0qLzUwMDApICYmCisgICAgICAgIHJlY3ZfZXZlbnRfbG9nXy0+U3RhcnRMb2dnaW5nKHN0
ZDo6bW92ZShyZWN2X291dHB1dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qb3V0cHV0X3BlcmlvZF9tcz0qLzUwMDApOworICAgIFJUQ19EQ0hFQ0soZXZlbnRfbG9n
X3N0YXJ0ZWQpOworICB9IGVsc2UgeworICAgIHNlbmRfZXZlbnRfbG9nXyA9IFJ0Y0V2ZW50TG9n
OjpDcmVhdGVOdWxsKCk7CisgICAgcmVjdl9ldmVudF9sb2dfID0gUnRjRXZlbnRMb2c6OkNyZWF0
ZU51bGwoKTsKKyAgfQogCiAgIHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgpIHsKICAgICBwYXJh
bXNfID0gcGFyYW1zOwpAQCAtMTI4Niw5ICsxMjgwLDkgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0
OjpSdW5XaXRoUmVuZGVyZXJzKGNvbnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAKICAgICAvLyBUT0RP
KGl2aWNhKTogUmVtb3ZlIGJpdHJhdGVfY29uZmlnIGFuZCB1c2UgdGhlIGRlZmF1bHQgQ2FsbDo6
Q29uZmlnKCksIHRvCiAgICAgLy8gbWF0Y2ggdGhlIGZ1bGwgc3RhY2sgdGVzdHMuCi0gICAgQ2Fs
bDo6Q29uZmlnIHNlbmRfY2FsbF9jb25maWcoJm51bGxfZXZlbnRfbG9nKTsKKyAgICBDYWxsOjpD
b25maWcgc2VuZF9jYWxsX2NvbmZpZyhzZW5kX2V2ZW50X2xvZ18uZ2V0KCkpOwogICAgIHNlbmRf
Y2FsbF9jb25maWcuYml0cmF0ZV9jb25maWcgPSBwYXJhbXNfLmNhbGwuY2FsbF9iaXRyYXRlX2Nv
bmZpZzsKLSAgICBDYWxsOjpDb25maWcgcmVjdl9jYWxsX2NvbmZpZygmbnVsbF9ldmVudF9sb2cp
OworICAgIENhbGw6OkNvbmZpZyByZWN2X2NhbGxfY29uZmlnKHJlY3ZfZXZlbnRfbG9nXy5nZXQo
KSk7CiAKICAgICBpZiAocGFyYW1zXy5hdWRpby5lbmFibGVkKQogICAgICAgSW5pdGlhbGl6ZUF1
ZGlvRGV2aWNlKApAQCAtMTM2NCw3ICsxMzU4LDcgQEAgdm9pZCBWaWRlb1F1YWxpdHlUZXN0OjpS
dW5XaXRoUmVuZGVyZXJzKGNvbnN0IFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgU3RhcnQoKTsKICAg
fSk7CiAKLSAgdGVzdDo6UHJlc3NFbnRlclRvQ29udGludWUoKTsKKyAgdGVzdDo6UHJlc3NFbnRl
clRvQ29udGludWUodGFza19xdWV1ZV8pOwogCiAgIHRhc2tfcXVldWVfLlNlbmRUYXNrKFsmXSgp
IHsKICAgICBTdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19xdWFsaXR5X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfdGVzdC5oCmlu
ZGV4IDdlYzdlOGRhN2U0NGI2MjdmZmJhODcxMTI0YTAxYzU1OGRlNzJjN2IuLmY2N2U2NWJjMTM3
OTc0MjhjMGNjN2NjNjFjYTY3OGE1MjY4NzBlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3F1YWxpdHlfdGVzdC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVv
X3F1YWxpdHlfdGVzdC5oCkBAIC0xNywxMiArMTcsMTQgQEAKIAogI2luY2x1ZGUgImFwaS9mZWNf
Y29udHJvbGxlci5oIgogI2luY2x1ZGUgImFwaS90ZXN0L3ZpZGVvX3F1YWxpdHlfdGVzdF9maXh0
dXJlLmgiCisjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJjYWxsL2Zha2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAibWVk
aWEvZW5naW5lL2ludGVybmFsZGVjb2RlcmZhY3RvcnkuaCIKICNpbmNsdWRlICJtZWRpYS9lbmdp
bmUvaW50ZXJuYWxlbmNvZGVyZmFjdG9yeS5oIgogI2luY2x1ZGUgInRlc3QvY2FsbF90ZXN0Lmgi
CiAjaW5jbHVkZSAidGVzdC9mcmFtZV9nZW5lcmF0b3IuaCIKICNpbmNsdWRlICJ0ZXN0L2xheWVy
X2ZpbHRlcmluZ190cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJ2aWRlby92aWRlb19hbmFseXplci5o
IgogI2lmZGVmIFdFQlJUQ19XSU4KICNpbmNsdWRlICJtb2R1bGVzL2F1ZGlvX2RldmljZS93aW4v
Y29yZV9hdWRpb191dGlsaXR5X3dpbi5oIgogI2VuZGlmCkBAIC03NSw4ICs3Nyw4IEBAIGNsYXNz
IFZpZGVvUXVhbGl0eVRlc3QgOgogICB2b2lkIFNldHVwVGh1bWJuYWlsQ2FwdHVyZXJzKHNpemVf
dCBudW1fdGh1bWJuYWlsX3N0cmVhbXMpOwogICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9EZWNvZGVy
PiBDcmVhdGVWaWRlb0RlY29kZXIoCiAgICAgICBjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0
KTsKLSAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVyKAot
ICAgICAgY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCk7CisgIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0VuY29kZXI+IENyZWF0ZVZpZGVvRW5jb2Rlcihjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmlkZW9BbmFseXplciogYW5hbHl6ZXIpOwogICB2b2lkIFNldHVwVmlkZW8oVHJhbnNwb3J0KiBz
ZW5kX3RyYW5zcG9ydCwgVHJhbnNwb3J0KiByZWN2X3RyYW5zcG9ydCk7CiAgIHZvaWQgU2V0dXBU
aHVtYm5haWxzKFRyYW5zcG9ydCogc2VuZF90cmFuc3BvcnQsIFRyYW5zcG9ydCogcmVjdl90cmFu
c3BvcnQpOwogICB2b2lkIFN0YXJ0QXVkaW9TdHJlYW1zKCk7CkBAIC0xMDMsNiArMTA1LDkgQEAg
Y2xhc3MgVmlkZW9RdWFsaXR5VGVzdCA6CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9EZWNvZGVyRmFj
dG9yeSB2aWRlb19kZWNvZGVyX2ZhY3RvcnlfOwogICBJbnRlcm5hbERlY29kZXJGYWN0b3J5IGlu
dGVybmFsX2RlY29kZXJfZmFjdG9yeV87CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9FbmNvZGVyRmFj
dG9yeSB2aWRlb19lbmNvZGVyX2ZhY3RvcnlfOworICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5jb2Rl
ckZhY3RvcnkgdmlkZW9fZW5jb2Rlcl9mYWN0b3J5X3dpdGhfYW5hbHl6ZXJfOworICBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4KKyAgICAgIHZpZGVvX2JpdHJh
dGVfYWxsb2NhdG9yX2ZhY3RvcnlfOwogICBJbnRlcm5hbEVuY29kZXJGYWN0b3J5IGludGVybmFs
X2VuY29kZXJfZmFjdG9yeV87CiAgIHN0ZDo6dmVjdG9yPFZpZGVvU2VuZFN0cmVhbTo6Q29uZmln
PiB0aHVtYm5haWxfc2VuZF9jb25maWdzXzsKICAgc3RkOjp2ZWN0b3I8VmlkZW9FbmNvZGVyQ29u
ZmlnPiB0aHVtYm5haWxfZW5jb2Rlcl9jb25maWdzXzsKQEAgLTExNiw2ICsxMjEsOSBAQCBjbGFz
cyBWaWRlb1F1YWxpdHlUZXN0IDoKICAgUGFyYW1zIHBhcmFtc187CiAgIHN0ZDo6dW5pcXVlX3B0
cjxJbmplY3Rpb25Db21wb25lbnRzPiBpbmplY3Rpb25fY29tcG9uZW50c187CiAKKyAgLy8gU2V0
IG5vbi1udWxsIHdoZW4gcnVubmluZyB3aXRoIGFuYWx5emVyLgorICBzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9BbmFseXplcj4gYW5hbHl6ZXJfOworCiAgIC8vIE5vdGU6IG5vdCBzYW1lIGFzIHNpbWls
YXJseSBuYW1lZCBtZW1iZXIgaW4gQ2FsbFRlc3QuIFRoaXMgaXMgdGhlIG51bWJlciBvZgogICAv
LyBzZXBhcmF0ZSBzZW5kIHN0cmVhbXMsIHRoZSBvbmUgaW4gQ2FsbFRlc3QgaXMgdGhlIG51bWJl
ciBvZiBzdWJzdHJlYW1zIGZvcgogICAvLyBhIHNpbmdsZSBzZW5kIHN0cmVhbS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVv
X3JlY2VpdmVfc3RyZWFtLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW0uY2MKaW5kZXggODZiOTM2ODZjYTVmOTcz
MzkyMDQ1NmQ5YjcxODllYjM4MGZlNDVkNS4uYmJhMzNhYTM2M2U4YTY5NWRhYzZjZjQ0ODBjYmRj
NDc3NzYxNTMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW0uY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW0u
Y2MKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2Rl
Y29kZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgImNhbGwvcnRwX3N0cmVhbV9yZWNlaXZlcl9jb250
cm9sbGVyX2ludGVyZmFjZS5oIgogI2luY2x1ZGUgImNhbGwvcnR4X3JlY2VpdmVfc3RyZWFtLmgi
Ci0jaW5jbHVkZSAiY29tbW9uX3R5cGVzLmgiICAvLyBOT0xJTlQoYnVpbGQvaW5jbHVkZSkKICNp
bmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9wcm9maWxlX2xldmVsX2lkLmgiCiAjaW5jbHVkZSAi
Y29tbW9uX3ZpZGVvL2luY2x1ZGUvaW5jb21pbmdfdmlkZW9fc3RyZWFtLmgiCiAjaW5jbHVkZSAi
Y29tbW9uX3ZpZGVvL2xpYnl1di9pbmNsdWRlL3dlYnJ0Y19saWJ5dXYuaCIKQEAgLTM1LDEwICsz
NCwxMyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInJ0
Y19iYXNlL3BsYXRmb3JtX2ZpbGUuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmlu
Z19idWlsZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdHJhY2VfZXZlbnQuaCIKICNpbmNsdWRl
ICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jbG9jay5oIgogI2luY2x1ZGUgInN5c3RlbV93cmFw
cGVycy9pbmNsdWRlL2ZpZWxkX3RyaWFsLmgiCiAjaW5jbHVkZSAidmlkZW8vY2FsbF9zdGF0cy5o
IgorI2luY2x1ZGUgInZpZGVvL2ZyYW1lX2R1bXBpbmdfZGVjb2Rlci5oIgogI2luY2x1ZGUgInZp
ZGVvL3JlY2VpdmVfc3RhdGlzdGljc19wcm94eS5oIgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKQEAg
LTEwNyw2ICsxMDksMTEgQEAgY2xhc3MgTnVsbFZpZGVvRGVjb2RlciA6IHB1YmxpYyB3ZWJydGM6
OlZpZGVvRGVjb2RlciB7CiAgIGNvbnN0IGNoYXIqIEltcGxlbWVudGF0aW9uTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJOdWxsVmlkZW9EZWNvZGVyIjsgfQogfTsKIAorLy8gVE9ETyho
dHRwczovL2J1Z3Mud2VicnRjLm9yZy85OTc0KTogQ29uc2lkZXIgcmVtb3ZpbmcgdGhpcyB3b3Jr
YXJvdW5kLgorLy8gTWF4aW11bSB0aW1lIGJldHdlZW4gZnJhbWVzIGJlZm9yZSByZXNldHRpbmcg
dGhlIEZyYW1lQnVmZmVyIHRvIGF2b2lkIFJUUAorLy8gdGltZXN0YW1wcyB3cmFwYXJvdW5kIHRv
IGFmZmVjdCBGcmFtZUJ1ZmZlci4KK2NvbnN0ZXhwciBpbnQga0luYWN0aXZlU3RyZWFtVGhyZXNo
b2xkTXMgPSA2MDAwMDA7ICAvLyAgMTAgbWludXRlcy4KKwogfSAgLy8gbmFtZXNwYWNlCiAKIG5h
bWVzcGFjZSBpbnRlcm5hbCB7CkBAIC0xMjgsMTAgKzEzNSwxMSBAQCBWaWRlb1JlY2VpdmVTdHJl
YW06OlZpZGVvUmVjZWl2ZVN0cmVhbSgKICAgICAgICAgICAgICAgICAgICAgICJEZWNvZGluZ1Ro
cmVhZCIsCiAgICAgICAgICAgICAgICAgICAgICBydGM6OmtIaWdoZXN0UHJpb3JpdHkpLAogICAg
ICAgY2FsbF9zdGF0c18oY2FsbF9zdGF0cyksCi0gICAgICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNz
XyhSZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRlKGNsb2NrXykpLAotICAgICAgdGltaW5nXyhuZXcg
VkNNVGltaW5nKGNsb2NrXykpLAotICAgICAgdmlkZW9fcmVjZWl2ZXJfKGNsb2NrXywgbnVsbHB0
ciwgdGltaW5nXy5nZXQoKSwgdGhpcywgdGhpcyksCiAgICAgICBzdGF0c19wcm94eV8oJmNvbmZp
Z18sIGNsb2NrXyksCisgICAgICBydHBfcmVjZWl2ZV9zdGF0aXN0aWNzXygKKyAgICAgICAgICBS
ZWNlaXZlU3RhdGlzdGljczo6Q3JlYXRlKGNsb2NrXywgJnN0YXRzX3Byb3h5XywgJnN0YXRzX3By
b3h5XykpLAorICAgICAgdGltaW5nXyhuZXcgVkNNVGltaW5nKGNsb2NrXykpLAorICAgICAgdmlk
ZW9fcmVjZWl2ZXJfKGNsb2NrXywgdGltaW5nXy5nZXQoKSwgdGhpcywgdGhpcyksCiAgICAgICBy
dHBfdmlkZW9fc3RyZWFtX3JlY2VpdmVyXygmdHJhbnNwb3J0X2FkYXB0ZXJfLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9zdGF0cywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhY2tldF9yb3V0ZXIsCkBAIC0xMzksOSArMTQ3LDEwIEBAIFZpZGVvUmVj
ZWl2ZVN0cmVhbTo6VmlkZW9SZWNlaXZlU3RyZWFtKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnRwX3JlY2VpdmVfc3RhdGlzdGljc18uZ2V0KCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmc3RhdHNfcHJveHlfLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc190aHJlYWRfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcywgICAvLyBOYWNrU2VuZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLCAgIC8vIEtleUZyYW1lUmVxdWVzdFNlbmRlcgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcyksICAvLyBPbkNvbXBsZXRlRnJhbWVDYWxsYmFjaworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgIC8vIE5hY2tTZW5kZXIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMsICAvLyBLZXlGcmFtZVJlcXVlc3RTZW5kZXIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsICAvLyBPbkNvbXBsZXRlRnJhbWVD
YWxsYmFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnXy5mcmFtZV9k
ZWNyeXB0b3IpLAogICAgICAgcnRwX3N0cmVhbV9zeW5jXyh0aGlzKSB7CiAgIFJUQ19MT0coTFNf
SU5GTykgPDwgIlZpZGVvUmVjZWl2ZVN0cmVhbTogIiA8PCBjb25maWdfLlRvU3RyaW5nKCk7CiAK
QEAgLTI0NSw2ICsyNTQsMTggQEAgdm9pZCBWaWRlb1JlY2VpdmVTdHJlYW06OlN0YXJ0KCkgewog
ICAgIGlmICghdmlkZW9fZGVjb2RlcikgewogICAgICAgdmlkZW9fZGVjb2RlciA9IGFic2w6Om1h
a2VfdW5pcXVlPE51bGxWaWRlb0RlY29kZXI+KCk7CiAgICAgfQorCisgICAgc3RkOjpzdHJpbmcg
ZGVjb2RlZF9vdXRwdXRfZmlsZSA9CisgICAgICAgIGZpZWxkX3RyaWFsOjpGaW5kRnVsbE5hbWUo
IldlYlJUQy1EZWNvZGVyRGF0YUR1bXBEaXJlY3RvcnkiKTsKKyAgICBpZiAoIWRlY29kZWRfb3V0
cHV0X2ZpbGUuZW1wdHkoKSkgeworICAgICAgY2hhciBmaWxlbmFtZV9idWZmZXJbMjU2XTsKKyAg
ICAgIHJ0Yzo6U2ltcGxlU3RyaW5nQnVpbGRlciBzc2IoZmlsZW5hbWVfYnVmZmVyKTsKKyAgICAg
IHNzYiA8PCBkZWNvZGVkX291dHB1dF9maWxlIDw8ICIvd2VicnRjX3JlY2VpdmVfc3RyZWFtXyIK
KyAgICAgICAgICA8PCB0aGlzLT5jb25maWdfLnJ0cC5sb2NhbF9zc3JjIDw8ICIuaXZmIjsKKyAg
ICAgIHZpZGVvX2RlY29kZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxGcmFtZUR1bXBpbmdEZWNvZGVy
PigKKyAgICAgICAgICBzdGQ6Om1vdmUodmlkZW9fZGVjb2RlciksIHJ0Yzo6Q3JlYXRlUGxhdGZv
cm1GaWxlKHNzYi5zdHIoKSkpOworICAgIH0KKwogICAgIHZpZGVvX2RlY29kZXJzXy5wdXNoX2Jh
Y2soc3RkOjptb3ZlKHZpZGVvX2RlY29kZXIpKTsKIAogICAgIHZpZGVvX3JlY2VpdmVyXy5SZWdp
c3RlckV4dGVybmFsRGVjb2Rlcih2aWRlb19kZWNvZGVyc18uYmFjaygpLmdldCgpLApAQCAtMzU3
LDYgKzM3OCwxNCBAQCB2b2lkIFZpZGVvUmVjZWl2ZVN0cmVhbTo6T25Db21wbGV0ZUZyYW1lKAog
ICAvLyBwYXJ0aWFsbHkgZW5hYmxlZCBpbnRlci1sYXllciBwcmVkaWN0aW9uLgogICBmcmFtZS0+
aWQuc3BhdGlhbF9sYXllciA9IDA7CiAKKyAgLy8gVE9ETyhodHRwczovL2J1Z3Mud2VicnRjLm9y
Zy85OTc0KTogQ29uc2lkZXIgcmVtb3ZpbmcgdGhpcyB3b3JrYXJvdW5kLgorICBpbnQ2NF90IHRp
bWVfbm93X21zID0gcnRjOjpUaW1lTWlsbGlzKCk7CisgIGlmIChsYXN0X2NvbXBsZXRlX2ZyYW1l
X3RpbWVfbXNfID4gMCAmJgorICAgICAgdGltZV9ub3dfbXMgLSBsYXN0X2NvbXBsZXRlX2ZyYW1l
X3RpbWVfbXNfID4ga0luYWN0aXZlU3RyZWFtVGhyZXNob2xkTXMpIHsKKyAgICBmcmFtZV9idWZm
ZXJfLT5DbGVhcigpOworICB9CisgIGxhc3RfY29tcGxldGVfZnJhbWVfdGltZV9tc18gPSB0aW1l
X25vd19tczsKKwogICBpbnQ2NF90IGxhc3RfY29udGludW91c19waWQgPSBmcmFtZV9idWZmZXJf
LT5JbnNlcnRGcmFtZShzdGQ6Om1vdmUoZnJhbWUpKTsKICAgaWYgKGxhc3RfY29udGludW91c19w
aWQgIT0gLTEpCiAgICAgcnRwX3ZpZGVvX3N0cmVhbV9yZWNlaXZlcl8uRnJhbWVDb250aW51b3Vz
KGxhc3RfY29udGludW91c19waWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW0uaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3JlY2VpdmVf
c3RyZWFtLmgKaW5kZXggYWU1Y2VkNTFjM2I3YjE5ZmVhMTg0MzI2YjA5MTJkZjk3YWJhMDg4ZS4u
NWM5ZmQ4M2M2MmE5ZWQxMTUzYmIyMGU1MTA4ZDRlYjNiM2IyYmE4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2
ZV9zdHJlYW0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy92aWRlby92aWRlb19yZWNlaXZlX3N0cmVhbS5oCkBAIC0xNyw3ICsxNyw2IEBACiAjaW5jbHVk
ZSAiY2FsbC9ydHBfcGFja2V0X3NpbmtfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9zeW5j
YWJsZS5oIgogI2luY2x1ZGUgImNhbGwvdmlkZW9fcmVjZWl2ZV9zdHJlYW0uaCIKLSNpbmNsdWRl
ICJjb21tb25fdmlkZW8vbGlieXV2L2luY2x1ZGUvd2VicnRjX2xpYnl1di5oIgogI2luY2x1ZGUg
Im1vZHVsZXMvcnRwX3J0Y3AvaW5jbHVkZS9mbGV4ZmVjX3JlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy92aWRlb19jb2RpbmcvZnJhbWVfYnVmZmVyMi5oIgogI2luY2x1ZGUgIm1vZHVsZXMv
dmlkZW9fY29kaW5nL3ZpZGVvX2NvZGluZ19pbXBsLmgiCkBAIC0xMTUsNiArMTE0LDcgQEAgY2xh
c3MgVmlkZW9SZWNlaXZlU3RyZWFtIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9SZWNlaXZlU3RyZWFt
LAogCiAgIENhbGxTdGF0cyogY29uc3QgY2FsbF9zdGF0c187CiAKKyAgUmVjZWl2ZVN0YXRpc3Rp
Y3NQcm94eSBzdGF0c19wcm94eV87CiAgIC8vIFNoYXJlZCBieSBtZWRpYSBhbmQgcnR4IHN0cmVh
bSByZWNlaXZlcnMsIHNpbmNlIHRoZSBsYXR0ZXIgaGFzIG5vIFJ0cFJ0Y3AKICAgLy8gbW9kdWxl
IG9mIGl0cyBvd24uCiAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxSZWNlaXZlU3RhdGlzdGljcz4g
cnRwX3JlY2VpdmVfc3RhdGlzdGljc187CkBAIC0xMjIsNyArMTIyLDYgQEAgY2xhc3MgVmlkZW9S
ZWNlaXZlU3RyZWFtIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9SZWNlaXZlU3RyZWFtLAogICBzdGQ6
OnVuaXF1ZV9wdHI8VkNNVGltaW5nPiB0aW1pbmdfOyAgLy8gSml0dGVyIGJ1ZmZlciBleHBlcmlt
ZW50LgogICB2Y206OlZpZGVvUmVjZWl2ZXIgdmlkZW9fcmVjZWl2ZXJfOwogICBzdGQ6OnVuaXF1
ZV9wdHI8cnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4+IGluY29taW5nX3ZpZGVv
X3N0cmVhbV87Ci0gIFJlY2VpdmVTdGF0aXN0aWNzUHJveHkgc3RhdHNfcHJveHlfOwogICBSdHBW
aWRlb1N0cmVhbVJlY2VpdmVyIHJ0cF92aWRlb19zdHJlYW1fcmVjZWl2ZXJfOwogICBzdGQ6OnVu
aXF1ZV9wdHI8VmlkZW9TdHJlYW1EZWNvZGVyPiB2aWRlb19zdHJlYW1fZGVjb2Rlcl87CiAgIFJ0
cFN0cmVhbXNTeW5jaHJvbml6ZXIgcnRwX3N0cmVhbV9zeW5jXzsKQEAgLTE0Nyw2ICsxNDYsNyBA
QCBjbGFzcyBWaWRlb1JlY2VpdmVTdHJlYW0gOiBwdWJsaWMgd2VicnRjOjpWaWRlb1JlY2VpdmVT
dHJlYW0sCiAgIGJvb2wgZnJhbWVfZGVjb2RlZF8gPSBmYWxzZTsKIAogICBpbnQ2NF90IGxhc3Rf
a2V5ZnJhbWVfcmVxdWVzdF9tc18gPSAwOworICBpbnQ2NF90IGxhc3RfY29tcGxldGVfZnJhbWVf
dGltZV9tc18gPSAwOwogfTsKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNw
YWNlIHdlYnJ0YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvdmlkZW8vdmlkZW9fcmVjZWl2ZV9zdHJlYW1fdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19yZWNlaXZlX3N0
cmVhbV91bml0dGVzdC5jYwppbmRleCBlNGJhNjliN2I5MmJlNGJlZjA3N2RjYjZjOWIyNGM3YWNl
ZjBmNjdhLi4wZWM5ZTE3NzMzODRkM2U3MmI2NjFjZTQ2OGFlNTc5NGQ1NmE3NzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRl
b19yZWNlaXZlX3N0cmVhbV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19yZWNlaXZlX3N0cmVhbV91bml0dGVzdC5j
YwpAQCAtMTE4LDcgKzExOCw3IEBAIFRFU1RfRihWaWRlb1JlY2VpdmVTdHJlYW1UZXN0LCBDcmVh
dGVGcmFtZUZyb21IMjY0Rm10cFNwcm9wQW5kSWRyKSB7CiAgIHJ0cHBhY2tldC5TZXRQYXlsb2Fk
VHlwZSg5OSk7CiAgIHJ0cHBhY2tldC5TZXRTZXF1ZW5jZU51bWJlcigxKTsKICAgcnRwcGFja2V0
LlNldFRpbWVzdGFtcCgwKTsKLSAgcnRjOjpFdmVudCBpbml0X2RlY29kZV9ldmVudF8oZmFsc2Us
IGZhbHNlKTsKKyAgcnRjOjpFdmVudCBpbml0X2RlY29kZV9ldmVudF87CiAgIEVYUEVDVF9DQUxM
KG1vY2tfaDI2NF92aWRlb19kZWNvZGVyXywgSW5pdERlY29kZShfLCBfKSkKICAgICAgIC5XaWxs
T25jZShJbnZva2UoWyZpbml0X2RlY29kZV9ldmVudF9dKGNvbnN0IFZpZGVvQ29kZWMqIGNvbmZp
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg
bnVtYmVyX29mX2NvcmVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbS5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmNj
CmluZGV4IDA1NGQyN2U0MjFjMDAxNzlkMmNmYWQ5NmNmMDE4YTJhOGNmYTExY2UuLjA1OWE2MTUw
YWY5YjljZTNlZDRmODc5YWM0Yzk3YWJmNDEyMjNjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3Zp
ZGVvX3NlbmRfc3RyZWFtLmNjCkBAIC0xNSwxMiArMTUsMTUgQEAKICNpbmNsdWRlICJtb2R1bGVz
L3J0cF9ydGNwL3NvdXJjZS9ydHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmgiCiAjaW5jbHVkZSAi
bW9kdWxlcy9ydHBfcnRjcC9zb3VyY2UvcnRwX3NlbmRlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNl
L2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9maWVsZF90cmlh
bC5oIgogI2luY2x1ZGUgInZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX2ltcGwuaCIKIAogbmFtZXNw
YWNlIHdlYnJ0YyB7CiAKIG5hbWVzcGFjZSB7CiAKK2NvbnN0ZXhwciBjaGFyIGtUYXJnZXRCaXRy
YXRlUnRjcEZpZWxkVHJpYWxbXSA9ICJXZWJSVEMtVGFyZ2V0LUJpdHJhdGUtUnRjcCI7CisKIHNp
emVfdCBDYWxjdWxhdGVNYXhIZWFkZXJTaXplKGNvbnN0IFJ0cENvbmZpZyYgY29uZmlnKSB7CiAg
IHNpemVfdCBoZWFkZXJfc2l6ZSA9IGtSdHBIZWFkZXJTaXplOwogICBzaXplX3QgZXh0ZW5zaW9u
c19zaXplID0gMDsKQEAgLTYyLDcgKzY1LDcgQEAgVmlkZW9TZW5kU3RyZWFtOjpWaWRlb1NlbmRT
dHJlYW0oCiAgICAgcnRjOjpUYXNrUXVldWUqIHdvcmtlcl9xdWV1ZSwKICAgICBDYWxsU3RhdHMq
IGNhbGxfc3RhdHMsCiAgICAgUnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHRy
YW5zcG9ydCwKLSAgICBCaXRyYXRlQWxsb2NhdG9yKiBiaXRyYXRlX2FsbG9jYXRvciwKKyAgICBC
aXRyYXRlQWxsb2NhdG9ySW50ZXJmYWNlKiBiaXRyYXRlX2FsbG9jYXRvciwKICAgICBTZW5kRGVs
YXlTdGF0cyogc2VuZF9kZWxheV9zdGF0cywKICAgICBSdGNFdmVudExvZyogZXZlbnRfbG9nLAog
ICAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnIGNvbmZpZywKQEAgLTcxLDEzICs3NCwxMyBAQCBW
aWRlb1NlbmRTdHJlYW06OlZpZGVvU2VuZFN0cmVhbSgKICAgICBjb25zdCBzdGQ6Om1hcDx1aW50
MzJfdCwgUnRwUGF5bG9hZFN0YXRlPiYgc3VzcGVuZGVkX3BheWxvYWRfc3RhdGVzLAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxGZWNDb250cm9sbGVyPiBmZWNfY29udHJvbGxlcikKICAgICA6IHdvcmtl
cl9xdWV1ZV8od29ya2VyX3F1ZXVlKSwKLSAgICAgIHRocmVhZF9zeW5jX2V2ZW50XyhmYWxzZSAv
KiBtYW51YWxfcmVzZXQgKi8sIGZhbHNlKSwKICAgICAgIHN0YXRzX3Byb3h5XyhDbG9jazo6R2V0
UmVhbFRpbWVDbG9jaygpLAogICAgICAgICAgICAgICAgICAgIGNvbmZpZywKICAgICAgICAgICAg
ICAgICAgICBlbmNvZGVyX2NvbmZpZy5jb250ZW50X3R5cGUpLAogICAgICAgY29uZmlnXyhzdGQ6
Om1vdmUoY29uZmlnKSksCiAgICAgICBjb250ZW50X3R5cGVfKGVuY29kZXJfY29uZmlnLmNvbnRl
bnRfdHlwZSkgewogICBSVENfRENIRUNLKGNvbmZpZ18uZW5jb2Rlcl9zZXR0aW5ncy5lbmNvZGVy
X2ZhY3RvcnkpOworICBSVENfRENIRUNLKGNvbmZpZ18uZW5jb2Rlcl9zZXR0aW5ncy5iaXRyYXRl
X2FsbG9jYXRvcl9mYWN0b3J5KTsKIAogICB2aWRlb19zdHJlYW1fZW5jb2Rlcl8gPSBDcmVhdGVW
aWRlb1N0cmVhbUVuY29kZXIobnVtX2NwdV9jb3JlcywgJnN0YXRzX3Byb3h5XywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18uZW5jb2Rl
cl9zZXR0aW5ncywKQEAgLTEwNCw5ICsxMDcsMTAgQEAgVmlkZW9TZW5kU3RyZWFtOjpWaWRlb1Nl
bmRTdHJlYW0oCiAgIC8vIGl0IHdhcyBjcmVhdGVkIG9uLgogICB0aHJlYWRfc3luY19ldmVudF8u
V2FpdChydGM6OkV2ZW50OjprRm9yZXZlcik7CiAgIHNlbmRfc3RyZWFtXy0+UmVnaXN0ZXJQcm9j
ZXNzVGhyZWFkKG1vZHVsZV9wcm9jZXNzX3RocmVhZCk7Ci0gIC8vIFRPRE8oc3ByYW5nKTogRW5h
YmxlIHRoaXMgYWxzbyBmb3IgcmVndWxhciB2aWRlbyBjYWxscyBpZiBpdCB3b3JrcyB3ZWxsLgot
ICBpZiAoZW5jb2Rlcl9jb25maWcuY29udGVudF90eXBlID09IFZpZGVvRW5jb2RlckNvbmZpZzo6
Q29udGVudFR5cGU6OmtTY3JlZW4pIHsKLSAgICAvLyBPbmx5IHNpZ25hbCB0YXJnZXQgYml0cmF0
ZSBmb3Igc2NyZWVuc2hhcmUgc3RyZWFtcywgZm9yIG5vdy4KKyAgLy8gVE9ETyhzcHJhbmcpOiBF
bmFibGUgdGhpcyBhbHNvIGZvciByZWd1bGFyIHZpZGVvIGNhbGxzIGJ5IGRlZmF1bHQsIGlmIGl0
CisgIC8vIHdvcmtzIHdlbGwuCisgIGlmIChlbmNvZGVyX2NvbmZpZy5jb250ZW50X3R5cGUgPT0g
VmlkZW9FbmNvZGVyQ29uZmlnOjpDb250ZW50VHlwZTo6a1NjcmVlbiB8fAorICAgICAgZmllbGRf
dHJpYWw6OklzRW5hYmxlZChrVGFyZ2V0Qml0cmF0ZVJ0Y3BGaWVsZFRyaWFsKSkgewogICAgIHZp
ZGVvX3N0cmVhbV9lbmNvZGVyXy0+U2V0Qml0cmF0ZUFsbG9jYXRpb25PYnNlcnZlcihzZW5kX3N0
cmVhbV8uZ2V0KCkpOwogICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbS5o
CmluZGV4IDA5NDUyMDNkZjMxYjVhNTc5ODE5YTFiMWQ1YmIzMjUyYjU3NTc3ZGQuLjIyYWE0YjFj
NmQ1ZGJkMzYyNzVlZmE3YTYxYWY5NTE4MWQ2MzhhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlk
ZW9fc2VuZF9zdHJlYW0uaApAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgImNhbGwvYml0cmF0
ZV9hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYWxsL3ZpZGVvX3JlY2VpdmVfc3RyZWFtLmgiCiAj
aW5jbHVkZSAiY2FsbC92aWRlb19zZW5kX3N0cmVhbS5oIgotI2luY2x1ZGUgImNvbW1vbl92aWRl
by9saWJ5dXYvaW5jbHVkZS93ZWJydGNfbGlieXV2LmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvY3Jp
dGljYWxzZWN0aW9uLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvZXZlbnQuaCIKICNpbmNsdWRlICJy
dGNfYmFzZS90YXNrX3F1ZXVlLmgiCkBAIC02MCw3ICs1OSw3IEBAIGNsYXNzIFZpZGVvU2VuZFN0
cmVhbSA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvU2VuZFN0cmVhbSB7CiAgICAgICBydGM6OlRhc2tR
dWV1ZSogd29ya2VyX3F1ZXVlLAogICAgICAgQ2FsbFN0YXRzKiBjYWxsX3N0YXRzLAogICAgICAg
UnRwVHJhbnNwb3J0Q29udHJvbGxlclNlbmRJbnRlcmZhY2UqIHRyYW5zcG9ydCwKLSAgICAgIEJp
dHJhdGVBbGxvY2F0b3IqIGJpdHJhdGVfYWxsb2NhdG9yLAorICAgICAgQml0cmF0ZUFsbG9jYXRv
ckludGVyZmFjZSogYml0cmF0ZV9hbGxvY2F0b3IsCiAgICAgICBTZW5kRGVsYXlTdGF0cyogc2Vu
ZF9kZWxheV9zdGF0cywKICAgICAgIFJ0Y0V2ZW50TG9nKiBldmVudF9sb2csCiAgICAgICBWaWRl
b1NlbmRTdHJlYW06OkNvbmZpZyBjb25maWcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9pbXBsLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9f
c2VuZF9zdHJlYW1faW1wbC5jYwppbmRleCA1OGNhZjQ3Nzc0NjJkNzU5NWNhMDBhZjZjM2Y1OGEw
ZTk3NDE0NTdiLi41ZGNmMTgyNDNkNWY4NzZmMDEyMDY3NTA0NjRiMTk3ZmIzYzJkMTQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92
aWRlb19zZW5kX3N0cmVhbV9pbXBsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX2ltcGwuY2MKQEAgLTExMSw2
ICsxMTEsMTQgQEAgaW50IENhbGN1bGF0ZU1heFBhZEJpdHJhdGVCcHMoY29uc3Qgc3RkOjp2ZWN0
b3I8VmlkZW9TdHJlYW0+JiBzdHJlYW1zLAogICByZXR1cm4gcGFkX3VwX3RvX2JpdHJhdGVfYnBz
OwogfQogCitSdHBTZW5kZXJGcmFtZUVuY3J5cHRpb25Db25maWcgQ3JlYXRlRnJhbWVFbmNyeXB0
aW9uQ29uZmlnKAorICAgIGNvbnN0IFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnKiBjb25maWcpIHsK
KyAgUnRwU2VuZGVyRnJhbWVFbmNyeXB0aW9uQ29uZmlnIGZyYW1lX2VuY3J5cHRpb25fY29uZmln
OworICBmcmFtZV9lbmNyeXB0aW9uX2NvbmZpZy5mcmFtZV9lbmNyeXB0b3IgPSBjb25maWctPmZy
YW1lX2VuY3J5cHRvcjsKKyAgZnJhbWVfZW5jcnlwdGlvbl9jb25maWcuY3J5cHRvX29wdGlvbnMg
PSBjb25maWctPmNyeXB0b19vcHRpb25zOworICByZXR1cm4gZnJhbWVfZW5jcnlwdGlvbl9jb25m
aWc7Cit9CisKIFJ0cFNlbmRlck9ic2VydmVycyBDcmVhdGVPYnNlcnZlcnMoQ2FsbFN0YXRzKiBj
YWxsX3N0YXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGVyUnRj
cEZlZWRiYWNrKiBlbmNvZGVyX2ZlZWRiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTZW5kU3RhdGlzdGljc1Byb3h5KiBzdGF0c19wcm94eSwKQEAgLTE1MSw2ICsxNTks
MTYgQEAgYm9vbCBTYW1lU3RyZWFtc0VuYWJsZWQoY29uc3QgVmlkZW9CaXRyYXRlQWxsb2NhdGlv
biYgbGhzLAogfQogfSAgLy8gbmFtZXNwYWNlCiAKK1BhY2luZ0NvbmZpZzo6UGFjaW5nQ29uZmln
KCkKKyAgICA6IHBhY2luZ19mYWN0b3IoImZhY3RvciIsIFBhY2VkU2VuZGVyOjprRGVmYXVsdFBh
Y2VNdWx0aXBsaWVyKSwKKyAgICAgIG1heF9wYWNpbmdfZGVsYXkoIm1heF9kZWxheSIsCisgICAg
ICAgICAgICAgICAgICAgICAgIFRpbWVEZWx0YTo6bXMoUGFjZWRTZW5kZXI6OmtNYXhRdWV1ZUxl
bmd0aE1zKSkgeworICBQYXJzZUZpZWxkVHJpYWwoeyZwYWNpbmdfZmFjdG9yLCAmbWF4X3BhY2lu
Z19kZWxheX0sCisgICAgICAgICAgICAgICAgICBmaWVsZF90cmlhbDo6RmluZEZ1bGxOYW1lKCJX
ZWJSVEMtVmlkZW8tUGFjaW5nIikpOworfQorUGFjaW5nQ29uZmlnOjpQYWNpbmdDb25maWcoY29u
c3QgUGFjaW5nQ29uZmlnJikgPSBkZWZhdWx0OworUGFjaW5nQ29uZmlnOjp+UGFjaW5nQ29uZmln
KCkgPSBkZWZhdWx0OworCiAvLyBDaGVja0VuY29kZXJBY3Rpdml0eVRhc2sgaXMgdXNlZCBmb3Ig
dHJhY2tpbmcgd2hlbiB0aGUgZW5jb2RlciBsYXN0IHByb2R1Y2VkCiAvLyBhbmQgZW5jb2RlZCB2
aWRlbyBmcmFtZS4gSWYgdGhlIGVuY29kZXIgaGFzIG5vdCBwcm9kdWNlZCBhbnl0aGluZyB0aGUg
bGFzdAogLy8ga0VuY29kZXJUaW1lT3V0TXMgd2UgYWxzbyB3YW50IHRvIHN0b3Agc2VuZGluZyBw
YWRkaW5nLgpAQCAtMjIxLDYgKzIzOSw3IEBAIFZpZGVvU2VuZFN0cmVhbUltcGw6OlZpZGVvU2Vu
ZFN0cmVhbUltcGwoCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZlY0NvbnRyb2xsZXI+IGZlY19jb250
cm9sbGVyKQogICAgIDogaGFzX2Fscl9wcm9iaW5nXyhjb25maWctPnBlcmlvZGljX2Fscl9iYW5k
d2lkdGhfcHJvYmluZyB8fAogICAgICAgICAgICAgICAgICAgICAgICBHZXRBbHJTZXR0aW5ncyhj
b250ZW50X3R5cGUpKSwKKyAgICAgIHBhY2luZ19jb25maWdfKFBhY2luZ0NvbmZpZygpKSwKICAg
ICAgIHN0YXRzX3Byb3h5XyhzdGF0c19wcm94eSksCiAgICAgICBjb25maWdfKGNvbmZpZyksCiAg
ICAgICB3b3JrZXJfcXVldWVfKHdvcmtlcl9xdWV1ZSksCkBAIC0yMzgsMTkgKzI1NywyMCBAQCBW
aWRlb1NlbmRTdHJlYW1JbXBsOjpWaWRlb1NlbmRTdHJlYW1JbXBsKAogICAgICAgICAgICAgICAg
ICAgICAgICAgY29uZmlnXy0+cnRwLnNzcmNzLAogICAgICAgICAgICAgICAgICAgICAgICAgdmlk
ZW9fc3RyZWFtX2VuY29kZXIpLAogICAgICAgYmFuZHdpZHRoX29ic2VydmVyXyh0cmFuc3BvcnQt
PkdldEJhbmR3aWR0aE9ic2VydmVyKCkpLAotICAgICAgcnRwX3ZpZGVvX3NlbmRlcl8oCi0gICAg
ICAgICAgdHJhbnNwb3J0Xy0+Q3JlYXRlUnRwVmlkZW9TZW5kZXIoY29uZmlnXy0+cnRwLnNzcmNz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1c3BlbmRlZF9z
c3JjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXNwZW5k
ZWRfcGF5bG9hZF9zdGF0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uZmlnXy0+cnRwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbmZpZ18tPnJ0Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uZmlnXy0+c2VuZF90cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlT2JzZXJ2ZXJzKGNhbGxfc3RhdHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbmNv
ZGVyX2ZlZWRiYWNrXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdHNfcHJveHlfLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX2RlbGF5X3N0YXRzKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9sb2csCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGZlY19jb250
cm9sbGVyKSkpLAorICAgICAgcnRwX3ZpZGVvX3NlbmRlcl8odHJhbnNwb3J0Xy0+Q3JlYXRlUnRw
VmlkZW9TZW5kZXIoCisgICAgICAgICAgY29uZmlnXy0+cnRwLnNzcmNzLAorICAgICAgICAgIHN1
c3BlbmRlZF9zc3JjcywKKyAgICAgICAgICBzdXNwZW5kZWRfcGF5bG9hZF9zdGF0ZXMsCisgICAg
ICAgICAgY29uZmlnXy0+cnRwLAorICAgICAgICAgIGNvbmZpZ18tPnJ0Y3BfcmVwb3J0X2ludGVy
dmFsX21zLAorICAgICAgICAgIGNvbmZpZ18tPnNlbmRfdHJhbnNwb3J0LAorICAgICAgICAgIENy
ZWF0ZU9ic2VydmVycyhjYWxsX3N0YXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5j
b2Rlcl9mZWVkYmFja18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzX3Byb3h5XywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9kZWxheV9zdGF0cyksCisgICAgICAgICAg
ZXZlbnRfbG9nLAorICAgICAgICAgIHN0ZDo6bW92ZShmZWNfY29udHJvbGxlciksCisgICAgICAg
ICAgQ3JlYXRlRnJhbWVFbmNyeXB0aW9uQ29uZmlnKGNvbmZpZ18pKSksCiAgICAgICB3ZWFrX3B0
cl9mYWN0b3J5Xyh0aGlzKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKHdvcmtlcl9xdWV1ZV8pOwog
ICBSVENfTE9HKExTX0lORk8pIDw8ICJWaWRlb1NlbmRTdHJlYW1JbnRlcm5hbDogIiA8PCBjb25m
aWdfLT5Ub1N0cmluZygpOwpAQCAtMjkzLDkgKzMxMyw5IEBAIFZpZGVvU2VuZFN0cmVhbUltcGw6
OlZpZGVvU2VuZFN0cmVhbUltcGwoCiAgICAgICB0cmFuc3BvcnQtPlNldFF1ZXVlVGltZUxpbWl0
KGFscl9zZXR0aW5ncy0+bWF4X3BhY2VkX3F1ZXVlX3RpbWUpOwogICAgIH0gZWxzZSB7CiAgICAg
ICB0cmFuc3BvcnQtPkVuYWJsZVBlcmlvZGljQWxyUHJvYmluZyhmYWxzZSk7Ci0gICAgICB0cmFu
c3BvcnQtPlNldFBhY2luZ0ZhY3RvcihQYWNlZFNlbmRlcjo6a0RlZmF1bHRQYWNlTXVsdGlwbGll
cik7Ci0gICAgICBjb25maWd1cmVkX3BhY2luZ19mYWN0b3JfID0gUGFjZWRTZW5kZXI6OmtEZWZh
dWx0UGFjZU11bHRpcGxpZXI7Ci0gICAgICB0cmFuc3BvcnQtPlNldFF1ZXVlVGltZUxpbWl0KFBh
Y2VkU2VuZGVyOjprTWF4UXVldWVMZW5ndGhNcyk7CisgICAgICB0cmFuc3BvcnQtPlNldFBhY2lu
Z0ZhY3RvcihwYWNpbmdfY29uZmlnXy5wYWNpbmdfZmFjdG9yKTsKKyAgICAgIGNvbmZpZ3VyZWRf
cGFjaW5nX2ZhY3Rvcl8gPSBwYWNpbmdfY29uZmlnXy5wYWNpbmdfZmFjdG9yOworICAgICAgdHJh
bnNwb3J0LT5TZXRRdWV1ZVRpbWVMaW1pdChwYWNpbmdfY29uZmlnXy5tYXhfcGFjaW5nX2RlbGF5
LkdldCgpLm1zKCkpOwogICAgIH0KICAgfQogCkBAIC01NjMsMTcgKzU4Myw2IEBAIEVuY29kZWRJ
bWFnZUNhbGxiYWNrOjpSZXN1bHQgVmlkZW9TZW5kU3RyZWFtSW1wbDo6T25FbmNvZGVkSW1hZ2Uo
CiAgIC8vIEVuY29kZWQgaXMgY2FsbGVkIG9uIHdoYXRldmVyIHRocmVhZCB0aGUgcmVhbCBlbmNv
ZGVyIGltcGxlbWVudGF0aW9uIHJ1bgogICAvLyBvbi4gSW4gdGhlIGNhc2Ugb2YgaGFyZHdhcmUg
ZW5jb2RlcnMsIHRoZXJlIG1pZ2h0IGJlIHNldmVyYWwgZW5jb2RlcnMKICAgLy8gcnVubmluZyBp
biBwYXJhbGxlbCBvbiBkaWZmZXJlbnQgdGhyZWFkcy4KLSAgY29uc3Qgc2l6ZV90IHNpbXVsY2Fz
dF9pZHggPQotICAgICAgKGNvZGVjX3NwZWNpZmljX2luZm8tPmNvZGVjVHlwZSAhPSBrVmlkZW9D
b2RlY1ZQOSkKLSAgICAgICAgICA/IGVuY29kZWRfaW1hZ2UuU3BhdGlhbEluZGV4KCkudmFsdWVf
b3IoMCkKLSAgICAgICAgICA6IDA7Ci0gIGlmIChjb25maWdfLT5wb3N0X2VuY29kZV9jYWxsYmFj
aykgewotICAgIC8vIFRPRE8obmlzc2UpOiBEZWxldGUgd2VicnRjOjpFbmNvZGVkRnJhbWUgY2xh
c3MsIHBhc3MgRW5jb2RlZEltYWdlCi0gICAgLy8gaW5zdGVhZC4KLSAgICBjb25maWdfLT5wb3N0
X2VuY29kZV9jYWxsYmFjay0+RW5jb2RlZEZyYW1lQ2FsbGJhY2soRW5jb2RlZEZyYW1lKAotICAg
ICAgICBlbmNvZGVkX2ltYWdlLl9idWZmZXIsIGVuY29kZWRfaW1hZ2UuX2xlbmd0aCwgZW5jb2Rl
ZF9pbWFnZS5fZnJhbWVUeXBlLAotICAgICAgICBzaW11bGNhc3RfaWR4LCBlbmNvZGVkX2ltYWdl
LlRpbWVzdGFtcCgpKSk7Ci0gIH0KICAgewogICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmVuY29k
ZXJfYWN0aXZpdHlfY3JpdF9zZWN0Xyk7CiAgICAgaWYgKGNoZWNrX2VuY29kZXJfYWN0aXZpdHlf
dGFza18pCkBAIC02MTMsMjEgKzYyMiwyMiBAQCBzdGQ6Om1hcDx1aW50MzJfdCwgUnRwUGF5bG9h
ZFN0YXRlPiBWaWRlb1NlbmRTdHJlYW1JbXBsOjpHZXRSdHBQYXlsb2FkU3RhdGVzKCkKICAgcmV0
dXJuIHJ0cF92aWRlb19zZW5kZXJfLT5HZXRSdHBQYXlsb2FkU3RhdGVzKCk7CiB9CiAKLXVpbnQz
Ml90IFZpZGVvU2VuZFN0cmVhbUltcGw6Ok9uQml0cmF0ZVVwZGF0ZWQodWludDMyX3QgYml0cmF0
ZV9icHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgZnJhY3Rpb25fbG9zcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBydHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcykgewordWludDMyX3Qg
VmlkZW9TZW5kU3RyZWFtSW1wbDo6T25CaXRyYXRlVXBkYXRlZChCaXRyYXRlQWxsb2NhdGlvblVw
ZGF0ZSB1cGRhdGUpIHsKICAgUlRDX0RDSEVDS19SVU5fT04od29ya2VyX3F1ZXVlXyk7CiAgIFJU
Q19EQ0hFQ0socnRwX3ZpZGVvX3NlbmRlcl8tPklzQWN0aXZlKCkpCiAgICAgICA8PCAiVmlkZW9T
ZW5kU3RyZWFtOjpTdGFydCBoYXMgbm90IGJlZW4gY2FsbGVkLiI7CiAKLSAgcnRwX3ZpZGVvX3Nl
bmRlcl8tPk9uQml0cmF0ZVVwZGF0ZWQoYml0cmF0ZV9icHMsIGZyYWN0aW9uX2xvc3MsIHJ0dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHNfcHJveHlfLT5HZXRT
ZW5kRnJhbWVSYXRlKCkpOworICBydHBfdmlkZW9fc2VuZGVyXy0+T25CaXRyYXRlVXBkYXRlZCgK
KyAgICAgIHVwZGF0ZS50YXJnZXRfYml0cmF0ZS5icHMoKSwKKyAgICAgIHJ0Yzo6ZGNoZWNrZWRf
Y2FzdDx1aW50OF90Pih1cGRhdGUucGFja2V0X2xvc3NfcmF0aW8gKiAyNTYpLAorICAgICAgdXBk
YXRlLnJvdW5kX3RyaXBfdGltZS5tcygpLCBzdGF0c19wcm94eV8tPkdldFNlbmRGcmFtZVJhdGUo
KSk7CiAgIGVuY29kZXJfdGFyZ2V0X3JhdGVfYnBzXyA9IHJ0cF92aWRlb19zZW5kZXJfLT5HZXRQ
YXlsb2FkQml0cmF0ZUJwcygpOwogICBlbmNvZGVyX3RhcmdldF9yYXRlX2Jwc18gPQogICAgICAg
c3RkOjptaW4oZW5jb2Rlcl9tYXhfYml0cmF0ZV9icHNfLCBlbmNvZGVyX3RhcmdldF9yYXRlX2Jw
c18pOwotICB2aWRlb19zdHJlYW1fZW5jb2Rlcl8tPk9uQml0cmF0ZVVwZGF0ZWQoZW5jb2Rlcl90
YXJnZXRfcmF0ZV9icHNfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhY3Rpb25fbG9zcywgcnR0KTsKKyAgdmlkZW9fc3RyZWFtX2VuY29kZXJfLT5PbkJpdHJh
dGVVcGRhdGVkKAorICAgICAgZW5jb2Rlcl90YXJnZXRfcmF0ZV9icHNfLAorICAgICAgcnRjOjpk
Y2hlY2tlZF9jYXN0PHVpbnQ4X3Q+KHVwZGF0ZS5wYWNrZXRfbG9zc19yYXRpbyAqIDI1NiksCisg
ICAgICB1cGRhdGUucm91bmRfdHJpcF90aW1lLm1zKCkpOwogICBzdGF0c19wcm94eV8tPk9uU2V0
RW5jb2RlclRhcmdldFJhdGUoZW5jb2Rlcl90YXJnZXRfcmF0ZV9icHNfKTsKICAgcmV0dXJuIHJ0
cF92aWRlb19zZW5kZXJfLT5HZXRQcm90ZWN0aW9uQml0cmF0ZUJwcygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9f
c2VuZF9zdHJlYW1faW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbC5oCmluZGV4IGVlZDlmNTY3ZmIwODE4
NmZhODUxZGQyOWM0MmM1NDE3MGJhMzM5OTMuLjljYWFiYWNkYWI5MjQ0OGQxMzY3N2NhZjkxMDUx
N2YxYjJhZmZlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0cmVhbV9p
bXBsLmgKQEAgLTE4LDcgKzE4LDYgQEAKICNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fc3RyZWFt
X2VuY29kZXJfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY2FsbC9iaXRyYXRlX2FsbG9jYXRvci5o
IgogI2luY2x1ZGUgImNhbGwvcnRwX3ZpZGVvX3NlbmRlcl9pbnRlcmZhY2UuaCIKLSNpbmNsdWRl
ICJjb21tb25fdHlwZXMuaCIgIC8vIE5PTElOVChidWlsZC9pbmNsdWRlKQogI2luY2x1ZGUgIm1v
ZHVsZXMvdXRpbGl0eS9pbmNsdWRlL3Byb2Nlc3NfdGhyZWFkLmgiCiAjaW5jbHVkZSAicnRjX2Jh
c2Uvd2Vha19wdHIuaCIKICNpbmNsdWRlICJ2aWRlby9jYWxsX3N0YXRzLmgiCkBAIC0zMCw2ICsy
OSwxNiBAQAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCisvLyBQ
YWNpbmcgYnVmZmVyIGNvbmZpZzsgb3ZlcnJpZGRlbiBieSBBTFIgY29uZmlnIGlmIHByb3ZpZGVk
Lgorc3RydWN0IFBhY2luZ0NvbmZpZyB7CisgIFBhY2luZ0NvbmZpZygpOworICBQYWNpbmdDb25m
aWcoY29uc3QgUGFjaW5nQ29uZmlnJik7CisgIFBhY2luZ0NvbmZpZyYgb3BlcmF0b3I9KGNvbnN0
IFBhY2luZ0NvbmZpZyYpID0gZGVmYXVsdDsKKyAgflBhY2luZ0NvbmZpZygpOworICBGaWVsZFRy
aWFsUGFyYW1ldGVyPGRvdWJsZT4gcGFjaW5nX2ZhY3RvcjsKKyAgRmllbGRUcmlhbFBhcmFtZXRl
cjxUaW1lRGVsdGE+IG1heF9wYWNpbmdfZGVsYXk7Cit9OworCiAvLyBWaWRlb1NlbmRTdHJlYW1J
bXBsIGltcGxlbWVudHMgaW50ZXJuYWw6OlZpZGVvU2VuZFN0cmVhbS4KIC8vIEl0IGlzIGNyZWF0
ZWQgYW5kIGRlc3Ryb3llZCBvbiB8d29ya2VyX3F1ZXVlfC4gVGhlIGludGVudCBpcyB0byBkZWNy
ZWFzZSB0aGUKIC8vIG5lZWQgZm9yIGxvY2tpbmcgYW5kIHRvIGVuc3VyZSBtZXRob2RzIGFyZSBj
YWxsZWQgaW4gc2VxdWVuY2UuCkBAIC04MywxMCArOTIsNyBAQCBjbGFzcyBWaWRlb1NlbmRTdHJl
YW1JbXBsIDogcHVibGljIHdlYnJ0Yzo6Qml0cmF0ZUFsbG9jYXRvck9ic2VydmVyLAogICBjbGFz
cyBDaGVja0VuY29kZXJBY3Rpdml0eVRhc2s7CiAKICAgLy8gSW1wbGVtZW50cyBCaXRyYXRlQWxs
b2NhdG9yT2JzZXJ2ZXIuCi0gIHVpbnQzMl90IE9uQml0cmF0ZVVwZGF0ZWQodWludDMyX3QgYml0
cmF0ZV9icHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmcmFjdGlvbl9s
b3NzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgcnR0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgcHJvYmluZ19pbnRlcnZhbF9tcykgb3ZlcnJpZGU7
CisgIHVpbnQzMl90IE9uQml0cmF0ZVVwZGF0ZWQoQml0cmF0ZUFsbG9jYXRpb25VcGRhdGUgdXBk
YXRlKSBvdmVycmlkZTsKIAogICB2b2lkIE9uRW5jb2RlckNvbmZpZ3VyYXRpb25DaGFuZ2VkKHN0
ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBzdHJlYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBtaW5fdHJhbnNtaXRfYml0cmF0ZV9icHMpIG92ZXJyaWRlOwpAQCAt
MTE1LDYgKzEyMSw3IEBAIGNsYXNzIFZpZGVvU2VuZFN0cmVhbUltcGwgOiBwdWJsaWMgd2VicnRj
OjpCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIsCiAgIHZvaWQgU2lnbmFsRW5jb2RlckFjdGl2ZSgp
OwogCiAgIGNvbnN0IGJvb2wgaGFzX2Fscl9wcm9iaW5nXzsKKyAgY29uc3QgUGFjaW5nQ29uZmln
IHBhY2luZ19jb25maWdfOwogCiAgIFNlbmRTdGF0aXN0aWNzUHJveHkqIGNvbnN0IHN0YXRzX3By
b3h5XzsKICAgY29uc3QgVmlkZW9TZW5kU3RyZWFtOjpDb25maWcqIGNvbnN0IGNvbmZpZ187CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRl
by92aWRlb19zZW5kX3N0cmVhbV9pbXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1faW1wbF91bml0
dGVzdC5jYwppbmRleCBkZDAzNjkwOWE2YWYxZWM1Njc5OGQ0OGI5NThhMTY5ZDBiN2NkYjE4Li4z
MmQwZGYxYzJlNjFiN2RjNWVmY2RhZTgzZjYzYTQxODgxMDcxMzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zZW5kX3N0
cmVhbV9pbXBsX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX2ltcGxfdW5pdHRlc3QuY2MKQEAg
LTY5LDYgKzY5LDE0IEBAIGNsYXNzIE1vY2tSdHBWaWRlb1NlbmRlciA6IHB1YmxpYyBSdHBWaWRl
b1NlbmRlckludGVyZmFjZSB7CiAgIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRQcm90ZWN0aW9uQml0
cmF0ZUJwcywgdWludDMyX3QoKSk7CiAgIE1PQ0tfTUVUSE9EMyhTZXRFbmNvZGluZ0RhdGEsIHZv
aWQoc2l6ZV90LCBzaXplX3QsIHNpemVfdCkpOwogfTsKKworQml0cmF0ZUFsbG9jYXRpb25VcGRh
dGUgQ3JlYXRlQWxsb2NhdGlvbihpbnQgYml0cmF0ZV9icHMpIHsKKyAgQml0cmF0ZUFsbG9jYXRp
b25VcGRhdGUgdXBkYXRlOworICB1cGRhdGUudGFyZ2V0X2JpdHJhdGUgPSBEYXRhUmF0ZTo6YnBz
KGJpdHJhdGVfYnBzKTsKKyAgdXBkYXRlLnBhY2tldF9sb3NzX3JhdGlvID0gMDsKKyAgdXBkYXRl
LnJvdW5kX3RyaXBfdGltZSA9IFRpbWVEZWx0YTo6WmVybygpOworICByZXR1cm4gdXBkYXRlOwor
fQogfSAgLy8gbmFtZXNwYWNlCiAKIGNsYXNzIFZpZGVvU2VuZFN0cmVhbUltcGxUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CkBAIC05MSw3ICs5OSw3IEBAIGNsYXNzIFZpZGVvU2VuZFN0
cmVhbUltcGxUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgRVhQRUNUX0NBTEwo
dHJhbnNwb3J0X2NvbnRyb2xsZXJfLCBwYWNrZXRfcm91dGVyKCkpCiAgICAgICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm4oJnBhY2tldF9yb3V0ZXJfKSk7CiAgICAgRVhQRUNUX0NBTEwodHJhbnNw
b3J0X2NvbnRyb2xsZXJfLAotICAgICAgICAgICAgICAgIENyZWF0ZVJ0cFZpZGVvU2VuZGVyKF8s
IF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8pKQorICAgICAgICAgICAgICAgIENyZWF0ZVJ0cFZpZGVv
U2VuZGVyKF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8pKQogICAgICAgICAuV2lsbFJlcGVh
dGVkbHkoUmV0dXJuKCZydHBfdmlkZW9fc2VuZGVyXykpOwogICAgIEVYUEVDVF9DQUxMKHJ0cF92
aWRlb19zZW5kZXJfLCBTZXRBY3RpdmUoXykpCiAgICAgICAgIC5XaWxsUmVwZWF0ZWRseSh0ZXN0
aW5nOjpJbnZva2UoCkBAIC0zNjcsNyArMzc1LDcgQEAgVEVTVF9GKFZpZGVvU2VuZFN0cmVhbUlt
cGxUZXN0LCBGb3J3YXJkc1ZpZGVvQml0cmF0ZUFsbG9jYXRpb25XaGVuRW5hYmxlZCkgewogICAg
ICAgICAuVGltZXMoMSkKICAgICAgICAgLldpbGxPbmNlKFJldHVybihrQml0cmF0ZUJwcykpOwog
ICAgIHN0YXRpY19jYXN0PEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlcio+KHZzc19pbXBsLmdldCgp
KQotICAgICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoa0JpdHJhdGVCcHMsIDAsIDAsIDApOworICAg
ICAgICAtPk9uQml0cmF0ZVVwZGF0ZWQoQ3JlYXRlQWxsb2NhdGlvbihrQml0cmF0ZUJwcykpOwog
ICAgIEVYUEVDVF9DQUxMKHJ0cF92aWRlb19zZW5kZXJfLCBPbkJpdHJhdGVBbGxvY2F0aW9uVXBk
YXRlZChhbGxvYykpLlRpbWVzKDEpOwogICAgIG9ic2VydmVyLT5PbkJpdHJhdGVBbGxvY2F0aW9u
VXBkYXRlZChhbGxvYyk7CiAKQEAgLTM3Niw3ICszODQsNyBAQCBURVNUX0YoVmlkZW9TZW5kU3Ry
ZWFtSW1wbFRlc3QsIEZvcndhcmRzVmlkZW9CaXRyYXRlQWxsb2NhdGlvbldoZW5FbmFibGVkKSB7
CiAgICAgICAgIC5UaW1lcygxKQogICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDApKTsKICAgICBz
dGF0aWNfY2FzdDxCaXRyYXRlQWxsb2NhdG9yT2JzZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSkKLSAg
ICAgICAgLT5PbkJpdHJhdGVVcGRhdGVkKDAsIDAsIDAsIDApOworICAgICAgICAtPk9uQml0cmF0
ZVVwZGF0ZWQoQ3JlYXRlQWxsb2NhdGlvbigwKSk7CiAgICAgRVhQRUNUX0NBTEwocnRwX3ZpZGVv
X3NlbmRlcl8sIE9uQml0cmF0ZUFsbG9jYXRpb25VcGRhdGVkKGFsbG9jKSkuVGltZXMoMCk7CiAg
ICAgb2JzZXJ2ZXItPk9uQml0cmF0ZUFsbG9jYXRpb25VcGRhdGVkKGFsbG9jKTsKIApAQCAtMzk2
LDcgKzQwNCw3IEBAIFRFU1RfRihWaWRlb1NlbmRTdHJlYW1JbXBsVGVzdCwgVGhyb3R0bGVzVmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbldoZW5Ub29TaW1pbGFyKSB7CiAgICAgICAgIC5UaW1lcygxKQog
ICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKGtCaXRyYXRlQnBzKSk7CiAgICAgc3RhdGljX2Nhc3Q8
Qml0cmF0ZUFsbG9jYXRvck9ic2VydmVyKj4odnNzX2ltcGwuZ2V0KCkpCi0gICAgICAgIC0+T25C
aXRyYXRlVXBkYXRlZChrQml0cmF0ZUJwcywgMCwgMCwgMCk7CisgICAgICAgIC0+T25CaXRyYXRl
VXBkYXRlZChDcmVhdGVBbGxvY2F0aW9uKGtCaXRyYXRlQnBzKSk7CiAgICAgVmlkZW9CaXRyYXRl
QWxsb2NhdGlvbk9ic2VydmVyKiBjb25zdCBvYnNlcnZlciA9CiAgICAgICAgIHN0YXRpY19jYXN0
PFZpZGVvQml0cmF0ZUFsbG9jYXRpb25PYnNlcnZlcio+KHZzc19pbXBsLmdldCgpKTsKIApAQCAt
NDUwLDcgKzQ1OCw3IEBAIFRFU1RfRihWaWRlb1NlbmRTdHJlYW1JbXBsVGVzdCwgRm9yd2FyZHNW
aWRlb0JpdHJhdGVBbGxvY2F0aW9uT25MYXllckNoYW5nZSkgewogICAgICAgICAuVGltZXMoMSkK
ICAgICAgICAgLldpbGxPbmNlKFJldHVybihrQml0cmF0ZUJwcykpOwogICAgIHN0YXRpY19jYXN0
PEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlcio+KHZzc19pbXBsLmdldCgpKQotICAgICAgICAtPk9u
Qml0cmF0ZVVwZGF0ZWQoa0JpdHJhdGVCcHMsIDAsIDAsIDApOworICAgICAgICAtPk9uQml0cmF0
ZVVwZGF0ZWQoQ3JlYXRlQWxsb2NhdGlvbihrQml0cmF0ZUJwcykpOwogICAgIFZpZGVvQml0cmF0
ZUFsbG9jYXRpb25PYnNlcnZlciogY29uc3Qgb2JzZXJ2ZXIgPQogICAgICAgICBzdGF0aWNfY2Fz
dDxWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2JzZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSk7CiAKQEAg
LTQ5NCw3ICs1MDIsNyBAQCBURVNUX0YoVmlkZW9TZW5kU3RyZWFtSW1wbFRlc3QsIEZvcndhcmRz
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbkFmdGVyVGltZW91dCkgewogICAgICAgICAuVGltZXMoMSkK
ICAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihrQml0cmF0ZUJwcykpOwogICAgIHN0YXRp
Y19jYXN0PEJpdHJhdGVBbGxvY2F0b3JPYnNlcnZlcio+KHZzc19pbXBsLmdldCgpKQotICAgICAg
ICAtPk9uQml0cmF0ZVVwZGF0ZWQoa0JpdHJhdGVCcHMsIDAsIDAsIDApOworICAgICAgICAtPk9u
Qml0cmF0ZVVwZGF0ZWQoQ3JlYXRlQWxsb2NhdGlvbihrQml0cmF0ZUJwcykpOwogICAgIFZpZGVv
Qml0cmF0ZUFsbG9jYXRpb25PYnNlcnZlciogY29uc3Qgb2JzZXJ2ZXIgPQogICAgICAgICBzdGF0
aWNfY2FzdDxWaWRlb0JpdHJhdGVBbGxvY2F0aW9uT2JzZXJ2ZXIqPih2c3NfaW1wbC5nZXQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3ZpZGVvL3ZpZGVvX3NlbmRfc3RyZWFtX3Rlc3RzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1fdGVzdHMuY2MKaW5k
ZXggMDljY2YxYzQ5ODkzYTUzY2YzYmM3MzlkZGZmYjcwZmMyMTc1YWM5OS4uZWE3N2NkNjUyOTE0
OTM3OTVjOWQyMWVhNGMyNzgwMWYzM2Q4OTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc2VuZF9zdHJlYW1fdGVzdHMu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8v
dmlkZW9fc2VuZF9zdHJlYW1fdGVzdHMuY2MKQEAgLTEyLDEyICsxMiwxMSBAQAogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogI2luY2x1ZGUgImFwaS90ZXN0L3NpbXVsYXRlZF9uZXR3b3JrLmgiCisjaW5j
bHVkZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJjYWxsL2NhbGwuaCIK
ICNpbmNsdWRlICJjYWxsL2Zha2VfbmV0d29ya19waXBlLmgiCiAjaW5jbHVkZSAiY2FsbC9ydHBf
dHJhbnNwb3J0X2NvbnRyb2xsZXJfc2VuZC5oIgogI2luY2x1ZGUgImNhbGwvc2ltdWxhdGVkX25l
dHdvcmsuaCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS9mcmFtZV9jYWxsYmFjay5o
IgotI2luY2x1ZGUgImNvbW1vbl92aWRlby9pbmNsdWRlL3ZpZGVvX2ZyYW1lLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9oZWFkZXJfcGFyc2VyLmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy9ydHBfcnRjcC9pbmNsdWRlL3J0cF9ydGNwLmgiCiAjaW5jbHVkZSAibW9kdWxl
cy9ydHBfcnRjcC9zb3VyY2UvcnRjcF9zZW5kZXIuaCIKQEAgLTcwLDEwICs2OSwxNCBAQCBjbGFz
cyBWaWRlb1NlbmRTdHJlYW1QZWVyIHsKIH07CiB9ICAvLyBuYW1lc3BhY2UgdGVzdAogCituYW1l
c3BhY2UgeworY29uc3RleHByIGludDY0X3Qga1J0Y3BJbnRlcnZhbE1zID0gMTAwMDsKKwogZW51
bSBWaWRlb0Zvcm1hdCB7CiAgIGtHZW5lcmljLAogICBrVlA4LAogfTsKK30gIC8vIG5hbWVzcGFj
ZQogCiB2b2lkIEV4cGVjdEVxdWFsRnJhbWVzVmVjdG9yKGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVv
RnJhbWU+JiBmcmFtZXMxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxWaWRlb0ZyYW1lPiYgZnJhbWVzMik7CkBAIC01NDEsNyArNTQ0LDcgQEAgY2xhc3Mg
VWxwZmVjT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6RW5kVG9FbmRUZXN0IHsKICAgICAvLyBBdCBs
b3cgUlRUICg8IGtMb3dSdHROYWNrTXMpIC0+IE5BQ0sgb25seSwgbm8gRkVDLgogICAgIC8vIENv
bmZpZ3VyZSBzb21lIG5ldHdvcmsgZGVsYXkuCiAgICAgY29uc3QgaW50IGtOZXR3b3JrRGVsYXlN
cyA9IDEwMDsKLSAgICBEZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICAg
IEJ1aWx0SW5OZXR3b3JrQmVoYXZpb3JDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5sb3NzX3Bl
cmNlbnQgPSA1OwogICAgIGNvbmZpZy5xdWV1ZV9kZWxheV9tcyA9IGtOZXR3b3JrRGVsYXlNczsK
ICAgICByZXR1cm4gbmV3IHRlc3Q6OlBhY2tldFRyYW5zcG9ydCgKQEAgLTY1NSw3ICs2NTgsNyBA
QCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgRElTQUJMRURfRG9lc1V0aWxpemVVbHBmZWNG
b3JWcDhXaXRoTmFja0VuYWJsZWQpIHsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwogfQogCi0jaWYg
IWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2lmIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAv
LyBEaXNhYmxlZCBhcyBmbGFreSwgc2VlIGh0dHBzOi8vY3JidWcuY29tL3dlYnJ0Yy83Mjg1IGZv
ciBkZXRhaWxzLgogVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIERJU0FCTEVEX0RvZXNVdGls
aXplVWxwZmVjRm9yVnA5V2l0aE5hY2tFbmFibGVkKSB7CiAgIHRlc3Q6OkZ1bmN0aW9uVmlkZW9F
bmNvZGVyRmFjdG9yeSBlbmNvZGVyX2ZhY3RvcnkoCkBAIC02NjMsNyArNjY2LDcgQEAgVEVTVF9Q
KFZpZGVvU2VuZFN0cmVhbVRlc3QsIERJU0FCTEVEX0RvZXNVdGlsaXplVWxwZmVjRm9yVnA5V2l0
aE5hY2tFbmFibGVkKSB7CiAgIFVscGZlY09ic2VydmVyIHRlc3QoZmFsc2UsIHRydWUsIHRydWUs
IHRydWUsICJWUDkiLCAmZW5jb2Rlcl9mYWN0b3J5KTsKICAgUnVuQmFzZVRlc3QoJnRlc3QpOwog
fQotI2VuZGlmICAvLyAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisjZW5kaWYgIC8vIGRlZmlu
ZWQoUlRDX0VOQUJMRV9WUDkpCiAKIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBTdXBwb3J0
c1VscGZlY1dpdGhNdWx0aXRocmVhZGVkSDI2NCkgewogICB0ZXN0OjpGdW5jdGlvblZpZGVvRW5j
b2RlckZhY3RvcnkgZW5jb2Rlcl9mYWN0b3J5KFtdKCkgewpAQCAtNzMxLDcgKzczNCw3IEBAIGNs
YXNzIEZsZXhmZWNPYnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpFbmRUb0VuZFRlc3QgewogICAgIC8v
IEF0IGxvdyBSVFQgKDwga0xvd1J0dE5hY2tNcykgLT4gTkFDSyBvbmx5LCBubyBGRUMuCiAgICAg
Ly8gVGhlcmVmb3JlIHdlIG5lZWQgc29tZSBuZXR3b3JrIGRlbGF5LgogICAgIGNvbnN0IGludCBr
TmV0d29ya0RlbGF5TXMgPSAxMDA7Ci0gICAgRGVmYXVsdE5ldHdvcmtTaW11bGF0aW9uQ29uZmln
IGNvbmZpZzsKKyAgICBCdWlsdEluTmV0d29ya0JlaGF2aW9yQ29uZmlnIGNvbmZpZzsKICAgICBj
b25maWcubG9zc19wZXJjZW50ID0gNTsKICAgICBjb25maWcucXVldWVfZGVsYXlfbXMgPSBrTmV0
d29ya0RlbGF5TXM7CiAgICAgcmV0dXJuIG5ldyB0ZXN0OjpQYWNrZXRUcmFuc3BvcnQoCkBAIC04
MDYsNyArODA5LDcgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFN1cHBvcnRzRmxleGZl
Y1dpdGhSdHBFeHRlbnNpb25zVnA4KSB7CiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KIAotI2lm
ICFkZWZpbmVkKFJUQ19ESVNBQkxFX1ZQOSkKKyNpZiBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQog
VEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFN1cHBvcnRzRmxleGZlY1ZwOSkgewogICB0ZXN0
OjpGdW5jdGlvblZpZGVvRW5jb2RlckZhY3RvcnkgZW5jb2Rlcl9mYWN0b3J5KAogICAgICAgW10o
KSB7IHJldHVybiBWUDlFbmNvZGVyOjpDcmVhdGUoKTsgfSk7CkBAIC04MjAsNyArODIzLDcgQEAg
VEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFN1cHBvcnRzRmxleGZlY1dpdGhOYWNrVnA5KSB7
CiAgIEZsZXhmZWNPYnNlcnZlciB0ZXN0KGZhbHNlLCB0cnVlLCAiVlA5IiwgJmVuY29kZXJfZmFj
dG9yeSwgMSk7CiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKIH0KLSNlbmRpZiAgLy8gZGVmaW5lZChS
VENfRElTQUJMRV9WUDkpCisjZW5kaWYgIC8vIGRlZmluZWQoUlRDX0VOQUJMRV9WUDkpCiAKIFRF
U1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBTdXBwb3J0c0ZsZXhmZWNIMjY0KSB7CiAgIHRlc3Q6
OkZ1bmN0aW9uVmlkZW9FbmNvZGVyRmFjdG9yeSBlbmNvZGVyX2ZhY3RvcnkoW10oKSB7CkBAIC04
NjYsMTkgKzg2OSwyNyBAQCB2b2lkIFZpZGVvU2VuZFN0cmVhbVRlc3Q6OlRlc3ROYWNrUmV0cmFu
c21pc3Npb24oCiAgICAgICBSVFBIZWFkZXIgaGVhZGVyOwogICAgICAgRVhQRUNUX1RSVUUocGFy
c2VyXy0+UGFyc2UocGFja2V0LCBsZW5ndGgsICZoZWFkZXIpKTsKIAotICAgICAgaW50IGtSZXRy
YW5zbWl0VGFyZ2V0ID0gNjsKKyAgICAgIC8vIE5BQ0sgcGFja2V0cyB0d28gdGltZXMgYXQgc29t
ZSBhcmJpdHJhcnkgcG9pbnRzLgorICAgICAgY29uc3QgaW50IGtOYWNrZWRQYWNrZXRzQXRPbmNl
Q291bnQgPSAzOworICAgICAgY29uc3QgaW50IGtSZXRyYW5zbWl0VGFyZ2V0ID0ga05hY2tlZFBh
Y2tldHNBdE9uY2VDb3VudCAqIDI7CisKKyAgICAgIC8vIFNraXAgcGFkZGluZyBwYWNrZXRzIGJl
Y2F1c2UgdGhleSB3aWxsIG5ldmVyIGJlIHJldHJhbnNtaXR0ZWQuCisgICAgICBpZiAoaGVhZGVy
LnBhZGRpbmdMZW5ndGggKyBoZWFkZXIuaGVhZGVyTGVuZ3RoID09IGxlbmd0aCkgeworICAgICAg
ICByZXR1cm4gU0VORF9QQUNLRVQ7CisgICAgICB9CisKICAgICAgICsrc2VuZF9jb3VudF87CisK
KyAgICAgIC8vIE5BQ0sgcGFja2V0cyBhdCBhcmJpdHJhcnkgcG9pbnRzLgogICAgICAgaWYgKHNl
bmRfY291bnRfID09IDUgfHwgc2VuZF9jb3VudF8gPT0gMjUpIHsKLSAgICAgICAgbmFja2VkX3Nl
cXVlbmNlX251bWJlcnNfLnB1c2hfYmFjaygKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQx
Nl90PihoZWFkZXIuc2VxdWVuY2VOdW1iZXIgLSAzKSk7Ci0gICAgICAgIG5hY2tlZF9zZXF1ZW5j
ZV9udW1iZXJzXy5wdXNoX2JhY2soCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4o
aGVhZGVyLnNlcXVlbmNlTnVtYmVyIC0gMikpOwotICAgICAgICBuYWNrZWRfc2VxdWVuY2VfbnVt
YmVyc18ucHVzaF9iYWNrKAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGhlYWRl
ci5zZXF1ZW5jZU51bWJlciAtIDEpKTsKKyAgICAgICAgbmFja2VkX3NlcXVlbmNlX251bWJlcnNf
Lmluc2VydCgKKyAgICAgICAgICAgIG5hY2tlZF9zZXF1ZW5jZV9udW1iZXJzXy5lbmQoKSwKKyAg
ICAgICAgICAgIG5vbl9wYWRkaW5nX3NlcXVlbmNlX251bWJlcnNfLmVuZCgpIC0ga05hY2tlZFBh
Y2tldHNBdE9uY2VDb3VudCwKKyAgICAgICAgICAgIG5vbl9wYWRkaW5nX3NlcXVlbmNlX251bWJl
cnNfLmVuZCgpKTsKIAogICAgICAgICBSVENQU2VuZGVyIHJ0Y3Bfc2VuZGVyKGZhbHNlLCBDbG9j
azo6R2V0UmVhbFRpbWVDbG9jaygpLCBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsIG51bGxwdHIsIHRyYW5zcG9ydF9hZGFwdGVyXy5nZXQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSdGNwSW50ZXJ2YWxDb25maWd7fSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga1J0Y3BJbnRlcnZhbE1zKTsKIAogICAgICAgICBydGNw
X3NlbmRlci5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprUmVkdWNlZFNpemUpOwogICAgICAgICBy
dGNwX3NlbmRlci5TZXRSZW1vdGVTU1JDKGtWaWRlb1NlbmRTc3Jjc1swXSk7CkBAIC04OTIsNyAr
OTAzLDYgQEAgdm9pZCBWaWRlb1NlbmRTdHJlYW1UZXN0OjpUZXN0TmFja1JldHJhbnNtaXNzaW9u
KAogICAgICAgfQogCiAgICAgICB1aW50MTZfdCBzZXF1ZW5jZV9udW1iZXIgPSBoZWFkZXIuc2Vx
dWVuY2VOdW1iZXI7Ci0KICAgICAgIGlmIChoZWFkZXIuc3NyYyA9PSByZXRyYW5zbWl0X3NzcmNf
ICYmCiAgICAgICAgICAgcmV0cmFuc21pdF9zc3JjXyAhPSBrVmlkZW9TZW5kU3NyY3NbMF0pIHsK
ICAgICAgICAgLy8gTm90IGtWaWRlb1NlbmRTc3Jjc1swXSwgYXNzdW1lIGNvcnJlY3QgUlRYIHBh
Y2tldC4gRXh0cmFjdCBzZXF1ZW5jZQpAQCAtOTAwLDYgKzkxMCw3IEBAIHZvaWQgVmlkZW9TZW5k
U3RyZWFtVGVzdDo6VGVzdE5hY2tSZXRyYW5zbWlzc2lvbigKICAgICAgICAgY29uc3QgdWludDhf
dCogcnR4X2hlYWRlciA9IHBhY2tldCArIGhlYWRlci5oZWFkZXJMZW5ndGg7CiAgICAgICAgIHNl
cXVlbmNlX251bWJlciA9IChydHhfaGVhZGVyWzBdIDw8IDgpICsgcnR4X2hlYWRlclsxXTsKICAg
ICAgIH0KKwogICAgICAgYXV0byBmb3VuZCA9IHN0ZDo6ZmluZChuYWNrZWRfc2VxdWVuY2VfbnVt
YmVyc18uYmVnaW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFja2VkX3NlcXVl
bmNlX251bWJlcnNfLmVuZCgpLCBzZXF1ZW5jZV9udW1iZXIpOwogICAgICAgaWYgKGZvdW5kICE9
IG5hY2tlZF9zZXF1ZW5jZV9udW1iZXJzXy5lbmQoKSkgewpAQCAtOTEwLDYgKzkyMSw4IEBAIHZv
aWQgVmlkZW9TZW5kU3RyZWFtVGVzdDo6VGVzdE5hY2tSZXRyYW5zbWlzc2lvbigKICAgICAgICAg
ICBFWFBFQ1RfRVEocmV0cmFuc21pdF9wYXlsb2FkX3R5cGVfLCBoZWFkZXIucGF5bG9hZFR5cGUp
OwogICAgICAgICAgIG9ic2VydmF0aW9uX2NvbXBsZXRlXy5TZXQoKTsKICAgICAgICAgfQorICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgbm9uX3BhZGRpbmdfc2VxdWVuY2VfbnVtYmVyc18ucHVzaF9i
YWNrKHNlcXVlbmNlX251bWJlcik7CiAgICAgICB9CiAKICAgICAgIHJldHVybiBTRU5EX1BBQ0tF
VDsKQEAgLTkzOCw2ICs5NTEsNyBAQCB2b2lkIFZpZGVvU2VuZFN0cmVhbVRlc3Q6OlRlc3ROYWNr
UmV0cmFuc21pc3Npb24oCiAgICAgdWludDMyX3QgcmV0cmFuc21pdF9zc3JjXzsKICAgICB1aW50
OF90IHJldHJhbnNtaXRfcGF5bG9hZF90eXBlXzsKICAgICBzdGQ6OnZlY3Rvcjx1aW50MTZfdD4g
bmFja2VkX3NlcXVlbmNlX251bWJlcnNfOworICAgIHN0ZDo6dmVjdG9yPHVpbnQxNl90PiBub25f
cGFkZGluZ19zZXF1ZW5jZV9udW1iZXJzXzsKICAgfSB0ZXN0KHJldHJhbnNtaXRfc3NyYywgcmV0
cmFuc21pdF9wYXlsb2FkX3R5cGUpOwogCiAgIFJ1bkJhc2VUZXN0KCZ0ZXN0KTsKQEAgLTk2NCw4
ICs5NzgsNyBAQCB2b2lkIFZpZGVvU2VuZFN0cmVhbVRlc3Q6OlRlc3RQYWNrZXRGcmFnbWVudGF0
aW9uU2l6ZShWaWRlb0Zvcm1hdCBmb3JtYXQsCiAKICAgLy8gT2JzZXJ2ZXIgdGhhdCB2ZXJpZmll
cyB0aGF0IHRoZSBleHBlY3RlZCBudW1iZXIgb2YgcGFja2V0cyBhbmQgYnl0ZXMKICAgLy8gYXJy
aXZlIGZvciBlYWNoIGZyYW1lIHNpemUsIGZyb20gc3RhcnRfc2l6ZSB0byBzdG9wX3NpemUuCi0g
IGNsYXNzIEZyYW1lRnJhZ21lbnRhdGlvblRlc3QgOiBwdWJsaWMgdGVzdDo6U2VuZFRlc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgRW5jb2RlZEZyYW1lT2JzZXJ2
ZXIgeworICBjbGFzcyBGcmFtZUZyYWdtZW50YXRpb25UZXN0IDogcHVibGljIHRlc3Q6OlNlbmRU
ZXN0IHsKICAgIHB1YmxpYzoKICAgICBGcmFtZUZyYWdtZW50YXRpb25UZXN0KHNpemVfdCBtYXhf
cGFja2V0X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3RhcnRfc2l6
ZSwKQEAgLTEwOTAsNyArMTEwMyw3IEBAIHZvaWQgVmlkZW9TZW5kU3RyZWFtVGVzdDo6VGVzdFBh
Y2tldEZyYWdtZW50YXRpb25TaXplKFZpZGVvRm9ybWF0IGZvcm1hdCwKICAgICAgICAgICAgIGxv
c3NfcmF0aW8pOyAgICAvLyBMb3NzIHBlcmNlbnQuCiAgICAgICAgIFJUQ1BTZW5kZXIgcnRjcF9z
ZW5kZXIoZmFsc2UsIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmxvc3N5X3JlY2VpdmVfc3RhdHMsIG51bGxwdHIsIG51bGxwdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X2FkYXB0ZXJfLmdldCgpLCBS
dGNwSW50ZXJ2YWxDb25maWd7fSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJh
bnNwb3J0X2FkYXB0ZXJfLmdldCgpLCBrUnRjcEludGVydmFsTXMpOwogCiAgICAgICAgIHJ0Y3Bf
c2VuZGVyLlNldFJUQ1BTdGF0dXMoUnRjcE1vZGU6OmtSZWR1Y2VkU2l6ZSk7CiAgICAgICAgIHJ0
Y3Bfc2VuZGVyLlNldFJlbW90ZVNTUkMoa1ZpZGVvU2VuZFNzcmNzWzBdKTsKQEAgLTExMDEsNyAr
MTExNCw3IEBAIHZvaWQgVmlkZW9TZW5kU3RyZWFtVGVzdDo6VGVzdFBhY2tldEZyYWdtZW50YXRp
b25TaXplKFZpZGVvRm9ybWF0IGZvcm1hdCwKICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIEVu
Y29kZWRGcmFtZUNhbGxiYWNrKGNvbnN0IEVuY29kZWRGcmFtZSYgZW5jb2RlZF9mcmFtZSkgb3Zl
cnJpZGUgeworICAgIHZvaWQgVXBkYXRlQ29uZmlndXJhdGlvbigpIHsKICAgICAgIHJ0Yzo6Q3Jp
dFNjb3BlIGxvY2soJm11dGV4Xyk7CiAgICAgICAvLyBJbmNyZWFzZSBmcmFtZSBzaXplIGZvciBu
ZXh0IGVuY29kZWQgZnJhbWUsIGluIHRoZSBjb250ZXh0IG9mIHRoZQogICAgICAgLy8gZW5jb2Rl
ciB0aHJlYWQuCkBAIC0xMTEwLDkgKzExMjMsMTAgQEAgdm9pZCBWaWRlb1NlbmRTdHJlYW1UZXN0
OjpUZXN0UGFja2V0RnJhZ21lbnRhdGlvblNpemUoVmlkZW9Gb3JtYXQgZm9ybWF0LAogICAgICAg
fQogICAgICAgZW5jb2Rlcl8uU2V0RnJhbWVTaXplKHN0YXRpY19jYXN0PHNpemVfdD4oY3VycmVu
dF9zaXplX2ZyYW1lXykpOwogICAgIH0KLSAgICB2b2lkIE1vZGlmeVNlbmRlckNhbGxDb25maWco
Q2FsbDo6Q29uZmlnKiBjb25maWcpIG92ZXJyaWRlIHsKKyAgICB2b2lkIE1vZGlmeVNlbmRlckJp
dHJhdGVDb25maWcoCisgICAgICAgIEJpdHJhdGVDb25zdHJhaW50cyogYml0cmF0ZV9jb25maWcp
IG92ZXJyaWRlIHsKICAgICAgIGNvbnN0IGludCBrTWluQml0cmF0ZUJwcyA9IDMwMDAwOwotICAg
ICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5taW5fYml0cmF0ZV9icHMgPSBrTWluQml0cmF0ZUJw
czsKKyAgICAgIGJpdHJhdGVfY29uZmlnLT5taW5fYml0cmF0ZV9icHMgPSBrTWluQml0cmF0ZUJw
czsKICAgICB9CiAKICAgICB2b2lkIE1vZGlmeVZpZGVvQ29uZmlncygKQEAgLTExMzIsMzggKzEx
NDYsMTUgQEAgdm9pZCBWaWRlb1NlbmRTdHJlYW1UZXN0OjpUZXN0UGFja2V0RnJhZ21lbnRhdGlv
blNpemUoVmlkZW9Gb3JtYXQgZm9ybWF0LAogCiAgICAgICBzZW5kX2NvbmZpZy0+ZW5jb2Rlcl9z
ZXR0aW5ncy5lbmNvZGVyX2ZhY3RvcnkgPSAmZW5jb2Rlcl9mYWN0b3J5XzsKICAgICAgIHNlbmRf
Y29uZmlnLT5ydHAubWF4X3BhY2tldF9zaXplID0ga01heFBhY2tldFNpemU7Ci0gICAgICBzZW5k
X2NvbmZpZy0+cG9zdF9lbmNvZGVfY2FsbGJhY2sgPSB0aGlzOworICAgICAgZW5jb2Rlcl8uUmVn
aXN0ZXJQb3N0RW5jb2RlQ2FsbGJhY2soW3RoaXNdKCkgeyBVcGRhdGVDb25maWd1cmF0aW9uKCk7
IH0pOwogCiAgICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGV4dGVuc2lv
biBoZWFkZXIsIHRvIG1ha2UgdGhlIFJUUAogICAgICAgLy8gaGVhZGVyIGxhcmdlciB0aGFuIHRo
ZSBiYXNlIGxlbmd0aCBvZiAxMiBieXRlcy4KICAgICAgIEVYUEVDVF9GQUxTRShzZW5kX2NvbmZp
Zy0+cnRwLmV4dGVuc2lvbnMuZW1wdHkoKSk7CiAKICAgICAgIC8vIFNldHVwIHNjcmVlbiBjb250
ZW50IGRpc2FibGVzIGZyYW1lIGRyb3BwaW5nIHdoaWNoIG1ha2VzIHRoaXMgZWFzaWVyLgotICAg
ICAgY2xhc3MgVmlkZW9TdHJlYW1GYWN0b3J5Ci0gICAgICAgICAgOiBwdWJsaWMgVmlkZW9FbmNv
ZGVyQ29uZmlnOjpWaWRlb1N0cmVhbUZhY3RvcnlJbnRlcmZhY2UgewotICAgICAgIHB1YmxpYzoK
LSAgICAgICAgZXhwbGljaXQgVmlkZW9TdHJlYW1GYWN0b3J5KHNpemVfdCBudW1fdGVtcG9yYWxf
bGF5ZXJzKQotICAgICAgICAgICAgOiBudW1fdGVtcG9yYWxfbGF5ZXJzXyhudW1fdGVtcG9yYWxf
bGF5ZXJzKSB7Ci0gICAgICAgICAgRVhQRUNUX0dUKG51bV90ZW1wb3JhbF9sYXllcnMsIDB1KTsK
LSAgICAgICAgfQotCi0gICAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9T
dHJlYW0+IENyZWF0ZUVuY29kZXJTdHJlYW1zKAotICAgICAgICAgICAgaW50IHdpZHRoLAotICAg
ICAgICAgICAgaW50IGhlaWdodCwKLSAgICAgICAgICAgIGNvbnN0IFZpZGVvRW5jb2RlckNvbmZp
ZyYgZW5jb2Rlcl9jb25maWcpIG92ZXJyaWRlIHsKLSAgICAgICAgICBzdGQ6OnZlY3RvcjxWaWRl
b1N0cmVhbT4gc3RyZWFtcyA9Ci0gICAgICAgICAgICAgIHRlc3Q6OkNyZWF0ZVZpZGVvU3RyZWFt
cyh3aWR0aCwgaGVpZ2h0LCBlbmNvZGVyX2NvbmZpZyk7Ci0gICAgICAgICAgZm9yIChWaWRlb1N0
cmVhbSYgc3RyZWFtIDogc3RyZWFtcykgewotICAgICAgICAgICAgc3RyZWFtLm51bV90ZW1wb3Jh
bF9sYXllcnMgPSBudW1fdGVtcG9yYWxfbGF5ZXJzXzsKLSAgICAgICAgICB9Ci0gICAgICAgICAg
cmV0dXJuIHN0cmVhbXM7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qgc2l6ZV90IG51bV90ZW1w
b3JhbF9sYXllcnNfOwotICAgICAgfTsKLQotICAgICAgZW5jb2Rlcl9jb25maWctPnZpZGVvX3N0
cmVhbV9mYWN0b3J5ID0KLSAgICAgICAgICBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PFZpZGVv
U3RyZWFtRmFjdG9yeT4oMik7CisgICAgICBFWFBFQ1RfRVEoMXUsIGVuY29kZXJfY29uZmlnLT5z
aW11bGNhc3RfbGF5ZXJzLnNpemUoKSk7CisgICAgICBlbmNvZGVyX2NvbmZpZy0+c2ltdWxjYXN0
X2xheWVyc1swXS5udW1fdGVtcG9yYWxfbGF5ZXJzID0gMjsKICAgICAgIGVuY29kZXJfY29uZmln
LT5jb250ZW50X3R5cGUgPSBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRlbnRUeXBlOjprU2NyZWVu
OwogICAgIH0KIApAQCAtMTM0Nyw3ICsxMzM4LDcgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRl
c3QsIFN1c3BlbmRCZWxvd01pbkJpdHJhdGUpIHsKICAgICAgIEZha2VSZWNlaXZlU3RhdGlzdGlj
cyByZWNlaXZlX3N0YXRzKGtWaWRlb1NlbmRTc3Jjc1swXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhc3Rfc2VxdWVuY2VfbnVtYmVyXywgcnRwX2NvdW50Xywg
MCk7CiAgICAgICBSVENQU2VuZGVyIHJ0Y3Bfc2VuZGVyKGZhbHNlLCBjbG9ja18sICZyZWNlaXZl
X3N0YXRzLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cmFuc3BvcnRfYWRhcHRlcl8uZ2V0KCksIFJ0Y3BJbnRlcnZhbENvbmZpZ3t9KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X2FkYXB0ZXJfLmdldCgpLCBrUnRjcEludGVy
dmFsTXMpOwogCiAgICAgICBydGNwX3NlbmRlci5TZXRSVENQU3RhdHVzKFJ0Y3BNb2RlOjprUmVk
dWNlZFNpemUpOwogICAgICAgcnRjcF9zZW5kZXIuU2V0UmVtb3RlU1NSQyhrVmlkZW9TZW5kU3Ny
Y3NbMF0pOwpAQCAtMTM5NiwxMiArMTM4NywyMCBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVz
dCwgTm9QYWRkaW5nV2hlblZpZGVvSXNNdXRlZCkgewogICAgICAgICAgIGhlYWRlci5oZWFkZXJM
ZW5ndGggKyBoZWFkZXIucGFkZGluZ0xlbmd0aCA9PSBsZW5ndGg7CiAKICAgICAgIGlmICh0ZXN0
X3N0YXRlXyA9PSBrQmVmb3JlU3RvcENhcHR1cmUpIHsKKyAgICAgICAgLy8gUGFja2V0cyBhcmUg
Zmxvd2luZywgc3RvcCBjYW1lcmEuCiAgICAgICAgIGNhcHR1cmVyXy0+U3RvcCgpOwogICAgICAg
ICB0ZXN0X3N0YXRlXyA9IGtXYWl0aW5nRm9yUGFkZGluZzsKICAgICAgIH0gZWxzZSBpZiAodGVz
dF9zdGF0ZV8gPT0ga1dhaXRpbmdGb3JQYWRkaW5nICYmIG9ubHlfcGFkZGluZykgeworICAgICAg
ICAvLyBXZSdyZSBzdGlsbCBnZXR0aW5nIHBhZGRpbmcsIGFmdGVyIHN0b3BwaW5nIGNhbWVyYS4K
ICAgICAgICAgdGVzdF9zdGF0ZV8gPSBrV2FpdGluZ0Zvck5vUGFja2V0czsKLSAgICAgIH0gZWxz
ZSBpZiAodGVzdF9zdGF0ZV8gPT0ga1dhaXRpbmdGb3JQYWRkaW5nQWZ0ZXJDYW1lcmFSZXN0YXJ0
ICYmCisgICAgICB9IGVsc2UgaWYgKHRlc3Rfc3RhdGVfID09IGtXYWl0aW5nRm9yTWVkaWFBZnRl
ckNhbWVyYVJlc3RhcnQgJiYKKyAgICAgICAgICAgICAgICAgIW9ubHlfcGFkZGluZykgeworICAg
ICAgICAvLyBNZWRpYSBwYWNrZXRzIGFyZSBmbG93aW5nIGFnYWluLCBzdG9wIGNhbWVyYSBhIHNl
Y29uZCB0aW1lLgorICAgICAgICBjYXB0dXJlcl8tPlN0b3AoKTsKKyAgICAgICAgdGVzdF9zdGF0
ZV8gPSBrV2FpdGluZ0ZvclBhZGRpbmdBZnRlckNhbWVyYVN0b3BzQWdhaW47CisgICAgICB9IGVs
c2UgaWYgKHRlc3Rfc3RhdGVfID09IGtXYWl0aW5nRm9yUGFkZGluZ0FmdGVyQ2FtZXJhU3RvcHNB
Z2FpbiAmJgogICAgICAgICAgICAgICAgICBvbmx5X3BhZGRpbmcpIHsKKyAgICAgICAgLy8gUGFk
ZGluZyBpcyBzdGlsbCBmbG93aW5nLCB0ZXN0IG9rLgogICAgICAgICBvYnNlcnZhdGlvbl9jb21w
bGV0ZV8uU2V0KCk7CiAgICAgICB9CiAgICAgICByZXR1cm4gU0VORF9QQUNLRVQ7CkBAIC0xNDE0
LDEzICsxNDEzLDIwIEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBOb1BhZGRpbmdXaGVu
VmlkZW9Jc011dGVkKSB7CiAgICAgICAgICAgKGxhc3RfcGFja2V0X3RpbWVfbXNfID4gMCAmJgog
ICAgICAgICAgICBjbG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpIC0gbGFzdF9wYWNrZXRfdGlt
ZV9tc18gPgogICAgICAgICAgICAgICAga05vUGFja2V0c1RocmVzaG9sZE1zKSkgeworICAgICAg
ICAvLyBObyBwYWNrZXRzIHNlZW4gZm9yIHxrTm9QYWNrZXRzVGhyZXNob2xkTXN8LCByZXN0YXJ0
IGNhbWVyYS4KICAgICAgICAgY2FwdHVyZXJfLT5TdGFydCgpOwotICAgICAgICB0ZXN0X3N0YXRl
XyA9IGtXYWl0aW5nRm9yUGFkZGluZ0FmdGVyQ2FtZXJhUmVzdGFydDsKKyAgICAgICAgdGVzdF9z
dGF0ZV8gPSBrV2FpdGluZ0Zvck1lZGlhQWZ0ZXJDYW1lcmFSZXN0YXJ0OwogICAgICAgfQogICAg
ICAgcmV0dXJuIFNFTkRfUEFDS0VUOwogICAgIH0KIAotICAgIHNpemVfdCBHZXROdW1WaWRlb1N0
cmVhbXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAzOyB9CisgICAgdm9pZCBNb2RpZnlWaWRl
b0NvbmZpZ3MoCisgICAgICAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnKiBzZW5kX2NvbmZpZywK
KyAgICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9SZWNlaXZlU3RyZWFtOjpDb25maWc+KiByZWNlaXZl
X2NvbmZpZ3MsCisgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZyogZW5jb2Rlcl9jb25maWcpIG92
ZXJyaWRlIHsKKyAgICAgIC8vIE1ha2Ugc3VyZSBwYWRkaW5nIGlzIHNlbnQgaWYgZW5jb2RlciBp
cyBub3QgcHJvZHVjaW5nIG1lZGlhLgorICAgICAgZW5jb2Rlcl9jb25maWctPm1pbl90cmFuc21p
dF9iaXRyYXRlX2JwcyA9IDUwMDAwOworICAgIH0KIAogICAgIHZvaWQgT25GcmFtZUdlbmVyYXRv
ckNhcHR1cmVyQ3JlYXRlZCgKICAgICAgICAgdGVzdDo6RnJhbWVHZW5lcmF0b3JDYXB0dXJlciog
ZnJhbWVfZ2VuZXJhdG9yX2NhcHR1cmVyKSBvdmVycmlkZSB7CkBAIC0xNDM3LDcgKzE0NDMsOCBA
QCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgTm9QYWRkaW5nV2hlblZpZGVvSXNNdXRlZCkg
ewogICAgICAga0JlZm9yZVN0b3BDYXB0dXJlLAogICAgICAga1dhaXRpbmdGb3JQYWRkaW5nLAog
ICAgICAga1dhaXRpbmdGb3JOb1BhY2tldHMsCi0gICAgICBrV2FpdGluZ0ZvclBhZGRpbmdBZnRl
ckNhbWVyYVJlc3RhcnQKKyAgICAgIGtXYWl0aW5nRm9yTWVkaWFBZnRlckNhbWVyYVJlc3RhcnQs
CisgICAgICBrV2FpdGluZ0ZvclBhZGRpbmdBZnRlckNhbWVyYVN0b3BzQWdhaW4KICAgICB9Owog
CiAgICAgVGVzdFN0YXRlIHRlc3Rfc3RhdGVfID0ga0JlZm9yZVN0b3BDYXB0dXJlOwpAQCAtMTQ4
MSw3ICsxNDg4LDcgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFBhZGRpbmdJc1ByaW1h
cmlseVJldHJhbnNtaXNzaW9ucykgewogICAgICAgICB0ZXN0OjpTaW5nbGVUaHJlYWRlZFRhc2tR
dWV1ZUZvclRlc3RpbmcqIHRhc2tfcXVldWUsCiAgICAgICAgIENhbGwqIHNlbmRlcl9jYWxsKSBv
dmVycmlkZSB7CiAgICAgICBjb25zdCBpbnQga05ldHdvcmtEZWxheU1zID0gNTA7Ci0gICAgICBE
ZWZhdWx0TmV0d29ya1NpbXVsYXRpb25Db25maWcgY29uZmlnOworICAgICAgQnVpbHRJbk5ldHdv
cmtCZWhhdmlvckNvbmZpZyBjb25maWc7CiAgICAgICBjb25maWcubG9zc19wZXJjZW50ID0gMTA7
CiAgICAgICBjb25maWcubGlua19jYXBhY2l0eV9rYnBzID0ga0NhcGFjaXR5S2JwczsKICAgICAg
IGNvbmZpZy5xdWV1ZV9kZWxheV9tcyA9IGtOZXR3b3JrRGVsYXlNczsKQEAgLTE3ODAsNyArMTc4
Nyw2IEBAIGNsYXNzIE1heFBhZGRpbmdTZXRUZXN0IDogcHVibGljIHRlc3Q6OlNlbmRUZXN0IHsK
IAogICBleHBsaWNpdCBNYXhQYWRkaW5nU2V0VGVzdChib29sIHRlc3Rfc3dpdGNoX2NvbnRlbnRf
dHlwZSwgVCogc3RyZWFtX3Jlc2V0X2Z1bikKICAgICAgIDogU2VuZFRlc3QodGVzdDo6Q2FsbFRl
c3Q6OmtEZWZhdWx0VGltZW91dE1zKSwKLSAgICAgICAgY29udGVudF9zd2l0Y2hfZXZlbnRfKGZh
bHNlLCBmYWxzZSksCiAgICAgICAgIGNhbGxfKG51bGxwdHIpLAogICAgICAgICBzZW5kX3N0cmVh
bV8obnVsbHB0ciksCiAgICAgICAgIHNlbmRfc3RyZWFtX2NvbmZpZ18obnVsbHB0ciksCkBAIC0x
OTEwLDcgKzE5MTYsNiBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwKICAgIHB1YmxpYzoK
ICAgICBFbmNvZGVyT2JzZXJ2ZXIoKQogICAgICAgICA6IEZha2VFbmNvZGVyKENsb2NrOjpHZXRS
ZWFsVGltZUNsb2NrKCkpLAotICAgICAgICAgIGluaXRfZW5jb2RlX2NhbGxlZF8oZmFsc2UsIGZh
bHNlKSwKICAgICAgICAgICBudW1iZXJfb2ZfaW5pdGlhbGl6YXRpb25zXygwKSwKICAgICAgICAg
ICBsYXN0X2luaXRpYWxpemVkX2ZyYW1lX3dpZHRoXygwKSwKICAgICAgICAgICBsYXN0X2luaXRp
YWxpemVkX2ZyYW1lX2hlaWdodF8oMCkge30KQEAgLTE5OTMsNyArMTk5OCw2IEBAIFRFU1RfUChW
aWRlb1NlbmRTdHJlYW1UZXN0LCBDYW5SZWNvbmZpZ3VyZVRvVXNlU3RhcnRCaXRyYXRlQWJvdmVQ
cmV2aW91c01heCkgewogICAgcHVibGljOgogICAgIFN0YXJ0Qml0cmF0ZU9ic2VydmVyKCkKICAg
ICAgICAgOiBGYWtlRW5jb2RlcihDbG9jazo6R2V0UmVhbFRpbWVDbG9jaygpKSwKLSAgICAgICAg
ICBzdGFydF9iaXRyYXRlX2NoYW5nZWRfKGZhbHNlLCBmYWxzZSksCiAgICAgICAgICAgc3RhcnRf
Yml0cmF0ZV9rYnBzXygwKSB7fQogICAgIGludDMyX3QgSW5pdEVuY29kZShjb25zdCBWaWRlb0Nv
ZGVjKiBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbnVtYmVyX29mX2Nv
cmVzLApAQCAtMjA2OCwxMCArMjA3Miw3IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBD
YW5SZWNvbmZpZ3VyZVRvVXNlU3RhcnRCaXRyYXRlQWJvdmVQcmV2aW91c01heCkgewogCiBjbGFz
cyBTdGFydFN0b3BCaXRyYXRlT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6RmFrZUVuY29kZXIgewog
IHB1YmxpYzoKLSAgU3RhcnRTdG9wQml0cmF0ZU9ic2VydmVyKCkKLSAgICAgIDogRmFrZUVuY29k
ZXIoQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSksCi0gICAgICAgIGVuY29kZXJfaW5pdF8oZmFs
c2UsIGZhbHNlKSwKLSAgICAgICAgYml0cmF0ZV9jaGFuZ2VkXyhmYWxzZSwgZmFsc2UpIHt9Cisg
IFN0YXJ0U3RvcEJpdHJhdGVPYnNlcnZlcigpIDogRmFrZUVuY29kZXIoQ2xvY2s6OkdldFJlYWxU
aW1lQ2xvY2soKSkge30KICAgaW50MzJfdCBJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNv
bmZpZywKICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbnVtYmVyX29mX2NvcmVzLAogICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG1heF9wYXlsb2FkX3NpemUpIG92ZXJyaWRlIHsKQEAg
LTIyMjgsOCArMjIyOSw2IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBWaWRlb1NlbmRT
dHJlYW1VcGRhdGVBY3RpdmVTaW11bGNhc3RMYXllcnMpIHsKIFRFU1RfUChWaWRlb1NlbmRTdHJl
YW1UZXN0LCBDYXB0dXJlc1RleHR1cmVBbmRWaWRlb0ZyYW1lcykgewogICBjbGFzcyBGcmFtZU9i
c2VydmVyIDogcHVibGljIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPFZpZGVvRnJhbWU+IHsKICAg
IHB1YmxpYzoKLSAgICBGcmFtZU9ic2VydmVyKCkgOiBvdXRwdXRfZnJhbWVfZXZlbnRfKGZhbHNl
LCBmYWxzZSkge30KLQogICAgIHZvaWQgT25GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiB2aWRlb19m
cmFtZSkgb3ZlcnJpZGUgewogICAgICAgb3V0cHV0X2ZyYW1lc18ucHVzaF9iYWNrKHZpZGVvX2Zy
YW1lKTsKICAgICAgIG91dHB1dF9mcmFtZV9ldmVudF8uU2V0KCk7CkBAIC0yMzkyLDExICsyMzkx
LDYgQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIEVuY29kZXJJc1Byb3Blcmx5SW5pdGlh
bGl6ZWRBbmREZXN0cm95ZWQpIHsKICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGludDMy
X3QgU2V0Q2hhbm5lbFBhcmFtZXRlcnModWludDMyX3QgcGFja2V0TG9zcywgaW50NjRfdCBydHQp
IG92ZXJyaWRlIHsKLSAgICAgIEVYUEVDVF9UUlVFKElzUmVhZHlGb3JFbmNvZGUoKSk7Ci0gICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBpbnQzMl90IFNldFJhdGVzKHVpbnQzMl90IG5ld0Jp
dFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkgb3ZlcnJpZGUgewogICAgICAgRVhQRUNUX1RSVUUo
SXNSZWFkeUZvckVuY29kZSgpKTsKICAgICAgIHJldHVybiAwOwpAQCAtMjQ1OCw3ICsyNDUyLDYg
QEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIEVuY29kZXJTZXR1cFByb3BhZ2F0ZXNDb21t
b25FbmNvZGVyQ29uZmlnVmFsdWVzKSB7CiAgICAgVmlkZW9Db2RlY0NvbmZpZ09ic2VydmVyKCkK
ICAgICAgICAgOiBTZW5kVGVzdChrRGVmYXVsdFRpbWVvdXRNcyksCiAgICAgICAgICAgRmFrZUVu
Y29kZXIoQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSksCi0gICAgICAgICAgaW5pdF9lbmNvZGVf
ZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAgICAgICAgICAgbnVtX2luaXRpYWxpemF0aW9uc18oMCks
CiAgICAgICAgICAgc3RyZWFtXyhudWxscHRyKSwKICAgICAgICAgICBlbmNvZGVyX2ZhY3Rvcnlf
KHRoaXMpIHt9CkBAIC0yNTMwLDcgKzI1MjMsNiBAQCBjbGFzcyBWaWRlb0NvZGVjQ29uZmlnT2Jz
ZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6U2VuZFRlc3QsCiAgICAgICAgIEZha2VFbmNvZGVyKENsb2Nr
OjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgICB2aWRlb19jb2RlY190eXBlXyh2aWRlb19j
b2RlY190eXBlKSwKICAgICAgICAgY29kZWNfbmFtZV8oY29kZWNfbmFtZSksCi0gICAgICAgIGlu
aXRfZW5jb2RlX2V2ZW50XyhmYWxzZSwgZmFsc2UpLAogICAgICAgICBudW1faW5pdGlhbGl6YXRp
b25zXygwKSwKICAgICAgICAgc3RyZWFtXyhudWxscHRyKSwKICAgICAgICAgZW5jb2Rlcl9mYWN0
b3J5Xyh0aGlzKSB7CkBAIC0yNTM4LDI2ICsyNTMwLDYgQEAgY2xhc3MgVmlkZW9Db2RlY0NvbmZp
Z09ic2VydmVyIDogcHVibGljIHRlc3Q6OlNlbmRUZXN0LAogICB9CiAKICBwcml2YXRlOgotICBj
bGFzcyBWaWRlb1N0cmVhbUZhY3RvcnkKLSAgICAgIDogcHVibGljIFZpZGVvRW5jb2RlckNvbmZp
Zzo6VmlkZW9TdHJlYW1GYWN0b3J5SW50ZXJmYWNlIHsKLSAgIHB1YmxpYzoKLSAgICBWaWRlb1N0
cmVhbUZhY3RvcnkoKSB7fQotCi0gICBwcml2YXRlOgotICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3Ry
ZWFtPiBDcmVhdGVFbmNvZGVyU3RyZWFtcygKLSAgICAgICAgaW50IHdpZHRoLAotICAgICAgICBp
bnQgaGVpZ2h0LAotICAgICAgICBjb25zdCBWaWRlb0VuY29kZXJDb25maWcmIGVuY29kZXJfY29u
ZmlnKSBvdmVycmlkZSB7Ci0gICAgICBzdGQ6OnZlY3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9
Ci0gICAgICAgICAgdGVzdDo6Q3JlYXRlVmlkZW9TdHJlYW1zKHdpZHRoLCBoZWlnaHQsIGVuY29k
ZXJfY29uZmlnKTsKLSAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyZWFtcy5zaXplKCk7
ICsraSkgewotICAgICAgICBzdHJlYW1zW2ldLm51bV90ZW1wb3JhbF9sYXllcnMgPQotICAgICAg
ICAgICAga1ZpZGVvQ29kZWNDb25maWdPYnNlcnZlck51bWJlck9mVGVtcG9yYWxMYXllcnM7Ci0g
ICAgICB9Ci0gICAgICByZXR1cm4gc3RyZWFtczsKLSAgICB9Ci0gIH07Ci0KICAgdm9pZCBNb2Rp
ZnlWaWRlb0NvbmZpZ3MoCiAgICAgICBWaWRlb1NlbmRTdHJlYW06OkNvbmZpZyogc2VuZF9jb25m
aWcsCiAgICAgICBzdGQ6OnZlY3RvcjxWaWRlb1JlY2VpdmVTdHJlYW06OkNvbmZpZz4qIHJlY2Vp
dmVfY29uZmlncywKQEAgLTI1NjcsOCArMjUzOSw5IEBAIGNsYXNzIFZpZGVvQ29kZWNDb25maWdP
YnNlcnZlciA6IHB1YmxpYyB0ZXN0OjpTZW5kVGVzdCwKIAogICAgIGVuY29kZXJfY29uZmlnLT5j
b2RlY190eXBlID0gdmlkZW9fY29kZWNfdHlwZV87CiAgICAgZW5jb2Rlcl9jb25maWctPmVuY29k
ZXJfc3BlY2lmaWNfc2V0dGluZ3MgPSBHZXRFbmNvZGVyU3BlY2lmaWNTZXR0aW5ncygpOwotICAg
IGVuY29kZXJfY29uZmlnLT52aWRlb19zdHJlYW1fZmFjdG9yeSA9Ci0gICAgICAgIG5ldyBydGM6
OlJlZkNvdW50ZWRPYmplY3Q8VmlkZW9TdHJlYW1GYWN0b3J5PigpOworICAgIEVYUEVDVF9FUSgx
dSwgZW5jb2Rlcl9jb25maWctPnNpbXVsY2FzdF9sYXllcnMuc2l6ZSgpKTsKKyAgICBlbmNvZGVy
X2NvbmZpZy0+c2ltdWxjYXN0X2xheWVyc1swXS5udW1fdGVtcG9yYWxfbGF5ZXJzID0KKyAgICAg
ICAga1ZpZGVvQ29kZWNDb25maWdPYnNlcnZlck51bWJlck9mVGVtcG9yYWxMYXllcnM7CiAgICAg
ZW5jb2Rlcl9jb25maWdfID0gZW5jb2Rlcl9jb25maWctPkNvcHkoKTsKICAgfQogCkBAIC0yNzk0
LDggKzI3NjcsNiBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgVHJhbnNsYXRlc1R3b0xh
eWVyU2NyZWVuY2FzdFRvVGFyZ2V0Qml0cmF0ZSkgewogICAgICAgICBjb25zdCBWaWRlb0VuY29k
ZXJDb25maWcmIGVuY29kZXJfY29uZmlnKSBvdmVycmlkZSB7CiAgICAgICBzdGQ6OnZlY3RvcjxW
aWRlb1N0cmVhbT4gc3RyZWFtcyA9CiAgICAgICAgICAgdGVzdDo6Q3JlYXRlVmlkZW9TdHJlYW1z
KHdpZHRoLCBoZWlnaHQsIGVuY29kZXJfY29uZmlnKTsKLSAgICAgIEVYUEVDVF9GQUxTRShzdHJl
YW1zWzBdLm51bV90ZW1wb3JhbF9sYXllcnMuaGFzX3ZhbHVlKCkpOwotICAgICAgc3RyZWFtc1sw
XS5udW1fdGVtcG9yYWxfbGF5ZXJzID0gMjsKICAgICAgIFJUQ19DSEVDS19HVChzdHJlYW1zWzBd
Lm1heF9iaXRyYXRlX2JwcywKICAgICAgICAgICAgICAgICAgICBrU2NyZWVuY2FzdE1heFRhcmdl
dEJpdHJhdGVEZWx0YUticHMpOwogICAgICAgc3RyZWFtc1swXS50YXJnZXRfYml0cmF0ZV9icHMg
PQpAQCAtMjgzMyw2ICsyODA0LDggQEAgVEVTVF9QKFZpZGVvU2VuZFN0cmVhbVRlc3QsIFRyYW5z
bGF0ZXNUd29MYXllclNjcmVlbmNhc3RUb1RhcmdldEJpdHJhdGUpIHsKICAgICAgIEVYUEVDVF9F
USgxdSwgZW5jb2Rlcl9jb25maWctPm51bWJlcl9vZl9zdHJlYW1zKTsKICAgICAgIGVuY29kZXJf
Y29uZmlnLT52aWRlb19zdHJlYW1fZmFjdG9yeSA9CiAgICAgICAgICAgbmV3IHJ0Yzo6UmVmQ291
bnRlZE9iamVjdDxWaWRlb1N0cmVhbUZhY3Rvcnk+KCk7CisgICAgICBFWFBFQ1RfRVEoMXUsIGVu
Y29kZXJfY29uZmlnLT5zaW11bGNhc3RfbGF5ZXJzLnNpemUoKSk7CisgICAgICBlbmNvZGVyX2Nv
bmZpZy0+c2ltdWxjYXN0X2xheWVyc1swXS5udW1fdGVtcG9yYWxfbGF5ZXJzID0gMjsKICAgICAg
IGVuY29kZXJfY29uZmlnLT5jb250ZW50X3R5cGUgPSBWaWRlb0VuY29kZXJDb25maWc6OkNvbnRl
bnRUeXBlOjprU2NyZWVuOwogICAgIH0KIApAQCAtMjg2Myw4ICsyODM2LDYgQEAgVEVTVF9QKFZp
ZGVvU2VuZFN0cmVhbVRlc3QsIFJlY29uZmlndXJlQml0cmF0ZXNTZXRzRW5jb2RlckJpdHJhdGVz
Q29ycmVjdGx5KSB7CiAgICAgICAgIDogU2VuZFRlc3Qoa0RlZmF1bHRUaW1lb3V0TXMpLAogICAg
ICAgICAgIEZha2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpLAogICAgICAgICAg
IHRhc2tfcXVldWVfKHRhc2tfcXVldWUpLAotICAgICAgICAgIGluaXRfZW5jb2RlX2V2ZW50Xyhm
YWxzZSwgZmFsc2UpLAotICAgICAgICAgIGJpdHJhdGVfY2hhbmdlZF9ldmVudF8oZmFsc2UsIGZh
bHNlKSwKICAgICAgICAgICB0YXJnZXRfYml0cmF0ZV8oMCksCiAgICAgICAgICAgbnVtX2luaXRp
YWxpemF0aW9uc18oMCksCiAgICAgICAgICAgY2FsbF8obnVsbHB0ciksCkBAIC0yOTI3LDEwICsy
ODk4LDExIEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1UZXN0LCBSZWNvbmZpZ3VyZUJpdHJhdGVz
U2V0c0VuY29kZXJCaXRyYXRlc0NvcnJlY3RseSkgewogICAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
X2JpdHJhdGUsIHRhcmdldF9iaXRyYXRlXyk7CiAgICAgfQogCi0gICAgdm9pZCBNb2RpZnlTZW5k
ZXJDYWxsQ29uZmlnKENhbGw6OkNvbmZpZyogY29uZmlnKSBvdmVycmlkZSB7Ci0gICAgICBjb25m
aWctPmJpdHJhdGVfY29uZmlnLm1pbl9iaXRyYXRlX2JwcyA9IGtNaW5CaXRyYXRlS2JwcyAqIDEw
MDA7Ci0gICAgICBjb25maWctPmJpdHJhdGVfY29uZmlnLnN0YXJ0X2JpdHJhdGVfYnBzID0ga1N0
YXJ0Qml0cmF0ZUticHMgKiAxMDAwOwotICAgICAgY29uZmlnLT5iaXRyYXRlX2NvbmZpZy5tYXhf
Yml0cmF0ZV9icHMgPSBrTWF4Qml0cmF0ZUticHMgKiAxMDAwOworICAgIHZvaWQgTW9kaWZ5U2Vu
ZGVyQml0cmF0ZUNvbmZpZygKKyAgICAgICAgQml0cmF0ZUNvbnN0cmFpbnRzKiBiaXRyYXRlX2Nv
bmZpZykgb3ZlcnJpZGUgeworICAgICAgYml0cmF0ZV9jb25maWctPm1pbl9iaXRyYXRlX2JwcyA9
IGtNaW5CaXRyYXRlS2JwcyAqIDEwMDA7CisgICAgICBiaXRyYXRlX2NvbmZpZy0+c3RhcnRfYml0
cmF0ZV9icHMgPSBrU3RhcnRCaXRyYXRlS2JwcyAqIDEwMDA7CisgICAgICBiaXRyYXRlX2NvbmZp
Zy0+bWF4X2JpdHJhdGVfYnBzID0ga01heEJpdHJhdGVLYnBzICogMTAwMDsKICAgICB9CiAKICAg
ICBjbGFzcyBWaWRlb1N0cmVhbUZhY3RvcnkKQEAgLTMxMTUsNyArMzA4Nyw3IEBAIFRFU1RfUChW
aWRlb1NlbmRTdHJlYW1UZXN0LCBSZXBvcnRzU2VudFJlc29sdXRpb24pIHsKICAgUnVuQmFzZVRl
c3QoJnRlc3QpOwogfQogCi0jaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2lmIGRlZmlu
ZWQoUlRDX0VOQUJMRV9WUDkpCiBjbGFzcyBWcDlIZWFkZXJPYnNlcnZlciA6IHB1YmxpYyB0ZXN0
OjpTZW5kVGVzdCB7CiAgcHVibGljOgogICBWcDlIZWFkZXJPYnNlcnZlcigpCkBAIC0zMTM3LDI2
ICszMTA5LDYgQEAgY2xhc3MgVnA5SGVhZGVyT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6U2VuZFRl
c3QgewogIHByaXZhdGU6CiAgIGNvbnN0IGludCBrVnA5UGF5bG9hZFR5cGUgPSB0ZXN0OjpDYWxs
VGVzdDo6a1ZpZGVvU2VuZFBheWxvYWRUeXBlOwogCi0gIGNsYXNzIFZpZGVvU3RyZWFtRmFjdG9y
eQotICAgICAgOiBwdWJsaWMgVmlkZW9FbmNvZGVyQ29uZmlnOjpWaWRlb1N0cmVhbUZhY3RvcnlJ
bnRlcmZhY2UgewotICAgcHVibGljOgotICAgIGV4cGxpY2l0IFZpZGVvU3RyZWFtRmFjdG9yeShz
aXplX3QgbnVtYmVyX29mX3RlbXBvcmFsX2xheWVycykKLSAgICAgICAgOiBudW1iZXJfb2ZfdGVt
cG9yYWxfbGF5ZXJzXyhudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzKSB7fQotCi0gICBwcml2YXRl
OgotICAgIHN0ZDo6dmVjdG9yPFZpZGVvU3RyZWFtPiBDcmVhdGVFbmNvZGVyU3RyZWFtcygKLSAg
ICAgICAgaW50IHdpZHRoLAotICAgICAgICBpbnQgaGVpZ2h0LAotICAgICAgICBjb25zdCBWaWRl
b0VuY29kZXJDb25maWcmIGVuY29kZXJfY29uZmlnKSBvdmVycmlkZSB7Ci0gICAgICBzdGQ6OnZl
Y3RvcjxWaWRlb1N0cmVhbT4gc3RyZWFtcyA9Ci0gICAgICAgICAgdGVzdDo6Q3JlYXRlVmlkZW9T
dHJlYW1zKHdpZHRoLCBoZWlnaHQsIGVuY29kZXJfY29uZmlnKTsKLSAgICAgIHN0cmVhbXMuYmFj
aygpLm51bV90ZW1wb3JhbF9sYXllcnMgPSBudW1iZXJfb2ZfdGVtcG9yYWxfbGF5ZXJzXzsKLSAg
ICAgIHJldHVybiBzdHJlYW1zOwotICAgIH0KLQotICAgIGNvbnN0IHNpemVfdCBudW1iZXJfb2Zf
dGVtcG9yYWxfbGF5ZXJzXzsKLSAgfTsKLQogICB2b2lkIE1vZGlmeVZpZGVvQ29uZmlncygKICAg
ICAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnKiBzZW5kX2NvbmZpZywKICAgICAgIHN0ZDo6dmVj
dG9yPFZpZGVvUmVjZWl2ZVN0cmVhbTo6Q29uZmlnPiogcmVjZWl2ZV9jb25maWdzLApAQCAtMzE2
OCw5ICszMTIwLDkgQEAgY2xhc3MgVnA5SGVhZGVyT2JzZXJ2ZXIgOiBwdWJsaWMgdGVzdDo6U2Vu
ZFRlc3QgewogICAgIGVuY29kZXJfY29uZmlnLT5lbmNvZGVyX3NwZWNpZmljX3NldHRpbmdzID0g
bmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDwKICAgICAgICAgVmlkZW9FbmNvZGVyQ29uZmlnOjpW
cDlFbmNvZGVyU3BlY2lmaWNTZXR0aW5ncz4odnA5X3NldHRpbmdzXyk7CiAgICAgRVhQRUNUX0VR
KDF1LCBlbmNvZGVyX2NvbmZpZy0+bnVtYmVyX29mX3N0cmVhbXMpOwotICAgIGVuY29kZXJfY29u
ZmlnLT52aWRlb19zdHJlYW1fZmFjdG9yeSA9Ci0gICAgICAgIG5ldyBydGM6OlJlZkNvdW50ZWRP
YmplY3Q8VmlkZW9TdHJlYW1GYWN0b3J5PigKLSAgICAgICAgICAgIHZwOV9zZXR0aW5nc18ubnVt
YmVyT2ZUZW1wb3JhbExheWVycyk7CisgICAgRVhQRUNUX0VRKDF1LCBlbmNvZGVyX2NvbmZpZy0+
c2ltdWxjYXN0X2xheWVycy5zaXplKCkpOworICAgIGVuY29kZXJfY29uZmlnLT5zaW11bGNhc3Rf
bGF5ZXJzWzBdLm51bV90ZW1wb3JhbF9sYXllcnMgPQorICAgICAgICB2cDlfc2V0dGluZ3NfLm51
bWJlck9mVGVtcG9yYWxMYXllcnM7CiAgICAgZW5jb2Rlcl9jb25maWdfID0gZW5jb2Rlcl9jb25m
aWctPkNvcHkoKTsKICAgfQogCkBAIC0zNjI4LDcgKzM1ODAsNyBAQCBURVNUX1AoVmlkZW9TZW5k
U3RyZWFtVGVzdCwgTUFZQkVfVnA5RmxleE1vZGVSZWZDb3VudCkgewogCiAgIFJ1bkJhc2VUZXN0
KCZ0ZXN0KTsKIH0KLSNlbmRpZiAgLy8gIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorI2VuZGlm
ICAvLyBkZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQogCiB2b2lkIFZpZGVvU2VuZFN0cmVhbVRlc3Q6
OlRlc3RSZXF1ZXN0U291cmNlUm90YXRlVmlkZW8oCiAgICAgYm9vbCBzdXBwb3J0X29yaWVudGF0
aW9uX2V4dCkgewpAQCAtMzY2Myw2ICszNjE1LDM5IEBAIFRFU1RfUChWaWRlb1NlbmRTdHJlYW1U
ZXN0LAogICBUZXN0UmVxdWVzdFNvdXJjZVJvdGF0ZVZpZGVvKHRydWUpOwogfQogCitURVNUX1Ao
VmlkZW9TZW5kU3RyZWFtVGVzdCwgRW5jb2RlckNvbmZpZ01heEZyYW1lcmF0ZVJlcG9ydGVkVG9T
b3VyY2UpIHsKKyAgc3RhdGljIGNvbnN0IGludCBrTWF4RnBzID0gMjI7CisgIGNsYXNzIEZwc09i
c2VydmVyIDogcHVibGljIHRlc3Q6OlNlbmRUZXN0LAorICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyB0ZXN0OjpGcmFtZUdlbmVyYXRvckNhcHR1cmVyOjpTaW5rV2FudHNPYnNlcnZlciB7Cisg
ICBwdWJsaWM6CisgICAgRnBzT2JzZXJ2ZXIoKSA6IFNlbmRUZXN0KGtEZWZhdWx0VGltZW91dE1z
KSB7fQorCisgICAgdm9pZCBPbkZyYW1lR2VuZXJhdG9yQ2FwdHVyZXJDcmVhdGVkKAorICAgICAg
ICB0ZXN0OjpGcmFtZUdlbmVyYXRvckNhcHR1cmVyKiBmcmFtZV9nZW5lcmF0b3JfY2FwdHVyZXIp
IG92ZXJyaWRlIHsKKyAgICAgIGZyYW1lX2dlbmVyYXRvcl9jYXB0dXJlci0+U2V0U2lua1dhbnRz
T2JzZXJ2ZXIodGhpcyk7CisgICAgfQorCisgICAgdm9pZCBPblNpbmtXYW50c0NoYW5nZWQocnRj
OjpWaWRlb1NpbmtJbnRlcmZhY2U8VmlkZW9GcmFtZT4qIHNpbmssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcnRjOjpWaWRlb1NpbmtXYW50cyYgd2FudHMpIG92ZXJyaWRlIHsK
KyAgICAgIGlmICh3YW50cy5tYXhfZnJhbWVyYXRlX2ZwcyA9PSBrTWF4RnBzKQorICAgICAgICBv
YnNlcnZhdGlvbl9jb21wbGV0ZV8uU2V0KCk7CisgICAgfQorCisgICAgdm9pZCBNb2RpZnlWaWRl
b0NvbmZpZ3MoCisgICAgICAgIFZpZGVvU2VuZFN0cmVhbTo6Q29uZmlnKiBzZW5kX2NvbmZpZywK
KyAgICAgICAgc3RkOjp2ZWN0b3I8VmlkZW9SZWNlaXZlU3RyZWFtOjpDb25maWc+KiByZWNlaXZl
X2NvbmZpZ3MsCisgICAgICAgIFZpZGVvRW5jb2RlckNvbmZpZyogZW5jb2Rlcl9jb25maWcpIG92
ZXJyaWRlIHsKKyAgICAgIGVuY29kZXJfY29uZmlnLT5zaW11bGNhc3RfbGF5ZXJzWzBdLm1heF9m
cmFtZXJhdGUgPSBrTWF4RnBzOworICAgIH0KKworICAgIHZvaWQgUGVyZm9ybVRlc3QoKSBvdmVy
cmlkZSB7CisgICAgICBFWFBFQ1RfVFJVRShXYWl0KCkpIDw8ICJUaW1lZCBvdXQgd2hpbGUgd2Fp
dGluZyBmb3IgZnBzIHRvIGJlIHJlcG9ydGVkLiI7CisgICAgfQorICB9IHRlc3Q7CisKKyAgUnVu
QmFzZVRlc3QoJnRlc3QpOworfQorCiAvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBvdmVyaGVh
ZCBpcyByZW1vdmVkIGZyb20gdGhlIGJhbmR3aWR0aCBlc3RpbWF0ZSBieQogLy8gdGVzdGluZyB0
aGF0IHRoZSBtYXhpbXVtIHBvc3NpYmxlIHRhcmdldCBwYXlsb2FkIHJhdGUgaXMgc21hbGxlciB0
aGFuIHRoZQogLy8gbWF4aW11bSBiYW5kd2lkdGggZXN0aW1hdGUgYnkgdGhlIG92ZXJoZWFkIHJh
dGUuCkBAIC0zNjgwLDggKzM2NjUsNyBAQCBURVNUX1AoVmlkZW9TZW5kU3RyZWFtVGVzdCwgUmVt
b3ZlT3ZlcmhlYWRGcm9tQmFuZHdpZHRoKSB7CiAgICAgICAgICAgZW5jb2Rlcl9mYWN0b3J5Xyh0
aGlzKSwKICAgICAgICAgICBjYWxsXyhudWxscHRyKSwKICAgICAgICAgICBtYXhfYml0cmF0ZV9i
cHNfKDApLAotICAgICAgICAgIGZpcnN0X3BhY2tldF9zZW50XyhmYWxzZSksCi0gICAgICAgICAg
Yml0cmF0ZV9jaGFuZ2VkX2V2ZW50XyhmYWxzZSwgZmFsc2UpIHt9CisgICAgICAgICAgZmlyc3Rf
cGFja2V0X3NlbnRfKGZhbHNlKSB7fQogCiAgICAgaW50MzJfdCBTZXRSYXRlQWxsb2NhdGlvbihj
b25zdCBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uJiBiaXRyYXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgZnJhbWVSYXRlKSBvdmVycmlkZSB7CkBAIC0zODk0LDcgKzM4
NzgsNiBAQCBjbGFzcyBDb250ZW50U3dpdGNoVGVzdCA6IHB1YmxpYyB0ZXN0OjpTZW5kVGVzdCB7
CiAKICAgZXhwbGljaXQgQ29udGVudFN3aXRjaFRlc3QoVCogc3RyZWFtX3Jlc2V0X2Z1bikKICAg
ICAgIDogU2VuZFRlc3QodGVzdDo6Q2FsbFRlc3Q6OmtEZWZhdWx0VGltZW91dE1zKSwKLSAgICAg
ICAgY29udGVudF9zd2l0Y2hfZXZlbnRfKGZhbHNlLCBmYWxzZSksCiAgICAgICAgIGNhbGxfKG51
bGxwdHIpLAogICAgICAgICBzdGF0ZV8oU3RyZWFtU3RhdGU6OmtCZWZvcmVTd2l0Y2gpLAogICAg
ICAgICBzZW5kX3N0cmVhbV8obnVsbHB0ciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlci5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0
cmVhbV9lbmNvZGVyLmNjCmluZGV4IGI3YjVhMzI2MTEzZjU3YTNmZjE0ZDlkYjJiMDE3MjI4MDBk
NjI5OGYuLmEyMmQ1OGFkZjFlYWFkZjg4N2JjNTRiMzg3ZjBlNGQ2MmU2Y2VlNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVv
X3N0cmVhbV9lbmNvZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyLmNjCkBAIC0xNSw4ICsxNSw5IEBA
CiAjaW5jbHVkZSA8bnVtZXJpYz4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSAiYXBp
L3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKICNpbmNsdWRlICJhcGkvdmlkZW8vaTQyMF9idWZmZXIu
aCIKLSNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS92aWRlb19mcmFtZS5oIgorI2luY2x1
ZGUgImFwaS92aWRlby92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVk
ZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92aWRlb19jb2RlY19pbml0aWFsaXplci5o
IgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlkZW9fY29kaW5nLmgi
CiAjaW5jbHVkZSAicnRjX2Jhc2UvYXJyYXlzaXplLmgiCkBAIC0zNjMsNiArMzY0LDggQEAgVmlk
ZW9TdHJlYW1FbmNvZGVyOjpWaWRlb1N0cmVhbUVuY29kZXIoCiAgICAgICBtYXhfZnJhbWVyYXRl
XygtMSksCiAgICAgICBwZW5kaW5nX2VuY29kZXJfcmVjb25maWd1cmF0aW9uXyhmYWxzZSksCiAg
ICAgICBwZW5kaW5nX2VuY29kZXJfY3JlYXRpb25fKGZhbHNlKSwKKyAgICAgIGNyb3Bfd2lkdGhf
KDApLAorICAgICAgY3JvcF9oZWlnaHRfKDApLAogICAgICAgZW5jb2Rlcl9zdGFydF9iaXRyYXRl
X2Jwc18oMCksCiAgICAgICBtYXhfZGF0YV9wYXlsb2FkX2xlbmd0aF8oMCksCiAgICAgICBsYXN0
X29ic2VydmVkX2JpdHJhdGVfYnBzXygwKSwKQEAgLTM3Niw2ICszNzksNyBAQCBWaWRlb1N0cmVh
bUVuY29kZXI6OlZpZGVvU3RyZWFtRW5jb2RlcigKICAgICAgIGxhc3RfZnJhbWVfbG9nX21zXyhj
bG9ja18tPlRpbWVJbk1pbGxpc2Vjb25kcygpKSwKICAgICAgIGNhcHR1cmVkX2ZyYW1lX2NvdW50
XygwKSwKICAgICAgIGRyb3BwZWRfZnJhbWVfY291bnRfKDApLAorICAgICAgcGVuZGluZ19mcmFt
ZV9wb3N0X3RpbWVfdXNfKDApLAogICAgICAgYml0cmF0ZV9vYnNlcnZlcl8obnVsbHB0ciksCiAg
ICAgICBlbmNvZGVyX3F1ZXVlXygiRW5jb2RlclF1ZXVlIikgewogICBSVENfRENIRUNLKGVuY29k
ZXJfc3RhdHNfb2JzZXJ2ZXIpOwpAQCAtNTMxLDExICs1MzUsMTQgQEAgdm9pZCBWaWRlb1N0cmVh
bUVuY29kZXI6OlJlY29uZmlndXJlRW5jb2RlcigpIHsKICAgY3JvcF9oZWlnaHRfID0gbGFzdF9m
cmFtZV9pbmZvXy0+aGVpZ2h0IC0gaGlnaGVzdF9zdHJlYW1faGVpZ2h0OwogCiAgIFZpZGVvQ29k
ZWMgY29kZWM7Ci0gIGlmICghVmlkZW9Db2RlY0luaXRpYWxpemVyOjpTZXR1cENvZGVjKGVuY29k
ZXJfY29uZmlnXywgc3RyZWFtcywgJmNvZGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmcmF0ZV9hbGxvY2F0b3JfKSkgeworICBpZiAoIVZpZGVvQ29kZWNJbml0
aWFsaXplcjo6U2V0dXBDb2RlYyhlbmNvZGVyX2NvbmZpZ18sIHN0cmVhbXMsICZjb2RlYykpIHsK
ICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBlbmNvZGVyIGNvbmZp
Z3VyYXRpb24uIjsKICAgfQogCisgIHJhdGVfYWxsb2NhdG9yXyA9CisgICAgICBzZXR0aW5nc18u
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS0+Q3JlYXRlVmlkZW9CaXRyYXRlQWxsb2NhdG9yKGNv
ZGVjKTsKKyAgUlRDX0NIRUNLKHJhdGVfYWxsb2NhdG9yXykgPDwgIkZhaWxlZCB0byBjcmVhdGUg
Yml0cmF0ZSBhbGxvY2F0b3IuIjsKKwogICAvLyBTZXQgbWluX2JpdHJhdGVfYnBzLCBtYXhfYml0
cmF0ZV9icHMsIGFuZCBtYXggcGFkZGluZyBiaXQgcmF0ZSBmb3IgVlA5LgogICBpZiAoZW5jb2Rl
cl9jb25maWdfLmNvZGVjX3R5cGUgPT0ga1ZpZGVvQ29kZWNWUDkpIHsKICAgICBSVENfRENIRUNL
X0VRKDFVLCBzdHJlYW1zLnNpemUoKSk7CkBAIC02MjksNyArNjM2LDcgQEAgdm9pZCBWaWRlb1N0
cmVhbUVuY29kZXI6OlJlY29uZmlndXJlRW5jb2RlcigpIHsKIAogdm9pZCBWaWRlb1N0cmVhbUVu
Y29kZXI6OkNvbmZpZ3VyZVF1YWxpdHlTY2FsZXIoKSB7CiAgIFJUQ19EQ0hFQ0tfUlVOX09OKCZl
bmNvZGVyX3F1ZXVlXyk7Ci0gIGNvbnN0IGF1dG8gc2NhbGluZ19zZXR0aW5ncyA9IGVuY29kZXJf
LT5HZXRTY2FsaW5nU2V0dGluZ3MoKTsKKyAgY29uc3QgYXV0byBzY2FsaW5nX3NldHRpbmdzID0g
ZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCkuc2NhbGluZ19zZXR0aW5nczsKICAgY29uc3QgYm9v
bCBxdWFsaXR5X3NjYWxpbmdfYWxsb3dlZCA9CiAgICAgICBJc1Jlc29sdXRpb25TY2FsaW5nRW5h
YmxlZChkZWdyYWRhdGlvbl9wcmVmZXJlbmNlXykgJiYKICAgICAgIHNjYWxpbmdfc2V0dGluZ3Mu
dGhyZXNob2xkczsKQEAgLTg4Nyw3ICs4OTQsMTUgQEAgdm9pZCBWaWRlb1N0cmVhbUVuY29kZXI6
OkVuY29kZVZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgdmlkZW9fZnJhbWUsCiAKICAgb3Zl
cnVzZV9kZXRlY3Rvcl8tPkZyYW1lQ2FwdHVyZWQob3V0X2ZyYW1lLCB0aW1lX3doZW5fcG9zdGVk
X3VzKTsKIAotICB2aWRlb19zZW5kZXJfLkFkZFZpZGVvRnJhbWUob3V0X2ZyYW1lLCBudWxscHRy
KTsKKyAgLy8gRW5jb2RlciBtZXRhZGF0YSBuZWVkcyB0byBiZSB1cGRhdGVkIGJlZm9yZSBlbmNv
ZGUgY29tcGxldGUgY2FsbGJhY2suCisgIFZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gaW5mbyA9
IGVuY29kZXJfLT5HZXRFbmNvZGVySW5mbygpOworICBpZiAoaW5mby5pbXBsZW1lbnRhdGlvbl9u
YW1lICE9IGVuY29kZXJfaW5mb18uaW1wbGVtZW50YXRpb25fbmFtZSkgeworICAgIGVuY29kZXJf
c3RhdHNfb2JzZXJ2ZXJfLT5PbkVuY29kZXJJbXBsZW1lbnRhdGlvbkNoYW5nZWQoCisgICAgICAg
IGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSk7CisgIH0KKyAgZW5jb2Rlcl9pbmZvXyA9IGluZm87
CisKKyAgdmlkZW9fc2VuZGVyXy5BZGRWaWRlb0ZyYW1lKG91dF9mcmFtZSwgbnVsbHB0ciwgZW5j
b2Rlcl9pbmZvXyk7CiB9CiAKIHZvaWQgVmlkZW9TdHJlYW1FbmNvZGVyOjpTZW5kS2V5RnJhbWUo
KSB7CkBAIC0xMDg1LDcgKzExMDAsNyBAQCB2b2lkIFZpZGVvU3RyZWFtRW5jb2Rlcjo6QWRhcHRE
b3duKEFkYXB0UmVhc29uIHJlYXNvbikgewogICAgICAgYm9vbCBtaW5fcGl4ZWxzX3JlYWNoZWQg
PSBmYWxzZTsKICAgICAgIGlmICghc291cmNlX3Byb3h5Xy0+UmVxdWVzdFJlc29sdXRpb25Mb3dl
clRoYW4oCiAgICAgICAgICAgICAgIGFkYXB0YXRpb25fcmVxdWVzdC5pbnB1dF9waXhlbF9jb3Vu
dF8sCi0gICAgICAgICAgICAgIGVuY29kZXJfLT5HZXRTY2FsaW5nU2V0dGluZ3MoKS5taW5fcGl4
ZWxzX3Blcl9mcmFtZSwKKyAgICAgICAgICAgICAgZW5jb2Rlcl8tPkdldEVuY29kZXJJbmZvKCku
c2NhbGluZ19zZXR0aW5ncy5taW5fcGl4ZWxzX3Blcl9mcmFtZSwKICAgICAgICAgICAgICAgJm1p
bl9waXhlbHNfcmVhY2hlZCkpIHsKICAgICAgICAgaWYgKG1pbl9waXhlbHNfcmVhY2hlZCkKICAg
ICAgICAgICBlbmNvZGVyX3N0YXRzX29ic2VydmVyXy0+T25NaW5QaXhlbExpbWl0UmVhY2hlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
dmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyLmgKaW5kZXggNDAwODQy
NmJhYzljZjBlNmRjMjhlOTI4NjQ0ODQ3MTMwMDEyNTZkNS4uOGM1ZWZiZTVjMzY5OTkxYjM5YmMz
ZTljZjgyNzhlMzY0MTY0YTgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vdmlkZW9fc3RyZWFtX2VuY29kZXIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92aWRlb19zdHJlYW1f
ZW5jb2Rlci5oCkBAIC0yNjgsNiArMjY4LDggQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyIDog
cHVibGljIFZpZGVvU3RyZWFtRW5jb2RlckludGVyZmFjZSwKICAgYWJzbDo6b3B0aW9uYWw8aW50
NjRfdD4gbGFzdF9wYXJhbWV0ZXJzX3VwZGF0ZV9tc18KICAgICAgIFJUQ19HVUFSREVEX0JZKCZl
bmNvZGVyX3F1ZXVlXyk7CiAKKyAgVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBlbmNvZGVyX2lu
Zm9fIFJUQ19HVUFSREVEX0JZKCZlbmNvZGVyX3F1ZXVlXyk7CisKICAgLy8gQWxsIHB1YmxpYyBt
ZXRob2RzIGFyZSBwcm94aWVkIHRvIHxlbmNvZGVyX3F1ZXVlX3wuIEl0IG11c3QgbXVzdCBiZQog
ICAvLyBkZXN0cm95ZWQgZmlyc3QgdG8gbWFrZSBzdXJlIG5vIHRhc2tzIGFyZSBydW4gdGhhdCB1
c2Ugb3RoZXIgbWVtYmVycy4KICAgcnRjOjpUYXNrUXVldWUgZW5jb2Rlcl9xdWV1ZV87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy92aWRlby92
aWRlb19zdHJlYW1fZW5jb2Rlcl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyX3VuaXR0ZXN0LmNj
CmluZGV4IDgwZjhkNWE1OTIxNzVmM2MyMjU3OTAzM2RlMDZmY2RhM2FiMzkwZDcuLjA1YTIzYzA1
YjQ1ZTczNmQwN2RkODc2MWI1NDliZTEzNGEyMjgwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVy
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3ZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVyX3VuaXR0ZXN0LmNjCkBAIC04LDEzICs4LDE3
IEBACiAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUg
c291cmNlIHRyZWUuCiAgKi8KIAorI2luY2x1ZGUgInZpZGVvL3ZpZGVvX3N0cmVhbV9lbmNvZGVy
LmgiCisKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKKyNpbmNsdWRlICJhcGkvdmlkZW8vYnVpbHRpbl92aWRlb19iaXRyYXRlX2Fs
bG9jYXRvcl9mYWN0b3J5LmgiCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL2k0MjBfYnVmZmVyLmgiCisj
aW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy9jcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oIgor
I2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdnA4X3RlbXBvcmFsX2xheWVycy5oIgogI2luY2x1
ZGUgIm1lZGlhL2Jhc2UvdmlkZW9hZGFwdGVyLmgiCi0jaW5jbHVkZSAibW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOC9pbmNsdWRlL3ZwOF90ZW1wb3JhbF9sYXllcnMuaCIKICNpbmNsdWRl
ICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L2luY2x1ZGUvdnA5X2dsb2JhbHMuaCIK
ICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L2RlZmF1bHRfdmlkZW9fYml0
cmF0ZV9hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJydGNfYmFzZS9mYWtlY2xvY2suaCIKQEAgLTMw
LDcgKzM0LDYgQEAKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC92aWRl
b19lbmNvZGVyX3Byb3h5X2ZhY3RvcnkuaCIKICNpbmNsdWRlICJ2aWRlby9zZW5kX3N0YXRpc3Rp
Y3NfcHJveHkuaCIKLSNpbmNsdWRlICJ2aWRlby92aWRlb19zdHJlYW1fZW5jb2Rlci5oIgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtMTAyLDcgKzEwNSw3IEBAIGNsYXNzIFZpZGVvU3RyZWFt
RW5jb2RlclVuZGVyVGVzdCA6IHB1YmxpYyBWaWRlb1N0cmVhbUVuY29kZXIgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQ3B1T3ZlcnVzZURldGVjdG9yUHJveHkoc3Rh
dHNfcHJveHkpKSkge30KIAogICB2b2lkIFBvc3RUYXNrQW5kV2FpdChib29sIGRvd24sIEFkYXB0
UmVhc29uIHJlYXNvbikgewotICAgIHJ0Yzo6RXZlbnQgZXZlbnQoZmFsc2UsIGZhbHNlKTsKKyAg
ICBydGM6OkV2ZW50IGV2ZW50OwogICAgIGVuY29kZXJfcXVldWUoKS0+UG9zdFRhc2soW3RoaXMs
ICZldmVudCwgcmVhc29uLCBkb3duXSB7CiAgICAgICBkb3duID8gQWRhcHREb3duKHJlYXNvbikg
OiBBZGFwdFVwKHJlYXNvbik7CiAgICAgICBldmVudC5TZXQoKTsKQEAgLTExMyw3ICsxMTYsNyBA
QCBjbGFzcyBWaWRlb1N0cmVhbUVuY29kZXJVbmRlclRlc3QgOiBwdWJsaWMgVmlkZW9TdHJlYW1F
bmNvZGVyIHsKICAgLy8gVGhpcyBpcyB1c2VkIGFzIGEgc3luY2hyb25pc2F0aW9uIG1lY2hhbmlz
bSwgdG8gbWFrZSBzdXJlIHRoYXQgdGhlCiAgIC8vIGVuY29kZXIgcXVldWUgaXMgbm90IGJsb2Nr
ZWQgYmVmb3JlIHdlIHN0YXJ0IHNlbmRpbmcgaXQgZnJhbWVzLgogICB2b2lkIFdhaXRVbnRpbFRh
c2tRdWV1ZUlzSWRsZSgpIHsKLSAgICBydGM6OkV2ZW50IGV2ZW50KGZhbHNlLCBmYWxzZSk7Cisg
ICAgcnRjOjpFdmVudCBldmVudDsKICAgICBlbmNvZGVyX3F1ZXVlKCktPlBvc3RUYXNrKFsmZXZl
bnRdIHsgZXZlbnQuU2V0KCk7IH0pOwogICAgIEFTU0VSVF9UUlVFKGV2ZW50LldhaXQoNTAwMCkp
OwogICB9CkBAIC0yNzcsNiArMjgwLDcgQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBtYXhfZnJhbWVyYXRlXyhrRGVmYXVs
dEZyYW1lcmF0ZSksCiAgICAgICAgIGZha2VfZW5jb2Rlcl8oKSwKICAgICAgICAgZW5jb2Rlcl9m
YWN0b3J5XygmZmFrZV9lbmNvZGVyXyksCisgICAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2ZhY3Rv
cnlfKENyZWF0ZUJ1aWx0aW5WaWRlb0JpdHJhdGVBbGxvY2F0b3JGYWN0b3J5KCkpLAogICAgICAg
ICBzdGF0c19wcm94eV8obmV3IE1vY2thYmxlU2VuZFN0YXRpc3RpY3NQcm94eSgKICAgICAgICAg
ICAgIENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCksCiAgICAgICAgICAgICB2aWRlb19zZW5kX2Nv
bmZpZ18sCkBAIC0yODcsNiArMjkxLDggQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIG1ldHJpY3M6OlJlc2V0KCk7CiAgICAgdmlk
ZW9fc2VuZF9jb25maWdfID0gVmlkZW9TZW5kU3RyZWFtOjpDb25maWcobnVsbHB0cik7CiAgICAg
dmlkZW9fc2VuZF9jb25maWdfLmVuY29kZXJfc2V0dGluZ3MuZW5jb2Rlcl9mYWN0b3J5ID0gJmVu
Y29kZXJfZmFjdG9yeV87CisgICAgdmlkZW9fc2VuZF9jb25maWdfLmVuY29kZXJfc2V0dGluZ3Mu
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeSA9CisgICAgICAgIGJpdHJhdGVfYWxsb2NhdG9yX2Zh
Y3RvcnlfLmdldCgpOwogICAgIHZpZGVvX3NlbmRfY29uZmlnXy5ydHAucGF5bG9hZF9uYW1lID0g
IkZBS0UiOwogICAgIHZpZGVvX3NlbmRfY29uZmlnXy5ydHAucGF5bG9hZF90eXBlID0gMTI1Owog
CkBAIC00OTIsOSArNDk4LDcgQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewogCiAgIGNsYXNzIFRlc3RFbmNvZGVyIDogcHVibGljIHRlc3Q6
OkZha2VFbmNvZGVyIHsKICAgIHB1YmxpYzoKLSAgICBUZXN0RW5jb2RlcigpCi0gICAgICAgIDog
RmFrZUVuY29kZXIoQ2xvY2s6OkdldFJlYWxUaW1lQ2xvY2soKSksCi0gICAgICAgICAgY29udGlu
dWVfZW5jb2RlX2V2ZW50XyhmYWxzZSwgZmFsc2UpIHt9CisgICAgVGVzdEVuY29kZXIoKSA6IEZh
a2VFbmNvZGVyKENsb2NrOjpHZXRSZWFsVGltZUNsb2NrKCkpIHt9CiAKICAgICBWaWRlb0NvZGVj
IGNvZGVjX2NvbmZpZygpIGNvbnN0IHsKICAgICAgIHJ0Yzo6Q3JpdFNjb3BlIGxvY2soJmNyaXRf
c2VjdF8pOwpAQCAtNTA2LDExICs1MTAsMTQgQEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgYmxvY2tfbmV4dF9lbmNvZGVfID0g
dHJ1ZTsKICAgICB9CiAKLSAgICBWaWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncyBHZXRTY2Fs
aW5nU2V0dGluZ3MoKSBjb25zdCBvdmVycmlkZSB7CisgICAgVmlkZW9FbmNvZGVyOjpFbmNvZGVy
SW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICAgIEVuY29kZXJJbmZv
IGluZm87CiAgICAgICBydGM6OkNyaXRTY29wZSBsb2NrKCZsb2NhbF9jcml0X3NlY3RfKTsKLSAg
ICAgIGlmIChxdWFsaXR5X3NjYWxpbmdfKQotICAgICAgICByZXR1cm4gVmlkZW9FbmNvZGVyOjpT
Y2FsaW5nU2V0dGluZ3MoMSwgMiwga01pblBpeGVsc1BlckZyYW1lKTsKLSAgICAgIHJldHVybiBW
aWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5nczo6a09mZjsKKyAgICAgIGlmIChxdWFsaXR5X3Nj
YWxpbmdfKSB7CisgICAgICAgIGluZm8uc2NhbGluZ19zZXR0aW5ncyA9CisgICAgICAgICAgICBW
aWRlb0VuY29kZXI6OlNjYWxpbmdTZXR0aW5ncygxLCAyLCBrTWluUGl4ZWxzUGVyRnJhbWUpOwor
ICAgICAgfQorICAgICAgcmV0dXJuIGluZm87CiAgICAgfQogCiAgICAgdm9pZCBDb250aW51ZUVu
Y29kZSgpIHsgY29udGludWVfZW5jb2RlX2V2ZW50Xy5TZXQoKTsgfQpAQCAtNTY5LDkgKzU3Niw4
IEBAIGNsYXNzIFZpZGVvU3RyZWFtRW5jb2RlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKICAgICAgICAgaW50IG51bV9zdHJlYW1zID0gc3RkOjptYXg8aW50PigxLCBjb25maWctPm51
bWJlck9mU2ltdWxjYXN0U3RyZWFtcyk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
X3N0cmVhbXM7ICsraSkgewogICAgICAgICAgIGFsbG9jYXRlZF90ZW1wb3JhbF9sYXllcnNfLmVt
cGxhY2VfYmFjaygKLSAgICAgICAgICAgICAgVGVtcG9yYWxMYXllcnM6OkNyZWF0ZVRlbXBvcmFs
TGF5ZXJzKAotICAgICAgICAgICAgICAgICAgVGVtcG9yYWxMYXllcnNUeXBlOjprRml4ZWRQYXR0
ZXJuLAotICAgICAgICAgICAgICAgICAgY29uZmlnLT5WUDgoKS5udW1iZXJPZlRlbXBvcmFsTGF5
ZXJzKSk7CisgICAgICAgICAgICAgIENyZWF0ZVZwOFRlbXBvcmFsTGF5ZXJzKFZwOFRlbXBvcmFs
TGF5ZXJzVHlwZTo6a0ZpeGVkUGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uZmlnLT5WUDgoKS5udW1iZXJPZlRlbXBvcmFsTGF5ZXJzKSk7CiAgICAgICAg
IH0KICAgICAgIH0KICAgICAgIGlmIChmb3JjZV9pbml0X2VuY29kZV9mYWlsZWRfKQpAQCAtNTg3
LDcgKzU5Myw3IEBAIGNsYXNzIFZpZGVvU3RyZWFtRW5jb2RlclRlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKICAgICBpbnQgbGFzdF9pbnB1dF93aWR0aF8gUlRDX0dVQVJERURfQlkobG9j
YWxfY3JpdF9zZWN0XykgPSAwOwogICAgIGludCBsYXN0X2lucHV0X2hlaWdodF8gUlRDX0dVQVJE
RURfQlkobG9jYWxfY3JpdF9zZWN0XykgPSAwOwogICAgIGJvb2wgcXVhbGl0eV9zY2FsaW5nXyBS
VENfR1VBUkRFRF9CWShsb2NhbF9jcml0X3NlY3RfKSA9IHRydWU7Ci0gICAgc3RkOjp2ZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFRlbXBvcmFsTGF5ZXJzPj4gYWxsb2NhdGVkX3RlbXBvcmFsX2xheWVy
c18KKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VnA4VGVtcG9yYWxMYXllcnM+PiBh
bGxvY2F0ZWRfdGVtcG9yYWxfbGF5ZXJzXwogICAgICAgICBSVENfR1VBUkRFRF9CWShsb2NhbF9j
cml0X3NlY3RfKTsKICAgICBib29sIGZvcmNlX2luaXRfZW5jb2RlX2ZhaWxlZF8gUlRDX0dVQVJE
RURfQlkobG9jYWxfY3JpdF9zZWN0XykgPSBmYWxzZTsKICAgfTsKQEAgLTU5NSw3ICs2MDEsNyBA
QCBjbGFzcyBWaWRlb1N0cmVhbUVuY29kZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CiAgIGNsYXNzIFRlc3RTaW5rIDogcHVibGljIFZpZGVvU3RyZWFtRW5jb2Rlcjo6RW5jb2RlclNp
bmsgewogICAgcHVibGljOgogICAgIGV4cGxpY2l0IFRlc3RTaW5rKFRlc3RFbmNvZGVyKiB0ZXN0
X2VuY29kZXIpCi0gICAgICAgIDogdGVzdF9lbmNvZGVyXyh0ZXN0X2VuY29kZXIpLCBlbmNvZGVk
X2ZyYW1lX2V2ZW50XyhmYWxzZSwgZmFsc2UpIHt9CisgICAgICAgIDogdGVzdF9lbmNvZGVyXyh0
ZXN0X2VuY29kZXIpIHt9CiAKICAgICB2b2lkIFdhaXRGb3JFbmNvZGVkRnJhbWUoaW50NjRfdCBl
eHBlY3RlZF9udHBfdGltZSkgewogICAgICAgRVhQRUNUX1RSVUUoCkBAIC02OTQsNiArNzAwLDcg
QEAgY2xhc3MgVmlkZW9TdHJlYW1FbmNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
ewogICBpbnQgbWF4X2ZyYW1lcmF0ZV87CiAgIFRlc3RFbmNvZGVyIGZha2VfZW5jb2Rlcl87CiAg
IHRlc3Q6OlZpZGVvRW5jb2RlclByb3h5RmFjdG9yeSBlbmNvZGVyX2ZhY3RvcnlfOworICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9CaXRyYXRlQWxsb2NhdG9yRmFjdG9yeT4gYml0cmF0ZV9hbGxvY2F0
b3JfZmFjdG9yeV87CiAgIHN0ZDo6dW5pcXVlX3B0cjxNb2NrYWJsZVNlbmRTdGF0aXN0aWNzUHJv
eHk+IHN0YXRzX3Byb3h5XzsKICAgVGVzdFNpbmsgc2lua187CiAgIEFkYXB0aW5nRnJhbWVGb3J3
YXJkZXIgdmlkZW9fc291cmNlXzsKQEAgLTcwMyw3ICs3MTAsNyBAQCBjbGFzcyBWaWRlb1N0cmVh
bUVuY29kZXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAKIFRFU1RfRihWaWRlb1N0
cmVhbUVuY29kZXJUZXN0LCBFbmNvZGVPbmVGcmFtZSkgewogICB2aWRlb19zdHJlYW1fZW5jb2Rl
cl8tPk9uQml0cmF0ZVVwZGF0ZWQoa1RhcmdldEJpdHJhdGVCcHMsIDAsIDApOwotICBydGM6OkV2
ZW50IGZyYW1lX2Rlc3Ryb3llZF9ldmVudChmYWxzZSwgZmFsc2UpOworICBydGM6OkV2ZW50IGZy
YW1lX2Rlc3Ryb3llZF9ldmVudDsKICAgdmlkZW9fc291cmNlXy5JbmNvbWluZ0NhcHR1cmVkRnJh
bWUoQ3JlYXRlRnJhbWUoMSwgJmZyYW1lX2Rlc3Ryb3llZF9ldmVudCkpOwogICBXYWl0Rm9yRW5j
b2RlZEZyYW1lKDEpOwogICBFWFBFQ1RfVFJVRShmcmFtZV9kZXN0cm95ZWRfZXZlbnQuV2FpdChr
RGVmYXVsdFRpbWVvdXRNcykpOwpAQCAtNzEyLDcgKzcxOSw3IEBAIFRFU1RfRihWaWRlb1N0cmVh
bUVuY29kZXJUZXN0LCBFbmNvZGVPbmVGcmFtZSkgewogCiBURVNUX0YoVmlkZW9TdHJlYW1FbmNv
ZGVyVGVzdCwgRHJvcHNGcmFtZXNCZWZvcmVGaXJzdE9uQml0cmF0ZVVwZGF0ZWQpIHsKICAgLy8g
RHJvcHBlZCBzaW5jZSBubyB0YXJnZXQgYml0cmF0ZSBoYXMgYmVlbiBzZXQuCi0gIHJ0Yzo6RXZl
bnQgZnJhbWVfZGVzdHJveWVkX2V2ZW50KGZhbHNlLCBmYWxzZSk7CisgIHJ0Yzo6RXZlbnQgZnJh
bWVfZGVzdHJveWVkX2V2ZW50OwogICAvLyBUaGUgZW5jb2RlciB3aWxsIGNhY2hlIHVwIHRvIG9u
ZSBmcmFtZSBmb3IgYSBzaG9ydCBkdXJhdGlvbi4gQWRkaW5nIHR3bwogICAvLyBmcmFtZXMgbWVh
bnMgdGhhdCB0aGUgZmlyc3QgZnJhbWUgd2lsbCBiZSBkcm9wcGVkIGFuZCB0aGUgc2Vjb25kIGZy
YW1lIHdpbGwKICAgLy8gYmUgc2VudCB3aGVuIHRoZSBlbmNvZGVyIGlzIGVuYWJsZWQuCkBAIC03
NzAsNyArNzc3LDcgQEAgVEVTVF9GKFZpZGVvU3RyZWFtRW5jb2RlclRlc3QsIERyb3BzRnJhbWVB
ZnRlclN0b3ApIHsKIAogICB2aWRlb19zdHJlYW1fZW5jb2Rlcl8tPlN0b3AoKTsKICAgc2lua18u
U2V0RXhwZWN0Tm9GcmFtZXMoKTsKLSAgcnRjOjpFdmVudCBmcmFtZV9kZXN0cm95ZWRfZXZlbnQo
ZmFsc2UsIGZhbHNlKTsKKyAgcnRjOjpFdmVudCBmcmFtZV9kZXN0cm95ZWRfZXZlbnQ7CiAgIHZp
ZGVvX3NvdXJjZV8uSW5jb21pbmdDYXB0dXJlZEZyYW1lKENyZWF0ZUZyYW1lKDIsICZmcmFtZV9k
ZXN0cm95ZWRfZXZlbnQpKTsKICAgRVhQRUNUX1RSVUUoZnJhbWVfZGVzdHJveWVkX2V2ZW50Lldh
aXQoa0RlZmF1bHRUaW1lb3V0TXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3dlYnJ0Yy5nbmkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy93ZWJydGMuZ25pCmluZGV4IDZlY2Y4NTliYTEwM2QwZjY4
NjA3NjU5ZDI5OGVlZTdjNmEzYzcxODQuLjVjNTIxNGU4YTE1N2YxNmZjYThiODM4MDM3ODJiNTIz
YjU5NDdhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3dlYnJ0Yy5nbmkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvd2VicnRjLmduaQpAQCAtOSw2ICs5LDcgQEAgaW1wb3J0KCIvL2J1aWxkL2NvbmZp
Zy9hcm0uZ25pIikKIGltcG9ydCgiLy9idWlsZC9jb25maWcvZmVhdHVyZXMuZ25pIikKIGltcG9y
dCgiLy9idWlsZC9jb25maWcvbWlwcy5nbmkiKQogaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9zYW5p
dGl6ZXJzL3Nhbml0aXplcnMuZ25pIikKK2ltcG9ydCgiLy9idWlsZC9jb25maWcvc3lzcm9vdC5n
bmkiKQogaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy91aS5nbmkiKQogaW1wb3J0KCIvL2J1aWxkX292
ZXJyaWRlcy9idWlsZC5nbmkiKQogCkBAIC0zNSw2ICszNiwxMCBAQCBpZiAoaXNfbWFjKSB7CiB9
CiAKIGRlY2xhcmVfYXJncygpIHsKKyAgIyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSB3aWxsIG1ha2Ug
UlRDX0VYUE9SVCAoc2VlIHJ0Y19iYXNlL3N5c3RlbS9ydGNfZXhwb3J0LmgpCisgICMgZXhwYW5k
IHRvIGNvZGUgdGhhdCB3aWxsIG1hbmFnZSBzeW1ib2xzIHZpc2liaWxpdHkuCisgIHJ0Y19lbmFi
bGVfc3ltYm9sX2V4cG9ydCA9IGZhbHNlCisKICAgIyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSB3aWxs
IGRlZmluZSBXRUJSVENfRVhDTFVERV9GSUVMRF9UUklBTF9ERUZBVUxUIHdoaWNoCiAgICMgd2ls
bCB0ZWxsIHRoZSBwcmUtcHJvY2Vzc29yIHRvIHJlbW92ZSB0aGUgZGVmYXVsdCBkZWZpbml0aW9u
IG9mIHN5bWJvbHMKICAgIyBuZWVkZWQgdG8gdXNlIGZpZWxkX3RyaWFsLiBJbiB0aGF0IGNhc2Ug
YSBuZXcgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gYmUKQEAgLTEwMyw2ICsxMDgsOSBAQCBkZWNs
YXJlX2FyZ3MoKSB7CiAgICMgU2V0IHRoaXMgdG8gZmFsc2UgdG8gc2tpcCBidWlsZGluZyBjb2Rl
IHRoYXQgcmVxdWlyZXMgWDExLgogICBydGNfdXNlX3gxMSA9IHVzZV94MTEKIAorICAjIFNldCB0
aGlzIHRvIHVzZSBQaXBlV2lyZSBvbiB0aGUgV2F5bGFuZCBkaXNwbGF5IHNlcnZlci4KKyAgcnRj
X3VzZV9waXBld2lyZSA9IGZhbHNlCisKICAgIyBFbmFibGUgdG8gdXNlIHRoZSBNb3ppbGxhIGlu
dGVybmFsIHNldHRpbmdzLgogICBidWlsZF93aXRoX21vemlsbGEgPSBmYWxzZQogCkBAIC0yMjUs
NyArMjMzLDggQEAgcnRjX2xpYnZweF9kaXIgPSAiLy90aGlyZF9wYXJ0eS9saWJ2cHgiCiBydGNf
b3B1c19kaXIgPSAiLy90aGlyZF9wYXJ0eS9vcHVzIgogCiAjIERlc2t0b3AgY2FwdHVyZXIgaXMg
c3VwcG9ydGVkIG9ubHkgb24gV2luZG93cywgT1NYIGFuZCBMaW51eC4KLXJ0Y19kZXNrdG9wX2Nh
cHR1cmVfc3VwcG9ydGVkID0gaXNfd2luIHx8IGlzX21hYyB8fCAoaXNfbGludXggJiYgcnRjX3Vz
ZV94MTEpCitydGNfZGVza3RvcF9jYXB0dXJlX3N1cHBvcnRlZCA9CisgICAgaXNfd2luIHx8IGlz
X21hYyB8fCAoaXNfbGludXggJiYgKHJ0Y191c2VfeDExIHx8IHJ0Y191c2VfcGlwZXdpcmUpKQog
CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlbXBsYXRlcwpAQCAtNjQ5LDYgKzY1OCw4IEBA
IGlmIChpc19pb3MpIHsKICAgICB9CiAgIH0KIAorICAjIFRPRE86IEdlbmVyYXRlIG1vZHVsZS5t
b2R1bGVtYXAgZmlsZSB0byBlbmFibGUgdXNlIGluIFN3aWZ0CisgICMgcHJvamVjdHMuIFNlZSAi
bWFjX2ZyYW1ld29ya19idW5kbGVfd2l0aF91bWJyZWxsYV9oZWFkZXIiLgogICB0ZW1wbGF0ZSgi
aW9zX2ZyYW1ld29ya19idW5kbGVfd2l0aF91bWJyZWxsYV9oZWFkZXIiKSB7CiAgICAgZm9yd2Fy
ZF92YXJpYWJsZXNfZnJvbShpbnZva2VyLCBbICJvdXRwdXRfbmFtZSIgXSkKICAgICB1bWJyZWxs
YV9oZWFkZXJfcGF0aCA9CkBAIC02OTksMTIgKzcxMCwxNyBAQCBpZiAoaXNfbWFjKSB7CiAgICAg
Zm9yd2FyZF92YXJpYWJsZXNfZnJvbShpbnZva2VyLCBbICJvdXRwdXRfbmFtZSIgXSkKICAgICB0
aGlzX3RhcmdldF9uYW1lID0gdGFyZ2V0X25hbWUKICAgICB1bWJyZWxsYV9oZWFkZXJfcGF0aCA9
ICIkdGFyZ2V0X2dlbl9kaXIvdW1icmVsbGFfaGVhZGVyLyRvdXRwdXRfbmFtZS5oIgorICAgIG1v
ZHVsZW1hcF9wYXRoID0gIiR0YXJnZXRfZ2VuX2Rpci9Nb2R1bGVzL21vZHVsZS5tb2R1bGVtYXAi
CiAKICAgICBtYWNfZnJhbWV3b3JrX2J1bmRsZSh0YXJnZXRfbmFtZSkgewogICAgICAgZm9yd2Fy
ZF92YXJpYWJsZXNfZnJvbShpbnZva2VyLCAiKiIsIFtdKQogCiAgICAgICBmcmFtZXdvcmtfdmVy
c2lvbiA9ICJBIgotICAgICAgZnJhbWV3b3JrX2NvbnRlbnRzID0gWyAiSGVhZGVycyIgXQorICAg
ICAgZnJhbWV3b3JrX2NvbnRlbnRzID0gWworICAgICAgICAiSGVhZGVycyIsCisgICAgICAgICJN
b2R1bGVzIiwKKyAgICAgICAgIlJlc291cmNlcyIsCisgICAgICBdCiAKICAgICAgIGxkZmxhZ3Mg
PSBbCiAgICAgICAgICItYWxsX2xvYWQiLApAQCAtNzE0LDcgKzczMCw5IEBAIGlmIChpc19tYWMp
IHsKIAogICAgICAgZGVwcyArPSBbCiAgICAgICAgICI6Y29weV9mcmFtZXdvcmtfaGVhZGVyc18k
dGhpc190YXJnZXRfbmFtZSIsCisgICAgICAgICI6Y29weV9tb2R1bGVtYXBfJHRoaXNfdGFyZ2V0
X25hbWUiLAogICAgICAgICAiOmNvcHlfdW1icmVsbGFfaGVhZGVyXyR0aGlzX3RhcmdldF9uYW1l
IiwKKyAgICAgICAgIjptb2R1bGVtYXBfJHRoaXNfdGFyZ2V0X25hbWUiLAogICAgICAgICAiOnVt
YnJlbGxhX2hlYWRlcl8kdGhpc190YXJnZXRfbmFtZSIsCiAgICAgICBdCiAgICAgfQpAQCAtNzI3
LDYgKzc0NSwzMSBAQCBpZiAoaXNfbWFjKSB7CiAgICAgICBdCiAgICAgfQogCisgICAgYWN0aW9u
KCJtb2R1bGVtYXBfJHRoaXNfdGFyZ2V0X25hbWUiKSB7CisgICAgICBzY3JpcHQgPSAiLy90b29s
c193ZWJydGMvaW9zL2dlbmVyYXRlX21vZHVsZW1hcC5weSIKKyAgICAgIGFyZ3MgPSBbCisgICAg
ICAgICItLW91dCIsCisgICAgICAgIHJlYmFzZV9wYXRoKG1vZHVsZW1hcF9wYXRoLCByb290X2J1
aWxkX2RpciksCisgICAgICAgICItLW5hbWUiLAorICAgICAgICBvdXRwdXRfbmFtZSwKKyAgICAg
IF0KKyAgICAgIG91dHB1dHMgPSBbCisgICAgICAgIG1vZHVsZW1hcF9wYXRoLAorICAgICAgXQor
ICAgIH0KKworICAgIGJ1bmRsZV9kYXRhKCJjb3B5X21vZHVsZW1hcF8kdGhpc190YXJnZXRfbmFt
ZSIpIHsKKyAgICAgIHNvdXJjZXMgPSBbCisgICAgICAgIG1vZHVsZW1hcF9wYXRoLAorICAgICAg
XQorICAgICAgb3V0cHV0cyA9IFsKKyAgICAgICAgInt7YnVuZGxlX2NvbnRlbnRzX2Rpcn19L01v
ZHVsZXMvbW9kdWxlLm1vZHVsZW1hcCIsCisgICAgICBdCisgICAgICBkZXBzID0gWworICAgICAg
ICAiOm1vZHVsZW1hcF8kdGhpc190YXJnZXRfbmFtZSIsCisgICAgICBdCisgICAgfQorCiAgICAg
YWN0aW9uKCJ1bWJyZWxsYV9oZWFkZXJfJHRoaXNfdGFyZ2V0X25hbWUiKSB7CiAgICAgICBmb3J3
YXJkX3ZhcmlhYmxlc19mcm9tKGludm9rZXIsIFsgInNvdXJjZXMiIF0pCiAKQEAgLTc2OSwxNCAr
ODEyLDE0IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInZpc2liaWxpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQogCi0gICAg
ICBqYXZhY19hcmdzID0gW10KKyAgICAgIGVycm9ycHJvbmVfYXJncyA9IFtdCiAKICAgICAgICMg
VHJlYXQgd2FybmluZ3MgYXMgZXJyb3JzLgotICAgICAgamF2YWNfYXJncyArPSBbICItV2Vycm9y
IiBdCisgICAgICBlcnJvcnByb25lX2FyZ3MgKz0gWyAiLVdlcnJvciIgXQogCiAgICAgICAjIFRP
RE8oY3JidWcuY29tLzgyNDY3OSk6IEZpbmQgb3V0IHdoeSB0aGlzIGZhaWxzIGluIENocm9taXVt
CiAgICAgICBpZiAoIWJ1aWxkX3dpdGhfY2hyb21pdW0pIHsKLSAgICAgICAgamF2YWNfYXJncyAr
PSBbCisgICAgICAgIGVycm9ycHJvbmVfYXJncyArPSBbCiAgICAgICAgICAgIi1YZXA6UGFyYW1l
dGVyTm90TnVsbGFibGU6RVJST1IiLAogICAgICAgICAgICItWGVwOkZpZWxkTWlzc2luZ051bGxh
YmxlOkVSUk9SIiwKICAgICAgICAgICAiLVhlcDpSZXR1cm5NaXNzaW5nTnVsbGFibGU6RVJST1Ii
LApAQCAtNzg0LDggKzgyNyw4IEBAIGlmIChpc19hbmRyb2lkKSB7CiAgICAgICB9CiAKICAgICAg
ICMgQWRkIGFueSBhcmd1bWVudHMgZGVmaW5lZCBieSB0aGUgaW52b2tlci4KLSAgICAgIGlmIChk
ZWZpbmVkKGludm9rZXIuamF2YWNfYXJncykpIHsKLSAgICAgICAgamF2YWNfYXJncyArPSBpbnZv
a2VyLmphdmFjX2FyZ3MKKyAgICAgIGlmIChkZWZpbmVkKGludm9rZXIuZXJyb3Jwcm9uZV9hcmdz
KSkgeworICAgICAgICBlcnJvcnByb25lX2FyZ3MgKz0gaW52b2tlci5lcnJvcnByb25lX2FyZ3MK
ICAgICAgIH0KIAogICAgICAgaWYgKCFkZWZpbmVkKGRlcHMpKSB7CkBAIC04MDksMTEgKzg1Miwx
MSBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQog
CiAgICAgICAjIFRyZWF0IHdhcm5pbmdzIGFzIGVycm9ycy4KLSAgICAgIGphdmFjX2FyZ3MgPSBb
ICItV2Vycm9yIiBdCisgICAgICBlcnJvcnByb25lX2FyZ3MgPSBbICItV2Vycm9yIiBdCiAKICAg
ICAgICMgVE9ETyhjcmJ1Zy5jb20vODI0Njc5KTogRmluZCBvdXQgd2h5IHRoaXMgZmFpbHMgaW4g
Q2hyb21pdW0KICAgICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewotICAgICAgICBqYXZh
Y19hcmdzICs9IFsKKyAgICAgICAgZXJyb3Jwcm9uZV9hcmdzICs9IFsKICAgICAgICAgICAiLVhl
cDpQYXJhbWV0ZXJOb3ROdWxsYWJsZTpFUlJPUiIsCiAgICAgICAgICAgIi1YZXA6RmllbGRNaXNz
aW5nTnVsbGFibGU6RVJST1IiLAogICAgICAgICAgICItWGVwOlJldHVybk1pc3NpbmdOdWxsYWJs
ZTpFUlJPUiIsCkBAIC04NDEsMTEgKzg4NCwxMSBAQCBpZiAoaXNfYW5kcm9pZCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQogCiAgICAgICAjIFRyZWF0IHdhcm5pbmdzIGFzIGVy
cm9ycy4KLSAgICAgIGphdmFjX2FyZ3MgPSBbICItV2Vycm9yIiBdCisgICAgICBlcnJvcnByb25l
X2FyZ3MgPSBbICItV2Vycm9yIiBdCiAKICAgICAgICMgVE9ETyhjcmJ1Zy5jb20vODI0Njc5KTog
RmluZCBvdXQgd2h5IHRoaXMgZmFpbHMgaW4gQ2hyb21pdW0KICAgICAgIGlmICghYnVpbGRfd2l0
aF9jaHJvbWl1bSkgewotICAgICAgICBqYXZhY19hcmdzICs9IFsKKyAgICAgICAgZXJyb3Jwcm9u
ZV9hcmdzICs9IFsKICAgICAgICAgICAiLVhlcDpQYXJhbWV0ZXJOb3ROdWxsYWJsZTpFUlJPUiIs
CiAgICAgICAgICAgIi1YZXA6RmllbGRNaXNzaW5nTnVsbGFibGU6RVJST1IiLAogICAgICAgICAg
ICItWGVwOlJldHVybk1pc3NpbmdOdWxsYWJsZTpFUlJPUiIsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvV2ViS2l0LzAwMDEtbGlid2VicnRjLWNoYW5nZXMucGF0Y2gg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvV2ViS2l0LzAwMDEtbGlid2VicnRjLWNoYW5n
ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMDEzNGJiMmQxYTBmMDQ0
NjE2NzhlMWY0YmQ1OGJkNzRmYWVmZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dlYktpdC8wMDAxLWxp
YndlYnJ0Yy1jaGFuZ2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA4MiArMCwwIEBACi1G
cm9tIDM4YTgzODI4NDU1MjcxMWQ2MjI4ZGI5YmFiMmRlYzcyODQwMjA5OGQgTW9uIFNlcCAxNyAw
MDowMDowMCAyMDAxCi1Gcm9tOiBZb3Vlbm4gRmFibGV0IDx5b3Vlbm5AYXBwbGUuY29tPgotRGF0
ZTogTW9uLCA4IE9jdCAyMDE4IDEwOjM4OjEyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBs
aWJ3ZWJydGMgY2hhbmdlcwotCi0tLS0KLSAuLi4vYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5j
b2Rlcl9pbGJjLmNjICAgfCAgIDIgKy0KLSAuLi4vbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBp
L21lZGlhdHlwZXMuY2MgfCAgIDQgKy0KLSAuLi4vU291cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9y
ZXNhbXBsZS5jYyAgICAgfCAgIDQgKy0KLSAuLi4vU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8v
d2F2X2ZpbGUuY2MgICAgfCAgIDQgKy0KLSAuLi4vd2VicnRjL2NvbW1vbl92aWRlby92aWRlb19m
cmFtZV9idWZmZXIuY2MgfCAgIDIgKy0KLSAuLi4vbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9y
ZW50X2FfY29kZWMuY2MgfCAgIDQgKy0KLSAuLi4vY29kZWNzL2NuZy9hdWRpb19lbmNvZGVyX2Nu
Zy5jYyAgICAgICAgICAgfCAgIDIgKy0KLSAuLi4vY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9p
bGJjLmNjICAgICAgICAgfCAgIDQgKy0KLSAuLi4vbmV0ZXEvdG9vbHMvcnRwX2ZpbGVfc291cmNl
LmNjICAgICAgICAgICAgfCAgIDIgKy0KLSAuLi4vU291cmNlL3dlYnJ0Yy9wMnAvYmFzZS90Y3Bw
b3J0LmNjICAgICAgICAgfCAgMTAgKwotIC4uLi9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9i
dW5kbGVmaWx0ZXIuaCB8ICAgMiArLQotIC4uLi9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0
aW9uZmFjdG9yeS5jYyB8ICAgNCArLQotIC4uLi93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZl
cnNpb24uY2MgICAgICB8ICAgMiArLQotIC4uLi9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9jaGVja3MuaCB8ICAgNiArLQotIC4uLi9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9mbGFncy5jYyB8ICAgNiArLQotIC4uLi9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvY2F0
aW9uLmggICAgICAgICB8ICAgMiArLQotIC4uLi9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dp
bmcuY2MgICAgICAgICB8ICA1NCArKy0KLSAuLi4vd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmdfdW5p
dHRlc3QuY2MgICAgICAgfCAgIDIgKy0KLSAuLi4vU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9uZXZl
cl9kZXN0cm95ZWQuaCAgfCAgNjkgKysrKwotIC4uLi9ydGNfYmFzZS9udW1lcmljcy9zYWZlX2Nv
bnZlcnNpb25zLmggICAgICB8ICAgNCArLQotIC4uLi93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNl
cnRpZmljYXRlLmNjICAgICB8ICAgOCArLQotIC4uLi9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0
cmluZ2l6ZV9tYWNyb3MuaCB8ICAgNCArLQotIC4uLi93ZWJydGMvcnRjX2Jhc2UvdmlydHVhbHNv
Y2tldHNlcnZlci5jYyAgICB8ICAgMyArLQotIC4uLi9QZWVyQ29ubmVjdGlvbi9SVENIMjY0UHJv
ZmlsZUxldmVsSWQubW0gICB8ICA1OCArKysKLSAuLi4vcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2Rl
ZEltYWdlK1ByaXZhdGUubW0gfCAgIDQgKy0KLSAuLi4vcGVlcmNvbm5lY3Rpb24vUlRDUnRwRW5j
b2RpbmdQYXJhbWV0ZXJzLmggfCAgIDEgKwotIC4uLi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQ
cml2YXRlLmggICAgICAgICB8ICAgNyArCi0gLi4uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1By
aXZhdGUubW0gICAgICAgIHwgIDUyICsrLQotIC4uLi9hcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9D
b2RlY0NvbnN0YW50cy5tbSB8ICAgNCArLQotIC4uLi9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENW
aWRlb0VuY29kZXJWUDguaCB8ICAgMSArCi0gLi4uL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29k
ZXIubW0gICAgICAgICAgIHwgICA1ICsKLSAuLi4vdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2
ZUk0MjBCdWZmZXIuaCAgfCAgIDEgKwotIC4uLi9SVENOYXRpdmVNdXRhYmxlSTQyMEJ1ZmZlci5o
ICAgICAgICAgICAgICB8ICAgMSArCi0gLi4uL3Nkay9vYmpjL2Jhc2UvUlRDQ29kZWNTcGVjaWZp
Y0luZm8uaCAgICAgIHwgICAxICsKLSAuLi4vd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2Rl
ZEltYWdlLmggICAgfCAgIDIgKwotIC4uLi93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVk
SW1hZ2UubSAgICB8ICAgMSArCi0gLi4uL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0k0MjBCdWZm
ZXIuaCAgICAgIHwgICAxICsKLSAuLi4vc2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0aW9u
SGVhZGVyLmggfCAgIDEgKwotIC4uLi9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25I
ZWFkZXIubSB8ICAgMyArLQotIC4uLi93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0NvZGVj
SW5mby5oICB8ICAgMSArCi0gLi4uL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2Rl
ci5oICAgIHwgICAxICsKLSAuLi4vc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXJGYWN0b3J5
LmggICAgfCAgIDEgKwotIC4uLi93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIu
aCAgICB8ICAgOCArLQotIC4uLi9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlckZhY3Rvcnku
aCAgICB8ICAgMSArCi0gLi4uL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMu
aCAgIHwgICAxICsKLSAuLi4vc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJTZXR0aW5ncy5o
ICAgfCAgIDYgKwotIC4uLi93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lLmggICAg
ICB8ICAgMSArCi0gLi4uL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oICAgICAg
IHwgICAxICsKLSAuLi4vdmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0LmggICAg
fCAgIDMgKy0KLSAuLi4vUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaCAgICAgICAgICAg
fCAgIDEgKwotIC4uLi9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5oICAgICAgICAgICB8
ICAgMSArCi0gLi4uL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5oICAgICAgIHwg
ICAxICsKLSAuLi4vdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tICAgICAgfCAg
MTYgKy0KLSAuLi4vdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQuaCAgfCAg
IDEgKwotIC4uLi92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0LmggICAgICAgICB8ICAg
MSArCi0gLi4uL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0LmggIHwgICAx
ICsKLSAuLi4vdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5oICAgICAgICAgfCAgIDEg
KwotIC4uLi92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tICAgICAgICB8IDM4MiAr
KysrKysrKysrKysrKy0tLS0KLSAuLi4vb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBl
cnMuY2MgICAgfCAgMTYgKy0KLSAuLi4vc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9o
ZWxwZXJzLmggfCAgMTAgKy0KLSAuLi4vdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ0NWUGl4ZWxCdWZm
ZXIuaCAgICAgfCAgIDEgKwotIC4uLi9uYXRpdmUvc3JjL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0
b3J5Lm1tICB8ICAgNiArCi0gNjIgZmlsZXMgY2hhbmdlZCwgNjM3IGluc2VydGlvbnMoKyksIDE3
MiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV2ZXJfZGVzdHJveWVkLmgKLSBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvRnJhbWV3b3JrL0NsYXNzZXMvUGVlckNvbm5lY3Rpb24vUlRDSDI2NFByb2ZpbGVMZXZl
bElkLm1tCi0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9hcGkvYXVkaW9fY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9p
bGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYwotaW5kZXggZWZjZWYzODJmZjcuLjJhZTc1NDc0Y2Nk
IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL2F1ZGlvX2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYwotKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9pbGJj
L2F1ZGlvX2VuY29kZXJfaWxiYy5jYwotQEAgLTMzLDcgKzMzLDcgQEAgaW50IEdldElsYmNCaXRy
YXRlKGludCBwdGltZSkgewotICAgICAgIC8vIDUwIGJ5dGVzIHBlciBmcmFtZSBvZiAzMCBtcyA9
PiAoYXBwcm94KSAxMzMzMyBiaXRzL3MuCi0gICAgICAgcmV0dXJuIDEzMzMzOwotICAgICBkZWZh
dWx0OgotLSAgICAgIEZBVEFMKCk7Ci0rICAgICAgUlRDX0ZBVEFMKCk7Ci0gICB9Ci0gfQotIH0g
IC8vIG5hbWVzcGFjZQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL2FwaS9tZWRpYXR5cGVzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvYXBpL21lZGlhdHlwZXMuY2MKLWluZGV4IDU5OTU0MmRiMDhmLi4x
NDBkMGFlOTYyNSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2FwaS9tZWRpYXR5cGVzLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWF0eXBlcy5jYwotQEAgLTI4LDcgKzI4LDcgQEAg
c3RkOjpzdHJpbmcgTWVkaWFUeXBlVG9TdHJpbmcoTWVkaWFUeXBlIHR5cGUpIHsKLSAgICAgY2Fz
ZSBNRURJQV9UWVBFX0RBVEE6Ci0gICAgICAgcmV0dXJuIGtNZWRpYVR5cGVEYXRhOwotICAgfQot
LSAgRkFUQUwoKTsKLSsgIFJUQ19GQVRBTCgpOwotICAgLy8gTm90IHJlYWNoYWJsZTsgYXZvaWRz
IGNvbXBpbGUgd2FybmluZy4KLSAgIHJldHVybiAiIjsKLSB9Ci1AQCAtNDEsNyArNDEsNyBAQCBN
ZWRpYVR5cGUgTWVkaWFUeXBlRnJvbVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdHlwZV9zdHIp
IHsKLSAgIH0gZWxzZSBpZiAodHlwZV9zdHIgPT0ga01lZGlhVHlwZURhdGEpIHsKLSAgICAgcmV0
dXJuIE1FRElBX1RZUEVfREFUQTsKLSAgIH0KLS0gIEZBVEFMKCk7Ci0rICBSVENfRkFUQUwoKTsK
LSAgIC8vIE5vdCByZWFjaGFibGU7IGF2b2lkcyBjb21waWxlIHdhcm5pbmcuCi0gICByZXR1cm4g
c3RhdGljX2Nhc3Q8TWVkaWFUeXBlPigtMSk7Ci0gfQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4X3Jlc2FtcGxlLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVz
YW1wbGUuY2MKLWluZGV4IGVkYTcwYzdjMzc4Li45NzIyMmU5NDdhNCAxMDA2NDQKLS0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4X3Jlc2Ft
cGxlLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9h
dWRpby9yZW1peF9yZXNhbXBsZS5jYwotQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBSZW1peEFuZFJl
c2FtcGxlKGNvbnN0IGludDE2X3QqIHNyY19kYXRhLAotIAotICAgaWYgKHJlc2FtcGxlci0+SW5p
dGlhbGl6ZUlmTmVlZGVkKHNhbXBsZV9yYXRlX2h6LCBkc3RfZnJhbWUtPnNhbXBsZV9yYXRlX2h6
XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19wdHJfbnVtX2No
YW5uZWxzKSA9PSAtMSkgewotLSAgICBGQVRBTCgpIDw8ICJJbml0aWFsaXplSWZOZWVkZWQgZmFp
bGVkOiBzYW1wbGVfcmF0ZV9oeiA9ICIgPDwgc2FtcGxlX3JhdGVfaHoKLSsgICAgUlRDX0ZBVEFM
KCkgPDwgIkluaXRpYWxpemVJZk5lZWRlZCBmYWlsZWQ6IHNhbXBsZV9yYXRlX2h6ID0gIiA8PCBz
YW1wbGVfcmF0ZV9oegotICAgICAgICAgICAgIDw8ICIsIGRzdF9mcmFtZS0+c2FtcGxlX3JhdGVf
aHpfID0gIiA8PCBkc3RfZnJhbWUtPnNhbXBsZV9yYXRlX2h6XwotICAgICAgICAgICAgIDw8ICIs
IGF1ZGlvX3B0cl9udW1fY2hhbm5lbHMgPSAiIDw8IGF1ZGlvX3B0cl9udW1fY2hhbm5lbHM7Ci0g
ICB9Ci1AQCAtNzIsNyArNzIsNyBAQCB2b2lkIFJlbWl4QW5kUmVzYW1wbGUoY29uc3QgaW50MTZf
dCogc3JjX2RhdGEsCi0gICAgICAgcmVzYW1wbGVyLT5SZXNhbXBsZShhdWRpb19wdHIsIHNyY19s
ZW5ndGgsIGRzdF9mcmFtZS0+bXV0YWJsZV9kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBBdWRpb0ZyYW1lOjprTWF4RGF0YVNpemVTYW1wbGVzKTsKLSAgIGlmIChvdXRfbGVuZ3Ro
ID09IC0xKSB7Ci0tICAgIEZBVEFMKCkgPDwgIlJlc2FtcGxlIGZhaWxlZDogYXVkaW9fcHRyID0g
IiA8PCBhdWRpb19wdHIKLSsgICAgUlRDX0ZBVEFMKCkgPDwgIlJlc2FtcGxlIGZhaWxlZDogYXVk
aW9fcHRyID0gIiA8PCBhdWRpb19wdHIKLSAgICAgICAgICAgICA8PCAiLCBzcmNfbGVuZ3RoID0g
IiA8PCBzcmNfbGVuZ3RoCi0gICAgICAgICAgICAgPDwgIiwgZHN0X2ZyYW1lLT5tdXRhYmxlX2Rh
dGEoKSA9ICIgPDwgZHN0X2ZyYW1lLT5tdXRhYmxlX2RhdGEoKTsKLSAgIH0KLWRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8v
d2F2X2ZpbGUuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9j
b21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKLWluZGV4IDAwODg5MWY5Y2ZiLi4wMjA5ZjUyZDJjNyAx
MDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Nv
bW1vbl9hdWRpby93YXZfZmlsZS5jYwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjCi1AQCAtNTMsNyArNTMsNyBA
QCBXYXZSZWFkZXI6OldhdlJlYWRlcihydGM6OlBsYXRmb3JtRmlsZSBmaWxlKSB7Ci0gICAgIGlm
ICghcnRjOjpDbG9zZVBsYXRmb3JtRmlsZShmaWxlKSkgewotICAgICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJDYW4ndCBjbG9zZSBmaWxlLiI7Ci0gICAgIH0KLS0gICAgRkFUQUwoKSA8PCAiQ291
bGQgbm90IG9wZW4gd2F2IGZpbGUgZm9yIHJlYWRpbmcuIjsKLSsgICAgUlRDX0ZBVEFMKCkgPDwg
IkNvdWxkIG5vdCBvcGVuIHdhdiBmaWxlIGZvciByZWFkaW5nLiI7Ci0gICB9Ci0gCi0gICBSZWFk
YWJsZVdhdkZpbGUgcmVhZGFibGUoZmlsZV9oYW5kbGVfKTsKLUBAIC0xMzgsNyArMTM4LDcgQEAg
V2F2V3JpdGVyOjpXYXZXcml0ZXIocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSwKLSAgICAgaWYgKCFy
dGM6OkNsb3NlUGxhdGZvcm1GaWxlKGZpbGUpKSB7Ci0gICAgICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIkNhbid0IGNsb3NlIGZpbGUuIjsKLSAgICAgfQotLSAgICBGQVRBTCgpIDw8ICJDb3VsZCBu
b3Qgb3BlbiB3YXYgZmlsZSBmb3Igd3JpdGluZy4iOwotKyAgICBSVENfRkFUQUwoKSA8PCAiQ291
bGQgbm90IG9wZW4gd2F2IGZpbGUgZm9yIHdyaXRpbmcuIjsKLSAgIH0KLSAKLSAgIFJUQ19DSEVD
SyhDaGVja1dhdlBhcmFtZXRlcnMobnVtX2NoYW5uZWxzXywgc2FtcGxlX3JhdGVfLCBrV2F2Rm9y
bWF0LAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL2NvbW1vbl92aWRlby92aWRlb19mcmFtZV9idWZmZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVy
LmNjCi1pbmRleCAyY2QwYjI5MGYxNS4uYmUwYjQ5MjdiYmUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJh
bWVfYnVmZmVyLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9jb21tb25fdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmNjCi1AQCAtMzIzLDcgKzMyMyw3
IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjxQbGFuYXJZdXZCdWZmZXI+IFdyYXBZdXZCdWZmZXIoCi0g
ICAgICAgcmV0dXJuIFdyYXBJNDQ0QnVmZmVyKHdpZHRoLCBoZWlnaHQsIHlfcGxhbmUsIHlfc3Ry
aWRlLCB1X3BsYW5lLCB1X3N0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdl9w
bGFuZSwgdl9zdHJpZGUsIG5vX2xvbmdlcl91c2VkKTsKLSAgICAgZGVmYXVsdDoKLS0gICAgICBG
QVRBTCgpIDw8ICJVbmV4cGVjdGVkIGZyYW1lIGJ1ZmZlciB0eXBlLiI7Ci0rICAgICAgUlRDX0ZB
VEFMKCkgPDwgIlVuZXhwZWN0ZWQgZnJhbWUgYnVmZmVyIHR5cGUuIjsKLSAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgIH0KLSB9Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9hY20yL3JlbnRfYV9jb2RlYy5jYwotaW5kZXggMGE5Y2UxMTdlMmIuLjQ1ZDc4
ZDc0YTVkIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvYWNtMi9yZW50X2FfY29kZWMuY2MKLSsrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29k
aW5nL2FjbTIvcmVudF9hX2NvZGVjLmNjCi1AQCAtMjExLDcgKzIxMSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0VuY29kZXI+IENyZWF0ZUNuZ0VuY29kZXIoCi0gICAgICAgY29uZmlnLnZhZF9t
b2RlID0gVmFkOjprVmFkVmVyeUFnZ3Jlc3NpdmU7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1
bHQ6Ci0tICAgICAgRkFUQUwoKTsKLSsgICAgICBSVENfRkFUQUwoKTsKLSAgIH0KLSAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9FbmNvZGVyPihuZXcgQXVkaW9FbmNvZGVyQ25nKHN0ZDo6
bW92ZShjb25maWcpKSk7Ci0gfQotQEAgLTIyNiw3ICsyMjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9EZWNvZGVyPiBDcmVhdGVJc2FjRGVjb2RlcigKLSAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9EZWNvZGVyPigKLSAgICAgICBuZXcgQXVkaW9EZWNvZGVySXNhY0Zsb2F0SW1wbChz
YW1wbGVfcmF0ZV9oeiwgYndpbmZvKSk7Ci0gI2Vsc2UKLS0gIEZBVEFMKCkgPDwgImlTQUMgaXMg
bm90IHN1cHBvcnRlZC4iOwotKyAgUlRDX0ZBVEFMKCkgPDwgImlTQUMgaXMgbm90IHN1cHBvcnRl
ZC4iOwotICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RlY29kZXI+KCk7Ci0gI2VuZGlm
Ci0gfQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlv
X2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjCi1pbmRleCA0Y2RhMzQwMWZh
Mi4uMDU1MTkwNDk3YTUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29k
ZXJfY25nLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjCi1A
QCAtMTM5LDcgKzEzOSw3IEBAIEF1ZGlvRW5jb2Rlcjo6RW5jb2RlZEluZm8gQXVkaW9FbmNvZGVy
Q25nOjpFbmNvZGVJbXBsKAotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgVmFkOjpr
RXJyb3I6IHsKLS0gICAgICBGQVRBTCgpOyAgLy8gRmFpbHMgb25seSBpZiBmZWQgaW52YWxpZCBk
YXRhLgotKyAgICAgIFJUQ19GQVRBTCgpOyAgLy8gRmFpbHMgb25seSBpZiBmZWQgaW52YWxpZCBk
YXRhLgotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICB9Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29k
ZWNzL2lsYmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9f
ZW5jb2Rlcl9pbGJjLmNjCi1pbmRleCA4NDY5NWUzNzYzMC4uZGFlOTU2YjMwYzAgMTAwNjQ0Ci0t
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX2NvZGluZy9jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKLSsrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5n
L2NvZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYwotQEAgLTQwLDcgKzQwLDcgQEAgaW50
IEdldElsYmNCaXRyYXRlKGludCBwdGltZSkgewotICAgICAgIC8vIDUwIGJ5dGVzIHBlciBmcmFt
ZSBvZiAzMCBtcyA9PiAoYXBwcm94KSAxMzMzMyBiaXRzL3MuCi0gICAgICAgcmV0dXJuIDEzMzMz
OwotICAgICBkZWZhdWx0OgotLSAgICAgIEZBVEFMKCk7Ci0rICAgICAgUlRDX0ZBVEFMKCk7Ci0g
ICB9Ci0gfQotIAotQEAgLTE0Nyw3ICsxNDcsNyBAQCBzaXplX3QgQXVkaW9FbmNvZGVySWxiY0lt
cGw6OlJlcXVpcmVkT3V0cHV0U2l6ZUJ5dGVzKCkgY29uc3QgewotICAgICBjYXNlIDY6Ci0gICAg
ICAgcmV0dXJuIDIgKiA1MDsKLSAgICAgZGVmYXVsdDoKLS0gICAgICBGQVRBTCgpOwotKyAgICAg
IFJUQ19GQVRBTCgpOwotICAgfQotIH0KLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29s
cy9ydHBfZmlsZV9zb3VyY2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9uZXRlcS90b29scy9ydHBfZmlsZV9zb3VyY2Uu
Y2MKLWluZGV4IDgwNmJiYTdhOWZlLi43YmY3ZDUyMDgzYyAxMDA2NDQKLS0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL25l
dGVxL3Rvb2xzL3J0cF9maWxlX3NvdXJjZS5jYwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvbmV0ZXEvdG9vbHMvcnRw
X2ZpbGVfc291cmNlLmNjCi1AQCAtODksNyArODksNyBAQCBib29sIFJ0cEZpbGVTb3VyY2U6Ok9w
ZW5GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlX25hbWUpIHsKLSAgICAgcmV0dXJuIHRydWU7
Ci0gICBydHBfcmVhZGVyXy5yZXNldChSdHBGaWxlUmVhZGVyOjpDcmVhdGUoUnRwRmlsZVJlYWRl
cjo6a1BjYXAsIGZpbGVfbmFtZSkpOwotICAgaWYgKCFydHBfcmVhZGVyXykgewotLSAgICBGQVRB
TCgpIDw8ICJDb3VsZG4ndCBvcGVuIGlucHV0IGZpbGUgYXMgZWl0aGVyIGEgcnRwZHVtcCBvciAu
cGNhcC4gTm90ZSAiCi0rICAgIFJUQ19GQVRBTCgpIDw8ICJDb3VsZG4ndCBvcGVuIGlucHV0IGZp
bGUgYXMgZWl0aGVyIGEgcnRwZHVtcCBvciAucGNhcC4gTm90ZSAiCi0gICAgICAgICAgICAgICAg
InRoYXQgLnBjYXBuZyBpcyBub3Qgc3VwcG9ydGVkLiI7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsK
LWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
MnAvYmFzZS90Y3Bwb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYwotaW5kZXggZDA3MGY2ZWNlZTguLmM2NmM3MzA3Mzc1
IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cDJwL2Jhc2UvdGNwcG9ydC5jYwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYwotQEAgLTM1MSwxMSArMzUxLDIxIEBAIFRD
UENvbm5lY3Rpb246OlRDUENvbm5lY3Rpb24oVENQUG9ydCogcG9ydCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiLCBwb3J0KCkgTmV0d29yazoiIDw8IHBvcnQtPk5ldHdvcmsoKS0+VG9T
dHJpbmcoKTsKLSAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8cnRjOjpJbnRlcmZhY2VBZGRyZXNzPiYg
ZGVzaXJlZF9hZGRyZXNzZXMgPQotICAgICAgICAgcG9ydF8tPk5ldHdvcmsoKS0+R2V0SVBzKCk7
Ci0rCi0rI2lmIGRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKLSsgICAgIFJUQ19EQ0hFQ0so
c29ja2V0LT5HZXRMb2NhbEFkZHJlc3MoKS5Jc0xvb3BiYWNrSVAoKSB8fAotKyAgICAgICAgICAg
ICAgICAoc3RkOjpmaW5kX2lmKGRlc2lyZWRfYWRkcmVzc2VzLmJlZ2luKCksIGRlc2lyZWRfYWRk
cmVzc2VzLmVuZCgpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXNdKGNvbnN0
IHJ0Yzo6SW50ZXJmYWNlQWRkcmVzcyYgYWRkcikgewotKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc29ja2V0Xy0+R2V0TG9jYWxBZGRyZXNzKCkuaXBhZGRyKCkgPT0KLSsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHI7Ci0rICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KSAhPSBkZXNpcmVkX2FkZHJlc3Nlcy5lbmQoKSkpOwotKyAjZWxz
ZQotICAgICBSVENfRENIRUNLKHN0ZDo6ZmluZF9pZihkZXNpcmVkX2FkZHJlc3Nlcy5iZWdpbigp
LCBkZXNpcmVkX2FkZHJlc3Nlcy5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W3RoaXNdKGNvbnN0IHJ0Yzo6SW50ZXJmYWNlQWRkcmVzcyYgYWRkcikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzb2NrZXRfLT5HZXRMb2NhbEFkZHJlc3MoKS5pcGFk
ZHIoKSA9PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAhPSBkZXNpcmVkX2FkZHJlc3Nlcy5lbmQoKSk7
Ci0rI2VuZGlmCi0gICAgIENvbm5lY3RTb2NrZXRTaWduYWxzKHNvY2tldCk7Ci0gICB9Ci0gfQot
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Bj
L2J1bmRsZWZpbHRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcGMvYnVuZGxlZmlsdGVyLmgKLWluZGV4IDdkZWNiYmE4YTRmLi5kZTQ3N2Y0NTdmMiAxMDA2
NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL2J1
bmRsZWZpbHRlci5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9idW5kbGVmaWx0ZXIuaAotQEAgLTE3LDcgKzE3LDcgQEAKLSAjaW5jbHVkZSA8dmVj
dG9yPgotIAotICNpbmNsdWRlICJtZWRpYS9iYXNlL3N0cmVhbXBhcmFtcy5oIgotLSNpbmNsdWRl
ICJydGNfYmFzZS9iYXNpY3R5cGVzLmgiCi0rLy8jaW5jbHVkZSAicnRjX2Jhc2UvYmFzaWN0eXBl
cy5oIgotIAotIG5hbWVzcGFjZSBjcmlja2V0IHsKLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3Rvcnku
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29u
bmVjdGlvbmZhY3RvcnkuY2MKLWluZGV4IGI3OGVkOGRiMWVlLi41M2Y0ZGE4NTE2ZSAxMDA2NDQK
LS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJj
b25uZWN0aW9uZmFjdG9yeS5jYwotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjCi1AQCAtMjU3LDcgKzI1Nyw3
IEBAIFJ0cENhcGFiaWxpdGllcyBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkdldFJ0cFNlbmRlckNh
cGFiaWxpdGllcygKLSAgICAgICByZXR1cm4gUnRwQ2FwYWJpbGl0aWVzKCk7Ci0gICB9Ci0gICAv
LyBOb3QgcmVhY2hlZDsgYXZvaWRzIGNvbXBpbGUgd2FybmluZy4KLS0gIEZBVEFMKCk7Ci0rICBS
VENfRkFUQUwoKTsKLSB9Ci0gCi0gUnRwQ2FwYWJpbGl0aWVzIFBlZXJDb25uZWN0aW9uRmFjdG9y
eTo6R2V0UnRwUmVjZWl2ZXJDYXBhYmlsaXRpZXMoCi1AQCAtMjg0LDcgKzI4NCw3IEBAIFJ0cENh
cGFiaWxpdGllcyBQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkdldFJ0cFJlY2VpdmVyQ2FwYWJpbGl0
aWVzKAotICAgICAgIHJldHVybiBSdHBDYXBhYmlsaXRpZXMoKTsKLSAgIH0KLSAgIC8vIE5vdCBy
ZWFjaGVkOyBhdm9pZHMgY29tcGlsZSB3YXJuaW5nLgotLSAgRkFUQUwoKTsKLSsgIFJUQ19GQVRB
TCgpOwotIH0KLSAKLSBydGM6OnNjb3BlZF9yZWZwdHI8QXVkaW9Tb3VyY2VJbnRlcmZhY2U+Ci1k
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cnRwcGFyYW1ldGVyc2NvbnZlcnNpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9ydHBwYXJhbWV0ZXJzY29udmVyc2lvbi5jYwotaW5kZXggYTU3MDY2
ZTRkYjAuLmU1MTliOWIwNmRlIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNpb24uY2MKLSsrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNj
b252ZXJzaW9uLmNjCi1AQCAtNjEsNyArNjEsNyBAQCBSVENFcnJvck9yPGNyaWNrZXQ6OkZlZWRi
YWNrUGFyYW0+IFRvQ3JpY2tldEZlZWRiYWNrUGFyYW0oCi0gICAgICAgcmV0dXJuIGNyaWNrZXQ6
OkZlZWRiYWNrUGFyYW0oY3JpY2tldDo6a1J0Y3BGYlBhcmFtVHJhbnNwb3J0Q2MpOwotICAgfQot
ICAgLy8gTm90IHJlYWNoZWQ7IGF2b2lkcyBjb21waWxlIHdhcm5pbmcuCi0tICBGQVRBTCgpOwot
KyAgUlRDX0ZBVEFMKCk7Ci0gfQotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBDPgotZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2No
ZWNrcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvY2hlY2tzLmgKLWluZGV4IDlkZTZkNDc1NzNjLi41Y2YwNjc5OTEwZSAxMDA2NDQKLS0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NoZWNr
cy5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9jaGVja3MuaAotQEAgLTgwLDcgKzgwLDcgQEAgUlRDX05PUkVUVVJOIHZvaWQgcnRjX0Zh
dGFsTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogbXNnKTsK
LSAvLyAgIG1lc3NhZ2VzIGlmIHRoZSBjb25kaXRpb24gZG9lc24ndCBob2xkLiBQcmVmZXIgdGhl
bSB0byByYXcgUlRDX0NIRUNLIGFuZAotIC8vICAgUlRDX0RDSEVDSy4KLSAvLwotLS8vIC0gRkFU
QUwoKSBhYm9ydHMgdW5jb25kaXRpb25hbGx5LgotKy8vIC0gUlRDX0ZBVEFMKCkgYWJvcnRzIHVu
Y29uZGl0aW9uYWxseS4KLSAvLwotIC8vIFRPRE8oYWptKTogSWRlYWxseSwgY2hlY2tzLmggd291
bGQgYmUgY29tYmluZWQgd2l0aCBsb2dnaW5nLmgsIGJ1dAotIC8vIGNvbnNvbGlkYXRpb24gd2l0
aCBzeXN0ZW1fd3JhcHBlcnMvbG9nZ2luZy5oIHNob3VsZCBoYXBwZW4gZmlyc3QuCi1AQCAtMzQ4
LDkgKzM0OCw5IEBAIGNsYXNzIEZhdGFsTG9nQ2FsbCBmaW5hbCB7Ci0gI2RlZmluZSBSVENfTk9U
UkVBQ0hFRCgpIFJUQ19EQ0hFQ0soUlRDX1VOUkVBQ0hBQkxFX0NPREVfSElUKQotIAotIC8vIFRP
RE8oYnVncy53ZWJydGMub3JnLzg0NTQpOiBBZGQgYW4gUlRDXyBwcmVmaXggb3IgcmVuYW1lIGRp
ZmZlcmVudGx5LgotLSNkZWZpbmUgRkFUQUwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0rI2RlZmluZSBSVENfRkFUQUwoKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICBydGM6OndlYnJ0
Y19jaGVja3NfaW1wbDo6RmF0YWxMb2dDYWxsPGZhbHNlPihfX0ZJTEVfXywgX19MSU5FX18sIFwK
LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGQVRBTCgp
IikgJiAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlJUQ19GQVRBTCgpIikgJiAgICAgICAgXAotICAgICAgIHJ0Yzo6d2VicnRjX2NoZWNr
c19pbXBsOjpMb2dTdHJlYW1lcjw+KCkKLSAKLSAvLyBQZXJmb3JtcyB0aGUgaW50ZWdlciBkaXZp
c2lvbiBhL2IgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4gQ0hFQ0tzIHRoYXQgdGhlCi1kaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
ZmxhZ3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNf
YmFzZS9mbGFncy5jYwotaW5kZXggNWIyODc5NGY2Y2EuLjRmMjk0NTk0YmQ0IDEwMDY0NAotLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxh
Z3MuY2MKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL2ZsYWdzLmNjCi1AQCAtODAsNyArODAsNyBAQCB2b2lkIEZsYWc6OlNldFRvRGVmYXVs
dCgpIHsKLSAgICAgICB2YXJpYWJsZV8tPnMgPSBkZWZhdWx0Xy5zOwotICAgICAgIHJldHVybjsK
LSAgIH0KLS0gIEZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotKyAgUlRDX0ZBVEFMKCkg
PDwgInVucmVhY2hhYmxlIGNvZGUiOwotIH0KLSAKLSBzdGF0aWMgY29uc3QgY2hhciogVHlwZTJT
dHJpbmcoRmxhZzo6VHlwZSB0eXBlKSB7Ci1AQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogVHlwZTJTdHJpbmcoRmxhZzo6VHlwZSB0eXBlKSB7Ci0gICAgIGNhc2UgRmxhZzo6U1RS
SU5HOgotICAgICAgIHJldHVybiAic3RyaW5nIjsKLSAgIH0KLS0gIEZBVEFMKCkgPDwgInVucmVh
Y2hhYmxlIGNvZGUiOwotKyAgUlRDX0ZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotIH0K
LSAKLSBzdGF0aWMgdm9pZCBQcmludEZsYWdWYWx1ZShGbGFnOjpUeXBlIHR5cGUsIEZsYWdWYWx1
ZSogcCkgewotQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgdm9pZCBQcmludEZsYWdWYWx1ZShG
bGFnOjpUeXBlIHR5cGUsIEZsYWdWYWx1ZSogcCkgewotICAgICAgIHByaW50ZigiJXMiLCBwLT5z
KTsKLSAgICAgICByZXR1cm47Ci0gICB9Ci0tICBGQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2Rl
IjsKLSsgIFJUQ19GQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSB9Ci0gCi0gdm9pZCBG
bGFnOjpQcmludChib29sIHByaW50X2N1cnJlbnRfdmFsdWUpIHsKLWRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9j
YXRpb24uaAotaW5kZXggNTEzYmMyNjM2NTEuLjcxOGQ5NTg5MzQ4IDEwMDY0NAotLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24u
aAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jh
c2UvbG9jYXRpb24uaAotQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgTG9jYXRpb24gewotICNkZWZp
bmUgUlRDX0ZST01fSEVSRSBSVENfRlJPTV9IRVJFX1dJVEhfRlVOQ1RJT04oX19GVU5DVElPTl9f
KQotIAotICNkZWZpbmUgUlRDX0ZST01fSEVSRV9XSVRIX0ZVTkNUSU9OKGZ1bmN0aW9uX25hbWUp
IFwKLS0gIDo6cnRjOjpMb2NhdGlvbihmdW5jdGlvbl9uYW1lLCBfX0ZJTEVfXyAiOiIgU1RSSU5H
SVpFKF9fTElORV9fKSkKLSsgIDo6cnRjOjpMb2NhdGlvbihmdW5jdGlvbl9uYW1lLCBfX0ZJTEVf
XyAiOiIgUlRDX1NUUklOR0laRShfX0xJTkVfXykpCi0gCi0gfSAgLy8gbmFtZXNwYWNlIHJ0Ywot
IAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL2xvZ2dpbmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmNjCi1pbmRleCAxMjlhODk3NDM5Ny4uNTg0NTZjNTk5
ZWMgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9sb2dnaW5nLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmNjCi1AQCAtMzYsNiArMzYsNyBAQCBzdGF0
aWMgY29uc3QgaW50IGtNYXhMb2dMaW5lU2l6ZSA9IDEwMjQgLSA2MDsKLSAjaW5jbHVkZSAicnRj
X2Jhc2UvY3JpdGljYWxzZWN0aW9uLmgiCi0gI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
LSAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmgiCi0rI2luY2x1ZGUg
InJ0Y19iYXNlL25ldmVyX2Rlc3Ryb3llZC5oIgotICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmdl
bmNvZGUuaCIKLSAjaW5jbHVkZSAicnRjX2Jhc2Uvc3RyaW5ncy9zdHJpbmdfYnVpbGRlci5oIgot
ICNpbmNsdWRlICJydGNfYmFzZS9zdHJpbmd1dGlscy5oIgotQEAgLTYyLDggKzYzLDEyIEBAIGNv
bnN0IGNoYXIqIEZpbGVuYW1lRnJvbVBhdGgoY29uc3QgY2hhciogZmlsZSkgewotICAgICByZXR1
cm4gKGVuZDEgPiBlbmQyKSA/IGVuZDEgKyAxIDogZW5kMiArIDE7Ci0gfQotIAotLS8vIEdsb2Jh
bCBsb2NrIGZvciBsb2cgc3Vic3lzdGVtLCBvbmx5IG5lZWRlZCB0byBzZXJpYWxpemUgYWNjZXNz
IHRvIHN0cmVhbXNfLgotLUNyaXRpY2FsU2VjdGlvbiBnX2xvZ19jcml0OwotKy8vIEdsb2JhbCBs
b2NrIGZvciBsb2cgc3Vic3lzdGVtLCBvbmx5IG5lZWRlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRv
IHN0cmVhbUxpc3QoKS4KLStDcml0aWNhbFNlY3Rpb24mIGxvZ0NyaXRpY2FsU2NvcGUoKSB7Ci0r
ICBzdGF0aWMgYXV0byBzY29wZSA9IG1ha2VOZXZlckRlc3Ryb3llZDw+KENyaXRpY2FsU2VjdGlv
biB7IH0pOwotKyAgcmV0dXJuIHNjb3BlLmdldCgpOwotK30KLSsKLSB9ICAvLyBuYW1lc3BhY2UK
LSAKLSAvLyBJbmVmZmljaWVudCBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBvdmVycmlkZSBpcyBy
ZWNvbW1lbmRlZC4KLUBAIC04Myw3ICs4OCwxNSBAQCBib29sIExvZ01lc3NhZ2U6OmxvZ190b19z
dGRlcnJfID0gdHJ1ZTsKLSAvLyBOb3RlOiB3ZSBleHBsaWNpdGx5IGRvIG5vdCBjbGVhbiB0aGlz
IHVwLCBiZWNhdXNlIG9mIHRoZSB1bmNlcnRhaW4gb3JkZXJpbmcKLSAvLyBvZiBkZXN0cnVjdG9y
cyBhdCBwcm9ncmFtIGV4aXQuICBMZXQgdGhlIHBlcnNvbiB3aG8gc2V0cyB0aGUgc3RyZWFtIHRy
aWdnZXIKLSAvLyBjbGVhbnVwIGJ5IHNldHRpbmcgdG8gbnVsbCwgb3IgbGV0IGl0IGxlYWsgKHNh
ZmUgYXQgcHJvZ3JhbSBleGl0KS4KLS1Mb2dNZXNzYWdlOjpTdHJlYW1MaXN0IExvZ01lc3NhZ2U6
OnN0cmVhbXNfIFJUQ19HVUFSREVEX0JZKGdfbG9nX2NyaXQpOwotK3R5cGVkZWYgc3RkOjpwYWly
PExvZ1NpbmsqLCBMb2dnaW5nU2V2ZXJpdHk+IFN0cmVhbUFuZFNldmVyaXR5OwotK3R5cGVkZWYg
c3RkOjpsaXN0PFN0cmVhbUFuZFNldmVyaXR5PiBTdHJlYW1MaXN0OwotKwotKy8vIFRoZSBvdXRw
dXQgc3RyZWFtcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBzZXZlcml0aWVzCi0rU3RyZWFtTGlzdCYg
c3RyZWFtTGlzdCgpCi0rICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQobG9nQ3JpdGlj
YWxTY29wZSgpKSB7Ci0rICAgICAgICBzdGF0aWMgYXV0byBzdHJlYW1fbGlzdCA9IG1ha2VOZXZl
ckRlc3Ryb3llZDw+KFN0cmVhbUxpc3QgeyB9KTsKLSsgIHJldHVybiBzdHJlYW1fbGlzdC5nZXQo
KTsKLSt9Ci0gCi0gLy8gQm9vbGVhbiBvcHRpb25zIGRlZmF1bHQgdG8gZmFsc2UgKDApCi0gYm9v
bCBMb2dNZXNzYWdlOjp0aHJlYWRfLCBMb2dNZXNzYWdlOjp0aW1lc3RhbXBfOwotQEAgLTk3LDYg
KzExMCwxMCBAQCBMb2dNZXNzYWdlOjpMb2dNZXNzYWdlKGNvbnN0IGNoYXIqIGZpbGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBMb2dFcnJvckNvbnRleHQgZXJyX2N0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBlcnIpCi0gICAgIDogc2V2ZXJpdHlfKHNldikgewotKwotKyAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIGNhbGxMb2dDcml0aWNhbFNjb3BlT25jZTsKLSsgIHN0ZDo6Y2Fs
bF9vbmNlKGNhbGxMb2dDcml0aWNhbFNjb3BlT25jZSxbXSB7IGxvZ0NyaXRpY2FsU2NvcGUoKTsg
fSk7Ci0rCi0gICBpZiAodGltZXN0YW1wXykgewotICAgICAvLyBVc2UgU3lzdGVtVGltZU1pbGxp
cyBzbyB0aGF0IGV2ZW4gaWYgdGVzdHMgdXNlIGZha2UgY2xvY2tzLCB0aGUgdGltZXN0YW1wCi0g
ICAgIC8vIGluIGxvZyBtZXNzYWdlcyByZXByZXNlbnRzIHRoZSByZWFsIHN5c3RlbSB0aW1lLgot
QEAgLTE5Nyw4ICsyMTQsOCBAQCBMb2dNZXNzYWdlOjp+TG9nTWVzc2FnZSgpIHsKLSAjZW5kaWYK
LSAgIH0KLSAKLS0gIENyaXRTY29wZSBjcygmZ19sb2dfY3JpdCk7Ci0tICBmb3IgKGF1dG8mIGt2
IDogc3RyZWFtc18pIHsKLSsgIENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29wZSgpKTsKLSsg
IGZvciAoYXV0byYga3YgOiBzdHJlYW1MaXN0KCkpIHsKLSAgICAgaWYgKHNldmVyaXR5XyA+PSBr
di5zZWNvbmQpIHsKLSAjaWYgZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKLSAgICAgICBrdi5maXJz
dC0+T25Mb2dNZXNzYWdlKHN0ciwgc2V2ZXJpdHlfLCB0YWdfKTsKLUBAIC0yNDYsNyArMjYzLDcg
QEAgdm9pZCBMb2dNZXNzYWdlOjpMb2dUaW1lc3RhbXBzKGJvb2wgb24pIHsKLSAKLSB2b2lkIExv
Z01lc3NhZ2U6OkxvZ1RvRGVidWcoTG9nZ2luZ1NldmVyaXR5IG1pbl9zZXYpIHsKLSAgIGdfZGJn
X3NldiA9IG1pbl9zZXY7Ci0tICBDcml0U2NvcGUgY3MoJmdfbG9nX2NyaXQpOwotKyAgQ3JpdFNj
b3BlIGNzKCZsb2dDcml0aWNhbFNjb3BlKCkpOwotICAgVXBkYXRlTWluTG9nU2V2ZXJpdHkoKTsK
LSB9Ci0gCi1AQCAtMjU1LDkgKzI3Miw5IEBAIHZvaWQgTG9nTWVzc2FnZTo6U2V0TG9nVG9TdGRl
cnIoYm9vbCBsb2dfdG9fc3RkZXJyKSB7Ci0gfQotIAotIGludCBMb2dNZXNzYWdlOjpHZXRMb2dU
b1N0cmVhbShMb2dTaW5rKiBzdHJlYW0pIHsKLS0gIENyaXRTY29wZSBjcygmZ19sb2dfY3JpdCk7
Ci0rICBDcml0U2NvcGUgY3MoJmxvZ0NyaXRpY2FsU2NvcGUoKSk7Ci0gICBMb2dnaW5nU2V2ZXJp
dHkgc2V2ID0gTFNfTk9ORTsKLS0gIGZvciAoYXV0byYga3YgOiBzdHJlYW1zXykgewotKyAgZm9y
IChhdXRvJiBrdiA6IHN0cmVhbUxpc3QoKSkgewotICAgICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0g
PT0ga3YuZmlyc3QpIHsKLSAgICAgICBzZXYgPSBzdGQ6Om1pbihzZXYsIGt2LnNlY29uZCk7Ci0g
ICAgIH0KLUBAIC0yNjYsMTYgKzI4MywxNiBAQCBpbnQgTG9nTWVzc2FnZTo6R2V0TG9nVG9TdHJl
YW0oTG9nU2luayogc3RyZWFtKSB7Ci0gfQotIAotIHZvaWQgTG9nTWVzc2FnZTo6QWRkTG9nVG9T
dHJlYW0oTG9nU2luayogc3RyZWFtLCBMb2dnaW5nU2V2ZXJpdHkgbWluX3NldikgewotLSAgQ3Jp
dFNjb3BlIGNzKCZnX2xvZ19jcml0KTsKLS0gIHN0cmVhbXNfLnB1c2hfYmFjayhzdGQ6Om1ha2Vf
cGFpcihzdHJlYW0sIG1pbl9zZXYpKTsKLSsgIENyaXRTY29wZSBjcygmbG9nQ3JpdGljYWxTY29w
ZSgpKTsKLSsgIHN0cmVhbUxpc3QoKS5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoc3RyZWFtLCBt
aW5fc2V2KSk7Ci0gICBVcGRhdGVNaW5Mb2dTZXZlcml0eSgpOwotIH0KLSAKLSB2b2lkIExvZ01l
c3NhZ2U6OlJlbW92ZUxvZ1RvU3RyZWFtKExvZ1NpbmsqIHN0cmVhbSkgewotLSAgQ3JpdFNjb3Bl
IGNzKCZnX2xvZ19jcml0KTsKLS0gIGZvciAoU3RyZWFtTGlzdDo6aXRlcmF0b3IgaXQgPSBzdHJl
YW1zXy5iZWdpbigpOyBpdCAhPSBzdHJlYW1zXy5lbmQoKTsgKytpdCkgewotKyAgQ3JpdFNjb3Bl
IGNzKCZsb2dDcml0aWNhbFNjb3BlKCkpOwotKyAgZm9yIChTdHJlYW1MaXN0OjppdGVyYXRvciBp
dCA9IHN0cmVhbUxpc3QoKS5iZWdpbigpOyBpdCAhPSBzdHJlYW1MaXN0KCkuZW5kKCk7ICsraXQp
IHsKLSAgICAgaWYgKHN0cmVhbSA9PSBpdC0+Zmlyc3QpIHsKLS0gICAgICBzdHJlYW1zXy5lcmFz
ZShpdCk7Ci0rICAgICAgc3RyZWFtTGlzdCgpLmVyYXNlKGl0KTsKLSAgICAgICBicmVhazsKLSAg
ICAgfQotICAgfQotQEAgLTMzNCw5ICszNTEsOSBAQCB2b2lkIExvZ01lc3NhZ2U6OkNvbmZpZ3Vy
ZUxvZ2dpbmcoY29uc3QgY2hhciogcGFyYW1zKSB7Ci0gfQotIAotIHZvaWQgTG9nTWVzc2FnZTo6
VXBkYXRlTWluTG9nU2V2ZXJpdHkoKQotLSAgICBSVENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVE
KGdfbG9nX2NyaXQpIHsKLSsgICAgUlRDX0VYQ0xVU0lWRV9MT0NLU19SRVFVSVJFRChsb2dDcml0
aWNhbFNjb3BlKCkpIHsKLSAgIExvZ2dpbmdTZXZlcml0eSBtaW5fc2V2ID0gZ19kYmdfc2V2Owot
LSAgZm9yIChjb25zdCBhdXRvJiBrdiA6IHN0cmVhbXNfKSB7Ci0rICBmb3IgKGNvbnN0IGF1dG8m
IGt2IDogc3RyZWFtTGlzdCgpKSB7Ci0gICAgIGNvbnN0IExvZ2dpbmdTZXZlcml0eSBzZXYgPSBr
di5zZWNvbmQ7Ci0gICAgIG1pbl9zZXYgPSBzdGQ6Om1pbihtaW5fc2V2LCBzZXYpOwotICAgfQot
QEAgLTQ1MCwxMSArNDY3LDggQEAgYm9vbCBMb2dNZXNzYWdlOjpJc05vb3AoTG9nZ2luZ1NldmVy
aXR5IHNldmVyaXR5KSB7Ci0gICAvLyBUT0RPKHRvbW1pKTogV2UncmUgZ3JhYmJpbmcgdGhpcyBs
b2NrIGZvciBldmVyeSBMb2dNZXNzYWdlIGluc3RhbmNlIHRoYXQKLSAgIC8vIGlzIGdvaW5nIHRv
IGJlIGxvZ2dlZC4gVGhpcyBpbnRyb2R1Y2VzIHVubmVjZXNzYXJ5IHN5bmNocm9uaXphdGlvbiBm
b3IKLSAgIC8vIGEgZmVhdHVyZSB0aGF0J3MgbW9zdGx5IHVzZWQgZm9yIHRlc3RpbmcuCi0tICBD
cml0U2NvcGUgY3MoJmdfbG9nX2NyaXQpOwotLSAgaWYgKHN0cmVhbXNfLnNpemUoKSA+IDApCi0t
ICAgIHJldHVybiBmYWxzZTsKLS0KLS0gIHJldHVybiB0cnVlOwotKyAgQ3JpdFNjb3BlIGNzKCZs
b2dDcml0aWNhbFNjb3BlKCkpOwotKyAgcmV0dXJuIHN0cmVhbUxpc3QoKS5zaXplKCkgPT0gMDsK
LSB9Ci0gCi0gdm9pZCBMb2dNZXNzYWdlOjpGaW5pc2hQcmludFN0cmVhbSgpIHsKLWRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9s
b2dnaW5nX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ191bml0dGVzdC5jYwotaW5kZXggYTQ3NWU1MmQ0NjUuLjZi
MjI2MzkyM2ZhIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ191bml0dGVzdC5jYwotKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZ191bml0dGVzdC5j
YwotQEAgLTIyMSw3ICsyMjEsNyBAQCBURVNUKExvZ1Rlc3QsIFNpbmdsZVN0cmVhbSkgewotIAot
ICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhZGVmaW5lZChXRUJSVENfQU5EUk9JRCkKLSBU
RVNUKExvZ1Rlc3QsIENoZWNrcykgewotLSAgRVhQRUNUX0RFQVRIKEZBVEFMKCkgPDwgIm1lc3Nh
Z2UiLAotKyAgRVhQRUNUX0RFQVRIKFJUQ19GQVRBTCgpIDw8ICJtZXNzYWdlIiwKLSAgICAgICAg
ICAgICAgICAiXG5cbiNcbiIKLSAgICAgICAgICAgICAgICAiIyBGYXRhbCBlcnJvciBpbjogXFxT
KywgbGluZSBcXHcrXG4iCi0gICAgICAgICAgICAgICAgIiMgbGFzdCBzeXN0ZW0gZXJyb3I6IFxc
dytcbiIKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS9uZXZlcl9kZXN0cm95ZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldmVyX2Rlc3Ryb3llZC5oCi1uZXcgZmlsZSBt
b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAuLmZjYzYyZTM1NTM0Ci0tLS0gL2Rldi9udWxs
Ci0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9uZXZlcl9kZXN0cm95ZWQuaAotQEAgLTAsMCArMSw2OSBAQAotKy8qCi0rICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0rICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSsgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0rICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0rICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0rICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSsgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSsgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0rICovCi0rCi0rI3ByYWdtYSBvbmNlCi0rCi0rI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgotKyNpbmNsdWRlIDx1dGlsaXR5PgotKwotK25hbWVzcGFjZSBydGMgewotKwotK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE5ldmVyRGVzdHJveWVkIHsKLStwdWJsaWM6Ci0rICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IE5ldmVyRGVzdHJveWVkKEFyZ3MmJi4uLiBhcmdzKQot
KyAgICB7Ci0rICAgICAgICBuZXcgKHN0b3JhZ2VQb2ludGVyKCkpIFQoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKTsKLSsgICAgfQotKwotKyAgICBOZXZlckRlc3Ryb3llZChOZXZlckRlc3Ry
b3llZCYmIG90aGVyKQotKyAgICB7Ci0rICAgICAgICBuZXcgKHN0b3JhZ2VQb2ludGVyKCkpIFQo
c3RkOjptb3ZlKCpvdGhlci5zdG9yYWdlUG9pbnRlcigpKSk7Ci0rICAgIH0KLSsKLSsgICAgb3Bl
cmF0b3IgVCYoKSB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsgfQotKyAgICBUJiBnZXQoKSB7
IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsgfQotKwotKyAgICBvcGVyYXRvciBjb25zdCBUJigp
IGNvbnN0IHsgcmV0dXJuICpzdG9yYWdlUG9pbnRlcigpOyB9Ci0rICAgIGNvbnN0IFQmIGdldCgp
IGNvbnN0IHsgcmV0dXJuICpzdG9yYWdlUG9pbnRlcigpOyB9Ci0rCi0rcHJpdmF0ZToKLSsgICAg
TmV2ZXJEZXN0cm95ZWQoY29uc3QgTmV2ZXJEZXN0cm95ZWQmKSA9IGRlbGV0ZTsKLSsgICAgTmV2
ZXJEZXN0cm95ZWQmIG9wZXJhdG9yPShjb25zdCBOZXZlckRlc3Ryb3llZCYpID0gZGVsZXRlOwot
KwotKyAgICB1c2luZyBQb2ludGVyVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+
Ojp0eXBlKjsKLSsKLSsgICAgUG9pbnRlclR5cGUgc3RvcmFnZVBvaW50ZXIoKSBjb25zdCB7IHJl
dHVybiBjb25zdF9jYXN0PFBvaW50ZXJUeXBlPihyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPigm
bV9zdG9yYWdlKSk7IH0KLSsKLSsgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIHdoZXRoZXIgd2Ug
c2hvdWxkIGFsbG9jYXRlIGEgaHVuayBvZiB2aXJ0dWFsIG1lbW9yeQotKyAgICAvLyBhbmQgaGFu
ZCBvdXQgY2h1bmtzIG9mIGl0IHRvIE5ldmVyRGVzdHJveWVkIGluc3RlYWQsIHRvIHJlZHVjZSBm
cmFnbWVudGF0aW9uLgotKyAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2Yo
VCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT46OnR5cGUgbV9zdG9yYWdlOwotK307Ci0r
Ci0rdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE5ldmVyRGVzdHJveWVkPFQ+IG1ha2VOZXZl
ckRlc3Ryb3llZChUJiYgYXJndW1lbnQpCi0rewotKyAgICByZXR1cm4gTmV2ZXJEZXN0cm95ZWQ8
VD4oc3RkOjptb3ZlKGFyZ3VtZW50KSk7Ci0rfQotKwotK30gLy8gbmFtZXNwYWNlIHJ0YwotZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaAot
aW5kZXggNThlZmNhYTc0NmEuLjQ4YzIxMmU0ZDQ5IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252
ZXJzaW9ucy5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgKLUBAIC02MywxMSArNjMsMTEg
QEAgaW5saW5lIERzdCBzYXR1cmF0ZWRfY2FzdChTcmMgdmFsdWUpIHsKLSAKLSAgICAgLy8gU2hv
dWxkIGZhaWwgb25seSBvbiBhdHRlbXB0aW5nIHRvIGFzc2lnbiBOYU4gdG8gYSBzYXR1cmF0ZWQg
aW50ZWdlci4KLSAgICAgY2FzZSBpbnRlcm5hbDo6VFlQRV9JTlZBTElEOgotLSAgICAgIEZBVEFM
KCk7Ci0rICAgICAgUlRDX0ZBVEFMKCk7Ci0gICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1p
dHM8RHN0Pjo6bWF4KCk7Ci0gICB9Ci0gCi0tICBGQVRBTCgpOwotKyAgUlRDX0ZBVEFMKCk7Ci0g
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RHN0Pih2YWx1ZSk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL29wZW5zc2xj
ZXJ0aWZpY2F0ZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3J0Y19iYXNlL29wZW5zc2xjZXJ0aWZpY2F0ZS5jYwotaW5kZXggZWQ2N2E4OTM4ZTEuLjIzNmJl
ZjU1YzhhIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUu
Y2MKLUBAIC0yNTYsMTEgKzI1NiwxMSBAQCBPcGVuU1NMQ2VydGlmaWNhdGUqIE9wZW5TU0xDZXJ0
aWZpY2F0ZTo6R2V0UmVmZXJlbmNlKCkgY29uc3QgewotIHN0ZDo6c3RyaW5nIE9wZW5TU0xDZXJ0
aWZpY2F0ZTo6VG9QRU1TdHJpbmcoKSBjb25zdCB7Ci0gICBCSU8qIGJpbyA9IEJJT19uZXcoQklP
X3NfbWVtKCkpOwotICAgaWYgKCFiaW8pIHsKLS0gICAgRkFUQUwoKSA8PCAidW5yZWFjaGFibGUg
Y29kZSI7Ci0rICAgIFJUQ19GQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSAgIH0KLSAg
IGlmICghUEVNX3dyaXRlX2Jpb19YNTA5KGJpbywgeDUwOV8pKSB7Ci0gICAgIEJJT19mcmVlKGJp
byk7Ci0tICAgIEZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOwotKyAgICBSVENfRkFUQUwo
KSA8PCAidW5yZWFjaGFibGUgY29kZSI7Ci0gICB9Ci0gICBCSU9fd3JpdGUoYmlvLCAiXDAiLCAx
KTsKLSAgIGNoYXIqIGJ1ZmZlcjsKLUBAIC0yNzcsMTEgKzI3NywxMSBAQCB2b2lkIE9wZW5TU0xD
ZXJ0aWZpY2F0ZTo6VG9ERVIoQnVmZmVyKiBkZXJfYnVmZmVyKSBjb25zdCB7Ci0gICAvLyBDYWxj
dWxhdGVzIHRoZSBERVIgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNlcnRpZmljYXRlLCBmcm9tIHNj
cmF0Y2guCi0gICBCSU8qIGJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOwotICAgaWYgKCFiaW8p
IHsKLS0gICAgRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7Ci0rICAgIFJUQ19GQVRBTCgp
IDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKLSAgIH0KLSAgIGlmICghaTJkX1g1MDlfYmlvKGJpbywg
eDUwOV8pKSB7Ci0gICAgIEJJT19mcmVlKGJpbyk7Ci0tICAgIEZBVEFMKCkgPDwgInVucmVhY2hh
YmxlIGNvZGUiOwotKyAgICBSVENfRkFUQUwoKSA8PCAidW5yZWFjaGFibGUgY29kZSI7Ci0gICB9
Ci0gICBjaGFyKiBkYXRhOwotICAgc2l6ZV90IGxlbmd0aCA9IEJJT19nZXRfbWVtX2RhdGEoYmlv
LCAmZGF0YSk7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5naXplX21hY3Jvcy5oCi1pbmRl
eCBhZWU4ZDE0NTUxZC4uMzhjNmYxODM2YmQgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmgKLSsr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0
cmluZ2l6ZV9tYWNyb3MuaAotQEAgLTgsNyArOCw3IEBACi0gICogIGJlIGZvdW5kIGluIHRoZSBB
VVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLgotICAqLwotIAotLS8v
IE1vZGlmaWVkIGZyb20gdGhlIENocm9taXVtIG9yaWdpbmFsOgotKy8vIE1vZGlmaWVkIGZyb20g
dGhlIENoeHNyb21pdW0gb3JpZ2luYWw6Ci0gLy8gc3JjL2Jhc2Uvc3RyaW5ncy9zdHJpbmdpemVf
bWFjcm9zLmgKLSAKLSAvLyBUaGlzIGZpbGUgZGVmaW5lcyBwcmVwcm9jZXNzb3IgbWFjcm9zIGZv
ciBzdHJpbmdpemluZyBwcmVwcm9jZXNzb3IKLUBAIC0zMyw2ICszMyw2IEBACi0gLy8gVGhlbjoK
LSAvLyAgIFNUUklOR0laRShBKSBwcm9kdWNlcyAiRk9PIgotIC8vICAgU1RSSU5HSVpFKEIoeSkp
IHByb2R1Y2VzICJteW9iai0+RnVuY3Rpb25DYWxsKHkpIgotLSNkZWZpbmUgU1RSSU5HSVpFKHgp
IFNUUklOR0laRV9OT19FWFBBTlNJT04oeCkKLSsjZGVmaW5lIFJUQ19TVFJJTkdJWkUoeCkgU1RS
SU5HSVpFX05PX0VYUEFOU0lPTih4KQotIAotICNlbmRpZiAgLy8gUlRDX0JBU0VfU1RSSU5HSVpF
X01BQ1JPU19IXwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVy
LmNjCi1pbmRleCA1M2RhZDQ2ZmNlZC4uYWU0MGQ3ODg4ZjUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0
c2VydmVyLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS92aXJ0dWFsc29ja2V0c2VydmVyLmNjCi1AQCAtMTAyNyw5ICsxMDI3LDggQEAg
dm9pZCBWaXJ0dWFsU29ja2V0U2VydmVyOjpVcGRhdGVEZWxheURpc3RyaWJ1dGlvbigpIHsKLSAg
IH0KLSB9Ci0gCi0tc3RhdGljIGRvdWJsZSBQSSA9IDQgKiBhdGFuKDEuMCk7Ci0tCi0gc3RhdGlj
IGRvdWJsZSBOb3JtYWwoZG91YmxlIHgsIGRvdWJsZSBtZWFuLCBkb3VibGUgc3RkZGV2KSB7Ci0r
ICBzdGF0aWMgY29uc3QgZG91YmxlIFBJID0gNCAqIGF0YW4oMS4wKTsKLSAgIGRvdWJsZSBhID0g
KHggLSBtZWFuKSAqICh4IC0gbWVhbikgLyAoMiAqIHN0ZGRldiAqIHN0ZGRldik7Ci0gICByZXR1
cm4gZXhwKC1hKSAvIChzdGRkZXYgKiBzcXJ0KDIgKiBQSSkpOwotIH0KLWRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdv
cmsvQ2xhc3Nlcy9QZWVyQ29ubmVjdGlvbi9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsv
Q2xhc3Nlcy9QZWVyQ29ubmVjdGlvbi9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0KLW5ldyBmaWxl
IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMC4uMDRhNTY4OTQxN2MKLS0tLSAvZGV2L251
bGwKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL0ZyYW1ld29yay9DbGFzc2VzL1BlZXJDb25uZWN0aW9uL1JUQ0gyNjRQcm9maWxlTGV2ZWxJ
ZC5tbQotQEAgLTAsMCArMSw1OCBAQAotKy8qCi0rICogIENvcHlyaWdodCAyMDE4IFRoZSBXZWJS
VEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotKyAqCi0rICogIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UKLSsg
KiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlCi0rICogIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3BlcnR5
IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSsgKiAgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotKyAqICBiZSBmb3VuZCBpbiB0aGUg
QVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSsgKgotKyAqLwot
KwotKyNpbXBvcnQgIldlYlJUQy9SVENWaWRlb0NvZGVjSDI2NC5oIgotKwotKyNpbmNsdWRlICJt
ZWRpYS9iYXNlL2gyNjRfcHJvZmlsZV9sZXZlbF9pZC5oIgotKwotK0BpbnRlcmZhY2UgUlRDSDI2
NFByb2ZpbGVMZXZlbElkICgpCi0rCi0rQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENI
MjY0UHJvZmlsZSBwcm9maWxlOwotK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgUlRDSDI2
NExldmVsIGxldmVsOwotK0Bwcm9wZXJ0eShub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKmhl
eFN0cmluZzsKLSsKLStAZW5kCi0rCi0rQGltcGxlbWVudGF0aW9uIFJUQ0gyNjRQcm9maWxlTGV2
ZWxJZAotKwotK0BzeW50aGVzaXplIHByb2ZpbGUgPSBfcHJvZmlsZTsKLStAc3ludGhlc2l6ZSBs
ZXZlbCA9IF9sZXZlbDsKLStAc3ludGhlc2l6ZSBoZXhTdHJpbmcgPSBfaGV4U3RyaW5nOwotKwot
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aEhleFN0cmluZzooTlNTdHJpbmcgKiloZXhTdHJpbmcg
ewotKyAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSsgICAgc2VsZi5oZXhTdHJpbmcgPSBo
ZXhTdHJpbmc7Ci0rCi0rICAgIGFic2w6Om9wdGlvbmFsPHdlYnJ0Yzo6SDI2NDo6UHJvZmlsZUxl
dmVsSWQ+IHByb2ZpbGVfbGV2ZWxfaWQgPQotKyAgICAgICAgd2VicnRjOjpIMjY0OjpQYXJzZVBy
b2ZpbGVMZXZlbElkKFtoZXhTdHJpbmcgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddKTsKLSsgICAgaWYgKHByb2ZpbGVfbGV2ZWxfaWQuaGFzX3ZhbHVlKCkpIHsKLSsg
ICAgICBzZWxmLnByb2ZpbGUgPSBzdGF0aWNfY2FzdDxSVENIMjY0UHJvZmlsZT4ocHJvZmlsZV9s
ZXZlbF9pZC0+cHJvZmlsZSk7Ci0rICAgICAgc2VsZi5sZXZlbCA9IHN0YXRpY19jYXN0PFJUQ0gy
NjRMZXZlbD4ocHJvZmlsZV9sZXZlbF9pZC0+bGV2ZWwpOwotKyAgICB9Ci0rICB9Ci0rICByZXR1
cm4gc2VsZjsKLSt9Ci0rCi0rLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvZmlsZTooUlRDSDI2
NFByb2ZpbGUpcHJvZmlsZSBsZXZlbDooUlRDSDI2NExldmVsKWxldmVsIHsKLSsgIGlmIChzZWxm
ID0gW3N1cGVyIGluaXRdKSB7Ci0rICAgIHNlbGYucHJvZmlsZSA9IHByb2ZpbGU7Ci0rICAgIHNl
bGYubGV2ZWwgPSBsZXZlbDsKLSsKLSsgICAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IGhl
eF9zdHJpbmcgPQotKyAgICAgICAgd2VicnRjOjpIMjY0OjpQcm9maWxlTGV2ZWxJZFRvU3RyaW5n
KHdlYnJ0Yzo6SDI2NDo6UHJvZmlsZUxldmVsSWQoCi0rICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
d2VicnRjOjpIMjY0OjpQcm9maWxlPihwcm9maWxlKSwgc3RhdGljX2Nhc3Q8d2VicnRjOjpIMjY0
OjpMZXZlbD4obGV2ZWwpKSk7Ci0rICAgIHNlbGYuaGV4U3RyaW5nID0KLSsgICAgICAgIFtOU1N0
cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpoZXhfc3RyaW5nLnZhbHVlX29yKCIiKS5jX3N0cigpIGVu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSsgIH0KLSsgIHJldHVybiBzZWxmOwotK30K
LSsKLStAZW5kCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2
YXRlLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLm1tCi1pbmRleCA2
ZjJkMWY0NmQ5Yy4uOTRjYjFmMTEwZjkgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5j
b2RlZEltYWdlK1ByaXZhdGUubW0KLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVkSW1hZ2Ur
UHJpdmF0ZS5tbQotQEAgLTM1LDYgKzM1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0
aXZlRW5jb2RlZEltYWdlOih3ZWJydGM6OkVuY29kZWRJbWFnZSllbmNvZGVkSW1hZ2UgewotICAg
ICBzZWxmLmNvbnRlbnRUeXBlID0gKGVuY29kZWRJbWFnZS5jb250ZW50X3R5cGVfID09IHdlYnJ0
Yzo6VmlkZW9Db250ZW50VHlwZTo6U0NSRUVOU0hBUkUpID8KLSAgICAgICAgIFJUQ1ZpZGVvQ29u
dGVudFR5cGVTY3JlZW5zaGFyZSA6Ci0gICAgICAgICBSVENWaWRlb0NvbnRlbnRUeXBlVW5zcGVj
aWZpZWQ7Ci0rICAgIHNlbGYuc3BhdGlhbEluZGV4ID0gZW5jb2RlZEltYWdlLlNwYXRpYWxJbmRl
eCgpID8gKmVuY29kZWRJbWFnZS5TcGF0aWFsSW5kZXgoKSA6IDA7Ci0gICB9Ci0gCi0gICByZXR1
cm4gc2VsZjsKLUBAIC01OSw3ICs2MCw4IEBAIC0gKHdlYnJ0Yzo6RW5jb2RlZEltYWdlKW5hdGl2
ZUVuY29kZWRJbWFnZSB7Ci0gICBlbmNvZGVkSW1hZ2UuY29udGVudF90eXBlXyA9IChzZWxmLmNv
bnRlbnRUeXBlID09IFJUQ1ZpZGVvQ29udGVudFR5cGVTY3JlZW5zaGFyZSkgPwotICAgICAgIHdl
YnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6U0NSRUVOU0hBUkUgOgotICAgICAgIHdlYnJ0Yzo6Vmlk
ZW9Db250ZW50VHlwZTo6VU5TUEVDSUZJRUQ7Ci0tCi0rICBpZiAoc2VsZi5zcGF0aWFsSW5kZXgp
Ci0rICAgIGVuY29kZWRJbWFnZS5TZXRTcGF0aWFsSW5kZXgoc2VsZi5zcGF0aWFsSW5kZXgpOwot
ICAgcmV0dXJuIGVuY29kZWRJbWFnZTsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9u
L1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEVuY29kaW5n
UGFyYW1ldGVycy5oCi1pbmRleCBiYTUwYmRlNjQ5Zi4uZGFiZmY3MjVhYmIgMTAwNjQ0Ci0tLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
cGVlcmNvbm5lY3Rpb24vUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmgKLSsrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaAotQEAgLTE1LDYgKzE1LDcgQEAKLSBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgotIAotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18o
KG9iamNfcnVudGltZV9uYW1lKCJXS19SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMiKSkpCi0gQGlu
dGVyZmFjZSBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMgOiBOU09iamVjdAotIAotIC8qKiBDb250
cm9scyB3aGV0aGVyIHRoZSBlbmNvZGluZyBpcyBjdXJyZW50bHkgdHJhbnNtaXR0ZWQuICovCi1k
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLmgKLWluZGV4
IDViMDYyNDU1YmMwLi43MmFmNzMyYjIzYiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENW
aWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRl
b0VuY29kZXJTZXR0aW5ncytQcml2YXRlLmgKLUBAIC0yMiw0ICsyMiwxMSBAQCBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgotIAotIEBlbmQKLSAKLStAaW50ZXJmYWNlIFJUQ1ZpZGVvQml0cmF0ZUFs
bG9jYXRpb24gKFByaXZhdGUpCi0rCi0rLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlVmlk
ZW9CaXRyYXRlQWxsb2NhdGlvbjooY29uc3Qgd2VicnRjOjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9u
ICpfX251bGxhYmxlKXZpZGVvQml0cmF0ZUFsbG9jYXRpb247Ci0rLSAod2VicnRjOjpWaWRlb0Jp
dHJhdGVBbGxvY2F0aW9uKW5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb247Ci0rCi0rQGVuZAot
KwotIE5TX0FTU1VNRV9OT05OVUxMX0VORAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENW
aWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5j
b2RlclNldHRpbmdzK1ByaXZhdGUubW0KLWluZGV4IDZmYjgxZGJiOGFmLi44MmI1YmE3YmMwZiAx
MDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRl
Lm1tCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MrUHJpdmF0ZS5t
bQotQEAgLTEyLDYgKzEyLDIzIEBACi0gCi0gI2ltcG9ydCAiaGVscGVycy9OU1N0cmluZytTdGRT
dHJpbmcuaCIKLSAKLStAaW1wbGVtZW50YXRpb24gUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3Mgewot
KyAgd2VicnRjOjpWaWRlb0NvZGVjIF9uYXRpdmVWaWRlb0NvZGVjOwotK30KLSsKLStAc3ludGhl
c2l6ZSBuYW1lID0gX25hbWU7Ci0rQHN5bnRoZXNpemUgd2lkdGggPSBfd2lkdGg7Ci0rQHN5bnRo
ZXNpemUgaGVpZ2h0ID0gX2hlaWdodDsKLStAc3ludGhlc2l6ZSBzdGFydEJpdHJhdGUgPSBfc3Rh
cnRCaXRyYXRlOwotK0BzeW50aGVzaXplIG1heEJpdHJhdGUgPSBfbWF4Qml0cmF0ZTsKLStAc3lu
dGhlc2l6ZSBtaW5CaXRyYXRlID0gX21pbkJpdHJhdGU7Ci0rQHN5bnRoZXNpemUgdGFyZ2V0Qml0
cmF0ZSA9IF90YXJnZXRCaXRyYXRlOwotK0BzeW50aGVzaXplIG1heEZyYW1lcmF0ZSA9IF9tYXhG
cmFtZXJhdGU7Ci0rQHN5bnRoZXNpemUgcXBNYXggPSBfcXBNYXg7Ci0rQHN5bnRoZXNpemUgbW9k
ZSA9IF9tb2RlOwotKwotK0BlbmQKLSsKLSBAaW1wbGVtZW50YXRpb24gUlRDVmlkZW9FbmNvZGVy
U2V0dGluZ3MgKFByaXZhdGUpCi0gCi0gLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmF0aXZlVmlk
ZW9Db2RlYzooY29uc3Qgd2VicnRjOjpWaWRlb0NvZGVjICopdmlkZW9Db2RlYyB7Ci1AQCAtMjAs
NiArMzcsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOYXRpdmVWaWRlb0NvZGVjOihjb25z
dCB3ZWJydGM6OlZpZGVvQ29kZWMgKil2aWRlb0NvZGVjCi0gICAgICAgY29uc3QgY2hhciAqY29k
ZWNOYW1lID0gQ29kZWNUeXBlVG9QYXlsb2FkU3RyaW5nKHZpZGVvQ29kZWMtPmNvZGVjVHlwZSk7
Ci0gICAgICAgc2VsZi5uYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmNvZGVj
TmFtZV07Ci0gCi0rICAgICAgX25hdGl2ZVZpZGVvQ29kZWMgPSAqdmlkZW9Db2RlYzsKLSAgICAg
ICBzZWxmLndpZHRoID0gdmlkZW9Db2RlYy0+d2lkdGg7Ci0gICAgICAgc2VsZi5oZWlnaHQgPSB2
aWRlb0NvZGVjLT5oZWlnaHQ7Ci0gICAgICAgc2VsZi5zdGFydEJpdHJhdGUgPSB2aWRlb0NvZGVj
LT5zdGFydEJpdHJhdGU7Ci1AQCAtMzYsMTggKzU0LDI4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aE5hdGl2ZVZpZGVvQ29kZWM6KGNvbnN0IHdlYnJ0Yzo6VmlkZW9Db2RlYyAqKXZpZGVvQ29k
ZWMKLSB9Ci0gCi0gLSAod2VicnRjOjpWaWRlb0NvZGVjKW5hdGl2ZVZpZGVvQ29kZWMgewotLSAg
d2VicnRjOjpWaWRlb0NvZGVjIHZpZGVvQ29kZWM7Ci0tICB2aWRlb0NvZGVjLndpZHRoID0gc2Vs
Zi53aWR0aDsKLS0gIHZpZGVvQ29kZWMuaGVpZ2h0ID0gc2VsZi5oZWlnaHQ7Ci0tICB2aWRlb0Nv
ZGVjLnN0YXJ0Qml0cmF0ZSA9IHNlbGYuc3RhcnRCaXRyYXRlOwotLSAgdmlkZW9Db2RlYy5tYXhC
aXRyYXRlID0gc2VsZi5tYXhCaXRyYXRlOwotLSAgdmlkZW9Db2RlYy5taW5CaXRyYXRlID0gc2Vs
Zi5taW5CaXRyYXRlOwotLSAgdmlkZW9Db2RlYy50YXJnZXRCaXRyYXRlID0gc2VsZi50YXJnZXRC
aXRyYXRlOwotLSAgdmlkZW9Db2RlYy5tYXhCaXRyYXRlID0gc2VsZi5tYXhCaXRyYXRlOwotLSAg
dmlkZW9Db2RlYy5xcE1heCA9IHNlbGYucXBNYXg7Ci0tICB2aWRlb0NvZGVjLm1vZGUgPSAod2Vi
cnRjOjpWaWRlb0NvZGVjTW9kZSlzZWxmLm1vZGU7Ci0tCi0tICByZXR1cm4gdmlkZW9Db2RlYzsK
LSsgIHJldHVybiBfbmF0aXZlVmlkZW9Db2RlYzsKLSt9Ci0rCi0rQGVuZAotKwotK0BpbXBsZW1l
bnRhdGlvbiBSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIHsKLSsgIHdlYnJ0Yzo6VmlkZW9CaXRy
YXRlQWxsb2NhdGlvbiBfbmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsKLSt9Ci0rCi0rQGVu
ZAotKwotK0BpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIChQcml2YXRl
KQotKwotKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRp
b246KGNvbnN0IHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqKXZpZGVvQml0cmF0ZUFs
bG9jYXRpb24gewotKyAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSsgICAgX25hdGl2ZVZp
ZGVvQml0cmF0ZUFsbG9jYXRpb24gPSAqdmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsKLSsgIH0KLSsg
IHJldHVybiBzZWxmOwotK30KLSsKLSstICh3ZWJydGM6OlZpZGVvQml0cmF0ZUFsbG9jYXRpb24p
bmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiB7Ci0rICByZXR1cm4gX25hdGl2ZVZpZGVvQml0
cmF0ZUFsbG9jYXRpb247Ci0gfQotIAotIEBlbmQKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRD
VmlkZW9Db2RlY0NvbnN0YW50cy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0NvZGVjQ29uc3RhbnRz
Lm1tCi1pbmRleCBhY2JmMTI2MTcwYy4uMTQ0N2QzYjI3ZTEgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29k
ZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbQotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29k
ZWNDb25zdGFudHMubW0KLUBAIC0xMyw1ICsxMyw1IEBACi0gCi0gI2luY2x1ZGUgIm1lZGlhL2Jh
c2UvbWVkaWFjb25zdGFudHMuaCIKLSAKLS1OU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNW
cDhOYW1lID0gQChjcmlja2V0OjprVnA4Q29kZWNOYW1lKTsKLS1OU1N0cmluZyAqY29uc3Qga1JU
Q1ZpZGVvQ29kZWNWcDlOYW1lID0gQChjcmlja2V0OjprVnA5Q29kZWNOYW1lKTsKLStOU1N0cmlu
ZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNWcDhOYW1lID0gQCJWUDgiOwotK05TU3RyaW5nICpjb25z
dCBrUlRDVmlkZW9Db2RlY1ZwOU5hbWUgPSBAIlZQOSI7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVj
L1JUQ1ZpZGVvRW5jb2RlclZQOC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlclZQOC5oCi1p
bmRleCA4ZDg3YTg5ODkzMS4uMDhkMTg1MDQyMjIgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMvUlRD
VmlkZW9FbmNvZGVyVlA4LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJWUDguaAot
QEAgLTE0LDYgKzE0LDcgQEAKLSAjaW1wb3J0ICJSVENWaWRlb0VuY29kZXIuaCIKLSAKLSBSVENf
T0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlk
ZW9FbmNvZGVyVlA4IikpKQotIEBpbnRlcmZhY2UgUlRDVmlkZW9FbmNvZGVyVlA4IDogTlNPYmpl
Y3QKLSAKLSAvKiBUaGlzIHJldHVybnMgYSBWUDggZW5jb2RlciB0aGF0IGNhbiBiZSByZXR1cm5l
ZCBmcm9tIGEgUlRDVmlkZW9FbmNvZGVyRmFjdG9yeSBpbmplY3RlZCBpbnRvCi1kaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBp
L3ZpZGVvX2NvZGVjL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fY29kZWMv
UlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5tbQotaW5kZXggOWFmZDU0ZjU1ZjUuLmI5NjM0
Nzc5ZjFmIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29k
ZXIubW0KLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tCi1A
QCAtNTgsNiArNTgsMTEgQEAgLSAoaW50KXNldEJpdHJhdGU6KHVpbnQzMl90KWJpdHJhdGVLYml0
IGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsKLSAgIHJldHVybiAwOwotIH0KLSAKLSst
IChpbnQpc2V0UmF0ZUFsbG9jYXRpb246KG5vbm51bGwgUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlv
biAqKWFsbG9jYXRpb24gZnJhbWVyYXRlOih1aW50MzJfdClmcmFtZXJhdGUgewotKyAgUlRDX05P
VFJFQUNIRUQoKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSAtIChOU1N0cmluZyAqKWltcGxlbWVu
dGF0aW9uTmFtZSB7Ci0gICBSVENfTk9UUkVBQ0hFRCgpOwotICAgcmV0dXJuIG5pbDsKLWRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFt
ZV9idWZmZXIvUlRDTmF0aXZlSTQyMEJ1ZmZlci5oCi1pbmRleCA5YTkwNGY1Mzk2YS4uZGM5MDNi
YzRiY2EgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIu
aAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVJNDIwQnVmZmVyLmgKLUBAIC0xNyw2
ICsxNyw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCi0gCi0gLyoqIFJUQ0k0MjBCdWZmZXIg
aW1wbGVtZW50cyB0aGUgUlRDSTQyMEJ1ZmZlciBwcm90b2NvbCAqLwotIFJUQ19PQkpDX0VYUE9S
VAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENJNDIwQnVmZmVyIikp
KQotIEBpbnRlcmZhY2UgUlRDSTQyMEJ1ZmZlciA6IE5TT2JqZWN0PFJUQ0k0MjBCdWZmZXI+Ci0g
QGVuZAotIAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlTXV0YWJsZUk0
MjBCdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIu
aAotaW5kZXggNmNkNTExMDQ2MGIuLjdjZmE5NTBhYmI2IDEwMDY0NAotLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1l
X2J1ZmZlci9SVENOYXRpdmVNdXRhYmxlSTQyMEJ1ZmZlci5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVm
ZmVyL1JUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVyLmgKLUBAIC0xOCw2ICsxOCw3IEBAIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCi0gCi0gLyoqIE11dGFibGUgdmVyc2lvbiBvZiBSVENJNDIwQnVm
ZmVyICovCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25h
bWUoIldLX1JUQ011dGFibGVJNDIwQnVmZmVyIikpKQotIEBpbnRlcmZhY2UgUlRDTXV0YWJsZUk0
MjBCdWZmZXIgOiBSVENJNDIwQnVmZmVyPFJUQ011dGFibGVJNDIwQnVmZmVyPgotIEBlbmQKLSAK
LWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9iYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZv
LmgKLWluZGV4IGUyYWU0Y2FmYTExLi45ZGM0NGMxMmFmOCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDQ29kZWNT
cGVjaWZpY0luZm8uaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYmFzZS9SVENDb2RlY1NwZWNpZmljSW5mby5oCi1AQCAtMTgsNiArMTgs
NyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotICAqICBDb3JyZXNwb25kcyB0byB3ZWJydGM6
OkNvZGVjU3BlY2lmaWNJbmZvLgotICAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRl
X18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENDb2RlY1NwZWNpZmljSW5mbyIpKSkKLSBAcHJv
dG9jb2wgUlRDQ29kZWNTcGVjaWZpY0luZm8gPE5TT2JqZWN0PgotIEBlbmQKLSAKLWRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9i
YXNlL1JUQ0VuY29kZWRJbWFnZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UuaAotaW5kZXggNjcwYzcyNzZm
ZjcuLjc5OTRjZTY0YTFmIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UuaAotKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENF
bmNvZGVkSW1hZ2UuaAotQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVn
ZXIsIFJUQ1ZpZGVvQ29udGVudFR5cGUpIHsKLSAKLSAvKiogUmVwcmVzZW50cyBhbiBlbmNvZGVk
IGZyYW1lLiBDb3JyZXNwb25kcyB0byB3ZWJydGM6OkVuY29kZWRJbWFnZS4gKi8KLSBSVENfT0JK
Q19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDRW5jb2Rl
ZEltYWdlIikpKQotIEBpbnRlcmZhY2UgUlRDRW5jb2RlZEltYWdlIDogTlNPYmplY3QKLSAKLSBA
cHJvcGVydHkobm9uYXRvbWljLCBzdHJvbmcpIE5TRGF0YSAqYnVmZmVyOwotQEAgLTQ3LDYgKzQ4
LDcgQEAgUlRDX09CSkNfRVhQT1JUCi0gQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBCT09M
IGNvbXBsZXRlRnJhbWU7Ci0gQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBOU051bWJlciAq
cXA7Ci0gQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENWaWRlb0NvbnRlbnRUeXBlIGNv
bnRlbnRUeXBlOwotK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgaW50IHNwYXRpYWxJbmRl
eDsKLSAKLSBAZW5kCi0gCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UubSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2Rl
ZEltYWdlLm0KLWluZGV4IDAyNGE1N2M1NDFiLi44NWNkNWUyOThlNCAxMDA2NDQKLS0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRD
RW5jb2RlZEltYWdlLm0KLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLm0KLUBAIC0yNiw1ICsyNiw2IEBA
IEBpbXBsZW1lbnRhdGlvbiBSVENFbmNvZGVkSW1hZ2UKLSBAc3ludGhlc2l6ZSBjb21wbGV0ZUZy
YW1lID0gX2NvbXBsZXRlRnJhbWU7Ci0gQHN5bnRoZXNpemUgcXAgPSBfcXA7Ci0gQHN5bnRoZXNp
emUgY29udGVudFR5cGUgPSBfY29udGVudFR5cGU7Ci0rQHN5bnRoZXNpemUgc3BhdGlhbEluZGV4
ID0gX3NwYXRpYWxJbmRleDsKLSAKLSBAZW5kCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENJNDIwQnVmZmVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNl
L1JUQ0k0MjBCdWZmZXIuaAotaW5kZXggYTZjN2U0MWJjYmEuLmNmYTE0ZjhhZjIzIDEwMDY0NAot
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YmFzZS9SVENJNDIwQnVmZmVyLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDSTQyMEJ1ZmZlci5oCi1AQCAtMTYsNiArMTYs
NyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotIAotIC8qKiBQcm90b2NvbCBmb3IgUlRDWVVW
UGxhbmFyQnVmZmVycyBjb250YWluaW5nIEk0MjAgZGF0YSAqLwotIFJUQ19PQkpDX0VYUE9SVAot
K19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENJNDIwQnVmZmVyIikpKQot
IEBwcm90b2NvbCBSVENJNDIwQnVmZmVyIDxSVENZVVZQbGFuYXJCdWZmZXI+Ci0gQGVuZAotIAot
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVudGF0
aW9uSGVhZGVyLmgKLWluZGV4IDJlMjZiMDhiOGFmLi5mYmJjNjhhOGVmNiAxMDA2NDQKLS0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2Uv
UlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFk
ZXIuaAotQEAgLTE2LDYgKzE2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLSAKLSAvKiog
SW5mb3JtYXRpb24gZm9yIGhlYWRlci4gQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpSVFBGcmFnbWVu
dGF0aW9uSGVhZGVyLiAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNf
cnVudGltZV9uYW1lKCJXS19SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyIikpKQotIEBpbnRlcmZh
Y2UgUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlciA6IE5TT2JqZWN0Ci0gCi0gQHByb3BlcnR5KG5v
bmF0b21pYywgc3Ryb25nKSBOU0FycmF5PE5TTnVtYmVyICo+ICpmcmFnbWVudGF0aW9uT2Zmc2V0
OwotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENSdHBGcmFnbWVu
dGF0aW9uSGVhZGVyLm0KLWluZGV4IDgwNDlhYmM0MTFlLi42Y2YyMWRkYzJhMSAxMDA2NDQKLS0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50YXRpb25I
ZWFkZXIubQotQEAgLTE3LDQgKzE3LDUgQEAgQGltcGxlbWVudGF0aW9uIFJUQ1J0cEZyYWdtZW50
YXRpb25IZWFkZXIKLSBAc3ludGhlc2l6ZSBmcmFnbWVudGF0aW9uVGltZURpZmYgPSBfZnJhZ21l
bnRhdGlvblRpbWVEaWZmOwotIEBzeW50aGVzaXplIGZyYWdtZW50YXRpb25QbFR5cGUgPSBfZnJh
Z21lbnRhdGlvblBsVHlwZTsKLSAKLS1AZW5kCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
LStAZW5kCi0rCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0NvZGVjSW5mby5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0NvZGVj
SW5mby5oCi1pbmRleCAyMTYyY2FhYTIxZi4uNGU2NDNkOTQzNDcgMTAwNjQ0Ci0tLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1Zp
ZGVvQ29kZWNJbmZvLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9Db2RlY0luZm8uaAotQEAgLTE2LDYgKzE2LDcg
QEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLSAKLSAvKiogSG9sZHMgaW5mb3JtYXRpb24gdG8g
aWRlbnRpZnkgYSBjb2RlYy4gQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpTZHBWaWRlb0Zvcm1hdC4g
Ki8KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgi
V0tfUlRDVmlkZW9Db2RlY0luZm8iKSkpCi0gQGludGVyZmFjZSBSVENWaWRlb0NvZGVjSW5mbyA6
IE5TT2JqZWN0IDxOU0NvZGluZz4KLSAKLSAtIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlM
QUJMRTsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXIuaAot
aW5kZXggMThjNmY2YjAwMDYuLjUzNDQyMGQzOTU1IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29k
ZXIuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENWaWRlb0RlY29kZXIuaAotQEAgLTIzLDYgKzIzLDcgQEAgdHlwZWRlZiB2
b2lkICheUlRDVmlkZW9EZWNvZGVyQ2FsbGJhY2spKFJUQ1ZpZGVvRnJhbWUgKmZyYW1lKTsKLSAK
LSAvKiogUHJvdG9jb2wgZm9yIGRlY29kZXIgaW1wbGVtZW50YXRpb25zLiAqLwotIFJUQ19PQkpD
X0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0Rl
Y29kZXIiKSkpCi0gQHByb3RvY29sIFJUQ1ZpZGVvRGVjb2RlciA8TlNPYmplY3Q+Ci0gCi0gLSAo
dm9pZClzZXRDYWxsYmFjazooUlRDVmlkZW9EZWNvZGVyQ2FsbGJhY2spY2FsbGJhY2s7Ci1kaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29i
amMvYmFzZS9SVENWaWRlb0RlY29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2RlckZhY3Rvcnku
aAotaW5kZXggM2UyNDE1M2I4MmMuLmNiOTVmYTNmMTM0IDEwMDY0NAotLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0Rl
Y29kZXJGYWN0b3J5LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS5oCi1AQCAtMTgsNiAr
MTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotIAotIC8qKiBSVENWaWRlb0RlY29kZXJG
YWN0b3J5IGlzIGFuIE9iamVjdGl2ZS1DIHZlcnNpb24gb2Ygd2VicnRjOjpWaWRlb0RlY29kZXJG
YWN0b3J5LiAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGlt
ZV9uYW1lKCJXS19SVENWaWRlb0RlY29kZXJGYWN0b3J5IikpKQotIEBwcm90b2NvbCBSVENWaWRl
b0RlY29kZXJGYWN0b3J5IDxOU09iamVjdD4KLSAKLSAtIChudWxsYWJsZSBpZDxSVENWaWRlb0Rl
Y29kZXI+KWNyZWF0ZURlY29kZXI6KFJUQ1ZpZGVvQ29kZWNJbmZvICopaW5mbzsKLWRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9i
YXNlL1JUQ1ZpZGVvRW5jb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaAotaW5kZXggYzUyNTc2NzRk
ODMuLjUyOTFiYjEzNDJiIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaAotKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENW
aWRlb0VuY29kZXIuaAotQEAgLTE5LDcgKzE5LDExIEBACi0gI2ltcG9ydCAiUlRDVmlkZW9GcmFt
ZS5oIgotIAotIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCi0tCi0rLyoKLStuYW1lc3BhY2Ugd2Vi
cnRjIHsKLStjbGFzcyBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOwotK307Ci0rKi8KLSAvKiogQ2Fs
bGJhY2sgYmxvY2sgZm9yIGVuY29kZXIuICovCi0gdHlwZWRlZiBCT09MICheUlRDVmlkZW9FbmNv
ZGVyQ2FsbGJhY2spKFJUQ0VuY29kZWRJbWFnZSAqZnJhbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlkPFJUQ0NvZGVjU3BlY2lmaWNJbmZvPiBpbmZvLAotQEAg
LTI3LDYgKzMxLDcgQEAgdHlwZWRlZiBCT09MICheUlRDVmlkZW9FbmNvZGVyQ2FsbGJhY2spKFJU
Q0VuY29kZWRJbWFnZSAqZnJhbWUsCi0gCi0gLyoqIFByb3RvY29sIGZvciBlbmNvZGVyIGltcGxl
bWVudGF0aW9ucy4gKi8KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1
bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVyIikpKQotIEBwcm90b2NvbCBSVENWaWRlb0Vu
Y29kZXIgPE5TT2JqZWN0PgotIAotIC0gKHZvaWQpc2V0Q2FsbGJhY2s6KFJUQ1ZpZGVvRW5jb2Rl
ckNhbGxiYWNrKWNhbGxiYWNrOwotQEAgLTM3LDYgKzQyLDcgQEAgUlRDX09CSkNfRVhQT1JUCi0g
ICAgIGNvZGVjU3BlY2lmaWNJbmZvOihudWxsYWJsZSBpZDxSVENDb2RlY1NwZWNpZmljSW5mbz4p
aW5mbwotICAgICAgICAgICAgZnJhbWVUeXBlczooTlNBcnJheTxOU051bWJlciAqPiAqKWZyYW1l
VHlwZXM7Ci0gLSAoaW50KXNldEJpdHJhdGU6KHVpbnQzMl90KWJpdHJhdGVLYml0IGZyYW1lcmF0
ZToodWludDMyX3QpZnJhbWVyYXRlOwotKy0gKGludClzZXRSYXRlQWxsb2NhdGlvbjogKFJUQ1Zp
ZGVvQml0cmF0ZUFsbG9jYXRpb24gKilhbGxvY2F0aW9uIGZyYW1lcmF0ZToodWludDMyX3QpZnJh
bWVyYXRlOwotIC0gKE5TU3RyaW5nICopaW1wbGVtZW50YXRpb25OYW1lOwotIAotIC8qKiBSZXR1
cm5zIFFQIHNjYWxpbmcgc2V0dGluZ3MgZm9yIGVuY29kZXIuIFRoZSBxdWFsaXR5IHNjYWxlciBh
ZGp1c3RzIHRoZSByZXNvbHV0aW9uIGluIG9yZGVyIHRvCi1kaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0Vu
Y29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnkuaAotaW5kZXggMjBjNjAzZDZm
ZTYuLmNiZTllYTQ5MmFlIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJGYWN0b3J5LmgKLSsr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5oCi1AQCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgotIAotIC8qKiBSVENWaWRlb0VuY29kZXJGYWN0b3J5IGlzIGFuIE9iamVj
dGl2ZS1DIHZlcnNpb24gb2Ygd2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5LiAqLwotIFJUQ19P
QkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRl
b0VuY29kZXJGYWN0b3J5IikpKQotIEBwcm90b2NvbCBSVENWaWRlb0VuY29kZXJGYWN0b3J5IDxO
U09iamVjdD4KLSAKLSAtIChudWxsYWJsZSBpZDxSVENWaWRlb0VuY29kZXI+KWNyZWF0ZUVuY29k
ZXI6KFJUQ1ZpZGVvQ29kZWNJbmZvICopaW5mbzsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2Rl
clFwVGhyZXNob2xkcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaAotaW5kZXggMmI0
OGY0NWNlMGEuLjY4Y2ZkNjZkZjQ3IDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJRcFRocmVz
aG9sZHMuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaAotQEAgLTE2LDYgKzE2
LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLSAKLSAvKiogUVAgdGhyZXNob2xkcyBmb3Ig
ZW5jb2Rlci4gQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpWaWRlb0VuY29kZXI6OlFwVGhyZXNob2xk
cy4gKi8KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFt
ZSgiV0tfUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzIikpKQotIEBpbnRlcmZhY2UgUlRDVmlk
ZW9FbmNvZGVyUXBUaHJlc2hvbGRzIDogTlNPYmplY3QKLSAKLSAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhUaHJlc2hvbGRzTG93OihOU0ludGVnZXIpbG93IGhpZ2g6KE5TSW50ZWdlciloaWdoOwot
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyU2V0
dGluZ3MuaAotaW5kZXggNjllMDRjYWM3MGYuLmFlM2JmNWZiNWYxIDEwMDY0NAotLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENW
aWRlb0VuY29kZXJTZXR0aW5ncy5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLmgKLUBA
IC0yMSw2ICsyMSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBSVENWaWRlb0NvZGVj
TW9kZSkgewotIAotIC8qKiBTZXR0aW5ncyBmb3IgZW5jb2Rlci4gQ29ycmVzcG9uZHMgdG8gd2Vi
cnRjOjpWaWRlb0NvZGVjLiAqLwotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9i
amNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0VuY29kZXJTZXR0aW5ncyIpKSkKLSBAaW50ZXJm
YWNlIFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzIDogTlNPYmplY3QKLSAKLSBAcHJvcGVydHkobm9u
YXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICpuYW1lOwotQEAgLTQwLDQgKzQxLDkgQEAgUlRDX09C
SkNfRVhQT1JUCi0gCi0gQGVuZAotIAotK1JUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18o
KG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIikpKQotK0Bp
bnRlcmZhY2UgUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiA6IE5TT2JqZWN0Ci0rQGVuZAotKwot
IE5TX0FTU1VNRV9OT05OVUxMX0VORAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENW
aWRlb0ZyYW1lLmgKLWluZGV4IDlhY2E3NDMzZjM0Li5iZGUwOWM1MGM5ZCAxMDA2NDQKLS0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2Uv
UlRDVmlkZW9GcmFtZS5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWUuaAotQEAgLTI2LDYgKzI2LDcgQEAg
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUlRDVmlkZW9Sb3RhdGlvbikgewotIAotIC8vIFJU
Q1ZpZGVvRnJhbWUgaXMgYW4gT2JqZWN0aXZlQyB2ZXJzaW9uIG9mIHdlYnJ0Yzo6VmlkZW9GcmFt
ZS4KLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgi
V0tfUlRDVmlkZW9GcmFtZSIpKSkKLSBAaW50ZXJmYWNlIFJUQ1ZpZGVvRnJhbWUgOiBOU09iamVj
dAotIAotIC8qKiBXaWR0aCB3aXRob3V0IHJvdGF0aW9uIGFwcGxpZWQuICovCi1kaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFz
ZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaAotaW5kZXggYmI5
ZTZmYmE2MzEuLjE4NmFkMDg4OWJmIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmgK
LSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2Jhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oCi1AQCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgotIAotIC8vIFJUQ1ZpZGVvRnJhbWVCdWZmZXIgaXMgYW4gT2JqZWN0aXZl
QyB2ZXJzaW9uIG9mIHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlci4KLSBSVENfT0JKQ19FWFBPUlQK
LStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9GcmFtZUJ1ZmZl
ciIpKSkKLSBAcHJvdG9jb2wgUlRDVmlkZW9GcmFtZUJ1ZmZlciA8TlNPYmplY3Q+Ci0gCi0gQHBy
b3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIGludCB3aWR0aDsKLWRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL1JUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQuaAotaW5kZXggZWNlOTU3MGExM2IuLmU5NDdkYzZl
NjIzIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gy
NjQuaAotKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQuaAot
QEAgLTEwLDcgKzEwLDcgQEAKLSAKLSAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
LSAKLS0jaW1wb3J0ICJSVENDb2RlY1NwZWNpZmljSW5mby5oIgotKyNpbXBvcnQgImJhc2UvUlRD
Q29kZWNTcGVjaWZpY0luZm8uaCIKLSAjaW1wb3J0ICJSVENNYWNyb3MuaCIKLSAKLSAvKiogQ2xh
c3MgZm9yIEgyNjQgc3BlY2lmaWMgY29uZmlnLiAqLwotQEAgLTIwLDYgKzIwLDcgQEAgdHlwZWRl
ZiBOU19FTlVNKE5TVUludGVnZXIsIFJUQ0gyNjRQYWNrZXRpemF0aW9uTW9kZSkgewotIH07Ci0g
Ci0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldL
X1JUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NCIpKSkKLSBAaW50ZXJmYWNlIFJUQ0NvZGVjU3BlY2lm
aWNJbmZvSDI2NCA6IE5TT2JqZWN0IDxSVENDb2RlY1NwZWNpZmljSW5mbz4KLSAKLSBAcHJvcGVy
dHkobm9uYXRvbWljLCBhc3NpZ24pIFJUQ0gyNjRQYWNrZXRpemF0aW9uTW9kZSBwYWNrZXRpemF0
aW9uTW9kZTsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0Rl
Y29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJG
YWN0b3J5LmgKLWluZGV4IDdjYTk0NjNhNTkzLi5kMTE0NjAzMDBkNSAxMDA2NDQKLS0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVu
dHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaAotKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oCi1AQCAtMTksNiAr
MTksNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotICAqICBjb2RlY3MsIGNyZWF0ZSBjdXN0
b20gaW1wbGVtZW50YXRpb25zIG9mIFJUQ1ZpZGVvRW5jb2RlckZhY3RvcnkgYW5kIFJUQ1ZpZGVv
RGVjb2RlckZhY3RvcnkuCi0gICovCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVfXygo
b2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5IikpKQot
IEBpbnRlcmZhY2UgUlRDRGVmYXVsdFZpZGVvRGVjb2RlckZhY3RvcnkgOiBOU09iamVjdCA8UlRD
VmlkZW9EZWNvZGVyRmFjdG9yeT4KLSBAZW5kCi0gCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19j
b2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9S
VENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5oCi1pbmRleCBjNDVlNTQzNjJiMi4uOTMyMzI1
NmNlYWQgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0VuY29k
ZXJGYWN0b3J5LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRW5jb2Rl
ckZhY3RvcnkuaAotQEAgLTE5LDYgKzE5LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLSAg
KiAgY29kZWNzLCBjcmVhdGUgY3VzdG9tIGltcGxlbWVudGF0aW9ucyBvZiBSVENWaWRlb0VuY29k
ZXJGYWN0b3J5IGFuZCBSVENWaWRlb0RlY29kZXJGYWN0b3J5LgotICAqLwotIFJUQ19PQkpDX0VY
UE9SVAotK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENEZWZhdWx0Vmlk
ZW9FbmNvZGVyRmFjdG9yeSIpKSkKLSBAaW50ZXJmYWNlIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJG
YWN0b3J5IDogTlNPYmplY3QgPFJUQ1ZpZGVvRW5jb2RlckZhY3Rvcnk+Ci0gCi0gQHByb3BlcnR5
KG5vbmF0b21pYywgcmV0YWluKSBSVENWaWRlb0NvZGVjSW5mbyAqcHJlZmVycmVkQ29kZWM7Ci1k
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxldmVsSWQuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVu
dHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLmgKLWluZGV4IDU2YjM1MzIxNWEy
Li5kMDIyMjk3Njc0ZSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2Zp
bGVMZXZlbElkLmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElk
LmgKLUBAIC00OCw2ICs0OCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBSVENIMjY0
TGV2ZWwpIHsKLSB9OwotIAotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNf
cnVudGltZV9uYW1lKCJXS19SVENIMjY0UHJvZmlsZUxldmVsSWQiKSkpCi0gQGludGVyZmFjZSBS
VENIMjY0UHJvZmlsZUxldmVsSWQgOiBOU09iamVjdAotIAotIEBwcm9wZXJ0eShub25hdG9taWMs
IHJlYWRvbmx5KSBSVENIMjY0UHJvZmlsZSBwcm9maWxlOwotZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlk
ZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENI
MjY0UHJvZmlsZUxldmVsSWQubW0KLWluZGV4IDM1OTY1NmNiOTdiLi4yOGY1MjEzOWMxNyAxMDA2
NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tCi0rKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbQotQEAgLTE5LDIwICsx
OSwzMCBAQAotICNpbmNsdWRlICJtZWRpYS9iYXNlL2gyNjRfcHJvZmlsZV9sZXZlbF9pZC5oIgot
ICNpbmNsdWRlICJtZWRpYS9iYXNlL21lZGlhY29uc3RhbnRzLmgiCi0gCi0rI2lmICFkZWZpbmVk
KFdFQlJUQ19XRUJLSVRfQlVJTEQpCi0gbmFtZXNwYWNlIHsKLSAKLSBOU1N0cmluZyAqTWF4U3Vw
cG9ydGVkUHJvZmlsZUxldmVsQ29uc3RyYWluZWRIaWdoKCk7Ci0gTlNTdHJpbmcgKk1heFN1cHBv
cnRlZFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkQmFzZWxpbmUoKTsKLSAKLSB9ICAvLyBuYW1lc3Bh
Y2UKLSsjZW5kaWYKLSAKLS1OU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNIMjY0TmFtZSA9
IEAoY3JpY2tldDo6a0gyNjRDb2RlY05hbWUpOwotK05TU3RyaW5nICpjb25zdCBrUlRDVmlkZW9D
b2RlY0gyNjROYW1lID0gQCJIMjY0IjsKLSBOU1N0cmluZyAqY29uc3Qga1JUQ0xldmVsMzFDb25z
dHJhaW5lZEhpZ2ggPSBAIjY0MGMxZiI7Ci0gTlNTdHJpbmcgKmNvbnN0IGtSVENMZXZlbDMxQ29u
c3RyYWluZWRCYXNlbGluZSA9IEAiNDJlMDFmIjsKLSsKLSsjaWYgZGVmaW5lZChXRUJSVENfV0VC
S0lUX0JVSUxEKQotK05TU3RyaW5nICpjb25zdCBrUlRDTWF4U3VwcG9ydGVkSDI2NFByb2ZpbGVM
ZXZlbENvbnN0cmFpbmVkSGlnaCA9Ci0rICAgIEAiNjQwYzFmIjsKLStOU1N0cmluZyAqY29uc3Qg
a1JUQ01heFN1cHBvcnRlZEgyNjRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEJhc2VsaW5lID0KLSsg
ICAgQCI0MmUwMWYiOwotKyNlbHNlCi0gTlNTdHJpbmcgKmNvbnN0IGtSVENNYXhTdXBwb3J0ZWRI
MjY0UHJvZmlsZUxldmVsQ29uc3RyYWluZWRIaWdoID0KLSAgICAgTWF4U3VwcG9ydGVkUHJvZmls
ZUxldmVsQ29uc3RyYWluZWRIaWdoKCk7Ci0gTlNTdHJpbmcgKmNvbnN0IGtSVENNYXhTdXBwb3J0
ZWRIMjY0UHJvZmlsZUxldmVsQ29uc3RyYWluZWRCYXNlbGluZSA9Ci0gICAgIE1heFN1cHBvcnRl
ZFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkQmFzZWxpbmUoKTsKLSsjZW5kaWYKLSAKLSBuYW1lc3Bh
Y2UgewotIAotQEAgLTUzLDYgKzYzLDggQEAgTlNTdHJpbmcgKk1heFN1cHBvcnRlZExldmVsRm9y
UHJvZmlsZShQcm9maWxlIHByb2ZpbGUpIHsKLSB9Ci0gI2VuZGlmCi0gCi0rI2lmICFkZWZpbmVk
KFdFQlJUQ19XRUJLSVRfQlVJTEQpCi0rCi0gTlNTdHJpbmcgKk1heFN1cHBvcnRlZFByb2ZpbGVM
ZXZlbENvbnN0cmFpbmVkQmFzZWxpbmUoKSB7Ci0gI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKLSAg
IE5TU3RyaW5nICpwcm9maWxlID0gTWF4U3VwcG9ydGVkTGV2ZWxGb3JQcm9maWxlKHdlYnJ0Yzo6
SDI2NDo6a1Byb2ZpbGVDb25zdHJhaW5lZEJhc2VsaW5lKTsKLUBAIC03Myw2ICs4NSw4IEBAIE5T
U3RyaW5nICpNYXhTdXBwb3J0ZWRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEhpZ2goKSB7Ci0gICBy
ZXR1cm4ga1JUQ0xldmVsMzFDb25zdHJhaW5lZEhpZ2g7Ci0gfQotIAotKyNlbmRpZgotKwotIH0g
IC8vIG5hbWVzcGFjZQotIAotIEBpbnRlcmZhY2UgUlRDSDI2NFByb2ZpbGVMZXZlbElkICgpCi1k
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5oCi1pbmRleCA0
ZmNmZjFkZmY3OS4uZmRhYmQ4MDc0ODAgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JU
Q1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlk
ZW9EZWNvZGVyRmFjdG9yeUgyNjQuaAotQEAgLTE0LDUgKzE0LDYgQEAKLSAjaW1wb3J0ICJSVENW
aWRlb0RlY29kZXJGYWN0b3J5LmgiCi0gCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRyaWJ1dGVf
Xygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0IikpKQot
IEBpbnRlcmZhY2UgUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQgOiBOU09iamVjdCA8UlRDVmlk
ZW9EZWNvZGVyRmFjdG9yeT4KLSBAZW5kCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9S
VENWaWRlb0RlY29kZXJIMjY0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2Rlckgy
NjQuaAotaW5kZXggYjg2MDI3NjIwNmMuLmIxMGQxZTZhMDk5IDEwMDY0NAotLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJIMjY0LmgKLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMv
UlRDVmlkZW9EZWNvZGVySDI2NC5oCi1AQCAtMTQsNSArMTQsNiBAQAotICNpbXBvcnQgIlJUQ1Zp
ZGVvRGVjb2Rlci5oIgotIAotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18oKG9iamNf
cnVudGltZV9uYW1lKCJXS19SVENWaWRlb0RlY29kZXJIMjY0IikpKQotIEBpbnRlcmZhY2UgUlRD
VmlkZW9EZWNvZGVySDI2NCA6IE5TT2JqZWN0IDxSVENWaWRlb0RlY29kZXI+Ci0gQGVuZAotZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQuaAotaW5kZXggYzY0
NDA1ZTRkYWMuLjVmNmY3OGRmYTlhIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENW
aWRlb0VuY29kZXJGYWN0b3J5SDI2NC5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVv
RW5jb2RlckZhY3RvcnlIMjY0LmgKLUBAIC0xNCw1ICsxNCw2IEBACi0gI2ltcG9ydCAiUlRDVmlk
ZW9FbmNvZGVyRmFjdG9yeS5oIgotIAotIFJUQ19PQkpDX0VYUE9SVAotK19fYXR0cmlidXRlX18o
KG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NCIpKSkKLSBA
aW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0IDogTlNPYmplY3QgPFJUQ1ZpZGVv
RW5jb2RlckZhY3Rvcnk+Ci0gQGVuZAotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRD
VmlkZW9FbmNvZGVySDI2NC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0
LmgKLWluZGV4IGE5YzA1NTgwYTQxLi43NzE0YjI1ZWFhNCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlk
ZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5oCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JU
Q1ZpZGVvRW5jb2RlckgyNjQuaAotQEAgLTE1LDYgKzE1LDcgQEAKLSAjaW1wb3J0ICJSVENWaWRl
b0VuY29kZXIuaCIKLSAKLSBSVENfT0JKQ19FWFBPUlQKLStfX2F0dHJpYnV0ZV9fKChvYmpjX3J1
bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVySDI2NCIpKSkKLSBAaW50ZXJmYWNlIFJUQ1Zp
ZGVvRW5jb2RlckgyNjQgOiBOU09iamVjdCA8UlRDVmlkZW9FbmNvZGVyPgotIAotIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlkZW9Db2RlY0luZm8gKiljb2RlY0luZm87
Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9u
ZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tCi1pbmRleCAxNmFkMWZmNDdh
YS4uOTAxM2JhOTYyZmIgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5j
b2RlckgyNjQubW0KLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5t
bQotQEAgLTksMzkgKzksNzIgQEAKLSAgKgotICAqLwotIAotLSNpbXBvcnQgIlJUQ1ZpZGVvRW5j
b2RlckgyNjQuaCIKLSsjaW1wb3J0ICJXZWJSVEMvUlRDVmlkZW9Db2RlY0gyNjQuaCIKLSAKLSAj
aW1wb3J0IDxWaWRlb1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+Ci0gI2luY2x1ZGUgPHZlY3Rvcj4K
LSAKLSAjaWYgZGVmaW5lZChXRUJSVENfSU9TKQotLSNpbXBvcnQgImhlbHBlcnMvVUlEZXZpY2Ur
UlRDRGV2aWNlLmgiCi0rI2ltcG9ydCAiQ29tbW9uL1JUQ1VJQXBwbGljYXRpb25TdGF0dXNPYnNl
cnZlci5oIgotKyNpbXBvcnQgIldlYlJUQy9VSURldmljZStSVENEZXZpY2UuaCIKLSAjZW5kaWYK
LS0jaW1wb3J0ICJSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQuaCIKLS0jaW1wb3J0ICJSVENIMjY0
UHJvZmlsZUxldmVsSWQuaCIKLS0jaW1wb3J0ICJhcGkvcGVlcmNvbm5lY3Rpb24vUlRDUnRwRnJh
Z21lbnRhdGlvbkhlYWRlcitQcml2YXRlLmgiCi0tI2ltcG9ydCAiYXBpL3BlZXJjb25uZWN0aW9u
L1JUQ1ZpZGVvQ29kZWNJbmZvK1ByaXZhdGUuaCIKLS0jaW1wb3J0ICJiYXNlL1JUQ0NvZGVjU3Bl
Y2lmaWNJbmZvLmgiCi0tI2ltcG9ydCAiYmFzZS9SVENJNDIwQnVmZmVyLmgiCi0tI2ltcG9ydCAi
YmFzZS9SVENWaWRlb0VuY29kZXIuaCIKLS0jaW1wb3J0ICJiYXNlL1JUQ1ZpZGVvRnJhbWUuaCIK
LS0jaW1wb3J0ICJiYXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKLS0jaW1wb3J0ICJjb21wb25l
bnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVmZmVyLmgiCi0tI2ltcG9ydCAiaGVs
cGVycy5oIgotLQotKyNpbXBvcnQgIlBlZXJDb25uZWN0aW9uL1JUQ1ZpZGVvQ29kZWMrUHJpdmF0
ZS5oIgotKyNpbXBvcnQgIldlYlJUQy9SVENWaWRlb0NvZGVjLmgiCi0rI2ltcG9ydCAiV2ViUlRD
L1JUQ1ZpZGVvRnJhbWUuaCIKLSsjaW1wb3J0ICJXZWJSVEMvUlRDVmlkZW9GcmFtZUJ1ZmZlci5o
IgotICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9wYXJzZXIuaCIK
LSAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvcHJvZmlsZV9sZXZlbF9pZC5oIgotICNpbmNs
dWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS9iaXRyYXRlX2FkanVzdGVyLmgiCi0rI2ltcG9ydCAi
aGVscGVycy5oIgotICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBl
cy5oIgotICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vycm9y
X2NvZGVzLmgiCi0gI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgotICNpbmNsdWRlICJydGNf
YmFzZS9sb2dnaW5nLmgiCi0gI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5oIgotLSNpbmNs
dWRlICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL25hbHVfcmV3cml0ZXIuaCIKLSsj
aW5jbHVkZSAic2RrL29iamMvRnJhbWV3b3JrL0NsYXNzZXMvVmlkZW9Ub29sYm94L25hbHVfcmV3
cml0ZXIuaCIKLSsjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xvY2suaCIKLSAj
aW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5o
IgotIAotLUBpbnRlcmZhY2UgUlRDVmlkZW9FbmNvZGVySDI2NCAoKQotKyNpbmNsdWRlICJzZGsv
V2ViS2l0L0VuY29kZXJVdGlsaXRpZXMuaCIKLSsjaW5jbHVkZSAic2RrL1dlYktpdC9XZWJLaXRV
dGlsaXRpZXMuaCIKLSsKLSsjaW1wb3J0IDxkbGZjbi5oPgotKyNpbXBvcnQgPG9iamMvcnVudGlt
ZS5oPgotKwotK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoVmlkZW9Ub29sQm94KQotK1NP
RlRfTElOS19QT0lOVEVSX09QVElPTkFMKFZpZGVvVG9vbEJveCwga1ZUVmlkZW9FbmNvZGVyU3Bl
Y2lmaWNhdGlvbl9Vc2FnZSwgTlNTdHJpbmcgKikKLSsKLSsjaWYgIUVOQUJMRV9WQ1BfRU5DT0RF
UiAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQotK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1N0YW5kYXJk
RnJhbWVTaXplKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQotK3sKLSsgICAgLy8gRklY
TUU6IEVudmlzaW9uIHJlbGF4aW5nIHRoaXMgcnVsZSwgc29tZXRoaW5nIGxpa2Ugd2lkdGggYW5k
IGhlaWdodCBkaXZpZGFibGUgYnkgNCBvciA4IHNob3VsZCBiZSBnb29kIGVub3VnaC4KLSsgICAg
aWYgKHdpZHRoID09IDEyODApCi0rICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDcyMDsKLSsgICAg
aWYgKHdpZHRoID09IDcyMCkKLSsgICAgICAgIHJldHVybiBoZWlnaHQgPT0gMTI4MDsKLSsgICAg
aWYgKHdpZHRoID09IDk2MCkKLSsgICAgICAgIHJldHVybiBoZWlnaHQgPT0gNTQwOwotKyAgICBp
ZiAod2lkdGggPT0gNTQwKQotKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSA5NjA7Ci0rICAgIGlm
ICh3aWR0aCA9PSA2NDApCi0rICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDQ4MDsKLSsgICAgaWYg
KHdpZHRoID09IDQ4MCkKLSsgICAgICAgIHJldHVybiBoZWlnaHQgPT0gNjQwOwotKyAgICBpZiAo
d2lkdGggPT0gMjg4KQotKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSAzNTI7Ci0rICAgIGlmICh3
aWR0aCA9PSAzNTIpCi0rICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDI4ODsKLSsgICAgaWYgKHdp
ZHRoID09IDMyMCkKLSsgICAgICAgIHJldHVybiBoZWlnaHQgPT0gMjQwOwotKyAgICBpZiAod2lk
dGggPT0gMjQwKQotKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSAzMjA7Ci0rICAgIHJldHVybiBm
YWxzZTsKLSt9Ci0rI2VuZGlmCi0gCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUo
IldLX1JUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQiKSkpCi0rQGludGVyZmFjZSBSVENTaW5nbGVW
aWRlb0VuY29kZXJIMjY0IDogTlNPYmplY3QgPFJUQ1ZpZGVvRW5jb2Rlcj4KLSstIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDb2RlY0luZm86KFJUQ1ZpZGVvQ29kZWNJbmZvICopY29kZWNJbmZvIHNp
bXVsY2FzdEluZGV4OiAoaW50KWluZGV4OwotIC0gKHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0
YXR1cylzdGF0dXMKLSAgICAgICAgICAgICAgICAgICBmbGFnczooVlRFbmNvZGVJbmZvRmxhZ3Mp
aW5mb0ZsYWdzCi0gICAgICAgICAgICBzYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNh
bXBsZUJ1ZmZlcgotQEAgLTUxLDcgKzg0LDYgQEAgLSAodm9pZClmcmFtZVdhc0VuY29kZWQ6KE9T
U3RhdHVzKXN0YXR1cwotICAgICAgICAgICAgcmVuZGVyVGltZU1zOihpbnQ2NF90KXJlbmRlclRp
bWVNcwotICAgICAgICAgICAgICAgdGltZXN0YW1wOih1aW50MzJfdCl0aW1lc3RhbXAKLSAgICAg
ICAgICAgICAgICByb3RhdGlvbjooUlRDVmlkZW9Sb3RhdGlvbilyb3RhdGlvbjsKLS0KLSBAZW5k
Ci0gCi0gbmFtZXNwYWNlIHsgIC8vIGFub255bW91cyBuYW1lc3BhY2UKLUBAIC03MCw3ICsxMDIs
NyBAQCBjb25zdCBPU1R5cGUga05WMTJQaXhlbEZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80
MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2U7Ci0gLy8gU3RydWN0IHRoYXQgd2UgcGFzcyB0byB0
aGUgZW5jb2RlciBwZXIgZnJhbWUgdG8gZW5jb2RlLiBXZSByZWNlaXZlIGl0IGFnYWluCi0gLy8g
aW4gdGhlIGVuY29kZXIgY2FsbGJhY2suCi0gc3RydWN0IFJUQ0ZyYW1lRW5jb2RlUGFyYW1zIHsK
LS0gIFJUQ0ZyYW1lRW5jb2RlUGFyYW1zKFJUQ1ZpZGVvRW5jb2RlckgyNjQgKmUsCi0rICBSVENG
cmFtZUVuY29kZVBhcmFtcyhSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICplLAotICAgICAgICAg
ICAgICAgICAgICAgICAgUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0ICpjc2ksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IHcsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90
IGgsCi1AQCAtODUsNyArMTE3LDcgQEAgc3RydWN0IFJUQ0ZyYW1lRW5jb2RlUGFyYW1zIHsKLSAg
ICAgfQotICAgfQotIAotLSAgUlRDVmlkZW9FbmNvZGVySDI2NCAqZW5jb2RlcjsKLSsgIFJUQ1Np
bmdsZVZpZGVvRW5jb2RlckgyNjQgKmVuY29kZXI7Ci0gICBSVENDb2RlY1NwZWNpZmljSW5mb0gy
NjQgKmNvZGVjU3BlY2lmaWNJbmZvOwotICAgaW50MzJfdCB3aWR0aDsKLSAgIGludDMyX3QgaGVp
Z2h0OwotQEAgLTE3Myw4ICsyMDUsOCBAQCB2b2lkIGNvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2so
dm9pZCAqZW5jb2RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9u
OmVuY29kZVBhcmFtcy0+cm90YXRpb25dOwotIH0KLSAKLS0vLyBFeHRyYWN0IFZpZGVvVG9vbGJv
eCBwcm9maWxlIG91dCBvZiB0aGUgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdC4gSWYgdGhlcmUgaXMK
LS0vLyBubyBzcGVjaWZpYyBWaWRlb1Rvb2xib3ggcHJvZmlsZSBmb3IgdGhlIHNwZWNpZmllZCBs
ZXZlbCwgQXV0b0xldmVsIHdpbGwgYmUKLSsvLyBFeHRyYWN0IFZpZGVvVG9vbGJveCBwcm9maWxl
IG91dCBvZiB0aGUgY3JpY2tldDo6VmlkZW9Db2RlYy4gSWYgdGhlcmUgaXMgbm8KLSsvLyBzcGVj
aWZpYyBWaWRlb1Rvb2xib3ggcHJvZmlsZSBmb3IgdGhlIHNwZWNpZmllZCBsZXZlbCwgQXV0b0xl
dmVsIHdpbGwgYmUKLSAvLyByZXR1cm5lZC4gVGhlIHVzZXIgbXVzdCBpbml0aWFsaXplIHRoZSBl
bmNvZGVyIHdpdGggYSByZXNvbHV0aW9uIGFuZAotIC8vIGZyYW1lcmF0ZSBjb25mb3JtaW5nIHRv
IHRoZSBzZWxlY3RlZCBIMjY0IGxldmVsIHJlZ2FyZGxlc3MuCi0gQ0ZTdHJpbmdSZWYgRXh0cmFj
dFByb2ZpbGUod2VicnRjOjpTZHBWaWRlb0Zvcm1hdCB2aWRlb0Zvcm1hdCkgewotQEAgLTI4MCw3
ICszMTIsNyBAQCBDRlN0cmluZ1JlZiBFeHRyYWN0UHJvZmlsZSh3ZWJydGM6OlNkcFZpZGVvRm9y
bWF0IHZpZGVvRm9ybWF0KSB7Ci0gfQotIH0gIC8vIG5hbWVzcGFjZQotIAotLUBpbXBsZW1lbnRh
dGlvbiBSVENWaWRlb0VuY29kZXJIMjY0IHsKLStAaW1wbGVtZW50YXRpb24gUlRDU2luZ2xlVmlk
ZW9FbmNvZGVySDI2NCB7Ci0gICBSVENWaWRlb0NvZGVjSW5mbyAqX2NvZGVjSW5mbzsKLSAgIHN0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkJpdHJhdGVBZGp1c3Rlcj4gX2JpdHJhdGVBZGp1c3RlcjsK
LSAgIHVpbnQzMl90IF90YXJnZXRCaXRyYXRlQnBzOwotQEAgLTI5MCwxMiArMzIyLDE0IEBAIEBp
bXBsZW1lbnRhdGlvbiBSVENWaWRlb0VuY29kZXJIMjY0IHsKLSAgIFJUQ1ZpZGVvRW5jb2RlckNh
bGxiYWNrIF9jYWxsYmFjazsKLSAgIGludDMyX3QgX3dpZHRoOwotICAgaW50MzJfdCBfaGVpZ2h0
OwotLSAgVlRDb21wcmVzc2lvblNlc3Npb25SZWYgX2NvbXByZXNzaW9uU2Vzc2lvbjsKLS0gIENW
UGl4ZWxCdWZmZXJQb29sUmVmIF9waXhlbEJ1ZmZlclBvb2w7Ci0rICBDb21wcmVzc2lvblNlc3Np
b25SZWYgX2NvbXByZXNzaW9uU2Vzc2lvbjsKLSAgIFJUQ1ZpZGVvQ29kZWNNb2RlIF9tb2RlOwot
IAotICAgd2VicnRjOjpIMjY0Qml0c3RyZWFtUGFyc2VyIF9oMjY0Qml0c3RyZWFtUGFyc2VyOwot
ICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gX2ZyYW1lU2NhbGVCdWZmZXI7Ci0rCi0rICB3ZWJydGM6
OlZpZGVvQ29kZWMgX25hdGl2ZVZpZGVvQ29kZWM7Ci0rICBpbnQgX3NpbXVsY2FzdEluZGV4Owot
IH0KLSAKLSAvLyAuNSBpcyBzZXQgYXMgYSBtaW5pbnVtIHRvIHByZXZlbnQgb3ZlcmNvbXBlbnNh
dGluZyBmb3IgbGFyZ2UgdGVtcG9yYXJ5Ci1AQCAtMzA1LDE0ICszMzksMTkgQEAgQGltcGxlbWVu
dGF0aW9uIFJUQ1ZpZGVvRW5jb2RlckgyNjQgewotIC8vIGRyYXN0aWNhbGx5IHJlZHVjZWQgYml0
cmF0ZSwgc28gd2Ugd2FudCB0byBhdm9pZCB0aGF0LiBJbiBzdGVhZHkgc3RhdGUKLSAvLyBjb25k
aXRpb25zLCAwLjk1IHNlZW1zIHRvIGdpdmUgdXMgYmV0dGVyIG92ZXJhbGwgYml0cmF0ZSBvdmVy
IGxvbmcgcGVyaW9kcwotIC8vIG9mIHRpbWUuCi0tLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29k
ZWNJbmZvOihSVENWaWRlb0NvZGVjSW5mbyAqKWNvZGVjSW5mbyB7Ci0rLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoQ29kZWNJbmZvOihSVENWaWRlb0NvZGVjSW5mbyAqKWNvZGVjSW5mbyBzaW11bGNh
c3RJbmRleDooaW50KWluZGV4IHsKLSAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAg
IF9jb2RlY0luZm8gPSBjb2RlY0luZm87Ci0gICAgIF9iaXRyYXRlQWRqdXN0ZXIucmVzZXQobmV3
IHdlYnJ0Yzo6Qml0cmF0ZUFkanVzdGVyKC41LCAuOTUpKTsKLSAgICAgX3BhY2tldGl6YXRpb25N
b2RlID0gUlRDSDI2NFBhY2tldGl6YXRpb25Nb2RlTm9uSW50ZXJsZWF2ZWQ7Ci0gICAgIF9wcm9m
aWxlID0gRXh0cmFjdFByb2ZpbGUoW2NvZGVjSW5mbyBuYXRpdmVTZHBWaWRlb0Zvcm1hdF0pOwot
KyAgICBfc2ltdWxjYXN0SW5kZXggPSBpbmRleDsKLSAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAi
VXNpbmcgcHJvZmlsZSAiIDw8IENGU3RyaW5nVG9TdHJpbmcoX3Byb2ZpbGUpOwotICAgICBSVENf
Q0hFQ0soW2NvZGVjSW5mby5uYW1lIGlzRXF1YWxUb1N0cmluZzprUlRDVmlkZW9Db2RlY0gyNjRO
YW1lXSk7Ci0rCi0rI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKLSsgICAgW1JUQ1VJQXBwbGljYXRp
b25TdGF0dXNPYnNlcnZlciBwcmVwYXJlRm9yVXNlXTsKLSsjZW5kaWYKLSAgIH0KLSAgIHJldHVy
biBzZWxmOwotIH0KLUBAIC0zMjksOSArMzY4LDEyIEBAIC0gKE5TSW50ZWdlcilzdGFydEVuY29k
ZVdpdGhTZXR0aW5nczooUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MgKilzZXR0aW5ncwotICAgX3dp
ZHRoID0gc2V0dGluZ3Mud2lkdGg7Ci0gICBfaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0OwotICAg
X21vZGUgPSBzZXR0aW5ncy5tb2RlOwotKyAgX25hdGl2ZVZpZGVvQ29kZWMgPSBzZXR0aW5ncy5u
YXRpdmVWaWRlb0NvZGVjOwotKwotKyAgUlRDX0RDSEVDSyhfbmF0aXZlVmlkZW9Db2RlYy5udW1i
ZXJPZlNpbXVsY2FzdFN0cmVhbXMgIT0gMSk7Ci0gCi0gICAvLyBXZSBjYW4gb25seSBzZXQgYXZl
cmFnZSBiaXRyYXRlIG9uIHRoZSBIVyBlbmNvZGVyLgotLSAgX3RhcmdldEJpdHJhdGVCcHMgPSBz
ZXR0aW5ncy5zdGFydEJpdHJhdGUgKiAxMDAwOyAgLy8gc3RhcnRCaXRyYXRlIGlzIGluIGticHMu
Ci0rICBfdGFyZ2V0Qml0cmF0ZUJwcyA9IHNldHRpbmdzLnN0YXJ0Qml0cmF0ZTsKLSAgIF9iaXRy
YXRlQWRqdXN0ZXItPlNldFRhcmdldEJpdHJhdGVCcHMoX3RhcmdldEJpdHJhdGVCcHMpOwotIAot
ICAgLy8gVE9ETyh0a2NoaW4pOiBUcnkgc2V0dGluZyBwYXlsb2FkIHNpemUgdmlhCi1AQCAtMzQ4
LDEwICszOTAsMjAgQEAgLSAoTlNJbnRlZ2VyKWVuY29kZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1l
Ci0gICBpZiAoIV9jYWxsYmFjayB8fCAhX2NvbXByZXNzaW9uU2Vzc2lvbikgewotICAgICByZXR1
cm4gV0VCUlRDX1ZJREVPX0NPREVDX1VOSU5JVElBTElaRUQ7Ci0gICB9Ci0rI2lmIGRlZmluZWQo
V0VCUlRDX0lPUykKLSsgIGlmICghW1tSVENVSUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIgc2hh
cmVkSW5zdGFuY2VdIGlzQXBwbGljYXRpb25BY3RpdmVdKSB7Ci0rICAgIC8vIElnbm9yZSBhbGwg
ZW5jb2RlIHJlcXVlc3RzIHdoZW4gYXBwIGlzbid0IGFjdGl2ZS4gSW4gdGhpcyBzdGF0ZSwgdGhl
Ci0rICAgIC8vIGhhcmR3YXJlIGVuY29kZXIgaGFzIGJlZW4gaW52YWxpZGF0ZWQgYnkgdGhlIE9T
LgotKyAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwotKyAgfQotKyNlbmRpZgotICAg
Qk9PTCBpc0tleWZyYW1lUmVxdWlyZWQgPSBOTzsKLSAKLSAgIC8vIEdldCBhIHBpeGVsIGJ1ZmZl
ciBmcm9tIHRoZSBwb29sIGFuZCBjb3B5IGZyYW1lIGRhdGEgb3Zlci4KLS0gIGlmIChbc2VsZiBy
ZXNldENvbXByZXNzaW9uU2Vzc2lvbklmTmVlZGVkV2l0aEZyYW1lOmZyYW1lXSkgewotKyAgQ1ZQ
aXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29sID0KLSsgICAgICBDb21wcmVzc2lvblNl
c3Npb25HZXRQaXhlbEJ1ZmZlclBvb2woX2NvbXByZXNzaW9uU2Vzc2lvbik7Ci0rICBpZiAoW3Nl
bGYgcmVzZXRDb21wcmVzc2lvblNlc3Npb25JZk5lZWRlZEZvclBvb2w6cGl4ZWxCdWZmZXJQb29s
IHdpdGhGcmFtZTpmcmFtZV0pIHsKLSsgICAgcGl4ZWxCdWZmZXJQb29sID0gQ29tcHJlc3Npb25T
ZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sKF9jb21wcmVzc2lvblNlc3Npb24pOwotICAgICBpc0tl
eWZyYW1lUmVxdWlyZWQgPSBZRVM7Ci0gICB9Ci0gCi1AQCAtMzY4LDcgKzQyMCw3IEBAIC0gKE5T
SW50ZWdlcillbmNvZGU6KFJUQ1ZpZGVvRnJhbWUgKilmcmFtZQotICAgICAgIENWQnVmZmVyUmV0
YWluKHBpeGVsQnVmZmVyKTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAvLyBDcm9wcGluZyByZXF1
aXJlZCwgd2UgbmVlZCB0byBjcm9wIGFuZCBzY2FsZSB0byBhIG5ldyBwaXhlbCBidWZmZXIuCi0t
ICAgICAgcGl4ZWxCdWZmZXIgPSBDcmVhdGVQaXhlbEJ1ZmZlcihfcGl4ZWxCdWZmZXJQb29sKTsK
LSsgICAgICBwaXhlbEJ1ZmZlciA9IENyZWF0ZVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyUG9vbCk7
Ci0gICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewotICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19FUlJPUjsKLSAgICAgICB9Ci1AQCAtMzkxLDcgKzQ0Myw3IEBAIC0gKE5TSW50ZWdl
cillbmNvZGU6KFJUQ1ZpZGVvRnJhbWUgKilmcmFtZQotIAotICAgaWYgKCFwaXhlbEJ1ZmZlcikg
ewotICAgICAvLyBXZSBkaWQgbm90IGhhdmUgYSBuYXRpdmUgZnJhbWUgYnVmZmVyCi0tICAgIHBp
eGVsQnVmZmVyID0gQ3JlYXRlUGl4ZWxCdWZmZXIoX3BpeGVsQnVmZmVyUG9vbCk7Ci0rICAgIHBp
eGVsQnVmZmVyID0gQ3JlYXRlUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXJQb29sKTsKLSAgICAgaWYg
KCFwaXhlbEJ1ZmZlcikgewotICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7
Ci0gICAgIH0KLUBAIC00MzQsNyArNDg2LDcgQEAgLSAoTlNJbnRlZ2VyKWVuY29kZTooUlRDVmlk
ZW9GcmFtZSAqKWZyYW1lCi0gICAvLyBVcGRhdGUgdGhlIGJpdHJhdGUgaWYgbmVlZGVkLgotICAg
W3NlbGYgc2V0Qml0cmF0ZUJwczpfYml0cmF0ZUFkanVzdGVyLT5HZXRBZGp1c3RlZEJpdHJhdGVC
cHMoKV07Ci0gCi0tICBPU1N0YXR1cyBzdGF0dXMgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29k
ZUZyYW1lKF9jb21wcmVzc2lvblNlc3Npb24sCi0rICBPU1N0YXR1cyBzdGF0dXMgPSBDb21wcmVz
c2lvblNlc3Npb25FbmNvZGVGcmFtZShfY29tcHJlc3Npb25TZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbEJ1ZmZlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2Vu
dGF0aW9uVGltZVN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrQ01UaW1lSW52YWxpZCwKLUBAIC00NDcsMTQgKzQ5OSw3IEBAIC0gKE5T
SW50ZWdlcillbmNvZGU6KFJUQ1ZpZGVvRnJhbWUgKilmcmFtZQotICAgaWYgKHBpeGVsQnVmZmVy
KSB7Ci0gICAgIENWQnVmZmVyUmVsZWFzZShwaXhlbEJ1ZmZlcik7Ci0gICB9Ci0tCi0tICBpZiAo
c3RhdHVzID09IGtWVEludmFsaWRTZXNzaW9uRXJyKSB7Ci0tICAgIC8vIFRoaXMgZXJyb3Igb2Nj
dXJzIHdoZW4gZW50ZXJpbmcgZm9yZWdyb3VuZCBhZnRlciBiYWNrZ3JvdW5kaW5nIHRoZSBhcHAu
Ci0tICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJJbnZhbGlkIGNvbXByZXNzaW9uIHNlc3Npb24s
IHJlc2V0dGluZy4iOwotLSAgICBbc2VsZiByZXNldENvbXByZXNzaW9uU2Vzc2lvbldpdGhQaXhl
bEZvcm1hdDpbc2VsZiBwaXhlbEZvcm1hdE9mRnJhbWU6ZnJhbWVdXTsKLS0KLS0gICAgcmV0dXJu
IFdFQlJUQ19WSURFT19DT0RFQ19OT19PVVRQVVQ7Ci0tICB9IGVsc2UgaWYgKHN0YXR1cyAhPSBu
b0VycikgewotKyAgaWYgKHN0YXR1cyAhPSBub0VycikgewotICAgICBSVENfTE9HKExTX0VSUk9S
KSA8PCAiRmFpbGVkIHRvIGVuY29kZSBmcmFtZSB3aXRoIGNvZGU6ICIgPDwgc3RhdHVzOwotICAg
ICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwotICAgfQotQEAgLTQ2NSw4ICs1MTAs
OCBAQCAtICh2b2lkKXNldENhbGxiYWNrOihSVENWaWRlb0VuY29kZXJDYWxsYmFjayljYWxsYmFj
ayB7Ci0gICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKLSB9Ci0gCi0tLSAoaW50KXNldEJpdHJhdGU6
KHVpbnQzMl90KWJpdHJhdGVLYml0IGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsKLS0g
IF90YXJnZXRCaXRyYXRlQnBzID0gMTAwMCAqIGJpdHJhdGVLYml0OwotKy0gKGludClzZXRCaXRy
YXRlOih1aW50MzJfdCliaXRyYXRlQnBzIGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsK
LSsgIF90YXJnZXRCaXRyYXRlQnBzID0gYml0cmF0ZUJwczsKLSAgIF9iaXRyYXRlQWRqdXN0ZXIt
PlNldFRhcmdldEJpdHJhdGVCcHMoX3RhcmdldEJpdHJhdGVCcHMpOwotICAgW3NlbGYgc2V0Qml0
cmF0ZUJwczpfYml0cmF0ZUFkanVzdGVyLT5HZXRBZGp1c3RlZEJpdHJhdGVCcHMoKV07Ci0gICBy
ZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwotQEAgLTQ4Myw0NCArNTI4LDUxIEBAIC0gKE5T
SW50ZWdlcilyZWxlYXNlRW5jb2RlciB7Ci0gICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09L
OwotIH0KLSAKLS0tIChPU1R5cGUpcGl4ZWxGb3JtYXRPZkZyYW1lOihSVENWaWRlb0ZyYW1lICop
ZnJhbWUgewotLSAgLy8gVXNlIE5WMTIgZm9yIG5vbi1uYXRpdmUgZnJhbWVzLgotLSAgaWYgKFtm
cmFtZS5idWZmZXIgaXNLaW5kT2ZDbGFzczpbUlRDQ1ZQaXhlbEJ1ZmZlciBjbGFzc11dKSB7Ci0t
ICAgIFJUQ0NWUGl4ZWxCdWZmZXIgKnJ0Y1BpeGVsQnVmZmVyID0gKFJUQ0NWUGl4ZWxCdWZmZXIg
KilmcmFtZS5idWZmZXI7Ci0tICAgIHJldHVybiBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRU
eXBlKHJ0Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyKTsKLS0gIH0KLS0KLS0gIHJldHVybiBrTlYx
MlBpeGVsRm9ybWF0OwotLX0KLS0KLS0tIChCT09MKXJlc2V0Q29tcHJlc3Npb25TZXNzaW9uSWZO
ZWVkZWRXaXRoRnJhbWU6KFJUQ1ZpZGVvRnJhbWUgKilmcmFtZSB7Ci0rLSAoQk9PTClyZXNldENv
bXByZXNzaW9uU2Vzc2lvbklmTmVlZGVkRm9yUG9vbDooQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYpcGl4
ZWxCdWZmZXJQb29sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhG
cmFtZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1lIHsKLSAgIEJPT0wgcmVzZXRDb21wcmVzc2lvblNl
c3Npb24gPSBOTzsKLSAKLSsjaWYgZGVmaW5lZChXRUJSVENfSU9TKQotKyAgaWYgKCFwaXhlbEJ1
ZmZlclBvb2wpIHsKLSsgICAgLy8gS2luZCBvZiBhIGhhY2suIE9uIGJhY2tncm91bmRpbmcsIHRo
ZSBjb21wcmVzc2lvbiBzZXNzaW9uIHNlZW1zIHRvIGdldAotKyAgICAvLyBpbnZhbGlkYXRlZCwg
d2hpY2ggY2F1c2VzIHRoaXMgcG9vbCBjYWxsIHRvIGZhaWwgd2hlbiB0aGUgYXBwbGljYXRpb24K
LSsgICAgLy8gaXMgZm9yZWdyb3VuZGVkIGFuZCBmcmFtZXMgYXJlIGJlaW5nIHNlbnQgZm9yIGVu
Y29kaW5nIGFnYWluLgotKyAgICAvLyBSZXNldHRpbmcgdGhlIHNlc3Npb24gd2hlbiB0aGlzIGhh
cHBlbnMgZml4ZXMgdGhlIGlzc3VlLgotKyAgICAvLyBJbiBhZGRpdGlvbiB3ZSByZXF1ZXN0IGEg
a2V5ZnJhbWUgc28gdmlkZW8gY2FuIHJlY292ZXIgcXVpY2tseS4KLSsgICAgcmVzZXRDb21wcmVz
c2lvblNlc3Npb24gPSBZRVM7Ci0rICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlJlc2V0dGluZyBj
b21wcmVzc2lvbiBzZXNzaW9uIGR1ZSB0byBpbnZhbGlkIHBvb2wuIjsKLSsgIH0KLSsjZW5kaWYK
LSsKLSAgIC8vIElmIHdlJ3JlIGNhcHR1cmluZyBuYXRpdmUgZnJhbWVzIGluIGFub3RoZXIgcGl4
ZWwgZm9ybWF0IHRoYW4gdGhlIGNvbXByZXNzaW9uIHNlc3Npb24gaXMKLSAgIC8vIGNvbmZpZ3Vy
ZWQgd2l0aCwgbWFrZSBzdXJlIHRoZSBjb21wcmVzc2lvbiBzZXNzaW9uIGlzIHJlc2V0IHVzaW5n
IHRoZSBjb3JyZWN0IHBpeGVsIGZvcm1hdC4KLS0gIE9TVHlwZSBmcmFtZVBpeGVsRm9ybWF0ID0g
W3NlbGYgcGl4ZWxGb3JtYXRPZkZyYW1lOmZyYW1lXTsKLS0KLS0gIGlmIChfY29tcHJlc3Npb25T
ZXNzaW9uKSB7Ci0rICAvLyBJZiB3ZSdyZSBjYXB0dXJpbmcgbm9uLW5hdGl2ZSBmcmFtZXMgYW5k
IHRoZSBjb21wcmVzc2lvbiBzZXNzaW9uIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIG5vbi1OVjEyCi0r
ICAvLyBmb3JtYXQsIHJlc2V0IGl0IHRvIE5WMTIuCi0rICBPU1R5cGUgZnJhbWVQaXhlbEZvcm1h
dCA9IGtOVjEyUGl4ZWxGb3JtYXQ7Ci0rICBpZiAocGl4ZWxCdWZmZXJQb29sKSB7Ci0gICAgIC8v
IFRoZSBwb29sIGF0dHJpYnV0ZSBga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXlgIGNh
biBjb250YWluIGVpdGhlciBhbiBhcnJheSBvZiBwaXhlbAotICAgICAvLyBmb3JtYXRzIG9yIGEg
c2luZ2xlIHBpeGVsIGZvcm1hdC4KLSAgICAgTlNEaWN0aW9uYXJ5ICpwb29sQXR0cmlidXRlcyA9
Ci0tICAgICAgICAoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopQ1ZQaXhlbEJ1ZmZlclBvb2xHZXRQ
aXhlbEJ1ZmZlckF0dHJpYnV0ZXMoX3BpeGVsQnVmZmVyUG9vbCk7Ci0rICAgICAgICAoX19icmlk
Z2UgTlNEaWN0aW9uYXJ5ICopQ1ZQaXhlbEJ1ZmZlclBvb2xHZXRQaXhlbEJ1ZmZlckF0dHJpYnV0
ZXMocGl4ZWxCdWZmZXJQb29sKTsKLSAgICAgaWQgcGl4ZWxGb3JtYXRzID0KLSAgICAgICAgIFtw
b29sQXR0cmlidXRlcyBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxC
dWZmZXJQaXhlbEZvcm1hdFR5cGVLZXldOwotICAgICBOU0FycmF5PE5TTnVtYmVyICo+ICpjb21w
cmVzc2lvblNlc3Npb25QaXhlbEZvcm1hdHMgPSBuaWw7Ci0gICAgIGlmIChbcGl4ZWxGb3JtYXRz
IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkgewotICAgICAgIGNvbXByZXNzaW9uU2Vz
c2lvblBpeGVsRm9ybWF0cyA9IChOU0FycmF5ICopcGl4ZWxGb3JtYXRzOwotLSAgICB9IGVsc2Ug
aWYgKFtwaXhlbEZvcm1hdHMgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkgewotKyAg
ICB9IGVsc2UgewotICAgICAgIGNvbXByZXNzaW9uU2Vzc2lvblBpeGVsRm9ybWF0cyA9IEBbIChO
U051bWJlciAqKXBpeGVsRm9ybWF0cyBdOwotICAgICB9Ci0gCi0rICAgIGlmIChbZnJhbWUuYnVm
ZmVyIGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkgewotKyAgICAgIFJU
Q0NWUGl4ZWxCdWZmZXIgKnJ0Y1BpeGVsQnVmZmVyID0gKFJUQ0NWUGl4ZWxCdWZmZXIgKilmcmFt
ZS5idWZmZXI7Ci0rICAgICAgZnJhbWVQaXhlbEZvcm1hdCA9IENWUGl4ZWxCdWZmZXJHZXRQaXhl
bEZvcm1hdFR5cGUocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOwotKyAgICB9Ci0rCi0gICAg
IGlmICghW2NvbXByZXNzaW9uU2Vzc2lvblBpeGVsRm9ybWF0cwotICAgICAgICAgICAgIGNvbnRh
aW5zT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoTG9uZzpmcmFtZVBpeGVsRm9ybWF0XV0pIHsK
LSAgICAgICByZXNldENvbXByZXNzaW9uU2Vzc2lvbiA9IFlFUzsKLSAgICAgICBSVENfTE9HKExT
X0lORk8pIDw8ICJSZXNldHRpbmcgY29tcHJlc3Npb24gc2Vzc2lvbiBkdWUgdG8gbm9uLW1hdGNo
aW5nIHBpeGVsIGZvcm1hdC4iOwotICAgICB9Ci0tICB9IGVsc2UgewotLSAgICByZXNldENvbXBy
ZXNzaW9uU2Vzc2lvbiA9IFlFUzsKLSAgIH0KLSAKLSAgIGlmIChyZXNldENvbXByZXNzaW9uU2Vz
c2lvbikgewotQEAgLTU1NywyMiArNjA5LDI2IEBAIC0gKGludClyZXNldENvbXByZXNzaW9uU2Vz
c2lvbldpdGhQaXhlbEZvcm1hdDooT1NUeXBlKWZyYW1lUGl4ZWxGb3JtYXQgewotICAgICBDRlJl
bGVhc2UocGl4ZWxGb3JtYXQpOwotICAgICBwaXhlbEZvcm1hdCA9IG51bGxwdHI7Ci0gICB9Ci0t
ICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGVuY29kZXJfc3BlY3MgPSBudWxscHRyOwotLSNpZiBk
ZWZpbmVkKFdFQlJUQ19NQUMpICYmICFkZWZpbmVkKFdFQlJUQ19JT1MpCi0rICBDRkRpY3Rpb25h
cnlSZWYgZW5jb2RlclNwZWNzID0gbnVsbHB0cjsKLSsjaWYgIWRlZmluZWQoV0VCUlRDX0lPUykK
LSsgIGF1dG8gdXNlSGFyZHdhcmVFbmNvZGVyID0gd2VicnRjOjppc0gyNjRIYXJkd2FyZUVuY29k
ZXJBbGxvd2VkKCkgPyBrQ0ZCb29sZWFuVHJ1ZSA6IGtDRkJvb2xlYW5GYWxzZTsKLSAgIC8vIEN1
cnJlbnRseSBodyBhY2NsIGlzIHN1cHBvcnRlZCBhYm92ZSAzNjBwIG9uIG1hYywgYmVsb3cgMzYw
cAotICAgLy8gdGhlIGNvbXByZXNzaW9uIHNlc3Npb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggaHcg
YWNjbCBkaXNhYmxlZC4KLS0gIGVuY29kZXJfc3BlY3MgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlKAotLSAgICAgIG51bGxwdHIsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotLSAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUoZW5jb2Rlcl9zcGVjcywKLS0gICAgICAgICAgICAgICAgICAgICAgIGtWVFZpZGVvRW5jb2Rl
clNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2RlciwKLS0g
ICAgICAgICAgICAgICAgICAgICAgIGtDRkJvb2xlYW5UcnVlKTsKLSsgIENGVHlwZVJlZiBzZXNz
aW9uS2V5c1tdID0geyBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJl
QWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsIGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fUmVx
dWlyZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsIGtWVENvbXByZXNzaW9uUHJvcGVy
dHlLZXlfUmVhbFRpbWUgfTsKLSsgIENGVHlwZVJlZiBzZXNzaW9uVmFsdWVzW10gPSB7IHVzZUhh
cmR3YXJlRW5jb2RlciwgdXNlSGFyZHdhcmVFbmNvZGVyLCBrQ0ZCb29sZWFuVHJ1ZSB9OwotKyAg
ZW5jb2RlclNwZWNzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNl
c3Npb25LZXlzLCBzZXNzaW9uVmFsdWVzLCAzLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSsjZWxzZQotKyAgQ0ZUeXBl
UmVmIHNlc3Npb25LZXlzW10gPSB7IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUg
fTsKLSsgIENGVHlwZVJlZiBzZXNzaW9uVmFsdWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07Ci0r
ICBlbmNvZGVyU3BlY3MgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
c2Vzc2lvbktleXMsIHNlc3Npb25WYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICNlbmRpZgotKwotICAg
T1NTdGF0dXMgc3RhdHVzID0KLS0gICAgICBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZShudWxs
cHRyLCAgLy8gdXNlIGRlZmF1bHQgYWxsb2NhdG9yCi0rICAgICAgQ29tcHJlc3Npb25TZXNzaW9u
Q3JlYXRlKG51bGxwdHIsICAvLyB1c2UgZGVmYXVsdCBhbGxvY2F0b3IKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX2hlaWdodCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ01WaWRl
b0NvZGVjVHlwZV9IMjY0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29k
ZXJfc3BlY3MsICAvLyB1c2UgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgZW5jb2RlciBpZiBhdmFpbGFi
bGUKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29kZWNUeXBlSDI2NCwKLSsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyU3BlY3MsICAvLyB1c2UgaGFy
ZHdhcmUgYWNjZWxlcmF0ZWQgZW5jb2RlciBpZiBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VyY2VBdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsICAvLyB1c2UgZGVmYXVsdCBjb21wcmVzc2VkIGRhdGEgYWxs
b2NhdG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25PdXRw
dXRDYWxsYmFjaywKLUBAIC01ODIsMzIgKzYzOCwxMDUgQEAgLSAoaW50KXJlc2V0Q29tcHJlc3Np
b25TZXNzaW9uV2l0aFBpeGVsRm9ybWF0OihPU1R5cGUpZnJhbWVQaXhlbEZvcm1hdCB7Ci0gICAg
IENGUmVsZWFzZShzb3VyY2VBdHRyaWJ1dGVzKTsKLSAgICAgc291cmNlQXR0cmlidXRlcyA9IG51
bGxwdHI7Ci0gICB9Ci0tICBpZiAoZW5jb2Rlcl9zcGVjcykgewotLSAgICBDRlJlbGVhc2UoZW5j
b2Rlcl9zcGVjcyk7Ci0tICAgIGVuY29kZXJfc3BlY3MgPSBudWxscHRyOwotKyAgaWYgKGVuY29k
ZXJTcGVjcykgewotKyAgICBDRlJlbGVhc2UoZW5jb2RlclNwZWNzKTsKLSsgICAgZW5jb2RlclNw
ZWNzID0gbnVsbHB0cjsKLSAgIH0KLSsKLSsjaWYgRU5BQkxFX1ZDUF9FTkNPREVSIHx8IGRlZmlu
ZWQoV0VCUlRDX0lPUykKLSAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKLSAgICAgUlRDX0xPRyhM
U19FUlJPUikgPDwgIkZhaWxlZCB0byBjcmVhdGUgY29tcHJlc3Npb24gc2Vzc2lvbjogIiA8PCBz
dGF0dXM7Ci0gICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0gICB9Ci0rI2Vu
ZGlmCi0gI2lmIGRlZmluZWQoV0VCUlRDX01BQykgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKLSAg
IENGQm9vbGVhblJlZiBod2FjY2xfZW5hYmxlZCA9IG51bGxwdHI7Ci0tICBzdGF0dXMgPSBWVFNl
c3Npb25Db3B5UHJvcGVydHkoX2NvbXByZXNzaW9uU2Vzc2lvbiwKLSsgIGlmIChzdGF0dXMgPT0g
bm9FcnIpIHsKLSsgICAgc3RhdHVzID0gVlRTZXNzaW9uQ29weVByb3BlcnR5KF9jb21wcmVzc2lv
blNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1ZUQ29tcHJlc3Np
b25Qcm9wZXJ0eUtleV9Vc2luZ0hhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmaHdhY2NsX2VuYWJsZWQpOwotKyAgfQotICAgaWYgKHN0YXR1cyA9
PSBub0VyciAmJiAoQ0ZCb29sZWFuR2V0VmFsdWUoaHdhY2NsX2VuYWJsZWQpKSkgewotICAgICBS
VENfTE9HKExTX0lORk8pIDw8ICJDb21wcmVzc2lvbiBzZXNzaW9uIGNyZWF0ZWQgd2l0aCBodyBh
Y2NsIGVuYWJsZWQiOwotICAgfSBlbHNlIHsKLSAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiQ29t
cHJlc3Npb24gc2Vzc2lvbiBjcmVhdGVkIHdpdGggaHcgYWNjbCBkaXNhYmxlZCI7Ci0rCi0rI2lm
ICFFTkFCTEVfVkNQX0VOQ09ERVIgJiYgIWRlZmluZWQoV0VCUlRDX0lPUykKLSsgICAgaWYgKCFp
c1N0YW5kYXJkRnJhbWVTaXplKF93aWR0aCwgX2hlaWdodCkpIHsKLSsgICAgICBSVENfTE9HKExT
X0VSUk9SKSA8PCAiVXNpbmcgSDI2NCBzb2Z0d2FyZSBlbmNvZGVyIHdpdGggbm9uIHN0YW5kYXJk
IHNpemUgaXMgbm90IHN1cHBvcnRlZCI7Ci0rICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19FUlJPUjsKLSsgICAgfQotKwotKyAgICBpZiAoIWdldGtWVFZpZGVvRW5jb2RlclNwZWNpZmlj
YXRpb25fVXNhZ2UoKSkgewotKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJSVENTaW5nbGVW
aWRlb0VuY29kZXJIMjY0IGNhbm5vdCBjcmVhdGUgYSBIMjY0IHNvZnR3YXJlIGVuY29kZXIiOwot
KyAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0rICAgIH0KLSsKLSsgICAg
Q0ZEaWN0aW9uYXJ5UmVmIGlvU3VyZmFjZVZhbHVlID0gQ3JlYXRlQ0ZUeXBlRGljdGlvbmFyeShu
dWxscHRyLCBudWxscHRyLCAwKTsKLSsgICAgaW50NjRfdCBwaXhlbEZvcm1hdFR5cGUgPSBmcmFt
ZVBpeGVsRm9ybWF0OwotKyAgICBDRk51bWJlclJlZiBwaXhlbEZvcm1hdCA9IENGTnVtYmVyQ3Jl
YXRlKG51bGxwdHIsIGtDRk51bWJlckxvbmdUeXBlLCAmcGl4ZWxGb3JtYXRUeXBlKTsKLSsKLSsg
ICAgY29uc3Qgc2l6ZV90IGF0dHJpYnV0ZXNTaXplID0gMzsKLSsgICAgQ0ZUeXBlUmVmIGtleXNb
YXR0cmlidXRlc1NpemVdID0gewotKyAgICAgIGtDVlBpeGVsQnVmZmVyT3BlbkdMQ29tcGF0aWJp
bGl0eUtleSwKLSsgICAgICBrQ1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXksCi0r
ICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXkKLSsgICAgfTsKLSsgICAgQ0ZU
eXBlUmVmIHZhbHVlc1thdHRyaWJ1dGVzU2l6ZV0gPSB7Ci0rICAgICAga0NGQm9vbGVhblRydWUs
Ci0rICAgICAgaW9TdXJmYWNlVmFsdWUsCi0rICAgICAgcGl4ZWxGb3JtYXR9OwotKyAgICBDRkRp
Y3Rpb25hcnlSZWYgc291cmNlQXR0cmlidXRlcyA9IENyZWF0ZUNGVHlwZURpY3Rpb25hcnkoa2V5
cywgdmFsdWVzLCBhdHRyaWJ1dGVzU2l6ZSk7Ci0rCi0rICAgIGlmIChpb1N1cmZhY2VWYWx1ZSkg
ewotKyAgICAgIENGUmVsZWFzZShpb1N1cmZhY2VWYWx1ZSk7Ci0rICAgICAgaW9TdXJmYWNlVmFs
dWUgPSBudWxscHRyOwotKyAgICB9Ci0rICAgIGlmIChwaXhlbEZvcm1hdCkgewotKyAgICAgIENG
UmVsZWFzZShwaXhlbEZvcm1hdCk7Ci0rICAgICAgcGl4ZWxGb3JtYXQgPSBudWxscHRyOwotKyAg
ICB9Ci0rCi0rICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgZW5jb2RlclNwZWNzID0gQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShudWxscHRyLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSsgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoZW5jb2RlclNwZWNzLCBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0Vu
YWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsIGtDRkJvb2xlYW5GYWxzZSk7Ci0r
ICAgIGludCB1c2FnZVZhbHVlID0gMTsKLSsgICAgQ0ZOdW1iZXJSZWYgdXNhZ2UgPSBDRk51bWJl
ckNyZWF0ZShudWxscHRyLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdXNhZ2VWYWx1ZSk7Ci0rICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGVuY29kZXJTcGVjcywgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWdl
dGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fVXNhZ2UoKSwgdXNhZ2UpOwotKwotKyAgICBp
ZiAodXNhZ2UpIHsKLSsgICAgICBDRlJlbGVhc2UodXNhZ2UpOwotKyAgICAgIHVzYWdlID0gbnVs
bHB0cjsKLSsgICAgfQotKwotKyAgICBbc2VsZiBkZXN0cm95Q29tcHJlc3Npb25TZXNzaW9uXTsK
LSsKLSsgICAgT1NTdGF0dXMgc3RhdHVzID0KLSsgICAgICBDb21wcmVzc2lvblNlc3Npb25DcmVh
dGUobnVsbHB0ciwgIC8vIHVzZSBkZWZhdWx0IGFsbG9jYXRvcgotKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF93aWR0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfaGVpZ2h0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2RlY1R5cGVI
MjY0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJTcGVjcywKLSsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBdHRyaWJ1dGVzLAotKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsICAvLyB1c2UgZGVmYXVsdCBjb21w
cmVzc2VkIGRhdGEgYWxsb2NhdG9yCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29tcHJlc3Npb25PdXRwdXRDYWxsYmFjaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZfY29tcHJl
c3Npb25TZXNzaW9uKTsKLSsgICAgaWYgKHNvdXJjZUF0dHJpYnV0ZXMpIHsKLSsgICAgICBDRlJl
bGVhc2Uoc291cmNlQXR0cmlidXRlcyk7Ci0rICAgICAgc291cmNlQXR0cmlidXRlcyA9IG51bGxw
dHI7Ci0rICAgIH0KLSsgICAgaWYgKGVuY29kZXJTcGVjcykgewotKyAgICAgIENGUmVsZWFzZShl
bmNvZGVyU3BlY3MpOwotKyAgICAgIGVuY29kZXJTcGVjcyA9IG51bGxwdHI7Ci0rICAgIH0KLSsg
ICAgaWYgKHN0YXR1cyAhPSBub0VycikgewotKyAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09E
RUNfRVJST1I7Ci0rICAgIH0KLSsjZW5kaWYKLSAgIH0KLSAjZW5kaWYKLSAgIFtzZWxmIGNvbmZp
Z3VyZUNvbXByZXNzaW9uU2Vzc2lvbl07Ci0tCi0tICAvLyBUaGUgcGl4ZWwgYnVmZmVyIHBvb2wg
aXMgZGVwZW5kZW50IG9uIHRoZSBjb21wcmVzc2lvbiBzZXNzaW9uIHNvIGlmIHRoZSBzZXNzaW9u
IGlzIHJlc2V0LCB0aGUKLS0gIC8vIHBvb2wgc2hvdWxkIGJlIHJlc2V0IGFzIHdlbGwuCi0tICBf
cGl4ZWxCdWZmZXJQb29sID0gVlRDb21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wo
X2NvbXByZXNzaW9uU2Vzc2lvbik7Ci0tCi0gICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09L
OwotIH0KLSAKLUBAIC02MTYsNiArNzQ1LDEwIEBAIC0gKHZvaWQpY29uZmlndXJlQ29tcHJlc3Np
b25TZXNzaW9uIHsKLSAgIFNldFZUU2Vzc2lvblByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24s
IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUsIHRydWUpOwotICAgU2V0VlRTZXNz
aW9uUHJvcGVydHkoX2NvbXByZXNzaW9uU2Vzc2lvbiwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9Qcm9maWxlTGV2ZWwsIF9wcm9maWxlKTsKLSAgIFNldFZUU2Vzc2lvblByb3BlcnR5KF9jb21w
cmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfQWxsb3dGcmFtZVJlb3Jk
ZXJpbmcsIGZhbHNlKTsKLSsjaWYgRU5BQkxFX1ZDUF9FTkNPREVSCi0rICBpZiAoYXV0byBrZXkg
PSBnZXRrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX1VzYWdlKCkpCi0rICAgICAgU2V0VlRT
ZXNzaW9uUHJvcGVydHkoX2NvbXByZXNzaW9uU2Vzc2lvbiwgKF9fYnJpZGdlIENGU3RyaW5nUmVm
KWtleSwgMSk7Ci0rI2VuZGlmCi0gICBbc2VsZiBzZXRFbmNvZGVyQml0cmF0ZUJwczpfdGFyZ2V0
Qml0cmF0ZUJwc107Ci0gICAvLyBUT0RPKHRrY2hpbik6IExvb2sgYXQgZW50cm9weSBtb2RlIGFu
ZCBjb2xvcnNwYWNlIG1hdHJpY2VzLgotICAgLy8gVE9ETyh0a2NoaW4pOiBJbnZlc3RpZ2F0ZSB0
byBzZWUgaWYgdGhlcmUncyBhbnkgd2F5IHRvIG1ha2UgdGhpcyB3b3JrLgotQEAgLTYzMywxMCAr
NzY2LDkgQEAgLSAodm9pZCljb25maWd1cmVDb21wcmVzc2lvblNlc3Npb24gewotIAotIC0gKHZv
aWQpZGVzdHJveUNvbXByZXNzaW9uU2Vzc2lvbiB7Ci0gICBpZiAoX2NvbXByZXNzaW9uU2Vzc2lv
bikgewotLSAgICBWVENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUoX2NvbXByZXNzaW9uU2Vz
c2lvbik7Ci0rICAgIENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUoX2NvbXByZXNzaW9uU2Vz
c2lvbik7Ci0gICAgIENGUmVsZWFzZShfY29tcHJlc3Npb25TZXNzaW9uKTsKLSAgICAgX2NvbXBy
ZXNzaW9uU2Vzc2lvbiA9IG51bGxwdHI7Ci0tICAgIF9waXhlbEJ1ZmZlclBvb2wgPSBudWxscHRy
OwotICAgfQotIH0KLSAKLUBAIC02NjQsNyArNzk2LDcgQEAgLSAodm9pZClzZXRFbmNvZGVyQml0
cmF0ZUJwczoodWludDMyX3QpYml0cmF0ZUJwcyB7Ci0gICAgICAgICBDRk51bWJlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmb25lU2Vjb25kVmFsdWUp
OwotICAgICBjb25zdCB2b2lkICpudW1zWzJdID0ge2J5dGVzUGVyU2Vjb25kLCBvbmVTZWNvbmR9
OwotICAgICBDRkFycmF5UmVmIGRhdGFSYXRlTGltaXRzID0gQ0ZBcnJheUNyZWF0ZShudWxscHRy
LCBudW1zLCAyLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLS0gICAgT1NTdGF0dXMgc3RhdHVz
ID0gVlRTZXNzaW9uU2V0UHJvcGVydHkoCi0rICAgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNz
aW9uU2Vzc2lvblNldFByb3BlcnR5KAotICAgICAgICAgX2NvbXByZXNzaW9uU2Vzc2lvbiwga1ZU
Q29tcHJlc3Npb25Qcm9wZXJ0eUtleV9EYXRhUmF0ZUxpbWl0cywgZGF0YVJhdGVMaW1pdHMpOwot
ICAgICBpZiAoYnl0ZXNQZXJTZWNvbmQpIHsKLSAgICAgICBDRlJlbGVhc2UoYnl0ZXNQZXJTZWNv
bmQpOwotQEAgLTY3Niw3ICs4MDgsNyBAQCAtICh2b2lkKXNldEVuY29kZXJCaXRyYXRlQnBzOih1
aW50MzJfdCliaXRyYXRlQnBzIHsKLSAgICAgICBDRlJlbGVhc2UoZGF0YVJhdGVMaW1pdHMpOwot
ICAgICB9Ci0gICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKLS0gICAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiRmFpbGVkIHRvIHNldCBkYXRhIHJhdGUgbGltaXQgd2l0aCBjb2RlOiAiIDw8IHN0
YXR1czsKLSsgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHNldCBkYXRhIHJh
dGUgbGltaXQiOwotICAgICB9Ci0gCi0gICAgIF9lbmNvZGVyQml0cmF0ZUJwcyA9IGJpdHJhdGVC
cHM7Ci1AQCAtNjkzLDcgKzgyNSw3IEBAIC0gKHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1
cylzdGF0dXMKLSAgICAgICAgICAgICAgIHRpbWVzdGFtcDoodWludDMyX3QpdGltZXN0YW1wCi0g
ICAgICAgICAgICAgICAgcm90YXRpb246KFJUQ1ZpZGVvUm90YXRpb24pcm90YXRpb24gewotICAg
aWYgKHN0YXR1cyAhPSBub0VycikgewotLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiSDI2NCBl
bmNvZGUgZmFpbGVkIHdpdGggY29kZTogIiA8PCBzdGF0dXM7Ci0rICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJIMjY0IGVuY29kZSBmYWlsZWQ6ICIgPDwgc3RhdHVzOwotICAgICByZXR1cm47Ci0g
ICB9Ci0gICBpZiAoaW5mb0ZsYWdzICYga1ZURW5jb2RlSW5mb19GcmFtZURyb3BwZWQpIHsKLUBA
IC03MzgsNiArODcwLDcgQEAgLSAodm9pZClmcmFtZVdhc0VuY29kZWQ6KE9TU3RhdHVzKXN0YXR1
cwotICAgZnJhbWUucm90YXRpb24gPSByb3RhdGlvbjsKLSAgIGZyYW1lLmNvbnRlbnRUeXBlID0g
KF9tb2RlID09IFJUQ1ZpZGVvQ29kZWNNb2RlU2NyZWVuc2hhcmluZykgPyBSVENWaWRlb0NvbnRl
bnRUeXBlU2NyZWVuc2hhcmUgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ1ZpZGVvQ29udGVudFR5cGVVbnNwZWNp
ZmllZDsKLSsgIGZyYW1lLnNwYXRpYWxJbmRleCA9IF9zaW11bGNhc3RJbmRleDsKLSAgIGZyYW1l
LmZsYWdzID0gd2VicnRjOjpWaWRlb1NlbmRUaW1pbmc6OmtJbnZhbGlkOwotIAotICAgaW50IHFw
OwotQEAgLTc1Myw5ICs4ODYsODggQEAgLSAodm9pZClmcmFtZVdhc0VuY29kZWQ6KE9TU3RhdHVz
KXN0YXR1cwotICAgX2JpdHJhdGVBZGp1c3Rlci0+VXBkYXRlKGZyYW1lLmJ1ZmZlci5sZW5ndGgp
OwotIH0KLSAKLS0tIChudWxsYWJsZSBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMgKilzY2Fs
aW5nU2V0dGluZ3MgewotLSAgcmV0dXJuIFtbUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzIGFs
bG9jXSBpbml0V2l0aFRocmVzaG9sZHNMb3c6a0xvd0gyNjRRcFRocmVzaG9sZAotLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhp
Z2g6a0hpZ2hIMjY0UXBUaHJlc2hvbGRdOwotKy0gKFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xk
cyAqKXNjYWxpbmdTZXR0aW5ncyB7Ci0rICByZXR1cm4gW1tSVENWaWRlb0VuY29kZXJRcFRocmVz
aG9sZHMgYWxsb2NdIGluaXRXaXRoVGhyZXNob2xkc0xvdzprTG93SDI2NFFwVGhyZXNob2xkIGhp
Z2g6a0hpZ2hIMjY0UXBUaHJlc2hvbGRdOwotK30KLSsKLSstIChpbnQpc2V0UmF0ZUFsbG9jYXRp
b246KFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gKilhbGxvY2F0aW9uIGZyYW1lcmF0ZToodWlu
dDMyX3QpZnJhbWVyYXRlIHsKLSsgIHJldHVybiAwOwotK30KLSsKLStAZW5kCi0rCi0rQGltcGxl
bWVudGF0aW9uIFJUQ1ZpZGVvRW5jb2RlckgyNjQgewotKyAgTlNNdXRhYmxlQXJyYXk8UlRDU2lu
Z2xlVmlkZW9FbmNvZGVySDI2NCo+ICpfY29kZWNzOwotKyAgUlRDVmlkZW9Db2RlY0luZm8gKl9j
b2RlY0luZm87Ci0rfQotKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlk
ZW9Db2RlY0luZm8gKiljb2RlY0luZm8gewotKyAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsK
LSsgICAgX2NvZGVjSW5mbyA9IGNvZGVjSW5mbzsKLSsgIH0KLSsgIHJldHVybiBzZWxmOwotK30K
LSsKLSstICh2b2lkKXNldENhbGxiYWNrOihSVENWaWRlb0VuY29kZXJDYWxsYmFjayljYWxsYmFj
ayB7Ci0rICBmb3IgKFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgKmNvZGVjIDogX2NvZGVjcykK
LSsgICAgW2NvZGVjIHNldENhbGxiYWNrOmNhbGxiYWNrXTsKLSt9Ci0rCi0rLSAoTlNJbnRlZ2Vy
KXN0YXJ0RW5jb2RlV2l0aFNldHRpbmdzOihSVENWaWRlb0VuY29kZXJTZXR0aW5ncyAqKXNldHRp
bmdzIG51bWJlck9mQ29yZXM6KGludCludW1iZXJPZkNvcmVzIHsKLSsgICAgYXV0byBuYXRpdmVD
b2RlY1NldHRpbmdzID0gc2V0dGluZ3MubmF0aXZlVmlkZW9Db2RlYzsKLSsKLSsgIF9jb2RlY3Mg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSsgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwIDsgaW5kZXggPCBuYXRpdmVDb2RlY1NldHRpbmdzLm51bWJlck9mU2ltdWxjYXN0U3RyZWFt
czsgKytpbmRleCkgewotKyAgICBhdXRvIGNvZGVjID0gW1tSVENTaW5nbGVWaWRlb0VuY29kZXJI
MjY0IGFsbG9jXSBpbml0V2l0aENvZGVjSW5mbzpfY29kZWNJbmZvIHNpbXVsY2FzdEluZGV4Omlu
ZGV4XTsKLSsgICAgW19jb2RlY3MgYWRkT2JqZWN0OmNvZGVjXTsKLSsKLSsgICAgYXV0byBjb2Rl
Y1NldHRpbmdzID0gbmF0aXZlQ29kZWNTZXR0aW5nczsKLSsgICAgY29kZWNTZXR0aW5ncy53aWR0
aCA9IG5hdGl2ZUNvZGVjU2V0dGluZ3Muc2ltdWxjYXN0U3RyZWFtW2luZGV4XS53aWR0aDsKLSsg
ICAgY29kZWNTZXR0aW5ncy5oZWlnaHQgPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNpbXVsY2FzdFN0
cmVhbVtpbmRleF0uaGVpZ2h0OwotKyAgICBjb2RlY1NldHRpbmdzLm1heEJpdHJhdGUgPSBuYXRp
dmVDb2RlY1NldHRpbmdzLnNpbXVsY2FzdFN0cmVhbVtpbmRleF0ubWF4Qml0cmF0ZTsKLSsgICAg
Y29kZWNTZXR0aW5ncy50YXJnZXRCaXRyYXRlID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNh
c3RTdHJlYW1baW5kZXhdLnRhcmdldEJpdHJhdGU7Ci0rICAgIGNvZGVjU2V0dGluZ3MubWluQml0
cmF0ZSA9IG5hdGl2ZUNvZGVjU2V0dGluZ3Muc2ltdWxjYXN0U3RyZWFtW2luZGV4XS5taW5CaXRy
YXRlOwotKyAgICBjb2RlY1NldHRpbmdzLnFwTWF4ID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11
bGNhc3RTdHJlYW1baW5kZXhdLnFwTWF4OwotKyAgICBjb2RlY1NldHRpbmdzLmFjdGl2ZSA9IHRy
dWU7Ci0rCi0rICAgIGF1dG8gKnNldHRpbmdzID0gW1tSVENWaWRlb0VuY29kZXJTZXR0aW5ncyBh
bGxvY10gaW5pdFdpdGhOYXRpdmVWaWRlb0NvZGVjOiZjb2RlY1NldHRpbmdzXTsKLSsgICAgW2Nv
ZGVjIHN0YXJ0RW5jb2RlV2l0aFNldHRpbmdzOnNldHRpbmdzIG51bWJlck9mQ29yZXM6bnVtYmVy
T2ZDb3Jlc107Ci0rICB9Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLSAoTlNJbnRlZ2VyKXJlbGVh
c2VFbmNvZGVyIHsKLSsgIGZvciAoUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCAqY29kZWMgOiBf
Y29kZWNzKQotKyAgICBbY29kZWMgcmVsZWFzZUVuY29kZXJdOwotKyAgX2NvZGVjcyA9IG5pbDsK
LSsgIHJldHVybiAwOwotK30KLSsKLSstIChOU0ludGVnZXIpZW5jb2RlOihSVENWaWRlb0ZyYW1l
ICopZnJhbWUgY29kZWNTcGVjaWZpY0luZm86KG51bGxhYmxlIGlkPFJUQ0NvZGVjU3BlY2lmaWNJ
bmZvPilpbmZvIGZyYW1lVHlwZXM6KE5TQXJyYXk8TlNOdW1iZXIgKj4gKilmcmFtZVR5cGVzIHsK
LSsgIGludCByZXN1bHQgPSAwOwotKyAgZm9yIChSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICpj
b2RlYyA6IF9jb2RlY3MpCi0rICAgIHJlc3VsdCB8PSBbY29kZWMgZW5jb2RlOmZyYW1lIGNvZGVj
U3BlY2lmaWNJbmZvOmluZm8gZnJhbWVUeXBlczpmcmFtZVR5cGVzXTsKLSsgIHJldHVybiByZXN1
bHQ7Ci0rfQotKwotKy0gKGludClzZXRSYXRlQWxsb2NhdGlvbjooUlRDVmlkZW9CaXRyYXRlQWxs
b2NhdGlvbiAqKWJpdFJhdGVBbGxvY2F0aW9uIGZyYW1lcmF0ZToodWludDMyX3QpIGZyYW1lcmF0
ZSB7Ci0rICBpbnQgcmVzdWx0ID0gMDsKLSsgIHVuc2lnbmVkIGNvdW50ZXIgPSAwOwotKyAgYXV0
byBuYXRpdmVCaXRSYXRlQWxsb2NhdGlvbiA9IGJpdFJhdGVBbGxvY2F0aW9uLm5hdGl2ZVZpZGVv
Qml0cmF0ZUFsbG9jYXRpb247Ci0rICBmb3IgKFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgKmNv
ZGVjIDogX2NvZGVjcykKLSsgICAgcmVzdWx0IHw9IFtjb2RlYyBzZXRCaXRyYXRlOm5hdGl2ZUJp
dFJhdGVBbGxvY2F0aW9uLkdldFNwYXRpYWxMYXllclN1bShjb3VudGVyKyspIGZyYW1lcmF0ZTpm
cmFtZXJhdGVdOwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rLSAoTlNTdHJpbmcgKilpbXBs
ZW1lbnRhdGlvbk5hbWUgewotKyAgcmV0dXJuIEAiVmlkZW9Ub29sYm94IjsKLSt9Ci0rCi0rLSAo
UlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzICopc2NhbGluZ1NldHRpbmdzIHsKLSsgIHJldHVy
biBbW1JUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyBhbGxvY10gaW5pdFdpdGhUaHJlc2hvbGRz
TG93OmtMb3dIMjY0UXBUaHJlc2hvbGQgaGlnaDprSGlnaEgyNjRRcFRocmVzaG9sZF07Ci0rfQot
KwotKy0gKGludClzZXRCaXRyYXRlOih1aW50MzJfdCliaXRyYXRlS2JpdCBmcmFtZXJhdGU6KHVp
bnQzMl90KWZyYW1lcmF0ZSB7Ci0rICByZXR1cm4gMDsKLSB9Ci0gCi0gQGVuZAotZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVy
cy5jYwotaW5kZXggYWM5NTdmMWI0OTcuLjQ2ZGFmNDRlY2FjIDEwMDY0NAotLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9oZWxwZXJzLmNjCi0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuY2MK
LUBAIC0zNSwxMiArMzUsMTIgQEAgc3RkOjpzdHJpbmcgQ0ZTdHJpbmdUb1N0cmluZyhjb25zdCBD
RlN0cmluZ1JlZiBjZl9zdHJpbmcpIHsKLSB9Ci0gCi0gLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24g
Zm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KLS12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZU
U2Vzc2lvblJlZiBzZXNzaW9uLAotK3ZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Np
b25TZXNzaW9uUmVmIHNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmlu
Z1JlZiBrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHZhbHVlKSB7Ci0g
ICBDRk51bWJlclJlZiBjZk51bSA9Ci0gICAgICAgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJnZhbHVlKTsKLS0gIE9TU3RhdHVzIHN0YXR1
cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZOdW0pOwotKyAgT1NTdGF0
dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNzaW9uU2V0UHJvcGVydHkoc2Vzc2lvbiwga2V5LCBj
Zk51bSk7Ci0gICBDRlJlbGVhc2UoY2ZOdW0pOwotICAgaWYgKHN0YXR1cyAhPSBub0Vycikgewot
ICAgICBzdGQ6OnN0cmluZyBrZXlfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyhrZXkpOwotQEAg
LTUwLDEzICs1MCwxMyBAQCB2b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBz
ZXNzaW9uLAotIH0KLSAKLSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZU
IHByb3BlcnR5LgotLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Np
b24sCi0rdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGtleSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbHVlKSB7Ci0gICBpbnQ2NF90IHZhbHVl
XzY0ID0gdmFsdWU7Ci0gICBDRk51bWJlclJlZiBjZk51bSA9Ci0gICAgICAgQ0ZOdW1iZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJnZhbHVlXzY0KTsK
LS0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwg
Y2ZOdW0pOwotKyAgT1NTdGF0dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNzaW9uU2V0UHJvcGVy
dHkoc2Vzc2lvbiwga2V5LCBjZk51bSk7Ci0gICBDRlJlbGVhc2UoY2ZOdW0pOwotICAgaWYgKHN0
YXR1cyAhPSBub0VycikgewotICAgICBzdGQ6OnN0cmluZyBrZXlfc3RyaW5nID0gQ0ZTdHJpbmdU
b1N0cmluZyhrZXkpOwotQEAgLTY2LDkgKzY2LDkgQEAgdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0
eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKLSB9Ci0gCi0gLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24g
Zm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KLS12b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KFZU
U2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIGJvb2wgdmFsdWUpIHsKLSt2b2lk
IFNldFZUU2Vzc2lvblByb3BlcnR5KENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0
cmluZ1JlZiBrZXksIGJvb2wgdmFsdWUpIHsKLSAgIENGQm9vbGVhblJlZiBjZl9ib29sID0gKHZh
bHVlKSA/IGtDRkJvb2xlYW5UcnVlIDoga0NGQm9vbGVhbkZhbHNlOwotLSAgT1NTdGF0dXMgc3Rh
dHVzID0gVlRTZXNzaW9uU2V0UHJvcGVydHkoc2Vzc2lvbiwga2V5LCBjZl9ib29sKTsKLSsgIE9T
U3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtl
eSwgY2ZfYm9vbCk7Ci0gICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7Ci0gICAgIHN0ZDo6c3RyaW5n
IGtleV9zdHJpbmcgPSBDRlN0cmluZ1RvU3RyaW5nKGtleSk7Ci0gICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJWVFNlc3Npb25TZXRQcm9wZXJ0eSBmYWlsZWQgdG8gc2V0OiAiIDw8IGtleV9zdHJp
bmcKLUBAIC03NywxMCArNzcsMTAgQEAgdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Np
b25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBib29sIHZhbHVlKSB7Ci0gfQotIAotIC8v
IENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGEgVlQgcHJvcGVydHkuCi0tdm9pZCBT
ZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKLSt2b2lkIFNldFZUU2Vz
c2lvblByb3BlcnR5KENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0ZTdHJpbmdSZWYgdmFsdWUpIHsKLS0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNl
dFByb3BlcnR5KHNlc3Npb24sIGtleSwgdmFsdWUpOwotKyAgT1NTdGF0dXMgc3RhdHVzID0gQ29t
cHJlc3Npb25TZXNzaW9uU2V0UHJvcGVydHkoc2Vzc2lvbiwga2V5LCB2YWx1ZSk7Ci0gICBpZiAo
c3RhdHVzICE9IG5vRXJyKSB7Ci0gICAgIHN0ZDo6c3RyaW5nIGtleV9zdHJpbmcgPSBDRlN0cmlu
Z1RvU3RyaW5nKGtleSk7Ci0gICAgIHN0ZDo6c3RyaW5nIHZhbF9zdHJpbmcgPSBDRlN0cmluZ1Rv
U3RyaW5nKHZhbHVlKTsKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5oCi1pbmRleCAwNjgzZWE3OWU1Ni4uMGM2NjllOGJj
ZTYgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL2hlbHBlcnMuaAotKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9oZWxwZXJzLmgKLUBAIC0xNiw2ICsxNiw4IEBACi0gI2luY2x1ZGUgPFZpZGVv
VG9vbGJveC9WaWRlb1Rvb2xib3guaD4KLSAjaW5jbHVkZSA8c3RyaW5nPgotIAotKyNpbmNsdWRl
ICJzZGsvV2ViS2l0L0VuY29kZXJVdGlsaXRpZXMuaCIKLSsKLSAvLyBDb252ZW5pZW5jZSBmdW5j
dGlvbiBmb3IgY3JlYXRpbmcgYSBkaWN0aW9uYXJ5LgotIGlubGluZSBDRkRpY3Rpb25hcnlSZWYg
Q3JlYXRlQ0ZUeXBlRGljdGlvbmFyeShDRlR5cGVSZWYqIGtleXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVHlwZVJlZiogdmFsdWVzLAotQEAgLTI5
LDE4ICszMSwxOCBAQCBpbmxpbmUgQ0ZEaWN0aW9uYXJ5UmVmIENyZWF0ZUNGVHlwZURpY3Rpb25h
cnkoQ0ZUeXBlUmVmKiBrZXlzLAotIHN0ZDo6c3RyaW5nIENGU3RyaW5nVG9TdHJpbmcoY29uc3Qg
Q0ZTdHJpbmdSZWYgY2Zfc3RyaW5nKTsKLSAKLSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Ig
c2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNz
aW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwgaW50MzJfdCB2YWx1ZSk7Ci0rdm9pZCBT
ZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJp
bmdSZWYga2V5LCBpbnQzMl90IHZhbHVlKTsKLSAKLSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBm
b3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRT
ZXNzaW9uUmVmIHNlc3Npb24sCi0rdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lv
blNlc3Npb25SZWYgc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5n
UmVmIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbHVlKTsKLSAK
LSAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZv
aWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVm
IGtleSwgYm9vbCB2YWx1ZSk7Ci0rdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lv
blNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBib29sIHZhbHVlKTsKLSAKLSAv
LyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgotLXZvaWQg
U2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sCi0rdm9pZCBTZXRWVFNl
c3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENGU3RyaW5nUmVmIHZhbHVlKTsKLSAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2ZyYW1l
X2J1ZmZlci9SVENDVlBpeGVsQnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVEND
VlBpeGVsQnVmZmVyLmgKLWluZGV4IDQzMmEzODI1NzQ2Li5hYmU5ZGZjYTkzYiAxMDA2NDQKLS0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ0NWUGl4ZWxCdWZmZXIuaAotKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19mcmFtZV9idWZmZXIvUlRDQ1ZQaXhlbEJ1ZmZlci5oCi1AQCAtMTcsNiArMTcsNyBA
QCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgotIAotIC8qKiBSVENWaWRlb0ZyYW1lQnVmZmVyIGNv
bnRhaW5pbmcgYSBDVlBpeGVsQnVmZmVyUmVmICovCi0gUlRDX09CSkNfRVhQT1JUCi0rX19hdHRy
aWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0NWUGl4ZWxCdWZmZXIiKSkpCi0gQGlu
dGVyZmFjZSBSVENDVlBpeGVsQnVmZmVyIDogTlNPYmplY3QgPFJUQ1ZpZGVvRnJhbWVCdWZmZXI+
Ci0gCi0gQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXI7Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5t
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL25h
dGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KLWluZGV4IGJhN2MzZTk2NzU0
Li5jNGM4NWNjNmFiOSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL25hdGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3Rv
cnkubW0KLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL25hdGl2ZS9zcmMvb2JqY192aWRlb19lbmNvZGVyX2ZhY3RvcnkubW0KLUBAIC05Miw2
ICs5MiwxMiBAQCBjbGFzcyBPYmpDVmlkZW9FbmNvZGVyIDogcHVibGljIFZpZGVvRW5jb2RlciB7
Ci0gICAgIHJldHVybiBbZW5jb2Rlcl8gc2V0Qml0cmF0ZTpiaXRyYXRlIGZyYW1lcmF0ZTpmcmFt
ZXJhdGVdOwotICAgfQotIAotKyAgaW50MzJfdCBTZXRSYXRlQWxsb2NhdGlvbihjb25zdCBWaWRl
b0JpdHJhdGVBbGxvY2F0aW9uJiBhbGxvY2F0aW9uLCB1aW50MzJfdCBmcmFtZXJhdGUpIHsKLSsg
ICAgUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqYml0cmF0ZUFsbG9jYXRpb24gPQotKyAgICAg
IFtbUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBhbGxvY10gaW5pdFdpdGhOYXRpdmVWaWRlb0Jp
dHJhdGVBbGxvY2F0aW9uOiZhbGxvY2F0aW9uXTsKLSsgICAgcmV0dXJuIFtlbmNvZGVyXyBzZXRS
YXRlQWxsb2NhdGlvbjogYml0cmF0ZUFsbG9jYXRpb24gZnJhbWVyYXRlOmZyYW1lcmF0ZV07Ci0r
ICB9Ci0rCi0gICBib29sIFN1cHBvcnRzTmF0aXZlSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotIAotICAgVmlkZW9FbmNvZGVyOjpTY2FsaW5nU2V0dGluZ3MgR2V0U2NhbGluZ1NldHRp
bmdzKCkgY29uc3QgewotLS0gCi0yLjE3LjEgKEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9XZWJLaXQvMDAxLUdUSy1jaGFuZ2VzLnBhdGNo
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dlYktpdC8wMDEtR1RLLWNoYW5nZXMucGF0
Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmM0ZTE2NTU1YzhkZjZjYjE1MTIwMGU5YWIyYTg0ZGE0NmE4OGQwYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9XZWJLaXQvMDAx
LUdUSy1jaGFuZ2VzLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK2RpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2lu
Zy5jYworaW5kZXggNDRlYzNmNTBjMTkuLjU4YjMzNDVmOWRiIDEwMDY0NAorLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9nZ2luZy5jYwor
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uv
bG9nZ2luZy5jYworQEAgLTc1LDcgKzc1LDEyIEBAIENyaXRpY2FsU2VjdGlvbiYgbG9nQ3JpdGlj
YWxTY29wZSgpIHsKKyB2b2lkIExvZ1Npbms6Ok9uTG9nTWVzc2FnZShjb25zdCBzdGQ6OnN0cmlu
ZyYgbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dpbmdTZXZlcml0eSBzZXZl
cml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YWcpIHsKKy0g
IE9uTG9nTWVzc2FnZSh0YWcgKyAoIjogIiArIG1zZykpOworKyAgT25Mb2dNZXNzYWdlKHRhZyAr
ICgiOiAiICsgbXNnKSwgc2V2ZXJpdHkpOworK30KKysKKyt2b2lkIExvZ1Npbms6Ok9uTG9nTWVz
c2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbXNnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IExvZ2dpbmdTZXZlcml0eSAvKiBzZXZlcml0eSAqLykgeworKyAgT25Mb2dNZXNzYWdlKG1zZyk7
CisgfQorIAorIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdGFza19xdWV1ZV9saWJldmVu
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3Rhc2tfcXVldWVfbGliZXZlbnQuY2MKK2luZGV4IDkwNWJiZGFjMGUyLi4yN2I4ODAxYmIwZCAx
MDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3Rhc2tfcXVldWVfbGliZXZlbnQuY2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3Rhc2tfcXVldWVfbGliZXZlbnQuY2MKK0BA
IC0yMiw3ICsyMiwxMyBAQAorICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyAjaW5jbHVkZSA8dXRp
bGl0eT4KKyAKKysjaWYgZGVmaW5lZChXRUJSVENfTElOVVgpCisrI2luY2x1ZGUgPGV2ZW50Mi9l
dmVudC5oPgorKyNpbmNsdWRlIDxldmVudDIvZXZlbnRfY29tcGF0Lmg+CisrI2luY2x1ZGUgPGV2
ZW50Mi9ldmVudF9zdHJ1Y3QuaD4KKysjZWxzZQorICNpbmNsdWRlICJiYXNlL3RoaXJkX3BhcnR5
L2xpYmV2ZW50L2V2ZW50LmgiCisrI2VuZGlmCisgI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5o
IgorICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNlY3Rpb24uaCIKKyAjaW5jbHVkZSAicnRj
X2Jhc2UvbG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1dlYktpdC9saWJ3ZWJydGMuZGlmZiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9XZWJL
aXQvbGlid2VicnRjLmRpZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI0MjhlNDE1ZGNhODZmYzA3NDRlY2Q5ODEz
ZWVjZjBkMmMwNzdlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9XZWJLaXQvbGlid2VicnRjLmRpZmYKQEAgLTAsMCArMSwyNTY4IEBACitkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXBpL2F1ZGlvX2Nv
ZGVjcy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2ls
YmMuY2MKK2luZGV4IDg5NmVkMjM4Y2MzLi40ZDAyOGM5YWFmNCAxMDA2NDQKKy0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxi
Yy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMu
Y2MKK0BAIC0zMyw3ICszMyw3IEBAIGludCBHZXRJbGJjQml0cmF0ZShpbnQgcHRpbWUpIHsKKyAg
ICAgICAvLyA1MCBieXRlcyBwZXIgZnJhbWUgb2YgMzAgbXMgPT4gKGFwcHJveCkgMTMzMzMgYml0
cy9zLgorICAgICAgIHJldHVybiAxMzMzMzsKKyAgICAgZGVmYXVsdDoKKy0gICAgICBGQVRBTCgp
OworKyAgICAgIFJUQ19GQVRBTCgpOworICAgfQorIH0KKyB9ICAvLyBuYW1lc3BhY2UKK2RpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVk
aWF0eXBlcy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2Fw
aS9tZWRpYXR5cGVzLmNjCitpbmRleCA1OTk1NDJkYjA4Zi4uMTQwZDBhZTk2MjUgMTAwNjQ0Cist
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9hcGkvbWVkaWF0
eXBlcy5jYworKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
YXBpL21lZGlhdHlwZXMuY2MKK0BAIC0yOCw3ICsyOCw3IEBAIHN0ZDo6c3RyaW5nIE1lZGlhVHlw
ZVRvU3RyaW5nKE1lZGlhVHlwZSB0eXBlKSB7CisgICAgIGNhc2UgTUVESUFfVFlQRV9EQVRBOgor
ICAgICAgIHJldHVybiBrTWVkaWFUeXBlRGF0YTsKKyAgIH0KKy0gIEZBVEFMKCk7CisrICBSVENf
RkFUQUwoKTsKKyAgIC8vIE5vdCByZWFjaGFibGU7IGF2b2lkcyBjb21waWxlIHdhcm5pbmcuCisg
ICByZXR1cm4gIiI7CisgfQorQEAgLTQxLDcgKzQxLDcgQEAgTWVkaWFUeXBlIE1lZGlhVHlwZUZy
b21TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGVfc3RyKSB7CisgICB9IGVsc2UgaWYgKHR5
cGVfc3RyID09IGtNZWRpYVR5cGVEYXRhKSB7CisgICAgIHJldHVybiBNRURJQV9UWVBFX0RBVEE7
CisgICB9CistICBGQVRBTCgpOworKyAgUlRDX0ZBVEFMKCk7CisgICAvLyBOb3QgcmVhY2hhYmxl
OyBhdm9pZHMgY29tcGlsZSB3YXJuaW5nLgorICAgcmV0dXJuIHN0YXRpY19jYXN0PE1lZGlhVHlw
ZT4oLTEpOworIH0KK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2F1ZGlvL3JlbWl4X3Jlc2FtcGxlLmNjCitpbmRleCBjYzU5
ZTJhODIzYy4uYjExNThkYTIxM2YgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9hdWRpby9yZW1peF9yZXNhbXBsZS5jYworKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvYXVkaW8vcmVtaXhfcmVzYW1wbGUu
Y2MKK0BAIC01NSw3ICs1NSw3IEBAIHZvaWQgUmVtaXhBbmRSZXNhbXBsZShjb25zdCBpbnQxNl90
KiBzcmNfZGF0YSwKKyAKKyAgIGlmIChyZXNhbXBsZXItPkluaXRpYWxpemVJZk5lZWRlZChzYW1w
bGVfcmF0ZV9oeiwgZHN0X2ZyYW1lLT5zYW1wbGVfcmF0ZV9oel8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXVkaW9fcHRyX251bV9jaGFubmVscykgPT0gLTEpIHsKKy0g
ICAgRkFUQUwoKSA8PCAiSW5pdGlhbGl6ZUlmTmVlZGVkIGZhaWxlZDogc2FtcGxlX3JhdGVfaHog
PSAiIDw8IHNhbXBsZV9yYXRlX2h6CisrICAgIFJUQ19GQVRBTCgpIDw8ICJJbml0aWFsaXplSWZO
ZWVkZWQgZmFpbGVkOiBzYW1wbGVfcmF0ZV9oeiA9ICIgPDwgc2FtcGxlX3JhdGVfaHoKKyAgICAg
ICAgICAgICA8PCAiLCBkc3RfZnJhbWUtPnNhbXBsZV9yYXRlX2h6XyA9ICIgPDwgZHN0X2ZyYW1l
LT5zYW1wbGVfcmF0ZV9oel8KKyAgICAgICAgICAgICA8PCAiLCBhdWRpb19wdHJfbnVtX2NoYW5u
ZWxzID0gIiA8PCBhdWRpb19wdHJfbnVtX2NoYW5uZWxzOworICAgfQorQEAgLTY5LDcgKzY5LDcg
QEAgdm9pZCBSZW1peEFuZFJlc2FtcGxlKGNvbnN0IGludDE2X3QqIHNyY19kYXRhLAorICAgICAg
IHJlc2FtcGxlci0+UmVzYW1wbGUoYXVkaW9fcHRyLCBzcmNfbGVuZ3RoLCBkc3RfZnJhbWUtPm11
dGFibGVfZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9GcmFtZTo6a01h
eERhdGFTaXplU2FtcGxlcyk7CisgICBpZiAob3V0X2xlbmd0aCA9PSAtMSkgeworLSAgICBGQVRB
TCgpIDw8ICJSZXNhbXBsZSBmYWlsZWQ6IGF1ZGlvX3B0ciA9ICIgPDwgYXVkaW9fcHRyCisrICAg
IFJUQ19GQVRBTCgpIDw8ICJSZXNhbXBsZSBmYWlsZWQ6IGF1ZGlvX3B0ciA9ICIgPDwgYXVkaW9f
cHRyCisgICAgICAgICAgICAgPDwgIiwgc3JjX2xlbmd0aCA9ICIgPDwgc3JjX2xlbmd0aAorICAg
ICAgICAgICAgIDw8ICIsIGRzdF9mcmFtZS0+bXV0YWJsZV9kYXRhKCkgPSAiIDw8IGRzdF9mcmFt
ZS0+bXV0YWJsZV9kYXRhKCk7CisgICB9CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxl
LmNjCitpbmRleCAxYjhiY2JkOTIzYy4uOTBhODkyODFlNWMgMTAwNjQ0CistLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUu
Y2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1v
bl9hdWRpby93YXZfZmlsZS5jYworQEAgLTYzLDcgKzYzLDcgQEAgV2F2UmVhZGVyOjpXYXZSZWFk
ZXIocnRjOjpQbGF0Zm9ybUZpbGUgZmlsZSkgeworICAgICBpZiAoIXJ0Yzo6Q2xvc2VQbGF0Zm9y
bUZpbGUoZmlsZSkpIHsKKyAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ2FuJ3QgY2xvc2Ug
ZmlsZS4iOworICAgICB9CistICAgIEZBVEFMKCkgPDwgIkNvdWxkIG5vdCBvcGVuIHdhdiBmaWxl
IGZvciByZWFkaW5nLiI7CisrICAgIFJUQ19GQVRBTCgpIDw8ICJDb3VsZCBub3Qgb3BlbiB3YXYg
ZmlsZSBmb3IgcmVhZGluZy4iOworICAgfQorIAorICAgUmVhZGFibGVXYXZGaWxlIHJlYWRhYmxl
KGZpbGVfaGFuZGxlXyk7CitAQCAtMTQ4LDcgKzE0OCw3IEBAIFdhdldyaXRlcjo6V2F2V3JpdGVy
KHJ0Yzo6UGxhdGZvcm1GaWxlIGZpbGUsCisgICAgIGlmICghcnRjOjpDbG9zZVBsYXRmb3JtRmls
ZShmaWxlKSkgeworICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJDYW4ndCBjbG9zZSBmaWxl
LiI7CisgICAgIH0KKy0gICAgRkFUQUwoKSA8PCAiQ291bGQgbm90IG9wZW4gd2F2IGZpbGUgZm9y
IHdyaXRpbmcuIjsKKysgICAgUlRDX0ZBVEFMKCkgPDwgIkNvdWxkIG5vdCBvcGVuIHdhdiBmaWxl
IGZvciB3cml0aW5nLiI7CisgICB9CisgCisgICBSVENfQ0hFQ0soQ2hlY2tXYXZQYXJhbWV0ZXJz
KG51bV9jaGFubmVsc18sIHNhbXBsZV9yYXRlXywga1dhdkZvcm1hdCwKK2RpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fdmlkZW8vdmlk
ZW9fZnJhbWVfYnVmZmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5jYworaW5kZXggZjRmMTM4ZmNj
YjUuLjVmODliNGFjYjk2IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5jYworKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvY29tbW9uX3ZpZGVvL3Zp
ZGVvX2ZyYW1lX2J1ZmZlci5jYworQEAgLTI3Miw3ICsyNzIsNyBAQCBydGM6OnNjb3BlZF9yZWZw
dHI8UGxhbmFyWXV2QnVmZmVyPiBXcmFwWXV2QnVmZmVyKAorICAgICAgIHJldHVybiBXcmFwSTQ0
NEJ1ZmZlcih3aWR0aCwgaGVpZ2h0LCB5X3BsYW5lLCB5X3N0cmlkZSwgdV9wbGFuZSwgdV9zdHJp
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZfcGxhbmUsIHZfc3RyaWRlLCBub19s
b25nZXJfdXNlZCk7CisgICAgIGRlZmF1bHQ6CistICAgICAgRkFUQUwoKSA8PCAiVW5leHBlY3Rl
ZCBmcmFtZSBidWZmZXIgdHlwZS4iOworKyAgICAgIFJUQ19GQVRBTCgpIDw8ICJVbmV4cGVjdGVk
IGZyYW1lIGJ1ZmZlciB0eXBlLiI7CisgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICB9CisgfQor
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9jbmcvYXVkaW9fZW5jb2Rlcl9jbmcuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGlu
Zy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjCitpbmRleCA5YTI5MjYxNDNkMC4uNDc2
OTU0ZmU2MGQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25n
LmNjCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1
bGVzL2F1ZGlvX2NvZGluZy9jb2RlY3MvY25nL2F1ZGlvX2VuY29kZXJfY25nLmNjCitAQCAtMTcx
LDcgKzE3MSw3IEBAIEF1ZGlvRW5jb2Rlcjo6RW5jb2RlZEluZm8gQXVkaW9FbmNvZGVyQ25nOjpF
bmNvZGVJbXBsKAorICAgICAgIGJyZWFrOworICAgICB9CisgICAgIGNhc2UgVmFkOjprRXJyb3I6
IHsKKy0gICAgICBGQVRBTCgpOyAgLy8gRmFpbHMgb25seSBpZiBmZWQgaW52YWxpZCBkYXRhLgor
KyAgICAgIFJUQ19GQVRBTCgpOyAgLy8gRmFpbHMgb25seSBpZiBmZWQgaW52YWxpZCBkYXRhLgor
ICAgICAgIGJyZWFrOworICAgICB9CisgICB9CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2ls
YmMvYXVkaW9fZW5jb2Rlcl9pbGJjLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19jb2RpbmcvY29kZWNzL2lsYmMvYXVkaW9fZW5jb2Rl
cl9pbGJjLmNjCitpbmRleCA4ODAxZmQ1NTU5MC4uMzVlNmZjNjRhNjIgMTAwNjQ0CistLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2Nv
ZGluZy9jb2RlY3MvaWxiYy9hdWRpb19lbmNvZGVyX2lsYmMuY2MKKysrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVj
cy9pbGJjL2F1ZGlvX2VuY29kZXJfaWxiYy5jYworQEAgLTQxLDcgKzQxLDcgQEAgaW50IEdldEls
YmNCaXRyYXRlKGludCBwdGltZSkgeworICAgICAgIC8vIDUwIGJ5dGVzIHBlciBmcmFtZSBvZiAz
MCBtcyA9PiAoYXBwcm94KSAxMzMzMyBiaXRzL3MuCisgICAgICAgcmV0dXJuIDEzMzMzOworICAg
ICBkZWZhdWx0OgorLSAgICAgIEZBVEFMKCk7CisrICAgICAgUlRDX0ZBVEFMKCk7CisgICB9Cisg
fQorIAorQEAgLTE0OCw3ICsxNDgsNyBAQCBzaXplX3QgQXVkaW9FbmNvZGVySWxiY0ltcGw6OlJl
cXVpcmVkT3V0cHV0U2l6ZUJ5dGVzKCkgY29uc3QgeworICAgICBjYXNlIDY6CisgICAgICAgcmV0
dXJuIDIgKiA1MDsKKyAgICAgZGVmYXVsdDoKKy0gICAgICBGQVRBTCgpOworKyAgICAgIFJUQ19G
QVRBTCgpOworICAgfQorIH0KKyAKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9u
b29wLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfbm9vcC5jYworbmV3IGZpbGUgbW9kZSAxMDA2
NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5iMDU4YzJkNjcyOAorLS0tIC9kZXYvbnVsbAorKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOS92cDlfbm9vcC5jYworQEAgLTAsMCArMSw0MyBAQAorKy8qCisrICog
IENvcHlyaWdodCAoYykgMjAxNiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKysgKgorKyAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCisrICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQorKyAqICB0cmVlLiBBbiBhZGRp
dGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCisr
ICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9y
cyBtYXkKKysgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0
aGUgc291cmNlIHRyZWUuCisrICoKKysgKi8KKysKKysjaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVf
VlA5KQorKyNlcnJvcgorKyNlbmRpZiAgLy8gIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorKwor
KyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L2luY2x1ZGUvdnA5Lmgi
CisrCisrI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3Mvc2RwX3ZpZGVvX2Zvcm1hdC5oIgorKyNp
bmNsdWRlICJydGNfYmFzZS9jaGVja3MuaCIKKysKKytuYW1lc3BhY2Ugd2VicnRjIHsKKysKKytz
dGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gU3VwcG9ydGVkVlA5Q29kZWNzKCkgeworKyAgcmV0
dXJuIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PigpOworK30KKysKKytzdGQ6OnVuaXF1ZV9w
dHI8VlA5RW5jb2Rlcj4gVlA5RW5jb2Rlcjo6Q3JlYXRlKCkgeworKyAgUlRDX05PVFJFQUNIRUQo
KTsKKysgIHJldHVybiBudWxscHRyOworK30KKysKKytzdGQ6OnVuaXF1ZV9wdHI8VlA5RW5jb2Rl
cj4gVlA5RW5jb2Rlcjo6Q3JlYXRlKAorKyAgICBjb25zdCBjcmlja2V0OjpWaWRlb0NvZGVjJiBj
b2RlYykgeworKyAgUlRDX05PVFJFQUNIRUQoKTsKKysgIHJldHVybiBudWxscHRyOworK30KKysK
KytzdGQ6OnVuaXF1ZV9wdHI8VlA5RGVjb2Rlcj4gVlA5RGVjb2Rlcjo6Q3JlYXRlKCkgeworKyAg
UlRDX05PVFJFQUNIRUQoKTsKKysgIHJldHVybiBudWxscHRyOworK30KKysKKyt9ICAvLyBuYW1l
c3BhY2Ugd2VicnRjCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvcDJwL2Jhc2UvdGNwcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MKK2luZGV4IGUwMThlYTc1NWQ2
Li4wZDdhZWE5ZDYwYSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3AycC9iYXNlL3RjcHBvcnQuY2MKK0BAIC0zNTEsMTEg
KzM1MSwyMSBAQCBUQ1BDb25uZWN0aW9uOjpUQ1BDb25uZWN0aW9uKFRDUFBvcnQqIHBvcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgcG9ydCgpIE5ldHdvcms6IiA8PCBwb3J0LT5O
ZXR3b3JrKCktPlRvU3RyaW5nKCk7CisgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Yzo6SW50ZXJm
YWNlQWRkcmVzcz4mIGRlc2lyZWRfYWRkcmVzc2VzID0KKyAgICAgICAgIHBvcnRfLT5OZXR3b3Jr
KCktPkdldElQcygpOworKworKyNpZiBkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJTEQpCisrICAg
ICBSVENfRENIRUNLKHNvY2tldC0+R2V0TG9jYWxBZGRyZXNzKCkuSXNMb29wYmFja0lQKCkgfHwK
KysgICAgICAgICAgICAgICAgKHN0ZDo6ZmluZF9pZihkZXNpcmVkX2FkZHJlc3Nlcy5iZWdpbigp
LCBkZXNpcmVkX2FkZHJlc3Nlcy5lbmQoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFt0aGlzXShjb25zdCBydGM6OkludGVyZmFjZUFkZHJlc3MmIGFkZHIpIHsKKysgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvY2tldF8tPkdldExvY2FsQWRkcmVzcygpLmlw
YWRkcigpID09CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyOwor
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgIT0gZGVzaXJlZF9hZGRyZXNzZXMuZW5k
KCkpKTsKKysgI2Vsc2UKKyAgICAgUlRDX0RDSEVDSyhzdGQ6OmZpbmRfaWYoZGVzaXJlZF9hZGRy
ZXNzZXMuYmVnaW4oKSwgZGVzaXJlZF9hZGRyZXNzZXMuZW5kKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFt0aGlzXShjb25zdCBydGM6OkludGVyZmFjZUFkZHJlc3MmIGFkZHIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc29ja2V0Xy0+R2V0TG9jYWxB
ZGRyZXNzKCkuaXBhZGRyKCkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgIT0gZGVzaXJlZF9hZGRy
ZXNzZXMuZW5kKCkpOworKyNlbmRpZgorICAgICBDb25uZWN0U29ja2V0U2lnbmFscyhzb2NrZXQp
OworICAgfQorIH0KK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MKK2lu
ZGV4IDM3YzZhMGIwYmNmLi43NTI2MTUwOGIyNyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5jYwor
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNv
bm5lY3Rpb25mYWN0b3J5LmNjCitAQCAtMjYxLDcgKzI2MSw3IEBAIFJ0cENhcGFiaWxpdGllcyBQ
ZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkdldFJ0cFNlbmRlckNhcGFiaWxpdGllcygKKyAgICAgICBy
ZXR1cm4gUnRwQ2FwYWJpbGl0aWVzKCk7CisgICB9CisgICAvLyBOb3QgcmVhY2hlZDsgYXZvaWRz
IGNvbXBpbGUgd2FybmluZy4KKy0gIEZBVEFMKCk7CisrICBSVENfRkFUQUwoKTsKKyB9CisgCisg
UnRwQ2FwYWJpbGl0aWVzIFBlZXJDb25uZWN0aW9uRmFjdG9yeTo6R2V0UnRwUmVjZWl2ZXJDYXBh
YmlsaXRpZXMoCitAQCAtMjg4LDcgKzI4OCw3IEBAIFJ0cENhcGFiaWxpdGllcyBQZWVyQ29ubmVj
dGlvbkZhY3Rvcnk6OkdldFJ0cFJlY2VpdmVyQ2FwYWJpbGl0aWVzKAorICAgICAgIHJldHVybiBS
dHBDYXBhYmlsaXRpZXMoKTsKKyAgIH0KKyAgIC8vIE5vdCByZWFjaGVkOyBhdm9pZHMgY29tcGls
ZSB3YXJuaW5nLgorLSAgRkFUQUwoKTsKKysgIFJUQ19GQVRBTCgpOworIH0KKyAKKyBydGM6OnNj
b3BlZF9yZWZwdHI8QXVkaW9Tb3VyY2VJbnRlcmZhY2U+CitkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcnRwcGFyYW1ldGVyc2NvbnZlcnNp
b24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9ydHBw
YXJhbWV0ZXJzY29udmVyc2lvbi5jYworaW5kZXggYmYzYmNlM2RhYTMuLjg2NTY4NWQ3M2M0IDEw
MDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cnRwcGFyYW1ldGVyc2NvbnZlcnNpb24uY2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3J0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNjCitAQCAtNjEs
NyArNjEsNyBAQCBSVENFcnJvck9yPGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0+IFRvQ3JpY2tldEZl
ZWRiYWNrUGFyYW0oCisgICAgICAgcmV0dXJuIGNyaWNrZXQ6OkZlZWRiYWNrUGFyYW0oY3JpY2tl
dDo6a1J0Y3BGYlBhcmFtVHJhbnNwb3J0Q2MpOworICAgfQorICAgLy8gTm90IHJlYWNoZWQ7IGF2
b2lkcyBjb21waWxlIHdhcm5pbmcuCistICBGQVRBTCgpOworKyAgUlRDX0ZBVEFMKCk7CisgfQor
IAorIHRlbXBsYXRlIDx0eXBlbmFtZSBDPgorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NoZWNrcy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgKK2luZGV4IDlk
ZTZkNDc1NzNjLi41Y2YwNjc5OTEwZSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2NoZWNrcy5oCisrKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaAorQEAgLTgw
LDcgKzgwLDcgQEAgUlRDX05PUkVUVVJOIHZvaWQgcnRjX0ZhdGFsTWVzc2FnZShjb25zdCBjaGFy
KiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogbXNnKTsKKyAvLyAgIG1lc3NhZ2VzIGlmIHRo
ZSBjb25kaXRpb24gZG9lc24ndCBob2xkLiBQcmVmZXIgdGhlbSB0byByYXcgUlRDX0NIRUNLIGFu
ZAorIC8vICAgUlRDX0RDSEVDSy4KKyAvLworLS8vIC0gRkFUQUwoKSBhYm9ydHMgdW5jb25kaXRp
b25hbGx5LgorKy8vIC0gUlRDX0ZBVEFMKCkgYWJvcnRzIHVuY29uZGl0aW9uYWxseS4KKyAvLwor
IC8vIFRPRE8oYWptKTogSWRlYWxseSwgY2hlY2tzLmggd291bGQgYmUgY29tYmluZWQgd2l0aCBs
b2dnaW5nLmgsIGJ1dAorIC8vIGNvbnNvbGlkYXRpb24gd2l0aCBzeXN0ZW1fd3JhcHBlcnMvbG9n
Z2luZy5oIHNob3VsZCBoYXBwZW4gZmlyc3QuCitAQCAtMzQ4LDkgKzM0OCw5IEBAIGNsYXNzIEZh
dGFsTG9nQ2FsbCBmaW5hbCB7CisgI2RlZmluZSBSVENfTk9UUkVBQ0hFRCgpIFJUQ19EQ0hFQ0so
UlRDX1VOUkVBQ0hBQkxFX0NPREVfSElUKQorIAorIC8vIFRPRE8oYnVncy53ZWJydGMub3JnLzg0
NTQpOiBBZGQgYW4gUlRDXyBwcmVmaXggb3IgcmVuYW1lIGRpZmZlcmVudGx5LgorLSNkZWZpbmUg
RkFUQUwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisrI2RlZmluZSBSVENfRkFUQUwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICBydGM6OndlYnJ0Y19jaGVja3NfaW1wbDo6RmF0YWxM
b2dDYWxsPGZhbHNlPihfX0ZJTEVfXywgX19MSU5FX18sIFwKKy0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGQVRBTCgpIikgJiAgICAgICAgXAorKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJUQ19GQVRBTCgpIikg
JiAgICAgICAgXAorICAgICAgIHJ0Yzo6d2VicnRjX2NoZWNrc19pbXBsOjpMb2dTdHJlYW1lcjw+
KCkKKyAKKyAvLyBQZXJmb3JtcyB0aGUgaW50ZWdlciBkaXZpc2lvbiBhL2IgYW5kIHJldHVybnMg
dGhlIHJlc3VsdC4gQ0hFQ0tzIHRoYXQgdGhlCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9mbGFncy5jYworaW5kZXgg
YmNjZTBkYWZiYzAuLjZiNDNiOTFlMDI2IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvZmxhZ3MuY2MKKysrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2ZsYWdzLmNjCitAQCAt
ODEsNyArODEsNyBAQCB2b2lkIEZsYWc6OlNldFRvRGVmYXVsdCgpIHsKKyAgICAgICB2YXJpYWJs
ZV8tPnMgPSBkZWZhdWx0Xy5zOworICAgICAgIHJldHVybjsKKyAgIH0KKy0gIEZBVEFMKCkgPDwg
InVucmVhY2hhYmxlIGNvZGUiOworKyAgUlRDX0ZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUi
OworIH0KKyAKKyBzdGF0aWMgY29uc3QgY2hhciogVHlwZTJTdHJpbmcoRmxhZzo6VHlwZSB0eXBl
KSB7CitAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogVHlwZTJTdHJpbmcoRmxh
Zzo6VHlwZSB0eXBlKSB7CisgICAgIGNhc2UgRmxhZzo6U1RSSU5HOgorICAgICAgIHJldHVybiAi
c3RyaW5nIjsKKyAgIH0KKy0gIEZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOworKyAgUlRD
X0ZBVEFMKCkgPDwgInVucmVhY2hhYmxlIGNvZGUiOworIH0KKyAKKyBzdGF0aWMgdm9pZCBQcmlu
dEZsYWdWYWx1ZShGbGFnOjpUeXBlIHR5cGUsIEZsYWdWYWx1ZSogcCkgeworQEAgLTExMyw3ICsx
MTMsNyBAQCBzdGF0aWMgdm9pZCBQcmludEZsYWdWYWx1ZShGbGFnOjpUeXBlIHR5cGUsIEZsYWdW
YWx1ZSogcCkgeworICAgICAgIHByaW50ZigiJXMiLCBwLT5zKTsKKyAgICAgICByZXR1cm47Cisg
ICB9CistICBGQVRBTCgpIDw8ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKysgIFJUQ19GQVRBTCgpIDw8
ICJ1bnJlYWNoYWJsZSBjb2RlIjsKKyB9CisgCisgdm9pZCBGbGFnOjpQcmludChib29sIHByaW50
X2N1cnJlbnRfdmFsdWUpIHsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2NhdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaAoraW5kZXggNTEzYmMy
NjM2NTEuLjcxOGQ5NTg5MzQ4IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaAorKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbG9jYXRpb24uaAorQEAgLTUw
LDcgKzUwLDcgQEAgY2xhc3MgTG9jYXRpb24geworICNkZWZpbmUgUlRDX0ZST01fSEVSRSBSVENf
RlJPTV9IRVJFX1dJVEhfRlVOQ1RJT04oX19GVU5DVElPTl9fKQorIAorICNkZWZpbmUgUlRDX0ZS
T01fSEVSRV9XSVRIX0ZVTkNUSU9OKGZ1bmN0aW9uX25hbWUpIFwKKy0gIDo6cnRjOjpMb2NhdGlv
bihmdW5jdGlvbl9uYW1lLCBfX0ZJTEVfXyAiOiIgU1RSSU5HSVpFKF9fTElORV9fKSkKKysgIDo6
cnRjOjpMb2NhdGlvbihmdW5jdGlvbl9uYW1lLCBfX0ZJTEVfXyAiOiIgUlRDX1NUUklOR0laRShf
X0xJTkVfXykpCisgCisgfSAgLy8gbmFtZXNwYWNlIHJ0YworIAorZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL2xvZ2dpbmcuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dn
aW5nLmNjCitpbmRleCBiYjRmYmZhYWUyNS4uNDRlYzNmNTBjMTkgMTAwNjQ0CistLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9sb2dnaW5nLmNj
CisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9sb2dnaW5nLmNjCitAQCAtMjAsMjggKzIwLDI2IEBACisgI2luY2x1ZGUgPENvcmVTZXJ2aWNl
cy9Db3JlU2VydmljZXMuaD4KKyAjZWxpZiBkZWZpbmVkKFdFQlJUQ19BTkRST0lEKQorICNpbmNs
dWRlIDxhbmRyb2lkL2xvZy5oPgorLQorIC8vIEFuZHJvaWQgaGFzIGEgMTAyNCBsaW1pdCBvbiBs
b2cgaW5wdXRzLiBXZSB1c2UgNjAgY2hhcnMgYXMgYW4KKyAvLyBhcHByb3ggZm9yIHRoZSBoZWFk
ZXIvdGFnIHBvcnRpb24uCisgLy8gU2VlIGFuZHJvaWQvc3lzdGVtL2NvcmUvbGlibG9nL2xvZ2Rf
d3JpdGUuYworIHN0YXRpYyBjb25zdCBpbnQga01heExvZ0xpbmVTaXplID0gMTAyNCAtIDYwOwor
ICNlbmRpZiAgLy8gV0VCUlRDX01BQyAmJiAhZGVmaW5lZChXRUJSVENfSU9TKSB8fCBXRUJSVENf
QU5EUk9JRAorIAorLSNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKysj
aW5jbHVkZSA8bGltaXRzLmg+CisgI2luY2x1ZGUgPHRpbWUuaD4KKysKKyAjaW5jbHVkZSA8YWxn
b3JpdGhtPgorICNpbmNsdWRlIDxjc3RkYXJnPgorICNpbmNsdWRlIDx2ZWN0b3I+CisgCistI2lu
Y2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorICNpbmNsdWRlICJydGNfYmFzZS9jcml0aWNhbHNl
Y3Rpb24uaCIKKyAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorICNpbmNsdWRlICJydGNf
YmFzZS9wbGF0Zm9ybV90aHJlYWRfdHlwZXMuaCIKKysjaW5jbHVkZSAicnRjX2Jhc2UvbmV2ZXJf
ZGVzdHJveWVkLmgiCisgI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgorICNpbmNs
dWRlICJydGNfYmFzZS9zdHJpbmdzL3N0cmluZ19idWlsZGVyLmgiCisgI2luY2x1ZGUgInJ0Y19i
YXNlL3N0cmluZ3V0aWxzLmgiCistI2luY2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9u
cy5oIgorICNpbmNsdWRlICJydGNfYmFzZS90aW1ldXRpbHMuaCIKKyAKKyBuYW1lc3BhY2UgcnRj
IHsKK0BAIC02NSwyMCArNjMsMTkgQEAgY29uc3QgY2hhciogRmlsZW5hbWVGcm9tUGF0aChjb25z
dCBjaGFyKiBmaWxlKSB7CisgICAgIHJldHVybiAoZW5kMSA+IGVuZDIpID8gZW5kMSArIDEgOiBl
bmQyICsgMTsKKyB9CisgCistLy8gR2xvYmFsIGxvY2sgZm9yIGxvZyBzdWJzeXN0ZW0sIG9ubHkg
bmVlZGVkIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gc3RyZWFtc18uCistQ3JpdGljYWxTZWN0aW9u
IGdfbG9nX2NyaXQ7CisrLy8gR2xvYmFsIGxvY2sgZm9yIGxvZyBzdWJzeXN0ZW0sIG9ubHkgbmVl
ZGVkIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gc3RyZWFtTGlzdCgpLgorK0NyaXRpY2FsU2VjdGlv
biYgbG9nQ3JpdGljYWxTY29wZSgpIHsKKysgIHN0YXRpYyBhdXRvIHNjb3BlID0gbWFrZU5ldmVy
RGVzdHJveWVkPD4oQ3JpdGljYWxTZWN0aW9uIHsgfSk7CisrICByZXR1cm4gc2NvcGUuZ2V0KCk7
CisrfQorKworIH0gIC8vIG5hbWVzcGFjZQorIAorIC8vIEluZWZmaWNpZW50IGRlZmF1bHQgaW1w
bGVtZW50YXRpb24sIG92ZXJyaWRlIGlzIHJlY29tbWVuZGVkLgorIHZvaWQgTG9nU2luazo6T25M
b2dNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtc2csCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTG9nZ2luZ1NldmVyaXR5IHNldmVyaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRhZykgeworLSAgT25Mb2dNZXNzYWdlKHRhZyArICgiOiAiICsgbXNn
KSwgc2V2ZXJpdHkpOworLX0KKy0KKy12b2lkIExvZ1Npbms6Ok9uTG9nTWVzc2FnZShjb25zdCBz
dGQ6OnN0cmluZyYgbXNnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dpbmdTZXZl
cml0eSAvKiBzZXZlcml0eSAqLykgeworLSAgT25Mb2dNZXNzYWdlKG1zZyk7CisrICBPbkxvZ01l
c3NhZ2UodGFnICsgKCI6ICIgKyBtc2cpKTsKKyB9CisgCisgLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
K0BAIC05MSw3ICs4OCwxNSBAQCBib29sIExvZ01lc3NhZ2U6OmxvZ190b19zdGRlcnJfID0gdHJ1
ZTsKKyAvLyBOb3RlOiB3ZSBleHBsaWNpdGx5IGRvIG5vdCBjbGVhbiB0aGlzIHVwLCBiZWNhdXNl
IG9mIHRoZSB1bmNlcnRhaW4gb3JkZXJpbmcKKyAvLyBvZiBkZXN0cnVjdG9ycyBhdCBwcm9ncmFt
IGV4aXQuICBMZXQgdGhlIHBlcnNvbiB3aG8gc2V0cyB0aGUgc3RyZWFtIHRyaWdnZXIKKyAvLyBj
bGVhbnVwIGJ5IHNldHRpbmcgdG8gbnVsbCwgb3IgbGV0IGl0IGxlYWsgKHNhZmUgYXQgcHJvZ3Jh
bSBleGl0KS4KKy1Mb2dNZXNzYWdlOjpTdHJlYW1MaXN0IExvZ01lc3NhZ2U6OnN0cmVhbXNfIFJU
Q19HVUFSREVEX0JZKGdfbG9nX2NyaXQpOworK3R5cGVkZWYgc3RkOjpwYWlyPExvZ1NpbmsqLCBM
b2dnaW5nU2V2ZXJpdHk+IFN0cmVhbUFuZFNldmVyaXR5OworK3R5cGVkZWYgc3RkOjpsaXN0PFN0
cmVhbUFuZFNldmVyaXR5PiBTdHJlYW1MaXN0OworKworKy8vIFRoZSBvdXRwdXQgc3RyZWFtcyBh
bmQgdGhlaXIgYXNzb2NpYXRlZCBzZXZlcml0aWVzCisrU3RyZWFtTGlzdCYgc3RyZWFtTGlzdCgp
CisrICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQobG9nQ3JpdGljYWxTY29wZSgpKSB7
CisrICAgICAgICBzdGF0aWMgYXV0byBzdHJlYW1fbGlzdCA9IG1ha2VOZXZlckRlc3Ryb3llZDw+
KFN0cmVhbUxpc3QgeyB9KTsKKysgIHJldHVybiBzdHJlYW1fbGlzdC5nZXQoKTsKKyt9CisgCisg
Ly8gQm9vbGVhbiBvcHRpb25zIGRlZmF1bHQgdG8gZmFsc2UgKDApCisgYm9vbCBMb2dNZXNzYWdl
Ojp0aHJlYWRfLCBMb2dNZXNzYWdlOjp0aW1lc3RhbXBfOworQEAgLTEwNSw2ICsxMTAsNyBAQCBM
b2dNZXNzYWdlOjpMb2dNZXNzYWdlKGNvbnN0IGNoYXIqIGZpbGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBMb2dFcnJvckNvbnRleHQgZXJyX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGludCBlcnIpCisgICAgIDogc2V2ZXJpdHlfKHNldikgeworKworICAgaWYgKHRpbWVzdGFtcF8p
IHsKKyAgICAgLy8gVXNlIFN5c3RlbVRpbWVNaWxsaXMgc28gdGhhdCBldmVuIGlmIHRlc3RzIHVz
ZSBmYWtlIGNsb2NrcywgdGhlIHRpbWVzdGFtcAorICAgICAvLyBpbiBsb2cgbWVzc2FnZXMgcmVw
cmVzZW50cyB0aGUgcmVhbCBzeXN0ZW0gdGltZS4KK0BAIC0yMDUsMTMgKzIxMSwxMyBAQCBMb2dN
ZXNzYWdlOjp+TG9nTWVzc2FnZSgpIHsKKyAjZW5kaWYKKyAgIH0KKyAKKy0gIENyaXRTY29wZSBj
cygmZ19sb2dfY3JpdCk7CistICBmb3IgKGF1dG8mIGt2IDogc3RyZWFtc18pIHsKKysgIENyaXRT
Y29wZSBjcygmbG9nQ3JpdGljYWxTY29wZSgpKTsKKysgIGZvciAoYXV0byYga3YgOiBzdHJlYW1M
aXN0KCkpIHsKKyAgICAgaWYgKHNldmVyaXR5XyA+PSBrdi5zZWNvbmQpIHsKKyAjaWYgZGVmaW5l
ZChXRUJSVENfQU5EUk9JRCkKKyAgICAgICBrdi5maXJzdC0+T25Mb2dNZXNzYWdlKHN0ciwgc2V2
ZXJpdHlfLCB0YWdfKTsKKyAjZWxzZQorLSAgICAgIGt2LmZpcnN0LT5PbkxvZ01lc3NhZ2Uoc3Ry
LCBzZXZlcml0eV8pOworKyAgICAgIGt2LmZpcnN0LT5PbkxvZ01lc3NhZ2Uoc3RyKTsKKyAjZW5k
aWYKKyAgICAgfQorICAgfQorQEAgLTI1NCw3ICsyNjAsNyBAQCB2b2lkIExvZ01lc3NhZ2U6Okxv
Z1RpbWVzdGFtcHMoYm9vbCBvbikgeworIAorIHZvaWQgTG9nTWVzc2FnZTo6TG9nVG9EZWJ1ZyhM
b2dnaW5nU2V2ZXJpdHkgbWluX3NldikgeworICAgZ19kYmdfc2V2ID0gbWluX3NldjsKKy0gIENy
aXRTY29wZSBjcygmZ19sb2dfY3JpdCk7CisrICBDcml0U2NvcGUgY3MoJmxvZ0NyaXRpY2FsU2Nv
cGUoKSk7CisgICBVcGRhdGVNaW5Mb2dTZXZlcml0eSgpOworIH0KKyAKK0BAIC0yNjMsOSArMjY5
LDkgQEAgdm9pZCBMb2dNZXNzYWdlOjpTZXRMb2dUb1N0ZGVycihib29sIGxvZ190b19zdGRlcnIp
IHsKKyB9CisgCisgaW50IExvZ01lc3NhZ2U6OkdldExvZ1RvU3RyZWFtKExvZ1NpbmsqIHN0cmVh
bSkgeworLSAgQ3JpdFNjb3BlIGNzKCZnX2xvZ19jcml0KTsKKysgIENyaXRTY29wZSBjcygmbG9n
Q3JpdGljYWxTY29wZSgpKTsKKyAgIExvZ2dpbmdTZXZlcml0eSBzZXYgPSBMU19OT05FOworLSAg
Zm9yIChhdXRvJiBrdiA6IHN0cmVhbXNfKSB7CisrICBmb3IgKGF1dG8mIGt2IDogc3RyZWFtTGlz
dCgpKSB7CisgICAgIGlmICghc3RyZWFtIHx8IHN0cmVhbSA9PSBrdi5maXJzdCkgeworICAgICAg
IHNldiA9IHN0ZDo6bWluKHNldiwga3Yuc2Vjb25kKTsKKyAgICAgfQorQEAgLTI3NCwxNiArMjgw
LDE2IEBAIGludCBMb2dNZXNzYWdlOjpHZXRMb2dUb1N0cmVhbShMb2dTaW5rKiBzdHJlYW0pIHsK
KyB9CisgCisgdm9pZCBMb2dNZXNzYWdlOjpBZGRMb2dUb1N0cmVhbShMb2dTaW5rKiBzdHJlYW0s
IExvZ2dpbmdTZXZlcml0eSBtaW5fc2V2KSB7CistICBDcml0U2NvcGUgY3MoJmdfbG9nX2NyaXQp
OworLSAgc3RyZWFtc18ucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKHN0cmVhbSwgbWluX3Nldikp
OworKyAgQ3JpdFNjb3BlIGNzKCZsb2dDcml0aWNhbFNjb3BlKCkpOworKyAgc3RyZWFtTGlzdCgp
LnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihzdHJlYW0sIG1pbl9zZXYpKTsKKyAgIFVwZGF0ZU1p
bkxvZ1NldmVyaXR5KCk7CisgfQorIAorIHZvaWQgTG9nTWVzc2FnZTo6UmVtb3ZlTG9nVG9TdHJl
YW0oTG9nU2luayogc3RyZWFtKSB7CistICBDcml0U2NvcGUgY3MoJmdfbG9nX2NyaXQpOworLSAg
Zm9yIChTdHJlYW1MaXN0OjppdGVyYXRvciBpdCA9IHN0cmVhbXNfLmJlZ2luKCk7IGl0ICE9IHN0
cmVhbXNfLmVuZCgpOyArK2l0KSB7CisrICBDcml0U2NvcGUgY3MoJmxvZ0NyaXRpY2FsU2NvcGUo
KSk7CisrICBmb3IgKFN0cmVhbUxpc3Q6Oml0ZXJhdG9yIGl0ID0gc3RyZWFtTGlzdCgpLmJlZ2lu
KCk7IGl0ICE9IHN0cmVhbUxpc3QoKS5lbmQoKTsgKytpdCkgeworICAgICBpZiAoc3RyZWFtID09
IGl0LT5maXJzdCkgeworLSAgICAgIHN0cmVhbXNfLmVyYXNlKGl0KTsKKysgICAgICBzdHJlYW1M
aXN0KCkuZXJhc2UoaXQpOworICAgICAgIGJyZWFrOworICAgICB9CisgICB9CitAQCAtMzQyLDkg
KzM0OCw5IEBAIHZvaWQgTG9nTWVzc2FnZTo6Q29uZmlndXJlTG9nZ2luZyhjb25zdCBjaGFyKiBw
YXJhbXMpIHsKKyB9CisgCisgdm9pZCBMb2dNZXNzYWdlOjpVcGRhdGVNaW5Mb2dTZXZlcml0eSgp
CistICAgIFJUQ19FWENMVVNJVkVfTE9DS1NfUkVRVUlSRUQoZ19sb2dfY3JpdCkgeworKyAgICBS
VENfRVhDTFVTSVZFX0xPQ0tTX1JFUVVJUkVEKGxvZ0NyaXRpY2FsU2NvcGUoKSkgeworICAgTG9n
Z2luZ1NldmVyaXR5IG1pbl9zZXYgPSBnX2RiZ19zZXY7CistICBmb3IgKGNvbnN0IGF1dG8mIGt2
IDogc3RyZWFtc18pIHsKKysgIGZvciAoY29uc3QgYXV0byYga3YgOiBzdHJlYW1MaXN0KCkpIHsK
KyAgICAgY29uc3QgTG9nZ2luZ1NldmVyaXR5IHNldiA9IGt2LnNlY29uZDsKKyAgICAgbWluX3Nl
diA9IHN0ZDo6bWluKG1pbl9zZXYsIHNldik7CisgICB9CitAQCAtNDU4LDExICs0NjQsOCBAQCBi
b29sIExvZ01lc3NhZ2U6OklzTm9vcChMb2dnaW5nU2V2ZXJpdHkgc2V2ZXJpdHkpIHsKKyAgIC8v
IFRPRE8odG9tbWkpOiBXZSdyZSBncmFiYmluZyB0aGlzIGxvY2sgZm9yIGV2ZXJ5IExvZ01lc3Nh
Z2UgaW5zdGFuY2UgdGhhdAorICAgLy8gaXMgZ29pbmcgdG8gYmUgbG9nZ2VkLiBUaGlzIGludHJv
ZHVjZXMgdW5uZWNlc3Nhcnkgc3luY2hyb25pemF0aW9uIGZvcgorICAgLy8gYSBmZWF0dXJlIHRo
YXQncyBtb3N0bHkgdXNlZCBmb3IgdGVzdGluZy4KKy0gIENyaXRTY29wZSBjcygmZ19sb2dfY3Jp
dCk7CistICBpZiAoc3RyZWFtc18uc2l6ZSgpID4gMCkKKy0gICAgcmV0dXJuIGZhbHNlOworLQor
LSAgcmV0dXJuIHRydWU7CisrICBDcml0U2NvcGUgY3MoJmxvZ0NyaXRpY2FsU2NvcGUoKSk7Cisr
ICByZXR1cm4gc3RyZWFtTGlzdCgpLnNpemUoKSA9PSAwOworIH0KKyAKKyB2b2lkIExvZ01lc3Nh
Z2U6OkZpbmlzaFByaW50U3RyZWFtKCkgeworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldmVyX2Rlc3Ryb3llZC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbmV2ZXJfZGVz
dHJveWVkLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uZmNjNjJl
MzU1MzQKKy0tLSAvZGV2L251bGwKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3J0Y19iYXNlL25ldmVyX2Rlc3Ryb3llZC5oCitAQCAtMCwwICsxLDY5IEBA
CisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKysgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisrICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKysgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKysgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKi8KKysKKysjcHJhZ21hIG9uY2UKKysK
KysjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisrI2luY2x1ZGUgPHV0aWxpdHk+CisrCisrbmFtZXNw
YWNlIHJ0YyB7CisrCisrdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTmV2ZXJEZXN0cm95ZWQg
eworK3B1YmxpYzoKKysgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gTmV2ZXJEZXN0cm95
ZWQoQXJncyYmLi4uIGFyZ3MpCisrICAgIHsKKysgICAgICAgIG5ldyAoc3RvcmFnZVBvaW50ZXIo
KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworKyAgICB9CisrCisrICAgIE5ldmVy
RGVzdHJveWVkKE5ldmVyRGVzdHJveWVkJiYgb3RoZXIpCisrICAgIHsKKysgICAgICAgIG5ldyAo
c3RvcmFnZVBvaW50ZXIoKSkgVChzdGQ6Om1vdmUoKm90aGVyLnN0b3JhZ2VQb2ludGVyKCkpKTsK
KysgICAgfQorKworKyAgICBvcGVyYXRvciBUJigpIHsgcmV0dXJuICpzdG9yYWdlUG9pbnRlcigp
OyB9CisrICAgIFQmIGdldCgpIHsgcmV0dXJuICpzdG9yYWdlUG9pbnRlcigpOyB9CisrCisrICAg
IG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3QgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVyKCk7IH0K
KysgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVyKCk7IH0K
KysKKytwcml2YXRlOgorKyAgICBOZXZlckRlc3Ryb3llZChjb25zdCBOZXZlckRlc3Ryb3llZCYp
ID0gZGVsZXRlOworKyAgICBOZXZlckRlc3Ryb3llZCYgb3BlcmF0b3I9KGNvbnN0IE5ldmVyRGVz
dHJveWVkJikgPSBkZWxldGU7CisrCisrICAgIHVzaW5nIFBvaW50ZXJUeXBlID0gdHlwZW5hbWUg
c3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUqOworKworKyAgICBQb2ludGVyVHlwZSBzdG9yYWdl
UG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UG9pbnRlclR5cGU+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVCo+KCZtX3N0b3JhZ2UpKTsgfQorKworKyAgICAvLyBGSVhNRTogSW52
ZXN0aWdhdGUgd2hldGhlciB3ZSBzaG91bGQgYWxsb2NhdGUgYSBodW5rIG9mIHZpcnR1YWwgbWVt
b3J5CisrICAgIC8vIGFuZCBoYW5kIG91dCBjaHVua3Mgb2YgaXQgdG8gTmV2ZXJEZXN0cm95ZWQg
aW5zdGVhZCwgdG8gcmVkdWNlIGZyYWdtZW50YXRpb24uCisrICAgIHR5cGVuYW1lIHN0ZDo6YWxp
Z25lZF9zdG9yYWdlPHNpemVvZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlw
ZSBtX3N0b3JhZ2U7CisrfTsKKysKKyt0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgTmV2ZXJE
ZXN0cm95ZWQ8VD4gbWFrZU5ldmVyRGVzdHJveWVkKFQmJiBhcmd1bWVudCkKKyt7CisrICAgIHJl
dHVybiBOZXZlckRlc3Ryb3llZDxUPihzdGQ6Om1vdmUoYXJndW1lbnQpKTsKKyt9CisrCisrfSAv
LyBuYW1lc3BhY2UgcnRjCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvbnVtZXJpY3Mv
c2FmZV9jb252ZXJzaW9ucy5oCitpbmRleCA1OGVmY2FhNzQ2YS4uNDhjMjEyZTRkNDkgMTAwNjQ0
CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFz
ZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMu
aAorQEAgLTYzLDExICs2MywxMSBAQCBpbmxpbmUgRHN0IHNhdHVyYXRlZF9jYXN0KFNyYyB2YWx1
ZSkgeworIAorICAgICAvLyBTaG91bGQgZmFpbCBvbmx5IG9uIGF0dGVtcHRpbmcgdG8gYXNzaWdu
IE5hTiB0byBhIHNhdHVyYXRlZCBpbnRlZ2VyLgorICAgICBjYXNlIGludGVybmFsOjpUWVBFX0lO
VkFMSUQ6CistICAgICAgRkFUQUwoKTsKKysgICAgICBSVENfRkFUQUwoKTsKKyAgICAgICByZXR1
cm4gc3RkOjpudW1lcmljX2xpbWl0czxEc3Q+OjptYXgoKTsKKyAgIH0KKyAKKy0gIEZBVEFMKCk7
CisrICBSVENfRkFUQUwoKTsKKyAgIHJldHVybiBzdGF0aWNfY2FzdDxEc3Q+KHZhbHVlKTsKKyB9
CisgCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvb3BlbnNzbGNlcnRpZmljYXRlLmNjCitpbmRl
eCA0ZTYxYjg2ZjNiYS4uNGUzMjVkY2VjMDEgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9vcGVuc3NsY2VydGlmaWNhdGUuY2MK
KysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L29wZW5zc2xjZXJ0aWZpY2F0ZS5jYworQEAgLTI0NCwxMSArMjQ0LDExIEBAIHN0ZDo6dW5pcXVl
X3B0cjxTU0xDZXJ0aWZpY2F0ZT4gT3BlblNTTENlcnRpZmljYXRlOjpDbG9uZSgpIGNvbnN0IHsK
KyBzdGQ6OnN0cmluZyBPcGVuU1NMQ2VydGlmaWNhdGU6OlRvUEVNU3RyaW5nKCkgY29uc3Qgewor
ICAgQklPKiBiaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKyAgIGlmICghYmlvKSB7CistICAg
IEZBVEFMKCkgPDwgIlVucmVhY2hhYmxlIGNvZGUuIjsKKysgICAgUlRDX0ZBVEFMKCkgPDwgIlVu
cmVhY2hhYmxlIGNvZGUuIjsKKyAgIH0KKyAgIGlmICghUEVNX3dyaXRlX2Jpb19YNTA5KGJpbywg
eDUwOV8pKSB7CisgICAgIEJJT19mcmVlKGJpbyk7CistICAgIEZBVEFMKCkgPDwgIlVucmVhY2hh
YmxlIGNvZGUuIjsKKysgICAgUlRDX0ZBVEFMKCkgPDwgIlVucmVhY2hhYmxlIGNvZGUuIjsKKyAg
IH0KKyAgIEJJT193cml0ZShiaW8sICJcMCIsIDEpOworICAgY2hhciogYnVmZmVyOworQEAgLTI2
NCwxMSArMjY0LDExIEBAIHZvaWQgT3BlblNTTENlcnRpZmljYXRlOjpUb0RFUihCdWZmZXIqIGRl
cl9idWZmZXIpIGNvbnN0IHsKKyAgIC8vIENhbGN1bGF0ZXMgdGhlIERFUiByZXByZXNlbnRhdGlv
biBvZiB0aGUgY2VydGlmaWNhdGUsIGZyb20gc2NyYXRjaC4KKyAgIEJJTyogYmlvID0gQklPX25l
dyhCSU9fc19tZW0oKSk7CisgICBpZiAoIWJpbykgeworLSAgICBGQVRBTCgpIDw8ICJVbnJlYWNo
YWJsZSBjb2RlLiI7CisrICAgIFJUQ19GQVRBTCgpIDw8ICJVbnJlYWNoYWJsZSBjb2RlLiI7Cisg
ICB9CisgICBpZiAoIWkyZF9YNTA5X2JpbyhiaW8sIHg1MDlfKSkgeworICAgICBCSU9fZnJlZShi
aW8pOworLSAgICBGQVRBTCgpIDw8ICJVbnJlYWNoYWJsZSBjb2RlLiI7CisrICAgIFJUQ19GQVRB
TCgpIDw8ICJVbnJlYWNoYWJsZSBjb2RlLiI7CisgICB9CisgICBjaGFyKiBkYXRhID0gbnVsbHB0
cjsKKyAgIHNpemVfdCBsZW5ndGggPSBCSU9fZ2V0X21lbV9kYXRhKGJpbywgJmRhdGEpOworZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3BoeXNpY2Fsc29ja2V0c2VydmVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXIuY2MKK2luZGV4IDRh
ZDI4NTdjMDBjLi43NDQ4YTdlMDQyNyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2Fsc29ja2V0c2VydmVyLmNjCisr
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9w
aHlzaWNhbHNvY2tldHNlcnZlci5jYworQEAgLTU5Niw3ICs1OTYsNyBAQCBib29sIFNvY2tldERp
c3BhdGNoZXI6OkluaXRpYWxpemUoKSB7CisgI2VsaWYgZGVmaW5lZChXRUJSVENfUE9TSVgpCisg
ICBmY250bChzXywgRl9TRVRGTCwgZmNudGwoc18sIEZfR0VURkwsIDApIHwgT19OT05CTE9DSyk7
CisgI2VuZGlmCistI2lmIGRlZmluZWQoV0VCUlRDX0lPUykKKysjaWYgZGVmaW5lZChXRUJSVENf
SU9TKSB8fCAoZGVmaW5lZChXRUJSVENfTUFDKSAmJiBkZWZpbmVkKFdFQlJUQ19XRUJLSVRfQlVJ
TEQpKQorICAgLy8gaU9TIG1heSBraWxsIHNvY2tldHMgd2hlbiB0aGUgYXBwIGlzIG1vdmVkIHRv
IHRoZSBiYWNrZ3JvdW5kCisgICAvLyAoc3BlY2lmaWNhbGx5LCBpZiB0aGUgYXBwIGRvZXNuJ3Qg
dXNlIHRoZSAidm9pcCIgVUlCYWNrZ3JvdW5kTW9kZSkuIFdoZW4KKyAgIC8vIHdlIGF0dGVtcHQg
dG8gd3JpdGUgdG8gc3VjaCBhIHNvY2tldCwgU0lHUElQRSB3aWxsIGJlIHJhaXNlZCwgd2hpY2gg
YnkKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9ydGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9zdHJpbmdpemVfbWFjcm9zLmgKK2luZGV4IGFlZThk
MTQ1NTFkLi4zOGM2ZjE4MzZiZCAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3N0cmluZ2l6ZV9tYWNyb3MuaAorKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2Uvc3RyaW5naXpl
X21hY3Jvcy5oCitAQCAtOCw3ICs4LDcgQEAKKyAgKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCisgICovCisgCistLy8gTW9kaWZp
ZWQgZnJvbSB0aGUgQ2hyb21pdW0gb3JpZ2luYWw6CisrLy8gTW9kaWZpZWQgZnJvbSB0aGUgQ2h4
c3JvbWl1bSBvcmlnaW5hbDoKKyAvLyBzcmMvYmFzZS9zdHJpbmdzL3N0cmluZ2l6ZV9tYWNyb3Mu
aAorIAorIC8vIFRoaXMgZmlsZSBkZWZpbmVzIHByZXByb2Nlc3NvciBtYWNyb3MgZm9yIHN0cmlu
Z2l6aW5nIHByZXByb2Nlc3NvcgorQEAgLTMzLDYgKzMzLDYgQEAKKyAvLyBUaGVuOgorIC8vICAg
U1RSSU5HSVpFKEEpIHByb2R1Y2VzICJGT08iCisgLy8gICBTVFJJTkdJWkUoQih5KSkgcHJvZHVj
ZXMgIm15b2JqLT5GdW5jdGlvbkNhbGwoeSkiCistI2RlZmluZSBTVFJJTkdJWkUoeCkgU1RSSU5H
SVpFX05PX0VYUEFOU0lPTih4KQorKyNkZWZpbmUgUlRDX1NUUklOR0laRSh4KSBTVFJJTkdJWkVf
Tk9fRVhQQU5TSU9OKHgpCisgCisgI2VuZGlmICAvLyBSVENfQkFTRV9TVFJJTkdJWkVfTUFDUk9T
X0hfCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvcnRjX2Jhc2UvdmlydHVhbHNvY2tldHNlcnZlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuY2MKK2lu
ZGV4IDc5Njk0MTEyYzgxLi5iZmNlMGY1NDU0MSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIu
Y2MKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19i
YXNlL3ZpcnR1YWxzb2NrZXRzZXJ2ZXIuY2MKK0BAIC0xMDI2LDkgKzEwMjYsOSBAQCB2b2lkIFZp
cnR1YWxTb2NrZXRTZXJ2ZXI6OlVwZGF0ZURlbGF5RGlzdHJpYnV0aW9uKCkgeworICAgfQorIH0K
KyAKKy1zdGF0aWMgZG91YmxlIFBJID0gNCAqIGF0YW4oMS4wKTsKKyAKKyBzdGF0aWMgZG91Ymxl
IE5vcm1hbChkb3VibGUgeCwgZG91YmxlIG1lYW4sIGRvdWJsZSBzdGRkZXYpIHsKKysgIHN0YXRp
YyBkb3VibGUgUEkgPSA0ICogYXRhbigxLjApOworICAgZG91YmxlIGEgPSAoeCAtIG1lYW4pICog
KHggLSBtZWFuKSAvICgyICogc3RkZGV2ICogc3RkZGV2KTsKKyAgIHJldHVybiBleHAoLWEpIC8g
KHN0ZGRldiAqIHNxcnQoMiAqIFBJKSk7CisgfQorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvRW5jb2RlclV0aWxpdGllcy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9F
bmNvZGVyVXRpbGl0aWVzLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAw
MC4uNWI5YmRmZGExMTQKKy0tLSAvZGV2L251bGwKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvRW5jb2RlclV0aWxpdGllcy5oCitAQCAt
MCwwICsxLDUwIEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICog
YXJlIG1ldDoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqCisrICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKysgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisrICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKysgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKysgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKi8KKysKKysjcHJh
Z21hIG9uY2UKKysKKysjaW5jbHVkZSAiVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuaCIKKysKKysj
aWYgRU5BQkxFX1ZDUF9FTkNPREVSCisrCisrI2RlZmluZSBDb21wcmVzc2lvblNlc3Npb25SZWYg
VkNQQ29tcHJlc3Npb25TZXNzaW9uUmVmCisrI2RlZmluZSBDb21wcmVzc2lvblNlc3Npb25TZXRQ
cm9wZXJ0eSB3ZWJydGM6OlZDUENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5CisrI2RlZmlu
ZSBDb21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wgd2VicnRjOjpWQ1BDb21wcmVz
c2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wKKysjZGVmaW5lIENvbXByZXNzaW9uU2Vzc2lv
bkVuY29kZUZyYW1lIHdlYnJ0Yzo6VkNQQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUKKysj
ZGVmaW5lIENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSB3ZWJydGM6OlZDUENvbXByZXNzaW9uU2Vz
c2lvbkNyZWF0ZQorKyNkZWZpbmUga0NvZGVjVHlwZUgyNjQga1ZDUENvZGVjVHlwZTRDQ19IMjY0
CisrI2RlZmluZSBDb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRlIHdlYnJ0Yzo6VkNQQ29tcHJl
c3Npb25TZXNzaW9uSW52YWxpZGF0ZQorKworKyNlbHNlCisrCisrI2RlZmluZSBDb21wcmVzc2lv
blNlc3Npb25SZWYgVlRDb21wcmVzc2lvblNlc3Npb25SZWYKKysjZGVmaW5lIENvbXByZXNzaW9u
U2Vzc2lvblNldFByb3BlcnR5IFZUU2Vzc2lvblNldFByb3BlcnR5CisrI2RlZmluZSBDb21wcmVz
c2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wgVlRDb21wcmVzc2lvblNlc3Npb25HZXRQaXhl
bEJ1ZmZlclBvb2wKKysjZGVmaW5lIENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lIFZUQ29t
cHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUKKysjZGVmaW5lIENvbXByZXNzaW9uU2Vzc2lvbkNy
ZWF0ZSBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZQorKyNkZWZpbmUga0NvZGVjVHlwZUgyNjQg
a0NNVmlkZW9Db2RlY1R5cGVfSDI2NAorKyNkZWZpbmUgQ29tcHJlc3Npb25TZXNzaW9uSW52YWxp
ZGF0ZSBWVENvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUKKysKKysjZW5kaWYKK2RpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1ZpZGVvUHJvY2Vzc2luZ1NvZnRMaW5rLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuY3BwCitu
ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjEwMWU4N2M2Njc3CistLS0g
L2Rldi9udWxsCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvV2ViS2l0L1ZpZGVvUHJvY2Vzc2luZ1NvZnRMaW5rLmNwcAorQEAgLTAsMCArMSw3OCBA
QAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6Cisr
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKysgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKysgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisrICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisrICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisrICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKysgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKysgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICovCisrCisrI2luY2x1ZGUgIlZpZGVv
UHJvY2Vzc2luZ1NvZnRMaW5rLmgiCisrCisrI2lmIEVOQUJMRV9WQ1BfRU5DT0RFUgorKworKyNp
bmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisrI2ltcG9ydCA8ZGxmY24uaD4KKysjaW1wb3J0
IDxvYmpjL3J1bnRpbWUuaD4KKysKKysvLyBNYWNyb3MgY29waWVkIGZyb20gPHd0Zi9jb2NvYS9T
b2Z0TGlua2luZy5oPgorKyNkZWZpbmUgU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9T
T1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaykgXAorKyAgICBuYW1lc3BhY2UgZnVu
Y3Rpb25OYW1lc3BhY2UgeyBcCisrICAgIHZvaWQqIGZyYW1ld29yayMjTGlicmFyeShib29sIGlz
T3B0aW9uYWwpIFwKKysgICAgeyBcCisrICAgICAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3JrTGli
cmFyeTsgXAorKyAgICAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOyBcCisrICAgICAg
ICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeeyBcCisrICAgICAgICAgICAgZnJhbWV3b3JrTGlicmFy
eSA9IGRsb3BlbigiL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzLyIgI2ZyYW1ld29y
ayAiLmZyYW1ld29yay8iICNmcmFtZXdvcmssIFJUTERfTk9XKTsgXAorKyAgICAgICAgICAgIGlm
ICghaXNPcHRpb25hbCAmJiAhZnJhbWV3b3JrTGlicmFyeSkgXAorKyAgICAgICAgICAgICAgICBS
VENfTE9HKExTX0VSUk9SKSA8PCAiQ2Fubm90IG9wZW4gZnJhbWV3b3JrOiAiIDw8IGRsZXJyb3Io
KTsgXAorKyAgICAgICAgfSk7IFwKKysgICAgICAgIHJldHVybiBmcmFtZXdvcmtMaWJyYXJ5OyBc
CisrICAgIH0gXAorKyAgICB9CisrCisrI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5
cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMpIFwKKysgICAgZXh0ZXJu
ICJDIiB7IFwKKysgICAgcmVzdWx0VHlwZSBmdW5jdGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRp
b25zOyBcCisrICAgIH0gXAorKyAgICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCisr
ICAgIHN0YXRpYyByZXN1bHRUeXBlIGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFt
ZXRlckRlY2xhcmF0aW9uczsgXAorKyAgICByZXN1bHRUeXBlICgqc29mdExpbmsjI2ZyYW1ld29y
ayMjZnVuY3Rpb25OYW1lKSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMgPSBpbml0IyNmcmFtZXdvcmsj
I2Z1bmN0aW9uTmFtZTsgXAorKyAgICBzdGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsj
I2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMgXAorKyAgICB7IFwKKysgICAgICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsgXAorKyAgICAgICAgZGlzcGF0Y2hfb25jZSgm
b25jZSwgXnsgXAorKyAgICAgICAgICAgIHNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFt
ZSA9IChyZXN1bHRUeXBlICgqKSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMpIGRsc3ltKGZyYW1ld29y
ayMjTGlicmFyeSgpLCAjZnVuY3Rpb25OYW1lKTsgXAorKyAgICAgICAgICAgIGlmICghc29mdExp
bmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lKSBcCisrICAgICAgICAgICAgICAgIFJUQ19MT0co
TFNfRVJST1IpIDw8ICJDYW5ub3QgZmluZCBmdW5jdGlvbiAjI2Z1bmN0aW9uTmFtZTogIiA8PCBk
bGVycm9yKCk7IFwKKysgICAgICAgIH0pOyBcCisrICAgICAgICByZXR1cm4gc29mdExpbmsjI2Zy
YW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBcCisrICAgIH0gXAorK30KKysK
KytTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRSh3ZWJydGMsIFZpZGVvUHJv
Y2Vzc2luZykKKysKKytTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRSh3ZWJydGMsIFZpZGVv
UHJvY2Vzc2luZywgVkNQQ29tcHJlc3Npb25TZXNzaW9uU2V0UHJvcGVydHksIE9TU3RhdHVzLCAo
VkNQQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwgQ0ZUeXBl
UmVmIHZhbHVlKSwgKHNlc3Npb24sIGtleSwgdmFsdWUpKQorK1NPRlRfTElOS19GVU5DVElPTl9G
T1JfU09VUkNFKHdlYnJ0YywgVmlkZW9Qcm9jZXNzaW5nLCBWQ1BDb21wcmVzc2lvblNlc3Npb25H
ZXRQaXhlbEJ1ZmZlclBvb2wsIENWUGl4ZWxCdWZmZXJQb29sUmVmLCAoVkNQQ29tcHJlc3Npb25T
ZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0Uod2VicnRjLCBWaWRlb1Byb2Nlc3NpbmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvbkVuY29k
ZUZyYW1lLCBPU1N0YXR1cywgKFZDUENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDVklt
YWdlQnVmZmVyUmVmIGJ1ZmZlciwgQ01UaW1lIHRpbWVzdGFtcCwgQ01UaW1lIHRpbWUsIENGRGlj
dGlvbmFyeVJlZiBkaWN0aW9uYXJ5LCB2b2lkKiBkYXRhLCBWVEVuY29kZUluZm9GbGFncyogZmxh
Z3MpLCAoc2Vzc2lvbiwgYnVmZmVyLCB0aW1lc3RhbXAsIHRpbWUsIGRpY3Rpb25hcnksIGRhdGEs
IGZsYWdzKSkKKytTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRSh3ZWJydGMsIFZpZGVvUHJv
Y2Vzc2luZywgVkNQQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlLCBPU1N0YXR1cywgKENGQWxsb2Nh
dG9yUmVmIGFsbG9jYXRvcjEsIGludDMyX3QgdmFsdWUxICwgaW50MzJfdCB2YWx1ZTIsIENNVmlk
ZW9Db2RlY1R5cGUgdHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkxLCBDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeTIsIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvcjMsIFZUQ29tcHJlc3Np
b25PdXRwdXRDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogZGF0YSwgVkNQQ29tcHJlc3Npb25TZXNz
aW9uUmVmKiBzZXNzaW9uKSwgKGFsbG9jYXRvcjEsIHZhbHVlMSwgdmFsdWUyLCB0eXBlLCBkaWN0
aW9uYXJ5MSwgZGljdGlvbmFyeTIsIGFsbG9jYXRvcjMsIGNhbGxiYWNrLCBkYXRhLCBzZXNzaW9u
KSkKKytTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRSh3ZWJydGMsIFZpZGVvUHJvY2Vzc2lu
ZywgVkNQQ29tcHJlc3Npb25TZXNzaW9uSW52YWxpZGF0ZSwgdm9pZCwgKFZDUENvbXByZXNzaW9u
U2Vzc2lvblJlZiBzZXNzaW9uKSwgKHNlc3Npb24pKQorK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKHdlYnJ0YywgVmlkZW9Qcm9jZXNzaW5nLCBWUE1vZHVsZUluaXRpYWxpemUsIHZvaWQs
ICgpLCAoKSkKKysKKysjZW5kaWYgLy8gRU5BQkxFX1ZDUF9FTkNPREVSCitkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9WaWRl
b1Byb2Nlc3NpbmdTb2Z0TGluay5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL1dlYktpdC9WaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5oCituZXcgZmlsZSBt
b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLmNmODY2ZDhhOGRiCistLS0gL2Rldi9udWxs
CisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1ZpZGVvUHJvY2Vzc2luZ1NvZnRMaW5rLmgKK0BAIC0wLDAgKzEsMTQwIEBACisrLyoKKysg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAq
CisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKysgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKysgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisrICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKysgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKysgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKysgKi8KKysKKysjcHJhZ21hIG9uY2UKKysKKysjaWZkZWYg
X19BUFBMRV9fCisrI2luY2x1ZGUgPEF2YWlsYWJpbGl0eS5oPgorKyNpbmNsdWRlIDxBdmFpbGFi
aWxpdHlNYWNyb3MuaD4KKysjaW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisrCisrLy8g
TWFjcm8gdGFrZW4gZnJvbSBXVEYvd3RmL1BsYXRmb3JtLmgKKysjaWYgZGVmaW5lZCBfX2hhc19p
bmNsdWRlICYmIF9faGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGUHJpdi5oPikKKysKKysj
aWYgKGRlZmluZWQoVEFSR0VUX0lQSE9ORV9TSU1VTEFUT1IpICAmJiBUQVJHRVRfSVBIT05FX1NJ
TVVMQVRPUikKKysjZGVmaW5lIEVOQUJMRV9WQ1BfRU5DT0RFUiAwCisrI2VsaWYgKGRlZmluZWQo
VEFSR0VUX09TX0lQSE9ORSkgICYmIFRBUkdFVF9PU19JUEhPTkUpCisrI2RlZmluZSBFTkFCTEVf
VkNQX0VOQ09ERVIgMQorKyNlbGlmIChkZWZpbmVkKFRBUkdFVF9PU19NQUMpICYmIFRBUkdFVF9P
U19NQUMpCisrI2RlZmluZSBFTkFCTEVfVkNQX0VOQ09ERVIgKF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMzAwICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+
PSAxMDEzMDQpCisrI2VuZGlmCisrCisrI2VuZGlmCisrCisrI2lmICFkZWZpbmVkKEVOQUJMRV9W
Q1BfRU5DT0RFUikKKysjZGVmaW5lIEVOQUJMRV9WQ1BfRU5DT0RFUiAwCisrI2VuZGlmCisrCisr
I2lmICFkZWZpbmVkKEFMV0FZU19JTkxJTkUpCisrI2RlZmluZSBBTFdBWVNfSU5MSU5FIGlubGlu
ZQorKyNlbmRpZgorKworKyNpZmRlZiBfX2NwbHVzcGx1cworKyNkZWZpbmUgV1RGX0VYVEVSTl9D
X0JFR0lOIGV4dGVybiAiQyIgeworKyNkZWZpbmUgV1RGX0VYVEVSTl9DX0VORCB9CisrI2Vsc2UK
KysjZGVmaW5lIFdURl9FWFRFUk5fQ19CRUdJTgorKyNkZWZpbmUgV1RGX0VYVEVSTl9DX0VORAor
KyNlbmRpZgorKworKy8vIE1hY3JvcyBjb3BpZWQgZnJvbSA8d3RmL2NvY29hL1NvZnRMaW5raW5n
Lmg+CisrI2RlZmluZSBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1l
c3BhY2UsIGZyYW1ld29yaykgXAorKyAgICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBc
CisrICAgIGV4dGVybiB2b2lkKiBmcmFtZXdvcmsjI0xpYnJhcnkoYm9vbCBpc09wdGlvbmFsID0g
ZmFsc2UpOyBcCisrICAgIGJvb2wgaXMjI2ZyYW1ld29yayMjRnJhbWV3b3JrQXZhaWxhYmxlKCk7
IFwKKysgICAgaW5saW5lIGJvb2wgaXMjI2ZyYW1ld29yayMjRnJhbWV3b3JrQXZhaWxhYmxlKCkg
eyBcCisrICAgICAgICByZXR1cm4gZnJhbWV3b3JrIyNMaWJyYXJ5KHRydWUpICE9IG51bGxwdHI7
IFwKKysgICAgfSBcCisrICAgIH0KKysKKysjZGVmaW5lIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0
VHlwZSwgcGFyYW1ldGVyRGVjbGFyYXRpb25zLCBwYXJhbWV0ZXJOYW1lcykgXAorKyAgICBXVEZf
RVhURVJOX0NfQkVHSU4gXAorKyAgICByZXN1bHRUeXBlIGZ1bmN0aW9uTmFtZSBwYXJhbWV0ZXJE
ZWNsYXJhdGlvbnM7IFwKKysgICAgV1RGX0VYVEVSTl9DX0VORCBcCisrICAgIG5hbWVzcGFjZSBm
dW5jdGlvbk5hbWVzcGFjZSB7IFwKKysgICAgZXh0ZXJuIHJlc3VsdFR5cGUgKCpzb2Z0TGluayMj
ZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXAorKyAgICBp
bmxpbmUgcmVzdWx0VHlwZSBzb2Z0TGlua18jI2ZyYW1ld29yayMjXyMjZnVuY3Rpb25OYW1lIHBh
cmFtZXRlckRlY2xhcmF0aW9ucyBcCisrICAgIHsgXAorKyAgICAgICAgcmV0dXJuIHNvZnRMaW5r
IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJOYW1lczsgXAorKyAgICB9IFwKKysg
ICAgfSBcCisrICAgIEFMV0FZU19JTkxJTkUgcmVzdWx0VHlwZSBmdW5jdGlvbk5hbWUgcGFyYW1l
dGVyRGVjbGFyYXRpb25zIFwKKysgICAge1wKKysgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWVz
cGFjZTo6c29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBc
CisrICAgIH0KKysKKysjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoZnJhbWV3
b3JrKSBcCisrICAgIHN0YXRpYyB2b2lkKiBmcmFtZXdvcmsjI0xpYnJhcnkoKSBcCisrICAgIHsg
XAorKyAgICAgICAgc3RhdGljIHZvaWQqIGZyYW1ld29ya0xpYnJhcnkgPSBkbG9wZW4oIi9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzLyIgI2ZyYW1ld29yayAiLmZyYW1ld29yay8iICNmcmFtZXdv
cmssIFJUTERfTk9XKTsgXAorKyAgICAgICAgcmV0dXJuIGZyYW1ld29ya0xpYnJhcnk7IFwKKysg
ICAgfQorKworKyNkZWZpbmUgU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoZnJhbWV3b3JrLCBu
YW1lLCB0eXBlKSBcCisrICAgIHN0YXRpYyB0eXBlIGluaXQjI25hbWUoKTsgXAorKyAgICBzdGF0
aWMgdHlwZSAoKmdldCMjbmFtZSkoKSA9IGluaXQjI25hbWU7IFwKKysgICAgc3RhdGljIHR5cGUg
cG9pbnRlciMjbmFtZTsgXAorKyAgICBcCisrICAgIHN0YXRpYyB0eXBlIG5hbWUjI0Z1bmN0aW9u
KCkgXAorKyAgICB7IFwKKysgICAgICAgIHJldHVybiBwb2ludGVyIyNuYW1lOyBcCisrICAgIH0g
XAorKyAgICBcCisrICAgIHN0YXRpYyB0eXBlIGluaXQjI25hbWUoKSBcCisrICAgIHsgXAorKyAg
ICAgICAgdm9pZCoqIHBvaW50ZXIgPSBzdGF0aWNfY2FzdDx2b2lkKio+KGRsc3ltKGZyYW1ld29y
ayMjTGlicmFyeSgpLCAjbmFtZSkpOyBcCisrICAgICAgICBpZiAocG9pbnRlcikgXAorKyAgICAg
ICAgICAgIHBvaW50ZXIjI25hbWUgPSAoX19icmlkZ2UgdHlwZSkoKnBvaW50ZXIpOyBcCisrICAg
ICAgICBnZXQjI25hbWUgPSBuYW1lIyNGdW5jdGlvbjsgXAorKyAgICAgICAgcmV0dXJuIHBvaW50
ZXIjI25hbWU7IFwKKysgICAgfQorKworKyNpZiBFTkFCTEVfVkNQX0VOQ09ERVIKKysKKysjaW5j
bHVkZSA8VmlkZW9Qcm9jZXNzaW5nL1ZpZGVvUHJvY2Vzc2luZy5oPgorKworK1NPRlRfTElOS19G
UkFNRVdPUktfRk9SX0hFQURFUih3ZWJydGMsIFZpZGVvUHJvY2Vzc2luZykKKysKKytTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUih3ZWJydGMsIFZpZGVvUHJvY2Vzc2luZywgVkNQQ29tcHJl
c3Npb25TZXNzaW9uU2V0UHJvcGVydHksIE9TU3RhdHVzLCAoVkNQQ29tcHJlc3Npb25TZXNzaW9u
UmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwgQ0ZUeXBlUmVmIHZhbHVlKSwgKHNlc3Npb24s
IGtleSwgdmFsdWUpKQorKyNkZWZpbmUgVkNQQ29tcHJlc3Npb25TZXNzaW9uU2V0UHJvcGVydHkg
c29mdExpbmtfVmlkZW9Qcm9jZXNzaW5nX1ZDUENvbXByZXNzaW9uU2Vzc2lvblNldFByb3BlcnR5
CisrCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIod2VicnRjLCBWaWRlb1Byb2Nlc3Np
bmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvbkdldFBpeGVsQnVmZmVyUG9vbCwgQ1ZQaXhlbEJ1ZmZl
clBvb2xSZWYsIChWQ1BDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkK
KysjZGVmaW5lIFZDUENvbXByZXNzaW9uU2Vzc2lvbkdldFBpeGVsQnVmZmVyUG9vbCBzb2Z0TGlu
a19WaWRlb1Byb2Nlc3NpbmdfVkNQQ29tcHJlc3Npb25TZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29s
CisrCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIod2VicnRjLCBWaWRlb1Byb2Nlc3Np
bmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZDUENvbXBy
ZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDVkltYWdlQnVmZmVyUmVmIGJ1ZmZlciwgQ01UaW1l
IHRpbWVzdGFtcCwgQ01UaW1lIHRpbWUsIENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5LCB2b2lk
ICogZGF0YSwgVlRFbmNvZGVJbmZvRmxhZ3MgKiBmbGFncyksIChzZXNzaW9uLCBidWZmZXIsIHRp
bWVzdGFtcCwgdGltZSwgZGljdGlvbmFyeSwgZGF0YSwgZmxhZ3MpKQorKyNkZWZpbmUgVkNQQ29t
cHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUgc29mdExpbmtfVmlkZW9Qcm9jZXNzaW5nX1ZDUENv
bXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lCisrCisrU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIod2VicnRjLCBWaWRlb1Byb2Nlc3NpbmcsIFZDUENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0
ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IxLCBpbnQzMl90IHZhbHVlMSAs
IGludDMyX3QgdmFsdWUyLCBDTVZpZGVvQ29kZWNUeXBlIHR5cGUsIENGRGljdGlvbmFyeVJlZiBk
aWN0aW9uYXJ5MSwgQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkyLCBDRkFsbG9jYXRvclJlZiBh
bGxvY2F0b3IzLCBWVENvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKiBk
YXRhLCBWQ1BDb21wcmVzc2lvblNlc3Npb25SZWYgKnNlc3Npb24pLCAoYWxsb2NhdG9yMSwgdmFs
dWUxLCB2YWx1ZTIsIHR5cGUsIGRpY3Rpb25hcnkxLCBkaWN0aW9uYXJ5MiwgYWxsb2NhdG9yMywg
Y2FsbGJhY2ssIGRhdGEsIHNlc3Npb24pKQorKyNkZWZpbmUgVkNQQ29tcHJlc3Npb25TZXNzaW9u
Q3JlYXRlIHNvZnRMaW5rX1ZpZGVvUHJvY2Vzc2luZ19WQ1BDb21wcmVzc2lvblNlc3Npb25DcmVh
dGUKKysKKytTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUih3ZWJydGMsIFZpZGVvUHJvY2Vz
c2luZywgVkNQQ29tcHJlc3Npb25TZXNzaW9uSW52YWxpZGF0ZSwgdm9pZCwgKFZDUENvbXByZXNz
aW9uU2Vzc2lvblJlZiBzZXNzaW9uKSwgKHNlc3Npb24pKQorKyNkZWZpbmUgVkNQQ29tcHJlc3Np
b25TZXNzaW9uSW52YWxpZGF0ZSBzb2Z0TGlua19WaWRlb1Byb2Nlc3NpbmdfVkNQQ29tcHJlc3Np
b25TZXNzaW9uSW52YWxpZGF0ZQorKworK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKHdl
YnJ0YywgVmlkZW9Qcm9jZXNzaW5nLCBWUE1vZHVsZUluaXRpYWxpemUsIHZvaWQsICgpLCAoKSkK
KysjZGVmaW5lIFZQTW9kdWxlSW5pdGlhbGl6ZSBzb2Z0TGlua19WaWRlb1Byb2Nlc3NpbmdfVlBN
b2R1bGVJbml0aWFsaXplCisrCisrI2VuZGlmIC8vIEVOQUJMRV9WQ1BfRU5DT0RFUgorKworKyNl
bmRpZiAvLyBfX0FQUExFX18KK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRp
ZXMuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5lZjE0NTZlZGRk
MworLS0tIC9kZXYvbnVsbAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAorQEAgLTAsMCArMSw1NCBAQAor
Ky8qCisrICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKysgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKysgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisrICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisrICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisrICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKysgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKysgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICovCisrCisrI3ByYWdtYSBvbmNlCisrCisr
I2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZV9idWZmZXIuaCIKKysjaW5jbHVkZSAicnRj
X2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaCIKKysjaW5jbHVkZSAid2VicnRjL21lZGlhL2VuZ2luZS93
ZWJydGN2aWRlb2RlY29kZXJmYWN0b3J5LmgiCisrI2luY2x1ZGUgIndlYnJ0Yy9tZWRpYS9lbmdp
bmUvd2VicnRjdmlkZW9lbmNvZGVyZmFjdG9yeS5oIgorKworK3R5cGVkZWYgc3RydWN0IF9fQ1ZC
dWZmZXIqIENWUGl4ZWxCdWZmZXJSZWY7CisrCisrbmFtZXNwYWNlIHdlYnJ0YyB7CisrCisrY2xh
c3MgVmlkZW9EZWNvZGVyRmFjdG9yeTsKKytjbGFzcyBWaWRlb0VuY29kZXJGYWN0b3J5OworK2Ns
YXNzIFZpZGVvRnJhbWU7CisrCisrZW51bSBjbGFzcyBXZWJLaXRDb2RlY1N1cHBvcnQgeyBIMjY0
LCBIMjY0QW5kVlA4IH07CisrCisrc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVy
RmFjdG9yeT4gY3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnkoV2ViS2l0Q29kZWNTdXBwb3J0KTsK
KytzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiBjcmVhdGVXZWJL
aXREZWNvZGVyRmFjdG9yeShXZWJLaXRDb2RlY1N1cHBvcnQpOworKworK3ZvaWQgc2V0QXBwbGlj
YXRpb25TdGF0dXMoYm9vbCBpc0FjdGl2ZSk7CisrCisrdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNv
ZGVyQWxsb3dlZChib29sKTsKKytib29sIGlzSDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKTsK
KysKKytDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJh
bWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3Qp
PiYpOworK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IHBpeGVs
QnVmZmVyVG9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKKysKKyt9CitkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRV
dGlsaXRpZXMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4
IDAwMDAwMDAwMDAwLi42NWVlZmEzNmYyZAorLS0tIC9kZXYvbnVsbAorKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRp
ZXMubW0KK0BAIC0wLDAgKzEsMTg1IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisrICogYXJlIG1ldDoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqCisrICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKysgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisrICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKysgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKysgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisr
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysg
Ki8KKysKKysjaW5jbHVkZSAiV2ViS2l0VXRpbGl0aWVzLmgiCisrCisrLy8jaW5jbHVkZSAiQ29t
bW9uL1JUQ1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZlci5oIgorKyNpbXBvcnQgIldlYlJUQy9S
VENWaWRlb0NvZGVjSDI2NC5oIgorKworKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUu
aCIKKysjaW5jbHVkZSAibmF0aXZlL3NyYy9vYmpjX2ZyYW1lX2J1ZmZlci5oIgorKyNpbmNsdWRl
ICJ0aGlyZF9wYXJ0eS9saWJ5dXYvaW5jbHVkZS9saWJ5dXYvY29udmVydF9mcm9tLmgiCisrI2lu
Y2x1ZGUgIndlYnJ0Yy9ydGNfYmFzZS9jaGVja3MuaCIKKysjaW5jbHVkZSAiRnJhbWV3b3JrL0hl
YWRlcnMvV2ViUlRDL1JUQ1ZpZGVvQ29kZWNGYWN0b3J5LmgiCisrI2luY2x1ZGUgIkZyYW1ld29y
ay9IZWFkZXJzL1dlYlJUQy9SVENWaWRlb0ZyYW1lLmgiCisrI2luY2x1ZGUgIkZyYW1ld29yay9I
ZWFkZXJzL1dlYlJUQy9SVENWaWRlb0ZyYW1lQnVmZmVyLmgiCisrI2luY2x1ZGUgIkZyYW1ld29y
ay9OYXRpdmUvYXBpL3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIgorKyNpbmNsdWRlICJGcmFtZXdv
cmsvTmF0aXZlL2FwaS92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKysvKgorKyNpZiAhZGVmaW5l
ZChXRUJSVENfSU9TKQorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENV
SUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIiKSkpCisrQGludGVyZmFjZSBSVENVSUFwcGxpY2F0
aW9uU3RhdHVzT2JzZXJ2ZXIgOiBOU09iamVjdAorKworKysgKGluc3RhbmNldHlwZSlzaGFyZWRJ
bnN0YW5jZTsKKysrICh2b2lkKXByZXBhcmVGb3JVc2U7CisrCisrLSAoQk9PTClpc0FwcGxpY2F0
aW9uQWN0aXZlOworKworK0BlbmQKKysjZW5kaWYKKysKKytAaW1wbGVtZW50YXRpb24gUlRDVUlB
cHBsaWNhdGlvblN0YXR1c09ic2VydmVyIHsKKysgICAgQk9PTCBfaXNBY3RpdmU7CisrfQorKwor
KysgKGluc3RhbmNldHlwZSlzaGFyZWRJbnN0YW5jZSB7CisrICAgIHN0YXRpYyBpZCBzaGFyZWRJ
bnN0YW5jZTsKKysgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisrICAgIGRp
c3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKysgICAgICAgIHNoYXJlZEluc3RhbmNlID0gW1tz
ZWxmIGFsbG9jXSBpbml0XTsKKysgICAgfSk7CisrCisrICAgIHJldHVybiBzaGFyZWRJbnN0YW5j
ZTsKKyt9CisrCisrKyAodm9pZClwcmVwYXJlRm9yVXNlIHsKKysgICAgX191bnVzZWQgUlRDVUlB
cHBsaWNhdGlvblN0YXR1c09ic2VydmVyICpvYnNlcnZlciA9IFtzZWxmIHNoYXJlZEluc3RhbmNl
XTsKKyt9CisrCisrLSAoaWQpaW5pdCB7CisrICAgIF9pc0FjdGl2ZSA9IFlFUzsKKysgICAgcmV0
dXJuIHNlbGY7CisrfQorKworKy0gKHZvaWQpc2V0QWN0aXZlIHsKKysgICAgX2lzQWN0aXZlID0g
WUVTOworK30KKysKKystICh2b2lkKXNldEluYWN0aXZlIHsKKysgICAgX2lzQWN0aXZlID0gTk87
CisrfQorKworKy0gKEJPT0wpaXNBcHBsaWNhdGlvbkFjdGl2ZSB7CisrICAgIHJldHVybiBfaXNB
Y3RpdmU7CisrfQorKworK0BlbmQKKysqLworK25hbWVzcGFjZSB3ZWJydGMgeworKworK3ZvaWQg
c2V0QXBwbGljYXRpb25TdGF0dXMoYm9vbCBpc0FjdGl2ZSkKKyt7CisrLyoKKysgICAgaWYgKGlz
QWN0aXZlKQorKyAgICAgICAgW1tSVENVSUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIgc2hhcmVk
SW5zdGFuY2VdIHNldEFjdGl2ZV07CisrICAgIGVsc2UKKysgICAgICAgIFtbUlRDVUlBcHBsaWNh
dGlvblN0YXR1c09ic2VydmVyIHNoYXJlZEluc3RhbmNlXSBzZXRJbmFjdGl2ZV07CisrICovCisr
fQorKworK3N0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IGNyZWF0
ZVdlYktpdEVuY29kZXJGYWN0b3J5KFdlYktpdENvZGVjU3VwcG9ydCBjb2RlY1N1cHBvcnQpCisr
eworKyNpZiBFTkFCTEVfVkNQX0VOQ09ERVIKKysgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOworKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworKyAgICAgICAgd2Vi
cnRjOjpWUE1vZHVsZUluaXRpYWxpemUoKTsKKysgICAgfSk7CisrI2VuZGlmCisrICAgIHJldHVy
biBPYmpDVG9OYXRpdmVWaWRlb0VuY29kZXJGYWN0b3J5KGNvZGVjU3VwcG9ydCA9PSBXZWJLaXRD
b2RlY1N1cHBvcnQ6OkgyNjRBbmRWUDggPyBbW1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5
IGFsbG9jXSBpbml0XSA6IFtbUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQgYWxsb2NdIGluaXRd
KTsKKyt9CisrCisrc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4g
Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnkoV2ViS2l0Q29kZWNTdXBwb3J0IGNvZGVjU3VwcG9y
dCkKKyt7CisrICAgIHJldHVybiBPYmpDVG9OYXRpdmVWaWRlb0RlY29kZXJGYWN0b3J5KGNvZGVj
U3VwcG9ydCA9PSBXZWJLaXRDb2RlY1N1cHBvcnQ6OkgyNjRBbmRWUDggPyBbW1JUQ0RlZmF1bHRW
aWRlb0RlY29kZXJGYWN0b3J5IGFsbG9jXSBpbml0XSA6IFtbUlRDVmlkZW9EZWNvZGVyRmFjdG9y
eUgyNjQgYWxsb2NdIGluaXRdKTsKKyt9CisrCisrc3RhdGljIGJvb2wgaDI2NEhhcmR3YXJlRW5j
b2RlckFsbG93ZWQgPSB0cnVlOworK3ZvaWQgc2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQo
Ym9vbCBhbGxvd2VkKQorK3sKKysgICAgaDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQgPSBhbGxv
d2VkOworK30KKysKKytib29sIGlzSDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKQorK3sKKysg
ICAgcmV0dXJuIGgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkOworK30KKysKKytydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBwaXhlbEJ1ZmZlclRvRnJhbWUoQ1ZQ
aXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikKKyt7CisrICAgIFJUQ0NWUGl4ZWxCdWZmZXIgKmZy
YW1lQnVmZmVyID0gW1tSVENDVlBpeGVsQnVmZmVyIGFsbG9jXSBpbml0V2l0aFBpeGVsQnVmZmVy
OnBpeGVsQnVmZmVyXTsKKysgICAgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2Jq
Q0ZyYW1lQnVmZmVyPihmcmFtZUJ1ZmZlcik7CisrfQorKworK3N0YXRpYyBib29sIENvcHlWaWRl
b0ZyYW1lVG9QaXhlbEJ1ZmZlcihjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpJNDIw
QnVmZmVySW50ZXJmYWNlPiYgZnJhbWUsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKSB7
CisrICAgIFJUQ19EQ0hFQ0socGl4ZWxfYnVmZmVyKTsKKysgICAgUlRDX0RDSEVDSyhDVlBpeGVs
QnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZSB8fCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxG
b3JtYXRUeXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhC
aVBsYW5hclZpZGVvUmFuZ2UpOworKyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRI
ZWlnaHRPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUt
PmhlaWdodCgpKSk7CisrICAgIFJUQ19EQ0hFQ0tfRVEoQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQ
bGFuZShwaXhlbF9idWZmZXIsIDApLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGZyYW1lLT53aWR0aCgp
KSk7CisrCisrICAgIGlmIChDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHBpeGVsX2J1ZmZl
ciwgMCkgIT0ga0NWUmV0dXJuU3VjY2VzcykKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysKKysg
ICAgdWludDhfdCogZHN0X3kgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihDVlBpeGVsQnVm
ZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCkpOworKyAgICBpbnQgZHN0
X3N0cmlkZV95ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZm
ZXIsIDApOworKworKyAgICB1aW50OF90KiBkc3RfdXYgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMSkp
OworKyAgICBpbnQgZHN0X3N0cmlkZV91diA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09m
UGxhbmUocGl4ZWxfYnVmZmVyLCAxKTsKKysKKysgICAgaW50IHJlc3VsdCA9IGxpYnl1djo6STQy
MFRvTlYxMigKKysgICAgICAgIGZyYW1lLT5EYXRhWSgpLCBmcmFtZS0+U3RyaWRlWSgpLAorKyAg
ICAgICAgZnJhbWUtPkRhdGFVKCksIGZyYW1lLT5TdHJpZGVVKCksCisrICAgICAgICBmcmFtZS0+
RGF0YVYoKSwgZnJhbWUtPlN0cmlkZVYoKSwKKysgICAgICAgIGRzdF95LCBkc3Rfc3RyaWRlX3ks
IGRzdF91diwgZHN0X3N0cmlkZV91diwKKysgICAgICAgIGZyYW1lLT53aWR0aCgpLCBmcmFtZS0+
aGVpZ2h0KCkpOworKworKyAgICBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocGl4ZWxf
YnVmZmVyLCAwKTsKKysKKysgICAgaWYgKHJlc3VsdCkKKysgICAgICAgIHJldHVybiBmYWxzZTsK
KysKKysgICAgcmV0dXJuIHRydWU7CisrfQorKworKworK0NWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxC
dWZmZXJGcm9tRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUsIGNvbnN0IHN0ZDo6ZnVuY3Rp
b248Q1ZQaXhlbEJ1ZmZlclJlZihzaXplX3QsIHNpemVfdCk+JiBtYWtlUGl4ZWxCdWZmZXIpCisr
eworKyAgICBpZiAoZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCktPnR5cGUoKSAhPSBWaWRlb0Zy
YW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKSB7CisrICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8
Y29uc3QgSTQyMEJ1ZmZlckludGVyZmFjZT4gYnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVm
ZmVyKCktPkdldEk0MjAoKTsKKysKKysgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBtYWtlUGl4
ZWxCdWZmZXIoYnVmZmVyLT53aWR0aCgpLCBidWZmZXItPmhlaWdodCgpKTsKKysgICAgICAgIGlm
IChwaXhlbEJ1ZmZlcikKKysgICAgICAgICAgICBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIo
ZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCktPkdldEk0MjAoKSwgcGl4ZWxCdWZmZXIpOworKyAg
ICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOworKyAgICB9CisrCisrICAgIGF1dG8gKmZyYW1lQnVm
ZmVyID0gc3RhdGljX2Nhc3Q8T2JqQ0ZyYW1lQnVmZmVyKj4oZnJhbWUudmlkZW9fZnJhbWVfYnVm
ZmVyKCkuZ2V0KCkpLT53cmFwcGVkX2ZyYW1lX2J1ZmZlcigpOworKyAgICBpZiAoIVtmcmFtZUJ1
ZmZlciBpc0tpbmRPZkNsYXNzOltSVENDVlBpeGVsQnVmZmVyIGNsYXNzXV0pCisrICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKysKKysgICAgYXV0byAqcnRjUGl4ZWxCdWZmZXIgPSAoUlRDQ1ZQaXhl
bEJ1ZmZlciAqKWZyYW1lQnVmZmVyOworKyAgICByZXR1cm4gcnRjUGl4ZWxCdWZmZXIucGl4ZWxC
dWZmZXI7CisrfQorKworK30KK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZElt
YWdlK1ByaXZhdGUubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDRW5jb2RlZEltYWdlK1ByaXZhdGUubW0K
K2luZGV4IDZmMmQxZjQ2ZDljLi5mOTkwMWJkMzI3ZSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlv
bi9SVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbQorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29k
ZWRJbWFnZStQcml2YXRlLm1tCitAQCAtNTYsNiArNTYsNyBAQCAtICh3ZWJydGM6OkVuY29kZWRJ
bWFnZSluYXRpdmVFbmNvZGVkSW1hZ2UgeworICAgZW5jb2RlZEltYWdlLnJvdGF0aW9uXyA9IHdl
YnJ0Yzo6VmlkZW9Sb3RhdGlvbihzZWxmLnJvdGF0aW9uKTsKKyAgIGVuY29kZWRJbWFnZS5fY29t
cGxldGVGcmFtZSA9IHNlbGYuY29tcGxldGVGcmFtZTsKKyAgIGVuY29kZWRJbWFnZS5xcF8gPSBz
ZWxmLnFwID8gc2VsZi5xcC5pbnRWYWx1ZSA6IC0xOworKyAgZW5jb2RlZEltYWdlLlNldFNwYXRp
YWxJbmRleChzZWxmLnNwYXRpYWxJbmRleCk7CisgICBlbmNvZGVkSW1hZ2UuY29udGVudF90eXBl
XyA9IChzZWxmLmNvbnRlbnRUeXBlID09IFJUQ1ZpZGVvQ29udGVudFR5cGVTY3JlZW5zaGFyZSkg
PworICAgICAgIHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6U0NSRUVOU0hBUkUgOgorICAgICAg
IHdlYnJ0Yzo6VmlkZW9Db250ZW50VHlwZTo6VU5TUEVDSUZJRUQ7CitkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJj
b25uZWN0aW9uL1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0
cEVuY29kaW5nUGFyYW1ldGVycy5oCitpbmRleCBiYTUwYmRlNjQ5Zi4uZGFiZmY3MjVhYmIgMTAw
NjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmgKKysrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9w
ZWVyY29ubmVjdGlvbi9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaAorQEAgLTE1LDYgKzE1LDcg
QEAKKyBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAorIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0
cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMi
KSkpCisgQGludGVyZmFjZSBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMgOiBOU09iamVjdAorIAor
IC8qKiBDb250cm9scyB3aGV0aGVyIHRoZSBlbmNvZGluZyBpcyBjdXJyZW50bHkgdHJhbnNtaXR0
ZWQuICovCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdz
K1ByaXZhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRl
LmgKK2luZGV4IDViMDYyNDU1YmMwLi43MmFmNzMyYjIzYiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLmgKKysrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlv
bi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLmgKK0BAIC0yMiw0ICsyMiwxMSBAQCBO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAorIEBlbmQKKyAKKytAaW50ZXJmYWNlIFJUQ1ZpZGVv
Qml0cmF0ZUFsbG9jYXRpb24gKFByaXZhdGUpCisrCisrLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
TmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjooY29uc3Qgd2VicnRjOjpWaWRlb0JpdHJhdGVB
bGxvY2F0aW9uICpfX251bGxhYmxlKXZpZGVvQml0cmF0ZUFsbG9jYXRpb247CisrLSAod2VicnRj
OjpWaWRlb0JpdHJhdGVBbGxvY2F0aW9uKW5hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb247Cisr
CisrQGVuZAorKworIE5TX0FTU1VNRV9OT05OVUxMX0VORAorZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRlLm1tIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JU
Q1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUubW0KK2luZGV4IDZmYjgxZGJiOGFmLi44MmI1
YmE3YmMwZiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5n
cytQcml2YXRlLm1tCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9hcGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3Mr
UHJpdmF0ZS5tbQorQEAgLTEyLDYgKzEyLDIzIEBACisgCisgI2ltcG9ydCAiaGVscGVycy9OU1N0
cmluZytTdGRTdHJpbmcuaCIKKyAKKytAaW1wbGVtZW50YXRpb24gUlRDVmlkZW9FbmNvZGVyU2V0
dGluZ3MgeworKyAgd2VicnRjOjpWaWRlb0NvZGVjIF9uYXRpdmVWaWRlb0NvZGVjOworK30KKysK
KytAc3ludGhlc2l6ZSBuYW1lID0gX25hbWU7CisrQHN5bnRoZXNpemUgd2lkdGggPSBfd2lkdGg7
CisrQHN5bnRoZXNpemUgaGVpZ2h0ID0gX2hlaWdodDsKKytAc3ludGhlc2l6ZSBzdGFydEJpdHJh
dGUgPSBfc3RhcnRCaXRyYXRlOworK0BzeW50aGVzaXplIG1heEJpdHJhdGUgPSBfbWF4Qml0cmF0
ZTsKKytAc3ludGhlc2l6ZSBtaW5CaXRyYXRlID0gX21pbkJpdHJhdGU7CisrQHN5bnRoZXNpemUg
dGFyZ2V0Qml0cmF0ZSA9IF90YXJnZXRCaXRyYXRlOworK0BzeW50aGVzaXplIG1heEZyYW1lcmF0
ZSA9IF9tYXhGcmFtZXJhdGU7CisrQHN5bnRoZXNpemUgcXBNYXggPSBfcXBNYXg7CisrQHN5bnRo
ZXNpemUgbW9kZSA9IF9tb2RlOworKworK0BlbmQKKysKKyBAaW1wbGVtZW50YXRpb24gUlRDVmlk
ZW9FbmNvZGVyU2V0dGluZ3MgKFByaXZhdGUpCisgCisgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
TmF0aXZlVmlkZW9Db2RlYzooY29uc3Qgd2VicnRjOjpWaWRlb0NvZGVjICopdmlkZW9Db2RlYyB7
CitAQCAtMjAsNiArMzcsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOYXRpdmVWaWRlb0Nv
ZGVjOihjb25zdCB3ZWJydGM6OlZpZGVvQ29kZWMgKil2aWRlb0NvZGVjCisgICAgICAgY29uc3Qg
Y2hhciAqY29kZWNOYW1lID0gQ29kZWNUeXBlVG9QYXlsb2FkU3RyaW5nKHZpZGVvQ29kZWMtPmNv
ZGVjVHlwZSk7CisgICAgICAgc2VsZi5uYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3Ry
aW5nOmNvZGVjTmFtZV07CisgCisrICAgICAgX25hdGl2ZVZpZGVvQ29kZWMgPSAqdmlkZW9Db2Rl
YzsKKyAgICAgICBzZWxmLndpZHRoID0gdmlkZW9Db2RlYy0+d2lkdGg7CisgICAgICAgc2VsZi5o
ZWlnaHQgPSB2aWRlb0NvZGVjLT5oZWlnaHQ7CisgICAgICAgc2VsZi5zdGFydEJpdHJhdGUgPSB2
aWRlb0NvZGVjLT5zdGFydEJpdHJhdGU7CitAQCAtMzYsMTggKzU0LDI4IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aE5hdGl2ZVZpZGVvQ29kZWM6KGNvbnN0IHdlYnJ0Yzo6VmlkZW9Db2RlYyAq
KXZpZGVvQ29kZWMKKyB9CisgCisgLSAod2VicnRjOjpWaWRlb0NvZGVjKW5hdGl2ZVZpZGVvQ29k
ZWMgeworLSAgd2VicnRjOjpWaWRlb0NvZGVjIHZpZGVvQ29kZWM7CistICB2aWRlb0NvZGVjLndp
ZHRoID0gc2VsZi53aWR0aDsKKy0gIHZpZGVvQ29kZWMuaGVpZ2h0ID0gc2VsZi5oZWlnaHQ7Cist
ICB2aWRlb0NvZGVjLnN0YXJ0Qml0cmF0ZSA9IHNlbGYuc3RhcnRCaXRyYXRlOworLSAgdmlkZW9D
b2RlYy5tYXhCaXRyYXRlID0gc2VsZi5tYXhCaXRyYXRlOworLSAgdmlkZW9Db2RlYy5taW5CaXRy
YXRlID0gc2VsZi5taW5CaXRyYXRlOworLSAgdmlkZW9Db2RlYy50YXJnZXRCaXRyYXRlID0gc2Vs
Zi50YXJnZXRCaXRyYXRlOworLSAgdmlkZW9Db2RlYy5tYXhCaXRyYXRlID0gc2VsZi5tYXhCaXRy
YXRlOworLSAgdmlkZW9Db2RlYy5xcE1heCA9IHNlbGYucXBNYXg7CistICB2aWRlb0NvZGVjLm1v
ZGUgPSAod2VicnRjOjpWaWRlb0NvZGVjTW9kZSlzZWxmLm1vZGU7CistCistICByZXR1cm4gdmlk
ZW9Db2RlYzsKKysgIHJldHVybiBfbmF0aXZlVmlkZW9Db2RlYzsKKyt9CisrCisrQGVuZAorKwor
K0BpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIHsKKysgIHdlYnJ0Yzo6
VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiBfbmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsKKyt9
CisrCisrQGVuZAorKworK0BpbXBsZW1lbnRhdGlvbiBSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9u
IChQcml2YXRlKQorKworKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hdGl2ZVZpZGVvQml0cmF0
ZUFsbG9jYXRpb246KGNvbnN0IHdlYnJ0Yzo6VmlkZW9CaXRyYXRlQWxsb2NhdGlvbiAqKXZpZGVv
Qml0cmF0ZUFsbG9jYXRpb24geworKyAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKysgICAg
X25hdGl2ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb24gPSAqdmlkZW9CaXRyYXRlQWxsb2NhdGlvbjsK
KysgIH0KKysgIHJldHVybiBzZWxmOworK30KKysKKystICh3ZWJydGM6OlZpZGVvQml0cmF0ZUFs
bG9jYXRpb24pbmF0aXZlVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiB7CisrICByZXR1cm4gX25hdGl2
ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb247CisgfQorIAorIEBlbmQKK2RpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9f
Y29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0NvZGVj
Q29uc3RhbnRzLm1tCitpbmRleCBhY2JmMTI2MTcwYy4uMTQ0N2QzYjI3ZTEgMTAwNjQ0CistLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkv
dmlkZW9fY29kZWMvUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbQorKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JU
Q1ZpZGVvQ29kZWNDb25zdGFudHMubW0KK0BAIC0xMyw1ICsxMyw1IEBACisgCisgI2luY2x1ZGUg
Im1lZGlhL2Jhc2UvbWVkaWFjb25zdGFudHMuaCIKKyAKKy1OU1N0cmluZyAqY29uc3Qga1JUQ1Zp
ZGVvQ29kZWNWcDhOYW1lID0gQChjcmlja2V0OjprVnA4Q29kZWNOYW1lKTsKKy1OU1N0cmluZyAq
Y29uc3Qga1JUQ1ZpZGVvQ29kZWNWcDlOYW1lID0gQChjcmlja2V0OjprVnA5Q29kZWNOYW1lKTsK
KytOU1N0cmluZyAqY29uc3Qga1JUQ1ZpZGVvQ29kZWNWcDhOYW1lID0gQCJWUDgiOworK05TU3Ry
aW5nICpjb25zdCBrUlRDVmlkZW9Db2RlY1ZwOU5hbWUgPSBAIlZQOSI7CitkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3Zp
ZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlclZQOC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2Rl
clZQOC5oCitpbmRleCA4ZDg3YTg5ODkzMS4uMDhkMTg1MDQyMjIgMTAwNjQ0CistLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9f
Y29kZWMvUlRDVmlkZW9FbmNvZGVyVlA4LmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENWaWRlb0VuY29k
ZXJWUDguaAorQEAgLTE0LDYgKzE0LDcgQEAKKyAjaW1wb3J0ICJSVENWaWRlb0VuY29kZXIuaCIK
KyAKKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgi
V0tfUlRDVmlkZW9FbmNvZGVyVlA4IikpKQorIEBpbnRlcmZhY2UgUlRDVmlkZW9FbmNvZGVyVlA4
IDogTlNPYmplY3QKKyAKKyAvKiBUaGlzIHJldHVybnMgYSBWUDggZW5jb2RlciB0aGF0IGNhbiBi
ZSByZXR1cm5lZCBmcm9tIGEgUlRDVmlkZW9FbmNvZGVyRmFjdG9yeSBpbmplY3RlZCBpbnRvCitk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlk
ZW9fY29kZWMvUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5tbQoraW5kZXggOWFmZDU0ZjU1
ZjUuLmI5NjM0Nzc5ZjFmIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3ZpZGVvX2NvZGVjL1JUQ1dyYXBwZWROYXRpdmVW
aWRlb0VuY29kZXIubW0KKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19jb2RlYy9SVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNv
ZGVyLm1tCitAQCAtNTgsNiArNTgsMTEgQEAgLSAoaW50KXNldEJpdHJhdGU6KHVpbnQzMl90KWJp
dHJhdGVLYml0IGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlIHsKKyAgIHJldHVybiAwOwor
IH0KKyAKKystIChpbnQpc2V0UmF0ZUFsbG9jYXRpb246KG5vbm51bGwgUlRDVmlkZW9CaXRyYXRl
QWxsb2NhdGlvbiAqKWFsbG9jYXRpb24gZnJhbWVyYXRlOih1aW50MzJfdClmcmFtZXJhdGUgewor
KyAgUlRDX05PVFJFQUNIRUQoKTsKKysgIHJldHVybiAwOworK30KKysKKyAtIChOU1N0cmluZyAq
KWltcGxlbWVudGF0aW9uTmFtZSB7CisgICBSVENfTk9UUkVBQ0hFRCgpOworICAgcmV0dXJuIG5p
bDsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0MjBCdWZmZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92
aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlSTQyMEJ1ZmZlci5oCitpbmRleCA5YTkwNGY1Mzk2
YS4uZGM5MDNiYzRiY2EgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9fZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZUk0
MjBCdWZmZXIuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYXBpL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVJNDIwQnVmZmVyLmgK
K0BAIC0xNyw2ICsxNyw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgLyoqIFJUQ0k0
MjBCdWZmZXIgaW1wbGVtZW50cyB0aGUgUlRDSTQyMEJ1ZmZlciBwcm90b2NvbCAqLworIFJUQ19P
QkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENJNDIw
QnVmZmVyIikpKQorIEBpbnRlcmZhY2UgUlRDSTQyMEJ1ZmZlciA6IE5TT2JqZWN0PFJUQ0k0MjBC
dWZmZXI+CisgQGVuZAorIAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZl
TXV0YWJsZUk0MjBCdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2FwaS92aWRlb19mcmFtZV9idWZmZXIvUlRDTmF0aXZlTXV0YWJsZUk0
MjBCdWZmZXIuaAoraW5kZXggNmNkNTExMDQ2MGIuLjdjZmE5NTBhYmI2IDEwMDY0NAorLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYXBpL3Zp
ZGVvX2ZyYW1lX2J1ZmZlci9SVENOYXRpdmVNdXRhYmxlSTQyMEJ1ZmZlci5oCisrKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9hcGkvdmlkZW9f
ZnJhbWVfYnVmZmVyL1JUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVyLmgKK0BAIC0xOCw2ICsxOCw3
IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisgCisgLyoqIE11dGFibGUgdmVyc2lvbiBvZiBS
VENJNDIwQnVmZmVyICovCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19y
dW50aW1lX25hbWUoIldLX1JUQ011dGFibGVJNDIwQnVmZmVyIikpKQorIEBpbnRlcmZhY2UgUlRD
TXV0YWJsZUk0MjBCdWZmZXIgOiBSVENJNDIwQnVmZmVyPFJUQ011dGFibGVJNDIwQnVmZmVyPgor
IEBlbmQKKyAKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0NvZGVjU3BlY2lmaWNJbmZvLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ0NvZGVjU3Bl
Y2lmaWNJbmZvLmgKK2luZGV4IGUyYWU0Y2FmYTExLi45ZGM0NGMxMmFmOCAxMDA2NDQKKy0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2Uv
UlRDQ29kZWNTcGVjaWZpY0luZm8uaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENDb2RlY1NwZWNpZmljSW5mby5oCitAQCAt
MTgsNiArMTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorICAqICBDb3JyZXNwb25kcyB0
byB3ZWJydGM6OkNvZGVjU3BlY2lmaWNJbmZvLgorICAqLworIFJUQ19PQkpDX0VYUE9SVAorK19f
YXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENDb2RlY1NwZWNpZmljSW5mbyIp
KSkKKyBAcHJvdG9jb2wgUlRDQ29kZWNTcGVjaWZpY0luZm8gPE5TT2JqZWN0PgorIEBlbmQKKyAK
K2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9iYXNlL1JUQ0VuY29kZWRJbWFnZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UuaAoraW5kZXgg
NjcwYzcyNzZmZjcuLjc5OTRjZTY0YTFmIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UuaAor
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YmFzZS9SVENFbmNvZGVkSW1hZ2UuaAorQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBOU19FTlVN
KE5TVUludGVnZXIsIFJUQ1ZpZGVvQ29udGVudFR5cGUpIHsKKyAKKyAvKiogUmVwcmVzZW50cyBh
biBlbmNvZGVkIGZyYW1lLiBDb3JyZXNwb25kcyB0byB3ZWJydGM6OkVuY29kZWRJbWFnZS4gKi8K
KyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tf
UlRDRW5jb2RlZEltYWdlIikpKQorIEBpbnRlcmZhY2UgUlRDRW5jb2RlZEltYWdlIDogTlNPYmpl
Y3QKKyAKKyBAcHJvcGVydHkobm9uYXRvbWljLCBzdHJvbmcpIE5TRGF0YSAqYnVmZmVyOworQEAg
LTQ3LDYgKzQ4LDcgQEAgUlRDX09CSkNfRVhQT1JUCisgQHByb3BlcnR5KG5vbmF0b21pYywgYXNz
aWduKSBCT09MIGNvbXBsZXRlRnJhbWU7CisgQHByb3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBO
U051bWJlciAqcXA7CisgQHByb3BlcnR5KG5vbmF0b21pYywgYXNzaWduKSBSVENWaWRlb0NvbnRl
bnRUeXBlIGNvbnRlbnRUeXBlOworK0Bwcm9wZXJ0eShub25hdG9taWMsIGFzc2lnbikgaW50IHNw
YXRpYWxJbmRleDsKKyAKKyBAZW5kCisgCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENFbmNvZGVkSW1hZ2UubSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2Uv
UlRDRW5jb2RlZEltYWdlLm0KK2luZGV4IDAyNGE1N2M1NDFiLi44NWNkNWUyOThlNCAxMDA2NDQK
Ky0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpj
L2Jhc2UvUlRDRW5jb2RlZEltYWdlLm0KKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDRW5jb2RlZEltYWdlLm0KK0BAIC0yNiw1
ICsyNiw2IEBAIEBpbXBsZW1lbnRhdGlvbiBSVENFbmNvZGVkSW1hZ2UKKyBAc3ludGhlc2l6ZSBj
b21wbGV0ZUZyYW1lID0gX2NvbXBsZXRlRnJhbWU7CisgQHN5bnRoZXNpemUgcXAgPSBfcXA7Cisg
QHN5bnRoZXNpemUgY29udGVudFR5cGUgPSBfY29udGVudFR5cGU7CisrQHN5bnRoZXNpemUgc3Bh
dGlhbEluZGV4ID0gX3NwYXRpYWxJbmRleDsKKyAKKyBAZW5kCitkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENJNDIw
QnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9iYXNlL1JUQ0k0MjBCdWZmZXIuaAoraW5kZXggYTZjN2U0MWJjYmEuLmNmYTE0ZjhhZjIz
IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvYmFzZS9SVENJNDIwQnVmZmVyLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDSTQyMEJ1ZmZlci5oCitAQCAt
MTYsNiArMTYsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAorIC8qKiBQcm90b2NvbCBm
b3IgUlRDWVVWUGxhbmFyQnVmZmVycyBjb250YWluaW5nIEk0MjAgZGF0YSAqLworIFJUQ19PQkpD
X0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENJNDIwQnVm
ZmVyIikpKQorIEBwcm90b2NvbCBSVENJNDIwQnVmZmVyIDxSVENZVVZQbGFuYXJCdWZmZXI+Cisg
QGVuZAorIAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENSdHBG
cmFnbWVudGF0aW9uSGVhZGVyLmgKK2luZGV4IDJlMjZiMDhiOGFmLi5mYmJjNjhhOGVmNiAxMDA2
NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5oCisrKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdtZW50
YXRpb25IZWFkZXIuaAorQEAgLTE2LDYgKzE2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
KyAKKyAvKiogSW5mb3JtYXRpb24gZm9yIGhlYWRlci4gQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpS
VFBGcmFnbWVudGF0aW9uSGVhZGVyLiAqLworIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRl
X18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyIikpKQor
IEBpbnRlcmZhY2UgUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlciA6IE5TT2JqZWN0CisgCisgQHBy
b3BlcnR5KG5vbmF0b21pYywgc3Ryb25nKSBOU0FycmF5PE5TTnVtYmVyICo+ICpmcmFnbWVudGF0
aW9uT2Zmc2V0OworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENS
dHBGcmFnbWVudGF0aW9uSGVhZGVyLm0KK2luZGV4IDgwNDlhYmM0MTFlLi42Y2YyMWRkYzJhMSAx
MDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2Jhc2UvUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tCisrKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1J0cEZyYWdt
ZW50YXRpb25IZWFkZXIubQorQEAgLTE3LDQgKzE3LDUgQEAgQGltcGxlbWVudGF0aW9uIFJUQ1J0
cEZyYWdtZW50YXRpb25IZWFkZXIKKyBAc3ludGhlc2l6ZSBmcmFnbWVudGF0aW9uVGltZURpZmYg
PSBfZnJhZ21lbnRhdGlvblRpbWVEaWZmOworIEBzeW50aGVzaXplIGZyYWdtZW50YXRpb25QbFR5
cGUgPSBfZnJhZ21lbnRhdGlvblBsVHlwZTsKKyAKKy1AZW5kCitcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKKytAZW5kCisrCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0NvZGVjSW5mby5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENW
aWRlb0NvZGVjSW5mby5oCitpbmRleCAyMTYyY2FhYTIxZi4uNGU2NDNkOTQzNDcgMTAwNjQ0Cist
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9i
YXNlL1JUQ1ZpZGVvQ29kZWNJbmZvLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9Db2RlY0luZm8uaAorQEAgLTE2
LDYgKzE2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAvKiogSG9sZHMgaW5mb3Jt
YXRpb24gdG8gaWRlbnRpZnkgYSBjb2RlYy4gQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpTZHBWaWRl
b0Zvcm1hdC4gKi8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRp
bWVfbmFtZSgiV0tfUlRDVmlkZW9Db2RlY0luZm8iKSkpCisgQGludGVyZmFjZSBSVENWaWRlb0Nv
ZGVjSW5mbyA6IE5TT2JqZWN0IDxOU0NvZGluZz4KKyAKKyAtIChpbnN0YW5jZXR5cGUpaW5pdCBO
U19VTkFWQUlMQUJMRTsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2Rlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0Rl
Y29kZXIuaAoraW5kZXggMThjNmY2YjAwMDYuLjUzNDQyMGQzOTU1IDEwMDY0NAorLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENW
aWRlb0RlY29kZXIuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXIuaAorQEAgLTIzLDYgKzIzLDcgQEAg
dHlwZWRlZiB2b2lkICheUlRDVmlkZW9EZWNvZGVyQ2FsbGJhY2spKFJUQ1ZpZGVvRnJhbWUgKmZy
YW1lKTsKKyAKKyAvKiogUHJvdG9jb2wgZm9yIGRlY29kZXIgaW1wbGVtZW50YXRpb25zLiAqLwor
IFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19S
VENWaWRlb0RlY29kZXIiKSkpCisgQHByb3RvY29sIFJUQ1ZpZGVvRGVjb2RlciA8TlNPYmplY3Q+
CisgCisgLSAodm9pZClzZXRDYWxsYmFjazooUlRDVmlkZW9EZWNvZGVyQ2FsbGJhY2spY2FsbGJh
Y2s7CitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0RlY29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRGVjb2Rl
ckZhY3RvcnkuaAoraW5kZXggM2UyNDE1M2I4MmMuLmNiOTVmYTNmMTM0IDEwMDY0NAorLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9S
VENWaWRlb0RlY29kZXJGYWN0b3J5LmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS5oCitA
QCAtMTgsNiArMTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAorIC8qKiBSVENWaWRl
b0RlY29kZXJGYWN0b3J5IGlzIGFuIE9iamVjdGl2ZS1DIHZlcnNpb24gb2Ygd2VicnRjOjpWaWRl
b0RlY29kZXJGYWN0b3J5LiAqLworIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9i
amNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0RlY29kZXJGYWN0b3J5IikpKQorIEBwcm90b2Nv
bCBSVENWaWRlb0RlY29kZXJGYWN0b3J5IDxOU09iamVjdD4KKyAKKyAtIChudWxsYWJsZSBpZDxS
VENWaWRlb0RlY29kZXI+KWNyZWF0ZURlY29kZXI6KFJUQ1ZpZGVvQ29kZWNJbmZvICopaW5mbzsK
K2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaAoraW5kZXgg
YzUyNTc2NzRkODMuLjUyOTFiYjEzNDJiIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXIuaAor
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YmFzZS9SVENWaWRlb0VuY29kZXIuaAorQEAgLTE5LDcgKzE5LDExIEBACisgI2ltcG9ydCAiUlRD
VmlkZW9GcmFtZS5oIgorIAorIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCistCisrLyoKKytuYW1l
c3BhY2Ugd2VicnRjIHsKKytjbGFzcyBWaWRlb0JpdHJhdGVBbGxvY2F0aW9uOworK307CisrKi8K
KyAvKiogQ2FsbGJhY2sgYmxvY2sgZm9yIGVuY29kZXIuICovCisgdHlwZWRlZiBCT09MICheUlRD
VmlkZW9FbmNvZGVyQ2FsbGJhY2spKFJUQ0VuY29kZWRJbWFnZSAqZnJhbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPFJUQ0NvZGVjU3BlY2lmaWNJbmZvPiBp
bmZvLAorQEAgLTI3LDYgKzMxLDcgQEAgdHlwZWRlZiBCT09MICheUlRDVmlkZW9FbmNvZGVyQ2Fs
bGJhY2spKFJUQ0VuY29kZWRJbWFnZSAqZnJhbWUsCisgCisgLyoqIFByb3RvY29sIGZvciBlbmNv
ZGVyIGltcGxlbWVudGF0aW9ucy4gKi8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9f
KChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVyIikpKQorIEBwcm90b2NvbCBS
VENWaWRlb0VuY29kZXIgPE5TT2JqZWN0PgorIAorIC0gKHZvaWQpc2V0Q2FsbGJhY2s6KFJUQ1Zp
ZGVvRW5jb2RlckNhbGxiYWNrKWNhbGxiYWNrOworQEAgLTM3LDYgKzQyLDcgQEAgUlRDX09CSkNf
RVhQT1JUCisgICAgIGNvZGVjU3BlY2lmaWNJbmZvOihudWxsYWJsZSBpZDxSVENDb2RlY1NwZWNp
ZmljSW5mbz4paW5mbworICAgICAgICAgICAgZnJhbWVUeXBlczooTlNBcnJheTxOU051bWJlciAq
PiAqKWZyYW1lVHlwZXM7CisgLSAoaW50KXNldEJpdHJhdGU6KHVpbnQzMl90KWJpdHJhdGVLYml0
IGZyYW1lcmF0ZToodWludDMyX3QpZnJhbWVyYXRlOworKy0gKGludClzZXRSYXRlQWxsb2NhdGlv
bjogKFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gKilhbGxvY2F0aW9uIGZyYW1lcmF0ZToodWlu
dDMyX3QpZnJhbWVyYXRlOworIC0gKE5TU3RyaW5nICopaW1wbGVtZW50YXRpb25OYW1lOworIAor
IC8qKiBSZXR1cm5zIFFQIHNjYWxpbmcgc2V0dGluZ3MgZm9yIGVuY29kZXIuIFRoZSBxdWFsaXR5
IHNjYWxlciBhZGp1c3RzIHRoZSByZXNvbHV0aW9uIGluIG9yZGVyIHRvCitkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9S
VENWaWRlb0VuY29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnkuaAoraW5kZXgg
MjBjNjAzZDZmZTYuLmNiZTllYTQ5MmFlIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJGYWN0
b3J5LmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyRmFjdG9yeS5oCitAQCAtMTgsNiArMTgsNyBAQCBO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAorIC8qKiBSVENWaWRlb0VuY29kZXJGYWN0b3J5IGlz
IGFuIE9iamVjdGl2ZS1DIHZlcnNpb24gb2Ygd2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5LiAq
LworIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJX
S19SVENWaWRlb0VuY29kZXJGYWN0b3J5IikpKQorIEBwcm90b2NvbCBSVENWaWRlb0VuY29kZXJG
YWN0b3J5IDxOU09iamVjdD4KKyAKKyAtIChudWxsYWJsZSBpZDxSVENWaWRlb0VuY29kZXI+KWNy
ZWF0ZUVuY29kZXI6KFJUQ1ZpZGVvQ29kZWNJbmZvICopaW5mbzsKK2RpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1Zp
ZGVvRW5jb2RlclFwVGhyZXNob2xkcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaAor
aW5kZXggMmI0OGY0NWNlMGEuLjY4Y2ZkNjZkZjQ3IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29k
ZXJRcFRocmVzaG9sZHMuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaAorQEAg
LTE2LDYgKzE2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKyAKKyAvKiogUVAgdGhyZXNo
b2xkcyBmb3IgZW5jb2Rlci4gQ29ycmVzcG9uZHMgdG8gd2VicnRjOjpWaWRlb0VuY29kZXI6OlFw
VGhyZXNob2xkcy4gKi8KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1
bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzIikpKQorIEBpbnRlcmZh
Y2UgUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzIDogTlNPYmplY3QKKyAKKyAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhUaHJlc2hvbGRzTG93OihOU0ludGVnZXIpbG93IGhpZ2g6KE5TSW50ZWdl
ciloaWdoOworZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9F
bmNvZGVyU2V0dGluZ3MuaAoraW5kZXggNjllMDRjYWM3MGYuLmFlM2JmNWZiNWYxIDEwMDY0NAor
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YmFzZS9SVENWaWRlb0VuY29kZXJTZXR0aW5ncy5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRW5jb2RlclNldHRp
bmdzLmgKK0BAIC0yMSw2ICsyMSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBSVENW
aWRlb0NvZGVjTW9kZSkgeworIAorIC8qKiBTZXR0aW5ncyBmb3IgZW5jb2Rlci4gQ29ycmVzcG9u
ZHMgdG8gd2VicnRjOjpWaWRlb0NvZGVjLiAqLworIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmli
dXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0VuY29kZXJTZXR0aW5ncyIpKSkK
KyBAaW50ZXJmYWNlIFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzIDogTlNPYmplY3QKKyAKKyBAcHJv
cGVydHkobm9uYXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICpuYW1lOworQEAgLTQwLDQgKzQxLDkg
QEAgUlRDX09CSkNfRVhQT1JUCisgCisgQGVuZAorIAorK1JUQ19PQkpDX0VYUE9SVAorK19fYXR0
cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9u
IikpKQorK0BpbnRlcmZhY2UgUlRDVmlkZW9CaXRyYXRlQWxsb2NhdGlvbiA6IE5TT2JqZWN0Cisr
QGVuZAorKworIE5TX0FTU1VNRV9OT05OVUxMX0VORAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFt
ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
YmFzZS9SVENWaWRlb0ZyYW1lLmgKK2luZGV4IDlhY2E3NDMzZjM0Li5iZGUwOWM1MGM5ZCAxMDA2
NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9v
YmpjL2Jhc2UvUlRDVmlkZW9GcmFtZS5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWUuaAorQEAgLTI2LDYg
KzI2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUlRDVmlkZW9Sb3RhdGlvbikgewor
IAorIC8vIFJUQ1ZpZGVvRnJhbWUgaXMgYW4gT2JqZWN0aXZlQyB2ZXJzaW9uIG9mIHdlYnJ0Yzo6
VmlkZW9GcmFtZS4KKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRp
bWVfbmFtZSgiV0tfUlRDVmlkZW9GcmFtZSIpKSkKKyBAaW50ZXJmYWNlIFJUQ1ZpZGVvRnJhbWUg
OiBOU09iamVjdAorIAorIC8qKiBXaWR0aCB3aXRob3V0IHJvdGF0aW9uIGFwcGxpZWQuICovCitk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvYmFzZS9SVENWaWRlb0ZyYW1lQnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9iYXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaAor
aW5kZXggYmI5ZTZmYmE2MzEuLjE4NmFkMDg4OWJmIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvYmFzZS9SVENWaWRlb0ZyYW1l
QnVmZmVyLmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UvUlRDVmlkZW9GcmFtZUJ1ZmZlci5oCitAQCAtMTgsNiArMTgsNyBAQCBO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgorIAorIC8vIFJUQ1ZpZGVvRnJhbWVCdWZmZXIgaXMgYW4g
T2JqZWN0aXZlQyB2ZXJzaW9uIG9mIHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlci4KKyBSVENfT0JK
Q19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9G
cmFtZUJ1ZmZlciIpKSkKKyBAcHJvdG9jb2wgUlRDVmlkZW9GcmFtZUJ1ZmZlciA8TlNPYmplY3Q+
CisgCisgQHByb3BlcnR5KG5vbmF0b21pYywgcmVhZG9ubHkpIGludCB3aWR0aDsKK2RpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9j
b21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQuaAoraW5kZXggZWNlOTU3MGExM2Iu
LmU5NDdkYzZlNjIzIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNp
ZmljSW5mb0gyNjQuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5m
b0gyNjQuaAorQEAgLTEwLDcgKzEwLDcgQEAKKyAKKyAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaD4KKyAKKy0jaW1wb3J0ICJSVENDb2RlY1NwZWNpZmljSW5mby5oIgorKyNpbXBvcnQg
ImJhc2UvUlRDQ29kZWNTcGVjaWZpY0luZm8uaCIKKyAjaW1wb3J0ICJSVENNYWNyb3MuaCIKKyAK
KyAvKiogQ2xhc3MgZm9yIEgyNjQgc3BlY2lmaWMgY29uZmlnLiAqLworQEAgLTIwLDYgKzIwLDcg
QEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFJUQ0gyNjRQYWNrZXRpemF0aW9uTW9kZSkg
eworIH07CisgCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1l
X25hbWUoIldLX1JUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NCIpKSkKKyBAaW50ZXJmYWNlIFJUQ0Nv
ZGVjU3BlY2lmaWNJbmZvSDI2NCA6IE5TT2JqZWN0IDxSVENDb2RlY1NwZWNpZmljSW5mbz4KKyAK
KyBAcHJvcGVydHkobm9uYXRvbWljLCBhc3NpZ24pIFJUQ0gyNjRQYWNrZXRpemF0aW9uTW9kZSBw
YWNrZXRpemF0aW9uTW9kZTsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0NvZGVj
U3BlY2lmaWNJbmZvSDI2NC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0lu
Zm9IMjY0Lm1tCitpbmRleCA1N2YyNDExZTNiYi4uNjNlOGJkN2Y0MmEgMTAwNjQ0CistLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25l
bnRzL3ZpZGVvX2NvZGVjL1JUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5tbQorKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92
aWRlb19jb2RlYy9SVENDb2RlY1NwZWNpZmljSW5mb0gyNjQubW0KK0BAIC0yMCw2ICsyMCw3IEBA
IEBzeW50aGVzaXplIHBhY2tldGl6YXRpb25Nb2RlID0gX3BhY2tldGl6YXRpb25Nb2RlOworIC0g
KHdlYnJ0Yzo6Q29kZWNTcGVjaWZpY0luZm8pbmF0aXZlQ29kZWNTcGVjaWZpY0luZm8geworICAg
d2VicnRjOjpDb2RlY1NwZWNpZmljSW5mbyBjb2RlY1NwZWNpZmljSW5mbzsKKyAgIGNvZGVjU3Bl
Y2lmaWNJbmZvLmNvZGVjVHlwZSA9IHdlYnJ0Yzo6a1ZpZGVvQ29kZWNIMjY0OworKyAgY29kZWNT
cGVjaWZpY0luZm8uY29kZWNfbmFtZSA9IFtrUlRDVmlkZW9Db2RlY0gyNjROYW1lIGNTdHJpbmdV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgIGNvZGVjU3BlY2lmaWNJbmZv
LmNvZGVjU3BlY2lmaWMuSDI2NC5wYWNrZXRpemF0aW9uX21vZGUgPQorICAgICAgICh3ZWJydGM6
OkgyNjRQYWNrZXRpemF0aW9uTW9kZSlfcGFja2V0aXphdGlvbk1vZGU7CisgCitkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29t
cG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oCitpbmRleCA3Y2E5
NDYzYTU5My4uZDExNDYwMzAwZDUgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0Rl
ZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5LmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVm
YXVsdFZpZGVvRGVjb2RlckZhY3RvcnkuaAorQEAgLTE5LDYgKzE5LDcgQEAgTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KKyAgKiAgY29kZWNzLCBjcmVhdGUgY3VzdG9tIGltcGxlbWVudGF0aW9ucyBv
ZiBSVENWaWRlb0VuY29kZXJGYWN0b3J5IGFuZCBSVENWaWRlb0RlY29kZXJGYWN0b3J5LgorICAq
LworIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJX
S19SVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeSIpKSkKKyBAaW50ZXJmYWNlIFJUQ0RlZmF1
bHRWaWRlb0RlY29kZXJGYWN0b3J5IDogTlNPYmplY3QgPFJUQ1ZpZGVvRGVjb2RlckZhY3Rvcnk+
CisgQGVuZAorIAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVv
RGVjb2RlckZhY3RvcnkubSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRGVjb2Rl
ckZhY3RvcnkubQoraW5kZXggYmRiMTg1MTdjYWYuLmM3ZDA4Y2FhOWM5IDEwMDY0NAorLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9u
ZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5tCisrKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25l
bnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5Lm0KK0BAIC0xNSw3
ICsxNSw3IEBACisgI2ltcG9ydCAiYXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvQ29kZWNDb25zdGFu
dHMuaCIKKyAjaW1wb3J0ICJhcGkvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVyVlA4LmgiCisg
I2ltcG9ydCAiYmFzZS9SVENWaWRlb0NvZGVjSW5mby5oIgorLSNpZiBkZWZpbmVkKFJUQ19FTkFC
TEVfVlA5KQorKyNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisgI2ltcG9ydCAiYXBpL3Zp
ZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlclZQOS5oIgorICNlbmRpZgorIAorQEAgLTI2LDcgKzI2
LDcgQEAgQGltcGxlbWVudGF0aW9uIFJUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5CisgICAg
IHJldHVybiBbW1JUQ1ZpZGVvRGVjb2RlckgyNjQgYWxsb2NdIGluaXRdOworICAgfSBlbHNlIGlm
IChbaW5mby5uYW1lIGlzRXF1YWxUb1N0cmluZzprUlRDVmlkZW9Db2RlY1ZwOE5hbWVdKSB7Cisg
ICAgIHJldHVybiBbUlRDVmlkZW9EZWNvZGVyVlA4IHZwOERlY29kZXJdOworLSNpZiBkZWZpbmVk
KFJUQ19FTkFCTEVfVlA5KQorKyNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisgICB9IGVs
c2UgaWYgKFtpbmZvLm5hbWUgaXNFcXVhbFRvU3RyaW5nOmtSVENWaWRlb0NvZGVjVnA5TmFtZV0p
IHsKKyAgICAgcmV0dXJuIFtSVENWaWRlb0RlY29kZXJWUDkgdnA5RGVjb2Rlcl07CisgI2VuZGlm
CitAQCAtMzksNyArMzksNyBAQCBAaW1wbGVtZW50YXRpb24gUlRDRGVmYXVsdFZpZGVvRGVjb2Rl
ckZhY3RvcnkKKyAgIHJldHVybiBAWworICAgICBbW1JUQ1ZpZGVvQ29kZWNJbmZvIGFsbG9jXSBp
bml0V2l0aE5hbWU6a1JUQ1ZpZGVvQ29kZWNIMjY0TmFtZV0sCisgICAgIFtbUlRDVmlkZW9Db2Rl
Y0luZm8gYWxsb2NdIGluaXRXaXRoTmFtZTprUlRDVmlkZW9Db2RlY1ZwOE5hbWVdLAorLSNpZiBk
ZWZpbmVkKFJUQ19FTkFCTEVfVlA5KQorKyNpZiAhZGVmaW5lZChSVENfRElTQUJMRV9WUDkpCisg
ICAgIFtbUlRDVmlkZW9Db2RlY0luZm8gYWxsb2NdIGluaXRXaXRoTmFtZTprUlRDVmlkZW9Db2Rl
Y1ZwOU5hbWVdLAorICNlbmRpZgorICAgXTsKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0Rl
ZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5LmgKK2luZGV4IGM0NWU1NDM2MmIyLi45MzIzMjU2Y2Vh
ZCAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZh
Y3RvcnkuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFj
dG9yeS5oCitAQCAtMTksNiArMTksNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorICAqICBj
b2RlY3MsIGNyZWF0ZSBjdXN0b20gaW1wbGVtZW50YXRpb25zIG9mIFJUQ1ZpZGVvRW5jb2RlckZh
Y3RvcnkgYW5kIFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuCisgICovCisgUlRDX09CSkNfRVhQT1JU
CisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ0RlZmF1bHRWaWRlb0Vu
Y29kZXJGYWN0b3J5IikpKQorIEBpbnRlcmZhY2UgUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3Rv
cnkgOiBOU09iamVjdCA8UlRDVmlkZW9FbmNvZGVyRmFjdG9yeT4KKyAKKyBAcHJvcGVydHkobm9u
YXRvbWljLCByZXRhaW4pIFJUQ1ZpZGVvQ29kZWNJbmZvICpwcmVmZXJyZWRDb2RlYzsKK2RpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5Lm0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5Lm0KK2luZGV4
IGI3MjI5NmI2NGYzLi5iMDFjMDc0Njc5MiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMv
UlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkubQorKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9S
VENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeS5tCitAQCAtMTUsNyArMTUsNyBAQAorICNpbXBv
cnQgImFwaS92aWRlb19jb2RlYy9SVENWaWRlb0NvZGVjQ29uc3RhbnRzLmgiCisgI2ltcG9ydCAi
YXBpL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlclZQOC5oIgorICNpbXBvcnQgImJhc2UvUlRD
VmlkZW9Db2RlY0luZm8uaCIKKy0jaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKKysjaWYgIWRl
ZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorICNpbXBvcnQgImFwaS92aWRlb19jb2RlYy9SVENWaWRl
b0VuY29kZXJWUDkuaCIKKyAjZW5kaWYKKyAKK0BAIC00NCw3ICs0NCw3IEBAIEBpbXBsZW1lbnRh
dGlvbiBSVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeQorIAorICAgUlRDVmlkZW9Db2RlY0lu
Zm8gKnZwOEluZm8gPSBbW1JUQ1ZpZGVvQ29kZWNJbmZvIGFsbG9jXSBpbml0V2l0aE5hbWU6a1JU
Q1ZpZGVvQ29kZWNWcDhOYW1lXTsKKyAKKy0jaWYgZGVmaW5lZChSVENfRU5BQkxFX1ZQOSkKKysj
aWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorICAgUlRDVmlkZW9Db2RlY0luZm8gKnZwOUlu
Zm8gPSBbW1JUQ1ZpZGVvQ29kZWNJbmZvIGFsbG9jXSBpbml0V2l0aE5hbWU6a1JUQ1ZpZGVvQ29k
ZWNWcDlOYW1lXTsKKyAjZW5kaWYKKyAKK0BAIC01Miw3ICs1Miw3IEBAIEBpbXBsZW1lbnRhdGlv
biBSVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeQorICAgICBjb25zdHJhaW5lZEhpZ2hJbmZv
LAorICAgICBjb25zdHJhaW5lZEJhc2VsaW5lSW5mbywKKyAgICAgdnA4SW5mbywKKy0jaWYgZGVm
aW5lZChSVENfRU5BQkxFX1ZQOSkKKysjaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorICAg
ICB2cDlJbmZvLAorICNlbmRpZgorICAgXTsKK0BAIC02Myw3ICs2Myw3IEBAIEBpbXBsZW1lbnRh
dGlvbiBSVENEZWZhdWx0VmlkZW9FbmNvZGVyRmFjdG9yeQorICAgICByZXR1cm4gW1tSVENWaWRl
b0VuY29kZXJIMjY0IGFsbG9jXSBpbml0V2l0aENvZGVjSW5mbzppbmZvXTsKKyAgIH0gZWxzZSBp
ZiAoW2luZm8ubmFtZSBpc0VxdWFsVG9TdHJpbmc6a1JUQ1ZpZGVvQ29kZWNWcDhOYW1lXSkgewor
ICAgICByZXR1cm4gW1JUQ1ZpZGVvRW5jb2RlclZQOCB2cDhFbmNvZGVyXTsKKy0jaWYgZGVmaW5l
ZChSVENfRU5BQkxFX1ZQOSkKKysjaWYgIWRlZmluZWQoUlRDX0RJU0FCTEVfVlA5KQorICAgfSBl
bHNlIGlmIChbaW5mby5uYW1lIGlzRXF1YWxUb1N0cmluZzprUlRDVmlkZW9Db2RlY1ZwOU5hbWVd
KSB7CisgICAgIHJldHVybiBbUlRDVmlkZW9FbmNvZGVyVlA5IHZwOUVuY29kZXJdOworICNlbmRp
ZgorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDSDI2NFByb2ZpbGVMZXZlbElkLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5oCitpbmRleCA1NmIzNTMy
MTVhMi4uZDAyMjI5NzY3NGUgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQ
cm9maWxlTGV2ZWxJZC5oCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2
ZWxJZC5oCitAQCAtNDgsNiArNDgsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgUlRD
SDI2NExldmVsKSB7CisgfTsKKyAKKyBSVENfT0JKQ19FWFBPUlQKKytfX2F0dHJpYnV0ZV9fKChv
YmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDSDI2NFByb2ZpbGVMZXZlbElkIikpKQorIEBpbnRlcmZh
Y2UgUlRDSDI2NFByb2ZpbGVMZXZlbElkIDogTlNPYmplY3QKKyAKKyBAcHJvcGVydHkobm9uYXRv
bWljLCByZWFkb25seSkgUlRDSDI2NFByb2ZpbGUgcHJvZmlsZTsKK2RpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMv
UlRDSDI2NFByb2ZpbGVMZXZlbElkLm1tCitpbmRleCAzNTk2NTZjYjk3Yi4uM2Q1YzgzMzcyNDYg
MTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbQor
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
Y29tcG9uZW50cy92aWRlb19jb2RlYy9SVENIMjY0UHJvZmlsZUxldmVsSWQubW0KK0BAIC0xOSwy
MyArMTksMzUgQEAKKyAjaW5jbHVkZSAibWVkaWEvYmFzZS9oMjY0X3Byb2ZpbGVfbGV2ZWxfaWQu
aCIKKyAjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYWNvbnN0YW50cy5oIgorIAorKyNpZiAhZGVm
aW5lZChXRUJSVENfV0VCS0lUX0JVSUxEKQorIG5hbWVzcGFjZSB7CisgCisgTlNTdHJpbmcgKk1h
eFN1cHBvcnRlZFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkSGlnaCgpOworIE5TU3RyaW5nICpNYXhT
dXBwb3J0ZWRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEJhc2VsaW5lKCk7CisgCisgfSAgLy8gbmFt
ZXNwYWNlCisrI2VuZGlmCisgCistTlNTdHJpbmcgKmNvbnN0IGtSVENWaWRlb0NvZGVjSDI2NE5h
bWUgPSBAKGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1lKTsKKytOU1N0cmluZyAqY29uc3Qga1JUQ1Zp
ZGVvQ29kZWNIMjY0TmFtZSA9IEAiSDI2NCI7CisgTlNTdHJpbmcgKmNvbnN0IGtSVENMZXZlbDMx
Q29uc3RyYWluZWRIaWdoID0gQCI2NDBjMWYiOworIE5TU3RyaW5nICpjb25zdCBrUlRDTGV2ZWwz
MUNvbnN0cmFpbmVkQmFzZWxpbmUgPSBAIjQyZTAxZiI7CisrCisrI2lmIGRlZmluZWQoV0VCUlRD
X1dFQktJVF9CVUlMRCkKKytOU1N0cmluZyAqY29uc3Qga1JUQ01heFN1cHBvcnRlZEgyNjRQcm9m
aWxlTGV2ZWxDb25zdHJhaW5lZEhpZ2ggPQorKyAgICBAIjY0MGMxZiI7CisrTlNTdHJpbmcgKmNv
bnN0IGtSVENNYXhTdXBwb3J0ZWRIMjY0UHJvZmlsZUxldmVsQ29uc3RyYWluZWRCYXNlbGluZSA9
CisrICAgIEAiNDJlMDFmIjsKKysjZWxzZQorIE5TU3RyaW5nICpjb25zdCBrUlRDTWF4U3VwcG9y
dGVkSDI2NFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkSGlnaCA9CisgICAgIE1heFN1cHBvcnRlZFBy
b2ZpbGVMZXZlbENvbnN0cmFpbmVkSGlnaCgpOworIE5TU3RyaW5nICpjb25zdCBrUlRDTWF4U3Vw
cG9ydGVkSDI2NFByb2ZpbGVMZXZlbENvbnN0cmFpbmVkQmFzZWxpbmUgPQorICAgICBNYXhTdXBw
b3J0ZWRQcm9maWxlTGV2ZWxDb25zdHJhaW5lZEJhc2VsaW5lKCk7CisrI2VuZGlmCisgCisgbmFt
ZXNwYWNlIHsKKyAKKysjaWYgIWRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKKysKKyAjaWYg
ZGVmaW5lZChXRUJSVENfSU9TKQorIAorIHVzaW5nIG5hbWVzcGFjZSB3ZWJydGM6OkgyNjQ7CitA
QCAtNzMsNiArODUsOCBAQCBOU1N0cmluZyAqTWF4U3VwcG9ydGVkUHJvZmlsZUxldmVsQ29uc3Ry
YWluZWRIaWdoKCkgeworICAgcmV0dXJuIGtSVENMZXZlbDMxQ29uc3RyYWluZWRIaWdoOworIH0K
KyAKKysjZW5kaWYKKysKKyB9ICAvLyBuYW1lc3BhY2UKKyAKKyBAaW50ZXJmYWNlIFJUQ0gyNjRQ
cm9maWxlTGV2ZWxJZCAoKQorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9E
ZWNvZGVyRmFjdG9yeUgyNjQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVyRmFj
dG9yeUgyNjQuaAoraW5kZXggNGZjZmYxZGZmNzkuLmZkYWJkODA3NDgwIDEwMDY0NAorLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9u
ZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0RlY29kZXJGYWN0b3J5SDI2NC5oCisrKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0LmgKK0BAIC0xNCw1ICsxNCw2
IEBACisgI2ltcG9ydCAiUlRDVmlkZW9EZWNvZGVyRmFjdG9yeS5oIgorIAorIFJUQ19PQkpDX0VY
UE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJXS19SVENWaWRlb0RlY29k
ZXJGYWN0b3J5SDI2NCIpKSkKKyBAaW50ZXJmYWNlIFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0
IDogTlNPYmplY3QgPFJUQ1ZpZGVvRGVjb2RlckZhY3Rvcnk+CisgQGVuZAorZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2Rl
Yy9SVENWaWRlb0RlY29kZXJIMjY0LmgKK2luZGV4IGI4NjAyNzYyMDZjLi5iMTBkMWU2YTA5OSAx
MDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5oCisrKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQuaAorQEAgLTE0LDUgKzE0LDYg
QEAKKyAjaW1wb3J0ICJSVENWaWRlb0RlY29kZXIuaCIKKyAKKyBSVENfT0JKQ19FWFBPUlQKKytf
X2F0dHJpYnV0ZV9fKChvYmpjX3J1bnRpbWVfbmFtZSgiV0tfUlRDVmlkZW9EZWNvZGVySDI2NCIp
KSkKKyBAaW50ZXJmYWNlIFJUQ1ZpZGVvRGVjb2RlckgyNjQgOiBOU09iamVjdCA8UlRDVmlkZW9E
ZWNvZGVyPgorIEBlbmQKK2RpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVj
b2RlckgyNjQubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRGVjb2RlckgyNjQubW0KK2lu
ZGV4IDNiZmI5MThiZjYxLi4xYzE4ZmFiMTdkZiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29k
ZWMvUlRDVmlkZW9EZWNvZGVySDI2NC5tbQorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRl
b0RlY29kZXJIMjY0Lm1tCitAQCAtMTksMTAgKzE5LDYgQEAKKyAjaW1wb3J0ICJoZWxwZXJzLmgi
CisgI2ltcG9ydCAiaGVscGVycy9zY29wZWRfY2Z0eXBlcmVmLmgiCisgCistI2lmIGRlZmluZWQo
V0VCUlRDX0lPUykKKy0jaW1wb3J0ICJoZWxwZXJzL1VJRGV2aWNlK1JUQ0RldmljZS5oIgorLSNl
bmRpZgorLQorICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vy
cm9yX2NvZGVzLmgiCisgI2luY2x1ZGUgInJ0Y19iYXNlL2NoZWNrcy5oIgorICNpbmNsdWRlICJy
dGNfYmFzZS9sb2dnaW5nLmgiCitAQCAtMjUxLDkgKzI0Nyw3IEBAIC0gKHZvaWQpY29uZmlndXJl
RGVjb21wcmVzc2lvblNlc3Npb24geworIC0gKHZvaWQpZGVzdHJveURlY29tcHJlc3Npb25TZXNz
aW9uIHsKKyAgIGlmIChfZGVjb21wcmVzc2lvblNlc3Npb24pIHsKKyAjaWYgZGVmaW5lZChXRUJS
VENfSU9TKQorLSAgICBpZiAoW1VJRGV2aWNlIGlzSU9TMTFPckxhdGVyXSkgeworLSAgICAgIFZU
RGVjb21wcmVzc2lvblNlc3Npb25XYWl0Rm9yQXN5bmNocm9ub3VzRnJhbWVzKF9kZWNvbXByZXNz
aW9uU2Vzc2lvbik7CistICAgIH0KKysgICAgVlREZWNvbXByZXNzaW9uU2Vzc2lvbldhaXRGb3JB
c3luY2hyb25vdXNGcmFtZXMoX2RlY29tcHJlc3Npb25TZXNzaW9uKTsKKyAjZW5kaWYKKyAgICAg
VlREZWNvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUoX2RlY29tcHJlc3Npb25TZXNzaW9uKTsK
KyAgICAgQ0ZSZWxlYXNlKF9kZWNvbXByZXNzaW9uU2Vzc2lvbik7CitkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50
cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19j
b2RlYy9SVENWaWRlb0VuY29kZXJGYWN0b3J5SDI2NC5oCitpbmRleCBjNjQ0MDVlNGRhYy4uNWY2
Zjc4ZGZhOWEgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckZh
Y3RvcnlIMjY0LmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVyRmFjdG9y
eUgyNjQuaAorQEAgLTE0LDUgKzE0LDYgQEAKKyAjaW1wb3J0ICJSVENWaWRlb0VuY29kZXJGYWN0
b3J5LmgiCisgCisgUlRDX09CSkNfRVhQT1JUCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1l
X25hbWUoIldLX1JUQ1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0IikpKQorIEBpbnRlcmZhY2UgUlRD
VmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQgOiBOU09iamVjdCA8UlRDVmlkZW9FbmNvZGVyRmFjdG9y
eT4KKyBAZW5kCitkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJI
MjY0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQuaAoraW5kZXggYTlj
MDU1ODBhNDEuLjc3MTRiMjVlYWE0IDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENW
aWRlb0VuY29kZXJIMjY0LmgKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVy
SDI2NC5oCitAQCAtMTUsNiArMTUsNyBAQAorICNpbXBvcnQgIlJUQ1ZpZGVvRW5jb2Rlci5oIgor
IAorIFJUQ19PQkpDX0VYUE9SVAorK19fYXR0cmlidXRlX18oKG9iamNfcnVudGltZV9uYW1lKCJX
S19SVENWaWRlb0VuY29kZXJIMjY0IikpKQorIEBpbnRlcmZhY2UgUlRDVmlkZW9FbmNvZGVySDI2
NCA6IE5TT2JqZWN0IDxSVENWaWRlb0VuY29kZXI+CisgCisgLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoQ29kZWNJbmZvOihSVENWaWRlb0NvZGVjSW5mbyAqKWNvZGVjSW5mbzsKK2RpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21w
b25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQubW0gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2Nv
ZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQubW0KK2luZGV4IGY2NjkwYjZkODYxLi5hMTQzNTdmYjgw
YyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDVmlkZW9FbmNvZGVySDI2NC5tbQor
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMv
Y29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRlb0VuY29kZXJIMjY0Lm1tCitAQCAtOSwzOSAr
OSw2OCBAQAorICAqCisgICovCisgCistI2ltcG9ydCAiUlRDVmlkZW9FbmNvZGVySDI2NC5oIgor
KyNpbXBvcnQgIldlYlJUQy9SVENWaWRlb0NvZGVjSDI2NC5oIgorIAorICNpbXBvcnQgPFZpZGVv
VG9vbGJveC9WaWRlb1Rvb2xib3guaD4KKyAjaW5jbHVkZSA8dmVjdG9yPgorIAorLSNpZiBkZWZp
bmVkKFdFQlJUQ19JT1MpCistI2ltcG9ydCAiaGVscGVycy9VSURldmljZStSVENEZXZpY2UuaCIK
Ky0jZW5kaWYKKy0jaW1wb3J0ICJSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQuaCIKKy0jaW1wb3J0
ICJSVENIMjY0UHJvZmlsZUxldmVsSWQuaCIKKy0jaW1wb3J0ICJhcGkvcGVlcmNvbm5lY3Rpb24v
UlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlcitQcml2YXRlLmgiCistI2ltcG9ydCAiYXBpL3BlZXJj
b25uZWN0aW9uL1JUQ1ZpZGVvQ29kZWNJbmZvK1ByaXZhdGUuaCIKKy0jaW1wb3J0ICJiYXNlL1JU
Q0NvZGVjU3BlY2lmaWNJbmZvLmgiCistI2ltcG9ydCAiYmFzZS9SVENJNDIwQnVmZmVyLmgiCist
I2ltcG9ydCAiYmFzZS9SVENWaWRlb0VuY29kZXIuaCIKKy0jaW1wb3J0ICJiYXNlL1JUQ1ZpZGVv
RnJhbWUuaCIKKy0jaW1wb3J0ICJiYXNlL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKKy0jaW1wb3J0
ICJjb21wb25lbnRzL3ZpZGVvX2ZyYW1lX2J1ZmZlci9SVENDVlBpeGVsQnVmZmVyLmgiCistI2lt
cG9ydCAiaGVscGVycy5oIgorLQorKyNpbXBvcnQgIlBlZXJDb25uZWN0aW9uL1JUQ1ZpZGVvQ29k
ZWMrUHJpdmF0ZS5oIgorKyNpbXBvcnQgIldlYlJUQy9SVENWaWRlb0NvZGVjLmgiCisrI2ltcG9y
dCAiV2ViUlRDL1JUQ1ZpZGVvRnJhbWUuaCIKKysjaW1wb3J0ICJXZWJSVEMvUlRDVmlkZW9GcmFt
ZUJ1ZmZlci5oIgorICNpbmNsdWRlICJjb21tb25fdmlkZW8vaDI2NC9oMjY0X2JpdHN0cmVhbV9w
YXJzZXIuaCIKKyAjaW5jbHVkZSAiY29tbW9uX3ZpZGVvL2gyNjQvcHJvZmlsZV9sZXZlbF9pZC5o
IgorICNpbmNsdWRlICJjb21tb25fdmlkZW8vaW5jbHVkZS9iaXRyYXRlX2FkanVzdGVyLmgiCisr
I2ltcG9ydCAiaGVscGVycy5oIgorICNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2Nv
bW1vbl90eXBlcy5oIgorICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3Zp
ZGVvX2Vycm9yX2NvZGVzLmgiCisgI2luY2x1ZGUgInJ0Y19iYXNlL2J1ZmZlci5oIgorICNpbmNs
dWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisgI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWV1dGlscy5o
IgorLSNpbmNsdWRlICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL25hbHVfcmV3cml0
ZXIuaCIKKysjaW5jbHVkZSAic2RrL29iamMvRnJhbWV3b3JrL0NsYXNzZXMvVmlkZW9Ub29sYm94
L25hbHVfcmV3cml0ZXIuaCIKKysjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY2xv
Y2suaCIKKyAjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZl
cnRfZnJvbS5oIgorIAorLUBpbnRlcmZhY2UgUlRDVmlkZW9FbmNvZGVySDI2NCAoKQorKyNpbmNs
dWRlICJzZGsvV2ViS2l0L0VuY29kZXJVdGlsaXRpZXMuaCIKKysjaW5jbHVkZSAic2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaCIKKysKKysjaW1wb3J0IDxkbGZjbi5oPgorKyNpbXBvcnQgPG9i
amMvcnVudGltZS5oPgorKworK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoVmlkZW9Ub29s
Qm94KQorK1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKFZpZGVvVG9vbEJveCwga1ZUVmlkZW9F
bmNvZGVyU3BlY2lmaWNhdGlvbl9Vc2FnZSwgTlNTdHJpbmcgKikKKysKKysjaWYgIUVOQUJMRV9W
Q1BfRU5DT0RFUiAmJiAhZGVmaW5lZChXRUJSVENfSU9TKQorK3N0YXRpYyBpbmxpbmUgYm9vbCBp
c1N0YW5kYXJkRnJhbWVTaXplKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorK3sKKysg
ICAgLy8gRklYTUU6IEVudmlzaW9uIHJlbGF4aW5nIHRoaXMgcnVsZSwgc29tZXRoaW5nIGxpa2Ug
d2lkdGggYW5kIGhlaWdodCBkaXZpZGFibGUgYnkgNCBvciA4IHNob3VsZCBiZSBnb29kIGVub3Vn
aC4KKysgICAgaWYgKHdpZHRoID09IDEyODApCisrICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDcy
MDsKKysgICAgaWYgKHdpZHRoID09IDcyMCkKKysgICAgICAgIHJldHVybiBoZWlnaHQgPT0gMTI4
MDsKKysgICAgaWYgKHdpZHRoID09IDk2MCkKKysgICAgICAgIHJldHVybiBoZWlnaHQgPT0gNTQw
OworKyAgICBpZiAod2lkdGggPT0gNTQwKQorKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSA5NjA7
CisrICAgIGlmICh3aWR0aCA9PSA2NDApCisrICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDQ4MDsK
KysgICAgaWYgKHdpZHRoID09IDQ4MCkKKysgICAgICAgIHJldHVybiBoZWlnaHQgPT0gNjQwOwor
KyAgICBpZiAod2lkdGggPT0gMjg4KQorKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSAzNTI7Cisr
ICAgIGlmICh3aWR0aCA9PSAzNTIpCisrICAgICAgICByZXR1cm4gaGVpZ2h0ID09IDI4ODsKKysg
ICAgaWYgKHdpZHRoID09IDMyMCkKKysgICAgICAgIHJldHVybiBoZWlnaHQgPT0gMjQwOworKyAg
ICBpZiAod2lkdGggPT0gMjQwKQorKyAgICAgICAgcmV0dXJuIGhlaWdodCA9PSAzMjA7CisrICAg
IHJldHVybiBmYWxzZTsKKyt9CisrI2VuZGlmCisgCisrX19hdHRyaWJ1dGVfXygob2JqY19ydW50
aW1lX25hbWUoIldLX1JUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQiKSkpCisrQGludGVyZmFjZSBS
VENTaW5nbGVWaWRlb0VuY29kZXJIMjY0IDogTlNPYmplY3QgPFJUQ1ZpZGVvRW5jb2Rlcj4KKyst
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlY0luZm86KFJUQ1ZpZGVvQ29kZWNJbmZvICopY29k
ZWNJbmZvIHNpbXVsY2FzdEluZGV4OiAoaW50KWluZGV4OworIC0gKHZvaWQpZnJhbWVXYXNFbmNv
ZGVkOihPU1N0YXR1cylzdGF0dXMKKyAgICAgICAgICAgICAgICAgICBmbGFnczooVlRFbmNvZGVJ
bmZvRmxhZ3MpaW5mb0ZsYWdzCisgICAgICAgICAgICBzYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVm
ZmVyUmVmKXNhbXBsZUJ1ZmZlcgorQEAgLTUxLDcgKzgwLDYgQEAgLSAodm9pZClmcmFtZVdhc0Vu
Y29kZWQ6KE9TU3RhdHVzKXN0YXR1cworICAgICAgICAgICAgcmVuZGVyVGltZU1zOihpbnQ2NF90
KXJlbmRlclRpbWVNcworICAgICAgICAgICAgICAgdGltZXN0YW1wOih1aW50MzJfdCl0aW1lc3Rh
bXAKKyAgICAgICAgICAgICAgICByb3RhdGlvbjooUlRDVmlkZW9Sb3RhdGlvbilyb3RhdGlvbjsK
Ky0KKyBAZW5kCisgCisgbmFtZXNwYWNlIHsgIC8vIGFub255bW91cyBuYW1lc3BhY2UKK0BAIC03
MCw3ICs5OCw3IEBAIGNvbnN0IE9TVHlwZSBrTlYxMlBpeGVsRm9ybWF0ID0ga0NWUGl4ZWxGb3Jt
YXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZTsKKyAvLyBTdHJ1Y3QgdGhhdCB3ZSBw
YXNzIHRvIHRoZSBlbmNvZGVyIHBlciBmcmFtZSB0byBlbmNvZGUuIFdlIHJlY2VpdmUgaXQgYWdh
aW4KKyAvLyBpbiB0aGUgZW5jb2RlciBjYWxsYmFjay4KKyBzdHJ1Y3QgUlRDRnJhbWVFbmNvZGVQ
YXJhbXMgeworLSAgUlRDRnJhbWVFbmNvZGVQYXJhbXMoUlRDVmlkZW9FbmNvZGVySDI2NCAqZSwK
KysgIFJUQ0ZyYW1lRW5jb2RlUGFyYW1zKFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgKmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQgKmNzaSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgdywKKyAgICAgICAgICAgICAgICAgICAgICAg
IGludDMyX3QgaCwKK0BAIC04NSw3ICsxMTMsNyBAQCBzdHJ1Y3QgUlRDRnJhbWVFbmNvZGVQYXJh
bXMgeworICAgICB9CisgICB9CisgCistICBSVENWaWRlb0VuY29kZXJIMjY0ICplbmNvZGVyOwor
KyAgUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCAqZW5jb2RlcjsKKyAgIFJUQ0NvZGVjU3BlY2lm
aWNJbmZvSDI2NCAqY29kZWNTcGVjaWZpY0luZm87CisgICBpbnQzMl90IHdpZHRoOworICAgaW50
MzJfdCBoZWlnaHQ7CitAQCAtMTczLDggKzIwMSw4IEBAIHZvaWQgY29tcHJlc3Npb25PdXRwdXRD
YWxsYmFjayh2b2lkICplbmNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cm90YXRpb246ZW5jb2RlUGFyYW1zLT5yb3RhdGlvbl07CisgfQorIAorLS8vIEV4dHJhY3QgVmlk
ZW9Ub29sYm94IHByb2ZpbGUgb3V0IG9mIHRoZSB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0LiBJZiB0
aGVyZSBpcworLS8vIG5vIHNwZWNpZmljIFZpZGVvVG9vbGJveCBwcm9maWxlIGZvciB0aGUgc3Bl
Y2lmaWVkIGxldmVsLCBBdXRvTGV2ZWwgd2lsbCBiZQorKy8vIEV4dHJhY3QgVmlkZW9Ub29sYm94
IHByb2ZpbGUgb3V0IG9mIHRoZSBjcmlja2V0OjpWaWRlb0NvZGVjLiBJZiB0aGVyZSBpcyBubwor
Ky8vIHNwZWNpZmljIFZpZGVvVG9vbGJveCBwcm9maWxlIGZvciB0aGUgc3BlY2lmaWVkIGxldmVs
LCBBdXRvTGV2ZWwgd2lsbCBiZQorIC8vIHJldHVybmVkLiBUaGUgdXNlciBtdXN0IGluaXRpYWxp
emUgdGhlIGVuY29kZXIgd2l0aCBhIHJlc29sdXRpb24gYW5kCisgLy8gZnJhbWVyYXRlIGNvbmZv
cm1pbmcgdG8gdGhlIHNlbGVjdGVkIEgyNjQgbGV2ZWwgcmVnYXJkbGVzcy4KKyBDRlN0cmluZ1Jl
ZiBFeHRyYWN0UHJvZmlsZSh3ZWJydGM6OlNkcFZpZGVvRm9ybWF0IHZpZGVvRm9ybWF0KSB7CitA
QCAtMjgwLDIzICszMDgsMjYgQEAgQ0ZTdHJpbmdSZWYgRXh0cmFjdFByb2ZpbGUod2VicnRjOjpT
ZHBWaWRlb0Zvcm1hdCB2aWRlb0Zvcm1hdCkgeworIH0KKyB9ICAvLyBuYW1lc3BhY2UKKyAKKy1A
aW1wbGVtZW50YXRpb24gUlRDVmlkZW9FbmNvZGVySDI2NCB7CisrQGltcGxlbWVudGF0aW9uIFJU
Q1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgeworICAgUlRDVmlkZW9Db2RlY0luZm8gKl9jb2RlY0lu
Zm87CisgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpCaXRyYXRlQWRqdXN0ZXI+IF9iaXRyYXRl
QWRqdXN0ZXI7CisgICB1aW50MzJfdCBfdGFyZ2V0Qml0cmF0ZUJwczsKKy0gIHVpbnQzMl90IF9l
bmNvZGVyRnJhbWVSYXRlOworICAgdWludDMyX3QgX2VuY29kZXJCaXRyYXRlQnBzOworICAgUlRD
SDI2NFBhY2tldGl6YXRpb25Nb2RlIF9wYWNrZXRpemF0aW9uTW9kZTsKKyAgIENGU3RyaW5nUmVm
IF9wcm9maWxlOworICAgUlRDVmlkZW9FbmNvZGVyQ2FsbGJhY2sgX2NhbGxiYWNrOworICAgaW50
MzJfdCBfd2lkdGg7CisgICBpbnQzMl90IF9oZWlnaHQ7CistICBWVENvbXByZXNzaW9uU2Vzc2lv
blJlZiBfY29tcHJlc3Npb25TZXNzaW9uOworKyAgQ29tcHJlc3Npb25TZXNzaW9uUmVmIF9jb21w
cmVzc2lvblNlc3Npb247CisgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBfcGl4ZWxCdWZmZXJQb29s
OworICAgUlRDVmlkZW9Db2RlY01vZGUgX21vZGU7CisgCisgICB3ZWJydGM6OkgyNjRCaXRzdHJl
YW1QYXJzZXIgX2gyNjRCaXRzdHJlYW1QYXJzZXI7CisgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBf
ZnJhbWVTY2FsZUJ1ZmZlcjsKKysKKysgIHdlYnJ0Yzo6VmlkZW9Db2RlYyBfbmF0aXZlVmlkZW9D
b2RlYzsKKysgIGludCBfc2ltdWxjYXN0SW5kZXg7CisrICBib29sIF9kaXNhYmxlRW5jb2Rpbmc7
CisgfQorIAorIC8vIC41IGlzIHNldCBhcyBhIG1pbmludW0gdG8gcHJldmVudCBvdmVyY29tcGVu
c2F0aW5nIGZvciBsYXJnZSB0ZW1wb3JhcnkKK0BAIC0zMDYsMTIgKzMzNywxMyBAQCBAaW1wbGVt
ZW50YXRpb24gUlRDVmlkZW9FbmNvZGVySDI2NCB7CisgLy8gZHJhc3RpY2FsbHkgcmVkdWNlZCBi
aXRyYXRlLCBzbyB3ZSB3YW50IHRvIGF2b2lkIHRoYXQuIEluIHN0ZWFkeSBzdGF0ZQorIC8vIGNv
bmRpdGlvbnMsIDAuOTUgc2VlbXMgdG8gZ2l2ZSB1cyBiZXR0ZXIgb3ZlcmFsbCBiaXRyYXRlIG92
ZXIgbG9uZyBwZXJpb2RzCisgLy8gb2YgdGltZS4KKy0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
b2RlY0luZm86KFJUQ1ZpZGVvQ29kZWNJbmZvICopY29kZWNJbmZvIHsKKystIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhDb2RlY0luZm86KFJUQ1ZpZGVvQ29kZWNJbmZvICopY29kZWNJbmZvIHNpbXVs
Y2FzdEluZGV4OihpbnQpaW5kZXggeworICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAg
ICAgX2NvZGVjSW5mbyA9IGNvZGVjSW5mbzsKKyAgICAgX2JpdHJhdGVBZGp1c3Rlci5yZXNldChu
ZXcgd2VicnRjOjpCaXRyYXRlQWRqdXN0ZXIoLjUsIC45NSkpOworICAgICBfcGFja2V0aXphdGlv
bk1vZGUgPSBSVENIMjY0UGFja2V0aXphdGlvbk1vZGVOb25JbnRlcmxlYXZlZDsKKyAgICAgX3By
b2ZpbGUgPSBFeHRyYWN0UHJvZmlsZShbY29kZWNJbmZvIG5hdGl2ZVNkcFZpZGVvRm9ybWF0XSk7
CisrICAgIF9zaW11bGNhc3RJbmRleCA9IGluZGV4OworICAgICBSVENfTE9HKExTX0lORk8pIDw8
ICJVc2luZyBwcm9maWxlICIgPDwgQ0ZTdHJpbmdUb1N0cmluZyhfcHJvZmlsZSk7CisgICAgIFJU
Q19DSEVDSyhbY29kZWNJbmZvLm5hbWUgaXNFcXVhbFRvU3RyaW5nOmtSVENWaWRlb0NvZGVjSDI2
NE5hbWVdKTsKKyAgIH0KK0BAIC0zMzAsMTEgKzM2MiwxMyBAQCAtIChOU0ludGVnZXIpc3RhcnRF
bmNvZGVXaXRoU2V0dGluZ3M6KFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzICopc2V0dGluZ3MKKyAg
IF93aWR0aCA9IHNldHRpbmdzLndpZHRoOworICAgX2hlaWdodCA9IHNldHRpbmdzLmhlaWdodDsK
KyAgIF9tb2RlID0gc2V0dGluZ3MubW9kZTsKKysgIF9uYXRpdmVWaWRlb0NvZGVjID0gc2V0dGlu
Z3MubmF0aXZlVmlkZW9Db2RlYzsKKysKKysgIFJUQ19EQ0hFQ0soX25hdGl2ZVZpZGVvQ29kZWMu
bnVtYmVyT2ZTaW11bGNhc3RTdHJlYW1zICE9IDEpOworIAorICAgLy8gV2UgY2FuIG9ubHkgc2V0
IGF2ZXJhZ2UgYml0cmF0ZSBvbiB0aGUgSFcgZW5jb2Rlci4KKy0gIF90YXJnZXRCaXRyYXRlQnBz
ID0gc2V0dGluZ3Muc3RhcnRCaXRyYXRlICogMTAwMDsgIC8vIHN0YXJ0Qml0cmF0ZSBpcyBpbiBr
YnBzLgorKyAgX3RhcmdldEJpdHJhdGVCcHMgPSBzZXR0aW5ncy5zdGFydEJpdHJhdGU7CisgICBf
Yml0cmF0ZUFkanVzdGVyLT5TZXRUYXJnZXRCaXRyYXRlQnBzKF90YXJnZXRCaXRyYXRlQnBzKTsK
Ky0gIF9lbmNvZGVyRnJhbWVSYXRlID0gc2V0dGluZ3MubWF4RnJhbWVyYXRlOworIAorICAgLy8g
VE9ETyh0a2NoaW4pOiBUcnkgc2V0dGluZyBwYXlsb2FkIHNpemUgdmlhCisgICAvLyBrVlRDb21w
cmVzc2lvblByb3BlcnR5S2V5X01heEgyNjRTbGljZUJ5dGVzLgorQEAgLTM1Nyw2ICszOTEsMTAg
QEAgLSAoTlNJbnRlZ2VyKWVuY29kZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1lCisgICAgIGlzS2V5
ZnJhbWVSZXF1aXJlZCA9IFlFUzsKKyAgIH0KKyAKKysgIGlmIChfZGlzYWJsZUVuY29kaW5nKSB7
CisrICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CisrICB9CisrCisgICBDVlBp
eGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gbnVsbHB0cjsKKyAgIGlmIChbZnJhbWUuYnVmZmVy
IGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkgeworICAgICAvLyBOYXRp
dmUgZnJhbWUgYnVmZmVyCitAQCAtNDM0LDkgKzQ3Miw5IEBAIC0gKE5TSW50ZWdlcillbmNvZGU6
KFJUQ1ZpZGVvRnJhbWUgKilmcmFtZQorICAgZW5jb2RlUGFyYW1zLT5jb2RlY1NwZWNpZmljSW5m
by5wYWNrZXRpemF0aW9uTW9kZSA9IF9wYWNrZXRpemF0aW9uTW9kZTsKKyAKKyAgIC8vIFVwZGF0
ZSB0aGUgYml0cmF0ZSBpZiBuZWVkZWQuCistICBbc2VsZiBzZXRCaXRyYXRlQnBzOl9iaXRyYXRl
QWRqdXN0ZXItPkdldEFkanVzdGVkQml0cmF0ZUJwcygpIGZyYW1lUmF0ZTpfZW5jb2RlckZyYW1l
UmF0ZV07CisrICBbc2VsZiBzZXRCaXRyYXRlQnBzOl9iaXRyYXRlQWRqdXN0ZXItPkdldEFkanVz
dGVkQml0cmF0ZUJwcygpXTsKKyAKKy0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUQ29tcHJlc3Npb25T
ZXNzaW9uRW5jb2RlRnJhbWUoX2NvbXByZXNzaW9uU2Vzc2lvbiwKKysgIE9TU3RhdHVzIHN0YXR1
cyA9IENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKF9jb21wcmVzc2lvblNlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVs
QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmVzZW50YXRpb25UaW1lU3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtDTVRpbWVJbnZhbGlkLAorQEAgLTQ2NywxMCArNTA1
LDEwIEBAIC0gKHZvaWQpc2V0Q2FsbGJhY2s6KFJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrKWNhbGxi
YWNrIHsKKyAgIF9jYWxsYmFjayA9IGNhbGxiYWNrOworIH0KKyAKKy0tIChpbnQpc2V0Qml0cmF0
ZToodWludDMyX3QpYml0cmF0ZUtiaXQgZnJhbWVyYXRlOih1aW50MzJfdClmcmFtZXJhdGUgewor
LSAgX3RhcmdldEJpdHJhdGVCcHMgPSAxMDAwICogYml0cmF0ZUtiaXQ7CisrLSAoaW50KXNldEJp
dHJhdGU6KHVpbnQzMl90KWJpdHJhdGVCcHMgZnJhbWVyYXRlOih1aW50MzJfdClmcmFtZXJhdGUg
eworKyAgX3RhcmdldEJpdHJhdGVCcHMgPSBiaXRyYXRlQnBzOworICAgX2JpdHJhdGVBZGp1c3Rl
ci0+U2V0VGFyZ2V0Qml0cmF0ZUJwcyhfdGFyZ2V0Qml0cmF0ZUJwcyk7CistICBbc2VsZiBzZXRC
aXRyYXRlQnBzOl9iaXRyYXRlQWRqdXN0ZXItPkdldEFkanVzdGVkQml0cmF0ZUJwcygpIGZyYW1l
UmF0ZTpmcmFtZXJhdGVdOworKyAgW3NlbGYgc2V0Qml0cmF0ZUJwczpfYml0cmF0ZUFkanVzdGVy
LT5HZXRBZGp1c3RlZEJpdHJhdGVCcHMoKV07CisgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVD
X09LOworIH0KKyAKK0BAIC01MDMsNiArNTQxLDExIEBAIC0gKEJPT0wpcmVzZXRDb21wcmVzc2lv
blNlc3Npb25JZk5lZWRlZFdpdGhGcmFtZTooUlRDVmlkZW9GcmFtZSAqKWZyYW1lIHsKKyAgIE9T
VHlwZSBmcmFtZVBpeGVsRm9ybWF0ID0gW3NlbGYgcGl4ZWxGb3JtYXRPZkZyYW1lOmZyYW1lXTsK
KyAKKyAgIGlmIChfY29tcHJlc3Npb25TZXNzaW9uKSB7CisrI2lmIGRlZmluZWQoV0VCUlRDX1dF
QktJVF9CVUlMRCkKKysgICAgaWYgKCFfcGl4ZWxCdWZmZXJQb29sKSB7CisrICAgICAgcmV0dXJu
IE5POworKyAgICB9CisrI2VuZGlmCisgICAgIC8vIFRoZSBwb29sIGF0dHJpYnV0ZSBga0NWUGl4
ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXlgIGNhbiBjb250YWluIGVpdGhlciBhbiBhcnJheSBv
ZiBwaXhlbAorICAgICAvLyBmb3JtYXRzIG9yIGEgc2luZ2xlIHBpeGVsIGZvcm1hdC4KKyAgICAg
TlNEaWN0aW9uYXJ5ICpwb29sQXR0cmlidXRlcyA9CitAQCAtNTE2LDYgKzU1OSwxMSBAQCAtIChC
T09MKXJlc2V0Q29tcHJlc3Npb25TZXNzaW9uSWZOZWVkZWRXaXRoRnJhbWU6KFJUQ1ZpZGVvRnJh
bWUgKilmcmFtZSB7CisgICAgICAgY29tcHJlc3Npb25TZXNzaW9uUGl4ZWxGb3JtYXRzID0gQFsg
KE5TTnVtYmVyICopcGl4ZWxGb3JtYXRzIF07CisgICAgIH0KKyAKKysgICAgaWYgKFtmcmFtZS5i
dWZmZXIgaXNLaW5kT2ZDbGFzczpbUlRDQ1ZQaXhlbEJ1ZmZlciBjbGFzc11dKSB7CisrICAgICAg
UlRDQ1ZQaXhlbEJ1ZmZlciAqcnRjUGl4ZWxCdWZmZXIgPSAoUlRDQ1ZQaXhlbEJ1ZmZlciAqKWZy
YW1lLmJ1ZmZlcjsKKysgICAgICBmcmFtZVBpeGVsRm9ybWF0ID0gQ1ZQaXhlbEJ1ZmZlckdldFBp
eGVsRm9ybWF0VHlwZShydGNQaXhlbEJ1ZmZlci5waXhlbEJ1ZmZlcik7CisrICAgIH0KKysKKyAg
ICAgaWYgKCFbY29tcHJlc3Npb25TZXNzaW9uUGl4ZWxGb3JtYXRzCisgICAgICAgICAgICAgY29u
dGFpbnNPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhMb25nOmZyYW1lUGl4ZWxGb3JtYXRdXSkg
eworICAgICAgIHJlc2V0Q29tcHJlc3Npb25TZXNzaW9uID0gWUVTOworQEAgLTUzMyw2ICs1ODEs
NyBAQCAtIChCT09MKXJlc2V0Q29tcHJlc3Npb25TZXNzaW9uSWZOZWVkZWRXaXRoRnJhbWU6KFJU
Q1ZpZGVvRnJhbWUgKilmcmFtZSB7CisgCisgLSAoaW50KXJlc2V0Q29tcHJlc3Npb25TZXNzaW9u
V2l0aFBpeGVsRm9ybWF0OihPU1R5cGUpZnJhbWVQaXhlbEZvcm1hdCB7CisgICBbc2VsZiBkZXN0
cm95Q29tcHJlc3Npb25TZXNzaW9uXTsKKysgIF9kaXNhYmxlRW5jb2RpbmcgPSBmYWxzZTsKKyAK
KyAgIC8vIFNldCBzb3VyY2UgaW1hZ2UgYnVmZmVyIGF0dHJpYnV0ZXMuIFRoZXNlIGF0dHJpYnV0
ZXMgd2lsbCBiZSBwcmVzZW50IG9uCisgICAvLyBidWZmZXJzIHJldHJpZXZlZCBmcm9tIHRoZSBl
bmNvZGVyJ3MgcGl4ZWwgYnVmZmVyIHBvb2wuCitAQCAtNTU5LDIyICs2MDgsMjYgQEAgLSAoaW50
KXJlc2V0Q29tcHJlc3Npb25TZXNzaW9uV2l0aFBpeGVsRm9ybWF0OihPU1R5cGUpZnJhbWVQaXhl
bEZvcm1hdCB7CisgICAgIENGUmVsZWFzZShwaXhlbEZvcm1hdCk7CisgICAgIHBpeGVsRm9ybWF0
ID0gbnVsbHB0cjsKKyAgIH0KKy0gIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgZW5jb2Rlcl9zcGVj
cyA9IG51bGxwdHI7CistI2lmIGRlZmluZWQoV0VCUlRDX01BQykgJiYgIWRlZmluZWQoV0VCUlRD
X0lPUykKKysgIENGRGljdGlvbmFyeVJlZiBlbmNvZGVyU3BlY3MgPSBudWxscHRyOworKyNpZiAh
ZGVmaW5lZChXRUJSVENfSU9TKQorKyAgYXV0byB1c2VIYXJkd2FyZUVuY29kZXIgPSB3ZWJydGM6
OmlzSDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKSA/IGtDRkJvb2xlYW5UcnVlIDoga0NGQm9v
bGVhbkZhbHNlOworICAgLy8gQ3VycmVudGx5IGh3IGFjY2wgaXMgc3VwcG9ydGVkIGFib3ZlIDM2
MHAgb24gbWFjLCBiZWxvdyAzNjBwCisgICAvLyB0aGUgY29tcHJlc3Npb24gc2Vzc2lvbiB3aWxs
IGJlIGNyZWF0ZWQgd2l0aCBodyBhY2NsIGRpc2FibGVkLgorLSAgZW5jb2Rlcl9zcGVjcyA9IENG
RGljdGlvbmFyeUNyZWF0ZU11dGFibGUoCistICAgICAgbnVsbHB0ciwgMSwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Cist
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShlbmNvZGVyX3NwZWNzLAorLSAgICAgICAgICAgICAgICAg
ICAgICAga1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJh
dGVkVmlkZW9FbmNvZGVyLAorLSAgICAgICAgICAgICAgICAgICAgICAga0NGQm9vbGVhblRydWUp
OworKyAgQ0ZUeXBlUmVmIHNlc3Npb25LZXlzW10gPSB7IGtWVFZpZGVvRW5jb2RlclNwZWNpZmlj
YXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2Rlciwga1ZUVmlkZW9FbmNv
ZGVyU3BlY2lmaWNhdGlvbl9SZXF1aXJlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2Rlciwg
a1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSB9OworKyAgQ0ZUeXBlUmVmIHNlc3Np
b25WYWx1ZXNbXSA9IHsgdXNlSGFyZHdhcmVFbmNvZGVyLCB1c2VIYXJkd2FyZUVuY29kZXIsIGtD
RkJvb2xlYW5UcnVlIH07CisrICBlbmNvZGVyU3BlY3MgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbktleXMsIHNlc3Npb25WYWx1ZXMsIDMsICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
OworKyNlbHNlCisrICBDRlR5cGVSZWYgc2Vzc2lvbktleXNbXSA9IHsga1ZUQ29tcHJlc3Npb25Q
cm9wZXJ0eUtleV9SZWFsVGltZSB9OworKyAgQ0ZUeXBlUmVmIHNlc3Npb25WYWx1ZXNbXSA9IHsg
a0NGQm9vbGVhblRydWUgfTsKKysgIGVuY29kZXJTcGVjcyA9IENGRGljdGlvbmFyeUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uS2V5cywgc2Vzc2lvblZhbHVlcywgMSwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cyk7CisgI2VuZGlmCisrCisgICBPU1N0YXR1cyBzdGF0dXMgPQorLSAgICAgIFZUQ29tcHJlc3Np
b25TZXNzaW9uQ3JlYXRlKG51bGxwdHIsICAvLyB1c2UgZGVmYXVsdCBhbGxvY2F0b3IKKysgICAg
ICBDb21wcmVzc2lvblNlc3Npb25DcmVhdGUobnVsbHB0ciwgIC8vIHVzZSBkZWZhdWx0IGFsbG9j
YXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF93aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfaGVpZ2h0LAorLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQsCistICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5jb2Rlcl9zcGVjcywgIC8vIHVzZSBoYXJkd2FyZSBhY2NlbGVyYXRl
ZCBlbmNvZGVyIGlmIGF2YWlsYWJsZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtDb2RlY1R5cGVIMjY0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29k
ZXJTcGVjcywgIC8vIHVzZSBoYXJkd2FyZSBhY2NlbGVyYXRlZCBlbmNvZGVyIGlmIGF2YWlsYWJs
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUF0dHJpYnV0ZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgIC8vIHVzZSBkZWZhdWx0
IGNvbXByZXNzZWQgZGF0YSBhbGxvY2F0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21wcmVzc2lvbk91dHB1dENhbGxiYWNrLAorQEAgLTU4NCwzMiArNjM3LDExMyBAQCAt
IChpbnQpcmVzZXRDb21wcmVzc2lvblNlc3Npb25XaXRoUGl4ZWxGb3JtYXQ6KE9TVHlwZSlmcmFt
ZVBpeGVsRm9ybWF0IHsKKyAgICAgQ0ZSZWxlYXNlKHNvdXJjZUF0dHJpYnV0ZXMpOworICAgICBz
b3VyY2VBdHRyaWJ1dGVzID0gbnVsbHB0cjsKKyAgIH0KKy0gIGlmIChlbmNvZGVyX3NwZWNzKSB7
CistICAgIENGUmVsZWFzZShlbmNvZGVyX3NwZWNzKTsKKy0gICAgZW5jb2Rlcl9zcGVjcyA9IG51
bGxwdHI7CisrICBpZiAoZW5jb2RlclNwZWNzKSB7CisrICAgIENGUmVsZWFzZShlbmNvZGVyU3Bl
Y3MpOworKyAgICBlbmNvZGVyU3BlY3MgPSBudWxscHRyOworICAgfQorKworKyNpZiBFTkFCTEVf
VkNQX0VOQ09ERVIgfHwgZGVmaW5lZChXRUJSVENfSU9TKQorICAgaWYgKHN0YXR1cyAhPSBub0Vy
cikgeworICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBjb21wcmVz
c2lvbiBzZXNzaW9uOiAiIDw8IHN0YXR1czsKKyAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19FUlJPUjsKKyAgIH0KKysjZW5kaWYKKyAjaWYgZGVmaW5lZChXRUJSVENfTUFDKSAmJiAhZGVm
aW5lZChXRUJSVENfSU9TKQorICAgQ0ZCb29sZWFuUmVmIGh3YWNjbF9lbmFibGVkID0gbnVsbHB0
cjsKKy0gIHN0YXR1cyA9IFZUU2Vzc2lvbkNvcHlQcm9wZXJ0eShfY29tcHJlc3Npb25TZXNzaW9u
LAorKyAgaWYgKHN0YXR1cyA9PSBub0VycikgeworKyAgICBzdGF0dXMgPSBWVFNlc3Npb25Db3B5
UHJvcGVydHkoX2NvbXByZXNzaW9uU2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1VzaW5nSGFyZHdhcmVBY2NlbGVyYXRl
ZFZpZGVvRW5jb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZod2FjY2xfZW5hYmxlZCk7Cisr
ICB9CisgICBpZiAoc3RhdHVzID09IG5vRXJyICYmIChDRkJvb2xlYW5HZXRWYWx1ZShod2FjY2xf
ZW5hYmxlZCkpKSB7CisgICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkNvbXByZXNzaW9uIHNlc3Np
b24gY3JlYXRlZCB3aXRoIGh3IGFjY2wgZW5hYmxlZCI7CisgICB9IGVsc2UgeworICAgICBSVENf
TE9HKExTX0lORk8pIDw8ICJDb21wcmVzc2lvbiBzZXNzaW9uIGNyZWF0ZWQgd2l0aCBodyBhY2Ns
IGRpc2FibGVkIjsKKysKKysjaWYgIUVOQUJMRV9WQ1BfRU5DT0RFUiAmJiAhZGVmaW5lZChXRUJS
VENfSU9TKQorKyAgICBpZiAoIWlzU3RhbmRhcmRGcmFtZVNpemUoX3dpZHRoLCBfaGVpZ2h0KSkg
eworKyAgICAgIF9kaXNhYmxlRW5jb2RpbmcgPSB0cnVlOworKyAgICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJVc2luZyBIMjY0IHNvZnR3YXJlIGVuY29kZXIgd2l0aCBub24gc3RhbmRhcmQgc2l6
ZSBpcyBub3Qgc3VwcG9ydGVkIjsKKysgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VS
Uk9SOworKyAgICB9CisrCisrICAgIGlmICghZ2V0a1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlv
bl9Vc2FnZSgpKSB7CisrICAgICAgX2Rpc2FibGVFbmNvZGluZyA9IHRydWU7CisrICAgICAgUlRD
X0xPRyhMU19FUlJPUikgPDwgIlJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgY2Fubm90IGNyZWF0
ZSBhIEgyNjQgc29mdHdhcmUgZW5jb2RlciI7CisrICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19D
T0RFQ19FUlJPUjsKKysgICAgfQorKworKyAgICBDRkRpY3Rpb25hcnlSZWYgaW9TdXJmYWNlVmFs
dWUgPSBDcmVhdGVDRlR5cGVEaWN0aW9uYXJ5KG51bGxwdHIsIG51bGxwdHIsIDApOworKyAgICBp
bnQ2NF90IHBpeGVsRm9ybWF0VHlwZSA9IGZyYW1lUGl4ZWxGb3JtYXQ7CisrICAgIENGTnVtYmVy
UmVmIHBpeGVsRm9ybWF0ID0gQ0ZOdW1iZXJDcmVhdGUobnVsbHB0ciwga0NGTnVtYmVyTG9uZ1R5
cGUsICZwaXhlbEZvcm1hdFR5cGUpOworKworKyAgICBjb25zdCBzaXplX3QgYXR0cmlidXRlc1Np
emUgPSAzOworKyAgICBDRlR5cGVSZWYga2V5c1thdHRyaWJ1dGVzU2l6ZV0gPSB7CisrICAgICAg
a0NWUGl4ZWxCdWZmZXJPcGVuR0xDb21wYXRpYmlsaXR5S2V5LAorKyAgICAgIGtDVlBpeGVsQnVm
ZmVySU9TdXJmYWNlUHJvcGVydGllc0tleSwKKysgICAgICBrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9y
bWF0VHlwZUtleQorKyAgICB9OworKyAgICBDRlR5cGVSZWYgdmFsdWVzW2F0dHJpYnV0ZXNTaXpl
XSA9IHsKKysgICAgICBrQ0ZCb29sZWFuVHJ1ZSwKKysgICAgICBpb1N1cmZhY2VWYWx1ZSwKKysg
ICAgICBwaXhlbEZvcm1hdH07CisrICAgIENGRGljdGlvbmFyeVJlZiBzb3VyY2VBdHRyaWJ1dGVz
ID0gQ3JlYXRlQ0ZUeXBlRGljdGlvbmFyeShrZXlzLCB2YWx1ZXMsIGF0dHJpYnV0ZXNTaXplKTsK
KysKKysgICAgaWYgKGlvU3VyZmFjZVZhbHVlKSB7CisrICAgICAgQ0ZSZWxlYXNlKGlvU3VyZmFj
ZVZhbHVlKTsKKysgICAgICBpb1N1cmZhY2VWYWx1ZSA9IG51bGxwdHI7CisrICAgIH0KKysgICAg
aWYgKHBpeGVsRm9ybWF0KSB7CisrICAgICAgQ0ZSZWxlYXNlKHBpeGVsRm9ybWF0KTsKKysgICAg
ICBwaXhlbEZvcm1hdCA9IG51bGxwdHI7CisrICAgIH0KKysKKysgICAgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiBlbmNvZGVyU3BlY3MgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKG51bGxwdHIs
IDIsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpOworKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShlbmNvZGVyU3BlY3MsIGtW
VFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVv
RW5jb2Rlciwga0NGQm9vbGVhbkZhbHNlKTsKKysgICAgaW50IHVzYWdlVmFsdWUgPSAxOworKyAg
ICBDRk51bWJlclJlZiB1c2FnZSA9IENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsIGtDRk51bWJlcklu
dFR5cGUsICZ1c2FnZVZhbHVlKTsKKysgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZW5jb2RlclNw
ZWNzLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpZ2V0a1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlv
bl9Vc2FnZSgpLCB1c2FnZSk7CisrCisrICAgIGlmICh1c2FnZSkgeworKyAgICAgIENGUmVsZWFz
ZSh1c2FnZSk7CisrICAgICAgdXNhZ2UgPSBudWxscHRyOworKyAgICB9CisrCisrICAgIFtzZWxm
IGRlc3Ryb3lDb21wcmVzc2lvblNlc3Npb25dOworKworKyAgICBPU1N0YXR1cyBzdGF0dXMgPQor
KyAgICAgIENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZShudWxscHRyLCAgLy8gdXNlIGRlZmF1bHQg
YWxsb2NhdG9yCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dpZHRoLAorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9oZWlnaHQsCisrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0NvZGVjVHlwZUgyNjQsCisrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW5jb2RlclNwZWNzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZUF0dHJpYnV0ZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwgIC8vIHVzZSBkZWZhdWx0IGNvbXByZXNzZWQgZGF0YSBhbGxvY2F0b3IKKysgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbk91dHB1dENhbGxiYWNrLAor
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJl9jb21wcmVzc2lvblNlc3Npb24pOworKyAgICBpZiAoc291
cmNlQXR0cmlidXRlcykgeworKyAgICAgIENGUmVsZWFzZShzb3VyY2VBdHRyaWJ1dGVzKTsKKysg
ICAgICBzb3VyY2VBdHRyaWJ1dGVzID0gbnVsbHB0cjsKKysgICAgfQorKyAgICBpZiAoZW5jb2Rl
clNwZWNzKSB7CisrICAgICAgQ0ZSZWxlYXNlKGVuY29kZXJTcGVjcyk7CisrICAgICAgZW5jb2Rl
clNwZWNzID0gbnVsbHB0cjsKKysgICAgfQorKyAgICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7Cisr
ICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKKysgICAgfQorKyNlbmRpZgor
ICAgfQorICNlbmRpZgorICAgW3NlbGYgY29uZmlndXJlQ29tcHJlc3Npb25TZXNzaW9uXTsKKyAK
KysjaWYgIWRlZmluZWQoV0VCUlRDX1dFQktJVF9CVUlMRCkKKyAgIC8vIFRoZSBwaXhlbCBidWZm
ZXIgcG9vbCBpcyBkZXBlbmRlbnQgb24gdGhlIGNvbXByZXNzaW9uIHNlc3Npb24gc28gaWYgdGhl
IHNlc3Npb24gaXMgcmVzZXQsIHRoZQorICAgLy8gcG9vbCBzaG91bGQgYmUgcmVzZXQgYXMgd2Vs
bC4KKy0gIF9waXhlbEJ1ZmZlclBvb2wgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkdldFBpeGVsQnVm
ZmVyUG9vbChfY29tcHJlc3Npb25TZXNzaW9uKTsKKy0KKysgIF9waXhlbEJ1ZmZlclBvb2wgPSBD
b21wcmVzc2lvblNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2woX2NvbXByZXNzaW9uU2Vzc2lvbik7
CisrI2VuZGlmCisgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOworIH0KKyAKK0BAIC02
MTgsNyArNzUyLDExIEBAIC0gKHZvaWQpY29uZmlndXJlQ29tcHJlc3Npb25TZXNzaW9uIHsKKyAg
IFNldFZUU2Vzc2lvblByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9u
UHJvcGVydHlLZXlfUmVhbFRpbWUsIHRydWUpOworICAgU2V0VlRTZXNzaW9uUHJvcGVydHkoX2Nv
bXByZXNzaW9uU2Vzc2lvbiwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9Qcm9maWxlTGV2ZWws
IF9wcm9maWxlKTsKKyAgIFNldFZUU2Vzc2lvblByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24s
IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfQWxsb3dGcmFtZVJlb3JkZXJpbmcsIGZhbHNlKTsK
Ky0gIFtzZWxmIHNldEVuY29kZXJCaXRyYXRlQnBzOl90YXJnZXRCaXRyYXRlQnBzIGZyYW1lUmF0
ZTpfZW5jb2RlckZyYW1lUmF0ZV07CisrI2lmIEVOQUJMRV9WQ1BfRU5DT0RFUgorKyAgaWYgKGF1
dG8ga2V5ID0gZ2V0a1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9Vc2FnZSgpKQorKyAgICAg
IFNldFZUU2Vzc2lvblByb3BlcnR5KF9jb21wcmVzc2lvblNlc3Npb24sIChfX2JyaWRnZSBDRlN0
cmluZ1JlZilrZXksIDEpOworKyNlbmRpZgorKyAgW3NlbGYgc2V0RW5jb2RlckJpdHJhdGVCcHM6
X3RhcmdldEJpdHJhdGVCcHNdOworICAgLy8gVE9ETyh0a2NoaW4pOiBMb29rIGF0IGVudHJvcHkg
bW9kZSBhbmQgY29sb3JzcGFjZSBtYXRyaWNlcy4KKyAgIC8vIFRPRE8odGtjaGluKTogSW52ZXN0
aWdhdGUgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHdheSB0byBtYWtlIHRoaXMgd29yay4KKyAgIC8v
IE1heSBuZWVkIGl0IHRvIGludGVyb3Agd2l0aCBBbmRyb2lkLiBDdXJyZW50bHkgdGhpcyBjYWxs
IGp1c3QgZmFpbHMuCitAQCAtNjM1LDcgKzc3Myw3IEBAIC0gKHZvaWQpY29uZmlndXJlQ29tcHJl
c3Npb25TZXNzaW9uIHsKKyAKKyAtICh2b2lkKWRlc3Ryb3lDb21wcmVzc2lvblNlc3Npb24gewor
ICAgaWYgKF9jb21wcmVzc2lvblNlc3Npb24pIHsKKy0gICAgVlRDb21wcmVzc2lvblNlc3Npb25J
bnZhbGlkYXRlKF9jb21wcmVzc2lvblNlc3Npb24pOworKyAgICBDb21wcmVzc2lvblNlc3Npb25J
bnZhbGlkYXRlKF9jb21wcmVzc2lvblNlc3Npb24pOworICAgICBDRlJlbGVhc2UoX2NvbXByZXNz
aW9uU2Vzc2lvbik7CisgICAgIF9jb21wcmVzc2lvblNlc3Npb24gPSBudWxscHRyOworICAgICBf
cGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0cjsKK0BAIC02NDYsMTcgKzc4NCwxNSBAQCAtIChOU1N0
cmluZyAqKWltcGxlbWVudGF0aW9uTmFtZSB7CisgICByZXR1cm4gQCJWaWRlb1Rvb2xib3giOwor
IH0KKyAKKy0tICh2b2lkKXNldEJpdHJhdGVCcHM6KHVpbnQzMl90KWJpdHJhdGVCcHMgZnJhbWVS
YXRlOih1aW50MzJfdClmcmFtZVJhdGUgeworLSAgaWYgKF9lbmNvZGVyQml0cmF0ZUJwcyAhPSBi
aXRyYXRlQnBzIHx8IF9lbmNvZGVyRnJhbWVSYXRlICE9IGZyYW1lUmF0ZSkgeworLSAgICBbc2Vs
ZiBzZXRFbmNvZGVyQml0cmF0ZUJwczpiaXRyYXRlQnBzIGZyYW1lUmF0ZTpmcmFtZVJhdGVdOwor
Ky0gKHZvaWQpc2V0Qml0cmF0ZUJwczoodWludDMyX3QpYml0cmF0ZUJwcyB7CisrICBpZiAoX2Vu
Y29kZXJCaXRyYXRlQnBzICE9IGJpdHJhdGVCcHMpIHsKKysgICAgW3NlbGYgc2V0RW5jb2RlckJp
dHJhdGVCcHM6Yml0cmF0ZUJwc107CisgICB9CisgfQorIAorLS0gKHZvaWQpc2V0RW5jb2RlckJp
dHJhdGVCcHM6KHVpbnQzMl90KWJpdHJhdGVCcHMgZnJhbWVSYXRlOih1aW50MzJfdClmcmFtZVJh
dGUgeworKy0gKHZvaWQpc2V0RW5jb2RlckJpdHJhdGVCcHM6KHVpbnQzMl90KWJpdHJhdGVCcHMg
eworICAgaWYgKF9jb21wcmVzc2lvblNlc3Npb24pIHsKKyAgICAgU2V0VlRTZXNzaW9uUHJvcGVy
dHkoX2NvbXByZXNzaW9uU2Vzc2lvbiwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9BdmVyYWdl
Qml0UmF0ZSwgYml0cmF0ZUJwcyk7CistICAgIFNldFZUU2Vzc2lvblByb3BlcnR5KAorLSAgICAg
ICAgX2NvbXByZXNzaW9uU2Vzc2lvbiwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3Rl
ZEZyYW1lUmF0ZSwgZnJhbWVSYXRlKTsKKyAKKyAgICAgLy8gVE9ETyh0a2NoaW4pOiBBZGQgYSBo
ZWxwZXIgbWV0aG9kIHRvIHNldCBhcnJheSB2YWx1ZS4KKyAgICAgaW50NjRfdCBkYXRhTGltaXRC
eXRlc1BlclNlY29uZFZhbHVlID0KK0BAIC02NjgsNyArODA0LDcgQEAgLSAodm9pZClzZXRFbmNv
ZGVyQml0cmF0ZUJwczoodWludDMyX3QpYml0cmF0ZUJwcyBmcmFtZVJhdGU6KHVpbnQzMl90KWZy
YW1lUmF0ZQorICAgICAgICAgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
TnVtYmVyU0ludDY0VHlwZSwgJm9uZVNlY29uZFZhbHVlKTsKKyAgICAgY29uc3Qgdm9pZCAqbnVt
c1syXSA9IHtieXRlc1BlclNlY29uZCwgb25lU2Vjb25kfTsKKyAgICAgQ0ZBcnJheVJlZiBkYXRh
UmF0ZUxpbWl0cyA9IENGQXJyYXlDcmVhdGUobnVsbHB0ciwgbnVtcywgMiwgJmtDRlR5cGVBcnJh
eUNhbGxCYWNrcyk7CistICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5
KAorKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBDb21wcmVzc2lvblNlc3Npb25TZXRQcm9wZXJ0eSgK
KyAgICAgICAgIF9jb21wcmVzc2lvblNlc3Npb24sIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlf
RGF0YVJhdGVMaW1pdHMsIGRhdGFSYXRlTGltaXRzKTsKKyAgICAgaWYgKGJ5dGVzUGVyU2Vjb25k
KSB7CisgICAgICAgQ0ZSZWxlYXNlKGJ5dGVzUGVyU2Vjb25kKTsKK0BAIC02ODAsMTEgKzgxNiwx
MCBAQCAtICh2b2lkKXNldEVuY29kZXJCaXRyYXRlQnBzOih1aW50MzJfdCliaXRyYXRlQnBzIGZy
YW1lUmF0ZToodWludDMyX3QpZnJhbWVSYXRlCisgICAgICAgQ0ZSZWxlYXNlKGRhdGFSYXRlTGlt
aXRzKTsKKyAgICAgfQorICAgICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CistICAgICAgUlRDX0xP
RyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBzZXQgZGF0YSByYXRlIGxpbWl0IHdpdGggY29kZTog
IiA8PCBzdGF0dXM7CisrICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBzZXQg
ZGF0YSByYXRlIGxpbWl0IjsKKyAgICAgfQorIAorICAgICBfZW5jb2RlckJpdHJhdGVCcHMgPSBi
aXRyYXRlQnBzOworLSAgICBfZW5jb2RlckZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsKKyAgIH0KKyB9
CisgCitAQCAtNjk4LDcgKzgzMyw3IEBAIC0gKHZvaWQpZnJhbWVXYXNFbmNvZGVkOihPU1N0YXR1
cylzdGF0dXMKKyAgICAgICAgICAgICAgIHRpbWVzdGFtcDoodWludDMyX3QpdGltZXN0YW1wCisg
ICAgICAgICAgICAgICAgcm90YXRpb246KFJUQ1ZpZGVvUm90YXRpb24pcm90YXRpb24geworICAg
aWYgKHN0YXR1cyAhPSBub0VycikgeworLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiSDI2NCBl
bmNvZGUgZmFpbGVkIHdpdGggY29kZTogIiA8PCBzdGF0dXM7CisrICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJIMjY0IGVuY29kZSBmYWlsZWQ6ICIgPDwgc3RhdHVzOworICAgICByZXR1cm47Cisg
ICB9CisgICBpZiAoaW5mb0ZsYWdzICYga1ZURW5jb2RlSW5mb19GcmFtZURyb3BwZWQpIHsKK0BA
IC03NDMsNiArODc4LDcgQEAgLSAodm9pZClmcmFtZVdhc0VuY29kZWQ6KE9TU3RhdHVzKXN0YXR1
cworICAgZnJhbWUucm90YXRpb24gPSByb3RhdGlvbjsKKyAgIGZyYW1lLmNvbnRlbnRUeXBlID0g
KF9tb2RlID09IFJUQ1ZpZGVvQ29kZWNNb2RlU2NyZWVuc2hhcmluZykgPyBSVENWaWRlb0NvbnRl
bnRUeXBlU2NyZWVuc2hhcmUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ1ZpZGVvQ29udGVudFR5cGVVbnNwZWNp
ZmllZDsKKysgIGZyYW1lLnNwYXRpYWxJbmRleCA9IF9zaW11bGNhc3RJbmRleDsKKyAgIGZyYW1l
LmZsYWdzID0gd2VicnRjOjpWaWRlb1NlbmRUaW1pbmc6OmtJbnZhbGlkOworIAorICAgaW50IHFw
OworQEAgLTc1OCw5ICs4OTQsODggQEAgLSAodm9pZClmcmFtZVdhc0VuY29kZWQ6KE9TU3RhdHVz
KXN0YXR1cworICAgX2JpdHJhdGVBZGp1c3Rlci0+VXBkYXRlKGZyYW1lLmJ1ZmZlci5sZW5ndGgp
OworIH0KKyAKKy0tIChudWxsYWJsZSBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMgKilzY2Fs
aW5nU2V0dGluZ3MgeworLSAgcmV0dXJuIFtbUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzIGFs
bG9jXSBpbml0V2l0aFRocmVzaG9sZHNMb3c6a0xvd0gyNjRRcFRocmVzaG9sZAorLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhp
Z2g6a0hpZ2hIMjY0UXBUaHJlc2hvbGRdOworKy0gKFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xk
cyAqKXNjYWxpbmdTZXR0aW5ncyB7CisrICByZXR1cm4gW1tSVENWaWRlb0VuY29kZXJRcFRocmVz
aG9sZHMgYWxsb2NdIGluaXRXaXRoVGhyZXNob2xkc0xvdzprTG93SDI2NFFwVGhyZXNob2xkIGhp
Z2g6a0hpZ2hIMjY0UXBUaHJlc2hvbGRdOworK30KKysKKystIChpbnQpc2V0UmF0ZUFsbG9jYXRp
b246KFJUQ1ZpZGVvQml0cmF0ZUFsbG9jYXRpb24gKilhbGxvY2F0aW9uIGZyYW1lcmF0ZToodWlu
dDMyX3QpZnJhbWVyYXRlIHsKKysgIHJldHVybiAwOworK30KKysKKytAZW5kCisrCisrQGltcGxl
bWVudGF0aW9uIFJUQ1ZpZGVvRW5jb2RlckgyNjQgeworKyAgTlNNdXRhYmxlQXJyYXk8UlRDU2lu
Z2xlVmlkZW9FbmNvZGVySDI2NCo+ICpfY29kZWNzOworKyAgUlRDVmlkZW9Db2RlY0luZm8gKl9j
b2RlY0luZm87CisrfQorKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlk
ZW9Db2RlY0luZm8gKiljb2RlY0luZm8geworKyAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsK
KysgICAgX2NvZGVjSW5mbyA9IGNvZGVjSW5mbzsKKysgIH0KKysgIHJldHVybiBzZWxmOworK30K
KysKKystICh2b2lkKXNldENhbGxiYWNrOihSVENWaWRlb0VuY29kZXJDYWxsYmFjayljYWxsYmFj
ayB7CisrICBmb3IgKFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgKmNvZGVjIDogX2NvZGVjcykK
KysgICAgW2NvZGVjIHNldENhbGxiYWNrOmNhbGxiYWNrXTsKKyt9CisrCisrLSAoTlNJbnRlZ2Vy
KXN0YXJ0RW5jb2RlV2l0aFNldHRpbmdzOihSVENWaWRlb0VuY29kZXJTZXR0aW5ncyAqKXNldHRp
bmdzIG51bWJlck9mQ29yZXM6KGludCludW1iZXJPZkNvcmVzIHsKKysgICAgYXV0byBuYXRpdmVD
b2RlY1NldHRpbmdzID0gc2V0dGluZ3MubmF0aXZlVmlkZW9Db2RlYzsKKysKKysgIF9jb2RlY3Mg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKysgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwIDsgaW5kZXggPCBuYXRpdmVDb2RlY1NldHRpbmdzLm51bWJlck9mU2ltdWxjYXN0U3RyZWFt
czsgKytpbmRleCkgeworKyAgICBhdXRvIGNvZGVjID0gW1tSVENTaW5nbGVWaWRlb0VuY29kZXJI
MjY0IGFsbG9jXSBpbml0V2l0aENvZGVjSW5mbzpfY29kZWNJbmZvIHNpbXVsY2FzdEluZGV4Omlu
ZGV4XTsKKysgICAgW19jb2RlY3MgYWRkT2JqZWN0OmNvZGVjXTsKKysKKysgICAgYXV0byBjb2Rl
Y1NldHRpbmdzID0gbmF0aXZlQ29kZWNTZXR0aW5nczsKKysgICAgY29kZWNTZXR0aW5ncy53aWR0
aCA9IG5hdGl2ZUNvZGVjU2V0dGluZ3Muc2ltdWxjYXN0U3RyZWFtW2luZGV4XS53aWR0aDsKKysg
ICAgY29kZWNTZXR0aW5ncy5oZWlnaHQgPSBuYXRpdmVDb2RlY1NldHRpbmdzLnNpbXVsY2FzdFN0
cmVhbVtpbmRleF0uaGVpZ2h0OworKyAgICBjb2RlY1NldHRpbmdzLm1heEJpdHJhdGUgPSBuYXRp
dmVDb2RlY1NldHRpbmdzLnNpbXVsY2FzdFN0cmVhbVtpbmRleF0ubWF4Qml0cmF0ZTsKKysgICAg
Y29kZWNTZXR0aW5ncy50YXJnZXRCaXRyYXRlID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11bGNh
c3RTdHJlYW1baW5kZXhdLnRhcmdldEJpdHJhdGU7CisrICAgIGNvZGVjU2V0dGluZ3MubWluQml0
cmF0ZSA9IG5hdGl2ZUNvZGVjU2V0dGluZ3Muc2ltdWxjYXN0U3RyZWFtW2luZGV4XS5taW5CaXRy
YXRlOworKyAgICBjb2RlY1NldHRpbmdzLnFwTWF4ID0gbmF0aXZlQ29kZWNTZXR0aW5ncy5zaW11
bGNhc3RTdHJlYW1baW5kZXhdLnFwTWF4OworKyAgICBjb2RlY1NldHRpbmdzLmFjdGl2ZSA9IHRy
dWU7CisrCisrICAgIGF1dG8gKnNldHRpbmdzID0gW1tSVENWaWRlb0VuY29kZXJTZXR0aW5ncyBh
bGxvY10gaW5pdFdpdGhOYXRpdmVWaWRlb0NvZGVjOiZjb2RlY1NldHRpbmdzXTsKKysgICAgW2Nv
ZGVjIHN0YXJ0RW5jb2RlV2l0aFNldHRpbmdzOnNldHRpbmdzIG51bWJlck9mQ29yZXM6bnVtYmVy
T2ZDb3Jlc107CisrICB9CisrICByZXR1cm4gMDsKKyt9CisrCisrLSAoTlNJbnRlZ2VyKXJlbGVh
c2VFbmNvZGVyIHsKKysgIGZvciAoUlRDU2luZ2xlVmlkZW9FbmNvZGVySDI2NCAqY29kZWMgOiBf
Y29kZWNzKQorKyAgICBbY29kZWMgcmVsZWFzZUVuY29kZXJdOworKyAgX2NvZGVjcyA9IG5pbDsK
KysgIHJldHVybiAwOworK30KKysKKystIChOU0ludGVnZXIpZW5jb2RlOihSVENWaWRlb0ZyYW1l
ICopZnJhbWUgY29kZWNTcGVjaWZpY0luZm86KG51bGxhYmxlIGlkPFJUQ0NvZGVjU3BlY2lmaWNJ
bmZvPilpbmZvIGZyYW1lVHlwZXM6KE5TQXJyYXk8TlNOdW1iZXIgKj4gKilmcmFtZVR5cGVzIHsK
KysgIGludCByZXN1bHQgPSAwOworKyAgZm9yIChSVENTaW5nbGVWaWRlb0VuY29kZXJIMjY0ICpj
b2RlYyA6IF9jb2RlY3MpCisrICAgIHJlc3VsdCB8PSBbY29kZWMgZW5jb2RlOmZyYW1lIGNvZGVj
U3BlY2lmaWNJbmZvOmluZm8gZnJhbWVUeXBlczpmcmFtZVR5cGVzXTsKKysgIHJldHVybiByZXN1
bHQ7CisrfQorKworKy0gKGludClzZXRSYXRlQWxsb2NhdGlvbjooUlRDVmlkZW9CaXRyYXRlQWxs
b2NhdGlvbiAqKWJpdFJhdGVBbGxvY2F0aW9uIGZyYW1lcmF0ZToodWludDMyX3QpIGZyYW1lcmF0
ZSB7CisrICBpbnQgcmVzdWx0ID0gMDsKKysgIHVuc2lnbmVkIGNvdW50ZXIgPSAwOworKyAgYXV0
byBuYXRpdmVCaXRSYXRlQWxsb2NhdGlvbiA9IGJpdFJhdGVBbGxvY2F0aW9uLm5hdGl2ZVZpZGVv
Qml0cmF0ZUFsbG9jYXRpb247CisrICBmb3IgKFJUQ1NpbmdsZVZpZGVvRW5jb2RlckgyNjQgKmNv
ZGVjIDogX2NvZGVjcykKKysgICAgcmVzdWx0IHw9IFtjb2RlYyBzZXRCaXRyYXRlOm5hdGl2ZUJp
dFJhdGVBbGxvY2F0aW9uLkdldFNwYXRpYWxMYXllclN1bShjb3VudGVyKyspIGZyYW1lcmF0ZTpm
cmFtZXJhdGVdOworKyAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisrLSAoTlNTdHJpbmcgKilpbXBs
ZW1lbnRhdGlvbk5hbWUgeworKyAgcmV0dXJuIEAiVmlkZW9Ub29sYm94IjsKKyt9CisrCisrLSAo
UlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzICopc2NhbGluZ1NldHRpbmdzIHsKKysgIHJldHVy
biBbW1JUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcyBhbGxvY10gaW5pdFdpdGhUaHJlc2hvbGRz
TG93OmtMb3dIMjY0UXBUaHJlc2hvbGQgaGlnaDprSGlnaEgyNjRRcFRocmVzaG9sZF07CisrfQor
KworKy0gKGludClzZXRCaXRyYXRlOih1aW50MzJfdCliaXRyYXRlS2JpdCBmcmFtZXJhdGU6KHVp
bnQzMl90KWZyYW1lcmF0ZSB7CisrICByZXR1cm4gMDsKKyB9CisgCisgQGVuZAorZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Nv
bXBvbmVudHMvdmlkZW9fY29kZWMvVUlEZXZpY2UrSDI2NFByb2ZpbGUubW0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVv
X2NvZGVjL1VJRGV2aWNlK0gyNjRQcm9maWxlLm1tCitpbmRleCA4NTJjM2Q0NzAyZi4uYTAxNWY3
Y2ExNWMgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1VJRGV2aWNlK0gyNjRQcm9maWxl
Lm1tCisrKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
b2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1VJRGV2aWNlK0gyNjRQcm9maWxlLm1tCitAQCAt
MjQsOSArMjQsNiBAQCBzdHJ1Y3QgU3VwcG9ydGVkSDI2NFByb2ZpbGUgeworIAorIGNvbnN0ZXhw
ciBTdXBwb3J0ZWRIMjY0UHJvZmlsZSBrSDI2NE1heFN1cHBvcnRlZFByb2ZpbGVzW10gPSB7Cisg
ICAgIC8vIGlQaG9uZXMgd2l0aCBhdCBsZWFzdCBpT1MgOQorLSAgICB7UlRDRGV2aWNlVHlwZUlQ
aG9uZVhTLCB7a1Byb2ZpbGVIaWdoLCBrTGV2ZWw1XzJ9fSwgICAgICAvLyBodHRwczovL3N1cHBv
cnQuYXBwbGUuY29tL2tiL1NQNzc5CistICAgIHtSVENEZXZpY2VUeXBlSVBob25lWFNNYXgsIHtr
UHJvZmlsZUhpZ2gsIGtMZXZlbDVfMn19LCAgIC8vIGh0dHBzOi8vc3VwcG9ydC5hcHBsZS5jb20v
a2IvU1A3ODAKKy0gICAge1JUQ0RldmljZVR5cGVJUGhvbmVYUiwge2tQcm9maWxlSGlnaCwga0xl
dmVsNV8yfX0sICAgICAgLy8gaHR0cHM6Ly9zdXBwb3J0LmFwcGxlLmNvbS9rYi9TUDc4MQorICAg
ICB7UlRDRGV2aWNlVHlwZUlQaG9uZVgsIHtrUHJvZmlsZUhpZ2gsIGtMZXZlbDVfMn19LCAgICAg
ICAvLyBodHRwczovL3N1cHBvcnQuYXBwbGUuY29tL2tiL1NQNzcwCisgICAgIHtSVENEZXZpY2VU
eXBlSVBob25lOCwge2tQcm9maWxlSGlnaCwga0xldmVsNV8yfX0sICAgICAgIC8vIGh0dHBzOi8v
c3VwcG9ydC5hcHBsZS5jb20va2IvU1A3NjcKKyAgICAge1JUQ0RldmljZVR5cGVJUGhvbmU4UGx1
cywge2tQcm9maWxlSGlnaCwga0xldmVsNV8yfX0sICAgLy8gaHR0cHM6Ly9zdXBwb3J0LmFwcGxl
LmNvbS9rYi9TUDc2OAorZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBv
bmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5jYworaW5kZXggYWM5NTdmMWI0OTcuLjQ2ZGFmNDRl
Y2FjIDEwMDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmNjCisrKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL2hlbHBlcnMuY2MKK0BAIC0zNSwxMiArMzUsMTIgQEAgc3RkOjpzdHJpbmcg
Q0ZTdHJpbmdUb1N0cmluZyhjb25zdCBDRlN0cmluZ1JlZiBjZl9zdHJpbmcpIHsKKyB9CisgCisg
Ly8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KKy12b2lk
IFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAorK3ZvaWQgU2V0VlRT
ZXNzaW9uUHJvcGVydHkoQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBrZXksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IHZhbHVlKSB7CisgICBDRk51bWJlclJlZiBjZk51bSA9CisgICAgICAgQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJnZh
bHVlKTsKKy0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24s
IGtleSwgY2ZOdW0pOworKyAgT1NTdGF0dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNzaW9uU2V0
UHJvcGVydHkoc2Vzc2lvbiwga2V5LCBjZk51bSk7CisgICBDRlJlbGVhc2UoY2ZOdW0pOworICAg
aWYgKHN0YXR1cyAhPSBub0VycikgeworICAgICBzdGQ6OnN0cmluZyBrZXlfc3RyaW5nID0gQ0ZT
dHJpbmdUb1N0cmluZyhrZXkpOworQEAgLTUwLDEzICs1MCwxMyBAQCB2b2lkIFNldFZUU2Vzc2lv
blByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLAorIH0KKyAKKyAvLyBDb252ZW5pZW5jZSBm
dW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgorLXZvaWQgU2V0VlRTZXNzaW9uUHJv
cGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sCisrdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShD
b21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IENGU3RyaW5nUmVmIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZh
bHVlKSB7CisgICBpbnQ2NF90IHZhbHVlXzY0ID0gdmFsdWU7CisgICBDRk51bWJlclJlZiBjZk51
bSA9CisgICAgICAgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVy
U0ludDY0VHlwZSwgJnZhbHVlXzY0KTsKKy0gIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNl
dFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZOdW0pOworKyAgT1NTdGF0dXMgc3RhdHVzID0gQ29t
cHJlc3Npb25TZXNzaW9uU2V0UHJvcGVydHkoc2Vzc2lvbiwga2V5LCBjZk51bSk7CisgICBDRlJl
bGVhc2UoY2ZOdW0pOworICAgaWYgKHN0YXR1cyAhPSBub0VycikgeworICAgICBzdGQ6OnN0cmlu
ZyBrZXlfc3RyaW5nID0gQ0ZTdHJpbmdUb1N0cmluZyhrZXkpOworQEAgLTY2LDkgKzY2LDkgQEAg
dm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwKKyB9CisgCisg
Ly8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBWVCBwcm9wZXJ0eS4KKy12b2lk
IFNldFZUU2Vzc2lvblByb3BlcnR5KFZUU2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBr
ZXksIGJvb2wgdmFsdWUpIHsKKyt2b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KENvbXByZXNzaW9u
U2Vzc2lvblJlZiBzZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIGJvb2wgdmFsdWUpIHsKKyAgIENG
Qm9vbGVhblJlZiBjZl9ib29sID0gKHZhbHVlKSA/IGtDRkJvb2xlYW5UcnVlIDoga0NGQm9vbGVh
bkZhbHNlOworLSAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVydHkoc2Vzc2lv
biwga2V5LCBjZl9ib29sKTsKKysgIE9TU3RhdHVzIHN0YXR1cyA9IENvbXByZXNzaW9uU2Vzc2lv
blNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgY2ZfYm9vbCk7CisgICBpZiAoc3RhdHVzICE9IG5v
RXJyKSB7CisgICAgIHN0ZDo6c3RyaW5nIGtleV9zdHJpbmcgPSBDRlN0cmluZ1RvU3RyaW5nKGtl
eSk7CisgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWVFNlc3Npb25TZXRQcm9wZXJ0eSBmYWls
ZWQgdG8gc2V0OiAiIDw8IGtleV9zdHJpbmcKK0BAIC03NywxMCArNzcsMTAgQEAgdm9pZCBTZXRW
VFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBi
b29sIHZhbHVlKSB7CisgfQorIAorIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZXR0aW5n
IGEgVlQgcHJvcGVydHkuCistdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShWVFNlc3Npb25SZWYg
c2Vzc2lvbiwKKyt2b2lkIFNldFZUU2Vzc2lvblByb3BlcnR5KENvbXByZXNzaW9uU2Vzc2lvblJl
ZiBzZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYga2V5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgdmFsdWUpIHsKKy0gIE9TU3Rh
dHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHNlc3Npb24sIGtleSwgdmFsdWUpOwor
KyAgT1NTdGF0dXMgc3RhdHVzID0gQ29tcHJlc3Npb25TZXNzaW9uU2V0UHJvcGVydHkoc2Vzc2lv
biwga2V5LCB2YWx1ZSk7CisgICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CisgICAgIHN0ZDo6c3Ry
aW5nIGtleV9zdHJpbmcgPSBDRlN0cmluZ1RvU3RyaW5nKGtleSk7CisgICAgIHN0ZDo6c3RyaW5n
IHZhbF9zdHJpbmcgPSBDRlN0cmluZ1RvU3RyaW5nKHZhbHVlKTsKK2RpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL2hlbHBlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9vYmpjL2NvbXBvbmVudHMvdmlkZW9fY29kZWMvaGVscGVycy5oCitpbmRl
eCAwNjgzZWE3OWU1Ni4uMGM2NjllOGJjZTYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVj
L2hlbHBlcnMuaAorKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9oZWxwZXJzLmgKK0BAIC0xNiw2ICsx
Niw4IEBACisgI2luY2x1ZGUgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KKyAjaW5jbHVk
ZSA8c3RyaW5nPgorIAorKyNpbmNsdWRlICJzZGsvV2ViS2l0L0VuY29kZXJVdGlsaXRpZXMuaCIK
KysKKyAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBkaWN0aW9uYXJ5Lgor
IGlubGluZSBDRkRpY3Rpb25hcnlSZWYgQ3JlYXRlQ0ZUeXBlRGljdGlvbmFyeShDRlR5cGVSZWYq
IGtleXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENG
VHlwZVJlZiogdmFsdWVzLAorQEAgLTI5LDE4ICszMSwxOCBAQCBpbmxpbmUgQ0ZEaWN0aW9uYXJ5
UmVmIENyZWF0ZUNGVHlwZURpY3Rpb25hcnkoQ0ZUeXBlUmVmKiBrZXlzLAorIHN0ZDo6c3RyaW5n
IENGU3RyaW5nVG9TdHJpbmcoY29uc3QgQ0ZTdHJpbmdSZWYgY2Zfc3RyaW5nKTsKKyAKKyAvLyBD
b252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgorLXZvaWQgU2V0
VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwg
aW50MzJfdCB2YWx1ZSk7Cisrdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNl
c3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYga2V5LCBpbnQzMl90IHZhbHVlKTsKKyAKKyAv
LyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGluZyBhIFZUIHByb3BlcnR5LgorLXZvaWQg
U2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVmIHNlc3Npb24sCisrdm9pZCBTZXRWVFNl
c3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IHZhbHVlKTsKKyAKKyAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0
dGluZyBhIFZUIHByb3BlcnR5LgorLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9u
UmVmIHNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwgYm9vbCB2YWx1ZSk7Cisrdm9pZCBTZXRWVFNl
c3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ0ZTdHJpbmdSZWYg
a2V5LCBib29sIHZhbHVlKTsKKyAKKyAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Igc2V0dGlu
ZyBhIFZUIHByb3BlcnR5LgorLXZvaWQgU2V0VlRTZXNzaW9uUHJvcGVydHkoVlRTZXNzaW9uUmVm
IHNlc3Npb24sCisrdm9pZCBTZXRWVFNlc3Npb25Qcm9wZXJ0eShDb21wcmVzc2lvblNlc3Npb25S
ZWYgc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGtleSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIHZhbHVlKTsKKyAKK2RpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvb2Jq
Yy9uYXRpdmUvc3JjL29iamNfdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lm1tIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX3Zp
ZGVvX2VuY29kZXJfZmFjdG9yeS5tbQoraW5kZXggZmFmYWQ3NDY2ZWMuLmFlNDUwMzNhNTcwIDEw
MDY0NAorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L29iamMvbmF0aXZlL3NyYy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbQorKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL29iamMvbmF0aXZlL3Ny
Yy9vYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbQorQEAgLTkwLDYgKzkwLDExIEBAIGNsYXNz
IE9iakNWaWRlb0VuY29kZXIgOiBwdWJsaWMgVmlkZW9FbmNvZGVyIHsKKyAgICAgcmV0dXJuIFtl
bmNvZGVyXyBzZXRCaXRyYXRlOmJpdHJhdGUgZnJhbWVyYXRlOmZyYW1lcmF0ZV07CisgICB9Cisg
CisrICBpbnQzMl90IFNldFJhdGVBbGxvY2F0aW9uKGNvbnN0IFZpZGVvQml0cmF0ZUFsbG9jYXRp
b24mIGFsbG9jYXRpb24sIHVpbnQzMl90IGZyYW1lcmF0ZSkgeworKyAgICBhdXRvICpydGNBbGxv
Y2F0aW9uID0gW1tSVENWaWRlb0JpdHJhdGVBbGxvY2F0aW9uIGFsbG9jXSBpbml0V2l0aE5hdGl2
ZVZpZGVvQml0cmF0ZUFsbG9jYXRpb246JmFsbG9jYXRpb25dOworKyAgICByZXR1cm4gW2VuY29k
ZXJfIHNldFJhdGVBbGxvY2F0aW9uOiBydGNBbGxvY2F0aW9uIGZyYW1lcmF0ZTpmcmFtZXJhdGVd
OworKyAgfQorKworICAgVmlkZW9FbmNvZGVyOjpFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbygp
IGNvbnN0IHsKKyAgICAgRW5jb2RlckluZm8gaW5mbzsKKyAgICAgaW5mby5zdXBwb3J0c19uYXRp
dmVfaGFuZGxlID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYTU0
YmRiMDA3OGE0YjgwMDVhMzFiZWZlZDEwZjljYzYzYjRkZTNhLi4yMjk0NjcwMTdmZWE2YmM1ZTMx
YWI1OGMwZmIzNTMxNWM4Mjg5ODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04MSw3ICs4MSw2IEBACiAJCTQxMjk0MDkzMjEyRTEyOEQwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4
X2VuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMjk0MDhGMjEyRTEyOEMwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2VuY29kZXIuaCAqLzsgfTsK
IAkJNDEyOTQwOTQyMTJFMTI4RDAwQUQ5NUU3IC8qIGxpYnZweF92cDhfZGVjb2Rlci5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk0MDkwMjEyRTEy
OEMwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2RlY29kZXIuY2MgKi87IH07CiAJCTQxMjk0MDk1MjEy
RTEyOEQwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2RlY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk0MDkxMjEyRTEyOEMwMEFEOTVFNyAvKiBs
aWJ2cHhfdnA4X2RlY29kZXIuaCAqLzsgfTsKLQkJNDEyOTlCOEIyMTI3MzY1MTAwQjM0MTRCIC8q
IHBhY2VyX2NvbnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUUwMkNENjIxMjczNjNDMDBDMjdDRDYgLyogcGFjZXJfY29udHJvbGxlci5j
YyAqLzsgfTsKIAkJNDEyOTlCOEMyMTI3MzY1MTAwQjM0MTRCIC8qIHNlbmRfdGltZV9oaXN0b3J5
LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMDJD
RDgyMTI3MzYzRDAwQzI3Q0Q2IC8qIHNlbmRfdGltZV9oaXN0b3J5LmNjICovOyB9OwogCQk0MTI5
OUI4RDIxMjczNjUxMDBCMzQxNEIgLyogdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTAyQ0Q3MjEyNzM2
M0MwMEMyN0NENiAvKiB0cmFuc3BvcnRfZmVlZGJhY2tfYWRhcHRlci5oICovOyB9OwogCQk0MTI5
OUI5MTIxMjczNjdCMDBCMzQxNEIgLyogaXNhY192YWQuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk5QjhFMjEyNzM2N0EwMEIzNDE0QiAvKiBpc2Fj
X3ZhZC5jICovOyB9OwpAQCAtMTQyLDcgKzE0MSw2IEBACiAJCTQxM0EyMkExMUZFMThFMDYwMDM3
M0U5OSAvKiB0ZXN0YmFzZTY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTNBMjE0NDFGRTE4RDRDMDAzNzNFOTkgLyogdGVzdGJhc2U2NC5oICovOyB9
OwogCQk0MTNBMjJBMjFGRTE4RTA2MDAzNzNFOTkgLyogZnVuY3Rpb25fdmlldy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxNDUxRkUxOEQ0QzAw
MzczRTk5IC8qIGZ1bmN0aW9uX3ZpZXcuaCAqLzsgfTsKIAkJNDEzQTIyQTMxRkUxOEUwNjAwMzcz
RTk5IC8qIGZvcm1hdF9tYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxM0EyMTQ3MUZFMThENEQwMDM3M0U5OSAvKiBmb3JtYXRfbWFjcm9zLmgg
Ki87IH07Ci0JCTQxM0EyMkE0MUZFMThFMDYwMDM3M0U5OSAvKiB1bml4ZmlsZXN5c3RlbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxNDgxRkUx
OEQ0RDAwMzczRTk5IC8qIHVuaXhmaWxlc3lzdGVtLmggKi87IH07CiAJCTQxM0EyMkE1MUZFMThF
MDYwMDM3M0U5OSAvKiB0ZXN0ZWNob3NlcnZlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMTQ5MUZFMThENEUwMDM3M0U5OSAvKiB0ZXN0ZWNo
b3NlcnZlci5jYyAqLzsgfTsKIAkJNDEzQTIyQTcxRkUxOEUwNjAwMzczRTk5IC8qIHByb3h5c2Vy
dmVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
QTIxNEMxRkUxOEQ0RjAwMzczRTk5IC8qIHByb3h5c2VydmVyLmNjICovOyB9OwogCQk0MTNBMjJB
ODFGRTE4RTA2MDAzNzNFOTkgLyogYXN5bmNpbnZva2VyLWlubC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxNEQxRkUxOEQ1MDAwMzczRTk5IC8q
IGFzeW5jaW52b2tlci1pbmwuaCAqLzsgfTsKQEAgLTIyOCwxNiArMjI2LDEzIEBACiAJCTQxM0Ey
MzM4MUZFMThFMDcwMDM3M0U5OSAvKiBtYWN1dGlscy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUU0MUZFMThEQjAwMDM3M0U5OSAvKiBtYWN1
dGlscy5jYyAqLzsgfTsKIAkJNDEzQTIzMzkxRkUxOEUwNzAwMzczRTk5IC8qIHRhc2tfcXVldWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUU1
MUZFMThEQjEwMDM3M0U5OSAvKiB0YXNrX3F1ZXVlLmggKi87IH07CiAJCTQxM0EyMzNCMUZFMThF
MDcwMDM3M0U5OSAvKiBiaXRidWZmZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFFNzFGRTE4REIxMDAzNzNFOTkgLyogYml0YnVmZmVyLmNj
ICovOyB9OwotCQk0MTNBMjMzQzFGRTE4RTA3MDAzNzNFOTkgLyogcGF0aHV0aWxzLmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRTgxRkUxOERC
MjAwMzczRTk5IC8qIHBhdGh1dGlscy5jYyAqLzsgfTsKIAkJNDEzQTIzM0QxRkUxOEUwNzAwMzcz
RTk5IC8qIHBoeXNpY2Fsc29ja2V0c2VydmVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRTkxRkUxOERCMjAwMzczRTk5IC8qIHBoeXNpY2Fs
c29ja2V0c2VydmVyLmNjICovOyB9OwogCQk0MTNBMjMzRTFGRTE4RTA3MDAzNzNFOTkgLyogYnl0
ZW9yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNBMjFFQTFGRTE4REIzMDAzNzNFOTkgLyogYnl0ZW9yZGVyLmggKi87IH07CiAJCTQxM0EyMzQy
MUZFMThFMDcwMDM3M0U5OSAvKiB0aHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUVFMUZFMThEQjQwMDM3M0U5OSAvKiB0aHJlYWQuaCAq
LzsgfTsKIAkJNDEzQTIzNDMxRkUxOEUwNzAwMzczRTk5IC8qIGNyYzMyLmNjIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRUYxRkUxOERCNTAwMzcz
RTk5IC8qIGNyYzMyLmNjICovOyB9OwotCQk0MTNBMjM0NTFGRTE4RTA3MDAzNzNFOTkgLyogb3B0
aW9uc2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxM0EyMUYxMUZFMThEQjYwMDM3M0U5OSAvKiBvcHRpb25zZmlsZS5oICovOyB9OwogCQk0MTNB
MjM0NzFGRTE4RTA3MDAzNzNFOTkgLyogc3dhcF9xdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRjMxRkUxOERCNzAwMzczRTk5IC8qIHN3
YXBfcXVldWUuaCAqLzsgfTsKIAkJNDEzQTIzNDgxRkUxOEUwNzAwMzczRTk5IC8qIGRzY3AuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMUY0MUZF
MThEQjcwMDM3M0U5OSAvKiBkc2NwLmggKi87IH07CiAJCTQxM0EyMzQ5MUZFMThFMDcwMDM3M0U5
OSAvKiB0aW1ldXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxM0EyMUY1MUZFMThEQjcwMDM3M0U5OSAvKiB0aW1ldXRpbHMuaCAqLzsgfTsKLQkJ
NDEzQTIzNEExRkUxOEUwNzAwMzczRTk5IC8qIG9wdGlvbnNmaWxlLmNjIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIxRjYxRkUxOERCODAwMzczRTk5
IC8qIG9wdGlvbnNmaWxlLmNjICovOyB9OwogCQk0MTNBMjM0QjFGRTE4RTA3MDAzNzNFOTkgLyog
dHlwZV90cmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxM0EyMUY3MUZFMThEQjgwMDM3M0U5OSAvKiB0eXBlX3RyYWl0cy5oICovOyB9OwogCQk0
MTNBMjM0QzFGRTE4RTA3MDAzNzNFOTkgLyogcmFuZG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjFGODFGRTE4REI5MDAzNzNFOTkgLyogcmFu
ZG9tLmggKi87IH07CiAJCTQxM0EyMzREMUZFMThFMDcwMDM3M0U5OSAvKiBzb2NrZXRhZGRyZXNz
cGFpci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
M0EyMUY5MUZFMThEQjkwMDM3M0U5OSAvKiBzb2NrZXRhZGRyZXNzcGFpci5jYyAqLzsgfTsKQEAg
LTI1NSw3ICsyNTAsNiBAQAogCQk0MTNBMjM1QzFGRTE4RTA3MDAzNzNFOTkgLyogYmluZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyMDkxRkUx
OERDMDAwMzczRTk5IC8qIGJpbmQuaCAqLzsgfTsKIAkJNDEzQTIzNUQxRkUxOEUwNzAwMzczRTk5
IC8qIGd1bml0X3Byb2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxM0EyMjBBMUZFMThEQzAwMDM3M0U5OSAvKiBndW5pdF9wcm9kLmggKi87IH07CiAJ
CTQxM0EyMzVFMUZFMThFMDcwMDM3M0U5OSAvKiBhc3luY3NvY2tldC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyMEIxRkUxOERDMTAwMzczRTk5
IC8qIGFzeW5jc29ja2V0LmggKi87IH07Ci0JCTQxM0EyMzVGMUZFMThFMDcwMDM3M0U5OSAvKiBu
b29wLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
QTIyMEMxRkUxOERDMTAwMzczRTk5IC8qIG5vb3AuY2MgKi87IH07CiAJCTQxM0EyMzYwMUZFMThF
MDcwMDM3M0U5OSAvKiByYXRlX2xpbWl0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjBEMUZFMThEQzIwMDM3M0U5OSAvKiByYXRlX2xpbWl0
ZXIuaCAqLzsgfTsKIAkJNDEzQTIzNjExRkUxOEUwNzAwMzczRTk5IC8qIHNvY2tldGFkYXB0ZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjIw
RTFGRTE4REMyMDAzNzNFOTkgLyogc29ja2V0YWRhcHRlcnMuaCAqLzsgfTsKIAkJNDEzQTIzNjIx
RkUxOEUwNzAwMzczRTk5IC8qIHJhdGV0cmFja2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyMEYxRkUxOERDMjAwMzczRTk5IC8qIHJhdGV0
cmFja2VyLmNjICovOyB9OwpAQCAtMjg3LDcgKzI4MSw2IEBACiAJCTQxM0EyMzhEMUZFMThFMDcw
MDM3M0U5OSAvKiByYXRlX2xpbWl0ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjIzQTFGRTE4REQ4MDAzNzNFOTkgLyogcmF0ZV9saW1pdGVy
LmNjICovOyB9OwogCQk0MTNBMjM4RTFGRTE4RTA3MDAzNzNFOTkgLyogYnVmZmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjIzQjFGRTE4REQ5
MDAzNzNFOTkgLyogYnVmZmVyLmggKi87IH07CiAJCTQxM0EyMzhGMUZFMThFMDcwMDM3M0U5OSAv
KiBldmVudF90cmFjZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTNBMjIzQzFGRTE4REQ5MDAzNzNFOTkgLyogZXZlbnRfdHJhY2VyLmNjICovOyB9
OwotCQk0MTNBMjM5MDFGRTE4RTA4MDAzNzNFOTkgLyogcGF0aHV0aWxzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjIzRDFGRTE4REQ5MDAzNzNF
OTkgLyogcGF0aHV0aWxzLmggKi87IH07CiAJCTQxM0EyMzkyMUZFMThFMDgwMDM3M0U5OSAvKiBz
c2xyb290cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzQTIyM0YxRkUxOEREQTAwMzczRTk5IC8qIHNzbHJvb3RzLmggKi87IH07CiAJCTQxM0EyMzk1
MUZFMThFMDgwMDM3M0U5OSAvKiBodHRwY29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI0MjFGRTE4RERCMDAzNzNFOTkgLyogaHR0cGNv
bW1vbi5oICovOyB9OwogCQk0MTNBMjM5NjFGRTE4RTA4MDAzNzNFOTkgLyogYXN5bmNzb2NrZXQu
Y2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI0
MzFGRTE4RERDMDAzNzNFOTkgLyogYXN5bmNzb2NrZXQuY2MgKi87IH07CkBAIC0zMDYsMTIgKzI5
OSwxMCBAQAogCQk0MTNBMjNBRTFGRTE4RTA4MDAzNzNFOTkgLyogc2VxdWVuY2VkX3Rhc2tfY2hl
Y2tlcl9pbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTNBMjI1QjFGRTE4REU2MDAzNzNFOTkgLyogc2VxdWVuY2VkX3Rhc2tfY2hlY2tlcl9pbXBs
LmggKi87IH07CiAJCTQxM0EyM0FGMUZFMThFMDgwMDM3M0U5OSAvKiBzc2xmaW5nZXJwcmludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNUMx
RkUxOERFNjAwMzczRTk5IC8qIHNzbGZpbmdlcnByaW50LmggKi87IH07CiAJCTQxM0EyM0IxMUZF
MThFMDgwMDM3M0U5OSAvKiBzdHJpbmdpemVfbWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI1RTFGRTE4REU3MDAzNzNFOTkgLyogc3Ry
aW5naXplX21hY3Jvcy5oICovOyB9OwotCQk0MTNBMjNCNTFGRTE4RTA4MDAzNzNFOTkgLyogZmls
ZXV0aWxzLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzQTIyNjIxRkUxOERFOTAwMzczRTk5IC8qIGZpbGV1dGlscy5jYyAqLzsgfTsKIAkJNDEzQTIz
QjcxRkUxOEUwODAwMzczRTk5IC8qIGV2ZW50LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyNjQxRkUxOERFQjAwMzczRTk5IC8qIGV2ZW50LmNj
ICovOyB9OwogCQk0MTNBMjNCOTFGRTE4RTA4MDAzNzNFOTkgLyogc29ja2V0c2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI2NjFGRTE4
REVDMDAzNzNFOTkgLyogc29ja2V0c2VydmVyLmggKi87IH07CiAJCTQxM0EyM0JBMUZFMThFMDgw
MDM3M0U5OSAvKiBzaWdzbG90dGVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI2NzFGRTE4REVDMDAzNzNFOTkgLyogc2lnc2xvdHRlc3Rl
ci5oICovOyB9OwogCQk0MTNBMjNCQzFGRTE4RTA4MDAzNzNFOTkgLyogZmxhZ3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjY5MUZFMThERUYw
MDM3M0U5OSAvKiBmbGFncy5oICovOyB9OwotCQk0MTNBMjNCRDFGRTE4RTA4MDAzNzNFOTkgLyog
ZmlsZXV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTNBMjI2QTFGRTE4REYwMDAzNzNFOTkgLyogZmlsZXV0aWxzLmggKi87IH07CiAJCTQxM0Ey
M0JFMUZFMThFMDgwMDM3M0U5OSAvKiBsb2dzaW5rcy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjZCMUZFMThERjAwMDM3M0U5OSAvKiBsb2dz
aW5rcy5jYyAqLzsgfTsKIAkJNDEzQTIzQzAxRkUxOEUwODAwMzczRTk5IC8qIG51bGxzb2NrZXRz
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
M0EyMjZEMUZFMThERjEwMDM3M0U5OSAvKiBudWxsc29ja2V0c2VydmVyLmggKi87IH07CiAJCTQx
M0EyM0MxMUZFMThFMDgwMDM3M0U5OSAvKiBzc2xzdHJlYW1hZGFwdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI2RTFGRTE4REYxMDAzNzNF
OTkgLyogc3Nsc3RyZWFtYWRhcHRlci5oICovOyB9OwpAQCAtMzMxLDcgKzMyMiw2IEBACiAJCTQx
M0EyM0Q4MUZFMThFMDgwMDM3M0U5OSAvKiBmaWxlX3Bvc2l4LmNjIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQTIyODUxRkUxOERGQzAwMzczRTk5IC8q
IGZpbGVfcG9zaXguY2MgKi87IH07CiAJCTQxM0EyM0Q5MUZFMThFMDgwMDM3M0U5OSAvKiB0ZXN0
dXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
M0EyMjg2MUZFMThERkMwMDM3M0U5OSAvKiB0ZXN0dXRpbHMuaCAqLzsgfTsKIAkJNDEzQTIzREEx
RkUxOEUwODAwMzczRTk5IC8qIGZpbGVyb3RhdGluZ3N0cmVhbS5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjg3MUZFMThERkQwMDM3M0U5OSAv
KiBmaWxlcm90YXRpbmdzdHJlYW0uY2MgKi87IH07Ci0JCTQxM0EyM0REMUZFMThFMDgwMDM3M0U5
OSAvKiB0aHJlYWRfZGFyd2luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDEzQTIyOEExRkUxOERGRTAwMzczRTk5IC8qIHRocmVhZF9kYXJ3aW4ubW0g
Ki87IH07CiAJCTQxM0EyM0RFMUZFMThFMDgwMDM3M0U5OSAvKiB0YXNrX3F1ZXVlX2djZC5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0EyMjhCMUZF
MThERkUwMDM3M0U5OSAvKiB0YXNrX3F1ZXVlX2djZC5jYyAqLzsgfTsKIAkJNDEzQTIzREYxRkUx
OEUwODAwMzczRTk5IC8qIGZpcmV3YWxsc29ja2V0c2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI4QzFGRTE4REZFMDAzNzNFOTkgLyog
ZmlyZXdhbGxzb2NrZXRzZXJ2ZXIuaCAqLzsgfTsKIAkJNDEzQTIzRTIxRkUxOEUwODAwMzczRTk5
IC8qIGNwdV90aW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTNBMjI5MDFGRTE4RTAwMDAzNzNFOTkgLyogY3B1X3RpbWUuaCAqLzsgfTsKQEAgLTM0
Miw3ICszMzIsNiBAQAogCQk0MTNBMjNFQjFGRTE4RTA4MDAzNzNFOTkgLyogbG9jYXRpb24uY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI5OTFG
RTE4RTAzMDAzNzNFOTkgLyogbG9jYXRpb24uY2MgKi87IH07CiAJCTQxM0EyM0VDMUZFMThFMDgw
MDM3M0U5OSAvKiBsb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDEzQTIyOUExRkUxOEUwNDAwMzczRTk5IC8qIGxvY2F0aW9uLmggKi87IH07
CiAJCTQxM0EyM0VEMUZFMThFMDgwMDM3M0U5OSAvKiBpcGFkZHJlc3MuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI5QjFGRTE4RTA0MDAzNzNF
OTkgLyogaXBhZGRyZXNzLmNjICovOyB9OwotCQk0MTNBMjNFRTFGRTE4RTA4MDAzNzNFOTkgLyog
bm9vcC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
M0EyMjlDMUZFMThFMDQwMDM3M0U5OSAvKiBub29wLm1tICovOyB9OwogCQk0MTNBMjNFRjFGRTE4
RTA4MDAzNzNFOTkgLyogcmFjZV9jaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjI5RDFGRTE4RTA1MDAzNzNFOTkgLyogcmFjZV9jaGVj
a2VyLmggKi87IH07CiAJCTQxM0EyM0YxMUZFMThFMDgwMDM3M0U5OSAvKiBzc2xmaW5nZXJwcmlu
dC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0Ey
MjlGMUZFMThFMDYwMDM3M0U5OSAvKiBzc2xmaW5nZXJwcmludC5jYyAqLzsgfTsKIAkJNDEzQTIz
RjIxRkUxOEUwODAwMzczRTk5IC8qIGJ5dGVidWZmZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNBMjJBMDFGRTE4RTA2MDAzNzNFOTkgLyogYnl0
ZWJ1ZmZlci5jYyAqLzsgfTsKQEAgLTQxMiwxMSArNDAxLDggQEAKIAkJNDEzRTY3NkQyMTY5ODU0
QjAwRUYzN0VEIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5NTQwMDIxNjk4NTFGMDAyODI2
NkIgLyogUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5tbSAqLzsgfTsKIAkJNDEzRTY3NzIy
MTY5ODYzQjAwRUYzN0VEIC8qIHRlbXBvcmFsX2xheWVyc19jaGVja2VyLmNjIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3NkUyMTY5ODYzQTAwRUYz
N0VEIC8qIHRlbXBvcmFsX2xheWVyc19jaGVja2VyLmNjICovOyB9OwogCQk0MTNFNjc3MzIxNjk4
NjNCMDBFRjM3RUQgLyogbGlidnB4X2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3NkYyMTY5ODYzQTAwRUYzN0VEIC8qIGxpYnZw
eF9pbnRlcmZhY2UuaCAqLzsgfTsKLQkJNDEzRTY3NzQyMTY5ODYzQjAwRUYzN0VEIC8qIHZwOF90
ZW1wb3JhbF9sYXllcnMuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTNFNjc3MDIxNjk4NjNCMDBFRjM3RUQgLyogdnA4X3RlbXBvcmFsX2xheWVycy5j
YyAqLzsgfTsKIAkJNDEzRTY3NzUyMTY5ODYzQjAwRUYzN0VEIC8qIGxpYnZweF9pbnRlcmZhY2Uu
Y2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc3
MTIxNjk4NjNCMDBFRjM3RUQgLyogbGlidnB4X2ludGVyZmFjZS5jYyAqLzsgfTsKIAkJNDEzRTY3
NzYyMTY5ODY2MTAwRUYzN0VEIC8qIFJUQ1ZpZGVvQ29kZWNDb25zdGFudHMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5NTNGRjIxNjk4NTFGMDAy
ODI2NkIgLyogUlRDVmlkZW9Db2RlY0NvbnN0YW50cy5tbSAqLzsgfTsKLQkJNDEzRTY3NzkyMTY5
ODY3QTAwRUYzN0VEIC8qIGNoYW5uZWxfcmVjZWl2ZV9wcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3NzcyMTY5ODY3QTAwRUYzN0VEIC8q
IGNoYW5uZWxfcmVjZWl2ZV9wcm94eS5oICovOyB9OwotCQk0MTNFNjc3QTIxNjk4NjdBMDBFRjM3
RUQgLyogY2hhbm5lbF9yZWNlaXZlX3Byb3h5LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3NzgyMTY5ODY3QTAwRUYzN0VEIC8qIGNoYW5uZWxf
cmVjZWl2ZV9wcm94eS5jYyAqLzsgfTsKIAkJNDEzRTY3N0QyMTY5ODZBRTAwRUYzN0VEIC8qIHJ0
cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc3QjIxNjk4NkFEMDBFRjM3RUQgLyogcnRwX2hlYWRlcl9l
eHRlbnNpb25fc2l6ZS5jYyAqLzsgfTsKIAkJNDEzRTY3N0UyMTY5ODZBRTAwRUYzN0VEIC8qIHJ0
cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxM0U2NzdDMjE2OTg2QUUwMEVGMzdFRCAvKiBydHBfaGVhZGVyX2V4
dGVuc2lvbl9zaXplLmggKi87IH07CiAJCTQxM0U2NzgxMjE2OTg3MEYwMEVGMzdFRCAvKiBzdmNf
Y29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNFNjc3RjIxNjk4NzBGMDBFRjM3RUQgLyogc3ZjX2NvbmZpZy5oICovOyB9OwpAQCAtNDM0LDcg
KzQyMCw2IEBACiAJCTQxM0U2NzlCMjE2OTg4NjIwMEVGMzdFRCAvKiBhZ2MyX2NvbW1vbi5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzlBMjE2
OTg4NjIwMEVGMzdFRCAvKiBhZ2MyX2NvbW1vbi5jYyAqLzsgfTsKIAkJNDEzRTY3QTAyMTY5ODg5
NTAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3OUMyMTY5ODg5NDAwRUYzN0VE
IC8qIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5oICovOyB9OwogCQk0MTNFNjdBMTIxNjk4
ODk1MDBFRjM3RUQgLyogUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3OUQyMTY5ODg5NDAwRUYzN0VE
IC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIuaCAqLzsgfTsKLQkJNDEzRTY3QTIyMTY5ODg5
NTAwRUYzN0VEIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIubSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzlFMjE2OTg4OTQwMEVGMzdFRCAv
KiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0gKi87IH07CiAJCTQxM0U2N0EzMjE2OTg4OTUw
MEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMubSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0U2NzlGMjE2OTg4OTUwMEVGMzdFRCAv
KiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMubSAqLzsgfTsKIAkJNDEzRTY3QTUyMTY5ODhE
QzAwRUYzN0VEIC8qIHZpZGVvX3N0cmVhbV9lbmNvZGVyX29ic2VydmVyLmNjIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTY3QTQyMTY5ODhEQzAwRUYz
N0VEIC8qIHZpZGVvX3N0cmVhbV9lbmNvZGVyX29ic2VydmVyLmNjICovOyB9OwogCQk0MTQwQjgy
MDFFNEUzMzgzMDA3NDA5RTYgLyogYXVkaW9fZW5jb2Rlcl9wY20uY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQwQjgxODFFNEUzMzgzMDA3NDA5RTYg
LyogYXVkaW9fZW5jb2Rlcl9wY20uY2MgKi87IH07CkBAIC01MjUsNyArNTEwLDYgQEAKIAkJNDE0
NUU0QzYxRUY4OTZENzAwRkNGNkU2IC8qIHJ0Y3N0YXRzcmVwb3J0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ1RTRDMjFFRjg5NkNFMDBGQ0Y2RTYg
LyogcnRjc3RhdHNyZXBvcnQuaCAqLzsgfTsKIAkJNDE0NUU0QzcxRUY4OTZENzAwRkNGNkU2IC8q
IHJ0Y3N0YXRzX29iamVjdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNDVFNEMzMUVGODk2RDIwMEZDRjZFNiAvKiBydGNzdGF0c19vYmplY3RzLmgg
Ki87IH07CiAJCTQxNDVFNEM4MUVGODk2RDcwMEZDRjZFNiAvKiBydGNzdGF0cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NUU0QzQxRUY4OTZENzAw
RkNGNkU2IC8qIHJ0Y3N0YXRzLmggKi87IH07Ci0JCTQxNDVFNENBMUVGOENCMzIwMEZDRjZFNiAv
KiBjcmVhdGVwZWVyY29ubmVjdGlvbmZhY3RvcnkuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ1RTRDOTFFRjhDQjMxMDBGQ0Y2RTYgLyogY3JlYXRl
cGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjICovOyB9OwogCQk0MTQ1RTRDQzFFRjhDQjhCMDBGQ0Y2
RTYgLyogcnRwdHJhbnNwb3J0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE0NUU0Q0IxRUY4Q0I4QTAwRkNGNkU2IC8qIHJ0cHRyYW5zcG9ydC5jYyAq
LzsgfTsKIAkJNDE0NUU0Q0UxRUY4Q0I5NTAwRkNGNkU2IC8qIHJ0cHRyYW5zcG9ydC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NUU0Q0QxRUY4Q0I5
NDAwRkNGNkU2IC8qIHJ0cHRyYW5zcG9ydC5oICovOyB9OwogCQk0MTQ1RTREMTFFRjhDQzIwMDBG
Q0Y2RTYgLyogd2VicnRjdmlkZW9lbmdpbmUuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ1RTRDRjFFRjhDQzE3MDBGQ0Y2RTYgLyogd2VicnRjdmlk
ZW9lbmdpbmUuY2MgKi87IH07CkBAIC01NjEsNyArNTQ1LDYgQEAKIAkJNDE1RjFGQUUyMTI3MkZC
QTAwMDY0Q0JGIC8qIGZpeGVkX2RpZ2l0YWxfbGV2ZWxfZXN0aW1hdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJERjIxMjcyRjg0MDAxRDVE
N0IgLyogZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCAqLzsgfTsKIAkJNDE1RjFGQUYy
MTI3MkZCQTAwMDY0Q0JGIC8qIGdhaW5fYXBwbGllci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4QkRFMjEyNzJGODQwMDFENUQ3QiAvKiBnYWlu
X2FwcGxpZXIuY2MgKi87IH07CiAJCTQxNUYxRkIwMjEyNzJGQkEwMDA2NENCRiAvKiBnYWluX2Fw
cGxpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
QTA4QkU3MjEyNzJGODYwMDFENUQ3QiAvKiBnYWluX2FwcGxpZXIuaCAqLzsgfTsKLQkJNDE1RjFG
QjEyMTI3MkZCQTAwMDY0Q0JGIC8qIGdhaW5fY3VydmVfYXBwbGllci5jYyBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4QkUwMjEyNzJGODUwMDFENUQ3
QiAvKiBnYWluX2N1cnZlX2FwcGxpZXIuY2MgKi87IH07CiAJCTQxNUYxRkIyMjEyNzJGQkEwMDA2
NENCRiAvKiBpbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4QkUxMjEyNzJGODUwMDFENUQ3QiAvKiBpbnRl
cnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYyAqLzsgfTsKIAkJNDE1RjFGQjMyMTI3MkZCQTAwMDY0Q0JG
IC8qIGxpbWl0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQTA4QkVBMjEyNzJGODYwMDFENUQ3QiAvKiBsaW1pdGVyLmggKi87IH07CiAJCTQxNUYx
RkI0MjEyNzJGQkEwMDA2NENCRiAvKiBub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4QkUyMjEyNzJGODUw
MDFENUQ3QiAvKiBub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuaCAqLzsgfTsKQEAgLTY0Niw5ICs2
MjksNiBAQAogCQk0MTZEM0JFMDIxMjczMUMyMDA3NzVGMDkgLyogYmlxdWFkX2ZpbHRlci5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDZCNDVFMjEy
NzMxQTAwMDhGOTM1MyAvKiBiaXF1YWRfZmlsdGVyLmNjICovOyB9OwogCQk0MTZEM0JFMTIxMjcz
MUMyMDA3NzVGMDkgLyogYmlxdWFkX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENkI0NjMyMTI3MzFBMjAwOEY5MzUzIC8qIGJpcXVhZF9m
aWx0ZXIuaCAqLzsgfTsKIAkJNDE2RDNCRTIyMTI3MzFDMjAwNzc1RjA5IC8qIGRvd25fc2FtcGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENkI0
NjAyMTI3MzFBMTAwOEY5MzUzIC8qIGRvd25fc2FtcGxlci5oICovOyB9OwotCQk0MTZEM0JFMzIx
MjczMUMyMDA3NzVGMDkgLyogZml4ZWRfZ2Fpbl9jb250cm9sbGVyLmNjIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENkI0NjUyMTI3MzFBMjAwOEY5MzUz
IC8qIGZpeGVkX2dhaW5fY29udHJvbGxlci5jYyAqLzsgfTsKLQkJNDE2RDNCRTQyMTI3MzFDMjAw
Nzc1RjA5IC8qIGZpeGVkX2dhaW5fY29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENkI0NjcyMTI3MzFBMzAwOEY5MzUzIC8qIGZpeGVk
X2dhaW5fY29udHJvbGxlci5oICovOyB9OwotCQk0MTZEM0JFNTIxMjczMUMyMDA3NzVGMDkgLyog
Z2Fpbl9jdXJ2ZV9hcHBsaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUQ2QjQ2OTIxMjczMUEzMDA4RjkzNTMgLyogZ2Fpbl9jdXJ2ZV9hcHBsaWVy
LmggKi87IH07CiAJCTQxNkQzQkU2MjEyNzMxQzIwMDc3NUYwOSAvKiBsaW1pdGVyLmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENkI0NzAyMTI3MzFB
NjAwOEY5MzUzIC8qIGxpbWl0ZXIuY2MgKi87IH07CiAJCTQxNkQzQkU3MjEyNzMxQzIwMDc3NUYw
OSAvKiBub2lzZV9sZXZlbF9lc3RpbWF0b3IuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQ2QjQ2MTIxMjczMUExMDA4RjkzNTMgLyogbm9pc2VfbGV2
ZWxfZXN0aW1hdG9yLmNjICovOyB9OwogCQk0MTZEM0JFODIxMjczMUMyMDA3NzVGMDkgLyogbm9p
c2Vfc3BlY3RydW1fZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFENkI0NkEyMTI3MzFBMzAwOEY5MzUzIC8qIG5vaXNlX3NwZWN0cnVt
X2VzdGltYXRvci5jYyAqLzsgfTsKQEAgLTY4Myw5ICs2NjMsNyBAQAogCQk0MTc5NTNDQzIxNjk4
MkRCMDAyODI2NkIgLyogUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MjI1RUQyMTY5ODFGMjAwQTkxQzlC
IC8qIFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5tbSAqLzsgfTsKIAkJNDE3OTUzRDMyMTY5ODM0
RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzk1M0NEMjE2OTgzNEUwMDI4MjY2QiAvKiBjaGFubmVsX3Nl
bmQuY2MgKi87IH07CiAJCTQxNzk1M0Q0MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzk1M0NF
MjE2OTgzNEUwMDI4MjY2QiAvKiBjaGFubmVsX3NlbmQuaCAqLzsgfTsKLQkJNDE3OTUzRDUyMTY5
ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZF9wcm94eS5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzk1M0NGMjE2OTgzNEUwMDI4MjY2QiAvKiBj
aGFubmVsX3NlbmRfcHJveHkuY2MgKi87IH07CiAJCTQxNzk1M0Q2MjE2OTgzNEYwMDI4MjY2QiAv
KiBjaGFubmVsX3JlY2VpdmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNzk1M0QwMjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3JlY2VpdmUuaCAq
LzsgfTsKLQkJNDE3OTUzRDcyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZF9wcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTUzRDEy
MTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZF9wcm94eS5oICovOyB9OwogCQk0MTc5NTNE
ODIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9yZWNlaXZlLmNjIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTUzRDIyMTY5ODM0RjAwMjgyNjZCIC8q
IGNoYW5uZWxfcmVjZWl2ZS5jYyAqLzsgfTsKIAkJNDE3OTUzREIyMTY5ODM5MTAwMjgyNjZCIC8q
IG1ldHJpY3MuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTc5NTNEOTIxNjk4MzkwMDAyODI2NkIgLyogbWV0cmljcy5jYyAqLzsgfTsKIAkJNDE3OTUz
REMyMTY5ODM5MTAwMjgyNjZCIC8qIGZpZWxkX3RyaWFsLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTUzREEyMTY5ODM5MDAwMjgyNjZCIC8qIGZp
ZWxkX3RyaWFsLmNjICovOyB9OwpAQCAtNzUyLDcgKzczMCw2IEBACiAJCTQxOTI0MTU0MjEyNzM3
NkYwMDYzNEZDRiAvKiBiYXNpY2FzeW5jcmVzb2x2ZXJmYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQxNEEyMTI3Mzc2RDAwNjM0RkNG
IC8qIGJhc2ljYXN5bmNyZXNvbHZlcmZhY3RvcnkuY2MgKi87IH07CiAJCTQxOTI0MTU1MjEyNzM3
NkYwMDYzNEZDRiAvKiByZWdhdGhlcmluZ2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MTRCMjEyNzM3NkQwMDYzNEZDRiAvKiBy
ZWdhdGhlcmluZ2NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNDE5MjQxNTYyMTI3Mzc2RjAwNjM0RkNG
IC8qIGZha2VjYW5kaWRhdGVwYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTkyNDE0QzIxMjczNzZFMDA2MzRGQ0YgLyogZmFrZWNhbmRpZGF0ZXBh
aXIuaCAqLzsgfTsKLQkJNDE5MjQxNTcyMTI3Mzc2RjAwNjM0RkNGIC8qIHVkcHRyYW5zcG9ydC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQxNEQy
MTI3Mzc2RTAwNjM0RkNGIC8qIHVkcHRyYW5zcG9ydC5oICovOyB9OwogCQk0MTkyNDE1ODIxMjcz
NzZGMDA2MzRGQ0YgLyogZmFrZXBhY2tldHRyYW5zcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQxNEUyMTI3Mzc2RTAwNjM0RkNGIC8qIGZh
a2VwYWNrZXR0cmFuc3BvcnQuaCAqLzsgfTsKIAkJNDE5MjQxNTkyMTI3Mzc2RjAwNjM0RkNGIC8q
IGZha2VpY2V0cmFuc3BvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxOTI0MTRGMjEyNzM3NkUwMDYzNEZDRiAvKiBmYWtlaWNldHJhbnNwb3J0Lmgg
Ki87IH07CiAJCTQxOTI0MTVBMjEyNzM3NkYwMDYzNEZDRiAvKiBpY2V0cmFuc3BvcnRpbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQx
NTAyMTI3Mzc2RTAwNjM0RkNGIC8qIGljZXRyYW5zcG9ydGludGVybmFsLmggKi87IH07CkBAIC03
NzcsNyArNzU0LDYgQEAKIAkJNDE5MjQxODIyMTI3NDk3MTAwNjM0RkNGIC8qIGJhZF92YXJpYW50
X2FjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE5MjQxODAyMTI3NDk3MTAwNjM0RkNGIC8qIGJhZF92YXJpYW50X2FjY2Vzcy5oICovOyB9Owog
CQk0MTkyNDE4QjIxMjc0OUM4MDA2MzRGQ0YgLyogc2VuZF90aW1lX2hpc3RvcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MTg3MjEyNzQ5Qzcw
MDYzNEZDRiAvKiBzZW5kX3RpbWVfaGlzdG9yeS5oICovOyB9OwogCQk0MTkyNDE4QzIxMjc0OUM4
MDA2MzRGQ0YgLyogc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MTg4MjEyNzQ5QzcwMDYz
NEZDRiAvKiBzZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjICovOyB9OwotCQk0MTky
NDE4RDIxMjc0OUM4MDA2MzRGQ0YgLyogcGFjZXJfY29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQxODkyMTI3NDlDODAwNjM0RkNG
IC8qIHBhY2VyX2NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNDE5MjQxOEUyMTI3NDlDODAwNjM0RkNG
IC8qIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5MjQxOEEyMTI3NDlDODAwNjM0RkNGIC8qIHRyYW5z
cG9ydF9mZWVkYmFja19hZGFwdGVyLmNjICovOyB9OwogCQk0MTkyNDE5MDIxMjc1ODEwMDA2MzRG
Q0YgLyogZmVjX3ByaXZhdGVfdGFibGVzX2J1cnN0eS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MThGMjEyNzU4MTAwMDYzNEZDRiAvKiBmZWNf
cHJpdmF0ZV90YWJsZXNfYnVyc3R5LmNjICovOyB9OwogCQk0MTkyNDE5ODIxMjc1ODY1MDA2MzRG
Q0YgLyogcm5uX3ZhZF93ZWlnaHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTkyNDE5MzIxMjc1ODY0MDA2MzRGQ0YgLyogcm5uX3ZhZF93ZWlnaHRz
LmggKi87IH07CkBAIC04OTEsOCArODY3LDYgQEAKIAkJNDE5QzgzMjUxRkUyNDUyODAwNDBDMzBG
IC8qIHJ0Y19ldmVudF9ydHBfcGFja2V0X2luY29taW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlDODMyMzFGRTI0NTI4MDA0MEMzMEYgLyogcnRj
X2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuaCAqLzsgfTsKIAkJNDE5QzgzMkUxRkUyNDVDRDAw
NDBDMzBGIC8qIHBhY2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTlDODMyODFGRTI0NUNCMDA0MEMzMEYgLyogcGFjZXIuaCAqLzsgfTsKIAkJNDE5
QzgzMzExRkUyNDVDRDAwNDBDMzBGIC8qIGludGVydmFsX2J1ZGdldC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzMkIxRkUyNDVDQzAwNDBDMzBG
IC8qIGludGVydmFsX2J1ZGdldC5oICovOyB9OwotCQk0MTlDODMzNDFGRTI0NUVBMDA0MEMzMEYg
LyogdGltZV9pbnRlcnZhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE5QzgzMzIxRkUyNDVFOTAwNDBDMzBGIC8qIHRpbWVfaW50ZXJ2YWwuaCAqLzsg
fTsKLQkJNDE5QzgzMzUxRkUyNDVFQTAwNDBDMzBGIC8qIHRpbWVfaW50ZXJ2YWwuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlDODMzMzFGRTI0NUU5
MDA0MEMzMEYgLyogdGltZV9pbnRlcnZhbC5jYyAqLzsgfTsKIAkJNDE5QzgzM0MxRkUyNDYyMzAw
NDBDMzBGIC8qIGF1ZGlvX2VuY29kZXJfZzcyMl9jb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4MzM3MUZFMjQ2MjIwMDQwQzMwRiAvKiBh
dWRpb19lbmNvZGVyX2c3MjJfY29uZmlnLmggKi87IH07CiAJCTQxOUM4MzNEMUZFMjQ2MjMwMDQw
QzMwRiAvKiBhdWRpb19kZWNvZGVyX2c3MjIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4MzM4MUZFMjQ2MjIwMDQwQzMwRiAvKiBhdWRpb19kZWNv
ZGVyX2c3MjIuaCAqLzsgfTsKIAkJNDE5QzgzM0UxRkUyNDYyMzAwNDBDMzBGIC8qIGF1ZGlvX2Vu
Y29kZXJfZzcyMi5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxOUM4MzM5MUZFMjQ2MjIwMDQwQzMwRiAvKiBhdWRpb19lbmNvZGVyX2c3MjIuY2MgKi87
IH07CkBAIC05NjUsNyArOTM5LDYgQEAKIAkJNDE5QzgzRDkxRkUyNDdGMjAwNDBDMzBGIC8qIHBh
Y2tldHRyYW5zcG9ydGludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTlDODNEMDFGRTI0N0VGMDA0MEMzMEYgLyogcGFja2V0dHJhbnNwb3J0
aW50ZXJuYWwuaCAqLzsgfTsKIAkJNDE5QzgzREExRkUyNDdGMjAwNDBDMzBGIC8qIHBhY2tldHRy
YW5zcG9ydGludGVybmFsLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE5QzgzRDExRkUyNDdGMDAwNDBDMzBGIC8qIHBhY2tldHRyYW5zcG9ydGludGVy
bmFsLmNjICovOyB9OwogCQk0MTlDODNEQjFGRTI0N0YyMDA0MEMzMEYgLyogcG9ydGludGVyZmFj
ZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUM4
M0QyMUZFMjQ3RjAwMDQwQzMwRiAvKiBwb3J0aW50ZXJmYWNlLmNjICovOyB9OwotCQk0MTlDODNE
QzFGRTI0N0YyMDA0MEMzMEYgLyogdWRwdHJhbnNwb3J0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QzgzRDMxRkUyNDdGMDAwNDBDMzBGIC8qIHVk
cHRyYW5zcG9ydC5jYyAqLzsgfTsKIAkJNDE5QzgzREQxRkUyNDdGMjAwNDBDMzBGIC8qIGR0bHN0
cmFuc3BvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxOUM4M0Q0MUZFMjQ3RjEwMDQwQzMwRiAvKiBkdGxzdHJhbnNwb3J0LmggKi87IH07CiAJCTQx
OUM4M0RFMUZFMjQ3RjIwMDQwQzMwRiAvKiBkdGxzdHJhbnNwb3J0aW50ZXJuYWwuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlDODNENTFGRTI0N0Yx
MDA0MEMzMEYgLyogZHRsc3RyYW5zcG9ydGludGVybmFsLmNjICovOyB9OwogCQk0MTlDODNERjFG
RTI0N0YyMDA0MEMzMEYgLyogZHRsc3RyYW5zcG9ydGludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlDODNENjFGRTI0N0YxMDA0MEMzMEYg
LyogZHRsc3RyYW5zcG9ydGludGVybmFsLmggKi87IH07CkBAIC0xMDc4LDggKzEwNTEsNiBAQAog
CQk0MUEwOEJEMDIxMjcyRUUyMDAxRDVEN0IgLyogZ2Fpbl9jb250cm9sbGVyMi5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4QkNFMjEyNzJFRTEw
MDFENUQ3QiAvKiBnYWluX2NvbnRyb2xsZXIyLmNjICovOyB9OwogCQk0MUEwOEJEMzIxMjcyRUZB
MDAxRDVEN0IgLyogcm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJEMTIxMjcyRUZBMDAxRDVEN0IgLyog
cm91bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmggKi87IH07CiAJCTQxQTA4QkQ0MjEyNzJFRkEwMDFE
NUQ3QiAvKiByb3VuZF9yb2Jpbl9wYWNrZXRfcXVldWUuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJEMjIxMjcyRUZBMDAxRDVEN0IgLyogcm91
bmRfcm9iaW5fcGFja2V0X3F1ZXVlLmNjICovOyB9OwotCQk0MUEwOEJENzIxMjcyRjFEMDAxRDVE
N0IgLyogY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCRDUyMTI3MkYxQzAwMUQ1
RDdCIC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCAqLzsgfTsKLQkJ
NDFBMDhCRDgyMTI3MkYxRDAwMUQ1RDdCIC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2Nv
bnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUEwOEJENjIxMjcyRjFDMDAxRDVEN0IgLyogY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tf
Y29udHJvbGxlci5jYyAqLzsgfTsKIAkJNDFBMzkxNzMxRUZDNDQ3QzAwQzQ1MTZBIC8qIHNoYTEt
YWx0aXZlYy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFBMzkxNEYxRUZDNDQ2RTAwQzQ1MTZBIC8qIHNoYTEtYWx0aXZlYy5jICovOyB9OwogCQk0MUEz
OTE3NDFFRkM0NDdDMDBDNDUxNkEgLyogc2hhMS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMzkxNTAxRUZDNDQ2RTAwQzQ1MTZBIC8qIHNoYTEuYyAq
LzsgfTsKIAkJNDFBMzkxNzUxRUZDNDQ3QzAwQzQ1MTZBIC8qIHNoYTI1Ni5jIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMzkxNTExRUZDNDQ2RTAwQzQ1
MTZBIC8qIHNoYTI1Ni5jICovOyB9OwpAQCAtMTM2OCw3ICsxMzM5LDYgQEAKIAkJNDFFMDJDQTYy
MTI3MzUyRDAwQzI3Q0Q2IC8qIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMDJDOTIyMTI3MzUy
QTAwQzI3Q0Q2IC8qIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5oICovOyB9OwogCQk0
MUUwMkNBNzIxMjczNTJEMDBDMjdDRDYgLyogcHJvYmVfYml0cmF0ZV9lc3RpbWF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTAyQzkzMjEyNzM1
MkEwMEMyN0NENiAvKiBwcm9iZV9iaXRyYXRlX2VzdGltYXRvci5oICovOyB9OwogCQk0MUUwMkNB
ODIxMjczNTJEMDBDMjdDRDYgLyogYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmNjIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMDJDOTQyMTI3
MzUyQTAwQzI3Q0Q2IC8qIGFja25vd2xlZGdlZF9iaXRyYXRlX2VzdGltYXRvci5jYyAqLzsgfTsK
LQkJNDFFMDJDQTkyMTI3MzUyRDAwQzI3Q0Q2IC8qIGdvb2dfY2NfZmFjdG9yeS5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTAyQzk1MjEyNzM1MkEw
MEMyN0NENiAvKiBnb29nX2NjX2ZhY3RvcnkuY2MgKi87IH07CiAJCTQxRTAyQ0FBMjEyNzM1MkQw
MEMyN0NENiAvKiBnb29nX2NjX25ldHdvcmtfY29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMDJDOTYyMTI3MzUyQTAwQzI3Q0Q2IC8qIGdv
b2dfY2NfbmV0d29ya19jb250cm9sLmggKi87IH07CiAJCTQxRTAyQ0FCMjEyNzM1MkQwMEMyN0NE
NiAvKiBkZWxheV9iYXNlZF9id2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRTAyQzk3MjEyNzM1MkEwMEMyN0NENiAvKiBkZWxheV9iYXNlZF9id2Uu
aCAqLzsgfTsKIAkJNDFFMDJDQUMyMTI3MzUyRDAwQzI3Q0Q2IC8qIGJpdHJhdGVfZXN0aW1hdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUwMkM5
ODIxMjczNTJCMDBDMjdDRDYgLyogYml0cmF0ZV9lc3RpbWF0b3IuaCAqLzsgfTsKQEAgLTE1OTMs
NiArMTU2Myw2NSBAQAogCQk0MUY5QkZFNDIwNTFERTE4MDBBQkYwQjkgLyogc2Vzc2lvbmRlc2Ny
aXB0aW9uLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGOUJGREUyMDUxREUxNzAwQUJGMEI5IC8qIHNlc3Npb25kZXNjcmlwdGlvbi5jYyAqLzsgfTsK
IAkJNDFGOUJGRTkyMDUxREVFQTAwQUJGMEI5IC8qIHR1cm5wb3J0ZmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGOUJGRTcyMDUxREVFOTAw
QUJGMEI5IC8qIHR1cm5wb3J0ZmFjdG9yeS5oICovOyB9OwogCQk0MUY5QkZFQTIwNTFERUVBMDBB
QkYwQjkgLyogdHVybnBvcnRmYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGOUJGRTgyMDUxREVFQTAwQUJGMEI5IC8qIHR1cm5wb3J0ZmFj
dG9yeS5jYyAqLzsgfTsKKwkJNDFGQ0JCMEUyMUIxRjUzNzAwQTVERjI3IC8qIGNyZWF0ZV9wZWVy
Y29ubmVjdGlvbl9mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGQ0JCMDkyMUIxRjUzMDAwQTVERjI3IC8qIGNyZWF0ZV9wZWVyY29ubmVj
dGlvbl9mYWN0b3J5LmNjICovOyB9OworCQk0MUZDQkIwRjIxQjFGNTM3MDBBNURGMjcgLyogbWVk
aWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFGQ0JCMEEyMUIxRjUzMTAwQTVERjI3IC8qIG1lZGlhX3RyYW5zcG9y
dF9pbnRlcmZhY2UuaCAqLzsgfTsKKwkJNDFGQ0JCMTAyMUIxRjUzNzAwQTVERjI3IC8qIHNjb3Bl
ZF9yZWZwdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRkNCQjBCMjFCMUY1MzIwMEE1REYyNyAvKiBzY29wZWRfcmVmcHRyLmggKi87IH07CisJCTQx
RkNCQjExMjFCMUY1MzcwMEE1REYyNyAvKiBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmNjIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMEMyMUIx
RjUzMjAwQTVERjI3IC8qIG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuY2MgKi87IH07CisJCTQx
RkNCQjEyMjFCMUY1MzcwMEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMEQy
MUIxRjUzNjAwQTVERjI3IC8qIGNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmggKi87IH07
CisJCTQxRkNCQjE1MjFCMUY3QUEwMEE1REYyNyAvKiBtb3ZpbmdfYXZlcmFnZS5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjEzMjFCMUY3QUEw
MEE1REYyNyAvKiBtb3ZpbmdfYXZlcmFnZS5jYyAqLzsgfTsKKwkJNDFGQ0JCMTYyMUIxRjdBQTAw
QTVERjI3IC8qIG1vdmluZ19hdmVyYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIxNDIxQjFGN0FBMDBBNURGMjcgLyogbW92aW5nX2F2ZXJh
Z2UuaCAqLzsgfTsKKwkJNDFGQ0JCMUIyMUIxRjdDRDAwQTVERjI3IC8qIGJ1aWx0aW5fdmlkZW9f
Yml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjE3MjFCMUY3Q0MwMEE1REYyNyAvKiBidWlsdGluX3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MgKi87IH07CisJCTQxRkNCQjFDMjFCMUY3
Q0QwMEE1REYyNyAvKiBlbmNvZGVkX2ltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIxODIxQjFGN0NDMDBBNURGMjcgLyogZW5jb2RlZF9p
bWFnZS5oICovOyB9OworCQk0MUZDQkIxRDIxQjFGN0NEMDBBNURGMjcgLyogZW5jb2RlZF9pbWFn
ZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNC
QjE5MjFCMUY3Q0MwMEE1REYyNyAvKiBlbmNvZGVkX2ltYWdlLmNjICovOyB9OworCQk0MUZDQkIx
RTIxQjFGN0NEMDBBNURGMjcgLyogYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZD
QkIxQTIxQjFGN0NEMDBBNURGMjcgLyogYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9m
YWN0b3J5LmggKi87IH07CisJCTQxRkNCQjIyMjFCMUY4MkYwMEE1REYyNyAvKiB0aHJvd19kZWxl
Z2F0ZS5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RkNCQjIwMjFCMUY4MkUwMEE1REYyNyAvKiB0aHJvd19kZWxlZ2F0ZS5jYyAqLzsgfTsKKwkJNDFG
Q0JCMjMyMUIxRjgyRjAwQTVERjI3IC8qIHRocm93X2RlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIyMTIxQjFGODJGMDBBNURGMjcg
LyogdGhyb3dfZGVsZWdhdGUuaCAqLzsgfTsKKwkJNDFGQ0JCMjcyMUIxRjg3RTAwQTVERjI3IC8q
IHNlbnRfcGFja2V0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFGQ0JCMjUyMUIxRjg3RTAwQTVERjI3IC8qIHNlbnRfcGFja2V0LmNjICovOyB9Owor
CQk0MUZDQkIyODIxQjFGODdFMDBBNURGMjcgLyogc2VudF9wYWNrZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjI2MjFCMUY4N0UwMEE1REYy
NyAvKiBzZW50X3BhY2tldC5oICovOyB9OworCQk0MUZDQkIyRTIxQjFGOEI3MDBBNURGMjcgLyog
Y3J5cHRvb3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFGQ0JCMkEyMUIxRjhCNjAwQTVERjI3IC8qIGNyeXB0b29wdGlvbnMuaCAqLzsgfTsK
KwkJNDFGQ0JCMkYyMUIxRjhCNzAwQTVERjI3IC8qIGZyYW1lZGVjcnlwdG9yaW50ZXJmYWNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIyQjIx
QjFGOEI2MDBBNURGMjcgLyogZnJhbWVkZWNyeXB0b3JpbnRlcmZhY2UuaCAqLzsgfTsKKwkJNDFG
Q0JCMzAyMUIxRjhCNzAwQTVERjI3IC8qIGZyYW1lZW5jcnlwdG9yaW50ZXJmYWNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIyQzIxQjFGOEI2
MDBBNURGMjcgLyogZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaCAqLzsgfTsKKwkJNDFGQ0JCMzEy
MUIxRjhCNzAwQTVERjI3IC8qIGNyeXB0b29wdGlvbnMuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIyRDIxQjFGOEI2MDBBNURGMjcgLyogY3J5
cHRvb3B0aW9ucy5jYyAqLzsgfTsKKwkJNDFGQ0JCMzgyMUIxRjhGQzAwQTVERjI3IC8qIGNvbnRy
b2xfaGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFGQ0JCMzQyMUIxRjhGQjAwQTVERjI3IC8qIGNvbnRyb2xfaGFuZGxlci5oICovOyB9Owor
CQk0MUZDQkIzOTIxQjFGOEZDMDBBNURGMjcgLyogY29udHJvbF9oYW5kbGVyLmNjIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCMzUyMUIxRjhGQzAw
QTVERjI3IC8qIGNvbnRyb2xfaGFuZGxlci5jYyAqLzsgfTsKKwkJNDFGQ0JCM0MyMUIxRkQ0MDAw
QTVERjI3IC8qIG1hdGNoLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQ0JCM0EyMUIxRkQzRjAwQTVERjI3IC8qIG1hdGNoLmNjICovOyB9OworCQk0
MUZDQkIzRDIxQjFGRDQwMDBBNURGMjcgLyogbWF0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjNCMjFCMUZEM0YwMEE1REYyNyAvKiBtYXRj
aC5oICovOyB9OworCQk0MUZDQkI0MDIxQjFGREI4MDBBNURGMjcgLyogY29uZ2VzdGlvbl93aW5k
b3dfcHVzaGJhY2tfY29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFGQ0JCM0UyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2lu
ZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJNDFGQ0JCNDEyMUIxRkRCODAwQTVE
RjI3IC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkIzRjIxQjFGREI4MDBB
NURGMjcgLyogY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYyAqLzsgfTsK
KwkJNDFGQ0JCNDYyMUIxRkRFRjAwQTVERjI3IC8qIG1kbnNfbWVzc2FnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNDIyMUIxRkRFRTAwQTVE
RjI3IC8qIG1kbnNfbWVzc2FnZS5oICovOyB9OworCQk0MUZDQkI0NzIxQjFGREVGMDBBNURGMjcg
LyogaWNlY3JlZGVudGlhbHNpdGVyYXRvci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjQzMjFCMUZERUUwMEE1REYyNyAvKiBpY2VjcmVkZW50
aWFsc2l0ZXJhdG9yLmNjICovOyB9OworCQk0MUZDQkI0ODIxQjFGREVGMDBBNURGMjcgLyogbWRu
c19tZXNzYWdlLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFGQ0JCNDQyMUIxRkRFRjAwQTVERjI3IC8qIG1kbnNfbWVzc2FnZS5jYyAqLzsgfTsKKwkJ
NDFGQ0JCNDkyMUIxRkRFRjAwQTVERjI3IC8qIGljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjQ1MjFCMUZE
RUYwMEE1REYyNyAvKiBpY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmggKi87IH07CisJCTQxRkNCQjUx
MjFCMUZFNDYwMEE1REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNEIyMUIxRkU0NDAwQTVERjI3
IC8qIGNwdV9zcGVlZF9leHBlcmltZW50LmggKi87IH07CisJCTQxRkNCQjUyMjFCMUZFNDYwMEE1
REYyNyAvKiBqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjRDMjFCMUZFNDQwMEE1REYyNyAv
KiBqaXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5jYyAqLzsgfTsKKwkJNDFGQ0JCNTMyMUIx
RkU0NjAwQTVERjI3IC8qIGNwdV9zcGVlZF9leHBlcmltZW50LmNjIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNEQyMUIxRkU0NTAwQTVERjI3IC8q
IGNwdV9zcGVlZF9leHBlcmltZW50LmNjICovOyB9OworCQk0MUZDQkI1NDIxQjFGRTQ2MDBBNURG
MjcgLyogaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjRFMjFCMUZFNDUwMEE1REYyNyAvKiBq
aXR0ZXJfdXBwZXJfYm91bmRfZXhwZXJpbWVudC5oICovOyB9OworCQk0MUZDQkI1NTIxQjFGRTQ2
MDBBNURGMjcgLyogbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4cGVyaW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjRGMjFCMUZFNDUw
MEE1REYyNyAvKiBub3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oICovOyB9Owor
CQk0MUZDQkI1NjIxQjFGRTQ2MDBBNURGMjcgLyogbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4
cGVyaW1lbnQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUZDQkI1MDIxQjFGRTQ1MDBBNURGMjcgLyogbm9ybWFsaXplX3NpbXVsY2FzdF9zaXplX2V4
cGVyaW1lbnQuY2MgKi87IH07CisJCTQxRkNCQjU5MjFCMUZFNkUwMEE1REYyNyAvKiBmcmFtZV9k
dW1waW5nX2RlY29kZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZDQkI1NzIxQjFGRTZEMDBBNURGMjcgLyogZnJhbWVfZHVtcGluZ19kZWNvZGVy
LmNjICovOyB9OworCQk0MUZDQkI1QTIxQjFGRTZFMDBBNURGMjcgLyogZnJhbWVfZHVtcGluZ19k
ZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUZDQkI1ODIxQjFGRTZFMDBBNURGMjcgLyogZnJhbWVfZHVtcGluZ19kZWNvZGVyLmggKi87IH07
CisJCTQxRkNCQjVDMjFCMUZFQTMwMEE1REYyNyAvKiBiaXRyYXRlX2NvbnRyb2xsZXIuY2MgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI1QjIxQjFG
RUEzMDBBNURGMjcgLyogYml0cmF0ZV9jb250cm9sbGVyLmNjICovOyB9OworCQk0MUZDQkI1RjIx
QjFGRUM0MDBBNURGMjcgLyogZ29vZ19jY19mYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI1RDIxQjFGRUM0MDBBNURGMjcgLyogZ29v
Z19jY19mYWN0b3J5LmggKi87IH07CisJCTQxRkNCQjYwMjFCMUZFQzQwMEE1REYyNyAvKiBnb29n
X2NjX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUZDQkI1RTIxQjFGRUM0MDBBNURGMjcgLyogZ29vZ19jY19mYWN0b3J5LmNjICovOyB9
OworCQk0MUZDQkI2NDIxQjFGRUY2MDBBNURGMjcgLyogY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXll
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNC
QjYxMjFCMUZFRjUwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xheWVycy5oICovOyB9
OworCQk0MUZDQkI2NTIxQjFGRUY2MDBBNURGMjcgLyogdnA4X3RlbXBvcmFsX2xheWVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNjIyMUIx
RkVGNTAwQTVERjI3IC8qIHZwOF90ZW1wb3JhbF9sYXllcnMuaCAqLzsgfTsKKwkJNDFGQ0JCNjYy
MUIxRkVGNjAwQTVERjI3IC8qIGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNjMyMUIxRkVGNTAw
QTVERjI3IC8qIGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjICovOyB9OworCQk0MUZDQkI2
OTIxQjFGRjFCMDBBNURGMjcgLyogbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNjcyMUIx
RkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGltYXRpb24uaCAqLzsgfTsK
KwkJNDFGQ0JCNkEyMUIxRkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFuZHdpZHRoX2VzdGlt
YXRpb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUZDQkI2ODIxQjFGRjFCMDBBNURGMjcgLyogbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlv
bi5jYyAqLzsgfTsKKwkJNDFGQ0JCNkQyMUIxRkYzQTAwQTVERjI3IC8qIGtleV9kZXJpdmF0aW9u
LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JC
NkIyMUIxRkYzOTAwQTVERjI3IC8qIGtleV9kZXJpdmF0aW9uLmNjICovOyB9OworCQk0MUZDQkI2
RTIxQjFGRjNBMDBBNURGMjcgLyoga2V5X2Rlcml2YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjZDMjFCMUZGM0EwMEE1REYyNyAvKiBr
ZXlfZGVyaXZhdGlvbi5oICovOyB9OworCQk0MUZDQkI3MTIxQjFGRjc0MDBBNURGMjcgLyogaGRy
X21ldGFkYXRhLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFGQ0JCNkYyMUIxRkY3NDAwQTVERjI3IC8qIGhkcl9tZXRhZGF0YS5jYyAqLzsgfTsKKwkJ
NDFGQ0JCNzIyMUIxRkY3NDAwQTVERjI3IC8qIGhkcl9tZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNzAyMUIxRkY3NDAwQTVERjI3
IC8qIGhkcl9tZXRhZGF0YS5oICovOyB9OworCQk0MUZDQkI3NTIxQjFGRkE0MDBBNURGMjcgLyog
Y29jb2FfdGhyZWFkaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQ0JCNzMyMUIxRkZBNDAwQTVERjI3IC8qIGNvY29hX3RocmVhZGluZy5tbSAq
LzsgfTsKKwkJNDFGQ0JCNzYyMUIxRkZBNDAwQTVERjI3IC8qIGNvY29hX3RocmVhZGluZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQ0JCNzQyMUIx
RkZBNDAwQTVERjI3IC8qIGNvY29hX3RocmVhZGluZy5oICovOyB9OworCQk0MUZDQkI3OTIxQjFG
RkMwMDBBNURGMjcgLyogYXNjaWkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRkNCQjc3MjFCMUZGQkYwMEE1REYyNyAvKiBhc2NpaS5oICovOyB9Owor
CQk0MUZDQkI3QTIxQjFGRkMwMDBBNURGMjcgLyogYXNjaWkuY2MgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI3ODIxQjFGRkMwMDBBNURGMjcgLyog
YXNjaWkuY2MgKi87IH07CisJCTQxRkNCQjdEMjFCMUZGRjYwMEE1REYyNyAvKiBvcGVuc3NsX2tl
eV9kZXJpdmF0aW9uX2hrZGYuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUZDQkI3QjIxQjFGRkY1MDBBNURGMjcgLyogb3BlbnNzbF9rZXlfZGVyaXZh
dGlvbl9oa2RmLmNjICovOyB9OworCQk0MUZDQkI3RTIxQjFGRkY2MDBBNURGMjcgLyogb3BlbnNz
bF9rZXlfZGVyaXZhdGlvbl9oa2RmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUZDQkI3QzIxQjFGRkY1MDBBNURGMjcgLyogb3BlbnNzbF9rZXlfZGVy
aXZhdGlvbl9oa2RmLmggKi87IH07CisJCTQxRkNCQjgwMjFCMjAwMTIwMEE1REYyNyAvKiBzdHJp
bmdfdmlldy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRkNCQjdGMjFCMjAwMTEwMEE1REYyNyAvKiBzdHJpbmdfdmlldy5jYyAqLzsgfTsKKwkJNDFG
Q0JCODQyMUIyMDA3QjAwQTVERjI3IC8qIG1lbXV0aWwuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZDQkI4MjIxQjIwMDdCMDBBNURGMjcgLyogbWVt
dXRpbC5jYyAqLzsgfTsKKwkJNDFGQ0JCODUyMUIyMDA3QjAwQTVERjI3IC8qIG1lbXV0aWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkNCQjgzMjFC
MjAwN0IwMEE1REYyNyAvKiBtZW11dGlsLmggKi87IH07CisJCTQxRkNCQjg5MjFCMjAwRkQwMEE1
REYyNyAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFNjc5RTIxNjk4ODk0MDBFRjM3RUQgLyogUlRD
UnRwRnJhZ21lbnRhdGlvbkhlYWRlci5tICovOyB9OwogCQk0MUZFODY1MTIxNUM1MzA3MDBCNjJD
MDcgLyogbmFzbS1saXN0Zm10LmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUZFODY1MDIxNUM1MzA2MDBCNjJDMDcgLyogbmFzbS1saXN0Zm10LmMgKi87
IH07CiAJCTQxRkU4NjUzMjE1QzUzMjUwMEI2MkMwNyAvKiBuYXNtLWV2YWwuYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkU4NjQ1MjE1QzUyNjAwMEI2
MkMwNyAvKiBuYXNtLWV2YWwuYyAqLzsgfTsKIAkJNDFGRTg2NTQyMTVDNTMyNTAwQjYyQzA3IC8q
IG5hc20tcHAuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRDEyNDI2MjE1QzUyNDEwMDM2QjA1NyAvKiBuYXNtLXBwLmMgKi87IH07CkBAIC0xNjg1LDgg
KzE3MTQsNiBAQAogCQk1QzA4ODUzMzFFNEE5OUQyMDA0MDM5OTUgLyogcmRiLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzA4ODUyMTFFNEE5OUQyMDA0
MDM5OTUgLyogcmRiLmggKi87IH07CiAJCTVDMDg4NTM0MUU0QTk5RDIwMDQwMzk5NSAvKiByZGJ4
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzA4ODUy
MjFFNEE5OUQyMDA0MDM5OTUgLyogcmRieC5oICovOyB9OwogCQk1QzA4ODUzNTFFNEE5OUQyMDA0
MDM5OTUgLyogc3RhdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMwODg1MjMxRTRBOTlEMjAwNDAzOTk1IC8qIHN0YXQuaCAqLzsgfTsKLQkJNUMwODhD
MTAxRTRBQTQ0NDAwNDAzOTk1IC8qIGJ1bmRsZWZpbHRlci5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNjNGQTNBMUU0MTc2MUYwMDJDQTUzMSAvKiBi
dW5kbGVmaWx0ZXIuY2MgKi87IH07Ci0JCTVDMDg4QzExMUU0QUE0NDQwMDQwMzk5NSAvKiBidW5k
bGVmaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDNjNGQTNCMUU0MTc2MUYwMDJDQTUzMSAvKiBidW5kbGVmaWx0ZXIuaCAqLzsgfTsKIAkJNUMw
ODhDMTIxRTRBQTQ0NDAwNDAzOTk1IC8qIGNoYW5uZWwuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzYzRkEzRDFFNDE3NjFGMDAyQ0E1MzEgLyogY2hh
bm5lbC5jYyAqLzsgfTsKIAkJNUMwODhDMTMxRTRBQTQ0NDAwNDAzOTk1IC8qIGNoYW5uZWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNjNGQTNFMUU0
MTc2MUYwMDJDQTUzMSAvKiBjaGFubmVsLmggKi87IH07CiAJCTVDMDg4QzE0MUU0QUE0NDQwMDQw
Mzk5NSAvKiBjaGFubmVsbWFuYWdlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNjNGQTQwMUU0MTc2MUYwMDJDQTUzMSAvKiBjaGFubmVsbWFuYWdl
ci5jYyAqLzsgfTsKQEAgLTE5ODAsNyArMjAwNyw2IEBACiAJCTVDNEI0QzFCMUU0MzFGNzUwMDI2
NTFDOCAvKiBpNDIwX2J1ZmZlcl9wb29sLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUM0QjRDMTIxRTQzMUY3NTAwMjY1MUM4IC8qIGk0MjBfYnVmZmVy
X3Bvb2wuY2MgKi87IH07CiAJCTVDNEI0QzFDMUU0MzFGNzUwMDI2NTFDOCAvKiBpbmNvbWluZ192
aWRlb19zdHJlYW0uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzRCNEMxMzFFNDMxRjc1MDAyNjUxQzggLyogaW5jb21pbmdfdmlkZW9fc3RyZWFtLmNj
ICovOyB9OwogCQk1QzRCNEMxRTFFNDMxRjc1MDAyNjUxQzggLyogdmlkZW9fZnJhbWVfYnVmZmVy
LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0QjRD
MTUxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX2ZyYW1lX2J1ZmZlci5jYyAqLzsgfTsKLQkJNUM0
QjRDMUYxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX2ZyYW1lLmNjIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0QjRDMTYxRTQzMUY3NTAwMjY1MUM4IC8q
IHZpZGVvX2ZyYW1lLmNjICovOyB9OwogCQk1QzRCNEMyMDFFNDMxRjc1MDAyNjUxQzggLyogdmlk
ZW9fcmVuZGVyX2ZyYW1lcy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDNEI0QzE3MUU0MzFGNzUwMDI2NTFDOCAvKiB2aWRlb19yZW5kZXJfZnJhbWVz
LmNjICovOyB9OwogCQk1QzRCNEMyMTFFNDMxRjc1MDAyNjUxQzggLyogdmlkZW9fcmVuZGVyX2Zy
YW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0
QjRDMTgxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX3JlbmRlcl9mcmFtZXMuaCAqLzsgfTsKIAkJ
NUM0QjRDNTkxRTQzMUY5QzAwMjY1MUM4IC8qIGF1ZGlvX2NvbnZlcnRlci5jYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEI0QzI0MUU0MzFGOUMwMDI2
NTFDOCAvKiBhdWRpb19jb252ZXJ0ZXIuY2MgKi87IH07CkBAIC0yMzQ1LDggKzIzNzEsNiBAQAog
CQk1Q0REODM3QTFFNDM5QTM1MDA2MjFFOTIgLyogZnJhbWVfZHJvcHBlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDgzNkMxRTQzOUEzNTAwNjIx
RTkyIC8qIGZyYW1lX2Ryb3BwZXIuaCAqLzsgfTsKIAkJNUNERDgzN0IxRTQzOUEzNTAwNjIxRTky
IC8qIGl2Zl9maWxlX3dyaXRlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDREQ4MzZEMUU0MzlBMzUwMDYyMUU5MiAvKiBpdmZfZmlsZV93cml0ZXIu
Y2MgKi87IH07CiAJCTVDREQ4MzdDMUU0MzlBMzUwMDYyMUU5MiAvKiBpdmZfZmlsZV93cml0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4MzZF
MUU0MzlBMzUwMDYyMUU5MiAvKiBpdmZfZmlsZV93cml0ZXIuaCAqLzsgfTsKLQkJNUNERDgzN0Qx
RTQzOUEzNTAwNjIxRTkyIC8qIG1vdmluZ19hdmVyYWdlLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDgzNkYxRTQzOUEzNTAwNjIxRTkyIC8qIG1v
dmluZ19hdmVyYWdlLmNjICovOyB9OwotCQk1Q0REODM3RTFFNDM5QTM1MDA2MjFFOTIgLyogbW92
aW5nX2F2ZXJhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDREQ4MzcwMUU0MzlBMzUwMDYyMUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5oICovOyB9Owog
CQk1Q0REODM4MTFFNDM5QTM1MDA2MjFFOTIgLyogcXVhbGl0eV9zY2FsZXIuY2MgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODM3MzFFNDM5QTM1MDA2
MjFFOTIgLyogcXVhbGl0eV9zY2FsZXIuY2MgKi87IH07CiAJCTVDREQ4MzgyMUU0MzlBMzUwMDYy
MUU5MiAvKiBxdWFsaXR5X3NjYWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNERDgzNzQxRTQzOUEzNTAwNjIxRTkyIC8qIHF1YWxpdHlfc2NhbGVy
LmggKi87IH07CiAJCTVDREQ4Mzg1MUU0MzlBMzUwMDYyMUU5MiAvKiB2cDhfaGVhZGVyX3BhcnNl
ci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4
Mzc3MUU0MzlBMzUwMDYyMUU5MiAvKiB2cDhfaGVhZGVyX3BhcnNlci5jYyAqLzsgfTsKQEAgLTI0
NTMsOCArMjQ3Nyw2IEBACiAJCTVDREQ4NTEwMUU0M0IxRUEwMDYyMUU5MiAvKiBhdWRpb19jb2Rp
bmdfbW9kdWxlLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNERDg0RjkxRTQzQjFFQTAwNjIxRTkyIC8qIGF1ZGlvX2NvZGluZ19tb2R1bGUuY2MgKi87
IH07CiAJCTVDREQ4NTEyMUU0M0IxRUEwMDYyMUU5MiAvKiBjYWxsX3N0YXRpc3RpY3MuY2MgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODRGQjFFNDNC
MUVBMDA2MjFFOTIgLyogY2FsbF9zdGF0aXN0aWNzLmNjICovOyB9OwogCQk1Q0REODUxMzFFNDNC
MUVBMDA2MjFFOTIgLyogY2FsbF9zdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODRGQzFFNDNCMUVBMDA2MjFFOTIgLyogY2FsbF9z
dGF0aXN0aWNzLmggKi87IH07Ci0JCTVDREQ4NTE1MUU0M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19t
YW5hZ2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNERDg0RkUxRTQzQjFFQTAwNjIxRTkyIC8qIGNvZGVjX21hbmFnZXIuY2MgKi87IH07Ci0JCTVD
REQ4NTE2MUU0M0IxRUEwMDYyMUU5MiAvKiBjb2RlY19tYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODRGRjFFNDNCMUVBMDA2MjFFOTIg
LyogY29kZWNfbWFuYWdlci5oICovOyB9OwogCQk1Q0REODUxODFFNDNCMUVBMDA2MjFFOTIgLyog
cmVudF9hX2NvZGVjLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNERDg1MDExRTQzQjFFQTAwNjIxRTkyIC8qIHJlbnRfYV9jb2RlYy5jYyAqLzsgfTsK
IAkJNUNERDg1MTkxRTQzQjFFQTAwNjIxRTkyIC8qIHJlbnRfYV9jb2RlYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDg1MDIxRTQzQjFFQTAwNjIx
RTkyIC8qIHJlbnRfYV9jb2RlYy5oICovOyB9OwogCQk1Q0REODUyRjFFNDNCMzlDMDA2MjFFOTIg
LyogYml0cmF0ZV9hbGxvY2F0b3IuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0REODUxQzFFNDNCMzlDMDA2MjFFOTIgLyogYml0cmF0ZV9hbGxvY2F0
b3IuY2MgKi87IH07CkBAIC0yODQxLDggKzI4NjMsNiBAQAogCQk1Q0REOEE0QjFFNDNCRkIzMDA2
MjFFOTIgLyogcmFuZG9tX3ZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNERDg5RTIxRTQzQkZCMzAwNjIxRTkyIC8qIHJhbmRvbV92ZWN0b3Iu
aCAqLzsgfTsKIAkJNUNERDhBNEQxRTQzQkZCMzAwNjIxRTkyIC8qIHJlZF9wYXlsb2FkX3NwbGl0
dGVyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNE
RDg5RTQxRTQzQkZCMzAwNjIxRTkyIC8qIHJlZF9wYXlsb2FkX3NwbGl0dGVyLmNjICovOyB9Owog
CQk1Q0REOEE0RTFFNDNCRkIzMDA2MjFFOTIgLyogcmVkX3BheWxvYWRfc3BsaXR0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4OUU1MUU0M0JG
QjMwMDYyMUU5MiAvKiByZWRfcGF5bG9hZF9zcGxpdHRlci5oICovOyB9OwotCQk1Q0REOEE0RjFF
NDNCRkIzMDA2MjFFOTIgLyogcnRjcC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDREQ4OUU2MUU0M0JGQjMwMDYyMUU5MiAvKiBydGNwLmNjICovOyB9
OwotCQk1Q0REOEE1MDFFNDNCRkIzMDA2MjFFOTIgLyogcnRjcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDg5RTcxRTQzQkZCMzAwNjIxRTkyIC8q
IHJ0Y3AuaCAqLzsgfTsKIAkJNUNERDhBNTExRTQzQkZCMzAwNjIxRTkyIC8qIHN0YXRpc3RpY3Nf
Y2FsY3VsYXRvci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDREQ4OUU4MUU0M0JGQjMwMDYyMUU5MiAvKiBzdGF0aXN0aWNzX2NhbGN1bGF0b3IuY2Mg
Ki87IH07CiAJCTVDREQ4QTUyMUU0M0JGQjMwMDYyMUU5MiAvKiBzdGF0aXN0aWNzX2NhbGN1bGF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4
OUU5MUU0M0JGQjMwMDYyMUU5MiAvKiBzdGF0aXN0aWNzX2NhbGN1bGF0b3IuaCAqLzsgfTsKIAkJ
NUNERDhBNTQxRTQzQkZCMzAwNjIxRTkyIC8qIHN5bmNfYnVmZmVyLmNjIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDg5RUIxRTQzQkZCMzAwNjIxRTky
IC8qIHN5bmNfYnVmZmVyLmNjICovOyB9OwpAQCAtMzc5OCw3ICszODE4LDYgQEAKIAkJNDEzQTIx
NDQxRkUxOEQ0QzAwMzczRTk5IC8qIHRlc3RiYXNlNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gdGVzdGJhc2U2NC5oOyBwYXRoID0gcnRjX2Jhc2UvdGVzdGJhc2U2NC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjE0NTFGRTE4RDRDMDAzNzNFOTkgLyog
ZnVuY3Rpb25fdmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBmdW5jdGlv
bl92aWV3Lmg7IHBhdGggPSBydGNfYmFzZS9mdW5jdGlvbl92aWV3Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxM0EyMTQ3MUZFMThENEQwMDM3M0U5OSAvKiBmb3JtYXRfbWFjcm9z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGZvcm1hdF9tYWNyb3MuaDsgcGF0
aCA9IHJ0Y19iYXNlL2Zvcm1hdF9tYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDEzQTIxNDgxRkUxOEQ0RDAwMzczRTk5IC8qIHVuaXhmaWxlc3lzdGVtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHVuaXhmaWxlc3lzdGVtLmg7IHBhdGggPSBydGNfYmFz
ZS91bml4ZmlsZXN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjE0
OTFGRTE4RDRFMDAzNzNFOTkgLyogdGVzdGVjaG9zZXJ2ZXIuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSB0ZXN0ZWNob3NlcnZlci5jYzsgcGF0aCA9IHJ0Y19iYXNlL3Rl
c3RlY2hvc2VydmVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjE0QTFG
RTE4RDRFMDAzNzNFOTkgLyogYml0cmF0ZWFsbG9jYXRpb25zdHJhdGVneS5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGJpdHJhdGVhbGxvY2F0aW9uc3RyYXRlZ3kuY2M7
IHBhdGggPSBydGNfYmFzZS9iaXRyYXRlYWxsb2NhdGlvbnN0cmF0ZWd5LmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjE0QjFGRTE4RDRFMDAzNzNFOTkgLyogcHJveHlfdW5p
dHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBwcm94eV91bml0
dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3Byb3h5X3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzg3Miw3ICszODkxLDYgQEAKIAkJNDEzQTIxOTgxRkUxOEQ4QTAw
MzczRTk5IC8qIGF0b21pY29wcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBh
dG9taWNvcHMuaDsgcGF0aCA9IHJ0Y19iYXNlL2F0b21pY29wcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTNBMjE5QTFGRTE4RDhCMDAzNzNFOTkgLyogb3BlbnNzbGFkYXB0ZXIu
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBvcGVuc3NsYWRhcHRlci5j
YzsgcGF0aCA9IHJ0Y19iYXNlL29wZW5zc2xhZGFwdGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTNBMjE5QjFGRTE4RDhCMDAzNzNFOTkgLyogc29ja2V0YWRhcHRlcnMuY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzb2NrZXRhZGFwdGVycy5jYzsg
cGF0aCA9IHJ0Y19iYXNlL3NvY2tldGFkYXB0ZXJzLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTNBMjE5RDFGRTE4RDhEMDAzNzNFOTkgLyogcGF0aHV0aWxzX3VuaXR0ZXN0LmNj
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gcGF0aHV0aWxzX3VuaXR0ZXN0
LmNjOyBwYXRoID0gcnRjX2Jhc2UvcGF0aHV0aWxzX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTNBMjE5RTFGRTE4RDhEMDAzNzNFOTkgLyogdGFza19xdWV1ZV93
aW4uY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0YXNrX3F1ZXVlX3dp
bi5jYzsgcGF0aCA9IHJ0Y19iYXNlL3Rhc2tfcXVldWVfd2luLmNjOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTNBMjE5RjFGRTE4RDhFMDAzNzNFOTkgLyogdGVzdHV0aWxzLmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdHV0aWxzLmNjOyBwYXRoID0g
cnRjX2Jhc2UvdGVzdHV0aWxzLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNB
MjFBMjFGRTE4RDhGMDAzNzNFOTkgLyogc2lnc2xvdF91bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHNpZ3Nsb3RfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNf
YmFzZS9zaWdzbG90X3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzkwNyw3ICszOTI1LDYgQEAKIAkJNDEzQTIxQzMxRkUxOEQ5RTAwMzczRTk5IC8qIGNhbGxiYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGNhbGxiYWNrLmg7IHBhdGggPSBy
dGNfYmFzZS9jYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFD
NTFGRTE4RDlGMDAzNzNFOTkgLyogaGVscGVyc191bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGhlbHBlcnNfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFz
ZS9oZWxwZXJzX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNB
MjFDNjFGRTE4REEwMDAzNzNFOTkgLyogbmF0c29ja2V0ZmFjdG9yeS5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG5hdHNvY2tldGZhY3RvcnkuY2M7IHBhdGggPSBydGNf
YmFzZS9uYXRzb2NrZXRmYWN0b3J5LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
MTNBMjFDNzFGRTE4REExMDAzNzNFOTkgLyogb3B0aW9uc2ZpbGVfdW5pdHRlc3QuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBvcHRpb25zZmlsZV91bml0dGVzdC5jYzsg
cGF0aCA9IHJ0Y19iYXNlL29wdGlvbnNmaWxlX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTNBMjFDODFGRTE4REExMDAzNzNFOTkgLyogbmF0X3VuaXR0ZXN0LmNj
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gbmF0X3VuaXR0ZXN0LmNjOyBw
YXRoID0gcnRjX2Jhc2UvbmF0X3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTNBMjFDOTFGRTE4REEyMDAzNzNFOTkgLyogcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHBsYXRmb3JtX3RocmVhZF90eXBlcy5o
OyBwYXRoID0gcnRjX2Jhc2UvcGxhdGZvcm1fdGhyZWFkX3R5cGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxM0EyMUNBMUZFMThEQTMwMDM3M0U5OSAvKiBwbGF0Zm9ybV90aHJl
YWQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBwbGF0Zm9ybV90aHJl
YWQuY2M7IHBhdGggPSBydGNfYmFzZS9wbGF0Zm9ybV90aHJlYWQuY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zOTM2LDE4ICszOTUzLDE1IEBACiAJCTQxM0EyMUU0MUZFMThEQjAw
MDM3M0U5OSAvKiBtYWN1dGlscy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IG1hY3V0aWxzLmNjOyBwYXRoID0gcnRjX2Jhc2UvbWFjdXRpbHMuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUU1MUZFMThEQjEwMDM3M0U5OSAvKiB0YXNrX3F1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHRhc2tfcXVldWUuaDsgcGF0aCA9
IHJ0Y19iYXNlL3Rhc2tfcXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEz
QTIxRTcxRkUxOERCMTAwMzczRTk5IC8qIGJpdGJ1ZmZlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IGJpdGJ1ZmZlci5jYzsgcGF0aCA9IHJ0Y19iYXNlL2JpdGJ1ZmZl
ci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEzQTIxRTgxRkUxOERCMjAwMzcz
RTk5IC8qIHBhdGh1dGlscy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IHBhdGh1dGlscy5jYzsgcGF0aCA9IHJ0Y19iYXNlL3BhdGh1dGlscy5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRTkxRkUxOERCMjAwMzczRTk5IC8qIHBoeXNpY2Fsc29j
a2V0c2VydmVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gcGh5c2lj
YWxzb2NrZXRzZXJ2ZXIuY2M7IHBhdGggPSBydGNfYmFzZS9waHlzaWNhbHNvY2tldHNlcnZlci5j
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRUExRkUxOERCMzAwMzczRTk5
IC8qIGJ5dGVvcmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBieXRlb3Jk
ZXIuaDsgcGF0aCA9IHJ0Y19iYXNlL2J5dGVvcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTNBMjFFQjFGRTE4REIzMDAzNzNFOTkgLyogc3Nsc3RyZWFtYWRhcHRlcl91bml0
dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHNzbHN0cmVhbWFk
YXB0ZXJfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9zc2xzdHJlYW1hZGFwdGVyX3VuaXR0
ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFFRTFGRTE4REI0MDAz
NzNFOTkgLyogdGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHRocmVh
ZC5oOyBwYXRoID0gcnRjX2Jhc2UvdGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxM0EyMUVGMUZFMThEQjUwMDM3M0U5OSAvKiBjcmMzMi5jYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGNyYzMyLmNjOyBwYXRoID0gcnRjX2Jhc2UvY3JjMzIuY2M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUYwMUZFMThEQjUwMDM3M0U5OSAv
KiBtZW1vcnlfdXNhZ2VfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBtZW1vcnlfdXNhZ2VfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9tZW1vcnlf
dXNhZ2VfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxM0EyMUYx
MUZFMThEQjYwMDM3M0U5OSAvKiBvcHRpb25zZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBvcHRpb25zZmlsZS5oOyBwYXRoID0gcnRjX2Jhc2Uvb3B0aW9uc2ZpbGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRjMxRkUxOERCNzAwMzczRTk5IC8q
IHN3YXBfcXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gc3dhcF9xdWV1
ZS5oOyBwYXRoID0gcnRjX2Jhc2Uvc3dhcF9xdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTNBMjFGNDFGRTE4REI3MDAzNzNFOTkgLyogZHNjcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBkc2NwLmg7IHBhdGggPSBydGNfYmFzZS9kc2NwLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUY1MUZFMThEQjcwMDM3M0U5OSAvKiB0aW1l
dXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gdGltZXV0aWxzLmg7IHBh
dGggPSBydGNfYmFzZS90aW1ldXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDEzQTIxRjYxRkUxOERCODAwMzczRTk5IC8qIG9wdGlvbnNmaWxlLmNjICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gb3B0aW9uc2ZpbGUuY2M7IHBhdGggPSBydGNfYmFzZS9v
cHRpb25zZmlsZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIxRjcxRkUx
OERCODAwMzczRTk5IC8qIHR5cGVfdHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IHR5cGVfdHJhaXRzLmg7IHBhdGggPSBydGNfYmFzZS90eXBlX3RyYWl0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjFGODFGRTE4REI5MDAzNzNFOTkgLyogcmFu
ZG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHJhbmRvbS5oOyBwYXRoID0g
cnRjX2Jhc2UvcmFuZG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMUY5
MUZFMThEQjkwMDM3M0U5OSAvKiBzb2NrZXRhZGRyZXNzcGFpci5jYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHNvY2tldGFkZHJlc3NwYWlyLmNjOyBwYXRoID0gcnRjX2Jh
c2Uvc29ja2V0YWRkcmVzc3BhaXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
OTY3LDcgKzM5ODEsNiBAQAogCQk0MTNBMjIwOTFGRTE4REMwMDAzNzNFOTkgLyogYmluZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBiaW5kLmg7IHBhdGggPSBydGNfYmFzZS9i
aW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjBBMUZFMThEQzAwMDM3
M0U5OSAvKiBndW5pdF9wcm9kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGd1
bml0X3Byb2QuaDsgcGF0aCA9IHJ0Y19iYXNlL2d1bml0X3Byb2QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDEzQTIyMEIxRkUxOERDMTAwMzczRTk5IC8qIGFzeW5jc29ja2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGFzeW5jc29ja2V0Lmg7IHBhdGggPSBy
dGNfYmFzZS9hc3luY3NvY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTNB
MjIwQzFGRTE4REMxMDAzNzNFOTkgLyogbm9vcC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IG5vb3AuY2M7IHBhdGggPSBydGNfYmFzZS9ub29wLmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjIwRDFGRTE4REMyMDAzNzNFOTkgLyogcmF0ZV9saW1p
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHJhdGVfbGltaXRlci5oOyBw
YXRoID0gcnRjX2Jhc2UvcmF0ZV9saW1pdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxM0EyMjBFMUZFMThEQzIwMDM3M0U5OSAvKiBzb2NrZXRhZGFwdGVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBzb2NrZXRhZGFwdGVycy5oOyBwYXRoID0gcnRjX2Jh
c2Uvc29ja2V0YWRhcHRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIy
MEYxRkUxOERDMjAwMzczRTk5IC8qIHJhdGV0cmFja2VyLmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gcmF0ZXRyYWNrZXIuY2M7IHBhdGggPSBydGNfYmFzZS9yYXRldHJh
Y2tlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMDIsNyArNDAxNSw2IEBA
CiAJCTQxM0EyMjJGMUZFMThERDIwMDM3M0U5OSAvKiBiaW5kX3VuaXR0ZXN0LmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gYmluZF91bml0dGVzdC5jYzsgcGF0aCA9IHJ0
Y19iYXNlL2JpbmRfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
M0EyMjMxMUZFMThERDMwMDM3M0U5OSAvKiBzdHJpbmd1dGlsc191bml0dGVzdC5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHN0cmluZ3V0aWxzX3VuaXR0ZXN0LmNjOyBw
YXRoID0gcnRjX2Jhc2Uvc3RyaW5ndXRpbHNfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxM0EyMjMyMUZFMThERDMwMDM3M0U5OSAvKiBjb21waWxlX2Fzc2VydF9j
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGNvbXBpbGVfYXNzZXJ0X2MuaDsg
cGF0aCA9IHJ0Y19iYXNlL2NvbXBpbGVfYXNzZXJ0X2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDEzQTIyMzMxRkUxOERENDAwMzczRTk5IC8qIHVuaXhmaWxlc3lzdGVtLmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdW5peGZpbGVzeXN0ZW0uY2M7IHBh
dGggPSBydGNfYmFzZS91bml4ZmlsZXN5c3RlbS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzQTIyMzQxRkUxOERENDAwMzczRTk5IC8qIHNzbGFkYXB0ZXJfdW5pdHRlc3QuY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzc2xhZGFwdGVyX3VuaXR0ZXN0
LmNjOyBwYXRoID0gcnRjX2Jhc2Uvc3NsYWRhcHRlcl91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyMzUxRkUxOERENTAwMzczRTk5IC8qIGNyaXRpY2Fsc2Vj
dGlvbi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGNyaXRpY2Fsc2Vj
dGlvbi5jYzsgcGF0aCA9IHJ0Y19iYXNlL2NyaXRpY2Fsc2VjdGlvbi5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyMzYxRkUxOERENTAwMzczRTk5IC8qIGJ5dGVvcmRlcl91
bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGJ5dGVvcmRl
cl91bml0dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL2J5dGVvcmRlcl91bml0dGVzdC5jYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMTIsNyArNDAyNCw2IEBACiAJCTQxM0EyMjNB
MUZFMThERDgwMDM3M0U5OSAvKiByYXRlX2xpbWl0ZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSByYXRlX2xpbWl0ZXIuY2M7IHBhdGggPSBydGNfYmFzZS9yYXRlX2xp
bWl0ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjNCMUZFMThERDkw
MDM3M0U5OSAvKiBidWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYnVm
ZmVyLmg7IHBhdGggPSBydGNfYmFzZS9idWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzQTIyM0MxRkUxOEREOTAwMzczRTk5IC8qIGV2ZW50X3RyYWNlci5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGV2ZW50X3RyYWNlci5jYzsgcGF0aCA9IHJ0
Y19iYXNlL2V2ZW50X3RyYWNlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEz
QTIyM0QxRkUxOEREOTAwMzczRTk5IC8qIHBhdGh1dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBwYXRodXRpbHMuaDsgcGF0aCA9IHJ0Y19iYXNlL3BhdGh1dGlscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjIzRjFGRTE4RERBMDAzNzNFOTkgLyog
c3Nscm9vdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gc3Nscm9vdHMuaDsg
cGF0aCA9IHJ0Y19iYXNlL3NzbHJvb3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxM0EyMjQwMUZFMThEREIwMDM3M0U5OSAvKiBvcGVuc3NsZGlnZXN0LmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gb3BlbnNzbGRpZ2VzdC5jYzsgcGF0aCA9IHJ0Y19i
YXNlL29wZW5zc2xkaWdlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0Ey
MjQyMUZFMThEREIwMDM3M0U5OSAvKiBodHRwY29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IGh0dHBjb21tb24uaDsgcGF0aCA9IHJ0Y19iYXNlL2h0dHBjb21tb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwNDMsNyArNDA1NCw2IEBACiAJCTQxM0Ey
MjVEMUZFMThERTYwMDM3M0U5OSAvKiBhdG9taWNvcHNfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBhdG9taWNvcHNfdW5pdHRlc3QuY2M7IHBhdGggPSBy
dGNfYmFzZS9hdG9taWNvcHNfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxM0EyMjVFMUZFMThERTcwMDM3M0U5OSAvKiBzdHJpbmdpemVfbWFjcm9zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHN0cmluZ2l6ZV9tYWNyb3MuaDsgcGF0aCA9IHJ0
Y19iYXNlL3N0cmluZ2l6ZV9tYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEzQTIyNjExRkUxOERFODAwMzczRTk5IC8qIGNwdV90aW1lX3VuaXR0ZXN0LmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gY3B1X3RpbWVfdW5pdHRlc3QuY2M7IHBhdGgg
PSBydGNfYmFzZS9jcHVfdGltZV91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDEzQTIyNjIxRkUxOERFOTAwMzczRTk5IC8qIGZpbGV1dGlscy5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGZpbGV1dGlscy5jYzsgcGF0aCA9IHJ0Y19iYXNl
L2ZpbGV1dGlscy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyNjMxRkUx
OERFQTAwMzczRTk5IC8qIG9wZW5zc2xzdHJlYW1hZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IG9wZW5zc2xzdHJlYW1hZGFwdGVyLmg7IHBhdGggPSBydGNfYmFzZS9v
cGVuc3Nsc3RyZWFtYWRhcHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNB
MjI2NDFGRTE4REVCMDAzNzNFOTkgLyogZXZlbnQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBldmVudC5jYzsgcGF0aCA9IHJ0Y19iYXNlL2V2ZW50LmNjOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI2NTFGRTE4REVCMDAzNzNFOTkgLyogY3JjMzJf
dW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBjcmMzMl91
bml0dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL2NyYzMyX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDA1MSw3ICs0MDYxLDYgQEAKIAkJNDEzQTIyNjcxRkUxOERF
QzAwMzczRTk5IC8qIHNpZ3Nsb3R0ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gc2lnc2xvdHRlc3Rlci5oOyBwYXRoID0gcnRjX2Jhc2Uvc2lnc2xvdHRlc3Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI2ODFGRTE4REVFMDAzNzNFOTkgLyog
bmV0d29ya191bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IG5ldHdvcmtfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNfYmFzZS9uZXR3b3JrX3VuaXR0ZXN0LmNj
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI2OTFGRTE4REVGMDAzNzNFOTkg
LyogZmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gZmxhZ3MuaDsgcGF0
aCA9IHJ0Y19iYXNlL2ZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxM0Ey
MjZBMUZFMThERjAwMDM3M0U5OSAvKiBmaWxldXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gZmlsZXV0aWxzLmg7IHBhdGggPSBydGNfYmFzZS9maWxldXRpbHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyNkIxRkUxOERGMDAwMzczRTk5IC8qIGxv
Z3NpbmtzLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gbG9nc2lua3Mu
Y2M7IHBhdGggPSBydGNfYmFzZS9sb2dzaW5rcy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzQTIyNkMxRkUxOERGMDAwMzczRTk5IC8qIHNzbGlkZW50aXR5X3VuaXR0ZXN0LmNj
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc3NsaWRlbnRpdHlfdW5pdHRl
c3QuY2M7IHBhdGggPSBydGNfYmFzZS9zc2xpZGVudGl0eV91bml0dGVzdC5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyNkQxRkUxOERGMTAwMzczRTk5IC8qIG51bGxzb2Nr
ZXRzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gbnVsbHNvY2tldHNl
cnZlci5oOyBwYXRoID0gcnRjX2Jhc2UvbnVsbHNvY2tldHNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDA4MSw3ICs0MDkwLDYgQEAKIAkJNDEzQTIyODYxRkUxOERGQzAw
MzczRTk5IC8qIHRlc3R1dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB0
ZXN0dXRpbHMuaDsgcGF0aCA9IHJ0Y19iYXNlL3Rlc3R1dGlscy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTNBMjI4NzFGRTE4REZEMDAzNzNFOTkgLyogZmlsZXJvdGF0aW5nc3Ry
ZWFtLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gZmlsZXJvdGF0aW5n
c3RyZWFtLmNjOyBwYXRoID0gcnRjX2Jhc2UvZmlsZXJvdGF0aW5nc3RyZWFtLmNjOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI4ODFGRTE4REZEMDAzNzNFOTkgLyogcnRjY2Vy
dGlmaWNhdGVfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBydGNjZXJ0aWZpY2F0ZV91bml0dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3J0Y2NlcnRpZmlj
YXRlX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTNBMjI4QTFG
RTE4REZFMDAzNzNFOTkgLyogdGhyZWFkX2Rhcndpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IHRocmVhZF9kYXJ3aW4ubW07IHBhdGggPSBydGNfYmFzZS90aHJl
YWRfZGFyd2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI4QjFGRTE4
REZFMDAzNzNFOTkgLyogdGFza19xdWV1ZV9nY2QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSB0YXNrX3F1ZXVlX2djZC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3Rhc2tfcXVl
dWVfZ2NkLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNBMjI4QzFGRTE4REZF
MDAzNzNFOTkgLyogZmlyZXdhbGxzb2NrZXRzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gZmlyZXdhbGxzb2NrZXRzZXJ2ZXIuaDsgcGF0aCA9IHJ0Y19iYXNlL2ZpcmV3
YWxsc29ja2V0c2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjhF
MUZFMThERkYwMDM3M0U5OSAvKiB0aW1ldXRpbHNfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0aW1ldXRpbHNfdW5pdHRlc3QuY2M7IHBhdGggPSBydGNf
YmFzZS90aW1ldXRpbHNfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00MDk3LDcgKzQxMDUsNiBAQAogCQk0MTNBMjI5OTFGRTE4RTAzMDAzNzNFOTkgLyogbG9jYXRp
b24uY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBsb2NhdGlvbi5jYzsg
cGF0aCA9IHJ0Y19iYXNlL2xvY2F0aW9uLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTNBMjI5QTFGRTE4RTA0MDAzNzNFOTkgLyogbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gbG9jYXRpb24uaDsgcGF0aCA9IHJ0Y19iYXNlL2xvY2F0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjlCMUZFMThFMDQwMDM3M0U5OSAv
KiBpcGFkZHJlc3MuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBpcGFk
ZHJlc3MuY2M7IHBhdGggPSBydGNfYmFzZS9pcGFkZHJlc3MuY2M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQxM0EyMjlDMUZFMThFMDQwMDM3M0U5OSAvKiBub29wLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gbm9vcC5tbTsgcGF0aCA9IHJ0Y19iYXNl
L25vb3AubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0EyMjlEMUZFMThFMDUw
MDM3M0U5OSAvKiByYWNlX2NoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gcmFjZV9jaGVja2VyLmg7IHBhdGggPSBydGNfYmFzZS9yYWNlX2NoZWNrZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyOUUxRkUxOEUwNTAwMzczRTk5IC8qIHJhdGVf
bGltaXRlcl91bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IHJhdGVfbGltaXRlcl91bml0dGVzdC5jYzsgcGF0aCA9IHJ0Y19iYXNlL3JhdGVfbGltaXRlcl91
bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQTIyOUYxRkUxOEUw
NjAwMzczRTk5IC8qIHNzbGZpbmdlcnByaW50LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gc3NsZmluZ2VycHJpbnQuY2M7IHBhdGggPSBydGNfYmFzZS9zc2xmaW5nZXJw
cmludC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNjUsMTYgKzQxNzIsMTIg
QEAKIAkJNDEzRTY3NjQyMTY5ODU0NTAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclZQOC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJUQ1ZpZGVvRW5jb2RlclZQ
OC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTY3NkUyMTY5ODYzQTAwRUYz
N0VEIC8qIHRlbXBvcmFsX2xheWVyc19jaGVja2VyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gdGVtcG9yYWxfbGF5ZXJzX2NoZWNrZXIuY2M7IHBhdGggPSBjb2RlY3Mv
dnA4L3RlbXBvcmFsX2xheWVyc19jaGVja2VyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTNFNjc2RjIxNjk4NjNBMDBFRjM3RUQgLyogbGlidnB4X2ludGVyZmFjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBsaWJ2cHhfaW50ZXJmYWNlLmg7IHBhdGggPSBj
b2RlY3MvdnA4L2xpYnZweF9pbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDEzRTY3NzAyMTY5ODYzQjAwRUYzN0VEIC8qIHZwOF90ZW1wb3JhbF9sYXllcnMuY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB2cDhfdGVtcG9yYWxfbGF5ZXJzLmNj
OyBwYXRoID0gY29kZWNzL3ZwOC92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTNFNjc3MTIxNjk4NjNCMDBFRjM3RUQgLyogbGlidnB4X2ludGVy
ZmFjZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGxpYnZweF9pbnRl
cmZhY2UuY2M7IHBhdGggPSBjb2RlY3MvdnA4L2xpYnZweF9pbnRlcmZhY2UuY2M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxM0U2Nzc3MjE2OTg2N0EwMEVGMzdFRCAvKiBjaGFubmVs
X3JlY2VpdmVfcHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY2hhbm5l
bF9yZWNlaXZlX3Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxM0U2Nzc4
MjE2OTg2N0EwMEVGMzdFRCAvKiBjaGFubmVsX3JlY2VpdmVfcHJveHkuY2MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjaGFubmVsX3JlY2VpdmVfcHJveHkuY2M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0U2NzdCMjE2OTg2QUQwMEVGMzdFRCAvKiBydHBf
aGVhZGVyX2V4dGVuc2lvbl9zaXplLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gcnRwX2hlYWRlcl9leHRlbnNpb25fc2l6ZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEzRTY3N0MyMTY5ODZBRTAwRUYzN0VEIC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9u
X3NpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcnRwX2hlYWRlcl9leHRl
bnNpb25fc2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFNjc3RjIxNjk4
NzBGMDBFRjM3RUQgLyogc3ZjX2NvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBzdmNfY29uZmlnLmg7IHBhdGggPSBjb2RlY3MvdnA5L3N2Y19jb25maWcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTY3ODAyMTY5ODcwRjAwRUYzN0VEIC8qIHN2Y19j
b25maWcuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzdmNfY29uZmln
LmNjOyBwYXRoID0gY29kZWNzL3ZwOS9zdmNfY29uZmlnLmNjOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTNFNjc4MzIxNjk4NzdEMDBFRjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyU2V0
dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDVmlkZW9FbmNvZGVy
U2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEzRTY3ODQyMTY5ODc3
RDAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0U2Nzg4MjE2OTg3QjkwMEVGMzdFRCAvKiBSVEND
VlBpeGVsQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0NWUGl4
ZWxCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTY3ODkyMTY5ODdC
OTAwRUYzN0VEIC8qIFJUQ0NWUGl4ZWxCdWZmZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBSVENDVlBpeGVsQnVmZmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTNFNjc4QzIxNjk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9GcmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENWaWRlb0ZyYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzA4LDcgKzQzMTEsNiBAQAogCQk0MTQ1RTRDMjFFRjg5
NkNFMDBGQ0Y2RTYgLyogcnRjc3RhdHNyZXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gcnRjc3RhdHNyZXBvcnQuaDsgcGF0aCA9IHN0YXRzL3J0Y3N0YXRzcmVwb3J0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDVFNEMzMUVGODk2RDIwMEZDRjZFNiAv
KiBydGNzdGF0c19vYmplY3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHJ0
Y3N0YXRzX29iamVjdHMuaDsgcGF0aCA9IHN0YXRzL3J0Y3N0YXRzX29iamVjdHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0NUU0QzQxRUY4OTZENzAwRkNGNkU2IC8qIHJ0Y3N0
YXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHJ0Y3N0YXRzLmg7IHBhdGgg
PSBzdGF0cy9ydGNzdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTQ1RTRD
OTFFRjhDQjMxMDBGQ0Y2RTYgLyogY3JlYXRlcGVlcmNvbm5lY3Rpb25mYWN0b3J5LmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY3JlYXRlcGVlcmNvbm5lY3Rpb25mYWN0
b3J5LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQ1RTRDQjFFRjhDQjhBMDBG
Q0Y2RTYgLyogcnRwdHJhbnNwb3J0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gcnRwdHJhbnNwb3J0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQ1
RTRDRDFFRjhDQjk0MDBGQ0Y2RTYgLyogcnRwdHJhbnNwb3J0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IHJ0cHRyYW5zcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTQ1RTRDRjFFRjhDQzE3MDBGQ0Y2RTYgLyogd2VicnRjdmlkZW9lbmdpbmUuY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB3ZWJydGN2aWRlb2VuZ2luZS5jYzsg
cGF0aCA9IGVuZ2luZS93ZWJydGN2aWRlb2VuZ2luZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ0NTUsOSArNDQ1Nyw3IEBACiAJCTQxNzk1M0IzMjE2OTgyNDIwMDI4MjY2QiAv
KiBSVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTc5NTNDRDIxNjk4MzRFMDAyODI2NkIgLyogY2hhbm5lbF9zZW5k
LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY2hhbm5lbF9zZW5kLmNj
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTc5NTNDRTIxNjk4MzRFMDAyODI2NkIg
LyogY2hhbm5lbF9zZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNoYW5u
ZWxfc2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTc5NTNDRjIxNjk4MzRF
MDAyODI2NkIgLyogY2hhbm5lbF9zZW5kX3Byb3h5LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gY2hhbm5lbF9zZW5kX3Byb3h5LmNjOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTc5NTNEMDIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9yZWNlaXZlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNoYW5uZWxfcmVjZWl2ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTc5NTNEMTIxNjk4MzRGMDAyODI2NkIgLyogY2hh
bm5lbF9zZW5kX3Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNoYW5u
ZWxfc2VuZF9wcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTc5NTNEMjIx
Njk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9yZWNlaXZlLmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gY2hhbm5lbF9yZWNlaXZlLmNjOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTc5NTNEOTIxNjk4MzkwMDAyODI2NkIgLyogbWV0cmljcy5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG1ldHJpY3MuY2M7IHBhdGggPSBzb3VyY2Uv
bWV0cmljcy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3OTUzREEyMTY5ODM5
MDAwMjgyNjZCIC8qIGZpZWxkX3RyaWFsLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gZmllbGRfdHJpYWwuY2M7IHBhdGggPSBzb3VyY2UvZmllbGRfdHJpYWwuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTM2LDcgKzQ1MzYsNiBAQAogCQk0MTkyNDE0
QTIxMjczNzZEMDA2MzRGQ0YgLyogYmFzaWNhc3luY3Jlc29sdmVyZmFjdG9yeS5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGJhc2ljYXN5bmNyZXNvbHZlcmZhY3Rvcnku
Y2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTI0MTRCMjEyNzM3NkQwMDYzNEZD
RiAvKiByZWdhdGhlcmluZ2NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gcmVnYXRoZXJpbmdjb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxOTI0MTRDMjEyNzM3NkUwMDYzNEZDRiAvKiBmYWtlY2FuZGlkYXRlcGFpci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmYWtlY2FuZGlkYXRlcGFpci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0MTkyNDE0RDIxMjczNzZFMDA2MzRGQ0YgLyogdWRwdHJh
bnNwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHVkcHRyYW5zcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTkyNDE0RTIxMjczNzZFMDA2MzRGQ0Yg
LyogZmFrZXBhY2tldHRyYW5zcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBmYWtlcGFja2V0dHJhbnNwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
OTI0MTRGMjEyNzM3NkUwMDYzNEZDRiAvKiBmYWtlaWNldHJhbnNwb3J0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZha2VpY2V0cmFuc3BvcnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE5MjQxNTAyMTI3Mzc2RTAwNjM0RkNGIC8qIGljZXRyYW5zcG9ydGlu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGljZXRyYW5zcG9ydGlu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTYxLDcgKzQ1NjAsNiBA
QAogCQk0MTkyNDE4MDIxMjc0OTcxMDA2MzRGQ0YgLyogYmFkX3ZhcmlhbnRfYWNjZXNzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGJhZF92YXJpYW50X2FjY2Vzcy5oOyBwYXRo
ID0gdHlwZXMvYmFkX3ZhcmlhbnRfYWNjZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxOTI0MTg3MjEyNzQ5QzcwMDYzNEZDRiAvKiBzZW5kX3RpbWVfaGlzdG9yeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBzZW5kX3RpbWVfaGlzdG9yeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTkyNDE4ODIxMjc0OUM3MDA2MzRGQ0YgLyogc2VuZF9z
aWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IHNlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXIuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQxOTI0MTg5MjEyNzQ5QzgwMDYzNEZDRiAvKiBwYWNlcl9jb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHBhY2VyX2NvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5MjQxOEEyMTI3NDlDODAwNjM0
RkNGIC8qIHRyYW5zcG9ydF9mZWVkYmFja19hZGFwdGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTI0MThGMjEyNzU4MTAwMDYzNEZDRiAvKiBmZWNfcHJp
dmF0ZV90YWJsZXNfYnVyc3R5LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gZmVjX3ByaXZhdGVfdGFibGVzX2J1cnN0eS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE5MjQxOTMyMTI3NTg2NDAwNjM0RkNGIC8qIHJubl92YWRfd2VpZ2h0cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBybm5fdmFkX3dlaWdodHMuaDsgcGF0aCA9IHNy
Yy9ybm5fdmFkX3dlaWdodHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3MjQs
OCArNDcyMiw2IEBACiAJCTQxOUM4MzIzMUZFMjQ1MjgwMDQwQzMwRiAvKiBydGNfZXZlbnRfcnRw
X3BhY2tldF9pbmNvbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBydGNf
ZXZlbnRfcnRwX3BhY2tldF9pbmNvbWluZy5oOyBwYXRoID0gcnRjX2V2ZW50X2xvZy9ldmVudHMv
cnRjX2V2ZW50X3J0cF9wYWNrZXRfaW5jb21pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE5QzgzMjgxRkUyNDVDQjAwNDBDMzBGIC8qIHBhY2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IHBhY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxOUM4MzJCMUZFMjQ1Q0MwMDQwQzMwRiAvKiBpbnRlcnZhbF9idWRnZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gaW50ZXJ2YWxfYnVkZ2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQxOUM4MzMyMUZFMjQ1RTkwMDQwQzMwRiAvKiB0aW1lX2ludGVydmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHRpbWVfaW50ZXJ2YWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5QzgzMzMxRkUyNDVFOTAwNDBDMzBGIC8qIHRp
bWVfaW50ZXJ2YWwuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB0aW1l
X2ludGVydmFsLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlDODMzNzFGRTI0
NjIyMDA0MEMzMEYgLyogYXVkaW9fZW5jb2Rlcl9nNzIyX2NvbmZpZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBhdWRpb19lbmNvZGVyX2c3MjJfY29uZmlnLmg7IHBhdGggPSBh
dWRpb19jb2RlY3MvZzcyMi9hdWRpb19lbmNvZGVyX2c3MjJfY29uZmlnLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxOUM4MzM4MUZFMjQ2MjIwMDQwQzMwRiAvKiBhdWRpb19kZWNv
ZGVyX2c3MjIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYXVkaW9fZGVjb2Rl
cl9nNzIyLmg7IHBhdGggPSBhdWRpb19jb2RlY3MvZzcyMi9hdWRpb19kZWNvZGVyX2c3MjIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QzgzMzkxRkUyNDYyMjAwNDBDMzBGIC8q
IGF1ZGlvX2VuY29kZXJfZzcyMi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IGF1ZGlvX2VuY29kZXJfZzcyMi5jYzsgcGF0aCA9IGF1ZGlvX2NvZGVjcy9nNzIyL2F1ZGlv
X2VuY29kZXJfZzcyMi5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3OTgsNyAr
NDc5NCw2IEBACiAJCTQxOUM4M0QwMUZFMjQ3RUYwMDQwQzMwRiAvKiBwYWNrZXR0cmFuc3BvcnRp
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBwYWNrZXR0cmFuc3Bv
cnRpbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlDODNEMTFGRTI0
N0YwMDA0MEMzMEYgLyogcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBwYWNrZXR0cmFuc3BvcnRpbnRlcm5hbC5jYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QzgzRDIxRkUyNDdGMDAwNDBDMzBGIC8qIHBvcnRp
bnRlcmZhY2UuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBwb3J0aW50
ZXJmYWNlLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTlDODNEMzFGRTI0N0Yw
MDA0MEMzMEYgLyogdWRwdHJhbnNwb3J0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gdWRwdHJhbnNwb3J0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTlDODNENDFGRTI0N0YxMDA0MEMzMEYgLyogZHRsc3RyYW5zcG9ydC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBkdGxzdHJhbnNwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxOUM4M0Q1MUZFMjQ3RjEwMDQwQzMwRiAvKiBkdGxzdHJhbnNwb3J0aW50ZXJu
YWwuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBkdGxzdHJhbnNwb3J0
aW50ZXJuYWwuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUM4M0Q2MUZFMjQ3
RjEwMDQwQzMwRiAvKiBkdGxzdHJhbnNwb3J0aW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gZHRsc3RyYW5zcG9ydGludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00OTA3LDE1ICs0OTAyLDEyIEBACiAJCTQxQTA4QkNFMjEyNzJFRTEwMDFE
NUQ3QiAvKiBnYWluX2NvbnRyb2xsZXIyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gZ2Fpbl9jb250cm9sbGVyMi5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFBMDhCRDEyMTI3MkVGQTAwMUQ1RDdCIC8qIHJvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSByb3VuZF9yb2Jpbl9wYWNrZXRfcXVl
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBMDhCRDIyMTI3MkVGQTAwMUQ1
RDdCIC8qIHJvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IHJvdW5kX3JvYmluX3BhY2tldF9xdWV1ZS5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDFBMDhCRDUyMTI3MkYxQzAwMUQ1RDdCIC8qIGNvbmdlc3Rpb25f
d2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MUEwOEJENjIxMjcyRjFDMDAxRDVEN0IgLyogY29uZ2VzdGlv
bl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4QkRBMjEyNzJGODQwMDFENUQ3QiAvKiBj
b21wdXRlX2ludGVycG9sYXRlZF9nYWluX2N1cnZlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbXB1dGVf
aW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFBMDhCREIyMTI3MkY4NDAwMUQ1RDdCIC8qIGFkYXB0aXZlX2RpZ2l0YWxfZ2Fpbl9hcHBsaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IGFkYXB0aXZlX2RpZ2l0YWxfZ2Fpbl9hcHBsaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4QkRDMjEyNzJGODQwMDFENUQ3QiAvKiBhZGFw
dGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBhZGFwdGl2ZV9tb2Rl
X2xldmVsX2VzdGltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwOEJE
RDIxMjcyRjg0MDAxRDVEN0IgLyogdmVjdG9yX2Zsb2F0X2ZyYW1lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IHZlY3Rvcl9mbG9hdF9mcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEw
OEJERTIxMjcyRjg0MDAxRDVEN0IgLyogZ2Fpbl9hcHBsaWVyLmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gZ2Fpbl9hcHBsaWVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwOEJE
RjIxMjcyRjg0MDAxRDVEN0IgLyogZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDFBMDhCRTAyMTI3MkY4NTAwMUQ1RDdCIC8qIGdhaW5fY3VydmVf
YXBwbGllci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdhaW5fY3VydmVfYXBwbGllci5jYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBMDhCRTEyMTI3MkY4NTAwMUQ1RDdCIC8qIGlu
dGVycG9sYXRlZF9nYWluX2N1cnZlLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gaW50ZXJwb2xhdGVk
X2dhaW5fY3VydmUuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4QkUyMjEy
NzJGODUwMDFENUQ3QiAvKiBub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQTA4QkUzMjEyNzJGODUwMDFENUQ3QiAvKiB2YWRfd2l0aF9sZXZlbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSB2YWRfd2l0aF9sZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTE3NiwxMSArNTE2OCw4IEBACiAJCTQxRDZCNDYyMjEyNzMxQTEwMDhGOTM1MyAvKiBhZGFwdGl2
ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYWRhcHRpdmVfbW9k
ZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
RDZCNDYzMjEyNzMxQTIwMDhGOTM1MyAvKiBiaXF1YWRfZmlsdGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGJpcXVhZF9maWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFENkI0NjQy
MTI3MzFBMjAwOEY5MzUzIC8qIGFkYXB0aXZlX2FnYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBhZGFwdGl2
ZV9hZ2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFENkI0NjUyMTI3MzFBMjAw
OEY5MzUzIC8qIGZpeGVkX2dhaW5fY29udHJvbGxlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGZp
eGVkX2dhaW5fY29udHJvbGxlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFE
NkI0NjYyMTI3MzFBMjAwOEY5MzUzIC8qIHZlY3Rvcl9mbG9hdF9mcmFtZS5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IHZlY3Rvcl9mbG9hdF9mcmFtZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDFENkI0NjcyMTI3MzFBMzAwOEY5MzUzIC8qIGZpeGVkX2dhaW5fY29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBmaXhlZF9nYWluX2NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFENkI0NjgyMTI3MzFBMzAwOEY5MzUzIC8qIHNhdHVyYXRpb25fcHJv
dGVjdG9yLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gc2F0dXJhdGlvbl9wcm90ZWN0b3IuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxRDZCNDY5MjEyNzMxQTMwMDhGOTM1MyAvKiBn
YWluX2N1cnZlX2FwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDZCNDZBMjEyNzMxQTMwMDhGOTM1MyAv
KiBub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBub2lzZV9z
cGVjdHJ1bV9lc3RpbWF0b3IuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDZC
NDZCMjEyNzMxQTMwMDhGOTM1MyAvKiBzYXR1cmF0aW9uX3Byb3RlY3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBzYXR1cmF0aW9uX3Byb3RlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUQ2QjQ2QzIxMjczMUE0MDA4RjkzNTMgLyogdmFkX3dpdGhfbGV2ZWwuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSB2YWRfd2l0aF9sZXZlbC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTUyMzEsNyArNTIyMCw2IEBACiAJCTQxRTAyQzkyMjEyNzM1MkEwMEMyN0NENiAvKiBhY2tu
b3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxRTAyQzkzMjEyNzM1MkEwMEMyN0NENiAvKiBwcm9iZV9iaXRyYXRlX2Vz
dGltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBwcm9iZV9iaXRyYXRl
X2VzdGltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUwMkM5NDIxMjcz
NTJBMDBDMjdDRDYgLyogYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1hdG9yLmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gYWNrbm93bGVkZ2VkX2JpdHJhdGVfZXN0aW1h
dG9yLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUUwMkM5NTIxMjczNTJBMDBD
MjdDRDYgLyogZ29vZ19jY19mYWN0b3J5LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gZ29vZ19jY19mYWN0b3J5LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUUwMkM5NjIxMjczNTJBMDBDMjdDRDYgLyogZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMDJDOTcyMTI3MzUyQTAwQzI3Q0Q2
IC8qIGRlbGF5X2Jhc2VkX2J3ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBk
ZWxheV9iYXNlZF9id2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMDJDOTgy
MTI3MzUyQjAwQzI3Q0Q2IC8qIGJpdHJhdGVfZXN0aW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IGJpdHJhdGVfZXN0aW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01MjYwLDcgKzUyNDgsNiBAQAogCQk0MUUwMkNDQjIxMjczNUI3MDBDMjdDRDYg
LyogYml0cmF0ZV9zZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBi
aXRyYXRlX3NldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTAyQ0Qx
MjEyNzM2MDYwMEMyN0NENiAvKiBzYW1wbGVfY291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBzYW1wbGVfY291bnRlci5oOyBwYXRoID0gcnRjX2Jhc2UvbnVtZXJpY3Mv
c2FtcGxlX2NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMDJDRDIy
MTI3MzYwNzAwQzI3Q0Q2IC8qIHNhbXBsZV9jb3VudGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gc2FtcGxlX2NvdW50ZXIuY2M7IHBhdGggPSBydGNfYmFzZS9udW1l
cmljcy9zYW1wbGVfY291bnRlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFF
MDJDRDYyMTI3MzYzQzAwQzI3Q0Q2IC8qIHBhY2VyX2NvbnRyb2xsZXIuY2MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBwYWNlcl9jb250cm9sbGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUUwMkNENzIxMjczNjNDMDBDMjdDRDYgLyogdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMDJDRDgyMTI3MzYzRDAwQzI3Q0Q2IC8qIHNlbmRfdGlt
ZV9oaXN0b3J5LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gc2VuZF90aW1lX2hpc3RvcnkuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRUE1M0E0MUVGQzJCRkQwMDJGRjA0QyAvKiBo
bWFjLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuYzsgcGF0aCA9IGhtYWMuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU0NjUsOCArNTQ1Miw4IEBACiAJCTQxRjlCRkIzMjA1MUM5MzYwMEFCRjBCOSAvKiBzaW11
bGNhc3RfZW5jb2Rlcl9hZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IHNpbXVsY2FzdF9lbmNvZGVyX2FkYXB0ZXIuaDsgcGF0aCA9IGVuZ2luZS9zaW11bGNhc3RfZW5j
b2Rlcl9hZGFwdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjlCRkM0MjA1
MUNBRTQwMEFCRjBCOSAvKiBzaWduYWxfcHJvY2Vzc2luZ19saWJyYXJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHNpZ25hbF9wcm9jZXNzaW5nX2xpYnJhcnkuaDsgcGF0aCA9
IHNpZ25hbF9wcm9jZXNzaW5nL2luY2x1ZGUvc2lnbmFsX3Byb2Nlc3NpbmdfbGlicmFyeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY5QkZDNjIwNTFEQ0U4MDBBQkYwQjkgLyog
d2VicnRjX3ZhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB3ZWJydGNfdmFk
Lmg7IHBhdGggPSB2YWQvaW5jbHVkZS93ZWJydGNfdmFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxRjlCRkM5MjA1MUREQTIwMEFCRjBCOSAvKiBhbHJfZXhwZXJpbWVudC5jYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGFscl9leHBlcmltZW50LmNjOyBw
YXRoID0gcnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQxRjlCRkNBMjA1MUREQTIwMEFCRjBCOSAvKiBhbHJfZXhwZXJp
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBhbHJfZXhwZXJpbWVudC5o
OyBwYXRoID0gcnRjX2Jhc2UvZXhwZXJpbWVudHMvYWxyX2V4cGVyaW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGOUJGQzkyMDUxRERBMjAwQUJGMEI5IC8qIGFscl9leHBl
cmltZW50LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gYWxyX2V4cGVy
aW1lbnQuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRjlCRkNBMjA1MUREQTIw
MEFCRjBCOSAvKiBhbHJfZXhwZXJpbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBhbHJfZXhwZXJpbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY5
QkZDRDIwNTFEREU0MDBBQkYwQjkgLyogZmZ0X2J1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBmZnRfYnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRjlCRkNFMjA1MURERTQwMEFCRjBCOSAvKiBtYXRyaXhfYnVmZmVyLmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbWF0cml4X2J1ZmZlci5jYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFGOUJGQ0YyMDUxRERFNDAwQUJGMEI5IC8qIHZlY3Rvcl9idWZm
ZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB2ZWN0b3JfYnVmZmVy
LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ4MSw2ICs1NDY4LDY1IEBACiAJ
CTQxRjlCRkRFMjA1MURFMTcwMEFCRjBCOSAvKiBzZXNzaW9uZGVzY3JpcHRpb24uY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBzZXNzaW9uZGVzY3JpcHRpb24uY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjlCRkU3MjA1MURFRTkwMEFCRjBCOSAvKiB0
dXJucG9ydGZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gdHVybnBv
cnRmYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjlCRkU4MjA1MURF
RUEwMEFCRjBCOSAvKiB0dXJucG9ydGZhY3RvcnkuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSB0dXJucG9ydGZhY3RvcnkuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRkNCQjA5MjFCMUY1MzAwMEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rpb25f
ZmFjdG9yeS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNyZWF0ZV9w
ZWVyY29ubmVjdGlvbl9mYWN0b3J5LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUZDQkIwQTIxQjFGNTMxMDBBNURGMjcgLyogbWVkaWFfdHJhbnNwb3J0X2ludGVyZmFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjBCMjFCMUY1MzIwMEE1REYy
NyAvKiBzY29wZWRfcmVmcHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHNj
b3BlZF9yZWZwdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMEMyMUIx
RjUzMjAwQTVERjI3IC8qIG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZhY2UuY2MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIwRDIxQjFGNTM2MDBBNURGMjcgLyog
Y3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gY3JlYXRlX3BlZXJjb25uZWN0aW9uX2ZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMTMyMUIxRjdBQTAwQTVERjI3IC8qIG1vdmluZ19hdmVyYWdl
LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gbW92aW5nX2F2ZXJhZ2Uu
Y2M7IHBhdGggPSBydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5jYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMTQyMUIxRjdBQTAwQTVERjI3IC8qIG1vdmluZ19h
dmVyYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IG1vdmluZ19hdmVyYWdl
Lmg7IHBhdGggPSBydGNfYmFzZS9udW1lcmljcy9tb3ZpbmdfYXZlcmFnZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIxNzIxQjFGN0NDMDBBNURGMjcgLyogYnVpbHRpbl92
aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmNj
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIxODIxQjFGN0NDMDBBNURGMjcg
LyogZW5jb2RlZF9pbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBlbmNv
ZGVkX2ltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjE5MjFCMUY3
Q0MwMEE1REYyNyAvKiBlbmNvZGVkX2ltYWdlLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gZW5jb2RlZF9pbWFnZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDFGQ0JCMUEyMUIxRjdDRDAwQTVERjI3IC8qIGJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxv
Y2F0b3JfZmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBidWlsdGlu
X3ZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFGQ0JCMjAyMUIxRjgyRTAwQTVERjI3IC8qIHRocm93X2RlbGVnYXRlLmNjICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGhyb3dfZGVsZWdhdGUuY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjIxMjFCMUY4MkYwMEE1REYyNyAvKiB0
aHJvd19kZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB0aHJvd19k
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIyNTIxQjFGODdF
MDBBNURGMjcgLyogc2VudF9wYWNrZXQuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBzZW50X3BhY2tldC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
Q0JCMjYyMUIxRjg3RTAwQTVERjI3IC8qIHNlbnRfcGFja2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IHNlbnRfcGFja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxRkNCQjJBMjFCMUY4QjYwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNyeXB0b29wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCMkIyMUIxRjhCNjAwQTVERjI3IC8qIGZyYW1lZGVjcnlwdG9y
aW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZyYW1lZGVjcnlw
dG9yaW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjJDMjFC
MUY4QjYwMEE1REYyNyAvKiBmcmFtZWVuY3J5cHRvcmludGVyZmFjZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBmcmFtZWVuY3J5cHRvcmludGVyZmFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUZDQkIyRDIxQjFGOEI2MDBBNURGMjcgLyogY3J5cHRvb3B0
aW9ucy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNyeXB0b29wdGlv
bnMuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjM0MjFCMUY4RkIwMEE1
REYyNyAvKiBjb250cm9sX2hhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gY29udHJvbF9oYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNC
QjM1MjFCMUY4RkMwMEE1REYyNyAvKiBjb250cm9sX2hhbmRsZXIuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjb250cm9sX2hhbmRsZXIuY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRkNCQjNBMjFCMUZEM0YwMEE1REYyNyAvKiBtYXRjaC5jYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1hdGNoLmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUZDQkIzQjIxQjFGRDNGMDBBNURGMjcgLyogbWF0Y2guaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbWF0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFGQ0JCM0UyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2luZG93
X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Y29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUZDQkIzRjIxQjFGREI4MDBBNURGMjcgLyogY29uZ2VzdGlvbl93aW5k
b3dfcHVzaGJhY2tfY29udHJvbGxlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjQyMjFCMUZERUUwMEE1REYyNyAvKiBtZG5zX21l
c3NhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbWRuc19tZXNzYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjQzMjFCMUZERUUwMEE1REYyNyAv
KiBpY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gaWNlY3JlZGVudGlhbHNpdGVyYXRvci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFGQ0JCNDQyMUIxRkRFRjAwQTVERjI3IC8qIG1kbnNfbWVzc2FnZS5jYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1kbnNfbWVzc2FnZS5jYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNDUyMUIxRkRFRjAwQTVERjI3IC8qIGljZWNy
ZWRlbnRpYWxzaXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gaWNl
Y3JlZGVudGlhbHNpdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZD
QkI0QjIxQjFGRTQ0MDBBNURGMjcgLyogY3B1X3NwZWVkX2V4cGVyaW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY3B1X3NwZWVkX2V4cGVyaW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNEMyMUIxRkU0NDAwQTVERjI3IC8qIGppdHRlcl91
cHBlcl9ib3VuZF9leHBlcmltZW50LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuY2M7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxRkNCQjREMjFCMUZFNDUwMEE1REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJp
bWVudC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNwdV9zcGVlZF9l
eHBlcmltZW50LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI0RTIxQjFG
RTQ1MDBBNURGMjcgLyogaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNEYyMUIxRkU0NTAwQTVERjI3IC8q
IG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjUwMjFCMUZFNDUwMEE1REYyNyAvKiBu
b3JtYWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6ZV9leHBlcmltZW50LmNj
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI1NzIxQjFGRTZEMDBBNURGMjcg
LyogZnJhbWVfZHVtcGluZ19kZWNvZGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gZnJhbWVfZHVtcGluZ19kZWNvZGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MUZDQkI1ODIxQjFGRTZFMDBBNURGMjcgLyogZnJhbWVfZHVtcGluZ19kZWNvZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZyYW1lX2R1bXBpbmdfZGVjb2Rl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI1QjIxQjFGRUEzMDBBNURG
MjcgLyogYml0cmF0ZV9jb250cm9sbGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gYml0cmF0ZV9jb250cm9sbGVyLmNjOyBwYXRoID0gYml0cmF0ZV9jb250cm9sbGVy
L2JpdHJhdGVfY29udHJvbGxlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
Q0JCNUQyMUIxRkVDNDAwQTVERjI3IC8qIGdvb2dfY2NfZmFjdG9yeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBnb29nX2NjX2ZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFGQ0JCNUUyMUIxRkVDNDAwQTVERjI3IC8qIGdvb2dfY2NfZmFjdG9yeS5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdvb2dfY2NfZmFjdG9yeS5j
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNjEyMUIxRkVGNTAwQTVERjI3
IC8qIGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmg7IHBhdGggPSB2aWRlb19jb2Rl
Y3MvY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFGQ0JCNjIyMUIxRkVGNTAwQTVERjI3IC8qIHZwOF90ZW1wb3JhbF9sYXllcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gdnA4X3RlbXBvcmFsX2xheWVycy5oOyBw
YXRoID0gdmlkZW9fY29kZWNzL3ZwOF90ZW1wb3JhbF9sYXllcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCNjMyMUIxRkVGNTAwQTVERjI3IC8qIGNyZWF0ZV92cDhfdGVt
cG9yYWxfbGF5ZXJzLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gY3Jl
YXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuY2M7IHBhdGggPSB2aWRlb19jb2RlY3MvY3JlYXRlX3Zw
OF90ZW1wb3JhbF9sYXllcnMuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNC
QjY3MjFCMUZGMUIwMEE1REYyNyAvKiBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGxvc3NfYmFzZWRfYmFuZHdpZHRoX2Vz
dGltYXRpb24uaDsgcGF0aCA9IGJpdHJhdGVfY29udHJvbGxlci9sb3NzX2Jhc2VkX2JhbmR3aWR0
aF9lc3RpbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjY4MjFC
MUZGMUIwMEE1REYyNyAvKiBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3RpbWF0aW9uLmNjICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gbG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0
aW1hdGlvbi5jYzsgcGF0aCA9IGJpdHJhdGVfY29udHJvbGxlci9sb3NzX2Jhc2VkX2JhbmR3aWR0
aF9lc3RpbWF0aW9uLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI2QjIx
QjFGRjM5MDBBNURGMjcgLyoga2V5X2Rlcml2YXRpb24uY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBrZXlfZGVyaXZhdGlvbi5jYzsgcGF0aCA9IHJ0Y19iYXNlL2tleV9k
ZXJpdmF0aW9uLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI2QzIxQjFG
RjNBMDBBNURGMjcgLyoga2V5X2Rlcml2YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0ga2V5X2Rlcml2YXRpb24uaDsgcGF0aCA9IHJ0Y19iYXNlL2tleV9kZXJpdmF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjZGMjFCMUZGNzQwMEE1REYy
NyAvKiBoZHJfbWV0YWRhdGEuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBoZHJfbWV0YWRhdGEuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjcw
MjFCMUZGNzQwMEE1REYyNyAvKiBoZHJfbWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gaGRyX21ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxRkNCQjczMjFCMUZGQTQwMEE1REYyNyAvKiBjb2NvYV90aHJlYWRpbmcubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBjb2NvYV90aHJlYWRpbmcubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjc0MjFCMUZGQTQwMEE1REYyNyAvKiBjb2Nv
YV90aHJlYWRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29jb2FfdGhy
ZWFkaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkNCQjc3MjFCMUZGQkYw
MEE1REYyNyAvKiBhc2NpaS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBhc2Np
aS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI3ODIxQjFGRkMwMDBBNURG
MjcgLyogYXNjaWkuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBhc2Np
aS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCN0IyMUIxRkZGNTAwQTVE
RjI3IC8qIG9wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IG9wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5jYzsgcGF0aCA9
IHJ0Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5jYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDFGQ0JCN0MyMUIxRkZGNTAwQTVERjI3IC8qIG9wZW5zc2xfa2V5X2Rl
cml2YXRpb25faGtkZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBvcGVuc3Ns
X2tleV9kZXJpdmF0aW9uX2hrZGYuaDsgcGF0aCA9IHJ0Y19iYXNlL29wZW5zc2xfa2V5X2Rlcml2
YXRpb25faGtkZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZDQkI3RjIxQjIw
MDExMDBBNURGMjcgLyogc3RyaW5nX3ZpZXcuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBzdHJpbmdfdmlldy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFGQ0JCODIyMUIyMDA3QjAwQTVERjI3IC8qIG1lbXV0aWwuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBtZW11dGlsLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUZDQkI4MzIxQjIwMDdCMDBBNURGMjcgLyogbWVtdXRpbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBtZW11dGlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxRkNCQjg3MjFCMjAwREIwMEE1REYyNyAvKiBSVENWaWRlb0VuY29kZXJTZXR0aW5ncy5t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBSVENWaWRlb0VuY29kZXJTZXR0
aW5ncy5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZFODY0NDIxNUM1MjVGMDBC
NjJDMDcgLyogZ2VudmVyc2lvbi5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBn
ZW52ZXJzaW9uLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkU4NjQ1MjE1QzUy
NjAwMEI2MkMwNyAvKiBuYXNtLWV2YWwuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRo
ID0gIm5hc20tZXZhbC5jIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGRTg2NDYy
MTVDNTI2MDAwQjYyQzA3IC8qIG5hc20tZXZhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSAibmFzbS1ldmFsLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTg4
Nyw3ICs1OTMzLDYgQEAKIAkJNUM0QjRDMTIxRTQzMUY3NTAwMjY1MUM4IC8qIGk0MjBfYnVmZmVy
X3Bvb2wuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBpNDIwX2J1ZmZl
cl9wb29sLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzRCNEMxMzFFNDMxRjc1
MDAyNjUxQzggLyogaW5jb21pbmdfdmlkZW9fc3RyZWFtLmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gaW5jb21pbmdfdmlkZW9fc3RyZWFtLmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1QzRCNEMxNTFFNDMxRjc1MDAyNjUxQzggLyogdmlkZW9fZnJhbWVf
YnVmZmVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdmlkZW9fZnJh
bWVfYnVmZmVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzRCNEMxNjFFNDMx
Rjc1MDAyNjUxQzggLyogdmlkZW9fZnJhbWUuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSB2aWRlb19mcmFtZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUM0QjRDMTcxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX3JlbmRlcl9mcmFtZXMuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB2aWRlb19yZW5kZXJfZnJhbWVzLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzRCNEMxODFFNDMxRjc1MDAyNjUxQzggLyog
dmlkZW9fcmVuZGVyX2ZyYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB2
aWRlb19yZW5kZXJfZnJhbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEI0
QzI0MUU0MzFGOUMwMDI2NTFDOCAvKiBhdWRpb19jb252ZXJ0ZXIuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBhdWRpb19jb252ZXJ0ZXIuY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02MDI4LDggKzYwNzMsNiBAQAogCQk1QzYzRjlEOTFFNDE3NEY2MDAy
Q0E1MzEgLyogdHVybnNlcnZlci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IHR1cm5zZXJ2ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjNGOURB
MUU0MTc0RjYwMDJDQTUzMSAvKiB0dXJuc2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IHR1cm5zZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2
M0Y5REIxRTQxNzRGNjAwMkNBNTMxIC8qIHVkcHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gdWRwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzYz
RkEzQTFFNDE3NjFGMDAyQ0E1MzEgLyogYnVuZGxlZmlsdGVyLmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gYnVuZGxlZmlsdGVyLmNjOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1QzYzRkEzQjFFNDE3NjFGMDAyQ0E1MzEgLyogYnVuZGxlZmlsdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGJ1bmRsZWZpbHRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzYzRkEzRDFFNDE3NjFGMDAyQ0E1MzEgLyogY2hhbm5lbC5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNoYW5uZWwuY2M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjNGQTNFMUU0MTc2MUYwMDJDQTUzMSAvKiBjaGFu
bmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNoYW5uZWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2M0ZBNDAxRTQxNzYxRjAwMkNBNTMxIC8qIGNoYW5u
ZWxtYW5hZ2VyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY2hhbm5l
bG1hbmFnZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjM0LDggKzYyNzcs
NiBAQAogCQk1Q0REODM2QzFFNDM5QTM1MDA2MjFFOTIgLyogZnJhbWVfZHJvcHBlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmcmFtZV9kcm9wcGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4MzZEMUU0MzlBMzUwMDYyMUU5MiAvKiBpdmZfZmlsZV93
cml0ZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBpdmZfZmlsZV93
cml0ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4MzZFMUU0MzlBMzUw
MDYyMUU5MiAvKiBpdmZfZmlsZV93cml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gaXZmX2ZpbGVfd3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVD
REQ4MzZGMUU0MzlBMzUwMDYyMUU5MiAvKiBtb3ZpbmdfYXZlcmFnZS5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1vdmluZ19hdmVyYWdlLmNjOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1Q0REODM3MDFFNDM5QTM1MDA2MjFFOTIgLyogbW92aW5nX2F2ZXJh
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbW92aW5nX2F2ZXJhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDgzNzMxRTQzOUEzNTAwNjIxRTkyIC8q
IHF1YWxpdHlfc2NhbGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
cXVhbGl0eV9zY2FsZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4Mzc0
MUU0MzlBMzUwMDYyMUU5MiAvKiBxdWFsaXR5X3NjYWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBxdWFsaXR5X3NjYWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0REODM3NzFFNDM5QTM1MDA2MjFFOTIgLyogdnA4X2hlYWRlcl9wYXJzZXIuY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB2cDhfaGVhZGVyX3BhcnNlci5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzNDYsOCArNjM4Nyw2IEBACiAJCTVDREQ4
NEY5MUU0M0IxRUEwMDYyMUU5MiAvKiBhdWRpb19jb2RpbmdfbW9kdWxlLmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gYXVkaW9fY29kaW5nX21vZHVsZS5jYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDg0RkIxRTQzQjFFQTAwNjIxRTkyIC8qIGNhbGxf
c3RhdGlzdGljcy5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNhbGxf
c3RhdGlzdGljcy5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDg0RkMxRTQz
QjFFQTAwNjIxRTkyIC8qIGNhbGxfc3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBjYWxsX3N0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNUNERDg0RkUxRTQzQjFFQTAwNjIxRTkyIC8qIGNvZGVjX21hbmFnZXIuY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjb2RlY19tYW5hZ2VyLmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1Q0REODRGRjFFNDNCMUVBMDA2MjFFOTIgLyogY29kZWNfbWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb2RlY19tYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4NTAxMUU0M0IxRUEwMDYyMUU5MiAv
KiByZW50X2FfY29kZWMuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBy
ZW50X2FfY29kZWMuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4NTAyMUU0
M0IxRUEwMDYyMUU5MiAvKiByZW50X2FfY29kZWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gcmVudF9hX2NvZGVjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
REQ4NTFDMUU0M0IzOUMwMDYyMUU5MiAvKiBiaXRyYXRlX2FsbG9jYXRvci5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGJpdHJhdGVfYWxsb2NhdG9yLmNjOyBwYXRoID0g
Y2FsbC9iaXRyYXRlX2FsbG9jYXRvci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTY3MzQsOCArNjc3Myw2IEBACiAJCTVDREQ4OUUyMUU0M0JGQjMwMDYyMUU5MiAvKiByYW5kb21f
dmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJhbmRvbV92ZWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDg5RTQxRTQzQkZCMzAwNjIxRTky
IC8qIHJlZF9wYXlsb2FkX3NwbGl0dGVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gcmVkX3BheWxvYWRfc3BsaXR0ZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDREQ4OUU1MUU0M0JGQjMwMDYyMUU5MiAvKiByZWRfcGF5bG9hZF9zcGxpdHRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSByZWRfcGF5bG9hZF9zcGxpdHRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0REODlFNjFFNDNCRkIzMDA2MjFFOTIg
LyogcnRjcC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHJ0Y3AuY2M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDREQ4OUU3MUU0M0JGQjMwMDYyMUU5MiAv
KiBydGNwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJ0Y3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDg5RTgxRTQzQkZCMzAwNjIxRTkyIC8qIHN0YXRp
c3RpY3NfY2FsY3VsYXRvci5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IHN0YXRpc3RpY3NfY2FsY3VsYXRvci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUNERDg5RTkxRTQzQkZCMzAwNjIxRTkyIC8qIHN0YXRpc3RpY3NfY2FsY3VsYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBzdGF0aXN0aWNzX2NhbGN1bGF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDg5RUIxRTQzQkZCMzAwNjIxRTkyIC8qIHN5
bmNfYnVmZmVyLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gc3luY19i
dWZmZXIuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjQzLDYgKzc2ODAsMTIg
QEAKIAkJNDEwNkQ1NkIyMTZDMkI5MTAwMUUzQzQwIC8qIHN0cmluZ3MgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxRkNCQjgxMjFCMjAwNUEwMEE1REYy
NyAvKiBpbnRlcm5hbCAqLywKKwkJCQk0MUZDQkI3ODIxQjFGRkMwMDBBNURGMjcgLyogYXNjaWku
Y2MgKi8sCisJCQkJNDFGQ0JCNzcyMUIxRkZCRjAwQTVERjI3IC8qIGFzY2lpLmggKi8sCisJCQkJ
NDFGQ0JCM0EyMUIxRkQzRjAwQTVERjI3IC8qIG1hdGNoLmNjICovLAorCQkJCTQxRkNCQjNCMjFC
MUZEM0YwMEE1REYyNyAvKiBtYXRjaC5oICovLAorCQkJCTQxRkNCQjdGMjFCMjAwMTEwMEE1REYy
NyAvKiBzdHJpbmdfdmlldy5jYyAqLywKIAkJCQk0MTA2RDU2QzIxNkMyQkE5MDAxRTNDNDAgLyog
c3RyaW5nX3ZpZXcuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gc3RyaW5nczsKQEAgLTc3MTMsMjMg
Kzc3NTYsMjYgQEAKIAkJCQk0MUREQjI3NjIxMjY3QUMxMDAyOTZENDcgLyogYnVpbHRpbl92aWRl
b19kZWNvZGVyX2ZhY3RvcnkuaCAqLywKIAkJCQk0MUUwMkNDMjIxMjczNTg3MDBDMjdDRDYgLyog
YnVpbHRpbl92aWRlb19lbmNvZGVyX2ZhY3RvcnkuY2MgKi8sCiAJCQkJNDFEREIyNzcyMTI2N0FD
MTAwMjk2RDQ3IC8qIGJ1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmggKi8sCisJCQkJNDFG
Q0JCNjMyMUIxRkVGNTAwQTVERjI3IC8qIGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5ZXJzLmNjICov
LAorCQkJCTQxRkNCQjYxMjFCMUZFRjUwMEE1REYyNyAvKiBjcmVhdGVfdnA4X3RlbXBvcmFsX2xh
eWVycy5oICovLAogCQkJCTQxRERCMjdBMjEyNjdBQzIwMDI5NkQ0NyAvKiBzZHBfdmlkZW9fZm9y
bWF0LmNjICovLAogCQkJCTQxNDVGNjE5MUZFMUYzOEIwMEVCOUNBRiAvKiBzZHBfdmlkZW9fZm9y
bWF0LmggKi8sCiAJCQkJNDFEREIyNzAyMTI2N0FDMDAwMjk2RDQ3IC8qIHZpZGVvX2NvZGVjLmNj
ICovLAogCQkJCTQxRERCMjcxMjEyNjdBQzAwMDI5NkQ0NyAvKiB2aWRlb19jb2RlYy5oICovLAor
CQkJCTQxRERCMjcyMjEyNjdBQzAwMDI5NkQ0NyAvKiB2aWRlb19kZWNvZGVyLmNjICovLAorCQkJ
CTQxNDVFNDhCMUVGODhCOTYwMEZDRjZFNiAvKiB2aWRlb19kZWNvZGVyLmggKi8sCiAJCQkJNDE3
OTUzRjAyMTY5ODQ1NTAwMjgyNjZCIC8qIHZpZGVvX2RlY29kZXJfZmFjdG9yeS5jYyAqLywKIAkJ
CQk0MTQ1RjYxQTFGRTFGMzhDMDBFQjlDQUYgLyogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmggKi8s
CiAJCQkJNDFEREIyNzQyMTI2N0FDMTAwMjk2RDQ3IC8qIHZpZGVvX2RlY29kZXJfc29mdHdhcmVf
ZmFsbGJhY2tfd3JhcHBlci5jYyAqLywKIAkJCQk0MUREQjI3ODIxMjY3QUMxMDAyOTZENDcgLyog
dmlkZW9fZGVjb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyLmggKi8sCi0JCQkJNDFEREIy
NzIyMTI2N0FDMDAwMjk2RDQ3IC8qIHZpZGVvX2RlY29kZXIuY2MgKi8sCi0JCQkJNDE0NUU0OEIx
RUY4OEI5NjAwRkNGNkU2IC8qIHZpZGVvX2RlY29kZXIuaCAqLywKKwkJCQk0MTQ1RjYxQzFGRTFG
MzhEMDBFQjlDQUYgLyogdmlkZW9fZW5jb2Rlci5jYyAqLywKKwkJCQk0MTQ1RTQ4QzFFRjg4QjlE
MDBGQ0Y2RTYgLyogdmlkZW9fZW5jb2Rlci5oICovLAogCQkJCTQxRTAyQ0MzMjEyNzM1ODgwMEMy
N0NENiAvKiB2aWRlb19lbmNvZGVyX2NvbmZpZy5jYyAqLywKIAkJCQk0MUREQjI3QjIxMjY3QUMy
MDAyOTZENDcgLyogdmlkZW9fZW5jb2Rlcl9jb25maWcuaCAqLywKIAkJCQk0MTQ1RjYxQjFGRTFG
MzhEMDBFQjlDQUYgLyogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmggKi8sCiAJCQkJNDFEREIyNzUy
MTI2N0FDMTAwMjk2RDQ3IC8qIHZpZGVvX2VuY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBl
ci5jYyAqLywKIAkJCQk0MUREQjI3OTIxMjY3QUMyMDAyOTZENDcgLyogdmlkZW9fZW5jb2Rlcl9z
b2Z0d2FyZV9mYWxsYmFja193cmFwcGVyLmggKi8sCi0JCQkJNDE0NUY2MUMxRkUxRjM4RDAwRUI5
Q0FGIC8qIHZpZGVvX2VuY29kZXIuY2MgKi8sCi0JCQkJNDE0NUU0OEMxRUY4OEI5RDAwRkNGNkU2
IC8qIHZpZGVvX2VuY29kZXIuaCAqLywKKwkJCQk0MUZDQkI2MjIxQjFGRUY1MDBBNURGMjcgLyog
dnA4X3RlbXBvcmFsX2xheWVycy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSB2aWRlb19jb2RlY3M7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzc5MCw3ICs3ODM2LDcgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTQxM0EyMTgwMUZFMThEN0EwMDM3M0U5OSAvKiBERVBTICovLAogCQkJ
CTQxOTI0MTY1MjEyNzM4NzkwMDYzNEZDRiAvKiBleHBlcmltZW50cyAqLywKLQkJCQk0MUY5QkZD
ODIwNTFERDhFMDBBQkYwQjkgLyogZXhwZXJpbWVudHMgKi8sCisJCQkJNDFGQ0JCMjQyMUIxRjg1
RDAwQTVERjI3IC8qIG5ldHdvcmsgKi8sCiAJCQkJNDE5QzgzNDExRkUyNDYzODAwNDBDMzBGIC8q
IG51bWVyaWNzICovLAogCQkJCTQxM0EyMUZEMUZFMThEQkIwMDM3M0U5OSAvKiBPV05FUlMgKi8s
CiAJCQkJNDFEREIyNjcyMTI2NzlBRTAwMjk2RDQ3IC8qIHN0cmluZ3MgKi8sCkBAIC03ODgxLDgg
Kzc5MjcsNiBAQAogCQkJCTQxM0EyMjg3MUZFMThERkQwMDM3M0U5OSAvKiBmaWxlcm90YXRpbmdz
dHJlYW0uY2MgKi8sCiAJCQkJNDEzQTIxOEMxRkUxOEQ4MzAwMzczRTk5IC8qIGZpbGVyb3RhdGlu
Z3N0cmVhbS5oICovLAogCQkJCTQxM0EyMjVBMUZFMThERTUwMDM3M0U5OSAvKiBmaWxlcm90YXRp
bmdzdHJlYW1fdW5pdHRlc3QuY2MgKi8sCi0JCQkJNDEzQTIyNjIxRkUxOERFOTAwMzczRTk5IC8q
IGZpbGV1dGlscy5jYyAqLywKLQkJCQk0MTNBMjI2QTFGRTE4REYwMDAzNzNFOTkgLyogZmlsZXV0
aWxzLmggKi8sCiAJCQkJNDEzQTIyMTcxRkUxOERDNjAwMzczRTk5IC8qIGZpcmV3YWxsc29ja2V0
c2VydmVyLmNjICovLAogCQkJCTQxM0EyMjhDMUZFMThERkUwMDM3M0U5OSAvKiBmaXJld2FsbHNv
Y2tldHNlcnZlci5oICovLAogCQkJCTQxM0EyMTYxMUZFMThENUIwMDM3M0U5OSAvKiBmbGFncy5j
YyAqLywKQEAgLTc5MDcsNiArNzk1MSw4IEBACiAJCQkJNDEzQTIxNEUxRkUxOEQ1MDAwMzczRTk5
IC8qIGlwYWRkcmVzcy5oICovLAogCQkJCTQxM0EyMTZBMUZFMThENjcwMDM3M0U5OSAvKiBpcGFk
ZHJlc3NfdW5pdHRlc3QuY2MgKi8sCiAJCQkJNDEzQTIyMTIxRkUxOERDNDAwMzczRTk5IC8qIGtl
ZXBfcmVmX3VudGlsX2RvbmUuaCAqLywKKwkJCQk0MUZDQkI2QjIxQjFGRjM5MDBBNURGMjcgLyog
a2V5X2Rlcml2YXRpb24uY2MgKi8sCisJCQkJNDFGQ0JCNkMyMUIxRkYzQTAwQTVERjI3IC8qIGtl
eV9kZXJpdmF0aW9uLmggKi8sCiAJCQkJNDEzQTIyOTkxRkUxOEUwMzAwMzczRTk5IC8qIGxvY2F0
aW9uLmNjICovLAogCQkJCTQxM0EyMjlBMUZFMThFMDQwMDM3M0U5OSAvKiBsb2NhdGlvbi5oICov
LAogCQkJCTQxM0EyMTcyMUZFMThENkQwMDM3M0U5OSAvKiBsb2dnaW5nLmNjICovLApAQCAtNzk0
NywxNCArNzk5MywxNCBAQAogCQkJCTQxM0EyMjM4MUZFMThERDYwMDM3M0U5OSAvKiBuZXR3b3Jr
bW9uaXRvci5jYyAqLywKIAkJCQk0MTNBMjIyOTFGRTE4RENGMDAzNzNFOTkgLyogbmV0d29ya21v
bml0b3IuaCAqLywKIAkJCQk0MTNBMjE2OTFGRTE4RDY1MDAzNzNFOTkgLyogbmV0d29ya3JvdXRl
LmggKi8sCi0JCQkJNDEzQTIyMEMxRkUxOERDMTAwMzczRTk5IC8qIG5vb3AuY2MgKi8sCi0JCQkJ
NDEzQTIyOUMxRkUxOEUwNDAwMzczRTk5IC8qIG5vb3AubW0gKi8sCiAJCQkJNDEzQTIyN0YxRkUx
OERGOTAwMzczRTk5IC8qIG51bGxzb2NrZXRzZXJ2ZXIuY2MgKi8sCiAJCQkJNDEzQTIyNkQxRkUx
OERGMTAwMzczRTk5IC8qIG51bGxzb2NrZXRzZXJ2ZXIuaCAqLywKIAkJCQk0MTNBMjI3QzFGRTE4
REY4MDAzNzNFOTkgLyogbnVsbHNvY2tldHNlcnZlcl91bml0dGVzdC5jYyAqLywKIAkJCQk0MTNB
MjFFMjFGRTE4REFGMDAzNzNFOTkgLyogb25ldGltZWV2ZW50LmggKi8sCiAJCQkJNDEzQTIxNjIx
RkUxOEQ1RDAwMzczRTk5IC8qIG9uZXRpbWVldmVudF91bml0dGVzdC5jYyAqLywKIAkJCQk0MTNB
MjI3NTFGRTE4REY2MDAzNzNFOTkgLyogb3BlbnNzbC5oICovLAorCQkJCTQxRkNCQjdCMjFCMUZG
RjUwMEE1REYyNyAvKiBvcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2MgKi8sCisJCQkJNDFG
Q0JCN0MyMUIxRkZGNTAwQTVERjI3IC8qIG9wZW5zc2xfa2V5X2Rlcml2YXRpb25faGtkZi5oICov
LAogCQkJCTQxM0EyMTlBMUZFMThEOEIwMDM3M0U5OSAvKiBvcGVuc3NsYWRhcHRlci5jYyAqLywK
IAkJCQk0MTNBMjFEQjFGRTE4REFDMDAzNzNFOTkgLyogb3BlbnNzbGFkYXB0ZXIuaCAqLywKIAkJ
CQk0MTNBMjI3RTFGRTE4REY5MDAzNzNFOTkgLyogb3BlbnNzbGFkYXB0ZXJfdW5pdHRlc3QuY2Mg
Ki8sCkBAIC03OTcwLDEyICs4MDE2LDYgQEAKIAkJCQk0MTNBMjI2MzFGRTE4REVBMDAzNzNFOTkg
Lyogb3BlbnNzbHN0cmVhbWFkYXB0ZXIuaCAqLywKIAkJCQk0MUREQjI1RjIxMjY3OUEyMDAyOTZE
NDcgLyogb3BlbnNzbHV0aWxpdHkuY2MgKi8sCiAJCQkJNDFEREIyNUIyMTI2Nzk5RjAwMjk2RDQ3
IC8qIG9wZW5zc2x1dGlsaXR5LmggKi8sCi0JCQkJNDEzQTIxRjYxRkUxOERCODAwMzczRTk5IC8q
IG9wdGlvbnNmaWxlLmNjICovLAotCQkJCTQxM0EyMUYxMUZFMThEQjYwMDM3M0U5OSAvKiBvcHRp
b25zZmlsZS5oICovLAotCQkJCTQxM0EyMUM3MUZFMThEQTEwMDM3M0U5OSAvKiBvcHRpb25zZmls
ZV91bml0dGVzdC5jYyAqLywKLQkJCQk0MTNBMjFFODFGRTE4REIyMDAzNzNFOTkgLyogcGF0aHV0
aWxzLmNjICovLAotCQkJCTQxM0EyMjNEMUZFMThERDkwMDM3M0U5OSAvKiBwYXRodXRpbHMuaCAq
LywKLQkJCQk0MTNBMjE5RDFGRTE4RDhEMDAzNzNFOTkgLyogcGF0aHV0aWxzX3VuaXR0ZXN0LmNj
ICovLAogCQkJCTQxM0EyMUU5MUZFMThEQjIwMDM3M0U5OSAvKiBwaHlzaWNhbHNvY2tldHNlcnZl
ci5jYyAqLywKIAkJCQk0MTNBMjI5ODFGRTE4RTAzMDAzNzNFOTkgLyogcGh5c2ljYWxzb2NrZXRz
ZXJ2ZXIuaCAqLywKIAkJCQk0MTNBMjI3QjFGRTE4REY4MDAzNzNFOTkgLyogcGh5c2ljYWxzb2Nr
ZXRzZXJ2ZXJfdW5pdHRlc3QuY2MgKi8sCkBAIC04MTAwLDcgKzgxNDAsNiBAQAogCQkJCTQxM0Ey
MUZDMUZFMThEQkIwMDM3M0U5OSAvKiB0aHJlYWRfY2hlY2tlcl9pbXBsLmNjICovLAogCQkJCTQx
M0EyMTVFMUZFMThENTkwMDM3M0U5OSAvKiB0aHJlYWRfY2hlY2tlcl9pbXBsLmggKi8sCiAJCQkJ
NDEzQTIxQjYxRkUxOEQ5ODAwMzczRTk5IC8qIHRocmVhZF9jaGVja2VyX3VuaXR0ZXN0LmNjICov
LAotCQkJCTQxM0EyMjhBMUZFMThERkUwMDM3M0U5OSAvKiB0aHJlYWRfZGFyd2luLm1tICovLAog
CQkJCTQxM0EyMjI2MUZFMThEQ0QwMDM3M0U5OSAvKiB0aHJlYWRfdW5pdHRlc3QuY2MgKi8sCiAJ
CQkJNDEzQTIyMjgxRkUxOERDRTAwMzczRTk5IC8qIHRpbWVzdGFtcGFsaWduZXIuY2MgKi8sCiAJ
CQkJNDEzQTIyMDExRkUxOERCRDAwMzczRTk5IC8qIHRpbWVzdGFtcGFsaWduZXIuaCAqLywKQEAg
LTgxMTEsOCArODE1MCw2IEBACiAJCQkJNDEzQTIxQUIxRkUxOEQ5MzAwMzczRTk5IC8qIHRyYWNl
X2V2ZW50LmggKi8sCiAJCQkJNDEzQTIxRjcxRkUxOERCODAwMzczRTk5IC8qIHR5cGVfdHJhaXRz
LmggKi8sCiAJCQkJNDEzQTIyNEMxRkUxOERFMDAwMzczRTk5IC8qIHVuaXR0ZXN0X21haW4uY2Mg
Ki8sCi0JCQkJNDEzQTIyMzMxRkUxOERENDAwMzczRTk5IC8qIHVuaXhmaWxlc3lzdGVtLmNjICov
LAotCQkJCTQxM0EyMTQ4MUZFMThENEQwMDM3M0U5OSAvKiB1bml4ZmlsZXN5c3RlbS5oICovLAog
CQkJCTQxM0EyMURBMUZFMThEQUMwMDM3M0U5OSAvKiB2aXJ0dWFsc29ja2V0X3VuaXR0ZXN0LmNj
ICovLAogCQkJCTQxM0EyMUJFMUZFMThEOUMwMDM3M0U5OSAvKiB2aXJ0dWFsc29ja2V0c2VydmVy
LmNjICovLAogCQkJCTQxM0EyMTYzMUZFMThENUUwMDM3M0U5OSAvKiB2aXJ0dWFsc29ja2V0c2Vy
dmVyLmggKi8sCkBAIC04MjA1LDExICs4MjQyLDExIEBACiAJCTQxM0FEMTlGMjEyNjVBREYwMDNG
NzI2MyAvKiBhYnNsICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQk0MTA2RDU2QjIxNkMyQjkxMDAxRTNDNDAgLyogc3RyaW5ncyAqLywKIAkJCQk0MTNBRDFB
MDIxMjY1QUZBMDAzRjcyNjMgLyogYWxnb3JpdGhtICovLAogCQkJCTQxM0FEMUE2MjEyNjVCMzUw
MDNGNzI2MyAvKiBiYXNlICovLAogCQkJCTQxRERCMjQ1MjEyNjVCODIwMDI5NkQ0NyAvKiBjb250
YWluZXIgKi8sCiAJCQkJNDFBMDhCQjYyMTI2OEE2QTAwMUQ1RDdCIC8qIG1lbW9yeSAqLywKKwkJ
CQk0MTA2RDU2QjIxNkMyQjkxMDAxRTNDNDAgLyogc3RyaW5ncyAqLywKIAkJCQk0MUREQjI0QTIx
MjY1QkE4MDAyOTZENDcgLyogdHlwZXMgKi8sCiAJCQkpOwogCQkJbmFtZSA9IGFic2w7CkBAIC04
MjI4LDYgKzgyNjUsNyBAQAogCQk0MTNBRDFBNjIxMjY1QjM1MDAzRjcyNjMgLyogYmFzZSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDFGQ0JCMUYyMUIx
RjgxNDAwQTVERjI3IC8qIGludGVybmFsICovLAogCQkJCTQxM0FEMUE5MjEyNjVCNTkwMDNGNzI2
MyAvKiBjYXN0cy5oICovLAogCQkJCTQxM0FEMUE4MjEyNjVCNTkwMDNGNzI2MyAvKiBkeW5hbWlj
X2Fubm90YXRpb25zLmNjICovLAogCQkJCTQxM0FEMUFBMjEyNjVCNTkwMDNGNzI2MyAvKiBtYWNy
b3MuaCAqLywKQEAgLTgyNTAsOSArODI4OCw5IEBACiAJCTQxM0U2N0E2MjE2OTg5MzYwMEVGMzdF
RCAvKiB2aWRlb19mcmFtZV9idWZmZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTQxM0U2N0E4MjE2OTg5NEMwMEVGMzdFRCAvKiBSVENOYXRpdmVJNDIw
QnVmZmVyK1ByaXZhdGUuaCAqLywKIAkJCQk0MTNFNjdBOTIxNjk4OTRDMDBFRjM3RUQgLyogUlRD
TmF0aXZlSTQyMEJ1ZmZlci5oICovLAogCQkJCTQxM0U2N0E3MjE2OTg5NEIwMEVGMzdFRCAvKiBS
VENOYXRpdmVJNDIwQnVmZmVyLm1tICovLAotCQkJCTQxM0U2N0E4MjE2OTg5NEMwMEVGMzdFRCAv
KiBSVENOYXRpdmVJNDIwQnVmZmVyK1ByaXZhdGUuaCAqLywKIAkJCQk0MTNFNjdBQTIxNjk4OTRD
MDBFRjM3RUQgLyogUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIuaCAqLywKIAkJCQk0MTQ0QjNE
MDIxNjk4OTY2MDA0MzYzQUMgLyogUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIubW0gKi8sCiAJ
CQkpOwpAQCAtODM3MCw5ICs4NDA4LDkgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQxNDRCM0Y0
MjE2QjA4MUIwMDQzNjNBQyAvKiBSVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5oICovLAogCQkJCTQx
NDRCM0YzMjE2QjA4MUEwMDQzNjNBQyAvKiBSVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbSAqLywK
KwkJCQk0MTg4OUQ3NDIxNkJCN0I2MDA0NjE0REQgLyogUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJz
K1ByaXZhdGUuaCAqLywKIAkJCQk0MTRGQjg2OTIxNkJCNzY3MDAxRjU0OTIgLyogUlRDUnRwRW5j
b2RpbmdQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDE0RkI4NkEyMTZCQjc2ODAwMUY1NDkyIC8qIFJU
Q1J0cEVuY29kaW5nUGFyYW1ldGVycy5tbSAqLywKLQkJCQk0MTg4OUQ3NDIxNkJCN0I2MDA0NjE0
REQgLyogUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzK1ByaXZhdGUuaCAqLywKIAkJCQk0MTRGQjg2
ODIxNkJCNzY2MDAxRjU0OTIgLyogUlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlcitQcml2YXRlLmgg
Ki8sCiAJCQkJNDE0RkI4NjcyMTZCQjc2NjAwMUY1NDkyIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25I
ZWFkZXIrUHJpdmF0ZS5tbSAqLywKIAkJCQk0MTQ0QjNFNzIxNjlDNUUzMDA0MzYzQUMgLyogUlRD
VmlkZW9Db2RlY0luZm8rUHJpdmF0ZS5oICovLApAQCAtODQ2MiwxMCArODUwMCwxMCBAQAogCQkJ
CTQxNjIyNUQwMjE2OTgxODEwMEE5MUM5QiAvKiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkubW0gKi8s
CiAJCQkJNDE2MjI1Q0QyMTY5ODE4MDAwQTkxQzlCIC8qIHZpZGVvX2VuY29kZXJfZmFjdG9yeS5o
ICovLAogCQkJCTQxNjIyNUNDMjE2OTgxODAwMEE5MUM5QiAvKiB2aWRlb19lbmNvZGVyX2ZhY3Rv
cnkubW0gKi8sCi0JCQkJNDE2MjI1Q0IyMTY5ODE4MDAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1lX2J1
ZmZlci5oICovLAotCQkJCTQxNjIyNUNGMjE2OTgxODEwMEE5MUM5QiAvKiB2aWRlb19mcmFtZV9i
dWZmZXIubW0gKi8sCiAJCQkJNDE2MjI1Q0UyMTY5ODE4MDAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1l
LmggKi8sCiAJCQkJNDE2MjI1RDEyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1lLm1tICov
LAorCQkJCTQxNjIyNUNCMjE2OTgxODAwMEE5MUM5QiAvKiB2aWRlb19mcmFtZV9idWZmZXIuaCAq
LywKKwkJCQk0MTYyMjVDRjIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZnJhbWVfYnVmZmVyLm1t
ICovLAogCQkJKTsKIAkJCXBhdGggPSBhcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtODQ4OCw4ICs4NTI2LDggQEAKIAkJNDE2MjI1RUEyMTY5ODFCQTAwQTkxQzlCIC8qIGNvbXBv
bmVudHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQx
M0U2Nzg3MjE2OTg3QTUwMEVGMzdFRCAvKiB2aWRlb19mcmFtZV9idWZmZXIgKi8sCiAJCQkJNDE2
MjI1RUIyMTY5ODFDRTAwQTkxQzlCIC8qIHZpZGVvX2NvZGVjICovLAorCQkJCTQxM0U2Nzg3MjE2
OTg3QTUwMEVGMzdFRCAvKiB2aWRlb19mcmFtZV9idWZmZXIgKi8sCiAJCQkpOwogCQkJbmFtZSA9
IGNvbXBvbmVudHM7CiAJCQlwYXRoID0gc2RrL29iamMvY29tcG9uZW50czsKQEAgLTg1MDIsOSAr
ODU0MCw5IEBACiAJCQkJNDE2MjI1RjUyMTY5ODFGNDAwQTkxQzlCIC8qIGhlbHBlcnMuaCAqLywK
IAkJCQk0MTc5NTNBQzIxNjk4MjNEMDAyODI2NkIgLyogbmFsdV9yZXdyaXRlci5jYyAqLywKIAkJ
CQk0MTE1MjFENTIxNjk4MjIwMDAwQUJBRjcgLyogbmFsdV9yZXdyaXRlci5oICovLAorCQkJCTQx
Nzk1M0IyMjE2OTgyNDEwMDI4MjY2QiAvKiBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQrUHJpdmF0
ZS5oICovLAogCQkJCTQxNjIyNUYxMjE2OTgxRjMwMEE5MUM5QiAvKiBSVENDb2RlY1NwZWNpZmlj
SW5mb0gyNjQuaCAqLywKIAkJCQk0MTYyMjVFRDIxNjk4MUYyMDBBOTFDOUIgLyogUlRDQ29kZWNT
cGVjaWZpY0luZm9IMjY0Lm1tICovLAotCQkJCTQxNzk1M0IyMjE2OTgyNDEwMDI4MjY2QiAvKiBS
VENDb2RlY1NwZWNpZmljSW5mb0gyNjQrUHJpdmF0ZS5oICovLAogCQkJCTQxNzk1M0IzMjE2OTgy
NDIwMDI4MjY2QiAvKiBSVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5oICovLAogCQkJCTQx
Nzk1M0FEMjE2OTgyM0UwMDI4MjY2QiAvKiBSVENEZWZhdWx0VmlkZW9EZWNvZGVyRmFjdG9yeS5t
ICovLAogCQkJCTQxNjIyNUY3MjE2OTgxRjQwMEE5MUM5QiAvKiBSVENEZWZhdWx0VmlkZW9FbmNv
ZGVyRmFjdG9yeS5oICovLApAQCAtODU0NSwxMSArODU4MywxMSBAQAogCQk0MTc5NTNERDIxNjk4
M0IyMDAyODI2NkIgLyogaW5jbHVkZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJNDE3OTUzRTAyMTY5ODNDOTAwMjgyNjZCIC8qIG1vZHVsZV9jb21tb25f
dHlwZXNfcHVibGljLmggKi8sCisJCQkJNDE3OTUzREYyMTY5ODNDOTAwMjgyNjZCIC8qIG1vZHVs
ZS5oICovLAogCQkJCTQxNzk1M0UxMjE2OTgzQ0EwMDI4MjY2QiAvKiBtb2R1bGVfY29tbW9uX3R5
cGVzLmNjICovLAogCQkJCTQxNzk1M0UyMjE2OTgzQ0EwMDI4MjY2QiAvKiBtb2R1bGVfY29tbW9u
X3R5cGVzLmggKi8sCisJCQkJNDE3OTUzRTAyMTY5ODNDOTAwMjgyNjZCIC8qIG1vZHVsZV9jb21t
b25fdHlwZXNfcHVibGljLmggKi8sCiAJCQkJNDE3OTUzREUyMTY5ODNDOTAwMjgyNjZCIC8qIG1v
ZHVsZV9mZWNfdHlwZXMuaCAqLywKLQkJCQk0MTc5NTNERjIxNjk4M0M5MDAyODI2NkIgLyogbW9k
dWxlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGluY2x1ZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtODU3Miw3ICs4NjEwLDcgQEAKIAkJCQk0MTNFNjc5QzIxNjk4ODk0MDBFRjM3
RUQgLyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmggKi8sCiAJCQkJNDEzRTY3OUYyMTY5
ODg5NTAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5tICovLAogCQkJCTQx
M0U2NzgzMjE2OTg3N0QwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJTZXR0aW5ncy5oICovLAot
CQkJCTQxM0U2Nzg0MjE2OTg3N0QwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJTZXR0aW5ncy5t
bSAqLywKKwkJCQk0MUZDQkI4NzIxQjIwMERCMDBBNURGMjcgLyogUlRDVmlkZW9FbmNvZGVyU2V0
dGluZ3MubSAqLywKIAkJCQk0MTNFNjc4QzIxNjk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9GcmFt
ZS5oICovLAogCQkJCTQxM0U2NzhEMjE2OTg3REIwMEVGMzdFRCAvKiBSVENWaWRlb0ZyYW1lLm1t
ICovLAogCQkJCTQxM0U2NzhFMjE2OTg3REIwMEVGMzdFRCAvKiBSVENWaWRlb0ZyYW1lQnVmZmVy
LmggKi8sCkBAIC04NTk1LDExICs4NjMzLDExIEBACiAJCTQxNzk1M0ZDMjE2OTg0RjQwMDI4MjY2
QiAvKiB2aWRlb19jb2RlYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0JCQkJNDEzRTY3NjQyMTY5ODU0NTAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclZQOC5t
bSAqLywKIAkJCQk0MTc5NTNGRDIxNjk4NTFGMDAyODI2NkIgLyogUlRDVmlkZW9Db2RlY0NvbnN0
YW50cy5oICovLAogCQkJCTQxNzk1M0ZGMjE2OTg1MUYwMDI4MjY2QiAvKiBSVENWaWRlb0NvZGVj
Q29uc3RhbnRzLm1tICovLAogCQkJCTQxNzk1NDAyMjE2OTg1MjAwMDI4MjY2QiAvKiBSVENWaWRl
b0RlY29kZXJWUDgubW0gKi8sCiAJCQkJNDE3OTU0MDEyMTY5ODUxRjAwMjgyNjZCIC8qIFJUQ1Zp
ZGVvRW5jb2RlclZQOC5oICovLAorCQkJCTQxM0U2NzY0MjE2OTg1NDUwMEVGMzdFRCAvKiBSVENW
aWRlb0VuY29kZXJWUDgubW0gKi8sCiAJCQkJNDE3OTUzRkUyMTY5ODUxRjAwMjgyNjZCIC8qIFJU
Q1dyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIuaCAqLywKIAkJCQk0MTc5NTQwMzIxNjk4NTIwMDAy
ODI2NkIgLyogUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRGVjb2Rlci5tbSAqLywKIAkJCQk0MTc5NTQw
NDIxNjk4NTIwMDAyODI2NkIgLyogUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRW5jb2Rlci5oICovLApA
QCAtODc1MiwxMiArODc5MCwyMCBAQAogCQk0MTkyNDE2NTIxMjczODc5MDA2MzRGQ0YgLyogZXhw
ZXJpbWVudHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTQxRjlCRkM5MjA1MUREQTIwMEFCRjBCOSAvKiBhbHJfZXhwZXJpbWVudC5jYyAqLywKKwkJCQk0
MUY5QkZDQTIwNTFEREEyMDBBQkYwQjkgLyogYWxyX2V4cGVyaW1lbnQuaCAqLywKIAkJCQk0MTky
NDE2QjIxMjczODlCMDA2MzRGQ0YgLyogY29uZ2VzdGlvbl9jb250cm9sbGVyX2V4cGVyaW1lbnQu
Y2MgKi8sCiAJCQkJNDE5MjQxNjcyMTI3Mzg5QTAwNjM0RkNGIC8qIGNvbmdlc3Rpb25fY29udHJv
bGxlcl9leHBlcmltZW50LmggKi8sCisJCQkJNDFGQ0JCNEQyMUIxRkU0NTAwQTVERjI3IC8qIGNw
dV9zcGVlZF9leHBlcmltZW50LmNjICovLAorCQkJCTQxRkNCQjRCMjFCMUZFNDQwMEE1REYyNyAv
KiBjcHVfc3BlZWRfZXhwZXJpbWVudC5oICovLAogCQkJCTQxOTI0MTY4MjEyNzM4OUEwMDYzNEZD
RiAvKiBmaWVsZF90cmlhbF9wYXJzZXIuY2MgKi8sCiAJCQkJNDE5MjQxNjkyMTI3Mzg5QjAwNjM0
RkNGIC8qIGZpZWxkX3RyaWFsX3BhcnNlci5oICovLAogCQkJCTQxOTI0MUU2MjEyNzVBNzYwMDYz
NEZDRiAvKiBmaWVsZF90cmlhbF91bml0cy5jYyAqLywKIAkJCQk0MTkyNDFFNTIxMjc1QTc2MDA2
MzRGQ0YgLyogZmllbGRfdHJpYWxfdW5pdHMuaCAqLywKKwkJCQk0MUZDQkI0QzIxQjFGRTQ0MDBB
NURGMjcgLyogaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuY2MgKi8sCisJCQkJNDFGQ0JC
NEUyMUIxRkU0NTAwQTVERjI3IC8qIGppdHRlcl91cHBlcl9ib3VuZF9leHBlcmltZW50LmggKi8s
CisJCQkJNDFGQ0JCNTAyMUIxRkU0NTAwQTVERjI3IC8qIG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6
ZV9leHBlcmltZW50LmNjICovLAorCQkJCTQxRkNCQjRGMjFCMUZFNDUwMEE1REYyNyAvKiBub3Jt
YWxpemVfc2ltdWxjYXN0X3NpemVfZXhwZXJpbWVudC5oICovLAogCQkJCTQxOTI0MTZBMjEyNzM4
OUIwMDYzNEZDRiAvKiBxdWFsaXR5X3NjYWxpbmdfZXhwZXJpbWVudC5jYyAqLywKIAkJCQk0MTky
NDE2NjIxMjczODlBMDA2MzRGQ0YgLyogcXVhbGl0eV9zY2FsaW5nX2V4cGVyaW1lbnQuaCAqLywK
IAkJCQk0MTc5NTNFODIxNjk4M0YxMDAyODI2NkIgLyogcnR0X211bHRfZXhwZXJpbWVudC5jYyAq
LywKQEAgLTg5MzgsNiArODk4NCw4IEBACiAJCQkJNDE5QzgzNEMxRkUyNDY2NDAwNDBDMzBGIC8q
IGhpc3RvZ3JhbV9wZXJjZW50aWxlX2NvdW50ZXIuaCAqLywKIAkJCQk0MTlDODM0RDFGRTI0NjY0
MDA0MEMzMEYgLyogbWF0aHV0aWxzLmggKi8sCiAJCQkJNDE5QzgzNEExRkUyNDY2NDAwNDBDMzBG
IC8qIG1vZF9vcHMuaCAqLywKKwkJCQk0MUZDQkIxMzIxQjFGN0FBMDBBNURGMjcgLyogbW92aW5n
X2F2ZXJhZ2UuY2MgKi8sCisJCQkJNDFGQ0JCMTQyMUIxRjdBQTAwQTVERjI3IC8qIG1vdmluZ19h
dmVyYWdlLmggKi8sCiAJCQkJNDE5QzgzNDkxRkUyNDY2NDAwNDBDMzBGIC8qIG1vdmluZ19tYXhf
Y291bnRlci5oICovLAogCQkJCTQxOUM4MzQ2MUZFMjQ2NjMwMDQwQzMwRiAvKiBtb3ZpbmdfbWVk
aWFuX2ZpbHRlci5oICovLAogCQkJCTQxOUM4MzQyMUZFMjQ2NjIwMDQwQzMwRiAvKiBwZXJjZW50
aWxlX2ZpbHRlci5oICovLApAQCAtOTE1OSwxNCArOTIwNywxNSBAQAogCQk0MUEwOEJEOTIxMjcy
RjNFMDAxRDVEN0IgLyogYWdjMiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNDEyOTlCOTgyMTI3MzZCMjAwQjM0MTRCIC8qIHJubl92YWQgKi8sCiAJCQkJ
NDFENkI0NkUyMTI3MzFBNDAwOEY5MzUzIC8qIGFkYXB0aXZlX2FnYy5jYyAqLywKIAkJCQk0MUQ2
QjQ2NDIxMjczMUEyMDA4RjkzNTMgLyogYWRhcHRpdmVfYWdjLmggKi8sCiAJCQkJNDFBMDhCRTQy
MTI3MkY4NTAwMUQ1RDdCIC8qIGFkYXB0aXZlX2RpZ2l0YWxfZ2Fpbl9hcHBsaWVyLmNjICovLAog
CQkJCTQxQTA4QkRCMjEyNzJGODQwMDFENUQ3QiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBw
bGllci5oICovLAotCQkJCTQxQTA4QkU5MjEyNzJGODYwMDFENUQ3QiAvKiBhZGFwdGl2ZV9tb2Rl
X2xldmVsX2VzdGltYXRvcl9hZ2MuY2MgKi8sCi0JCQkJNDFENkI0NjIyMTI3MzFBMTAwOEY5MzUz
IC8qIGFkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5oICovLAogCQkJCTQxRDZCNDVG
MjEyNzMxQTEwMDhGOTM1MyAvKiBhZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvci5jYyAqLywK
IAkJCQk0MUEwOEJEQzIxMjcyRjg0MDAxRDVEN0IgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3Rp
bWF0b3IuaCAqLywKKwkJCQk0MUEwOEJFOTIxMjcyRjg2MDAxRDVEN0IgLyogYWRhcHRpdmVfbW9k
ZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmNjICovLAorCQkJCTQxRDZCNDYyMjEyNzMxQTEwMDhGOTM1
MyAvKiBhZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuaCAqLywKIAkJCQk0MTNFNjc5
QTIxNjk4ODYyMDBFRjM3RUQgLyogYWdjMl9jb21tb24uY2MgKi8sCiAJCQkJNDFENkI0NkQyMTI3
MzFBNDAwOEY5MzUzIC8qIGFnYzJfY29tbW9uLmggKi8sCiAJCQkJNDFENkI0NUUyMTI3MzFBMDAw
OEY5MzUzIC8qIGJpcXVhZF9maWx0ZXIuY2MgKi8sCkBAIC05MTc3LDE5ICs5MjI2LDE0IEBACiAJ
CQkJNDFENkI0NjAyMTI3MzFBMTAwOEY5MzUzIC8qIGRvd25fc2FtcGxlci5oICovLAogCQkJCTQx
QTA4QkU1MjEyNzJGODYwMDFENUQ3QiAvKiBmaXhlZF9kaWdpdGFsX2xldmVsX2VzdGltYXRvci5j
YyAqLywKIAkJCQk0MUEwOEJERjIxMjcyRjg0MDAxRDVEN0IgLyogZml4ZWRfZGlnaXRhbF9sZXZl
bF9lc3RpbWF0b3IuaCAqLywKLQkJCQk0MUQ2QjQ2NTIxMjczMUEyMDA4RjkzNTMgLyogZml4ZWRf
Z2Fpbl9jb250cm9sbGVyLmNjICovLAotCQkJCTQxRDZCNDY3MjEyNzMxQTMwMDhGOTM1MyAvKiBm
aXhlZF9nYWluX2NvbnRyb2xsZXIuaCAqLywKIAkJCQk0MUEwOEJERTIxMjcyRjg0MDAxRDVEN0Ig
LyogZ2Fpbl9hcHBsaWVyLmNjICovLAogCQkJCTQxQTA4QkU3MjEyNzJGODYwMDFENUQ3QiAvKiBn
YWluX2FwcGxpZXIuaCAqLywKLQkJCQk0MUEwOEJFMDIxMjcyRjg1MDAxRDVEN0IgLyogZ2Fpbl9j
dXJ2ZV9hcHBsaWVyLmNjICovLAotCQkJCTQxRDZCNDY5MjEyNzMxQTMwMDhGOTM1MyAvKiBnYWlu
X2N1cnZlX2FwcGxpZXIuaCAqLywKIAkJCQk0MUEwOEJFMTIxMjcyRjg1MDAxRDVEN0IgLyogaW50
ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MgKi8sCiAJCQkJNDFENkI0NzAyMTI3MzFBNjAwOEY5MzUz
IC8qIGxpbWl0ZXIuY2MgKi8sCiAJCQkJNDFBMDhCRUEyMTI3MkY4NjAwMUQ1RDdCIC8qIGxpbWl0
ZXIuaCAqLywKIAkJCQk0MUQ2QjQ2MTIxMjczMUExMDA4RjkzNTMgLyogbm9pc2VfbGV2ZWxfZXN0
aW1hdG9yLmNjICovLAogCQkJCTQxRDZCNDZBMjEyNzMxQTMwMDhGOTM1MyAvKiBub2lzZV9zcGVj
dHJ1bV9lc3RpbWF0b3IuY2MgKi8sCiAJCQkJNDFBMDhCRTIyMTI3MkY4NTAwMUQ1RDdCIC8qIG5v
aXNlX3NwZWN0cnVtX2VzdGltYXRvci5oICovLAotCQkJCTQxMjk5Qjk4MjEyNzM2QjIwMEIzNDE0
QiAvKiBybm5fdmFkICovLAogCQkJCTQxRDZCNDY4MjEyNzMxQTMwMDhGOTM1MyAvKiBzYXR1cmF0
aW9uX3Byb3RlY3Rvci5jYyAqLywKIAkJCQk0MUQ2QjQ2QjIxMjczMUEzMDA4RjkzNTMgLyogc2F0
dXJhdGlvbl9wcm90ZWN0b3IuaCAqLywKIAkJCQk0MUQ2QjQ2RjIxMjczMUE0MDA4RjkzNTMgLyog
c2lnbmFsX2NsYXNzaWZpZXIuY2MgKi8sCkBAIC05NjI3LDEwICs5NjcxLDExIEBACiAJCQkJNDFF
MDJDOTkyMTI3MzUyQjAwQzI3Q0Q2IC8qIGFscl9kZXRlY3Rvci5oICovLAogCQkJCTQxRTAyQzlB
MjEyNzM1MkIwMEMyN0NENiAvKiBiaXRyYXRlX2VzdGltYXRvci5jYyAqLywKIAkJCQk0MUUwMkM5
ODIxMjczNTJCMDBDMjdDRDYgLyogYml0cmF0ZV9lc3RpbWF0b3IuaCAqLywKKwkJCQk0MUZDQkIz
RjIxQjFGREI4MDBBNURGMjcgLyogY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxl
ci5jYyAqLywKKwkJCQk0MUZDQkIzRTIxQjFGREI4MDBBNURGMjcgLyogY29uZ2VzdGlvbl93aW5k
b3dfcHVzaGJhY2tfY29udHJvbGxlci5oICovLAogCQkJCTQxRTAyQzkxMjEyNzM1MjkwMEMyN0NE
NiAvKiBkZWxheV9iYXNlZF9id2UuY2MgKi8sCiAJCQkJNDFFMDJDOTcyMTI3MzUyQTAwQzI3Q0Q2
IC8qIGRlbGF5X2Jhc2VkX2J3ZS5oICovLAogCQkJCTQxRTAyQ0EzMjEyNzM1MkQwMEMyN0NENiAv
KiBkZWxheV9pbmNyZWFzZV9kZXRlY3Rvcl9pbnRlcmZhY2UuaCAqLywKLQkJCQk0MUUwMkM5NTIx
MjczNTJBMDBDMjdDRDYgLyogZ29vZ19jY19mYWN0b3J5LmNjICovLAogCQkJCTQxRTAyQ0EyMjEy
NzM1MkMwMEMyN0NENiAvKiBnb29nX2NjX25ldHdvcmtfY29udHJvbC5jYyAqLywKIAkJCQk0MUUw
MkM5NjIxMjczNTJBMDBDMjdDRDYgLyogZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuaCAqLywKIAkJ
CQk0MUUwMkM5RDIxMjczNTJCMDBDMjdDRDYgLyogbWVkaWFuX3Nsb3BlX2VzdGltYXRvci5jYyAq
LywKQEAgLTk2NTAsNiArOTY5NSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MUUwMkNDNzIx
MjczNUI2MDBDMjdDRDYgLyogYml0cmF0ZV9zZXR0aW5ncy5jYyAqLywKIAkJCQk0MUUwMkNDQjIx
MjczNUI3MDBDMjdDRDYgLyogYml0cmF0ZV9zZXR0aW5ncy5oICovLAorCQkJCTQxRkNCQjVFMjFC
MUZFQzQwMEE1REYyNyAvKiBnb29nX2NjX2ZhY3RvcnkuY2MgKi8sCisJCQkJNDFGQ0JCNUQyMUIx
RkVDNDAwQTVERjI3IC8qIGdvb2dfY2NfZmFjdG9yeS5oICovLAogCQkJCTQxRTAyQ0NBMjEyNzM1
QjcwMEMyN0NENiAvKiBuZXR3b3JrX2NvbnRyb2wuaCAqLywKIAkJCQk0MUUwMkNDODIxMjczNUI3
MDBDMjdDRDYgLyogbmV0d29ya190eXBlcy5jYyAqLywKIAkJCQk0MUUwMkNDOTIxMjczNUI3MDBD
MjdDRDYgLyogbmV0d29ya190eXBlcy5oICovLApAQCAtOTY2MCw4ICs5NzA3LDggQEAKIAkJNDFF
MDJDRDUyMTI3MzYyMzAwQzI3Q0Q2IC8qIHJ0cCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJNDFFMDJDRDYyMTI3MzYzQzAwQzI3Q0Q2IC8qIHBhY2VyX2Nv
bnRyb2xsZXIuY2MgKi8sCi0JCQkJNDE5MjQxODkyMTI3NDlDODAwNjM0RkNGIC8qIHBhY2VyX2Nv
bnRyb2xsZXIuaCAqLywKKwkJCQk0MUZDQkIzNTIxQjFGOEZDMDBBNURGMjcgLyogY29udHJvbF9o
YW5kbGVyLmNjICovLAorCQkJCTQxRkNCQjM0MjFCMUY4RkIwMEE1REYyNyAvKiBjb250cm9sX2hh
bmRsZXIuaCAqLywKIAkJCQk0MTkyNDE4ODIxMjc0OUM3MDA2MzRGQ0YgLyogc2VuZF9zaWRlX2Nv
bmdlc3Rpb25fY29udHJvbGxlci5jYyAqLywKIAkJCQk0MUUwMkNEODIxMjczNjNEMDBDMjdDRDYg
Lyogc2VuZF90aW1lX2hpc3RvcnkuY2MgKi8sCiAJCQkJNDE5MjQxODcyMTI3NDlDNzAwNjM0RkNG
IC8qIHNlbmRfdGltZV9oaXN0b3J5LmggKi8sCkBAIC05ODc3LDYgKzk5MjQsOCBAQAogCQkJCTQx
RjI2M0FCMjEyNjgwQTgwMDI3NEY1OSAvKiBhcmNoLmggKi8sCiAJCQkJNDFGMjYzQTkyMTI2ODBB
NzAwMjc0RjU5IC8qIGFzbV9kZWZpbmVzLmggKi8sCiAJCQkJNDFGMjYzQTgyMTI2ODBBNzAwMjc0
RjU5IC8qIEJVSUxELmduICovLAorCQkJCTQxRkNCQjc0MjFCMUZGQTQwMEE1REYyNyAvKiBjb2Nv
YV90aHJlYWRpbmcuaCAqLywKKwkJCQk0MUZDQkI3MzIxQjFGRkE0MDBBNURGMjcgLyogY29jb2Ff
dGhyZWFkaW5nLm1tICovLAogCQkJCTQxRjI2M0E1MjEyNjgwQTcwMDI3NEY1OSAvKiBmYWxsdGhy
b3VnaC5oICovLAogCQkJCTQxRjI2M0EzMjEyNjgwQTYwMDI3NEY1OSAvKiBmaWxlX3dyYXBwZXIu
Y2MgKi8sCiAJCQkJNDFGMjYzQUEyMTI2ODBBODAwMjc0RjU5IC8qIGZpbGVfd3JhcHBlci5oICov
LApAQCAtOTkwMyw5ICs5OTUyLDkgQEAKIAkJNDFGNDExQkQxRUY4REI4MjAwMzQzQzI2IC8qIHZw
OCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE0NUY2
MTUxRkUxRUY1QzAwRUI5Q0FGIC8qIGluY2x1ZGUgKi8sCiAJCQkJNDE5Qzg0MkIxRkUyNEU3RTAw
NDBDMzBGIC8qIGRlZmF1bHRfdGVtcG9yYWxfbGF5ZXJzLmNjICovLAogCQkJCTQxOUM4NDMxMUZF
MjRFODAwMDQwQzMwRiAvKiBkZWZhdWx0X3RlbXBvcmFsX2xheWVycy5oICovLAotCQkJCTQxNDVG
NjE1MUZFMUVGNUMwMEVCOUNBRiAvKiBpbmNsdWRlICovLAogCQkJCTQxM0U2NzcxMjE2OTg2M0Iw
MEVGMzdFRCAvKiBsaWJ2cHhfaW50ZXJmYWNlLmNjICovLAogCQkJCTQxM0U2NzZGMjE2OTg2M0Ew
MEVGMzdFRCAvKiBsaWJ2cHhfaW50ZXJmYWNlLmggKi8sCiAJCQkJNDEyOTQwOTAyMTJFMTI4QzAw
QUQ5NUU3IC8qIGxpYnZweF92cDhfZGVjb2Rlci5jYyAqLywKQEAgLTk5MTQsOSArOTk2Myw4IEBA
CiAJCQkJNDEyOTQwOEYyMTJFMTI4QzAwQUQ5NUU3IC8qIGxpYnZweF92cDhfZW5jb2Rlci5oICov
LAogCQkJCTQxOUM4NDMwMUZFMjRFN0YwMDQwQzMwRiAvKiBzY3JlZW5zaGFyZV9sYXllcnMuY2Mg
Ki8sCiAJCQkJNDE5Qzg0MkMxRkUyNEU3RjAwNDBDMzBGIC8qIHNjcmVlbnNoYXJlX2xheWVycy5o
ICovLAotCQkJCTQxM0U2NzZFMjE2OTg2M0EwMEVGMzdFRCAvKiB0ZW1wb3JhbF9sYXllcnNfY2hl
Y2tlci5jYyAqLywKIAkJCQk0MTlDODQzMzFGRTI0RTgwMDA0MEMzMEYgLyogdGVtcG9yYWxfbGF5
ZXJzLmggKi8sCi0JCQkJNDEzRTY3NzAyMTY5ODYzQjAwRUYzN0VEIC8qIHZwOF90ZW1wb3JhbF9s
YXllcnMuY2MgKi8sCisJCQkJNDEzRTY3NkUyMTY5ODYzQTAwRUYzN0VEIC8qIHRlbXBvcmFsX2xh
eWVyc19jaGVja2VyLmNjICovLAogCQkJKTsKIAkJCW5hbWUgPSB2cDg7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMTAwMzcsMTMgKzEwMDg1LDQ0IEBACiAJCQluYW1lID0gaW5jbHVk
ZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTQxRjlCRkM4MjA1MUREOEUw
MEFCRjBCOSAvKiBleHBlcmltZW50cyAqLyA9IHsKKwkJNDFGQ0JCMUYyMUIxRjgxNDAwQTVERjI3
IC8qIGludGVybmFsICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQk0MUY5QkZDOTIwNTFEREEyMDBBQkYwQjkgLyogYWxyX2V4cGVyaW1lbnQuY2MgKi8sCi0J
CQkJNDFGOUJGQ0EyMDUxRERBMjAwQUJGMEI5IC8qIGFscl9leHBlcmltZW50LmggKi8sCisJCQkJ
NDFGQ0JCMjAyMUIxRjgyRTAwQTVERjI3IC8qIHRocm93X2RlbGVnYXRlLmNjICovLAorCQkJCTQx
RkNCQjIxMjFCMUY4MkYwMEE1REYyNyAvKiB0aHJvd19kZWxlZ2F0ZS5oICovLAogCQkJKTsKLQkJ
CW5hbWUgPSBleHBlcmltZW50czsKKwkJCW5hbWUgPSBpbnRlcm5hbDsKKwkJCXBhdGggPSBiYXNl
L2ludGVybmFsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNDFGQ0JCMjQy
MUIxRjg1RDAwQTVERjI3IC8qIG5ldHdvcmsgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTQxRkNCQjI1MjFCMUY4N0UwMEE1REYyNyAvKiBzZW50X3BhY2tl
dC5jYyAqLywKKwkJCQk0MUZDQkIyNjIxQjFGODdFMDBBNURGMjcgLyogc2VudF9wYWNrZXQuaCAq
LywKKwkJCSk7CisJCQluYW1lID0gbmV0d29yazsKKwkJCXBhdGggPSBydGNfYmFzZS9uZXR3b3Jr
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNDFGQ0JCMjkyMUIxRjhBMzAw
QTVERjI3IC8qIGNyeXB0byAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJNDFGQ0JCMkQyMUIxRjhCNjAwQTVERjI3IC8qIGNyeXB0b29wdGlvbnMuY2MgKi8s
CisJCQkJNDFGQ0JCMkEyMUIxRjhCNjAwQTVERjI3IC8qIGNyeXB0b29wdGlvbnMuaCAqLywKKwkJ
CQk0MUZDQkIyQjIxQjFGOEI2MDBBNURGMjcgLyogZnJhbWVkZWNyeXB0b3JpbnRlcmZhY2UuaCAq
LywKKwkJCQk0MUZDQkIyQzIxQjFGOEI2MDBBNURGMjcgLyogZnJhbWVlbmNyeXB0b3JpbnRlcmZh
Y2UuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY3J5cHRvOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKKwkJNDFGQ0JCODEyMUIyMDA1QTAwQTVERjI3IC8qIGludGVybmFsICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0MUZDQkI4MjIxQjIw
MDdCMDBBNURGMjcgLyogbWVtdXRpbC5jYyAqLywKKwkJCQk0MUZDQkI4MzIxQjIwMDdCMDBBNURG
MjcgLyogbWVtdXRpbC5oICovLAorCQkJKTsKKwkJCXBhdGggPSBpbnRlcm5hbDsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCTQxRkU4NjRFMjE1QzUyRTkwMEI2MkMwNyAvKiBs
aXN0Zm10cyAqLyA9IHsKQEAgLTEwODUzLDEyICsxMDkzMiwxMiBAQAogCQk1QzRCNEI1ODFFNDMx
QzQ5MDAyNjUxQzggLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJNDE0NEIzRUMyMTY5QzYxQzAwNDM2M0FDIC8qIGhlbHBlcnMgKi8sCiAJCQkJ
NDE3OTUzRkIyMTY5ODREQzAwMjgyNjZCIC8qIGFwaSAqLywKIAkJCQk0MTc5NTNGMjIxNjk4NDgz
MDAyODI2NkIgLyogYmFzZSAqLywKIAkJCQk0MTYyMjVFQTIxNjk4MUJBMDBBOTFDOUIgLyogY29t
cG9uZW50cyAqLywKLQkJCQk0MTYyMjVDNzIxNjk4MTQxMDBBOTFDOUIgLyogbmF0aXZlICovLAog
CQkJCTVDNEI0QjU5MUU0MzFDNTUwMDI2NTFDOCAvKiBGcmFtZXdvcmsgKi8sCisJCQkJNDE0NEIz
RUMyMTY5QzYxQzAwNDM2M0FDIC8qIGhlbHBlcnMgKi8sCisJCQkJNDE2MjI1QzcyMTY5ODE0MTAw
QTkxQzlCIC8qIG5hdGl2ZSAqLywKIAkJCSk7CiAJCQluYW1lID0gb2JqYzsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xMDg5NCw3ICsxMDk3Myw2IEBACiAJCQkJNUM0QjRDMTAxRTQz
MUY3NTAwMjY1MUM4IC8qIGJpdHJhdGVfYWRqdXN0ZXIuY2MgKi8sCiAJCQkJNUM0QjRDMTIxRTQz
MUY3NTAwMjY1MUM4IC8qIGk0MjBfYnVmZmVyX3Bvb2wuY2MgKi8sCiAJCQkJNUM0QjRDMTMxRTQz
MUY3NTAwMjY1MUM4IC8qIGluY29taW5nX3ZpZGVvX3N0cmVhbS5jYyAqLywKLQkJCQk1QzRCNEMx
NjFFNDMxRjc1MDAyNjUxQzggLyogdmlkZW9fZnJhbWUuY2MgKi8sCiAJCQkJNUM0QjRDMTUxRTQz
MUY3NTAwMjY1MUM4IC8qIHZpZGVvX2ZyYW1lX2J1ZmZlci5jYyAqLywKIAkJCQk1QzRCNEMxNzFF
NDMxRjc1MDAyNjUxQzggLyogdmlkZW9fcmVuZGVyX2ZyYW1lcy5jYyAqLywKIAkJCQk1QzRCNEMx
ODFFNDMxRjc1MDAyNjUxQzggLyogdmlkZW9fcmVuZGVyX2ZyYW1lcy5oICovLApAQCAtMTEwOTcs
MTcgKzExMTc1LDI1IEBACiAJCTVDNjNGOEUyMUU0MTczMkIwMDJDQTUzMSAvKiBhcGkgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQxRjlCRjc5MjA1MUM3
RkQwMEFCRjBCOSAvKiBhcnJheV92aWV3LmggKi8sCiAJCQkJNUNEMjg1M0IxRTZBNjFCRTAwOTRG
REM4IC8qIGF1ZGlvX2NvZGVjcyAqLywKKwkJCQk1Q0REOEM0NTFFNDNDNTc5MDA2MjFFOTIgLyog
Y2FsbCAqLywKKwkJCQk0MUZDQkIyOTIxQjFGOEEzMDBBNURGMjcgLyogY3J5cHRvICovLAorCQkJ
CTQxNDVFNEMwMUVGODk2MjgwMEZDRjZFNiAvKiBzdGF0cyAqLywKKwkJCQk0MUUwMkNDNjIxMjcz
NTlGMDBDMjdDRDYgLyogdHJhbnNwb3J0ICovLAorCQkJCTQxOTI0MUQ0MjEyNzVBMTgwMDYzNEZD
RiAvKiB1bml0cyAqLywKKwkJCQk1Q0QyODQ2MDFFNkE1N0REMDA5NEZEQzggLyogdmlkZW8gKi8s
CisJCQkJNDEyNDU1NTgxRUY4OEFEOTAwRjExODA5IC8qIHZpZGVvX2NvZGVjcyAqLywKKwkJCQk0
MUY5QkY3OTIwNTFDN0ZEMDBBQkYwQjkgLyogYXJyYXlfdmlldy5oICovLAogCQkJCTQxNUYxRkNB
MjEyNzMwRjAwMDA2NENCRiAvKiBhdWRpb19mcmFtZS5jYyAqLywKIAkJCQk0MTVGMUZDQjIxMjcz
MEYwMDAwNjRDQkYgLyogYXVkaW9fZnJhbWUuaCAqLywKIAkJCQk0MTVGMUZDOTIxMjczMEYwMDAw
NjRDQkYgLyogYXVkaW9fbWl4ZXIuaCAqLywKIAkJCQk0MUYyNjM3NTIxMjY3Qjc2MDAyNzRGNTkg
LyogYXVkaW9fb3B0aW9ucy5jYyAqLywKIAkJCQk0MUYyNjM3ODIxMjY3Qjc2MDAyNzRGNTkgLyog
YXVkaW9fb3B0aW9ucy5oICovLAogCQkJCTQxRjI2Mzc5MjEyNjdCNzcwMDI3NEY1OSAvKiBiaXRy
YXRlX2NvbnN0cmFpbnRzLmggKi8sCi0JCQkJNUNERDhDNDUxRTQzQzU3OTAwNjIxRTkyIC8qIGNh
bGwgKi8sCiAJCQkJNDE5QzgzMEUxRkUyNDI3RjAwNDBDMzBGIC8qIGNhbmRpZGF0ZS5jYyAqLywK
IAkJCQk0MUY5QkY3NzIwNTFDN0ZEMDBBQkYwQjkgLyogY2FuZGlkYXRlLmggKi8sCisJCQkJNDFG
Q0JCMDkyMUIxRjUzMDAwQTVERjI3IC8qIGNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmNj
ICovLAorCQkJCTQxRkNCQjBEMjFCMUY1MzYwMEE1REYyNyAvKiBjcmVhdGVfcGVlcmNvbm5lY3Rp
b25fZmFjdG9yeS5oICovLAogCQkJCTQxRjlCRjgyMjA1MUM4MDAwMEFCRjBCOSAvKiBjcnlwdG9w
YXJhbXMuaCAqLywKIAkJCQk0MUYyNjM3NzIxMjY3Qjc2MDAyNzRGNTkgLyogZGF0YWNoYW5uZWxp
bnRlcmZhY2UuY2MgKi8sCiAJCQkJNUM2M0Y4RTcxRTQxNzM3QjAwMkNBNTMxIC8qIGRhdGFjaGFu
bmVsaW50ZXJmYWNlLmggKi8sCkBAIC0xMTExOSw2ICsxMTIwNSw4IEBACiAJCQkJNDFGMjYzN0Iy
MTI2N0I3NzAwMjc0RjU5IC8qIGpzZXBpY2VjYW5kaWRhdGUuY2MgKi8sCiAJCQkJNUM2M0Y4RjEx
RTQxNzM3QjAwMkNBNTMxIC8qIGpzZXBpY2VjYW5kaWRhdGUuaCAqLywKIAkJCQk1QzYzRjhGMzFF
NDE3MzdCMDAyQ0E1MzEgLyoganNlcHNlc3Npb25kZXNjcmlwdGlvbi5oICovLAorCQkJCTQxRkNC
QjBDMjFCMUY1MzIwMEE1REYyNyAvKiBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNlLmNjICovLAor
CQkJCTQxRkNCQjBBMjFCMUY1MzEwMEE1REYyNyAvKiBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNl
LmggKi8sCiAJCQkJNUM2M0Y4RjYxRTQxNzM3QjAwMkNBNTMxIC8qIG1lZGlhY29uc3RyYWludHNp
bnRlcmZhY2UuY2MgKi8sCiAJCQkJNUM2M0Y4RjcxRTQxNzM3QjAwMkNBNTMxIC8qIG1lZGlhY29u
c3RyYWludHNpbnRlcmZhY2UuaCAqLywKIAkJCQk1Q0QyODYzRjFFNkE2ODNBMDA5NEZEQzggLyog
bWVkaWFzdHJlYW1pbnRlcmZhY2UuY2MgKi8sCkBAIC0xMTE0OCwxNiArMTEyMzYsMTIgQEAKIAkJ
CQk1QzYzRjkxQjFFNDE3MzdCMDAyQ0E1MzEgLyogcnRwc2VuZGVyaW50ZXJmYWNlLmggKi8sCiAJ
CQkJNDFGMjYzN0MyMTI2N0I3NzAwMjc0RjU5IC8qIHJ0cHRyYW5zY2VpdmVyaW50ZXJmYWNlLmNj
ICovLAogCQkJCTQxRjlCRjgwMjA1MUM3RkYwMEFCRjBCOSAvKiBydHB0cmFuc2NlaXZlcmludGVy
ZmFjZS5oICovLAorCQkJCTQxRkNCQjBCMjFCMUY1MzIwMEE1REYyNyAvKiBzY29wZWRfcmVmcHRy
LmggKi8sCiAJCQkJNDFGOUJGODQyMDUxQzgwMDAwQUJGMEI5IC8qIHNldHJlbW90ZWRlc2NyaXB0
aW9ub2JzZXJ2ZXJpbnRlcmZhY2UuaCAqLywKLQkJCQk0MTQ1RTRDMDFFRjg5NjI4MDBGQ0Y2RTYg
Lyogc3RhdHMgKi8sCiAJCQkJNUM2M0Y5MjExRTQxNzM3QjAwMkNBNTMxIC8qIHN0YXRzdHlwZXMu
Y2MgKi8sCiAJCQkJNUM2M0Y5MjIxRTQxNzM3QjAwMkNBNTMxIC8qIHN0YXRzdHlwZXMuaCAqLywK
LQkJCQk0MUUwMkNDNjIxMjczNTlGMDBDMjdDRDYgLyogdHJhbnNwb3J0ICovLAogCQkJCTQxRjlC
RjgzMjA1MUM4MDAwMEFCRjBCOSAvKiB0dXJuY3VzdG9taXplci5oICovLAogCQkJCTVDNjNGOTI0
MUU0MTczN0IwMDJDQTUzMSAvKiB1bWFtZXRyaWNzLmggKi8sCi0JCQkJNDE5MjQxRDQyMTI3NUEx
ODAwNjM0RkNGIC8qIHVuaXRzICovLAotCQkJCTVDRDI4NDYwMUU2QTU3REQwMDk0RkRDOCAvKiB2
aWRlbyAqLywKLQkJCQk0MTI0NTU1ODFFRjg4QUQ5MDBGMTE4MDkgLyogdmlkZW9fY29kZWNzICov
LAogCQkJCTVDNjNGOTI4MUU0MTczN0IwMDJDQTUzMSAvKiB2aWRlb3NvdXJjZXByb3h5LmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IGFwaTsKQEAgLTExMTkxLDggKzExMjc1LDEyIEBACiAJCQkJNDE5
MjQxNEYyMTI3Mzc2RTAwNjM0RkNGIC8qIGZha2VpY2V0cmFuc3BvcnQuaCAqLywKIAkJCQk0MTky
NDE0RTIxMjczNzZFMDA2MzRGQ0YgLyogZmFrZXBhY2tldHRyYW5zcG9ydC5oICovLAogCQkJCTVD
NjNGOTk1MUU0MTc0RjYwMDJDQTUzMSAvKiBmYWtlcG9ydGFsbG9jYXRvci5oICovLAorCQkJCTQx
RkNCQjQzMjFCMUZERUUwMEE1REYyNyAvKiBpY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmNjICovLAor
CQkJCTQxRkNCQjQ1MjFCMUZERUYwMEE1REYyNyAvKiBpY2VjcmVkZW50aWFsc2l0ZXJhdG9yLmgg
Ki8sCiAJCQkJNDE5QzgzRDcxRkUyNDdGMjAwNDBDMzBGIC8qIGljZXRyYW5zcG9ydGludGVybmFs
LmNjICovLAogCQkJCTQxOTI0MTUwMjEyNzM3NkUwMDYzNEZDRiAvKiBpY2V0cmFuc3BvcnRpbnRl
cm5hbC5oICovLAorCQkJCTQxRkNCQjQ0MjFCMUZERUYwMEE1REYyNyAvKiBtZG5zX21lc3NhZ2Uu
Y2MgKi8sCisJCQkJNDFGQ0JCNDIyMUIxRkRFRTAwQTVERjI3IC8qIG1kbnNfbWVzc2FnZS5oICov
LAogCQkJCTVDNjNGOTk3MUU0MTc0RjYwMDJDQTUzMSAvKiBwMnBjb25zdGFudHMuY2MgKi8sCiAJ
CQkJNUM2M0Y5OTgxRTQxNzRGNjAwMkNBNTMxIC8qIHAycGNvbnN0YW50cy5oICovLAogCQkJCTVD
NjNGOTlDMUU0MTc0RjYwMDJDQTUzMSAvKiBwMnB0cmFuc3BvcnRjaGFubmVsLmNjICovLApAQCAt
MTEyNDIsOCArMTEzMzAsNiBAQAogCQkJCTVDNjNGOUQ5MUU0MTc0RjYwMDJDQTUzMSAvKiB0dXJu
c2VydmVyLmNjICovLAogCQkJCTVDNjNGOURBMUU0MTc0RjYwMDJDQTUzMSAvKiB0dXJuc2VydmVy
LmggKi8sCiAJCQkJNUM2M0Y5REIxRTQxNzRGNjAwMkNBNTMxIC8qIHVkcHBvcnQuaCAqLywKLQkJ
CQk0MTlDODNEMzFGRTI0N0YwMDA0MEMzMEYgLyogdWRwdHJhbnNwb3J0LmNjICovLAotCQkJCTQx
OTI0MTREMjEyNzM3NkUwMDYzNEZDRiAvKiB1ZHB0cmFuc3BvcnQuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gYmFzZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMTI1MywxMyArMTEz
MzksMTAgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTVDRDI4NEM0MUU2QTYwNTcwMDk0RkRDOCAv
KiBhdWRpb3RyYWNrLmNjICovLAogCQkJCTVDRDI4NEM1MUU2QTYwNTcwMDk0RkRDOCAvKiBhdWRp
b3RyYWNrLmggKi8sCi0JCQkJNUM2M0ZBM0ExRTQxNzYxRjAwMkNBNTMxIC8qIGJ1bmRsZWZpbHRl
ci5jYyAqLywKLQkJCQk1QzYzRkEzQjFFNDE3NjFGMDAyQ0E1MzEgLyogYnVuZGxlZmlsdGVyLmgg
Ki8sCiAJCQkJNUM2M0ZBM0QxRTQxNzYxRjAwMkNBNTMxIC8qIGNoYW5uZWwuY2MgKi8sCiAJCQkJ
NUM2M0ZBM0UxRTQxNzYxRjAwMkNBNTMxIC8qIGNoYW5uZWwuaCAqLywKIAkJCQk1QzYzRkE0MDFF
NDE3NjFGMDAyQ0E1MzEgLyogY2hhbm5lbG1hbmFnZXIuY2MgKi8sCiAJCQkJNUM2M0ZBNDExRTQx
NzYxRjAwMkNBNTMxIC8qIGNoYW5uZWxtYW5hZ2VyLmggKi8sCi0JCQkJNDE0NUU0QzkxRUY4Q0Iz
MTAwRkNGNkU2IC8qIGNyZWF0ZXBlZXJjb25uZWN0aW9uZmFjdG9yeS5jYyAqLywKIAkJCQk1Q0Qy
ODRDNjFFNkE2MDU3MDA5NEZEQzggLyogZGF0YWNoYW5uZWwuY2MgKi8sCiAJCQkJNUNEMjg0Qzcx
RTZBNjA1NzAwOTRGREM4IC8qIGRhdGFjaGFubmVsLmggKi8sCiAJCQkJNDE5QzgyRDYxRkUyMEU1
ODAwNDBDMzBGIC8qIGR0bHNzcnRwdHJhbnNwb3J0LmNjICovLApAQCAtMTE0NTEsMzEgKzExNTM0
LDM3IEBACiAJCTVDRDI4NDYwMUU2QTU3REQwMDk0RkRDOCAvKiB2aWRlbyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDFGQ0JCMTcyMUIxRjdDQzAwQTVE
RjI3IC8qIGJ1aWx0aW5fdmlkZW9fYml0cmF0ZV9hbGxvY2F0b3JfZmFjdG9yeS5jYyAqLywKKwkJ
CQk0MUZDQkIxQTIxQjFGN0NEMDBBNURGMjcgLyogYnVpbHRpbl92aWRlb19iaXRyYXRlX2FsbG9j
YXRvcl9mYWN0b3J5LmggKi8sCiAJCQkJNDEwMkY2RDIyMTI3MzQxNDAwNkFFOEQ3IC8qIGNvbG9y
X3NwYWNlLmNjICovLAogCQkJCTQxMDJGNkQ4MjEyNzM0MTYwMDZBRThENyAvKiBjb2xvcl9zcGFj
ZS5oICovLAogCQkJCTQxRjI2M0M3MjEyNjgxOEEwMDI3NEY1OSAvKiBlbmNvZGVkX2ZyYW1lLmNj
ICovLAogCQkJCTQxRjI2M0MyMjEyNjgxODkwMDI3NEY1OSAvKiBlbmNvZGVkX2ZyYW1lLmggKi8s
CisJCQkJNDFGQ0JCMTkyMUIxRjdDQzAwQTVERjI3IC8qIGVuY29kZWRfaW1hZ2UuY2MgKi8sCisJ
CQkJNDFGQ0JCMTgyMUIxRjdDQzAwQTVERjI3IC8qIGVuY29kZWRfaW1hZ2UuaCAqLywKKwkJCQk0
MUZDQkI2RjIxQjFGRjc0MDBBNURGMjcgLyogaGRyX21ldGFkYXRhLmNjICovLAorCQkJCTQxRkNC
QjcwMjFCMUZGNzQwMEE1REYyNyAvKiBoZHJfbWV0YWRhdGEuaCAqLywKIAkJCQk0MTAyRjZENjIx
MjczNDE1MDA2QUU4RDcgLyogaTAxMF9idWZmZXIuY2MgKi8sCiAJCQkJNDFGMjYzQkYyMTI2ODE4
OTAwMjc0RjU5IC8qIGkwMTBfYnVmZmVyLmggKi8sCiAJCQkJNUNEMjg0NjExRTZBNTdGNDAwOTRG
REM4IC8qIGk0MjBfYnVmZmVyLmNjICovLAogCQkJCTVDRDI4NDYyMUU2QTU3RjQwMDk0RkRDOCAv
KiBpNDIwX2J1ZmZlci5oICovLAogCQkJCTQxMDJGNkQ5MjEyNzM0MTYwMDZBRThENyAvKiB2aWRl
b19iaXRyYXRlX2FsbG9jYXRpb24uY2MgKi8sCiAJCQkJNDFGMjYzQzQyMTI2ODE4OTAwMjc0RjU5
IC8qIHZpZGVvX2JpdHJhdGVfYWxsb2NhdGlvbi5oICovLAotCQkJCTQxMDJGNkRBMjEyNzM0MTYw
MDZBRThENyAvKiB2aWRlb19iaXRyYXRlX2FsbG9jYXRvcl9mYWN0b3J5LmggKi8sCiAJCQkJNDFG
MjYzQzEyMTI2ODE4OTAwMjc0RjU5IC8qIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yLmggKi8sCisJ
CQkJNDEwMkY2REEyMTI3MzQxNjAwNkFFOEQ3IC8qIHZpZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2Zh
Y3RvcnkuaCAqLywKIAkJCQk0MTlDODQwRDFGRTI0OUFBMDA0MEMzMEYgLyogdmlkZW9fY29udGVu
dF90eXBlLmNjICovLAogCQkJCTQxOUM4NDBGMUZFMjQ5QUIwMDQwQzMwRiAvKiB2aWRlb19jb250
ZW50X3R5cGUuaCAqLywKLQkJCQk0MTI0NTU0QTFFRjg4NzQzMDBGMTE4MDkgLyogdmlkZW9fZnJh
bWVfYnVmZmVyLmNjICovLAotCQkJCTVDRDI4NDYzMUU2QTU3RjQwMDk0RkRDOCAvKiB2aWRlb19m
cmFtZV9idWZmZXIuaCAqLywKIAkJCQk1Q0QyODQ2NDFFNkE1N0Y0MDA5NEZEQzggLyogdmlkZW9f
ZnJhbWUuY2MgKi8sCiAJCQkJNUNEMjg0NjUxRTZBNTdGNDAwOTRGREM4IC8qIHZpZGVvX2ZyYW1l
LmggKi8sCisJCQkJNDEyNDU1NEExRUY4ODc0MzAwRjExODA5IC8qIHZpZGVvX2ZyYW1lX2J1ZmZl
ci5jYyAqLywKKwkJCQk1Q0QyODQ2MzFFNkE1N0Y0MDA5NEZEQzggLyogdmlkZW9fZnJhbWVfYnVm
ZmVyLmggKi8sCiAJCQkJNUNEMjg0NjYxRTZBNTdGNDAwOTRGREM4IC8qIHZpZGVvX3JvdGF0aW9u
LmggKi8sCiAJCQkJNDEwMkY2RDMyMTI3MzQxNTAwNkFFOEQ3IC8qIHZpZGVvX3NpbmtfaW50ZXJm
YWNlLmggKi8sCiAJCQkJNDFGMjYzQzYyMTI2ODE4QTAwMjc0RjU5IC8qIHZpZGVvX3NvdXJjZV9p
bnRlcmZhY2UuY2MgKi8sCiAJCQkJNDFGMjYzQkUyMTI2ODE4ODAwMjc0RjU5IC8qIHZpZGVvX3Nv
dXJjZV9pbnRlcmZhY2UuaCAqLywKKwkJCQk0MUYyNjNDNTIxMjY4MThBMDAyNzRGNTkgLyogdmlk
ZW9fc3RyZWFtX2RlY29kZXIuaCAqLywKIAkJCQk0MTAyRjZEMTIxMjczNDE0MDA2QUU4RDcgLyog
dmlkZW9fc3RyZWFtX2RlY29kZXJfY3JlYXRlLmNjICovLAogCQkJCTQxMDJGNkQ0MjEyNzM0MTUw
MDZBRThENyAvKiB2aWRlb19zdHJlYW1fZGVjb2Rlcl9jcmVhdGUuaCAqLywKLQkJCQk0MUYyNjND
NTIxMjY4MThBMDAyNzRGNTkgLyogdmlkZW9fc3RyZWFtX2RlY29kZXIuaCAqLywKIAkJCQk0MTAy
RjZENTIxMjczNDE1MDA2QUU4RDcgLyogdmlkZW9fc3RyZWFtX2VuY29kZXJfY3JlYXRlLmNjICov
LAogCQkJCTQxRjI2M0MwMjEyNjgxODkwMDI3NEY1OSAvKiB2aWRlb19zdHJlYW1fZW5jb2Rlcl9j
cmVhdGUuaCAqLywKIAkJCQk0MUYyNjNDMzIxMjY4MTg5MDAyNzRGNTkgLyogdmlkZW9fc3RyZWFt
X2VuY29kZXJfaW50ZXJmYWNlLmggKi8sCkBAIC0xMTc2Miw4ICsxMTg1MSw2IEBACiAJCQkJNUNE
RDgzNkMxRTQzOUEzNTAwNjIxRTkyIC8qIGZyYW1lX2Ryb3BwZXIuaCAqLywKIAkJCQk1Q0REODM2
RDFFNDM5QTM1MDA2MjFFOTIgLyogaXZmX2ZpbGVfd3JpdGVyLmNjICovLAogCQkJCTVDREQ4MzZF
MUU0MzlBMzUwMDYyMUU5MiAvKiBpdmZfZmlsZV93cml0ZXIuaCAqLywKLQkJCQk1Q0REODM2RjFF
NDM5QTM1MDA2MjFFOTIgLyogbW92aW5nX2F2ZXJhZ2UuY2MgKi8sCi0JCQkJNUNERDgzNzAxRTQz
OUEzNTAwNjIxRTkyIC8qIG1vdmluZ19hdmVyYWdlLmggKi8sCiAJCQkJNUNERDgzNzMxRTQzOUEz
NTAwNjIxRTkyIC8qIHF1YWxpdHlfc2NhbGVyLmNjICovLAogCQkJCTVDREQ4Mzc0MUU0MzlBMzUw
MDYyMUU5MiAvKiBxdWFsaXR5X3NjYWxlci5oICovLAogCQkJCTQxOTI0MUVBMjEyNzVBRkEwMDYz
NEZDRiAvKiBzaW11bGNhc3RfcmF0ZV9hbGxvY2F0b3IuY2MgKi8sCkBAIC0xMTkwNyw4ICsxMTk5
NCw2IEBACiAJCQkJNUNERDg0RjkxRTQzQjFFQTAwNjIxRTkyIC8qIGF1ZGlvX2NvZGluZ19tb2R1
bGUuY2MgKi8sCiAJCQkJNUNERDg0RkIxRTQzQjFFQTAwNjIxRTkyIC8qIGNhbGxfc3RhdGlzdGlj
cy5jYyAqLywKIAkJCQk1Q0REODRGQzFFNDNCMUVBMDA2MjFFOTIgLyogY2FsbF9zdGF0aXN0aWNz
LmggKi8sCi0JCQkJNUNERDg0RkUxRTQzQjFFQTAwNjIxRTkyIC8qIGNvZGVjX21hbmFnZXIuY2Mg
Ki8sCi0JCQkJNUNERDg0RkYxRTQzQjFFQTAwNjIxRTkyIC8qIGNvZGVjX21hbmFnZXIuaCAqLywK
IAkJCQk1Q0REODUwMTFFNDNCMUVBMDA2MjFFOTIgLyogcmVudF9hX2NvZGVjLmNjICovLAogCQkJ
CTVDREQ4NTAyMUU0M0IxRUEwMDYyMUU5MiAvKiByZW50X2FfY29kZWMuaCAqLywKIAkJCSk7CkBA
IC0xMjAwOCw2ICsxMjA5Myw4IEBACiAJCQkJNUNERDg1NUQxRTQzQjVDMDAwNjIxRTkyIC8qIGNh
bGxfc3RhdHMuaCAqLywKIAkJCQk1Q0REODU2MDFFNDNCNUMwMDA2MjFFOTIgLyogZW5jb2Rlcl9y
dGNwX2ZlZWRiYWNrLmNjICovLAogCQkJCTVDREQ4NTYxMUU0M0I1QzAwMDYyMUU5MiAvKiBlbmNv
ZGVyX3J0Y3BfZmVlZGJhY2suaCAqLywKKwkJCQk0MUZDQkI1NzIxQjFGRTZEMDBBNURGMjcgLyog
ZnJhbWVfZHVtcGluZ19kZWNvZGVyLmNjICovLAorCQkJCTQxRkNCQjU4MjFCMUZFNkUwMEE1REYy
NyAvKiBmcmFtZV9kdW1waW5nX2RlY29kZXIuaCAqLywKIAkJCQk1Q0REODU2NjFFNDNCNUMwMDA2
MjFFOTIgLyogb3ZlcnVzZV9mcmFtZV9kZXRlY3Rvci5jYyAqLywKIAkJCQk1Q0REODU2NzFFNDNC
NUMwMDA2MjFFOTIgLyogb3ZlcnVzZV9mcmFtZV9kZXRlY3Rvci5oICovLAogCQkJCTVDRDI4NjI4
MUU2QTY2QzgwMDk0RkRDOCAvKiBxdWFsaXR5X3RocmVzaG9sZC5jYyAqLywKQEAgLTEyMzc2LDYg
KzEyNDYzLDcgQEAKIAkJNUNERDg3RkExRTQzQkUyNjAwNjIxRTkyIC8qIHNvdXJjZSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNERDg4RUIxRTQzQkYy
NTAwNjIxRTkyIC8qIHJ0Y3BfcGFja2V0ICovLAogCQkJCTVDREQ4N0ZDMUU0M0JFM0MwMDYyMUU5
MiAvKiBieXRlX2lvLmggKi8sCiAJCQkJNDEwMkY2RUIyMTI3MzQ2MDAwNkFFOEQ3IC8qIGNvbnRy
aWJ1dGluZ19zb3VyY2VzLmNjICovLAogCQkJCTVDREQ4N0ZFMUU0M0JFM0MwMDYyMUU5MiAvKiBk
dG1mX3F1ZXVlLmNjICovLApAQCAtMTIzOTAsMTAgKzEyNDc4LDEwIEBACiAJCQkJNUNERDg4MDYx
RTQzQkUzQzAwNjIxRTkyIC8qIGZsZXhmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuaCAqLywKIAkJ
CQk1Q0REODgwQTFFNDNCRTNDMDA2MjFFOTIgLyogZmxleGZlY19yZWNlaXZlci5jYyAqLywKIAkJ
CQk1Q0REODgwQzFFNDNCRTNDMDA2MjFFOTIgLyogZmxleGZlY19zZW5kZXIuY2MgKi8sCi0JCQkJ
NUNERDg4MEQxRTQzQkUzQzAwNjIxRTkyIC8qIGZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRl
cm5hbC5jYyAqLywKLQkJCQk1Q0REODgwRTFFNDNCRTNDMDA2MjFFOTIgLyogZm9yd2FyZF9lcnJv
cl9jb3JyZWN0aW9uX2ludGVybmFsLmggKi8sCiAJCQkJNUNERDg4MEYxRTQzQkUzQzAwNjIxRTky
IC8qIGZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5jYyAqLywKIAkJCQk1Q0REODgxMDFFNDNCRTND
MDA2MjFFOTIgLyogZm9yd2FyZF9lcnJvcl9jb3JyZWN0aW9uLmggKi8sCisJCQkJNUNERDg4MEQx
RTQzQkUzQzAwNjIxRTkyIC8qIGZvcndhcmRfZXJyb3JfY29ycmVjdGlvbl9pbnRlcm5hbC5jYyAq
LywKKwkJCQk1Q0REODgwRTFFNDNCRTNDMDA2MjFFOTIgLyogZm9yd2FyZF9lcnJvcl9jb3JyZWN0
aW9uX2ludGVybmFsLmggKi8sCiAJCQkJNUNERDg4MTUxRTQzQkUzQzAwNjIxRTkyIC8qIHBhY2tl
dF9sb3NzX3N0YXRzLmNjICovLAogCQkJCTVDREQ4ODE2MUU0M0JFM0MwMDYyMUU5MiAvKiBwYWNr
ZXRfbG9zc19zdGF0cy5oICovLAogCQkJCTVDREQ4ODE4MUU0M0JFM0MwMDYyMUU5MiAvKiBwbGF5
b3V0X2RlbGF5X29yYWNsZS5jYyAqLywKQEAgLTEyNDAzLDE5ICsxMjQ5MSwyMCBAQAogCQkJCTVD
REQ4ODFFMUU0M0JFM0MwMDYyMUU5MiAvKiByZW1vdGVfbnRwX3RpbWVfZXN0aW1hdG9yLmNjICov
LAogCQkJCTVDRDI4NUY4MUU2QTY0NTIwMDk0RkRDOCAvKiBydGNwX25hY2tfc3RhdHMuY2MgKi8s
CiAJCQkJNUNEMjg1RjkxRTZBNjQ1MjAwOTRGREM4IC8qIHJ0Y3BfbmFja19zdGF0cy5oICovLAot
CQkJCTVDREQ4OEVCMUU0M0JGMjUwMDYyMUU5MiAvKiBydGNwX3BhY2tldCAqLywKIAkJCQk1Q0RE
ODgyMTFFNDNCRTNDMDA2MjFFOTIgLyogcnRjcF9wYWNrZXQuY2MgKi8sCiAJCQkJNUNERDg4MjIx
RTQzQkUzQzAwNjIxRTkyIC8qIHJ0Y3BfcGFja2V0LmggKi8sCiAJCQkJNUNERDg4MjQxRTQzQkUz
QzAwNjIxRTkyIC8qIHJ0Y3BfcmVjZWl2ZXIuY2MgKi8sCiAJCQkJNUNERDg4MjUxRTQzQkUzQzAw
NjIxRTkyIC8qIHJ0Y3BfcmVjZWl2ZXIuaCAqLywKIAkJCQk1Q0REODgyNzFFNDNCRTNDMDA2MjFF
OTIgLyogcnRjcF9zZW5kZXIuY2MgKi8sCiAJCQkJNUNERDg4MjgxRTQzQkUzQzAwNjIxRTkyIC8q
IHJ0Y3Bfc2VuZGVyLmggKi8sCisJCQkJNDE5QzgyRjYxRkUyMEVGQjAwNDBDMzBGIC8qIHJ0Y3Bf
dHJhbnNjZWl2ZXIuY2MgKi8sCisJCQkJNDE5QzgyRkExRkUyMEVGRDAwNDBDMzBGIC8qIHJ0Y3Bf
dHJhbnNjZWl2ZXIuaCAqLywKIAkJCQk0MTlDODJGOTFGRTIwRUZEMDA0MEMzMEYgLyogcnRjcF90
cmFuc2NlaXZlcl9jb25maWcuY2MgKi8sCiAJCQkJNDE5QzgyRjgxRkUyMEVGQzAwNDBDMzBGIC8q
IHJ0Y3BfdHJhbnNjZWl2ZXJfY29uZmlnLmggKi8sCiAJCQkJNDE5QzgyRjcxRkUyMEVGQzAwNDBD
MzBGIC8qIHJ0Y3BfdHJhbnNjZWl2ZXJfaW1wbC5jYyAqLywKIAkJCQk0MTlDODJGQzFGRTIwRUZF
MDA0MEMzMEYgLyogcnRjcF90cmFuc2NlaXZlcl9pbXBsLmggKi8sCi0JCQkJNDE5QzgyRjYxRkUy
MEVGQjAwNDBDMzBGIC8qIHJ0Y3BfdHJhbnNjZWl2ZXIuY2MgKi8sCi0JCQkJNDE5QzgyRkExRkUy
MEVGRDAwNDBDMzBGIC8qIHJ0Y3BfdHJhbnNjZWl2ZXIuaCAqLywKKwkJCQk1Q0REODgzQTFFNDNC
RTNDMDA2MjFFOTIgLyogcnRwX2Zvcm1hdC5jYyAqLywKKwkJCQk1Q0REODgzQjFFNDNCRTNDMDA2
MjFFOTIgLyogcnRwX2Zvcm1hdC5oICovLAogCQkJCTVDREQ4ODJFMUU0M0JFM0MwMDYyMUU5MiAv
KiBydHBfZm9ybWF0X2gyNjQuY2MgKi8sCiAJCQkJNUNERDg4MkYxRTQzQkUzQzAwNjIxRTkyIC8q
IHJ0cF9mb3JtYXRfaDI2NC5oICovLAogCQkJCTVDREQ4ODMwMUU0M0JFM0MwMDYyMUU5MiAvKiBy
dHBfZm9ybWF0X3ZpZGVvX2dlbmVyaWMuY2MgKi8sCkBAIC0xMjQyNCwzNSArMTI1MTMsMzMgQEAK
IAkJCQk1Q0REODgzNjFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX2Zvcm1hdF92cDguaCAqLywKIAkJ
CQk1Q0REODgzODFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX2Zvcm1hdF92cDkuY2MgKi8sCiAJCQkJ
NUNERDg4MzkxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXRfdnA5LmggKi8sCi0JCQkJNUNE
RDg4M0ExRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXQuY2MgKi8sCi0JCQkJNUNERDg4M0Ix
RTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXQuaCAqLywKLQkJCQk0MTkyNDFBRjIxMjc1OTAy
MDA2MzRGQ0YgLyogcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNpb24uY2MgKi8s
Ci0JCQkJNDEwMkY2RTgyMTI3MzQ1RjAwNkFFOEQ3IC8qIHJ0cF9nZW5lcmljX2ZyYW1lX2Rlc2Ny
aXB0b3JfZXh0ZW5zaW9uLmggKi8sCiAJCQkJNDEwMkY2RTUyMTI3MzQ1RTAwNkFFOEQ3IC8qIHJ0
cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuY2MgKi8sCiAJCQkJNDEwMkY2RTYyMTI3MzQ1RjAw
NkFFOEQ3IC8qIHJ0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3IuaCAqLywKKwkJCQk0MTkyNDFB
RjIxMjc1OTAyMDA2MzRGQ0YgLyogcnRwX2dlbmVyaWNfZnJhbWVfZGVzY3JpcHRvcl9leHRlbnNp
b24uY2MgKi8sCisJCQkJNDEwMkY2RTgyMTI3MzQ1RjAwNkFFOEQ3IC8qIHJ0cF9nZW5lcmljX2Zy
YW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLmggKi8sCiAJCQkJNDE0NUU0REIxRUY4Q0NFRTAwRkNG
NkU2IC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5jYyAqLywKIAkJCQk0MTNFNjc3QjIxNjk4
NkFEMDBFRjM3RUQgLyogcnRwX2hlYWRlcl9leHRlbnNpb25fc2l6ZS5jYyAqLywKIAkJCQk0MTNF
Njc3QzIxNjk4NkFFMDBFRjM3RUQgLyogcnRwX2hlYWRlcl9leHRlbnNpb25fc2l6ZS5oICovLAog
CQkJCTVDREQ4ODNGMUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfaGVhZGVyX2V4dGVuc2lvbnMuY2Mg
Ki8sCiAJCQkJNUNERDg4NDAxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9u
cy5oICovLAogCQkJCTVDREQ4ODQxMUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfaGVhZGVyX3BhcnNl
ci5jYyAqLywKKwkJCQk1Q0REODg0ODFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX3BhY2tldC5jYyAq
LywKKwkJCQk1Q0REODg0OTFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX3BhY2tldC5oICovLAogCQkJ
CTVDREQ4ODQzMUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcGFja2V0X2hpc3RvcnkuY2MgKi8sCiAJ
CQkJNUNERDg4NDQxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9wYWNrZXRfaGlzdG9yeS5oICovLAog
CQkJCTQxOUM4MkZFMUZFMjBGMDEwMDQwQzMwRiAvKiBydHBfcGFja2V0X3JlY2VpdmVkLmNjICov
LAogCQkJCTVDREQ4ODQ1MUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfcGFja2V0X3JlY2VpdmVkLmgg
Ki8sCiAJCQkJNDEwMkY2RTkyMTI3MzQ1RjAwNkFFOEQ3IC8qIHJ0cF9wYWNrZXRfdG9fc2VuZC5j
YyAqLywKIAkJCQk1Q0REODg0NjFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX3BhY2tldF90b19zZW5k
LmggKi8sCi0JCQkJNUNERDg4NDgxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9wYWNrZXQuY2MgKi8s
Ci0JCQkJNUNERDg4NDkxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9wYWNrZXQuaCAqLywKIAkJCQk1
Q0REODg1NDFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX3J0Y3BfY29uZmlnLmggKi8sCiAJCQkJNUNE
RDg4NTYxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9ydGNwX2ltcGwuY2MgKi8sCiAJCQkJNUNERDg4
NTcxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9ydGNwX2ltcGwuaCAqLywKKwkJCQk1Q0REODg1RDFF
NDNCRTNDMDA2MjFFOTIgLyogcnRwX3NlbmRlci5jYyAqLywKKwkJCQk1Q0REODg1RTFFNDNCRTND
MDA2MjFFOTIgLyogcnRwX3NlbmRlci5oICovLAogCQkJCTVDREQ4ODU4MUU0M0JFM0MwMDYyMUU5
MiAvKiBydHBfc2VuZGVyX2F1ZGlvLmNjICovLAogCQkJCTVDREQ4ODU5MUU0M0JFM0MwMDYyMUU5
MiAvKiBydHBfc2VuZGVyX2F1ZGlvLmggKi8sCiAJCQkJNUNERDg4NUIxRTQzQkUzQzAwNjIxRTky
IC8qIHJ0cF9zZW5kZXJfdmlkZW8uY2MgKi8sCiAJCQkJNUNERDg4NUMxRTQzQkUzQzAwNjIxRTky
IC8qIHJ0cF9zZW5kZXJfdmlkZW8uaCAqLywKLQkJCQk1Q0REODg1RDFFNDNCRTNDMDA2MjFFOTIg
LyogcnRwX3NlbmRlci5jYyAqLywKLQkJCQk1Q0REODg1RTFFNDNCRTNDMDA2MjFFOTIgLyogcnRw
X3NlbmRlci5oICovLAogCQkJCTVDREQ4ODVGMUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfdXRpbGl0
eS5jYyAqLywKIAkJCQk1Q0REODg2MDFFNDNCRTNDMDA2MjFFOTIgLyogcnRwX3V0aWxpdHkuaCAq
LywKIAkJCQk0MTAyRjZFNzIxMjczNDVGMDA2QUU4RDcgLyogcnRwX3ZpZGVvX2hlYWRlci5jYyAq
LywKQEAgLTEyNTg3LDggKzEyNjc0LDYgQEAKIAkJCQk1Q0REODlFMjFFNDNCRkIzMDA2MjFFOTIg
LyogcmFuZG9tX3ZlY3Rvci5oICovLAogCQkJCTVDREQ4OUU0MUU0M0JGQjMwMDYyMUU5MiAvKiBy
ZWRfcGF5bG9hZF9zcGxpdHRlci5jYyAqLywKIAkJCQk1Q0REODlFNTFFNDNCRkIzMDA2MjFFOTIg
LyogcmVkX3BheWxvYWRfc3BsaXR0ZXIuaCAqLywKLQkJCQk1Q0REODlFNjFFNDNCRkIzMDA2MjFF
OTIgLyogcnRjcC5jYyAqLywKLQkJCQk1Q0REODlFNzFFNDNCRkIzMDA2MjFFOTIgLyogcnRjcC5o
ICovLAogCQkJCTVDREQ4OUU4MUU0M0JGQjMwMDYyMUU5MiAvKiBzdGF0aXN0aWNzX2NhbGN1bGF0
b3IuY2MgKi8sCiAJCQkJNUNERDg5RTkxRTQzQkZCMzAwNjIxRTkyIC8qIHN0YXRpc3RpY3NfY2Fs
Y3VsYXRvci5oICovLAogCQkJCTVDREQ4OUVCMUU0M0JGQjMwMDYyMUU5MiAvKiBzeW5jX2J1ZmZl
ci5jYyAqLywKQEAgLTEyNjQyLDYgKzEyNzI3LDcgQEAKIAkJNUNERDhBQkIxRTQzQzIyMjAwNjIx
RTkyIC8qIGF1ZGlvICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk1Q0QyODU0QTFFNkE2MjA5MDA5NEZEQzggLyogdXRpbGl0eSAqLywKIAkJCQk0MTAyRjY5
QTIxMjczMjYxMDA2QUU4RDcgLyogYXVkaW9fbGV2ZWwuY2MgKi8sCiAJCQkJNDEwMkY2OTgyMTI3
MzI2MDAwNkFFOEQ3IC8qIGF1ZGlvX2xldmVsLmggKi8sCiAJCQkJNUNERDhBQkQxRTQzQzIzOTAw
NjIxRTkyIC8qIGF1ZGlvX3JlY2VpdmVfc3RyZWFtLmNjICovLApAQCAtMTI2NTIsMTIgKzEyNzM4
LDggQEAKIAkJCQk1Q0REOEFDNDFFNDNDMjM5MDA2MjFFOTIgLyogYXVkaW9fc3RhdGUuaCAqLywK
IAkJCQk0MUY5QkY5OTIwNTFDODRCMDBBQkYwQjkgLyogYXVkaW9fdHJhbnNwb3J0X2ltcGwuY2Mg
Ki8sCiAJCQkJNDFGOUJGOUEyMDUxQzg0QjAwQUJGMEI5IC8qIGF1ZGlvX3RyYW5zcG9ydF9pbXBs
LmggKi8sCi0JCQkJNDEzRTY3NzgyMTY5ODY3QTAwRUYzN0VEIC8qIGNoYW5uZWxfcmVjZWl2ZV9w
cm94eS5jYyAqLywKLQkJCQk0MTNFNjc3NzIxNjk4NjdBMDBFRjM3RUQgLyogY2hhbm5lbF9yZWNl
aXZlX3Byb3h5LmggKi8sCiAJCQkJNDE3OTUzRDIyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxf
cmVjZWl2ZS5jYyAqLywKIAkJCQk0MTc5NTNEMDIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9y
ZWNlaXZlLmggKi8sCi0JCQkJNDE3OTUzQ0YyMTY5ODM0RTAwMjgyNjZCIC8qIGNoYW5uZWxfc2Vu
ZF9wcm94eS5jYyAqLywKLQkJCQk0MTc5NTNEMTIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9z
ZW5kX3Byb3h5LmggKi8sCiAJCQkJNDE3OTUzQ0QyMTY5ODM0RTAwMjgyNjZCIC8qIGNoYW5uZWxf
c2VuZC5jYyAqLywKIAkJCQk0MTc5NTNDRTIxNjk4MzRFMDAyODI2NkIgLyogY2hhbm5lbF9zZW5k
LmggKi8sCiAJCQkJNUNERDhBQzYxRTQzQzIzOTAwNjIxRTkyIC8qIGNvbnZlcnNpb24uaCAqLywK
QEAgLTEyNjY1LDExICsxMjc0Nyw4IEBACiAJCQkJNDE5QzgzQjIxRkUyNDcyRTAwNDBDMzBGIC8q
IG51bGxfYXVkaW9fcG9sbGVyLmggKi8sCiAJCQkJNDEwMkY2OTcyMTI3MzI2MDAwNkFFOEQ3IC8q
IHJlbWl4X3Jlc2FtcGxlLmNjICovLAogCQkJCTQxMDJGNjlEMjEyNzMyNjEwMDZBRThENyAvKiBy
ZW1peF9yZXNhbXBsZS5oICovLAotCQkJCTQxOUM4MzMzMUZFMjQ1RTkwMDQwQzMwRiAvKiB0aW1l
X2ludGVydmFsLmNjICovLAotCQkJCTQxOUM4MzMyMUZFMjQ1RTkwMDQwQzMwRiAvKiB0aW1lX2lu
dGVydmFsLmggKi8sCiAJCQkJNDEwMkY2OUYyMTI3MzI2MjAwNkFFOEQ3IC8qIHRyYW5zcG9ydF9m
ZWVkYmFja19wYWNrZXRfbG9zc190cmFja2VyLmNjICovLAogCQkJCTQxMDJGNjk2MjEyNzMyNjAw
MDZBRThENyAvKiB0cmFuc3BvcnRfZmVlZGJhY2tfcGFja2V0X2xvc3NfdHJhY2tlci5oICovLAot
CQkJCTVDRDI4NTRBMUU2QTYyMDkwMDk0RkRDOCAvKiB1dGlsaXR5ICovLAogCQkJKTsKIAkJCXBh
dGggPSBhdWRpbzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjgyNywxMCArMTI5
MDYsMTAgQEAKIAkJNUNERDhDMTIxRTQzQzM5MjAwNjIxRTkyIC8qIHZwOSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDEzRTY3OTIyMTY5ODgxOTAwRUYz
N0VEIC8qIHN2Y19yYXRlX2FsbG9jYXRvci5jYyAqLywKLQkJCQk0MTNFNjc5MzIxNjk4ODE5MDBF
RjM3RUQgLyogc3ZjX3JhdGVfYWxsb2NhdG9yLmggKi8sCiAJCQkJNDEzRTY3ODAyMTY5ODcwRjAw
RUYzN0VEIC8qIHN2Y19jb25maWcuY2MgKi8sCiAJCQkJNDEzRTY3N0YyMTY5ODcwRjAwRUYzN0VE
IC8qIHN2Y19jb25maWcuaCAqLywKKwkJCQk0MTNFNjc5MjIxNjk4ODE5MDBFRjM3RUQgLyogc3Zj
X3JhdGVfYWxsb2NhdG9yLmNjICovLAorCQkJCTQxM0U2NzkzMjE2OTg4MTkwMEVGMzdFRCAvKiBz
dmNfcmF0ZV9hbGxvY2F0b3IuaCAqLywKIAkJCQk1Q0REOEMxMzFFNDNDM0I0MDA2MjFFOTIgLyog
dnA5X25vb3AuY2MgKi8sCiAJCQkpOwogCQkJbmFtZSA9IHZwOTsKQEAgLTEzMjA3LDggKzEzMjg2
LDYgQEAKIAkJCQk0MTkyNDFCMTIxMjc1OTFDMDA2MzRGQ0YgLyogYmJyICovLAogCQkJCTQxRTAy
QzhGMjEyNzM0RTgwMEMyN0NENiAvKiBnb29nX2NjICovLAogCQkJCTQxRTAyQ0Q1MjEyNzM2MjMw
MEMyN0NENiAvKiBydHAgKi8sCi0JCQkJNDFBMDhCRDYyMTI3MkYxQzAwMUQ1RDdCIC8qIGNvbmdl
c3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgKi8sCi0JCQkJNDFBMDhCRDUyMTI3
MkYxQzAwMUQ1RDdCIC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuaCAq
LywKIAkJCQk0MTMwOTFGRDFFRjhEMDZEMDA3NTdDNTUgLyogcmVjZWl2ZV9zaWRlX2Nvbmdlc3Rp
b25fY29udHJvbGxlci5jYyAqLywKIAkJCQk0MTMwOTIxNDFFRjhENUVEMDA3NTdDNTUgLyogc2Vu
ZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlci5jYyAqLywKIAkJCQk1Q0REOEZCMDFFNDNDRDA3
MDA2MjFFOTIgLyogdHJhbnNwb3J0X2ZlZWRiYWNrX2FkYXB0ZXIuY2MgKi8sCkBAIC0xMzMwNSw4
ICsxMzM4MiwxMSBAQAogCQk1Q0REOTA1MTFFNDNEMTA0MDA2MjFFOTIgLyogYml0cmF0ZV9jb250
cm9sbGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0
MUZDQkI1QjIxQjFGRUEzMDBBNURGMjcgLyogYml0cmF0ZV9jb250cm9sbGVyLmNjICovLAogCQkJ
CTVDREQ5MDUyMUU0M0QxMTIwMDYyMUU5MiAvKiBiaXRyYXRlX2NvbnRyb2xsZXJfaW1wbC5jYyAq
LywKIAkJCQk1Q0REOTA1MzFFNDNEMTEyMDA2MjFFOTIgLyogYml0cmF0ZV9jb250cm9sbGVyX2lt
cGwuaCAqLywKKwkJCQk0MUZDQkI2ODIxQjFGRjFCMDBBNURGMjcgLyogbG9zc19iYXNlZF9iYW5k
d2lkdGhfZXN0aW1hdGlvbi5jYyAqLywKKwkJCQk0MUZDQkI2NzIxQjFGRjFCMDBBNURGMjcgLyog
bG9zc19iYXNlZF9iYW5kd2lkdGhfZXN0aW1hdGlvbi5oICovLAogCQkJCTVDREQ5MDVCMUU0M0Qx
MTIwMDYyMUU5MiAvKiBzZW5kX3NpZGVfYmFuZHdpZHRoX2VzdGltYXRpb24uY2MgKi8sCiAJCQkJ
NUNERDkwNUMxRTQzRDExMjAwNjIxRTkyIC8qIHNlbmRfc2lkZV9iYW5kd2lkdGhfZXN0aW1hdGlv
bi5oICovLAogCQkJKTsKQEAgLTEzNTQzLDcgKzEzNjIzLDYgQEAKIAkJCWlzYSA9IFBCWEhlYWRl
cnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVz
ID0gKAotCQkJCTVDMDg4QzExMUU0QUE0NDQwMDQwMzk5NSAvKiBidW5kbGVmaWx0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDMDg4QzEzMUU0QUE0NDQwMDQwMzk5NSAvKiBjaGFubmVsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzA4OEMxNTFFNEFBNDQ0MDA0MDM5OTUgLyogY2hhbm5lbG1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMDg4QzE5MUU0QUE0NDQwMDQwMzk5NSAvKiBleHRl
cm5hbGhtYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMTM3MjMsNyArMTM4MDIsNiBAQAogCQkJCTQx
NkQzQkREMjEyNzMxQzIwMDc3NUYwOSAvKiBhZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9h
Z2MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjQxMUM4MUVGOTdCQUYwMDM0M0MyNiAvKiBhZG1f
aGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1QTkxRTZBNjM0MzAwOTRGREM4IC8q
IGFlYzNfY29tbW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTQ0QjNENTIxNjk4OTZEMDA0MzYz
QUMgLyogUlRDTmF0aXZlTXV0YWJsZUk0MjBCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
RDI4NUFCMUU2QTYzNDMwMDk0RkRDOCAvKiBhZWMzX2ZmdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNERDg2QjcxRTQzQjlDMjAwNjIxRTkyIC8qIGFlY19jb21tb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4NkJEMUU0M0I5QzIwMDYyMUU5MiAvKiBhZWNfY29yZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMzc1OCw2ICsxMzgzNiw3IEBACiAJCQkJNDE0MzNEMDExRjc5QjMzNDAwMzg3QjREIC8q
IGFyaXRoX3JvdXRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjlCRjg3MjA1MUM4MDEwMEFC
RjBCOSAvKiBhcnJheV92aWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjNFNDFGRTE4RTA4
MDAzNzNFOTkgLyogYXJyYXlzaXplLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI3OTIxQjFG
RkMwMDBBNURGMjcgLyogYXNjaWkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjI2M0IxMjEyNjgw
QTgwMDI3NEY1OSAvKiBhc21fZGVmaW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0Y4RDkx
RTQxNkQ1MzAwMkNBNTMxIC8qIGFzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0Ey
MkE4MUZFMThFMDYwMDM3M0U5OSAvKiBhc3luY2ludm9rZXItaW5sLmggaW4gSGVhZGVycyAqLywK
QEAgLTEzNzc2LDcgKzEzODU1LDYgQEAKIAkJCQk1Q0REODQxNjFFNDM5QjI5MDA2MjFFOTIgLyog
YXVkaW9fZGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1NDUxRTZBNjFEMjAwOTRG
REM4IC8qIGF1ZGlvX2RlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NTQzMUU2QTYx
RDIwMDk0RkRDOCAvKiBhdWRpb19kZWNvZGVyX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxNzk1M0MwMjE2OTgyNEIwMDI4MjY2QiAvKiBSVENDb2RlY1NwZWNpZmljSW5mb0gyNjQuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxRjlCRjk4MjA1MUM4MjEwMEFCRjBCOSAvKiBhdWRpb19kZWNv
ZGVyX2ZhY3RvcnlfdGVtcGxhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4M0U4MUZFMjQ4
MzUwMDQwQzMwRiAvKiBhdWRpb19kZWNvZGVyX2c3MTEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
NDBCODMyMUU0RTMzOTYwMDc0MDlFNiAvKiBhdWRpb19kZWNvZGVyX2c3MjIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTM4MjAsNyArMTM4OTgsNiBAQAogCQkJCTQxOUM4MzY5MUZFMjQ2Q0EwMDQwQzMw
RiAvKiBhdWRpb19lbmNvZGVyX2lzYWNfZmxvYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
QzBDMUU0M0MzNDYwMDYyMUU5MiAvKiBhdWRpb19lbmNvZGVyX2lzYWNfdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNERDhDMEIxRTQzQzM0NjAwNjIxRTkyIC8qIGF1ZGlvX2VuY29kZXJfaXNhY190
X2ltcGwuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNzk1M0M5MjE2OTgyNEIwMDI4MjY2QiAvKiBS
VENWaWRlb0VuY29kZXJIMjY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODNGMzFGRTI0ODhE
MDA0MEMzMEYgLyogYXVkaW9fZW5jb2Rlcl9MMTYuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
QzY0MUU0M0M2MDkwMDYyMUU5MiAvKiBhdWRpb19lbmNvZGVyX29wdXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxOUM4MkYwMUZFMjBFQjUwMDQwQzMwRiAvKiBhdWRpb19lbmNvZGVyX29wdXMuaCBp
biBIZWFkZXJzICovLApAQCAtMTM4MzMsOSArMTM5MTAsNyBAQAogCQkJCTQxNUYxRkNGMjEyNzMw
RjAwMDA2NENCRiAvKiBhdWRpb19mcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg0OTMx
RTZBNUY0MTAwOTRGREM4IC8qIGF1ZGlvX2ZyYW1lX21hbmlwdWxhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0QyODU0RTFFNkE2MjEzMDA5NEZEQzggLyogYXVkaW9fZnJhbWVfb3BlcmF0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NEIzREQyMTY5QTA3MDAwNDM2M0FDIC8qIFJUQ1Zp
ZGVvRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEwMkY2QTIyMTI3MzI2MjAwNkFFOEQ3
IC8qIGF1ZGlvX2xldmVsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNFNjdBMDIxNjk4ODk1MDBF
RjM3RUQgLyogUlRDVmlkZW9FbmNvZGVyUXBUaHJlc2hvbGRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0REOEE5MDFFNDNDMDBGMDA2MjFFOTIgLyogYXVkaW9fbG9vcC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE1RjFGQ0QyMTI3MzBGMDAwMDY0Q0JGIC8qIGF1ZGlvX21peGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0QyODQ5NjFFNkE1RjQxMDA5NEZEQzggLyogYXVkaW9fbWl4ZXJfaW1wbC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMzg1NCw3ICsxMzkyOSw2IEBACiAJCQkJNUNERDhDNEYxRTQz
QzU4RTAwNjIxRTkyIC8qIGF1ZGlvX3NpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QTky
MUU0M0MwMEYwMDYyMUU5MiAvKiBhdWRpb19zaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
OEFEMzFFNDNDMjM5MDA2MjFFOTIgLyogYXVkaW9fc3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxNzk1M0UzMjE2OTgzQ0EwMDI4MjY2QiAvKiBtb2R1bGVfZmVjX3R5cGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0QyODRCMzFFNkE1RjlGMDA5NEZEQzggLyogYXVkaW9fc3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxRjlCRjlDMjA1MUM4NEMwMEFCRjBCOSAvKiBhdWRpb190cmFuc3Bv
cnRfaW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGOUJGQTAyMDUxQzg4NTAwQUJGMEI5IC8q
IGF1ZGlvX3V0aWwuaCBpbiBIZWFkZXJzICovLApAQCAtMTM4NzcsNyArMTM5NTEsNiBAQAogCQkJ
CTVDNEI0RDBBMUU0MzIyRjYwMDI2NTFDOCAvKiBiYXNpY3BvcnRhbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxOTI0MUM2MjEyNzU5M0YwMDYzNEZDRiAvKiBiYnJfZmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE5MjQxQzMyMTI3NTkzRjAwNjM0RkNGIC8qIGJicl9uZXR3b3Jr
X2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNjIyNUU1MjE2OTgxOTUwMEE5MUM5
QiAvKiBvYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEz
QTIzNUMxRkUxOEUwNzAwMzczRTk5IC8qIGJpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkQz
QkUxMjEyNzMxQzIwMDc3NUYwOSAvKiBiaXF1YWRfZmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjM3NzFGRTE4RTA3MDAzNzNFOTkgLyogYml0YnVmZmVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTEzODg2LDcgKzEzOTU5LDYgQEAKIAkJCQk0MUYyNjM4MjIxMjY3Qjc3MDAyNzRGNTkgLyog
Yml0cmF0ZV9jb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhGN0UxRTQzQ0JF
MDAwNjIxRTkyIC8qIGJpdHJhdGVfY29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
RDkwNUUxRTQzRDExMjAwNjIxRTkyIC8qIGJpdHJhdGVfY29udHJvbGxlcl9pbXBsLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0MTQ0QjNFQTIxNjlDNUUzMDA0MzYzQUMgLyogUlRDVmlkZW9FbmNvZGVy
U2V0dGluZ3MrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMDJDQUMyMTI3MzUyRDAw
QzI3Q0Q2IC8qIGJpdHJhdGVfZXN0aW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEZB
MTFFNDNDQ0JFMDA2MjFFOTIgLyogYml0cmF0ZV9wcm9iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxRTAyQ0QwMjEyNzM1QjcwMEMyN0NENiAvKiBiaXRyYXRlX3NldHRpbmdzLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEzODk0LDcgKzEzOTY2LDYgQEAKIAkJCQk0MUJFNzFBODIxNUM0NjM3MDBBN0Ix
OTYgLyogYml0dmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1QUQxRTZBNjM0MzAwOTRG
REM4IC8qIGJsb2NrX2ZyYW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg2ODgxRTQzQjkz
OTAwNjIxRTkyIC8qIGJsb2NrX21lYW5fY2FsY3VsYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NDE3OTUzQzMyMTY5ODI0QjAwMjgyNjZCIC8qIFJUQ0gyNjRQcm9maWxlTGV2ZWxJZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNEMjg1QjExRTZBNjM0MzAwOTRGREM4IC8qIGJsb2NrX3Byb2Nlc3Nv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1QUYxRTZBNjM0MzAwOTRGREM4IC8qIGJsb2Nr
X3Byb2Nlc3Nvcl9tZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM4RTFGRTE4RTA3
MDAzNzNFOTkgLyogYnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEzOTAyLDE2ICsxMzk3Mywx
MyBAQAogCQkJCTQxM0EyMzJCMUZFMThFMDcwMDM3M0U5OSAvKiBidWZmZXJxdWV1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNEMjg1NDkxRTZBNjFEMjAwOTRGREM4IC8qIGJ1aWx0aW5fYXVkaW9f
ZGVjb2Rlcl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTMwOTFGQzFFRjhDRkY4MDA3
NTdDNTUgLyogYnVpbHRpbl9hdWRpb19lbmNvZGVyX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAot
CQkJCTQxNzk1M0U0MjE2OTgzQ0EwMDI4MjY2QiAvKiBtb2R1bGUuaCBpbiBIZWFkZXJzICovLAot
CQkJCTQxM0U2Nzc5MjE2OTg2N0EwMEVGMzdFRCAvKiBjaGFubmVsX3JlY2VpdmVfcHJveHkuaCBp
biBIZWFkZXJzICovLAorCQkJCTQxRkNCQjFFMjFCMUY3Q0QwMEE1REYyNyAvKiBidWlsdGluX3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjI2
MzYwMjEyNjdBREYwMDI3NEY1OSAvKiBidWlsdGluX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3NjkyMTY5ODU0QjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5j
b2RlclZQOC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzNjEyMTI2N0FERjAwMjc0RjU5IC8q
IGJ1aWx0aW5fdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
OEI3NTFFNDNDMkI1MDA2MjFFOTIgLyogYndfZXhwYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0REODkzRjFFNDNCRjNBMDA2MjFFOTIgLyogYnllLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
ODg3NjFFNDNCRTNDMDA2MjFFOTIgLyogYnl0ZV9pby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEz
QTIzQTQxRkUxOEUwODAwMzczRTk5IC8qIGJ5dGVidWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxNzk1M0Y4MjE2OTg0QkUwMDI4MjY2QiAvKiBSVENDb2RlY1NwZWNpZmljSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDFCRTcxQUUyMTVDNDYzNzAwQTdCMTk2IC8qIGJ5dGVjb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTNBMjMzRTFGRTE4RTA3MDAzNzNFOTkgLyogYnl0ZW9yZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODRCODFFNkE1RjlGMDA5NEZEQzggLyogY2FsbC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMzkzMywxNiArMTQwMDEsMTYgQEAKIAkJCQk1Q0REOEI4MzFFNDND
MkI1MDA2MjFFOTIgLyogY2JfdXBkYXRlX2Jlc3RfaW5kZXguaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDNEI0QzY1MUU0MzFGOUMwMDI2NTFDOCAvKiBjaGFubmVsX2J1ZmZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNERDhGODExRTQzQ0JFMDAwNjIxRTkyIC8qIGNoYW5uZWxfY29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzRDYyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxf
cmVjZWl2ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzRDQyMTY5ODM0RjAwMjgyNjZCIC8q
IGNoYW5uZWxfc2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCODUxRTQzQzJCNTAwNjIx
RTkyIC8qIGNoZWJ5c2hldi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzNEYxRkUxOEUwNzAw
MzczRTk5IC8qIGNoZWNrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMwODg1MkExRTRBOTlEMjAw
NDAzOTk1IC8qIGNpcGhlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3NjYyMTY5ODU0QjAw
RUYzN0VEIC8qIFJUQ1ZpZGVvQ29kZWNDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ4NkEyMUU0M0I5OTQwMDYyMUU5MiAvKiBjaXJjdWxhcl9idWZmZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQxRkNCQjc2MjFCMUZGQTQwMEE1REYyNyAvKiBjb2NvYV90aHJlYWRpbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDNEI0OERDMUU0MkMxRTMwMDI2NTFDOCAvKiBjb2RlYy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNDE2MjI1RTgyMTY5ODE5NTAwQTkxQzlCIC8qIG9iamNfdmlkZW9fZGVj
b2Rlcl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODdCMDFFNDNCQzA1MDA2MjFF
OTIgLyogY29kZWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDMzQ0YzMUY3OUIzMzQwMDM4N0I0
RCAvKiBjb2RlYy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNUNERDg1MTYxRTQzQjFFQTAwNjIxRTky
IC8qIGNvZGVjX21hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4M0M5MUU0MzlBNkYw
MDYyMUU5MiAvKiBjb2RlY190aW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEwMkY2RTIyMTI3
MzQxNjAwNkFFOEQ3IC8qIGNvbG9yX3NwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEEw
RTFFNDNCRkIzMDA2MjFFOTIgLyogY29tZm9ydF9ub2lzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
Mzk2MSwyNyArMTQwMjksMzEgQEAKIAkJCQk1Q0REOEZFQzFFNDNDRENBMDA2MjFFOTIgLyogY29u
ZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzYzRjhEQjFFNDE2RDUzMDAyQ0E1MzEgLyogY29u
ZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDE2RDIxMjczODlCMDA2MzRGQ0YgLyogY29u
Z2VzdGlvbl9jb250cm9sbGVyX2V4cGVyaW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxQTA4
QkQ3MjEyNzJGMUQwMDFENUQ3QiAvKiBjb25nZXN0aW9uX3dpbmRvd19wdXNoYmFja19jb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI0MDIxQjFGREI4MDBBNURGMjcgLyogY29u
Z2VzdGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNERDhBOTQxRTQzQzAwRjAwNjIxRTkyIC8qIGNvbnN0YW50X3BjbV9wYWNrZXRfc291cmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDg3ODFFNDJDMUJBMDAyNjUxQzggLyogY29uc3RhbnRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEI4QTFFNDNDMkI1MDA2MjFFOTIgLyogY29uc3Rh
bnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM2QzFGRTE4RTA3MDAzNzNFOTkgLyogY29u
c3RydWN0b3JtYWdpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQUQxQTQyMTI2NUIxMDAwM0Y3
MjYzIC8qIGNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCMzgyMUIxRjhGQzAw
QTVERjI3IC8qIGNvbnRyb2xfaGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhGODYx
RTQzQ0JFMDAwNjIxRTkyIC8qIGNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
Rjg0MUU0M0NCRTAwMDYyMUU5MiAvKiBjb250cm9sbGVyX21hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDREQ4QUQ0MUU0M0MyMzkwMDYyMUU5MiAvKiBjb252ZXJzaW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MUY5QkZCNDIwNTFDOTM2MDBBQkYwQjkgLyogY29udmVydF9sZWdhY3lfdmlk
ZW9fZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzQUMxRkUxOEUwODAwMzczRTk5
IC8qIGNvcHlvbndyaXRlYnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUJFNzFCQzIxNUM0
NjM3MDBBN0IxOTYgLyogY29yZXR5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxODg5RDc2MjE2
QkM0RUMwMDQ2MTRERCAvKiBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQxRkNCQjUxMjFCMUZFNDYwMEE1REYyNyAvKiBjcHVfc3BlZWRfZXhwZXJpbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzRTIxRkUxOEUwODAwMzczRTk5IC8qIGNwdV90aW1l
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODdCMjFFNDNCQzA1MDA2MjFFOTIgLyogY3JjLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjJBQzFGRTE4RTA2MDAzNzNFOTkgLyogY3JjMzIuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDREQ4QjhDMUU0M0MyQjUwMDYyMUU5MiAvKiBjcmVhdGVfYXVn
bWVudGVkX3ZlYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCMTIyMUIxRjUzNzAwQTVERjI3
IC8qIGNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MUZDQkI2NDIxQjFGRUY2MDBBNURGMjcgLyogY3JlYXRlX3ZwOF90ZW1wb3JhbF9sYXllcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxM0EyMzY5MUZFMThFMDcwMDM3M0U5OSAvKiBjcml0aWNhbHNl
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QTEwMUU0M0JGQjMwMDYyMUU5MiAvKiBj
cm9zc19jb3JyZWxhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMwODg1MkIxRTRBOTlEMjAw
NDAzOTk1IC8qIGNyeXB0b19rZXJuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMDg4NTJDMUU0
QTk5RDIwMDQwMzk5NSAvKiBjcnlwdG9fdHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNC
QjJFMjFCMUY4QjcwMEE1REYyNyAvKiBjcnlwdG9vcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1QzRCNDhERDFFNDJDMUUzMDAyNjUxQzggLyogY3J5cHRvcGFyYW1zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUY5QkY5MDIwNTFDODAxMDBBQkYwQjkgLyogY3J5cHRvcGFyYW1zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTNBMjMyOTFGRTE4RTA3MDAzNzNFOTkgLyogY3J5cHRzdHJpbmcuaCBp
biBIZWFkZXJzICovLApAQCAtMTQwNDQsNyArMTQxMTYsNiBAQAogCQkJCTVDREQ4NEIxMUU0M0FG
MTMwMDYyMUU5MiAvKiBlY2hvX2NvbnRyb2xfbW9iaWxlX2ltcGwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDRDI4NUJCMUU2QTYzNDMwMDk0RkRDOCAvKiBlY2hvX3BhdGhfZGVsYXlfZXN0aW1hdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODVCRDFFNkE2MzQzMDA5NEZEQzggLyogZWNob19w
YXRoX3ZhcmlhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5NTNCRDIxNjk4MjRCMDAy
ODI2NkIgLyogaGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1QzExRTZBNjM0MzAw
OTRGREM4IC8qIGVjaG9fcmVtb3Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1QkYxRTZB
NjM0MzAwOTRGREM4IC8qIGVjaG9fcmVtb3Zlcl9tZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjEzRTFGRTBGMEVGMDAzNzNFOTkgLyogZWt0LmggaW4gSGVhZGVycyAqLywKQEAgLTE0
MDUzLDYgKzE0MTI0LDcgQEAKIAkJCQk1Q0REOEE5NjFFNDNDMDBGMDA2MjFFOTIgLyogZW5jb2Rl
X25ldGVxX2lucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODNDRDFFNDM5QTZGMDA2MjFF
OTIgLyogZW5jb2RlZF9mcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBMDhCQUMyMTI2ODFD
ODAwMUQ1RDdCIC8qIGVuY29kZWRfZnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNCQjFD
MjFCMUY3Q0QwMEE1REYyNyAvKiBlbmNvZGVkX2ltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MUUwMkM4OTIxMjczNEI5MDBDMjdDRDYgLyogZW5jb2Rlcl9kYXRhYmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNERDg1QTAxRTQzQjVDMDAwNjIxRTkyIC8qIGVuY29kZXJfcnRjcF9mZWVkYmFj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFQ0VBRkMyMDY0NjY2NDAwOUQ1MTQxIC8qIEVuY29k
ZXJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTQwNjcsNyArMTQxMzksNiBAQAogCQkJ
CTVDMDg4NTJFMUU0QTk5RDIwMDQwMzk5NSAvKiBlcnIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
QkU3MUFBMjE1QzQ2MzcwMEE3QjE5NiAvKiBlcnJ3YXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTNBMjNBNTFGRTE4RTA4MDAzNzNFOTkgLyogZXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQx
M0U2Nzg1MjE2OTg3N0QwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJTZXR0aW5ncy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNEMjg2MTUxRTZBNjYxMzAwOTRGREM4IC8qIGV2ZW50X2xvZ193cml0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzdFMUZFMThFMDcwMDM3M0U5OSAvKiBldmVu
dF90cmFjZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzUwMUZFMjQ2NjUwMDQwQzMwRiAv
KiBleHBfZmlsdGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MDc2LDcgKzE0MTQ3LDYgQEAKIAkJ
CQk0MUJFNzFBNjIxNUM0NjM3MDBBN0IxOTYgLyogZXhwci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNERDg5NEIxRTQzQkYzQTAwNjIxRTkyIC8qIGV4dGVuZGVkX2ppdHRlcl9yZXBvcnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDREQ4OTRFMUU0M0JGM0EwMDYyMUU5MiAvKiBleHRlbmRlZF9yZXBv
cnRzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNFNjdBMTIxNjk4ODk1MDBFRjM3RUQgLyogUlRD
UnRwRnJhZ21lbnRhdGlvbkhlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhBOTgxRTQz
QzAwRjAwNjIxRTkyIC8qIGZha2VfZGVjb2RlX2Zyb21fZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEyOTlCOTcyMTI3MzY5MTAwQjM0MTRCIC8qIGZha2VfbmV0d29ya19waXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTkyNDE1NjIxMjczNzZGMDA2MzRGQ0YgLyogZmFrZWNhbmRpZGF0ZXBh
aXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQwODQsNyArMTQxNTQsNiBAQAogCQkJCTQxOTI0MTUz
MjEyNzM3NkYwMDYzNEZDRiAvKiBmYWtlZHRsc3RyYW5zcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDE5MjQxNTkyMTI3Mzc2RjAwNjM0RkNGIC8qIGZha2VpY2V0cmFuc3BvcnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDNEI0OERGMUU0MkMxRTMwMDI2NTFDOCAvKiBmYWtlbWVkaWFlbmdpbmUu
aCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0U2NzZBMjE2OTg1NEIwMEVGMzdFRCAvKiBSVENXcmFw
cGVkTmF0aXZlVmlkZW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjJCNzFGRTE4
RTA3MDAzNzNFOTkgLyogZmFrZW5ldHdvcmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNEI0OEUw
MUU0MkMxRTMwMDI2NTFDOCAvKiBmYWtlbmV0d29ya2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE5MjQxNTgyMTI3Mzc2RjAwNjM0RkNGIC8qIGZha2VwYWNrZXR0cmFuc3BvcnQuaCBp
biBIZWFkZXJzICovLApAQCAtMTQxMDQsNyArMTQxNzMsNiBAQAogCQkJCTQxRTAyQzhFMjEyNzM0
QjkwMEMyN0NENiAvKiBmZWNfcmF0ZV90YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4
N0MxRTQzQkUzQzAwNjIxRTkyIC8qIGZlY190ZXN0X2hlbHBlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFGMjYzODkyMTI2N0Y0MDAwMjc0RjU5IC8qIGZmdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NDE2MjI1RTMyMTY5ODE5NTAwQTkxQzlCIC8qIG9iamNfZnJhbWVfYnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTQzM0QyMjFGNzlCMzM0MDAzODdCNEQgLyogZmZ0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUYyNjM2RjIxMjY3QjNFMDAyNzRGNTkgLyogZmZ0NGcuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxRjlCRkQzMjA1MURERTUwMEFCRjBCOSAvKiBmZnRfYnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTE0MTE5LDEyICsxNDE4NywxMCBAQAogCQkJCTVDREQ4QzhDMUU0M0M2NjAwMDYy
MUU5MiAvKiBmaWxlX3V0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYyNjNCMjIxMjY4MEE4
MDAyNzRGNTkgLyogZmlsZV93cmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjJFMTFG
RTE4RTA3MDAzNzNFOTkgLyogZmlsZXJvdGF0aW5nc3RyZWFtLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0MTNBMjNCRDFGRTE4RTA4MDAzNzNFOTkgLyogZmlsZXV0aWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTQzM0NFRDFGNzlCMzM0MDAzODdCNEQgLyogZmlsdGVyYmFua19pbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE0MzNEMEQxRjc5QjMzNDAwMzg3QjREIC8qIGZpbHRlcmJhbmtf
dGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJBMTFFNDNDMkI1MDA2MjFFOTIgLyog
ZmlsdGVyZWRfY2JfdmVjcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxMUEwMDQxRTQ1NzQwMDAw
NEYwOTg3IC8qIGZpbmVfYXVkaW9fYnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTYyMjVE
NjIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ4OTUxMUU0M0JGM0EwMDYyMUU5MiAvKiBmaXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNEI0
QzZFMUU0MzFGOUMwMDI2NTFDOCAvKiBmaXJfZmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTlDODMxQTFGRTI0MkIyMDA0MEMzMEYgLyogZmlyX2ZpbHRlcl9jLmggaW4gSGVhZGVycyAqLywK
QEAgLTE0MTMzLDEyICsxNDE5OSwxMCBAQAogCQkJCTQxM0EyM0RGMUZFMThFMDgwMDM3M0U5OSAv
KiBmaXJld2FsbHNvY2tldHNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEREIyNEQyMTI2
NUJENzAwMjk2RDQ3IC8qIGZpeGVkX2FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTVGMUZB
RTIxMjcyRkJBMDAwNjRDQkYgLyogZml4ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTQxNkQzQkU0MjEyNzMxQzIwMDc3NUYwOSAvKiBmaXhlZF9nYWluX2Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyM0JDMUZFMThFMDgwMDM3M0U5OSAv
KiBmbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4N0YxRTQzQkUzQzAwNjIxRTkyIC8q
IGZsZXhmZWNfaGVhZGVyX3JlYWRlcl93cml0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
NTM3MUU0M0IzOUMwMDYyMUU5MiAvKiBmbGV4ZmVjX3JlY2VpdmVfc3RyZWFtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0QyODRCQTFFNkE1RjlGMDA5NEZEQzggLyogZmxleGZlY19yZWNlaXZlX3N0
cmVhbV9pbXBsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNFNjc4MTIxNjk4NzBGMDBFRjM3RUQg
Lyogc3ZjX2NvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzQ0IxRkUyNDdCNDAwNDBD
MzBGIC8qIGZsZXhmZWNfcmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4M0NFMUZF
MjQ3QjQwMDQwQzMwRiAvKiBmbGV4ZmVjX3NlbmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEz
QTIyQTMxRkUxOEUwNjAwMzczRTk5IC8qIGZvcm1hdF9tYWNyb3MuaCBpbiBIZWFkZXJzICovLApA
QCAtMTQxNTIsOCArMTQyMTYsMTEgQEAKIAkJCQk1Q0REOEJBMzFFNDNDMkI1MDA2MjFFOTIgLyog
ZnJhbWVfY2xhc3NpZnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NDlCMUU2QTVGNDEwMDk0
RkRDOCAvKiBmcmFtZV9jb21iaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgzN0ExRTQz
OUEzNTAwNjIxRTkyIC8qIGZyYW1lX2Ryb3BwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNC
QjVBMjFCMUZFNkUwMEE1REYyNyAvKiBmcmFtZV9kdW1waW5nX2RlY29kZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4RjkxMUU0M0NCRTAwMDYyMUU5MiAvKiBmcmFtZV9sZW5ndGhfY29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgzRDQxRTQzOUE2RjAwNjIxRTkyIC8qIGZy
YW1lX29iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCMkYyMUIxRjhCNzAwQTVERjI3
IC8qIGZyYW1lZGVjcnlwdG9yaW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkIz
MDIxQjFGOEI3MDBBNURGMjcgLyogZnJhbWVlbmNyeXB0b3JpbnRlcmZhY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxM0EyMkEyMUZFMThFMDYwMDM3M0U5OSAvKiBmdW5jdGlvbl92aWV3LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUYyNjM4RTIxMjY3RjQ5MDAyNzRGNTkgLyogZzcxMS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE0MEI4MjUxRTRFMzM4MzAwNzQwOUU2IC8qIGc3MTFfaW50ZXJmYWNl
LmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTY0LDggKzE0MjMxLDYgQEAKIAkJCQk1Q0REODRCMzFF
NDNBRjEzMDA2MjFFOTIgLyogZ2Fpbl9jb250cm9sX2Zvcl9leHBlcmltZW50YWxfYWdjLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0REODRCNTFFNDNBRjEzMDA2MjFFOTIgLyogZ2Fpbl9jb250cm9s
X2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTA4QkNGMjEyNzJFRTIwMDFENUQ3QiAvKiBn
YWluX2NvbnRyb2xsZXIyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTZEM0JFNTIxMjczMUMyMDA3
NzVGMDkgLyogZ2Fpbl9jdXJ2ZV9hcHBsaWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTg4OUQ3
NTIxNkJCN0I5MDA0NjE0REQgLyogUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzK1ByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDREQ4QkE1MUU0M0MyQjUwMDYyMUU5MiAvKiBnYWluX2RlcXVh
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzAzMUU0M0JBNzUwMDYyMUU5MiAvKiBnYWlu
X21hcF9pbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCQTcxRTQzQzJCNTAwNjIx
RTkyIC8qIGdhaW5fcXVhbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTQxNzYsNiArMTQyNDEsNyBA
QAogCQkJCTVDREQ4QkFEMUU0M0MyQjUwMDYyMUU5MiAvKiBnZXRfc3luY19zZXEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0EyMTQxMUZFMEYwRUYwMDM3M0U5OSAvKiBnZXRvcHRfcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNERDg3MkExRTQzQkFCRTAwNjIxRTkyIC8qIGdtbS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDFGQ0JCNUYyMUIxRkVDNDAwQTVERjI3IC8qIGdvb2dfY2NfZmFjdG9yeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMDJDQUEyMTI3MzUyRDAwQzI3Q0Q2IC8qIGdvb2dfY2Nf
bmV0d29ya19jb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjMwMTFGRTE4RTA3MDAz
NzNFOTkgLyogZ3Rlc3RfcHJvZF91dGlsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjJFQTFG
RTE4RTA3MDAzNzNFOTkgLyogZ3VuaXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTQxODcsNiArMTQy
NTMsOCBAQAogCQkJCTQxNDVFNEJFMUVGODk0RjYwMEZDRjZFNiAvKiBoMjY0X3Byb2ZpbGVfbGV2
ZWxfaWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NUVCMUU2QTYzOUYwMDk0RkRDOCAvKiBo
MjY0X3Nwcm9wX3BhcmFtZXRlcl9zZXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODNEQTFF
NDM5QTZGMDA2MjFFOTIgLyogaDI2NF9zcHNfcHBzX3RyYWNrZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxRkNCQjcyMjFCMUZGNzQwMEE1REYyNyAvKiBoZHJfbWV0YWRhdGEuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQxNzk1M0JEMjE2OTgyNEIwMDI4MjY2QiAvKiBoZWxwZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTNBMjJEODFGRTE4RTA3MDAzNzNFOTkgLyogaGVscGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNERDgzREMxRTQzOUE2RjAwNjIxRTkyIC8qIGhpc3RvZ3JhbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE5QzgzNTgxRkUyNDY2NTAwNDBDMzBGIC8qIGhpc3RvZ3JhbV9wZXJj
ZW50aWxlX2NvdW50ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQxOTYsNyArMTQyNjQsNyBAQAog
CQkJCTQxQTA4QkFEMjEyNjgxQzgwMDFENUQ3QiAvKiBpMDEwX2J1ZmZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNEMjg0NjgxRTZBNTdGNDAwOTRGREM4IC8qIGk0MjBfYnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTEwOUFBRDFFNUZBMTkyMDBDMDk1NUEgLyogaTQyMF9idWZmZXJfcG9v
bC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NEIzREUyMTY5QTA3MDAwNDM2M0FDIC8qIFJUQ1Zp
ZGVvRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNDkyMUIxRkRFRjAwQTVERjI3
IC8qIGljZWNyZWRlbnRpYWxzaXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTA4QkMz
MjEyNjk1NzcwMDFENUQ3QiAvKiBpY2Vsb2dnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzA5
MUY3MUVGOENGQkQwMDc1N0M1NSAvKiBpY2VzZXJ2ZXJwYXJzaW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTkyNDE1QTIxMjczNzZGMDA2MzRGQ0YgLyogaWNldHJhbnNwb3J0aW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLApAQCAtMTQyMzEsNiArMTQyOTksNyBAQAogCQkJCTVDREQ4M0UyMUU0MzlB
NkYwMDYyMUU5MiAvKiBqaXR0ZXJfYnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODNF
MDFFNDM5QTZGMDA2MjFFOTIgLyogaml0dGVyX2J1ZmZlcl9jb21tb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDREQ4M0U0MUU0MzlBNkYwMDYyMUU5MiAvKiBqaXR0ZXJfZXN0aW1hdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MUZDQkI1NDIxQjFGRTQ2MDBBNURGMjcgLyogaml0dGVyX3VwcGVy
X2JvdW5kX2V4cGVyaW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGOTQxMUU0MTczN0Iw
MDJDQTUzMSAvKiBqc2VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzYzRjk0MzFFNDE3MzdCMDAy
Q0E1MzEgLyoganNlcGljZWNhbmRpZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0Y5NDUx
RTQxNzM3QjAwMkNBNTMxIC8qIGpzZXBzZXNzaW9uZGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtMTQyMzksMTIgKzE0MzA4LDEzIEBACiAJCQkJNUM2M0Y4REUxRTQxNkQ1MzAwMkNBNTMx
IC8qIGpzb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzY1MUZFMThFMDcwMDM3M0U5OSAv
KiBrZWVwX3JlZl91bnRpbF9kb25lLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzA4ODUzMDFFNEE5
OUQyMDA0MDM5OTUgLyoga2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI2RTIxQjFGRjNB
MDBBNURGMjcgLyoga2V5X2Rlcml2YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOTI0MTlC
MjEyNzU4NjUwMDYzNEZDRiAvKiBraXNzX2ZmdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg0
MjAxRTQzOUIyOTAwNjIxRTkyIC8qIGxlZ2FjeV9lbmNvZGVkX2F1ZGlvX2ZyYW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0REODRCOTFFNDNBRjEzMDA2MjFFOTIgLyogbGV2ZWxfZXN0aW1hdG9y
X2ltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxM0U2NzczMjE2OTg2M0IwMEVGMzdFRCAvKiBs
aWJ2cHhfaW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5NDA5NTIxMkUxMjhEMDBB
RDk1RTcgLyogbGlidnB4X3ZwOF9kZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5NDA5
MzIxMkUxMjhEMDBBRDk1RTcgLyogbGlidnB4X3ZwOF9lbmNvZGVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQk0MTc5NTNGNzIxNjk4NEJFMDAyODI2NkIgLyogUlRDRW5jb2RlZEltYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTVGMUZCMzIxMjcyRkJBMDAwNjRDQkYgLyogbGltaXRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDFCRTcxQUIyMTVDNDYzNzAwQTdCMTk2IC8qIGxpbmVtYXAuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxQkU3MUI5MjE1QzQ2MzcwMEE3QjE5NiAvKiBsaXN0Zm10LmggaW4g
SGVhZGVycyAqLywKQEAgLTE0MjUzLDEwICsxNDMyMywxMCBAQAogCQkJCTVDREQ4QzEwMUU0M0Mz
NDYwMDYyMUU5MiAvKiBsb2NrZWRfYmFuZHdpZHRoX2luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxM0EyMzMyMUZFMThFMDcwMDM3M0U5OSAvKiBsb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjM1MjFGRTE4RTA3MDAzNzNFOTkgLyogbG9nc2lua3MuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxRkNCQjY5MjFCMUZGMUIwMEE1REYyNyAvKiBsb3NzX2Jhc2VkX2JhbmR3aWR0aF9lc3Rp
bWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDFDMDIxMjc1OTNGMDA2MzRGQ0YgLyog
bG9zc19yYXRlX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3MDYxRTQzQkE3NTAw
NjIxRTkyIC8qIGxvdWRuZXNzX2hpc3RvZ3JhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1
NUUxRTZBNjJFRDAwOTRGREM4IC8qIGxvd19jdXRfZmlsdGVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0MTYyMjVENTIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTkyNDE0MDIxMjczNzI0MDA2MzRGQ0YgLyogbHBfcmVzaWR1YWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4N0M2MUU0M0JDMDUwMDYyMUU5MiAvKiBscGNfYW5h
bHlzaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkMyMUU0M0MyQjUwMDYyMUU5MiAvKiBs
cGNfZW5jb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTE0Mjc0LDE1ICsxNDM0NCwxNyBAQAogCQkJ
CTVDREQ4QkNFMUU0M0MyQjUwMDYyMUU5MiAvKiBsc3BfdG9fbHNmLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNBMjM5NzFGRTE4RTA4MDAzNzNFOTkgLyogbWFjdXRpbHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDRDI4NUNDMUU2QTYzNDMwMDk0RkRDOCAvKiBtYWluX2ZpbHRlcl91cGRhdGVfZ2Fp
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCM0QyMUIxRkQ0MDAwQTVERjI3IC8qIG1hdGNo
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODVEMDFFNkE2MzQzMDA5NEZEQzggLyogbWF0Y2hl
ZF9maWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNDRCM0RGMjE2OUEwNzAwMDQzNjNBQyAv
KiBSVENWaWRlb0VuY29kZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODVDRTFF
NkE2MzQzMDA5NEZEQzggLyogbWF0Y2hlZF9maWx0ZXJfbGFnX2FnZ3JlZ2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxOUM4MzU5MUZFMjQ2NjUwMDQwQzMwRiAvKiBtYXRodXRpbHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxRjlCRkQ2MjA1MURERTUwMEFCRjBCOSAvKiBtYXRyaXhfYnVmZmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUJFNzFCODIxNUM0NjM3MDBBN0IxOTYgLyogbWQ1Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI0NjIxQjFGREVGMDBBNURGMjcgLyogbWRuc19tZXNz
YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODZBNTFFNDNCOTk0MDA2MjFFOTIgLyogbWVh
bl92YXJpYW5jZV9lc3RpbWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4M0U2MUU0MzlB
NkYwMDYyMUU5MiAvKiBtZWRpYV9vcHRfdXRpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgz
RTgxRTQzOUE2RjAwNjIxRTkyIC8qIG1lZGlhX29wdGltaXphdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDFGQ0JCMEYyMUIxRjUzNzAwQTVERjI3IC8qIG1lZGlhX3RyYW5zcG9ydF9pbnRlcmZh
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNEI0OEU1MUU0MkMxRTMwMDI2NTFDOCAvKiBtZWRp
YWNoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMDJGNkIyMjEyNzMzMzEwMDZBRThENyAv
KiBtZWRpYWNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjQ4RTcxRTQyQzFFMzAwMjY1
MUM4IC8qIG1lZGlhY29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKQEAgLTE0Mjk4LDYgKzE0Mzcw
LDcgQEAKIAkJCQk1Q0QyODYzMzFFNkE2N0JGMDA5NEZEQzggLyogbWVkaWF0eXBlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDFBMDhCQjgyMTI2OEE3RDAwMUQ1RDdCIC8qIG1lbW9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzQTIzMDkxRkUxOEUwNzAwMzczRTk5IC8qIG1lbW9yeV91c2FnZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCODUyMUIyMDA3QjAwQTVERjI3IC8qIG1lbXV0aWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QTMwMUU0M0JGQjMwMDYyMUU5MiAvKiBtZXJnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyRkExRkUxOEUwNzAwMzczRTk5IC8qIG1lc3NhZ2Vk
aWdlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMkI5MUZFMThFMDcwMDM3M0U5OSAvKiBt
ZXNzYWdlaGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDMwNiwyMSArMTQzNzksMjMgQEAK
IAkJCQk1QzExQTAwNTFFNDU3NDAwMDA0RjA5ODcgLyogbW9ja19hdWRpb19kZXZpY2VfYnVmZmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEZFRDFFNDNDRENBMDA2MjFFOTIgLyogbW9ja19h
dWRpb19wcm9jZXNzaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODM1NjFGRTI0NjY1MDA0
MEMzMEYgLyogbW9kX29wcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNUNERDgzN0UxRTQzOUEzNTAw
NjIxRTkyIC8qIG1vdmluZ19hdmVyYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNFNDIx
Njk4M0NBMDAyODI2NkIgLyogbW9kdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNFNzIx
Njk4M0NBMDAyODI2NkIgLyogbW9kdWxlX2NvbW1vbl90eXBlcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDE3OTUzRTUyMTY5ODNDQTAwMjgyNjZCIC8qIG1vZHVsZV9jb21tb25fdHlwZXNfcHVibGlj
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNFMzIxNjk4M0NBMDAyODI2NkIgLyogbW9kdWxl
X2ZlY190eXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCMTYyMUIxRjdBQTAwQTVERjI3
IC8qIG1vdmluZ19hdmVyYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODYxMTFFNkE2NEM5
MDA5NEZEQzggLyogbW92aW5nX21heC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE4ODlENzgyMTZC
QzRFQzAwNDYxNEREIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIrUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE5QzgzNTUxRkUyNDY2NTAwNDBDMzBGIC8qIG1vdmluZ19tYXhfY291
bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzNTIxRkUyNDY2NTAwNDBDMzBGIC8qIG1v
dmluZ19tZWRpYW5fZmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEM4RjFFNDNDNjYw
MDA2MjFFOTIgLyogbW92aW5nX21vbWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkQw
MUU0M0MyQjUwMDYyMUU5MiAvKiBteV9jb3JyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODk1
NDFFNDNCRjNBMDA2MjFFOTIgLyogbmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgzRTkx
RTQzOUE2RjAwNjIxRTkyIC8qIG5hY2tfZmVjX3RhYmxlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NDE3OTUzRUUyMTY5ODQyMTAwMjgyNjZCIC8qIHZwOV9wcm9maWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REODNFQjFFNDM5QTZGMDA2MjFFOTIgLyogbmFja19tb2R1bGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4QTMzMUU0M0JGQjMwMDYyMUU5MiAvKiBuYWNrX3RyYWNrZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNDVFNEI3MUVGODk0M0UwMEZDRjZFNiAvKiBuYWx1X3Jld3JpdGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNCRjIxNjk4MjRCMDAyODI2NkIgLyogbmFsdV9y
ZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyQzQxRkUxOEUwNzAwMzczRTk5IC8q
IG5hdHNlcnZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NEIzRTAyMTY5QTA3MDAwNDM2M0FD
IC8qIFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMkQ5
MUZFMThFMDcwMDM3M0U5OSAvKiBuYXRzb2NrZXRmYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjJFNzFGRTE4RTA3MDAzNzNFOTkgLyogbmF0dHlwZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDREQ4QkQyMUU0M0MyQjUwMDYyMUU5MiAvKiBuZWFyZXN0X25laWdoYm9yLmggaW4gSGVh
ZGVycyAqLywKQEAgLTE0MzM1LDcgKzE0NDEwLDYgQEAKIAkJCQk0MUUwMkNDRjIxMjczNUI3MDBD
MjdDRDYgLyogbmV0d29ya19jb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUUwMkNDRTIx
MjczNUI3MDBDMjdDRDYgLyogbmV0d29ya190eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEz
QTIzN0MxRkUxOEUwNzAwMzczRTk5IC8qIG5ldHdvcmttb25pdG9yLmggaW4gSGVhZGVycyAqLywK
LQkJCQk0MTNFNjc5MTIxNjk4N0RCMDBFRjM3RUQgLyogUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyQzIxRkUxOEUwNzAwMzczRTk5IC8qIG5ldHdvcmtyb3V0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3MkIxRTQzQkFCRTAwNjIxRTkyIC8qIG5vaXNl
X2dtbV90YWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNUYxRkI0MjEyNzJGQkEwMDA2NENC
RiAvKiBub2lzZV9zcGVjdHJ1bV9lc3RpbWF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMTQzNDMs
MTEgKzE0NDE3LDEyIEBACiAJCQkJNUNERDg0RUExRTQzQjBCNjAwNjIxRTkyIC8qIG5vaXNlX3N1
cHByZXNzaW9uX2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NUZEMUU0M0I4NEUwMDYy
MUU5MiAvKiBub2lzZV9zdXBwcmVzc2lvbl94LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEEz
RTFFNDNCRkIzMDA2MjFFOTIgLyogbm9ybWFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5NTNF
QjIxNjk4M0YxMDAyODI2NkIgLyogcnR0X211bHRfZXhwZXJpbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDFGQ0JCNTUyMUIxRkU0NjAwQTVERjI3IC8qIG5vcm1hbGl6ZV9zaW11bGNhc3Rfc2l6
ZV9leHBlcmltZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODZBODFFNDNCOTk0MDA2MjFF
OTIgLyogbm9ybWFsaXplZF9jb3ZhcmlhbmNlX2VzdGltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUM2M0Y5NTQxRTQxNzM3QjAwMkNBNTMxIC8qIG5vdGlmaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REODYwMTFFNDNCODRFMDA2MjFFOTIgLyogbnNfY29yZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFFQ0VBQzEyMDY0MEYyODAwOUQ1MTQxIC8qIE5TU3RyaW5nK1N0ZFN0cmluZy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDE0NEIzRUYyMTY5QzYzRjAwNDM2M0FDIC8qIE5TU3RyaW5nK1N0
ZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg2MDYxRTQzQjg0RTAwNjIxRTkyIC8q
IG5zeF9jb3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODYwNzFFNDNCODRFMDA2MjFFOTIg
LyogbnN4X2RlZmluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4M0I0MUZFMjQ3MkUwMDQw
QzMwRiAvKiBudWxsX2F1ZGlvX3BvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDM1NSwxNCAr
MTQ0MzAsMTggQEAKIAkJCQk1QzA4ODUzMjFFNEE5OUQyMDA0MDM5OTUgLyogbnVsbF9jaXBoZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyM0MwMUZFMThFMDgwMDM3M0U5OSAvKiBudWxsc29j
a2V0c2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODUzMzFFNkE2MTExMDA5NEZEQzgg
LyogbnVsbHdlYnJ0Y3ZpZGVvZW5naW5lLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTYyMjVFMzIx
Njk4MTk1MDBBOTFDOUIgLyogb2JqY19mcmFtZV9idWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxNjIyNUU4MjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDE2MjI1RTUyMTY5ODE5NTAwQTkxQzlCIC8qIG9iamNfdmlk
ZW9fZW5jb2Rlcl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTYyMjVFOTIxNjk4MTk1
MDBBOTFDOUIgLyogb2JqY192aWRlb19mcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIz
MzYxRkUxOEUwNzAwMzczRTk5IC8qIG9uZXRpbWVldmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNERDg2OTUxRTQzQjkzOTAwNjIxRTkyIC8qIG9vdXJhX2ZmdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDg2OTIxRTQzQjkzOTAwNjIxRTkyIC8qIG9vdXJhX2ZmdF90YWJsZXNfY29tbW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkI3RTIxQjFGRkY2MDBBNURGMjcgLyogb3BlbnNzbF9r
ZXlfZGVyaXZhdGlvbl9oa2RmLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUREQjI2NjIxMjY3OUEz
MDAyOTZENDcgLyogb3BlbnNzbGNlcnRpZmljYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURE
QjI2MzIxMjY3OUEzMDAyOTZENDcgLyogb3BlbnNzbHNlc3Npb25jYWNoZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFEREIyNjEyMTI2NzlBMzAwMjk2RDQ3IC8qIG9wZW5zc2x1dGlsaXR5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUREQjI1MTIxMjY1QkU5MDAyOTZENDcgLyogb3B0aW9uYWwuaCBp
biBIZWFkZXJzICovLAotCQkJCTQxM0EyMzQ1MUZFMThFMDcwMDM3M0U5OSAvKiBvcHRpb25zZmls
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhDNjYxRTQzQzYwOTAwNjIxRTkyIC8qIG9wdXNf
aW5zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhDNjgxRTQzQzYwOTAwNjIxRTkyIC8qIG9w
dXNfaW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODdDRjFFNDNCQzA1MDA2MjFF
OTIgLyogb3Nfc3BlY2lmaWNfaW5saW5lLmggaW4gSGVhZGVycyAqLywKQEAgLTE0Mzc4LDcgKzE0
NDU3LDYgQEAKIAkJCQk0MUYyNjM5OTIxMjY3RjVFMDAyNzRGNTkgLyogcGFfcmluZ2J1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhGQTMxRTQzQ0NCRTAwNjIxRTkyIC8qIHBhY2VkX3Nl
bmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzMkUxRkUyNDVDRDAwNDBDMzBGIC8qIHBh
Y2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTkyNDE4RDIxMjc0OUM4MDA2MzRGQ0YgLyogcGFj
ZXJfY29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCRDQxRTQzQzJCNTAwNjIx
RTkyIC8qIHBhY2tfYml0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDgzRUYxRTQzOUE2RjAw
NjIxRTkyIC8qIHBhY2tldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhBQjAxRTQzQzAwRjAw
NjIxRTkyIC8qIHBhY2tldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDM4Niw3ICsxNDQ2NCw2IEBA
CiAJCQkJNUNERDhBNDExRTQzQkZCMzAwNjIxRTkyIC8qIHBhY2tldF9idWZmZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDREQ4M0VEMUU0MzlBNkYwMDYyMUU5MiAvKiBwYWNrZXRfYnVmZmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODg4RDFFNDNCRTNDMDA2MjFFOTIgLyogcGFja2V0X2xv
c3Nfc3RhdHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0U2Nzk1MjE2OTg4MTkwMEVGMzdFRCAv
KiBzdmNfcmF0ZV9hbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOTI0MUM4MjEyNzU5
M0YwMDYzNEZDRiAvKiBwYWNrZXRfbnVtYmVyX2luZGV4ZWRfcXVldWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxMDJGNkI5MjEyNzMzODIwMDZBRThENyAvKiBwYWNrZXRfcmVjZWl2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDREQ4RkE1MUU0M0NDQkUwMDYyMUU5MiAvKiBwYWNrZXRfcm91dGVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTE0Mzk1LDcgKzE0NDcyLDYgQEAKIAkJCQk1QzYzRjlGNDFF
NDE3NEY2MDAyQ0E1MzEgLyogcGFja2V0c29ja2V0ZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUM2M0Y5RjUxRTQxNzRGNjAwMkNBNTMxIC8qIHBhY2tldHRyYW5zcG9ydGludGVyZmFjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzRDkxRkUyNDdGMjAwNDBDMzBGIC8qIHBhY2tldHRy
YW5zcG9ydGludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNBMjM5MDFGRTE4RTA4MDAz
NzNFOTkgLyogcGF0aHV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDg4NDFFNDJDMUJB
MDAyNjUxQzggLyogcGF5bG9hZF90eXBlX21hcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
RDkwMDExRTQzQ0UzQTAwNjIxRTkyIC8qIHBjbTE2Yi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
Mjg1MDAxRTZBNjA1NzAwOTRGREM4IC8qIHBlZXJjb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
QEAgLTE0NDA1LDcgKzE0NDgxLDYgQEAKIAkJCQk0MTAyRjY5NTIxMjczMjA2MDA2QUU4RDcgLyog
cGVlcmNvbm5lY3Rpb25pbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0Y5NUIxRTQx
NzM3QjAwMkNBNTMxIC8qIHBlZXJjb25uZWN0aW9ucHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxRjlCRkUwMjA1MURFMTgwMEFCRjBCOSAvKiBwZWVyY29ubmVjdGlvbndyYXBwZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTQxNzk1M0JCMjE2OTgyNDIwMDI4MjY2QiAvKiBSVENEZWZhdWx0Vmlk
ZW9EZWNvZGVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzNEUxRkUyNDY2NTAw
NDBDMzBGIC8qIHBlcmNlbnRpbGVfZmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUJFNzFD
MDIxNUM0NjM3MDBBN0IxOTYgLyogcGhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyM0VB
MUZFMThFMDgwMDM3M0U5OSAvKiBwaHlzaWNhbHNvY2tldHNlcnZlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xNDQyNiwxMCArMTQ1MDEsOCBAQAogCQkJCTQxM0EyMzFEMUZFMThFMDcwMDM3M0U5OSAv
KiBwbGF0Zm9ybV90aHJlYWRfdHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4ODkwMUU0
M0JFM0MwMDYyMUU5MiAvKiBwbGF5b3V0X2RlbGF5X29yYWNsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDg5NTcxRTQzQkYzQTAwNjIxRTkyIC8qIHBsaS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NDEzRTY3NkMyMTY5ODU0QjAwRUYzN0VEIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0VuY29kZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzM0MUU0M0JBQkUwMDYyMUU5MiAvKiBwb2xlX3pl
cm9fZmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJENjFFNDNDMkI1MDA2MjFFOTIg
LyogcG9seV90b19sc2YuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNzk1M0JGMjE2OTgyNEIwMDI4
MjY2QiAvKiBuYWx1X3Jld3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEJEODFFNDND
MkI1MDA2MjFFOTIgLyogcG9seV90b19sc3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGOUY4
MUU0MTc0RjYwMDJDQTUzMSAvKiBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzYzRjlGQjFF
NDE3NEY2MDAyQ0E1MzEgLyogcG9ydGFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDQ0
NiwyMCArMTQ1MTksMTcgQEAKIAkJCQk0MTNBMjMxRjFGRTE4RTA3MDAzNzNFOTkgLyogcHJveHlp
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjNDNTFGRTE4RTA4MDAzNzNFOTkgLyogcHJv
eHlzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjNGOUZGMUU0MTc0RjYwMDJDQTUzMSAv
KiBwc2V1ZG90Y3AuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxMDZENTZEMjE2QzJCQUEwMDFFM0M0
MCAvKiBzdHJpbmdfdmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg5NTkxRTQzQkYzQTAw
NjIxRTkyIC8qIHBzZmIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzU2MUU0M0JBRjUwMDYy
MUU5MiAvKiBwdXNoX3NpbmNfcmVzYW1wbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODM4
MjFFNDM5QTM1MDA2MjFFOTIgLyogcXVhbGl0eV9zY2FsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxOTI0MTZDMjEyNzM4OUIwMDYzNEZDRiAvKiBxdWFsaXR5X3NjYWxpbmdfZXhwZXJpbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2MkIxRTZBNjZDODAwOTRGREM4IC8qIHF1YWxpdHlf
dGhyZXNob2xkLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTQ0QjNENDIxNjk4OTZEMDA0MzYzQUMg
LyogUlRDTmF0aXZlSTQyMEJ1ZmZlcitQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNB
MjNFRjFGRTE4RTA4MDAzNzNFOTkgLyogcmFjZV9jaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjM0QzFGRTE4RTA3MDAzNzNFOTkgLyogcmFuZG9tLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0REOEE0QjFFNDNCRkIzMDA2MjFFOTIgLyogcmFuZG9tX3ZlY3Rvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNERDg5NUMxRTQzQkYzQTAwNjIxRTkyIC8qIHJhcGlkX3Jlc3luY19yZXF1ZXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM2MDFGRTE4RTA3MDAzNzNFOTkgLyogcmF0ZV9s
aW1pdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjMwRDFGRTE4RTA3MDAzNzNFOTkgLyog
cmF0ZV9zdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTQ0QjNFRjIxNjlDNjNGMDA0
MzYzQUMgLyogTlNTdHJpbmcrU3RkU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjMw
NDFGRTE4RTA3MDAzNzNFOTkgLyogcmF0ZXRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
QTA4QkNCMjEyNjk2MUYwMDFENUQ3QiAvKiByYXdfbG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUMwODg1MzMxRTRBOTlEMjAwNDAzOTk1IC8qIHJkYi5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NDQ4Myw3ICsxNDU1Myw2IEBACiAJCQkJNUM2M0ZBMDIxRTQxNzRGNjAwMkNBNTMxIC8qIHJlbGF5
cG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0ZBMDUxRTQxNzRGNjAwMkNBNTMxIC8qIHJl
bGF5c2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODk2MjFFNDNCRjNBMDA2MjFFOTIg
LyogcmVtYi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3N0UyMTY5ODZBRTAwRUYzN0VEIC8q
IHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX3NpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMDJGNkE3
MjEyNzMyNjIwMDZBRThENyAvKiByZW1peF9yZXNhbXBsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNERDhGREMxRTQzQ0Q2NjAwNjIxRTkyIC8qIHJlbW90ZV9iaXRyYXRlX2VzdGltYXRvcl9hYnNf
c2VuZF90aW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEZERTFFNDNDRDY2MDA2MjFFOTIg
LyogcmVtb3RlX2JpdHJhdGVfZXN0aW1hdG9yX3NpbmdsZV9zdHJlYW0uaCBpbiBIZWFkZXJzICov
LApAQCAtMTQ1MTYsNyArMTQ1ODUsNiBAQAogCQkJCTQxRjlCRkE5MjA1MUM4RTIwMEFCRjBCOSAv
KiBydGNfZXZlbnRfYWxyX3N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODM5RDFGRTI0
NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X2F1ZGlvX25ldHdvcmtfYWRhcHRhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE5QzgzOTgxRkUyNDZGOTAwNDBDMzBGIC8qIHJ0Y19ldmVudF9hdWRp
b19wbGF5b3V0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNFNjc4QTIxNjk4N0I5MDBFRjM3RUQg
LyogUlRDQ1ZQaXhlbEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzQTExRkUyNDZG
OTAwNDBDMzBGIC8qIHJ0Y19ldmVudF9hdWRpb19yZWNlaXZlX3N0cmVhbV9jb25maWcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxOUM4MzhFMUZFMjQ2RjkwMDQwQzMwRiAvKiBydGNfZXZlbnRfYXVk
aW9fc2VuZF9zdHJlYW1fY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODM5MzFGRTI0
NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X2J3ZV91cGRhdGVfZGVsYXlfYmFzZWQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTQ1MjksNyArMTQ1OTcsNiBAQAogCQkJCTQxOUM4NDIzMUZFMjRCQTYwMDQw
QzMwRiAvKiBydGNfZXZlbnRfbG9nX291dHB1dF9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTlDODM5RjFGRTI0NkY5MDA0MEMzMEYgLyogcnRjX2V2ZW50X3Byb2JlX2NsdXN0ZXJfY3JlYXRl
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzQTAxRkUyNDZGOTAwNDBDMzBGIC8qIHJ0Y19l
dmVudF9wcm9iZV9yZXN1bHRfZmFpbHVyZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NEIzRDIy
MTY5ODk2RDAwNDM2M0FDIC8qIFJUQ05hdGl2ZUk0MjBCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxOUM4MzlBMUZFMjQ2RjkwMDQwQzMwRiAvKiBydGNfZXZlbnRfcHJvYmVfcmVzdWx0X3N1
Y2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MzkwMUZFMjQ2RjkwMDQwQzMwRiAvKiBy
dGNfZXZlbnRfcnRjcF9wYWNrZXRfaW5jb21pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4
Mzk0MUZFMjQ2RjkwMDQwQzMwRiAvKiBydGNfZXZlbnRfcnRjcF9wYWNrZXRfb3V0Z29pbmcuaCBp
biBIZWFkZXJzICovLApAQCAtMTQ1MzcsNyArMTQ2MDQsNiBAQAogCQkJCTQxOUM4M0FCMUZFMjQ3
MDgwMDQwQzMwRiAvKiBydGNfZXZlbnRfcnRwX3BhY2tldF9vdXRnb2luZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE5QzgzQUUxRkUyNDcwODAwNDBDMzBGIC8qIHJ0Y19ldmVudF92aWRlb19yZWNl
aXZlX3N0cmVhbV9jb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4M0IwMUZFMjQ3MDgw
MDQwQzMwRiAvKiBydGNfZXZlbnRfdmlkZW9fc2VuZF9zdHJlYW1fY29uZmlnLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk0MTc5NTNENDIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9zZW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTlDODQxRTFGRTI0QUVGMDA0MEMzMEYgLyogcnRjX3N0cmVhbV9j
b25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDYyMUZFMTk5MUEwMDM3M0U5OSAvKiBS
VENBdWRpb1Nlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDU4MUZFMTk5MUEwMDM3
M0U5OSAvKiBSVENBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTE0NTQ1LDIxICsxNDYxMSwyOCBAQAogCQkJCTQxM0EyNDU3MUZFMTk5MUEwMDM3M0U5OSAvKiBS
VENBdWRpb1RyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ1QjFGRTE5OTFBMDAzNzNF
OTkgLyogUlRDQ2FtZXJhUHJldmlld1ZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDRE
MUZFMTk5MUEwMDM3M0U5OSAvKiBSVENDYW1lcmFWaWRlb0NhcHR1cmVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0MTc5NTNGOTIxNjk4NEJFMDAyODI2NkIgLyogUlRDSTQyMEJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzQTIzMjMxRkUxOEUwNzAwMzczRTk5IC8qIHJ0Y2NlcnRpZmljYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjJEQjFGRTE4RTA3MDAzNzNFOTkgLyogcnRjY2Vy
dGlmaWNhdGVnZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0Y4MjE2OTg0QkUw
MDI4MjY2QiAvKiBSVENDb2RlY1NwZWNpZmljSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3
OTUzQkEyMTY5ODI0MjAwMjgyNjZCIC8qIFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NCtQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTc5NTNDMDIxNjk4MjRCMDAyODI2NkIgLyogUlRDQ29k
ZWNTcGVjaWZpY0luZm9IMjY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ0NDFGRTE5OTFB
MDAzNzNFOTkgLyogUlRDQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEzRTY3
OEEyMTY5ODdCOTAwRUYzN0VEIC8qIFJUQ0NWUGl4ZWxCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxM0EyNDU1MUZFMTk5MUEwMDM3M0U5OSAvKiBSVENEYXRhQ2hhbm5lbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTI0NzAxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ0RhdGFDaGFubmVsQ29u
ZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2MjI1RDIyMTY5ODE4MTAwQTkxQzlC
IC8qIHZpZGVvX2RlY29kZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzQkIy
MTY5ODI0MjAwMjgyNjZCIC8qIFJUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0MTc5NTNDMjIxNjk4MjRCMDAyODI2NkIgLyogUlRDRGVmYXVsdFZpZGVv
RW5jb2RlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDUyMUZFMTk5MUEwMDM3
M0U5OSAvKiBSVENEaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ1RDFGRTE5
OTFBMDAzNzNFOTkgLyogUlRDRUFHTFZpZGVvVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE0
NEIzRjYyMTZCMDgxQjAwNDM2M0FDIC8qIFJUQ0VuY29kZWRJbWFnZStQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0MTc5NTNGNzIxNjk4NEJFMDAyODI2NkIgLyogUlRDRW5jb2RlZEltYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY0MTFCMTFFRjhEQTAyMDAzNDNDMjYgLyogcnRjZXJy
b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNzk1M0U1MjE2OTgzQ0EwMDI4MjY2QiAvKiBtb2R1
bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGOUJGODgyMDUx
QzgwMTAwQUJGMEI5IC8qIHJ0Y2V2ZW50bG9nb3V0cHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTNBMjQ0MDFGRTE5OTFBMDAzNzNFOTkgLyogUlRDRmllbGRUcmlhbHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxM0EyNDVBMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENGaWxlTG9nZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTNBMjQ1NjFGRTE5OTFBMDAzNzNFOTkgLyogUlRDRmlsZVZpZGVvQ2Fw
dHVyZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0MzMjE2OTgyNEIwMDI4MjY2QiAvKiBS
VENIMjY0UHJvZmlsZUxldmVsSWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0Y5MjE2OTg0
QkUwMDI4MjY2QiAvKiBSVENJNDIwQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ0
RTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDSWNlQ2FuZGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjQ1RTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDSWNlU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTNBMjQ0ODFGRTE5OTFBMDAzNzNFOTkgLyogUlRDSW50ZXJ2YWxSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xNDU3NCwxMiArMTQ2NDcsMTMgQEAKIAkJCQk0MTNBMjQ2QTFGRTE5
OTFBMDAzNzNFOTkgLyogUlRDTWV0cmljc1NhbXBsZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxM0EyNDY3MUZFMTk5MUEwMDM3M0U5OSAvKiBSVENNVExOU1ZpZGVvVmlldy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTI0NzExRkUxOTkxQTAwMzczRTk5IC8qIFJUQ01UTFZpZGVvVmlldy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDE0NEIzRDQyMTY5ODk2RDAwNDM2M0FDIC8qIFJUQ05hdGl2
ZUk0MjBCdWZmZXIrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE0NEIzRDIyMTY5ODk2
RDAwNDM2M0FDIC8qIFJUQ05hdGl2ZUk0MjBCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
NDRCM0Q1MjE2OTg5NkQwMDQzNjNBQyAvKiBSVENOYXRpdmVNdXRhYmxlSTQyMEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NTkxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ05TR0xWaWRl
b1ZpZXcuaCBpbiBIZWFkZXJzICovLAotCQkJCTVDREQ4QTUwMUU0M0JGQjMwMDYyMUU5MiAvKiBy
dGNwLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODJCMjFGRTIwRENEMDA0MEMzMEYgLyogcnRj
cF9kZW11eGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODVGQjFFNkE2NDUyMDA5NEZEQzgg
LyogcnRjcF9uYWNrX3N0YXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODg5ODFFNDNCRTND
MDA2MjFFOTIgLyogcnRjcF9wYWNrZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNDRCM0VCMjE2
OUM1RTMwMDQzNjNBQyAvKiBSVENWaWRlb0NvZGVjSW5mbytQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTlDODJCRDFGRTIwRENEMDA0MEMzMEYgLyogcnRjcF9wYWNrZXRfc2lua19pbnRl
cmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4ODlCMUU0M0JFM0MwMDYyMUU5MiAvKiBy
dGNwX3JlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODg5RTFFNDNCRTNDMDA2MjFF
OTIgLyogcnRjcF9zZW5kZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ1ODgsMTUgKzE0NjYyLDE3
IEBACiAJCQkJNDE5QzgzMDUxRkUyMEYwMjAwNDBDMzBGIC8qIHJ0Y3BfdHJhbnNjZWl2ZXJfaW1w
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0M0UxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ1Bl
ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ2MzFGRTE5OTFBMDAzNzNF
OTkgLyogUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5
NTNDMjIxNjk4MjRCMDAyODI2NkIgLyogUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxM0EyNDZDMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENSdHBDb2Rl
Y1BhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxODg5RDc1MjE2QkI3QjkwMDQ2MTRE
RCAvKiBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDE4ODlENzYyMTZCQzRFQzAwNDYxNEREIC8qIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NEMxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ1J0cEVu
Y29kaW5nUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4ODlENzgyMTZCQzRFQzAw
NDYxNEREIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIrUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDEzRTY3QTEyMTY5ODg5NTAwRUYzN0VEIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25I
ZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDQ1MUZFMTk5MUEwMDM3M0U5OSAvKiBS
VENSdHBQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQzQjFGRTE5OTFBMDAz
NzNFOTkgLyogUlRDUnRwUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDVDMUZF
MTk5MUEwMDM3M0U5OSAvKiBSVENSdHBTZW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0Ey
NDRBMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxM0EyNDY2MUZFMTk5MUEwMDM3M0U5OSAvKiBSVENTU0xBZGFwdGVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk0MTc5NTNDNjIxNjk4MjRCMDAyODI2NkIgLyogUlRDVmlkZW9EZWNv
ZGVySDI2NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0NUU0QzgxRUY4OTZENzAwRkNGNkU2IC8q
IHJ0Y3N0YXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ1RTRDNzFFRjg5NkQ3MDBGQ0Y2RTYg
LyogcnRjc3RhdHNfb2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1MDgxRTZBNjA1
NzAwOTRGREM4IC8qIHJ0Y3N0YXRzY29sbGVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjA3
LDE5ICsxNDY4MywzNyBAQAogCQkJCTQxM0EyNDNEMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENWaWRl
b0NhcHR1cmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUVDRUFCNjIwNjMwMTA4MDA5RDUxNDEg
LyogUlRDVmlkZW9Db2RlYytQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ0MzFG
RTE5OTFBMDAzNzNFOTkgLyogUlRDVmlkZW9Db2RlYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEz
RTY3NjYyMTY5ODU0QjAwRUYzN0VEIC8qIFJUQ1ZpZGVvQ29kZWNDb25zdGFudHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0EyNDUzMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENWaWRlb0NvZGVjRmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0M0MxRkUxOTkxQTAwMzczRTk5IC8qIFJU
Q1ZpZGVvQ29kZWNIMjY0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTQ0QjNFQjIxNjlDNUUzMDA0
MzYzQUMgLyogUlRDVmlkZW9Db2RlY0luZm8rUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDEzRTY3OTkyMTY5ODgzOTAwRUYzN0VEIC8qIFJUQ1ZpZGVvQ29kZWNJbmZvLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MTQ0QjNERDIxNjlBMDcwMDA0MzYzQUMgLyogUlRDVmlkZW9EZWNvZGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MTQ0QjNFMDIxNjlBMDcwMDA0MzYzQUMgLyogUlRDVmlkZW9E
ZWNvZGVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzQzUyMTY5ODI0QjAwMjgy
NjZCIC8qIFJUQ1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MTc5NTNDNjIxNjk4MjRCMDAyODI2NkIgLyogUlRDVmlkZW9EZWNvZGVySDI2NC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzQTI0NjUxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ1ZpZGVvRGVjb2RlclZQ
OC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NjAxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ1Zp
ZGVvRGVjb2RlclZQOS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE0NEIzREUyMTY5QTA3MDAwNDM2
M0FDIC8qIFJUQ1ZpZGVvRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE0NEIzREYyMTY5
QTA3MDAwNDM2M0FDIC8qIFJUQ1ZpZGVvRW5jb2RlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxNzk1M0M4MjE2OTgyNEIwMDI4MjY2QiAvKiBSVENWaWRlb0VuY29kZXJGYWN0b3J5SDI2
NC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3OTUzQzkyMTY5ODI0QjAwMjgyNjZCIC8qIFJUQ1Zp
ZGVvRW5jb2RlckgyNjQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxM0U2N0EwMjE2OTg4OTUwMEVG
MzdFRCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxNDRCM0VBMjE2OUM1RTMwMDQzNjNBQyAvKiBSVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNFNjc4NTIxNjk4NzdEMDBFRjM3RUQgLyogUlRD
VmlkZW9FbmNvZGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxM0U2NzY5MjE2OTg1
NEIwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJWUDguaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
M0EyNDZFMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENWaWRlb0VuY29kZXJWUDguaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxM0EyNDQ2MUZFMTk5MUEwMDM3M0U5OSAvKiBSVENWaWRlb0VuY29kZXJWUDku
aCBpbiBIZWFkZXJzICovLAotCQkJCTQxM0U2NzczMjE2OTg2M0IwMEVGMzdFRCAvKiBsaWJ2cHhf
aW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjQ0RjFGRTE5OTFBMDAzNzNFOTkg
LyogUlRDVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEzRTY3OEYyMTY5ODdEQjAw
RUYzN0VEIC8qIFJUQ1ZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxM0U2NzkxMjE2
OTg3REIwMEVGMzdFRCAvKiBSVENWaWRlb0ZyYW1lQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTNBMjQ0MTFGRTE5OTFBMDAzNzNFOTkgLyogUlRDVmlkZW9GcmFtZUJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzQTI0NkYxRkUxOTkxQTAwMzczRTk5IC8qIFJUQ1ZpZGVvUmVuZGVy
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDYxMUZFMTk5MUEwMDM3M0U5OSAvKiBSVENW
aWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTI0NTAxRkUxOTkxQTAwMzczRTk5
IC8qIFJUQ1ZpZGVvVHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyNDNBMUZFMTk5MUEw
MDM3M0U5OSAvKiBSVENWaWRlb1ZpZXdTaGFkaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNF
Njc2QTIxNjk4NTRCMDBFRjM3RUQgLyogUlRDV3JhcHBlZE5hdGl2ZVZpZGVvRGVjb2Rlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDEzRTY3NkMyMTY5ODU0QjAwRUYzN0VEIC8qIFJUQ1dyYXBwZWRO
YXRpdmVWaWRlb0VuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MkI4MUZFMjBEQ0Qw
MDQwQzMwRiAvKiBydHBfY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODNDOTFGRTI0
N0I0MDA0MEMzMEYgLyogcnRwX2N2by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzMDkyMDExRUY4
RDBBNjAwNzU3QzU1IC8qIHJ0cF9kZW11eGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjMwLDEx
ICsxNDcyNCwxMSBAQAogCQkJCTVDREQ4OEFDMUU0M0JFM0MwMDYyMUU5MiAvKiBydHBfZm9ybWF0
X3ZwOC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4QUYxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0
cF9mb3JtYXRfdnA5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODNGNzFFNDM5QTZGMDA2MjFF
OTIgLyogcnRwX2ZyYW1lX3JlZmVyZW5jZV9maW5kZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQx
Nzk1M0Q2MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3JlY2VpdmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDREQ4QUI5MUU0M0MwMEYwMDYyMUU5MiAvKiBydHBfZ2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MUUwMkM3QjIxMjczNDc0MDBDMjdDRDYgLyogcnRwX2dlbmVyaWNfZnJh
bWVfZGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMDJDNzkyMTI3MzQ3NDAwQzI3
Q0Q2IC8qIHJ0cF9nZW5lcmljX2ZyYW1lX2Rlc2NyaXB0b3JfZXh0ZW5zaW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTlDODNDNDFGRTI0N0I0MDA0MEMzMEYgLyogcnRwX2hlYWRlcl9leHRlbnNp
b25fbWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNFNjc3RTIxNjk4NkFFMDBFRjM3RUQgLyog
cnRwX2hlYWRlcl9leHRlbnNpb25fc2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4QjYx
RTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE5QzgzQ0MxRkUyNDdCNDAwNDBDMzBGIC8qIHJ0cF9oZWFkZXJfcGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUY5QkY4RDIwNTFDODAxMDBBQkYwQjkgLyogcnRwX2hlYWRlcnMu
aCBpbiBIZWFkZXJzICovLApAQCAtMTQ2NDIsNyArMTQ3MzYsNiBAQAogCQkJCTVDREQ4OEJBMUU0
M0JFM0QwMDYyMUU5MiAvKiBydHBfcGFja2V0X2hpc3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4OEJCMUU0M0JFM0QwMDYyMUU5MiAvKiBydHBfcGFja2V0X3JlY2VpdmVkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTlDODJCNjFGRTIwRENEMDA0MEMzMEYgLyogcnRwX3BhY2tldF9zaW5r
X2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEzRTY3OEYyMTY5ODdEQjAwRUYzN0VE
IC8qIFJUQ1ZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4OEJDMUU0M0JFM0Qw
MDYyMUU5MiAvKiBydHBfcGFja2V0X3RvX3NlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDZC
NDVBMjEyNzMxNTkwMDhGOTM1MyAvKiBydHBfcGF5bG9hZF9wYXJhbXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxOUM4M0MzMUZFMjQ3QjQwMDQwQzMwRiAvKiBydHBfcnRjcC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNDY3OSw2ICsxNDc3Miw3IEBACiAJCQkJNDE5QzgyREIxRkUyMEU1OTAwNDBDMzBG
IC8qIHJ0cHRyYW5zcG9ydGludGVybmFsYWRhcHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0
QjQ4RjIxRTQyQzFFMzAwMjY1MUM4IC8qIHJ0cHV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0REODNGOTFFNDM5QTZGMDA2MjFFOTIgLyogcnR0X2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDE3OTUzRUIyMTY5ODNGMTAwMjgyNjZCIC8qIHJ0dF9tdWx0X2V4cGVyaW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxOTI0MUNCMjEyNzU5M0YwMDYzNEZDRiAvKiBydHRfc3RhdHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxOUM4MkMyMUZFMjBEQ0QwMDQwQzMwRiAvKiBydHhfcmVjZWl2
ZV9zdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOTI0MTYyMjEyNzM4NUIwMDYzNEZDRiAv
KiByd19sb2NrX3Bvc2l4LmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjkwLDYgKzE0Nzg0LDcgQEAK
IAkJCQk0MTNBMjMyODFGRTE4RTA3MDAzNzNFOTkgLyogc2FuaXRpemVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTZEM0JFQTIxMjczMUMyMDA3NzVGMDkgLyogc2F0dXJhdGlvbl9wcm90ZWN0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyMzA1MUZFMThFMDcwMDM3M0U5OSAvKiBzY29wZWRf
cmVmX3B0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCMTAyMUIxRjUzNzAwQTVERjI3IC8q
IHNjb3BlZF9yZWZwdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjlCRkI2MjA1MUM5MzYwMEFC
RjBCOSAvKiBzY29wZWR2aWRlb2RlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjlCRkI3
MjA1MUM5MzYwMEFCRjBCOSAvKiBzY29wZWR2aWRlb2VuY29kZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxOUM4NDM2MUZFMjRFODAwMDQwQzMwRiAvKiBzY3JlZW5zaGFyZV9sYXllcnMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTQ3MDQsNiArMTQ3OTksNyBAQAogCQkJCTVDREQ4NUJBMUU0M0I1QzAw
MDYyMUU5MiAvKiBzZW5kX3N0YXRpc3RpY3NfcHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
OTI0MThCMjEyNzQ5QzgwMDYzNEZDRiAvKiBzZW5kX3RpbWVfaGlzdG9yeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNERDg5NzMxRTQzQkYzQTAwNjIxRTkyIC8qIHNlbmRlcl9yZXBvcnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQxRkNCQjI4MjFCMUY4N0UwMEE1REYyNyAvKiBzZW50X3BhY2tldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5MjQxQUMyMTI3NThEMzAwNjM0RkNGIC8qIHNlcXVlbmNl
X2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyRDQxRkUxOEUwNzAwMzczRTk5IC8q
IHNlcXVlbmNlZF90YXNrX2NoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0EyM0FFMUZF
MThFMDgwMDM3M0U5OSAvKiBzZXF1ZW5jZWRfdGFza19jaGVja2VyX2ltcGwuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTQ3MTUsNyArMTQ4MTEsNiBAQAogCQkJCTVDRDI4NUUwMUU2QTYzNDMwMDk0RkRD
OCAvKiBzaGFkb3dfZmlsdGVyX3VwZGF0ZV9nYWluLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTVG
MUZCNTIxMjcyRkJBMDAwNjRDQkYgLyogc2lnbmFsX2NsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxRjlCRkM1MjA1MUNBRTUwMEFCRjBCOSAvKiBzaWduYWxfcHJvY2Vzc2luZ19saWJy
YXJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5NTNENzIxNjk4MzRGMDAyODI2NkIgLyogY2hh
bm5lbF9zZW5kX3Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjM4MTFGRTE4RTA3MDAz
NzNFOTkgLyogc2lnbmFsdGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYyNjNCQzIxMjY4
MTE1MDAyNzRGNTkgLyogc2lnc2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIzMzMxRkUx
OEUwNzAwMzczRTk5IC8qIHNpZ3Nsb3RyZXBlYXRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDc1
NSw3ICsxNDg1MCw2IEBACiAJCQkJNDEzQTIxM0YxRkUwRjBFRjAwMzczRTk5IC8qIHNydHAuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxM0EyMTNEMUZFMEYwRUYwMDM3M0U5OSAvKiBzcnRwX3ByaXYu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUM4MkUxMUZFMjBFNTkwMDQwQzMwRiAvKiBzcnRwc2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzQzgyMTY5ODI0QjAwMjgyNjZCIC8qIFJU
Q1ZpZGVvRW5jb2RlckZhY3RvcnlIMjY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODJFMjFG
RTIwRTU5MDA0MEMzMEYgLyogc3J0cHRyYW5zcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFF
MDJDQkQyMTI3MzU2QTAwQzI3Q0Q2IC8qIHNzbGNlcnRpZmljYXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNBMjNBRjFGRTE4RTA4MDAzNzNFOTkgLyogc3NsZmluZ2VycHJpbnQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTQ3NjYsNyArMTQ4NjAsNiBAQAogCQkJCTVDREQ4NzM3MUU0M0JBQkUwMDYy
MUU5MiAvKiBzdGFuZGFsb25lX3ZhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMwODg1MzUxRTRB
OTlEMjAwNDAzOTk1IC8qIHN0YXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkVDMUU0M0My
QjUwMDYyMUU5MiAvKiBzdGF0ZV9jb25zdHJ1Y3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNjIy
NUU5MjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX3ZpZGVvX2ZyYW1lLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0REOEJFRTFFNDNDMkI1MDA2MjFFOTIgLyogc3RhdGVfc2VhcmNoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REOEE1MjFFNDNCRkIzMDA2MjFFOTIgLyogc3RhdGlzdGljc19jYWxjdWxh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODVCRDFFNDNCNUMwMDA2MjFFOTIgLyogc3Rh
dHNfY291bnRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDc3OCw2ICsxNDg3MSw3IEBACiAJCQkJ
NUM0QjQ4RjUxRTQyQzFFMzAwMjY1MUM4IC8qIHN0cmVhbXBhcmFtcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFEREIyNkMyMTI2NzlEMjAwMjk2RDQ3IC8qIHN0cmluZ19idWlsZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTNBMjM2NDFGRTE4RTA3MDAzNzNFOTkgLyogc3RyaW5nX3RvX251bWJl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEwNkQ1NkQyMTZDMkJBQTAwMUUzQzQwIC8qIHN0cmlu
Z192aWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjJFQjFGRTE4RTA3MDAzNzNFOTkgLyog
c3RyaW5nZW5jb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNBMjNCMTFGRTE4RTA4MDAzNzNF
OTkgLyogc3RyaW5naXplX21hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIyQ0UxRkUx
OEUwNzAwMzczRTk5IC8qIHN0cmluZ3V0aWxzLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NzkxLDEz
ICsxNDg4NSwxNCBAQAogCQkJCTVDRDI4NUUxMUU2QTYzNDMwMDk0RkRDOCAvKiBzdWJ0cmFjdG9y
X291dHB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1RTUxRTZBNjM0MzAwOTRGREM4IC8q
IHN1cHByZXNzaW9uX2ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg1RTcxRTZBNjM0
MzAwOTRGREM4IC8qIHN1cHByZXNzaW9uX2dhaW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTQxM0U2
NzgxMjE2OTg3MEYwMEVGMzdFRCAvKiBzdmNfY29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MTNFNjc5NTIxNjk4ODE5MDBFRjM3RUQgLyogc3ZjX3JhdGVfYWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REOEJGMDFFNDNDMkI1MDA2MjFFOTIgLyogc3dhcF9ieXRlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzQTIzNDcxRkUxOEUwNzAwMzczRTk5IC8qIHN3YXBfcXVldWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxOTI0MUE5MjEyNzU4RDMwMDYzNEZDRiAvKiBzeW1tZXRyaWNf
bWF0cml4X2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFCRTcxQTMyMTVDNDYzNzAwQTdC
MTk2IC8qIHN5bXJlYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhBNTUxRTQzQkZCMzAwNjIx
RTkyIC8qIHN5bmNfYnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODRCRjFFNkE1RjlG
MDA5NEZEQzggLyogc3luY2FibGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNDRCM0Y2MjE2QjA4
MUIwMDQzNjNBQyAvKiBSVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDg5NzkxRTQzQkYzQTAwNjIxRTkyIC8qIHRhcmdldF9iaXRyYXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTNBMjMzOTFGRTE4RTA3MDAzNzNFOTkgLyogdGFza19xdWV1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzQTIzN0QxRkUxOEUwNzAwMzczRTk5IC8qIHRhc2tfcXVldWVfcG9z
aXguaCBpbiBIZWFkZXJzICovLApAQCAtMTQ4MTYsOSArMTQ5MTEsOSBAQAogCQkJCTQxM0EyMkU4
MUZFMThFMDcwMDM3M0U5OSAvKiB0aHJlYWRfY2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDEzQTIyQjgxRkUxOEUwNzAwMzczRTk5IC8qIHRocmVhZF9jaGVja2VyX2ltcGwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDREQ4NEM0MUU0M0FGMTMwMDYyMUU5MiAvKiB0aHJlZV9iYW5kX2ZpbHRl
cl9iYW5rLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDQkIyMzIxQjFGODJGMDBBNURGMjcgLyog
dGhyb3dfZGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QTU4MUU0M0JGQjMwMDYy
MUU5MiAvKiB0aWNrX3RpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDFERDIxMjc1QTMw
MDA2MzRGQ0YgLyogdGltZV9kZWx0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE5QzgzMzQxRkUy
NDVFQTAwNDBDMzBGIC8qIHRpbWVfaW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
QTVCMUU0M0JGQjMwMDYyMUU5MiAvKiB0aW1lX3N0cmV0Y2guaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4OERCMUU0M0JFM0QwMDYyMUU5MiAvKiB0aW1lX3V0aWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxOTI0MUUwMjEyNzVBMzAwMDYzNEZDRiAvKiB0aW1lc3RhbXAuaCBpbiBIZWFkZXJzICov
LApAQCAtMTQ4NTYsMjAgKzE0OTUxLDE3IEBACiAJCQkJNDEzQTIzNEIxRkUxOEUwNzAwMzczRTk5
IC8qIHR5cGVfdHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODRDNjFFNDNBRjEzMDA2
MjFFOTIgLyogdHlwaW5nX2RldGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM2M0ZBMzEx
RTQxNzRGNjAwMkNBNTMxIC8qIHVkcHBvcnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxOTI0MTU3
MjEyNzM3NkYwMDYzNEZDRiAvKiB1ZHB0cmFuc3BvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
M0EyNDZCMUZFMTk5MUEwMDM3M0U5OSAvKiBVSURldmljZStSVENEZXZpY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDREQ4OEUwMUU0M0JFM0QwMDYyMUU5MiAvKiB1bHBmZWNfZ2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODhFMzFFNDNCRTNEMDA2MjFFOTIgLyogdWxwZmVjX2hl
YWRlcl9yZWFkZXJfd3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlDODNDNjFGRTI0N0I0
MDA0MEMzMEYgLyogdWxwZmVjX3JlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODhF
NTFFNDNCRTNEMDA2MjFFOTIgLyogdWxwZmVjX3JlY2VpdmVyX2ltcGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDNjNGOTc1MUU0MTczN0IwMDJDQTUzMSAvKiB1bWFtZXRyaWNzLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk0MTNBMjJBNDFGRTE4RTA2MDAzNzNFOTkgLyogdW5peGZpbGVzeXN0ZW0uaCBp
biBIZWFkZXJzICovLAogCQkJCTVDREQ4QkYyMUU0M0MyQjUwMDYyMUU5MiAvKiB1bnBhY2tfYml0
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzQjAyMTI2ODBBODAwMjc0RjU5IC8qIHVudXNl
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQTIxNDAxRkUwRjBFRjAwMzczRTk5IC8qIHV0X3Np
bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg3MDkxRTQzQkE3NTAwNjIxRTkyIC8qIHV0aWxp
dHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4N0RGMUU0M0JDMkUwMDYyMUU5MiAvKiB1dGls
aXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTc5NTNCQTIxNjk4MjQyMDAyODI2NkIgLyogUlRD
Q29kZWNTcGVjaWZpY0luZm9IMjY0K1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4
NzNCMUU0M0JBQkUwMDYyMUU5MiAvKiB2YWRfYXVkaW9fcHJvYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNERDg3MzgxRTQzQkFCRTAwNjIxRTkyIC8qIHZhZF9hdWRpb19wcm9jX2ludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODczRTFFNDNCQUJFMDA2MjFFOTIgLyogdmFkX2NpcmN1
bGFyX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDg4OCwxOSArMTQ5ODAsMjEgQEAKIAkJ
CQk1Q0REODQwMjFFNDM5QTZGMDA2MjFFOTIgLyogdmlkZW9fY29kaW5nX2ltcGwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxOUM4NDEzMUZFMjQ5QUIwMDQwQzMwRiAvKiB2aWRlb19jb250ZW50X3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDVFNDhEMUVGODhCOUQwMEZDRjZFNiAvKiB2aWRl
b19kZWNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTYyMjVEMjIxNjk4MTgxMDBBOTFDOUIg
LyogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ1RjYxRTFG
RTFGMzhEMDBFQjlDQUYgLyogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MUYyNjM2NjIxMjY3QURGMDAyNzRGNTkgLyogdmlkZW9fZGVjb2Rlcl9zb2Z0d2FyZV9m
YWxsYmFja193cmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ1RTQ4RTFFRjg4QjlEMDBG
Q0Y2RTYgLyogdmlkZW9fZW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMjYzNjgyMTI2
N0FERjAwMjc0RjU5IC8qIHZpZGVvX2VuY29kZXJfY29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTYyMjVENTIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTQ1RjYxRjFGRTFGMzhEMDBFQjlDQUYgLyogdmlkZW9fZW5jb2Rl
cl9mYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYyNjM2QTIxMjY3QURGMDAyNzRGNTkg
LyogdmlkZW9fZW5jb2Rlcl9zb2Z0d2FyZV9mYWxsYmFja193cmFwcGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MTYyMjVENjIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDRDI4NDZCMUU2QTU3RjQwMDk0RkRDOCAvKiB2aWRlb19mcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDExMDlBQUUxRTVGQTE5MjAwQzA5NTVBIC8qIHZpZGVvX2ZyYW1l
X2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg0NjkxRTZBNTdGNDAwOTRGREM4IC8q
IHZpZGVvX2ZyYW1lX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2MjI1RDMyMTY5ODE4
MTAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1lX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEw
MkY2Q0YyMTI3MzNCNzAwNkFFOEQ3IC8qIHZpZGVvX3F1YWxpdHlfb2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxOUM4MkM0MUZFMjBEQ0QwMDQwQzMwRiAvKiB2aWRlb19yZWNlaXZlX3N0
cmVhbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzQzUyMTY5ODI0QjAwMjgyNjZCIC8qIFJU
Q1ZpZGVvRGVjb2RlckZhY3RvcnlIMjY0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTNFNjc5OTIx
Njk4ODM5MDBFRjM3RUQgLyogUlRDVmlkZW9Db2RlY0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4NUNCMUU0M0I1QzAwMDYyMUU5MiAvKiB2aWRlb19yZWNlaXZlX3N0cmVhbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUM0QjRDMjExRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX3JlbmRlcl9m
cmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NDZDMUU2QTU3RjQwMDk0RkRDOCAvKiB2
aWRlb19yb3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDkzMiwxMyArMTUwMjYsMTQgQEAK
IAkJCQk1Q0QyODUxOTFFNkE2MDU3MDA5NEZEQzggLyogdmlkZW90cmFja3NvdXJjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzQTIyQkMxRkUxOEUwNzAwMzczRTk5IC8qIHZpcnR1YWxzb2NrZXRz
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4NzQxMUU0M0JBQkUwMDYyMUU5MiAvKiB2
b2ljZV9hY3Rpdml0eV9kZXRlY3Rvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3OTUzRTcyMTY5
ODNDQTAwMjgyNjZCIC8qIG1vZHVsZV9jb21tb25fdHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4NEM4MUU0M0FGMTMwMDYyMUU5MiAvKiB2b2ljZV9kZXRlY3Rpb25faW1wbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNERDg3NDIxRTQzQkFCRTAwNjIxRTkyIC8qIHZvaWNlX2dtbV90YWJs
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRkQ1MzgxMUU0QkE0RjUwMDQ4MjkwOCAvKiB2b2lj
ZV9wcm9jZXNzaW5nX2F1ZGlvX3VuaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDVGNjE3MUZF
MUVGQ0EwMEVCOUNBRiAvKiB2cDguaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOTI0MUY0MjEyNzVD
MzIwMDYzNEZDRiAvKiB2cDhfZW5jb2Rlcl9zaW11bGNhc3RfcHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDREQ4Mzg2MUU0MzlBMzUwMDYyMUU5MiAvKiB2cDhfaGVhZGVyX3BhcnNlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDFGQ0JCNjUyMUIxRkVGNjAwQTVERjI3IC8qIHZwOF90ZW1wb3Jh
bF9sYXllcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNzk1M0VFMjE2OTg0MjEwMDI4MjY2QiAv
KiB2cDlfcHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCRjQxRTQzQzJCNTAwNjIx
RTkyIC8qIHZxMy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhCRjYxRTQzQzJCNTAwNjIxRTky
IC8qIHZxNC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjRDODExRTQzMUY5QzAwMjY1MUM4IC8q
IHdhdl9maWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTE0OTU1LDcgKzE1MDUwLDYgQEAKIAkJCQk1
QzRCNDg5MzFFNDJDMUJBMDAyNjUxQzggLyogd2VicnRjdmlkZW9jYXB0dXJlcmZhY3RvcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDNEI0ODk0MUU0MkMxQkEwMDI2NTFDOCAvKiB3ZWJydGN2aWRl
b2RlY29kZXJmYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDg5NjFFNDJDMUJBMDAy
NjUxQzggLyogd2VicnRjdmlkZW9lbmNvZGVyZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NDE2MjI1RDMyMTY5ODE4MTAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1lX2J1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE0NUU0RDIxRUY4Q0MyMDAwRkNGNkU2IC8qIHdlYnJ0Y3ZpZGVvZW5naW5l
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNDg5RTFFNDJDMUJBMDAyNjUxQzggLyogd2VicnRj
dm9pY2VlbmdpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4QkY4MUU0M0MyQjUwMDYyMUU5
MiAvKiB3aW5kb3czMl93MzIuaCBpbiBIZWFkZXJzICovLApAQCAtMTU2MTEsNyArMTU3MDUsNiBA
QAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJNUMwODhDMTAxRTRBQTQ0NDAwNDAzOTk1IC8q
IGJ1bmRsZWZpbHRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDMDg4QzEyMUU0QUE0NDQwMDQw
Mzk5NSAvKiBjaGFubmVsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMwODhDMTQxRTRBQTQ0NDAw
NDAzOTk1IC8qIGNoYW5uZWxtYW5hZ2VyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMwODhDMTgx
RTRBQTQ0NDAwNDAzOTk1IC8qIGV4dGVybmFsaG1hYy5jYyBpbiBTb3VyY2VzICovLApAQCAtMTYx
MDcsMTUgKzE2MjAwLDEyIEBACiAJCQkJNUNERDhCNkExRTQzQzJCNTAwNjIxRTkyIC8qIGFic19x
dWFudF9sb29wLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODlGODFFNDNCRkIzMDA2MjFFOTIg
LyogYWNjZWxlcmF0ZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRTAyQ0E4MjEyNzM1MkQwMEMy
N0NENiAvKiBhY2tub3dsZWRnZWRfYml0cmF0ZV9lc3RpbWF0b3IuY2MgaW4gU291cmNlcyAqLywK
LQkJCQk0MTYyMjVEODIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZGVjb2Rlcl9mYWN0b3J5Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg1MDMxRTQzQjFFQTAwNjIxRTkyIC8qIGFjbV9jb2Rl
Y19kYXRhYmFzZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NTA5MUU0M0IxRUEwMDYyMUU5
MiAvKiBhY21fcmVjZWl2ZXIuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTc5NTNEMzIxNjk4MzRG
MDAyODI2NkIgLyogY2hhbm5lbF9zZW5kLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg1MEIx
RTQzQjFFQTAwNjIxRTkyIC8qIGFjbV9yZXNhbXBsZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
QzRCNDhENzFFNDJDMUUzMDAyNjUxQzggLyogYWRhcHRlZHZpZGVvdHJhY2tzb3VyY2UuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTZEM0JEQjIxMjczMUMyMDA3NzVGMDkgLyogYWRhcHRpdmVfYWdj
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1RjFGQTYyMTI3MkZCQTAwMDY0Q0JGIC8qIGFkYXB0
aXZlX2RpZ2l0YWxfZ2Fpbl9hcHBsaWVyLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzRTY3OTQy
MTY5ODgxOTAwRUYzN0VEIC8qIHN2Y19yYXRlX2FsbG9jYXRvci5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDRDI4NUE0MUU2QTYzNDMwMDk0RkRDOCAvKiBhZGFwdGl2ZV9maXJfZmlsdGVyLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE2RDNCREUyMTI3MzFDMjAwNzc1RjA5IC8qIGFkYXB0aXZlX21v
ZGVfbGV2ZWxfZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1RjFGQTgyMTI3MkZC
QTAwMDY0Q0JGIC8qIGFkYXB0aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5jYyBpbiBTb3Vy
Y2VzICovLApAQCAtMTYxMzAsNiArMTYyMjAsNyBAQAogCQkJCTVDREQ4NUU3MUU0M0I4MTAwMDYy
MUU5MiAvKiBhZWNtX2NvcmUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODVFNDFFNDNCODEw
MDA2MjFFOTIgLyogYWVjbV9jb3JlX2MuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODcwMTFF
NDNCQTc1MDA2MjFFOTIgLyogYWdjLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzRTY3OUIyMTY5
ODg2MjAwRUYzN0VEIC8qIGFnYzJfY29tbW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2
RkYxRTQzQkE3NTAwNjIxRTkyIC8qIGFnY19tYW5hZ2VyX2RpcmVjdC5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDREQ4RkQxMUU0M0NENjYwMDYyMUU5MiAvKiBhaW1kX3JhdGVfY29udHJvbC5jYyBp
biBTb3VyY2VzICovLAogCQkJCTQxRjI2MzlFMjEyNjgwMDAwMDI3NEY1OSAvKiBhbGlnbmVkX21h
bGxvYy5jYyBpbiBTb3VyY2VzICovLApAQCAtMTYxNDUsNiArMTYyMzYsNyBAQAogCQkJCTQxNDMz
RDI5MUY3OUIzMzQwMDM4N0I0RCAvKiBhcml0aF9yb3V0aW5lc19oaXN0LmMgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REODdBODFFNDNCQzA1MDA2MjFFOTIgLyogYXJpdGhfcm91dGluZXNfbG9naXN0
LmMgaW4gU291cmNlcyAqLywKIAkJCQk0MTQzM0QwRjFGNzlCMzM0MDAzODdCNEQgLyogYXJpdGhf
cm91dGluZXNfbG9naXN0LmMgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI3QTIxQjFGRkMwMDBB
NURGMjcgLyogYXNjaWkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjM4QzFGRTE4RTA3MDAz
NzNFOTkgLyogYXN5bmNpbnZva2VyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIxNkQxRkUx
OEQ2QTAwMzczRTk5IC8qIGFzeW5jcGFja2V0c29ja2V0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDEzQTIzNTUxRkUxOEUwNzAwMzczRTk5IC8qIGFzeW5jcmVzb2x2ZXJpbnRlcmZhY2UuY2MgaW4g
U291cmNlcyAqLywKQEAgLTE2MTcyLDcgKzE2MjY0LDYgQEAKIAkJCQk0MTQwQjgyMjFFNEUzMzgz
MDA3NDA5RTYgLyogYXVkaW9fZGVjb2Rlcl9wY20uY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
OEZGQzFFNDNDRTNBMDA2MjFFOTIgLyogYXVkaW9fZGVjb2Rlcl9wY20xNmIuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1QzExOUZGQjFFNDU3NDAwMDA0RjA5ODcgLyogYXVkaW9fZGV2aWNlX2J1ZmZl
ci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxODg5RDc3MjE2QkM0RUMwMDQ2MTRERCAvKiBSVENS
dHBFbmNvZGluZ1BhcmFtZXRlcnMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzExQTAxRDFFNDU3
NTc4MDA0RjA5ODcgLyogYXVkaW9fZGV2aWNlX2R1bW15LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUMxMTlGRkUxRTQ1NzQwMDAwNEYwOTg3IC8qIGF1ZGlvX2RldmljZV9nZW5lcmljLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUMxMUEwMEIxRTQ1NzQ0ODAwNEYwOTg3IC8qIGF1ZGlvX2RldmljZV9t
YWMuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2MjIyLDcgKzE2MzEzLDYgQEAKIAkJCQk1QzRCNEM1
RjFFNDMxRjlDMDAyNjUxQzggLyogYXVkaW9fdXRpbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4QTA0MUU0M0JGQjMwMDYyMUU5MiAvKiBhdWRpb192ZWN0b3IuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0QyODRGMDFFNkE2MDU3MDA5NEZEQzggLyogYXVkaW90cmFjay5jYyBpbiBTb3VyY2Vz
ICovLAotCQkJCTQxNzk1M0Q4MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3JlY2VpdmUuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEI3MjFFNDNDMkI1MDA2MjFFOTIgLyogYXVnbWVudGVk
X2NiX2NvcnIuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NjQwMUU0M0I4QjUwMDYyMUU5MiAv
KiBhdXRvX2NvcnJfdG9fcmVmbF9jb2VmLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODY0MTFF
NDNCOEI1MDA2MjFFOTIgLyogYXV0b19jb3JyZWxhdGlvbi5jIGluIFNvdXJjZXMgKi8sCkBAIC0x
NjI0NCw2ICsxNjMzNCw3IEBACiAJCQkJNUM0QjRDMTkxRTQzMUY3NTAwMjY1MUM4IC8qIGJpdHJh
dGVfYWRqdXN0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODUyRjFFNDNCMzlDMDA2MjFF
OTIgLyogYml0cmF0ZV9hbGxvY2F0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEY3RDFF
NDNDQkUwMDA2MjFFOTIgLyogYml0cmF0ZV9jb250cm9sbGVyLmNjIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDFGQ0JCNUMyMUIxRkVBMzAwQTVERjI3IC8qIGJpdHJhdGVfY29udHJvbGxlci5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDREQ5MDVEMUU0M0QxMTIwMDYyMUU5MiAvKiBiaXRyYXRlX2NvbnRy
b2xsZXJfaW1wbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRTAyQ0FFMjEyNzM1MkQwMEMyN0NE
NiAvKiBiaXRyYXRlX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4RkEwMUU0
M0NDQkUwMDYyMUU5MiAvKiBiaXRyYXRlX3Byb2Jlci5jYyBpbiBTb3VyY2VzICovLApAQCAtMTYy
NTcsNiArMTYzNDgsNyBAQAogCQkJCTQxM0EyMzlCMUZFMThFMDgwMDM3M0U5OSAvKiBidWZmZXJx
dWV1ZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NTQ4MUU2QTYxRDIwMDk0RkRDOCAvKiBi
dWlsdGluX2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA5
MUZCMUVGOENGRjgwMDc1N0M1NSAvKiBidWlsdGluX2F1ZGlvX2VuY29kZXJfZmFjdG9yeS5jYyBp
biBTb3VyY2VzICovLAorCQkJCTQxRkNCQjFCMjFCMUY3Q0QwMEE1REYyNyAvKiBidWlsdGluX3Zp
ZGVvX2JpdHJhdGVfYWxsb2NhdG9yX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUYy
NjM1RjIxMjY3QURGMDAyNzRGNTkgLyogYnVpbHRpbl92aWRlb19kZWNvZGVyX2ZhY3RvcnkuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MUUwMkNDNDIxMjczNTg4MDBDMjdDRDYgLyogYnVpbHRpbl92
aWRlb19lbmNvZGVyX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEI3NDFFNDND
MkI1MDA2MjFFOTIgLyogYndfZXhwYW5kLmMgaW4gU291cmNlcyAqLywKQEAgLTE2Mjc5LDEyICsx
NjM3MSwxNCBAQAogCQkJCTVDREQ4QjgyMUU0M0MyQjUwMDYyMUU5MiAvKiBjYl91cGRhdGVfYmVz
dF9pbmRleC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDNjQxRTQzMUY5QzAwMjY1MUM4IC8q
IGNoYW5uZWxfYnVmZmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhGODAxRTQzQ0JFMDAw
NjIxRTkyIC8qIGNoYW5uZWxfY29udHJvbGxlci5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxNzk1
M0Q4MjE2OTgzNEYwMDI4MjY2QiAvKiBjaGFubmVsX3JlY2VpdmUuY2MgaW4gU291cmNlcyAqLywK
KwkJCQk0MTc5NTNEMzIxNjk4MzRGMDAyODI2NkIgLyogY2hhbm5lbF9zZW5kLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDhCODQxRTQzQzJCNTAwNjIxRTkyIC8qIGNoZWJ5c2hldi5jIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDEzQTIzNzMxRkUxOEUwNzAwMzczRTk5IC8qIGNoZWNrcy5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDREQ4NkExMUU0M0I5OTQwMDYyMUU5MiAvKiBjaXJjdWxhcl9idWZm
ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNENDNjFFNDMyMEE5MDAyNjUxQzggLyogY2xv
Y2suY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI3NTIxQjFGRkE0MDBBNURGMjcgLyogY29j
b2FfdGhyZWFkaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjQ4REIxRTQyQzFFMzAwMjY1
MUM4IC8qIGNvZGVjLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNUNERDg1MTUxRTQzQjFFQTAwNjIx
RTkyIC8qIGNvZGVjX21hbmFnZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODNDODFFNDM5
QTZGMDA2MjFFOTIgLyogY29kZWNfdGltZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTAyRjZE
QzIxMjczNDE2MDA2QUU4RDcgLyogY29sb3Jfc3BhY2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REOEEwRDFFNDNCRkIzMDA2MjFFOTIgLyogY29tZm9ydF9ub2lzZS5jYyBpbiBTb3VyY2VzICov
LApAQCAtMTYyOTksMTMgKzE2MzkzLDEyIEBACiAJCQkJNDE1RjFGQUEyMTI3MkZCQTAwMDY0Q0JG
IC8qIGNvbXB1dGVfaW50ZXJwb2xhdGVkX2dhaW5fY3VydmUuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REOEZFQjFFNDNDRENBMDA2MjFFOTIgLyogY29uZmlnLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE5MjQxNzEyMTI3Mzg5QjAwNjM0RkNGIC8qIGNvbmdlc3Rpb25fY29udHJvbGxlcl9leHBl
cmltZW50LmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFBMDhCRDgyMTI3MkYxRDAwMUQ1RDdCIC8q
IGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2NvbnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywK
KwkJCQk0MUZDQkI0MTIxQjFGREI4MDBBNURGMjcgLyogY29uZ2VzdGlvbl93aW5kb3dfcHVzaGJh
Y2tfY29udHJvbGxlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QTkzMUU0M0MwMEYwMDYy
MUU5MiAvKiBjb25zdGFudF9wY21fcGFja2V0X3NvdXJjZS5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4Qjg5MUU0M0MyQjUwMDYyMUU5MiAvKiBjb25zdGFudHMuYyBpbiBTb3VyY2VzICovLAog
CQkJCTQxOUM4M0ZCMUZFMjQ5MzcwMDQwQzMwRiAvKiBjb25zdGFudHMuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk0MUUwMkM3ODIxMjczNDc0MDBDMjdDRDYgLyogY29udHJpYnV0aW5nX3NvdXJjZXMu
Y2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTNFNjdBMjIxNjk4ODk1MDBFRjM3RUQgLyogUlRDUnRw
RnJhZ21lbnRhdGlvbkhlYWRlci5tIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE2MjI1RTcyMTY5ODE5
NTAwQTkxQzlCIC8qIG9iamNfdmlkZW9fZGVjb2Rlcl9mYWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNDFGQ0JCMzkyMUIxRjhGQzAwQTVERjI3IC8qIGNvbnRyb2xfaGFuZGxlci5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDREQ4Rjg1MUU0M0NCRTAwMDYyMUU5MiAvKiBjb250cm9sbGVyLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhGODMxRTQzQ0JFMDAwNjIxRTkyIC8qIGNvbnRyb2xs
ZXJfbWFuYWdlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjlCRkFDMjA1MUM5MTkwMEFCRjBC
OSAvKiBjb252ZXJ0X2xlZ2FjeV92aWRlb19mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCkBAIC0x
NjMxMywxMyArMTY0MDYsMTYgQEAKIAkJCQk0MTNBMjMxNTFGRTE4RTA3MDAzNzNFOTkgLyogY29w
eW9ud3JpdGVidWZmZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNENDQTFFNDMyMEE5MDAy
NjUxQzggLyogY3B1X2ZlYXR1cmVzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDQ0IxRTQz
MjBBOTAwMjY1MUM4IC8qIGNwdV9pbmZvLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCNTMy
MUIxRkU0NjAwQTVERjI3IC8qIGNwdV9zcGVlZF9leHBlcmltZW50LmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNERDg3QjExRTQzQkMwNTAwNjIxRTkyIC8qIGNyYy5jIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDEzQTIzNDMxRkUxOEUwNzAwMzczRTk5IC8qIGNyYzMyLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUNERDhCOEIxRTQzQzJCNTAwNjIxRTkyIC8qIGNyZWF0ZV9hdWdtZW50ZWRfdmVjLmMgaW4g
U291cmNlcyAqLywKLQkJCQk0MTQ1RTRDQTFFRjhDQjMyMDBGQ0Y2RTYgLyogY3JlYXRlcGVlcmNv
bm5lY3Rpb25mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCMEUyMUIxRjUzNzAw
QTVERjI3IC8qIGNyZWF0ZV9wZWVyY29ubmVjdGlvbl9mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8s
CisJCQkJNDFGQ0JCNjYyMUIxRkVGNjAwQTVERjI3IC8qIGNyZWF0ZV92cDhfdGVtcG9yYWxfbGF5
ZXJzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzODgxRkUxOEUwNzAwMzczRTk5IC8qIGNy
aXRpY2Fsc2VjdGlvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NjRCMUU0M0I4QjUwMDYy
MUU5MiAvKiBjcm9zc19jb3JyZWxhdGlvbi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhBMEYx
RTQzQkZCMzAwNjIxRTkyIC8qIGNyb3NzX2NvcnJlbGF0aW9uLmNjIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDFGQ0JCMzEyMUIxRjhCNzAwQTVERjI3IC8qIGNyeXB0b29wdGlvbnMuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MTNBMjMyMjFGRTE4RTA3MDAzNzNFOTkgLyogY3J5cHRzdHJpbmcuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTlDODQ4RTFGRTI1NzREMDA0MEMzMEYgLyogY3VzdG9tX2V4dGVu
c2lvbnMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQ4QzFGRTI1NzREMDA0MEMzMEYgLyog
ZDFfYm90aC5jYyBpbiBTb3VyY2VzICovLApAQCAtMTYzNTMsNyArMTY0NDksNiBAQAogCQkJCTQx
RTAyQ0E1MjEyNzM1MkQwMEMyN0NENiAvKiBkZWxheV9iYXNlZF9id2UuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REODY4RDFFNDNCOTM5MDA2MjFFOTIgLyogZGVsYXlfZXN0aW1hdG9yLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2OEIxRTQzQjkzOTAwNjIxRTkyIC8qIGRlbGF5X2VzdGlt
YXRvcl93cmFwcGVyLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzRkEyMTY5ODRCRTAwMjgy
NjZCIC8qIFJUQ0VuY29kZWRJbWFnZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhBMUQxRTQz
QkZCMzAwNjIxRTkyIC8qIGRlbGF5X21hbmFnZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
OEEyMDFFNDNCRkIzMDA2MjFFOTIgLyogZGVsYXlfcGVha19kZXRlY3Rvci5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDREQ4NkVFMUU0M0JBNkQwMDYyMUU5MiAvKiBkaWdpdGFsX2FnYy5jIGluIFNv
dXJjZXMgKi8sCkBAIC0xNjM4OCwxMCArMTY0ODMsMTAgQEAKIAkJCQk1Q0REODdCNzFFNDNCQzA1
MDA2MjFFOTIgLyogZW5jb2RlLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MTQzM0QxMjFGNzlCMzM0
MDAzODdCNEQgLyogZW5jb2RlLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODdCNTFFNDNCQzA1
MDA2MjFFOTIgLyogZW5jb2RlX2xwY19zd2IuYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0RD
MjE2OTgzOTEwMDI4MjY2QiAvKiBmaWVsZF90cmlhbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4QTk1MUU0M0MwMEYwMDYyMUU5MiAvKiBlbmNvZGVfbmV0ZXFfaW5wdXQuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REODNDQzFFNDM5QTZGMDA2MjFFOTIgLyogZW5jb2RlZF9mcmFtZS5jYyBp
biBTb3VyY2VzICovLAogCQkJCTQxQTA4QkFCMjEyNjgxQzgwMDFENUQ3QiAvKiBlbmNvZGVkX2Zy
YW1lLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQ0JCMUQyMUIxRjdDRDAwQTVERjI3IC8qIGVu
Y29kZWRfaW1hZ2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUUwMkM4ODIxMjczNEI5MDBDMjdD
RDYgLyogZW5jb2Rlcl9kYXRhYmFzZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NTlGMUU0
M0I1QzAwMDYyMUU5MiAvKiBlbmNvZGVyX3J0Y3BfZmVlZGJhY2suY2MgaW4gU291cmNlcyAqLywK
IAkJCQk1Q0REODY1MTFFNDNCOEI1MDA2MjFFOTIgLyogZW5lcmd5LmMgaW4gU291cmNlcyAqLywK
QEAgLTE2NDE0LDcgKzE2NTA5LDYgQEAKIAkJCQk1Q0REODk0QTFFNDNCRjNBMDA2MjFFOTIgLyog
ZXh0ZW5kZWRfaml0dGVyX3JlcG9ydC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OTREMUU0
M0JGM0EwMDYyMUU5MiAvKiBleHRlbmRlZF9yZXBvcnRzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDhBOTcxRTQzQzAwRjAwNjIxRTkyIC8qIGZha2VfZGVjb2RlX2Zyb21fZmlsZS5jYyBpbiBT
b3VyY2VzICovLAotCQkJCTQxM0U2NzgyMjE2OTg3MEYwMEVGMzdFRCAvKiBzdmNfY29uZmlnLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDEyOTlCOTYyMTI3MzY5MTAwQjM0MTRCIC8qIGZha2VfbmV0
d29ya19waXBlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzMTAxRkUxOEUwNzAwMzczRTk5
IC8qIGZha2VjbG9jay5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyM0NDMUZFMThFMDgwMDM3
M0U5OSAvKiBmYWtlc3NsaWRlbnRpdHkuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NDI1LDExICsx
NjUxOSwxMSBAQAogCQkJCTQxOTI0MUQzMjEyNzU5QTEwMDYzNEZDRiAvKiBmZWNfcHJpdmF0ZV90
YWJsZXNfcmFuZG9tLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4N0IxRTQzQkUzQzAwNjIx
RTkyIC8qIGZlY190ZXN0X2hlbHBlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjI2MzhBMjEy
NjdGNDAwMDI3NEY1OSAvKiBmZnQuYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0VBMjE2OTgz
RjEwMDI4MjY2QiAvKiBydHRfbXVsdF9leHBlcmltZW50LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE0MzNDRUExRjc5QjMzNDAwMzg3QjREIC8qIGZmdC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFG
MjYzNkUyMTI2N0IzRTAwMjc0RjU5IC8qIGZmdDRnLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MUY5
QkZENzIwNTFEREU1MDBBQkYwQjkgLyogZmZ0X2J1ZmZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxOTI0MTNEMjEyNzM3MjQwMDYzNEZDRiAvKiBmZnRfdXRpbC5jYyBpbiBTb3VyY2VzICovLAor
CQkJCTQxNzk1M0RDMjE2OTgzOTEwMDI4MjY2QiAvKiBmaWVsZF90cmlhbC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxOTI0MTZFMjEyNzM4OUIwMDYzNEZDRiAvKiBmaWVsZF90cmlhbF9wYXJzZXIu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDFFODIxMjc1QTc2MDA2MzRGQ0YgLyogZmllbGRf
dHJpYWxfdW5pdHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjJFNjFGRTE4RTA3MDAzNzNF
OTkgLyogZmlsZS5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY0MzcsMTQgKzE2NTMxLDExIEBACiAJ
CQkJNUMxMUEwMUYxRTQ1NzU3ODAwNEYwOTg3IC8qIGZpbGVfYXVkaW9fZGV2aWNlX2ZhY3Rvcnku
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjNEODFGRTE4RTA4MDAzNzNFOTkgLyogZmlsZV9w
b3NpeC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QzhCMUU0M0M2NjAwMDYyMUU5MiAvKiBm
aWxlX3V0aWxzLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE2MjI1RDcyMTY5ODE4MTAwQTkxQzlC
IC8qIHZpZGVvX2ZyYW1lX2J1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjI2M0FDMjEy
NjgwQTgwMDI3NEY1OSAvKiBmaWxlX3dyYXBwZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNB
MjNEQTFGRTE4RTA4MDAzNzNFOTkgLyogZmlsZXJvdGF0aW5nc3RyZWFtLmNjIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNDEzQTIzQjUxRkUxOEUwODAwMzczRTk5IC8qIGZpbGV1dGlscy5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4NjU1MUU0M0I4QjUwMDYyMUU5MiAvKiBmaWx0ZXJfYXIuYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDREQ4NjU0MUU0M0I4QjUwMDYyMUU5MiAvKiBmaWx0ZXJfYXJfZmFz
dF9xMTIuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4N0JDMUU0M0JDMDUwMDYyMUU5MiAvKiBm
aWx0ZXJfZnVuY3Rpb25zLmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTQ0QjNFODIxNjlDNUUzMDA0
MzYzQUMgLyogUlRDVmlkZW9Db2RlY0luZm8rUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4NjU2MUU0M0I4QjUwMDYyMUU5MiAvKiBmaWx0ZXJfbWFfZmFzdF9xMTIuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxNDMzRDI3MUY3OUIzMzQwMDM4N0I0RCAvKiBmaWx0ZXJiYW5rX3RhYmxl
cy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MzNEMDYxRjc5QjMzNDAwMzg3QjREIC8qIGZpbHRl
cmJhbmtzLmMgaW4gU291cmNlcyAqLywKQEAgLTE2NDU3LDcgKzE2NTQ4LDYgQEAKIAkJCQk0MTlD
ODMxRDFGRTI0MkIyMDA0MEMzMEYgLyogZmlyX2ZpbHRlcl9mYWN0b3J5LmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUM0QjRDNkExRTQzMUY5QzAwMjY1MUM4IC8qIGZpcl9maWx0ZXJfc3NlLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE1RjFGQUQyMTI3MkZCQTAwMDY0Q0JGIC8qIGZpeGVkX2RpZ2l0
YWxfbGV2ZWxfZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE2RDNCRTMyMTI3MzFD
MjAwNzc1RjA5IC8qIGZpeGVkX2dhaW5fY29udHJvbGxlci5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxM0EyMTdEMUZFMThENzgwMDM3M0U5OSAvKiBmbGFncy5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4ODdFMUU0M0JFM0MwMDYyMUU5MiAvKiBmbGV4ZmVjX2hlYWRlcl9yZWFkZXJfd3JpdGVy
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEwMkY2QkMyMTI3MzM4MjAwNkFFOEQ3IC8qIGZsZXhm
ZWNfcmVjZWl2ZV9zdHJlYW0uY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NDcxLDggKzE2NTYxLDgg
QEAKIAkJCQk1Q0REODNEMTFFNDM5QTZGMDA2MjFFOTIgLyogZnJhbWVfYnVmZmVyMi5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDREQ4QkEyMUU0M0MyQjUwMDYyMUU5MiAvKiBmcmFtZV9jbGFzc2lm
eS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg0OUExRTZBNUY0MTAwOTRGREM4IC8qIGZyYW1l
X2NvbWJpbmVyLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzQzcyMTY5ODI0QjAwMjgyNjZC
IC8qIFJUQ1ZpZGVvRGVjb2RlckgyNjQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODM3OTFF
NDM5QTM1MDA2MjFFOTIgLyogZnJhbWVfZHJvcHBlci5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQx
RkNCQjU5MjFCMUZFNkUwMEE1REYyNyAvKiBmcmFtZV9kdW1waW5nX2RlY29kZXIuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REOEY5MDFFNDNDQkUwMDA2MjFFOTIgLyogZnJhbWVfbGVuZ3RoX2Nv
bnRyb2xsZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODNEMzFFNDM5QTZGMDA2MjFFOTIg
LyogZnJhbWVfb2JqZWN0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzOEQyMTI2N0Y0OTAw
Mjc0RjU5IC8qIGc3MTEuYyBpbiBTb3VyY2VzICovLApAQCAtMTY0ODQsNyArMTY1NzQsNiBAQAog
CQkJCTVDREQ4NEIyMUU0M0FGMTMwMDYyMUU5MiAvKiBnYWluX2NvbnRyb2xfZm9yX2V4cGVyaW1l
bnRhbF9hZ2MuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRCNDFFNDNBRjEzMDA2MjFFOTIg
LyogZ2Fpbl9jb250cm9sX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUEwOEJEMDIxMjcy
RUUyMDAxRDVEN0IgLyogZ2Fpbl9jb250cm9sbGVyMi5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQx
NUYxRkIxMjEyNzJGQkEwMDA2NENCRiAvKiBnYWluX2N1cnZlX2FwcGxpZXIuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REOEJBNDFFNDNDMkI1MDA2MjFFOTIgLyogZ2Fpbl9kZXF1YW50LmMgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REOEJBNjFFNDNDMkI1MDA2MjFFOTIgLyogZ2Fpbl9xdWFudC5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzRDUxRTQzOUE2RjAwNjIxRTkyIC8qIGdlbmVyaWNf
ZGVjb2Rlci5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY0OTUsMTkgKzE2NTg0LDIwIEBACiAJCQkJ
NUNERDg2NTgxRTQzQjhCNTAwNjIxRTkyIC8qIGdldF9zY2FsaW5nX3NxdWFyZS5jIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDhCQUMxRTQzQzJCNTAwNjIxRTkyIC8qIGdldF9zeW5jX3NlcS5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3MjkxRTQzQkFCRTAwNjIxRTkyIC8qIGdtbS5jYyBpbiBT
b3VyY2VzICovLAotCQkJCTQxRTAyQ0E5MjEyNzM1MkQwMEMyN0NENiAvKiBnb29nX2NjX2ZhY3Rv
cnkuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI2MDIxQjFGRUM0MDBBNURGMjcgLyogZ29v
Z19jY19mYWN0b3J5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMDJDQjYyMTI3MzUyRDAwQzI3
Q0Q2IC8qIGdvb2dfY2NfbmV0d29ya19jb250cm9sLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDg1NTgxRTQzQjQyQjAwNjIxRTkyIC8qIGgyNjQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0RE
ODM1NDFFNDMyNTcyMDA2MjFFOTIgLyogaDI2NF9iaXRzdHJlYW1fcGFyc2VyLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDgzNTYxRTQzMjU3MjAwNjIxRTkyIC8qIGgyNjRfY29tbW9uLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE0NUU0QkYxRUY4OTRGNjAwRkNGNkU2IC8qIGgyNjRfcHJvZmls
ZV9sZXZlbF9pZC5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxODg5RDc5MjE2QkM0RUMwMDQ2MTRE
RCAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyK1ByaXZhdGUubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1Q0QyODVFQTFFNkE2MzlGMDA5NEZEQzggLyogaDI2NF9zcHJvcF9wYXJhbWV0ZXJfc2V0
cy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4M0Q5MUU0MzlBNkYwMDYyMUU5MiAvKiBoMjY0
X3Nwc19wcHNfdHJhY2tlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4NDY5MUZFMjU1RkEw
MDQwQzMwRiAvKiBoYW5kc2hha2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQ4OTFGRTI1
NzREMDA0MEMzMEYgLyogaGFuZHNoYWtlX2NsaWVudC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQx
OUM4NDhCMUZFMjU3NEQwMDQwQzMwRiAvKiBoYW5kc2hha2Vfc2VydmVyLmNjIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDFGQ0JCNzEyMUIxRkY3NDAwQTVERjI3IC8qIGhkcl9tZXRhZGF0YS5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxM0EyMzZFMUZFMThFMDcwMDM3M0U5OSAvKiBoZWxwZXJzLmNjIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDE3OTUzQkMyMTY5ODI0QjAwMjgyNjZCIC8qIGhlbHBlcnMuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0REODNEQjFFNDM5QTZGMDA2MjFFOTIgLyogaGlzdG9ncmFt
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgzNTExRkUyNDY2NTAwNDBDMzBGIC8qIGhpc3Rv
Z3JhbV9wZXJjZW50aWxlX2NvdW50ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEJBRTFF
NDNDMkI1MDA2MjFFOTIgLyogaHBfaW5wdXQuYyBpbiBTb3VyY2VzICovLApAQCAtMTY1MTcsNiAr
MTY2MDcsNyBAQAogCQkJCTVDREQ5MDUwMUU0M0QwRTkwMDYyMUU5MiAvKiBpNDIwLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNEMjg0NjcxRTZBNTdGNDAwOTRGREM4IC8qIGk0MjBfYnVmZmVyLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDMUIxRTQzMUY3NTAwMjY1MUM4IC8qIGk0MjBfYnVm
ZmVyX3Bvb2wuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI0NzIxQjFGREVGMDBBNURGMjcg
LyogaWNlY3JlZGVudGlhbHNpdGVyYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxQTA4QkM0
MjEyNjk1NzcwMDFENUQ3QiAvKiBpY2Vsb2dnZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTMw
OTFGODFFRjhDRkJEMDA3NTdDNTUgLyogaWNlc2VydmVycGFyc2luZy5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTQxOUM4M0UwMUZFMjQ3RjIwMDQwQzMwRiAvKiBpY2V0cmFuc3BvcnRpbnRlcm5hbC5j
YyBpbiBTb3VyY2VzICovLApAQCAtMTY1MzksNyArMTY2MzAsNiBAQAogCQkJCTQxNUYxRkIyMjEy
NzJGQkEwMDA2NENCRiAvKiBpbnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTQxOUM4MjlBMUZFMjBDQTEwMDQwQzMwRiAvKiBpbnRlcnZhbF9idWRnZXQuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REODdDMDFFNDNCQzA1MDA2MjFFOTIgLyogaW50aWFsaXplLmMg
aW4gU291cmNlcyAqLywKLQkJCQk0MTc5NTNDQzIxNjk4MkRCMDAyODI2NkIgLyogUlRDQ29kZWNT
cGVjaWZpY0luZm9IMjY0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzRUQxRkUxOEUwODAw
MzczRTk5IC8qIGlwYWRkcmVzcy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4N0MzMUU0M0JD
MDUwMDYyMUU5MiAvKiBpc2FjLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MTI5OUI5MTIxMjczNjdC
MDBCMzQxNEIgLyogaXNhY192YWQuYyBpbiBTb3VyY2VzICovLApAQCAtMTY1NDcsMjkgKzE2NjM3
LDMyIEBACiAJCQkJNUNERDgzN0IxRTQzOUEzNTAwNjIxRTkyIC8qIGl2Zl9maWxlX3dyaXRlci5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4M0UxMUU0MzlBNkYwMDYyMUU5MiAvKiBqaXR0ZXJf
YnVmZmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzRTMxRTQzOUE2RjAwNjIxRTkyIC8q
IGppdHRlcl9lc3RpbWF0b3IuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI1MjIxQjFGRTQ2
MDBBNURGMjcgLyogaml0dGVyX3VwcGVyX2JvdW5kX2V4cGVyaW1lbnQuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk0MUY5QkY4NjIwNTFDODAxMDBBQkYwQjkgLyoganNlcC5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDRDI4NDc0MUU2QTVEMjgwMDk0RkRDOCAvKiBqc2VwaWNlY2FuZGlkYXRlLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzODQyMTI2N0I3NzAwMjc0RjU5IC8qIGpzZXBpY2VjYW5k
aWRhdGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODQ3MjFFNkE1RDA4MDA5NEZEQzggLyog
anNlcHNlc3Npb25kZXNjcmlwdGlvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjlCRkUzMjA1
MURFMTgwMEFCRjBCOSAvKiBqc2VwdHJhbnNwb3J0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEw
MkY2OTAyMTI3MzIwNjAwNkFFOEQ3IC8qIGpzZXB0cmFuc3BvcnRjb250cm9sbGVyLmNjIGluIFNv
dXJjZXMgKi8sCisJCQkJNDFGQ0JCNkQyMUIxRkYzQTAwQTVERjI3IC8qIGtleV9kZXJpdmF0aW9u
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQxOUEyMTI3NTg2NTAwNjM0RkNGIC8qIGtpc3Nf
ZmZ0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3QzQxRTQzQkMwNTAwNjIxRTkyIC8qIGxh
dHRpY2UuYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2NzY4MjE2OTg1NEIwMEVGMzdFRCAvKiBS
VENWaWRlb0RlY29kZXJWUDgubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTQzM0NGMjFGNzlCMzM0
MDAzODdCNEQgLyogbGF0dGljZS5jIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE2MjI1RDQyMTY5ODE4
MTAwQTkxQzlCIC8qIHZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTQxNDMzRDE0MUY3OUIzMzQwMDM4N0I0RCAvKiBsYXR0aWNlX2MuYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDREQ4NDFGMUU0MzlCMjkwMDYyMUU5MiAvKiBsZWdhY3lfZW5jb2RlZF9hdWRpb19mcmFt
ZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NEI4MUU0M0FGMTMwMDYyMUU5MiAvKiBsZXZl
bF9lc3RpbWF0b3JfaW1wbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NjVBMUU0M0I4QjUw
MDYyMUU5MiAvKiBsZXZpbnNvbl9kdXJiaW4uYyBpbiBTb3VyY2VzICovLAorCQkJCTQxM0U2Nzc1
MjE2OTg2M0IwMEVGMzdFRCAvKiBsaWJ2cHhfaW50ZXJmYWNlLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDEyOTQwOTQyMTJFMTI4RDAwQUQ5NUU3IC8qIGxpYnZweF92cDhfZGVjb2Rlci5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxMjk0MDkyMjEyRTEyOEQwMEFEOTVFNyAvKiBsaWJ2cHhfdnA4X2Vu
Y29kZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTZEM0JFNjIxMjczMUMyMDA3NzVGMDkgLyog
bGltaXRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NEY2MUU2QTYwNTcwMDk0RkRDOCAv
KiBsb2NhbGF1ZGlvc291cmNlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzRUIxRkUxOEUw
ODAwMzczRTk5IC8qIGxvY2F0aW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhDMEYxRTQz
QzM0NjAwNjIxRTkyIC8qIGxvY2tlZF9iYW5kd2lkdGhfaW5mby5jYyBpbiBTb3VyY2VzICovLAor
CQkJCTQxNDRCM0Q4MjE2OThEM0QwMDQzNjNBQyAvKiBsb2dnaW5nLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEzQTIyQzAxRkUxOEUwNzAwMzczRTk5IC8qIGxvZ2dpbmdfbWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzQTIzQkUxRkUxOEUwODAwMzczRTk5IC8qIGxvZ3NpbmtzLmNjIGluIFNv
dXJjZXMgKi8sCisJCQkJNDFGQ0JCNkEyMUIxRkYxQjAwQTVERjI3IC8qIGxvc3NfYmFzZWRfYmFu
ZHdpZHRoX2VzdGltYXRpb24uY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDFDNTIxMjc1OTNG
MDA2MzRGQ0YgLyogbG9zc19yYXRlX2ZpbHRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
NzA1MUU0M0JBNzUwMDYyMUU5MiAvKiBsb3VkbmVzc19oaXN0b2dyYW0uY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0QyODU1RDFFNkE2MkVEMDA5NEZEQzggLyogbG93X2N1dF9maWx0ZXIuY2MgaW4g
U291cmNlcyAqLywKQEAgLTE2NTc4LDcgKzE2NjcxLDYgQEAKIAkJCQk1Q0REOEJDMTFFNDNDMkI1
MDA2MjFFOTIgLyogbHBjX2VuY29kZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3QzcxRTQz
QkMwNTAwNjIxRTkyIC8qIGxwY19nYWluX3N3Yl90YWJsZXMuYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxNDMzQ0VFMUY3OUIzMzQwMDM4N0I0RCAvKiBscGNfbWFza2luZ19tb2RlbC5jIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNDE0NEIzRjAyMTY5QzYzRjAwNDM2M0FDIC8qIE5TU3RyaW5nK1N0ZFN0cmlu
Zy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4N0M5MUU0M0JDMDUwMDYyMUU5MiAvKiBscGNf
c2hhcGVfc3diMTJfdGFibGVzLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODdDQjFFNDNCQzA1
MDA2MjFFOTIgLyogbHBjX3NoYXBlX3N3YjE2X3RhYmxlcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDg3Q0QxRTQzQkMwNTAwNjIxRTkyIC8qIGxwY190YWJsZXMuYyBpbiBTb3VyY2VzICovLApA
QCAtMTY1OTMsMTMgKzE2Njg1LDE1IEBACiAJCQkJNDEzQTIzMkMxRkUxOEUwNzAwMzczRTk5IC8q
IG1hY2lmYWRkcnNfY29udmVydGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzMzgxRkUx
OEUwNzAwMzczRTk5IC8qIG1hY3V0aWxzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg1Q0Ix
RTZBNjM0MzAwOTRGREM4IC8qIG1haW5fZmlsdGVyX3VwZGF0ZV9nYWluLmNjIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDFGQ0JCM0MyMUIxRkQ0MDAwQTVERjI3IC8qIG1hdGNoLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNEMjg1Q0YxRTZBNjM0MzAwOTRGREM4IC8qIG1hdGNoZWRfZmlsdGVyLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg1Q0QxRTZBNjM0MzAwOTRGREM4IC8qIG1hdGNoZWRfZmls
dGVyX2xhZ19hZ2dyZWdhdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGOUJGRDQyMDUxRERF
NTAwQUJGMEI5IC8qIG1hdHJpeF9idWZmZXIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI0
ODIxQjFGREVGMDBBNURGMjcgLyogbWRuc19tZXNzYWdlLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDg2QTQxRTQzQjk5NDAwNjIxRTkyIC8qIG1lYW5fdmFyaWFuY2VfZXN0aW1hdG9yLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzRTUxRTQzOUE2RjAwNjIxRTkyIC8qIG1lZGlhX29wdF91
dGlsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzRTcxRTQzOUE2RjAwNjIxRTkyIC8qIG1l
ZGlhX29wdGltaXphdGlvbi5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNjIyNUU2MjE2OTgxOTUw
MEE5MUM5QiAvKiBvYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTQxRkNCQjExMjFCMUY1MzcwMEE1REYyNyAvKiBtZWRpYV90cmFuc3BvcnRfaW50ZXJmYWNl
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEwMkY2QjMyMTI3MzMzMTAwNkFFOEQ3IC8qIG1lZGlh
Y2hhbm5lbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0OEU2MUU0MkMxRTMwMDI2NTFDOCAv
KiBtZWRpYWNvbnN0YW50cy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNjNGOTQ4MUU0MTczN0Iw
MDJDQTUzMSAvKiBtZWRpYWNvbnN0cmFpbnRzaW50ZXJmYWNlLmNjIGluIFNvdXJjZXMgKi8sCkBA
IC0xNjYwNywyNCArMTY3MDEsMjUgQEAKIAkJCQk0MUUwMkNCMTIxMjczNTJEMDBDMjdDRDYgLyog
bWVkaWFuX3Nsb3BlX2VzdGltYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NEZBMUU2
QTYwNTcwMDk0RkRDOCAvKiBtZWRpYXN0cmVhbS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4
NjQwMUU2QTY4M0EwMDk0RkRDOCAvKiBtZWRpYXN0cmVhbWludGVyZmFjZS5jYyBpbiBTb3VyY2Vz
ICovLAotCQkJCTQxNDRCM0QzMjE2OTg5NkQwMDQzNjNBQyAvKiBSVENOYXRpdmVJNDIwQnVmZmVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg0RkMxRTZBNjA1NzAwOTRGREM4IC8qIG1lZGlh
c3RyZWFtb2JzZXJ2ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODYzMjFFNkE2N0JGMDA5
NEZEQzggLyogbWVkaWF0eXBlcy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzgwMUZFMThF
MDcwMDM3M0U5OSAvKiBtZW1vcnlfdXNhZ2UuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkI4
NDIxQjIwMDdCMDBBNURGMjcgLyogbWVtdXRpbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
QTJGMUU0M0JGQjMwMDYyMUU5MiAvKiBtZXJnZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0Ey
MkY5MUZFMThFMDcwMDM3M0U5OSAvKiBtZXNzYWdlZGlnZXN0LmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDEzQTIzNkIxRkUxOEUwNzAwMzczRTk5IC8qIG1lc3NhZ2VoYW5kbGVyLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzQTIyQjExRkUxOEUwNzAwMzczRTk5IC8qIG1lc3NhZ2VxdWV1ZS5jYyBp
biBTb3VyY2VzICovLAorCQkJCTQxNzk1M0RCMjE2OTgzOTEwMDI4MjY2QiAvKiBtZXRyaWNzLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2NUUxRTQzQjhCNTAwNjIxRTkyIC8qIG1pbl9tYXhf
b3BlcmF0aW9ucy5jIGluIFNvdXJjZXMgKi8sCi0JCQkJNUNERDgzN0QxRTQzOUEzNTAwNjIxRTky
IC8qIG1vdmluZ19hdmVyYWdlLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzRTY3QTMyMTY5ODg5
NTAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclFwVGhyZXNob2xkcy5tIGluIFNvdXJjZXMgKi8s
CisJCQkJNDE3OTUzRTYyMTY5ODNDQTAwMjgyNjZCIC8qIG1vZHVsZV9jb21tb25fdHlwZXMuY2Mg
aW4gU291cmNlcyAqLywKKwkJCQk0MUZDQkIxNTIxQjFGN0FBMDBBNURGMjcgLyogbW92aW5nX2F2
ZXJhZ2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODYxMDFFNkE2NEM5MDA5NEZEQzggLyog
bW92aW5nX21heC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QzhFMUU0M0M2NjAwMDYyMUU5
MiAvKiBtb3ZpbmdfbW9tZW50cy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkNGMUU0M0My
QjUwMDYyMUU5MiAvKiBteV9jb3JyLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODk1MzFFNDNC
RjNBMDA2MjFFOTIgLyogbmFjay5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4M0VBMUU0MzlB
NkYwMDYyMUU5MiAvKiBuYWNrX21vZHVsZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QTMy
MUU0M0JGQjMwMDYyMUU5MiAvKiBuYWNrX3RyYWNrZXIuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0
MTc5NTNCOTIxNjk4MjQyMDAyODI2NkIgLyogUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQubSBp
biBTb3VyY2VzICovLAorCQkJCTQxNzk1M0I0MjE2OTgyNDIwMDI4MjY2QiAvKiBuYWx1X3Jld3Jp
dGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzMDMxRkUxOEUwNzAwMzczRTk5IC8qIG5h
dHR5cGVzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCRDExRTQzQzJCNTAwNjIxRTkyIC8q
IG5lYXJlc3RfbmVpZ2hib3IuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QTNCMUU0M0JGQjMw
MDYyMUU5MiAvKiBuZXRlcS5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY2MzcsNDYgKzE2NzMyLDQ0
IEBACiAJCQkJNDFFMDJDQ0QyMTI3MzVCNzAwQzI3Q0Q2IC8qIG5ldHdvcmtfdHlwZXMuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MTNBMjM4QjFGRTE4RTA3MDAzNzNFOTkgLyogbmV0d29ya21vbml0
b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTZEM0JFNzIxMjczMUMyMDA3NzVGMDkgLyogbm9p
c2VfbGV2ZWxfZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzRTY3OTAyMTY5ODdE
QjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTZEM0JF
ODIxMjczMUMyMDA3NzVGMDkgLyogbm9pc2Vfc3BlY3RydW1fZXN0aW1hdG9yLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNERDg1RkUxRTQzQjg0RTAwNjIxRTkyIC8qIG5vaXNlX3N1cHByZXNzaW9u
LmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODRFOTFFNDNCMEI2MDA2MjFFOTIgLyogbm9pc2Vf
c3VwcHJlc3Npb25faW1wbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NUZDMUU0M0I4NEUw
MDYyMUU5MiAvKiBub2lzZV9zdXBwcmVzc2lvbl94LmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTc5
NTNCODIxNjk4MjQyMDAyODI2NkIgLyogUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQubSBpbiBT
b3VyY2VzICovLAotCQkJCTQxM0EyMzVGMUZFMThFMDcwMDM3M0U5OSAvKiBub29wLmNjIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDEzQTIzRUUxRkUxOEUwODAwMzczRTk5IC8qIG5vb3AubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REOEEzRDFFNDNCRkIzMDA2MjFFOTIgLyogbm9ybWFsLmNjIGluIFNv
dXJjZXMgKi8sCisJCQkJNDFGQ0JCNTYyMUIxRkU0NjAwQTVERjI3IC8qIG5vcm1hbGl6ZV9zaW11
bGNhc3Rfc2l6ZV9leHBlcmltZW50LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2QTcxRTQz
Qjk5NDAwNjIxRTkyIC8qIG5vcm1hbGl6ZWRfY292YXJpYW5jZV9lc3RpbWF0b3IuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REODYwMDFFNDNCODRFMDA2MjFFOTIgLyogbnNfY29yZS5jIGluIFNv
dXJjZXMgKi8sCisJCQkJNDE0NEIzRjAyMTY5QzYzRjAwNDM2M0FDIC8qIE5TU3RyaW5nK1N0ZFN0
cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NjA1MUU0M0I4NEUwMDYyMUU5MiAvKiBu
c3hfY29yZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2MDIxRTQzQjg0RTAwNjIxRTkyIC8q
IG5zeF9jb3JlX2MuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjQxMUFEMUVGOEQ5MUYwMDM0M0My
NiAvKiBudWxsX2FlY19kdW1wX2ZhY3RvcnkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODNC
MzFGRTI0NzJFMDA0MEMzMEYgLyogbnVsbF9hdWRpb19wb2xsZXIuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk0MTNBMjNEMjFGRTE4RTA4MDAzNzNFOTkgLyogbnVsbHNvY2tldHNlcnZlci5jYyBpbiBT
b3VyY2VzICovLAorCQkJCTQxNjIyNUU0MjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX2ZyYW1lX2J1
ZmZlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNjIyNUU3MjE2OTgxOTUwMEE5MUM5QiAvKiBv
YmpjX3ZpZGVvX2RlY29kZXJfZmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNjIyNUU2
MjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxNjIyNUUyMjE2OTgxOTUwMEE5MUM5QiAvKiBvYmpjX3ZpZGVvX2ZyYW1l
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg2OTQxRTQzQjkzOTAwNjIxRTkyIC8qIG9vdXJh
X2ZmdC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NjkxMUU0M0I5MzkwMDYyMUU5MiAvKiBv
b3VyYV9mZnRfc3NlMi5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjdEMjFCMUZGRjYwMEE1
REYyNyAvKiBvcGVuc3NsX2tleV9kZXJpdmF0aW9uX2hrZGYuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTlDODQyNzFGRTI0QkQxMDA0MEMzMEYgLyogb3BlbnNzbGFkYXB0ZXIuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MUREQjI2NDIxMjY3OUEzMDAyOTZENDcgLyogb3BlbnNzbGNlcnRpZmljYXRl
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5Qzg0MjYxRkUyNEJDRjAwNDBDMzBGIC8qIG9wZW5z
c2xkaWdlc3QuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQyNTFGRTI0QkM4MDA0MEMzMEYg
Lyogb3BlbnNzbGlkZW50aXR5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEREIyNjIyMTI2NzlB
MzAwMjk2RDQ3IC8qIG9wZW5zc2xzZXNzaW9uY2FjaGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0
MTlDODQzRjFGRTI1MEI5MDA0MEMzMEYgLyogb3BlbnNzbHN0cmVhbWFkYXB0ZXIuY2MgaW4gU291
cmNlcyAqLywKLQkJCQk0MTNFNjc5QjIxNjk4ODYyMDBFRjM3RUQgLyogYWdjMl9jb21tb24uY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MUREQjI2NTIxMjY3OUEzMDAyOTZENDcgLyogb3BlbnNzbHV0
aWxpdHkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUREQjI1MjIxMjY1QkU5MDAyOTZENDcgLyog
b3B0aW9uYWwuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTNBMjM0QTFGRTE4RTA3MDAzNzNFOTkg
Lyogb3B0aW9uc2ZpbGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEM2NzFFNDNDNjA5MDA2
MjFFOTIgLyogb3B1c19pbnRlcmZhY2UuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4RkQ3MUU0
M0NENjYwMDYyMUU5MiAvKiBvdmVydXNlX2RldGVjdG9yLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NDE3OTUzRDUyMTY5ODM0RjAwMjgyNjZCIC8qIGNoYW5uZWxfc2VuZF9wcm94eS5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4RkQ5MUU0M0NENjYwMDYyMUU5MiAvKiBvdmVydXNlX2VzdGltYXRv
ci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NUE0MUU0M0I1QzAwMDYyMUU5MiAvKiBvdmVy
dXNlX2ZyYW1lX2RldGVjdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2M0Y5RUQxRTQxNzRG
NjAwMkNBNTMxIC8qIHAycGNvbnN0YW50cy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNjNGOUYy
MUU0MTc0RjYwMDJDQTUzMSAvKiBwMnB0cmFuc3BvcnRjaGFubmVsLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDFGMjYzOUEyMTI2N0Y1RTAwMjc0RjU5IC8qIHBhX3JpbmdidWZmZXIuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4RkEyMUU0M0NDQkUwMDYyMUU5MiAvKiBwYWNlZF9zZW5kZXIuY2Mg
aW4gU291cmNlcyAqLywKLQkJCQk0MTI5OUI4QjIxMjczNjUxMDBCMzQxNEIgLyogcGFjZXJfY29u
dHJvbGxlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4QkQzMUU0M0MyQjUwMDYyMUU5MiAv
KiBwYWNrX2JpdHMuYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNDRCM0QxMjE2OTg5NjcwMDQzNjNB
QyAvKiBSVENOYXRpdmVNdXRhYmxlSTQyMEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4QTQyMUU0M0JGQjMwMDYyMUU5MiAvKiBwYWNrZXQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REODNFRTFFNDM5QTZGMDA2MjFFOTIgLyogcGFja2V0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDhBQUYxRTQzQzAwRjAwNjIxRTkyIC8qIHBhY2tldC5jYyBpbiBTb3VyY2VzICovLApAQCAt
MTY2ODgsNyArMTY3ODEsNiBAQAogCQkJCTQxMjQ1NTU2MUVGODg3RkIwMEYxMTgwOSAvKiBwYWNr
ZXRsb3NzZXN0aW1hdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgzRjUxRkUyNDhDQTAw
NDBDMzBGIC8qIHBhY2tldHNvY2tldGZhY3RvcnkuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlD
ODNEQTFGRTI0N0YyMDA0MEMzMEYgLyogcGFja2V0dHJhbnNwb3J0aW50ZXJuYWwuY2MgaW4gU291
cmNlcyAqLywKLQkJCQk0MTNBMjMzQzFGRTE4RTA3MDAzNzNFOTkgLyogcGF0aHV0aWxzLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUM0QjQ4ODMxRTQyQzFCQTAwMjY1MUM4IC8qIHBheWxvYWRfdHlw
ZV9tYXBwZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOTAwMDFFNDNDRTNBMDA2MjFFOTIg
LyogcGNtMTZiLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODRGRjFFNkE2MDU3MDA5NEZEQzgg
LyogcGVlcmNvbm5lY3Rpb24uY2MgaW4gU291cmNlcyAqLywKQEAgLTE2NzA3LDcgKzE2Nzk5LDYg
QEAKIAkJCQk1Q0REODczMDFFNDNCQUJFMDA2MjFFOTIgLyogcGl0Y2hfaW50ZXJuYWwuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REODdENTFFNDNCQzA2MDA2MjFFOTIgLyogcGl0Y2hfbGFnX3Rh
Ymxlcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MzNEMTkxRjc5QjMzNDAwMzg3QjREIC8qIHBp
dGNoX2xhZ190YWJsZXMuYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2NzZEMjE2OTg1NEIwMEVG
MzdFRCAvKiBSVENXcmFwcGVkTmF0aXZlVmlkZW9FbmNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE5MjQxNDEyMTI3MzcyNDAwNjM0RkNGIC8qIHBpdGNoX3NlYXJjaC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxOTI0MTQ0MjEyNzM3MjgwMDYzNEZDRiAvKiBwaXRjaF9zZWFyY2hfaW50ZXJu
YWwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjM1QTFGRTE4RTA3MDAzNzNFOTkgLyogcGxh
dGZvcm1fZmlsZS5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY3NDcsNyArMTY4MzgsNiBAQAogCQkJ
CTQxM0EyMzYyMUZFMThFMDcwMDM3M0U5OSAvKiByYXRldHJhY2tlci5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTQxQTA4QkNDMjEyNjk2MjAwMDFENUQ3QiAvKiByYXdfbG9nZ2luZy5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4NjYxMUU0M0I4QjUwMDYyMUU5MiAvKiByZWFsX2ZmdC5jIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDEzRTY3NzUyMTY5ODYzQjAwRUYzN0VEIC8qIGxpYnZweF9pbnRlcmZh
Y2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNEM3NzFFNDMxRjlDMDAyNjUxQzggLyogcmVh
bF9mb3VyaWVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDNzIxRTQzMUY5QzAwMjY1MUM4
IC8qIHJlYWxfZm91cmllcl9vb3VyYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA5MUZFMUVG
OEQwNkQwMDc1N0M1NSAvKiByZWNlaXZlX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyLmNjIGlu
IFNvdXJjZXMgKi8sCkBAIC0xNjc4MywxNCArMTY4NzMsMTIgQEAKIAkJCQk1Q0REODY2NDFFNDNC
OEI1MDA2MjFFOTIgLyogcmVzYW1wbGVfYnlfMl9pbnRlcm5hbC5jIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUNERDg2NjgxRTQzQjhCNTAwNjIxRTkyIC8qIHJlc2FtcGxlX2ZyYWN0aW9uYWwuYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDREQ4QUIxMUU0M0MwMEYwMDYyMUU5MiAvKiByZXNhbXBsZV9pbnB1
dF9hdWRpb19maWxlLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzRTY3OTgyMTY5ODgzOTAwRUYz
N0VEIC8qIFJUQ1ZpZGVvQ29kZWNJbmZvLm0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODc1ODFF
NDNCQUY1MDA2MjFFOTIgLyogcmVzYW1wbGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg0
QkQxRTQzQUYxMzAwNjIxRTkyIC8qIHJlc2lkdWFsX2VjaG9fZGV0ZWN0b3IuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0QyODVERDFFNkE2MzQzMDA5NEZEQzggLyogcmVzaWR1YWxfZWNob19lc3Rp
bWF0b3IuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNEM3QTFFNDMxRjlDMDAyNjUxQzggLyog
cmluZ19idWZmZXIuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NEJGMUU0M0FGMTMwMDYyMUU5
MiAvKiBybXNfbGV2ZWwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDE0NjIxMjczNzI4MDA2
MzRGQ0YgLyogcm5uLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzQkMyMTY5ODI0QjAwMjgy
NjZCIC8qIGhlbHBlcnMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDE5OTIxMjc1ODY1MDA2
MzRGQ0YgLyogcm5uX3ZhZF93ZWlnaHRzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNGRDUzOEYx
RTRCRDNBMzAwNDgyOTA4IC8qIHJvdGF0ZV9uZW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNG
RDUzOTAxRTRCRDNBMzAwNDgyOTA4IC8qIHJvdGF0ZV9uZW9uNjQuY2MgaW4gU291cmNlcyAqLywK
QEAgLTE2ODA0LDcgKzE2ODkyLDYgQEAKIAkJCQk0MTlDODM5QjFGRTI0NkY5MDA0MEMzMEYgLyog
cnRjX2V2ZW50X2F1ZGlvX3JlY2VpdmVfc3RyZWFtX2NvbmZpZy5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTQxOUM4MzlFMUZFMjQ2RjkwMDQwQzMwRiAvKiBydGNfZXZlbnRfYXVkaW9fc2VuZF9zdHJl
YW1fY29uZmlnLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgzOEIxRkUyNDZGOTAwNDBDMzBG
IC8qIHJ0Y19ldmVudF9id2VfdXBkYXRlX2RlbGF5X2Jhc2VkLmNjIGluIFNvdXJjZXMgKi8sCi0J
CQkJNDE3OTUzRUYyMTY5ODQyMTAwMjgyNjZCIC8qIHZwOV9wcm9maWxlLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDE5QzgzOEQxRkUyNDZGOTAwNDBDMzBGIC8qIHJ0Y19ldmVudF9id2VfdXBkYXRl
X2xvc3NfYmFzZWQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUEwOEJDMDIxMjY5NTUzMDAxRDVE
N0IgLyogcnRjX2V2ZW50X2ljZV9jYW5kaWRhdGVfcGFpci5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxQTA4QkJEMjEyNjk1NTMwMDFENUQ3QiAvKiBydGNfZXZlbnRfaWNlX2NhbmRpZGF0ZV9wYWly
X2NvbmZpZy5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY4MjQsMTAgKzE2OTExLDE3IEBACiAJCQkJ
NDE5Qzg0MUQxRkUyNEFFRjAwNDBDMzBGIC8qIHJ0Y19zdHJlYW1fY29uZmlnLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzQTIzMEYxRkUxOEUwNzAwMzczRTk5IC8qIHJ0Y2NlcnRpZmljYXRlLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIyQkUxRkUxOEUwNzAwMzczRTk5IC8qIHJ0Y2NlcnRp
ZmljYXRlZ2VuZXJhdG9yLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE3OTUzQ0MyMTY5ODJEQjAw
MjgyNjZCIC8qIFJUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NC5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTQxM0U2NzhCMjE2OTg3QjkwMEVGMzdFRCAvKiBSVENDVlBpeGVsQnVmZmVyLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDE3OTUzQjUyMTY5ODI0MjAwMjgyNjZCIC8qIFJUQ0RlZmF1bHRWaWRlb0Rl
Y29kZXJGYWN0b3J5Lm0gaW4gU291cmNlcyAqLywKKwkJCQk0MTc5NTNCNzIxNjk4MjQyMDAyODI2
NkIgLyogUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3RvcnkubSBpbiBTb3VyY2VzICovLAorCQkJ
CTQxNDRCM0Y1MjE2QjA4MUIwMDQzNjNBQyAvKiBSVENFbmNvZGVkSW1hZ2UrUHJpdmF0ZS5tbSBp
biBTb3VyY2VzICovLAorCQkJCTQxNzk1M0ZBMjE2OTg0QkUwMDI4MjY2QiAvKiBSVENFbmNvZGVk
SW1hZ2UubSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjQxMUIwMUVGOERBMDEwMDM0M0MyNiAvKiBy
dGNlcnJvci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTVDREQ4QTRGMUU0M0JGQjMwMDYyMUU5MiAv
KiBydGNwLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE0NEIzRDYyMTY5OEExQTAwNDM2M0FDIC8q
IFJUQ0gyNjRQcm9maWxlTGV2ZWxJZC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNDRCM0QzMjE2
OTg5NkQwMDQzNjNBQyAvKiBSVENOYXRpdmVJNDIwQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDE0NEIzRDEyMTY5ODk2NzAwNDM2M0FDIC8qIFJUQ05hdGl2ZU11dGFibGVJNDIwQnVmZmVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgyQjkxRkUyMERDRDAwNDBDMzBGIC8qIHJ0Y3Bf
ZGVtdXhlci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2Nzc2MjE2OTg2NjEwMEVGMzdFRCAv
KiBSVENWaWRlb0NvZGVjQ29uc3RhbnRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg1RkEx
RTZBNjQ1MjAwOTRGREM4IC8qIHJ0Y3BfbmFja19zdGF0cy5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4ODk3MUU0M0JFM0MwMDYyMUU5MiAvKiBydGNwX3BhY2tldC5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDREQ4ODlBMUU0M0JFM0MwMDYyMUU5MiAvKiBydGNwX3JlY2VpdmVyLmNjIGluIFNv
dXJjZXMgKi8sCkBAIC0xNjgzNSwxNSArMTY5MjksMzEgQEAKIAkJCQk0MTlDODJGRjFGRTIwRjAy
MDA0MEMzMEYgLyogcnRjcF90cmFuc2NlaXZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4
MzAyMUZFMjBGMDIwMDQwQzMwRiAvKiBydGNwX3RyYW5zY2VpdmVyX2NvbmZpZy5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxOUM4MzAwMUZFMjBGMDIwMDQwQzMwRiAvKiBydGNwX3RyYW5zY2VpdmVy
X2ltcGwuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTg4OUQ3NzIxNkJDNEVDMDA0NjE0REQgLyog
UlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4ODlENzky
MTZCQzRFQzAwNDYxNEREIC8qIFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIrUHJpdmF0ZS5tbSBp
biBTb3VyY2VzICovLAorCQkJCTQxRkNCQjg5MjFCMjAwRkQwMEE1REYyNyAvKiBSVENSdHBGcmFn
bWVudGF0aW9uSGVhZGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQk1QzYzRkE3ODFFNDE3QUVEMDAy
Q0E1MzEgLyogcnRjc3RhdHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzYzRkE3NzFFNDE3QUVE
MDAyQ0E1MzEgLyogcnRjc3RhdHNfb2JqZWN0cy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4
NTA3MUU2QTYwNTcwMDk0RkRDOCAvKiBydGNzdGF0c2NvbGxlY3Rvci5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDNjNGQTc5MUU0MTdBRUQwMDJDQTUzMSAvKiBydGNzdGF0c3JlcG9ydC5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxMDJGNjkyMjEyNzMyMDYwMDZBRThENyAvKiBydGNzdGF0c3RyYXZl
cnNhbC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxM0U2Nzc2MjE2OTg2NjEwMEVGMzdFRCAvKiBS
VENWaWRlb0NvZGVjQ29uc3RhbnRzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDE0NEIzRTgyMTY5
QzVFMzAwNDM2M0FDIC8qIFJUQ1ZpZGVvQ29kZWNJbmZvK1ByaXZhdGUubW0gaW4gU291cmNlcyAq
LywKKwkJCQk0MTNFNjc5ODIxNjk4ODM5MDBFRjM3RUQgLyogUlRDVmlkZW9Db2RlY0luZm8ubSBp
biBTb3VyY2VzICovLAorCQkJCTQxNzk1M0I4MjE2OTgyNDIwMDI4MjY2QiAvKiBSVENWaWRlb0Rl
Y29kZXJGYWN0b3J5SDI2NC5tIGluIFNvdXJjZXMgKi8sCisJCQkJNDE3OTUzQzcyMTY5ODI0QjAw
MjgyNjZCIC8qIFJUQ1ZpZGVvRGVjb2RlckgyNjQubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTNF
Njc2ODIxNjk4NTRCMDBFRjM3RUQgLyogUlRDVmlkZW9EZWNvZGVyVlA4Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDE3OTUzQjkyMTY5ODI0MjAwMjgyNjZCIC8qIFJUQ1ZpZGVvRW5jb2RlckZhY3Rv
cnlIMjY0Lm0gaW4gU291cmNlcyAqLywKKwkJCQk0MTc5NTNDQTIxNjk4MjRCMDAyODI2NkIgLyog
UlRDVmlkZW9FbmNvZGVySDI2NC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxM0U2N0EzMjE2OTg4
OTUwMEVGMzdFRCAvKiBSVENWaWRlb0VuY29kZXJRcFRocmVzaG9sZHMubSBpbiBTb3VyY2VzICov
LAorCQkJCTQxNDRCM0Y3MjE2QjA5Q0IwMDQzNjNBQyAvKiBSVENWaWRlb0VuY29kZXJTZXR0aW5n
cytQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzRTY3NjUyMTY5ODU0NjAwRUYzN0VE
IC8qIFJUQ1ZpZGVvRW5jb2RlclZQOC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxM0U2NzkwMjE2
OTg3REIwMEVGMzdFRCAvKiBSVENWaWRlb0ZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDEz
RTY3NkIyMTY5ODU0QjAwRUYzN0VEIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIubW0g
aW4gU291cmNlcyAqLywKKwkJCQk0MTNFNjc2RDIxNjk4NTRCMDBFRjM3RUQgLyogUlRDV3JhcHBl
ZE5hdGl2ZVZpZGVvRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRDZCNDU5MjEyNzMx
NTkwMDhGOTM1MyAvKiBydHBfYml0cmF0ZV9jb25maWd1cmF0b3IuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk0MTlDODJCNDFGRTIwRENEMDA0MEMzMEYgLyogcnRwX2NvbmZpZy5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxMzA5MjAyMUVGOEQwQTYwMDc1N0M1NSAvKiBydHBfZGVtdXhlci5jYyBpbiBT
b3VyY2VzICovLAotCQkJCTQxNzk1M0I1MjE2OTgyNDIwMDI4MjY2QiAvKiBSVENEZWZhdWx0Vmlk
ZW9EZWNvZGVyRmFjdG9yeS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4QjAxRTQzQkUzQzAw
NjIxRTkyIC8qIHJ0cF9mb3JtYXQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODhBNDFFNDNC
RTNDMDA2MjFFOTIgLyogcnRwX2Zvcm1hdF9oMjY0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDg4QTYxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9mb3JtYXRfdmlkZW9fZ2VuZXJpYy5jYyBpbiBT
b3VyY2VzICovLApAQCAtMTY4NTQsNiArMTY5NjQsNyBAQAogCQkJCTQxRTAyQzdBMjEyNzM0NzQw
MEMyN0NENiAvKiBydHBfZ2VuZXJpY19mcmFtZV9kZXNjcmlwdG9yLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDE5MjQxQjAyMTI3NTkwMjAwNjM0RkNGIC8qIHJ0cF9nZW5lcmljX2ZyYW1lX2Rlc2Ny
aXB0b3JfZXh0ZW5zaW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0NUU0REMxRUY4Q0NFRjAw
RkNGNkU2IC8qIHJ0cF9oZWFkZXJfZXh0ZW5zaW9uX21hcC5jYyBpbiBTb3VyY2VzICovLAorCQkJ
CTQxM0U2NzdEMjE2OTg2QUUwMEVGMzdFRCAvKiBydHBfaGVhZGVyX2V4dGVuc2lvbl9zaXplLmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4QjUxRTQzQkUzQzAwNjIxRTkyIC8qIHJ0cF9oZWFk
ZXJfZXh0ZW5zaW9ucy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4OEI3MUU0M0JFM0MwMDYy
MUU5MiAvKiBydHBfaGVhZGVyX3BhcnNlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRjlCRjhC
MjA1MUM4MDEwMEFCRjBCOSAvKiBydHBfaGVhZGVycy5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY4
NjcsNyArMTY5NzgsNiBAQAogCQkJCTVDREQ4OENDMUU0M0JFM0QwMDYyMUU5MiAvKiBydHBfcnRj
cF9pbXBsLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4RDMxRTQzQkUzRDAwNjIxRTkyIC8q
IHJ0cF9zZW5kZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODhDRTFFNDNCRTNEMDA2MjFF
OTIgLyogcnRwX3NlbmRlcl9hdWRpby5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNzk1M0RCMjE2
OTgzOTEwMDI4MjY2QiAvKiBtZXRyaWNzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4RDEx
RTQzQkUzRDAwNjIxRTkyIC8qIHJ0cF9zZW5kZXJfdmlkZW8uY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTlDODJCQzFGRTIwRENEMDA0MEMzMEYgLyogcnRwX3N0cmVhbV9yZWNlaXZlcl9jb250cm9s
bGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg1QjIxRTQzQjVDMDAwNjIxRTkyIC8qIHJ0
cF9zdHJlYW1zX3N5bmNocm9uaXplci5jYyBpbiBTb3VyY2VzICovLApAQCAtMTY4NzYsMjYgKzE2
OTg2LDIyIEBACiAJCQkJNUNERDg4RDUxRTQzQkUzRDAwNjIxRTkyIC8qIHJ0cF91dGlsaXR5LmNj
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMDJDN0QyMTI3MzQ3NDAwQzI3Q0Q2IC8qIHJ0cF92aWRl
b19oZWFkZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUQ2QjQ1QzIxMjczMTU5MDA4RjkzNTMg
LyogcnRwX3ZpZGVvX3NlbmRlci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0U2NzhCMjE2OTg3
QjkwMEVGMzdFRCAvKiBSVENDVlBpeGVsQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEz
RTY3NzQyMTY5ODYzQjAwRUYzN0VEIC8qIHZwOF90ZW1wb3JhbF9sYXllcnMuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MTMwOTFGNDFFRjhDRjkyMDA3NTdDNTUgLyogcnRwX3ZpZGVvX3N0cmVhbV9y
ZWNlaXZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0OEVCMUU0MkMxRTMwMDI2NTFDOCAv
KiBydHBkYXRhZW5naW5lLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg5NkMxRTQzQkYzQTAw
NjIxRTkyIC8qIHJ0cGZiLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgyQzkxRkUyMEUyQzAw
NDBDMzBGIC8qIHJ0cG1lZGlhdXRpbHMuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTQ0QjNEODIx
Njk4RDNEMDA0MzYzQUMgLyogbG9nZ2luZy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4MzE1
MUZFMjQyODAwMDQwQzMwRiAvKiBydHBwYXJhbWV0ZXJzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDEwMkY2OTMyMTI3MzIwNjAwNkFFOEQ3IC8qIHJ0cHBhcmFtZXRlcnNjb252ZXJzaW9uLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg1MDkxRTZBNjA1NzAwOTRGREM4IC8qIHJ0cHJlY2VpdmVy
LmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE0NEIzRjUyMTZCMDgxQjAwNDM2M0FDIC8qIFJUQ0Vu
Y29kZWRJbWFnZStQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE2MjI1RDkyMTY5ODE4
MTAwQTkxQzlCIC8qIHZpZGVvX2ZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzODMy
MTI2N0I3NzAwMjc0RjU5IC8qIHJ0cHJlY2VpdmVyaW50ZXJmYWNlLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNEMjg1MEIxRTZBNjA1NzAwOTRGREM4IC8qIHJ0cHNlbmRlci5jYyBpbiBTb3VyY2Vz
ICovLAorCQkJCTQxNDRCM0UyMjE2OUI1QkQwMDQzNjNBQyAvKiBydHBzZW5kZXJpbnRlcmZhY2Uu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODJFNjFGRTIwRTU5MDA0MEMzMEYgLyogcnRwdHJh
bnNjZWl2ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUYyNjM4NTIxMjY3Qjc3MDAyNzRGNTkg
LyogcnRwdHJhbnNjZWl2ZXJpbnRlcmZhY2UuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTQ1RTRD
QzFFRjhDQjhCMDBGQ0Y2RTYgLyogcnRwdHJhbnNwb3J0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUM0QjQ4RjExRTQyQzFFMzAwMjY1MUM4IC8qIHJ0cHV0aWxzLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUNERDgzRjgxRTQzOUE2RjAwNjIxRTkyIC8qIHJ0dF9maWx0ZXIuY2MgaW4gU291cmNlcyAq
LywKLQkJCQk0MTNFNjc3MjIxNjk4NjNCMDBFRjM3RUQgLyogdGVtcG9yYWxfbGF5ZXJzX2NoZWNr
ZXIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTc5NTNFQTIxNjk4M0YxMDAyODI2NkIgLyogcnR0
X211bHRfZXhwZXJpbWVudC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOTI0MUNBMjEyNzU5M0Yw
MDYzNEZDRiAvKiBydHRfc3RhdHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODJCNzFGRTIw
RENEMDA0MEMzMEYgLyogcnR4X3JlY2VpdmVfc3RyZWFtLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE5MjQxNjQyMTI3Mzg1QjAwNjM0RkNGIC8qIHJ3X2xvY2tfcG9zaXguY2MgaW4gU291cmNlcyAq
LywKQEAgLTE2OTEyLDcgKzE3MDE4LDYgQEAKIAkJCQk0MTIzOUIzRjIxNDc2REM0MDAzOTZGODEg
Lyogc2NyZWVuc2hhcmVfbGF5ZXJzLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNEMjg2M0MxRTZB
NjgxQzAwOTRGREM4IC8qIHNjdHB0cmFuc3BvcnQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0Qy
ODUwRDFFNkE2MDU3MDA5NEZEQzggLyogc2N0cHV0aWxzLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NDEzRTY3NjUyMTY5ODU0NjAwRUYzN0VEIC8qIFJUQ1ZpZGVvRW5jb2RlclZQOC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDREQ4OTZGMUU0M0JGM0EwMDYyMUU5MiAvKiBzZGVzLmNjIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDFGMjYzNjIyMTI2N0FERjAwMjc0RjU5IC8qIHNkcF92aWRlb19mb3JtYXQu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODJEQzFGRTIwRTU5MDA0MEMzMEYgLyogc2RwdXRp
bHMuY2MgaW4gU291cmNlcyAqLywKQEAgLTE2OTIzLDExICsxNzAyOCwxMSBAQAogCQkJCTVDREQ4
NUI5MUU0M0I1QzAwMDYyMUU5MiAvKiBzZW5kX3N0YXRpc3RpY3NfcHJveHkuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MTI5OUI4QzIxMjczNjUxMDBCMzQxNEIgLyogc2VuZF90aW1lX2hpc3Rvcnku
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODk3MjFFNDNCRjNBMDA2MjFFOTIgLyogc2VuZGVy
X3JlcG9ydC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxRkNCQjI3MjFCMUY4N0UwMEE1REYyNyAv
KiBzZW50X3BhY2tldC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMzlEMUZFMThFMDgwMDM3
M0U5OSAvKiBzZXF1ZW5jZWRfdGFza19jaGVja2VyX2ltcGwuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REODNGQjFFNDM5QTZGMDA2MjFFOTIgLyogc2Vzc2lvbl9pbmZvLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDFGOUJGRTQyMDUxREUxODAwQUJGMEI5IC8qIHNlc3Npb25kZXNjcmlwdGlvbi5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NURGMUU2QTYzNDMwMDk0RkRDOCAvKiBzaGFkb3df
ZmlsdGVyX3VwZGF0ZV9nYWluLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzRTY3N0EyMTY5ODY3
QTAwRUYzN0VEIC8qIGNoYW5uZWxfcmVjZWl2ZV9wcm94eS5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxNkQzQkVCMjEyNzMxQzIwMDc3NUYwOSAvKiBzaWduYWxfY2xhc3NpZmllci5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxM0EyMzVCMUZFMThFMDcwMDM3M0U5OSAvKiBzaWduYWx0aHJlYWQuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MUYyNjNCQjIxMjY4MTE1MDAyNzRGNTkgLyogc2lnc2xvdC5j
YyBpbiBTb3VyY2VzICovLApAQCAtMTY5NDYsMTggKzE3MDUxLDE0IEBACiAJCQkJNUM0QjRDRTUx
RTQzMjBBOTAwMjY1MUM4IC8qIHNsZWVwLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCRTUx
RTQzQzJCNTAwNjIxRTkyIC8qIHNtb290aC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCRTMx
RTQzQzJCNTAwNjIxRTkyIC8qIHNtb290aF9vdXRfZGF0YS5jIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NDEzRTY3QTUyMTY5ODhEQzAwRUYzN0VEIC8qIHZpZGVvX3N0cmVhbV9lbmNvZGVyX29ic2VydmVy
LmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzQjQyMTY5ODI0MjAwMjgyNjZCIC8qIG5hbHVf
cmV3cml0ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODVGNjFFNkE2M0Y2MDA5NEZEQzgg
Lyogc21vb3RoaW5nX2ZpbHRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRERCMjU2MjEyNjc5
MEEwMDI5NkQ0NyAvKiBzb2NrZXQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjJGMDFGRTE4
RTA3MDAzNzNFOTkgLyogc29ja2V0YWRhcHRlcnMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNB
MjM2ODFGRTE4RTA3MDAzNzNFOTkgLyogc29ja2V0YWRkcmVzcy5jYyBpbiBTb3VyY2VzICovLAot
CQkJCTQxNDRCM0Q2MjE2OThBMUEwMDQzNjNBQyAvKiBSVENIMjY0UHJvZmlsZUxldmVsSWQubW0g
aW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjM0RDFGRTE4RTA3MDAzNzNFOTkgLyogc29ja2V0YWRk
cmVzc3BhaXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjJEMzFGRTE4RTA3MDAzNzNFOTkg
Lyogc29ja2V0c3RyZWFtLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCRTcxRTQzQzJCNTAw
NjIxRTkyIC8qIHNvcnRfc3EuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0QzdEMUU0MzFGOUMw
MDI2NTFDOCAvKiBzcGFyc2VfZmlyX2ZpbHRlci5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxNDRC
M0UyMjE2OUI1QkQwMDQzNjNBQyAvKiBydHBzZW5kZXJpbnRlcmZhY2UuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk0MTkyNDFBRDIxMjc1OEQzMDA2MzRGQ0YgLyogc3BlY3RyYWxfZmVhdHVyZXMuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDFBODIxMjc1OEQzMDA2MzRGQ0YgLyogc3BlY3RyYWxf
ZmVhdHVyZXNfaW50ZXJuYWwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTQzM0QwMjFGNzlCMzM0
MDAzODdCNEQgLyogc3BlY3RydW1fYXJfbW9kZWxfdGFibGVzLmMgaW4gU291cmNlcyAqLywKQEAg
LTE2OTkyLDcgKzE3MDkzLDYgQEAKIAkJCQk0MUUwMkNCRTIxMjczNTZBMDBDMjdDRDYgLyogc3Ns
Y2VydGlmaWNhdGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjNGMTFGRTE4RTA4MDAzNzNF
OTkgLyogc3NsZmluZ2VycHJpbnQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlDODQxNjFGRTI0
QThEMDA0MEMzMEYgLyogc3NsaWRlbnRpdHkuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTNFNjc3
RDIxNjk4NkFFMDBFRjM3RUQgLyogcnRwX2hlYWRlcl9leHRlbnNpb25fc2l6ZS5jYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxOUM4NDE3MUZFMjRBQTMwMDQwQzMwRiAvKiBzc2xzdHJlYW1hZGFwdGVy
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg3MzYxRTQzQkFCRTAwNjIxRTkyIC8qIHN0YW5k
YWxvbmVfdmFkLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCRUIxRTQzQzJCNTAwNjIxRTky
IC8qIHN0YXRlX2NvbnN0cnVjdC5jIGluIFNvdXJjZXMgKi8sCkBAIC0xNzAwNSw4ICsxNzEwNSw4
IEBACiAJCQkJNUNERDg1QkYxRTQzQjVDMDAwNjIxRTkyIC8qIHN0cmVhbV9zeW5jaHJvbml6YXRp
b24uY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNDhGNDFFNDJDMUUzMDAyNjUxQzggLyogc3Ry
ZWFtcGFyYW1zLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEREIyNkUyMTI2NzlEMjAwMjk2RDQ3
IC8qIHN0cmluZ19idWlsZGVyLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzRTY3NkIyMTY5ODU0
QjAwRUYzN0VEIC8qIFJUQ1dyYXBwZWROYXRpdmVWaWRlb0RlY29kZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQk0MTNBMjNENjFGRTE4RTA4MDAzNzNFOTkgLyogc3RyaW5nX3RvX251bWJlci5jYyBp
biBTb3VyY2VzICovLAorCQkJCTQxRkNCQjgwMjFCMjAwMTIwMEE1REYyNyAvKiBzdHJpbmdfdmll
dy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMkI1MUZFMThFMDcwMDM3M0U5OSAvKiBzdHJp
bmdlbmNvZGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjMxMzFGRTE4RTA3MDAzNzNFOTkg
Lyogc3RyaW5ndXRpbHMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzYzRkEwQjFFNDE3NEY2MDAy
Q0E1MzEgLyogc3R1bi5jYyBpbiBTb3VyY2VzICovLApAQCAtMTcwMTYsNiArMTcxMTYsOCBAQAog
CQkJCTVDRDI4NUUyMUU2QTYzNDMwMDk0RkRDOCAvKiBzdWJ0cmFjdG9yLmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNEMjg1RTQxRTZBNjM0MzAwOTRGREM4IC8qIHN1cHByZXNzaW9uX2ZpbHRlci5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTVDRDI4NUU2MUU2QTYzNDMwMDk0RkRDOCAvKiBzdXBwcmVz
c2lvbl9nYWluLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzRTY3ODIyMTY5ODcwRjAwRUYzN0VE
IC8qIHN2Y19jb25maWcuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTNFNjc5NDIxNjk4ODE5MDBF
RjM3RUQgLyogc3ZjX3JhdGVfYWxsb2NhdG9yLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhC
RUYxRTQzQzJCNTAwNjIxRTkyIC8qIHN3YXBfYnl0ZXMuYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4QTU0MUU0M0JGQjMwMDYyMUU5MiAvKiBzeW5jX2J1ZmZlci5jYyBpbiBTb3VyY2VzICovLAog
CQkJCTVDRDI4NEJFMUU2QTVGOUYwMDk0RkRDOCAvKiBzeW5jYWJsZS5jYyBpbiBTb3VyY2VzICov
LApAQCAtMTcwMjUsMTQgKzE3MTI3LDE0IEBACiAJCQkJNDEzQTIzREUxRkUxOEUwODAwMzczRTk5
IC8qIHRhc2tfcXVldWVfZ2NkLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzQTIzMkQxRkUxOEUw
NzAwMzczRTk5IC8qIHRhc2tfcXVldWVfcG9zaXguY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzYz
RkExNzFFNDE3NEY2MDAyQ0E1MzEgLyogdGNwcG9ydC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQx
M0U2NzcyMjE2OTg2M0IwMEVGMzdFRCAvKiB0ZW1wb3JhbF9sYXllcnNfY2hlY2tlci5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxM0EyMkE1MUZFMThFMDYwMDM3M0U5OSAvKiB0ZXN0ZWNob3NlcnZl
ci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxM0EyMkU1MUZFMThFMDcwMDM3M0U5OSAvKiB0aHJl
YWQuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTNBMjM1MDFGRTE4RTA3MDAzNzNFOTkgLyogdGhy
ZWFkX2NoZWNrZXJfaW1wbC5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQxM0EyM0REMUZFMThFMDgw
MDM3M0U5OSAvKiB0aHJlYWRfZGFyd2luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg0QzMx
RTQzQUYxMzAwNjIxRTkyIC8qIHRocmVlX2JhbmRfZmlsdGVyX2JhbmsuY2MgaW4gU291cmNlcyAq
LywKKwkJCQk0MUZDQkIyMjIxQjFGODJGMDBBNURGMjcgLyogdGhyb3dfZGVsZWdhdGUuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REOEE1NzFFNDNCRkIzMDA2MjFFOTIgLyogdGlja190aW1lci5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTQxOTI0MUUyMjEyNzVBMzAwMDYzNEZDRiAvKiB0aW1lX2Rl
bHRhLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE5QzgzMzUxRkUyNDVFQTAwNDBDMzBGIC8qIHRp
bWVfaW50ZXJ2YWwuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOEE1QTFFNDNCRkIzMDA2MjFF
OTIgLyogdGltZV9zdHJldGNoLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4REExRTQzQkUz
RDAwNjIxRTkyIC8qIHRpbWVfdXRpbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOTI0MUUzMjEy
NzVBMzAwMDYzNEZDRiAvKiB0aW1lc3RhbXAuY2MgaW4gU291cmNlcyAqLywKQEAgLTE3MDcyLDkg
KzE3MTc0LDcgQEAKIAkJCQk0MUY5QkZFQTIwNTFERUVBMDBBQkYwQjkgLyogdHVybnBvcnRmYWN0
b3J5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2M0ZBMkYxRTQxNzRGNjAwMkNBNTMxIC8qIHR1
cm5zZXJ2ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNDhGOTFFNDJDMUUzMDAyNjUxQzgg
LyogdHVybnV0aWxzLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE2MjI1RTQyMTY5ODE5NTAwQTkx
QzlCIC8qIG9iamNfZnJhbWVfYnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg0QzUx
RTQzQUYxMzAwNjIxRTkyIC8qIHR5cGluZ19kZXRlY3Rpb24uY2MgaW4gU291cmNlcyAqLywKLQkJ
CQk0MTlDODNEQzFGRTI0N0YyMDA0MEMzMEYgLyogdWRwdHJhbnNwb3J0LmNjIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNERDg4REYxRTQzQkUzRDAwNjIxRTkyIC8qIHVscGZlY19nZW5lcmF0b3IuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0REODhFMjFFNDNCRTNEMDA2MjFFOTIgLyogdWxwZmVjX2hl
YWRlcl9yZWFkZXJfd3JpdGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDg4RTQxRTQzQkUz
RDAwNjIxRTkyIC8qIHVscGZlY19yZWNlaXZlcl9pbXBsLmNjIGluIFNvdXJjZXMgKi8sCkBAIC0x
NzA4Nyw3ICsxNzE4Nyw2IEBACiAJCQkJNUNERDg2RDYxRTQzQkEyODAwNjIxRTkyIC8qIHZhZF9j
b3JlLmMgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODZEOTFFNDNCQTI4MDA2MjFFOTIgLyogdmFk
X2ZpbHRlcmJhbmsuYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NkRDMUU0M0JBMjgwMDYyMUU5
MiAvKiB2YWRfZ21tLmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTc5NTNFNjIxNjk4M0NBMDAyODI2
NkIgLyogbW9kdWxlX2NvbW1vbl90eXBlcy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NkRG
MUU0M0JBMjgwMDYyMUU5MiAvKiB2YWRfc3AuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxNkQzQkVD
MjEyNzMxQzIwMDc3NUYwOSAvKiB2YWRfd2l0aF9sZXZlbC5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxRjlCRkQ1MjA1MURERTUwMEFCRjBCOSAvKiB2ZWN0b3JfYnVmZmVyLmNjIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNzA5OCwxNyArMTcxOTcsMjAgQEAKIAkJCQk1Q0QyODUzNTFFNkE2MTU5MDA5NEZE
QzggLyogdmlkZW9fY29kZWNfaW5pdGlhbGl6ZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUUw
MkM4RDIxMjczNEI5MDBDMjdDRDYgLyogdmlkZW9fY29kaW5nX2RlZmluZXMuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REODQwMTFFNDM5QTZGMDA2MjFFOTIgLyogdmlkZW9fY29kaW5nX2ltcGwu
Y2MgaW4gU291cmNlcyAqLywKLQkJCQk0MTYyMjVFMjIxNjk4MTk1MDBBOTFDOUIgLyogb2JqY192
aWRlb19mcmFtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4NDExMUZFMjQ5QUIwMDQwQzMw
RiAvKiB2aWRlb19jb250ZW50X3R5cGUuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUYyNjM2NzIx
MjY3QURGMDAyNzRGNTkgLyogdmlkZW9fZGVjb2Rlci5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQx
Nzk1M0YxMjE2OTg0NTUwMDI4MjY2QiAvKiB2aWRlb19kZWNvZGVyX2ZhY3RvcnkuY2MgaW4gU291
cmNlcyAqLywKKwkJCQk0MTYyMjVEODIxNjk4MTgxMDBBOTFDOUIgLyogdmlkZW9fZGVjb2Rlcl9m
YWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMjYzNjUyMTI2N0FERjAwMjc0RjU5IC8q
IHZpZGVvX2RlY29kZXJfc29mdHdhcmVfZmFsbGJhY2tfd3JhcHBlci5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTQxNDVGNjIwMUZFMUYzOEQwMEVCOUNBRiAvKiB2aWRlb19lbmNvZGVyLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDFFMDJDQzUyMTI3MzU4ODAwQzI3Q0Q2IC8qIHZpZGVvX2VuY29kZXJf
Y29uZmlnLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE2MjI1RDQyMTY5ODE4MTAwQTkxQzlCIC8q
IHZpZGVvX2VuY29kZXJfZmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjI2MzY5MjEy
NjdBREYwMDI3NEY1OSAvKiB2aWRlb19lbmNvZGVyX3NvZnR3YXJlX2ZhbGxiYWNrX3dyYXBwZXIu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0QyODQ2QTFFNkE1N0Y0MDA5NEZEQzggLyogdmlkZW9f
ZnJhbWUuY2MgaW4gU291cmNlcyAqLywKLQkJCQk1QzRCNEMxRjFFNDMxRjc1MDAyNjUxQzggLyog
dmlkZW9fZnJhbWUuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTYyMjVEOTIxNjk4MTgxMDBBOTFD
OUIgLyogdmlkZW9fZnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTI0NTU0QjFFRjg4NzQz
MDBGMTE4MDkgLyogdmlkZW9fZnJhbWVfYnVmZmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0
QjRDMUUxRTQzMUY3NTAwMjY1MUM4IC8qIHZpZGVvX2ZyYW1lX2J1ZmZlci5jYyBpbiBTb3VyY2Vz
ICovLAorCQkJCTQxNjIyNUQ3MjE2OTgxODEwMEE5MUM5QiAvKiB2aWRlb19mcmFtZV9idWZmZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTAyRjZDOTIxMjczM0I3MDA2QUU4RDcgLyogdmlkZW9f
cXVhbGl0eV9vYnNlcnZlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4MkJFMUZFMjBEQ0Qw
MDQwQzMwRiAvKiB2aWRlb19yZWNlaXZlX3N0cmVhbS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4NUNBMUU0M0I1QzAwMDYyMUU5MiAvKiB2aWRlb19yZWNlaXZlX3N0cmVhbS5jYyBpbiBTb3Vy
Y2VzICovLApAQCAtMTcxMTYsMTUgKzE3MjE4LDE0IEBACiAJCQkJNUM0QjRDMjAxRTQzMUY3NTAw
MjY1MUM4IC8qIHZpZGVvX3JlbmRlcl9mcmFtZXMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTlD
ODJCMzFGRTIwRENEMDA0MEMzMEYgLyogdmlkZW9fc2VuZF9zdHJlYW0uY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REODVDRDFFNDNCNUMwMDA2MjFFOTIgLyogdmlkZW9fc2VuZF9zdHJlYW0uY2Mg
aW4gU291cmNlcyAqLywKLQkJCQk0MTc5NTNDQTIxNjk4MjRCMDAyODI2NkIgLyogUlRDVmlkZW9F
bmNvZGVySDI2NC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxMDJGNkNDMjEyNzMzQjcwMDZBRThE
NyAvKiB2aWRlb19zZW5kX3N0cmVhbV9pbXBsLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUz
RjEyMTY5ODQ1NTAwMjgyNjZCIC8qIHZpZGVvX2RlY29kZXJfZmFjdG9yeS5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDREQ4NDA0MUU0MzlBNkYwMDYyMUU5MiAvKiB2aWRlb19zZW5kZXIuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk0MUEwOEJCMDIxMjY4MUM4MDAxRDVEN0IgLyogdmlkZW9fc291cmNl
X2ludGVyZmFjZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4NUNGMUU0M0I1QzAwMDYyMUU5
MiAvKiB2aWRlb19zdHJlYW1fZGVjb2Rlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxMDJGNkRC
MjEyNzM0MTYwMDZBRThENyAvKiB2aWRlb19zdHJlYW1fZGVjb2Rlcl9jcmVhdGUuY2MgaW4gU291
cmNlcyAqLywKIAkJCQk0MTAyRjZDQjIxMjczM0I3MDA2QUU4RDcgLyogdmlkZW9fc3RyZWFtX2Rl
Y29kZXJfaW1wbC5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUM4MzFGMUZFMjQyRTYwMDQwQzMw
RiAvKiB2aWRlb19zdHJlYW1fZW5jb2Rlci5jYyBpbiBTb3VyY2VzICovLAorCQkJCTQxM0U2N0E1
MjE2OTg4REMwMEVGMzdFRCAvKiB2aWRlb19zdHJlYW1fZW5jb2Rlcl9vYnNlcnZlci5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTQxOUM4NDEwMUZFMjQ5QUIwMDQwQzMwRiAvKiB2aWRlb190aW1pbmcu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzRCNDhGQzFFNDJDMUUzMDAyNjUxQzggLyogdmlkZW9h
ZGFwdGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM0QjQ4RkYxRTQyQzFFMzAwMjY1MUM4IC8q
IHZpZGVvYnJvYWRjYXN0ZXIuY2MgaW4gU291cmNlcyAqLywKQEAgLTE3MTQyLDcgKzE3MjQzLDcg
QEAKIAkJCQk0MTkyNDFGNTIxMjc1QzMyMDA2MzRGQ0YgLyogdnA4X2VuY29kZXJfc2ltdWxjYXN0
X3Byb3h5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzODUxRTQzOUEzNTAwNjIxRTkyIC8q
IHZwOF9oZWFkZXJfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhDMTQxRTQzQzNC
NDAwNjIxRTkyIC8qIHZwOV9ub29wLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE3OTUzQjcyMTY5
ODI0MjAwMjgyNjZCIC8qIFJUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5Lm0gaW4gU291cmNl
cyAqLywKKwkJCQk0MTc5NTNFRjIxNjk4NDIxMDAyODI2NkIgLyogdnA5X3Byb2ZpbGUuY2MgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0REOEJGMzFFNDNDMkI1MDA2MjFFOTIgLyogdnEzLmMgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0REOEJGNTFFNDNDMkI1MDA2MjFFOTIgLyogdnE0LmMgaW4gU291cmNl
cyAqLywKIAkJCQk1QzRCNEM4MDFFNDMxRjlDMDAyNjUxQzggLyogd2F2X2ZpbGUuY2MgaW4gU291
cmNlcyAqLywKQEAgLTE3MTY1LDcgKzE3MjY2LDYgQEAKIAkJCQk1QzRCNEM4NjFFNDMxRjlDMDAy
NjUxQzggLyogd2luZG93X2dlbmVyYXRvci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4Qzk4
MUU0M0M2NjAwMDYyMUU5MiAvKiB3cGRfbm9kZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
QzlCMUU0M0M2NjAwMDYyMUU5MiAvKiB3cGRfdHJlZS5jYyBpbiBTb3VyY2VzICovLAotCQkJCTQx
NDRCM0Y3MjE2QjA5Q0IwMDQzNjNBQyAvKiBSVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2YXRl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhCRjkxRTQzQzJCNTAwNjIxRTkyIC8qIHhjb3Jy
X2NvZWYuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRERCMjU5MjEyNjc5MjgwMDI5NkQ0NyAvKiB6
ZXJvX21lbW9yeS5jYyBpbiBTb3VyY2VzICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29k
ZXJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCBhYzY0NDVmYTAwYzcx
Y2RkMDE0NDgxMjAyZmNiYzllOTFjMTc5N2QzLi5iYzEyYjZjZGYwYTk4MjdjMDk0NTFlNjkwM2Iw
NjM2NzUyMGE3OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVv
RW5jb2RlckZhY3RvcnkuY3BwCkBAIC0xODYsMTEgKzE4Niw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKICAgICB9CiAKLSAgICBpbnQzMl90IFNldENo
YW5uZWxQYXJhbWV0ZXJzKHVpbnQzMl90LCBpbnQ2NF90KSBmaW5hbAotICAgIHsKLSAgICAgICAg
cmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsKLSAgICB9Ci0KICAgICBpbnQzMl90IEVuY29k
ZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLAogICAgICAgICBjb25zdCB3ZWJydGM6
OkNvZGVjU3BlY2lmaWNJbmZvKiBjb2RlY0luZm8sCiAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHdlYnJ0Yzo6RnJhbWVUeXBlPiogZnJhbWVUeXBlcykgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IGU1ZGFiNjY5ZDgyODdlYmQzMGUxNGVkNjE1MTdhOTlm
YjEyYzA0ZmUuLmMyNGRjMDc5OWQxNDA1MmI3MDI1YWFhNTE1ZmNlODA3YmY5YmFkMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQCBBTExP
V19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgogI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvYXN5bmNyZXNv
bHZlcmZhY3RvcnkuaD4KICNpbmNsdWRlIDx3ZWJydGMvYXBpL2F1ZGlvX2NvZGVjcy9idWlsdGlu
X2F1ZGlvX2RlY29kZXJfZmFjdG9yeS5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvYXVkaW9fY29k
ZWNzL2J1aWx0aW5fYXVkaW9fZW5jb2Rlcl9mYWN0b3J5Lmg+CisjaW5jbHVkZSA8d2VicnRjL2Fw
aS9jcmVhdGVfcGVlcmNvbm5lY3Rpb25fZmFjdG9yeS5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9hcGkv
cGVlcmNvbm5lY3Rpb25mYWN0b3J5cHJveHkuaD4KICNpbmNsdWRlIDx3ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYXVkaW9fcHJvY2Vzc2luZy5oPgogI2luY2x1ZGUgPHdl
YnJ0Yy9wMnAvYmFzZS9iYXNpY3BhY2tldHNvY2tldGZhY3RvcnkuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRD
bGllbnQuY3BwCmluZGV4IDczYjAxOTY3NTk0ZTBhZTRkNjJjYmZlNWRmNjZjNzFkN2YwMGJhNWUu
LmM1OTk1YmM1MzI1NWZlMmQzNzZmYzQ1ZmJmYjllZTYzMWVlNzNlNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29j
a2V0Q2xpZW50LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIExpYldlYlJUQ1NvY2tldENsaWVu
dDo6c2lnbmFsUmVhZFBhY2tldChydGM6OkFzeW5jUGFja2V0U29ja2V0KiBzb2NrZXQsIGNvbgog
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUodmFsdWUsIGxl
bmd0aCk7CiAgICAgbV9ydGNQcm92aWRlci5zZW5kRnJvbU1haW5UaHJlYWQoW2lkZW50aWZpZXIg
PSBtX2lkZW50aWZpZXIsIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgYWRkcmVzcyA9IFJUQ05l
dHdvcms6Omlzb2xhdGVkQ29weShhZGRyZXNzKSwgcGFja2V0VGltZV0oSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKSB7CiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkp
OwotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1NvY2tldDo6U2lnbmFs
UmVhZFBhY2tldChkYXRhLCBSVENOZXR3b3JrOjpJUEFkZHJlc3MoYWRkcmVzcy5pcGFkZHIoKSks
IGFkZHJlc3MucG9ydCgpLCBwYWNrZXRUaW1lLnRpbWVzdGFtcCksIGlkZW50aWZpZXIpOworICAg
ICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1NvY2tldDo6U2lnbmFsUmVhZFBh
Y2tldChkYXRhLCBSVENOZXR3b3JrOjpJUEFkZHJlc3MoYWRkcmVzcy5pcGFkZHIoKSksIGFkZHJl
c3MucG9ydCgpLCBwYWNrZXRUaW1lKSwgaWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
U29ja2V0Q2xpZW50LmgKaW5kZXggMzYwYzJlMDFhNGYxM2M1ZTgwOGZlZWVkNTIyNjc3MTQyMmVm
ZDE0Yy4uOGYyMDVjZTAyOTcxM2Q4YmEyMTNmMTQzYmE3MWJiMTE0NzUyZGVmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
U29ja2V0Q2xpZW50LmgKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIHJ0YyB7CiBjbGFzcyBB
c3luY1BhY2tldFNvY2tldDsKIGNsYXNzIFNvY2tldEFkZHJlc3M7CiBzdHJ1Y3QgUGFja2V0T3B0
aW9uczsKLXN0cnVjdCBQYWNrZXRUaW1lOwogc3RydWN0IFNlbnRQYWNrZXQ7Cit0eXBlZGVmIGlu
dDY0X3QgUGFja2V0VGltZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKaW5kZXggY2UwZjEzZGE3NTk0YWQ2ZmFiODcxNDdlOWRlMmQ1OGI4MmViZGQ5My4uZGQ5
Nzc5OGRhZWE0MGFjZTYyOWFkOGYwYTNiNDExZTQ5MjhkM2Y4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViUlRDU29ja2V0TWVzc2FnZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01hY3Jvcy5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9y
dGNfYmFzZS9hc3luY3BhY2tldHNvY2tldC5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9s
b2dnaW5nLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oCmluZGV4IGQ5ZGVhYWM2MjU1MDMxOTRiZjJkZWVm
MGFiODU5NzhjNzA2YzZmNTguLjZlNGJmZTJiMTY0MTljYmJjNTFiODBkOTVmNzU5ZWZlMmVkZDky
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDU29ja2V0LmgKQEAgLTQyLDggKzQyLDggQEAgbmFtZXNwYWNlIHJ0YyB7CiBjbGFz
cyBBc3luY1BhY2tldFNvY2tldDsKIGNsYXNzIFNvY2tldEFkZHJlc3M7CiBzdHJ1Y3QgUGFja2V0
T3B0aW9uczsKLXN0cnVjdCBQYWNrZXRUaW1lOwogc3RydWN0IFNlbnRQYWNrZXQ7Cit0eXBlZGVm
IGludDY0X3QgUGFja2V0VGltZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
U29ja2V0LmNwcAppbmRleCA3MDU0MTU3MzM3M2QyNjkyNzEyMDJiMDYxZWI5YzE1YzhlYzc2NTZh
Li5lMmM1ZGY1NTdjNDAxMTVkZGY0OGZkNDA3OWFmYjk0OWE2YzI1NTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
U29ja2V0LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIExpYldlYlJUQ1NvY2tldDo6c2lnbmFs
QWRkcmVzc1JlYWR5KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcykKIHZvaWQgTGli
V2ViUlRDU29ja2V0OjpzaWduYWxSZWFkUGFja2V0KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBydGM6OlNvY2tldEFkZHJlc3MmJiBhZGRyZXNzLCBpbnQ2NF90IHRpbWVzdGFt
cCkKIHsKICAgICBtX3JlbW90ZUFkZHJlc3MgPSBXVEZNb3ZlKGFkZHJlc3MpOwotICAgIFNpZ25h
bFJlYWRQYWNrZXQodGhpcywgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgbV9yZW1vdGVB
ZGRyZXNzLCBydGM6OlBhY2tldFRpbWUodGltZXN0YW1wLCAwKSk7CisgICAgU2lnbmFsUmVhZFBh
Y2tldCh0aGlzLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBtX3JlbW90ZUFkZHJlc3Ms
IHRpbWVzdGFtcCk7CiB9CiAKIHZvaWQgTGliV2ViUlRDU29ja2V0OjpzaWduYWxTZW50UGFja2V0
KGludCBydGNQYWNrZXRJRCwgaW50NjRfdCBzZW5kVGltZU1zKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356841</attachid>
            <date>2018-12-07 14:59:51 -0800</date>
            <delta_ts>2018-12-07 15:38:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192316-20181207145950.patch</filename>
            <type>text/plain</type>
            <size>63231</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA0MDA0M2Q3ZjMwMWM3YjZkYTU1MGMzMThiZTI5ZDQ1NmU5ZDM5OTAzLi4zOTAw
YTZlM2EzNDlkZDNiZWJiYzM2ODU4ZmNmYjY4OGNhYWU5ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0xMi0wNyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB1cCB0
byAwZDAwN2Q3YzRmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTIzMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2NTYzNzI2PgorCisgICAgICAg
IFVucmV2aWV3ZWQuCisKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL2RhdGEvdm9pY2VfZW5naW5l
L3N0ZXJlb19ydHBfZmlsZXMvcnRwcGxheS5leGU6IFJlbW92ZWQuCisgICAgICAgIFVubmVlZGVk
IGZpbGUuCisKIDIwMTgtMTItMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFVwZGF0ZSBsaWJ3ZWJydGMgdXAgdG8gMmZiODkwZjA4YwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvZGF0YS92b2ljZV9lbmdp
bmUvc3RlcmVvX3J0cF9maWxlcy9ydHBwbGF5LmV4ZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL2RhdGEvdm9pY2VfZW5naW5lL3N0ZXJlb19ydHBfZmlsZXMvcnRw
cGxheS5leGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmOTM4YzhmYjIyMGY3MzQw
NmUyMzI5NTgxN2U3MWM1ZmRlNThkNGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwg
ODcwNDAKemNtZUZhZHdmKlkpaS18VG1RMGRLJk9qMGY1RnR3TjdGMEFNJTc5RD0hI3owM2tVKV4y
XiVBRz9RVlFvRjNXMTN5CnpzaG4mX2Q4K3BFUkkzISorQ0ZfKytqX3l2NkF9Xj16Klo0X1klRT83
c3FGRWZNIV9WJiRoX2FSJnpWV0VLSz1kUAp6ZjhJYWQmeD1teG9WQ3xwZCtvSz9VVkg3ZUZIXkIx
REFeQFJhIVJ0NE5KIUVTSmt2a0ZHfWU2aFNBVVc1Qzlqay0KejtufEc4cDFaQGdfXjs8fi1NVGRW
LUwqeGwqTD80YEhRJXxqPXVVTzVRZ3FYO01RaFolaXF5TXF4cGhzXnZoVXRpCnpkUFIwLUB3OShN
X1d6fipwT1ppXkFXNGdEWmZWWDNPKjUwRjkrR2sjU3ZENzVaSVRvdT9aN3s4QCZnI09MJWJ1Jgp6
aTh1T317RmQ0c2w5WG5gQFB2UUpTWSYrQDRnMz5kVE9IRXZeYiZETTE/bCpINjQrS3oxV3heWCN2
JD9TKVowSGwKenRWYUhTaFc+di1FPiYoX3VMdnlFaFpzN0FrSHZRfmJDRCQ3YzxDK1FRTkJYfWw3
a254U0o0WjtoeUMrUVF2MFJLCno5Y3UtTVh4KFZsPCpJTU5UVm9MPEpuJH4rZUR5ISExdXk7WEZ1
Vnh4K2B5bXlQazg9SVp5a21RbkZATmR6WGZtMgp6K0JHKjVnSC1PNTdUJW4xIUBLcDQ/LTMmNUxI
MUcoelVUZkVVSiVnI193V0EjMl5pa2BvMkhrU2wrM15HeDx5LUsKekdlKHEyK2IrWU9qemprQ3JU
RElEa2hzPF9ObypmKXhKOzUoYUF+Mz5AdGc2OGdiUUlZWVF3JFdHSjJeNCo3ai0wCnooamRocXo5
fnR1OGw7eENLWTE9ZG8hY20oXlR3QkA7NGBtOyF2QzJpTnU0aH4xP2dxJlE3V3tWUkdfcHJiSF5E
Iwp6X30+elZnaDtEd2FQelNzOHNzKGpvN0p2bj8pYUp6byhEb09uM3pocl9eMTBOJCRJUl47fChk
WVdCNzBKek1ZVj8KekwyMiMzP1RBeX1keSUpKERzYXQoUj5xJEtGe0BufTZHVlooYEhCaU9AWWhP
dzhpfTIkRU1DNDc2cyk5NU4pcG4jCno8dSoySXZjI1BDYiNBUkAkNV9BfTNfcEB6Q1daVG96flol
d0J1VlM/R30hb0BQUk9lK2lFfmdvPXl4OHg8YmVAPgp6PkhSKExjaHElQyZ3dXhoS2UreUQrN0ZD
YmtfMC1UOGRtM1NJaz5Ub2IjQCVldUdlLWY0TTB4SDVfWV5uPmk5VUQKejlxMmZtRXgrJnNmO1Ix
MWlOQz9CZGFiUjdrbU5AP3Y9NDJ9OENeX1plaUhSKlg+Wkk1SjRiPGBLc0RIPz8tM2EjCnpZMVFA
TVhlO3JwYit3bmFtK2xZTUVZa3pXXmxIdjMrfGpfR1VVOEBhQjt3PCE3SChGM3NFWGVSNSE3bGtB
RTBKYQp6KEBXYzk4TDxBXiVtfV45NUFLN1l3Wj1ufHs2SUlKU2x5d0hrRnVHem9FVldgYyRuQyRs
MyFyTmJ0TVpOR0hXSzcKelI/PVVaMXBXLXlPQmRzLTNTfGZSbmBmd351RUY7VGleR30zeWM1aThV
NGB9OSVWd1N4T2cjaSlHPEF+ej5lKmNUCnpCPVRae3tMfjVYXjF7OTx3IX5TPGtLIWZSS2kzdmYo
c3hgOHJWUTdQQjc2bHxqa304UHJOcWBISHRvYUJtRXBeJQp6ajM8ezs4M299Z2RVK1R4d1dTQXpA
YXdnIUJfKnJlQl9YJFYrUG0+e2NEbXplSHRUNj5yfEpZKnsoUHooe35jXksKeldZeTl4Z21WbDcy
bTNNQS08UTd5QjNpU1R6MUh6ekhmc19mN2ZFcWxMNEQ4dHFJSVJ4e2lXQENKXl5FWXJpe2xeCnpt
RDZUIUI+XnslWEpgfng1JExmJVR6M2BJZ0NNV3g2OVVWb3paWDQzKUNHST4rRD1tXm4pbGx6c1dx
KkdyKWheQQp6K01yIS09PlJ+UiotVHtSbVNeJDhZTWZSNCNwOUJzMlk1WU9Wc0hBOHEqPSotMlQ8
IT04ezROSC1uXnl5Q3xseUwKejxVYSV+Nyt3aylNRlUreWUpfXFfdj9wNUtyQzBacz8kSW1XWklC
WWB5OXU/STR+YFp8RSR3cGk/OyY7O2JuNFp8CnpTT3EhP0ZEWX1FPyQtbkQyTHRWYClrb2o7e1Ah
Ylo9RG9Vbz8qO2JwdlkhTERgazJHNjJtMHYhYT1lP1VAN31xdQp6SCskdE1LUDRaVz9SPnczPVpt
eHhOaE5IKTlGPDleWnphQHl0bTA1Kmh5eytacHUzN3lASmR1ZUpHNDF5aW1XUEgKeihPMWR1aHp9
eyphJSVHQHMpKnNxRiQzSSslMXhnUENHWkZOJGFCQ19VIytoOCkre1MrazJaRWBkbEZ5JWUmRWZM
Cnpsa0NtPTJSZFNRKV5xJXFZX0ltQTxNPmxJdFpNTV40LTFoSS0zYmcoSj5Qd2lWQFBIOVF7eFBM
O1NqQVRLJlliVgp6PCkhO3MjN3R6bkl1MUZhJldRUUhMJHRGVklNSENVZ3R+b3s1VVIwfHoxQnVW
cDtFfUtpKVFaXz1yP0lvbkk+VkAKekE8N3h9Oyh3c3E5cTV2cDhjK0NWJWhKWm9yYVEkJEJHOUti
OStRO081SHFYaig9JURjMzROaUhnanZuP3B1MGZ8CnpoMjEwbGtgUTdFb0godF5UaVNsWnNfV1Q1
VjlvSGFTWG0oSyR7PWg/dkB5PDljZW9ZdXQ+SV9qYiZAc2RNSVR2Rgp6IX5ZQy1xODB7blZqSTRW
MT09aVdWQGNEajJxLWo4KUVXbitQM0pUPDRuRnc8bzc5K2hGZmlDVkdmcXVFYG5eSi0KekV5ZnNE
Rjw4bWNnVyheN3dyTytzM2l7cT9ePGRTcUBCO3ZjX31ja2BLZmsmUzRBI083Nk44YWlnMS19YD9j
azYjCnp4fCE8ZjRrVD1QVjZaMX0weEJmJlRPajVoN3huOVE4MXE7YmZaRk4kJUBAZWM0OVNgP09L
JCM1Sm1reUd1WlZ7bgp6ckJwSzxOLSp8O2NuITxWZS0jZ0l4JW1PeztFPGM0dDttYXFVKlJHNEpw
UW8hKW5td1o2I2hGeigzezttKS1RNFkKeiZvRnxLJCVzOE40Q0I7S2hjTHp5MXtuKU80WSM0MU5o
Jnt8THpRKUpDJXolIzx3XkwkPnI2cXYxWGdRfUdMfXQrCnpSYE8rSldzTkkoVHgxSFUrUSN8WUM/
JnxaUURHMj1rPkJHWWB6e2hRKnIrTz1kbEdyViYhRXRuV3FlZEZtRkhvLQp6ZSExbTY1Y0FEY2tY
P1Q4N29aaWJQT3hseHRxTlpWYzlgP1FBVV58ejF3T3s0NWsjd0o1VldaTWk3anBCV1N9TH4KekRQ
fUloMlRyJkhDN0YlO1gqcCV+dllibChwcTI1SG1zMSVmYnhRYmV6fno1T3k5Zm8jNFN6YFFPT15s
IWd8cmJhCnozd2ZCR2RHJmxNdDNmaDMlTy1KRUA+aSppMSNARz1VIStSQ1RhQFlzZmt2fTE4ZF9t
Q0R9WV92fDEhTmJORGNNfAp6Sk80MmlKZ0VDeDV7PGNHK2hgUGhwdSNNPW9PMEgweUJONFp6TVJt
YClIYH5EZEAzSTZ3LWNET1UyZ3NYI01hO2kKelRVUF9iXzRBUitzc35IayFCeEhFWn1tTWNnND9D
LUd3QFojMlJeMFQpQTFhd0lNTHYmWTtjQ2pZQk5XV3ItM2twCnpvRXZyJTg7ZFBBVVVgWXdAZTFs
Snd+OE1GMGZDaUlTbSM/PEtlRGh5cWgoZHs8fE5pdyFqZGVrKXI3VDtxIXtFOAp6VWB6dCplZW5G
R0wrVjhoSG5lP0pMdVB9LWtwSkZme19gaypgKGpmaFF6LXZqdDwkTlV2Qzl2PDFsPyhud21telIK
eiRuN3pRKEg8OEtYeWtTXitgPW5JMEtLJW9BO0F8N0t4Z0peWFNeR348ZSNVWnJgfFBee0xMWmpi
TUdBVj9XVjU5CnokVmlAKTJpQippQXM3dWo3VWJpdXdPVXdwWXI3TSU2SlIlNzJDbCthOyFwSFol
MkxKdWVWSVV0TShNU1pQZVV1egp6MkJSKFg3S35PdVI+aSpuTUNnZWtzUWV5T1k4cT99dXNYLThf
JiFyZihmTEg7emFiRzt3Mkg0aE11WFV+ZGFfeCgKejhaWShlVTBTMThRczUxcCY7eE9pZClGUStF
RjF0a1Y3Y1A0TzE+VnAxND5XcWh2JDwzUFlidXdFeCFPOCQxMzhMCnpKZFYpezwxd1h1QWtzVzcy
YkhuZjJCKU92NSRTUiNETno7UTRaTTIyKytOeWw4ZnhNRDROMXQ+OzEyUFREZWolNgp6P1okUVdx
JE4qTks4P0hVYnE4QW5yfE80ejdldmVMTEMhM3E1UDx3YlpkRyY8OUU4OGw3QSEqcVM+YW9XdC1t
WnAKenQ+aE9SPFpffkkkbUZWP2BrcGtxKU5tTyYmM3RuKTwpQzVWcHoxPSk3JVJJU1FaIV8lOyR0
Mn5SeU1lZFhOclI2CnorNlF7YjZ2M1peI3czZ0A4IWpza2FzTjx1QzBFRWE4X0BTKkpabzlDY1oq
JD11P1hXLXR2KG1eZn5wOFVTaFdXIQp6JTxhcUVtX3ZWNm5mYVoqKzBNckY5YUtoTFhLOHl+WFEt
eV84UHRLRF5FQ2NLdS03emdhRXJsR1puIUJyY1UtV0IKenxNdCY5OWh4P0gxJDw8fiZDIX0wdEQ7
TkZEKX5jWjUqdnFsXntsJHleMCFne29rVDR+YX0rQnRAQ0NlVDhxM3YzCno4KlgtNVdjV21EYlc3
P09sJHBiX2UrUFUkT0Z4SWM7ZHA7U1lJUGhgdWhlRHxOSyhmKTYhQU9xc0smaVhFWnFTJgp6QW1v
S2x3I2RWIzUqa2F9UEc0R01vfT9eb2tmUC1FanF7cWF1VyZQKVpMWDc1eVYqamdaSGM+U2xVZEtx
IzlVfDcKelVFKDxqeCorQCokYDRsLXB5eW5MS202QiE1K1gyaU5TPEUzIyEwU1RqaGpfP3pgPkZ7
diRnQFJLRFIpeEROSSRuCnpGazA+bTNMZF9QI3h4ITBXYVc/TylBYUZ0R3ZMdj05P0BYUXhlRUNk
Q1BDSEJTNWR9VT00NTBxY3RWez4pI3U0KAp6b24pPVVTdDtmZCp+dD09eG9rOGxTVys+bD1kZzY8
Y2JDQUtwNmk0ZSV4SWVIcSF2dSVHO0k8TzglS3Z9UDgwcWkKeikkP3d1PWd2UWhkYWBjZ01tQip0
Xm1MWF9eMy0hcGsrWDcpWS0qYWUwbG9TUFRlKntreXRhQCNzVzYjfGElYT0rCnpMWGE/d2l3WWBQ
ZDBzRllMS0U8PnNycGBtQnw+PyV2NVRTRm1iMD18bkBPcjckJmE+Y2hpcChGKFNLTSk5eDFRdAp6
Iys8Pm5aRTJ0IVc/VUtIeTQqWHgmYTNBNWYqdilhV3ErZ1dUa1RYYmJzSG1COzRwUTIlPW9tS2VX
KiE3OWJla00KemVJK3VZZiUwI2hpfDsqcF9BVEA5LU0qYT1JJHZCKWlObmF0RWE+ciMqa3NwNzJ6
cDxieWl8KEw/MWM7VUdFdzc/CnpnWXtAMjkmOH0qQWN6O0wqUz9uaD5mS3RTTV5mRF47RUJDVDRW
QX4rJGZTIWpubzIkY0FqX3R6PSRVI3hlZnk+bwp6MyFCbihAIWRWIUU5dipiMmxlUSktVEUzMnl6
cjNJJFloem0qQT0mNCt2VzUqKV9sb3dlWUAxI3Z7VX1JSHxkSnoKek9nTX1jcVN6JWNXKXMrQSZG
T254OWM1KFQkKnRxZiYkMVR5SUBhX2h2Sjk2V2BRT3RUPEMybUEyY2FVYStsK0soCnotJWdCRkBy
bEdMazNva31LMDBXSE1fJmxwUXliQUZuJWFjYjx1JXgje3cpV0NYcXFhOzF5ZzkpT1pRYXJPdzJN
IQp6M2MwJE1nYDlkMjdSYSlMbkM2SDAxISgrUUd8Kl9sPT9JOXQrXklZR2UzJjVDMn1DNWghfj9i
Nyl+JTN0UXheeHgKem9uYH1WNTY+QGBWbTRxZVlvaXYzWlk9aGAyISlaM3xNR0BxWlBjPlNTQm1x
SEpPcmQ+MkN4OXIlcD8ke0kqV1ZlCno2ZyRiO1cpbmhESmk9MkU/ZEp8Zzl9Jm5eKEZja1BLJmNY
YDF3bU5ZTkIjakdgJiMtTkZYOXo9b08lOFF1Kn5RMQp6R0NUKnZDI2N0bUsqLWVUcVN1Z0p6ckNl
alN6ZGIzU1BULUxWMkdhd1JIKktaPSthXzBMUVd5WGxnNjJ5MG5sNysKenk8MVg+TFR0WFhHNylz
Y0twNDU5YTVnK2psa1IpaDIpZ0NJMzdlZlF7aE5RTSVfTGRDanJ0TXxSb2RSdlJwM0JtCnoyeGht
KE1HND4+M1FhT1pkIWVQR2RIejw8cVk2P2dnVXN7ajlyVkRRa0ZMZ2RWanNxTGJGNStrRlBhOzt0
V1lIQgp6OWBWJiRrKztSbmpBI2o5bHNnPGgma3kmZEFJPV5QWDRINXwtRWl8fUcjUWpmPEYrKzkl
OThuVmF9KEghVlNFNWoKekZXcmNTNlQxQUc7dHsmK3FOWkgpOE94X3stIThlTzZeUEpsUykqKXZW
R0hGKjJyUUhXM2ImeDQmISN8NFBaYTFJCnp5PCMhLWloME9NbTxibV8mNzVJcSFgVjRXS1BWQENC
ai1yVW5UPyE7blEjI2xJVXolPj54MzFtUWR8K0FGdjlSLQp6akpyYm89OHdxUGlFRCFpXn5NbGlm
SCRafnlXKExyOSt0XjQmNTlmSXdWNWw/a2BqQ2Jgc04hbSg4WiRGQyEhVUQKelJoMSMkUUhhLUlE
MTBOKndoPTsqKjg+QzU4VDFFX0BNcTIoN0tJPWZhPClHK14/P1FEKHoyNE5Ua3dTKio3MzJ1Cnpo
V3tjSEVEVVpWNUYodGxISUJ+VUdYQ09OTiFtdXBFVDUoK0NEaUMwaHdXNz8tQD9OUzVGSDFxXz03
LVkqI3JpVAp6TChGUFF2TUZtIyRBfFcxaigwLSo0cXpaezgmUDhXTzdiYnVDSjFlKE09XnY2bkg/
ZEVTP0FlRmg7NVZ2aSVXQVoKejhwaTVnR0w9Knh0JmRfQW41OXNPK2F2ZkJ4I2tpflFDLWI9dj9s
XnlxWkUxPnh3PDM/bEwkNTs5MDQ3RXt2Uk1aCnpOSVN6c215QzR0IU0yU0VROXxUdSV3SX1TUkFl
Uip3NWpEUiZGNy1CbHgkelJrYGR5NkxKejduV1J+dHJRIT0odwp6aWVYUXJ2KGRoNGNqSEpWR2Jm
OCZlVG4qTVdJZTNLWHlxU0Zyb3EkfmE0VTVmVTdaaVZ2PXhsQnh+RkhWcW5oXzkKemQ5Q3dwKC0r
IypPcyhDbj9Yb3hUUUlEdW9MRzJyNVVNdEVSWC1lTlczUykoPTN6NEkqPlNeI3hed0NXQVJrK25M
CnpxOC03UityLXNKbFFYWCY3QVhvUiZmRiR2WU96XkUzX09II3FkKmJUUE1BSmt0TzZrNjRyTCop
PWkkZ2J3bzRScAp6ZU88eEBXVFBGPGh5OWBmMnVXXnMhSjtJcUZTaVc5Zih+V04pRVd6Y2Ercldx
TnpeY15mZkU+Q3ROU1B7Y0ZlSE4KelpCMSkjU0RaNnVzJGEze0pSTEpUen5lQGt6MFVGfUwmQElD
c3YhVE5zWSVmRGBIMSoyWCNUVGYoNHk/XjVgbHlzCnpuVTZeWDJ2UWdAel4jQ1ZROT5hYkgzd1pv
MWxpKHgxdms9cjApMz1XVDQyemQyKmQ/QigweGQyPzMwdVFUSF5eeAp6RSFTcVFNYEtDS0k4bD5J
JXBTdUoxN01vaWQjQHl8X0x9VGZAZSpSaDx8MUFweiooUmleRlNoMHZmTnlTa3w7aEAKejlaI2Yz
dF80NnhJLS01ckp4KXBTJSs7cm9tZEIwfko2NGZQO0Q5YUY7Km9vOG0jRjdaVCtrTjhnZF9hTlJQ
bT12CnpNZSlXWUR7KFlpe0JUQHVHdHU1cHB9aSYwQD5uKThSPkBuaUVAKkxTQCkpS2pzWG5JTj4k
SXMyTFdkZm0rQUw0Zwp6TWVycSZaWSlpKlJFWEF7IXtVT0V0ZyVUa3RUcCphN0VuQT9mYXIkUHV8
elNRZ3BxJjwlcCQpY1ZUa3NzOyRJO1EKellWbzVyN0QhT3JpVU1qbzgtPj9xQlY0Uz1edDh+VSE+
NVM3RVgwVGVQd1d7eWwyUiRmTHN+WFFea1RXcWleLXEyCnprX1NZSGx8cyZVQ2FYWUYmQ2BUWCQ2
Rmp6cWg2az4lYGRNPU80VmRnRDcydU1SVC17S3A9fWFxY3xEQEp6WW5tZQp6U3QzMClDUk1sQSVx
PG0xNjlQZVEzbWs+IzxFYFI8NSY9ckxTIzt6WU5ybU09OW4mST5OMmphUGwzYjI4R29aUUcKenEp
UE9kakxCXmtOQT5LRFhrSnM2emt6N2NwUXA8JEtOQzsoPkZPalExPXVsSUNzSGRrQTtwdExiQ01A
WmllUmslCnpYUVhPaiFxbD4xVHZRd3RJeyFlNWl5dkdyIzNRIz1BSnl9VDNrVylMJjIlLWJKOCpR
bWsmQ354ak8/QDJDc2BzQAp6MzVLNGNweVhwOUVRSjR7QTtLZXNwSFJ0OUEkVyF7JXVJZ35UfUtN
QmNXVUg2eWFRan0kUzdrUzdAWnV3V3huSTwKekdGZi0meygmI3hJbWVQdTx7ViZYLTNDNlZUWUpy
QklKOGNDaTJuemlIOFQ1T252TXNgRldtI25YezU8KmB5RzR6Cnp0PXtKUz5JdjJYcUVqRCVibDkl
c1R6dXpOZFpsVWooP28qaWtBJT9pNXJ+ZE9mVGRQWGhzU21mN1JmdyNWfF5eVwp6NzhTbm9DdjNF
eWdVRTlfcmhEWitrITgoNllqU1ArU1lue19mLTx5fFQ+U3ErYiVYcTdRQW9aaF52ZTYjd0ppemQK
ekNQPWZ8e1YmSWhTJmBFPSNtVWwpNFF2IzwqTklHKmtpVj40ejxTX3JpPiFxaFlEUVdeamQkMmtM
JTlPVHUzcFIxCnp6e3p3fTFTPmhIUnZNbkpwKGoqJTZeeTwpVXZgUnkrTGxsN0BkJFpmIWh4QXdy
KHRKbFZofWZkQFh+fWFaSlZlPQp6O1NRc1M5Y1MwMDd6WFZoI0RHI3VBPEVDYHBAd3QlKCU+Qig0
RG9tQWQ3ZmAzaUZadjBkOFk4Xm80UXRHOzlEOWQKejdvTDBtRjh0eEs7VDxWOzlKckwhaz5aYkV7
fGVjeVNZcnRnc2lpMWxSPDBLRHpySTYwX2VaSCo5VT5Qa0tLNCtxCnpybW4zWlB2ckB7SldENnZM
Uk8mKkpKN3MlNTsoKTN3WFYwY25JfU02I005aHolVHZJTTJIcHp0N2J2ZERzXjV9Iwp6UmBqd0NK
XnZAOUgoMCU+P3lIST5TMWA2ZTF8V2FBbW54PT80RypTUjlHfExLRnxpMjg0e19aaitUP0xiK2RG
VmMKenN7WCZFKGw4YGVfdngtREw2d1pDPm5TfHdgQV5lcF4kOTN1e19oQm9QNWVkIUpqaV99TiNP
dD5tfUN4N2hoVDheCno+TFpEJWdxKVp2YXQ4b0JRWCZZQyVPfFJRKy02Qn54VHNSUFY+bGBUdj81
VU91WEZ6I3glcVJPQGFGKmp1cys5Qgp6bDd6bjIqPnB3KGlaVCs4cnJTbEpBc0xhMkF4ZSpiKUpB
WnVSayE+SClsPFdOZ3dZRXNpbXZVYyE0ISRGNWRqK3kKej5sQnMleFQ1YnkyK09vOTt7NkQ5R3JY
QEB1QytVfkwtQiFMTjArYmI/clZjcHsxVkpNVCNfRj0/TTc7YyRHN3xMCnozKW8rcFZ6bCtjd3xo
LXkpM0c/PkNrPkt1alF4Y2pOX15qKV9gV2w3eHB2SCVLb0ckZ1NoMmplc19Zdj9EfHMoTQp6S3Fr
P0J3YWIwYD8hSzc0KXBTZnlKaFVjVj52RHFKPWo+MzNqbnhhWmJ8PmNSMylKSit1U2dRQHIrRjxx
JC1kTlAKei1pVmYkKWJtO1h2ejczK1B1VWZoY0ZMeERkUiFzXzZwaFR9dm1aayZMRH1DT3leOXRP
PzRTN2UyM3VHdmY+RmdoCnpeNnxHWkopak94P3AoUylWRng7Wm08QF9LRyZ7dzU1aWNoT21yPW17
ZCUkTFdkVEMzKVg9TyN7QiVaIzY8b25yYQp6V3ZZY092VnswNztEZmZ6NHpRayp6d3o7KWpiaWVm
SSpEU19YWXt3RlV3dig7JkBjJWMta2s+LT1QTTNPTGA3Tz4KelNjO0lXZ1olaF5wUGN8WjZUU3RO
PDk4diE9and2KUN8VGg8M0cmdTl3NiEoMjFkRUxuM0J0clc2SUw7ZSFrP25iCnp3YypESng5dSVk
ak4rOyFoQ3VqTmZROSZUMFAxUHNvI04kYmRQeHVlVUErOF4oNXQ8PVVBcT5PMG5BQ3JUayZjYgp6
I2ZROU5WRnFhP1pSdVZqLSY8SGwlOW5jZzQxNCFyXm1BN3deNzg8TDlrYzhVZStCdnAwYj1jbWtQ
RU56VzNgUlEKekpUUlN9Mj5IbWheaStWU3IpSlFUOCZBfVJRMTkoZEpkNSZSO0M/UiM2cFVZcXtH
b0NJfElyWTloKEV3TG5lY0RuCnozbkpheDxCQ0hOUjFVPzs9dmgrSTY4WGVOQyNBcFNMNlJ8dz9R
Km1gVHope2NfN2wzX3NyJWcmZ1VYKV8kaX5DbAp6PSZOLTlGY2NVamdoYzFObGtzbn44M0xgbE84
Yzc8cSRfS01kNGYlc2RpLXVHVG5+RW10RW5MbkY1MXRzdUxlRFIKejN6aDtUZWR8e0lXJSZlWSp7
YF91YHs+PHBaSno8YWM3akhLQCgzVV9vVDF4MGRURUplQ05WMGg3cWg5dm40QDNvCnpjNCF+UjVx
e2xIMzlOZXZsQH4lZlRET3orVHRaWWQ/a1ZZeDI1b3ctYn54VE1DKVd1cDE3IyNDWWh8fDJ2RVB2
fAp6V1UlWG1rO2R8YUx+TmxgVSp5ejdabWJwUHdRaFpkR200N21MRSs4Tykzant9VWU+dnI0b2lJ
cWllI300TjJrXnYKel93QUtgdW5wdzxDQS19R0ZkajwkYXJRO1ltJn1XQHdORV8wRlZfaHY1emEr
WjFRYVhvOVp1Y2o2KSF6PXluO1JFCnopO141O3ZJVVJwNVF0ezstSDZ1Ri0lNilJYlU+aEAtYitV
ZUxjU0koUlRDXzVCalRpJkEoRC1QbGdScDw1cmY3Qgp6NnZIWkpVelVgengzeTI0SG1AaVBqXnxS
aDZJTHpBS1o4cUdZYiYqNHQqOSV1dSl2RCFFRiNJTT94eVlwRU5qIXAKelJCdnRPUVVFMTJsWWZu
SWNSUmYjK2JMSiprRTdsNzFYTj1aQXZebG1JaWtmNiVGUH1kKzgtey16TEgkdW0kTFJiCnojS0Uk
Y0JmQ1RQV2ZQZ1RQQnhtRnFaclItJTBoP2ljc3JGU0JRY3YyN1l3e1BAbDZMfXJmWGR3WHZ9MiFn
M01ATgp6ekN8WThhQlVNKk04YlQ+WGgoTXs/Sk8hQzRoSX49eDAkMTRwUURwXm91YTt0OFJncTB4
aSpvdENkM2BeYT90PGIKejJSPXleYUopbyU1OUEtNCRQPTRmUjUkQHlSI09Ma0JNa0pxMm5KSDcr
bVZVcEBIYlFEcEhXWH1JVmlXQjA4dXkmCnooZHV+ZzJiOUk8RGtLNDxaPSl8RyU+P28lO2RSNS0y
PEAzamBNKzd1cH1LNG42OE9UQS1xZFo8YD0mcV9uaGstJAp6PUY2Nlk/Mk5nakZQZyh+eippbFlU
T3dkaCt1JHkweWNaSjVFJV8zTGN7MUNALWJQaF9DLV9rRVpCd1pmV0lfYj0Kejd+K0J1aXlAZiUw
ayE0ZDtNU0Q5JXtRQ0ttJEFRPHlsbzFSRXBqS3k1a1pnWmF+T3JkWSQyel5TOGBAcWkydkZvCnow
dC1Lbkc8NWNtZk5ueH03OExucXJWejRgcFdseVhMTDZoOERMQTMrNUBJY0opb0oxZSFGNjwyK0FD
cWtGRVBmegp6U2xQKig/MUd2ak9iXztiTGcmX0RvO085dm5xXi19bF5VeFY5XlkmMCRsdzFAKVBf
ey05cm9JZ19XcD5mbjlJSSYKejlNYCh6ekhXNWBKNV9RTFJYOEZfYntwM3c3UCVRfVMmR1BqMk07
OSZVOyphZkBvb01oN1gyP1dNRiQrbmZiUnJeCnohUEcyJSppLVR2blZsP3A+djQ0WTx+OzBQX1ot
Q2tIK3RpbjJge1ZVamYoYCZ4PSMkZmhJZEZ6NEc+ZShMV3ckSwp6a2J3cUlWOEorU0srYEdHJVFj
OCEjcmF+OHNfUDdyVGM3bHx1KihSQGFgUlVKMGZvOHlKTTJtK2BYQDRmNz45K2oKeldrTGFqYnd1
emNnRGhtV0ZxTFE5Q2R9ajlIcSsrcCEmdVU5dzwjQzFPcEFpc0MtTSleeUBEMyVVfTlNbj8zLSFE
Cnp3OGIhaSF8azhVLVcrYkRHYnxmajx6eT9JYGZAQnJ4RWNQSXlZPD01WGVHPXZZIyF9bWlmYkYp
UFA9LSt6aU1nVQp6bzlvaHB7NUBLfHBnPWNsOWt5SDVwe3BYZyt0bGVtWEtlYjJPY3ojeiphNUVo
M3pMd28xPiNRNHojSj5DKkNITWoKejdZaXQrLShiM0diKURFbTBBWGhZYEVPe1R7LSYoU0ZOU0FE
YG44aXghV3F4bl5xMGskb0VCWj4mXzBTTWpWUjVTCnpIbyYmamBwJlYyZzRZfi1Gd2BVbVpIeEBR
VUNRfXZtc1dIfU5MezxkPi0+ODdjbVkrJWtQJXhoRVhJNk4/cDtsJQp6PUhPZXNmcHV1QD9pNEFz
VClXJW5jUGZMKGp6UVZVYntSOWFRNDw/ZW5jMzdHWT1yT2M+bmBaQUwwJDxnR2FDK0MKelljOUNe
cT94WGRAVk4rSWI/dS02WDNgKElgQm15R0dANC07SmRQYT9ZcDAmWXQyeEg0JClNNWRwQV5ic28r
MmpmCnpmY0JZRnJAQFQ5P2pZNVEqNHAmMyhPUmNvbX0hbFp2bUFSSVZvY09KUEIwYHVKMX1KOFot
Xz1zaT88QmFQQiNibgp6WilrM1RJbDc4cjdCVkEhRyFlbXRHMHFxaHQ/XmchJihMI2RwKH4/P20l
P248VnMqQDFsSDk2dzlxTXJ3N2xHQksKemQ/bDd+Kl8+akopPlZZSF9ocj9VWjBna3oyQ1YySl81
PE1uSWcxbFotMFV1UWJtaXxvRXVVX0BnZ013Z0hkeWpACno2JnFFSDBxRCg9Wm1qMWJWQkV2RW9Q
ZXgqXylxYXdwPkBWdks1YWF9dH1LVDNKaCE1YjlESmQoRm00cyhqQV5eIwp6TG5jbDszQUs5QlI0
YzgrS318M2d5NSlPflJ4c1ZNZX4/dENYZG0waT50PEpMTjg/KEwpQTUxdEhUbk1DTkdlVVYKel55
YGdyV2RZJkRlWnVLbGxnM3VOYnYyJW48IVl4c1Jhay01UFBYMnlaKm43QHQjfDYxb0ZiUVklTUBy
TVklWjF7CnpiVVcpVD5DZ3RmWXItMEx2UilKMTBWZj82bkhyU3MhZSRCNCFvbVZyOGpzMXpAWG50
blJ5U1ImSSp0YGtRKHhjXgp6cHsxWmNOdGNLMDBNO247NVRCJmdPRUM7MjwzIzlxU2hwRDd3YmBh
UD4haXdhcipCWUFYV2c7O05IN1FCOHU/REcKenklMkooPFY2Xm9YIWQkZzhNekV6SyFFeWU3aVA2
VHB7fExyTzMwYGI4QjgweXduU3R5RmNfR2JAKTNVdEI0MmhnCnotO0d2Mih5Qz5NJVEoN0E0djx9
Yj5gUlBYRmY4NXJzPGBRQzNPakREUG17TmFYM3Etb2IxNkg8TmQrP15EQl51bwp6a1p+SWU0S3dv
fDZxa3UhTn4zWkdwNUhjbzVEVyh0MkolSGlhZkc7UV8mbVltQWkoRUNxezJ9OXpGMCVVdnVNQVgK
eiZAI1JlKG0tVnFvNU9mcCVYKC1+Z3tpZFdPLVh4NEx4JCpfaHskYy1OXj1iUUtzVXc0IzB1fDZJ
anNSdHtMOX5+CnpZMC1JITgpJnU5STRSTzs+VzkkfGR1Y0Y1VntnNzBkb3ZhdndoTDlYbn43cyNf
fEJ8M1NHblp0c0ZJVjJaaj0qWgp6dzxfQzlgTHhkKitVSmhyemw8OT5hZTdhWWZnYXFqJUhudyRf
YHM5fGd8OzNWKm9BZ1lEMFRJRWRVV3lWYylkUSkKeiZlQShSYVZYX194PDFkalA/QDY3Ykw7YXcz
elpBPmQwdV45LWE9KShLQ2VLWlNHWjhnKlhJQEteTkpUTDkofkAwCnpgbjxgfSV+S1l0eUxGcGho
N3JNeThYX18tek99OytDMkxGaW5aMWd1VVl8MT4+ISp+T2wxKTh5MTJ2Qnl1bTJBLQp6MXVfJSRl
RyNsQnU0c3FNcUlWfVNKcj9pZ2NIUjMyejl9Zm1pVyh3c2hgZ009QjwkOSkoPnM7UCU/RmpAKSlo
ODkKelBRdjR1KSlqVTxQUVlWTT5rMD1SJERycG1BNV5oJStaWHxocEI8ZlRHdStZSGNFYl4hP1Z2
RmNjRmcmLUwlanNlCnozJEpOISg8ZTZrWWRSZGtLZ0EmNVRsb2lxdktLYkB0Q0kkSFZjIy0jQGZo
YS13Y2o2NEM/b3ApVW5kayN6eUN9Xgp6TnVPVUZIKHMxU2U/RDdXPzNgY0hWYVh0YnJXbVIjTD1u
QSM4V2pRMmtGczBzVE8zJHlubC14fGZmZ2lUa01jKkMKelMtXnsxWFdPPXYrbUt3O0lAYFhiKz5X
UEZ0K080ZCZ6NXBUbGJ2YF5UY0V5KU88MGk1Xit9bzZFVGYmZzZtRj5TCnpFP0RwVy1TMVUqYkch
TiNzX3o9dHVJO3U3TVh9bGRpe2BZY1IhY1pIVWZGN0U5V3tOUUk9UXZYKT4+bzMofE42Qgp6X1NQ
Q1pvKGZ2YTlJWjdESm1xTWdKSy11fT5XTXMhSnVMfGxhMlI5ZGIoUEolUENaX19yKihIfWQrVi19
LTMteXcKemx3RTNjRlhSNzRCTVIlQVRmPVlyb1NyQ0xtUUA0NEAtNSpTQlUpd3wxIWB3ZjV7ajhE
PDEwa0FVU0ZNZTlSayhmCno7SWJPTi1PT04mNTg+clVSXzx6ViRwT2R2dl9wWCh3P04ke0w1bSlH
N2A4c2AjPTRnPjFJclRYNmlCN0NiO1JeaAp6PkxtNmlfNnlubHZtP19iTVchVy1PdTROPFprdH42
ZiR8QlZJJDRMfEV+QUIjSCFLJHZHPklERytMPkcyaC13JTYKelRObTJJKF54IyYjZ2k5THFRTUJr
O1d5cmJ6OUFvaTErZClDKkAlREJwI2AtKzczVzg1KWJQS2ZWP2ExIVdkTmdRCnp4OV4+R0JrSXxk
ZGl7enJ0anI+bEAxNDZwMlpqMGA9Vzx4YGZMcHtFTCttfD1hMSpnPiE+eU5sZGRpKF49bEdAaQp6
b15wNzNfJlg5fGkqaFgzT1ZUYTNaOXxCe2FtI0h3QjRYRWYtZzRWXiM4RUUzY3lAWERgdGFxZkQ9
fkU/IyZRVUAKekkrIyVONX4/PyRkSkA+aV4jTE4xVDMyNChzdkU5SHNGMz1pSWQ0V1lfMFBraS1S
UTZuX0NOZHlHS1VZfjU1RWVZCnowNHlzUT9EdmNHOEk8bGgya0JvP2BZMD5DK1RCMGY8MyM+ekRT
YWxUa0gjT34mJj5RNCpoZzdBKG91KWAyOFF6Ngp6YHBleUpiKX5mKVQ8I1hmQl4rMX0takF+PkFS
dis5VSZhQH1fczhHPjRmQmQySEIoRntWbD1icXBYK2ZkO31VOGQKemIlWGtwTGZsd0IxKlc7Jlle
WWtOJDlOY2FNdCkoMUgoQmhlZV51WmgzaGJwZFIjOUwhP0dzS0N5RChXQXdwbWJWCnp1UkB2NkRs
TUgjZG5gNFg2Sm1XZ1JJfXFvNjQzPn5GNzBRfD1rXzc4Mm9BXkxHbnleTzRtS3NUITRZSXEhaXpG
bAp6Q3gpcm0rQD49VzY1SUdEdEE2KHVKKWNfSVQ7PnVhSWhgSVYtR2dxMEV2PFU+M0IzWngyZTNB
aTBzQ3c8JnZtRmwKel8+VXhoamxfUjl3ekh1NU03PVl4Nnk4NXVHLThtakp8VjFFMiYqIVFnJSF7
dVIjRGhyQ2FAfEFZdk9vbllRaWNSCnpoQmFHZ1JVIVgxIWM/WmZNdSkyamVMMTBEaWEkSiNSY1JE
MDZ0OXFQTitIc087ejg2PUBIQTQ7QCRlZmAkKW0mOQp6NlAraUImZG8mVVMoNlNyc245VVdlalQj
WWEoXjU/akh5OzBoUnh0fEdlemBCd2Q5dDVOS1Jga01rRShnK2l5ez8KelZgTnxoN2RxQkR2OWdh
V1BRfUhwKGl7MFFGdlE7Xl9RZGdgU15lYG9QUHpHTVApbiNocCZtPTlNRzNWcXAlJDNrCnozZChT
a1A9O2NmbW9APG52NH10c3dxe2x6R2lyPnJWdm5ySHIrVT5lb1ZGaGVybSEkUWdCRnw3U0B1eT9w
UVduKQp6bWE0akVpeDMkdFd9K1BQaV5AVk5hcDQ9RzZsSD9nUTtfWGJQb01fWCQxPHUxNEcrJGQ9
dlpeQ0lIcCQmTEtTMTUKejVsYDQrcjtaZXg1Zz9ASD1tZWhGK2tneyQqdCZvbyluYComMiR4b3p6
fipKeFNYeGJtbmg4ZylGJVItVlAjUWV1Cnp5VEReVkAlUlB0SUxZTFpqa2hBKi1eSkZBOFhQeEAz
ciQxfUoxKHt6cGAoTzJURiVsQXhIRUNsZDltJHdUN1M5SQp6dTF1QytERUImYF52WmIlRHBkaVdW
KUdrUXtUTzRQbHx3ZE1URFFsRFQyMzhVcjBGaztja2MrSmVfe051KkVYYksKejR8YzxPO2YoLTx6
ZlpsY0BxUXNvbCM9RVU4XmtDZCN2X2EkQko9MzUzI31ZeGw7TThMdS1NRTE/eyMhSWpndFBJCnps
NzIpPG16em54PEpmK0g2ZSZqR3FrOE55dG9QTTh2NihvX21tfkpGdFAheFI4Zlg4bWh5Wio/ZXFs
cUo8RnZgJgp6PTxzK1ZgJHI9Q09DdE1za1U8WlRVcyNwcWMpd29UZ2dUNTRQYXZHI2chMm1GSmE2
SCZyT1IhKDxAMD58MWw8aFMKemllck02KVl2R1I0T3szJHtmMFFqV15TQykrdSlSNjVSQysoUEpF
LWshPmZkd2ohSUN6cmQjOW08LTs2bUVAKW0kCnppQGI0IWl2Z1A/NV9UYXA1e1FmRWZxZkh1YG53
em9eKns8KUhAelYhUkhQYC0hbz89UjZ9I1RlKjEyT1VTYCtqcAp6eztqeztzYShod2QzO01lM1hD
KXF4Nz9GOCpDWG4oY3pCTC08aUpjSURFYnJgZSNATCtGd2dARmZqeTc/ZncpWj4Kei1DcXZ0S1l+
dGI8cEtMRElRPWxrTCg/YzRwSmBwc2kpb2JEK3dHI1VgYkphWnFGNXhzQD9NYThNVkYjNkxuTjBX
CnpkOERKJE90dUMyN3NDQldDNzxfX1pHdTxgNyMtZTNKekA+cyFkSyVEJnV0T1NuM2BrSGl+eCNv
R3hsQGZwPHVDfQp6UDU+ckJeYmlJfV96K3N4eUV+byswRDglN242JHF7JGk5NWFyaWBpWTJeQDF2
M0dxaEh3RCFPXnswZ2dfe1pMMCUKemYkPD81QkI3Tnd1QDhiRD16PHVZcTtUMlNKRSNic2l3ZEpQ
NzVlNT1rVTthREBKYnhCIW0/ZT9PU0ROSzR9Wjc2CnpUWSZ8QG5lPG4lTyVIVFZJbVAxeCRVIXtU
O1kwfChXMmhMR0ZMRit8IV9HYDR1NW1jUyReQjBYZEdPNXsqITQkSAp6dDB3eld3UnJCQXNLcGVq
TVFXNXcpPyh7Y287NmchSGJNVnRMN3lyQ2BZd0x4Mnw8NHcwVFROLU0tUT4pYXBjUjAKei1mYj18
IWJGVX5DdEtgUHpYO1dAV3AjMH1xZHZyYyl0Tnsld0YzcWpqSE1aRW14c0BXKXx0VXIlZnw0Q3oj
QGxoCnpgI3pNYDw1O2tFJjMkbW5VY3JrTWl4Yip3JjZPLSkzVkh7eDd0MWNiazU3Rz9CTysrOGYm
X0VTZUVybnRJWjhVZAp6ME0wPlFKSFRuVDBEbHcoSH5HSENCP29Hckh1RmhIbl5xdjchWil2aWFe
YislNW8jTnkwMyYhNmVDPFImeSRjVVMKeklQVlNHJXRQTm1wIVhxITE9YEhUUlljKShtUU4zZVlZ
ZjhwPEF8ej8tU3ZXPkhOQDhFSXFQSzFyeUNxTldPZEthCnpOejhlQS01YFB+TFdJQkhBKypnNVM2
ZyN5NDh6X1l6bXIkXkF4SVVxOTUoTGBAX1FAKjxoaE1saENpa1ktWFg5YQp6N2VVQGRNdFVaRz4z
S01HPigqXj9FS1FSWXV3czxkJmNrNSR6Kl5BcXRpPWxzaVJadnxiUEghI2pBaUtkQ2VZVmAKemZH
KFdvP1g+U2dKREVeVVVQSFRGR0t9TCkhVWw5Ql9NO2NEOWJoWl9oe1kwenB5fn1jT1ZAY0YpdXxC
KVApPn1ECnp1fCUlYiZKPjNSTjYoezhkdWkqZm8xZX53N2hjIWRBTW5fZntRZ2R4O19ZJG14Vmo3
cl4kX0NqMWRAakRNSzVqbAp6b3dJcnA0a345Z3IxNiE9TmBjKmU9aX09REwkZTUjZnxjfkx5dkx0
ZUxmaGl3JnRiYDA5YUZqb0wwYHx+M2ViOS0KekFfKVFAOyhVV3l6QlJfeHhoP3ZjNFgxYjxsWklO
T287Z0xue3d7bWNyaVN7dmlpOERUaDtEYFgpPGVXQVQ+VT0zCnpje0hkTFhZQng5Wi1FQ2JhM018
e2chb00rKVBsS3ZYWEt5THhlMFNQNjgwQXp6fmFJcz5ZbDMxLUtZIzVqKCZ0UAp6ZmNhR1cxXkxT
MU5sNXdVYGxSdjZxQ1BkNE1BODstWUAoZzdXRSYlfk97aWNlYGpUWGYqaHdSV2slXzNaT2B3KUUK
ejZecDdUVkRIaGU2ejU5dUAqZ05yUkc0MV9UeEx4KnNhJm0jKz1jIT9IcmlwRXw5ciV4eSUtblVC
YEVgclhkcFlICnpyWi1pMUJ0SjQkYyR6K3gobEgqTXF+X2pTczclSFY1M3IoS1ZTUWgyZVVDRlAj
Wnd3bUNSaC09UURgemYpP18rJgp6Q3opQDx2eT00M2FQNCY5M3goTn5iRUJ2KExMMmAwTTRZVEls
YigoIT1gVGtKWTBTJV8pKzI+VmooUnEhbEo/U3IKenMzPHdVTFAkQ0Rse3tseVBhdXZnNSN3Qyoh
RVkzcDVBQjh3WCZ0fkU2STBlJEE4PHQ4KWYpRklCamBecXtUV1N2Cno1RGdeSGQoYXJ1NkJyYUZk
K3tKN2p5PHIwIzR5R3hpc3pETiolemhGdnp8IzJ5dTsjKitkdUdrT2sxRTslV3hLTgp6NWM/SjQq
aiRPLWRnb3pVJUtFNClVQip8QGI4cGl9Yml6X1FlVX5+PzJxNjlDQVpRcV9tI0hZNjx1R3xRPUNM
ISYKemNwRG0pSHNweUdEVDJnMFpEIzkkem91SX4zMGpqdnFjN3VBRjx7YkV0SmttUVY0eWxJcXJ4
QChpOWV4MGlkdSthCnopTkZmTk9OSy1wKnByNFpCWjdZKXp6WnRyM15ydGtfLWxxM0VALTJAPlJA
VnxiKGVKZFBHZCVmPDZ+SWdMcFhBZQp6Zzs1Yi1mSmtLfkhtKHE8TEJ5PDkqJkwwNyMtQ0FgdSVi
Zkd1KHV5JlFEb2VnRlJWZn5kaEp9fEUjXlFDNUNiYUgKelBUSlIhK2pTaDMyVlRHUFE1ODE4dWhR
T2lvVChzZHY7Y3haP35VeXszazk3Vyo8SytTPHxYZFpMXlE5MyVtLVMqCnoqWFdoQ0NuPUBFVGs7
MEJOMjcrcDhjP3N8VSF6I0UxajR3OVZ9Z3djRThpVno3K2JedGBpWkRMc3RidmEjNz9sTAp6T3U3
Kz0pZVYtczUyVUtkI19AQDR3R2M7aUlfRXBPI2ctS1FwQyYhYVNYPl5lO1hnSlZKamJBfkYxezhN
KC1aeCgKelpBRUg2T31iU1hhP050fDVyNm01TUhuS1NuYCliO3UwYj82aTQwP0chMG1JVE0zeEtW
VW1OPk8pWmFUQjg9OGQzCnotV1RzbGsrfkh3U3Y4P19QbCR6MzUhIUlKQjt8Pkh3T0ZRck80Z1k/
JDFuOz9ZKE9sd25UcD5TZVZqTmpNel5OVAp6b3NwPyNWfXtsMyRTJmA4V1JARl9Fc3BaJnFtO35F
RTd7dzBHNjVvdThCbVpPb0h8X2RgY1A3fGdePHY2Qjw/UiEKejFqSFNVNjBHRE1VI0J2UHhgSXBG
bzRec00+Y05zfkVJdUlhSW0oN0RjX3VDU3pJN3kteitnIyRnN0RWVjRlfiZ2CnpJSiMrNWltPEI/
USl6LXRCQHcrJHJ8UylQJkxiVTQ0d2xXYS16ZGFTZldPKiNUNHc/NCoxQm9zeypWeTFtPEEzQgp6
bXF3fVEoV09hYz5EKFc2VDVseUw8Vzxic0xJWUhnUzNXfn5zQChpSXExQU9sbTReSSlWWV9sWXMz
Mjtad0R+WHMKeiRwKWt7c3tWQnU2Oz5HIXtwJkolaG17ZSM0dCtubCZrdSh8NUwzbSgpJm44bnlk
R0B9O0QxNyh1Q343RT04P3d9CnpYeEArfngrcVU5Wik0KGFTRm1Ndi1FezFYeCZ7ViFsYmBtUGph
a041UXgwKjtDY1IhO0d9NExMREhpemleLV5wJgp6KUhoKGg7a0J0UU8yRz1QSDU/OSZXOVQ4Uz5E
UH5qPnhEZFB2PChRfW9LS0M+aH1yVU9QeTtlIUY3NVMldjIrLVoKeklhSCREN1EjOUhtKzRHND5v
WUB2NmIoWDw1S0QqTTwpYWV5WT1nSFI4YEgqT2pEdmZCMzM+eFc5cHVOeGZoO24+CnpWaCRoUXRP
R0BBMjdkeGRmU0ZyO2ltI1EjKFo9KEBmbT08RmhWcCM1PkloaSNNZWI7TXAzaXxwYSMqO15NVUVA
awp6VDkwRmBkK3RTUi04QiVWP2cqTXApfGkxP1UhVVViRlZENUJuSXNKXylpfThqRGVSdUd2Mn5j
U3g9OVhsR3EkKSYKemkzJGkxRkFwQjNaZFZSPC1nTFYhOzkyWFVsVDB8ODt0QGZnY3g2Sy0/SWtT
eGMkaDdNNiZXbmFvb3lpP3hoOSM4CnpWYUFxPUpzbC1qM3QhfVJ6K3dtRDdoIU5EVn1vc2NJNHdE
Q1hDfSVzUiUxKVZgVjhoc0lPT05BSGdHenA3aG9LVQp6KSlFTy1HPEswdSFGc2wmJV9UTXluVGxX
VmBwe0J6TWRNMCVBVEUoZURkeihOK192b0JSQXwhN0JBVjlfJkVfR1IKemB7dDxgS0doOCR6VGZi
NnJ5K0RUKGhIQlFBOFhjX0I5ayo+YFAlNW0pdW9AWm5MezBVbmg7TG9DRGE2Y3xJYDkrCnpvZjNq
VTN1SzhGNWM9cDFQKUMxNT5xKWZpUVFPKDhWcjRleko4dmYhQylxRGVKQ2U/JT9YU1JTbjB7RGc0
YX1sMgp6Z1JRbyo4RWUjeCgqMTJ2OTR4JWd4TGVKQSQlY18xJk9gKXxIVmctbkZAREIoMiNoKTRT
enNFREdeNyllNSt5cncKek9eSTRHTCV+czxvNzkzQ0M5MXZFclg0PWhYMVdwYTJueHtsK0dpLSgo
NnZ8Y2dYJEgpJWZmUjYzOXRLJmlKKmF7Cno1I2h6K0hWZmdWKihRO2ZtYklfSEpFQXklKVo7MmR8
NlB5JTNyYEphWU8kX3tqWGllT3ktSnY8PGFpSWBLPEFmfQp6KXtTU05RUEY/dV80MU1SPSM8NWc0
V3AjUyQ8USZuM21+Zl41NEg9UD4lZG42WWZKZzQ9SnYpTShHNWtFOT0mNGAKemJwfnNzRT5oQyFu
LS0wZj58cSkhc1kjVWQ3bHJpYjszfDM5cWVmQThyRHl9elBYOV9Qbyo7cU0wbnUkY2xYfGQyCno4
MVhffUhVZipAYW83PmZ0N19Vc0Z5RjI8dzl7MjxGTm14TXBZT3d8Q2Z9TEFNeHo4UihkMSokQlpH
fmhFbzlacgp6aX1oe3U9cF5DNyFOZ2hPQSp9SDNtNDFuREM/S316N3pOPm83ISZuYTRfcVFMNTZW
QFQ4O2EyVXhnb2c/diRTOGsKejNFJUEobGl0VkMmV1ZjbkpRMGNmMFApV1UwRWw3UWtEZzdAP3xI
dU5IUlpJQVhzX2UtbU9VSEshNFpzMWpDbSNkCnpWOV5YWSNBYD9sekB4YSpRVmpVRzteS1JVUTZC
XyFhVz0zVXlKPVhydDw8PGluOStQT3JYZzMrdXczSjdtWUY4MAp6Nkx1NHNGc3YkMFUqOV5TMm8w
YlBtZWhJakNgOVpHUzZxI0pkYUxTdVN7U1krcnMyOF9oV2pGJSEtWkUwZGpPc2EKelh+flB1RFQ2
OXIoS0F9LV8hMzZDVyN1ZnhmM30/P1NBKmBONVozTnBoeWk8YG49dzNAaEVCUTYqTnFLQGdKQTNv
Cno/VVdgfTxDfTNrNmlUcjlGNTJNczRHNWB7Z0opfFRFRSVBOSs4MWtYRmJ9UDtHYk58c01Hamdm
YylPe1d1JHNPOwp6az9ZQCkzKzw0d2pCeU42VHFzMWAyQWhlazUoeGoxWFcpblk1akI9dVppZD5C
KEpuRz40c2lwTTUhX0d7X2hVSmgKekxoZ2ZHTWtFNCpPQU5+Km1aMjZjKTUhISpZbFd7fEotN3d1
Q0lePmJsfURKcU9he3tqPkVNKWloO0s9ZlFye0JICnoyKWs0P1dhJnN9NXg0VlRxQF5hQnp9e3pw
Sm95aUctWEpYKjxLOGIqOzNaSTg5SXhxNT8jbjBMTz1AP3pOYnlWSQp6WEtzUD10YGY/YVhXQjBj
M187ZyRTfDA8eSRGYS1MYzRISTZGMURCSWpSO0B8V30+NypFVnVDLUJZan42TT1FVikKekBQT01C
MnFFPHVCVXtKTGorYEQyYCVHanBgeCl0dTc0IS01QyhQfFA8YF9SeUo3WkkyQkRASzxVeEFvdk85
c2lgCnp4Wnc9PjgpRVk9bVFVcmpAPS15YXtlQF80JVRHM1VnJCZvdkkmOElTa1dBYlVYPWtnTHR0
LW9rZUIqKilfUXRKRAp6VlEwd0VIRjJMQyFreWU4U3pZMnU2RygtQC1eZEhgemReWFFqeUBXcnt6
OHU+ZVomMCk5RFN5VmdPUTxPYj01ak0Kek87JXsqPWNXclRWZ35VMUZocllFNDQ0fC1CaXV0UDZv
Wkpxb0JaMGJObTVTcDFVNkE9YmIrazt4b096Mjttd0pJCno0ZGYkJVV8eThVI2ImUWVaSEFiO05K
NnNNeXBTeCVkdi1hTk9TdSohbCFjTyVBPndufXNJLT1MK1Q0Yno1V1FnWQp6SiZKYkUkRj9MbXp7
akNfQmtAaEBjVCtTa0JLR19rJWs/eXgmYz9CNWohNz1AO3xzKCRVSFY1SEVGNUdiYEA3d1cKekJl
SkltQmFWdmlOUGwrYHo1QlExJSpFc1lNPyMmei1uPF90JlZwZmJtdXZYYj99XjRrJGstZzxWU0tj
JVg5YUlUCnplJEZxXkhHNTV8dTEoV0xxXlFVQkVVZiZOQEF6cm1ZaVRqQTlXMkhpPD5zZC14SWQ/
T0kjWV5nJjtrX29heUNsTwp6RTJmUipwNW14UyQ0YjkleDdeWiUxaUUjQSMrPWZGSjRGbyZpeUxS
T2orJEhBLW9MOXphYj9yfXJ+U0xvNnwkdXcKemRQME9EVGEzOD9MX2soOSRCdWByLU1XayZTaVp2
SWphe3M7SUJFdSE9dHk4V1IrUVNFUj5ZP2RoMnkrLVdzUnNXCnpmQTN2VVUyUzdBdUZBUSFwYFNt
cTlUOE8kTVo7SjhEU0NkRW89QDxmKERNI0ZtbVh7KjkmdFlVUSluWEVCU1Z8ewp6JT05dlpQRFZI
NzVQIStuOUswZ2ZWeCU+bHBaRms9RDVxQD1yfHB9JXdYVmdtITklZzdtaUNRPkdjUUs8SDx7dEoK
ej9kentBTkFLNz1oYXgrPmpKeUV8Kzx6ZXlAeHZZJEM4NDd4d28/UjhDfUR7MntzbEZQOElAcTIp
KWsxYHM1QGZ9Cno/Y34yZnZJVHNBZkc4T0UqPDFsPm9BYSkqdzc0S3ZRRClNamkzKGV8OS1ITkEk
cz5FNHJlNkVpX3NvNUEhWT55ZAp6ZntXOVo2QncoWWFKWnw/elB0eSFFPTBmQSpKQWo/N3poX1Js
TUtvUypqSDxhJCVMQVZiKlBjYE9AfXcxc25fLXYKeikkNV49TXk3RCFsYTRxVVBTeyRFTjRUX2FI
YTRYTklWXkszYzVBSiNySj9SWEd+TXVtYDgzfDxDTEZFeSgqM1JiCnplejZma1YhSkcoeGlQMUgw
S1RoRE9AbFNIc2FlVCNrVzdBMDFwQmx4KTBySU48NDhDZEZPI0gwP3VCRm9YXjdiMAp6WTc8MFRH
MVd5ck85YW91NjUqXjdsX3N8PjhkYl5uZD94QS1tNiZWXyNFb0R9P1ItVXlNcVVHKEVXU343dmwy
LU8Kekp4UD42ZSNvQ2BedDlId3g3M3t4LVlufmVCRnVBZER5eFpCcFEmUFVDSTkqelFKKEU/d3sy
U2dKaChqUFU+THdQCno0NXpjeistM2FGU1VSQmtoKXZ9UHpGe0tPKzhPJX5Kayt5IU5qQ3lGaShW
KChofWFKKXEzT0RqbDE8d1Rmdm5Vdgp6Vjs9NVojX3pEbWgtdSshdyMqWilJRD01eEdJdEdLeVR8
Vl9kNUcyfFl8RH50ajdfbkR7RjhfMCRCdmxSUFVCKXgKejFHKCl3JG1+XjlXQDE3JSZ6ejglMz5o
JFV0cllyIzg8WlMtRi1+SHtiRz57WTFsNW9VYkN8d2teI3c1ZUBSeldRCnpleWB9dFpkXjE8Q3kp
IVRCWGBkZVIpNyVWOX03MElsT1pgU2k/Sk5ePkp3QDhFRGRmbkNkTkhqVGRsYCtiTDh+dQp6Jjw0
YHdVVX5fTkBkKWF5PzZXQUNWPUYwWEtKYFJqelVaTDJFJkRnaEVTbiYjRnVJWGdiRz58fGdzaSRV
aUZXLUkKemk0KmxmZWdTcXUheHQ1QTtWKiV9Xk1ecX5KYmw8KF8keH5QTl9iNmZwJnE3Qj82R2Bl
Y1U4Qy0ySDEzcD5xUXZSCnpJJFBZLWJxRmVJVUYoWVEwdnNpVE1fYzgySUl4V2k3LSpZZkVEZmQ9
aHE1UUJhX2lgTXhaTnt5WUxlVlN1ez0wUgp6dj43VDw/U19NTzJ6Uj18Uyhsc3QzJkdfNnp8bnxX
TCs2fXZtdTYoZ0FsUzMxYkIoYy0xQ3N3bjRue2RUQmRSUjcKemJxP1Z4YHtsT1IyKWk7LWpjdlp9
TTgjbD9KaUY8Mk4wblQ7P0VuPUdOfFk0NDVmcmZOPiRVIS1lP3otdCVMOTNJCnpreSk2UVV5Z0Bp
T2x8PjM7OFNpTWpVMUBYXnk7SV5NMlpLUSRJUCtLPXh2WSZOdDYyOU1CRCpYRmRxOURsRU9zXgp6
QVA5bEE2K3ItY3BvP21YQj8tKW5CcU44O2c1dzVNeCRRb3hGPlhVV1JVcUkwZVZGWTtAdUw7cl4t
Q2BfbjRpcW0Kej1KeWB+aXtiTylvI3NiSkkoP3FQPWtWPSo9XilafTtgM0wwZWhBcCZKSXYyaGNs
bzlOITI4ZWVjP2Z1O0BqVkhqCnpRaGM9NlpMS218WihpJj5Ve3JoRS1rT2R8Jng/aGBvM25LXlQ1
dykwQWx9Pi08fWBaNFRAUV5KcVJIQyNWV1ZROAp6JihSKXJNeU5gM25xd2E+M05fVXRDZ3pxT2Vf
K3UpNFhKM2E3Zz07YSNhbT83UnFCWXlYNHtvJm1pRjtVP1JCQC0KelY+aE5vV3xhISk2JEpmQ2Qp
LU9VMzZXV3MzK1BuQEpxflVPbmh9fEd3ZCZNOXskaWUwQkU/JH5tbHNpdk5uJjljCnooa3tkVXFD
JTJeVT1EN35HY1ozSHtIWSUzKXZNbiU9SFJBNyUhZXNMKzFHUzl1XkM0eXZBcVA3LVhUdyRVeGhJ
UAp6SHdCd0g9I0M1ZDBYdT17c2FlSm9iaVFuKGpLMz4zWFc7TDBudlhqTnkzdzROVzR3YlgoTGxF
dyZzYlJxNnlVPEMKejB2ck5pNn1AeHw+YnV6M1pwPEYmcnNXVT9xVTtxSSlkZyVKLTR9SnlLc1R1
aSFxM0FLPlg5TyExPGBGTl4pOSpqCnpFKSllJUVMTTsyWHk2MUVHbE53UD9nbmd+TD5RQm5nSl5D
TU1wPFhxPUR8ZShDRTJ8Z2RBfnVOTmFoWUJpNXB5VAp6b2k5V3MjMXN3dUJ7P1N2YSY0fDRaVkty
PWNtU3I1S0VZRzZmSVhQRSkobGs+eDJnUkZhYUVCSWArTVRDLXlxISoKek5KZFlmaS1jJkxZWThH
OVVTVn5ZRjtXe0dwPVBzK0Y3MmRrVD5DJlRkZV50eDMpKjchWlQ3PENNVitLSWMzfShVCno1SG9z
M3lNWXJXJHd0enYrc1V6UT5fYj9MYFpLQyo8eT1aUlJXdStGK1A5MWA9RzFSbktOJWY0fEFFVn40
P3U1bQp6cTlMfENQSmdTU1FUanFQK2kpTWtSVXtydnEmSW40Yi1OYjhvPVI1SFI8Q0NvNGo4Uih2
eSNnQipkQmJ8eDZ+bWcKelFQQnNUWlBfbkJnaUFVVEZvQEwzRnRMXmVPcDFGMmd+K0l5KihrQXxj
OStFRjBSK3lXcFJwTnV7R1d4NS1YZXNaCno0cTtiITtuZWlGSnA9RlA2PHdBUCZLbzhecTEyRjxC
fGg5b1FpaSleK0omdTFUXmQ3fCNEdUBTclQmT153I1pgQgp6bjI+RWkkaE4/a1kpVGRWdmJ7M2VW
bj0wentEIUdYTEZUa1JOKzdFeE12em5qU2gzcHRsY1dHQFBhK3c1UmYrRzAKekJFPEN7ckdjITla
K3NKaSFPMWt0Y1g7Y0JkNkNucnUkM2ppTiNGM2dyUzUxbWp6KFVOUn0kQFI/WmZteCs0ZGpxCno3
e25SYTNHUFErTF9fNE4hfWk/TW0jQTtGcmNWelgtTHlNMHQ0YEBlZis0T1dgU3lIZzAhTGVNXkdF
T0ljYTVLWAp6bnt0Xk5YY35jdmNDdU4ham5LRD1PXz9vdGR4Pn1eJk9TXkJhfGFIflpPd3dlaVRt
VjdjV0gtaHpHfCklQm0lb0YKemBDeyp5c2tNO1JKeEB+JFo1KG0tQzwkSEU4aDEtZG98T1lMVEZM
PjE1IzhaWExVRzBIVnptKm13MWxhMEJLUmZ6CnpJXjF3RVleX0c/ZE49N2JzQ2xJY1QjQWdyRm5L
OTVaWmQrJSE5NlhlKCR9eXFmTiZtbUFtWX5nK0B7a0pCc0Mmbgp6KnVEelJKS1U+WXY2YEh5RDNH
X0BoMDFGUW58aDh8Uz1MVU1WQWhRRyRpV3xUPCRYJmFWTFl1Uj59ckVwWDRYem0KelFPbTdjajFh
cVY7U2Bpd2RSRFE1Pn1WbztkT1o8YXU0Y0I7QERhTktpVWRFPSlrZW1nOUw2Pj0mV3VGcEx3P3w2
Cnp6X2NeUEA8Wj5AMUVTejlRLUZAckhmQyQ1dWkxPD4xcV9Ud2pFbDk/LXl6N29mUHtYNzh6WVBZ
P1IxJl56Xl5JUwp6PUBzJXJ2PD8/dDFmQExVUTsqMEdLNz8yN2RjKzBpeGJxd0xXeTVgOS05TjFn
MClTMUN7TVIkKzRnZU43QD43U2kKekkyUkxVeEZPaStOZiROXlZWTVhRSWc3XnRWZmhONGpSU0dN
Pk8tby03a0MkIUR2MlRVMVB3SGkjc29JbUI1WG09CnpNJj1Hd0FuXzdEbkB5NjJFNEM4SUZ6SSZN
S0leUnZyTDJ2fWlFKSg9XmtRVkNAPTM0TT5+ZSVsX1J4OT1EdW5IcQp6TU9YcEZyRzxlKSMxbkFW
Uz0wZXV4bWZmUmVtUGI8djJjYWBZO0xVNXNNKXk2Y2VBXlIqeDA7ST0rPTFAMCNkVGcKempUe1lf
R291R0QhKHkoZEQjUX48PSskZTVCdD19PCs4WmJLdkMjRjwxJURNZVl+eHVEbC1ZRUAmR30pcCFy
ZWBHCnprUEhRZkU1bHBZQWhgQSYydTRKUE8rMH53I1khKDZkczwpaFIwZDdGWW0jXiZGJXpjU0J1
Qkh8eypEaEZRT15SJAp6WWc7bjRUP057cFcyM1BIVi1se1NVMWo5NC1RRCZDNWQwPl9MS3slNWI+
MVUxPWolNkBZbH5DXylvJmh8XzxDNFMKelUzN1ZmYi0kUWp4WGhZSSVXKD18S0MocT1tQTZSRTBI
RDY8IyQ/V0RzR3h0Z2h7I2kwUT0xP241MG9IKDcyI2U7Cno/KXB4WGNnJF9FPVJDeVFLKDx6Xzl4
ODJrcUJ0SXpPSWpaKj09VEhYMCs2aVlLUEkmM0IzT0teR2NFKXNwdCNUbgp6TmN1diR0fkthUiN3
WEFZd0VWQX5OK3tSUlJnND07aU08YUooZk41a0gma2w1eUlmIUhVYkhETUw2Xyp4Y2RwRyYKek5I
Xz8lME17SENjSFBhU0VuYnxBKz94OytYUnwkbXtIPWVaSndwYDdhYEJaMjhkITUpbiVqI0ZNJXNw
O2dmTDt+Cno3S0dMXmFKJVFDbTNKZkpoKi1uJkR6KyNIOVMkdU8zbGJSTyVXb3UwM1dIbDdPd0Vs
eiN7Jnw8alI8QUA1e2R8Ywp6Kz0zWmNJYGpITUU3eTVJcUJZPiY7Pj0ydjJOVUhoa3F2eSt5b2lZ
YT9KYzEtenhIJVFKYFQmO3NtI1hvJGdVfTwKemYtQUNYKzdAcmVYVSt4bFRsT0A1WHI0UjR7MGR7
U2Q0MFU8KW0hezxnWT1kZTtfbnB2aDF+UTx1Y1FhOD9uSk1+CnpnVjxRXmlVdGEzeGx3UEsxNW9T
dXhpbzVaeig3UyNQZzMyajxMVD5hI0oqWlBgeSpuO3FaSDdRbDNhe31DPVJgNQp6NEMofTxmdD1B
NjAlN2koV2BjfUFWaj5SOClpP3RKTGsrb2kyTGBhQzB6Mn5LckYoVzNwXkM2bCRRVV9ZQnRLQXcK
ekdIRjZ8WVAwOyVSNk1pU0F7fmJpPzA2SGl0PTFwSEhffWR5eT9jTTZJNjhUcVUpcTdzUHc+Z08r
Yj16aD8tMEpmCnppX2M1PV54KlMlZTJ4TUI8TW49Tkg5cSY/YjAwbiote1k1Ukh+NktDPyMwdnhw
WWl6bzZyWD1JYGxVSG9gQVVCRgp6Qmt1P0pkPHJePDdlNGU5K0N6Szg3UH01THF4Vk98eUZFNmBk
VCsqaXE7YTRgWm9VTU5FcC1EaTFpMkYwKEdQYU8KenlPJn1HXnp1ZkxgSTA1X1lgKHxic1ZsZExZ
MFZwXnU5K0xzMUJKTnN4RFo+diRjd01vTjU0RjxQaW4rRGBGLVQ3CnojPGUlPnc4WG0pVmlkTEBf
OTdZOEw4c2g4X2NrRUc0O2phdnZWYyh6OzB+R31WMzNNRTJ4ejJwQTgycEpeP2RQIQp6bWA8dSQ1
SW1eRz0td3grK0J4PGhBUFNJVUZHOUpvPnl5LTxBbkZ4XiEmMylpR2IhfkF1VVdNemMpQE9HYk9R
ME4KejlzTjlaanRQUnJOUCNpfGlkPWhASXc3KE5HcSo4WHg4Mk9zYm82czxOaVpwV2pIayU4ckRg
RT91MjRxLTJaYn5wCnpPPCkjYkJEXlhQRSpDX3VOKWthU0FPaTl4Jk5oS193Y1BSKEpqX0soRCk7
PldeYU9VKElCYmw8Z0JYWGlAaiZCcgp6RyEpeFh7U29QRT1eZ2A5MiRBfG4rZHZPaE9leFI7Z195
RyF2TE4paDdjKCk7MCVLY3xaSj51VEQ7RmFqYjJReGoKekNEUHUpOWl4R19sQyNDekByPSUzUDkw
WilBfjtxcVAzNVJabVVfTVZidFBOZzhGKVJKPV8+aCEhMFZ9ODdwQVpVCnp7ZTQ3I1VsS0o3JnE+
VF4lS35UYDIyLXVeVTJPVy04aGRkV3FnY3omIWxqNnE3I2ljWEg9TTEza0FtMnV2SyF0cAp6dWU1
Jjk8TTFfTiRSYj8lZmlZa2FfKkp+VTJnVkJ5Si1sK2ZOMlh0KngpSyMjTWpySEQhdWReaitaN3h7
U18xPUgKekRCU08+P3ZmdXxOU1B9Sk9EZWpzJDFPR2taeDs4Xz16SzZJWVFRbEkjSTBCXnZQZk8t
P3ZAfURCPDwrdz0lYSohCnpVO2x+eTJ5JXlYa3l+e0A0SjwpVjZRbjglT311KXs3Y2coNEVjSER0
M3lCN04hWHNwbEw4MiRuUEVSbyFfUmgtSQp6U19WX0pNUCV6MUAqLT9sckRPKkVUWl43KCl4elo4
RG5ASk1sNm9RQihQa0pjVn1leC1qPSN9RjF8SDIzZnE9T1QKei0kPlQxQHJhfmNOaDAyZVVHOzt3
LVYtY3VoRzVDbCFTenR7QXk2RUVnUnlDKl5CNDhCX0Z9fE5wJVZYTjl2OWBBCnpPKnN3IzRUdDtH
JnRpTTxXR1FhPzR4I1FZYWdpR1BUUUc5aTdMQWdNUkUwMnVzVSkoRT1eXyFeRCNXSjQhWVkxTAp6
T2dPT3txVWw0QGVsJTVLa29PODh7S1VlNjktXnNTTSRZQERpLWVsfF5pYG9JP045fX1Be08ofmNL
R3dZSz5IP2EKekpjKlo3d19fK1UpOTM8NXM3QGk4QTIqfmJTKUBQSnl0UUhnejdDd2ZPfn4zT1JB
YTcxYS1hdCtVQFZURHt2TVZKCnpmd0NEUDhnWlNkUTVZZCNJfDUmT3IxcGtpeUVBVXI/KERQUTt9
Um5lO3RqVG5jR0tSZiNUR1p2OCE+fDZtaWloQAp6TVdBfEVmYHs/KlJrVXdER1NLNnZsRnFlO3cx
ejRDM0tKKGE/NDQpNjNyMjU1MFQpcDxgITFxfFVGc1ZPVmtXNDYKejVpWUJ1K0xmcjZUUjh6djFi
OGRYTyZrKFM/STt4O0N2Sj5Mdk5NSkVtPGJATkEhZEwqRDl7YHolVzY9ZnpXc19gCnp7VmU4RmRk
MlVJYXUjPyszJXI2TGZFVHxYXnhJMGxAJmY5KVhxamlVIyVIOFdtKHNEeVhRUGp9PUEmfigxSGJp
RQp6Smt1eio3V2xWfW90KzNnVFpZJC1VJERVTXc3fkIkcyVgIWdkSl4hXjBhKFNlUChyUC1UfmUt
UGZwKmwmREVLRy0KemkhMyVwOTZ+SjJwYn1BJVgoZVE4d15DX2NGSFkydCNHVzlLSWt1VHlTUFg5
KnFKa2cpc1BJKDB2M3I0Sip+TzhOCnpSWHIwZjNfQDExODw3SXh2WiVuIWowTiMtRiV7JHduPXh1
a2ExdyFJdHJBV0ZBRis3aFF6K0BiJFFfYnVGJilHMQp6c3gqX1JIRXtebDs3MyEkZXZ0dz11R3NY
NFElR0ooZnhDN1c7YEZyZ0d9azl+MkNnfEk3UnJZM00ra2Yle3g+MXcKenIkWSlYI0dgfT1LYVRj
RmghWU10KStsQk1HfH1NWTlpKG9hKmFJK1ZhQCVoMFdPKHk1V3UxMWlWKUhxMl5CPHQlCnpTYDB0
eGIyfU4hKnR2NF5BIXVUKFFvUCtGSDspKFQ0Jn1ud3dFfWRmQD85O0tDTzFjY3daS0h5VmxHK3kh
ZDdlPwp6UCRDO194NStLJTszPDZOV282UGI5dX4jQiVWUWE0WUZOeitQWktGaWt9MDJ+a25qdXZu
e0w4bD8qYXI7Y0xJNXEKek5Ie2wleW8tP00ydzFqLU9xQnJnU3xIQzgyYEFiYDQ9YXk3TzJ+QF4/
MnJrSS1EZWB0Mmw5MHlwKGx3UENnaTA4CnpfR2ImWitDKX49d0RRO2pOP3M8Q0FGLTBAWEQpRmkw
YDR7VGBYaUBxUTNqU01JWktyQk9PKHImRDY/WSlsd3BPKQp6YUk9K3hZLUBTQVBRYjNTVXwmRiN4
V0ZgZ2xZbX1oS0BTUzNCWWRsWFBQQ3d9MHk8UCsjYVJXO2l2MWQ/O2pxWj8Kejx4VXwxYVVpVGJl
N2tfWFpeMHNodl5+NjlLekV4Xjw0JiM5NW5kfW0mc21AcUxxKip+TVApOFFOY2MwbUdTVHBkCnoq
OWxCIVZOTkx6LXk7Q2BUN1VeZVpJYn1xV2BTQFFDLXpgdCskTD0tP0pzWTJHYEd0dzRSRFB4XkR0
K0AoQlctfAp6TillWiZOdGJ1Q04xM1I3bEIzOEFsfDE4ZT9VU0hfeUEjZWVFQDFPJT91Rz9XZSp3
Y1RJMko1bXZ2SUFTMEFtajsKemYmRUBPKl4lNXxGaHB+ans3QDVXRkVfdTFoUn05PnFANVpnLT1C
I1lGNGkmZkBBRkkzR3sxQiRLMT1ZYSFSTzZwCnpJUVJKYzFEYCY4UFU3UWlAZ3EjYG1zVE9ZOS1x
N0xTJT1SaWUxM3E+Z1pUVWlwUCVGTkR8fipCJi0zYFM7blIpSgp6Pi1jRD09ND9qeWREVFctP0FB
X1kkQGUjLWR3YDNkZnM2Tm5AaTlLMTtuUj1MOEdPPUVhdD1QREBIclFzJEBvbWUKelhFcnxDc1lS
UEZtenljfXRuR1NQSkxRdF56c2pUKjFHVk1BeEVZX2pAVk4oe1dfJXZQTT8xQS1eRWtAX2U2bTw+
CnpyWHg9YTw+cDg1NiZvTkBwSWokNUtaYns8UG9CbERjT0BfT0F6cy0wQjQjNVk3dmNVTTVgS3st
ezMyRStnYno0YAp6Rld9aFhMK0U4I2tgd3JvRSUrMSpleChKIStKZXVwO0M+NH0kQVp0ZDtFT0dJ
KDFJX3U7TDkhZU4oKzlZMTs1M0QKemhie09XN0pSaEBTMWtCPzMlPTJXTTxObShOMWBnKypLOXRi
N0VOMnNNXnJwUTh8RXdvYT5kUTtPXip5QXtBMzg+Cnp1XzEmZmhZKzNgTFU/KXo7ZGVzXyZrUHx2
SkF8LWYyO3IzPmchVXdZeXRBeE9ARm5rRElHKjhgSDZlQytDK2RObAp6Um5RVmhKfTtTRUpkfShw
cHB3WktuJXhIZFEwd1pXO1JHakZ1fEVxeFI+WHBOXi1hNihOWExBa3ViJDJLKjZTNXQKejAkNzBl
NkxgbWwlISs9ejw0Mk9QXihMUD5GYCFPQlB0YE41RnlRQiUwQHhsTUk3NEBSaFFpSFFiX2gxbTx2
VyU5CnooK0lSYChBVT85SX5SQGRINmRKeyVkJnw7XzxtcWowZ0QxUEotYHdoeDItKyhWSjlnZ292
O3dQbnp+b0JzbkhFZwp6TiZYPzdWek9jQFZlJXlmP3JWNX0hKHpjM2lVamNhNmNGYEJhWVhiTiEo
bjBTNjlVWHFVPmF7NSVwWD0tbWpWSjcKekNkKHBsWiVCYSFGNUN7I1U2PXc9ZXQydHUoSXtkdk1L
SFNoQ0NKWWs0aHZJXzFVTUBOQ1luTTluNX0pMjI3elZ7CnptamRDRTN7MmUyNmNIK34kT0x8Y0Ff
Tmx6IT85IXtgciRCYGtidyFfbipeSU9Gb0Rre2ZtOWFCenl3b3hjJktoKAp6NlIwUEZSMkZXNnB0
OThBRiNNRGohTS15TENTK2lPN2JkfH1LRWd7RkV0KmJZe3cyfT0oWWo3eT9JflBgUDJ9cncKejdw
eUdyKyVMYzJ0blNBJlhya3k3VX1JXn1LNTtLfjBpc2JFZzRXT3M0elYqNG5WVnMxdXkhd2t3X31o
LXZjc3tMCnpvcGY3PHZxQksrRyk3fTkzY3wyZTRZbz8wKHJWZnlzKGZaNUhVJWZnOW1ebFhlUWo4
bVp2dW5qP3Apc2U4QE8rKgp6KlN2Y2Rfbzx2aUJKJHckNElSc2J1eSNDNEwqUHtFMD17bWdvWHN1
OWQ1OWdqMUc2MVI0OXU+OStaNlgjdjliJDsKentIR3Y+Sm9zJTchcT9ZZFNZel9lNzhYfTc8Q2ho
aHdFMGFgcmpkbStmO2B0TyNUKnA8N1k+VSpZaEFxfXBvY1NSCnpEaF5ua0N+ZTB6VVYqLXlMfE1V
UVFQQ0YjPEJWPnpQb0dJI3MjRERgT2Z5ZUZNcERDTWh+bkJgMzZeeEFzcmR+Iwp6e0Y2cEg4Z31T
dVdYM01AckhCcFRIdmllaEFkLVhNeCs1P2ZqY01xQFZyPUhrITApS3dSIWZrZytiIXduMGo8YT8K
ej1nQFc9VEVfcnQ2QFFmU15yUkM1RipAVFdAMSQreys5NDtSUW1ReEgzJHNDSkU1dU8/SCt4PEMo
NXMjRkJJTzlCCnpmUmYpekw3PWxwSjVfe34mblg0bGlxNXhFSytRSEVAQnhjZmp0U1Izd2o7KDV4
Y3YkZnpoQ1MqIUkyI3NAeCpfTwp6VW45VT4/KjhKfm9wMzducmo0fGZxT1QjSCZnbkt9VlR5JF9i
JTJScTxlRylhUSFTZkBFc1g4QFR6Qmo7UjN3fVEKenZOaWxTWGwlNDgxY2RGP1o2bTB0KTIhIzBf
KzhhWVl4dlVWUDNaPVgoYlQmSlFwV31XU244QWJsfD1KNVMpKEJiCnpld092aVp+SX1eKiFqUUA9
WmpMeCZuaml5KmA8ODstMClLUiY8XzdRckwrUy1KVkJLNS1WNGRQUkg4MUUmTXN4awp6Uyo1aThA
MERXSWcpYjZDKz95KDU1c0o5JT4+PyUmRD8tOExZWDg0USNreVpBMXUxY317dVJTKyk8MXZQJkg3
X1cKem5KITRQKWJoK1BRKSs0NDY3ZWxvYVg3KE51OHhtdnUtfjgtO1A/MF95QHNeeCRxZG9hV0Ft
eD9yaXUxUF91cT4qCnpHJj5YcTlTMT5KPSlGdk97SHIwbEFedVooS3t2eyN0ZlFlKGBhKS1qWVhy
czZrJllWKkBoY193cVdpUn4pMG5LPwp6MTJjRzg4MFFzPl98MVJ7cTZOaERfWW8tO29vVzZNYiYh
M1krSkpyXnU5OUJeZTNuanpSQm1BYTJsLTZvc2ZWPyMKejYrN19PTGNAaVlzKn1UWkQhX2hMMHA0
VCpOMXNaRzEmYmNiS3xRbVE9bERAUGNwTW9HXmFmNFBmJVNzeDlKPU1CCnpoKDhCbzJ5X0hfZGh4
NSE9IU0qdTJZekgkUiYzeFdJUzJ2P05QSDRPJCgmZno+I2ZfaUF9UHElZj9COGJkO3deUQp6eVFf
dUchJm4wb1JRblF7NCp8Z0M5ZGxVbExhZXVwdG00LVl4MkJPcnlPZHBNU3lOJUlNJmVFYWt1M1po
VlhgY1cKejRpaWo4U01tUHNBVktSWVRHd01RUWppd28wRkx7cXhLLTlObFcxYzRVRXMmczl6aDBp
UCM4Wn13cmJtM2MqQk10Cnp7QUwxZGJnZ2tPSkFoeGt0akRuJGpLX1BtSnleYm9IfjUyTDgpemM3
Um1KfnlIIVE5YlhMJjBkWGMwVGV5OCNmdAp6KERgZDNLbmVWREBxezFHdGw/RzlDYzkjflNkWWQ5
ZmBNYXpQZERMb0JFZnspJUNWSDRwYEVeM2UoO19JUnY+V3YKeng4VmxkbyVLZzZLa21TUkEkbCRL
SSlaKz8wcXFad0x4cmwpRjMyKjBDVU4mLVZ7czxHOWM7LWped0xIcXheNU1fCnpiKWg7JGFmP1g7
QGsrOH55QzVuQXN+UnA5ZnhTRERYLThsT3ZIb3hiQSFLYXdyYmZxK3VKMU1ZI1Y+LXxBcSVNRgp6
aUheZ1deO3JpQEY7KCltYiEyeDMjWlI2LUhqK2RVYyNMOXdebio8UVZfKEs/ZE04QnZJfVUrWEN3
QGErK2wlbVEKekFOSU5nUE18X0tsN0BxNl92MHpZdG5XeHYzbzNmNjIkemkjOUEwWVYpSGw2Rz9l
Jl55dVJhcGdGUF5iJURRYztuCnpNfXh0OyQteThXajc5X1IyS2cxfGY9ZnREdztRK3toeXZTe2Uw
Jk9xUCt3Qkwkek1zdWRDYX1CPHVzSXtPSztpKwp6eV8wdm9RTXpDSSg1YW9vLUtFODlweTVoaEx2
WCEzNTJmY3xJS0NjYnFNMkBvQnZ+akFpO0MjJC1AfVJvYG0rMjcKentGdDNHQjBMcF81NUlrcW8m
P0d9ZCRkREUrRis0N0tpb3lWJlM4PSl2UGltM2tgKFlAcCgyeXlWX0NgRWZAR04+CnoqI2xjP21M
b2BkYWl1MyVFWn4yQlFtfE5IKGMxeFU1Rz9MU1E0Q0FBZzJrc1gyT1ktWjB6dlFZdip9XlRve2NM
cQp6WlopWURmPzVfVCsjc2tLalZ4NFhsS1JLbHE/UVUmbGd9b0ZuPmcmS3RzU0U+Jm99QWU2cXVr
bCl9KGd7ZSUtUFAKemhvOGlYXklaNVFhTj8yenlnYHRCMlBWKkQqKmRYN1pBYkdkWTcxcTwlJV5+
KkQ0MFo1QG0pX3EwQmxobkU2V1M9Cno9ZnExV2sxWl4kPFdHeTJAO3BwT3RONzFTWHomUmlPcmMj
XiQodkdXbGRISXJMWW9yZ3deP1hheXBFbnxNTGRzewp6cXZfPTRBRUlfTWBAbl9WZF9OeFA9VWM4
WnZ0cmhjTiFNZ0VZWXwoQlF3PFp1T0wtQX4yRDZIZk9yZCRQbVhib3QKenRLQD99cjx4RU5zJTQw
bU1XOGwwJGxuKClBeUF1QSQ9XigmVTBLRHVRZk9EPkgmcyQtR2I7SVNRKXN3QV93ZnxrCnpvRkx6
dExZclU3d0dgVW9EIXdqLTc3WCg1cnFHcm1VWSRaKVVkNjlWcHspJF4qKHRPZUVCVndFK0FVVDUh
VzNFPAp6em5gMiF5OH5sYjNUPF4yeDI0ZE9BVjJYcSQkKUNRekxGbW1GQz50U1JzOFNiMXA7WWBL
KUhpX1p4WFkkOFNqPCsKenI2bHMhRXFKZnV6Zkl2a0FuXlllZCshMXRSZHd4O3BMcnc8JC1vUlNC
bW57cm19bnBiMHpyOE1hS2JQbDd5Xj9fCnprYFgwaE5HNDNpa2M0P2VQeShSP21kUm1TPlo3JHFU
UGZPV1RsPWZHd0Yrbnoyb2lpMiE3M1VBIzc5cTxzNmo5Wgp6NVNqbVg/UV9tI2N4Yml2LV9QJmYt
KnU5OyZ3aX1eZXl6UnQrSDN6SmcxPzJ+SCVJVXZWRUFgT0BFPkNNdF9jM2EKejRGQT4key1YXjQ8
X1B7ezQxWSFoe3xTYWFFYHQ5ZyF5Z3tPZX5SSjlNZXZfeV9+IyMlWUpiWlBoSlQ4Z0Raa0clCnp7
UCZte0NEWGl7O2xDb2BUWlBARSErYF9iJW9xb313cG1CMGRue2xTJjJ9LUVCc2BFTns3ZWkySmZ+
PXMmN3l5Pgp6c0c/Q2UlMit2UWw9VHU/a3gpZkNZVzdMSThEb01NX2R7KlczWHZ1QVgxZCU3RTBi
KWNrTUw1Zy1eWDFQV2czKVcKeiE7LUNfIUdXQG8zbG1GVTJVfmJ5UEgkZ35WWHhgQEVGNyZQT1FR
MkdDKHsxU2sxfHooQ3M7eVdgRThKbTY3dVNBCnpnUkdhM0grJm1wd1M+SW8rYVRrODhEekp3NyhU
fGpoeFQpRTZ8XlprJlMlTm1UXmpyPW01e1U7TmsxMy0zelpfdAp6byNrNjBnakl8ekI0NzcqRExr
dk5INDspPl5OPnZzIzg0bjZiTXVmNWhqYmVzSz92eyYpaztAb2c8bmJNRlBKZHIKenNNKGVZeV4k
KFJ1NDUhKkJJcGRaMFdlVWNlNSt4TjFtPztzVl8rX1VsfDtLTyN9Tnw5YXpAaShqT21leW9QaT0k
CnpKNmBrKiQ/PiFkP2p0bFltaU0mfWMwLWwlSjR2WSZpOE9sS2N5Y1kpTFIoUl4hNjJvLVBfVk9u
WTl2SkEyclYzVQp6KGFDKUpLYGBIbkk0eHV1ZTJAJlB5O2RodEljJUV3Y20pRGBCcjMydEYpJngw
OTktWk1wTDkxakUwSWwyeyhEazUKei0pKklXbE13aEc4R2tWdVJYelN6bTBpZ0FJZGNsIWxMOGAj
WmlHYEdGQk5WaTZzd3BUakU3YGV0VTNVeDtOWnV5CnozbT51N3pCWGp5P0A3VGM8cVdxfVB9MjhT
Nj49b2puc0U5KmBuPWhONDw4YXFCNkE4JDdJOHooRTlHcXxuMTZ0Vwp6SW4oKG9XUmxOTURIUEh+
M24/NmlHZ1FMYUNnWjNAMyZ1WXM2R3tARGdsb31fOGdSYlIjYShUWVVEI2ZPcVU7UmoKelZqITd+
TEBXLWRhSTEhPmd0O2hNQnFLU3VHPWg1PGE0fFNZdmhGVXdfc1JQVmtoWGo3WDkkR0VkJFR+b0BQ
Ujw0CnptZn5LbGMmbDVPRUN2R3B3MXViJCgwSkg3I2x2IU1sMFRNVXk0Y3g1Q1EodXkoaztxM0Ff
O2tYcXV3YD9eJDtpUgp6SUB5SS10ayUlb244KUAlcD9idDsoPnlFe0FsP3steDA8RCp7ZUMjfVop
ZmVecT99YCNNWkk+LW0lKStfYTklKHYKemREV2Upcl5KXkVkMUJOZENteWo+Ry1MIXp6NmQzUTJN
UTh+Z1dBfG80RVBSQklhekhHMUQpTm5fNng4R0clSENzCnpHRzE1WWRgR0hVaTl+RXcrRjI0eXJN
PTdnTloxYGVXIVZackBhX2tzamprWTsmeDFfRkptXmBHbDVIZGI+JEVhRAp6Xz01VXw5RDJkfGM0
R0sqQzdeQWhEPEk/N2MwJXcpa3RAK0lCdTZhcmxNN3UyeUFVNi1GZE1DfHA/Mlo/Un1uOE0Kek1Y
bl5mJj5wZUtQYitqbUBRQF52MWM5MnpUVjI+TVluM3J2RHdfKkpNVFczMl8xQVd+UjYoMXYkVGkk
OVBAZTw/Cno5O31vPmtqfTBWY0h2WHpPVDtxQVQzeUxAO2t9NUpHSEFtZEF6R2Rvd3VxRzxTTG5p
Rip3YXkxeEtIUlJ3aFAyVwp6Qm5OTEJTbVl8UDNxT2pvJUdWZFZBbzFePkNAYj98dElMamFSI0Bw
P3c4Yipke0RLRCQ3N0ZqdihtcjYkMU9hfFkKejg8elEze3JoJWJUSiQjOE5XMEx8RDtGQ0N2QTlP
cmcrRTBza1ExajBXMDc2Pld5Q0lEVGo7dlJFKDlZTVg3SHBNCnpBXlNhSUteMnh9N3coSyQ7Rikq
VlNqZTdeU1d4TVlnSXdXPWcpT3RsbTJNWk5NSikyQzZ1UVJTaDNnfDA9NG48fQp6aEZ3VUFTbERK
M3hoQnwhbjIxSGJzbjlqaUV9VWhJS0dibGBiRkhwU2o2RCR4VFY5Y0NsM2gzeXZCK09nPSRkUjcK
el9DemVxUjt3JF5FPDY+bnVvVn0lcnF+NVpNaUJ6ZHpvcFExMUxgUChWUDBaJi1EbnBZQk5uemhp
ZDw4MW1vUT9ICnpVcz5weVcqMlVZU2VUdHcqTDFzWmJIdV97UXs8WHE3cDZ4bl42THYtKj4paTxW
cXh9TFR7Rz1NViNMQz5zPm40OQp6PDNxJEVlQCZybHdxNXVWdnp5cCZ7N28xU3RnZjV2IVVxdyVg
LSRvLWErJlBIPmsmSmlEOT1KeTQmSH4zKiFlZHoKenpqTiV1O31OXzJ3PWxuRSRSM1pfQGtFNmR5
NT1KUDVqI0psTHxxb1VQI3YrbXBRekN5U0ZUK3NpUC1VdkdRYWNlCnpMUWNmYSYhfCNZOXtQWDg/
dFk/N2koSz5WIW14LVB8ME1IIUd3TUhMPWNuMXI+ZExuWnJfYWV7YTZlSjBNWG0qUQp6O3IpbW1Q
bjJxKnN7ciFCQjZmYTh0LTJRNGd9KzRYPyUmUClFPHp1Yj9QdihWOzR8N1RvTUtrdXM5K3Z0YiZh
dEwKej8/aFEpUVM3P2JGNkBnfkRUNFc5M1NGMm18MSlCeDQ0UEF7dTJsNGBDQGI0X01YdX1ZMHZ9
flhXN3FYfFZVPXUhCnotaEJgNGg3Z1oxP258QTBwSmYodWJxYS09cElgdFc3dlllJlZBbFkjV0go
bTltO3pwdjVIYXV3V2ArbkM7a1AyOQp6N0twZ04wX3FyTlZHPCZpeVRXalcycDZHQU1BVG54YUZP
Ty1DUyNzJFp3MlJKQz5hUlpebytYRlVWRnN1KHY9RX0KeldtQ3xPQXlTWElDfU9iKXFZQWRCcmJh
QzBWTkB3QjZ8UiNsVHE9TDchUntKVkQlM0c2e2s4UE8jd0VpWDw4NVlCCno0anN0WU59dWJRZkVV
TSFpZ1JWcyZETD9oNmlYX0JwRjwwZFdPX3k+cDRVTG02dXN0eDduYnQwMGp5azFgaFlvdwp6cEY+
T2IweFpKOFJMPHVtMmxEazs7MENacCZ4MnFwRUkoNFBtVDFtWFpwdSQ8KV5EPG5aTytxZiR7Kktr
OWt8SnMKei1raGkzbHN+QE5JKFU7VXFkOEJyRFN0dzxEUT1UX0JKdU19ZF47cHA9dllXJDJJRGoy
QyplJGlUVEhKUF8mJFI7Cno5RmEjbT5yZiRCVypOeH0haG0rODQkI3tgTUNOKThiT0xzZ1BRYyoq
Mk9HZTMwVCpseFZ2bz9KeiE2bTtvMVNyQQp6WnhzP01LQCVgM1Y1cDwtNU43NjghbFdHbzNVaEJv
Ukc2VDlLeiphRT0jaDBWOXN7QlNISm1FSCtebXVBdXpKVHMKejJIY3R2Pl49Z2NzYTtCfHQzUilf
M09vWUI5dCR4fG05O1FkVkc/V3g7IVErVDVFfU41RD0kRjxVNHNMN04jMkpqCnpUYkw1aWhQY0k3
bDR1eWZzZ2pTQGRBUjR5Tn53Si1LNFAlIWtQbzZJQWQmQ289Sj18QiRRZDFLMVRYbEl0eztkegp6
PXM3c19TKDhkUWViUnhmdFMoJGk4eG48JUB3YTZ4P1J2dEQjbEFuc3ZKdHZieWcpbVZ7TytRcHZQ
JSQ+VWpfTF4KekhAI288JWIzTVBGJG5DWXdzO3F3bThLN31JI0gpbERJUVVeekVLPEk4bC1tNlQl
ejVpWEtmdjVTJS1vVXNafDFUCnpUcFk/YTIpPSV+MEcmcHZHP2R8ZUVKfUpVdnpLR0h7XjFTKHFS
ZFl3UGx5UTwlNCZuO0dSV009RilGUEdOYlZ0Pgp6VyR3QU9edjI9JjIrdEBLcExTR0xLLVY7TDZ0
TVowX1Arem00QylaQj92cFVUTTd+UCY7XnVtaC00IWxIX0NiZH4KelAhOVZlQz9RLT8mdWprYHUh
UGZoZlVmTWhUZkR5P2w+RkB2Pjd0dkYhZXFpelUzPFo/PSM0PkpeTD5iU2tIOE5KCnojeTdteUNp
V0J2bCpXVCVTYzZHMWg7P0VEVGhxK1lqSHRySSo9RkhaNDMoaSYqNCFCUEtfcSEhQX15M1coWCRG
Xgp6IzFiUD9SeUkwLWhLI0MwMnYoJEx1I2A3THJXOEZxYVRlelpMenIkcmRkcihWdDV5RGtvQyRx
ZDU+Rz8+eGMrQE8KelZ6cmdoTm95TlhgJXh2bTF8Pn5heCgodWNlS2N5Wm1USVE1b3tDN1QpPXgr
RUdYViNTZkdxWXF5cUJSKGc0UGQjCnp3flU5RT5MQy0oPGp3c3UzPX58ajxTZyN0dXZAayl0N3V9
bDdlXn09djM7T1UrK3dFailDKE9NVlJTO3gyJmV+VQp6aVczVCNNJUIraippKSlqQT4zZldkQWV6
JiNGNG1JekkyWmxhaVBnd2dDSjJzUWo0UzBFdGRIRTsyWlR0anxiYC0KekQ3b3VsS0A1eCMxZHxs
Qm9YX180SFYkcHBZPkxDSmVSX1kkVmFsQ2poVUo8TldzPFZCM0FUJShZN15LMEZ1aXJNCnozWjA2
MyNiU2VGNShBTDVPWV8tYGpMXzxoZElEMCF4KiUwP00wVnIpZVFRQVF2bUpNQXNgTnNTSmdfO2Z7
Wkg4NQp6WlNGVFMpalFDUDBocSlxWTEqLUUhUCRkPEJ8Tl9NZyZIaGtzdmR1QT17KCZGaVQ9SXNg
X0ozS25NSjx0M3BgO1cKelptJHBVOE97d3VqeVchZ3NoMkI+Mn01eU0hV25SayF7SDxZemQ/OCVQ
QilPd3xMQ1hII0FFTml6bEoyO1ZoMDw2CnooQCg4WkQqcDViNkJoJCRlaUVFd2ZXeUJ4YWFuKipl
ck12STJLQDIyeFJgPmszVUQweTA+Q2NkRWRfaUF5az52ewp6RmFVNTVhN3FBZWFCQnRMVEVKPU9o
YT4jITBET1ZMemQ4d0h0WlM7a0FFOHdUWm09IztxaWlrTXhLOHIjJWA2ZjsKenZpJWdZazlmIXda
an5LSU0wcHJuQitRWlJSaVh6ejJjbTRTXkUqenE1MjBpcmRZaXZsQDgyYDZQIzclUkEwflR9Cno9
Pl9nK0x5QHgld0xuZFI5ZyZTaSYwdll0e3p1OTA5MCh0YSg+K1owUEo9PEpIcjFQV3IxOzEyWHkx
Xks1TVV3bwp6K1dEUnJkPXlIbmkxWE18N0JKMVlnfkgkN1ZgTX5vOE4pVTNjbkozQEE8bUxRb0Vw
Sm1PVyZWJjxEe05sKCRwZF8KenxIVXx3YVZodjlPVWhvNUt4KWIzTUg7eWE0RSlPRSt6NldnVnh7
Z3JPMWYmVmw9d2FIYVkjSk9YQDhBO3AjMUNnCnplTGtXQns9SjB1eEQ7Pj4qZTkrbWlII0UwSXc+
JWRNb3VAfjNVYGVhOSk0U0A/bE5Hdyh1Qj5qeGpeIVBmJjl1fgp6Q3JIN2ppQWRyRkchdElOP25m
bnBNMVBUV05VfV4kLXcqNVYpN1o2UHI0cT9LY0UoRERrTmItP2IpM2RFUilNSHoKellJOC14RTBQ
b09NTi1NLUIoVl92eUpOcCY5UDZja0ZzbWFWNFVAQGh1KTN9aDl7b0c9Jk5pMCNnNUUrVkFDVElY
CnpqcXYpfkFGWUBMcE5KfHEhKFgjP24hWWBhUHw8fHY3PE57bzBrR3h9JHpXN3ZVRFN4Iz47WTFB
SFZ3cCtoYjR7aAp6ekolfmpBQSlPJEs9Jm82OXEpbmRKamtfUjFLNmdHVSFrNDFGR210cz89a1l+
O0QodVdeeFdHe1ljJlhsWShRZ1kKelZnY3RoQ3BNamBAYitzdUhQcEstKUNmLWRDKk1NeihJRlZT
TiRAWGc1Un58YCpkX2NYIUh3aj05I351SVQhcWtaCnoybVhIUUMlQjdoeiYwbmpxTX1IfjB9aXF1
VjJkXz1YZTZxTXhjVCFhNHJ8Mk9DcHhuLXt3K2VtQ1ltPD1Ga2JCKQp6JGghMVRuTj1zbWVFUEtN
WENRJlI3b2xQJEgyNlcqRjsmTURLRnZJXyZgQD5SV20qczlhMWFZR2Y8LW0kMllIQlIKenpHKTlx
biV2cGAyeVArSVAwQEYhcjBAc204TUUlbjZzX3QydVRFaV9IeTFEN3RLbXY4RSNQMihOczBsX2t8
bzh6Cno/OTs+X0AtQiZRXldHQUZYbXdvb2QpLUk7QDZrUUpfP0thTng0WF4lRjZaeDdAYTtRSUN9
c0d9PlUjNlVufV48Zgp6YF58VDx6akRYbHJPck8laiE4Yz07dyNoMWY4NXNIZnxrS35gJD9nSTxT
MFhvLURtST0oOzE1UXZSRWV+KV5zVzQKelp3Jlp+ZlVkfHU4Rz40VE1GI3B3OFRlTUk9bEFwUGR+
Rld5TGwoWmNOKjF5WkA1RkREMXF3WnE0SGpDe0lwZGxeCnpQM0tIJlp+K0o2SHUtfnhQdldDe2VE
QzJDRWZLZmFKP0YzQ19xT25SZX0xXjlNZlpuO2h0SyE5TiZmYWA5WGMjOQp6d15KP2MtRTF6RT1y
b2RaeGM+YX05cFB8ZWR8U28/fDdxZ2RpSW8lMnA8LWZRdEtCakEjdkhDS3Qoe21vdkUle0QKenFs
OXVqalFuMjZIaVNnTz9qdWFQMF59WSVwfT43ZEtEbDVHeDwjUHVFT2JwdypIWj1VMjU3NFNXeFpa
cVRnR2U5Cnp4Mi1zUD9CJXdgdnM+VG5wJWRFe0c+UnRfPGFwIyNNX0I1Mm8rUGBtUUNec0IkNW1+
K3U0PkNzS0NURU0/eTl6aQp6dEo7cGJuKGRBPnZRM01tM2BHKFQhO3g3fXFMQE18WHhYS0RXYlgx
YFF9YHliWVB0I1pHVSFOUjN3P1ZpOGBROGAKejUlKEYwd312aFJMJTQpaEM7JkdsRiYySF5NNH1a
KSlXdHczSWAqZ21hNihEdzxfNDAjXmlLMEEpdUV1X0tHbUU0Cnp5JDVzb15HeShhMFF+N3xQaHVz
NCQ1WHFISyhyUlVTU2lOQ1ZyRFlyTTAzel9AJV9lJlo3MEUhZFFzal80TFcrYQp6elQxYzsydC16
QkthQU9+b2t8PzEtRVZHJVJJYzdALTtDYyZlOS1UJT13PGxmKVJgIWdhSEAlXmJENWU0KXd1d1EK
ekBQIWZDWG1RPn1gY0ZqdCkxLWUtKUVfN1A4JSpFIXApLTY5Ny13I3YqbnxjO2RFMktFKlRYQF9T
eFYyPVgzSk1pCnoxeiV8cV5ZTztCbj1EXlo1PG5KJVFDb2FrRChFMGB5VVd6QyRycFAoalYhU1hR
cVY+RkF6PEdJKUFucHIrbG5yaAp6WVBgalAhSF9SYihOd0whVFFsM19qY3BydWVBP0MpSmBWVFkq
O0FedGg5c1B9dzBBJHcrUChHb2lUOTZlbURaTDEKemVhfHlPbm5XZiohaTg9Iz9KRH1pNUpLVDY0
TX17fig0eG1QSTszbkkrMD0qXnhmMXVzWDU+PFZtU3sxVzk+TkBACnpwfD1YTyFMc04xUndoQDFv
UDxBTUY1OUd2dk1+JHFVfn5zSWFRKXt3LXl1SkVjVX0pQTx+T1RtI3g+JVdkblV3MQp6aGNyc3U1
OUArMVNuXz1LZCVseTleXkVsKz5SaWV6VGNkcU1YPVpPTyQ1cmlJWXBRekFiclUyMkA0UlRQZGhZ
ZFgKekVVdDtgb2orZk5obnQkSjAqJWw+RUs/TzJsR3Bpa1o3YTB6bXdtTUxlYWxCfDJDbTl9I1dN
KTxsKShPbGk7WTxKCnp3UW9TYVZlNGJrOEhBbkshYmp6eWt2S1YhZ0c+PH42RD5nXz5KaSsjV2dU
MUp3UkY1KyoxMHYqanxKYmttRW9+QAp6YlFOJmx3eyMrbVA7bktuc2Z2SDREbjNzTVB5PUZwK1A/
SUpyY35pTT0yV25fO2ZYVEtTQEJockZfYXBBPDlTUncKejI8Nj1xQXNzJVV4SVNOVSQqXis0THdk
TXdNc21WUTxVbS10clR8c0JFXmxMM3FxZUVoZkwoP0NzdGp9WXYwJVliCnpDSk1LRSkxVnd0IShN
MHpnJWFtQ0U5QU9SblctKzRQIXx4P1V2ZDtCYSsxQmhOJXc7Sz5jVWx5Xjs/YHM3R1FvQwp6K2Qz
fHAmXlNPaDZ+SilUNlh6PHxKK1IwQmZkWDFjJHBYRUZScFZaQzwtSnpIIWE0XiQwSDRDNXkjaVlH
dkxvZCoKeiotP0o/TURIcG0lSmwpRnVTcH5jWGNhbm9XQHA9WXMhP2p3WHEqME5ZTSYwQTMpbH58
Q1FKS2B7JUo3fiZfYDNhCnpkPVpKSWs+TCZAK35rMU9TUVc2UXsxYmQ2Wn5GdTIqbnkhQkw4Vjkk
NG9PTWYyP0NucWJNWjd8SmhydkVQdmdtRgp6SntGJT9lbEw1am1mPXltNiVreypLZnQzSSlQWjk4
Xlk4e15FMUJTSFp7JlNqeGs3MH0xMUYtanVZbEJReC1pZUgKelpAUkdESHo/RzlRRmdaKjQtQUwm
UDN5diQtcVgkYzhGLWRZdX1CXnpTPSMqajRqPnIjJkxyUT4rJEt2R0koRkp4CnphRU5RdUQ5SSEl
ek5manMoRGNGYU8kRlVlPVc+MDZgTnAyXjt+VD9rTjI1OG0xfXhmODVeT2V4KkdjUyVhayNmQAp6
QHV9eTl2NXwlUXooTCN8JE5wOSFFfmo4Sl8pMTVVZmRQIzFXJX42T04jdkRwOHJ4IyV4OHFAeTcl
bjwqISQlQGwKemA3PjdgUlQrYFctY256R0BuVz85LS0hTnl8RT5KNUx0VjNZKXpze2Y7I19ZISlP
b3MlfEF9MXRGTWclbGB+KyFlCnprZHQ8KSFMekImPyRySHczcXdmTHtySEVfWjB1VD54TD1pTlpa
N0hDR3tsVX1fNU5oYU1mZE48RDxQMXFHIVdKYwp6ZWY+b0RkOFRHUFVlTjdPSFRHbVRZOCNXJC1x
WmlhcEhwPylVNzBwdnt0cmIwXyZEdyloTFJWMGh0WkpnOHY/Tj0KemRUVFN0YTZ2O2ZJdGhCakhp
ezFrJiV8PlhUc3hoU0FTVD50THt2flc5UCY8VkY2aTE2Wi15PlR3KTF0ZCZfO2ApCnpmbz5PZXY1
XlgpZylqaE0/MmNgPVA9N3tETyglXl91VUlKSXQyTiFuc0RNSTxFIzE4U3FKWlZfbnR0TipJKWt2
Qgp6ZyZzRGpIWU9mdnpkRC0+czxXe3s2WlZlZ19wXyNxQn5tYCpsMVFkYUxsKGd6dXBiTnkkMWZR
eHNHIWs2dSVva0UKeiVidXNGelM5fipiOGhqbyp1O3BUZEd7ek5hajczdSttfVZDcXhISTUoUiE9
PTtkISkmN2hkaSZneVFgbkI/eHFDCnp8M2goUV9oUDJeR3UociYlQz1wRWxtTHRgUVNhLTU/Xm87
dDt9SHQzS1B8PypmQSVXOTBLKEw4c3BeQntBb3leMwp6JHsqYm8jPmliXipkPCo3NT9tWCpGNmoj
b05BLW81dUl2az1yTX5jIypwXyRVMUJvZGVvN2hDdFBGeUVhcW44a08Kej9QR3wkLW9PWGFSJDMm
KWNqVlIkKGY2dGh4fkB0SSRAUHc+NThDKTQpYFpjPFVuYjJ9K1BLJlcoOGozfnBwOVJQCnphNTdt
cVZCVzA/M18qeCE+alB3NFlWVCpMeSswZ0U2a1FpV2RUailDOT0tMDEhVXc3U2Z6PFJ6VUUxXila
VjtQKAp6U2NTJUs0QjwtZDJxWUQpLUB3YHtmPHA2O2lFalJzR2NpVDJYbzJqN2Rxal58Q0B6KmpO
c29RcVMqU1VySS1iZV8KeiN6Qnw0YCN1LXJ4P1lObEk+Kmw9b25zSmxedWBndGFhOTFYTyhRRU1o
QVJJX0JjdVhicX07Qzdie35fQW4lKX53CnpyQmgtM3Y7S2x0aXw7fC1Sb315VU9sbl9gc2xwRE56
dlpIMmZqQTwpcmNMZk9tey0yMCZwZHtuYT8zOTJHZnpPTAp6fDcpYnJmU3d+K1hfKD5CKz1Hb3J2
Mm5tUChmJmFYN0RYSU1HfSYrSVF0WT5VaVNKcCE4SVclc0ZRQ3ZONDIyMTwKemdEaklrJHE4SDt7
M3VaSDhoVHhDaSFeN247OTVPWjVkP09EeHlJenYhVU1kOCtqcFZHbDV7fWBTRjBFI1F1PVImCnpO
dkBpWFRJaHZ6VW80X2lLJmxASXw1MU5aWSUyTTNRJU5eTl96WCMrUCVRPSRJKjNyNDhvTHl9cV44
QyVBK1hZYQp6MGs/NlI1VnJycUxmd1hzcCtVLVZUaSgpPWVaLWYlOSl+MnptdX0tOTV5ci1Ad1FC
eHRJPnh+WE9YeDkzT3coPXQKejhTRWk3UDUwdjtrdFVSaD1EVGhAWitVSEZUVTgqKjheQFNpKzhN
ZD5NcHpEUExsdEVSMCZpfXwkQTdXXkl6OFd5CnoyX3t2dzFwMmtsaGg/Xn1OQjNoQkc8OyRaYSFe
WTRAcnl1XkFGeD5rVi1NQFVTZzZFOTxgSWVDOEFmT2pkamRoNQp6MmtgdG42SmAzR2dIbSh4cUhZ
NkNQRXghKzZgcUYzZn1sNEMkJT9jMVpmJihaNF83PTBrK2Y+YkNGU0Y5ZTRnX1QKeiNXdjR7M2Bs
e1hmPDNEVTlVK056aGU9R19YYzd+YiUpY1dwcVRjaGo5T04mb3pyZEVtZUAwYStMVnV2NWhSOEt+
CnpNTEFzMShadSVHeU5gRjNMNiY+dEFTeW4mXjRsTHIwLTc0bmE5I15rZz5Ne1JATEpVbDQ0cnxU
U2lhPTdEKTlKOwp6QTBfKUokKzxPMGI4JWU9ZTIwKVQyTylEOVZJZjNDSyplI1BUVHlVcFczYXJ6
c1FmbHxnVX4rSF9aRiZwZ2g2TX0Kenl4Sk8lWnBDelIxTHpJOWEwPSk/Zl4qU009NSFFRmpSVl9P
OUJvXjFAWXAjKjRTe0g4Q00/Ml9aZTxjZ2BvcmVrCno2SiYoZ0ItfCljZkZ3MklkSTJRRzttdm0+
MlVqPngxYWoycTsyJDlpbilWP21WOUdCPDwwTnJ3MkdTOzFVJTVvKgp6QW9RekMrQzl9dERfVyMp
PzxFeU8pPSY4XzxvYlRra340RDBOZXRIWHdERDIhJTJJejR1aTx7d1VXUGBvXjlWVUEKek5FJTtg
bmhKYH4hNXYqSk5UXnw1OS1ENGMyYG92Iy1eSy0hYkVMWjxSXjZyPm5lIyYzTXZeLXYjb3FOYnVe
JmZBCnotYFZqc3ZHMFlXSm5+MyVCaTxiJUJBJjVRS0I0eGVoSHByTT1rTl4lczh6KDs1Y2E2VVMt
NCtWMSp6SClhcmdlSAp6dHMmREI4a35OfDJMfEdiS3d1JENKUmd9YHMwcFIqcGxyOUx5PGdVfGx8
NHB8eSVqSi1oI18hN2lXdEpYcXFkNHEKemBMeEUrYHJDdyZ0dT08JDtHNmdTYF5MRFc3YjckUXRK
YlRIYShfV1AjKGxBVVhwYDg9YyRYRlp6aCFgWCowVDQlCno8cDZnUmRNYnZFPyszVz1IbyM+PHAj
MFlpYTVzPVJ7PGc7ZG5GQ3podn5MKlRJQ0FgVjRzZkhzQ1UhUSE4Tk1kPQp6TzluV2l0PyZsJnc7
YlFAe3EkUm1aPE9uPTlwQzFQQXctUkRQaHdPeyotUFd3UV8kN3lrQm8wdkJrfXEkTkY2MlAKemFL
T2BzTioqc2d1c3NzMlBzNmdUMW4/dzdNcmNWN1JeQjlINV8/b2RrUClxTSh1JiphR2A1PCtSUkRu
bV8hYkVuCnpYbG9HSlA1MCYyVkpvekVZPUlfKGNrT1laM1hnQm8wfDg/JlAyPGQrLXVEaCpeUzJ7
dmswKk42a0w9Qj9wPW9DeQp6b3xpaD9IWnVoP0txZEMhblVHVSl1TGskbEw0ZVhtV2dPT2dOcSN9
OyklcGNCJFU1anFBYWpaNFRfeD9JaGVsKEQKemVxWF9+MmB1TjNVY258ISVud1g8MTtrVzk0KjZM
bzxsK18kZV59aGpnR3x0XykrWGB3WU9xWk42dTwoX2ZOV04hCnphYFA1ZiZCQnxYUSYxYCErdCNW
TitzeXQ4WD1gSmlxdW1haEUwZEBvO2w7WnMhSGBzNypzbVZXdXwxI21mZihmQgp6R1h7Xj5RejVv
cjFlRX1AMCVxRVZYI1dnbS1MclZwMVAwdm1qWnkzbGhwUHxqMyYyR0lwP2w0UntaeGxVclo0YEwK
enB5QUQrcCloRnAyfUIqaEYzZlNOejVJYmE9ayZPdjBgITZvRllZalFLc0ZSTVJSOzJuOXFGWGda
Nj5qR3tfdjJzCnpGKXRGbSZVZEgjSTxOQEs8QngkclF9ZjVWK2EhN308fmJ0a1l7S2JKKmNmdFJF
OE1YZWQ0amd7UGc3eTQmViljVAp6Rio3QD5OVD1zfGNHIWo4dklrKG97bikkNVB5RXU4aWxvZCN3
Q2hTfXl8SCRZPyF9VWU1Tis2SUlUOHRQUUR9Tl8KejV3MSEhVUIhUkhDPWlwMm17LUg0VVJsKWhD
fVMlQFR8aUppOFlycU16bnpfUHFXITRlMGJkRHJrQj8lUEJPZn5rCnohKkgpc19lfCNjUGYkcGx6
ZV88Y1g1OSN7cTJiS3FlUTBIUC18PUFsN3FuZmglM3RKRmhDVl5ZNXw5Q2tlO3RVXgp6cXgrU2FW
YXc2fFgybTQyeyR1JkZqJiRzWU13JFEhTFl5IUhHcmghK3tAJXY2d0YlVEgzWGJBI25APztNS3V7
OzQKejtkVnBfQX5zKDlVdW5+R3UqflhmKD5IIW9vNHlPbE19dFBRWDYrZWsmcykpSSg9VGgpQm9p
I1VSbWEycD9gX3EyCnotPzNHWF9+PCpmPlFmTHVqSCZkKilfPHs4fEwhWE96ZkcmSWkqRDZFYlBm
STtZU2YzYXg+VnBHcG12UlkwJFA3Ngp6em91PFpwdGctQ3RJO1cqTDhsUGdIYmxaemBTKWJmWmJu
RStQNWR+VF96MWEpKHxRSXhsaF8hczk5MzRlbnc2N0MKek5EOVdldEY/MitUcShCbkhfd0NOP0dW
UXJlM0lQWUVncmVTcXB7cUFQNyY0UVh9X0E/ZCU+MTkpfnRCe0c9NGZUCnpJenoqO2NNOClWciFr
WShmM2Vyc2tGajN6Ymd1IXFwKTJlXmdEZDgqQTxwcmJVNCghZEl8RT1NWkVyIXBoSXNIVAp6Y3Nk
MlEkNHpyKTtoczlUPH1BSk1fYmNsMXhiZFI5X2QpMV8xeiZfbHJQNDRFKyhJbSR4Yzh6fG85NXUm
JVZQMX4KeiVPMVJkJD9tPFoyNTBCbnRpa1dQNH5SezE4VSN4bypQTEJ7QGk3Iz8meT08TShLSUFP
NHloP2xmc2tIcTl4eFZgCnoqP1pRMDQpPH1GeEdQMlhiamR3JSF2al8lMFN1U2hOa2k5eXElKTlo
V1g2VzJ1eCU8YDkoQGAwTmwjaSkqQDN0eQp6KTJ6UWhEUGhranJ0KVhSYWpqSDF7fHdNaklzPn15
ck14TGI7bk9TK2VTRF52NE91b3M4OUcrc0c8bE5GOCFtVXQKemRBODNEQGZQU29EOXx5YCtvOWBG
Vm82PG9rIXlBXnAydjJOWSs5d2pGYGcmfGE9IUgwXztMZWQqP2JlNHstfktiCnpeRWJZSFM5Z1Ro
bmY3OEVeJSUoU3tTUmJrNXUmR0ghQ25fRjdhRGllYm9iSlpJYzlnZGxaMEhnZ184RHNzQTFJQAp6
ZSsxfXN2dWZ5SnEhbGt9bVN9YSlPb252U3ttbG4panZ6RGtqPmIjRXhyP3hNTlZTVSl4KTghQVFW
NTtFM3hQQkEKekBGNURKR3k5QkpwTTZGWT5wcWtmVVQ3ZF83P1NQdCFeSWVLbX5iaS1tez1FSjNQ
b31jTUhmZFptNHZVcTJAKkViCnpgR2NZQiRxbVdYSnlXbFVLYkhOZjR8SkNhP301UXFHQHpfRHdF
Nnl1XkJpXnw3MiU1U2R9PVV6TEdVeyR1dXdBTwp6ZnoocyM4bngqP2k/RXxIJXdCMn1QUW5WS0c2
WjJsbVFeb2ItLXswWUhzK1FIJiNIQGFAQFEqeHF+LUxKMkhZfnYKemRUNStvQ3tPMUBYazxjPWt6
N1g2Rm9oeW56bmRJejImUlg7MEYwUiFkcW1nYT12MGRaNjJ3RjgxJWt0aGd7ZTJ0CnpDX2d1NEFS
ZVNEUFNGP1hvP1ZiS3hSN2lOUTh2U3cmMlgjcDBnQyZmTFBUNDhCZjkwamxwU09NRDsyXyVeV0NV
TAp6dllVYFRkT3MwYj15cyF3dHdRNHp2O2tydG8rPm1VKE8/c15edHcwPDNUeHwtWUFYdWxfZWMk
SHRiKUBCY1RrdW0Kejl0ciZeRU4jTEpjb3ZIV0B0e0RNJn1EUXZWeiR8YHI0WEFsPko7SXhLLXdj
Zlk3eytRaV87czwkWkB4fUBOWDQ0CnpeQG1LSGEyPWZTUnRtIU4mckhHRERSYWxjNlprWk5oSCR8
e05+SmsjSD9qI35BbX1RKGpWfmhveyNubkhqYygoZwp6bV9kOTx1WXpSfns4Ujcobz5pZUkzeUVK
NmUyfm1WIVl8bzJ2V0R7T3lUJnlgd2s4NDdzMUloWDJ8aHgmeEpAOTsKeiNDTCFtU08yV0dRVW4h
YEJyXjZ8Sm44b21nNXs1aE1kZWFEX2FQeFI7Um5jeFNXdTtjc2E3aHo2ezAwaCs8QDIwCnpATlJg
d0N8Z1J0Y2FXJEZkJmljQmhmPENmWj07LXxNdn14bGhySyR3Mz1tZ3A2PShgVkxadU9ubHt1Pkwy
bn1Sbgp6LShnakhmWHR4dFE+Yk9aLW5NPlU0WUp+VjRaI1laUE50TVEtKEBOM2ZXYXd7SGhkNWZZ
VmpaPVNgTkglcTVNe0wKeiReKzA4M282UGhuN1JDZCFyamsxRDk8fVFscC1SYyYycGhKcUZ6SiMx
V31JKGdiUUpATFYqI15gaDY0PGRsJGZZCnptSilGdE9RQX5tMGp3OWR4RHRlTnV4VHo5anc2KzV2
K3xnWEFzSDcjbGxgKnsoXjFkZip6aSEmMnRVRSRldDBONwp6VShOPTN2TGt4Wkh5cF4/QEtBYWVJ
WHUofG1FTFUtP3hLKns1SX11XyU3QHkmQEd6bzZGUSthU1d2PnU2TUEtdW8KejUwZVRqTVhRIUEl
JlpXfldpIUhLVzM5JDY2cnpDWGBFPkR4Kko9RjcqTzJ1UHAzfXVgU2kjOHtAYkNeMDJLZ2FQCnpH
YmhnaT52b0lVazRxS0RjQD5KaUFLdHBneG1lX2V0ZTgjPXRKc3dzYFc5dEd2SGJgPmx2dWNsZF8z
WX45Q0dAdgp6V3sxNGVgRjlGQDI4TzBsRmZgUXwwdDNjRnpkY2g3KEJfe2RBZ1A+cDRWXmA3ZTsp
ZW5vbHBXcGNSPUxfOTBnalQKemFFTjheTk1QaHtTVU5ZblpRezAoRllIZWJyUWxKSiRjQkx4Pn5k
NW9uckxfY2clWitaNVB3Kz1FNUt+RmtAZmJZCnpRMUpYNilXRmFhUDtZQXF2bFJNZ2tzVS1pWj07
QjshbH5QK1NRI1JDR3w3T18xYHYraU1vX3smNEdUMG9oNyN8YQp6OyU4cXlLYWBBblBBWkc9c3Zk
Tk8hWE14dERjZXBhKUo0Mj04aj4hd185OWVqS1ZEMHooQ21XMldFR2FOY3hqWX4KemNQPUJXWkc/
cihgVFdKbSNlRHV1PFdoZCRiJGwlVWs4UHN9X0BTJjZsZWRJcE5QfEk9P0ZuRUZQS1B+WnkrSSR8
Cnoka1BUP3M1bmQ/O3g+T3M4Q0xQfVZDeWg/eUpxKEhldTJnXlZ+cD5idXF4cygjO2U5ZUQ+KT48
VlF8RVUyMHFCfgp6R2t5cjxwO1V8Y197RlhHMjRjN0dWXzZtQCFafGxuaDdNa1Uzd3pRTDsoI2Ij
UldsYklGUm83Zjk1dS1nIzdpIXIKenhpaVEzUVcwQW0jQkJYdXRZM3lOQ2cpVU5JIUNiTmtIZj5+
SH5DXi1xO2FIQUV9cztHb1gjaXQxZHVNX1NSNXR7CnpwLUI8UGREYnYlP1dtJj1XLUE8NU82OWBH
SCUtVXc0b1Z+akxMSE1BJnF4U3Eja1duJm8+eWxUYzdtMjVGJklQMQp6RCQrKVh6JChFYkJUZHRu
YDFEUHk2PVUkMFNLTk5aNyhiXkImRyptUmdhUUdQKSN0dU1iWURYNVdCSlZIZmdtZzEKem1GY3A5
YztvPD1GWmtoYDs9XjI2JHdTeE5VKTEtfWdXcGB3RCEpcH08M0x0WDEpKUlSRlFFNEtjSk1lVk18
RyNjCno0SlluPjJ4RDtWM0p2ajckJGI+TDR+dWQpZFUzM2MwMnRPa3NQP0ImRF5+NXMkKldhKD1v
WWFCOUZTVC04fHVYUQp6NnQjZGlhMDdDMmA+UWFjMStXTkpCeTA1WTZybXlmODh+Nz9EMSE0Qy0q
YCNfd0ZPIXJwdGc5KXFtPEg1cT9EIS0Kem5vLVdASUooJT02Vil2NHowfnQxKj81UmdWMl92aVcz
ZD5FWlhZeFpVWnM2aGBPIWRoUjQ2TENHbzslJTdHcmRECno2V092JkVDNmFGNTg5PFJMUk5BY2so
JnJZVDdzOG17aX5IQGFGaH5QKXY2ZjdgOGpvSGYhc2BQMVk7UUNPZHk7awp6elV2dno1ezhvJjhi
KiQqbTNhTT5ubmV9Z3BWb3ooKHl3SUFCLSVfZmw4cyN+NnV2QSlkVXk9M0d9ZStOMW1fOD0KenA5
d2duVDxvTTMkdUBFelZrU01FJjd6YE5jJUElRmBuTWZxbH1rZGJjOVB2VG50VyhwdT9vSz52cDVE
NVFlWGYlCnprc3BqZ0M1OFQzV2FOQXZ8RXZ6Qzg3NGU3NHNSOGNmc0s5SzM/JF83WlZLYTVaMnBX
U2htYTtYUG0hdzxSN1kmVwp6dHF3VFIla2pRWXV1KStiIz5yVj5EUWFXNC1yaHpJP0VGeWozWUxm
czY+USFPODdhOGVDXiVlXjlZVm4lNVhDfT4KeldtblVqPXNPaj5VRn1pX00hcDNVdnJRT2xWYEtN
NUF9Q3A/UDFKZyU8Zmw8czZlSVl7Y185PVJEQzdKdXNkTU00CnpqQHlKQ20yd0soTHpDbjwzOWwh
RnctSjZwdHwrTmtVS1F2VVFaTXdrX1RuQXJORnQ2IW1FPTtLP0plZEZCRjktXgp6Qz8pO1lHN0xa
e095UTNwWE9MI0NiMG4zUXVNM3poJTxKfSNmSlFWZG1lRmhBaFcqcCpJUHNsdkZ2cVBxIT4oJTUK
em9EUS0tPnQpbWxtfnJYbUxubFpWPzV6ZTBkVSRSWTdAVCZteUdnZiFjdDEjbjtCSnlVfDJHJmlS
NTx0NVpKP3cxCnpKbCUjYkBvOSZFVUBpa1p5dHtROW9gY3BldG5eTjlaLSpgaGchQGhZOT59KCk1
Zz9xaEB1bH1vKyE/XitWfGJWYwp6VTsrRmJQelFMOWgmSGV6YDAtKVBNTkV7NVlgY01NaVFIQGQx
cip0S0JpVnZ2PU5NT31ZYGRPcFgmd2x6bCZ4c2QKemBRbSlDeCpidWhnTkNfO3RUMkpIPEROc1Z4
WD5KITN9ai1TckApakRGPGwxfWduPndJTmlaY3ZPbVZFJkdjdWlACnpAPD1odG9TdiR1K1gqV3tv
SnApPlJnbSNeS0BsKThjZjchVUt9RHplTzVaZjA5UDNAQFAxaigmOCRiLWZ4R2Y2ewp6M14pK0sz
fGAwSEIzfUNsKW5qMjhDKndHbypMSkAlZFgrSVcxVldlVE4/Xm5oRV9qcWZueDB0d2YtZWBiR2xE
czAKeiQ1MTVLRG5NY2lDKDg2RitwRVRNaVNUU3F2I2JjOF5Obm5jSVo8SGQ3TkNha1ExdGxZU1Ni
RE5kaGtgbWtoM1Z7CnpfO0lYU0ZtOU45ZGh1OWIyKk57eSFwT3BfUzxaLUFQfFJiNXskPE9qUWh+
KEFHcHx5QzZpUG4pSnFvV0dFamlWewp6elowVkItQlU/a3tiVyo8cD8tcXRFWT9MU0V8dV5xRz5i
I1NHMCUjQFY/WGA9JEItQDtTNXo4NGh8RVcxdjlSXlgKemAwSz5BRWlNJm9Bejx5RE5NfVpONFRW
JWtqTW5sS3g7dyhpTW8xNCFUOEJ0NGhHZ3g9NHViRWpab182Yyh2ZzE7Cno9Sk95SnJWQmJrOzFk
djhaKmMjUlV4bFpgY3lLVStvUXJgX0RfbHZUR2t4NWUjUUk8YWU+fVVhKkU1bWRLZnxvUgp6UXp0
ZzF6YTx0bj8kMUlhX19BSnElbFlnSmNNWGJpNGFIXyhYIXNsdEc1SVlXVjQ9fDlJa0FHQ2J6NCtF
bVg/aVAKekJ3RFV3OGMrU1JvQFB+ZDh4fXJQTmt9VEhQRzV2fGNecHZEaWVObTgwWVBBb05iUz1J
XiFPMnRwNThQVTJHNVVTCnowI2E2MmFIJT5wbWBCbmZgOWwlTHtsOSUwOGpgWjd0fnRkOTk5RGly
TjdBbFF0eyQ+Png2fFRSJGIxdlFsfHEydgp6TEl9UlFARD5ZPSZyUCFtcFJjMG9FfWRIPmRgWV8y
NylsaFNGS35rYXg/bisxVV9kVj10WUprc0VObn1XclR9M2gKej40P3poYjJGYGNETWFJeXBBa2J7
WGUjNyRYVG9rOFZ3K01aMWV2e0Y3JClhdjJBfGtFX2gpTFZTUTJ5OFUmPFJqCnozYHA1Q05aSTRX
Pl9KMiU0ZzkrN2cwdCZCI19qfHd3Ny1rMUB+JkxIIW4+UndOJEozPDkzMUZJPz5Qez1VcDhmcgp6
QHh9YVVqNSFxWkNuSXlmNHg/dHFLQGd3KWVXJUckWkktUm9AYmV9N29FR0xIKkgjLV9zZUVgWHdC
Yj98RlElWHEKenI+Uk1nPTctWFZqVUB4RU4oIzVwSXo+YypsIXcwKGlkXkFmLVlPUCRCODBCRkRk
UUYxZXpaQjBpQ3FpZ0VCNWMzCnorYWlwWmZYWmxrNnZoQG8kTWdAQTkmMiRjJHxTMztiIzYqQnQl
YCZBVDdfUkJCPngoT2dlU141UkU7WWNfRylWbwp6SHdCNz5RSyR5dCllS3kmVCN9Kj1KVmZFRi19
ZSskT2dfUnBAUUZESFpHIWMrSCg7ZFVMXmtoPkhjTXs7S2Z+O0IKejBnTFpvQmFpJSpgbGhyYGhU
WG9Gb2loPGpfdnNncyhNbHYhQVIrNHo3XlFKYktIP2xHMXNgPnZOcCRNakxfWWIwCnpKNHNXJGAh
QVRkdW93JUo4Wmg/ZThnakEhIzx3N3ghKEYpcyl5YD5TRnl5S0hkeUBFYip+aUBwe0dQJntHXkIk
IQp6YitHfnUoJlFTX2tCOG83ejFybFQpcjhBLW9PZGR9KDc/QyZfdzBmZzI4UF55OHJ4UCMxJG0/
LTc3MGg4TCo9ND4KeiNrSi1kc2xCN0VWRCFpfUA8XmxQRE51QHlNIyZySE9UMEQtX2RzczRmNDNV
WjxLM1FLeFJmU1FRaG5GPkZVKUxFCno8JWJnU14kbClDPDN6WnZ4bXJ4UjkyVzZvO0lVTDYoKG51
UT18e3IzZGh9MS0zcik5VldBRk9OVThlJUtZbmQjfAp6c0olcDVyREwwN2dWO2dqXipxQFFTYzhu
PjtsV3FkRzhxc3FNZiNnWCFqZW56U1k2QDVDUlgtN0V3KUMtZjw0V0QKekcyMHk8d0J+bTBSbmRi
XmNydDVPQ0VeZE1iTnFZTntCVnFUNFBTPGFzLV5fKmZHc3dlOH5SSmdpZD18MmI7dFA2CnojV2ok
KTA9Q2pTcio2PX0hWHdTQWo4KDVrLSFLVDZwcFRRcUZrMVNCYGF3XnpoKFVRM2BIKyFqUnFRI1hS
Mj5lZwp6PWp9UDZOXmprQkxZZHdnUlI4ZUJla2R4e0tfbXR2R3MrJk4rbnhSJTEkYSZORl5ARE9Q
MEJ2VEhzWihQTXZHRSsKektScmhmOFZOaGVjYHpfKFFwZWo8OGlucXM8Y3l3KVZudGdQPHVCbW4x
dWJOa2BOTyR1QFRPPXBxRmw9XiVzV3RECno7RGN1Xjh8X1BCTm4lPTk1aHBZXyhqKkohV3t9Kkht
fEdIZFB2bXh+PlNRfERGZWZ4Y2BDX2xDaHcxbmhheVQ2SAp6UXs5S2djaGxKdD1Oa21OIS1yRnQ8
aDcmeXBOJXd8TGo4MHY9K25QMm9CUzhGWXg/O15UTDEyfHhiQ2pXS0hkMWIKenxNVDQ3Sm4kOVpD
fV84OFBtZU5hWEheO3ROfktZZTd1MnI5QGdkJDVQNTt9VDUwcD8mcylPMWV0TT4yKE5oPFh0Cnp0
U1dGall5WH1Ue2N1WVE3KHVsdVhnQ3k5SHt0bkZRcXtZMGpaVT4hd01TKTFSPmU/TEx6bmI3OHBG
UXA8U3NWUgp6WlUoKFQya2BmP3BfcUVvaTFqT2FeI2RfTzQrYnVGWWotZ04qZzQxMkVRQCE9ej9J
Tzg8PlVkSDhjYHBAdDAtQGIKelBuZk1yKjYlQ0UoQzZIWXhQO3d3SSFzcXR5bWdTTlBwZnVGcExi
WDJVY2tHcEhGUnpibWxFOXozbClWem5Qa0tiCnp3T3ApZDdmUXlkJkFGPFg4USNHJik0Yzw2JXY+
YlVuSTNyPzEjYz9JWGNMWFRkKkJVWFJfdjBvcmRUa0pxS2k3dQp6cng1dUgwbjQ7cUt4MGJDMDZR
WUdJbypTRjF0dV9uWV9WMlElfXB1aDRgVEVSO19qe0N6UTlue0YkZDc0LXhxI04KekRDaFhyJE1+
VX0kaD9Laj1WNU1kTUw7ZSFzNnlzWUIlSF9FaTBERyomIXM5WTZuWn1uaHFxQkV1bnZ+MF9NMjRU
Cnp7I2JxaHhuTnhVe0RJKUBzeSFjfG5XTHVJS2xaKlQ+Z19ER21BViZwTCsmUVJwaUNEQiQ0QE8w
VVpKSGUta28oOQp6OzYrKTtwJV4yJSZlcHZFYEQ/LXUkdkR4YUQmWXJFZEpCY1NWMkFqKGslPn4h
OGJoSmVwY2N+MSEpJUshckp0X2YKel9hd30wd2JQITMwZl4mNzhtPCR+MUh3Q2VvdSRIdFdVTnl1
YWRPQTEzWWNUJWhMb2F2SGEyRDwqMFZVaEN7Xk0oCnpWX19gTEVeQEpURXowT1ohdmN3WkM9fDFj
OztqblVHX0VqXncxZ0IjZWwqT19kQD9LWlYzRHdYPypqO35ORW0+OQp6SWVPazZJfWkmOFJ6ZGNW
ZUF3cl9WOzBlKSFvPzlwWU85Z0Q/RiVyOGBEYy1lTl5neEomQ0VlTFRucW1wLXlTfGUKekJMXyhy
d2g0fVR0Vm4kfmglWnMhSEJlWXxUe3pzO3EoPDVsLVdaXyhocmh5MVNvdD9HRDxLbmx6S0s+VnB0
SkVXCnpnKE1gd0tLbWlFX3Z3VXFeNik1bXhDailScHJjcXNXTz18TSE5PntqZmBCXlpRcHkmYXhw
cSpJd0VxLX0/cFpzSAp6bjdVX2dTOWk0LXl9NSp9MnNkRSZgUzkmQngtPmt4X3kpWVNMM3BeQmY/
QEpqSXBFKTNqJWZtbGNZMnFfMDIrb3gKejZgSWd4PUBvc1liaFZoZ0JmREFeelN1NnlSfD88WXUy
djx9RCY+V2d4TWVMNHlGYHpjOEV9PmM0PEpsXiQmfD1NCnpYQUlVbiZjeygxJlV6QHFeQistQ3dP
flNyVFIoRHBpUUp3Znc/YCRuUj11fjx8NiN2Oz98XipvdXpjP3JvVUQ3KAp6TEtFI004biNpWVd5
SnhxbDhvJiV3RFhZSyZGX2FQdmApZWJIU0JsfFZXTVpPYTg5T1orOTtZczZ3UCFvbm96TUUKemhh
biRGRXI9c0lHQDFub2RLKXEqP0cjKWx8QmV7JF5+QHo/Kzt4JmRKJXEmSFBOQU5yUHo0SjBMJEQ8
dlY7Sj5WCnoxSGZfdD98PE9KUGVAXkVqKytETkQ/TVZ2ME17NFloQktNNHEydjdJe0hGdGprMEhR
QllCalZaTzZHVzlsREQ2QAp6Q3t8eypieUBVRVp8d1M0bn49fEt0UE18N2BtUk5WM0oySU9iJnAt
eGpBMz1MNn1RT0BFXkhfWjU1a0JgVUVUWjEKejNzVSt6ckY3NzJxX2xfU1VyZWUwbFlSQG0wflVH
ezdKOEZ1ZypRNXNXKClmP1ZkNj5BZ2wwPG1QIUBqfSMwWUZkCnoqbj9ydEE+KztAMU9+eERpQjVW
Kis8ODMoSnFuNiY0QlMmdWdARkV+N2krcWdATngtbjBedk8pO3pkPSFhSEBiJgp6cDtRKXltTzYm
MGdOOCt+amtlaVVmSXdJIVQjSCVOeHJEO0NRTWs4QDtma2Z7LT93fG00dmFgPm44SXI4LWtAXn0K
ejhePDdsdGxLSnUpekglc3dDLTczdG0taGtsQ1hzfkZvWmtjeiF3KztuYGs+aUM/Wm95Tj87M1pj
PzhPaT0kXmV0CnpFeHUwNFhKTF9QKjMhWEVjV1dsT1RIZUI9KHxCazBXP1RTMTYzbTR0bDs2LWtk
JSR1SzVCPWlrMDw3KV8xR2l1Owp6ZDV8d2kjKFVYaHRrPVU+Nn1VVHpGRjEmYD58NVlAQUk9YnQx
YTM5fWZ3cUVoTVlpQXxDfDVrRnp7MHRDSlJEazAKeiQ7bHhUX1E/XkxGPnZ6fmhNTit3UDZJQlRe
VyskcjZXLTs8RTFDIVFuPUZMN2Y2aVAqREg7IU97Q2tRRGd8bXhUCnpqWSRubDtmPzJxdk5rcUQ+
OHI4e1JXdmM8X2BoSUVjcU9ReERkQm51T1BkbVE+ek5JYjQ7dmdaIUE0Q3NsTXFrUwp6cz0yZn5V
SU9+QTJ5WnRjRFRPQk5gP2I+bmlXTjZ7KCk+YjwpZkpFOSQ8TnI+SipDVT9tY29seTAxVFdqKFBf
WnwKej44enBwdGYyYiooRnZBMWVuMWB1WWd9PnhsVlhSNDM7VUFMKUZ+NXxnWnx3cDxoM1lkYSRA
OXVOSDJfN0JBV0dfCnpVX2BeaXdUSGteM1BISG5oYFFXRm01ZGlOQSl5YishNWdfcVlAcC0tVVYq
Xit7RWhSVTQtezxKWVhhdl48P2ArOQp6YyQ/VHFffUJiPClQKkliXzlDMExJSzB5Njs9KEk/IXor
X2ZGNSM3aUBKZkFucjhjfSQ2SkR0ZlBaSEtLYSVuKz8Kejc9N0twMmkpXk1qT18zb2FQO3lvQCUz
dXErJS10ZExyNHA0YG87KVY9Kj47e3B6dmFYPHwxcmRtYHp+NHJ6MXpJCnpGNnM7KFpQPTMlXzg3
dytqVE5sOyFZfiN+V2B5cWI/fFRZb2hGQXBQanBWMVc8JH0kVnI7JlQ/bWpueCozZ0NnLQp6YEQq
MmtkdGtBUDZrMWB0RGcyYGhYJU1mbWB9WkIpKElJdmhiWCNGdzUlbXNLJHhmYD9vTks1YEpYOXFZ
ajxHNWMKellYYjhSdTdzZzFTUEkhfUY0c2Q2PmZ3R0lLYW07cks9fWwzUXwwbWkkYChuTUI0cT53
JWtfalZeS2hqJTE7WUxMCno4PnBePUhxN35YO3xzJn1YO3YoSSpwUXxWRnNKP0l4bT9wZDdTMjB8
X3NxbnVVWlYzTnJJRHZKYFlEWmVGXnlmaAp6WU5kQzBTRlRwK0hHcHkkWncpdTNtNC1iZ1ZXMWU9
ZXpTIyhvWGRmaHU/TmF9MCp6K196RH1XUjZtcSEoWH54ezAKej1vfWwxOzIpPnBAMXgqKi1lKk4x
T2FxY3dma0ZtcGhYbDVlMml9WkUpbXlvb3pZI1N7c2hkalB8NDgxU0I9MCojCnpAN2JPLTQ0fjc8
P0cxOCFoVEkrei1IN3B8MDVpUStrTllPalJxK1BNSnVjTVMxYWBLTVNMfkEpTjlGPXUqYXNvcgp6
dTJ8c19vYWtXbTw7IX5iIzxSU3k2VjEkbXY4STxWKCgpQGZ7LWwqSVN3P0RgR0U4P2kmMXU7ZEVt
QVREJVFFTF8Kek8zQnxUQn0xZj8qdjRtPFh5QU07SVU4PCphfVBQNko8OCVAKXNXfitDQ0FDK0kw
QjBCal82NERkMm5tU0pkO0ZrCnpsKDNHZD42KVd5KHJ3SG0xNihgMWE8RmAzY2ZeREZNZEZTKFk2
VU0rOH44WD9LfmY7IWdvOyExdnIoVz1XUDBObQp6U3lNXz4mPVkjRXZDRkpnYyF5KWNyI2p1NVBn
e3MqaUNSSiN2X0I2RzJwTlRMIXdheF5CMiV+RjhUdU4lKkw5aGIKel52S1QtRDlOYGBsQlpMV1Fe
WGBvQSVzaiU9dXZTRzV7YCMobUp0cG87IXByXnszJHM7TlJEQHQ8QS1meDtiWTRsCnotMUkkWVg5
aSZAKTtwTD9MRVQ9RGAmOGhIQ2ZsJkROMD08RzEheTAkcGVNVmEoPHtGS1d+YUJVQ183OFFUfT01
bgp6aSZQXio8bTE9U0BpdWp+JjRBUURMeV5Cb2t2fms0U0JhNmNOS2VgMU5RY1NNd1A1eGBWMkRv
MkFObTl+ZFFrKVoKeil6fXpLYlJNTU8tbGdGN1EqZW49VU5HO3w/NCR8MUYjej5Zdko1IWVoP0tI
RXY9fXI4djtWXzw3REZmeEJ8T1pJCno0TWtpUUc2X0Z9WjNKNXpPMyVLQk8xXzY4PiEhI35QLU1T
Kms5bjB0c3Rga0JsSlpoZWdEVVQrJVg9XmlhS1EhZwp6cV5GVktrflltQVY4ZUFgK080SFk3P0xf
NSNZfmU8eVRCLUclPUw+VXNabE18RzAwLTM1KGxMKT0kPHY7cnNgX0MKenU8QWRoYTN9anVzZFBX
TWZJfDEkQFVBQ3FoUDF5PGlhXzxpe1BKXl4+Z2BzSFJhTER5Z0I2PyZ2JV5qclRBeVIlCnpZZUNP
KjxSPCs1N1RQOCp5QTE8d1JqWCsqTGlpMUVnYlR5TVZUQFd0RzwxZ2FkfSRpR25KKl4kX0RydTkw
fXdkWQp6YEFIWiZ7c0FWPGUmRG10JlAyaU8wdE1uNlpiSEZicT1ILWRFLU5AYjBtdVBKYXtVOT9P
Y3N9aE9PcUZlPUNLNiEKekAmQEVoJjhzbT1faDFINTtZOGdrSmxVVTNsUElLK2FtUSRjMXt5aWgq
LWx8c1FySjBBZ3JRUXskM1k8VmhzLUQ0CnojI2IqIWNEdTJAa3B9ITkhVihRVXZnOUdUdXBaSGxT
RiEwK0IqaWV5VzQwfj4rbHdZTjR4OyNKeSQ3Kl8qUC1oKwp6WGZaNW4hVlBOUzN3RXV7ZmFIKXtv
V0kzREVIWkNLJkp4NlgzTiZ2KWB+eXtobVJ9NzlUVyRKMEhMR3pnZjNwQDMKeio4XmV3RyRPM29J
cEpeK2goaDhuakxzeihkKF5Tc2ROeH1MdVliaS1qdXg8Zkk/ZWdNaDVSK2hZYVYxKzsmaTFxCnpU
KDFwaHAlQkF2OGgkYVczJm5Fa2Q/XnoxJmY2SGB2NkRiMiQ5aSNJNkI1d2pwQHBydVk8cmp1ZFJw
REh4OWFnQQp6LS1iPE9KY0NDTnI9bHpSX2JidWxyVXB0bnB1O14jfDJaN2FXZGtGZTU/cG87a0tT
R3xhaWBBWGlDVFFgbWRzPkYKejEpeUpsaVcyUk9YJio7SFlOck1ZS0p4RVp2JTdqOTNBfFZYY28p
andDfiYkQnZCMD8rZnJ0MHBTbmZYXj0jRlFsCnpNcXhHIzRnMiYmWmVWcSghZlFaelktaXNmPFJf
dkcjclh9PVEzbmF4V0c/QklyYVlSancxSz1kKjQ+MUZidiNOZgp6dXJmMj9KSGd7UXJjNXpCIUgk
ejtHIzlLUnc4RGEzdT53Y30zfChUajspK1gkJTlqfVNvZWxkd1ZtWk59Qk00U0QKenNUcVY8Nk0p
YXcmdExIYTc+UFB2PjZecCsldyFkJjdJckt8bDgoVHpTU0NWeUJfZ3l9QnRrMXVoYWZeclRgQFNz
CnpzJCYoSiMzJi14Vl9EeVliZ1ZNO3pPJXc3cFgwdnRZdmBZbWxGQERXRDtZX0c5VT1oLT19e1ZH
UTJUS355dDA7dQp6Tzt+TjlGb3s9Qi1DbTQtZkI5JXxfQnBaQGMoZjIyNFp0YkBreXRaV0Vtazg7
b1lpNjhtfTd3VmprX0JtZ3BedDwKems+ZTBtaWxhbTwzaU1kVkZHQTxZMX1jXmtIeiVSTztldCE0
JG4ldGA/R0teV2NpYnVXWEM/dD4ybGVNSSlTb1NYCnpyX3ZfVWZGNmI8S3t1PntNdnQ5R2NiS3Bg
QiUre15CbilCdVI1MFQqMDQ3LV9XezcwMGdgRUdPQExyX3d6ST07Pwp6PWY1WTdyakw+MjdAcV5q
JiZjdEo9cVFxaXEjN19fOz0hNVo/MGxuVjFTNSZrJFZVPFI3ens9RGpwKEJyOTY9enMKejI3fjdW
M285Y0whNzE9TGMyMlRnX2lSM0JLfkd2S0VrY0Vab2chaFchQ1gmLTx+Vz9HUCg7YWBGY0M4cFkz
VUdBCno3JWJVPzA4TkRiV2kmblEpNmdNVzV8S2ZUbm90SHRDZGhUYzNmIXlZSWV0amo5OGl1fVlO
VWttV0U9SiNkfEN7agp6N3tDIX1hI2p+TVlxUUc/bz54KFpaMmFAQDZJZl9pdnVWM2J0a0N7VXht
LWBWVHVpeSNlT04zc2xKM0RPezhsNFkKek5ON059cStwbT1YQ0ojTzg4TlpkNFNGRWF7SzdLVWxA
MDl7NmIjJUdvdTUqV1RQZXMqNnl5cHFOZDZkdDBsN0Y+CnpNZTw9Zkt9Z1lFWD5VMVo0I3d3eTNy
SnhGRGteQ0pkX1BDTmVAKHQ4aW9WKFdJdVFAMDspdm9wbVYjdEZIamErUwp6bXZzOH5ZS3oxSEwz
b3t8I25gP1JxKmVNNnpvazxmYFcyZHw/JTVuWWd5VWREMUNkNWp1X25fNjBZOGRLaXU1TG0Kency
ZE8mT09mdDYjN2NvaFk4TkEyQ2BBZjNSMzhOcTczblF2cT84QHFoTU4keG9JVj1IRjthOSZpT1pB
e21uPGMmCnpOODRUeER4YWxxXiNvTztIcWg5P1BpMVktTEZxWH49e1pVMTg3SFBrbEJ2KkA4PjdZ
PUp7UzJCS3k2WWdRRW5kYwp6R0hlZEtvRipeYklCMkViV0QmWStqb0MqVWBsVE5jTVBsMzREaHZy
QT05cWtqRSl4cTJhP2xGfGw1NSYxQz5sV2kKenBAeCVmO2krSXZXbGhOdCFpWTxERDA3QCg2JHd3
VnNWTnlralgmMzlIK0ZiX0UwKyNzeHRDNGxHKFpjcDdAbT5VCnpiZWJIKld5Szx7NXNle0B6ZzUl
VGkhekd0QHdpZm42Iyg1bT1yWUhzazxIZ0FvM2ttS01rczxfJUJDNUAlfiZ6Swp6UFZQPFFaWHgm
MWdKTG4qKEJedmkrY2YrPU1xSGdxYmlQZSFUTHxya2chWnpDIz44TjJBVE1BPVp2WXE3RW5wNHAK
ej92XlJ3LWlERCgpSm1mQklDKn1OSnBZVjVaPGdZKV5tS25kKX1xZ0QpTyEtMENrVXNGYVB8fDlR
XkcwZihmeDZWCno+STtnPGl6JGFUMzIxPzsyVVN1a0oock9qTj0obV5vdj9DJUxrXnBXbDBrXzNF
ajx2Mj9LXzR0VEhMcCUkOzl5VQp6KkwwY0gpRG5pXj84RGhoUUo8dSFLbUQ2bjFaSilPZ3dAfDsx
P2pSc2w7XigoKDxrWD52ck5iMWBufkZIe3lseUsKek16a2AweH5DYG93cUV9fDVGTVdBb0tFNFRu
R3YxfWl0dmFXLXF9RkV6RXwpM2AjekVnK2E0MHwjdDU1YiplTX0jCno7QnoxZTRTaHlDbVhWfWdJ
Y2xUVmhiZ1BlcSNsSWl1QTw7P3J7RWAyQFV4fWgoTWFRZk8zUm92Z2JeU04yVm8+agp6NyhgQCVn
Nl8mOzcyaWxtaFk0djVBJDdrWXdTTihiJm9RenpWOUpWN2N4VFhUcmE9NWsld0EkZEVEV0IpbV4y
cSoKenlobWFESVhhOXZEZWQ9eFBAXldXWlktUG8mPm9FeDVYOT05UH5rK3c3WjM2Z3RRYnQ+RC1J
X3NmS0NKQENgMWlMCno7YFR3Yi1aUkpPeTw+UzVeKmlNMzlnMSklTUt9JExGaGAxVDI9Q1NlZH1r
cj1HeipePjtTVz4lUyleQzUrclgwbgp6Y1VsPCtyfnM2YSh6fXtEWW1NR3x2O21GUjF1aW5lWFBO
NHpJRFNOTlI4YnRxVVN8YVpKVCt6QnB0Mz1OVU1CfG0KemQ9TCR3T2dsLT1MPz10OTNSXihIR2tN
aCpOITZ1dnRxaH0/QVlNaGw9K250I3tIMXM+aFEjdH53Uzl4cDd8MURkCnp6Q2R3NE5POEt2SUNY
enFZc194IV5+OF5EMVNeWlN7VWthJnhZfUBVKXVabS1QdjtJdWs7Un1nZ1N8e1ppWVI0NQp6X2tP
eCVmaWYlVD0qblMqUnohaCtOUClqWmZlI1BeMmE2M1pfPH5nSi1WZD1jNz5QR1JDMD99LURtUnEl
NjdtKm4KemZ3eG9TP2R7aloyMHxWdjJEVFJLQVd7KGQ3clpLZDZAPFhSPXMlZVVWSCpEUENMYztj
eiNieCFmZjY2YjAhRTNDCno/JXEka3VDJTFZKEBSN1NFQCE9IWptYHhFUU42ZSZ0PXNyS2tQczdj
aUFOP1o5YVojbHhmZDZnSjlOKzl0eWVYNgp6dXdtJndOfjUwQUh+QCs7U3hPX2BuPk54R0V7Tkll
Z0twXiVxYCUwaiNqSEVmdGt2Rk9ZQCkmTmpTKDJqQTM9S0YKeiNTamBVST96YmRpejtNcHBFNSE+
U3hPU0ZQM3lhSWowIUtkUTF3bCNqSlZKTmNfK00qSH0mdjZEMjREbEpmNn40CnpgT205LWNsJHJk
Xkl5ekVhamZgQUVEbDZIRW1IaW5PanIlX1dDVXo1LTRCUUN5JDslaF5uRH0qYXJHMilRZkx8KAp6
Wlg1P2Y3eFdBYHFnRndkOzBSVXtIeiRGfngmdkZkZ21KcnMtayVLSlZ9WHVpUHopaWpgZGlMc1Zf
RSNlLUkhaDIKenI3VUA7aihYYiNAI1BFPEpsS2gtVDBiTTQ+S2c+Mmk1QWQkS0YrX1ZodT8jeU1I
VzNTaldaRiY0MCs9LVM7OWNNCnoocWp3b3MoYVFmSmB4QlNwNmtzZCE7YDZWblZRR2MxeCZSdndW
MHs1Rm0oeDI/X2c+clE9THEkVlFNezd5LVohagp6KUhPX1BWKEpFX1plcj9ZcmZ5O0MxNUFDMHNT
aCp0UUtta3wpRit0d0J2WVNhPmVFYyEhUE11T3h8Xnh7bjBrUHoKenVRQng/UXtRNmg1dkNxeD5J
dFRQIzhpUSk5WmM8SD5SRzF0RnR3TWQreitVZilKKVlkUm0pVThRdz5aX1ZybnV8CnpqWkFlaXdU
N3duTyFZRSM2O3N6UndUWT00bjdXQ25vMCs8V3NTaHlxQSpNZGUpSkxKZF9GNmJ+MlF4ai0pWk5T
dQp6OXF7fCN8RWR6JHZjUUQ9cll3UlFxd3pwaHJ6fDcyR1lCPkE+YHFkKGRyM3xFRTIkbShwKD50
I2dWWk12THNjRjQKeko1PVN8SHF2WHM9KmxVa2VGKVclQ097cTkoKy10O15jMU57U3heO2NFVG9A
RkY+P0RAakF0bj5tR3kwPyR+NyNVCnolfjBqPmVAPm1kcm82ViZYaWlUelcqRShOXntkXzAlYml+
MXIwTFZBOHxUOzd5UUA3OFNpOUAlK353WnR4Pl5Mdwp6YWVCITJrbDxsX0JmbXJ3SH1ARzZSfVl9
eSU8RlBFeHwmNTc1fmpSazt4LT5LYW1ud1J4VG9HVGFuQnBjLXhScD8KejB5Y3c+Xz52I25NM0hT
JD0yeS16eTFuKUZIUlk9KFJFJSNoUE1VQ3xhZEt3bjxjWFFuQ3ItKlZQUmc3eWRDQ2xFCnolRHAj
Q25QanhBc3lDKntlJnNMTElxY1dfK3RZXiVtS2tzUVplUlZeO09sUj8+dlVtaiY7SVYmQD5oO2V7
LSlqWAp6QU5PUHp7QTBISzc0WkAhZkJrTmZAeEpSPDQpNmMzP3t8Jj1kO0lUOTtEMkhYbHo3VVFK
N3lTREo7dktJOHBAeSkKemxUdlQyY2heLV8qRXE7Zld0NFR4akxSSSR0ODB6az5KYGt6VlJUQHFs
dWFJRU88aEhLNE1zKzluWCVJMEBtQU5lCnpBI3godysmMG5jdHRwRys/czhYcTlvJVNSPlpBIS1S
ZnNrJUhMRWZrRnhLZHVtM217MWsxSHkrOGxqbDJvVXRCTwp6S0JMRnV1OSVmTnQhOS1td1ppTH1s
eyZvIWM4LTteUWc4NWFhYT9ONkRzRi1sbml6dVFqWmtaUjt7aXJAe2pBaTwKem1Cd1lXUVkoIz52
cj88I0k1ITd2WTkoaGFDYzhTZjVyZXNkd0FDSkNiIXxnPU8/NCVuT0liRjxGezVmbXtmdUpJCnpq
MFB2P1VkRSsqVz8mOXImUEhkUSRCVCRQYVU5RHY4TSk7U0ZNWEctdH1TMlRORV4jVmEyQDU5NHRF
XnFzaklsdAp6O3BKP0xtS0lxYFk/aHE0YkJubFQpd1B2ZU1PfCZKcXIlSjB3PU9MeFN4YExSb01T
NnFUM296PDxFfFlvNGZMb1gKelpxa0hJRSowQ3YtZzM4aGhMSl5YdE1qPWwjMHBHSHRzRVEyUms7
ekZhYW1wRVlMM2tsRHx8SW5MMmhaSG1eMS1ACnpZJk0mU2BDYCUoPEQ/c0ErJVI+PDRVPih8PCh8
dT9pclZeJisyblZFd18mTno8RVN2cyNNSHVtb08jOSleQWZaWAp6UzRPU2xFPztHUiVAUVFqVFVT
QChTPCk5Rk0qJnBWZEwzPlEqfW9pIV9ySUQ3JTBpdmJpQGZ9Yyo8al5aVGojQj0KemxCZTZ0TzdS
OWA9NDNZSVc/ZlE+R3tKZnRIS15GTXVgYFR6VGFMeDt1Qil2Plo+eDtzN1M8Vl5BVCgrbVpldFox
CnpVPV84O0lNN0Jrd15KalVUd1ZWU1JoRCgqakxhKmxqSiRhIWheO1NyRUs8Tmc2UlVOUlpUPjlf
N0I0an5Ea2AjPQp6aUBBJnApfXJnYGlJNmVnaz9PZ2crSkVfcVchMX1sYncwRmdZVldkWk1oM1o4
KTtUPTIqTCNpU0g4cGoyOE92KnAKejw/aUxhNl4+ZihyTzJyai12dEByeCphUWgpb3VyM3pkVDRe
dD1teWl4NGdGY1pVPWcqbHZJYCZHMExtRHYtblkoCnpsITVBKzhwcmJUOHJnM34yRjgmflFoVCt5
alM/RDFiJT5me1VDdmllXj1QajEpbD9lTTlFPXw3aGVsdCQoT3o5Xgp6TClYVFRMOHo+Z2k8T002
WFojOSU0KTwhUyE7Tn1nUUM/ZiYkZlh6XndIMiE9SUJFeD1GZikrKEklN3Foa0djeTIKenk0KCs5
QzZ7bVRBPWRhWig2NjxYRF5fcSRjVilHRT45UHFHR21IIUIkfTFPQ0ZMUmY+Un50dnFHT2shclN5
T2AlCnpMUFJ1SG0xQ1QqPFlZNXNfREMpIStpSzR8aHF1NzdCNHk9RGNsRChYJGImPDJzYypRe3Nt
TVhDcWF4eTNFd0BFNQp6KUpBXiRDWSFqVWZVXkp0UVIqQjRUQjtyJlFySChLNylDUHB7aXJSXlAw
b294cE5wdEZpdD9VYCUyezNTbjlXc0oKenFTTXplIzkrKj1UMThlOUQoZFN3Wn5kZjhqZ3YxbVBQ
KTNNJHljK1VaKEVBQGlBJjZCJWdRfHRMTVNOcismTU5uCnp5YSl6bmZRR0FMJFBWVjNhKnQ8JXg0
dDVgcld8QU9idytkVSghM25vKG02UmNpIUQwSHZAfkM+citSclVJPmdlWQp6UnBvQnV4VW1pMUA/
fHYrdEpnakR3djAoLSMjeXRCbmJBSFhDRX41Q0ZKNF5fSlpjRDsjX08mI00kIzg/eEBzYzUKeiVl
YE9nUUZna2pONmctbU1AcDEmJjY+VSNCVGlUS3hPOGM/JEErcWRaXiEoKFglWGJ7I3o8UG1VWGpz
PVF6VTx2CnoxcnkyVEh3RmBsRVY+WkNkJEVeU1I9VDRARnFnQmp2KG59QmMjUmNRLTl8IWo7RzAl
a1hRVmJIU3p8OytYUlNofgp6dU49I2I5YG1ueDkxfFYpPHNBaikxI0M1YjYkZTtSS2YqR1orakxE
MU90Y21KLX1tPTBsRDJmfFFvSX5xPX4oN2wKem8+eTBRWEMkJE0zcnJGSDxyK0RVSEVpdUk8YER5
WiNodTFRNEgmSTQhO1IqZ3I2eDlwVSt6fmxfb3VWeHROaHwlCnpQYjFha0tQQndIIz4/ZlgtPCFX
TGYkdk07YHg1dnNsbUc7RWFvaW1raTZrSzd8SmF7TismfEBwRDMkNyVTZEIodwp6NyY+SWdLeElz
VmFANSVJWTRsXkNuMyVETmkzNmo1eTdBWDQkTHEhY1ZhU01Ocjd9alJPaVVYJFdTb1JAP1pCOXIK
eiNBe1FCeilKcCZBMUNTKVZ2TmNtJD9EakZsN2taOD55bmFVaHM0TzNMeDRDYlZ0QHVOej1DWmJp
cypjOFFaIW1iCnpQZUhPQFUrbTBpOTU9KSR4JX0mJkV5Vj5eWmJDezUreHdsSG1jdU9vUjA3cmxm
YER5K0tMYzYtTSp5Yil7bD9+Uwp6QkxMJDd2ak89NEpEPmAlOFNwVVJjWXg7cnVLfHQkSXN4aSZJ
YjAkajgmQ3UmMmRvQyUzd1JqdGQlJn1SbWpHYEEKelA2MnVXaElCfkQyRndOJjBgM0hDMksqWkU2
a3M+dFotOWU8Tm9jJlpnbSMwdG1BNileZTY8eTlgQzk4K3ZDUUc3CnpXd3BtdztiZERAdzZUTGw1
WjIjeT8kdztOLTBOaF5IYnp4KCNkVVE/dGoxUGpVRmZKfj1wR0podj0hQUo1M1BuUAp6OWt0YjE3
MHRuMzNoak93clFvcnNMMERNekklPjt9VVUjfDIzOGFOczNwIzQrZTlOODI3MGYtN0k/LXJjaFVM
KG0KekdOfjdGYmtzSWZWP1RnYSZrO01lTUM+emBTNXkjalNXI0UkaEBlIUtkJl5uNkIrQGFHPHd7
M0diJWxlPUBwPklBCno+YitQVGM8WnBQVVF5UW9xU0VJXmlvSD4jTDIzNFl4PCpFc0ZPKFp7PTh5
X1BFP3MkYiYqaXc2OCo4ZFR3UEtJUQp6aTJWVzF2SV9lX1ZycT5Kc3VSeGF1SmQ+QCNOZEVpZCpA
WSk4MVltJXRGZUhfPGBMITE7WCVnQT50VnZ0M08zPTQKel5DdkRzZW5JfSQoVVJSRW93ODdMS0RO
ZFlze0A7bSpwY0ZMc2NJLW1IQXR6MGx8KzRjZ35NM21zUFk8RkV3YXFiCnptJG0+cjQjJUF3bVp5
fiZiK3Q3aHVnU00od0ZsK1ptc1UhLWhud1RCeUEjYyN6UGpHUTY7USo4bHRodWtnQmBWfgp6Tkxk
PW5ZaVFlVHdiOEsoZ0BsSExxTnY3IzQ1ZUZNTnRNcW5sQyMyXkFQZygyUUJUeCUjUCV1YDJNUG5M
ZTdCRikKelUhLWtnU0c1SyVeKi0tSlktSGdoNn1qd0xEcyhoPXhsSklJWS03KyFaMj9EQj9yUC1N
UzZra0kjWGhZUnhqQyMhCnpOKjwqaGtWPSR8PFpZU0h2em9RKkB+QWQ1QUlwXn1CUjV5PlRQI28x
PXZIJGp3UmhJbS1CbHxrYUUxfEV2Pjx0PAp6cE1yan1xM19HQVJBZzImJWIzVjdnNDBoRXBCTyhO
TnZZSC02TGhkMHIwbE8kOGtFWXhfQGlIfUNPJHJYSyU3IUoKelAmcV81UkhAV1U/I3ZOYWtHR2BO
YGY2JiVhJEZpJCVsV3Qoe0szRisyPz5nWCMwMzE1VCFLb1MmXzVEMCp8RmM/CnoxbD0mNVdfVXRF
emwwPlI3KCZWYlFwQkc9UE4mbXA7dH4+SzZBYllLNkF9Z2BYIzNvXllAclF8JW0zMWwzaTBvOQp6
bSNkbGN1b2QhNmU7Yz9mfDFRTn11anU8QFJxIXA4PW4jSU89PSlQRHpUS2JmLSQ8cVd6eHMhXkh4
Y3RHQVJSQ3MKemtPN3pnbTxZJU9PYWU+PnRkbzhkcVJLMEVJaFVIQUlpRXwjZXxseUNteH0tTk9k
RlNxfE1iaX1FKjFhdklMI212CnpseVdYTGhmN15TQ01ZPHVuOFQmNkNLSHMhRUxlcTcxXlRJPHJo
aTwjY0VDV0xlJGUwe2hNQF9HTnlDUFpORkYpcgp6OHNxM08qUVRVaWNZV0h9YXB+aFRDUVF0bkcm
eVVeNEw0NG1IaG82KyV2ck48R0w8aUBzQn1+PGNVSFVadFhXWjgKelNISUhqQCVrRj5UREFKXytt
QDh3elZ3Yy1jZlYmJTxKeHNpPnduPGl1PF9tPlpWRUs+bn1hfDRAc14rNWNtRCRxCnp7YDYtTHty
bmVPQUFhUFF6an0xcnVlVSQ7XzszRT5pUW9TMl9mUCllfE5RWih8TlBVUnBaPzE7JitnY3s+JCZJ
dQp6YG9mRjVfdn4laV90TzU+MTI0Ync+VDlwUkB3YkMtOXk8S2ktYHtAYyRoK15nOWV3fVVAZT8x
TXtQM2ZYS2x6OHkKemVrIz1RPjFVc0pwOG4jQCopT31nZChOR3woMkdhZHgmTGJaYkxOPW1UNXsq
KiZBJk4rTEJZYUIqMXtyTkYpczFrCnp2aU1kcHw2bExeLXk7OVptdml7PCtudVBidDkzKip4OV9h
UWFTKnFfeXRIN15MUThRQChQR2pzRUdlKVEmNChOXgp6XlV+dF4xczN8NjdjRSRqUSFId1c3aDVm
eXFqcVZEams3RSlBPkYoPSg5T2ZpKXphSnxGMUg5b3MkPU9+M3Bkd04KeiFtJmBJMUQ4WExpc1h2
R0RNQSlZUjBeVy1xbDEoRUY2QWIwdnVMaFRVUylzZ3FwVGU2VzU3UUUwLXptbTNKP04oCnozaXR3
VzJKamBJMyh5VXFVN21DSlVJMlVyaEBGemQ9PlFgRU0hQEMyWWhnRElGY35sdFU7ISl1bG1NMGg/
Zl9IKgp6b1BaaVlKLWBjQzEhd3tVMDZ6dmkyPjNiUm13QGVuLXZPUW1KUCZ2WUBDTSl6O0JDTnJm
TWJBQGZLTEZZMEd8UUEKejBDV00pMUxVN1YqNUxjdFdVTG5lXnl8ZDtCSGBnfV5RVnpkbHEzQnp4
VWBmOCUmPXQyOzNqZjJGaV8xJUV0bztXCnopezJSI2xAbj1IJHtCQT1vcjdhOWQ9XyYjMSlRfmpF
MnlpakVNTHRQYHkzd24rOHZkKHFPUkVLYjJGPTRjUXZgIwp6JURwfX0oX283ZldfVG9EPGJ3ayky
UTxScllgJDlWPUpId30mT1ckWSQxKnE1NnFMSXdvTG1rbCZLZ2o2dEdTemYKej1tYTxXWUYyWU96
VUExUDwhbFpSVX5FMEgyI1dgQ1VDfCZ+JXltP1Y4aVl6QUFePGw5Qj9tO3xQJXNuKjJqOEhnCno4
YVF9RFEjUFk4cmw2ZHIxNy1ubzAyYVdfZlE1aH1LcT1yaHojUll3ZkU4bSNOJn1hWTBjYiRFSGwm
UUBHOCQ2Mgp6aDczU1QySzM8VyR3KUNhYUx7Q00mfTFNVWJqd3RubkJSZ2tGcGhtLWhvQUplSjlM
aktPO0c3fkFqWlZMOUN1ekwKej19WnI2QzdyY0pDK1NrbzRpPEd5S1liYGMpRVM/RFZWSX4+enhl
V3FBNUFnK0AtT3gyUHlGR2ZOMipQS3xJT2RSCnpeUkhSOF9wc14yPUp1d1M9azI9eGlKVHVESk5M
K2koQXdWPm5wPU18QEhoWUcoUDFCTSZyUV8mKjVCKUVjc1p9Jgp6PEZaKlZtMVhuNHl6a2JuS1Fs
SGZpfCpLJD5mXio7UStWQSZlPT4wZGs0Yj5LdE15aEhYQmU/ZjNvZTcmPDtNQ3QKeipob3RmNTJI
d2xsdCoqJFJGdjAjSjUwcCg2djhLWFVWP3ZESmQ7V0NCRzxHfCV3VlZWTWc2UGBodH5uPF94VT5a
Cnpma0xrbj9UK0J8XitubFZYUEFaNCooMmd+X0RFKlF5O0VgKkJPfHAqKjI/Xjg4U0B3QmFfT1hH
RVgtTlJySVY3dQp6JkYyPCF4ajs+aT1yVWt+KjI/VDtvZkg8Kjk/XnhSSDB9PHNpfEU4T1E1KmF4
Yyl2Tm0/UXlvd3BDUFR6KmFGeUMKejReOT1Ndj84V01PUHx9M1o3aTUkd2koNVJBc3h3OSpIKE0w
IU09Z1JWdmZ0Zl4zdSZWMmdFWkB0VllJKmkjfmtPCnpJMj1hd2o/QnB6ajZgSiQmZnVZJjVtNj9q
V0BjM2FEZTU7TWo+QTk0LVJXQEdJJT17ZVByejkhaGZgODNtYXtxSAp6U3E/YEJzNXNpc3FXIW09
V3dtdGJUU00jSjw/aXdvU2RkfXFDbzt5ISE3aDJyI0t+fHVVbSlTb0dMSjI1aUJYYFUKelpVd2Uy
RCNpNTZ0NVJiRit2TkJibX54eiNnO3xlJWtnN3w8ekIxbWM7O2FIYz00UnJfI0JVSzZyVSpzYV51
UTgqCnpzbUZtTV41cVNnJSRiVkcoem9ZZl5QJnNtb0tyZX4/bUpkenJebUR2QU8lRlpqQGx+YGNU
PmE9enI5Tkh1Xks+RQp6MUw2VlQ+dHsjSWdZWSF+TlczYmZPaEJgbG9ibFZUTWViKTBLXm9oYGZK
WHQzMGlGT24zM3YrZEd+aFlGVWNmN1cKencqYz0wSl8zOVNJMVRzYGExUVZsS21sblBGQFhNbjBm
MGUocEAzbjRrJF9hZDFpJSEpNDhVeEY4SVQ4OTFYdjZ4CnoyZTwkcEttKntLPFpETFprMTNTJFlY
STIqSlB5VUowe2pmezdyPE05R2tgKEpTU0RhMFU8SDhZJFp3Y0dyUmtNRQp6LShnPDx1RzhiY1hP
YjRGM2dwPn1WR0xSMk90P0B4N2Y/KXZiSl8zVlBTYSZKZU1iNExARkEzVV5tJUI/N3lzUFAKellu
Uzs2X0l8d3xpdCtKcGFGXjN6b0YlNDFnRUx3VmRKUzZsPCE3TDJ3REN5ezNFKEJqVCRLc2x0K0M+
PEkxYkAyCnpiSVk2ekg7SFMyRi1jdFJLSjdDMXlQVzBUbntZREN6STQjY2R8bGwodEA0c3xXUFpE
XyhwRlR9XzlneVhkYTlgSwp6eEBqMWU2R1NtYm49dSpAS1l7R2I0dmloRkRuUmFHKHt9Oyg/cXJ1
JEg0JEI8OH5oUih2c1lER2lpJjd8am1vTGQKenh6Ylp7cjhCbmhVQDM+dGhtd2J4RG58XiNTP1Jx
aE57KUx1YWgrZFU4R1J2MEJ+bzBsNnBTMHo7LVg3eVpHfjliCno1IVdrSWFKbTAwRitfZH5pb1kr
YElwOW8/Rn54KnUlKzh5OE1QV3laIWlFVyRMaCNAI2AmLTR6a3l1Vjc5byl4Mwp6eVRFRmRRSV4k
I2Bld1ZvaiNWXzVnTDRVNnBHJHFVY1kjUn57Rkl9fHsxYzJ3TCVhZlNzWVJ+a0pkeHx9PmNMJEYK
ekVmUXUheHRxI3tte3E9eFJjQ0pUcTlRcG5TM3txQlMjd01pOCVvQShHXzh2SHBrM3lBRH56KmU4
TmJkaTt7cUU/CnpPZiolKkJsSnlDVUIqTmRvaWdlYVgzKXdyRElPTjI5OGlRQVhqelMlUmNiS0Eo
OFQpcEtYYj43OW9AWW88RylhMQp6bW8oRnlxTjFGfGF1VEE3Q2RjZ3R5SHZUUU12VjFhTV5vdiZC
LTBMV0J7TGdtJk42fnFiQUBPPzhUVDJgUkVlTDgKemx8aUxmRUhnckh4R1g0P2s5azNrJjZYQ0cl
MWE5SFlDSj8kVUsqaDtWY2UxO3E3Zm92Y0JSKVZTN3pHV1ZzbUxPCnpfNTBHQzEjM2hAayk7QGhO
RUhFRl83ej0pbTskYUc2fE97dVJ9XlZJXj5eOSN3YHVFPGUxQT5zVzJ4ST84bl9+OQp6LXhQUk1t
S3ZfYF9ebGVxSC0jPSZDc3AheSQ/OWJfOCE2WVhZb3dQWDZjczFPeURUIW5qMmt6e1krbUswKTZN
VUgKei08UUR1IXpGTnNuUl5UezVmWEl1XnxUeEl7cUtLTTMwUngzUipgLU9leFR4SnUyKnFzX3t6
VihMKz1EVTVvUHhRCnpeZ0UpPUdBP35QVjFGSzxAdkZFNXp5IWNkS3JXeU5QemtzanVvPl9lVT5E
IzM7MFFuZm9Db01Qc0pJa0JDU1ZTcgp6NypHWGgwQmkjTTBgTjU4NFp1ZiRGOTZEb0RsUTMtMD59
aUkwOUpxI3VuTz1heiFRTGRmVlRsQjBpT1k0P31iMFcKeklLVHxSMD5DWVJXcV45WFRFSCY9elhS
KzU4fl97eHtCTyVeOXJnJTQwUEleZFZiNyolM1pPcCNgKSpDeG9Nez5lCnohMlY2c1U7d3NKbzNN
QSZsbkI1Y1BaTzJaZjdTbWZsPSgkfl9KP0JHVXZBRX42Zkx3WXp+MH43MXEqUUZXMDUmdQp6KCZK
ODdrKSp9RDVqQXhsaHElfjRuI3x4MkBqOGZDZ3gya0lMM1ErKkVYNEMrIz5LZDV0YWZiSiQmPkND
VFVKJUcKemVNUFh6enxhNUotaiM8fVFFZDR9QCpyUmdWVXdVP2xfZnhjVERzUVdmRnpQPXE1O0Ze
MEZPWXpXKzBJeUVWOVUmCnpoWEApMzEpZG1vNURYWjJpMG1UITxeVVJ5TytmQDdGbz5XNTB3VD1t
bn1xU2Jhc0hxQS1yVm9JeCF1Kj4pbTZWYgp6PVhYdzNwVk5XV3YtWihSdTtGaC1DJmRyIzVCJl5t
bSN6cFZ6PUViPHd8fSVXKyRWWFVBQ3daR1Q2UnMwLXZFQ3gKekdUVDRSS2t2VjwjKzgtX253YnNq
YkE1Qk4pM1ZDWF9EY2lhZWM7LUpsJnRLKUI1aGUrZnZIK0RxKzAhY0toMUF0CnpgU3BuenNYNkha
Mj5ndFVlPUlHPHNsNHBQKnUrT1l7ciRwZlkzdXdGZkZ2JDBDOX57YVchWDk5SC1uek5sJTR0cgp6
ZGNVV29pO2FIayVrU31EQ0VkenYyfUE8THIxZWpNMEgxYEVwIyRQJCU4dk5tZEtuJitgWndfTEQ7
cG9FdytwTj0Kem10UFY2PT1gb30hfjd0IXZhOEdYVm5fUDc/d0ZwQEh6aHFXNUdEckEmZCV8Tio2
e24lLWNPbi0reER8LXtQT3MkCnp1NnswSjA5KEh4QXYhVDd2JFctYmVrNyEmM3tVJDUkQHlLelB2
RT5uS01BbklzTytAbGpCYk5jKTFuOCRHYmBoTgp6JH0jJGJCYWJxYzs4XkRyTlAmTWVufSZpd00z
cFpiZiRpK3tFYGpNZj83UmUkbUB6YWZCUndyVGRzdXFleXR9bUEKektSd0JSVTtgbjByNnJ8QE9E
QVRmQ0kyOHtQKjxycUtmKXE4Sip5bHQxR2RXYGdEbl5xS248UCshYXQlLSZ3PmxmCnpfcXElbjc/
fUh+SzU5S1FxcFNzODJNeD40TmxBWkhXNyZSTHR6fjxHcSU2T148c2M/IUpWTXFsXj5iVXhmUVde
Rgp6IU97anBhIyg3ezIhRUlwTDI2UzVxOzwjJE5XekckKHF+SjcwckQmVG0tXlV3NiQ5KEJ7PF4m
WGpmOHkhVWtUcUgKelZHISNKaV9+JGp7Y3JIflM4bUgrY2FTelI0YzBrZmgpYyYxNzxpQ1JnI1d6
c2A3ZWQjfEUxMGpkS1IpeTFEXl9rCnooN15DQW5fWFVCMGdrfiM+KyRISCVGODJHO142cWVoMlhj
OVJ1Y0dJJCVydyE4VzFXMVBiTUt7K0VfZ08rfXpRJgp6OUBYcXN1UyZJK09+RXp6fEloeWwxWXBv
JlYxU3FFRHBzaVZmd2tUYFk3TVlrSW9Oc0tuY3tyeGVDaXhAekh4M2sKekJ+RyooPU1IaGx4WkIt
VTlgZlM2QnlXez4mcFlIOSN3QG15OWM4Q2sxPlFgMkR+OEN+QChYRkclSVhRRlJoLUlKCnpaPm9I
P0wyWGs5KVAyPWhLZGF4Pi1TS3M3az58LTw8WCFSK3NZV0J7UCYkRldNK0BpfF5lYkE/WS1pP35O
Nmojbgp6JCt6PnZ7Q21EZz49Rms+c0I5JVl4bCRnTm10K0lnTkJ2enJwe2RUJnB7T1EkOGcpUH5w
Y0ZJIU8tN3MxOSZgQGYKekxKIWM+STErUSo5IzZvViYzNjB+SzFYYTQoP28kZERsVXRNcU9SO04y
Z25hKEZNTiEqNmwtSj9SZSpRbXtyRElACnpoa3dOYk5oVFJkYT4tX0xmVjd8Oz0/aW9xOVpqZHY8
I1okY29iSUVpPXB9bTM5TH5sdXFhbnlZVjdPVWJSK1Ylcwp6LUNpZj9ldEwpZ1IkdE9kKV92PTd5
UGxuN2tHRXItRzBwO0twTDUoPD5ZUjRReD1VVDtqJnY4ZT1pTSZ1VjBWWG0KenomK3hnYn1NXk5j
eSt4N1VRM1U3KHU/KDtfcXV0I0piMThVXnlhX3YkN09gZmxIPXQyYTtMMVVzO2cmSWstRGtFCnpi
ekErS29+OVMrZ1poTzJOZ0d5fSkhY2c0SSU4ZmlaPCljWTl5M2BxPiU7bzlTNkQ3diZPVHhyKmc8
eFFVMSFDdAp6R094ai1jckpnUnVpKUdHSzdOSHFpOWRAeEByaF9GWk5VMTE8U0pVRnNiVDdBbHRN
Tzx7JHg4enJhPnFLKWsyTD4Kek9Wazs/aHd7LTxSRGhaVGRJeFkze3NHV0NQT2coK1RBa0xWQ2Jl
aVJlVVorZjMrTXteOFFudlYoQ19GS2RZMys9CnpSbWBXJlhIMDQ7YkNVVXt4eHk/azhfOSlvcE52
JHVSWHpRLXU1RT1maGpuS1kqYkhgQDg5K2NtZk9BYH1gTGxkNQp6cFQkcXxiTm02WEJ4O0NvNWgr
WXppRS1qJTVpQWBVRXVXViEkeE9MUC1qVCE5PnVNZHktKkBVcVJpY3tmKXx6UVkKenBWOE8hSiZp
MUIjYWV4PiFQWWVFOWMhTUlafHdtTXNBQVcmK3R8d1BZa3k+P0pLczgybyEzQWMzPlNDfCV8cSta
CnpjQztUQTskYD8jezVgJmRnR2hDZk5QM1oxTDd3TjUjaVcydEJlT3w5YEgtdnd0ZDVmKE5mcjdP
WkFSTXk0JjcqUAp6a2ZTeTVQdWg+czZaQVUwTG8xdCg4RSs8PS08YzIxbms8UzlXc19KUWR5bk9f
Yj9nWkhudGppJXokaDh+Tm5XM34Kejs2XipjU1AjVGU8WH42MWV7dThOT0t2UjRQayhvfjh8K3Aw
cDdOVDNjR2ReIUYrSW9ZPFpiZnFkWShETHRqZ0QkCnpvNkk4Zmx2IS12SFNlPTVLOWJNbGBUUjQh
bl91VUBhMVBpdGxGajVFY35KSUxMdHdQPyllXk55WkM3RXN3bD1sVwp6MmR1Qkh2KGBpRlhYe3Ql
UGo7d1ghKXs8bCp+RCZWPWgmbXxOJWw7OGlNYFRaWEslMX4rMjdjZz9GWTh3IzVwfWMKei1pQFJ7
JTlCd0N3RX01elE0Y2YlTysmdy0kOGtxSTE8JTJ8YVZPSCs+fXJsT1hQU04zOHo3JlBfKjlVXmJH
KHM9Cno3Q1hnV2spUyoyNj8mVX4jaFBnNFQ4Nz1sUFA5fChqZHJHJjFBMVpmZnEqSWE+N3NoNVVN
ZEEtYnJBSTZSaDZTZwp6c2orSDtueGZ1Tkd0XkE9dTl+TWxQPmErdXdOa0JDdWApKnJ3YWhsMEt+
NSM3Q3laPy0+SWpeNDI3UWtqIU9KQUYKekAhUGwrUUtVV2ppOUE2NGFWVTh9PmU4a1oofVNvTyl5
NXJnQkpQUF8kTWYtKmNzNG1sQiNvIXRYK0IqPT1nQFVACnozeChIN25OY2ozejBFZkFVSGxAQzcy
UU9abT5fMH1NZEVxVVRjbjl4djBVc0lVeC0yKHVNJC0hV24+eDwxOCoyIwp6bDZ4ZU1jQT9YMFJs
MWloV3w1JHVoP2B0O280NGFKSmRQKnVCJWFLPl5QYXA5UHZyeDdJP3Y/VUZyczdsY3M/MWgKem82
aHQyWSN6WjY9Jk8zSGArPlhLLVJ0KUMjJn4oJk5eaEhZIW5eQUV2K2A/anVZNUxeRW4lbXtQMD5K
VlYzcWQzCnoqZ0k3WmQjem9+JCNnMlhpJEhecCR1cUtvWU5jKkRtRThKbjMpZ1d3eH5FbUszZjBa
RDN2OWtwfEVqQjVET1FmUAp6K2Q2NElWOzRCdm9tMCp3Qyl1NmkmSGBMM3FCQDhKR21sMHkoRiR9
RFR8PHhJK1N0UU14RjRSMnVpQCZYSG1PVk0Kemt3JkJgWCtjXk9PYz56cTBQP1hVOXlGXkg9fFh5
ZGV4O0IhR0tkVFRKPEIxWiRRPCVNU3dOUE02PHxSPUNWd05KCnprfWMjanZXeDVebSZnXit4dHJ0
YHhsNFd7eV9rX183IXZ3QTNHe0Y9eUNve2g+WE9JXm9Qal5YUmlXUEF7N3RAKgp6VSphe3VjNVJq
bSlHayUxN3g9KiUza2BfbGh4aU8hZjtXJjtxJCtKcXZ1UUpQMyhLWGVYXmAyJDlBfERZdWJVbSUK
elhtKn1lMWlhVnElQSVoKkNhI0hiYSpGJjg/OT4oY3FyNTNeJC1EQTUhMD1EMTNSdVBKczx4YEQ+
WndNbXNjTkJHCnpFMzZwMiQ7P3NoUmppNnZwLSFzMnMqdFlkeXlDI2sza30weEVPLUc7TUFPazZ2
O14leU1kJklyQFJLK1NXVXhDUAp6aWYhfn5sI0JiM2lEVzc7Jn09ZX5FRil7bEhnYiRxVzI8LX16
YVh4TiM8R1JIdHFncm4xP2xWaG1hYiNmd159LTsKeik1ZWpHdjdfYEpPWWxtMzJ3Z187eEliOUhQ
IWRqUmtPKHF+enJoUkcwb0lhdDFoJS0mT1pkPEhLMkg9fiM3SHF1CnpFRCtuQTZIWUk4bV47PmUk
TmRrZHVHXyl3PVQzNnh5VVd+OSsqQHU+Wj9wSCUqVV9XIV9CWV99ejN4ND9qYHktUgp6JTNCRWoh
PFhLQ3pKI3lsVFg9KnglTm0xPkVCK1I1RUx3P2ZhKmRiKXdxVDFtRVF7cWZIOXtBdndSKlN5TUpI
Um0KenRSZER8VkNpcUgrWk1LZXUlMntnZmFrSyMrR3k+dzhyWlMrS3N5KU1YcHtZUyhDeC1mYkxX
RUYmLT5pajt+YTNsCnphRV5pWEo+P0FXaEkoJiUjOThqWDAkeEk4OUVQOTUlYHdIWGNzaWJtXktt
U0JoaCZpe0IkUlIqTGxjM3VkKGk9Twp6SitTczZkWGlRIXBEXnAxT35HbW5GXjhNZSVuOWFTJjRw
JHxIaSVgaVJqaVAwV3VMUmw+Xj9nTDkjSXdVXjU9TUcKelZBLXF1WWolTyVWUW9OenlNeHtpMGQx
WWxqcX43cDBYJnRSNU5FQmshRmt8PnhZYjx+eFA2PkUtSlIqSzBSNT9nCnpzc3JFRCQxU2h+UENB
Q3E8TCUoM15kP3ZGRnAkZGc8T2d6e2p5QnR7UjBkdVErcyVTYEV4dGU7MGJsR2xJWnwxJgp6cTYk
X3VSayheJDdSYzh3YnhhKXIkc0RXQnNNQC1ALW03IUhvJShOamxPRXc1XzBEKlViUV8hNiYpRntt
cFJXWnIKenppUyZlNDVJK3I3O20/OStCIyNNaU92PmhobDUtT0tGYzJXN3FgU2M/VlNUKCY+IWRD
czt9eT0yQ0pjOUw1OGFnCnp2PTtST0ZLUUM0QkFTWXxZTzVOaj5zaSQ1aUI4fVleYjs8fHYlcTVo
T3pzZDJOR0g8SF5sTiZTLWxvNk9ucjY3VQp6KkYwb2lIR2VXSXZrKjJKPzd+OzxCeH1jR2A2I2dS
YF4wZl5TYD1BeHRZeXxKPnl+eFRzJHRpJFZ7Q3M7MCsxUloKejBpVTQwWGQrcSlCKUc2ZTJONVM7
NVhzX1koTVIrYj4wJWhqPz5JM1R7Sn1pJm98ckVkaXgwJmJ2MGlLekpIWC1gCno3R0h7IWZaIz1P
Um9vRF8jUkN4fXN7KUJNTGR7VGIpRE5gckZKUXFRMH5ecDg3dlF6ey18PCkyPUx0Yjx1PX1lPwp6
Mj4zcVo9QGp9NnkrQ1Ykdn1gb0RuTjdmSk5kUV5zJlUqdUU0K2hSMjRsKnppYDEmbzdndW44SWRe
cz1SPnd0XjQKemdTO0glTkJJZVVtUzVuUExGPGI3SiNMNmYhVShIaVdKQ1dSTCV9RSVKZ30hd0x1
Z1NIIzBwOFV0VEVfMGwhVXNYCnpvflNQeGg9IXRVXmNvdEVhKUNNQ0wzNHE1JiFZM19CRHcrZ3N7
fE0lMm5YWDNrb3tVWDk3b3tCeEVYR1ZMK21pUwp6bUt8PSMqJExwWT02VU9WLUVDT0dtPG03SFB7
KEBJaiprKUowa140UUl2X1YmJW13VGdpbHU7RmZoWXcwSGoxcikKejtCSyZOaHIhUC0wdTt9Ul5N
Sz1KVjh0N3ZTZEB0UyFqTTVTU2NiP2pTeGJoNE44Mzt+ayYhWT1CNTZ0cVVUMkFXCnotITs0LUZX
M3c1IW58NXV4RUpCSzB8TWx0ZkoxRG5vZlR1blNxV0I+bTI2RzZyYGlrY0IwSmNMYmF2WSVjN29G
Iwp6Y3IlQ3ZnVmNudlN9ZEdKdSFnSiZpdi1eYXYycUsjbHojfFY3am5QLTtWTUVrUjgzU1FYYjF2
LWBsUTtad31TdF4KelRrcUcwXi0qMTxQd0tQIXl1UFJ9Z1VAKEY3d1p5ekFBSVp9RTclR0ZQckhe
Q1piZXVQdHRNOGE2PWZtSTFmT3l2CnoqLUNiaC1ERSNHT3BjTndhKn5fe099JDdpbE4rUiVsI3Uo
eHBnfVlrVzxDdlI2QjxkUUM8MEdlUWslOHwjKStjfAp6Rz5JbUlLaGN4K3B7ZHw4cnFmS1lKdE9I
RGtnQ2FhRCk8SUBiVCp3IT1oS0NCRGc2KjtQSzkob0p4cSYkcFUlP3IKVSlXfEhHa0UwLXZsbj9+
eXtvJl83MG1ldG8we3tSMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>